diff -Nrcpad gcc-12.2.0/.gitignore gcc-13.1.0/.gitignore
*** gcc-12.2.0/.gitignore	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/.gitignore	Wed Apr 26 07:09:39 2023
***************
*** 6,11 ****
--- 6,12 ----
  *~
  .#*
  *#
+ .*.swp
  
  *.flt
  *.gmo
***************
*** 22,28 ****
  
  autom4te.cache
  config.cache
! config.h
  config.intl
  config.log
  config.status
--- 23,30 ----
  
  autom4te.cache
  config.cache
! # GCC does not support in-tree builds, do not conceal a stray config.h:
! # config.h
  config.intl
  config.log
  config.status
diff -Nrcpad gcc-12.2.0/ChangeLog gcc-13.1.0/ChangeLog
*** gcc-12.2.0/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-04-19  Richard Henderson  <rth@gcc.gnu.org>
  
--- 1,592 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-04-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	* configure.ac: For --enable-languages= mentioning explicitly
! 	rust emit an error, if included in all etc., silently disable
! 	rust.
! 	* configure: Regenerated.
! 
! 2023-04-06  Indu Bhagat  <indu.bhagat@oracle.com>
! 
! 	* MAINTAINERS: Add myself.
! 
! 2023-03-22  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* MAINTAINERS: Add myself as OpenMP and libgomp maintainer.
! 
! 2023-03-10  Arsen Arsenović  <arsen@aarsen.me>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2023-02-16  Martin Liska  <mliska@suse.cz>
! 
! 	* MAINTAINERS: I'm stepping down from my positions.
! 
! 2023-01-10  Philip Herron  <herron.philip@googlemail.com>
! 
! 	* MAINTAINERS: Add Philip Herron as Rust front-end maintainer
! 
! 2023-01-06  Clément Chigot  <chigot@adacore.com>
! 
! 	* configure.ac: Skip GMP and MPFR when --disable-gdb is
! 	provided.
! 	* configure: Regenerate.
! 
! 2023-01-04  Gaius Mulley  <gaiusmod2@gmail.com>
! 
! 	* MAINTAINERS: Add Gaius Mulley as Modula-2 front-end maintainer.
! 
! 2022-12-31  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* Makefile.def: Do not build shared libffi.
! 	* Makefile.in: Regenerate.
! 
! 2022-12-21  Andrew Pinski  <apinski@marvell.com>
! 
! 	* Makefile.def: Add configure-gdb dependencies
! 	on all-gmp and all-mpfr.
! 	* configure.ac: Split out MPC checking from MPFR.
! 	Require GMP and MPFR if the gdb directory exist.
! 	* Makefile.in: Regenerate.
! 	* configure: Regenerate.
! 
! 2022-12-14  Gaius Mulley  <gaiusmod2@gmail.com>
! 
! 	* configure.ac (target_libraries): Add target-libgm2.
! 	Add NCN_STRICT_CHECK_TARGET_TOOLS entry for gm2.
! 	Add GCC_TARGET_TOOL entry for gm2.
! 	(compare_exclusions): Add gcc/m2/gm2-compiler/M2Version,
! 	gcc/m2/gm2-compiler-boot/SYSTEM and gcc/m2/gm2version.
! 	* Makefile.def (target_modules): Add libgm2.
! 	(flags_to_pass): Add GM2_FOR_TARGET, GM2FLAGS_FOR_TARGET.
! 	(dependencies): Add all-target-libgm2 and on=all-target-libatomic.
! 	(languages): Add entry for language=m2 with gcc-check-target=check-m2
! 	and lib-check-target=check-target-libgm2.
! 	* Makefile.tpl (BUILD_EXPORTS): Add definition for GM2 and GM2FLAGS.
! 	(HOST_EXPORTS): Add definition for GM2.
! 	(BASE_TARGET_EXPORTS): Add definition for GM2.
! 	(GM2_FOR_BUILD): Defined.
! 	(GM2FLAGS): Defined.
! 	(GM2_FOR_TARGET): Defined.
! 	(GM2FLAGS_FOR_TARGET): Defined.
! 	(EXTRA_HOST_FLAGS): Defined.
! 	(POSTSTAGE1_FLAGS_TO_PASS): Add GM2 and GM2_FOR_BUILD.
! 	(EXTRA_TARGET_FLAGS): Add GM2 and GM2FLAGS.
! 	(EXTRA_GCC_FLAGS): Add GM2_FOR_TARGET.
! 	* configure: Rebuilt.
! 	* Makefile.in: Rebuilt.
! 
! 2022-12-13  Philip Herron  <philip.herron@embecosm.com>
! 
! 	* Makefile.def: Add Rust language.
! 	* Makefile.in: Regenerate via autogen.
! 
! 2022-12-09  Martin Liska  <mliska@suse.cz>
! 
! 	* MAINTAINERS: Fix spacing.
! 
! 2022-12-07  Arthur Cohen  <arthur.cohen@embecosm.com>
! 
! 	* MAINTAINERS: Add Arthur Cohen as Rust front-end maintainer.
! 
! 2022-12-07  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* Makefile.def: Pass host_libs_picflag to host dependent library
! 	configures.
! 	* Makefile.in: Regenerate.
! 	* configure: Regenerate.
! 	* configure.ac (host_libs_picflag): New configure variable set to
! 	'--with-pic' when building 'host_shared'.
! 
! 2022-11-25  Weimin Pan  <weimin.pan@oracle.com>
! 
! 	* Makefile.def: Add libsframe as new module with its dependencies.
! 	* Makefile.in: Regenerated.
! 	* configure.ac: Add libsframe to host_libs.
! 	* configure: Regenerated.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	Revert:
! 	2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* Makefile.def: Pass $(PICFLAG) to AM_CFLAGS for gmp, mpfr, mpc, and
! 	isl.
! 	* Makefile.in: Regenerate.
! 	* Makefile.tpl: Set PICFLAG.
! 	* configure.ac (--enable-host-pie): New check.  Set PICFLAG after this
! 	check.
! 	* configure: Regenerate.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* Makefile.def: Pass $(PICFLAG) to AM_CFLAGS for gmp, mpfr, mpc, and
! 	isl.
! 	* Makefile.in: Regenerate.
! 	* Makefile.tpl: Set PICFLAG.
! 	* configure.ac (--enable-host-pie): New check.  Set PICFLAG after this
! 	check.
! 	* configure: Regenerate.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/Makefile: New file.
! 	* doc/_static/custom.css: New file.
! 	* doc/baseconf.py: New file.
! 	* doc/bsd.rst: New file.
! 	* doc/contrib.rst: New file.
! 	* doc/contribute.rst: New file.
! 	* doc/cppdiropts.rst: New file.
! 	* doc/cppenv.rst: New file.
! 	* doc/cppopts.rst: New file.
! 	* doc/cppwarnopts.rst: New file.
! 	* doc/favicon.ico: New file.
! 	* doc/funding.rst: New file.
! 	* doc/gcc_sphinx.py: New file.
! 	* doc/gnu.rst: New file.
! 	* doc/gnu_free_documentation_license.rst: New file.
! 	* doc/gpl-3.0.rst: New file.
! 	* doc/indices-and-tables.rst: New file.
! 	* doc/lgpl-2.1.rst: New file.
! 	* doc/logo.pdf: New file.
! 	* doc/logo.svg: New file.
! 	* doc/md.rst: New file.
! 	* doc/requirements.txt: New file.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/baseconf.py: Port to GCC sources.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	* configure: Regenerate.
! 	* configure.ac: Support Sphinx based documentation.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/baseconf.py: Simplify BUGURL and VERSION_PACKAGE,
! 	provide a default.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/bsd.rst:
! 	Add trailing newline.
! 	* doc/contrib.rst:
! 	Add trailing newline.
! 	* doc/contribute.rst:
! 	Add trailing newline.
! 	* doc/cppdiropts.rst:
! 	Add trailing newline.
! 	* doc/cppenv.rst:
! 	Add trailing newline.
! 	* doc/cppopts.rst:
! 	Add trailing newline.
! 	* doc/cppwarnopts.rst:
! 	Add trailing newline.
! 	* doc/funding.rst:
! 	Add trailing newline.
! 	* doc/gnu.rst:
! 	Add trailing newline.
! 	* doc/gnu_free_documentation_license.rst:
! 	Add trailing newline.
! 	* doc/gpl-3.0.rst:
! 	Add trailing newline.
! 	* doc/indices-and-tables.rst:
! 	Add trailing newline.
! 	* doc/lgpl-2.1.rst:
! 	Add trailing newline.
! 	* doc/md.rst:
! 	Add trailing newline.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* configure.ac: Use new install URL.
! 	* configure: Regenerate.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-10  Arsen Arsenović  <arsen@aarsen.me>
! 
! 	* doc/baseconf.py: Inject dirname(__file__)/'modules' to path
! 	instead of just ``.''.
! 	* doc/gcc_sphinx.py: Moved to...
! 	* doc/modules/gcc_sphinx.py: ...here.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-10  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/baseconf.py: Modernize by using pathlib.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/Makefile: Disable -j auto.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/Makefile: Update comment.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/indices-and-tables.rst: Rename Indexes to Indices.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-13  Martin Liska  <mliska@suse.cz>
! 
! 	PR web/107643
! 	* doc/baseconf.py: Set include_todo tag if INCLUDE_TODO env
! 	is set.
! 	* doc/indices-and-tables.rst: Use include_todo tag.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-13  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 
! 	* doc/contrib.rst: Update Jeff Law's email address.
! 
! 2022-11-13  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 
! 	* doc/contrib.rst: Update Jeff Law's email address.
! 
! 2022-11-13  Martin Liska  <mliska@suse.cz>
! 
! 	PR web/107643
! 	* doc/baseconf.py: Set include_todo tag if INCLUDE_TODO env
! 	is set.
! 	* doc/indices-and-tables.rst: Use include_todo tag.
! 
! 2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/indices-and-tables.rst: Rename Indexes to Indices.
! 
! 2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/Makefile: Update comment.
! 
! 2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/Makefile: Disable -j auto.
! 
! 2022-11-10  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/baseconf.py: Modernize by using pathlib.
! 
! 2022-11-10  Arsen Arsenović  <arsen@aarsen.me>
! 
! 	* doc/baseconf.py: Inject dirname(__file__)/'modules' to path
! 	instead of just ``.''.
! 	* doc/gcc_sphinx.py: Moved to...
! 	* doc/modules/gcc_sphinx.py: ...here.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* configure.ac: Use new install URL.
! 	* configure: Regenerate.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/bsd.rst:
! 	Add trailing newline.
! 	* doc/contrib.rst:
! 	Add trailing newline.
! 	* doc/contribute.rst:
! 	Add trailing newline.
! 	* doc/cppdiropts.rst:
! 	Add trailing newline.
! 	* doc/cppenv.rst:
! 	Add trailing newline.
! 	* doc/cppopts.rst:
! 	Add trailing newline.
! 	* doc/cppwarnopts.rst:
! 	Add trailing newline.
! 	* doc/funding.rst:
! 	Add trailing newline.
! 	* doc/gnu.rst:
! 	Add trailing newline.
! 	* doc/gnu_free_documentation_license.rst:
! 	Add trailing newline.
! 	* doc/gpl-3.0.rst:
! 	Add trailing newline.
! 	* doc/indices-and-tables.rst:
! 	Add trailing newline.
! 	* doc/lgpl-2.1.rst:
! 	Add trailing newline.
! 	* doc/md.rst:
! 	Add trailing newline.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/baseconf.py: Simplify BUGURL and VERSION_PACKAGE,
! 	provide a default.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* configure: Regenerate.
! 	* configure.ac: Support Sphinx based documentation.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/baseconf.py: Port to GCC sources.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/Makefile: New file.
! 	* doc/_static/custom.css: New file.
! 	* doc/baseconf.py: New file.
! 	* doc/bsd.rst: New file.
! 	* doc/contrib.rst: New file.
! 	* doc/contribute.rst: New file.
! 	* doc/cppdiropts.rst: New file.
! 	* doc/cppenv.rst: New file.
! 	* doc/cppopts.rst: New file.
! 	* doc/cppwarnopts.rst: New file.
! 	* doc/favicon.ico: New file.
! 	* doc/funding.rst: New file.
! 	* doc/gcc_sphinx.py: New file.
! 	* doc/gnu.rst: New file.
! 	* doc/gnu_free_documentation_license.rst: New file.
! 	* doc/gpl-3.0.rst: New file.
! 	* doc/indices-and-tables.rst: New file.
! 	* doc/lgpl-2.1.rst: New file.
! 	* doc/logo.pdf: New file.
! 	* doc/logo.svg: New file.
! 	* doc/md.rst: New file.
! 	* doc/requirements.txt: New file.
! 
! 2022-11-04  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* Makefile.def: Remove module 'liboffloadmic'.
! 	* Makefile.in: Regenerate.
! 	* configure.ac: Remove 'liboffloadmic' handling.
! 	* configure: Regenerate.
! 
! 2022-10-31  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
! 
! 	* MAINTAINERS: Update email address.
! 
! 2022-10-21  Дилян Палаузов  <dilyan.palauzov@aegee.org>
! 
! 	* configure.ac: Don't configure readline if --with-system-readline is
! 	used.
! 	* configure: Re-generate.
! 
! 2022-10-12  Cui,Lili  <lili.cui@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-10-11  Olivier Hainque  <hainque@adacore.com>
! 
! 	* libtool.m4 (*vxworks*): When enable_shared, set dynamic_linker
! 	and friends for rtp !large. Assume the linker has the required
! 	abilities and set lt_cv_deplibs_check_method.
! 
! 2022-09-30  Olivier Hainque  <hainque@adacore.com>
! 
! 	* configure.ac (*vxworks*): If enable_shared is not
! 	set, set to "no" and add --disable-shared to target and
! 	host_configargs.
! 	* configure: Regenerate.
! 
! 2022-09-26  Jeff Law  <jlaw@ventanamicro.com>
! 
! 	* MAINTAINERS: Update my email address and DCO entry.
! 
! 2022-09-23  Paul-Antoine Arras  <pa@codesourcery.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-09-15  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-09-07  Jeff Law  <jeffreyalaw@gmail.com>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2022-09-07  Tom de Vries  <tdevries@suse.de>
! 
! 	* configure.ac: Set extra_host_libiberty_configure_flags and
! 	extra_host_zlib_configure_flags in separate case statements.
! 	* configure: Regenerate.
! 
! 2022-09-06  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
! 
! 	* MAINTAINERS: Update c-sky port maintainers' emails.
! 
! 2022-08-31  Martin Liska  <mliska@suse.cz>
! 
! 	* configure: Regenerate.
! 	* configure.ac: Delete hpux9 and hpux10.
! 
! 2022-08-18  Sergei Trofimovich  <siarheit@google.com>
! 
! 	* Makefile.def: Drop libelf module and gcc-configure dependency
! 	on it.
! 	* Makefile.in: Regenerate with 'autogen Makefile.def'.
! 	* Makefile.tpl (HOST_EXPORTS): Drop unused LIBELFLIBS and
! 	LIBELFINC.
! 	* configure: Regenrate.
! 	* configure.ac (host_libs): Drop unused libelf.
! 
! 2022-08-18  Sergei Trofimovich  <siarheit@google.com>
! 
! 	* Makefile.in: Regenerate.
! 
! 2022-08-04  Eugene Rozenfeld  <erozen@microsoft.com>
! 
! 	* MAINTAINERS: Add myself as AutoFDO maintainer.
! 
! 2022-08-01  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Arnaud Charlet  <charlet@adacore.com>
! 
! 	* configure: Regenerate.
! 
! 2022-07-31  Roger Sayle  <roger@nextmovesoftware.com>
! 
! 	PR bootstrap/106472
! 	* Makefile.def (dependencies): Make configure-target-libgo depend
! 	upon all-target-libbacktrace.
! 
! 2022-07-27  David Faust  <david.faust@oracle.com>
! 
! 	* MAINTAINERS: Add myself as reviewer for CTF and BTF.
! 
! 2022-07-27  Richard Biener  <rguenther@suse.de>
! 
! 	* MAINTAINERS (Roger Sayle): Update e-mail address.
! 
! 2022-07-21  Sam Feifer  <sfeifer@redhat.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-07-21  Marc Poulhiès  <poulhies@adacore.com>
! 
! 	* MAINTAINERS: Add myself as Ada front end co-maintainer.
! 
! 2022-07-19  Alexander Monakov  <amonakov@ispras.ru>
! 
! 	* .gitignore: Do not ignore config.h.
! 
! 2022-07-15  Andrew Carlotti  <andrew.carlotti@arm.com>
! 
! 	* MAINTAINERS: Add myself to Write After Approval.
! 
! 2022-07-04  Martin Liska  <mliska@suse.cz>
! 
! 	* MAINTAINERS: fix sorting of names
! 
! 2022-07-03  Immad Mir  <mirimmad17@gmail.com>
! 
! 	* MAINTAINERS: add myself.
! 
! 2022-07-03  Immad Mir  <mirimmad17@gmail.com>
! 
! 	* MAINTAINERS: Add myself to write after approval and DCO.
! 
! 2022-07-02  Tim Lange  <mail@tim-lange.me>
! 
! 	* MAINTAINERS: Add myself.
! 
! 2022-07-01  Haochen Jiang  <haochen.jiang@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-06-30  Cui,Lili  <lili.cui@intel.com>
! 
! 	Revert:
! 	2022-06-30  Cui,Lili  <lili.cui@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-06-30  Cui,Lili  <lili.cui@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-06-28  Alexandre Oliva  <oliva@adacore.com>
! 
! 	* Makefile.tpl (HOST_EXPORTS): Add TFLAGS to GCC_FOR_TARGET.
! 	(EXTRA_GCC_FLAGS): Likewise.
! 	* Makefile.in: Rebuilt.
! 
! 2022-06-28  konglin1  <lingling.kong@intel.com>
! 
! 	* MAINTAINERS (Write After Approval): Add myself.
! 
! 2022-06-27  Tom de Vries  <tdevries@suse.de>
! 
! 	* configure.ac: Build libiberty pic variant for gdbserver.
! 	* configure: Regenerate.
! 
! 2022-06-26  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* configure: Regenerate.
! 	* configure.ac: Correct use of $host.
! 
! 2022-06-25  Jeff Law  <jeffreyalaw@gmail.com>
! 
! 	* MAINTAINERS: Remove tilegx and tilepro entries.
! 	* configure.ac: Remove tilegx and tilepro stanzas.
! 	* configure: Rebuilt.
! 
! 2022-05-28  Bruce Korb  <bkorb@gnu.org>
! 
! 	* .gitignore: Ignore vim swap files
! 
! 2022-05-13  Surya Kumari Jangala  <jskumari@linux.ibm.com>
! 
! 	* MAINTAINERS: Add myself to write after approval.
! 
! 2022-05-11  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	* MAINTAINERS: Remove myself from DCO section.
! 
! 2022-05-09  Xi Ruoyao  <xry111@xry111.site>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2022-05-09  Clément Chigot  <chigot@adacore.com>
! 
! 	* MAINTAINERS: Update my email address.
! 
! 2022-05-05  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	* MAINTAINERS: Add myself as PowerPC port co-maintainer and to DCO
! 	section.
  
  2022-04-19  Richard Henderson  <rth@gcc.gnu.org>
  
*************** Tue May 25 11:20:46 1999  H.J. Lu  (hjl@
*** 14890,14896 ****
  
  Thu May 20 10:00:42 1999   Stephen L Moshier  <moshier@world.std.com>
  
! 	 * Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
  
  1999-04-30  Tom Tromey  <tromey@cygnus.com>
  
--- 15472,15478 ----
  
  Thu May 20 10:00:42 1999   Stephen L Moshier  <moshier@world.std.com>
  
! 	* Makefile.in (GCC_FOR_TARGET): Add -I$(build_tooldir)/include.
  
  1999-04-30  Tom Tromey  <tromey@cygnus.com>
  
*************** Wed May 31 22:27:42 1995  Jim Wilson  <w
*** 18355,18361 ****
  Thu May 25 22:40:59 1995  J.T. Conklin  <jtc@rtl.cygnus.com>
  
  	* configure.in (noconfigdirs): Enable all packages for
! 	  i386-unknown-netbsd.
  
  Sat May 20 13:22:31 1995  Angela Marie Thomas  <angela@cirdan.cygnus.com>
  
--- 18937,18943 ----
  Thu May 25 22:40:59 1995  J.T. Conklin  <jtc@rtl.cygnus.com>
  
  	* configure.in (noconfigdirs): Enable all packages for
! 	i386-unknown-netbsd.
  
  Sat May 20 13:22:31 1995  Angela Marie Thomas  <angela@cirdan.cygnus.com>
  
*************** Mon Nov 14 08:49:15 1994  Stu Grossman
*** 18629,18635 ****
  Fri Nov 11 15:31:26 1994  Bill Cox  (bill@rtl.cygnus.com)
  
  	* build-all.mk: Add mips-ncd-elf target to sun4 targets
! 	  for special NCD build.
  
  Mon Nov  7 20:58:17 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>
  
--- 19211,19217 ----
  Fri Nov 11 15:31:26 1994  Bill Cox  (bill@rtl.cygnus.com)
  
  	* build-all.mk: Add mips-ncd-elf target to sun4 targets
! 	for special NCD build.
  
  Mon Nov  7 20:58:17 1994  Ken Raeburn  <raeburn@cujo.cygnus.com>
  
*************** Mon Nov  7 20:58:17 1994  Ken Raeburn  <
*** 18641,18648 ****
  Mon Nov  7 17:25:18 1994  Bill Cox  (bill@cirdan.cygnus.com)
  
  	* build-all.mk: Add Ericsson targets to sun4 and solaris
! 	  hosts.  Add  BNR's sun4 target to solaris host, so their
! 	  build-from-source will be tested in-house first.
  
  Sat Nov  5 18:43:30 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
  
--- 19223,19230 ----
  Mon Nov  7 17:25:18 1994  Bill Cox  (bill@cirdan.cygnus.com)
  
  	* build-all.mk: Add Ericsson targets to sun4 and solaris
! 	hosts.  Add  BNR's sun4 target to solaris host, so their
! 	build-from-source will be tested in-house first.
  
  Sat Nov  5 18:43:30 1994  Jason Merrill  (jason@phydeaux.cygnus.com)
  
*************** Mon Sep  5 05:01:30 1994  Ken Raeburn  (
*** 18771,18777 ****
  Thu Sep  1 09:35:00 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)
  
  	* configure.in (*-*-netware): don't configure libg++, libio,
! 	  librx, or newlib.
  
  Wed Aug 31 13:52:08 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)
  
--- 19353,19359 ----
  Thu Sep  1 09:35:00 1994  J.T. Conklin  (jtc@phishhead.cygnus.com)
  
  	* configure.in (*-*-netware): don't configure libg++, libio,
! 	librx, or newlib.
  
  Wed Aug 31 13:52:08 1994  Ian Lance Taylor  (ian@sanguine.cygnus.com)
  
*************** Mon Jun  6 21:35:02 1994  D. V. Henkel-W
*** 19013,19019 ****
  Mon Jun  6 16:06:34 1994  Karen Christiansen (karen@cirdan.cygnus.com)
  
  	* brought devo/test-build.mk update-to-date with progressive/
! 	  test-build.mk. Add lynx targets and hppa flag info.
  
  Sat Jun  4 17:23:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)
  
--- 19595,19601 ----
  Mon Jun  6 16:06:34 1994  Karen Christiansen (karen@cirdan.cygnus.com)
  
  	* brought devo/test-build.mk update-to-date with progressive/
! 	test-build.mk. Add lynx targets and hppa flag info.
  
  Sat Jun  4 17:23:54 1994  Per Bothner  (bothner@kalessin.cygnus.com)
  
*************** Thu Jun  2 18:56:46 1994  Ian Lance Tayl
*** 19032,19038 ****
  Thu Jun  2 10:57:06 1994  Karen Christiansen (karen@cirdan.cygnus.com)
  
  	* brought build-all.mk update-to-date with progressive build-all.mk,
! 	  added new targets and hppa info.
  
  Thu Jun  2 00:12:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
  
--- 19614,19620 ----
  Thu Jun  2 10:57:06 1994  Karen Christiansen (karen@cirdan.cygnus.com)
  
  	* brought build-all.mk update-to-date with progressive build-all.mk,
! 	added new targets and hppa info.
  
  Thu Jun  2 00:12:44 1994  Ian Lance Taylor  (ian@tweedledumb.cygnus.com)
  
*************** Wed Jun  1 10:49:41 1994  Bill Cox  (bil
*** 19048,19054 ****
  
  	* Makefile.in: Rename HOST_ONLY to NATIVE.
  	* configure: Delete SunOs patch suffix from host_canonical
! 	  and build_canonical variables that are prepended to Makefiles.
  	* configure.in: Add comments for easier maintenance.
  
  Tue May 31 19:39:47 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)
--- 19630,19636 ----
  
  	* Makefile.in: Rename HOST_ONLY to NATIVE.
  	* configure: Delete SunOs patch suffix from host_canonical
! 	and build_canonical variables that are prepended to Makefiles.
  	* configure.in: Add comments for easier maintenance.
  
  Tue May 31 19:39:47 1994  Jim Kingdon  (kingdon@lioth.cygnus.com)
*************** Thu May 26 08:53:19 1994  Bill Cox  (bil
*** 19072,19083 ****
  
  	* config.sub: Move deletion of patch suffix from here...
  	* configure.in: To here, at Ian's suggestion.  The top-
! 	  level scripts might need to know of a patch level.
  
  Wed May 25 09:15:54 1994  Bill Cox  (bill@rtl.cygnus.com)
  
  	* config.sub: Strip off patch suffix so rtl is recognized
! 	  as a sunos4.1.3 machine, even though it's been patched.
  
  Fri May 20 08:25:49 1994  Steve Chamberlain  (sac@deneb.cygnus.com)
  
--- 19654,19665 ----
  
  	* config.sub: Move deletion of patch suffix from here...
  	* configure.in: To here, at Ian's suggestion.  The top-
! 	level scripts might need to know of a patch level.
  
  Wed May 25 09:15:54 1994  Bill Cox  (bill@rtl.cygnus.com)
  
  	* config.sub: Strip off patch suffix so rtl is recognized
! 	as a sunos4.1.3 machine, even though it's been patched.
  
  Fri May 20 08:25:49 1994  Steve Chamberlain  (sac@deneb.cygnus.com)
  
*************** Thu Apr 14 23:33:17 1994  Ian Lance Tayl
*** 19191,19197 ****
  Wed Apr 13 15:14:52 1994  Bill Cox  (bill@cygnus.com)
  
  	* configure: Make file links cleanly even if Lynx fails on
! 	  an NFS symlink (at least fail cleanly).
  
  Mon Apr 11 10:58:56 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
  
--- 19773,19779 ----
  Wed Apr 13 15:14:52 1994  Bill Cox  (bill@cygnus.com)
  
  	* configure: Make file links cleanly even if Lynx fails on
! 	an NFS symlink (at least fail cleanly).
  
  Mon Apr 11 10:58:56 1994  Jim Wilson  (wilson@sphagnum.cygnus.com)
  
*************** Wed Dec  1 17:00:33 1993  Jason Merrill
*** 19445,19456 ****
  Tue Nov 30 13:45:15 1993  david d `zoo' zuhn  (zoo@andros.cygnus.com)
  
  	* configure.in (notsupp): ensure that a space is always at the end
! 	  of the configdirs list, since the grep checks for an explicit space
  
  Tue Nov 16 15:04:27 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
  
  	* configure.in (target i386-sysv4.2): don't build ld, since static
! 	  versions of many libraries are not available.
  
  Tue Nov 16 14:28:12 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
  
--- 20027,20038 ----
  Tue Nov 30 13:45:15 1993  david d `zoo' zuhn  (zoo@andros.cygnus.com)
  
  	* configure.in (notsupp): ensure that a space is always at the end
! 	of the configdirs list, since the grep checks for an explicit space
  
  Tue Nov 16 15:04:27 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
  
  	* configure.in (target i386-sysv4.2): don't build ld, since static
! 	versions of many libraries are not available.
  
  Tue Nov 16 14:28:12 1993  Jim Kingdon  (kingdon@lioth.cygnus.com)
  
*************** Wed Nov  3 22:09:46 1993  Ken Raeburn  (
*** 19518,19524 ****
  Wed Nov  3 21:31:52 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
  
  	* configure.in (hppa target): check the source directory for the
! 	  pagas sub-directory
  
  Wed Nov  3 11:12:22 1993  Doug Evans  (dje@canuck.cygnus.com)
  
--- 20100,20106 ----
  Wed Nov  3 21:31:52 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
  
  	* configure.in (hppa target): check the source directory for the
! 	pagas sub-directory
  
  Wed Nov  3 11:12:22 1993  Doug Evans  (dje@canuck.cygnus.com)
  
*************** Wed Oct 20 09:56:12 1993  Jim Kingdon  (
*** 19579,19585 ****
  Tue Oct 19 16:02:22 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
  
  	* configure.in: don't build ld on solaris2 (not a viable option
! 	  due to bugs in getpwnam & getpwuid)
  
  Tue Oct 19 15:13:56 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)
  
--- 20161,20167 ----
  Tue Oct 19 16:02:22 1993  david d `zoo' zuhn  (zoo@rtl.cygnus.com)
  
  	* configure.in: don't build ld on solaris2 (not a viable option
! 	due to bugs in getpwnam & getpwuid)
  
  Tue Oct 19 15:13:56 1993  Ken Raeburn  (raeburn@rtl.cygnus.com)
  
*************** Mon Jul 19 21:54:46 1993  Fred Fish  (fn
*** 19790,19796 ****
  Wed Jul 14 12:03:11 1993  K. Richard Pixley  (rich@sendai.cygnus.com)
  
  	* Makefile.in (Makefile): depend on configure.in.  Also drop the
! 	  $(srcdir)/ from the dependency on Makefile.in.
  
  Tue Jul 13 20:10:58 1993  Doug Evans  (dje@canuck.cygnus.com)
  
--- 20372,20378 ----
  Wed Jul 14 12:03:11 1993  K. Richard Pixley  (rich@sendai.cygnus.com)
  
  	* Makefile.in (Makefile): depend on configure.in.  Also drop the
! 	$(srcdir)/ from the dependency on Makefile.in.
  
  Tue Jul 13 20:10:58 1993  Doug Evans  (dje@canuck.cygnus.com)
  
*************** Wed Jul  7 17:58:14 1993  david d `zoo'
*** 19813,19819 ****
  	* Makefile.in: remove all.cross and install.cross targets
  
  	* configure: remove CROSS=-DCROSS_COMPILE and ALL=all.cross
! 	  definitions
  
  Tue Jul  6 10:39:44 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)
  
--- 20395,20401 ----
  	* Makefile.in: remove all.cross and install.cross targets
  
  	* configure: remove CROSS=-DCROSS_COMPILE and ALL=all.cross
! 	definitions
  
  Tue Jul  6 10:39:44 1993  Steve Chamberlain  (sac@phydeaux.cygnus.com)
  
*************** Mon May 10 17:22:26 1993  david d `zoo'
*** 20045,20051 ****
  Mon May 10 14:55:51 1993  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: Change help message to prefer --options rather than
! 	  -options.
  
  Mon May 10 05:58:35 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)
  
--- 20627,20633 ----
  Mon May 10 14:55:51 1993  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: Change help message to prefer --options rather than
! 	-options.
  
  Mon May 10 05:58:35 1993  Ken Raeburn  (raeburn@kr-pc.cygnus.com)
  
*************** Wed Mar 10 12:08:27 1993  K. Richard Pix
*** 20268,20274 ****
  	* config.guess: add GPL.
  
  	* Makefile.in, config.guess, config.sub, configure: bump
! 	  copyrights to 93.
  
  Wed Mar 10 07:12:48 1993  Ian Lance Taylor  (ian@cygnus.com)
  
--- 20850,20856 ----
  	* config.guess: add GPL.
  
  	* Makefile.in, config.guess, config.sub, configure: bump
! 	copyrights to 93.
  
  Wed Mar 10 07:12:48 1993  Ian Lance Taylor  (ian@cygnus.com)
  
*************** Tue Feb  2 11:45:53 1993  Ian Lance Tayl
*** 20459,20465 ****
  Mon Feb  1 12:35:41 1993  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: check return code from mkdir, print error message and
! 	  exit on failure.
  
  Sat Jan 30 16:40:28 1993  John Gilmore  (gnu@cygnus.com)
  
--- 21041,21047 ----
  Mon Feb  1 12:35:41 1993  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: check return code from mkdir, print error message and
! 	exit on failure.
  
  Sat Jan 30 16:40:28 1993  John Gilmore  (gnu@cygnus.com)
  
*************** Wed Jan 13 17:06:45 1993  Jim Wilson  (w
*** 20517,20523 ****
  Wed Jan  6 20:29:16 1993  Mike Werner  (mtw@rtl.cygnus.com)
  
  	* Makefile.in: Removed explicit setting of SUBDIRS. SUBDIRS is now
! 	  set exclusively by configure, using configure.in .
  
  Wed Jan  6 13:44:11 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
  
--- 21099,21105 ----
  Wed Jan  6 20:29:16 1993  Mike Werner  (mtw@rtl.cygnus.com)
  
  	* Makefile.in: Removed explicit setting of SUBDIRS. SUBDIRS is now
! 	set exclusively by configure, using configure.in .
  
  Wed Jan  6 13:44:11 1993  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
  
*************** Tue Jul 21 01:01:50 1992  david d `zoo'
*** 20896,20903 ****
  Mon Jul 20 11:02:09 1992  D. V. Henkel-Wallace  (gumby@cygnus.com)
  
  	* Makefile.in: eradicate bison spoor (ditto libgcc).
! 	 configure.in: recognise m68{k,000}-ericsson-OSE.
! 	 es1800 is alias for m68k-ericsson-OSE
  
  Sun Jul 19 17:49:02 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
  
--- 21478,21485 ----
  Mon Jul 20 11:02:09 1992  D. V. Henkel-Wallace  (gumby@cygnus.com)
  
  	* Makefile.in: eradicate bison spoor (ditto libgcc).
! 	configure.in: recognise m68{k,000}-ericsson-OSE.
! 	es1800 is alias for m68k-ericsson-OSE
  
  Sun Jul 19 17:49:02 1992  david d `zoo' zuhn  (zoo at cirdan.cygnus.com)
  
*************** Sun Jul 19 17:49:02 1992  david d `zoo'
*** 20907,20916 ****
  Fri Jul 17 22:52:49 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* test-build.mk: recurse explicitly with -f test-build.mk when
! 	  appropriate.  predicate stage3 and comparison on the existence
! 	  of gcc.  That is, if gcc isn't around, we aren't three-staging.
! 	  On very clean, also remove ...stamp-co.  Build in-place before
! 	  doing other builds.
  
  Thu Jul 16 18:33:09 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
  
--- 21489,21498 ----
  Fri Jul 17 22:52:49 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* test-build.mk: recurse explicitly with -f test-build.mk when
! 	appropriate.  predicate stage3 and comparison on the existence
! 	of gcc.  That is, if gcc isn't around, we aren't three-staging.
! 	On very clean, also remove ...stamp-co.  Build in-place before
! 	doing other builds.
  
  Thu Jul 16 18:33:09 1992  Steve Chamberlain  (sac@thepub.cygnus.com)
  
*************** Sun May 10 21:45:59 1992  Per Bothner  (
*** 21012,21038 ****
  Fri May  8 08:31:41 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* configure: do not bury `pwd` into config.status, thus do fewer
! 	  pwd's.
  
  	* configure: print the "Building in" message only when building in
! 	  other than "." AND verbose.
  
  	* configure: remove -s, rework -v to better accommodate guested
! 	  configures.
  
  	* standards.texi: updated to 3 may, fixed librid <-> libdir typo.
  
  Fri May  1 18:00:50 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* Makefile.in: macroize flags passed on recursion.  remove
! 	  fileutils.
  
  Thu Apr 30 08:56:20 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* configure: get makesrcdir right for subdirs deeper than 1.
  
  	* Makefile.in: pass INSTALL, INSTALL_DATA, INSTALL_PROGRAM on
! 	  install.
  
  Fri Apr 24 15:51:51 1992  K. Richard Pixley  (rich@cygnus.com)
  
--- 21594,21620 ----
  Fri May  8 08:31:41 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* configure: do not bury `pwd` into config.status, thus do fewer
! 	pwd's.
  
  	* configure: print the "Building in" message only when building in
! 	other than "." AND verbose.
  
  	* configure: remove -s, rework -v to better accommodate guested
! 	configures.
  
  	* standards.texi: updated to 3 may, fixed librid <-> libdir typo.
  
  Fri May  1 18:00:50 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* Makefile.in: macroize flags passed on recursion.  remove
! 	fileutils.
  
  Thu Apr 30 08:56:20 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* configure: get makesrcdir right for subdirs deeper than 1.
  
  	* Makefile.in: pass INSTALL, INSTALL_DATA, INSTALL_PROGRAM on
! 	install.
  
  Fri Apr 24 15:51:51 1992  K. Richard Pixley  (rich@cygnus.com)
  
*************** Fri Apr 24 15:22:04 1992  K. Richard Pix
*** 21049,21055 ****
  Wed Apr 22 18:06:55 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: test for and move config.status pieces from
! 	  ${subdir}/.
  
  Wed Apr 22 14:38:34 1992  Fred Fish  (fnf@cygnus.com)
  
--- 21631,21637 ----
  Wed Apr 22 18:06:55 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: test for and move config.status pieces from
! 	${subdir}/.
  
  Wed Apr 22 14:38:34 1992  Fred Fish  (fnf@cygnus.com)
  
*************** Tue Apr 21 12:31:33 1992  K. Richard Pix
*** 21061,21082 ****
  	* configure: correct final line of config.status.
  
  	* configure: patch from eggert.  Avoids a protection problem if
! 	  the original Makefile.in is read only.
  
  	* configure: use move-if-change from gcc to create config.status.
! 	  Some makefiles depend on config.status to tell if a directory
! 	  has been reconfigured for a different host.  This change
! 	  prevents those directories from remaking everything in the case
! 	  where the reconfig was only intended to rebuild a Makefile.
  
  	* configure: test for config.sub with "config.sub sun4" rather
! 	  than "config.sub ${host_alias}".  Otherwise we can't tell a bad
! 	  host alias from a missing config.sub.
  
  Mon Apr 20 18:16:36 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* Makefile.in: explicitly pass CFLAGS on recursion. no longer pass
! 	  MINUS_G (this can be done with CFLAGS).  Default CFLAGS to -g.
  
  Fri Apr 17 18:27:51 1992  Per Bothner  (bothner@cygnus.com)
  
--- 21643,21664 ----
  	* configure: correct final line of config.status.
  
  	* configure: patch from eggert.  Avoids a protection problem if
! 	the original Makefile.in is read only.
  
  	* configure: use move-if-change from gcc to create config.status.
! 	Some makefiles depend on config.status to tell if a directory
! 	has been reconfigured for a different host.  This change
! 	prevents those directories from remaking everything in the case
! 	where the reconfig was only intended to rebuild a Makefile.
  
  	* configure: test for config.sub with "config.sub sun4" rather
! 	than "config.sub ${host_alias}".  Otherwise we can't tell a bad
! 	host alias from a missing config.sub.
  
  Mon Apr 20 18:16:36 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* Makefile.in: explicitly pass CFLAGS on recursion. no longer pass
! 	MINUS_G (this can be done with CFLAGS).  Default CFLAGS to -g.
  
  Fri Apr 17 18:27:51 1992  Per Bothner  (bothner@cygnus.com)
  
*************** Wed Apr 15 17:27:34 1992  K. Richard Pix
*** 21091,21097 ****
  	* Makefile.in: no longer pass against on recursion.
  
  	* Makefile.in: added .NOEXPORT: so that stray makefile_frag
! 	  definitions are not inherited.
  
  	* configure: correct makesrcdir when subdir is .
  
--- 21673,21679 ----
  	* Makefile.in: no longer pass against on recursion.
  
  	* Makefile.in: added .NOEXPORT: so that stray makefile_frag
! 	definitions are not inherited.
  
  	* configure: correct makesrcdir when subdir is .
  
*************** Tue Mar 31 16:32:57 1992  K. Richard Pix
*** 21143,21149 ****
  Mon Mar 30 22:20:23 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* Makefile.in: add send_pr.  remove "force" from .stmp-gprof rule.
! 	  Supress echoing of all the "if [ -d ... $(MAKE)" lines.
  
  Wed Mar 25 15:20:04 1992  Stu Grossman  (grossman@cygnus.com)
  
--- 21725,21731 ----
  Mon Mar 30 22:20:23 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* Makefile.in: add send_pr.  remove "force" from .stmp-gprof rule.
! 	Supress echoing of all the "if [ -d ... $(MAKE)" lines.
  
  Wed Mar 25 15:20:04 1992  Stu Grossman  (grossman@cygnus.com)
  
*************** Fri Mar 13 18:44:18 1992  K. Richard Pix
*** 21182,21188 ****
  Thu Mar 12 04:56:24 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* configure: adjusted error message on objdir/srcdir configure
! 	  collision, per john's suggestion.
  
  	* Makefile.in: add libiberty stmp to all and all.cross.
  
--- 21764,21770 ----
  Thu Mar 12 04:56:24 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* configure: adjusted error message on objdir/srcdir configure
! 	collision, per john's suggestion.
  
  	* Makefile.in: add libiberty stmp to all and all.cross.
  
*************** Tue Mar 10 21:49:18 1992  K. Richard Pix
*** 21195,21204 ****
  	* Makefile.in: drop flex.  make stamp files work.
  
  	* configure: added test for conflicting configuration in srcdir,
! 	  remove trailing slashes from srcdir.  Otherwise emacs gdb mode
! 	  gets cranky.  use relative paths for configure and srcdir
! 	  whenever possible.  Send some error messages to stderr that were
! 	  going to stdout.
  
  Tue Mar 10 18:01:55 1992  Per Bothner  (bothner@cygnus.com)
  
--- 21777,21786 ----
  	* Makefile.in: drop flex.  make stamp files work.
  
  	* configure: added test for conflicting configuration in srcdir,
! 	remove trailing slashes from srcdir.  Otherwise emacs gdb mode
! 	gets cranky.  use relative paths for configure and srcdir
! 	whenever possible.  Send some error messages to stderr that were
! 	going to stdout.
  
  Tue Mar 10 18:01:55 1992  Per Bothner  (bothner@cygnus.com)
  
*************** Tue Mar 10 18:01:55 1992  Per Bothner  (
*** 21208,21214 ****
  Thu Mar  5 21:45:07 1992  K. Richard Pixley  (rich@sendai)
  
  	* Makefile.in: added stmp-files so that directories aren't polled
! 	  when they are already built.
  
  	* configure.texi: fixed a node pointer problem.
  
--- 21790,21796 ----
  Thu Mar  5 21:45:07 1992  K. Richard Pixley  (rich@sendai)
  
  	* Makefile.in: added stmp-files so that directories aren't polled
! 	when they are already built.
  
  	* configure.texi: fixed a node pointer problem.
  
*************** Thu Mar  5 12:05:58 1992  Stu Grossman
*** 21222,21237 ****
  Wed Mar  4 02:57:46 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: -recurring becomes -silent.  corrected help message
! 	  for -site= option.
  
  	* Makefile.in: mkdir $(exec_prefix) and $(tooldir).
  
  Tue Mar  3 14:51:21 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: when building Makefile for crosses, replace
! 	  tooldir and program_prefix.  default srcdir from location of
! 	  config.sub.  remove "for host in hosts" and "for target in
! 	  targets" loops.
  
  Wed Feb 26 19:48:25 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
--- 21804,21819 ----
  Wed Mar  4 02:57:46 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: -recurring becomes -silent.  corrected help message
! 	for -site= option.
  
  	* Makefile.in: mkdir $(exec_prefix) and $(tooldir).
  
  Tue Mar  3 14:51:21 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
  	* configure: when building Makefile for crosses, replace
! 	tooldir and program_prefix.  default srcdir from location of
! 	config.sub.  remove "for host in hosts" and "for target in
! 	targets" loops.
  
  Wed Feb 26 19:48:25 1992  K. Richard Pixley  (rich@rtl.cygnus.com)
  
*************** Wed Feb 26 19:48:25 1992  K. Richard Pix
*** 21240,21253 ****
  Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* Makefile.in, configure.in: removed traces of namesubdir,
! 	  -subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
! 	  copyrights to '92, changed some from Cygnus to FSF.
  
  	* configure.texi: remove most references to multiple hosts,
! 	  multiple targets, subdirs, etc.
  
  	* configure.man: removed rcsid. reference config.sub not
! 	  config.subr.
  
  	* Makefile.in: mkdir $(infodir) on install-info.
  
--- 21822,21835 ----
  Wed Feb 26 18:04:40 1992  K. Richard Pixley  (rich@cygnus.com)
  
  	* Makefile.in, configure.in: removed traces of namesubdir,
! 	-subdirs, $(subdir), $(unsubdir), some rcs triggers.  Forced
! 	copyrights to '92, changed some from Cygnus to FSF.
  
  	* configure.texi: remove most references to multiple hosts,
! 	multiple targets, subdirs, etc.
  
  	* configure.man: removed rcsid. reference config.sub not
! 	config.subr.
  
  	* Makefile.in: mkdir $(infodir) on install-info.
  
*************** Thu Jan  2 22:57:12 1992  John Gilmore
*** 21323,21334 ****
  Fri Dec 27 16:26:47 1991  K. Richard Pixley  (rich at cygnus.com)
  
  	* configure.in, Makefile.in: fix clean-info, add flex.  add
! 	  fileutils.
  
  	* configure: be less sensitive to spaces in Makefile.in.  Do not
! 	  look for sources in "..".  Doing so breaks subdirectories that
! 	  might have their own configure.  If a subdir has it's own
! 	  configure script, use it.
  
  Thu Dec 26 16:30:26 1991  K. Richard Pixley  (rich at cygnus.com)
  
--- 21905,21916 ----
  Fri Dec 27 16:26:47 1991  K. Richard Pixley  (rich at cygnus.com)
  
  	* configure.in, Makefile.in: fix clean-info, add flex.  add
! 	fileutils.
  
  	* configure: be less sensitive to spaces in Makefile.in.  Do not
! 	look for sources in "..".  Doing so breaks subdirectories that
! 	might have their own configure.  If a subdir has it's own
! 	configure script, use it.
  
  Thu Dec 26 16:30:26 1991  K. Richard Pixley  (rich at cygnus.com)
  
*************** Thu Dec 19 15:54:29 1991  K. Richard Pix
*** 21351,21383 ****
  Wed Dec 18 15:39:34 1991  K. Richard Pixley  (rich at cygnus.com)
  
  	* DOC.configure, cfg-paper.texi: revised, updated, and texinfo'd.
! 	  renamed from DOC.configure to cfg-paper.texi.
  
  Mon Dec 16 23:05:19 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure, config.subr, config.sub: config.subr is now
! 	  config.sub again.
  
  Fri Dec 13 01:17:06 1991  K. Richard Pixley  (rich at cygnus.com)
  
  	* configure.texi: new file, in progress.
  
  	* Makefile.in: build info file and install the man page for
! 	  configure.
  
  	* configure.man: new file, first cut.
  
  	* configure: find config.subr again now that configuration "none"
! 	  has gone.  removed all traces of the -ansi option.  removed all
! 	  traces of the -languages option.
  
  	* config.subr: resync from rms.
  
  Wed Dec 11 22:25:20 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure, config.sub, config.subr: merge config.sub into
! 	  config.subr, call the result config.subr, remove config.sub, use
! 	  config.subr.
  
  	* Makefile.in: revised install for dir.info.
  
--- 21933,21965 ----
  Wed Dec 18 15:39:34 1991  K. Richard Pixley  (rich at cygnus.com)
  
  	* DOC.configure, cfg-paper.texi: revised, updated, and texinfo'd.
! 	renamed from DOC.configure to cfg-paper.texi.
  
  Mon Dec 16 23:05:19 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure, config.subr, config.sub: config.subr is now
! 	config.sub again.
  
  Fri Dec 13 01:17:06 1991  K. Richard Pixley  (rich at cygnus.com)
  
  	* configure.texi: new file, in progress.
  
  	* Makefile.in: build info file and install the man page for
! 	configure.
  
  	* configure.man: new file, first cut.
  
  	* configure: find config.subr again now that configuration "none"
! 	has gone.  removed all traces of the -ansi option.  removed all
! 	traces of the -languages option.
  
  	* config.subr: resync from rms.
  
  Wed Dec 11 22:25:20 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure, config.sub, config.subr: merge config.sub into
! 	config.subr, call the result config.subr, remove config.sub, use
! 	config.subr.
  
  	* Makefile.in: revised install for dir.info.
  
*************** Tue Dec 10 00:04:35 1991  K. Richard Pix
*** 21386,21394 ****
  	* configure.in: add decstation host makefile frag.
  
  	* Makefile.in: BISON now bison -y again.  also install-gcc on
! 	  install.  clean-gdbm on clean.  infodir belongs in datadir.
! 	  Make directories for info install.  Build dir.info here then
! 	  install it.
  
  Mon Dec  9 16:48:33 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
--- 21968,21976 ----
  	* configure.in: add decstation host makefile frag.
  
  	* Makefile.in: BISON now bison -y again.  also install-gcc on
! 	install.  clean-gdbm on clean.  infodir belongs in datadir.
! 	Make directories for info install.  Build dir.info here then
! 	install it.
  
  Mon Dec  9 16:48:33 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
*************** Mon Dec  9 16:48:33 1991  K. Richard Pix
*** 21397,21425 ****
  Sat Dec  7 00:17:01 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure: \{1,2\} appears to be a sysv'ism.  Use a different
! 	  regexp.  -srcdir relative was being handled incorrectly.
  
  	* Makefile.in: unwrapped some for loops so that parallel makes
! 	  work again and so one can focus one's attention on a particular
! 	  package.
  
  Fri Dec  6 00:22:08 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure: added PWD as a stand in for `pwd` (for speed). use
! 	  elif wherever possible.  make -srcdir work without -objdir.
! 	  -objdir= commented out.
  
  Thu Dec  5 22:46:52 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure: +options become --options.  -subdirs commented out.
! 	  added -host, -datadir.  Renamed -destdir to -prefix.  Comment in
! 	  Makefile now at top of generated Makefile.  Removed cvs log
! 	  entries.  added -srcdir.  create .gdbinit only if there is one
! 	  in ${srcdir}.
  
  	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
! 	  and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
! 	  and mandir now keyed off datadir by default.
  
  Fri Nov 22 07:38:11 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
--- 21979,22007 ----
  Sat Dec  7 00:17:01 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure: \{1,2\} appears to be a sysv'ism.  Use a different
! 	regexp.  -srcdir relative was being handled incorrectly.
  
  	* Makefile.in: unwrapped some for loops so that parallel makes
! 	work again and so one can focus one's attention on a particular
! 	package.
  
  Fri Dec  6 00:22:08 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure: added PWD as a stand in for `pwd` (for speed). use
! 	elif wherever possible.  make -srcdir work without -objdir.
! 	-objdir= commented out.
  
  Thu Dec  5 22:46:52 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
  	* configure: +options become --options.  -subdirs commented out.
! 	added -host, -datadir.  Renamed -destdir to -prefix.  Comment in
! 	Makefile now at top of generated Makefile.  Removed cvs log
! 	entries.  added -srcdir.  create .gdbinit only if there is one
! 	in ${srcdir}.
  
  	* Makefile.in: idestdir and ddestdir go away.  Added copyrights
! 	and shift gpl to v2.  Added ChangeLog if it didn't exist. docdir
! 	and mandir now keyed off datadir by default.
  
  Fri Nov 22 07:38:11 1991  K. Richard Pixley  (rich at rtl.cygnus.com)
  
diff -Nrcpad gcc-12.2.0/INSTALL/binaries.html gcc-13.1.0/INSTALL/binaries.html
*** gcc-12.2.0/INSTALL/binaries.html	Fri Aug 19 08:15:37 2022
--- gcc-13.1.0/INSTALL/binaries.html	Wed Apr 26 07:11:21 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Binaries</title>
  
  <meta name="description" content="Installing GCC: Binaries">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 85,92 ****
  
  
  
! <a name="index-Binaries"></a>
! <a name="index-Installing-GCC_003a-Binaries"></a>
  
  <p>We are often asked about pre-compiled versions of GCC.  While we cannot
  provide these for all platforms, below you&rsquo;ll find links to binaries for
--- 79,89 ----
  
  
  
! 
! 
! 
! <span id="index-Binaries"></span>
! <span id="index-Installing-GCC_003a-Binaries"></span>
  
  <p>We are often asked about pre-compiled versions of GCC.  While we cannot
  provide these for all platforms, below you&rsquo;ll find links to binaries for
*************** contact their makers.
*** 100,109 ****
  <ul>
  <li> AIX:
  <ul>
! <li> <a href="http://www.bullfreeware.com">Bull&rsquo;s Open Source Software Archive for
! for AIX 6 and AIX 7</a>;
! 
! </li><li> <a href="http://www.perzl.org/aix/">AIX Open Source Packages (AIX5L AIX 6.1
  AIX 7.1)</a>.
  </li></ul>
  
--- 97,103 ----
  <ul>
  <li> AIX:
  <ul>
! <li> <a href="http://www.perzl.org/aix/">AIX Open Source Packages (AIX5L AIX 6.1
  AIX 7.1)</a>.
  </li></ul>
  
*************** AIX 7.1)</a>.
*** 114,124 ****
  <li> <a href="http://hpux.connect.org.uk/">HP-UX Porting Center</a>;
  </li></ul>
  
- </li><li> Solaris 2 (SPARC, Intel):
- <ul>
- <li> <a href="https://www.opencsw.org/">OpenCSW</a>
- </li></ul>
- 
  </li><li> macOS:
  <ul>
  <li> The <a href="https://brew.sh">Homebrew</a> package manager;
--- 108,113 ----
diff -Nrcpad gcc-12.2.0/INSTALL/build.html gcc-13.1.0/INSTALL/build.html
*** gcc-12.2.0/INSTALL/build.html	Fri Aug 19 08:15:37 2022
--- gcc-13.1.0/INSTALL/build.html	Wed Apr 26 07:11:20 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Building</title>
  
  <meta name="description" content="Installing GCC: Building">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 82,88 ****
  
  
  
! <a name="index-Installing-GCC_003a-Building"></a>
  
  <p>Now that GCC is configured, you are ready to build the compiler and
  runtime libraries.
--- 76,85 ----
  
  
  
! 
! 
! 
! <span id="index-Installing-GCC_003a-Building"></span>
  
  <p>Now that GCC is configured, you are ready to build the compiler and
  runtime libraries.
*************** documentation, you need version 4.7 or l
*** 129,135 ****
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <a name="Building-a-native-compiler"></a>
  <h3 class="section">Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
--- 126,132 ----
  want Info documentation to be regenerated.  Releases contain Info
  documentation pre-built for the unmodified documentation in the release.
  </p>
! <div class="section" id="Building-a-native-compiler">
  <h3 class="section">Building a native compiler</h3>
  
  <p>For a native build, the default configuration is to perform
*************** following example.  This will save rough
*** 172,179 ****
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  </p>
! <div class="smallexample">
! <pre class="smallexample">make BOOT_CFLAGS='-O' bootstrap
  </pre></div>
  
  <p>You can place non-default optimization flags into <code>BOOT_CFLAGS</code>; they
--- 169,176 ----
  the bootstrap and the final installation.  (Libraries will still contain
  debugging information.)
  </p>
! <div class="example">
! <pre class="example">make BOOT_CFLAGS='-O' bootstrap
  </pre></div>
  
  <p>You can place non-default optimization flags into <code>BOOT_CFLAGS</code>; they
*************** configure option <samp>--with-build-conf
*** 224,241 ****
  examples of supported build configurations are:
  </p>
  <dl compact="compact">
! <dt>&lsquo;<samp>bootstrap-O1</samp>&rsquo;</dt>
  <dd><p>Removes any <samp>-O</samp>-started option from <code>BOOT_CFLAGS</code>, and adds
  <samp>-O1</samp> to it.  &lsquo;<samp>BUILD_CONFIG=bootstrap-O1</samp>&rsquo; is equivalent to
  &lsquo;<samp>BOOT_CFLAGS='-g -O1'</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-O3</samp>&rsquo;</dt>
! <dt>&lsquo;<samp>bootstrap-Og</samp>&rsquo;</dt>
  <dd><p>Analogous to <code>bootstrap-O1</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto</samp>&rsquo;</dt>
  <dd><p>Enables Link-Time Optimization for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-lto</samp>&rsquo; is equivalent to adding
  <samp>-flto</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option assumes that the host
--- 221,238 ----
  examples of supported build configurations are:
  </p>
  <dl compact="compact">
! <dt><span>&lsquo;<samp>bootstrap-O1</samp>&rsquo;</span></dt>
  <dd><p>Removes any <samp>-O</samp>-started option from <code>BOOT_CFLAGS</code>, and adds
  <samp>-O1</samp> to it.  &lsquo;<samp>BUILD_CONFIG=bootstrap-O1</samp>&rsquo; is equivalent to
  &lsquo;<samp>BOOT_CFLAGS='-g -O1'</samp>&rsquo;.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-O3</samp>&rsquo;</span></dt>
! <dt><span>&lsquo;<samp>bootstrap-Og</samp>&rsquo;</span></dt>
  <dd><p>Analogous to <code>bootstrap-O1</code>.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-lto</samp>&rsquo;</span></dt>
  <dd><p>Enables Link-Time Optimization for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-lto</samp>&rsquo; is equivalent to adding
  <samp>-flto</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option assumes that the host
*************** supports the linker plugin (e.g. GNU ld
*** 243,249 ****
  version 2.21 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto-noplugin</samp>&rsquo;</dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  hosts that do not support the linker plugin.  Without the linker plugin 
  static libraries are not compiled with link-time optimizations.  Since 
--- 240,246 ----
  version 2.21 or later).
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-lto-noplugin</samp>&rsquo;</span></dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  hosts that do not support the linker plugin.  Without the linker plugin 
  static libraries are not compiled with link-time optimizations.  Since 
*************** the GCC middle end and back end are in <
*** 251,264 ****
  that only the front end is actually LTO optimized.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-lto-lean</samp>&rsquo;</dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  faster build by only using LTO in the final bootstrap stage.
  With &lsquo;<samp>make profiledbootstrap</samp>&rsquo; the LTO frontend
  is trained only on generator files.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug</samp>&rsquo;</dt>
  <dd><p>Verifies that the compiler generates the same executable code, whether
  or not it is asked to emit debug information.  To this end, this
  option builds stage2 host programs without debug information, and uses
--- 248,261 ----
  that only the front end is actually LTO optimized.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-lto-lean</samp>&rsquo;</span></dt>
  <dd><p>This option is similar to <code>bootstrap-lto</code>, but is intended for
  faster build by only using LTO in the final bootstrap stage.
  With &lsquo;<samp>make profiledbootstrap</samp>&rsquo; the LTO frontend
  is trained only on generator files.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug</samp>&rsquo;</span></dt>
  <dd><p>Verifies that the compiler generates the same executable code, whether
  or not it is asked to emit debug information.  To this end, this
  option builds stage2 host programs without debug information, and uses
*************** info into identical object files.  In ad
*** 271,277 ****
  coverage, this option makes default bootstraps faster and leaner.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-big</samp>&rsquo;</dt>
  <dd><p>Rather than comparing stripped object files, as in
  <code>bootstrap-debug</code>, this option saves internal compiler dumps
  during stage2 and stage3 and compares them as well, which helps catch
--- 268,274 ----
  coverage, this option makes default bootstraps faster and leaner.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-big</samp>&rsquo;</span></dt>
  <dd><p>Rather than comparing stripped object files, as in
  <code>bootstrap-debug</code>, this option saves internal compiler dumps
  during stage2 and stage3 and compares them as well, which helps catch
*************** additional potential problems, but at a
*** 279,285 ****
  space.  It can be specified in addition to &lsquo;<samp>bootstrap-debug</samp>&rsquo;.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-lean</samp>&rsquo;</dt>
  <dd><p>This option saves disk space compared with <code>bootstrap-debug-big</code>,
  but at the expense of some recompilation.  Instead of saving the dumps
  of stage2 and stage3 until the final compare, it uses
--- 276,282 ----
  space.  It can be specified in addition to &lsquo;<samp>bootstrap-debug</samp>&rsquo;.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-lean</samp>&rsquo;</span></dt>
  <dd><p>This option saves disk space compared with <code>bootstrap-debug-big</code>,
  but at the expense of some recompilation.  Instead of saving the dumps
  of stage2 and stage3 until the final compare, it uses
*************** during stage3, repeating the compilation
*** 288,294 ****
  stage2, whose dumps were not saved.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-lib</samp>&rsquo;</dt>
  <dd><p>This option tests executable code invariance over debug information
  generation on target libraries, just like <code>bootstrap-debug-lean</code>
  tests it on host programs.  It builds stage3 libraries with
--- 285,291 ----
  stage2, whose dumps were not saved.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-lib</samp>&rsquo;</span></dt>
  <dd><p>This option tests executable code invariance over debug information
  generation on target libraries, just like <code>bootstrap-debug-lean</code>
  tests it on host programs.  It builds stage3 libraries with
*************** in stage2 are used in stage3 host progra
*** 302,308 ****
  compile stage2 libraries with different options for comparison purposes.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-debug-ckovw</samp>&rsquo;</dt>
  <dd><p>Arranges for error messages to be issued if the compiler built on any
  stage is run without the option <samp>-fcompare-debug</samp>.  This is
  useful to verify the full <samp>-fcompare-debug</samp> testing coverage.  It
--- 299,305 ----
  compile stage2 libraries with different options for comparison purposes.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-debug-ckovw</samp>&rsquo;</span></dt>
  <dd><p>Arranges for error messages to be issued if the compiler built on any
  stage is run without the option <samp>-fcompare-debug</samp>.  This is
  useful to verify the full <samp>-fcompare-debug</samp> testing coverage.  It
*************** must be used along with <code>bootstrap-
*** 310,316 ****
  <code>bootstrap-debug-lib</code>.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-cet</samp>&rsquo;</dt>
  <dd><p>This option enables Intel CET for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-cet</samp>&rsquo; is equivalent to adding
  <samp>-fcf-protection</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option
--- 307,313 ----
  <code>bootstrap-debug-lib</code>.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-cet</samp>&rsquo;</span></dt>
  <dd><p>This option enables Intel CET for host tools during bootstrapping.
  &lsquo;<samp>BUILD_CONFIG=bootstrap-cet</samp>&rsquo; is equivalent to adding
  <samp>-fcf-protection</samp> to &lsquo;<samp>BOOT_CFLAGS</samp>&rsquo;.  This option
*************** assumes that the host supports Intel CET
*** 318,335 ****
  2.30 or later).
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-time</samp>&rsquo;</dt>
  <dd><p>Arranges for the run time of each program started by the GCC driver,
  built in any stage, to be logged to <samp>time.log</samp>, in the top level of
  the build tree.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-asan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using Address Sanitization in order to catch invalid memory
  accesses within the GCC code.
  </p>
  </dd>
! <dt>&lsquo;<samp>bootstrap-hwasan</samp>&rsquo;</dt>
  <dd><p>Compiles GCC itself using HWAddress Sanitization in order to catch invalid
  memory accesses within the GCC code.  This option is only available on AArch64
  systems that are running Linux kernel version 5.4 or later.
--- 315,332 ----
  2.30 or later).
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-time</samp>&rsquo;</span></dt>
  <dd><p>Arranges for the run time of each program started by the GCC driver,
  built in any stage, to be logged to <samp>time.log</samp>, in the top level of
  the build tree.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-asan</samp>&rsquo;</span></dt>
  <dd><p>Compiles GCC itself using Address Sanitization in order to catch invalid memory
  accesses within the GCC code.
  </p>
  </dd>
! <dt><span>&lsquo;<samp>bootstrap-hwasan</samp>&rsquo;</span></dt>
  <dd><p>Compiles GCC itself using HWAddress Sanitization in order to catch invalid
  memory accesses within the GCC code.  This option is only available on AArch64
  systems that are running Linux kernel version 5.4 or later.
*************** systems that are running Linux kernel ve
*** 337,343 ****
  </dd>
  </dl>
  
! <a name="Building-a-cross-compiler"></a>
  <h3 class="section">Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
--- 334,341 ----
  </dd>
  </dl>
  
! </div>
! <div class="section" id="Building-a-cross-compiler">
  <h3 class="section">Building a cross compiler</h3>
  
  <p>When building a cross compiler, it is not generally possible to do a
*************** configuring GCC.  Put them in the direct
*** 375,394 ****
  you should put in this directory:
  </p>
  <dl compact="compact">
! <dt><samp>as</samp></dt>
  <dd><p>This should be the cross-assembler.
  </p>
  </dd>
! <dt><samp>ld</samp></dt>
  <dd><p>This should be the cross-linker.
  </p>
  </dd>
! <dt><samp>ar</samp></dt>
  <dd><p>This should be the cross-archiver: a program which can manipulate
  archive files (linker libraries) in the target machine&rsquo;s format.
  </p>
  </dd>
! <dt><samp>ranlib</samp></dt>
  <dd><p>This should be a program to construct a symbol table in an archive file.
  </p></dd>
  </dl>
--- 373,392 ----
  you should put in this directory:
  </p>
  <dl compact="compact">
! <dt><span><samp>as</samp></span></dt>
  <dd><p>This should be the cross-assembler.
  </p>
  </dd>
! <dt><span><samp>ld</samp></span></dt>
  <dd><p>This should be the cross-linker.
  </p>
  </dd>
! <dt><span><samp>ar</samp></span></dt>
  <dd><p>This should be the cross-archiver: a program which can manipulate
  archive files (linker libraries) in the target machine&rsquo;s format.
  </p>
  </dd>
! <dt><span><samp>ranlib</samp></span></dt>
  <dd><p>This should be a program to construct a symbol table in an archive file.
  </p></dd>
  </dl>
*************** alternatives for <samp>crt0.o</samp>, fo
*** 415,421 ****
  compilation options.  Check your target&rsquo;s definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! <a name="Building-in-parallel"></a>
  <h3 class="section">Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
--- 413,420 ----
  compilation options.  Check your target&rsquo;s definition of
  <code>STARTFILE_SPEC</code> to find out what start files it uses.
  </p>
! </div>
! <div class="section" id="Building-in-parallel">
  <h3 class="section">Building in parallel</h3>
  
  <p>GNU Make 3.80 and above, which is necessary to build GCC, support
*************** your machine will result in fewer and sh
*** 426,442 ****
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! <a name="Building-the-Ada-compiler"></a>
  <h3 class="section">Building the Ada compiler</h3>
  
  <p><a href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! <a name="Building-the-D-compiler"></a>
  <h3 class="section">Building the D compiler</h3>
  
  <p><a href="prerequisites.html#GDC-prerequisite">GDC prerequisites</a>.
  </p>
! <a name="Building-with-profile-feedback"></a>
  <h3 class="section">Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
--- 425,444 ----
  improving overall throughput; this is especially true for slow drives
  and network filesystems.
  </p>
! </div>
! <div class="section" id="Building-the-Ada-compiler">
  <h3 class="section">Building the Ada compiler</h3>
  
  <p><a href="prerequisites.html#GNAT-prerequisite">GNAT prerequisites</a>.
  </p>
! </div>
! <div class="section" id="Building-the-D-compiler">
  <h3 class="section">Building the D compiler</h3>
  
  <p><a href="prerequisites.html#GDC-prerequisite">GDC prerequisites</a>.
  </p>
! </div>
! <div class="section" id="Building-with-profile-feedback">
  <h3 class="section">Building with profile feedback</h3>
  
  <p>It is possible to use profile feedback to optimize the compiler itself.  This
*************** the code quality may be much worse.
*** 476,482 ****
  
  
  
! <hr>
  
  
  
--- 478,484 ----
  
  
  
! <hr></div>
  
  
  
diff -Nrcpad gcc-12.2.0/INSTALL/configure.html gcc-13.1.0/INSTALL/configure.html
*** gcc-12.2.0/INSTALL/configure.html	Fri Aug 19 08:15:37 2022
--- gcc-13.1.0/INSTALL/configure.html	Wed Apr 26 07:11:20 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Configuration</title>
  
  <meta name="description" content="Installing GCC: Configuration">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 81,88 ****
  
  
  
! <a name="index-Configuration"></a>
! <a name="index-Installing-GCC_003a-Configuration"></a>
  
  <p>Like most GNU software, GCC must be configured before it can be built.
  This document describes the recommended configuration procedure
--- 75,85 ----
  
  
  
! 
! 
! 
! <span id="index-Configuration"></span>
! <span id="index-Installing-GCC_003a-Configuration"></span>
  
  <p>Like most GNU software, GCC must be configured before it can be built.
  This document describes the recommended configuration procedure
*************** scripts may fail.
*** 128,148 ****
  
  <p>To configure GCC:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% mkdir <var>objdir</var>
  % cd <var>objdir</var>
  % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
  </pre></div>
  
! <a name="Distributor-options"></a>
! <h3 class="heading">Distributor options</h3>
  
  <p>If you will be distributing binary versions of GCC, with modifications
  to the source code, you should use the options described in this
  section to make clear that your version contains modifications.
  </p>
  <dl compact="compact">
! <dt><code>--with-pkgversion=<var>version</var></code></dt>
  <dd><p>Specify a string that identifies your package.  You may wish
  to include a build number or build date.  This version string will be
  included in the output of <code>gcc --version</code>.  This suffix does
--- 125,144 ----
  
  <p>To configure GCC:
  </p>
! <div class="example">
! <pre class="example">% mkdir <var>objdir</var>
  % cd <var>objdir</var>
  % <var>srcdir</var>/configure [<var>options</var>] [<var>target</var>]
  </pre></div>
  
! <span id="Distributor-options"></span><h3 class="heading">Distributor options</h3>
  
  <p>If you will be distributing binary versions of GCC, with modifications
  to the source code, you should use the options described in this
  section to make clear that your version contains modifications.
  </p>
  <dl compact="compact">
! <dt><span><code>--with-pkgversion=<var>version</var></code></span></dt>
  <dd><p>Specify a string that identifies your package.  You may wish
  to include a build number or build date.  This version string will be
  included in the output of <code>gcc --version</code>.  This suffix does
*************** not replace the default version string,
*** 151,157 ****
  <p>The default value is &lsquo;<samp>GCC</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-bugurl=<var>url</var></code></dt>
  <dd><p>Specify the URL that users should visit if they wish to report a bug.
  You are of course welcome to forward bugs reported to you to the FSF,
  if you determine that they are not bugs in your modifications.
--- 147,153 ----
  <p>The default value is &lsquo;<samp>GCC</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-bugurl=<var>url</var></code></span></dt>
  <dd><p>Specify the URL that users should visit if they wish to report a bug.
  You are of course welcome to forward bugs reported to you to the FSF,
  if you determine that they are not bugs in your modifications.
*************** if you determine that they are not bugs
*** 159,172 ****
  <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
  </p>
  </dd>
! <dt><code>--with-documentation-root-url=<var>url</var></code></dt>
  <dd><p>Specify the URL root that contains GCC option documentation.  The <var>url</var>
  should end with a <code>/</code> character.
  </p>
  <p>The default value is <a href="https://gcc.gnu.org/onlinedocs/">https://gcc.gnu.org/onlinedocs/</a>.
  </p>
  </dd>
! <dt><code>--with-changes-root-url=<var>url</var></code></dt>
  <dd><p>Specify the URL root that contains information about changes in GCC
  releases like <code>gcc-<var>version</var>/changes.html</code>.
  The <var>url</var> should end with a <code>/</code> character.
--- 155,168 ----
  <p>The default value refers to the FSF&rsquo;s GCC bug tracker.
  </p>
  </dd>
! <dt><span><code>--with-documentation-root-url=<var>url</var></code></span></dt>
  <dd><p>Specify the URL root that contains GCC option documentation.  The <var>url</var>
  should end with a <code>/</code> character.
  </p>
  <p>The default value is <a href="https://gcc.gnu.org/onlinedocs/">https://gcc.gnu.org/onlinedocs/</a>.
  </p>
  </dd>
! <dt><span><code>--with-changes-root-url=<var>url</var></code></span></dt>
  <dd><p>Specify the URL root that contains information about changes in GCC
  releases like <code>gcc-<var>version</var>/changes.html</code>.
  The <var>url</var> should end with a <code>/</code> character.
*************** The <var>url</var> should end with a <co
*** 176,183 ****
  </dd>
  </dl>
  
! <a name="Host_002c-Build-and-Target-specification"></a>
! <h3 class="heading">Host, Build and Target specification</h3>
  
  <p>Specify the host, build and target machine configurations.  You do this
  when you run the <samp>configure</samp> script.
--- 172,178 ----
  </dd>
  </dl>
  
! <span id="Host_002c-Build-and-Target-specification"></span><h3 class="heading">Host, Build and Target specification</h3>
  
  <p>Specify the host, build and target machine configurations.  You do this
  when you run the <samp>configure</samp> script.
*************** the same as the host machine.
*** 201,208 ****
  </p>
  <p>Here is an example:
  </p>
! <div class="smallexample">
! <pre class="smallexample">./configure --host=x86_64-pc-linux-gnu
  </pre></div>
  
  <p>A configuration name may be canonical or it may be more or less
--- 196,203 ----
  </p>
  <p>Here is an example:
  </p>
! <div class="example">
! <pre class="example">./configure --host=x86_64-pc-linux-gnu
  </pre></div>
  
  <p>A configuration name may be canonical or it may be more or less
*************** It looks like this: &lsquo;<samp><var>cp
*** 215,228 ****
  </p>
  <blockquote>
  <p>aarch64, aarch64_be, alpha, alpha64, amdgcn, arc, arceb, arm, armeb, avr, bfin,
! bpf, cr16, cris, csky, epiphany, fido, fr30, frv, ft32, h8300, hppa, hppa2.0,
  hppa64, i486, i686, ia64, iq2000, lm32, loongarch64, m32c, m32r, m32rle, m68k,
  mcore, microblaze, microblazeel, mips, mips64, mips64el, mips64octeon,
  mips64orion, mips64vr, mipsel, mipsisa32, mipsisa32r2, mipsisa64, mipsisa64r2,
  mipsisa64r2el, mipsisa64sb1, mipsisa64sr71k, mipstx39, mmix, mn10300, moxie,
  msp430, nds32be, nds32le, nios2, nvptx, or1k, pdp11, powerpc, powerpc64,
  powerpc64le, powerpcle, pru, riscv32, riscv32be, riscv64, riscv64be, rl78, rx,
! s390, s390x, sh, shle, sparc, sparc64, tic6x, tilegx, tilegxbe, tilepro, v850,
  v850e, v850e1, vax, visium, x86_64, xstormy16, xtensa
  </p></blockquote>
  
--- 210,223 ----
  </p>
  <blockquote>
  <p>aarch64, aarch64_be, alpha, alpha64, amdgcn, arc, arceb, arm, armeb, avr, bfin,
! bpf, cris, csky, epiphany, fido, fr30, frv, ft32, h8300, hppa, hppa2.0,
  hppa64, i486, i686, ia64, iq2000, lm32, loongarch64, m32c, m32r, m32rle, m68k,
  mcore, microblaze, microblazeel, mips, mips64, mips64el, mips64octeon,
  mips64orion, mips64vr, mipsel, mipsisa32, mipsisa32r2, mipsisa64, mipsisa64r2,
  mipsisa64r2el, mipsisa64sb1, mipsisa64sr71k, mipstx39, mmix, mn10300, moxie,
  msp430, nds32be, nds32le, nios2, nvptx, or1k, pdp11, powerpc, powerpc64,
  powerpc64le, powerpcle, pru, riscv32, riscv32be, riscv64, riscv64be, rl78, rx,
! s390, s390x, sh, shle, sparc, sparc64, tic6x, v850,
  v850e, v850e1, vax, visium, x86_64, xstormy16, xtensa
  </p></blockquote>
  
*************** rtems, solaris<var>version</var>, symbia
*** 239,246 ****
  vxworks, vxworksae, vxworksmils
  </p></blockquote>
  
! <a name="Options-specification"></a>
! <h3 class="heading">Options specification</h3>
  
  <p>Use <var>options</var> to override several configure time options for
  GCC.  A list of supported <var>options</var> follows; &lsquo;<samp>configure
--- 234,240 ----
  vxworks, vxworksae, vxworksmils
  </p></blockquote>
  
! <span id="Options-specification"></span><h3 class="heading">Options specification</h3>
  
  <p>Use <var>options</var> to override several configure time options for
  GCC.  A list of supported <var>options</var> follows; &lsquo;<samp>configure
*************** work and should not normally be used.
*** 252,258 ****
  corresponding <samp>--without</samp> option.
  </p>
  <dl compact="compact">
! <dt><code>--prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
--- 246,252 ----
  corresponding <samp>--without</samp> option.
  </p>
  <dl compact="compact">
! <dt><span><code>--prefix=<var>dirname</var></code></span></dt>
  <dd><p>Specify the toplevel installation
  directory.  This is the recommended way to install the tools into a directory
  other than the default.  The toplevel installation directory defaults to
*************** beneath a user&rsquo;s home directory tr
*** 267,329 ****
  <p>The following standard <code>autoconf</code> options are supported.  Normally you
  should not need to use these options.
  </p><dl compact="compact">
! <dt><code>--exec-prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the toplevel installation directory for architecture-dependent
  files.  The default is <samp><var>prefix</var></samp>.
  </p>
  </dd>
! <dt><code>--bindir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for the executables called by users
  (such as <code>gcc</code> and <code>g++</code>).  The default is
  <samp><var>exec-prefix</var>/bin</samp>.
  </p>
  </dd>
! <dt><code>--libdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for object code libraries and
  internal data files of GCC.  The default is <samp><var>exec-prefix</var>/lib</samp>.
  </p>
  </dd>
! <dt><code>--libexecdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for internal executables of GCC.
  The default is <samp><var>exec-prefix</var>/libexec</samp>.
  </p>
  </dd>
! <dt><code>--with-slibdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for the shared libgcc library.  The
  default is <samp><var>libdir</var></samp>.
  </p>
  </dd>
! <dt><code>--datarootdir=<var>dirname</var></code></dt>
  <dd><p>Specify the root of the directory tree for read-only architecture-independent
  data files referenced by GCC.  The default is <samp><var>prefix</var>/share</samp>.
  </p>
  </dd>
! <dt><code>--infodir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation in info format.
  The default is <samp><var>datarootdir</var>/info</samp>.
  </p>
  </dd>
! <dt><code>--datadir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for some architecture-independent
  data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
  </p>
  </dd>
! <dt><code>--docdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for documentation files (other
  than Info) for GCC.  The default is <samp><var>datarootdir</var>/doc</samp>.
  </p>
  </dd>
! <dt><code>--htmldir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for HTML documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><code>--pdfdir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for PDF documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><code>--mandir=<var>dirname</var></code></dt>
  <dd><p>Specify the installation directory for manual pages.  The default is
  <samp><var>datarootdir</var>/man</samp>.  (Note that the manual pages are only extracts
  from the full GCC manuals, which are provided in Texinfo format.  The manpages
--- 261,323 ----
  <p>The following standard <code>autoconf</code> options are supported.  Normally you
  should not need to use these options.
  </p><dl compact="compact">
! <dt><span><code>--exec-prefix=<var>dirname</var></code></span></dt>
  <dd><p>Specify the toplevel installation directory for architecture-dependent
  files.  The default is <samp><var>prefix</var></samp>.
  </p>
  </dd>
! <dt><span><code>--bindir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for the executables called by users
  (such as <code>gcc</code> and <code>g++</code>).  The default is
  <samp><var>exec-prefix</var>/bin</samp>.
  </p>
  </dd>
! <dt><span><code>--libdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for object code libraries and
  internal data files of GCC.  The default is <samp><var>exec-prefix</var>/lib</samp>.
  </p>
  </dd>
! <dt><span><code>--libexecdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for internal executables of GCC.
  The default is <samp><var>exec-prefix</var>/libexec</samp>.
  </p>
  </dd>
! <dt><span><code>--with-slibdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for the shared libgcc library.  The
  default is <samp><var>libdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--datarootdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the root of the directory tree for read-only architecture-independent
  data files referenced by GCC.  The default is <samp><var>prefix</var>/share</samp>.
  </p>
  </dd>
! <dt><span><code>--infodir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for documentation in info format.
  The default is <samp><var>datarootdir</var>/info</samp>.
  </p>
  </dd>
! <dt><span><code>--datadir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for some architecture-independent
  data files referenced by GCC.  The default is <samp><var>datarootdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--docdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for documentation files (other
  than Info) for GCC.  The default is <samp><var>datarootdir</var>/doc</samp>.
  </p>
  </dd>
! <dt><span><code>--htmldir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for HTML documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--pdfdir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for PDF documentation files.
  The default is <samp><var>docdir</var></samp>.
  </p>
  </dd>
! <dt><span><code>--mandir=<var>dirname</var></code></span></dt>
  <dd><p>Specify the installation directory for manual pages.  The default is
  <samp><var>datarootdir</var>/man</samp>.  (Note that the manual pages are only extracts
  from the full GCC manuals, which are provided in Texinfo format.  The manpages
*************** are derived by an automatic conversion p
*** 331,344 ****
  manual.)
  </p>
  </dd>
! <dt><code>--with-gxx-include-dir=<var>dirname</var></code></dt>
  <dd><p>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
  </p>
  </dd>
! <dt><code>--with-specs=<var>specs</var></code></dt>
  <dd><p>Specify additional command line driver SPECS.
  This can be useful if you need to turn on a non-standard feature by
  default without modifying the compiler&rsquo;s source code, for instance
--- 325,338 ----
  manual.)
  </p>
  </dd>
! <dt><span><code>--with-gxx-include-dir=<var>dirname</var></code></span></dt>
  <dd><p>Specify
  the installation directory for G++ header files.  The default depends
  on other configuration options, and differs between cross and native
  configurations.
  </p>
  </dd>
! <dt><span><code>--with-specs=<var>specs</var></code></span></dt>
  <dd><p>Specify additional command line driver SPECS.
  This can be useful if you need to turn on a non-standard feature by
  default without modifying the compiler&rsquo;s source code, for instance
*************** See &ldquo;Spec Files&rdquo; in the main
*** 349,355 ****
  </dl>
  
  </dd>
! <dt><code>--program-prefix=<var>prefix</var></code></dt>
  <dd><p>GCC supports some transformations of the names of its programs when
  installing them.  This option prepends <var>prefix</var> to the names of
  programs to install in <var>bindir</var> (see above).  For example, specifying
--- 343,349 ----
  </dl>
  
  </dd>
! <dt><span><code>--program-prefix=<var>prefix</var></code></span></dt>
  <dd><p>GCC supports some transformations of the names of its programs when
  installing them.  This option prepends <var>prefix</var> to the names of
  programs to install in <var>bindir</var> (see above).  For example, specifying
*************** programs to install in <var>bindir</var>
*** 357,370 ****
  being installed as <samp>/usr/local/bin/foo-gcc</samp>.
  </p>
  </dd>
! <dt><code>--program-suffix=<var>suffix</var></code></dt>
  <dd><p>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
  (see above).  For example, specifying <samp>--program-suffix=-3.1</samp>
  would result in &lsquo;<samp>gcc</samp>&rsquo; being installed as
  <samp>/usr/local/bin/gcc-3.1</samp>.
  </p>
  </dd>
! <dt><code>--program-transform-name=<var>pattern</var></code></dt>
  <dd><p>Applies the &lsquo;<samp>sed</samp>&rsquo; script <var>pattern</var> to be applied to the names
  of programs to install in <var>bindir</var> (see above).  <var>pattern</var> has to
  consist of one or more basic &lsquo;<samp>sed</samp>&rsquo; editing commands, separated by
--- 351,364 ----
  being installed as <samp>/usr/local/bin/foo-gcc</samp>.
  </p>
  </dd>
! <dt><span><code>--program-suffix=<var>suffix</var></code></span></dt>
  <dd><p>Appends <var>suffix</var> to the names of programs to install in <var>bindir</var>
  (see above).  For example, specifying <samp>--program-suffix=-3.1</samp>
  would result in &lsquo;<samp>gcc</samp>&rsquo; being installed as
  <samp>/usr/local/bin/gcc-3.1</samp>.
  </p>
  </dd>
! <dt><span><code>--program-transform-name=<var>pattern</var></code></span></dt>
  <dd><p>Applies the &lsquo;<samp>sed</samp>&rsquo; script <var>pattern</var> to be applied to the names
  of programs to install in <var>bindir</var> (see above).  <var>pattern</var> has to
  consist of one or more basic &lsquo;<samp>sed</samp>&rsquo; editing commands, separated by
*************** resulting binary would be installed as
*** 397,403 ****
  transformed yet, which will be fixed in some time.
  </p>
  </dd>
! <dt><code>--with-local-prefix=<var>dirname</var></code></dt>
  <dd><p>Specify the
  installation directory for local include files.  The default is
  <samp>/usr/local</samp>.  Specify this option if you want the compiler to
--- 391,397 ----
  transformed yet, which will be fixed in some time.
  </p>
  </dd>
! <dt><span><code>--with-local-prefix=<var>dirname</var></code></span></dt>
  <dd><p>Specify the
  installation directory for local include files.  The default is
  <samp>/usr/local</samp>.  Specify this option if you want the compiler to
*************** install part of GCC.  Perhaps they make
*** 470,481 ****
  installing GCC creates the directory.
  </p>
  </dd>
! <dt><code>--with-gcc-major-version-only</code></dt>
  <dd><p>Specifies that GCC should use only the major number rather than
  <var>major</var>.<var>minor</var>.<var>patchlevel</var> in filesystem paths.
  </p>
  </dd>
! <dt><code>--with-native-system-header-dir=<var>dirname</var></code></dt>
  <dd><p>Specifies that <var>dirname</var> is the directory that contains native system
  header files, rather than <samp>/usr/include</samp>.  This option is most useful
  if you are creating a compiler that should be isolated from the system
--- 464,475 ----
  installing GCC creates the directory.
  </p>
  </dd>
! <dt><span><code>--with-gcc-major-version-only</code></span></dt>
  <dd><p>Specifies that GCC should use only the major number rather than
  <var>major</var>.<var>minor</var>.<var>patchlevel</var> in filesystem paths.
  </p>
  </dd>
! <dt><span><code>--with-native-system-header-dir=<var>dirname</var></code></span></dt>
  <dd><p>Specifies that <var>dirname</var> is the directory that contains native system
  header files, rather than <samp>/usr/include</samp>.  This option is most useful
  if you are creating a compiler that should be isolated from the system
*************** as much as possible.  It is most commonl
*** 484,490 ****
  <var>dirname</var> inside the system root specified by that option.
  </p>
  </dd>
! <dt><code>--enable-shared[=<var>package</var>[,&hellip;]]</code></dt>
  <dd><p>Build shared versions of libraries, if shared libraries are supported on
  the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
  are enabled by default on all platforms that support shared libraries.
--- 478,484 ----
  <var>dirname</var> inside the system root specified by that option.
  </p>
  </dd>
! <dt><span><code>--enable-shared[=<var>package</var>[,&hellip;]]</code></span></dt>
  <dd><p>Build shared versions of libraries, if shared libraries are supported on
  the target platform.  Unlike GCC 2.95.x and earlier, shared libraries
  are enabled by default on all platforms that support shared libraries.
*************** argument, only <samp>--enable-shared</sa
*** 505,511 ****
  code.
  </p>
  </dd>
! <dt><code>--enable-host-shared</code></dt>
  <dd><p>Specify that the <em>host</em> code should be built into position-independent
  machine code (with -fPIC), allowing it to be used within shared libraries,
  but yielding a slightly slower compiler.
--- 499,505 ----
  code.
  </p>
  </dd>
! <dt><span><code>--enable-host-shared</code></span></dt>
  <dd><p>Specify that the <em>host</em> code should be built into position-independent
  machine code (with -fPIC), allowing it to be used within shared libraries,
  but yielding a slightly slower compiler.
*************** but yielding a slightly slower compiler.
*** 516,522 ****
  libraries.
  </p>
  </dd>
! <dt><code><a name="with-gnu-as"></a>--with-gnu-as</code></dt>
  <dd><p>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
--- 510,516 ----
  libraries.
  </p>
  </dd>
! <dt><span><code><span id="with-gnu-as"></span>--with-gnu-as</code></span></dt>
  <dd><p>Specify that the compiler should assume that the
  assembler it finds is the GNU assembler.  However, this does not modify
  the rules to find an assembler and will result in confusion if the
*************** whether you use the GNU assembler.  On a
*** 534,545 ****
  <ul>
  <li> &lsquo;<samp>hppa1.0-<var>any</var>-<var>any</var></samp>&rsquo;
  </li><li> &lsquo;<samp>hppa1.1-<var>any</var>-<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>sparc-sun-solaris2.<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>sparc64-<var>any</var>-solaris2.<var>any</var></samp>&rsquo;
  </li></ul>
  
  </dd>
! <dt><code><a name="with-as"></a>--with-as=<var>pathname</var></code></dt>
  <dd><p>Specify that the compiler should use the assembler pointed to by
  <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
--- 528,538 ----
  <ul>
  <li> &lsquo;<samp>hppa1.0-<var>any</var>-<var>any</var></samp>&rsquo;
  </li><li> &lsquo;<samp>hppa1.1-<var>any</var>-<var>any</var></samp>&rsquo;
! </li><li> &lsquo;<samp>*-*-solaris2.11</samp>&rsquo;
  </li></ul>
  
  </dd>
! <dt><span><code><span id="with-as"></span>--with-as=<var>pathname</var></code></span></dt>
  <dd><p>Specify that the compiler should use the assembler pointed to by
  <var>pathname</var>, rather than the one found by the standard rules to find
  an assembler, which are:
*************** an assembler, which are:
*** 550,561 ****
  <var>exec-prefix</var> defaults to <var>prefix</var>, which
  defaults to <samp>/usr/local</samp> unless overridden by the
  <samp>--prefix=<var>pathname</var></samp> switch described above.  <var>target</var>
! is the target system triple, such as &lsquo;<samp>sparc-sun-solaris2.7</samp>&rsquo;, and
  <var>version</var> denotes the GCC version, such as 3.0.
  
  </li><li> If the target system is the same that you are building on, check
! operating system specific directories (e.g. <samp>/usr/ccs/bin</samp> on
! Solaris 2).
  
  </li><li> Check in the <code>PATH</code> for a tool whose name is prefixed by the
  target system triple.
--- 543,553 ----
  <var>exec-prefix</var> defaults to <var>prefix</var>, which
  defaults to <samp>/usr/local</samp> unless overridden by the
  <samp>--prefix=<var>pathname</var></samp> switch described above.  <var>target</var>
! is the target system triple, such as &lsquo;<samp>sparc-sun-solaris2.11</samp>&rsquo;, and
  <var>version</var> denotes the GCC version, such as 3.0.
  
  </li><li> If the target system is the same that you are building on, check
! operating system specific directories.
  
  </li><li> Check in the <code>PATH</code> for a tool whose name is prefixed by the
  target system triple.
*************** assemblers installed and want to choose
*** 572,600 ****
  above rules.
  </p>
  </dd>
! <dt><code><a name="with-gnu-ld"></a>--with-gnu-ld</code></dt>
  <dd><p>Same as <a href="#with-gnu-as"><samp>--with-gnu-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code>--with-ld=<var>pathname</var></code></dt>
  <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><code>--with-dsymutil=<var>pathname</var></code></dt>
  <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the debug linker (only used on Darwin platforms so far).
  </p>
  </dd>
! <dt><code>--with-tls=<var>dialect</var></code></dt>
  <dd><p>Specify the default TLS dialect, for systems were there is a choice.
  For ARM targets, possible values for <var>dialect</var> are <code>gnu</code> or
  <code>gnu2</code>, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
  </p>
  </dd>
! <dt><code>--enable-multiarch</code></dt>
  <dd><p>Specify whether to enable or disable multiarch support.  The default is
  to check for glibc start files in a multiarch location, and enable it
  if the files are found.  The auto detection is enabled for native builds,
--- 564,592 ----
  above rules.
  </p>
  </dd>
! <dt><span><code><span id="with-gnu-ld"></span>--with-gnu-ld</code></span></dt>
  <dd><p>Same as <a href="#with-gnu-as"><samp>--with-gnu-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><span><code>--with-ld=<var>pathname</var></code></span></dt>
  <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the linker.
  </p>
  </dd>
! <dt><span><code>--with-dsymutil=<var>pathname</var></code></span></dt>
  <dd><p>Same as <a href="#with-as"><samp>--with-as</samp></a>
  but for the debug linker (only used on Darwin platforms so far).
  </p>
  </dd>
! <dt><span><code>--with-tls=<var>dialect</var></code></span></dt>
  <dd><p>Specify the default TLS dialect, for systems were there is a choice.
  For ARM targets, possible values for <var>dialect</var> are <code>gnu</code> or
  <code>gnu2</code>, which select between the original GNU dialect and the GNU TLS
  descriptor-based dialect.
  </p>
  </dd>
! <dt><span><code>--enable-multiarch</code></span></dt>
  <dd><p>Specify whether to enable or disable multiarch support.  The default is
  to check for glibc start files in a multiarch location, and enable it
  if the files are found.  The auto detection is enabled for native builds,
*************** More documentation about multiarch can b
*** 604,616 ****
  <a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
  </p>
  </dd>
! <dt><code>--enable-sjlj-exceptions</code></dt>
  <dd><p>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions.
  &lsquo;<samp>configure</samp>&rsquo; ordinarily picks the correct value based on the platform.
  Only use this option if you are sure you need a different setting.
  </p>
  </dd>
! <dt><code>--enable-vtable-verify</code></dt>
  <dd><p>Specify whether to enable or disable the vtable verification feature.
  Enabling this feature causes libstdc++ to be built with its virtual calls
  in verifiable mode.  This means that, when linked with libvtv, every
--- 596,608 ----
  <a href="https://wiki.debian.org/Multiarch">https://wiki.debian.org/Multiarch</a>.
  </p>
  </dd>
! <dt><span><code>--enable-sjlj-exceptions</code></span></dt>
  <dd><p>Force use of the <code>setjmp</code>/<code>longjmp</code>-based scheme for exceptions.
  &lsquo;<samp>configure</samp>&rsquo; ordinarily picks the correct value based on the platform.
  Only use this option if you are sure you need a different setting.
  </p>
  </dd>
! <dt><span><code>--enable-vtable-verify</code></span></dt>
  <dd><p>Specify whether to enable or disable the vtable verification feature.
  Enabling this feature causes libstdc++ to be built with its virtual calls
  in verifiable mode.  This means that, when linked with libvtv, every
*************** still be built (see <samp>--disable-libv
*** 623,634 ****
  <samp>--disable-vtable-verify</samp> is the default.
  </p>
  </dd>
! <dt><code>--disable-gcov</code></dt>
  <dd><p>Specify that the run-time library used for coverage analysis
  and associated host tools should not be built.
  </p>
  </dd>
! <dt><code>--disable-multilib</code></dt>
  <dd><p>Specify that multiple target
  libraries to support different target variants, calling
  conventions, etc. should not be built.  The default is to build a
--- 615,626 ----
  <samp>--disable-vtable-verify</samp> is the default.
  </p>
  </dd>
! <dt><span><code>--disable-gcov</code></span></dt>
  <dd><p>Specify that the run-time library used for coverage analysis
  and associated host tools should not be built.
  </p>
  </dd>
! <dt><span><code>--disable-multilib</code></span></dt>
  <dd><p>Specify that multiple target
  libraries to support different target variants, calling
  conventions, etc. should not be built.  The default is to build a
*************** predefined set of them.
*** 637,659 ****
  <p>Some targets provide finer-grained control over which multilibs are built
  (e.g., <samp>--disable-softfloat</samp>):
  </p><dl compact="compact">
! <dt><code>arm-*-*</code></dt>
  <dd><p>fpu, 26bit, underscore, interwork, biendian, nofmult.
  </p>
  </dd>
! <dt><code>m68*-*-*</code></dt>
  <dd><p>softfloat, m68881, m68000, m68020.
  </p>
  </dd>
! <dt><code>mips*-*-*</code></dt>
  <dd><p>single-float, biendian, softfloat.
  </p>
  </dd>
! <dt><code>msp430-*-*</code></dt>
  <dd><p>no-exceptions
  </p>
  </dd>
! <dt><code>powerpc*-*-*, rs6000*-*-*</code></dt>
  <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  </p>
--- 629,651 ----
  <p>Some targets provide finer-grained control over which multilibs are built
  (e.g., <samp>--disable-softfloat</samp>):
  </p><dl compact="compact">
! <dt><span><code>arm-*-*</code></span></dt>
  <dd><p>fpu, 26bit, underscore, interwork, biendian, nofmult.
  </p>
  </dd>
! <dt><span><code>m68*-*-*</code></span></dt>
  <dd><p>softfloat, m68881, m68000, m68020.
  </p>
  </dd>
! <dt><span><code>mips*-*-*</code></span></dt>
  <dd><p>single-float, biendian, softfloat.
  </p>
  </dd>
! <dt><span><code>msp430-*-*</code></span></dt>
  <dd><p>no-exceptions
  </p>
  </dd>
! <dt><span><code>powerpc*-*-*, rs6000*-*-*</code></span></dt>
  <dd><p>aix64, pthread, softfloat, powercpu, powerpccpu, powerpcos, biendian,
  sysv, aix.
  </p>
*************** sysv, aix.
*** 661,668 ****
  </dl>
  
  </dd>
! <dt><code>--with-multilib-list=<var>list</var></code></dt>
! <dt><code>--without-multilib-list</code></dt>
  <dd><p>Specify what multilibs to build.  <var>list</var> is a comma separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for aarch64*-*-*, arm*-*-*, loongarch64-*-*, riscv*-*-*, sh*-*-* and
--- 653,660 ----
  </dl>
  
  </dd>
! <dt><span><code>--with-multilib-list=<var>list</var></code></span></dt>
! <dt><span><code>--without-multilib-list</code></span></dt>
  <dd><p>Specify what multilibs to build.  <var>list</var> is a comma separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for aarch64*-*-*, arm*-*-*, loongarch64-*-*, riscv*-*-*, sh*-*-* and
*************** x86-64-*-linux*.  The accepted values an
*** 670,676 ****
  below.
  </p>
  <dl compact="compact">
! <dt><code>aarch64*-*-*</code></dt>
  <dd><p><var>list</var> is a comma separated list of <code>ilp32</code>, and <code>lp64</code>
  to enable ILP32 and LP64 run-time libraries, respectively.  If
  <var>list</var> is empty, then there will be no multilibs and only the
--- 662,668 ----
  below.
  </p>
  <dl compact="compact">
! <dt><span><code>aarch64*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of <code>ilp32</code>, and <code>lp64</code>
  to enable ILP32 and LP64 run-time libraries, respectively.  If
  <var>list</var> is empty, then there will be no multilibs and only the
*************** default set of libraries is selected bas
*** 680,686 ****
  <samp>--target</samp>.
  </p>
  </dd>
! <dt><code>arm*-*-*</code></dt>
  <dd><p><var>list</var> is a comma separated list of <code>aprofile</code> and
  <code>rmprofile</code> to build multilibs for A or R and M architecture
  profiles respectively.  Note that, due to some limitation of the current
--- 672,678 ----
  <samp>--target</samp>.
  </p>
  </dd>
! <dt><span><code>arm*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of <code>aprofile</code> and
  <code>rmprofile</code> to build multilibs for A or R and M architecture
  profiles respectively.  Note that, due to some limitation of the current
*************** profile.  The union of these options is
*** 742,748 ****
  </table>
  
  </dd>
! <dt><code>loongarch*-*-*</code></dt>
  <dd><p><var>list</var> is a comma-separated list of the following ABI identifiers:
  <code>lp64d[/base]</code> <code>lp64f[/base]</code> <code>lp64d[/base]</code>, where the
  <code>/base</code> suffix may be omitted, to enable their respective run-time
--- 734,740 ----
  </table>
  
  </dd>
! <dt><span><code>loongarch*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma-separated list of the following ABI identifiers:
  <code>lp64d[/base]</code> <code>lp64f[/base]</code> <code>lp64d[/base]</code>, where the
  <code>/base</code> suffix may be omitted, to enable their respective run-time
*************** or if <samp>--with-multilib-list</samp>
*** 751,757 ****
  as specified by <samp>--with-abi</samp> or implied by <samp>--target</samp> is selected.
  </p>
  </dd>
! <dt><code>riscv*-*-*</code></dt>
  <dd><p><var>list</var> is a single ABI name.  The target architecture must be either
  <code>rv32gc</code> or <code>rv64gc</code>.  This will build a single multilib for the
  specified architecture and ABI pair.  If <code>--with-multilib-list</code> is not
--- 743,749 ----
  as specified by <samp>--with-abi</samp> or implied by <samp>--target</samp> is selected.
  </p>
  </dd>
! <dt><span><code>riscv*-*-*</code></span></dt>
  <dd><p><var>list</var> is a single ABI name.  The target architecture must be either
  <code>rv32gc</code> or <code>rv64gc</code>.  This will build a single multilib for the
  specified architecture and ABI pair.  If <code>--with-multilib-list</code> is not
*************** given, then a default set of multilibs i
*** 759,765 ****
  <samp>--target</samp>.  This is usually a large set of multilibs.
  </p>
  </dd>
! <dt><code>sh*-*-*</code></dt>
  <dd><p><var>list</var> is a comma separated list of CPU names.  These must be of the
  form <code>sh*</code> or <code>m*</code> (in which case they match the compiler option
  for that processor).  The list should not contain any endian options -
--- 751,757 ----
  <samp>--target</samp>.  This is usually a large set of multilibs.
  </p>
  </dd>
! <dt><span><code>sh*-*-*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of CPU names.  These must be of the
  form <code>sh*</code> or <code>m*</code> (in which case they match the compiler option
  for that processor).  The list should not contain any endian options -
*************** specialized subset.
*** 780,798 ****
  </p>
  <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
! </p><div class="smallexample">
! <pre class="smallexample">--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
  </pre></div>
  
  <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
! </p><div class="smallexample">
! <pre class="smallexample">--with-cpu=sh4a --with-endian=little,big \
  --with-multilib-list=sh4al,!mb/m4al
  </pre></div>
  
  </dd>
! <dt><code>x86-64-*-linux*</code></dt>
  <dd><p><var>list</var> is a comma separated list of <code>m32</code>, <code>m64</code> and
  <code>mx32</code> to enable 32-bit, 64-bit and x32 run-time libraries,
  respectively.  If <var>list</var> is empty, then there will be no multilibs
--- 772,790 ----
  </p>
  <p>Example 1: to configure a compiler for SH4A only, but supporting both
  endians, with little endian being the default:
! </p><div class="example">
! <pre class="example">--with-cpu=sh4a --with-endian=little,big --with-multilib-list=
  </pre></div>
  
  <p>Example 2: to configure a compiler for both SH4A and SH4AL-DSP, but with
  only little endian SH4AL:
! </p><div class="example">
! <pre class="example">--with-cpu=sh4a --with-endian=little,big \
  --with-multilib-list=sh4al,!mb/m4al
  </pre></div>
  
  </dd>
! <dt><span><code>x86-64-*-linux*</code></span></dt>
  <dd><p><var>list</var> is a comma separated list of <code>m32</code>, <code>m64</code> and
  <code>mx32</code> to enable 32-bit, 64-bit and x32 run-time libraries,
  respectively.  If <var>list</var> is empty, then there will be no multilibs
*************** and only the default run-time library wi
*** 804,810 ****
  </dl>
  
  </dd>
! <dt><code>--with-multilib-generator=<var>config</var></code></dt>
  <dd><p>Specify what multilibs to build.  <var>config</var> is a semicolon separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for riscv*-*-elf*.  The accepted values and meanings are given below.
--- 796,802 ----
  </dl>
  
  </dd>
! <dt><span><code>--with-multilib-generator=<var>config</var></code></span></dt>
  <dd><p>Specify what multilibs to build.  <var>config</var> is a semicolon separated list of
  values, possibly consisting of a single value.  Currently only implemented
  for riscv*-*-elf*.  The accepted values and meanings are given below.
*************** for riscv*-*-elf*.  The accepted values
*** 814,838 ****
  reuse rule with architecture string and reuse rule with sub-extension.
  </p>
  <p>Example 1: Add multi-lib suppport for rv32i with ilp32.
! </p><div class="smallexample">
! <pre class="smallexample">rv32i-ilp32--
  </pre></div>
  
  <p>Example 2: Add multi-lib suppport for rv32i with ilp32 and rv32imafd with ilp32.
! </p><div class="smallexample">
! <pre class="smallexample">rv32i-ilp32--;rv32imafd-ilp32--
  </pre></div>
  
  <p>Example 3: Add multi-lib suppport for rv32i with ilp32; rv32im with ilp32 and
  rv32ic with ilp32 will reuse this multi-lib set.
! </p><div class="smallexample">
! <pre class="smallexample">rv32i-ilp32-rv32im-c
  </pre></div>
  
  <p>Example 4: Add multi-lib suppport for rv64ima with lp64; rv64imaf with lp64,
  rv64imac with lp64 and rv64imafc with lp64 will reuse this multi-lib set.
! </p><div class="smallexample">
! <pre class="smallexample">rv64ima-lp64--f,c,fc
  </pre></div>
  
  <p><samp>--with-multilib-generator</samp> have an optional configuration argument
--- 806,830 ----
  reuse rule with architecture string and reuse rule with sub-extension.
  </p>
  <p>Example 1: Add multi-lib suppport for rv32i with ilp32.
! </p><div class="example">
! <pre class="example">rv32i-ilp32--
  </pre></div>
  
  <p>Example 2: Add multi-lib suppport for rv32i with ilp32 and rv32imafd with ilp32.
! </p><div class="example">
! <pre class="example">rv32i-ilp32--;rv32imafd-ilp32--
  </pre></div>
  
  <p>Example 3: Add multi-lib suppport for rv32i with ilp32; rv32im with ilp32 and
  rv32ic with ilp32 will reuse this multi-lib set.
! </p><div class="example">
! <pre class="example">rv32i-ilp32-rv32im-c
  </pre></div>
  
  <p>Example 4: Add multi-lib suppport for rv64ima with lp64; rv64imaf with lp64,
  rv64imac with lp64 and rv64imafc with lp64 will reuse this multi-lib set.
! </p><div class="example">
! <pre class="example">rv64ima-lp64--f,c,fc
  </pre></div>
  
  <p><samp>--with-multilib-generator</samp> have an optional configuration argument
*************** currently we support medlow and medany.
*** 842,880 ****
  </p>
  <p>Example 5: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model
! </p><div class="smallexample">
! <pre class="smallexample">rv64ima-lp64--;--cmodel=medlow
  </pre></div>
  
  <p>Example 6: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model; rv64ima with lp64 and medany code model
! </p><div class="smallexample">
! <pre class="smallexample">rv64ima-lp64--;--cmodel=medlow,medany
  </pre></div>
  
  </dd>
! <dt><code>--with-endian=<var>endians</var></code></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
  </p>
  <p><var>endians</var> may be one of the following:
  </p><dl compact="compact">
! <dt><code>big</code></dt>
  <dd><p>Use big endian exclusively.
  </p></dd>
! <dt><code>little</code></dt>
  <dd><p>Use little endian exclusively.
  </p></dd>
! <dt><code>big,little</code></dt>
  <dd><p>Use big endian by default.  Provide a multilib for little endian.
  </p></dd>
! <dt><code>little,big</code></dt>
  <dd><p>Use little endian by default.  Provide a multilib for big endian.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--enable-threads</code></dt>
  <dd><p>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
  library, and exception handling for other languages like C++.
--- 834,872 ----
  </p>
  <p>Example 5: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model
! </p><div class="example">
! <pre class="example">rv64ima-lp64--;--cmodel=medlow
  </pre></div>
  
  <p>Example 6: Add multi-lib suppport for rv64ima with lp64; rv64ima with lp64 and
  medlow code model; rv64ima with lp64 and medany code model
! </p><div class="example">
! <pre class="example">rv64ima-lp64--;--cmodel=medlow,medany
  </pre></div>
  
  </dd>
! <dt><span><code>--with-endian=<var>endians</var></code></span></dt>
  <dd><p>Specify what endians to use.
  Currently only implemented for sh*-*-*.
  </p>
  <p><var>endians</var> may be one of the following:
  </p><dl compact="compact">
! <dt><span><code>big</code></span></dt>
  <dd><p>Use big endian exclusively.
  </p></dd>
! <dt><span><code>little</code></span></dt>
  <dd><p>Use little endian exclusively.
  </p></dd>
! <dt><span><code>big,little</code></span></dt>
  <dd><p>Use big endian by default.  Provide a multilib for little endian.
  </p></dd>
! <dt><span><code>little,big</code></span></dt>
  <dd><p>Use little endian by default.  Provide a multilib for big endian.
  </p></dd>
  </dl>
  
  </dd>
! <dt><span><code>--enable-threads</code></span></dt>
  <dd><p>Specify that the target
  supports threads.  This affects the Objective-C compiler and runtime
  library, and exception handling for other languages like C++.
*************** available for the system.  In this case,
*** 887,941 ****
  alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code>--disable-threads</code></dt>
  <dd><p>Specify that threading support should be disabled for the system.
  This is an alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><code>--enable-threads=<var>lib</var></code></dt>
  <dd><p>Specify that
  <var>lib</var> is the thread support library.  This affects the Objective-C
  compiler and runtime library, and exception handling for other languages
  like C++.  The possibilities for <var>lib</var> are:
  </p>
  <dl compact="compact">
! <dt><code>aix</code></dt>
  <dd><p>AIX thread support.
  </p></dd>
! <dt><code>dce</code></dt>
  <dd><p>DCE thread support.
  </p></dd>
! <dt><code>lynx</code></dt>
  <dd><p>LynxOS thread support.
  </p></dd>
! <dt><code>mipssde</code></dt>
  <dd><p>MIPS SDE thread support.
  </p></dd>
! <dt><code>no</code></dt>
  <dd><p>This is an alias for &lsquo;<samp>single</samp>&rsquo;.
  </p></dd>
! <dt><code>posix</code></dt>
  <dd><p>Generic POSIX/Unix98 thread support.
  </p></dd>
! <dt><code>rtems</code></dt>
  <dd><p>RTEMS thread support.
  </p></dd>
! <dt><code>single</code></dt>
  <dd><p>Disable thread support, should work for all platforms.
  </p></dd>
! <dt><code>tpf</code></dt>
  <dd><p>TPF thread support.
  </p></dd>
! <dt><code>vxworks</code></dt>
  <dd><p>VxWorks thread support.
  </p></dd>
! <dt><code>win32</code></dt>
  <dd><p>Microsoft Win32 API thread support.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>--enable-tls</code></dt>
  <dd><p>Specify that the target supports TLS (Thread Local Storage).  Usually
  configure can correctly determine if TLS is supported.  In cases where
  it guesses incorrectly, TLS can be explicitly enabled or disabled with
--- 879,933 ----
  alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><span><code>--disable-threads</code></span></dt>
  <dd><p>Specify that threading support should be disabled for the system.
  This is an alias for <samp>--enable-threads=single</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-threads=<var>lib</var></code></span></dt>
  <dd><p>Specify that
  <var>lib</var> is the thread support library.  This affects the Objective-C
  compiler and runtime library, and exception handling for other languages
  like C++.  The possibilities for <var>lib</var> are:
  </p>
  <dl compact="compact">
! <dt><span><code>aix</code></span></dt>
  <dd><p>AIX thread support.
  </p></dd>
! <dt><span><code>dce</code></span></dt>
  <dd><p>DCE thread support.
  </p></dd>
! <dt><span><code>lynx</code></span></dt>
  <dd><p>LynxOS thread support.
  </p></dd>
! <dt><span><code>mipssde</code></span></dt>
  <dd><p>MIPS SDE thread support.
  </p></dd>
! <dt><span><code>no</code></span></dt>
  <dd><p>This is an alias for &lsquo;<samp>single</samp>&rsquo;.
  </p></dd>
! <dt><span><code>posix</code></span></dt>
  <dd><p>Generic POSIX/Unix98 thread support.
  </p></dd>
! <dt><span><code>rtems</code></span></dt>
  <dd><p>RTEMS thread support.
  </p></dd>
! <dt><span><code>single</code></span></dt>
  <dd><p>Disable thread support, should work for all platforms.
  </p></dd>
! <dt><span><code>tpf</code></span></dt>
  <dd><p>TPF thread support.
  </p></dd>
! <dt><span><code>vxworks</code></span></dt>
  <dd><p>VxWorks thread support.
  </p></dd>
! <dt><span><code>win32</code></span></dt>
  <dd><p>Microsoft Win32 API thread support.
  </p></dd>
  </dl>
  
  </dd>
! <dt><span><code>--enable-tls</code></span></dt>
  <dd><p>Specify that the target supports TLS (Thread Local Storage).  Usually
  configure can correctly determine if TLS is supported.  In cases where
  it guesses incorrectly, TLS can be explicitly enabled or disabled with
*************** the assembler supports TLS but the C lib
*** 944,963 ****
  assumptions made by the configure test are incorrect.
  </p>
  </dd>
! <dt><code>--disable-tls</code></dt>
  <dd><p>Specify that the target does not support TLS.
  This is an alias for <samp>--enable-tls=no</samp>.
  </p>
  </dd>
! <dt><code>--disable-tm-clone-registry</code></dt>
  <dd><p>Disable TM clone registry in libgcc. It is enabled in libgcc by default.
  This option helps to reduce code size for embedded targets which do
  not use transactional memory.
  </p>
  </dd>
! <dt><code>--with-cpu=<var>cpu</var></code></dt>
! <dt><code>--with-cpu-32=<var>cpu</var></code></dt>
! <dt><code>--with-cpu-64=<var>cpu</var></code></dt>
  <dd><p>Specify which cpu variant the compiler should generate code for by default.
  <var>cpu</var> will be used as the default value of the <samp>-mcpu=</samp> switch.
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
--- 936,955 ----
  assumptions made by the configure test are incorrect.
  </p>
  </dd>
! <dt><span><code>--disable-tls</code></span></dt>
  <dd><p>Specify that the target does not support TLS.
  This is an alias for <samp>--enable-tls=no</samp>.
  </p>
  </dd>
! <dt><span><code>--disable-tm-clone-registry</code></span></dt>
  <dd><p>Disable TM clone registry in libgcc. It is enabled in libgcc by default.
  This option helps to reduce code size for embedded targets which do
  not use transactional memory.
  </p>
  </dd>
! <dt><span><code>--with-cpu=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-cpu-32=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-cpu-64=<var>cpu</var></code></span></dt>
  <dd><p>Specify which cpu variant the compiler should generate code for by default.
  <var>cpu</var> will be used as the default value of the <samp>-mcpu=</samp> switch.
  This option is only supported on some targets, including ARC, ARM, i386, M68k,
*************** PowerPC, and SPARC.  It is mandatory for
*** 967,982 ****
  x86-64, PowerPC, and SPARC.
  </p>
  </dd>
! <dt><code>--with-schedule=<var>cpu</var></code></dt>
! <dt><code>--with-arch=<var>cpu</var></code></dt>
! <dt><code>--with-arch-32=<var>cpu</var></code></dt>
! <dt><code>--with-arch-64=<var>cpu</var></code></dt>
! <dt><code>--with-tune=<var>cpu</var></code></dt>
! <dt><code>--with-tune-32=<var>cpu</var></code></dt>
! <dt><code>--with-tune-64=<var>cpu</var></code></dt>
! <dt><code>--with-abi=<var>abi</var></code></dt>
! <dt><code>--with-fpu=<var>type</var></code></dt>
! <dt><code>--with-float=<var>type</var></code></dt>
  <dd><p>These configure options provide default values for the <samp>-mschedule=</samp>,
  <samp>-march=</samp>, <samp>-mtune=</samp>, <samp>-mabi=</samp>, and <samp>-mfpu=</samp>
  options and for <samp>-mhard-float</samp> or <samp>-msoft-float</samp>.  As with
--- 959,974 ----
  x86-64, PowerPC, and SPARC.
  </p>
  </dd>
! <dt><span><code>--with-schedule=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-arch=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-arch-32=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-arch-64=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-tune=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-tune-32=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-tune-64=<var>cpu</var></code></span></dt>
! <dt><span><code>--with-abi=<var>abi</var></code></span></dt>
! <dt><span><code>--with-fpu=<var>type</var></code></span></dt>
! <dt><span><code>--with-float=<var>type</var></code></span></dt>
  <dd><p>These configure options provide default values for the <samp>-mschedule=</samp>,
  <samp>-march=</samp>, <samp>-mtune=</samp>, <samp>-mabi=</samp>, and <samp>-mfpu=</samp>
  options and for <samp>-mhard-float</samp> or <samp>-msoft-float</samp>.  As with
*************** options and for <samp>-mhard-float</samp
*** 984,1020 ****
  of the arguments depend on the target.
  </p>
  </dd>
! <dt><code>--with-mode=<var>mode</var></code></dt>
  <dd><p>Specify if the compiler should default to <samp>-marm</samp> or <samp>-mthumb</samp>.
  This option is only supported on ARM targets.
  </p>
  </dd>
! <dt><code>--with-stack-offset=<var>num</var></code></dt>
  <dd><p>This option sets the default for the -mstack-offset=<var>num</var> option,
  and will thus generally also control the setting of this option for
  libraries.  This option is only supported on Epiphany targets.
  </p>
  </dd>
! <dt><code>--with-fpmath=<var>isa</var></code></dt>
  <dd><p>This options sets <samp>-mfpmath=sse</samp> by default and specifies the default
  ISA for floating-point arithmetics.  You can select either &lsquo;<samp>sse</samp>&rsquo; which
  enables <samp>-msse2</samp> or &lsquo;<samp>avx</samp>&rsquo; which enables <samp>-mavx</samp> by default.
  This option is only supported on i386 and x86-64 targets.
  </p>
  </dd>
! <dt><code>--with-fp-32=<var>mode</var></code></dt>
  <dd><p>On MIPS targets, set the default value for the <samp>-mfp</samp> option when using
  the o32 ABI.  The possibilities for <var>mode</var> are:
  </p><dl compact="compact">
! <dt><code>32</code></dt>
  <dd><p>Use the o32 FP32 ABI extension, as with the <samp>-mfp32</samp> command-line
  option.
  </p></dd>
! <dt><code>xx</code></dt>
  <dd><p>Use the o32 FPXX ABI extension, as with the <samp>-mfpxx</samp> command-line
  option.
  </p></dd>
! <dt><code>64</code></dt>
  <dd><p>Use the o32 FP64 ABI extension, as with the <samp>-mfp64</samp> command-line
  option.
  </p></dd>
--- 976,1012 ----
  of the arguments depend on the target.
  </p>
  </dd>
! <dt><span><code>--with-mode=<var>mode</var></code></span></dt>
  <dd><p>Specify if the compiler should default to <samp>-marm</samp> or <samp>-mthumb</samp>.
  This option is only supported on ARM targets.
  </p>
  </dd>
! <dt><span><code>--with-stack-offset=<var>num</var></code></span></dt>
  <dd><p>This option sets the default for the -mstack-offset=<var>num</var> option,
  and will thus generally also control the setting of this option for
  libraries.  This option is only supported on Epiphany targets.
  </p>
  </dd>
! <dt><span><code>--with-fpmath=<var>isa</var></code></span></dt>
  <dd><p>This options sets <samp>-mfpmath=sse</samp> by default and specifies the default
  ISA for floating-point arithmetics.  You can select either &lsquo;<samp>sse</samp>&rsquo; which
  enables <samp>-msse2</samp> or &lsquo;<samp>avx</samp>&rsquo; which enables <samp>-mavx</samp> by default.
  This option is only supported on i386 and x86-64 targets.
  </p>
  </dd>
! <dt><span><code>--with-fp-32=<var>mode</var></code></span></dt>
  <dd><p>On MIPS targets, set the default value for the <samp>-mfp</samp> option when using
  the o32 ABI.  The possibilities for <var>mode</var> are:
  </p><dl compact="compact">
! <dt><span><code>32</code></span></dt>
  <dd><p>Use the o32 FP32 ABI extension, as with the <samp>-mfp32</samp> command-line
  option.
  </p></dd>
! <dt><span><code>xx</code></span></dt>
  <dd><p>Use the o32 FPXX ABI extension, as with the <samp>-mfpxx</samp> command-line
  option.
  </p></dd>
! <dt><span><code>64</code></span></dt>
  <dd><p>Use the o32 FP64 ABI extension, as with the <samp>-mfp64</samp> command-line
  option.
  </p></dd>
*************** option.
*** 1023,1049 ****
  FP32 ABI extension.
  </p>
  </dd>
! <dt><code>--with-odd-spreg-32</code></dt>
  <dd><p>On MIPS targets, set the <samp>-modd-spreg</samp> option by default when using
  the o32 ABI.
  </p>
  </dd>
! <dt><code>--without-odd-spreg-32</code></dt>
  <dd><p>On MIPS targets, set the <samp>-mno-odd-spreg</samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
  <samp>--with-fp-32=64</samp> in order to target the o32 FP64A ABI extension.
  </p>
  </dd>
! <dt><code>--with-nan=<var>encoding</var></code></dt>
  <dd><p>On MIPS targets, set the default encoding convention to use for the
  special not-a-number (NaN) IEEE 754 floating-point data.  The
  possibilities for <var>encoding</var> are:
  </p><dl compact="compact">
! <dt><code>legacy</code></dt>
  <dd><p>Use the legacy encoding, as with the <samp>-mnan=legacy</samp> command-line
  option.
  </p></dd>
! <dt><code>2008</code></dt>
  <dd><p>Use the 754-2008 encoding, as with the <samp>-mnan=2008</samp> command-line
  option.
  </p></dd>
--- 1015,1041 ----
  FP32 ABI extension.
  </p>
  </dd>
! <dt><span><code>--with-odd-spreg-32</code></span></dt>
  <dd><p>On MIPS targets, set the <samp>-modd-spreg</samp> option by default when using
  the o32 ABI.
  </p>
  </dd>
! <dt><span><code>--without-odd-spreg-32</code></span></dt>
  <dd><p>On MIPS targets, set the <samp>-mno-odd-spreg</samp> option by default when using
  the o32 ABI.  This is normally used in conjunction with
  <samp>--with-fp-32=64</samp> in order to target the o32 FP64A ABI extension.
  </p>
  </dd>
! <dt><span><code>--with-nan=<var>encoding</var></code></span></dt>
  <dd><p>On MIPS targets, set the default encoding convention to use for the
  special not-a-number (NaN) IEEE 754 floating-point data.  The
  possibilities for <var>encoding</var> are:
  </p><dl compact="compact">
! <dt><span><code>legacy</code></span></dt>
  <dd><p>Use the legacy encoding, as with the <samp>-mnan=legacy</samp> command-line
  option.
  </p></dd>
! <dt><span><code>2008</code></span></dt>
  <dd><p>Use the 754-2008 encoding, as with the <samp>-mnan=2008</samp> command-line
  option.
  </p></dd>
*************** the legacy encoding, as when neither of
*** 1055,1104 ****
  <samp>-mnan=legacy</samp> command-line options has been used.
  </p>
  </dd>
! <dt><code>--with-divide=<var>type</var></code></dt>
  <dd><p>Specify how the compiler should generate code for checking for
  division by zero.  This option is only supported on the MIPS target.
  The possibilities for <var>type</var> are:
  </p><dl compact="compact">
! <dt><code>traps</code></dt>
  <dd><p>Division by zero checks use conditional traps (this is the default on
  systems that support conditional traps).
  </p></dd>
! <dt><code>breaks</code></dt>
  <dd><p>Division by zero checks use the break instruction.
  </p></dd>
  </dl>
  
  
  </dd>
! <dt><code>--with-llsc</code></dt>
  <dd><p>On MIPS targets, make <samp>-mllsc</samp> the default when no
  <samp>-mno-llsc</samp> option is passed.  This is the default for
  Linux-based targets, as the kernel will emulate them if the ISA does
  not provide them.
  </p>
  </dd>
! <dt><code>--without-llsc</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-llsc</samp> the default when no
  <samp>-mllsc</samp> option is passed.
  </p>
  </dd>
! <dt><code>--with-synci</code></dt>
  <dd><p>On MIPS targets, make <samp>-msynci</samp> the default when no
  <samp>-mno-synci</samp> option is passed.
  </p>
  </dd>
! <dt><code>--without-synci</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-synci</samp> the default when no
  <samp>-msynci</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--with-lxc1-sxc1</code></dt>
  <dd><p>On MIPS targets, make <samp>-mlxc1-sxc1</samp> the default when no
  <samp>-mno-lxc1-sxc1</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--without-lxc1-sxc1</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-lxc1-sxc1</samp> the default when no
  <samp>-mlxc1-sxc1</samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
--- 1047,1119 ----
  <samp>-mnan=legacy</samp> command-line options has been used.
  </p>
  </dd>
! <dt><span><code>--with-divide=<var>type</var></code></span></dt>
  <dd><p>Specify how the compiler should generate code for checking for
  division by zero.  This option is only supported on the MIPS target.
  The possibilities for <var>type</var> are:
  </p><dl compact="compact">
! <dt><span><code>traps</code></span></dt>
  <dd><p>Division by zero checks use conditional traps (this is the default on
  systems that support conditional traps).
  </p></dd>
! <dt><span><code>breaks</code></span></dt>
  <dd><p>Division by zero checks use the break instruction.
  </p></dd>
  </dl>
  
+ </dd>
+ <dt><span><code>--with-compact-branches=<var>policy</var></code></span></dt>
+ <dd><p>Specify how the compiler should generate branch instructions.
+ This option is only supported on the MIPS target.
+ The possibilities for <var>type</var> are:
+ </p><dl compact="compact">
+ <dt><span><code>optimal</code></span></dt>
+ <dd><p>Cause a delay slot branch to be used if one is available in the
+ current ISA and the delay slot is successfully filled. If the delay slot
+ is not filled, a compact branch will be chosen if one is available.
+ </p></dd>
+ <dt><span><code>never</code></span></dt>
+ <dd><p>Ensures that compact branch instructions will never be generated.
+ </p></dd>
+ <dt><span><code>always</code></span></dt>
+ <dd><p>Ensures that a compact branch instruction will be generated if available.
+ If a compact branch instruction is not available,
+ a delay slot form of the branch will be used instead.
+ This option is supported from MIPS Release 6 onwards.
+ For pre-R6/microMIPS/MIPS16, this option is just same as never/optimal.
+ </p></dd>
+ </dl>
+ 
  
  </dd>
! <dt><span><code>--with-llsc</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mllsc</samp> the default when no
  <samp>-mno-llsc</samp> option is passed.  This is the default for
  Linux-based targets, as the kernel will emulate them if the ISA does
  not provide them.
  </p>
  </dd>
! <dt><span><code>--without-llsc</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-llsc</samp> the default when no
  <samp>-mllsc</samp> option is passed.
  </p>
  </dd>
! <dt><span><code>--with-synci</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-msynci</samp> the default when no
  <samp>-mno-synci</samp> option is passed.
  </p>
  </dd>
! <dt><span><code>--without-synci</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-synci</samp> the default when no
  <samp>-msynci</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><span><code>--with-lxc1-sxc1</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mlxc1-sxc1</samp> the default when no
  <samp>-mno-lxc1-sxc1</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><span><code>--without-lxc1-sxc1</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-lxc1-sxc1</samp> the default when no
  <samp>-mlxc1-sxc1</samp> option is passed.  The indexed load/store
  instructions are not directly a problem but can lead to unexpected
*************** pure 32-bit environment and can hold tru
*** 1114,1125 ****
  the address space is accurately set to be 32-bit for o32 and n32.
  </p>
  </dd>
! <dt><code>--with-madd4</code></dt>
  <dd><p>On MIPS targets, make <samp>-mmadd4</samp> the default when no
  <samp>-mno-madd4</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><code>--without-madd4</code></dt>
  <dd><p>On MIPS targets, make <samp>-mno-madd4</samp> the default when no
  <samp>-mmadd4</samp> option is passed.  The <code>madd4</code> instruction
  family can be problematic when targeting a combination of cores that
--- 1129,1140 ----
  the address space is accurately set to be 32-bit for o32 and n32.
  </p>
  </dd>
! <dt><span><code>--with-madd4</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mmadd4</samp> the default when no
  <samp>-mno-madd4</samp> option is passed.  This is the default.
  </p>
  </dd>
! <dt><span><code>--without-madd4</code></span></dt>
  <dd><p>On MIPS targets, make <samp>-mno-madd4</samp> the default when no
  <samp>-mmadd4</samp> option is passed.  The <code>madd4</code> instruction
  family can be problematic when targeting a combination of cores that
*************** only way to ensure compatible code is ge
*** 1130,1167 ****
  a performance penalty.
  </p>
  </dd>
! <dt><code>--with-mips-plt</code></dt>
  <dd><p>On MIPS targets, make use of copy relocations and PLTs.
  These features are extensions to the traditional
  SVR4-based MIPS ABIs and require support from GNU binutils
  and the runtime C library.
  </p>
  </dd>
! <dt><code>--with-stack-clash-protection-guard-size=<var>size</var></code></dt>
  <dd><p>On certain targets this option sets the default stack clash protection guard
  size as a power of two in bytes.  On AArch64 <var>size</var> is required to be either
  12 (4KB) or 16 (64KB).
  </p>
  </dd>
! <dt><code>--with-isa-spec=<var>ISA-spec-string</var></code></dt>
  <dd><p>On RISC-V targets specify the default version of the RISC-V Unprivileged
  (formerly User-Level) ISA specification to produce code conforming to.
  The possibilities for <var>ISA-spec-string</var> are:
  </p><dl compact="compact">
! <dt><code>2.2</code></dt>
  <dd><p>Produce code conforming to version 2.2.
  </p></dd>
! <dt><code>20190608</code></dt>
  <dd><p>Produce code conforming to version 20190608.
  </p></dd>
! <dt><code>20191213</code></dt>
  <dd><p>Produce code conforming to version 20191213.
  </p></dd>
  </dl>
  <p>In the absence of this configuration option the default version is 20191213.
  </p>
  </dd>
! <dt><code>--enable-__cxa_atexit</code></dt>
  <dd><p>Define if you want to use __cxa_atexit, rather than atexit, to
  register C++ destructors for local statics and global objects.
  This is essential for fully standards-compliant handling of
--- 1145,1192 ----
  a performance penalty.
  </p>
  </dd>
! <dt><span><code>--with-msa</code></span></dt>
! <dd><p>On MIPS targets, make <samp>-mmsa</samp> the default when no
! <samp>-mno-msa</samp> option is passed.
! </p>
! </dd>
! <dt><span><code>--without-msa</code></span></dt>
! <dd><p>On MIPS targets, make <samp>-mno-msa</samp> the default when no
! <samp>-mmsa</samp> option is passed. This is the default.
! </p>
! </dd>
! <dt><span><code>--with-mips-plt</code></span></dt>
  <dd><p>On MIPS targets, make use of copy relocations and PLTs.
  These features are extensions to the traditional
  SVR4-based MIPS ABIs and require support from GNU binutils
  and the runtime C library.
  </p>
  </dd>
! <dt><span><code>--with-stack-clash-protection-guard-size=<var>size</var></code></span></dt>
  <dd><p>On certain targets this option sets the default stack clash protection guard
  size as a power of two in bytes.  On AArch64 <var>size</var> is required to be either
  12 (4KB) or 16 (64KB).
  </p>
  </dd>
! <dt><span><code>--with-isa-spec=<var>ISA-spec-string</var></code></span></dt>
  <dd><p>On RISC-V targets specify the default version of the RISC-V Unprivileged
  (formerly User-Level) ISA specification to produce code conforming to.
  The possibilities for <var>ISA-spec-string</var> are:
  </p><dl compact="compact">
! <dt><span><code>2.2</code></span></dt>
  <dd><p>Produce code conforming to version 2.2.
  </p></dd>
! <dt><span><code>20190608</code></span></dt>
  <dd><p>Produce code conforming to version 20190608.
  </p></dd>
! <dt><span><code>20191213</code></span></dt>
  <dd><p>Produce code conforming to version 20191213.
  </p></dd>
  </dl>
  <p>In the absence of this configuration option the default version is 20191213.
  </p>
  </dd>
! <dt><span><code>--enable-__cxa_atexit</code></span></dt>
  <dd><p>Define if you want to use __cxa_atexit, rather than atexit, to
  register C++ destructors for local statics and global objects.
  This is essential for fully standards-compliant handling of
*************** only available on systems with GNU libc.
*** 1170,1197 ****
  <samp>-fuse-cxa-atexit</samp> to be passed by default.
  </p>
  </dd>
! <dt><code>--enable-gnu-indirect-function</code></dt>
  <dd><p>Define if you want to enable the <code>ifunc</code> attribute.  This option is
  currently only available on systems with GNU libc on certain targets.
  </p>
  </dd>
! <dt><code>--enable-target-optspace</code></dt>
  <dd><p>Specify that target
  libraries should be optimized for code space instead of code speed.
  This is the default for the m32r platform.
  </p>
  </dd>
! <dt><code>--with-cpp-install-dir=<var>dirname</var></code></dt>
  <dd><p>Specify that the user visible <code>cpp</code> program should be installed
  in <samp><var>prefix</var>/<var>dirname</var>/cpp</samp>, in addition to <var>bindir</var>.
  </p>
  </dd>
! <dt><code>--enable-comdat</code></dt>
  <dd><p>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
  </p>
  </dd>
! <dt><code>--enable-initfini-array</code></dt>
  <dd><p>Force the use of sections <code>.init_array</code> and <code>.fini_array</code>
  (instead of <code>.init</code> and <code>.fini</code>) for constructors and
  destructors.  Option <samp>--disable-initfini-array</samp> has the
--- 1195,1222 ----
  <samp>-fuse-cxa-atexit</samp> to be passed by default.
  </p>
  </dd>
! <dt><span><code>--enable-gnu-indirect-function</code></span></dt>
  <dd><p>Define if you want to enable the <code>ifunc</code> attribute.  This option is
  currently only available on systems with GNU libc on certain targets.
  </p>
  </dd>
! <dt><span><code>--enable-target-optspace</code></span></dt>
  <dd><p>Specify that target
  libraries should be optimized for code space instead of code speed.
  This is the default for the m32r platform.
  </p>
  </dd>
! <dt><span><code>--with-cpp-install-dir=<var>dirname</var></code></span></dt>
  <dd><p>Specify that the user visible <code>cpp</code> program should be installed
  in <samp><var>prefix</var>/<var>dirname</var>/cpp</samp>, in addition to <var>bindir</var>.
  </p>
  </dd>
! <dt><span><code>--enable-comdat</code></span></dt>
  <dd><p>Enable COMDAT group support.  This is primarily used to override the
  automatically detected value.
  </p>
  </dd>
! <dt><span><code>--enable-initfini-array</code></span></dt>
  <dd><p>Force the use of sections <code>.init_array</code> and <code>.fini_array</code>
  (instead of <code>.init</code> and <code>.fini</code>) for constructors and
  destructors.  Option <samp>--disable-initfini-array</samp> has the
*************** will try to guess whether the <code>.ini
*** 1200,1212 ****
  <code>.fini_array</code> sections are supported and, if they are, use them.
  </p>
  </dd>
! <dt><code>--enable-link-mutex</code></dt>
  <dd><p>When building GCC, use a mutex to avoid linking the compilers for
  multiple languages at the same time, to avoid thrashing on build
  systems with limited free memory.  The default is not to use such a mutex.
  </p>
  </dd>
! <dt><code>--enable-link-serialization</code></dt>
  <dd><p>When building GCC, use make dependencies to serialize linking the compilers for
  multiple languages, to avoid thrashing on build
  systems with limited free memory.  The default is not to add such
--- 1225,1237 ----
  <code>.fini_array</code> sections are supported and, if they are, use them.
  </p>
  </dd>
! <dt><span><code>--enable-link-mutex</code></span></dt>
  <dd><p>When building GCC, use a mutex to avoid linking the compilers for
  multiple languages at the same time, to avoid thrashing on build
  systems with limited free memory.  The default is not to use such a mutex.
  </p>
  </dd>
! <dt><span><code>--enable-link-serialization</code></span></dt>
  <dd><p>When building GCC, use make dependencies to serialize linking the compilers for
  multiple languages, to avoid thrashing on build
  systems with limited free memory.  The default is not to add such
*************** compilers concurrently.  If the argument
*** 1215,1221 ****
  that number of concurrent link processes for the large binaries.
  </p>
  </dd>
! <dt><code>--enable-maintainer-mode</code></dt>
  <dd><p>The build rules that regenerate the Autoconf and Automake output files as
  well as the GCC master message catalog <samp>gcc.pot</samp> are normally
  disabled.  This is because it can only be rebuilt if the complete source
--- 1240,1246 ----
  that number of concurrent link processes for the large binaries.
  </p>
  </dd>
! <dt><span><code>--enable-maintainer-mode</code></span></dt>
  <dd><p>The build rules that regenerate the Autoconf and Automake output files as
  well as the GCC master message catalog <samp>gcc.pot</samp> are normally
  disabled.  This is because it can only be rebuilt if the complete source
*************** this.  Note that you need a recent versi
*** 1225,1238 ****
  to do so.
  </p>
  </dd>
! <dt><code>--disable-bootstrap</code></dt>
  <dd><p>For a native build, the default configuration is to perform
  a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked,
  testing that GCC can compile itself correctly.  If you want to disable
  this process, you can configure with <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--enable-bootstrap</code></dt>
  <dd><p>In special cases, you may want to perform a 3-stage build
  even if the target and host triplets are different.
  This is possible when the host can run code compiled for
--- 1250,1263 ----
  to do so.
  </p>
  </dd>
! <dt><span><code>--disable-bootstrap</code></span></dt>
  <dd><p>For a native build, the default configuration is to perform
  a 3-stage bootstrap of the compiler when &lsquo;<samp>make</samp>&rsquo; is invoked,
  testing that GCC can compile itself correctly.  If you want to disable
  this process, you can configure with <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-bootstrap</code></span></dt>
  <dd><p>In special cases, you may want to perform a 3-stage build
  even if the target and host triplets are different.
  This is possible when the host can run code compiled for
*************** Starting from GCC 4.2, to do this you ha
*** 1241,1247 ****
  with <samp>--enable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--enable-generated-files-in-srcdir</code></dt>
  <dd><p>Neither the .c and .h files that are generated from Bison and flex nor the
  info manuals and man pages that are built from the .texi files are present
  in the repository development tree.  When building GCC from that development tree,
--- 1266,1272 ----
  with <samp>--enable-bootstrap</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-generated-files-in-srcdir</code></span></dt>
  <dd><p>Neither the .c and .h files that are generated from Bison and flex nor the
  info manuals and man pages that are built from the .texi files are present
  in the repository development tree.  When building GCC from that development tree,
*************** is not a requirement that the users of s
*** 1256,1262 ****
  or makeinfo.
  </p>
  </dd>
! <dt><code>--enable-version-specific-runtime-libs</code></dt>
  <dd><p>Specify
  that runtime libraries should be installed in the compiler specific
  subdirectory (<samp><var>libdir</var>/gcc</samp>) rather than the usual places.  In
--- 1281,1287 ----
  or makeinfo.
  </p>
  </dd>
! <dt><span><code>--enable-version-specific-runtime-libs</code></span></dt>
  <dd><p>Specify
  that runtime libraries should be installed in the compiler specific
  subdirectory (<samp><var>libdir</var>/gcc</samp>) rather than the usual places.  In
*************** parallel.  The default is &lsquo;<samp>y
*** 1268,1274 ****
  the remaining libraries.
  </p>
  </dd>
! <dt><code><a name="WithAixSoname"></a>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;, &lsquo;<samp>svr4</samp>&rsquo; or &lsquo;<samp>both</samp>&rsquo;</code></dt>
  <dd><p>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files named
  &lsquo;<samp>lib.a</samp>&rsquo;) causes numerous headaches for package managers. However,
--- 1293,1299 ----
  the remaining libraries.
  </p>
  </dd>
! <dt><span><code><span id="WithAixSoname"></span>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;, &lsquo;<samp>svr4</samp>&rsquo; or &lsquo;<samp>both</samp>&rsquo;</code></span></dt>
  <dd><p>Traditional AIX shared library versioning (versioned <code>Shared Object</code>
  files as members of unversioned <code>Archive Library</code> files named
  &lsquo;<samp>lib.a</samp>&rsquo;) causes numerous headaches for package managers. However,
*************** where this is called the &quot;SONAME&qu
*** 1279,1292 ****
  linker does search for &lsquo;<samp>libNAME.so</samp>&rsquo; before &lsquo;<samp>libNAME.a</samp>&rsquo; library
  filenames with the &lsquo;<samp>-lNAME</samp>&rsquo; linker flag.
  </p>
! <a name="AixLdCommand"></a><p>For detailed information please refer to the AIX
  <a href="https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld
  Command</a> reference.
  </p>
  <p>As long as shared library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><code>--with-aix-soname=aix</code></dt>
! <dt><code>--with-aix-soname=both</code></dt>
  <dd><p>A (traditional AIX) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
--- 1304,1317 ----
  linker does search for &lsquo;<samp>libNAME.so</samp>&rsquo; before &lsquo;<samp>libNAME.a</samp>&rsquo; library
  filenames with the &lsquo;<samp>-lNAME</samp>&rsquo; linker flag.
  </p>
! <span id="AixLdCommand"></span><p>For detailed information please refer to the AIX
  <a href="https://www.ibm.com/support/knowledgecenter/search/%22the%20ld%20command%2C%20also%20called%20the%20linkage%20editor%20or%20binder%22">ld
  Command</a> reference.
  </p>
  <p>As long as shared library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><span><code>--with-aix-soname=aix</code></span></dt>
! <dt><span><code>--with-aix-soname=both</code></span></dt>
  <dd><p>A (traditional AIX) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
*************** Command</a> reference.
*** 1303,1310 ****
    </li></ul>
  </li></ul>
  </dd>
! <dt><code>--with-aix-soname=both</code></dt>
! <dt><code>--with-aix-soname=svr4</code></dt>
  <dd><p>A (second) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.so.V</samp>&rsquo; filename scheme
--- 1328,1335 ----
    </li></ul>
  </li></ul>
  </dd>
! <dt><span><code>--with-aix-soname=both</code></span></dt>
! <dt><span><code>--with-aix-soname=svr4</code></span></dt>
  <dd><p>A (second) <code>Shared Archive Library</code> file is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.so.V</samp>&rsquo; filename scheme
*************** Command</a> reference.
*** 1342,1348 ****
  
  <p>As long as static library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><code>--with-aix-soname=svr4</code></dt>
  <dd><p>A <code>Static Archive Library</code> is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
--- 1367,1373 ----
  
  <p>As long as static library creation is enabled, upon:
  </p><dl compact="compact">
! <dt><span><code>--with-aix-soname=svr4</code></span></dt>
  <dd><p>A <code>Static Archive Library</code> is created:
   </p><ul>
  <li> using the &lsquo;<samp>libNAME.a</samp>&rsquo; filename scheme
*************** this option is still experimental and no
*** 1374,1394 ****
  <p>Default is the traditional behavior <samp>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;</samp>.
  </p>
  </dd>
! <dt><code>--enable-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that only a particular subset of compilers and
  their runtime libraries should be built.  For a list of valid values for
  <var>langN</var> you can issue the following command in the
  <samp>gcc</samp> directory of your GCC source tree:<br>
! </p><div class="smallexample">
! <pre class="smallexample">grep ^language= */config-lang.in
  </pre></div>
  <p>Currently, you can use any of the following:
  <code>all</code>, <code>default</code>, <code>ada</code>, <code>c</code>, <code>c++</code>, <code>d</code>,
! <code>fortran</code>, <code>go</code>, <code>jit</code>, <code>lto</code>, <code>objc</code>, <code>obj-c++</code>.
  Building the Ada compiler has special requirements, see below.
  If you do not pass this flag, or specify the option <code>default</code>, then the
  default languages available in the <samp>gcc</samp> sub-tree will be configured.
! Ada, D, Go, Jit, and Objective-C++ are not default languages.  LTO is not a
  default language, but is built by default because <samp>--enable-lto</samp> is
  enabled by default.  The other languages are default languages.  If
  <code>all</code> is specified, then all available languages are built.  An
--- 1399,1421 ----
  <p>Default is the traditional behavior <samp>--with-aix-soname=&lsquo;<samp>aix</samp>&rsquo;</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></span></dt>
  <dd><p>Specify that only a particular subset of compilers and
  their runtime libraries should be built.  For a list of valid values for
  <var>langN</var> you can issue the following command in the
  <samp>gcc</samp> directory of your GCC source tree:<br>
! </p><div class="example">
! <pre class="example">grep ^language= */config-lang.in
  </pre></div>
  <p>Currently, you can use any of the following:
  <code>all</code>, <code>default</code>, <code>ada</code>, <code>c</code>, <code>c++</code>, <code>d</code>,
! <code>fortran</code>, <code>go</code>, <code>jit</code>, <code>lto</code>, <code>m2</code>,
! <code>objc</code>, <code>obj-c++</code>.
  Building the Ada compiler has special requirements, see below.
  If you do not pass this flag, or specify the option <code>default</code>, then the
  default languages available in the <samp>gcc</samp> sub-tree will be configured.
! Ada, D, Go, Jit, Objective-C++ and Modula-2 are not default languages.
! LTO is not a
  default language, but is built by default because <samp>--enable-lto</samp> is
  enabled by default.  The other languages are default languages.  If
  <code>all</code> is specified, then all available languages are built.  An
*************** exception is <code>jit</code> language,
*** 1396,1402 ****
  <samp>--enable-host-shared</samp> to be included with <code>all</code>.
  </p>
  </dd>
! <dt><code>--enable-stage1-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></dt>
  <dd><p>Specify that a particular subset of compilers and their runtime
  libraries should be built with the system C compiler during stage 1 of
  the bootstrap process, rather than only in later stages with the
--- 1423,1429 ----
  <samp>--enable-host-shared</samp> to be included with <code>all</code>.
  </p>
  </dd>
! <dt><span><code>--enable-stage1-languages=<var>lang1</var>,<var>lang2</var>,&hellip;</code></span></dt>
  <dd><p>Specify that a particular subset of compilers and their runtime
  libraries should be built with the system C compiler during stage 1 of
  the bootstrap process, rather than only in later stages with the
*************** stage1-bubble all-target</code>, or run
*** 1412,1463 ****
  for the specified languages using <code>make stage1-start check-gcc</code>.
  </p>
  </dd>
! <dt><code>--disable-libada</code></dt>
  <dd><p>Specify that the run-time libraries and tools used by GNAT should not
  be built.  This can be useful for debugging, or for compatibility with
  previous Ada build procedures, when it was required to explicitly
  do a &lsquo;<samp>make -C gcc gnatlib_and_tools</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--disable-libsanitizer</code></dt>
  <dd><p>Specify that the run-time libraries for the various sanitizers should
  not be built.
  </p>
  </dd>
! <dt><code>--disable-libssp</code></dt>
  <dd><p>Specify that the run-time libraries for stack smashing protection
  should not be built or linked against.  On many targets library support
  is provided by the C library instead.
  </p>
  </dd>
! <dt><code>--disable-libquadmath</code></dt>
  <dd><p>Specify that the GCC quad-precision math library should not be built.
  On some systems, the library is required to be linkable when building
  the Fortran front end, unless <samp>--disable-libquadmath-support</samp>
  is used.
  </p>
  </dd>
! <dt><code>--disable-libquadmath-support</code></dt>
  <dd><p>Specify that the Fortran front end and <code>libgfortran</code> do not add
  support for <code>libquadmath</code> on systems supporting it.
  </p>
  </dd>
! <dt><code>--disable-libgomp</code></dt>
  <dd><p>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
  </p>
  </dd>
! <dt><code>--disable-libvtv</code></dt>
  <dd><p>Specify that the run-time libraries used by vtable verification
  should not be built.
  </p>
  </dd>
! <dt><code>--with-dwarf2</code></dt>
  <dd><p>Specify that the compiler should
! use DWARF 2 debugging information as the default.
  </p>
  </dd>
! <dt><code>--with-advance-toolchain=<var>at</var></code></dt>
  <dd><p>On 64-bit PowerPC Linux systems, configure the compiler to use the
  header files, library files, and the dynamic linker from the Advance
  Toolchain release <var>at</var> instead of the default versions that are
--- 1439,1496 ----
  for the specified languages using <code>make stage1-start check-gcc</code>.
  </p>
  </dd>
! <dt><span><code>--disable-libada</code></span></dt>
  <dd><p>Specify that the run-time libraries and tools used by GNAT should not
  be built.  This can be useful for debugging, or for compatibility with
  previous Ada build procedures, when it was required to explicitly
  do a &lsquo;<samp>make -C gcc gnatlib_and_tools</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--disable-libgm2</code></span></dt>
! <dd><p>Specify that the run-time libraries and tools used by Modula-2 should not
! be built.  This can be useful for debugging.
! </p>
! </dd>
! <dt><span><code>--disable-libsanitizer</code></span></dt>
  <dd><p>Specify that the run-time libraries for the various sanitizers should
  not be built.
  </p>
  </dd>
! <dt><span><code>--disable-libssp</code></span></dt>
  <dd><p>Specify that the run-time libraries for stack smashing protection
  should not be built or linked against.  On many targets library support
  is provided by the C library instead.
  </p>
  </dd>
! <dt><span><code>--disable-libquadmath</code></span></dt>
  <dd><p>Specify that the GCC quad-precision math library should not be built.
  On some systems, the library is required to be linkable when building
  the Fortran front end, unless <samp>--disable-libquadmath-support</samp>
  is used.
  </p>
  </dd>
! <dt><span><code>--disable-libquadmath-support</code></span></dt>
  <dd><p>Specify that the Fortran front end and <code>libgfortran</code> do not add
  support for <code>libquadmath</code> on systems supporting it.
  </p>
  </dd>
! <dt><span><code>--disable-libgomp</code></span></dt>
  <dd><p>Specify that the GNU Offloading and Multi Processing Runtime Library
  should not be built.
  </p>
  </dd>
! <dt><span><code>--disable-libvtv</code></span></dt>
  <dd><p>Specify that the run-time libraries used by vtable verification
  should not be built.
  </p>
  </dd>
! <dt><span><code>--with-dwarf2</code></span></dt>
  <dd><p>Specify that the compiler should
! use DWARF debugging information as the default; the exact
! DWARF version that is the default is target-specific.
  </p>
  </dd>
! <dt><span><code>--with-advance-toolchain=<var>at</var></code></span></dt>
  <dd><p>On 64-bit PowerPC Linux systems, configure the compiler to use the
  header files, library files, and the dynamic linker from the Advance
  Toolchain release <var>at</var> instead of the default versions that are
*************** intended for the developers of GCC, and
*** 1466,1473 ****
  use.
  </p>
  </dd>
! <dt><code>--enable-targets=all</code></dt>
! <dt><code>--enable-targets=<var>target_list</var></code></dt>
  <dd><p>Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
  These are compilers that are able to generate either 64-bit or 32-bit
  code.  Typically, the corresponding 32-bit target, e.g.
--- 1499,1506 ----
  use.
  </p>
  </dd>
! <dt><span><code>--enable-targets=all</code></span></dt>
! <dt><span><code>--enable-targets=<var>target_list</var></code></span></dt>
  <dd><p>Some GCC targets, e.g. powerpc64-linux, build bi-arch compilers.
  These are compilers that are able to generate either 64-bit or 32-bit
  code.  Typically, the corresponding 32-bit target, e.g.
*************** Currently, this option only affects spar
*** 1481,1505 ****
  mips-linux and s390-linux.
  </p>
  </dd>
! <dt><code>--enable-default-pie</code></dt>
  <dd><p>Turn on <samp>-fPIE</samp> and <samp>-pie</samp> by default.
  </p>
  </dd>
! <dt><code>--enable-secureplt</code></dt>
  <dd><p>This option enables <samp>-msecure-plt</samp> by default for powerpc-linux.
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code>--enable-default-ssp</code></dt>
  <dd><p>Turn on <samp>-fstack-protector-strong</samp> by default.
  </p>
  </dd>
! <dt><code>--enable-cld</code></dt>
  <dd><p>This option enables <samp>-mcld</samp> by default for 32-bit x86 targets.
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><code>--enable-large-address-aware</code></dt>
  <dd><p>The <samp>--enable-large-address-aware</samp> option arranges for MinGW
  executables to be linked using the <samp>--large-address-aware</samp>
  option, that enables the use of more than 2GB of memory.  If GCC is
--- 1514,1538 ----
  mips-linux and s390-linux.
  </p>
  </dd>
! <dt><span><code>--enable-default-pie</code></span></dt>
  <dd><p>Turn on <samp>-fPIE</samp> and <samp>-pie</samp> by default.
  </p>
  </dd>
! <dt><span><code>--enable-secureplt</code></span></dt>
  <dd><p>This option enables <samp>-msecure-plt</samp> by default for powerpc-linux.
  See &ldquo;RS/6000 and PowerPC Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><span><code>--enable-default-ssp</code></span></dt>
  <dd><p>Turn on <samp>-fstack-protector-strong</samp> by default.
  </p>
  </dd>
! <dt><span><code>--enable-cld</code></span></dt>
  <dd><p>This option enables <samp>-mcld</samp> by default for 32-bit x86 targets.
  See &ldquo;i386 and x86-64 Options&rdquo; in the main manual
  </p>
  </dd>
! <dt><span><code>--enable-large-address-aware</code></span></dt>
  <dd><p>The <samp>--enable-large-address-aware</samp> option arranges for MinGW
  executables to be linked using the <samp>--large-address-aware</samp>
  option, that enables the use of more than 2GB of memory.  If GCC is
*************** configured with this option, its effects
*** 1508,1521 ****
  compiler driver.
  </p>
  </dd>
! <dt><code>--enable-win32-registry</code></dt>
! <dt><code>--enable-win32-registry=<var>key</var></code></dt>
! <dt><code>--disable-win32-registry</code></dt>
  <dd><p>The <samp>--enable-win32-registry</samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  </p>
! <div class="smallexample">
! <pre class="smallexample"><code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<var>key</var></code>
  </pre></div>
  
  <p><var>key</var> defaults to GCC version number, and can be overridden by the
--- 1541,1554 ----
  compiler driver.
  </p>
  </dd>
! <dt><span><code>--enable-win32-registry</code></span></dt>
! <dt><span><code>--enable-win32-registry=<var>key</var></code></span></dt>
! <dt><span><code>--disable-win32-registry</code></span></dt>
  <dd><p>The <samp>--enable-win32-registry</samp> option enables Microsoft Windows-hosted GCC
  to look up installations paths in the registry using the following key:
  </p>
! <div class="example">
! <pre class="example"><code>HKEY_LOCAL_MACHINE\SOFTWARE\Free Software Foundation\<var>key</var></code>
  </pre></div>
  
  <p><var>key</var> defaults to GCC version number, and can be overridden by the
*************** by default, and can be disabled by <samp
*** 1527,1542 ****
  option.  This option has no effect on the other hosts.
  </p>
  </dd>
! <dt><code>--nfp</code></dt>
  <dd><p>Specify that the machine does not have a floating point unit.  This
  option only applies to &lsquo;<samp>m68k-sun-sunos<var>n</var></samp>&rsquo;.  On any other
  system, <samp>--nfp</samp> has no effect.
  </p>
  </dd>
! <dt><code>--enable-werror</code></dt>
! <dt><code>--disable-werror</code></dt>
! <dt><code>--enable-werror=yes</code></dt>
! <dt><code>--enable-werror=no</code></dt>
  <dd><p>When you specify this option, it controls whether certain files in the
  compiler are built with <samp>-Werror</samp> in bootstrap stage2 and later.
  If you don&rsquo;t specify it, <samp>-Werror</samp> is turned on for the main
--- 1560,1575 ----
  option.  This option has no effect on the other hosts.
  </p>
  </dd>
! <dt><span><code>--nfp</code></span></dt>
  <dd><p>Specify that the machine does not have a floating point unit.  This
  option only applies to &lsquo;<samp>m68k-sun-sunos<var>n</var></samp>&rsquo;.  On any other
  system, <samp>--nfp</samp> has no effect.
  </p>
  </dd>
! <dt><span><code>--enable-werror</code></span></dt>
! <dt><span><code>--disable-werror</code></span></dt>
! <dt><span><code>--enable-werror=yes</code></span></dt>
! <dt><span><code>--enable-werror=no</code></span></dt>
  <dd><p>When you specify this option, it controls whether certain files in the
  compiler are built with <samp>-Werror</samp> in bootstrap stage2 and later.
  If you don&rsquo;t specify it, <samp>-Werror</samp> is turned on for the main
*************** final releases.  The specific files whic
*** 1545,1553 ****
  controlled by the Makefiles.
  </p>
  </dd>
! <dt><code>--enable-checking</code></dt>
! <dt><code>--disable-checking</code></dt>
! <dt><code>--enable-checking=<var>list</var></code></dt>
  <dd><p>This option controls performing internal consistency checks in the compiler.
  It does not change the generated code, but adds error checking of the
  requested complexity.  This slows down the compiler and may only work
--- 1578,1586 ----
  controlled by the Makefiles.
  </p>
  </dd>
! <dt><span><code>--enable-checking</code></span></dt>
! <dt><span><code>--disable-checking</code></span></dt>
! <dt><span><code>--enable-checking=<var>list</var></code></span></dt>
  <dd><p>This option controls performing internal consistency checks in the compiler.
  It does not change the generated code, but adds error checking of the
  requested complexity.  This slows down the compiler and may only work
*************** expensive and the &lsquo;<samp>df</samp>
*** 1585,1593 ****
  expensive.
  </p>
  </dd>
! <dt><code>--disable-stage1-checking</code></dt>
! <dt><code>--enable-stage1-checking</code></dt>
! <dt><code>--enable-stage1-checking=<var>list</var></code></dt>
  <dd><p>This option affects only bootstrap build.  If no <samp>--enable-checking</samp>
  option is specified the stage1 compiler is built with &lsquo;<samp>yes</samp>&rsquo; checking
  enabled, otherwise the stage1 checking flags are the same as specified by
--- 1618,1626 ----
  expensive.
  </p>
  </dd>
! <dt><span><code>--disable-stage1-checking</code></span></dt>
! <dt><span><code>--enable-stage1-checking</code></span></dt>
! <dt><span><code>--enable-stage1-checking=<var>list</var></code></span></dt>
  <dd><p>This option affects only bootstrap build.  If no <samp>--enable-checking</samp>
  option is specified the stage1 compiler is built with &lsquo;<samp>yes</samp>&rsquo; checking
  enabled, otherwise the stage1 checking flags are the same as specified by
*************** with checking for stage1 enabled, you ca
*** 1599,1606 ****
  to disable checking for the stage1 compiler.
  </p>
  </dd>
! <dt><code>--enable-coverage</code></dt>
! <dt><code>--enable-coverage=<var>level</var></code></dt>
  <dd><p>With this option, the compiler is built to collect self coverage
  information, every time it is run.  This is for internal development
  purposes, and only works when the compiler is being built with gcc.  The
--- 1632,1639 ----
  to disable checking for the stage1 compiler.
  </p>
  </dd>
! <dt><span><code>--enable-coverage</code></span></dt>
! <dt><span><code>--enable-coverage=<var>level</var></code></span></dt>
  <dd><p>With this option, the compiler is built to collect self coverage
  information, every time it is run.  This is for internal development
  purposes, and only works when the compiler is being built with gcc.  The
*************** enable optimization.  When coverage is e
*** 1611,1641 ****
  without optimization.
  </p>
  </dd>
! <dt><code>--enable-gather-detailed-mem-stats</code></dt>
  <dd><p>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
  <samp>-fmem-report</samp>.
  </p>
  </dd>
! <dt><code>--enable-valgrind-annotations</code></dt>
  <dd><p>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
  </p>
  </dd>
! <dt><code>--enable-nls</code></dt>
! <dt><code>--disable-nls</code></dt>
  <dd><p>The <samp>--enable-nls</samp> option enables Native Language Support (NLS),
  which lets GCC output diagnostics in languages other than American
  English.  Native Language Support is enabled by default if not doing a
  canadian cross build.  The <samp>--disable-nls</samp> option disables NLS.
  </p>
  </dd>
! <dt><code>--with-included-gettext</code></dt>
  <dd><p>If NLS is enabled, the <samp>--with-included-gettext</samp> option causes the build
  procedure to prefer its copy of GNU <code>gettext</code>.
  </p>
  </dd>
! <dt><code>--with-catgets</code></dt>
  <dd><p>If NLS is enabled, and if the host lacks <code>gettext</code> but has the
  inferior <code>catgets</code> interface, the GCC build procedure normally
  ignores <code>catgets</code> and instead uses GCC&rsquo;s copy of the GNU
--- 1644,1674 ----
  without optimization.
  </p>
  </dd>
! <dt><span><code>--enable-gather-detailed-mem-stats</code></span></dt>
  <dd><p>When this option is specified more detailed information on memory
  allocation is gathered.  This information is printed when using
  <samp>-fmem-report</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-valgrind-annotations</code></span></dt>
  <dd><p>Mark selected memory related operations in the compiler when run under
  valgrind to suppress false positives.
  </p>
  </dd>
! <dt><span><code>--enable-nls</code></span></dt>
! <dt><span><code>--disable-nls</code></span></dt>
  <dd><p>The <samp>--enable-nls</samp> option enables Native Language Support (NLS),
  which lets GCC output diagnostics in languages other than American
  English.  Native Language Support is enabled by default if not doing a
  canadian cross build.  The <samp>--disable-nls</samp> option disables NLS.
  </p>
  </dd>
! <dt><span><code>--with-included-gettext</code></span></dt>
  <dd><p>If NLS is enabled, the <samp>--with-included-gettext</samp> option causes the build
  procedure to prefer its copy of GNU <code>gettext</code>.
  </p>
  </dd>
! <dt><span><code>--with-catgets</code></span></dt>
  <dd><p>If NLS is enabled, and if the host lacks <code>gettext</code> but has the
  inferior <code>catgets</code> interface, the GCC build procedure normally
  ignores <code>catgets</code> and instead uses GCC&rsquo;s copy of the GNU
*************** ignores <code>catgets</code> and instead
*** 1643,1654 ****
  build procedure to use the host&rsquo;s <code>catgets</code> in this situation.
  </p>
  </dd>
! <dt><code>--with-libiconv-prefix=<var>dir</var></code></dt>
  <dd><p>Search for libiconv header files in <samp><var>dir</var>/include</samp> and
  libiconv library files in <samp><var>dir</var>/lib</samp>.
  </p>
  </dd>
! <dt><code>--enable-obsolete</code></dt>
  <dd><p>Enable configuration for an obsoleted system.  If you attempt to
  configure GCC for a system (build, host, or target) which has been
  obsoleted, and you do not specify this flag, configure will halt with an
--- 1676,1687 ----
  build procedure to use the host&rsquo;s <code>catgets</code> in this situation.
  </p>
  </dd>
! <dt><span><code>--with-libiconv-prefix=<var>dir</var></code></span></dt>
  <dd><p>Search for libiconv header files in <samp><var>dir</var>/include</samp> and
  libiconv library files in <samp><var>dir</var>/lib</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-obsolete</code></span></dt>
  <dd><p>Enable configuration for an obsoleted system.  If you attempt to
  configure GCC for a system (build, host, or target) which has been
  obsoleted, and you do not specify this flag, configure will halt with an
*************** is removed entirely in the next major re
*** 1659,1689 ****
  forward to maintain the port.
  </p>
  </dd>
! <dt><code>--enable-decimal-float</code></dt>
! <dt><code>--enable-decimal-float=yes</code></dt>
! <dt><code>--enable-decimal-float=no</code></dt>
! <dt><code>--enable-decimal-float=bid</code></dt>
! <dt><code>--enable-decimal-float=dpd</code></dt>
! <dt><code>--disable-decimal-float</code></dt>
  <dd><p>Enable (or disable) support for the C decimal floating point extension
! that is in the IEEE 754-2008 standard.  This is enabled by default only
! on PowerPC, i386, and x86_64 GNU/Linux systems.  Other systems may also
! support it, but require the user to specifically enable it.  You can
! optionally control which decimal floating point format is used (either
! &lsquo;<samp>bid</samp>&rsquo; or &lsquo;<samp>dpd</samp>&rsquo;).  The &lsquo;<samp>bid</samp>&rsquo; (binary integer decimal)
! format is default on i386 and x86_64 systems, and the &lsquo;<samp>dpd</samp>&rsquo;
! (densely packed decimal) format is default on PowerPC systems.
  </p>
  </dd>
! <dt><code>--enable-fixed-point</code></dt>
! <dt><code>--disable-fixed-point</code></dt>
  <dd><p>Enable (or disable) support for C fixed-point arithmetic.
  This option is enabled by default for some targets (such as MIPS) which
  have hardware-support for fixed-point operations.  On other targets, you
  may enable this option manually.
  </p>
  </dd>
! <dt><code>--with-long-double-128</code></dt>
  <dd><p>Specify if <code>long double</code> type should be 128-bit by default on selected
  GNU/Linux architectures.  If using <code>--without-long-double-128</code>,
  <code>long double</code> will be by default 64-bit, the same as <code>double</code> type.
--- 1692,1723 ----
  forward to maintain the port.
  </p>
  </dd>
! <dt><span><code>--enable-decimal-float</code></span></dt>
! <dt><span><code>--enable-decimal-float=yes</code></span></dt>
! <dt><span><code>--enable-decimal-float=no</code></span></dt>
! <dt><span><code>--enable-decimal-float=bid</code></span></dt>
! <dt><span><code>--enable-decimal-float=dpd</code></span></dt>
! <dt><span><code>--disable-decimal-float</code></span></dt>
  <dd><p>Enable (or disable) support for the C decimal floating point extension
! that is in the IEEE 754-2008 standard.  This is enabled by default
! only on AArch64, PowerPC, i386, and x86_64 GNU/Linux systems.  Other
! systems may also support it, but require the user to specifically
! enable it.  You can optionally control which decimal floating point
! format is used (either &lsquo;<samp>bid</samp>&rsquo; or &lsquo;<samp>dpd</samp>&rsquo;).  The &lsquo;<samp>bid</samp>&rsquo;
! (binary integer decimal) format is default on AArch64, i386 and x86_64
! systems, and the &lsquo;<samp>dpd</samp>&rsquo; (densely packed decimal) format is default
! on PowerPC systems.
  </p>
  </dd>
! <dt><span><code>--enable-fixed-point</code></span></dt>
! <dt><span><code>--disable-fixed-point</code></span></dt>
  <dd><p>Enable (or disable) support for C fixed-point arithmetic.
  This option is enabled by default for some targets (such as MIPS) which
  have hardware-support for fixed-point operations.  On other targets, you
  may enable this option manually.
  </p>
  </dd>
! <dt><span><code>--with-long-double-128</code></span></dt>
  <dd><p>Specify if <code>long double</code> type should be 128-bit by default on selected
  GNU/Linux architectures.  If using <code>--without-long-double-128</code>,
  <code>long double</code> will be by default 64-bit, the same as <code>double</code> type.
*************** When neither of these configure options
*** 1692,1699 ****
  64-bit <code>long double</code> otherwise.
  </p>
  </dd>
! <dt><code>--with-long-double-format=ibm</code></dt>
! <dt><code>--with-long-double-format=ieee</code></dt>
  <dd><p>Specify whether <code>long double</code> uses the IBM extended double format
  or the IEEE 128-bit floating point format on PowerPC Linux systems.
  This configuration switch will only work on little endian PowerPC
--- 1726,1733 ----
  64-bit <code>long double</code> otherwise.
  </p>
  </dd>
! <dt><span><code>--with-long-double-format=ibm</code></span></dt>
! <dt><span><code>--with-long-double-format=ieee</code></span></dt>
  <dd><p>Specify whether <code>long double</code> uses the IBM extended double format
  or the IEEE 128-bit floating point format on PowerPC Linux systems.
  This configuration switch will only work on little endian PowerPC
*************** point, it is not recommended to use
*** 1711,1729 ****
  <samp>--with-long-double-format=ieee</samp>.
  </p>
  </dd>
! <dt><code>--enable-fdpic</code></dt>
  <dd><p>On SH Linux systems, generate ELF FDPIC code.
  </p>
  </dd>
! <dt><code>--with-gmp=<var>pathname</var></code></dt>
! <dt><code>--with-gmp-include=<var>pathname</var></code></dt>
! <dt><code>--with-gmp-lib=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr-include=<var>pathname</var></code></dt>
! <dt><code>--with-mpfr-lib=<var>pathname</var></code></dt>
! <dt><code>--with-mpc=<var>pathname</var></code></dt>
! <dt><code>--with-mpc-include=<var>pathname</var></code></dt>
! <dt><code>--with-mpc-lib=<var>pathname</var></code></dt>
  <dd><p>If you want to build GCC but do not have the GMP library, the MPFR
  library and/or the MPC library installed in a standard location and
  do not have their sources present in the GCC source tree then you
--- 1745,1763 ----
  <samp>--with-long-double-format=ieee</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-fdpic</code></span></dt>
  <dd><p>On SH Linux systems, generate ELF FDPIC code.
  </p>
  </dd>
! <dt><span><code>--with-gmp=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-gmp-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-gmp-lib=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpfr=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpfr-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpfr-lib=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpc=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpc-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-mpc-lib=<var>pathname</var></code></span></dt>
  <dd><p>If you want to build GCC but do not have the GMP library, the MPFR
  library and/or the MPC library installed in a standard location and
  do not have their sources present in the GCC source tree then you
*************** variable (<code>LD_LIBRARY_PATH</code> o
*** 1750,1758 ****
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code>--with-isl=<var>pathname</var></code></dt>
! <dt><code>--with-isl-include=<var>pathname</var></code></dt>
! <dt><code>--with-isl-lib=<var>pathname</var></code></dt>
  <dd><p>If you do not have the isl library installed in a standard location and you
  want to build GCC, you can explicitly specify the directory where it is
  installed (&lsquo;<samp>--with-isl=<var>islinstalldir</var></samp>&rsquo;). The
--- 1784,1792 ----
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><span><code>--with-isl=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-isl-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-isl-lib=<var>pathname</var></code></span></dt>
  <dd><p>If you do not have the isl library installed in a standard location and you
  want to build GCC, you can explicitly specify the directory where it is
  installed (&lsquo;<samp>--with-isl=<var>islinstalldir</var></samp>&rsquo;). The
*************** include and lib options directly.
*** 1766,1772 ****
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><code>--with-stage1-ldflags=<var>flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 1 of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.  If <samp>--with-stage1-libs</samp> is not set to a
--- 1800,1806 ----
  a cross compiler, they will not be used to configure target libraries.
  </p>
  </dd>
! <dt><span><code>--with-stage1-ldflags=<var>flags</var></code></span></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 1 of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.  If <samp>--with-stage1-libs</samp> is not set to a
*************** value, then the default is &lsquo;<samp>
*** 1774,1804 ****
  supported.
  </p>
  </dd>
! <dt><code>--with-stage1-libs=<var>libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 1
  of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><code>--with-boot-ldflags=<var>flags</var></code></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If &ndash;with-boot-libs
  is not is set to a value, then the default is
  &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-boot-libs=<var>libs</var></code></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
  </p>
  </dd>
! <dt><code>--with-debug-prefix-map=<var>map</var></code></dt>
  <dd><p>Convert source directory names using <samp>-fdebug-prefix-map</samp> when
  building runtime libraries.  &lsquo;<samp><var>map</var></samp>&rsquo; is a space-separated
  list of maps of the form &lsquo;<samp><var>old</var>=<var>new</var></samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--enable-linker-build-id</code></dt>
  <dd><p>Tells GCC to pass <samp>--build-id</samp> option to the linker for all final
  links (links performed without the <samp>-r</samp> or <samp>--relocatable</samp>
  option), if the linker supports it.  If you specify
--- 1808,1838 ----
  supported.
  </p>
  </dd>
! <dt><span><code>--with-stage1-libs=<var>libs</var></code></span></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 1
  of GCC.  These are also used when linking GCC if configured with
  <samp>--disable-bootstrap</samp>.
  </p>
  </dd>
! <dt><span><code>--with-boot-ldflags=<var>flags</var></code></span></dt>
  <dd><p>This option may be used to set linker flags to be used when linking
  stage 2 and later when bootstrapping GCC.  If &ndash;with-boot-libs
  is not is set to a value, then the default is
  &lsquo;<samp>-static-libstdc++ -static-libgcc</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-boot-libs=<var>libs</var></code></span></dt>
  <dd><p>This option may be used to set libraries to be used when linking stage 2
  and later when bootstrapping GCC.
  </p>
  </dd>
! <dt><span><code>--with-debug-prefix-map=<var>map</var></code></span></dt>
  <dd><p>Convert source directory names using <samp>-fdebug-prefix-map</samp> when
  building runtime libraries.  &lsquo;<samp><var>map</var></samp>&rsquo; is a space-separated
  list of maps of the form &lsquo;<samp><var>old</var>=<var>new</var></samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--enable-linker-build-id</code></span></dt>
  <dd><p>Tells GCC to pass <samp>--build-id</samp> option to the linker for all final
  links (links performed without the <samp>-r</samp> or <samp>--relocatable</samp>
  option), if the linker supports it.  If you specify
*************** support <samp>--build-id</samp> option,
*** 1807,1827 ****
  <samp>--enable-linker-build-id</samp> option is ignored.  The default is off.
  </p>
  </dd>
! <dt><code>--with-linker-hash-style=<var>choice</var></code></dt>
  <dd><p>Tells GCC to pass <samp>--hash-style=<var>choice</var></samp> option to the
  linker for all final links. <var>choice</var> can be one of
  &lsquo;<samp>sysv</samp>&rsquo;, &lsquo;<samp>gnu</samp>&rsquo;, and &lsquo;<samp>both</samp>&rsquo; where &lsquo;<samp>sysv</samp>&rsquo; is the default.
  </p>
  </dd>
! <dt><code>--enable-gnu-unique-object</code></dt>
! <dt><code>--disable-gnu-unique-object</code></dt>
  <dd><p>Tells GCC to use the gnu_unique_object relocation for C++ template
  static data members and inline function local statics.  Enabled by
  default for a toolchain with an assembler that accepts it and
  GLIBC 2.11 or above, otherwise disabled.
  </p>
  </dd>
! <dt><code>--with-diagnostics-color=<var>choice</var></code></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-color=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
--- 1841,1861 ----
  <samp>--enable-linker-build-id</samp> option is ignored.  The default is off.
  </p>
  </dd>
! <dt><span><code>--with-linker-hash-style=<var>choice</var></code></span></dt>
  <dd><p>Tells GCC to pass <samp>--hash-style=<var>choice</var></samp> option to the
  linker for all final links. <var>choice</var> can be one of
  &lsquo;<samp>sysv</samp>&rsquo;, &lsquo;<samp>gnu</samp>&rsquo;, and &lsquo;<samp>both</samp>&rsquo; where &lsquo;<samp>sysv</samp>&rsquo; is the default.
  </p>
  </dd>
! <dt><span><code>--enable-gnu-unique-object</code></span></dt>
! <dt><span><code>--disable-gnu-unique-object</code></span></dt>
  <dd><p>Tells GCC to use the gnu_unique_object relocation for C++ template
  static data members and inline function local statics.  Enabled by
  default for a toolchain with an assembler that accepts it and
  GLIBC 2.11 or above, otherwise disabled.
  </p>
  </dd>
! <dt><span><code>--with-diagnostics-color=<var>choice</var></code></span></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-color=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
*************** is present and non-empty in the environm
*** 1831,1837 ****
  <samp>-fdiagnostics-color=never</samp> otherwise.
  </p>
  </dd>
! <dt><code>--with-diagnostics-urls=<var>choice</var></code></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-urls=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
--- 1865,1871 ----
  <samp>-fdiagnostics-color=never</samp> otherwise.
  </p>
  </dd>
! <dt><span><code>--with-diagnostics-urls=<var>choice</var></code></span></dt>
  <dd><p>Tells GCC to use <var>choice</var> as the default for <samp>-fdiagnostics-urls=</samp>
  option (if not used explicitly on the command line).  <var>choice</var>
  can be one of &lsquo;<samp>never</samp>&rsquo;, &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>always</samp>&rsquo;, and &lsquo;<samp>auto-if-env</samp>&rsquo;
*************** or <code>TERM_URLS</code> is present and
*** 1841,1854 ****
  compiler, and <samp>-fdiagnostics-urls=never</samp> otherwise.
  </p>
  </dd>
! <dt><code>--enable-lto</code></dt>
! <dt><code>--disable-lto</code></dt>
  <dd><p>Enable support for link-time optimization (LTO).  This is enabled by
  default, and may be disabled using <samp>--disable-lto</samp>.
  </p>
  </dd>
! <dt><code>--enable-linker-plugin-configure-flags=FLAGS</code></dt>
! <dt><code>--enable-linker-plugin-flags=FLAGS</code></dt>
  <dd><p>By default, linker plugins (such as the LTO plugin) are built for the
  host system architecture.  For the case that the linker has a
  different (but run-time compatible) architecture, these flags can be
--- 1875,1888 ----
  compiler, and <samp>-fdiagnostics-urls=never</samp> otherwise.
  </p>
  </dd>
! <dt><span><code>--enable-lto</code></span></dt>
! <dt><span><code>--disable-lto</code></span></dt>
  <dd><p>Enable support for link-time optimization (LTO).  This is enabled by
  default, and may be disabled using <samp>--disable-lto</samp>.
  </p>
  </dd>
! <dt><span><code>--enable-linker-plugin-configure-flags=FLAGS</code></span></dt>
! <dt><span><code>--enable-linker-plugin-flags=FLAGS</code></span></dt>
  <dd><p>By default, linker plugins (such as the LTO plugin) are built for the
  host system architecture.  For the case that the linker has a
  different (but run-time compatible) architecture, these flags can be
*************** GNU/Linux (&lsquo;<samp>i686-pc-linux-gn
*** 1859,1873 ****
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure \
      --host=x86_64-pc-linux-gnu \
      --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
      --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
  </pre></div>
  
  </dd>
! <dt><code>--with-plugin-ld=<var>pathname</var></code></dt>
  <dd><p>Enable an alternate linker to be used at link-time optimization (LTO)
  link time when <samp>-fuse-linker-plugin</samp> is enabled.
  This linker should have plugin support such as gold starting with
--- 1893,1907 ----
  executable on the former system), you can configure GCC as follows for
  getting compatible linker plugins:
  </p>
! <div class="example">
! <pre class="example">% <var>srcdir</var>/configure \
      --host=x86_64-pc-linux-gnu \
      --enable-linker-plugin-configure-flags=--host=i686-pc-linux-gnu \
      --enable-linker-plugin-flags='CC=gcc\ -m32\ -Wl,-rpath,[...]/i686-pc-linux-gnu/lib'
  </pre></div>
  
  </dd>
! <dt><span><code>--with-plugin-ld=<var>pathname</var></code></span></dt>
  <dd><p>Enable an alternate linker to be used at link-time optimization (LTO)
  link time when <samp>-fuse-linker-plugin</samp> is enabled.
  This linker should have plugin support such as gold starting with
*************** version 2.20 or GNU ld starting with ver
*** 1875,1882 ****
  See <samp>-fuse-linker-plugin</samp> for details.
  </p>
  </dd>
! <dt><code>--enable-canonical-system-headers</code></dt>
! <dt><code>--disable-canonical-system-headers</code></dt>
  <dd><p>Enable system header path canonicalization for <samp>libcpp</samp>.  This can
  produce shorter header file paths in diagnostics and dependency output
  files, but these changed header paths may conflict with some compilation
--- 1909,1916 ----
  See <samp>-fuse-linker-plugin</samp> for details.
  </p>
  </dd>
! <dt><span><code>--enable-canonical-system-headers</code></span></dt>
! <dt><span><code>--disable-canonical-system-headers</code></span></dt>
  <dd><p>Enable system header path canonicalization for <samp>libcpp</samp>.  This can
  produce shorter header file paths in diagnostics and dependency output
  files, but these changed header paths may conflict with some compilation
*************** environments.  Enabled by default, and m
*** 1884,1890 ****
  <samp>--disable-canonical-system-headers</samp>.
  </p>
  </dd>
! <dt><code>--with-glibc-version=<var>major</var>.<var>minor</var></code></dt>
  <dd><p>Tell GCC that when the GNU C Library (glibc) is used on the target it
  will be version <var>major</var>.<var>minor</var> or later.  Normally this can
  be detected from the C library&rsquo;s header files, but this option may be
--- 1918,1924 ----
  <samp>--disable-canonical-system-headers</samp>.
  </p>
  </dd>
! <dt><span><code>--with-glibc-version=<var>major</var>.<var>minor</var></code></span></dt>
  <dd><p>Tell GCC that when the GNU C Library (glibc) is used on the target it
  will be version <var>major</var>.<var>minor</var> or later.  Normally this can
  be detected from the C library&rsquo;s header files, but this option may be
*************** However, such configurations may not wor
*** 1897,1919 ****
  configuration in GCC is on a per-multilib basis.
  </p>
  </dd>
! <dt><code>--enable-as-accelerator-for=<var>target</var></code></dt>
  <dd><p>Build as offload target compiler. Specify offload host triple by <var>target</var>.
  </p>
  </dd>
! <dt><code>--enable-offload-targets=<var>target1</var>[=<var>path1</var>],&hellip;,<var>targetN</var>[=<var>pathN</var>]</code></dt>
  <dd><p>Enable offloading to targets <var>target1</var>, &hellip;, <var>targetN</var>.
  Offload compilers are expected to be already installed.  Default search
  path for them is <samp><var>exec-prefix</var></samp>, but it can be changed by
  specifying paths <var>path1</var>, &hellip;, <var>pathN</var>.
  </p>
! <div class="smallexample">
! <pre class="smallexample">% <var>srcdir</var>/configure \
!     --enable-offload-targets=x86_64-intelmicemul-linux-gnu=/path/to/x86_64/compiler,nvptx-none
  </pre></div>
  
  </dd>
! <dt><code>--enable-offload-defaulted</code></dt>
  <dd>
  <p>Tell GCC that configured but not installed offload compilers and libgomp
  plugins are silently ignored.  Useful for distribution compilers where
--- 1931,1953 ----
  configuration in GCC is on a per-multilib basis.
  </p>
  </dd>
! <dt><span><code>--enable-as-accelerator-for=<var>target</var></code></span></dt>
  <dd><p>Build as offload target compiler. Specify offload host triple by <var>target</var>.
  </p>
  </dd>
! <dt><span><code>--enable-offload-targets=<var>target1</var>[=<var>path1</var>],&hellip;,<var>targetN</var>[=<var>pathN</var>]</code></span></dt>
  <dd><p>Enable offloading to targets <var>target1</var>, &hellip;, <var>targetN</var>.
  Offload compilers are expected to be already installed.  Default search
  path for them is <samp><var>exec-prefix</var></samp>, but it can be changed by
  specifying paths <var>path1</var>, &hellip;, <var>pathN</var>.
  </p>
! <div class="example">
! <pre class="example">% <var>srcdir</var>/configure \
!     --enable-offload-targets=amdgcn-amdhsa,nvptx-none
  </pre></div>
  
  </dd>
! <dt><span><code>--enable-offload-defaulted</code></span></dt>
  <dd>
  <p>Tell GCC that configured but not installed offload compilers and libgomp
  plugins are silently ignored.  Useful for distribution compilers where
*************** of those optional packages should determ
*** 1922,1942 ****
  target set rather than the GCC configure-time selection.
  </p>
  </dd>
! <dt><code>--with-hsa-runtime=<var>pathname</var></code></dt>
! <dt><code>--with-hsa-runtime-include=<var>pathname</var></code></dt>
! <dt><code>--with-hsa-runtime-lib=<var>pathname</var></code></dt>
! <dd>
! <p>If you configure GCC with offloading which uses an HSA run-time such as
! AMDGCN but do not have the HSA run-time library installed in a standard
! location then you can explicitly specify the directory where they are
! installed.  The <samp>--with-hsa-runtime=<var>hsainstalldir</var></samp> option
! is a shorthand for
! <samp>--with-hsa-runtime-lib=<var>hsainstalldir</var>/lib</samp> and
! <samp>--with-hsa-runtime-include=<var>hsainstalldir</var>/include</samp>.
! </p>
! </dd>
! <dt><code>--enable-cet</code></dt>
! <dt><code>--disable-cet</code></dt>
  <dd><p>Enable building target run-time libraries with control-flow
  instrumentation, see <samp>-fcf-protection</samp> option.  When
  <code>--enable-cet</code> is specified target libraries are configured
--- 1956,1963 ----
  target set rather than the GCC configure-time selection.
  </p>
  </dd>
! <dt><span><code>--enable-cet</code></span></dt>
! <dt><span><code>--disable-cet</code></span></dt>
  <dd><p>Enable building target run-time libraries with control-flow
  instrumentation, see <samp>-fcf-protection</samp> option.  When
  <code>--enable-cet</code> is specified target libraries are configured
*************** otherwise.  In this case, the target lib
*** 1949,1955 ****
  additional <samp>-fcf-protection</samp> option.
  </p>
  </dd>
! <dt><code>--with-riscv-attribute=&lsquo;<samp>yes</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>default</samp>&rsquo;</code></dt>
  <dd><p>Generate RISC-V attribute by default, in order to record extra build
  information in object.
  </p>
--- 1970,1976 ----
  additional <samp>-fcf-protection</samp> option.
  </p>
  </dd>
! <dt><span><code>--with-riscv-attribute=&lsquo;<samp>yes</samp>&rsquo;, &lsquo;<samp>no</samp>&rsquo; or &lsquo;<samp>default</samp>&rsquo;</code></span></dt>
  <dd><p>Generate RISC-V attribute by default, in order to record extra build
  information in object.
  </p>
*************** information in object.
*** 1957,1964 ****
  target if target binutils supported.
  </p>
  </dd>
! <dt><code>--enable-s390-excess-float-precision</code></dt>
! <dt><code>--disable-s390-excess-float-precision</code></dt>
  <dd><p>On s390(x) targets, enable treatment of float expressions with double precision
  when in standards-compliant mode (e.g., when <code>--std=c99</code> or
  <code>-fexcess-precision=standard</code> are given).
--- 1978,1985 ----
  target if target binutils supported.
  </p>
  </dd>
! <dt><span><code>--enable-s390-excess-float-precision</code></span></dt>
! <dt><span><code>--disable-s390-excess-float-precision</code></span></dt>
  <dd><p>On s390(x) targets, enable treatment of float expressions with double precision
  when in standards-compliant mode (e.g., when <code>--std=c99</code> or
  <code>-fexcess-precision=standard</code> are given).
*************** GCC follows and enables the option. For
*** 1969,1977 ****
  disabled.
  </p>
  </dd>
! <dt><code>--with-zstd=<var>pathname</var></code></dt>
! <dt><code>--with-zstd-include=<var>pathname</var></code></dt>
! <dt><code>--with-zstd-lib=<var>pathname</var></code></dt>
  <dd><p>If you do not have the <code>zstd</code> library installed in a standard
  location and you want to build GCC, you can explicitly specify the
  directory where it is installed (&lsquo;<samp>--with-zstd=<var>zstdinstalldir</var></samp>&rsquo;).
--- 1990,1998 ----
  disabled.
  </p>
  </dd>
! <dt><span><code>--with-zstd=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-zstd-include=<var>pathname</var></code></span></dt>
! <dt><span><code>--with-zstd-lib=<var>pathname</var></code></span></dt>
  <dd><p>If you do not have the <code>zstd</code> library installed in a standard
  location and you want to build GCC, you can explicitly specify the
  directory where it is installed (&lsquo;<samp>--with-zstd=<var>zstdinstalldir</var></samp>&rsquo;).
*************** a cross compiler, they will not be used
*** 1986,2003 ****
  </p></dd>
  </dl>
  
! <a name="Cross-Compiler-Specific-Options"></a>
! <h4 class="subheading">Cross-Compiler-Specific Options</h4>
  <p>The following options only apply to building cross compilers.
  </p>
  <dl compact="compact">
! <dt><code>--with-toolexeclibdir=<var>dir</var></code></dt>
  <dd><p>Specify the installation directory for libraries built with a cross compiler.
  The default is <samp>${gcc_tooldir}/lib</samp>.
  </p>
  </dd>
! <dt><code>--with-sysroot</code></dt>
! <dt><code>--with-sysroot=<var>dir</var></code></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the root of a tree that contains
  (a subset of) the root filesystem of the target operating system.
  Target system headers, libraries and run-time object files will be
--- 2007,2023 ----
  </p></dd>
  </dl>
  
! <span id="Cross-Compiler-Specific-Options"></span><h4 class="subheading">Cross-Compiler-Specific Options</h4>
  <p>The following options only apply to building cross compilers.
  </p>
  <dl compact="compact">
! <dt><span><code>--with-toolexeclibdir=<var>dir</var></code></span></dt>
  <dd><p>Specify the installation directory for libraries built with a cross compiler.
  The default is <samp>${gcc_tooldir}/lib</samp>.
  </p>
  </dd>
! <dt><span><code>--with-sysroot</code></span></dt>
! <dt><span><code>--with-sysroot=<var>dir</var></code></span></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the root of a tree that contains
  (a subset of) the root filesystem of the target operating system.
  Target system headers, libraries and run-time object files will be
*************** option then the compiler will search tha
*** 2021,2028 ****
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><code>--with-build-sysroot</code></dt>
! <dt><code>--with-build-sysroot=<var>dir</var></code></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the system root (see
  <samp>--with-sysroot</samp>) while building target libraries, instead of
  the directory specified with <samp>--with-sysroot</samp>.  This option is
--- 2041,2048 ----
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><span><code>--with-build-sysroot</code></span></dt>
! <dt><span><code>--with-build-sysroot=<var>dir</var></code></span></dt>
  <dd><p>Tells GCC to consider <var>dir</var> as the system root (see
  <samp>--with-sysroot</samp>) while building target libraries, instead of
  the directory specified with <samp>--with-sysroot</samp>.  This option is
*************** option then the compiler will search tha
*** 2040,2047 ****
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><code>--with-headers</code></dt>
! <dt><code>--with-headers=<var>dir</var></code></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies that target headers are available when building a cross compiler.
  The <var>dir</var> argument specifies a directory which has the target include
--- 2060,2067 ----
  native system headers rather than the default <samp>/usr/include</samp>.
  </p>
  </dd>
! <dt><span><code>--with-headers</code></span></dt>
! <dt><span><code>--with-headers=<var>dir</var></code></span></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies that target headers are available when building a cross compiler.
  The <var>dir</var> argument specifies a directory which has the target include
*************** pre-exist, the <var>dir</var> argument m
*** 2053,2066 ****
  will be run on these files to make them compatible with GCC.
  </p>
  </dd>
! <dt><code>--without-headers</code></dt>
  <dd><p>Tells GCC not use any target headers from a libc when building a cross
  compiler.  When crossing to GNU/Linux, you need the headers so GCC
  can build the exception handling for libgcc.
  </p>
  </dd>
! <dt><code>--with-libs</code></dt>
! <dt><code>--with-libs=&quot;<var>dir1</var> <var>dir2</var> &hellip; <var>dirN</var>&quot;</code></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies a list of directories which contain the target runtime
  libraries.  These libraries will be copied into the <samp>gcc</samp> install
--- 2073,2086 ----
  will be run on these files to make them compatible with GCC.
  </p>
  </dd>
! <dt><span><code>--without-headers</code></span></dt>
  <dd><p>Tells GCC not use any target headers from a libc when building a cross
  compiler.  When crossing to GNU/Linux, you need the headers so GCC
  can build the exception handling for libgcc.
  </p>
  </dd>
! <dt><span><code>--with-libs</code></span></dt>
! <dt><span><code>--with-libs=&quot;<var>dir1</var> <var>dir2</var> &hellip; <var>dirN</var>&quot;</code></span></dt>
  <dd><p>Deprecated in favor of <samp>--with-sysroot</samp>.
  Specifies a list of directories which contain the target runtime
  libraries.  These libraries will be copied into the <samp>gcc</samp> install
*************** directory.  If the directory list is omi
*** 2068,2074 ****
  effect.
  </p>
  </dd>
! <dt><code>--with-newlib</code></dt>
  <dd><p>Specifies that &lsquo;<samp>newlib</samp>&rsquo; is
  being used as the target C library.  This causes <code>__eprintf</code> to be
  omitted from <samp>libgcc.a</samp> on the assumption that it will be provided by
--- 2088,2094 ----
  effect.
  </p>
  </dd>
! <dt><span><code>--with-newlib</code></span></dt>
  <dd><p>Specifies that &lsquo;<samp>newlib</samp>&rsquo; is
  being used as the target C library.  This causes <code>__eprintf</code> to be
  omitted from <samp>libgcc.a</samp> on the assumption that it will be provided by
*************** omitted from <samp>libgcc.a</samp> on th
*** 2076,2082 ****
  </p>
  <a name="avr"></a>
  </dd>
! <dt><code>--with-avrlibc</code></dt>
  <dd><p>Only supported for the AVR target. Specifies that &lsquo;<samp>AVR-Libc</samp>&rsquo; is
  being used as the target C&nbsp; library.  This causes float support
  functions like <code>__addsf3</code> to be omitted from <samp>libgcc.a</samp> on
--- 2096,2102 ----
  </p>
  <a name="avr"></a>
  </dd>
! <dt><span><code>--with-avrlibc</code></span></dt>
  <dd><p>Only supported for the AVR target. Specifies that &lsquo;<samp>AVR-Libc</samp>&rsquo; is
  being used as the target C&nbsp; library.  This causes float support
  functions like <code>__addsf3</code> to be omitted from <samp>libgcc.a</samp> on
*************** RTEMS configurations, which currently us
*** 2087,2094 ****
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
  </p>
  </dd>
! <dt><code>--with-double={32|64|32,64|64,32}</code></dt>
! <dt><code>--with-long-double={32|64|32,64|64,32|double}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify the default layout available for the C/C++ &lsquo;<samp>double</samp>&rsquo;
  and &lsquo;<samp>long double</samp>&rsquo; type, respectively. The following rules apply:
--- 2107,2114 ----
  supported since version 4.7.2 and is the default in 4.8.0 and newer.
  </p>
  </dd>
! <dt><span><code>--with-double={32|64|32,64|64,32}</code></span></dt>
! <dt><span><code>--with-long-double={32|64|32,64|64,32|double}</code></span></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify the default layout available for the C/C++ &lsquo;<samp>double</samp>&rsquo;
  and &lsquo;<samp>long double</samp>&rsquo; type, respectively. The following rules apply:
*************** that &lsquo;<samp>long double</samp>&rsq
*** 2115,2121 ****
  32&nbsp;bits wide.
  </p>
  </dd>
! <dt><code>--with-double-comparison={tristate|bool|libf7}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify what result format is returned by library functions that
  compare 64-bit floating point values (<code>DFmode</code>).
--- 2135,2141 ----
  32&nbsp;bits wide.
  </p>
  </dd>
! <dt><span><code>--with-double-comparison={tristate|bool|libf7}</code></span></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify what result format is returned by library functions that
  compare 64-bit floating point values (<code>DFmode</code>).
*************** The GCC default is &lsquo;<samp>tristate
*** 2123,2129 ****
  implementation returns a boolean instead, set it to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-libf7={libgcc|math|math-symbols|no}</code></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify to which degree code from LibF7 is included in libgcc.
  LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
--- 2143,2149 ----
  implementation returns a boolean instead, set it to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-libf7={libgcc|math|math-symbols|no}</code></span></dt>
  <dd><p>Only supported for the AVR target since version&nbsp;10.
  Specify to which degree code from LibF7 is included in libgcc.
  LibF7 is an ad-hoc, AVR-specific, 64-bit floating point emulation
*************** from elsewhere.  This option sets <samp>
*** 2139,2151 ****
  to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-nds32-lib=<var>library</var></code></dt>
  <dd><p>Specifies that <var>library</var> setting is used for building <samp>libgcc.a</samp>.
  Currently, the valid <var>library</var> is &lsquo;<samp>newlib</samp>&rsquo; or &lsquo;<samp>mculib</samp>&rsquo;.
  This option is only supported for the NDS32 target.
  </p>
  </dd>
! <dt><code>--with-build-time-tools=<var>dir</var></code></dt>
  <dd><p>Specifies where to find the set of target tools (assembler, linker, etc.)
  that will be used while building GCC itself.  This option can be useful
  if the directory layouts are different between the system you are building
--- 2159,2171 ----
  to &lsquo;<samp>bool</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-nds32-lib=<var>library</var></code></span></dt>
  <dd><p>Specifies that <var>library</var> setting is used for building <samp>libgcc.a</samp>.
  Currently, the valid <var>library</var> is &lsquo;<samp>newlib</samp>&rsquo; or &lsquo;<samp>mculib</samp>&rsquo;.
  This option is only supported for the NDS32 target.
  </p>
  </dd>
! <dt><span><code>--with-build-time-tools=<var>dir</var></code></span></dt>
  <dd><p>Specifies where to find the set of target tools (assembler, linker, etc.)
  that will be used while building GCC itself.  This option can be useful
  if the directory layouts are different between the system you are building
*************** tools.
*** 2164,2171 ****
  </p></dd>
  </dl>
  
! <a name="Overriding-configure-test-results"></a>
! <h4 class="subsubheading">Overriding <code>configure</code> test results</h4>
  
  <p>Sometimes, it might be necessary to override the result of some
  <code>configure</code> test, for example in order to ease porting to a new
--- 2184,2190 ----
  </p></dd>
  </dl>
  
! <span id="Overriding-configure-test-results"></span><h4 class="subsubheading">Overriding <code>configure</code> test results</h4>
  
  <p>Sometimes, it might be necessary to override the result of some
  <code>configure</code> test, for example in order to ease porting to a new
*************** system or work around a bug in a test.
*** 2173,2193 ****
  script provides three variables for this:
  </p>
  <dl compact="compact">
! <dt><code>build_configargs</code></dt>
! <dd><a name="index-build_005fconfigargs"></a>
! <p>The contents of this variable is passed to all build <code>configure</code>
  scripts.
  </p>
  </dd>
! <dt><code>host_configargs</code></dt>
! <dd><a name="index-host_005fconfigargs"></a>
! <p>The contents of this variable is passed to all host <code>configure</code>
  scripts.
  </p>
  </dd>
! <dt><code>target_configargs</code></dt>
! <dd><a name="index-target_005fconfigargs"></a>
! <p>The contents of this variable is passed to all target <code>configure</code>
  scripts.
  </p>
  </dd>
--- 2192,2214 ----
  script provides three variables for this:
  </p>
  <dl compact="compact">
! <dd>
! <span id="index-build_005fconfigargs"></span>
! </dd>
! <dt><span><code>build_configargs</code></span></dt>
! <dd><p>The contents of this variable is passed to all build <code>configure</code>
  scripts.
  </p>
+ <span id="index-host_005fconfigargs"></span>
  </dd>
! <dt><span><code>host_configargs</code></span></dt>
! <dd><p>The contents of this variable is passed to all host <code>configure</code>
  scripts.
  </p>
+ <span id="index-target_005fconfigargs"></span>
  </dd>
! <dt><span><code>target_configargs</code></span></dt>
! <dd><p>The contents of this variable is passed to all target <code>configure</code>
  scripts.
  </p>
  </dd>
*************** scripts.
*** 2197,2209 ****
  overrides, you can pass a setting for <code>CONFIG_SITE</code> and set
  variables in the site file.
  </p>
! <a name="Objective-C-Specific-Options"></a>
! <h4 class="subheading">Objective-C-Specific Options</h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
  </p>
  <dl compact="compact">
! <dt><code>--enable-objc-gc</code></dt>
  <dd><p>Specify that an additional variant of the GNU Objective-C runtime library
  is built, using an external build of the Boehm-Demers-Weiser garbage
  collector (<a href="https://www.hboehm.info/gc/">https://www.hboehm.info/gc/</a>).  This library needs to be
--- 2218,2229 ----
  overrides, you can pass a setting for <code>CONFIG_SITE</code> and set
  variables in the site file.
  </p>
! <span id="Objective-C-Specific-Options"></span><h4 class="subheading">Objective-C-Specific Options</h4>
  
  <p>The following options apply to the build of the Objective-C runtime library.
  </p>
  <dl compact="compact">
! <dt><span><code>--enable-objc-gc</code></span></dt>
  <dd><p>Specify that an additional variant of the GNU Objective-C runtime library
  is built, using an external build of the Boehm-Demers-Weiser garbage
  collector (<a href="https://www.hboehm.info/gc/">https://www.hboehm.info/gc/</a>).  This library needs to be
*************** additional runtime library is skipped wh
*** 2213,2221 ****
  continues.
  </p>
  </dd>
! <dt><code>--with-target-bdw-gc=<var>list</var></code></dt>
! <dt><code>--with-target-bdw-gc-include=<var>list</var></code></dt>
! <dt><code>--with-target-bdw-gc-lib=<var>list</var></code></dt>
  <dd><p>Specify search directories for the garbage collector header files and
  libraries. <var>list</var> is a comma separated list of key value pairs of the
  form &lsquo;<samp><var>multilibdir</var>=<var>path</var></samp>&rsquo;, where the default multilib key
--- 2233,2241 ----
  continues.
  </p>
  </dd>
! <dt><span><code>--with-target-bdw-gc=<var>list</var></code></span></dt>
! <dt><span><code>--with-target-bdw-gc-include=<var>list</var></code></span></dt>
! <dt><span><code>--with-target-bdw-gc-lib=<var>list</var></code></span></dt>
  <dd><p>Specify search directories for the garbage collector header files and
  libraries. <var>list</var> is a comma separated list of key value pairs of the
  form &lsquo;<samp><var>multilibdir</var>=<var>path</var></samp>&rsquo;, where the default multilib key
*************** default locations.
*** 2234,2248 ****
  </p></dd>
  </dl>
  
! <a name="D-Specific-Options"></a>
! <h4 class="subheading">D-Specific Options</h4>
  
  <p>The following options apply to the build of the D runtime library.
  </p>
  <dl compact="compact">
! <dt><code>--enable-libphobos-checking</code></dt>
! <dt><code>--disable-libphobos-checking</code></dt>
! <dt><code>--enable-libphobos-checking=<var>list</var></code></dt>
  <dd><p>This option controls whether run-time checks and contracts are compiled into
  the D runtime library.  When the option is not specified, the library is built
  with &lsquo;<samp>release</samp>&rsquo; checking.  When the option is specified without a
--- 2254,2267 ----
  </p></dd>
  </dl>
  
! <span id="D-Specific-Options"></span><h4 class="subheading">D-Specific Options</h4>
  
  <p>The following options apply to the build of the D runtime library.
  </p>
  <dl compact="compact">
! <dt><span><code>--enable-libphobos-checking</code></span></dt>
! <dt><span><code>--disable-libphobos-checking</code></span></dt>
! <dt><span><code>--enable-libphobos-checking=<var>list</var></code></span></dt>
  <dd><p>This option controls whether run-time checks and contracts are compiled into
  the D runtime library.  When the option is not specified, the library is built
  with &lsquo;<samp>release</samp>&rsquo; checking.  When the option is specified without a
*************** libphobos with <samp>-fno-release</samp>
*** 2259,2266 ****
  with an extra option <samp>-fassert</samp>).
  </p>
  </dd>
! <dt><code>--with-libphobos-druntime-only</code></dt>
! <dt><code>--with-libphobos-druntime-only=<var>choice</var></code></dt>
  <dd><p>Specify whether to build only the core D runtime library (druntime), or both
  the core and standard library (phobos) into libphobos.  This is useful for
  targets that have full support in druntime, but no or incomplete support
--- 2278,2285 ----
  with an extra option <samp>-fassert</samp>).
  </p>
  </dd>
! <dt><span><code>--with-libphobos-druntime-only</code></span></dt>
! <dt><span><code>--with-libphobos-druntime-only=<var>choice</var></code></span></dt>
  <dd><p>Specify whether to build only the core D runtime library (druntime), or both
  the core and standard library (phobos) into libphobos.  This is useful for
  targets that have full support in druntime, but no or incomplete support
*************** When the option is specified without a <
*** 2273,2279 ****
  &lsquo;<samp>--with-libphobos-druntime-only=yes</samp>&rsquo;.
  </p>
  </dd>
! <dt><code>--with-target-system-zlib</code></dt>
  <dd><p>Use installed &lsquo;<samp>zlib</samp>&rsquo; rather than that included with GCC.  This needs
  to be available for each multilib variant, unless configured with
  <samp>--with-target-system-zlib=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the GCC&nbsp;included
--- 2292,2298 ----
  &lsquo;<samp>--with-libphobos-druntime-only=yes</samp>&rsquo;.
  </p>
  </dd>
! <dt><span><code>--with-target-system-zlib</code></span></dt>
  <dd><p>Use installed &lsquo;<samp>zlib</samp>&rsquo; rather than that included with GCC.  This needs
  to be available for each multilib variant, unless configured with
  <samp>--with-target-system-zlib=&lsquo;<samp>auto</samp>&rsquo;</samp> in which case the GCC&nbsp;included
diff -Nrcpad gcc-12.2.0/INSTALL/download.html gcc-13.1.0/INSTALL/download.html
*** gcc-12.2.0/INSTALL/download.html	Fri Aug 19 08:15:36 2022
--- gcc-13.1.0/INSTALL/download.html	Wed Apr 26 07:11:20 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Downloading GCC</title>
  
  <meta name="description" content="Downloading GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 80,87 ****
  
  
  
! <a name="index-Downloading-GCC"></a>
! <a name="index-Downloading-the-Source"></a>
  
  <p>GCC is distributed via <a href="https://gcc.gnu.org/git.html">git</a> and via
  HTTPS as tarballs compressed with <code>gzip</code> or <code>bzip2</code>.
--- 74,84 ----
  
  
  
! 
! 
! 
! <span id="index-Downloading-GCC"></span>
! <span id="index-Downloading-the-Source"></span>
  
  <p>GCC is distributed via <a href="https://gcc.gnu.org/git.html">git</a> and via
  HTTPS as tarballs compressed with <code>gzip</code> or <code>bzip2</code>.
diff -Nrcpad gcc-12.2.0/INSTALL/finalinstall.html gcc-13.1.0/INSTALL/finalinstall.html
*** gcc-12.2.0/INSTALL/finalinstall.html	Fri Aug 19 08:15:37 2022
--- gcc-13.1.0/INSTALL/finalinstall.html	Wed Apr 26 07:11:20 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Final installation</title>
  
  <meta name="description" content="Installing GCC: Final installation">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 85,93 ****
  
  
  
  <p>Now that GCC has been built (and optionally tested), you can install it with
! </p><div class="smallexample">
! <pre class="smallexample">cd <var>objdir</var> &amp;&amp; make install
  </pre></div>
  
  <p>We strongly recommend to install into a target directory where there is
--- 79,90 ----
  
  
  
+ 
+ 
+ 
  <p>Now that GCC has been built (and optionally tested), you can install it with
! </p><div class="example">
! <pre class="example">cd <var>objdir</var> &amp;&amp; make install
  </pre></div>
  
  <p>We strongly recommend to install into a target directory where there is
*************** binutils, including assembler and linker
*** 119,126 ****
  <p>Installation into a temporary staging area or into a <code>chroot</code>
  jail can be achieved with the command
  </p>
! <div class="smallexample">
! <pre class="smallexample">make DESTDIR=<var>path-to-rootdir</var> install
  </pre></div>
  
  <p>where <var>path-to-rootdir</var> is the absolute path of
--- 116,123 ----
  <p>Installation into a temporary staging area or into a <code>chroot</code>
  jail can be achieved with the command
  </p>
! <div class="example">
! <pre class="example">make DESTDIR=<var>path-to-rootdir</var> install
  </pre></div>
  
  <p>where <var>path-to-rootdir</var> is the absolute path of
*************** using the <code>DESTDIR</code> feature.
*** 139,148 ****
  </p>
  <p>You can install stripped programs and libraries with
  </p>
! <div class="smallexample">
! <pre class="smallexample">make install-strip
  </pre></div>
  
  <p>If you are bootstrapping a released version of GCC then please
  quickly review the build status page for your release, available from
  <a href="https://gcc.gnu.org/buildstat.html">https://gcc.gnu.org/buildstat.html</a>.
--- 136,168 ----
  </p>
  <p>You can install stripped programs and libraries with
  </p>
! <div class="example">
! <pre class="example">make install-strip
! </pre></div>
! 
! <p>By default, only the man pages and info-format GCC documentation
! are built and installed.  If you want to generate the GCC manuals in
! other formats, use commands like
! </p>
! <div class="example">
! <pre class="example">make dvi
! make pdf
! make html
  </pre></div>
  
+ <p>to build the manuals in the corresponding formats, and
+ </p>
+ <div class="example">
+ <pre class="example">make install-dvi
+ make install-pdf
+ make install-html
+ </pre></div>
+ 
+ <p>to install them.
+ Alternatively, there are prebuilt online versions of the manuals for
+ released versions of GCC on
+ <a href="https://gcc.gnu.org/onlinedocs/">the GCC web site</a>.
+ </p>
  <p>If you are bootstrapping a released version of GCC then please
  quickly review the build status page for your release, available from
  <a href="https://gcc.gnu.org/buildstat.html">https://gcc.gnu.org/buildstat.html</a>.
*************** that file itself, just the one-line outp
*** 160,171 ****
  This tells us which version of GCC you built and the options you passed to
  configure.
  
- </li><li> Whether you enabled all languages or a subset of them.  If you used a
- full distribution then this information is part of the configure
- options in the output of &lsquo;<samp>gcc -v</samp>&rsquo;, but if you downloaded the
- &ldquo;core&rdquo; compiler plus additional front ends then it isn&rsquo;t apparent
- which ones you built unless you tell us about it.
- 
  </li><li> If the build was for GNU/Linux, also include:
  <ul>
  <li> The distribution name and version (e.g., Red Hat 7.1 or Debian 2.2.3);
--- 180,185 ----
*************** incomplete or out of date.  Send a note
*** 195,216 ****
  <p>If you find a bug, please report it following the
  <a href="../bugs/">bug reporting guidelines</a>.
  </p>
- <p>If you want to print the GCC manuals, do &lsquo;<samp>cd <var>objdir</var>; make
- dvi</samp>&rsquo;.  You will need to have <code>texi2dvi</code> (version at least 4.7)
- and TeX installed.  This creates a number of <samp>.dvi</samp> files in
- subdirectories of <samp><var>objdir</var></samp>; these may be converted for
- printing with programs such as <code>dvips</code>.  Alternately, by using
- &lsquo;<samp>make pdf</samp>&rsquo; in place of &lsquo;<samp>make dvi</samp>&rsquo;, you can create documentation
- in the form of <samp>.pdf</samp> files; this requires <code>texi2pdf</code>, which
- is included with Texinfo version 4.8 and later.  You can also
- <a href="https://shop.fsf.org/">buy printed manuals from the
- Free Software Foundation</a>, though such manuals may not be for the most
- recent version of GCC.
- </p>
- <p>If you would like to generate online HTML documentation, do &lsquo;<samp>cd
- <var>objdir</var>; make html</samp>&rsquo; and HTML will be generated for the gcc manuals in
- <samp><var>objdir</var>/gcc/HTML</samp>.
- </p>
  <hr />
  <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
--- 209,214 ----
diff -Nrcpad gcc-12.2.0/INSTALL/gfdl.html gcc-13.1.0/INSTALL/gfdl.html
*** gcc-12.2.0/INSTALL/gfdl.html	Fri Aug 19 08:15:37 2022
--- gcc-13.1.0/INSTALL/gfdl.html	Wed Apr 26 07:11:21 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: GNU Free Documentation License</title>
  
  <meta name="description" content="Installing GCC: GNU Free Documentation License">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 87,100 ****
  
  
  
  <h1 align="center">Installing GCC: GNU Free Documentation License</h1>
  
! <a name="index-FDL_002c-GNU-Free-Documentation-License"></a>
  <div align="center">Version 1.3, 3 November 2008
  </div>
  <div class="display">
  <pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
! <a href="https://fsf.org/">https://fsf.org/</a>
  
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
--- 81,97 ----
  
  
  
+ 
+ 
+ 
  <h1 align="center">Installing GCC: GNU Free Documentation License</h1>
  
! <span id="index-FDL_002c-GNU-Free-Documentation-License"></span>
  <div align="center">Version 1.3, 3 November 2008
  </div>
  <div class="display">
  <pre class="display">Copyright &copy; 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
! <a href="https://www.fsf.org">https://www.fsf.org</a>
  
  Everyone is permitted to copy and distribute verbatim copies
  of this license document, but changing it is not allowed.
*************** provided the MMC is eligible for relicen
*** 522,536 ****
  </p>
  </li></ol>
  
! <a name="ADDENDUM_003a-How-to-use-this-License-for-your-documents"></a>
  <h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
  
  <p>To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:
  </p>
! <div class="smallexample">
! <pre class="smallexample">  Copyright (C)  <var>year</var>  <var>your name</var>.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
--- 519,533 ----
  </p>
  </li></ol>
  
! <div class="unnumberedsec" id="ADDENDUM_003a-How-to-use-this-License-for-your-documents">
  <h3 class="unnumberedsec">ADDENDUM: How to use this License for your documents</h3>
  
  <p>To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
  license notices just after the title page:
  </p>
! <div class="example">
! <pre class="example">  Copyright (C)  <var>year</var>  <var>your name</var>.
    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
*************** license notices just after the title pag
*** 542,549 ****
  <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  </p>
! <div class="smallexample">
! <pre class="smallexample">    with the Invariant Sections being <var>list their titles</var>, with
      the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
      being <var>list</var>.
  </pre></div>
--- 539,546 ----
  <p>If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
  replace the &ldquo;with...Texts.&rdquo; line with this:
  </p>
! <div class="example">
! <pre class="example">    with the Invariant Sections being <var>list their titles</var>, with
      the Front-Cover Texts being <var>list</var>, and with the Back-Cover Texts
      being <var>list</var>.
  </pre></div>
*************** to permit their use in free software.
*** 563,569 ****
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
! <hr>
  
  
  
--- 560,566 ----
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
  
! <hr></div>
  
  
  
diff -Nrcpad gcc-12.2.0/INSTALL/index.html gcc-13.1.0/INSTALL/index.html
*** gcc-12.2.0/INSTALL/index.html	Fri Aug 19 08:15:36 2022
--- gcc-13.1.0/INSTALL/index.html	Wed Apr 26 07:11:19 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC</title>
  
  <meta name="description" content="Installing GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 79,84 ****
--- 73,81 ----
  
  
  
+ 
+ 
+ 
  <p>The latest version of this document is always available at
  <a href="https://gcc.gnu.org/install/">https://gcc.gnu.org/install/</a>.
  It refers to the current development sources, instructions for
*************** more binaries exist that use them.
*** 122,128 ****
  <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
! <p>Copyright &copy; 1988-2022 Free Software Foundation, Inc.
  </p><br>
  <p>Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 119,125 ----
  <p>
  <p><a href="./index.html">Return to the GCC Installation page</a>
  </p>
! <p>Copyright &copy; 1988-2023 Free Software Foundation, Inc.
  </p><br>
  <p>Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** Free Documentation License</a>&rdquo;.
*** 145,151 ****
  
  
  
- 
  
  
  
--- 142,147 ----
diff -Nrcpad gcc-12.2.0/INSTALL/prerequisites.html gcc-13.1.0/INSTALL/prerequisites.html
*** gcc-12.2.0/INSTALL/prerequisites.html	Fri Aug 19 08:15:36 2022
--- gcc-13.1.0/INSTALL/prerequisites.html	Wed Apr 26 07:11:19 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Prerequisites for GCC</title>
  
  <meta name="description" content="Prerequisites for GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 79,95 ****
  
  
  
! <a name="index-Prerequisites"></a>
  
  <p>GCC requires that various tools and packages be available for use in the
  build procedure.  Modifying GCC sources requires additional tools
  described below.
  </p>
! <a name="Tools_002fpackages-necessary-for-building-GCC"></a>
! <h3 class="heading">Tools/packages necessary for building GCC</h3>
  <dl compact="compact">
! <dt>ISO C++11 compiler</dt>
! <dd><p>Necessary to bootstrap GCC.
  </p>
  <p>Versions of GCC prior to 11 also allow bootstrapping with an ISO C++98
  compiler, versions of GCC prior to 4.8 also allow bootstrapping with a
--- 73,93 ----
  
  
  
! 
! 
! 
! <span id="index-Prerequisites"></span>
  
  <p>GCC requires that various tools and packages be available for use in the
  build procedure.  Modifying GCC sources requires additional tools
  described below.
  </p>
! <span id="Tools_002fpackages-necessary-for-building-GCC"></span><h3 class="heading">Tools/packages necessary for building GCC</h3>
  <dl compact="compact">
! <dt><span>ISO C++11 compiler</span></dt>
! <dd><p>Necessary to bootstrap GCC.  GCC 4.8.3 or newer has sufficient
! support for used C++11 features, with earlier GCC versions you
! might run into implementation bugs.
  </p>
  <p>Versions of GCC prior to 11 also allow bootstrapping with an ISO C++98
  compiler, versions of GCC prior to 4.8 also allow bootstrapping with a
*************** bootstrapping with a traditional (K&amp;
*** 98,108 ****
  </p>
  <p>To build all languages in a cross-compiler or other configuration where
  3-stage bootstrap is not performed, you need to start with an existing
! GCC binary (version 4.8 or later) because source code for language
  frontends other than C might use GCC extensions.
  </p>
  </dd>
! <dt>C standard library and headers</dt>
  <dd>
  <p>In order to build GCC, the C standard library and headers must be present
  for all target variants for which target libraries will be built (and not
--- 96,106 ----
  </p>
  <p>To build all languages in a cross-compiler or other configuration where
  3-stage bootstrap is not performed, you need to start with an existing
! GCC binary (version 4.8.3 or later) because source code for language
  frontends other than C might use GCC extensions.
  </p>
  </dd>
! <dt><span>C standard library and headers</span></dt>
  <dd>
  <p>In order to build GCC, the C standard library and headers must be present
  for all target variants for which target libraries will be built (and not
*************** name of the package depends on your dist
*** 119,125 ****
  &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
! <dt><a name="GNAT-prerequisite"></a>GNAT</dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 5.1 or later).
--- 117,123 ----
  &lsquo;<samp>fatal error: gnu/stubs-32.h: No such file</samp>&rsquo;
  </p>
  </dd>
! <dt><span><span id="GNAT-prerequisite"></span>GNAT</span></dt>
  <dd>
  <p>In order to build GNAT, the Ada compiler, you need a working GNAT
  compiler (GCC version 5.1 or later).
*************** by verifying that &lsquo;<samp>gnatls -v
*** 149,158 ****
  section.
  </p>
  </dd>
! <dt><a name="GDC-prerequisite"></a>GDC</dt>
  <dd>
  <p>In order to build GDC, the D compiler, you need a working GDC
! compiler (GCC version 9.1 or later) and D runtime library,
  &lsquo;<samp>libphobos</samp>&rsquo;, as the D front end is written in D.
  </p>
  <p>Versions of GDC prior to 12 can be built with an ISO C++11 compiler, which can
--- 147,156 ----
  section.
  </p>
  </dd>
! <dt><span><span id="GDC-prerequisite"></span>GDC</span></dt>
  <dd>
  <p>In order to build GDC, the D compiler, you need a working GDC
! compiler (GCC version 9.4 or later) and D runtime library,
  &lsquo;<samp>libphobos</samp>&rsquo;, as the D front end is written in D.
  </p>
  <p>Versions of GDC prior to 12 can be built with an ISO C++11 compiler, which can
*************** and works if <samp>--enable-libphobos</s
*** 174,180 ****
  documented for affected targets.
  </p>
  </dd>
! <dt>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash</dt>
  <dd>
  <p>Necessary when running <code>configure</code> because some
  <code>/bin/sh</code> shells have bugs and may crash when configuring the
--- 172,186 ----
  documented for affected targets.
  </p>
  </dd>
! <dt><span><span id="GM2-prerequisite"></span>GM2</span></dt>
! <dd>
! <p>Python3 is required if you want to build the complete Modula-2
! documentation including the target <code>SYSTEM</code> definition module.
! If Python3 is unavailable Modula-2 documentation will include a target
! independent version of the SYSTEM modules.
! </p>
! </dd>
! <dt><span>A &ldquo;working&rdquo; POSIX compatible shell, or GNU bash</span></dt>
  <dd>
  <p>Necessary when running <code>configure</code> because some
  <code>/bin/sh</code> shells have bugs and may crash when configuring the
*************** environment to your &ldquo;good&rdquo; s
*** 193,206 ****
  work when configuring GCC.
  </p>
  </dd>
! <dt>A POSIX or SVR4 awk</dt>
  <dd>
  <p>Necessary for creating some of the generated source files for GCC.
  If in doubt, use a recent GNU awk version, as some of the older ones
  are broken.  GNU awk version 3.1.5 is known to work.
  </p>
  </dd>
! <dt>GNU binutils</dt>
  <dd>
  <p>Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
--- 199,212 ----
  work when configuring GCC.
  </p>
  </dd>
! <dt><span>A POSIX or SVR4 awk</span></dt>
  <dd>
  <p>Necessary for creating some of the generated source files for GCC.
  If in doubt, use a recent GNU awk version, as some of the older ones
  are broken.  GNU awk version 3.1.5 is known to work.
  </p>
  </dd>
! <dt><span>GNU binutils</span></dt>
  <dd>
  <p>Necessary in some circumstances, optional in others.  See the
  host/target specific instructions for your platform for the exact
*************** requirements.
*** 210,239 ****
  with GNU libtool that includes doing a bootstrap with LTO enabled.
  </p>
  </dd>
! <dt>gzip version 1.2.4 (or later) or</dt>
! <dt>bzip2 version 1.0.2 (or later)</dt>
  <dd>
  <p>Necessary to uncompress GCC <code>tar</code> files when source code is
  obtained via HTTPS mirror sites.
  </p>
  </dd>
! <dt>GNU make version 3.80 (or later)</dt>
  <dd>
  <p>You must have GNU make installed to build GCC.
  </p>
  </dd>
! <dt>GNU tar version 1.14 (or later)</dt>
  <dd>
  <p>Necessary (only on some platforms) to untar the source code.  Many
  systems&rsquo; <code>tar</code> programs will also work, only try GNU
  <code>tar</code> if you have problems.
  </p>
  </dd>
! <dt>Perl version between 5.6.1 and 5.6.24</dt>
  <dd>
  <p>Necessary when targeting Darwin, building &lsquo;<samp>libstdc++</samp>&rsquo;,
  and not using <samp>--disable-symvers</samp>.
! Necessary when targeting Solaris 2 with Solaris <code>ld</code> and not using
  <samp>--disable-symvers</samp>.
  </p>
  <p>Necessary when regenerating <samp>Makefile</samp> dependencies in libiberty.
--- 216,245 ----
  with GNU libtool that includes doing a bootstrap with LTO enabled.
  </p>
  </dd>
! <dt><span>gzip version 1.2.4 (or later) or</span></dt>
! <dt><span>bzip2 version 1.0.2 (or later)</span></dt>
  <dd>
  <p>Necessary to uncompress GCC <code>tar</code> files when source code is
  obtained via HTTPS mirror sites.
  </p>
  </dd>
! <dt><span>GNU make version 3.80 (or later)</span></dt>
  <dd>
  <p>You must have GNU make installed to build GCC.
  </p>
  </dd>
! <dt><span>GNU tar version 1.14 (or later)</span></dt>
  <dd>
  <p>Necessary (only on some platforms) to untar the source code.  Many
  systems&rsquo; <code>tar</code> programs will also work, only try GNU
  <code>tar</code> if you have problems.
  </p>
  </dd>
! <dt><span>Perl version between 5.6.1 and 5.6.24</span></dt>
  <dd>
  <p>Necessary when targeting Darwin, building &lsquo;<samp>libstdc++</samp>&rsquo;,
  and not using <samp>--disable-symvers</samp>.
! Necessary when targeting Solaris with Solaris <code>ld</code> and not using
  <samp>--disable-symvers</samp>.
  </p>
  <p>Necessary when regenerating <samp>Makefile</samp> dependencies in libiberty.
*************** support libraries then using those packa
*** 258,266 ****
  install the libraries.
  </p>
  <dl compact="compact">
! <dt>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)</dt>
  <dd>
! <p>Necessary to build GCC.  If a GMP source distribution is found in a
  subdirectory of your GCC sources named <samp>gmp</samp>, it will be built
  together with GCC.  Alternatively, if GMP is already installed but it
  is not in your library search path, you will have to configure with the
--- 264,273 ----
  install the libraries.
  </p>
  <dl compact="compact">
! <dt><span>GNU Multiple Precision Library (GMP) version 4.3.2 (or later)</span></dt>
  <dd>
! <p>Necessary to build GCC.  It can be downloaded from
! <a href="https://gmplib.org/">https://gmplib.org/</a>.  If a GMP source distribution is found in a
  subdirectory of your GCC sources named <samp>gmp</samp>, it will be built
  together with GCC.  Alternatively, if GMP is already installed but it
  is not in your library search path, you will have to configure with the
*************** The in-tree build is only supported with
*** 270,276 ****
  download_prerequisites installs.
  </p>
  </dd>
! <dt>MPFR Library version 3.1.0 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="https://www.mpfr.org">https://www.mpfr.org</a>.  If an MPFR source distribution is found
--- 277,283 ----
  download_prerequisites installs.
  </p>
  </dd>
! <dt><span>MPFR Library version 3.1.0 (or later)</span></dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="https://www.mpfr.org">https://www.mpfr.org</a>.  If an MPFR source distribution is found
*************** The in-tree build is only supported with
*** 283,289 ****
  download_prerequisites installs.
  </p>
  </dd>
! <dt>MPC Library version 1.0.1 (or later)</dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="https://www.multiprecision.org/mpc/">https://www.multiprecision.org/mpc/</a>.  If an MPC source distribution
--- 290,296 ----
  download_prerequisites installs.
  </p>
  </dd>
! <dt><span>MPC Library version 1.0.1 (or later)</span></dt>
  <dd>
  <p>Necessary to build GCC.  It can be downloaded from
  <a href="https://www.multiprecision.org/mpc/">https://www.multiprecision.org/mpc/</a>.  If an MPC source distribution
*************** The in-tree build is only supported with
*** 296,302 ****
  download_prerequisites installs.
  </p>
  </dd>
! <dt>isl Library version 0.15 or later.</dt>
  <dd>
  <p>Necessary to build GCC with the Graphite loop optimizations.
  It can be downloaded from <a href="https://gcc.gnu.org/pub/gcc/infrastructure/">https://gcc.gnu.org/pub/gcc/infrastructure/</a>.
--- 303,309 ----
  download_prerequisites installs.
  </p>
  </dd>
! <dt><span>isl Library version 0.15 or later.</span></dt>
  <dd>
  <p>Necessary to build GCC with the Graphite loop optimizations.
  It can be downloaded from <a href="https://gcc.gnu.org/pub/gcc/infrastructure/">https://gcc.gnu.org/pub/gcc/infrastructure/</a>.
*************** option should be used if isl is not inst
*** 307,332 ****
  search path.
  </p>
  </dd>
! <dt>zstd Library.</dt>
  <dd>
  <p>Necessary to build GCC with zstd compression used for LTO bytecode.
  The library is searched in your default library patch search.
  Alternatively, the <samp>--with-zstd</samp> configure option should be used.
  </p>
  </dd>
  </dl>
  
! <a name="Tools_002fpackages-necessary-for-modifying-GCC"></a>
! <h3 class="heading">Tools/packages necessary for modifying GCC</h3>
  <dl compact="compact">
! <dt>autoconf version 2.69</dt>
! <dt>GNU m4 version 1.4.6 (or later)</dt>
  <dd>
  <p>Necessary when modifying <samp>configure.ac</samp>, <samp>aclocal.m4</samp>, etc.
  to regenerate <samp>configure</samp> and <samp>config.in</samp> files.
  </p>
  </dd>
! <dt>automake version 1.15.1</dt>
  <dd>
  <p>Necessary when modifying a <samp>Makefile.am</samp> file to regenerate its
  associated <samp>Makefile.in</samp>.
--- 314,373 ----
  search path.
  </p>
  </dd>
! <dt><span>zstd Library.</span></dt>
  <dd>
  <p>Necessary to build GCC with zstd compression used for LTO bytecode.
  The library is searched in your default library patch search.
  Alternatively, the <samp>--with-zstd</samp> configure option should be used.
  </p>
  </dd>
+ <dt><span>Python3 modules</span></dt>
+ <dd>
+ <p>The complete list of Python3 modules broken down by GCC subcomponent
+ is shown below:
+ </p>
+ <dl compact="compact">
+ <dt><span>internal debugging in gdbhooks</span></dt>
+ <dd><p><code>gdb</code>, <code>gdb.printing</code>, <code>gdb.types</code>,
+ <code>os.path</code>, <code>re</code>, <code>sys</code> and <code>tempfile</code>,
+ </p>
+ </dd>
+ <dt><span>g++ testsuite</span></dt>
+ <dd><p><code>gcov</code>, <code>gzip</code>, <code>json</code>, <code>os</code> and <code>pytest</code>.
+ </p>
+ </dd>
+ <dt><span>c++ cxx api generation</span></dt>
+ <dd><p><code>csv</code>, <code>os</code>, <code>sys</code> and <code>time</code>.
+ </p>
+ </dd>
+ <dt><span>modula-2 documentation</span></dt>
+ <dd><p><code>argparse</code>, <code>os</code>, <code>pathlib</code>, <code>shutil</code> and
+ <code>sys</code>.
+ </p>
+ </dd>
+ <dt><span>git developer tools</span></dt>
+ <dd><p><code>os</code> and <code>sys</code>.
+ </p>
+ </dd>
+ <dt><span>ada documentation</span></dt>
+ <dd><p><code>latex_elements</code>, <code>os</code>, <code>pygments</code>, <code>re</code>,
+ <code>sys</code> and <code>time</code>.
+ </p></dd>
  </dl>
  
! </dd>
! </dl>
! 
! <span id="Tools_002fpackages-necessary-for-modifying-GCC"></span><h3 class="heading">Tools/packages necessary for modifying GCC</h3>
  <dl compact="compact">
! <dt><span>autoconf version 2.69</span></dt>
! <dt><span>GNU m4 version 1.4.6 (or later)</span></dt>
  <dd>
  <p>Necessary when modifying <samp>configure.ac</samp>, <samp>aclocal.m4</samp>, etc.
  to regenerate <samp>configure</samp> and <samp>config.in</samp> files.
  </p>
  </dd>
! <dt><span>automake version 1.15.1</span></dt>
  <dd>
  <p>Necessary when modifying a <samp>Makefile.am</samp> file to regenerate its
  associated <samp>Makefile.in</samp>.
*************** to a newer version, please update all th
*** 342,369 ****
  to the latest released version.
  </p>
  </dd>
! <dt>gettext version 0.14.5 (or later)</dt>
  <dd>
  <p>Needed to regenerate <samp>gcc.pot</samp>.
  </p>
  </dd>
! <dt>gperf version 2.7.2 (or later)</dt>
  <dd>
  <p>Necessary when modifying <code>gperf</code> input files, e.g.
  <samp>gcc/cp/cfns.gperf</samp> to regenerate its associated header file, e.g.
  <samp>gcc/cp/cfns.h</samp>.
  </p>
  </dd>
! <dt>DejaGnu version 1.5.3 (or later)</dt>
! <dt>Expect</dt>
! <dt>Tcl</dt>
  <dd>
  <p>Necessary to run the GCC testsuite; see the section on testing for
  details.
  </p>
  </dd>
! <dt>autogen version 5.5.4 (or later) and</dt>
! <dt>guile version 1.4.1 (or later)</dt>
  <dd>
  <p>Necessary to regenerate <samp>fixinc/fixincl.x</samp> from
  <samp>fixinc/inclhack.def</samp> and <samp>fixinc/*.tpl</samp>.
--- 383,410 ----
  to the latest released version.
  </p>
  </dd>
! <dt><span>gettext version 0.14.5 (or later)</span></dt>
  <dd>
  <p>Needed to regenerate <samp>gcc.pot</samp>.
  </p>
  </dd>
! <dt><span>gperf version 2.7.2 (or later)</span></dt>
  <dd>
  <p>Necessary when modifying <code>gperf</code> input files, e.g.
  <samp>gcc/cp/cfns.gperf</samp> to regenerate its associated header file, e.g.
  <samp>gcc/cp/cfns.h</samp>.
  </p>
  </dd>
! <dt><span>DejaGnu version 1.5.3 (or later)</span></dt>
! <dt><span>Expect</span></dt>
! <dt><span>Tcl</span></dt>
  <dd>
  <p>Necessary to run the GCC testsuite; see the section on testing for
  details.
  </p>
  </dd>
! <dt><span>autogen version 5.5.4 (or later) and</span></dt>
! <dt><span>guile version 1.4.1 (or later)</span></dt>
  <dd>
  <p>Necessary to regenerate <samp>fixinc/fixincl.x</samp> from
  <samp>fixinc/inclhack.def</samp> and <samp>fixinc/*.tpl</samp>.
*************** details.
*** 374,380 ****
  <samp>Makefile.tpl</samp> and <samp>Makefile.def</samp>.
  </p>
  </dd>
! <dt>Flex version 2.5.4 (or later)</dt>
  <dd>
  <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
--- 415,421 ----
  <samp>Makefile.tpl</samp> and <samp>Makefile.def</samp>.
  </p>
  </dd>
! <dt><span>Flex version 2.5.4 (or later)</span></dt>
  <dd>
  <p>Necessary when modifying <samp>*.l</samp> files.
  </p>
*************** files are not included in the version-co
*** 383,428 ****
  They are included in releases.
  </p>
  </dd>
! <dt>Texinfo version 4.7 (or later)</dt>
  <dd>
  <p>Necessary for running <code>makeinfo</code> when modifying <samp>*.texi</samp>
  files to test your changes.
  </p>
! <p>Necessary for running <code>make dvi</code> or <code>make pdf</code> to
! create printable documentation in DVI or PDF format.  Texinfo version
  4.8 or later is required for <code>make pdf</code>.
  </p>
! <p>Necessary to build GCC documentation during development because the
! generated output files are not included in the repository.  They are
! included in releases.
  </p>
  </dd>
! <dt>TeX (any working version)</dt>
  <dd>
  <p>Necessary for running <code>texi2dvi</code> and <code>texi2pdf</code>, which
  are used when running <code>make dvi</code> or <code>make pdf</code> to create
  DVI or PDF files, respectively.
  </p>
  </dd>
! <dt>Sphinx version 1.0 (or later)</dt>
  <dd>
  <p>Necessary to regenerate <samp>jit/docs/_build/texinfo</samp> from the <samp>.rst</samp>
  files in the directories below <samp>jit/docs</samp>.
  </p>
  </dd>
! <dt>git (any version)</dt>
! <dt>SSH (any version)</dt>
  <dd>
  <p>Necessary to access the source repository.  Public releases and weekly
  snapshots of the development sources are also available via HTTPS.
  </p>
  </dd>
! <dt>GNU diffutils version 2.7 (or later)</dt>
  <dd>
  <p>Useful when submitting patches for the GCC source code.
  </p>
  </dd>
! <dt>patch version 2.5.4 (or later)</dt>
  <dd>
  <p>Necessary when applying patches, created with <code>diff</code>, to one&rsquo;s
  own sources.
--- 424,477 ----
  They are included in releases.
  </p>
  </dd>
! <dt><span>Texinfo version 4.7 (or later)</span></dt>
  <dd>
  <p>Necessary for running <code>makeinfo</code> when modifying <samp>*.texi</samp>
  files to test your changes.
  </p>
! <p>Necessary for running <code>make dvi</code>, <code>make pdf</code>,
! or <code>make html</code> to create formatted documentation.  Texinfo version
  4.8 or later is required for <code>make pdf</code>.
  </p>
! <p>Necessary to build GCC documentation in info format during development
! because the generated output files are not included in the repository.
! (They are included in release tarballs.)
! </p>
! <p>Note that the minimum requirement is for a very old version of
! Texinfo, but recent versions of Texinfo produce better-quality output,
! especially for HTML format.  The version of Texinfo packaged with any
! current operating system distribution is likely to be adequate for
! building the documentation without error, but you may still want to
! install a newer release to get the best appearance and usability of
! the generated manuals.
  </p>
  </dd>
! <dt><span>TeX (any working version)</span></dt>
  <dd>
  <p>Necessary for running <code>texi2dvi</code> and <code>texi2pdf</code>, which
  are used when running <code>make dvi</code> or <code>make pdf</code> to create
  DVI or PDF files, respectively.
  </p>
  </dd>
! <dt><span>Sphinx version 1.0 (or later)</span></dt>
  <dd>
  <p>Necessary to regenerate <samp>jit/docs/_build/texinfo</samp> from the <samp>.rst</samp>
  files in the directories below <samp>jit/docs</samp>.
  </p>
  </dd>
! <dt><span>git (any version)</span></dt>
! <dt><span>SSH (any version)</span></dt>
  <dd>
  <p>Necessary to access the source repository.  Public releases and weekly
  snapshots of the development sources are also available via HTTPS.
  </p>
  </dd>
! <dt><span>GNU diffutils version 2.7 (or later)</span></dt>
  <dd>
  <p>Useful when submitting patches for the GCC source code.
  </p>
  </dd>
! <dt><span>patch version 2.5.4 (or later)</span></dt>
  <dd>
  <p>Necessary when applying patches, created with <code>diff</code>, to one&rsquo;s
  own sources.
diff -Nrcpad gcc-12.2.0/INSTALL/specific.html gcc-13.1.0/INSTALL/specific.html
*** gcc-12.2.0/INSTALL/specific.html	Fri Aug 19 08:15:36 2022
--- gcc-13.1.0/INSTALL/specific.html	Wed Apr 26 07:11:19 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Host/Target specific installation notes for GCC</title>
  
  <meta name="description" content="Host/Target specific installation notes for GCC">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 86,96 ****
  
  
  
! <a name="index-Specific"></a>
! <a name="index-Specific-installation-notes"></a>
! <a name="index-Target-specific-installation"></a>
! <a name="index-Host-specific-installation"></a>
! <a name="index-Target-specific-installation-notes"></a>
  
  <p>Please read this document carefully <em>before</em> installing the
  GNU Compiler Collection on your machine.
--- 80,93 ----
  
  
  
! 
! 
! 
! <span id="index-Specific"></span>
! <span id="index-Specific-installation-notes"></span>
! <span id="index-Target-specific-installation"></span>
! <span id="index-Host-specific-installation"></span>
! <span id="index-Target-specific-installation-notes"></span>
  
  <p>Please read this document carefully <em>before</em> installing the
  GNU Compiler Collection on your machine.
*************** information have to.
*** 103,113 ****
--- 100,116 ----
  <ul>
  <li> <a href="#aarch64-x-x">aarch64*-*-*</a>
  </li><li> <a href="#alpha-x-x">alpha*-*-*</a>
+ </li><li> <a href="#amdgcn-x-amdhsa">amdgcn-*-amdhsa</a>
  </li><li> <a href="#amd64-x-solaris2">amd64-*-solaris2*</a>
+ </li><li> <a href="#arc-x-elf32">arc-*-elf32</a>
+ </li><li> <a href="#arc-linux-uclibc">arc-linux-uclibc</a>
  </li><li> <a href="#arm-x-eabi">arm-*-eabi</a>
  </li><li> <a href="#avr">avr</a>
  </li><li> <a href="#bfin">Blackfin</a>
+ </li><li> <a href="#cris">cris</a>
  </li><li> <a href="#dos">DOS</a>
+ </li><li> <a href="#epiphany-x-elf">epiphany-*-elf</a>
+ </li><li> <a href="#ft32-x-elf">ft32-*-elf</a>
  </li><li> <a href="#x-x-freebsd">*-*-freebsd*</a>
  </li><li> <a href="#h8300-hms">h8300-hms</a>
  </li><li> <a href="#hppa-hp-hpux">hppa*-hp-hpux*</a>
*************** information have to.
*** 120,133 ****
  </li><li> <a href="#ia64-x-hpux">ia64-*-hpux*</a>
  </li><li> <a href="#x-ibm-aix">*-ibm-aix*</a>
  </li><li> <a href="#iq2000-x-elf">iq2000-*-elf</a>
  </li><li> <a href="#lm32-x-elf">lm32-*-elf</a>
  </li><li> <a href="#lm32-x-uclinux">lm32-*-uclinux</a>
  </li><li> <a href="#m32c-x-elf">m32c-*-elf</a>
  </li><li> <a href="#m32r-x-elf">m32r-*-elf</a>
  </li><li> <a href="#m68k-x-x">m68k-*-*</a>
! </li><li> <a href="#m68k-uclinux">m68k-uclinux</a>
  </li><li> <a href="#microblaze-x-elf">microblaze-*-elf</a>
  </li><li> <a href="#mips-x-x">mips-*-*</a>
  </li><li> <a href="#nds32le-x-elf">nds32le-*-elf</a>
  </li><li> <a href="#nds32be-x-elf">nds32be-*-elf</a>
  </li><li> <a href="#nvptx-x-none">nvptx-*-none</a>
--- 123,139 ----
  </li><li> <a href="#ia64-x-hpux">ia64-*-hpux*</a>
  </li><li> <a href="#x-ibm-aix">*-ibm-aix*</a>
  </li><li> <a href="#iq2000-x-elf">iq2000-*-elf</a>
+ </li><li> <a href="#loongarch">loongarch</a>
  </li><li> <a href="#lm32-x-elf">lm32-*-elf</a>
  </li><li> <a href="#lm32-x-uclinux">lm32-*-uclinux</a>
  </li><li> <a href="#m32c-x-elf">m32c-*-elf</a>
  </li><li> <a href="#m32r-x-elf">m32r-*-elf</a>
  </li><li> <a href="#m68k-x-x">m68k-*-*</a>
! </li><li> <a href="#m68k-x-uclinux">m68k-*-uclinux</a>
  </li><li> <a href="#microblaze-x-elf">microblaze-*-elf</a>
  </li><li> <a href="#mips-x-x">mips-*-*</a>
+ </li><li> <a href="#moxie-x-elf">moxie-*-elf</a>
+ </li><li> <a href="#msp430-x-elf">msp430-*-elf</a>
  </li><li> <a href="#nds32le-x-elf">nds32le-*-elf</a>
  </li><li> <a href="#nds32be-x-elf">nds32be-*-elf</a>
  </li><li> <a href="#nvptx-x-none">nvptx-*-none</a>
*************** information have to.
*** 147,152 ****
--- 153,160 ----
  </li><li> <a href="#riscv32-x-linux">riscv32-*-linux</a>
  </li><li> <a href="#riscv64-x-elf">riscv64-*-elf</a>
  </li><li> <a href="#riscv64-x-linux">riscv64-*-linux</a>
+ </li><li> <a href="#rl78-x-elf">rl78-*-elf</a>
+ </li><li> <a href="#rx-x-elf">rx-*-elf</a>
  </li><li> <a href="#s390-x-linux">s390-*-linux*</a>
  </li><li> <a href="#s390x-x-linux">s390x-*-linux*</a>
  </li><li> <a href="#s390x-ibm-tpf">s390x-ibm-tpf*</a>
*************** information have to.
*** 157,165 ****
  </li><li> <a href="#sparc64-x-solaris2">sparc64-*-solaris2*</a>
  </li><li> <a href="#sparcv9-x-solaris2">sparcv9-*-solaris2*</a>
  </li><li> <a href="#c6x-x-x">c6x-*-*</a>
- </li><li> <a href="#tilegx-x-linux">tilegx-*-linux*</a>
- </li><li> <a href="#tilegxbe-x-linux">tilegxbe-*-linux*</a>
- </li><li> <a href="#tilepro-x-linux">tilepro-*-linux*</a>
  </li><li> <a href="#visium-x-elf">visium-*-elf</a>
  </li><li> <a href="#x-x-vxworks">*-*-vxworks*</a>
  </li><li> <a href="#x86-64-x-x">x86_64-*-*, amd64-*-*</a>
--- 165,170 ----
*************** information have to.
*** 174,187 ****
  </li></ul>
  
  <ul>
! <li> <a href="#elf">all ELF targets</a> (SVR4, Solaris 2, etc.)
  </li></ul>
  
  
  <!-- -------- host/target specific issues start here ---------------- -->
  <hr />
! <a name="aarch64-x-x"></a><a name="aarch64*-*-*"></a>
! <h3 class="heading">aarch64*-*-*</h3>
  <p>Binutils pre 2.24 does not have support for selecting <samp>-mabi</samp> and
  does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
  not support option <samp>-mabi=ilp32</samp>.
--- 179,191 ----
  </li></ul>
  
  <ul>
! <li> <a href="#elf">all ELF targets</a> (SVR4, Solaris, etc.)
  </li></ul>
  
  
  <!-- -------- host/target specific issues start here ---------------- -->
  <hr />
! <span id="aarch64-x-x"></span><span id="aarch64*-*-*"></span><h3 class="heading">aarch64*-*-*</h3>
  <p>Binutils pre 2.24 does not have support for selecting <samp>-mabi</samp> and
  does not support ILP32.  If it is used to build GCC 4.9 or later, GCC will
  not support option <samp>-mabi=ilp32</samp>.
*************** protections by default.  This mechanism
*** 218,247 ****
  of the options are given at configure time.
  </p>
  <hr />
! <a name="alpha-x-x"></a><a name="alpha*-*-*"></a>
! <h3 class="heading">alpha*-*-*</h3>
  <p>This section contains general configuration information for all
  Alpha-based platforms using ELF.  In addition to reading this
  section, please read all other sections that match your target.
  </p>
  <hr />
! <a name="amd64-x-solaris2"></a><a name="amd64-*-solaris2*"></a>
! <h3 class="heading">amd64-*-solaris2*</h3>
  <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <a name="amdgcn-x-amdhsa"></a><a name="amdgcn-*-amdhsa"></a>
! <h3 class="heading">amdgcn-*-amdhsa</h3>
  <p>AMD GCN GPU target.
  </p>
! <p>Instead of GNU Binutils, you will need to install LLVM 6, or later, and copy
  <samp>bin/llvm-mc</samp> to <samp>amdgcn-amdhsa/bin/as</samp>,
  <samp>bin/lld</samp> to <samp>amdgcn-amdhsa/bin/ld</samp>,
  <samp>bin/llvm-nm</samp> to <samp>amdgcn-amdhsa/bin/nm</samp>, and
  <samp>bin/llvm-ar</samp> to both <samp>bin/amdgcn-amdhsa-ar</samp> and
  <samp>bin/amdgcn-amdhsa-ranlib</samp>.
  </p>
! <p>Use Newlib (2019-01-16, or newer).
  </p>
  <p>To run the binaries, install the HSA Runtime from the
  <a href="https://rocm.github.io">ROCm Platform</a>, and use
--- 222,248 ----
  of the options are given at configure time.
  </p>
  <hr />
! <span id="alpha-x-x"></span><span id="alpha*-*-*"></span><h3 class="heading">alpha*-*-*</h3>
  <p>This section contains general configuration information for all
  Alpha-based platforms using ELF.  In addition to reading this
  section, please read all other sections that match your target.
  </p>
  <hr />
! <span id="amd64-x-solaris2"></span><span id="amd64-*-solaris2*"></span><h3 class="heading">amd64-*-solaris2*</h3>
  <p>This is a synonym for &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <span id="amdgcn-x-amdhsa"></span><span id="amdgcn-*-amdhsa"></span><h3 class="heading">amdgcn-*-amdhsa</h3>
  <p>AMD GCN GPU target.
  </p>
! <p>Instead of GNU Binutils, you will need to install LLVM 13.0.1, or later, and copy
  <samp>bin/llvm-mc</samp> to <samp>amdgcn-amdhsa/bin/as</samp>,
  <samp>bin/lld</samp> to <samp>amdgcn-amdhsa/bin/ld</samp>,
  <samp>bin/llvm-nm</samp> to <samp>amdgcn-amdhsa/bin/nm</samp>, and
  <samp>bin/llvm-ar</samp> to both <samp>bin/amdgcn-amdhsa-ar</samp> and
  <samp>bin/amdgcn-amdhsa-ranlib</samp>.
  </p>
! <p>Use Newlib (4.3.0 or newer).
  </p>
  <p>To run the binaries, install the HSA Runtime from the
  <a href="https://rocm.github.io">ROCm Platform</a>, and use
*************** section, please read all other sections
*** 249,270 ****
  on the GPU.
  </p>
  <hr />
! <a name="arc-x-elf32"></a><a name="arc-*-elf32"></a>
! <h3 class="heading">arc-*-elf32</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-elf32 --with-cpu=<var>cpu</var> --enable-languages=&quot;c,c++&quot;</samp>&rsquo;
  to configure GCC, with <var>cpu</var> being one of &lsquo;<samp>arc600</samp>&rsquo;, &lsquo;<samp>arc601</samp>&rsquo;,
  or &lsquo;<samp>arc700</samp>&rsquo;.
  </p>
  <hr />
! <a name="arc-linux-uclibc"></a><a name="arc-linux-uclibc-1"></a>
! <h3 class="heading">arc-linux-uclibc</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <hr />
! <a name="arm-x-eabi"></a><a name="arm-*-eabi"></a>
! <h3 class="heading">arm-*-eabi</h3>
  <p>ARM-family processors.
  </p>
  <p>Building the Ada frontend commonly fails (an infinite loop executing
--- 250,268 ----
  on the GPU.
  </p>
  <hr />
! <span id="arc-x-elf32"></span><span id="arc-*-elf32"></span><h3 class="heading">arc-*-elf32</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-elf32 --with-cpu=<var>cpu</var> --enable-languages=&quot;c,c++&quot;</samp>&rsquo;
  to configure GCC, with <var>cpu</var> being one of &lsquo;<samp>arc600</samp>&rsquo;, &lsquo;<samp>arc601</samp>&rsquo;,
  or &lsquo;<samp>arc700</samp>&rsquo;.
  </p>
  <hr />
! <span id="arc-linux-uclibc"></span><span id="arc-linux-uclibc-1"></span><h3 class="heading">arc-linux-uclibc</h3>
  
  <p>Use &lsquo;<samp>configure --target=arc-linux-uclibc --with-cpu=arc700 --enable-languages=&quot;c,c++&quot;</samp>&rsquo; to configure GCC.
  </p>
  <hr />
! <span id="arm-x-eabi"></span><span id="arm-*-eabi"></span><h3 class="heading">arm-*-eabi</h3>
  <p>ARM-family processors.
  </p>
  <p>Building the Ada frontend commonly fails (an infinite loop executing
*************** or &lsquo;<samp>arc700</samp>&rsquo;.
*** 272,279 ****
  GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  </p>
  <hr />
! <a name="avr"></a><a name="avr-1"></a>
! <h3 class="heading">avr</h3>
  <p>ATMEL AVR-family micro controllers.  These are used in embedded
  applications.  There are no standard Unix configurations.
  See &ldquo;AVR Options&rdquo; in the main manual
--- 270,276 ----
  GNAT 4.6, 4.9 or 5 release branches are known to succeed.
  </p>
  <hr />
! <span id="avr"></span><span id="avr-1"></span><h3 class="heading">avr</h3>
  <p>ATMEL AVR-family micro controllers.  These are used in embedded
  applications.  There are no standard Unix configurations.
  See &ldquo;AVR Options&rdquo; in the main manual
*************** can also be obtained from:
*** 290,304 ****
  </li></ul>
  
  <p>The following error:
! </p><div class="smallexample">
! <pre class="smallexample">Error: register required
  </pre></div>
  
  <p>indicates that you should upgrade to a newer version of the binutils.
  </p>
  <hr />
! <a name="bfin"></a><a name="Blackfin"></a>
! <h3 class="heading">Blackfin</h3>
  <p>The Blackfin processor, an Analog Devices DSP.
  See &ldquo;Blackfin Options&rdquo; in the main manual
  </p>
--- 287,300 ----
  </li></ul>
  
  <p>The following error:
! </p><div class="example">
! <pre class="example">Error: register required
  </pre></div>
  
  <p>indicates that you should upgrade to a newer version of the binutils.
  </p>
  <hr />
! <span id="bfin"></span><span id="Blackfin"></span><h3 class="heading">Blackfin</h3>
  <p>The Blackfin processor, an Analog Devices DSP.
  See &ldquo;Blackfin Options&rdquo; in the main manual
  </p>
*************** See &ldquo;Blackfin Options&rdquo; in th
*** 306,328 ****
  are available at <a href="https://sourceforge.net/projects/adi-toolchain/">https://sourceforge.net/projects/adi-toolchain/</a>.
  </p>
  <hr />
! <a name="cr16"></a><a name="CR16"></a>
! <h3 class="heading">CR16</h3>
! <p>The CR16 CompactRISC architecture is a 16-bit architecture. This
! architecture is used in embedded applications.
! </p>
! 
! <p>See &ldquo;CR16 Options&rdquo; in the main manual for a list of CR16-specific options.
! </p>
! <p>Use &lsquo;<samp>configure --target=cr16-elf --enable-languages=c,c++</samp>&rsquo; to configure
! GCC&nbsp;for building a CR16 elf cross-compiler.
! </p>
! <p>Use &lsquo;<samp>configure --target=cr16-uclinux --enable-languages=c,c++</samp>&rsquo; to
! configure GCC&nbsp;for building a CR16 uclinux cross-compiler.
! </p>
! <hr />
! <a name="cris"></a><a name="CRIS"></a>
! <h3 class="heading">CRIS</h3>
  <p>CRIS is a CPU architecture in Axis Communications systems-on-a-chip, for
  example the ETRAX series.  These are used in embedded applications.
  </p>
--- 302,308 ----
  are available at <a href="https://sourceforge.net/projects/adi-toolchain/">https://sourceforge.net/projects/adi-toolchain/</a>.
  </p>
  <hr />
! <span id="cris"></span><span id="CRIS"></span><h3 class="heading">CRIS</h3>
  <p>CRIS is a CPU architecture in Axis Communications systems-on-a-chip, for
  example the ETRAX series.  These are used in embedded applications.
  </p>
*************** for a list of CRIS-specific options.
*** 332,339 ****
  <p>Use &lsquo;<samp>configure --target=cris-elf</samp>&rsquo; to configure GCC&nbsp;for building
  a cross-compiler for CRIS.
  <hr />
! <a name="dos"></a></p><a name="DOS"></a>
! <h3 class="heading">DOS</h3>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
  </p>
  <p>You cannot install GCC by itself on MSDOS; it will not compile under
--- 312,318 ----
  <p>Use &lsquo;<samp>configure --target=cris-elf</samp>&rsquo; to configure GCC&nbsp;for building
  a cross-compiler for CRIS.
  <hr />
! <span id="dos"></span></p><span id="DOS"></span><h3 class="heading">DOS</h3>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
  </p>
  <p>You cannot install GCC by itself on MSDOS; it will not compile under
*************** compilation package DJGPP, which include
*** 342,355 ****
  and includes all the necessary compilation tools and libraries.
  </p>
  <hr />
! <a name="epiphany-x-elf"></a><a name="epiphany-*-elf"></a>
! <h3 class="heading">epiphany-*-elf</h3>
  <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="x-x-freebsd"></a><a name="g_t*-*-freebsd*"></a>
! <h3 class="heading">*-*-freebsd*</h3>
  <p>In order to better utilize FreeBSD base system functionality and match
  the configuration of the system compiler, GCC 4.5 and above as well as
  GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
--- 321,332 ----
  and includes all the necessary compilation tools and libraries.
  </p>
  <hr />
! <span id="epiphany-x-elf"></span><span id="epiphany-*-elf"></span><h3 class="heading">epiphany-*-elf</h3>
  <p>Adapteva Epiphany.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="x-x-freebsd"></span><span id="g_t*-*-freebsd*"></span><h3 class="heading">*-*-freebsd*</h3>
  <p>In order to better utilize FreeBSD base system functionality and match
  the configuration of the system compiler, GCC 4.5 and above as well as
  GCC 4.4 past 2010-06-20 leverage SSP support in libc (which is present
*************** on FreeBSD 7 or later) and the use of <c
*** 359,366 ****
  by GCC 4.5 and above.
  </p>
  <p>We support FreeBSD using the ELF file format with DWARF 2 debugging
! for all CPU architectures.  You may use <samp>-gstabs</samp> instead of
! <samp>-g</samp>, if you really want the old debugging format.  There are
  no known issues with mixing object files and libraries with different
  debugging formats.  Otherwise, this release of GCC should now match
  more of the configuration used in the stock FreeBSD configuration of
--- 336,342 ----
  by GCC 4.5 and above.
  </p>
  <p>We support FreeBSD using the ELF file format with DWARF 2 debugging
! for all CPU architectures.  There are
  no known issues with mixing object files and libraries with different
  debugging formats.  Otherwise, this release of GCC should now match
  more of the configuration used in the stock FreeBSD configuration of
*************** properly on FreeBSD prior to the FreeBSD
*** 380,393 ****
  after 2.16.1.
  </p>
  <hr />
! <a name="ft32-x-elf"></a><a name="ft32-*-elf"></a>
! <h3 class="heading">ft32-*-elf</h3>
  <p>The FT32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="h8300-hms"></a><a name="h8300-hms-1"></a>
! <h3 class="heading">h8300-hms</h3>
  <p>Renesas H8/300 series of processors.
  </p>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
--- 356,367 ----
  after 2.16.1.
  </p>
  <hr />
! <span id="ft32-x-elf"></span><span id="ft32-*-elf"></span><h3 class="heading">ft32-*-elf</h3>
  <p>The FT32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="h8300-hms"></span><span id="h8300-hms-1"></span><h3 class="heading">h8300-hms</h3>
  <p>Renesas H8/300 series of processors.
  </p>
  <p>Please have a look at the <a href="binaries.html">binaries page</a>.
*************** first three arguments in function calls
*** 398,405 ****
  longer a multiple of 2 bytes.
  </p>
  <hr />
! <a name="hppa-hp-hpux"></a><a name="hppa*-hp-hpux*"></a>
! <h3 class="heading">hppa*-hp-hpux*</h3>
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
  </p>
  <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
--- 372,378 ----
  longer a multiple of 2 bytes.
  </p>
  <hr />
! <span id="hppa-hp-hpux"></span><span id="hppa*-hp-hpux*"></span><h3 class="heading">hppa*-hp-hpux*</h3>
  <p>Support for HP-UX version 9 and older was discontinued in GCC 3.4.
  </p>
  <p>We require using gas/binutils on all hppa platforms.  Version 2.19 or
*************** a list of the predefines used with each
*** 449,456 ****
  <p>More specific information to &lsquo;<samp>hppa*-hp-hpux*</samp>&rsquo; targets follows.
  </p>
  <hr />
! <a name="hppa-hp-hpux10"></a><a name="hppa*-hp-hpux10"></a>
! <h3 class="heading">hppa*-hp-hpux10</h3>
  <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
  <code>PHCO_19798</code> from HP.
  </p>
--- 422,428 ----
  <p>More specific information to &lsquo;<samp>hppa*-hp-hpux*</samp>&rsquo; targets follows.
  </p>
  <hr />
! <span id="hppa-hp-hpux10"></span><span id="hppa*-hp-hpux10"></span><h3 class="heading">hppa*-hp-hpux10</h3>
  <p>For hpux10.20, we <em>highly</em> recommend you pick up the latest sed patch
  <code>PHCO_19798</code> from HP.
  </p>
*************** problems in using C++ on this target.  H
*** 460,467 ****
  with the one implemented under HP-UX 11 using secondary definitions.
  </p>
  <hr />
! <a name="hppa-hp-hpux11"></a><a name="hppa*-hp-hpux11"></a>
! <h3 class="heading">hppa*-hp-hpux11</h3>
  <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
  be used to compile GCC 3.0 and up.
  </p>
--- 432,438 ----
  with the one implemented under HP-UX 11 using secondary definitions.
  </p>
  <hr />
! <span id="hppa-hp-hpux11"></span><span id="hppa*-hp-hpux11"></span><h3 class="heading">hppa*-hp-hpux11</h3>
  <p>GCC 3.0 and up support HP-UX 11.  GCC 2.95.x is not supported and cannot
  be used to compile GCC 3.0 and up.
  </p>
*************** versioning with <samp>--disable-symvers<
*** 564,571 ****
  supported, so <samp>--enable-threads=dce</samp> does not work.
  </p>
  <hr />
! <a name="x-x-linux-gnu"></a><a name="g_t*-*-linux-gnu"></a>
! <h3 class="heading">*-*-linux-gnu</h3>
  <p>The <code>.init_array</code> and <code>.fini_array</code> sections are enabled
  unconditionally which requires at least glibc 2.1 and binutils 2.12.
  </p>
--- 535,541 ----
  supported, so <samp>--enable-threads=dce</samp> does not work.
  </p>
  <hr />
! <span id="x-x-linux-gnu"></span><span id="g_t*-*-linux-gnu"></span><h3 class="heading">*-*-linux-gnu</h3>
  <p>The <code>.init_array</code> and <code>.fini_array</code> sections are enabled
  unconditionally which requires at least glibc 2.1 and binutils 2.12.
  </p>
*************** in glibc 2.2.5 and later.  More informat
*** 574,581 ****
  libstdc++-v3 documentation.
  </p>
  <hr />
! <a name="ix86-x-linux"></a><a name="i_003f86-*-linux*"></a>
! <h3 class="heading">i?86-*-linux*</h3>
  <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
  See <a href="https://gcc.gnu.org/PR10877">bug 10877</a> for more information.
  </p>
--- 544,550 ----
  libstdc++-v3 documentation.
  </p>
  <hr />
! <span id="ix86-x-linux"></span><span id="i_003f86-*-linux*"></span><h3 class="heading">i?86-*-linux*</h3>
  <p>As of GCC 3.3, binutils 2.13.1 or later is required for this platform.
  See <a href="https://gcc.gnu.org/PR10877">bug 10877</a> for more information.
  </p>
*************** possible you have a hardware problem.  F
*** 584,616 ****
  found on <a href="https://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  </p>
  <hr />
! <a name="ix86-x-solaris2"></a><a name="i_003f86-*-solaris2*"></a>
! <h3 class="heading">i?86-*-solaris2*</h3>
  <p>Use this for Solaris 11.3 or later on x86 and x86-64 systems.  Starting
  with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2*</samp>&rsquo; or
  &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo; configuration that corresponds to
  &lsquo;<samp>sparcv9-sun-solaris2*</samp>&rsquo;.
  </p>
- <p>It is recommended that you configure GCC to use the GNU assembler.  The
- versions included in Solaris 11.3, from GNU binutils 2.23.1 or
- newer (available as <samp>/usr/bin/gas</samp> and
- <samp>/usr/gnu/bin/as</samp>), work fine.  The current version, from GNU
- binutils 2.34, is known to work.  Recent versions of the Solaris assembler in
- <samp>/usr/bin/as</samp> work almost as well, though.
- </p>
- <p>For linking, the Solaris linker is preferred.  If you want to use the GNU
- linker instead, the version in Solaris 11.3, from GNU binutils 2.23.1 or
- newer (in <samp>/usr/gnu/bin/ld</samp> and <samp>/usr/bin/gld</samp>), works,
- as does the latest version, from GNU binutils 2.34.
- </p>
- <p>To use GNU <code>as</code>, configure with the options
- <samp>--with-gnu-as --with-as=/usr/gnu/bin/as</samp>.  It may be necessary
- to configure with <samp>--without-gnu-ld --with-ld=/usr/ccs/bin/ld</samp> to
- guarantee use of Solaris <code>ld</code>.
- </p>
  <hr />
! <a name="ia64-x-linux"></a><a name="ia64-*-linux"></a>
! <h3 class="heading">ia64-*-linux</h3>
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
  </p>
--- 553,566 ----
  found on <a href="https://www.bitwizard.nl/sig11/">www.bitwizard.nl</a>.
  </p>
  <hr />
! <span id="ix86-x-solaris2"></span><span id="i_003f86-*-solaris2*"></span><h3 class="heading">i?86-*-solaris2*</h3>
  <p>Use this for Solaris 11.3 or later on x86 and x86-64 systems.  Starting
  with GCC 4.7, there is also a 64-bit &lsquo;<samp>amd64-*-solaris2*</samp>&rsquo; or
  &lsquo;<samp>x86_64-*-solaris2*</samp>&rsquo; configuration that corresponds to
  &lsquo;<samp>sparcv9-sun-solaris2*</samp>&rsquo;.
  </p>
  <hr />
! <span id="ia64-x-linux"></span><span id="ia64-*-linux"></span><h3 class="heading">ia64-*-linux</h3>
  <p>IA-64 processor (also known as IPF, or Itanium Processor Family)
  running GNU/Linux.
  </p>
*************** running GNU/Linux.
*** 619,626 ****
  later.
  </p>
  <hr />
! <a name="ia64-x-hpux"></a><a name="ia64-*-hpux*"></a>
! <h3 class="heading">ia64-*-hpux*</h3>
  <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
  the option <samp>--with-gnu-as</samp> may be necessary.
--- 569,575 ----
  later.
  </p>
  <hr />
! <span id="ia64-x-hpux"></span><span id="ia64-*-hpux*"></span><h3 class="heading">ia64-*-hpux*</h3>
  <p>Building GCC on this target requires the GNU Assembler.  The bundled HP
  assembler will not work.  To prevent GCC from using the wrong assembler,
  the option <samp>--with-gnu-as</samp> may be necessary.
*************** removed and the system libunwind library
*** 633,640 ****
  </p>
  <hr />
  <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <a name="x-ibm-aix"></a><a name="g_t*-ibm-aix*"></a>
! <h3 class="heading">*-ibm-aix*</h3>
  <p>Support for AIX version 3 and older was discontinued in GCC 3.4.
  Support for AIX version 4.2 and older was discontinued in GCC 4.5.
  </p>
--- 582,588 ----
  </p>
  <hr />
  <!-- rs6000-ibm-aix*, powerpc-ibm-aix* -->
! <span id="x-ibm-aix"></span><span id="g_t*-ibm-aix*"></span><h3 class="heading">*-ibm-aix*</h3>
  <p>Support for AIX version 3 and older was discontinued in GCC 3.4.
  Support for AIX version 4.2 and older was discontinued in GCC 4.5.
  </p>
*************** with an earlier release of GCC is recomm
*** 651,658 ****
  requires a larger data segment, which can be enabled through the
  <var>LDR_CNTRL</var> environment variable, e.g.,
  </p>
! <div class="smallexample">
! <pre class="smallexample">% LDR_CNTRL=MAXDATA=0x50000000
  % export LDR_CNTRL
  </pre></div>
  
--- 599,606 ----
  requires a larger data segment, which can be enabled through the
  <var>LDR_CNTRL</var> environment variable, e.g.,
  </p>
! <div class="example">
! <pre class="example">% LDR_CNTRL=MAXDATA=0x50000000
  % export LDR_CNTRL
  </pre></div>
  
*************** with a version of GCC built for an earli
*** 663,670 ****
  <p>To speed up the configuration phases of bootstrapping and installing GCC,
  one may use GNU Bash instead of AIX <code>/bin/sh</code>, e.g.,
  </p>
! <div class="smallexample">
! <pre class="smallexample">% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  </pre></div>
  
--- 611,618 ----
  <p>To speed up the configuration phases of bootstrapping and installing GCC,
  one may use GNU Bash instead of AIX <code>/bin/sh</code>, e.g.,
  </p>
! <div class="example">
! <pre class="example">% CONFIG_SHELL=/opt/freeware/bin/bash
  % export CONFIG_SHELL
  </pre></div>
  
*************** APAR IY26685 (AIX 4.3) or APAR IY25528 (
*** 714,720 ****
  fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
  referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  </p>
! <a name="TransferAixShobj"></a><p>&lsquo;<samp>libstdc++</samp>&rsquo; in GCC 3.4 increments the major version number of the
  shared object and GCC installation places the <samp>libstdc++.a</samp>
  shared library in a common location which will overwrite the and GCC
  3.3 version of the shared library.  Applications either need to be
--- 662,668 ----
  fix for another AIX Assembler bug and a co-dependent AIX Archiver fix
  referenced as APAR IY53606 (AIX 5.2) or as APAR IY54774 (AIX 5.1)
  </p>
! <span id="TransferAixShobj"></span><p>&lsquo;<samp>libstdc++</samp>&rsquo; in GCC 3.4 increments the major version number of the
  shared object and GCC installation places the <samp>libstdc++.a</samp>
  shared library in a common location which will overwrite the and GCC
  3.3 version of the shared library.  Applications either need to be
*************** multilib <samp>libstdc++.a</samp> instal
*** 728,747 ****
  </p>
  <p>Extract the shared objects from the currently installed
  <samp>libstdc++.a</samp> archive:
! </p><div class="smallexample">
! <pre class="smallexample">% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Enable the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! </p><div class="smallexample">
! <pre class="smallexample">% strip -e libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Archive the runtime-only shared object in the GCC 3.4
  <samp>libstdc++.a</samp> archive:
! </p><div class="smallexample">
! <pre class="smallexample">% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Eventually, the
--- 676,695 ----
  </p>
  <p>Extract the shared objects from the currently installed
  <samp>libstdc++.a</samp> archive:
! </p><div class="example">
! <pre class="example">% ar -x libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Enable the &lsquo;<samp>F_LOADONLY</samp>&rsquo; flag so that the shared object will be
  available for runtime dynamic loading, but not linking:
! </p><div class="example">
! <pre class="example">% strip -e libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Archive the runtime-only shared object in the GCC 3.4
  <samp>libstdc++.a</samp> archive:
! </p><div class="example">
! <pre class="example">% ar -q libstdc++.a libstdc++.so.4 libstdc++.so.5
  </pre></div>
  
  <p>Eventually, the
*************** environment variable to &lsquo;<samp>C</
*** 798,843 ****
  switch and using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <hr />
! <a name="iq2000-x-elf"></a><a name="iq2000-*-elf"></a>
! <h3 class="heading">iq2000-*-elf</h3>
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  </p>
  <hr />
! <a name="lm32-x-elf"></a><a name="lm32-*-elf"></a>
! <h3 class="heading">lm32-*-elf</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="lm32-x-uclinux"></a><a name="lm32-*-uclinux"></a>
! <h3 class="heading">lm32-*-uclinux</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
  </p>
  <hr />
! <a name="loongarch"></a><a name="LoongArch"></a>
! <h3 class="heading">LoongArch</h3>
  <p>LoongArch processor.
  The following LoongArch targets are available:
  </p><dl compact="compact">
! <dt><code>loongarch64-linux-gnu*</code></dt>
  <dd><p>LoongArch processor running GNU/Linux.  This target triplet may be coupled
  with a small set of possible suffixes to identify their default ABI type:
  </p><dl compact="compact">
! <dt><code>f64</code></dt>
  <dd><p>Uses <code>lp64d/base</code> ABI by default.
  </p></dd>
! <dt><code>f32</code></dt>
  <dd><p>Uses <code>lp64f/base</code> ABI by default.
  </p></dd>
! <dt><code>sf</code></dt>
  <dd><p>Uses <code>lp64s/base</code> ABI by default.
  </p></dd>
  </dl>
  
  </dd>
! <dt><code>loongarch64-linux-gnu</code></dt>
  <dd><p>Same as <code>loongarch64-linux-gnuf64</code>, but may be used with
  <samp>--with-abi=*</samp> to configure the default ABI type.
  </p></dd>
--- 746,787 ----
  switch and using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <hr />
! <span id="iq2000-x-elf"></span><span id="iq2000-*-elf"></span><h3 class="heading">iq2000-*-elf</h3>
  <p>Vitesse IQ2000 processors.  These are used in embedded
  applications.  There are no standard Unix configurations.
  </p>
  <hr />
! <span id="lm32-x-elf"></span><span id="lm32-*-elf"></span><h3 class="heading">lm32-*-elf</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="lm32-x-uclinux"></span><span id="lm32-*-uclinux"></span><h3 class="heading">lm32-*-uclinux</h3>
  <p>Lattice Mico32 processor.
  This configuration is intended for embedded systems running uClinux.
  </p>
  <hr />
! <span id="loongarch"></span><span id="LoongArch"></span><h3 class="heading">LoongArch</h3>
  <p>LoongArch processor.
  The following LoongArch targets are available:
  </p><dl compact="compact">
! <dt><span><code>loongarch64-linux-gnu*</code></span></dt>
  <dd><p>LoongArch processor running GNU/Linux.  This target triplet may be coupled
  with a small set of possible suffixes to identify their default ABI type:
  </p><dl compact="compact">
! <dt><span><code>f64</code></span></dt>
  <dd><p>Uses <code>lp64d/base</code> ABI by default.
  </p></dd>
! <dt><span><code>f32</code></span></dt>
  <dd><p>Uses <code>lp64f/base</code> ABI by default.
  </p></dd>
! <dt><span><code>sf</code></span></dt>
  <dd><p>Uses <code>lp64s/base</code> ABI by default.
  </p></dd>
  </dl>
  
  </dd>
! <dt><span><code>loongarch64-linux-gnu</code></span></dt>
  <dd><p>Same as <code>loongarch64-linux-gnuf64</code>, but may be used with
  <samp>--with-abi=*</samp> to configure the default ABI type.
  </p></dd>
*************** with a small set of possible suffixes to
*** 847,866 ****
  <a href="https://github.com/loongson/LoongArch-Documentation">https://github.com/loongson/LoongArch-Documentation</a>.
  </p>
  <hr />
! <a name="m32c-x-elf"></a><a name="m32c-*-elf"></a>
! <h3 class="heading">m32c-*-elf</h3>
  <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="m32r-x-elf"></a><a name="m32r-*-elf"></a>
! <h3 class="heading">m32r-*-elf</h3>
  <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="m68k-x-x"></a><a name="m68k-*-*"></a>
! <h3 class="heading">m68k-*-*</h3>
  <p>By default,
  &lsquo;<samp>m68k-*-elf*</samp>&rsquo;, &lsquo;<samp>m68k-*-rtems</samp>&rsquo;,  &lsquo;<samp>m68k-*-uclinux</samp>&rsquo; and
  &lsquo;<samp>m68k-*-linux</samp>&rsquo;
--- 791,807 ----
  <a href="https://github.com/loongson/LoongArch-Documentation">https://github.com/loongson/LoongArch-Documentation</a>.
  </p>
  <hr />
! <span id="m32c-x-elf"></span><span id="m32c-*-elf"></span><h3 class="heading">m32c-*-elf</h3>
  <p>Renesas M32C processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="m32r-x-elf"></span><span id="m32r-*-elf"></span><h3 class="heading">m32r-*-elf</h3>
  <p>Renesas M32R processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="m68k-x-x"></span><span id="m68k-*-*"></span><h3 class="heading">m68k-*-*</h3>
  <p>By default,
  &lsquo;<samp>m68k-*-elf*</samp>&rsquo;, &lsquo;<samp>m68k-*-rtems</samp>&rsquo;,  &lsquo;<samp>m68k-*-uclinux</samp>&rsquo; and
  &lsquo;<samp>m68k-*-linux</samp>&rsquo;
*************** be a <samp>-mcpu</samp> argument or one
*** 886,907 ****
  <p>GCC requires at least binutils version 2.17 on these targets.
  </p>
  <hr />
! <a name="m68k-x-uclinux"></a><a name="m68k-*-uclinux"></a>
! <h3 class="heading">m68k-*-uclinux</h3>
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
  &lsquo;<samp>m68k-linux-gnu</samp>&rsquo; ABI rather than the &lsquo;<samp>m68k-elf</samp>&rsquo; ABI.
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  </p>
  <hr />
! <a name="microblaze-x-elf"></a><a name="microblaze-*-elf"></a>
! <h3 class="heading">microblaze-*-elf</h3>
  <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="mips-x-x"></a><a name="mips-*-*"></a>
! <h3 class="heading">mips-*-*</h3>
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
  sections for all it&rsquo;s [sic] sectons [sic]&rdquo;, don&rsquo;t worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
--- 827,845 ----
  <p>GCC requires at least binutils version 2.17 on these targets.
  </p>
  <hr />
! <span id="m68k-x-uclinux"></span><span id="m68k-*-uclinux"></span><h3 class="heading">m68k-*-uclinux</h3>
  <p>GCC 4.3 changed the uClinux configuration so that it uses the
  &lsquo;<samp>m68k-linux-gnu</samp>&rsquo; ABI rather than the &lsquo;<samp>m68k-elf</samp>&rsquo; ABI.
  It also added improved support for C++ and flat shared libraries,
  both of which were ABI changes.
  </p>
  <hr />
! <span id="microblaze-x-elf"></span><span id="microblaze-*-elf"></span><h3 class="heading">microblaze-*-elf</h3>
  <p>Xilinx MicroBlaze processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="mips-x-x"></span><span id="mips-*-*"></span><h3 class="heading">mips-*-*</h3>
  <p>If on a MIPS system you get an error message saying &ldquo;does not have gp
  sections for all it&rsquo;s [sic] sectons [sic]&rdquo;, don&rsquo;t worry about it.  This
  happens whenever you use GAS with the MIPS linker, but there is not
*************** the use of break, use the <samp>--with-d
*** 941,953 ****
  use traps on systems that support them.
  </p>
  <hr />
! <a name="moxie-x-elf"></a><a name="moxie-*-elf"></a>
! <h3 class="heading">moxie-*-elf</h3>
  <p>The moxie processor.
  </p>
  <hr />
! <a name="msp430-x-elf"></a><a name="msp430-*-elf*"></a>
! <h3 class="heading">msp430-*-elf*</h3>
  <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
  </p>
--- 879,889 ----
  use traps on systems that support them.
  </p>
  <hr />
! <span id="moxie-x-elf"></span><span id="moxie-*-elf"></span><h3 class="heading">moxie-*-elf</h3>
  <p>The moxie processor.
  </p>
  <hr />
! <span id="msp430-x-elf"></span><span id="msp430-*-elf*"></span><h3 class="heading">msp430-*-elf*</h3>
  <p>TI MSP430 processor.
  This configuration is intended for embedded systems.
  </p>
*************** in a minimal run-time environment by def
*** 966,983 ****
  </li></ul>
  
  <hr />
! <a name="nds32le-x-elf"></a><a name="nds32le-*-elf"></a>
! <h3 class="heading">nds32le-*-elf</h3>
  <p>Andes NDS32 target in little endian mode.
  </p>
  <hr />
! <a name="nds32be-x-elf"></a><a name="nds32be-*-elf"></a>
! <h3 class="heading">nds32be-*-elf</h3>
  <p>Andes NDS32 target in big endian mode.
  </p>
  <hr />
! <a name="nvptx-x-none"></a><a name="nvptx-*-none"></a>
! <h3 class="heading">nvptx-*-none</h3>
  <p>Nvidia PTX target.
  </p>
  <p>Instead of GNU binutils, you will need to install
--- 902,916 ----
  </li></ul>
  
  <hr />
! <span id="nds32le-x-elf"></span><span id="nds32le-*-elf"></span><h3 class="heading">nds32le-*-elf</h3>
  <p>Andes NDS32 target in little endian mode.
  </p>
  <hr />
! <span id="nds32be-x-elf"></span><span id="nds32be-*-elf"></span><h3 class="heading">nds32be-*-elf</h3>
  <p>Andes NDS32 target in big endian mode.
  </p>
  <hr />
! <span id="nvptx-x-none"></span><span id="nvptx-*-none"></span><h3 class="heading">nvptx-*-none</h3>
  <p>Nvidia PTX target.
  </p>
  <p>Instead of GNU binutils, you will need to install
*************** in a minimal run-time environment by def
*** 985,992 ****
  Tell GCC where to find it:
  <samp>--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</samp>.
  </p>
! <p>You will need newlib 3.0 git revision
! cd31fbb2aea25f94d7ecedc9db16dfc87ab0c316 or later.  It can be
  automatically built together with GCC.  For this, add a symbolic link
  to nvptx-newlib&rsquo;s <samp>newlib</samp> directory to the directory containing
  the GCC sources.
--- 918,924 ----
  Tell GCC where to find it:
  <samp>--with-build-time-tools=[install-nvptx-tools]/nvptx-none/bin</samp>.
  </p>
! <p>You will need newlib 4.3.0 or later.  It can be
  automatically built together with GCC.  For this, add a symbolic link
  to nvptx-newlib&rsquo;s <samp>newlib</samp> directory to the directory containing
  the GCC sources.
*************** the GCC sources.
*** 994,1021 ****
  <p>Use the <samp>--disable-sjlj-exceptions</samp> and
  <samp>--enable-newlib-io-long-long</samp> options when configuring.
  </p>
  <hr />
! <a name="or1k-x-elf"></a><a name="or1k-*-elf"></a>
! <h3 class="heading">or1k-*-elf</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="or1k-x-linux"></a><a name="or1k-*-linux"></a>
! <h3 class="heading">or1k-*-linux</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  </p>
  <hr />
! <a name="powerpc-x-x"></a><a name="powerpc-*-*"></a>
! <h3 class="heading">powerpc-*-*</h3>
  <p>You can specify a default version for the <samp>-mcpu=<var>cpu_type</var></samp>
  switch by using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <p>You will need GNU binutils 2.20 or newer.
  </p>
  <hr />
! <a name="powerpc-x-darwin"></a><a name="powerpc-*-darwin*"></a>
! <h3 class="heading">powerpc-*-darwin*</h3>
  <p>PowerPC running Darwin (Mac OS X kernel).
  </p>
  <p>Pre-installed versions of Mac OS X may not include any developer tools,
--- 926,958 ----
  <p>Use the <samp>--disable-sjlj-exceptions</samp> and
  <samp>--enable-newlib-io-long-long</samp> options when configuring.
  </p>
+ <p>The <samp>--with-arch</samp> option may be specified to override the
+ default value for the <samp>-march</samp> option, and to also build
+ corresponding target libraries.
+ The default is <samp>--with-arch=sm_30</samp>.
+ </p>
+ <p>For example, if <samp>--with-arch=sm_70</samp> is specified,
+ <samp>-march=sm_30</samp> and <samp>-march=sm_70</samp> target libraries are
+ built, and code generation defaults to <samp>-march=sm_70</samp>.
+ </p>
  <hr />
! <span id="or1k-x-elf"></span><span id="or1k-*-elf"></span><h3 class="heading">or1k-*-elf</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="or1k-x-linux"></span><span id="or1k-*-linux"></span><h3 class="heading">or1k-*-linux</h3>
  <p>The OpenRISC 1000 32-bit processor with delay slots.
  </p>
  <hr />
! <span id="powerpc-x-x"></span><span id="powerpc-*-*"></span><h3 class="heading">powerpc-*-*</h3>
  <p>You can specify a default version for the <samp>-mcpu=<var>cpu_type</var></samp>
  switch by using the configure option <samp>--with-cpu-<var>cpu_type</var></samp>.
  </p>
  <p>You will need GNU binutils 2.20 or newer.
  </p>
  <hr />
! <span id="powerpc-x-darwin"></span><span id="powerpc-*-darwin*"></span><h3 class="heading">powerpc-*-darwin*</h3>
  <p>PowerPC running Darwin (Mac OS X kernel).
  </p>
  <p>Pre-installed versions of Mac OS X may not include any developer tools,
*************** cctools-590.36 package referenced from
*** 1029,1188 ****
  on systems older than 10.3.9 (aka darwin7.9.0).
  </p>
  <hr />
! <a name="powerpc-x-elf"></a><a name="powerpc-*-elf"></a>
! <h3 class="heading">powerpc-*-elf</h3>
  <p>PowerPC system in big endian mode, running System V.4.
  </p>
  <hr />
! <a name="powerpc-x-linux-gnu"></a><a name="powerpc*-*-linux-gnu*"></a>
! <h3 class="heading">powerpc*-*-linux-gnu*</h3>
  <p>PowerPC system in big endian mode running Linux.
  </p>
  <hr />
! <a name="powerpc-x-netbsd"></a><a name="powerpc-*-netbsd*"></a>
! <h3 class="heading">powerpc-*-netbsd*</h3>
  <p>PowerPC system in big endian mode running NetBSD.
  </p>
  <hr />
! <a name="powerpc-x-eabisim"></a><a name="powerpc-*-eabisim"></a>
! <h3 class="heading">powerpc-*-eabisim</h3>
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  </p>
  <hr />
! <a name="powerpc-x-eabi"></a><a name="powerpc-*-eabi"></a>
! <h3 class="heading">powerpc-*-eabi</h3>
  <p>Embedded PowerPC system in big endian mode.
  </p>
  <hr />
! <a name="powerpcle-x-elf"></a><a name="powerpcle-*-elf"></a>
! <h3 class="heading">powerpcle-*-elf</h3>
  <p>PowerPC system in little endian mode, running System V.4.
  </p>
  <hr />
! <a name="powerpcle-x-eabisim"></a><a name="powerpcle-*-eabisim"></a>
! <h3 class="heading">powerpcle-*-eabisim</h3>
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  </p>
  <hr />
! <a name="powerpcle-x-eabi"></a><a name="powerpcle-*-eabi"></a>
! <h3 class="heading">powerpcle-*-eabi</h3>
  <p>Embedded PowerPC system in little endian mode.
  </p>
  <hr />
! <a name="rl78-x-elf"></a><a name="rl78-*-elf"></a>
! <h3 class="heading">rl78-*-elf</h3>
  <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="riscv32-x-elf"></a><a name="riscv32-*-elf"></a>
! <h3 class="heading">riscv32-*-elf</h3>
  <p>The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv32-x-linux"></a><a name="riscv32-*-linux"></a>
! <h3 class="heading">riscv32-*-linux</h3>
  <p>The RISC-V RV32 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv64-x-elf"></a><a name="riscv64-*-elf"></a>
! <h3 class="heading">riscv64-*-elf</h3>
  <p>The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="riscv64-x-linux"></a><a name="riscv64-*-linux"></a>
! <h3 class="heading">riscv64-*-linux</h3>
  <p>The RISC-V RV64 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <a name="rx-x-elf"></a><a name="rx-*-elf"></a>
! <h3 class="heading">rx-*-elf</h3>
  <p>The Renesas RX processor.
  </p>
  <hr />
! <a name="s390-x-linux"></a><a name="s390-*-linux*"></a>
! <h3 class="heading">s390-*-linux*</h3>
  <p>S/390 system running GNU/Linux for S/390.
  </p>
  <hr />
! <a name="s390x-x-linux"></a><a name="s390x-*-linux*"></a>
! <h3 class="heading">s390x-*-linux*</h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  </p>
  <hr />
! <a name="s390x-ibm-tpf"></a><a name="s390x-ibm-tpf*"></a>
! <h3 class="heading">s390x-ibm-tpf*</h3>
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
  </p>
  <hr />
! <a name="x-x-solaris2"></a><a name="g_t*-*-solaris2*"></a>
! <h3 class="heading">*-*-solaris2*</h3>
! <p>Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
  GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
  </p>
  <p>Solaris 11.3 provides GCC 4.5.2, 4.7.3, and 4.8.2 as
! <code>/usr/gcc/4.5/bin/gcc</code> or similar.  Newer Solaris versions
! provide one or more of GCC 5, 7, and 9.  Alternatively,
! you can install a pre-built GCC to bootstrap and install GCC.  See the
! <a href="binaries.html">binaries page</a> for details.
  </p>
! <p>The Solaris 2 <code>/bin/sh</code> will often fail to configure
! &lsquo;<samp>libstdc++-v3</samp>&rsquo;.  We therefore recommend using the
! following initial sequence of commands
  </p>
! <div class="smallexample">
! <pre class="smallexample">% CONFIG_SHELL=/bin/ksh
! % export CONFIG_SHELL
! </pre></div>
! 
! <p>and proceed as described in <a href="configure.html">the configure instructions</a>.
! In addition we strongly recommend specifying an absolute path to invoke
! <code><var>srcdir</var>/configure</code>.
  </p>
! <p>In Solaris 11, you need to check for <code>system/header</code>,
! <code>system/linker</code>, and <code>developer/assembler</code> packages.
  </p>
! <p>Trying to use the linker and other tools in
! <samp>/usr/ucb</samp> to install GCC has been observed to cause trouble.
! For example, the linker may hang indefinitely.  The fix is to remove
! <samp>/usr/ucb</samp> from your <code>PATH</code>.
  </p>
! <p>The build process works more smoothly with the legacy Solaris tools so, if you
! have <samp>/usr/xpg4/bin</samp> in your <code>PATH</code>, we recommend that you place
! <samp>/usr/bin</samp> before <samp>/usr/xpg4/bin</samp> for the duration of the build.
  </p>
! <p>We recommend the use of the Solaris assembler or the GNU assembler, in
! conjunction with the Solaris linker.  The GNU <code>as</code>
! versions included in Solaris 11.3,
! from GNU binutils 2.23.1 or newer (in <samp>/usr/bin/gas</samp> and
! <samp>/usr/gnu/bin/as</samp>), are known to work.
! The current version, from GNU binutils 2.34,
! is known to work as well.  Note that your mileage may vary
! if you use a combination of the GNU tools and the Solaris tools: while the
! combination GNU <code>as</code> + Solaris <code>ld</code> should reasonably work,
! the reverse combination Solaris <code>as</code> + GNU <code>ld</code> may fail to
! build or cause memory corruption at runtime in some cases for C++ programs.
! GNU <code>ld</code> usually works as well.  Again, the current
! version (2.34) is known to work, but generally lacks platform specific
! features, so better stay with Solaris <code>ld</code>.  To use the LTO linker
! plugin (<samp>-fuse-linker-plugin</samp>) with GNU <code>ld</code>, GNU
! binutils <em>must</em> be configured with <samp>--enable-largefile</samp>.
  </p>
! <p>To enable symbol versioning in &lsquo;<samp>libstdc++</samp>&rsquo; with the Solaris linker,
! you need to have any version of GNU <code>c++filt</code>, which is part of
! GNU binutils.  &lsquo;<samp>libstdc++</samp>&rsquo; symbol versioning will be disabled if no
! appropriate version is found.  Solaris <code>c++filt</code> from the Solaris
! Studio compilers does <em>not</em> work.
  </p>
  <p>In order to build the GNU D compiler, GDC, a working &lsquo;<samp>libphobos</samp>&rsquo; is
  needed.  That library wasn&rsquo;t built by default in GCC 9&ndash;11 on SPARC, or
--- 966,1112 ----
  on systems older than 10.3.9 (aka darwin7.9.0).
  </p>
  <hr />
! <span id="powerpc-x-elf"></span><span id="powerpc-*-elf"></span><h3 class="heading">powerpc-*-elf</h3>
  <p>PowerPC system in big endian mode, running System V.4.
  </p>
  <hr />
! <span id="powerpc-x-linux-gnu"></span><span id="powerpc*-*-linux-gnu*"></span><h3 class="heading">powerpc*-*-linux-gnu*</h3>
  <p>PowerPC system in big endian mode running Linux.
  </p>
  <hr />
! <span id="powerpc-x-netbsd"></span><span id="powerpc-*-netbsd*"></span><h3 class="heading">powerpc-*-netbsd*</h3>
  <p>PowerPC system in big endian mode running NetBSD.
  </p>
  <hr />
! <span id="powerpc-x-eabisim"></span><span id="powerpc-*-eabisim"></span><h3 class="heading">powerpc-*-eabisim</h3>
  <p>Embedded PowerPC system in big endian mode for use in running under the
  PSIM simulator.
  </p>
  <hr />
! <span id="powerpc-x-eabi"></span><span id="powerpc-*-eabi"></span><h3 class="heading">powerpc-*-eabi</h3>
  <p>Embedded PowerPC system in big endian mode.
  </p>
  <hr />
! <span id="powerpcle-x-elf"></span><span id="powerpcle-*-elf"></span><h3 class="heading">powerpcle-*-elf</h3>
  <p>PowerPC system in little endian mode, running System V.4.
  </p>
  <hr />
! <span id="powerpcle-x-eabisim"></span><span id="powerpcle-*-eabisim"></span><h3 class="heading">powerpcle-*-eabisim</h3>
  <p>Embedded PowerPC system in little endian mode for use in running under
  the PSIM simulator.
  </p>
  <hr />
! <span id="powerpcle-x-eabi"></span><span id="powerpcle-*-eabi"></span><h3 class="heading">powerpcle-*-eabi</h3>
  <p>Embedded PowerPC system in little endian mode.
  </p>
  <hr />
! <span id="rl78-x-elf"></span><span id="rl78-*-elf"></span><h3 class="heading">rl78-*-elf</h3>
  <p>The Renesas RL78 processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="riscv32-x-elf"></span><span id="riscv32-*-elf"></span><h3 class="heading">riscv32-*-elf</h3>
  <p>The RISC-V RV32 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="riscv32-x-linux"></span><span id="riscv32-*-linux"></span><h3 class="heading">riscv32-*-linux</h3>
  <p>The RISC-V RV32 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="riscv64-x-elf"></span><span id="riscv64-*-elf"></span><h3 class="heading">riscv64-*-elf</h3>
  <p>The RISC-V RV64 instruction set.
  This configuration is intended for embedded systems.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="riscv64-x-linux"></span><span id="riscv64-*-linux"></span><h3 class="heading">riscv64-*-linux</h3>
  <p>The RISC-V RV64 instruction set running GNU/Linux.
  This (and all other RISC-V) targets require the binutils 2.30 release.
  </p>
  <hr />
! <span id="rx-x-elf"></span><span id="rx-*-elf"></span><h3 class="heading">rx-*-elf</h3>
  <p>The Renesas RX processor.
  </p>
  <hr />
! <span id="s390-x-linux"></span><span id="s390-*-linux*"></span><h3 class="heading">s390-*-linux*</h3>
  <p>S/390 system running GNU/Linux for S/390.
  </p>
  <hr />
! <span id="s390x-x-linux"></span><span id="s390x-*-linux*"></span><h3 class="heading">s390x-*-linux*</h3>
  <p>zSeries system (64-bit) running GNU/Linux for zSeries.
  </p>
  <hr />
! <span id="s390x-ibm-tpf"></span><span id="s390x-ibm-tpf*"></span><h3 class="heading">s390x-ibm-tpf*</h3>
  <p>zSeries system (64-bit) running TPF.  This platform is
  supported as cross-compilation target only.
  </p>
  <hr />
! <span id="x-x-solaris2"></span><span id="g_t*-*-solaris2*"></span><h3 class="heading">*-*-solaris2*</h3>
! <p>Support for Solaris 11.3 and earlier has been obsoleted in GCC 13, but
! can still be enabled by configuring with <samp>--enable-obsolete</samp>.
! Support for Solaris 10 has been removed in GCC 10.  Support for Solaris
  9 has been removed in GCC 5.  Support for Solaris 8 has been removed in
  GCC 4.8.  Support for Solaris 7 has been removed in GCC 4.6.
  </p>
  <p>Solaris 11.3 provides GCC 4.5.2, 4.7.3, and 4.8.2 as
! <code>/usr/gcc/4.5/bin/gcc</code> or similar.  Solaris 11.4
! provides one or more of GCC 5, 7, 9, 10, 11, and 12.
  </p>
! <p>You need to install the <code>system/header</code>, <code>system/linker</code>, and
! <code>developer/assembler</code> packages.
  </p>
! <p>Trying to use the compatibility tools in <samp>/usr/ucb</samp>, from the
! <code>compatibility/ucb</code> package, to install GCC has been observed to
! cause trouble.  The fix is to remove <samp>/usr/ucb</samp> from your
! <code>PATH</code>.
  </p>
! <p>The build process works more smoothly with the legacy Solaris tools so,
! if you have <samp>/usr/xpg4/bin</samp> in your <code>PATH</code>, we recommend that
! you place <samp>/usr/bin</samp> before <samp>/usr/xpg4/bin</samp> for the duration
! of the build.
  </p>
! <p>We recommend the use of the Solaris assembler or the GNU assembler, in
! conjunction with the Solaris linker.
  </p>
! <p>The GNU <code>as</code> versions included in Solaris 11.3, from GNU
! binutils 2.23.1 or newer (in <samp>/usr/bin/gas</samp> and
! <samp>/usr/gnu/bin/as</samp>), are known to work.  The version from GNU
! binutils 2.40 is known to work as well.  Recent versions of the Solaris
! assembler in <samp>/usr/bin/as</samp> work almost as well, though.  To use GNU
! <code>as</code>, configure with the options <samp>--with-gnu-as
! --with-as=/usr/gnu/bin/as</samp>.
  </p>
! <p>For linking, the Solaris linker is preferred.  If you want to use the
! GNU linker instead, the version in Solaris 11.3, from GNU binutils
! 2.23.1 or newer (in <samp>/usr/gnu/bin/ld</samp> and <samp>/usr/bin/gld</samp>),
! works, as does the version from GNU binutils 2.40.  However, it
! generally lacks platform specific features, so better stay with Solaris
! <code>ld</code>.  To use the LTO linker plugin
! (<samp>-fuse-linker-plugin</samp>) with GNU <code>ld</code>, GNU binutils
! <em>must</em> be configured with <samp>--enable-largefile</samp>.  To use
! Solaris <code>ld</code>, we recommend to configure with
! <samp>--without-gnu-ld --with-ld=/usr/bin/ld</samp> to guarantee the
! right linker is found irrespective of the user&rsquo;s <code>PATH</code>.
  </p>
! <p>Note that your mileage may vary if you use a combination of the GNU
! tools and the Solaris tools: while the combination GNU <code>as</code> and
! Solaris <code>ld</code> works well, the reverse combination Solaris
! <code>as</code> with GNU <code>ld</code> may fail to build or cause memory
! corruption at runtime in some cases for C++ programs.
! </p>
! <p>To enable symbol versioning in &lsquo;<samp>libstdc++</samp>&rsquo; and other runtime
! libraries with the Solaris linker, you need to have any version of GNU
! <code>c++filt</code>, which is part of GNU binutils.  Symbol versioning
! will be disabled if no appropriate version is found.  Solaris
! <code>c++filt</code> from the Solaris Studio compilers does <em>not</em>
! work.
! </p>
! <p>In order to build the GNU Ada compiler, GNAT, a working GNAT is needed.
! Since Solaris 11.4 SRU 39, GNAT 11 or 12 is bundled in the
! <code>developer/gcc/gcc-gnat</code> package.
  </p>
  <p>In order to build the GNU D compiler, GDC, a working &lsquo;<samp>libphobos</samp>&rsquo; is
  needed.  That library wasn&rsquo;t built by default in GCC 9&ndash;11 on SPARC, or
*************** need to provide a more recent one.
*** 1205,1212 ****
  </li></ul>
  
  <hr />
! <a name="sparc-x-x"></a><a name="sparc*-*-*"></a>
! <h3 class="heading">sparc*-*-*</h3>
  <p>This section contains general configuration information for all
  SPARC-based platforms.  In addition to reading this section, please
  read all other sections that match your target.
--- 1129,1135 ----
  </li></ul>
  
  <hr />
! <span id="sparc-x-x"></span><span id="sparc*-*-*"></span><h3 class="heading">sparc*-*-*</h3>
  <p>This section contains general configuration information for all
  SPARC-based platforms.  In addition to reading this section, please
  read all other sections that match your target.
*************** of the exact versions of these libraries
*** 1218,1225 ****
  in <a href="prerequisites.html">the prerequisites</a>.
  </p>
  <hr />
! <a name="sparc-sun-solaris2"></a><a name="sparc-sun-solaris2*"></a>
! <h3 class="heading">sparc-sun-solaris2*</h3>
  <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
  produced are smaller than the ones produced using Solaris native tools;
  this difference is quite significant for binaries containing debugging
--- 1141,1147 ----
  in <a href="prerequisites.html">the prerequisites</a>.
  </p>
  <hr />
! <span id="sparc-sun-solaris2"></span><span id="sparc-sun-solaris2*"></span><h3 class="heading">sparc-sun-solaris2*</h3>
  <p>When GCC is configured to use GNU binutils 2.14 or later, the binaries
  produced are smaller than the ones produced using Solaris native tools;
  this difference is quite significant for binaries containing debugging
*************** information.
*** 1228,1308 ****
  <p>Starting with Solaris 7, the operating system is capable of executing
  64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports
  this; the <samp>-m64</samp> option enables 64-bit code generation.
- However, if all you want is code tuned for the UltraSPARC CPU, you
- should try the <samp>-mtune=ultrasparc</samp> option instead, which produces
- code that, unlike full 64-bit code, can still run on non-UltraSPARC
- machines.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
! library or the MPC library on a Solaris 7 or later system, the canonical
! target triplet must be specified as the <code>build</code> parameter on the
! configure line.  This target triplet can be obtained by invoking <code>./config.guess</code> in the toplevel source directory of GCC (and
! not that of GMP or MPFR or MPC).  For example on a Solaris 11 system:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% ./configure --build=sparc-sun-solaris2.11 --prefix=xxx
  </pre></div>
  
  <hr />
! <a name="sparc-x-linux"></a><a name="sparc-*-linux*"></a>
! <h3 class="heading">sparc-*-linux*</h3>
  
  <hr />
! <a name="sparc64-x-solaris2"></a><a name="sparc64-*-solaris2*"></a>
! <h3 class="heading">sparc64-*-solaris2*</h3>
  <p>When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
! specifying &lsquo;<samp>CC='gcc -m64' CXX='gcc-m64'</samp>&rsquo; to <code>configure</code>.
! Additionally, you <em>must</em> pass <samp>--build=sparc64-sun-solaris2.11</samp>
! or <samp>--build=sparcv9-sun-solaris2.11</samp> because <samp>config.guess</samp>
  misdetects this situation, which can cause build failures.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library, the canonical target triplet must be specified
! as the <code>build</code> parameter on the configure line.  For example
! on a Solaris 11 system:
  </p>
! <div class="smallexample">
! <pre class="smallexample">% ./configure --build=sparc64-sun-solaris2.11 --prefix=xxx
  </pre></div>
  
  <hr />
! <a name="sparcv9-x-solaris2"></a><a name="sparcv9-*-solaris2*"></a>
! <h3 class="heading">sparcv9-*-solaris2*</h3>
! <p>This is a synonym for &lsquo;<samp>sparc64-*-solaris2*</samp>&rsquo;.
! </p>
! <hr />
! <a name="c6x-x-x"></a><a name="c6x-*-*"></a>
! <h3 class="heading">c6x-*-*</h3>
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
  </p>
  <hr />
! <a name="tilegx-*-linux"></a><a name="tilegx-*-linux*"></a>
! <h3 class="heading">tilegx-*-linux*</h3>
! <p>The TILE-Gx processor in little endian mode, running GNU/Linux.  This
! port requires binutils-2.22 or newer.
! </p>
! <hr />
! <a name="tilegxbe-*-linux"></a><a name="tilegxbe-*-linux*"></a>
! <h3 class="heading">tilegxbe-*-linux*</h3>
! <p>The TILE-Gx processor in big endian mode, running GNU/Linux.  This
! port requires binutils-2.23 or newer.
! </p>
! <hr />
! <a name="tilepro-*-linux"></a><a name="tilepro-*-linux*"></a>
! <h3 class="heading">tilepro-*-linux*</h3>
! <p>The TILEPro processor running GNU/Linux.  This port requires
! binutils-2.22 or newer.
! </p>
! <hr />
! <a name="visium-x-elf"></a><a name="visium-*-elf"></a>
! <h3 class="heading">visium-*-elf</h3>
  <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <a name="x-x-vxworks"></a><a name="g_t*-*-vxworks*"></a>
! <h3 class="heading">*-*-vxworks*</h3>
  <p>Support for VxWorks is in flux.  At present GCC supports <em>only</em> the
  very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
  We welcome patches for other architectures supported by VxWorks 5.5.
--- 1150,1203 ----
  <p>Starting with Solaris 7, the operating system is capable of executing
  64-bit SPARC V9 binaries.  GCC 3.1 and later properly supports
  this; the <samp>-m64</samp> option enables 64-bit code generation.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
! library or the MPC library on Solaris, the canonical target triplet must
! be specified as the <code>build</code> parameter on the <code>configure</code>
! line.  This target triplet can be obtained by invoking
! <code>./config.guess</code> in the toplevel source directory of GCC (and
! not that of GMP or MPFR or MPC).  For example:
  </p>
! <div class="example">
! <pre class="example">% <var>srcdir</var>/configure --build=sparc-sun-solaris2.11 --prefix=<var>dirname</var>
  </pre></div>
  
  <hr />
! <span id="sparc-x-linux"></span><span id="sparc-*-linux*"></span><h3 class="heading">sparc-*-linux*</h3>
  
  <hr />
! <span id="sparc64-x-solaris2"></span><span id="sparc64-*-solaris2*"></span><h3 class="heading">sparc64-*-solaris2*</h3>
! <p>This is a synonym for &lsquo;<samp>sparcv9-*-solaris2*</samp>&rsquo;.
! </p>
! <hr />
! <span id="sparcv9-x-solaris2"></span><span id="sparcv9-*-solaris2*"></span><h3 class="heading">sparcv9-*-solaris2*</h3>
! 
  <p>When configuring a 64-bit-default GCC on Solaris/SPARC, you must use a
  build compiler that generates 64-bit code, either by default or by
! specifying &lsquo;<samp>CC='gcc -m64' CXX='g++ -m64' GDC='gdc -m64'</samp>&rsquo; to <code>configure</code>.
! Additionally, you <em>must</em> pass <samp>--build=sparcv9-sun-solaris2.11</samp>
! or <samp>--build=sparc64-sun-solaris2.11</samp> because <samp>config.guess</samp>
  misdetects this situation, which can cause build failures.
  </p>
  <p>When configuring the GNU Multiple Precision Library (GMP), the MPFR
  library or the MPC library, the canonical target triplet must be specified
! as the <code>build</code> parameter on the <code>configure</code> line.  For example:
  </p>
! <div class="example">
! <pre class="example">% <var>srcdir</var>/configure --build=sparcv9-sun-solaris2.11 --prefix=<var>dirname</var>
  </pre></div>
  
  <hr />
! <span id="c6x-x-x"></span><span id="c6x-*-*"></span><h3 class="heading">c6x-*-*</h3>
  <p>The C6X family of processors. This port requires binutils-2.22 or newer.
  </p>
  <hr />
! <span id="visium-x-elf"></span><span id="visium-*-elf"></span><h3 class="heading">visium-*-elf</h3>
  <p>CDS VISIUMcore processor.
  This configuration is intended for embedded systems.
  </p>
  <hr />
! <span id="x-x-vxworks"></span><span id="g_t*-*-vxworks*"></span><h3 class="heading">*-*-vxworks*</h3>
  <p>Support for VxWorks is in flux.  At present GCC supports <em>only</em> the
  very recent VxWorks 5.5 (aka Tornado 2.2) release, and only on PowerPC.
  We welcome patches for other architectures supported by VxWorks 5.5.
*************** that file to add the module to your kern
*** 1335,1353 ****
  VxWorks will incorporate this module.)
  </p>
  <hr />
! <a name="x86-64-x-x"></a><a name="x86_005f64-*-*_002c-amd64-*-*"></a>
! <h3 class="heading">x86_64-*-*, amd64-*-*</h3>
  <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
  both 64-bit x86-64 and 32-bit x86 code (via the <samp>-m32</samp> switch).
  </p>
  <hr />
! <a name="x86-64-x-solaris2"></a><a name="x86_005f64-*-solaris2*"></a>
! <h3 class="heading">x86_64-*-solaris2*</h3>
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
! processor (&lsquo;<samp>amd64-*-*</samp>&rsquo; is an alias for &lsquo;<samp>x86_64-*-*</samp>&rsquo;) on
! Solaris 10 or later.  Unlike other systems, without special options a
  bi-arch compiler is built which generates 32-bit code by default, but
  can generate 64-bit x86-64 code with the <samp>-m64</samp> switch.  Since
  GCC 4.7, there is also a configuration that defaults to 64-bit code, but
--- 1230,1246 ----
  VxWorks will incorporate this module.)
  </p>
  <hr />
! <span id="x86-64-x-x"></span><span id="x86_005f64-*-*_002c-amd64-*-*"></span><h3 class="heading">x86_64-*-*, amd64-*-*</h3>
  <p>GCC supports the x86-64 architecture implemented by the AMD64 processor
  (amd64-*-* is an alias for x86_64-*-*) on GNU/Linux, FreeBSD and NetBSD.
  On GNU/Linux the default is a bi-arch compiler which is able to generate
  both 64-bit x86-64 and 32-bit x86 code (via the <samp>-m32</samp> switch).
  </p>
  <hr />
! <span id="x86-64-x-solaris2"></span><span id="x86_005f64-*-solaris2*"></span><h3 class="heading">x86_64-*-solaris2*</h3>
  <p>GCC also supports the x86-64 architecture implemented by the AMD64
! processor (&lsquo;<samp>amd64-*-*</samp>&rsquo; is an alias for &lsquo;<samp>x86_64-*-*</samp>&rsquo;).
! Unlike other systems, without special options a
  bi-arch compiler is built which generates 32-bit code by default, but
  can generate 64-bit x86-64 code with the <samp>-m64</samp> switch.  Since
  GCC 4.7, there is also a configuration that defaults to 64-bit code, but
*************** as 64-bit code, configure with <samp>--t
*** 1357,1364 ****
  and &lsquo;<samp>CC=gcc -m64</samp>&rsquo;.
  </p>
  <hr />
! <a name="xtensa-x-elf"></a><a name="xtensa*-*-elf"></a>
! <h3 class="heading">xtensa*-*-elf</h3>
  <p>This target is intended for embedded Xtensa systems using the
  &lsquo;<samp>newlib</samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
--- 1250,1256 ----
  and &lsquo;<samp>CC=gcc -m64</samp>&rsquo;.
  </p>
  <hr />
! <span id="xtensa-x-elf"></span><span id="xtensa*-*-elf"></span><h3 class="heading">xtensa*-*-elf</h3>
  <p>This target is intended for embedded Xtensa systems using the
  &lsquo;<samp>newlib</samp>&rsquo; C library.  It uses ELF but does not support shared
  objects.  Designed-defined instructions specified via the
*************** downloaded files include a customized co
*** 1373,1380 ****
  which you can use to replace the default header file.
  </p>
  <hr />
! <a name="xtensa-x-linux"></a><a name="xtensa*-*-linux*"></a>
! <h3 class="heading">xtensa*-*-linux*</h3>
  <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
  position-independent code (PIC) regardless of whether the
--- 1265,1271 ----
  which you can use to replace the default header file.
  </p>
  <hr />
! <span id="xtensa-x-linux"></span><span id="xtensa*-*-linux*"></span><h3 class="heading">xtensa*-*-linux*</h3>
  <p>This target is for Xtensa systems running GNU/Linux.  It supports ELF
  shared objects and the GNU C library (glibc).  It also generates
  position-independent code (PIC) regardless of whether the
*************** respects, this target is the same as the
*** 1383,1401 ****
  <a href="#xtensa*-*-elf">&lsquo;<samp>xtensa*-*-elf</samp>&rsquo;</a> target.
  </p>
  <hr />
! <a name="windows"></a><a name="Microsoft-Windows"></a>
! <h3 class="heading">Microsoft Windows</h3>
  
! <a name="Intel-16-bit-versions"></a>
! <h4 class="subheading">Intel 16-bit versions</h4>
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
  </p>
  <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
  </p>
! <a name="Intel-32-bit-versions"></a>
! <h4 class="subheading">Intel 32-bit versions</h4>
  <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
  XP, and Windows Vista, are supported by several different target
  platforms.  These targets differ in which Windows subsystem they target
--- 1274,1289 ----
  <a href="#xtensa*-*-elf">&lsquo;<samp>xtensa*-*-elf</samp>&rsquo;</a> target.
  </p>
  <hr />
! <span id="windows"></span><span id="Microsoft-Windows"></span><h3 class="heading">Microsoft Windows</h3>
  
! <span id="Intel-16-bit-versions"></span><h4 class="subheading">Intel 16-bit versions</h4>
  <p>The 16-bit versions of Microsoft Windows, such as Windows 3.1, are not
  supported.
  </p>
  <p>However, the 32-bit port has limited support for Microsoft
  Windows 3.11 in the Win32s environment, as a target only.  See below.
  </p>
! <span id="Intel-32-bit-versions"></span><h4 class="subheading">Intel 32-bit versions</h4>
  <p>The 32-bit versions of Windows, including Windows 95, Windows NT, Windows
  XP, and Windows Vista, are supported by several different target
  platforms.  These targets differ in which Windows subsystem they target
*************** the Win32 subsystem that provides a subs
*** 1410,1428 ****
  <a href="https://www.mkssoftware.com">https://www.mkssoftware.com</a> for more information.
  </li></ul>
  
! <a name="Intel-64-bit-versions"></a>
! <h4 class="subheading">Intel 64-bit versions</h4>
  <p>GCC contains support for x86-64 using the mingw-w64
  runtime library, available from <a href="https://www.mingw-w64.org/downloads/">https://www.mingw-w64.org/downloads/</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
  </p>
! <a name="Windows-CE"></a>
! <h4 class="subheading">Windows CE</h4>
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
  </p>
! <a name="Other-Windows-Platforms"></a>
! <h4 class="subheading">Other Windows Platforms</h4>
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
  </p>
  <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
--- 1298,1313 ----
  <a href="https://www.mkssoftware.com">https://www.mkssoftware.com</a> for more information.
  </li></ul>
  
! <span id="Intel-64-bit-versions"></span><h4 class="subheading">Intel 64-bit versions</h4>
  <p>GCC contains support for x86-64 using the mingw-w64
  runtime library, available from <a href="https://www.mingw-w64.org/downloads/">https://www.mingw-w64.org/downloads/</a>.
  This library should be used with the target triple x86_64-pc-mingw32.
  </p>
! <span id="Windows-CE"></span><h4 class="subheading">Windows CE</h4>
  <p>Windows CE is supported as a target only on Hitachi
  SuperH (sh-wince-pe), and MIPS (mips-wince-pe).
  </p>
! <span id="Other-Windows-Platforms"></span><h4 class="subheading">Other Windows Platforms</h4>
  <p>GCC no longer supports Windows NT on the Alpha or PowerPC.
  </p>
  <p>GCC no longer supports the Windows POSIX subsystem.  However, it does
*************** support the Interix subsystem.  See abov
*** 1430,1443 ****
  </p>
  <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used.
  </p>
- <p>PW32 (i386-pc-pw32) support was never completed, and the project seems to
- be inactive.  See <a href="http://pw32.sourceforge.net/">http://pw32.sourceforge.net/</a> for more information.
- </p>
  <p>UWIN support has been removed due to a lack of maintenance.
  </p>
  <hr />
! <a name="x-x-cygwin"></a><a name="g_t*-*-cygwin"></a>
! <h3 class="heading">*-*-cygwin</h3>
  <p>Ports of GCC are included with the
  <a href="http://www.cygwin.com/">Cygwin environment</a>.
  </p>
--- 1315,1324 ----
  </p>
  <p>Old target names including *-*-winnt and *-*-windowsnt are no longer used.
  </p>
  <p>UWIN support has been removed due to a lack of maintenance.
  </p>
  <hr />
! <span id="x-x-cygwin"></span><span id="g_t*-*-cygwin"></span><h3 class="heading">*-*-cygwin</h3>
  <p>Ports of GCC are included with the
  <a href="http://www.cygwin.com/">Cygwin environment</a>.
  </p>
*************** the latest official GNU binutils release
*** 1451,1458 ****
  or version 2.20 or above if building your own.
  </p>
  <hr />
! <a name="x-x-mingw32"></a><a name="g_t*-*-mingw32"></a>
! <h3 class="heading">*-*-mingw32</h3>
  <p>GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default semantics
  of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes.
--- 1332,1338 ----
  or version 2.20 or above if building your own.
  </p>
  <hr />
! <span id="x-x-mingw32"></span><span id="g_t*-*-mingw32"></span><h3 class="heading">*-*-mingw32</h3>
  <p>GCC will build with and support only MinGW runtime 3.12 and later.
  Earlier versions of headers are incompatible with the new default semantics
  of <code>extern inline</code> in <code>-std=c99</code> and <code>-std=gnu99</code> modes.
*************** version 2.16 or above containing support
*** 1462,1469 ****
  assembler pseudo-op.
  </p>
  <hr />
! <a name="older"></a><a name="Older-systems"></a>
! <h3 class="heading">Older systems</h3>
  <p>GCC contains support files for many older (1980s and early
  1990s) Unix variants.  For the most part, support for these systems
  has not been deliberately removed, but it has not been maintained for
--- 1342,1348 ----
  assembler pseudo-op.
  </p>
  <hr />
! <span id="older"></span><span id="Older-systems"></span><h3 class="heading">Older systems</h3>
  <p>GCC contains support files for many older (1980s and early
  1990s) Unix variants.  For the most part, support for these systems
  has not been deliberately removed, but it has not been maintained for
*************** about GCC on such systems (which may no
*** 1506,1513 ****
  current GCC) is to be found in the GCC texinfo manual.
  </p>
  <hr />
! <a name="elf"></a><a name="all-ELF-targets-_0028SVR4_002c-Solaris-2_002c-etc_002e_0029"></a>
! <h3 class="heading">all ELF targets (SVR4, Solaris 2, etc.)</h3>
  <p>C++ support is significantly better on ELF targets if you use the
  <a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
  inlines, vtables and template instantiations will be discarded
--- 1385,1391 ----
  current GCC) is to be found in the GCC texinfo manual.
  </p>
  <hr />
! <span id="elf"></span><span id="all-ELF-targets-_0028SVR4_002c-Solaris_002c-etc_002e_0029"></span><h3 class="heading">all ELF targets (SVR4, Solaris, etc.)</h3>
  <p>C++ support is significantly better on ELF targets if you use the
  <a href="./configure.html#with-gnu-ld">GNU linker</a>; duplicate copies of
  inlines, vtables and template instantiations will be discarded
diff -Nrcpad gcc-12.2.0/INSTALL/test.html gcc-13.1.0/INSTALL/test.html
*** gcc-12.2.0/INSTALL/test.html	Fri Aug 19 08:15:37 2022
--- gcc-13.1.0/INSTALL/test.html	Wed Apr 26 07:11:20 2023
***************
*** 1,6 ****
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
--- 1,9 ----
  <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  <html>
! <!-- Created by GNU Texinfo 6.8, https://www.gnu.org/software/texinfo/ -->
! <head>
! <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
! <!-- Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  Permission is granted to copy, distribute and/or modify this document
  under the terms of the GNU Free Documentation License, Version 1.3 or
*************** A GNU Manual
*** 19,27 ****
  You have freedom to copy and modify this GNU Manual, like GNU
       software.  Copies published by the Free Software Foundation raise
       funds for GNU development. -->
- <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <title>Installing GCC: Testing</title>
  
  <meta name="description" content="Installing GCC: Testing">
--- 22,27 ----
*************** You have freedom to copy and modify this
*** 29,58 ****
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
  <style type="text/css">
  <!--
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
- blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
- blockquote.smallquotation {font-size: smaller}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
- div.lisp {margin-left: 3.2em}
- div.smalldisplay {margin-left: 3.2em}
- div.smallexample {margin-left: 3.2em}
- div.smalllisp {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
- pre.smalldisplay {font-family: inherit; font-size: smaller}
- pre.smallexample {font-size: smaller}
- pre.smallformat {font-family: inherit; font-size: smaller}
- pre.smalllisp {font-size: smaller}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
  ul.no-bullet {list-style: none}
  -->
  </style>
--- 29,52 ----
  <meta name="resource-type" content="document">
  <meta name="distribution" content="global">
  <meta name="Generator" content="makeinfo">
+ <meta name="viewport" content="width=device-width,initial-scale=1">
+ 
  <style type="text/css">
  <!--
+ a.copiable-anchor {visibility: hidden; text-decoration: none; line-height: 0em}
  a.summary-letter {text-decoration: none}
  blockquote.indentedblock {margin-right: 0em}
  div.display {margin-left: 3.2em}
  div.example {margin-left: 3.2em}
  kbd {font-style: oblique}
  pre.display {font-family: inherit}
  pre.format {font-family: inherit}
  pre.menu-comment {font-family: serif}
  pre.menu-preformatted {font-family: serif}
  span.nolinebreak {white-space: nowrap}
  span.roman {font-family: initial; font-weight: normal}
  span.sansserif {font-family: sans-serif; font-weight: normal}
+ span:hover a.copiable-anchor {visibility: visible}
  ul.no-bullet {list-style: none}
  -->
  </style>
*************** ul.no-bullet {list-style: none}
*** 83,91 ****
  
  
  
! <a name="index-Testing"></a>
! <a name="index-Installing-GCC_003a-Testing"></a>
! <a name="index-Testsuite"></a>
  
  <p>Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
--- 77,88 ----
  
  
  
! 
! 
! 
! <span id="index-Testing"></span>
! <span id="index-Installing-GCC_003a-Testing"></span>
! <span id="index-Testsuite"></span>
  
  <p>Before you install GCC, we encourage you to run the testsuites and to
  compare your results with results from a similar configuration that have
*************** but it can give you confidence in your n
*** 99,107 ****
  problems before you install and start using your new GCC.
  </p>
  <p>First, you must have <a href="download.html">downloaded the testsuites</a>.
! These are part of the full distribution, but if you downloaded the
! &ldquo;core&rdquo; compiler plus any front ends, you must download the testsuites
! separately.
  </p>
  <p>Second, you must have the testing tools installed.  This includes
  <a href="https://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
--- 96,102 ----
  problems before you install and start using your new GCC.
  </p>
  <p>First, you must have <a href="download.html">downloaded the testsuites</a>.
! These are included in the source tarball.
  </p>
  <p>Second, you must have the testing tools installed.  This includes
  <a href="https://www.gnu.org/software/dejagnu/">DejaGnu</a>, Tcl, and Expect;
*************** installed are not in the <code>PATH</cod
*** 113,120 ****
  environment variables appropriately, as in the following example (which
  assumes that DejaGnu has been installed under <samp>/usr/local</samp>):
  </p>
! <div class="smallexample">
! <pre class="smallexample">TCL_LIBRARY = /usr/local/share/tcl8.0
  DEJAGNULIBS = /usr/local/share/dejagnu
  </pre></div>
  
--- 108,115 ----
  environment variables appropriately, as in the following example (which
  assumes that DejaGnu has been installed under <samp>/usr/local</samp>):
  </p>
! <div class="example">
! <pre class="example">TCL_LIBRARY = /usr/local/share/tcl8.0
  DEJAGNULIBS = /usr/local/share/dejagnu
  </pre></div>
  
*************** portability in the DejaGnu code.)
*** 124,131 ****
  </p>
  
  <p>Finally, you can run the testsuite (which may take a long time):
! </p><div class="smallexample">
! <pre class="smallexample">cd <var>objdir</var>; make -k check
  </pre></div>
  
  <p>This will test various components of GCC, such as compiler
--- 119,126 ----
  </p>
  
  <p>Finally, you can run the testsuite (which may take a long time):
! </p><div class="example">
! <pre class="example">cd <var>objdir</var>; make -k check
  </pre></div>
  
  <p>This will test various components of GCC, such as compiler
*************** might emit some harmless messages resemb
*** 137,166 ****
  <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="https://gcc.gnu.org/simtest-howto.html">https://gcc.gnu.org/simtest-howto.html</a>.
  </p>
! <a name="How-can-you-run-the-testsuite-on-selected-tests_003f"></a>
  <h3 class="section">How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
  &lsquo;<samp>make check-gcc</samp>&rsquo; and language specific &lsquo;<samp>make check-c</samp>&rsquo;,
  &lsquo;<samp>make check-c++</samp>&rsquo;, &lsquo;<samp>make check-d</samp>&rsquo; &lsquo;<samp>make check-fortran</samp>&rsquo;,
! &lsquo;<samp>make check-ada</samp>&rsquo;, &lsquo;<samp>make check-objc</samp>&rsquo;, &lsquo;<samp>make check-obj-c++</samp>&rsquo;,
! &lsquo;<samp>make check-lto</samp>&rsquo;
! in the <samp>gcc</samp> subdirectory of the object directory.  You can also
! just run &lsquo;<samp>make check</samp>&rsquo; in a subdirectory of the object directory.
  </p>
  
  <p>A more selective way to just run all <code>gcc</code> execute tests in the
  testsuite is to use
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-gcc RUNTESTFLAGS=&quot;execute.exp <var>other-options</var>&quot;
  </pre></div>
  
  <p>Likewise, in order to run only the <code>g++</code> &ldquo;old-deja&rdquo; tests in
  the testsuite with filenames matching &lsquo;<samp>9805*</samp>&rsquo;, you would use
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805* <var>other-options</var>&quot;
  </pre></div>
  
  <p>The file-matching expression following <var>filename</var><code>.exp=</code> is treated
--- 132,161 ----
  <p>If you are testing a cross-compiler, you may want to run the testsuite
  on a simulator as described at <a href="https://gcc.gnu.org/simtest-howto.html">https://gcc.gnu.org/simtest-howto.html</a>.
  </p>
! <div class="section" id="How-can-you-run-the-testsuite-on-selected-tests_003f">
  <h3 class="section">How can you run the testsuite on selected tests?</h3>
  
  <p>In order to run sets of tests selectively, there are targets
  &lsquo;<samp>make check-gcc</samp>&rsquo; and language specific &lsquo;<samp>make check-c</samp>&rsquo;,
  &lsquo;<samp>make check-c++</samp>&rsquo;, &lsquo;<samp>make check-d</samp>&rsquo; &lsquo;<samp>make check-fortran</samp>&rsquo;,
! &lsquo;<samp>make check-ada</samp>&rsquo;, &lsquo;<samp>make check-m2</samp>&rsquo;, &lsquo;<samp>make check-objc</samp>&rsquo;,
! &lsquo;<samp>make check-obj-c++</samp>&rsquo;, &lsquo;<samp>make check-lto</samp>&rsquo; in the <samp>gcc</samp>
! subdirectory of the object directory.  You can also just run
! &lsquo;<samp>make check</samp>&rsquo; in a subdirectory of the object directory.
  </p>
  
  <p>A more selective way to just run all <code>gcc</code> execute tests in the
  testsuite is to use
  </p>
! <div class="example">
! <pre class="example">make check-gcc RUNTESTFLAGS=&quot;execute.exp <var>other-options</var>&quot;
  </pre></div>
  
  <p>Likewise, in order to run only the <code>g++</code> &ldquo;old-deja&rdquo; tests in
  the testsuite with filenames matching &lsquo;<samp>9805*</samp>&rsquo;, you would use
  </p>
! <div class="example">
! <pre class="example">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805* <var>other-options</var>&quot;
  </pre></div>
  
  <p>The file-matching expression following <var>filename</var><code>.exp=</code> is treated
*************** as a series of whitespace-delimited glob
*** 168,175 ****
  may be passed, although any whitespace must either be escaped or surrounded by
  single quotes if multiple expressions are desired. For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805*\ virtual2.c <var>other-options</var>&quot;
  make check-g++ RUNTESTFLAGS=&quot;'old-deja.exp=9805* virtual2.c' <var>other-options</var>&quot;
  </pre></div>
  
--- 163,170 ----
  may be passed, although any whitespace must either be escaped or surrounded by
  single quotes if multiple expressions are desired. For example,
  </p>
! <div class="example">
! <pre class="example">make check-g++ RUNTESTFLAGS=&quot;old-deja.exp=9805*\ virtual2.c <var>other-options</var>&quot;
  make check-g++ RUNTESTFLAGS=&quot;'old-deja.exp=9805* virtual2.c' <var>other-options</var>&quot;
  </pre></div>
  
*************** To get a list of the possible <samp>*.ex
*** 180,186 ****
  output of &lsquo;<samp>make check</samp>&rsquo; into a file and look at the
  &lsquo;<samp>Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! <a name="Passing-options-and-running-multiple-testsuites"></a>
  <h3 class="section">Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
--- 175,182 ----
  output of &lsquo;<samp>make check</samp>&rsquo; into a file and look at the
  &lsquo;<samp>Running &hellip;  .exp</samp>&rsquo; lines.
  </p>
! </div>
! <div class="section" id="Passing-options-and-running-multiple-testsuites">
  <h3 class="section">Passing options and running multiple testsuites</h3>
  
  <p>You can pass multiple options to the testsuite using the
*************** output of &lsquo;<samp>make check</samp>
*** 188,195 ****
  &lsquo;<samp>RUNTESTFLAGS</samp>&rsquo;, or directly to <code>runtest</code> if you prefer to
  work outside the makefiles.  For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make check-g++ RUNTESTFLAGS=&quot;--target_board=unix/-O3/-fmerge-constants&quot;
  </pre></div>
  
  <p>will run the standard <code>g++</code> testsuites (&ldquo;unix&rdquo; is the target name
--- 184,191 ----
  &lsquo;<samp>RUNTESTFLAGS</samp>&rsquo;, or directly to <code>runtest</code> if you prefer to
  work outside the makefiles.  For example,
  </p>
! <div class="example">
! <pre class="example">make check-g++ RUNTESTFLAGS=&quot;--target_board=unix/-O3/-fmerge-constants&quot;
  </pre></div>
  
  <p>will run the standard <code>g++</code> testsuites (&ldquo;unix&rdquo; is the target name
*************** slashes separate options.
*** 200,215 ****
  <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  </p>
! <div class="smallexample">
! <pre class="smallexample">&hellip;&quot;--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}&quot;
  </pre></div>
  
  <p>(Note the empty option caused by the trailing comma in the final group.)
  The following will run each testsuite eight times using the &lsquo;<samp>arm-sim</samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  </p>
! <div class="smallexample">
! <pre class="smallexample">--target_board='arm-sim/-mhard-float/-O1 \
                  arm-sim/-mhard-float/-O2 \
                  arm-sim/-mhard-float/-O3 \
                  arm-sim/-mhard-float \
--- 196,211 ----
  <p>You can run the testsuites multiple times using combinations of options
  with a syntax similar to the brace expansion of popular shells:
  </p>
! <div class="example">
! <pre class="example">&hellip;&quot;--target_board=arm-sim\{-mhard-float,-msoft-float\}\{-O1,-O2,-O3,\}&quot;
  </pre></div>
  
  <p>(Note the empty option caused by the trailing comma in the final group.)
  The following will run each testsuite eight times using the &lsquo;<samp>arm-sim</samp>&rsquo;
  target, as if you had specified all possible combinations yourself:
  </p>
! <div class="example">
! <pre class="example">--target_board='arm-sim/-mhard-float/-O1 \
                  arm-sim/-mhard-float/-O2 \
                  arm-sim/-mhard-float/-O3 \
                  arm-sim/-mhard-float \
*************** target, as if you had specified all poss
*** 222,229 ****
  <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  </p>
! <div class="smallexample">
! <pre class="smallexample">&hellip;&quot;--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}&quot;
  </pre></div>
  
  <p>will generate four combinations, all involving &lsquo;<samp>-Wextra</samp>&rsquo;.
--- 218,225 ----
  <p>They can be combined as many times as you wish, in arbitrary ways.  This
  list:
  </p>
! <div class="example">
! <pre class="example">&hellip;&quot;--target_board=unix/-Wextra\{-O3,-fno-strength\}\{-fomit-frame,\}&quot;
  </pre></div>
  
  <p>will generate four combinations, all involving &lsquo;<samp>-Wextra</samp>&rsquo;.
*************** parallel by having the shell perform the
*** 235,248 ****
  do the parallel runs.  Instead of using &lsquo;<samp>--target_board</samp>&rsquo;, use a
  special makefile target:
  </p>
! <div class="smallexample">
! <pre class="smallexample">make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/&hellip;
  </pre></div>
  
  <p>For example,
  </p>
! <div class="smallexample">
! <pre class="smallexample">make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
  </pre></div>
  
  <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
--- 231,244 ----
  do the parallel runs.  Instead of using &lsquo;<samp>--target_board</samp>&rsquo;, use a
  special makefile target:
  </p>
! <div class="example">
! <pre class="example">make -j<var>N</var> check-<var>testsuite</var>//<var>test-target</var>/<var>option1</var>/<var>option2</var>/&hellip;
  </pre></div>
  
  <p>For example,
  </p>
! <div class="example">
! <pre class="example">make -j3 check-gcc//sh-hms-sim/{-m1,-m2,-m3,-m3e,-m4}/{,-nofpu}
  </pre></div>
  
  <p>will run three concurrent &ldquo;make-gcc&rdquo; testsuites, eventually testing all
*************** supported in the <samp>gcc</samp> subdir
*** 251,257 ****
  typing <code>echo</code> before the example given here.)
  </p>
  
! <a name="How-to-interpret-test-results"></a>
  <h3 class="section">How to interpret test results</h3>
  
  <p>The result of running the testsuite are various <samp>*.sum</samp> and <samp>*.log</samp>
--- 247,254 ----
  typing <code>echo</code> before the example given here.)
  </p>
  
! </div>
! <div class="section" id="How-to-interpret-test-results">
  <h3 class="section">How to interpret test results</h3>
  
  <p>The result of running the testsuite are various <samp>*.sum</samp> and <samp>*.log</samp>
*************** over whether or not a test is expected t
*** 276,289 ****
  be fixed in future releases.
  </p>
  
! <a name="Submitting-test-results"></a>
  <h3 class="section">Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
  <samp>contrib/test_summary</samp> shell script.  Start it in the <var>objdir</var> with
  </p>
! <div class="smallexample">
! <pre class="smallexample"><var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
      -m gcc-testresults@gcc.gnu.org |sh
  </pre></div>
  
--- 273,287 ----
  be fixed in future releases.
  </p>
  
! </div>
! <div class="section" id="Submitting-test-results">
  <h3 class="section">Submitting test results</h3>
  
  <p>If you want to report the results to the GCC project, use the
  <samp>contrib/test_summary</samp> shell script.  Start it in the <var>objdir</var> with
  </p>
! <div class="example">
! <pre class="example"><var>srcdir</var>/contrib/test_summary -p your_commentary.txt \
      -m gcc-testresults@gcc.gnu.org |sh
  </pre></div>
  
*************** messages may be automatically processed.
*** 303,309 ****
  
  
  
! <hr>
  
  
  
--- 301,307 ----
  
  
  
! <hr></div>
  
  
  
diff -Nrcpad gcc-12.2.0/LAST_UPDATED gcc-13.1.0/LAST_UPDATED
*** gcc-12.2.0/LAST_UPDATED	Fri Aug 19 08:15:36 2022
--- gcc-13.1.0/LAST_UPDATED	Wed Apr 26 07:11:19 2023
***************
*** 1 ****
! Obtained from git: releases/gcc-12.2.0 revision 2ee5e4300186a92ad73f1a1a64cb918dc76c8d67
--- 1 ----
! Obtained from git: releases/gcc-13.1.0 revision cc035c5d8672f87dc8c2756d9f8367903aa72d93
diff -Nrcpad gcc-12.2.0/MAINTAINERS gcc-13.1.0/MAINTAINERS
*** gcc-12.2.0/MAINTAINERS	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/MAINTAINERS	Wed Apr 26 07:09:39 2023
*************** Richard Biener					<rguenther@suse.de>
*** 30,36 ****
  Richard Earnshaw				<richard.earnshaw@arm.com>
  Jakub Jelinek					<jakub@redhat.com>
  Richard Kenner					<kenner@nyu.edu>
! Jeff Law					<jlaw@tachyum.com>
  Michael Meissner				<gnu@the-meissners.org>
  Jason Merrill					<jason@redhat.com>
  David S. Miller					<davem@redhat.com>
--- 30,36 ----
  Richard Earnshaw				<richard.earnshaw@arm.com>
  Jakub Jelinek					<jakub@redhat.com>
  Richard Kenner					<kenner@nyu.edu>
! Jeff Law					<jlaw@ventanamicro.com>
  Michael Meissner				<gnu@the-meissners.org>
  Jason Merrill					<jason@redhat.com>
  David S. Miller					<davem@redhat.com>
*************** arc port		Joern Rennecke		<gnu@amylaar.u
*** 60,74 ****
  arc port		Claudiu Zissulescu	<claziss@synopsys.com>
  arm port		Nick Clifton		<nickc@redhat.com>
  arm port		Richard Earnshaw	<richard.earnshaw@arm.com>
! arm port		Ramana Radhakrishnan	<ramana.radhakrishnan@arm.com>
  arm port		Kyrylo Tkachov		<kyrylo.tkachov@arm.com>
  avr port		Denis Chertykov		<chertykov@gmail.com>
  bfin port		Jie Zhang		<jzhang918@gmail.com>
  bpf port		Jose E. Marchesi	<jose.marchesi@oracle.com>
  c6x port		Bernd Schmidt		<bernds_cb1@t-online.de>
  cris port		Hans-Peter Nilsson	<hp@axis.com>
! c-sky port		Xianmiao Qu		<xianmiao_qu@c-sky.com>
! c-sky port		Yunhai Shang		<yunhai_shang@c-sky.com>
  epiphany port		Joern Rennecke		<gnu@amylaar.uk>
  fr30 port		Nick Clifton		<nickc@redhat.com>
  frv port		Nick Clifton		<nickc@redhat.com>
--- 60,74 ----
  arc port		Claudiu Zissulescu	<claziss@synopsys.com>
  arm port		Nick Clifton		<nickc@redhat.com>
  arm port		Richard Earnshaw	<richard.earnshaw@arm.com>
! arm port		Ramana Radhakrishnan	<ramana.gcc@gmail.com>
  arm port		Kyrylo Tkachov		<kyrylo.tkachov@arm.com>
  avr port		Denis Chertykov		<chertykov@gmail.com>
  bfin port		Jie Zhang		<jzhang918@gmail.com>
  bpf port		Jose E. Marchesi	<jose.marchesi@oracle.com>
  c6x port		Bernd Schmidt		<bernds_cb1@t-online.de>
  cris port		Hans-Peter Nilsson	<hp@axis.com>
! c-sky port		Xianmiao Qu		<cooper.qu@linux.alibaba.com>
! c-sky port		Yunhai Shang		<yunhai@linux.alibaba.com>
  epiphany port		Joern Rennecke		<gnu@amylaar.uk>
  fr30 port		Nick Clifton		<nickc@redhat.com>
  frv port		Nick Clifton		<nickc@redhat.com>
*************** riscv port		Andrew Waterman		<andrew@sif
*** 112,117 ****
--- 112,118 ----
  riscv port		Jim Wilson		<jim.wilson.gcc@gmail.com>
  rs6000/powerpc port	David Edelsohn		<dje.gcc@gmail.com>
  rs6000/powerpc port	Segher Boessenkool	<segher@kernel.crashing.org>
+ rs6000/powerpc port	Kewen Lin		<linkw@gcc.gnu.org>
  rs6000 vector extns	Aldy Hernandez		<aldyh@redhat.com>
  rx port			Nick Clifton		<nickc@redhat.com>
  s390 port		Ulrich Weigand		<uweigand@de.ibm.com>
*************** sh port			Alexandre Oliva		<aoliva@gcc.g
*** 120,127 ****
  sh port			Oleg Endo		<olegendo@gcc.gnu.org>
  sparc port		David S. Miller		<davem@redhat.com>
  sparc port		Eric Botcazou		<ebotcazou@libertysurf.fr>
- tilegx port		Walter Lee		<walt@tilera.com>
- tilepro port		Walter Lee		<walt@tilera.com>
  v850 port		Nick Clifton		<nickc@redhat.com>
  vax port		Matt Thomas		<matt@3am-software.com>
  vax port		Maciej W. Rozycki	<macro@embecosm.com>
--- 121,126 ----
*************** cygwin, mingw-w64	Jonathan Yong		<10wall
*** 158,170 ****
--- 157,173 ----
  C front end/ISO C99	Joseph Myers		<joseph@codesourcery.com>
  Ada front end		Arnaud Charlet		<charlet@adacore.com>
  Ada front end		Eric Botcazou		<ebotcazou@libertysurf.fr>
+ Ada front end		Marc Poulhiès		<poulhies@adacore.com>
  Ada front end		Pierre-Marie de Rodat	<derodat@adacore.com>
  c++			Jason Merrill		<jason@redhat.com>
  c++			Nathan Sidwell		<nathan@acm.org>
  D front end		Iain Buclaw		<ibuclaw@gdcproject.org>
  go			Ian Lance Taylor	<ian@airs.com>
+ Modula-2 front end	Gaius Mulley		<gaiusmod2@gmail.com>
  objective-c/c++		Mike Stump		<mikestump@comcast.net>
  objective-c/c++		Iain Sandoe		<iain@sandoe.co.uk>
+ Rust			Arthur Cohen		<arthur.cohen@embecosm.com>
+ Rust			Philip Herron		<herron.philip@googlemail.com>
  
  			Various Maintainers
  
*************** fp-bit			Ian Lance Taylor	<ian@airs.com>
*** 176,181 ****
--- 179,185 ----
  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>
  libiberty		Ian Lance Taylor	<ian@airs.com>
  libitm			Torvald Riegel		<triegel@redhat.com>
*************** docstring relicensing	Gerald Pfeifer		<g
*** 227,233 ****
  docstring relicensing	Joseph Myers		<joseph@codesourcery.com>
  predict.def		Jan Hubicka		<hubicka@ucw.cz>
  gcov			Jan Hubicka		<hubicka@ucw.cz>
- gcov			Martin Liska		<mliska@suse.cz>
  gcov			Nathan Sidwell		<nathan@acm.org>
  option handling		Joseph Myers		<joseph@codesourcery.com>
  middle-end		Jeff Law		<jeffreyalaw@gmail.com>
--- 231,236 ----
*************** tree-ssa		Andrew MacLeod		<amacleod@redh
*** 239,244 ****
--- 242,248 ----
  tree browser/unparser	Sebastian Pop		<sebpop@gmail.com>
  scev, data dependence	Sebastian Pop		<sebpop@gmail.com>
  profile feedback	Jan Hubicka		<hubicka@ucw.cz>
+ AutoFDO			Eugene Rozenfeld	<erozen@microsoft.com>
  reload			Ulrich Weigand		<uweigand@de.ibm.com>
  RTL optimizers		Eric Botcazou		<ebotcazou@libertysurf.fr>
  instruction combiner	Segher Boessenkool	<segher@kernel.crashing.org>
*************** loop optimizer		Bin Cheng		<bin.cheng@li
*** 250,255 ****
--- 254,260 ----
  OpenACC			Thomas Schwinge		<thomas@codesourcery.com>
  OpenACC			Tobias Burnus		<tobias@codesourcery.com>
  OpenMP			Jakub Jelinek		<jakub@redhat.com>
+ OpenMP			Tobias Burnus		<tobias@codesourcery.com>
  testsuite		Rainer Orth		<ro@CeBiTec.Uni-Bielefeld.DE>
  testsuite		Mike Stump		<mikestump@comcast.net>
  register allocation	Vladimir Makarov	<vmakarov@redhat.com>
*************** check in changes outside of the parts of
*** 264,272 ****
  			Reviewers
  
  arc port		Claudiu Zissulescu	<claziss@synopsys.com>
- callgraph		Martin Liska		<mliska@suse.cz>
  callgraph		Martin Jambor		<mjambor@suse.cz>
  C front end		Marek Polacek		<polacek@redhat.com>
  dataflow		Paolo Bonzini		<bonzini@gnu.org>
  dataflow		Seongbae Park		<seongbae.park@gmail.com>
  dataflow		Kenneth Zadeck		<zadeck@naturalbridge.com>
--- 269,278 ----
  			Reviewers
  
  arc port		Claudiu Zissulescu	<claziss@synopsys.com>
  callgraph		Martin Jambor		<mjambor@suse.cz>
  C front end		Marek Polacek		<polacek@redhat.com>
+ CTF, BTF		Indu Bhagat		<indu.bhagat@oracle.com>
+ CTF, BTF		David Faust		<david.faust@oracle.com>
  dataflow		Paolo Bonzini		<bonzini@gnu.org>
  dataflow		Seongbae Park		<seongbae.park@gmail.com>
  dataflow		Kenneth Zadeck		<zadeck@naturalbridge.com>
*************** from other maintainers or reviewers.
*** 314,319 ****
--- 320,327 ----
  
  Mark G. Adams					<mark.g.adams@sympatico.ca>
  Pedro Alves					<palves@redhat.com>
+ Paul-Antoine Arras				<pa@codesourcery.com>
+ Arsen Arsenović		      	    		<arsen@aarsen.me>
  Raksit Ashok					<raksit@google.com>
  Matt Austern					<austern@google.com>
  David Ayers					<ayers@fsfe.org>
*************** Andrew Benson					<abensonca@gmail.com>
*** 333,339 ****
  Daniel Berlin					<dberlin@dberlin.org>
  Pat Bernardi					<bernardi@adacore.com>
  Jan Beulich					<jbeulich@novell.com>
- Indu Bhagat					<indu.bhagat@oracle.com>
  David Billinghurst				<David.Billinghurst@riotinto.com>
  Tomas Bily					<tbily@suse.cz>
  Laurynas Biveinis				<laurynas.biveinis@gmail.com>
--- 341,346 ----
*************** Kevin Buettner					<kevinb@redhat.com>
*** 353,365 ****
  Andrew Burgess					<aburgess@redhat.com>
  Adam Butcher					<adam@jessamine.co.uk>
  Andrew Cagney					<cagney@gnu.org>
  Daniel Carrera					<dcarrera@gmail.com>
  Stephane Carrez					<stcarrez@nerim.fr>
  Gabriel Charette				<gchare@google.com>
  Chandra Chavva					<cchavva@redhat.com>
  Dehao Chen					<dehao@google.com>
  Fabien Chêne					<fabien@gcc.gnu.org>
! Clément Chigot					<clement.chigot@atos.net>
  Harshit Chopra					<harshit@google.com>
  Tamar Christina					<tamar.christina@arm.com>
  Eric Christopher				<echristo@gmail.com>
--- 360,373 ----
  Andrew Burgess					<aburgess@redhat.com>
  Adam Butcher					<adam@jessamine.co.uk>
  Andrew Cagney					<cagney@gnu.org>
+ Andrew Carlotti					<andrew.carlotti@arm.com>
  Daniel Carrera					<dcarrera@gmail.com>
  Stephane Carrez					<stcarrez@nerim.fr>
  Gabriel Charette				<gchare@google.com>
  Chandra Chavva					<cchavva@redhat.com>
  Dehao Chen					<dehao@google.com>
  Fabien Chêne					<fabien@gcc.gnu.org>
! Clément Chigot					<chigot@adacore.com>
  Harshit Chopra					<harshit@google.com>
  Tamar Christina					<tamar.christina@arm.com>
  Eric Christopher				<echristo@gmail.com>
*************** Andrea Corallo					<andrea.corallo@arm.c
*** 373,378 ****
--- 381,387 ----
  Christian Cornelssen				<ccorn@cs.tu-berlin.de>
  Ludovic Courtès					<ludo@gnu.org>
  Lawrence Crowl					<crowl@google.com>
+ Lili Cui					<lili.cui@intel.com>
  Ian Dall					<ian@beware.dropbear.id.au>
  David Daney					<david.daney@caviumnetworks.com>
  Robin Dapp					<rdapp@linux.ibm.com>
*************** Doug Evans					<dje@google.com>
*** 396,402 ****
  Chris Fairles					<cfairles@gcc.gnu.org>
  Alessandro Fanfarillo				<fanfarillo.gcc@gmail.com>
  Changpeng Fang					<changpeng.fang@amd.com>
! David Faust					<david.faust@oracle.com>
  Li Feng						<nemokingdom@gmail.com>
  Thomas Fitzsimmons				<fitzsim@redhat.com>
  Alexander Fomin					<afomin.mailbox@gmail.com>
--- 405,411 ----
  Chris Fairles					<cfairles@gcc.gnu.org>
  Alessandro Fanfarillo				<fanfarillo.gcc@gmail.com>
  Changpeng Fang					<changpeng.fang@amd.com>
! Sam Feifer					<sfeifer@redhat.com>
  Li Feng						<nemokingdom@gmail.com>
  Thomas Fitzsimmons				<fitzsim@redhat.com>
  Alexander Fomin					<afomin.mailbox@gmail.com>
*************** Daniel Jacobowitz				<drow@false.org>
*** 463,468 ****
--- 472,479 ----
  Andreas Jaeger					<aj@suse.de>
  Harsha Jagasia					<harsha.jagasia@amd.com>
  Fariborz Jahanian				<fjahanian@apple.com>
+ Surya Kumari Jangala				<jskumari@linux.ibm.com>
+ Haochen Jiang					<haochen.jiang@intel.com>
  Qian Jianhua					<qianjh@fujitsu.com>
  Janis Johnson					<janis.marie.johnson@gmail.com>
  Teresa Johnson					<tejohnson@google.com>
*************** Jeff Knaggs					<jknaggs@redhat.com>
*** 478,483 ****
--- 489,495 ----
  Michael Koch					<konqueror@gmx.de>
  Nicolas Koenig					<koenigni@student.ethz.ch>
  Boris Kolpackov					<boris@codesynthesis.com>
+ Lingling Kong					<lingling.kong@intel.com>
  Dave Korn					<dave.korn.cygwin@gmail.com>
  Julia Koval					<julia.koval@intel.com>
  Matt Kraai					<kraai@ftbfs.org>
*************** Razya Ladelsky					<razya@gcc.gnu.org>
*** 493,498 ****
--- 505,511 ----
  Thierry Lafage					<thierry.lafage@inria.fr>
  Rask Ingemann Lambertsen			<ccc94453@vip.cybercity.dk>
  Jerome Lambourg					<lambourg@adacore.com>
+ Tim Lange					<mail@tim-lange.me>
  Asher Langton					<langton2@llnl.gov>
  Chris Lattner					<sabre@nondot.org>
  Terry Laurenzo					<tlaurenzo@gmail.com>
*************** Ilya Leoshkevich				<iii@linux.ibm.com>
*** 506,513 ****
  Kriang Lerdsuwanakij				<lerdsuwa@users.sourceforge.net>
  Renlin Li					<renlin.li@arm.com>
  Xinliang David Li				<davidxl@google.com>
- Kewen Lin					<linkw@gcc.gnu.org>
  Chen Liqin					<liqin.gcc@gmail.com>
  Jiangning Liu					<jiangning.liu@arm.com>
  Sa Liu						<saliu@de.ibm.com>
  Ralph Loader					<rcl@ihug.co.nz>
--- 519,526 ----
  Kriang Lerdsuwanakij				<lerdsuwa@users.sourceforge.net>
  Renlin Li					<renlin.li@arm.com>
  Xinliang David Li				<davidxl@google.com>
  Chen Liqin					<liqin.gcc@gmail.com>
+ Martin Liska					<mliska@suse.cz>
  Jiangning Liu					<jiangning.liu@arm.com>
  Sa Liu						<saliu@de.ibm.com>
  Ralph Loader					<rcl@ihug.co.nz>
*************** Bingfeng Mei					<bmei@broadcom.com>
*** 540,545 ****
--- 553,559 ----
  Jim Meyering					<jim@meyering.net>
  Martin Michlmayr				<tbm@cyrius.com>
  Lee Millward					<lee.millward@gmail.com>
+ Immad Mir					<mir@sourceware.org>
  Dragan Mladjenovic				<Dragan.Mladjenovic@syrmia.com>
  Alan Modra					<amodra@gmail.com>
  Catherine Moore					<clm@codesourcery.com>
*************** Nicolas Pitre					<nico@cam.org>
*** 577,583 ****
  Michael Ploujnikov				<michael.ploujnikov@oracle.com>
  Paul Pluzhnikov					<ppluzhnikov@google.com>
  Antoniu Pop					<antoniu.pop@gmail.com>
- Marc Poulhiès					<poulhies@adacore.com>
  Siddhesh Poyarekar				<siddhesh@gotplt.org>
  Vidya Praveen					<vidyapraveen@arm.com>
  Thomas Preud'homme				<thomas.preudhomme@celest.fr>
--- 591,596 ----
*************** Craig Rodrigues					<rodrigc@gcc.gnu.org
*** 598,604 ****
  Erven Rohou					<erven.rohou@inria.fr>
  Ira Rosen					<irar@il.ibm.com>
  Yvan Roux					<yvan.roux@linaro.org>
- Eugene Rozenfeld				<erozen@microsoft.com>
  Silvius Rus					<rus@google.com>
  Matthew Sachs					<msachs@apple.com>
  Ankur Saini					<arsenic@sourceware.org>
--- 611,616 ----
*************** Duncan Sands					<baldrick@gcc.gnu.org>
*** 607,613 ****
  Sujoy Saraswati					<sujoy.saraswati@hpe.com>
  Trevor Saunders					<tbsaunde+gcc@tbsaunde.org>
  Aaron Sawdey					<acsawdey@linux.ibm.com>
! Roger Sayle					<roger@eyesopen.com>
  Will Schmidt					<will_schmidt@vnet.ibm.com>
  Stefan Schulze Frielinghaus			<stefansf@linux.ibm.com>
  Tilo Schwarz					<tilo@tilo-schwarz.de>
--- 619,625 ----
  Sujoy Saraswati					<sujoy.saraswati@hpe.com>
  Trevor Saunders					<tbsaunde+gcc@tbsaunde.org>
  Aaron Sawdey					<acsawdey@linux.ibm.com>
! Roger Sayle					<roger@nextmovesoftware.com>
  Will Schmidt					<will_schmidt@vnet.ibm.com>
  Stefan Schulze Frielinghaus			<stefansf@linux.ibm.com>
  Tilo Schwarz					<tilo@tilo-schwarz.de>
*************** YunQiang Su					<yunqiang.su@cipunited.c
*** 636,641 ****
--- 648,654 ----
  Robert Suchanek					<rsuchy84@gmail.com>
  Andrew Sutton					<andrew.n.sutton@gmail.com>
  Gabriele Svelto					<gabriele.svelto@st.com>
+ Torbjörn Svensson				<torbjorn.svensson@foss.st.com>
  Toma Tabacu					<toma.tabacu@gmail.com>
  Omar Tahir					<omar.tahir@arm.com>
  Sriraman Tallam					<tmsriram@google.com>
*************** Przemyslaw Wirkus				<przemyslaw.wirkus@
*** 681,687 ****
  Carlo Wood					<carlo@alinoe.com>
  Jackson Woodruff				<jackson.woodruff@arm.com>
  Jonathan Wright					<jonathan.wright@arm.com>
! Ruoyao Xi					<xry111@mengyan1223.wang>
  Mingjie Xing					<mingjie.xing@gmail.com>
  Chenghua Xu					<paul.hua.gm@gmail.com>
  Canqun Yang					<canqun@nudt.edu.cn>
--- 694,700 ----
  Carlo Wood					<carlo@alinoe.com>
  Jackson Woodruff				<jackson.woodruff@arm.com>
  Jonathan Wright					<jonathan.wright@arm.com>
! Ruoyao Xi					<xry111@xry111.site>
  Mingjie Xing					<mingjie.xing@gmail.com>
  Chenghua Xu					<paul.hua.gm@gmail.com>
  Canqun Yang					<canqun@nudt.edu.cn>
*************** information.
*** 715,722 ****
--- 728,738 ----
  
  
  Matthias Kretz					<m.kretz@gsi.de>
+ Tim Lange					<mail@tim-lange.me>
  Jeff Law					<jeffreyalaw@gmail.com>
  Jeff Law					<jlaw@tachyum.com>
+ Jeff Law					<jlaw@ventanamicro.com>
+ Immad Mir					<mir@sourceware.org>
  Gaius Mulley					<gaiusmod2@gmail.com>
  Siddhesh Poyarekar				<siddhesh@gotplt.org>
  Navid Rahimi					<navidrahimi@microsoft.com>
diff -Nrcpad gcc-12.2.0/MD5SUMS gcc-13.1.0/MD5SUMS
*** gcc-12.2.0/MD5SUMS	Fri Aug 19 08:33:52 2022
--- gcc-13.1.0/MD5SUMS	Wed Apr 26 07:38:13 2023
***************
*** 1,5 ****
  # This file contains the MD5 checksums of the files in the 
! # gcc-12.2.0.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
--- 1,5 ----
  # This file contains the MD5 checksums of the files in the 
! # gcc-13.1.0.tar.xz tarball.
  #
  # Besides verifying that all files in the tarball were correctly expanded,
  # it also can be used to determine if any files have changed since the
***************
*** 10,60 ****
  #
  c234515d9056662b94af0653f8562888  .dir-locals.el
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
! 1827b498bbbb07804e7d5b4eecaa3106  .gitignore
  8c00452ef1e298846493ec8b239f93e2  ABOUT-NLS
  59530bdf33659b29e73d4adb9f9f6552  COPYING
  2d5025d4aa3495befef8f17206a5b0a1  COPYING.LIB
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! ad14564c517d3762e907efa166e25dbd  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! b0c49ff8001cc228ea2b2c71e6eb5f7b  INSTALL/binaries.html
! 178498b2c7f5269c5914f2bc9e9b7a6b  INSTALL/build.html
! aaa7ee19e5c451962a9923490621fe8c  INSTALL/configure.html
! b61913a05566e86adef9f0d3f7b5aa1e  INSTALL/download.html
! eade632147e6980dce3a575626bfb7d4  INSTALL/finalinstall.html
! 307ece182d7d9c9f217123598f0a64b1  INSTALL/gfdl.html
! fd2841cf7b80cfa2306f84216efc1f00  INSTALL/index.html
! 7c68b09d2b4621ebbcf89803e72e3d7b  INSTALL/prerequisites.html
! d32563514f1c9d07b8517e520f69a445  INSTALL/specific.html
! 0e9d9f68caad88a4d573cba915fabda6  INSTALL/test.html
! 93a4dc594b88191f6b65b2a76ccdac85  LAST_UPDATED
! e854cb1e639422e089031eba0c689e15  MAINTAINERS
! 5b26d0dff99e7a528342ab4d77a284df  Makefile.def
! e2f1751d40a9663c173f048c1179539e  Makefile.in
! 382a58bdaf362535403c959d6afd6a00  Makefile.tpl
! 39ca9bb3d66ed691d90acb404e8176be  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
! b2ad2473573ce2a12dbd35dee2cd0947  c++tools/ChangeLog
! 2c6571dc657d98d1537d54460dab13c7  c++tools/Makefile.in
  edf805e559bf9ecb62db313d2e6edb47  c++tools/config.h.in
  ccd3498e6b247dfe4e65793a88a27296  c++tools/configure
! d0a958ed0647ffae3446c59780997d14  c++tools/configure.ac
! da3f3927414dbcf7878d2d582a2a8992  c++tools/resolver.cc
! 2f289f995668c3da5c27ce8ce93f91fb  c++tools/resolver.h
! 47cce9032389f473d27c2ab8f07441dc  c++tools/server.cc
  500b9244caa7a7ab23ece1db37efa76d  compile
  0a5df71d999a1a0135a99ab79fb42e4f  config-ml.in
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! 4affebee3198d0367c0e30d7a91e0d6d  config/ChangeLog
  0d9cf183f9cbbe5f59796e35831fe774  config/acinclude.m4
! 0b0c1d39d39d11f4b42359daf3516e62  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  fa1446baa94824d733d33eb615217d23  config/ax_count_cpus.m4
--- 10,60 ----
  #
  c234515d9056662b94af0653f8562888  .dir-locals.el
  5b296b32e07d2a84f4ac051ed7f95b91  .gitattributes
! 78f03ce2c5b940584941e67069126a48  .gitignore
  8c00452ef1e298846493ec8b239f93e2  ABOUT-NLS
  59530bdf33659b29e73d4adb9f9f6552  COPYING
  2d5025d4aa3495befef8f17206a5b0a1  COPYING.LIB
  fe60d87048567d4fe8c8a0ed2448bcc8  COPYING.RUNTIME
  d32239bcb673463ab874e80d47fae504  COPYING3
  6a6a8e020838b23406c81b19c1d46df6  COPYING3.LIB
! e70bbfe74844af915adbae5bd819108f  ChangeLog
  fd4ecdf5d672efe2b0e409aca9cf9446  ChangeLog.jit
  09538b708302f1735f6fa05b622ecf5e  ChangeLog.tree-ssa
  24ab760126489e69436a43185dc3d202  INSTALL/README
! e611a6d09222f5d36a873ea66fe9a9f2  INSTALL/binaries.html
! a2eb6e11d0c89068f788113372c76b23  INSTALL/build.html
! b9ec3c7a83c86f7307278e13f486234d  INSTALL/configure.html
! b505e790ec3f9e097a4b1d43a7bdd178  INSTALL/download.html
! 06e5c3d38f648573ed6e03c7bbbb672c  INSTALL/finalinstall.html
! fe07f4a77b2b246f67cc5eae162b510e  INSTALL/gfdl.html
! 1d59b420876d0ffc1fa8dd47836597cb  INSTALL/index.html
! 797de376590e4c1127a316b25a3f91a7  INSTALL/prerequisites.html
! 2c354642f325b07772e4d3c926b98f79  INSTALL/specific.html
! 62069886bede1942dc164b60e4e4f62c  INSTALL/test.html
! 22ba93c73302c4188613907e363d198a  LAST_UPDATED
! 81b3330d422f3ce1ef8b720dfae35068  MAINTAINERS
! 2b61ddbd876fa839639a7ca551773426  Makefile.def
! cd4f0a8b49cee46e90b2bc67bea3158e  Makefile.in
! 04a743630d1f6ef760bcb6ee98e801d1  Makefile.tpl
! e165fe27cc9e35a37f36c922413f8477  NEWS
  80d26bc3b1ad4f6969a96a24c9181bf5  README
  a657821f65bab77f4fbf3a75cdee6da9  ar-lib
! 2c8694f44565565841fddd7a5bf3dbb8  c++tools/ChangeLog
! 032c26e766fcea31a5d1a469ae7bf9e1  c++tools/Makefile.in
  edf805e559bf9ecb62db313d2e6edb47  c++tools/config.h.in
  ccd3498e6b247dfe4e65793a88a27296  c++tools/configure
! 36d275ea6dd9691ffdb6a8e36416e5f9  c++tools/configure.ac
! 5abf02a9f70f5107dad4e21f3c564a58  c++tools/resolver.cc
! 262db8428e607466fb680eab34471cef  c++tools/resolver.h
! 96e9ad871ea6a15a37175a9c968bdb78  c++tools/server.cc
  500b9244caa7a7ab23ece1db37efa76d  compile
  0a5df71d999a1a0135a99ab79fb42e4f  config-ml.in
  c64564b7c7563dae5ebe016f340c9cd9  config.guess
  040359150cf11493f973a46d8a25b06b  config.rpath
  111d54aa3a3019adbab413c8fb435f22  config.sub
! e6567e5fbe8a2c10cb4c975a597b7ee0  config/ChangeLog
  0d9cf183f9cbbe5f59796e35831fe774  config/acinclude.m4
! 6afba47df446a629761ab1aa13a547cf  config/acx.m4
  6b030f5cf640bdd401ea739f54a667f8  config/asmcfi.m4
  a6bf9c39c62222092ea6d5d8551c077f  config/ax_check_define.m4
  fa1446baa94824d733d33eb615217d23  config/ax_count_cpus.m4
*************** f466ea6022e6627a2e3d94bb0cc7eeb9  config
*** 81,97 ****
  2ef96b7f5ed3e6a5fd105f2cb18b1887  config/cet.m4
  04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
! 321e8bd6894bd9a668af361e89e92e9b  config/dfp.m4
  57534269dac398c79a36036eb35704a1  config/elf.m4
  042203b305962ba9a8f8474ef80edeee  config/enable.m4
  15b8d5adf53ad5ec75f055b193a6b1c2  config/extensions.m4
  2f2de833dd86bba89d64e5813be81550  config/futex.m4
  d3eafe382a46e6747e3644cf4a55d5cc  config/gc++filt.m4
! 68942d1252e9006387da49e35242dbce  config/gcc-plugin.m4
  1282ef4331970c26224afd363968e276  config/gettext-sister.m4
  b90ad089e8e05e8e4a3f865bca41504f  config/gettext.m4
  29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
! e271ffe7b43dfbd759f0195c2c1624dd  config/gthr.m4
  c385066b0fe61ef55d44cf2619e79b26  config/gxx-include-dir.m4
  b7384c06ff3d09212ac04dbab4ce969c  config/hwcaps.m4
  bce7c97d56a16836e49ff576ffa33089  config/iconv.m4
--- 81,97 ----
  2ef96b7f5ed3e6a5fd105f2cb18b1887  config/cet.m4
  04bdbef77f5fd2e282f7dee0bde60444  config/codeset.m4
  b5a5c394536a15e50be1998bd341fd02  config/depstand.m4
! a763364d451e805a934f6520b8b4d602  config/dfp.m4
  57534269dac398c79a36036eb35704a1  config/elf.m4
  042203b305962ba9a8f8474ef80edeee  config/enable.m4
  15b8d5adf53ad5ec75f055b193a6b1c2  config/extensions.m4
  2f2de833dd86bba89d64e5813be81550  config/futex.m4
  d3eafe382a46e6747e3644cf4a55d5cc  config/gc++filt.m4
! f5c794b5ff253c9eb5f9dd60441aa951  config/gcc-plugin.m4
  1282ef4331970c26224afd363968e276  config/gettext-sister.m4
  b90ad089e8e05e8e4a3f865bca41504f  config/gettext.m4
  29c9c3d57667bc9e6f14d625b2cd5894  config/glibc21.m4
! 8df79e8a64590050a069d28f0094da95  config/gthr.m4
  c385066b0fe61ef55d44cf2619e79b26  config/gxx-include-dir.m4
  b7384c06ff3d09212ac04dbab4ce969c  config/hwcaps.m4
  bce7c97d56a16836e49ff576ffa33089  config/iconv.m4
*************** e10d31316e03a59577fb4ed90a670914  config
*** 116,122 ****
  625bacc09b9992290d94831bd7506bd0  config/mh-djgpp
  8fe20cd58711408e779e723c7e4981ad  config/mh-mingw
  cd7034dccd04e50150b14c597dd545a5  config/mh-pa
- 48d5107b991a0cdbe7eb7022b0dfecb2  config/mh-pa-hpux10
  76d638a67d840715b2de89afee8ef49a  config/mh-ppc-aix
  bd6855445bd58ae7e066221ade8cc55d  config/mmap.m4
  59bd17b0aad6631e55578865d5828d70  config/mt-alphaieee
--- 116,121 ----
*************** e2dc6b4fd62b77bff96b7951ef74f78f  config
*** 153,265 ****
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! 856983826b8a23e737488c8702dc8df9  configure
! fe4f5e87d4d87c4612040acc70334eb4  configure.ac
! 59d836b4b9fa691d8e2af32df83cf818  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
! 2f6b9814f09a97f9774b07d75d13e405  contrib/analyze_brprob.py
! de542eacc9b5d2a6d6233ee80642c312  contrib/analyze_brprob_spec.py
! 1a424ea171db6416938f23bb6ca28584  contrib/bench-stringop
! 918f9207f7387efef9ef8d701238cea8  contrib/check-MAINTAINERS.py
  14d637c1673ab29eb925fc542cf5955c  contrib/check-internal-format-escaping.py
! 26003ed3d25c6ca8f36b62de907b3387  contrib/check-params-in-docs.py
! 5e2ff01f3f3129b3e9ca90a9d0043b05  contrib/check_GNU_style.py
! 998cf407b76e1f4efe6919a56b59cd9f  contrib/check_GNU_style.sh
! f9727f6d3a2f7a87aee97eefba4d1125  contrib/check_GNU_style_lib.py
! c3763df74b9b0ad3498815e6a77dc5b4  contrib/check_makefile_deps.sh
! debdf0b8904f5982062eef19a66b07dd  contrib/check_warning_flags.sh
! c7edaf703e193f7c29fbfbf2539498c8  contrib/clang-format
! b0441dfb97e02a384b35567470c35c48  contrib/compare-all-tests
! 8c4a890ac43008052c3687b74932b5f1  contrib/compare-debug
! ba098127814007beeedbdecb8686685f  contrib/compare-lto
! bc8bc1290a409ac41a763005f95b5758  contrib/compareSumTests3
  54f31390bacd889f234ca6a9b189a9fd  contrib/compare_tests
! e2e52abbbb307e16e160946e13bbe530  contrib/compare_two_ftime_report_sets
! 26c9969e7953cfaeffe226c2bb10ceb7  contrib/config-list.mk
! 6134d179ba058a381f67bbc5daa02010  contrib/dg-cmp-results.sh
! afd0452908aeb3a24045e5201bcf9d34  contrib/dg-extract-results.py
! 514fb178de0ad540660b4552d55a6f84  contrib/dg-extract-results.sh
! 87ae17b353cdce921324af084ec6dcb1  contrib/dglib.pm
! 8061ea24752141d2a31708c07b081137  contrib/download_prerequisites
! ccbbbebce9bd139c9acff51467e5b0a2  contrib/filter-clang-warnings.py
  080dea8d6b4a4c8c6bf8ae7b8ecf15a6  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
! 65b703f51d9d7a7a56a649493e3c01b9  contrib/gcc-changelog/git_check_commit.py
! 5fe848ed59caa7945ac304bfb5d42981  contrib/gcc-changelog/git_commit.py
! 722c96f24ea159413d6e28c6b91a7a23  contrib/gcc-changelog/git_email.py
! a9d06dee58845e59874c5f7fc58e2824  contrib/gcc-changelog/git_repository.py
! 4711164526138300c980ca1920320734  contrib/gcc-changelog/git_update_version.py
! 1fcc4f18e9f9043eaea6c3c990d96d9b  contrib/gcc-changelog/setup.cfg
! 7226a8eee0694eb4b73201404f06a8c2  contrib/gcc-changelog/test_email.py
! 0dce8095b39e54d03c1207f021756933  contrib/gcc-changelog/test_patches.txt
  2e6ec5b0179e47a683e1c4214f9fb3af  contrib/gcc-git-customization.sh
! dfceb883caf21f3071f7309ee0ac8a6b  contrib/gcc.doxy
! 55236e85d8087042189b701cd05d84be  contrib/gcc_build
! 239616fd6d956dbe4ab4c510206764d3  contrib/gcc_update
! e82fa4b922b98afc2902629524d688b7  contrib/gen_autofdo_event.py
! 5a9bcce756aa38ac8302195bcb280e37  contrib/gennews
  25491ab6a5a68d252f311f5a9c6f4c8f  contrib/git-add-user-branch.sh
  7e5729822d673e846d5ef26e1f1b8591  contrib/git-add-vendor-branch.sh
! db81d221a5a18e48788ee8984d453248  contrib/git-backport.py
! e9bac7c82bdb5f92b354d9da854d463b  contrib/git-commit-mklog.py
! 5e9e19a370ec59178541956d41005636  contrib/git-descr.sh
! 6277756eb398a594323d2d2b52962046  contrib/git-fetch-vendor.sh
! e462c83bdf45bf6e9b434d18fa9f66e4  contrib/git-fix-changelog.py
  5d80e88da5ae83c53513280bcff7c0a1  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 1c7918887aba2910d7b2f737961dff09  contrib/header-tools/ChangeLog
! e3aa4ad384beb34e8a96561bee91c3b6  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
  220c792fabd90ddca7181ec2b630861f  contrib/header-tools/graph-header-logs
  975fd0063dccc62255cc64bee460b436  contrib/header-tools/graph-include-web
  b8bfe6ffdd32bd23730587a7aab605b7  contrib/header-tools/headerutils.py
  58d81110244f05cbdd18dc06316c6519  contrib/header-tools/included-by
! f95211753b48d6ca1f64281a15dde55f  contrib/header-tools/reduce-headers
  4997716611d1c3a1dc693e016178cb5d  contrib/header-tools/replace-header
  7f9fd87ecac948bc070878c70d4f96ce  contrib/header-tools/show-headers
  fa945bac89ee68b410027dcfe1312f4b  contrib/index-prop
! a7318fa2f0580c3a0d5dd4b14e4d0e0d  contrib/jit-coverage-report.py
! 60407a5923bc8a58a2d9b937c3f2cea8  contrib/legacy/mklog
! fc4965b52fd7de27941bf5183aa1ece9  contrib/legacy/mklog.pl
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
! 652b57f03f525e02ceac3dee8f672204  contrib/make_sunver.pl
! bd49fb9eed9f0a5344158e834dd6f468  contrib/mark_spam.py
! 6a08f88f916d9f0883eff8d4a2212a2d  contrib/mklog.py
  9bb8c12fc069b7624268da15bd911667  contrib/paranoia.cc
! a34668cfad9dec733354503fbc67fb24  contrib/patch_tester.sh
! 74f52724a4c200534bfccf086dc8783d  contrib/prepare-commit-msg
! 87a19b40fbd220938cf6c23c42c255e2  contrib/prepare_patch.sh
  bad2b96e4296c0938aab1c646e9ccf33  contrib/prerequisites.md5
  4a395ab2dd4d15d66cb0183ec7e7bbd0  contrib/prerequisites.sha512
! 082fd72e5e98edc7900d8fa7e1ca4de9  contrib/reghunt/ChangeLog
! cf247a580e49d212518de409793db0a8  contrib/reghunt/bin/gcc-build-full
! 724e70ea3e80f87f2a201bbe2f1eef37  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
  7e5943aa7b912e06cdb5766905e96eb7  contrib/reghunt/bin/gcc-svn-checkfail
  cd504499b51d378df198fc1c96fed2d9  contrib/reghunt/bin/gcc-svn-ids
! 3ca333df3b9bab2bf90c25e08d5dadd4  contrib/reghunt/bin/gcc-svn-patchlist
  3e86e81ae296e0660fe17fbd507ab006  contrib/reghunt/bin/gcc-svn-recordfail
  7e9c7f64150f74c86a1bfa6bc5823252  contrib/reghunt/bin/gcc-svn-report
! 013e6823bffa9ff376d48768407c7a22  contrib/reghunt/bin/gcc-svn-update
  50dc103e0edd95d6cde45a9ca782c79a  contrib/reghunt/bin/gcc-svn-update-fix
! 03a0fe69d07047c8e6e682a79e47fb44  contrib/reghunt/bin/gcc-test-accepts-invalid
! bc1523d96e3f04c5954e8e8f68a62c62  contrib/reghunt/bin/gcc-test-bogus-warning
! 7401d6e304519100114767d862b89708  contrib/reghunt/bin/gcc-test-compiler-hangs
! 67c303eb8961018cae8c9daf0e916d3c  contrib/reghunt/bin/gcc-test-ice-on-invalid-code
! 47d647f1fba47802c27ec57a45a42243  contrib/reghunt/bin/gcc-test-ice-on-valid-code
! 78d675369f5dd078b3614edd7f424c03  contrib/reghunt/bin/gcc-test-missing-warning
! 0f4c53fc37eb85d04f5d265c3fe7d85a  contrib/reghunt/bin/gcc-test-rejects-valid
! 9d8a9058f6c15d31901da61debdb0ba4  contrib/reghunt/bin/gcc-test-segfault-on-valid-code
! 9ad76ed1a4e33b1c9dd3f22cd8ffebea  contrib/reghunt/bin/gcc-test-wrong-code
! f430b2f9a0c85e22765387ecaa539d08  contrib/reghunt/bin/reg-hunt
! af3420a45c7113b4b2364d80abf1b366  contrib/reghunt/bin/reg-newmid
! e8ade52e6f2300cb4f94990d01705b62  contrib/reghunt/bin/reg-test
  ab31219466ac7df2a1aa15900540bc8a  contrib/reghunt/date_based/README
! c2808fd5c71f626d652fd0462bc46822  contrib/reghunt/date_based/reg_periodic
! 347bc8c13651aef1475fb9f8ee53a672  contrib/reghunt/date_based/reg_search
  d3dd0bcec99c2e140b86efb5f63860b4  contrib/reghunt/date_based/reg_test_template
  dacbecec8b04ec121d7f0ae90e0c02e6  contrib/reghunt/examples/28970.c
  54297bd9eb1c9406472def597bbcd0e6  contrib/reghunt/examples/28970.config
--- 152,265 ----
  5cabffc02a90bd9698105b9eef507f11  config/warnings.m4
  7ef51b0adb98e5c5f7aba46d2c7293f1  config/weakref.m4
  0163b672c888aaf1c8ad3e867a0ec9f1  config/zlib.m4
! 4dd4461c381dd94b116f27aa48dbef09  configure
! 645c07e5dbfc57dcb04d206512423d1e  configure.ac
! 7fa425329f7cbfe5ad8023158ae93d4d  contrib/ChangeLog
  5fc435c7928f858246df931ea3f3ece7  contrib/ChangeLog.jit
  7af8d2979bf1a7cfa88e30d05fa22be2  contrib/ChangeLog.tree-ssa
! d6334dc7fdcc1de5203f8b6b62f993c4  contrib/analyze_brprob.py
! c3aebe01c13bbf001255992bb0803fc4  contrib/analyze_brprob_spec.py
! 913f83f0582ab5948a7fbf4eaeb8b549  contrib/bench-stringop
! 0d2c9d35564a8621ebd99510784910ca  contrib/check-MAINTAINERS.py
  14d637c1673ab29eb925fc542cf5955c  contrib/check-internal-format-escaping.py
! dd1f8b68af05959e470acd4fff813ce9  contrib/check-params-in-docs.py
! 6f50d040a8419b6dbeb71006b2ff1dd7  contrib/check_GNU_style.py
! e4e3eab9da7e8cf2ca774e50429b10f8  contrib/check_GNU_style.sh
! 3b8a071268886e456701ea9481aaf1f2  contrib/check_GNU_style_lib.py
! b599463cb9ca9ba2fe58fce7de7a37a7  contrib/check_makefile_deps.sh
! 88f4765aeacad1e91650faddfd51c900  contrib/check_warning_flags.sh
! 81decea7e3dd1933881657f158ff6a2f  contrib/clang-format
! b646693bb0832bd08dff97911d66260b  contrib/compare-all-tests
! 0ef5ec55ae1801b14055919f6de8916a  contrib/compare-debug
! 29a57cd3d6b87740ecaab780feea5709  contrib/compare-lto
! 442918871c9ab00254804ec9bc264dad  contrib/compareSumTests3
  54f31390bacd889f234ca6a9b189a9fd  contrib/compare_tests
! a960a70b190f65e6a630a69fe24d4d4b  contrib/compare_two_ftime_report_sets
! 3715f4e694176bc70bf5643f5ee3bd11  contrib/config-list.mk
! 4bb5a9c29969602068c4a6c8d5ef4829  contrib/dg-cmp-results.sh
! 0be220e91403e88451ddd0efc33c7db3  contrib/dg-extract-results.py
! 82f2cf50ca47d3e41a0b53c4643d9166  contrib/dg-extract-results.sh
! a661bd2b87df4d1cc8be30f435c52cfe  contrib/dg-out-generator.pl
! d31803126a1e8c0cc212bf7f61d2d9ed  contrib/dglib.pm
! 947bc2db8925f4e9ea4c5c90b832b40b  contrib/download_prerequisites
! 5b857b7f41b67d7e25540a6b5af3ec29  contrib/filter-clang-warnings.py
  080dea8d6b4a4c8c6bf8ae7b8ecf15a6  contrib/filter_gcc_for_doxygen
  db03e57377f9eb202b7b783eb81fe40d  contrib/filter_knr2ansi.pl
  b038940be99369232106ef9e9b15bee3  contrib/filter_params.py
! ee2573ec91e4e54bbc1aa0bdf1a12d25  contrib/gcc-changelog/git_check_commit.py
! 5fa93b0efd1620cf9dc6e2fb1df5ddd3  contrib/gcc-changelog/git_commit.py
! 717ec763b8dbfbe8e0a9f67613236287  contrib/gcc-changelog/git_email.py
! 727e36b4de0442d7efde9866ffc7c919  contrib/gcc-changelog/git_repository.py
! f8b96038b7565ef8063d75a74b4f84d9  contrib/gcc-changelog/git_update_version.py
! 6e731268209cc6d4936196233e28bae9  contrib/gcc-changelog/setup.cfg
! b9009d939e7fc17c12d7dad23fb2c9e5  contrib/gcc-changelog/test_email.py
! 6662a65218b0a11d673a65656b98d821  contrib/gcc-changelog/test_patches.txt
  2e6ec5b0179e47a683e1c4214f9fb3af  contrib/gcc-git-customization.sh
! 5c76e763f702a9ff0203a12551e348d0  contrib/gcc.doxy
! f79781b825a1f60cac072c334a70b01a  contrib/gcc_build
! 29f0fe5f421c26e8f42c43688d81ed75  contrib/gcc_update
! 7c49558a2820cb50d5d8702673cad33d  contrib/gen_autofdo_event.py
! cfeda470eddff8eb7364d970dfafd3dc  contrib/gennews
  25491ab6a5a68d252f311f5a9c6f4c8f  contrib/git-add-user-branch.sh
  7e5729822d673e846d5ef26e1f1b8591  contrib/git-add-vendor-branch.sh
! 4cd65995c69f5c7715f402ec5f2ee9fc  contrib/git-backport.py
! f03de2f6492b5449fc1a238b3104c5bc  contrib/git-commit-mklog.py
! 89713b3aaf65e7ae575e6fe0c0c2adf1  contrib/git-descr.sh
! 464e86ccd2b5dee7df40905d86e0be06  contrib/git-fetch-vendor.sh
! e074a10ed2cf3c78e317247bf6208823  contrib/git-fix-changelog.py
  5d80e88da5ae83c53513280bcff7c0a1  contrib/git-undescr.sh
  59304fc08afa489baa6b920cc76dc625  contrib/gthr_supp_vxw_5x.c
! 08a9a37abc3b22957c4802bf9a053a95  contrib/header-tools/ChangeLog
! 72d70766ec87033813e1378c5697fa87  contrib/header-tools/README
  05ef7fb87e90ba93ee04659be072a357  contrib/header-tools/count-headers
  ba0485a3c721bce9e32407ef996d2a9d  contrib/header-tools/gcc-order-headers
  220c792fabd90ddca7181ec2b630861f  contrib/header-tools/graph-header-logs
  975fd0063dccc62255cc64bee460b436  contrib/header-tools/graph-include-web
  b8bfe6ffdd32bd23730587a7aab605b7  contrib/header-tools/headerutils.py
  58d81110244f05cbdd18dc06316c6519  contrib/header-tools/included-by
! 30133617cb9cb10a2244fbc78c16188b  contrib/header-tools/reduce-headers
  4997716611d1c3a1dc693e016178cb5d  contrib/header-tools/replace-header
  7f9fd87ecac948bc070878c70d4f96ce  contrib/header-tools/show-headers
  fa945bac89ee68b410027dcfe1312f4b  contrib/index-prop
! 4c2bd0b50fc4c3507dc8624432dc8a4d  contrib/jit-coverage-report.py
! bef0f96d3139ec2acebf008a1aafaca6  contrib/legacy/mklog
! 2bac6e12cbc1c996e3f9f82d57f20c67  contrib/legacy/mklog.pl
  43e3d77ae19b5c6304d6d6846792c173  contrib/make-obstacks-texi.pl
! 51a10ab0d8cd98dded991335a36a61f2  contrib/make_sunver.pl
! 168c6a41bad585f5c6ee88b897faea26  contrib/mark_spam.py
! 0b8e5ae91e1d2be0a895b4960014d210  contrib/mklog.py
  9bb8c12fc069b7624268da15bd911667  contrib/paranoia.cc
! eedb9aee4fd5829d8ebc95c23a09687a  contrib/patch_tester.sh
! 0f985c999a9314df48416a4809007b35  contrib/prepare-commit-msg
! cb477dd95d5e602e9b906fc057a1fe16  contrib/prepare_patch.sh
  bad2b96e4296c0938aab1c646e9ccf33  contrib/prerequisites.md5
  4a395ab2dd4d15d66cb0183ec7e7bbd0  contrib/prerequisites.sha512
! 1c6ed18365b3c33e9ff884fc4fdbe2ef  contrib/reghunt/ChangeLog
! 562a0a9f9e5cc4e9c95319b727a1df94  contrib/reghunt/bin/gcc-build-full
! f1c54c76b9d27a6ac0169fe0c8d50f9d  contrib/reghunt/bin/gcc-build-simple
  3f2318bae7562a4ad1639e686916a545  contrib/reghunt/bin/gcc-cleanup
  7e5943aa7b912e06cdb5766905e96eb7  contrib/reghunt/bin/gcc-svn-checkfail
  cd504499b51d378df198fc1c96fed2d9  contrib/reghunt/bin/gcc-svn-ids
! 2914d579362fc50fe0793d3d2a5546ce  contrib/reghunt/bin/gcc-svn-patchlist
  3e86e81ae296e0660fe17fbd507ab006  contrib/reghunt/bin/gcc-svn-recordfail
  7e9c7f64150f74c86a1bfa6bc5823252  contrib/reghunt/bin/gcc-svn-report
! 1f293689ca1ce4362136015f76749d90  contrib/reghunt/bin/gcc-svn-update
  50dc103e0edd95d6cde45a9ca782c79a  contrib/reghunt/bin/gcc-svn-update-fix
! 2134e8d3373a780e4e50d342ede62dbe  contrib/reghunt/bin/gcc-test-accepts-invalid
! 7c874058f719ed600dc41b5b103271a5  contrib/reghunt/bin/gcc-test-bogus-warning
! f08e94bcd81a724cd0a332528975497d  contrib/reghunt/bin/gcc-test-compiler-hangs
! 870e24047d99ca2d84d0fc86f6fcf186  contrib/reghunt/bin/gcc-test-ice-on-invalid-code
! 33ed46ef6ae4eabbeae190994afbe0c3  contrib/reghunt/bin/gcc-test-ice-on-valid-code
! d6f76cca982f9a9d61ab7c31961b71a5  contrib/reghunt/bin/gcc-test-missing-warning
! 98a5e91c819b7abe8cc1f8d8c9558bb5  contrib/reghunt/bin/gcc-test-rejects-valid
! 72b9b8c06eec2d06e7bf6126d8124ee3  contrib/reghunt/bin/gcc-test-segfault-on-valid-code
! e618c6834f657bc6165dadc4d5d265ac  contrib/reghunt/bin/gcc-test-wrong-code
! 859ea8aca50c96b4a6bc02cd7c8cdd84  contrib/reghunt/bin/reg-hunt
! 2d3e7d1b708f5fb0fa88ec01f958e795  contrib/reghunt/bin/reg-newmid
! 818a0cc4b1507256a5d2b74750ccde8d  contrib/reghunt/bin/reg-test
  ab31219466ac7df2a1aa15900540bc8a  contrib/reghunt/date_based/README
! 242a3857002fb1e84589f556fffa861a  contrib/reghunt/date_based/reg_periodic
! d9c1c74fcf045c3b91a58ed5ced2c3fc  contrib/reghunt/date_based/reg_search
  d3dd0bcec99c2e140b86efb5f63860b4  contrib/reghunt/date_based/reg_test_template
  dacbecec8b04ec121d7f0ae90e0c02e6  contrib/reghunt/examples/28970.c
  54297bd9eb1c9406472def597bbcd0e6  contrib/reghunt/examples/28970.config
*************** f251d49dd87647250fcd74dd50b7835f  contri
*** 293,365 ****
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! 4bf339be8f7db9db1acbc095f2e745a5  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
  82c9f16421ce2f6efe0ad68151c792a5  contrib/regression/GCC_Regression_Tester.wdgt/de.lproj/InfoPlist.strings
  b017a8530c74c1d79f3b4436169ae9b0  contrib/regression/GCC_Regression_Tester.wdgt/en.lproj/InfoPlist.strings
  3fd4bca42f39c06eff4024376b935265  contrib/regression/GCC_Regression_Tester.wdgt/ja.lproj/InfoPlist.strings
! d69ae50099e99b3a9e34fb57aa21c067  contrib/regression/GCC_Regression_Tester.wdgt/widget.html
  1e4aedcd2db5dd845a6c778f4ba73b9b  contrib/regression/README
! fb1ff65a78c592489a09d18e42238a68  contrib/regression/btest-gcc.sh
! 28dc7df40c2d437ca22ca9ad61866db9  contrib/regression/mkindex.pl
! 0896a4641e99b786e0e793cb239d65bd  contrib/regression/objs-gcc.sh
  dc562ddb86567c65e82953825713dc4b  contrib/regression/site.exp
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
! 39442479834f1c02d6ce11eab6889b6e  contrib/test_installed
! 30bb3f8ef82812a67d3ba7ba17ba5cb2  contrib/test_mklog.py
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
  c650e776de65a2de80bbfb0033641805  contrib/test_summary
! c0d468fe3119514362a769498eed5f64  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
! 923892d7a9f7a205c33b7a17819ff704  contrib/texi2pod.pl
! 12cde958811f4482e4560d5cb45f851a  contrib/unicode/EastAsianWidth.txt
! 09a6b8a9bf45d76e1051f087476c584a  contrib/unicode/PropList.txt
! 016eb0931cf8d9db4a41104fcc06793e  contrib/unicode/README
! 85879f1976cc8eb739ee5585a93938e2  contrib/unicode/UnicodeData.txt
! 267954233e453f5b5c9a1396da8aeb94  contrib/unicode/from_glibc/unicode_utils.py
! 191680bc9f44847c072c9b46239b1a33  contrib/unicode/from_glibc/utf8_gen.py
  53bce7c8a18d257ac361919611f46022  contrib/unicode/gen_wcwidth.py
  8b5fa928c1da8636733a0a76a2da5bc8  contrib/unicode/unicode-license.txt
  93fd39f4c6ff7bf4e5f9e035b65e6e1a  contrib/unicode/utf8-dump.py
  13955dc4ee3f74718a3869155e474db6  contrib/uninclude
! 9001fc047ca1feb126416897c520d55f  contrib/unused_functions.py
! 2151a4c24584cc2d486bad9f33edb0bd  contrib/update-copyright.py
  e96e470317bafce43e11f5d3dc027f1c  contrib/vim-gcc-dev/README
! a0d12be401961a2557883b7c09dc71eb  contrib/vim-gcc-dev/ftdetect/gcc-dev.vim
! 0d02cd23d72dff87da126925264d8356  contrib/vim-gcc-dev/syntax/gcc-match.vim
! 62c751cbf874deb96b0e6ce4f1c65f0a  contrib/vim-gcc-dev/syntax/gcc-rtl.vim
! 77a1724cb607ac6e76b6cf20aea0c1ca  contrib/vim-gcc-dev/syntax/gimple.vim
! 0c8236340920a3dd16200808b0bcb38d  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! b4476301fb49120071bc56aea3b028d8  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  1f4e46c32c0fe1905e25e75d991c931a  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
! 4f0cff44689cac00e5599c785c1be9f4  fixincludes/config.h.in
! f63405125ac9ed944ecf9c9bd1f24dff  fixincludes/configure
! a319a505bde6920ddb4832cf41af3488  fixincludes/configure.ac
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
  77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
  8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! dcbeb83e4eff3897508700553f3db3d9  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! ecaa9d9c26a381ba58e6e3ff4c141a88  fixincludes/inclhack.def
  dd5ae70d9f725bcaf2a15212782db49a  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
  108a55e8b4bb6f853a21951bc0e9cbde  fixincludes/server.c
  402dd306c4c31654789b52632c828cbc  fixincludes/server.h
! 8cea9669543aee0d1e442276fc070daa  fixincludes/system.h
  e629d76c4229bd51744b1e2deab205be  fixincludes/tests/base/AvailabilityInternal.h
  fb44e29b7a8917825243dec10c890f3e  fixincludes/tests/base/AvailabilityMacros.h
  9344637ef653af4f95f298c7addfdef5  fixincludes/tests/base/X11/ShellP.h
--- 293,368 ----
  e2829fc4af4f433a6a328a62d5ce8066  contrib/reghunt/examples/reg-watch
  afd863c2ec84c906e20f9b9787b1f0fe  contrib/reghunt/examples/reg-watch.awk
  8955535523d4b5f48006bcb851ba9b4b  contrib/reghunt/examples/testall
! a441955ac0bc8c9c6eef0fa1eb5102e8  contrib/regression/ChangeLog
  30553bfced1b2b46bf7ca01ef6ba69d1  contrib/regression/GCC_Regression_Tester.wdgt/Default.png
  ad38ddd771df222eb9d413e3c7f6a751  contrib/regression/GCC_Regression_Tester.wdgt/Icon.png
  777bd286c147cc02861811f66b9a4440  contrib/regression/GCC_Regression_Tester.wdgt/Info.plist
  82c9f16421ce2f6efe0ad68151c792a5  contrib/regression/GCC_Regression_Tester.wdgt/de.lproj/InfoPlist.strings
  b017a8530c74c1d79f3b4436169ae9b0  contrib/regression/GCC_Regression_Tester.wdgt/en.lproj/InfoPlist.strings
  3fd4bca42f39c06eff4024376b935265  contrib/regression/GCC_Regression_Tester.wdgt/ja.lproj/InfoPlist.strings
! 0081d522bb93a088e8e391035859f5ac  contrib/regression/GCC_Regression_Tester.wdgt/widget.html
  1e4aedcd2db5dd845a6c778f4ba73b9b  contrib/regression/README
! 7f00172d2edd556d4fbea9c8780e3f0a  contrib/regression/btest-gcc.sh
! 5ac9c78855ba776fb6df22762d747a4a  contrib/regression/mkindex.pl
! d27bf003c6909d3b72c669f162079366  contrib/regression/objs-gcc.sh
  dc562ddb86567c65e82953825713dc4b  contrib/regression/site.exp
  7f6418948396f8250447e3e6182322d8  contrib/repro_fail
! f9be6e921306d5723c2588978cb8bf69  contrib/test_installed
! 5df704b56b2afa89d01024ff0cfd9302  contrib/test_mklog.py
  2c2a06a23394c548bb4afba3c25aacce  contrib/test_recheck
  c650e776de65a2de80bbfb0033641805  contrib/test_summary
! 732c6b05f522996df84ec9220009e971  contrib/testsuite-management/validate_failures.py
  0202e4875fa43ec09cf5e8442c873a56  contrib/testsuite-management/x86_64-unknown-linux-gnu.xfail
! 9d2872396f09ff662d170e4934504ec3  contrib/texi2pod.pl
! 2b5b53583b4bc3786c2cf018636106ed  contrib/unicode/DerivedCoreProperties.txt
! 7c454536b2430e7fe3eb68a615577b1f  contrib/unicode/DerivedNormalizationProps.txt
! ed78e50166219a3505ca5beac1804656  contrib/unicode/EastAsianWidth.txt
! a334e3134419035ff250534fc3d29a4e  contrib/unicode/NameAliases.txt
! def86c24016f2b0b69ac18d444899b69  contrib/unicode/PropList.txt
! c1493fffac94a2669b0ed0df204c5e7d  contrib/unicode/README
! cf389823b6ff1d0e42b8138e3661d516  contrib/unicode/UnicodeData.txt
! aa7e56ec0abd6f5b67619af1ae1ad730  contrib/unicode/from_glibc/unicode_utils.py
! 4d8b45c7383c5270c3f368837254d40e  contrib/unicode/from_glibc/utf8_gen.py
  53bce7c8a18d257ac361919611f46022  contrib/unicode/gen_wcwidth.py
  8b5fa928c1da8636733a0a76a2da5bc8  contrib/unicode/unicode-license.txt
  93fd39f4c6ff7bf4e5f9e035b65e6e1a  contrib/unicode/utf8-dump.py
  13955dc4ee3f74718a3869155e474db6  contrib/uninclude
! b665a36ccad61eddd5b9352911193ac6  contrib/unused_functions.py
! 81b671fe375b49ad598d09af153b5d7c  contrib/update-copyright.py
  e96e470317bafce43e11f5d3dc027f1c  contrib/vim-gcc-dev/README
! 6d24c6a5b85730a00a252ff4c8238f62  contrib/vim-gcc-dev/ftdetect/gcc-dev.vim
! e49c998085ca49d5cdd5b1dd744b2e03  contrib/vim-gcc-dev/syntax/gcc-match.vim
! 54bedcf2c35a94e429210213c2d282c5  contrib/vim-gcc-dev/syntax/gcc-rtl.vim
! 0965b015a27e9396cefcb41612a69c42  contrib/vim-gcc-dev/syntax/gimple.vim
! f896f3b2aae98b892d733dab4575cc66  contrib/vimrc
  da7aeedeb5a86ee6f5982e559a2d6dcc  contrib/warn_summary
  8b59f0d0a2dcdced14765c514fbad719  depcomp
! e19fc0fef70718307095623a34d1fa71  fixincludes/ChangeLog
  6de190723745dc3f75080144dfa2215e  fixincludes/Makefile.in
  b6e3f4950abc6e254b467063381f6473  fixincludes/README
  455903ad4ff71fa5c5340ef7ae41a0e6  fixincludes/README-fixinc
  1f4e46c32c0fe1905e25e75d991c931a  fixincludes/aclocal.m4
  06c68af3013771f49738a0ade1579050  fixincludes/check.tpl
! baef7ba9b787bf0e8083a807ade166c2  fixincludes/config.h.in
! 6dcdfd5a25056c2c0665cba223855118  fixincludes/configure
! 7a218102a34375eaf07c8918816c06df  fixincludes/configure.ac
  2002770d703d59245d89f941a21f783d  fixincludes/fixfixes.c
  77fbad4fc8ec7be3578d045d003446ec  fixincludes/fixinc.in
  8ca216a7024876b7eb9b8abc30a30775  fixincludes/fixincl.c
  adf245e3714f799eafba40af16be8eb5  fixincludes/fixincl.tpl
! 9781772ed7ad0a77750cdbd1f756f566  fixincludes/fixincl.x
  545875b4fe1c26bc3e1befc75b34e9f5  fixincludes/fixlib.c
  620c770139fc32c75b975b614d3156e8  fixincludes/fixlib.h
  5b2c1fd3ef9d44fb6beb1a0d45ddd533  fixincludes/fixopts.c
  ed1415e9dbc8f421fd9288bde0d90ad1  fixincludes/fixtests.c
  51e915676df084b64297d3c4fb0d9c18  fixincludes/genfixes
! 35056e035a592efbda56527fbdd2292d  fixincludes/inclhack.def
  dd5ae70d9f725bcaf2a15212782db49a  fixincludes/mkfixinc.sh
  516608ac1550577d47f48809bb512629  fixincludes/mkheaders.in
  3aa0563cd682ee61ecd9eb6eea0b0bce  fixincludes/procopen.c
  108a55e8b4bb6f853a21951bc0e9cbde  fixincludes/server.c
  402dd306c4c31654789b52632c828cbc  fixincludes/server.h
! 1689ccd25a15a04755950dd062a10192  fixincludes/system.h
  e629d76c4229bd51744b1e2deab205be  fixincludes/tests/base/AvailabilityInternal.h
  fb44e29b7a8917825243dec10c890f3e  fixincludes/tests/base/AvailabilityMacros.h
  9344637ef653af4f95f298c7addfdef5  fixincludes/tests/base/X11/ShellP.h
*************** d6a40f191014042c3a1bf44086be6773  fixinc
*** 373,378 ****
--- 376,382 ----
  08a0e30001bbbf762503a3ac7b0f1ea1  fixincludes/tests/base/architecture/ppc/math.h
  0344107d793447f3bd08f341f61633af  fixincludes/tests/base/assert.h
  0d12f925a64c4fbfb164737569788298  fixincludes/tests/base/bits/fenv.h
+ 42a14fd6a5db8fbc12785343a49ba686  fixincludes/tests/base/bits/floatn.h
  06f1aca4509b42c45b0fcbe0042b88a8  fixincludes/tests/base/bits/huge_val.h
  bb78d18969b9f54a8f602f10eed2d57b  fixincludes/tests/base/bits/string2.h
  2a7dfec79ab9872aa927f9c685175fcc  fixincludes/tests/base/bsd/libc.h
*************** d2cbc665e9046f8acb42c1271592be47  fixinc
*** 409,414 ****
--- 413,419 ----
  a911f5fbb127353024e77149fcf90596  fixincludes/tests/base/netdnet/dnetdb.h
  f690db296a82aeefa0bfe9ad74a2b71c  fixincludes/tests/base/netinet/in.h
  2649ccca3396541aeb5e612d4b4a3141  fixincludes/tests/base/netinet/ip.h
+ 209cd203eddb99971d08755fd4912558  fixincludes/tests/base/objc/runtime.h
  f4a72388e98f34c098a3467dce9aa4e1  fixincludes/tests/base/obstack.h
  c213736f179d8de08a09a9278e048d91  fixincludes/tests/base/os/availability.h
  c3da2b1720112f2adb1c2bbf65563364  fixincludes/tests/base/os/base.h
*************** d2f1ddef1ca3edae298e37f7bc892941  fixinc
*** 441,447 ****
  563eddf934e21ec7f85628e18fb1c641  fixincludes/tests/base/stdint-hpux11.h
  cc3783f241fa992a305aced8e1195ee9  fixincludes/tests/base/stdint-newlib.h
  1ee4e2b61ae5781d35271f3181927037  fixincludes/tests/base/stdint.h
! d47412644cdea4f030ba2744eca6d8ad  fixincludes/tests/base/stdio.h
  1887d8bc1711dae9922852cda6027877  fixincludes/tests/base/stdio_tag.h
  63b7afc35517454fd4753b811e9b6e2e  fixincludes/tests/base/stdlib.h
  42a7de17fb8f2ac74bc30c7029199637  fixincludes/tests/base/string.h
--- 446,452 ----
  563eddf934e21ec7f85628e18fb1c641  fixincludes/tests/base/stdint-hpux11.h
  cc3783f241fa992a305aced8e1195ee9  fixincludes/tests/base/stdint-newlib.h
  1ee4e2b61ae5781d35271f3181927037  fixincludes/tests/base/stdint.h
! df6201177ee6354a4bb61b84de3f16b6  fixincludes/tests/base/stdio.h
  1887d8bc1711dae9922852cda6027877  fixincludes/tests/base/stdio_tag.h
  63b7afc35517454fd4753b811e9b6e2e  fixincludes/tests/base/stdlib.h
  42a7de17fb8f2ac74bc30c7029199637  fixincludes/tests/base/string.h
*************** a22e70b3f29292d0e628450f4bb11e62  fixinc
*** 475,487 ****
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  75d75572793b62bdd8ff4d1504e0cb4c  fixincludes/tests/base/yvals.h
! 76f58c169c1a57cb2dd035a5136b56dd  gcc/ABOUT-GCC-NLS
! f22b2e3bf5466ee9a1ec2695175bfbca  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! e61c5b6840e821198630adbcde4df5bf  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
--- 480,492 ----
  955462b555900ecd3934223c64e21fa7  fixincludes/tests/base/types/vxTypesBase.h
  8baab8698bb83c6b90ef4091c00ddc1e  fixincludes/tests/base/unistd.h
  75d75572793b62bdd8ff4d1504e0cb4c  fixincludes/tests/base/yvals.h
! 6593c1e7d0535b989e3b12084f001039  gcc/ABOUT-GCC-NLS
! c6a6c7658b4593a4877756b850b6db2e  gcc/BASE-VER
  59530bdf33659b29e73d4adb9f9f6552  gcc/COPYING
  a916467b91076e631dd8edb7424769c7  gcc/COPYING.LIB
  d32239bcb673463ab874e80d47fae504  gcc/COPYING3
  6a6a8e020838b23406c81b19c1d46df6  gcc/COPYING3.LIB
! eef8248418ea7ee69fd3c104802eadf4  gcc/ChangeLog
  a3b63c675afa7a655cc2bfa8a907af79  gcc/ChangeLog-1997
  d9a88529352a010253c2e8fb1ed6023b  gcc/ChangeLog-1998
  240f08f81cb4699e8b49347db38233db  gcc/ChangeLog-1999
*************** b9daed1dfb9364dc6bd9e4eef70a1681  gcc/Ch
*** 507,512 ****
--- 512,518 ----
  e70c675c353dff12c134496566b63c83  gcc/ChangeLog-2019
  a8115a08b5042f830403fa427ce7c243  gcc/ChangeLog-2020
  393ff914a89e665be5638fc0ebce548f  gcc/ChangeLog-2021
+ d75beda6756e3fb23a8fe4bce262c38a  gcc/ChangeLog-2022
  99fbd9e13a4133855332bf21b0e8fc4c  gcc/ChangeLog.dataflow
  e36816ca56b2bbc8bfc358e0185fc1d3  gcc/ChangeLog.gimple-classes
  fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/ChangeLog.graphite
*************** fb3fadb88e1d2b3b640cfaaa5ff11780  gcc/Ch
*** 515,533 ****
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! 86af5c10b6b37676f414c2c626ba2538  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
! 344b503d3678445acf0d656cf7f9fa81  gcc/LANGUAGES
! 4b36a121de8f694a404b19d3a6722e61  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
! 5eff92c318906d6fcb5087b9484ed5e4  gcc/README.Portability
! 40d826b642dccc9eb94a099ef3cefa86  gcc/acinclude.m4
  6526979dd900a0b58b7691b478a91fec  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! 1281ba506544178a2c307b3cae0b1090  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
--- 521,539 ----
  3eb07e0b2e542409bf73d359f7f65609  gcc/ChangeLog.ptr
  e13638e26743ba41e6011b76cc00d9a9  gcc/ChangeLog.tree-ssa
  739ab47f6425bcea1d05e4fc0542de54  gcc/ChangeLog.tuples
! d4578104e96dea3772d5ce4b035d8045  gcc/DATESTAMP
  d41d8cd98f00b204e9800998ecf8427e  gcc/DEV-PHASE
  eb92e1ff5e982ca07e173e0eb286d243  gcc/FSFChangeLog
  30e1e33411566388b3164558482dc5e6  gcc/FSFChangeLog.10
  36698274bb69e2ada20f5cc434f3caa5  gcc/FSFChangeLog.11
! 1f93f45664cdb0f660bcb8a952ca6078  gcc/LANGUAGES
! 725306263d9269a1b49daaace3408add  gcc/Makefile.in
  ec6799501b2eb2923d5de6a66169dbd2  gcc/ONEWS
! 8c961c26ecaaf1660ca9888b2b0bca59  gcc/README.Portability
! f6d47a542d432aed7e7eaaecb71d3a4c  gcc/acinclude.m4
  6526979dd900a0b58b7691b478a91fec  gcc/aclocal.m4
  16a499934b71eb6cf7c0d6899cd6006a  gcc/ada/.gitignore
! c8c48c88ca73f4681b51f63bdc018ebe  gcc/ada/ChangeLog
  683be0b07dc4f64f118fd5e8ae9cb30d  gcc/ada/ChangeLog-2001
  7aff25efb203be4136b8776cdc812956  gcc/ada/ChangeLog-2002
  cd2379152000f40157d349018fb9364d  gcc/ada/ChangeLog-2003
*************** e1e4800d4922875de1a9dcfaacf7e1fe  gcc/ad
*** 549,1294 ****
  e886b111487071a30a52edb616ff7844  gcc/ada/ChangeLog-2019
  25a37c68917fa9927277f5c8fda08d05  gcc/ada/ChangeLog-2020
  eb047ffc35b1d44455bed0519888503c  gcc/ada/ChangeLog-2021
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  79432d3beb46b4a8f4c4c114203a6527  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 87ef82c8aad0e2530882436cb0a03443  gcc/ada/Makefile.rtl
! c9e89f300abcda134a1a604241085980  gcc/ada/ada_get_targ.adb
! 340e6148317da7a48a9b6e559bb78b37  gcc/ada/adabkend.adb
! 000a9d75ae95cc17f681998d95d6bd95  gcc/ada/adabkend.ads
! 143495bc279b5665b1b6fac5a4b23ab4  gcc/ada/adadecode.c
! 1677048585847303e8e587d77f9cea7f  gcc/ada/adadecode.h
! 33f7beb8c7e4e500c97566c007b2f2a8  gcc/ada/adaint.c
! e45fd21f903a7a450a6e8f0b97cdd02c  gcc/ada/adaint.h
! cd057b4aab78ef11070e3cc98b6452a4  gcc/ada/affinity.c
! ab6bbc8b5f4cbe048e675b8d77b37e11  gcc/ada/ali-util.adb
! 961496fb8cb8bcd2464c40f39f60000d  gcc/ada/ali-util.ads
! d49a3d529afd23f1bbd6fb4c7ae090c5  gcc/ada/ali.adb
! 41758084d594e96bccabbf47236138a2  gcc/ada/ali.ads
! 94761557870db4edf5f5a92d1d4eeb3a  gcc/ada/alloc.ads
! 5f6c999511a416a17c6efa44402e34c1  gcc/ada/argv-lynxos178-raven-cert.c
! cf387b70c9d5d17e48d6fe3b7de090ea  gcc/ada/argv.c
! ef5915e1fde7db3e68610cf7d6eae5f1  gcc/ada/aspects.adb
! 2dffb6c811683a9d3b1eff2964ec5eca  gcc/ada/aspects.ads
! 652dabae2b38ccb150484cacfe949900  gcc/ada/atree.adb
! 05f6e6b8acfd925d5708bbb2b02ee25d  gcc/ada/atree.ads
! 8a465aa0de9d12e72af47d41c409e622  gcc/ada/atree.h
! 9b2f3ac5f8aec6668b67265ff928f7c5  gcc/ada/aux-io.c
! 40d285dedc90f32652320a1762edc701  gcc/ada/back_end.adb
! dfb39a3c62ce22e20dd7501513c1beef  gcc/ada/back_end.ads
! cdc478c0e3394d3280b2150d63d1a61c  gcc/ada/backend_utils.adb
! 8f9862abad036a55e196f7a444a1fbf8  gcc/ada/backend_utils.ads
! e2f2d7d58bb13f15cc2b2bdb05a0ce9b  gcc/ada/bcheck.adb
! 021abf805c938061849b6cdc3d982850  gcc/ada/bcheck.ads
! 43490912b44a4721ee27246b93b97c89  gcc/ada/binde.adb
! ea01fe912f8e166ddac8e12ee4b82835  gcc/ada/binde.ads
! 99e1a82825735fb2b5d3a3614b672b07  gcc/ada/binderr.adb
! 404ad154964d187aee9f2a10c85cf38d  gcc/ada/binderr.ads
! 12fe74a14ea8b268e94104ebc1dbf0fa  gcc/ada/bindgen.adb
! 60f9b926a7fa1bff30b181943b1e5fe2  gcc/ada/bindgen.ads
! 8dfc5df30dea117498a765e1325ed842  gcc/ada/bindo-augmentors.adb
! c6d12e21802f00b6266d2478defa78e3  gcc/ada/bindo-augmentors.ads
! a92e5263c330da171eeccc3bb7328c13  gcc/ada/bindo-builders.adb
! 5ced02e36f7ad0931b58c8e5ad4a1a79  gcc/ada/bindo-builders.ads
! 1a0582752582b6aef10996ba4855fd95  gcc/ada/bindo-diagnostics.adb
! 957f1458704891d7f844daaf0e64f678  gcc/ada/bindo-diagnostics.ads
! 80c2c69908174dcdae4f536fd3b52a73  gcc/ada/bindo-elaborators.adb
! 4174dddd40e7bc5934e3b43f860195b4  gcc/ada/bindo-elaborators.ads
! 2beed848b2468520770e39463234d308  gcc/ada/bindo-graphs.adb
! 092d6e4244c07a0aff833bc6474fc300  gcc/ada/bindo-graphs.ads
! caa215a5a97f6b3a3778cd68274672bf  gcc/ada/bindo-units.adb
! 7f8692cddb6a6911512585feb4aaebe3  gcc/ada/bindo-units.ads
! 35e7ea619b01ddb064f0af2d2f79b053  gcc/ada/bindo-validators.adb
! f761c5242047911b09263f7c3ffb8c28  gcc/ada/bindo-validators.ads
! 2a7c2ca09d1678f8e888a37c03153549  gcc/ada/bindo-writers.adb
! fc2ea25cfd42e9815af3d239052dc9a5  gcc/ada/bindo-writers.ads
! 8345c16b25c104280cbcf32fad049ab9  gcc/ada/bindo.adb
! 726718d4de8fb770b4e433ade20d60fd  gcc/ada/bindo.ads
! 371fd18d186bd02bb62be6e2876a5a2c  gcc/ada/bindusg.adb
! f9912e569ad55846a0edb7796327c169  gcc/ada/bindusg.ads
! 88c3231cb5b0cbadc78e9bbdbcd2fb48  gcc/ada/butil.adb
! aaf91eb612c3609411c6e023f5bb66c0  gcc/ada/butil.ads
! f99a67883670b32df0dfaf4c2e100d99  gcc/ada/cal.c
! 50ec1344da1b017e65a5eb5a28c9536a  gcc/ada/casing.adb
! 592c20ca587a6b1c899f07001d99fb8a  gcc/ada/casing.ads
! bf7dde4bc31048eec96689ff40b3d433  gcc/ada/checks.adb
! aebcb80ff995a10442ee627fa91ec2f1  gcc/ada/checks.ads
! 52835d65af202f58a22a7c6767b07408  gcc/ada/cio.c
! eaf64fd94febe71bc32da33b94997d2d  gcc/ada/clean.adb
! 58d35c683225d7941ed85ca811dc0f4e  gcc/ada/clean.ads
! db9985881e22e80c4e3ed2f877f4210f  gcc/ada/comperr.adb
! 1c3a86c34937a5fd35c5ae6a277c8c55  gcc/ada/comperr.ads
  fbd23958a6d5c4207e39317e708436ac  gcc/ada/config-lang.in
! ec43b0e9748d09b20b111e24b440a6f3  gcc/ada/contracts.adb
! 4e0fc0d5b3cea79c8f4ec8610c22d962  gcc/ada/contracts.ads
! 973599e60a95cf93e0273f1e243b37ab  gcc/ada/csets.adb
! 27f5a100ccef1bc54f4d9362c24bf716  gcc/ada/csets.ads
! 4646a10ff0e0e0718a26e27c176c6e8d  gcc/ada/cstand.adb
! 8d94abe51c49ca942be0284a200de7af  gcc/ada/cstand.ads
! 1db98771f5117dd943fec57f65c73895  gcc/ada/cstreams.c
! 91814fa30a47aebd007aca8ce34745c2  gcc/ada/ctrl_c.c
! 0f9e026f56ebd786d0f5eaad1c6aa70b  gcc/ada/debug.adb
! a669a384c73d1bded640f919332d58e9  gcc/ada/debug.ads
! 1f51a34362995cb1d3a01cdc1da54396  gcc/ada/debug_a.adb
! 86bd16c2c87a721c7d239368284e23ff  gcc/ada/debug_a.ads
  e985c86f5eb27a1af5221f7338ac92cb  gcc/ada/doc/Makefile
  a012e0cb5df366014b5a4988036a509a  gcc/ada/doc/gnat-style.rst
  146dcc045a420b5f36161c6e32a7dea8  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 30468948a242697354c65f06568389ee  gcc/ada/doc/gnat_rm/implementation_advice.rst
! ef4cecce680c33b415ea227fd2e5712e  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! 3ef1d464bd3b4a25502f09b3a0b85c96  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 05324d39fa9d83b4f19105b5f1c12145  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 098eeb5714b03f8afece4bfeec8188dd  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  4c8f34f9d69c20b677b885ec36ef9844  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
! 70af879066bdb8351dd70d66647ae613  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  8ac597e4a14e2e70cf692a87fa810b0a  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  bb3c8ae8aaf1cbd06bc44135da97d801  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! ab2bef7f5a321aa12f45ca500dd29a93  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
! 2558efb96a3ef6fe1dcfecccb751a9d7  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  03676be4f649629e37041b8c849c7825  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! 3912a487cc84df1d901218cba2d89b23  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
! 0c417860d1b59e9ed53a0bb81cbdf579  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! 0cb9808264d3ce8206127466415059b6  gcc/ada/doc/gnat_rm/the_gnat_library.rst
! 8b68d207a54ca14c6fe2d33005ece437  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  522a8b1f4fc69117e20c4690b1cde1a3  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 28a7e171022984ddb57ad9d2b16fe8be  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
! 2e09bbabc6b508ce5d975d5e9e0eff30  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  c8c5cebc5a8966a6a0b278b30b2f5738  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  329d0c3464eb53db9196226f014d72c9  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! e489ee5246fa454188060767f54cb814  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! 1834be8e958f1b7a8e0914428ed7368d  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
! 996c912f607538e32d01140682b88ff2  gcc/ada/doc/gnat_ugn/inline_assembler.rst
! 0925eb2067c78d26235b64bfca9e7f21  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! 34a01a2b148815ad873c47768c7aa982  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
! 309751622eb4b63aafe66e794dc4fe28  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  1b7b0904041eb97a9ac023e776774561  gcc/ada/doc/share/gnat.sty
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 077b4ef785c5047b58bf77d071d0fdbc  gcc/ada/einfo-utils.adb
! 19cf753ca49fd3a186f2d65e75f08cef  gcc/ada/einfo-utils.ads
! e0acabac141c91bf8a74dd7bf9f39d40  gcc/ada/einfo.adb
! 3e87715cea15634f13ffd2a12a7cc913  gcc/ada/einfo.ads
! c808b432e7f90163bb7945ee07cb8083  gcc/ada/elists.adb
! a6b4d61435ba4081c0ad2d1039406d12  gcc/ada/elists.ads
! b397ee225575d1c5cd31bf265ffd6b3a  gcc/ada/elists.h
! bf372363916f293a3b5aa0398ae9f7b7  gcc/ada/env.c
! 92c0d697710561270b6e768d5cdd64a6  gcc/ada/env.h
! 2a53e60a9a2f91ff1769f699641b528d  gcc/ada/err_vars.ads
! ff8b851761450f865b497793ffe58c79  gcc/ada/errno.c
! 61d16455a0c1677f20f9f27618cc113f  gcc/ada/errout.adb
! 02d64772e366a2ad835d213341147639  gcc/ada/errout.ads
! c11710b6c2f29b1a7be4076c550130ce  gcc/ada/erroutc.adb
! 81dcf79732930a7a41706fe2197db401  gcc/ada/erroutc.ads
! 247fc2ddc399cd1e1668485753c7e6ec  gcc/ada/errutil.adb
! b758ca9ff1e670b06faa91172b54821c  gcc/ada/errutil.ads
! 4973644be06a9ffee0f1ecc75fd661b8  gcc/ada/eval_fat.adb
! b3afcb4757e1716de34c0bfa9592e38b  gcc/ada/eval_fat.ads
! 5984eaf2b94418d32ae102682dfdf568  gcc/ada/exit.c
! 20f27f498e9b06aaad420c4fb96b8102  gcc/ada/exp_aggr.adb
! 36e1c9b931704c591af9513c4532543b  gcc/ada/exp_aggr.ads
! e10405e98b44d560103a055b1f00418e  gcc/ada/exp_atag.adb
! 774118c8b5d8ee467bab29cc546bfe90  gcc/ada/exp_atag.ads
! bc6bd227da810b414dd3759e2db7291a  gcc/ada/exp_attr.adb
! acba950d800fbbbc5eae6efac51ce2e2  gcc/ada/exp_attr.ads
! a5e8c56591ffbbc19192a1c2895dda24  gcc/ada/exp_cg.adb
! 254834bf9d359d6c3921d50e5d8b5a0f  gcc/ada/exp_cg.ads
! 399d7a34b96ab5802acf5a39f39eeb3e  gcc/ada/exp_ch10.ads
! 87ed5276811cfd045629be04bfcb5f5f  gcc/ada/exp_ch11.adb
! 2cc2d4f3c40d2aa45771beb2345f88ab  gcc/ada/exp_ch11.ads
! 61a425f8c34d2f905fd1bad571a3d83c  gcc/ada/exp_ch12.adb
! a16b833d7af8c9999d879a1ac0e08c1a  gcc/ada/exp_ch12.ads
! 12cd0646b2456dca2f23d77ec600a3cd  gcc/ada/exp_ch13.adb
! 1ca1a2d00c7b2a35ccbf99e70865d806  gcc/ada/exp_ch13.ads
! be56f221d42251fd1dae73968881b1fa  gcc/ada/exp_ch2.adb
! c8d75e8e54eccbcf942dc059b85a3bb5  gcc/ada/exp_ch2.ads
! fd4cf5651067e0b1554c80d51507bcb6  gcc/ada/exp_ch3.adb
! 0a54d172f10092ff3ff2c2d2d095ba55  gcc/ada/exp_ch3.ads
! aa9d2e89f4c039691e7312000c600df8  gcc/ada/exp_ch4.adb
! 1c15cbd77887db9d3bd25c6972b592c8  gcc/ada/exp_ch4.ads
! 9a235cf11293bc86d8c0cb1600c55088  gcc/ada/exp_ch5.adb
! 979227d95a6dac9baddbe04b8c3493c8  gcc/ada/exp_ch5.ads
! 038fc84fbbe4efe323e805b580979589  gcc/ada/exp_ch6.adb
! 8d66ec9e862ba21f160a8170f1e49325  gcc/ada/exp_ch6.ads
! c8113af9b067f0ae46ac677bd654998c  gcc/ada/exp_ch7.adb
! 1fb7263aebbb4f05b0d18af30966f286  gcc/ada/exp_ch7.ads
! c878c67c93d75a156d7addd650439dfc  gcc/ada/exp_ch8.adb
! e113b356ea2318ef4ca18e3488bce0ee  gcc/ada/exp_ch8.ads
! d14cef46ffa5969487acf8a2b60f077b  gcc/ada/exp_ch9.adb
! 0ad037ac708b260c527d2cc406fc9b4e  gcc/ada/exp_ch9.ads
! 2c7edc0fd0249fe0e9cff1fa5862b99f  gcc/ada/exp_code.adb
! 1537bb3d872bd50ff12f21701f180737  gcc/ada/exp_code.ads
! 9dea05ce3951788ed76b7837b346a5c4  gcc/ada/exp_dbug.adb
! cd288878709892336f3b30133eb6e256  gcc/ada/exp_dbug.ads
! 97ee8c747b69f4c35d77976094096555  gcc/ada/exp_disp.adb
! ec63bbb7626cf9ad17a801c990e4105f  gcc/ada/exp_disp.ads
! 4664680145b5d3e29cae84e4e4f0ec7c  gcc/ada/exp_dist.adb
! fc5edab27cdaed1d95b8e08d99a0c832  gcc/ada/exp_dist.ads
! 9a83f9319a2aa9aaaa5bc4debd9ef4ad  gcc/ada/exp_fixd.adb
! 735735b7a3b319a7b5c929194ebd2d67  gcc/ada/exp_fixd.ads
! 23a118f6c03dd25b00e839dbe6f51c75  gcc/ada/exp_imgv.adb
! 62a72d818540b3d6a633ac51ff960c90  gcc/ada/exp_imgv.ads
! fac962bb5cafa01fe15c9e54de01b873  gcc/ada/exp_intr.adb
! bafb87ef3df7eaeaf2f4a2d748c9a4f8  gcc/ada/exp_intr.ads
! 5880bc36cde4b60d3274d5491964fdde  gcc/ada/exp_pakd.adb
! ec9b04ca8b2f8bf92fae9d7152ff9fc7  gcc/ada/exp_pakd.ads
! 67e56bdb41255ae4967a1bf907bf4edf  gcc/ada/exp_prag.adb
! e71e5270763f785a70999bdce5040d39  gcc/ada/exp_prag.ads
! 6ea395c514878b0a25360c7c7cc9ad83  gcc/ada/exp_put_image.adb
! 219becf6e2526f8ddf91239ad0f559b1  gcc/ada/exp_put_image.ads
! 844081effca7d7d0264444322420b9a9  gcc/ada/exp_sel.adb
! c42de5191c8a08b45280852624d62a4c  gcc/ada/exp_sel.ads
! cc967130fd3035e3e3b996794bedec75  gcc/ada/exp_smem.adb
! e8b5a7a608439951d89518d8bdb866c1  gcc/ada/exp_smem.ads
! 0eee7a32d97d00b7e38bcbf1aee9191c  gcc/ada/exp_spark.adb
! ee1066e7c5413819b03e6001a9cfae3a  gcc/ada/exp_spark.ads
! 3024ccde020978e7bbc056c7abfa393a  gcc/ada/exp_strm.adb
! 371c1be0effc44a9302c0cfc8f196645  gcc/ada/exp_strm.ads
! 1fb9b9b5951171444f981e745a53ce43  gcc/ada/exp_tss.adb
! f278fc9fa8e840c2b94e28c3d094650a  gcc/ada/exp_tss.ads
! 0e337130cf6c6c0372f0952e49f7d985  gcc/ada/exp_unst.adb
! d5908f51ae172d7ceff89f100340126b  gcc/ada/exp_unst.ads
! 41a87f3f2511529ac9316c9d9458b905  gcc/ada/exp_util.adb
! 7ffa7e0ec39d43af001a15aaac9ba78c  gcc/ada/exp_util.ads
! a9edaee743b4d940a7706a0e09b30fb2  gcc/ada/expander.adb
! 9af78763a2ab23ffd55521e61c23ae50  gcc/ada/expander.ads
! d434b090b6baf3dc34c1bb2270d7559b  gcc/ada/expect.c
! c36edc6e0004e8940eff79d111bc73da  gcc/ada/fe.h
! bc5bbea2c63f8a38f7a017a615feef01  gcc/ada/final.c
! f6306675fca720f37fff70d71485f7f1  gcc/ada/fmap.adb
! 7d78fba7f6f92d969ba7d95a1bbf1c14  gcc/ada/fmap.ads
! 326f4f504c4d53b32e4341e2c0762bc2  gcc/ada/fname-sf.adb
! a7c1e341774de2430c67da6c82d16588  gcc/ada/fname-sf.ads
! 1815d7a2a29ed0e6f33c41962400738b  gcc/ada/fname-uf.adb
! 7e6a08c35db7455b9496c4171903fb7f  gcc/ada/fname-uf.ads
! c2ec6fcdb9d733c37d0eaf3cd6d95b6d  gcc/ada/fname.adb
! d054a156bf04ecfad524d877e49e5cc8  gcc/ada/fname.ads
! f4803c7c5c388915cd757f7539e5c623  gcc/ada/freeze.adb
! e0947e0537bfcf9ef386e9dd22d22ccc  gcc/ada/freeze.ads
! 34a4d520e10386bdddf0f9a846a06ebc  gcc/ada/frontend.adb
! 9e0e13513f7008d7436b11566fc51162  gcc/ada/frontend.ads
! 6e3f84a0381a328502fc75659214e30c  gcc/ada/gcc-interface/Make-lang.in
! 815ca83318c00efdb98b84eb0d0a9e66  gcc/ada/gcc-interface/Makefile.in
! 35dd49b4643582a2e1e847bc6aea01e1  gcc/ada/gcc-interface/ada-builtin-types.def
! f7677c298cb2f4c70ecf284c7e18cb80  gcc/ada/gcc-interface/ada-builtins.def
! 055be3d11fa6ccb53ffe7f8970a005ce  gcc/ada/gcc-interface/ada-tree.def
! 17e94b8ad47f834c02ffa404cad6a5c5  gcc/ada/gcc-interface/ada-tree.h
! c624ca95ac9cafe80b36002e2082ba32  gcc/ada/gcc-interface/ada.h
! 94e0754690ae0c8dc74fe08f0a50999e  gcc/ada/gcc-interface/config-lang.in
! 5b910ac4d9e39a40ea0683b0648e49d2  gcc/ada/gcc-interface/cuintp.cc
! 9bdb6a78832ac52be4a2af482e2a4572  gcc/ada/gcc-interface/decl.cc
! 86b3aa73d9a4f83e3574afdb2cba3bd1  gcc/ada/gcc-interface/gadaint.h
! 685316e06bf82a1d265c8a8240afc33b  gcc/ada/gcc-interface/gigi.h
! 61f788f464d3715bb66330ecca2ade58  gcc/ada/gcc-interface/lang-specs.h
! 0c17b9bf1e38c0153d2d49a7cb476cee  gcc/ada/gcc-interface/lang.opt
! 62b968ec91ce4b7a11f33851d1bd1140  gcc/ada/gcc-interface/misc.cc
! c72e1e6f142057c645c4f468812d0ef6  gcc/ada/gcc-interface/system.ads
! f90bf61642fd847fee99bdb046417a52  gcc/ada/gcc-interface/targtyps.cc
! 547939c0657a7e8ef5b64ff209647ba7  gcc/ada/gcc-interface/trans.cc
! e51c641c60c08bf3b6b518bbe0216aa1  gcc/ada/gcc-interface/utils.cc
! bb629ed986dc148ade9c1aa91064d240  gcc/ada/gcc-interface/utils2.cc
! 29c7d604ec0ca9d614e46b1b3961a4eb  gcc/ada/gen_il-fields.ads
! 946fddb0d501dee20d12b65b9cc46437  gcc/ada/gen_il-gen-gen_entities.adb
! 90c3402c1bf9360da61d9cfca5e75e5e  gcc/ada/gen_il-gen-gen_nodes.adb
! 5d4c1175e8bf2993fded686d0054f966  gcc/ada/gen_il-gen.adb
! 80d1b370ac59bca0a3f4c05c17f896a4  gcc/ada/gen_il-gen.ads
! 673b70a7dbba818cbeb23cde116f50d3  gcc/ada/gen_il-internals.adb
! 1731fe5d9dc6e6e3a15d19038a250566  gcc/ada/gen_il-internals.ads
! 8c97a4656c1665b8d195c892754720c7  gcc/ada/gen_il-main.adb
! b26aee58c45d16d52f79af6f8daf88ab  gcc/ada/gen_il-types.ads
! ec2ab47d9e4c71d5ffee047cafa1605a  gcc/ada/gen_il.adb
! a5d6b1701ea5bf215da72f26665211b2  gcc/ada/gen_il.ads
! 7bedc1c03029b29dfee39835229cf7a2  gcc/ada/get_scos.adb
! 2e59a7438a16673efcd5c70daf5a0e18  gcc/ada/get_scos.ads
! 9f3dc356b9d91b96adf53a3fb7a606c9  gcc/ada/get_targ.adb
! 351ecddbbf279ecacda6f8b110b1aa57  gcc/ada/get_targ.ads
! 749cbaf5fd78c41a5722faa5df1ef62a  gcc/ada/ghost.adb
! ba047e58cd77fc336c90b01b23f71c24  gcc/ada/ghost.ads
! 48138aadca0757211cd66500b22c20c0  gcc/ada/gnat-style.texi
! f1f04a1c1f86fac3b3f000732bd4b90c  gcc/ada/gnat1drv.adb
! afa6e65ceda1cab37dd5aeae315e83d0  gcc/ada/gnat1drv.ads
! c103505e4c64967f875c7a4238798e4e  gcc/ada/gnat_cuda.adb
! 0927017a26f803816c66013199c6381a  gcc/ada/gnat_cuda.ads
! b82878927be65ce37185c6f06e771bf7  gcc/ada/gnat_rm.texi
! 36ea8fcfb3fcb7f870a0bb158f1fbb12  gcc/ada/gnat_ugn.texi
! ce40b6396b0acdb9483ee8aab9dc817f  gcc/ada/gnatbind.adb
! c9569f7a1940b7eba403a6fe5e05e812  gcc/ada/gnatbind.ads
! 25b3f7a90a2fa5686e2a38a76f1c635a  gcc/ada/gnatchop.adb
! 3264871b4e4ffb3ae1b66299835ee03a  gcc/ada/gnatclean.adb
! 09d8cc80e1d28536ef2fee92b5291323  gcc/ada/gnatcmd.adb
! c0f6f3d8e43bcb668dd35e6bb3765a61  gcc/ada/gnatcmd.ads
! 698187c16a4c5728189f8dad3175ac27  gcc/ada/gnatdll.adb
! 7d071e8f06079ef529dc3b7096cf0db5  gcc/ada/gnatfind.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
! 56dd44500bb8413dfa78f339678dbb19  gcc/ada/gnatkr.adb
! 4a08c44973dfb8798a144de4a4382323  gcc/ada/gnatkr.ads
! abdc8ac5c8a0a44b3a8be0d6256d6dc7  gcc/ada/gnatlink.adb
! a01ce3cfa580c83e6f3ff578dd90faaf  gcc/ada/gnatlink.ads
! 76efb8d1e9825a239f9d2901c05795b7  gcc/ada/gnatls.adb
! 008c7d145c00883d5ed49529b69c8438  gcc/ada/gnatls.ads
! 422136c9fd80c98d38ff7579a8e48b0b  gcc/ada/gnatmake.adb
! c644e5128369eb58431084edb4dbf579  gcc/ada/gnatmake.ads
! 8270889e7a7b52f6aa0e6526c7789569  gcc/ada/gnatname.adb
! 2c2a0ebbd0675ec853a34635035f260e  gcc/ada/gnatname.ads
! 8aeafbe31b5998852d69e8c9e65a0250  gcc/ada/gnatprep.adb
! c21a15f7a0586b2c9b64ddd701ce45e3  gcc/ada/gnatprep.ads
! aaf95b1ef85ff9c1554072f1ea7b261f  gcc/ada/gnatvsn.adb
! 650410eaa4c35c6d3957b4aac334800a  gcc/ada/gnatvsn.ads
! 0358a5c8118b84d5a959b3e00266ed8e  gcc/ada/gnatxref.adb
! 49bc19d7e396c6088497a148513098e1  gcc/ada/gprep.adb
! 9510aa5668897b508c629072d71b3d91  gcc/ada/gprep.ads
! 6ddfceb174ead121eff511383fa19785  gcc/ada/gsocket.h
! b61a05d72a16a8947e575d18c5ece341  gcc/ada/hostparm.ads
! 35471dba1ebe8cfe192b209ef9c366bf  gcc/ada/impunit.adb
! 4ddaecc9dab0bd00fb6dee043bf0699a  gcc/ada/impunit.ads
! 777cab6afa8521661d460ddcc7f152e5  gcc/ada/indepsw-aix.adb
! 69995b01499fb7214296e915509c989e  gcc/ada/indepsw-darwin.adb
! 47e4d274f5e7c2e075d3cd8610c86d5a  gcc/ada/indepsw-gnu.adb
! da149ea0b4a9fea047279e04ad9feaaf  gcc/ada/indepsw.adb
! dde138e2acee482827854d23dd03b4e4  gcc/ada/indepsw.ads
! 83365bfa2cd3e2323425356d09f278e2  gcc/ada/init.c
! f24c72371216274d4a3e763f57de1912  gcc/ada/initialize.c
! 830ac028dc929fee73c7c4d45f999c53  gcc/ada/inline.adb
! e7461fbd9bc072501c8b6a76306075d0  gcc/ada/inline.ads
! 533945c26092735d5363ec5210c3bd0a  gcc/ada/itypes.adb
! 11bef7cb043df9c1b8f818f721ed74fb  gcc/ada/itypes.ads
! c8b5aaf5549e40a1c68b17a000e9d185  gcc/ada/krunch.adb
! 47223c1ee9d9180775f5fd9cc8948d61  gcc/ada/krunch.ads
! f366c730d5898f7e751249f650fa67ae  gcc/ada/layout.adb
! aecf49839060eac6112a5e116902a766  gcc/ada/layout.ads
! 837d9c2f9d74e8fbe7593c487e5f9d62  gcc/ada/lib-list.adb
! 6a2f83138973a96ade6343a938de09e0  gcc/ada/lib-load.adb
! b409d974c986cc22b2631e4645502d37  gcc/ada/lib-load.ads
! d10256d3bc9906428e25ca6ad8948a9b  gcc/ada/lib-sort.adb
! bd43e595b1ed924ae3055d568eeacf64  gcc/ada/lib-util.adb
! fcb14f2efe4961cd853b863d1a6f144f  gcc/ada/lib-util.ads
! cfc593fb4ae8cde5407e64a854f36d24  gcc/ada/lib-writ.adb
! 37e8687e96296e70768c7a9838ddea9f  gcc/ada/lib-writ.ads
! 50eaa7273c55e3b0f87ee621ee75fcf9  gcc/ada/lib-xref-spark_specific.adb
! 5b3bc2dc145f103b4556dc04d1cdcd56  gcc/ada/lib-xref.adb
! 6fe50c3e851d7a5836853e62b88b9403  gcc/ada/lib-xref.ads
! 5c2ebdb59f16049aa815d31765921d39  gcc/ada/lib.adb
! fa69ba3cbef19f90ed4e37b4e69a4653  gcc/ada/lib.ads
! b629711368df2f3d17489b9af22a1fd7  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
  c4e9620896065355c1895fb26186b8d2  gcc/ada/libgnarl/a-diroro.ads
  d33d03640fb0fae0a821bbeb1be518f7  gcc/ada/libgnarl/a-disedf.ads
! 351d64d720221bff94de3d240dd458f8  gcc/ada/libgnarl/a-dispat.adb
  380695cb64d70014260c4cbc5dc99e54  gcc/ada/libgnarl/a-dispat.ads
! fdb1b464be95c3d50cfb836acc6d1c09  gcc/ada/libgnarl/a-dynpri.adb
  a2784499cf21750d8840eeaf03b9e700  gcc/ada/libgnarl/a-dynpri.ads
! 040a9c5b4698bac3c9547819b39b4874  gcc/ada/libgnarl/a-etgrbu.ads
  3e60794a02e6ff3380c0daf20c7c6bc2  gcc/ada/libgnarl/a-exetim.ads
! 2b7e7c66e475e674815a6cf3c8f9e5b0  gcc/ada/libgnarl/a-exetim__darwin.adb
! 478217037a415b844cdf476842a608ac  gcc/ada/libgnarl/a-exetim__default.ads
! 2bcb0bdc5c20abc97d27e439696ed100  gcc/ada/libgnarl/a-exetim__mingw.adb
! bcc95e82abb8f455ee7d1a78f56d70cc  gcc/ada/libgnarl/a-exetim__mingw.ads
! 192849cd5099bff080a7aa7bc5681fcc  gcc/ada/libgnarl/a-exetim__posix.adb
  8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
  66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! 2454dc03738d20b46c5462c868e1bfc0  gcc/ada/libgnarl/a-interr.adb
! 44ff625603e235e14cdda57f67915050  gcc/ada/libgnarl/a-interr.ads
! 396a633929c04959b3fc8580a5cc1f49  gcc/ada/libgnarl/a-intnam.ads
! e403b5ce9eeac886084a22cff5ba3471  gcc/ada/libgnarl/a-intnam__aix.ads
! 7123026a77a98d57af13fee21f892336  gcc/ada/libgnarl/a-intnam__darwin.ads
! 0bc2f05b2203df578ca7b85570ab1e33  gcc/ada/libgnarl/a-intnam__dragonfly.ads
! 373420aba03317b451075e81f71e5ab2  gcc/ada/libgnarl/a-intnam__dummy.ads
! 37b516aa93a97c68dd1f1e93df518b5d  gcc/ada/libgnarl/a-intnam__freebsd.ads
! bcbeb6fb547c460ae0e29c98d0d5eff6  gcc/ada/libgnarl/a-intnam__hpux.ads
! d04c1f6daa007ff9411d7c270c63296f  gcc/ada/libgnarl/a-intnam__linux.ads
! dcee1be8c2050d4ed1dbcd55a676afb7  gcc/ada/libgnarl/a-intnam__lynxos.ads
! 3bd4b4020bf0d8868c39297e411b9570  gcc/ada/libgnarl/a-intnam__mingw.ads
! b64a5ab76d153fd5c0e28b3413e12dce  gcc/ada/libgnarl/a-intnam__qnx.ads
! 60ebe59b1c2796713b50d3bd0430e8c3  gcc/ada/libgnarl/a-intnam__rtems.ads
! 4d6a051688ba6045f0698bed324d7d4f  gcc/ada/libgnarl/a-intnam__solaris.ads
! b3b8cf0ca98be609af8c17ca32002aae  gcc/ada/libgnarl/a-intnam__vxworks.ads
! 9c7ad0c99ef411c517123583a955c954  gcc/ada/libgnarl/a-reatim.adb
! 2bd4bc11894aa5c74224bcbc4f47f9ca  gcc/ada/libgnarl/a-reatim.ads
! 19322f3b3642284085c64cc5db130873  gcc/ada/libgnarl/a-retide.adb
! 29e8875ff15d1ddb3f7d9620593f47de  gcc/ada/libgnarl/a-retide.ads
! 428c372050da7a4ae256de4339056a24  gcc/ada/libgnarl/a-rttiev.adb
! f66dc484df24d7e819bc1fd5a6cd8403  gcc/ada/libgnarl/a-rttiev.ads
  c04bb8934366f43faa60d914e7ebea7a  gcc/ada/libgnarl/a-stcoed.ads
! 44dba5fb1c09aaa799612dac2309cbd5  gcc/ada/libgnarl/a-synbar.adb
! c3ca3242f847947c9be76142e0811dd7  gcc/ada/libgnarl/a-synbar.ads
! 5b3323debb1be2b67cdb5f20b855b774  gcc/ada/libgnarl/a-synbar__posix.adb
! 5f750c3d3b2e5a67cff633f2d230e2cc  gcc/ada/libgnarl/a-synbar__posix.ads
! ba325e01f4d5fee658afea5320e4be64  gcc/ada/libgnarl/a-sytaco.adb
! 6ca6a000058230fd35d843c2b13b94f9  gcc/ada/libgnarl/a-sytaco.ads
! b920b4eabc447b8bf070037900539dba  gcc/ada/libgnarl/a-tasatt.adb
! aedc9d3fcd1be52162e56fbd804d8808  gcc/ada/libgnarl/a-tasatt.ads
! cda374d848bea4661db7f945aa6bf4de  gcc/ada/libgnarl/a-taside.adb
! 835badd8ea622d45c809544b915fe127  gcc/ada/libgnarl/a-taside.ads
! 50a72c7b2571570a65b0f47af1b5b632  gcc/ada/libgnarl/a-tasini.adb
! 652b653590ebfc11db1f621244e5223e  gcc/ada/libgnarl/a-tasini.ads
! 94918b297f1ca43ae169fa572bf4d0c9  gcc/ada/libgnarl/a-taster.adb
  281fc9a014bf9c5a3677f1dd38cc9d5d  gcc/ada/libgnarl/a-taster.ads
! 52da797b89ea8a4d32c725d9a2091934  gcc/ada/libgnarl/g-boubuf.adb
! 5aa50dc4d56fa7cb86abdd4e5df51178  gcc/ada/libgnarl/g-boubuf.ads
! 431da8c439d3f6e4eda9e257f053fb7c  gcc/ada/libgnarl/g-boumai.ads
! a57a71c9a07762792f4a38c110cd12bb  gcc/ada/libgnarl/g-semaph.adb
! b2de0d35f22831b7fd4e993612c85546  gcc/ada/libgnarl/g-semaph.ads
! 2dd19922378e4eae92556ca3fec93f0d  gcc/ada/libgnarl/g-signal.adb
! 69b15c3a08a9deb69c0b3740ab54c528  gcc/ada/libgnarl/g-signal.ads
! c569b62016691637d283b08b6ba6eae7  gcc/ada/libgnarl/g-tastus.ads
! d0316a86df65a61fec4987240c2f9638  gcc/ada/libgnarl/g-thread.adb
! ded3a2e7f3a55f8048f167039936c031  gcc/ada/libgnarl/g-thread.ads
! 9778737d53be6a4426809d5f617ba7b7  gcc/ada/libgnarl/i-vxinco.adb
! f422c560a5fdc1fd9d25dfe2a493bf30  gcc/ada/libgnarl/i-vxinco.ads
  5cfb9f62dd9599caab03143b5745a967  gcc/ada/libgnarl/libgnarl.gpr
! 56d04bb1ffd511a5b8f1cc77e04335bd  gcc/ada/libgnarl/s-inmaop.ads
! da4656dfdd284ee93ad30ca5356da255  gcc/ada/libgnarl/s-inmaop__dummy.adb
! e995c209db9400af18b2deff6a793ac5  gcc/ada/libgnarl/s-inmaop__hwint.adb
! f2bc733c5c6be78e414f47098d465658  gcc/ada/libgnarl/s-inmaop__posix.adb
! 91a9e0ebbc280f2d4923e244cd8cae52  gcc/ada/libgnarl/s-interr.adb
! aa7573acaff7e7128086e8b47285b0c2  gcc/ada/libgnarl/s-interr.ads
! 99fd52629f6046b50d51d454c57ba284  gcc/ada/libgnarl/s-interr__dummy.adb
! 99d956d3d5ff871254356e567537b847  gcc/ada/libgnarl/s-interr__hwint.adb
! 6df8d2a396e67a5a2069fbd984486f4a  gcc/ada/libgnarl/s-interr__sigaction.adb
! 5f2e39e453eceb7d07083f158e90b170  gcc/ada/libgnarl/s-interr__vxworks.adb
! db63b30afb64adcc665da1353c13d6fa  gcc/ada/libgnarl/s-intman.ads
! 9c6ebff45b5829e1d1cb0e235f5ae9f6  gcc/ada/libgnarl/s-intman__android.adb
! dea424d43ea6c04dea6f6713bab342a2  gcc/ada/libgnarl/s-intman__dummy.adb
! d64281abf0a09a591e3df71519481ee0  gcc/ada/libgnarl/s-intman__lynxos.adb
! 41403a84256e0c09336297188aef63d3  gcc/ada/libgnarl/s-intman__mingw.adb
! f2234b14567c04495b8575274c8f66a9  gcc/ada/libgnarl/s-intman__posix.adb
! 9c43021ef2e8d720af0666bdc5da6642  gcc/ada/libgnarl/s-intman__qnx.adb
! 035c0aa6f92a4657671d7d40ea835f4b  gcc/ada/libgnarl/s-intman__rtems.adb
! b2b74cb0ac30ef08fe6c5c7d69fe76f1  gcc/ada/libgnarl/s-intman__rtems.ads
! 491781818b2247ccc775d60bcc40baa3  gcc/ada/libgnarl/s-intman__solaris.adb
! 36eacbc1a1e5d78bfb774d5ed7c9a0c6  gcc/ada/libgnarl/s-intman__susv3.adb
! f35b5f412ca0f78e3f3a9bbae163efe9  gcc/ada/libgnarl/s-intman__vxworks.adb
! 83a5d698f4a46da4e50a917b17350ffd  gcc/ada/libgnarl/s-intman__vxworks.ads
! 81d86ccaa527230e0079375a2b4136dd  gcc/ada/libgnarl/s-linux.ads
! 624a5ee9526d79b4d5722ff4d458d36f  gcc/ada/libgnarl/s-linux__alpha.ads
! 4678e2575358d9dafe98a20fc6369cb3  gcc/ada/libgnarl/s-linux__android.ads
! 67fd6c06b1589eb1e9b491ef5c1cfb30  gcc/ada/libgnarl/s-linux__hppa.ads
! ff3141a90b72f8202c7257e9e97bdacf  gcc/ada/libgnarl/s-linux__mips.ads
! 49495d623eee848b3ef80ac4c1019df8  gcc/ada/libgnarl/s-linux__riscv.ads
! f1f75b9e6b4c219c6fdeeadc11e5eb4a  gcc/ada/libgnarl/s-linux__sparc.ads
! 8d62c23cacac703154cbbf22aa10f5c0  gcc/ada/libgnarl/s-linux__x32.ads
! 16d28da9b8a01cf3dd40dfbdc620bd57  gcc/ada/libgnarl/s-mudido.adb
  e6304ab8465d5bc7fadbcaf1933a0980  gcc/ada/libgnarl/s-mudido.ads
! cc12d18402dc3cebfbc120e838a6f7e0  gcc/ada/libgnarl/s-mudido__affinity.adb
! 2930819916bf8ed54ddc30ee899f4871  gcc/ada/libgnarl/s-osinte__aix.adb
! f2dff66e053b50cb77de0bd0fb561065  gcc/ada/libgnarl/s-osinte__aix.ads
! f64dfbb57a4c514616196bf4aa9007a5  gcc/ada/libgnarl/s-osinte__android.adb
! 8c0a651b578a7417f6a59f2d977a4363  gcc/ada/libgnarl/s-osinte__android.ads
! dc0a8fd5a38b75a83c0d2f367a1e2347  gcc/ada/libgnarl/s-osinte__darwin.adb
! 23ac19d755ab1e35a7c55e7da5425d2d  gcc/ada/libgnarl/s-osinte__darwin.ads
! 9d08a5ea853ee16b52c5e71af40fe219  gcc/ada/libgnarl/s-osinte__dragonfly.adb
! d6bcbe31d4af7472373d4174b6aa9899  gcc/ada/libgnarl/s-osinte__dragonfly.ads
! 3c59fea8309fec0733d1a388dbb64bef  gcc/ada/libgnarl/s-osinte__dummy.ads
! 58543a0139ea7428947d4ee14d894981  gcc/ada/libgnarl/s-osinte__freebsd.adb
! ed2d1ff0c9aafb042fc7c861bb872852  gcc/ada/libgnarl/s-osinte__freebsd.ads
! a5aa5b6064c09d379bb6a9ee1159513a  gcc/ada/libgnarl/s-osinte__gnu.adb
! 5646ba9b498d7699b5223647b43aeac6  gcc/ada/libgnarl/s-osinte__gnu.ads
! b9f3a9464ef0a57a6d8ff43a1e90b1ff  gcc/ada/libgnarl/s-osinte__hpux-dce.adb
! 49ccdda83f94d1caec0b3c9a143e31ac  gcc/ada/libgnarl/s-osinte__hpux-dce.ads
! e4270b55c24c889705502729912a97cf  gcc/ada/libgnarl/s-osinte__hpux.ads
! edf29e73edaf253bf5d6c6f4ed08e3aa  gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
! 3168711bf4773ea59a70cabce39b8744  gcc/ada/libgnarl/s-osinte__linux.ads
! a7c219b2fdb50e5a32b5ca576b91fcd0  gcc/ada/libgnarl/s-osinte__lynxos178.adb
! d1f22355a08c59cb48a2e63dc9fa7e3e  gcc/ada/libgnarl/s-osinte__lynxos178e.ads
! a86b253d2c8e7d307fa6d1db4934e806  gcc/ada/libgnarl/s-osinte__mingw.ads
! c6d2e215d9fc940eee24d3b8202be40a  gcc/ada/libgnarl/s-osinte__posix.adb
! 0acb76c1fb510126813cc5392c81abb1  gcc/ada/libgnarl/s-osinte__qnx.adb
! c941896fba9ee0321a216d5e5e6533e2  gcc/ada/libgnarl/s-osinte__qnx.ads
! fb826e23f1ada6e80318482812e9cdb7  gcc/ada/libgnarl/s-osinte__rtems.adb
! c7efdea3ae529f3dbe7fac7480e1b58c  gcc/ada/libgnarl/s-osinte__rtems.ads
! 48f8113a7f4085fba0ed58a65a3747b9  gcc/ada/libgnarl/s-osinte__solaris.adb
! 219205d487b6812b86c67cb9a5369036  gcc/ada/libgnarl/s-osinte__solaris.ads
! 6a527dd69ded6ecf03cffa2e2273cc8f  gcc/ada/libgnarl/s-osinte__vxworks.adb
! 3a2b78a326a3b217a96d401edd86cbf0  gcc/ada/libgnarl/s-osinte__vxworks.ads
! 3044ac62e9fa14903dbd20f998774e62  gcc/ada/libgnarl/s-osinte__x32.adb
! d56c74cb5230f306b99df99d0173c6a7  gcc/ada/libgnarl/s-proinf.adb
! c4eb07f1f605d04da7e10cd6075efce7  gcc/ada/libgnarl/s-proinf.ads
! bff4e5147efe10f8a857403b58d58206  gcc/ada/libgnarl/s-putaim.adb
! c0bc94ba5c8ac0efdee00c2a47448588  gcc/ada/libgnarl/s-putaim.ads
! c9f3c81d8438149a92cfaa019ecda4c8  gcc/ada/libgnarl/s-qnx.ads
! 423b17101f645ea886f230ef58f69329  gcc/ada/libgnarl/s-solita.adb
! 8eabc04c6dd6ac2f4a8f7e2dc3d8ef9b  gcc/ada/libgnarl/s-solita.ads
! 134c608d81d1ffe92eec2ebf8bd46387  gcc/ada/libgnarl/s-stusta.adb
! 87681f98c41f754abf3a11b909ba1278  gcc/ada/libgnarl/s-stusta.ads
! f6ac5a0c075c1e347d70a7fa88e64ff0  gcc/ada/libgnarl/s-taasde.adb
! 8bc0ada93c861ff912e1ac1c7c35839a  gcc/ada/libgnarl/s-taasde.ads
! 12c0be7a7aa596c92464ddac76b2a85c  gcc/ada/libgnarl/s-tadeca.adb
! ea3a9f3581fade9879201e44b5a88c4c  gcc/ada/libgnarl/s-tadeca.ads
! 85dfc264210906a80ad09984c3d756f9  gcc/ada/libgnarl/s-tadert.adb
! b58d97b9cc5af0a3d40484f2a2f788a5  gcc/ada/libgnarl/s-tadert.ads
! 70aaa220e27aff3413ec7868c3405802  gcc/ada/libgnarl/s-taenca.adb
! 0d51d8c5ba1eb9fae48a5ed5dbf3ddeb  gcc/ada/libgnarl/s-taenca.ads
! 4b44bbfaf2b28f517960c74f544e51bf  gcc/ada/libgnarl/s-taprob.adb
! 275b510eed63de65855a8c2c094e1d6c  gcc/ada/libgnarl/s-taprob.ads
! 54de2e2648b91941489bc5540d0c7b2c  gcc/ada/libgnarl/s-taprop.ads
! d0470e39c593b3221f3144e31077acfa  gcc/ada/libgnarl/s-taprop__dummy.adb
! 03dfbcf4714bd43ef7fdda008e931854  gcc/ada/libgnarl/s-taprop__hpux-dce.adb
! c7aeab8526e44003049730e6bf49ccde  gcc/ada/libgnarl/s-taprop__linux.adb
! 649e7e8ebf59815c6185eebb05a7a00c  gcc/ada/libgnarl/s-taprop__mingw.adb
! e3e513deea753a8de421d9efdeae962d  gcc/ada/libgnarl/s-taprop__posix.adb
! f3f4fd31bccc8752592620d84ecce439  gcc/ada/libgnarl/s-taprop__qnx.adb
! 220cb375dc8021a33cbeffa851808c77  gcc/ada/libgnarl/s-taprop__rtems.adb
! 80442b35ee40f37dbabe3ea91d58cfda  gcc/ada/libgnarl/s-taprop__solaris.adb
! 4f5ad59eeb4b703f207a4462f1d31540  gcc/ada/libgnarl/s-taprop__vxworks.adb
! 11e05dd7d866061a45e1fbbc93b5802d  gcc/ada/libgnarl/s-tarest.adb
! c51b562f5ec0b6dbd196d3fd3ddcfd6b  gcc/ada/libgnarl/s-tarest.ads
! f48726ef977b838259a76265b124ad08  gcc/ada/libgnarl/s-tasdeb.adb
! 9b7c827fa58dcc7dfdd48bf974235301  gcc/ada/libgnarl/s-tasdeb.ads
! 043d2b3990dec8da4ba324554e359538  gcc/ada/libgnarl/s-tasinf.adb
! 3addfa564e3482bd939511d291ebf94d  gcc/ada/libgnarl/s-tasinf.ads
! 2d0e8453cfc58006b8c44f96299e5eb8  gcc/ada/libgnarl/s-tasinf__linux.adb
! 71256458718e760c7e306a5d5a160243  gcc/ada/libgnarl/s-tasinf__linux.ads
! eb31fe092d38a5612d59abfc574c12e6  gcc/ada/libgnarl/s-tasinf__mingw.adb
! 2067c941cedd27d3c6e8df08d8cbd8d7  gcc/ada/libgnarl/s-tasinf__mingw.ads
! 729bcb094c862393c6cb702ae0bcf39c  gcc/ada/libgnarl/s-tasinf__solaris.adb
! 636b2cbf0db344726e8277d8c18d91a6  gcc/ada/libgnarl/s-tasinf__solaris.ads
! e7f75d3d1466d6e5fbaa1b779e4866e3  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! 1b3bf7fa01113f6c9efdeb55f9d31138  gcc/ada/libgnarl/s-tasini.adb
! 3806746835cf8ff98234411d89377e80  gcc/ada/libgnarl/s-tasini.ads
! 03165813d6641807744919a521faad36  gcc/ada/libgnarl/s-taskin.adb
! 22a06d5024bf407badd6b300ca5ca58e  gcc/ada/libgnarl/s-taskin.ads
! 9e91219bcf83077c619e83daf50bdb22  gcc/ada/libgnarl/s-taspri__dummy.ads
! 05b646d57cadcf7182eff42332a90a76  gcc/ada/libgnarl/s-taspri__hpux-dce.ads
! 19f3a1eec171a3ffe91d1f98bb30c949  gcc/ada/libgnarl/s-taspri__lynxos.ads
! 61eed4b789e11dd6137cfbbb5842077a  gcc/ada/libgnarl/s-taspri__mingw.ads
! 3015b1ea65c682004da864d34fc6a12d  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 63ce6d4bbe9d770832d785c8a379607d  gcc/ada/libgnarl/s-taspri__posix.ads
! 469b53e1c0a17b64dc348a023746afee  gcc/ada/libgnarl/s-taspri__solaris.ads
! 128ea90bad4f4990adda3669ad25c18e  gcc/ada/libgnarl/s-taspri__vxworks.ads
! 3a201fa591cb2a268f9084c183018f4b  gcc/ada/libgnarl/s-tasque.adb
! 78056ab6426bb8098f310e9bea365e90  gcc/ada/libgnarl/s-tasque.ads
! b336a9ba43a74bdd9443cb1ba16ab212  gcc/ada/libgnarl/s-tasren.adb
! 10bf205b78fa36244143df835e14ff13  gcc/ada/libgnarl/s-tasren.ads
! 6260451d26d85b8f3a2587b2251f811b  gcc/ada/libgnarl/s-tasres.ads
! fb061e1d0771c514fb4e53cc83990043  gcc/ada/libgnarl/s-tassta.adb
! d86f0026aeaefb0f8a2a89ab2a36b571  gcc/ada/libgnarl/s-tassta.ads
! dae0dac3a418fbec1d9b7255448e2571  gcc/ada/libgnarl/s-tasuti.adb
! a7e953a41cc7649df6a9998209fa4b38  gcc/ada/libgnarl/s-tasuti.ads
! af510e119db83ef9969f2b45af3420a7  gcc/ada/libgnarl/s-tataat.adb
! 4423ce84b52aab4725f5bbe767f33d73  gcc/ada/libgnarl/s-tataat.ads
! c52930e64d6736a5be88d1006066fdf3  gcc/ada/libgnarl/s-tpinop.adb
! 30e79bba7723bc576eeb7e613c74df37  gcc/ada/libgnarl/s-tpinop.ads
! e302b004b7802b331ac82cc2877ce71a  gcc/ada/libgnarl/s-tpoaal.adb
! c06b997212879ef96d39a88e2b848529  gcc/ada/libgnarl/s-tpoben.adb
! 593d402c991656e6d2c2c4af863fe36f  gcc/ada/libgnarl/s-tpoben.ads
! 5818045f4a13c1f7fab71aeafea57bff  gcc/ada/libgnarl/s-tpobmu.adb
! 56f873ea76620289f40d61798af7b7ec  gcc/ada/libgnarl/s-tpobmu.ads
! 34aa32a831aaef758006f8b890035d55  gcc/ada/libgnarl/s-tpobop.adb
! 034ad2fabce49a88c7d9c76df1e6ac12  gcc/ada/libgnarl/s-tpobop.ads
! f0dca411de61fbef206fb11e431ae1f3  gcc/ada/libgnarl/s-tpopmo.adb
! f3a184f007aab22edf66baffc001b17d  gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
! b1ea3748914078d10ffc378cee1502d4  gcc/ada/libgnarl/s-tpopsp__posix.adb
! c0c3de1c930c184c62a3eb82811531d4  gcc/ada/libgnarl/s-tpopsp__solaris.adb
! 6b0b57b215cc6f46ab44fdbf563000e6  gcc/ada/libgnarl/s-tpopsp__tls.adb
! 260064ad2ef59804cbec7082ad7ddd03  gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
! 489fc3e21e5ef1fb2d148799e165977e  gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
! fa12151ccc2a857e0eca75cd7cbaa35a  gcc/ada/libgnarl/s-tpopsp__vxworks.adb
! 63aded0418bdec40ad483a0291f7a555  gcc/ada/libgnarl/s-tporft.adb
! b5bfb729e16af2e2eab58e033968664c  gcc/ada/libgnarl/s-tposen.adb
! 5c160aaba1e0a653ca4608f88647a540  gcc/ada/libgnarl/s-tposen.ads
! 0d99cd8d8c95a16e21ad2c46100d3ab5  gcc/ada/libgnarl/s-vxwext.adb
! 432f68307a56babd70275b23dd20d6a6  gcc/ada/libgnarl/s-vxwext.ads
! ea881621779cbc0da24dfd9029d25efe  gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
! a546979a7a4ad19f3fc03b6a33c6f495  gcc/ada/libgnarl/s-vxwext__kernel.adb
! 42b5a567219a8c2c5468e83aeb8212f2  gcc/ada/libgnarl/s-vxwext__kernel.ads
! 652a1ad1c17a077bcf8bf82e111a6318  gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
! e394109cc34a5790a4e617e9a24972d7  gcc/ada/libgnarl/s-vxwext__rtp.adb
! 2d0678e5e063f1cf9156937b881c1ebe  gcc/ada/libgnarl/s-vxwext__rtp.ads
! c0cff1664a65cc7d9f7260d001d4a5c3  gcc/ada/libgnarl/s-vxwork__aarch64.ads
! a4742952f515360f76143b9375401f07  gcc/ada/libgnarl/s-vxwork__arm.ads
! cc5c56c9873f0656a092384fa42adb7b  gcc/ada/libgnarl/s-vxwork__ppc.ads
! 45636bc1fea8cde801064dbe70c511af  gcc/ada/libgnarl/s-vxwork__x86.ads
! 937d831fea225e716f6d529c3ac9e727  gcc/ada/libgnarl/thread.c
! 582b7236285487c4d89e7c469b6dc571  gcc/ada/libgnat/a-assert.adb
! 236b6937f2a5909c39e030cbd2e51f34  gcc/ada/libgnat/a-assert.ads
! 03a79609a6279489ed1a50526f559185  gcc/ada/libgnat/a-btgbso.adb
! b82e85e4dc5756b89171371c58b9e203  gcc/ada/libgnat/a-btgbso.ads
! 34894a66844b2862af0a9cbf3adb476a  gcc/ada/libgnat/a-calari.adb
! b1b33fb3296e8c51799b89afc5e72a01  gcc/ada/libgnat/a-calari.ads
! de846e7a614a0f9ca7cd4955ae336017  gcc/ada/libgnat/a-calcon.adb
! 75bdb5b8c80473f8813cb05c13157c72  gcc/ada/libgnat/a-calcon.ads
! 22f677f25e5e27daa2038d9627cd9f44  gcc/ada/libgnat/a-caldel.adb
! 7f98833a57731e93b3aa6a5863945584  gcc/ada/libgnat/a-caldel.ads
! 91152f7f64f85a0a773e06defc576dc4  gcc/ada/libgnat/a-calend.adb
! 88562c78b8e5678863ff36a5a1607f71  gcc/ada/libgnat/a-calend.ads
! de6e66567a5291bb5db0aaa94e744ccf  gcc/ada/libgnat/a-calfor.adb
! f50378872d2d5b198bfb9d5d9f3409b7  gcc/ada/libgnat/a-calfor.ads
! 9ba9bb39dcf7b5952dc2b02756b98960  gcc/ada/libgnat/a-catizo.adb
  d731f2a00c2328507e1708628b8f8534  gcc/ada/libgnat/a-catizo.ads
! 382ac7c6f922a443bad73888cd1344f5  gcc/ada/libgnat/a-cbdlli.adb
! fa02f229c5f7e518dc98e829d81a6ef8  gcc/ada/libgnat/a-cbdlli.ads
! c664f833a9a20ca361e820d872c06d70  gcc/ada/libgnat/a-cbhama.adb
! 5ed223611ec8bc1662e7a5d9d347a032  gcc/ada/libgnat/a-cbhama.ads
! dcadc7a1558ffaa09e61fbdcf719364d  gcc/ada/libgnat/a-cbhase.adb
! 53c8dffcd54c46def43cf48d75fb3f64  gcc/ada/libgnat/a-cbhase.ads
! e875f5ae6f913565a94486d600853841  gcc/ada/libgnat/a-cbmutr.adb
! 012e0976b7e9b58c9e178589e8940541  gcc/ada/libgnat/a-cbmutr.ads
! a42f7e625a86fa9c7dff5fa490b9c9b2  gcc/ada/libgnat/a-cborma.adb
! 97560683f6bd72bccb4a40a87dc00163  gcc/ada/libgnat/a-cborma.ads
! a30c80f65ee0fa284357e41f2068c737  gcc/ada/libgnat/a-cborse.adb
! 4c891b6ac68096c35e6222101c04e240  gcc/ada/libgnat/a-cborse.ads
! bd7f09fd2a8b87924aaa9ac1881c791d  gcc/ada/libgnat/a-cbprqu.adb
! 0b09c22a95134b4de8a6da2cc3b5fdf2  gcc/ada/libgnat/a-cbprqu.ads
! 7e38fd065d8e833f8d4e3db3e69d7a43  gcc/ada/libgnat/a-cbsyqu.adb
! d6999f7009fca8381619db1a60008312  gcc/ada/libgnat/a-cbsyqu.ads
! 2473b923c9ea955608bc8aced1171fa4  gcc/ada/libgnat/a-cdlili.adb
! 73b15b405cb2082228090a5aa6f618fe  gcc/ada/libgnat/a-cdlili.ads
! a0e4e874bbf05bf59e78fde76c08aef3  gcc/ada/libgnat/a-cfdlli.adb
! 1563a4b9368f97dc5b97577682f88e75  gcc/ada/libgnat/a-cfdlli.ads
! a830cdf684ba7e225c96c9d1451862a0  gcc/ada/libgnat/a-cfhama.adb
! cd767ce671b3462d889d1b4950916992  gcc/ada/libgnat/a-cfhama.ads
! bca7f6db9518eaf569150a8173786e21  gcc/ada/libgnat/a-cfhase.adb
! c058cd48b243469e59368ef89ecc6814  gcc/ada/libgnat/a-cfhase.ads
! 5b841fe03cdf1f831cdc7e767bb79663  gcc/ada/libgnat/a-cfinve.adb
! 2b57ce0cddd07f6633b7eec84e4c3b23  gcc/ada/libgnat/a-cfinve.ads
! 8ea71d09c239a8b0e651cd12f7bd1fd7  gcc/ada/libgnat/a-cforma.adb
! f9ac140fc5fdb06e701ddd2e7da488ee  gcc/ada/libgnat/a-cforma.ads
! a7b6e67ad72c5aece24ff77950b3d568  gcc/ada/libgnat/a-cforse.adb
! 09604cfbc3e19d8e5ccf3b44b1c9e7b5  gcc/ada/libgnat/a-cforse.ads
! 3d1cffc2474b9f8909f43f224c27daac  gcc/ada/libgnat/a-cgaaso.adb
! 465965485b00f97beafb520c5eba3809  gcc/ada/libgnat/a-cgaaso.ads
! 6c40c9084a65a37775fe210be07102a1  gcc/ada/libgnat/a-cgarso.adb
  ef7fab6c5e61256ac64c9dae1dd27960  gcc/ada/libgnat/a-cgarso.ads
! 644e62088b096adbcf64c3397b0490a0  gcc/ada/libgnat/a-cgcaso.adb
  68226484befc5e389cd3dafaab608090  gcc/ada/libgnat/a-cgcaso.ads
! dbbd507fad4e2ca383c046452628a917  gcc/ada/libgnat/a-chacon.adb
! f03486ec552fb8c5cb102545620ad8a0  gcc/ada/libgnat/a-chacon.ads
! fcc131a98cd8ee498eec5adf26ede4bb  gcc/ada/libgnat/a-chahan.adb
! 130d3029181113bb95ae3fe4b9b25ac0  gcc/ada/libgnat/a-chahan.ads
  00b37c98f6f96d2b5499c1f98cb503f0  gcc/ada/libgnat/a-charac.ads
  1e2a45aa2f9324faab423eb0f9a85a8e  gcc/ada/libgnat/a-chlat1.ads
! 67d93fab209fc0fe3506947bf472cf6f  gcc/ada/libgnat/a-chlat9.ads
! 175bc551a4b2fba1d00dd340a2814d72  gcc/ada/libgnat/a-chtgbk.adb
! e049bc9f2b7793315f07b6e38aeb2086  gcc/ada/libgnat/a-chtgbk.ads
! a2013f4c43e7d05f22e1781f2d2faa84  gcc/ada/libgnat/a-chtgbo.adb
! 1ddbe2d95cb9f32fe04071725147c6d7  gcc/ada/libgnat/a-chtgbo.ads
! 5b04ff5acd8c64bcd28e37196fb0ab99  gcc/ada/libgnat/a-chtgke.adb
! fd7ab87a475f6e63304ff7bf13b84a4d  gcc/ada/libgnat/a-chtgke.ads
! 022589ae0a787e5767c9dc5ad97aee3f  gcc/ada/libgnat/a-chtgop.adb
! 95b654ce39cf2203d35ed0d05853af8f  gcc/ada/libgnat/a-chtgop.ads
! 8b27154c2019e24f9747280874cd3327  gcc/ada/libgnat/a-chzla1.ads
! eca5170c6b65e83c534882f6447e49bf  gcc/ada/libgnat/a-chzla9.ads
! fdc2ebc9e918e731d8a6592927c9c542  gcc/ada/libgnat/a-cidlli.adb
! 691360ce9169d4393c7a9184fa0a83ab  gcc/ada/libgnat/a-cidlli.ads
! 2146038acf1a60ac154b02ef2d17ae87  gcc/ada/libgnat/a-cihama.adb
! b32f575be81c7a1b57e07db05eac06cf  gcc/ada/libgnat/a-cihama.ads
! 16ebd1af51d07ca930c52d0398bc67e9  gcc/ada/libgnat/a-cihase.adb
! 83549427e7b10f1f3603e6ad66a5ca46  gcc/ada/libgnat/a-cihase.ads
! 848bfb05726ab11e6ac16e1e24f335e7  gcc/ada/libgnat/a-cimutr.adb
! a365f797e5a2d5dbe4477e2d5cc04157  gcc/ada/libgnat/a-cimutr.ads
! 775259b331e527fe6b65f8e5dcf07379  gcc/ada/libgnat/a-ciorma.adb
! 55ce5791e4c625d0f1ce3fe6fd4f5b18  gcc/ada/libgnat/a-ciorma.ads
! 68bfa9c8318b821e9b52ed625876fd48  gcc/ada/libgnat/a-ciormu.adb
! 0bfc943c8d4c4113c2935b002aa68683  gcc/ada/libgnat/a-ciormu.ads
! aa9502ebc17e7b649d4e730780167bf3  gcc/ada/libgnat/a-ciorse.adb
! 268968fc183100c86203ecdec455792d  gcc/ada/libgnat/a-ciorse.ads
! 1938bc89252c4c191bcec565b187f1f1  gcc/ada/libgnat/a-clrefi.adb
! cdbb23798f43e96aa5088e1b5d1d1788  gcc/ada/libgnat/a-clrefi.ads
! 6b9ee89ef973f5f147b5b128f50ca0f6  gcc/ada/libgnat/a-coboho.adb
! 8605177c36ba8b81026e41c56a856da1  gcc/ada/libgnat/a-coboho.ads
! a9f14e60ac5b5f17490b092278812def  gcc/ada/libgnat/a-cobove.adb
! f175d425aaf48570a128e1d18ea9214e  gcc/ada/libgnat/a-cobove.ads
! 2a44c722c026ae90712295ae989181bc  gcc/ada/libgnat/a-cofove.adb
! eb890b83bb02e05de3160a967d8347e9  gcc/ada/libgnat/a-cofove.ads
! 915c7ad5ff167a36a491b0412989297a  gcc/ada/libgnat/a-cofuba.adb
! 481878d52cf5ee4aba7668cdc974c4ef  gcc/ada/libgnat/a-cofuba.ads
! d7a2eac1c9dd25c1612ca7abc1a64f33  gcc/ada/libgnat/a-cofuma.adb
! 775d616e73e7cad259bfdf06f6f71e6f  gcc/ada/libgnat/a-cofuma.ads
! cd64570e27728b7a2c4cb5f34a34300a  gcc/ada/libgnat/a-cofuse.adb
! e535f4bcb789f54b4a40fb7cf6307fe4  gcc/ada/libgnat/a-cofuse.ads
! d841796ced396939620ee85b6b350471  gcc/ada/libgnat/a-cofuve.adb
! cafaba415707233d9404e71ca0442c7d  gcc/ada/libgnat/a-cofuve.ads
! 369048db7f658eacd76b5fd218facfa5  gcc/ada/libgnat/a-cogeso.adb
! eeea1c826995ab131aa497d15b4dda6e  gcc/ada/libgnat/a-cogeso.ads
! d55d35727cdcc8d9881498a60e568cd1  gcc/ada/libgnat/a-cohama.adb
! d2410af268b9e5f3c5368774de07cf1a  gcc/ada/libgnat/a-cohama.ads
! 33f69a7d47a4dd21ff3227a69fa17bcb  gcc/ada/libgnat/a-cohase.adb
! 01977a2ecaeae3ba33fa5e177f9b501a  gcc/ada/libgnat/a-cohase.ads
! e656087ae9d1688fd1827a5d0710e8f8  gcc/ada/libgnat/a-cohata.ads
! f7cc86c4a40767c3f59126523a6c7b81  gcc/ada/libgnat/a-coinho.adb
! c69c6b5fbb5109eb29211632d6699147  gcc/ada/libgnat/a-coinho.ads
! 5ea911d48cc7f23ccb6bc11a37d92bed  gcc/ada/libgnat/a-coinho__shared.adb
! 46bf2be794b5165e208d3521de9f554d  gcc/ada/libgnat/a-coinho__shared.ads
! 5129af522d1dfe92b50ea3a397f527c3  gcc/ada/libgnat/a-coinve.adb
! fcac6a9911c53e4d213163d820fd4766  gcc/ada/libgnat/a-coinve.ads
! 9952cf4c7c5da8a7a465049de3197651  gcc/ada/libgnat/a-colien.adb
! 4c394e560dbeb1db82c16fd8d62b4d5c  gcc/ada/libgnat/a-colien.ads
! 0a68844d9d1b7cc976386515cb1f6064  gcc/ada/libgnat/a-colire.adb
! 35f53ded1c8d2259c76e7d58d3a47915  gcc/ada/libgnat/a-colire.ads
! 3694220305e42604dd27d7036c6b0263  gcc/ada/libgnat/a-comlin.adb
! 50b3e0a61f66a2a1bc4261e55dc01067  gcc/ada/libgnat/a-comlin.ads
! 9233073b21e45cb0acb2e9f2cf947055  gcc/ada/libgnat/a-comutr.adb
! c454a2a4c95c657fb05335ce47eeb2a3  gcc/ada/libgnat/a-comutr.ads
! b290becc4cd7cf002538becbd5de39cd  gcc/ada/libgnat/a-conhel.adb
! 762a5237ee092796b3a5ab33ec54451f  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
! b7ae250e7818c4cfd2519c9ab4d852b0  gcc/ada/libgnat/a-convec.adb
! 8d366ab4430dc4727d93a5cfb054cd7e  gcc/ada/libgnat/a-convec.ads
! dae3688109574f53d9e055acb000ba41  gcc/ada/libgnat/a-coorma.adb
! d7662464c94d9fb9fd2db58f911a0fce  gcc/ada/libgnat/a-coorma.ads
! 45e1368288f9a9ff775ff32fba68690e  gcc/ada/libgnat/a-coormu.adb
! 739c794f4020959d926a6d20cafb6f9b  gcc/ada/libgnat/a-coormu.ads
! c65affa20179957cf5576e78f93b264b  gcc/ada/libgnat/a-coorse.adb
! d22a7503c9be279a05e4baea0d0319e4  gcc/ada/libgnat/a-coorse.ads
! 4eb7fd0c53079b8c1d9eac9fcd6a659f  gcc/ada/libgnat/a-coprnu.adb
! c3de76d8362a8ac6c252e05d18fc5f2b  gcc/ada/libgnat/a-coprnu.ads
! 42e76ab0e3e2d87d4db9f465c6a67824  gcc/ada/libgnat/a-costso.adb
! 861198c84867b399f9174598b1ac3cd7  gcc/ada/libgnat/a-costso.ads
  2399731eabd6e0bbc0a8f28a60d3c3c8  gcc/ada/libgnat/a-coteio.ads
! 9995372e8ed652d8a09c2032eafa4598  gcc/ada/libgnat/a-crbltr.ads
! 20f3ecfea64d55f0d4667a03d7414469  gcc/ada/libgnat/a-crbtgk.adb
! b49e62de116fc64637bcf868ef225e71  gcc/ada/libgnat/a-crbtgk.ads
! fcd7ee0590d1ff1055e06c0b61ad8785  gcc/ada/libgnat/a-crbtgo.adb
! adee1b7f511f38f0162f01638da1a42e  gcc/ada/libgnat/a-crbtgo.ads
! cb7afadff663ea819331818166714b74  gcc/ada/libgnat/a-crdlli.adb
! 20409ef9d365f603efcc42b9ee9ef38e  gcc/ada/libgnat/a-crdlli.ads
! 90a287dac8982607ebfabbdb3824cc9c  gcc/ada/libgnat/a-csquin.ads
! 47bbee2be256be64dee6652f033a2b06  gcc/ada/libgnat/a-cuprqu.adb
! bcba9d992d76b390152427ad737f6a8a  gcc/ada/libgnat/a-cuprqu.ads
! 80212d4c55a2bd107335c66e914aab06  gcc/ada/libgnat/a-cusyqu.adb
! c39ab4c333a10f6cc925fa919c468254  gcc/ada/libgnat/a-cusyqu.ads
! 76273491b7488feced0194edd7d62ffb  gcc/ada/libgnat/a-cwila1.ads
! 0e04684a74ecc11ff0cb3a56636290c5  gcc/ada/libgnat/a-cwila9.ads
! fa84f9ec15d00bc577b4e345ca16f248  gcc/ada/libgnat/a-decima.adb
! 679dc0ecd62c41c078d8bfae9845354e  gcc/ada/libgnat/a-decima.ads
! 31d1a4289a46de1e84ec8e2ea13d6055  gcc/ada/libgnat/a-decima__128.ads
! 6f84c7e8c084c223ee9906222357625d  gcc/ada/libgnat/a-dhfina.adb
! 4789f4388f7fa478e385c205046dfbcb  gcc/ada/libgnat/a-dhfina.ads
! 17f6caefef521b6123453b49af7869bf  gcc/ada/libgnat/a-diocst.adb
! 8cd70585dd107f13b580170319124c9d  gcc/ada/libgnat/a-diocst.ads
! 6f072aa491ca6fca699f51f27340aa1b  gcc/ada/libgnat/a-direct.adb
! 4ae2a342ff95b3cea5b02c497f94ec01  gcc/ada/libgnat/a-direct.ads
! e77d1f67d0aa6fb8781d2765075a6582  gcc/ada/libgnat/a-direio.adb
! 66d4a0acd1db496944356b02876ca8d0  gcc/ada/libgnat/a-direio.ads
! 126a88b751f395752515ea978efc50c3  gcc/ada/libgnat/a-dirval.adb
! cbe4b5bd9606465d0396f16c000d2b39  gcc/ada/libgnat/a-dirval.ads
! b7a3e9e464aab549a94a48496905e96d  gcc/ada/libgnat/a-dirval__mingw.adb
! bc1b5065bc4315e91a7c4dd3f73c4cb0  gcc/ada/libgnat/a-einuoc.adb
! 86198687c22068b08413fcf8af08ce44  gcc/ada/libgnat/a-einuoc.ads
! 12db9e2d9d9d0c8836e34e6330deb21b  gcc/ada/libgnat/a-elchha.adb
! 1c16eba0bdf7ef2662ced22af79024ed  gcc/ada/libgnat/a-elchha.ads
! f03c54b8ef26057d5c4b1b3ca07034dd  gcc/ada/libgnat/a-envvar.adb
  e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
! 2a9ea3bce3a71b08842e510545c546bb  gcc/ada/libgnat/a-excach.adb
! b171a4ee6dd6787f69fcf4124250ed9f  gcc/ada/libgnat/a-except.adb
! 81b3e317172b572175224a65fa50a4a2  gcc/ada/libgnat/a-except.ads
! 094992614936ca98ea1687d0c76ffe29  gcc/ada/libgnat/a-exctra.adb
! a17e860742565a86ea03e8bdaac2e5e0  gcc/ada/libgnat/a-exctra.ads
! de66c7d18e56880fedc5ebb0131abe63  gcc/ada/libgnat/a-exexda.adb
! 8039c9a647cd3c43d50b708fde8536cb  gcc/ada/libgnat/a-exexpr.adb
! faedb14db444e59f34da123c06071472  gcc/ada/libgnat/a-exextr.adb
! 08b3639069fc5c896fae5c21402df1e9  gcc/ada/libgnat/a-exstat.adb
! 97ec396d774a614c1264f16a937de60f  gcc/ada/libgnat/a-finali.adb
! 6f5b7ec94926e5eada5685999652d61b  gcc/ada/libgnat/a-finali.ads
  b6ba93109a253e15591b1eefa685bc24  gcc/ada/libgnat/a-flteio.ads
  f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/libgnat/a-fwteio.ads
  2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/libgnat/a-fzteio.ads
--- 555,1295 ----
  e886b111487071a30a52edb616ff7844  gcc/ada/ChangeLog-2019
  25a37c68917fa9927277f5c8fda08d05  gcc/ada/ChangeLog-2020
  eb047ffc35b1d44455bed0519888503c  gcc/ada/ChangeLog-2021
+ c81efe8ccbd5f5b8399a3496f5015859  gcc/ada/ChangeLog-2022
  5598cfcecd6612ea21efddabbbe1ecc0  gcc/ada/ChangeLog.ptr
  2cf41efa2dee24b2dda73018b855edd3  gcc/ada/ChangeLog.tree-ssa
  79432d3beb46b4a8f4c4c114203a6527  gcc/ada/Make-generated.in
  6c9c3b4249e781ed48c7ae55e8ef9999  gcc/ada/Makefile.in
! 0777b736aa8842cdda79a70c7870dd03  gcc/ada/Makefile.rtl
! 328b32369db4e87b95cc21b16114a723  gcc/ada/accessibility.adb
! 8398361054d01170d7c487f246c526e5  gcc/ada/accessibility.ads
! 13cf7e52e4314ac021f4e7d70a814880  gcc/ada/ada_get_targ.adb
! 0f56be340d9797e3780165a3de27f26d  gcc/ada/adabkend.adb
! 6b271163709fbc06df6ef8a7fd1c13da  gcc/ada/adabkend.ads
! a9e8e57440f10ce2ff3fbe5984b1c56c  gcc/ada/adadecode.c
! 5933c19a89a051b38aa7a6e4716f502c  gcc/ada/adadecode.h
! 2161564f2a0a337e0b9d988c62316e82  gcc/ada/adaint.c
! 6276ae5d40f1552dee393838e562b00b  gcc/ada/adaint.h
! 6fb46a612b1053603893b4c055a97bde  gcc/ada/affinity.c
! 4482e2fcea81b8826350b4f00907a278  gcc/ada/ali-util.adb
! 63eaeacf118594e946b0c5c30a8d467e  gcc/ada/ali-util.ads
! 6cf79a53bae9f9f4ca7a62441b8ce33c  gcc/ada/ali.adb
! ef99e4663685fcafea6392a40e25d51c  gcc/ada/ali.ads
! 7af275ac24b4c8e43ad788b8451b7025  gcc/ada/alloc.ads
! f57e4aa5b04feb981e9cc0bcd097d441  gcc/ada/argv-lynxos178-raven-cert.c
! 41901835ca046ca3d648f97c24c884d4  gcc/ada/argv.c
! 3dd02d9a98209eab13e64e363ce4e406  gcc/ada/aspects.adb
! 4f926b5afe9e831b9b3c57a295937ced  gcc/ada/aspects.ads
! 354e8341856c51fe0f57b1b7f131274f  gcc/ada/atree.adb
! c99902292cb36e029b69efc029bfb89a  gcc/ada/atree.ads
! 77902e25964ec1e07d41a28962af01e3  gcc/ada/atree.h
! 82506b9b83335c38e1e96d461ff93adf  gcc/ada/aux-io.c
! 36c44473a11c218cbdf16a1d01146ea4  gcc/ada/back_end.adb
! df4481820cb62f2e320bf617cef54764  gcc/ada/back_end.ads
! 420d6c211c53578b1284be6d1845ef20  gcc/ada/backend_utils.adb
! 4e41ae1265d23f27ebd42a69a0eead99  gcc/ada/backend_utils.ads
! f6b824e8dd6890b47c3dbe4bd6a7dcfe  gcc/ada/bcheck.adb
! 9954eb6fca7f610a528856671169db34  gcc/ada/bcheck.ads
! cc49610b36b01bb8f5a735ff8c129ecf  gcc/ada/binde.adb
! bca078d4c847cc567be65aaccdea015f  gcc/ada/binde.ads
! a9bcb5571c84a4374ba1cc675190f7eb  gcc/ada/binderr.adb
! a2bf5c66c573cbaa59e9d81595b2c2f0  gcc/ada/binderr.ads
! e157aa2666cc38b0ae9a86b3655ef1f6  gcc/ada/bindgen.adb
! 879c30a46bc8fd3fa2557428325e4d38  gcc/ada/bindgen.ads
! a0272e1d38250bdaa7f03cb3f295536c  gcc/ada/bindo-augmentors.adb
! f9386ad6f47ac050f42132d4acba45c5  gcc/ada/bindo-augmentors.ads
! 659782b24df1f8001207552a5736fb35  gcc/ada/bindo-builders.adb
! 124c19eb4ab72b09c7ad1dcad70ac62d  gcc/ada/bindo-builders.ads
! 3f8459f16eb3fd001738af18218d96f9  gcc/ada/bindo-diagnostics.adb
! 67938b0e515af00092e6c8d7ca1cf1be  gcc/ada/bindo-diagnostics.ads
! d167af93d96929a4f34c835f3daa2659  gcc/ada/bindo-elaborators.adb
! 0876e5fecfa5186f46cf378d24df9d11  gcc/ada/bindo-elaborators.ads
! 995364c7f24a62812cda431aa943ca4d  gcc/ada/bindo-graphs.adb
! 2bafa6311c7669eee757e4b21ed5342f  gcc/ada/bindo-graphs.ads
! bfdee7b3abb3076d76a0e14e20dcff47  gcc/ada/bindo-units.adb
! 481137fd27d93554363611c68e45ee0c  gcc/ada/bindo-units.ads
! e2811eee2c6be08f96b678047991e538  gcc/ada/bindo-validators.adb
! 6298c51d9bf987bb66160ca353d48681  gcc/ada/bindo-validators.ads
! 0a371eee4b967ba51d7fa5e5b58da6ce  gcc/ada/bindo-writers.adb
! 6602189de6518b02a4649ebb5d9b7efa  gcc/ada/bindo-writers.ads
! 460a5e988022913c42dea6942f3305a6  gcc/ada/bindo.adb
! 56df74e9e12e3b9ab4cc34c5cac5c96e  gcc/ada/bindo.ads
! a4fa42f2e410f7b3213f7cd44dabe699  gcc/ada/bindusg.adb
! 50bc2f8e631ae589c3052f8ec5ad4e8b  gcc/ada/bindusg.ads
! 527a71a3f68e0deaf7d02f7522f9a269  gcc/ada/butil.adb
! a46d69407e1aeacce9b0e18f8c1d3526  gcc/ada/butil.ads
! 98e4b1c85455e4b4bd4123863802d057  gcc/ada/cal.c
! 4579d69a42e45e17fc08f2159fed02c7  gcc/ada/casing.adb
! a5d2684c3fa28eb916f7b7a78892adb3  gcc/ada/casing.ads
! a9eb8d5450714df8e48ff1f8e83bc7f0  gcc/ada/checks.adb
! 6eb178f5eb724a32f7541210a274ed19  gcc/ada/checks.ads
! ddd0ea57bd86f9494ea40dde8726a984  gcc/ada/cio.c
! d1b507d1ceaa7c53d3b70b63676a2990  gcc/ada/clean.adb
! f02792164fd40ec5e9723df166ac5b64  gcc/ada/clean.ads
! 5f216c96df15ab091d34fff669ec7298  gcc/ada/comperr.adb
! 9862c4ed9277242e3ff527ec30252dec  gcc/ada/comperr.ads
  fbd23958a6d5c4207e39317e708436ac  gcc/ada/config-lang.in
! 30a2c7fb42c3f5f9e94c6da9b4559157  gcc/ada/contracts.adb
! 997d6387c88313d9c7cafbeebd86f081  gcc/ada/contracts.ads
! 48a3fc8b80994bbd1ada81db3d683a41  gcc/ada/csets.adb
! d4dd9b7af14e80bbeaca0dba2e12d567  gcc/ada/csets.ads
! 4669751b2bbd783e8ba76b5c7523c3ab  gcc/ada/cstand.adb
! 216ac88f4985bc5389ae164e12161787  gcc/ada/cstand.ads
! 3e16924ef40271c114e75affd0bbc1b4  gcc/ada/cstreams.c
! fe5d25ca4fc20b39558983efa8321373  gcc/ada/ctrl_c.c
! 14d44a31974c6f5f8a83ba93b9005d49  gcc/ada/debug.adb
! e2f7a872a5566c30ce7f3381c4fc1642  gcc/ada/debug.ads
! daa56ebd1b22a42db6d08e1a258a8ad6  gcc/ada/debug_a.adb
! 704fa6c91d2c15f9d10d1ace755c86f6  gcc/ada/debug_a.ads
  e985c86f5eb27a1af5221f7338ac92cb  gcc/ada/doc/Makefile
  a012e0cb5df366014b5a4988036a509a  gcc/ada/doc/gnat-style.rst
  146dcc045a420b5f36161c6e32a7dea8  gcc/ada/doc/gnat_rm.rst
  c4f5f27a027adfe3db5b39193542c956  gcc/ada/doc/gnat_rm/about_this_guide.rst
  e183e323bf87ac50a5767106862fef97  gcc/ada/doc/gnat_rm/compatibility_and_porting_guide.rst
! 2afac013799ef401d4c876589443dcf3  gcc/ada/doc/gnat_rm/implementation_advice.rst
! b3d438a9215c1e83c029eae0f4824da5  gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
! a511a1ae18ac5459a3f2ef89b42375a5  gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
! 53743d72cb019e6fda0bcf1c22a03e5d  gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
! 3fccce1208a18e70cb6bc2b0b074bc34  gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
  4c8f34f9d69c20b677b885ec36ef9844  gcc/ada/doc/gnat_rm/implementation_of_ada_2012_features.rst
! 1ce2dc848df98bcbbb9d443501c48132  gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
  8ac597e4a14e2e70cf692a87fa810b0a  gcc/ada/doc/gnat_rm/interfacing_to_other_languages.rst
  d3ffb5a905c9520d87b68e10029eb023  gcc/ada/doc/gnat_rm/intrinsic_subprograms.rst
  bb3c8ae8aaf1cbd06bc44135da97d801  gcc/ada/doc/gnat_rm/obsolescent_features.rst
! 7f40736efcf972e491a726f58badbb04  gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
! b126885ce137447c32b8fa21db10fe36  gcc/ada/doc/gnat_rm/security_hardening_features.rst
  03676be4f649629e37041b8c849c7825  gcc/ada/doc/gnat_rm/specialized_needs_annexes.rst
! 5e387bd2af6e25b5b69852152b862595  gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
! 328f91fe087e552ce7ef53d8c1d73e3d  gcc/ada/doc/gnat_rm/standard_library_routines.rst
! c19830e73e611a82a0d522e460290c80  gcc/ada/doc/gnat_rm/the_gnat_library.rst
! f0e9410f2a1440890ddedcf89e10d3f9  gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
  ad0b18bc67f8911f5f0d9d2762f19f82  gcc/ada/doc/gnat_ugn.rst
  522a8b1f4fc69117e20c4690b1cde1a3  gcc/ada/doc/gnat_ugn/about_this_guide.rst
! 7d25201b82e92c48287c58c0720f6b41  gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
! 26a89b9a7c38c57de536819af879195e  gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
  c8c5cebc5a8966a6a0b278b30b2f5738  gcc/ada/doc/gnat_ugn/example_of_binder_output.rst
  329d0c3464eb53db9196226f014d72c9  gcc/ada/doc/gnat_ugn/getting_started_with_gnat.rst
! 960f93cb649abdecb8fc4e4127fa2755  gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
! 8cbfc8d1d9c87e6e2cdeabc18ebb4cec  gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
! bb8384ade6350af533fa2875e0c29c13  gcc/ada/doc/gnat_ugn/inline_assembler.rst
! 80fd9eb6274ce823d1644fe028bd5de1  gcc/ada/doc/gnat_ugn/platform_specific_information.rst
  062c912e168e9f97d4b4ae9c766300b8  gcc/ada/doc/gnat_ugn/rtlibrary-structure.png
! e855a2fffd533c8851a8cf3ce3d4d2ff  gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
  caf064904358a8a1d6029b136176ff9d  gcc/ada/doc/share/ada_pygments.py
! f1ee2bea80c510232c141f626f856a0d  gcc/ada/doc/share/conf.py
  c7da61a05156d50b4888cdfaae4241d0  gcc/ada/doc/share/copyright.tex
  1b7b0904041eb97a9ac023e776774561  gcc/ada/doc/share/gnat.sty
  0a025bfec2a94c0fcd11a19d18f6c0c5  gcc/ada/doc/share/gnu_free_documentation_license.rst
  f1c71b64e1c84e240c7b5aea7331a32a  gcc/ada/doc/share/latex_elements.py
  90adfcde2feb6d6c090c2b18a1578145  gcc/ada/doc/share/sphinx.sty
! 6882805f8ff6eea088da720bfe5532cd  gcc/ada/einfo-utils.adb
! 27a01636d0a0236e57bc5a8d0f61d22d  gcc/ada/einfo-utils.ads
! e43b0cc77364659177befd1077efa47e  gcc/ada/einfo.adb
! d146e0f8a77110d4616a7f4c263e588a  gcc/ada/einfo.ads
! 60245449c2195b151310b2ff839a5b78  gcc/ada/elists.adb
! f8b698192cf13df98b157df82bbbd82a  gcc/ada/elists.ads
! a2ecaafad1cbda0fb81e66fedd98690a  gcc/ada/elists.h
! ff9fe3a93f6f1dda167af20200acf466  gcc/ada/env.c
! e61587d5186b53b81a9ed49dc6190797  gcc/ada/env.h
! 2b34df78cacc46a68811d509a04043ea  gcc/ada/err_vars.ads
! 588b2bd68d9a72e0afce20a0748172df  gcc/ada/errno.c
! 18a4aef904677da1648cbe659b6e59d9  gcc/ada/errout.adb
! 53cd440b1937fd4071b4997f338d0667  gcc/ada/errout.ads
! 08430b06ad1d216a41f9a7feead5323b  gcc/ada/erroutc.adb
! 853279ac396f8204c3d8fa7ee546ac2b  gcc/ada/erroutc.ads
! 92856e74bed1db6183c55d912c47ba69  gcc/ada/errutil.adb
! 2a1599968d338fe3f974a4b0104c09fc  gcc/ada/errutil.ads
! d37cc0a25d34e042d5dea64c9e740a45  gcc/ada/eval_fat.adb
! f1d86c3f88f5650d8de59f52e9e8083c  gcc/ada/eval_fat.ads
! 3da935b78c544f50a354b87d5e568d41  gcc/ada/exit.c
! 8d556ae4c54fdc46a7aa5edc7074fe20  gcc/ada/exp_aggr.adb
! 3b09213e625a7d78641da4c3f7b1af7e  gcc/ada/exp_aggr.ads
! f692b29add58ef2b71899d01acbc201a  gcc/ada/exp_atag.adb
! 93759d533df63d41d11ae6ad2277af4f  gcc/ada/exp_atag.ads
! a22898d5944022480e0b01d418cb7625  gcc/ada/exp_attr.adb
! 0d479048972bab03722aaf5712cf5cc7  gcc/ada/exp_attr.ads
! 6c8cc9f126365a019cccece3f9346c4d  gcc/ada/exp_cg.adb
! c9381db8130873a5e6bc9c811ad14504  gcc/ada/exp_cg.ads
! c74dd3b86c19df068038119a77462524  gcc/ada/exp_ch10.ads
! b989a7c6b1c5cc32357303dd95b3abfc  gcc/ada/exp_ch11.adb
! 7e89fdcfc002ece5c5933bb68e8af037  gcc/ada/exp_ch11.ads
! 67e2ff6830d8f5a02ad9f2e8cc7e815d  gcc/ada/exp_ch12.adb
! a9c24cbcffac5d49ea9292aebe5db0c4  gcc/ada/exp_ch12.ads
! 764c0f39ff6b795aa889da01f26b2e69  gcc/ada/exp_ch13.adb
! da828d4dca65dbb421d61d7faa8d0487  gcc/ada/exp_ch13.ads
! 1014458fddfddaa600134bdd0b7ee2df  gcc/ada/exp_ch2.adb
! 874379155c2b31c67f54611f40fb4cde  gcc/ada/exp_ch2.ads
! 5722ba5eaf680e4a79fb636471c7d22e  gcc/ada/exp_ch3.adb
! d218e87874041895cd5628dbbd8a6666  gcc/ada/exp_ch3.ads
! fb1910b10dc695905e125fbf101f0868  gcc/ada/exp_ch4.adb
! 6dcf102318099fe9b7d14dd8165a8dd8  gcc/ada/exp_ch4.ads
! d3dc30fa0d6459fdfd4b590ad1b9d2e4  gcc/ada/exp_ch5.adb
! 523a3e2d742ada054c744993ab53e80e  gcc/ada/exp_ch5.ads
! 6f3b9c4fc88f5488bc26d8b482bd87c0  gcc/ada/exp_ch6.adb
! 2aac87fd887c3cfd52393aea7d8e10b7  gcc/ada/exp_ch6.ads
! d86b35388e3337c32b4f8971783bf9aa  gcc/ada/exp_ch7.adb
! 58bed2052a219c0f136e6acab4a327c4  gcc/ada/exp_ch7.ads
! 4506e0557f75c933e6a8e3ff5714d1f2  gcc/ada/exp_ch8.adb
! 275bc4f2211aa14d22a900c06a8b4c05  gcc/ada/exp_ch8.ads
! 4e6c9227258f0b30811138f88ec32918  gcc/ada/exp_ch9.adb
! ffd254999738b44138692693e4ec8246  gcc/ada/exp_ch9.ads
! 51434d4ebaf52be12fff3277a3602e8c  gcc/ada/exp_code.adb
! 93034d15564e4f67a44c092eda19507b  gcc/ada/exp_code.ads
! 495728024a13da7c710853b44fe489c3  gcc/ada/exp_dbug.adb
! 2e339eaa627f1be2a8f2ef1d0d60bcb6  gcc/ada/exp_dbug.ads
! 51520a79f643053705759f809587edb0  gcc/ada/exp_disp.adb
! fc3f0f1ac573321d7aeaef22b7acb6fb  gcc/ada/exp_disp.ads
! 47a5a9e29e4d9afcbe069953f4f866e0  gcc/ada/exp_dist.adb
! 8fe237a78a35f962f3ee7e105322db64  gcc/ada/exp_dist.ads
! 60de9154059012d01f876ea302b212e6  gcc/ada/exp_fixd.adb
! 01f16454a82ef6b2e3853cc096178590  gcc/ada/exp_fixd.ads
! 096e6522f29de35623f2ae8e57c5dcd5  gcc/ada/exp_imgv.adb
! 897b83459bea3ffce4ed07b3eb134d23  gcc/ada/exp_imgv.ads
! 210c2a0d7e6d1974e681bb7826fcfd92  gcc/ada/exp_intr.adb
! d1aeeae1258e8e67e9a54adda5962d98  gcc/ada/exp_intr.ads
! 74626c75ad857f007048ec299fb5e90e  gcc/ada/exp_pakd.adb
! 9a293dcaad9cdae7da20aa663daa0367  gcc/ada/exp_pakd.ads
! 10f71b915a4c827618fb2cc9a2ef91b7  gcc/ada/exp_prag.adb
! c355a5c9807909948e926e0eff0c8886  gcc/ada/exp_prag.ads
! ba0d63fc6928573357b49f30e4226cd4  gcc/ada/exp_put_image.adb
! 584d34519aaaf49d65053dbda65375d0  gcc/ada/exp_put_image.ads
! 8a7a0d8a8a4ea74d2245b22cb7659c8d  gcc/ada/exp_sel.adb
! 4272be673f70088d0ae37c6e5b354518  gcc/ada/exp_sel.ads
! 432d19d9f95c52e3c6f2c656a741188c  gcc/ada/exp_smem.adb
! 15c3bae9c7e932fdb76839e6b875a581  gcc/ada/exp_smem.ads
! 59a584f12c3d3b6485aa82171c793717  gcc/ada/exp_spark.adb
! 2b7bf2342b3c7a2c48b7e4f1ad8c65c2  gcc/ada/exp_spark.ads
! 2b34043232af7f04bb2d1079cdb4f031  gcc/ada/exp_strm.adb
! 5a478f3a449ad9885df09defb2d247b1  gcc/ada/exp_strm.ads
! d7b2305cd7daf72574c3e439e9dad5fe  gcc/ada/exp_tss.adb
! 8401d274c26d8ccae635f94df6d80993  gcc/ada/exp_tss.ads
! f389f2094366b0be1f6243f845940f2b  gcc/ada/exp_unst.adb
! 561664a119ff189f9ac4fa58333fd49d  gcc/ada/exp_unst.ads
! 07b7ccfdc010cafcb41ac395dded8392  gcc/ada/exp_util.adb
! 93549b6bb4f5744b025b146d62187fbe  gcc/ada/exp_util.ads
! 442c80ee20fb5fb9447b3324a7f012d6  gcc/ada/expander.adb
! 2195225a2f41ae7e918665cc084dbd57  gcc/ada/expander.ads
! bf36b97874e01c015cd292d5516a4a61  gcc/ada/expect.c
! d70fe09c324385c412543ebcdaf9de24  gcc/ada/fe.h
! 040c94527977f94e0ef3e332bd3c7ae5  gcc/ada/final.c
! dfd843deea85b16bcd53040cc228c735  gcc/ada/fmap.adb
! 6aee6ab4442a07c6b2bf867846078e4d  gcc/ada/fmap.ads
! f4ab7012fc1b7a5f58489d9bf9c243f8  gcc/ada/fname-sf.adb
! da7fc66a925f2cd645d97fa25d48bbe0  gcc/ada/fname-sf.ads
! 6a2a31ffc6d2243e17a9c5b76cbd586a  gcc/ada/fname-uf.adb
! 734fea8e20ae1b161f7fb43e06b47664  gcc/ada/fname-uf.ads
! e39cd04b46b8013d415fad0cbac7f914  gcc/ada/fname.adb
! 0a66f21e4b0ec91ceb708bcc73195f4c  gcc/ada/fname.ads
! e58404b22e02464c1232931e8909f15d  gcc/ada/freeze.adb
! eaa99f30cedb70d373958e90d5383eee  gcc/ada/freeze.ads
! 131adcd6d1d265f6fe77b9979ccf7b02  gcc/ada/frontend.adb
! 2c5de1f52e506a4e1cbddd13168a45e8  gcc/ada/frontend.ads
! cd59136dcb2d38239991de3af7451df1  gcc/ada/gcc-interface/Make-lang.in
! 85cb08f87b7710fa60a7a1526e6fd8e1  gcc/ada/gcc-interface/Makefile.in
! c8dc75597da5762105409a8b6c351576  gcc/ada/gcc-interface/ada-builtin-types.def
! f0e21f07164cbc4e8e7f438ed00912dc  gcc/ada/gcc-interface/ada-builtins.def
! d69e0fff19957a7b29ee08926fc6f3cf  gcc/ada/gcc-interface/ada-tree.def
! 6bb4a7f620808e4d085788dff146b29f  gcc/ada/gcc-interface/ada-tree.h
! 29e1f3d1ec783849cfedc4ba5b3f86d2  gcc/ada/gcc-interface/ada.h
! 67dc9599090345bd6fc9fed0361f76ee  gcc/ada/gcc-interface/config-lang.in
! df2ffb467ff9812983d01da40295ec68  gcc/ada/gcc-interface/cuintp.cc
! cf4b7f77a70b65905634251350346d65  gcc/ada/gcc-interface/decl.cc
! 2e46e3864371bc11eae92e2f030fe9c3  gcc/ada/gcc-interface/gadaint.h
! 1e23461a8b089b3f96b0eec67b96b60d  gcc/ada/gcc-interface/gigi.h
! 9f177b1d16ab7e6e558ee0eccca943ff  gcc/ada/gcc-interface/lang-specs.h
! 274964d5df0a628691565b1c411d5c47  gcc/ada/gcc-interface/lang.opt
! 74cf3b6eca660d86a3d825ddc373b3be  gcc/ada/gcc-interface/misc.cc
! 98e36f508f7c769bcd5983c57836e8c7  gcc/ada/gcc-interface/system.ads
! bfb9a4dce47d966bd926113ec79bd306  gcc/ada/gcc-interface/targtyps.cc
! c44a32286837f883d44111d22ff54326  gcc/ada/gcc-interface/trans.cc
! 6f0095bfbdb857126b89772872fc3ed1  gcc/ada/gcc-interface/utils.cc
! a7f76d974397a6883e148b5faba3827f  gcc/ada/gcc-interface/utils2.cc
! 40e0d992ce6e9be735b40d94c1c1255c  gcc/ada/gen_il-fields.ads
! 6066d153ad6d2f0c2a89e9c170be125c  gcc/ada/gen_il-gen-gen_entities.adb
! 460ae9eaf4c292b48b4616f4dc61e583  gcc/ada/gen_il-gen-gen_nodes.adb
! f09dbf238948b614844c0c00c644ac7a  gcc/ada/gen_il-gen.adb
! cc13c168222313f941cf1175e328e4bd  gcc/ada/gen_il-gen.ads
! ec9be8365cf3d59cd75201a34f5ad56e  gcc/ada/gen_il-internals.adb
! 97b5671bd7c71beba8378b080b38de28  gcc/ada/gen_il-internals.ads
! b1e4836227923be7da3f704f188bd551  gcc/ada/gen_il-main.adb
! 8e3f39a0a4923e1f4f89ef3eb2589d21  gcc/ada/gen_il-types.ads
! b35cf43896e67077c71bb70ac01be958  gcc/ada/gen_il.adb
! 6e37340bccd8971f0629a0ef9c53b3ce  gcc/ada/gen_il.ads
! d8399e70b68078f50838a82a341ef734  gcc/ada/get_scos.adb
! 1d846acd98e937399d2e6b57d2a4eca5  gcc/ada/get_scos.ads
! 5e6f6cd29f776f431050ff787fededf1  gcc/ada/get_targ.adb
! 16dbf466ee34ec29d23f0f773f7a8cf1  gcc/ada/get_targ.ads
! cb7b9c7ffee8a4d5f7b9cec5c2bd4e1a  gcc/ada/ghost.adb
! 121aaf46e298350f84f8647bff54f9f9  gcc/ada/ghost.ads
! f5c959d5b3f3c2c3df458d4194a990b1  gcc/ada/gnat-style.texi
! 4002565b7eb8d7e7b62738552008b99d  gcc/ada/gnat1drv.adb
! 94e012de8cf768e11d48ae69396db9f9  gcc/ada/gnat1drv.ads
! 832df20b2e92cc9570455a0fa518ed2c  gcc/ada/gnat_cuda.adb
! 02d21f6dc14988da581fc1ce496aab0e  gcc/ada/gnat_cuda.ads
! fb154a11f0899e1a521b59f0d8492f47  gcc/ada/gnat_rm.texi
! 2bcaf95f9e80fb0a9af48df885a7acfb  gcc/ada/gnat_ugn.texi
! fb2a07c990a0ee778829d0aa465dbfcb  gcc/ada/gnatbind.adb
! 81535e0fa764b9bf56c361fa31147d59  gcc/ada/gnatbind.ads
! 73e68c8d6a35899f6766882ac0fcb303  gcc/ada/gnatchop.adb
! 76dc55c37da4d3f6fb082c39d827bf9d  gcc/ada/gnatclean.adb
! 5f07ff7079f22734d35eef0763e44fba  gcc/ada/gnatcmd.adb
! 78efbf59a589c6cf2ad0fdb3f62c60ec  gcc/ada/gnatcmd.ads
! 32d952be50c5ac9c4fe72c82e59a31bb  gcc/ada/gnatdll.adb
  670cd3e724c6b64c7b322c6e75a0e7c4  gcc/ada/gnathtml.pl
! 00618d29c11660fc54399efd2789c800  gcc/ada/gnatkr.adb
! f53843b6c6f1e336ff08060483f2d7b3  gcc/ada/gnatkr.ads
! dfb91a7c7582e7a2164f253428424e0f  gcc/ada/gnatlink.adb
! 6269e692e4262f34bed4c855a4c7c526  gcc/ada/gnatlink.ads
! 52141dad7aa8cbc2047ae35d733c7921  gcc/ada/gnatls.adb
! 19a9c46a44c9143de4cc8e48c27aeb91  gcc/ada/gnatls.ads
! 66d17c21213f8ff228f08c7d5360a87c  gcc/ada/gnatmake.adb
! c45ce4bec75bd35fa94d27e6b5a3c0a9  gcc/ada/gnatmake.ads
! ce48dd634807d3b2757ca3a92d1c5831  gcc/ada/gnatname.adb
! a4acb2fbdcf04791241b928ee0e91015  gcc/ada/gnatname.ads
! 99f2c81295d05677da660c9e0c0cd3c6  gcc/ada/gnatprep.adb
! 2f85dfce619363b5f5b10dbd049aa9ac  gcc/ada/gnatprep.ads
! 210e9441890ef1581c66d9853b40b98e  gcc/ada/gnatvsn.adb
! de77f4f096f2a869f2bbcb5a037da63b  gcc/ada/gnatvsn.ads
! a456d976bd979ec4ecf2d115bc606425  gcc/ada/gprep.adb
! 6c031683ac4fe03ecb810e771e3bf1e0  gcc/ada/gprep.ads
! 8185e397145fad080cd13bd47f2d7f57  gcc/ada/gsocket.h
! 2b8159b07fe22c45ddfc5009c3f1caa3  gcc/ada/hostparm.ads
! 32d94919527646baf6d535a8c8bd1fa1  gcc/ada/impunit.adb
! 4f1101b52618ebc888521db09a65bc6e  gcc/ada/impunit.ads
! b1fe247fec2ad340748b46ba5baeef10  gcc/ada/indepsw-aix.adb
! c9e455822e013448265934f271d26078  gcc/ada/indepsw-darwin.adb
! 4f2273f74db1ac2302d727a9ec682755  gcc/ada/indepsw-gnu.adb
! 3aeba5136158b7fc5f6dc0b7c1b20f1e  gcc/ada/indepsw.adb
! 08b6b407fb70ab584d31f060bcfcb85f  gcc/ada/indepsw.ads
! 871c1163606e1886faedec2dedb26ed0  gcc/ada/init.c
! b8aafb984d33f1d16777ad198afc4b2a  gcc/ada/initialize.c
! 870e18c5ce81937d0ddfb05a90fd3ea1  gcc/ada/inline.adb
! 896a70c60870f1ee662c64fbc5177dcb  gcc/ada/inline.ads
! fc83cdce66c6e2b19b7fee4cf3418e1a  gcc/ada/itypes.adb
! 662aacf4d2de51a18202564379031306  gcc/ada/itypes.ads
! 0d18677320fe45b48bcb51c5d9c9be63  gcc/ada/krunch.adb
! c088075d5d34a6d1a726d31077fc772a  gcc/ada/krunch.ads
! 2dfe5b856dcd220f20dd54c708b7b176  gcc/ada/layout.adb
! 184d3f3129ac8ba278aa0316b9ffa1ad  gcc/ada/layout.ads
! 76a689d5abc6eab9ce978c4051d99e68  gcc/ada/lib-list.adb
! 09e0219ed03a258983bfc167a8e6ce3d  gcc/ada/lib-load.adb
! 9aa6b5e8883a72ddccd9615a2bb37da9  gcc/ada/lib-load.ads
! 2d5184ddff670d4e2ef86d63e31a3b8a  gcc/ada/lib-sort.adb
! 9909515d389cd13ea866f94f93c8a189  gcc/ada/lib-util.adb
! 2412fc5e9d4053fc5ba265414d0512f2  gcc/ada/lib-util.ads
! 977891c6439e1c5e863274f91e6cc474  gcc/ada/lib-writ.adb
! 742d02c340f0a918552d89bcddbe200a  gcc/ada/lib-writ.ads
! f1a27a5f5af3c7acd9964b07b51d7336  gcc/ada/lib-xref-spark_specific.adb
! 77cae8c75ad5879ff407f4693dab9b8c  gcc/ada/lib-xref.adb
! 4a07b92ea509bd5fca71b06ddfb3a3c8  gcc/ada/lib-xref.ads
! 2d96ecf378d7d820dc1f89efc504a42c  gcc/ada/lib.adb
! c6ebffdbf56ea3b91debca2b0c4a61c3  gcc/ada/lib.ads
! c27b648cbae7589de5debac64e22950c  gcc/ada/libgnarl/a-astaco.adb
  c13d27ec688dfebb1965a8e9eaf55c2c  gcc/ada/libgnarl/a-astaco.ads
  66247d074eecb4270e7cf01d16e0cfce  gcc/ada/libgnarl/a-dinopr.ads
  c4e9620896065355c1895fb26186b8d2  gcc/ada/libgnarl/a-diroro.ads
  d33d03640fb0fae0a821bbeb1be518f7  gcc/ada/libgnarl/a-disedf.ads
! 3a0e6e6e92a405aadbdfc17d660dc743  gcc/ada/libgnarl/a-dispat.adb
  380695cb64d70014260c4cbc5dc99e54  gcc/ada/libgnarl/a-dispat.ads
! ad51c8a7b2d728c09ceee0f678e41a3f  gcc/ada/libgnarl/a-dynpri.adb
  a2784499cf21750d8840eeaf03b9e700  gcc/ada/libgnarl/a-dynpri.ads
! cbb7698b90e23e736ebd35e46cd43657  gcc/ada/libgnarl/a-etgrbu.ads
  3e60794a02e6ff3380c0daf20c7c6bc2  gcc/ada/libgnarl/a-exetim.ads
! da1197dd758d2fc5feada7d1ef2cb147  gcc/ada/libgnarl/a-exetim__darwin.adb
! fdcf404c0840f2c168abb54485d6698d  gcc/ada/libgnarl/a-exetim__default.ads
! af202c75d722b4e4a30d927757143b5a  gcc/ada/libgnarl/a-exetim__mingw.adb
! 865c95dcb4061bc60c9c5368445e623b  gcc/ada/libgnarl/a-exetim__mingw.ads
! 6bb6e6a4a3e8a1179cfec2b993cbb0d8  gcc/ada/libgnarl/a-exetim__posix.adb
  8a70e70c5d53efd2ae8de2a025db3217  gcc/ada/libgnarl/a-extiin.ads
  66ba8470ba07e36d23031779e1ebee31  gcc/ada/libgnarl/a-extiti.ads
! b81afd12d5a3a328d8a0ec2ae06abce5  gcc/ada/libgnarl/a-interr.adb
! 7cf706be556f2e24979b244713512e12  gcc/ada/libgnarl/a-interr.ads
! 2444951b05d002a9ac06323b887f71d8  gcc/ada/libgnarl/a-intnam.ads
! fd2afea5292055ba08f8df377a40f231  gcc/ada/libgnarl/a-intnam__aix.ads
! 2fd25caa79dc43ee145a630100019ac2  gcc/ada/libgnarl/a-intnam__darwin.ads
! 63534835ea0e1be0652f5d661258dcad  gcc/ada/libgnarl/a-intnam__dragonfly.ads
! 3d0b1e354473a994d3d7e8edbe8a80c3  gcc/ada/libgnarl/a-intnam__dummy.ads
! 3757766a3c0788dc80800a290b87c0ae  gcc/ada/libgnarl/a-intnam__freebsd.ads
! 3a21cdd15049e0a6a628f053e2647e9b  gcc/ada/libgnarl/a-intnam__hpux.ads
! ccbad8bd96cd175b1b8e6071d59b5687  gcc/ada/libgnarl/a-intnam__linux.ads
! 61e4d2a02f4be84896f27bb1e5b475df  gcc/ada/libgnarl/a-intnam__lynxos.ads
! 149ddb45805984b038ed1a67873532e3  gcc/ada/libgnarl/a-intnam__mingw.ads
! 6669186d2a5902d7eff8dcd0df6d37a2  gcc/ada/libgnarl/a-intnam__qnx.ads
! d88bdee21b39bdbfd7811ea4357ff2df  gcc/ada/libgnarl/a-intnam__rtems.ads
! f92dc2a27c239496f8a00d705a105195  gcc/ada/libgnarl/a-intnam__solaris.ads
! 96500e546172ac4800fc0d5a53477cd2  gcc/ada/libgnarl/a-intnam__vxworks.ads
! aad4e2f6a5f9391ab2c3f6276e48841a  gcc/ada/libgnarl/a-reatim.adb
! 84c9e985201296d3b4104452b32c03be  gcc/ada/libgnarl/a-reatim.ads
! a1f1b91bf7245ecff020dab8f28c2b28  gcc/ada/libgnarl/a-retide.adb
! 0ceec23899fe53aa165a12eb61e34962  gcc/ada/libgnarl/a-retide.ads
! 211b2586553838a0f43783b304111774  gcc/ada/libgnarl/a-rttiev.adb
! 5f07ea8488d99e678b5d5dffc0db3500  gcc/ada/libgnarl/a-rttiev.ads
  c04bb8934366f43faa60d914e7ebea7a  gcc/ada/libgnarl/a-stcoed.ads
! 4de9d24d2f11332282303875db2e241e  gcc/ada/libgnarl/a-synbar.adb
! 6ae97b0a32ce7fcdd754125075aeb60b  gcc/ada/libgnarl/a-synbar.ads
! ae6b9fcf4c6e774ab73c9025ac1d355b  gcc/ada/libgnarl/a-synbar__posix.adb
! 3e7d8d804f6019ff612970ae1b67cfc1  gcc/ada/libgnarl/a-synbar__posix.ads
! 01785065d982afc217bbdeba316d12ef  gcc/ada/libgnarl/a-sytaco.adb
! 95862d08131b16b417adda630b05d7aa  gcc/ada/libgnarl/a-sytaco.ads
! 64a3e5d8171890f49ed95256a37d352b  gcc/ada/libgnarl/a-tasatt.adb
! 7d0e2ba07b5f96a0e92b293a2775365a  gcc/ada/libgnarl/a-tasatt.ads
! 41cdb718839fe89eb6af1f86509ecfaa  gcc/ada/libgnarl/a-taside.adb
! ee0d808d8846fc39ac6a0ab3f89c7925  gcc/ada/libgnarl/a-taside.ads
! 119bca3c58d48b373db54f3f9bb35af7  gcc/ada/libgnarl/a-tasini.adb
! f2ff4ed03de4ee9b27ce571206aa8a9d  gcc/ada/libgnarl/a-tasini.ads
! b59cc4edc1b2a912f93f9ba1ae93a625  gcc/ada/libgnarl/a-taster.adb
  281fc9a014bf9c5a3677f1dd38cc9d5d  gcc/ada/libgnarl/a-taster.ads
! 48a46f5af12395a7ef83998b24443d63  gcc/ada/libgnarl/g-boubuf.adb
! d8a21d637562ba6469f9db1185590cc4  gcc/ada/libgnarl/g-boubuf.ads
! 51cf271ebda21e1cd08c8e6904d990e3  gcc/ada/libgnarl/g-boumai.ads
! a2a496ae3fabe091984ff65df48e14f2  gcc/ada/libgnarl/g-semaph.adb
! b642a983d00d42f1ecd72f075908497f  gcc/ada/libgnarl/g-semaph.ads
! 4924cb581cad06e6334af56188ee8103  gcc/ada/libgnarl/g-signal.adb
! dae838498958f180891f6b1fd24448fe  gcc/ada/libgnarl/g-signal.ads
! 4b2873143a1e191c637cb84bf571b6ab  gcc/ada/libgnarl/g-tastus.ads
! 8bb5ab750d0a900e44224079e101beb0  gcc/ada/libgnarl/g-thread.adb
! 235e7fcaf914b52fbe5f4888dfe63711  gcc/ada/libgnarl/g-thread.ads
! ff59571e80bb09a262db3e09508f80f6  gcc/ada/libgnarl/i-vxinco.adb
! 34ea2d40dc5513e9018c037457ded4b3  gcc/ada/libgnarl/i-vxinco.ads
  5cfb9f62dd9599caab03143b5745a967  gcc/ada/libgnarl/libgnarl.gpr
! f632c0ca5a4371ca436e4933ddce247a  gcc/ada/libgnarl/s-inmaop.ads
! cc4c6b8a0368ed2678675a1d620a8f73  gcc/ada/libgnarl/s-inmaop__dummy.adb
! 46d00d60128ec0aaa82da7fde1bcd40f  gcc/ada/libgnarl/s-inmaop__hwint.adb
! ace3889ddceca321d86a77e3442c6d76  gcc/ada/libgnarl/s-inmaop__posix.adb
! 85719d877b68535ec7b7146f2b1605cf  gcc/ada/libgnarl/s-interr.adb
! c93d7847b04683aa019e3193cb3d3405  gcc/ada/libgnarl/s-interr.ads
! 1766fe6ece77985e300dcaea98a8a9d2  gcc/ada/libgnarl/s-interr__dummy.adb
! c12129daa808cbb5d8124cf1c0b22a40  gcc/ada/libgnarl/s-interr__hwint.adb
! f98ed57965ac38b000e8beed1aacad16  gcc/ada/libgnarl/s-interr__sigaction.adb
! a03caea165ee8d579b523cbbfaa470f3  gcc/ada/libgnarl/s-interr__vxworks.adb
! 78a91da703382e1ae36561d514a94721  gcc/ada/libgnarl/s-intman.ads
! 97747e523d7d09fa739fac4870765089  gcc/ada/libgnarl/s-intman__android.adb
! 176e6acaa6ec3a822a7502ff45687a39  gcc/ada/libgnarl/s-intman__dummy.adb
! c3975c4001d3a46de0ccd93c8f034a4c  gcc/ada/libgnarl/s-intman__lynxos.adb
! 2b84f95146a06017b3ee11bcfbf3ebe4  gcc/ada/libgnarl/s-intman__mingw.adb
! ca7dd907d4fe0a7dd4e3f30f93f6b516  gcc/ada/libgnarl/s-intman__posix.adb
! 9f2b72b4888af94773378ce692c2f6fc  gcc/ada/libgnarl/s-intman__qnx.adb
! 40789f5e3482a31cc913e32ff2b4ced6  gcc/ada/libgnarl/s-intman__rtems.adb
! bf168a817ef15fdd5b4ba943601b7185  gcc/ada/libgnarl/s-intman__rtems.ads
! 341de0a88093a7db4b64db095303b8ab  gcc/ada/libgnarl/s-intman__solaris.adb
! a3d7c07cea11f1c2899f911d36220282  gcc/ada/libgnarl/s-intman__susv3.adb
! 7a26726ba4c2d3ccb61a2f4d0ac59b9f  gcc/ada/libgnarl/s-intman__vxworks.adb
! 66561cd2787c6f645510064eb7bfadbb  gcc/ada/libgnarl/s-intman__vxworks.ads
! 7d50495b8779b6c87593ee03e1b4467b  gcc/ada/libgnarl/s-linux.ads
! e465e941166b8b0636e1346434f58958  gcc/ada/libgnarl/s-linux__alpha.ads
! 3d7df352d60bb51bc0497eee29332dfc  gcc/ada/libgnarl/s-linux__android.ads
! f6964e478905260c5445a1baf12aebaf  gcc/ada/libgnarl/s-linux__hppa.ads
! 7454be8891f881aac3e0180f70f0bbc7  gcc/ada/libgnarl/s-linux__mips.ads
! 6927aa9e7f2af0eb71cf201d47632c30  gcc/ada/libgnarl/s-linux__riscv.ads
! 6af242502704cd1829aac3f902cea731  gcc/ada/libgnarl/s-linux__sparc.ads
! f20b7e9bd97df62a086c2a1542251a1c  gcc/ada/libgnarl/s-linux__x32.ads
! eca7af35377e324cc290496d74616f50  gcc/ada/libgnarl/s-mudido.adb
  e6304ab8465d5bc7fadbcaf1933a0980  gcc/ada/libgnarl/s-mudido.ads
! 99cddadb77e5c66bffde07878a21fdf5  gcc/ada/libgnarl/s-mudido__affinity.adb
! fcd2dcd0dcef77ff3d0bc1d6a7402066  gcc/ada/libgnarl/s-osinte__aix.adb
! ccace4d3b31cecaf0e2a482be5f61e07  gcc/ada/libgnarl/s-osinte__aix.ads
! d9991a71f8b88f0c19c0ca43986e2407  gcc/ada/libgnarl/s-osinte__android.adb
! e601522b2e8e5d28e66678f456ab01ad  gcc/ada/libgnarl/s-osinte__android.ads
! 648b3915cfc853ab1aa7bc68bd1e3256  gcc/ada/libgnarl/s-osinte__darwin.adb
! 07fdfdbaeb1549dec4e281410cdee8bb  gcc/ada/libgnarl/s-osinte__darwin.ads
! d6c4ef4a0c04843da479835ff4faadbb  gcc/ada/libgnarl/s-osinte__dragonfly.adb
! 7b6bfb9632fc98f2dfc94c78a92fad31  gcc/ada/libgnarl/s-osinte__dragonfly.ads
! 7e3dde0a0da05f1fb34dab39717fc466  gcc/ada/libgnarl/s-osinte__dummy.ads
! 36e32d22afa1d609b2c13a16a6c7d3d5  gcc/ada/libgnarl/s-osinte__freebsd.adb
! da66f57e07eafd63eef890106d12f444  gcc/ada/libgnarl/s-osinte__freebsd.ads
! 489b287f1c7c48849a2680e53c15ca50  gcc/ada/libgnarl/s-osinte__gnu.adb
! 121ade618a74687c2c78fd6b1af71b0a  gcc/ada/libgnarl/s-osinte__gnu.ads
! ea1a33f8688ddcc82dd6e33b50db7dc1  gcc/ada/libgnarl/s-osinte__hpux-dce.adb
! 0a2b95ec775437d94cfadbf73cf2b71c  gcc/ada/libgnarl/s-osinte__hpux-dce.ads
! 64def1dbc77570cb314c7d41655ea786  gcc/ada/libgnarl/s-osinte__hpux.ads
! 1845e394f8f8b850cafe619db496085d  gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
! 7a37ff6c94a60e649f17935cc1bdf4b2  gcc/ada/libgnarl/s-osinte__linux.ads
! 8179bc44d4664c40f14a1734c5810bda  gcc/ada/libgnarl/s-osinte__lynxos178.adb
! 46433be586a6c51b16799179be2a9df2  gcc/ada/libgnarl/s-osinte__lynxos178e.ads
! 498090d0dd6a5243ab07fd89c871277e  gcc/ada/libgnarl/s-osinte__mingw.ads
! 563bf146956a954226ea7b6754496efc  gcc/ada/libgnarl/s-osinte__posix.adb
! 92d250558371f29d223adada93eb7e2b  gcc/ada/libgnarl/s-osinte__qnx.adb
! 3f59767a7d4f8b5d570c36beb478c830  gcc/ada/libgnarl/s-osinte__qnx.ads
! c80fdd36972abc00c0e3340403ba5238  gcc/ada/libgnarl/s-osinte__rtems.adb
! fe751b5b2c7e57dd5d9ea1446f52a632  gcc/ada/libgnarl/s-osinte__rtems.ads
! 935b5859228770a9af9bf27bb7fe874f  gcc/ada/libgnarl/s-osinte__solaris.adb
! 779556e27cc1be61562bbc8f1d37fa58  gcc/ada/libgnarl/s-osinte__solaris.ads
! 22250b6762070ba739a2b3cd271b8a4a  gcc/ada/libgnarl/s-osinte__vxworks.adb
! 2f33c026a66e140bb9c1c4b0791aa2f3  gcc/ada/libgnarl/s-osinte__vxworks.ads
! b804f0afbd71a8c0d512937ba428e3a1  gcc/ada/libgnarl/s-osinte__x32.adb
! 09332c80039f458f7a62c6125a555c02  gcc/ada/libgnarl/s-proinf.adb
! 2c76a5d34faf40b4462d4384cd22950a  gcc/ada/libgnarl/s-proinf.ads
! 4de6022fff1d643176e605d2008176bd  gcc/ada/libgnarl/s-putaim.adb
! 19aa64b2dd2fce310259d90d41ab8819  gcc/ada/libgnarl/s-putaim.ads
! 09a9a584d7ecce11d7d6d3fed9c374ce  gcc/ada/libgnarl/s-qnx.ads
! d9cfe4dbc0ddd77e59bd4c44984ec74a  gcc/ada/libgnarl/s-solita.adb
! 5e110d5a3a07c4527b35cfbcd0acf773  gcc/ada/libgnarl/s-solita.ads
! bc5570a4219900f19efa6d265f28f069  gcc/ada/libgnarl/s-stusta.adb
! 3b0544432097efc37ebddc80f023d6bf  gcc/ada/libgnarl/s-stusta.ads
! 9c77c9e83191ba69fa655a44fbb041cb  gcc/ada/libgnarl/s-taasde.adb
! ef138c27364d3050cc83814d042d90cb  gcc/ada/libgnarl/s-taasde.ads
! a4ccfde4d50c5eaab728ce5051153d20  gcc/ada/libgnarl/s-tadeca.adb
! df36e80764563dbe1979b722db39598a  gcc/ada/libgnarl/s-tadeca.ads
! 3837f06837d3e27648c64c1128c1f2d7  gcc/ada/libgnarl/s-tadert.adb
! 9da8815be6cf0dc085288244093ecd43  gcc/ada/libgnarl/s-tadert.ads
! c05450c642d1006629d7339a5a7a2759  gcc/ada/libgnarl/s-taenca.adb
! 3432dc09b01d2502d1a716f1a6889c79  gcc/ada/libgnarl/s-taenca.ads
! 43964d1593669d040e4248638713ecf7  gcc/ada/libgnarl/s-taprob.adb
! db9c0ccf4708058c2aaccba9d92e26a1  gcc/ada/libgnarl/s-taprob.ads
! d450207eda810423d7d8dfd38d4834a2  gcc/ada/libgnarl/s-taprop.ads
! 167d4db37b85ceb7c487ded0bc3269c9  gcc/ada/libgnarl/s-taprop__dummy.adb
! 5fc47199a0065876f919d6a86274c714  gcc/ada/libgnarl/s-taprop__hpux-dce.adb
! 0b26f5eb2a5499d42e2da26788cc1cc5  gcc/ada/libgnarl/s-taprop__linux.adb
! 4004097f1b98722aaa91decb8a99e431  gcc/ada/libgnarl/s-taprop__mingw.adb
! 71db5e3f42881ef6a5f7a3d71998b4e9  gcc/ada/libgnarl/s-taprop__posix.adb
! 0fef4ac5b9de6f92d09362713938bb97  gcc/ada/libgnarl/s-taprop__qnx.adb
! c02e25df3f24830eb9e2a8f7ad4cb889  gcc/ada/libgnarl/s-taprop__rtems.adb
! 857d2604a937e590c3a29b117c1c87e7  gcc/ada/libgnarl/s-taprop__solaris.adb
! 750e054c6d94fd7f2c7e12160fe87e5a  gcc/ada/libgnarl/s-taprop__vxworks.adb
! c0d8f71862140b729dbe0b9864873bfa  gcc/ada/libgnarl/s-tarest.adb
! 91ab71fa80a2845532c820bdea7ad46d  gcc/ada/libgnarl/s-tarest.ads
! 72b3d7103e78c846d3c252bf037d098a  gcc/ada/libgnarl/s-tasdeb.adb
! 984c95e09b6dc6c9243e8a8e45fc0fbd  gcc/ada/libgnarl/s-tasdeb.ads
! 16b07f2ab5a59424ba8f246a21ab6acd  gcc/ada/libgnarl/s-tasinf.adb
! d095e18ff1a34b5c2d393a2f9690847e  gcc/ada/libgnarl/s-tasinf.ads
! ca8d409afb3558a0b4ed0d32de82a5f7  gcc/ada/libgnarl/s-tasinf__linux.adb
! 4d8d59fabe8c9924efebb4f7c6b346b7  gcc/ada/libgnarl/s-tasinf__linux.ads
! ea74a80d156e3b7423fd7fbeb2adaba9  gcc/ada/libgnarl/s-tasinf__mingw.adb
! 9588b479a5bea5cf600a2f255e31a490  gcc/ada/libgnarl/s-tasinf__mingw.ads
! b3f4f2a8c0c0d27fb4ee31d6f1931e39  gcc/ada/libgnarl/s-tasinf__solaris.adb
! 4e27cac8c0dce76074b53ab24f63866d  gcc/ada/libgnarl/s-tasinf__solaris.ads
! 131f86029a9badb846870c68d0502d7b  gcc/ada/libgnarl/s-tasinf__vxworks.ads
! 52e7aa45c73edfd1173916e56f281a27  gcc/ada/libgnarl/s-tasini.adb
! 195488affa8eddf9cff937cd12d98fda  gcc/ada/libgnarl/s-tasini.ads
! 5726abe7180770c525ba8192fe355112  gcc/ada/libgnarl/s-taskin.adb
! ec0ac07f91aed21a1bbb8e42706a8136  gcc/ada/libgnarl/s-taskin.ads
! c5df003a2c2e0fc4ee5f25421d5a3ce9  gcc/ada/libgnarl/s-taspri__dummy.ads
! ea1848dbc453bd976d789371811780ca  gcc/ada/libgnarl/s-taspri__hpux-dce.ads
! e5a058407ba62a5dd6ab81c16b1a51a4  gcc/ada/libgnarl/s-taspri__lynxos.ads
! de50a9c3a6a1ad1159c8f7ab084226b6  gcc/ada/libgnarl/s-taspri__mingw.ads
! 7797747b8b8f5e1a5701afc81aff4d62  gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
! 9a127f8b5f6c7c8d1d0c78b9ed388b50  gcc/ada/libgnarl/s-taspri__posix.ads
! 8b81c4da69cbb1ca7c8a3e64fa7649b2  gcc/ada/libgnarl/s-taspri__solaris.ads
! d66d585689cdf03654970c09a668b783  gcc/ada/libgnarl/s-taspri__vxworks.ads
! 1460a4b3e37b0a59ceb1ed7a9cbea150  gcc/ada/libgnarl/s-tasque.adb
! b33059b3ac39f04fd0f84aa43fa5d669  gcc/ada/libgnarl/s-tasque.ads
! e6dcc4d44afb3bbbbc7da305f9a42f7a  gcc/ada/libgnarl/s-tasren.adb
! 9c96883a7c360ffa23d9c37b7977927d  gcc/ada/libgnarl/s-tasren.ads
! 345a9d8fa539e007e366252f8c56a182  gcc/ada/libgnarl/s-tasres.ads
! c438e0ac1e5bec85cc65741dbfc1b6e0  gcc/ada/libgnarl/s-tassta.adb
! 8d8d54c9f86bb5dfda34b4ed8ac3f317  gcc/ada/libgnarl/s-tassta.ads
! 4d7b79dd01e95cf4df0445e634ab87c6  gcc/ada/libgnarl/s-tasuti.adb
! 14ad6faabda046094e77a1a933cff5db  gcc/ada/libgnarl/s-tasuti.ads
! d37ef2d7dd39400bf216f0c085a2e8ee  gcc/ada/libgnarl/s-tataat.adb
! 1c7d4a1daf7cf5b14d31ccab789f9999  gcc/ada/libgnarl/s-tataat.ads
! d009eeb572ee9bd4ed4810ecfafe34e3  gcc/ada/libgnarl/s-tpinop.adb
! 7f087db23b965a1e0662ede4c835291b  gcc/ada/libgnarl/s-tpinop.ads
! 0f5839972c12c4f38c9b39a6b00ea965  gcc/ada/libgnarl/s-tpoaal.adb
! 3439f3cc904fd1ebca2c70feeac56a96  gcc/ada/libgnarl/s-tpoben.adb
! 5c7c41cd1d9f8397b0982b7f900ecd5f  gcc/ada/libgnarl/s-tpoben.ads
! 1b69757993ffcc4b279a2d74d8d93cbe  gcc/ada/libgnarl/s-tpobmu.adb
! 60058bcc0f6bd1076d1822faa1e66bea  gcc/ada/libgnarl/s-tpobmu.ads
! 0053f5df190db182528c611a44816018  gcc/ada/libgnarl/s-tpobop.adb
! fa36ad3c329cb229f5e23a67a302b6de  gcc/ada/libgnarl/s-tpobop.ads
! 2f5a1fe63bee14f27cf930ea798298f0  gcc/ada/libgnarl/s-tpopmo.adb
! 834f154664b5c79d9656418740448246  gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
! 0da68d57cd56895ad4c2369fcfd0632a  gcc/ada/libgnarl/s-tpopsp__posix.adb
! e77852dbf14076d89060eae53a9a201d  gcc/ada/libgnarl/s-tpopsp__solaris.adb
! 6f7178dea04175f0c0856702a8176851  gcc/ada/libgnarl/s-tpopsp__tls.adb
! fae37fa5e4771be448f107881fc02a96  gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
! fcca85039904cd84cb1c3e696558a4ba  gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
! d226f5d6caa759955cd5b29c40635828  gcc/ada/libgnarl/s-tpopsp__vxworks.adb
! f0fe00b7f0d46496a8ffd1bd567e2d33  gcc/ada/libgnarl/s-tporft.adb
! 156a7bec725cd11e369d966a38c4cf85  gcc/ada/libgnarl/s-tposen.adb
! f0cb55100f734689ac086f4adc99c2ff  gcc/ada/libgnarl/s-tposen.ads
! 43af921b0bc5f23014d44b2f103e00d3  gcc/ada/libgnarl/s-vxwext.adb
! d8a5c133909f0b284e9a8b068fcbb4b6  gcc/ada/libgnarl/s-vxwext.ads
! bb31794451a08e3c3353ebab525e8088  gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
! 9b196a7359e1c45a8415174b1021f89f  gcc/ada/libgnarl/s-vxwext__kernel.adb
! 5f21f213c37ca25176db74b880c35898  gcc/ada/libgnarl/s-vxwext__kernel.ads
! ba85c856cc9bdb4e8e5b7bc3c8f8858a  gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
! 5b6723b3a38d202306d72eab9fe09614  gcc/ada/libgnarl/s-vxwext__rtp.adb
! 8c89dcac12ee78d2748ecb586fb02f1e  gcc/ada/libgnarl/s-vxwext__rtp.ads
! 23efd3a8f52ad9cf590c4cc4187ddfcb  gcc/ada/libgnarl/s-vxwork__aarch64.ads
! 2fd36c2cc0bf56e0f4b649c14592c1cb  gcc/ada/libgnarl/s-vxwork__arm.ads
! 04b7b8e03286e9b4c19a2e8eeb093ecf  gcc/ada/libgnarl/s-vxwork__ppc.ads
! cb7058be2d27ea21857f4861a4823daf  gcc/ada/libgnarl/s-vxwork__x86.ads
! 1d8d54e2791951c0dcf144f8a3cec318  gcc/ada/libgnarl/thread.c
! 6b859744b6b31dfdc683bbe098b1c7f6  gcc/ada/libgnat/a-assert.adb
! 9ad82bde8acc5a9c209af8621bb0d3f1  gcc/ada/libgnat/a-assert.ads
! a4c69a8e9f6eb806cd239985bcb76c78  gcc/ada/libgnat/a-btgbso.adb
! c68096f5f5fe6c51943658abd2dc381e  gcc/ada/libgnat/a-btgbso.ads
! 4fa840d6910473e6a58fc93f1226175d  gcc/ada/libgnat/a-calari.adb
! 1213cc324c4b8914eca09f79fb3fd2e9  gcc/ada/libgnat/a-calari.ads
! ef618837b97336020e05a4ef248f5f72  gcc/ada/libgnat/a-calcon.adb
! d92ea66db950146480f65dcd8dc68940  gcc/ada/libgnat/a-calcon.ads
! 87b0b81056312af7ecce8c0661877355  gcc/ada/libgnat/a-caldel.adb
! 627edf91af40e63fbd1fca6c177cea89  gcc/ada/libgnat/a-caldel.ads
! d4be8c45bf3a1a6922ccec8a3aec5fd4  gcc/ada/libgnat/a-calend.adb
! 7d4e0b9e749358f03647ee2ade4f3acd  gcc/ada/libgnat/a-calend.ads
! 7e4689208b323577cf34badaa97e9d12  gcc/ada/libgnat/a-calfor.adb
! a97697972f10e250dafbedd3a415fd4a  gcc/ada/libgnat/a-calfor.ads
! f3dfcab29843909d909a33e37196bce3  gcc/ada/libgnat/a-catizo.adb
  d731f2a00c2328507e1708628b8f8534  gcc/ada/libgnat/a-catizo.ads
! 7927a33ef4f49f4b9419443a4b2ccb77  gcc/ada/libgnat/a-cbdlli.adb
! 847018c9ce148aa2a4ff84a57f4c15f6  gcc/ada/libgnat/a-cbdlli.ads
! d050cf9389021145df4ffd837e9c3be6  gcc/ada/libgnat/a-cbhama.adb
! 4205f02db4736849669648c5421cec9c  gcc/ada/libgnat/a-cbhama.ads
! cf1b5d54d5c0675d2e7c6b95f4ed9f21  gcc/ada/libgnat/a-cbhase.adb
! 3429b74f0435c25470509ed77da564c6  gcc/ada/libgnat/a-cbhase.ads
! 6f514acbacc9b6288543f3e689f3d635  gcc/ada/libgnat/a-cbmutr.adb
! 8b84739cac634bf8de6e0cd6904e6b0b  gcc/ada/libgnat/a-cbmutr.ads
! c07036917ae26219e749647e72ffe395  gcc/ada/libgnat/a-cborma.adb
! cf93f97cb291f16005329fabca673cf5  gcc/ada/libgnat/a-cborma.ads
! 182b8af95456c78a117d3baa104cf2a1  gcc/ada/libgnat/a-cborse.adb
! 07691e15cb88defeb918efdf444bd4dc  gcc/ada/libgnat/a-cborse.ads
! 086b17951219d14b1eaf582da82a43f1  gcc/ada/libgnat/a-cbprqu.adb
! 69c4f15b3990e61384ebb3830331384e  gcc/ada/libgnat/a-cbprqu.ads
! f8922b2479145e1ea751bbc5644cc5c9  gcc/ada/libgnat/a-cbsyqu.adb
! 0dd73e2379a819579f9a7ba0a82f92d8  gcc/ada/libgnat/a-cbsyqu.ads
! fd1a8dc0427d7249b9477347dc2081a4  gcc/ada/libgnat/a-cdlili.adb
! 9e3ecc1473d730d754006cc55a15ff0d  gcc/ada/libgnat/a-cdlili.ads
! 7c36cf5257d50dfefa219979894bce0d  gcc/ada/libgnat/a-cfdlli.ads
! d487238ea3104ad08b3556e3b25b6e72  gcc/ada/libgnat/a-cfhama.ads
! 2586a1cffaa7a72607f2da48cd2ea3d4  gcc/ada/libgnat/a-cfhase.ads
! 4b7abf1e49aea5fed4de20281289a64b  gcc/ada/libgnat/a-cfidll.ads
! f03a158e2268c2e59bb8915c7167f21b  gcc/ada/libgnat/a-cfinse.ads
! a8de5aacf949123f5189ed231708212d  gcc/ada/libgnat/a-cfinve.ads
! 332b4f2c580b7f60a50acb6d4abd8635  gcc/ada/libgnat/a-cforma.ads
! b76af7869cd9880a8b5546b857611daa  gcc/ada/libgnat/a-cforse.ads
! 2135df2f7845a8777cf26b4c73e45b20  gcc/ada/libgnat/a-cgaaso.adb
! 97fec2b7470185f5782985a10936d979  gcc/ada/libgnat/a-cgaaso.ads
! eb7edfd615260b6a67186e8aeaa174bf  gcc/ada/libgnat/a-cgarso.adb
  ef7fab6c5e61256ac64c9dae1dd27960  gcc/ada/libgnat/a-cgarso.ads
! f347742e2b57893e8c004da5e5f89619  gcc/ada/libgnat/a-cgcaso.adb
  68226484befc5e389cd3dafaab608090  gcc/ada/libgnat/a-cgcaso.ads
! 8c52beb285706bf42544326401a6cb58  gcc/ada/libgnat/a-chacon.adb
! 32ac0c0240485d7acfcb22b0fd648f5b  gcc/ada/libgnat/a-chacon.ads
! 5bb35d234955883b466bd4b3eb70c9aa  gcc/ada/libgnat/a-chahan.adb
! fea456113a0b72fca9e47bddbfed23f0  gcc/ada/libgnat/a-chahan.ads
  00b37c98f6f96d2b5499c1f98cb503f0  gcc/ada/libgnat/a-charac.ads
  1e2a45aa2f9324faab423eb0f9a85a8e  gcc/ada/libgnat/a-chlat1.ads
! 14ab1f30b61562c149c94392b71e4d17  gcc/ada/libgnat/a-chlat9.ads
! 4ad4a1f44e24e1d1a6510fe66844e810  gcc/ada/libgnat/a-chtgbk.adb
! e76887e6f32ec689ff356e36de6707b0  gcc/ada/libgnat/a-chtgbk.ads
! b1ffa36a58522941219ce8635c52365e  gcc/ada/libgnat/a-chtgbo.adb
! 60c28a2da42b76355e257a4f333d8bef  gcc/ada/libgnat/a-chtgbo.ads
! d71c894ab0d13a7653c4a0beda911193  gcc/ada/libgnat/a-chtgfk.adb
! d76e2082a00571738ab1156e51348a13  gcc/ada/libgnat/a-chtgfk.ads
! becdfe0a09da4f9ef1a1882f7506e224  gcc/ada/libgnat/a-chtgfo.adb
! 7615671166028bb7c335d209d96161a9  gcc/ada/libgnat/a-chtgfo.ads
! a2fe150484f8a467b9a34fcd859e99eb  gcc/ada/libgnat/a-chtgke.adb
! 31d5cda72b0ed38227e9f2fdc443de4a  gcc/ada/libgnat/a-chtgke.ads
! d1a0d005a5fb1d0e7aa0258dba741201  gcc/ada/libgnat/a-chtgop.adb
! 975a91b1e750a7fe0957260af2ba111b  gcc/ada/libgnat/a-chtgop.ads
! a2ee405a8dc8939cbf8547974b143e4c  gcc/ada/libgnat/a-chzla1.ads
! aceeaa761d8843fad7dca2718f299507  gcc/ada/libgnat/a-chzla9.ads
! af0889c026c8f46388e658c2029ec28c  gcc/ada/libgnat/a-cidlli.adb
! 786934da802ca5e789d0584e430387d8  gcc/ada/libgnat/a-cidlli.ads
! 5a7c4351b9fff5eba8f62620a1518d80  gcc/ada/libgnat/a-cihama.adb
! db24d10d4dda4f5919b6e88b45e3a503  gcc/ada/libgnat/a-cihama.ads
! 6f61f6f3c7e895e933b49fd747148528  gcc/ada/libgnat/a-cihase.adb
! d0fb383a58cbcae729fc8250f4988327  gcc/ada/libgnat/a-cihase.ads
! 61b7c80b06a4b3ed062afed7060176cd  gcc/ada/libgnat/a-cimutr.adb
! e76d53841f9305e9d603553298f35e1f  gcc/ada/libgnat/a-cimutr.ads
! ca90cb7661067cf49744203aec86990a  gcc/ada/libgnat/a-ciorma.adb
! e9f288488e5de1605fe373b9429c484e  gcc/ada/libgnat/a-ciorma.ads
! 28ef3baf7ead6add9112e0cdfdfbf99b  gcc/ada/libgnat/a-ciormu.adb
! 7c3f5ff6cd003508ae1843d63099b5e3  gcc/ada/libgnat/a-ciormu.ads
! 76b0af7ed18da9bcd3122b2fd4f9de96  gcc/ada/libgnat/a-ciorse.adb
! 93d045d3273c345f6f22173924bd528a  gcc/ada/libgnat/a-ciorse.ads
! 05305d8039faaa58458b366277e544f1  gcc/ada/libgnat/a-clrefi.adb
! b59de8aebdc6296fff32715ddb4eb1a3  gcc/ada/libgnat/a-clrefi.ads
! 23aaa35bc98c46a291db60caa5e6ab21  gcc/ada/libgnat/a-coboho.adb
! d6f875f14b861a7136cfc9c599f217fb  gcc/ada/libgnat/a-coboho.ads
! ce25fafd156bd5c1da7096b1f2259151  gcc/ada/libgnat/a-cobove.adb
! 61cd5b36b5290336bfcdefbfd2269643  gcc/ada/libgnat/a-cobove.ads
! 85db0457c02c9b1fdfac599f17f39a87  gcc/ada/libgnat/a-cofove.ads
! 0ce8362373ffeb63c58f62b250660b18  gcc/ada/libgnat/a-cofuma.ads
! d84f3a0cc43fbeac593dedb8d4d1e7f6  gcc/ada/libgnat/a-cofuse.ads
! 4c353d6d9d8766a8075b2e1f70a10a82  gcc/ada/libgnat/a-cofuve.ads
! c23470652df6af90270d097651d28af0  gcc/ada/libgnat/a-cogeso.adb
! 8517dda099a4676fe2cf19d624a8c8d0  gcc/ada/libgnat/a-cogeso.ads
! 77acec13c716ab881a8a3ec092a0ac5a  gcc/ada/libgnat/a-cohama.adb
! 937b9fcccbeadc5100db0c6e44d7e6bd  gcc/ada/libgnat/a-cohama.ads
! cdfd30a3dd39eb3670a3fdacba23ca44  gcc/ada/libgnat/a-cohase.adb
! 4433f1a4fbdeb5420989755dbac5007b  gcc/ada/libgnat/a-cohase.ads
! dad19ec65dab43f4a29eb7b825836d3e  gcc/ada/libgnat/a-cohata.ads
! 97f9bacd7ff6693416e1e4ea3b2528b4  gcc/ada/libgnat/a-coinho.adb
! fc3b38ea4c6b597fff267e59ded9899b  gcc/ada/libgnat/a-coinho.ads
! cfe8881cfc7be8e30ac807c8fff04474  gcc/ada/libgnat/a-coinho__shared.adb
! c0a82339144c39f22debed4ff749e4ed  gcc/ada/libgnat/a-coinho__shared.ads
! d9eedab0bd66cf9e25df391ac1987c77  gcc/ada/libgnat/a-coinve.adb
! d0c5e409806957000a7d3c89bacfdf8c  gcc/ada/libgnat/a-coinve.ads
! 3aac4c991a7fb31b4a9197f4612b6958  gcc/ada/libgnat/a-colien.adb
! 684c10dd52b817b7222ff03c92972163  gcc/ada/libgnat/a-colien.ads
! a2d3ce270b112db1cba35073e52364ad  gcc/ada/libgnat/a-colire.adb
! 5167b64ef8703f447ac03f70dbd0e75f  gcc/ada/libgnat/a-colire.ads
! d19805d9b8c8f234156ce3e7632583e6  gcc/ada/libgnat/a-comlin.adb
! 41b103b8f1653b06d2a887af72895f7e  gcc/ada/libgnat/a-comlin.ads
! 3c2819d273b159b71cd6e9149d32d20b  gcc/ada/libgnat/a-comutr.adb
! 5e7018bc0c98b697ce9c61754c545012  gcc/ada/libgnat/a-comutr.ads
! e90e86682c4c3dbb05a39b6cd3636d5e  gcc/ada/libgnat/a-conhel.adb
! a924641e6cf7c6f9b3ffe31ee08e8237  gcc/ada/libgnat/a-conhel.ads
  38baf99435420fa514890cac49ee9242  gcc/ada/libgnat/a-contai.ads
! ca82ffa0ce4c1a16ffd71ee00dc48b6a  gcc/ada/libgnat/a-convec.adb
! 2385f0fd24ff3e848d3de49619c30f91  gcc/ada/libgnat/a-convec.ads
! 9902d5aeccb796d13799efeaa70e1cf4  gcc/ada/libgnat/a-coorma.adb
! 8a0b6ade186688823c7bda47774541c4  gcc/ada/libgnat/a-coorma.ads
! e436dbcb0924127f596e815caa6a198c  gcc/ada/libgnat/a-coormu.adb
! 4f02a20cd7f9f81c33dc1e3a2dc98463  gcc/ada/libgnat/a-coormu.ads
! 2d7f980b0666c4bd8f1672c4009efd42  gcc/ada/libgnat/a-coorse.adb
! 4d44a7f0f0e7bf2f2d633946010b2353  gcc/ada/libgnat/a-coorse.ads
! e0b5cdd5f65b918fcaa76f2dadea8c44  gcc/ada/libgnat/a-coprnu.adb
! b4ad2ab24aedfaf752976fd04d4cdc5e  gcc/ada/libgnat/a-coprnu.ads
! d7c9d28b74e1c3847dd7456037e3d264  gcc/ada/libgnat/a-costso.adb
! 78f4b687960cb65a1495f1d29552f1bb  gcc/ada/libgnat/a-costso.ads
  2399731eabd6e0bbc0a8f28a60d3c3c8  gcc/ada/libgnat/a-coteio.ads
! 68bacb72a3033c258cff795fc1b9c326  gcc/ada/libgnat/a-crbltr.ads
! bf79404c2d5a8f72f3b7cfc14ca32f47  gcc/ada/libgnat/a-crbtgk.adb
! 833fe95847b939f671ec5eea6e6ebeef  gcc/ada/libgnat/a-crbtgk.ads
! 8f1cacec981ac2c50fc957440b02ceb8  gcc/ada/libgnat/a-crbtgo.adb
! eec641d65ca5163eb54937ec3ec56543  gcc/ada/libgnat/a-crbtgo.ads
! 40cb3ffb411c733ba0ff2971bc1d392e  gcc/ada/libgnat/a-crdlli.adb
! 34a2104120fcb9356a165b6082c06016  gcc/ada/libgnat/a-crdlli.ads
! b8e7632dac86d9e67397a0dd45c9551a  gcc/ada/libgnat/a-csquin.ads
! 0f461eeeae5aa72b05d18864f49f46a0  gcc/ada/libgnat/a-cuprqu.adb
! de7f2ec6ffa592324c34cf42553899fa  gcc/ada/libgnat/a-cuprqu.ads
! 563d6527544668b8896023d407dd97d1  gcc/ada/libgnat/a-cusyqu.adb
! 78a5d7d2e694e20b7d1dc7a6e4667533  gcc/ada/libgnat/a-cusyqu.ads
! df83e47f58181ae827293274e83f8fa8  gcc/ada/libgnat/a-cwila1.ads
! fda5de9b70efa02e457c3f3a6a604d7b  gcc/ada/libgnat/a-cwila9.ads
! 8095ac3b9a30fccc2842ce63adb08c9e  gcc/ada/libgnat/a-decima.adb
! 4f58ca334de160d17753933c4b906734  gcc/ada/libgnat/a-decima.ads
! f4528aed6e4b39346d3960a22de23716  gcc/ada/libgnat/a-decima__128.ads
! a01cb5ec314291355c87696a0bfb6144  gcc/ada/libgnat/a-dhfina.adb
! c4787ca39b901617e2d1ae5c3834e982  gcc/ada/libgnat/a-dhfina.ads
! ddc6d1950a3b0e1ebf736005f2acd001  gcc/ada/libgnat/a-diocst.adb
! 96e2059de1ee9a1c78ff5c0a38f01330  gcc/ada/libgnat/a-diocst.ads
! b5e203a0bda36c4a3da1d4d6c4472e2a  gcc/ada/libgnat/a-direct.adb
! 2801ec8a7e5f99b762e0bc6d8a3bc414  gcc/ada/libgnat/a-direct.ads
! f2a21de232c405ca10a9c16b6e46750e  gcc/ada/libgnat/a-direio.adb
! 022cff9053b2aca3b45cf879061d2874  gcc/ada/libgnat/a-direio.ads
! 83079fbd4e6372ddb49c67fb03ae6c37  gcc/ada/libgnat/a-dirval.adb
! bd13f90a8c314adec7dc40b929bfbdb3  gcc/ada/libgnat/a-dirval.ads
! e145b91cd66a19bb02afe130da04a99a  gcc/ada/libgnat/a-dirval__mingw.adb
! 50276fbfb4ff3c2216a42ce54c765db7  gcc/ada/libgnat/a-einuoc.adb
! c6f03a6d7bb3ce866e219450f5a93cfa  gcc/ada/libgnat/a-einuoc.ads
! a433caf5f8b104ce776de768ff59e383  gcc/ada/libgnat/a-elchha.adb
! 0a49a68a06bda1f751d3e60c4b64840d  gcc/ada/libgnat/a-elchha.ads
! 714b27fe849d2fa3e95bd3e82235508d  gcc/ada/libgnat/a-envvar.adb
  e77a221e76c3e19394bf433277f04c0f  gcc/ada/libgnat/a-envvar.ads
! 720aee665f7cd4564cd22b998b87bcca  gcc/ada/libgnat/a-excach.adb
! 23eeb1d5c4ca3df0e01fd527511c10ea  gcc/ada/libgnat/a-except.adb
! a7d8814f3bb253147b317725061bc271  gcc/ada/libgnat/a-except.ads
! 03d5acfc2ddb9d66313566329b1a828a  gcc/ada/libgnat/a-exctra.adb
! 9772a2cb14779fd59328a4c6506898f6  gcc/ada/libgnat/a-exctra.ads
! 3de7bd7da32cfe5ea14e06aa805a561f  gcc/ada/libgnat/a-exexda.adb
! 68f6de95c3575fb44145cb397f88aac8  gcc/ada/libgnat/a-exexpr.adb
! e368962ec8b477dec786d37d94e4d0ff  gcc/ada/libgnat/a-exextr.adb
! b84b943b203dbc5b564d2d35195aabd0  gcc/ada/libgnat/a-exstat.adb
! 3f251e47a36bec2ba1dd2e020b2d9040  gcc/ada/libgnat/a-finali.adb
! 16e824d042a91d6411f0a8f8d2e89917  gcc/ada/libgnat/a-finali.ads
  b6ba93109a253e15591b1eefa685bc24  gcc/ada/libgnat/a-flteio.ads
  f7e337bf223b3a491d58fb6db81ef7b1  gcc/ada/libgnat/a-fwteio.ads
  2bf5d12193c278c4a482ae0dda1129a9  gcc/ada/libgnat/a-fzteio.ads
*************** efa823912da5d16e6f8d4aa6f78b768a  gcc/ad
*** 1314,2984 ****
  d90ff1db87e7c9bf483659701a55671c  gcc/ada/libgnat/a-llltio.ads
  b8fcc586001cbdaddc04c29fc016fa48  gcc/ada/libgnat/a-lllwti.ads
  5faeef2817310c83968117416e0120b0  gcc/ada/libgnat/a-lllzti.ads
! 7d78be8a273c54cd7bb58c3b08b35117  gcc/ada/libgnat/a-locale.adb
! c779499f316926e0bd186b76b6571474  gcc/ada/libgnat/a-locale.ads
! bffc64b435016d9559b7f02d2ad45beb  gcc/ada/libgnat/a-nagefl.ads
! 80b4eca3d2350861bba0c2a87cd7bbb4  gcc/ada/libgnat/a-naliop.ads
! a4f64c15a1860365c3b6f710c208d513  gcc/ada/libgnat/a-naliop__nolibm.ads
! 2aad6e9e29652a2b39a58f72649d43b3  gcc/ada/libgnat/a-nallfl.ads
! 6f4a85208c9260ea86a9c5944531288c  gcc/ada/libgnat/a-nallfl__wraplf.ads
! a1d8b98951822d80292b2cc5a2bd9559  gcc/ada/libgnat/a-nalofl.ads
! 872240d7289d1365de0289fead9c432c  gcc/ada/libgnat/a-nashfl.ads
! 7dd85003d530359c746a7cb5517435f3  gcc/ada/libgnat/a-nashfl__wraplf.ads
! cf414a37d02534ed2a3ad8fbe9a44ca5  gcc/ada/libgnat/a-nbnbig.adb
! 53d1163859d9a1ddaa7b524d4db2745f  gcc/ada/libgnat/a-nbnbig.ads
! 966ec344cdbac704e0ee18a808ca4df9  gcc/ada/libgnat/a-nbnbin.adb
! 0482b90ac615e63445281b85e9c512e0  gcc/ada/libgnat/a-nbnbin.ads
! 2c6a0da5213c0d4dc5bbb9c26db9e3a5  gcc/ada/libgnat/a-nbnbin__gmp.adb
! e218c2bcb70e6fc32a4f04799d83d200  gcc/ada/libgnat/a-nbnbre.adb
! e01e5568219b9887dc3e0af1641e4fcd  gcc/ada/libgnat/a-nbnbre.ads
  f8a74f5169bf9eba09b0050d2ce025f4  gcc/ada/libgnat/a-ncelfu.ads
! dc4a387ada5c32ac0973dee502c80457  gcc/ada/libgnat/a-ngcefu.adb
  2e229d27b615410dbc242fd1d7d4bd98  gcc/ada/libgnat/a-ngcefu.ads
! f1f543b8e781922438cdc3c5ce02aebe  gcc/ada/libgnat/a-ngcoar.adb
! a26d13d8c2030d72490c9b3c42f94f28  gcc/ada/libgnat/a-ngcoar.ads
! fff1b31ad32fa569b8c5a4a7ad96c7f3  gcc/ada/libgnat/a-ngcoty.adb
! d418fbf604b7373dc4c9f00e8ad0bc90  gcc/ada/libgnat/a-ngcoty.ads
! d4c4c7b457433508926f7d73accc7810  gcc/ada/libgnat/a-ngelfu.adb
! 6d7cd31ca27629d4a92170ca3c723788  gcc/ada/libgnat/a-ngelfu.ads
! 8564b3477f26c86fe243e7ba097c30e5  gcc/ada/libgnat/a-ngrear.adb
! 8be04f786df7a145ad4d191f3dc3a166  gcc/ada/libgnat/a-ngrear.ads
  7f894c161f872e68b50172715a8a311e  gcc/ada/libgnat/a-nlcefu.ads
  307582c16af8c2d164031fd8dfb72581  gcc/ada/libgnat/a-nlcoar.ads
  2341d761d1df9c74f5d4396b2a243874  gcc/ada/libgnat/a-nlcoty.ads
! ab84950480ebd62289e41d3ec50b400b  gcc/ada/libgnat/a-nlelfu.ads
  44394b04703b7121f6dafb77b7eb7dda  gcc/ada/libgnat/a-nllcar.ads
  b1c1bbccd0e624d2b5753adeaa355876  gcc/ada/libgnat/a-nllcef.ads
  4b51dc5d67f507aed187528008aa427d  gcc/ada/libgnat/a-nllcty.ads
! c4df697bfe43f078325051bf17f2462c  gcc/ada/libgnat/a-nllefu.ads
  dd270955ac40f18eb7ef0bb7122fbc06  gcc/ada/libgnat/a-nllrar.ads
  dc556e736d290554bf97bb7153c2e96b  gcc/ada/libgnat/a-nlrear.ads
  ed8c8d1cff975d8128d8a34e6fa60333  gcc/ada/libgnat/a-nscefu.ads
  ae6657265a333ec061d886c2e0a9be47  gcc/ada/libgnat/a-nscoty.ads
! c7bddd6abb488c8cd0d9982769254df5  gcc/ada/libgnat/a-nselfu.ads
! fb7d9ebedf88ad17b218daf73863877c  gcc/ada/libgnat/a-nuauco.ads
! fb590f6277661a80bc6036b8b964a004  gcc/ada/libgnat/a-nuauco__x86.ads
! a56d412792282f2fbdbd0ed099b0e72c  gcc/ada/libgnat/a-nuaufl.ads
! 31e395cc1a688ce93edacdb6f37f1e5f  gcc/ada/libgnat/a-nuaufl__wraplf.ads
  7714df1a41c354211d217f99429093ef  gcc/ada/libgnat/a-nubinu.ads
  22a793d6936415ee70b725c6d2b2020a  gcc/ada/libgnat/a-nucoar.ads
  bda677b507deb699333f9baa2c37a694  gcc/ada/libgnat/a-nucoty.ads
! f34218df55abb1690e77b94d6764f9a9  gcc/ada/libgnat/a-nudira.adb
! de06a1c262264637817d5c239d5e7f55  gcc/ada/libgnat/a-nudira.ads
! bd9eed0e40585ba218b0badca225b64c  gcc/ada/libgnat/a-nuelfu.ads
! 39a89256fa7cb74e77cda20bae09863e  gcc/ada/libgnat/a-nuflra.adb
! a9c015a63a27e198909de873e13c41e2  gcc/ada/libgnat/a-nuflra.ads
! 7f1ef40ddcde46cabce6fc71d5d694cb  gcc/ada/libgnat/a-numaux.ads
  c4d4bea6dcd8066d2ddcb0789ef64586  gcc/ada/libgnat/a-numeri.ads
  88b948f6713b009c76e8b3b7b75a22c9  gcc/ada/libgnat/a-nurear.ads
! 2726cf58fc06b2c003d5ea187f4b3260  gcc/ada/libgnat/a-rbtgbk.adb
! 4eea50deb7e3f5ef2df430e2f52273eb  gcc/ada/libgnat/a-rbtgbk.ads
! 8ce3ec39e74d3b4ad5a07c2924012760  gcc/ada/libgnat/a-rbtgbo.adb
! d53c893d33fa6896bcc29a0a1e31241b  gcc/ada/libgnat/a-rbtgbo.ads
! 349ca2f3721f7ad17611ebb90cfeaf53  gcc/ada/libgnat/a-rbtgso.adb
! 166ff9c21ff62e0309430082db82b47c  gcc/ada/libgnat/a-rbtgso.ads
! 23d73666c412ea0b368151f12f570ecd  gcc/ada/libgnat/a-sbecin.adb
! 8f8b444d21cbe31abb84a102ea741bf2  gcc/ada/libgnat/a-sbecin.ads
! 15237aa56b7ff00afaaad3ad229e2336  gcc/ada/libgnat/a-sbhcin.adb
! 8fb70496136ee6b0b5740a7e12a2a160  gcc/ada/libgnat/a-sbhcin.ads
! f842a90572e07f355de72137b406d842  gcc/ada/libgnat/a-sblcin.adb
! c991cd5dad7b801d2f539d485ea97b5b  gcc/ada/libgnat/a-sblcin.ads
  67b280f23d76be962783b397ef7e60c7  gcc/ada/libgnat/a-scteio.ads
! 07189161872dbfdb8c644f8e797fa174  gcc/ada/libgnat/a-secain.adb
! ae02ff34b1eb4b73169b0bc397c47068  gcc/ada/libgnat/a-secain.ads
! 639ea89ccca308ec8de5b3343a58e3df  gcc/ada/libgnat/a-sequio.adb
! 864ee0a18c5b495ef02136d363de4a0c  gcc/ada/libgnat/a-sequio.ads
! 688e9f51157e926b262df237ef9fcae0  gcc/ada/libgnat/a-sfecin.ads
! 8d7f654520fcdd4a91dba73c1571a0a3  gcc/ada/libgnat/a-sfhcin.ads
! 6951fa3acadc155efda2dbc693b0994d  gcc/ada/libgnat/a-sflcin.ads
  43123af888cd4637ee6a1eaf9dde9e34  gcc/ada/libgnat/a-sfteio.ads
  63d0f0f0aed733a972873cb3a4b767ea  gcc/ada/libgnat/a-sfwtio.ads
  7207d517b5474be90def505e3a2be187  gcc/ada/libgnat/a-sfztio.ads
! af0a321b020d2237d3ad327216f587b9  gcc/ada/libgnat/a-shcain.adb
! b6cc98c0860e81e70e7e8128d7a771e4  gcc/ada/libgnat/a-shcain.ads
! b7c34b7ca23681d390c8e7c280e29875  gcc/ada/libgnat/a-siocst.adb
! aed0be69801af00ba96f33e2b969bacc  gcc/ada/libgnat/a-siocst.ads
  6fce3ea5eecdf93f2ec7d0446ebd14af  gcc/ada/libgnat/a-siteio.ads
  9330fbe80fe3844d3bf5aeb4946381f6  gcc/ada/libgnat/a-siwtio.ads
  c816a5bc136362b2468801e67deb9ae9  gcc/ada/libgnat/a-siztio.ads
! 37fabeaeb3647f8ff4c4581ab2dd38c5  gcc/ada/libgnat/a-slcain.adb
! 66d405722b3e5519c3d8b8a3daf16175  gcc/ada/libgnat/a-slcain.ads
! d63e7f5cd2c9b327d57c0b7950a60b25  gcc/ada/libgnat/a-ssicst.adb
! e9b93a7d82e581ba6ad2a628575873af  gcc/ada/libgnat/a-ssicst.ads
  3ec2f925719d14de3a80c38042157f78  gcc/ada/libgnat/a-ssitio.ads
  387afdf3ceb85d07a14d8ae4e2f0eeec  gcc/ada/libgnat/a-ssiwti.ads
  366683e8278e7e71bc63a8c7a3f2238f  gcc/ada/libgnat/a-ssizti.ads
! 20fa26f5eb1617444dfc391ce8de802b  gcc/ada/libgnat/a-stboha.adb
  8274f77970c3b1ed9a51aa8ddf6a4d0f  gcc/ada/libgnat/a-stboha.ads
! bb447b17288ebb9e22a973378c38fafd  gcc/ada/libgnat/a-stbubo.adb
! e091d125c40fa8958b48268ba10d60ff  gcc/ada/libgnat/a-stbubo.ads
! 5110cb355786ba55953dcb1d151c22ad  gcc/ada/libgnat/a-stbufi.adb
! 794bc8c5b75311853ea2da256f98b519  gcc/ada/libgnat/a-stbufi.ads
! 6e8789fb95fefcfeaf8234bb59b1e892  gcc/ada/libgnat/a-stbufo.adb
! 6cfd45353ed2b9e871e09be56f5eec80  gcc/ada/libgnat/a-stbufo.ads
! a0a4bf76f96b1aa94380b8271ca56cc1  gcc/ada/libgnat/a-stbuun.adb
  1e900014d9809db78ef32d2e97e1531b  gcc/ada/libgnat/a-stbuun.ads
! 672c3f12ff35dbfbabbe2c91ffddaeaf  gcc/ada/libgnat/a-stbuut.adb
! 6a742582058c372a6879b8172b21eaec  gcc/ada/libgnat/a-stbuut.ads
  756f44b0c7f4483ecd7302aee8bc110a  gcc/ada/libgnat/a-stfiha.ads
! 3d1b1e7118e38ecff5aa81ba23678772  gcc/ada/libgnat/a-stmaco.ads
! a67e33fb6321873c897d90717a51cf9b  gcc/ada/libgnat/a-storio.adb
  34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
! cf61406c4e7dcb036f99c471d850d16d  gcc/ada/libgnat/a-strbou.adb
! 8da7d1a7f30dea89979cbf2af9980514  gcc/ada/libgnat/a-strbou.ads
! c6ce40c596f39851dfbced315ec043aa  gcc/ada/libgnat/a-stream.adb
! 9b8552b91468cca2ddcdbd34af496669  gcc/ada/libgnat/a-stream.ads
! 920251f650e9dff06b4c465a18b75b36  gcc/ada/libgnat/a-strfix.adb
! 6f1a24c3534c6b9f731bb6960811ef1e  gcc/ada/libgnat/a-strfix.ads
! 05b9610c610ea255842bfacf9e05ecea  gcc/ada/libgnat/a-strhas.adb
  b0a210089b94e668314dbcff62c4c997  gcc/ada/libgnat/a-strhas.ads
  de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
! f61541cbb4c47c661cf323046b6f7993  gcc/ada/libgnat/a-strmap.adb
! 98f3a570f04f07155a6a9f2d79412172  gcc/ada/libgnat/a-strmap.ads
! 68bd09bcbc9bbf08cb831429264f4a8a  gcc/ada/libgnat/a-strsea.adb
! 6e1d30d5426deaff53738fb289cb2c9e  gcc/ada/libgnat/a-strsea.ads
! f9c6c14e38d65318f557f1859a92f219  gcc/ada/libgnat/a-strsto.ads
! ffb131957ca49b0a5c0211f9fb9e289b  gcc/ada/libgnat/a-strsup.adb
! 85b5ec60a88cf7392b7c78cf16ae7188  gcc/ada/libgnat/a-strsup.ads
! 3d6a2519dcc33a91835b33bf66d8aae1  gcc/ada/libgnat/a-strunb.adb
! 5aef4507818d001e1ae01f33f0b2b28b  gcc/ada/libgnat/a-strunb.ads
! e1381ca161ea75368fef0cc3b7f4637f  gcc/ada/libgnat/a-strunb__shared.adb
! 26d58ff9f96a51635b5ab34e09d8e7f8  gcc/ada/libgnat/a-strunb__shared.ads
! 450ec40dedb3d81dfd14e252317a9f23  gcc/ada/libgnat/a-ststbo.adb
! 40ed25d9f57edef4a68ad4c2b4b7d779  gcc/ada/libgnat/a-ststbo.ads
! 86ce55f1bd25b533460708aabe74925e  gcc/ada/libgnat/a-ststio.adb
! 739d23d4f282d931aa082020162ae882  gcc/ada/libgnat/a-ststio.ads
! 5f34ad1cd237f51ce1009136f21e142b  gcc/ada/libgnat/a-ststun.adb
! 230be435e7573ab2ac82695b7490341d  gcc/ada/libgnat/a-ststun.ads
! 50bfd1d7f1d8fe8ea70f03bd7d2d3092  gcc/ada/libgnat/a-sttebu.adb
! 12508ff440bbd4fb3a6c62587afe28dd  gcc/ada/libgnat/a-sttebu.ads
! e102d575a553b463ce6d6044024e839b  gcc/ada/libgnat/a-stunau.adb
! f79dc938750f53b6a852ee156a821194  gcc/ada/libgnat/a-stunau.ads
! 8e21a16734f99a4e875a4198c35fdcd1  gcc/ada/libgnat/a-stunau__shared.adb
! 6e1015f8855cb85f720840e34e629af5  gcc/ada/libgnat/a-stunha.adb
  da4a8d13f76850d714a8213ada7477d2  gcc/ada/libgnat/a-stunha.ads
! d3482384ad3303893ddf63869dbc24a8  gcc/ada/libgnat/a-stuten.adb
! 78ba8f162b44899309545f45c60a6cf9  gcc/ada/libgnat/a-stuten.ads
! 8d33d4c665aedc46c47a59a2213750d0  gcc/ada/libgnat/a-stwibo.adb
! 4e13f407ce1d3cd723e50caf563fe004  gcc/ada/libgnat/a-stwibo.ads
! 404bfcbde295b21d469c217ee7af1de4  gcc/ada/libgnat/a-stwifi.adb
  b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
! c40ab53cfc479e270b40b26a63d257db  gcc/ada/libgnat/a-stwiha.adb
  3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
! cb5c384b23660de6debc4ab21b743f55  gcc/ada/libgnat/a-stwima.adb
! 1f52bc934330717ccc1efedc66dd7593  gcc/ada/libgnat/a-stwima.ads
! ee02fc2e477600adeb0a431a9237a765  gcc/ada/libgnat/a-stwise.adb
! f0aa1a13eb4958d2254107cd415ee7b7  gcc/ada/libgnat/a-stwise.ads
! de86f92e9d8276774e55cf06a4e23926  gcc/ada/libgnat/a-stwisu.adb
! ab4f9847a6b1fad07af44395de67ea52  gcc/ada/libgnat/a-stwisu.ads
! 5b3aface6a2ccc8e3f8e5eb7c4acd8b7  gcc/ada/libgnat/a-stwiun.adb
! e25fec20f7220d2d0b97e3e9b77e552d  gcc/ada/libgnat/a-stwiun.ads
! 58f087a4d06ab5e5351c60ec681cbd03  gcc/ada/libgnat/a-stwiun__shared.adb
! b48a24f98570227d8cea4d40ff7663aa  gcc/ada/libgnat/a-stwiun__shared.ads
! 8d732b4165a5fbf756a2b67ed000290f  gcc/ada/libgnat/a-stzbou.adb
! cb74ebd0f70dcbbecf2b489a43ee0aa4  gcc/ada/libgnat/a-stzbou.ads
! ab6e937303f32cc0d37c2721a6fcf4bb  gcc/ada/libgnat/a-stzfix.adb
  f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
! e76bcdb88cf8f5eeb7ef6c30141aa7c6  gcc/ada/libgnat/a-stzhas.adb
  41c71febbb354000bccca4ccd3a59c54  gcc/ada/libgnat/a-stzhas.ads
! 41413ffe0ac611a4dec5b64548f96a65  gcc/ada/libgnat/a-stzmap.adb
! 04cfd9ab72caf992fc1d1c6af3d490a6  gcc/ada/libgnat/a-stzmap.ads
! 3dcdb96d27cb8123cd5d19bc7fe0e5b7  gcc/ada/libgnat/a-stzsea.adb
! 25a388bdbfa91813558cda08c8804b26  gcc/ada/libgnat/a-stzsea.ads
! eb26b800d76087fc389b1f19dc4017b1  gcc/ada/libgnat/a-stzsup.adb
! f458d076899709e2c4f42c253c94a21a  gcc/ada/libgnat/a-stzsup.ads
! 580ce2a0fd64ab111f4816d49d9a7415  gcc/ada/libgnat/a-stzunb.adb
! 5e0594005749f3e279d62647777be866  gcc/ada/libgnat/a-stzunb.ads
! ed04f1d46c0bae47e7d7947fbed4bd9c  gcc/ada/libgnat/a-stzunb__shared.adb
! 48054c7976854da69627dfd9829f5d95  gcc/ada/libgnat/a-stzunb__shared.ads
! 42d477374d9dfc52a15f79481ab703c4  gcc/ada/libgnat/a-suecin.adb
! e065882bae98ea1aefaa78d24051b1d1  gcc/ada/libgnat/a-suecin.ads
! 4369335b33048198ad8b7aba5cc01391  gcc/ada/libgnat/a-suenco.adb
  24c625ef90e191bc1baa69c58ae2600f  gcc/ada/libgnat/a-suenco.ads
! a2989f75ffdaf93063d7101090b1c170  gcc/ada/libgnat/a-suenst.adb
  5a81ae9196b241db71c16198169dbed7  gcc/ada/libgnat/a-suenst.ads
! 81f26dde783cec8a675496007bec99c9  gcc/ada/libgnat/a-suewst.adb
  88073629f5531c7f6fba98820112cd02  gcc/ada/libgnat/a-suewst.ads
! 2bf87a0b29c80a00a5e1246e927fabf5  gcc/ada/libgnat/a-suezst.adb
  5aaf32a65e951f050f1cbb5adf5af9d2  gcc/ada/libgnat/a-suezst.ads
! 592f76f79f0be74656a8705c89e75119  gcc/ada/libgnat/a-suhcin.adb
! 73d86d66afb77f45e4ef123bd06e6808  gcc/ada/libgnat/a-suhcin.ads
! 0a80d488b1e6a6e187e18331a171813a  gcc/ada/libgnat/a-sulcin.adb
! 3ad556f8199fb6c2b792222c58116539  gcc/ada/libgnat/a-sulcin.ads
! 9c5666a0191bef402424c391163f017b  gcc/ada/libgnat/a-suteio.adb
! 6b4b2585234b53f5dac55bfb9a373771  gcc/ada/libgnat/a-suteio.ads
! 6912a7d92d0171753c4eaf54ce4b49c4  gcc/ada/libgnat/a-suteio__shared.adb
! 1c07ebaad2f9cff5c793e1b42a73762d  gcc/ada/libgnat/a-swbwha.adb
  65f3f68c6718760b4c2b0beba2af9f82  gcc/ada/libgnat/a-swbwha.ads
  aaf273ef9a113dedcab8fb87b71b7365  gcc/ada/libgnat/a-swfwha.ads
! 4976b0307ef0a7e8b16049d58f40a708  gcc/ada/libgnat/a-swmwco.ads
! 20f5fbb376d9650b44876124a6d457c2  gcc/ada/libgnat/a-swunau.adb
! bcc9e1bc89b20773f79e751a4f2d8302  gcc/ada/libgnat/a-swunau.ads
! 029320e031df160e65a3a19035d5f626  gcc/ada/libgnat/a-swunau__shared.adb
! a842c739cced08bcf9b153c2044e45a4  gcc/ada/libgnat/a-swuwha.adb
  45d76b5b911889e181b3717ab6c91651  gcc/ada/libgnat/a-swuwha.ads
! c73cd45d86df23a0d5ad27eb78c451fb  gcc/ada/libgnat/a-swuwti.adb
! 5aad4835ae3c0c7e00ed799e7cb4620f  gcc/ada/libgnat/a-swuwti.ads
! c7686d6d36815ddf946e654e10a42a21  gcc/ada/libgnat/a-swuwti__shared.adb
! 18bbe0fbcb9cf85de91b09cb2b2ae78f  gcc/ada/libgnat/a-szbzha.adb
  18b9cf476495930cec4ac3eb881257db  gcc/ada/libgnat/a-szbzha.ads
  32bb3b01e46ff7648c862537bd77aa0d  gcc/ada/libgnat/a-szfzha.ads
! 97176dfe148a27649ebcf89b058520df  gcc/ada/libgnat/a-szmzco.ads
! a8e0836929551004fd03352cd751e184  gcc/ada/libgnat/a-szunau.adb
! 7560f22fbebb11f54f702e0cd6f4f836  gcc/ada/libgnat/a-szunau.ads
! 35c6b78bd39d2b82bc5d3af39bfccea0  gcc/ada/libgnat/a-szunau__shared.adb
! cc0baad86b2314d3bbc5cd8fa21dfd44  gcc/ada/libgnat/a-szuzha.adb
  01cf107c9e66d7e5284c9b7ce2e2ed7e  gcc/ada/libgnat/a-szuzha.ads
! 337094483b886cd8289e89b914629d5f  gcc/ada/libgnat/a-szuzti.adb
! ab755b41b999079ab2e4a26d1e820309  gcc/ada/libgnat/a-szuzti.ads
! 5c731b33e2c5a88e9f675b8f2e94c28a  gcc/ada/libgnat/a-szuzti__shared.adb
! 6dcc31da23b4e72bd2b54be474117695  gcc/ada/libgnat/a-tags.adb
! ffabd8a804e070f47a6a6e8caf6d43e6  gcc/ada/libgnat/a-tags.ads
! 8483701f5ea38129203924b330239eb1  gcc/ada/libgnat/a-teioed.adb
! 8db515faa43b1f11c5a4e5648164eb3e  gcc/ada/libgnat/a-teioed.ads
! 240b489b33a2bbfd2ba6637cbad14df0  gcc/ada/libgnat/a-textio.adb
! eea4c845f819b48a195191f25d89f544  gcc/ada/libgnat/a-textio.ads
  c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
! 9643366b606d758d02a603ed8f6ff3c7  gcc/ada/libgnat/a-tiboio.adb
  7b163db9f1467e9392f347bee1400136  gcc/ada/libgnat/a-tiboio.ads
! 0898ea71e0c98db0429a29a0b2dd6962  gcc/ada/libgnat/a-ticoau.adb
! b8ddc3293849f5bef4432882a8cc2b34  gcc/ada/libgnat/a-ticoau.ads
! 9162ef8620989f5e5e793b24411b54fd  gcc/ada/libgnat/a-ticoio.adb
! 16e53eda06d980469a3947b16e84cea8  gcc/ada/libgnat/a-ticoio.ads
! e6d477724d256bc98063e2076a729861  gcc/ada/libgnat/a-tideau.adb
! ce639000fc82a11aaacef2efc86b94c7  gcc/ada/libgnat/a-tideau.ads
! 63f96e86d72f2a1673ba68a01ae24047  gcc/ada/libgnat/a-tideio.adb
! a9be433a3b366c90d75bf1391f5f716d  gcc/ada/libgnat/a-tideio.ads
! 296fe465738f657970c5b821678e8971  gcc/ada/libgnat/a-tideio__128.adb
! a6a59a0b78656c73e821a87d0a7b8504  gcc/ada/libgnat/a-tienau.adb
! 38597792fd9171fdd8f2a2583f3baf2d  gcc/ada/libgnat/a-tienau.ads
! 8966ef70eb700d4816f9bacc0cae2d39  gcc/ada/libgnat/a-tienio.adb
! d3f704d27dd8f64a1e52fcde5fd565d8  gcc/ada/libgnat/a-tienio.ads
! fb5fc93d0a40bad0974b9172414ceade  gcc/ada/libgnat/a-tifiau.adb
! a9bf463425c61712b5cbb1754508825c  gcc/ada/libgnat/a-tifiau.ads
! 4eb5f5252dac05ac7a12cb8aef421ed9  gcc/ada/libgnat/a-tifiio.adb
! cb652b43513ee9f3e9818139e2f690db  gcc/ada/libgnat/a-tifiio.ads
! f66e2628fe559dfe03e6aeeca66c7ad5  gcc/ada/libgnat/a-tifiio__128.adb
! 8131090e8fc9c460e87efaa30ac5bfeb  gcc/ada/libgnat/a-tiflau.adb
! f4cb578e5a930f38aed28ba3be9c6fca  gcc/ada/libgnat/a-tiflau.ads
! ff1bbc694b5470b8022daa7ef049338d  gcc/ada/libgnat/a-tiflio.adb
! 9bae1f24380a83e3046ac934853796ff  gcc/ada/libgnat/a-tiflio.ads
! 122bf3120f0a1d2f2fc4ad4a258ea0d2  gcc/ada/libgnat/a-tigeau.adb
! e512749fab87f5524efbad33530b2557  gcc/ada/libgnat/a-tigeau.ads
! b155a12cb230aa2cf087216e68e28736  gcc/ada/libgnat/a-tigeli.adb
! c027c2b29bea52e981cca3c48636cd25  gcc/ada/libgnat/a-tiinau.adb
! 1a2d573ab95e0aa89f244030edc0b17c  gcc/ada/libgnat/a-tiinau.ads
! e2daf45c63d739ad1a90303224a8c94b  gcc/ada/libgnat/a-tiinio.adb
! 3626c88ed860d9b7db70690d91ed33c1  gcc/ada/libgnat/a-tiinio.ads
! 3604ac041acf10f2db78fc45ea07a418  gcc/ada/libgnat/a-tiinio__128.adb
! f4087224c75e5b5417fe1c7e2d64d36e  gcc/ada/libgnat/a-timoio.adb
! 069a513aaf479a697d6528816527f7db  gcc/ada/libgnat/a-timoio.ads
! 46b6bab173c6032ee2370bdab788973c  gcc/ada/libgnat/a-timoio__128.adb
! eb947eeaf04748a1667c421634b6722a  gcc/ada/libgnat/a-tiocst.adb
! 36ffce13eda32eed759d8c8f0f628492  gcc/ada/libgnat/a-tiocst.ads
! 6b7997287c987b6c43416e7c64cb8abb  gcc/ada/libgnat/a-tirsfi.adb
! db46e046b114321bf1c10b8ec6a7f7f9  gcc/ada/libgnat/a-tirsfi.ads
! a82a7f22aaf2bfdafd2685033c0726a5  gcc/ada/libgnat/a-titest.adb
  7b71ac41d87e6c43f98663d1d110846c  gcc/ada/libgnat/a-titest.ads
  1a5a51a7ff392f1819e96c8c7b6ba50b  gcc/ada/libgnat/a-tiunio.ads
  ebdefb0717ee54e84334b4468aea7da2  gcc/ada/libgnat/a-unccon.ads
  8eb8e50901a7293468a57fa9630abb8c  gcc/ada/libgnat/a-uncdea.ads
! 229ab736c0ebe9b98ba211d31181c3af  gcc/ada/libgnat/a-undesu.adb
  82a804005be52b8d315b11082ce952d4  gcc/ada/libgnat/a-undesu.ads
! 0955b2ef1370da105fc31bd9b5689827  gcc/ada/libgnat/a-wichha.adb
  bc85d10bd14a8eda24559935a5472a57  gcc/ada/libgnat/a-wichha.ads
! 07345e566121406c5d932c93489ac163  gcc/ada/libgnat/a-wichun.adb
! d4706997805048470bae6f2d0a3da550  gcc/ada/libgnat/a-wichun.ads
  495dc144d91ae1388ae48ceb32e47f91  gcc/ada/libgnat/a-widcha.ads
! f55955650f707e6c64566fa12601f9da  gcc/ada/libgnat/a-witeio.adb
! ab1149ca9a6717d29c8e1824cd753d97  gcc/ada/libgnat/a-witeio.ads
! 213ad0be16bdfd2d031bb3f287c4b2c6  gcc/ada/libgnat/a-wrstfi.adb
! 14f31e2918fdf5edfc5e7aee2ffd9295  gcc/ada/libgnat/a-wrstfi.ads
! 82319715367183d84159d5e1627a66cb  gcc/ada/libgnat/a-wtcoau.adb
! 7ade4028e01074f635eb5b287162f6a3  gcc/ada/libgnat/a-wtcoau.ads
! 25931d12d7590f50f173dac6d090075a  gcc/ada/libgnat/a-wtcoio.adb
  d76fe24c6988d732303e4f40830c2082  gcc/ada/libgnat/a-wtcoio.ads
! f8e99d2ab94a3e7bd3463d22aa4bcd3c  gcc/ada/libgnat/a-wtcstr.adb
! 965b23bab6d37dc6f73f9b958c7e106a  gcc/ada/libgnat/a-wtcstr.ads
! b7866a7abab79af42356c03e1d5d9a7f  gcc/ada/libgnat/a-wtdeau.adb
! eaf62af4df803da86e82c1af00291f2a  gcc/ada/libgnat/a-wtdeau.ads
! b258574596e923d14dadfee041af8a94  gcc/ada/libgnat/a-wtdeio.adb
  20d4a8b1dbec170436bce906004aaac8  gcc/ada/libgnat/a-wtdeio.ads
! 54924bc2a7110d2364ee62e675367e5e  gcc/ada/libgnat/a-wtdeio__128.adb
! 0f7bf856fbbc31b73d7def92c60118a6  gcc/ada/libgnat/a-wtedit.adb
! af7b55b8bedc1619ec3bfa04838b1195  gcc/ada/libgnat/a-wtedit.ads
! 34504aec35ccf20a7943abe4432ba6de  gcc/ada/libgnat/a-wtenau.adb
! 56c70c81328b49ee2c70ed2fffde22ac  gcc/ada/libgnat/a-wtenau.ads
! f504b4a402c715b379338dc907010762  gcc/ada/libgnat/a-wtenio.adb
  fa13b730a5c90ff293982415bf7bcecb  gcc/ada/libgnat/a-wtenio.ads
! d83c16337f4139894d5eec7bc2c6f879  gcc/ada/libgnat/a-wtfiau.adb
! 405a3581e0067bb9c7c641d7606e3f5b  gcc/ada/libgnat/a-wtfiau.ads
! 482d866f5483a59b8e2fde6d82f91fc4  gcc/ada/libgnat/a-wtfiio.adb
  495444487be476924785b4b8eff6b910  gcc/ada/libgnat/a-wtfiio.ads
! 90b8cdd9f9564b072b8d40bfa9cbbaa0  gcc/ada/libgnat/a-wtfiio__128.adb
! c1eced561212165fede080ead5f97627  gcc/ada/libgnat/a-wtflau.adb
! b7794212f1e1adbd49be00eb9cd45c7e  gcc/ada/libgnat/a-wtflau.ads
! b07627b223b6782ff034145367751462  gcc/ada/libgnat/a-wtflio.adb
  bb57e8648d7de30496bb43f8a849fc3f  gcc/ada/libgnat/a-wtflio.ads
! 49a3eb5ae53f4632872db4c508afec45  gcc/ada/libgnat/a-wtgeau.adb
! d904d2b4f88c5fd89e3cbc4529179676  gcc/ada/libgnat/a-wtgeau.ads
! d43ae6912bfc4e359fd5160cb86664e3  gcc/ada/libgnat/a-wtinau.adb
! daeb9692be07bbd35d5143effb7ec7c0  gcc/ada/libgnat/a-wtinau.ads
! 62bf05f2299f37c93f0831377de561df  gcc/ada/libgnat/a-wtinio.adb
  62a64f1715aaaa145cf2b6d360381363  gcc/ada/libgnat/a-wtinio.ads
! ae48dd01639b1c1120830747fde46d87  gcc/ada/libgnat/a-wtinio__128.adb
! 9d9d561415d8c79b9ac9727c7636aecb  gcc/ada/libgnat/a-wtmoio.adb
! e25766d15ad8b869771fcb0a4246ecc7  gcc/ada/libgnat/a-wtmoio.ads
! 5b47c2a1135ccf5016c17bfd5b7e2844  gcc/ada/libgnat/a-wtmoio__128.adb
! 443ab84d2c299801c0f9456061c9be72  gcc/ada/libgnat/a-wttest.adb
  53d3d301f9afb69992013f55fe363511  gcc/ada/libgnat/a-wttest.ads
! d76909fbac906e09ab27d42e657217c8  gcc/ada/libgnat/a-wwboio.adb
  899e14502ec4dedbf4fdb28f8cecfa35  gcc/ada/libgnat/a-wwboio.ads
  1c2480c111fa5b71fca7c67f21525f8f  gcc/ada/libgnat/a-wwunio.ads
  107d2989204d28e32923acc02d444f67  gcc/ada/libgnat/a-zchara.ads
! 03432eb9d62799633edbc1187a5d9ec8  gcc/ada/libgnat/a-zchhan.adb
  ce55ee9974e330611ce057d096fe581f  gcc/ada/libgnat/a-zchhan.ads
! 99972d0122b24386d0c3e211c237d905  gcc/ada/libgnat/a-zchuni.adb
! ead99b55be6224b426746317226874d5  gcc/ada/libgnat/a-zchuni.ads
! 1e3bdfc3b22218d592ef2bb1201130d0  gcc/ada/libgnat/a-zrstfi.adb
! 9c5e70d24e64609ef665305e9688a56a  gcc/ada/libgnat/a-zrstfi.ads
! ddc5c105b892bc4ce632156d740228bf  gcc/ada/libgnat/a-ztcoau.adb
  fe39d89a6c321af618f6fa9308e66666  gcc/ada/libgnat/a-ztcoau.ads
! af4103a864d7466de492ff50a92dbef6  gcc/ada/libgnat/a-ztcoio.adb
  7440d81a0d7886b3f76b271c7fcbf8b3  gcc/ada/libgnat/a-ztcoio.ads
! 25bf0d356a062baf214d440692730935  gcc/ada/libgnat/a-ztcstr.adb
! aceb2776cb52e55b721fdbf7ca627186  gcc/ada/libgnat/a-ztcstr.ads
! 6863e77ebbaea3e0a838ff598a6757a8  gcc/ada/libgnat/a-ztdeau.adb
! bde1a710e23fb9a0ed462d802d72578f  gcc/ada/libgnat/a-ztdeau.ads
! 71a891cea77b5b630ee15a6db4287a28  gcc/ada/libgnat/a-ztdeio.adb
  a1457649e626ebf32915696e5afd2ac0  gcc/ada/libgnat/a-ztdeio.ads
! 70240496c95b3fffc317fb58d7e2e6da  gcc/ada/libgnat/a-ztdeio__128.adb
! 44594067782e7fbf67050ed725c41cb8  gcc/ada/libgnat/a-ztedit.adb
! c6f180c31d4d12f5e9319480f0370080  gcc/ada/libgnat/a-ztedit.ads
! 2ab6a53f1d404d4803fba54ca79d0e39  gcc/ada/libgnat/a-ztenau.adb
! c31415516d18d8f8ba31aaaf059b2c0b  gcc/ada/libgnat/a-ztenau.ads
! 74f189cc50a5a81796a42e17d6b486f1  gcc/ada/libgnat/a-ztenio.adb
  33aa889d92f43b14a348a444135fc992  gcc/ada/libgnat/a-ztenio.ads
! 3ad604d16ce712000e8d73c3ec3470d1  gcc/ada/libgnat/a-ztexio.adb
! 1e04ce102d6ea8362b1918190977d06a  gcc/ada/libgnat/a-ztexio.ads
! 2f6909d11747f9fa6ea3ef379a1585f8  gcc/ada/libgnat/a-ztfiau.adb
! d3dd475343a9cad2e67b907acb42a169  gcc/ada/libgnat/a-ztfiau.ads
! 59ee2075807135d0758d7a8378757521  gcc/ada/libgnat/a-ztfiio.adb
  9e2efe8c1c2d6658a575fbecb5ab1418  gcc/ada/libgnat/a-ztfiio.ads
! 822e73bbe5db92bc6c36eb2caaf7b6bd  gcc/ada/libgnat/a-ztfiio__128.adb
! f0c11f65e22cd92c8cf6351977e1bc92  gcc/ada/libgnat/a-ztflau.adb
! b577063248f7bad3e5f96242ba47b013  gcc/ada/libgnat/a-ztflau.ads
! 88bfd811d91284efc90b3b7f50ae2742  gcc/ada/libgnat/a-ztflio.adb
  7aae0945e67f16f4f77aa54a65552f3e  gcc/ada/libgnat/a-ztflio.ads
! e9818464849e1f5a1882285fc3d5d328  gcc/ada/libgnat/a-ztgeau.adb
! 6982b57935d6ff3a82cda888d66c7d3e  gcc/ada/libgnat/a-ztgeau.ads
! de233d7c8a2d8ac6425bb155c091f7ea  gcc/ada/libgnat/a-ztinau.adb
! 1ea07d87a3abe777ad2fa869b623dd0e  gcc/ada/libgnat/a-ztinau.ads
! 0c33701746ee37f92918ba35e00ea130  gcc/ada/libgnat/a-ztinio.adb
  f0456d31ec0aa6f6786e1b635f8023cb  gcc/ada/libgnat/a-ztinio.ads
! 9f9c66c7b35087d52a867f9fc9dd98c2  gcc/ada/libgnat/a-ztinio__128.adb
! 73520a84f28b98505e22c655341b2f30  gcc/ada/libgnat/a-ztmoio.adb
  9831d312ef279fc55e5e051745be05d2  gcc/ada/libgnat/a-ztmoio.ads
! dce3c2e7a8ff10678e48b2489eab36fa  gcc/ada/libgnat/a-ztmoio__128.adb
! 7bcf95a864a2e6bc3ef2c9b935c0f9b4  gcc/ada/libgnat/a-zttest.adb
  2caf047380f684add2bd5a35dc4e1091  gcc/ada/libgnat/a-zttest.ads
! 605eed33b288c95d6f7fe161ab85df0f  gcc/ada/libgnat/a-zzboio.adb
  a80428bcd2bf9ab7214609e68ff1651c  gcc/ada/libgnat/a-zzboio.ads
  a6d7b54a7a1a401188cfe54d1c2bad3b  gcc/ada/libgnat/a-zzunio.ads
  aad41855092e5648dbc6e7ab9d94cda3  gcc/ada/libgnat/ada.ads
  71c71bcd90c113e366bf720c3d886660  gcc/ada/libgnat/calendar.ads
  e150ba4c7f01d70e0086543a96ffd40b  gcc/ada/libgnat/directio.ads
! 6945be79a1020f77f5754585f4d486df  gcc/ada/libgnat/g-allein.ads
! 3dfe0695fdc094bd97b6c70df1b8c75a  gcc/ada/libgnat/g-alleve.adb
! 33ae951fa403c4e1dd1337124c54c6f4  gcc/ada/libgnat/g-alleve.ads
! 9e2359c8d3dd7794d978f6ddd2add9dc  gcc/ada/libgnat/g-alleve__hard.adb
! 298710bed138ecdc9143880d1fa8bd38  gcc/ada/libgnat/g-alleve__hard.ads
! f87bedf307c7b82f6946856c66bf5f3c  gcc/ada/libgnat/g-altcon.adb
! 1484cff5c75d441c7956bb37bfe71fd0  gcc/ada/libgnat/g-altcon.ads
! 875d4767fd2bc2d564da793f0ef39aae  gcc/ada/libgnat/g-altive.ads
! 6f46de14654fbb1dcad5f39b0a661b3e  gcc/ada/libgnat/g-alveop.adb
! f61f15b0c52abc1910e5d66ea4a2cb9b  gcc/ada/libgnat/g-alveop.ads
! b4ab76d6e13d3b20202a5ca73358f17c  gcc/ada/libgnat/g-alvety.ads
! 07c7c64f9871c9c3f2a8a93b7a379ae8  gcc/ada/libgnat/g-alvevi.ads
! bfabb6ded7c2d12ee4931e83ab1d3e53  gcc/ada/libgnat/g-arrspl.adb
! 45a6d97142bc478244595e96fc018329  gcc/ada/libgnat/g-arrspl.ads
! 6dedfa79cd570f4988c3cb944f4725d9  gcc/ada/libgnat/g-awk.adb
! d3a82df096104e9a9e3717e2090773bb  gcc/ada/libgnat/g-awk.ads
! 2e4ee25eceb86e92aa5284ae5a8112f0  gcc/ada/libgnat/g-binenv.adb
! 5398e8b958960497a7cb3511eb7e3ae2  gcc/ada/libgnat/g-binenv.ads
! 3221ee65fa1a8930c70ef9c473c28bc3  gcc/ada/libgnat/g-brapre.ads
! 10dfa3dd585c25b5c0b80455363616b0  gcc/ada/libgnat/g-bubsor.adb
! 7fe62953d12288e169240b901fa435ef  gcc/ada/libgnat/g-bubsor.ads
! ff6d1cfcb0bf954b8fc6eeda902d9e48  gcc/ada/libgnat/g-busora.adb
! 24fa88ea9bde2b5905a5466f013851c5  gcc/ada/libgnat/g-busora.ads
! df479534851b08df536b2e979006b6c3  gcc/ada/libgnat/g-busorg.adb
! 68cfc204c004d7e39792d6b99c4fdf8e  gcc/ada/libgnat/g-busorg.ads
! 09ba195dcfac26b5c922acb0f8c3d945  gcc/ada/libgnat/g-byorma.adb
! 6486fe7779da89f5b05662357b1237e0  gcc/ada/libgnat/g-byorma.ads
! c9d1f84213ad9ad4aa1ca050f60aa0c9  gcc/ada/libgnat/g-bytswa.adb
! e450fba7c292259d27f769f0972eb8f9  gcc/ada/libgnat/g-bytswa.ads
! 3bd75d8a6bd7479beb762c93afb10420  gcc/ada/libgnat/g-calend.adb
! 95ac238d5f3cd2e513229bd097f9a05f  gcc/ada/libgnat/g-calend.ads
! 1ee576bb708230d9b41cd96ca449adc3  gcc/ada/libgnat/g-casuti.adb
! 0373ce634d0fcbb2818c4a5d883695c6  gcc/ada/libgnat/g-casuti.ads
! 396f10f29a91fdca303e15c08f9106d3  gcc/ada/libgnat/g-catiio.adb
! e4a02b51308e6670983c18f6842cf537  gcc/ada/libgnat/g-catiio.ads
! 1614a27b0e38da1b8eba0a52bf865939  gcc/ada/libgnat/g-cgi.adb
! 6c411a69fc1648606cc31d466ca64e67  gcc/ada/libgnat/g-cgi.ads
! 6156c6ec0a351b87c9e1c071a8a90663  gcc/ada/libgnat/g-cgicoo.adb
! f0164edbfd727646c1364c6645da9096  gcc/ada/libgnat/g-cgicoo.ads
! feb86d1bb0b492a0c4aa6d4e61801fd9  gcc/ada/libgnat/g-cgideb.adb
! 6f5683cc2842d668c16a0e9e63bfcad7  gcc/ada/libgnat/g-cgideb.ads
! 6f313eeb0e99b9a9c1e5d85e4f243081  gcc/ada/libgnat/g-comlin.adb
! d612c484b5a110e0d0f5bb1546348e69  gcc/ada/libgnat/g-comlin.ads
! 43314ded37d203cef775184550a2cb79  gcc/ada/libgnat/g-comver.adb
! e7d07c89e97da5aafddc6aee6cfd398e  gcc/ada/libgnat/g-comver.ads
! 48a08af04ae1fe67360ebc956a971c1d  gcc/ada/libgnat/g-cppexc.adb
! 694ab0a58aa8402465191f524035ae40  gcc/ada/libgnat/g-cppexc.ads
! 98e7fc2806cbbd243779cd0e992963c0  gcc/ada/libgnat/g-crc32.adb
! a9fe3d94fa71c651a383b2be29e6c2d2  gcc/ada/libgnat/g-crc32.ads
! 7f69d6e419de7b16b2e13a6043a9fa55  gcc/ada/libgnat/g-ctrl_c.adb
! c9a6df083e2ad8327344e4ac32faf761  gcc/ada/libgnat/g-ctrl_c.ads
! 5afe793fa768bdaa9cbee3312f56aa7d  gcc/ada/libgnat/g-curexc.ads
! dd33204c22838faf2872d3b72aad6d46  gcc/ada/libgnat/g-debpoo.adb
! 56e11e896b0d1b45fbc96359ec58a810  gcc/ada/libgnat/g-debpoo.ads
! 66c4a21406b98200da5fe48fd5a652ba  gcc/ada/libgnat/g-debuti.adb
! f6ab1a423a44cf4a35bfd3f0486800de  gcc/ada/libgnat/g-debuti.ads
! 472781c75db60122af8ca64745ff4465  gcc/ada/libgnat/g-decstr.adb
! c3e66c4ecef2ad6ee2a934a6e536abdb  gcc/ada/libgnat/g-decstr.ads
! efd1f6ff40c93b3b33901c936b871bdd  gcc/ada/libgnat/g-deutst.ads
! bb5f33cafbe1e235e303edbb4210c940  gcc/ada/libgnat/g-diopit.adb
! 047fc4eb93f5bdb6711bd20a97371732  gcc/ada/libgnat/g-diopit.ads
! 18cc3706cf1cce070b14e69b72a9fa8a  gcc/ada/libgnat/g-dirope.adb
! c741a9e4793e4b460d704536bd62213b  gcc/ada/libgnat/g-dirope.ads
! d160ea6165a31db8f36271ece4262f48  gcc/ada/libgnat/g-dynhta.adb
! d8d185de5a4221f4a624cb47b1d21a8c  gcc/ada/libgnat/g-dynhta.ads
! c8738e92a4e941bbdd1039e2db986c8c  gcc/ada/libgnat/g-dyntab.adb
! 2ea275c78e50c0a646fcb099ffdfd026  gcc/ada/libgnat/g-dyntab.ads
! 34f1fb292a75995d8a139e4abe867e70  gcc/ada/libgnat/g-eacodu.adb
! 217272c410266df9ee0f52fc4f4eabcc  gcc/ada/libgnat/g-encstr.adb
! 1ce932d86bb171afcd05600d4e54ecc7  gcc/ada/libgnat/g-encstr.ads
! 0d1d8ab5dca7edb1d52bbbcebfe34e18  gcc/ada/libgnat/g-enutst.ads
! d41a5dfe7bad44e7aaf7ad61f18f4304  gcc/ada/libgnat/g-excact.adb
! fa6e4a3c8f8c1985f335764dbadf2af9  gcc/ada/libgnat/g-excact.ads
! cbf3cd10789ad8bc4bb29e5559192bcd  gcc/ada/libgnat/g-except.ads
! 3d7083f74bbed1ff629c48d3ce56cfc6  gcc/ada/libgnat/g-exctra.adb
! 22069005c9e4aaa9e51ae6da0f6f663a  gcc/ada/libgnat/g-exctra.ads
! 99f91ebd52db0442fb1490226de1348f  gcc/ada/libgnat/g-expect.adb
! b10e8c4698d3275198cc1031c2e992e4  gcc/ada/libgnat/g-expect.ads
! 2acb52b63e3fa5de252102c902055ab8  gcc/ada/libgnat/g-exptty.adb
! 8789f7e9e06ab748f67594c4d02e7b9b  gcc/ada/libgnat/g-exptty.ads
! c235c8fb78cb8eaab652d1388eeb93f4  gcc/ada/libgnat/g-flocon.ads
! d6c4c89b2519e6626148cf031f1e69ff  gcc/ada/libgnat/g-forstr.adb
! 025901acd1355b3b4a6f6d201815d20e  gcc/ada/libgnat/g-forstr.ads
! e324d1cb47d2d2112d2b6a50188ab8f8  gcc/ada/libgnat/g-graphs.adb
! d4c6440072fc6557a744ae7760bfb8ef  gcc/ada/libgnat/g-graphs.ads
! 33f39207c520cb3b32e570e4b2c12e53  gcc/ada/libgnat/g-heasor.adb
! ebb460e6f50aca90e8165f9c9086d6a4  gcc/ada/libgnat/g-heasor.ads
! 6b965fec563f832f6135a704857d1798  gcc/ada/libgnat/g-hesora.adb
! 84a1901c6947b6f3ddf03f60ccfbb129  gcc/ada/libgnat/g-hesora.ads
! 2a56b072402c86d6d740a54ba055f396  gcc/ada/libgnat/g-hesorg.adb
! afa95271fda451a5efeed13fea5ac1ab  gcc/ada/libgnat/g-hesorg.ads
! c694597cb8a6bd078e3d78517587b37e  gcc/ada/libgnat/g-htable.adb
! 9c0dd9eed588a94c52bea3f39bace847  gcc/ada/libgnat/g-htable.ads
! a5ec333ab36c5466dc9ac2a7da01b7ab  gcc/ada/libgnat/g-io.adb
! cfc3c4f660a3702300897783662e3025  gcc/ada/libgnat/g-io.ads
! 9ad494f90612dcd4cf9ee6c07d3e783d  gcc/ada/libgnat/g-io_aux.adb
! 25fb7cd0f0ac96bed6668bf9b87b4219  gcc/ada/libgnat/g-io_aux.ads
! 214beb168c28fcdfeb254d78462eca29  gcc/ada/libgnat/g-lists.adb
! 2d460afc43393e2deb40b734f652955a  gcc/ada/libgnat/g-lists.ads
! 9338425ddff9c08c8a2b4e02d63e97d4  gcc/ada/libgnat/g-locfil.adb
! fc9b601d0794eed1a92f097fb196390e  gcc/ada/libgnat/g-locfil.ads
! 87d10c58ff1d916f4fb9ebfa3c1ba369  gcc/ada/libgnat/g-mbdira.adb
! a775163b0231635413fb73b74c077d27  gcc/ada/libgnat/g-mbdira.ads
! c7efccd90a9070346560283a7f3c2389  gcc/ada/libgnat/g-mbflra.adb
! b3e32e4100b4d01eddf409cc5658ef08  gcc/ada/libgnat/g-mbflra.ads
! a814f3f46b2f78dd0bcc24e6b92bca72  gcc/ada/libgnat/g-md5.adb
! a82a4e4c877740388de6a2a345520767  gcc/ada/libgnat/g-md5.ads
! 4489e6f07a961888be7c2f8d8e60084e  gcc/ada/libgnat/g-memdum.adb
! 979d768f851b83feb717f23ce32f4534  gcc/ada/libgnat/g-memdum.ads
! 2784b745a4c9b9de8584d6bcd8a029b1  gcc/ada/libgnat/g-moreex.adb
! 3fe22c284ebad4421fb384ff7b2e2001  gcc/ada/libgnat/g-moreex.ads
! 11fbfa03c76fff023c92a572b0126144  gcc/ada/libgnat/g-os_lib.adb
! c41dbfc692f6878cda3d3820803ddb78  gcc/ada/libgnat/g-os_lib.ads
! 5d73c7a725d84d8c0312fd3db8980ba8  gcc/ada/libgnat/g-pehage.adb
! 313e250f96ad0165a5a6aa26c63cb829  gcc/ada/libgnat/g-pehage.ads
! 424cf63c3377d0cb36e570c2a678ea56  gcc/ada/libgnat/g-rannum.adb
! a4f08ea36f2ba048b5a30eb78c66dc3b  gcc/ada/libgnat/g-rannum.ads
! cc273da947b03d98ce0e163d745c01a6  gcc/ada/libgnat/g-regexp.adb
! d590e0f8b2d57974415ca4a607b6ca91  gcc/ada/libgnat/g-regexp.ads
! 3abf40f375e2a6f1360d32654054ef2b  gcc/ada/libgnat/g-regist.adb
! 9aace94299d8a2b4dc9e4f572a3783b4  gcc/ada/libgnat/g-regist.ads
! 85abb29d83166a054c562be0b4af4c22  gcc/ada/libgnat/g-regpat.adb
! 675d596ac6b42b5f243ebe40d503b9ce  gcc/ada/libgnat/g-regpat.ads
! 53bdaa942af91728238bf8be2ccb536b  gcc/ada/libgnat/g-rewdat.adb
! dc8a704ee47a96be2f5bdf858dff5c8a  gcc/ada/libgnat/g-rewdat.ads
! 2f6c7c820d58eebd7ce9efce4cdb299b  gcc/ada/libgnat/g-sechas.adb
! 3b48a1501bad270e19badfabebab8967  gcc/ada/libgnat/g-sechas.ads
! 47ae8082973edd52c557068bba540e4f  gcc/ada/libgnat/g-sehamd.adb
! 6d95516b86575283ccf66cc5c3176ef6  gcc/ada/libgnat/g-sehamd.ads
! 6257afbac6c247ed3243aa0234030973  gcc/ada/libgnat/g-sehash.adb
! 1caf33dd26bacc741e914dc386e5b97b  gcc/ada/libgnat/g-sehash.ads
! e641bfd0206971a262b70bed2eb69f78  gcc/ada/libgnat/g-sercom.adb
! 4066c1e6f1775e5f1b24de5cc55f2f4d  gcc/ada/libgnat/g-sercom.ads
! 056187f41bd20aa51a8eab224e8a946d  gcc/ada/libgnat/g-sercom__linux.adb
! c5ee0e03e6ebf9c4efcd0a7b52f0f665  gcc/ada/libgnat/g-sercom__mingw.adb
! 974ae718f5d0115709cac48acb4c3dc7  gcc/ada/libgnat/g-sestin.ads
! 7e17b0c74fdce107c9afe5a5c6ee6c11  gcc/ada/libgnat/g-sets.adb
! df14d1e43a1ccca9500568465482634c  gcc/ada/libgnat/g-sets.ads
! a1491bcec628b1fa5e7736032fb631dc  gcc/ada/libgnat/g-sha1.adb
! 5dbdaca339705d7dc196386ecbf985c8  gcc/ada/libgnat/g-sha1.ads
! ec0e27e70c70473c103ff5aec525dfd3  gcc/ada/libgnat/g-sha224.ads
! 3c344fd3a7334d9c03d6906a1cf2a8d7  gcc/ada/libgnat/g-sha256.ads
! e0465120631601689696ec6b773726e2  gcc/ada/libgnat/g-sha384.ads
! 18d4ea8bf943d2657de3b2308648141f  gcc/ada/libgnat/g-sha512.ads
! 851f275591ba8d1a3c663cb6c21b775d  gcc/ada/libgnat/g-shsh32.adb
! acc55feb1f9b36beeb6bac34a026c7f8  gcc/ada/libgnat/g-shsh32.ads
! acbe0ef5927702466b3f860ce42c8f0d  gcc/ada/libgnat/g-shsh64.adb
! b48c446fff5aaaa86bafe34fd0ed8901  gcc/ada/libgnat/g-shsh64.ads
! e19ad13e3b057cfceeb10b6cf0df7a15  gcc/ada/libgnat/g-shshco.adb
! 8a80527a9d0d918c6628e674944f1c84  gcc/ada/libgnat/g-shshco.ads
! 7795f6af302ef79d93aa9eb56efb75d5  gcc/ada/libgnat/g-soccon.ads
! f09e74d924834ebfbdce445f0a73d203  gcc/ada/libgnat/g-socket.adb
! d0d569c87f4919475a480810f06fdb4d  gcc/ada/libgnat/g-socket.ads
! a70c6f97cb49ddcbff41db0fa8b4e01f  gcc/ada/libgnat/g-socket__dummy.adb
! eb5c690d823c81be96a7b9c8767c2b81  gcc/ada/libgnat/g-socket__dummy.ads
! c0e4a910f223bcec101b772151f5a5c0  gcc/ada/libgnat/g-socpol.adb
! 7c28503679899f94530653db9c12d724  gcc/ada/libgnat/g-socpol.ads
! f3d0a719b7a96e24f7df7f8458de08b0  gcc/ada/libgnat/g-socpol__dummy.adb
! 6219c82f1059326c061e51988ff30c4e  gcc/ada/libgnat/g-socpol__dummy.ads
! 4a3b6f7317595c612d2313e4aac4aca7  gcc/ada/libgnat/g-socthi.adb
! 2082c239ab9515dcbe94d48eff8afc09  gcc/ada/libgnat/g-socthi.ads
! 6e61f29ae50a98d09651d642f8c77c7b  gcc/ada/libgnat/g-socthi__dummy.adb
! eb12e3dc2ea81d6089a650b6a612e248  gcc/ada/libgnat/g-socthi__dummy.ads
! aeb0f45be185072afdec0f2f99097af2  gcc/ada/libgnat/g-socthi__mingw.adb
! 6e13c689c23da3a50f8c12a8cb69fb90  gcc/ada/libgnat/g-socthi__mingw.ads
! 5b11eda972f07dc49bd3f533b85c5af4  gcc/ada/libgnat/g-socthi__vxworks.adb
! f47a3ef0836afe779d31bd719d8e6e2a  gcc/ada/libgnat/g-socthi__vxworks.ads
! ff3709c6f562bc99ea28670f50ab7a40  gcc/ada/libgnat/g-soliop.ads
! 9339a398b32b9ffa846b32c044cdfabc  gcc/ada/libgnat/g-soliop__lynxos.ads
! 17e2cb1662fbd534fc45e4773a8fe412  gcc/ada/libgnat/g-soliop__mingw.ads
! 841c84c1b7b5193865bbbedc80e82966  gcc/ada/libgnat/g-soliop__qnx.ads
! b8503ff0b70ade2ff0fc379b7ee3a6f7  gcc/ada/libgnat/g-soliop__solaris.ads
! c2b034b109f0adc9d0265c9269c2b10e  gcc/ada/libgnat/g-sopowa.adb
! c3377a32ce07c2b9c1f875437cf4ec47  gcc/ada/libgnat/g-sopowa__mingw.adb
! b0aade11d7af22e5277714ba1cc68f8a  gcc/ada/libgnat/g-sopowa__posix.adb
! b38de735dd5227ab1ed51e15981d3b2b  gcc/ada/libgnat/g-sothco.adb
! 81d502d26a4465d57c249c0522973562  gcc/ada/libgnat/g-sothco.ads
! dbb60edcd75ab1a83b09818253f2fea6  gcc/ada/libgnat/g-sothco__dummy.adb
! 86901f7251c3946fac28200a9df992c5  gcc/ada/libgnat/g-sothco__dummy.ads
! 605f07ec13b5755cb34822ea41aa940c  gcc/ada/libgnat/g-souinf.ads
! deaac3023746993469f39d98eb08ff30  gcc/ada/libgnat/g-spchge.adb
! d66ebecb26a085051b4219c95569f245  gcc/ada/libgnat/g-spchge.ads
! 53e67afbb4d956803979a92488feb671  gcc/ada/libgnat/g-speche.adb
! cc190f5fb36a88288bfe728b1aa95c94  gcc/ada/libgnat/g-speche.ads
! a6453d6fc0188491c0e31207832f2ce6  gcc/ada/libgnat/g-spipat.adb
! 32096a12e492fbcd04240f95cb134261  gcc/ada/libgnat/g-spipat.ads
! 6e5c28264bf4157876f7153bbcceb23d  gcc/ada/libgnat/g-spitbo.adb
! 5f5d0dfd376c0b12f38f943eef99e08d  gcc/ada/libgnat/g-spitbo.ads
! 9f2688ba2f12921cec7cf8096640611f  gcc/ada/libgnat/g-spogwa.adb
! 740bca46a70ddbbb85bcd527b72127df  gcc/ada/libgnat/g-spogwa.ads
! db76db232f8685b5e2ed137eb07ab03a  gcc/ada/libgnat/g-sptabo.ads
! 4d0ec39e521b2117bde5dfb34fafb979  gcc/ada/libgnat/g-sptain.ads
! 77555c274ec898b10579dbaee5e1ac7e  gcc/ada/libgnat/g-sptavs.ads
! 5c3eff02851004ca9d1185c09185d4e8  gcc/ada/libgnat/g-sse.ads
! 9bdfb0d8f2030b8a73a323c61bc4a6aa  gcc/ada/libgnat/g-ssvety.ads
! f055f184707ea3098da38772cf4da6cc  gcc/ada/libgnat/g-sthcso.adb
! 50793b293c74406821a29b9f42c91fc4  gcc/ada/libgnat/g-stheme.adb
! 702976b72eb195b81a2fcd5aed00b9c2  gcc/ada/libgnat/g-strhas.ads
! 016d0e14e53d27821caa033fca85740a  gcc/ada/libgnat/g-string.adb
! 9a891d1947de6d921fb09dc3987fc810  gcc/ada/libgnat/g-string.ads
! 0740dea102ffe9db061f02be0920b996  gcc/ada/libgnat/g-strspl.ads
! cdd8b9b9d0210a69ac588a48c31715cb  gcc/ada/libgnat/g-stseme.adb
! df86500b0b3ef27b4901a1a6ca6f90b0  gcc/ada/libgnat/g-stsifd__sockets.adb
! b6cd3c9e3a829fbf5fbf4403aa06cc9a  gcc/ada/libgnat/g-table.adb
! 3fb5f3b02a1b5b4a8d7b574ec81615d3  gcc/ada/libgnat/g-table.ads
! b4374898d4e8690c77b87468ef7477ea  gcc/ada/libgnat/g-tasloc.adb
! d125e54a7810e9061c79a36fbef797e2  gcc/ada/libgnat/g-tasloc.ads
! f3ab892d16d39120c9adc140e2fafb78  gcc/ada/libgnat/g-timsta.adb
! 19376587c0a26400ecca4ba43a8240bf  gcc/ada/libgnat/g-timsta.ads
! 040964f2c1b283fab234559a6c79c3fc  gcc/ada/libgnat/g-traceb.adb
! fe7b4c3ea912e6467e660236ca42edb3  gcc/ada/libgnat/g-traceb.ads
! 86f159d4d23e7057b3bd3de4b41a5dde  gcc/ada/libgnat/g-trasym.adb
! eadadfbedb3f2914c16ddf64fcf38765  gcc/ada/libgnat/g-trasym.ads
! c0f2eaf7350386352165e99ddb58fb38  gcc/ada/libgnat/g-tty.adb
! 37f55bd457cf354dade80d6c13255ab7  gcc/ada/libgnat/g-tty.ads
! 406c4a249f5298a67fae55abe74eb49b  gcc/ada/libgnat/g-u3spch.adb
! 5e478d2c62a49c447f1bbece4737a961  gcc/ada/libgnat/g-u3spch.ads
! 746b9188ba1a73a99b569f04b83c6ed6  gcc/ada/libgnat/g-utf_32.adb
! 77a8dabcb17c12092dc5879b6b36162c  gcc/ada/libgnat/g-utf_32.ads
! 5392830a899e144d6aa214d7d0b7fa98  gcc/ada/libgnat/g-wispch.adb
! b279d277495529b58476fad5e205fc1e  gcc/ada/libgnat/g-wispch.ads
! e5ae1e23e92d52e64700e4b7a4b0997a  gcc/ada/libgnat/g-wistsp.ads
! ffb84728009f6911ffb7b2f7e50c2838  gcc/ada/libgnat/g-zspche.adb
! e7babf9ee106e651e7a6926fe07de064  gcc/ada/libgnat/g-zspche.ads
! 4dca2f7676a4c1491981c0565c8769b2  gcc/ada/libgnat/g-zstspl.ads
! 8e9b40f2857fd3a243222e3701eda93a  gcc/ada/libgnat/gnat.ads
! 5bd69f86161a7abeeea80a3dcf1249bf  gcc/ada/libgnat/i-c.adb
! ed104cb023748ff03db6a2ac4f5202a4  gcc/ada/libgnat/i-c.ads
! 3cd8ff8254b2d3b6d8013daf9ac76f7c  gcc/ada/libgnat/i-cexten.ads
! cc06f30d7754f2a5d9cc860d6a06e0e3  gcc/ada/libgnat/i-cexten__128.ads
! 2a85a8bcdb2ce1a101a18a29436dce59  gcc/ada/libgnat/i-cobol.adb
! 76fd1e32db3dfd3e383c4aa61227d419  gcc/ada/libgnat/i-cobol.ads
! 5869e8cd6a51881252a947fc28832293  gcc/ada/libgnat/i-cpoint.adb
! d9469df88bd9636f7f24c99fc6b87e67  gcc/ada/libgnat/i-cpoint.ads
! a275b1ac6479c33d2eea7e6bafe03224  gcc/ada/libgnat/i-cstrea.adb
! 8be2ac376a994e938b373418736d0d04  gcc/ada/libgnat/i-cstrea.ads
! 061c4cbcb1e1bf4019cc146c9e6ed9bb  gcc/ada/libgnat/i-cstrin.adb
! 5fcee4f15f50bececd400cabc921f6a9  gcc/ada/libgnat/i-cstrin.ads
! 6cbd75b79246d8e460d85e15133c76e5  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
! 9d36e47ecc297538054cf63ab6650b70  gcc/ada/libgnat/i-pacdec.adb
! 51c4b45da22314bd2f0002479a4fa22e  gcc/ada/libgnat/i-pacdec.ads
! d2949c68c0f22283489d746bb59c66f3  gcc/ada/libgnat/i-vxwoio.adb
! 7fca8428ae451f10f83037e71cb64466  gcc/ada/libgnat/i-vxwoio.ads
! 42c07022975d8e32578e5defb45c71ee  gcc/ada/libgnat/i-vxwork.ads
! 92497684ac1632d97ac0f47ee95ad713  gcc/ada/libgnat/i-vxwork__x86.ads
! 439f56d40ed3947c389cf034ddbeeab9  gcc/ada/libgnat/interfac.ads
! 546e9ceffb204c0ed5e5c18df483f20c  gcc/ada/libgnat/interfac__2020.ads
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  a8eb2329946dd4041335c2c4cfd086af  gcc/ada/libgnat/libada.gpr
  9b37ec6e60899a7dadce7f301acc9eee  gcc/ada/libgnat/libgnat.gpr
  fbe275186bb4f8ccd7519acfa1499671  gcc/ada/libgnat/libgnat_common.gpr
  38f101ad4a6eba55ef694b1ab6315683  gcc/ada/libgnat/machcode.ads
! 0a158afd8bafd6281d22ed7e6171defc  gcc/ada/libgnat/memtrack.adb
! 2174308e6c2df19cc05e5becdf994ef2  gcc/ada/libgnat/s-addima.adb
! 8b8f3122f80bc2eaf0269f03a1bd2e0b  gcc/ada/libgnat/s-addima.ads
! 1b45838c1dbfe632f139e6df7f45ac22  gcc/ada/libgnat/s-addope.adb
! 98b85f0fa2d8401540e3b1bd0623086e  gcc/ada/libgnat/s-addope.ads
! e01095e6b3e3f3178ac2671b803d9457  gcc/ada/libgnat/s-aoinar.adb
! e30080370e64bfca7b617fd58faa9c9b  gcc/ada/libgnat/s-aoinar.ads
! 4919f052fc64cd9f16c921d35fa22fd3  gcc/ada/libgnat/s-aomoar.adb
! 2edecd32834df0d9890935b5c1659fe7  gcc/ada/libgnat/s-aomoar.ads
! fc6b73fcdb5b9da1e5b7518199f1103e  gcc/ada/libgnat/s-aotase.adb
! f11a3a53fb1f7e31bab62d19e219ea57  gcc/ada/libgnat/s-aotase.ads
! f644a94d827a2552c9c4d662cf44da6a  gcc/ada/libgnat/s-aridou.adb
! 2c708236fceec2a1689a9079fb1986f6  gcc/ada/libgnat/s-aridou.ads
! 2f0638c8a5bdccaed233bbca925b0c91  gcc/ada/libgnat/s-arit128.adb
! 3b22cdcacfb1762408a99bc405dc67b6  gcc/ada/libgnat/s-arit128.ads
! 6e468f7503a62af3a6fbf5bb2ee6c3e0  gcc/ada/libgnat/s-arit32.adb
! 9af9f041918db3910d366e5d87c40941  gcc/ada/libgnat/s-arit32.ads
! 22080cf5719984e98daf85de53bc9de3  gcc/ada/libgnat/s-arit64.adb
! 78a517e55285510dbe35216bf526e242  gcc/ada/libgnat/s-arit64.ads
! 765915187f19f59b11453570d81bea58  gcc/ada/libgnat/s-assert.adb
! 741c5f361c8de5c1236e9959bc4e2e6b  gcc/ada/libgnat/s-assert.ads
! d2a105a0cd118af92b7558e87149fe33  gcc/ada/libgnat/s-atacco.adb
! 581a49dffcd659427e43cb99aac63839  gcc/ada/libgnat/s-atacco.ads
! c445145f82787e87f8d315d92fc973df  gcc/ada/libgnat/s-atocou.adb
! a64151f2a7b04aec3cbbbb986404cee4  gcc/ada/libgnat/s-atocou.ads
! 6c0f6fc5353edb5b3104bacbed4f9bbe  gcc/ada/libgnat/s-atocou__builtin.adb
! 96cdbd1f9f92c94ae72f44aa4f33e164  gcc/ada/libgnat/s-atoope.ads
! 7ff53fd78728feab57d3d41ff3ebc9b6  gcc/ada/libgnat/s-atopex.adb
! 38a2912a03e3577755f4de5f7cf0a9e8  gcc/ada/libgnat/s-atopex.ads
! 239612681aed0a3d512f4e531c0bbb35  gcc/ada/libgnat/s-atopri.adb
! 033de8f4ff7dea40651b85c5d9e8bbbd  gcc/ada/libgnat/s-atopri.ads
! 946030693697d17660eff3ccd3ce3dfc  gcc/ada/libgnat/s-auxdec.adb
! 019296e9acb46a8561f19d7a8be11348  gcc/ada/libgnat/s-auxdec.ads
! e1d9d7f07b2dbc2e8a724f48d5dceb57  gcc/ada/libgnat/s-bignum.adb
! 9d58b9a33aa5ad4de87e3fbaa700107a  gcc/ada/libgnat/s-bignum.ads
! 1e3b41f3fd95839b7b1f1533d281fc51  gcc/ada/libgnat/s-bitfie.ads
! ceedf925f52ee1b9687a08c40a22ae84  gcc/ada/libgnat/s-bitops.adb
! 8cf11e177087e612927ec496266f08b4  gcc/ada/libgnat/s-bitops.ads
! 5a12db9e60332ef94691deeca3b5aa2f  gcc/ada/libgnat/s-bituti.adb
! e392ab2a6090fdb88cdd2e213315cc23  gcc/ada/libgnat/s-bituti.ads
! 9b77f0a8425dad4420f326a97e8e382c  gcc/ada/libgnat/s-boarop.ads
! dac99e261d4b68d50e0773ab047cdd7f  gcc/ada/libgnat/s-boustr.adb
! 10e1ca082ccda9a5bce407e627352845  gcc/ada/libgnat/s-boustr.ads
! dfe13b198ab87ecb73a40ef78f5ca1f1  gcc/ada/libgnat/s-bytswa.ads
! 98da53164ee314870908733abb9a293e  gcc/ada/libgnat/s-carsi8.adb
! 1a6c238955cfa0a9906e79be1021837a  gcc/ada/libgnat/s-carsi8.ads
! 47f9c93c9b7cd977adfb5951f7c4135e  gcc/ada/libgnat/s-carun8.adb
! 9b138b25195dc6b2f997165c262a54a8  gcc/ada/libgnat/s-carun8.ads
! c222e4408cee41b8a7dc2c3d9e29948d  gcc/ada/libgnat/s-casi128.adb
! ea35289d03f12ed6781db2168339def8  gcc/ada/libgnat/s-casi128.ads
! bccc292fd6edec6e87a756a629bde421  gcc/ada/libgnat/s-casi16.adb
! e076e29f06c17a09f5e794acff678383  gcc/ada/libgnat/s-casi16.ads
! 61f2833ae0cbec787b816a8669cacafe  gcc/ada/libgnat/s-casi32.adb
! d6e175eef2a71ff1839b5299aea59d86  gcc/ada/libgnat/s-casi32.ads
! 4a8b8e27464d51e6280dbcf44ac725fc  gcc/ada/libgnat/s-casi64.adb
! 1a2936cff0d47e5faf905164597575fe  gcc/ada/libgnat/s-casi64.ads
! 9f8f46c22fd5ff82adb4a342e123021c  gcc/ada/libgnat/s-casuti.adb
! e73b533b81695beb281559903a631678  gcc/ada/libgnat/s-casuti.ads
! c5e1987b5554eb581f4fe1ddeb509e80  gcc/ada/libgnat/s-caun128.adb
! d54f43a00db2dc430d0a7bebedd69678  gcc/ada/libgnat/s-caun128.ads
! e2cd562dd63a638dde7336511376f5a9  gcc/ada/libgnat/s-caun16.adb
! a4c5739dd1b7b62aa6d385030eb98113  gcc/ada/libgnat/s-caun16.ads
! 562b5b1b13db93d9373522115bffa41f  gcc/ada/libgnat/s-caun32.adb
! 96131e34c0afb874273ba842df848d07  gcc/ada/libgnat/s-caun32.ads
! c5a10e1efd8e753b785e7312dc2e9f18  gcc/ada/libgnat/s-caun64.adb
! f5cc33a556c5ff52de5097d0e4b7b1fe  gcc/ada/libgnat/s-caun64.ads
! fc27ade539a0db61d7d04b0d683ec54e  gcc/ada/libgnat/s-chepoo.ads
! 365c0f976ddd99b4e6f6b9664e282ed9  gcc/ada/libgnat/s-commun.adb
! 66776a9b5d2ba95f612a414aed77572a  gcc/ada/libgnat/s-commun.ads
! 2fa331473a41c7a4e80a735fd7b98dfd  gcc/ada/libgnat/s-conca2.adb
! 30c54ba6465bbb691134645608a50cea  gcc/ada/libgnat/s-conca2.ads
! 23c942999731411ae0c43ded66c6707e  gcc/ada/libgnat/s-conca3.adb
! 24982c59a9174a0228b7bd802f9a9829  gcc/ada/libgnat/s-conca3.ads
! 3d09aa0e57ca72683c2d1d56a91ea0df  gcc/ada/libgnat/s-conca4.adb
! 6f0e3e54d25ffe6ed7efd59ff54ea7ad  gcc/ada/libgnat/s-conca4.ads
! 1be76fe8cd44aa7dfd3334ef792f6ac2  gcc/ada/libgnat/s-conca5.adb
! 6d8743e1086cf26368aea1d244c756cf  gcc/ada/libgnat/s-conca5.ads
! 6c7b7c37bf02b0c4e5b7b66aab4dda7f  gcc/ada/libgnat/s-conca6.adb
! 5234efd599286bb5aa1990082aeac794  gcc/ada/libgnat/s-conca6.ads
! f9fa6d286f3fa9b353726bf229929197  gcc/ada/libgnat/s-conca7.adb
! 21728f09f3489074f2f74c9b627f65a8  gcc/ada/libgnat/s-conca7.ads
! 1193f2ca3d2e76cd90de15fbc0e3b3d9  gcc/ada/libgnat/s-conca8.adb
! 7dd4afefa6bf4afc5d8aa36c32278e46  gcc/ada/libgnat/s-conca8.ads
! b70da61606891c851313530b5cdc3841  gcc/ada/libgnat/s-conca9.adb
! ad65742c3ea8caa0dfee94a776d45e82  gcc/ada/libgnat/s-conca9.ads
! e622f383d4797a1005706284ce3d2445  gcc/ada/libgnat/s-crc32.adb
! 55ca1ae30c67c51d5e4d5a33b01ea507  gcc/ada/libgnat/s-crc32.ads
! 6f02f535f5e3c65f32b6616d7de82e72  gcc/ada/libgnat/s-crtl.ads
! 5c294ae7cbc4e82b55df32cb5122817a  gcc/ada/libgnat/s-dfmkio.ads
! 55907dafc81660826f4827641b9b0c61  gcc/ada/libgnat/s-dfmopr.ads
! df724da381838d41b07accba8d3ca2e2  gcc/ada/libgnat/s-dgmgop.ads
! e5b713a4e1c21cdeb31aa470fbe6727a  gcc/ada/libgnat/s-diflio.adb
! 238b648a09e9b698d95be2e47af6d2ca  gcc/ada/libgnat/s-diflio.ads
! 6bc582606cb0e74c46d5ccfde0a87fab  gcc/ada/libgnat/s-diflmk.ads
! 1228f641c413c853a82b12274754405e  gcc/ada/libgnat/s-digemk.ads
! 69e1df5c50d0ba3182b11bb6569f99f8  gcc/ada/libgnat/s-diinio.adb
! 5dc23bcf81b276aef2e7c19e518d889f  gcc/ada/libgnat/s-diinio.ads
! 2b26749f088c31371a83302e51bcb3c9  gcc/ada/libgnat/s-dilomk.ads
! 220a220014b49166c9ddba016b471494  gcc/ada/libgnat/s-dim.ads
! c685897d73b0dd7a07be37754050db74  gcc/ada/libgnat/s-dimkio.ads
! ef016676fbc8d81067cf184fe4ff1a39  gcc/ada/libgnat/s-dimmks.ads
! fdf5c85bf7c0e480e38be0304293b625  gcc/ada/libgnat/s-direio.adb
! eb4028f006fd0cb6382152163430904e  gcc/ada/libgnat/s-direio.ads
! 0148df01259eb33e2e7dd9ad7fb5dd22  gcc/ada/libgnat/s-dlmkio.ads
! 93a100a96ae52b55f265a687f3e8e3d9  gcc/ada/libgnat/s-dlmopr.ads
! 08cf155178bc09bfaa5759d83a788166  gcc/ada/libgnat/s-dmotpr.ads
! f8a52699d8feb20e69e6a2d502d88050  gcc/ada/libgnat/s-dorepr.adb
! 010d855fa885ef103c4842495cbebb35  gcc/ada/libgnat/s-dorepr__fma.adb
! 562128326ef8b16d96a03a2cf4b32819  gcc/ada/libgnat/s-dourea.adb
! afbaf868483fc31869ca137dc47963d0  gcc/ada/libgnat/s-dourea.ads
! abcf07c86e5502fd604a8e89dc574f20  gcc/ada/libgnat/s-dsaser.ads
! 156d66ac9949672b4d5ddf440901c06a  gcc/ada/libgnat/s-dwalin.adb
! 134dea009531533ddbad4d6cd39c21d1  gcc/ada/libgnat/s-dwalin.ads
! 5c9acc69a9df3b1606472052097bbe5b  gcc/ada/libgnat/s-elaall.adb
! 6620a7cea9f9d8683e5b2dfc33eec330  gcc/ada/libgnat/s-elaall.ads
! 278024961438e6626cd72010b5ccecd7  gcc/ada/libgnat/s-excdeb.adb
! 130594efbdd7ce203b3e5ac14209c308  gcc/ada/libgnat/s-excdeb.ads
! 45691213fc65f6b4acd82fe127aece63  gcc/ada/libgnat/s-except.adb
! 443e010a583affa3d77492831331d676  gcc/ada/libgnat/s-except.ads
! 0a175e1a9f88b02d37436b60a8c1dd77  gcc/ada/libgnat/s-excmac__arm.adb
! 5bb2c3f7ba4915a1a7b34c48d714b862  gcc/ada/libgnat/s-excmac__arm.ads
! 8e10c05c089e5833bd7de16a32fcb437  gcc/ada/libgnat/s-excmac__gcc.adb
! ce7749129b8314630709fdeed270e372  gcc/ada/libgnat/s-excmac__gcc.ads
! 2e3ea1b2d91b00bab88782c5b1f16da1  gcc/ada/libgnat/s-exctab.adb
! ae0b1b4e0ff3c5fc4260bd7d31ac2c37  gcc/ada/libgnat/s-exctab.ads
! 6adfd1904947437082974d72e6f6816f  gcc/ada/libgnat/s-exctra.adb
! e553241f6bc13417881628eab19865bf  gcc/ada/libgnat/s-exctra.ads
! 517381593dbf32375d54f7a5683e9850  gcc/ada/libgnat/s-exnflt.ads
! 7ecc29826b6875ec0dd5bdc155ed6a60  gcc/ada/libgnat/s-exnint.adb
! e2bef9e959fe7867fa7072fbf1cf02b6  gcc/ada/libgnat/s-exnint.ads
! e61341e30a60404bbac661300fd0119e  gcc/ada/libgnat/s-exnlfl.ads
! 8651f2b6fbb4def8f18a829af213fa6b  gcc/ada/libgnat/s-exnllf.adb
! 8d9889ea7f37fcf1bce1ecc5a7a8bf78  gcc/ada/libgnat/s-exnllf.ads
! 40005582305eab354d07b66cedafc34f  gcc/ada/libgnat/s-exnlli.adb
! 7577b32abaf85a0435ab25317df46c14  gcc/ada/libgnat/s-exnlli.ads
! 550c32a8a310c850b4fc1a45cf0e0bc3  gcc/ada/libgnat/s-exnllli.ads
! a39f656b5aa19dab9db1e78147fbe2a6  gcc/ada/libgnat/s-expint.adb
! 7084fdc494b444b53cd8582f8d757cb7  gcc/ada/libgnat/s-expint.ads
! ff04bdf220adfd8dff592d49f67e3120  gcc/ada/libgnat/s-explli.adb
! 1070b8be4b6eedf92e32b6b027705f88  gcc/ada/libgnat/s-explli.ads
! ece864b1e6a6c992b4dd208de1866beb  gcc/ada/libgnat/s-expllli.ads
! 16e99bd32924c07eaa4560e0e5d6d719  gcc/ada/libgnat/s-explllu.ads
! a41e2289ab3a66948d79d9061a3634e7  gcc/ada/libgnat/s-expllu.adb
! 80d807da414946b98007d7451ee3b8b8  gcc/ada/libgnat/s-expllu.ads
! 48cc9fb8213a4977f1474ec5b1665180  gcc/ada/libgnat/s-expmod.adb
! 2a895b6591092f8e28905e63c7717cfc  gcc/ada/libgnat/s-expmod.ads
! ade1881944ac7f2b6ffca03d72ed3290  gcc/ada/libgnat/s-exponn.adb
! f6fbf37c7634d754869b2b5a1a9bf2f5  gcc/ada/libgnat/s-exponn.ads
! ec1f7e5d78523eaa93fd326cdb72708e  gcc/ada/libgnat/s-exponr.adb
! af2d06e4f708e75d3c4fcf17b98c8530  gcc/ada/libgnat/s-exponr.ads
! c123040f443a6b00531866f5114c6c26  gcc/ada/libgnat/s-expont.adb
! e99b5fd0de20b514945fa862fdfea554  gcc/ada/libgnat/s-expont.ads
! 111ec256fa8c1c0e6ea6f0d97b1f22af  gcc/ada/libgnat/s-exponu.adb
! c30d5a68db95762d4e80b1d24f86848b  gcc/ada/libgnat/s-exponu.ads
! d917a0d634a6012c901a48d24c37c360  gcc/ada/libgnat/s-expuns.adb
! 3f029bd5abdc3234db1cb84602ea32a5  gcc/ada/libgnat/s-expuns.ads
! 0549254c13f17084773858b3c02d6f64  gcc/ada/libgnat/s-fatflt.ads
! febcb11be056afbe9d96bc8758f6e1a3  gcc/ada/libgnat/s-fatgen.adb
! e0d33d1b9a2ff42791fd0efcdcfc382c  gcc/ada/libgnat/s-fatgen.ads
! f54388a7dc3bbec017fa9a3bd79a592a  gcc/ada/libgnat/s-fatlfl.ads
! 768983755441c7b11d9a94bfc7d37856  gcc/ada/libgnat/s-fatllf.ads
! aeabfe8f953aa1565000d2af705c6eaa  gcc/ada/libgnat/s-ficobl.ads
! 28aede66d42d01b56b345c1184f64189  gcc/ada/libgnat/s-filatt.ads
! dd9118137769882d3c05f01557ed8273  gcc/ada/libgnat/s-fileio.adb
! 10b10841d66a55eb3c0c6a77465b9abc  gcc/ada/libgnat/s-fileio.ads
! 1cf5dda37fb00d046fe26c097f2f81ed  gcc/ada/libgnat/s-finmas.adb
! cf237e4155a13f45e0a132e1104fbe8b  gcc/ada/libgnat/s-finmas.ads
! a7f54dd2efa49fddbcfbae82bfc37aad  gcc/ada/libgnat/s-finroo.adb
! e264a749d5f58184d4c02393bc45f8eb  gcc/ada/libgnat/s-finroo.ads
! b8721219d270f18c717fbb452be034bf  gcc/ada/libgnat/s-flocon.adb
! 13d1e70ea243cb5f961c21853865dadf  gcc/ada/libgnat/s-flocon.ads
! 2513a31797c96d454e42c34eb6b02acf  gcc/ada/libgnat/s-flocon__none.adb
! 2e08fc5fdf88074725325b4fdd49fa1f  gcc/ada/libgnat/s-fode128.ads
! ccbc46e8e262607a0a1fe68976d54ef9  gcc/ada/libgnat/s-fode32.ads
! 16f0719e307936ea362049cd724735aa  gcc/ada/libgnat/s-fode64.ads
! 3e0db6f544e84fdebf8c7a1523d3e499  gcc/ada/libgnat/s-fofi128.ads
! bd47c98ccb741df41a26ea9e1a9235d5  gcc/ada/libgnat/s-fofi32.ads
! 149c344d1e664aff6cab8950566c4f8c  gcc/ada/libgnat/s-fofi64.ads
! 95f8930692850479ec81c2c72ae6a052  gcc/ada/libgnat/s-fore_d.adb
! d7bc02e237febb6118ce212e6e0ee23e  gcc/ada/libgnat/s-fore_d.ads
! 460f33d31d64ffe64edc24ffb47f0a0e  gcc/ada/libgnat/s-fore_f.adb
! 44748ce624e29e5425d8c6c6fe7a3807  gcc/ada/libgnat/s-fore_f.ads
! acc40e54527ba0b5dec1187603aeb881  gcc/ada/libgnat/s-forrea.adb
! 00c4d38d8cf6d623d42e6fdb476beafd  gcc/ada/libgnat/s-forrea.ads
! 60a5822d010aee4e55e55d597eda3e26  gcc/ada/libgnat/s-gearop.adb
! fe4f5adf8fad4353b6a48ba66fd7d0d2  gcc/ada/libgnat/s-gearop.ads
! d1bbd26208e7316042f076718df540fb  gcc/ada/libgnat/s-genbig.adb
! 4037a3a3aa3505e1b4a7dd2ded73c413  gcc/ada/libgnat/s-genbig.ads
! 0859dbf6104436779a155237bc09d5df  gcc/ada/libgnat/s-geveop.adb
! 87437b4dbf7aeaa86d578cdd39b476ed  gcc/ada/libgnat/s-geveop.ads
! 465d9aa38ade0256e60377c55e274100  gcc/ada/libgnat/s-gloloc.adb
! f6a2449c8c188805af2c186523eed0a9  gcc/ada/libgnat/s-gloloc.ads
! a654d781e268c27ae4ff5196393bbedf  gcc/ada/libgnat/s-gloloc__mingw.adb
! 9e94a1bbb0d0bdb5295341836b726204  gcc/ada/libgnat/s-htable.adb
! 52e28927311d91b3826914b6c3f626d7  gcc/ada/libgnat/s-htable.ads
! 5e83d02c725df7d26c18d5399ab73eb9  gcc/ada/libgnat/s-imageb.adb
! 33293ebd90a2387c03c409b59aa1f7f8  gcc/ada/libgnat/s-imageb.ads
! 4110b1a9ef9a19a4ddc87003698bb8f6  gcc/ada/libgnat/s-imaged.adb
! c3c0e093f037a75356697348fdb2f224  gcc/ada/libgnat/s-imaged.ads
! c99ed2ff1113e81a82f7c585148317bc  gcc/ada/libgnat/s-imagef.adb
! 4e2e8c2c2bb72df75712251c5bd11a0f  gcc/ada/libgnat/s-imagef.ads
! 78502c3c55c8681389f363f0f99d4aa6  gcc/ada/libgnat/s-imagei.adb
! 82528e4e8693f8fa5e7e2c1cbd225920  gcc/ada/libgnat/s-imagei.ads
! c248783472918e3780a50412f5f256d6  gcc/ada/libgnat/s-imagen.adb
! a1226b37008caa3aef0a729ec18308d4  gcc/ada/libgnat/s-imagen.ads
! 1f8e880e1a10c7b136b01f5ae41357fe  gcc/ada/libgnat/s-imager.adb
! 1fa9901b18b34c62a1b08a6c76a6ee4f  gcc/ada/libgnat/s-imager.ads
! ecd90c56af19cb124f12c9d9e4e18967  gcc/ada/libgnat/s-imageu.adb
! 59864f7fe23c0da550e7b6e4f1557c55  gcc/ada/libgnat/s-imageu.ads
! d5e39df4eb269af4ee9ea9773192e4b5  gcc/ada/libgnat/s-imagew.adb
! 3ce7635c980a09c9723ceeb5ae9432ec  gcc/ada/libgnat/s-imagew.ads
! c29cb2d381d661d8141c09b12689d951  gcc/ada/libgnat/s-imde128.ads
! ad2ab3c0d3c9f22666572ef47a5eedf0  gcc/ada/libgnat/s-imde32.ads
! 6068e3e1fbf0d35e5647939d33dbc2f5  gcc/ada/libgnat/s-imde64.ads
! a972a910488e2c33c1602719b63cd58c  gcc/ada/libgnat/s-imen16.ads
! f02864c77dbb7b28a2fbb0d483178e6c  gcc/ada/libgnat/s-imen32.ads
! 244b868671fc200131658341c4174568  gcc/ada/libgnat/s-imenu8.ads
! 88a9b6716551f9e8dd19fcae939b814a  gcc/ada/libgnat/s-imfi128.ads
! f107d5815fe25d8604adbccbbea7b03d  gcc/ada/libgnat/s-imfi32.ads
! a74442247a2621beb33946ccba74d7d9  gcc/ada/libgnat/s-imfi64.ads
! 6b42a36c89b29bc2bdcb29d5da163a4a  gcc/ada/libgnat/s-imgbiu.adb
! 5f4635f97ab88a57d2602dcddc9f9215  gcc/ada/libgnat/s-imgbiu.ads
! 06988c4bd910bc35e5b4055e50c440e5  gcc/ada/libgnat/s-imgboo.adb
! 690d8c26517b687f116eb53b971e6e2d  gcc/ada/libgnat/s-imgboo.ads
! ef8811ee2803c609c0da7b62e54f53a3  gcc/ada/libgnat/s-imgcha.adb
! b92c7a07205dda8fd7b30ea397f8403c  gcc/ada/libgnat/s-imgcha.ads
! 29aec41b10f1fb8d0eed6fe7e33e5ac2  gcc/ada/libgnat/s-imgflt.ads
! 108c0683813c2f60af26242d78f8909f  gcc/ada/libgnat/s-imgint.adb
! 9dbddb8d00ab9f9e2273d73c90757883  gcc/ada/libgnat/s-imgint.ads
! b437ec67a9fd5202de71d2414bec859b  gcc/ada/libgnat/s-imglfl.ads
! 3bd8261221c489e03d8f434974d3f63d  gcc/ada/libgnat/s-imgllb.adb
! d2145fc300ab3e6ddf67990e714b97d2  gcc/ada/libgnat/s-imgllb.ads
! 3150913dfaa00cbde3eedbba2295d575  gcc/ada/libgnat/s-imgllf.ads
! 7d02dee0b472191be4d435ee9c954c79  gcc/ada/libgnat/s-imglli.adb
! abd060c82e0850dd3050e87767452fb7  gcc/ada/libgnat/s-imglli.ads
! a369b5d12f6cc230c163730f09e748d3  gcc/ada/libgnat/s-imglllb.ads
! 6c797c6c8bc268815582089d52fc489d  gcc/ada/libgnat/s-imgllli.ads
! 8fe762070c5c8cb69041cc3c2fe84581  gcc/ada/libgnat/s-imglllu.ads
! 4e9396d71460457c05de8af8ae02035d  gcc/ada/libgnat/s-imglllw.ads
! 261a1bf3e5180a581363f4799aeb42f8  gcc/ada/libgnat/s-imgllu.adb
! d1623b79688968d51018f8f35bd5a3bb  gcc/ada/libgnat/s-imgllu.ads
! 159091037eca39b42d0154e06cce9bd0  gcc/ada/libgnat/s-imgllw.adb
! 68677a345d3bb6eec5995570b42a8c56  gcc/ada/libgnat/s-imgllw.ads
! 0afb72551507662093d8e541d99174f0  gcc/ada/libgnat/s-imgrea.adb
! dcd672a593149115b123305e2f12617c  gcc/ada/libgnat/s-imgrea.ads
! 5879b6d390f775a03c9eebc7728de6e5  gcc/ada/libgnat/s-imguns.adb
! 7313bc0afa67e7f65053478152252695  gcc/ada/libgnat/s-imguns.ads
! c5eff64e853fa1c0658819a1c5c06e19  gcc/ada/libgnat/s-imguti.adb
! b12acab510b0519b60d02b61c197500c  gcc/ada/libgnat/s-imguti.ads
! dc5202843e9952c7e0be0d1902c0154d  gcc/ada/libgnat/s-imgwch.adb
! 443107d1f5c32bd5827de75562b3c9d6  gcc/ada/libgnat/s-imgwch.ads
! d92d26cf0099d069bb9817558cdf6544  gcc/ada/libgnat/s-imgwiu.adb
! 512804175db551aa8ed04e9a30723d38  gcc/ada/libgnat/s-imgwiu.ads
! b5d301c90b3504735386b32652bbb5f4  gcc/ada/libgnat/s-io.adb
! f8771a912fd8892caf16e1acc41473bd  gcc/ada/libgnat/s-io.ads
! 21cf808f6d59ece94765bc2b53ef0cdb  gcc/ada/libgnat/s-llflex.ads
! 7b043b9e23e9e9b94acdd5b54846f9c2  gcc/ada/libgnat/s-maccod.ads
! cd0945e3f1b8b5672631c0d4f6fea742  gcc/ada/libgnat/s-mantis.adb
! 9c3ba55f2b23d652721bb8756c912bc1  gcc/ada/libgnat/s-mantis.ads
! d47f1d82c900ab2913ffa04628cf5251  gcc/ada/libgnat/s-mastop.adb
! 75d2df14266f386696c30ab6e6c5c557  gcc/ada/libgnat/s-mastop.ads
! 54a372db7e5a8b4561609aa38793a47c  gcc/ada/libgnat/s-memcop.ads
! 841d9daf473d16c4f06ce54aefb7232f  gcc/ada/libgnat/s-memory.adb
! 2fff590daba080fa8be51504c48a5f2a  gcc/ada/libgnat/s-memory.ads
! b51b34970421d9f1bc7dee44a342a576  gcc/ada/libgnat/s-mmap.adb
! 1777c748d8c461ecaa1ef461f8345bbd  gcc/ada/libgnat/s-mmap.ads
! 0e0b79b5f307fb95f42a24cea02d3c14  gcc/ada/libgnat/s-mmauni__long.ads
! a6256c2df80fd2b5d1dc6a792dabd781  gcc/ada/libgnat/s-mmosin__mingw.adb
! 1a87431c898ea8e9099ad0c9875dccdd  gcc/ada/libgnat/s-mmosin__mingw.ads
! d34a05e84678b2e61e578050f6c4e25e  gcc/ada/libgnat/s-mmosin__unix.adb
! 49396bb81cafe1be39cb90f6102a3bd7  gcc/ada/libgnat/s-mmosin__unix.ads
! e23a660cce72f1ca870962e27f1cc8ce  gcc/ada/libgnat/s-multip.adb
  c4045ad22005510940d70e1a445db431  gcc/ada/libgnat/s-multip.ads
! be4a11224b3a6c7ece4dbb755955474e  gcc/ada/libgnat/s-objrea.adb
! cb8ebba2259aca7ad7cb6ef39a8d04ee  gcc/ada/libgnat/s-objrea.ads
! 93cdbb5def6abc59034520d01371eb0d  gcc/ada/libgnat/s-optide.adb
! 009373f20d350b875325800ed72a7199  gcc/ada/libgnat/s-os_lib.adb
! 894375f24aa8ed568fd62fdb06e38328  gcc/ada/libgnat/s-os_lib.ads
! 565048ba7f89a293c8d03895f50eb4e2  gcc/ada/libgnat/s-osprim.ads
! 902a7e8d7c5c55fb5298d73e2ed62ef1  gcc/ada/libgnat/s-osprim__darwin.adb
! c8d26ca8f8c3ebed41ef1bbac1c7bdd0  gcc/ada/libgnat/s-osprim__lynxos.ads
! 18fc225a59cf0084ab2cee392e8a52d3  gcc/ada/libgnat/s-osprim__mingw.adb
! af33580cc3d4124827c638efd4417f0d  gcc/ada/libgnat/s-osprim__posix.adb
! 2cbdafa979adb679e722f7eb6798e96d  gcc/ada/libgnat/s-osprim__posix2008.adb
! c9df7620b102cf4c4f7b4955f1ccdca7  gcc/ada/libgnat/s-osprim__rtems.adb
! ef68aeff25ac1b0be0625eb1707c221a  gcc/ada/libgnat/s-osprim__solaris.adb
! d70661d7a483e7515218c271f3c302b6  gcc/ada/libgnat/s-osprim__unix.adb
! 17ba3fb02c3e07ebfc5142cdf9e81f9c  gcc/ada/libgnat/s-osprim__x32.adb
! c929653a7985f6887079a2b196a034e2  gcc/ada/libgnat/s-pack03.adb
! 24767752c49850e1b2c395a9eb000be5  gcc/ada/libgnat/s-pack03.ads
! a654befcf9c9b379bc90e614f637dee4  gcc/ada/libgnat/s-pack05.adb
! a2da7727257bf963524a63ab78976997  gcc/ada/libgnat/s-pack05.ads
! 3a0dd2fdd1872b5286e19bd57809a432  gcc/ada/libgnat/s-pack06.adb
! ffa0fea9fd605311bb0aea0f80a519ac  gcc/ada/libgnat/s-pack06.ads
! 3feb1b0598be0c3187ef0b8f50795a6b  gcc/ada/libgnat/s-pack07.adb
! 51730d82cbd3c1e08d05c80686eeda59  gcc/ada/libgnat/s-pack07.ads
! 517bf94bf24e5dc9b2754f3fac3a5b56  gcc/ada/libgnat/s-pack09.adb
! d60ffd8d277b29e8a5f91a09761f07cb  gcc/ada/libgnat/s-pack09.ads
! 5c7598c226a0ac5fb6a8dad91a98a420  gcc/ada/libgnat/s-pack10.adb
! d027de45067363d287fa5068b2b30cc8  gcc/ada/libgnat/s-pack10.ads
! bdfaeed955e084da93318b3d4b8f02cd  gcc/ada/libgnat/s-pack100.adb
! 3b0f2e83f906efcba50293cd0c36c1a0  gcc/ada/libgnat/s-pack100.ads
! 7eccd59c3097a7c951c8f855d44f9c0b  gcc/ada/libgnat/s-pack101.adb
! bbc53522905bc241cfa553d874ffeb93  gcc/ada/libgnat/s-pack101.ads
! 6e887331971365f7fe5a596bafc44516  gcc/ada/libgnat/s-pack102.adb
! 520af8519db21919537980953e6870e2  gcc/ada/libgnat/s-pack102.ads
! a68a9d305075c9bafa57d866258b4d79  gcc/ada/libgnat/s-pack103.adb
! 2a839f64ae180a0a105b0bd1d0095dce  gcc/ada/libgnat/s-pack103.ads
! 1d4d9a7b71fb95a59c26c03ceb14597f  gcc/ada/libgnat/s-pack104.adb
! ec2946f6d7affc435fe7336a43984da1  gcc/ada/libgnat/s-pack104.ads
! 49a870c761119ba8d43c9e17fa6d259e  gcc/ada/libgnat/s-pack105.adb
! a4051104163992869915ffb3252cbe4b  gcc/ada/libgnat/s-pack105.ads
! 960f2f190aa625ecc9e95a7dabf58bea  gcc/ada/libgnat/s-pack106.adb
! 607ffc4d5edac6af97d63463802c4442  gcc/ada/libgnat/s-pack106.ads
! ac08941bfeab4fd34cd9b26925987a9f  gcc/ada/libgnat/s-pack107.adb
! 6c85d94e937a28ddf008b57b82c1b337  gcc/ada/libgnat/s-pack107.ads
! d20b0185de58772f19938df75b5158ff  gcc/ada/libgnat/s-pack108.adb
! 0f74abaf3549afcfbf5bb9afa21c5edb  gcc/ada/libgnat/s-pack108.ads
! abd90d374f34253ca9a877f857304ee8  gcc/ada/libgnat/s-pack109.adb
! e673447cadd54db671d70064645808e3  gcc/ada/libgnat/s-pack109.ads
! 5e76a3588919d4d21b410d5ef0684394  gcc/ada/libgnat/s-pack11.adb
! 15e38fd6d50cadfe1b16dc44c0c156dc  gcc/ada/libgnat/s-pack11.ads
! 42a26947a9b1cf4d35a34fbb58ab3e23  gcc/ada/libgnat/s-pack110.adb
! 164e3f82f39b6cff5782af3068ed8cce  gcc/ada/libgnat/s-pack110.ads
! cb05df0aa2791e8e196d77f5f02403d9  gcc/ada/libgnat/s-pack111.adb
! 94c657031e508aa96a09ad29f4688641  gcc/ada/libgnat/s-pack111.ads
! 79c4b722d80f8480b72c5e4ae0b86179  gcc/ada/libgnat/s-pack112.adb
! dc068faf52bc83e2dcaf26f494918b34  gcc/ada/libgnat/s-pack112.ads
! bc8ce398341dcc6e563a4fc83b9de8d6  gcc/ada/libgnat/s-pack113.adb
! 707af8a3f1930bda64290de0f4cd19cf  gcc/ada/libgnat/s-pack113.ads
! d7993a21ad356a036791c584a89d08c3  gcc/ada/libgnat/s-pack114.adb
! ebdf88dfce6d6304965791554f478ae2  gcc/ada/libgnat/s-pack114.ads
! 670b442d8055dd6d38481a9fc24bce60  gcc/ada/libgnat/s-pack115.adb
! 3fa7d99cb011d3a340e99b5bbcac1763  gcc/ada/libgnat/s-pack115.ads
! 776d20a878538ec04ce8b12b0215a718  gcc/ada/libgnat/s-pack116.adb
! b630ac45543b20e69044eab19d0091d6  gcc/ada/libgnat/s-pack116.ads
! 5db3bca2b4e995071cf5c7d6b096165e  gcc/ada/libgnat/s-pack117.adb
! 57801edcdf6f86671193a92c8c9baa52  gcc/ada/libgnat/s-pack117.ads
! 3b8d15932303b2f6feb2a4fbd52e883c  gcc/ada/libgnat/s-pack118.adb
! d2160b718988a1fd83874e203f7ff652  gcc/ada/libgnat/s-pack118.ads
! 4724ab3bdfa917da7090d28929558f53  gcc/ada/libgnat/s-pack119.adb
! cca7294363cd61354c9d85a534621400  gcc/ada/libgnat/s-pack119.ads
! 2eb8fbe41b435a2b0d86928da9b8ab92  gcc/ada/libgnat/s-pack12.adb
! 14c1b10eab575acc3ea07de5cc381ccd  gcc/ada/libgnat/s-pack12.ads
! 09594bcd5c0cc941f50012c0698ca13b  gcc/ada/libgnat/s-pack120.adb
! a953490642f0507a32ac826e2ffe4c7d  gcc/ada/libgnat/s-pack120.ads
! 8c10286b95a3bc57af96e5a7ec76aa22  gcc/ada/libgnat/s-pack121.adb
! 1cb1e19a232c26b8cabcc26b13eed8ee  gcc/ada/libgnat/s-pack121.ads
! a62757574eeb1f8d05c8bfa635343ef4  gcc/ada/libgnat/s-pack122.adb
! a815f124d0cc54e8b96e2b0ae9acf9ad  gcc/ada/libgnat/s-pack122.ads
! b76b76b8617c025c0684db28bb681ed9  gcc/ada/libgnat/s-pack123.adb
! 44104e6294ed18289f97a24274d8e648  gcc/ada/libgnat/s-pack123.ads
! 4f0c12cdb4ab547b7ccdedfab34b779a  gcc/ada/libgnat/s-pack124.adb
! 9bafc93707d4535ddef1f63d1708b19c  gcc/ada/libgnat/s-pack124.ads
! 8e3baa4c12b05a13772c43c1d258fa3e  gcc/ada/libgnat/s-pack125.adb
! 5ea21bce575acda75a708f5abe7c3a27  gcc/ada/libgnat/s-pack125.ads
! c25140e8f77c0f855908870ab81c7cac  gcc/ada/libgnat/s-pack126.adb
! 829f04fd85a4c22b3f52fdba2067d588  gcc/ada/libgnat/s-pack126.ads
! 0500414f7f3a52f0efda52112cd9f71c  gcc/ada/libgnat/s-pack127.adb
! f8bdeea65d802f94cb765116b5aac321  gcc/ada/libgnat/s-pack127.ads
! 4ff41f79ab840ea8e7cf0385aa649e07  gcc/ada/libgnat/s-pack13.adb
! 4606cac37b4b6c8247d4c76860e26554  gcc/ada/libgnat/s-pack13.ads
! 01afe2aec63ef94d1b57698618b8fd5b  gcc/ada/libgnat/s-pack14.adb
! 59a3b0ed5e5345f8231d782af55a3881  gcc/ada/libgnat/s-pack14.ads
! 09ee1134d14d8821c9978ecc8e1e061b  gcc/ada/libgnat/s-pack15.adb
! 9534714ed0d434a2eebafcdfb8755eda  gcc/ada/libgnat/s-pack15.ads
! d1b2af5b105dc65973a80909e985eca7  gcc/ada/libgnat/s-pack17.adb
! 38fdafc17123651308241a991a833695  gcc/ada/libgnat/s-pack17.ads
! dcaf67ae6a016848386d09465a380beb  gcc/ada/libgnat/s-pack18.adb
! 9d9b4dd7f0db6c24b07335000d9c571d  gcc/ada/libgnat/s-pack18.ads
! 2d438053b67424ae377ce76c9b143355  gcc/ada/libgnat/s-pack19.adb
! 01d2ff49d9c4b73bf580c5b1f7f56efe  gcc/ada/libgnat/s-pack19.ads
! e4ecfda69f8d3c6e52128cd3a7e48533  gcc/ada/libgnat/s-pack20.adb
! d22bdb8753cbf5a77a0a455803a73f13  gcc/ada/libgnat/s-pack20.ads
! 6168a0f657ce2e05cfa4740aeda8f22c  gcc/ada/libgnat/s-pack21.adb
! f1cc98bce98ce25052089d8e9de03536  gcc/ada/libgnat/s-pack21.ads
! 25104519cefca2430da2c4a32771a060  gcc/ada/libgnat/s-pack22.adb
! 048064366efe0e06eb96b504aa5dd970  gcc/ada/libgnat/s-pack22.ads
! 09a8a0074ada35cfaeaf050d4ada694b  gcc/ada/libgnat/s-pack23.adb
! 83f9611ee8b50ca86a1e95496b9f8691  gcc/ada/libgnat/s-pack23.ads
! bf4a50306c88b4b83a93cf8d5cd90b47  gcc/ada/libgnat/s-pack24.adb
! 4348d191c8d32beab66ead0492ee813f  gcc/ada/libgnat/s-pack24.ads
! 96358278498d7a2f8c33e0b0b2aba5cc  gcc/ada/libgnat/s-pack25.adb
! 1968221adbb59a6fa2367b7d798408a4  gcc/ada/libgnat/s-pack25.ads
! 7539cc1f7f81b373ebbd56437afd6afb  gcc/ada/libgnat/s-pack26.adb
! 690304e63af4e639681922af6fa88b14  gcc/ada/libgnat/s-pack26.ads
! 5e68d3874102c24f39f2094300887afd  gcc/ada/libgnat/s-pack27.adb
! c1f41f41dfbd1b4d53e6c9162c0a04b6  gcc/ada/libgnat/s-pack27.ads
! 11663af6bdbc8cb3522afdcadc8fd022  gcc/ada/libgnat/s-pack28.adb
! 6602603b3da779ba2e77d568c47b205e  gcc/ada/libgnat/s-pack28.ads
! ef165de17e21f501d95c0479cdd18c97  gcc/ada/libgnat/s-pack29.adb
! 710a1c83f867d10b204f243026b4578d  gcc/ada/libgnat/s-pack29.ads
! 530c6338be341e7805241ebe502df3ef  gcc/ada/libgnat/s-pack30.adb
! af9d6aca958b7e3d710e395704045342  gcc/ada/libgnat/s-pack30.ads
! 50b2dbb758c45677e96bf8cd96b60e33  gcc/ada/libgnat/s-pack31.adb
! 5cedd806bff937f18b56c0f45bbf9492  gcc/ada/libgnat/s-pack31.ads
! 51b729ba7d77937904c832e9db659fe5  gcc/ada/libgnat/s-pack33.adb
! 4dccc994e3f0c808cc6605602b571c02  gcc/ada/libgnat/s-pack33.ads
! f4ad8579eeca414b5204111f9e253c8b  gcc/ada/libgnat/s-pack34.adb
! 7efffc549fa1f22c083c51b5e5656992  gcc/ada/libgnat/s-pack34.ads
! 39a655a1d6e13770aaf2afa400c244cf  gcc/ada/libgnat/s-pack35.adb
! d4e53474ae903536c5db0b2809c3dfa6  gcc/ada/libgnat/s-pack35.ads
! fe3b5ea39982a2e1573adc6db0566d11  gcc/ada/libgnat/s-pack36.adb
! 3f6f2584666a745dc317b108953e0bba  gcc/ada/libgnat/s-pack36.ads
! 47702e7e22cd3146f1ad804362d30fea  gcc/ada/libgnat/s-pack37.adb
! a688c3719b2743808cd9dcc52a79f8c5  gcc/ada/libgnat/s-pack37.ads
! 3a6afab8eefc58cf3d349fec510a46c4  gcc/ada/libgnat/s-pack38.adb
! f57d2dce1419a14dcd4515f7b27d2aa6  gcc/ada/libgnat/s-pack38.ads
! 622b9b9fdbe9d45965f24c6152921bd3  gcc/ada/libgnat/s-pack39.adb
! 37a368a690fb3547532225b890b4a927  gcc/ada/libgnat/s-pack39.ads
! 6faae2c8d051c8b4a7de6cd00808ed21  gcc/ada/libgnat/s-pack40.adb
! f3cba532260f604eeeedad1968a75728  gcc/ada/libgnat/s-pack40.ads
! eb45a463b83ff96519a6bf91054f08d8  gcc/ada/libgnat/s-pack41.adb
! 7f12d0f969e685c8a0058f3896d5f702  gcc/ada/libgnat/s-pack41.ads
! 8febef73691228f646f2b45860fc5ffc  gcc/ada/libgnat/s-pack42.adb
! fc336b9a7ecd1a73c5679be2c88303d0  gcc/ada/libgnat/s-pack42.ads
! dfe3cadd056026f541e22166ae4e169f  gcc/ada/libgnat/s-pack43.adb
! 6c53c5bfb2cf3e7f4cbce046ff1b5cff  gcc/ada/libgnat/s-pack43.ads
! 5a5024da581b0fc8f330f8a1a11a2e2e  gcc/ada/libgnat/s-pack44.adb
! f9a0fcf7fb0954af664219ed4f112a45  gcc/ada/libgnat/s-pack44.ads
! 932c45d65fe174b72b70c5227e7b1bd5  gcc/ada/libgnat/s-pack45.adb
! dcb6ab1ee1d5aab1e29e02ba9ea828dd  gcc/ada/libgnat/s-pack45.ads
! b72513013eac20da94c91520835d339f  gcc/ada/libgnat/s-pack46.adb
! 1ef00879b93406e74353bebba43501e2  gcc/ada/libgnat/s-pack46.ads
! d78dd09dfa36262e9fd07382fbee8f1c  gcc/ada/libgnat/s-pack47.adb
! 2bd9ffa22a6b8e8f1cb5396495ab73dc  gcc/ada/libgnat/s-pack47.ads
! 01bbeaa392bbfd35e472ea2626e938f3  gcc/ada/libgnat/s-pack48.adb
! 728347e774348186c247e944817fb8ff  gcc/ada/libgnat/s-pack48.ads
! 60b9026d97c6504539e7b4d1d8db4e1a  gcc/ada/libgnat/s-pack49.adb
! 5630d4cdb96ecf40a3e60beb35971e4e  gcc/ada/libgnat/s-pack49.ads
! aa9e337cb479d8257e14bd017488fb5c  gcc/ada/libgnat/s-pack50.adb
! a523a15ee2a95ad9cc115055db3b62c4  gcc/ada/libgnat/s-pack50.ads
! 34437dd5dfeb279ba7f6c3433125995b  gcc/ada/libgnat/s-pack51.adb
! c082e44423c5125ffbdfe4f120ec4434  gcc/ada/libgnat/s-pack51.ads
! 4f897ede377c05f241ccc363b3aff2ee  gcc/ada/libgnat/s-pack52.adb
! 837f4c8b92f073d80bf6377fb33b99a0  gcc/ada/libgnat/s-pack52.ads
! 0d6beb18fa509f81a33489dd2a43a7d1  gcc/ada/libgnat/s-pack53.adb
! 31b112db3f81e6bb57a97602243fd776  gcc/ada/libgnat/s-pack53.ads
! 6ad0ead9deaf4d1339b7f9c42681f2d6  gcc/ada/libgnat/s-pack54.adb
! dbf413c5f4a2e30ff0afb49ab1ba087e  gcc/ada/libgnat/s-pack54.ads
! fe21fdf4867c0a550c8c306d17ea54aa  gcc/ada/libgnat/s-pack55.adb
! b1b7a4fb3f500d77effe65e88c9d7efe  gcc/ada/libgnat/s-pack55.ads
! ed68c009da9d36de064999633d7b228f  gcc/ada/libgnat/s-pack56.adb
! 58ccf5db38a480e1f08e722fcc7bad55  gcc/ada/libgnat/s-pack56.ads
! 502f505140edeb275812e5cf8530c367  gcc/ada/libgnat/s-pack57.adb
! a07c4fa7084701650e26a973384c62fb  gcc/ada/libgnat/s-pack57.ads
! d0f6a6e3e783a55a557af9308feb6629  gcc/ada/libgnat/s-pack58.adb
! 73dd602a2f13e9ceaecfa03084ca12ff  gcc/ada/libgnat/s-pack58.ads
! 59de68a7bca2873f996f5d2eb6737c4f  gcc/ada/libgnat/s-pack59.adb
! 06ee0c5a2b8cdbe7211681ab99272673  gcc/ada/libgnat/s-pack59.ads
! 33c06fc1601e6e5d0e0a1f41755cd0ab  gcc/ada/libgnat/s-pack60.adb
! 41780ee91ccd49b6d330e3c9363da794  gcc/ada/libgnat/s-pack60.ads
! bdce5c871a976d1a7bb4a80f2a87e103  gcc/ada/libgnat/s-pack61.adb
! 3353b3bba2aa52b62e397aa9c4989df3  gcc/ada/libgnat/s-pack61.ads
! 5111e137f436eec2fb374a02f02a2cf1  gcc/ada/libgnat/s-pack62.adb
! 0077e726d29d9560143e37abd95b7b80  gcc/ada/libgnat/s-pack62.ads
! 6abd5d8e4a0828aef9a1a90dc64d91f1  gcc/ada/libgnat/s-pack63.adb
! f255334e7e603f7d13667e5a46751680  gcc/ada/libgnat/s-pack63.ads
! 84644efe9e68a5b77cd70dacb993df08  gcc/ada/libgnat/s-pack65.adb
! 314192b632b608cf6af05b9e65e1d516  gcc/ada/libgnat/s-pack65.ads
! 87fc7bafd9f4e3846c0285d85f7ba214  gcc/ada/libgnat/s-pack66.adb
! 19cec8f2e8a9118454b8f8d469df7270  gcc/ada/libgnat/s-pack66.ads
! 1cd3ea7c88002cf10125a5deac66e708  gcc/ada/libgnat/s-pack67.adb
! 7e1a55e6f1c2e3f21954a111f67f1c8a  gcc/ada/libgnat/s-pack67.ads
! 07a4f6562adee52bf204ec2388a43ecd  gcc/ada/libgnat/s-pack68.adb
! 18eec47a8d202bb2b3674f6a656bace0  gcc/ada/libgnat/s-pack68.ads
! a91ef7f9e48479736a5463cdb941a6ee  gcc/ada/libgnat/s-pack69.adb
! 4831765d3043ad3a8cbaef81661a1a72  gcc/ada/libgnat/s-pack69.ads
! 5e2e80ad286463618e48f0d1c6792dcc  gcc/ada/libgnat/s-pack70.adb
! d6721d6f5e2e12c15b0564631a11df50  gcc/ada/libgnat/s-pack70.ads
! b0ae1b3662133505fe4426ccd90a7ee2  gcc/ada/libgnat/s-pack71.adb
! d232a8b44ac153b21021266841c29d66  gcc/ada/libgnat/s-pack71.ads
! 85a5cd54dd219b209a6a45950f1bd584  gcc/ada/libgnat/s-pack72.adb
! c878348edd8ffb414094cb36553a08c1  gcc/ada/libgnat/s-pack72.ads
! 6ec0217f84789df21fd61c71bbfc92cd  gcc/ada/libgnat/s-pack73.adb
! cc9537a2e832d0fc4856fa2cf6f699b7  gcc/ada/libgnat/s-pack73.ads
! 53e1b220a0840f661139c2a24c170db1  gcc/ada/libgnat/s-pack74.adb
! b34b4cd7c04f6ab06097668f5c62d0f8  gcc/ada/libgnat/s-pack74.ads
! 5f8ccdae91a5ba811dd542a0f4f9d8d5  gcc/ada/libgnat/s-pack75.adb
! ee1df697660498feaa5b92319e6d7b03  gcc/ada/libgnat/s-pack75.ads
! ab32d50e99dc99182bc5710b75cbd194  gcc/ada/libgnat/s-pack76.adb
! bdd3eaedc2edc4dbc8b1696ced420b9a  gcc/ada/libgnat/s-pack76.ads
! 8d114740a61ca7f645850c667ab99891  gcc/ada/libgnat/s-pack77.adb
! 8cb2a362069972c1c5e424f23b433df6  gcc/ada/libgnat/s-pack77.ads
! 49822316e55f3e3565ba27d523661b29  gcc/ada/libgnat/s-pack78.adb
! 8939180ed0ce7328f74d569c798152cb  gcc/ada/libgnat/s-pack78.ads
! adae447b85dacc1fab11468e8c39d6ea  gcc/ada/libgnat/s-pack79.adb
! 3a7f968454f9739158bf9e8c4f0f3a32  gcc/ada/libgnat/s-pack79.ads
! a2c1c836be3471dc04858ecb30ec87ac  gcc/ada/libgnat/s-pack80.adb
! 0f36f02e492d8744c9841649e9430ce4  gcc/ada/libgnat/s-pack80.ads
! 8bf192f6e794023a810f2ca82a756a7d  gcc/ada/libgnat/s-pack81.adb
! defb95c9793d5cac8119038c8ba721dd  gcc/ada/libgnat/s-pack81.ads
! 2ef4a383460b2b300b6be358555f3b41  gcc/ada/libgnat/s-pack82.adb
! 200e7005daa2797762c0789046e51a08  gcc/ada/libgnat/s-pack82.ads
! af2d57984571025130df5e568e29f88f  gcc/ada/libgnat/s-pack83.adb
! 9fd513a6d4f4522b1843cde883f28e7c  gcc/ada/libgnat/s-pack83.ads
! b11109a969dcc2bad4fe2b1338b6b58e  gcc/ada/libgnat/s-pack84.adb
! c2786fa4f839d1391c7471dc29ca108d  gcc/ada/libgnat/s-pack84.ads
! 36d7a526c08f07046af9ddc9af28c4dd  gcc/ada/libgnat/s-pack85.adb
! ced93c4611d5daefc6f67d064a48c11e  gcc/ada/libgnat/s-pack85.ads
! 6d873542e32e024fc226c5073ac787fd  gcc/ada/libgnat/s-pack86.adb
! 68d2b8ae5295c5449afa8b437261ec05  gcc/ada/libgnat/s-pack86.ads
! 094370352dbfbe9e3f269a47eb307f5f  gcc/ada/libgnat/s-pack87.adb
! 1b5fd12b715f4e75b3c3f5639ee1dfe7  gcc/ada/libgnat/s-pack87.ads
! 7a0d1c059761813cb3e979eb77fca4e5  gcc/ada/libgnat/s-pack88.adb
! 833b30c762e665f63d87561c34accec1  gcc/ada/libgnat/s-pack88.ads
! 51742c2abde87b48df3a8871fc7eb361  gcc/ada/libgnat/s-pack89.adb
! 73c6ad0e45bfa70f7d3ea534391cf24d  gcc/ada/libgnat/s-pack89.ads
! 1e6ec64fe25aef9acbea5261f444ab6e  gcc/ada/libgnat/s-pack90.adb
! dd66d825371b2fb30bcf64a4777e241c  gcc/ada/libgnat/s-pack90.ads
! 60755cb0b23f74a69e072aa2ca63cd23  gcc/ada/libgnat/s-pack91.adb
! 005ef034f47f122dac747d2e70abcf0f  gcc/ada/libgnat/s-pack91.ads
! f3e4bad2f1174ce4b27fc5c2b3beb9a1  gcc/ada/libgnat/s-pack92.adb
! fafc4503755abc158b3a3db3e67f2411  gcc/ada/libgnat/s-pack92.ads
! 3942ed04a1db723c3d1f23d9c923b2f2  gcc/ada/libgnat/s-pack93.adb
! 2571c35e4ed0e15952029db095ff25ba  gcc/ada/libgnat/s-pack93.ads
! 6e204bf3ac9d492093fc98d7f280dcee  gcc/ada/libgnat/s-pack94.adb
! b0c994f291ff2c67890fd8f46afb49d9  gcc/ada/libgnat/s-pack94.ads
! 183579fa4091325fcf9d9ac0b8ee1379  gcc/ada/libgnat/s-pack95.adb
! 4e4e08e1952e0f3326fc1ec9075052a5  gcc/ada/libgnat/s-pack95.ads
! 8fbdd88b7147e47fda9f2d61546b87d3  gcc/ada/libgnat/s-pack96.adb
! 397293cb0cc4d89b9bb2c28278502723  gcc/ada/libgnat/s-pack96.ads
! dec30d1487facb049b6144db9ac7877b  gcc/ada/libgnat/s-pack97.adb
! 4a27bb56c65907e0b8371afd8c84928c  gcc/ada/libgnat/s-pack97.ads
! 384d86332caa835cda2d2230237d0008  gcc/ada/libgnat/s-pack98.adb
! 895b7a09b5dc8c5c937807e7bacf0e98  gcc/ada/libgnat/s-pack98.ads
! 5cae5bb744f91cf285b193bfe38a28bd  gcc/ada/libgnat/s-pack99.adb
! 9cdb8069b2fdf5f58de0db1418b09e70  gcc/ada/libgnat/s-pack99.ads
! 9c243f6b6cf451af8f13d7f26a814d95  gcc/ada/libgnat/s-parame.adb
! bc4f081d11f57349045205c2eb284251  gcc/ada/libgnat/s-parame.ads
! 9265ab6dde3d33d7ded66e62d670853a  gcc/ada/libgnat/s-parame__hpux.ads
! e84fd9b8f14494f79bf862cda3cf9cd6  gcc/ada/libgnat/s-parame__posix2008.ads
! 00735b071ae8e04c8414935f9027675e  gcc/ada/libgnat/s-parame__rtems.adb
! 21c270de219a8aaeb8fd7955fa9a9a5b  gcc/ada/libgnat/s-parame__vxworks.adb
! 13ba3ba4c4f9296c0b5424ed82014413  gcc/ada/libgnat/s-parame__vxworks.ads
! 2a2aa11365be3bdeb453ca8e2d5d843a  gcc/ada/libgnat/s-parint.adb
! 9c8fb5817dde45caf5f9e8eafaa65e02  gcc/ada/libgnat/s-parint.ads
! 7a35ae7e194ceeee0e84e687814ba4b2  gcc/ada/libgnat/s-pehage.adb
! c94402d5404ff17646b4a3b7349d501a  gcc/ada/libgnat/s-pehage.ads
! 8a2432c2572d3a3d6e58b4078182b70e  gcc/ada/libgnat/s-pooglo.adb
! 5d1201dff15f74194d481a665380e922  gcc/ada/libgnat/s-pooglo.ads
! 4593b8015a44f593edaef35724cd90ba  gcc/ada/libgnat/s-pooloc.adb
! 4c423934210cce16d5cdc4c6b5356412  gcc/ada/libgnat/s-pooloc.ads
! 1c3a0c6eeb161cc0853799a217f13b92  gcc/ada/libgnat/s-poosiz.adb
! f41515a892a512b248dccce2fdf06736  gcc/ada/libgnat/s-poosiz.ads
! 9692c9f280f6cef1c5765a43844a01b2  gcc/ada/libgnat/s-powflt.ads
! c0fb6fa9c1e7bd36b9587dc3c62cddd4  gcc/ada/libgnat/s-powlfl.ads
! 548334bcf4e535acecc5efa2bf70d4fd  gcc/ada/libgnat/s-powllf.ads
! a4834916531b11e1cf60e1b00352bfbb  gcc/ada/libgnat/s-purexc.ads
! c8e7ecf424b1f0c330d866dac2191464  gcc/ada/libgnat/s-putima.adb
! 8b2765e075c99ae1694303fb6b300de3  gcc/ada/libgnat/s-putima.ads
! 8a3ac546c451babad650db2b1a87203b  gcc/ada/libgnat/s-rannum.adb
! 89a1c8203aecc686556370959c807efe  gcc/ada/libgnat/s-rannum.ads
! 75586be724c39f1c44260af6c6b8b10b  gcc/ada/libgnat/s-ransee.adb
! e018d23294adfd1c6c7d66ab4c8ca60e  gcc/ada/libgnat/s-ransee.ads
! 701f902d20fb86cf6cdc436b7e55cb80  gcc/ada/libgnat/s-regexp.adb
! 7d6cf366c40366dede233463750a8edd  gcc/ada/libgnat/s-regexp.ads
! 2b6f8963af48a23bba762b1c0a7cd9d4  gcc/ada/libgnat/s-regpat.adb
! 0b059703129b7263f750f0fc30303829  gcc/ada/libgnat/s-regpat.ads
! 7ff82c22ca87053d07414369bce2aa42  gcc/ada/libgnat/s-resfil.adb
! 063236347c4cbac2e9e9f96fe272ecd7  gcc/ada/libgnat/s-resfil.ads
! 4ca022646101be37c3b4518668ff571a  gcc/ada/libgnat/s-restri.adb
! 419d296ce1e249ee278cb447d95aff82  gcc/ada/libgnat/s-restri.ads
! b42363410d88844d85cb7439c9a1bc89  gcc/ada/libgnat/s-rident.ads
! 1ea08a534d4893a07aacd1efe61c71cc  gcc/ada/libgnat/s-rpc.adb
! 82957b03e92c451bdec8261467a51713  gcc/ada/libgnat/s-rpc.ads
! 6973f21b8684cecf0b123afd0af26f2a  gcc/ada/libgnat/s-scaval.adb
! 9c4071a7cb651fcda328a74f16942945  gcc/ada/libgnat/s-scaval.ads
! 32a851d6cc39b3d971b5f90945012ce2  gcc/ada/libgnat/s-scaval__128.adb
! cecac13d18bf6a0bba385e987d1cde72  gcc/ada/libgnat/s-scaval__128.ads
! 55df3aa3d57952e68f3f98795254cbf1  gcc/ada/libgnat/s-secsta.adb
! 4bdf82a4986cf86890742b62aeaca1a2  gcc/ada/libgnat/s-secsta.ads
! e1f4f85abc22eeaa1944a1cd95a23862  gcc/ada/libgnat/s-sequio.adb
! 0b4a2db8216ab5d550598e55f73aa40c  gcc/ada/libgnat/s-sequio.ads
! 383878abf8fa57a7e27c5b3dece09cbc  gcc/ada/libgnat/s-shabig.ads
! 82a3c6728231e21c55a5bdfe241b4113  gcc/ada/libgnat/s-shasto.adb
! 0217d24cab43a433f5ba9f86b691a947  gcc/ada/libgnat/s-shasto.ads
! 107f794327cfbc7d097fc4f206f06ed5  gcc/ada/libgnat/s-soflin.adb
! 64812e18840c255af23e5ff2bee97735  gcc/ada/libgnat/s-soflin.ads
! 262162f79dc2336eec74261c564b333b  gcc/ada/libgnat/s-soliin.adb
! bbb28dbc1e4a310a6633d547d604e34d  gcc/ada/libgnat/s-soliin.ads
! 59d894ed9d7cc691a55779a021b9b66e  gcc/ada/libgnat/s-spsufi.adb
! 6bc14f9cc7e0ede934e0f93ee5af0d76  gcc/ada/libgnat/s-spsufi.ads
! abc108f659656fdbcca9eabf4364c9d4  gcc/ada/libgnat/s-stache.adb
! 4a2695ad3528333026a4e837a88386fc  gcc/ada/libgnat/s-stache.ads
! 69e985aebb4b17e451ae950c28c73689  gcc/ada/libgnat/s-stalib.adb
! aa9b7fe0fb94fa18e5ec936f0137d541  gcc/ada/libgnat/s-stalib.ads
! cc8e11f87c04e9692a0fa83686e8f699  gcc/ada/libgnat/s-statxd.adb
! 9f72c621f819241c3365d2ba0f91281e  gcc/ada/libgnat/s-statxd.ads
! 08711e98a346fc595d4614ccf926fe0b  gcc/ada/libgnat/s-stausa.adb
! b3d21d06fdbf31e18eb06b97a4b67237  gcc/ada/libgnat/s-stausa.ads
! 28fdb19b0ac5f713d9da3847cd1417f2  gcc/ada/libgnat/s-stchop.adb
! c7b3a3ef6e99da38f7fcd56d1a8651ae  gcc/ada/libgnat/s-stchop.ads
! 52b78f3064dbb7580b516b076b30e9e7  gcc/ada/libgnat/s-stchop__limit.ads
! f9f70aca8261c7bd8117d3403fca3c8c  gcc/ada/libgnat/s-stchop__vxworks.adb
! c7cc66a303d6f94cda1f5b02138fb89e  gcc/ada/libgnat/s-stoele.adb
! cd006d4ea979780b32312a21172ac416  gcc/ada/libgnat/s-stoele.ads
! f4932a6c833412abf81404cf276f6474  gcc/ada/libgnat/s-stopoo.adb
! 3a3ac9e214980884f3bb21b33506945c  gcc/ada/libgnat/s-stopoo.ads
! 38573b294df285aafa7a1864f5c9ca86  gcc/ada/libgnat/s-stposu.adb
! ec5e983c0a931039b9bfeaafacaac781  gcc/ada/libgnat/s-stposu.ads
! 56bb157b3c636c0784a96bb4e408adec  gcc/ada/libgnat/s-stratt.adb
! 90c5c20492e0c3b6c914afc279b33d41  gcc/ada/libgnat/s-stratt.ads
! 55e0627a7567b9b2d797929440e8e42a  gcc/ada/libgnat/s-strcom.adb
! a78a4cc42c67b76249a3a7fe05af8817  gcc/ada/libgnat/s-strcom.ads
! 647db4dfed8172018810f39c9e6c5b54  gcc/ada/libgnat/s-strhas.adb
! 4eab7ef00fe09906d525d9001c7886ea  gcc/ada/libgnat/s-strhas.ads
! 9a457858168eb0a581b9e591fff49392  gcc/ada/libgnat/s-string.adb
! 8e11ec315c163f360e0209e643f1e492  gcc/ada/libgnat/s-string.ads
! 56a47f8efb871cec1217750c03378504  gcc/ada/libgnat/s-ststop.adb
! 50eb94ab13c9883485cf4f3f4ca981f8  gcc/ada/libgnat/s-ststop.ads
! 32d7e3e5257191b172c093407a7a69a6  gcc/ada/libgnat/s-tasloc.adb
! 74ef8b98a3bd5e196d42f46bd55ca4a8  gcc/ada/libgnat/s-tasloc.ads
! aaa28a79a3801820f8ff2cbeb394cf00  gcc/ada/libgnat/s-traceb.adb
! 71733d9b8c1db0c98e8b474b49810035  gcc/ada/libgnat/s-traceb.ads
! f116d856450d1fb4876ca0af023e4d2f  gcc/ada/libgnat/s-traceb__hpux.adb
! fb8da2a42385a663b580915eece8173d  gcc/ada/libgnat/s-traceb__mastop.adb
! ab40f438ff83c9ec4378fb1a22bbd8de  gcc/ada/libgnat/s-traent.adb
! 59b1f239bd02494269def8e0a9d3feee  gcc/ada/libgnat/s-traent.ads
! 4ab5bc94a78ea511321d00b1db942f92  gcc/ada/libgnat/s-trasym.adb
! 2e1fe08efee40a9e7ed44dffa0aedef5  gcc/ada/libgnat/s-trasym.ads
! 9d7dcc3b9e1fd352545d96b68aed67e1  gcc/ada/libgnat/s-trasym__dwarf.adb
! 6bf568167a14b8c31d8eb05d73e10713  gcc/ada/libgnat/s-tsmona.adb
! ef9653ab0a68eedb3f35ac9745a9f21b  gcc/ada/libgnat/s-tsmona__linux.adb
! a2c4a07d4f9169821202248580e431a8  gcc/ada/libgnat/s-tsmona__mingw.adb
! 956bf45d6708e37716f1ef0a58e81e47  gcc/ada/libgnat/s-unstyp.ads
! 43107c2117ea8a7d80ef3d6f6eadfb70  gcc/ada/libgnat/s-utf_32.adb
! 2f1fa43478e6ec7d206dcdd664534010  gcc/ada/libgnat/s-utf_32.ads
! 7085a0dca50e532e89f73bc918d148f1  gcc/ada/libgnat/s-vade128.ads
! 45dead57159c79c3b06fd2e23c76b21a  gcc/ada/libgnat/s-vade32.ads
! b26cb72fba08634fff060ffd9eed12c3  gcc/ada/libgnat/s-vade64.ads
! bdd6d20803191986f06e0ca78e09a2be  gcc/ada/libgnat/s-vaen16.ads
! 14f7c7de79024a7447ce8940274cdf04  gcc/ada/libgnat/s-vaen32.ads
! 944ad725722900c2f0332edcf8c03520  gcc/ada/libgnat/s-vaenu8.ads
! e4fb744ac18f148409f47f9ac4092857  gcc/ada/libgnat/s-vafi128.ads
! eb14c979a017c4ba2768773fb0108c19  gcc/ada/libgnat/s-vafi32.ads
! efa49bc674b7989e5ff38d7341563c8f  gcc/ada/libgnat/s-vafi64.ads
! c0f4f5eac3217fb737aada72b011e1d7  gcc/ada/libgnat/s-valboo.adb
! 3fc4f5fd793898555dcd088f67cc354a  gcc/ada/libgnat/s-valboo.ads
! 81efdb6a682f6fe20d05d45b2afd81ef  gcc/ada/libgnat/s-valcha.adb
! 5c28b91964ac3eca7223cfb6d8c73d58  gcc/ada/libgnat/s-valcha.ads
! b6b6a1d1fef57396a226efcc85142c06  gcc/ada/libgnat/s-valflt.ads
! 2b10daf435b430e1ab14b2225bce6ce9  gcc/ada/libgnat/s-valint.adb
! 1f891895114a65e5d781e7a50b3b3ace  gcc/ada/libgnat/s-valint.ads
! 4b0404cd71b02c867099f452bcd0d1c2  gcc/ada/libgnat/s-vallfl.ads
! 17e2df66dd116d997886c665637d01f2  gcc/ada/libgnat/s-valllf.ads
! 14dd52d78b28fc1f380952751c6d081a  gcc/ada/libgnat/s-vallli.adb
! 9367ca2797e519947c702393a0c046ab  gcc/ada/libgnat/s-vallli.ads
! 8f74b03051758fb8b0a070a1ca679b96  gcc/ada/libgnat/s-valllli.ads
! 4c6a215805b3615a998a10f5a3f78bc7  gcc/ada/libgnat/s-vallllu.ads
! e306206da415090be53e94cffb57a62b  gcc/ada/libgnat/s-valllu.adb
! ddec337ab42ee090fc748c0394d28082  gcc/ada/libgnat/s-valllu.ads
! 3cff4a95465642f1b6ac9f2a364b4bda  gcc/ada/libgnat/s-valrea.adb
! 47271631aed59b91f1169a5c3d40a577  gcc/ada/libgnat/s-valrea.ads
! 9939984d95de1aa739ffbda021ff84e0  gcc/ada/libgnat/s-valued.adb
! e25b256b59f85cc516b0763f978f1e07  gcc/ada/libgnat/s-valued.ads
! 9b900c480fc651421a3df71f7934a486  gcc/ada/libgnat/s-valuef.adb
! ee6f5600e2c654a71837b9577e6bb76d  gcc/ada/libgnat/s-valuef.ads
! 5836aa39045d1857673ebd5e44f4bae3  gcc/ada/libgnat/s-valuei.adb
! f6153c315bf48f052b20da07726a8719  gcc/ada/libgnat/s-valuei.ads
! 11271d7669659bb032578df130c32b29  gcc/ada/libgnat/s-valuen.adb
! f21895494733328cea9737cf9b5ef35a  gcc/ada/libgnat/s-valuen.ads
! 98563fab5cfd23417a724019131ace61  gcc/ada/libgnat/s-valuer.adb
! 62838351bfc56f11ddc2108c8559b9ec  gcc/ada/libgnat/s-valuer.ads
! 8e3bec155282a8410cc8a6549f5a8332  gcc/ada/libgnat/s-valueu.adb
! 7c9d11c6a7c5575e351c8286bc534ffd  gcc/ada/libgnat/s-valueu.ads
! 2f6183e818352491eb1262b8173e745f  gcc/ada/libgnat/s-valuns.adb
! 745ffa95c1b4f3ec3567ec1247639f96  gcc/ada/libgnat/s-valuns.ads
! 0af69934ac0b849d8a4349fb4feffe1d  gcc/ada/libgnat/s-valuti.adb
! 686ba984f6f24658dbcc776b2f5c911c  gcc/ada/libgnat/s-valuti.ads
! 5b9973eef7153282d19ca764d2c6a6ec  gcc/ada/libgnat/s-valwch.adb
! 0441a0498cc076a73bf261846032fbf1  gcc/ada/libgnat/s-valwch.ads
! fb05d675ef0d3f740077fefbcdad74f2  gcc/ada/libgnat/s-veboop.adb
! 4af508eb69d3ce1af7db460856aecf38  gcc/ada/libgnat/s-veboop.ads
! 04af14fa34e99ae0b9e7047c43bec7b1  gcc/ada/libgnat/s-vector.ads
! 7d8b084a272820d83dbff013d7120320  gcc/ada/libgnat/s-vercon.adb
! a8dc8fe6d6005d0efd9b91df8b42f3a4  gcc/ada/libgnat/s-vercon.ads
! d62722fbcfddd305dff65db1e3b9fba8  gcc/ada/libgnat/s-wchcnv.adb
! 5c5e0e634468a33856b375f36f1f55b5  gcc/ada/libgnat/s-wchcnv.ads
! 2a22f96103841c380c9f99b838ea3833  gcc/ada/libgnat/s-wchcon.adb
! c4403e9cb27435a1b07ca360afd349ea  gcc/ada/libgnat/s-wchcon.ads
! 91a3083f01ac58027731231d7f985977  gcc/ada/libgnat/s-wchjis.adb
! e8b4c1148d50aca082bd233acb77b5ac  gcc/ada/libgnat/s-wchjis.ads
! 98f78645a830b263e2d3974d3afea7f3  gcc/ada/libgnat/s-wchstw.adb
! d8874e29cbbad721e66cc205e714c3fb  gcc/ada/libgnat/s-wchstw.ads
! af417bb81ee4fa50eb6a70194875c97b  gcc/ada/libgnat/s-wchwts.adb
! f816f7753762b8c1f0220cfe89ad9f77  gcc/ada/libgnat/s-wchwts.ads
! e0364dffe89c64be4eaa7156a56beb35  gcc/ada/libgnat/s-widboo.adb
! 29f8ede63f88d74ee79e98eea42d1a39  gcc/ada/libgnat/s-widboo.ads
! 3d545619cb267c31b6aba1918255dbb2  gcc/ada/libgnat/s-widcha.adb
! 05d5175b50b57ff4fc70b72ecc7fdfc7  gcc/ada/libgnat/s-widcha.ads
! eb812e18f2b4629a8528536a0d25c56e  gcc/ada/libgnat/s-widenu.adb
! 619e2e15bd156a4242f30df09a4bf277  gcc/ada/libgnat/s-widenu.ads
! 55336dce3eced562cb757d496049f724  gcc/ada/libgnat/s-widint.ads
! 90243ee2fffc47b43fbeff9337c1ce79  gcc/ada/libgnat/s-widlli.adb
! f89cef2fa87e8f60f1344d17208fa7e6  gcc/ada/libgnat/s-widlli.ads
! 3822d0965fd55dd4ac6a46ef4de0180a  gcc/ada/libgnat/s-widllli.ads
! 575d80dbc5bed2247a65b14fdefe5fd7  gcc/ada/libgnat/s-widlllu.ads
! 96a06854d3cfb2236155636ee9dc9bb5  gcc/ada/libgnat/s-widllu.adb
! c62a7c4b40b09d2e14f58954192c3939  gcc/ada/libgnat/s-widllu.ads
! 1792488d68133b6f1c8e928b093505a1  gcc/ada/libgnat/s-widthi.adb
! acdf492aff8c7fb06441fe6fcb17bc83  gcc/ada/libgnat/s-widthi.ads
! 7f8e2ad3e24954a8b7064d86be80d83a  gcc/ada/libgnat/s-widthu.adb
! 94f7a022c20e3c251d203a01291a7269  gcc/ada/libgnat/s-widthu.ads
! 4f6620d1c3990127ba9301200cfcfa13  gcc/ada/libgnat/s-widuns.ads
! a14d2455812396df36dd783f8bb555fd  gcc/ada/libgnat/s-widwch.adb
! d244099bebf71c384d4fd1f930ceaef9  gcc/ada/libgnat/s-widwch.ads
! a0335dc710fd6c12b511f7c26c46efc4  gcc/ada/libgnat/s-win32.ads
! 231805a8c7c248fa4ae7b901974c5394  gcc/ada/libgnat/s-winext.ads
! 5092c84c10dae2f00bfb1abd8ffa2c9a  gcc/ada/libgnat/s-wwdcha.adb
! 60308032d7b2f0faeeb531b4a2d21af9  gcc/ada/libgnat/s-wwdcha.ads
! f464358d73d6c0292724fef010da9607  gcc/ada/libgnat/s-wwdenu.adb
! 6189de89079abc7ae09507912e51c5b9  gcc/ada/libgnat/s-wwdenu.ads
! 0100b226ea6a2f7f848117bd082d506d  gcc/ada/libgnat/s-wwdwch.adb
! 62746a77b83de88f98ac0160c6cd4b9e  gcc/ada/libgnat/s-wwdwch.ads
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! d32a674a78be780fa45e5c667c586295  gcc/ada/libgnat/system-aix.ads
! 62f025f5445951e97e5610e80ad7314d  gcc/ada/libgnat/system-darwin-arm.ads
! f369ec2979e2b7f4a7374288b679fcef  gcc/ada/libgnat/system-darwin-ppc.ads
! 7054ff226dacb7b956291dc716a7c2ea  gcc/ada/libgnat/system-darwin-x86.ads
! d3a4ef0833f23e3a6cef864a04211ce3  gcc/ada/libgnat/system-djgpp.ads
! 431ef52c82801f6e7583a30747cde122  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 98dffdb5615de58ceafc81854d21fbd1  gcc/ada/libgnat/system-freebsd.ads
! 08edd2c9157628f5b010704e3ceb5ca3  gcc/ada/libgnat/system-hpux-ia64.ads
! 1223deb2d104398091040c2422669abd  gcc/ada/libgnat/system-hpux.ads
! 03684e8e1a71eb6f70513a8b0c5cedc3  gcc/ada/libgnat/system-linux-alpha.ads
! 0e10e43dd3fb5902d2124515e4aaaaea  gcc/ada/libgnat/system-linux-arm.ads
! 60d4a9e9331c9391139f29b8fc17fac5  gcc/ada/libgnat/system-linux-hppa.ads
! 3ad9c0a1ae3012024c3b071e9224014e  gcc/ada/libgnat/system-linux-ia64.ads
! c151a89b901a605e324d70c95141d1af  gcc/ada/libgnat/system-linux-m68k.ads
! e2ee048a88639440a82358846a05aff9  gcc/ada/libgnat/system-linux-mips.ads
! b6b1660d2a1cb064a01668bfd703931a  gcc/ada/libgnat/system-linux-ppc.ads
! aea36ef4376ac7fef38c1f3845b5bc0d  gcc/ada/libgnat/system-linux-riscv.ads
! 95da5182ebd679f4a9a6064fc49458f3  gcc/ada/libgnat/system-linux-s390.ads
! e3f46264c5bb0ae1f6b1212dfaae9b67  gcc/ada/libgnat/system-linux-sh4.ads
! cbc03f7a9f430ad6e5d85128ae51c9a2  gcc/ada/libgnat/system-linux-sparc.ads
! c726e8f424c2e6db110969a4e6bee34a  gcc/ada/libgnat/system-linux-x86.ads
! 97b28a1a2fa7e30de8564f5e3bdebee3  gcc/ada/libgnat/system-lynxos178-ppc.ads
! 36b2973eb6f27c03433a93b3ae4063b9  gcc/ada/libgnat/system-lynxos178-x86.ads
! 8a80bf329d88104be3761d09194d4479  gcc/ada/libgnat/system-mingw.ads
! 1626ce9c92a722a3cd527f0622682142  gcc/ada/libgnat/system-qnx-aarch64.ads
! 5faa41f8c97d7192172b65806b676e23  gcc/ada/libgnat/system-rtems.ads
! ce8812cd95c5005c97a303de80271095  gcc/ada/libgnat/system-solaris-sparc.ads
! 61996a8c629ae813935bf399eefb3bb2  gcc/ada/libgnat/system-solaris-x86.ads
! 0ef9bfe9bc393570e9ebbdd10adcc3bc  gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
! c02cad7f8c166d31cba9f1285335022c  gcc/ada/libgnat/system-vxworks-arm-rtp.ads
! 85a8185666db797cff21014baf8e5723  gcc/ada/libgnat/system-vxworks-arm.ads
! f577fff8370a6d2c0e27ad763c23adf1  gcc/ada/libgnat/system-vxworks-e500-kernel.ads
! f6f6487c2c86812bc2f2381bb80481d0  gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
! 76d13f5da99a0fca1934ce15eac5b3a5  gcc/ada/libgnat/system-vxworks-e500-rtp.ads
! 4808c12bde90ba7a51d32d4dbcb7bc49  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! aaa91aa055cf7de5c2f15a665aa84fee  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! 8cfb240c7b4341d9a8f749c317d130cf  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 53c006afd0735d87ecdb4bffdd4cc99c  gcc/ada/libgnat/system-vxworks-x86-kernel.ads
! 93c9d8f11949e73b4e0bcc58a1fa63df  gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
! b07bdeb92d65a431a884db682aa3b33e  gcc/ada/libgnat/system-vxworks-x86-rtp.ads
! b3a7e79f4a18be9db236cdb3b649e889  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! eb0888171ee0830610b10824d1501f17  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! fa1ab8423e0026724fbc3d5c7c8d009c  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! 85a8185666db797cff21014baf8e5723  gcc/ada/libgnat/system-vxworks7-arm.ads
! 3007e2b20cc591154270f68d3425ec7a  gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
! d4a6e4d13fa0946c804debdd8191d58b  gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
! f063603154860a55fd55c9f004dcea9a  gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
! 756eb60665562bee11985765039504de  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! 4dda164ab1d86c02d0377dfadac765f9  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! 39bd39b282dde733325c131f93778a1d  gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
! 782e454f1a7002715943b9c37c9a5581  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! 6b14229b2f45ecbbff4969fa79b113ab  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! ba06d37a722fe587ded13be80c0e5aa2  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! a027a342a5cb024211caa44b5cd8d6cf  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 08875beab5fa27ddc161fb21e5ef331f  gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
! c9770c051453cc2493230f97b8b32290  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! b87922b9874ccaf810d676e5f604638b  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  2dc890e2791f7e9d6e1e9ca1cfb55c71  gcc/ada/libgnat/text_io.ads
  9a646eb97c6840de5d4bbb081dd2031a  gcc/ada/libgnat/unchconv.ads
  b8b0f9c3471d18ee5ac33521fe6f6d31  gcc/ada/libgnat/unchdeal.ads
! da79c65bc1cd504d30fa3f8b47e79651  gcc/ada/link.c
! ada06d2d8d6638f58a1cee5a5e17d6d0  gcc/ada/live.adb
! 63de46074dbec75bae4332e47f60c9bc  gcc/ada/live.ads
! 70ae6226c4ae0bcd5e2dd100ba54104c  gcc/ada/locales.c
! 575111e0d536cdec99c563c4ccd3934d  gcc/ada/make.adb
! a7839b7e0d424c7e4c4fce09ffd2aaff  gcc/ada/make.ads
! 6c1c403c83a1e73c44bf7f512f020916  gcc/ada/make_util.adb
! 3a4ea2382e32ddb06aa73fc1c5ac4c65  gcc/ada/make_util.ads
! 6c56b14091a3f8c5e5fa0f99cb3fd8f4  gcc/ada/makeusg.adb
! beaf9598c47fdb2cd31deb853adc2080  gcc/ada/makeusg.ads
! 999cb2c5c43a07691b5f40f0e2064fc4  gcc/ada/mdll-fil.adb
! 7cdefd0c951e8e4f559a08d11dafd7ab  gcc/ada/mdll-fil.ads
! 1372c16ad7029744a8387c23baca37d4  gcc/ada/mdll-utl.adb
! 19dccb6db878e09409dc1b11e97a1841  gcc/ada/mdll-utl.ads
! 1b929b926bb2eff5ca331b72dab58f04  gcc/ada/mdll.adb
! 587869307c058f24e881916b7251d4fb  gcc/ada/mdll.ads
! c04c493dd0ef5ae90a4d07f8f3310182  gcc/ada/mingw32.h
! 3cdd4847a3bb0afc46e0cabad926c432  gcc/ada/mkdir.c
! d4195f932699d9f15d453637644edddc  gcc/ada/namet-sp.adb
! 0b0cbd8738d6209d646b22ca17a0b817  gcc/ada/namet-sp.ads
! fb8ebb5f00774fa65c71030168dd5fcc  gcc/ada/namet.adb
! 9ddb078efa8a3755d06e02cbed9b727f  gcc/ada/namet.ads
! 7d16d29523da1855daf142426cbc4e26  gcc/ada/namet.h
! 9bc537654decacfee72745789e5f7fb1  gcc/ada/nlists.adb
! ee36797a701095f914afeb20d5a5599a  gcc/ada/nlists.ads
! b22d48dec3cb1adffb52deb8e4161598  gcc/ada/nlists.h
! e95afdeb03ecb018b52648561a403544  gcc/ada/opt.adb
! 06986356c231ee170a8163d5990c44c8  gcc/ada/opt.ads
! 03ab82809d059536b06d3c3900af8b0e  gcc/ada/osint-b.adb
! fea6a45343f58e807a7f7992748a9c05  gcc/ada/osint-b.ads
! 50f8e7e89c1f4b7e81cf9314aa76b6fc  gcc/ada/osint-c.adb
! 0841ef1790829f0430429eb80b4a5d6f  gcc/ada/osint-c.ads
! 1fbfe3fd74f4a3cc06eb2ecee9d62072  gcc/ada/osint-l.adb
! 17aaa737408f260004fde1dc5907b19a  gcc/ada/osint-l.ads
! 76df6484e05f0fdd8af1a577d9b99a89  gcc/ada/osint-m.adb
! 3b9e2acb0f0347e8596cc1842d336c87  gcc/ada/osint-m.ads
! f6f8217dad5d3e98b9a014bd77953e3b  gcc/ada/osint.adb
! 4173c8115d8c0486d9dbbd7fca7be8b9  gcc/ada/osint.ads
! 07c5813f9b5237627d4e565a0655c09c  gcc/ada/output.adb
! 3279b919a3966167173bb0d912e5578b  gcc/ada/output.ads
! 3691ad909d2e735f4213f8a34b86e2b7  gcc/ada/par-ch10.adb
! 6fd8fa8afb17e611d132db1e0e7e5789  gcc/ada/par-ch11.adb
! 0cc454a6bcc0c61d0d91e7edcaf891cb  gcc/ada/par-ch12.adb
! d347c63b2fe79723bfe87da9cf6e9ed5  gcc/ada/par-ch13.adb
! 5ed416d8d09d540a2d13b324cae27030  gcc/ada/par-ch2.adb
! a305101d3ee956a06fac16bc21895f5a  gcc/ada/par-ch3.adb
! 329f5d81f7d2572022b42bbfaf11ff75  gcc/ada/par-ch4.adb
! 6feb564918bbbae475fa263faf128248  gcc/ada/par-ch5.adb
! f72a948f8600b917a49036057f4dabae  gcc/ada/par-ch6.adb
! 85a1c8df50de764975818c7005e6f2c9  gcc/ada/par-ch7.adb
! e9bd35b32b663d7ab79c9f009b27a047  gcc/ada/par-ch8.adb
! fec387e10ac9dc4f6c91f1ff590bd548  gcc/ada/par-ch9.adb
! 41ad08478eee69e143a4baaf843ac7b1  gcc/ada/par-endh.adb
! 51fa2467ed0b53748e973f27d9d5efbc  gcc/ada/par-labl.adb
! feddc3776f56f394c11be93839eda2d5  gcc/ada/par-load.adb
! 98216448db84209e5dfa54fe514d747d  gcc/ada/par-prag.adb
! 1a0d368815cdaa889aa63ccd703c6915  gcc/ada/par-sync.adb
! 26834127738433343075c17fbd5cb1c7  gcc/ada/par-tchk.adb
! 01f6a078e6226826f9fd365417ed5db8  gcc/ada/par-util.adb
! bb417c6dd33d781c8b77fabadbca023b  gcc/ada/par.adb
! f6c0bd501f85ef3c38ab7c370ee8303a  gcc/ada/par.ads
! 59693345eda5680d2439a48f3bf70ef6  gcc/ada/par_sco.adb
! ae873427abf1e52123bc56f5b458c55d  gcc/ada/par_sco.ads
! a8b0c75ac49c1b02954afb8d70392d6e  gcc/ada/pprint.adb
! 418a3a0780e3d49407487d681f24478e  gcc/ada/pprint.ads
! eb2314a13eba635c369ea7e300221b20  gcc/ada/prep.adb
! 608f98f215e3e4e27a95a8c3051416a9  gcc/ada/prep.ads
! 12b49d128d3cb0d91b90757b67559098  gcc/ada/prepcomp.adb
! d53698ae9cd62c9875df437799b1c81e  gcc/ada/prepcomp.ads
! 661aaeb5a5cc5393e896c1db7d94b682  gcc/ada/put_scos.adb
! 3ac16ef47fa75f7e2cf04363398c45f9  gcc/ada/put_scos.ads
! 16909d1824435e11af39feebd67df6f9  gcc/ada/raise-gcc.c
! 7a15f4ba106a2b5df185709b3ad26afe  gcc/ada/raise.c
! ad5b31e81585c31308be786877191424  gcc/ada/raise.h
! 3dd8e27b0d2c3d9324365d44e5d13f1f  gcc/ada/repinfo-input.adb
! e49bfc0e2ca91f3619403816c4680d13  gcc/ada/repinfo-input.ads
! 00348a758e14bc06d7f93fb3c60acdca  gcc/ada/repinfo.adb
! 0f4db0fd7abce5c16b94c38bda02e179  gcc/ada/repinfo.ads
! 5771e11c4a36c3e12ae085cb0f637758  gcc/ada/repinfo.h
! 866f4553620f6724d5391f963bfc2417  gcc/ada/restrict.adb
! 986b5c865a1fd59615a0ae661d2b57cb  gcc/ada/restrict.ads
! 8ed555d9793e4f615b976cc7b9acf72c  gcc/ada/rident.ads
! 7ce1c090d8a578ba07733a0c95eff670  gcc/ada/rtfinal.c
! 769f3c8ad265f681c0f8d721cd30b56a  gcc/ada/rtinit.c
! fd45cde81618f7c3c3390e27e3ca777f  gcc/ada/rtsfind.adb
! 21dc0d767c39f9a74eeb48b6b010a158  gcc/ada/rtsfind.ads
! 5015c83558995d394606da1d0f9433a8  gcc/ada/runtime.h
! 4ce32403271dbf0ff851ff8351dec962  gcc/ada/s-oscons-tmplt.c
! ec3d3b26622cb5376b9e534f28b12034  gcc/ada/sa_messages.adb
! c84e50165f5678bbe0ea62bdfe831bc5  gcc/ada/sa_messages.ads
! 61b09b0c7704ce093e73a0569fb6670b  gcc/ada/scans.adb
! 1317be9ee56d4c83b3960a6ce5f125f0  gcc/ada/scans.ads
! c0637d4c09b82e6084691f4cd851c99c  gcc/ada/scil_ll.adb
! a85c95bdb56a426df94a0cc384d4a9d4  gcc/ada/scil_ll.ads
! b3d80cf3366bf3fd894d7ff1c787b52a  gcc/ada/scn.adb
! b9a812119b38eb08f6455346b4ac903c  gcc/ada/scn.ads
! 9677c242d810901c25e3815a1b0ddac1  gcc/ada/scng.adb
! b65bfe7356001dba81736fb0b950a880  gcc/ada/scng.ads
! 39a32f00e8f68fa7a458eb18d81b73fe  gcc/ada/scos.adb
! 079d82c5d3d154eb7114318881b49b12  gcc/ada/scos.ads
! 63fa2cbabd78b5e8d05a73ecfe1f69bb  gcc/ada/scos.h
! 8fa91b7fdb64086efc531fbbc7f05585  gcc/ada/sdefault.ads
! 785451d3db2023c5690cce3d69c30edb  gcc/ada/seh_init.c
! 0ae7af7ee357f861e423a532be1151e9  gcc/ada/sem.adb
! 4e111cbd516c30fc6c5909405371a363  gcc/ada/sem.ads
! ef4f36d06546bf3a233afcc1d224aa09  gcc/ada/sem_aggr.adb
! 2dbc22f67596fad4d92ec77e2157fef0  gcc/ada/sem_aggr.ads
! 1c0f408f94606b5d04db61e7a9677c41  gcc/ada/sem_attr.adb
! 2d20cc508225ed2271eb40bb88095def  gcc/ada/sem_attr.ads
! 04d789eb44222a69d105f46f434a7e80  gcc/ada/sem_aux.adb
! 0a0d04a40f212143924eea90f1d6f839  gcc/ada/sem_aux.ads
! 908d9cf517266b10dbb4a478c56d817a  gcc/ada/sem_case.adb
! bf81de207e35a9479ee5bd890ae045b8  gcc/ada/sem_case.ads
! 0518d306ab4da872853f0a5b8d0c2b9c  gcc/ada/sem_cat.adb
! d81f7ed8766a1ec8b6bdf6c06c7ef18c  gcc/ada/sem_cat.ads
! 4697be3d9174c09e1f93775d435c1709  gcc/ada/sem_ch10.adb
! 79bc7e26f39653588a58b11336f82aeb  gcc/ada/sem_ch10.ads
! e4f99936bb2871c451e35d7d11c25698  gcc/ada/sem_ch11.adb
! 64028d5bd4aa02edf513c2a5c1826530  gcc/ada/sem_ch11.ads
! d694dd519c5f789cad58721e253a122d  gcc/ada/sem_ch12.adb
! 5331f51f39581254e5c1dbbd0e475d28  gcc/ada/sem_ch12.ads
! 6aeeb7f3c41e49b19da415ca11a85767  gcc/ada/sem_ch13.adb
! 87174c7b267e1b9dc81a5091770097fc  gcc/ada/sem_ch13.ads
! 8c14b8558181576205ff17817a3cf8df  gcc/ada/sem_ch2.adb
! ff60fe2e05a26faa93a2a7b67096abb0  gcc/ada/sem_ch2.ads
! bb4d40e2b459128f5d338c5fc2728f61  gcc/ada/sem_ch3.adb
! 482c8765cc6f649b0ec7e1ca5c9468e4  gcc/ada/sem_ch3.ads
! e86e0f302e7aa63837499619c5c2f695  gcc/ada/sem_ch4.adb
! cbe2249b846df4671a17137587ddbfcb  gcc/ada/sem_ch4.ads
! 18f0260ca5de6ca73d3bde744b2fcdb4  gcc/ada/sem_ch5.adb
! 800bdbfd7d8f4a9b628e9c502f4c63b9  gcc/ada/sem_ch5.ads
! a8172ffa6afd8a861ceb3da1a9296516  gcc/ada/sem_ch6.adb
! 6ec9de00de79861a1b35ea1b516dc1c0  gcc/ada/sem_ch6.ads
! 3c7348fe2f63b8400d0b192fcc031e95  gcc/ada/sem_ch7.adb
! 4ec373a7b97e85750c3f905f3404c224  gcc/ada/sem_ch7.ads
! 0508c243f39cd4204d780c3383529fae  gcc/ada/sem_ch8.adb
! 740a8551c0b303df2c01c5afd32db5f5  gcc/ada/sem_ch8.ads
! 5347cdcc13660bb0078bde79da7dd0f8  gcc/ada/sem_ch9.adb
! 733da863bddfbe7c28f4dfadb75caa71  gcc/ada/sem_ch9.ads
! babb2b0ebf80a619317b511afab18350  gcc/ada/sem_dim.adb
! 67c30c4708f759e2c20999a1ade7b639  gcc/ada/sem_dim.ads
! 5bfcc30e4eaef66077fd0afeab4f6cef  gcc/ada/sem_disp.adb
! da1f9dc66ffa3e573fc659da888aa56d  gcc/ada/sem_disp.ads
! 95e651ed27f89a05b3069890f6e1d60b  gcc/ada/sem_dist.adb
! c4a7589fafcbce992911887125403fe9  gcc/ada/sem_dist.ads
! 1cadf7e42bb0e5c662dbe0d71e0d4183  gcc/ada/sem_elab.adb
! 111866dc77e8e07616b2227a95bb492f  gcc/ada/sem_elab.ads
! a9f6ccfb3b3d25af8699d16d5eb39a61  gcc/ada/sem_elim.adb
! 6c058e002c04cd30e3775f70175d66bb  gcc/ada/sem_elim.ads
! 5e738ff5bf6c12d8fa929aa242f0e6b6  gcc/ada/sem_eval.adb
! 2c367ed8b4c68e138cdcaf52616b62ea  gcc/ada/sem_eval.ads
! 185914ec9390902862ce4d3a90966562  gcc/ada/sem_intr.adb
! 70332de027e0adf40cb45b491f3b4db3  gcc/ada/sem_intr.ads
! 829b02b037f39a816bd2e5f37a48dd9e  gcc/ada/sem_mech.adb
! ced6f4c926b27df96eabe9cc72246849  gcc/ada/sem_mech.ads
! b7cb1944ad2e4d61e7a6499657b6b2e5  gcc/ada/sem_prag.adb
! c6e6052728dc8f38b8706c60a66f87ce  gcc/ada/sem_prag.ads
! 7ce3735415ba26c26e07da64fa468dd3  gcc/ada/sem_res.adb
! 8aafa0bbe0659305fca1075cf9a63c76  gcc/ada/sem_res.ads
! 30540a00a0ce832eed79b6ff5b0cc1c5  gcc/ada/sem_scil.adb
! 59032b02529742b631ce33ade9468c5a  gcc/ada/sem_scil.ads
! 2c138b358f7901202d2c96edfdfc1f1b  gcc/ada/sem_smem.adb
! 478eb6ea661d5b540267c4201773eff1  gcc/ada/sem_smem.ads
! 51410f50817afb7b5094d6a6e5df03ce  gcc/ada/sem_type.adb
! 7e6ab12fc0bce9d19b4e8e0b9327be8f  gcc/ada/sem_type.ads
! bcf68d301dcea3e1e527845ed079cbc0  gcc/ada/sem_util.adb
! 746ca2f7005c08414f729a68fc968c6c  gcc/ada/sem_util.ads
! 60cb492388f0caa03e204c000be58bd0  gcc/ada/sem_warn.adb
! 7b374cdde28e95c32461b8d806966e17  gcc/ada/sem_warn.ads
! 5fd3414f332fe2b02bd14ccd6d951b9e  gcc/ada/set_targ.adb
! 82df0579aa8194f9e54a816e317141e3  gcc/ada/set_targ.ads
! b445347192ca80b7acf2b09228dff955  gcc/ada/sfn_scan.adb
! abfa22d631dc21630485221e945138a2  gcc/ada/sfn_scan.ads
! 6af1769adb8fbb4143e9f6e06691f8f4  gcc/ada/sigtramp-armdroid.c
! 39c941f5460479083c8d189c2bfe3d5a  gcc/ada/sigtramp-ios.c
! bd78eb5982c8703be6ec06af46de6618  gcc/ada/sigtramp-qnx.c
! 9d224c67981390aba02a2110bccab26d  gcc/ada/sigtramp-vxworks-target.h
! be8f16b5fda01ee355d51280fdb4ab78  gcc/ada/sigtramp-vxworks.c
! 7eb5df6879c058a2bd811b74f8206cce  gcc/ada/sigtramp.h
! 7557fb8957d940e9f72bda1fae30ea4f  gcc/ada/sinfo-cn.adb
! 48ae2cf1843051e94b3d19b75ea3e86e  gcc/ada/sinfo-cn.ads
! 485af01f4701922b5592c6a772073ec0  gcc/ada/sinfo-utils.adb
! d52777101a06469b82866ea6710e3aab  gcc/ada/sinfo-utils.ads
! 89889fc2b16e4a41f68936945fc14cb4  gcc/ada/sinfo.adb
! 61d06f6c02cc84756de595ac14af16e5  gcc/ada/sinfo.ads
! c630b8b087800655f9f68595ed31039c  gcc/ada/sinput-c.adb
! 7665c1614c6d82c2397f4f9b2a3f7a54  gcc/ada/sinput-c.ads
! 5b8e7cb6de5fdfb10b61b54c495dcef8  gcc/ada/sinput-d.adb
! e6c477a86d6b90c74f715328b4602084  gcc/ada/sinput-d.ads
! 83bd925a96feead168eb84165ca15512  gcc/ada/sinput-l.adb
! b2714489d6ffd075bd3fcf385e87d358  gcc/ada/sinput-l.ads
! 715af354108ce873f01834a8adbfd5b1  gcc/ada/sinput.adb
! e2ab251bb158aa0bdc6c55cf46bf17ec  gcc/ada/sinput.ads
! f95f0e1a0ced56502d8f72e9026d0909  gcc/ada/snames.adb-tmpl
! 0623d156a141a88687d5cf8cd7f055ef  gcc/ada/snames.ads-tmpl
  1d0f0a946dfb952f009ada43305106dd  gcc/ada/snames.h-tmpl
! 98e8ababdc8c2e15a262eea1ee505af8  gcc/ada/socket.c
! 19de92a56bb55fdc929066a4ed15dc51  gcc/ada/spark_xrefs.adb
! 4512bc3a91b233dfcb01de83fd8caef1  gcc/ada/spark_xrefs.ads
! 6771b278fa039eb1672c0592c961c73d  gcc/ada/sprint.adb
! 75285d04f5d8ed2c57d4c0648aa0f162  gcc/ada/sprint.ads
! 04363a2c5bb49ef6551523ef8ab92c11  gcc/ada/stand.ads
  92510faaca8c15e63e6f22f0b28dbe5f  gcc/ada/standard.ads.h
! dde969526472fe586cb92a061a40367b  gcc/ada/stringt.adb
! 091647ee57507a8445d2e57c02d9d0df  gcc/ada/stringt.ads
! a070e6aceea52d9d09d6939b5cd2df27  gcc/ada/stringt.h
! bd19d7e1162caf199ddd96ceff4884ad  gcc/ada/strub.adb
! 2e9a0f935b2786582b55471a76eb95fc  gcc/ada/strub.ads
! c20ac80677d52d6e1eefd04f1232ab86  gcc/ada/style.adb
! 0a579d24768b9a3de6dcd58962e59237  gcc/ada/style.ads
! 39224e09ec8a539f140be0eed27267a5  gcc/ada/styleg.adb
! 3df435bc79781cc6b6c12a406c1ab5b0  gcc/ada/styleg.ads
! 78b4d6bf503e599c275cd38ed609bab6  gcc/ada/stylesw.adb
! 9f80da542815841b4d95c5f7a1d8d27a  gcc/ada/stylesw.ads
! d1dd1331325bbefdfa9d9bb5bdbfeb4c  gcc/ada/switch-b.adb
! 07d30e29e7eca0b7c17d6d35ea3e4510  gcc/ada/switch-b.ads
! d440c7918568b171f2fba32f813774ab  gcc/ada/switch-c.adb
! b771c79a47713857d98e39ad3697b329  gcc/ada/switch-c.ads
! 3d61a6a02b0a95565d156cd1571bf25d  gcc/ada/switch-m.adb
! e252ed7e29a9d6cf49aa1eef23d28f77  gcc/ada/switch-m.ads
! 48133129809d3cd1831ec20501fde6f5  gcc/ada/switch.adb
! 4e17809bdbb37e7f1a4af4181036c9c2  gcc/ada/switch.ads
! 1e1a9c74287a321534640ccba1c830f2  gcc/ada/sysdep.c
! c475353d4a2e397b288485e6e2465906  gcc/ada/table.adb
! 50382173ce842e671b02093114cc5568  gcc/ada/table.ads
! 285bec0062294c8235077b5b67c353cb  gcc/ada/targext.c
! 4014db88e71236f1f165687b3d1dccc7  gcc/ada/targparm.adb
! f8712aba7956a2e69a699b5e7e1ab120  gcc/ada/targparm.ads
! 3a066fcfdd4138ea99004b941048c50a  gcc/ada/tbuild.adb
! afb3dbfe79a801182d6beea14ab9e2e7  gcc/ada/tbuild.ads
! 64efa8cb3294c9f863e52153cac11b78  gcc/ada/tempdir.adb
! f775bea80d4cdf2c5b8337c6c157240d  gcc/ada/tempdir.ads
! ad3a082f7308f338cec4f42c7688e3af  gcc/ada/terminals.c
! f0996b5accb2882de47099fa73dff763  gcc/ada/tracebak.c
! e5f7440f9946f2870b643e88a70eba19  gcc/ada/treepr.adb
! af5666ffc69041fdca0fb0986dc7d4c3  gcc/ada/treepr.ads
! c40575ddefb1cc7ab9a0b50e42cbe943  gcc/ada/ttypes.ads
! 55bff27547e72deb761d4133710b8ab7  gcc/ada/types.adb
! 9f116d3fc488f135370afbedea833b9c  gcc/ada/types.ads
! 3174678735343fa5d7d6d0e658c5b349  gcc/ada/types.h
! 98e5aac240575d1b0a4143875e3e6f19  gcc/ada/uintp.adb
! 6ef967eb58384b920abb990ef7a844d2  gcc/ada/uintp.ads
! de232673004ab271995b3d25645632aa  gcc/ada/uintp.h
! e415f4bddfd4a515542b7960270421d4  gcc/ada/uname.adb
! 8bcad65a862106190fbea6635d6eee96  gcc/ada/uname.ads
! dd342f515874b28dc64b29e7214df18d  gcc/ada/urealp.adb
! e07d1a0dccbb7addcf0eb6736ee0cecb  gcc/ada/urealp.ads
! d185de024e397dc6e20a7405ce074fe3  gcc/ada/urealp.h
! e2c8eddfb8829984bc16d92fd467c3e7  gcc/ada/usage.adb
! c1e639a7e03ec39e0fd228126cfc9029  gcc/ada/usage.ads
! f6b908ab4dfb434bd6afac8d19ea3276  gcc/ada/validsw.adb
! 37b910fbabf4f79382fbd303e310d9fc  gcc/ada/validsw.ads
! dc26bc03330c6085ea3ca9b101ce682c  gcc/ada/vast.adb
! 9900e838f80047e22058c2d7ac2b35fd  gcc/ada/vast.ads
  107a84185fe50c348afd3b9e76042a6e  gcc/ada/version.c
  49ef8bc97a344f91b927f23054ade642  gcc/ada/vx_stack_info.c
- 884e1a54368295893128977447d7e59c  gcc/ada/vxworks-arm-link.spec
- e158d4a4cda56237d4f66dfddc3b9915  gcc/ada/vxworks-e500-link.spec
  230f0a2f69b8ad56cc0d730f9fe0964b  gcc/ada/vxworks-ppc-link.spec
- e106f0fc44d2adeffafff77cb59dc87e  gcc/ada/vxworks-smp-arm-link.spec
- f972a9a2e32e4d6aa260193203ee6862  gcc/ada/vxworks-smp-e500-link.spec
  745188949cd7ff6df266579735782385  gcc/ada/vxworks-smp-ppc-link.spec
- 297ba61aeda52a880298da8069891ecc  gcc/ada/vxworks-smp-x86-link.spec
  cf24e76097812a932a26f6600d193208  gcc/ada/vxworks-x86-link.spec
  06e57b640d1aca0be4b6da38098e4157  gcc/ada/vxworks7-cert-rtp-base-link.spec
  3f3270b5bb2062f4d0477ab7e768d46d  gcc/ada/vxworks7-cert-rtp-base-link__ppc64.spec
--- 1315,2978 ----
  d90ff1db87e7c9bf483659701a55671c  gcc/ada/libgnat/a-llltio.ads
  b8fcc586001cbdaddc04c29fc016fa48  gcc/ada/libgnat/a-lllwti.ads
  5faeef2817310c83968117416e0120b0  gcc/ada/libgnat/a-lllzti.ads
! 90fd990015ec95f31d5be8a26210c013  gcc/ada/libgnat/a-locale.adb
! 5a5ce72315930b444a0038823798426c  gcc/ada/libgnat/a-locale.ads
! 6b8532b66479375e07ef9c2691600e79  gcc/ada/libgnat/a-nagefl.ads
! 9c8062207b30cd99491f7fcc0c731995  gcc/ada/libgnat/a-naliop.ads
! da1bb8cd7e90a447707f7cd31dd53af4  gcc/ada/libgnat/a-naliop__nolibm.ads
! dd70d147e6d2fea93fc491c8e90e10e5  gcc/ada/libgnat/a-nallfl.ads
! cc6cfd448859eb50bfc26f3a32462047  gcc/ada/libgnat/a-nallfl__wraplf.ads
! f0d8683a415eecd6a2dd7a0baeff60f2  gcc/ada/libgnat/a-nalofl.ads
! 83a10cbd9cd86fa4d12890abc250230d  gcc/ada/libgnat/a-nalofl__simd.ads
! 80878d481275a5d17b3b98dda0520fd3  gcc/ada/libgnat/a-nashfl.ads
! 51782cce190e5f28eef69f57c78bad1c  gcc/ada/libgnat/a-nashfl__wraplf.ads
! 3bdab553e54b9cbeee86cd11a54250b8  gcc/ada/libgnat/a-nbnbig.adb
! 8035fbd4329cb7766a6f786de3d02a2d  gcc/ada/libgnat/a-nbnbig.ads
! 1eaf250165dfb40898da85d4e1ea3c4b  gcc/ada/libgnat/a-nbnbin.adb
! 04e058ce755b54708b6d16ef5ca8a95b  gcc/ada/libgnat/a-nbnbin.ads
! 67281b20f6df48d248c3142ed0559028  gcc/ada/libgnat/a-nbnbin__gmp.adb
! 3a0496696c033a603294853c6a3a5eaa  gcc/ada/libgnat/a-nbnbre.adb
! e83ffabe7c0ddbf4d79fb74b607dd571  gcc/ada/libgnat/a-nbnbre.ads
  f8a74f5169bf9eba09b0050d2ce025f4  gcc/ada/libgnat/a-ncelfu.ads
! e890dadfdee4451c5c59b94792d98a2a  gcc/ada/libgnat/a-ngcefu.adb
  2e229d27b615410dbc242fd1d7d4bd98  gcc/ada/libgnat/a-ngcefu.ads
! fff323e7288212bcc2d58c781a5c74a0  gcc/ada/libgnat/a-ngcoar.adb
! 03d934454f8cbd5b382c05c95cd2a70a  gcc/ada/libgnat/a-ngcoar.ads
! 040128d3a2014e3fe7ebb2de287a4147  gcc/ada/libgnat/a-ngcoty.adb
! f5718c863ea8dfdc9ef570b19557791a  gcc/ada/libgnat/a-ngcoty.ads
! d06cdbd078d4988636f6c387b29e98fc  gcc/ada/libgnat/a-ngelfu.adb
! d08a004ab0bb389ab0cf5ee9399aa47b  gcc/ada/libgnat/a-ngelfu.ads
! 5484ef37569eaec97cbdaa968b65adb4  gcc/ada/libgnat/a-ngrear.adb
! 763fb271e83332161551ac2459d1e540  gcc/ada/libgnat/a-ngrear.ads
  7f894c161f872e68b50172715a8a311e  gcc/ada/libgnat/a-nlcefu.ads
  307582c16af8c2d164031fd8dfb72581  gcc/ada/libgnat/a-nlcoar.ads
  2341d761d1df9c74f5d4396b2a243874  gcc/ada/libgnat/a-nlcoty.ads
! 15a96cdedebe392da5afeda01bd7e495  gcc/ada/libgnat/a-nlelfu.ads
  44394b04703b7121f6dafb77b7eb7dda  gcc/ada/libgnat/a-nllcar.ads
  b1c1bbccd0e624d2b5753adeaa355876  gcc/ada/libgnat/a-nllcef.ads
  4b51dc5d67f507aed187528008aa427d  gcc/ada/libgnat/a-nllcty.ads
! 7b3664d95bbed9dac210938bed1f5f8d  gcc/ada/libgnat/a-nllefu.ads
  dd270955ac40f18eb7ef0bb7122fbc06  gcc/ada/libgnat/a-nllrar.ads
  dc556e736d290554bf97bb7153c2e96b  gcc/ada/libgnat/a-nlrear.ads
  ed8c8d1cff975d8128d8a34e6fa60333  gcc/ada/libgnat/a-nscefu.ads
  ae6657265a333ec061d886c2e0a9be47  gcc/ada/libgnat/a-nscoty.ads
! 68dc105e51a1e1cc9ce3e69a5d888505  gcc/ada/libgnat/a-nselfu.ads
! 890c601b3dbdad40f604d70384fd459f  gcc/ada/libgnat/a-nuauco.ads
! 2b80f3c12904f77118d4cccc8d0c4a2c  gcc/ada/libgnat/a-nuauco__x86.ads
! 61832ea7fc779dc789e6f7d7b754897b  gcc/ada/libgnat/a-nuaufl.ads
! 5aaa48db8ee9663af833395d50e448a0  gcc/ada/libgnat/a-nuaufl__simd.ads
! 043eafc8e6d224c930896574045de0d4  gcc/ada/libgnat/a-nuaufl__wraplf.ads
  7714df1a41c354211d217f99429093ef  gcc/ada/libgnat/a-nubinu.ads
  22a793d6936415ee70b725c6d2b2020a  gcc/ada/libgnat/a-nucoar.ads
  bda677b507deb699333f9baa2c37a694  gcc/ada/libgnat/a-nucoty.ads
! c3bd5eadce25dddad776b055e98b811d  gcc/ada/libgnat/a-nudira.adb
! f29806b9422261ce80110c94cc4a4d44  gcc/ada/libgnat/a-nudira.ads
! 03bc2403a006ae60dc50571008b25eb7  gcc/ada/libgnat/a-nuelfu.ads
! 5e7001e37d885238a1d15cd77f9b331a  gcc/ada/libgnat/a-nuflra.adb
! 0aea43cabd339b060541d42b69b12759  gcc/ada/libgnat/a-nuflra.ads
! 929001f3ac8a87b61ec0ad6aca938f01  gcc/ada/libgnat/a-numaux.ads
  c4d4bea6dcd8066d2ddcb0789ef64586  gcc/ada/libgnat/a-numeri.ads
  88b948f6713b009c76e8b3b7b75a22c9  gcc/ada/libgnat/a-nurear.ads
! 4ebb7d52f45a4f45c0a7352d827c166b  gcc/ada/libgnat/a-rbtgbk.adb
! 4e641efb34058b50f0fef1a5f7caf59e  gcc/ada/libgnat/a-rbtgbk.ads
! 52308b996cde5f0250a01ddff59d72ee  gcc/ada/libgnat/a-rbtgbo.adb
! ded9209535cd666b0cd117af99911c2d  gcc/ada/libgnat/a-rbtgbo.ads
! 0076d329b1d87402539c6bd8fad4b47b  gcc/ada/libgnat/a-rbtgso.adb
! ce87763a0f2b1208407205df5835f481  gcc/ada/libgnat/a-rbtgso.ads
! 30172d7e208b6eba2d5168873e894de2  gcc/ada/libgnat/a-sbecin.adb
! d3cb488a477e8b04075a608884539b2a  gcc/ada/libgnat/a-sbecin.ads
! ff08163eb7c5cb301a0891d8da9653e3  gcc/ada/libgnat/a-sbhcin.adb
! dd4da311df33a4ecf93174597254e2ea  gcc/ada/libgnat/a-sbhcin.ads
! efecc09a707c7c2cf7e668a706dec90b  gcc/ada/libgnat/a-sblcin.adb
! 762c500b8b8d31b8c9f27ec5b1810647  gcc/ada/libgnat/a-sblcin.ads
  67b280f23d76be962783b397ef7e60c7  gcc/ada/libgnat/a-scteio.ads
! c500a69db1479707918fa337be8e7316  gcc/ada/libgnat/a-secain.adb
! f2222607e3f12be679d44195558ce612  gcc/ada/libgnat/a-secain.ads
! 1a9fbc4713b3ee80b140d0ea7263f66a  gcc/ada/libgnat/a-sequio.adb
! 1132443921a009707780a53fbccf7082  gcc/ada/libgnat/a-sequio.ads
! da9091a9def4d537e621b12804611cfd  gcc/ada/libgnat/a-sfecin.ads
! eeda0ad3cd06bf30c28ae2e07881d1eb  gcc/ada/libgnat/a-sfhcin.ads
! f67e090fdfb63febc2a717163f868eed  gcc/ada/libgnat/a-sflcin.ads
  43123af888cd4637ee6a1eaf9dde9e34  gcc/ada/libgnat/a-sfteio.ads
  63d0f0f0aed733a972873cb3a4b767ea  gcc/ada/libgnat/a-sfwtio.ads
  7207d517b5474be90def505e3a2be187  gcc/ada/libgnat/a-sfztio.ads
! 2429d4be09d417f5f3239a9a3e2ed96f  gcc/ada/libgnat/a-shcain.adb
! 8207550b7fb2d5d124e1e6e5b648545d  gcc/ada/libgnat/a-shcain.ads
! 41080fa89d9ec2066cf93ae26e7bea03  gcc/ada/libgnat/a-siocst.adb
! f8cb7b8fa2ef0b84e1b0c3e134038abf  gcc/ada/libgnat/a-siocst.ads
  6fce3ea5eecdf93f2ec7d0446ebd14af  gcc/ada/libgnat/a-siteio.ads
  9330fbe80fe3844d3bf5aeb4946381f6  gcc/ada/libgnat/a-siwtio.ads
  c816a5bc136362b2468801e67deb9ae9  gcc/ada/libgnat/a-siztio.ads
! a919d0009da762df71b4cb87286d23d8  gcc/ada/libgnat/a-slcain.adb
! daf277e892669497fbf0b5449c96e306  gcc/ada/libgnat/a-slcain.ads
! 0c12bc7407053cf274808da7086ecf53  gcc/ada/libgnat/a-ssicst.adb
! ceaa4ff90553c6742ad055175197b27a  gcc/ada/libgnat/a-ssicst.ads
  3ec2f925719d14de3a80c38042157f78  gcc/ada/libgnat/a-ssitio.ads
  387afdf3ceb85d07a14d8ae4e2f0eeec  gcc/ada/libgnat/a-ssiwti.ads
  366683e8278e7e71bc63a8c7a3f2238f  gcc/ada/libgnat/a-ssizti.ads
! 26814437796d52e5ce6454de34f8fd0f  gcc/ada/libgnat/a-stboha.adb
  8274f77970c3b1ed9a51aa8ddf6a4d0f  gcc/ada/libgnat/a-stboha.ads
! d052ff78db95ccfc84ddd509bad5f5c6  gcc/ada/libgnat/a-stbubo.adb
! 88aad618fff722baa4f6adabb7192350  gcc/ada/libgnat/a-stbubo.ads
! 2818d1418a5d4fdf0483748cfd20f766  gcc/ada/libgnat/a-stbufi.adb
! 9645be200a9ed7bdfb653452fd17f6e9  gcc/ada/libgnat/a-stbufi.ads
! 4870c76014e7a0306ffb5be3d51d2026  gcc/ada/libgnat/a-stbufo.adb
! 7458a0689b1853ecdc83f6dc25d267d1  gcc/ada/libgnat/a-stbufo.ads
! ee80178b6c6a2b15ca3a80d66dd2de5b  gcc/ada/libgnat/a-stbuun.adb
  1e900014d9809db78ef32d2e97e1531b  gcc/ada/libgnat/a-stbuun.ads
! 13bb706e04c3f7a3cbf658c4b8ce577e  gcc/ada/libgnat/a-stbuut.adb
! 4c6023fb10950c41185b88ac9507267a  gcc/ada/libgnat/a-stbuut.ads
  756f44b0c7f4483ecd7302aee8bc110a  gcc/ada/libgnat/a-stfiha.ads
! 6510b21f3ff3cf8cc6e83899f76c1ae8  gcc/ada/libgnat/a-stmaco.ads
! 1ed0395f2fd20c256ebb268db2c93ee5  gcc/ada/libgnat/a-storio.adb
  34175bb2f712422ab4cfd24b3e452b0d  gcc/ada/libgnat/a-storio.ads
! 87b456a6d4b5d02507d556e08620d59f  gcc/ada/libgnat/a-strbou.adb
! 1e7f4967924e35fc49ac099a7e33f987  gcc/ada/libgnat/a-strbou.ads
! 99e3d78be855240528e46d8d7db48d03  gcc/ada/libgnat/a-stream.adb
! 05ff10e4a415b723e64abf438dfc452f  gcc/ada/libgnat/a-stream.ads
! 019ff733249c6adccad2247e37a59e0d  gcc/ada/libgnat/a-strfix.adb
! 4f7d39c96cbcca73943bd54b73e1bbbf  gcc/ada/libgnat/a-strfix.ads
! b63b74216d78657d3a8bb7a105634ce4  gcc/ada/libgnat/a-strhas.adb
  b0a210089b94e668314dbcff62c4c997  gcc/ada/libgnat/a-strhas.ads
  de0f93afe5feaf6819d5a9a2e09172e6  gcc/ada/libgnat/a-string.ads
! 2d8ff17e4fa2889578f624a7f1dfb894  gcc/ada/libgnat/a-strmap.adb
! 82051b10dea14b7b21ea78b27a1c0994  gcc/ada/libgnat/a-strmap.ads
! e6adf23ba6dafc703152a6a7fa7e2fe7  gcc/ada/libgnat/a-strsea.adb
! 1e4352d934435a9a212c47121be30bfb  gcc/ada/libgnat/a-strsea.ads
! 3ace9d958db5d4aa33e439965dd6ff01  gcc/ada/libgnat/a-strsto.ads
! 2ea6be62c6f8038a590a25b2e1302dd6  gcc/ada/libgnat/a-strsup.adb
! 5e4ff14711502fa45c1263409d84a933  gcc/ada/libgnat/a-strsup.ads
! 1c5ae92b7f9ecbdda188b33e1987fdb6  gcc/ada/libgnat/a-strunb.adb
! 86ebb095f3b90781e5c7a132bd4d584a  gcc/ada/libgnat/a-strunb.ads
! 1731b7d0536985f68bea97b51ade46ec  gcc/ada/libgnat/a-strunb__shared.adb
! e0e3868017ce481663fa31f247b874fc  gcc/ada/libgnat/a-strunb__shared.ads
! d6b5cfd374b5a3d57a6c5c9a8c72bedc  gcc/ada/libgnat/a-ststbo.adb
! f02d303d013eb0a65cbb170628e9e04c  gcc/ada/libgnat/a-ststbo.ads
! ba69f0136d7ac63f6cece288739d5bb1  gcc/ada/libgnat/a-ststio.adb
! 8e4f7dbe5185132f8e0ff5fff7dbd34e  gcc/ada/libgnat/a-ststio.ads
! a7601c973ec1816ba21f7e482683737e  gcc/ada/libgnat/a-ststun.adb
! 1b089a7396752c934ed02fc636db8ddb  gcc/ada/libgnat/a-ststun.ads
! f8e88f2c71c959bddc8379567d838e2a  gcc/ada/libgnat/a-sttebu.adb
! 3c26fa3924701bf0fb31cc7ce9580ec6  gcc/ada/libgnat/a-sttebu.ads
! 6b87b2e5c7204a9af32cd20d0b9365f4  gcc/ada/libgnat/a-stunau.adb
! 635c13664bb86e8cdf58dd3c9806c036  gcc/ada/libgnat/a-stunau.ads
! 0117436b12e3f48465e39668ac3eff7a  gcc/ada/libgnat/a-stunau__shared.adb
! 0f596334322ac6063d6c604cb024002b  gcc/ada/libgnat/a-stunha.adb
  da4a8d13f76850d714a8213ada7477d2  gcc/ada/libgnat/a-stunha.ads
! 0463fafaad5e21fcc8602075142f8853  gcc/ada/libgnat/a-stuten.adb
! 0f5fe8e890a5c8c46160b756ee5500f3  gcc/ada/libgnat/a-stuten.ads
! b02f589c43d41bb246c94142c56ea1cb  gcc/ada/libgnat/a-stwibo.adb
! e0ad3b67d79f75c4281becdae1dee0d9  gcc/ada/libgnat/a-stwibo.ads
! 7ca292dbb9632dd0e18ca5ea4820a2f1  gcc/ada/libgnat/a-stwifi.adb
  b0cf3f05e49e1640bf231034269cb951  gcc/ada/libgnat/a-stwifi.ads
! bc2b33730af6c6fef54306ff113a47e8  gcc/ada/libgnat/a-stwiha.adb
  3255ad19d07346032c9d005d6a27475f  gcc/ada/libgnat/a-stwiha.ads
! a3aa4556a531e8ba9d8ee48227db1e41  gcc/ada/libgnat/a-stwima.adb
! e2382ff4c908a7e39ddd347f12889005  gcc/ada/libgnat/a-stwima.ads
! 5c4013ec65b9bff80d229eaf83a47c68  gcc/ada/libgnat/a-stwise.adb
! d13f865d646cc0679747993f95e40431  gcc/ada/libgnat/a-stwise.ads
! 57a6e906fe0457412d156e1cd653a59a  gcc/ada/libgnat/a-stwisu.adb
! d5c9976ec896afa60f97eae3ad9c18a9  gcc/ada/libgnat/a-stwisu.ads
! e3a4451752a390811dd12cc478303b64  gcc/ada/libgnat/a-stwiun.adb
! 18c428c34ae0eaae511548ff5338b682  gcc/ada/libgnat/a-stwiun.ads
! 3e2370d54befcad7dfc693aaf9d65c87  gcc/ada/libgnat/a-stwiun__shared.adb
! 1a2fd7e1136f710c0fe0c32dac8e12e6  gcc/ada/libgnat/a-stwiun__shared.ads
! 6a72c4e32cade7b9f5ad5edde2baff20  gcc/ada/libgnat/a-stzbou.adb
! f2b41d6fabaf0a83922eabcd4b5ae620  gcc/ada/libgnat/a-stzbou.ads
! 7ac3b93b2fcf4edcb0b9205afb77bc78  gcc/ada/libgnat/a-stzfix.adb
  f3ddc25c20b07c4072918c6c0ea20ff9  gcc/ada/libgnat/a-stzfix.ads
! d002c9d65bc15444a9cf87b7baef94d4  gcc/ada/libgnat/a-stzhas.adb
  41c71febbb354000bccca4ccd3a59c54  gcc/ada/libgnat/a-stzhas.ads
! c6ed9afe811cc2054c8b9aee81a0be7f  gcc/ada/libgnat/a-stzmap.adb
! 92cb7ab3fd8bba30cd02f061961f3b58  gcc/ada/libgnat/a-stzmap.ads
! b450edffada6dc1d1f8c9c7bd751830b  gcc/ada/libgnat/a-stzsea.adb
! d574b23e8b6322a7fda2e51797a79931  gcc/ada/libgnat/a-stzsea.ads
! 05d503ffe0e5866eb94cc0b3d27c34f0  gcc/ada/libgnat/a-stzsup.adb
! ef6057f6333b8c33224d70b7cf8125d6  gcc/ada/libgnat/a-stzsup.ads
! ec988d22029ba2c66bac7b740b6a90ad  gcc/ada/libgnat/a-stzunb.adb
! 583ab33811069ed37c4cdaf2071171d9  gcc/ada/libgnat/a-stzunb.ads
! 6de7b84f4c16d3ecbf50b4c45cbfcceb  gcc/ada/libgnat/a-stzunb__shared.adb
! 83e468dbe638a539ffd1fce66c86f616  gcc/ada/libgnat/a-stzunb__shared.ads
! a0a485492822b2f58979f276b785ba0e  gcc/ada/libgnat/a-suecin.adb
! 3c2e120ab9c3e2cf221b2e65f19aebef  gcc/ada/libgnat/a-suecin.ads
! 8ba20ef95193ba57489059a4c63f5927  gcc/ada/libgnat/a-suenco.adb
  24c625ef90e191bc1baa69c58ae2600f  gcc/ada/libgnat/a-suenco.ads
! 8d38f127f53cd0832ecd4e6619f75a08  gcc/ada/libgnat/a-suenst.adb
  5a81ae9196b241db71c16198169dbed7  gcc/ada/libgnat/a-suenst.ads
! fc74ae57274e0cb8f313061d41c47d66  gcc/ada/libgnat/a-suewst.adb
  88073629f5531c7f6fba98820112cd02  gcc/ada/libgnat/a-suewst.ads
! a91d34ca52b217ffdc7a3edc250431b3  gcc/ada/libgnat/a-suezst.adb
  5aaf32a65e951f050f1cbb5adf5af9d2  gcc/ada/libgnat/a-suezst.ads
! 76fc5ef0f3425545dc1037e3e79f0aea  gcc/ada/libgnat/a-suhcin.adb
! 3cbbd221f11b9f0a2edd23e73049c002  gcc/ada/libgnat/a-suhcin.ads
! 42804efc613db79fbbf2c60dad37f4c4  gcc/ada/libgnat/a-sulcin.adb
! 39b2ba9b527fdf442440cf2cb46aa66c  gcc/ada/libgnat/a-sulcin.ads
! e258aecfc4212363782c34c9b5ef4d48  gcc/ada/libgnat/a-suteio.adb
! 9b38eef7563bb6fcf848c418bcc778dc  gcc/ada/libgnat/a-suteio.ads
! a2eb9c4ba0f16200080186430d401a16  gcc/ada/libgnat/a-suteio__shared.adb
! 8538be162614c8c3bac689050fd935b6  gcc/ada/libgnat/a-swbwha.adb
  65f3f68c6718760b4c2b0beba2af9f82  gcc/ada/libgnat/a-swbwha.ads
  aaf273ef9a113dedcab8fb87b71b7365  gcc/ada/libgnat/a-swfwha.ads
! a3b5746f22640955c8024aca73c592e4  gcc/ada/libgnat/a-swmwco.ads
! e9032a63e6f71512a7d294c05dc1e86d  gcc/ada/libgnat/a-swunau.adb
! 28ed7530712187231cd6846868e6be33  gcc/ada/libgnat/a-swunau.ads
! 02fcde63dd454e731e01e4e419be329e  gcc/ada/libgnat/a-swunau__shared.adb
! 297e1bf9db9497409ec0ddd81401593a  gcc/ada/libgnat/a-swuwha.adb
  45d76b5b911889e181b3717ab6c91651  gcc/ada/libgnat/a-swuwha.ads
! 38b0168cb9f1bfe70397c0777992c846  gcc/ada/libgnat/a-swuwti.adb
! ede4f9c881678a488e71eecb1333722a  gcc/ada/libgnat/a-swuwti.ads
! 2123281ca33a4aae6db2507cd01e5bf1  gcc/ada/libgnat/a-swuwti__shared.adb
! 7b71ffe551f688d3cfde9eb74c47abcb  gcc/ada/libgnat/a-szbzha.adb
  18b9cf476495930cec4ac3eb881257db  gcc/ada/libgnat/a-szbzha.ads
  32bb3b01e46ff7648c862537bd77aa0d  gcc/ada/libgnat/a-szfzha.ads
! 111dffefc8f624896dd406c4cd0ef61f  gcc/ada/libgnat/a-szmzco.ads
! abed98e87f68cd68e17fe68330a3fa47  gcc/ada/libgnat/a-szunau.adb
! 50726445f117e74d496fdf0f16b7d184  gcc/ada/libgnat/a-szunau.ads
! 48d0083c68b5d845905d75c33e43045c  gcc/ada/libgnat/a-szunau__shared.adb
! 1b0a3cb152749935bb629905170e3525  gcc/ada/libgnat/a-szuzha.adb
  01cf107c9e66d7e5284c9b7ce2e2ed7e  gcc/ada/libgnat/a-szuzha.ads
! 81b423746edaf32c7effcac9cd5e0e8e  gcc/ada/libgnat/a-szuzti.adb
! 8eac4e123a703852dc6952377353308c  gcc/ada/libgnat/a-szuzti.ads
! c7511bdaa2f3e4ecd7c2400104657178  gcc/ada/libgnat/a-szuzti__shared.adb
! f07cae4eaf0c9ec332e6ba6aac7e02bc  gcc/ada/libgnat/a-tags.adb
! 6d443f484c17548a591b50edf2b832cf  gcc/ada/libgnat/a-tags.ads
! 00329c112cffff59137f1698fa0d20e4  gcc/ada/libgnat/a-teioed.adb
! 3419f7d00c67b3c9eb5d76bddb348a73  gcc/ada/libgnat/a-teioed.ads
! 9c031b073ca76e20775d307461d9fa2f  gcc/ada/libgnat/a-textio.adb
! aab4c2f60d06677390ce8c1d3372efbd  gcc/ada/libgnat/a-textio.ads
  c74a673b222c3d0037a22fb766c67488  gcc/ada/libgnat/a-tgdico.ads
! 24b965b75e914eb13d21f8b7b2172d5d  gcc/ada/libgnat/a-tiboio.adb
  7b163db9f1467e9392f347bee1400136  gcc/ada/libgnat/a-tiboio.ads
! f74259004855d7a35ec2334fa260545a  gcc/ada/libgnat/a-ticoau.adb
! c10415cef89ad26eb1891fb8e9db27ee  gcc/ada/libgnat/a-ticoau.ads
! cfc421c61b50e1cbb2bb9dc53f3ceaab  gcc/ada/libgnat/a-ticoio.adb
! c176958de42e2ef6cf9a8a4fcc74498d  gcc/ada/libgnat/a-ticoio.ads
! 50548a5801f08c3fb8f7f5966a0c3cd6  gcc/ada/libgnat/a-tideau.adb
! e7e09e0d4a94fcef095c9d376e7cd31a  gcc/ada/libgnat/a-tideau.ads
! 55afb7dce0837cfcf7b201dba9cd57e8  gcc/ada/libgnat/a-tideio.adb
! ce094f6db2618c326dac95909b665737  gcc/ada/libgnat/a-tideio.ads
! 7c0bb5a3eda4b019edc1305019b02aec  gcc/ada/libgnat/a-tideio__128.adb
! 2b3dac8b640ab452097dba4cbd5573ec  gcc/ada/libgnat/a-tienau.adb
! d1c4100cef8dab1e654e92d1538af33b  gcc/ada/libgnat/a-tienau.ads
! b7e5d50c819f52674fd813395871f9ab  gcc/ada/libgnat/a-tienio.adb
! 8748f2debbff0fcfd1b7ef2ed7d169dd  gcc/ada/libgnat/a-tienio.ads
! 11c88ec2336a262e48711f48f7db73cb  gcc/ada/libgnat/a-tifiau.adb
! 7ae598d1f021a52802b07848c675bd42  gcc/ada/libgnat/a-tifiau.ads
! 0d9a431850d16c592d20a70750b51940  gcc/ada/libgnat/a-tifiio.adb
! 064247cf38af3b630042a059c4804943  gcc/ada/libgnat/a-tifiio.ads
! 7b262024c12278011079970a57c3efb8  gcc/ada/libgnat/a-tifiio__128.adb
! 925745adb72b2afe804390508d4ece05  gcc/ada/libgnat/a-tiflau.adb
! d2d033f875500b00567d3e9f877928dc  gcc/ada/libgnat/a-tiflau.ads
! b0cc42ede5b5d33fb83e6e62f0e9d3b3  gcc/ada/libgnat/a-tiflio.adb
! 627fa1a661b673236f0a9f39de45e414  gcc/ada/libgnat/a-tiflio.ads
! 291c9be36e3e00de808b10797255ccad  gcc/ada/libgnat/a-tigeau.adb
! bd1c8d9e8d1a26ad3bedcb4cbc111a85  gcc/ada/libgnat/a-tigeau.ads
! cc3921340b6bdb803272e871ae3f9756  gcc/ada/libgnat/a-tigeli.adb
! d0c3221b0f81ad8248e70ac9e42d860b  gcc/ada/libgnat/a-tiinau.adb
! bbec42165dac4f5c8b1748cf942624da  gcc/ada/libgnat/a-tiinau.ads
! 23bfa870f9351b9bf6b69b4304e6b22f  gcc/ada/libgnat/a-tiinio.adb
! e8bb8b5bb627b504ad607778495d2579  gcc/ada/libgnat/a-tiinio.ads
! 7a2662d7f6a18fd5df0d3d4c2399baac  gcc/ada/libgnat/a-tiinio__128.adb
! d30db58ffd1e57f9861277dd74400ce2  gcc/ada/libgnat/a-timoio.adb
! 2620fe40dbbe4ca93ba7075e8af17759  gcc/ada/libgnat/a-timoio.ads
! 91b867381ebbfaa63cef06ee005a9089  gcc/ada/libgnat/a-timoio__128.adb
! 0cdd3c014d499854cf25dc0b04031ad1  gcc/ada/libgnat/a-tiocst.adb
! e5c3357f0fce5ca95c1813d9eb9a05fb  gcc/ada/libgnat/a-tiocst.ads
! e156a5de562b37c56ad24c7bea351f78  gcc/ada/libgnat/a-tirsfi.adb
! 40f4bd7d097a4210394d63a8085b2295  gcc/ada/libgnat/a-tirsfi.ads
! b179c50ec61d34ae5d548a779d188364  gcc/ada/libgnat/a-titest.adb
  7b71ac41d87e6c43f98663d1d110846c  gcc/ada/libgnat/a-titest.ads
  1a5a51a7ff392f1819e96c8c7b6ba50b  gcc/ada/libgnat/a-tiunio.ads
  ebdefb0717ee54e84334b4468aea7da2  gcc/ada/libgnat/a-unccon.ads
  8eb8e50901a7293468a57fa9630abb8c  gcc/ada/libgnat/a-uncdea.ads
! 5aa6d62133e80ca4d31190c3286fd832  gcc/ada/libgnat/a-undesu.adb
  82a804005be52b8d315b11082ce952d4  gcc/ada/libgnat/a-undesu.ads
! 5174d918e15060f2393a6faf5aa99e04  gcc/ada/libgnat/a-wichha.adb
  bc85d10bd14a8eda24559935a5472a57  gcc/ada/libgnat/a-wichha.ads
! 2500bc60f6a27d04f7705aa039b2fd16  gcc/ada/libgnat/a-wichun.adb
! 2123652849f79ff1cfe343b3eac7511b  gcc/ada/libgnat/a-wichun.ads
  495dc144d91ae1388ae48ceb32e47f91  gcc/ada/libgnat/a-widcha.ads
! 874f33b63742d6301be6da48f304e406  gcc/ada/libgnat/a-witeio.adb
! cdc8015ddea02a973d07efd344d0b4f4  gcc/ada/libgnat/a-witeio.ads
! e57ce33c8d57668aa44173699655534e  gcc/ada/libgnat/a-wrstfi.adb
! bc62ee8bde1ab04aaa9c6c855addbf87  gcc/ada/libgnat/a-wrstfi.ads
! 75368b386fa881d7960590853fb9265b  gcc/ada/libgnat/a-wtcoau.adb
! 5fc564733ec4bb9abb19171ba8f3dfb7  gcc/ada/libgnat/a-wtcoau.ads
! 108ad24ba3000bd91838383a7a601d31  gcc/ada/libgnat/a-wtcoio.adb
  d76fe24c6988d732303e4f40830c2082  gcc/ada/libgnat/a-wtcoio.ads
! 4c7e0b4c99c94d44ef03861c29ad3130  gcc/ada/libgnat/a-wtcstr.adb
! cd59aba8f08886157906c1f89192e368  gcc/ada/libgnat/a-wtcstr.ads
! ab0494bd4b8dbebfb49190ee6b441fda  gcc/ada/libgnat/a-wtdeau.adb
! 84e66098fbb6f1b581f7a9bbe3d74d7e  gcc/ada/libgnat/a-wtdeau.ads
! a3c34e4d020e19185589ac8a9e3e467c  gcc/ada/libgnat/a-wtdeio.adb
  20d4a8b1dbec170436bce906004aaac8  gcc/ada/libgnat/a-wtdeio.ads
! e7945ed43de7e631995217cbb9d88404  gcc/ada/libgnat/a-wtdeio__128.adb
! 05e6abba89c804994b74da6926650f6b  gcc/ada/libgnat/a-wtedit.adb
! f1b3bbc599b9d42f6c27f7a18dc9c067  gcc/ada/libgnat/a-wtedit.ads
! 18a1313c6ebd1227b208cda1f428ef66  gcc/ada/libgnat/a-wtenau.adb
! 3472cc0e032c0622115554dce42803c8  gcc/ada/libgnat/a-wtenau.ads
! ffe1d78ff00fb5bfdd51740030ffc3e6  gcc/ada/libgnat/a-wtenio.adb
  fa13b730a5c90ff293982415bf7bcecb  gcc/ada/libgnat/a-wtenio.ads
! 43ad5b1392acf7413b6aac5baf9de666  gcc/ada/libgnat/a-wtfiau.adb
! fc09d2e1f032e8b5c795538cfc6ffa20  gcc/ada/libgnat/a-wtfiau.ads
! 65cb49c7b108779a2d04829c7d8f007b  gcc/ada/libgnat/a-wtfiio.adb
  495444487be476924785b4b8eff6b910  gcc/ada/libgnat/a-wtfiio.ads
! 7982a364187a2f16b55d66cdd4a79841  gcc/ada/libgnat/a-wtfiio__128.adb
! 885c1f25dfec40da23066c8df720b986  gcc/ada/libgnat/a-wtflau.adb
! b982bd5403bfa10962455741c1897f37  gcc/ada/libgnat/a-wtflau.ads
! ee3002d0c7a5ec638e53d7947da54841  gcc/ada/libgnat/a-wtflio.adb
  bb57e8648d7de30496bb43f8a849fc3f  gcc/ada/libgnat/a-wtflio.ads
! 851180d0ce7474127b321b8a594b562c  gcc/ada/libgnat/a-wtgeau.adb
! c0e6ff4eb0a3dee84e25437683fa6689  gcc/ada/libgnat/a-wtgeau.ads
! 410b793d24676ac7c98ed920c1646e21  gcc/ada/libgnat/a-wtinau.adb
! 4457307ff0ce6b043e42a6022a3a5196  gcc/ada/libgnat/a-wtinau.ads
! 13c5390bb24a74d50224eae820560b8f  gcc/ada/libgnat/a-wtinio.adb
  62a64f1715aaaa145cf2b6d360381363  gcc/ada/libgnat/a-wtinio.ads
! 0f373d87be42cebdf44c9ac3e65f7000  gcc/ada/libgnat/a-wtinio__128.adb
! ca71626e2e6161c05e4b1c6bc89ce76a  gcc/ada/libgnat/a-wtmoio.adb
! 43b643425abb41aa1e6d43383e24aff5  gcc/ada/libgnat/a-wtmoio.ads
! 67505b361ccfb37a4324498fd2489788  gcc/ada/libgnat/a-wtmoio__128.adb
! 35785f565564834d8d4e96d713d1b388  gcc/ada/libgnat/a-wttest.adb
  53d3d301f9afb69992013f55fe363511  gcc/ada/libgnat/a-wttest.ads
! 66411e0ced1ccd68a98238a7544fd42b  gcc/ada/libgnat/a-wwboio.adb
  899e14502ec4dedbf4fdb28f8cecfa35  gcc/ada/libgnat/a-wwboio.ads
  1c2480c111fa5b71fca7c67f21525f8f  gcc/ada/libgnat/a-wwunio.ads
  107d2989204d28e32923acc02d444f67  gcc/ada/libgnat/a-zchara.ads
! 698e29e46b161682375edbfde6fe3af3  gcc/ada/libgnat/a-zchhan.adb
  ce55ee9974e330611ce057d096fe581f  gcc/ada/libgnat/a-zchhan.ads
! e380cca27215649e0d8b462d1178adca  gcc/ada/libgnat/a-zchuni.adb
! 09dd9fd910bd7753703756d364d319c6  gcc/ada/libgnat/a-zchuni.ads
! 1159889e49622c727565bc03004fec27  gcc/ada/libgnat/a-zrstfi.adb
! 581b40a8dc3bb4652526bc5f37ac9331  gcc/ada/libgnat/a-zrstfi.ads
! a9c5c0b53eac257c43c40976077d55a2  gcc/ada/libgnat/a-ztcoau.adb
  fe39d89a6c321af618f6fa9308e66666  gcc/ada/libgnat/a-ztcoau.ads
! 816f8fbc9040d2a0719d57d6e92aa2e7  gcc/ada/libgnat/a-ztcoio.adb
  7440d81a0d7886b3f76b271c7fcbf8b3  gcc/ada/libgnat/a-ztcoio.ads
! ad4b323e4196d5d26eadd796b51062c3  gcc/ada/libgnat/a-ztcstr.adb
! 563b59127c2aa048f48b7d1f498c123e  gcc/ada/libgnat/a-ztcstr.ads
! 6144e969b82cdc30f32b03fd5aff8da5  gcc/ada/libgnat/a-ztdeau.adb
! c6d1651cc1f9f4dc665662e0fa29a08d  gcc/ada/libgnat/a-ztdeau.ads
! be6b5a04d6b0bff4176c565730be929a  gcc/ada/libgnat/a-ztdeio.adb
  a1457649e626ebf32915696e5afd2ac0  gcc/ada/libgnat/a-ztdeio.ads
! 50171ca016d80893dd8f14cb4dbd3677  gcc/ada/libgnat/a-ztdeio__128.adb
! a4b465dea86377a3154eeb4dba6129d4  gcc/ada/libgnat/a-ztedit.adb
! dfdeb3081d255ca390e7e52a5264b49c  gcc/ada/libgnat/a-ztedit.ads
! dfe38c5787c747fad2119dd5e03e961f  gcc/ada/libgnat/a-ztenau.adb
! 4e974e0e38e338087b52e7f0abae2d4b  gcc/ada/libgnat/a-ztenau.ads
! 7607291af8c7a963977225db7294aaea  gcc/ada/libgnat/a-ztenio.adb
  33aa889d92f43b14a348a444135fc992  gcc/ada/libgnat/a-ztenio.ads
! b3373262c3462c3da98f37db389ab5f5  gcc/ada/libgnat/a-ztexio.adb
! e0ec49c84bc498f80782c45e38d79d26  gcc/ada/libgnat/a-ztexio.ads
! c4a3920b6d6dbed15eab93dca8dca514  gcc/ada/libgnat/a-ztfiau.adb
! e0a33b2d3776733a33440786293c8541  gcc/ada/libgnat/a-ztfiau.ads
! bca662f5ab2c7a27dd57afb586d8d21d  gcc/ada/libgnat/a-ztfiio.adb
  9e2efe8c1c2d6658a575fbecb5ab1418  gcc/ada/libgnat/a-ztfiio.ads
! a549fed7e741b94556cefd181d863489  gcc/ada/libgnat/a-ztfiio__128.adb
! 629e210a3f3bb2dedc795e516b6521c7  gcc/ada/libgnat/a-ztflau.adb
! 970fe61f038d673bdb63f8e9596dbbcc  gcc/ada/libgnat/a-ztflau.ads
! 858b7a9684245f5986532b182a3c775f  gcc/ada/libgnat/a-ztflio.adb
  7aae0945e67f16f4f77aa54a65552f3e  gcc/ada/libgnat/a-ztflio.ads
! 5c5fbc763ef603c503cdf0d9a18dcbf7  gcc/ada/libgnat/a-ztgeau.adb
! b47490466f613b3c6d20e0d5102f74ad  gcc/ada/libgnat/a-ztgeau.ads
! d05c74dd62e898516f117a6bc05d34c1  gcc/ada/libgnat/a-ztinau.adb
! 3a9807a0a11e3ebef16c97ebb4b3d987  gcc/ada/libgnat/a-ztinau.ads
! 94bece9e654c102060e99a929e44b997  gcc/ada/libgnat/a-ztinio.adb
  f0456d31ec0aa6f6786e1b635f8023cb  gcc/ada/libgnat/a-ztinio.ads
! 98f97f39e2a8a65d3a9853cb803629de  gcc/ada/libgnat/a-ztinio__128.adb
! fdb6f3268dac9713d9e51dee200b87a3  gcc/ada/libgnat/a-ztmoio.adb
  9831d312ef279fc55e5e051745be05d2  gcc/ada/libgnat/a-ztmoio.ads
! b6cdcaa25ea0c3dc764752193cc4ef31  gcc/ada/libgnat/a-ztmoio__128.adb
! 842274ea898827c6df52ca80e0044186  gcc/ada/libgnat/a-zttest.adb
  2caf047380f684add2bd5a35dc4e1091  gcc/ada/libgnat/a-zttest.ads
! 314251e26d19dfe3593a3d5bf52afbdc  gcc/ada/libgnat/a-zzboio.adb
  a80428bcd2bf9ab7214609e68ff1651c  gcc/ada/libgnat/a-zzboio.ads
  a6d7b54a7a1a401188cfe54d1c2bad3b  gcc/ada/libgnat/a-zzunio.ads
  aad41855092e5648dbc6e7ab9d94cda3  gcc/ada/libgnat/ada.ads
  71c71bcd90c113e366bf720c3d886660  gcc/ada/libgnat/calendar.ads
  e150ba4c7f01d70e0086543a96ffd40b  gcc/ada/libgnat/directio.ads
! 4d92e0d3c623d72317e36567f0d44b89  gcc/ada/libgnat/g-allein.ads
! ad874384ff9a7ebbd383c19bde950a6d  gcc/ada/libgnat/g-alleve.adb
! 8b39c52baa46d48455b5758897961863  gcc/ada/libgnat/g-alleve.ads
! d14cdf67166728c6bc4bbfdb35d01bc0  gcc/ada/libgnat/g-alleve__hard.adb
! 69f6a982d6cf1fb3d9cc8b98c8924612  gcc/ada/libgnat/g-alleve__hard.ads
! 7978e50688a6f5cdb6601a7178135b4c  gcc/ada/libgnat/g-altcon.adb
! 5b4553076e7138a8ec869dcd76e96f25  gcc/ada/libgnat/g-altcon.ads
! 3ffac7bd81156d0635e631f66948d54a  gcc/ada/libgnat/g-altive.ads
! fdce82aad210e8faa6d5b7b9ffc99072  gcc/ada/libgnat/g-alveop.adb
! 095e97cbbf4696b27fda2c28cae8927d  gcc/ada/libgnat/g-alveop.ads
! d0a1d283ffaa212bc2d74046a8cdf242  gcc/ada/libgnat/g-alvety.ads
! f77977ec1a4d2e7c794d30613f33c4b4  gcc/ada/libgnat/g-alvevi.ads
! aff1948d7990f8fc4b0f4f312821c8af  gcc/ada/libgnat/g-arrspl.adb
! 996a01b0120b3fa2b1ffab35ab0c4e26  gcc/ada/libgnat/g-arrspl.ads
! 5936bdbd108a2ee0410ce5f5da0fcbcf  gcc/ada/libgnat/g-awk.adb
! 80a8ffad0646f1fbf5c2f82731e96d8d  gcc/ada/libgnat/g-awk.ads
! 29b6d2a40a57772d109deebf29cb08c8  gcc/ada/libgnat/g-binenv.adb
! c0e0c3459f9d9867a6dfc21536c7ece8  gcc/ada/libgnat/g-binenv.ads
! 252819650ceff465553db4d3835743ab  gcc/ada/libgnat/g-binsea.adb
! 32811eadc5638474ce8d0c8ec2cb1f8c  gcc/ada/libgnat/g-binsea.ads
! 4273cc6ee91b551857eb724800e88cfd  gcc/ada/libgnat/g-brapre.ads
! 68455ff88b87da02c4c31bfa9d8717ff  gcc/ada/libgnat/g-bubsor.adb
! eccfa5931e7142a0f4fa1736cd5a27fd  gcc/ada/libgnat/g-bubsor.ads
! 34a6e2f6c3340099b2264589f5f07e70  gcc/ada/libgnat/g-busora.adb
! 5d6e89bab62ec17c6a9b26c6247a977f  gcc/ada/libgnat/g-busora.ads
! a92834758d0572d6d7eb753b83753c15  gcc/ada/libgnat/g-busorg.adb
! 2f258e0a9f991726c02388889e038a29  gcc/ada/libgnat/g-busorg.ads
! 993521eea167aa6b4ead6d4da787ce40  gcc/ada/libgnat/g-byorma.adb
! 23144b235d2d9490037d3f02cfa8eaec  gcc/ada/libgnat/g-byorma.ads
! 26b5a32860b3df9a8448ce9feb9a924a  gcc/ada/libgnat/g-bytswa.adb
! 90780c906f19e074bd567ae3cc854068  gcc/ada/libgnat/g-bytswa.ads
! 60f42b223dbba6b03343a673f0b5ee58  gcc/ada/libgnat/g-calend.adb
! 1a2dc8a7853b4b23c414b9c96f6ef545  gcc/ada/libgnat/g-calend.ads
! 8e9111a566c791f3707d0be6a2f2ab73  gcc/ada/libgnat/g-casuti.adb
! b2ef9ab2bce299475a51664da9487ace  gcc/ada/libgnat/g-casuti.ads
! c68410d8e72132fbc3326797343d8b77  gcc/ada/libgnat/g-catiio.adb
! efceecf03d24c94f93e9527eb4c6c992  gcc/ada/libgnat/g-catiio.ads
! f968a5633349e503fdffaefda8780faf  gcc/ada/libgnat/g-cgi.adb
! b6f051322f7bc3fb446e08c3f38bfd60  gcc/ada/libgnat/g-cgi.ads
! 6615d91596ad0555348cf2d6f9ab0724  gcc/ada/libgnat/g-cgicoo.adb
! eca5eeaa1f87565c36b874459ee6bfd6  gcc/ada/libgnat/g-cgicoo.ads
! 7df93d781d1a395c84256fc7cea08b11  gcc/ada/libgnat/g-cgideb.adb
! 68a442923ec8fb7d8502312ffd4fb3cf  gcc/ada/libgnat/g-cgideb.ads
! a4af576ac77d13667f82b1e2de4bfa89  gcc/ada/libgnat/g-comlin.adb
! b518e2921c58ef0865605ef061ec09c8  gcc/ada/libgnat/g-comlin.ads
! f4645815bceb7679ecbb26a680b18b96  gcc/ada/libgnat/g-comver.adb
! b85f331ed68f4113dfddc1f719b8042f  gcc/ada/libgnat/g-comver.ads
! c990016bf3c9b9dffaa8f92ed16a7580  gcc/ada/libgnat/g-cppexc.adb
! 4522b346c7b5378c103db91512191dde  gcc/ada/libgnat/g-cppexc.ads
! 65b3b3fdc3c7994829cb26bb07419f7d  gcc/ada/libgnat/g-crc32.adb
! 069c8ed42eee53a394ca20a7ff9a1440  gcc/ada/libgnat/g-crc32.ads
! 76bb16f0008d32678c04307b9fd2bf90  gcc/ada/libgnat/g-ctrl_c.adb
! 249e15540841a276b3bb70b0692ea022  gcc/ada/libgnat/g-ctrl_c.ads
! 53b40060d47c3a23c05344a8503de9af  gcc/ada/libgnat/g-curexc.ads
! 5790732038e1ccb7a4114866561aea50  gcc/ada/libgnat/g-debpoo.adb
! 88d17f3e6492b8b13b0f8cfea72dd3b6  gcc/ada/libgnat/g-debpoo.ads
! d9fe54b9e9eea1a80facaa5b584c6606  gcc/ada/libgnat/g-debuti.adb
! 98c4bc8aec539371766eaaf52b9b8498  gcc/ada/libgnat/g-debuti.ads
! 52b90b392061c4418f44e501ccc40612  gcc/ada/libgnat/g-decstr.adb
! a560aee79065e643d0bb427917c3fea6  gcc/ada/libgnat/g-decstr.ads
! 963d598d9e2eb307eb570462bad15ab6  gcc/ada/libgnat/g-deutst.ads
! b1c867bdf7e87c323b09c2edafb16c95  gcc/ada/libgnat/g-diopit.adb
! 9509626fcef403834ada16bb27649655  gcc/ada/libgnat/g-diopit.ads
! cacbdd27f5d11796f845b06d9c0d518a  gcc/ada/libgnat/g-dirope.adb
! 17ca35a9d450dec5df0878b6b0da2153  gcc/ada/libgnat/g-dirope.ads
! 1e6e9621332dafea157a9536b7a61dab  gcc/ada/libgnat/g-dynhta.adb
! e8290f84f3a53efed091fc59af1bbaef  gcc/ada/libgnat/g-dynhta.ads
! b7ff6617476416d36a0a3bf3333a800d  gcc/ada/libgnat/g-dyntab.adb
! ccf7c4467798fa714061a1898df6feef  gcc/ada/libgnat/g-dyntab.ads
! ae1f2c1d0e06bc184476084c1992c042  gcc/ada/libgnat/g-eacodu.adb
! 1d6a4ffa7fc753070c820af94d3cc2fd  gcc/ada/libgnat/g-encstr.adb
! d627e20b2938fd71f4196b0463c84b51  gcc/ada/libgnat/g-encstr.ads
! 43e2f912d729d319419a51e7780b233a  gcc/ada/libgnat/g-enutst.ads
! e6ee69c58445d486328786ec4772151d  gcc/ada/libgnat/g-excact.adb
! fe7082c4a400ea83dfe29b245f0b413f  gcc/ada/libgnat/g-excact.ads
! 1645900070be5033f4f79e11472bd74e  gcc/ada/libgnat/g-except.ads
! bbd1b089b766eeec2eb49e57e0bdff47  gcc/ada/libgnat/g-exctra.adb
! 68f59a93cf78755425d8a5c9fb717521  gcc/ada/libgnat/g-exctra.ads
! edbab9f3e0fa3ecc28e7539b1b809589  gcc/ada/libgnat/g-expect.adb
! 92af8aa759a2735bdc694af115377948  gcc/ada/libgnat/g-expect.ads
! bc514f466d6a19ab775cf94e3204caf1  gcc/ada/libgnat/g-exptty.adb
! 83b44dd85a03883af2eeffb9416ca93a  gcc/ada/libgnat/g-exptty.ads
! 6923c1adcdb7c17982caeae50fcb3985  gcc/ada/libgnat/g-flocon.ads
! 74af5bb038dd9ebab9332f9230258dda  gcc/ada/libgnat/g-forstr.adb
! 43d29d6d386d85763f7b9c9275bcbb1b  gcc/ada/libgnat/g-forstr.ads
! 75b093542573c05cf9e4e8b040d899f5  gcc/ada/libgnat/g-gfmafu.ads
! 4be9a41d1366287248237df1a2806894  gcc/ada/libgnat/g-graphs.adb
! 5064ef29d0787c6fdbd3b39319f1004b  gcc/ada/libgnat/g-graphs.ads
! fe2c1d1af83414b93934a7d9cba90a38  gcc/ada/libgnat/g-heasor.adb
! 5d0a37ae4a2a755cddd1a0ac505896a4  gcc/ada/libgnat/g-heasor.ads
! ecdb97ed3c53baa51f4ed02ae2e3b80a  gcc/ada/libgnat/g-hesora.adb
! 7160eb60fac9bccd192c6632da546fb5  gcc/ada/libgnat/g-hesora.ads
! e55e4fc5e136792d27b0fa8cc56572cf  gcc/ada/libgnat/g-hesorg.adb
! cc12f530477bcfb548ac3679cc26de7e  gcc/ada/libgnat/g-hesorg.ads
! 3843f649c92223d4b6e9dbafc6a20a4a  gcc/ada/libgnat/g-htable.adb
! da7c7eab42d35c5d68fea2ca3bc70208  gcc/ada/libgnat/g-htable.ads
! 2db33d83709bf8af1c2983d113b1cc1f  gcc/ada/libgnat/g-io.adb
! 45133c6a9043b8ca968e47e2bd2a5b26  gcc/ada/libgnat/g-io.ads
! 73b0c1813541a8bc4693e36d786e56c9  gcc/ada/libgnat/g-io_aux.adb
! d7d87637f8cfee1089e298dfc396aa62  gcc/ada/libgnat/g-io_aux.ads
! 06fbfb2c132d1860d8ec62b21a5a5bd3  gcc/ada/libgnat/g-lists.adb
! b6fc7cdfe5f269265a07d06f1ba8e06b  gcc/ada/libgnat/g-lists.ads
! 95e7b2fb5880eaaabdf86e11a44539c9  gcc/ada/libgnat/g-locfil.adb
! 5a840cdde883ecec06365bb7e1e66bde  gcc/ada/libgnat/g-locfil.ads
! 554523bc90b0887f85bfbcea7a0c6803  gcc/ada/libgnat/g-mbdira.adb
! 5b7892a2c0d404203cbbf51c3b867004  gcc/ada/libgnat/g-mbdira.ads
! 6bad2a8db1d0c299ee2ad48c33ac2f3c  gcc/ada/libgnat/g-mbflra.adb
! de4439eb73de5bbff88e841694fbfa74  gcc/ada/libgnat/g-mbflra.ads
! ecda141877158cb9e29770393927de1f  gcc/ada/libgnat/g-md5.adb
! 7e5ce4f5beb2284ea43ed2e10f3d014b  gcc/ada/libgnat/g-md5.ads
! 1a3348d730fc836f7c75efb7f74439d0  gcc/ada/libgnat/g-memdum.adb
! c3554f24be8936cfc9f1de1e5f699394  gcc/ada/libgnat/g-memdum.ads
! bf3b5aeb712d1c6590fc918b131b1b30  gcc/ada/libgnat/g-moreex.adb
! e8fd1c1694b5614c76b53887e5ed57d3  gcc/ada/libgnat/g-moreex.ads
! 0b842333438981b46889bb262f38dde4  gcc/ada/libgnat/g-os_lib.adb
! e8149ef1008863e4bfd1fdb0e081981c  gcc/ada/libgnat/g-os_lib.ads
! 99f83ca3081e52cecbf645cab3b283eb  gcc/ada/libgnat/g-pehage.adb
! f47f412085fe9187d0a68d8c0a5d93d5  gcc/ada/libgnat/g-pehage.ads
! 1254a0b7970668d62bd166574672e587  gcc/ada/libgnat/g-rannum.adb
! d07185d746fb69d9329b517b84ac8a4e  gcc/ada/libgnat/g-rannum.ads
! 6ea1a98579702ab8a768699f578c3f42  gcc/ada/libgnat/g-regexp.adb
! 4b268bf19688c01c07f64978d1f947b1  gcc/ada/libgnat/g-regexp.ads
! a35dbf300a3e6f1ce86dad08ccce082f  gcc/ada/libgnat/g-regist.adb
! 759509c4ec2be1be47390b5512fb0458  gcc/ada/libgnat/g-regist.ads
! c2347305c37cb4ff9937dacbff8c7f1b  gcc/ada/libgnat/g-regpat.adb
! 25f2e7db87a3b604b06820303a8a3e9a  gcc/ada/libgnat/g-regpat.ads
! 7399a6d3f2e519265fbdef1cabcf51ac  gcc/ada/libgnat/g-rewdat.adb
! 3d8751d7369bfbf167277826e916d328  gcc/ada/libgnat/g-rewdat.ads
! 257756ad0788e553d365aee0e6921e5a  gcc/ada/libgnat/g-sechas.adb
! c61622c01de6ab68262d55fb60a2237c  gcc/ada/libgnat/g-sechas.ads
! d6c66e8f94a7dfcad41cf871b926ed89  gcc/ada/libgnat/g-sehamd.adb
! 09de0f560bd03790c8820852547a6f3e  gcc/ada/libgnat/g-sehamd.ads
! 94812ac2a18dcdb2a6dfacd7ea6a6932  gcc/ada/libgnat/g-sehash.adb
! e470c324964aa248d1854ff44a49ab75  gcc/ada/libgnat/g-sehash.ads
! 568f8236514e9fc93368db812579c117  gcc/ada/libgnat/g-sercom.adb
! 8cbddddd4fed9f63eb428c8cacedd5e4  gcc/ada/libgnat/g-sercom.ads
! 9a73d2477789383d141c90c8fb879d01  gcc/ada/libgnat/g-sercom__linux.adb
! e8b3c8e39e40e8beed229f80dbc637bf  gcc/ada/libgnat/g-sercom__mingw.adb
! d4e35e820040ad6b747ea9d4cf9fc12f  gcc/ada/libgnat/g-sestin.ads
! 94a447f30a15e895c94a8ce7d6cf7f60  gcc/ada/libgnat/g-sets.adb
! d3eb793384643a3450062e5c88a77bc3  gcc/ada/libgnat/g-sets.ads
! 0c2c198b03f23fe6fc60143f9372cd03  gcc/ada/libgnat/g-sha1.adb
! ab844de76387e750c1f19eb6cb9f24b0  gcc/ada/libgnat/g-sha1.ads
! d9695806c656d319196c18903640378b  gcc/ada/libgnat/g-sha224.ads
! 10869f44caa5a79909eaa561b300fd5e  gcc/ada/libgnat/g-sha256.ads
! 2f168f4866c8d037f6674c0f1d7f6ee4  gcc/ada/libgnat/g-sha384.ads
! aadb24efb3d6c9e8a391f967f79a421f  gcc/ada/libgnat/g-sha512.ads
! cf934d7cd55eb6a4e016bb103afa8c7e  gcc/ada/libgnat/g-shsh32.adb
! f2d8eae70172d5272d3e454c1b1b2051  gcc/ada/libgnat/g-shsh32.ads
! 99e504a6337b45b80b5ac2a67f9511a9  gcc/ada/libgnat/g-shsh64.adb
! 6c3c8216513f7eefdcaf56a7812d3571  gcc/ada/libgnat/g-shsh64.ads
! b347daf965f1992fd32844617d11efd0  gcc/ada/libgnat/g-shshco.adb
! 94e2549753574d95fa89cdd1cd1ab8ab  gcc/ada/libgnat/g-shshco.ads
! 16fa2e00fece34a2d5783c282f260554  gcc/ada/libgnat/g-soccon.ads
! 707e83f3c64c8e91f87bf1c6db65af93  gcc/ada/libgnat/g-socket.adb
! 2329dfc702483f5353d20a7563a3a60e  gcc/ada/libgnat/g-socket.ads
! 4c854d4f031fbd6f7848662f4c8de12f  gcc/ada/libgnat/g-socket__dummy.adb
! 747a5623dc49e1d03443915a093855cd  gcc/ada/libgnat/g-socket__dummy.ads
! f60410916fefd45f43617c11b37627f3  gcc/ada/libgnat/g-socpol.adb
! bba809ac3d6ef7638ab4e837655ecfd2  gcc/ada/libgnat/g-socpol.ads
! 110dc5d23553b81275239ac2b1559d5c  gcc/ada/libgnat/g-socpol__dummy.adb
! a4c59fa51f2c8077321c8065cc8b9222  gcc/ada/libgnat/g-socpol__dummy.ads
! a709662fb10f73f5f06a357d91fbdbae  gcc/ada/libgnat/g-socthi.adb
! dc779bd662f042b633ece09007bdf857  gcc/ada/libgnat/g-socthi.ads
! 39e8b4d9271ac8dfffbbf73dd54c2264  gcc/ada/libgnat/g-socthi__dummy.adb
! f3666eb97e40377c81be753c58c755b3  gcc/ada/libgnat/g-socthi__dummy.ads
! 092d7737fba703bbb01219b4dea52504  gcc/ada/libgnat/g-socthi__mingw.adb
! f114752b20184edac895fc1dc1377dad  gcc/ada/libgnat/g-socthi__mingw.ads
! 86a7d44ec3f954a74cb0f9288007734b  gcc/ada/libgnat/g-socthi__vxworks.adb
! 35857078d2aab6c589e6157176c0f946  gcc/ada/libgnat/g-socthi__vxworks.ads
! fb96913e6a939407e687a5b8267fb286  gcc/ada/libgnat/g-soliop.ads
! b92064f7c023f5a9f08ebac4d4df82cc  gcc/ada/libgnat/g-soliop__lynxos.ads
! a950f1332d806ebee5d777eb54262211  gcc/ada/libgnat/g-soliop__mingw.ads
! 92af5f6e67d2729ed90a3154b4225514  gcc/ada/libgnat/g-soliop__qnx.ads
! e6f69e39b4f07180c6b721ebf938dcd0  gcc/ada/libgnat/g-soliop__solaris.ads
! e76558b8735d017d61c600b874a8d392  gcc/ada/libgnat/g-sopowa.adb
! cfbc23a780d0f8f2ed89de1d188a262f  gcc/ada/libgnat/g-sopowa__mingw.adb
! 73190ce31962a5cfa9fb39dd3335ec02  gcc/ada/libgnat/g-sopowa__posix.adb
! 664dba5099e46d34c72e5d413007c542  gcc/ada/libgnat/g-sothco.adb
! 9d65d5c1321b8a877b434bce766e15c9  gcc/ada/libgnat/g-sothco.ads
! 4e09d9262db3530a9d5fd7b55b7dd815  gcc/ada/libgnat/g-sothco__dummy.adb
! 1507fa3579ff091fe6695f3d2222e5d5  gcc/ada/libgnat/g-sothco__dummy.ads
! 1b24fa0c779dbf5d71fa3ff480f13cf5  gcc/ada/libgnat/g-souinf.ads
! 3fc7facb410e847236e30b9a21fa61ec  gcc/ada/libgnat/g-spchge.adb
! 898f366ab02f3b88478412efde140377  gcc/ada/libgnat/g-spchge.ads
! 06dfe69f818c7140d602af844691eba0  gcc/ada/libgnat/g-speche.adb
! 99e27d2904b4e0a9bcce48a0ecf890a9  gcc/ada/libgnat/g-speche.ads
! 945d684020a26eebc822819b4b6725e3  gcc/ada/libgnat/g-spipat.adb
! 5cf2ee11efafd5b629b7cddba3bd156c  gcc/ada/libgnat/g-spipat.ads
! 748d282dd20dd29a08649206f7c0fe69  gcc/ada/libgnat/g-spitbo.adb
! d13ebacb612c43d698657fd443cbdc0b  gcc/ada/libgnat/g-spitbo.ads
! 60c5fe073a1fba864c4fc01ee3e23dae  gcc/ada/libgnat/g-spogwa.adb
! 837e8ee32a413012a1fa332c94f8aa78  gcc/ada/libgnat/g-spogwa.ads
! 87aa1763984429867c854cc858d6e917  gcc/ada/libgnat/g-sptabo.ads
! 9bbb31e2c895095d94be016716a5fab7  gcc/ada/libgnat/g-sptain.ads
! 318c6b9aef9ad335965d8f6612742a7a  gcc/ada/libgnat/g-sptavs.ads
! 3b63f00dc35a76ada468082c5936cf6d  gcc/ada/libgnat/g-sse.ads
! ac11a86f067e51308b84146d8b5f42a3  gcc/ada/libgnat/g-ssvety.ads
! 1807addefc3b014a21cddcc32206127d  gcc/ada/libgnat/g-sthcso.adb
! 34d6fec636612eca826a5be6349f1eee  gcc/ada/libgnat/g-stheme.adb
! 623ccf1bf569ad311cac8ca042546bdd  gcc/ada/libgnat/g-strhas.ads
! e7e7a2c8ecb750641d76a505979286fa  gcc/ada/libgnat/g-string.adb
! 68ab8df1a74e643559374b7d10d73497  gcc/ada/libgnat/g-string.ads
! fd526b0a9e595826d941e9f6052fece8  gcc/ada/libgnat/g-strspl.ads
! 36088017f7fae43da8d7990aa60f7e4a  gcc/ada/libgnat/g-stseme.adb
! 6843e0370f871377a0e646eb907b06fc  gcc/ada/libgnat/g-stsifd__sockets.adb
! eb924758cf9cdd75ec9cfd94b63278c4  gcc/ada/libgnat/g-table.adb
! 8210890f36f66cc022db2a9ea40b5f8a  gcc/ada/libgnat/g-table.ads
! 2588da75cae8575bcd3f02f261a176a8  gcc/ada/libgnat/g-tasloc.adb
! fa9d4bc98c2135f3e8227109747988a9  gcc/ada/libgnat/g-tasloc.ads
! 08fa7d796be4c7fc58d890d196cc9f7e  gcc/ada/libgnat/g-timsta.adb
! c6fadd0b4732f2f5de68817df19767c8  gcc/ada/libgnat/g-timsta.ads
! c720c3fe8b8af8719abf5d713638b934  gcc/ada/libgnat/g-traceb.adb
! 7eb55c52c2012022648ed34d0c7e09e8  gcc/ada/libgnat/g-traceb.ads
! a19d4b58b576f1aefa2435cfff652d0d  gcc/ada/libgnat/g-trasym.adb
! 586e95b3a90564056aa6e9d2d97bd835  gcc/ada/libgnat/g-trasym.ads
! 6ead27ccbc399501f3ac68f318bd45bd  gcc/ada/libgnat/g-tty.adb
! 56aa1226fa9c88016ad95a4a5790657a  gcc/ada/libgnat/g-tty.ads
! d2778daeb1d63889e59fff3a917021fa  gcc/ada/libgnat/g-u3spch.adb
! 00251cd898a2ecf24eb13bacab8a0509  gcc/ada/libgnat/g-u3spch.ads
! 98dc838352da7c06b1505545bafcb771  gcc/ada/libgnat/g-utf_32.adb
! 31c81f18d8fff503875e8fb770c5b5b5  gcc/ada/libgnat/g-utf_32.ads
! 5486aa425cce9adbfc5ecce8526a1e30  gcc/ada/libgnat/g-wispch.adb
! eed6182cccb1e36102c6093ecf5edbd8  gcc/ada/libgnat/g-wispch.ads
! acfe49743f116b386e2b86854490d6f6  gcc/ada/libgnat/g-wistsp.ads
! 82d31ffa8f81a2adeaedf0173eb9c4c1  gcc/ada/libgnat/g-zspche.adb
! be3a255852278bfff0e013275e3590ee  gcc/ada/libgnat/g-zspche.ads
! 05aec4e0bda031ccc58e01cd62609f03  gcc/ada/libgnat/g-zstspl.ads
! 9a1256ead1ae4501bc7bfe15fac88a3c  gcc/ada/libgnat/gnat.ads
! 966ff8768954813ed493ccec60f895df  gcc/ada/libgnat/i-c.adb
! af51227bb8b3a293ea632fa7bb5275d1  gcc/ada/libgnat/i-c.ads
! 086e313508ca6a2c9b357053da6d7541  gcc/ada/libgnat/i-cexten.ads
! 63a5514e15fee37533e09393e0e1b022  gcc/ada/libgnat/i-cexten__128.ads
! 6b062b936aa771bbef0c852c89595280  gcc/ada/libgnat/i-cobol.adb
! 55277c0aea84386a3afc17e8854a9b3f  gcc/ada/libgnat/i-cobol.ads
! 0b638aa61ff9ec1e1263d060b0a0a2ee  gcc/ada/libgnat/i-cpoint.adb
! eccac19c4847e8a1b274c1a13cd887b6  gcc/ada/libgnat/i-cpoint.ads
! 4d56fa0776ea98f8d60189ad7c8544b8  gcc/ada/libgnat/i-cstrea.adb
! e044d22f710e7bca8326086668c736ba  gcc/ada/libgnat/i-cstrea.ads
! 51e7e0be8af4267a76dda21d41edfaf9  gcc/ada/libgnat/i-cstrin.adb
! 627ec1266d44d9c89304f33479d0a3c7  gcc/ada/libgnat/i-cstrin.ads
! 3ef302f4c78288e920d061a6994df706  gcc/ada/libgnat/i-fortra.adb
  fe08792d30f40125dd75d63c7bcd68fe  gcc/ada/libgnat/i-fortra.ads
! a2434e0d284f29b6c361cc227d2dcf3b  gcc/ada/libgnat/i-pacdec.adb
! a3c1b7ac824c83210b645d9844930746  gcc/ada/libgnat/i-pacdec.ads
! 034b515247f5323244463f9785732789  gcc/ada/libgnat/i-vxwoio.adb
! dc51e417813c470a86e22f1d90f5b7d5  gcc/ada/libgnat/i-vxwoio.ads
! 4066df12033769a2750654b34c693000  gcc/ada/libgnat/i-vxwork.ads
! 7878edb68c4a0574b248233d82feaa9a  gcc/ada/libgnat/i-vxwork__x86.ads
! 4718f1427322015766857fbe076f2642  gcc/ada/libgnat/interfac.ads
! f44e8eacf9b60bd871a56bfceba7552c  gcc/ada/libgnat/interfac__2020.ads
  c2121d458a346c0b9d83825c544b9516  gcc/ada/libgnat/ioexcept.ads
  a8eb2329946dd4041335c2c4cfd086af  gcc/ada/libgnat/libada.gpr
  9b37ec6e60899a7dadce7f301acc9eee  gcc/ada/libgnat/libgnat.gpr
  fbe275186bb4f8ccd7519acfa1499671  gcc/ada/libgnat/libgnat_common.gpr
  38f101ad4a6eba55ef694b1ab6315683  gcc/ada/libgnat/machcode.ads
! f7610ae81ab1953836221820adefcf41  gcc/ada/libgnat/memtrack.adb
! 06ef2789bee9fe70fc21740ae9cc9988  gcc/ada/libgnat/s-addima.adb
! c9b67f7a636510f2c0c1535bb58047ad  gcc/ada/libgnat/s-addima.ads
! 1f40342a29f0fd720d862e9bb8adcff5  gcc/ada/libgnat/s-addope.adb
! 150099cfa39e0417feebe825560bb517  gcc/ada/libgnat/s-addope.ads
! edcbe45b85a71c515a10b86c215ff948  gcc/ada/libgnat/s-aoinar.adb
! a94c7fd56d787604927b49d5a948443b  gcc/ada/libgnat/s-aoinar.ads
! b963f40f8c44c875400b2d24385dfe1a  gcc/ada/libgnat/s-aomoar.adb
! 8ec7597d2f39bc993676e61326ac07a1  gcc/ada/libgnat/s-aomoar.ads
! 724abb8ad34ffc809ef6d8f378ece28b  gcc/ada/libgnat/s-aotase.adb
! c9b8a1113d47313ed7e71fc00b45e2e9  gcc/ada/libgnat/s-aotase.ads
! 724705967c42197f78766497b8cb2caf  gcc/ada/libgnat/s-aridou.adb
! 6706eddcea301a7442198b9c25a4732d  gcc/ada/libgnat/s-aridou.ads
! fa34d55131238c43f5bb818fecfb1e7a  gcc/ada/libgnat/s-arit128.adb
! f1f9e4a0acdc798697e10f4f97374c76  gcc/ada/libgnat/s-arit128.ads
! 5d9f71c36bec06f2a2cddf0ad648276a  gcc/ada/libgnat/s-arit32.adb
! 5f2e8c5bd87ae36a0f231f37b78e6feb  gcc/ada/libgnat/s-arit32.ads
! db4b7e7f312a885f800a9b0b2390da7f  gcc/ada/libgnat/s-arit64.adb
! a770ecbdb06f951ce696cf5dc6cb0cb8  gcc/ada/libgnat/s-arit64.ads
! eda6d9d52b59ef9d7f4bd35380740fd2  gcc/ada/libgnat/s-assert.adb
! 3475fb68e180fa9ffc24757e13ffa35d  gcc/ada/libgnat/s-assert.ads
! 89a8e4ebb4f4d6a1f299ee4c70b38ae3  gcc/ada/libgnat/s-atacco.adb
! 73da84c2911c81e2bb2d5c7da24affb7  gcc/ada/libgnat/s-atacco.ads
! a2200418d528906de69a03eb220500da  gcc/ada/libgnat/s-atocou.adb
! d288d07e2928e4079050fbe2fd6b249f  gcc/ada/libgnat/s-atocou.ads
! 5636a5e5e4c157e452d9b777aafcee05  gcc/ada/libgnat/s-atocou__builtin.adb
! 39213656d9d7253db9958fbc307bda92  gcc/ada/libgnat/s-atoope.ads
! ae0bff4ba928e071e1ca0f189151b5f4  gcc/ada/libgnat/s-atopex.adb
! 7c1d743aa86f31546ea179eed88655a0  gcc/ada/libgnat/s-atopex.ads
! ea156537fca09ec56ce8e9ea0346f998  gcc/ada/libgnat/s-atopri.adb
! ff6bfb9ad40b36890a36144066f91d0f  gcc/ada/libgnat/s-atopri.ads
! 149ddefe25d79cbcf5af45c3fdf4e99c  gcc/ada/libgnat/s-auxdec.adb
! ae9cfbf461203475a7d0437a7291e7a9  gcc/ada/libgnat/s-auxdec.ads
! 5799a39a00affb9f78b4a40f139b018e  gcc/ada/libgnat/s-bignum.adb
! fff3c73cd248d0bd5ec4d933f4a02a69  gcc/ada/libgnat/s-bignum.ads
! 0c84fa80e88e2c251e4d1745491fa88b  gcc/ada/libgnat/s-bitfie.ads
! a392af178afb60cdb483f6ba15b8116d  gcc/ada/libgnat/s-bitops.adb
! cb49ae898d6e582fe7f19b1847baecc4  gcc/ada/libgnat/s-bitops.ads
! e3396ce6d41ed13ba87349e6fdd26efa  gcc/ada/libgnat/s-bituti.adb
! 3ec79db781410a69cd3576f8b52ec421  gcc/ada/libgnat/s-bituti.ads
! 94b178337353500385fe3c5c0269b6d1  gcc/ada/libgnat/s-boarop.ads
! 16b9d3fe36f3ca460efd54f04c9c415f  gcc/ada/libgnat/s-boustr.adb
! b38b16bc6d29a69c0d159bd166457f7d  gcc/ada/libgnat/s-boustr.ads
! 4ba314dba56623195907dea87d0c7cd8  gcc/ada/libgnat/s-bytswa.ads
! 7e8daeb8d5875b2f1358c80df02724e2  gcc/ada/libgnat/s-carsi8.adb
! a4eb6b99dd7e903ab96c9dccde2e38d5  gcc/ada/libgnat/s-carsi8.ads
! 3acc29c357d5cc5b55df4d6c099d43a1  gcc/ada/libgnat/s-carun8.adb
! a03cdc921383f51be86523612b4f0131  gcc/ada/libgnat/s-carun8.ads
! 81b033357704401f372f8b7299f11501  gcc/ada/libgnat/s-casi128.adb
! b4adb59738a4c0315ca1e87b6b7ffeb4  gcc/ada/libgnat/s-casi128.ads
! 98d185ac115b7e041a2c9fe25bd9e527  gcc/ada/libgnat/s-casi16.adb
! 72cdb2c3841eed1789fd14b11972b47e  gcc/ada/libgnat/s-casi16.ads
! 8f0852566b28134ef69a35f600e61969  gcc/ada/libgnat/s-casi32.adb
! fbb01b7caaadd443f3aa1a2959fa94ce  gcc/ada/libgnat/s-casi32.ads
! 194a88a2d8f349c8e6fe4ae08481a951  gcc/ada/libgnat/s-casi64.adb
! b460c434b669312e48ae1bc98a6019a8  gcc/ada/libgnat/s-casi64.ads
! c2c012c28a57899bc17c4941d32501bf  gcc/ada/libgnat/s-casuti.adb
! cc4c028493c27a7ca5912f17129647a4  gcc/ada/libgnat/s-casuti.ads
! fd0261d8962b502fa531fb330106e61f  gcc/ada/libgnat/s-caun128.adb
! 1b454c7494bb7bdcf64ecd58124c0f11  gcc/ada/libgnat/s-caun128.ads
! 6be474702b35e2af5f9b70d1b095c240  gcc/ada/libgnat/s-caun16.adb
! 86f9990dd8990a19277b74b36c7a3e6f  gcc/ada/libgnat/s-caun16.ads
! e8e143dee538fbf067bfe5e6f5e75968  gcc/ada/libgnat/s-caun32.adb
! 2be384170de0752609455511ee552eda  gcc/ada/libgnat/s-caun32.ads
! 178787d035404783b741c5e97f26bda4  gcc/ada/libgnat/s-caun64.adb
! 1c7dc251d5f7c2b1b62e6f185197b776  gcc/ada/libgnat/s-caun64.ads
! d64d371ef83ede99a2c278aed3483c77  gcc/ada/libgnat/s-chepoo.ads
! 58018206f82f7ca7410200ae03dfaf17  gcc/ada/libgnat/s-commun.adb
! 736037ee45f5551574043fe12d32296b  gcc/ada/libgnat/s-commun.ads
! ba403d2bc8cf0949aff2da2e4bf1a3cd  gcc/ada/libgnat/s-conca2.adb
! 9122876e19c5b9b0ebb360606dd2d7d1  gcc/ada/libgnat/s-conca2.ads
! f406e71765bcc9503d2c9de6e09d9c4e  gcc/ada/libgnat/s-conca3.adb
! 80bedac518f9e25a6c3d6af924cda6c8  gcc/ada/libgnat/s-conca3.ads
! ac682f044f2f813635c00484191c4daa  gcc/ada/libgnat/s-conca4.adb
! a4feb22f2f47af7f55b32d5e5611904d  gcc/ada/libgnat/s-conca4.ads
! 714985964dcc0b7073e4b5c6f129e4ab  gcc/ada/libgnat/s-conca5.adb
! d432e8240558d639b3ee646a2737e4bb  gcc/ada/libgnat/s-conca5.ads
! f6b94ef45be3ad24816011fa74617b7a  gcc/ada/libgnat/s-conca6.adb
! 79dcbe47e9245361d00944ea3b3234ba  gcc/ada/libgnat/s-conca6.ads
! 9067b577202bf77e72f185c1d6355afa  gcc/ada/libgnat/s-conca7.adb
! bde1303c7bac5e94a061453ddf309725  gcc/ada/libgnat/s-conca7.ads
! 709c473953cbcfd4336cef91db7e187d  gcc/ada/libgnat/s-conca8.adb
! 6e6e7b77843d02f96ebd2c52bbc2d72a  gcc/ada/libgnat/s-conca8.ads
! ddd1fdca7501078ef940f10cdf91f3f0  gcc/ada/libgnat/s-conca9.adb
! a352b6a4aad7f282b072ffd0dabddfb3  gcc/ada/libgnat/s-conca9.ads
! 7ea19ff29aa460c7de1da52fe4cd1751  gcc/ada/libgnat/s-crc32.adb
! a08cf5430788a273806e24140c7a2762  gcc/ada/libgnat/s-crc32.ads
! aaccede6def938c2ad85d9d1549cc8d9  gcc/ada/libgnat/s-crtl.ads
! 2c315491c1c502e40f15cc73f1b151f7  gcc/ada/libgnat/s-dfmkio.ads
! 532597236e2bf29ea240506ed2d1583e  gcc/ada/libgnat/s-dfmopr.ads
! 86fc51b4f6cf575e5c916e04e133b818  gcc/ada/libgnat/s-dgmgop.ads
! 34ec6187b72ca15bcf42884ea547367c  gcc/ada/libgnat/s-diflio.adb
! 46d9ccd5218a9b8c9f283f7782de5889  gcc/ada/libgnat/s-diflio.ads
! 6c4a0b553495093a1f3480abffed70cc  gcc/ada/libgnat/s-diflmk.ads
! 7bb5656c81dfb43b49decbb725cfa3ef  gcc/ada/libgnat/s-digemk.ads
! f06822575d65ff39c7601b3d36d58569  gcc/ada/libgnat/s-diinio.adb
! 1f5df624afa85dc0400745e83d5541bc  gcc/ada/libgnat/s-diinio.ads
! 1a141f292307279e99b187c98e808450  gcc/ada/libgnat/s-dilomk.ads
! bf939cbd1ca37e14cd1b398e10bb3249  gcc/ada/libgnat/s-dim.ads
! f6369901ed7af08499bf34c4d408f9c2  gcc/ada/libgnat/s-dimkio.ads
! 7fc5fa7e60d644d1b4ec14d883232a3f  gcc/ada/libgnat/s-dimmks.ads
! 9ec19e22364401d7d76c6f7be9043f21  gcc/ada/libgnat/s-direio.adb
! c53b8b539bb9040aa23d66a744b7b3a9  gcc/ada/libgnat/s-direio.ads
! c7db1cc4543deb8894cd5f586f40608f  gcc/ada/libgnat/s-dlmkio.ads
! 438d7f149986fd69595e3bc1f2bd1914  gcc/ada/libgnat/s-dlmopr.ads
! ddb1428e2a1f24e383a48d6cd4b22b53  gcc/ada/libgnat/s-dmotpr.ads
! 28f43708c010cf1a53c29ec40b211ce4  gcc/ada/libgnat/s-dorepr.adb
! 4de630227a5fae0cebf22b2102826afb  gcc/ada/libgnat/s-dorepr__fma.adb
! bd6a5f844ed0716238d14636ab8867a7  gcc/ada/libgnat/s-dourea.adb
! ae598e036b0ab59a2e0afe7146e52534  gcc/ada/libgnat/s-dourea.ads
! e57ab33a5d1a46aacdb08c8e7e22d2cc  gcc/ada/libgnat/s-dsaser.ads
! 0295120a824627adf1a156289ba090d7  gcc/ada/libgnat/s-dwalin.adb
! 59b36b20d841ca18c5998f4f2d599d25  gcc/ada/libgnat/s-dwalin.ads
! 52f22ee731f8e1bf496f603b855c1911  gcc/ada/libgnat/s-elaall.adb
! cac1c512c1f5281d901b72bd1ad23e5d  gcc/ada/libgnat/s-elaall.ads
! d88ff03299587e43686ca131d55eaa5f  gcc/ada/libgnat/s-excdeb.adb
! 8e8215d1b30b8beec939e92895f54ec0  gcc/ada/libgnat/s-excdeb.ads
! 7195cabfec3c8809c6e06d475b0f2e12  gcc/ada/libgnat/s-except.adb
! 979b8b2cc53d7b247c5364d1ffcd654a  gcc/ada/libgnat/s-except.ads
! c3adbca6dfef2ad49f0b53b3f27ea0bd  gcc/ada/libgnat/s-excmac__arm.adb
! e63347da9d4e287b765d61f103a85380  gcc/ada/libgnat/s-excmac__arm.ads
! ec2dc0125a2a97b45ee0f4fd91b0c109  gcc/ada/libgnat/s-excmac__gcc.adb
! d0af7bb01bf66f1ffbf23455f562243e  gcc/ada/libgnat/s-excmac__gcc.ads
! e26070b1ccd92c2011ed03640dc6f009  gcc/ada/libgnat/s-exctab.adb
! 7cad22f8093b4796dc6cb5609ceed12d  gcc/ada/libgnat/s-exctab.ads
! 553bb632b763cde5cb5d3062ef2bdb2e  gcc/ada/libgnat/s-exctra.adb
! cae836cf4ee92482786ebd821b288836  gcc/ada/libgnat/s-exctra.ads
! 6661c3027dc629acc37aa8429919f8da  gcc/ada/libgnat/s-exnflt.ads
! a89e277f3414a37826232879b2128aa1  gcc/ada/libgnat/s-exnint.adb
! 9f7bdbd54fe9c22abcb6b53e8f5665e1  gcc/ada/libgnat/s-exnint.ads
! 6af84a45e6a6e08b5898c753da680189  gcc/ada/libgnat/s-exnlfl.ads
! c63df6f0678643e895512637cce03e8a  gcc/ada/libgnat/s-exnllf.adb
! 34751fb016b49318e1a2f01e8337f99e  gcc/ada/libgnat/s-exnllf.ads
! 225a6ce8ec5e7039e84f5613771ff57c  gcc/ada/libgnat/s-exnlli.adb
! cb9d16be2c8e0f4ffe4198b563eb5616  gcc/ada/libgnat/s-exnlli.ads
! 31b5b4f6daa8094b6246cc8f186b9383  gcc/ada/libgnat/s-exnllli.ads
! 489f4069da8a0a02ed5f1455808ba854  gcc/ada/libgnat/s-expint.adb
! ac7e9bacad5acedf26d79048f7fcebe9  gcc/ada/libgnat/s-expint.ads
! 11fd18db45bf59f4fedf0504ab673388  gcc/ada/libgnat/s-explli.adb
! 84c083b09c22216a129cb6e599d545ea  gcc/ada/libgnat/s-explli.ads
! 15464b80f3a3d55236087d02d8c37af2  gcc/ada/libgnat/s-expllli.ads
! 45397bef5d4a976785b2a912ac316c98  gcc/ada/libgnat/s-explllu.ads
! 577543f6a4d765bbe821b51c07d376bf  gcc/ada/libgnat/s-expllu.adb
! 8304c09feb7ff460ceeae074337a95a2  gcc/ada/libgnat/s-expllu.ads
! 8374ec9c01d87444093923ea4c40ad7e  gcc/ada/libgnat/s-expmod.adb
! 1bbd9e743dd64e9ceff1b44efdf5bb7b  gcc/ada/libgnat/s-expmod.ads
! 7a359f2ede44f4fdd9e17f24ff5ff43f  gcc/ada/libgnat/s-exponn.adb
! 80f416a51f00bae9cd837d44d9e99802  gcc/ada/libgnat/s-exponn.ads
! 4daca817ca307a111967d860e456d882  gcc/ada/libgnat/s-exponr.adb
! 7436d7b9e030e44e4f17bdfbe02fc6b6  gcc/ada/libgnat/s-exponr.ads
! a2a97950c093c507007fb5dc958076a3  gcc/ada/libgnat/s-expont.adb
! 0990310b8dfbdd712a4cf76b4b8f684e  gcc/ada/libgnat/s-expont.ads
! 1abec7c9646730a26cb0d57b7d03f109  gcc/ada/libgnat/s-exponu.adb
! 9bce6e7edcce894b4287f113fc3ce31c  gcc/ada/libgnat/s-exponu.ads
! 14aebc8be36d90878bbf3fa74b6dfbaf  gcc/ada/libgnat/s-expuns.adb
! 6741d00029fe29eb43e510da1fc69348  gcc/ada/libgnat/s-expuns.ads
! 116ee624ff448ab30f1a9e7747800ea3  gcc/ada/libgnat/s-fatflt.ads
! 7b65ab71af2477773c9582b0bbb4ad21  gcc/ada/libgnat/s-fatgen.adb
! da49f8c178edae80d43f287c963f673d  gcc/ada/libgnat/s-fatgen.ads
! aa7305c0bd35922c2f84ae9452b0244b  gcc/ada/libgnat/s-fatlfl.ads
! 6bea259dd86e0e4dc7953af5518c37c9  gcc/ada/libgnat/s-fatllf.ads
! 573de5881617a30b3a53a1764f26f493  gcc/ada/libgnat/s-ficobl.ads
! fb4160a3ee3512a2f54e07c1a4461020  gcc/ada/libgnat/s-filatt.ads
! a0534b255ba50e2dc27dd7dc81ba6aca  gcc/ada/libgnat/s-fileio.adb
! ee2247ade5ce3b8ec5390c210f47fe7a  gcc/ada/libgnat/s-fileio.ads
! 0e375d977bfdc7ab866bddc81d6ed3d0  gcc/ada/libgnat/s-finmas.adb
! 2f87e771ca38c527faa4a0095f2ea437  gcc/ada/libgnat/s-finmas.ads
! e774ada783b29576b5d0e552fe80cec9  gcc/ada/libgnat/s-finroo.adb
! 7eb054c4146be27b88a1d82e9dd7e9fd  gcc/ada/libgnat/s-finroo.ads
! 8f06d90ed6b0d19f0ac52019c3f0cab7  gcc/ada/libgnat/s-flocon.adb
! 72bcf78228422487b353b3ef293b47b5  gcc/ada/libgnat/s-flocon.ads
! 2868a054ff8a75f08871444752806f19  gcc/ada/libgnat/s-flocon__none.adb
! d9100ac54d886a820bc761d4b1011367  gcc/ada/libgnat/s-fode128.ads
! 6e1b8086647695ea252a985c234187d6  gcc/ada/libgnat/s-fode32.ads
! 97bd21ed38f484a3dcd79f726721a75c  gcc/ada/libgnat/s-fode64.ads
! 8b4261f24818813edf49d33e80104862  gcc/ada/libgnat/s-fofi128.ads
! 8f4fec52d2e87d175e3014802dfb4895  gcc/ada/libgnat/s-fofi32.ads
! 75db4e558b17136337a31385ac750638  gcc/ada/libgnat/s-fofi64.ads
! 92018ac460ab4ff9b04e302e652d64c4  gcc/ada/libgnat/s-fore_d.adb
! 8f1d263e2e28dfaf142b43c82f706b15  gcc/ada/libgnat/s-fore_d.ads
! 76e30b1e40552b96fc426faf3b61cdfd  gcc/ada/libgnat/s-fore_f.adb
! 512b09cdec5d879f25798a7abf7c58c6  gcc/ada/libgnat/s-fore_f.ads
! ba346875ad154b36248e6079d3289fbc  gcc/ada/libgnat/s-forrea.adb
! bd502dda780d8937cb41db3f3f0e2e2b  gcc/ada/libgnat/s-forrea.ads
! 5ca3fdd5ab1b38ab57ba492007c4e17c  gcc/ada/libgnat/s-gearop.adb
! cb3a5533d9038f16078dc2c96ea9af4a  gcc/ada/libgnat/s-gearop.ads
! ff6a9f72bc1e109569388dee6b3254e0  gcc/ada/libgnat/s-genbig.adb
! 23caa17005b767020406d5758fe2cb02  gcc/ada/libgnat/s-genbig.ads
! 245b86cdfb6f5b2c7e4b1d771dc2ffb8  gcc/ada/libgnat/s-geveop.adb
! 0f77fdbf1ddfe614fe464e248db0be4a  gcc/ada/libgnat/s-geveop.ads
! ca37fcc1d27a452eec9cba482d681604  gcc/ada/libgnat/s-gloloc.adb
! 291125b5723bd3b57325af48bc88aaf9  gcc/ada/libgnat/s-gloloc.ads
! ee8b7aa312e7df739cdb1b51fd391f28  gcc/ada/libgnat/s-gloloc__mingw.adb
! 607d78f697323e569aee853d829f1c30  gcc/ada/libgnat/s-htable.adb
! 79fcc0ab2eff85c19ba31c24ce3dac2a  gcc/ada/libgnat/s-htable.ads
! b4e9e83bee32a0c9f2068f0fc433f003  gcc/ada/libgnat/s-imageb.adb
! e1839397ca6b095c61540f48bdcec394  gcc/ada/libgnat/s-imageb.ads
! 651a2d822562255008ecccb31964c0c2  gcc/ada/libgnat/s-imaged.adb
! 452b38a09fec27d07893c95b85eff1e3  gcc/ada/libgnat/s-imaged.ads
! 1d329e9ffe103ffc7f649a7490242e7f  gcc/ada/libgnat/s-imagef.adb
! 7cf85c9907120bcadad87caadef2f093  gcc/ada/libgnat/s-imagef.ads
! 92480b8a6b8718744720309b04377f30  gcc/ada/libgnat/s-imagei.adb
! 15ed749cfd087715749570093f6948c9  gcc/ada/libgnat/s-imagei.ads
! 248bd7892456dcfe650f4c49efa663ec  gcc/ada/libgnat/s-imagen.adb
! f8ef17e64d325b7b0fa5aaf485dd6771  gcc/ada/libgnat/s-imagen.ads
! 3e3a8bbd324c67782fbb8368d69de778  gcc/ada/libgnat/s-imager.adb
! 681988682571761db81f040d27cd3d2e  gcc/ada/libgnat/s-imager.ads
! 0d68d1ad7fb1587a6c7105bd58e5bd2b  gcc/ada/libgnat/s-imageu.adb
! 4ea01eda44514bb5a72429239a23b1fe  gcc/ada/libgnat/s-imageu.ads
! 3c2ac02f10fef8b6aa5408262dc6de52  gcc/ada/libgnat/s-imagew.adb
! 308e6733c4a6787518f0782988528974  gcc/ada/libgnat/s-imagew.ads
! b9c24f0c023479442ac713b3a06180cf  gcc/ada/libgnat/s-imde128.ads
! d3d1269625e48a465d1d2b60bf6251b6  gcc/ada/libgnat/s-imde32.ads
! 19476a04aa026d230c11819398de1f5a  gcc/ada/libgnat/s-imde64.ads
! 3ecdcf716e22ce525fa30b54c417c742  gcc/ada/libgnat/s-imen16.ads
! 5c06c21ac0900e3cf7b072cd507d3088  gcc/ada/libgnat/s-imen32.ads
! e004b6a7d15913aa0f309abd059da2db  gcc/ada/libgnat/s-imenu8.ads
! fb3f989ac16f1d0c3f01f460eb9ea88a  gcc/ada/libgnat/s-imfi128.ads
! b6e806508f463b1a6230a39a7f187b9a  gcc/ada/libgnat/s-imfi32.ads
! 4233a1083da387fe94701a0ebd1fd89f  gcc/ada/libgnat/s-imfi64.ads
! b01d3525f2ba9c2e0382c73b74958974  gcc/ada/libgnat/s-imgbiu.adb
! 344d1b07118617ea19c141aeaddc82e9  gcc/ada/libgnat/s-imgbiu.ads
! 01c8d9d748dfc3d52a24617c8ec42b12  gcc/ada/libgnat/s-imgboo.adb
! d70bfd0182c35ed6698d05e407ed0746  gcc/ada/libgnat/s-imgboo.ads
! bcbc3c5f5403fd63ecf26e8e4be62f4c  gcc/ada/libgnat/s-imgcha.adb
! 3f43530ee5e725e3fe512ac6e04fa150  gcc/ada/libgnat/s-imgcha.ads
! a4cfaf5f5bb956dacf0f4dd61d51ded7  gcc/ada/libgnat/s-imgflt.ads
! 7244ff38a45bff2392df3300ab8893f6  gcc/ada/libgnat/s-imgint.adb
! ad6ba27627d5e2b76a88beff308ee1fa  gcc/ada/libgnat/s-imgint.ads
! 93199d606e36963200458bfe9e8dbd1b  gcc/ada/libgnat/s-imglfl.ads
! 6143e32c8d26c9501b55d18f2ca8c0a3  gcc/ada/libgnat/s-imgllb.adb
! 51f4e0bdfb45d3b326b8db3beae9dfd1  gcc/ada/libgnat/s-imgllb.ads
! f2d644d41f9bc93bd64882b13b4290a7  gcc/ada/libgnat/s-imgllf.ads
! 351c40b473199ad347a47a0ae3bf500b  gcc/ada/libgnat/s-imglli.adb
! 527def7e0930c3bdfe1f5f5e24214cba  gcc/ada/libgnat/s-imglli.ads
! 24165a6c9ecb128ef8469c64279ada04  gcc/ada/libgnat/s-imglllb.ads
! 10117c5d1fa390691e9ca04843e76d4b  gcc/ada/libgnat/s-imgllli.ads
! 1e5df5459175bd2e37c428f9ef8a5a21  gcc/ada/libgnat/s-imglllu.ads
! 22078c4ca41d578b245c2fad9d8033f9  gcc/ada/libgnat/s-imglllw.ads
! f5cf38ea8309630dc3c308e2678bae42  gcc/ada/libgnat/s-imgllu.adb
! 58083eb683482374bbf030fa39aa7f87  gcc/ada/libgnat/s-imgllu.ads
! d872df006c0a2e200580c34f3225bc77  gcc/ada/libgnat/s-imgllw.adb
! 16b3788ceb68446afd0c5f1a2afb6cb9  gcc/ada/libgnat/s-imgllw.ads
! fefe5c44ea532d63bff7335658d5b7c7  gcc/ada/libgnat/s-imgrea.adb
! 7eddcecdc17e121ec2a264656dc359f4  gcc/ada/libgnat/s-imgrea.ads
! 5fe5f99698e2909d6ef7f40c3c2273d0  gcc/ada/libgnat/s-imguns.adb
! 49fa4baf1ee81b45202d22a5344cbe14  gcc/ada/libgnat/s-imguns.ads
! 87adf7b3ba7f785827442f507069ba9b  gcc/ada/libgnat/s-imguti.adb
! 7ac96728917421da97f09a5da00c22de  gcc/ada/libgnat/s-imguti.ads
! 902ab828ef6cf26faf2bc93523613752  gcc/ada/libgnat/s-imgwch.adb
! adab05bc12343a7df732defe4afd821e  gcc/ada/libgnat/s-imgwch.ads
! 5cc89e3686cb238be0714258032b40e4  gcc/ada/libgnat/s-imgwiu.adb
! f13b9f8b71f4dcbab7e4727ecd2a8959  gcc/ada/libgnat/s-imgwiu.ads
! 28f1aca2bed9eaeec8f34295c6b860f7  gcc/ada/libgnat/s-io.adb
! 6b57c2fec73ebae7cf6135d6915c91bf  gcc/ada/libgnat/s-io.ads
! 320f3f41a7f7a2185831585e3707edb3  gcc/ada/libgnat/s-llflex.ads
! c79a38f6fe9a7007ec08da6c860312c0  gcc/ada/libgnat/s-maccod.ads
! 301039cc524df87a3e5688c4d1c05818  gcc/ada/libgnat/s-mantis.adb
! f623c088dca12ea5ded580e73c4e54c2  gcc/ada/libgnat/s-mantis.ads
! 4027896219be3509e6773ce748cb8b32  gcc/ada/libgnat/s-mastop.adb
! defa3dbe4a1d2b1ec69483ec24a937e4  gcc/ada/libgnat/s-mastop.ads
! 95034e3f9415eae054fb876fbeab6291  gcc/ada/libgnat/s-memcop.ads
! 085c243e60a5ccd9184dfcaae766d134  gcc/ada/libgnat/s-memory.adb
! cfe60c711f02afa308070e738b95734b  gcc/ada/libgnat/s-memory.ads
! 07e0782982fdbcbfc304a2b2bf18172d  gcc/ada/libgnat/s-mmap.adb
! b6e867413d7906404727f047103b4e25  gcc/ada/libgnat/s-mmap.ads
! 56463b134804444a2ba3800440ec7766  gcc/ada/libgnat/s-mmauni__long.ads
! f66b8196c0a83d867c7e14e71b2068ec  gcc/ada/libgnat/s-mmosin__mingw.adb
! fc5fcfd874cb57520e557654ab11d530  gcc/ada/libgnat/s-mmosin__mingw.ads
! 2127ce4045f7ef9ebb47c2376d701fc6  gcc/ada/libgnat/s-mmosin__unix.adb
! d3fc5f9974b69fe0bcfd7165d5a0d0ee  gcc/ada/libgnat/s-mmosin__unix.ads
! 54717e96f8ab0a23f51ee72f054b99a0  gcc/ada/libgnat/s-multip.adb
  c4045ad22005510940d70e1a445db431  gcc/ada/libgnat/s-multip.ads
! cb33954d55679fea62ec3fdc6aa801b1  gcc/ada/libgnat/s-objrea.adb
! 3bcd2b88b0abe704df34a7a2090cf029  gcc/ada/libgnat/s-objrea.ads
! 24fa35de602c7ff23642c6edd5468127  gcc/ada/libgnat/s-optide.adb
! 2c0de527ccbc5debea94e065b1fb7a33  gcc/ada/libgnat/s-os_lib.adb
! 9421da0ca0b42a3dbb96a44737d7603d  gcc/ada/libgnat/s-os_lib.ads
! 1caf4649068df2c49e1b346f53d65371  gcc/ada/libgnat/s-osprim.ads
! 0aaeb300f8be8dac76c8d40256197cd9  gcc/ada/libgnat/s-osprim__darwin.adb
! ad65a0d332575119d56e88f119b92c3f  gcc/ada/libgnat/s-osprim__lynxos.ads
! 3aeadefbcc4ef90f22767f4537da3828  gcc/ada/libgnat/s-osprim__mingw.adb
! abe705ddf10b18c36ec0e430d84e2564  gcc/ada/libgnat/s-osprim__posix.adb
! 0a62049a92487c574ce8d1c72e15894f  gcc/ada/libgnat/s-osprim__posix2008.adb
! 8a84c7ca92c5c4741d948ea4287d6f47  gcc/ada/libgnat/s-osprim__rtems.adb
! 19c20a2e1787a04edbf5de909e92a8c0  gcc/ada/libgnat/s-osprim__solaris.adb
! 4b3fff34030828ac71b2b3d0cf00a6e5  gcc/ada/libgnat/s-osprim__unix.adb
! 5a63c03b026252de5cb564fd63737478  gcc/ada/libgnat/s-osprim__x32.adb
! d25641aaf33d7f666fbb3772c363be99  gcc/ada/libgnat/s-pack03.adb
! 9f4fdf3fd49f0f3b2f08a83f464d9d96  gcc/ada/libgnat/s-pack03.ads
! 200fe2e72e23cc4a94c006cf7b8f4f13  gcc/ada/libgnat/s-pack05.adb
! 275f3c1444598f8a459f98148a4a4624  gcc/ada/libgnat/s-pack05.ads
! 33eab0ca9722d477c99180ec7cff8b88  gcc/ada/libgnat/s-pack06.adb
! 3ffbf84f7c40e6927d7f7488a530cfca  gcc/ada/libgnat/s-pack06.ads
! 4c826ce8873961725512d47fa5a701cc  gcc/ada/libgnat/s-pack07.adb
! ba6a5e2f222e8cbc22d4062d2d96177c  gcc/ada/libgnat/s-pack07.ads
! 1cd9d4020044ca4ec1173ca860b55489  gcc/ada/libgnat/s-pack09.adb
! b714d2769823db0726a8b9803df67c61  gcc/ada/libgnat/s-pack09.ads
! ef452b0122f53c9ec7af6d40117e99fc  gcc/ada/libgnat/s-pack10.adb
! 0c9fe3d7c6873c7ba9215a2fd0995744  gcc/ada/libgnat/s-pack10.ads
! 5929ace58ef0d945e001f1b953648f6d  gcc/ada/libgnat/s-pack100.adb
! 90ce2ebf8b6013ead9513c41918b0523  gcc/ada/libgnat/s-pack100.ads
! 0cf955b591b2beab99fab003c1b44bd1  gcc/ada/libgnat/s-pack101.adb
! 06be736dbbf4322a19311ffa0b87237b  gcc/ada/libgnat/s-pack101.ads
! b22f78e410bdb91ee1299df0626bef3d  gcc/ada/libgnat/s-pack102.adb
! a8b8cb6dc717506ce03b3a9f2172eeaf  gcc/ada/libgnat/s-pack102.ads
! 42cfef1b4ab1e04035188f92f464abb9  gcc/ada/libgnat/s-pack103.adb
! cfcfdbadd3aa4becff8fdf90be367901  gcc/ada/libgnat/s-pack103.ads
! d9ba365f6d51ef3bb645fccec31c1b3e  gcc/ada/libgnat/s-pack104.adb
! 68da42587a578c34ab3094291e775c8d  gcc/ada/libgnat/s-pack104.ads
! 07f5461e55d7c6de90dbc02faa721e1a  gcc/ada/libgnat/s-pack105.adb
! 2918a814fcf772d70c1526af81064584  gcc/ada/libgnat/s-pack105.ads
! d094e04cd5e5df84c91531a7969f4acb  gcc/ada/libgnat/s-pack106.adb
! 3af114ad20d5b5839f6ad3de7f8dae2e  gcc/ada/libgnat/s-pack106.ads
! c00ac5825bfc8a32510508d0b912e69f  gcc/ada/libgnat/s-pack107.adb
! 2fde88f13548137aac68ee5ee6d3ed33  gcc/ada/libgnat/s-pack107.ads
! 046b062970f1d96256b523e455051514  gcc/ada/libgnat/s-pack108.adb
! 3b9c89ce7b8d306e6c6314576f4b0399  gcc/ada/libgnat/s-pack108.ads
! 077d24be1b66af1b9949cdee2ef85528  gcc/ada/libgnat/s-pack109.adb
! b9840758b6b59e07a4562b00a3ebbb00  gcc/ada/libgnat/s-pack109.ads
! 6cc07afd261648cf3ef8127a98eace28  gcc/ada/libgnat/s-pack11.adb
! c1f057c595b42fef8e0e28b219707d36  gcc/ada/libgnat/s-pack11.ads
! d296ebbe34f969ec2b51db5574a3e705  gcc/ada/libgnat/s-pack110.adb
! 48646c423fabcc7d0fbdc6c9d7cb15ea  gcc/ada/libgnat/s-pack110.ads
! 7b3695ea6e1cd9066189923def9c37a2  gcc/ada/libgnat/s-pack111.adb
! ff46d57a89537cf3080a661be245ca32  gcc/ada/libgnat/s-pack111.ads
! 0bcaac1733f959d253f2d94ca965558d  gcc/ada/libgnat/s-pack112.adb
! c87e1b3ae1831e6fb8daba55303e212c  gcc/ada/libgnat/s-pack112.ads
! 84d4a9102e1fc4fb2da464a79c7f5682  gcc/ada/libgnat/s-pack113.adb
! 1feb42509683b1fbd90cbad7eee64b8e  gcc/ada/libgnat/s-pack113.ads
! 8cab8151b6ebb7ea6cbf91872817e6e1  gcc/ada/libgnat/s-pack114.adb
! 822a18d9d2f0bbff595f9a8a36a6f816  gcc/ada/libgnat/s-pack114.ads
! dceeb58aacd13dee3a7198388278a889  gcc/ada/libgnat/s-pack115.adb
! e0423d6b821fe5be2fe6f10f86893169  gcc/ada/libgnat/s-pack115.ads
! b191152b08bac732701ab0e1b69e1a99  gcc/ada/libgnat/s-pack116.adb
! 498929ca30cc266c8d7c1f4938894c58  gcc/ada/libgnat/s-pack116.ads
! 4d0dc6673cceef2b3baead8d0ca482f4  gcc/ada/libgnat/s-pack117.adb
! 6edc43307f9608895c18d1b66c6b755b  gcc/ada/libgnat/s-pack117.ads
! 251f135935b416801f50357d5fc8cbe5  gcc/ada/libgnat/s-pack118.adb
! dbd959ac84d4d4fd10d079dc0ef15758  gcc/ada/libgnat/s-pack118.ads
! 42ddafbfba2e12a8ed6bc71728db5201  gcc/ada/libgnat/s-pack119.adb
! d44074326f428581711dbd66fb40c8b5  gcc/ada/libgnat/s-pack119.ads
! b533bb2865277777a5c835479a206cec  gcc/ada/libgnat/s-pack12.adb
! 776a911286eb5bbb84a2ed1b21df47c1  gcc/ada/libgnat/s-pack12.ads
! a26e39e2d175dabb3c67ab910068a0e5  gcc/ada/libgnat/s-pack120.adb
! 26e07342045744b2735a079052637d18  gcc/ada/libgnat/s-pack120.ads
! 58b2f60440236abc252379562b404787  gcc/ada/libgnat/s-pack121.adb
! 7a12d4f85dd410ecd74efa9a23a55b7c  gcc/ada/libgnat/s-pack121.ads
! 5b7b3751acc238a2a5d2c5ff5bfef272  gcc/ada/libgnat/s-pack122.adb
! ed46f9c526a063b9341c15a1615fdb9c  gcc/ada/libgnat/s-pack122.ads
! 68434c7b491447e3f4d788d237dfe6d4  gcc/ada/libgnat/s-pack123.adb
! c7d513350ca1f0a9e4fa5524fdeab580  gcc/ada/libgnat/s-pack123.ads
! 0ba596dab560e2109f77401658bfd753  gcc/ada/libgnat/s-pack124.adb
! 3542acf00ae6a394c1489da6aacdc63c  gcc/ada/libgnat/s-pack124.ads
! b485ffbd119b826a132325a2f10d320a  gcc/ada/libgnat/s-pack125.adb
! d9620b1cbd51ef518bbdb811998042a0  gcc/ada/libgnat/s-pack125.ads
! 11f86b513e37a70a0ee9119126239697  gcc/ada/libgnat/s-pack126.adb
! a348fcaa9e1626d5ce710e7b3984aae7  gcc/ada/libgnat/s-pack126.ads
! edbbe5cb5b650103a9e2054944ec8da7  gcc/ada/libgnat/s-pack127.adb
! b3dfd962f2a3caf94a005864af38bbe6  gcc/ada/libgnat/s-pack127.ads
! 8300e8e576b668fb9f307fb898b63d2c  gcc/ada/libgnat/s-pack13.adb
! 54d9552362a662d00f7dd2eaf1058d45  gcc/ada/libgnat/s-pack13.ads
! 11b1d6fb847a8be88db3a2c427f7238b  gcc/ada/libgnat/s-pack14.adb
! 1e461003362cf711f620b0e2298a02c6  gcc/ada/libgnat/s-pack14.ads
! 8be4fb050d96e472803880bbfb909e9a  gcc/ada/libgnat/s-pack15.adb
! 8ec5f5d58993982c172b62616d07c1aa  gcc/ada/libgnat/s-pack15.ads
! f522cdc2215f8bee278cd7d69e655745  gcc/ada/libgnat/s-pack17.adb
! 1412b1efbd1d1566d0be2d2637f6d0d4  gcc/ada/libgnat/s-pack17.ads
! 8da3c2d3ced9ab248246db267ae53d14  gcc/ada/libgnat/s-pack18.adb
! ae932c5a47b74e54df482ddee13848cc  gcc/ada/libgnat/s-pack18.ads
! c606782df34fcefb55bc6c57652c06e4  gcc/ada/libgnat/s-pack19.adb
! ef72f7ac4927751dbbdb49182c118fde  gcc/ada/libgnat/s-pack19.ads
! 0aa5ea09b0e9d11b3d3b96b969b11451  gcc/ada/libgnat/s-pack20.adb
! acba69dad08d96069cf50b32b401a3c5  gcc/ada/libgnat/s-pack20.ads
! dbd70945a0cc915a52916b62fa0282d0  gcc/ada/libgnat/s-pack21.adb
! 82e252ff8dd4349f012aa37724978a24  gcc/ada/libgnat/s-pack21.ads
! d7a7552ee84103ba9b2d41776c1d3bb8  gcc/ada/libgnat/s-pack22.adb
! 549721bd8074a3bc6bcc2da729af406c  gcc/ada/libgnat/s-pack22.ads
! a3bb100ef436c6ee9847476f0e05a178  gcc/ada/libgnat/s-pack23.adb
! 2e7981b238752a423ae838743f0b3ec7  gcc/ada/libgnat/s-pack23.ads
! dccc69a737f4f0da16a1c71db552c405  gcc/ada/libgnat/s-pack24.adb
! 45606d02d24d719ce6bbd353750f7ab3  gcc/ada/libgnat/s-pack24.ads
! fc2e1dcdcc46330e7343ef1231f0d996  gcc/ada/libgnat/s-pack25.adb
! 142f20da741d936f19b23d31509afa75  gcc/ada/libgnat/s-pack25.ads
! 4338247777594e5e245b6467a5a73947  gcc/ada/libgnat/s-pack26.adb
! eb325d24d6e07ebc0c673718dc0dfeaa  gcc/ada/libgnat/s-pack26.ads
! 961abf78d747c2a5570a1fe54c97651e  gcc/ada/libgnat/s-pack27.adb
! e4bbcf5eeac32668eba63969bd601c20  gcc/ada/libgnat/s-pack27.ads
! 15befc690db3987847a7e37e9f702e90  gcc/ada/libgnat/s-pack28.adb
! 266c1cfc03bf30b90ebd3b9097014735  gcc/ada/libgnat/s-pack28.ads
! d4bb9655fd743eb7451b2bdada64b3b6  gcc/ada/libgnat/s-pack29.adb
! 474a087eead66708fd59eb9dd09f7037  gcc/ada/libgnat/s-pack29.ads
! 2bd7ca0d7115bab0823580b2c54d26f1  gcc/ada/libgnat/s-pack30.adb
! c11f1d0d888965ae7e9f8dab57d67d7f  gcc/ada/libgnat/s-pack30.ads
! 8327f99f704ba593a886122f8f335a8f  gcc/ada/libgnat/s-pack31.adb
! ef2bf47153095b2d1ab9acc96023d233  gcc/ada/libgnat/s-pack31.ads
! f5f22afa53d0298aa1a64948924f09ca  gcc/ada/libgnat/s-pack33.adb
! 542d852f26854a95bc50324bd4e156a2  gcc/ada/libgnat/s-pack33.ads
! 3fc27b698884290d290a68ac6eb4f7f3  gcc/ada/libgnat/s-pack34.adb
! d271ac237f014eec2c80b33ac5438f40  gcc/ada/libgnat/s-pack34.ads
! 84468a9e4ecc0b11ae84c8ca0e488b13  gcc/ada/libgnat/s-pack35.adb
! 97585cd3da6a64d517be8256487cb13a  gcc/ada/libgnat/s-pack35.ads
! 748ad7b25d66626b9b2de17dfb8e21f5  gcc/ada/libgnat/s-pack36.adb
! 2cdc52e622da8b6097778e9ee07dc151  gcc/ada/libgnat/s-pack36.ads
! 8cba9c8335c3396d5668ce014a5d765e  gcc/ada/libgnat/s-pack37.adb
! 8376d58a09b83d9786cec955d691838a  gcc/ada/libgnat/s-pack37.ads
! 547abeac04fff297d844c56789374bb6  gcc/ada/libgnat/s-pack38.adb
! af9d638c5b5d7e02a7ea81321a801c2b  gcc/ada/libgnat/s-pack38.ads
! 652375d41682361ac2236e1200d43458  gcc/ada/libgnat/s-pack39.adb
! e6c131053689f7b9d4dfafcd86823441  gcc/ada/libgnat/s-pack39.ads
! 72793ae836c66abe332921ae2ba80fb4  gcc/ada/libgnat/s-pack40.adb
! 12b6cc1bd936e14c67aa670d9d984817  gcc/ada/libgnat/s-pack40.ads
! 3b498d338ade5164b03a4839563c808d  gcc/ada/libgnat/s-pack41.adb
! 44757dfb4c7f2d06639b30d566897d6f  gcc/ada/libgnat/s-pack41.ads
! fb0b740d0316319630965f1380f6d976  gcc/ada/libgnat/s-pack42.adb
! d2f81524fbb5783bf83088dd8c0b2a59  gcc/ada/libgnat/s-pack42.ads
! 159d7e6be00a385ae600f1c7dd5c0ade  gcc/ada/libgnat/s-pack43.adb
! e73444ecb59901dc4abbc58639956409  gcc/ada/libgnat/s-pack43.ads
! c68e4525acde084bd70752a3500dab9d  gcc/ada/libgnat/s-pack44.adb
! b29f166d54367d94a0a3e91949aa330c  gcc/ada/libgnat/s-pack44.ads
! 50f7527ef2809e90142196287948fa00  gcc/ada/libgnat/s-pack45.adb
! 8a53b6032fcbc1d7b93fcd873897043c  gcc/ada/libgnat/s-pack45.ads
! 1f5dda181e843531fa9e3093801bbbc2  gcc/ada/libgnat/s-pack46.adb
! 371bca975e84150c5f7068988f1e2d5d  gcc/ada/libgnat/s-pack46.ads
! 11a721a1b28c625b488e9223a4a4730d  gcc/ada/libgnat/s-pack47.adb
! 74cb086335051c23116b832b90d3e975  gcc/ada/libgnat/s-pack47.ads
! 354f8a9bd3762f8ce6746fee0898074a  gcc/ada/libgnat/s-pack48.adb
! 8e71e801d6d265ea5748558db23d8529  gcc/ada/libgnat/s-pack48.ads
! 5f68b98b250d12cb939cb280a626e41c  gcc/ada/libgnat/s-pack49.adb
! 9ed8563c6803ba87054e5e6ed0fe3172  gcc/ada/libgnat/s-pack49.ads
! 331bdaac9a953cd06c707d447ded824e  gcc/ada/libgnat/s-pack50.adb
! 4e932532d50a2e3d316983284f5fbbb3  gcc/ada/libgnat/s-pack50.ads
! ed213cda9f438d7317075394e982e991  gcc/ada/libgnat/s-pack51.adb
! 317a090e189736eab0a4d6c0262e79c2  gcc/ada/libgnat/s-pack51.ads
! 706951de51a1cf67d9b8e8a8333d45e8  gcc/ada/libgnat/s-pack52.adb
! 4e89ae5a06c58f595c19d414e616c26b  gcc/ada/libgnat/s-pack52.ads
! 2ea5ca1f3c3f1297efcb6669bdd25de5  gcc/ada/libgnat/s-pack53.adb
! 78dc3833025da81b67b180dab7aaab5c  gcc/ada/libgnat/s-pack53.ads
! fa106ce649ac7b7876eeb98909e269a1  gcc/ada/libgnat/s-pack54.adb
! ff68618ba5a05e29e52ef77594332a81  gcc/ada/libgnat/s-pack54.ads
! 3971cefd060fabf107100f794f19c8e2  gcc/ada/libgnat/s-pack55.adb
! e9e426b18eb8e9830d6beb55e6a5c367  gcc/ada/libgnat/s-pack55.ads
! 322ab3b8d960968e1cdb7f01a99c7d1b  gcc/ada/libgnat/s-pack56.adb
! 4180f1cf959bcee1092f8940cf385bd7  gcc/ada/libgnat/s-pack56.ads
! 70bb967624cba3ef94d56ed57c13d9c8  gcc/ada/libgnat/s-pack57.adb
! 04878eb14283c77a496b322d10b52ab0  gcc/ada/libgnat/s-pack57.ads
! ad7203f2865a40b3ba5f2b1a07ca4f75  gcc/ada/libgnat/s-pack58.adb
! 8cbc0cb4432ba917d87bd6e1ab313cdf  gcc/ada/libgnat/s-pack58.ads
! 4f81c3b6d3e98fb5dd24acc16dac5025  gcc/ada/libgnat/s-pack59.adb
! b66b11c529d3eec96a2313a5aa36d3ad  gcc/ada/libgnat/s-pack59.ads
! 7a48724ff0d51d61d8192df9f436f4a3  gcc/ada/libgnat/s-pack60.adb
! 5df289de8808f48a2f5516bc4b0a5bb4  gcc/ada/libgnat/s-pack60.ads
! c96af3de8c1763a3667767aab0d438c9  gcc/ada/libgnat/s-pack61.adb
! 074d77cbd9f9ea8d107a4ba0a4c43942  gcc/ada/libgnat/s-pack61.ads
! e808f4ecff83122e74edc599653d745a  gcc/ada/libgnat/s-pack62.adb
! 3c81a32d97b263ebe2943d02906f475c  gcc/ada/libgnat/s-pack62.ads
! e269ae7c9708de1af4f73d5c9c1a6c64  gcc/ada/libgnat/s-pack63.adb
! af6d464962400ffe489fa0f7796f971d  gcc/ada/libgnat/s-pack63.ads
! 3fddb1973e7b7c4110eeef1bb7a26933  gcc/ada/libgnat/s-pack65.adb
! e00cd0419d8bf5ff5f387ebc64d714a7  gcc/ada/libgnat/s-pack65.ads
! 1fb5d5bf75ab30e984b001058e3c5c41  gcc/ada/libgnat/s-pack66.adb
! 74b3a5129e650074921b39e12329e289  gcc/ada/libgnat/s-pack66.ads
! 906e2764f743b49f8f506093c310ac66  gcc/ada/libgnat/s-pack67.adb
! 9d4cc6f3d92876f167965a07c70995ef  gcc/ada/libgnat/s-pack67.ads
! 252c2651a4f9105d29ab6812f2c128f5  gcc/ada/libgnat/s-pack68.adb
! d32b4b99e48cec1376166d858a033058  gcc/ada/libgnat/s-pack68.ads
! e1f1b4fb54310e1e5bb7decc4918ba82  gcc/ada/libgnat/s-pack69.adb
! 891149b57b838d1d1bd09fd60d9169da  gcc/ada/libgnat/s-pack69.ads
! ae6d2cd0af5744d45a1789ace9ba9c69  gcc/ada/libgnat/s-pack70.adb
! 2645bdecefbd9dd6b9d2fc8689921ebe  gcc/ada/libgnat/s-pack70.ads
! 45c23b129a95c944f5343d38bf11c74c  gcc/ada/libgnat/s-pack71.adb
! f1f35828542b58de2b58fec481c724f4  gcc/ada/libgnat/s-pack71.ads
! df0873f2ca1d07f0bf1c48408fb73f95  gcc/ada/libgnat/s-pack72.adb
! be24fccf4883510779ec63bb7d8f6c05  gcc/ada/libgnat/s-pack72.ads
! c1a55806463b2eaaa090b7ce9a45a2ff  gcc/ada/libgnat/s-pack73.adb
! 2067ad1839efccf7616c4a6b8118e241  gcc/ada/libgnat/s-pack73.ads
! a3ecaa80d0a25e73d77a035e6d80ff51  gcc/ada/libgnat/s-pack74.adb
! 3376d6cc673fe8f845952c51f35ae2ba  gcc/ada/libgnat/s-pack74.ads
! 545a0ee374e5a60a3a556d11e10d3d74  gcc/ada/libgnat/s-pack75.adb
! 5fa908d0c5cef25e97cb880352b9cd90  gcc/ada/libgnat/s-pack75.ads
! 9e7254036947a67bd83634148711b041  gcc/ada/libgnat/s-pack76.adb
! 986131959959f183b7888b6bc1a21409  gcc/ada/libgnat/s-pack76.ads
! a44651e136eb214e7414a6573622b0b2  gcc/ada/libgnat/s-pack77.adb
! 0051621cabdc1e845e0350a0123c02cb  gcc/ada/libgnat/s-pack77.ads
! 07335c628bdf07973719163e214b85fb  gcc/ada/libgnat/s-pack78.adb
! 10aef6932b8066282858128d2d04911b  gcc/ada/libgnat/s-pack78.ads
! 00f0665ba2af061338280741bdfbafbe  gcc/ada/libgnat/s-pack79.adb
! c34f359c4e28a4a08eaa94f24f69eeb9  gcc/ada/libgnat/s-pack79.ads
! d6ad08e056b07b9f0239a03101e94f7c  gcc/ada/libgnat/s-pack80.adb
! dc3ee3e1424a365637402ef9fc0a48e1  gcc/ada/libgnat/s-pack80.ads
! b09b3073a59fc8fccd3868118359650a  gcc/ada/libgnat/s-pack81.adb
! 37c59077e3fe5f4353e0475568fcf642  gcc/ada/libgnat/s-pack81.ads
! 17adb6aa4fcfdca1ec6891a6de26afe4  gcc/ada/libgnat/s-pack82.adb
! 957233a649cf79202dbe57b11ec18050  gcc/ada/libgnat/s-pack82.ads
! e47ce14fd74b580a3057c26d3fc66920  gcc/ada/libgnat/s-pack83.adb
! c0db63d5f508d35d38ca819796f27c3f  gcc/ada/libgnat/s-pack83.ads
! 902d47977ea45559a18678287b4b08f0  gcc/ada/libgnat/s-pack84.adb
! b5a1dff326d9f224be406d98c535dcf7  gcc/ada/libgnat/s-pack84.ads
! f46149401d11e651047a38a38dd0e14f  gcc/ada/libgnat/s-pack85.adb
! 260740c0249879179df459162a9e94fd  gcc/ada/libgnat/s-pack85.ads
! 0c114eaccee540bbf2ec94b89f4578ad  gcc/ada/libgnat/s-pack86.adb
! 2c06d9e081c1a14038ebdbc0eb426811  gcc/ada/libgnat/s-pack86.ads
! 364da4bbb8e722dae2794bb822da0754  gcc/ada/libgnat/s-pack87.adb
! d9c111b1a35a647835050881c4deb6ad  gcc/ada/libgnat/s-pack87.ads
! a5203d08aeff045922d0e34c6f072f34  gcc/ada/libgnat/s-pack88.adb
! 32a26ba81619859221657efd6b534faf  gcc/ada/libgnat/s-pack88.ads
! c3b810ee737894e242f4d142c06ac673  gcc/ada/libgnat/s-pack89.adb
! 0fcb214d1ff471cb5971429e49a223eb  gcc/ada/libgnat/s-pack89.ads
! 380bcfe58fc4cca83a9a59a2886a2438  gcc/ada/libgnat/s-pack90.adb
! 591d51d0caedff3a92d021ede090646f  gcc/ada/libgnat/s-pack90.ads
! a2228c358f6c00f5a2974c59b9f3b37a  gcc/ada/libgnat/s-pack91.adb
! c9914af959fa3c828c2c7e15c0d376d7  gcc/ada/libgnat/s-pack91.ads
! a800ac6b20011186fc4e5a05b9fa7ce2  gcc/ada/libgnat/s-pack92.adb
! 34767a0c771f7df7a4866cedc37196e4  gcc/ada/libgnat/s-pack92.ads
! 0e579d94459c0bcf014c17327d948773  gcc/ada/libgnat/s-pack93.adb
! e92466e21a0cf6d6757a4130ac417e92  gcc/ada/libgnat/s-pack93.ads
! b1a5a1d43bf7cc7d19f2c90b33284be7  gcc/ada/libgnat/s-pack94.adb
! 6955b90a3f8d4d6bad5a267f1e63d61b  gcc/ada/libgnat/s-pack94.ads
! c2621d1b3cdbb4400253ddc446425d33  gcc/ada/libgnat/s-pack95.adb
! 995d044094faa1a0a9e601629af4a57c  gcc/ada/libgnat/s-pack95.ads
! 73bb1f2552393a6b35ce0d568e51c50e  gcc/ada/libgnat/s-pack96.adb
! 143ba2338fc80d5e4f5a0b124f1bfb3c  gcc/ada/libgnat/s-pack96.ads
! 76148d5f1f5903ef6004690caa0e98a9  gcc/ada/libgnat/s-pack97.adb
! b74d1cab04e1f53ff16e145e5de933b6  gcc/ada/libgnat/s-pack97.ads
! d2c525ea03b7ff11cf4329c9eb943d6e  gcc/ada/libgnat/s-pack98.adb
! 7154d2374426392242d2bef9121eb10b  gcc/ada/libgnat/s-pack98.ads
! 8ac552fd0f5323d52da2ba9e806e2432  gcc/ada/libgnat/s-pack99.adb
! a1f4ddb54110788c6585d9d1423a549f  gcc/ada/libgnat/s-pack99.ads
! 6b8c8383dffcee5f51ed0307ccb36010  gcc/ada/libgnat/s-parame.adb
! 2a4cbb39e4eb44ac1b38e6090a75b5bc  gcc/ada/libgnat/s-parame.ads
! 88b2b8deb8fa9c7a240f4117b5d27bd9  gcc/ada/libgnat/s-parame__hpux.ads
! 105a2869c691ef05b7f4180b36d21a7e  gcc/ada/libgnat/s-parame__posix2008.ads
! 67e535229a2c706fc0d211e642090cc8  gcc/ada/libgnat/s-parame__rtems.adb
! 7f2c038a8d7c4567ead15b351f447f46  gcc/ada/libgnat/s-parame__vxworks.adb
! 1e1b1825237465a19ca23acd0d2747f5  gcc/ada/libgnat/s-parame__vxworks.ads
! 8b5b7b647003b6984fa9018e07db2dc7  gcc/ada/libgnat/s-parint.adb
! 79cf2a481371e1774445273dac87c595  gcc/ada/libgnat/s-parint.ads
! 94dbb93b124e60ac101e79e31377967f  gcc/ada/libgnat/s-pehage.adb
! cfafd4578831586f82d5b71ecda3efeb  gcc/ada/libgnat/s-pehage.ads
! f4dbc60ca4c28f1ccdcf4fa0bdee1caa  gcc/ada/libgnat/s-pooglo.adb
! e0324de347fbb2f0c51cdb8a386b2e6f  gcc/ada/libgnat/s-pooglo.ads
! 19aaf27ebfe338c63f03d6fbb853df30  gcc/ada/libgnat/s-pooloc.adb
! 342d99649457d6e6668b71c61f34d02a  gcc/ada/libgnat/s-pooloc.ads
! ca72e0e95f1b4713a6362fa2f543a9de  gcc/ada/libgnat/s-poosiz.adb
! a2917e13bfa8180db629aa25be4d5645  gcc/ada/libgnat/s-poosiz.ads
! 2ef3c88738f10d7373bdc2b4c5d628e8  gcc/ada/libgnat/s-powflt.ads
! 744c98de7d0264a1d3ffdf26b49db3e1  gcc/ada/libgnat/s-powlfl.ads
! cd17904cc74ac299cb2c0dc094aea3b5  gcc/ada/libgnat/s-powllf.ads
! 37e2f450d59f18813e249fa0bda5077a  gcc/ada/libgnat/s-purexc.ads
! 12d53f0c0b10d54825e231bffed46681  gcc/ada/libgnat/s-putima.adb
! 67aaa69d792e38332f1c0d71d3a3ef71  gcc/ada/libgnat/s-putima.ads
! cf9ebac9d87faa4340e94ad5fc86794d  gcc/ada/libgnat/s-rannum.adb
! 20fcc7a1e6a83bf65f6dbbd70c6fe7e4  gcc/ada/libgnat/s-rannum.ads
! 7ac70c7f69793ddc1c72e476b3b3811f  gcc/ada/libgnat/s-ransee.adb
! 41a6d2cf1b265d9203d64e4ed32900e3  gcc/ada/libgnat/s-ransee.ads
! 403f1b35092d7922bfa24ebdcaf737ca  gcc/ada/libgnat/s-regexp.adb
! b15fea0bceb3ae376e64530af8c09f1a  gcc/ada/libgnat/s-regexp.ads
! 90c8a27f2a951ef5fd99bf0c76748d17  gcc/ada/libgnat/s-regpat.adb
! fe4aa33ba86eec3dc51fff4af3a25966  gcc/ada/libgnat/s-regpat.ads
! 70431524b316abc951617552ed0916b6  gcc/ada/libgnat/s-resfil.adb
! 7209216d5599d5925f5395be7d6e858d  gcc/ada/libgnat/s-resfil.ads
! bdee469c3a61358bf33f95e5e9ef40b4  gcc/ada/libgnat/s-restri.adb
! 5adc97a2bae8b99fdb1eca6a7aadaa41  gcc/ada/libgnat/s-restri.ads
! 45b41d595a35e341adfc96fb86989d24  gcc/ada/libgnat/s-retsta.ads
! 31ff0d588c403375e195ef283ec967ad  gcc/ada/libgnat/s-rident.ads
! c255735e681f8026e2857305a811bebc  gcc/ada/libgnat/s-rpc.adb
! 664946446a9e8226503fa8352d66dd3e  gcc/ada/libgnat/s-rpc.ads
! 9888548b0cc6a0070ac103ffa2b0b329  gcc/ada/libgnat/s-scaval.adb
! d33d83cd7b3be40a6ee3384a7a053c99  gcc/ada/libgnat/s-scaval.ads
! 25ab1ed448c321cbc4121ddfb2a9b6f8  gcc/ada/libgnat/s-scaval__128.adb
! 4bf90f57e2644da6048a8424b24e3b75  gcc/ada/libgnat/s-scaval__128.ads
! f99118398fd2035552352c6f44e8a92d  gcc/ada/libgnat/s-secsta.adb
! bcddab6579e422662254bfe7e72b8b34  gcc/ada/libgnat/s-secsta.ads
! 65c6d3912c28f572a2014af008181587  gcc/ada/libgnat/s-sequio.adb
! d6804a98444a1f5401d8dde0fcf28ce2  gcc/ada/libgnat/s-sequio.ads
! dd8b3ff863ac1e6e4d2fae57e7ecb4ad  gcc/ada/libgnat/s-shabig.ads
! 887ab854f2b42b638e45ffce1ee0b8f7  gcc/ada/libgnat/s-shasto.adb
! e6c71a5c8522fe52c4b6d9c2725aad9a  gcc/ada/libgnat/s-shasto.ads
! 2c6746932903c6146e576766b5721986  gcc/ada/libgnat/s-soflin.adb
! 475cbd6734f0bf6aab456a7c8f9c90de  gcc/ada/libgnat/s-soflin.ads
! 61800566b35256484032faa098bb1fcb  gcc/ada/libgnat/s-soliin.adb
! ea285eb895ac516a282d7901d6a96b73  gcc/ada/libgnat/s-soliin.ads
! c5697ce232357ed259d869aeee5e4a7a  gcc/ada/libgnat/s-spark.ads
! 550c4d81ed79658ab9491f4f01595fca  gcc/ada/libgnat/s-spcuop.adb
! 1fb954de7c71d8e60d55ec862880f46f  gcc/ada/libgnat/s-spcuop.ads
! 3f65b2082f8c4823fc399a4ced3d2811  gcc/ada/libgnat/s-spsufi.adb
! d8249ddf153fd252160e2843b0967bfd  gcc/ada/libgnat/s-spsufi.ads
! f2df299b58b54d7485736192991411c0  gcc/ada/libgnat/s-stache.adb
! 753ee680cc0951dfe95c73c172dc76ae  gcc/ada/libgnat/s-stache.ads
! feceefe26547305e101a97af5d34c767  gcc/ada/libgnat/s-stalib.adb
! f6b59d231fdd81730fd6d2f2b9ffa069  gcc/ada/libgnat/s-stalib.ads
! 8d8bac57aa30b358d2566fe83465e4e7  gcc/ada/libgnat/s-statxd.adb
! dc8ba98da070464b91221f3dfc8ffeb6  gcc/ada/libgnat/s-statxd.ads
! e8c58cda496af3241b4ca46cf945c689  gcc/ada/libgnat/s-stausa.adb
! a975a7f18de1f1f5c8da6f2384175b1b  gcc/ada/libgnat/s-stausa.ads
! 51b35ec7234a3224deee695e22d57ddd  gcc/ada/libgnat/s-stchop.adb
! fbc760344ff4867f4868b2928137db8f  gcc/ada/libgnat/s-stchop.ads
! 5924e5cb4b3e32809113b795e418efc5  gcc/ada/libgnat/s-stchop__limit.ads
! a845759ca7545ffe7ea7d86a6a867c69  gcc/ada/libgnat/s-stchop__vxworks.adb
! 939534b88bac6edc0e057a28352af518  gcc/ada/libgnat/s-stoele.adb
! 38e48db96a47eb13259c70ae75ac3cf1  gcc/ada/libgnat/s-stoele.ads
! 425a5d46fd725b290bc16d8e6a778a9d  gcc/ada/libgnat/s-stopoo.adb
! 9324411deb777159107eefa6d17ed9ea  gcc/ada/libgnat/s-stopoo.ads
! 3aebb5ee4350f712d8f571f6326a1f6e  gcc/ada/libgnat/s-stposu.adb
! ea1e1a3f35f2d87d360a6fa148cf942f  gcc/ada/libgnat/s-stposu.ads
! 013a1fe809f60910c3103c300c64bd3d  gcc/ada/libgnat/s-stratt.adb
! 6c3dfd4ebb852fee1d9774d767dbb81f  gcc/ada/libgnat/s-stratt.ads
! 70b332da7eda1ec450237b14aa2af268  gcc/ada/libgnat/s-strcom.adb
! 2a0218d1c1e6ec64488268f095bf2e48  gcc/ada/libgnat/s-strcom.ads
! 8344e9be8858b4a58f811df7d3c9d77e  gcc/ada/libgnat/s-strhas.adb
! 21a5c32951993cb9999c1c887dfb1d62  gcc/ada/libgnat/s-strhas.ads
! 5f7210023091fc1d4dc8aa691efbba96  gcc/ada/libgnat/s-string.adb
! aedb78fa51f5b11d16e365ca1dd6884c  gcc/ada/libgnat/s-string.ads
! 52b7b9904dfc7a365e58a85664d595e5  gcc/ada/libgnat/s-ststop.adb
! 17a462e1e90582ecdb10b2cfb29ea655  gcc/ada/libgnat/s-ststop.ads
! 3292a6ae948975ed1b9c3ab84e4d859d  gcc/ada/libgnat/s-tasloc.adb
! 88be282fd0b5232eb3dd04166bec7b08  gcc/ada/libgnat/s-tasloc.ads
! b758f1cffe4a1b2698558b4de461b191  gcc/ada/libgnat/s-traceb.adb
! 1f7e72436ff71804219d195ac95d9396  gcc/ada/libgnat/s-traceb.ads
! a936ee5656c7d0b966b358d6f7923747  gcc/ada/libgnat/s-traceb__hpux.adb
! 70c491a107fee30a48b6cd00a47f810e  gcc/ada/libgnat/s-traceb__mastop.adb
! 8176a37b5372fc95dbb4402206b5dcf2  gcc/ada/libgnat/s-traent.adb
! da73d2c0552f6bf0274628bb262d8e15  gcc/ada/libgnat/s-traent.ads
! de3beb6a96cb5bde5ecf6286289eb9af  gcc/ada/libgnat/s-trasym.adb
! cb4176896127cfed83a4d4cd8a9cebdd  gcc/ada/libgnat/s-trasym.ads
! 7b7c2276e964a4fd738568845db8a3e5  gcc/ada/libgnat/s-trasym__dwarf.adb
! 97ae80ac65fb2fc4931a1af0770629fb  gcc/ada/libgnat/s-tsmona.adb
! 2d04c24c4830d3f99356a82a9751455b  gcc/ada/libgnat/s-tsmona__linux.adb
! d4d61fa96db565590cf71776b204bc48  gcc/ada/libgnat/s-tsmona__mingw.adb
! ca8d2d879fd8db9e676b8986b0f97081  gcc/ada/libgnat/s-unstyp.ads
! 5e6d12c7f8cd251e5578ee5f6e00765d  gcc/ada/libgnat/s-utf_32.adb
! 39e0e15366c5df8ab1d6b696daa0767e  gcc/ada/libgnat/s-utf_32.ads
! 20ec81199aeec5fcf471601cb0a96581  gcc/ada/libgnat/s-vade128.ads
! 427225212d72102de0ada6a215f035d0  gcc/ada/libgnat/s-vade32.ads
! f20f08c54938d44abb6b62fbff9b0b0d  gcc/ada/libgnat/s-vade64.ads
! 77851498f995173f449a55c400430976  gcc/ada/libgnat/s-vaen16.ads
! 311b9c20f00a2a4dc54130bbb8d3980b  gcc/ada/libgnat/s-vaen32.ads
! cd492b73e3e478c7cbd4215c896615cb  gcc/ada/libgnat/s-vaenu8.ads
! 6aabe67cf2b1c063af8505ab64efab6e  gcc/ada/libgnat/s-vafi128.ads
! f8086352d83a087fa2e5d6db8b967b4b  gcc/ada/libgnat/s-vafi32.ads
! 8fb9addd9cc9440c30bad32c9f2332c4  gcc/ada/libgnat/s-vafi64.ads
! e2f501bb97ca94460b0968c743c834f9  gcc/ada/libgnat/s-vaispe.adb
! d0d32f3b3d669b23b6b9521cab30132e  gcc/ada/libgnat/s-vaispe.ads
! f2318310d797df0879e02e8b9e2570ba  gcc/ada/libgnat/s-valboo.adb
! 72a8289d274a7173ec2509dd54c1bc26  gcc/ada/libgnat/s-valboo.ads
! e3865dd77c898ab75028319bcbff1fc5  gcc/ada/libgnat/s-valcha.adb
! cb4b37b4bbc122067dcd0551c64de447  gcc/ada/libgnat/s-valcha.ads
! 5821165ecffe775a1faeec072599a3b7  gcc/ada/libgnat/s-valflt.ads
! d2af1561e1c40909033bbdcb98c0499f  gcc/ada/libgnat/s-valint.adb
! 87ba99dd0be6bbe02d4160ed48b3d648  gcc/ada/libgnat/s-valint.ads
! 2ab616c6bbac1d42f33251ff07c247d0  gcc/ada/libgnat/s-vallfl.ads
! 8544863bae79f91d849d86595f5fe1e0  gcc/ada/libgnat/s-valllf.ads
! 1ea9b4867d6f0c7bd1b1931406ece0aa  gcc/ada/libgnat/s-vallli.adb
! ab879a3cdb6a435d9d6c32ae4785f8d9  gcc/ada/libgnat/s-vallli.ads
! f6b1c80ef89f1f06c423a858965a8db0  gcc/ada/libgnat/s-valllli.ads
! e1228ae9c3ef343daf106213d30e9740  gcc/ada/libgnat/s-vallllu.ads
! d7e9deda7289dfa746a3ca360055ff33  gcc/ada/libgnat/s-valllu.adb
! e7c313bd44df770f06b52e2ac9fc02eb  gcc/ada/libgnat/s-valllu.ads
! 22258154166d7788dd69358131771776  gcc/ada/libgnat/s-valrea.adb
! 0f29ce33983e7b1ab5b8c091671312e9  gcc/ada/libgnat/s-valrea.ads
! 477180aa3d9bbd323893538eefe44c0e  gcc/ada/libgnat/s-valued.adb
! ba1624ef858cbd7567f98363399042f2  gcc/ada/libgnat/s-valued.ads
! 5a4c56d26b5bec3e3f5c3796aaa2a133  gcc/ada/libgnat/s-valuef.adb
! 889aaab46d6ffeb7089fb920e11d3588  gcc/ada/libgnat/s-valuef.ads
! 116babf827e032d5e07092319a469250  gcc/ada/libgnat/s-valuei.adb
! 66985ce92e1e132ca9d7569c7d37285a  gcc/ada/libgnat/s-valuei.ads
! 5006d70c3fbf614f95c5e85728e1c1b4  gcc/ada/libgnat/s-valuen.adb
! 93ed1c347dc8b107b7eb34a039467f57  gcc/ada/libgnat/s-valuen.ads
! 22bcc2307ca4b84efbf1cbe959fe6319  gcc/ada/libgnat/s-valuer.adb
! d1afb777cf8aa1c1f64a412bf6f91e49  gcc/ada/libgnat/s-valuer.ads
! 7819e2eebb9e276fd047f71f849e7a1b  gcc/ada/libgnat/s-valueu.adb
! 6bb7207db3d9c86a63c3848809485802  gcc/ada/libgnat/s-valueu.ads
! 9f63252ff81390e275e1e1154f361dbc  gcc/ada/libgnat/s-valuns.adb
! bda5260e61331069ef1b0e1e10b4b744  gcc/ada/libgnat/s-valuns.ads
! d511c58a76a9c3a319be70ab21b6245c  gcc/ada/libgnat/s-valuti.adb
! 437f5c77fe8eb556b16a49096f5e3f3c  gcc/ada/libgnat/s-valuti.ads
! 27dbea6ff10890e442879c7119f2ce4d  gcc/ada/libgnat/s-valwch.adb
! c8365998bc69654e964b463a6468f47e  gcc/ada/libgnat/s-valwch.ads
! 8e26757492c8c33b2c7bc5df5cdc38f3  gcc/ada/libgnat/s-vauspe.adb
! e580b3a5e8dac2022afeae0399043ab9  gcc/ada/libgnat/s-vauspe.ads
! 22db0074fb88504648466b9dbbc30f97  gcc/ada/libgnat/s-veboop.adb
! 133f85cf28f88be94ba63e1cb0895b9c  gcc/ada/libgnat/s-veboop.ads
! 9357b56a313540c313f06fbf6d241238  gcc/ada/libgnat/s-vector.ads
! b7d9a9e2e9e56fe9383b77fd7b09387e  gcc/ada/libgnat/s-vercon.adb
! c916cd0f65ac60ab2c1407907511170c  gcc/ada/libgnat/s-vercon.ads
! 9dd2a23f018a4f1b0245fde9d746d0eb  gcc/ada/libgnat/s-wchcnv.adb
! dff69d9d5b9a298392058929f83dd924  gcc/ada/libgnat/s-wchcnv.ads
! dc9d933bb811ba2ad68d5fc13bde1c95  gcc/ada/libgnat/s-wchcon.adb
! a05020ced6cb3656d195e6705084ad7a  gcc/ada/libgnat/s-wchcon.ads
! 5a285193eaeb347cdfe0d1e96e3d1988  gcc/ada/libgnat/s-wchjis.adb
! 09369fe2cc2e6fb215bad8372077f3fb  gcc/ada/libgnat/s-wchjis.ads
! 42c8599817f4ef881c601497ccb77484  gcc/ada/libgnat/s-wchstw.adb
! 66991a29516d97dc4e0ecc73d58b97bc  gcc/ada/libgnat/s-wchstw.ads
! a22bea101c88c4933cf06c22c3aa09bf  gcc/ada/libgnat/s-wchwts.adb
! b00182d0d9665e238a160abd29fe1b2c  gcc/ada/libgnat/s-wchwts.ads
! 8e9abb6d516d87dfe73753e621064da7  gcc/ada/libgnat/s-widboo.adb
! fee0d81a7c2b9421d516e6b809762cad  gcc/ada/libgnat/s-widboo.ads
! 02a19c4405a89d694922d50a9c617e7a  gcc/ada/libgnat/s-widcha.adb
! dad0b471b80c0858d62eb32c5ef7c849  gcc/ada/libgnat/s-widcha.ads
! cce81a7a3b0fd0e838a560efba87ce75  gcc/ada/libgnat/s-widenu.adb
! a25feee36c863ada5763ee3bb8eb4a72  gcc/ada/libgnat/s-widenu.ads
! a59112536aaf61e5c7355aa95c97978d  gcc/ada/libgnat/s-widint.ads
! cec100171a758a0ee0af84ebb5a565f0  gcc/ada/libgnat/s-widlli.adb
! 4ebaccbf155e1f1749d478d1987319d7  gcc/ada/libgnat/s-widlli.ads
! 7cbe61b49fdae0f61cdd3e216fb13ccb  gcc/ada/libgnat/s-widllli.ads
! 8aaa5eb5ef15c3b76a2b7d84845f30dd  gcc/ada/libgnat/s-widlllu.ads
! dc277dc443cb62d526851b0a3a82aaf3  gcc/ada/libgnat/s-widllu.adb
! 575e83b21a3ed1f31d802abb686ee462  gcc/ada/libgnat/s-widllu.ads
! afc99e78ac79514f77035404e9619e8b  gcc/ada/libgnat/s-widthi.adb
! d294d37248a5cfcf79dfc5da948e5d2c  gcc/ada/libgnat/s-widthi.ads
! 3d1c729860217bb5317646dc1332098b  gcc/ada/libgnat/s-widthu.adb
! df8474bdce97d9edca6667f15ae6ad57  gcc/ada/libgnat/s-widthu.ads
! e30177b8c93cf871fb4095ba3ca001d1  gcc/ada/libgnat/s-widuns.ads
! b15e302560ce350e7b160b5b945f96a0  gcc/ada/libgnat/s-widwch.adb
! 32254390b12ba0f1143de85425e5f611  gcc/ada/libgnat/s-widwch.ads
! af6f1d0afc76533a8040b714af4db7d3  gcc/ada/libgnat/s-win32.ads
! 89ab1e909e6ff9abe72b16d2914bb215  gcc/ada/libgnat/s-winext.ads
! 5d99d733b591c161581e11bde70aef7a  gcc/ada/libgnat/s-wwdcha.adb
! f4bc912b17c2873b27c1886e343187a7  gcc/ada/libgnat/s-wwdcha.ads
! 11c43ade7da24d947c108caa3ad97093  gcc/ada/libgnat/s-wwdenu.adb
! 311ecc2087691b421c3f0b3bc1dac0b8  gcc/ada/libgnat/s-wwdenu.ads
! 5197b12404980424501b36e188ae519e  gcc/ada/libgnat/s-wwdwch.adb
! 674164808e9c693cdb0d4bb95b7f9ba4  gcc/ada/libgnat/s-wwdwch.ads
  0f4c21401ad2531f8c5d4010537dc6d2  gcc/ada/libgnat/sequenio.ads
! b3ab823521f7609c88a8cc4657e0c11d  gcc/ada/libgnat/system-aix.ads
! 3b9a4b8b4613daf47865c169b2a9d78c  gcc/ada/libgnat/system-darwin-arm.ads
! 73250bad49318ee0ee27f9041de0cf00  gcc/ada/libgnat/system-darwin-ppc.ads
! 0b2be746cb241822cbebbd2505e55920  gcc/ada/libgnat/system-darwin-x86.ads
! 23e6f5d6b06007c269295c2f6a7db088  gcc/ada/libgnat/system-djgpp.ads
! 70d93fcfbff4872338f3a69b74a3336f  gcc/ada/libgnat/system-dragonfly-x86_64.ads
! 4648fbb95672b5ec71827f4256799bdc  gcc/ada/libgnat/system-freebsd.ads
! 5e8c2840d431c7a9c16e34e0c050476a  gcc/ada/libgnat/system-hpux-ia64.ads
! 3f7b11867d19c95f60f79c2f359e814b  gcc/ada/libgnat/system-hpux.ads
! 3c4e68acb069a48b7363db22d55d3ad7  gcc/ada/libgnat/system-linux-alpha.ads
! ff015ac9ab86504c1d2d77b85a925cd8  gcc/ada/libgnat/system-linux-arm.ads
! 7b78374b298c1d25df4d13d950f888ff  gcc/ada/libgnat/system-linux-hppa.ads
! 294c5da6682b99b8f075194e3a25ebb4  gcc/ada/libgnat/system-linux-ia64.ads
! 6d6fc4dcc7009ef644d6ca2f19f8484e  gcc/ada/libgnat/system-linux-m68k.ads
! 125e353b3fd05135e5de3ed45dddfb36  gcc/ada/libgnat/system-linux-mips.ads
! 723605ad084efc620c5952d682663b64  gcc/ada/libgnat/system-linux-ppc.ads
! 30cd5bc7ecd743d93245fb99a65a95ce  gcc/ada/libgnat/system-linux-riscv.ads
! fbf1d5b71e0c6b1cd4a706da187ecba0  gcc/ada/libgnat/system-linux-s390.ads
! 87aa90b6f3d86d339210b489a1f44ff7  gcc/ada/libgnat/system-linux-sh4.ads
! 95b566a4ee7871802e6d9a36362c6dcf  gcc/ada/libgnat/system-linux-sparc.ads
! 04faa6a40a7e2100825c8dd451919996  gcc/ada/libgnat/system-linux-x86.ads
! 31f29772276936dc62ca0588b8e12897  gcc/ada/libgnat/system-lynxos178-ppc.ads
! b187da622c21c29fb9c876d5df8e32bf  gcc/ada/libgnat/system-lynxos178-x86.ads
! 645049aa4984357aeeda9fd29c302ba9  gcc/ada/libgnat/system-mingw.ads
! 67926cb9937b53886afc0c8284ae6948  gcc/ada/libgnat/system-qnx-arm.ads
! cb08f8032fef957b9c255c51cabd3412  gcc/ada/libgnat/system-rtems.ads
! 4a5cb064a68b048073b5bb12d75127b2  gcc/ada/libgnat/system-solaris-sparc.ads
! 04ef16618095863c6aa0dc8d82ef4310  gcc/ada/libgnat/system-solaris-x86.ads
! 052aeec9df72b793ecbd0063fb003695  gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
! 4f80136c7e51eb6be7244c93a2a73869  gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
! 5ebae731982ba2de5082d6abddfad278  gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
! 147e6f880fe5d5253232f9534d1ada23  gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
! fbbc6bf51630cca752404c7e46a3c073  gcc/ada/libgnat/system-vxworks7-aarch64.ads
! df181d95ad645c80304897b4b0e57fed  gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
! 4195f942974a95f4425a707e0b57f3cd  gcc/ada/libgnat/system-vxworks7-arm.ads
! 53ce4a9d00c499b093bedf15a1373e26  gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
! 254a505f32c483adde5d69e66c7e6dd4  gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
! 21f1129cadfcd8db2ae9ea56ec972ac3  gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
! f18d0de66d27848e9fd60de6affc3940  gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
! 21b7104329ad9a3e3fb165223f37186b  gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
! a3a6bceb94dbaa25eca38ff160831fdf  gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
! 7aadc4e884f20446e44ce8cbafe219f4  gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
! 9c76dc74d7443f30848364956ca802c7  gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
  2dc890e2791f7e9d6e1e9ca1cfb55c71  gcc/ada/libgnat/text_io.ads
  9a646eb97c6840de5d4bbb081dd2031a  gcc/ada/libgnat/unchconv.ads
  b8b0f9c3471d18ee5ac33521fe6f6d31  gcc/ada/libgnat/unchdeal.ads
! 13f7f4d11e30a4a3d2d2dd099d32cde6  gcc/ada/link.c
! cb83820ae465a1f28d0791876a40f166  gcc/ada/live.adb
! 859bcdf61eb6236897bc502ef5b37145  gcc/ada/live.ads
! 814fbf6a7b76cfa76b732ef9aa06839e  gcc/ada/locales.c
! 80937ed8efb52d368bac71fc63a407d8  gcc/ada/make.adb
! 1654b996de56a379223fed1a7e86241a  gcc/ada/make.ads
! a0c635a0e7701270a29568439ceba86f  gcc/ada/make_util.adb
! 056e3e90645428480635d42b9f481ecb  gcc/ada/make_util.ads
! 5fe0196a43fb661559977ec3c09ad03a  gcc/ada/makeusg.adb
! 55673f210fc8f3cfeae2c9e0c370f08a  gcc/ada/makeusg.ads
! a475e2f168ee7ebdff632c06dc74f023  gcc/ada/mdll-fil.adb
! bd77dc8c5c8c0f5ff4f6c7a0fe6890f4  gcc/ada/mdll-fil.ads
! 1c7e1139d4c0bbf71c972998e2f1494d  gcc/ada/mdll-utl.adb
! d19d069c261d3f6dfd000d4aa00de0fe  gcc/ada/mdll-utl.ads
! 9ca4456c9dc92acf670e8f06e27fe6aa  gcc/ada/mdll.adb
! f5af8f4f1dfdab8d9d9cb5339310e403  gcc/ada/mdll.ads
! 06ae728496b4246ec96fd83add13f478  gcc/ada/mingw32.h
! 2061b2d163b4fd4832409610dd2475de  gcc/ada/mkdir.c
! 8659166eaacc3b66166865a0c79882e6  gcc/ada/namet-sp.adb
! 0b560d4b320c374a731f72917680723e  gcc/ada/namet-sp.ads
! d10d15249c950fceba4d50ab36444e6b  gcc/ada/namet.adb
! 444c9cae62d503793e70bc66e620f60a  gcc/ada/namet.ads
! 7a63e2e4b9a4b592bb126f559e11a71b  gcc/ada/namet.h
! 48b2821f36c1d869d461dbed78a82e3c  gcc/ada/nlists.adb
! 0d6bd57b6ace45ea015927910f695508  gcc/ada/nlists.ads
! ff9ff9f959ddfa3c713348cef26f212e  gcc/ada/nlists.h
! 479971937cfe615e6f76fe69a9d4102f  gcc/ada/opt.adb
! 6ac11d061f061a1f3ab1b53a3159aa67  gcc/ada/opt.ads
! d003c5fc33d443626047379e20c572d6  gcc/ada/osint-b.adb
! 0a30c94a9c1e92d635f002118649d609  gcc/ada/osint-b.ads
! cc6fba3e78cba5f45caa777a83c0c49f  gcc/ada/osint-c.adb
! 0f195575cb26de3d9c8ba2914a2a6728  gcc/ada/osint-c.ads
! 9dd0d3305bb8d8a52ee901ad8548097a  gcc/ada/osint-l.adb
! 261a3ab0d0e7a90006b011378ce591b1  gcc/ada/osint-l.ads
! ab628a8ad6e901f0be96dc5e82ad2cd5  gcc/ada/osint-m.adb
! c70f3748ea640af36babf4a4028c0dad  gcc/ada/osint-m.ads
! cec7a46d10a3bc24e05befdd1d218b16  gcc/ada/osint.adb
! a69f43f9357715ceeca20d244c71803f  gcc/ada/osint.ads
! 31fee3548d4ef64edf8e94275f4137aa  gcc/ada/output.adb
! a322b246a3d17c3f1832766cf8cac75b  gcc/ada/output.ads
! 39fe4ab70f71ef6da1250762932ad4f5  gcc/ada/par-ch10.adb
! 97f8912ba81ec9dca9db17f079ba2d04  gcc/ada/par-ch11.adb
! 0d08f7cab4d916df6a50a5d021a8f1bb  gcc/ada/par-ch12.adb
! 0608361dbdf799dc7a44674d20b2c6d2  gcc/ada/par-ch13.adb
! 72b9dff886eecde1318935a346861a8f  gcc/ada/par-ch2.adb
! c4c2bee7a1e6722a599329cb37e824d5  gcc/ada/par-ch3.adb
! 2dc2ba9e0dca0a0a25f29dd0e7ae7e22  gcc/ada/par-ch4.adb
! 803a73a9e138df8cd2094197ac85b7f2  gcc/ada/par-ch5.adb
! c562491ed077a62954d7769ca3026810  gcc/ada/par-ch6.adb
! 75d7186b24290e56a92fd51640f13ace  gcc/ada/par-ch7.adb
! ff7f8fef7274a2065b88731f71464179  gcc/ada/par-ch8.adb
! 84b6dba62bf64c214228d151014e0a5a  gcc/ada/par-ch9.adb
! 2aa9d79f324466680ab97b497fd12226  gcc/ada/par-endh.adb
! f10f7a061445c4971e3a5cd4caf43fdc  gcc/ada/par-labl.adb
! 5e28be53a887b71554a0008797e09b48  gcc/ada/par-load.adb
! be495b88a5b40553fae25cb88cb5d987  gcc/ada/par-prag.adb
! cbeed44fce6f0237cd362f41a4defd5a  gcc/ada/par-sync.adb
! dc2085d9408290bcab5fc29a763c3185  gcc/ada/par-tchk.adb
! 16dd125fa49404f1b741bb38bdb4c89d  gcc/ada/par-util.adb
! 7b88b0e9b0636c6f91228c3e892c5698  gcc/ada/par.adb
! 975baa4d4f8e2483370a606cb4adba41  gcc/ada/par.ads
! 5842c6636d24ef1f2a7c93ff9b60b646  gcc/ada/par_sco.adb
! 89e8ad8d3d7bd364c45acda7b86e485d  gcc/ada/par_sco.ads
! 2545ab811fab0d4ca95e45de2c6a3f63  gcc/ada/pprint.adb
! 060f9e46399ce8e4bf17ebe829c0febc  gcc/ada/pprint.ads
! 1c1ab8bcb44c139b299499f6511611ea  gcc/ada/prep.adb
! 6c4d450e3faf9a503ce63f52d065f374  gcc/ada/prep.ads
! c4d18e2d76029d14a546584a7525323a  gcc/ada/prepcomp.adb
! 8bbf57e1dec86d3656b56236da19520a  gcc/ada/prepcomp.ads
! 580c038ef418440204c5caf53f56ee93  gcc/ada/put_scos.adb
! 197a3e646eccec22624c91fcf6e6d6b0  gcc/ada/put_scos.ads
! a013ca58bc7cd65cdfb8e107ba9a561d  gcc/ada/raise-gcc.c
! beeb499d161ef67535137d1d7594e749  gcc/ada/raise.c
! a9989140d84d82025fa6b5ca95e71a39  gcc/ada/raise.h
! c04d922b208c3adc140a041145705e55  gcc/ada/repinfo-input.adb
! b334baaa9a9b96149cbfbb6ce64d1dab  gcc/ada/repinfo-input.ads
! 638b0a443c331051c244ad30d42dcb11  gcc/ada/repinfo.adb
! 6989cef8c8854d238ab353fd26ff522f  gcc/ada/repinfo.ads
! e6ce5adad5c56ba067dfe6755141a1c0  gcc/ada/repinfo.h
! cac48cc4a4d9530bc462b3cd0e212eea  gcc/ada/restrict.adb
! b27c6e8308446f073d73b502cf17e712  gcc/ada/restrict.ads
! 712c0640ca70923fd6ebb3d11941016b  gcc/ada/rident.ads
! 0c77fe52c5bd1c086f239c85d5e3d3ec  gcc/ada/rtfinal.c
! aee4d9fd0d9751d6a9f3a3fa8c0ab929  gcc/ada/rtinit.c
! 882845c6d9a03cfd35c9628a2c7b0a7a  gcc/ada/rtsfind.adb
! a25b181dadc848373913851c5f2560d6  gcc/ada/rtsfind.ads
! b4073c5d3847998e6bec472830284bea  gcc/ada/runtime.h
! 004083f2d35e0565cd5d55a1df0c9870  gcc/ada/s-oscons-tmplt.c
! 3264825cbf649b08945d70865c7c1c26  gcc/ada/scans.adb
! d431d98e3f963ce89ba3e0f1977ee21f  gcc/ada/scans.ads
! 1928870773596916f224acee4ad3ae5a  gcc/ada/scil_ll.adb
! 0c49414f4544b9bab3203c70a7e380c2  gcc/ada/scil_ll.ads
! d0763582f9f11e6db32d506ead67254e  gcc/ada/scn.adb
! 527e74de2382c6bb3297efd17ed22b9f  gcc/ada/scn.ads
! 86b1dae0dd4e0b8f3cbb37c3ee39b648  gcc/ada/scng.adb
! 16c7f42f429c21a28e9cef10d3f0f780  gcc/ada/scng.ads
! 3a5e4eb664972d377949f2acf4bf9d57  gcc/ada/scos.adb
! ea0e09977063a57d40d7eb9614c05190  gcc/ada/scos.ads
! 668ea4b59246c263c92767ed0e9bec73  gcc/ada/scos.h
! dd3c4c7e7bba2fd96ad87555473b1be8  gcc/ada/sdefault.ads
! c37b5cae64bc71d5b30139e04c31796d  gcc/ada/seh_init.c
! b60f965eb0068f4ef9f60362378b0c9e  gcc/ada/sem.adb
! e70e0fe1deaf9153a4884095d153dd82  gcc/ada/sem.ads
! 0485c822ca845d653ff1c5ed3e84dc6c  gcc/ada/sem_aggr.adb
! bc71ad0491fa61390ba4b31d799b2dae  gcc/ada/sem_aggr.ads
! 3f982826a1738412c31f07d70afc68e8  gcc/ada/sem_attr.adb
! 3d50876170b765a588430f4d1cd04558  gcc/ada/sem_attr.ads
! 8e42c26d133289bc49008e92fd966b83  gcc/ada/sem_aux.adb
! 088bd6652821c1edc3b504cc95da3f42  gcc/ada/sem_aux.ads
! 3643d8f0d7fe39effeea7660676c4f7c  gcc/ada/sem_case.adb
! cb017ef183c47348a71d052d39be4bb0  gcc/ada/sem_case.ads
! 9410ba5ff97c5701fdccfdaf1dfb7303  gcc/ada/sem_cat.adb
! 93825171ac85d9e03db3e47c220ff7f9  gcc/ada/sem_cat.ads
! f2c6ce6a625a22419e78b1594dc98c96  gcc/ada/sem_ch10.adb
! 40f63c56f82085566f13ca50914990e7  gcc/ada/sem_ch10.ads
! ed28c0c11a48d3eff130c0afc09b7e0f  gcc/ada/sem_ch11.adb
! 3c73933ed4c54ac6090736275b072542  gcc/ada/sem_ch11.ads
! f0a9d27efd2c4562fa3e3aab97dd8a1d  gcc/ada/sem_ch12.adb
! a432065f95efc62fd49d139a9da251c4  gcc/ada/sem_ch12.ads
! 3d0bfbd778ac1442d950f081d52c0bf3  gcc/ada/sem_ch13.adb
! aaf7cf57dc41bc250bfe241c089cae3e  gcc/ada/sem_ch13.ads
! 927ab853493439ecf619d639e5173bb4  gcc/ada/sem_ch2.adb
! c4875c3fb6f6e196123c4bee7db7923b  gcc/ada/sem_ch2.ads
! 9beb687d00e0f51ad3cf3b3561e61705  gcc/ada/sem_ch3.adb
! 1fca2e6b2bc36a4d6328c9d96af6cfb3  gcc/ada/sem_ch3.ads
! 79c86ae3b42c5430c31624257e53f05b  gcc/ada/sem_ch4.adb
! d0d55b5c7178730b4379dbea4d669abe  gcc/ada/sem_ch4.ads
! d41d7338fbd9ccf93141d2574d4e2b65  gcc/ada/sem_ch5.adb
! ab69996d3822ad660d28709ab3cf046b  gcc/ada/sem_ch5.ads
! 5df18a551da23bdac33c37ed5556b339  gcc/ada/sem_ch6.adb
! 1880e12d15e4f7a2655d25e1a39eb8c4  gcc/ada/sem_ch6.ads
! e80c2fc0177cad40b56d91fb367bcc52  gcc/ada/sem_ch7.adb
! ba37c865ac4be0ab3408a156f217b148  gcc/ada/sem_ch7.ads
! 46d3153cf9f6d1c551a40268bce2b762  gcc/ada/sem_ch8.adb
! ecd7edf93ca918e3d9736ef3ca4b6529  gcc/ada/sem_ch8.ads
! 3aee871b3b421b0e0ddc10b2ddd4f326  gcc/ada/sem_ch9.adb
! 73911dd4e01a6a002f8167979f314d80  gcc/ada/sem_ch9.ads
! d2afb7331ebc0fa27eda24672abaf916  gcc/ada/sem_dim.adb
! 004ea1929047617d9e7a229ac5798a94  gcc/ada/sem_dim.ads
! c156ead71c635cc56cae1c48807cfb5c  gcc/ada/sem_disp.adb
! f978d8f8f0edbaf8c197284638108b29  gcc/ada/sem_disp.ads
! 168aef97312277b4f89436222a3460ae  gcc/ada/sem_dist.adb
! 8b571ad8113f9236f95206ab1f00a46f  gcc/ada/sem_dist.ads
! 6be9e9d751399d1ef7c1c67316b326e8  gcc/ada/sem_elab.adb
! d1499d742250ba3357ffe435a3bab8b6  gcc/ada/sem_elab.ads
! 109d959ed516000de7fd993de2c9ae63  gcc/ada/sem_elim.adb
! 3e62676371055aca95243aee2b7afc2b  gcc/ada/sem_elim.ads
! 3d0664b8ffdb064e4f6a1ca6755e1029  gcc/ada/sem_eval.adb
! 1fbc78cc3986e5167ef73d52862b3a33  gcc/ada/sem_eval.ads
! ce27239f99361e61d12bb5bdfff0a208  gcc/ada/sem_intr.adb
! dcf2c3ccb5cc555e421ba9893cb3a2c8  gcc/ada/sem_intr.ads
! cd1485ab473af7619af9b0cdb75ff5f4  gcc/ada/sem_mech.adb
! 2628f4db0a13a198a497a1438f61ffa9  gcc/ada/sem_mech.ads
! bae94e12c9fdbf4a46f0a050968a1a68  gcc/ada/sem_prag.adb
! 2fc94fa1637a92b8548fdb0b65fd7bd4  gcc/ada/sem_prag.ads
! c2413e20316a24bc46560204ad3e7df6  gcc/ada/sem_res.adb
! 8ed4f4454daa145c7fddf86782258422  gcc/ada/sem_res.ads
! e4b6d1e16b208ca35791c42ee9c3d067  gcc/ada/sem_scil.adb
! 55301aee52465a299b07b1bb889a8304  gcc/ada/sem_scil.ads
! f8d57c959d78db9bc3e28697e1ec08ca  gcc/ada/sem_smem.adb
! a8b48863de3b07302a6dded1699bca0f  gcc/ada/sem_smem.ads
! e79e4c1e0518e3b9693043d0785d1d17  gcc/ada/sem_type.adb
! c071d50bf00e96003f25bc610c901949  gcc/ada/sem_type.ads
! 9ab2dcf10fcd0930cb6b107f10b68134  gcc/ada/sem_util.adb
! cffece8ef8e2973b18f842833937a05a  gcc/ada/sem_util.ads
! 3c74440d6680a37e1605e0696651e98b  gcc/ada/sem_warn.adb
! 3ea742e0239d48146217b2888477f742  gcc/ada/sem_warn.ads
! 515bb2980bf2da708a3a883fa201b105  gcc/ada/set_targ.adb
! 296119347eb6f9c2638d31e594dda49f  gcc/ada/set_targ.ads
! 9cadd675768af23acb14914d6cbd42f8  gcc/ada/sfn_scan.adb
! 95355b532292f306fcd4283913a95eca  gcc/ada/sfn_scan.ads
! 9760d32a183273eca8099a6e9880bb33  gcc/ada/sigtramp-arm-qnx.c
! 1da4c79da57ea821c45a3b33331431ae  gcc/ada/sigtramp-armdroid.c
! 99cf6ab877e36eccea4d4ddea55a3833  gcc/ada/sigtramp-ios.c
! 3e67a969061d5b3ad4d7cef9de00a2bf  gcc/ada/sigtramp-qnx.c
! 2b01354b93697a19565a86b457dbdeb1  gcc/ada/sigtramp-vxworks-target.h
! cccfbb2bb146d70091d0b3c68a26e1e9  gcc/ada/sigtramp-vxworks.c
! bffa024056c9f27f1476f5fb6aa96deb  gcc/ada/sigtramp.h
! 383dab59b43bda5ba35f9d2e75396763  gcc/ada/sinfo-cn.adb
! 681b82d5766e1431fad27601b8a09fe0  gcc/ada/sinfo-cn.ads
! d025b325e2160d95af7aedf493d00a01  gcc/ada/sinfo-utils.adb
! 0466c161b26b1ad6c38e68e8e104473f  gcc/ada/sinfo-utils.ads
! 09a953a7ef3cd2c02091ca4ede0f91a1  gcc/ada/sinfo.adb
! 1b5c9695b215deb7253fc0db9e088196  gcc/ada/sinfo.ads
! cf5fa17dfd9479dea7902be377334337  gcc/ada/sinput-c.adb
! 4c9a129cb9922aedd2b7a2ebdc9a8cff  gcc/ada/sinput-c.ads
! fbf6190226aad6cb94e5a6401a6edff6  gcc/ada/sinput-d.adb
! f26ffc8e7f43252ab89a291d89c31968  gcc/ada/sinput-d.ads
! 1c1334c8681d1359000e3db17a2087a3  gcc/ada/sinput-l.adb
! 19d39999e22347fbe00c7e0adcd9e321  gcc/ada/sinput-l.ads
! 34df665e0b9e50503f9d96f60b67e2ca  gcc/ada/sinput.adb
! 516e22cb83febc66720937f3de0c30c0  gcc/ada/sinput.ads
! 4f6928dfbd5b486e9b927dbc21dc0ced  gcc/ada/snames.adb-tmpl
! 229dfaf019b3a0decc7b6d1d89cfa052  gcc/ada/snames.ads-tmpl
  1d0f0a946dfb952f009ada43305106dd  gcc/ada/snames.h-tmpl
! 7b5ae30ea1d9ec9a3d273f4bb69d3be1  gcc/ada/socket.c
! 35295d580a04ef93e238d3840e7f6a37  gcc/ada/spark_xrefs.adb
! 5420932e60fafc0d77f3a24a62e330c3  gcc/ada/spark_xrefs.ads
! acce486d72a7e674a74918f54a1f66b0  gcc/ada/sprint.adb
! 309fab9e637006b42191c642ac8ff482  gcc/ada/sprint.ads
! 168446184734b3b3643229bab475bbe3  gcc/ada/stand.ads
  92510faaca8c15e63e6f22f0b28dbe5f  gcc/ada/standard.ads.h
! 38295e8b31130a69b2c97d7125000099  gcc/ada/stringt.adb
! 843c0bb8dd2913a662fa32a8ba9c46b6  gcc/ada/stringt.ads
! 2e038be0667416a118de4f72041f0560  gcc/ada/stringt.h
! c6304434e8218d5dc70f89e452012722  gcc/ada/strub.adb
! 1d85ec4ded633f00b4981f0d9fd12131  gcc/ada/strub.ads
! bd0a95301dae8e766aef59763ca2b281  gcc/ada/style.adb
! dee7c423ad2140357a41410352d549b1  gcc/ada/style.ads
! 8e51c2d3e072d0dd1094daf3c97d94e7  gcc/ada/styleg.adb
! f2f853df3920f8b9d4e71200acccfa11  gcc/ada/styleg.ads
! 4ec3e0553dfd458e0fc2a84b3e5ee08b  gcc/ada/stylesw.adb
! 57aedb0af980fa4ed95c2bd412faa5f9  gcc/ada/stylesw.ads
! 740bce94da73787385f321afa99b712f  gcc/ada/switch-b.adb
! 7dbe16623f55677a54c23321308c4840  gcc/ada/switch-b.ads
! 60f9a3efbb8dce4978f31f74a797fc96  gcc/ada/switch-c.adb
! 8440a74ec4f8ec85dc99e17fe22c8b8f  gcc/ada/switch-c.ads
! 225c174bb2fc557c8130b8faf7903cc9  gcc/ada/switch-m.adb
! 9dd4d5f5929c59ecc034a043f440a343  gcc/ada/switch-m.ads
! 1e282409733427886f2422d365e8fd70  gcc/ada/switch.adb
! ab2fe2ad8e6fb460e00cfef666a0bd0b  gcc/ada/switch.ads
! 3e7cbd0f5ab02b4a01a998387e7c56af  gcc/ada/sysdep.c
! c65b4ef82c3d521871124f8961ad9ed1  gcc/ada/table.adb
! 11a214708ccb1550ffe0e9789003414d  gcc/ada/table.ads
! 27e59ad1eef5c72427c1eda8ca09812d  gcc/ada/targext.c
! da865a90b6a2d35a85500cd7111763e9  gcc/ada/targparm.adb
! 8f609362a58c6bbdacc143df78ddf622  gcc/ada/targparm.ads
! 74e3d94b642eadeeb70be571e5221108  gcc/ada/tbuild.adb
! a879475c399c620a933f9478ea5b6d2e  gcc/ada/tbuild.ads
! caaa6c4d9927eb3e67e75c49e10dd089  gcc/ada/tempdir.adb
! 1fd8d3d6700f8569cfbcd62afa528303  gcc/ada/tempdir.ads
! 4df4b519064e1fe4539a2b9b8d4b7445  gcc/ada/terminals.c
! c50d9c12efbc2f6fb7327c27bdec5618  gcc/ada/tracebak.c
! 8cc1a51644bcca84821852c2f327770d  gcc/ada/treepr.adb
! 648fc53cdb3ca7037e1abc008de842d9  gcc/ada/treepr.ads
! 603f8296f51f130d6c499ec140014c83  gcc/ada/ttypes.ads
! 1805194152442d78cc749615d795b06e  gcc/ada/types.adb
! 0af47accb0cac8824bb96a9f51696456  gcc/ada/types.ads
! 76546dd81086ef99bccb02f826c1e904  gcc/ada/types.h
! ed9a513f262688714bc7049ec309ae26  gcc/ada/uintp.adb
! 1ed3c5aeee283563cea8fff3378568f6  gcc/ada/uintp.ads
! 68debf1451ef37eac52bd13ce0c598fb  gcc/ada/uintp.h
! 0e75a8ded17c272d1f0c4112a7370856  gcc/ada/uname.adb
! 870168146711c928daa696c85705287f  gcc/ada/uname.ads
! 12c9160b033df02f4a09d7dd3bc13c95  gcc/ada/urealp.adb
! 4ff10cfb0e349b81188d6d3f70eee193  gcc/ada/urealp.ads
! 901231b71c5099196b940d400f1e9c30  gcc/ada/urealp.h
! 98bfc88cf867b43af251faae691ed9b7  gcc/ada/usage.adb
! 29502d768e6ac0f319f7d2b48a9e276c  gcc/ada/usage.ads
! fa0dfbf0b3c5e0a4f28fccdd596e0f97  gcc/ada/validsw.adb
! c103be07028e95592ee5562a178cb50d  gcc/ada/validsw.ads
! 0c66cbc282eee965c09e4248768932ec  gcc/ada/vast.adb
! 5796310e13c4553d943749517ecc6cbe  gcc/ada/vast.ads
  107a84185fe50c348afd3b9e76042a6e  gcc/ada/version.c
  49ef8bc97a344f91b927f23054ade642  gcc/ada/vx_stack_info.c
  230f0a2f69b8ad56cc0d730f9fe0964b  gcc/ada/vxworks-ppc-link.spec
  745188949cd7ff6df266579735782385  gcc/ada/vxworks-smp-ppc-link.spec
  cf24e76097812a932a26f6600d193208  gcc/ada/vxworks-x86-link.spec
  06e57b640d1aca0be4b6da38098e4157  gcc/ada/vxworks7-cert-rtp-base-link.spec
  3f3270b5bb2062f4d0477ab7e768d46d  gcc/ada/vxworks7-cert-rtp-base-link__ppc64.spec
*************** c0ffb82152caa9bd08b1350cec3ffcba  gcc/ad
*** 2986,5036 ****
  2ed87baf5014d1345a1142ceab80bb13  gcc/ada/vxworks7-cert-rtp-base-link__x86_64.spec
  987b48a23594fd72c3697baf88d4e628  gcc/ada/vxworks7-cert-rtp-link.spec
  d374967a9c157fd079d5b2491f43f68a  gcc/ada/vxworks7-cert-rtp-link__ppcXX.spec
! 2335f5267c95b1b00d90139d0681ca2e  gcc/ada/warnsw.adb
! aa803022673b156a14e11b609eb57b01  gcc/ada/warnsw.ads
! f295940dbd9fa9fdbd559025d2ac7002  gcc/ada/widechar.adb
! ca27b5abc81b9a5c50a09c84c8e2c2d0  gcc/ada/widechar.ads
! 20a13d744627fc8c3a5e7c04dac343b5  gcc/ada/xoscons.adb
! 4422d1b4b09f698febaf9e4e5351d17f  gcc/ada/xr_tabls.adb
! 995b2f66c76b6feb31735b24161797d6  gcc/ada/xr_tabls.ads
! 883dc2ae6fd9fd363e0ca070ddb0a84b  gcc/ada/xref_lib.adb
! 9b69d53dd62fb26d9f4b3d74c9360c06  gcc/ada/xref_lib.ads
! 41b19d5ba03455cb4246975a86e238c4  gcc/ada/xsnamest.adb
! bd46f3f31e55bfb75dc18bc050637dcd  gcc/ada/xutil.adb
! a90368159c1f4354778fdfba479b896d  gcc/ada/xutil.ads
! 187b0627159fdbe16634c07044940109  gcc/addresses.h
! 0b8589934ce41117a403f141ed60851b  gcc/adjust-alignment.cc
! 5e47b9def7e2b037aa3b62fbd58c8377  gcc/alias.cc
! ababde2c5bb14917f39624789742a3bd  gcc/alias.h
! 2cc2cdd05c8be53c1cb016bba012fd9b  gcc/align.h
! b2ce75825ccf75e072ab6c8975c38232  gcc/alloc-pool.cc
! b7c04162e76f23d56fa00205e789f7dc  gcc/alloc-pool.h
! 15daaa3925fe3dbbff4c0eb8e640acc0  gcc/analyzer/ChangeLog
! 3acec58f414ce82e99f2983591f45b43  gcc/analyzer/analysis-plan.cc
! 8ce96491e4c46bedd4a35adc52251a3a  gcc/analyzer/analysis-plan.h
! 3cadfbc2a96c42c26013f8530330f752  gcc/analyzer/analyzer-logging.cc
! 6633ab0df888810cb47a0698bfbb7333  gcc/analyzer/analyzer-logging.h
! 0148f1071e10998f253ce7d4016c7ae6  gcc/analyzer/analyzer-pass.cc
! 00378bed5aa71fefd27addcfcb0fe105  gcc/analyzer/analyzer-selftests.cc
! 3e703118e15e2acff7324ff2a5e61e9f  gcc/analyzer/analyzer-selftests.h
! 86097836c7e35fcf638d49cfab39a89c  gcc/analyzer/analyzer.cc
! 99dfcf844adbd58a6811d5b818f44ef6  gcc/analyzer/analyzer.h
! 5f478af30eee134b5b46762511f06939  gcc/analyzer/analyzer.opt
! d658907315ee0110f41b29d76a0530c4  gcc/analyzer/bar-chart.cc
! ecb411853a5c687c99306fd03bd3a4d7  gcc/analyzer/bar-chart.h
! 1793b5dd91206494aec46774449a1d6a  gcc/analyzer/call-info.cc
! e6d806581b137f3d47a08cdae8e89f4a  gcc/analyzer/call-info.h
! ca6b1b7227c5d3f79f7ce7b9f8227193  gcc/analyzer/call-string.cc
! 0ebe9af80abcf7c965214e8fc80c0f05  gcc/analyzer/call-string.h
! 140198c733a14e35b080d8080ecdbb42  gcc/analyzer/checker-path.cc
! 211812e8119826c866c3e97eae3e4fa2  gcc/analyzer/checker-path.h
! c1527fc64354fa32cb004c9e035d1617  gcc/analyzer/complexity.cc
! 88cdec9445bfdbd0d1d87004c9038101  gcc/analyzer/complexity.h
! 9f5f4cd88dacf50014788a65d75335be  gcc/analyzer/constraint-manager.cc
! 75fcad93d7f279dc445c2ec29a0be5e5  gcc/analyzer/constraint-manager.h
! 73321800c59acb95cadf27a257a613b2  gcc/analyzer/diagnostic-manager.cc
! 6b0585cfb8da65a52ae12f094c369676  gcc/analyzer/diagnostic-manager.h
! 5e3ef11f5a551cb0ad970eaf3190e58a  gcc/analyzer/engine.cc
! 2bb0210c571ff005f8f42528998ac0dc  gcc/analyzer/engine.h
! ea7da86e476b86e66f2952d9c4d0cf43  gcc/analyzer/exploded-graph.h
! 60df38534496eb6d1d5f9ee2a3821b28  gcc/analyzer/feasible-graph.cc
! e6bab03443af66a6ff7e1169cf3ec234  gcc/analyzer/feasible-graph.h
! 902a9704d9df18cc2938172380bdb7c7  gcc/analyzer/function-set.cc
! 90d0a2085e0fed28d026871e91907e18  gcc/analyzer/function-set.h
! ef8a62a87e86917f47141aa65b6ae121  gcc/analyzer/pending-diagnostic.cc
! 19b630b6d3d6883346bf58ca36bc995a  gcc/analyzer/pending-diagnostic.h
! d15e0c8ce0cfa84dfbe17cb039644d9e  gcc/analyzer/program-point.cc
! 08fb8bb6d4fbae8fb513ba7086e22384  gcc/analyzer/program-point.h
! 6c1a5254f07786f6c9290a71237e721b  gcc/analyzer/program-state.cc
! 64abfcace7eb73e594f51f224ee142b2  gcc/analyzer/program-state.h
! 92699f3645fa03dc1bac69caefd67c11  gcc/analyzer/reachability.h
! a9de6e1fa8278f5957c0ccd02acd014d  gcc/analyzer/region-model-asm.cc
! ae1e4b08caa82053daa648685174efa8  gcc/analyzer/region-model-impl-calls.cc
! 16ed271abde4515bcee69afc97eea52f  gcc/analyzer/region-model-manager.cc
! b0b62fd80628cdd3dc8b5604bd91375a  gcc/analyzer/region-model-reachability.cc
! 4c5d2a3c0898ca5bd41abb5bc5fbe038  gcc/analyzer/region-model-reachability.h
! 9fce42ccab1d1de8505f22d6910eea51  gcc/analyzer/region-model.cc
! 4cb057e92d9b45a3f512e6da59f188fb  gcc/analyzer/region-model.h
! ea912728bd7e81585560c2e8fb7f1163  gcc/analyzer/region.cc
! 6af1582b0e62eb3ff19ad61def49d6ca  gcc/analyzer/region.h
! 16f968d3c070962af0752d38fbdc7f86  gcc/analyzer/sm-file.cc
! 6f0466bc0ed99d07496aa05f7d8f92d9  gcc/analyzer/sm-malloc.cc
! 31726160712dbb2b54c951609b52ea41  gcc/analyzer/sm-malloc.dot
! acbe4b8f485b30d4e419c676b232ca7e  gcc/analyzer/sm-pattern-test.cc
! a3d99cead5f4178ec70a5e30db095cd5  gcc/analyzer/sm-sensitive.cc
! f0f35148e2ca4bcbe405a1fe09dda592  gcc/analyzer/sm-signal.cc
! 2e2c15a790174d93e6417b5f72920a8f  gcc/analyzer/sm-taint.cc
! 0e6c0eadc0f200513526f3c2c40967cf  gcc/analyzer/sm.cc
! ddfd75cf0819cfc9e7f49ecfd5977d39  gcc/analyzer/sm.h
! d04ff82294c3a090396e7e192fe74cf5  gcc/analyzer/state-purge.cc
! 2194e5f9d22b9d7f322bce8b58938c5e  gcc/analyzer/state-purge.h
! c317d413cc5c07d8342b7c424bb04eea  gcc/analyzer/store.cc
! 100d47c30b94a50b13a23ae3e5abd6d6  gcc/analyzer/store.h
! f4af466e5d46265a82b77b69fd5c2fee  gcc/analyzer/supergraph.cc
! d1ece647573091c4b6a0434986d022b9  gcc/analyzer/supergraph.h
! 7e94ce1e1558b43731321b5db841de5e  gcc/analyzer/svalue.cc
! 11a3a82a92b7013acefd3b1d269b4cde  gcc/analyzer/svalue.h
! d88189bdcecfa56e5ffaab39a03396f5  gcc/analyzer/trimmed-graph.cc
! 4bafa74d2a8c0d933f1620cbe9887fc2  gcc/analyzer/trimmed-graph.h
! 0b95095c8e8df661977864b73fa53bcc  gcc/array-traits.h
! cb22b71b11d85613c937315729834692  gcc/asan.cc
! 9d182c46a0fa9d235966ac5a88ef883f  gcc/asan.h
! 336ce4517e459467aec46c73e361403c  gcc/attr-fnspec.h
! 94bff5727492a16c140450adc5bec8f2  gcc/attribs.cc
! f35983fbc75e85ec6bb625c1e3d93060  gcc/attribs.h
! f2a5b546c85c4efb7d2f0103653a5728  gcc/auto-inc-dec.cc
! 98a3904d4727900960256e4afbf77de7  gcc/auto-profile.cc
! 96b0d496f959bdb607cc3d80d8f0e62e  gcc/auto-profile.h
! e8ddb5768af138adb4c7dc9ceeef18fc  gcc/backend.h
! 789f9c53260b2e6310c6d9cce6573842  gcc/basic-block.h
! fb8f63861d710db7c449cbcb6b351915  gcc/bb-reorder.cc
! 6617828b52b378fcd102261c0a5e92b5  gcc/bb-reorder.h
! 86e6d04ba8d6db17822d7e77f111b625  gcc/bitmap.cc
! 463d4f90c70a2ee34e18e4e1cdac3017  gcc/bitmap.h
! effc7bf1ccdcbbcde7f3785aa54561c2  gcc/btfout.cc
! 054e5fb089c16e62b46b994b919a245d  gcc/builtin-attrs.def
! 9397c619ec5582634dc3e244ff03f6c9  gcc/builtin-types.def
! 709a8f13eddee30cf0e409e2a48b6cb8  gcc/builtins.cc
! a72c74534e856f4d387a76fa2204ea5b  gcc/builtins.def
! 48b30dc7e25f5905415a1dac460e9750  gcc/builtins.h
! 170ec3161dddd766baa39a344940f812  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! a7afd263f1b3f5cb5c733ee443f9dfe1  gcc/c-family/c-ada-spec.cc
! 77ea826f6e5f43400d6095c1026cb640  gcc/c-family/c-ada-spec.h
! 1ac3eb502ce4873ac4d8cea0f46f5931  gcc/c-family/c-attribs.cc
! 5c97f797136cada5078deee5328f2dde  gcc/c-family/c-common.cc
! 8a7421b92ec542eccb81b8a4069ba2ad  gcc/c-family/c-common.def
! 8bf5d16691b94652ed2d37b183ef0e41  gcc/c-family/c-common.h
! 8991a62ab96fa1fad9d89d551283bdd5  gcc/c-family/c-cppbuiltin.cc
! ace6960d00063212ee9ff914f19af263  gcc/c-family/c-dump.cc
! c3c15f6dfc38316045126a4b32104cb8  gcc/c-family/c-format.cc
! 074df03d16455b2d5d97400267b29292  gcc/c-family/c-format.h
! 9d9e35d40269aedb8d1cf35a004b3aa6  gcc/c-family/c-gimplify.cc
! 78c1df4a556b61f6fbcf775b1b06ef03  gcc/c-family/c-indentation.cc
! 366be7ff35d4473fe925e98f64d0fa83  gcc/c-family/c-indentation.h
! 6443c345952222040741cbd8a1d6e1b9  gcc/c-family/c-lex.cc
! f53bf811224874c8cf6803a9d4766c7c  gcc/c-family/c-objc.h
! af9a0fa4e63145b3c994f3cfd9d608a1  gcc/c-family/c-omp.cc
! ba4e6aa580bcb97695f1e88ac963111e  gcc/c-family/c-opts.cc
! 00ed0919fbaac7675375ccdfaab6a8bf  gcc/c-family/c-pch.cc
! 12e90bdd8eac8ef2f8fb0bd3d4520db0  gcc/c-family/c-ppoutput.cc
! 2c66f0f1cfcfe4ee885f16bd33a6d2db  gcc/c-family/c-pragma.cc
! 84bfd9edb36a8013d6108c26781c39dc  gcc/c-family/c-pragma.h
! 7711d04d7e1ba677219ecac31ee22781  gcc/c-family/c-pretty-print.cc
! 0c6371d3a654141a9cd26a12aaad0911  gcc/c-family/c-pretty-print.h
! d88141dbe6ee4cdf0241ecea034a6ebd  gcc/c-family/c-semantics.cc
! eb037f948fa34a189765877123cb18b4  gcc/c-family/c-spellcheck.cc
! 72360260da59625f86cab66729dabd3c  gcc/c-family/c-spellcheck.h
! 66c8d42042722a1bf4dcf07fbf909452  gcc/c-family/c-target-def.h
! 9a361f164225f5ce69aacf7688496476  gcc/c-family/c-target.def
! d377f983a2b7608542fc0d1034ab9e5a  gcc/c-family/c-target.h
! dc8a64253c8832dc72e170910b72b8f7  gcc/c-family/c-ubsan.cc
! 644fa2dfeaf0cfe53b8bca3d6ad5bb1c  gcc/c-family/c-ubsan.h
! 960c40098259304e63fe7e65d89fe179  gcc/c-family/c-warn.cc
! 9ba31ec21d4ddd5e65ec4f2a9510fb5f  gcc/c-family/c.opt
! dcb2cef5a26e1633b9899946a2ea78cb  gcc/c-family/cppspec.cc
! 20446c529e92951bf598907c958af026  gcc/c-family/known-headers.cc
! a68d869def2a6738d328ed7689f87190  gcc/c-family/known-headers.h
! 55d4227fdfb9e5cd81ffac2fadcf85c9  gcc/c-family/name-hint.h
! d5e5e6221af65ab5bf8c100105a7e635  gcc/c-family/stub-objc.cc
! 9f18ec96b58c2f31b0242aad165c8e1c  gcc/c/ChangeLog
! c34f18ab50963bd48783733e4cc912d5  gcc/c/Make-lang.in
! bca8b48089af255e3dc7cdc6705005fa  gcc/c/c-aux-info.cc
! a670199451d3424bfef5a97af7e81f86  gcc/c/c-convert.cc
! 5e7e80bdb1617ffa6061cab0933fef77  gcc/c/c-decl.cc
! 76e38393aeab52ee4fd15f1b7bcfe5c0  gcc/c/c-errors.cc
! e2d3c0a7888d2d1089c7b84ca5cf8adb  gcc/c/c-fold.cc
! 36585bbdc134fac93bf37ce4a266a742  gcc/c/c-lang.cc
! 4c41bcf57ef70a715d912f300edcaa93  gcc/c/c-lang.h
! 9568e9971745ea65bd3d2cd78d731b5a  gcc/c/c-objc-common.cc
! 1002460f01d21f3324f0ab1de4f57e08  gcc/c/c-objc-common.h
! a87651cf0250a5b655b0fd07c7b1b404  gcc/c/c-parser.cc
! 9a67949fe8b699fa17a2d86df0c26982  gcc/c/c-parser.h
! a0c8332636dfa9ddad34279ddb02f408  gcc/c/c-tree.h
! b3bef05629447672940e4d17d2c6ce96  gcc/c/c-typeck.cc
! b7fb26d29af07468efe2938b8b9bf0af  gcc/c/config-lang.in
! 3afc109228b19fcb0d4a94d5d641b0bb  gcc/c/gccspec.cc
! 781af451520f205a34a5c0cf153b304e  gcc/c/gimple-parser.cc
! a9f235efd21dd80628fc14eaab414e66  gcc/c/gimple-parser.h
! 05bb49193ebee058883b9e7b5e927a62  gcc/caller-save.cc
! 6b63091fa395cf3b64a2565eca53818f  gcc/calls.cc
! 1c7fd0b9b35cbc453724d299377cf94a  gcc/calls.h
! 57c4db410b8bdc8381dc5c909d13a8f9  gcc/ccmp.cc
! d6875984b5cc2128903dbb2b1ddbd0cd  gcc/ccmp.h
! 5cfa5baa10504b0ce0fc1ce7978d9618  gcc/cfg-flags.def
! 6583c5dad6f16c03b17ea97a6cefb07f  gcc/cfg.cc
! 6d01c3e658529344de86c02213d0ae07  gcc/cfg.h
! 6bb9ef3ac284718bf56cea5427a4a16f  gcc/cfganal.cc
! d28ee28e1915a34068f3acb03f4a49bb  gcc/cfganal.h
! 0d2a82cb58b1cfefbbc755ce0827fdd6  gcc/cfgbuild.cc
! b12c021dcabda408f8a77b1262578938  gcc/cfgbuild.h
! 1eee849ccec795885a6e23f54f6f2564  gcc/cfgcleanup.cc
! 26d6ce4714a68321ba5ee3ca8d8d5042  gcc/cfgcleanup.h
! 61eb20374be6ec6c364c92ede21b7c95  gcc/cfgexpand.cc
! 2081ed1f982aff326fd96314f500b487  gcc/cfgexpand.h
! ec7594dfe02fd1aa4366747bf98b01ef  gcc/cfghooks.cc
! c07ae507570a86e164131d0adbb19c7a  gcc/cfghooks.h
! 83b1d3c7f520aa855c953002612181fa  gcc/cfgloop.cc
! 8e1dc1f587147e4913317aec3dd62f3c  gcc/cfgloop.h
! 5b7a334e2dcaeb9a33896540bd01f7bb  gcc/cfgloopanal.cc
! 50b7fc6231c733144dc1c33d48b8b739  gcc/cfgloopmanip.cc
! 4455a96e3179beb08bf7d4c4275ea90a  gcc/cfgloopmanip.h
! fb3b9724fb78e61df55fbe34b04db160  gcc/cfgrtl.cc
! f7f172c645d893709e8151eeaad80a16  gcc/cfgrtl.h
! 36e5b82ff0fea9f103085874bfe39e0a  gcc/cgraph.cc
! 6497485368e3b1ee6de055bdfd6270c2  gcc/cgraph.h
! 5757ec66e81724328cf4c78ce0354445  gcc/cgraphbuild.cc
! f689051cba48a1d85ea48819c7f1cd64  gcc/cgraphclones.cc
! 754ee5d6f1343466a5d94e221d54ac86  gcc/cgraphunit.cc
! c4a638b8438c85490d58aa4c8a364b19  gcc/cif-code.def
! 51b9093b582e7ab838747e098a7aeedd  gcc/collect-utils.cc
! 553d6ef88e3bbc59f1562d2aa4b14ada  gcc/collect-utils.h
! 0ebcb199f055d68f8c1764be28d38fe8  gcc/collect2-aix.cc
! e218b7389df915c65932d195e32dc5ba  gcc/collect2-aix.h
! edbea9c45bd94aaebcdc56d9cf836f77  gcc/collect2.cc
! 2ec72d0e57c1f7b840013ba711e852c7  gcc/collect2.h
! a11d1e0986f7e4980609556464f7402b  gcc/color-macros.h
! 8944f9bf83d393ae5343dc8323fbe27c  gcc/combine-stack-adj.cc
! 3f3fdbe6897fed5eacdbf6771f715875  gcc/combine.cc
! 95a28c5bec13efb49456ad7b0b35c5e8  gcc/common.md
! e204bf4b5990ec9536bc7ebd5fbed741  gcc/common.opt
! 1dfb24e07014e2857e3871b986f7cda8  gcc/common/common-target-def.h
! b40fa7b7f796158035bf897b90c5c9c7  gcc/common/common-target.def
! dd4780cefdc0ff70db891cc7364072df  gcc/common/common-target.h
! 5d29f71b420bf5f035414f395796abce  gcc/common/common-targhooks.cc
! 1a99753a3b206d3e8662f45e6ea668ea  gcc/common/common-targhooks.h
! b517f5736c81ece16b8ffbacc124e60d  gcc/common/config/aarch64/aarch64-common.cc
! 53bac84b3174cc2a1ec1b416779fa017  gcc/common/config/alpha/alpha-common.cc
! 14d82ac4081ee923e20c85f6bd01b94c  gcc/common/config/arc/arc-common.cc
! 3325f85dc9b72138d667d4f544f2acdc  gcc/common/config/arm/arm-common.cc
! d10c718feb101d59127d3ac280855934  gcc/common/config/avr/avr-common.cc
! ee2200c71804a48ee3e212e3b665b29e  gcc/common/config/bfin/bfin-common.cc
! b587bfef0eef0f460e1b2fc6a5a5bb7c  gcc/common/config/bpf/bpf-common.cc
! 1679dff58cd1fc1e18a5a030aa10f1e5  gcc/common/config/c6x/c6x-common.cc
! 9da71d688c2c72561d27e55ea893ab8a  gcc/common/config/cr16/cr16-common.cc
! 44280053230b7493bf5e090243f5b3ef  gcc/common/config/cris/cris-common.cc
! 8e15a64d6c7b461997b61a3c8a37b878  gcc/common/config/csky/csky-common.cc
! c85c72f18c8e06fc76e7359f7118ae83  gcc/common/config/default-common.cc
! 06944f88abf3573fcb44ff5c9458f983  gcc/common/config/epiphany/epiphany-common.cc
! cd40090c6b0ff392d059a73dafb6c8e7  gcc/common/config/fr30/fr30-common.cc
! 20e390668a44860c3145733d9c796800  gcc/common/config/frv/frv-common.cc
! be9b9d41f6660137eeec7dfdf8a7f359  gcc/common/config/gcn/gcn-common.cc
! 165032b6a1a6571ace982867c4ff2039  gcc/common/config/h8300/h8300-common.cc
! b0abfc846dbc17ff15b552d00a5ab967  gcc/common/config/i386/cpuinfo.h
! ef1e2e2c663227bfa9d74b7f36ac933d  gcc/common/config/i386/i386-common.cc
! e3de61972b405d3f76d1af51e277103c  gcc/common/config/i386/i386-cpuinfo.h
! 3f143be99f8781c66861c65ae2a601a3  gcc/common/config/i386/i386-isas.h
! 5494bdbe00937fd7a5af86c32a0899ff  gcc/common/config/ia64/ia64-common.cc
! 6dbb6f1d886765f6d8351ac84a0be2e5  gcc/common/config/iq2000/iq2000-common.cc
! b3048b67c6beed36a30c691610f23458  gcc/common/config/lm32/lm32-common.cc
! 73ca1f834e0a90f636ba6a5b666c7ee0  gcc/common/config/loongarch/loongarch-common.cc
! 44cd08ef21b8dfe4ee43184e0d29b3f5  gcc/common/config/m32r/m32r-common.cc
! da6403487e543808aacea65df5afffac  gcc/common/config/m68k/m68k-common.cc
! 0de6dddaf99bd0c62c05f01e6cfa1cce  gcc/common/config/mcore/mcore-common.cc
! e9c0aedef0d1dc4bcc35300253a65a49  gcc/common/config/microblaze/microblaze-common.cc
! 569e0c88171830928db5af30edcce37d  gcc/common/config/mips/mips-common.cc
! 606a13966281d9680abaf49ea3d09763  gcc/common/config/mmix/mmix-common.cc
! 200d036a60fdde399879db2ade45322d  gcc/common/config/mn10300/mn10300-common.cc
! e3e7f98e0533f2cb62d7f370c107c1f5  gcc/common/config/msp430/msp430-common.cc
! 33de86f4d3cb59b5e4288fd433de50ce  gcc/common/config/nds32/nds32-common.cc
! 1b024590ad4fd89de41ecbf4f5f381a8  gcc/common/config/nios2/nios2-common.cc
! 31c14a07052a2185c1c926feec2c465b  gcc/common/config/nvptx/nvptx-common.cc
! 7032e9972daba5fcf39119eb9cf3e622  gcc/common/config/or1k/or1k-common.cc
! 4fa8b66cd59f483cf3ba5b78c0c29fdd  gcc/common/config/pa/pa-common.cc
! 56adda05770f4da873cb9455af96d19b  gcc/common/config/pdp11/pdp11-common.cc
! b41cc1a5a9c2a024d6503911644809b9  gcc/common/config/pru/pru-common.cc
! 7574eebd1f993e3fc8424f8f5994b447  gcc/common/config/riscv/riscv-common.cc
! 68d7ce5d2aabc8a4b1051db4bbffa62f  gcc/common/config/rs6000/rs6000-common.cc
! 91b14dacc519e2f60e76984679ac621e  gcc/common/config/rx/rx-common.cc
! c548772c8a9a8daa6fe02fdee9655ded  gcc/common/config/s390/s390-common.cc
! 456479481c8ac654b4d06e185f6334a2  gcc/common/config/sh/sh-common.cc
! 861d6a2c5fe08de16d7d559a75a42d1a  gcc/common/config/sparc/sparc-common.cc
! 649e96680b7d44bbda844df9b67a3c81  gcc/common/config/tilegx/tilegx-common.cc
! f0b94e820b2b03859ffa95f3ac1d700a  gcc/common/config/tilepro/tilepro-common.cc
! c013c03de17be9e65a3a183bc79ae317  gcc/common/config/v850/v850-common.cc
! 1b1e62c748ce6c0d24ce55263b809224  gcc/common/config/vax/vax-common.cc
! e0c84d669ee99cd7622e8c33152058ed  gcc/common/config/visium/visium-common.cc
! 104b674540ea47a950a80a291c8269a3  gcc/common/config/xstormy16/xstormy16-common.cc
! 4fdeb404d6089d276c7f759a0d4ba3fb  gcc/common/config/xtensa/xtensa-common.cc
! 25664084a9decb16a9842381eb5de52d  gcc/compare-elim.cc
! 7d9fe45f414a34e7ac860c896c22256a  gcc/conditions.h
! 6a09dc5d69c18159e48b650b80038ce6  gcc/config.build
! 60b00a431eb84d79260c5a27fbbceec4  gcc/config.gcc
! f9e9c6799c33fd97ecef8d0371a5960e  gcc/config.host
! 05aae2b3f68c309d65e695856db883b9  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! f1de29e1b542d2f98786a8a5bed74596  gcc/config/aarch64/aarch64-arches.def
! fe42934bb2be20fce3a65bddc5f20adf  gcc/config/aarch64/aarch64-bti-insert.cc
! ff8c78e3d22c55fcab99c89ffcf36efd  gcc/config/aarch64/aarch64-builtins.cc
! 6ae38a043ca5cb2daf3dd593f3907f0c  gcc/config/aarch64/aarch64-c.cc
! 228a5b455d8db6951f07072ca3e905a0  gcc/config/aarch64/aarch64-cc-fusion.cc
! 0acf6a229377a8e57df59ba39569138b  gcc/config/aarch64/aarch64-cores.def
! ac95d64830a0d770a37130e913c56e68  gcc/config/aarch64/aarch64-cost-tables.h
! f5f68e331308b7c24d25679b9271f4d6  gcc/config/aarch64/aarch64-d.cc
! bf3ffb60b43135348a698c8fedc24e46  gcc/config/aarch64/aarch64-elf-raw.h
! 1e0bf648ff22a93639e936ea6b20da3c  gcc/config/aarch64/aarch64-elf.h
! d6dce1d495101ce658a5d8ba0c370c40  gcc/config/aarch64/aarch64-errata.h
! fb8e0faa9f5e8abd640462d03f6ceef0  gcc/config/aarch64/aarch64-freebsd.h
! d7a75dbbf19c68f4bfa46c4935ad96e6  gcc/config/aarch64/aarch64-fusion-pairs.def
! 7dd870a58148cf0c4e7db53481a164ff  gcc/config/aarch64/aarch64-ldpstp.md
! 9ab0d5809ab5ca7d2c2d92a5e7b6f9e7  gcc/config/aarch64/aarch64-linux.h
! edb0ec8cbd93536777f413a3077f7915  gcc/config/aarch64/aarch64-modes.def
! bbf7795c7deae4a1b994b366a3ee10c7  gcc/config/aarch64/aarch64-netbsd.h
! 81f259af6086b92d472c64bb1a57e9ef  gcc/config/aarch64/aarch64-option-extensions.def
! 4e47319bbf2818a04226e243058e04c9  gcc/config/aarch64/aarch64-opts.h
! bc2702391f7a1d6ceedc1a05d62a8dca  gcc/config/aarch64/aarch64-passes.def
! 3b443f381cca9e5074d80e56e8fac823  gcc/config/aarch64/aarch64-protos.h
! be2d39d69b16e211235b01445aa8434d  gcc/config/aarch64/aarch64-simd-builtin-types.def
! 605913e6bba64efb989549a141209408  gcc/config/aarch64/aarch64-simd-builtins.def
! b8a92fbfee2db55bdd4f875b88f99882  gcc/config/aarch64/aarch64-simd.md
! 89b6e3bb922a7ecffb1ea41a6096a245  gcc/config/aarch64/aarch64-speculation.cc
! 1dfc36ff708ed17d15151c526f798cfa  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 5d4f0cd0807c7b852603326ad3b0b5ac  gcc/config/aarch64/aarch64-sve-builtins-base.def
! cbf190821c63dfc5a59e6ff4f682d34e  gcc/config/aarch64/aarch64-sve-builtins-base.h
! d2457037123414759e6ef743d9c63a7a  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 11df915ce043c8d922d3f026e07f7ab6  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
! d53d0fbc6526d523bedefd90ee66c697  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
! 968b189490f5273319fde73f6ad25c65  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 2d5340bb94a493478cab1985c1a09161  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 9a1fe6850cb86e9827354606ff929415  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! ffdbdf4a6b513a34df384566a88e5b7a  gcc/config/aarch64/aarch64-sve-builtins.cc
! 383ed610f544cbe7d2313216b980674d  gcc/config/aarch64/aarch64-sve-builtins.def
! 85b90f18099c71fc34e444232db3299e  gcc/config/aarch64/aarch64-sve-builtins.h
! 5557f429e66cff2588408d878ec01b10  gcc/config/aarch64/aarch64-sve.md
! 4a8e12ce42731642b5f6346e6f2509b5  gcc/config/aarch64/aarch64-sve2.md
! 60c48990ae1c8c80a92dd2c05db80703  gcc/config/aarch64/aarch64-tune.md
! 3320efe9e8c3f43f0f10073f07d479e6  gcc/config/aarch64/aarch64-tuning-flags.def
! 4f60050851035039851c9bded03b452d  gcc/config/aarch64/aarch64-vxworks.h
! 49d02dc62cffcdbca1b895a8f7febc8e  gcc/config/aarch64/aarch64.cc
! f9978e99472d6e5f36e00146941e3e39  gcc/config/aarch64/aarch64.h
! 35a4754aacfc611d0a280ae23cad90fd  gcc/config/aarch64/aarch64.md
! 3d8b1c6373873351739af54d209f8abe  gcc/config/aarch64/aarch64.opt
! 273bc0578a1b2e9d9df47bfb5160118c  gcc/config/aarch64/arm_acle.h
! 8c46e4dc6d25951568fbb758738a675e  gcc/config/aarch64/arm_bf16.h
! b041e1c91c2a57f1b07188bd82b07c88  gcc/config/aarch64/arm_fp16.h
! 14cc63c6b8c265d0279b0dd2a525ad94  gcc/config/aarch64/arm_neon.h
! 2f349b1cdfd65e5c3ea7c5a81e9eddd6  gcc/config/aarch64/arm_sve.h
! 120845fdc8adead6576399f154adb9f9  gcc/config/aarch64/atomics.md
! a779240a611702aa33ca956ba324bc48  gcc/config/aarch64/biarchilp32.h
! 1e5237134158092e78d4e5ea4ff337bc  gcc/config/aarch64/biarchlp64.h
! 8dad64b7a0a60974bb343bd58aa0b3de  gcc/config/aarch64/check-sve-md.awk
! 3107ef644b29d4dc23c0c2d52e6edb80  gcc/config/aarch64/constraints.md
! 73496431779184a69193ef62053601f1  gcc/config/aarch64/cortex-a57-fma-steering.cc
! 91e821bb10d1ed5d78384ccc13b46243  gcc/config/aarch64/driver-aarch64.cc
! 4b0eb2a47900a60f2007f5dc1c8c6a2f  gcc/config/aarch64/falkor-tag-collision-avoidance.cc
! 5bb4a2c73d2ffd2540325830d9791d98  gcc/config/aarch64/falkor.md
! 96fbac352065a05467f9d3b2f3654940  gcc/config/aarch64/fractional-cost.h
! 9aa9cbf52d3975e3e11ff0152e1430ee  gcc/config/aarch64/geniterators.sh
! c5b65803ffe39ccd4b441618ce74971c  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! 10e67b7220f39f6169264acf51acbe7c  gcc/config/aarch64/iterators.md
! 962d936dedd891ed2d66240d3afad507  gcc/config/aarch64/predicates.md
! 7973f7652f6c3d5b279e949d43cf87ae  gcc/config/aarch64/rtems.h
! 539a63ae970b4d407ca6785b9ea15eff  gcc/config/aarch64/saphira.md
! 757a6d99e51fa6e89ad81781a4975878  gcc/config/aarch64/t-aarch64
! 30fa068e63dc1e7599fc11abd5a96272  gcc/config/aarch64/t-aarch64-freebsd
! e144bd589569c8966ad6cf6baab314a3  gcc/config/aarch64/t-aarch64-linux
! 30fa068e63dc1e7599fc11abd5a96272  gcc/config/aarch64/t-aarch64-netbsd
! 8b8c2774a4a38c7a4eab423e87136b10  gcc/config/aarch64/t-aarch64-vxworks
! 3d9df80ab245112c9ba2d17a77a1ec53  gcc/config/aarch64/thunderx.md
! 43a39ee8549d23a6dba43ea86ce2f14f  gcc/config/aarch64/thunderx2t99.md
! 981fe6fb7ac21a5c1a1843cd838ce169  gcc/config/aarch64/thunderx3t110.md
! 571b7d13a766f78100d5fb5d0e9f9c06  gcc/config/aarch64/tsv110.md
  88acf4a83af801cf69b1a23964f4c67f  gcc/config/aarch64/x-aarch64
  a07ee362a4961e9d41cb0ab83553de74  gcc/config/aarch64/x-darwin
! 9857ce0f95eda3ad2548d3c99d7db2b0  gcc/config/alpha/alpha-modes.def
! 85c03ec553f163234803a92cef295052  gcc/config/alpha/alpha-passes.def
! e89eb587493c56bdc128738eea0198b4  gcc/config/alpha/alpha-protos.h
! fb4cce1b1d927aa57e388f517ca5d8d9  gcc/config/alpha/alpha.cc
! 05c0209aea53a4b5fe54f1962ba99c45  gcc/config/alpha/alpha.h
! 9db29f7c69d016b0a51cd6e4de9dff8c  gcc/config/alpha/alpha.md
! bf0393dd31f6ef36bef17dc70498bb0d  gcc/config/alpha/alpha.opt
! 7181a3078a97bc9cabc46f9e25dcaef5  gcc/config/alpha/constraints.md
! 201f3f214a1b283e6a27afe845fad351  gcc/config/alpha/driver-alpha.cc
! 7b2f7b1ec2d2b742979f48f3a8c0a63e  gcc/config/alpha/elf.h
! 10364c8bfc3e1be17c4006b0afcdf86a  gcc/config/alpha/elf.opt
! c3b4f67a8caf1f73203eb533bf706c12  gcc/config/alpha/ev4.md
! dff1203be38a81b4d564a4ba0d7ae189  gcc/config/alpha/ev5.md
! 6c123c337abff7ea86c3c348dcc89daa  gcc/config/alpha/ev6.md
! 7262d3d67f1d22a14797827b524ea49a  gcc/config/alpha/linux-elf.h
! 65dd7e0bfa3689e29c1cecd91b4dd66a  gcc/config/alpha/linux.h
! ad5587c110ef90781021c6360b31c776  gcc/config/alpha/netbsd.h
! 77a3fc2b1e28ce730e1ced24f1bdb271  gcc/config/alpha/openbsd.h
! 1d221b77ff63d78d1d35402a67b843af  gcc/config/alpha/predicates.md
! 43dbeb672133ec981702c9c78e214f0f  gcc/config/alpha/sync.md
! 9fe5403690d5ca38afc9634eb755cf65  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
! 35f462892773e262594655604793ed23  gcc/config/alpha/t-vms
! be30f2016b450abfaeb818f07bb75fe6  gcc/config/alpha/vms.h
  b3c50e1f46a9bdacf84333c01cb8ec66  gcc/config/alpha/x-alpha
! f45a273c82f039f5caa1cd41410b0fed  gcc/config/arc/arc-arch.h
! b783a49ee646c798b3398e2235ae263f  gcc/config/arc/arc-arches.def
! 4981485617f1c580069c852c13b01957  gcc/config/arc/arc-c.cc
! f076b474796530a5e46213a5e6388924  gcc/config/arc/arc-c.def
! bd838d5b3dfcd1f0722b4e7fdf2bc6b8  gcc/config/arc/arc-cpus.def
! 3ced12987f75b89ade04d9ca58b9e272  gcc/config/arc/arc-modes.def
! 929352efd692b15953649c436dca4252  gcc/config/arc/arc-options.def
! fc9533ceaef28718446dd1fd89278665  gcc/config/arc/arc-opts.h
! 2b7ca67ca692e647e9a7f08bdb5d50e1  gcc/config/arc/arc-passes.def
! 4e5d6e784bf138b8fa769611abaea1ff  gcc/config/arc/arc-protos.h
! 9435a8a56c2b8de425cb9b6b1ae61478  gcc/config/arc/arc-simd.h
! bd29d5a070cb26c8920b7f49cd90d6dd  gcc/config/arc/arc-tables.opt
! c67f411f9a7160d1c362062fbdf35b78  gcc/config/arc/arc.cc
! 1ca0cc900aedbff5a88d112d4108e808  gcc/config/arc/arc.h
! 5a3662a473405b6e658619e9079edfdc  gcc/config/arc/arc.md
! 600872a4c784cc2ada54ca5abeab4797  gcc/config/arc/arc.opt
! 0f1c8332e1154eeabad29f456fe30e81  gcc/config/arc/arc600.md
! b6131ba531b20606acd8d0ec4095e6cb  gcc/config/arc/arc700.md
! 9a596b66793f8599c3f1fd3fc3255920  gcc/config/arc/arcEM.md
! 8163d3a59ade3360658217445b12d903  gcc/config/arc/arcHS.md
! e9a3e763aae1374c078331a1f4b1ec67  gcc/config/arc/arcHS4x.md
! f00a483c20150d6a73d4ae308fa01755  gcc/config/arc/atomic.md
! 55c2316ab909a0f0996169ed254b6738  gcc/config/arc/big.h
! d2c0351ce70a7aeab21276428c04ee27  gcc/config/arc/builtins.def
! 99abbf3b5a8cb3cc4be17ab12e4e5523  gcc/config/arc/constraints.md
! 7a31afa39448a4dc6716d2b585efc6da  gcc/config/arc/driver-arc.cc
! bdda4ff31d002d7d64bb38ba9617d6fc  gcc/config/arc/elf.h
  255d583e6d23d9cbed1614263d159a1b  gcc/config/arc/fpu.md
! fe67ba59750f2d6e2f9be8c86f7a0c26  gcc/config/arc/fpx.md
! 2626f5cb224084e0b120e595af99742e  gcc/config/arc/genmultilib.awk
! e18834b1d1698a2e3203ea1cdafd435e  gcc/config/arc/genoptions.awk
! 108eb7f3958802b251641029c2874672  gcc/config/arc/linux.h
! 71bda2dd008a3b33927aae5b36c09071  gcc/config/arc/predicates.md
! 19037669a9abd6e02eca1acd7f53aded  gcc/config/arc/simdext.md
! 62dd6f419f35b272347c511d3250f845  gcc/config/arc/t-arc
! bbb3f15c7ac8f5a326b36502d4a2b931  gcc/config/arc/t-multilib
! 3eb66143846fb2dab71a8c863d42f8c9  gcc/config/arc/t-multilib-linux
! a3abe95e921378f448412d6e65f96560  gcc/config/arm/README-interworking
! afc3b989a3b35a84eedcdbaffcbf7597  gcc/config/arm/aarch-common-protos.h
! 86ad934fe071d60aa0944c4e5629ee45  gcc/config/arm/aarch-common.cc
! 561912196221bf550ecb2d25ad60cf91  gcc/config/arm/aarch-cost-tables.h
! fad8b46a6005f06698eb532c1291d5d1  gcc/config/arm/aout.h
! 6126555e47e65862b1299f227e550eff  gcc/config/arm/arm-builtins.cc
! cf18f061428a5d02bf8f40090add93ff  gcc/config/arm/arm-builtins.h
! c71241cda48d4ff0a62a3790ba45c5fc  gcc/config/arm/arm-c.cc
! 492769dadd3b1200d72feb224819263f  gcc/config/arm/arm-cpus.in
! 863e559ff44d4225c22ded02bd4bb744  gcc/config/arm/arm-d.cc
! 9e1faac693049636d6c78b354d1c0260  gcc/config/arm/arm-fixed.md
! 2e1b91fd27ab63791d12e04a4ec05a8e  gcc/config/arm/arm-flags.h
! 66f33cb015e50febf8845b387383937c  gcc/config/arm/arm-generic.md
! f8939150ad1e5a6abc1909cfce894df0  gcc/config/arm/arm-ldmstm.ml
! 0d5c132b7b600a4a6425890c1bb7909b  gcc/config/arm/arm-modes.def
! 7c2aea615088bbdb534938361dac9bbe  gcc/config/arm/arm-mve-builtins.cc
! 1bf1dc03515ee84180323fdec57b9705  gcc/config/arm/arm-mve-builtins.def
! f9fcb84ac4cb22448555a4d17e657837  gcc/config/arm/arm-mve-builtins.h
! 65266118574d7fe565d520b23ec3e15f  gcc/config/arm/arm-opts.h
! e5088fd77c4179ab5157393fa6955e87  gcc/config/arm/arm-protos.h
! e6d8d15841677273be28f2c17f0334d0  gcc/config/arm/arm-simd-builtin-types.def
! 5760ab040aa998c3ead41b255c932c2e  gcc/config/arm/arm-tables.opt
! 92cd8a4833cea94a90965e7682f7a34c  gcc/config/arm/arm-tune.md
! 02f8bb8f119d8b00451d0639cac7e977  gcc/config/arm/arm.cc
! a74495141de646abdb9bb70e4e293aea  gcc/config/arm/arm.h
! 3eba8a70b188a11cea7c47566c17ba74  gcc/config/arm/arm.md
! ad6a9cfbbef5a63b153aea7b4ddcea81  gcc/config/arm/arm.opt
! 2eea8eb5a626c35bdb3b9bcaa1f235cb  gcc/config/arm/arm1020e.md
! 52e6ca4bd01cf86b7cb20e854aec637a  gcc/config/arm/arm1026ejs.md
! 0e7e519675dd147e77fdb69a866ca15b  gcc/config/arm/arm1136jfs.md
! 88d68729caa81a43bd61a3832d585dee  gcc/config/arm/arm926ejs.md
! 3eb110fd32cd19a0e831ed7b664f7506  gcc/config/arm/arm_acle.h
! a331837418095c073b67fcb9cdf6ac52  gcc/config/arm/arm_acle_builtins.def
! f82fe1ddbe3db8a800ef98ecafa6bd46  gcc/config/arm/arm_bf16.h
! 602c1e18596173d2fc37493f35573ad4  gcc/config/arm/arm_cde.h
! fc5cc271a5697d0016cd6c64a67c71db  gcc/config/arm/arm_cde_builtins.def
! 2d8f46acb748e5350c359a70c09571a8  gcc/config/arm/arm_cmse.h
! c4cb23cd7b0bb7e50703761c71c47806  gcc/config/arm/arm_fp16.h
! 190b68b5fcda4c346a4ca41f853b38ea  gcc/config/arm/arm_mve.h
! 4d52cc595e40683c2116c1c9505f3c21  gcc/config/arm/arm_mve_builtins.def
! 675c2bc4d01144ddb0d3ca1324746a54  gcc/config/arm/arm_mve_types.h
! 46cdfe229792555c51a5405c7d7daaf3  gcc/config/arm/arm_neon.h
! 1c21874aa25780518de958786ec1fc00  gcc/config/arm/arm_neon_builtins.def
! b713bc09f037a0f4cd254202dd76a14b  gcc/config/arm/arm_vfp_builtins.def
! 9e78fb9227c3d2b30c14089309f6d8af  gcc/config/arm/bpabi.h
! 82ebffe80579478445adfec7e1cfab29  gcc/config/arm/common.md
! bb53e3991a07c64de306a6524a9a2c48  gcc/config/arm/constraints.md
! 6586aa5e34ca29411e927c3fc6560313  gcc/config/arm/cortex-a15-neon.md
! a16eee7162f182645beb92f387325e33  gcc/config/arm/cortex-a15.md
! 6dc9c5189db0cf6db32e63018f40b702  gcc/config/arm/cortex-a17-neon.md
! 79057c0cdbaf4d89cdf6bd801c18b1c2  gcc/config/arm/cortex-a17.md
! af3801087677e741708ede19c0436718  gcc/config/arm/cortex-a5.md
! 303067576b59b94d4e19ae5a35ee7fc5  gcc/config/arm/cortex-a53.md
! 5ed1506a381e5e0a7439cee66b9a8fd2  gcc/config/arm/cortex-a57.md
! a0c795781e116e90d6b90a0185073270  gcc/config/arm/cortex-a7.md
! 7df28572dddba3208ca73afdf1ac8fd7  gcc/config/arm/cortex-a8-neon.md
! 95ec456bdda1056756fd92e1740ef1d3  gcc/config/arm/cortex-a8.md
! 2e0acdcbb6098e4f5d74ea940285938a  gcc/config/arm/cortex-a9-neon.md
! f010482a44b3210a79503c5fd88f9128  gcc/config/arm/cortex-a9.md
! 2b14c5e718bcb44b54bbc5e9f64a6f86  gcc/config/arm/cortex-m4-fpu.md
! 3979c582cc7b1e49a04cece961e7cb57  gcc/config/arm/cortex-m4.md
! b939c2711294bdbbeb4a6c9f99065f1f  gcc/config/arm/cortex-m7.md
! 2d8a18f3656b15e013d942bc5e9909c6  gcc/config/arm/cortex-r4.md
! 3d61451de0610785e77ec46632257914  gcc/config/arm/cortex-r4f.md
! 5c2d844c88ade0906290eaa788255672  gcc/config/arm/crypto.def
! 78235b7d74aab7fff6e350b08e3a0bd8  gcc/config/arm/crypto.md
! 5267b102ac87652fea088120d975a0a0  gcc/config/arm/driver-arm.cc
! 035685113b44932597d9d713cf9ea3f8  gcc/config/arm/elf.h
! 26bcf38e9737d53262f2fe663521a312  gcc/config/arm/exynos-m1.md
! 29242d28f65285ef9af952812e483563  gcc/config/arm/fa526.md
! d5ce12283f8696068be65cc08173e1b5  gcc/config/arm/fa606te.md
! 75ebe84e8d85a486a43a7242a337cce6  gcc/config/arm/fa626te.md
! 1ce2767b09409ae5759da51630e1b555  gcc/config/arm/fa726te.md
! c2a37535f7537f0a3d2244cd3a9aced2  gcc/config/arm/fmp626.md
! 67b3ee0061e519355f6aa2b0ad0784f4  gcc/config/arm/freebsd.h
! 057650ebaec5b7c4c9610d9468700454  gcc/config/arm/fuchsia-elf.h
! 540f2a1211ccdedda21a62baa315569d  gcc/config/arm/iterators.md
! 2fd471d291624fb34dd0ba675ec84cc5  gcc/config/arm/iwmmxt.md
! 2eece61e269478aae959e6e5bb3d42cc  gcc/config/arm/iwmmxt2.md
! e099fc5056b286828db365609ce8e01a  gcc/config/arm/ldmstm.md
! 5bdb1a33b5ab4d7629505d5297019543  gcc/config/arm/ldrdstrd.md
! 3876beffe07c6e729e263b01a2aba9f5  gcc/config/arm/linux-eabi.h
! 5ec12d81474a8b3168a96550721633b4  gcc/config/arm/linux-elf.h
! b50c07130eb3ca41d10c14b178702537  gcc/config/arm/linux-gas.h
! 412a503ee16d05e1867a26c7d731c031  gcc/config/arm/marvell-f-iwmmxt.md
! eca77d0ebe850d280b635d61d19d0052  gcc/config/arm/marvell-pj4.md
! 37e6b29bad3412ebd9262122316c26f8  gcc/config/arm/mmintrin.h
! fa044b3d335edef65fa08b3acf7e0561  gcc/config/arm/mve.md
! cea37ecbae4aec8ae25bcd0171dfd308  gcc/config/arm/neon.md
! 9d7507b760b746eedf6516e465f78934  gcc/config/arm/netbsd-eabi.h
! 2acba2050567d91862751ac4509442fc  gcc/config/arm/netbsd-elf.h
! 778cf6a75ff4abe8d012c19053effcd5  gcc/config/arm/parsecpu.awk
! fde36d4a15d3485138f27ad85bca6686  gcc/config/arm/predicates.md
! 567d8a0fb6e1fd78d4e4653f0021a9a0  gcc/config/arm/rtems.h
! 196b5a000d1c792979e929fcf7f24a84  gcc/config/arm/semi.h
! 83f6bb89bd00ca7c4381bd036c0ca6ba  gcc/config/arm/symbian.h
! 61add320585d1d0fac9a392fe22871c4  gcc/config/arm/sync.md
! 79157aca718d3c9074dab6400794631a  gcc/config/arm/t-aprofile
! a15399ac58f6f1adb30676707635988f  gcc/config/arm/t-arm
! d1174debd12a6ea90a6969db07ef027f  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
! 78e9c5fb319e9f6e571425172cd27960  gcc/config/arm/t-fuchsia
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
! c6730c9413632fc1eb99ce60e0368c36  gcc/config/arm/t-linux-eabi
! 837b815277b735b021879f4ef6d0e668  gcc/config/arm/t-multilib
! 9eed0f8d525d0d49b3dad11681960aba  gcc/config/arm/t-phoenix
! 495dfbb24c10e5e0d4869baad4d0ccc5  gcc/config/arm/t-rmprofile
  c434e99f4fc47fd32ffab26fbeea8464  gcc/config/arm/t-rtems
! 2973e9386d5d4d6435a87b50c0b52a7d  gcc/config/arm/t-symbian
! 1c884e103715aee920df4afd873d5b0d  gcc/config/arm/t-vxworks
! 2421d4e2888b7a94f6d88b32dcb8a181  gcc/config/arm/thumb1.md
! 20cdea0918875d00f8843fff50dba75c  gcc/config/arm/thumb2.md
! e714c23060e5798d18921aea7f1d2428  gcc/config/arm/types.md
! 49aaa2a24703d560a1ddc6b9d404559b  gcc/config/arm/uclinux-eabi.h
! df9b3fed001223cd70a167527c8bf05c  gcc/config/arm/uclinux-elf.h
! 3030dea0d248eb6b532794cfd859e7a7  gcc/config/arm/uclinuxfdpiceabi.h
! 80a116f15f21f7abef8ef372d4eeb59d  gcc/config/arm/unknown-elf.h
! 53a7b4e744d2fffe93ab9bf627338c3d  gcc/config/arm/unspecs.md
! e85633e59cdd313b077f2bd102bf65d2  gcc/config/arm/vec-common.md
! 7de39f682715329a3b33858ebba386c9  gcc/config/arm/vfp.md
! 95def474af7af4de37dc84d6fc296632  gcc/config/arm/vfp11.md
! df81f23fd0210a50276836db87675296  gcc/config/arm/vxworks.h
! 267f32e117cb09202d6198b83964ee77  gcc/config/arm/vxworks.opt
  8bb1a840fb87b138c620682ccad6aee4  gcc/config/arm/x-arm
! 2d1f84525fa04ec8662e53f9e39d1134  gcc/config/arm/xgene1.md
! 36f89cb38dc871cf3cdcd051075d114f  gcc/config/avr/avr-arch.h
! 2f32979b314fdfa213d04509e193eea9  gcc/config/avr/avr-c.cc
! 480668763d17f2b5167991c067befc49  gcc/config/avr/avr-devices.cc
! a8e967b831bb88067a50ebe1aaa9000e  gcc/config/avr/avr-dimode.md
! f8da9c6ca3a4de8f25b05bad4aab4103  gcc/config/avr/avr-fixed.md
! 0a144448d4f6070a4b9fcace87d0201f  gcc/config/avr/avr-log.cc
! 58b191ddfbc4f4f3b2eef149e125eb82  gcc/config/avr/avr-mcus.def
! 480a983b45cb16a07fb0c86c70ec186f  gcc/config/avr/avr-modes.def
! b2592117f31aced3aafa07535e6a04f0  gcc/config/avr/avr-passes.def
! 37ff17dbaf245f390ea36c7f29a7a0bf  gcc/config/avr/avr-protos.h
! 164ff6dd3b6f3a910fed5a48242842d5  gcc/config/avr/avr-stdint.h
! 3a0e450cacf4210bd66c3cb58b3937b2  gcc/config/avr/avr.cc
! 647d1e4da991324cf2eaa9b93c7586b3  gcc/config/avr/avr.h
! 863c53d8ecc4e08370b4bdaab6e94edb  gcc/config/avr/avr.md
! 13a7e96bc1d8ac7544d5f185ff8e8e8a  gcc/config/avr/avr.opt
! eaed73ea14d92bf236ad5c9187507c16  gcc/config/avr/avrlibc.h
! 9f9294792b117b0797422b0f0fd8db86  gcc/config/avr/builtins.def
! cf2f538d0f7523461b7a22551657d622  gcc/config/avr/constraints.md
! 519d174e61a3b68e3bd0433b39d3da66  gcc/config/avr/driver-avr.cc
! bec6d9236523353c7e7397b804a6437a  gcc/config/avr/elf.h
! 994f8b1234a164d23683bad0667c5f61  gcc/config/avr/gen-avr-mmcu-specs.cc
! e24c8d6e0f93587aab14772ff2f948c0  gcc/config/avr/gen-avr-mmcu-texi.cc
! 9aacb3efacdfbea2504d9362807594fd  gcc/config/avr/genmultilib.awk
! bdd0de08d8ef9281ea68799bf0dc4666  gcc/config/avr/predicates.md
! cac8c94973c07d9bc0bdb4c2508bd82b  gcc/config/avr/specs.h
! 0c00177746f6857c43084485cb9756eb  gcc/config/avr/stdfix.h
! 0d13497f8f07c60ebbb52a5beaecfede  gcc/config/avr/t-avr
! 68dd53362e51b93e3df7834e74bbe642  gcc/config/bfin/bfin-modes.def
! bccbf7092436e3e34820b83133d65662  gcc/config/bfin/bfin-opts.h
! d7ae0a3f2a9ecdaa07d95febdc9d0d77  gcc/config/bfin/bfin-protos.h
! 0588273046915f4509cb86a1b9a99e15  gcc/config/bfin/bfin.cc
! 0a8faf385eb42e8482637d3f66226924  gcc/config/bfin/bfin.h
! bdbebaee1621d9920ab971e5208c7c11  gcc/config/bfin/bfin.md
! 7bd61c12394cd54de8d17df299d4f146  gcc/config/bfin/bfin.opt
! 783e6fc4fb52a6967bfaec7e04739e92  gcc/config/bfin/constraints.md
! 8af17cb35dd1a99983abbd563ee86612  gcc/config/bfin/elf.h
! 3db762cf8f2344143665f637c89762b8  gcc/config/bfin/linux.h
! 77bddaf338ffb46b70229b5527da4572  gcc/config/bfin/predicates.md
! cb839f1ea99225ef5ba24ff4aaf3be5a  gcc/config/bfin/print-sysroot-suffix.sh
! 3b2551c72ae83c225edf61088c95f4ff  gcc/config/bfin/rtems.h
! 5cd8760f9a746f9ebed4294d4462d3b4  gcc/config/bfin/sync.md
! 0f78c50e01b8dff76c4d58e6b2403e81  gcc/config/bfin/t-bfin-elf
! 341bacd65fd66f79dee69813619d6d61  gcc/config/bfin/t-bfin-linux
! a94ed2f004c3740cf9fd8d955294d32a  gcc/config/bfin/t-bfin-uclinux
  6f4817f759fcac5ac27233ee451780a6  gcc/config/bfin/t-rtems
! 497949350ae9b4a61ac6adac318b4e7f  gcc/config/bfin/uclinux.h
! aa24b7afbcd75bd4dc6d4ad576ebf804  gcc/config/bpf/bpf-helpers.h
! 8c938c13f8a38816b68e92490ec1851a  gcc/config/bpf/bpf-opts.h
! ee1ef97c91b06886a2797b0359881a39  gcc/config/bpf/bpf-passes.def
! 66694c610d32f257ebc50abbff131a56  gcc/config/bpf/bpf-protos.h
! 9047c5372e5bb4384d6c49c927ad64c2  gcc/config/bpf/bpf.cc
! 8523b199c43166c7d63c20ccce258684  gcc/config/bpf/bpf.h
! 2eb464ebd948d47392d9f97f6d0b0263  gcc/config/bpf/bpf.md
! 38b4454115b68a2a92634d50a12b73c5  gcc/config/bpf/bpf.opt
! dc94cca585b162fe0498472b5642b4c5  gcc/config/bpf/constraints.md
! 418257021895f7856402bb9b4a5dcd65  gcc/config/bpf/coreout.cc
! 59aab81a1aef0934a4dbfba7d751484c  gcc/config/bpf/coreout.h
! a7e3cb5a8876ad15a3282423f6328ae6  gcc/config/bpf/predicates.md
  290c61502f2095fde313896f88d95081  gcc/config/bpf/t-bpf
! ab4629a4f5b82360f1ed66239a9f0b85  gcc/config/c6x/c6x-isas.def
! 33ab80f8116396cde19a05772a3c59eb  gcc/config/c6x/c6x-modes.def
! 4421ec84ac118a19c1c9c62d785adf4f  gcc/config/c6x/c6x-mult.md
! 073c38ffab73988adcec4f871da793df  gcc/config/c6x/c6x-mult.md.in
! 687430af26740a504df76747e5b50adf  gcc/config/c6x/c6x-opts.h
! e7959077a95d960d0d1637cdc55b60a2  gcc/config/c6x/c6x-protos.h
! f2aabe6f1c206badf3c41038822ddc6b  gcc/config/c6x/c6x-sched.md
! d2b5e3bfc313e01f22fd1c6da1e3f600  gcc/config/c6x/c6x-sched.md.in
! d87eef1d4c742a19c6ebcf8aabcfa1af  gcc/config/c6x/c6x-tables.opt
! d7ce3476b98c5eb82debe077deec0b4c  gcc/config/c6x/c6x.cc
! f74ab3bfc19960eb5c34c2fc10e62e7c  gcc/config/c6x/c6x.h
! 0d95a420ddd260afa7dfdc79014fc904  gcc/config/c6x/c6x.md
! 233973862cd63e9f8025ed697c82b6e5  gcc/config/c6x/c6x.opt
! dbe3fe8f7be60a24f4edec298790b078  gcc/config/c6x/c6x_intrinsics.h
! 0323605ca84132cdf4013c5ec2d0d1e4  gcc/config/c6x/constraints.md
! 8efa29807e119e18806aad1876e31042  gcc/config/c6x/elf-common.h
! b5022d083f67430759267e47c1b97d88  gcc/config/c6x/elf.h
! 38deccff2cff79cb58b47b2361cb4b93  gcc/config/c6x/genmult.sh
! 8289ab2be9534463028a0c33e177c0a8  gcc/config/c6x/genopt.sh
! 7d9b7854dc9e597f80fd472981b7a01d  gcc/config/c6x/gensched.sh
! 9a17f6980ad74061d90e0f8afb935e49  gcc/config/c6x/predicates.md
! edbd04b10944b0d018bbcceae192ecf7  gcc/config/c6x/sync.md
! 64975e4b89676f9b4ba7335710437dd1  gcc/config/c6x/t-c6x
! 2df40c7e173c1ca21d0c0ad1a9c672dd  gcc/config/c6x/t-c6x-elf
  428034a210600b6b423dfadb06636e03  gcc/config/c6x/t-c6x-uclinux
! 006a20307f55e7905e696471f9bc8648  gcc/config/c6x/uclinux-elf.h
! 251aabec13f52eca7640175ce78071fe  gcc/config/cr16/constraints.md
! 052c53549c50918883ba2053a61a8c72  gcc/config/cr16/cr16-protos.h
! 5c867fd6ac26791ce9a0700a8e32daec  gcc/config/cr16/cr16.cc
! 6a43bf10fe7a2738cd477c8941dc5bb7  gcc/config/cr16/cr16.h
! d61c528834fc7d6eea8d3029e53d1113  gcc/config/cr16/cr16.md
! 8cf3ade39992adf707d837a226f4d1ae  gcc/config/cr16/cr16.opt
! 8c38fe042c97552dcc363063f09e0bb4  gcc/config/cr16/predicates.md
! 187bec0101b194b2dd4475e51841de70  gcc/config/cr16/t-cr16
! 9d30c4345c8058faec28b4c17548c952  gcc/config/cris/constraints.md
! 9a1087f0ac96954064bf010f3f0c1ac3  gcc/config/cris/cris-modes.def
! 3619a44102142e10dc0799d89057f177  gcc/config/cris/cris-passes.def
! f131d3f609c309c9277824e3dee4867d  gcc/config/cris/cris-protos.h
! 1670e4698247200d86349dd18e476c95  gcc/config/cris/cris.cc
! f60ff2b8ef89a371b8e637f48fc3cb76  gcc/config/cris/cris.h
! 7cabf542432ca9c493f9dde54806cff9  gcc/config/cris/cris.md
! d8f9df0ad1573867e24d727be0311613  gcc/config/cris/cris.opt
! 65335198db400558feec5f2cd2b757b9  gcc/config/cris/elf.opt
! 08135364adf9e700dab1b427f3c12a3b  gcc/config/cris/predicates.md
! 6a926e765e16e83d05eec0cd07690565  gcc/config/cris/sync.md
! 2bfb4b8008fa21636f62b1d790b71452  gcc/config/cris/t-cris
! 187e6196ef2eff032d6eef2415dc3ecb  gcc/config/cris/t-elfmulti
! 769c728913fbbcc0231f024bfa33bb0c  gcc/config/csky/constraints.md
! 19f02e8d229543bd7e6222e68ede2fa3  gcc/config/csky/csky-elf.h
! 0cc1a2cb395a136e70652bfc948bdc90  gcc/config/csky/csky-linux-elf.h
! 96ecbda882d31804fd320042b1d970df  gcc/config/csky/csky-modes.def
! 470e4a0e8b8eca527e63ce25fa531a18  gcc/config/csky/csky-protos.h
! ebecbabacdbfabbd4d9660e143aa608b  gcc/config/csky/csky.cc
! ebe9eeafa412f30de039c43d0142ea5c  gcc/config/csky/csky.h
! 17bda973dbfef4d1b3a4a7a9b82d41bc  gcc/config/csky/csky.md
! 2aee0785afd6af8b9bb45845f6fba1aa  gcc/config/csky/csky.opt
! a35d297639a721efc246a113ed914668  gcc/config/csky/csky_cores.def
! 9e6f277a017242e6c642bea60ede0065  gcc/config/csky/csky_genopt.sh
! 89764e17f8c6b914cfa968d6af2b295e  gcc/config/csky/csky_insn_dsp.md
! d4b0e43bdf4cf1e220f9ace9c9fc6635  gcc/config/csky/csky_insn_fpu.md
! 3b32191e49a8ac794ad0677264ed7654  gcc/config/csky/csky_insn_fpuv2.md
! ec42b2e0a5034d95272c60f84d61a3d6  gcc/config/csky/csky_insn_fpuv3.md
! 986d1eaa60d89b101363b05d0faf8635  gcc/config/csky/csky_isa.def
! 2e1848d4513224e036ad92532a6ef401  gcc/config/csky/csky_isa.h
! f66737cc288f574cc3e42605e01ad014  gcc/config/csky/csky_opts.h
! 75c097e9d36bc1ac3797f7459ec55a64  gcc/config/csky/csky_pipeline_ck801.md
! 681e21c5e19121565a3e2dc1b4e71b5f  gcc/config/csky/csky_pipeline_ck802.md
! 3b769d5b247e37cb356754a158545d44  gcc/config/csky/csky_pipeline_ck803.md
! 1a3afb2f1ebd9c1ea3830c8ac5bc64b6  gcc/config/csky/csky_pipeline_ck810.md
! e7879265d13d182c067ab4ff7285742d  gcc/config/csky/csky_tables.opt
! 31bc59aa147f643926978d1aa777a1b6  gcc/config/csky/predicates.md
! b0d2adcd9439a44dc07ef8f9982ef205  gcc/config/csky/t-csky
! f23ad2cadbfd4e0d9800d7231be589b7  gcc/config/csky/t-csky-elf
! 087cc4a34dc1390ce208b02f74c9acd1  gcc/config/csky/t-csky-linux
! c63f12e83019ec59f0315579c612ec6c  gcc/config/darwin-c.cc
! 111f6d2cef3e23a9868db19144a5eaeb  gcc/config/darwin-d.cc
! 34d6df0b3c2c505374efb226d0308119  gcc/config/darwin-driver.cc
! f45abe10e3aa93ce43dc8cdba5640b58  gcc/config/darwin-f.cc
! 2f008666ac55a1275ad46737705557fc  gcc/config/darwin-ppc-ldouble-patch.def
! dd284730639b90f8e1b9409230c9dfc9  gcc/config/darwin-protos.h
! cb5bf7a5e59178a24f11676df7bd36ec  gcc/config/darwin-sections.def
! 6afc2ac3df5167a08a2ab5ff1e94577d  gcc/config/darwin.cc
! 282ab6a00ab99cccdc98025815b8e3b7  gcc/config/darwin.h
! 73a379c0bcbe698b48e59ff3d032707e  gcc/config/darwin.opt
! 3565bbd41b50b8b5d5ee9ea2a2f7418a  gcc/config/dbxcoff.h
! 6d89a3bd0a87690df3f4303c420c070f  gcc/config/dbxelf.h
! 362acdec0f55c89a1402846a3c6a8f6f  gcc/config/default-c.cc
! 4c9f59ac7d772ab2957cf1ec1711060b  gcc/config/default-d.cc
! 321c7b131ef0d6a3d341e18f563fab47  gcc/config/dragonfly-d.cc
! 0ee0aeac48e6c3492228d096d35ca676  gcc/config/dragonfly-stdint.h
! a36893760198b3140b0778c4e686a0ab  gcc/config/dragonfly.h
! ea387db97b71b5fb730e6fc7807f4e9d  gcc/config/dragonfly.opt
! 1077f784e8cdc84fc6e9c72d19524c73  gcc/config/elfos.h
! b79e997a3f2a7b44d9644fe18c11d65c  gcc/config/epiphany/constraints.md
! 2263a16bcf22863fcb5ad28dd791cbeb  gcc/config/epiphany/epiphany-modes.def
! 61da4626286e3dec119bda58e235c9d0  gcc/config/epiphany/epiphany-protos.h
! b067341ab65d3556db241244bc548f52  gcc/config/epiphany/epiphany-sched.md
! c82db60490f93c9c4518be4cc7b2b3f7  gcc/config/epiphany/epiphany.cc
! a96ffdc21848503d764b4c6090b94d8a  gcc/config/epiphany/epiphany.h
! b6fd47a3d091810a2a1ff0f4094c76ed  gcc/config/epiphany/epiphany.md
! b5487ca78a46fcbadf6526040d6ca8a9  gcc/config/epiphany/epiphany.opt
! fd60bfce062b6c359dadc049adbd98ab  gcc/config/epiphany/epiphany_intrinsics.h
! 2ffa12429ca5b027842a5db414be2480  gcc/config/epiphany/mode-switch-use.cc
! 0858a4f31d8383fd5fb608d696cf4aff  gcc/config/epiphany/predicates.md
! 5fbb53a1ddd0e29724e9f41cebe394eb  gcc/config/epiphany/resolve-sw-modes.cc
! ece4b9241236bf43585a065be68129d2  gcc/config/epiphany/rtems.h
! f55fcd75e496d40a9834bc068700407b  gcc/config/epiphany/t-epiphany
! 39a07477a2a4d2d1d095bfdcf012c9ae  gcc/config/flat.h
! ad54e7d71d588b85b091ac59ddb3ccca  gcc/config/fr30/constraints.md
! 0e0b177244891fb4f3d3ad5225875bab  gcc/config/fr30/fr30-protos.h
! 322d6d5f8a855215ddfeec4dedf1c2da  gcc/config/fr30/fr30.cc
! 2c01b56be985ab055557bd8e0bf6608d  gcc/config/fr30/fr30.h
! a8bb52c68d5ff6d8d6f4e824cc2887fc  gcc/config/fr30/fr30.md
! 05dd545759122b52d1673afd18a05116  gcc/config/fr30/fr30.opt
! fef57bdfcd54f9dfa859058c3312929b  gcc/config/fr30/predicates.md
! 9d7d445fabed50666865af464c6e12cd  gcc/config/freebsd-d.cc
! 3f1ffbb4c52de9bd495a6283ae18abb9  gcc/config/freebsd-nthr.h
! 6fbbe18c06386a866f4fda3a47fa95a0  gcc/config/freebsd-spec.h
! f1af6242fbeced63be659528fc126923  gcc/config/freebsd-stdint.h
! 773661a9c3a0ffc146cbe3dc006d137d  gcc/config/freebsd.h
! da976f16e44d0cfcc8634de5063c0549  gcc/config/freebsd.opt
! 6f2a84f5988def710be7e5ca30095881  gcc/config/frv/constraints.md
! 1216c55feca9e71350dc461aaccabee7  gcc/config/frv/frv-asm.h
! 6270130252c90454fcc728214af2da81  gcc/config/frv/frv-modes.def
! 1149835e7ba0297fec985d745b00ce2f  gcc/config/frv/frv-opts.h
! fa3c74923d58614233a0bd91bf2246be  gcc/config/frv/frv-protos.h
! 20e0c78f1db7e00c91706bdf5862a2e8  gcc/config/frv/frv.cc
! 4d743010f5e5823da4e7f114dc2b4a8b  gcc/config/frv/frv.h
! c0d13606155952a09de227b149d8b80e  gcc/config/frv/frv.md
! 56aaa5b42aa72f73e59020335330eab6  gcc/config/frv/frv.opt
! f73a5bbd6be837b4317441fc36258778  gcc/config/frv/linux.h
! 0d360153ffa36dbe85a4fd3083c0f1dc  gcc/config/frv/predicates.md
! 9d4bafb65b161778029cfaff02fdd869  gcc/config/frv/t-frv
! b124af981a7da0c397253e9a2b116d48  gcc/config/frv/t-linux
! 7eb370154a8e98d2c8727644cfdae0cc  gcc/config/ft32/constraints.md
! 5a8d82c00210a1eb06004e0fa2eaed0f  gcc/config/ft32/ft32-protos.h
! c20c678900fd30f58a1be6c1918992ae  gcc/config/ft32/ft32.cc
! 55deca0cf481df0a9b2152ca15be64d1  gcc/config/ft32/ft32.h
! cc79626f169d7aff503a135000e90e94  gcc/config/ft32/ft32.md
! f3e051d56f94b468e1b5fb52f231a5c8  gcc/config/ft32/ft32.opt
! ba1463419662bce8e9595eb003413b0e  gcc/config/ft32/predicates.md
! 74898d4f885ef48060ac76d0f163ced7  gcc/config/ft32/t-ft32
! dca2c7cfa93d27c2c9dea8aeb106a5ef  gcc/config/fuchsia.h
! d6844ace6a33edf9c0a4affef9b0f1fb  gcc/config/fused-madd.opt
! 290d5bc344d1575a34bc4b4a7540166b  gcc/config/g.opt
! 88a2248be6dd5fab8e5dcf5e136e62e9  gcc/config/gcn/constraints.md
! dd69772865a5cbb5522336344e56cd76  gcc/config/gcn/driver-gcn.cc
! 7c8ae44c35c05bdc787b678c2252a9d0  gcc/config/gcn/gcn-builtins.def
! 59a1f2ed51b24ba196d81ae2c5b678a0  gcc/config/gcn/gcn-hsa.h
! e5e4969cff9f1a94ae3b58eb83546818  gcc/config/gcn/gcn-modes.def
! fa5b07fc337cf6c1c63f45879d09f265  gcc/config/gcn/gcn-opts.h
! ced91140c61d0b72bfb63f082fe0728c  gcc/config/gcn/gcn-protos.h
! b5b75729636274accf073772980d78cc  gcc/config/gcn/gcn-run.cc
! 7c7cfb68405ad52f790c141fc252fd30  gcc/config/gcn/gcn-tree.cc
! ff9aa0876e6409325633f208ca567d28  gcc/config/gcn/gcn-valu.md
! c36b2ab0ba94fabe1b917b092a1125c0  gcc/config/gcn/gcn.cc
! a983193d61c7c2c03709642878544a31  gcc/config/gcn/gcn.h
! 1ab3295e556fe5ccd3676c04f6005aab  gcc/config/gcn/gcn.md
! f55412710d9e4eadc9607481003547ce  gcc/config/gcn/gcn.opt
! f17df9747158c5dc29f6654b5195a5a5  gcc/config/gcn/mkoffload.cc
! 2a53fbd33ed1f8edf50ed24dc08e1f41  gcc/config/gcn/offload.h
! 569a86827188aeb1e90b23ee29f92a4f  gcc/config/gcn/predicates.md
! d757458b061ce559326d88e7d9bbd81a  gcc/config/gcn/t-gcn-hsa
! 91e6ce30a7f50f5bd2f1cdba83a875a3  gcc/config/gcn/t-omp-device
! 29b9f1d790c18f2de0a8b9c5ec0bc7cd  gcc/config/glibc-c.cc
! 9675a130ee88a43894241a89fa582353  gcc/config/glibc-d.cc
! 0616ca61c29d5b8d6464757c7c5dfe70  gcc/config/glibc-stdint.h
! 6a5c078099b5a2e2c727bfdc52385226  gcc/config/gnu-user.h
! d206380055cafd7bafda28f47181efc4  gcc/config/gnu-user.opt
! 547c4d2400a2a07b669b93db2159e589  gcc/config/gnu.h
  614bb3102b667d8f96684dddffd1f625  gcc/config/h8300/addsub.md
  cddc64825ce6e6e92692684251745f9e  gcc/config/h8300/bitfield.md
! a0fc6d56138367ab6a5bb3fe7949d05c  gcc/config/h8300/combiner.md
! 4e63ba3bcc7f404f6c89b7744e8a7a8b  gcc/config/h8300/constraints.md
  6951bae6ec523668ea56b4c855810ce3  gcc/config/h8300/divmod.md
! 7f39f85b18224fc6d6dfe92803e1fe74  gcc/config/h8300/elf.h
! 85931a4b7cb4497d2dfcfe7a72251934  gcc/config/h8300/extensions.md
! b9969e9bfb721f9aaff121bcdb91ac34  gcc/config/h8300/genmova.sh
! 85f785fbe5f0871b67e561b22a0710c5  gcc/config/h8300/h8300-modes.def
! e95757598ef266058ebb722051b68915  gcc/config/h8300/h8300-protos.h
! 086b4e710d1a4b8a4865994e71799bcc  gcc/config/h8300/h8300.cc
! e4dfc00f9837ef3dfbeb3747f2292309  gcc/config/h8300/h8300.h
! c1e7b1f5959721e8dc3b4c9c07204465  gcc/config/h8300/h8300.md
! 4e48bd9ec394449fffcbc9ce846f00ed  gcc/config/h8300/h8300.opt
  b5d25924674b9d28333ecf000341f07e  gcc/config/h8300/jumpcall.md
! 590e80efbe03ffa5e7e7d402353a3395  gcc/config/h8300/linux.h
  aadf1bc3214dfe74ed3fcee32bc9332c  gcc/config/h8300/logical.md
! bc7daba8bc9e2b92133cf79aa13f531e  gcc/config/h8300/mova.md
! a9707c57a01c32195161ee72779e503e  gcc/config/h8300/movepush.md
  6497e83ede4f1f9ec82eb6a07ba6f856  gcc/config/h8300/multiply.md
  56b9e51103f6a9c3bfc3777663b9a4f7  gcc/config/h8300/other.md
  e673e4aefe8a67834929eb43e99ac3df  gcc/config/h8300/peepholes.md
! 75cd86332ef61455533fbeda7964af28  gcc/config/h8300/predicates.md
  229fc2c8a83deb14625c4ee888cbb642  gcc/config/h8300/proepi.md
  daa266a3eae63ee1e65cb8c441f4c9c2  gcc/config/h8300/shiftrotate.md
! bf3f92dcf6121f90e68ab1b01f9d2e31  gcc/config/h8300/t-h8300
! 4055a30bb0b76042f6c909307ccdc108  gcc/config/h8300/t-linux
! 08fc74adfb2edd542bad09338b800e79  gcc/config/h8300/testcompare.md
! 4f841b17b39ccabd6a5c045119bc0133  gcc/config/host-darwin.cc
! 42392ae127fbe1ed4489af62c1e83947  gcc/config/host-darwin.h
! d3aae93a2553761e3bd38eb3bbe52ca4  gcc/config/host-hpux.cc
! 9c36a0a896956969d9486298f6f60bed  gcc/config/host-linux.cc
! cf7bcabc347f4fbe94842dc3d36f9d94  gcc/config/host-netbsd.cc
! 8644923c06fb578a16585297ef8cab0b  gcc/config/host-openbsd.cc
! cf1bbcc054268a6a185f17503b37010d  gcc/config/host-solaris.cc
  2c191e2d8d033611c6fccc8362d9e8f0  gcc/config/hpux-stdint.h
! 16d07d8d3bcd9999cfae085068c77069  gcc/config/hpux11.opt
! 9de664a72849b7e98bcf9315b6ad625a  gcc/config/i386/adxintrin.h
! 7140c08161ca9219fd720c34f93a602b  gcc/config/i386/ammintrin.h
! d4a6c7a692c80f0ed51ec3d6099f15dd  gcc/config/i386/amxbf16intrin.h
! d6abc2d151311152cb0693652c7b05cf  gcc/config/i386/amxint8intrin.h
! bfb02611a831325683c52234036d89ed  gcc/config/i386/amxtileintrin.h
! d6b432ae98731354d73e97ad3d785397  gcc/config/i386/athlon.md
! d146e533457f0a84f8ed2dfcc599c0c5  gcc/config/i386/atom.md
! d3b4f4cbfc84b2f53ce3827afe4b7945  gcc/config/i386/att.h
! b2d71df4955ec62788dd834e597bbb4b  gcc/config/i386/avx2intrin.h
! 0ffa1bc8325980a781ec70d915447c36  gcc/config/i386/avx5124fmapsintrin.h
! 5b88de21534946a0f61d12b57ba6a572  gcc/config/i386/avx5124vnniwintrin.h
! 823cf4a556009acbb4bd0204278674b7  gcc/config/i386/avx512bf16intrin.h
! bde1cc60bc22dd5c40dbe9162fbe2181  gcc/config/i386/avx512bf16vlintrin.h
! 0d1af95164b629c8b7619906eaa97f05  gcc/config/i386/avx512bitalgintrin.h
! 57f72074beed4351594174390bd9b12c  gcc/config/i386/avx512bwintrin.h
! ec59a1f379b4a6d2df23c1d1f791a3b9  gcc/config/i386/avx512cdintrin.h
! b8f23feb64286343e8c537a762328cd8  gcc/config/i386/avx512dqintrin.h
! 738470dbc828d093caa01f60ef6c7b4c  gcc/config/i386/avx512erintrin.h
! 7918814982f7ef9f0267c9f8b110a5b7  gcc/config/i386/avx512fintrin.h
! 660873208fdba04c5b56129870dcc33f  gcc/config/i386/avx512fp16intrin.h
! 032a09af8cd224ec0665d77f4b9eb092  gcc/config/i386/avx512fp16vlintrin.h
! ac74949772b9541e61d1682972037dae  gcc/config/i386/avx512ifmaintrin.h
! fc191ab288a6a41536ca5d96ad45699b  gcc/config/i386/avx512ifmavlintrin.h
! 44a538c6846c96c75b5e83fdee39905b  gcc/config/i386/avx512pfintrin.h
! 3de2d88a31427b9eeb84e19dcbbb59ee  gcc/config/i386/avx512vbmi2intrin.h
! d653d694cb28bfc56860269d956df861  gcc/config/i386/avx512vbmi2vlintrin.h
! defbe635d7ee201cee8ca21199314805  gcc/config/i386/avx512vbmiintrin.h
! 79fb67ae683bc52be5dffa7356b50e53  gcc/config/i386/avx512vbmivlintrin.h
! e1a827ccee55d539e84cc4221c704f1f  gcc/config/i386/avx512vlbwintrin.h
! 03026296f468ffeaa3c1a073aa5397ad  gcc/config/i386/avx512vldqintrin.h
! baeb5882f6596e82a75b91e6ae18f054  gcc/config/i386/avx512vlintrin.h
! 25b2058dfd67782c5354eba5d7d350e6  gcc/config/i386/avx512vnniintrin.h
! 2de001abaf8dccb13af0bedd3a865855  gcc/config/i386/avx512vnnivlintrin.h
! c3c8d8a04233e3add79dddec32b01182  gcc/config/i386/avx512vp2intersectintrin.h
! f85fb16715244401213f45c166f17aeb  gcc/config/i386/avx512vp2intersectvlintrin.h
! c7fcceb67c03799447ac35c56eaf5c56  gcc/config/i386/avx512vpopcntdqintrin.h
! c4c851662256e43117d57636126364d7  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 5f69b4b4bd7cfc19b0eb68864334fdfd  gcc/config/i386/avxintrin.h
! c8acddbe32eb74dd6cf7d580940c565f  gcc/config/i386/avxmath.h
! d7599c23e226a7fbe643b244a7959f05  gcc/config/i386/avxvnniintrin.h
! 1211737522a90eb04429b39859f57b77  gcc/config/i386/bdver1.md
! e1a8f3836d4456da30926e098f022d0a  gcc/config/i386/bdver3.md
! 1ed276cf2639d6e23daf44690703cd80  gcc/config/i386/biarch64.h
! 4f95d11d449b5410d641572a899aa2c6  gcc/config/i386/biarchx32.h
! a461be2938b8df4418b89cd7126bc109  gcc/config/i386/bmi2intrin.h
! 274c1a76d65b7fe00193d6a9000a9ae9  gcc/config/i386/bmiintrin.h
! aeb4af0eba89c101d7309b011b3c4a1a  gcc/config/i386/bmmintrin.h
! 8d2f6bfccb08de90cb3c622b8ae6857d  gcc/config/i386/bsd.h
! f7ca71f828338d4873e78b9b6bd6ccd5  gcc/config/i386/btver2.md
! 94c9fafeafa7d519e01525b6bfac06e1  gcc/config/i386/cet.h
! 5bfa38e7c6b0fed3af49c337f03a9722  gcc/config/i386/cetintrin.h
! 755b3aa6686c7d76a4d4475860b448cc  gcc/config/i386/cldemoteintrin.h
! bc01acfe036d2d3ce5793b08e7e71e84  gcc/config/i386/clflushoptintrin.h
! 8a68f20d16a95399525876593d0f0c5e  gcc/config/i386/clwbintrin.h
! 08ed13abc6279c8d104750728c0eda30  gcc/config/i386/clzerointrin.h
! 6f7a046604e438dfd3188b35279b140b  gcc/config/i386/constraints.md
! 723dcedc010d5320b4aaf22a6c002f15  gcc/config/i386/core2.md
! 09cc0a2e973bdd1c8da875aea61cfbf9  gcc/config/i386/cpuid.h
! c458e148668e78e4e02a6f3565ab7e07  gcc/config/i386/cross-stdarg.h
! 1ebc9bc3a99a3a49b2d55c01b282c8af  gcc/config/i386/crtdll.h
! 2edc18cd22e6d10bf772bde0f2c72ef7  gcc/config/i386/cygming.h
! 881a6a791a72addc382da31af0ffbf7e  gcc/config/i386/cygming.opt
! 68301008ce277633b6bcf0040cbfb53f  gcc/config/i386/cygwin-stdint.h
! 73065376169b922762be869e9e462310  gcc/config/i386/cygwin-w64.h
! 9530f33d46cf20b7412ae03da7784ffe  gcc/config/i386/cygwin.h
! b60e062357a44078a917798542979921  gcc/config/i386/cygwin.opt
! e3830e39ae8b0d14fb1335be03c09c32  gcc/config/i386/darwin.h
! 9babe6eff270583b672cdffa01aca413  gcc/config/i386/darwin32-biarch.h
! a22fb0f4889ea875908c2fdd7aea518b  gcc/config/i386/darwin64-biarch.h
! 681f8c7a400d3008ee990b4357496d22  gcc/config/i386/djgpp-stdint.h
! d814710db736a5c02793ee42a6b77cd2  gcc/config/i386/djgpp.cc
! 5135abfd085a03440a72720ea08d1236  gcc/config/i386/djgpp.h
! 6c2cff0c0935c1a4e69a6a5a3d530d57  gcc/config/i386/djgpp.opt
! 4d2bdb5675fe72510f87cfc2f1f59ed9  gcc/config/i386/dragonfly.h
! 199085854288e13fb3af1da0df71b159  gcc/config/i386/driver-i386.cc
! 46537b6e4f3201da0654cd2cd0817466  gcc/config/i386/driver-mingw32.cc
! 6b42eadf21cd82212fe05dafdc90f29b  gcc/config/i386/emmintrin.h
! ecc97a46ec73aa2bb87f8b72eea7dec8  gcc/config/i386/enqcmdintrin.h
! 13626720813386c0938da23b38d9c97a  gcc/config/i386/f16cintrin.h
! 35e951ad2257e26df143625e79717a59  gcc/config/i386/fma4intrin.h
! de319ddfee901f4c6ca8080a9197f3f0  gcc/config/i386/fmaintrin.h
! 4f1b5b19291ddefd9b0f471a1d5cba3e  gcc/config/i386/freebsd.h
! 46353ba86876744af05e90756c4ed074  gcc/config/i386/freebsd64.h
! 28889174c956c4b00d187d8776bc6251  gcc/config/i386/fxsrintrin.h
! af2fd3e95ca042d7783f0936b2b4a3a1  gcc/config/i386/gas.h
! 154d22d80f283cb083eea321720d22b0  gcc/config/i386/gcc-auto-profile
! eaf588e81ca9563c002c3652ae42785a  gcc/config/i386/geode.md
! b8f390f29e7cbe3b57bc812ec1f6aaab  gcc/config/i386/gfniintrin.h
! ab3fa41803950084ee3cd9958e6a1393  gcc/config/i386/glm.md
! 61a7d42e02dbdb9257d8b64555e94d1f  gcc/config/i386/gmm_malloc.h
! 2a4d03ea9a09acb2e27c79bc3055ab84  gcc/config/i386/gnu-property.cc
! 3acfb57e99e43adb2e845e037899cf1c  gcc/config/i386/gnu-user-common.h
! 059d140455c7939d025adab7aa395a84  gcc/config/i386/gnu-user.h
! 9ef90e64bcac5c359183947852d99edd  gcc/config/i386/gnu-user64.h
! 44386b4d54a6ab2c5d2b8ce484bab564  gcc/config/i386/gnu.h
! 6f569be59bbc90df6992a8924938484f  gcc/config/i386/haswell.md
! a94249ef281fbb9dfa5d9ac5b177a20a  gcc/config/i386/host-cygwin.cc
! dac1d55fce23c07f7334ab60107d2740  gcc/config/i386/host-i386-darwin.cc
! 460a4ff60aa7b574b688eafe1955e4ee  gcc/config/i386/host-mingw32.cc
! f49f27ecc3f73457a104e71798f69e31  gcc/config/i386/hresetintrin.h
! 59f4f2b14da54e4579a407bec8feacf2  gcc/config/i386/i386-builtin-types.awk
! e5f608519e1f03ddbe8c845378fdadc8  gcc/config/i386/i386-builtin-types.def
! 0c8160ff431805fb9aa6bad7aa561ce8  gcc/config/i386/i386-builtin.def
! ca7c3598c73f7ae3a4573a140b553c12  gcc/config/i386/i386-builtins.cc
! 1386ed6c665b92fb05c52b30d7fab44f  gcc/config/i386/i386-builtins.h
! 93f893196b560fc75a669d6c671c2874  gcc/config/i386/i386-c.cc
! df02cbcdd37135634e4ea1aa13f7591b  gcc/config/i386/i386-d.cc
! 9988025b7aebc2dd27c28a851ec6695d  gcc/config/i386/i386-expand.cc
! 3c709d191abaf095a50b0ccc29328991  gcc/config/i386/i386-expand.h
! 754bff776651063ff06b2bcb50252ee7  gcc/config/i386/i386-features.cc
! ffd76bdf4194098464fbcf9c1dc4c463  gcc/config/i386/i386-features.h
! 6937d1c6ece95c74b1c7ca2eb0265674  gcc/config/i386/i386-isa.def
! 0093d40a44064ad74492537c26a7eac7  gcc/config/i386/i386-modes.def
! bf15c47027c9576e3874678857b6b80d  gcc/config/i386/i386-options.cc
! 7be51e744d8f9807ab03a83afaf685ca  gcc/config/i386/i386-options.h
! af85d0ff6d4cd15b14460985c816bbb3  gcc/config/i386/i386-opts.h
! bc068488ad4d00d93e15004aec10c28f  gcc/config/i386/i386-passes.def
! fcba2a8a8295a8fa20ea49a6acb14c4e  gcc/config/i386/i386-protos.h
! 5d8b0e40e9489565614e513ddb19d630  gcc/config/i386/i386.cc
! 53bc05f636bb53dc4cd6628e217f164a  gcc/config/i386/i386.h
! ff4f57c7f5e80cabc8e325c0db1e27b4  gcc/config/i386/i386.md
! 760bf2f0864d522deeec6cf13ccacb12  gcc/config/i386/i386.opt
! 916e372af07c88992a4dde741f963eac  gcc/config/i386/i386elf.h
! 14e1802bbf5e0d6233d80d8f9fc83ed0  gcc/config/i386/ia32intrin.h
! b72f097222302e248e86a1bd8e98ca9b  gcc/config/i386/iamcu.h
! ff335b5d2c7b040cbfa0d022b9c453a8  gcc/config/i386/immintrin.h
! dc9c50e429199cf2dd0f058abc35cbe6  gcc/config/i386/intelmic-mkoffload.cc
! e403fa6a083b9971dd0c693fd14bd2d1  gcc/config/i386/intelmic-offload.h
! 26a0096206de742bfe54256806cfb0c7  gcc/config/i386/k6.md
! 9f3cf7fc77114c8d7221444edd023774  gcc/config/i386/keylockerintrin.h
! d2dc2529d3412e738793490ef6f7bafd  gcc/config/i386/kfreebsd-gnu.h
! 2e330b4bb455918a0c27837932ca3045  gcc/config/i386/kfreebsd-gnu64.h
! 943ec97ab4e7f7f7bb1cc0971cefb136  gcc/config/i386/kopensolaris-gnu.h
! 5dd81da5402284326c92d1dd47c18f7c  gcc/config/i386/linux-common.h
! c7b1a010d634025177f6c9f54a292df9  gcc/config/i386/linux.h
! 71973bfd73765c7d545240907f09e6e2  gcc/config/i386/linux64.h
! cd2b4412e5ac2e46b9782c181c770fcf  gcc/config/i386/lwpintrin.h
! f6ca3e67acecc57a053c10f2f95ce00d  gcc/config/i386/lynx.h
! e083229fb7cb77ef463cb9e6eb22dd42  gcc/config/i386/lzcntintrin.h
! 65804f1d7130b74dec987d85789e5c73  gcc/config/i386/mingw-pthread.h
! deb7d09bcda1f23f297841aa569db37a  gcc/config/i386/mingw-stdint.h
! 6f2e20eb5413e72135658acb3c265d88  gcc/config/i386/mingw-w64.h
! 7825d17d84303a77ad8b6bc6dd673906  gcc/config/i386/mingw-w64.opt
! bbcda60db12697e323b00933ee40ded8  gcc/config/i386/mingw.opt
! b6cb7e0a3811006748966469cf8cc56b  gcc/config/i386/mingw32.h
! ea23ad893a55f744d2c1b92bb1fa58b7  gcc/config/i386/mm3dnow.h
! 6c1c7c663150e74b9ab2511d744352d3  gcc/config/i386/mmintrin.h
! f8c70420148e0e93e459f18f491381d6  gcc/config/i386/mmx.md
! 31346a482647fdb2ff94eca6e48e57ec  gcc/config/i386/movdirintrin.h
! 70ad1e0e1a2bcedfd68558e53106cced  gcc/config/i386/msformat-c.cc
! 2b0e639ce8a95cf149bf779faa505657  gcc/config/i386/mwaitintrin.h
! f75348243aa05ec0927de45b4b3da4e7  gcc/config/i386/mwaitxintrin.h
! 763a7fce92ea4c5a4046f905f65245b1  gcc/config/i386/netbsd-elf.h
! e86d27399389b06fa7ee5dc52671ae8e  gcc/config/i386/netbsd64.h
! 5596f49c6ec89d71d1516e42284d79a6  gcc/config/i386/nmmintrin.h
! 6863e9da080e5db799a113f7e416457f  gcc/config/i386/nto.h
! 4a63b001e3d3448c0f885192884fdd63  gcc/config/i386/nto.opt
! 8cbb0c50ce5a8f3f130657a765df379b  gcc/config/i386/openbsdelf.h
! 22a5f6bac7fc374b807fbf31d2df6b89  gcc/config/i386/pconfigintrin.h
! 4b226ebf5d0aec98c7bc034bb8fc7115  gcc/config/i386/pentium.md
! 61a4d9722ec40a62599f55485b0e6f63  gcc/config/i386/pkuintrin.h
! 72ec6d0a7a2d05c11ed42e0fa64dd86c  gcc/config/i386/pmm_malloc.h
! 0016f431018d5c2c671fde4ec115e212  gcc/config/i386/pmmintrin.h
! d51332ca4bfd37239c2f527c1bffb242  gcc/config/i386/popcntintrin.h
! 6c08223f3fd50a4b28e490019010fcdc  gcc/config/i386/ppro.md
! a1686f5acf3257e4fd654d1a89e36593  gcc/config/i386/predicates.md
! 57a22bdb77fab5d266769d7ee77ead85  gcc/config/i386/prfchwintrin.h
! b938ee96c5ce1f69e192c4adffec5c98  gcc/config/i386/rdos.h
! 716de2731941dadfb7fa61c4f59804fc  gcc/config/i386/rdos64.h
! b0b5e55f7bc2138fe9786cb4086d5220  gcc/config/i386/rdseedintrin.h
! cc2d9f762a82c33ee8275338d9a2eaa2  gcc/config/i386/rtemself.h
! 7cd854b839ed71558e47449b94017ec2  gcc/config/i386/rtmintrin.h
! d6906912055f25ce87b3f315021dd99b  gcc/config/i386/serializeintrin.h
! 65201526e6f7d676db4b6bdf4d6253dc  gcc/config/i386/sgxintrin.h
! 1a48e88f0c2421723dd06eab2d35e499  gcc/config/i386/shaintrin.h
! 5dc568f106b96e0944f39b6c8f27c51d  gcc/config/i386/slm.md
! 7073e5e1c72cdcc05b51009c7f569fae  gcc/config/i386/smmintrin.h
! daccd4e3cdd63f0dbda7ded81a1478e8  gcc/config/i386/sol2.h
! 5c765f95500409d7b77911381388607d  gcc/config/i386/sse.md
! 10b2b2efc6fdb5368eb608587f67539d  gcc/config/i386/ssemath.h
! 6bdc7b51876de6e87681dd2c97093efb  gcc/config/i386/stringop.def
! 63673be1e52dad91e6e09ab3fd23682e  gcc/config/i386/subst.md
! 6b6e12c5305ed84ce236c77eead867ac  gcc/config/i386/sync.md
! 95b4519ccfef2ae18ed93a2d7a1425f2  gcc/config/i386/sysv4.h
! 7564e944008a7878b7028ed05d6c4100  gcc/config/i386/t-cygming
! d5339d6e5a09a02383903f617230e19e  gcc/config/i386/t-cygwin-w64
  98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin32-biarch
  8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64-biarch
  633a95f7feb14d4eebe0039fa5ef4dec  gcc/config/i386/t-djgpp
! 111265038614a83f41b65393211dcc0e  gcc/config/i386/t-freebsd64
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
! c4fb60041db4966e7b39850ecbfdcb6c  gcc/config/i386/t-gnu-property
! e980de009a734793e2b9aff4c4676833  gcc/config/i386/t-i386
! 4cfcdcb6aa20d8d50c59a8a83a0a2dbb  gcc/config/i386/t-intelmic
  51dcf9826007c01cfd67be11d5f0d538  gcc/config/i386/t-kfreebsd
  39ad69cb2a2e67aa8d46664a75b02789  gcc/config/i386/t-linux
! 41ca42b3c552709487dcfe6e59485efd  gcc/config/i386/t-linux64
  cd662e746e08a18749e8272fa759278e  gcc/config/i386/t-mingw-w32
  67bcf41f125bbec93a13ad3bd98abaee  gcc/config/i386/t-mingw-w64
- b9516414ae6978a5ec3e5162cc01f490  gcc/config/i386/t-omp-device
  12a68576d3577a8da82089f18d60c613  gcc/config/i386/t-pmm_malloc
! e7475bfbb1d433890273787275530e00  gcc/config/i386/t-rtems
! e7c152345d4578aae07b1b99494a8d5b  gcc/config/i386/t-sol2
  6c6dc6647856991d7275637384be6c03  gcc/config/i386/t-vxworks
  b80a5a4a8c8fc32ca318158abc98dc20  gcc/config/i386/t-vxworksae
! 00e30fc1db6d8a0b7c17c705c1646ea2  gcc/config/i386/tbmintrin.h
! a651d0488afa31259400ce856c5de724  gcc/config/i386/tmmintrin.h
! 06bcf84783da9684f5bbc39090c78ab2  gcc/config/i386/tsxldtrkintrin.h
! e21da7e1f18e32aad8c5a904e0275cc3  gcc/config/i386/uintrintrin.h
! e01001bf7db35f68c87771752abd6bc8  gcc/config/i386/unix.h
! 3693b31cbddda67591e14040a9fae9df  gcc/config/i386/vaesintrin.h
! ee11f3a25020e7c1047ff460980bf924  gcc/config/i386/vpclmulqdqintrin.h
! e78a3d4373f1908b142054bd0fdba04e  gcc/config/i386/vxworks.h
! 4869942b894c2349fef119cd214c6403  gcc/config/i386/vxworksae.h
! f817a6ca009eb7a3ca104b2cba24c648  gcc/config/i386/waitpkgintrin.h
! 38b720694bac08eef408497a9a74b97b  gcc/config/i386/wbnoinvdintrin.h
! b5af5e1d40ef7455e15f90656627330e  gcc/config/i386/winnt-cxx.cc
! 6653e301243a42ec2a5c22e190206e8e  gcc/config/i386/winnt-d.cc
! e13a1550336b5e7f22d992ef93193b6c  gcc/config/i386/winnt-stubs.cc
! 8534035b329a81f1a791e555ab75cb36  gcc/config/i386/winnt.cc
! c21af9783c49378b164d52fedefb265a  gcc/config/i386/wmmintrin.h
  b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/config/i386/x-cygwin
  1ab2099a92787dd158135dbcaceb0bf9  gcc/config/i386/x-darwin
  8d6956f3535d501680a321eb01dafb35  gcc/config/i386/x-i386
! 14d904f1842012d94e081c578d51a5c0  gcc/config/i386/x-mingw32
! f73f78a01e075bc90fe68c6a1b71ac1b  gcc/config/i386/x86-64.h
! fa56607044bb837c2b1d8aaf66e478da  gcc/config/i386/x86-tune-costs.h
! 032dfa38c24a2e6d5688d2ee24822928  gcc/config/i386/x86-tune-sched-atom.cc
! 389139c200520120fb9419c1c8e1b828  gcc/config/i386/x86-tune-sched-bd.cc
! 40bf2fd6e01b2d322f54a763a3b55a06  gcc/config/i386/x86-tune-sched-core.cc
! 34eb3da1f1ce41693a40fa0458a9b1bf  gcc/config/i386/x86-tune-sched.cc
! c9bc1ba22e3e98c672ab96584e241d06  gcc/config/i386/x86-tune.def
! ce22b05cc535a89dbb219457d178cacf  gcc/config/i386/x86gprintrin.h
! e44c986b85092282aced3b766506ebb6  gcc/config/i386/x86intrin.h
! 111ac823774e8831ad95ac74302324da  gcc/config/i386/xm-cygwin.h
! 3ed90d68a097e72b8b721985a8265f9a  gcc/config/i386/xm-djgpp.h
! a92bf8aa5e210c7103eb55d2ca02115b  gcc/config/i386/xm-mingw32.h
! 6e12634adc9cc3731f38c210ef301ddb  gcc/config/i386/xmmintrin.h
! 510d9a64927cfd7d79408d7e822ba9ba  gcc/config/i386/xopintrin.h
! c7c4480d077162974a6c2f5b66f1f902  gcc/config/i386/xsavecintrin.h
! 394ff757142df4dc2d7d400b9a086bfd  gcc/config/i386/xsaveintrin.h
! fdc9a224be0ac9d209959ec3b01b8ee9  gcc/config/i386/xsaveoptintrin.h
! cf28c57990b8c5cf140b1a7d87680476  gcc/config/i386/xsavesintrin.h
! 1b799c94b2d5a4e806fa102223ad2783  gcc/config/i386/xtestintrin.h
! 00f2f2bc20dd8833ba5d58a528808c78  gcc/config/i386/znver1.md
! 13e36aec05a89d945eed6a80045e9b60  gcc/config/ia64/constraints.md
! ccfd0b47609d79688c15727c453d954a  gcc/config/ia64/div.md
! 2a5ccfba319b36e873c8175cdf580f86  gcc/config/ia64/elf.h
! c5bb582b37decef29d13884e29ef6620  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! c103f2bcd9cfd4de3ccd8221674a70f6  gcc/config/ia64/hpux.h
! 99540ebb658c77fb32ef2b1622967822  gcc/config/ia64/ia64-c.cc
! 8f650a740454cb884de7a0181f0e9d7c  gcc/config/ia64/ia64-modes.def
! 1782b11b34f793c4cd6e758c7b1eabdf  gcc/config/ia64/ia64-opts.h
! 4d8639bc5ddfe2f85b350efe2ef4a095  gcc/config/ia64/ia64-protos.h
! ecd6b18fca86038e815e3ab17816496b  gcc/config/ia64/ia64.cc
! 2bccadd4202f3a70f2108173e3428d23  gcc/config/ia64/ia64.h
! 0350ba8ce40d6b038079b5150111307c  gcc/config/ia64/ia64.md
! e66b9603b9e055a1f16867d60333afde  gcc/config/ia64/ia64.opt
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
  4b86fa74a7636ffdb9787a8643220eec  gcc/config/ia64/ilp32.opt
! 803ca5851779a61dd1bc49b0b56a2928  gcc/config/ia64/itanium2.md
! cf1d6143d27aa6df92a594941245c746  gcc/config/ia64/linux.h
! 8aebc36d3725a6d02798ad2f744eb626  gcc/config/ia64/predicates.md
! b5fea19f48760f08bc3672d520de1233  gcc/config/ia64/sync.md
! 54b7531c7a91f5cc54174159433bd547  gcc/config/ia64/sysv4.h
! 8464771db1ceacbb243781c762c83e7f  gcc/config/ia64/t-hpux
! 91b4b9706500b7070b46eee3bc13a26a  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! f5c0377a8473c3ef773dd3b5dbcaf3ec  gcc/config/ia64/vect.md
! d822f93f63a18230ee775c6a9ca99f14  gcc/config/ia64/vms.h
! 903967326e608b1729e5088d3b001563  gcc/config/ia64/vms.opt
! 7de2657e5e60d3d97eaf7dc65e267a60  gcc/config/initfini-array.h
! 1c1de4169888f3230654831b87aebb0c  gcc/config/iq2000/abi
! e158a0614433348d1f01581e7fb813dc  gcc/config/iq2000/constraints.md
! 10c5244b880b53af24729684d361abbd  gcc/config/iq2000/iq2000-opts.h
! 1d98da0ad78a82f48e895d974cc773f1  gcc/config/iq2000/iq2000-protos.h
! 02ff2fef10a659d02e0618eefa3bb3fc  gcc/config/iq2000/iq2000.cc
! b371d6b70298f204812bdd7d4d7e12b0  gcc/config/iq2000/iq2000.h
! 9e2c940e3b2931bcf7266c21438ebb44  gcc/config/iq2000/iq2000.md
! e848f597c0f21096ab024a7a12a9b135  gcc/config/iq2000/iq2000.opt
! 03a360f532781aa048d34e5b64f040f4  gcc/config/iq2000/predicates.md
! 02297a6f001675dc6b9ea2d551038b8d  gcc/config/kfreebsd-gnu.h
! 270cec57e6c9b128606877651a5b87bc  gcc/config/kopensolaris-gnu.h
! 6ad27f4921c5f8b7bcd7fa8cd988107b  gcc/config/linux-android.h
! 617bbc461f515d17871c5ab5113cab5e  gcc/config/linux-android.opt
! 4c88d40e7cafa6a4d7f171d128254dbc  gcc/config/linux-protos.h
! f91e36f7bd2f18e800a70fa43f4338fb  gcc/config/linux.cc
! f34013f3937f9ef339028f23f84df693  gcc/config/linux.h
! 5c4ee106a71286a6879548408151f2d9  gcc/config/linux.opt
! b6b8181411a4c65cfd7bb9e13ac36d95  gcc/config/lm32/constraints.md
! eb506807a013303ad149977d3ee3514a  gcc/config/lm32/lm32-protos.h
! 2592e9bedf8aeacb8e2f75bda40c34e7  gcc/config/lm32/lm32.cc
! 8a62e29aa1b825ca4f0a04e6180f6466  gcc/config/lm32/lm32.h
! 5e310c7ff7c61a684b9e8d302bd20d20  gcc/config/lm32/lm32.md
! 37bbebc93130dc86a35ca0b1081a76ee  gcc/config/lm32/lm32.opt
! fd4bf5e1cf6e59059040070b2a63eb5c  gcc/config/lm32/predicates.md
! 6078ae98e766029b327f56dd8db537e4  gcc/config/lm32/rtems.h
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
! 7df85b171e02b6dcb6438a5d2c40b675  gcc/config/lm32/uclinux-elf.h
! d7c9029984fb692c48b03c7edec3da62  gcc/config/loongarch/constraints.md
! 187927a38ef291c9b146c6e31ce8bde9  gcc/config/loongarch/generic.md
! 93bbe6d503e459bec56c7dd59ad562e4  gcc/config/loongarch/genopts/genstr.sh
! 2c9c3f2661b6a86014d3af7826513e10  gcc/config/loongarch/genopts/loongarch-strings
! af5583deee0ea7e02967cb03a6c85dfb  gcc/config/loongarch/genopts/loongarch.opt.in
! 85adbedddbea6f7a3893f22710de0e28  gcc/config/loongarch/gnu-user.h
! b0b53e3aa4b2caf4c8fc56270f53b8ba  gcc/config/loongarch/la464.md
! d131557e8500011af1d08a79d6541c67  gcc/config/loongarch/larchintrin.h
! c561ec008b9da44240632a2e8738cd84  gcc/config/loongarch/linux.h
! 62b00006a4fae66987787a54c01ec45f  gcc/config/loongarch/loongarch-builtins.cc
! 13df72ec76eb2836b7f443e88d63a9a7  gcc/config/loongarch/loongarch-c.cc
! bf8395007027603dfae1b2aea27e62e0  gcc/config/loongarch/loongarch-cpu.cc
! e4a334364fa17e4dc6909066fe1fe2d3  gcc/config/loongarch/loongarch-cpu.h
! 265736d354d7ca10d9bec4dfa22a916e  gcc/config/loongarch/loongarch-def.c
! 5c933068d75b0083cf2c7b9c49a50666  gcc/config/loongarch/loongarch-def.h
! cae26252c54a28513d91f790be149a4c  gcc/config/loongarch/loongarch-driver.cc
! 1953cc130563d0ebe2e054c9e39b1bf5  gcc/config/loongarch/loongarch-driver.h
! 5cc9d4c848862dcad636760ca3b54297  gcc/config/loongarch/loongarch-ftypes.def
! 15082170b1e96d1d677239d8373f4ce4  gcc/config/loongarch/loongarch-modes.def
! 9d590a79ec519fc8a1563b9ef017498c  gcc/config/loongarch/loongarch-opts.cc
! 6f8d5bdd9db684a6838b5c6c56a120ac  gcc/config/loongarch/loongarch-opts.h
! ce786b3bbe89341012dadc4b50812bea  gcc/config/loongarch/loongarch-protos.h
! 7dac179891b7f5030f246b3dc5063a34  gcc/config/loongarch/loongarch-str.h
! e87e1fc114ac64d998e217fc70bb284d  gcc/config/loongarch/loongarch-tune.h
! fc841802d6d63007bed99aa6b88a7ac4  gcc/config/loongarch/loongarch.cc
! 942080159b3f81734444c45af2312eae  gcc/config/loongarch/loongarch.h
! cd6048ef7b1b30c1dcd5b21a9b3309ab  gcc/config/loongarch/loongarch.md
! 6ce82e6fac38842ebeab30d9fa9c86ee  gcc/config/loongarch/loongarch.opt
! 341adb054a917216830fd2decd29e84b  gcc/config/loongarch/predicates.md
! 979df61029c4441e0e86295923d58040  gcc/config/loongarch/sync.md
! c2a3c1ebaf68e2caa4d6f359e4796081  gcc/config/loongarch/t-linux
! fc7d079b5f56ba7e8ce7b4ab0cb064dd  gcc/config/loongarch/t-loongarch
! 0694afecae00bd387716b1c1aa91f58f  gcc/config/lynx.h
! 54c0ca65e031c269266318a6793975f2  gcc/config/lynx.opt
! 620af35e67d564c03797d0efed05ee3c  gcc/config/m32c/addsub.md
! 3a030c6c66a0b55a56d34140ff65c9f1  gcc/config/m32c/bitops.md
! 2e6d1c75772253fd64123915e5f707aa  gcc/config/m32c/blkmov.md
! 187412779239f2b805a4595fb44e7efc  gcc/config/m32c/cond.md
! 20d35c76ffbbfd9ecbb954b59641e683  gcc/config/m32c/constraints.md
! fb5e1ca690a1495fa79408a6578fa55e  gcc/config/m32c/jump.md
! d3398bc3fda8aea6ea64f7bb169f0511  gcc/config/m32c/m32c-modes.def
! 27bd49a308e279742b73a801be3a3c9c  gcc/config/m32c/m32c-pragma.cc
! e4924e545015fa709b54649b2c31af8a  gcc/config/m32c/m32c-protos.h
! e1266084d45d886958a6e7e3e1af30e4  gcc/config/m32c/m32c.abi
! 3ffe42f2118490e3ac39387b51d374e1  gcc/config/m32c/m32c.cc
! 8b679d1e595d5033eb01b25459738a07  gcc/config/m32c/m32c.h
! 946b460530402eeba979543558c010cd  gcc/config/m32c/m32c.md
! d693291ba30c3e54d558eb7dd1aa02c2  gcc/config/m32c/m32c.opt
! 756194f58715a7126352425000a68e54  gcc/config/m32c/minmax.md
! edb87a4fd06219942373347592148f9c  gcc/config/m32c/mov.md
! a68e76c9b250c0a64b967a2ecf24295a  gcc/config/m32c/muldiv.md
! d8c9bf805ce5b9258c56ce0f06e2e717  gcc/config/m32c/predicates.md
! b0d4fb23e07bd9b8d9e1bdc7994951cf  gcc/config/m32c/prologue.md
! 3e8501dc62b8b4c5b41038ccf760347a  gcc/config/m32c/rtems.h
! 8e4dd7550d872965ac411f7cbd053f5e  gcc/config/m32c/shift.md
! dec5aee99ac5606b75f6ca4242a3d216  gcc/config/m32c/t-m32c
! 4f808e1471694ddf407978c47165c433  gcc/config/m32r/constraints.md
! 508245577263de4769f3ed5d5a4ec497  gcc/config/m32r/little.h
! 71567d5fe8a5e95bce6bca6775aff2df  gcc/config/m32r/m32r-opts.h
! 05ea4cbc6e80fc4f7b3488ce1f40c02e  gcc/config/m32r/m32r-protos.h
! 95d0d9b98964f7b0a0bdd0dcef12f578  gcc/config/m32r/m32r.cc
! 37bad490f741cab811e2a6d3acca2ef8  gcc/config/m32r/m32r.h
! 835a1394dcf57a8513203227713b760b  gcc/config/m32r/m32r.md
! 97070eabb1ea7aa38f5e88a6f9b742d7  gcc/config/m32r/m32r.opt
! 4fba80d76771c42cdc2f815d9204e4e6  gcc/config/m32r/predicates.md
! a1eba02654a4720d2a592b7b029b8c77  gcc/config/m32r/t-m32r
! dee5704d0a16d53208c72917f65f3ad6  gcc/config/m68k/cf.md
! a3fea841ddd08ed65ab638903d0667bf  gcc/config/m68k/constraints.md
! f9dd81ada29dd3131b73fb5e2f89ed32  gcc/config/m68k/genopt.sh
! 32c2401663114818c9d357ee69c18a8e  gcc/config/m68k/ieee.opt
! ac4e3b58424b86b0676a4171755891e9  gcc/config/m68k/linux.h
! c53a4a3b08354420900dc99fc13db754  gcc/config/m68k/m68020-elf.h
! dfd51d18a5d63096899d00eb3951aca7  gcc/config/m68k/m68k-devices.def
! 5eb8d3b86ffc5df010e8d965d073955f  gcc/config/m68k/m68k-isas.def
! 0e0e83bc66b0f66d782e31909033d224  gcc/config/m68k/m68k-microarchs.def
! 9025e30de0fcdffa600810b91d8fda20  gcc/config/m68k/m68k-modes.def
! 9e26dcbeaa28681d06bd9b1873e97541  gcc/config/m68k/m68k-none.h
! ef9185eddac6b4aa175123afa0169274  gcc/config/m68k/m68k-opts.h
! 434d6b80164e2fa5e1e7fe830aaa50c3  gcc/config/m68k/m68k-protos.h
! a2a977f34cac0f7b334fc40e198c8cd7  gcc/config/m68k/m68k-tables.opt
! fa4716f4d62d8ed77f69715e52f37fc1  gcc/config/m68k/m68k.cc
! 5bf06962de1720dce0e4d312afb4db9a  gcc/config/m68k/m68k.h
! ec5910be016a9ab9af1969ec303b32cf  gcc/config/m68k/m68k.md
! 7fe6e99a8c54a674943d0ea0d7ab223f  gcc/config/m68k/m68k.opt
! 14d8420e23e25fd51c46c1e4010c4fa3  gcc/config/m68k/m68kelf.h
! 666546fa48704ccc660261bad413765c  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! 7a943426cf75a1683f6432aa893253bb  gcc/config/m68k/netbsd-elf.h
! 6c2e6e0c0399209907540ad6b3c3008b  gcc/config/m68k/openbsd.h
! 1323f2cd2eac63c0e47fe17d32a00d69  gcc/config/m68k/predicates.md
! 5498c8352f8d61536c2fc3382f42a3b9  gcc/config/m68k/print-sysroot-suffix.sh
! 7d3d6198a49a5b1aebf92b2ace3fcf11  gcc/config/m68k/rtemself.h
! eaf562aa18213d08e9b1fefe37141539  gcc/config/m68k/sync.md
  19d5ed41f3394c9423ff3afe64804076  gcc/config/m68k/t-cf
! 2ff5aea3d6a5eb5c266c25cbd9fc75b4  gcc/config/m68k/t-linux
  baa4595148bafa6426b8d665881ced45  gcc/config/m68k/t-m68k
  c8278c25339f71d746d91a193efd6cea  gcc/config/m68k/t-m68kbare
! 4dbc8aef9260741753fdd2fcd812f120  gcc/config/m68k/t-mlibs
  0fd519d41689e5af998ca53a2f11e7d2  gcc/config/m68k/t-openbsd
  2919d876e31e6c4e0955d8cd4be5ce28  gcc/config/m68k/t-opts
  2899d62cd61c46fe504594a232959581  gcc/config/m68k/t-rtems
! e2a4da6fda1d85113f9ac1389021b9f8  gcc/config/m68k/t-uclinux
! 0ea1cfacdacf70ad427d62dcd311d2c8  gcc/config/m68k/uclinux.h
! 3298739d3592ac21eafb7dbf298a3783  gcc/config/m68k/uclinux.opt
! ccadb80f780fa1208a292c16eeac0826  gcc/config/mcore/constraints.md
! 2627519e6860342f1e0767bdf36cc34b  gcc/config/mcore/mcore-elf.h
! c158e542ed6439912afc62e41f24cae8  gcc/config/mcore/mcore-protos.h
! 61ece7548be84cd269ec5c78890f1d8b  gcc/config/mcore/mcore.cc
! 4b897ebea5352012c75439525ad05573  gcc/config/mcore/mcore.h
! fcd0bd5a5a623be3c5c5cc8694c5d94b  gcc/config/mcore/mcore.md
! 48897d50a88ce1dbff53a1cc2b6634c8  gcc/config/mcore/mcore.opt
! 54d8378b25899a50b2452f39e08366fa  gcc/config/mcore/predicates.md
! 75779822cc3559ce0c6c8b02ea4d5f69  gcc/config/mcore/t-mcore
! efff3f0872996051e3dbf25c5cdb2052  gcc/config/microblaze/constraints.md
! eddbd6b3f9b24b2553d3e751a2ac6d44  gcc/config/microblaze/linux.h
! 1f755799146c980fd9a9fcd727b67140  gcc/config/microblaze/microblaze-c.cc
! ef92f77d449cf59adb82c53485c8f2e2  gcc/config/microblaze/microblaze-protos.h
! 31a76ead9ed0c8f303b550b8b7f7bceb  gcc/config/microblaze/microblaze.cc
! d1d404c0401f6913b095eff8c9190cbc  gcc/config/microblaze/microblaze.h
! fc04d0a98abffd66b53239119be74c0a  gcc/config/microblaze/microblaze.md
! 0891315340900f68042a99dda028701a  gcc/config/microblaze/microblaze.opt
! 95a62fb0ac6349e73fb8cc90a4795feb  gcc/config/microblaze/predicates.md
! 48c6e340e312467e14844447751ec130  gcc/config/microblaze/rtems.h
! 659a915908970376219d2ee55139e0e5  gcc/config/microblaze/sync.md
  df031372af9c825d21d2058d266247a0  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
! 988c9091986aff6bf2cee0dd2ca4affb  gcc/config/mips/10000.md
! c61e34f65a87be51ee207c476abf0b75  gcc/config/mips/20kc.md
! 943eaf40a74524989e00927a7a4345c3  gcc/config/mips/24k.md
! 19d8802c87c49eb58caafe154ea4aaf9  gcc/config/mips/3000.md
! 785699ca5bda088a160bbc824874ba0b  gcc/config/mips/4000.md
! 713c7eb2b12773efdee707f4ab8316f2  gcc/config/mips/4100.md
! 1aa103a524b6871ba8fd382958bad1db  gcc/config/mips/4130.md
! 214f7b9ddee769b93980401e04c43a02  gcc/config/mips/4300.md
! ed9e033e9c0d1052fedcc1b51a823fd0  gcc/config/mips/4600.md
! d136af4f218c3dce01236a2a4bd321f1  gcc/config/mips/4k.md
! 307c69cd6d7cdf26a532a56c53ac1a75  gcc/config/mips/5000.md
! 09c8f7b6540f6ed907c6813d5ba9c59f  gcc/config/mips/5400.md
! 10cb615259d84a60373300428d818f9b  gcc/config/mips/5500.md
! 683a202b536d8342f336606d81260dd0  gcc/config/mips/5k.md
! 6b81f7371a4c4ca5796f179c4aa84c3b  gcc/config/mips/6000.md
! 9629cfb9b789b1c26894f150b1f2c2fe  gcc/config/mips/7000.md
! 654071d4638169bc31211a672b7c05e2  gcc/config/mips/74k.md
! c10f90e7bf98c283fbf9101c6a69cc81  gcc/config/mips/9000.md
! 9fb672cb70c8ed1e0b78a1957871cea0  gcc/config/mips/constraints.md
! 0c3d8bfc1943dc8ec5f8a88856cf4040  gcc/config/mips/driver-native.cc
! 95b7e1f48f8204e7de860ee8d51c4e9e  gcc/config/mips/elf.h
! 52b5c779a4f0cc2d709b99305d5c814c  gcc/config/mips/elfoabi.h
! 861f9757c3f14b1efbf2aa4a4871d4f7  gcc/config/mips/elforion.h
! 28d28b845de4f737dfcd5225fe6432bf  gcc/config/mips/frame-header-opt.cc
! 24994f3ad367cdffd8ad60cf6ee06844  gcc/config/mips/generic.md
! 188aa3852e37e916d7de412d3fc99c23  gcc/config/mips/genopt.sh
! afd7af27daec09e1d6820603aa7b8ceb  gcc/config/mips/gnu-user.h
! d431d707c682be398c3debbe0a0f3680  gcc/config/mips/gs264e.md
! f3b68f708d02ba58ac283363998d132e  gcc/config/mips/gs464.md
! 332ff3849bbf839d80428d0f525f707f  gcc/config/mips/gs464e.md
! dbc44ea2508c032fcf3349da26fc268f  gcc/config/mips/i6400.md
! 96eac8e2bebd39792ad0d6e3c7abc864  gcc/config/mips/linux-common.h
! a61940aabd5b43263db6f90a8889a774  gcc/config/mips/linux.h
! fe7e83da0660ba6e495f74f2d2325c58  gcc/config/mips/loongson-mmi.md
! 15cc3908ec873a2c9dac30937b3c6815  gcc/config/mips/loongson-mmiintrin.h
! 874940a8717b01b01dadf37556dd3bf8  gcc/config/mips/loongson.h
! 2d4829178159b380010392af01ace06c  gcc/config/mips/loongson2ef.md
! 2a506c9f79ab44b2156bd367791c1b50  gcc/config/mips/m5100.md
! 808178533950aa60fe64914b43d89c38  gcc/config/mips/micromips.md
! 5f9dfb6f2e23b98333eaa45f146ca642  gcc/config/mips/mips-cpus.def
! 7fe11728818380f4023ec131e8669ffc  gcc/config/mips/mips-d.cc
! c3ef461a61245d5d932cb01ed4d833e8  gcc/config/mips/mips-dsp.md
! 136d8ac0f2fef9475e94fb66e522bf41  gcc/config/mips/mips-dspr2.md
! 88e78340f91191e86961da7cb0f6d396  gcc/config/mips/mips-fixed.md
! d8c324596c91841b46a3f6309447a40d  gcc/config/mips/mips-ftypes.def
! 435edb7c2c6c1b16de8e29d60737747c  gcc/config/mips/mips-modes.def
! 3348d4620bd6195017ce782801822395  gcc/config/mips/mips-msa.md
! ea23feec32f144d135b5d5f32396a8ad  gcc/config/mips/mips-opts.h
! 5099aa311cdfb1bf9817d504df6e1310  gcc/config/mips/mips-protos.h
! 0e10771a2b2d29acfcc816bac79ef440  gcc/config/mips/mips-ps-3d.md
! 234d90729fafb2d011d97c39dd26e283  gcc/config/mips/mips-tables.opt
! e4b5aaf56a0b2c5dbfec8047f2704ec8  gcc/config/mips/mips.cc
! fa0001c2840889486bd44d42609b845d  gcc/config/mips/mips.h
! 225a53521100ee70d70387865e0c1fb6  gcc/config/mips/mips.md
! 0d82471eaffa9f4749a237e08b80ad37  gcc/config/mips/mips.opt
! e216b0716f550a45c890c2898a08ea64  gcc/config/mips/msa.h
! 7468e200a61c0d3a68694e33ad457c03  gcc/config/mips/mti-elf.h
! 66fa78d1924424acb9053c6b9c142a67  gcc/config/mips/mti-linux.h
! 63c871c614254abcd80b03c349121da1  gcc/config/mips/n32-elf.h
! 02acdc50f69a3429b1d6c5e99e836d0e  gcc/config/mips/netbsd.h
! c19483dacfc2a537bc711f1686e70759  gcc/config/mips/octeon.md
! 15affe0c9a5197b3312864334c7ad779  gcc/config/mips/p5600.md
! 27e462de79695f56b5f9d434d5896f6d  gcc/config/mips/p6600.md
! c249b6d8c7d18bcb1e4736e0980d4f92  gcc/config/mips/predicates.md
! e5e7d0e66c77c7ae1640bd0400a3c0d8  gcc/config/mips/r3900.h
! fbf28b8c2efe48268d3e90f7ca6311ed  gcc/config/mips/rtems.h
! ddbf36a09196111debe6956b7c7c4127  gcc/config/mips/sb1.md
! 8ddd704f4097179f6f0c39a7076707dc  gcc/config/mips/sde.h
! 5f4c803c7ff5e7dddd22e9b2ef88da82  gcc/config/mips/sde.opt
! 30a193b8624d60b0e2e49ff8d395cc06  gcc/config/mips/sdemtk.h
! 1ca20ffd34cdc3fa59bdb832ec71edf6  gcc/config/mips/sr71k.md
! 0fc40ba292b32cefb81af61d83d3a4af  gcc/config/mips/st.h
! 40cb75baa26de34c2944b80a610fc573  gcc/config/mips/sync.md
! 11fd3f46f67dd0203427b1babea49a3f  gcc/config/mips/t-elf
! 969051df7ddb19f659c647c889bfe1b0  gcc/config/mips/t-img-elf
! e3026124c4f397d1326e6258306111da  gcc/config/mips/t-img-linux
  f99fd825138aaee60804b8915e20d22e  gcc/config/mips/t-irix6
! 4d0ec67da5e4e512522bf17f7a116c44  gcc/config/mips/t-isa3264
! 749f682677542066ff939e9761b82c7f  gcc/config/mips/t-linux64
! 25e4aa18ef7d5da70fc04b8918f83cac  gcc/config/mips/t-mips
! be66167c63ec485d16ff511d9f5b1af4  gcc/config/mips/t-mti-elf
! 476dd0ddbc7bd4077ca921404ed39875  gcc/config/mips/t-mti-linux
! b30252954207421b114f24f109726ecd  gcc/config/mips/t-r3900
! a11bf8ad006fd578b641c07a50afbc27  gcc/config/mips/t-rtems
! d933687efcf563744c6d9e479713eeaf  gcc/config/mips/t-sb1
! 51083b2c419b6649f88768917f5a8967  gcc/config/mips/t-sde
! 1d962f1a01fe9ef041dc88423634f946  gcc/config/mips/t-sdemtk
! b0f87fe597101bbab83dbf24dc91b9ce  gcc/config/mips/t-sr71k
! 83d549b7f49a5bb348914c0a9b3d85ca  gcc/config/mips/t-st
! d222df8b154085a87d9578579474f80c  gcc/config/mips/t-vr
! 997f0d1c1213582f82da6025af574a78  gcc/config/mips/t-vxworks
! c892db6b6310703409b23e1824649873  gcc/config/mips/vr.h
! 5f0ef25b4677665cbfc90c982fe32126  gcc/config/mips/vxworks.h
  06537756ff14579bc850163a24d5a2f8  gcc/config/mips/x-native
! 0cd650a46e2c695334cad3df940c23f9  gcc/config/mips/xlp.md
! fe8fcc9d08a0363284d55f17c48ef147  gcc/config/mips/xlr.md
! baf868d5a6ec7d5cad670b887547ed95  gcc/config/mmix/constraints.md
! 6544fd7915fb9bd741e261ed005052c6  gcc/config/mmix/mmix-modes.def
! b28698e2baf77f7d3fe4764470aac88c  gcc/config/mmix/mmix-protos.h
! 84f5d1e12bae916976e6b581c8997ba4  gcc/config/mmix/mmix.cc
! e00f23c01bdaccb1a7bde23a6b422268  gcc/config/mmix/mmix.h
! 2602d52c1e508475087a7a6fd7b9a83f  gcc/config/mmix/mmix.md
! de8a90e783c63e7fc89cb4ec96a3f9aa  gcc/config/mmix/mmix.opt
! 3d3d0942dd286ec99bda4a42ae4f4a78  gcc/config/mmix/predicates.md
! 0f26dcdb306fc6ea0d1fd3872947c036  gcc/config/mmix/t-mmix
! b0fd2800175b12164b5be10406a66734  gcc/config/mn10300/constraints.md
! 29efc776d02c6681e568da8e47955ea5  gcc/config/mn10300/linux.h
! 569ab20981e61e7baa3511fe53233c59  gcc/config/mn10300/mn10300-modes.def
! 915ebfd0d5ec090577d96976cbbf7914  gcc/config/mn10300/mn10300-opts.h
! 3b6dcc0a3939f8e27adcc5f17c266249  gcc/config/mn10300/mn10300-protos.h
! 59a551df1a457ed40dd30e56848319a3  gcc/config/mn10300/mn10300.cc
! 509a3841c5279c6c4b65715bc223def2  gcc/config/mn10300/mn10300.h
! e751240c51a67bcd59b24c80990924ef  gcc/config/mn10300/mn10300.md
! 8deffbe41301817b6d5807dbefede0f6  gcc/config/mn10300/mn10300.opt
! 3234116feb8fc8c1ee449e09a01b9f1d  gcc/config/mn10300/predicates.md
! 869c2f45c70431b8706b42fe85ddaa26  gcc/config/mn10300/t-mn10300
! 3fc2c9e90d65bee36b948bc326b1056d  gcc/config/moxie/constraints.md
! be6789bc06bb263114022e710878c2a8  gcc/config/moxie/moxie-protos.h
! 7fa21553b2fc26e7ad571e4eb7a27428  gcc/config/moxie/moxie.cc
! d599474a9da60b671321f8a3c89190e4  gcc/config/moxie/moxie.h
! fb7d1cdbde9221e256273fc5089d2b03  gcc/config/moxie/moxie.md
! 5fdab01a0c29ff02a271242365321744  gcc/config/moxie/moxie.opt
! 9995f395bd512206c412cf89c532af34  gcc/config/moxie/moxiebox.h
! a7559ae7d01221749d8c17c22e216b24  gcc/config/moxie/predicates.md
! 2dada5877dac01516f7343803e3b41da  gcc/config/moxie/rtems.h
! 07520790f06a349c6a804faac8e82236  gcc/config/moxie/t-moxie
! 697c73a285910cc72b46c91059b9fafe  gcc/config/moxie/uclinux.h
  f276505b774e975b88b6c90362783e73  gcc/config/msp430/README.txt
! 0fe398f9490f516b504a9de32fdb3c2b  gcc/config/msp430/constraints.md
! 2e36bcb7f2fe2d38e9689732483d06f9  gcc/config/msp430/driver-msp430.cc
! 2e7530ed8d80fee75092b1ba4d91784c  gcc/config/msp430/msp430-c.cc
! d0ddc2d0383800476fde3c3f7ab16537  gcc/config/msp430/msp430-devices.cc
! daf9422cc051c962e7eeff45b0b1b940  gcc/config/msp430/msp430-devices.h
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! 36382a4f77e476d0f6c35ba90ee883d1  gcc/config/msp430/msp430-opts.h
! 87d837bd5cb401ade35e6642b1157379  gcc/config/msp430/msp430-protos.h
! d64aa871f11b5088ea15a6a7a26e41a6  gcc/config/msp430/msp430.cc
! e4f3e267ddd316d9e84bdb9d54c09e77  gcc/config/msp430/msp430.h
! f5102c4d8ecc8abb64dcd40f8a6245a8  gcc/config/msp430/msp430.md
  a20875cf634836537faeacfb5a4f59d1  gcc/config/msp430/msp430.opt
! 5f7e8a7a58502d50c9605604d8b5d57e  gcc/config/msp430/predicates.md
! ad8133bf34bedba315456b0b902de3f4  gcc/config/msp430/t-msp430
! 6cb63032a353aaa79c4062cf3946ca08  gcc/config/nds32/constants.md
! 21965660a07b0fac1cb2164a7a0bd6c3  gcc/config/nds32/constraints.md
! 6a635cc2ef3f766fe914cc131e1a9edd  gcc/config/nds32/elf.h
! 6a7587035377712d5000e39c4d8c37f2  gcc/config/nds32/iterators.md
! 2462122f88fdf6dc33459d0549e2cad0  gcc/config/nds32/linux.h
! 858c8adf8121fc92cac6fe3f98614ebb  gcc/config/nds32/nds32-cost.cc
! 49f4c62f0cb8c85e98363566346e8272  gcc/config/nds32/nds32-doubleword.md
! 5b4a3bdaa7b2f791c268d94c49b36c50  gcc/config/nds32/nds32-dspext.md
! 8026d6b255338b57e9d150d1634b9f0a  gcc/config/nds32/nds32-e8.md
  c316334a86026beb55e5c25b4b855f95  gcc/config/nds32/nds32-elf.opt
! 9e71e6aa07c7fc28cc524c2081cedef5  gcc/config/nds32/nds32-fp-as-gp.cc
! 32a8d7be45508f19e867e070ec42092d  gcc/config/nds32/nds32-fpu.md
! 8bb2980bcecb0a878066be0772f24351  gcc/config/nds32/nds32-graywolf.md
! c725b9fe5a40964e816a1a33c7b4f447  gcc/config/nds32/nds32-intrinsic.cc
! 00fcd2a231353b0fafc566e65dc7b981  gcc/config/nds32/nds32-intrinsic.md
! e80f4d1153dd7e4b4ea83e138479149b  gcc/config/nds32/nds32-isr.cc
  d94163fd5e4660359b8b12a0d90ed1bd  gcc/config/nds32/nds32-linux.opt
! 67c00ada7899a8cfbbeb4328c33d51ae  gcc/config/nds32/nds32-md-auxiliary.cc
! 881cbf3bcd8fa5cfd95218e500062b5f  gcc/config/nds32/nds32-memory-manipulation.cc
! f12b80a30b9cb79a93d404b593e88925  gcc/config/nds32/nds32-modes.def
! 77b9587b2d30a9701bd28a5f90879e1c  gcc/config/nds32/nds32-multiple.md
! 99f61911a3a45a42bd65c80819e5f1f0  gcc/config/nds32/nds32-n10.md
! 7275c2f5f08acda7b08ad871dff22bc3  gcc/config/nds32/nds32-n13.md
! 07e091be7bfa819382c567910767bbfa  gcc/config/nds32/nds32-n7.md
! 2f4d93264b507658e6f40424f45b094b  gcc/config/nds32/nds32-n8.md
! 8e60163c6d4267466882b97d9c58c86f  gcc/config/nds32/nds32-n9-2r1w.md
! 72ba9c1b90056ea7bf65d7cdb1dced58  gcc/config/nds32/nds32-n9-3r2w.md
! b38b6362e970e6f27165b0e67625d54d  gcc/config/nds32/nds32-opts.h
! f1f4752b23ef85e7ae0df71987d2f29a  gcc/config/nds32/nds32-peephole2.md
! bd97fb949cf000a2639b0651d173e332  gcc/config/nds32/nds32-pipelines-auxiliary.cc
! a72e71fe82a42eb3bd22513451c7c799  gcc/config/nds32/nds32-predicates.cc
! 5f3a5e718ec2f19efc4b7b74d176c479  gcc/config/nds32/nds32-protos.h
! e47ee3e5d5b8ff75aecd7026b2c4733a  gcc/config/nds32/nds32-relax-opt.cc
! ae7137e8b037fac92e85f6ef8c9f2011  gcc/config/nds32/nds32-utils.cc
! 2abff95806d7099cddf675435c6ba80f  gcc/config/nds32/nds32.cc
! 900bbad68c6811630f6561743c7ed779  gcc/config/nds32/nds32.h
! 99399f67631748fb7971ed148e306793  gcc/config/nds32/nds32.md
! 1743d122013cb49fdfb5039828aa5cb9  gcc/config/nds32/nds32.opt
  c09acceb380f58ddb795ee3e973945d7  gcc/config/nds32/nds32_init.inc
! fc18145b2ce6b7a470ad14779b4ad0d5  gcc/config/nds32/nds32_intrinsic.h
! fdb7587a378fb479f62f9cff3d04ee98  gcc/config/nds32/nds32_isr.h
! 12c9283e666814d2ad7ba958c5ccaf9b  gcc/config/nds32/pipelines.md
! 4e4c670515cc17ae1290dca606709f4a  gcc/config/nds32/predicates.md
! 207971955b140067634d7b9bdc717c95  gcc/config/nds32/t-elf
! 5e410819c5a29604baf33f03f60e4dcd  gcc/config/nds32/t-linux
! 3448bd9a71676e70a8a0fab20456d2bb  gcc/config/nds32/t-mlibs
! f8fd8666e49e77cb350fa0959178744d  gcc/config/nds32/t-nds32
! 058446e508be7dce83d9b4169c19ccf6  gcc/config/netbsd-d.cc
! 9089e8e2b5c63d5557fa01b8a4cc46ae  gcc/config/netbsd-elf.h
! e66cde3c5da698e9eb68f8ebf27e85d1  gcc/config/netbsd-elf.opt
! 71df6d5073f1bd519667a903da813464  gcc/config/netbsd-protos.h
! a25d58c11bd7432d87ed645fa079ed70  gcc/config/netbsd-stdint.h
! a8282d1967c54e7c01c140f289cdd53f  gcc/config/netbsd.cc
! 53685f369d3c0dd04211e7c3605f91c5  gcc/config/netbsd.h
! 044d8d584e35fac7aa65e733621ff353  gcc/config/netbsd.opt
! 5b674505077c2ec968513bdd3930b2d2  gcc/config/newlib-stdint.h
! 9bc4a3f0fa6223302a4154a9c7109c50  gcc/config/nios2/constraints.md
! 610431d9bfe4fc2362ecd97a07c3d5eb  gcc/config/nios2/elf.h
! fcc1c23d7a525a2bd62583c2da04dba3  gcc/config/nios2/elf.opt
! 63e90efd35e8f7d883e8334add05562e  gcc/config/nios2/ldstwm.md
! ea3eeebd16b0bb39f056cd2a3533fbca  gcc/config/nios2/linux.h
! 924e323ba01415642bb83ef028fc8676  gcc/config/nios2/nios2-ldstwm.sml
! 97e49e1563b272e59b618b80a8da69b5  gcc/config/nios2/nios2-opts.h
! 0a1b7c029826b1ad6af51e797f801774  gcc/config/nios2/nios2-protos.h
! 4107389c04cdf907b72ed66bc5717915  gcc/config/nios2/nios2.cc
! 6ab9e1dec039ba9126a5b635a38cac8c  gcc/config/nios2/nios2.h
! 90ebc8abbe618252b8ae2594f26bb0b2  gcc/config/nios2/nios2.md
! 01c576236d74bb97b4b6973913b1d3ca  gcc/config/nios2/nios2.opt
! e530a761f85986460bdef8915feeeb0e  gcc/config/nios2/predicates.md
! 844e661b5fa10e4408f5468cbf82f2e3  gcc/config/nios2/rtems.h
! 5b516490845533ece4dab58370da2d0c  gcc/config/nios2/sync.md
! 36b689f54a71335c10d7f9d934b52fd1  gcc/config/nios2/t-nios2
  3369cb7fd894ad0eaae773a6ab4a00dd  gcc/config/nios2/t-rtems
! 41dacd55876639eded0acf6bb0f0637d  gcc/config/nvptx/gen-copyright.sh
! 1c1b196e40adffa2d5929f81b7e850ea  gcc/config/nvptx/gen-h.sh
! 173f36fee1f739e3618d8e40ca4930f7  gcc/config/nvptx/gen-omp-device-properties.sh
! 6a987f0dc9a69545c621e4527d1f4908  gcc/config/nvptx/gen-opt.sh
! c1ad38a37814e43f97a9c2511b2f05e0  gcc/config/nvptx/mkoffload.cc
! 4b15ab4e02f3b6bdb7ec13e1685f653a  gcc/config/nvptx/nvptx-c.cc
! af2bcd42f13e33ccdad4352e0681db30  gcc/config/nvptx/nvptx-gen.h
! 6757c6c7087740f1aea31c9508919ba0  gcc/config/nvptx/nvptx-gen.opt
  83dfca9e2eb78c0e3ab66a3ff9681ad3  gcc/config/nvptx/nvptx-modes.def
! ebd0574bf5ea7ace79b2066a22377fc2  gcc/config/nvptx/nvptx-opts.h
! bde7aba55747f4c0cddc582357c9b400  gcc/config/nvptx/nvptx-protos.h
! bf2434d0636138653c724a48b710c2d4  gcc/config/nvptx/nvptx-sm.def
! 638d0b49e4aad1c3c3a3870f49cce61d  gcc/config/nvptx/nvptx.cc
! e69d6ee2b8a7fe0801305b508785dfb7  gcc/config/nvptx/nvptx.h
! 23f266496c8fd8187d450f94bfc132d1  gcc/config/nvptx/nvptx.md
! d9b445a4b2e607c77f96d5a8ea11c4b2  gcc/config/nvptx/nvptx.opt
! 7618e555de939a8a87ca895ee21d449d  gcc/config/nvptx/offload.h
! a98b8f55d931511a59aeb841a255d7da  gcc/config/nvptx/t-nvptx
  bc001c03517e71a9f90411d80f0f2134  gcc/config/nvptx/t-omp-device
! 000b3f007653f70365e23064db0fac51  gcc/config/openbsd-d.cc
! a65ceed029d7300deee7d7dc22dfc93f  gcc/config/openbsd-libpthread.h
  3d4a70d0decf61f1fba17df545cea7f5  gcc/config/openbsd-stdint.h
! 453cf2c44b35af91d5723b1ebf00d461  gcc/config/openbsd.h
! 5ee82d6ced458179f8485de9750dfe54  gcc/config/openbsd.opt
! 63a0ba43116933bbd014dce166910359  gcc/config/or1k/constraints.md
! 3a5f5be781e050608200b5c10a3adef9  gcc/config/or1k/elf.h
! fc5aaecf328d007342cb37bb9ecce19c  gcc/config/or1k/elf.opt
! 698f50b4f2e28bd954e86e465ba9d991  gcc/config/or1k/linux.h
! fc08209326c321688f4a991260325fbe  gcc/config/or1k/or1k-opts.h
! b6684ee0358f9fa93b6b9ed98c5896c7  gcc/config/or1k/or1k-protos.h
! 6152fcc6a410052afb8bea8bd7fe8b74  gcc/config/or1k/or1k.cc
! 028d0ed265e1b78c41230936ee46160f  gcc/config/or1k/or1k.h
! 3fa2a0364f396c407eef8570e20f0f16  gcc/config/or1k/or1k.md
! 10ba64748bc0c916cfb5d03fc81ea89a  gcc/config/or1k/or1k.opt
! 965c3dd4804a512c25bb6004ca639d5a  gcc/config/or1k/predicates.md
! 2041aa735e08d2e87f797b23581f3499  gcc/config/or1k/rtems.h
! 3c394bb4fdc9ff67bd4790c0534ff8b7  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
! 42f38343315c015acccce4fb4dab66d1  gcc/config/pa/constraints.md
! c4de9328f33cf25a1e7b4bd98ce98628  gcc/config/pa/elf.h
! 9e8dea4a54f21283150c386317d0b1ca  gcc/config/pa/pa-64.h
! 2124bf98f07a74b572bf2dbe530c23b1  gcc/config/pa/pa-d.cc
! e56e3027173f2f6ea40ef71d1a3bf525  gcc/config/pa/pa-hpux.h
! be77f265a454344d84e5497bc4135a89  gcc/config/pa/pa-hpux.opt
! 30ba88de0b5823126ff3a38886eac764  gcc/config/pa/pa-hpux10.h
! 2fc02d35764e4ac1c51e14824f6544e3  gcc/config/pa/pa-hpux10.opt
! a73dbc08c36278d137a8e336dcbeb022  gcc/config/pa/pa-hpux1010.h
! 26550115e305a0cc51dbdcbaee99ca08  gcc/config/pa/pa-hpux1010.opt
! 91d62be94a465f2171467c105b41e1d8  gcc/config/pa/pa-hpux11.h
! 9f23c032ded2f9b50c519c801561dad3  gcc/config/pa/pa-hpux1111.h
! c44dcf4bfdb1fd06c246d1462a8c7334  gcc/config/pa/pa-hpux1111.opt
! f2c69fb5655b2cb22df86cc408739e2e  gcc/config/pa/pa-hpux1131.h
! d6619977545d5efa41edfe75d4367153  gcc/config/pa/pa-hpux1131.opt
! 748184241abd60ec9f430126ca554df8  gcc/config/pa/pa-linux.h
! c4f705eeb54ff34c883f9c113e818df5  gcc/config/pa/pa-modes.def
! e47d71d86ebb0d0f8afddf6d199f5364  gcc/config/pa/pa-netbsd.h
! 2eda1205dffee59771ece16cfd9f0d8b  gcc/config/pa/pa-openbsd.h
! 7a10250d76ade2d934709e9b7bb5ed6a  gcc/config/pa/pa-opts.h
! 5fa96a631a5b9b8b1217738f0e2dd69b  gcc/config/pa/pa-protos.h
! 2b7010eb6f030f630eee00fe0df62405  gcc/config/pa/pa.cc
! 13ae728a98f3a25e3637e33a21882b3f  gcc/config/pa/pa.h
! b044c40caa8d6d8cd41ed85b476d782d  gcc/config/pa/pa.md
! 64cec30c3507a2146fe6ab58b03330af  gcc/config/pa/pa.opt
! 891f23207e8d80f19e1df8c9e5118ab1  gcc/config/pa/pa32-linux.h
! b721e31e8ac5cfd5c02dda7a9fbca7c3  gcc/config/pa/pa32-netbsd.h
! 97292197746bd674a0a991f5adb7c047  gcc/config/pa/pa32-openbsd.h
! a46bddf0c41ab2d8e73b4edb4c044aac  gcc/config/pa/pa32-regs.h
! ac3161b72a192cbb0d9e4f1f448f188a  gcc/config/pa/pa64-hpux.h
! 41a82ce71a1f146358eabdaa8599e50c  gcc/config/pa/pa64-hpux.opt
! 3339b90a27e3347097e3f0e935ccd59a  gcc/config/pa/pa64-linux.h
! 3c0e1b7137bc357c160bce5f855edb49  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 3f936b513ff18f1cac0701d75f6e875a  gcc/config/pa/predicates.md
! 5ed8ceb2c6b54273f0f7fcff46fc9389  gcc/config/pa/som.h
! 4104beb84cb7f3a8a5915652c3da66c5  gcc/config/pa/t-dce-thr
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  16f4ce216414d19c044dd93c60d948ae  gcc/config/pa/t-pa
! e26a156d2ef2ae60a2e01e15a61083f3  gcc/config/pdp11/constraints.md
! ea3070da7ccd303c197951f267399902  gcc/config/pdp11/pdp11-modes.def
! 53eb050770d2edeaf6187a8b1ac32a22  gcc/config/pdp11/pdp11-protos.h
! 89de3c9ec73262949bf12a44e296da70  gcc/config/pdp11/pdp11.cc
! efd71fd4cfa71545818e66c48680568b  gcc/config/pdp11/pdp11.h
! c9d1b0af02848c07de653ca949f36de1  gcc/config/pdp11/pdp11.md
! 8fd2343b8b50371a583beafccb83ee09  gcc/config/pdp11/pdp11.opt
! 10b1a82aa9429433d579e8863acc2b46  gcc/config/pdp11/predicates.md
! 1a2afe1e84ef544a937b4242e8860526  gcc/config/pdp11/t-pdp11
! 7a81ca7c7866c64fafe02bd78c03fde1  gcc/config/phoenix.h
! c8a6f881a028221dbbafedcb777812d0  gcc/config/print-sysroot-suffix.sh
! 06da7ecfd46e6730430cb01da80e7006  gcc/config/pru/alu-zext.md
! 0f1372ef494b220d0d720a687c4a3532  gcc/config/pru/constraints.md
! 37036e88280bd9cece0753ddc31b14d4  gcc/config/pru/predicates.md
! 508af9ff87c968d18da6a3b668c562e1  gcc/config/pru/pru-opts.h
! adb45c1df20d8312291f0dd590617c0d  gcc/config/pru/pru-passes.cc
! 6241f585359920cfe0e733093e1e7f3f  gcc/config/pru/pru-pragma.cc
! f6300af18a2a97bf286101e248ab2bd9  gcc/config/pru/pru-protos.h
! b0a7f6b1dccd9910b995770137a814c2  gcc/config/pru/pru.cc
! d6ddca521bf89584b85c1199c93e35c6  gcc/config/pru/pru.h
! e8e8964e44430e7645394a1a3e11f54f  gcc/config/pru/pru.md
! 085632e783decd2fe0bcc528a8e7b08f  gcc/config/pru/pru.opt
! 5514ce27c9f3d29399f1ab38369f94b0  gcc/config/pru/t-pru
! e1f9dfc44a4a966d7f89cc0106f5f211  gcc/config/riscv/arch-canonicalize
! 0bbaaefb3f2a184dbdc18ed078219dd2  gcc/config/riscv/bitmanip.md
! 108efd0fc7ef534416cdfcbb423b7ef4  gcc/config/riscv/constraints.md
! 893fbb9c056d310ef0a6fee05d8916cf  gcc/config/riscv/elf.h
! de8267ad388b3b279d7d610dcb138d59  gcc/config/riscv/freebsd.h
! 6f1b8a140d0d8281ddf6bbb9b3665265  gcc/config/riscv/generic.md
! 4f6682a6c1d4278507083534df00daec  gcc/config/riscv/linux.h
! 65a686eb0c4b00c62765aa84b65ed759  gcc/config/riscv/multilib-generator
! 3c1d7af3fba8316bc7243f710c319180  gcc/config/riscv/peephole.md
! b54ef392ffaae587b124086e3c1caee3  gcc/config/riscv/pic.md
! 3c43ec4b4984dcfebab815b2caa17d1c  gcc/config/riscv/predicates.md
! 1c01418f219752b6ba081ae006749e8f  gcc/config/riscv/riscv-builtins.cc
! 55ef098f774ff1dbb09f1ee749a872ff  gcc/config/riscv/riscv-c.cc
! e267d8bddb126e0239cae0ebf00e2114  gcc/config/riscv/riscv-cores.def
! 80987db46d039b6171659b70b01f9a1a  gcc/config/riscv/riscv-d.cc
! f6cfc204ee0e08a394d6125a897e518e  gcc/config/riscv/riscv-ftypes.def
! dbafba6f7908712c577d60e18001b0a5  gcc/config/riscv/riscv-modes.def
! 796b4502adbc827019e994c18ab6c7a3  gcc/config/riscv/riscv-opts.h
! 34ec7b5469ef1cb3878f717c08f912dc  gcc/config/riscv/riscv-passes.def
! 205d0bae7903bb49d6aad5b9c4b2d50a  gcc/config/riscv/riscv-protos.h
! 88c2c78891ab447d2675d0968c6626d9  gcc/config/riscv/riscv-shorten-memrefs.cc
! f60d94e10e9a0c6a4ddae1f3aae0bbc4  gcc/config/riscv/riscv-sr.cc
! d21366ce6d880e1560089312a963636e  gcc/config/riscv/riscv-subset.h
! b59643cff7ea0a2a6f614032a16139e8  gcc/config/riscv/riscv.cc
! be32c23515f4904365e1a4f13edbae84  gcc/config/riscv/riscv.h
! 5ab629d6f9eb839b59c2fba1c700eb8b  gcc/config/riscv/riscv.md
! 5d262ceccd11d7637234635169e18019  gcc/config/riscv/riscv.opt
! 1f8d9fb5328ab69d6ee6aea7cbc52af8  gcc/config/riscv/rtems.h
  462630614e6e7a6209f8f18b6dff0eef  gcc/config/riscv/sifive-7.md
! 68ce7572bf65c61a8e3297e7e05368fd  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  d8ae7bee35ef1ecd77143535da9aae78  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! d74581662dc8388b434ba22f496042cf  gcc/config/riscv/t-riscv
! 7dbd61c5a07b1adefe5429a41008fda5  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
! 90f4169f99bfb7a4d89df6421d6317d8  gcc/config/rl78/constraints.md
! e26f905fb947d230ce8267bfc94cddfa  gcc/config/rl78/predicates.md
! 315c50687ceb4ab8dd0585c2630157a1  gcc/config/rl78/rl78-c.cc
! 27a00caa2efe6228724dedeef942b0d9  gcc/config/rl78/rl78-expand.md
! e5c5f726d984761bbb3797e015347f8c  gcc/config/rl78/rl78-opts.h
! 0f6d27fdddc2223563da35acc7904558  gcc/config/rl78/rl78-protos.h
! ae86de95c84d5731022640510060bd3f  gcc/config/rl78/rl78-real.md
! 4e83e9ea00d5e29d8e8d3c891915c0c1  gcc/config/rl78/rl78-virt.md
! 9e7113585a9b2471836eafa0fe5fba86  gcc/config/rl78/rl78.cc
! caa262f48bb095995bd69f31bead8b24  gcc/config/rl78/rl78.h
! b92f959d09ff22d7470b7fb99deae3b2  gcc/config/rl78/rl78.md
! 23a285273eb7003005e37a72baa83290  gcc/config/rl78/rl78.opt
! 4db46990f1e16a6c4a4fa362fe69084e  gcc/config/rl78/t-rl78
! f1359d304f1c4ca2a707865a972484df  gcc/config/rpath.opt
! 757339103d1695ceb44968b1df802134  gcc/config/rs6000/40x.md
! a29fb1ba2195bab7e022aa556f6a7a67  gcc/config/rs6000/440.md
! df4cc133045d29816105cfc8b5dd7566  gcc/config/rs6000/476.h
! e8f68a13cda915c0d35c57a7cd6b3007  gcc/config/rs6000/476.md
! 25a29b2205cb1ed1e293cf0fea4ff344  gcc/config/rs6000/476.opt
! bf95869a997c7762b97f3b55d8590efc  gcc/config/rs6000/601.md
! 356aeed5643c1059728362ab760fd4ad  gcc/config/rs6000/603.md
! ad9a9920464016b790c81eec3e34e483  gcc/config/rs6000/6xx.md
! fa871f4e28c8f2596d588c763bede19a  gcc/config/rs6000/7450.md
! 90f413483f6bff7aa611cce566fe5126  gcc/config/rs6000/7xx.md
! ee5651ff9f99cba0fc11a42687b94de6  gcc/config/rs6000/8540.md
! 1d0b124e28d6890e92a4f4f36c6c88a3  gcc/config/rs6000/a2.md
! 103aaecab1f8cc882e519935f2cca0f0  gcc/config/rs6000/aix-stdint.h
! ff4a6b203fb6d5089653a8497f00f395  gcc/config/rs6000/aix.h
! 6b79f6395b94ff2ec852620489ff8662  gcc/config/rs6000/aix64.opt
! 8b5f9792725b97142ff95e625d0f253f  gcc/config/rs6000/aix71.h
! ba9a44e430912aebbb6a1b81be97cd3a  gcc/config/rs6000/aix72.h
! 896ac66876b04d2b76989e6eee0b90ce  gcc/config/rs6000/aix73.h
! ef2ced8f2fb6ce8c5c1245ce6cee66f6  gcc/config/rs6000/altivec.h
! d9c91154013d0ca6a016f09081c95120  gcc/config/rs6000/altivec.md
! cc49b81ab7c9ca29772c01a9a7535cca  gcc/config/rs6000/amo.h
! 02da5ce24a764b70228b18b91f3c71b7  gcc/config/rs6000/biarch64.h
! 1085f75a8407fb26f3c9146067f6f20b  gcc/config/rs6000/bmi2intrin.h
! 8a5022bd5be332623fff8b360ac05bae  gcc/config/rs6000/bmiintrin.h
! 54ec91ad1765f5503425295580f47013  gcc/config/rs6000/cell.md
! 48092c856b89587cf747f397635a814e  gcc/config/rs6000/constraints.md
! 441921d402e9838d42e073dbdae44779  gcc/config/rs6000/crypto.md
! 77c27779e033c8aebcea737036e485a2  gcc/config/rs6000/darwin.h
! 503185b2f1b7ecba15c3130eeb6de309  gcc/config/rs6000/darwin.md
! 6262a630a0319b874ebf7bb603354dff  gcc/config/rs6000/darwin.opt
! 4d1427642846be99ef5df72c1c464cbd  gcc/config/rs6000/darwin32-biarch.h
! 15194aee2c08a42200dd77e878fa388b  gcc/config/rs6000/darwin64-biarch.h
! b7f0fafe2c845b85e2545c92a2c4c9c7  gcc/config/rs6000/darwin7.h
! 9d70b7b25d5171e2721594ed66b5f948  gcc/config/rs6000/default64.h
! 1de21ca2491e6514d8eb735e7a339a6a  gcc/config/rs6000/dfp.md
! 2c10bbc23530bb77425cec1703aab7b4  gcc/config/rs6000/driver-rs6000.cc
! 6399ff8d4fbcfcd4b6c5d26b953300db  gcc/config/rs6000/e300c2c3.md
! 8c90be2625dc4b722c014e150a46f9ee  gcc/config/rs6000/e500mc.md
! 2eadc45ed3621dba026a3b32c6fccd41  gcc/config/rs6000/e500mc64.md
! 1424b41f3a328f3d94d23a17e9e5068e  gcc/config/rs6000/e5500.md
! 639dcebafd1ba8253fd70c5c7f7aad1a  gcc/config/rs6000/e6500.md
! a882d196df1da1a95ffccf96731237b6  gcc/config/rs6000/eabi.h
! ca44783c9c7d3e980434a37fd5ebd2bd  gcc/config/rs6000/eabialtivec.h
! 47f83a7b7a0deb16a2ec4d9abd3a3e5d  gcc/config/rs6000/eabisim.h
! 177812c3c73950afb57861e8b44764a8  gcc/config/rs6000/emmintrin.h
! e2f33e3ad8c58ae7c4d37c57668d5d6d  gcc/config/rs6000/freebsd.h
! 1b9d73432959c122188bd5c2819c226d  gcc/config/rs6000/freebsd64.h
! 294d38ad800a36068f5e357f6120ffe6  gcc/config/rs6000/fusion.md
! 510d12e161addcd3e90133d8016734f0  gcc/config/rs6000/genfusion.pl
! 77483e03f3638fc04120ec5e72cc81c6  gcc/config/rs6000/genopt.sh
! e424c8451aa2fa5e941011dedc3f3d08  gcc/config/rs6000/host-darwin.cc
! e6df280cc5a65d387c7826ba6a8d5c36  gcc/config/rs6000/host-ppc64-darwin.cc
! 9a8cfa7f106d19afdd46dd6c5ac3efa8  gcc/config/rs6000/htm.md
! 81d9e52c55d389395eeb31e2aaf06dda  gcc/config/rs6000/htmintrin.h
! cf43f5ffe672029aecb6485a3efe4f16  gcc/config/rs6000/htmxlintrin.h
! de267b1162c8f31d6058d88d79f9cf03  gcc/config/rs6000/immintrin.h
! 4f01bb81a02de98b2d73f6317c5b99b9  gcc/config/rs6000/linux.h
! 39171f7a272691d5b96fe66f757d2a63  gcc/config/rs6000/linux64.h
! 151bab462852e69e501b3e0de164f454  gcc/config/rs6000/linux64.opt
! db8e0cbf1cbd090070ea33edd5629e0b  gcc/config/rs6000/linuxaltivec.h
! 527bc8f53c10064aed61f852b917df1f  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! c483353b3be8e4608e9f79096169e69a  gcc/config/rs6000/mm_malloc.h
! 00a65eb62cff7484c98bd35c964e8a49  gcc/config/rs6000/mma.md
! 6eadcc7d4dcedd8624a1fb7b41da66f6  gcc/config/rs6000/mmintrin.h
! 61c28e3586fb2b03805991a64b45cb8c  gcc/config/rs6000/mpc.md
! 95952f5d67af6326d2a04de86ee33226  gcc/config/rs6000/netbsd.h
! a424231ee97d90cb2112ecb8cc4e1c63  gcc/config/rs6000/nmmintrin.h
! a533c84978ddc41f07cd146aeec89c8b  gcc/config/rs6000/option-defaults.h
! 97268f911beb024ab7cd06bb77c81417  gcc/config/rs6000/pcrel-opt.md
! d676165f97dfe570f40849d5bf4fb872  gcc/config/rs6000/pmmintrin.h
! 926e68fc4e0bfa2d1dc117f078d40abb  gcc/config/rs6000/power10.md
! 07cf066c13012406f93c538c2004aea6  gcc/config/rs6000/power4.md
! f4a8d3ea7997157c7382e726efb58750  gcc/config/rs6000/power5.md
! f12b39e724a115282cd4de3ccbc3f32f  gcc/config/rs6000/power6.md
! e97b3d16e4e1103722ffef182951eb15  gcc/config/rs6000/power7.md
! 8669c9dc7deb445a88498648cc09d4e5  gcc/config/rs6000/power8.md
! ee5eec4bab981773b4e3f805b4675170  gcc/config/rs6000/power9.md
! dd882bb8b346fd5c71c3edc3523c9837  gcc/config/rs6000/ppc-asm.h
! 6d1c5a9feee6656b996e2ca020d567d5  gcc/config/rs6000/ppc-auxv.h
! 1bd0038bfa018ab27c48f63a4e6515e1  gcc/config/rs6000/ppu_intrinsics.h
! 5cf2585a27776874e85afbf8f7d3c75e  gcc/config/rs6000/predicates.md
! 8c1455ab31e44fd0dfaba2988aeac309  gcc/config/rs6000/rbtree.cc
! a8d5a7b4dde5aabdefe618616c9a0f75  gcc/config/rs6000/rbtree.h
! a592cf8ab82eb050d145672c94444303  gcc/config/rs6000/rs6000-builtin.cc
! 7b43eb7d33bae512afeb222964e2d444  gcc/config/rs6000/rs6000-builtins.def
! 1a0e08e79cd1500bdf84f4ac80c77252  gcc/config/rs6000/rs6000-c.cc
! 58b892c1eca7785db4397586788ca9bb  gcc/config/rs6000/rs6000-call.cc
! 788bbb7b212d3eb79c98533414d76742  gcc/config/rs6000/rs6000-cpus.def
! baef72211efe1ab18d6cf33e92a07f0b  gcc/config/rs6000/rs6000-d.cc
! 73fdd592a835c4516b858963e5bdccd1  gcc/config/rs6000/rs6000-gen-builtins.cc
! a490bd1734755760e696287f317cb9db  gcc/config/rs6000/rs6000-internal.h
! a9fd9182753b1742f0240fb46af52781  gcc/config/rs6000/rs6000-linux.cc
! e1b996a92005c128588ec97c24cabb6c  gcc/config/rs6000/rs6000-logue.cc
! a4c1225bedfe922184db546f041df392  gcc/config/rs6000/rs6000-modes.def
! 8440a5bf31dc635cd102f3098d8d48cb  gcc/config/rs6000/rs6000-modes.h
! b0ebc5652bf92a4f2c752b74777afe46  gcc/config/rs6000/rs6000-opts.h
! da6f20a65f51451cf71d2ff0e6ef46e9  gcc/config/rs6000/rs6000-overload.def
! 107000c18e5cd9c9e67b4c3b23c7c3fc  gcc/config/rs6000/rs6000-p8swap.cc
! 67835799ee87533e04f2fbed2bd60702  gcc/config/rs6000/rs6000-passes.def
! ffda8f63c8242e1c9b8ca7d891c3106a  gcc/config/rs6000/rs6000-pcrel-opt.cc
! 0c32d9fcf2b6dbef5aa9c813917fd608  gcc/config/rs6000/rs6000-protos.h
! ef3e25381794d8ed8d7aca2e005897ea  gcc/config/rs6000/rs6000-string.cc
! e63a23cfbabbc08ab82c8dba906a13b9  gcc/config/rs6000/rs6000-tables.opt
! c8a1aa4e4f741146fe06bd36d0c0a933  gcc/config/rs6000/rs6000.cc
! 8508a8f8415e606e77bf34026c25ac81  gcc/config/rs6000/rs6000.h
! 3bcb6a50b2f162e6e148e8cffd642c45  gcc/config/rs6000/rs6000.md
! bb01fd05fe116c89bb06cc20336b7160  gcc/config/rs6000/rs6000.opt
! 6ae739401a438fbbd4f5625c7f040ce2  gcc/config/rs6000/rs64.md
! 0944dbefd50b38fdbc73552ffabfbb25  gcc/config/rs6000/rtems.h
! bff178b842621aa040def2dfb8f23961  gcc/config/rs6000/secureplt.h
! 4cd1a17cf4a5c4513fa536342bd05c08  gcc/config/rs6000/si2vmx.h
! 74fec54256246722343a25e55e6bf8c8  gcc/config/rs6000/smmintrin.h
! 1db752cf5d94e330e5a450c8f6433bee  gcc/config/rs6000/spu2vmx.h
! 42be9dac85ac345cb001e80ce4da1e80  gcc/config/rs6000/sync.md
! 26912fd8d2f4a6e562cea44ccc1c0940  gcc/config/rs6000/sysv4.h
! d352c4bc3be5031e8863ef90ae8d0aa3  gcc/config/rs6000/sysv4.opt
! 898ac40955161eaacfa50d85d623088e  gcc/config/rs6000/sysv4le.h
! f586992cb0e8eddc439f89d38c72f056  gcc/config/rs6000/t-aix52
! 614bcaa942c5799f6f4bd755c6fec847  gcc/config/rs6000/t-aix64
  636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin32-biarch
  f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64-biarch
! a9019bb5c4ac122d85203c4fdb162617  gcc/config/rs6000/t-fprules
! 2d6aba64455fda10dd731dc34e8a1ea3  gcc/config/rs6000/t-freebsd64
  7708df4fc7a5677f2dd3097c7bb5b338  gcc/config/rs6000/t-linux
! c23ca5dd6d43159b37712da76a8c191c  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
  60f26523152f6a061a12cb17e987de12  gcc/config/rs6000/t-linux64lebe
! 69a483fc3a521db632c102fcc752d2a4  gcc/config/rs6000/t-lynx
! 0de22c83c73c1d22820da94b169001ac  gcc/config/rs6000/t-netbsd
! af9b5183e5f9bb34de3653e4ed43e01b  gcc/config/rs6000/t-ppccomm
! 1021a1008e3c77b73f781fcb41135c29  gcc/config/rs6000/t-ppcendian
! c20e012230bd360686481a6f707cde3c  gcc/config/rs6000/t-ppcgas
  1b8aba690a39464c4ea9c647d73d6983  gcc/config/rs6000/t-ppcos
! 82f0247bdc2b607c836174e7c90bbdbf  gcc/config/rs6000/t-rs6000
! 1ff5e132c78dfdcb9c1ba39f0b812d53  gcc/config/rs6000/t-rtems
! 6b511839e6a30576e8dd17b1bc7baab9  gcc/config/rs6000/t-vxworks
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
! afddd2a7589607f0c4fbe9ac61a90663  gcc/config/rs6000/titan.md
! be77ffba248fa7ebb90e840df8bdae02  gcc/config/rs6000/tmmintrin.h
! 79d33dfc94147d876ca015f4a25d8cac  gcc/config/rs6000/vec_types.h
! 82e3237968e3452badf566f6de573a2a  gcc/config/rs6000/vector.md
! 64e95e4dabf6a01288af5a72ccbbfff5  gcc/config/rs6000/vsx.md
! 07be543763620625532c4855fd2bbd8b  gcc/config/rs6000/vxworks.h
! 410becd5ec1d44b12ad8abac150d8386  gcc/config/rs6000/vxworksae.h
! c81225cedf76fb8af245069ce63f1856  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
  b56ad5be71cef10dc9ee90f9f5577c21  gcc/config/rs6000/x-darwin
  0d6a4902892897c148fbf634ca039f71  gcc/config/rs6000/x-darwin64
  3f42272f4bcf66031ebf71a6c876adb8  gcc/config/rs6000/x-linux-relax
  c8b5860d3a61eeddd3a9790a0f09ed6c  gcc/config/rs6000/x-rs6000
! ef375a56b9dbd47d07e26c47d2e49854  gcc/config/rs6000/x86gprintrin.h
! 2124ee19a02b6e4cad6f26e5a6f904d9  gcc/config/rs6000/x86intrin.h
! 06106fe93fc6400e28c36dc385f28b45  gcc/config/rs6000/xcoff.h
! f9cce80c808e97c18d34ebf2033d5b20  gcc/config/rs6000/xmmintrin.h
! 81a6589ce3c5af486491c6ad3e8ce4d0  gcc/config/rtems.h
! 3d09b12850f22d655dbab80f8021c740  gcc/config/rtems.opt
! 406c8c5b973bc841d2a048cb37daf719  gcc/config/rx/constraints.md
! b0a8ea410c73efe8ca4d7c7e26ab47f6  gcc/config/rx/elf.opt
  84ae77475029b49553276e3d7ed74cec  gcc/config/rx/linux.h
! 6c10f5b4d191a521b88a10d6a4b4a759  gcc/config/rx/predicates.md
! 3ce60092795e76dad464616e1d50e55f  gcc/config/rx/rx-modes.def
! 9b28441533c53af0353ce34a8dd704fc  gcc/config/rx/rx-opts.h
! c2790659034562164832cff93282c6d0  gcc/config/rx/rx-protos.h
! a1fe8f3dabb5c708a294d3912e77477e  gcc/config/rx/rx.cc
! b0f1e1597fff05f6f7a1fad9af42f9a4  gcc/config/rx/rx.h
! 7fd7352a6d489450e4f219194c1d515e  gcc/config/rx/rx.md
! 9ced13453ebff9841aade58bd08b8be9  gcc/config/rx/rx.opt
  032cf36abc28f171fc24229e32796402  gcc/config/rx/t-linux
! de67420738c00cde2f34bd0ae3b92279  gcc/config/rx/t-rx
! ffcb26c64e6f68659ab244efab6817e5  gcc/config/s390/2064.md
! 77d3b5f6c5b275327c041507d537a700  gcc/config/s390/2084.md
! b572677d505bb79ea32527552d589140  gcc/config/s390/2097.md
! e026bdfc658b8a60cfd31deec2bbfa1f  gcc/config/s390/2817.md
! c5d3bebac716fd4a316b901396acc252  gcc/config/s390/2827.md
! b5ef7b2524783a772ddc76ea26d7eccc  gcc/config/s390/2964.md
! d4e1e800040c115bce581bd7d85a5226  gcc/config/s390/3906.md
! 3de5efa33fd3b43fd73ae9987f9041b1  gcc/config/s390/3931.md
! 32823a5e5b65e7ba2a07d792157dd28a  gcc/config/s390/8561.md
! 10a569eac4473f3ddded15ee29819c3f  gcc/config/s390/constraints.md
! 9e4d71bfef068f24f886008038b950e9  gcc/config/s390/driver-native.cc
! 2f598c563bf6371ff4d512868e66e7e0  gcc/config/s390/htmintrin.h
! 240f0c0d34234777c8ca6cb5a365dbad  gcc/config/s390/htmxlintrin.h
! 9e45b4f3c97895e94cb73ae6b075aacc  gcc/config/s390/linux.h
! 663639b580eacf2f32f2b09f8379efe8  gcc/config/s390/predicates.md
! 594de881b84d2f9fdf9eee00d90b8f2c  gcc/config/s390/s390-builtin-types.def
! 03a2ec9d36d2a73872bd80f3f7148d44  gcc/config/s390/s390-builtins.def
! 22357511e88799e5bfc88e5b20872bf3  gcc/config/s390/s390-builtins.h
! 516c46c6b49109c567bf1ebcf7ebce07  gcc/config/s390/s390-c.cc
! d54a529b08d2222ce065e8ffb9549761  gcc/config/s390/s390-d.cc
! 8b80a6657af26d782f169c111c636dad  gcc/config/s390/s390-modes.def
! e0c7d30da142a08bd9975fbdb040f734  gcc/config/s390/s390-opts.h
! 4cfd0da8f3916e0e979b45418a3be3c1  gcc/config/s390/s390-passes.def
! 62ca661840c9e06d5aca4aba5d19b9dd  gcc/config/s390/s390-protos.h
! f343006cc87307ef4f09b9710b02a8d9  gcc/config/s390/s390.cc
! 1cec2d97f81fa75eb6035538ec1ee3f8  gcc/config/s390/s390.h
! 009c8932583ae80a9648c07ba4ccbf99  gcc/config/s390/s390.md
! 675257e80950b443158a1f1a91b85fa1  gcc/config/s390/s390.opt
! e1e734cafc3999b9c4451398b3ff4e92  gcc/config/s390/s390intrin.h
! d2ef3b386594d6299790fa7d37320d79  gcc/config/s390/s390x.h
! 4dd5590794c77455681691bce6f37efe  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
! 269deffc1b76a915c40a4fe0b5546af4  gcc/config/s390/t-s390
! dea694db96376a2d9908b267a5040c17  gcc/config/s390/tpf.h
! 47d557aa9caaa18246e98d2d9eddef04  gcc/config/s390/tpf.md
! 18d4c6e4b3a1b1818fa4f2cd9ecc6f05  gcc/config/s390/tpf.opt
! c7b92ccab9bff5c85e9152a5010610f4  gcc/config/s390/vecintrin.h
! ad9359225a1e3d5b27b56cb348e419f3  gcc/config/s390/vector.md
! 1df8979d57854e3bcc36569a0839ba3e  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
! 1f3d467f5460c18c2b65887f6efc41ef  gcc/config/sh/constraints.md
! 75d267b5eeb53c88ff4ce97efc53929c  gcc/config/sh/divcost-analysis
! dc2cf1d8bf2f6c7704eccf3599aa4726  gcc/config/sh/divtab-sh4-300.cc
! 1ff73e278d191edaf3e5368f718ff8b9  gcc/config/sh/divtab-sh4.cc
! 1d1167357b6d443002b51b380a848dea  gcc/config/sh/divtab.cc
! dd20dce71bb2a02c0a24965fcd857f9b  gcc/config/sh/elf.h
! cfc9cc48c4f9aafe41d32da3b2eb9397  gcc/config/sh/embed-elf.h
! 4b7b34958fa3614b225a51e492de2fed  gcc/config/sh/iterators.md
! 60dec3f7ba5aee7f8808123089327dfb  gcc/config/sh/linux.h
! 46fbedaba33f33cd432383b56cc9f250  gcc/config/sh/little.h
! d1510b6bdbdb585258df7b78918ecd02  gcc/config/sh/netbsd-elf.h
! df711d3c4209dc2078403fede05b0c9f  gcc/config/sh/newlib.h
! 6861969eafe3078738774833a4c3703b  gcc/config/sh/predicates.md
! 818bdedf65464af04097cec9a4f96fcd  gcc/config/sh/rtems.h
! 9f61a6d022e5a2c63682057103c4b071  gcc/config/sh/rtemself.h
! 7435360096c659308fd1d0b7de520fb7  gcc/config/sh/sh-c.cc
! f6221f8d3397d492618e56579e467e42  gcc/config/sh/sh-mem.cc
! d22ca9f61b3c805404561dcfc87d2298  gcc/config/sh/sh-modes.def
! 2df8afb4e4a2466319288500b8b1cafa  gcc/config/sh/sh-protos.h
! 73fe24015420e63988aaa42e507c0c33  gcc/config/sh/sh.cc
! d7a6129121131f3e3e065eca8b30ecaf  gcc/config/sh/sh.h
! 209a3bc0c73d88acbc59af0353d39fbf  gcc/config/sh/sh.md
! 139aee6f03e0b710a7924323803aae81  gcc/config/sh/sh.opt
! 084246870c25f111b506b273305de323  gcc/config/sh/sh1.md
! 62872f49ccc9aaaa5931032f18cb33ee  gcc/config/sh/sh4-300.md
! de1ffc7485829b4c1829022e8c18cfa3  gcc/config/sh/sh4.md
! b513326c77a24af4716e52c2187ce2a9  gcc/config/sh/sh4a.md
! 23ce1444bb9d11f50a1348cfca3bcb64  gcc/config/sh/sh_optimize_sett_clrt.cc
! e6463102cdb7fa30f8a08d8896586422  gcc/config/sh/sh_treg_combine.cc
! 85b3b9260ba16b29271cdc22d46df733  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
! 7ef467da960017f1cab28ea3b64842af  gcc/config/sh/sync.md
  88130a11ca77c8572260539cc46ef7ac  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
! 8ef8a91921a8ab07feb5825d10fee038  gcc/config/sh/t-sh
  9f0e9638f478c08d204c5dce468c95ce  gcc/config/sh/t-vxworks
! 186b8a155a68bc034f6acbab60a33178  gcc/config/sh/vxworks.h
! ae0154c4599c501858af9357718be49c  gcc/config/sol2-c.cc
  5c26c2321d68d4724b0d0076803c6b89  gcc/config/sol2-clearcap.map
  73dd11dea23019ab25cbbd70968694e7  gcc/config/sol2-clearcapv2.map
! 0d75d79a1c041580d567cb9208142ccf  gcc/config/sol2-cxx.cc
! 8f2a5a0aa4ef2596efe07c85141e58c4  gcc/config/sol2-d.cc
! 3d64659260ed5d901bd4542e90252495  gcc/config/sol2-protos.h
! db3ea8e52e21ff6b25a7409df09edef3  gcc/config/sol2-stubs.cc
! 250832249ff98706cb605f95ff63d4f1  gcc/config/sol2.cc
! 5f3d9124b3515b8a41a67fdc594e3a88  gcc/config/sol2.h
! 3f11e32edbf5184683614e0c12cf4552  gcc/config/sol2.opt
! a527e04f14085041dac21845087511d3  gcc/config/sparc/biarch64.h
! 62b80ce881fa4d4c7d04319252327e94  gcc/config/sparc/constraints.md
! a878211c108fecf34ef02a2e3948263c  gcc/config/sparc/cypress.md
! 5a6291651116c0b9687b87420bfd122d  gcc/config/sparc/default64.h
! 07180a64a54934dac5e07e24770706d5  gcc/config/sparc/driver-sparc.cc
! 673f138bbc31f4a04b6737e78281c495  gcc/config/sparc/freebsd.h
! 7b95f23d69b7b5f6ca1e8c6df4b8829d  gcc/config/sparc/hypersparc.md
! 0f1ddd98b1d2d775133d0b269ff3064a  gcc/config/sparc/leon.md
! ff215f480f43cbc47b1f6c5bab3b5cbd  gcc/config/sparc/leon5.md
! 0dff70a3c7b6e17eacbd6ded8f2d34ea  gcc/config/sparc/linux.h
! 631b09ef7cc0c83f43348a8d006a7afe  gcc/config/sparc/linux64.h
! 656ad8d3c24dbbbc3952e5978634cae7  gcc/config/sparc/long-double-switch.opt
! 25423419af05043ec729e1ed369dd058  gcc/config/sparc/m8.md
! d86ea460099f8902ec27493bf303b422  gcc/config/sparc/netbsd-elf.h
! 8cccb610459259664d692a3e33f9c5b2  gcc/config/sparc/niagara.md
! 2857de0c1e4d2128e0d5448d59aa5be6  gcc/config/sparc/niagara2.md
! cc71854d826696843d2942b03981edeb  gcc/config/sparc/niagara4.md
! d3dc9145de44ea30315b32e69f53aa50  gcc/config/sparc/niagara7.md
! 0555e1e3006ffc138c9ab56280c2afba  gcc/config/sparc/openbsd1-64.h
! 7901e46336182dbdd2db72507eb93bd5  gcc/config/sparc/openbsd64.h
! 3288b0e98c74f1aadcc3daa0e2e499c3  gcc/config/sparc/predicates.md
! 7269dc730873039c8e673b15c7a91d0d  gcc/config/sparc/rtemself.h
! db6ae6d4ccd0b5bdf6fe86aab97ff0bf  gcc/config/sparc/sol2.h
! 3d81093270755e8c197efce4a8650a13  gcc/config/sparc/sp-elf.h
! e27aba32f28d423ef46e3006ab3ac058  gcc/config/sparc/sp64-elf.h
! f01d31f696ab03137ceb6593b6a9cd03  gcc/config/sparc/sparc-c.cc
! 30b300332d9fd9bc53425e02cec8e717  gcc/config/sparc/sparc-d.cc
! 5e694acb117acb196c2cd599ef2d6e73  gcc/config/sparc/sparc-modes.def
! 5914308bfa82bb3244b0a3f7b7583505  gcc/config/sparc/sparc-opts.h
! a51bb2475eb881f8d714527603fcbc78  gcc/config/sparc/sparc-passes.def
! c4de36f293c0ed8a0ff011ea2103b8ab  gcc/config/sparc/sparc-protos.h
! 34ec561c8abc85d8a4d79c13fc4b76e9  gcc/config/sparc/sparc.cc
! 39c4eb77d664c08dc38a425bd46164e8  gcc/config/sparc/sparc.h
! 49e4c953b7b1bf2020ec076f1ced388b  gcc/config/sparc/sparc.md
! 967d1d5e6ff154d0f5b481b60929983a  gcc/config/sparc/sparc.opt
! a54cd3f6e2b8a723dad353f41ab5c303  gcc/config/sparc/sparclet.md
! 18800e2c4216e2a890b117fcc8c3871b  gcc/config/sparc/supersparc.md
! 59843eb9f273349827231c17f329067f  gcc/config/sparc/sync.md
! 1e0463db2ba5bb6c246d7c55172a8054  gcc/config/sparc/sysv4.h
! a2f6e0c277b9a660bc80e00e7dff1494  gcc/config/sparc/t-elf
! 58518a997e4ce5d65bf338cefc9e52f9  gcc/config/sparc/t-leon
! 4765c855ac4ed9b675329c248971d183  gcc/config/sparc/t-leon3
  4a7d3f368a24d549fabaafbe44fcb134  gcc/config/sparc/t-linux
! e3ca8828ca423f9ec0a02a8bbb30dcc7  gcc/config/sparc/t-linux64
  75987b7fdc6fa9c9ff2108ff1003e6d2  gcc/config/sparc/t-netbsd64
! 138d612944f25753997578e498a40e22  gcc/config/sparc/t-rtems
! 8484f899d677780952a96cefbbeb2cdc  gcc/config/sparc/t-rtems-64
  511770bb20c2707fabd4f231ce8b83cf  gcc/config/sparc/t-sol2
! 9f5601e1105701e56ab6d030b9e611e9  gcc/config/sparc/t-sparc
  b04597637b0c08dd3e6d1a40c43e76b4  gcc/config/sparc/t-vxworks
! 13dcfcac27cd6b903b16e3253d6e2c41  gcc/config/sparc/tso.h
! 63e2e3314a95e631cb59c94b50f48b99  gcc/config/sparc/ultra1_2.md
! 13103e771e72c6ba32ca5ae9a0a4444f  gcc/config/sparc/ultra3.md
! bddb19bf715eee7b83930794c2506347  gcc/config/sparc/visintrin.h
! d378ca0ee8b9fa1f6dc599fbf5b4d116  gcc/config/sparc/vxworks.h
  5e0da0cb45fdd1424679c054727e1bfd  gcc/config/sparc/x-sparc
! bc7350d87a229f55b28d91a557f2073d  gcc/config/stormy16/constraints.md
! 59a510dffb85f78ff0d9d5a0d62d9132  gcc/config/stormy16/predicates.md
! 14d652581be71228d90645dbcc01cb05  gcc/config/stormy16/stormy-abi
! 7da82147e0b7515528c854e90ba0ef51  gcc/config/stormy16/stormy16-protos.h
! 7b14965bfe74a56528fdb6b861218df8  gcc/config/stormy16/stormy16.cc
! acd00a750e1107912434e679dacb8d1e  gcc/config/stormy16/stormy16.h
! 1a4bfad37f1fe4bcd49e99fe2ab498e8  gcc/config/stormy16/stormy16.md
! 7ba5b65bd7f8bc231566af5553fbe0eb  gcc/config/stormy16/stormy16.opt
! 8e2219370a226804e47008d6d9cce121  gcc/config/t-darwin
! c929119418bd6428fbe733712ca7da75  gcc/config/t-dragonfly
! 4a19d1697b232e5a204266e1ff962875  gcc/config/t-freebsd
! 76851f19ed25f46373cfc0c781da3d04  gcc/config/t-glibc
! 0f86559791641c4ca49f9b85bc25a196  gcc/config/t-libunwind
! 44f8539be84ff346952f1cf38b69c967  gcc/config/t-linux
! b5df7d1278280952109408064eaaf512  gcc/config/t-lynx
  5dad674732908a1c6e62e627e047929e  gcc/config/t-musl
! 555ee96911070bc5447e1ce13075a926  gcc/config/t-netbsd
  a11abd37e1474532461e8f226466c582  gcc/config/t-openbsd
! 2f0a4332aa321e8434fb92a7077281e2  gcc/config/t-pnt16-warn
  501751f2be56698ed1c9cf18358b67ac  gcc/config/t-rtems
  51d3678acb41d4448cc332f7a8e8cb2e  gcc/config/t-slibgcc
! 7f8b80c9b624b81ff2ab0000e681210f  gcc/config/t-sol2
  94b3e10150e75899d2fc1410cf218e3f  gcc/config/t-sysroot-suffix
  6f78c5decbfb4b465e7c289b60109023  gcc/config/t-uclibc
! dfad2cc758d971c8723c1fa08723df9a  gcc/config/t-vxworks
! 48d9c485226367fecc791dca3c3a6da1  gcc/config/t-winnt
! d6f63092252f029c0116652afd5a84c3  gcc/config/tilegx/constraints.md
! f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilegx/feedback.h
! 9f830f182fb5ebe9118969b455e8e820  gcc/config/tilegx/linux.h
! 87a6aa0995f95c8c1506287879dbbad6  gcc/config/tilegx/mul-tables.cc
! 4eb06829f2ce3ee514046b188c87142e  gcc/config/tilegx/predicates.md
! 55921b7e84102a5e9fa33f186a78eea2  gcc/config/tilegx/sync.md
! a2ef3cda986604c3082605c95bf25126  gcc/config/tilegx/t-tilegx
! a66f43c52ffb77798cb0b191fef6423a  gcc/config/tilegx/tilegx-builtins.h
! 4d138f8c44c48c5e329c0a3d607b4000  gcc/config/tilegx/tilegx-c.cc
! e4ec189ef825399fa9cb4f1b85622c39  gcc/config/tilegx/tilegx-generic.md
! 33db4eb224c916fa42ae74b7fb4c331b  gcc/config/tilegx/tilegx-modes.def
! 5107cb30ceb8e812691d7eb133008ddf  gcc/config/tilegx/tilegx-multiply.h
! 3f70fb100444785c95b470060c3e6324  gcc/config/tilegx/tilegx-opts.h
! f013c24127a6161e7010f9bf844cfd23  gcc/config/tilegx/tilegx-protos.h
! 90ac2d0807737c1db3442c6e0e4800ba  gcc/config/tilegx/tilegx.cc
! 3ba4507f2a8c2eb1a3eef461081bb8a5  gcc/config/tilegx/tilegx.h
! 5ea679c46bcfcd9c7c6a24ab9cec0546  gcc/config/tilegx/tilegx.md
! 2c52b488d6a963012afc4fa71aff9e8b  gcc/config/tilegx/tilegx.opt
! d575c8e323bb9059e43261fc61e6b9da  gcc/config/tilepro/constraints.md
! f62347fb17ffdccf93a30b860f9f4dc2  gcc/config/tilepro/feedback.h
! f1d591f3273814599530e79f8fa99715  gcc/config/tilepro/gen-mul-tables.cc
! b535ad3c86b0c7ec08c555cfeb3ebb6f  gcc/config/tilepro/linux.h
! 5e87a9daba1de0c55a14e5135975ee15  gcc/config/tilepro/mul-tables.cc
! c5b9da1b0ff8cff8395b89d557b5ebff  gcc/config/tilepro/predicates.md
! 255f762fd8aa908e1b6a9628cebf90cb  gcc/config/tilepro/t-tilepro
! e13dead60993eaeec5ab14f29d53876f  gcc/config/tilepro/tilepro-builtins.h
! 4dcb473c712e6546db5d04d8dcdf9d15  gcc/config/tilepro/tilepro-c.cc
! bbbd0fd14553d6f7f56c8ef2bf936864  gcc/config/tilepro/tilepro-generic.md
! aa49b61f9eccc16e5f75315901bb5882  gcc/config/tilepro/tilepro-modes.def
! 3e69865ec46a92b7a286b8b63253ee51  gcc/config/tilepro/tilepro-multiply.h
! 1f8e72c272fe86aca4108389cc9ffb6e  gcc/config/tilepro/tilepro-protos.h
! 5d7d99eb823024a4f26f911d5b1e2df3  gcc/config/tilepro/tilepro.cc
! cacd6037f98007d353f42541d51a8adf  gcc/config/tilepro/tilepro.h
! 84f287a543aaa056cd857cc50b90b2da  gcc/config/tilepro/tilepro.md
! 22e7dc7beb3ab06c0b757b7a2ac31ce5  gcc/config/tilepro/tilepro.opt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
! da113081fd608d524b35233d4fda89fc  gcc/config/usegas.h
  a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
! 3b423852d27f05f8e2e537fb5d8131ff  gcc/config/v850/constraints.md
! c97c52d1a9c270252b3319c2699abb95  gcc/config/v850/predicates.md
! 499600034a578f9aedc08af8d374c75b  gcc/config/v850/rtems.h
  41b5d5e91cc905b1e3ba5de47db5f9c6  gcc/config/v850/t-rtems
! be56e7c21d85816e92788c8bf043d23d  gcc/config/v850/t-v850
! 2dbf536f8fa075b2d289b0e8b84b36ae  gcc/config/v850/v850-c.cc
! 95db3e26c253d15492e58b4ee188dc0a  gcc/config/v850/v850-modes.def
! 99b4bb593a1e8aba317acf011e8a291d  gcc/config/v850/v850-opts.h
! 7caff843505e8a75e96d469e87cc985a  gcc/config/v850/v850-protos.h
! 100810ad932a6b17dfc0c4feece5a723  gcc/config/v850/v850.cc
! ff204bbf10a6454f9dc201f870455ae0  gcc/config/v850/v850.h
! 383da14fb1a52fba41333f926d3ec4cc  gcc/config/v850/v850.md
! 39b01d7c47c650ff60faad583dc349d6  gcc/config/v850/v850.opt
! 43f79198199226ddea3acf6c2c57fd9d  gcc/config/vax/builtins.md
! 545683dc853fa225a244c4144a1be8f1  gcc/config/vax/constraints.md
! 17371b06813fe1a55dabe820f072648f  gcc/config/vax/elf.h
! c3823fcd8ae6e73d66eb1302b7f649bf  gcc/config/vax/elf.opt
! cb0386496eda63a29643c648cdef81fe  gcc/config/vax/linux.h
! b742bf679bb164d5323e722923534bd2  gcc/config/vax/netbsd-elf.h
! 030dd0c671ab520c5e40fcc85815a6b2  gcc/config/vax/openbsd.h
! edf42a730fa0e206acb4c36eb4fa36fe  gcc/config/vax/openbsd1.h
! fc45ffa911b2561f64220620c3d3a7d3  gcc/config/vax/predicates.md
! 8bafffc4214815e9fd184580c1e1f0d8  gcc/config/vax/vax-modes.def
! 88dfdb263a18d045e0249cea9e3cc56b  gcc/config/vax/vax-protos.h
! a6103824529000c4a1f5896987881fbf  gcc/config/vax/vax.cc
! af2d177a52d10d2e653044329a046dc3  gcc/config/vax/vax.h
! 6a22e9e199a573b6ff7872cc7945723c  gcc/config/vax/vax.md
! f094875de5c978bed96156c015cce2b8  gcc/config/vax/vax.opt
! 5854550561cd88d8ca40dabd3e5bba96  gcc/config/visium/constraints.md
! 2f496046aadc47943252c420a93f7da4  gcc/config/visium/elf.h
! 860198641aba62c11a7027670bceee63  gcc/config/visium/gr5.md
! d61eec454332c40b944b3bcaed84e7d0  gcc/config/visium/gr6.md
! f6f624ecc140b3faa35cd18f9f9fa312  gcc/config/visium/predicates.md
! 82ad5d79178c3f16267435005252ce70  gcc/config/visium/t-visium
! 12e8951d2133d008c7c4c128fffba783  gcc/config/visium/visium-modes.def
! 7231c7529a12095c367f6b873ecb1bdc  gcc/config/visium/visium-opts.h
! cc22762cdcf9d3f4fbd54af90a57e934  gcc/config/visium/visium-passes.def
! d1f86bf9b06ddd9a4e491ad781c435db  gcc/config/visium/visium-protos.h
! 6ed20b1759cd6da726cda092e6888fa3  gcc/config/visium/visium.cc
! f7bdd93de1022384e5812028d3e28941  gcc/config/visium/visium.h
! 66b5e1689ca87d1977e75df02f9b3730  gcc/config/visium/visium.md
! e4a9c2caa063b88e562625857140559b  gcc/config/visium/visium.opt
! 61899709b2f88b93c574a7eedcabf010  gcc/config/vms/make-crtlmap.awk
! f5c6ec5f8875559e5313283c3eaa64ba  gcc/config/vms/t-vms
! 8335f1fff2aa77ba47cafa50607ccfca  gcc/config/vms/t-vmsnative
! 5384fae3b3f21f9d8a22600059f2b248  gcc/config/vms/vms-ar.c
! 88be5e6718b765cbe0eda971dda1a413  gcc/config/vms/vms-c.cc
  c4603dec4151d376a2092ed7555c06d7  gcc/config/vms/vms-crtlmap.map
! f27dde9601ed7e4e8c5f4b64c1f28c7a  gcc/config/vms/vms-f.cc
! 7b20dbfa371eb45e2a1548ca6f191b7a  gcc/config/vms/vms-ld.c
! 3f46f835f2aaf82e73dea34002ceb397  gcc/config/vms/vms-opts.h
! b2b95a1fd808709c5579f1e12b653a74  gcc/config/vms/vms-protos.h
! f7724b2e12613d19907cfb26278980f6  gcc/config/vms/vms-stdint.h
! 2509e1418c36cc72e68327122fd7945b  gcc/config/vms/vms.cc
! 357992126eefd2128bf7a060ca795ccd  gcc/config/vms/vms.h
! af50eae58459da8d326e716b07f90955  gcc/config/vms/vms.opt
! 2ccf8ff15c39b912573ffeba2d72d60c  gcc/config/vms/x-vms
! 7e62ed545d17d5d3bcebc16c359e96f3  gcc/config/vms/xm-vms.h
! b0adbf71f6e5abb5bedd1d8696c9a2cb  gcc/config/vx-common.h
! 8daad6948c35677aae1adfa80d336af2  gcc/config/vxworks-c.cc
! dd693271190986e82ef7ad5d4c2afa08  gcc/config/vxworks-dummy.h
! 9a4f2e8f67edbb319d02e8d8c8b5c128  gcc/config/vxworks-stdint.h
! d02b8abd1e27ec306211859077c07e26  gcc/config/vxworks.cc
! 181f459a19593ff0e25b8675e1188577  gcc/config/vxworks.h
! 9cac07b08044cea039faf1bd9d1b18d6  gcc/config/vxworks.opt
! d55d2805d12ce9917cb284aac8570878  gcc/config/vxworks/_vxworks-versions.h
  2c7fb7482d87758a9305ce4fec4c94ea  gcc/config/vxworks/_yvals-wrapper.h
  83f08d69839ac4c7dc87a99be6c69a2b  gcc/config/vxworks/_yvals.h
  9e122a12d3e14f20967d135228bf88dc  gcc/config/vxworks/complex.h
--- 2980,5051 ----
  2ed87baf5014d1345a1142ceab80bb13  gcc/ada/vxworks7-cert-rtp-base-link__x86_64.spec
  987b48a23594fd72c3697baf88d4e628  gcc/ada/vxworks7-cert-rtp-link.spec
  d374967a9c157fd079d5b2491f43f68a  gcc/ada/vxworks7-cert-rtp-link__ppcXX.spec
! e280a30a5fa2394beaff42ee255c47b7  gcc/ada/warnsw.adb
! aae7312be3fd13722ca6f5fe0973129a  gcc/ada/warnsw.ads
! 5dba5502668dec6b627d9ad32975183d  gcc/ada/widechar.adb
! d390be42e16ca49380c6cef2f215d33f  gcc/ada/widechar.ads
! a47b8b8dc470d9aa3e21e509be2bbf1f  gcc/ada/xoscons.adb
! c639abfea0fd6ce8174c76689f8098b9  gcc/ada/xsnamest.adb
! 8e03b8475c004f3488c3b646b3ace22f  gcc/ada/xutil.adb
! 576518abce20cefac18d69412e741a99  gcc/ada/xutil.ads
! 978031793256be605b05ec556e69fc09  gcc/addresses.h
! 6104bb06e8b5a16c6679280b8bd89a47  gcc/adjust-alignment.cc
! 5d438dee0a1e7b7d8e461b07198f9f7a  gcc/alias.cc
! e1f9606817a872c9b1770a2950665e17  gcc/alias.h
! e2c04eccc631052e7aa15c27e287e593  gcc/align.h
! 889f9ffc24064f8ad2fbaf928d50d3e6  gcc/alloc-pool.cc
! aad6b6421ba955142beb58263efb7ca8  gcc/alloc-pool.h
! 2df759652e42802ef0002b46d898c45b  gcc/analyzer/ChangeLog
! 71cd762fdeee724b494e94ea479c15fa  gcc/analyzer/analysis-plan.cc
! 2400916c9f340c6914b8432d05919cec  gcc/analyzer/analysis-plan.h
! 6084312218152cf76e77ec8df68925c8  gcc/analyzer/analyzer-language.cc
! 35da98c8ba32903fc53f27c7b60c76b4  gcc/analyzer/analyzer-language.h
! f64c8df2f59288df47e7137c22b82890  gcc/analyzer/analyzer-logging.cc
! 404e6b4c6833265580638c3916610f15  gcc/analyzer/analyzer-logging.h
! 92e040f30cba506709d2f7820d084fcf  gcc/analyzer/analyzer-pass.cc
! e5ad4adec1aadc1fb52476107b0db416  gcc/analyzer/analyzer-selftests.cc
! 82e5b94760ed762832503af1f46fccf5  gcc/analyzer/analyzer-selftests.h
! 8f93d2636b6152ee9fa7a667e5450df3  gcc/analyzer/analyzer.cc
! 3a7c4e4e9b1d9fa10a4952d2096a0c99  gcc/analyzer/analyzer.h
! 1c5871f9755f92c05f13b394de25addb  gcc/analyzer/analyzer.opt
! cded5757047ead6e74730e54e18f7acf  gcc/analyzer/bar-chart.cc
! 60b27c106c9537bd1e781ae8464adf1b  gcc/analyzer/bar-chart.h
! 0a08ca261123d8fc98a5aa3b2ff58ca0  gcc/analyzer/bounds-checking.cc
! 6b6e0901473290ad319a87cda3947b02  gcc/analyzer/call-details.cc
! 245e7b9a0108f14c71f67b9a9b009325  gcc/analyzer/call-details.h
! 3189e382c5a9be7e71ebf627e0b75961  gcc/analyzer/call-info.cc
! a0e15438ec04b2556ebb112e01e89952  gcc/analyzer/call-info.h
! 2239ec787fad77a5b6dea3ca6a0620f7  gcc/analyzer/call-string.cc
! 46d32244c2de1cd5d9bdddd851210e53  gcc/analyzer/call-string.h
! c51d4fb626f56786fce68579af18ec47  gcc/analyzer/call-summary.cc
! 819c37f4afeb81a9a97415a089000223  gcc/analyzer/call-summary.h
! 8a41323aa257065885bf96dfaf8cb986  gcc/analyzer/checker-event.cc
! 095f746318c2c0b54322b39483925ef0  gcc/analyzer/checker-event.h
! d2e0b822c9f7c5bcd0cf55ce1bb05e5c  gcc/analyzer/checker-path.cc
! 9e4c31b74f0c53c83ec54d8b5e5e7fdf  gcc/analyzer/checker-path.h
! 6d1f392b0a7b3ad5fb775709ffd9d9b2  gcc/analyzer/complexity.cc
! 3c69f624c442f52947d127f78c5f0785  gcc/analyzer/complexity.h
! 89e949f41aa8f2a681b38499fa613a21  gcc/analyzer/constraint-manager.cc
! 409d6fa751305734672adc0510a6dd78  gcc/analyzer/constraint-manager.h
! 356e8f28d83330404dd8a5b5b891469d  gcc/analyzer/diagnostic-manager.cc
! f77bcbdfbc52ea12a50fef39dd640bc5  gcc/analyzer/diagnostic-manager.h
! 5056bb759da397c6e45974f84d555b21  gcc/analyzer/engine.cc
! 5fad989c6cf29a58131d954d5e869f6d  gcc/analyzer/engine.h
! b046d01a504b00ed0c8f0209ba0892c2  gcc/analyzer/exploded-graph.h
! e84037dd3458b141b35f6f718aeb1ca1  gcc/analyzer/feasible-graph.cc
! 4a03c303129be5defe21cb7525c2d5d8  gcc/analyzer/feasible-graph.h
! 174e5e626a09974301c14113f7aa2eb4  gcc/analyzer/function-set.cc
! 8b4b965355b6e6f8078aa2f58733b1c2  gcc/analyzer/function-set.h
! 88201b6dddc1371f6f47d023a6bf5eeb  gcc/analyzer/infinite-recursion.cc
! e1eef3cefe2c5c66ad3a72f4af11df7e  gcc/analyzer/inlining-iterator.h
! 4da22ec289817922154891f28955bbb3  gcc/analyzer/kf-analyzer.cc
! ed32e24c398ffb49bd829c77b37f9577  gcc/analyzer/kf-lang-cp.cc
! cf25a862be97599133dfce78fa57ee1d  gcc/analyzer/kf.cc
! d24d56ded560a10b2edc0e92d0faaa22  gcc/analyzer/known-function-manager.cc
! eba4edd647868d36322e7c38bebdde60  gcc/analyzer/known-function-manager.h
! 3d5c36ce6cdb84c3e3b900f5f2bc06b8  gcc/analyzer/pending-diagnostic.cc
! d405ae8ce33151394d8318c041553037  gcc/analyzer/pending-diagnostic.h
! 4fb578b13b9c13582515bb98a9d8a44b  gcc/analyzer/program-point.cc
! a2282f17682c81de6bbf63bb8faae034  gcc/analyzer/program-point.h
! 828c46920a8dd63084fef2b0a7791608  gcc/analyzer/program-state.cc
! 212950fc0faff93dd23ba489ec66d3b1  gcc/analyzer/program-state.h
! 624821064dcb4a4879da1c6f63792920  gcc/analyzer/reachability.h
! a6d8f7d03a8c67f25d62ce7c28bb017c  gcc/analyzer/region-model-asm.cc
! fba261679900e26a6fc2a9626ccb8fc4  gcc/analyzer/region-model-manager.cc
! cfcffee1211384fccf393a4fd2b2064f  gcc/analyzer/region-model-manager.h
! 6b215a2b0593ce9b93d92bc26c058b55  gcc/analyzer/region-model-reachability.cc
! bac0ef51d6cb9e568a105621c3595fc3  gcc/analyzer/region-model-reachability.h
! e02011caba2d56a60f9ea6d0bf66b9e8  gcc/analyzer/region-model.cc
! 82dcc67124a82c84a906aaac246fd168  gcc/analyzer/region-model.h
! a805ae3a5f4e40a3e25c774a087bd08d  gcc/analyzer/region.cc
! 080d3e83da6bdaa6d2bb7b433034f044  gcc/analyzer/region.h
! 4687dc517264a9c9464c3babe9978c1a  gcc/analyzer/sm-fd.cc
! 281c241da80afbc19464d68d9ec58cb4  gcc/analyzer/sm-fd.dot
! 0a4df09d154ac49bece0fd155d590a45  gcc/analyzer/sm-file.cc
! 799b0b58cf75d61bdf36a18def9580c8  gcc/analyzer/sm-file.dot
! 5bb98f90fbeece882226e04af09ffe6f  gcc/analyzer/sm-malloc.cc
! bf15e55ffdb8d42d8ea6f33329a44eb1  gcc/analyzer/sm-malloc.dot
! b621465e0fa31d19e84fc40b460b3264  gcc/analyzer/sm-pattern-test.cc
! 9f3d09065bd05bf19a476fc5af18c56d  gcc/analyzer/sm-sensitive.cc
! cbab4d229b54b60402326e97cc337f31  gcc/analyzer/sm-signal.cc
! 127173b38b545e9e39145503328d0540  gcc/analyzer/sm-taint.cc
! 3a191d66e39aaada43bdab4a6908131e  gcc/analyzer/sm.cc
! 1489c45be87c0a2b68d855ed3953ad55  gcc/analyzer/sm.h
! f83ba210d05f5329ca4ca2aeb3a649d7  gcc/analyzer/state-purge.cc
! 34c1ff5539fdfdcc25afa2c74dd492fd  gcc/analyzer/state-purge.h
! ffa9ab3ff70c495547abd4f0990f26af  gcc/analyzer/store.cc
! ce1502221a6b4f60b4d68e17e432e0aa  gcc/analyzer/store.h
! 4d00a8a1ae1d1e516cfa48dde565b388  gcc/analyzer/supergraph.cc
! c2f2cde735be8754015b085d20409b06  gcc/analyzer/supergraph.h
! 8ce4c3c6eb2473c657a3093fa09cbc89  gcc/analyzer/svalue.cc
! 2b6839e6b48483b78f9f7bbc3e075147  gcc/analyzer/svalue.h
! 8a66bccea7048ad36db80ad3a60556d0  gcc/analyzer/trimmed-graph.cc
! 6cc535d62619ab8fe9d621ed17dcebbb  gcc/analyzer/trimmed-graph.h
! a9cca2fc577d8b5039354046f9abf62f  gcc/analyzer/varargs.cc
! 47edda2a9e4ad848260206e8228a4ee2  gcc/analyzer/varargs.dot
! 6062e521f076f3ebecb6b7c10bc9c19c  gcc/array-traits.h
! 652c3cf62ea26ccbcbe15d6b09ee9fe6  gcc/asan.cc
! e88bf1ee507e058adecd43ef10ff557b  gcc/asan.h
! d2dc7ad6947098d57241f7b082df3982  gcc/attr-fnspec.h
! 75403fb1a76ddaafeebf05698a693e98  gcc/attribs.cc
! 910cd70bc9d3cdcaf432c9d1669b1393  gcc/attribs.h
! e174b4caa93ad41c4f53efed203ea6a9  gcc/auto-inc-dec.cc
! 5e297ee0acade8ac97fabe760b5e9ff3  gcc/auto-profile.cc
! 53e6081015db1da68c92d954c932ac53  gcc/auto-profile.h
! 340edf75f9fdacfbe681185c549b56e3  gcc/backend.h
! 2c7acdc49c294ee259cf96681120a757  gcc/basic-block.h
! 0bf2369d106e1b2a0daf5c20b8c18c1a  gcc/bb-reorder.cc
! 3ad42f3195454ddf0ad44aea8bdfa110  gcc/bb-reorder.h
! dcf82fc32dd2e8e29c5853bf4dc6fa1e  gcc/bitmap.cc
! 8b6ce913c0d62cb3d8a7c660be194357  gcc/bitmap.h
! 294ed61d52ae893dd5c09710fe945aca  gcc/btfout.cc
! bbdd0e6a2c558889d7b99c9e61ca5571  gcc/builtin-attrs.def
! cd880946aff3cd75bff1d0edafa92c14  gcc/builtin-types.def
! 8339eabb575538481e84e2e65c7e9384  gcc/builtins.cc
! 8a86b0c51f15d3cd6813b9c29784719f  gcc/builtins.def
! 92a923d816f64b2130d01c337f74afaa  gcc/builtins.h
! fb99d9b20a4a5d298812f41781431785  gcc/c-family/ChangeLog
  ea3fa1f4d7390a105fa3caab4f79aaf7  gcc/c-family/ChangeLog.gimple-classes
! cb2dd3887aec46346c8b6f2e25cd2134  gcc/c-family/c-ada-spec.cc
! de8eafcdf817fbea182e701f29a59aa1  gcc/c-family/c-ada-spec.h
! 747d2e204f111e041977a8f383beada4  gcc/c-family/c-attribs.cc
! f144232c8e61d31781c975287cc87633  gcc/c-family/c-common.cc
! 14cc2c078b45b45e351e4ee4453dffe7  gcc/c-family/c-common.def
! 5dae9e83d3de07bbde587cb0204b8f57  gcc/c-family/c-common.h
! 65028b3278739bbd2827477f5530894b  gcc/c-family/c-cppbuiltin.cc
! 3eb0b238f33b875eeedcf4ea912551cc  gcc/c-family/c-dump.cc
! 902577b245ca4efaf2dfa561b6fcbd6c  gcc/c-family/c-format.cc
! b45a3a85918a7fc67dd9ed25c98bb687  gcc/c-family/c-format.h
! 8601b945674da639ae713c6937e5edb3  gcc/c-family/c-gimplify.cc
! bf34104a64fd989a22d8b5502f957b44  gcc/c-family/c-indentation.cc
! 3234ffc53c680057ee5d3ff2ab383d77  gcc/c-family/c-indentation.h
! 078251e9ad9919f61135834da54e90a2  gcc/c-family/c-lex.cc
! 93df9aa0873ff86ddfffca340dfe26c7  gcc/c-family/c-objc.h
! 29d42f64cf0379ecb0c46b6edba3f4db  gcc/c-family/c-omp.cc
! 1fe613d2f471ea5e7c5cc28a55b63972  gcc/c-family/c-opts.cc
! 64a297825314ac3a33ed87583c63fc98  gcc/c-family/c-pch.cc
! 4e954855cc5471cec6e2f92e6029d510  gcc/c-family/c-ppoutput.cc
! e6c5f730dd701ef7973785a7c8deef42  gcc/c-family/c-pragma.cc
! 291e6dbd1f3ff17d1ba067d22eb8d6c2  gcc/c-family/c-pragma.h
! 3393a82ed74a9d1d9eb122a67a23a694  gcc/c-family/c-pretty-print.cc
! 41423bec7eaf515748c1e4cb455fd2be  gcc/c-family/c-pretty-print.h
! 0adbeaa3e205c1aba943bdbf75128ec0  gcc/c-family/c-semantics.cc
! 4db228f8d2a2a8197f03b026c662ced9  gcc/c-family/c-spellcheck.cc
! b61b11fd774225229263a3340bfa12df  gcc/c-family/c-spellcheck.h
! 8411b634e6ec8162b939e5dcb34197d3  gcc/c-family/c-target-def.h
! 049ab05c5422404998ab3673cf18a8ad  gcc/c-family/c-target.def
! f2fccfe3cc85eeb29299baf4e96dee97  gcc/c-family/c-target.h
! beb75e8a7cb114d9af708092226dc0ad  gcc/c-family/c-ubsan.cc
! 79e54a900b8b64b90c3eb82e40a758de  gcc/c-family/c-ubsan.h
! 5530d921cdae7bb1c72bc92c703c9ea2  gcc/c-family/c-warn.cc
! b4f3e9ef1f208558178dabb5418499e3  gcc/c-family/c.opt
! 9e25d532fa20a9040f4d74794f090453  gcc/c-family/cppspec.cc
! 6c751e1baf3d7c296dd2b20e431b37d2  gcc/c-family/known-headers.cc
! 8ec9a4912d8b3f7d94a11ee04da7517e  gcc/c-family/known-headers.h
! 6b3898853ed0b8ac1c9365f8e0da36bd  gcc/c-family/name-hint.h
! 78725d6bd115506bafd5753f5e1e3cd0  gcc/c-family/stub-objc.cc
! 225d538ba95c93316f930334dbbe4074  gcc/c/ChangeLog
! 99998984ca5752ab57a30960e8384032  gcc/c/Make-lang.in
! 5d00d791728697d48bdf1b6e276ce5bb  gcc/c/c-aux-info.cc
! 1c014228ffb2f2191a1ab3cbd03422dc  gcc/c/c-convert.cc
! 31601d1304b7d31c813c2a69751838c4  gcc/c/c-decl.cc
! 1d53fd8d8e52cf57a0005164f40c31b7  gcc/c/c-errors.cc
! b425749aff683118700bf07ba9eb0653  gcc/c/c-fold.cc
! 36f1771d9957e6a1622b001a02e07e2c  gcc/c/c-lang.cc
! 3e5bd36fb34468c5f3a3b04875ded56e  gcc/c/c-lang.h
! 2c0aa1a5cafc6b82712c83a6a8499b61  gcc/c/c-objc-common.cc
! 319c8e804a253f36ed22b5b45df085fe  gcc/c/c-objc-common.h
! 81ea41741fd52c3a86b1e51968065f88  gcc/c/c-parser.cc
! cb80c5b43133affc0dd1cdce71b319a0  gcc/c/c-parser.h
! 335ea162b657e6b61a17f3160590808c  gcc/c/c-tree.h
! ce131ebabfbf3c7315e39ffcf8a5b48a  gcc/c/c-typeck.cc
! ab9869768090ce9680785aa66ec30241  gcc/c/config-lang.in
! 52877b1ddcc264e0b1e414c092ad78b2  gcc/c/gccspec.cc
! 05681ad54ba0d53b5bbfab61b6f033c9  gcc/c/gimple-parser.cc
! b533a52e577cb5b931c58ea29447e7a3  gcc/c/gimple-parser.h
! 906b2b6452ced7cb3661999408b82872  gcc/caller-save.cc
! 3c0b3a048a3c3abca678219398795c6c  gcc/calls.cc
! 158b2cc7af4b3645a2fa5d18b0711705  gcc/calls.h
! 7d2bc64e4484a0e55e1b7844b91204b6  gcc/ccmp.cc
! 081acff617120e3e3c99bafb4566d3d6  gcc/ccmp.h
! 4725a43a4cb6f02f9508f8d2bcf6b102  gcc/cfg-flags.def
! 74a43796a6b87d63e7141b67e6c9f78a  gcc/cfg.cc
! d2612ae30caab0fafd85f75b5c424177  gcc/cfg.h
! 75ec4eb4154c56649f6794c70e8211d7  gcc/cfganal.cc
! d2ee82e91fa150947cec2d680d653ad4  gcc/cfganal.h
! 705401865d5d99040773177efb1a6b29  gcc/cfgbuild.cc
! 650ab513e0404ac58a19e4200f491d8a  gcc/cfgbuild.h
! f58dfd6d19e5f05cdc84465ac491c541  gcc/cfgcleanup.cc
! faf5886336423b3c1589e8b8b55f2cec  gcc/cfgcleanup.h
! fe6774e694bd837ef62720fe344c1061  gcc/cfgexpand.cc
! e0f3df5bcd51198c70302a24cfecea78  gcc/cfgexpand.h
! 8645e0e85a21570658b7cd0f8b66028b  gcc/cfghooks.cc
! 38772c7ea67be80e15630312bda73eba  gcc/cfghooks.h
! b5f4ea42b8d9f3a3c90ebad493a090e4  gcc/cfgloop.cc
! 8654bc61679ffe8ddd2bdc28d664660d  gcc/cfgloop.h
! c1c032d2fc3eeaf6c0fa41ca7fa43fd6  gcc/cfgloopanal.cc
! d019cb2ea45f5fa1f8a9cf4c24738ff7  gcc/cfgloopmanip.cc
! 19dacb8567e06231de7fe4cc82fe63da  gcc/cfgloopmanip.h
! a3d3b9e0a19270da863980e32620853b  gcc/cfgrtl.cc
! ff0d9982292c281a6b688f5197843d72  gcc/cfgrtl.h
! 7ceb652e154c56d26946dcba0de00024  gcc/cgraph.cc
! 28bcd60d7f5480e7730f95b1b8683af3  gcc/cgraph.h
! 4adf120975b7f6553fea856b9e4c1622  gcc/cgraphbuild.cc
! e12eced2454a68c176f1d69ad3c515dc  gcc/cgraphclones.cc
! bd7f29e22e5d0cd3a6b598a82053e799  gcc/cgraphunit.cc
! 40601133406a9a11490ce86068a4e987  gcc/cif-code.def
! cf7fe7388be54e205514fd0c3032a455  gcc/collect-utils.cc
! fee34544a58c3b31ff2755596f6bcc79  gcc/collect-utils.h
! a2954cb0e881d6365706d9a91c59f24c  gcc/collect2-aix.cc
! a72185fb3571a1a22bbb61fc3b7454f3  gcc/collect2-aix.h
! 9ecfab7cfbeb854828d8a0109add6718  gcc/collect2.cc
! 44030d04130f80c7a8b32788a7d2f5e7  gcc/collect2.h
! cb80b744e071259c95e671849491dde2  gcc/color-macros.h
! e2b80b721f5d66e672c4f7978b551172  gcc/combine-stack-adj.cc
! c504f00fff763e20410a1053b7da498b  gcc/combine.cc
! 043cecacdd70fa8fef961a26b00040fa  gcc/common.md
! 23f07ab4bf90cbb512abeddcbcb4ed93  gcc/common.opt
! dbdf1cd9a2b5243c1b082761a4401069  gcc/common/common-target-def.h
! 259c1705f9cffe9f4cfa777db03f4643  gcc/common/common-target.def
! af9eb41a9005138a377c5c3228fa354e  gcc/common/common-target.h
! cb86bee78570cfcfdddea72c500d6ca0  gcc/common/common-targhooks.cc
! 6931fc217063c5dacb45b4e131629b48  gcc/common/common-targhooks.h
! fc58b748aac3806aacde6dded07976ab  gcc/common/config/aarch64/aarch64-common.cc
! d983944b066a9f91d172e604162aec56  gcc/common/config/alpha/alpha-common.cc
! cf52ea7bf51ae49e7e06fa2382572eff  gcc/common/config/arc/arc-common.cc
! 84e073cf5e63cefa544a5487559115db  gcc/common/config/arm/arm-common.cc
! cd30ab3b2f8d3619c517bbbb11327e90  gcc/common/config/avr/avr-common.cc
! b6aa06bc7a7bd27c2cb491c7f4fcb99c  gcc/common/config/bfin/bfin-common.cc
! 3f4c33e47f1dd32c6a3941e0d29da768  gcc/common/config/bpf/bpf-common.cc
! 72f7ae607e7fc2c7741c3c59750bc7de  gcc/common/config/c6x/c6x-common.cc
! 4c28e69040d0254af8f04a8d52d89fa4  gcc/common/config/cris/cris-common.cc
! 4832abbd303e0b8b26f95f722c1bd344  gcc/common/config/csky/csky-common.cc
! 66b2b8dd6d88c949891c7153251430a4  gcc/common/config/default-common.cc
! de9d29214668de8ff1d3342f112399b1  gcc/common/config/epiphany/epiphany-common.cc
! f5af84006ceedb8b558effab5e966caf  gcc/common/config/fr30/fr30-common.cc
! ef4bef6bcc0fd9bc205e0372936e2e9a  gcc/common/config/frv/frv-common.cc
! 92884e3745a520bd79446127d0e0cc1e  gcc/common/config/gcn/gcn-common.cc
! e9b5eb9f763e7c9c37f0cae3b2c2b227  gcc/common/config/h8300/h8300-common.cc
! b80a0f56d2c6338d636891ae58688968  gcc/common/config/i386/cpuinfo.h
! 8ba14d3f29837e4596bc4fe324588af0  gcc/common/config/i386/i386-common.cc
! 95e8b90d0bb17c9c9fbff78ad1826e06  gcc/common/config/i386/i386-cpuinfo.h
! 4731966ebb40e4a624fc35f7076c0036  gcc/common/config/i386/i386-isas.h
! dd1706199d92845c343787ef21d4905f  gcc/common/config/ia64/ia64-common.cc
! d927e055cae5a7415d9a5837fd8dee27  gcc/common/config/iq2000/iq2000-common.cc
! 7f8b927f124783ae4cdee22ed57aee36  gcc/common/config/lm32/lm32-common.cc
! 41d9d01694d5c853747e6ba83ec37056  gcc/common/config/loongarch/loongarch-common.cc
! 3449bea6ef097f9b427efa9390197472  gcc/common/config/m32r/m32r-common.cc
! 602fe7c954132e48c3ed603a07932711  gcc/common/config/m68k/m68k-common.cc
! 8978f30fb8a5d81cacd5278a53e2fd12  gcc/common/config/mcore/mcore-common.cc
! 021bab1c98825fb1474aa0acfa11a210  gcc/common/config/microblaze/microblaze-common.cc
! 5cb05f682793316dbd1c40981dcef3da  gcc/common/config/mips/mips-common.cc
! 27278cd6eafbc92f951228b55d4a971e  gcc/common/config/mmix/mmix-common.cc
! 5bbc8f6ca4c6ab305133e527aa31d5f3  gcc/common/config/mn10300/mn10300-common.cc
! f457bb5638d934a151e7edc46827a64b  gcc/common/config/msp430/msp430-common.cc
! 204372fbc82b4058ead1ef512cf163e6  gcc/common/config/nds32/nds32-common.cc
! f090baa3eeef4f208d7d913eabec5765  gcc/common/config/nios2/nios2-common.cc
! 734965276e103515c51e4c5536c9fd07  gcc/common/config/nvptx/nvptx-common.cc
! fd9a622518df22b26e1d4c9b056de562  gcc/common/config/or1k/or1k-common.cc
! d7323dce1d39c8223cfe9d5e63ab846a  gcc/common/config/pa/pa-common.cc
! eaca975168796f157689ee9c7886096f  gcc/common/config/pdp11/pdp11-common.cc
! 0c355defac80c5da069d598be8a62dc9  gcc/common/config/pru/pru-common.cc
! e317bd422866360a93e2539362fedb14  gcc/common/config/riscv/riscv-common.cc
! a3c48e330c3cebe2d63f2c6fa396cfbc  gcc/common/config/rs6000/rs6000-common.cc
! 420ccb27cc2fb142e68507d18e2c2867  gcc/common/config/rx/rx-common.cc
! ef3b5f7ac092d1a20fbc3f6a59c9b390  gcc/common/config/s390/s390-common.cc
! 8c9d3545d6757160ca523f22c7631ed7  gcc/common/config/sh/sh-common.cc
! 9ecb8529886dda4cec275564b100b6ca  gcc/common/config/sparc/sparc-common.cc
! 0b63749d5d177dcabb7ba2185c66e872  gcc/common/config/v850/v850-common.cc
! 5aac2b9e8228dcedc200f814f094efd4  gcc/common/config/vax/vax-common.cc
! 5a05722a094c6d8561854ab9f61af260  gcc/common/config/visium/visium-common.cc
! fd0d3682ed953a3e7bbf135987dba0c6  gcc/common/config/xstormy16/xstormy16-common.cc
! bbb86dc26326c9e21536b29093ef0ccd  gcc/common/config/xtensa/xtensa-common.cc
! 08b08b7d10f25136197b98ebe582137e  gcc/compare-elim.cc
! c29a5051809c4038f65af7557c1e9fcd  gcc/conditions.h
! d343cb4b75d4bf1ab6e7001d3ce082eb  gcc/config.build
! c0ce52ae0dbbbd111f1e96110a420067  gcc/config.gcc
! b662bae3a7d9c705974244dea91c4cd2  gcc/config.host
! 8da4fc9ae08876e38bb09cdd25570478  gcc/config.in
  8e697813dc96ca90f5d0f4c196efe2cc  gcc/config/README
! 6e675f729ec3b60e4084e37271317fd6  gcc/config/aarch64/aarch64-arches.def
! 03c184272cfa0a1990573e269860d86b  gcc/config/aarch64/aarch64-builtins.cc
! 5261e48fdbbcfcfec5dd15cc3777a339  gcc/config/aarch64/aarch64-c.cc
! 2d006aaa471ab025cdc16bfe082c0dad  gcc/config/aarch64/aarch64-cc-fusion.cc
! ac2537b14908595ef01f03ea88895736  gcc/config/aarch64/aarch64-cores.def
! c92fe8de39f59c29808fbc4d06bb296a  gcc/config/aarch64/aarch64-cost-tables.h
! f36cfc0d8235a8638c1c878f0a78f3b9  gcc/config/aarch64/aarch64-d.cc
! 412f7e5d8e9b61050a72b7115a3b0849  gcc/config/aarch64/aarch64-d.h
! aa79e6c435e5a0665d38133b42f5d51e  gcc/config/aarch64/aarch64-elf-raw.h
! fdc449f6d081929b3aac795e0f3fdb8b  gcc/config/aarch64/aarch64-elf.h
! f3af4a840fabb36f7cfd20df12d20cd8  gcc/config/aarch64/aarch64-errata.h
! c078babb011318067b0732afd220560c  gcc/config/aarch64/aarch64-feature-deps.h
! bcce9f393a1c20a7530aee1fb89f531d  gcc/config/aarch64/aarch64-freebsd.h
! da1c20bb52f8669f737e6852bf618530  gcc/config/aarch64/aarch64-fusion-pairs.def
! 4595dd7acaa56b83651a39124c9c7540  gcc/config/aarch64/aarch64-ldpstp.md
! 836c7bac12f6d83fae19773b92f72bd7  gcc/config/aarch64/aarch64-linux.h
! 9a775e661e3e8aa11568f29ebef0f1a4  gcc/config/aarch64/aarch64-modes.def
! 146b51cf983ab44a878c1351b8f4c6aa  gcc/config/aarch64/aarch64-netbsd.h
! d359a88302c0b2bb716e8b617f4b2350  gcc/config/aarch64/aarch64-option-extensions.def
! 8bbbeb4756cec87eab1d89246bd01f25  gcc/config/aarch64/aarch64-opts.h
! 91176342d31ac6307d443997a999b243  gcc/config/aarch64/aarch64-passes.def
! 0d59aea3deef2078e807310069424c6f  gcc/config/aarch64/aarch64-protos.h
! 23dc6883d113e3276cfc51cd7602663a  gcc/config/aarch64/aarch64-simd-builtin-types.def
! afd3ea5ae83178ba9ef0abc732623c75  gcc/config/aarch64/aarch64-simd-builtins.def
! a8aad92f02ba8729f4cd1b8b3c4efc5f  gcc/config/aarch64/aarch64-simd.md
! 0fd01f881e8207e1d6c6521e7122e0a0  gcc/config/aarch64/aarch64-speculation.cc
! 3bb5af31e0168e86e3ebab238957919c  gcc/config/aarch64/aarch64-sve-builtins-base.cc
! 59c3c335a6c6e57c547fb2e9fef3eef9  gcc/config/aarch64/aarch64-sve-builtins-base.def
! 33bd4a836a53e47b04b4c46ba55098c9  gcc/config/aarch64/aarch64-sve-builtins-base.h
! 768e4d9fba61f6fed2d93aa6876abcc2  gcc/config/aarch64/aarch64-sve-builtins-functions.h
! 95fba8f677af6b5ce473993252b2e591  gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
! 33225ba0ccaf7cef5d184301b71d91f2  gcc/config/aarch64/aarch64-sve-builtins-shapes.h
! fb2af51188d71aa0ad4edbb97be3fe41  gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
! 94a640c820db6e5f2bde180059533e41  gcc/config/aarch64/aarch64-sve-builtins-sve2.def
! 458403098e98fa807f0a9df51c118ca1  gcc/config/aarch64/aarch64-sve-builtins-sve2.h
! 45d75fc8775a4aa44d49b8571fdf7b29  gcc/config/aarch64/aarch64-sve-builtins.cc
! d944ba1876e827e8299a96fc31433c22  gcc/config/aarch64/aarch64-sve-builtins.def
! 4ec15579b7cd3388c4d8eb7117540e35  gcc/config/aarch64/aarch64-sve-builtins.h
! 1fe26d857090234eb7ecd771b092f5fe  gcc/config/aarch64/aarch64-sve.md
! 539c5094467274e03fa1ea0087d02d65  gcc/config/aarch64/aarch64-sve2.md
! 9f9353410944e1ba22a73985a4dcdd50  gcc/config/aarch64/aarch64-tune.md
! 59a2e50c10aa66ea9757d8594c3cb6dc  gcc/config/aarch64/aarch64-tuning-flags.def
! 703c876523c318a07e43cdfe4a0a2bee  gcc/config/aarch64/aarch64-vxworks.h
! d4e6d4f6f6f3879105bf78c90a7f5cfd  gcc/config/aarch64/aarch64.cc
! c369d5d10ed8c9df75969e5322e3db0c  gcc/config/aarch64/aarch64.h
! 91c7e7602b45001238980d718751ed82  gcc/config/aarch64/aarch64.md
! 27b3d58e07a631b044b51b2920e36271  gcc/config/aarch64/aarch64.opt
! f1bcc6538ffe71327d8423d5ece141dc  gcc/config/aarch64/arm_acle.h
! 037341ded31b1b6e3ab4e48e63f32185  gcc/config/aarch64/arm_bf16.h
! 94a948e86b751554c373df078fa743d6  gcc/config/aarch64/arm_fp16.h
! 2055ef8c01eb6c9b2f631adba1ca0080  gcc/config/aarch64/arm_neon.h
! 986e88e2f91801a99c68c9caa2a129d6  gcc/config/aarch64/arm_sve.h
! e0d82c4a6ccdb783c299ef853b07a85a  gcc/config/aarch64/atomics.md
! 2076279934af8fccc1c16c1a8e563aa1  gcc/config/aarch64/biarchilp32.h
! 69dd4b2a05ab2311a8b4ad2b29ecfa6e  gcc/config/aarch64/biarchlp64.h
! 5d97853bf44cafd1dd5a692c7ecd6d9e  gcc/config/aarch64/check-sve-md.awk
! 13907bf624e4b4301887700631c9e355  gcc/config/aarch64/constraints.md
! cb3895773e41ffc0b75ab3f97389f5d5  gcc/config/aarch64/cortex-a57-fma-steering.cc
! 71f38a11477d951dc128122e18895417  gcc/config/aarch64/driver-aarch64.cc
! 1ccc0238da5ced89db717f38da7987aa  gcc/config/aarch64/falkor-tag-collision-avoidance.cc
! 6ea648b863a85cca380d5385687c7249  gcc/config/aarch64/falkor.md
! c89c7b8fec07c5b75e3628a6ee822c1f  gcc/config/aarch64/fractional-cost.h
! 47ed472d8ab7676239a8c2afaee00d0c  gcc/config/aarch64/geniterators.sh
! 02eca4bc365f9478480ced1203a5fbf8  gcc/config/aarch64/gentune.sh
  86eaf33edeb885c2c9ae2a9825879e59  gcc/config/aarch64/host-aarch64-darwin.cc
! b638f297b47e48ec8ffd6d671c876392  gcc/config/aarch64/iterators.md
! 3ffffea8efebe8709a5fb79b70ebef56  gcc/config/aarch64/predicates.md
! 0cba3aa930062f2526baf26c05de99ce  gcc/config/aarch64/rtems.h
! bfaa30c9cf04a5f4960f9507fb6c93ed  gcc/config/aarch64/saphira.md
! f8401c41771320e42d82d904528f30d4  gcc/config/aarch64/t-aarch64
! b13fbbb8bc5ad0779c37bd8922986739  gcc/config/aarch64/t-aarch64-freebsd
! 1833a05cc15835bd438ca7c0ac5e9a3c  gcc/config/aarch64/t-aarch64-linux
! b13fbbb8bc5ad0779c37bd8922986739  gcc/config/aarch64/t-aarch64-netbsd
! 257426d7678bfa2fbdd578bf4207e214  gcc/config/aarch64/t-aarch64-vxworks
! 2671580d2cd97f3bb851ee3ea005d652  gcc/config/aarch64/thunderx.md
! ed9df866f7edea86e3a9c21812574f51  gcc/config/aarch64/thunderx2t99.md
! 3134b09b8ad99a96f925eb2ab4e7da25  gcc/config/aarch64/thunderx3t110.md
! cd9ec5d7e095ec94526157a6d9ec93eb  gcc/config/aarch64/tsv110.md
  88acf4a83af801cf69b1a23964f4c67f  gcc/config/aarch64/x-aarch64
  a07ee362a4961e9d41cb0ab83553de74  gcc/config/aarch64/x-darwin
! 6565aa0e22b20e2a9485e9d3f2e6e71a  gcc/config/alpha/alpha-modes.def
! 53e995fef3331a988f2b320316d159f1  gcc/config/alpha/alpha-passes.def
! aff485c72ebe107fc7c9599affeb2726  gcc/config/alpha/alpha-protos.h
! f5bfb4694290f29e93a9c2b12d4d9805  gcc/config/alpha/alpha.cc
! 446505a9b6a502168faad76aec44808e  gcc/config/alpha/alpha.h
! 3938a9d967b17b9bdfdba71e0d3bcf8e  gcc/config/alpha/alpha.md
! f6ac905f9f792ff6b01903c1e1a9c8c0  gcc/config/alpha/alpha.opt
! f7fa0546a73c06f853e5f9f9a1c1e0b6  gcc/config/alpha/constraints.md
! e0f40b5bfbc064296f490ee0452a7c6e  gcc/config/alpha/driver-alpha.cc
! 68b07461f0b20c6f7a8b740b1b090bab  gcc/config/alpha/elf.h
! 76dbc2f9ee0598fe4cb6f4593a18f3ca  gcc/config/alpha/elf.opt
! 1238edd224e1c6969def31c7265a39c8  gcc/config/alpha/ev4.md
! 3c2649edfb87acdb158622213f4beee0  gcc/config/alpha/ev5.md
! 3e11b46d6ef93a0721e4533e57000615  gcc/config/alpha/ev6.md
! 323a0ab4d399e25867e0d652981296ad  gcc/config/alpha/linux-elf.h
! 3d91718d29f4da8e4d1326d62a0b4792  gcc/config/alpha/linux.h
! 8d6f9aa171920cee56c102ffbfb205b5  gcc/config/alpha/netbsd.h
! 4075675b2faba714a429d47412fb1539  gcc/config/alpha/openbsd.h
! af36894cdf865cf5dcc800ed285fe79f  gcc/config/alpha/predicates.md
! 25df3ffb7ab01bb56b4723ed9a97d10a  gcc/config/alpha/sync.md
! a096ab4161f729079c0fd149934c5b5e  gcc/config/alpha/t-alpha
  6e8dd648b9668f18b1dfd9f1203c9885  gcc/config/alpha/t-linux
! f9c3f1e0b74bc195458d82f5abc17b8e  gcc/config/alpha/t-vms
! fcef7c9d97aa024585c78df87c0c12ed  gcc/config/alpha/vms.h
  b3c50e1f46a9bdacf84333c01cb8ec66  gcc/config/alpha/x-alpha
! 488a89436b1885606fd9724942a1b35e  gcc/config/arc/arc-arch.h
! bf27aebcc079431d639962fd79fa8fa2  gcc/config/arc/arc-arches.def
! 65fdde55320a9b719ca577cdf817b18c  gcc/config/arc/arc-c.cc
! 547bc8393f60800315bbfa33dc45776e  gcc/config/arc/arc-c.def
! 6d063f9a3a54f2e958d5040786dc49c2  gcc/config/arc/arc-cpus.def
! 9c4772413f9895f55a6110b4dd4b1500  gcc/config/arc/arc-modes.def
! 1a4368486cdf41ab84e3056cc729a797  gcc/config/arc/arc-options.def
! 5fba547c5dc5931b194cd3f290973d5a  gcc/config/arc/arc-opts.h
! b17178668bfa12ad9307406aca1faace  gcc/config/arc/arc-passes.def
! 0ebbb1becd4dfef7a00df66b7a46e953  gcc/config/arc/arc-protos.h
! 751b7f6b5b81abb81d75c5af0c3093c7  gcc/config/arc/arc-simd.h
! 9385817a3443d22f5d8ff389eb2fab65  gcc/config/arc/arc-tables.opt
! 6a27f4df00bf129c2a49154412644c12  gcc/config/arc/arc.cc
! e1f5520b7247550fb08ef72d131490ab  gcc/config/arc/arc.h
! 8dc7332c9a2687c43ddc1c96d4dab8d1  gcc/config/arc/arc.md
! cd858ee590fe991287a78c891cf2115c  gcc/config/arc/arc.opt
! 3ad64ff532deb8a9673ba5bbcb468127  gcc/config/arc/arc600.md
! 591b14f706fd5046f96298674fb91688  gcc/config/arc/arc700.md
! 2ae33b1b1c6ffbcd60c63a82a75fb9e9  gcc/config/arc/arcEM.md
! 9e5970cdb9a22045b2dc2c4b846a63a1  gcc/config/arc/arcHS.md
! e94d1cc5c247dbcba24791eaa6b15c79  gcc/config/arc/arcHS4x.md
! 572a5cc163fddcc751e3abe8fd6a106d  gcc/config/arc/atomic.md
! 463a0cde34402d6b2d7a8181828529b9  gcc/config/arc/big.h
! ec6216a9d898937e176604598271e455  gcc/config/arc/builtins.def
! 9fd1714d22a63ec63dc4274c13875629  gcc/config/arc/constraints.md
! 52c775008c398e80ddf757617f07133a  gcc/config/arc/driver-arc.cc
! 839d107b60bede70569e0fe80b062df2  gcc/config/arc/elf.h
  255d583e6d23d9cbed1614263d159a1b  gcc/config/arc/fpu.md
! 469cd19791d794436de5f5f708548e29  gcc/config/arc/fpx.md
! 54014014165c4f334db056379ca63ab9  gcc/config/arc/genmultilib.awk
! 17096c6bd9ed887614e5b45969c387d0  gcc/config/arc/genoptions.awk
! da2a4e1909d513619be20657791f8cc0  gcc/config/arc/linux.h
! 6bc9f2c2c9f9705ad16aa321baef5c87  gcc/config/arc/predicates.md
! ff0aa36e9bc7748727e1184f18c119f9  gcc/config/arc/simdext.md
! 3388669ae6a8bea6285b93a784c19011  gcc/config/arc/t-arc
! ecc6706c3bc146b03c852ebcd5ad175b  gcc/config/arc/t-multilib
! 86a236d66b1cae8670990b1e08b30817  gcc/config/arc/t-multilib-linux
! b1bfb621f3f29a159c8650f3647fb4b8  gcc/config/arm/README-interworking
! 07f99dc0baa703ab076108b6e77054b1  gcc/config/arm/aarch-bti-insert.cc
! ca63c4366e212243c7df9824bdd68fe7  gcc/config/arm/aarch-common-protos.h
! db65e82cee423509d0be6685d5ecba68  gcc/config/arm/aarch-common.cc
! 5c6bfb59d5d81b0a6ff419d96bd362ce  gcc/config/arm/aarch-common.h
! 7f436ffa505547298b395cd6c9ec0b66  gcc/config/arm/aarch-cost-tables.h
! 7ee04988275aa4b7a25fb2feb6eabc83  gcc/config/arm/aout.h
! 1db373d54152af468dd305be450e7bd1  gcc/config/arm/arm-builtins.cc
! 29d74474ed17edc15e48db1b64adb2c5  gcc/config/arm/arm-builtins.h
! c993c632c370d6cc88ac464888ab2144  gcc/config/arm/arm-c.cc
! 4b061521832370a4d57af48a6a4607a9  gcc/config/arm/arm-cpus.in
! 6f0a1fb7d932c6780f07e9ad4aaca5ed  gcc/config/arm/arm-d.cc
! 1584b4f2e7943ad5335720be7ddd9598  gcc/config/arm/arm-d.h
! 067fff54a8f3d4697aa4086ae0a05613  gcc/config/arm/arm-fixed.md
! c0dc86b3481cd0647e619cf0306f7186  gcc/config/arm/arm-flags.h
! 28ca7e8ad93c9a282432883362bee779  gcc/config/arm/arm-generic.md
! 930a49224eb7b12c277288c30728ed7d  gcc/config/arm/arm-ldmstm.ml
! add542f5904e67e032c6773e4e0419e9  gcc/config/arm/arm-mlib.h
! 98ac166693410cb2c583b7f66d27c68a  gcc/config/arm/arm-modes.def
! 4632e14f9b9406fd5c2a5c610a8e4331  gcc/config/arm/arm-mve-builtins.cc
! fb7e79a24a6fc10abe71d89c8eea2695  gcc/config/arm/arm-mve-builtins.def
! 17ef96859270b9bcb1911b14dc2f355e  gcc/config/arm/arm-mve-builtins.h
! fec195815e161a958d804dff02373640  gcc/config/arm/arm-opts.h
! a66f3c594c6fc329800e3fb836fdfd26  gcc/config/arm/arm-passes.def
! 38803f192ea6370abe161ef10e0b1a80  gcc/config/arm/arm-protos.h
! 604d3b4e6182f09e4a772f53ed92d704  gcc/config/arm/arm-simd-builtin-types.def
! 0e7b2ceea31abf677030625bec385ac3  gcc/config/arm/arm-tables.opt
! 5a144b12347f9e5cd1b3b8c2fcf8a8a3  gcc/config/arm/arm-tune.md
! 753a9c781f0df4ee0d1c924d44408ddf  gcc/config/arm/arm.cc
! c14964f7e41f42d7c9bf3b5b0b556ebf  gcc/config/arm/arm.h
! e0cb5e2d9d076996783cf1c0a88675cb  gcc/config/arm/arm.md
! cf127021475a9bc9dca6dabb24611b52  gcc/config/arm/arm.opt
! ae0d6a7918a07a46e029c0586ebfd584  gcc/config/arm/arm1020e.md
! 411234d30435fe643f2aea88d2a73e8c  gcc/config/arm/arm1026ejs.md
! 7f49d46f824488f7bdd015d23d8f802c  gcc/config/arm/arm1136jfs.md
! 59473ee500695fdd1ff05006d60a3848  gcc/config/arm/arm926ejs.md
! b6c98c64a8f1a6f1b78d2afe227937bc  gcc/config/arm/arm_acle.h
! df69a8be574605f025ea19dc33d19fbc  gcc/config/arm/arm_acle_builtins.def
! 0eae0de3bf3cea54f2364e976143a87a  gcc/config/arm/arm_bf16.h
! 4acb9461296ac7345818fa91dce849ab  gcc/config/arm/arm_cde.h
! 7e6d9928423c323cde4eca1cfab9306d  gcc/config/arm/arm_cde_builtins.def
! dfc83255445673e1d6614fe8c8b5e6c2  gcc/config/arm/arm_cmse.h
! d6fef70ace0ae4ee8c79342bdd439e8b  gcc/config/arm/arm_fp16.h
! 86e037801f8775d814736e292d3bac3b  gcc/config/arm/arm_mve.h
! 70355c5056697a2abb28cf3390269afb  gcc/config/arm/arm_mve_builtins.def
! 972ecc9a7f1d9ef1cb9957095e0de3bb  gcc/config/arm/arm_mve_types.h
! 05a32396895a46991ff4b4cee44c31da  gcc/config/arm/arm_neon.h
! 0cc2962c49dec12eb6d5a69963c371ae  gcc/config/arm/arm_neon_builtins.def
! 84ecce562f7cb7b7cc93005aac1c1017  gcc/config/arm/arm_vfp_builtins.def
! 79ab104de3312f2b4cf0f67d914a2d2b  gcc/config/arm/bpabi.h
! 65a7ab5fcf7564784afb364788a4283b  gcc/config/arm/common.md
! d96e9381e122272e84276f24593da228  gcc/config/arm/constraints.md
! f6d76c35442b52381ff0dcd26efa83bf  gcc/config/arm/cortex-a15-neon.md
! 15f1c652045e6f032a1195b533ddb7ab  gcc/config/arm/cortex-a15.md
! 0f5b810c73bc341aee5e91fda44872a5  gcc/config/arm/cortex-a17-neon.md
! f1aa2053e0f54c0841f84986c2dc993a  gcc/config/arm/cortex-a17.md
! c24ca7ee2af7320414515bc61b949338  gcc/config/arm/cortex-a5.md
! 3097561328c10a36873d09981447f61c  gcc/config/arm/cortex-a53.md
! cd22dccd2f17aac9158028a09c2574a3  gcc/config/arm/cortex-a57.md
! f00fd170806fbcfd68663132b6b2b247  gcc/config/arm/cortex-a7.md
! bb0c61be0991ac39c05203f9fd56a36b  gcc/config/arm/cortex-a8-neon.md
! aa357fdebecf7f5f07d338bd4dd995d4  gcc/config/arm/cortex-a8.md
! e9518436e24007ef524142a934131672  gcc/config/arm/cortex-a9-neon.md
! 95fd5d849f6c5f9ab37a5aa3833b1116  gcc/config/arm/cortex-a9.md
! 5b5f511d118f7b1468e034e229c3a2f2  gcc/config/arm/cortex-m4-fpu.md
! 220b246afebc32ae5001f083785acb4a  gcc/config/arm/cortex-m4.md
! a4ed1a0f246682f8d51745c5b4a776c7  gcc/config/arm/cortex-m7.md
! 2a56d3aa33a63fc835640fd001c26ca9  gcc/config/arm/cortex-r4.md
! 0053da9e67f25bdddb1e584497f8a4bd  gcc/config/arm/cortex-r4f.md
! a6573f71c694ab598402b0d67c91609b  gcc/config/arm/crypto.def
! f00be1b6c44deb931ecc7cdf2238d651  gcc/config/arm/crypto.md
! bd05195d3f12420fad726b333d7a8192  gcc/config/arm/driver-arm.cc
! 8741e6b2ebda22d190749f330520e95d  gcc/config/arm/elf.h
! d8fbc01c1b1e2ad8f809a64cf588a705  gcc/config/arm/exynos-m1.md
! 01aba8e6f90716f42b42f853b9bb1fa9  gcc/config/arm/fa526.md
! e104a0a4449c8d71cd7bba42a336b2d1  gcc/config/arm/fa606te.md
! 77cb5c60fe53c88c25353346c7b608c8  gcc/config/arm/fa626te.md
! db1d888a13c8d3fe34e5276ce2819975  gcc/config/arm/fa726te.md
! 4ca792540ddb2c72f2d995c08d4223da  gcc/config/arm/fmp626.md
! 36a5628abd5fe7376df7e45729ca3fb4  gcc/config/arm/freebsd.h
! 3513a27a77451eee41b1d9a273634a6f  gcc/config/arm/fuchsia-elf.h
! aaf960f6a664546f0a30d21b35065302  gcc/config/arm/iterators.md
! ca361a03f818d15e0a9b6f7f79074713  gcc/config/arm/iwmmxt.md
! b56ab606861fed99a1573cdaf0ecbae9  gcc/config/arm/iwmmxt2.md
! d43b414f86a2fd389cf14e277c49ff2b  gcc/config/arm/ldmstm.md
! f9fe823fe08db8d96747679c884a5fbd  gcc/config/arm/ldrdstrd.md
! a753bd7ca5713decc30657e2cc8b7c30  gcc/config/arm/linux-eabi.h
! e45b1532fdeb51e5fe9fb275034b486f  gcc/config/arm/linux-elf.h
! fcd6b308d68cd7bc641bb91e473518bf  gcc/config/arm/linux-gas.h
! e2efbd2171ce4a6433002f5b9dabc4e6  gcc/config/arm/marvell-f-iwmmxt.md
! de8cd2160d601b4afb431254b804f705  gcc/config/arm/marvell-pj4.md
! be508a7c9d8bb071759bff618b2fbc2c  gcc/config/arm/mmintrin.h
! a1f76518759f70342953d95c1aedd222  gcc/config/arm/mve.md
! 86236a4f68353237e85467077b85fa66  gcc/config/arm/neon.md
! e092dc54e5e4e06263edfb3ec84d76af  gcc/config/arm/netbsd-eabi.h
! 6accf4d7d44501880bfd48b1eb70b05e  gcc/config/arm/netbsd-elf.h
! 70de61044d28e1a7d681e20415c69aeb  gcc/config/arm/parsecpu.awk
! 82f0e6d04ecb3666d35f08d79b77e9f8  gcc/config/arm/predicates.md
! 30753649d7ce578d7ddd26de429efda7  gcc/config/arm/rtems.h
! 547a0b07ca3a45b0c1471683ce4dfce9  gcc/config/arm/semi.h
! 310ae1480f31a67e5eb0b7042c1b9048  gcc/config/arm/symbian.h
! 19dd342c6042f83a2b293f7cd01b551a  gcc/config/arm/sync.md
! 5fa8ac854dd2c25ac5209eb919ac5bc5  gcc/config/arm/t-aprofile
! ac7a93ec9fe5b9530ac2f4477f8c6f20  gcc/config/arm/t-arm
! f5e458f99cfd08e756dd0bc40d7b9513  gcc/config/arm/t-arm-elf
  4dc427c456af5e56b1ac39bda8969af6  gcc/config/arm/t-bpabi
! 0c5fe8f8839feada333352fb1580d8f9  gcc/config/arm/t-fuchsia
  e3950ec6bd159734835f8f8fb143efc6  gcc/config/arm/t-linux-androideabi
! 735b618ba351ed0b8899d7b8bcb94f7e  gcc/config/arm/t-linux-eabi
! 687c0e473a8357eb9bbdf5b628db1fd7  gcc/config/arm/t-multilib
! dd332b5c4bf7f5818c7f79cc3af2ceb0  gcc/config/arm/t-phoenix
! 3c5684b96d4856f15396bf751735a810  gcc/config/arm/t-rmprofile
  c434e99f4fc47fd32ffab26fbeea8464  gcc/config/arm/t-rtems
! 99532a3b480860f7a66fd99e84508362  gcc/config/arm/t-symbian
! 951be86a80be890746abaaf44836bd12  gcc/config/arm/t-vxworks
! 3f0d4ea121f03e0f25da9fbf40fda7c7  gcc/config/arm/thumb1.md
! b864052b21701670ce016e2bf0220ed6  gcc/config/arm/thumb2.md
! 828cfc365756bb6e28d16660a2722f18  gcc/config/arm/types.md
! 8f644b0d696c8000b5b31ac50912783f  gcc/config/arm/uclinux-eabi.h
! 53ad55adc5a9fd90930c0335e26244d8  gcc/config/arm/uclinux-elf.h
! e7e7ef073cb669f87b1c3d19a818da5f  gcc/config/arm/uclinuxfdpiceabi.h
! 81115de2baf547c45bac2d5a9351d0d1  gcc/config/arm/unknown-elf.h
! ba045ad86a2d928edec4dd73916e3bfe  gcc/config/arm/unspecs.md
! d3f86ea670553a63589dd121a82deda4  gcc/config/arm/vec-common.md
! aac3059ad88c8949ce9d188e2f74a73e  gcc/config/arm/vfp.md
! a373ca0dfe835fe420a8d470352225d5  gcc/config/arm/vfp11.md
! 0c48cf1cdfe34e99dab3413a702c4b55  gcc/config/arm/vxworks.h
! 19d25b9fb05789a755ec49d65b5d6fcd  gcc/config/arm/vxworks.opt
  8bb1a840fb87b138c620682ccad6aee4  gcc/config/arm/x-arm
! 6557b7f6ab628dc278de34a967b55c6f  gcc/config/arm/xgene1.md
! c06375fedec56db8bdb1195c9a2080cf  gcc/config/avr/avr-arch.h
! 381efaebb87fd07e32734f6e3b160252  gcc/config/avr/avr-c.cc
! e7d437ddab475cde666ae68d62c0e322  gcc/config/avr/avr-devices.cc
! edecb515c27fca851226217f008bf639  gcc/config/avr/avr-dimode.md
! 708f772e2588821bfa91118474a89d0a  gcc/config/avr/avr-fixed.md
! c3ab3d8980033cd869c1c27b318115ce  gcc/config/avr/avr-log.cc
! 19333eea3074ad82cd12a01c285f27ba  gcc/config/avr/avr-mcus.def
! 69b36d3d75fa8c748a6f1c843d6888f7  gcc/config/avr/avr-modes.def
! a447b425341582cb8ae67c753e0acc57  gcc/config/avr/avr-passes.def
! 1e4dca322602a4f8e603be169d6bcfe7  gcc/config/avr/avr-protos.h
! 55c51229f13ced0bdddbfd397c9a57d4  gcc/config/avr/avr-stdint.h
! a7b704863da0e474bbd60e6613fda825  gcc/config/avr/avr.cc
! 04926666a46570c47a3a09b87eb42001  gcc/config/avr/avr.h
! 852bb1888c3ab6ca8a1eaf23656f1289  gcc/config/avr/avr.md
! 992bc72e7412c260c381c794091a4a63  gcc/config/avr/avr.opt
! d5ca1928fb0eef4a39e419faa25782b4  gcc/config/avr/avrlibc.h
! 82e55abb13cdee932b88cb4c074f76fe  gcc/config/avr/builtins.def
! f0e1d9a19216a8bcde50abf65725fb4c  gcc/config/avr/constraints.md
! 905139871da55857966ac5fdab9d0ce2  gcc/config/avr/driver-avr.cc
! 828f146c096d2950c6ab263bc3818e13  gcc/config/avr/elf.h
! eac5e28984d593928e1e3adce65797e4  gcc/config/avr/gen-avr-mmcu-specs.cc
! bcef8a3e0aed8ec9bca46e7c98959588  gcc/config/avr/gen-avr-mmcu-texi.cc
! b66a49b68d591a6c0b7af5fc6a368c25  gcc/config/avr/genmultilib.awk
! 49d8ff83524ec25acfbeb05c3c1e23c6  gcc/config/avr/predicates.md
! 55f61938445efff9a372e6135a536342  gcc/config/avr/specs.h
! a90b049a5422ac5aa92130f8d01d1a39  gcc/config/avr/stdfix.h
! 5f9b9e751722dbcab353617d7f7521a1  gcc/config/avr/t-avr
! 17266d6ea4ed538b3d9b230711b7213f  gcc/config/bfin/bfin-modes.def
! 7d02e96e590a23cf552742256e6b40fd  gcc/config/bfin/bfin-opts.h
! 810d6fad9e530e06b117bb7a07a62e4a  gcc/config/bfin/bfin-protos.h
! aa36a5018e8544e8de3af92a62a7b06b  gcc/config/bfin/bfin.cc
! dc55459717f652bde791724f7b8039cb  gcc/config/bfin/bfin.h
! 075a0db1ed6c90ea423c7a0b4b5e661b  gcc/config/bfin/bfin.md
! 9b542f2f1ad2911350fbc8a7c24f057c  gcc/config/bfin/bfin.opt
! 3b42217f240addb4b11d91dc6319d6d5  gcc/config/bfin/constraints.md
! 0bc2a303988768893003637d9e2a6840  gcc/config/bfin/elf.h
! aa213aa8c02fdc9ec36c106ba3b045fd  gcc/config/bfin/linux.h
! 67a604eb0da33c19382fa98e9b079671  gcc/config/bfin/predicates.md
! 0a4cbe541bfd49ad024761acfc63c7c5  gcc/config/bfin/print-sysroot-suffix.sh
! 49f8d709dbe2a67ebf0ee65b0c8e0223  gcc/config/bfin/rtems.h
! 4ddce57f5057a2cdc0cdc991b8f6f656  gcc/config/bfin/sync.md
! 7ae51ed04a026f2a7d735498f228aa62  gcc/config/bfin/t-bfin-elf
! 82b9d2d8ef06f890114b03ebe61bf1b6  gcc/config/bfin/t-bfin-linux
! 632189c422f7384251fc690c3c96535c  gcc/config/bfin/t-bfin-uclinux
  6f4817f759fcac5ac27233ee451780a6  gcc/config/bfin/t-rtems
! adbd8828f9b4c2334f595a5f3abeb257  gcc/config/bfin/uclinux.h
! 0c0d1f8641917d84b02511efddc6e9fb  gcc/config/bpf/bpf-helpers.h
! 165525062339406acd3268c8ef5b7ca8  gcc/config/bpf/bpf-opts.h
! 867d74558ab2b7a875b2585a51537ee8  gcc/config/bpf/bpf-passes.def
! 8ea522949ff9faaf597963853c5875e5  gcc/config/bpf/bpf-protos.h
! a75f743c149ed9a79d30987210174048  gcc/config/bpf/bpf.cc
! ca01480b6c2135de6dc2217725956f16  gcc/config/bpf/bpf.h
! a539aebf891dc87161f6f9cc532b5466  gcc/config/bpf/bpf.md
! fe8fafbe3c73b1f057a29ad866f9446c  gcc/config/bpf/bpf.opt
! e33b3c4c9c6d3c17bbf24c0452d768c7  gcc/config/bpf/constraints.md
! 8ed2522205eead01a145c59591bf23f2  gcc/config/bpf/coreout.cc
! b4f0e80273c188b51f257fe46b7633aa  gcc/config/bpf/coreout.h
! b6cd521749e01e6eb38288fe2b9fa906  gcc/config/bpf/predicates.md
  290c61502f2095fde313896f88d95081  gcc/config/bpf/t-bpf
! c2083c99e2df05dfe4de72bbf81962ba  gcc/config/c6x/c6x-isas.def
! 77709387e0039fb7e471aaa4829ace5a  gcc/config/c6x/c6x-modes.def
! 0d05427c02bce55eaaeb9ad58d249256  gcc/config/c6x/c6x-mult.md
! 8057378996df5f6010962282fa418b42  gcc/config/c6x/c6x-mult.md.in
! a00fb3aedfc5a637c9f4d39e3c5b047c  gcc/config/c6x/c6x-opts.h
! 176e3ad81dad099dea3fb1e474453c76  gcc/config/c6x/c6x-protos.h
! ad12c24ac0ba7bc00cc3b05a2b03a271  gcc/config/c6x/c6x-sched.md
! 449c3797415fda8b6e23a6673c2d8fd7  gcc/config/c6x/c6x-sched.md.in
! 4ef316b33b3a9cea68e33a6323b63808  gcc/config/c6x/c6x-tables.opt
! 2821881bbd6e1987aa6b23d189146d9f  gcc/config/c6x/c6x.cc
! af13fb79499732535f0053bd39dfcc5d  gcc/config/c6x/c6x.h
! 1393e7fa16d26a5d481d646ab2aa7bc5  gcc/config/c6x/c6x.md
! 15f6aabadaa6fea0bbee5f8bdd0266a2  gcc/config/c6x/c6x.opt
! c01577c9da48a3fde6ac8c77d791985e  gcc/config/c6x/c6x_intrinsics.h
! bd6b7fb6ed7bd06f266ca8e297733e9f  gcc/config/c6x/constraints.md
! c116569820ebd6b70eede9b7e4789637  gcc/config/c6x/elf-common.h
! 38095ad8443f288cbc265ad28d09750a  gcc/config/c6x/elf.h
! f3626989252713d5c15e6542749ec6f3  gcc/config/c6x/genmult.sh
! 47bef1c71903670446cfb53f76b56023  gcc/config/c6x/genopt.sh
! 9090ddd267e6445761356a12f6f784b6  gcc/config/c6x/gensched.sh
! c8d544fc92cce2f4e19b86092f67b1b3  gcc/config/c6x/predicates.md
! 846b3a2df31f9be7bdd149d6f3565106  gcc/config/c6x/sync.md
! 925e94eb04615d56cb9e3cc29733a47e  gcc/config/c6x/t-c6x
! 4ba9cc5e61d80fb5db21e97253f4531f  gcc/config/c6x/t-c6x-elf
  428034a210600b6b423dfadb06636e03  gcc/config/c6x/t-c6x-uclinux
! 7c1d9395838d00db0300f688b0724ce0  gcc/config/c6x/uclinux-elf.h
! ede07ed71e327aef30d0e3afdb9d0d89  gcc/config/cris/constraints.md
! e907fc5424c440f748a6a5d4ffc39a8d  gcc/config/cris/cris-modes.def
! a15cacb91defbe6eff2abf59d38fd98b  gcc/config/cris/cris-passes.def
! f2c3af2b218d26a48be71332ab3d3837  gcc/config/cris/cris-protos.h
! 6a40ba1f0dac24d0171eab8d89413a40  gcc/config/cris/cris.cc
! 4bc47fd3b743b393ea3514d53b95e81e  gcc/config/cris/cris.h
! 47afeeaf84be23fc30c7d414f35e8c84  gcc/config/cris/cris.md
! 0fcde1ca773a46b4b021de3c2b225fa4  gcc/config/cris/cris.opt
! 4224eaf9e86e89ee1ee38260368e1f46  gcc/config/cris/elf.opt
! af2b2b2fa58c719778f80ae1994f9572  gcc/config/cris/predicates.md
! 904024d02e77ddb36578b1485fcf6b39  gcc/config/cris/sync.md
! 28abcc4dab5a6e355f6b11c7ab60f110  gcc/config/cris/t-cris
! 102d51b8ee464f869c15ebe38d83ee93  gcc/config/cris/t-elfmulti
! e8d6badeffaddc788755eceffe91f08a  gcc/config/csky/constraints.md
! ae8bc0ae5e246fa2a41877af651526d8  gcc/config/csky/csky-elf.h
! 0b1105f80e411c144f1f312a01c2773f  gcc/config/csky/csky-linux-elf.h
! 18d2e2f2ee403a1828b57fea528c3cb7  gcc/config/csky/csky-modes.def
! 630574afafae23fb6f7f42e147f5dc29  gcc/config/csky/csky-protos.h
! b74854702ea96d0eef4aad4b91153ca3  gcc/config/csky/csky.cc
! 47808c2a02dce80c47de318fc9cffa2d  gcc/config/csky/csky.h
! feafcdf0bbe3ddd7aa498e86894ec6b7  gcc/config/csky/csky.md
! 91681a425d4824fe2c0af4a8dfe346f5  gcc/config/csky/csky.opt
! a5928b42615f2579113c7befd6d8f548  gcc/config/csky/csky_cores.def
! 60f760a7651121dc4be995b082cc42d5  gcc/config/csky/csky_genopt.sh
! 003be9ea72af3ebebece939b8ed3cf2e  gcc/config/csky/csky_insn_dsp.md
! 583270ad4cb92d9ee4f00323d0e5f46e  gcc/config/csky/csky_insn_fpu.md
! 2bcc44baa7272a9ce4f4d39a83bc3dba  gcc/config/csky/csky_insn_fpuv2.md
! d474545a10500aef4abf8494916326f2  gcc/config/csky/csky_insn_fpuv3.md
! 363a8636493f9db7d1cc78856e33acf9  gcc/config/csky/csky_isa.def
! 50dac77bce7573aebc671cf3c718d55f  gcc/config/csky/csky_isa.h
! 8c1c207bba1289d6a6223e56eb352bd8  gcc/config/csky/csky_opts.h
! eb3c96b1bbbf8c2d61de0e86fc317fca  gcc/config/csky/csky_pipeline_ck801.md
! 5bd1b7c7adf1e153a1aadfe1849d19b2  gcc/config/csky/csky_pipeline_ck802.md
! adcc9b2aa98e1651e09517b0e5e7dd93  gcc/config/csky/csky_pipeline_ck803.md
! 26cb8b39e17ad2a73b4f83f474ad05c2  gcc/config/csky/csky_pipeline_ck810.md
! 1fde3545d624ac0c81fabfcb39a17683  gcc/config/csky/csky_tables.opt
! 5ccecb6edd58fe07538f6c1f5db8563b  gcc/config/csky/predicates.md
! cd03b988a7bd186e66210d7bb24d12ed  gcc/config/csky/t-csky
! 38641d1c973c0eb92953d7e542792f02  gcc/config/csky/t-csky-elf
! 92e09d436d26dd5f2e2b2090dba422ce  gcc/config/csky/t-csky-linux
! b62a47b77dccb47ce687a46ca17cec43  gcc/config/darwin-c.cc
! 2556b4330fdb56e9355a33998b8b94d3  gcc/config/darwin-d.cc
! 09733777605726a19bf8f3de69b594e3  gcc/config/darwin-driver.cc
! 3c146a1c17fda17c760cd5672fb5a5a8  gcc/config/darwin-f.cc
! 7b2dacd23f2809fe6462e592b6ff5744  gcc/config/darwin-ppc-ldouble-patch.def
! 1cfc3c2a6447cc7e0d196c1d420dae9e  gcc/config/darwin-protos.h
! d2485f51f197476f96061c1d9f71080e  gcc/config/darwin-sections.def
! 50ad8d2ff561a7c3101c63f983a5ce0b  gcc/config/darwin.cc
! fbdc3780fbd2c7badb3014f40093f550  gcc/config/darwin.h
! a4046e28f90bb4b7626f30230f1dbfef  gcc/config/darwin.opt
! e995cbf40e93284ca4ad4576deae0b57  gcc/config/default-c.cc
! d492599e2fe59e667eb069826c292f25  gcc/config/default-d.cc
! 63f73e79d61aad20d5bda3ba222f7084  gcc/config/dragonfly-d.cc
! 565c8f9a5a88c8e360ab14488ee2cd6d  gcc/config/dragonfly-stdint.h
! 40fe7c4898153d6b828938232245bf14  gcc/config/dragonfly.h
! 75735afabc08d6bf0159b137e1d6d147  gcc/config/dragonfly.opt
! 78dbd25cd0f8974d536f853a1bcfabd9  gcc/config/elfos.h
! 9bb80217aedb0528772d30c6154ed3d7  gcc/config/epiphany/constraints.md
! cad5b029cc343d9cb05d771f9ac84a1b  gcc/config/epiphany/epiphany-modes.def
! db54456f1c211b068bdda470918b3bc8  gcc/config/epiphany/epiphany-protos.h
! 296bc4cc359f43ac66f2fe17a689043f  gcc/config/epiphany/epiphany-sched.md
! f76acd88c1b5ce763cd3db90c04f2725  gcc/config/epiphany/epiphany.cc
! 71fc078aa689775876043486b0000ec3  gcc/config/epiphany/epiphany.h
! 76326e5b3f7025ac4c2134e4b35f4b57  gcc/config/epiphany/epiphany.md
! 38fe363624c6b30d36028dc2ba368f7e  gcc/config/epiphany/epiphany.opt
! 048c70394ad0d7fab583647e9a11953c  gcc/config/epiphany/epiphany_intrinsics.h
! b599942ce5cdae5a7d39b33205448ea6  gcc/config/epiphany/mode-switch-use.cc
! 8dd91e51319cdee24ec5026424fcd36f  gcc/config/epiphany/predicates.md
! 8c35fcd168d9ddbccaee5bb54831528b  gcc/config/epiphany/resolve-sw-modes.cc
! 8634f75cd5ca5f048495db1aee5d7d69  gcc/config/epiphany/rtems.h
! f1e84e80d2b96098dbe4f4b54c815b89  gcc/config/epiphany/t-epiphany
! 9304691b53f83600cf1b07208739248d  gcc/config/flat.h
! 6ce7342512c92b485a1ae7f47ab9c8f1  gcc/config/fr30/constraints.md
! d18555da18714ec580141066465a1d27  gcc/config/fr30/fr30-protos.h
! 724c8f2cd2770723797e46776f35c0ca  gcc/config/fr30/fr30.cc
! 2f2c1920f9c1fff2b4378bacb80cf843  gcc/config/fr30/fr30.h
! b8e8b401593d4347be0a920265452f7d  gcc/config/fr30/fr30.md
! 206d98cd901975b8db476daafb620646  gcc/config/fr30/fr30.opt
! 86ad7d130cfe80f1ad9f1c7b1b372cfe  gcc/config/fr30/predicates.md
! 0225d3a0c5926ad58b3dbfb7415624b9  gcc/config/freebsd-d.cc
! c7b5aa1df838fa1bd0e96aa886998f99  gcc/config/freebsd-nthr.h
! f4ba9bc3a839054fcb5ee4a55dc469ef  gcc/config/freebsd-spec.h
! 9b3580983bfd5a99db492af12b479144  gcc/config/freebsd-stdint.h
! c3f69841406bbfcf2e5efda655c10e7a  gcc/config/freebsd.h
! fea21f2974267988390e9375f392c0a6  gcc/config/freebsd.opt
! 40698e230a886ae6a183c9c8d82c05bc  gcc/config/frv/constraints.md
! 126fdcc4a50612e0748053744bcdeb2e  gcc/config/frv/frv-asm.h
! dcc6c59d1cb04aa5a3e5e4e03c4e4417  gcc/config/frv/frv-modes.def
! 93f80258ec4180de434640004ad6bfc4  gcc/config/frv/frv-opts.h
! 5e33de7e8808cfdfeaaaa8fb926ad236  gcc/config/frv/frv-protos.h
! ff506c208e429353b276dc63bc51e095  gcc/config/frv/frv.cc
! e45addff4f346aba28d6fe3de885a39a  gcc/config/frv/frv.h
! 5a3214fe748f6745651888d14c0d01e8  gcc/config/frv/frv.md
! e5ef4ff30fbb0c99ea11b937bab6e376  gcc/config/frv/frv.opt
! 02a6e01ab41c049d1ffbf01a914be9d9  gcc/config/frv/linux.h
! 43b1c1f60632d1aba802b6a2b8d9dc4f  gcc/config/frv/predicates.md
! 2c4759bc511ec6fbcaeeb2e65f5cb129  gcc/config/frv/t-frv
! ad2b138db0b05c40eefe36a45ae7367f  gcc/config/frv/t-linux
! 6954451da0562f1ee357c38b060d2a4f  gcc/config/ft32/constraints.md
! ed9510546d5405bb3dc4cc494450f54c  gcc/config/ft32/ft32-protos.h
! d6ed27bf8d610f944e01fa9aa5ba0c4f  gcc/config/ft32/ft32.cc
! cb8580c2d6b14878acffa8fa83e954c5  gcc/config/ft32/ft32.h
! ba4b2c1b9daf45cfe2685dd3d206d712  gcc/config/ft32/ft32.md
! f6fa1db6cc84e6686236219594cfb15c  gcc/config/ft32/ft32.opt
! aec82f64c66e26bdb3cb902d8b199e8c  gcc/config/ft32/predicates.md
! 1bd57c8bf0fdb43664bc83813079f6b1  gcc/config/ft32/t-ft32
! 87ac79088cb5e8989df94b45b0237584  gcc/config/fuchsia.h
! 41df2c0ac4bc12399d5451f041fe410a  gcc/config/fused-madd.opt
! 03a682e350fbaeffcfa4ee55cffb90da  gcc/config/g.opt
! dd72dd8a7b3f1f045c595d7b99fb7a5a  gcc/config/gcn/constraints.md
! 8b06ec215f616c34e6db87904e6e0b02  gcc/config/gcn/driver-gcn.cc
! 3fbde69b36df1eb61c853b758812649d  gcc/config/gcn/gcn-builtins.def
! 90f7a67c8be1737ba2616a6f6fc2fc52  gcc/config/gcn/gcn-hsa.h
! 3541897063e9c24722592aa2adabc8e6  gcc/config/gcn/gcn-modes.def
! 23c741409060a32aa5362f5587a5f07b  gcc/config/gcn/gcn-opts.h
! f6e7b3cc65db5e78f895f2117663ddae  gcc/config/gcn/gcn-protos.h
! 3cd891d2430420ce3dae1210eb11e93b  gcc/config/gcn/gcn-run.cc
! 0b10bda902d6218ffb4fd4577333a4a2  gcc/config/gcn/gcn-tree.cc
! 7525ca72a9285e8bbf8b7c9ed615ab13  gcc/config/gcn/gcn-valu.md
! 3429ccb583ea5992144356f29a8b2784  gcc/config/gcn/gcn.cc
! 064406459b91a70e27c08a3260cb9124  gcc/config/gcn/gcn.h
! 27008ff667e8cdb9934389b9d42e7bec  gcc/config/gcn/gcn.md
! 185ec6d83d4274749b29058c253dcb64  gcc/config/gcn/gcn.opt
! 0e1335850e6f10dff65da4b4577f3fea  gcc/config/gcn/mkoffload.cc
! 43e8863589453c75de1be59eed551481  gcc/config/gcn/offload.h
! 3f3b29a24c9522093c1f500b9c0b9c7f  gcc/config/gcn/predicates.md
! 4eb39192c082f027d87d65009836e07e  gcc/config/gcn/t-gcn-hsa
! 29fe634a5e37cc4357b1043fba7c57bf  gcc/config/gcn/t-omp-device
! ed52c14ae2117a1e2218b99326e827f7  gcc/config/glibc-c.cc
! 2077520306ad553f4448e35972e58554  gcc/config/glibc-stdint.h
! 84710268000799a6e443185c65b5083e  gcc/config/gnu-d.cc
! 66b5cf864ec6eee452dbe2a23c5f63b8  gcc/config/gnu-user.h
! e678ec61caa08addb752cf31cf39ea19  gcc/config/gnu-user.opt
! df334611bfceb7de93b71522186c97a8  gcc/config/gnu.h
  614bb3102b667d8f96684dddffd1f625  gcc/config/h8300/addsub.md
  cddc64825ce6e6e92692684251745f9e  gcc/config/h8300/bitfield.md
! 7e3877c14e73e7008a634518dea17e1a  gcc/config/h8300/combiner.md
! 844200a660440c56cc71fc552ccc2716  gcc/config/h8300/constraints.md
  6951bae6ec523668ea56b4c855810ce3  gcc/config/h8300/divmod.md
! ddf43a9e37f6389690be0b54342c7704  gcc/config/h8300/elf.h
! 651b8f73d23f711ec0d104cc75652c0f  gcc/config/h8300/extensions.md
! 8eb9f7831675820c9b367cb8f41b70e3  gcc/config/h8300/genmova.sh
! 55cba95e5355758b6958be128e1fa86d  gcc/config/h8300/h8300-modes.def
! d301d1856fd453a3035d2013d3474f34  gcc/config/h8300/h8300-protos.h
! 3066f685023c18bd5302a74bdb940e78  gcc/config/h8300/h8300.cc
! 98a209c0b5d77bbe60b96d930cc5d670  gcc/config/h8300/h8300.h
! 84243f84ed443454f872e38cb06deba7  gcc/config/h8300/h8300.md
! f27af5cae5c580e2a2a80d98089ea732  gcc/config/h8300/h8300.opt
  b5d25924674b9d28333ecf000341f07e  gcc/config/h8300/jumpcall.md
! 68382be4f90ca9b366898a4bf787d665  gcc/config/h8300/linux.h
  aadf1bc3214dfe74ed3fcee32bc9332c  gcc/config/h8300/logical.md
! 5297875720c6dcfecc0483877faf934a  gcc/config/h8300/mova.md
! d329c98204120e78e720acd16234ad63  gcc/config/h8300/movepush.md
  6497e83ede4f1f9ec82eb6a07ba6f856  gcc/config/h8300/multiply.md
  56b9e51103f6a9c3bfc3777663b9a4f7  gcc/config/h8300/other.md
  e673e4aefe8a67834929eb43e99ac3df  gcc/config/h8300/peepholes.md
! 90a9dcea81a3202aa484c0d95c39ce85  gcc/config/h8300/predicates.md
  229fc2c8a83deb14625c4ee888cbb642  gcc/config/h8300/proepi.md
  daa266a3eae63ee1e65cb8c441f4c9c2  gcc/config/h8300/shiftrotate.md
! 4f7c280fc8cd5b24a401cc846309c31c  gcc/config/h8300/t-h8300
! 69198a0c8d147e02401120365f05bdf6  gcc/config/h8300/t-linux
! 8260488075a9e93d685f7a10d6dd5126  gcc/config/h8300/testcompare.md
! 7920da6f349d7f5b89ea751a81c745be  gcc/config/host-darwin.cc
! e7804843eb0a64776c47655d24acd9d3  gcc/config/host-darwin.h
! 26e5475763219f07524bc4b10d8858bb  gcc/config/host-hpux.cc
! 506060880b3936449a3b610d017ebee3  gcc/config/host-linux.cc
! 657b03115e4d3a2a5fb6d0d889bb3e03  gcc/config/host-netbsd.cc
! 0a10e633504dd5661ca6e147f68cbdd8  gcc/config/host-openbsd.cc
! 7a3cd33c3708c30bbc39e4867f5c774a  gcc/config/host-solaris.cc
  2c191e2d8d033611c6fccc8362d9e8f0  gcc/config/hpux-stdint.h
! 96509d4dd1922555873784e523a931a2  gcc/config/hpux11.opt
! 55883df46978a976c938c240c6dce165  gcc/config/i386/adxintrin.h
! c062d8c4f543cce10ae4bbb7c220a765  gcc/config/i386/ammintrin.h
! b2f4aad298263f48f1ac8a7ad50e6f53  gcc/config/i386/amxbf16intrin.h
! 1e1e5e7dc305e186cdbf59e26f4150d7  gcc/config/i386/amxcomplexintrin.h
! d66542a1143209ed7ff609cc1351aad2  gcc/config/i386/amxfp16intrin.h
! f7ec04b3ae6ab0665561d3c64e2a8eb6  gcc/config/i386/amxint8intrin.h
! 58befca760baf6dc42bfba8fd3d6cbea  gcc/config/i386/amxtileintrin.h
! 5ad8113f98b3741dba255479fb0b4c5c  gcc/config/i386/athlon.md
! e34a8bf10542af8efc22acbb32ee2fdd  gcc/config/i386/atom.md
! f15918dfd12bc1857aa07367503167fd  gcc/config/i386/att.h
! 9ef2d68be3a207077c8183933c8e5dc4  gcc/config/i386/avx2intrin.h
! ab2f37ffcf27bd727a410299157b5509  gcc/config/i386/avx5124fmapsintrin.h
! 254ba18a77b8781f866a956ae501e7d6  gcc/config/i386/avx5124vnniwintrin.h
! 09752ab0ff6f938f828ee83a13662f2d  gcc/config/i386/avx512bf16intrin.h
! b8695cdce964102e0ac837d1033a8d4a  gcc/config/i386/avx512bf16vlintrin.h
! 37a8378c33d1cd7dcadcddcb39f093a6  gcc/config/i386/avx512bitalgintrin.h
! d60f0dd52fd58d6cdaa795cd7aa379a7  gcc/config/i386/avx512bwintrin.h
! fc8ba175719967cb3897734b04aaa152  gcc/config/i386/avx512cdintrin.h
! d606104e61ee4184b105a29dd9f8874d  gcc/config/i386/avx512dqintrin.h
! 89ad5161864151492138726742065bd4  gcc/config/i386/avx512erintrin.h
! 3e485b91edc94f598c1586d50924107b  gcc/config/i386/avx512fintrin.h
! 6c0b3b014c64f96f9154305ad050e192  gcc/config/i386/avx512fp16intrin.h
! 425bfb3a013e3d22cf85414c6976c54b  gcc/config/i386/avx512fp16vlintrin.h
! 73911bb30ce2898efe5abaeed585f849  gcc/config/i386/avx512ifmaintrin.h
! b48423c9093a9e3f3e70c05090d7ed6f  gcc/config/i386/avx512ifmavlintrin.h
! 5f83acbcdc40eb734a1604afaddb58e7  gcc/config/i386/avx512pfintrin.h
! 4d11435508702d0c2568ff605c96d445  gcc/config/i386/avx512vbmi2intrin.h
! 1dac4b3b63df64d7731becf1987ac0d6  gcc/config/i386/avx512vbmi2vlintrin.h
! c4284954469dcfe25e15abf877171d6e  gcc/config/i386/avx512vbmiintrin.h
! d268e16dae79f5a97951c6073c15f760  gcc/config/i386/avx512vbmivlintrin.h
! 66c8baba8d8fbd130adf636459242de4  gcc/config/i386/avx512vlbwintrin.h
! 3ed761d84d7f85efe8900af054b34adf  gcc/config/i386/avx512vldqintrin.h
! 471f241ee9f1c35967843a23b8dcd887  gcc/config/i386/avx512vlintrin.h
! c3f87fa01dedc77d30f7751b9d1c5497  gcc/config/i386/avx512vnniintrin.h
! e37ee6d1b89cb1c19910985b2aa737e1  gcc/config/i386/avx512vnnivlintrin.h
! cf862e171533f14c8449c9977f1b344b  gcc/config/i386/avx512vp2intersectintrin.h
! d4f2b0eeacef8c5f8237ded885035a85  gcc/config/i386/avx512vp2intersectvlintrin.h
! e552130be5dadd9f0697ed17a24070f5  gcc/config/i386/avx512vpopcntdqintrin.h
! d8996cda097e3356520593b8f5241372  gcc/config/i386/avx512vpopcntdqvlintrin.h
! 444a6b064529b37402b617c2ccf4a94e  gcc/config/i386/avxifmaintrin.h
! edde64e9a81febdc9688ca29a8cebce0  gcc/config/i386/avxintrin.h
! dc30c7790bad2dc575405df451df3127  gcc/config/i386/avxmath.h
! 6975482cd330668327205942524783a7  gcc/config/i386/avxneconvertintrin.h
! e536edbcac47b201a5f22e654d073825  gcc/config/i386/avxvnniint8intrin.h
! 90dae42e771f91eceffac535dd51dceb  gcc/config/i386/avxvnniintrin.h
! 08c897604cbe35c30760e6713307cca6  gcc/config/i386/bdver1.md
! 4dc1325ec265b319c9270583b68c0345  gcc/config/i386/bdver3.md
! 2c9c3c84d099070fce6147a08d5e4626  gcc/config/i386/biarch64.h
! f4259232ae95f40c8d01091fb635c235  gcc/config/i386/biarchx32.h
! 1c4aa62f05093c645d557624d7931cb1  gcc/config/i386/bmi2intrin.h
! 543a266eacbf8014fce634ac4dee92cc  gcc/config/i386/bmiintrin.h
! c0b1e25b004e885c4f4565547d4aba76  gcc/config/i386/bmmintrin.h
! f1e8d379b4b0271425e722570a4d1f90  gcc/config/i386/bsd.h
! cac4fc3255d7dd10cc9113bb4245af01  gcc/config/i386/btver2.md
! e9798a246c59e41bc8592dd5c0e3526f  gcc/config/i386/cet.h
! e146cc080a7a71e632b794d7fe566014  gcc/config/i386/cetintrin.h
! 1136cf96008eb0668c110a6b11187cbc  gcc/config/i386/cldemoteintrin.h
! a905ae6a96a437211eb7c3bee6971774  gcc/config/i386/clflushoptintrin.h
! c21b5a888da33e9d722aed1166d447bf  gcc/config/i386/clwbintrin.h
! f8c18b60f8d694d9b04cc4f5352e2c9f  gcc/config/i386/clzerointrin.h
! b38f7b52c769a7a8a9150b9492951672  gcc/config/i386/cmpccxaddintrin.h
! dea8aa711b0d85027336c0a9e9f11aa2  gcc/config/i386/constraints.md
! d58c22e340508ccef0f5f2762e78242d  gcc/config/i386/core2.md
! 93a70c3283b459b6d922b7d8a54086d1  gcc/config/i386/cpuid.h
! fc6740866dfd896d6b233e6c3fe047b3  gcc/config/i386/cross-stdarg.h
! 667d19f1a950f4c2b779e96f8141e11f  gcc/config/i386/crtdll.h
! a7e595b8f3d2618c6934377aef6b7768  gcc/config/i386/cygming.h
! af5582aa9ebfbcfce6fd773213f09989  gcc/config/i386/cygming.opt
! d5da110d7e8a9c76366dd4a40e6adb0e  gcc/config/i386/cygwin-d.cc
! 177d40d1bc9ce406fa151ad56af99d20  gcc/config/i386/cygwin-stdint.h
! 23945aeac6b859540430f2609681fbfc  gcc/config/i386/cygwin-w64.h
! e27d70deb4e43235a37cd9075401de82  gcc/config/i386/cygwin.h
! f3541cb57fe4aa85dd8b86cf26586a9b  gcc/config/i386/cygwin.opt
! a653ed5e4551f4c44f26f027755dee47  gcc/config/i386/darwin.h
! 1f6a3eab79cdac91c0d4f9123067049c  gcc/config/i386/darwin32-biarch.h
! 7fced3e35c3703796b4140ade5a5e956  gcc/config/i386/darwin64-biarch.h
! b942499d27601a7aba3efdeb5a8d300b  gcc/config/i386/djgpp-stdint.h
! 78b0bb86441024508f17eae054f52737  gcc/config/i386/djgpp.cc
! 6382c293f599527a86ff907f0794f4b7  gcc/config/i386/djgpp.h
! c64ce798db81479c69da1344e38dd450  gcc/config/i386/djgpp.opt
! 17255f7edc13e66cee8ce104a1a16d7e  gcc/config/i386/dragonfly.h
! c4548130bc6528a20f37c7260ce842e4  gcc/config/i386/driver-i386.cc
! 0db2a1b877b9b70a4f1314795cd9fce4  gcc/config/i386/driver-mingw32.cc
! 230f254705a227cf2e3e968f01d82187  gcc/config/i386/emmintrin.h
! 49b2eed6267812453a577bc231736495  gcc/config/i386/enqcmdintrin.h
! fc0629522816ca6cd8f3a9dc0669fe56  gcc/config/i386/f16cintrin.h
! 5ade51009e0905689bda324eb7ce5f2c  gcc/config/i386/fma4intrin.h
! c36f1bf728e19aa1f1982a3eee0ff843  gcc/config/i386/fmaintrin.h
! 7207dcaf5f541010f8939ced1feb755b  gcc/config/i386/freebsd.h
! aa4eef0a8dc27bb5ee8e7c713fd03d96  gcc/config/i386/freebsd64.h
! 94adad2d2cc10d6b8a1343b58ac8c6e0  gcc/config/i386/fxsrintrin.h
! 942b10e6d8feadd376d9c697fec0e971  gcc/config/i386/gas.h
! 5fe43bd191553cf1fa4b80b584a64d1c  gcc/config/i386/gcc-auto-profile
! 990ae63980c91c6671a1c05ce2c1f206  gcc/config/i386/geode.md
! 4979154dc459fb74b0453ffb9af8ad45  gcc/config/i386/gfniintrin.h
! 8b13d3e8a979685111c50fe0e52fbe3a  gcc/config/i386/glm.md
! 3f36b056cd323aa177dfa9e88f252b5e  gcc/config/i386/gmm_malloc.h
! 8796fb84e2e1828a1cd5aef84d9d6c83  gcc/config/i386/gnu-property.cc
! 89d2cb0fe9c646c0bfc8027e8e98f61d  gcc/config/i386/gnu-user-common.h
! 87b2cecc339487b9d9acd34de3f0b5d8  gcc/config/i386/gnu-user.h
! 87311bdb2ce3ba229fde8d03650b7254  gcc/config/i386/gnu-user64.h
! 6782d235e56850aed52178e989fe5193  gcc/config/i386/gnu.h
! e92e6092340e3f2f41fe23e91d749ca0  gcc/config/i386/gnu64.h
! 362075d5c55c01a58a8688d152965d39  gcc/config/i386/haswell.md
! 519fbd902e6476af80fccdd9c3ddf609  gcc/config/i386/host-cygwin.cc
! 6e90fcf8b884d9635ab934026d3f144e  gcc/config/i386/host-i386-darwin.cc
! 43ba62e2c05246010d29bc459f648c78  gcc/config/i386/host-mingw32.cc
! c712f75327bcb8b5d026dfb3dea205df  gcc/config/i386/hresetintrin.h
! 05b81cca7926b1d1ab6ed9ad1de53cf0  gcc/config/i386/i386-builtin-types.awk
! dad9987b048f5ddc8ae9a92cbe3231a7  gcc/config/i386/i386-builtin-types.def
! e671b7cc0b419ac65a0784a49ea98bd1  gcc/config/i386/i386-builtin.def
! 407d58c3dd343e65eae794d0314e3fd4  gcc/config/i386/i386-builtins.cc
! 142e87103f036ad8c37d13ec10c7b6e1  gcc/config/i386/i386-builtins.h
! 0f0ae6ff148bdb8fd932e202b6799c47  gcc/config/i386/i386-c.cc
! 111cfdf2d21796a75b1dc6dad85b1e0b  gcc/config/i386/i386-d.cc
! 8a2fd04b87d1c3d5e2c0f09d28bbbabb  gcc/config/i386/i386-d.h
! b1539407f2d48b3d686c4823e1b0c666  gcc/config/i386/i386-expand.cc
! 41a8f20de760a6af6575dd59a61d9d53  gcc/config/i386/i386-expand.h
! 013ab5377721723467a39ca015a4296d  gcc/config/i386/i386-features.cc
! 56fdbfdbc30b14f12e07f1e89723787f  gcc/config/i386/i386-features.h
! fe11cb894ffe7ab98667ab56d2f4723f  gcc/config/i386/i386-isa.def
! 879010cdeb2877b05749acd5f54492a6  gcc/config/i386/i386-modes.def
! 4850246646622a2e42dc4a50e6a7a743  gcc/config/i386/i386-options.cc
! 003ffbe43bb8f6a09f829ad391579ca5  gcc/config/i386/i386-options.h
! 7512d54a6f733ab8b39bf9b02c1ba4db  gcc/config/i386/i386-opts.h
! 3d980f6dc86b67acb7d8e5be6c08c589  gcc/config/i386/i386-passes.def
! 15146e6cff34da8c1205b0df0813ccb0  gcc/config/i386/i386-protos.h
! f4f4e345feb1795f4ba4cb0d67cfff2f  gcc/config/i386/i386.cc
! 07a9651b5e4bb4bfac97afe148b58f50  gcc/config/i386/i386.h
! 3cae1e07b70e00775a2e4eab4fe1340e  gcc/config/i386/i386.md
! 1e4205de1cf322c3e26153b3cd19802c  gcc/config/i386/i386.opt
! faa318618e52a0740019e9aa0764b007  gcc/config/i386/i386elf.h
! 7c89dc80159b83f67c1fa47a10c88c13  gcc/config/i386/ia32intrin.h
! e22a6170ba3a96af69f106d6b8906f74  gcc/config/i386/iamcu.h
! f4afdef082262b8cc534567663819965  gcc/config/i386/immintrin.h
! 474edff5b2611795518e5c12fb4c2814  gcc/config/i386/k6.md
! 6e3db853badb69c028b5cce8547368ca  gcc/config/i386/keylockerintrin.h
! 57d6e47b4724b9b02d1ab00113d027c9  gcc/config/i386/kfreebsd-gnu.h
! 7beeca11c3371560a780b6aeaeedc9ae  gcc/config/i386/kfreebsd-gnu64.h
! 85959b479a472f35eaf204c647303533  gcc/config/i386/kopensolaris-gnu.h
! 6ed22fa4fd97e8bd0a9ceb9f093a8966  gcc/config/i386/linux-common.h
! b03d09f6f9228dfe19d36064f8f3f41f  gcc/config/i386/linux.h
! e6f15effc4a20421499a9853ac59ed42  gcc/config/i386/linux64.h
! 3874a38d8dc170df109ef80a99c33ce5  gcc/config/i386/lujiazui.md
! c19d7d8115ae7a603360685c75063bb9  gcc/config/i386/lwpintrin.h
! 8e424ee7cfb269fdd08d268c220b2521  gcc/config/i386/lynx.h
! da79e6281bb9db4c89c9762bf4450a7c  gcc/config/i386/lzcntintrin.h
! fefe46f8b06de933480400b9f58e9d31  gcc/config/i386/mingw-mcfgthread.h
! 2c2d27bfe80e4de3834fadbdb9adae26  gcc/config/i386/mingw-pthread.h
! edef1eca7e51064b4a9a6b81500e7dea  gcc/config/i386/mingw-stdint.h
! fa15d7fde577d7fec88287a92105de99  gcc/config/i386/mingw-w64.h
! ad22c01391693d2c5eb002cb02cb3f83  gcc/config/i386/mingw-w64.opt
! 74c0caefc695a2967850a249e143a9c0  gcc/config/i386/mingw.opt
! 51fa82a0bcb22b2e3517bbf8798aa95b  gcc/config/i386/mingw32.h
! 633776df667177d305a751c611575d8a  gcc/config/i386/mm3dnow.h
! 20fbc82922a421279fbf3edff568d23a  gcc/config/i386/mmintrin.h
! 3fcd2ca28eb38e41e4aba49cc9001e72  gcc/config/i386/mmx.md
! bfa7cf46263456c8ad884141d12b6ef0  gcc/config/i386/movdirintrin.h
! 4c8a6fb31d927ee7d125479a97ca8967  gcc/config/i386/msformat-c.cc
! c85dbd71dc69c188d5864af35ecf2292  gcc/config/i386/mwaitintrin.h
! 9d35c876060f43c1d16bd464d93bc5a6  gcc/config/i386/mwaitxintrin.h
! 2b97388df9ddda3761772d3bed3488e2  gcc/config/i386/netbsd-elf.h
! fdbfcd825ab7d2795a716aca5c7ee97b  gcc/config/i386/netbsd64.h
! 08f589107b390f43cbac39a2e81d0053  gcc/config/i386/nmmintrin.h
! ac7968f897faee1761caa6d148277823  gcc/config/i386/nto.h
! 8b1d1d893e33090346947f2daa6febfc  gcc/config/i386/nto.opt
! 05286bf8ecdca1504cb74a25c6dbc10a  gcc/config/i386/openbsdelf.h
! bd74e5564aca07b84233d4aa8b90615a  gcc/config/i386/pconfigintrin.h
! 2a967c65076b2c100b4f7016d98d9df7  gcc/config/i386/pentium.md
! a73cf5d585143cf30302ee1dc11a1eca  gcc/config/i386/pkuintrin.h
! fdb61469c12e56b4016a6a403f4457f5  gcc/config/i386/pmm_malloc.h
! 80f697c852862b44a8157b0efea36d0b  gcc/config/i386/pmmintrin.h
! 2d2286f829251a7b7b024d0df060dd93  gcc/config/i386/popcntintrin.h
! 290846a24853c7f93564e21cacbfb24d  gcc/config/i386/ppro.md
! cfb676e27f056a72bda51c6a87241427  gcc/config/i386/predicates.md
! 09399504e7c23318087f370cc84ad067  gcc/config/i386/prfchiintrin.h
! 5d19ef9f68d49944d62aa30eccf5bca5  gcc/config/i386/prfchwintrin.h
! d4285d0c922c64b0040fab9420989bf5  gcc/config/i386/raointintrin.h
! ccb73dbea8f44f1a08e8f88b641b0109  gcc/config/i386/rdos.h
! f375d8749124aad175de62e621d27f8b  gcc/config/i386/rdos64.h
! 871282a2ee7f5fa8bc9bccb0f9859531  gcc/config/i386/rdseedintrin.h
! 0d7f5fc2425f19b35365fede079a3ba8  gcc/config/i386/rtemself.h
! aa9d4c802147d014db47190bf34523e6  gcc/config/i386/rtmintrin.h
! c8b17dca6d683aeb5fbdff1b409ff35f  gcc/config/i386/serializeintrin.h
! f71c2e5572561a74ea464ac5e46b48e9  gcc/config/i386/sgxintrin.h
! 019c925c6a253cd9d596b40229027590  gcc/config/i386/shaintrin.h
! 9ac8a2404b744a4725303bcaa6eb18ee  gcc/config/i386/slm.md
! 78848cd4caaf8dc8240bd6c097488abe  gcc/config/i386/smmintrin.h
! f636ec0022d2efe9257b23fc816e2b32  gcc/config/i386/sol2.h
! a285c7e6ed05d24743ff4ee9e13acd0f  gcc/config/i386/sse.md
! d5e445dfcfe76b4409b1d6a2115663fc  gcc/config/i386/ssemath.h
! 0547e7c6a1807f6096d1ef483c6f9c13  gcc/config/i386/stringop.def
! f7ae3b5e53998d952d6de4ec0fa87479  gcc/config/i386/subst.md
! 945c6888d50080573fad6f6c8969b67f  gcc/config/i386/sym-mingw32.cc
! 5927dc15e6d5c74d087d26beb013139d  gcc/config/i386/sync.md
! 2d4c630f2726c23bf8ece1af1e9f5655  gcc/config/i386/sysv4.h
! 3efb47ccd473b950c058108a64652335  gcc/config/i386/t-cygming
! d41d8cd98f00b204e9800998ecf8427e  gcc/config/i386/t-cygwin-w64
  98d94861be252f8541038afee279417f  gcc/config/i386/t-darwin32-biarch
  8f92133cb94c59e2939cd65dc5fc8cb4  gcc/config/i386/t-darwin64-biarch
  633a95f7feb14d4eebe0039fa5ef4dec  gcc/config/i386/t-djgpp
! ad0ba96b79bacf5c0df050b78f14feca  gcc/config/i386/t-freebsd64
  3a1c0dac7740fd9ef48c7bdf5f313c9d  gcc/config/i386/t-gmm_malloc
  d5939c6bccbf8957206c63308ce628a6  gcc/config/i386/t-gnu
! 1f8dfcea2f11f1d390a5bf723c463acc  gcc/config/i386/t-gnu-property
! ec05069b8c6c796b9cdfd8492da92810  gcc/config/i386/t-i386
  51dcf9826007c01cfd67be11d5f0d538  gcc/config/i386/t-kfreebsd
  39ad69cb2a2e67aa8d46664a75b02789  gcc/config/i386/t-linux
! 48769bdde624f35ccf02701f43a06b88  gcc/config/i386/t-linux64
  cd662e746e08a18749e8272fa759278e  gcc/config/i386/t-mingw-w32
  67bcf41f125bbec93a13ad3bd98abaee  gcc/config/i386/t-mingw-w64
  12a68576d3577a8da82089f18d60c613  gcc/config/i386/t-pmm_malloc
! 66ad437670137446409930c06453c6df  gcc/config/i386/t-rtems
! 41f190cc566db8dd7ef18946821642b3  gcc/config/i386/t-sol2
  6c6dc6647856991d7275637384be6c03  gcc/config/i386/t-vxworks
  b80a5a4a8c8fc32ca318158abc98dc20  gcc/config/i386/t-vxworksae
! dcfd62bf992c59823559037c9bc5933c  gcc/config/i386/tbmintrin.h
! 6dc764167c9ded016d98ae2a08c58b83  gcc/config/i386/tmmintrin.h
! 9fe68cef534febffb35ad1ef847401e9  gcc/config/i386/tsxldtrkintrin.h
! 6bfcaf6894aaea6ffeca89c4f53996c4  gcc/config/i386/uintrintrin.h
! c51f747e61ad2f707ccbeb3411be4a4d  gcc/config/i386/unix.h
! 81edd33206e44c8dbcd4165f97407774  gcc/config/i386/utf8-mingw32.rc
! 3b92b3eae9656b798ba795343faf434d  gcc/config/i386/vaesintrin.h
! 7bfabf005327630e4c60ebaa59a0247e  gcc/config/i386/vpclmulqdqintrin.h
! 73cf0b2a1c68a76bb732869abdd516e3  gcc/config/i386/vxworks.h
! 710c8c1dfd5081ac010b59573d9e16f5  gcc/config/i386/vxworksae.h
! 3805b71228fcc6d0b6f26c904a2769f1  gcc/config/i386/waitpkgintrin.h
! c4c180494248f20b21bde574239cf71b  gcc/config/i386/wbnoinvdintrin.h
! 14245e51a804d3784b06c57047af83f4  gcc/config/i386/winnt-cxx.cc
! 6306f2d4a93ad28a0db393cccebc0eec  gcc/config/i386/winnt-d.cc
! 92a5c32283a27a6341d793260527dae3  gcc/config/i386/winnt-stubs.cc
! b60494d53d08e39def55bcf62076b56c  gcc/config/i386/winnt-utf8.manifest
! f3fb16ceb30e993337ac39983235a870  gcc/config/i386/winnt.cc
! a80b30640741e517dda1f687e1aeba06  gcc/config/i386/wmmintrin.h
  b4cde95b709fc93c90bf4d6b3edc7fd0  gcc/config/i386/x-cygwin
  1ab2099a92787dd158135dbcaceb0bf9  gcc/config/i386/x-darwin
  8d6956f3535d501680a321eb01dafb35  gcc/config/i386/x-i386
! 8c1a4c75367c242e4240f63182298102  gcc/config/i386/x-mingw32
! 382a0dd1703f45cfe6f1a5d3db496a84  gcc/config/i386/x-mingw32-utf8
! 34e124411c74493d2987ca67a64213cd  gcc/config/i386/x86-64.h
! 483ae34cdadb3784655df5566b98bac9  gcc/config/i386/x86-tune-costs.h
! ceeba8f332c332a7db03815dd3144457  gcc/config/i386/x86-tune-sched-atom.cc
! cf77688a79e9eb5530fb5a30f8ead444  gcc/config/i386/x86-tune-sched-bd.cc
! 30bef3dbd64dfc29211a442df4597f25  gcc/config/i386/x86-tune-sched-core.cc
! 70b97860072bcc5c13ce7ffe8d7c3a7d  gcc/config/i386/x86-tune-sched.cc
! 0107ea657920f09fbf2d6b29c32f09f0  gcc/config/i386/x86-tune.def
! bd48650a48294465d345812ad5e1b4e8  gcc/config/i386/x86gprintrin.h
! 9bbe408d1dc406ddf72aa175ea24a4ab  gcc/config/i386/x86intrin.h
! 8262b37347a6f221be8fda380c23e595  gcc/config/i386/xm-cygwin.h
! be0b0f2d6bbac5aa9acc0aa9ca9939bb  gcc/config/i386/xm-djgpp.h
! 5a5edc97dfee054c50445d3976a1f593  gcc/config/i386/xm-mingw32.h
! e20d725be97ea6dcf6d6796132a2fe44  gcc/config/i386/xmmintrin.h
! a215229c735d32f3d01211350fd1f318  gcc/config/i386/xopintrin.h
! 389521d349b62cd9a6946fee844e5397  gcc/config/i386/xsavecintrin.h
! 90f4cdaf601934d2d661a2b054020133  gcc/config/i386/xsaveintrin.h
! f1f5f84a8dd49e6d726f7e2c20ed8e79  gcc/config/i386/xsaveoptintrin.h
! 6275f6421011176a82b480067cd8773d  gcc/config/i386/xsavesintrin.h
! 0ee718569f13b7df03c4919999566ddb  gcc/config/i386/xtestintrin.h
! 3df7133920a3226cf278a7da93340bdd  gcc/config/i386/znver.md
! 6f6d5b0830a741f384328da33b52fdc0  gcc/config/i386/znver4.md
! 99ac9eca82d2eb34419a7f546dbdf0a4  gcc/config/ia64/constraints.md
! 48401aec42c82f35c84ac47cd01d83f6  gcc/config/ia64/div.md
! 18fce4fb1a588e94b444c4fcd4f14157  gcc/config/ia64/elf.h
! acba31df4ea284fe039057d66372143e  gcc/config/ia64/freebsd.h
  89edd175b4bfe583ec3ee965092fd5d0  gcc/config/ia64/hpux-unix2003.h
! bc8de5bb7e58419a61f0a4e834c084df  gcc/config/ia64/hpux.h
! 10a32882ce4eaed04f9acb3c2091fd52  gcc/config/ia64/ia64-c.cc
! fdbe0d04c181c78799042e1c25721f18  gcc/config/ia64/ia64-modes.def
! f060e4b2c9907fe1d89d30252c257ff9  gcc/config/ia64/ia64-opts.h
! 3a1a0730cb8abdb7caa1e4adca8010e7  gcc/config/ia64/ia64-protos.h
! dd46e49e22d1b83447bd6a17243e59dc  gcc/config/ia64/ia64.cc
! 341b1c1a878b4b12483bc586b50540ac  gcc/config/ia64/ia64.h
! 10ff136c4ec261abdf9bead27129a151  gcc/config/ia64/ia64.md
! 8d058503899992ed21c71eccf4766847  gcc/config/ia64/ia64.opt
  dcc77d7023d20b64688bf213c2d327b5  gcc/config/ia64/ia64intrin.h
  4b86fa74a7636ffdb9787a8643220eec  gcc/config/ia64/ilp32.opt
! 142ea74f747b618a6a7be76f3414d269  gcc/config/ia64/itanium2.md
! b93731e5bc7933e65a7b3213ca44efc2  gcc/config/ia64/linux.h
! 3054b4d4a0b0bef13f217fab44da045d  gcc/config/ia64/predicates.md
! 5fbbc24b6b5b8226b739b1b7a9349b35  gcc/config/ia64/sync.md
! b118ca4800a941ba1b551d4f4e991971  gcc/config/ia64/sysv4.h
! 138df2894e42f7b35ec4d3dd4454b62d  gcc/config/ia64/t-hpux
! 3d9e22008d00c2ecce2b7ba5157a809c  gcc/config/ia64/t-ia64
  67736f64800d10923b58be4e448620d6  gcc/config/ia64/t-linux
! e9ef433eb8dada368c748bf51c46ab4a  gcc/config/ia64/vect.md
! 772f12ab8dc78fe38f5978ee32eb71b4  gcc/config/ia64/vms.h
! 8df1343d11f4a6e2149d5a8b6746c255  gcc/config/ia64/vms.opt
! 3ff7fe1829fc0a315623e9b7ea7bb439  gcc/config/initfini-array.h
! 43a8e61cee59d2e064b053db790ec5ec  gcc/config/iq2000/abi
! 1631bc1750ce72e6148f5226837199a0  gcc/config/iq2000/constraints.md
! f1d73a41c631ae06b54bba93c4ecc9fa  gcc/config/iq2000/iq2000-opts.h
! 9448965aae37891f1aff882dcc565928  gcc/config/iq2000/iq2000-protos.h
! 6e9ba29c4d8aad7138e7f2c762dd1905  gcc/config/iq2000/iq2000.cc
! 40d71f6be2b11f49063d0e4f6ad6decd  gcc/config/iq2000/iq2000.h
! 8d5ec1522ba6942a9f73fff77fdebaf9  gcc/config/iq2000/iq2000.md
! a8433b0ca4400a6815d88586679ed1fd  gcc/config/iq2000/iq2000.opt
! 8bfd6b7cba316719598f6936ec97e979  gcc/config/iq2000/predicates.md
! c382a6590f0db191b3bef10909332fff  gcc/config/kfreebsd-d.cc
! 4ffa33935c7955e9a3bd1786cc4a78ac  gcc/config/kfreebsd-gnu.h
! b47308cc0d5393e0103ad567d8a2e5b4  gcc/config/kopensolaris-d.cc
! 0be9b13fede39265367f514ae0e05b25  gcc/config/kopensolaris-gnu.h
! 7ca01af8cce5302257b16332c81cc4fb  gcc/config/linux-android.h
! 51548946ff4ac6c0a888273931e08c26  gcc/config/linux-android.opt
! dc79dfbea2ed24fac915f56b97b6f4e2  gcc/config/linux-d.cc
! aae89dfe37b6962b2f81a32846a2a717  gcc/config/linux-protos.h
! a6ef074773b50f4c3e2d3ef18fcea199  gcc/config/linux.cc
! 0f318e4aaba564bb3fd76086e933df3e  gcc/config/linux.h
! 0c2d7f25cbdfe820ff6a01fc8e08b4e9  gcc/config/linux.opt
! 89e5f51fed98c28dad702735e788ebf5  gcc/config/lm32/constraints.md
! ba752a42f4ca2856db27f576e1f48232  gcc/config/lm32/lm32-protos.h
! bbcb9180a6500397530127e9345b90fc  gcc/config/lm32/lm32.cc
! 4d16a4eea143e5f51e2bd330be3159bf  gcc/config/lm32/lm32.h
! 7393aca2ea5104a790c302d0fe479c1e  gcc/config/lm32/lm32.md
! 5d0044a24847a5865e20d2a6c72690b6  gcc/config/lm32/lm32.opt
! 9e65ece7a237c4ec3f04bcdc771ade9b  gcc/config/lm32/predicates.md
! 97358b28bdd9fa2978f1575b1e2865f2  gcc/config/lm32/rtems.h
  a9d1d80c40cc6eb8e9a32d54f82dae43  gcc/config/lm32/t-lm32
  660559cdac2b08e91486a9db7b4a2872  gcc/config/lm32/t-rtems
! 8ef085012d9493b632c484a8fb32b403  gcc/config/lm32/uclinux-elf.h
! 8417e1e84ade261be3883c9b991c14a6  gcc/config/loongarch/constraints.md
! db93094f0d4b754b9521b7a08ff59eb3  gcc/config/loongarch/generic.md
! 56ef1e2b8eb28fe4018b37a6a9a6f26e  gcc/config/loongarch/genopts/genstr.sh
! 9ce5785ab5a5194757c33063bafb644b  gcc/config/loongarch/genopts/loongarch-strings
! ded350b029380de277251c3b7347583b  gcc/config/loongarch/genopts/loongarch.opt.in
! acdb91543627a815a798b11956b07b2a  gcc/config/loongarch/gnu-user.h
! 95ae01096113fe96d619bad8856f42bb  gcc/config/loongarch/la464.md
! 56e5168bbc8e9c193b87fc1920fcfb6d  gcc/config/loongarch/larchintrin.h
! 4931a2a272cc8a3b79988a7d6ccc02c8  gcc/config/loongarch/linux.h
! 4478ba8b020d217b6c1a11fc9c47b936  gcc/config/loongarch/loongarch-builtins.cc
! 8e2625d9c6c2c35c490b0cd31993b76a  gcc/config/loongarch/loongarch-c.cc
! ace73e7e757a4f56adafcb35fb9e486c  gcc/config/loongarch/loongarch-cpu.cc
! a2aeb48ff36c7ee14b7c676fc27a7121  gcc/config/loongarch/loongarch-cpu.h
! 1a91f08260f98519d414b9a3876fa1f7  gcc/config/loongarch/loongarch-def.c
! a5a8ae397bdf9e20c3426ef156508e74  gcc/config/loongarch/loongarch-def.h
! 4670015876dc5a6e00ef40d1c64e9927  gcc/config/loongarch/loongarch-driver.cc
! 2aecf54c515ea3d787acb6c1e7a12179  gcc/config/loongarch/loongarch-driver.h
! 2e31c78b40b220a07ed80f61efc3dc69  gcc/config/loongarch/loongarch-ftypes.def
! ae7cfcf36635345c7a6629d3bfbb53d6  gcc/config/loongarch/loongarch-modes.def
! 857bf8095d8124985c2246a77f21991e  gcc/config/loongarch/loongarch-opts.cc
! aae7b2afa9f097a27363ba46977609e4  gcc/config/loongarch/loongarch-opts.h
! d46c773909f62a30c91885fbb5ee4416  gcc/config/loongarch/loongarch-protos.h
! b7e7ae8ebef609fa5b3638fc6d8da01c  gcc/config/loongarch/loongarch-str.h
! 1d43515673828076071c491e3cdd6f1f  gcc/config/loongarch/loongarch-tune.h
! 5b2363c74394edf1a424e4a493a039fe  gcc/config/loongarch/loongarch.cc
! e446efa41b6eb3b45fecc85334dc92e6  gcc/config/loongarch/loongarch.h
! 7aa96982b8d66816b7812be6d62b4022  gcc/config/loongarch/loongarch.md
! e4801451e4a5033b9051b0387667a75a  gcc/config/loongarch/loongarch.opt
! 2f8826252720e1086662bde87ecbe35f  gcc/config/loongarch/predicates.md
! 79e5d3aad1cd3f508decbc918ee4419c  gcc/config/loongarch/sync.md
! b99456ed262c9decb8e975492dece6b9  gcc/config/loongarch/t-linux
! e0de5482d1cfc851b546ea8ca8bc701c  gcc/config/loongarch/t-loongarch
! 9d3e662c86b39e1b1706950c1178e350  gcc/config/lynx.h
! 23506809f52488ffbf9ff1d84b85d128  gcc/config/lynx.opt
! 016e52ad546e21ac6239f824ded324fd  gcc/config/m32c/addsub.md
! 8b586abd8a9b900436591c0e7f840b44  gcc/config/m32c/bitops.md
! d58b6bc72439219ee755327e323761d1  gcc/config/m32c/blkmov.md
! 99569be57f76019b23009d2bc1d3046a  gcc/config/m32c/cond.md
! fbb5c3bcde4fcc65dd9cd417ed453978  gcc/config/m32c/constraints.md
! 0eb99796f46713993b979497a11c3a04  gcc/config/m32c/jump.md
! 3cacdb3f9d9906bc7b3fc63e39ef8a37  gcc/config/m32c/m32c-modes.def
! 5f99b5979c129b35bf248648e0aa2bf3  gcc/config/m32c/m32c-pragma.cc
! dbde15fa098e25f96c66c5e56ee25a6f  gcc/config/m32c/m32c-protos.h
! 0fa989c9e792dac756bb3ce78db29b0e  gcc/config/m32c/m32c.abi
! 6d5af05fee8b5b653fcb216fbd8b51c2  gcc/config/m32c/m32c.cc
! 885758875b07d3807384b0e0151eb380  gcc/config/m32c/m32c.h
! 230f2b6d7b66aa1a362cd1558bdcaedc  gcc/config/m32c/m32c.md
! bb4cd415019744a47fe8a97a1390587e  gcc/config/m32c/m32c.opt
! f5e82b6610f0e990b6c8a62d792e86e1  gcc/config/m32c/minmax.md
! 8bf829a6dcb11f1919f9a86d29051d21  gcc/config/m32c/mov.md
! ab04893f8fce2e463a4394718ac81489  gcc/config/m32c/muldiv.md
! 1d488412b7aeab27385ebf608274f058  gcc/config/m32c/predicates.md
! 82588cf270344c96622056a59ceb71d8  gcc/config/m32c/prologue.md
! 27c0f6f29bef7adf5f2f544ff79078a4  gcc/config/m32c/shift.md
! 03446dbf80e1e73239f23434488ca1cb  gcc/config/m32c/t-m32c
! c2cb241feb926094d5e0edc8f52f5059  gcc/config/m32r/constraints.md
! 24b95bb041b11bc328c6069ffbd7b8e3  gcc/config/m32r/little.h
! 39f2582339f7aa11ed234d4a35de19f1  gcc/config/m32r/m32r-opts.h
! 41a1134a3b4a3946e232f14d94caccf4  gcc/config/m32r/m32r-protos.h
! 24dc7010c41af14453e91733dd23aa62  gcc/config/m32r/m32r.cc
! d12d9ac92b1aeb3f9d9091e5ab3cccc9  gcc/config/m32r/m32r.h
! db7a255449e5ebe9b04b0772a59fe3c1  gcc/config/m32r/m32r.md
! 48ce6304855bcfc17ade3b3a047f6fbf  gcc/config/m32r/m32r.opt
! 792e8c457e303a414e49fdbc84e06d63  gcc/config/m32r/predicates.md
! 8d7dd29937b63ed7c5875e291fb3c8b9  gcc/config/m32r/t-m32r
! 2d3cea415dce88d0436dcf5dd442bd5b  gcc/config/m68k/cf.md
! 798cb191098bd84f8921d601fef3c226  gcc/config/m68k/constraints.md
! 0861a0a0037e82364b388464e3ebaeef  gcc/config/m68k/genopt.sh
! e3aa7f53971c7a1c0547ceb4e3293867  gcc/config/m68k/ieee.opt
! 8f209221764ec9a61bd061595ce3ab15  gcc/config/m68k/linux.h
! 14c386cda6a4da94f7949488335867df  gcc/config/m68k/m68020-elf.h
! e69652ec0da1b16748e49d9a9aa43fd1  gcc/config/m68k/m68k-devices.def
! 7fa0597ff34e73399d5f986bbe1f85ee  gcc/config/m68k/m68k-isas.def
! 3fcc967caf3a1ffde1a3beaa614ee528  gcc/config/m68k/m68k-microarchs.def
! 52786dd463843336ff462cf4ee7da333  gcc/config/m68k/m68k-modes.def
! 4f3e9a740e548652d75199963b835286  gcc/config/m68k/m68k-none.h
! f2262f7fe73123d5bb67e9ea0a46f45e  gcc/config/m68k/m68k-opts.h
! f37294a8c93a385692fcf8a6c34bbb4e  gcc/config/m68k/m68k-protos.h
! 8ef7f85123f80efd70ca2053b76fabb6  gcc/config/m68k/m68k-tables.opt
! 762efe6c5eb32766eb2d564eba692ba7  gcc/config/m68k/m68k.cc
! 33bf35b7f6f7b51b60091914e1cc7f71  gcc/config/m68k/m68k.h
! 16eeef2b76981ead0ff80cdab763aedf  gcc/config/m68k/m68k.md
! 018e6dfdd405d345967e6a283f1d9f7c  gcc/config/m68k/m68k.opt
! 6bc1a5d45ab16f3c9faffb5f3a5f07c9  gcc/config/m68k/m68kelf.h
! 6f1eec5637b95bd36d716cd9c791cf79  gcc/config/m68k/m68kemb.h
  c0472199959f16fcb58702880954da6e  gcc/config/m68k/math-68881.h
! b5cccdb72f07b26c040c131158501ef9  gcc/config/m68k/netbsd-elf.h
! ba42dcac5fe296a389e5207c0574bc52  gcc/config/m68k/openbsd.h
! 80a85bee9a95623e7bccedc2cd185439  gcc/config/m68k/predicates.md
! 79bee862afacb4c34dfc1ced957e2ebe  gcc/config/m68k/print-sysroot-suffix.sh
! 348f647976c840e422f2e6edb6bcee70  gcc/config/m68k/rtemself.h
! 4e7906a1f312bd5ec1caf3c4d87e8fc9  gcc/config/m68k/sync.md
  19d5ed41f3394c9423ff3afe64804076  gcc/config/m68k/t-cf
! 11229d6cb151a96a68a0a70072ffbc63  gcc/config/m68k/t-linux
  baa4595148bafa6426b8d665881ced45  gcc/config/m68k/t-m68k
  c8278c25339f71d746d91a193efd6cea  gcc/config/m68k/t-m68kbare
! d74faa470a39855df51f466c4898f107  gcc/config/m68k/t-mlibs
  0fd519d41689e5af998ca53a2f11e7d2  gcc/config/m68k/t-openbsd
  2919d876e31e6c4e0955d8cd4be5ce28  gcc/config/m68k/t-opts
  2899d62cd61c46fe504594a232959581  gcc/config/m68k/t-rtems
! 229aae7b2d085e51e675e7302b5ecc82  gcc/config/m68k/t-uclinux
! fda941ae02e51a80a4ebe460e0bd3867  gcc/config/m68k/uclinux.h
! 6e4a1cc8757cadd80fbce45da7e6c307  gcc/config/m68k/uclinux.opt
! 27ad9e177bf2acc977fe9d75abc8a144  gcc/config/mcore/constraints.md
! be9181bb16e07652d1c15ecc77816593  gcc/config/mcore/mcore-elf.h
! e71b97f4966f5e8ead43765420adef2c  gcc/config/mcore/mcore-protos.h
! 7cbfe27a9494cefc423be82b141bece2  gcc/config/mcore/mcore.cc
! 93115bfd015f185d8c559009bcdee6ec  gcc/config/mcore/mcore.h
! 8addc6804a0435c54edc06da5e0b125e  gcc/config/mcore/mcore.md
! 8a99c6e1e14d2d04131f13e2dfefa42a  gcc/config/mcore/mcore.opt
! 1c1847f59d486e530e2120476556cbe3  gcc/config/mcore/predicates.md
! 04140e4ad891529f72132ddc3fe62a2d  gcc/config/mcore/t-mcore
! a8f362504d7fe2934de773cf5d76e1f6  gcc/config/microblaze/constraints.md
! 535b98cb509fcf7a3029618618e142ab  gcc/config/microblaze/linux.h
! e37424b2a8529db0640af5c2106ecaf2  gcc/config/microblaze/microblaze-c.cc
! 8b0442b11fe603c25982f45e9871f63c  gcc/config/microblaze/microblaze-protos.h
! dcc7a068cb08f52797f9c445f3a90c4c  gcc/config/microblaze/microblaze.cc
! 4553b7f963c104ee07918e94240f7fcf  gcc/config/microblaze/microblaze.h
! 8ba01fa707c6aaadb510044b081a0206  gcc/config/microblaze/microblaze.md
! 29f473e772e6de583f79391fcdfa3df3  gcc/config/microblaze/microblaze.opt
! 240820b26da0767245f027b651885623  gcc/config/microblaze/predicates.md
! cec1c4d2def09486ca1ea66fafd37669  gcc/config/microblaze/rtems.h
! 49c243e716e9d42f05bdb5e45234b79d  gcc/config/microblaze/sync.md
  df031372af9c825d21d2058d266247a0  gcc/config/microblaze/t-microblaze
  63ccba4e7f745d36609d7c129bac6288  gcc/config/microblaze/t-microblaze-linux
  a8b08640136e3e7712d2278eb84c21d9  gcc/config/microblaze/t-rtems
! 3fd8d272e3fbc12aca5101e3fce8984c  gcc/config/mips/10000.md
! ce75b9468bcf1f1c9d8037bf003a57e2  gcc/config/mips/20kc.md
! fc05ee0e3d07e79cb3ad3b811ae911e9  gcc/config/mips/24k.md
! ae48bd3db75ae4f739f956dd6149c98e  gcc/config/mips/3000.md
! 7c8dccfbaf2f7434a466e1dd3d6bd7f6  gcc/config/mips/4000.md
! 0d3073c13a03a9d5b5a715b8c6c2c393  gcc/config/mips/4100.md
! 878dda1121b681ed50fa3c8bfdb89663  gcc/config/mips/4130.md
! 7faa94d46ec587e1820bc65a53ec43b0  gcc/config/mips/4300.md
! 79e2d75ebb4e3363002b565fe215d2e9  gcc/config/mips/4600.md
! 9684c25f8ab37529162f7f2cacd2d200  gcc/config/mips/4k.md
! a7eee6cf039aa12d55e8973ce5e2fded  gcc/config/mips/5000.md
! 3ea91aa92c87efdd5d65cf8db5638269  gcc/config/mips/5400.md
! 289b14d390bca42862ddd6c922ff9471  gcc/config/mips/5500.md
! 65c9340672885ca4f0ccbf6749dd1bcd  gcc/config/mips/5k.md
! 23d143c81c71b1a7e04631823380ba1b  gcc/config/mips/6000.md
! 54d863a694ef80ae45bd87dfc5b36244  gcc/config/mips/7000.md
! b8d1296ede02cb613ca1733bd0a067d1  gcc/config/mips/74k.md
! 417d7beb506d09400408e452ff8eab6d  gcc/config/mips/9000.md
! ef701699babe6b4109ea6eb7ef5a6fed  gcc/config/mips/constraints.md
! b295d4052fb03ef383dc8260f7d8f85c  gcc/config/mips/driver-native.cc
! fcf51d35a900789cb92722ab62ac55e1  gcc/config/mips/elf.h
! 1ecacee3d49cec1177f0cc53654acc57  gcc/config/mips/elfoabi.h
! f6eb13f4de92ed1a37dfdd87773356d9  gcc/config/mips/elforion.h
! f193eaa7bf50f1d933ec91faa0655ae2  gcc/config/mips/frame-header-opt.cc
! a1644bf3f55a5bbcdc29d6252ad54f6b  gcc/config/mips/generic.md
! 2d3c5db0f53ac8a177ef6fa4125f2569  gcc/config/mips/genopt.sh
! 498ac73327e3a44ce7383258f455f8fc  gcc/config/mips/gnu-user.h
! 71892bab0a5ecc907f02ca4039f63ced  gcc/config/mips/gs264e.md
! 20014aa5cc4c13142e37f7196d499c6d  gcc/config/mips/gs464.md
! 10032bee7cc7fc023fcd95778eed8808  gcc/config/mips/gs464e.md
! 88e1577acdfc4968c5f4689dc2c5ea8a  gcc/config/mips/i6400.md
! 5552a2c5843bcc8206f23325a7853002  gcc/config/mips/linux-common.h
! bced7b25b271ade624c6902d5c1cfab0  gcc/config/mips/linux.h
! 007dda5c748860a750005cbb63973198  gcc/config/mips/loongson-mmi.md
! 0f8f9f4cb38c113fd78e570855ab089c  gcc/config/mips/loongson-mmiintrin.h
! 773255a813d68a14ed467e90122bb610  gcc/config/mips/loongson.h
! c239f0ca4a0f419fbd84dd1d201c147b  gcc/config/mips/loongson2ef.md
! 0b3591da1e2abd5575b9e89e3b94c66c  gcc/config/mips/m5100.md
! 99aea14df909b7b6ec53c6908c411899  gcc/config/mips/micromips.md
! 0274332261cef4427731eb461120be25  gcc/config/mips/mips-cpus.def
! cb2b8abd6a7784d25fa02dc7aa2ec0e9  gcc/config/mips/mips-d.cc
! e2a5b46a69472ea8c1b02e68518c0831  gcc/config/mips/mips-d.h
! ac7b52c7fc21bb9196eee41f2f0dc65a  gcc/config/mips/mips-dsp.md
! d7c7d648633e3751538d001af47d7dc0  gcc/config/mips/mips-dspr2.md
! c2cfe00ae73a68f07ce649b980612c9c  gcc/config/mips/mips-fixed.md
! c08e4bab6c1e75a72083a45020a5b446  gcc/config/mips/mips-ftypes.def
! 78532a885490fb3a90b0c4a85437f2e1  gcc/config/mips/mips-modes.def
! 95304392ef1c512d3f1d5e81af2ff243  gcc/config/mips/mips-msa.md
! 30376b626fc9050218641fcde797c92f  gcc/config/mips/mips-opts.h
! b6ef595c9b75af5e5679a8799c944443  gcc/config/mips/mips-protos.h
! 32ba594f8a210398a1e585dfcc8b1d8d  gcc/config/mips/mips-ps-3d.md
! e0f0f7f5cd3f66adff43ada64fd352e1  gcc/config/mips/mips-tables.opt
! 78bf9e899b0629b2d5c306cdb23f4f35  gcc/config/mips/mips.cc
! 9e3bffdb2b33a326178eddd2138674d0  gcc/config/mips/mips.h
! fd1a1985d2fa9e92b6867215ad4b9127  gcc/config/mips/mips.md
! 3b233a9733cc91ecbf6950b871004528  gcc/config/mips/mips.opt
! 38552810daf255602b06ef0e6de4f4be  gcc/config/mips/msa.h
! d8bb19f061c5751183b69fc61ede2614  gcc/config/mips/mti-elf.h
! 99b836a7c69e58e13960c0e222c5f1af  gcc/config/mips/mti-linux.h
! f9e42d7b91a52c81253723e958b1f4e8  gcc/config/mips/n32-elf.h
! 6b0ad25e157683a41ca840c1400d801c  gcc/config/mips/netbsd.h
! 11f2d8030053a1a3d372c1f804706e02  gcc/config/mips/octeon.md
! 8cc1550c86282a1158b6cb2ea0eafa78  gcc/config/mips/p5600.md
! 13e106e8edcdb8e59b8ea3cc1804c4c8  gcc/config/mips/p6600.md
! 1ec21ff2ad71e112fab20366a478200f  gcc/config/mips/predicates.md
! d670f95c96a32d2a10610c5a608c3c08  gcc/config/mips/r3900.h
! a3b8384daa8aeb8b0b04fc124f2908d6  gcc/config/mips/rtems.h
! 6eb561f3bcbcd869be40a5355628e983  gcc/config/mips/sb1.md
! 0b2f37aedd8b8564441b364605af3e85  gcc/config/mips/sde.h
! 01014869482d2669c74652c1b6646977  gcc/config/mips/sde.opt
! d46febe424ccc9d61f0f62a46fdf1e1c  gcc/config/mips/sdemtk.h
! 2230b0966c693d3f41deff38420d589f  gcc/config/mips/sr71k.md
! 2c4045a057e7986416dda11e662d91b8  gcc/config/mips/st.h
! 773b9e9f89dc673bb5a1116331786966  gcc/config/mips/sync.md
! 105324a7c4d96709ed89718b62899dae  gcc/config/mips/t-elf
! 882af6e76b3769a81c6032275f2c80e8  gcc/config/mips/t-img-elf
! 53b4a4903211900cb004e5c80c986cb5  gcc/config/mips/t-img-linux
  f99fd825138aaee60804b8915e20d22e  gcc/config/mips/t-irix6
! eee558daeede1040a5859c8e30d5a7bf  gcc/config/mips/t-isa3264
! 3c133cce327239765e140f18b20673a3  gcc/config/mips/t-linux64
! b243d8428e0410fe448e31770df1a12c  gcc/config/mips/t-mips
! 5ac761b0ef9e3aea4b1312e4d0d9f7f7  gcc/config/mips/t-mti-elf
! 8204c5bb5f55367889d397d9250fc7e6  gcc/config/mips/t-mti-linux
! ca5473df790f1e357f928d832a0eb44d  gcc/config/mips/t-r3900
! 788fe7d3a593dbb0869a13efb087e5d3  gcc/config/mips/t-rtems
! 84cfe34b411a3f95fabe3d5e3e81e54c  gcc/config/mips/t-sb1
! 0ef632dc71010084170ce62e194ecbdf  gcc/config/mips/t-sde
! f6ac790a786fec873736a1bb178664d8  gcc/config/mips/t-sdemtk
! c45f62e8122fe49ae21b6f371d6119ac  gcc/config/mips/t-sr71k
! 8e75097ddf2559b5889f57e5c18773a4  gcc/config/mips/t-st
! 9f803e78ee9275aa699b62a257772ddf  gcc/config/mips/t-vr
! 47112a17b3e731038bff71888381e1d1  gcc/config/mips/t-vxworks
! 4d04f086b5e53a9ca6a06cb5568edba6  gcc/config/mips/vr.h
! c971d00e213c8f8f5e3e88c4c63bc429  gcc/config/mips/vxworks.h
  06537756ff14579bc850163a24d5a2f8  gcc/config/mips/x-native
! e761789d938248c299cc8697266cc49c  gcc/config/mips/xlp.md
! df03bfd5b8b46a33a2ee9f6a152ca229  gcc/config/mips/xlr.md
! 686174d66a27e474efb1a60601fd60aa  gcc/config/mmix/constraints.md
! 0bd29f4ebf15da84dfee7991ef155384  gcc/config/mmix/mmix-modes.def
! 9ab3f9b438d61d22bd3cbc4bf9e4de88  gcc/config/mmix/mmix-protos.h
! c03a6751ead85afb28244dbc93f089b7  gcc/config/mmix/mmix.cc
! 9b8a99051c09be18f059708a0ae075d7  gcc/config/mmix/mmix.h
! 6b864e936fee519e653b58df9d8f35b6  gcc/config/mmix/mmix.md
! 9958aa497a551644bba6982f6eb5e4fa  gcc/config/mmix/mmix.opt
! 2cdd8afcaf2d23dacd930fcfe5a5d85d  gcc/config/mmix/predicates.md
! ef47c9ec88f84e91fc7245cb3ff38879  gcc/config/mmix/t-mmix
! 015ec1564fd649e99ec64b35ea13bf4e  gcc/config/mn10300/constraints.md
! 2b509cde05d1fae1d8d52caede19d437  gcc/config/mn10300/linux.h
! 909ba78b625eb6003ad2badbca1456f8  gcc/config/mn10300/mn10300-modes.def
! 9ab2cd7dd17e5885fe57c64193957d40  gcc/config/mn10300/mn10300-opts.h
! 1515225132a5e6312c3ebc4424c07f74  gcc/config/mn10300/mn10300-protos.h
! 77984f764a233eafdd1bc0ebe00c1234  gcc/config/mn10300/mn10300.cc
! 7666bc1ce560748b4ebd4a3bfb7b4f87  gcc/config/mn10300/mn10300.h
! 1853784d3a2a2632bd9aa96098fc1a26  gcc/config/mn10300/mn10300.md
! 980008582027a9aaca7eb9dd295a24ce  gcc/config/mn10300/mn10300.opt
! 49251c5f3b920645c82298d762f7aa3a  gcc/config/mn10300/predicates.md
! 7eb3ce4cd098d0cf4ffcf36e92a96aed  gcc/config/mn10300/t-mn10300
! d5511f533f317b9aad0a7141a157ce04  gcc/config/moxie/constraints.md
! dae48d5cfba91f9c4ed07e9441fc538c  gcc/config/moxie/moxie-protos.h
! f6834fdcb2f26d4f597aba06a4ebcacc  gcc/config/moxie/moxie.cc
! ae06eba16a4ce8ed63d8ea8f3041b7f9  gcc/config/moxie/moxie.h
! 7140911694d9c9091199b03db93620d8  gcc/config/moxie/moxie.md
! 1837028ced96d309e750efe8c90f14ea  gcc/config/moxie/moxie.opt
! aff2266755956e4e731119867e41732d  gcc/config/moxie/moxiebox.h
! 3d6393c7cc858cd8666fe7b02a8ba36f  gcc/config/moxie/predicates.md
! ae66c6b3b5ee41205c4c3b98150da25e  gcc/config/moxie/rtems.h
! 54177c30b256e619bdbce787c301a52e  gcc/config/moxie/t-moxie
! f42a793e62dc90e7824772c759961acd  gcc/config/moxie/uclinux.h
  f276505b774e975b88b6c90362783e73  gcc/config/msp430/README.txt
! de41174f599e93592b0edad3c5a5960f  gcc/config/msp430/constraints.md
! 4426e3a5af524b08ee9af7d09259d696  gcc/config/msp430/driver-msp430.cc
! 793140a066cc3f3bbde3d97c1b9ffa72  gcc/config/msp430/msp430-c.cc
! 0aae0b6e3327f804ff070ca8043ad9b2  gcc/config/msp430/msp430-devices.cc
! 9447d9286f19921a535476a06bcdafa8  gcc/config/msp430/msp430-devices.h
  e081143def3cf3a59cd1181fc9162d41  gcc/config/msp430/msp430-modes.def
! d990fef13cd9e360d159edbc7ca71d98  gcc/config/msp430/msp430-opts.h
! 372ca3540e477fa86f54f61e61148696  gcc/config/msp430/msp430-protos.h
! afb03bbb36dcf0cd96cd37df67d1c645  gcc/config/msp430/msp430.cc
! 055371e3a6249a9310c239780ce0d565  gcc/config/msp430/msp430.h
! b9d91e165417db680bc5e582e9cd89d1  gcc/config/msp430/msp430.md
  a20875cf634836537faeacfb5a4f59d1  gcc/config/msp430/msp430.opt
! fea186c1e4ce847ecd34a8634686a253  gcc/config/msp430/predicates.md
! 044e57ade5ab2b96a9bdba1919529b7c  gcc/config/msp430/t-msp430
! 87bbc20019afb9b98cb19a16c8603e36  gcc/config/nds32/constants.md
! 3a47506ae0f7519a5e9f4c43c5286f64  gcc/config/nds32/constraints.md
! d5cc0fce76e87da930b756ae71235582  gcc/config/nds32/elf.h
! 59fe2ce3986bfd436cbffcf64c6f0305  gcc/config/nds32/iterators.md
! 95709e31a69b9341e53d01c70b26623e  gcc/config/nds32/linux.h
! 413dc56fd8a10ae1df391e867c70a4bc  gcc/config/nds32/nds32-cost.cc
! f9c3431641f1b2dda1d1ca20eab0f5be  gcc/config/nds32/nds32-doubleword.md
! 884707335775dae45253ea347846ebb2  gcc/config/nds32/nds32-dspext.md
! a0a945e38d127ae387cebe430771511c  gcc/config/nds32/nds32-e8.md
  c316334a86026beb55e5c25b4b855f95  gcc/config/nds32/nds32-elf.opt
! fe10a4f9bc73b32dd62e7e59f16cc681  gcc/config/nds32/nds32-fp-as-gp.cc
! 9175602158be5b174d11233937c4a9f6  gcc/config/nds32/nds32-fpu.md
! 16935f2565971a2db953bad7100bfc1a  gcc/config/nds32/nds32-graywolf.md
! cdbfac1b83a167bd20e9d7361e31837d  gcc/config/nds32/nds32-intrinsic.cc
! 997412cf3b25411d62701c816701a99b  gcc/config/nds32/nds32-intrinsic.md
! 61be4a68fa0ce9005bdd1cbe0f079f0a  gcc/config/nds32/nds32-isr.cc
  d94163fd5e4660359b8b12a0d90ed1bd  gcc/config/nds32/nds32-linux.opt
! f75f732a9f8ad1bb870569e2b36c7fc6  gcc/config/nds32/nds32-md-auxiliary.cc
! 7bd94222db80b18f4d97a65e1863b39f  gcc/config/nds32/nds32-memory-manipulation.cc
! 23771d7dc0668cdfc3da500506305a7e  gcc/config/nds32/nds32-modes.def
! 6ff1d189045848d41f9b7c8f7082b9d4  gcc/config/nds32/nds32-multiple.md
! 1bb464e16da61020c96d85240f7d0a1f  gcc/config/nds32/nds32-n10.md
! 0096e72cdab08dc5680e82fafe217656  gcc/config/nds32/nds32-n13.md
! e66b381438033e8605466a102e7d9f01  gcc/config/nds32/nds32-n7.md
! 414f93d41f814e292bba3a2c9c3444a7  gcc/config/nds32/nds32-n8.md
! 0f80d0f3a24668ce2d554fb6c59f61f3  gcc/config/nds32/nds32-n9-2r1w.md
! 55ef3c6dbe0e3496d7a5708b7276f214  gcc/config/nds32/nds32-n9-3r2w.md
! 2c4b1b9805d611ecbd5a7d2824d92093  gcc/config/nds32/nds32-opts.h
! f6513944f4e44ed2f271e3b55aa624ef  gcc/config/nds32/nds32-peephole2.md
! 6df9fa0d8fc17db597336d37672a7742  gcc/config/nds32/nds32-pipelines-auxiliary.cc
! 52a63d0407e159aa438e57c2b85fe953  gcc/config/nds32/nds32-predicates.cc
! b3a05f47ce92fcf67e1c23259289c7f0  gcc/config/nds32/nds32-protos.h
! f516003b49868c78e5b053cbdfacbe47  gcc/config/nds32/nds32-relax-opt.cc
! 7c832c3e3db3b050acd25af3276d86c4  gcc/config/nds32/nds32-utils.cc
! 51c69a59782879442ad53c1b616a6814  gcc/config/nds32/nds32.cc
! 83cd95f8643bbf3041167196ae7e8c3e  gcc/config/nds32/nds32.h
! 52089dac78a46bf66a614efc8b246a08  gcc/config/nds32/nds32.md
! 422640720fe2f9b6a6b6c66c282d48b3  gcc/config/nds32/nds32.opt
  c09acceb380f58ddb795ee3e973945d7  gcc/config/nds32/nds32_init.inc
! 86429f22a193270622b0838dc1500b15  gcc/config/nds32/nds32_intrinsic.h
! bc9312acc05fd09d36eb81f2983ccad5  gcc/config/nds32/nds32_isr.h
! aede8a09fd9a773bbecfbf6e8c08038c  gcc/config/nds32/pipelines.md
! 80f57eb77038d191b05449c0a80e3504  gcc/config/nds32/predicates.md
! 19002bb606ee60cac57c8291d659a153  gcc/config/nds32/t-elf
! d7e08980494ecd20189985785a175f6a  gcc/config/nds32/t-linux
! ae4bc654cc60dcaf2edfe76cb645ad23  gcc/config/nds32/t-mlibs
! bed1ce23479587dc6ddff8566705eccb  gcc/config/nds32/t-nds32
! 69c7537270e57cf486e383cd459fe421  gcc/config/netbsd-d.cc
! 966626ea0b02c93ba357e0784f3679c3  gcc/config/netbsd-elf.h
! 4d34e79920cee6463f0d786e9585d6c9  gcc/config/netbsd-elf.opt
! 3835db93f54677ef27aee4168b18acc6  gcc/config/netbsd-protos.h
! 91f5206e6f0286feffbf3ba55cd5ab9f  gcc/config/netbsd-stdint.h
! eca10ced41e82a8813a21f6ff7331c0b  gcc/config/netbsd.cc
! f30b86255a43119c935a7d5e9c5be7b9  gcc/config/netbsd.h
! 46eebba6697be072f93b747ac0d234d0  gcc/config/netbsd.opt
! 94129e547c26cd2f7be1b70e33e2eb87  gcc/config/newlib-stdint.h
! a7effe8c5872b7bc046275e653549353  gcc/config/nios2/constraints.md
! c149753ff5a1b66a9afc26fc048339b3  gcc/config/nios2/elf.h
! c9dd0ff78df70dc43c48714111d73062  gcc/config/nios2/elf.opt
! df5ddef9ef74666e3c22ef05e2b5d8ba  gcc/config/nios2/ldstwm.md
! 76d093101ccc86f203261cf0c6b90d46  gcc/config/nios2/linux.h
! 5cfb086db47eb08bcd1defead906bfdc  gcc/config/nios2/nios2-ldstwm.sml
! 208172f05ae03bc93b6789b356f8df0e  gcc/config/nios2/nios2-opts.h
! 37a9c078b28b8244f4fcf9ff08a74428  gcc/config/nios2/nios2-protos.h
! 912ac5f9be96872a8f3cef6a9b82b6fb  gcc/config/nios2/nios2.cc
! 4420a3d2bfa12a42c840889a25c8016f  gcc/config/nios2/nios2.h
! 9db5acb3074c4c2fe9b74e98fd9f5a29  gcc/config/nios2/nios2.md
! 597bd1586f7d01ed24872af4b787f125  gcc/config/nios2/nios2.opt
! b75c4b63cb509eae2c35f71c4421b25e  gcc/config/nios2/predicates.md
! 1eea628b2ad3122cb2ba6ebddfef4507  gcc/config/nios2/rtems.h
! d555ceeef4a0514d64e9cce261bf335c  gcc/config/nios2/sync.md
! 5fefc74a42eebc11746e9038cddde8c1  gcc/config/nios2/t-nios2
  3369cb7fd894ad0eaae773a6ab4a00dd  gcc/config/nios2/t-rtems
! 4cf5fbe884f50c8e940b209ed6d2a5fa  gcc/config/nvptx/gen-copyright.sh
! bc6a34abce497a2395e9530da3899fcb  gcc/config/nvptx/gen-h.sh
! 180c6874a6ae3249c84851d1f183ec2b  gcc/config/nvptx/gen-multilib-matches.sh
! 0d5c39d35e35f7bc6547d7f3220cda8d  gcc/config/nvptx/gen-omp-device-properties.sh
! 49f3ec7d2242d30c8fbdbaec46246cce  gcc/config/nvptx/gen-opt.sh
! 157f6ca0280b9bd02ee5eb8f55d3ded1  gcc/config/nvptx/mkoffload.cc
! 435c5815322d90978171812cf2369ca0  gcc/config/nvptx/nvptx-c.cc
! fb5e4ae6b9ac27e8a5d895927e338ac3  gcc/config/nvptx/nvptx-gen.h
! 7530aaad722528afb44d183f793d21af  gcc/config/nvptx/nvptx-gen.opt
  83dfca9e2eb78c0e3ab66a3ff9681ad3  gcc/config/nvptx/nvptx-modes.def
! 5715146529b157ba9fe83d41ae7fce48  gcc/config/nvptx/nvptx-opts.h
! 150dfbfb507d4c608d4d20b126b5fdce  gcc/config/nvptx/nvptx-protos.h
! eb2b7fd7d95a42a6075a41141051d9bc  gcc/config/nvptx/nvptx-sm.def
! 66a953260e5d8e62a7327f72e780c96d  gcc/config/nvptx/nvptx.cc
! 7f391f72b033867c9d904eb6c94585b1  gcc/config/nvptx/nvptx.h
! 765b71da81288f74bad49799b07e8378  gcc/config/nvptx/nvptx.md
! 1a6cb783e21267f9ea1b9e52f864a575  gcc/config/nvptx/nvptx.opt
! 246a6413fefc23b4bab120f6c3b7e3b8  gcc/config/nvptx/offload.h
! 64e41b90884bcc60ef49490cc20e0fc1  gcc/config/nvptx/t-nvptx
  bc001c03517e71a9f90411d80f0f2134  gcc/config/nvptx/t-omp-device
! 2d7852b75d5d086ea6977f90696db975  gcc/config/openbsd-d.cc
! a1d344d5b3d984fa4601efddd3f3485d  gcc/config/openbsd-libpthread.h
  3d4a70d0decf61f1fba17df545cea7f5  gcc/config/openbsd-stdint.h
! 758475d8386fa07e56728ce8227e5aa6  gcc/config/openbsd.h
! 42b0147c1c5264691eccb2dd159b2bb8  gcc/config/openbsd.opt
! 4bec063065973e797c65c81be67cb8bf  gcc/config/or1k/constraints.md
! cf0dc58f98994391b26db1df2da0dc5a  gcc/config/or1k/elf.h
! 1cacdd058732a643e03ddd0735aa64bf  gcc/config/or1k/elf.opt
! 389f95f6cc42c48e6fe66561c7312389  gcc/config/or1k/linux.h
! 2942dcd3a9b25aa4c85b45981f3b9f9a  gcc/config/or1k/or1k-opts.h
! 268f33128b5150856c2afd0ed48ba20a  gcc/config/or1k/or1k-protos.h
! 0b43339e95e9828f3d6195f2f9eae7d0  gcc/config/or1k/or1k.cc
! cd2d430ccafa1c4e0adb49e85e5f9d27  gcc/config/or1k/or1k.h
! caff17c926b71b8c98b61d7f1444acd8  gcc/config/or1k/or1k.md
! 71bb5b257d9977b77da3d2e4cbc779dc  gcc/config/or1k/or1k.opt
! 5de9bd314c00cf2823cd148f80c2a82d  gcc/config/or1k/predicates.md
! 2c237e1aa11f3c3ccb08ed78a04b7243  gcc/config/or1k/rtems.h
! d36036008f5afc69e1828e2c6728bdb6  gcc/config/or1k/t-or1k
  f58d4380ee68891690f4302989ce00cb  gcc/config/or1k/t-rtems
! 59e546fda21ab5e2834abc318385247b  gcc/config/pa/constraints.md
! ef2b5d14f2d69172c1bdd4c5a868994a  gcc/config/pa/elf.h
! 2d5b6f834e5271a82ce17ef9d2dba887  gcc/config/pa/pa-64.h
! 5eae63f8d57aa8dc775cb1e624882795  gcc/config/pa/pa-d.cc
! cd1b69e771282528105e840b22a5b857  gcc/config/pa/pa-d.h
! 57262f0d0e4cc64ad59378e8575e80d5  gcc/config/pa/pa-hpux.h
! de4634deb58f1ffb77af288bd4e8ff65  gcc/config/pa/pa-hpux.opt
! 2335ba3f835b2da87a506d81fc26540e  gcc/config/pa/pa-hpux1010.h
! 403bf4484fde9a94fb752d9384db0f05  gcc/config/pa/pa-hpux1010.opt
! a3544faaedbbf432069adffe270a58d9  gcc/config/pa/pa-hpux11.h
! b30a2b89233d310f6be15cb46069ae60  gcc/config/pa/pa-hpux1111.h
! 4ad32e7623de40f1c03d99c01b056f13  gcc/config/pa/pa-hpux1111.opt
! 8962dc7a9fa03b766a4606f2513b8386  gcc/config/pa/pa-hpux1131.h
! 6a37880bed7f96557cb92d4090a85c6c  gcc/config/pa/pa-hpux1131.opt
! 58bc928a5f7db9b5a8b975bee98b7904  gcc/config/pa/pa-linux.h
! 0f2572c80f183ff28125bbb6375e50cc  gcc/config/pa/pa-modes.def
! 71596c89e8b56d028c1753b980794531  gcc/config/pa/pa-netbsd.h
! d6ed3ea0b084fce25b744c74274588a5  gcc/config/pa/pa-openbsd.h
! e90c5d0d138f683915e32d52840e42cc  gcc/config/pa/pa-opts.h
! 6d7f17931666ea98e5793e2f41c93ac3  gcc/config/pa/pa-protos.h
! 055e67a791c0237e361cf7aa8678abc5  gcc/config/pa/pa.cc
! 948a0f04a993401c0b8969f0c9c708e1  gcc/config/pa/pa.h
! 5f0e46544e13c5c70a90247b685cffe5  gcc/config/pa/pa.md
! 20ba6e16f7d2cf5e5eb89348793f2610  gcc/config/pa/pa.opt
! 5268cfc61e7af09cd3b9ba6d2fa3faff  gcc/config/pa/pa32-linux.h
! c14312e902452e23e82cf7aea2550044  gcc/config/pa/pa32-netbsd.h
! caa0cd2212d43533afb7a45d04b90d37  gcc/config/pa/pa32-openbsd.h
! c7291c4ab3d77b3f24e59ddcdee9656a  gcc/config/pa/pa32-regs.h
! d0d96945cd58ca17fa448932b5e659a6  gcc/config/pa/pa64-hpux.h
! 718dfdd18a2fdc17a1b3b0ab54f882dc  gcc/config/pa/pa64-hpux.opt
! a3aabcc63a7cb1d7d4fc907b4a3cc6ed  gcc/config/pa/pa64-linux.h
! ec3f04e42dcd7729f90f95b82822bce2  gcc/config/pa/pa64-regs.h
  a9a6afd79b827565ffb8de8330b4cfe6  gcc/config/pa/pa64-start.h
! 2206b03033398ae4bd6feea7a7e5a1cf  gcc/config/pa/predicates.md
! 77adf6190588d2e1bcac8905fd70f92f  gcc/config/pa/som.h
  6fd25f8c665d2d7390ea94c01dcb8e34  gcc/config/pa/t-linux
  16f4ce216414d19c044dd93c60d948ae  gcc/config/pa/t-pa
! 27592c1a3f440e53677d9a2506ed70a7  gcc/config/pdp11/constraints.md
! 41d830bebd54df2ce568681aa6de5878  gcc/config/pdp11/pdp11-modes.def
! b3ea13ea7ec004166b15744610815ecb  gcc/config/pdp11/pdp11-protos.h
! 8e737445990cf3f2dca2a30b374140d8  gcc/config/pdp11/pdp11.cc
! b3698a15f6dc0dd0be58d0edcd0bf549  gcc/config/pdp11/pdp11.h
! d0502c99dec9d5093df045cc586b0787  gcc/config/pdp11/pdp11.md
! 8785abe522af897a165a5d5d48871de8  gcc/config/pdp11/pdp11.opt
! 8ee3ccd1010f888302a236ff4ac540c4  gcc/config/pdp11/predicates.md
! c62eb02b7d0f6419236b2205ad9c47ea  gcc/config/pdp11/t-pdp11
! 3fe93a2a9bc6c1685b754b19f16a44cc  gcc/config/phoenix.h
! 4366582ec630b83be7163c5806b3783b  gcc/config/print-sysroot-suffix.sh
! 8d7e596f5c3db8b0371456849358b8ab  gcc/config/pru/alu-zext.md
! b069df1ef729c1cb0e123e9b35bebe31  gcc/config/pru/constraints.md
! b67ceabccf744a397b2520b8ea812b71  gcc/config/pru/predicates.md
! 4701bcdf88ad035ef344fff8779b9689  gcc/config/pru/pru-opts.h
! 28d90b5168091eddc31696b45b84fab2  gcc/config/pru/pru-passes.cc
! 29c7eb5409493aa6d04742b0f90e7235  gcc/config/pru/pru-pragma.cc
! 399c1319f1cf91a4f8b5efcaa9c7dcad  gcc/config/pru/pru-protos.h
! 0c4b52feab5371bf000d1c863b42a896  gcc/config/pru/pru.cc
! 16c747fc04d8ae71b20ed5561f1f7741  gcc/config/pru/pru.h
! 68081b58c72050678ab7b4646af573ac  gcc/config/pru/pru.md
! 0982d9d6c6c40fbf151b170da5698f08  gcc/config/pru/pru.opt
! a958a54f1eb9a02a649cc3a370a76be9  gcc/config/pru/t-pru
! e9af861b5837e640380b2d5ffc107d7d  gcc/config/riscv/arch-canonicalize
! d7016c15adb54a488bc10f953e91d2fd  gcc/config/riscv/bitmanip.md
! a4737c69a5d0ed9c26fb7664bbbf4965  gcc/config/riscv/constraints.md
! 9ab80786137b8674a48e3f8eef8e592b  gcc/config/riscv/crypto.md
! a6149a8b69c6faf94b21ca08c3d37471  gcc/config/riscv/elf.h
! 40f4593bb42cb3cd1433436d3a14d3cb  gcc/config/riscv/freebsd.h
! 506caa4941639a4cac9b4ad34c5a2a60  gcc/config/riscv/generic.md
! 13567b8f9fc115dd93de3793a5667084  gcc/config/riscv/genrvv-type-indexer.cc
! 3a424027ba3a05cd351ad2979a41e368  gcc/config/riscv/iterators.md
! 0e1100d0ce7f212dbad9610f6684a482  gcc/config/riscv/linux.h
! 701b528027b9b3d6efb0f26e336a6807  gcc/config/riscv/multilib-generator
! cbbd219aa739aad3052e17ac19f818fc  gcc/config/riscv/peephole.md
! 01c87cf58c6118e6a0dbdf85a6ad3c69  gcc/config/riscv/pic.md
! fb0d9014ef0677751abf296ee2a47bd6  gcc/config/riscv/predicates.md
! 69d85a36573a3d30b78f76e9dc78ffa3  gcc/config/riscv/riscv-builtins.cc
! f47e685e40948cab97f9ac8e5ff183a5  gcc/config/riscv/riscv-c.cc
! f0d69fa14a6488707934eaa098111b55  gcc/config/riscv/riscv-cmo.def
! c68d776c689c30d435d258eaede86792  gcc/config/riscv/riscv-cores.def
! 8734a078b5eb1a8e0546c141d48d9c9d  gcc/config/riscv/riscv-d.cc
! a3abbf03afde9a189a78c91beec94e64  gcc/config/riscv/riscv-d.h
! e30be5d2c4f7dfa2b6beb305bea2ea12  gcc/config/riscv/riscv-ftypes.def
! f3f94b653d8cecc0249cd794b4c799e0  gcc/config/riscv/riscv-modes.def
! bf9743382db1c7a8974f913243625e01  gcc/config/riscv/riscv-opts.h
! dbc1bcb911341ab64939d304e80f5552  gcc/config/riscv/riscv-passes.def
! bc3f05ad7df2605b0f5caad211993c9a  gcc/config/riscv/riscv-protos.h
! 83bcab9a1e5c3acab0c9b8df5fe07818  gcc/config/riscv/riscv-scalar-crypto.def
! ad3c79a3cefcfe0857cd6f6b4392ab24  gcc/config/riscv/riscv-selftests.cc
! 8d8399855655179e1f73eea5741550b0  gcc/config/riscv/riscv-shorten-memrefs.cc
! e3b04ea19f480d8ad374b844ed5dbb8e  gcc/config/riscv/riscv-sr.cc
! b0810ecd0d08084a321b9b025c6dbcd4  gcc/config/riscv/riscv-subset.h
! 7a76f07f1aac810394eafa4fa12f522e  gcc/config/riscv/riscv-v.cc
! 82db10e870bc18dc73a094bbb4e158ec  gcc/config/riscv/riscv-vector-builtins-bases.cc
! 50048c66ba232d8add15b01662a1a0a4  gcc/config/riscv/riscv-vector-builtins-bases.h
! a12f4965fb6339b5c8085978ead1d5f8  gcc/config/riscv/riscv-vector-builtins-functions.def
! 2dff81d29e4427dd04f4551d2052f6ca  gcc/config/riscv/riscv-vector-builtins-shapes.cc
! dea62e3acd642311d5bd0e7a98df2b17  gcc/config/riscv/riscv-vector-builtins-shapes.h
! 7d5e3e3dfb8d2d5f6a25d8c884940240  gcc/config/riscv/riscv-vector-builtins-types.def
! 63a85324820250c836b419e68c2d3d4d  gcc/config/riscv/riscv-vector-builtins.cc
! 83bba22dba6d9f4786e80d804e1f312f  gcc/config/riscv/riscv-vector-builtins.def
! 830cfe8061a11b71e18672cc3e8664c4  gcc/config/riscv/riscv-vector-builtins.h
! 8a86dc06d44baa9e41a9391db5abdcea  gcc/config/riscv/riscv-vector-switch.def
! 4df23331cd234cad6c0e8a7a9228edfc  gcc/config/riscv/riscv-vsetvl.cc
! 8fe843c7d03cb46cc233ba5d894d10d3  gcc/config/riscv/riscv-vsetvl.def
! 28da2345fccb4d29505fc776a5c8ea19  gcc/config/riscv/riscv-vsetvl.h
! ab4c3496375b2fde76bdd73674ff041e  gcc/config/riscv/riscv.cc
! 2b3c4e370e43ce97c06af8380c289dcc  gcc/config/riscv/riscv.h
! 71a0a64843bda989740f74fd7dca641d  gcc/config/riscv/riscv.md
! 8b3032631464e13ff72a51064fc1ab76  gcc/config/riscv/riscv.opt
! 1a3b56eb5996b87319935b8b3123e371  gcc/config/riscv/riscv_vector.h
! ac558403504463a2fadd429bc0dfe20e  gcc/config/riscv/rtems.h
  462630614e6e7a6209f8f18b6dff0eef  gcc/config/riscv/sifive-7.md
! 8c611c85921c492820f605b3b55329e0  gcc/config/riscv/sync.md
  1c27821991689abdaa7a908a0cc8dfa4  gcc/config/riscv/t-elf-multilib
  d8ae7bee35ef1ecd77143535da9aae78  gcc/config/riscv/t-linux
  1ed181a166b1d0e206c4a4e0024cce2a  gcc/config/riscv/t-linux-multilib
! 7de892add3c6f26df1abcd91dbdbe42b  gcc/config/riscv/t-riscv
! b46131fe425be428d4d66c8f653f3d13  gcc/config/riscv/t-rtems
  97a182737ed075d29be4ab1e848de420  gcc/config/riscv/t-withmultilib
  0478f4e79601d91fb8ad8f210b304a7b  gcc/config/riscv/t-withmultilib-generator
! 90703af517362babbdd4e7725ed9def2  gcc/config/riscv/thead.cc
! 3a60f8d771ec97e366fd23d19b081ea5  gcc/config/riscv/thead.md
! a73a2533a40d109ce2f50ab199b77fa6  gcc/config/riscv/vector-iterators.md
! 1d91c3765270b4280f3897c00bb76b03  gcc/config/riscv/vector.md
! 62ba601d9d78ca4212a545e3742bf0a6  gcc/config/rl78/constraints.md
! 38d47829df0abf5c0b926e5aa13e73de  gcc/config/rl78/predicates.md
! 1730d77ec2ff27c2c031abaf2b78d45a  gcc/config/rl78/rl78-c.cc
! 4f924440f01f9a17f8b4b11264a60d15  gcc/config/rl78/rl78-expand.md
! 640353aec1c2dad476bef07da57b7166  gcc/config/rl78/rl78-opts.h
! bfaf727d42b0188a3d5599ab0500d489  gcc/config/rl78/rl78-protos.h
! bdfa7ecc3647fc5669b8d6f31cafb62a  gcc/config/rl78/rl78-real.md
! b5770c6053c787e381a200e9505f05c2  gcc/config/rl78/rl78-virt.md
! 2b3e1904b300cad3be2505046e86b608  gcc/config/rl78/rl78.cc
! c7eb68618103586e900471b720a49cae  gcc/config/rl78/rl78.h
! 693bc35d317254b10cf35aaeef48a57d  gcc/config/rl78/rl78.md
! 5e6835205f477e3b134c0855cc848b06  gcc/config/rl78/rl78.opt
! cd2ba5cbd82e5555c49004aeb34ee612  gcc/config/rl78/t-rl78
! 19b2c3a1d56343b27bedb7275f8568c7  gcc/config/rpath.opt
! 9939d839208c761212c54402f517e092  gcc/config/rs6000/40x.md
! 8cf12c16e8258b8139502583c52a32e3  gcc/config/rs6000/440.md
! 72e14633203bfd09bcef6cc6a39284cb  gcc/config/rs6000/476.h
! 36b2b88fb6117b37b8e439fee1bd8c33  gcc/config/rs6000/476.md
! 298f1237299608baef7e4f916e6ddf33  gcc/config/rs6000/476.opt
! c794aebab9cb9ea8f65a9aff0ca46944  gcc/config/rs6000/601.md
! 8bf7984c6a8df19f46cdd847d0e187b6  gcc/config/rs6000/603.md
! d910da6919ac5db4583b4c606a2a94e5  gcc/config/rs6000/6xx.md
! 4b943c206a91a3bf705ea5bd94807af6  gcc/config/rs6000/7450.md
! 93396c037f88d81ab6ffa7fa85986a46  gcc/config/rs6000/7xx.md
! 331273395372eddd12e125c743ba20b0  gcc/config/rs6000/8540.md
! 0574596a3aa61f5ed67581712ce8a431  gcc/config/rs6000/a2.md
! 7066cb868f097d4aedbe42b4de90f4ca  gcc/config/rs6000/aix-stdint.h
! 13f319aa5c2928f7ad24baf9da2ac70e  gcc/config/rs6000/aix.h
! bd35332d6b4881a6b7c1887edcbc4760  gcc/config/rs6000/aix64.opt
! b4ae894c7649abb1dc14070d9797b00d  gcc/config/rs6000/aix71.h
! 43cf8f7978a5d583e2342acb04cc595b  gcc/config/rs6000/aix72.h
! a87be9ee98a714eeeb92bad73f32f88f  gcc/config/rs6000/aix73.h
! 02b877a569032dd21efb85d41dac9c4f  gcc/config/rs6000/altivec.h
! 6b15d42c6c68c697fbbfb1d4bc43c100  gcc/config/rs6000/altivec.md
! 45bfb40325f39a90f2e32f88f229cffb  gcc/config/rs6000/amo.h
! 656fb98293d82a76779be75ae8207857  gcc/config/rs6000/biarch64.h
! 8eb9a873478c1238a6d5921b1c5ed77e  gcc/config/rs6000/bmi2intrin.h
! 6ed5b6dd2a551b41cb3f2724d04523c3  gcc/config/rs6000/bmiintrin.h
! 3af1e371e42dd1cbf1076be49d9f6a37  gcc/config/rs6000/cell.md
! 7b53db14b5ad6d85c6af28a596286ea0  gcc/config/rs6000/constraints.md
! 26abc07169e7b7b6019364ad2315c6a4  gcc/config/rs6000/crypto.md
! 35b97bca4c1badd6e25fb41b627d6ad5  gcc/config/rs6000/darwin.h
! def924cf70cad004908dd8e1d38c073c  gcc/config/rs6000/darwin.md
! 798aebfba809ef2b93383a337a52b105  gcc/config/rs6000/darwin.opt
! eb88c9841f6ae8e90e09a036fff600ef  gcc/config/rs6000/darwin32-biarch.h
! 347157caf8b83c6c137b9a0d89f78536  gcc/config/rs6000/darwin64-biarch.h
! 8cbddb87ecf5ffe013fb832eef835f7d  gcc/config/rs6000/darwin7.h
! b02249d6df5a15ad9e8fb6de40f13676  gcc/config/rs6000/default64.h
! 0720fd621fe1a27526b7d20a2f0ec339  gcc/config/rs6000/dfp.md
! 8047e61464310227beabfa5042a69f68  gcc/config/rs6000/driver-rs6000.cc
! 8a053a05b6cc55f710af397dff8b941f  gcc/config/rs6000/e300c2c3.md
! 150d671f4fb16a651380a678baf8f2c1  gcc/config/rs6000/e500mc.md
! 65b1db55321012429ac7f1d860f87000  gcc/config/rs6000/e500mc64.md
! 402f14f1fffab304d26ddc7f04fc4000  gcc/config/rs6000/e5500.md
! 22fb2fd4efe263c93bf4922da7902499  gcc/config/rs6000/e6500.md
! d4d352a74b5d6500c8c07ab9833cf907  gcc/config/rs6000/eabi.h
! 73afb844c52e1ff0344d3d38946e31dd  gcc/config/rs6000/eabialtivec.h
! 2722739019574b47b5d7c58f3abe9bac  gcc/config/rs6000/eabisim.h
! 5eafe47b399ad9ef57b60982bfe3fb20  gcc/config/rs6000/emmintrin.h
! 743766fc14e2ad8a4375ae5d16f8c423  gcc/config/rs6000/freebsd.h
! 77f0bc4dfe9c32d6f33610a4361632bf  gcc/config/rs6000/freebsd64.h
! f044c43f9f647be947cfbef575179594  gcc/config/rs6000/fusion.md
! 8ab4dbe3397725df26a178d8501ed682  gcc/config/rs6000/genfusion.pl
! a112654f6df4b75096ef3cfc34745eef  gcc/config/rs6000/genopt.sh
! 5ba3f28a7f1f7f7d4a4fd324da2cce25  gcc/config/rs6000/host-darwin.cc
! 63823a40e63c18bc4c6ff07665c935b8  gcc/config/rs6000/host-ppc64-darwin.cc
! 2935cafa517d8f4066b2a664ff74ce9f  gcc/config/rs6000/htm.md
! d36bf739a044db81355167273d31bdc8  gcc/config/rs6000/htmintrin.h
! d382b2f14c42608297d8d264792330b3  gcc/config/rs6000/htmxlintrin.h
! b6f92d129c35d3ad3168875e75adc9d8  gcc/config/rs6000/immintrin.h
! cbabb1705f69dcc4d10468d902fc9942  gcc/config/rs6000/linux.h
! f5c3ba6395d6eb6177f8c91aabcbd5a6  gcc/config/rs6000/linux64.h
! 1f8387f9fababbf3716aed8c9c805a13  gcc/config/rs6000/linux64.opt
! 09728c6b9c5e7d90973aca3d98b4b27c  gcc/config/rs6000/linuxaltivec.h
! f51fdc3939c771f200d9a918380966f1  gcc/config/rs6000/lynx.h
  0cc3c5f9101501b8253ce3176c3ffce4  gcc/config/rs6000/milli.exp
! 389d0bf272bb89e1261c874b7a9ec947  gcc/config/rs6000/mm_malloc.h
! 3633bb3a609730a30cb0663dc7e023ba  gcc/config/rs6000/mma.md
! a789bab758efe38df9cc413c568c5942  gcc/config/rs6000/mmintrin.h
! 72d5af6a1d84104d21789de53c32483d  gcc/config/rs6000/mpc.md
! 1fe014a70daa2bb4d4641253aa097496  gcc/config/rs6000/netbsd.h
! c942518ae7947bf3adccadbb27b9ab7e  gcc/config/rs6000/nmmintrin.h
! 02bfb5fcb16b57a7f67e388910cb8884  gcc/config/rs6000/option-defaults.h
! b6a7d9c820c45091b03eaf8fdf3190dc  gcc/config/rs6000/pcrel-opt.md
! 1fb7c939977278483d630f2fd6aaafd3  gcc/config/rs6000/pmmintrin.h
! 71e2a481bbd8dac1b4241316100c1256  gcc/config/rs6000/power10.md
! f9da5b9b4b401ad3520f41441d3acb1f  gcc/config/rs6000/power4.md
! 5f041279d91e1a0c3564a4589befc1ea  gcc/config/rs6000/power5.md
! 6b823511cf5244aaeb574f5bf2c63875  gcc/config/rs6000/power6.md
! d48c95e153ee8f415702b472bc20a02e  gcc/config/rs6000/power7.md
! 22fbcb7a71b601d8ad0c22a66e3ce4a4  gcc/config/rs6000/power8.md
! 2a0f67c8eed6b157add93a3a8b7b3ed3  gcc/config/rs6000/power9.md
! 06aa26bfaafcb89d4a99c0e317af4707  gcc/config/rs6000/ppc-asm.h
! d1baa29d9961c7dc84928daba90fcb81  gcc/config/rs6000/ppc-auxv.h
! 5e7762217e9facebadb81f105d1bf501  gcc/config/rs6000/ppu_intrinsics.h
! f48d55084d3f874ff04263d0187206e7  gcc/config/rs6000/predicates.md
! e5a56c67ccfa1b82910448cc8537ca90  gcc/config/rs6000/rbtree.cc
! 41cca449520459ae09c87c093327fa5d  gcc/config/rs6000/rbtree.h
! a51d5702d8cf31a25e01e5edd0fe291a  gcc/config/rs6000/rs6000-builtin.cc
! 067a5301ee23d0cfd4b428c6e6a47cc6  gcc/config/rs6000/rs6000-builtins.def
! 5686f83167396f0c581a1c6504b8ae11  gcc/config/rs6000/rs6000-c.cc
! 899b3a930627708fcdae122e3b3285c9  gcc/config/rs6000/rs6000-call.cc
! 6b94f136d45a0d1a0bef9e58fa9c1e15  gcc/config/rs6000/rs6000-cpus.def
! c4bd99f21aa66eed69bd520b225485ef  gcc/config/rs6000/rs6000-d.cc
! 9ec1220497ad19253e259bcf72531180  gcc/config/rs6000/rs6000-d.h
! e39af002491bc8a962f6b2f0cc7304de  gcc/config/rs6000/rs6000-gen-builtins.cc
! 5f2ed696da94a5a7ce06f115eaf05ef1  gcc/config/rs6000/rs6000-internal.h
! 5c2bdb9dbbeef816761ed742a138a457  gcc/config/rs6000/rs6000-linux.cc
! 3ac8202f4574b740fad8eb70f4a064bc  gcc/config/rs6000/rs6000-logue.cc
! 65280da8a93ee3b7561bfa95c73e5627  gcc/config/rs6000/rs6000-modes.def
! 50658fd1a187f0dea15f89e04aeabd41  gcc/config/rs6000/rs6000-modes.h
! 716db8b1d7952658da5eafaef58408db  gcc/config/rs6000/rs6000-opts.h
! 950b77a5c94e9ba599bbc208ee84477b  gcc/config/rs6000/rs6000-overload.def
! c153115d2136d49f3f4b6f7477797041  gcc/config/rs6000/rs6000-p8swap.cc
! 63dc1084063d0b0e7ee538d3941b6990  gcc/config/rs6000/rs6000-passes.def
! 71cb7581d344fb01762cdd080bd833a5  gcc/config/rs6000/rs6000-pcrel-opt.cc
! 1d69f9a2848499db58524c55c1803b51  gcc/config/rs6000/rs6000-protos.h
! 371fdc38274c8f19c0079d100adc91c4  gcc/config/rs6000/rs6000-string.cc
! e6df0fb2cf41aa438e44a0a400ced1a4  gcc/config/rs6000/rs6000-tables.opt
! f57873463f37e0790e7f2c9ece09b0f3  gcc/config/rs6000/rs6000.cc
! e65fb6f0bfb4b88a346fd3006fb5ea4e  gcc/config/rs6000/rs6000.h
! 6019d1bb63116e8cc76c71ccbc391f40  gcc/config/rs6000/rs6000.md
! d16831453dc0dec2a796ba21d6f984a9  gcc/config/rs6000/rs6000.opt
! 1f85593465476dff8f1a05954653d962  gcc/config/rs6000/rs64.md
! dd0028fa69924b6ab77e26d755d5b1e8  gcc/config/rs6000/rtems.h
! bb9d184abf8f6c8c3765d0979f9c9050  gcc/config/rs6000/secureplt.h
! fcfeeef0441253402f37264d272c84b5  gcc/config/rs6000/si2vmx.h
! fa89ac38426979c76ffce6119b4b95e2  gcc/config/rs6000/smmintrin.h
! 31c2160e56942951076f3d875a3d3ef3  gcc/config/rs6000/spu2vmx.h
! 9d06d3f95b630c8f4ed3f6ef3c422dbc  gcc/config/rs6000/sync.md
! 43d2bb4bf090fd69c53d59dabb3d518a  gcc/config/rs6000/sysv4.h
! 229078c9392d0c561108aa65b0d094af  gcc/config/rs6000/sysv4.opt
! 2854da1fb5cd3321b88f52080fd2ca2f  gcc/config/rs6000/sysv4le.h
! efe8102b960925ab0905d8f0dcb1c90a  gcc/config/rs6000/t-aix52
! 9b2d24fe11fb832205439b2f7af3618e  gcc/config/rs6000/t-aix64
  636250eb91fc5dada4804efcd525fc02  gcc/config/rs6000/t-darwin32-biarch
  f3250b9720d1149346f1ef8e21b52ea9  gcc/config/rs6000/t-darwin64-biarch
! e6e4a6611d0f4aabfd50619c4934ee6d  gcc/config/rs6000/t-fprules
! 56b4895ba292ab42911b292ec8f89c2b  gcc/config/rs6000/t-freebsd64
  7708df4fc7a5677f2dd3097c7bb5b338  gcc/config/rs6000/t-linux
! 40a493b7651ae22db32277e143a1a33d  gcc/config/rs6000/t-linux64
  71c0a0470047f0171a3bb4c483eb2b72  gcc/config/rs6000/t-linux64bele
  489699b655594f05bae0b429fd261edb  gcc/config/rs6000/t-linux64le
  60f26523152f6a061a12cb17e987de12  gcc/config/rs6000/t-linux64lebe
! 7ee3eb4f045d982f676e2fe3555d42da  gcc/config/rs6000/t-lynx
! 3c81d32073b298175e91a48a987747d0  gcc/config/rs6000/t-netbsd
! 0cd72c229a13d84ea51bedc123d6188b  gcc/config/rs6000/t-ppccomm
! 6c8e557da45ddd22262a95b03140e4cd  gcc/config/rs6000/t-ppcendian
! 7f06eb742fa21d34e7102dcc49702918  gcc/config/rs6000/t-ppcgas
  1b8aba690a39464c4ea9c647d73d6983  gcc/config/rs6000/t-ppcos
! ec5a8d4c0cc0d7174cc60c26e3f7a1c8  gcc/config/rs6000/t-rs6000
! 429fa5c2570618d0ac2b28f857fa3f0b  gcc/config/rs6000/t-rtems
! 6e4931d39c7afb45d5ab26530fe786ac  gcc/config/rs6000/t-vxworks
  f11925c88524d2fd457bf77944da1302  gcc/config/rs6000/t-vxworksae
  3f0601a68de7a0aee8264b538228d943  gcc/config/rs6000/t-vxworksmils
! 5e706ce7356cc1a9c7a44e6a06d32726  gcc/config/rs6000/titan.md
! 11283c3d497b8f9e14d0f7b2e6c767e9  gcc/config/rs6000/tmmintrin.h
! 8a427618716df54fe24964916961793c  gcc/config/rs6000/vec_types.h
! fc0103d6513257aadfcac62f4c7d98c3  gcc/config/rs6000/vector.md
! 8cd1c651effe3e6c5f3122dd159cd461  gcc/config/rs6000/vsx.md
! 4d40423d832e238fa189465ab2fed898  gcc/config/rs6000/vxworks.h
! 71931e4a1a4bd00dded5b5ed4292e9d4  gcc/config/rs6000/vxworksae.h
! cf7960e5b95d3ca2732d3e96e5f3c80f  gcc/config/rs6000/vxworksmils.h
  44a93bbae0ad5aba424ba7b97cc6914d  gcc/config/rs6000/x-aix
  b56ad5be71cef10dc9ee90f9f5577c21  gcc/config/rs6000/x-darwin
  0d6a4902892897c148fbf634ca039f71  gcc/config/rs6000/x-darwin64
  3f42272f4bcf66031ebf71a6c876adb8  gcc/config/rs6000/x-linux-relax
  c8b5860d3a61eeddd3a9790a0f09ed6c  gcc/config/rs6000/x-rs6000
! 7bccf29680ef59bbba40cde23f9d3111  gcc/config/rs6000/x86gprintrin.h
! 70bad66229789d86f028ae0f3bd477cb  gcc/config/rs6000/x86intrin.h
! e64e4b447abe627522f88826488e0f3d  gcc/config/rs6000/xcoff.h
! 217cb86c12190d67931957c967870933  gcc/config/rs6000/xmmintrin.h
! 9149e299be49ded29822e84b5bf79e5c  gcc/config/rtems.h
! b7b6f087a361b8d9e7ff54509f92aa06  gcc/config/rtems.opt
! a28bcaf997409e2f62994625353cec93  gcc/config/rx/constraints.md
! 19e204559dddcf7ec7958773b3a7a53a  gcc/config/rx/elf.opt
  84ae77475029b49553276e3d7ed74cec  gcc/config/rx/linux.h
! 6f94d4e63f8a9ce7065a3b4db4d6978e  gcc/config/rx/predicates.md
! 336a39ddf93bd1c9175b5fb8cfccdf3e  gcc/config/rx/rx-modes.def
! 6d01975c5b2a65d1834cffc61734ea2c  gcc/config/rx/rx-opts.h
! a4df5d7235eee67b0c2f42e2e6f42471  gcc/config/rx/rx-protos.h
! a1726b438d1f63560557626983e7ec21  gcc/config/rx/rx.cc
! acdc78843139a44ae81c322d9886dae9  gcc/config/rx/rx.h
! 03ccc353a4815770354603b149513e15  gcc/config/rx/rx.md
! 6367d05adebee392495b1c52c28559be  gcc/config/rx/rx.opt
  032cf36abc28f171fc24229e32796402  gcc/config/rx/t-linux
! 7bb76487a80156b528d3e046d2e21d34  gcc/config/rx/t-rx
! 35aa7f34969f0f486d95d2ed641eb3ff  gcc/config/s390/2064.md
! 7003b0aab40eda58e05b327cb30fb4a0  gcc/config/s390/2084.md
! f9561dae3c011f6282d770725b63878a  gcc/config/s390/2097.md
! b28ca95b8b556053aacce35b8d758109  gcc/config/s390/2817.md
! 40fdb274e3a83ba9b3e9863d96423346  gcc/config/s390/2827.md
! 56a15f0fa3bb1bb72f16a3cad4140b37  gcc/config/s390/2964.md
! 57b1168c5b2333d9d70bd25830396346  gcc/config/s390/3906.md
! e2be7628f834ca0ebb5138ed553ac27d  gcc/config/s390/3931.md
! ab45ba53c0d3a1f3eba1cb6c17534ae2  gcc/config/s390/8561.md
! 3a30ed5d6754bacf6acbc336aa3d5532  gcc/config/s390/constraints.md
! 48f3989195522515e2c2f477ee1fc0b2  gcc/config/s390/driver-native.cc
! 0413f9ee10a8f997dd72f61aee5e7405  gcc/config/s390/htmintrin.h
! 18192b3587f90ba67bc6ac3cd4b095fb  gcc/config/s390/htmxlintrin.h
! 0455474d19e72241a2f931eb5838414f  gcc/config/s390/linux.h
! bc0f35f11df98a3ea8154afd95aa8d0d  gcc/config/s390/predicates.md
! f4fded4219d7abeba4d1752b63a47c1b  gcc/config/s390/s390-builtin-types.def
! 9766dc05b49056b74fe8e10a9be25aaa  gcc/config/s390/s390-builtins.def
! e274089c979fe8cca36a358523639d7f  gcc/config/s390/s390-builtins.h
! d05bbbfa628a4e2a7b8b8b1c04d39657  gcc/config/s390/s390-c.cc
! ed576fb9a2ba561b17ab61f2a9bfe17f  gcc/config/s390/s390-d.cc
! 445c8dfdbd431a0ac7b33f1c659bd733  gcc/config/s390/s390-d.h
! 55bd22b1e6a549132e0c515ae9044df9  gcc/config/s390/s390-modes.def
! c7d2c6e9b07c780b3b02da4f5165316e  gcc/config/s390/s390-opts.h
! 5871932ed4c83ad11e5593250b1e04a4  gcc/config/s390/s390-passes.def
! 55737d7f8c38ddd5e7b5430d910e0ed6  gcc/config/s390/s390-protos.h
! ba3493b8c659a51abf99f21a3aff1c12  gcc/config/s390/s390.cc
! 0889a37d3bd6fd89b5ac6ae2d35ecee4  gcc/config/s390/s390.h
! 0f170902018152359f841ba28cd95c0d  gcc/config/s390/s390.md
! 7eeb85e77191dec9449c41ad7680f212  gcc/config/s390/s390.opt
! f38f665269ada42e34f30f19b3fe7040  gcc/config/s390/s390intrin.h
! eae55aa734af7d9845853bc4a69f29d5  gcc/config/s390/s390x.h
! 42ad4d6933976b65f9d58393c575f5a9  gcc/config/s390/subst.md
  551847ee4c38fa1a7e95fd93cdb32f17  gcc/config/s390/t-linux64
! 25b9248d1bcb196b6beadf0578b9f0c7  gcc/config/s390/t-s390
! fe1e650ea556632c1f992b768969e17f  gcc/config/s390/tpf.h
! fef82f4d1e1a0a5d89db5abe7477c685  gcc/config/s390/tpf.md
! dd2d83fd2c5bd7e08fd6f9d0cdb88e05  gcc/config/s390/tpf.opt
! da267810de1aafcd04a83e0432f15e77  gcc/config/s390/vecintrin.h
! 23f21fe566e6c79f42be06d7c4b214c7  gcc/config/s390/vector.md
! 2703cdfbd359495a6b381ec1d11d5a5b  gcc/config/s390/vx-builtins.md
  7813da5eac25ac16f589b0319ad43386  gcc/config/s390/x-native
! 00c4f5a037a71b2f382274bd12d0e9a4  gcc/config/sh/constraints.md
! c8487ca5366e8272f2abc9492073dae7  gcc/config/sh/divcost-analysis
! e8bf200417671f23f7bdf18802046d54  gcc/config/sh/divtab-sh4-300.cc
! 1a4983202a4af20935c6f41da4f28ace  gcc/config/sh/divtab-sh4.cc
! b7a1f055a8a09865a64d0c3d5eb6469b  gcc/config/sh/divtab.cc
! 29cf2048a711cdec85f7a38619c4197c  gcc/config/sh/elf.h
! 042534abe7d24fde22006849f5c61b93  gcc/config/sh/embed-elf.h
! e4cf24ce466ece41166c514e5cdee7e6  gcc/config/sh/iterators.md
! 94b62e4404532b5101df05fbadbbb9e0  gcc/config/sh/linux.h
! 257e5be05e74dbcdd82f0894fa91056c  gcc/config/sh/little.h
! c0ff786ada7ab740f5d7b3be48962a9b  gcc/config/sh/netbsd-elf.h
! 4dd6f9aa7255bec916d73084cef84b71  gcc/config/sh/newlib.h
! f792ddcda87ac095866fc79becd15dd6  gcc/config/sh/predicates.md
! d69a5df380ef56b12cc7e5d6ee6a56ee  gcc/config/sh/rtems.h
! d8aef56cfaaff919fbee9bfafdff6c2b  gcc/config/sh/rtemself.h
! cceba0c8dc90312627444162a8078239  gcc/config/sh/sh-c.cc
! edd218d93f2616cdf22e23c86e41f678  gcc/config/sh/sh-mem.cc
! dafa05de62e4f5bb6c9b7a2ffb7a55df  gcc/config/sh/sh-modes.def
! 4515312140f2002feb7cd75134f2c396  gcc/config/sh/sh-protos.h
! 3cd820b989f5e4714580821c3e0a5372  gcc/config/sh/sh.cc
! 37b97b8797def6afb72ea964a453eca5  gcc/config/sh/sh.h
! 9843f0efbc1054f953793411eb02fb24  gcc/config/sh/sh.md
! b5bc1e3d906715c2267ae3b833e714a8  gcc/config/sh/sh.opt
! 3a51dff173dae73355e8cad1f8bd5866  gcc/config/sh/sh1.md
! 8980e2d146877b565a494bb33095eb9e  gcc/config/sh/sh4-300.md
! b852aaa445a59d88a8600a18840b1fd6  gcc/config/sh/sh4.md
! 64234f0093a2c054203539b8c80dfd9f  gcc/config/sh/sh4a.md
! ece0f82448d83858d029e0b41c3729fa  gcc/config/sh/sh_optimize_sett_clrt.cc
! c65adb47c2a81fc24e51464333694208  gcc/config/sh/sh_treg_combine.cc
! 0c841c3e15c9c85d689edcc70c3c0372  gcc/config/sh/superh.h
  06158b0f1e33501120db330d7734228d  gcc/config/sh/superh.opt
! e203b5735f354602d01bbbdbc3a72c60  gcc/config/sh/sync.md
  88130a11ca77c8572260539cc46ef7ac  gcc/config/sh/t-linux
  ad88281b142c81e6c7017a842c281d5f  gcc/config/sh/t-rtems
! a6d3ff446851f67016081e49925c6518  gcc/config/sh/t-sh
  9f0e9638f478c08d204c5dce468c95ce  gcc/config/sh/t-vxworks
! 73358c9018c9b50f822c48b932695530  gcc/config/sh/vxworks.h
! 8355ee38ab3e4c5a5403177f3f4c2ada  gcc/config/sol2-c.cc
  5c26c2321d68d4724b0d0076803c6b89  gcc/config/sol2-clearcap.map
  73dd11dea23019ab25cbbd70968694e7  gcc/config/sol2-clearcapv2.map
! 4ba790392108e9f7e21f36f5845287a9  gcc/config/sol2-cxx.cc
! bdd19d5a1e7e4579dcfec2e9e954107b  gcc/config/sol2-d.cc
! d8b7d7a2040952f45637a4c5274a9a79  gcc/config/sol2-protos.h
! 15b63f0b3a1f3da132108cd005ee7712  gcc/config/sol2-stubs.cc
! da0841783754376699789a7b4c8ace16  gcc/config/sol2.cc
! 1ab6976a54278635c410f8461e6f0721  gcc/config/sol2.h
! f36f491e78abfad5b282be259980f0ec  gcc/config/sol2.opt
! 678ee204e4124363a3b2681d314b6b2b  gcc/config/sparc/biarch64.h
! e570e7998ea203e35ffcb960e5d1d8e6  gcc/config/sparc/constraints.md
! df90ccaa1c13a1d80aeb0242dfc07063  gcc/config/sparc/cypress.md
! 1f88b133ad8d32e4ac97a473cc312014  gcc/config/sparc/default64.h
! 218c349fde5ea664ff49e06a591d4c03  gcc/config/sparc/driver-sparc.cc
! 26473e51ede0dd3b2171ed22271bafff  gcc/config/sparc/freebsd.h
! 4bc6ce516a5980bee56ba06fa2f73397  gcc/config/sparc/hypersparc.md
! 88f46e54a16c50d6cec6287587322d76  gcc/config/sparc/leon.md
! 23cc6a69b647f0d8a2a178c830a54547  gcc/config/sparc/leon5.md
! f86882ccbeb419481898e745c70139ce  gcc/config/sparc/linux.h
! caa2273a67f623c1eac0580b59d29f2f  gcc/config/sparc/linux64.h
! ca9eb4a7212166ed3a26927b379543c3  gcc/config/sparc/long-double-switch.opt
! d26bca1bbd7ef418cff8d1007d0ef24a  gcc/config/sparc/m8.md
! 6761931a83608c8c020f3df6a8d70087  gcc/config/sparc/netbsd-elf.h
! 0ea8d810cccd21b2e8f310c1ab0b8560  gcc/config/sparc/niagara.md
! e4c1f44fa9c5ebc5a861ea234b18eb10  gcc/config/sparc/niagara2.md
! eb1e5bee53e734fcad378a618d6426a1  gcc/config/sparc/niagara4.md
! e526259c0a197f4ed49b90b859467eb0  gcc/config/sparc/niagara7.md
! 78734c5d24090aca818363592c1098ea  gcc/config/sparc/openbsd1-64.h
! 46d5fa2c3daf70ca4639c70dd78bc2b3  gcc/config/sparc/openbsd64.h
! 867098acbf9546c1a9852fa5ee1672f3  gcc/config/sparc/predicates.md
! 6fd084277090ba7cb7def41b4af4fc0b  gcc/config/sparc/rtemself.h
! a8c5a3e75869d6cb1954594286e744b0  gcc/config/sparc/sol2.h
! 985e58fa67c4c777474415ee595dcd47  gcc/config/sparc/sp-elf.h
! a2ac5919029d88f6593876c4f3bcaa34  gcc/config/sparc/sp64-elf.h
! cdf4a33a175f8fe850aab562d3d2d29f  gcc/config/sparc/sparc-c.cc
! 4ac5688cf408eccca7628548ee92a729  gcc/config/sparc/sparc-d.cc
! 4ae11108d80772e2304cf803a7d1b527  gcc/config/sparc/sparc-d.h
! bd3c25f5a3a340605210356043d8a922  gcc/config/sparc/sparc-modes.def
! 5fe50014653d9cf16747a02facbd8dda  gcc/config/sparc/sparc-opts.h
! 6df273288aa59b1d947ac95b91451ebf  gcc/config/sparc/sparc-passes.def
! 7cab410d6730137ed7525827eb7dec71  gcc/config/sparc/sparc-protos.h
! 5db45b56679308d5af7de2b5325fc8d2  gcc/config/sparc/sparc.cc
! 397877923c1572ea23e1df6650c428d9  gcc/config/sparc/sparc.h
! 21927b300584f83dad232c12e8f5e7c7  gcc/config/sparc/sparc.md
! a6106b074178cf1b60ed55d350cd9062  gcc/config/sparc/sparc.opt
! 99b46577eda89f715bc747c3af07c6bb  gcc/config/sparc/sparclet.md
! 7cb40cf452f681faa258fb76bd35a9dc  gcc/config/sparc/supersparc.md
! 7d3060af592414a4bb0bb392370e4a95  gcc/config/sparc/sync.md
! 4e20f9b37d1d1f8fd472aa300f0819e1  gcc/config/sparc/sysv4.h
! 03a49b7783f24fb0f8c1746c3792a1a3  gcc/config/sparc/t-elf
! ff942aeffa1f797a7e9198e3f5c80cf7  gcc/config/sparc/t-leon
! b10f35c095651f2e095e4a3c25ecf0f2  gcc/config/sparc/t-leon3
  4a7d3f368a24d549fabaafbe44fcb134  gcc/config/sparc/t-linux
! 196904db18c2583d755ced7af0fc6d9c  gcc/config/sparc/t-linux64
  75987b7fdc6fa9c9ff2108ff1003e6d2  gcc/config/sparc/t-netbsd64
! 4280cc526170564121d6f3bfe4284b9e  gcc/config/sparc/t-rtems
! fd442f60e5b5776f11381d039937c9dd  gcc/config/sparc/t-rtems-64
  511770bb20c2707fabd4f231ce8b83cf  gcc/config/sparc/t-sol2
! 14345b91556df245c52ecfaf130ad905  gcc/config/sparc/t-sparc
  b04597637b0c08dd3e6d1a40c43e76b4  gcc/config/sparc/t-vxworks
! cb88fdef63f4db45ea479787f7e7992f  gcc/config/sparc/tso.h
! fff60b51cfb346ae496d0790a1211836  gcc/config/sparc/ultra1_2.md
! 96c8b69df8b1cff02d423a1f11459e5e  gcc/config/sparc/ultra3.md
! 7f999343fe9abb727ca9791b0d1420dc  gcc/config/sparc/visintrin.h
! 49bf1e178fcfbb388c5de05cd136000e  gcc/config/sparc/vxworks.h
  5e0da0cb45fdd1424679c054727e1bfd  gcc/config/sparc/x-sparc
! 08f40d5b8604fb1058fd674194aa50ff  gcc/config/stormy16/constraints.md
! 6dba43ee679697c1a94f42507cdb554c  gcc/config/stormy16/predicates.md
! bad6f7ffa710b9b2813cfdf3b77adfaf  gcc/config/stormy16/stormy-abi
! cb072cae4da41f9f1bc6fa031fb122f9  gcc/config/stormy16/stormy16-protos.h
! 38715a0a5a61180e6c16234a6fd9cafe  gcc/config/stormy16/stormy16.cc
! 00eda4c9c98e4592b43471ddc63327cd  gcc/config/stormy16/stormy16.h
! df5b858a1b965cb24e979c418bea86ae  gcc/config/stormy16/stormy16.md
! f371373cded2bea85c998ed3f97ef7a0  gcc/config/stormy16/stormy16.opt
! 3985ed2b75fc211e7959805671ba9c77  gcc/config/t-darwin
! a61c08fb359276fa06dcc27759c41333  gcc/config/t-dragonfly
! cfb3215edb950e218a6b1f761ff2bf6c  gcc/config/t-freebsd
! b03d485e315710236bd3d3bd4f35b41c  gcc/config/t-glibc
! 942edae01ec7d9a0c131afa6af081903  gcc/config/t-libunwind
! a57fa398ac61003e7a388cc08c1b8cb7  gcc/config/t-linux
! cc9b7480e77657318c9cbad0a2c638ca  gcc/config/t-lynx
  5dad674732908a1c6e62e627e047929e  gcc/config/t-musl
! 44244f0b801d41a66adb0402aaa2bc31  gcc/config/t-netbsd
  a11abd37e1474532461e8f226466c582  gcc/config/t-openbsd
! b9cf1776e98de71c8517ff85b3cb45ce  gcc/config/t-pnt16-warn
  501751f2be56698ed1c9cf18358b67ac  gcc/config/t-rtems
  51d3678acb41d4448cc332f7a8e8cb2e  gcc/config/t-slibgcc
! 770223b99fadf66a8674d8fae9b9466a  gcc/config/t-sol2
  94b3e10150e75899d2fc1410cf218e3f  gcc/config/t-sysroot-suffix
  6f78c5decbfb4b465e7c289b60109023  gcc/config/t-uclibc
! 1d4f9a7580458a48393e4970d3946894  gcc/config/t-vxworks
! 53b55da3ca57e776b32417f0335ce348  gcc/config/t-winnt
  17fd5cabcc31b720b23bad47cf7fe84c  gcc/config/tm-dwarf2.h
! 6a15f9955e0c125d58b8755e7eaf0e4a  gcc/config/usegas.h
  a6ae71a556271cc116214b3e9e87d867  gcc/config/usegld.h
! 21c1a4079458ef00dea8d1784c73549d  gcc/config/v850/constraints.md
! b0fc37595e8eb337081bcd0f6921fa00  gcc/config/v850/predicates.md
! 6dffba8841b741c05b45f641aac3265e  gcc/config/v850/rtems.h
  41b5d5e91cc905b1e3ba5de47db5f9c6  gcc/config/v850/t-rtems
! 84d81e442454bbde58195be5629ce1b8  gcc/config/v850/t-v850
! d753ebec2e8e25a03c9616cdfdc68164  gcc/config/v850/v850-c.cc
! 8aeb581e78b83055d00a68e8a2e98e2b  gcc/config/v850/v850-modes.def
! 65214781d15660b86320b79f7264c075  gcc/config/v850/v850-opts.h
! f4c052f23eda78e1c40b9d0654fc6848  gcc/config/v850/v850-protos.h
! 4ae9b34dddc5aa54eff516cac33dd16d  gcc/config/v850/v850.cc
! 382037b8fe29fbadd0cda6b12a929703  gcc/config/v850/v850.h
! 094ad5a26a84083b71364fae38c248e1  gcc/config/v850/v850.md
! 2dad840f68b879ee690ec3fdd8f6be71  gcc/config/v850/v850.opt
! e60d73c26f374630f9e59c0484e2cd66  gcc/config/vax/builtins.md
! ef03a0a222c440f6437a4e7dd833402e  gcc/config/vax/constraints.md
! 28a2454a4cd587828ebf5c64f59d9bff  gcc/config/vax/elf.h
! 8c491584dc75701af04a255b6defacbb  gcc/config/vax/elf.opt
! 179519a1e6463fe1bbcd4fec30a1d931  gcc/config/vax/linux.h
! 3fae15b92d92a16e6d69da748edb1e06  gcc/config/vax/netbsd-elf.h
! e8ed901649371c9d930bf253582fafd0  gcc/config/vax/openbsd.h
! c02c2e60a2b7403e97217854b6697545  gcc/config/vax/openbsd1.h
! 597b2b86de45d65cf90f3e85fea6d187  gcc/config/vax/predicates.md
! 51cde4f364613aca605ed85aae2bc8f1  gcc/config/vax/vax-modes.def
! 8f8e1b1a1dc2614e0b2b036dd47fb5bc  gcc/config/vax/vax-protos.h
! 1b85e49a822b1e35b2f7d78e1ff2ea68  gcc/config/vax/vax.cc
! 4a28295dcd9cad1669329908a7982023  gcc/config/vax/vax.h
! 00059b8f723cd17f61829ad0b035118e  gcc/config/vax/vax.md
! 41d56a166600eba6041cd52c0e1fedfd  gcc/config/vax/vax.opt
! 1d6ede1e8b576a8ff0cc70391c119740  gcc/config/visium/constraints.md
! b709eba0a7e411322054701a24a1c12d  gcc/config/visium/elf.h
! 43a09511e9e612f981000a650a5b4f13  gcc/config/visium/gr5.md
! 124505c0560bb30b6cb1afe89fc144c6  gcc/config/visium/gr6.md
! 6daa1a8bb2dd196c6c767d7978de7044  gcc/config/visium/predicates.md
! 064beb2d0b80ec0fe5aaeba2d2e8d709  gcc/config/visium/t-visium
! a4baca0de6c668e4a7a0a2d70a4333b2  gcc/config/visium/visium-modes.def
! 45e46ff334aa42b8d3620d28586f8595  gcc/config/visium/visium-opts.h
! d9382ccf10982cccc9aa9efc2c0cfa07  gcc/config/visium/visium-passes.def
! 48b962e0c1f6686e7edb25596596cf88  gcc/config/visium/visium-protos.h
! 7d8b96f6775b61ff68bf1621495f71af  gcc/config/visium/visium.cc
! c2baa5580de52322c5c3aa78fd2f75ee  gcc/config/visium/visium.h
! 614b79d326d85ca3cf807a4173d4aefb  gcc/config/visium/visium.md
! a528e0e6b8b1a9600fc5914330066181  gcc/config/visium/visium.opt
! a1627c85545be49c31c92f69b534a721  gcc/config/vms/make-crtlmap.awk
! cc9eaa01bdb2ed78dba5ffc75d524aec  gcc/config/vms/t-vms
! b2d16810daf7bc8ee30fcf10e0f1fedc  gcc/config/vms/t-vmsnative
! 36371876e6caeb2e0765177ed30ed5b3  gcc/config/vms/vms-ar.c
! 9e591df7d1b5289f80afdff6aa2d963e  gcc/config/vms/vms-c.cc
  c4603dec4151d376a2092ed7555c06d7  gcc/config/vms/vms-crtlmap.map
! 0471d99ab70dc46cecb7cf04366d992c  gcc/config/vms/vms-f.cc
! 33549467f6407ada6fe46cddf931b58d  gcc/config/vms/vms-ld.c
! f509cdfc4ddfb72b96ee44e81acd3113  gcc/config/vms/vms-opts.h
! 955a747bdead214094953393168ae1e3  gcc/config/vms/vms-protos.h
! a87729f70b137c5f75254498c615fdf6  gcc/config/vms/vms-stdint.h
! e90b3ebcf8692d9d3a138bc9988ecc7b  gcc/config/vms/vms.cc
! 8283d3f45039fa67898a2a56bd84e23b  gcc/config/vms/vms.h
! 2f421663028a840c85cfd612181c6197  gcc/config/vms/vms.opt
! 0fecab9b90d1e5b27faf274a8d4e9164  gcc/config/vms/x-vms
! f07731b40b4a59babf212ee23d0a1567  gcc/config/vms/xm-vms.h
! 36dc171ffb859623740cd11f4d50b45e  gcc/config/vx-common.h
! f8a26443b3a2a4542895267438a29017  gcc/config/vxworks-c.cc
! 5bb2eea179ea6123f7e93570d95803a4  gcc/config/vxworks-driver.cc
! dd942f4d20211a67244d7480abce699d  gcc/config/vxworks-dummy.h
! a41a2335691d708587bc5d9b29bb28c4  gcc/config/vxworks-stdint.h
! 1c213092e55e68b2c0f5145620262e33  gcc/config/vxworks.cc
! b5e0811371cabd29023447cd8babd113  gcc/config/vxworks.h
! dae4f9a8e5f85aad95fb15606aecbc16  gcc/config/vxworks.opt
! 36a893b52ae4d79dd9eb41107ead34be  gcc/config/vxworks/_vxworks-versions.h
  2c7fb7482d87758a9305ce4fec4c94ea  gcc/config/vxworks/_yvals-wrapper.h
  83f08d69839ac4c7dc87a99be6c69a2b  gcc/config/vxworks/_yvals.h
  9e122a12d3e14f20967d135228bf88dc  gcc/config/vxworks/complex.h
*************** d55d2805d12ce9917cb284aac8570878  gcc/co
*** 5038,5045 ****
  4e93f0754151b93c5a74975e7d3cc3b1  gcc/config/vxworks/math.h
  6844198023015462d685c40332394d86  gcc/config/vxworks/setjmp.h
  e8eef5870ca1f50784d7ccedc98d709d  gcc/config/vxworks/vxworks-predef.h
! ef1769e22071662c767a27ee21a056d4  gcc/config/vxworksae.h
! ce22ce02584ff74acb3580532b671bae  gcc/config/winnt-c.cc
  5cc0a69d6149e22cb7ea38c2206a2af3  gcc/config/x-cflags-O1
  459b5094b535d46dc221505b9407603b  gcc/config/x-darwin
  6f4ad358c209ab9f624d9537b4f0be78  gcc/config/x-hpux
--- 5053,5060 ----
  4e93f0754151b93c5a74975e7d3cc3b1  gcc/config/vxworks/math.h
  6844198023015462d685c40332394d86  gcc/config/vxworks/setjmp.h
  e8eef5870ca1f50784d7ccedc98d709d  gcc/config/vxworks/vxworks-predef.h
! 1611f02a898d4f414ac92c409f9f36a3  gcc/config/vxworksae.h
! 235a203e9557fc527944fa25bffe7c2d  gcc/config/winnt-c.cc
  5cc0a69d6149e22cb7ea38c2206a2af3  gcc/config/x-cflags-O1
  459b5094b535d46dc221505b9407603b  gcc/config/x-darwin
  6f4ad358c209ab9f624d9537b4f0be78  gcc/config/x-hpux
*************** ce22ce02584ff74acb3580532b671bae  gcc/co
*** 5047,5077 ****
  17f9168a86db5596e32e2a9091f99d7f  gcc/config/x-netbsd
  622a11bb30d8162bffd0e70d8e546b5e  gcc/config/x-openbsd
  60c44ffe57cc1280e854dc1840adc766  gcc/config/x-solaris
! 8075249cf3b893ada90a36c8617c851f  gcc/config/xtensa/constraints.md
! ac463e0c1bfaf19e2e09b2bbf4fc3f22  gcc/config/xtensa/elf.h
! 2433dca319e3df5b66724d30ec5c4c9f  gcc/config/xtensa/elf.opt
! 816e6d5c170417923bfd9ebb2f827664  gcc/config/xtensa/linux.h
! 68d72562265d3c45c5a5fd5ef50f11d0  gcc/config/xtensa/predicates.md
! 08afb61a6de7bce380b8be02e74339b7  gcc/config/xtensa/t-xtensa
! 936107bde8736132c5cba290d771a730  gcc/config/xtensa/uclinux.h
! 7a0596c8957c02438ce4344aaf726ecc  gcc/config/xtensa/uclinux.opt
! 2370bed8f1d88787c848b40eed8beabe  gcc/config/xtensa/xtensa-protos.h
! db7e9d820bb832167ac7f105d093fdda  gcc/config/xtensa/xtensa.cc
! 414aed735962abfc0a242138b2833d30  gcc/config/xtensa/xtensa.h
! f8577ed90789aeb2b1d1e68701b2a18b  gcc/config/xtensa/xtensa.md
! 49b91f52a0ff696a3067d3288badf84f  gcc/config/xtensa/xtensa.opt
! 7f190b80c0224bf47e26ebd1629860dc  gcc/configure
! 3d01eaf4fa3338eac16e1899a941ad66  gcc/configure.ac
! 2c3b5239194c0b4a2e4fb1effa7de1fe  gcc/context.cc
! f0af356bf719524dae46597a2b9376be  gcc/context.h
! 9f79427f6fb6308f148ac1b824d74c87  gcc/convert.cc
! c55bf25c1980931f1e4ddab1b6bbb071  gcc/convert.h
! b81f031d36161f2b75151b5503458623  gcc/coretypes.h
! 1b88bcfeb53530fd6571432ae95ba0b0  gcc/coroutine-builtins.def
! 5f947cfa4f11adffe84f558e88a17922  gcc/coroutine-passes.cc
! 0fa89640cf054df390ce1a7cc7f2a797  gcc/coverage.cc
! b0252895005c33390b86f406799d9e70  gcc/coverage.h
! 1f08739c418be9773fd01d3275e21360  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
--- 5062,5093 ----
  17f9168a86db5596e32e2a9091f99d7f  gcc/config/x-netbsd
  622a11bb30d8162bffd0e70d8e546b5e  gcc/config/x-openbsd
  60c44ffe57cc1280e854dc1840adc766  gcc/config/x-solaris
! 673acff4cdcaf3b70a6563b7b163bfc0  gcc/config/xtensa/constraints.md
! 08f386354cd0e2398a10138f79efdeaa  gcc/config/xtensa/elf.h
! ff4c2a22dc51fa3d17569672eac49591  gcc/config/xtensa/elf.opt
! 9344af08af1f004759d68c34e9f5bd41  gcc/config/xtensa/linux.h
! d4a9a78e020edc3baf6586ef16a85c37  gcc/config/xtensa/predicates.md
! 8e08d9ac5ff28939f410a7bad8649c31  gcc/config/xtensa/t-xtensa
! 04428fd6a45b70ad8af967a84be62313  gcc/config/xtensa/uclinux.h
! 6c5b10d98f570fe43a55f8214df1b297  gcc/config/xtensa/uclinux.opt
! adb83b51d66f6da98d8cb332e7d3ab57  gcc/config/xtensa/xtensa-dynconfig.cc
! 0c7255fd6bb30a2dcb41940b76c249cc  gcc/config/xtensa/xtensa-protos.h
! aacbf1e83201eb77692a157d6e3c5f45  gcc/config/xtensa/xtensa.cc
! ffa27afe9bfa1c3d0a00c4512eb2c4b5  gcc/config/xtensa/xtensa.h
! f88fbbab5f3aff39a56b40c7929d2048  gcc/config/xtensa/xtensa.md
! f10ec7eaade722a89338c0ffe897f9e2  gcc/config/xtensa/xtensa.opt
! 679b5e9e43683c9d55a3322387f7ab5d  gcc/configure
! f0d24ec4d54f5ae9dc142db1c09e8dde  gcc/configure.ac
! 229f188a38efc970482185093cf21584  gcc/context.cc
! 1ad60ec65e12637c35bfaf841220544d  gcc/context.h
! bc123b739cfba026c4d6ce3b43313c55  gcc/convert.cc
! 8466e2e51a7343c8cd1e9807ecb2f324  gcc/convert.h
! 7f4bad3387b301dd994d28b6e3ca3b0a  gcc/coretypes.h
! a92be6f532ece352cab8309520cf28f0  gcc/coroutine-builtins.def
! 6614aac0ce8960f693faf880a7560bc5  gcc/coroutine-passes.cc
! 9d6931fedff9a87a6266d15841579e67  gcc/coverage.cc
! b964f4291cd58a61a06769149429435f  gcc/coverage.h
! 2a79bd89516c63362025de3f9a47f989  gcc/cp/ChangeLog
  d271e3663538ba1f3281cab3838e92cd  gcc/cp/ChangeLog-1993
  f5a44adbc05521162350ca409d1d95ce  gcc/cp/ChangeLog-1994
  ac55db48d964cb5469ff03c1cd3ee04d  gcc/cp/ChangeLog-1995
*************** f6ebb1c64d8e002666e58a4da0d97ecb  gcc/cp
*** 5101,5177 ****
  6e4e23f29e05a4d68f00e1e0306fe285  gcc/cp/ChangeLog-2019
  1ea0510e0c84257e030079fda09b655d  gcc/cp/ChangeLog-2020
  bb663add91c7d9a78c9ac229a8930cef  gcc/cp/ChangeLog-2021
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
! 97d42162cd1affce03ad93b18b14ade9  gcc/cp/Make-lang.in
! 85e2c43546794800d8f068df7649c9b5  gcc/cp/call.cc
! 61492df7414a94076d2ea1be4ad1bdd5  gcc/cp/cfns.gperf
! 4af50d4f82b93440a2801cf7837dce2e  gcc/cp/cfns.h
! b5be773065fee0dae8ad1365db0b7200  gcc/cp/class.cc
! 19c35c5421d2b8d512ffa110701df758  gcc/cp/config-lang.in
! 02f8a18f632498ab19ba4343da48f430  gcc/cp/constexpr.cc
! ca32ee556dc008b438672d0b287fbf42  gcc/cp/constraint.cc
! 447a66db065559ac7114b71b952a0f76  gcc/cp/coroutines.cc
! eba7366210849b1dea13f9985a4e0c1a  gcc/cp/cp-gimplify.cc
! 59c2096cf662e2d5bf81f477c55c9d2d  gcc/cp/cp-lang.cc
! 6b0b8ba87ad071a0acceb6567386ef78  gcc/cp/cp-name-hint.h
! aaf38ac222fd4e4ac8a0b31c8edbc2d1  gcc/cp/cp-objcp-common.cc
! af9e79c65b8109b071bfab436f53fd06  gcc/cp/cp-objcp-common.h
! 1503b8e00198c339d86d7125d96a92e0  gcc/cp/cp-tree.def
! b9a6d95a0e51dd9b30f431f335321fea  gcc/cp/cp-tree.h
! 93d92e57a74a5fd9ee45f47650516d4f  gcc/cp/cp-ubsan.cc
! cf937b536f89656bbd216fda359c5f56  gcc/cp/cvt.cc
! 2b73a9fc46b5816431c794ab7d308871  gcc/cp/cxx-pretty-print.cc
! fb305bef28206d87862d28cb7233a56b  gcc/cp/cxx-pretty-print.h
! 6ac4d43112c73f0c9c1d3f849d3f659f  gcc/cp/decl.cc
! cffc01a2fb968bde8c15a0cf880e57f3  gcc/cp/decl.h
! 56b7e4af7d0391097df4f8f091d8f84b  gcc/cp/decl2.cc
! a5dba9831bf8a38a28a4b412c76ceef5  gcc/cp/dump.cc
! b05e7f9587bf188168b525f48c7479f4  gcc/cp/error.cc
! 3cbe31c3d7fef346bdad1c86ece2bc64  gcc/cp/except.cc
! 302485778544d96d9b6ea8ab7080fddd  gcc/cp/expr.cc
! 8f9cf15d3bcc8810ff72801bba8fa135  gcc/cp/friend.cc
! bc3bb34c8c708bd0a0f8320a9bf32d07  gcc/cp/g++spec.cc
! 690a69c06ea0d200ed70621f022e307a  gcc/cp/init.cc
! 9bdfd2f250d1a4d8eeb86945e9d71a15  gcc/cp/lambda.cc
! 2d025243c67abcccf63845127a051ce4  gcc/cp/lang-specs.h
! 7fae35cf7f4dae942a3e4ba08e3fc077  gcc/cp/lex.cc
! 759fe1cd255ae198380e59f3fe7c721f  gcc/cp/logic.cc
! 5385f4754cdecafa61d7b0757c77fcf8  gcc/cp/mangle.cc
! 5324dfd367e7c8ebba7e3c511388ba71  gcc/cp/mapper-client.cc
! c08ce26e97ca92d6e36c71453aac5baf  gcc/cp/mapper-client.h
! 5afaaf13a0191802d9adaa6cd1ff7b4b  gcc/cp/mapper-resolver.cc
! 475b454a38b3292062e999c0725ce2d3  gcc/cp/method.cc
! 9b4fa8523bf6057cee15600a65221bb9  gcc/cp/module.cc
! f1648ab601f381500db0cad97ef1be62  gcc/cp/name-lookup.cc
! 9a3b7d6aa1623145cbb45cf2be753fe9  gcc/cp/name-lookup.h
! a8c0211ed0a1501bf948aff39864fd1b  gcc/cp/operators.def
! a175d4e76fa35476b1f2d1cef21b9d1e  gcc/cp/optimize.cc
! 83ae271fd2fdf0eda80882be3b3a0e88  gcc/cp/parser.cc
! dee781c4e5da6a9ed8a8ed1119c12dbb  gcc/cp/parser.h
! d39e4a9e5cc722150315f7c865b7cfe6  gcc/cp/pt.cc
! 39ea1e495d971ae62d15c580b9b26531  gcc/cp/ptree.cc
! a69253bf5f41f60f5be44abcb3134ee0  gcc/cp/rtti.cc
! 763aed8f1a637266774e6466b1b98345  gcc/cp/search.cc
! 81d0d598666f5e7f09f35fad74c75807  gcc/cp/semantics.cc
! 69caf20186b308a92c62259bfaf90f13  gcc/cp/tree.cc
! 3ffb7b1546d92ce86c89a0d8324fa763  gcc/cp/type-utils.h
! 3d9204ccd0332ea971f6a0f81b1c58e4  gcc/cp/typeck.cc
! 5833643279133cc5dbf13a9631077ce4  gcc/cp/typeck2.cc
! 04b0f0bf0cbb8a2ebc3665e2acdd1be9  gcc/cp/vtable-class-hierarchy.cc
! 2ed020c144695714d83ff76c8dc8551c  gcc/cppbuiltin.cc
! 5e7300b7656f214ebad548e0d02d2d89  gcc/cppbuiltin.h
! 22407913ee8063f2b6226b5860f0ea95  gcc/cppdefault.cc
! 6ec17d982c4a82bb37cb668fada8a325  gcc/cppdefault.h
! e8c76f1c7d54af3fadeec185d659c528  gcc/cprop.cc
! d3549242a7c196c98ef8e1502ef6ee3c  gcc/cse.cc
! c15ebaeabf8fddf95734ce274a814122  gcc/cselib.cc
! 189765acdc0ac0093b874a1570e6b332  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! d5ed22370e5dd622b0b12c32b21f04cd  gcc/ctfc.cc
! 0a1449a42c84460895e02a7a3ee5eb09  gcc/ctfc.h
! c86420385a29dc1b103e1a4cca601af9  gcc/ctfout.cc
! 90765b7bb292368b1d75059e68b42b27  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
--- 5117,5201 ----
  6e4e23f29e05a4d68f00e1e0306fe285  gcc/cp/ChangeLog-2019
  1ea0510e0c84257e030079fda09b655d  gcc/cp/ChangeLog-2020
  bb663add91c7d9a78c9ac229a8930cef  gcc/cp/ChangeLog-2021
+ cb06dcbb3232403bb30ebd0d7d1feae1  gcc/cp/ChangeLog-2022
  c1c7801b9b0f379e702a4f6cb83972e7  gcc/cp/ChangeLog.ptr
  9aa3cd9f75c785de9f51446e3f295515  gcc/cp/ChangeLog.tree-ssa
! d75ff9438918fb614a4d72f7ca8b08e8  gcc/cp/Make-lang.in
! f8fa0728761e580407090a558e1ced40  gcc/cp/call.cc
! 002c198593210fa169a51ff63dd31f2a  gcc/cp/cfns.gperf
! 896d83eec5aaaa6e6d65eaf91d39d283  gcc/cp/cfns.h
! 5d91035b1ad071a1bc5d395865b048e4  gcc/cp/class.cc
! b0062ee9c9d42ee91eaf7512f6e1e0be  gcc/cp/config-lang.in
! 3b283ad5d0ac3248dbe71bebaa631ca1  gcc/cp/constexpr.cc
! 62c5fb7a0e751cb87d4d60216ecec85a  gcc/cp/constraint.cc
! 7252037f52ba41e16614c507df7343df  gcc/cp/contracts.cc
! 3fff7a95b0ebd54a1f3f2b2ace365aae  gcc/cp/contracts.h
! 6fb5d560bb71f24a7b95bcc1c3075968  gcc/cp/coroutines.cc
! bc19184472fcd9f19fdca94d6923a3aa  gcc/cp/cp-gimplify.cc
! 763112e63cfba590bfc20b96b0ea7682  gcc/cp/cp-lang.cc
! 7e2d55513904b00505ff25684de6b935  gcc/cp/cp-name-hint.h
! 9f5255a2208bbea4c0b0a31667896ad4  gcc/cp/cp-objcp-common.cc
! 44864edbff7221ce5b72f9f551fe9269  gcc/cp/cp-objcp-common.h
! 1ff6ed82de7381c392b01839746c2f74  gcc/cp/cp-trait.def
! d6887ccac1e3a9dea9c2908ef57ec747  gcc/cp/cp-tree.def
! cd865832f76f5fbb032bd4fe31ce30a4  gcc/cp/cp-tree.h
! b65da920bdc209a44d1cba37f4a1e4a7  gcc/cp/cp-ubsan.cc
! 7c8cb89616dfd4228ce7017a63abd999  gcc/cp/cvt.cc
! 19039aafd1782b27e26a94ad2316d35e  gcc/cp/cxx-pretty-print.cc
! e0aeb037cb4d8ca738781ded46d00a5d  gcc/cp/cxx-pretty-print.h
! c1b4ec8db711e8a297a5d4e85d0aeb7e  gcc/cp/cxxapi-data.csv
! a590a9bd06e540c5465344ab7a0e3e6e  gcc/cp/decl.cc
! 04eca9fc6dc327f816ff062ad8e899a5  gcc/cp/decl.h
! e4af9ea2641fb4ada6ae0c5d72c436a9  gcc/cp/decl2.cc
! c00489cd7633dcb8caed5defda9fdc95  gcc/cp/dump.cc
! 1bcab327fe1f6fb1402f82439488dce5  gcc/cp/error.cc
! 2ca4744679ca833e05a3cd3104dea7b9  gcc/cp/except.cc
! 15a221742a7bc56a599ea1bf93e7e0b0  gcc/cp/expr.cc
! 9399bd047deb41be7e339a9428dd2470  gcc/cp/friend.cc
! 38d795f01430a0d433f133d955f161f4  gcc/cp/g++spec.cc
! aae4769663c02dfe48e64b7622706074  gcc/cp/gen-cxxapi-file.py
! bcd87bf93dacb29f6e6ccf5c1ba88d42  gcc/cp/init.cc
! 6bd222a6b8cbe1c6cc29ff623d02ab70  gcc/cp/lambda.cc
! 0c9e7039d9e6c649820e714e1877a4c3  gcc/cp/lang-specs.h
! f6faa21098c86eb47a6c838ddfcdca1b  gcc/cp/lex.cc
! 0aa2860fccee2e2e75b2e00297d0f39f  gcc/cp/logic.cc
! 5cfc42b449c3b392cd054f3ad09ff169  gcc/cp/mangle.cc
! c7cdcc0d91396db6f388061dec91b1bb  gcc/cp/mapper-client.cc
! 73e96c254c4c826c654b7a43099710d0  gcc/cp/mapper-client.h
! ad0c37db747b2c38777b4746b7e9ccd8  gcc/cp/mapper-resolver.cc
! 911529d3bd5ea82ab15eec9377a74f92  gcc/cp/method.cc
! e99f1c941daa60c220221a5bef64116b  gcc/cp/module.cc
! 0d39b7ba2816144c71bc37a9a2890aee  gcc/cp/name-lookup.cc
! 6c66cf6731a80daded3ddaa17fe59f82  gcc/cp/name-lookup.h
! 8cef47f00b2658d60aa8aeac08d34464  gcc/cp/operators.def
! f85201a1e836c959c5c786648cc6d972  gcc/cp/optimize.cc
! 118ab2c563088db0767284c8b1ea7ded  gcc/cp/parser.cc
! fbb3d4644cdc4c0c8d47620a0b3a8094  gcc/cp/parser.h
! dd7b7d275d60f58f4ee48ac22ea803e2  gcc/cp/pt.cc
! d03dc5c4f806d6a6841801d7d7d0080c  gcc/cp/ptree.cc
! fe1c482387564398745b4aeef90dacd0  gcc/cp/rtti.cc
! 28a680085dafc994c4c8136245441f35  gcc/cp/search.cc
! 3a19b64c9f4bca65b58eb13e80d1d6ff  gcc/cp/semantics.cc
! fb2be2f3133f876739c03004015d47f5  gcc/cp/std-name-hint.gperf
! d26ed61dc964da99efa5bf2bcab640d9  gcc/cp/std-name-hint.h
! 9b4cf266285352571496b1adf2e6e546  gcc/cp/tree.cc
! 48f7db9af3b30491ed4f238605782993  gcc/cp/type-utils.h
! 493e8c449f3e457edf67f72e87a1691e  gcc/cp/typeck.cc
! f5cad82f3808c36477ac46c8b10901db  gcc/cp/typeck2.cc
! d1622a9e8d6f8df6c5834932b9488b97  gcc/cp/vtable-class-hierarchy.cc
! 2597401b7544997a7f6e4811a977c2c8  gcc/cppbuiltin.cc
! ec059990dce01decdd41fdf61eb21678  gcc/cppbuiltin.h
! 88101fa4198c4ab42be4ea3192666f9c  gcc/cppdefault.cc
! 9e61120d1db695867893215d871ef62f  gcc/cppdefault.h
! 4aed017edbfc5ecef3dc76018622f916  gcc/cprop.cc
! 1199ae4f00c89472ef090c97647099ea  gcc/cse.cc
! b1e287d0d0732952fad4f20cefc2aa7e  gcc/cselib.cc
! 19399561ae12aed1eea23b8a6a04bbf3  gcc/cselib.h
  1ded054093de910d9786c62bc4fe8cc6  gcc/cstamp-h.in
! a667c8581cf5009d6af17f19f1186065  gcc/ctfc.cc
! 9881edbbb726db4859766d0a32beb6a7  gcc/ctfc.h
! 744cafae198aaa990e1c303aa66f0504  gcc/ctfout.cc
! 96cc2bf65fc8f98f129d9ce6e15a20eb  gcc/d/ChangeLog
  86f687c485111eedca2eb048294f957e  gcc/d/ChangeLog-2006
  70ed1c47fd9b3f5dd95055642ed79265  gcc/d/ChangeLog-2007
  a7090ab2dd83aa4f44823c17566b83ef  gcc/d/ChangeLog-2008
*************** d46228dde1a38d9a1d640d737074c7c6  gcc/d/
*** 5188,5578 ****
  2bdf87680f3ebc496c728540c3e6d88a  gcc/d/ChangeLog-2019
  e432bfc5c605ae0b1beedf0492ad40d1  gcc/d/ChangeLog-2020
  1978e6674dd960299d771fdb335a9df2  gcc/d/ChangeLog-2021
! 718e75aef088ebea5fb535a8b8f56fa1  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
! 8bf5d890e781b56206924e00d9e49939  gcc/d/config-lang.in
! d08c623f247be5cfa5170417f26d5480  gcc/d/d-attribs.cc
! 69376a17d40f468c514561874ccaf99a  gcc/d/d-builtins.cc
! cd5a410911d6b38fab7fcf4fc8f568cd  gcc/d/d-codegen.cc
! d392fda0a2aca5434b3f337c80f8f864  gcc/d/d-compiler.cc
! a56e87d314027fcf6714ff9f18aa20bc  gcc/d/d-convert.cc
! 8d7ac5eca73cc075b175513a7fc713e3  gcc/d/d-ctfloat.cc
! a45dc5a01e8d32b42d3e48a112e065b4  gcc/d/d-diagnostic.cc
! 1e4c2f76e9781d5cadf99f2a0b628299  gcc/d/d-frontend.cc
! 081862d5113ae5cc3ad55dc801bbe7a5  gcc/d/d-frontend.h
! 25d90846df654cbb5e2794235724df6b  gcc/d/d-gimplify.cc
! d187ab42ee24bae8e09e49fbd31d3752  gcc/d/d-incpath.cc
! 4483db03463dbf2d1ea97dac1d5e840b  gcc/d/d-lang.cc
! 7318ef907f2b33e0b107950b0ea87935  gcc/d/d-longdouble.cc
! 73015d522ced90e2e8281c387934577d  gcc/d/d-port.cc
! 7fd2410570d6cc275d2f4bd82620eb39  gcc/d/d-spec.cc
! 5e7a162f22439e5912f58fe3facdc6ee  gcc/d/d-system.h
! 6f744f77de810e88c4285983c844098c  gcc/d/d-target-def.h
! fd5863030187662b0a21a5e1ec8e8916  gcc/d/d-target.cc
! 021df40040406e7afee01d7e08802798  gcc/d/d-target.def
! af194d51ac76779c9790fddaa8ca34ec  gcc/d/d-target.h
! e67401e2b9e7e3fd1c7867f4a1dd0db2  gcc/d/d-tree.def
! b6aab59305ff125e6a2e6f31eb721ced  gcc/d/d-tree.h
! a16cd77bdfa678be90d932b3a738c022  gcc/d/decl.cc
! b12d0d5df7729754f61d54abeb56b5fd  gcc/d/dmd/MERGE
! c65e8ed7b55dcb02725394bcde7c2da6  gcc/d/dmd/README.md
! d2d0546119ea4af834d32702c3a3eafc  gcc/d/dmd/VERSION
! fee1124c67987d66a0df1db139185575  gcc/d/dmd/access.d
! a168589ac70f62a374e6ab64288c6d01  gcc/d/dmd/aggregate.d
! 37c6b3eaa80ad090aed4f88a25159f4a  gcc/d/dmd/aggregate.h
! fb522b44e17c9c1ce259581adf6f084a  gcc/d/dmd/aliasthis.d
! d4a45a4e0032dc6e29510e07ca6cba6e  gcc/d/dmd/aliasthis.h
! 90d75a9688dfb98c7f66f79d03238259  gcc/d/dmd/apply.d
! 927cf986a73753881d8404bbb7a7dada  gcc/d/dmd/arrayop.d
! 63ea6c8967a97fb5174eab73eb9aefda  gcc/d/dmd/arraytypes.d
! 921b0d69ec9fac01c1d876cb04630a6c  gcc/d/dmd/arraytypes.h
! afa67342ce21d3c5637b5c4c6a1c1ab5  gcc/d/dmd/ast_node.d
! 6bd1b211b8b28658719048ba49b663b5  gcc/d/dmd/ast_node.h
  30dc80ea532b838d4ecebbf63bbb2649  gcc/d/dmd/astcodegen.d
! 286cf99ec560ca302694415b55b32e9d  gcc/d/dmd/astenums.d
! 17c48fa4bf6a12d6e6c701737199d0dc  gcc/d/dmd/attrib.d
! 87c62db7cd02f92458e13a3fcfa01026  gcc/d/dmd/attrib.h
! e10a6d4cc21552d9c975f8152deae1d2  gcc/d/dmd/blockexit.d
  e4224ccaecb14d942c71d31bef20d78c  gcc/d/dmd/boostlicense.txt
! 5857f43e9496e3122eaccea53e3cfbf4  gcc/d/dmd/builtin.d
! e805aaabad2ad8a5f29adf99ecdfc4fe  gcc/d/dmd/canthrow.d
! 4ff85f3c50760b861a15844b465f0b64  gcc/d/dmd/chkformat.d
! f636875c767fb15992fd5e9b4112fb5c  gcc/d/dmd/clone.d
! 45b88c639fb2c94835612227c0b7e6ee  gcc/d/dmd/common/README.md
! e9dda03570478d2600d0772d69951b1c  gcc/d/dmd/common/bitfields.d
! efba4b6f03c6204eb1a6fd6e4a5df56d  gcc/d/dmd/common/file.d
! 22bcddbebcab315c1581b57b67263181  gcc/d/dmd/common/outbuffer.d
! c78e0af31bed25d8024b7ce5c5a323ee  gcc/d/dmd/common/outbuffer.h
! 69f2c583a7f1a89857c86539f5e805f2  gcc/d/dmd/common/string.d
! 543c4c6bc93c259ba03653b96882691d  gcc/d/dmd/compiler.d
! b38f3823ac758bce13c7ecc5fc4b4c38  gcc/d/dmd/compiler.h
! 9065cc7fadab0c2c207934a610a41a06  gcc/d/dmd/cond.d
! 74860c0d944157e04bd18f83351af59e  gcc/d/dmd/cond.h
! fb8502b92a7f1819e38e02b94537238c  gcc/d/dmd/constfold.d
! 2b8fe3692fa47ab17a6bbff03f10beb8  gcc/d/dmd/cparse.d
! 77870d2956a29cbcf1cba6f2b606dcee  gcc/d/dmd/cppmangle.d
! 4aa8caf479e044b054d893e56cbe962d  gcc/d/dmd/ctfe.h
! f1e0c409377a80c2f093702c1a7b4196  gcc/d/dmd/ctfeexpr.d
! 14575700db973a2c2789dc9e19787fcb  gcc/d/dmd/ctorflow.d
! 646d80b679dd70066b703c75926a2abc  gcc/d/dmd/dcast.d
! 81f26a303e667916bd1626e604afcfad  gcc/d/dmd/dclass.d
! 7ff8b69d58592fc1ebbac97d3d09ffa3  gcc/d/dmd/declaration.d
! eb3208fff93f08cdeb37ff1e2b1a2812  gcc/d/dmd/declaration.h
! 58d03f21c060c81890aaea88286b3aa0  gcc/d/dmd/delegatize.d
! d1554b47cf996a8a108a6b3451e052b2  gcc/d/dmd/denum.d
! 5b4303a98042d0bc691c7227703d20d2  gcc/d/dmd/dimport.d
! 4aa21407b1725eccd282d1e08142e7b2  gcc/d/dmd/dinterpret.d
! 59c569b838ce8dd176921d0caf7d219a  gcc/d/dmd/dmacro.d
! 1892053eaeadfb7ce018a66c9f26dba3  gcc/d/dmd/dmangle.d
! 0765c6c523b4dc8f1816676970466626  gcc/d/dmd/dmodule.d
! 40a2361835476825bb89851d1c6057ee  gcc/d/dmd/doc.d
! f2d33c239db71d4caa28de9031d1e93a  gcc/d/dmd/doc.h
! 570018214bda87aa2ac47e5a35737882  gcc/d/dmd/dscope.d
! d9b0b9593df66b6f6004fe171df0a3b1  gcc/d/dmd/dstruct.d
! 7f7e0bf02588f8e67112aca7940cbd93  gcc/d/dmd/dsymbol.d
! bdcd9fae9c9729e6d486bdcb77f7c156  gcc/d/dmd/dsymbol.h
! 0a7aa9ac0ed76c3e61ba91c2fb4cfdf8  gcc/d/dmd/dsymbolsem.d
! 8a90f34c1247850bc1c9ec4d90e903a7  gcc/d/dmd/dtemplate.d
! 1e8160589bb012608ed581a010809c72  gcc/d/dmd/dtoh.d
! 0ee0d7b932860ac1bec982ffa05479a5  gcc/d/dmd/dversion.d
! ecc4eb65f17c436f7acd52c25ffc3dc9  gcc/d/dmd/entity.d
! 3b65e001bd0b54436775fc65eb906cf0  gcc/d/dmd/enum.h
! 4590fc95a8da11567a3591472896a008  gcc/d/dmd/errors.d
! 1447ec42d748faaec4c9dadc3321b31d  gcc/d/dmd/errors.h
! e1a7feabb436c350b7f8306e34c01940  gcc/d/dmd/escape.d
! f62c3acd764eaa2ae5acc91ad782d373  gcc/d/dmd/expression.d
! 48cf81586f4dde3773ab84a856f3c6ca  gcc/d/dmd/expression.h
! ce78b01d572b78dd2d6e2732b8f6b270  gcc/d/dmd/expressionsem.d
! 9f90ce55efd03f86135c7c3719d61d35  gcc/d/dmd/file_manager.d
! 5cb2f2865af80f962854e4ef9849ce03  gcc/d/dmd/foreachvar.d
! 5be195d4bfa343996a770f0b1fa92918  gcc/d/dmd/func.d
! 12614d5ffda1fa315ba0e7acc9c39307  gcc/d/dmd/globals.d
! b3e2894e834f08ad6cb7e8fa387c352b  gcc/d/dmd/globals.h
! d64cbd4dc1fdc30a4567d6d19dc1d809  gcc/d/dmd/gluelayer.d
! 7df6307744baa22cfc2da296ebd23ce7  gcc/d/dmd/hdrgen.d
! 9f37477a62bfdddcebef93e8ab76dce5  gcc/d/dmd/hdrgen.h
! 0bdf659541bb589e9c14a18cad5798da  gcc/d/dmd/iasm.d
! 29912edfb68b3acf8254de57ad8c1245  gcc/d/dmd/iasmgcc.d
! cb302a9787e6a46075ad4e265a8f011f  gcc/d/dmd/id.d
! cf562110b14887bbeb78fdadc8064350  gcc/d/dmd/id.h
! 87f901805001f18d29fa0f0ad229eed2  gcc/d/dmd/identifier.d
! 607cfd4ca56a08932a90b7bfa3ebd6b3  gcc/d/dmd/identifier.h
! 8fa8ac3f57ebfb0093e5c0f88c82b28e  gcc/d/dmd/impcnvtab.d
! d201448e88ed77c0dc9cfbc95a98c525  gcc/d/dmd/imphint.d
! f849bc9dd7b664b7f7026dd687454a5c  gcc/d/dmd/import.h
! a212194ad913f1518ae9e00f35895fb7  gcc/d/dmd/importc.d
! 581439b145b78fd3bd96f2468ffe3c52  gcc/d/dmd/init.d
! 1adbc9c765d87174ece1886f36dd222c  gcc/d/dmd/init.h
! 43706b1948a101685eaaeb91216f7c01  gcc/d/dmd/initsem.d
! 72b13e79b30263155a3e19554ca27aff  gcc/d/dmd/inline.d
! 2981b636adc891af6c90ac6e5fa5a35a  gcc/d/dmd/intrange.d
! 031956e4094d996147c7423573ae82d6  gcc/d/dmd/json.d
! ee4a7e77e3a8e3a48c589b08719f4247  gcc/d/dmd/json.h
! daf8c67ba126913faedb4942624557e1  gcc/d/dmd/lambdacomp.d
! 4025a1bc295482ba09d17b77523943fc  gcc/d/dmd/lexer.d
! 6a70c0e7234f73f19a7c4025b1ecf7dc  gcc/d/dmd/mangle.h
! 462763ffeca5bb34abe4a8fda9f1644f  gcc/d/dmd/module.h
! 960d75b2dbdf03f76072175eee0c7761  gcc/d/dmd/mtype.d
! 70cfc7e33e40918f01d58398635297ad  gcc/d/dmd/mtype.h
! 240cfb439706a6bd62008a93a0ad40d4  gcc/d/dmd/mustuse.d
! 0190cb41cd56a1d6b47b372a3300d4fa  gcc/d/dmd/nogc.d
! 157597331e63d28616f902c9dd385d87  gcc/d/dmd/nspace.d
! a49dd74783ddad8520c6b0a54aab22d5  gcc/d/dmd/nspace.h
! ba8d8daad7b9e2ba7619e03cd03c83df  gcc/d/dmd/ob.d
! fc51651bb7603133b16545f0185022fe  gcc/d/dmd/objc.d
! a51ce6c75048c2a0524e08f79897480e  gcc/d/dmd/objc.h
! 678b1b973c726e0fc52c81a86e2d5d1e  gcc/d/dmd/opover.d
! 5d37dc7d63cd8f972228e3ba0c00246c  gcc/d/dmd/optimize.d
! 8ffdb231511e6c57d9ae02d9409fa69d  gcc/d/dmd/parse.d
! 8618a9d2246862dcf37009559abdf2a4  gcc/d/dmd/parsetimevisitor.d
  ee6e0066bd1ecd30866617f68d1387dc  gcc/d/dmd/permissivevisitor.d
! 932b7cfb494fbcbf900d4422f19167bf  gcc/d/dmd/printast.d
  1e405e3030862fbf076562d0cf79da95  gcc/d/dmd/res/default_ddoc_theme.ddoc
! 4a37ef79cb20454911f8f92e79aa8e99  gcc/d/dmd/root/README.md
! 077e88e12451f44cdb89c0103a116c6b  gcc/d/dmd/root/aav.d
! a89f535f70499db3d2d51e4040004155  gcc/d/dmd/root/array.d
! 6a36e16fdc30b71f3a642d096bd0ec7d  gcc/d/dmd/root/array.h
! 213cb2d99889c0fa3db09a14f4dc43bd  gcc/d/dmd/root/bitarray.d
! 3b6184ce16564f9db3192c18f8371bfe  gcc/d/dmd/root/bitarray.h
! 274be6487a8851ce2a75f65358ff3e0c  gcc/d/dmd/root/complex.d
! 5404266db839312d981463ac4dc6351c  gcc/d/dmd/root/complex_t.h
! f9fa04f3ecd69b8a18d6d49b6a861f28  gcc/d/dmd/root/ctfloat.d
! 167a84cb498bf7237f90c8acea2a6d97  gcc/d/dmd/root/ctfloat.h
! f46911f478518bcba6f975e2317195dd  gcc/d/dmd/root/dcompat.h
! c2c959bd345b89666f9829e195cc26ed  gcc/d/dmd/root/dsystem.h
! 190522e69801526e949b2062bd59f35a  gcc/d/dmd/root/file.d
! 6f9562ea5f0230462501ae57494356ad  gcc/d/dmd/root/filename.d
! dc41d155d02d53601cba15ec9fda135d  gcc/d/dmd/root/filename.h
! 9a3dc9dae37709a0b8641d559a284f7b  gcc/d/dmd/root/hash.d
! b568c77947b43bb9e8c68a2507e34d98  gcc/d/dmd/root/longdouble.d
! 72e9aef38524c721fdefd886743d269d  gcc/d/dmd/root/object.h
! c4766632092f8b49195f485afaba5741  gcc/d/dmd/root/optional.d
! 425506318629a1d90b78fce3666bf6d3  gcc/d/dmd/root/optional.h
! 09bb90f8d1aa334405350019f5ef5a21  gcc/d/dmd/root/port.d
! af6248bff10510177128627692a16782  gcc/d/dmd/root/port.h
! 85177b1081c369679f5e13ac1e53b733  gcc/d/dmd/root/region.d
! e617ef9e1de2a82edd50c36295bb090d  gcc/d/dmd/root/rmem.d
! 1babbd41a1020008accb89ca2723aa57  gcc/d/dmd/root/rmem.h
! 3302f7dabd31d562ca0ede11cf17e641  gcc/d/dmd/root/rootobject.d
! bafd6f5434ca029e7f466818e8560bca  gcc/d/dmd/root/speller.d
! 1495b3d4527fd66394bf312a23e1b2c6  gcc/d/dmd/root/string.d
! 9f4988bd0b6cf0255d907b64a14bbb77  gcc/d/dmd/root/stringtable.d
! 22068cc1a67e72ffc980a5177b4750f2  gcc/d/dmd/root/utf.d
! 920d26625a87b03e320e957a2d32fb02  gcc/d/dmd/safe.d
! cca2ef3c5fa1e2a3e2c2c2e7c6c96887  gcc/d/dmd/sapply.d
! 34a1d2b91ca0f8b2ff88915c36634f13  gcc/d/dmd/scope.h
! 6892ede044939ea73a39b7fff0157d8e  gcc/d/dmd/semantic2.d
! fe2d441e804cdf9df37423f32ca487cf  gcc/d/dmd/semantic3.d
! 502044c590d3a887430453ad77720c17  gcc/d/dmd/sideeffect.d
! b548fae0283104002ad0a61611dcf0c4  gcc/d/dmd/statement.d
! 71c5ad18c15d21b8242a8c6d1c61c679  gcc/d/dmd/statement.h
! f2d91e35d4e8d435c22d4fc9fa0bccd0  gcc/d/dmd/statement_rewrite_walker.d
! 726874041bcbfb29125ca93c6b1f353b  gcc/d/dmd/statementsem.d
! 08137d8dcb76c7e45b041a8921289003  gcc/d/dmd/staticassert.d
! e9b292ae75ee5968e0e93bcd59ddaf6e  gcc/d/dmd/staticassert.h
! 57d1ecff5eab6e0f0e0f7670b3814c83  gcc/d/dmd/staticcond.d
! fed980c1b0393b81b1b71493e086c4eb  gcc/d/dmd/stmtstate.d
! 8a0fc8b6f5f7b4baade6ac1dae39067c  gcc/d/dmd/target.d
! cf7bb2e55ee018f8a0150e7cbafb32c1  gcc/d/dmd/target.h
! 0e641b3a221b253e7a8306d09e4b60ea  gcc/d/dmd/template.h
! f25ccb0961ad69b3744b5830b78d9035  gcc/d/dmd/templateparamsem.d
! 516057afb378b08a8422f4bb5fd7f364  gcc/d/dmd/tokens.d
! 118696bac3e2325080c820aa3a09b35a  gcc/d/dmd/tokens.h
! 2128f9786d0624b4bc34309253456408  gcc/d/dmd/traits.d
! 6606321f8db83322d4434c11c323c3eb  gcc/d/dmd/transitivevisitor.d
! d5204f87064447609d6339627fdff5d1  gcc/d/dmd/typesem.d
! 5aa5e325368a65efe346375ba041b8d8  gcc/d/dmd/typinf.d
! 902f3b3b05c2d3b38211f78222b74ceb  gcc/d/dmd/utils.d
! 484e2455ce6e8669895e099600f824a6  gcc/d/dmd/version.h
! ddc228ae57e81b4b8d64d30be36696ec  gcc/d/dmd/visitor.d
! 64beecc207e7f501df4ed2c6baf7a398  gcc/d/dmd/visitor.h
! 2fec22071b3243a505600630fd41ad5f  gcc/d/expr.cc
! 12f00f3f5da3f7bca99022b121c5668d  gcc/d/gdc.texi
! b5572c947784ecef422b1fdb688dbe26  gcc/d/imports.cc
! a64c38b4bc97f8d81f862fa9e5685e52  gcc/d/intrinsics.cc
! 64c73cd509877a6967d709b72d528b40  gcc/d/intrinsics.def
! 5f46cece4cf39b1190b559bd7a38e482  gcc/d/lang-specs.h
! 47b0991b66e20e7fb6deb3b0c5d726d7  gcc/d/lang.opt
! 2223a0b14c657c8628dde685ca2a7e21  gcc/d/longdouble.h
! a5df962eb5554bbd932b3da0dfb1059c  gcc/d/modules.cc
! ef51af63f3d28d970fa354b57e27e1c9  gcc/d/runtime.cc
! 34cc9679fc05c8c104e0d7d566c0006c  gcc/d/runtime.def
! 25b1ad9df882135d4102bbfdf75c7e8a  gcc/d/toir.cc
! 7b7a6e2d7b41558f8d7be6e0028d1a48  gcc/d/typeinfo.cc
! ab7927f0c95ab476ff180d8f10ae0823  gcc/d/types.cc
! 7190a15f37d4f7ff57e61d95811688ee  gcc/data-streamer-in.cc
! ed3faa827a6dda47ad1f234f5e7e0be5  gcc/data-streamer-out.cc
! a2b2afc07edacc88155bd02fbddc74a4  gcc/data-streamer.cc
! b3aa034652fe9378e51232cadd507137  gcc/data-streamer.h
! 38f923cc6a0fdbdf677fd095fe354916  gcc/dbgcnt.cc
! 5de751715194526f05710d96f5b21338  gcc/dbgcnt.def
! 05019b56107fd46ea3388faa72f9acb6  gcc/dbgcnt.h
! 85d66fb39ad4e7b58c1c85eb70ce68cc  gcc/dbxout.cc
! 64eb0d8f1af86ed1ff81c51cee520db8  gcc/dbxout.h
! 2b1c8af26a7b59ab521e7e155e08ae74  gcc/dce.cc
! d075db654717c9c8bcb316cbb1f2e40b  gcc/dce.h
! 5212e01db818b1e0a6341642d89c6827  gcc/ddg.cc
! ffea256fc730c237f2321d3c920f8afd  gcc/ddg.h
! 4314e28bca21ba8a100bb89102e92db6  gcc/debug.cc
! 1dc9f8001040e0826b7a38db7b66f5bc  gcc/debug.h
! e04e0ab971a272cf98a0c03386a2ba34  gcc/defaults.h
! 27b4a82493588153035930f04d741918  gcc/df-core.cc
! 7cc1910d78f8cbc03f999a767642156e  gcc/df-problems.cc
! 9a0da8b80ab422998ce18b85244a7a45  gcc/df-scan.cc
! c8db7a8caacb75191f768e57365be4c4  gcc/df.h
! 501abd95cb1ca6134594e6d452dc8cce  gcc/dfp.cc
! 1d60ebc5ee6176b15e6bb026653d1ed0  gcc/dfp.h
! 3928cf08ad9182f01ec98e5e8574808c  gcc/diagnostic-color.cc
! 7464750dedcb31e74a5eae374ef9c416  gcc/diagnostic-color.h
! 6f677b2998d2857a52e2fa86d289dd84  gcc/diagnostic-core.h
! e05dde5222520551c2255da2c2c7cf42  gcc/diagnostic-event-id.h
! d85b16cec8e58d138ba2efeb431946b4  gcc/diagnostic-format-json.cc
! 3b683f244723f7c9c0b0654d5218e71d  gcc/diagnostic-metadata.h
! c9fe5314d7e3d4abdcc430fe9d13fd25  gcc/diagnostic-path.h
! 8c386487c2e38a6dab0fe35ffaff19da  gcc/diagnostic-show-locus.cc
! 4ecf5702c866b85aed5fd4f7d8d42a31  gcc/diagnostic-spec.cc
! f250b85c45f870d1a94280d3b5f33d6e  gcc/diagnostic-spec.h
! bd575057397d98c2ebb0e9d2cd0bf2e0  gcc/diagnostic-url.h
! 6969e90e65c92eaeab5b369f25a3ec0d  gcc/diagnostic.cc
! aeb30115d32d92c071c21455b168a757  gcc/diagnostic.def
! a3ceb8a0362a43c2fcd99cb29e1dfc64  gcc/diagnostic.h
! 4abcebccda704b5459132b50c1a41479  gcc/digraph.cc
! 9c15b06626075c48695b2978a224667a  gcc/digraph.h
! ecdbfb57ce381d670cfc28b407341a23  gcc/doc/analyzer.texi
! aa1622a854139a4e3a9cff7d135929ba  gcc/doc/avr-mmcu.texi
! 07ad7c31bc22a55f1cc8f82cdfbb2cb6  gcc/doc/bugreport.texi
! 2e6791fec8df18e66c12b1a2078e8176  gcc/doc/cfg.texi
! a32d4b37e98def59fecbefe9651f80e2  gcc/doc/collect2.texi
! e6ac52160ef064eac82f02f0376d855f  gcc/doc/compat.texi
! aa3b7596dd5b6f06217a90d7090a99b9  gcc/doc/configfiles.texi
! fbce9ef3057c5f46171c7f3214e3bd9b  gcc/doc/configterms.texi
! eb2a47d945ad5f919fce2e58dff16598  gcc/doc/contrib.texi
! ebe9d4f914f26d51d300bb1949a5014b  gcc/doc/contribute.texi
! d50970b893026bae87c40f833657c97e  gcc/doc/cpp.1
! 46fe4dc4ad387cecb863014f3aebdae5  gcc/doc/cpp.info
! 42df7076a2292d64e19b48fc9937d922  gcc/doc/cpp.texi
! f06003c25ea278478f8d118f1aa63c83  gcc/doc/cppdiropts.texi
! 6b35517a77153b269c71dd54e78e7cf2  gcc/doc/cppenv.texi
! 9735497c8956be8c361e7d90a6fe40e6  gcc/doc/cppinternals.info
! fb4b91ad27bb3454d9988d80aa141644  gcc/doc/cppinternals.texi
! 89c03a16115e31cdb6eea620adcecbf5  gcc/doc/cppopts.texi
! a6ec6f6984012460fa04c405c52a8edc  gcc/doc/cppwarnopts.texi
! 746fb29bfdc008947e24033ae78d9020  gcc/doc/extend.texi
! f78fa1359032f84915fdfb60653ea30e  gcc/doc/fragments.texi
! e3001342aaa637f17a507b55b36479bd  gcc/doc/frontends.texi
! e1ba5088dacff7ccba05abb2d366d305  gcc/doc/fsf-funding.7
! a22eef0732215e83e2159445e334eb63  gcc/doc/g++.1
! a22eef0732215e83e2159445e334eb63  gcc/doc/gcc.1
! b94fdd0d3dcbe4572a3e2a83dd2a7e06  gcc/doc/gcc.info
! c6b0b2d1fe3f28a04931a2a794048df7  gcc/doc/gcc.texi
! 4ee0b3e5eecfb7ca0306b6c318c84836  gcc/doc/gccinstall.info
! 5686e7d3b0153e313caa4c33dd81e79c  gcc/doc/gccint.info
! 83afe7721012ae63b2ecff4e1ebbd1a9  gcc/doc/gccint.texi
! 18cd5c4a8d3e1e0d68e683a1f3f742ac  gcc/doc/gcov-dump.1
! 16145e16ee9428009371a59cc1659d32  gcc/doc/gcov-dump.texi
! c1b66259f57d00446861f345b517ffee  gcc/doc/gcov-tool.1
! f234ef2a5d2f8fe46b7356d02c709f19  gcc/doc/gcov-tool.texi
! 0cbe8f344a98a2528e6c49c7a644f06d  gcc/doc/gcov.1
! 6bd61a8c28ffcb5521e74ade47e2ef45  gcc/doc/gcov.texi
! 2f43892b39a9311e39e46a722e46d0b3  gcc/doc/generic.texi
! f68bddf7929510725c333e6451c0ad0e  gcc/doc/gfdl.7
! ddd2fa4215d34eb859cf2145a5751821  gcc/doc/gfortran.1
! ca8fb1fb499d550701f96d68b817cb3d  gcc/doc/gimple.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
! 5f02bc6b27ea375a58cd4d798c50607f  gcc/doc/gpl.7
! 8330c58afc651426d5be3104dc1ae1c1  gcc/doc/gty.texi
! 1840b0e622f12b4964da9c34e9416d46  gcc/doc/headerdirs.texi
! db2126fd791cbb35d3fcb1c79364c6d7  gcc/doc/hostconfig.texi
! 753e7bc89e303990d41ceb8744e82460  gcc/doc/implement-c.texi
! dd8c13d054a03c44488a8459a63c7235  gcc/doc/implement-cxx.texi
! a2fcc43c6167952462815a241fa20c2d  gcc/doc/include/fdl.texi
  8787976f426cd52da24a856cd41d87be  gcc/doc/include/funding.texi
! 746a9c5cd326194812af286fabb48964  gcc/doc/include/gcc-common.texi
! 6d27572837b7c19e0d1c4121d3c0ae94  gcc/doc/include/gpl_v3.texi
! 73819b3930a3d4be5d6234070d02386a  gcc/doc/include/texinfo.tex
! 51e4176172e14a260b6133d4bf57fd2b  gcc/doc/install.texi
! 83bdbd3efd0ffdf2178c97f60413b453  gcc/doc/install.texi2html
! 8e0aeb138252c5b0cc976f5c554be2d0  gcc/doc/interface.texi
! 4e469e8a70cc8ef24a9f51ca7b73d958  gcc/doc/invoke.texi
! 93a82af201aef19ff405acd00915277e  gcc/doc/languages.texi
! 0f02293e0eb313d57f6242dda564ff0d  gcc/doc/libgcc.texi
! de63c5bbc556a96d33ce1ee36e44532b  gcc/doc/loop.texi
! ac01664525bdd9a73a66022f96f7caaf  gcc/doc/lto-dump.1
! 701872dd40d1ad8a34b97404ea51aba7  gcc/doc/lto-dump.texi
! 408827455143000e36d847cc841a3315  gcc/doc/lto.texi
! 56814e4949686c0010ab623d14f28323  gcc/doc/makefile.texi
! b29c16f802cabd83a2b9ab99c8cf7f20  gcc/doc/match-and-simplify.texi
! b4d6ce4e64c2ebd5d675fcebef26b707  gcc/doc/md.texi
! c1c317f9c3f662e20435b14c06b24c87  gcc/doc/objc.texi
! 01f5b6f58393da9b1dfba72fd36232f6  gcc/doc/optinfo.texi
! 201e0b25e5f3bb1a9e4e14178f1c266b  gcc/doc/options.texi
! d0f4114e702026befeabc3127bc54323  gcc/doc/passes.texi
! 92f6af6911752ddb5a776e6893c9a041  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
! 609761190ed46487404ad82b8a4f4d06  gcc/doc/portability.texi
! 0ead564edff5d6f37e02427bff13626a  gcc/doc/rtl.texi
! 7e984008e99ff7653a2765f54d15a23a  gcc/doc/service.texi
! 8b5295795a2c7b4849df7e8631f2b909  gcc/doc/sourcebuild.texi
! 80d831a61658f6babc86aaf34fc124ed  gcc/doc/standards.texi
! b7e52cbf62f9804dd44a0f24837f2fda  gcc/doc/tm.texi
! a156e2857ed8ffc437abad84c38c2834  gcc/doc/tm.texi.in
! 242990e6b89707d9f405a34379e69e6e  gcc/doc/tree-ssa.texi
! 886b39dc650d07494ed433c0ac3f7600  gcc/doc/trouble.texi
! 90f0b23af0e3d94f0b84a07e589ecba6  gcc/doc/ux.texi
! 3139c73bef440adde14117a338cf3d5c  gcc/dojump.cc
! 49218e327f52caf3b5bcfa6442ff5516  gcc/dojump.h
! fdc55e10241e055875052a421d415daa  gcc/dominance.cc
! 4fbc803e6ecbf2ccc878d921d3950b5c  gcc/dominance.h
! 3f4ea1d3ec775cd593712197fbd6848f  gcc/domwalk.cc
! fd767c68a3a349d9567bffddc6a58548  gcc/domwalk.h
! 44c654b2782b877a79c8abc0b654fa0f  gcc/double-int.cc
! 64c258c2761d4ddc8b585e03ea95e055  gcc/double-int.h
! baec8ff1e478386125309015d31ded1f  gcc/dse.cc
! f632a58265e8b78f0813590dda2827e9  gcc/dump-context.h
! 5305835827f1cc4e15836f28a847814d  gcc/dumpfile.cc
! 59e2e29c1e9187e9ed922d203d72c131  gcc/dumpfile.h
! 16e322e92322d91c83611ce394a492f5  gcc/dwarf2asm.cc
! 361d9fc26df0a2d58c8ff1fedcbbc157  gcc/dwarf2asm.h
! a71b91c784b6166c1b4be181bda6caac  gcc/dwarf2cfi.cc
! 71ac2d69ff39fb99294791dec0cc85ae  gcc/dwarf2ctf.cc
! eeae724f08b54913ece6df74e3a19d36  gcc/dwarf2ctf.h
! c2756242023cbbb7f8d5d64c936370ce  gcc/dwarf2out.cc
! 3e42c05ab78134fd04c1dc8c269ed921  gcc/dwarf2out.h
! 37794f2c604b388af0205c21ac9c1490  gcc/early-remat.cc
! 4a6f1c497ad523e05aa422bf8fad5d1d  gcc/edit-context.cc
! a2ee41c4742adb409ccdc43c8df10917  gcc/edit-context.h
! 0e3f6502b06f80b5bf42ea6f67e33d8f  gcc/emit-rtl.cc
! f12b0bfacc235b95fc96a7749cc34616  gcc/emit-rtl.h
! 63dfcb100b10ae607acdf81b5f550d38  gcc/errors.cc
! c844952cfe2642f0dd0361d70ec9bffa  gcc/errors.h
! fac4dc8e95eb5eae825a0db47ce1ab7b  gcc/escaped_string.h
! 3b0f4c63c8cea8da78fc4646096cd806  gcc/et-forest.cc
! 9199096b782143b97a1c0b49e6398c40  gcc/et-forest.h
! b81446cad469d50f18943e386f286fbd  gcc/except.cc
! f009c0b679814cf0230400579922b602  gcc/except.h
! d6bf493c0749d890bd5bee8a86e3f372  gcc/exec-tool.in
! 7e0bd768e3f2308a8645fe64c8fac922  gcc/explow.cc
! 4bb0068974444cdffe19b60784f8e189  gcc/explow.h
! e4ec3dcea74829d2563e351ee905542a  gcc/expmed.cc
! ba8393b3e2b8742976d1fc0c4727108f  gcc/expmed.h
! a9cdf354b45fbb0250a64a8119f3d5c2  gcc/expr.cc
! 063529794de14145f9a6e5822e051a83  gcc/expr.h
! 66a613022a116043c27ff79966e7f6dd  gcc/fibonacci_heap.cc
! afc1b29624fc1932c0588c26e81bdae8  gcc/fibonacci_heap.h
! 116161bbd5c5329e61a13a93807648b8  gcc/file-find.cc
! 9a1908e89c4cedc23d7b8cafd6494b35  gcc/file-find.h
! d296a9fbf031636c9cbb9d90df1a55c7  gcc/file-prefix-map.cc
! d0051818c00184510e1a5cf9fd3d2233  gcc/file-prefix-map.h
! 4a9cd658f2b66c395304d1831da3d9c0  gcc/final.cc
! 39766f7f0402e4710761f1aecae6a4d9  gcc/fixed-value.cc
! f7b68b5bf0105bcfb975bf6c1949ca00  gcc/fixed-value.h
! ba26be1a33461d149c9e3304d436ea94  gcc/flag-types.h
! 59b3ec4c17038e4fff61e05b2bfd220f  gcc/flags.h
! acba3643fd3d7dbe62ff3b7f99130cb8  gcc/fold-const-call.cc
! f1700f1cc85dfe93bddd7114e6202635  gcc/fold-const-call.h
! 05bab9fea5db4d8eba8d99d98a7b132b  gcc/fold-const.cc
! 63f13230cb3584d77e9b8a26c6ac5fd8  gcc/fold-const.h
! 98902c813f01b3ac344e7d9cee4517b0  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
--- 5212,5607 ----
  2bdf87680f3ebc496c728540c3e6d88a  gcc/d/ChangeLog-2019
  e432bfc5c605ae0b1beedf0492ad40d1  gcc/d/ChangeLog-2020
  1978e6674dd960299d771fdb335a9df2  gcc/d/ChangeLog-2021
! c7b625d76017d2ec4f8970c167523c57  gcc/d/ChangeLog-2022
! c5d7dbe4d1b63f56eeee925e03e3eaca  gcc/d/Make-lang.in
  426254b45d40584d0597c63f3fd1f889  gcc/d/README.gcc
! 758e5fe316e70ac29cdf3b2f894655eb  gcc/d/config-lang.in
! 85746b2dfddc127a55b01ebb697bf36d  gcc/d/d-attribs.cc
! 4358bd5acfa15882ae40cc28bd098ba9  gcc/d/d-builtins.cc
! 56dd9f6c16a9b83ebcb1badf5b346dd7  gcc/d/d-codegen.cc
! 971f4804175b7a391dcd1281695fa5a2  gcc/d/d-compiler.cc
! bd9cf0f338931d72affd61f8a34c60a2  gcc/d/d-convert.cc
! 93b3db7f73e5e1032c65e1f7ebdd23dd  gcc/d/d-ctfloat.cc
! b983a82870c682654e0b4a768273922d  gcc/d/d-diagnostic.cc
! 35453b303e365085046bccb08e0d9adc  gcc/d/d-frontend.cc
! 4a718835cb15902eb75c17c137867c6b  gcc/d/d-frontend.h
! eed95c64afa2c5152ed24f9e036c8558  gcc/d/d-gimplify.cc
! 083320fd80e27f2723b9e7d3369f1b6b  gcc/d/d-incpath.cc
! ce6b33dda672c5a4dd51d395bb584cb5  gcc/d/d-lang.cc
! 0a3699396462263e3afd622842ec578c  gcc/d/d-longdouble.cc
! 81613174ef788429ef4d2d6b795c5e01  gcc/d/d-port.cc
! 185499ceba21feb6f33c538ec84ccc2b  gcc/d/d-spec.cc
! 3d5fc447a9af0885c21b752580606718  gcc/d/d-system.h
! 702fee3dac729038fda2766339cd7526  gcc/d/d-target-def.h
! 6594f17a5096da1202690c6b82ac5922  gcc/d/d-target.cc
! 2486691b93c0575a1b386f8a4c476f94  gcc/d/d-target.def
! 0ef8ddb83bcd9713cc0bc91299edff2c  gcc/d/d-target.h
! df7deb9723aa01d867aaeec5d746c208  gcc/d/d-tree.def
! d5794386bd49a6ff05384866457f490f  gcc/d/d-tree.h
! f6b69dcce4614d56dea960a8d969c556  gcc/d/decl.cc
! 902321e349c55ddcd175c0d69029f28d  gcc/d/dmd/MERGE
! 39fa65f9345bb0319180e90c1912a1ae  gcc/d/dmd/README.md
! 92379c0ae52d956d7e8c7790dadd4d48  gcc/d/dmd/VERSION
! 1600403cfeb38d80ba4ca5e6e5086d0d  gcc/d/dmd/access.d
! cfff9e7be9abe3576bdfa857cc053bc6  gcc/d/dmd/aggregate.d
! ee2346d34e4d72d41d2f6b068238739c  gcc/d/dmd/aggregate.h
! 69198e0fc251aa10640f9ee21c1852a0  gcc/d/dmd/aliasthis.d
! 5f03c42a9d7e0f4a473bb401605ef90b  gcc/d/dmd/aliasthis.h
! 53508d2b859802d0f7239247b0fd8e93  gcc/d/dmd/apply.d
! be11aed600f54423a66a5494dd802daf  gcc/d/dmd/arrayop.d
! f9a6d2921d1809a2a15fbbf8c347f83b  gcc/d/dmd/arraytypes.d
! ff832740a1ffd4e25a40349941dd429d  gcc/d/dmd/arraytypes.h
! 44e93bfee23e0c1e0d0f471b3465fec5  gcc/d/dmd/ast_node.d
! ed857dd927e29079e32f053f9551057a  gcc/d/dmd/ast_node.h
  30dc80ea532b838d4ecebbf63bbb2649  gcc/d/dmd/astcodegen.d
! 752301088b9645ab848a31290909adc6  gcc/d/dmd/astenums.d
! d2bc8a5cdd6f57bb46fe6cbe18511387  gcc/d/dmd/attrib.d
! b8aab6752df51000a04437e6667afe60  gcc/d/dmd/attrib.h
! fb1530f13abdef33fd3b63dc5bde9e79  gcc/d/dmd/blockexit.d
  e4224ccaecb14d942c71d31bef20d78c  gcc/d/dmd/boostlicense.txt
! 01b86ef284745eab0c81531c044c860c  gcc/d/dmd/builtin.d
! 3b2ef95f57ca69dfe989ca8170f8f743  gcc/d/dmd/canthrow.d
! 1f386e76497131e4c53c4d4568d3932a  gcc/d/dmd/chkformat.d
! 2f06bdac0918dce7f99d5c618844f2d5  gcc/d/dmd/clone.d
! b1b6ce2a848a34ab2657a055c2a0ff98  gcc/d/dmd/common/README.md
! 26865224403ce4c14b49da31433f0219  gcc/d/dmd/common/bitfields.d
! 9bf9527fab52c49c8bb0755bb7c62b73  gcc/d/dmd/common/file.d
! d60a0c7e8255a0b799b7d82bb4719772  gcc/d/dmd/common/outbuffer.d
! 73ce44c99046603d1bb4737ba34f2460  gcc/d/dmd/common/outbuffer.h
! ac97a57afa7655042dbbd4567acf145e  gcc/d/dmd/common/string.d
! 013148290519195576b4fab8e419a203  gcc/d/dmd/compiler.d
! 2b8b95b940f034f44a376df46a18c2a8  gcc/d/dmd/compiler.h
! d3967ee22267d98407442a6079ba8f56  gcc/d/dmd/cond.d
! fd2a7fd3eef9522d5aa093035c85176a  gcc/d/dmd/cond.h
! 45c048b038d156f6b60caed8cd7dc263  gcc/d/dmd/constfold.d
! a6dfc7bd71dd4fbec6e3ac55c81b5f43  gcc/d/dmd/cparse.d
! 8b3842ab57dd53690ca9562adee6cfbc  gcc/d/dmd/cppmangle.d
! 30f5e787b3c4a0e551030c1af7c8fd82  gcc/d/dmd/ctfe.h
! cdeb97b5bb9b0b28c2cc830ec97b47a8  gcc/d/dmd/ctfeexpr.d
! c211c1d1d0e48ba16bdde6402b54eb58  gcc/d/dmd/ctorflow.d
! 7c462d397fdb35ceb46258cc7001df01  gcc/d/dmd/dcast.d
! 19065e5b196a87c3faf97e4bcb6a10df  gcc/d/dmd/dclass.d
! 657740ff26eef206d2bc1369fc5334ae  gcc/d/dmd/declaration.d
! fcc480f74a8e833b2321d263db6be970  gcc/d/dmd/declaration.h
! 0648b56e7194610747139e1deb09389c  gcc/d/dmd/delegatize.d
! bb04bdfc86677b9ac79d0d16f3400ef2  gcc/d/dmd/denum.d
! 71a0743efd2bdf0d00fe13856564a554  gcc/d/dmd/dimport.d
! 00e22660a905c061544deb300381d4ea  gcc/d/dmd/dinterpret.d
! 02041256dc973d46bf49d869f953f755  gcc/d/dmd/dmacro.d
! 1fd25ea329e3402f5733fc14f560d5af  gcc/d/dmd/dmangle.d
! e2c767cd8edd1436388cdeefb0843f42  gcc/d/dmd/dmodule.d
! 2aa104a077d012b582bb2bd54e79e2d6  gcc/d/dmd/doc.d
! b6cc2ba88dfcf1d7123f81a4dc00455e  gcc/d/dmd/doc.h
! 4719bd9235446fdb53e89a1548de1859  gcc/d/dmd/dscope.d
! f97fe6b638d87151ef81e028993f7d4a  gcc/d/dmd/dstruct.d
! 46a421631d33893df3a4162700036fb2  gcc/d/dmd/dsymbol.d
! 82916dc34ec3d716216fd63396effd90  gcc/d/dmd/dsymbol.h
! b18e5b4b1308460ed6684a2eff699987  gcc/d/dmd/dsymbolsem.d
! 4aa9fcb88daad5cb742f7b90c99f40ba  gcc/d/dmd/dtemplate.d
! 10e35416fda7e96721ac7cb928781b01  gcc/d/dmd/dtoh.d
! d8ef75f1d4e4df3f944b66eb26bf8751  gcc/d/dmd/dversion.d
! ff2683063dce4c0b66a858612e0785e9  gcc/d/dmd/entity.d
! 0b5d9c26e5e7c0b9034ba97802e350da  gcc/d/dmd/enum.h
! ee655e738f5fac1c6b5eccc90f12d27b  gcc/d/dmd/errors.d
! a4eec50185cdf2414d2f331dd851aacf  gcc/d/dmd/errors.h
! 8689e7fe1ba6137d1ee4f21fb1ca9679  gcc/d/dmd/errorsink.d
! 71182b6a099dda15bf52cada08fa974c  gcc/d/dmd/escape.d
! 27a9f2c6d5b44bd1a019eede261015c1  gcc/d/dmd/expression.d
! daece555bf4321448137ed9dd6718354  gcc/d/dmd/expression.h
! 057bed50b8e27e6f54bd5c0bdc45b3ab  gcc/d/dmd/expressionsem.d
! 5592a278bdd9b248d2084bcc173fa841  gcc/d/dmd/file_manager.d
! cd9c10d6640327e5f01158e175d93b98  gcc/d/dmd/foreachvar.d
! bad457773b3ea20d4e6d0976029633d4  gcc/d/dmd/func.d
! 6058d8a8fc4e672d44ba1567f5ce1078  gcc/d/dmd/globals.d
! 8cfbad6c4888cb9143a1b90827f9936a  gcc/d/dmd/globals.h
! 9ba7596d5860eef9c98ce7cb109bfa05  gcc/d/dmd/gluelayer.d
! 5de86385abf252b0ba32be9b392c79dc  gcc/d/dmd/hdrgen.d
! 221a6ad865d0bf2ef10482aac842ea82  gcc/d/dmd/hdrgen.h
! d5287d039108d0a1be12f6c6194f9ce6  gcc/d/dmd/iasm.d
! a36a0cd05a780d5808e803aa56a572e9  gcc/d/dmd/iasmgcc.d
! d5d675d411fc988c2d174bff8816cfb1  gcc/d/dmd/id.d
! dcd50eb9bdc861a00685395ec004a234  gcc/d/dmd/id.h
! 6b8b0e553ea035782cdc361c9780eac1  gcc/d/dmd/identifier.d
! 954e7ddb849679d45b0844346daacc1a  gcc/d/dmd/identifier.h
! 8e8c3894e7184b7220219e1c300f4476  gcc/d/dmd/impcnvtab.d
! 7e964e761eb1735f0abe1b2ebdd9be02  gcc/d/dmd/imphint.d
! e4812c3e7f7ffe2d69cbb9dff2a75f1a  gcc/d/dmd/import.h
! 0fca848aa9d2a5003db43805936eae6a  gcc/d/dmd/importc.d
! d2cd8b43af8ce8e5e75bcb66e32409fc  gcc/d/dmd/init.d
! 29b3946732b1c4e8be3bfdf951085381  gcc/d/dmd/init.h
! eaf273a24ae7239ff9a0a1597a945c33  gcc/d/dmd/initsem.d
! efe4ce21ab2020e5843ca1ff07b13359  gcc/d/dmd/inline.d
! c466c1d5a7c7c1e2b45fc68548771f69  gcc/d/dmd/intrange.d
! a5db3f1b26b4401b4f35588edc1911ee  gcc/d/dmd/json.d
! 20a5789c0d0756fe9de737dfcaffa386  gcc/d/dmd/json.h
! ef44ce5101d4e3ae8961381efb6ad158  gcc/d/dmd/lambdacomp.d
! f8b1d3af08a93ebb72a2973216d0a690  gcc/d/dmd/lexer.d
! f0d626b45d9c5cf84ffc95c69e9dc172  gcc/d/dmd/location.d
! b1870484bd83e8802cddce6459672c25  gcc/d/dmd/mangle.h
! d5c9fc57eba3ec6bce28765418025d55  gcc/d/dmd/module.h
! 63840594825589adb004d1abe2525c03  gcc/d/dmd/mtype.d
! 77ffd67a5c50bc837f05bc6f8bdaa588  gcc/d/dmd/mtype.h
! 757d99dfed75b788732c00869aa2ad2f  gcc/d/dmd/mustuse.d
! 5768138c708d4557f9e15fb8bb9f7355  gcc/d/dmd/nogc.d
! ee1884c356dafcd80012eabe35a1b57f  gcc/d/dmd/nspace.d
! 3f12d5558ea056538b03cc6f056c61a6  gcc/d/dmd/nspace.h
! 149c4949ce8fa0c649e99fef4e995652  gcc/d/dmd/ob.d
! 44db2d2c4e1ffd14a7522a618ebced9b  gcc/d/dmd/objc.d
! 9db0006ebacfd608d3e9565520cd0027  gcc/d/dmd/objc.h
! cb33eaedff098e61d0a8ab705905a0e9  gcc/d/dmd/opover.d
! 03670b9c125a36fb416d5b4ae10b28c8  gcc/d/dmd/optimize.d
! 73f4f7d5b90cd002a76ba5182540d500  gcc/d/dmd/parse.d
! ea7e016dac7afbb3b1a0145e3637ce85  gcc/d/dmd/parsetimevisitor.d
  ee6e0066bd1ecd30866617f68d1387dc  gcc/d/dmd/permissivevisitor.d
! a7aa76c75085121cfc4eac7b3f2db73e  gcc/d/dmd/printast.d
  1e405e3030862fbf076562d0cf79da95  gcc/d/dmd/res/default_ddoc_theme.ddoc
! 04f57d64eeeaa73285101503465b193b  gcc/d/dmd/root/README.md
! f0afbd9e4f494d17a97357b32c732e78  gcc/d/dmd/root/aav.d
! c7ac371e3c20bf0cf9562644a88197f6  gcc/d/dmd/root/array.d
! 116c04ae88076e5e28da94b88806e981  gcc/d/dmd/root/array.h
! ec3d19020fc29c18fbd1390f324f19e6  gcc/d/dmd/root/bitarray.d
! 49aa162aab501fc2ad94d1d4128e4ce2  gcc/d/dmd/root/bitarray.h
! 30304b401fc47e5f953b77bd2e61550b  gcc/d/dmd/root/complex.d
! 94485437bd8e734504bfd5a07118a725  gcc/d/dmd/root/complex_t.h
! dd218146fa12825fff428ad1d782986d  gcc/d/dmd/root/ctfloat.d
! a453e207bd27c7917ee679b20fd21a4e  gcc/d/dmd/root/ctfloat.h
! 7538f638afe6061adf2efdfbe25f2209  gcc/d/dmd/root/dcompat.h
! d5c8287fe5e925759b578b9a6989104b  gcc/d/dmd/root/dsystem.h
! 3814396e5294c1f20cf1eb6c6ccdff70  gcc/d/dmd/root/file.d
! b73e81be30a0bc0dc71233b1bd317efc  gcc/d/dmd/root/filename.d
! 3bfd0303afe653ff999fb6b8d7b75a75  gcc/d/dmd/root/filename.h
! f636de4e066cf9eb4b32217bcd2d33a4  gcc/d/dmd/root/hash.d
! a1450b3c9eac5e95a587421552649d9f  gcc/d/dmd/root/longdouble.d
! 5c9c72800fd7fde641ae53b335ed9e6a  gcc/d/dmd/root/object.h
! 7ee9f66ebf832f8613149b8bf289b624  gcc/d/dmd/root/optional.d
! f334b8b39999a1be1d4dc3b46f84b978  gcc/d/dmd/root/optional.h
! a62a602ff9736eaf798b63d9c075f215  gcc/d/dmd/root/port.d
! 471925b0d4b8dddd31bfdb63ec72f162  gcc/d/dmd/root/port.h
! 5600f2f2ad1c34a58f4e7ec09ea3da4f  gcc/d/dmd/root/region.d
! d27c1592da3f5e98c1c39b71f580f25a  gcc/d/dmd/root/rmem.d
! 171e9947211e2ae23fcc6b66f30209dc  gcc/d/dmd/root/rmem.h
! e1336cf92b569d4bec75e92b47d0fca4  gcc/d/dmd/root/rootobject.d
! 449f91b3a972160c74277653c5c2e79a  gcc/d/dmd/root/speller.d
! baaadb4e378905441b214be751100460  gcc/d/dmd/root/string.d
! 4300f05a922d928b2a8ab04a22a7fcf8  gcc/d/dmd/root/stringtable.d
! 94fd0da283f0d491fb7b90c7ed25d421  gcc/d/dmd/root/utf.d
! 6c82a1aa3b9ef9dfe39bb53821830427  gcc/d/dmd/safe.d
! 631b535b8dd9186ee2d2c47179757bcb  gcc/d/dmd/sapply.d
! e2554139c8663d0cc50c8a29ed335a6c  gcc/d/dmd/scope.h
! a0d40102b7eed6702b6d69fb1bda02e8  gcc/d/dmd/semantic2.d
! ecfa3b1875938913d8c9dc818f5b3d5c  gcc/d/dmd/semantic3.d
! 3a94a16cb486d42b3bd3896dace74902  gcc/d/dmd/sideeffect.d
! ab6ae8e46ef4bb483edb862c04179052  gcc/d/dmd/statement.d
! aafc20ea92f8901890c7bf3f8f14f0c2  gcc/d/dmd/statement.h
! f5128a7d5e25235a8f8aa6a9816d5f07  gcc/d/dmd/statement_rewrite_walker.d
! 19f0572f725a545a5a44691fc0657c43  gcc/d/dmd/statementsem.d
! 1f88d457e321d0fc83448af86994c204  gcc/d/dmd/staticassert.d
! b483978b840b70be85f7e68867bf28cb  gcc/d/dmd/staticassert.h
! dc18d6f38095dbfb7399ca51bb465e45  gcc/d/dmd/staticcond.d
! 3fcb44874d7057fa71e97e93f49d7f22  gcc/d/dmd/stmtstate.d
! 2b518fa558d4af5b7e394c6ad5e1ea01  gcc/d/dmd/target.d
! 0e64641a58d3c7198938ca4124b5db9f  gcc/d/dmd/target.h
! 06749cae841d620e0e0eaff30751a504  gcc/d/dmd/template.h
! 3a69e722d2d838e987fd469c46733e32  gcc/d/dmd/templateparamsem.d
! d836774a039cc0245902a64c3cdf1888  gcc/d/dmd/tokens.d
! 3253a019340e0b21f48ad0dc8118c2f8  gcc/d/dmd/tokens.h
! 7558a10794809da35fd77a51791fbc27  gcc/d/dmd/traits.d
! c9a7dddb98d89035d4e0853147d7fb06  gcc/d/dmd/transitivevisitor.d
! 30f0571113af6788f7de567ff2044c4d  gcc/d/dmd/typesem.d
! 4d8646d7068570d4c7511d125a4bdea5  gcc/d/dmd/typinf.d
! 2d05120ce54130d3e5186e73b5c9d96b  gcc/d/dmd/utils.d
! 0e19f04aef543d4fabb6ec79def5b2df  gcc/d/dmd/version.h
! f9c518566ad51d0492965951bb50bc49  gcc/d/dmd/visitor.d
! 3c0649abc540008c622e5711e7027fdf  gcc/d/dmd/visitor.h
! 74f1a5eda9fb1ac5f3b637d01abeb0fb  gcc/d/expr.cc
! 1b21334a0979337f22c738e59aa38dfe  gcc/d/gdc.texi
! a927d4f3a4e1c503d330561883531aaf  gcc/d/implement-d.texi
! c896f8410e7de7ea94eca5ad30ad2fb8  gcc/d/imports.cc
! 9e98d8b47e36478b45a1cec1903efb96  gcc/d/intrinsics.cc
! f48e7f23e5575562bfba2a7778e519f4  gcc/d/intrinsics.def
! a21521366267b1a7b68ceb6ce15a9246  gcc/d/lang-specs.h
! 21a98945a06915be1f6154b0592b2479  gcc/d/lang.opt
! 170eed96a8d3563a9bcb03ac0fc59cbc  gcc/d/longdouble.h
! 2196710b2e6916e3d18e9146321d8b8d  gcc/d/modules.cc
! b1d8cca7f88b3b7a419bdaad940457c0  gcc/d/runtime.cc
! 7fbf81ad217c5efa6f267572778e7ab8  gcc/d/runtime.def
! 48b3a4ef1af87b926e52c50d3bc81595  gcc/d/toir.cc
! 168e3e721d8dc43fb9d250ca847af79a  gcc/d/typeinfo.cc
! c8ed30dc82467f74b5d0fd4af58b0beb  gcc/d/types.cc
! accc2d7f211bb139fde71fcb94dbbf92  gcc/data-streamer-in.cc
! 888eb4c7a007875545f7f89fa223643c  gcc/data-streamer-out.cc
! 047c64792c9f1e60b4b6498df8817c94  gcc/data-streamer.cc
! cd88545b3adc4c16c0ba514f15de4640  gcc/data-streamer.h
! 6b6d35f115f46c604aeaa495717c5715  gcc/dbgcnt.cc
! 42632d56323e6dae96fca30939a64d74  gcc/dbgcnt.def
! a6d0bb901e25b89558de1509a08a93f4  gcc/dbgcnt.h
! 23f2d5977573a7798443bbb46e41a259  gcc/dce.cc
! 4dbb090934653bb6cee869e47656c9ba  gcc/dce.h
! 61c19e6fdcf19bc8f4e7b17ab7e293d8  gcc/ddg.cc
! 077716fea9b8edd866b8379f1291752d  gcc/ddg.h
! 2bf6310ccb68d5538625e3c5b43cc979  gcc/debug.cc
! ffaa76bc85940e5a2ce2d979fb3526d7  gcc/debug.h
! 05f283c3358e737d36e036c1346ba5bf  gcc/defaults.h
! 2559a7b14817860d335928172b0561ff  gcc/df-core.cc
! 8e05ca4414d5c36a982b6cad294025c5  gcc/df-problems.cc
! 5ee0fa11da11a9c210c16c65460d9e55  gcc/df-scan.cc
! a711fb3e5abbc6d9dac11f2fa50e9836  gcc/df.h
! da8633f2ee3b0b40c380fab5776aa33e  gcc/dfp.cc
! 6541892fa62952b41ebd9c35e46148a5  gcc/dfp.h
! f0800e1697d1bc4f2be052fe32dcb5a4  gcc/diagnostic-client-data-hooks.h
! 6fb6c58a5614a30c13a9e76289ff2d7d  gcc/diagnostic-color.cc
! 7e59fca7cd11dfcac3b600558c7dd159  gcc/diagnostic-color.h
! 52fd98caf23d21f7c6c22b20c973681c  gcc/diagnostic-core.h
! 93bc8b33f09e95c3eb643a4d12de3c93  gcc/diagnostic-event-id.h
! 7a328714995156b9a243971690d7a43c  gcc/diagnostic-format-json.cc
! 8b996ea4def31df33ce81bb1736242f2  gcc/diagnostic-format-sarif.cc
! b5cf698f62fc897667ca73b3cf884ea2  gcc/diagnostic-metadata.h
! 505fca1f45774683076668edb51df8fb  gcc/diagnostic-path.h
! 4ddf25c5487c0ad0187391fb2992c2b8  gcc/diagnostic-show-locus.cc
! 1ef25caa15e3cb5ab9492b923312e4cc  gcc/diagnostic-spec.cc
! 0aa96cf64ff55c2058c4f77d12b1f9b7  gcc/diagnostic-spec.h
! aec86f5bdff3085fdd00d7f8271d8bd0  gcc/diagnostic-url.h
! aea92e8e3db548d1fddcbe984981c95d  gcc/diagnostic.cc
! d80c9704cdea98d063f65ef7fae04621  gcc/diagnostic.def
! e927561ee87ffd471419ab7c04a9c03d  gcc/diagnostic.h
! 768604617d8710f1848e11fd6d4f6713  gcc/digraph.cc
! 1309ef041fe49676049fddd61225f25e  gcc/digraph.h
! ed4a41716cd834ae3e0120f4e94f21f6  gcc/doc/analyzer.texi
! a7b783d8787a7a0422d75987f7ae4605  gcc/doc/avr-mmcu.texi
! b55159f9c9fbeadedbd6a971434bef5e  gcc/doc/bugreport.texi
! 97af20afa0c976df424f847ab0e7072d  gcc/doc/cfg.texi
! 8784212b864de1903df4a7574095012f  gcc/doc/collect2.texi
! ab5a29a444213b7a4b7edbae0720adf0  gcc/doc/compat.texi
! 9197a2ae9aaf2d9863fdb032b480ce39  gcc/doc/configfiles.texi
! 8c23b33261e6d434a3bb388d13bf9750  gcc/doc/configterms.texi
! 41fe29b312b42ee001aa367476b9444e  gcc/doc/contrib.texi
! 42159646cb48b375710fd78e3dd6e6b4  gcc/doc/contribute.texi
! dde9aa078cb7970b3377a451890d04fc  gcc/doc/cpp.1
! 49ae2819f851d04602cabadd39edfe4b  gcc/doc/cpp.info
! 6d296baf9bec85f59c79959e355efb3b  gcc/doc/cpp.texi
! 417eef489bd26f8def602795e86741fa  gcc/doc/cppdiropts.texi
! 2011321798f5e6d57961e25563305e06  gcc/doc/cppenv.texi
! 285e8a199dd7f9c4a06f98fa0f38cd37  gcc/doc/cppinternals.info
! 60a3fa41bf1f6e279008366c78cb007c  gcc/doc/cppinternals.texi
! 8d68aa98b0af8010285255a92aea623d  gcc/doc/cppopts.texi
! 50173f3902d3d3c6e3bdb1a4f9044352  gcc/doc/cppwarnopts.texi
! 547e813baa05a7193c21bbcc7b69a18b  gcc/doc/extend.texi
! 9da857d64fdcfd6b1982a75cf86bc597  gcc/doc/fragments.texi
! e3892bc4361a803d8c568c54c20cbcd9  gcc/doc/frontends.texi
! cb30d349d9740257ee4a26dd75b248f7  gcc/doc/fsf-funding.7
! 5156feedee48d2da9e02dec546da686e  gcc/doc/g++.1
! 5156feedee48d2da9e02dec546da686e  gcc/doc/gcc.1
! e1c1e4f8d85f9d808bb01049468790c7  gcc/doc/gcc.info
! 295291ec7baa70b04da2b1b6ecffee99  gcc/doc/gcc.texi
! 0a5d5bffd2fd31c2461e7e67e2a0a43a  gcc/doc/gccinstall.info
! be6ab83f25437c9ff67ff49c5c2c7ae6  gcc/doc/gccint.info
! edc0e7584ec44bfd909e0126057141b2  gcc/doc/gccint.texi
! b141b3ef4b04429f94f5d52f6a0f94f8  gcc/doc/gcov-dump.1
! 8cbf639fe99f374f9e305a031d0d6736  gcc/doc/gcov-dump.texi
! 62a228a51d35f2befe0c17922ee94df9  gcc/doc/gcov-tool.1
! a4e8708b41fe686d6ecdc5246226e3e3  gcc/doc/gcov-tool.texi
! 8b852205328d077f482d5940e11adc63  gcc/doc/gcov.1
! ccaf4e1393ac66805b8317145261710e  gcc/doc/gcov.texi
! 3c202146fad27388f5ad6ed27eb061ab  gcc/doc/generic.texi
! ad5b3c1d733d671341a1c5a1b69d6644  gcc/doc/gfdl.7
! 92c3f02ad9218510852e4f4b4f432e21  gcc/doc/gfortran.1
! 5630240c5ef619f03fc1bd750bde7b61  gcc/doc/gimple.texi
! beb3e1a9cc10e38f6c8c8aa22f36d578  gcc/doc/gm2.texi
  dc4ccd9843d88bc01c909438dabfd6ab  gcc/doc/gnu.texi
! 8ad97f7404e62cb450d098e4b3e82027  gcc/doc/gpl.7
! 9c051a6abfe79317ad83904f042d2738  gcc/doc/gty.texi
! 42ebfb9fc08dafdae427760be5354428  gcc/doc/headerdirs.texi
! 971cd503a0a7fde3063283de000ba2ea  gcc/doc/hostconfig.texi
! 5d7fc3533bf9938c87d24a293ffc2f60  gcc/doc/implement-c.texi
! 69d80ae59e4524d440a609c2615fd49b  gcc/doc/implement-cxx.texi
! 8bed7c13f2521176c0f9f4f79c920551  gcc/doc/include/fdl.texi
  8787976f426cd52da24a856cd41d87be  gcc/doc/include/funding.texi
! 918ccfd7be5640e27067c203dbf40d2f  gcc/doc/include/gcc-common.texi
! 95c90bf85d3eab67f348ee3ce0bf4050  gcc/doc/include/gpl_v3.texi
! e9b8122841fbfbbc30fee8ed6613c399  gcc/doc/include/texinfo.tex
! 57dd52fb30afade31ab270487a983415  gcc/doc/install.texi
! 0f44cc63abf9b607d1b8880175256326  gcc/doc/install.texi2html
! 34b99c10f577dd2da256de717941c862  gcc/doc/interface.texi
! 76a3be9d7399c2fa7406d3ea5f1bb82d  gcc/doc/invoke.texi
! f64676ceacf4c713f83bad704dbc5eaf  gcc/doc/languages.texi
! e36a87d027eabff1a8595ee341342560  gcc/doc/libgcc.texi
! 8b6fb2575a94998971924157a5cabfd8  gcc/doc/loop.texi
! 0069b97fe6b31f9e963bf6b69ccdbbc0  gcc/doc/lto-dump.1
! ecfae67b5004f374351f0448f9b764e0  gcc/doc/lto-dump.texi
! a1c3440fcd17355fcd9956685728338c  gcc/doc/lto.texi
! e215e75acc6a49ab683dd3a4560fb7f8  gcc/doc/makefile.texi
! ac506e04e4e513f2e736736ace0a17ac  gcc/doc/match-and-simplify.texi
! f6859a65a5dcc3d3a3978ac61c998a11  gcc/doc/md.texi
! a8c44c8e4b4d32a8f55021f75e5be589  gcc/doc/objc.texi
! e0b4de59aa47be39959b67c77c3e5f96  gcc/doc/optinfo.texi
! e2d2927a5d31ebe8d7adacbce711b3b1  gcc/doc/options.texi
! 4aad5bb7e2eca9febc6f08131006f929  gcc/doc/passes.texi
! 8723a60f26c67e21edbd8853125a98f8  gcc/doc/plugins.texi
  0603ab3940871fa2a55ddbd7c2719eb7  gcc/doc/poly-int.texi
! 625cf0e114de21441ae7fb94506c91cb  gcc/doc/portability.texi
! d1bcaa542a5530c31802110177ee4e8d  gcc/doc/rtl.texi
! cc4bb1ea13d49e12bc658ffbf09bcdb0  gcc/doc/service.texi
! 37e85dc01252c02dab5f7024a33e19a8  gcc/doc/sourcebuild.texi
! 0e31025715547eefb8e38f6c42f11582  gcc/doc/standards.texi
! 1b12cb2c041170cdebeef6b35026b6bc  gcc/doc/tm.texi
! 8ff52d7640f35621019f505acbf7c697  gcc/doc/tm.texi.in
! cb1937169083092d296fe865caa42233  gcc/doc/tree-ssa.texi
! a41743f25c15ebc52983cfe7b40e013b  gcc/doc/trouble.texi
! 5f797f1c1c623d84dc06c5e7839e8abf  gcc/doc/ux.texi
! b27ab449bea9d59b4fc8f51fbc84a3be  gcc/dojump.cc
! a281851392abb8220c82d93122bbd813  gcc/dojump.h
! 5c84f9c9c3753cac4d0d6687b2dd6fa4  gcc/dominance.cc
! 7bd40e2c4b3b78f79a1982e937dd5e54  gcc/dominance.h
! 4613aa102c6023ce1989230ded3f00e7  gcc/domwalk.cc
! 590b7faf49265506edf4350a83e27f34  gcc/domwalk.h
! bd9a28f0b9c1df93c93d20711940ffbb  gcc/double-int.cc
! d7039a063609512d531816adc085e3fd  gcc/double-int.h
! ff15a9f4a15149ff9d7c5275673e2af2  gcc/dse.cc
! bcfc3857a75f879ec761a824ae77aa77  gcc/dump-context.h
! 52f12315abc001a6345e995675976567  gcc/dumpfile.cc
! 276fcdf9faad8f99eba0c32558648e49  gcc/dumpfile.h
! 50aca9ac7cdb870a668d002112fa13c8  gcc/dwarf2asm.cc
! 33772782dd7447901ccef94fe3260cd9  gcc/dwarf2asm.h
! 3aecdcd1ecb4330fb6d35220436b4e16  gcc/dwarf2cfi.cc
! 4b4d88e890847c2849c8a0dd429ad7d4  gcc/dwarf2ctf.cc
! 6339307d1a91f4115e2184f117a9152f  gcc/dwarf2ctf.h
! e81af45e954e7ba6ad38cd9a38492869  gcc/dwarf2out.cc
! da9eb5f94d9f2537c44626df2e2d0731  gcc/dwarf2out.h
! 56a3faa5b916a76e3e8e799879bb6f9f  gcc/early-remat.cc
! c916e1e3ac5144157fdf894c31dca957  gcc/edit-context.cc
! 49f526debb7f23de868e29fe0f4ddbdc  gcc/edit-context.h
! 4523d41f7daec511966151638f63259a  gcc/emit-rtl.cc
! 5606c317e109b78bd646867d4f2a5bd9  gcc/emit-rtl.h
! ece276800266c6e2e7e65e6f96ec5be4  gcc/errors.cc
! 659a8a79c801df56521644da176872c9  gcc/errors.h
! f81327904e356ae043c572c54bd25316  gcc/escaped_string.h
! 61fc91903dd907005648d7413269ccd3  gcc/et-forest.cc
! 860bca68f977fa9a726d09a684e1fbac  gcc/et-forest.h
! 43c71d0cd101eacd0ea048459db5a83b  gcc/except.cc
! b50077475f8f7a1b64242ec5e01d7784  gcc/except.h
! d2189b62c37dd572addf61825a41d344  gcc/exec-tool.in
! 10518df9c294e40a2a7660c8d93f39a3  gcc/explow.cc
! 16380b9326d8ac062959a6a82043cce3  gcc/explow.h
! aa87fe7a6bdb0d5979cc7df2a1ff6ba2  gcc/expmed.cc
! 19036d67b94612828e60a36131f73399  gcc/expmed.h
! 2cfe5d01d327199e9105cd745caa6726  gcc/expr.cc
! a58f8d09aca5337953e4002f8d46ada5  gcc/expr.h
! cd6cdc4e13b4d3a4a2d3e2b1014be838  gcc/fibonacci_heap.cc
! cd2c85f077113c6ef641407b8172b6d6  gcc/fibonacci_heap.h
! bea216ccfb736c1b9a309ecf9afff70a  gcc/file-find.cc
! 57947e4060d24d010e8c4dd7ba984127  gcc/file-find.h
! afd42e14b3f2852408195e6a82376326  gcc/file-prefix-map.cc
! cd0af84836966e2df321c3d08905a631  gcc/file-prefix-map.h
! 917ebde63babc279cc2dbdf9ebf5af07  gcc/final.cc
! 5ecf2be631b0f86d2248af1c89340d18  gcc/fixed-value.cc
! fe6768163b0ca6c41fea1719448908eb  gcc/fixed-value.h
! 20c9ffc1f2abf2ab017b88632fa9f63a  gcc/flag-types.h
! c2dbf831f4bbc53553765214d1b2d674  gcc/flags.h
! 84632412a9570c311bb6f9944fdacccf  gcc/fold-const-call.cc
! 46538296abcbd26df93f276f5974ec0f  gcc/fold-const-call.h
! 1d959801f32bb39be6b86f01493061b0  gcc/fold-const.cc
! 9dd2c87502c864095a8b942bea07b5f3  gcc/fold-const.h
! 1d21316b6117493be152122a1344b48d  gcc/fortran/ChangeLog
  3330102ad3a0217cba963be6b5eefd58  gcc/fortran/ChangeLog-2002
  d000ab985b1eeb1ad5749f98b8fef99f  gcc/fortran/ChangeLog-2003
  bf42f94f0c51dcc7d8051cc7fda1efdc  gcc/fortran/ChangeLog-2004
*************** a71efd3e199a80ee07c7f350cc8fcf91  gcc/fo
*** 5593,5866 ****
  65ff19d3a00eda2236e8a41b7f46ab5a  gcc/fortran/ChangeLog-2019
  d1595b2ed8fb2a33f6ce0dc595f4f33c  gcc/fortran/ChangeLog-2020
  6c371391409a36c72d51955cc875301c  gcc/fortran/ChangeLog-2021
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
! c93756bb4ee576f99f47f43be795e510  gcc/fortran/Make-lang.in
! 46a0fa04d75ac5d094cc13ebf4523aa4  gcc/fortran/arith.cc
! a6b3571c6f914f0f4fd835ef362e3224  gcc/fortran/arith.h
! e5fe7459d4774cece4e4c90977aca196  gcc/fortran/array.cc
! 9c32e870aec1383306e74eb7c6c8540b  gcc/fortran/bbt.cc
! cea2a813d0f94acf6594c12aabd4e482  gcc/fortran/check.cc
! 7ef2d4ad3a6c2fd671004682ecd6ac7b  gcc/fortran/class.cc
! e11a3080d41189997988eee6de9d778a  gcc/fortran/config-lang.in
! 5fdcd0ceb00212849de377cccc9d450d  gcc/fortran/constructor.cc
! f2515ce2d4eea4ae49c7f087b70eeb2a  gcc/fortran/constructor.h
! 0d6a640c77ab2f533c387ee00c6e1a68  gcc/fortran/convert.cc
! 6a8b6a08b09189e7a2a8e74dca8c6388  gcc/fortran/cpp.cc
! e56cff2ad51a1b28676176eb3400bc07  gcc/fortran/cpp.h
! 0da9a435768cc177cbc0d04823ce91bc  gcc/fortran/data.cc
! 89e31dec4e882508d7059aab12320a40  gcc/fortran/data.h
! 6caef74b8aca506a0f99c92924312d76  gcc/fortran/decl.cc
! 1d786ce4b09d236a55fd49eaeab15b04  gcc/fortran/dependency.cc
! 250e4847bac7531e425b6d1630dbc690  gcc/fortran/dependency.h
! 7dedf6e1d3115c5180ae49f0802cabbc  gcc/fortran/dump-parse-tree.cc
! a148fdc43cbb2bba84d76259bebc9f8f  gcc/fortran/error.cc
! 753c564f939929a7c0da4cb7ffcffcc0  gcc/fortran/expr.cc
! 54eab6083e18094acf7a347aad646504  gcc/fortran/f95-lang.cc
! 91906f34da01b8f98358ab7964500d4e  gcc/fortran/frontend-passes.cc
! 3842572731984dc9a83b47e901428f04  gcc/fortran/gfc-diagnostic.def
! d7b4e8b2f31d751e0a42d341c615dc7f  gcc/fortran/gfc-internals.texi
! e30d5ebe7a924a96667b64684e834883  gcc/fortran/gfortran.h
! 98deac524ca057f39e3bc28cc03b3299  gcc/fortran/gfortran.info
! 5c2caffc27a96f9251901dd1c9cfd20a  gcc/fortran/gfortran.texi
! b4bb48ba890803cc506acdcb573cfeae  gcc/fortran/gfortranspec.cc
! 1f45d5646d6384c0fe4e6d02e43e97a9  gcc/fortran/interface.cc
! c4ce7c36c0063f4af6a2d1fbe9baa85a  gcc/fortran/intrinsic.cc
! d09791007ba9b64b832806a486152ed3  gcc/fortran/intrinsic.h
! 9c3f90c89e00cbc99c598333c76cd336  gcc/fortran/intrinsic.texi
! d99f0c16e1a2b815183e0d83b0a602cf  gcc/fortran/invoke.texi
! 36547d2bc9ccba00d020590bec9e71d5  gcc/fortran/io.cc
! 4d85156eacc66f030b89af30bce754dc  gcc/fortran/ioparm.def
! 31d862bff0a865c5fdbe4fe7f5dbb421  gcc/fortran/iresolve.cc
! 8f42f4ecedfd1939ba8180d7d4121ef8  gcc/fortran/iso-c-binding.def
! f008d3a6da41af237126d87d5692c6c2  gcc/fortran/iso-fortran-env.def
! 04bbcb96ec60c56c43fb9ebda82e9ebf  gcc/fortran/lang-specs.h
! 62f204ebbefe65d09c98419e35d9000e  gcc/fortran/lang.opt
! 9c038ca4b80301361e5d72ee2a327908  gcc/fortran/libgfortran.h
! 081f01fb07e16c90bbf9a92a1c1c7858  gcc/fortran/match.cc
! bd0ab91f17def7a653d5ff09c58bb9f4  gcc/fortran/match.h
! 10fbc914f1a899407778deafa7f5875f  gcc/fortran/matchexp.cc
! fb7c80f6f5f88ba80c7723f53eb05efe  gcc/fortran/mathbuiltins.def
! 7d2e2d3ee5b1e4e1964aaf46366e0f08  gcc/fortran/misc.cc
! 6904178505bd48ed077b64999749decd  gcc/fortran/module.cc
! 8cc8ccb1fab47d19d39ba0be8d0611f8  gcc/fortran/openmp.cc
! b48cbfda0304562a0eaac72d7b9a6d90  gcc/fortran/options.cc
! 6a493c4fffe5ed58d68e8a971fe3feb5  gcc/fortran/parse.cc
! 0a48590b2bb36243e9f4a9d98183afa0  gcc/fortran/parse.h
! f7c808481dad7f1cedf562479e7304cd  gcc/fortran/primary.cc
! 39fe88d67db352c77457e7795a85e44d  gcc/fortran/resolve.cc
! 0573ab635ad3ccc4839e1f4636811d27  gcc/fortran/scanner.cc
! caa38bdbcffb68e954b6424c1c3c340c  gcc/fortran/scanner.h
! c9dbf77853f42e2fb465c4d87f67eb02  gcc/fortran/simplify.cc
! 4a7855d2420481b81f4ff31d48066f24  gcc/fortran/st.cc
! 73f73406077c6e2dd531ee2929fc811c  gcc/fortran/symbol.cc
! c6d5b41165a24519b1877dafd17780c7  gcc/fortran/target-memory.cc
! d58dc979add87c7e22ecf3fe8ea7d636  gcc/fortran/target-memory.h
! 0098f5d21665f0d43af91ad6fa9a32d7  gcc/fortran/trans-array.cc
! 3c63baa722bc0668b7e98b40bceb9bbf  gcc/fortran/trans-array.h
! 451f5b83f594fdd9a854e00dbc66fd9b  gcc/fortran/trans-common.cc
! 60dfb80d5ab4bb8f574d40380456a8ef  gcc/fortran/trans-const.cc
! 7468f5a70b780bf92036ea75d5312bd4  gcc/fortran/trans-const.h
! 26791e423afcd815331d5e23233ca410  gcc/fortran/trans-decl.cc
! 1a021b4742f6c0e8262a45254a67f9e5  gcc/fortran/trans-expr.cc
! 217c59692c5b9657a1741ab153b81fa1  gcc/fortran/trans-intrinsic.cc
! 85141448817f23e9ee692c3b7b763c75  gcc/fortran/trans-io.cc
! 6ab25b4e0dc1d9dbd4f00a17fe0c3a90  gcc/fortran/trans-openmp.cc
! ee76646a8bbb271f793e1e8867f57d71  gcc/fortran/trans-stmt.cc
! c1090320bf95fa2c75837c319782984c  gcc/fortran/trans-stmt.h
! 3fc352317589cad867e62acd055db1ab  gcc/fortran/trans-types.cc
! cb13a76438e8c91e7a9270ff09482701  gcc/fortran/trans-types.h
! d70d45e7b5f84d54baf2f1a446348ab7  gcc/fortran/trans.cc
! 6e787224d6174622e37e10948fccd5ad  gcc/fortran/trans.h
! f9cda8b36d0d9d128f86b927658c42bb  gcc/fortran/trigd_fe.inc
! e407ce5e464ee5640a9730448c53532b  gcc/fortran/types.def
! 7c762223a8c6ca66407cd05adcd27cc0  gcc/fp-test.cc
! 45bd02cc1348dbf322ee97df8ac53c43  gcc/function-abi.cc
! 4c0c4b1c00c37358843ae3349346bdec  gcc/function-abi.h
! 4e2f34bb1401e871b7cca9babb99ec3e  gcc/function-tests.cc
! e16fa11ac1c539a91fdb10cf057b5854  gcc/function.cc
! d2dfcae29be9c50d45619a7f227e9a21  gcc/function.h
! 4cc6ef071dbb01f6c1e057a1f76f44f0  gcc/fwprop.cc
! 254a48c75187b7e47b94abf826e16c94  gcc/gcc-ar.cc
! c21ee37cecaf1b25e3bd8de9fb19e968  gcc/gcc-main.cc
! 43e771c4505a7e453452149b727fb8e8  gcc/gcc-plugin.h
! a85c939fa43dfee6075872172327e4f3  gcc/gcc-rich-location.cc
! c6a1992de949bd6bd63861fbebe06618  gcc/gcc-rich-location.h
! 5eba488d62cd83afcd74ebaddd3e2db9  gcc/gcc-symtab.h
! 238116a6e833982312bae76c95470082  gcc/gcc.cc
! 50339e09857ada5c5cbc9c2c74775d71  gcc/gcc.h
! 907e96abb298d108295ecfe939301b54  gcc/gcov-counter.def
! 098804cd843ca0a2ac068140d2023f15  gcc/gcov-dump.cc
! c30b9cc387aceef2ce9681befa2d54aa  gcc/gcov-io.cc
! 070aa24831d93cc52ad4813b0174e113  gcc/gcov-io.h
! 34e11480c937af29cffbe4691740bd0e  gcc/gcov-tool.cc
! 2e0f1f88ae97e4ddf8f2aa90205f228f  gcc/gcov.cc
! 045ad91e52e4a8e546106162f9b7fc0c  gcc/gcse-common.cc
! cdd90826f09f2dda0c34e54bd2d9c7f5  gcc/gcse-common.h
! 768f6714f77b265aaf32f64514974c6d  gcc/gcse.cc
! a61c1608c160c4f7314b09b141f97303  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! 62a709217ff995a16eaf5c71bc7fb5d9  gcc/gdbhooks.py
! 1a05e4281ecdf60c3bb4c99ec1720d72  gcc/gdbinit.in
! dda76c5b5ec0948d9ce70a2bef27cfca  gcc/gen-pass-instances.awk
! 2432cbe939cbb7a5372cde88c946d50d  gcc/genattr-common.cc
! 75da21cfde7e116835aec220cd9be1b9  gcc/genattr.cc
! 819311f444f94a9139c5b08ef130794d  gcc/genattrtab.cc
! 0ba27d303bec1bd1072b35d1e4bf673d  gcc/genautomata.cc
! 1b860d71137ce697637feddef156dce8  gcc/gencfn-macros.cc
! 737436dcf51f8f9f75ab2e2f7e7f4fd1  gcc/gencheck.cc
! 3004285788bb3ea898abf2a24a56996b  gcc/genchecksum.cc
! c00c76b40fd2e003985935f8191dc0bb  gcc/gencodes.cc
! d395633972edfe49f035e7654f42ec7f  gcc/genconditions.cc
! a9a669f4d283200c8f2bc4d9f5d3e071  gcc/genconfig.cc
! 92d112d338c65b76ab1fee6469ef43d0  gcc/genconstants.cc
! 908326f62403d92576d19a6d60a5c16c  gcc/genemit.cc
! 805dc8119200b4c7094d9cf17cce3b93  gcc/genenums.cc
! 1d3175afcd635df7eadd8e24abaae55a  gcc/generic-match-head.cc
! b061e1a9c4a98dd20f874b7c8b25e7d6  gcc/generic-match.h
! f750f2d25d09cf621bc33d71e2d4257a  gcc/genextract.cc
! 1afb6dee14dd76199f347ef290ebb806  gcc/genflags.cc
! e57a4ee7a3efa6f9879d9401732ce8e9  gcc/gengenrtl.cc
! 44dc11eeef495cc8990e576f25af5785  gcc/gengtype-lex.cc
! dccb6b651cc3b08a9d91dc473d2c5c56  gcc/gengtype-lex.l
! eb4d9740e017bdc5f85328a53d2d1727  gcc/gengtype-parse.cc
! 50a65f1126e7a18b74cea77bdd779e98  gcc/gengtype-state.cc
! f478a818c2202fa1a9c5eeeb9e716b7b  gcc/gengtype.cc
! 0ba34863951c3fb241ac4a955bddc0a5  gcc/gengtype.h
! f24c75731c311961c21c8e8305435b00  gcc/genhooks.cc
! 0b999c86fa99fab7ce7ff0d357c0f148  gcc/genmatch.cc
! 2cf04cf8cf3ed9bfee20f1dec10e924f  gcc/genmddeps.cc
! 7a9894fd2f41e06b7a03e40b67376964  gcc/genmddump.cc
! c4a535228e71fdb6c6526d7cdc6e93be  gcc/genmodes.cc
! c7fd3cd7e5600f29a0e731689ff54131  gcc/genmultilib
! 2074ffc541592bc2d539fea53d54756e  gcc/genopinit.cc
! e64f40f704856f3ac82972d94253af34  gcc/genoutput.cc
! 61a8f678234abcbb08185ef6b4975931  gcc/genpeep.cc
! 52d1058cd657f5c56b9b82f8645d8612  gcc/genpreds.cc
! 5df383414740fb5e430363be7f0602d6  gcc/genrecog.cc
! b2a4b31d65ce0513e1b55b3cc0fb9562  gcc/gensupport.cc
! e85779601c137dcdd709c761e1f9f81c  gcc/gensupport.h
! 746501b7bdfad06b392960c121e24b85  gcc/gentarget-def.cc
! 8225a557753a2ad91f93ca46a0650179  gcc/genversion.cc
! 9fe719a18729c28d50a65a218b84be60  gcc/ggc-common.cc
! 2554173627e7abbcf9b350008d28ed3d  gcc/ggc-internal.h
! 92993def7552bd1f56210bccd8199b5e  gcc/ggc-none.cc
! ae5ff28b8e5857f2e89a7a499c0cb706  gcc/ggc-page.cc
! bbca916c48235ccd181eeac0628a881d  gcc/ggc-tests.cc
! 87b927f2612946c651177dd356485001  gcc/ggc.h
! 6a36f9680adf31bb31bad3503393f74d  gcc/gimple-array-bounds.cc
! 9e34b6c0ac98f04d76ac1c5ac6498112  gcc/gimple-array-bounds.h
! c09c9c82904f715ce24dbb5f5e7ae143  gcc/gimple-builder.cc
! 71288f9828f96bb6d528314ca5d455fd  gcc/gimple-builder.h
! f50e26d784233d2ffe55ee17bc3ac46a  gcc/gimple-expr.cc
! d1de4fb8ce13938f7c3dd22dd3afe622  gcc/gimple-expr.h
! 59c242c3a7847e41cb5aca4bb0cacfe2  gcc/gimple-fold.cc
! 759408e1e968762ac2845df7ae6efa73  gcc/gimple-fold.h
! 8350312718333859d5f584a2792e3c00  gcc/gimple-harden-conditionals.cc
! 5397f4236c244ea6e396da577b07cb75  gcc/gimple-if-to-switch.cc
! 88992c880fc97ff72d9e0920e6ba12f5  gcc/gimple-isel.cc
! f9d354fe0de883a8e04540c764cf1128  gcc/gimple-iterator.cc
! 6800bca49ee3d1f5c964f5ff789b91ec  gcc/gimple-iterator.h
! 273c34c7e5f11b3c27736f861ff39dd1  gcc/gimple-laddress.cc
! ea6739e1baae6fef631091cd341aeb7a  gcc/gimple-loop-interchange.cc
! 278049a0befd1100b7907765baf0b1a2  gcc/gimple-loop-jam.cc
! f5fb978108285be3c589c1080dbbad96  gcc/gimple-loop-versioning.cc
! 14024b204b227ade2750e2161a5c3082  gcc/gimple-low.cc
! e5fb54e1c9ffbbb7c5e6cff5991f2104  gcc/gimple-low.h
! 1607a52f6c468949efc067de9ae1f173  gcc/gimple-match-head.cc
! 72fb6758017af5de87e230d25359555b  gcc/gimple-match.h
! 8d43733f6347e3670a9aef1e2d7419ee  gcc/gimple-predicate-analysis.cc
! 7eb33d03e7b1e6b6327f7cb427da050e  gcc/gimple-predicate-analysis.h
! 4cb1a344328d9b4fc0c4735add3da4a4  gcc/gimple-predict.h
! 3c38ca4d1ec0bfb067a868c99d216cd0  gcc/gimple-pretty-print.cc
! 3efe916bb7c15be5080b13dbaee9c3b0  gcc/gimple-pretty-print.h
! 60e7e4a38c58fb84ea4cf7e8322c294f  gcc/gimple-range-cache.cc
! 34423785bbebf48c5894527a2d85dfa3  gcc/gimple-range-cache.h
! de819abc38e5513404e31ba8147f6719  gcc/gimple-range-edge.cc
! ff7214e2064e1c914da68bbc5c59ac6d  gcc/gimple-range-edge.h
! 4b6d81555c2fd93dce4352b2756cacec  gcc/gimple-range-fold.cc
! a25f3a6963c602d111eb631ee4444cf9  gcc/gimple-range-fold.h
! 907091739ab8a7df723e8daa1e7a22b3  gcc/gimple-range-gori.cc
! 5fe5f05a236de0492006918bee486f98  gcc/gimple-range-gori.h
! c07084f0a48eb3917f54d93973b563a6  gcc/gimple-range-path.cc
! 5f9c5bca0ea21cd23f44f6fbea308f4d  gcc/gimple-range-path.h
! 76adf9d818ec2c8c5a3e49afe34ddcc1  gcc/gimple-range-tests.cc
! f0756e5b5cf48a95b7e157d22e9faeda  gcc/gimple-range-trace.cc
! ae1d2577cae83e6acea7dc5239c033f3  gcc/gimple-range-trace.h
! 59b9f2f75e5de30ecfda93bde785915a  gcc/gimple-range.cc
! 79c8ed03d56c9a2f09f77ece8c2838bc  gcc/gimple-range.h
! f4eef9979afe1a62a26aab899f31fd5e  gcc/gimple-ssa-backprop.cc
! 3a9acfb81d934871fc78a536f2df929c  gcc/gimple-ssa-evrp-analyze.cc
! a2e47746135af17dac3a1f31d5ec570b  gcc/gimple-ssa-evrp-analyze.h
! 7b4c1e8f532bae009a7eee5a9914f4e0  gcc/gimple-ssa-evrp.cc
! 1b1d4df650a10ddd70ed93d3ff96663c  gcc/gimple-ssa-isolate-paths.cc
! 6881154cb788d83ed5d3a6faa40e8491  gcc/gimple-ssa-nonnull-compare.cc
! 8e1e93b40c3c71852038f4e15cc0ea0e  gcc/gimple-ssa-split-paths.cc
! 5d75a7da22682142863c4cbee7017838  gcc/gimple-ssa-sprintf.cc
! 7ba02df2b4f9fa516202848b5c3e6fd0  gcc/gimple-ssa-store-merging.cc
! ca63b943de7942e5678ba99a1ddd3285  gcc/gimple-ssa-strength-reduction.cc
! 85a19a8621ed8aba6da1f237a03c8f53  gcc/gimple-ssa-warn-access.cc
! 7064ea947fe572efdcb48307a73cc457  gcc/gimple-ssa-warn-access.h
! 1196b371cc6aba5694b6162ff454e3c8  gcc/gimple-ssa-warn-alloca.cc
! 1bc2d755960e18e2591f149a5eb08cfc  gcc/gimple-ssa-warn-restrict.cc
! 4c204306ae3e8d01d8d61c5f0b6d3636  gcc/gimple-ssa-warn-restrict.h
! 1a25ed5e8af1218f818917a10887c915  gcc/gimple-ssa.h
! a4af0a8c8375bd561488c9026db1eb1b  gcc/gimple-streamer-in.cc
! e6f970943a6488a82067db8970a3e786  gcc/gimple-streamer-out.cc
! b39e1a48a480dd829d786f82a4635b66  gcc/gimple-streamer.h
! 149358450e12efacc8e1de44432ee829  gcc/gimple-walk.cc
! 453e298e952d7961504e614fcf760433  gcc/gimple-walk.h
! 851410fecaff8b30ce6ecc9819c6b558  gcc/gimple-warn-recursion.cc
! 5cb9ca8b08afd3120831ff323666fd1d  gcc/gimple.cc
! cedfeeeb6a89b08187da0a55778ff05c  gcc/gimple.def
! b1f2597055332f7a009df2374360eee2  gcc/gimple.h
! 1a79444af2bcf0c019b20c37cb346635  gcc/gimplify-me.cc
! 489260dcd67a90caca7adf7b361f9078  gcc/gimplify-me.h
! 5c75c7affa993dc8fb3b9c74b2f306de  gcc/gimplify.cc
! acbd4cf19da012507fa6f90cc988cc15  gcc/gimplify.h
! 4b707ba8acc84c0c2c69cd7d11b0b878  gcc/ginclude/float.h
! 5e92ed0886d68a4cce339044cf03cd57  gcc/ginclude/iso646.h
! 62ea76ca87d63938a77a6d50f4bdd893  gcc/ginclude/stdalign.h
! 4d968448da3c8fdfdca9e5816fa8651e  gcc/ginclude/stdarg.h
! c14817e9b6598620231dcea766bd74d9  gcc/ginclude/stdatomic.h
! f29d199076eeabb983c592515ee1b045  gcc/ginclude/stdbool.h
! c04d87ca74aace83418fd9dc43e383ef  gcc/ginclude/stddef.h
! 5b9e7df8fd61a38ee9302497665ef191  gcc/ginclude/stdfix.h
! 657569f629dffb6939ca342765760fad  gcc/ginclude/stdint-gcc.h
  f85aa0745c3e9e0d32fa64753089b2f1  gcc/ginclude/stdint-wrap.h
! 86c2868069be6d672061b3ccc872b1c9  gcc/ginclude/stdnoreturn.h
! d6e38b1f29ed7cbf094498b65058bc0c  gcc/ginclude/tgmath.h
! 35c8e63b0bb041362d4e62e0722a0f12  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! 90ab079b9764cd0047ebb8e51e5950d5  gcc/glimits.h
! 233a70aca6bfd45516d68ab40c8ff343  gcc/go/ChangeLog
! 1e8d98252d6f5b7d8428ae93446ae0c1  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
! d9ae6df7a9c50076ec6b5e564516ca11  gcc/go/config-lang.in
! 6de103fbcaf3ede09e154b4507410fad  gcc/go/gccgo.texi
! abb8870216b1dcb46678a28424efe8e5  gcc/go/go-backend.cc
! d5f87e40815add17cf3d7b44e1f1e16c  gcc/go/go-c.h
! c8ae93841aa60c948162af93a875a63b  gcc/go/go-gcc-diagnostics.cc
! 03db2c35a39e03c8ab1f72e866ecd76c  gcc/go/go-gcc.cc
! 3331ac40c70c2495e29194d7a6ce2149  gcc/go/go-gcc.h
! c218daa2fbe96a9f0c4b05d8fbb89a77  gcc/go/go-lang.cc
  c5d6aaa7e913ef205113a2bba2e5206f  gcc/go/go-linemap.cc
  91c7a6773e207cc086ae0888826cc3c4  gcc/go/go-location.h
! e7ac1a933b9be9177f17122bbdaf7f15  gcc/go/go-sha1.cc
! c0d3df9f78aaab124d5664ef5cb60e7b  gcc/go/go-system.h
  5d4950ecb7b26d2c5e4e7b4e0dd74707  gcc/go/gofrontend/LICENSE
! ad0775a801bdf03c787cc15a49d05836  gcc/go/gofrontend/MERGE
  3a55d95595a6f9e37dee53826b4daff2  gcc/go/gofrontend/PATENTS
  31c16a91d82f8ad3319819ebbba2d17f  gcc/go/gofrontend/README
  38df5a2d45162cae2b454cd17fa8df7a  gcc/go/gofrontend/ast-dump.cc
  456b6d4cc785176b6e3eb0c685a93b39  gcc/go/gofrontend/ast-dump.h
  ea386ab9fecd1e6a9d230d51e7190683  gcc/go/gofrontend/backend.h
  f4698d5111935f1c789b7efd8ed91a74  gcc/go/gofrontend/embed.cc
! 9f2438f4946c0987f3884309ecf5fa0b  gcc/go/gofrontend/escape.cc
  ee8753eb1d8ca2fa168f6a71d3991455  gcc/go/gofrontend/escape.h
! dccb73c4ca0b41d94f8c32f09722e264  gcc/go/gofrontend/export.cc
  c10142760925e22c72c7072c9c214bf8  gcc/go/gofrontend/export.h
! d21670515fe23df2b0c0f939571e07a3  gcc/go/gofrontend/expressions.cc
! f12860a9f12260693e40f993afb8726d  gcc/go/gofrontend/expressions.h
  bf7f8a519eadaa90804fe15cfa37ba6f  gcc/go/gofrontend/go-diagnostics.cc
  accfd5ea41ee789e6adbaec31a228cfe  gcc/go/gofrontend/go-diagnostics.h
  19e66447fa803385274b4e1a7501a4d5  gcc/go/gofrontend/go-dump.cc
--- 5622,5897 ----
  65ff19d3a00eda2236e8a41b7f46ab5a  gcc/fortran/ChangeLog-2019
  d1595b2ed8fb2a33f6ce0dc595f4f33c  gcc/fortran/ChangeLog-2020
  6c371391409a36c72d51955cc875301c  gcc/fortran/ChangeLog-2021
+ 5c5a825ed06bb99f8fc71a6f8d0872ae  gcc/fortran/ChangeLog-2022
  9e0636f92243fb9b3480e27cefc96749  gcc/fortran/ChangeLog.ptr
! a1031ddafa666ce3ade625f41c0dc3f8  gcc/fortran/Make-lang.in
! f2e859e94c71e952749559a5e4b2aa09  gcc/fortran/arith.cc
! d725b555490bb7f2cd61f6bcc2c3de67  gcc/fortran/arith.h
! 6862ae7ef2b51d178c04725c07fdbde7  gcc/fortran/array.cc
! 35e889b2dd5fcf9ccf78e37ed082d6e6  gcc/fortran/bbt.cc
! 767092f3b1a131a42c4a748fafcf0234  gcc/fortran/check.cc
! ce0a28d639a1a02f929ac8d86d857e84  gcc/fortran/class.cc
! e3250461219cfa76e4436196538109fc  gcc/fortran/config-lang.in
! 25b8459831a3492589703f8ac166fb8c  gcc/fortran/constructor.cc
! dead8f794e0bc7ece3c9f46a4b9ead58  gcc/fortran/constructor.h
! 2b11c42608012cd0b983a05194e5493a  gcc/fortran/convert.cc
! 3ed4366ef8aa1cfbbb2032a559712c39  gcc/fortran/cpp.cc
! bc8a50172db20622023d7b83c31d7737  gcc/fortran/cpp.h
! d49d08bf3282ebea910b14cf88b1b5ee  gcc/fortran/data.cc
! 86b2ebfc95645333cba0df8f79638b62  gcc/fortran/data.h
! ee37a420357297794511b72f8c09a0d3  gcc/fortran/decl.cc
! 92b2a0849ab19332ebb5633d75c3565d  gcc/fortran/dependency.cc
! 528121f9fe625a6b314dd0e4e9601e70  gcc/fortran/dependency.h
! 638a4c6c1f147853ccf44c5442c876f9  gcc/fortran/dump-parse-tree.cc
! 75860b58e8a01aadbfb046789efa8a88  gcc/fortran/error.cc
! 715ab478129c64b1907a83efb08081c9  gcc/fortran/expr.cc
! 012392c6483a51939022df7c6de22fbc  gcc/fortran/f95-lang.cc
! cb0736e48f79ba7f94783d7501f4a136  gcc/fortran/frontend-passes.cc
! 5d21a6b2bc38e36e9ce485f9b899cf5d  gcc/fortran/gfc-diagnostic.def
! d428ee96a4c880140da26aec0f107bda  gcc/fortran/gfc-internals.texi
! 335c0c1a42f679ad91a63d25ab45e36c  gcc/fortran/gfortran.h
! ce2c41ac939cc0f893f610988ea3220d  gcc/fortran/gfortran.info
! c477697c9380a63ab2bbe06ee3e5e441  gcc/fortran/gfortran.texi
! 538b040a49c9f6c46cbd59c2a9ce1afd  gcc/fortran/gfortranspec.cc
! 920681285743032ca14d49a65dea58aa  gcc/fortran/interface.cc
! fa6aa4009c0eec8232b24902c6900993  gcc/fortran/intrinsic.cc
! d9000cac276ba162b0a7fcc76c6f8be0  gcc/fortran/intrinsic.h
! 9c38010b39eaa7dc10c02b510ddd4d20  gcc/fortran/intrinsic.texi
! 211ec2a87dfb468db93dc18be3821b87  gcc/fortran/invoke.texi
! e25a04efa7ac5e920a21a383235da157  gcc/fortran/io.cc
! 1b49007c5da8e0831c984754f0905035  gcc/fortran/ioparm.def
! dab05b735b8cb3f052d21778d880e650  gcc/fortran/iresolve.cc
! ad808a3e3c725da4d83aa2253f4b6bc3  gcc/fortran/iso-c-binding.def
! d2a4c5315fb086aeaa125c4b2829a29f  gcc/fortran/iso-fortran-env.def
! 5659bf0ae0187cfd21cd8f599d82f98d  gcc/fortran/lang-specs.h
! 92cf8f5887329d298f04e41b7fd4b780  gcc/fortran/lang.opt
! dfe2708ae1610f0355d4e3f64825ed31  gcc/fortran/libgfortran.h
! 08a1a0779191b3b5841023000ea002fc  gcc/fortran/match.cc
! 6da0bc7042d9bd55ddf1b96015c07579  gcc/fortran/match.h
! 38fc5448e9ea8b828a44496034ac708e  gcc/fortran/matchexp.cc
! 540b2df11e809f8e922d0bc5b5562d6b  gcc/fortran/mathbuiltins.def
! 7d747e480d55c8abf8c69b45a4d2b572  gcc/fortran/misc.cc
! 9e2b905df5f9fc837a357446869f949e  gcc/fortran/module.cc
! d29b1cc96daceef9701d30f92366c260  gcc/fortran/openmp.cc
! 47d8fa5113c1f84c750b8fa73bbc5cfa  gcc/fortran/options.cc
! e01b3ff4f9a34a0d8ea09103b65e1480  gcc/fortran/parse.cc
! b07d21325e9bf64201a6131a3dacb9e2  gcc/fortran/parse.h
! 590ee5a69f89f0ac8c855e2a1202a287  gcc/fortran/primary.cc
! d7e7a59f0b9fc224567479b6e3cb61c2  gcc/fortran/resolve.cc
! 4c64219f591caa92c353a8d113120d87  gcc/fortran/scanner.cc
! 0ea05c5f1f9c27f26a76525f5eed9380  gcc/fortran/scanner.h
! 42ff730746d606955267518dba62febf  gcc/fortran/simplify.cc
! 72519934fee840610460010d9b5e0503  gcc/fortran/st.cc
! 2ec1e09cb2380dcbb07b7b5a07504919  gcc/fortran/symbol.cc
! e99e43daa5fef5f3d2c6dce6be81a683  gcc/fortran/target-memory.cc
! 70445c82cc8c84eb76adf2a52acad00d  gcc/fortran/target-memory.h
! 2e130592d441731acfe57bc553f673cc  gcc/fortran/trans-array.cc
! 23946ddd5d17c204402c44a0b9a00d75  gcc/fortran/trans-array.h
! 4c2eb969dbee5d6b83074ed09773b70b  gcc/fortran/trans-common.cc
! 45ab297b0b34853431ed0f3c09a63db3  gcc/fortran/trans-const.cc
! 2825c959ade33ef2a6492d640b05ef8c  gcc/fortran/trans-const.h
! 7c67a63f4b154b22cb30dea7903ab085  gcc/fortran/trans-decl.cc
! fe14bedc11db63426aaf1a2638728d1d  gcc/fortran/trans-expr.cc
! aa7db01c621f70aaafdec88f841c85a4  gcc/fortran/trans-intrinsic.cc
! c2777cd0e39ba69462f4cf01549e1001  gcc/fortran/trans-io.cc
! 22d1e0d888bbcc97570dc403d58b3301  gcc/fortran/trans-openmp.cc
! f80e2b35dd9984f23ec5e900639fe3e7  gcc/fortran/trans-stmt.cc
! 61675b3c591abd1d33f4d00338f84245  gcc/fortran/trans-stmt.h
! b1f95ad84f13bfa7353375c5f77c3998  gcc/fortran/trans-types.cc
! 5581dfe9c36f8428667284c49aa3d0a8  gcc/fortran/trans-types.h
! c2539b2f896d34768eab33e1666b7ab6  gcc/fortran/trans.cc
! f816175a2ce44db1f8492faf3a65da0d  gcc/fortran/trans.h
! bae9bee7bfae062bb68f7c3b8d6acdb0  gcc/fortran/trigd_fe.inc
! 630fb1a9d96d7163a799226c47d93e42  gcc/fortran/types.def
! 6e6676a600dabdc095824090f0413b0f  gcc/fp-test.cc
! 5a80a7008007e116025a7a3c9796fdc0  gcc/function-abi.cc
! 3a145e6b7f87c4e84c84bbb84f77d201  gcc/function-abi.h
! 9d3f4e62a09a4f1b7e01c2611985469b  gcc/function-tests.cc
! 1b9cd2186d1c1e9b86c956a5673f0aa9  gcc/function.cc
! 26caa4b20f75c2eb576da5bea538a2bc  gcc/function.h
! ec1ece0e3cad94794cce31d0fdde9dd7  gcc/fwprop.cc
! 8b44f92603525757cdb88056f5f18ca2  gcc/gcc-ar.cc
! 5d0b85771982e816a798a8206c3fc74c  gcc/gcc-main.cc
! 73e2fac76430bce31ea211c315bda445  gcc/gcc-plugin.h
! c1a2319dd98fbb3cf4d0f1bc3bd9411d  gcc/gcc-rich-location.cc
! 311b586e10061aa51fe4a5104b704149  gcc/gcc-rich-location.h
! d0550adc071932f54b7e84efcf70390f  gcc/gcc-symtab.h
! 593b02fa14d7eeebe3b683e93b2228e2  gcc/gcc.cc
! ffa75db321d301638c5a896b4a82acb0  gcc/gcc.h
! 2d213a0bc44c748c31a963119269ec27  gcc/gcov-counter.def
! 21a831f5ad30a77681f463ffb6778855  gcc/gcov-dump.cc
! a061f3b1bc13792371e3aea9bcea55e9  gcc/gcov-io.cc
! ec7a2d8bbff219eabbfd6c27d5ba0f1a  gcc/gcov-io.h
! 372a66cfa298d942686c4d60a0e6a54e  gcc/gcov-tool.cc
! 086e9bebaabf0330af3ff55c3299b092  gcc/gcov.cc
! fc765fe2c0376a323c3e05199a6642c6  gcc/gcse-common.cc
! d93e600542d14d20d983a105d37e4b7b  gcc/gcse-common.h
! 89356c0b0593711eb0320e9660d75975  gcc/gcse.cc
! afb7e14e477ad7ce68d069b83e7b8347  gcc/gcse.h
  af83e4b4719ee065872080b713d24c2f  gcc/gdbasan.in
! f440dc2cddd542a8b1c8bae604d0ac1c  gcc/gdbhooks.py
! f0597f3cb560d84362303308540350d0  gcc/gdbinit.in
! ded5ec60ebdb05bebcfc3e1e29738ff1  gcc/gen-pass-instances.awk
! 32694c1fab4d6999b237e60631242209  gcc/genattr-common.cc
! fbf24911aa41bb149b45c91aca3c9919  gcc/genattr.cc
! 2504227e2763bbdef5a8414d22894951  gcc/genattrtab.cc
! 03df20173faf9f2be4993619d9461aad  gcc/genautomata.cc
! e83d5121aed1484b28a27fb9beb475b7  gcc/gencfn-macros.cc
! 187fd832a68e96b8341cf58b74deefc9  gcc/gencheck.cc
! 8bdfd96e35a0803ec2371e14bd280bac  gcc/genchecksum.cc
! 2272622f91c3d513cfa191512eff4cd3  gcc/gencodes.cc
! f3cd048b40e6a1a1f89bd8ba625eb5a3  gcc/genconditions.cc
! 8cdf4e9d1a3cf8eca9fcff8db60473c2  gcc/genconfig.cc
! c95ebf198c7a70ab69714b54f1796482  gcc/genconstants.cc
! 2b0b291e06d85277dbea1657b030d0d2  gcc/genemit.cc
! cc162e4b8e4003593f5a6fcfadd4d07e  gcc/genenums.cc
! d258b1bcd3dd4ab8eb1bbf09f60dc200  gcc/generic-match-head.cc
! 368d6797b244786570ddd98e596d1d29  gcc/generic-match.h
! 7a825a2d078d154675036b7133c6816a  gcc/genextract.cc
! 7dc273587dd4838a57817b211ad1f139  gcc/genflags.cc
! b6fd297a00cab6b8993690131bc4c0f7  gcc/gengenrtl.cc
! c642d3f0b56ba6c32522f7efeeb11b30  gcc/gengtype-lex.cc
! ff24fa6416a039455ff62a41252d6f7b  gcc/gengtype-lex.l
! 91e7a263b28c131771f0c6463ebb1bcb  gcc/gengtype-parse.cc
! 433b94a87abdc5536d0c8d2b097cb669  gcc/gengtype-state.cc
! 2c09e645967b3f68ada4e18d3dd2d63d  gcc/gengtype.cc
! e0d0f369c0b3561c1811db4cda5ee811  gcc/gengtype.h
! 681dd3836e8a4b75afc0f76ca76192e4  gcc/genhooks.cc
! 152447edd2bbe25c965c4f096582dc29  gcc/genmatch.cc
! c0ed410bbe477ba49f81bddb8761859a  gcc/genmddeps.cc
! 063e980b03cc459fd39e65e4df6e0e8f  gcc/genmddump.cc
! 54fe4a99cfccd066490a5ba47d032ab3  gcc/genmodes.cc
! e2e9db28455bc20db77aa12f8e780af1  gcc/genmultilib
! 3a844bbc8e25a2e772beff53ed5841a6  gcc/genopinit.cc
! bbcdcff0044f4a94d656298db3e3d47c  gcc/genoutput.cc
! 88fdeae8426487598a7a5575e1a9af24  gcc/genpeep.cc
! de97768c4d4323bb137034c8bf3c9ad9  gcc/genpreds.cc
! 9e728909e91dc86ee7a7b70d2c134043  gcc/genrecog.cc
! 52e1fbb713df6457876a374017cbafdd  gcc/gensupport.cc
! 3e95c7746e4b605d3b22047b24a18429  gcc/gensupport.h
! d1e7a4290ee9f49476e6ca7776d601cf  gcc/gentarget-def.cc
! 3497c1c9f188ae7378e60e5df68973c8  gcc/genversion.cc
! 3a3ac110be12dfd050b63e4b5bcb85d0  gcc/ggc-common.cc
! 56b94e598841b52eccd3237acd19cd2c  gcc/ggc-internal.h
! 597a6553536f682558b00f2e0ea1e68e  gcc/ggc-none.cc
! 1a7a41c389b096e066ca689404ef77aa  gcc/ggc-page.cc
! fcadf1cd28fcc01c89bc61f8c8fd3779  gcc/ggc-tests.cc
! ccc5711ecd52f17d0dc04a5cd9ead00c  gcc/ggc.h
! 5a50cadd1dcc81f8e75d4bdebc373e0e  gcc/gimple-array-bounds.cc
! 0e5407e2356362d7df736b05dd2f4438  gcc/gimple-array-bounds.h
! db0ccc0edfede8aba0098ae504276e86  gcc/gimple-builder.cc
! 2e82b4bd416d82267e23cfb6b62145d3  gcc/gimple-builder.h
! e634f1d7185ba18b7409d0caf5dda150  gcc/gimple-expr.cc
! 029271620b653993e15dfe20ddd2d37b  gcc/gimple-expr.h
! f984ee143c8d34ae81706f06b23a6a49  gcc/gimple-fold.cc
! 9a9d95793deb7de9860fc0d1215b3390  gcc/gimple-fold.h
! 7cf98e471595ea406079ac821d418500  gcc/gimple-harden-conditionals.cc
! ab5c0e8e80c5a594037aa3a03ad791c9  gcc/gimple-if-to-switch.cc
! abbfb806967247261721a1426b3ca8b3  gcc/gimple-isel.cc
! b069e9e3036a5be85f13d7ed6b712446  gcc/gimple-iterator.cc
! 8546ceb8b61e658a5611b91453822fbe  gcc/gimple-iterator.h
! 9cb5accb4acfb52a12c188eb63da85aa  gcc/gimple-laddress.cc
! 72e941e28563893bc3e6b2d86bcd8154  gcc/gimple-loop-interchange.cc
! 98ac4e2d69f0aa03e94034e43fa19b9c  gcc/gimple-loop-jam.cc
! 4b9a3d495fb62afd583b19545c823417  gcc/gimple-loop-versioning.cc
! e8ae7c4811c6ea1d7ca4300595f6a351  gcc/gimple-low.cc
! f56d763b660a3269a8502a8976fb3400  gcc/gimple-low.h
! 33016ce950bb4d535a7f5b26e06daa9f  gcc/gimple-match-head.cc
! 81662d1e70874dc5ddebb9cab55de6d7  gcc/gimple-match.h
! 003066bdfedac27feec147501f3b7719  gcc/gimple-predicate-analysis.cc
! 9d5e6300c4a359fcde1abf212245eb5d  gcc/gimple-predicate-analysis.h
! c006b7e8bf1d5bbb53532c7d765a7b5b  gcc/gimple-predict.h
! 254be4975243d1918c2e1e4de2d45f33  gcc/gimple-pretty-print.cc
! 1f6de5d464fb403c0d90293d38ac4e28  gcc/gimple-pretty-print.h
! 7d19f76dd3504f1be48c003e2e57a12a  gcc/gimple-range-cache.cc
! cd5746fe031b5d538b360fa10b1d17af  gcc/gimple-range-cache.h
! b25199c5ed0e508a53d8475feccb5c61  gcc/gimple-range-edge.cc
! 63552731dc609ddfd75542482f4ac3f9  gcc/gimple-range-edge.h
! 026c72667bfbb609f4eb2edd688d7f93  gcc/gimple-range-fold.cc
! 80a33f217a8462e04c962982e13c342f  gcc/gimple-range-fold.h
! e95708c518cce98f2e90ca2b346487c7  gcc/gimple-range-gori.cc
! 83fa369894ed79484edcd88e46e5ff5d  gcc/gimple-range-gori.h
! 7b1dc20ba60b4caa74daea9f1f124b18  gcc/gimple-range-infer.cc
! 9f35006871562ecf765135728e0d57c4  gcc/gimple-range-infer.h
! 487a96f6c36ce32cfe9885b8dcb738ee  gcc/gimple-range-op.cc
! 40bb619c45615b32a7d0005623488726  gcc/gimple-range-op.h
! 8172ae668f7250132a8b9a287010fa34  gcc/gimple-range-path.cc
! e29891d13b0ac2e960cac756204b9b46  gcc/gimple-range-path.h
! a03b4f17862e24c25dc27bd52bf6e4c9  gcc/gimple-range-tests.cc
! 1d284fef5facc9d3af2d9f27e0a7939b  gcc/gimple-range-trace.cc
! 7a8faab9d11d2332278fc21791ee0b3e  gcc/gimple-range-trace.h
! dfa9268a94fe4ee9bba75c8c97f0200d  gcc/gimple-range.cc
! 0976244211621a90be645055605c6daf  gcc/gimple-range.h
! 56830cf539b3435d091891bbba95ef6b  gcc/gimple-ssa-backprop.cc
! b3178e7dacab1eeef6f1baaa46a35607  gcc/gimple-ssa-isolate-paths.cc
! 749a81e49450342357c075a9b79b8992  gcc/gimple-ssa-nonnull-compare.cc
! 11b5e3a1e0c7638d90da5ecf2cdb04e3  gcc/gimple-ssa-split-paths.cc
! 23b52ef0e64595de3e63ce532ff3c36b  gcc/gimple-ssa-sprintf.cc
! 2bcaf4808315c05c9d18f47fdfc47043  gcc/gimple-ssa-store-merging.cc
! feb1e49f3049b5493cdc6992e835aac8  gcc/gimple-ssa-strength-reduction.cc
! 6092b36acbaecc4d75350ed8a552aaac  gcc/gimple-ssa-warn-access.cc
! 5552bbd93405fe7df3168326c4937c69  gcc/gimple-ssa-warn-access.h
! 9d79faa40edf139ffdf7d68d1537b0a0  gcc/gimple-ssa-warn-alloca.cc
! 40441da7b03d2997dffa1122ded5e2f4  gcc/gimple-ssa-warn-restrict.cc
! 422e0a09e39554ba2887528c8bed90bb  gcc/gimple-ssa-warn-restrict.h
! 5f8d9f93d02bcd5879dec56a1bdd3f2a  gcc/gimple-ssa.h
! 46f04f99566834e7cc84a3d2d8c9bda5  gcc/gimple-streamer-in.cc
! f2ac4765424453762a2ec4deb1a07d64  gcc/gimple-streamer-out.cc
! 27e1f2dcfc6351d766a10f88df8d79b8  gcc/gimple-streamer.h
! 97728845afc62662a2b2a3c43fe667b3  gcc/gimple-walk.cc
! 7ad8fca7963a892e60b9571e760e7ec5  gcc/gimple-walk.h
! 1f64478d544cbac57eed955b9b2b709c  gcc/gimple-warn-recursion.cc
! 8816cef486527a9fec6b68b907bba021  gcc/gimple.cc
! cdca7003d337efe5219b5d19f7155bc8  gcc/gimple.def
! bb54e7f3ff9957dcf7b1b10fcd527797  gcc/gimple.h
! 839b10eca81556c0515395365235a888  gcc/gimplify-me.cc
! 0a4464e175c1aed6501ea243476b7c6d  gcc/gimplify-me.h
! 2779a59c340cd1745aff9d4645240b3b  gcc/gimplify.cc
! d0042a88c5e87b0904397052ddc6c33a  gcc/gimplify.h
! 02d1486ff7d3d34b7868801df9534c0e  gcc/ginclude/float.h
! b0ab9b7ae13d3afe6cdbfc24425a93fe  gcc/ginclude/iso646.h
! c8899b06ef78a5999996cf52cd344c91  gcc/ginclude/stdalign.h
! 9eb2d2dee513b57d67037d86d49ddf4e  gcc/ginclude/stdarg.h
! 280375b0549a5bb8e2f366a4c8e1a45f  gcc/ginclude/stdatomic.h
! 80a9c1aa0fa71b8fa9412be8589c4794  gcc/ginclude/stdbool.h
! 00b3c045a13f7594b628c670532dde1e  gcc/ginclude/stddef.h
! 9f63387ae6ceb7b7baad05091512a829  gcc/ginclude/stdfix.h
! b62976756703b087708c4f6915eb8ff7  gcc/ginclude/stdint-gcc.h
  f85aa0745c3e9e0d32fa64753089b2f1  gcc/ginclude/stdint-wrap.h
! d805766cac737a191548368792524f9d  gcc/ginclude/stdnoreturn.h
! 5402c032b10ed83d1f77ec71616dd286  gcc/ginclude/tgmath.h
! c92410f8fdb1cb95371b72c53ad55b5f  gcc/ginclude/unwind-arm-common.h
  8d9ecf0d6ef93c79623ce1d27a32a2cb  gcc/ginclude/varargs.h
! 5a3af36f882f0b8588bf6b6d2a2dd6d4  gcc/glimits.h
! 65b7028a173f05a4517b7863eb25094a  gcc/go/ChangeLog
! 1e68fc87619f2cd82132ed974cbcea92  gcc/go/Make-lang.in
  60ea054548c83c7f66170073f9f3e74c  gcc/go/README.gcc
! 401d2277f19452f5b013534ed200a591  gcc/go/config-lang.in
! e72c6c1dad1019d9aaafe0dfdfc61c86  gcc/go/gccgo.texi
! 3808a0f4554e77dceddd29a19998f4c2  gcc/go/go-backend.cc
! 9c66a14b95f620af8dadd7983c6e59f3  gcc/go/go-c.h
! 345e1be9f23e685801689c8a988d6c9e  gcc/go/go-gcc-diagnostics.cc
! d498ee616922ea9508f4676dd81d46f3  gcc/go/go-gcc.cc
! 01ea211f2ed2cade1e750fba940c8a0d  gcc/go/go-gcc.h
! 307e98583c9d09540731e29c1b6bc853  gcc/go/go-lang.cc
  c5d6aaa7e913ef205113a2bba2e5206f  gcc/go/go-linemap.cc
  91c7a6773e207cc086ae0888826cc3c4  gcc/go/go-location.h
! 379a0029afea43244e05e7365d87fb0d  gcc/go/go-sha1.cc
! 098ac0c723c55fd6475303003a79a570  gcc/go/go-system.h
  5d4950ecb7b26d2c5e4e7b4e0dd74707  gcc/go/gofrontend/LICENSE
! 3fc22e35b1774e97400b8b7337450167  gcc/go/gofrontend/MERGE
  3a55d95595a6f9e37dee53826b4daff2  gcc/go/gofrontend/PATENTS
  31c16a91d82f8ad3319819ebbba2d17f  gcc/go/gofrontend/README
  38df5a2d45162cae2b454cd17fa8df7a  gcc/go/gofrontend/ast-dump.cc
  456b6d4cc785176b6e3eb0c685a93b39  gcc/go/gofrontend/ast-dump.h
  ea386ab9fecd1e6a9d230d51e7190683  gcc/go/gofrontend/backend.h
  f4698d5111935f1c789b7efd8ed91a74  gcc/go/gofrontend/embed.cc
! 7963756a49674b738fac31837f53c23c  gcc/go/gofrontend/escape.cc
  ee8753eb1d8ca2fa168f6a71d3991455  gcc/go/gofrontend/escape.h
! 3705b4e2024d6d36ef4c72d36152dfc6  gcc/go/gofrontend/export.cc
  c10142760925e22c72c7072c9c214bf8  gcc/go/gofrontend/export.h
! 54464588e59b868368a6f197cddc0d81  gcc/go/gofrontend/expressions.cc
! 916b62cc20abf79c5919886f855539d3  gcc/go/gofrontend/expressions.h
  bf7f8a519eadaa90804fe15cfa37ba6f  gcc/go/gofrontend/go-diagnostics.cc
  accfd5ea41ee789e6adbaec31a228cfe  gcc/go/gofrontend/go-diagnostics.h
  19e66447fa803385274b4e1a7501a4d5  gcc/go/gofrontend/go-dump.cc
*************** d1f133d9f54a935571cc84512acdeb69  gcc/go
*** 5871,6459 ****
  c08c0bc386a3e50faacf99daf94c080f  gcc/go/gofrontend/go-optimize.cc
  ead5ac25b7b99d361225e0fd940e286a  gcc/go/gofrontend/go-optimize.h
  5b59619fab7e543c5bb28dd8a6d62793  gcc/go/gofrontend/go-sha1.h
! 8d64d49cf01e7d7605f32b644d82c7e1  gcc/go/gofrontend/go.cc
! d0c206bbee40862a4251351a8a3194ea  gcc/go/gofrontend/gogo.cc
! 7225312726c1a007ca4244c66fe8157d  gcc/go/gofrontend/gogo.h
  f9015ccccf7764d4c6eeae1bd5e01c7f  gcc/go/gofrontend/import-archive.cc
  69248b78bc1185657dbc63be6016ac45  gcc/go/gofrontend/import.cc
  0a9e27f1c3baa96ef288093aae5e2d3d  gcc/go/gofrontend/import.h
  52b99a209e77281dd06be084c671c85f  gcc/go/gofrontend/lex.cc
! 9122b6b86b48dacc593e397f5f915922  gcc/go/gofrontend/lex.h
! 43b62193a1fb46a6002699db1d668d60  gcc/go/gofrontend/names.cc
  98235b1a736055cd6a130337a9ee8e8e  gcc/go/gofrontend/operator.h
! ab2752d4c13503459d9b0e72aef27311  gcc/go/gofrontend/parse.cc
! fdc23bf9fa3d45fac329dccdacdc09bc  gcc/go/gofrontend/parse.h
  2c0d81f700bca5c56dfcd3a7673e2e82  gcc/go/gofrontend/runtime.cc
  06ed40caa7a515346c6a4708bc2dd50e  gcc/go/gofrontend/runtime.def
  978a7b1924ca7f696fa5d0da3c9ccf60  gcc/go/gofrontend/runtime.h
! 30757cf9cc9c43ff745ecbafbb382796  gcc/go/gofrontend/statements.cc
! 2eb4054e4a44955e627d6732684b0563  gcc/go/gofrontend/statements.h
  bfc57c7a1e73452c4b277ad13efbddbd  gcc/go/gofrontend/string-dump.h
! ae8b0ec75f2ebcf5ae469db758072686  gcc/go/gofrontend/types.cc
! 0e2585f706525b962e98b90c1661ecc2  gcc/go/gofrontend/types.h
  1a87c48a17e95c935789de3db97a6ba8  gcc/go/gofrontend/unsafe.cc
! 090095c2b56e6d719c7e5ec12e5daf7a  gcc/go/gofrontend/wb.cc
! 9bab8094ad5c05dd6a3023b0c84de22e  gcc/go/gospec.cc
! 1f1f31492444863057fdf7f636c0e3fa  gcc/go/lang-specs.h
! b26f58f9b8d2e66f41b69e41a5fc634e  gcc/go/lang.opt
! 0b4376ad5ba057571460bf2f28d621bf  gcc/godump.cc
! 8c795c8e443ee545bd61b9d00efb93e2  gcc/graph.cc
! 0166e629ed9af9dbcf8cd7821198a3e0  gcc/graph.h
! c0cfb31988470f2c7746d3acf71db806  gcc/graphds.cc
! 49a20d3c138232b389e4f378c44dde94  gcc/graphds.h
! 439a7883bbd573e16bfa84e5d29dd85a  gcc/graphite-dependences.cc
! e1d2641de73f71e858bdc59642478e79  gcc/graphite-isl-ast-to-gimple.cc
! b6a750b8bd7d464db0302a8855d47a3d  gcc/graphite-optimize-isl.cc
! 2bd681a2e2694bc581985dcc664b6af4  gcc/graphite-poly.cc
! b1345c750ec1f358eddd66040dea5c73  gcc/graphite-scop-detection.cc
! abdec23c79b7c93b53b7ec244ba96f98  gcc/graphite-sese-to-poly.cc
! d113ba3e95d248901ece4282463c7d20  gcc/graphite.cc
! 86795d470c30733a02cf24919dc32af2  gcc/graphite.h
! 670eca0f178e49233969f1794051443e  gcc/graphviz.cc
! 8faff969ae1c246dbe2636a0821afbec  gcc/graphviz.h
! 87b40b91b9f082b31567e1e7d427a457  gcc/gsstruct.def
! 8af61f74886a7d089a64a325ed3ad03d  gcc/gstab.h
! ff9772ebe36c907d443ac5547b9e1eb9  gcc/gsyms.h
  c32a1d882e7039afe158bb9e59b65223  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! 86f0aed1712cf07dd58801c0a74f2fc8  gcc/haifa-sched.cc
! e8d57ef6cd4e7cf457a7c55214b1e7be  gcc/hard-reg-set.h
! f754701a3dfeb0bc0064efd1d93dde91  gcc/hash-map-tests.cc
! 864337924f855f4a26edd60a03a83f01  gcc/hash-map-traits.h
! 0680a18203966ab0047ba39cc867057d  gcc/hash-map.h
! 74f9d4c70b96de3e65a447d728de3771  gcc/hash-set-tests.cc
! 1d4959572958d197bd66adbb014cc5aa  gcc/hash-set.h
! 75fae46ce694e01815f579a0c813481d  gcc/hash-table.cc
! 319a2b3b8cb215498607d3e0ec5385a0  gcc/hash-table.h
! 544b88197685524c8552a2e9cb0e14f7  gcc/hash-traits.h
! a6dfe40be12633caecf9adb44f93a5f1  gcc/highlev-plugin-common.h
! 4c2e6fd659243e49ddde1820ac178750  gcc/hooks.cc
! 0b9aabf6caef04446af82ac2efa97f11  gcc/hooks.h
! b38b09eda344be477ef827e9f4fe19fc  gcc/host-default.cc
! af24555e2f19dd23a9d89645c9b00577  gcc/hosthooks-def.h
! 8e327cf34321afea611379a9fb109383  gcc/hosthooks.h
! bf47ed453b2791c3b17c322089fdb9b5  gcc/hw-doloop.cc
! 6e9157293e477321b57dc9ba415b3547  gcc/hw-doloop.h
! db784c4dec382bf69e2da718a29b71f0  gcc/hwint.cc
! 5637a86533a4ad6cffd85d62f9a3e55e  gcc/hwint.h
! 23e66bce328309eb7473c4d07bc23139  gcc/ifcvt.cc
! 58891b9146041bf3fb0a551f9f19d519  gcc/ifcvt.h
! 77b20fe549fa329cc38f5020121033e0  gcc/inchash.cc
! 96c0d1fcd738780624d5f80686c5092d  gcc/inchash.h
! b2601efef3469f55f906681ff6be137c  gcc/incpath.cc
! 98fb0e89e4d4cb74def77b7e62322e54  gcc/incpath.h
! 2e118234c0b022ba48c6f832f398997a  gcc/init-regs.cc
! 14450cd0dfb4aec0128aebdf8538bad2  gcc/input.cc
! acf3629698886d7731465289650fbbae  gcc/input.h
! 4c297622fd65667c55ca02af467839b5  gcc/insn-addr.h
! 5709259b06b655ea8191ac2302e2d9b7  gcc/insn-notes.def
! 2e02df0276f8a31361cab997f6a982d5  gcc/int-vector-builder.h
! d8b816ce0804ccf49972f9737caa47c8  gcc/internal-fn.cc
! d7430b67aefa3403a2207e43265581a4  gcc/internal-fn.def
! 1c74a8a85d4a17c3325c17130dd7db5b  gcc/internal-fn.h
! b443a7d193ebaabda76bd4c23fe54323  gcc/intl.cc
! fdcce39ba434215ff2ed425e037af50e  gcc/intl.h
! af937d6371bfc6dae1126fa3b845a40d  gcc/ipa-comdats.cc
! 2664f3c0c08cbcc354c2084e9bb2512e  gcc/ipa-cp.cc
! 16e76ae631e7fbdef7ff117fe1630735  gcc/ipa-devirt.cc
! b8faf7652ab73348eb8dfd2b188a5d56  gcc/ipa-fnsummary.cc
! 634795391b1718599123e8f6f5dd1068  gcc/ipa-fnsummary.h
! b34559e01a3cf2fa5b4a65c745283e25  gcc/ipa-free-lang-data.cc
! 8549067301085950d4377b2f3edf87a0  gcc/ipa-icf-gimple.cc
! ac03bc194f37ee5eb93086c446e09d46  gcc/ipa-icf-gimple.h
! ee2caeb2b5a661cb2b3320d1ed0f0ffc  gcc/ipa-icf.cc
! 160f6907201241c29aa0aba8c773fb7d  gcc/ipa-icf.h
! 565b1ea811f3e7314cb48b887d1bd0a3  gcc/ipa-inline-analysis.cc
! 3691be748be0839f168ca434883e3578  gcc/ipa-inline-transform.cc
! e3a631a3659e24702ef403fc44290218  gcc/ipa-inline.cc
! 1fa2c0c59dc4da56860cc6f2a97f7f83  gcc/ipa-inline.h
! df25330f62b3dfe116e3d208d97382c0  gcc/ipa-modref-tree.cc
! e232a9fa53a9e55ca7d904fd6d08cfd3  gcc/ipa-modref-tree.h
! 626c06f88fb95c500f85a961b35a2586  gcc/ipa-modref.cc
! a1998332fb371fefb1d136e55f251318  gcc/ipa-modref.h
! d31cf24ad65cb55bd058bbf61fcb7bfc  gcc/ipa-param-manipulation.cc
! e01722139c46d541a8e92df69558f7b8  gcc/ipa-param-manipulation.h
! 1a2032e460d88a8d7a36ee255cd5def4  gcc/ipa-polymorphic-call.cc
! 8e4ffa832ff8be986741e4db4fb7a14d  gcc/ipa-predicate.cc
! 8ea80a7dfb62d31f755b1bab47536cfb  gcc/ipa-predicate.h
! 186ed06995655200325c448906fd4688  gcc/ipa-profile.cc
! 61a8ddd55b595dd948ec7935c1a58e73  gcc/ipa-prop.cc
! 1886f17f08aedfc3b28183e70fa52ff0  gcc/ipa-prop.h
! 2c96c4cdf72bb1e412dadeb5734512bf  gcc/ipa-pure-const.cc
! 57bca18eaf2476064d1e04fcdcff555b  gcc/ipa-ref.cc
! 2704b79d11adc7a154b9c72ea85288ec  gcc/ipa-ref.h
! a5c421a540721b61c61e6e0e8cb8ac47  gcc/ipa-reference.cc
! b5523beb6810c27a90444c6dd0744a80  gcc/ipa-reference.h
! 94d75f3a7f9fcda0204662eb63802065  gcc/ipa-split.cc
! 0399373d69f5a7085e6029ab7bf3959a  gcc/ipa-sra.cc
! 1eff5e5b8af176fb3f489ae49f5cbc09  gcc/ipa-utils.cc
! dbfb6bb9b1400f13bca5fda78201273f  gcc/ipa-utils.h
! 8a547e92baf737a8fc04f7c0160bcfe8  gcc/ipa-visibility.cc
! 24068487465b2b0884da77d0edd56104  gcc/ipa.cc
! f4080e815a15377b31e1a5121b4f355a  gcc/ira-build.cc
! 663de3973953c591647e0751949d3404  gcc/ira-color.cc
! e1cc00ac750d2309c8bf601fdc0ff939  gcc/ira-conflicts.cc
! fb9cb73627e80643993ba3bb95fc6a5a  gcc/ira-costs.cc
! 700ffd99cced69aa1063e1e15c326aa6  gcc/ira-emit.cc
! bf17a41178d7542874bac4bb67e4e39f  gcc/ira-int.h
! dd51496e4c7b4c7a7fab6af86cc145d1  gcc/ira-lives.cc
! 7a1006d3db9cf4ac789afbbb5b61175f  gcc/ira.cc
! 16270966db2614c9182968e8d3013de9  gcc/ira.h
! 6823bfd00e26375bea4870c4262d82b0  gcc/is-a.h
! f0e382f9c69d3559571d2a5c7142f12d  gcc/iterator-utils.h
! b77cef5477f217898b3073ee4f1f9f0e  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! e62751adf42d37bc9f1df41eb7d60bec  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
! 402c4c7ebd371c4d044b0d12519fdad5  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
  aefe50c9e37a2e7a06545dbc6b38bbd4  gcc/jit/docs/_build/texinfo/Makefile
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/libgccjit-figures/factorial.png
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/libgccjit-figures/factorial1.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/libgccjit-figures/sum-of-squares.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png
! 8f111c576100424bbfefdced11dd0094  gcc/jit/docs/_build/texinfo/libgccjit.texi
! 275ca6e3751c9aefb9091a848cb75e1e  gcc/jit/docs/conf.py
! 1f74fd570fcd4f621610673dab94c89c  gcc/jit/docs/cp/index.rst
! e3883177e1a58f3ed7a9cc9bbf509a5b  gcc/jit/docs/cp/intro/index.rst
! 481c040ec748877e05bc6802e28b05be  gcc/jit/docs/cp/intro/tutorial01.rst
! 091c91d52dd7ce0e830961a880d0b691  gcc/jit/docs/cp/intro/tutorial02.rst
! 6ecfccde09676bdd23b9502329eff50c  gcc/jit/docs/cp/intro/tutorial03.rst
! f0ac492e6e028a4e1c664869d048952f  gcc/jit/docs/cp/intro/tutorial04.rst
! 11ba6e827755883eab16cb12f7d4bdf9  gcc/jit/docs/cp/topics/asm.rst
! d2a7085370d8a9543da60cf4cfb6c05d  gcc/jit/docs/cp/topics/compilation.rst
! 66154d213f6daf0381aa6dddadb6ee29  gcc/jit/docs/cp/topics/contexts.rst
! 0d207fdaccc9ad58289de4c213ff269f  gcc/jit/docs/cp/topics/expressions.rst
! 020b662969db4f466e869dd51ad8fe5b  gcc/jit/docs/cp/topics/functions.rst
! 0e6c3d1be9d3c31c693d6be176a42617  gcc/jit/docs/cp/topics/index.rst
! dfb41d8aadcd5ed15039283ff27e0b85  gcc/jit/docs/cp/topics/locations.rst
! 8080716494a217970f63875da6a77acc  gcc/jit/docs/cp/topics/objects.rst
! 2ad2788f6ac9584aa3a338f68bbb7744  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
! e4cadb33ae71e3b564503c06a3cd756c  gcc/jit/docs/examples/tut01-hello-world.c
! dfff336f9ff05fc08650fcb3a96c3beb  gcc/jit/docs/examples/tut01-hello-world.cc
! 358adcaaa6f3fc48bb9eeea9edc981ae  gcc/jit/docs/examples/tut02-square.c
! e2f8595fe7ce9f1fb90817f82ee4ad48  gcc/jit/docs/examples/tut02-square.cc
! 0eb88ef6af1ceb1b4499b4fa4b0fca17  gcc/jit/docs/examples/tut03-sum-of-squares.c
! 7f1af178bff65a053602e8c38dea1a39  gcc/jit/docs/examples/tut03-sum-of-squares.cc
  6369d2b07520cb0fc9d14082499f6be2  gcc/jit/docs/examples/tut04-toyvm/Makefile
  999c1d2b92d5d71565c67854aad60e9c  gcc/jit/docs/examples/tut04-toyvm/factorial.toy
  efe1998ded06ac3721d9ced4d96056f0  gcc/jit/docs/examples/tut04-toyvm/fibonacci.toy
! 37aaea2452323bfba95a12e1882ad2fe  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! a491531d04e13cb5eafdd268e5b70e2d  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
! 0c995e11f2e1b7498a431089f027ecca  gcc/jit/docs/index.rst
! ab89d7116bc3e173b1bb83d0f492e6df  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
! 860a0e552515d0b60176494c7f83cb94  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
! 8b28780b7c0bcb7accc44e0823aca381  gcc/jit/docs/intro/tutorial01.rst
! 4c7a99553de8972d38363291efeb7c30  gcc/jit/docs/intro/tutorial02.rst
! fbbe9606b116b197cb494d328fb2c867  gcc/jit/docs/intro/tutorial03.rst
! eb06c420b7016f9753c7c2850670436e  gcc/jit/docs/intro/tutorial04.rst
! 4f2f54a3f25e07e7cd27bc4814a06359  gcc/jit/docs/intro/tutorial05.rst
! 565e27214bdb913e773f1f9cc0ebb034  gcc/jit/docs/topics/asm.rst
! 26c87ba669b8ee4cb102c69d5bc2bd4f  gcc/jit/docs/topics/compatibility.rst
! b5542c66a7d2c811edb211067f6f679a  gcc/jit/docs/topics/compilation.rst
! 5d35bb561c32a689ebac635cdcca3910  gcc/jit/docs/topics/contexts.rst
! 9d72c81e82f52e2cfa9c056e4656db50  gcc/jit/docs/topics/expressions.rst
! 1f6297afd8b054b357149db79a3e29a9  gcc/jit/docs/topics/function-pointers.rst
! 7f3678ad946b6c95a8914b312cebf1e2  gcc/jit/docs/topics/functions.rst
! 8698de581a131542acfd2f5b43671b7f  gcc/jit/docs/topics/index.rst
! 0385e65a963ad3c4a03318c98a5f7384  gcc/jit/docs/topics/locations.rst
! d5eb7f870a52392a7f851b9273e79558  gcc/jit/docs/topics/objects.rst
! dfc5a4183f788312374f4c164f54ba72  gcc/jit/docs/topics/performance.rst
! 0011b7e32875f033ad6e1d9cac733cd7  gcc/jit/docs/topics/types.rst
! da3b2dac0a80b6671368d9c9ef01bcab  gcc/jit/dummy-frontend.cc
! b657f7dee2d560961b9d00a791da8f95  gcc/jit/jit-builtins.cc
! 48cf4bc13be34bb0f1528b650afd1da6  gcc/jit/jit-builtins.h
! 40a4f68ba479151c1ccade41ac529858  gcc/jit/jit-common.h
! e5a16b4bac6915a6051f99af06a38e4d  gcc/jit/jit-dejagnu.h
! 6a651ddbc42e2a56c2bd64081350566d  gcc/jit/jit-logging.cc
! c4162fddf2309911a007c1e108ff1694  gcc/jit/jit-logging.h
! aa29592b520eed596672656cc5f60742  gcc/jit/jit-playback.cc
! 115c16c21eb261f4e87aea73a56ebc42  gcc/jit/jit-playback.h
! d5c7715e47a90fb6fa42d00938f338f8  gcc/jit/jit-recording.cc
! 31b6491b360e994550528f00ef2f36d6  gcc/jit/jit-recording.h
! da823dca57773c9e824f412a80da4c7a  gcc/jit/jit-result.cc
! c01bb9487495ff1f2437193b9fdf4f29  gcc/jit/jit-result.h
! d072c6bd97bf96e0a4eb6eeb48e017d0  gcc/jit/jit-spec.cc
! 233d6b76a4f88605dfd082be43b0d825  gcc/jit/jit-tempdir.cc
! 38f4bb548ab41d03190c2cdcb2ee8d2c  gcc/jit/jit-tempdir.h
! cc545497c12300f9ef4ef17d957c4ffe  gcc/jit/jit-w32.cc
! 0c697219d096ce33fc4569e9619f5db0  gcc/jit/jit-w32.h
! 553ad6dd1cc7854ba6dd020e2ac39e5c  gcc/jit/libgccjit++.h
! f5f87943c8e9f34e6183bff500a25c2d  gcc/jit/libgccjit.cc
! 9b0fe04cfa3ad4ba5fbd14a407f11b94  gcc/jit/libgccjit.h
! 516a7625ba55338e13cd7bfe3d60c53f  gcc/jit/libgccjit.map
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
! eb831f923579bd3b0c39f930f8dafcbd  gcc/json.cc
! 4f356cb91c6cb892d59536f2e540ccaf  gcc/json.h
! 60182b399ff72445629262551a23ae17  gcc/jump.cc
! 1c6bf3d0c57e2664305f3ba09b757754  gcc/langhooks-def.h
! 48bc65d3ed140518cc0488f09e3e383e  gcc/langhooks.cc
! 743d8d6dab8bc572af097aacf98211b4  gcc/langhooks.h
! 8301acf58dc339bc908008f1392cae60  gcc/lcm.cc
! 905be6ce47df0841e62b166823bf69da  gcc/lcm.h
! 1e7c3a29e43c13d41e249a061e9d2108  gcc/libfuncs.h
! d4c66c0391e81354d287eec0bcf46762  gcc/limitx.h
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
! e341f9a991267d99f0bc9e1c4453d3ac  gcc/lists.cc
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
! 0a9c4c99ad1df21ceeeb816a2c7b541b  gcc/loop-doloop.cc
! e5932fb927bbb4bfb85cb5d33ffd6417  gcc/loop-init.cc
! 7a07a24b653f1598d13fe10794320302  gcc/loop-invariant.cc
! 8e7bd8eadb7b7bdc1e578d13b7da86c2  gcc/loop-iv.cc
! 7aef99ad78fa5457db08b420c46229eb  gcc/loop-unroll.cc
! 6308b915ddd46a98380a107c928037e6  gcc/loop-unroll.h
! 99c24ed97611de97ea37d0f4cc2288c9  gcc/lower-subreg.cc
! d5ac5a89e073a7e5b33668071523cef0  gcc/lower-subreg.h
! d5e19107ed41503bb67b0d933a4d56a3  gcc/lra-assigns.cc
! 7c4d1173e371deee7b43743215497a0b  gcc/lra-coalesce.cc
! 5c9e4539deefe9a5b8c5a1f4bd61935d  gcc/lra-constraints.cc
! 27b30505478beaf07d23cdc19a5c2d06  gcc/lra-eliminations.cc
! e9afb9364b5e117827c3db67a1717c17  gcc/lra-int.h
! cfd5ab112698229bbb833f8a805d27ef  gcc/lra-lives.cc
! b1a7f9f7a4796f7d3f6a6c60ac9d2bd2  gcc/lra-remat.cc
! 9da7b66029853aad8ec4a3840205a8ee  gcc/lra-spills.cc
! 3651205587b5293818168470115ab539  gcc/lra.cc
! f490aaab2d136c3ac960b8a2268bbeae  gcc/lra.h
! e1627fa0450d2bf925dc226db5eea40f  gcc/lto-cgraph.cc
! 5f9713f5327a766eda14c98080a2f793  gcc/lto-compress.cc
! dc7879f80a53a211ef0a2279b918b482  gcc/lto-compress.h
! abb79d7ba9534061b9c18bc473a07b94  gcc/lto-opts.cc
! 76aa6318b1ff313a3ebae8c03a117449  gcc/lto-section-in.cc
! daebc1236d16034267b252a3005afafe  gcc/lto-section-names.h
! 552822b6b924fec051ecb1eedb0d585e  gcc/lto-section-out.cc
! 7063e81ba616bb5b73b135143fb84e69  gcc/lto-streamer-in.cc
! 45cf33f2a79f186280384b15b18641e0  gcc/lto-streamer-out.cc
! f8113169f67aa54af90435250435dd6c  gcc/lto-streamer.cc
! 2936f9135f911160faf0cb4b721086ea  gcc/lto-streamer.h
! 23a1be4e3c96e55220fbba09e88008a1  gcc/lto-wrapper.cc
! 6d941f8a9534e266578c05e1b0dd4703  gcc/lto/ChangeLog
! 3abc3928a490a07a555d38d6e8879173  gcc/lto/Make-lang.in
! 26c76b7cd7c3c43bd918e8cf35d2e1c8  gcc/lto/common.cc
! f4c6748bc258cf396c8c26902b79122c  gcc/lto/common.h
! 6afd7023ef9fd6a8fae29779c0bb1578  gcc/lto/config-lang.in
! f31532497458ba97547513ece031819c  gcc/lto/lang-specs.h
! 44463c0af32e56fbd314c42ffa53a9e4  gcc/lto/lang.opt
! 6051a00819c22a3bf3e5a4249ab55ff1  gcc/lto/lto-common.cc
! 72acf275b682285263f8ded6bf1cb73e  gcc/lto/lto-common.h
! b9beeed845c35b17fc93c93c6d48f4ce  gcc/lto/lto-dump.cc
! 70c335ec062983dbc2cf79cab3a8719e  gcc/lto/lto-lang.cc
! e719d993ca5644498c09e65a9997d4a8  gcc/lto/lto-object.cc
! 4fd3b5c29ead1d413aff659921336d56  gcc/lto/lto-partition.cc
! b3aeaab4af3bbe880adc32eab519bbd0  gcc/lto/lto-partition.h
! 5856df4a1de591e39896c5c3bfb1e56f  gcc/lto/lto-symtab.cc
! 7f60a7cb3744a70b89288720475121b0  gcc/lto/lto-symtab.h
! 961812bc8fc7de0dd27cdc381f40e3ef  gcc/lto/lto-tree.h
! bf5e6aa2269343ff80fdecaeae86c158  gcc/lto/lto.cc
! dff2331e5edc5d66c07f2ba05c20a9c5  gcc/lto/lto.h
! 704dbc3758376f5f1a822ef60e3ab455  gcc/machmode.def
! ae630ad63e4030b0c8fb86461bc683c9  gcc/machmode.h
! 002d4a917af4cc0bb0f4dc295bbc4b17  gcc/main.cc
! 65877851de743530a4d6a25be7e5f07c  gcc/match.pd
! d9414a0dc03cec270c998d720054b9fa  gcc/mcf.cc
! efc7ef9dc4204c76b419e2a76287ef0b  gcc/mem-stats-traits.h
! a31c8fb12b7bbe32c163b580c91affad  gcc/mem-stats.h
! 6e539f0d8b20b442eaabb161f16ca39f  gcc/memmodel.h
! fe14474934e6ad2ed1af2ebf252dc75c  gcc/memory-block.cc
! 6ff8a84b1f91135bed7d0e9e560fc612  gcc/memory-block.h
! b95605bc52a4f8d760769e6d26d195e4  gcc/mkconfig.sh
! 2dd496fa05fee36c46311f63c76dbf04  gcc/mode-classes.def
! 17d331820fa48e76d6a9342e12db076f  gcc/mode-switching.cc
! 6b3daff0bb8e0990085d41fecb74b358  gcc/modulo-sched.cc
! 041841a4d2557cb845ce87946a35041d  gcc/multiple_target.cc
! b220a9ffc3d8617670a7ca765ef6303d  gcc/mux-utils.h
! 61c5f1bf13e818b850f1434976d9f017  gcc/objc/ChangeLog
! 80b0c093eda57fcbb8e9eddd18bedd4f  gcc/objc/Make-lang.in
! 42537e8757f2e49f7a380397d2307abf  gcc/objc/config-lang.in
! a9d5df1830f72db7d881701c1880a27e  gcc/objc/lang-specs.h
! 18a697734ecb13a1a12c866eca740486  gcc/objc/objc-act.cc
! 1289a7740d247d5b27c9c968e8cd35a3  gcc/objc/objc-act.h
! 1b8a6511f7b276a98264e2efaa13d10c  gcc/objc/objc-encoding.cc
! af186e2684d2aff9faa352ea1cff213e  gcc/objc/objc-encoding.h
! b22836839e7030071d74a1f688b18c03  gcc/objc/objc-gnu-runtime-abi-01.cc
! 6be8d81909bf67efd601e108c875bf9e  gcc/objc/objc-lang.cc
! 8a4717b33ca054bf3c6935d877772385  gcc/objc/objc-map.cc
! 05d231e9dffe3bce371b3e635e1b5921  gcc/objc/objc-map.h
! a0f7e1b164f83858a9fb8f0c96ef5e43  gcc/objc/objc-next-metadata-tags.h
! f00dfd533135d24682bb29c07f6659e2  gcc/objc/objc-next-runtime-abi-01.cc
! 0b1d7e857ce9a5805b4ead292b2f2e49  gcc/objc/objc-next-runtime-abi-02.cc
! 0ee886e63684089ef6b339e3cabd690f  gcc/objc/objc-runtime-hooks.h
! d5208088eb44cde2354166919108e041  gcc/objc/objc-runtime-shared-support.cc
! d0dff9b6758f610e9a1fd8c2351656a8  gcc/objc/objc-runtime-shared-support.h
! 9789f1f3d85fb6f3104485905ec9459f  gcc/objc/objc-tree.def
! deea878f18960e7ea85fb9f5c39b2493  gcc/objcp/ChangeLog
! 00d4fe33b04eb68f4fc29d3af98290a2  gcc/objcp/Make-lang.in
! c7147535d919b13c29b364931facc65e  gcc/objcp/config-lang.in
! 53dd8ccdff91b6a4a408dc313b0705d2  gcc/objcp/lang-specs.h
! d2c6fc9e746263d862668f94a7312032  gcc/objcp/objcp-decl.cc
! 4047f9c45907fa7ca7491dc6d4ce3008  gcc/objcp/objcp-decl.h
! 1d57186920863b45e407890ff8e0a2bc  gcc/objcp/objcp-lang.cc
! 2e26690a7f9c9cfff17ce7bc5741300f  gcc/obstack-utils.h
! 7380d54b0ecce1b4b85b7730c23d962f  gcc/omp-builtins.def
! 5fed239a3cfda6d978bc6868717f1b0d  gcc/omp-expand.cc
! d2882be1e5e0c8bcb94e40249892eda8  gcc/omp-expand.h
! e15f4aee3401c6c0f37a5a75e94b0c2c  gcc/omp-general.cc
! e09a162f54780baf753d31877328939a  gcc/omp-general.h
! 058453ca395019ae0b80e7835ed40b53  gcc/omp-low.cc
! adc2a811c1f1bc7a7875e5135bf5eedf  gcc/omp-low.h
! 50c0e46408111c6d28c93e42441766a6  gcc/omp-oacc-kernels-decompose.cc
! 87a8b76c5f815edca8f75a99dae1ccd1  gcc/omp-oacc-neuter-broadcast.cc
! d44efe241c116cb422d2d37f703244ba  gcc/omp-offload.cc
! b8d95a4ff9253b5ebac1c9af19eb1bff  gcc/omp-offload.h
! ce4ca27c2ad818fc1db0d7480e81ed37  gcc/omp-simd-clone.cc
! f06abfa4ba14881ee3010baefbf69d4c  gcc/omp-simd-clone.h
! 3fd03d3c8152cf473a00d6efedadb6e0  gcc/opt-functions.awk
! 60b81d4891ae3eaf5bb30f5175f93cc9  gcc/opt-gather.awk
! c51124a47a3b6c89f04733f9177ae51e  gcc/opt-include.awk
! cc40c946f7b8d8f98cea92c31d89b31e  gcc/opt-problem.cc
! 0040ccd16fe3412114ec53a82407a4c7  gcc/opt-problem.h
! 3695862735cbfad640dc6ff8238ee68a  gcc/opt-read.awk
! 6a908766705881b86f2093fb082edaf3  gcc/opt-suggestions.cc
! bd0e05064e12f50320714a3a859b59c8  gcc/opt-suggestions.h
! 5a8cce324b219e51fa147e21531c0383  gcc/optabs-libfuncs.cc
! 3a8bf24583a0106af624d257ab7ef573  gcc/optabs-libfuncs.h
! 8aa04be32c980d38fdaa7df2dd1541a5  gcc/optabs-query.cc
! c0ba177165367a0975291f9920aadf51  gcc/optabs-query.h
! 0e8bfc89a9c3d2e3abcf8600733f2fb0  gcc/optabs-tree.cc
! 52ec5ad3f57345e13cb41d723e2a33af  gcc/optabs-tree.h
! 54e76ae6a0e002668ce32afc2bb50cda  gcc/optabs.cc
! 3b5dde2042c9c3b420ce7becb5248f58  gcc/optabs.def
! 234d417c73a1c9170dfe1eb986c28950  gcc/optabs.h
! 75d4127222473ed096547c333b8da80c  gcc/optc-gen.awk
! 9fc627bb99094c96975ba6d753fadbe4  gcc/optc-save-gen.awk
! f304b54f13e9f101244e3f6f98fcb2bc  gcc/opth-gen.awk
! c74285e950d8a6ff441bcf560e0287da  gcc/optinfo-emit-json.cc
! b4ac54463074944fdc745ff8daa183bf  gcc/optinfo-emit-json.h
! a88f4db5a2f071deae7fb76236a41ee6  gcc/optinfo.cc
! 8cd985fe2f6d5ad07cd1a5234b58705e  gcc/optinfo.h
! bf4aa3291e587eeebcd692e0a392c1af  gcc/opts-common.cc
! fba5619d803715ac83289523abdb5513  gcc/opts-diagnostic.h
! cc4beb900c58d571dccc6e32de83cdfa  gcc/opts-global.cc
! 0eb091c126393599c7dc4b263f790bd1  gcc/opts.cc
! dd938b67c09210b4529d1bbb649209c6  gcc/opts.h
! 608c96449ff8c54df49bcfa66acc603c  gcc/ordered-hash-map-tests.cc
! 2fd1e46a1f4bb2fc5c2e9ffef4833830  gcc/ordered-hash-map.h
! 651aface5de56b8c0ab53aa2dcbb9bab  gcc/output.h
! 4f9fcd9e2fa2cc6ca1906fdf77c07269  gcc/params.opt
! 4f40ad3f787c9cdfef883674f2915de5  gcc/pass_manager.h
! a25a5f1c7bca0a8fba155d5af8353005  gcc/passes.cc
! ca27fff752bb2bf3547470865f677089  gcc/passes.def
! 22890b5c1619eacc2afbe4c483eba3b3  gcc/plugin.cc
! 12395edd2893f064e235e9c7ef33f67c  gcc/plugin.def
! 6a447e1b290c005312a2ddf9a4095bc6  gcc/plugin.h
! 1714a9e38fca36e47e56b295551bd2f1  gcc/po/ChangeLog
! 23c6b9cdf5b89eab23474e0d050bc452  gcc/po/EXCLUDES
! f2e76d86dce1f72d4adc901bce318410  gcc/po/be.gmo
! 9cc6d771c541ef9b02cbe3c70a43d712  gcc/po/be.po
! e3c5d6d98e7a26d9b354250b861b134a  gcc/po/da.gmo
! df5d425cec4461c53feffeed2b350c67  gcc/po/da.po
! 7bb62ff0b1406a9c1232bb3220d91ae4  gcc/po/de.gmo
! c79db46784d47e56d47595249b11f294  gcc/po/de.po
  189b9d1af87594807b0d0e10036a64c3  gcc/po/el.gmo
! e6353cf407ad492859cf0aafe2ec0777  gcc/po/el.po
! 0a47c4d8bac1b7c35419f5250052b688  gcc/po/es.gmo
! 83232f06d35643c4301bce9f9bee2f90  gcc/po/es.po
! 80d928e1b407031cef9ae2af1c3b693a  gcc/po/exgettext
! c84d36b4235df4bf1d8b9035d7e9d459  gcc/po/fi.gmo
! 578f745c66712f93732908708af691bb  gcc/po/fi.po
! 575a7b894a6d3e17ceb8922cb12d0b68  gcc/po/fr.gmo
! 88b565226874ffc285faeb6e79051456  gcc/po/fr.po
! 0670c88ebe5baeeee576e3468d831bc5  gcc/po/gcc.pot
! 7c4cffec503a26b7a0118d9fe7586a0b  gcc/po/hr.gmo
! bd70eabd58dc03dcc7f20e4f06e070c0  gcc/po/hr.po
! 240f703e5237a9e973e99a684a6ea6bc  gcc/po/id.gmo
! 4fefa3052bcdc7312c0ea21c6dacbd03  gcc/po/id.po
! cb2ddbcd98ab5efb4926a02b1766211b  gcc/po/ja.gmo
! daa90c3964b636c6258d613bdea48079  gcc/po/ja.po
! fb0cd9c2cf0534bc1ca9614cbc66bfc1  gcc/po/nl.gmo
! 6d7b9b3d7ef7ace44b43309a387f3e40  gcc/po/nl.po
! 9b54b93f60646fe2241d00d7f4e88a4e  gcc/po/ru.gmo
! fb2a717cb0f0b4608ae6c2a3cf8946f3  gcc/po/ru.po
! d600e1ac2fd4aacfce9740df4a82096b  gcc/po/sr.gmo
! 178df3071cf94b3455c0509ec272753e  gcc/po/sr.po
! 803854791274f64010fd10364e439f80  gcc/po/sv.gmo
! b844a00765532bfd91fb8bea8971442e  gcc/po/sv.po
! 4bbe3eaa6714843da5bb0fe682576667  gcc/po/tr.gmo
! 34863230e92f58d5f260468b051af93b  gcc/po/tr.po
! 763afeaea9916ed5bf15af206f6fb848  gcc/po/uk.gmo
! 80638ad4f8ca9b4a5a7661814fb19dd0  gcc/po/uk.po
! d7fd8d51e503de22036b0a801d050698  gcc/po/vi.gmo
! aaca7e31d1fc1ea24bf9825ce2dc87ff  gcc/po/vi.po
! 28cc41e6598ac98d0848acd035fba93c  gcc/po/zh_CN.gmo
! e5e129681c8247bd7ff19a612ed2218a  gcc/po/zh_CN.po
! 055e47d0ee5114cfb1b7b8fb9f53466e  gcc/po/zh_TW.gmo
! 03ba828c752e82c07787292e75e0bee2  gcc/po/zh_TW.po
! badd3abd7109bf15a4e3e631fbbf05ca  gcc/pointer-query.cc
! c64ba944344ccbf9de24872de9d05e23  gcc/pointer-query.h
! 805123a4729c62a7508babaf78dbce36  gcc/poly-int-types.h
! 43c674080bb28f988f54a8a9d074f887  gcc/poly-int.h
! fd2ae1cce5d28d40cfc938db3b584898  gcc/postreload-gcse.cc
! be6dd5d8514ada55df00b97407257f02  gcc/postreload.cc
! ed394721b13fb56acf1c6191d5f8cec5  gcc/predict.cc
! eb593055037edd0d305496230579ecdf  gcc/predict.def
! 8a6cfe0b4faf09d76a3acd867697f693  gcc/predict.h
! 5ecfd67fb357b4e04e4522894ce4b298  gcc/prefix.cc
! 7760a9bcc11a08ce755f485ca05977a8  gcc/prefix.h
! afd7777a75d7e25ba8f6f5db4f553de2  gcc/pretty-print.cc
! e8a83ac50a9fe1b21760d80d0fbb98f8  gcc/pretty-print.h
! 7d8a96623d7ca4d1a1264382ed54e5fc  gcc/print-rtl-function.cc
! f5f78dc2acc9696b52d931cb01ddf20d  gcc/print-rtl.cc
! e742d3b4a182ef32a4c23e701f19da0e  gcc/print-rtl.h
! de01fe47e5757d0b334b5a7bec2027fb  gcc/print-tree.cc
! 7588bb24b0559cb171ad395838cf0226  gcc/print-tree.h
! 85f7e815b5e23825690352a470507824  gcc/profile-count.cc
! 83154797f3fac26334db4b6dabdaa09d  gcc/profile-count.h
! 4a3ee7f894aaf14b3ff668036f11d491  gcc/profile.cc
! 5639abf0de0b6df84638ef972c1a686c  gcc/profile.h
! 748eaaef6246737aaa8b9db005a0341a  gcc/range-op.cc
! 2a90c23a731511a2351b9f6a7ec6fde0  gcc/range-op.h
! 477608b7c12d6ef282bb06b52ec8bf5d  gcc/range.cc
! 2c94ae18620c7b0a4f08fd11a254cb24  gcc/range.h
! b149c10ec9175a62b2cacecd1a122265  gcc/read-md.cc
! 90b4d011426d1645ae73561e9580f7d7  gcc/read-md.h
! 395567685a6400596031764ffab205d9  gcc/read-rtl-function.cc
! d4585c5b545aa5cacf2e013b2ff344ba  gcc/read-rtl-function.h
! 3c88d8d8b7ab7b0008173c12d284746e  gcc/read-rtl.cc
! 707e5482d6c4e9fa7260cdea542405d0  gcc/real.cc
! 5e52056da5c57c516abcd8cdd3ec7daf  gcc/real.h
! 7b4e904ee64a419d0981d9b23045cc05  gcc/realmpfr.cc
! 03313b503aec1d8db4d8fde449f49d84  gcc/realmpfr.h
! d0bf0a01617142085da0701f6831f712  gcc/recog.cc
! 12a45da60edeb46c2a0d3bf386862e9d  gcc/recog.h
! b1ddc2cd23d55e34a97053ed9c1ce363  gcc/ree.cc
! 53189b1272110f2df33bb1c1ef365631  gcc/reg-notes.def
! e68c28f4da6b5b361b882d3f1b6129ec  gcc/reg-stack.cc
! e1f8089e7ec6ea9e3b6fb855bdeec5d1  gcc/regcprop.cc
! f627cd41dcd4aad44c9c2470a3f6b308  gcc/regcprop.h
! 5842d969ebe2befc3104772191621fe0  gcc/reginfo.cc
! ae5aedbef88bef70162f31336613391c  gcc/regrename.cc
! 14604ebf77e7f756c58d57468cab59c4  gcc/regrename.h
! 9b15cad90e011e8531588f247806ab1f  gcc/regs.h
! e220fee4e4977ddb2570fe12f97f45a5  gcc/regset.h
! 3d4aeabbe31eb2b0f404bfe55bb7b92e  gcc/regstat.cc
! 8045d9a1685d70ea8674222e4aa0fa7d  gcc/reload.cc
! 706a2adc5d0c484db36057fb33b0eefc  gcc/reload.h
! 0775a3d3caf169a31c61ae0213ae8b2b  gcc/reload1.cc
! df014e7829f7df5e9773bd9573d4e19c  gcc/reorg.cc
! 617ed1529638865ae3fc830d27ecd144  gcc/resource.cc
! 809404bdc57031fca063f81dbec0f528  gcc/resource.h
! b1ba4fb3766a132eabe47d085b341c4d  gcc/rtl-error.cc
! 3e7e3f7c4ccd0f29328e0d0c1874d875  gcc/rtl-error.h
! e73cb6832d267dceb8fc8136ffc253a0  gcc/rtl-iter.h
! c88b1a148e33f6b40896031ef906b6c5  gcc/rtl-ssa.h
! 8610a93cea6304dc2788aa6f01b3ec6f  gcc/rtl-ssa/access-utils.h
! d52cc7612c1da629541def7c939484a9  gcc/rtl-ssa/accesses.cc
! 3eb5db75af53d23d684d33354c25204d  gcc/rtl-ssa/accesses.h
! 170884c1fe55938892eadc9c779200a4  gcc/rtl-ssa/blocks.cc
! 912b1f1f358db9dc275de8d3b04c173f  gcc/rtl-ssa/blocks.h
! 97ecca51a81b7af9d4163706bb786a25  gcc/rtl-ssa/change-utils.h
! a9b0466a8fcaf8dcc0656ccfdcd9326e  gcc/rtl-ssa/changes.cc
! 675065672536cd5c3943e596a4be118e  gcc/rtl-ssa/changes.h
! f2e5391d409bb2869501df7414d15292  gcc/rtl-ssa/functions.cc
! 6c29b451df7d9b282a7e8aa5509dfb14  gcc/rtl-ssa/functions.h
! dfbe2a31f6c9d2d62db95973aa982e2e  gcc/rtl-ssa/insn-utils.h
! faee7a4258d4cc82d171b5528a07d5e9  gcc/rtl-ssa/insns.cc
! a113252925b8ea30a5f90d4e3167aa31  gcc/rtl-ssa/insns.h
! 701b877ebe837af2ef880a275cf2fd92  gcc/rtl-ssa/internals.h
! 9865ca5b56fe6adfb2c037988441e583  gcc/rtl-ssa/internals.inl
! 187d31c847aa120e0d67eea3ebed4e1e  gcc/rtl-ssa/is-a.inl
! aba021400841b2455680b33c4ae146d7  gcc/rtl-ssa/member-fns.inl
! 27dfad4fe1b8def1992e3c5a7712f20b  gcc/rtl-ssa/movement.h
! 9a15eb08c8bc3e37f3e7f02091131bca  gcc/rtl-tests.cc
! 28d849e47de1a855134d525a0ba82f9b  gcc/rtl.cc
! 95f3049d5b4203fcc3f5ae088a5135f0  gcc/rtl.def
! 97f14f16cb2979c7ebe82f23c5437364  gcc/rtl.h
! 7a854d48bacd0a212dcda634a01d20fa  gcc/rtlanal.cc
! 754a233fb9fe65a4d647a068203de262  gcc/rtlanal.h
! 24872c67a33407066d1e2a68985d66ee  gcc/rtlhash.cc
! 98bdbda9c84d693847fc9d684a5f4062  gcc/rtlhash.h
! f340d2b3d9ec996a2778aa96e5d82e65  gcc/rtlhooks-def.h
! 5b5b7156041df75951365976c5c1b3bb  gcc/rtlhooks.cc
! 6f9cf6bff5222921e29ca2adc3109833  gcc/rtx-vector-builder.cc
! 55dffa5fdf827fb8ce6ac8e4c660324b  gcc/rtx-vector-builder.h
! 5c61a40b0db2c1604fcd81dace1600a3  gcc/run-rtl-passes.cc
! 88e5e5d5c546ebfa1e660b422bdfbc1d  gcc/run-rtl-passes.h
! 21754afec4d866fd36dccc9ec097ea90  gcc/sancov.cc
! 71585d61ca3e48945c9a788d7c11629f  gcc/sanitizer.def
! 55d27ff9d307c5ad41acbff976fcc4f0  gcc/sanopt.cc
! 00aa700cacc18e479f90f7d8975e5450  gcc/sbitmap.cc
! 60808f183971685333deca5955f086a8  gcc/sbitmap.h
! d3b0269892929818b42afe15a6cdd1df  gcc/sched-deps.cc
! 57df39e1c2d59a750bb25e4379685e75  gcc/sched-ebb.cc
! 017ef4a455c2236ad43daf22c2172883  gcc/sched-int.h
! a4d5463105a9448325f12c8d335df6ed  gcc/sched-rgn.cc
! 43b03642fdaef9bee8435f07dda13a1b  gcc/sel-sched-dump.cc
! 1d6f4a4a865ff8e5c2efb1a3e4467d61  gcc/sel-sched-dump.h
! 52b13f65379f047101cc0832c65ce795  gcc/sel-sched-ir.cc
! cf9d9508ac668af502674e80a1e1d435  gcc/sel-sched-ir.h
! 876c5dcdabb8597731ee9d9979c83466  gcc/sel-sched.cc
! c3a9219a6864607e99cab9683343ae49  gcc/sel-sched.h
! e799b6d52240c0dc58b75a6d793951c0  gcc/selftest-diagnostic.cc
! a9a71c522c2346daf123827f4408af60  gcc/selftest-diagnostic.h
! c9d6648ba00cdd876945d21e7b692d6f  gcc/selftest-rtl.cc
! 134167454394caeb5ce1beea69160dda  gcc/selftest-rtl.h
! 37bcb2cf7ce7d38eaf1fcc1cdaba6c04  gcc/selftest-run-tests.cc
! 48b3931f094142613551ddfee0ce34d4  gcc/selftest.cc
! 5827409b9ac4eccd926431936dd0a736  gcc/selftest.h
! ee069b4d77956657e89b85e20855985e  gcc/sese.cc
! 741ca81389bb04a271234258629e1e81  gcc/sese.h
! 95edbadf9156f4759dc2eef235dae90d  gcc/shortest-paths.h
! 9b3adf3d8034c3b27a0fbfffb994519d  gcc/shrink-wrap.cc
! 7cf766d2a67d9a5f01cbf94ee65a7e4d  gcc/shrink-wrap.h
! 3f916b9b41ec4e4afc7dcba87bd1849e  gcc/signop.h
! d575133a94ebe83c78a8bd088fa010c5  gcc/simplify-rtx.cc
! ce34fc321bf19dbe85456eb6078d7c74  gcc/sort.cc
! c5448c3010b78c119176ba2fb21d4fd9  gcc/sparseset.cc
! 064eac30694daa27f2ce404ae7f6f59d  gcc/sparseset.h
! 8faff9a1754b8a1d7fddba2533c74537  gcc/spellcheck-tree.cc
! fd1ea65102d02a75c80bf55417765fc8  gcc/spellcheck-tree.h
! 50587638809b948bc2dfa619fe6c090e  gcc/spellcheck.cc
! 8d1eadacb0aeb08f0cecc38758c1957f  gcc/spellcheck.h
! 5b980806cf85aa82042c82cc22e9e243  gcc/splay-tree-utils.cc
! 5190c84781cbd90f849c0b58560cda47  gcc/splay-tree-utils.h
! 262dec9693b99f9b1b2e60ddb484d243  gcc/splay-tree-utils.tcc
! 34bc4ff85c25f44664c78339a2340be8  gcc/sreal.cc
! 9ac44a827e67092f1b48d83013e13979  gcc/sreal.h
! 720f9570f9e48df8a5accaae279cfcb9  gcc/ssa-iterators.h
! 918d467a2e1902b6ce8813bbfcded932  gcc/ssa.h
! 28fb0432f19b42568b4b8a3cb91774ff  gcc/stab.def
! 885c50d81ce31ca32c5f3cd351ec3e8a  gcc/stack-ptr-mod.cc
! 9dfb3c1b7e7145abc4bccafd2f75cc04  gcc/statistics.cc
! 2292602210d50d4e1b10ef7a0e5a92fd  gcc/statistics.h
! 1f89317e8e96fc3cc9fe10cb378007a6  gcc/stmt.cc
! 65903628aeb72876d7f8efa1acb37992  gcc/stmt.h
! a4180b1e8ac4398a5b20e7ba7b3fba04  gcc/stor-layout.cc
! 54b29f46a07214ad023ab51bd6cf0853  gcc/stor-layout.h
! 9576d64e55d33664bd19f4ef62596b1f  gcc/store-motion.cc
! 8940418ca4bca84c53b6223eb7e92040  gcc/streamer-hooks.cc
! 65a2d100d81ef9c034103391e8a596f1  gcc/streamer-hooks.h
! 26275a0f645566ab4da8ce4b22d48953  gcc/stringpool.cc
! 7f57ed7b36a6a7688a92c59c9ab24a7b  gcc/stringpool.h
! 3344c7a62f2c5d26e290e67d0be86e37  gcc/substring-locations.cc
! 5b5f14f2e0f93311875465eb15ea73a5  gcc/substring-locations.h
! e63973649559188ccd962a10fb0a8dae  gcc/symbol-summary.h
! d52426f1c62c0c37089feeaada3b4d81  gcc/symtab-clones.cc
! c7126fa37eaa25a33e2b35604b5232f5  gcc/symtab-clones.h
! f43d0bfaf43737b32022d2a4ed73a4e5  gcc/symtab-thunks.cc
! 20b6451c425095eeefa43b022116651f  gcc/symtab-thunks.h
! 8ba132a13bc2f6b25ab737f2f0136ebf  gcc/symtab.cc
! 6625bcc0a02138697a70425ce07e60b8  gcc/sync-builtins.def
! b13c43fe299a0a3c8488f97e63159389  gcc/system.h
! 2f02f0cf084fed693b3eef7675fa2958  gcc/target-def.h
! 84c7e8f0d12964716f9bc0f4ccf2a050  gcc/target-globals.cc
! 311cc5bdc01848ade2860f8dc148f0e5  gcc/target-globals.h
! 7871f47d38cc1b1e4e5df88ae8e5fff0  gcc/target-hooks-macros.h
! bdb7861240a719686c5923e70bd8347a  gcc/target-insns.def
! 1be8dcc4382db4d9bcefb2eace0cb217  gcc/target.def
! 78892c17919188d1359e9d43fdf777b0  gcc/target.h
! 6149228cab283a1f92d51b26eb37646e  gcc/targhooks.cc
! 008304bca4d8ea66f0c9bc8749e23bb5  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! 320b73f9ae2b8ffc4c9fd949515e6375  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
--- 5902,7685 ----
  c08c0bc386a3e50faacf99daf94c080f  gcc/go/gofrontend/go-optimize.cc
  ead5ac25b7b99d361225e0fd940e286a  gcc/go/gofrontend/go-optimize.h
  5b59619fab7e543c5bb28dd8a6d62793  gcc/go/gofrontend/go-sha1.h
! 371c1744ba0e9e0cd427eea4dd006180  gcc/go/gofrontend/go.cc
! 6cf25cfc9074018513a5715d4d9fae62  gcc/go/gofrontend/gogo.cc
! 482da843ad5e2a734165747e14d075df  gcc/go/gofrontend/gogo.h
  f9015ccccf7764d4c6eeae1bd5e01c7f  gcc/go/gofrontend/import-archive.cc
  69248b78bc1185657dbc63be6016ac45  gcc/go/gofrontend/import.cc
  0a9e27f1c3baa96ef288093aae5e2d3d  gcc/go/gofrontend/import.h
  52b99a209e77281dd06be084c671c85f  gcc/go/gofrontend/lex.cc
! 41a3768614d6403a2d963ff36ad73f66  gcc/go/gofrontend/lex.h
! 8c4c336f6edc93802ab60628e46ebf75  gcc/go/gofrontend/names.cc
  98235b1a736055cd6a130337a9ee8e8e  gcc/go/gofrontend/operator.h
! 7ff3eb132afc6fccf5a0fbd254f53dbb  gcc/go/gofrontend/parse.cc
! d1791687826a1bb33b9681aef8b30dae  gcc/go/gofrontend/parse.h
  2c0d81f700bca5c56dfcd3a7673e2e82  gcc/go/gofrontend/runtime.cc
  06ed40caa7a515346c6a4708bc2dd50e  gcc/go/gofrontend/runtime.def
  978a7b1924ca7f696fa5d0da3c9ccf60  gcc/go/gofrontend/runtime.h
! de503167b3910779538ba9ac70188ed5  gcc/go/gofrontend/statements.cc
! bc2d40b1110a6cb991aa29c873aa356c  gcc/go/gofrontend/statements.h
  bfc57c7a1e73452c4b277ad13efbddbd  gcc/go/gofrontend/string-dump.h
! f2733bd8769a60e587fa3ee7bef9b152  gcc/go/gofrontend/types.cc
! 826aeaf3a6c91346dcd39411f0c14e97  gcc/go/gofrontend/types.h
  1a87c48a17e95c935789de3db97a6ba8  gcc/go/gofrontend/unsafe.cc
! 4253050cd425cf4a4469a34c0248c5b3  gcc/go/gofrontend/wb.cc
! 107f3fe8466d3aea95d3a59d56c018af  gcc/go/gospec.cc
! 0f11152eeacec810639fbe236f1f6ab9  gcc/go/lang-specs.h
! 5ca333f8e2687aeb1d208a9db22ae43f  gcc/go/lang.opt
! c539c6223d4da129f6dbebac29884ba8  gcc/godump.cc
! a9a04b1d305b98d74a49acbf3e5875fd  gcc/graph.cc
! 9f87084f59d48ddedfe9e9878eef2deb  gcc/graph.h
! 5aaef2c6d37ad6626e1402ba0aad0ca9  gcc/graphds.cc
! 87169b797cdba8871d9a103df8038d67  gcc/graphds.h
! 829529faa446cc75d31f38002f01cfec  gcc/graphite-dependences.cc
! 21d597ec63fbc03a32a343e2dcdbade6  gcc/graphite-isl-ast-to-gimple.cc
! f1be6fd4e6c8e9573630d044720d16fa  gcc/graphite-optimize-isl.cc
! dd8454618851b4476554c6eeb9aaf88d  gcc/graphite-poly.cc
! 93878ecf34f5b1c3d019172b11d4f4e9  gcc/graphite-scop-detection.cc
! 0100284254f4d9ca3a3e184057d1cf2f  gcc/graphite-sese-to-poly.cc
! 652950f29268d6960416fb24c6fc280a  gcc/graphite.cc
! a36eddb0cf48bade74c308210f722f71  gcc/graphite.h
! d4187a499dfa40016b23ac9723cc5a2c  gcc/graphviz.cc
! e05d20afb26ce53b0fc39c6e90bf6994  gcc/graphviz.h
! 77b3218165d3edc218698020b1d26c63  gcc/gsstruct.def
! 3869432f2d3730a43af51f75f867e9cb  gcc/gsyms.h
  c32a1d882e7039afe158bb9e59b65223  gcc/gsyslimits.h
  053ee4a84e4593c88c088f25e153d1a5  gcc/gtm-builtins.def
! 68c16821df33561d9a0d2d04380ec073  gcc/haifa-sched.cc
! 1eefdf52e4ce3bfa9327490d4f1a031a  gcc/hard-reg-set.h
! a10dac22a2b33a86be16d0efa27749d2  gcc/hash-map-tests.cc
! 2c6716a60f9cf92b4cc67f03f59cc460  gcc/hash-map-traits.h
! 8194dfdbe497e10423ad224101e0d252  gcc/hash-map.h
! 844b710fb2cdf3ae53a06990b4a55357  gcc/hash-set-tests.cc
! e851c9757df2348436af3d2b5890db33  gcc/hash-set.h
! 81ec3cadc9b7bb741fe08b3d7211d8c4  gcc/hash-table.cc
! 222e911376ca8a441a33a71973b18506  gcc/hash-table.h
! dba27c58c47cf222113d081c390a4553  gcc/hash-traits.h
! c0ca3c57460c1c1d9448072702aae874  gcc/highlev-plugin-common.h
! 4b718113926d679cad05d9187e20ddee  gcc/hooks.cc
! fa7d4481797426321fb9156f3f2ed73c  gcc/hooks.h
! f2466d2fe2afbd59cded96c0e60712e7  gcc/host-default.cc
! d9e81770094112cf4032968e90ddb26e  gcc/hosthooks-def.h
! 081421b43c309c4cc3170f3a6d60fb49  gcc/hosthooks.h
! d9aef0bb49476bc2d492b82983032a3d  gcc/hw-doloop.cc
! 01b52dd1df8c52ed9edf50b535362f54  gcc/hw-doloop.h
! a2c970a78392773f57877bd6b739f5a5  gcc/hwint.cc
! 44500fc305015a9aba3b0e4521e64a20  gcc/hwint.h
! 94b26ea9cc3c6cf63edc05afdc14fad4  gcc/ifcvt.cc
! af5696bbd759bde4b826b69e196cfdfd  gcc/ifcvt.h
! e628722087508f838cdb4899f48c7f43  gcc/inchash.cc
! a5b79003066c0e5bfacf7d9d006f46cd  gcc/inchash.h
! 8262367501cdedec8b0c9e45caadce43  gcc/incpath.cc
! a8e3cc8cb723d5ba4f5d1e2f04287f63  gcc/incpath.h
! cb14e93247326b8ffa6eb712f41e7c27  gcc/init-regs.cc
! 94fbc6d552ff7bbeb71f638d99d2f6e0  gcc/input.cc
! e5e0ca7e1753fd5d89c8a7736badc975  gcc/input.h
! d34bbd252c9510b2d967d3c7b17f66bc  gcc/insn-addr.h
! 113e3f5328ae586d49a4d449755c406f  gcc/insn-notes.def
! 5c0f3c404fd37cca65b30f97fbbef8f4  gcc/int-vector-builder.h
! 24233ef42035f96cab80084a3aff40b7  gcc/internal-fn.cc
! de6d49db609e5109f5b73c4fa39fd732  gcc/internal-fn.def
! c12e2732707baf23e73a14d0b1b36dfd  gcc/internal-fn.h
! b604200ebd6bbb8075a58d20d96105e3  gcc/intl.cc
! 2086a023243c1aeb61f8be26da7a72ad  gcc/intl.h
! f1c9645780e7d29c2d852ae147ef5d45  gcc/ipa-comdats.cc
! 9c732e56ba4b30b487ca6714102f4029  gcc/ipa-cp.cc
! 55517140580887ca4deb8ce1e0321892  gcc/ipa-devirt.cc
! d454148b5247b81f13abdb82a69ea474  gcc/ipa-fnsummary.cc
! fb25c569d03784bece5c17aaaaa369c5  gcc/ipa-fnsummary.h
! 1101fd17ebb3014a7be788f45a328e40  gcc/ipa-free-lang-data.cc
! 462a3856a6c0e71ca1906823c9839a1d  gcc/ipa-icf-gimple.cc
! efbca05f610d43f92d4785f0e3c140c2  gcc/ipa-icf-gimple.h
! 309678fae1f677120bd08243a3607eb7  gcc/ipa-icf.cc
! 7ff31fb3ed107fddec8cfac0849344d3  gcc/ipa-icf.h
! 104e82a0a369ff3f6b580044a153fe82  gcc/ipa-inline-analysis.cc
! fc07475faa73a53e202938a58e7cac70  gcc/ipa-inline-transform.cc
! cd174164366ec63306585c2d13efcc1b  gcc/ipa-inline.cc
! d4b7959c20a98ff6f25372701739be82  gcc/ipa-inline.h
! bf2c8193144d067992fafe66ec1b66c4  gcc/ipa-modref-tree.cc
! c4370973ef8ca23676e8dd1782308f9c  gcc/ipa-modref-tree.h
! 2e9275d14ba42dd0fae6f51aa0afb13e  gcc/ipa-modref.cc
! b2fae5a0c725823232307d1ff107c412  gcc/ipa-modref.h
! 9a6d65808b97a3f5554037c6b939f92c  gcc/ipa-param-manipulation.cc
! 6380acac9667f5632167649df5974f7a  gcc/ipa-param-manipulation.h
! 7cea60b3666f6942e8ff38e2854bcfc2  gcc/ipa-polymorphic-call.cc
! eeca019a2a20494b0c27fccd9ffa6e38  gcc/ipa-predicate.cc
! a37e46df93e9fdd5778f6c479d45c848  gcc/ipa-predicate.h
! d333e55ebff3f204e5c62a9f85f0b960  gcc/ipa-profile.cc
! b25df447de2481d1a0f98020a97ada6d  gcc/ipa-prop.cc
! b7b01a20205d7152cf5e0e90bf5c084b  gcc/ipa-prop.h
! f5f5042251c5cf364068ae7041d1f402  gcc/ipa-pure-const.cc
! fea3656d7117f5bd9eb678ce7031b9cb  gcc/ipa-ref.cc
! 7083d1fd93928160d417413231e4735e  gcc/ipa-ref.h
! af7c79ee2c4119a45f7424269eeca17b  gcc/ipa-reference.cc
! 854b54fd489dd96b9961e88be7f7b919  gcc/ipa-reference.h
! a868c75269d9dc9bcba5914603a445ca  gcc/ipa-split.cc
! 94240094211d4d060c98997a83890440  gcc/ipa-sra.cc
! 0dd8ceab6156d8ec5c11a356a7810a6b  gcc/ipa-utils.cc
! 9ba52d14c04352d1812510443e99efb6  gcc/ipa-utils.h
! 511f62c5d61101a088f6bf207caf3ba6  gcc/ipa-visibility.cc
! b7f8dfd9aa35c133f2d21657d28f5a45  gcc/ipa.cc
! 6d8d0cb2c168378bf014af9d08fcbe4f  gcc/ira-build.cc
! 918e14fe87dd453fa60668415bbcbcb8  gcc/ira-color.cc
! 683efbeb5fa644827dbe9801723fdb57  gcc/ira-conflicts.cc
! 83cbdd76b074bc07c01ebd3aa1b2cc4e  gcc/ira-costs.cc
! 04825acf2804a1cbac4ea42e34f5d78a  gcc/ira-emit.cc
! 221ce32bce49d374e617c10cc457c146  gcc/ira-int.h
! 11f493755c61302aed33b9e2e678c8ca  gcc/ira-lives.cc
! ca3aaf780b4820c2efb4f99d452eafb2  gcc/ira.cc
! daec5f5daeb40974ee5715d87b784866  gcc/ira.h
! 794ab6840c05630c3df07341a0f339e5  gcc/is-a.h
! 83fa9cced7fd3d64ba760bf4dd2f1414  gcc/iterator-utils.h
! e005e6586a0843c8fad367e736eaa584  gcc/jit/ChangeLog
  6071bdf04fb356c5ac99a99ec00c9a12  gcc/jit/ChangeLog.jit
! 8476ebeec1b0f434e5468cb887e39ac4  gcc/jit/Make-lang.in
  fd0d76b6467c987f813d430a35d4760a  gcc/jit/TODO.rst
! 1bbcd8c4c1cbecd0d0207b024f87aec5  gcc/jit/config-lang.in
  df53fb6b84c435b56ac2cb2727b62b27  gcc/jit/docs/Makefile
  aefe50c9e37a2e7a06545dbc6b38bbd4  gcc/jit/docs/_build/texinfo/Makefile
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/libgccjit-figures/factorial.png
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/_build/texinfo/libgccjit-figures/factorial1.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/libgccjit-figures/sum-of-squares.png
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/_build/texinfo/libgccjit-figures/sum-of-squares1.png
! 4e17cf28a87f622ac44b6f53dba87a60  gcc/jit/docs/_build/texinfo/libgccjit.texi
! 8d0d0aacba30f7fc0735289b07afd832  gcc/jit/docs/conf.py
! 26a2b1c2e065fbe67b6e9823bcb260dd  gcc/jit/docs/cp/index.rst
! 18832f49558f66a611b3dd858c21c266  gcc/jit/docs/cp/intro/index.rst
! 32f65f0236de6b980eaed36f0013a31d  gcc/jit/docs/cp/intro/tutorial01.rst
! 293eae4201bf42ea3b2c33ddc385bfa0  gcc/jit/docs/cp/intro/tutorial02.rst
! 38bb027f995add44665e450589f13284  gcc/jit/docs/cp/intro/tutorial03.rst
! 937639cca9f4119bd6b59088447cfb98  gcc/jit/docs/cp/intro/tutorial04.rst
! 0e0462e994344e99284fc2c263c67515  gcc/jit/docs/cp/topics/asm.rst
! 9f2eecb9dfc1c4b6c2ba5236b2fe11a0  gcc/jit/docs/cp/topics/compilation.rst
! 0c0ec6beb6df56a89d7d9a11a985aed3  gcc/jit/docs/cp/topics/contexts.rst
! dd47b78fff4536f086ef6e6f060a3a47  gcc/jit/docs/cp/topics/expressions.rst
! a25b3565f91850ca6f021963e302f9e7  gcc/jit/docs/cp/topics/functions.rst
! 4169ec60ae16042f30e8bce052e7f5cf  gcc/jit/docs/cp/topics/index.rst
! 75d07fb7300613153b1dbe2d84ac862c  gcc/jit/docs/cp/topics/locations.rst
! c330b8688b717308bd419c5c4fb9d6aa  gcc/jit/docs/cp/topics/objects.rst
! 61ffb51975c5cac863d20a9457a428fb  gcc/jit/docs/cp/topics/types.rst
  98a4c0efa41e5eb7177483e4cd99a81e  gcc/jit/docs/examples/emit-alphabet.bf
! f7874463bf96c5096436cc1f764fc825  gcc/jit/docs/examples/tut01-hello-world.c
! b076e2a71f2cfd49b6c13f4605b76011  gcc/jit/docs/examples/tut01-hello-world.cc
! 954b1c7d0b3f68b7ba71638e67e39564  gcc/jit/docs/examples/tut02-square.c
! 66c6f6117ff56463eca4efdb323ad90e  gcc/jit/docs/examples/tut02-square.cc
! 0b94bebd78c9e6ec3e327f22131053aa  gcc/jit/docs/examples/tut03-sum-of-squares.c
! e3c3f1ae0bb718e1ed6f0ea73102f9ac  gcc/jit/docs/examples/tut03-sum-of-squares.cc
  6369d2b07520cb0fc9d14082499f6be2  gcc/jit/docs/examples/tut04-toyvm/Makefile
  999c1d2b92d5d71565c67854aad60e9c  gcc/jit/docs/examples/tut04-toyvm/factorial.toy
  efe1998ded06ac3721d9ced4d96056f0  gcc/jit/docs/examples/tut04-toyvm/fibonacci.toy
! 8583be0b108a212e93c4033e02d0636e  gcc/jit/docs/examples/tut04-toyvm/toyvm.c
! deb520cd3a2dad9864c0bdf82eec9d9d  gcc/jit/docs/examples/tut04-toyvm/toyvm.cc
  3cbe9daf70398730ee60aa4caf2fc200  gcc/jit/docs/examples/tut05-bf.c
! 575254475b27f03372e33b4b37bccf11  gcc/jit/docs/index.rst
! e931d22236dd1c2a53825156940fd1af  gcc/jit/docs/internals/index.rst
  d72502d68617b68873d385bcee6e9c4b  gcc/jit/docs/internals/test-hello-world.exe.log.txt
  40d770c0fff5fdb135c9832c697a6e05  gcc/jit/docs/intro/factorial.png
! d03d31f4783c10b3494846aeb96b9602  gcc/jit/docs/intro/index.rst
  11b13c2e317ff217420ed928ce4ba00e  gcc/jit/docs/intro/sum-of-squares.png
! c07387f59298cb02cc408d44ca87a9b9  gcc/jit/docs/intro/tutorial01.rst
! b241f8cc70c302f48bb39847b5c074cf  gcc/jit/docs/intro/tutorial02.rst
! b79ad40737ff88d196466b477d7b9797  gcc/jit/docs/intro/tutorial03.rst
! 30a930fe19001052dde7441f9beb8d3c  gcc/jit/docs/intro/tutorial04.rst
! 892ada9c13b1978ef727967ed98d38c5  gcc/jit/docs/intro/tutorial05.rst
! 1e9c47ea4c3e8bfaa2793f7550f11238  gcc/jit/docs/topics/asm.rst
! a2ca8351458b51ae47a0f969b961620f  gcc/jit/docs/topics/compatibility.rst
! 03189e4fc8e64319e698c328e309e84d  gcc/jit/docs/topics/compilation.rst
! a2691cd32c5adc747c780ccd47792f84  gcc/jit/docs/topics/contexts.rst
! 548c8f80a1369cd2243bab694e75d44a  gcc/jit/docs/topics/expressions.rst
! 05fcd28c706df4f18af35c69c1556826  gcc/jit/docs/topics/function-pointers.rst
! 749701210fc08573689f9f8e86e0a011  gcc/jit/docs/topics/functions.rst
! c0daecf8ea49bb0bcfeeaf7624de3976  gcc/jit/docs/topics/index.rst
! ddfc58941702b9e2442d605806dd2124  gcc/jit/docs/topics/locations.rst
! 3734afe54ae7b3649d74bc3119606a26  gcc/jit/docs/topics/objects.rst
! 9dd7a3733e6c71720855853b42b93959  gcc/jit/docs/topics/performance.rst
! 135f6b8825cad4d76ee779ea4ea4b617  gcc/jit/docs/topics/types.rst
! fa949675427118082c7787417e7acffd  gcc/jit/dummy-frontend.cc
! 8bcb27b76e3dbffb93cb4c0bae873cfc  gcc/jit/jit-builtins.cc
! c4c7449278cafbafd910adefcb0538cb  gcc/jit/jit-builtins.h
! 63d4e21da1341bb39114719faea3240e  gcc/jit/jit-common.h
! 6818dd9f17ca0afc1dd95badbc645ea9  gcc/jit/jit-dejagnu.h
! 35586f69ac552479fa52d7c485d52bcf  gcc/jit/jit-logging.cc
! 5aa44993b9fb9a380da286eaf9a52748  gcc/jit/jit-logging.h
! 7c9079754b3b27f9bfff94b5bfcb298f  gcc/jit/jit-playback.cc
! 206bd9ef117c6b84ffd9e2de4b9f54c2  gcc/jit/jit-playback.h
! 87a66ab85309ed684069a427e21d90a9  gcc/jit/jit-recording.cc
! 79c47ba6c9a2ba79c33c88c791e3e465  gcc/jit/jit-recording.h
! f39a4947637d7dbbad4e6871f9a348df  gcc/jit/jit-result.cc
! 1f767b235b0f89c05295b429bd1720ba  gcc/jit/jit-result.h
! cde64615a5920a7cc57e007b61e670b9  gcc/jit/jit-spec.cc
! 1643978a06c78212047af3717e00baef  gcc/jit/jit-tempdir.cc
! cefffe9d99f9a9f9a2f2a43eacf5a271  gcc/jit/jit-tempdir.h
! ce484ca24b42d9c19a0e1352c4495caf  gcc/jit/jit-w32.cc
! 14640c9c60009896c499dc0765fd8a8a  gcc/jit/jit-w32.h
! d3f9ed6a4ee28f7cb3c35bc9ae793726  gcc/jit/libgccjit++.h
! 8299f0b9f9464b4973ad243f21909ada  gcc/jit/libgccjit.cc
! b67857e907fb0e92fa5350b5272623c6  gcc/jit/libgccjit.h
! a4e699235dad75bea459d7cd927a3589  gcc/jit/libgccjit.map
  a683bef6f6721b574c76acc1efb5050c  gcc/jit/notes.txt
! 38204655193c6f601e5be9613d2e92ef  gcc/json.cc
! f76da24a148ff2084c218a4c3ff69e23  gcc/json.h
! b6155d21f4c6140ba275399b4c94f2d6  gcc/jump.cc
! d24f5328a13bb763b4057e92a3d786bc  gcc/langhooks-def.h
! 0bc762d1bb2527972655810c0fe98706  gcc/langhooks.cc
! 586d9a40cda3d1e9dd2286bdb7b460aa  gcc/langhooks.h
! e2c2b4c29dd562166e457ad5cd9d3ab4  gcc/lcm.cc
! 7a501dceb06088b713e574dafeeca3ea  gcc/lcm.h
! 3a6f5880ea2ae9d616fbe850bb16871c  gcc/libfuncs.h
! 24611054f2152d3499ed36c45cf3335e  gcc/limitx.h
  83de5c6450456e215a5484083afcd32a  gcc/limity.h
! 472fea06d68ad0de5d8fdfae7873bc63  gcc/lists.cc
  30b8e3e407f46ad2cb39260ec4bab9f6  gcc/lock-and-run.sh
! 86c53cb5fd2a7a7b0267db043ad0c017  gcc/logical-location.h
! 2c32d851483812d59cb183c0f6452ee0  gcc/loop-doloop.cc
! 859d2f097f5e034fbcf23370c719eaad  gcc/loop-init.cc
! 2cc756bec31fac101c34285d0717832f  gcc/loop-invariant.cc
! 4c49af76db981526de035551f5c2745d  gcc/loop-iv.cc
! fdb910a61276129e6981a007c1cd94f6  gcc/loop-unroll.cc
! 244bd1ac6f02573201143dcf1a456d36  gcc/loop-unroll.h
! a04cd2beaecdaef5b7019518ca4eeb16  gcc/lower-subreg.cc
! 0196e3b94cf6fd637ba9f3bf6a314bd5  gcc/lower-subreg.h
! 1843969b87343439d9591acd32785e25  gcc/lra-assigns.cc
! 6f8948f5953e4ded18580ae4df9a36f1  gcc/lra-coalesce.cc
! 62366226f7bef6fe22bfd3a1378b0d05  gcc/lra-constraints.cc
! ed3a3ee1d59440bde2427b7b43cf2e6a  gcc/lra-eliminations.cc
! 7c8aeab71bcfacb356aecdcdb7762210  gcc/lra-int.h
! 399337ad638584d9290158ea06d18de8  gcc/lra-lives.cc
! bc8532df35c2dd9a4e262d85ed29ffd4  gcc/lra-remat.cc
! f29a4612195d306e5b22fd456cfb2a91  gcc/lra-spills.cc
! a99c9451bdde633c19f5b521d31b666b  gcc/lra.cc
! e39f5642047f20c01157ff09360cf476  gcc/lra.h
! 8ed546cd80a35e0f3435f2992f8ae6de  gcc/lto-cgraph.cc
! 6fc03350ec53f915e1e4e39ca5122e10  gcc/lto-compress.cc
! 838379d3b336c074b7a518024dfc1524  gcc/lto-compress.h
! fe456b00f469a6237ac21a07bf3791a8  gcc/lto-opts.cc
! 862eb9c06442298e051e94342486f26e  gcc/lto-section-in.cc
! 2c1a311ccac95e377a112adacca59e52  gcc/lto-section-names.h
! aa824edd3a2322925eef8c0e675c646f  gcc/lto-section-out.cc
! c65f55fed79f6f011c286a8c15d49485  gcc/lto-streamer-in.cc
! 404aeba9be544810a4471166b3c47865  gcc/lto-streamer-out.cc
! 84bdf4dde2c999956f004a2cec5fcdfa  gcc/lto-streamer.cc
! 6ce0e12c942ed0719e43deb19d3d23e6  gcc/lto-streamer.h
! 99434819bef00f148b682b64adc85f39  gcc/lto-wrapper.cc
! 5d559ffdeb1c84d10f13d68a67b734db  gcc/lto/ChangeLog
! 1c031130b442e688f20c6f97577f6f1c  gcc/lto/Make-lang.in
! 10ec91fabc2cd5424224460087811ade  gcc/lto/common.cc
! 797d875c24181ac44cc33ff020e1b788  gcc/lto/common.h
! a96eccac19201e035cb7755057ec5b89  gcc/lto/config-lang.in
! 71fd3323282cca590e71117dc7d88b6e  gcc/lto/lang-specs.h
! 00ab061f413bd810f0e9b6c1d04b7d9a  gcc/lto/lang.opt
! 4e0eae5852e5142a6119196a17f3c5c8  gcc/lto/lto-common.cc
! 76a4469765c0c22dcc06124c5d125599  gcc/lto/lto-common.h
! b4a90dba73d706a4915afdf4c458eff5  gcc/lto/lto-dump.cc
! a497c0ed98b232be3d905aa138636779  gcc/lto/lto-lang.cc
! db24810ac399c4a5d6146bd71ef73426  gcc/lto/lto-object.cc
! f018d5b0f30e1d8cb11793871268668a  gcc/lto/lto-partition.cc
! b42fe0b38243f7d8bd946b42c8b1fdcc  gcc/lto/lto-partition.h
! f91cdf415b673bc55139d4738952c1dd  gcc/lto/lto-symtab.cc
! 64117f906dfc57aab1b4dcf007dc88fb  gcc/lto/lto-symtab.h
! e1760b67860124dafbbaf58a3e22c65e  gcc/lto/lto-tree.h
! 885788a8016feb1e435d6099e3eebde0  gcc/lto/lto.cc
! 2fdf2f282ea30fb5f77204a958cd7a87  gcc/lto/lto.h
! 98487a7e2fda670e2e7436d5cb395e37  gcc/m2/COPYING.FDL
! a8dfb49da43514f61fc1ed162db2447b  gcc/m2/COPYING.RUNTIME
! 8f0e2cd40e05189ec81232da84bd6e1a  gcc/m2/COPYING3
! 6a6a8e020838b23406c81b19c1d46df6  gcc/m2/COPYING3.LIB
! ffb51484d569d270e74c7cd68aa4639b  gcc/m2/ChangeLog
! eef28ac70aaa78bdba9d98972540cd31  gcc/m2/Make-lang.in
! 1e5187a62031df54ee1aa86d3936b27d  gcc/m2/Make-maintainer.in
! 6a74129fda00ca52ba9f953538250c45  gcc/m2/NEWS
! 1259833ae730cd1789960cfceae66ee6  gcc/m2/README
! eb1599754d7e0e2fb843b249b19aad7c  gcc/m2/config-lang.in
! a988f7b53ad627283964db6f0456f9ab  gcc/m2/config-make.in
! 8a7f8f9d6c83db345c1a8a98cc592b4a  gcc/m2/configure
! 231ddb2dc41cd5361c2841fd4773eca6  gcc/m2/configure.ac
! 41c1f9a6da19532c7bfc7a5438dbb2e3  gcc/m2/gm2-compiler/CLexBuf.def
! d826719042427da8a9c2b0cc58c430ad  gcc/m2/gm2-compiler/CLexBuf.mod
! a1f79882a6c26b6796131896bfb1efae  gcc/m2/gm2-compiler/DynamicPath.def
! 1512b03912ab1201a89998231f6a5522  gcc/m2/gm2-compiler/DynamicPath.mod
! f8bf56a5b7fd82eee178d88cbec0c3de  gcc/m2/gm2-compiler/FifoQueue.def
! 09f05adb133f47135aeb04b9abcec389  gcc/m2/gm2-compiler/FifoQueue.mod
! 8a0e7cdd30a71137694f3152675e4951  gcc/m2/gm2-compiler/Lists.def
! 3ad5d736f3ec813addb89e68da25e616  gcc/m2/gm2-compiler/Lists.mod
! a2d8f762ec5e3244ee19435251593b00  gcc/m2/gm2-compiler/M2ALU.def
! 46a1e5a9cf7f59d54965a0b9677cd5c8  gcc/m2/gm2-compiler/M2ALU.mod
! 4c18bb997628290bd1f7535d0a503e23  gcc/m2/gm2-compiler/M2AsmUtil.def
! c632e26c81b95e9b256caad279e218cd  gcc/m2/gm2-compiler/M2AsmUtil.mod
! d71310d044ff8b82fcae64e2194fdb37  gcc/m2/gm2-compiler/M2Base.def
! 0796b2516ae450771fb80e0a9d68ae74  gcc/m2/gm2-compiler/M2Base.mod
! 0fb619cbf89d2ab62175cc601f2f4fbe  gcc/m2/gm2-compiler/M2BasicBlock.def
! 49e6be2cb206cdd20964d5ec36da1c51  gcc/m2/gm2-compiler/M2BasicBlock.mod
! 6f53570c03f553a74cb90c8ff755f5da  gcc/m2/gm2-compiler/M2Batch.def
! 634cb52bc52b7adaa2975ce83b03f1f9  gcc/m2/gm2-compiler/M2Batch.mod
! ac30504084574f06338785e69b5f8afd  gcc/m2/gm2-compiler/M2Bitset.def
! e53b71fe64d958a7003c64f59431cf4f  gcc/m2/gm2-compiler/M2Bitset.mod
! 9ecc8ed9aa4b533eccaac20367c25210  gcc/m2/gm2-compiler/M2CaseList.def
! 0fb869942bc5b063b624ade0d8fa935e  gcc/m2/gm2-compiler/M2CaseList.mod
! 1bddee8c06ef747acfa18397e352c00b  gcc/m2/gm2-compiler/M2Check.def
! 9c169f6d8a6c7b461bc4fe60fcfbbbb4  gcc/m2/gm2-compiler/M2Check.mod
! 290feedd4647585c8d2b075a035b389d  gcc/m2/gm2-compiler/M2Code.def
! 83dc902194f1a2e1f052c67f1571902d  gcc/m2/gm2-compiler/M2Code.mod
! 4e1228915c97ac365d550fc35524928b  gcc/m2/gm2-compiler/M2ColorString.def
! 5120babf0526808316117dba88bff468  gcc/m2/gm2-compiler/M2ColorString.mod
! 118167f77779572910d32d2d4a4c12a6  gcc/m2/gm2-compiler/M2Comp.def
! 43e5e520d78b4bc3c5114f4f1832880b  gcc/m2/gm2-compiler/M2Comp.mod
! 11230e19c40b5bd65ad22b4f9a457249  gcc/m2/gm2-compiler/M2Const.def
! ed823dab8d80a0f4bd8bf970def3a111  gcc/m2/gm2-compiler/M2Const.mod
! c1742b8684bd905a7b44558c8bdb320d  gcc/m2/gm2-compiler/M2Debug.def
! 5aaa0a299d98f306c9953244633d7965  gcc/m2/gm2-compiler/M2Debug.mod
! 999c6ad0ae787e22bd7a149c2cfbf3b0  gcc/m2/gm2-compiler/M2DebugStack.def
! 210b45338ad4534097e349b0f1cb6002  gcc/m2/gm2-compiler/M2DebugStack.mod
! 89813622bf9db56dba3d8be87b3d8cf1  gcc/m2/gm2-compiler/M2Defaults.def
! 80184eff2abf21029bc4a4e822151330  gcc/m2/gm2-compiler/M2Defaults.mod
! c7e6b62713a2bef8eaa93279d5e0743a  gcc/m2/gm2-compiler/M2DriverOptions.def
! 676fb02d107e5ae713b38331ee6bf607  gcc/m2/gm2-compiler/M2DriverOptions.mod
! c53535d2e04d70fcbb452b8d5e3e1ba7  gcc/m2/gm2-compiler/M2Emit.def
! 76b65ef2361a4fc7b9fe60fe56ce2f73  gcc/m2/gm2-compiler/M2Emit.mod
! c12ca80675357cb96d258f5b6c3996e1  gcc/m2/gm2-compiler/M2Error.def
! 1be66d95124ef47f09a96283b03d56c8  gcc/m2/gm2-compiler/M2Error.mod
! bc3e7afbf37fe9ca99868cca44270773  gcc/m2/gm2-compiler/M2EvalSym.def
! 00c5062e6973c55551e230e8e1ead0bb  gcc/m2/gm2-compiler/M2FileName.def
! b838bd8a17e7170e89decd1b0d33083a  gcc/m2/gm2-compiler/M2FileName.mod
! 5b89f7c875b32c173b3ded7bd7e8d11e  gcc/m2/gm2-compiler/M2GCCDeclare.def
! 95d8d3ffa4a9ee16ff06fffe5ff19a69  gcc/m2/gm2-compiler/M2GCCDeclare.mod
! 581fef9be9d21b0df045a0fd9d3514b0  gcc/m2/gm2-compiler/M2GenGCC.def
! d6c39d76650c9e694404c2de18f007b6  gcc/m2/gm2-compiler/M2GenGCC.mod
! 2ed183a1189e5bc8bafa1842e275959e  gcc/m2/gm2-compiler/M2Graph.def
! 584853a747ececb3b3f7cc1e911000df  gcc/m2/gm2-compiler/M2Graph.mod
! 7bcb051229d0115a28be58f01f3181aa  gcc/m2/gm2-compiler/M2Lex.def
! b3ff1900d33e4b1912c5388c98a4ef5b  gcc/m2/gm2-compiler/M2Lex.mod
! 6d90d5ed02c9869c6800177d0637f114  gcc/m2/gm2-compiler/M2LexBuf.def
! 8fcc0d7a4944e11fe60fce6d57a37606  gcc/m2/gm2-compiler/M2LexBuf.mod
! c65c1c8749ce497ce9490bb0800b702d  gcc/m2/gm2-compiler/M2MetaError.def
! f616e44dded481aa1b2f367b5d815294  gcc/m2/gm2-compiler/M2MetaError.mod
! e3c69c23b26aff99978d6eea6fca3666  gcc/m2/gm2-compiler/M2Optimize.def
! 957016b99d4728d1a725a4c52adcee7f  gcc/m2/gm2-compiler/M2Optimize.mod
! fa15d30a34aa13fd38b7a880ccd495d8  gcc/m2/gm2-compiler/M2Options.def
! e6444848d083ceb1b5cff263a34b41b9  gcc/m2/gm2-compiler/M2Options.mod
! 1106fb38f0213cdf3e0e45c185e2da6f  gcc/m2/gm2-compiler/M2Pass.def
! c072946b43f48549fa9ef6362afdb828  gcc/m2/gm2-compiler/M2Pass.mod
! e175eb861069caa12d59afe0c38dc80f  gcc/m2/gm2-compiler/M2Preprocess.def
! 2d419c2f4454cb19ab346cff3931f294  gcc/m2/gm2-compiler/M2Preprocess.mod
! 860a2ae7cbf8faa48ccdfe5a320426d7  gcc/m2/gm2-compiler/M2Printf.def
! c576f289c892f1f82340f1fc4f81c0df  gcc/m2/gm2-compiler/M2Printf.mod
! e45ca747793a958d86f5d7b71a696e5d  gcc/m2/gm2-compiler/M2Quads.def
! 236584096c9dbe9cd2b82df6da2e6d20  gcc/m2/gm2-compiler/M2Quads.mod
! 6c64542046467b30b548dff85413f90f  gcc/m2/gm2-compiler/M2Quiet.def
! 23102502e8c1c2d48478e9e700d05269  gcc/m2/gm2-compiler/M2Quiet.mod
! 030272e5198550936e59caa21f553081  gcc/m2/gm2-compiler/M2Range.def
! e4937d61f3768b7ef034e50ba279774a  gcc/m2/gm2-compiler/M2Range.mod
! ce5374396d41e6bcf88db36de3037d1c  gcc/m2/gm2-compiler/M2Reserved.def
! 31223b709b0499b24766b0bc7e50571a  gcc/m2/gm2-compiler/M2Reserved.mod
! ed9342d46dccb1fef2e7dd1b2a268c89  gcc/m2/gm2-compiler/M2SSA.def
! 8f5bb2d2e59edfc3bb287e3d4e16c7eb  gcc/m2/gm2-compiler/M2SSA.mod
! 900e7ad74c6b97131a3d167e1af9e46b  gcc/m2/gm2-compiler/M2Scaffold.def
! 6794c556b884c1e80d67972dcd684e17  gcc/m2/gm2-compiler/M2Scaffold.mod
! 6843444ac2cee909cd2a2e3dc6045412  gcc/m2/gm2-compiler/M2Scope.def
! bfb8ebc2dacf8d79e5c4a1de6b6b2c77  gcc/m2/gm2-compiler/M2Scope.mod
! 3b55fb27781f848c79a50020ca3423b4  gcc/m2/gm2-compiler/M2Search.def
! 04b3b465e419394f61c8c9b4d5d7d5c2  gcc/m2/gm2-compiler/M2Search.mod
! d6aed6b97d7d51f051e44154d33f2579  gcc/m2/gm2-compiler/M2Size.def
! 9073a2b26b27dd0383f1f147ad62403b  gcc/m2/gm2-compiler/M2Size.mod
! 9bc8f87b4857242e3ed2387faa334299  gcc/m2/gm2-compiler/M2StackAddress.def
! 967b150720a4591ae7de58fff556a5ff  gcc/m2/gm2-compiler/M2StackAddress.mod
! 1cb51636aaeabeb59f201eff1f93abb8  gcc/m2/gm2-compiler/M2StackWord.def
! 6a1ddfec355137b19b38735ed7ab5d5c  gcc/m2/gm2-compiler/M2StackWord.mod
! d54ee3b3e58e1a8c2a184a0fa095b469  gcc/m2/gm2-compiler/M2Students.def
! 9fa59ff3d400f972e94577a82399af48  gcc/m2/gm2-compiler/M2Students.mod
! 20233ff6f550a64f08b2096624c92e2b  gcc/m2/gm2-compiler/M2Swig.def
! 7b715a2a88466c2a545561d662f266df  gcc/m2/gm2-compiler/M2Swig.mod
! e1e44b953e68ae3c7d71b9a7b633f9fc  gcc/m2/gm2-compiler/M2System.def
! 636266ac2e9e76be392faa019e964243  gcc/m2/gm2-compiler/M2System.mod
! 41d8b62d6c09a83361b2f8745b389d3a  gcc/m2/gm2-compiler/M2Version.def
! 07fb5d442a3148698488c6d2ef22bd9f  gcc/m2/gm2-compiler/NameKey.def
! 4e7ed10da450cf7c22b2ed642a358577  gcc/m2/gm2-compiler/NameKey.mod
! 5f608569623503415a1c66a5e73c915b  gcc/m2/gm2-compiler/ObjectFiles.def
! 4c60cc3fb450dc8ca2854042f6688324  gcc/m2/gm2-compiler/ObjectFiles.mod
! 86b58cf3b548edbf90d8709a9d63eeee  gcc/m2/gm2-compiler/Output.def
! e903123c63dbfea2ef561336c8d13f7b  gcc/m2/gm2-compiler/Output.mod
! db47b49ecaf8ec0b3208ffa11df841e8  gcc/m2/gm2-compiler/P0SymBuild.def
! 9a4ae0de1ea97699a1e1a3be7822173f  gcc/m2/gm2-compiler/P0SymBuild.mod
! f37455d1f534411b19f9f064d1ed8f0a  gcc/m2/gm2-compiler/P0SyntaxCheck.bnf
! 159988656fc541e67e4197a92370215e  gcc/m2/gm2-compiler/P0SyntaxCheck.def
! e37f2bccf8095deedf5f68e6d7945fd9  gcc/m2/gm2-compiler/P1Build.bnf
! 2bc327bee69a3075e06af950cf6d92b2  gcc/m2/gm2-compiler/P1Build.def
! 2b771f8d725bcf31f3e7fca36d4faecd  gcc/m2/gm2-compiler/P1SymBuild.def
! 8a6ce3c0bb8ecdf4418a05676a4e3045  gcc/m2/gm2-compiler/P1SymBuild.mod
! e6c4d5c863f1f3c7cabee1899c0b90af  gcc/m2/gm2-compiler/P2Build.bnf
! b4eb4a45d9d4f2c3be15fa42617d99bd  gcc/m2/gm2-compiler/P2Build.def
! 5a275c7f96e415bd4c60f2f9c4e91703  gcc/m2/gm2-compiler/P2SymBuild.def
! a68567e1bc5a30812df33d33fb42b6e4  gcc/m2/gm2-compiler/P2SymBuild.mod
! 42fda125f761be18ab26c04e614ca158  gcc/m2/gm2-compiler/P3Build.bnf
! 0e61328237fcaf450191501b161573fa  gcc/m2/gm2-compiler/P3Build.def
! 4e2a315c14f7308d00e36ec05131d5af  gcc/m2/gm2-compiler/P3SymBuild.def
! f4cada80b1f309b56e38b5bc6de3b819  gcc/m2/gm2-compiler/P3SymBuild.mod
! 919554d63fbf50ae873a17dfd8e282f5  gcc/m2/gm2-compiler/PCBuild.bnf
! 76ab067b99f32eec9ad2f19861ea1077  gcc/m2/gm2-compiler/PCBuild.def
! 507af5e61ef56254f6ea179ba1732125  gcc/m2/gm2-compiler/PCSymBuild.def
! 73be2bbe51cf66ab70ecdbd16eb0752f  gcc/m2/gm2-compiler/PCSymBuild.mod
! 7a1a156be63ec9ac6dcaf5c900826f9a  gcc/m2/gm2-compiler/PHBuild.bnf
! 5eebed3700a811b84ff148edfc48507e  gcc/m2/gm2-compiler/PHBuild.def
! b521bc37b844fd46fdfddcf3d2287f13  gcc/m2/gm2-compiler/PathName.def
! 96de7226734080944c4bdf83b7dbb0ca  gcc/m2/gm2-compiler/PathName.mod
! db0fe572d275f12368c3037e218c3bd6  gcc/m2/gm2-compiler/README
! 0269a99e1d0ce2593235fe53dfad3ac5  gcc/m2/gm2-compiler/Sets.def
! ccb383b502775d121afdb7a53e65b933  gcc/m2/gm2-compiler/Sets.mod
! 8c995df53f330a0e5a272870a725532c  gcc/m2/gm2-compiler/SymbolConversion.def
! a81a75167edfc8f2197c46d1c7c14b84  gcc/m2/gm2-compiler/SymbolConversion.mod
! b9739a0ee3a9107c328593c986aae7a0  gcc/m2/gm2-compiler/SymbolKey.def
! 6a3e6657751ccafb60c5b5c22b95e8da  gcc/m2/gm2-compiler/SymbolKey.mod
! 0fd412278bb74612892c5c751f098c9e  gcc/m2/gm2-compiler/SymbolTable.def
! 966a935c4ba15d92e5a58ca0c7c89ad4  gcc/m2/gm2-compiler/SymbolTable.mod
! 6ec97d3045588d43d3d5178b69836f74  gcc/m2/gm2-compiler/bnflex.def
! 48e6abddc0d62652f9f0db44650bff71  gcc/m2/gm2-compiler/bnflex.mod
! 04ffb53fa523a1dc2d595f086fa9635c  gcc/m2/gm2-compiler/cflex.def
! c3ba36c86c9047a833bd2b0b47ef5284  gcc/m2/gm2-compiler/gm2.mod
! 8ba367a63a76a10195c1e3524eff4a73  gcc/m2/gm2-compiler/gm2lcc.mod
! 4117c2b360c22dccf550dc9786f94aab  gcc/m2/gm2-compiler/gm2lgen.mod
! 191bf668932915adfcee672a6f0ce3ea  gcc/m2/gm2-compiler/gm2lorder.mod
! 17265b1bcee8a73fca95d3d8690deae7  gcc/m2/gm2-compiler/m2flex.def
! 4bd389913678ce073ee8f420f12ffe3a  gcc/m2/gm2-compiler/ppg.mod
! 4ff5d76d706ef1de0bbdca3ebaff7877  gcc/m2/gm2-gcc/README
! 499a15b622c6af4999b02c430a73ace8  gcc/m2/gm2-gcc/dynamicstrings.h
! 57fae1bf142ec9d2aee6280dfa9c672b  gcc/m2/gm2-gcc/gcc-consolidation.h
! 27cc43b86475a964a4b14f3b6a6addd4  gcc/m2/gm2-gcc/init.cc
! 4ed608a5d0c03b44ea2a84ed3d0a8a3c  gcc/m2/gm2-gcc/init.def
! 219088b0d7f3a32242195bbc256aefa3  gcc/m2/gm2-gcc/init.h
! 7f48d6038c5963e7ca3c21825b591a21  gcc/m2/gm2-gcc/m2assert.cc
! 45c5cf72ce3b9ff58b9a02e435817579  gcc/m2/gm2-gcc/m2assert.h
! d55ca9908a618c6305bad7a90a7750e6  gcc/m2/gm2-gcc/m2block.cc
! 60faa99a05f97d59f9100e93551c0cfb  gcc/m2/gm2-gcc/m2block.def
! ddbb6520640128398cb15340854403e4  gcc/m2/gm2-gcc/m2block.h
! f2f5d2fb98977cd7dc93f0d571397eaa  gcc/m2/gm2-gcc/m2builtins.cc
! b6aa358556386dcad6c450401ff60b27  gcc/m2/gm2-gcc/m2builtins.def
! 63e7edfbff4243884bca28db3008d64b  gcc/m2/gm2-gcc/m2builtins.h
! 774a04165b7d24ded8713bc46e3d7026  gcc/m2/gm2-gcc/m2color.cc
! 4b5bc747da30fc0781ddc92d6441484c  gcc/m2/gm2-gcc/m2color.def
! 53fb6cbb2452a44902a846825857b58c  gcc/m2/gm2-gcc/m2color.h
! c57e121a775e14b76a95e82093d85f9d  gcc/m2/gm2-gcc/m2configure.cc
! 7a97e0e6b69222bae75feb7e9df0e4cb  gcc/m2/gm2-gcc/m2configure.def
! cd981344174b70ad14e17659fd420028  gcc/m2/gm2-gcc/m2configure.h
! 784f3b6b4293180b31665b322d50ebac  gcc/m2/gm2-gcc/m2convert.cc
! b4ff6906713a2fcefde47fa9e049663e  gcc/m2/gm2-gcc/m2convert.def
! d542c4187688dd6d3f4c6203c7869b11  gcc/m2/gm2-gcc/m2convert.h
! 4c2d8ec63fcd25d2bd38e06d3435a09b  gcc/m2/gm2-gcc/m2decl.cc
! 15c57e1fcb9441186b286414cc733f94  gcc/m2/gm2-gcc/m2decl.def
! 587b7bbf38310c8a74b837671bfc167e  gcc/m2/gm2-gcc/m2decl.h
! c1a94ce50a8866aa560c9b3ede25d8e6  gcc/m2/gm2-gcc/m2except.cc
! 3efbf405680d327d9937aa805a7742c5  gcc/m2/gm2-gcc/m2except.def
! 6b4a0f8a1419d29ca2d51fcef30ed5f0  gcc/m2/gm2-gcc/m2except.h
! 209bc8e5ce9a1595213d353f8db678c0  gcc/m2/gm2-gcc/m2expr.cc
! 362d42409f143a7a1892bc03a9d016ce  gcc/m2/gm2-gcc/m2expr.def
! 3d3cfc8c39bfaed38ae17b604f312b6f  gcc/m2/gm2-gcc/m2expr.h
! cf93fc26a5bf7be652735df683ae8edf  gcc/m2/gm2-gcc/m2linemap.cc
! fde7d5e80857c6be234b63286ecb1ea4  gcc/m2/gm2-gcc/m2linemap.def
! 72d2ff1160fa43ac995a93cc8ed301d0  gcc/m2/gm2-gcc/m2linemap.h
! 2353c2dfcd7e35ff231e5870956a7753  gcc/m2/gm2-gcc/m2misc.cc
! 96d257b0686aed2488c2220326179b1a  gcc/m2/gm2-gcc/m2misc.def
! 9c14ffd57bc50055379d261c50e5d73f  gcc/m2/gm2-gcc/m2misc.h
! 8cf29d1a0f954532c2a906eabcf11918  gcc/m2/gm2-gcc/m2options.h
! 28b8ea1eeafbd26c37f273e970dea0f4  gcc/m2/gm2-gcc/m2range.h
! 65770b89c43cec2fe92da4d1fdc6286a  gcc/m2/gm2-gcc/m2search.h
! ffd8f690193f51f2f00e7780a069116a  gcc/m2/gm2-gcc/m2statement.cc
! a498f3beb102ba135377eb4a4d2c7f56  gcc/m2/gm2-gcc/m2statement.def
! cca8ade75d6f99c62d8cff0d4d4c5f20  gcc/m2/gm2-gcc/m2statement.h
! 9a4a59176339f415ec9422c6f1e4291b  gcc/m2/gm2-gcc/m2top.cc
! c881440990b8612061aefbc41ae86e11  gcc/m2/gm2-gcc/m2top.def
! 7aa8f8ad24b1dbf4f16434fe7ae3cc7e  gcc/m2/gm2-gcc/m2top.h
! 1c9f6764e9aa85fa5da4623e2b9583e7  gcc/m2/gm2-gcc/m2tree.cc
! c8b9167b2e1a459c25975df54f6ad69d  gcc/m2/gm2-gcc/m2tree.def
! bdfdc5ba787ad40d8a2a2e235d478f20  gcc/m2/gm2-gcc/m2tree.h
! 263ffead8408e2af85756981e002b365  gcc/m2/gm2-gcc/m2treelib.cc
! bcfd723553ab9f502170f74c8cf85c00  gcc/m2/gm2-gcc/m2treelib.def
! 37a5b2891af6d1dc87f386fa1c62ff06  gcc/m2/gm2-gcc/m2treelib.h
! 48d22f8604ee244c3d95f4e4aa40ce02  gcc/m2/gm2-gcc/m2type.cc
! 8aaff4f014eaa9f9c335f03e804b4b94  gcc/m2/gm2-gcc/m2type.def
! d2b3393b82a22a65e187048f6ce5e9e7  gcc/m2/gm2-gcc/m2type.h
! 87266491b24aefec8811d68e57ee1ff7  gcc/m2/gm2-gcc/rtegraph.cc
! e70b1c69debf47e6f7923cebf7843699  gcc/m2/gm2-gcc/rtegraph.h
! 7afbbe662e4478509b29062da1850077  gcc/m2/gm2-ici/M2Emit.mod
! d5db4a0704741e24958241fe74fd007c  gcc/m2/gm2-ici/README
! 594bedbd8dfe3c5833031592581a2e27  gcc/m2/gm2-ici/m2linemap.c
! 9220130272f85c698acb2436b170e23a  gcc/m2/gm2-internals.texi
! 97a0377fca54edb64087e78909d5cf4a  gcc/m2/gm2-lang.cc
! 9e3e42eb147c35d61614dda2127e4470  gcc/m2/gm2-lang.h
! 2b1d730bdeb600463475d3bb94f17f12  gcc/m2/gm2-libiberty/README
! a88120ec3b60093ac6912f4edc03a160  gcc/m2/gm2-libiberty/choosetemp.def
! 08b1af8b346a4101507fe5449aa90594  gcc/m2/gm2-libiberty/pexecute.def
! 01643905c0e70029c2998b574b428c77  gcc/m2/gm2-libs-ch/M2LINK.c
! 62fbe07131fda60be5a71a8773c3dcd4  gcc/m2/gm2-libs-ch/README
! 734efe8dbc1bf208a04780a2f4d0b5ee  gcc/m2/gm2-libs-ch/RTcodummy.c
! 4c23ee0664e8cc90e2c04c4294cdf52c  gcc/m2/gm2-libs-ch/RTintdummy.c
! 21007c25abe2ea4310e4466669579662  gcc/m2/gm2-libs-ch/Selective.c
! 771365e1cd0097131f892cc3fb26b99d  gcc/m2/gm2-libs-ch/SysExceptions.c
! b33e8d4f4a4c6a8f8f21ba3464eaca6e  gcc/m2/gm2-libs-ch/UnixArgs.cc
! c352ffc849effd08e1b1da0fa503ac65  gcc/m2/gm2-libs-ch/cgetopt.c
! 31371c90add5772a2e2016d855d90806  gcc/m2/gm2-libs-ch/choosetemp.c
! ff8a2617b17fc55dbef9a9a526e3a8a2  gcc/m2/gm2-libs-ch/dtoa.cc
! 4fb1a945e65ed40887aa53bd22cd9f5e  gcc/m2/gm2-libs-ch/errno.c
! 07850e8750e733cfc887a0b2663693e1  gcc/m2/gm2-libs-ch/host.c
! fd9a35cdc8d34a0949900b3ad66f1003  gcc/m2/gm2-libs-ch/ldtoa.cc
! 392a5f634e6407e4211d384bc66f8e52  gcc/m2/gm2-libs-ch/m2rts.h
! 1f51812febeee7828d6956e08bc7406d  gcc/m2/gm2-libs-ch/termios.c
! 32b71a5f8a0832777137b1c05e8ce8ae  gcc/m2/gm2-libs-ch/tools.c
! 6d722c73af61f2507acdceb5a0a956fc  gcc/m2/gm2-libs-ch/wrapc.c
! cb05aaea9b98cbf50ef543ae47225027  gcc/m2/gm2-libs-ch/xlibc.c
! 474297e2d68cc259f905256a40501f35  gcc/m2/gm2-libs-coroutines/Executive.def
! 19e2637ac51b44e91ecb192e6485e703  gcc/m2/gm2-libs-coroutines/Executive.mod
! daa222b92b774c3eecb1fd647a7ffbff  gcc/m2/gm2-libs-coroutines/KeyBoardLEDs.def
! b9ef554a88efbec2234a12ebc89a00db  gcc/m2/gm2-libs-coroutines/README.texi
! f03913f3a65afdb4cd8529b23d1c17da  gcc/m2/gm2-libs-coroutines/SYSTEM.def
! 7fee385db3bf61f156a868627b39c8d5  gcc/m2/gm2-libs-coroutines/SYSTEM.mod
! 9988bbc2924f5a3342c49dd7cd1a45ab  gcc/m2/gm2-libs-coroutines/TimerHandler.def
! 8fba133e638b617c2bca8e7b70011723  gcc/m2/gm2-libs-coroutines/TimerHandler.mod
! 389f62af2918433359e5d632b9cfa7cb  gcc/m2/gm2-libs-iso/COROUTINES.def
! 1ce5a2f15123c04a5edd246d59a99502  gcc/m2/gm2-libs-iso/COROUTINES.mod
! b40ce77b637c8356536cc7317b37bd15  gcc/m2/gm2-libs-iso/ChanConsts.def
! 2b7b7ca2fd53af6d1c975eb05d77563b  gcc/m2/gm2-libs-iso/ChanConsts.h
! 07891f41862136e515bcd288d36a0d75  gcc/m2/gm2-libs-iso/ChanConsts.mod
! 26d4fa17c751999369c175e64f4db462  gcc/m2/gm2-libs-iso/CharClass.def
! f92f96fdb6f9671f5eed0453b8ccbce3  gcc/m2/gm2-libs-iso/CharClass.mod
! 1cb70d91cafabd98549391d7aa50e766  gcc/m2/gm2-libs-iso/ClientSocket.def
! fcb85ae535f0db7e0551f6643d404547  gcc/m2/gm2-libs-iso/ClientSocket.mod
! 7e412d2d4dd38bc7acae6ef37f58a343  gcc/m2/gm2-libs-iso/ComplexMath.def
! ee603d52d96aea66e114e08a3c1824b5  gcc/m2/gm2-libs-iso/ComplexMath.mod
! 02d3eb0359f9576ab2e3feb346291007  gcc/m2/gm2-libs-iso/ConvStringLong.def
! 2887e06a4139232b8a0d55f87b064f6e  gcc/m2/gm2-libs-iso/ConvStringLong.mod
! a896ebfc012ad99ac99c9eaa55b95c01  gcc/m2/gm2-libs-iso/ConvStringReal.def
! bd0bebd2bff70c5deb8038a4b3e78ecc  gcc/m2/gm2-libs-iso/ConvStringReal.mod
! b61783ff6abc22b746e6979c0bcee2dd  gcc/m2/gm2-libs-iso/ConvTypes.def
! 9747e5e33c6180564d5c6fd89707034b  gcc/m2/gm2-libs-iso/ConvTypes.mod
! 06b39eaf4e88d493000c7360c310ba97  gcc/m2/gm2-libs-iso/EXCEPTIONS.def
! 193f5d82b16ff7824721a525ae53ddaf  gcc/m2/gm2-libs-iso/EXCEPTIONS.mod
! 8bb04ae6a784c997e0db16bc6539a867  gcc/m2/gm2-libs-iso/ErrnoCategory.def
! c9c5e6e4fbd4b365b1738fb97167c772  gcc/m2/gm2-libs-iso/GeneralUserExceptions.def
! 25be7abf5cfcd988b97f0b3c49b7fd8a  gcc/m2/gm2-libs-iso/GeneralUserExceptions.mod
! 3be4b03912f03e5164671e278a4ba6a1  gcc/m2/gm2-libs-iso/IOChan.def
! 367f22e00cd2294a86ddbae5150e23b3  gcc/m2/gm2-libs-iso/IOChan.mod
! 58b81b1b97143b27dfd3d5c225da285c  gcc/m2/gm2-libs-iso/IOConsts.def
! 80ae9dcbb3d552360c1c6d66ac1257a7  gcc/m2/gm2-libs-iso/IOConsts.mod
! 3d1e4b84b179c15fe8b1fc60b7d46e6c  gcc/m2/gm2-libs-iso/IOLink.def
! f9b3e77903070b43220b8adb591490d0  gcc/m2/gm2-libs-iso/IOLink.mod
! e5ea2ed3bf2ca24aeda732fb92f74111  gcc/m2/gm2-libs-iso/IOResult.def
! 0c67eff84baab529efc805107a489bb7  gcc/m2/gm2-libs-iso/IOResult.mod
! 5c708f49fa403c8243782ec5145e99ca  gcc/m2/gm2-libs-iso/LongComplexMath.def
! 2b324c68c37cb3f5ea8b11bb2393fa31  gcc/m2/gm2-libs-iso/LongComplexMath.mod
! 018ee564b5b6d66051cf2ee4c7aea2fc  gcc/m2/gm2-libs-iso/LongConv.def
! dad589a3a3b7729571905838c79ba2bc  gcc/m2/gm2-libs-iso/LongConv.mod
! 4869ce48d2aff46481adb5534764774b  gcc/m2/gm2-libs-iso/LongIO.def
! 55dcdd221dc4f65d2dd1a6e03dc3c70c  gcc/m2/gm2-libs-iso/LongIO.mod
! 33a10b599c8fdf13d8d4e1b9b4a2ffc3  gcc/m2/gm2-libs-iso/LongMath.def
! 50f9902d936149e291e00e0f27e45a92  gcc/m2/gm2-libs-iso/LongMath.mod
! 8ad351822e38056538ef1e9efe8b5cac  gcc/m2/gm2-libs-iso/LongStr.def
! 08b19f451cf3fbd81aa9a5a4338c1a41  gcc/m2/gm2-libs-iso/LongStr.mod
! f6937d6aa1bc52ed8e124f14e75844a4  gcc/m2/gm2-libs-iso/LongWholeIO.def
! 5a7235557c0bb7eb0fe53b09e1496f57  gcc/m2/gm2-libs-iso/LongWholeIO.mod
! 34685287385135c3fbaa60ba1d894854  gcc/m2/gm2-libs-iso/LowLong.def
! 5d2dcbf01a1b51ef8e87f3dd5eb6b84c  gcc/m2/gm2-libs-iso/LowLong.mod
! 78be5cf8b1f715e70e0c61838c761d10  gcc/m2/gm2-libs-iso/LowReal.def
! 0716fc8c45e79b6e7037e7a85dcdb823  gcc/m2/gm2-libs-iso/LowReal.mod
! a095ee6f8c9af1f7a8acb6e86639d490  gcc/m2/gm2-libs-iso/LowShort.def
! ed519399aac96d1dcc87744ba6349c94  gcc/m2/gm2-libs-iso/LowShort.mod
! e23b19886a6564119fe2b28e7d21f270  gcc/m2/gm2-libs-iso/M2EXCEPTION.def
! bd676c47a745fa9ad01bff1fc8a08344  gcc/m2/gm2-libs-iso/M2EXCEPTION.mod
! c3241a143d3ceb65a623c84684a46e06  gcc/m2/gm2-libs-iso/M2RTS.def
! 695bfb5ced163c8a1f9891606b77155a  gcc/m2/gm2-libs-iso/M2RTS.mod
! d9d3e78b70105ed5222b292de56157da  gcc/m2/gm2-libs-iso/MemStream.def
! 96df9af35093aa8f53a28b9bfcb4e59e  gcc/m2/gm2-libs-iso/MemStream.mod
! 76392741be38999673a9d8f84981146c  gcc/m2/gm2-libs-iso/Preemptive.def
! 9757b1af464931cf4576103887b8e48d  gcc/m2/gm2-libs-iso/Preemptive.mod
! 617142b6611a41ce58eb9ae27d709342  gcc/m2/gm2-libs-iso/Processes.def
! def9d56258b4440b2b8897a29843ac64  gcc/m2/gm2-libs-iso/Processes.mod
! f99d0ab4d95b7c909aebc4eee8923beb  gcc/m2/gm2-libs-iso/ProgramArgs.def
! 3ae6e54d8113a24947272673f640b939  gcc/m2/gm2-libs-iso/ProgramArgs.mod
! 41c8e4676f8d1d53b2ebcd3fa4228e35  gcc/m2/gm2-libs-iso/README.texi
! 6009cc9267f2f6c80d066f2331211b12  gcc/m2/gm2-libs-iso/RTco.def
! a7ee6263f890b4331fa80fdd78dc5f55  gcc/m2/gm2-libs-iso/RTdata.def
! 3d3e8d1bdd2942f1a970f9e6798a9c73  gcc/m2/gm2-libs-iso/RTdata.mod
! 9c81a48f6bda0bc411fa1701a38167b3  gcc/m2/gm2-libs-iso/RTentity.def
! 06ec407e2c2a4f33c830308ebe9bb815  gcc/m2/gm2-libs-iso/RTentity.mod
! 7864a4094d3257ae4a3114e9ae01532a  gcc/m2/gm2-libs-iso/RTfio.def
! 0d1cb14e2cab5d84c3af2785f995a84a  gcc/m2/gm2-libs-iso/RTfio.mod
! a97510439fd12aed085753d9bbf3429e  gcc/m2/gm2-libs-iso/RTgen.def
! 40a39336ec2af095c24c898b04126507  gcc/m2/gm2-libs-iso/RTgen.mod
! 89638440b66d0a21eea1fc4d27ba3bba  gcc/m2/gm2-libs-iso/RTgenif.def
! 8ab1ee709c358a302d2c5146ebdc310e  gcc/m2/gm2-libs-iso/RTgenif.mod
! b4454194bee0c3848e6822fb4fd3f9c5  gcc/m2/gm2-libs-iso/RTio.def
! 646fcde9ce218d466af3948ab5e5c9ac  gcc/m2/gm2-libs-iso/RTio.mod
! 7784060b9df612c1f0eca8d5ce3d5aee  gcc/m2/gm2-libs-iso/RandomNumber.def
! be35a2dca23ded4a483961d33770d79c  gcc/m2/gm2-libs-iso/RandomNumber.mod
! 40277b3de34e1a5d9df0b7cc45c14d15  gcc/m2/gm2-libs-iso/RawIO.def
! 98166f7556e00a0c362563e0e99621e8  gcc/m2/gm2-libs-iso/RawIO.mod
! df153efe4a594ad9e9d8cca8b83c8df2  gcc/m2/gm2-libs-iso/RealConv.def
! 4c60347e26ca3232bdc5f3990a11b37f  gcc/m2/gm2-libs-iso/RealConv.mod
! eba391eef02297c03d7a651d6073fc82  gcc/m2/gm2-libs-iso/RealIO.def
! b47a32741f8a11ffe7091f7ca47dd59a  gcc/m2/gm2-libs-iso/RealIO.mod
! 26b3c4e00ec2554e4506a35049bc3f0c  gcc/m2/gm2-libs-iso/RealMath.def
! d5d58ea1bba5453b6e79d96cc359be83  gcc/m2/gm2-libs-iso/RealMath.mod
! a97765c0f82b53bb50acb8e67e5374e6  gcc/m2/gm2-libs-iso/RealStr.def
! 9051c36d682bfc3f0a7c153072abf428  gcc/m2/gm2-libs-iso/RealStr.mod
! 44b3b908b90d74d002a06bfb54262671  gcc/m2/gm2-libs-iso/RndFile.def
! abfc76b14934386a7f310a6ffdb19689  gcc/m2/gm2-libs-iso/RndFile.mod
! 227a83f272114ad4e64c8f3c9ef346fd  gcc/m2/gm2-libs-iso/SIOResult.def
! 2c2e9419b7bfb0536dfaee09e92051cc  gcc/m2/gm2-libs-iso/SIOResult.mod
! fd1983de497a0e10765806998b96e7a1  gcc/m2/gm2-libs-iso/SLongIO.def
! f8ce1571926cabeb86a5b6ded82d4f45  gcc/m2/gm2-libs-iso/SLongIO.mod
! 8536136dcd21b080d4ae620fdd370e5c  gcc/m2/gm2-libs-iso/SLongWholeIO.def
! 514bb46ff5901795569be50eabedd7da  gcc/m2/gm2-libs-iso/SLongWholeIO.mod
! 5d7062666ffc5c5db7890b0b53f21387  gcc/m2/gm2-libs-iso/SRawIO.def
! e267d7385d13ca0a6fe03b23299f287d  gcc/m2/gm2-libs-iso/SRawIO.mod
! 29dc788abe06750b87ad7f8c7605ddad  gcc/m2/gm2-libs-iso/SRealIO.def
! 4cb82593db6f2e94f23cc70a6048722f  gcc/m2/gm2-libs-iso/SRealIO.mod
! cdb04ed3bdb97c441d44ffec71c70510  gcc/m2/gm2-libs-iso/SShortIO.def
! cba1eb23c45bcd4fb755ad65d6096a50  gcc/m2/gm2-libs-iso/SShortIO.mod
! c620485b3e9c2f8998e4c33c6e019a54  gcc/m2/gm2-libs-iso/SShortWholeIO.def
! e58bc411f62cd2119cf71526deb8d56c  gcc/m2/gm2-libs-iso/SShortWholeIO.mod
! 037039b67d035c6da1fe676b93e98273  gcc/m2/gm2-libs-iso/STextIO.def
! 8e3d0b1c7aaf67707592638818abe66d  gcc/m2/gm2-libs-iso/STextIO.mod
! 4806b44e4a85776e1d5015f2013974a3  gcc/m2/gm2-libs-iso/SWholeIO.def
! 7811b754b6fe0f4d0d624b1295149aad  gcc/m2/gm2-libs-iso/SWholeIO.mod
! e40fdae4d0992bbfc83c127235813e82  gcc/m2/gm2-libs-iso/SYSTEM.def
! 3800bab3620532995468ba194f646b68  gcc/m2/gm2-libs-iso/SYSTEM.mod
! cb047c38f5ef851681b19de3902ffebe  gcc/m2/gm2-libs-iso/Semaphores.def
! 39599a5c38d59d5fce374bac8ae1e98d  gcc/m2/gm2-libs-iso/Semaphores.mod
! 0123a3eb7dc065b38800f7157f415c27  gcc/m2/gm2-libs-iso/SeqFile.def
! c9b5f3c956e7f3187223d8cf601b6106  gcc/m2/gm2-libs-iso/SeqFile.mod
! 5237862b61a823e2927510fbb25fff2e  gcc/m2/gm2-libs-iso/ShortComplexMath.def
! 8f56c7947659859465159f919073386a  gcc/m2/gm2-libs-iso/ShortComplexMath.mod
! 93009686521560cc8f268f51441cf1d1  gcc/m2/gm2-libs-iso/ShortIO.def
! 395e988ac12137c93c66946e5dc8b81c  gcc/m2/gm2-libs-iso/ShortIO.mod
! 01687494d7989b9a32645dcab016322c  gcc/m2/gm2-libs-iso/ShortWholeIO.def
! 4be179f43c7544de70d488ba0bef7fa4  gcc/m2/gm2-libs-iso/ShortWholeIO.mod
! 2844178f7daffa687028ca7e3fb57971  gcc/m2/gm2-libs-iso/SimpleCipher.def
! 18d9ea25e9aadc24e2e1f4cccc37524f  gcc/m2/gm2-libs-iso/SimpleCipher.mod
! 8b8a01b2a2ce71ef914ac2c6cc8c3b75  gcc/m2/gm2-libs-iso/StdChans.def
! 5fca33f7f7d4bdf7d3ceb6c6b0624731  gcc/m2/gm2-libs-iso/StdChans.mod
! e2ce5b09829edfcec26970649d78d4dc  gcc/m2/gm2-libs-iso/Storage.def
! 53199f76051c3206fd7e0dcb6bb2aee8  gcc/m2/gm2-libs-iso/Storage.mod
! be819007a2908ba602c8757b5d53a335  gcc/m2/gm2-libs-iso/StreamFile.def
! aab1f63933d28147159620ba6ee38c88  gcc/m2/gm2-libs-iso/StreamFile.mod
! 770d687f2e85505cb261597434d7efd2  gcc/m2/gm2-libs-iso/StringChan.def
! 16e0c5868d4112cfa5d7e5abb53f80d3  gcc/m2/gm2-libs-iso/StringChan.mod
! 8f11555f792697e6e70bdabf60c96447  gcc/m2/gm2-libs-iso/Strings.def
! 4b0be966d9adae1964a45a151e8e4f43  gcc/m2/gm2-libs-iso/Strings.mod
! decb080d52ed383b759f5da725dcc91f  gcc/m2/gm2-libs-iso/SysClock.def
! ad97e28b2b5f5901bab3f5981f96b2fe  gcc/m2/gm2-libs-iso/SysClock.mod
! 62d31afe6dbffd3c51bcaa5af7575bcd  gcc/m2/gm2-libs-iso/TERMINATION.def
! d79b7c04c72fcfe51a7aa9eb2ba3b755  gcc/m2/gm2-libs-iso/TERMINATION.mod
! 665eef372cb297013ff37bc80a4eb66d  gcc/m2/gm2-libs-iso/TermFile.def
! e8f69e9c8ab9b95b79dbe73d127ab56a  gcc/m2/gm2-libs-iso/TermFile.mod
! 3e80217d87e3e0aa014739829f7cc23a  gcc/m2/gm2-libs-iso/TextIO.def
! 5f14b6cdf781046b36b503efa9730a6d  gcc/m2/gm2-libs-iso/TextIO.mod
! 63a72ee284f83e558fb34e32fe4cc1fb  gcc/m2/gm2-libs-iso/WholeConv.def
! 7bff7d6ea229e2a85acda75fc121d965  gcc/m2/gm2-libs-iso/WholeConv.mod
! 108023618e22cb8631ac14d0bf21510a  gcc/m2/gm2-libs-iso/WholeIO.def
! aae3176d6c1a767dd377d504977806a0  gcc/m2/gm2-libs-iso/WholeIO.mod
! a27fdd32dbd31b2e992eceaf29b2fe76  gcc/m2/gm2-libs-iso/WholeStr.def
! be3b1d273b1a28f7dd7dae905b63ecef  gcc/m2/gm2-libs-iso/WholeStr.mod
! c8686e39fa3d904d0ba435489fa135c1  gcc/m2/gm2-libs-iso/wrapsock.def
! e90d87cc30a33cfcb39979016544d2cb  gcc/m2/gm2-libs-iso/wraptime.def
! a40ff2314d621e42c52067023b1441d9  gcc/m2/gm2-libs-log/BitBlockOps.def
! b95eef0e55f925e7cf6aae032c6612f6  gcc/m2/gm2-libs-log/BitBlockOps.mod
! 61f6642670975f9888e71e93fb979c66  gcc/m2/gm2-libs-log/BitByteOps.def
! b9973d18ccc9f9781b5d4f66e8401a3e  gcc/m2/gm2-libs-log/BitByteOps.mod
! 9becaff1b1d92e657af9ae6e5197d7aa  gcc/m2/gm2-libs-log/BitWordOps.def
! 16056e1ed48f8127537fbe29ddbad072  gcc/m2/gm2-libs-log/BitWordOps.mod
! 0341daabeb4dcd077d9fd287afd80484  gcc/m2/gm2-libs-log/BlockOps.def
! 0b90e379bfd4b74e5d65ab30afae0662  gcc/m2/gm2-libs-log/BlockOps.mod
! ea654933af37db956bfb3db947cac959  gcc/m2/gm2-libs-log/Break.c
! 9f92c8d8394051f70e33c177eb4c2e5a  gcc/m2/gm2-libs-log/Break.def
! 7a2ad7522efc8c3ddabd50a1462a016a  gcc/m2/gm2-libs-log/CardinalIO.def
! bfb46074251e5e74d6340f9e554e3fbb  gcc/m2/gm2-libs-log/CardinalIO.mod
! 53c22a858c8ac720771544d47f17d647  gcc/m2/gm2-libs-log/Conversions.def
! bab12c267813f8ee5a7ae171bca66036  gcc/m2/gm2-libs-log/Conversions.mod
! dc9bba75d9a92edb050f69fd8aaf5c85  gcc/m2/gm2-libs-log/DebugPMD.def
! a8409dad9081044a3d8e2b1c06f23dff  gcc/m2/gm2-libs-log/DebugPMD.mod
! fd28cb0bcff1ec71b3b5a85e79f186f3  gcc/m2/gm2-libs-log/DebugTrace.def
! 8a21f0808f8f819064e189b4de17f58b  gcc/m2/gm2-libs-log/DebugTrace.mod
! 8590197f6e27c4c166e238ef35e6df5c  gcc/m2/gm2-libs-log/Delay.def
! c9c6e9eb1fb5fcb71a7d65a422bfdb3b  gcc/m2/gm2-libs-log/Delay.mod
! 99362fac95bd4c484922b2ae0b5f3bb6  gcc/m2/gm2-libs-log/Display.def
! 31ed21d2624689cdf444781e7bdeb833  gcc/m2/gm2-libs-log/Display.mod
! 230fcedd3a4a8c05e6908ca1d0a2e117  gcc/m2/gm2-libs-log/ErrorCode.def
! 43fa9086cd33bf7cdefb1a8bcddac6a0  gcc/m2/gm2-libs-log/ErrorCode.mod
! 5a5bfb94cd7a4406abf80643240b43fc  gcc/m2/gm2-libs-log/FileSystem.def
! 8ad4b637a0915b0fbdafc5901e20bdf1  gcc/m2/gm2-libs-log/FileSystem.mod
! 367f88bed3d144584162f12bb1f73dc3  gcc/m2/gm2-libs-log/FloatingUtilities.def
! 9a798d3114264ab9363bba62ad896b4d  gcc/m2/gm2-libs-log/FloatingUtilities.mod
! 5d0818ba01ffc7c06dc2bf73b2beb133  gcc/m2/gm2-libs-log/InOut.def
! 2acebf4db36f11abd8f9e83df000fd93  gcc/m2/gm2-libs-log/InOut.mod
! 9ad4dcad97d9bd7ed600f8ea204564d9  gcc/m2/gm2-libs-log/Keyboard.def
! 32038d8013689fa6de6f299f424dea6e  gcc/m2/gm2-libs-log/Keyboard.mod
! 999be8115fe82e6f09c050882316a2d8  gcc/m2/gm2-libs-log/LongIO.def
! 08f90c812ca9b3f675eae673094a3738  gcc/m2/gm2-libs-log/LongIO.mod
! 5da6f8268c73c569637b1e6dcb806e4b  gcc/m2/gm2-libs-log/NumberConversion.def
! 4fef5f5553805bcb0b12b76ffb6038de  gcc/m2/gm2-libs-log/NumberConversion.mod
! 0c6088dd608aa8f1f1d64dbb43a3cda1  gcc/m2/gm2-libs-log/README.texi
! cdbc71e11513e23513283c7624065c4e  gcc/m2/gm2-libs-log/Random.def
! 1258e8b2800c01043086285b854d426f  gcc/m2/gm2-libs-log/Random.mod
! b4dac9717f90735a558983e363307968  gcc/m2/gm2-libs-log/RealConversions.def
! 697c484b5ffb416add4d2354b6487d59  gcc/m2/gm2-libs-log/RealConversions.mod
! 9b6ec82a722608c4f416f8a126032925  gcc/m2/gm2-libs-log/RealInOut.def
! 09ff8ea1d715d6c6f4ed39737a1fcb29  gcc/m2/gm2-libs-log/RealInOut.mod
! d656b0a428f03a798255297b30204832  gcc/m2/gm2-libs-log/Strings.def
! 02f07db4684758971417be90f1be1627  gcc/m2/gm2-libs-log/Strings.mod
! 71bcaaee63e8c5cdd94f7ee7385e284f  gcc/m2/gm2-libs-log/Termbase.def
! 7c5e08d65e9614a0a95196469676cc02  gcc/m2/gm2-libs-log/Termbase.mod
! eae744ece053e82400d5afffda9d50e0  gcc/m2/gm2-libs-log/Terminal.def
! 54b3e3f865bcff9abf75d2541f8fe2fe  gcc/m2/gm2-libs-log/Terminal.mod
! 036ee20c46aed13fc4d1da4d5e30d4eb  gcc/m2/gm2-libs-log/TimeDate.def
! 6d924625fa0bc252af84aaa44007fd35  gcc/m2/gm2-libs-log/TimeDate.mod
! 566e49607d4418b3bcfb2357c60b3054  gcc/m2/gm2-libs-min/M2RTS.def
! 22d8e304aa8f3a39c576dfccc2136541  gcc/m2/gm2-libs-min/M2RTS.mod
! 24ea50c3ef65a2564362ef226f56dcf3  gcc/m2/gm2-libs-min/SYSTEM.def
! fbcaf73aa552f0ac2f32a85231824c14  gcc/m2/gm2-libs-min/SYSTEM.mod
! 32a346e26c214d5efcb9c1fdc3aeeeaa  gcc/m2/gm2-libs-min/libc.c
! a2aeae63702e083dfb7bc028c6e1ebe4  gcc/m2/gm2-libs-min/libc.def
! 6cc0cc31764129365fb953094ddc9145  gcc/m2/gm2-libs/ASCII.def
! 94b8e018933a269ea7755fe56290ab59  gcc/m2/gm2-libs/ASCII.mod
! 478ce000b276aaf00d81533709abf1e8  gcc/m2/gm2-libs/Args.def
! e3fccb9235824f3e227c92d0e2d81a05  gcc/m2/gm2-libs/Args.mod
! 6f43413c26450f72cfd1ce607f5a44be  gcc/m2/gm2-libs/Assertion.def
! 383d512a4b4e8af61d0b8993b95b983b  gcc/m2/gm2-libs/Assertion.mod
! abe79247af7c51ae7f4961cd80053d92  gcc/m2/gm2-libs/Break.def
! 2ed135bc7b634d008c29f0723a3edd09  gcc/m2/gm2-libs/Break.mod
! ab179f2fd5d82f05cb777b1a6c500247  gcc/m2/gm2-libs/Builtins.def
! 6d3287f825899303b45aaa326d28e9d9  gcc/m2/gm2-libs/Builtins.mod
! 1d35a2f734ccfcc3e1da57095bae966e  gcc/m2/gm2-libs/COROUTINES.def
! 7aa623b79d8ae2cffe294fb038305731  gcc/m2/gm2-libs/COROUTINES.mod
! d2683ec90a5cf945a08811f3dbdf02b7  gcc/m2/gm2-libs/CmdArgs.def
! 18608f793ad1e72f6c61aa6c17169010  gcc/m2/gm2-libs/CmdArgs.mod
! 64b5538da8ef57c24f003b89eade6aea  gcc/m2/gm2-libs/Debug.def
! d173462bca4d41927b0ab36c5ae08dfe  gcc/m2/gm2-libs/Debug.mod
! 8913e71a5ef3ce1658bef00741a2b339  gcc/m2/gm2-libs/DynamicStrings.def
! 00cde8bad6bba2bd01f58e4e0c136c64  gcc/m2/gm2-libs/DynamicStrings.mod
! adcc1d27331453eaf3d19b4ff6d3c1ba  gcc/m2/gm2-libs/Environment.def
! 2f27faf82e2a995767655e4cb2715dfd  gcc/m2/gm2-libs/Environment.mod
! be75460f688cf4a889a53671132520e7  gcc/m2/gm2-libs/FIO.def
! edac0fdcfd4770c1c16400439bd04514  gcc/m2/gm2-libs/FIO.mod
! 68e0a0d32bd9639121daf1001db9dd05  gcc/m2/gm2-libs/FormatStrings.def
! 9c941c9a4855e870fd28651647b745fd  gcc/m2/gm2-libs/FormatStrings.mod
! 78d829b48ef00b8a8d2c016b770628dd  gcc/m2/gm2-libs/FpuIO.def
! 18040d0c61f408ead5dde44832fec08e  gcc/m2/gm2-libs/FpuIO.mod
! 9b0045f280b51aee9c91ff00622f2eb1  gcc/m2/gm2-libs/GetOpt.def
! bc1a4b60d30af5258818aeb6b9419a58  gcc/m2/gm2-libs/GetOpt.mod
! c10897b480022c6448b615008c9dd188  gcc/m2/gm2-libs/IO.def
! 33e67c89a0e5b347b4b8b1255caefad4  gcc/m2/gm2-libs/IO.mod
! afd90ce364910d91fa384a463a1dcab9  gcc/m2/gm2-libs/Indexing.def
! 7f61d60bfe7564507a22f89eeedf2a26  gcc/m2/gm2-libs/Indexing.mod
! 25611159e0f0b8fcefb26d6d64200c77  gcc/m2/gm2-libs/LMathLib0.def
! 94f4c8c4aa7791f7db7f59365e8e8c6b  gcc/m2/gm2-libs/LMathLib0.mod
! 9c44b633baf1fbff30ae84fd240f9361  gcc/m2/gm2-libs/LegacyReal.def
! a3c8371b1b610828abbe89f0cb3866d7  gcc/m2/gm2-libs/LegacyReal.mod
! 84571cff693fb9fb593d29dacfe88559  gcc/m2/gm2-libs/M2Dependent.def
! d9ddfd1d9bbaf6fa9c3e1ce86144b370  gcc/m2/gm2-libs/M2Dependent.mod
! 78291d36f3d14a83a3dd6a3ed2687a99  gcc/m2/gm2-libs/M2EXCEPTION.def
! 5d02fc7f3ba450684d735a822771f5e0  gcc/m2/gm2-libs/M2EXCEPTION.mod
! 86579db60dd6710d616f8fe6988854d3  gcc/m2/gm2-libs/M2RTS.def
! 2f80c852d9c34a7a4e2ff908918f3dd5  gcc/m2/gm2-libs/M2RTS.mod
! 62c246a6d1111d0144d69f90f7bb9514  gcc/m2/gm2-libs/MathLib0.def
! 3d13293b0ff7d7beb526edfe6d9c359e  gcc/m2/gm2-libs/MathLib0.mod
! 557f374c349973c2532b0896d477c191  gcc/m2/gm2-libs/MemUtils.def
! 02b38b00454945d242b08a85838ceefb  gcc/m2/gm2-libs/MemUtils.mod
! 10d5247bfc400757ff1a7a188c449d79  gcc/m2/gm2-libs/NumberIO.def
! 8372741b863dee101bf838608bee11e4  gcc/m2/gm2-libs/NumberIO.mod
! 25694e08ef3825920e753aed21cd91ee  gcc/m2/gm2-libs/OptLib.def
! c5a540d913c90e594b679d96732a7dc6  gcc/m2/gm2-libs/OptLib.mod
! ae3185607e9e42d92a2680eeb371cbed  gcc/m2/gm2-libs/PushBackInput.def
! 3f41c1c3a2e90f8bec972d4297fab880  gcc/m2/gm2-libs/PushBackInput.mod
! a4136c585305353c2519c5ac772f7886  gcc/m2/gm2-libs/README.texi
! ea4ae8ec5e18f2ccda802c4b57ea46a2  gcc/m2/gm2-libs/RTExceptions.def
! b82f893f1f94548a7445594bf965e94f  gcc/m2/gm2-libs/RTExceptions.mod
! 200d7111b0c08d747aed63ba754cd031  gcc/m2/gm2-libs/RTint.def
! a8c9b4b97ddbf4293aa0befc8d5495a4  gcc/m2/gm2-libs/RTint.mod
! b578ba32c78a74f33d1bc75eaab2d00f  gcc/m2/gm2-libs/SArgs.def
! ecb0abab8c87925973c3b93b46e09a37  gcc/m2/gm2-libs/SArgs.mod
! 827b79ad4087a3aa78582feccabbb2c8  gcc/m2/gm2-libs/SCmdArgs.def
! 0434761287c4f1eb1e616bc141a1cf15  gcc/m2/gm2-libs/SCmdArgs.mod
! bc056d9fdc977d98bdc69e899f564ccb  gcc/m2/gm2-libs/SEnvironment.def
! c11d9bc4499857c7a2d4f9d2fc43d287  gcc/m2/gm2-libs/SEnvironment.mod
! 740dcaac91ef3d4011d5c5cc89ffae5f  gcc/m2/gm2-libs/SFIO.def
! c50df2161c949d3e37655365f593ff2d  gcc/m2/gm2-libs/SFIO.mod
! 29287208cd3cacce6ccfdcc02479b5c6  gcc/m2/gm2-libs/SMathLib0.def
! 42df01ee12105bcfe33f8447ff6f95ce  gcc/m2/gm2-libs/SMathLib0.mod
! a3caa384740792669108141b5f3b6e17  gcc/m2/gm2-libs/SYSTEM.def
! 3d3dcc44cef278adbd28042511a387f2  gcc/m2/gm2-libs/SYSTEM.mod
! cd7269471a44292dc52b58b8fd5c0cd5  gcc/m2/gm2-libs/Scan.def
! e06ba5bcef9eed65a8333152bfcf4376  gcc/m2/gm2-libs/Scan.mod
! 1cce92414550ab056dafd35055018d02  gcc/m2/gm2-libs/Selective.def
! 5ee500f820b27a7c4699d2df2b6f0682  gcc/m2/gm2-libs/StdIO.def
! 18d25dc118dd1f696d541a6db56b1ae4  gcc/m2/gm2-libs/StdIO.mod
! 9ebbbfdaaeee39bd25e2069d15f53202  gcc/m2/gm2-libs/Storage.def
! 74a77257197f1102b4a70e5bac60656d  gcc/m2/gm2-libs/Storage.mod
! 9443f1aa22aa45d84cb4eb28d147bc0c  gcc/m2/gm2-libs/StrCase.def
! 3a412029de35c678d43c039642f9e53e  gcc/m2/gm2-libs/StrCase.mod
! 2c5f97267446a2b1952486573e6059ff  gcc/m2/gm2-libs/StrIO.def
! 46ab7662184a41dce9b3bb3948715c23  gcc/m2/gm2-libs/StrIO.mod
! a2612c797af3b3bc8b6bb6ae49f593f4  gcc/m2/gm2-libs/StrLib.def
! 0de2a4029cfe9e1ca579c68f9596e248  gcc/m2/gm2-libs/StrLib.mod
! 4ae21fd21a1d4c9ab3cfe7ab6bdef2fe  gcc/m2/gm2-libs/StringConvert.def
! a5b9b05862e5486e1ff8e626c0a607f9  gcc/m2/gm2-libs/StringConvert.mod
! 698f5d82762b704fda655e49f02976f3  gcc/m2/gm2-libs/SysExceptions.def
! 29546e7f4e94504d158492ccb766891e  gcc/m2/gm2-libs/SysStorage.def
! e476e69a624cc019b29d03a0b0fd27c5  gcc/m2/gm2-libs/SysStorage.mod
! 050c8aad640c3ae15c9caf8034ae01cd  gcc/m2/gm2-libs/TimeString.def
! 527fcec80d38e115b2be209ca0715727  gcc/m2/gm2-libs/TimeString.mod
! 987e1ca20f9ebe6e09445caf454488d7  gcc/m2/gm2-libs/UnixArgs.def
! 851d5a6cdf1050d6ea527165112ee5b0  gcc/m2/gm2-libs/cbuiltin.def
! 55ca8d6dccef5c8e25c905db1bbf4ff6  gcc/m2/gm2-libs/cgetopt.def
! ddb30d1656f81b105ea85cd9320d03ca  gcc/m2/gm2-libs/config-host
! 01f8d0d7843920a5243b1082bc6b26a8  gcc/m2/gm2-libs/config-host.in
! e30a8257687056afaefe36ebbb18c783  gcc/m2/gm2-libs/cxxabi.def
! 4b2fa034c3f3e5c5069e63acf89a95fc  gcc/m2/gm2-libs/dtoa.def
! 887ca5008b260d5ab6411d36e1c62f6f  gcc/m2/gm2-libs/errno.def
! 3dd9948901dd61e721a048e750bee91e  gcc/m2/gm2-libs/gdbif.def
! 438a7b090a73d8198c9d428d08a2a025  gcc/m2/gm2-libs/gdbif.mod
! 367a759a235a1fba4e8b412bee35c211  gcc/m2/gm2-libs/gm2-libs-host.h.in
! ebfee068547d24bec77889574ce03cb3  gcc/m2/gm2-libs/ldtoa.def
! 601d2f7914f36607b76a4d9ff30a14ba  gcc/m2/gm2-libs/libc.def
! 673ac738d27feb179e3a6bf66bcf239a  gcc/m2/gm2-libs/libm.def
! 23d6611e3c8ba8ad77a9c8572a9df86e  gcc/m2/gm2-libs/sckt.def
! f5e3505ca9e35809b0e816412f6646b2  gcc/m2/gm2-libs/termios.def
! 2c9b4a2c42506275158fb4edb23fd384  gcc/m2/gm2-libs/wrapc.def
! ccaa683ba714cdbeafc186000b6c8dd1  gcc/m2/gm2config.aci.in
! 271930c30354b62b9b8260f4262366e9  gcc/m2/gm2spec.cc
! 40898863b66a4914ce1a79d2636ded72  gcc/m2/gm2version.h
! b773646bf260ce040f22648140172958  gcc/m2/images/LICENSE.IMG
! 28628f59c0ab73240ccd25e2be0bcb6a  gcc/m2/images/gnu.eps
! d41d8cd98f00b204e9800998ecf8427e  gcc/m2/images/gnupng
! d02bb7b852c2149c474702f929b72f2d  gcc/m2/init/README
! 2bec82e138e801417f0fbaa5609096b6  gcc/m2/init/mcinit
! b6886c959d02079a74d01380ece89bd4  gcc/m2/init/ppginit
! 134ee7ee8b3ce07dfcc9a49f07931a6e  gcc/m2/lang-specs.h
! 2f7cdcd252396f4ea8ba72a0c34b800f  gcc/m2/lang.opt
! 4bc145ddc086daeb8716415130839103  gcc/m2/m2-tree.def
! 5916f095ac4ecbed229327a97396debd  gcc/m2/m2-tree.h
! d35ce9754008f6579adc7eed275e8ab3  gcc/m2/m2.flex
! 2102606ee54baae50d1c6a8d12764045  gcc/m2/m2pp.cc
! 3be1afa2f5f01bab267841426102eff8  gcc/m2/m2pp.h
! d529b8158b03d8e0825ba5673228ef6f  gcc/m2/mc-boot-ch/GBuiltins.cc
! f079be95a973fca7bf8bd0b8a4ef1e46  gcc/m2/mc-boot-ch/GM2LINK.c
! 8dad4cdce455601a07fc147ee4359eb8  gcc/m2/mc-boot-ch/GSYSTEM.c
! b425fd4ab90a6670ffef76fb1d0f6fc2  gcc/m2/mc-boot-ch/GSelective.c
! 65c38a8f1ff8370d98cccf4b2942c500  gcc/m2/mc-boot-ch/GSysExceptions.c
! 50ad9c51cb3bae92cc87e9e5412fe451  gcc/m2/mc-boot-ch/GUnixArgs.cc
! 366da8b4793e830b1d5639801cd2ee64  gcc/m2/mc-boot-ch/Gabort.c
! afe50741aaf469e7a3cce04270f0c25f  gcc/m2/mc-boot-ch/Gcbuiltin.c
! 912d74a55306f82437ceb12edf2db24c  gcc/m2/mc-boot-ch/Gdtoa.cc
! 8555998a8bbccabddd323ec941aeb9a9  gcc/m2/mc-boot-ch/Gerrno.cc
! 48f580665edf5d52e875a54a0be1c124  gcc/m2/mc-boot-ch/Gldtoa.cc
! ad4c22b0be003b98370aec1426d54293  gcc/m2/mc-boot-ch/Glibc.c
! 987e0bf92497f63f7744fc3267a4dc62  gcc/m2/mc-boot-ch/Glibm.c
! f12b5d92f02bece460f3e1d9897603a1  gcc/m2/mc-boot-ch/Gm2rtsdummy.cc
! 1bb0ba964a32244b01a85422a991e3c8  gcc/m2/mc-boot-ch/Gmcrts.c
! 80a90c4ca87adbf49344b8ba2b88633a  gcc/m2/mc-boot-ch/Gmcrts.h
! cf651796966b51f2625a9b223cc2d21e  gcc/m2/mc-boot-ch/Gnetwork.h
! 741c62229b8655838d85343c23f2a40e  gcc/m2/mc-boot-ch/Gtermios.cc
! f00ac9330702330b3951fde2d6de3b1e  gcc/m2/mc-boot-ch/Gwrapc.c
! ce2b38596d501052b9fae2df29aafa66  gcc/m2/mc-boot-ch/README
! cf33c9860660686a84a7215e720816cc  gcc/m2/mc-boot-ch/m2rts.h
! 1570403427bb6e3aee5530372ae4ba97  gcc/m2/mc-boot-ch/network.c
! d198cdd621fe540917ba7c4d64b0828a  gcc/m2/mc-boot/GASCII.cc
! 7d8d8dcf2c6a24f102a038958575d8ac  gcc/m2/mc-boot/GASCII.h
! 7c6425847b77b1f58e9f021e5a5d17f9  gcc/m2/mc-boot/GArgs.cc
! 5ab43d14342a211dbaf72f17524e71ad  gcc/m2/mc-boot/GArgs.h
! 5c071d0242f411a1f2caea686641ccad  gcc/m2/mc-boot/GAssertion.cc
! f9c5d084f465352a97dc03a8865b11c9  gcc/m2/mc-boot/GAssertion.h
! 778bda9f1c7f4a298e17277da5da41b7  gcc/m2/mc-boot/GBreak.cc
! e4f0c182b812d80ad2fa538e1738a4ba  gcc/m2/mc-boot/GBreak.h
! d5f1403e3be9867d18d65b78fa47faf6  gcc/m2/mc-boot/GCOROUTINES.h
! 46fe55a5680f1ab4edd5c131496686f0  gcc/m2/mc-boot/GCmdArgs.cc
! af72b0909c7ec7d9e8e66f71c849bdd5  gcc/m2/mc-boot/GCmdArgs.h
! b0bbd0d1098a0ba2256e1150d1272ac0  gcc/m2/mc-boot/GDebug.cc
! 37d360f7e36fc1da7d7b99fb2a9a1933  gcc/m2/mc-boot/GDebug.h
! d2d0183c0e521aeec97bb6103fcb7a4a  gcc/m2/mc-boot/GDynamicStrings.cc
! 975ef9e0f2667fa71d6c298497a7cbe7  gcc/m2/mc-boot/GDynamicStrings.h
! bbf43cc6e6be26c48c851cb1122abb3e  gcc/m2/mc-boot/GEnvironment.cc
! 7b0f103d106e0df360747078c19e8008  gcc/m2/mc-boot/GEnvironment.h
! 4fb30e9ba68cc559430a57db83aefb09  gcc/m2/mc-boot/GFIO.cc
! 06019acc5e8e82cbe0b278ca86fdb442  gcc/m2/mc-boot/GFIO.h
! b4f287539f3c5169dc1ae5a5288cab78  gcc/m2/mc-boot/GFormatStrings.cc
! b74dfed7b7d79571a34d8200d27ee26d  gcc/m2/mc-boot/GFormatStrings.h
! 23aa96b538e71a24c70592c5beb86841  gcc/m2/mc-boot/GFpuIO.cc
! b8d8889e96fe71d6fc6e9ffeb58f3a41  gcc/m2/mc-boot/GFpuIO.h
! ba54cf1f658729d1be420cd21e6b3e50  gcc/m2/mc-boot/GIO.cc
! eeff5e8ab0a467da8073f80d0ec4c6a9  gcc/m2/mc-boot/GIO.h
! 904748eef6b4f4f8dfd50fc791a637ad  gcc/m2/mc-boot/GIndexing.cc
! 4b164b89dbdee73eab0ed6273c126036  gcc/m2/mc-boot/GIndexing.h
! 97268ba25d6412d430eb97221977ef9e  gcc/m2/mc-boot/GM2Dependent.cc
! 32cdec1e78a9995a234cd4c2005fdfb7  gcc/m2/mc-boot/GM2Dependent.h
! fce8e2de853fca049cfd17377d38c3a7  gcc/m2/mc-boot/GM2EXCEPTION.cc
! 3ef7a33055f85a49626c3fb027c07813  gcc/m2/mc-boot/GM2EXCEPTION.h
! a2498949de306ebf0d0969e9d5eb38d8  gcc/m2/mc-boot/GM2LINK.h
! a3985360fc876c9a51efb84449d84e8c  gcc/m2/mc-boot/GM2RTS.cc
! 69befd62c6e065b96c1ad6ba4bde65c8  gcc/m2/mc-boot/GM2RTS.h
! 2e7e39207972179fe86fa81c899f13e3  gcc/m2/mc-boot/GMemUtils.cc
! ad2aa0ce416c77acfe2b76e06ead1d9b  gcc/m2/mc-boot/GMemUtils.h
! c37904b4f301a945c68c976b2fa131ec  gcc/m2/mc-boot/GNumberIO.cc
! d7dca9439958a4625a264baf5cb30ad0  gcc/m2/mc-boot/GNumberIO.h
! 80e57da7c2547561d4e5fd6238d5bf05  gcc/m2/mc-boot/GPushBackInput.cc
! 1499912a603b94034135cfe4efe8b69b  gcc/m2/mc-boot/GPushBackInput.h
! 5e0ab171f4bf9bd08a9dd5db1dc5a8ae  gcc/m2/mc-boot/GRTExceptions.cc
! 00a4693b96b3707173b57a1b692e70f1  gcc/m2/mc-boot/GRTExceptions.h
! 9f9be1bdb177168567e594e63bca1098  gcc/m2/mc-boot/GRTco.h
! cbc3df9edfaaff1e81dad348972462d3  gcc/m2/mc-boot/GRTentity.h
! 7e5c2fa1b06e835fa7e0658dd7435537  gcc/m2/mc-boot/GRTint.cc
! 9db19707d52c687e98dd0836e90892f9  gcc/m2/mc-boot/GRTint.h
! 5a7456325f6c13a63f43917e154ae48d  gcc/m2/mc-boot/GSArgs.cc
! 0374d0fda535bd35839a23fb9748cd54  gcc/m2/mc-boot/GSArgs.h
! 73a8c5fe0154a2d0e2915e6cc24fc414  gcc/m2/mc-boot/GSFIO.cc
! 7cf42fb02b8b0cfd52be03c5eebaa715  gcc/m2/mc-boot/GSFIO.h
! 76c610bf878ecda77dcc18cab4c93d47  gcc/m2/mc-boot/GSYSTEM.h
! f4d3b1f8e74ab5cd68bf044821e9807b  gcc/m2/mc-boot/GSelective.h
! 861e6ba3ab1e1c902fb532f7d20d624a  gcc/m2/mc-boot/GStdIO.cc
! 31f65d8f7e5736a3a971561a158d845c  gcc/m2/mc-boot/GStdIO.h
! 6a23f3afdba3ebbbf1dec9fbd5b98ffa  gcc/m2/mc-boot/GStorage.cc
! b8e884b1fbfe023dffe4fef41f3d5775  gcc/m2/mc-boot/GStorage.h
! ba6ef800e39093d66504e75794824a72  gcc/m2/mc-boot/GStrCase.cc
! c2b76a0d0505d97727f87772aff69d37  gcc/m2/mc-boot/GStrCase.h
! 64f7c59eba4fef3bbbdd059a638f1588  gcc/m2/mc-boot/GStrIO.cc
! 0c1f8b68ae599ac6c3838fb988cb5045  gcc/m2/mc-boot/GStrIO.h
! 4decc58668e7136575b60b97faa5d475  gcc/m2/mc-boot/GStrLib.cc
! b72d1fa8ccc75fc32c6de9bb4c0a4bb4  gcc/m2/mc-boot/GStrLib.h
! cb166ce24a015628def33bc416a0aae0  gcc/m2/mc-boot/GStringConvert.cc
! 280884233bc94231351093080759a066  gcc/m2/mc-boot/GStringConvert.h
! 55d56cb42d4701315026296a2e0a3f80  gcc/m2/mc-boot/GSysExceptions.h
! c3eb9a4c9cb773b5740d158b90a05cef  gcc/m2/mc-boot/GSysStorage.cc
! afb83f5814fe32e48e2ec2e2116324e5  gcc/m2/mc-boot/GSysStorage.h
! f2e1c89d20f26e79543126230957d6ee  gcc/m2/mc-boot/GTimeString.cc
! b83fe6e3fffff61c3db1c47256ab1acb  gcc/m2/mc-boot/GTimeString.h
! 823bafa37aee847f942c580efcf5330c  gcc/m2/mc-boot/GUnixArgs.h
! 8117ee0032395458c141f82f4795e2ab  gcc/m2/mc-boot/Galists.cc
! 392b1e0c4edc9ddbd6264fd336a26e37  gcc/m2/mc-boot/Galists.h
! d2d6725c2e28f60027c4936f37360ee5  gcc/m2/mc-boot/Gdecl.cc
! 56b83004d70600b701276f187b5b33e9  gcc/m2/mc-boot/Gdecl.h
! a19b58d529e7458adbd08320a4b7c2b9  gcc/m2/mc-boot/Gdtoa.h
! 9ee62c1541b929cc35112061c5ae7e90  gcc/m2/mc-boot/Gerrno.h
! c409eebb82bfb45f54fe0c5f2d0ce10b  gcc/m2/mc-boot/Gkeyc.cc
! 8a628d11bcf33704f48e782caf2c859f  gcc/m2/mc-boot/Gkeyc.h
! 4b6a144b65017a814e4dabe9665be10a  gcc/m2/mc-boot/Gldtoa.h
! 4f07d3bedde0e1f1cc3fdc0dbab3e3e7  gcc/m2/mc-boot/Glibc.h
! d9e96d42673ba10d01a156dc392d820e  gcc/m2/mc-boot/Glibm.h
! e8dca96adbc9077e1571e962e70c9b25  gcc/m2/mc-boot/Glists.cc
! 9e947dbdb4340cefa01d925739403bef  gcc/m2/mc-boot/Glists.h
! 11ba90d4ef9ca406f55b7443ade3ab4d  gcc/m2/mc-boot/GmcComment.cc
! e423c29a0a67729080f794117f52ac70  gcc/m2/mc-boot/GmcComment.h
! 2334c2ba6a23b6938ccddf9cbade481d  gcc/m2/mc-boot/GmcComp.cc
! 9b97271295de5cbfae1d1c4a76543e02  gcc/m2/mc-boot/GmcComp.h
! 8277bd718ece094e00372babe5e240c6  gcc/m2/mc-boot/GmcDebug.cc
! 6c306e77c14ee3f2c9c9e2de9b894794  gcc/m2/mc-boot/GmcDebug.h
! f3284db5b1ce5968d7a337eff1682ffd  gcc/m2/mc-boot/GmcError.cc
! 3d68fc8b0296ddcbd125274f1f89017b  gcc/m2/mc-boot/GmcError.h
! 5d85bb47d927f4ca22639c9f2cf2e391  gcc/m2/mc-boot/GmcFileName.cc
! 03afa93dd82140e005aa84a66ebc8f30  gcc/m2/mc-boot/GmcFileName.h
! 52e66fc8d38978e4af29d8bbf0e260d0  gcc/m2/mc-boot/GmcLexBuf.cc
! 829e3676d633949ee81e007fc2d94873  gcc/m2/mc-boot/GmcLexBuf.h
! 05d2499c4247a7b75f2aa68b7eb62d75  gcc/m2/mc-boot/GmcMetaError.cc
! 3464a78b5e587657c21df5907c6753b5  gcc/m2/mc-boot/GmcMetaError.h
! 59e53813fe5268519d387c310135b6b4  gcc/m2/mc-boot/GmcOptions.cc
! 55f12059362728c14454e3a2876a7ced  gcc/m2/mc-boot/GmcOptions.h
! 03c7bb4d4d1e7eb24913b650b3df3fdf  gcc/m2/mc-boot/GmcPreprocess.cc
! 7d70c53c2424519894eafb9409dd5300  gcc/m2/mc-boot/GmcPreprocess.h
! 1a459e67174f26c134a9e248876675f8  gcc/m2/mc-boot/GmcPretty.cc
! 4c65a5f126bf8e2ea7faeb90dde7388b  gcc/m2/mc-boot/GmcPretty.h
! 2861b3287a3ed9e1611630a4eec40f4c  gcc/m2/mc-boot/GmcPrintf.cc
! 08581166656bd7a25de8f52ccea027b0  gcc/m2/mc-boot/GmcPrintf.h
! 9c52779ab3513ce4cdcf8c7754a697a1  gcc/m2/mc-boot/GmcQuiet.cc
! 6933dbb82fe95c6789b8bde1c7bf6526  gcc/m2/mc-boot/GmcQuiet.h
! c885e1f2d8cb12d68b7216d9dd8e81e6  gcc/m2/mc-boot/GmcReserved.cc
! 456576e228417a7098d0ef1cb8483ad8  gcc/m2/mc-boot/GmcReserved.h
! 58aeed5456d7409aa931c0f290d6f32e  gcc/m2/mc-boot/GmcSearch.cc
! 924981725d6c53c8eb7de2e41b18a47a  gcc/m2/mc-boot/GmcSearch.h
! 7b7e047f3aa219f4f4d6b97fcc0ca75d  gcc/m2/mc-boot/GmcStack.cc
! 38a55d01295fc6723e8cc9c28800f037  gcc/m2/mc-boot/GmcStack.h
! 6cfc6899e652d0067d01d687b0dc185a  gcc/m2/mc-boot/GmcStream.cc
! a5011bf97d3850b06662a9a99d03d9a6  gcc/m2/mc-boot/GmcStream.h
! 7f2769a01cb04aeb08a8f6ccaa72cc3c  gcc/m2/mc-boot/Gmcflex.h
! 629660437179c5284e0013a38e1448ec  gcc/m2/mc-boot/Gmcp1.cc
! da43aff9a655e4c9072c7347fd5148e6  gcc/m2/mc-boot/Gmcp1.h
! 45f988e6410f6b88f6d5ca6bf3a083e2  gcc/m2/mc-boot/Gmcp2.cc
! 480d37c0ee21119c586335f4bcb34ac4  gcc/m2/mc-boot/Gmcp2.h
! 09306af07221a9f13eab1bc3e498f674  gcc/m2/mc-boot/Gmcp3.cc
! 1aa2c2f6ca2da0031744c0a80fdf2dee  gcc/m2/mc-boot/Gmcp3.h
! 6ff38431f180e6bcba0586ee1db58832  gcc/m2/mc-boot/Gmcp4.cc
! 2c7f9c649fa005e253c58689f8bd0003  gcc/m2/mc-boot/Gmcp4.h
! 28f3ef04d9170cec906f9a39495d5cf4  gcc/m2/mc-boot/Gmcp5.cc
! eaf002ae686b2d160f600b8910d2747b  gcc/m2/mc-boot/Gmcp5.h
! af9299b5ce8d9a60594b7f739138454f  gcc/m2/mc-boot/GnameKey.cc
! b0245f510f22f2cc4e4a6582fcf05177  gcc/m2/mc-boot/GnameKey.h
! ab794d8617d0503c12863361d3c0cf3c  gcc/m2/mc-boot/GsymbolKey.cc
! 5add4738e0217ac997859ab43b6aa680  gcc/m2/mc-boot/GsymbolKey.h
! 3b34a06fdbe2a83468780c7f747743d8  gcc/m2/mc-boot/Gtermios.h
! 1b6ab62f766ba15ddade16ca687059b3  gcc/m2/mc-boot/Gtop.cc
! 335148a2cde7e750334d39f9c6b885b4  gcc/m2/mc-boot/Gvarargs.cc
! a7f899a711f662979b30b752dd6b66e3  gcc/m2/mc-boot/Gvarargs.h
! 4b0a5a9736de706d3bb691e014b2b489  gcc/m2/mc-boot/Gwlists.cc
! 25c7edf9cf9d5e840a757e238151f628  gcc/m2/mc-boot/Gwlists.h
! 0c156e32adebbf499ef39678abdbee73  gcc/m2/mc-boot/Gwrapc.h
! 0353f1ec4e4fbfb6eb0e9080da3e5aef  gcc/m2/mc-boot/README
! c0e0ea96eb989af059169f975e3d26b2  gcc/m2/mc/Indexing.def
! cf54c0a848bb31b3f9391957acebb6f1  gcc/m2/mc/Indexing.mod
! f8f98e9ffb642286dd61fd52be017824  gcc/m2/mc/README
! c8a5bed8b6ce7d5630f69c322d99f68e  gcc/m2/mc/alists.def
! 3f082b85bcba538b8ca83ab04f2e9468  gcc/m2/mc/alists.mod
! a5c0cc09103bcabdcd7c8cd7a094a7b6  gcc/m2/mc/decl.def
! 1026afdbf17ad3dfa7457369ced2ed1e  gcc/m2/mc/decl.mod
! 73d148ed772aa468cc7657a403f3edc2  gcc/m2/mc/decl.mod-extra
! 87a87ccec6259038a0a8fc93e4e771b8  gcc/m2/mc/keyc.def
! edc98bae80c1969b402bc038f16a1905  gcc/m2/mc/keyc.mod
! 4ac0b421e8e393a51d793721561e2c02  gcc/m2/mc/lists.def
! b1ce15cdca85d0fc5edcc06ad7af88d4  gcc/m2/mc/lists.mod
! dd39597ef9ccaa591262fd61a3a9876c  gcc/m2/mc/m2flex.def
! ad8da373d7a83a514881b86435703fbf  gcc/m2/mc/mc.flex
! 55e90d8211fde7cd8cc4e0eaef4e86e2  gcc/m2/mc/mcComment.def
! 4998bd32208981c7d492254acd7bf518  gcc/m2/mc/mcComment.h
! 0fd53f595c1c19875cc29c8cdc34601c  gcc/m2/mc/mcComment.mod
! 65c570626210968710e3a0d01bbcaeec  gcc/m2/mc/mcComp.def
! 62f7d3bce5f68d06b766dd6930f1250d  gcc/m2/mc/mcComp.mod
! 1454f1baff41c0c1dc157598b85f6678  gcc/m2/mc/mcDebug.def
! 1cbf3c47e3d6e86fdb74121504cb1e03  gcc/m2/mc/mcDebug.mod
! a5b47dfd12218d5773d742faac976f9d  gcc/m2/mc/mcError.def
! bca952800de329da678917e35d53d457  gcc/m2/mc/mcError.mod
! 64bff005e7c40532a482ad5f11ad897f  gcc/m2/mc/mcFileName.def
! 92d57f222834ae5ef8015a7c18fd41cd  gcc/m2/mc/mcFileName.mod
! 92d8cfeba151f775aaa1352c0eef925d  gcc/m2/mc/mcLexBuf.def
! 7bc9ece8c99789bb3a78ed17909032c8  gcc/m2/mc/mcLexBuf.h
! 798de44d8c365fdcc59ed0b2a966be7d  gcc/m2/mc/mcLexBuf.mod
! 12cea64d47d9e9a8a54a8976636f1847  gcc/m2/mc/mcMetaError.def
! 38fb6104395df141b34e72c3488aeaf3  gcc/m2/mc/mcMetaError.mod
! a2b4b55a7da7c280f8a1d016e2a2a7fe  gcc/m2/mc/mcOptions.def
! e863d4fbab6c53c46a11075dee19fe6a  gcc/m2/mc/mcOptions.mod
! 88e1c291dbb347c9b8e455fc12885980  gcc/m2/mc/mcPreprocess.def
! 2c5ddde8e107205d5633c4336b6231be  gcc/m2/mc/mcPreprocess.mod
! f360538db80ecc869097116a2c3643e0  gcc/m2/mc/mcPretty.def
! 08d3cbaf109062c82790b19eb2217b27  gcc/m2/mc/mcPretty.mod
! 7e9c9957af18e3dc8a71e447625fbd92  gcc/m2/mc/mcPrintf.def
! 0f36d4c174c63e00ffdd82cf16e51420  gcc/m2/mc/mcPrintf.mod
! d86aa50374b55b3547f4889590b95586  gcc/m2/mc/mcQuiet.def
! 5ebb1dc6c94975f335f8b04629fa7f41  gcc/m2/mc/mcQuiet.mod
! 0f43f248224b4b5bb4a966b921cfa5c1  gcc/m2/mc/mcReserved.def
! 0a46144ad9c331bdcad2241a6eb2547a  gcc/m2/mc/mcReserved.h
! c7d8735907d3f0a86eb6e6790db9185c  gcc/m2/mc/mcReserved.mod
! 02e42b24d2505cffc5da282de7b074d8  gcc/m2/mc/mcSearch.def
! 0ece1da0d39098cbf00b3a27fa8399ea  gcc/m2/mc/mcSearch.mod
! 00858ac081ada58c4fc6c53015df64aa  gcc/m2/mc/mcStack.def
! da5a50752f707dcd239c0a854d80046a  gcc/m2/mc/mcStack.mod
! 576f99c0d70837aca141eb329c7c7597  gcc/m2/mc/mcStream.def
! e39b435d9639c0d980ab42c594ed7c49  gcc/m2/mc/mcStream.mod
! d03821e7d070451f3c070caf819e53e5  gcc/m2/mc/mcflex.def
! ce083bdef4431a11976a51193f09df92  gcc/m2/mc/mcp1.bnf
! 786954c1ef85a4327bfdbbc2213db5a3  gcc/m2/mc/mcp1.def
! 88150d42fc7b1d79062b72ff6c29b704  gcc/m2/mc/mcp2.bnf
! 3f2ce264ab9d1faadf89cdc0df0a749f  gcc/m2/mc/mcp2.def
! a761b05b9509ba62724a163a222d0162  gcc/m2/mc/mcp3.bnf
! 413ad4d06b3b739ee99538ed1813ec12  gcc/m2/mc/mcp3.def
! a8e510bead15e080d9c35aa5e05dd8ae  gcc/m2/mc/mcp4.bnf
! 6b619c4d880d3b0e1597611c554bbc1c  gcc/m2/mc/mcp4.def
! 743ba8a3f2fabc749ecaade312d3dc77  gcc/m2/mc/mcp5.bnf
! 9d1ad1793876bc5e482102dc04eeee81  gcc/m2/mc/mcp5.def
! 76a1d7c2a0d3d7e4b250e6d965560912  gcc/m2/mc/nameKey.def
! b20c088c2c3c5434b3bf5ae7e501b81c  gcc/m2/mc/nameKey.mod
! 53b911ed75149d7689e06b597163010d  gcc/m2/mc/symbolKey.def
! 5df750c3322f664b92c484876005096f  gcc/m2/mc/symbolKey.mod
! 5433ea15725ca366f035fe276d97c7b5  gcc/m2/mc/top.mod
! bee418b038f1597528675ae0a5270a07  gcc/m2/mc/varargs.def
! 187b56cc77dd9c0bc2e7867c63e34eaf  gcc/m2/mc/varargs.mod
! e3d909369325324f588ae3844a6d9ca9  gcc/m2/mc/wlists.def
! 404d6a88948a5f1a85acbd032f6ded93  gcc/m2/mc/wlists.mod
! a31d91d96b7b9ffe2016b112c2aaca3e  gcc/m2/pge-boot/GASCII.cc
! 12e3b5b0e23988c12071db1db6ad7d4a  gcc/m2/pge-boot/GASCII.h
! 3fd373c754cd419b914717d3fc0fce70  gcc/m2/pge-boot/GArgs.cc
! 7eb9a9ec0febcd1339955900408f27ae  gcc/m2/pge-boot/GArgs.h
! e16b6e6bd1a1e741172107599487aa29  gcc/m2/pge-boot/GAssertion.cc
! 2e8de5da383cd9742f3690a97c3d1bfd  gcc/m2/pge-boot/GAssertion.h
! 1d5521f864a14683eae4803569c3306c  gcc/m2/pge-boot/GBreak.h
! d0e091cc2a49335ff6a88137851d46ca  gcc/m2/pge-boot/GBuiltins.cc
! a56134a09795cf823baca54ccbda0aa5  gcc/m2/pge-boot/GCmdArgs.h
! 16ab45178d3dbd80bad144ea2a04c941  gcc/m2/pge-boot/GDebug.cc
! aa980130a4e42876c6aba1910dafc9cd  gcc/m2/pge-boot/GDebug.h
! 32f905a216d3f8d3f5fb8f65c1592bc5  gcc/m2/pge-boot/GDynamicStrings.cc
! ef5c4b70b8ff883dfc423a1c1337b6f5  gcc/m2/pge-boot/GDynamicStrings.h
! 62d7bc5ed9fbca53c458948e7a163037  gcc/m2/pge-boot/GEnvironment.h
! 7b5648913259b3add2e1469efa1048dc  gcc/m2/pge-boot/GFIO.cc
! e364c6540b7b56f13c6543061aca863e  gcc/m2/pge-boot/GFIO.h
! aa64339f8e05685b10506de5e804fbf7  gcc/m2/pge-boot/GFormatStrings.h
! 17c69ce5ad26ec6d950758e59267770c  gcc/m2/pge-boot/GFpuIO.h
! 5f235dac04c8f5bca737f7e0bea6a9ab  gcc/m2/pge-boot/GIO.cc
! d86e07f12e63333c02da755a799222b0  gcc/m2/pge-boot/GIO.h
! b3f1d3e6b5ff01ae2cd410d6728d96d6  gcc/m2/pge-boot/GIndexing.cc
! 7d268babe7a564d36af69615fd865ad0  gcc/m2/pge-boot/GIndexing.h
! 6247a65d263073c051b5626593cfbb74  gcc/m2/pge-boot/GLists.cc
! abb3316c842590b5595a7da274e98c2c  gcc/m2/pge-boot/GLists.h
! f4984acee3369bfe67c82430581ec5f2  gcc/m2/pge-boot/GM2Dependent.cc
! 346ecd78b960160ce698c1845940b24c  gcc/m2/pge-boot/GM2Dependent.h
! afd73419ba275a51d5b10cfbbeb21468  gcc/m2/pge-boot/GM2EXCEPTION.cc
! 0d0959c61cc9764ccb3d1170f9c1c750  gcc/m2/pge-boot/GM2EXCEPTION.h
! f079be95a973fca7bf8bd0b8a4ef1e46  gcc/m2/pge-boot/GM2LINK.cc
! b9edfcb46d50e67f2bc5d3cd49c36be7  gcc/m2/pge-boot/GM2LINK.h
! e74fde70cee4662123f1d40a149aca9d  gcc/m2/pge-boot/GM2RTS.cc
! 69d6db185a25a881ec2dc00ae9be67cf  gcc/m2/pge-boot/GM2RTS.h
! 0747761765ba899427947f49c5ecb777  gcc/m2/pge-boot/GNameKey.cc
! 4137bda88d004d174f5e9b5165b33d43  gcc/m2/pge-boot/GNameKey.h
! 8ebe161f9b32eb46f871b65317ec516f  gcc/m2/pge-boot/GNumberIO.cc
! 53bcfc024356932333e61f9288969135  gcc/m2/pge-boot/GNumberIO.h
! 02bd3ef2a6f7ddede0df7b869406965b  gcc/m2/pge-boot/GOutput.cc
! 7fc07aac3951c98753ef8e8bee7ae243  gcc/m2/pge-boot/GOutput.h
! 4eb7708623671a56badaffd6f8b3c7ab  gcc/m2/pge-boot/GPushBackInput.cc
! bf98574ff15e0a4dd65d72c20309720b  gcc/m2/pge-boot/GPushBackInput.h
! 91104538d6311d7f416b8c458331b3b2  gcc/m2/pge-boot/GRTExceptions.cc
! 127e2466f62c4d90436021be0130717e  gcc/m2/pge-boot/GRTExceptions.h
! 0c9bf751db464271f4957f1fed68f79b  gcc/m2/pge-boot/GRTco.cc
! 639c933064353cbf470e2ec89ce46967  gcc/m2/pge-boot/GSArgs.h
! 7f0ce8bb1ee58eae02b66caaf2b7e030  gcc/m2/pge-boot/GSEnvironment.h
! e4f1bad210ae2be27c281ff025ccaeed  gcc/m2/pge-boot/GSFIO.cc
! 51a05f5194240a46dde6560a6146568d  gcc/m2/pge-boot/GSFIO.h
! 682e2e2dbe61372993b40254d9c5b1ff  gcc/m2/pge-boot/GSYSTEM.cc
! 7a5071fc28edd87118aa8613db88dd16  gcc/m2/pge-boot/GSYSTEM.h
! 66c04c514049a38dc69b953c92a8ff3e  gcc/m2/pge-boot/GScan.h
! e3ee06fe0ec247e8bb5f34f431565af3  gcc/m2/pge-boot/GSelective.cc
! 9a12505896284a2883b5834355f75b0e  gcc/m2/pge-boot/GStdIO.cc
! c999493d3e57a78e7989806d1dcf38c2  gcc/m2/pge-boot/GStdIO.h
! 900458edb475f98da9a940d1d8ac2a6b  gcc/m2/pge-boot/GStorage.cc
! 29062371ecc4326a5214afe563239472  gcc/m2/pge-boot/GStorage.h
! 0713888f8bc750aa7d6c35362583be57  gcc/m2/pge-boot/GStrCase.cc
! 2ecb4c66a533aa643e60f752326f2026  gcc/m2/pge-boot/GStrCase.h
! 0f9231f9a05b6201a012cd983bdbe377  gcc/m2/pge-boot/GStrIO.cc
! b29988e06ae09971a5eaf1e2d4a80c23  gcc/m2/pge-boot/GStrIO.h
! 5f8a0c23cbb2e0f7e7fbed2388c39949  gcc/m2/pge-boot/GStrLib.cc
! 297fb37e0621abb48825e897eb50e8c5  gcc/m2/pge-boot/GStrLib.h
! 35168e98e601543ff11edfd6d94bf0a3  gcc/m2/pge-boot/GStringConvert.h
! edabc53fc74291ddec8e6ad047cb78ff  gcc/m2/pge-boot/GSymbolKey.cc
! 951249943ef21fc3cd97d79d5c147b67  gcc/m2/pge-boot/GSymbolKey.h
! 83fb71a782c34240cc62ce5714b29098  gcc/m2/pge-boot/GSysExceptions.cc
! 6d97799da56bde7045e88d8bac965388  gcc/m2/pge-boot/GSysExceptions.h
! 7dc5bd3d1fba4e2b7ae2e725135720e2  gcc/m2/pge-boot/GSysStorage.cc
! a9857930f2fca856b2eb85ec24f5969b  gcc/m2/pge-boot/GSysStorage.h
! df81ed6e4d2051ab3bdeef10905ba4f1  gcc/m2/pge-boot/GTimeString.h
! ebeb8d70d500da8ab0e515c9d398c662  gcc/m2/pge-boot/GUnixArgs.cc
! e1e3b125a9e3d32443675d176e3a7914  gcc/m2/pge-boot/GUnixArgs.h
! 366da8b4793e830b1d5639801cd2ee64  gcc/m2/pge-boot/Gabort.cc
! dea58cd33c1656745ed2d81464a72eac  gcc/m2/pge-boot/Gbnflex.cc
! 4089c3cd05276a84afcbda725c6580e5  gcc/m2/pge-boot/Gbnflex.h
! afe50741aaf469e7a3cce04270f0c25f  gcc/m2/pge-boot/Gcbuiltin.cc
! 99c30faffd1440b23f313848ef99cef6  gcc/m2/pge-boot/Gdtoa.cc
! a7c133b1bd8da00955cc8f8721ef5e49  gcc/m2/pge-boot/Gdtoa.h
! 822c195e14065d6eae14c189f5df8af4  gcc/m2/pge-boot/Gerrno.cc
! c66892a2033c8812a7ef5a79ade3e40c  gcc/m2/pge-boot/Gerrno.h
! 1b8a482c893da557a0d273b9738666ba  gcc/m2/pge-boot/Gldtoa.cc
! 443a875fb27ce0f3ea0e4f1ef02bd04b  gcc/m2/pge-boot/Gldtoa.h
! 590dfc252895f8d1ebff77cbc500d9f9  gcc/m2/pge-boot/Glibc.cc
! 74cfba789938152aed139a905756fcff  gcc/m2/pge-boot/Glibc.h
! 987e0bf92497f63f7744fc3267a4dc62  gcc/m2/pge-boot/Glibm.cc
! a5fa64c13b59b88634182dd4a8007c75  gcc/m2/pge-boot/Glibm.h
! 1bb0ba964a32244b01a85422a991e3c8  gcc/m2/pge-boot/Gmcrts.cc
! 80a90c4ca87adbf49344b8ba2b88633a  gcc/m2/pge-boot/Gmcrts.h
! cf651796966b51f2625a9b223cc2d21e  gcc/m2/pge-boot/Gnetwork.h
! 3fe312fabde3e732c4c8f0b43b26ee43  gcc/m2/pge-boot/Gpge.cc
! a29885f518cd099d12454c4db6c8df22  gcc/m2/pge-boot/Gtermios.cc
! 629333318707bf8ab347f43f4cdc0a0e  gcc/m2/pge-boot/Gtermios.h
! 68dbbf49c11244d747df93f1ce4556b0  gcc/m2/pge-boot/Gwrapc.cc
! b3e9929968a41cc65cb0d1415dff629f  gcc/m2/pge-boot/Gwrapc.h
! 32de17e5bdad997b43794d330fc5dae5  gcc/m2/pge-boot/README
! 61ce245a6e0bca72188bce4133f9fb65  gcc/m2/pge-boot/m2rts.h
! 8b33b15307e9ec5d5dc5f5ce40ae479b  gcc/m2/pge-boot/main.cc
! 1570403427bb6e3aee5530372ae4ba97  gcc/m2/pge-boot/network.cc
! 18840892def349c0982fbe40111d6a91  gcc/m2/plugin/README
! c679c0f088b031992ae7a9af0e444a37  gcc/m2/plugin/m2rte.cc
! 26da30e80385c11ff7da320b8550c6d7  gcc/m2/target-independent/m2/Builtins.texi
! ff2cddc8e82d26e626d51a518f97024d  gcc/m2/target-independent/m2/SYSTEM-iso.texi
! 803e2e2c4293fdba546b2340322ba0ce  gcc/m2/target-independent/m2/SYSTEM-pim.texi
! 8ab0186eb6d526b907b4fa9b698c2259  gcc/m2/target-independent/m2/gm2-ebnf.texi
! 17e6eaf355aab3e2ade6ab373c54ae09  gcc/m2/target-independent/m2/gm2-libs.texi
! 3eed1eee3be7e4c14fa1d8f611ab2c90  gcc/m2/target-independent/m2/gpl_v3_without_node.texi
! 90ef5843055db95072a5e0dcaad1e694  gcc/m2/target-independent/readme.txt
! 7625da2d2347161386e94664ab2ceac9  gcc/m2/tools-src/README
! 815f4a4ccebfcf06a8890142ac8aca17  gcc/m2/tools-src/boilerplate.py
! 53e14ee5efd9483f20ac2c71208f84f3  gcc/m2/tools-src/buildpg
! c33c52aebb020de5414c2bce120606c5  gcc/m2/tools-src/calcpath
! 28c12fa6f06658127a966f3fa9cecfc7  gcc/m2/tools-src/def2doc.py
! 144395b707c4bc58b879a0aac1158481  gcc/m2/tools-src/makeSystem
! bd2a5307db4ad8df1913ab95bfed0690  gcc/m2/tools-src/mklink.c
! 14cfe8f0487c8fb81866af7d2fcfc02d  gcc/m2/tools-src/tidydates.py
! f9608e9005487c369e6c38949ab36fa1  gcc/m2/version.c
! d26ca7644b0c87e9afba723a82e83ffa  gcc/machmode.def
! 020ac57561ab532784bab813afc03f17  gcc/machmode.h
! f837fae8701f147a459629038cc2f8d1  gcc/main.cc
! 1f00c2ae711dcf705d2724bc1912adec  gcc/make-unique.h
! 21c35a6f3a213c958d40b61168983e72  gcc/match.pd
! ad32d5a9a041bd32e3123d6caba1f49d  gcc/mcf.cc
! c3df3b1477c180924303d737bff27c46  gcc/mem-stats-traits.h
! 6682c830fe9e4f4ab3d82e31b7e3aa49  gcc/mem-stats.h
! d0caebd6daf62e3e5144c3a086d8762c  gcc/memmodel.h
! 79626b77e9cb37fb56379d23159110d2  gcc/memory-block.cc
! 6372d090c19ccc21a579bd770f815b19  gcc/memory-block.h
! 5901d2378ef791b55799a6e04443fca9  gcc/mkconfig.sh
! ebce6bd265d67531664bf1d4203ca138  gcc/mode-classes.def
! bc246446b97c858bc3cd1ae581f45202  gcc/mode-switching.cc
! 6345379a31fea8924d61d305aae331cb  gcc/modulo-sched.cc
! e180d1930560f600f32938bf307f6af0  gcc/multiple_target.cc
! a2fed7a2244bb9b0027adc70211df092  gcc/mux-utils.h
! 2897c3f0cbef0232542a5216c354b8cf  gcc/objc/ChangeLog
! f81a2e6746035c07e9e9dac7756ac658  gcc/objc/Make-lang.in
! b2ccd327d5f58dcac13e441e7a2e0200  gcc/objc/config-lang.in
! 8f2dc56b3457df7ec0043be18397a760  gcc/objc/lang-specs.h
! 6ee597eebc36616db22727ff0fb81341  gcc/objc/objc-act.cc
! 38d47ddeb9eb0844af66c06249c796fd  gcc/objc/objc-act.h
! f6caba7367bd2eb1be06c49651f1cb6b  gcc/objc/objc-encoding.cc
! 73779348c8e405696c4a8fc89dbfbd88  gcc/objc/objc-encoding.h
! 1e6a49d1dc2f96f4e537306f01acfe5c  gcc/objc/objc-gnu-runtime-abi-01.cc
! 7e39c98f456522f101bca1362eadccb2  gcc/objc/objc-lang.cc
! 973c19f3a3c341e49fd7364d9d6551b9  gcc/objc/objc-map.cc
! ed689f68f303d6ca4885e72aefc9c08a  gcc/objc/objc-map.h
! 357daa77234ff8cb76bc23c61408ab08  gcc/objc/objc-next-metadata-tags.h
! 31fb9b35924534de1dd817e862e97db9  gcc/objc/objc-next-runtime-abi-01.cc
! d76f1f648440058b726884012dee334e  gcc/objc/objc-next-runtime-abi-02.cc
! d6c198e878e546711874d25453047822  gcc/objc/objc-runtime-hooks.h
! 7821acbc09c6fe959483529e9f3ae10d  gcc/objc/objc-runtime-shared-support.cc
! fda5f7307dfc5b2817741a8e4061e51d  gcc/objc/objc-runtime-shared-support.h
! dca9bc33b5b769910000a9513ae55357  gcc/objc/objc-tree.def
! 5c5e10243cd0cc57147d8a5228c987d9  gcc/objcp/ChangeLog
! b96d36f1290b06a5131e5b92d5adb66d  gcc/objcp/Make-lang.in
! 35a444dbc66b72d53307a36f689fb73d  gcc/objcp/config-lang.in
! 637bad28f1f1c9e646083bcda12973f9  gcc/objcp/lang-specs.h
! dadcfdc4c2674da3bb7172f1bda846a5  gcc/objcp/objcp-decl.cc
! 00955defd234ab63020a3c779a7f5384  gcc/objcp/objcp-decl.h
! 37450e1d0a6c6e763d0044f7bd625e1c  gcc/objcp/objcp-lang.cc
! b33ce8e63d322a6dc9496144d93baefb  gcc/obstack-utils.h
! e8768e7bddbebe0721552be034c8a56d  gcc/omp-builtins.def
! e58e255dd25cc87c001b000c84595973  gcc/omp-expand.cc
! b602f2dfec40ed722b5aee2bf7e3e8ac  gcc/omp-expand.h
! e82073a6eb81a0c7e2715dffb046afea  gcc/omp-general.cc
! 009c63d00f91f4e914f53c0ecdee6908  gcc/omp-general.h
! 711c590e7e6af52526895c4008ee7671  gcc/omp-low.cc
! c28514b051bd58349c8ce22a92021e01  gcc/omp-low.h
! 297d0a39fb8707da61286135c64c3cda  gcc/omp-oacc-kernels-decompose.cc
! 2ecc74cf5fab725715493514e0c7a5bb  gcc/omp-oacc-neuter-broadcast.cc
! 445c459485eb548b07a792c4386fa227  gcc/omp-offload.cc
! 28ad8898669e529dc47c566719759afc  gcc/omp-offload.h
! f306e4577c7212b03b7d7d40600be87f  gcc/omp-simd-clone.cc
! cab4dc96449aa496c527da19eb68206a  gcc/omp-simd-clone.h
! 96c1864b541cc301b6786fded2905d4f  gcc/opt-functions.awk
! 40ace02ead21ed7b7a3c920bf3edc8c7  gcc/opt-gather.awk
! d8b2b6a9d82bb173fd998a51344f0af3  gcc/opt-include.awk
! bddf69ca9602442193ea19533499aa04  gcc/opt-problem.cc
! 496b697c4fcf0d1d2a5aa7cb71f16571  gcc/opt-problem.h
! eb42aee5f98f8f74181aaf2a24242868  gcc/opt-read.awk
! 74e31942cc1d7fd16008890693f3f976  gcc/opt-suggestions.cc
! 2c7e0eb8c977caade89510a8b6c8f3ba  gcc/opt-suggestions.h
! aade09e8dd18cbb6a7850bc51e4b4de1  gcc/optabs-libfuncs.cc
! 04358f91cfd91036383d359cdf5b049f  gcc/optabs-libfuncs.h
! f8f3df70c36095097945cb03323a693b  gcc/optabs-query.cc
! 74bc067eadc826ac4c141664fff05ae4  gcc/optabs-query.h
! 6ddb0119ae19dadd9224a450c1e3e8b6  gcc/optabs-tree.cc
! 1c8dfa2acc3b3ae4f083ef0d55515944  gcc/optabs-tree.h
! 7c90f9a44f9f5dcffe2881376f3d9f63  gcc/optabs.cc
! 425698078194ac5f06fe487ecbba9dfe  gcc/optabs.def
! 65ccc81ac4251caf331468bf897a4d21  gcc/optabs.h
! 3dfd8d122c4d56a7627db3105cc0942f  gcc/optc-gen.awk
! 37e71871ee91c7863864c5d3d24d1985  gcc/optc-save-gen.awk
! be6cb7f9fbd9adbdd9060ceae7d37029  gcc/opth-gen.awk
! dfc051acb42805606a14abc06c814aa1  gcc/optinfo-emit-json.cc
! 23a32bb6db5cc27f62e96f583a074dd5  gcc/optinfo-emit-json.h
! b7bd0b389d55d860eaef6b9957616899  gcc/optinfo.cc
! 211aec5ccb8c1fb43ae8e372589b6652  gcc/optinfo.h
! 8d930e8b995aa12eff99ffbf3a815361  gcc/opts-common.cc
! 4fdbf157243a5a1f53d3cd5b903ba290  gcc/opts-diagnostic.h
! 3dc746f8732ba9f90e77f29ed51e1bed  gcc/opts-global.cc
! ba6821f04d884d92f0a7fed9a3232bb3  gcc/opts-jobserver.h
! 3f8ee1fa8366b8fe67bb94bb217ea300  gcc/opts.cc
! 81e9511e9d8153c5230e3aaa4b257cdc  gcc/opts.h
! cdfe5fd905e3710da59f22318bb32b03  gcc/ordered-hash-map-tests.cc
! d632bfde05b332853454952189949258  gcc/ordered-hash-map.h
! 9bb4a835deca56dfd0b9a1c21b5242d5  gcc/output.h
! e5e200ddde4fe3d249e573878068e55c  gcc/params.opt
! 6d5e1909a25f7d21fbdbc4466bfc2f10  gcc/pass_manager.h
! a5e166ed8d84e4d0e1a8b637fc1e86f4  gcc/passes.cc
! f79c56de25494e8b3f384aeb3297e5b1  gcc/passes.def
! e4b251c052d442b33f51258301aaf71f  gcc/plugin.cc
! b7c23a22025fc638936c8776d5141077  gcc/plugin.def
! 0d98256396aa9909139748326fe2ec5a  gcc/plugin.h
! fb17ef8eeb8268522c34b9a7e3160d26  gcc/po/ChangeLog
! 529a60fd475862c5330245c858e844e1  gcc/po/EXCLUDES
! e4e35545a1fab9b9decbe9b06b468f72  gcc/po/be.gmo
! a0e2e201097ac9bfe3ceba78dd827a42  gcc/po/be.po
! 463f7511c95c1cf16c6ddb8086639108  gcc/po/da.gmo
! c15fce80d5ec1c6880d123cb3d066578  gcc/po/da.po
! f01eb1a79f61c09d06a5e238e843baf8  gcc/po/de.gmo
! d621f6d06adae12e10405265166b3e01  gcc/po/de.po
  189b9d1af87594807b0d0e10036a64c3  gcc/po/el.gmo
! 63d37acfde63ea6a0fa27f3c3d4d3231  gcc/po/el.po
! ee293ab9779d71026f398d8630c4dc18  gcc/po/es.gmo
! 68a8c61ae7bf27712e5d4853a4f47e29  gcc/po/es.po
! fcc59da6d201e71a314340459e140b80  gcc/po/exgettext
! 8ab0131ebe40c0627ccdd0ae4eb2ccc4  gcc/po/fi.gmo
! 6717c121586493b57aa31121b0629c2b  gcc/po/fi.po
! dc2970edc0a25a2193fb2397a6fb0767  gcc/po/fr.gmo
! fa463e8a0b921ff0eaf703e6d5e51de8  gcc/po/fr.po
! 972465e1043cdc2c51f4f37106ccf2dd  gcc/po/gcc.pot
! 4ace724020d1c0cd034a6a660583a1f4  gcc/po/hr.gmo
! 2fc287dfb0cd2538ddb0f375c453d9a5  gcc/po/hr.po
! 3c1cd9a547de9c7e50fd85d47abb5587  gcc/po/id.gmo
! 7c03dacf5dacc32e9a0d2684d1f211a9  gcc/po/id.po
! cc1f48b6706c3b9ab09d19ef09ca1379  gcc/po/ja.gmo
! 64466479d93fdfe60b717fd317ec9149  gcc/po/ja.po
! bbe550748750cc1921f378787759f926  gcc/po/nl.gmo
! 544d6932b99b4b2dcf693fc98ef84f2e  gcc/po/nl.po
! 1d169c67cd817e874988e4f557bd7b04  gcc/po/ru.gmo
! 847a144b479a4171649781acc28ff398  gcc/po/ru.po
! 081424ac286147f96e73ec707133e10c  gcc/po/sr.gmo
! 9cac6bd81f8283082f1da43502fc5450  gcc/po/sr.po
! 1312daa014358bbb8751d589df763594  gcc/po/sv.gmo
! 9c0c255a7ab18cc7b199d1beef6644e1  gcc/po/sv.po
! 09b2826254b9f021ec8ebe47a78a2a30  gcc/po/tr.gmo
! e0b2b3b3641817de7b3d81565c14ef1c  gcc/po/tr.po
! 0671376251b691a4f3dd9fd7fa0e18d9  gcc/po/uk.gmo
! 859056aefcbbee1564b6adb47f83f879  gcc/po/uk.po
! 491ca62bbd58b07aac8abdce65fa888d  gcc/po/vi.gmo
! 915806a35e3261896362fee9fcc1273f  gcc/po/vi.po
! ee1babd2a362a332e0c4713a846aa62b  gcc/po/zh_CN.gmo
! f8de54e516c7d11630075c5c97a167e7  gcc/po/zh_CN.po
! 26080b5d6659bf16b31d74c084bbe8d2  gcc/po/zh_TW.gmo
! bf3dd1526941a926b63acdbba6a1de55  gcc/po/zh_TW.po
! cbf955d69da4dcc78738dcadff3e0da4  gcc/pointer-query.cc
! 27a82acfef939a6105653100ca817c22  gcc/pointer-query.h
! 826e8613602ff66b4826777cca1f0f8c  gcc/poly-int-types.h
! 904c1ca12d0557980609eab0e8c559a7  gcc/poly-int.h
! 8d639c83a53e2fc94a92dd31a295728e  gcc/postreload-gcse.cc
! aa38a16aae72c73780bfc35f1192be5e  gcc/postreload.cc
! e391674d14a8a9d1efc43643c37b2f21  gcc/predict.cc
! a4947e8f0ddcbc7eb9df2fa43790fec7  gcc/predict.def
! 005dc519df06271b4a76719be9cc89ed  gcc/predict.h
! 2dd09489c1cad791c06fdbb8ea241d6b  gcc/prefix.cc
! 8021565db57821d78ba6cbcea1db05ed  gcc/prefix.h
! d8d3041d9147829b0574196df8e8311a  gcc/pretty-print.cc
! 6bf3ce6e1254c09f4a99258968675078  gcc/pretty-print.h
! 1764e0d6ed8c38df1de4431084f0689f  gcc/print-rtl-function.cc
! 65b4d7de0d5a0934535a96ad6109d192  gcc/print-rtl.cc
! cd1c1c50e1890c41fc844e7f5c6b03e2  gcc/print-rtl.h
! e8627c87ea01f9f273bb02b8b6ac82f2  gcc/print-tree.cc
! 0a1f191186edb9f41a0affc339addd7c  gcc/print-tree.h
! 879605cacbe5b067d1d35cb366994624  gcc/profile-count.cc
! 9a5b08eb9403220d864d191d5b5bc551  gcc/profile-count.h
! 38675dd56002512bad75809f6c8501b6  gcc/profile.cc
! 139e817371eff9511cbb43f0f6774b34  gcc/profile.h
! f994b7469eca6d80c1e9fbc37d3a68dd  gcc/range-op-float.cc
! e8b027dd989122187bd42d87f4c5525d  gcc/range-op.cc
! a97482360b7088e2305d2382195e523a  gcc/range-op.h
! c1360f9d799d927a43938d0fa2197c2f  gcc/range.cc
! 5c498ea82f946739bfa6733b7e379daa  gcc/range.h
! 0c8f751aaf1d08caec4def346807faeb  gcc/read-md.cc
! 40e593628675937539cb0428ac64b2dd  gcc/read-md.h
! 6846faf0997a4e8ecce23929c94109be  gcc/read-rtl-function.cc
! 537d10d7fa9077013a7396eb9ab761a0  gcc/read-rtl-function.h
! 4323304c8d4c3b3f7a1a709a952b0eb6  gcc/read-rtl.cc
! 25281c1ad69703fcb08cf754d82ebad8  gcc/real.cc
! 6d8554acc44b5e2e21e38a2b49a99b5a  gcc/real.h
! dc90e239bc529e45b018414e41f712d7  gcc/realmpfr.cc
! 8b3665ee0408167deba63225c18ac5a1  gcc/realmpfr.h
! 623389f92d7a177afdb11fff86a46a42  gcc/recog.cc
! 591f5b69245ef7f926a3b3fef9ca9989  gcc/recog.h
! 219c3276affb43bc7f35c1ede7a3eacc  gcc/ree.cc
! 229b5d92619affa254e70bb3f0369837  gcc/reg-notes.def
! 3f84b03ca2ce228f604801270b0d54c5  gcc/reg-stack.cc
! 49eaeefc0aaedbe828880daec61c5e61  gcc/regcprop.cc
! 4a01a2d58e3ec6ba8693c8e68e948ebe  gcc/regcprop.h
! 9ff50d21a64a70b9b3998b32720f0c8b  gcc/reginfo.cc
! ee38e1f3a7a1ab325c4c6c4376b1d1f6  gcc/regrename.cc
! 87d4742f206e55197364c5f4fa7336d8  gcc/regrename.h
! 02aca530b2731fbe9db26ed0d58a7359  gcc/regs.h
! 48d8ce2509f9ea959aff8e7d11629912  gcc/regset.h
! dd0ae195ddcf06998329b73113a0107a  gcc/regstat.cc
! 2a818cbdbd5406a63c71a18f7ec7809f  gcc/reload.cc
! 2c10603003864024bc233887578ab725  gcc/reload.h
! a923e6ee5eb5118449aa9c3a9ea1cb2e  gcc/reload1.cc
! 26cc4b908ccaca6822b0a682c16343c7  gcc/reorg.cc
! 8847210067f0ab5a79fd62bbaebad8c2  gcc/resource.cc
! 5e0f1c136548ffafc06dde7759d0b618  gcc/resource.h
! d4270c50409d0a37e41e87d9c5ad50b7  gcc/rtl-error.cc
! 5ea30c9356f47fdae42becb044019f44  gcc/rtl-error.h
! 09c7d9be974cf8eef8aa27b80998709f  gcc/rtl-iter.h
! e425f0e0c0a3a373e9ced2896d85e43e  gcc/rtl-ssa.h
! 6bec061fb6c5eec6566ff15977dc17d8  gcc/rtl-ssa/access-utils.h
! 120254bfa882a101305e0c98ff15b4fc  gcc/rtl-ssa/accesses.cc
! c08484d088fc8c35557aaccdfc898fc6  gcc/rtl-ssa/accesses.h
! d2e4a41a257c31fad56c18d763880a57  gcc/rtl-ssa/blocks.cc
! b0ec78b49609a46f1aa381fc0b7f9303  gcc/rtl-ssa/blocks.h
! 9ffa12a479933cf27d86c9ac637d4f52  gcc/rtl-ssa/change-utils.h
! 3a01c123145a9937cd51e4b22265c18c  gcc/rtl-ssa/changes.cc
! f7f6d0e7aad93534016ef2f9ba392d4e  gcc/rtl-ssa/changes.h
! 0be8f892b8737f9e94508605fea7985a  gcc/rtl-ssa/functions.cc
! 77007985a1d5824a4f5cbb786e963ebd  gcc/rtl-ssa/functions.h
! d8c5b220537f993222a13e4b070f90da  gcc/rtl-ssa/insn-utils.h
! 755d631742c96dbad1f1c3387f63ff70  gcc/rtl-ssa/insns.cc
! 7ed973b4eb2d6346c338fa891d280573  gcc/rtl-ssa/insns.h
! 4dce71c05f5e7038dddbb9b6aa8b442b  gcc/rtl-ssa/internals.h
! 002fd48b37b346b92761d7e5b67cba96  gcc/rtl-ssa/internals.inl
! 41495d13856a5728abf206f6c6580eaf  gcc/rtl-ssa/is-a.inl
! 7a747dc63719ba9f2a731705e9cf6e8e  gcc/rtl-ssa/member-fns.inl
! 90dac5747f8732e6187637ec08663ef3  gcc/rtl-ssa/movement.h
! aee77626ccd631c6244e760ea6512546  gcc/rtl-tests.cc
! 6da60f7ec749d1cbf3c21f746d20c664  gcc/rtl.cc
! 59013392133f50ef45d51c7f46134d1d  gcc/rtl.def
! 47270968f06521df14a2e62a83eafc93  gcc/rtl.h
! d2ee43611b1379e7be6016d6138d81af  gcc/rtlanal.cc
! 002d2d234432794633ca91af8a1055aa  gcc/rtlanal.h
! 622683dfa4d77248f393d30dd55e7a56  gcc/rtlhash.cc
! 8f0d4d09cea60a4cd6b2117d158a7c58  gcc/rtlhash.h
! 568be9814fdfe76fcb154787ced92529  gcc/rtlhooks-def.h
! 75972dd652456e1688adeb39c0feb7c1  gcc/rtlhooks.cc
! 978162b1eb7b8179c8ecdc2da8e7da61  gcc/rtx-vector-builder.cc
! d14e86636104f8e63873d0f94694d4f2  gcc/rtx-vector-builder.h
! c7bcaa81dd77c23ab3a266bcbf9a0dd1  gcc/run-rtl-passes.cc
! 89d68ba5dc6c7c5c9545c87886d96fa6  gcc/run-rtl-passes.h
! add9bd82fcec23469a4d0f7df03d9589  gcc/rust/CONTRIBUTING.md
! 403278ccc6ce6388de2eb3478189e949  gcc/rust/ChangeLog
! 74b5c91895b4f121d23a07141ee9691c  gcc/rust/Make-lang.in
! 080109fdd25bde98f968ee692c3e0200  gcc/rust/README.md
! 656ef73d834ec5110c9e15fa59242e41  gcc/rust/ast/rust-ast-dump.cc
! 0e184ba6abb92aa32e45f0eb70f3cca7  gcc/rust/ast/rust-ast-dump.h
! 29e4d2ca48165a277bda09e3bdcfb0e6  gcc/rust/ast/rust-ast-fragment.cc
! a1f22b134be23067f69dfcb894c7ca7c  gcc/rust/ast/rust-ast-fragment.h
! 8d29cd066c44059cf5ad80e79bfb8a44  gcc/rust/ast/rust-ast-full-decls.h
! b7a4c46da4ffe5ad1025a8370c9ff93d  gcc/rust/ast/rust-ast-full.h
! e2c5585c631ed9b69b034b9464ccbe5d  gcc/rust/ast/rust-ast-visitor.h
! b81ded285ef42e4a1350c91c7aa8e19d  gcc/rust/ast/rust-ast.cc
! 4808354483a3abd8ce5a85e5a945f72c  gcc/rust/ast/rust-ast.h
! 8c577a1782ca9bdb11646ce4730eb8c6  gcc/rust/ast/rust-cond-compilation.h
! 7600cfb1095baa797ee285a00314e44f  gcc/rust/ast/rust-expr.h
! 32288d66281cfd2d4f1a714c2fac1e3a  gcc/rust/ast/rust-item.h
! 0f7a361407be728f378f9c3dc5c0767c  gcc/rust/ast/rust-macro.cc
! e0ac62ffcb2dec3348f7d2863c2f7e7b  gcc/rust/ast/rust-macro.h
! 4505111a5ca876f7e419ebc79a525fd6  gcc/rust/ast/rust-path.h
! 8b2ebe986a6271fed0a4e651b7606fa5  gcc/rust/ast/rust-pattern.h
! 8978be3f05bae7d6574f98b3f829a19e  gcc/rust/ast/rust-stmt.h
! e80c4add905a5322e35a768098a6ef8f  gcc/rust/ast/rust-type.h
! 7a65079d364d5cee4dab24d3b091a20d  gcc/rust/backend/rust-builtins.cc
! c2acd85b4460f7ba3ee7d1a795bfe00a  gcc/rust/backend/rust-builtins.h
! 21797ccb82a7631f1ee36a200ffd846c  gcc/rust/backend/rust-compile-base.cc
! 89f2466e5a685ceae8cf2e3674cac2aa  gcc/rust/backend/rust-compile-base.h
! 193c505b26f5fd808da0ecd6a8770d5a  gcc/rust/backend/rust-compile-block.cc
! fabf64fe7484c4397a53d8d70eaa78ba  gcc/rust/backend/rust-compile-block.h
! 33a17da7a0cab21deeb193774723bd89  gcc/rust/backend/rust-compile-context.cc
! ddc815013e0d7c27ce7d5cb3a8bc45e1  gcc/rust/backend/rust-compile-context.h
! fbe51de19c22edebc41bb4b4b10ee3d1  gcc/rust/backend/rust-compile-expr.cc
! 12cd26fb5ebeed601c97b254a76bb2ba  gcc/rust/backend/rust-compile-expr.h
! 744f7df2c4b9b6fabf89f085080ab477  gcc/rust/backend/rust-compile-extern.h
! e35cc1dba67e3043b60bc54221013edf  gcc/rust/backend/rust-compile-fnparam.cc
! 7df6c7c06ae13b0076264a6dc69cb90b  gcc/rust/backend/rust-compile-fnparam.h
! 220503ad06f93fe6bd7f2df646c94d3d  gcc/rust/backend/rust-compile-implitem.cc
! 6827b8ea4c0a2b13c2c96dde9252815c  gcc/rust/backend/rust-compile-implitem.h
! 8ff2f2419b1edc440fca891fec380964  gcc/rust/backend/rust-compile-intrinsic.cc
! a1fb8689400958af8126ae9c477c873e  gcc/rust/backend/rust-compile-intrinsic.h
! 5f47e09b718285911e1dd572e5253b99  gcc/rust/backend/rust-compile-item.cc
! bfb369e2f437665bc0994eb2ee8e6702  gcc/rust/backend/rust-compile-item.h
! 0012cdb470d712fe178d3b3ee3e33828  gcc/rust/backend/rust-compile-pattern.cc
! 01d6c7135c32f265ac9d48f3cdcac103  gcc/rust/backend/rust-compile-pattern.h
! a51734d03744052d79ad4978abb29f03  gcc/rust/backend/rust-compile-resolve-path.cc
! 5420f2f96bb75cdc0e62a6b53609f4a7  gcc/rust/backend/rust-compile-resolve-path.h
! 444b1582f28990f7c708b0c32d33b2d9  gcc/rust/backend/rust-compile-stmt.cc
! 7eaae12f4404b97c67616889118848f7  gcc/rust/backend/rust-compile-stmt.h
! 515c88a5749f227fa7c9fdbc3f5f2ab3  gcc/rust/backend/rust-compile-struct-field-expr.cc
! 4a84afcd02c8ec10a12465ae56badce7  gcc/rust/backend/rust-compile-struct-field-expr.h
! 0c0a3095ea809d1912f700d99e25130b  gcc/rust/backend/rust-compile-type.cc
! 0abd661ced89deb23d4ca4438a9ab1ac  gcc/rust/backend/rust-compile-type.h
! 27e71e120ad4985a215380f7d50b159e  gcc/rust/backend/rust-compile-var-decl.h
! 37eac62daf7f779ae40ae1dc09da0835  gcc/rust/backend/rust-compile.cc
! 6bce485c625f282c3149b9badee1b988  gcc/rust/backend/rust-compile.h
! e53af2e40a10f3aee236fbd3fcfbf5af  gcc/rust/backend/rust-constexpr.cc
! 3778b6c3ad2a1fad766013bb9e1d8ea3  gcc/rust/backend/rust-constexpr.h
! 1702ff85e464e0b56639208100740f85  gcc/rust/backend/rust-mangle.cc
! 01a3d78c605e3d350632d629fe716cdf  gcc/rust/backend/rust-mangle.h
! eea33201f4e8fd8543acdb8d7ce0ffa0  gcc/rust/backend/rust-tree.cc
! bfbc425e12abaec080661d8fadb78489  gcc/rust/backend/rust-tree.h
! eab5787a85e9133ae700a250b732a630  gcc/rust/checks/errors/privacy/rust-privacy-check.cc
! e19d49331621e78a4db569039fa93cbd  gcc/rust/checks/errors/privacy/rust-privacy-check.h
! 310089dc1b8ebffb3cf4724bddbe94cd  gcc/rust/checks/errors/privacy/rust-privacy-common.h
! 9155583d4acd7a16b84c02840c2880f0  gcc/rust/checks/errors/privacy/rust-privacy-ctx.cc
! 0235dd835d85b8265791e16414620989  gcc/rust/checks/errors/privacy/rust-privacy-ctx.h
! 89ccc693c22eab7fab69c238f52fcdbe  gcc/rust/checks/errors/privacy/rust-privacy-reporter.cc
! 0d5eccdc57f396bf42b9d54fda3a69c7  gcc/rust/checks/errors/privacy/rust-privacy-reporter.h
! fcba205499c77d450da1dff931f139b2  gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.cc
! 337b3395c770e1a51f60eaf55e905951  gcc/rust/checks/errors/privacy/rust-pub-restricted-visitor.h
! fdc1a11b86fb6ad6a3f900e2213790e0  gcc/rust/checks/errors/privacy/rust-reachability.cc
! a6cb2e472ab3c49b77f1d6903b575646  gcc/rust/checks/errors/privacy/rust-reachability.h
! 6c4ce883e54e7dfa11fe4ce5617e190e  gcc/rust/checks/errors/privacy/rust-visibility-resolver.cc
! 540ad6b8f062ae1ed267a07ed650a53e  gcc/rust/checks/errors/privacy/rust-visibility-resolver.h
! a764b9b366c1fa4d529a6c4775979c04  gcc/rust/checks/errors/rust-const-checker.cc
! 12afbcb2ea3b3f7fcaea84aeac6878b9  gcc/rust/checks/errors/rust-const-checker.h
! b250c490558b751017b7ecfaa026c545  gcc/rust/checks/errors/rust-feature-gate.cc
! e10c72f46ca441409b249ccadd8a14a0  gcc/rust/checks/errors/rust-feature-gate.h
! 7dfff60ed1fe14fd64ba92731e662444  gcc/rust/checks/errors/rust-feature.cc
! e30d6a76b88d44c0057026db0bd62094  gcc/rust/checks/errors/rust-feature.h
! eb71c595a209147005c19c0de9ee7182  gcc/rust/checks/errors/rust-unsafe-checker.cc
! 058f4007757bfedaabb4ea6659c9e4e6  gcc/rust/checks/errors/rust-unsafe-checker.h
! 79383ac60e76f44032a5a2604b668b3c  gcc/rust/checks/lints/rust-lint-marklive-base.h
! 8741b6d90b92f0b9686651b6c42a7c5b  gcc/rust/checks/lints/rust-lint-marklive.cc
! 9a8859185844db8fa124e6150535f2a0  gcc/rust/checks/lints/rust-lint-marklive.h
! c2a72255cf54722a0c94bfd58d88aee0  gcc/rust/checks/lints/rust-lint-scan-deadcode.h
! c206e4c68f6dbf510aa1b46635820e94  gcc/rust/checks/lints/rust-lint-unused-var.cc
! 872027b9499bb877baef2a75eecce40d  gcc/rust/checks/lints/rust-lint-unused-var.h
! 7161821ec0f958fd41a4783d670d35d2  gcc/rust/config-lang.in
! 89bb9bf0b2d8a1a3da0c635be1a7deba  gcc/rust/expand/rust-attribute-visitor.cc
! c8c86959f24f01dd5561a5e0c8ba6733  gcc/rust/expand/rust-attribute-visitor.h
! 1b6701f5444262162868463ec94ad8bf  gcc/rust/expand/rust-macro-builtins.cc
! 348fe4e10cc04414f24f2de0f00ac328  gcc/rust/expand/rust-macro-builtins.h
! 10b5e13334851e0063bb11a5a8f5522f  gcc/rust/expand/rust-macro-expand.cc
! ac74d5648d3bc323e9fcdbb4a5497ac2  gcc/rust/expand/rust-macro-expand.h
! 678c511331b01f4dadb6eecb01a38415  gcc/rust/expand/rust-macro-invoc-lexer.cc
! 777fc4af41ad1aadfb8257132bfc6e57  gcc/rust/expand/rust-macro-invoc-lexer.h
! 970e65f697b24ead3b134004001ceed8  gcc/rust/expand/rust-macro-substitute-ctx.cc
! 81a411e38ae39db9859d58b235cddf82  gcc/rust/expand/rust-macro-substitute-ctx.h
! 4408914500d85fc3e74601d745c43497  gcc/rust/hir/rust-ast-lower-base.cc
! ee0979cb87860f854f73b2741ab7a4fd  gcc/rust/hir/rust-ast-lower-base.h
! 2f4f2cb52abefdd75f640b33c72657e1  gcc/rust/hir/rust-ast-lower-block.h
! 130c35ba931356508bc40d320bafa8fc  gcc/rust/hir/rust-ast-lower-enumitem.h
! 72eec3c2f63b5647a23c23a839354305  gcc/rust/hir/rust-ast-lower-expr.cc
! e6a3676c9114bc603c7a3d7c19fc8dd0  gcc/rust/hir/rust-ast-lower-expr.h
! 2f9f282c45592ed1a397e0e06f704adb  gcc/rust/hir/rust-ast-lower-extern.h
! 83299212d844641232368a367ee3401d  gcc/rust/hir/rust-ast-lower-implitem.h
! 6c2d9a24b3556d5d8f9aadc1c26c18f3  gcc/rust/hir/rust-ast-lower-item.cc
! 989c88eedcc739231640b4d4170c771d  gcc/rust/hir/rust-ast-lower-item.h
! 7dd89e8c2da572b11bb5df4e67c3684c  gcc/rust/hir/rust-ast-lower-pattern.cc
! c241448812d8140538d64eef842b96ae  gcc/rust/hir/rust-ast-lower-pattern.h
! 4668bb806a3b05d060c9eafdc1c7f8af  gcc/rust/hir/rust-ast-lower-stmt.h
! c9cd2b94aa34bdd0fc94585f89febaa8  gcc/rust/hir/rust-ast-lower-struct-field-expr.h
! f6b4d19a625cf2995cfc2093456ed243  gcc/rust/hir/rust-ast-lower-type.cc
! 06959460e87ac52de0257d276c0d29f4  gcc/rust/hir/rust-ast-lower-type.h
! b89935499ed614dc162302be71466dbc  gcc/rust/hir/rust-ast-lower.cc
! 8a76486c07da8351758d42bd5e1d3366  gcc/rust/hir/rust-ast-lower.h
! fefb784a6e898f4a762d042907ea9db4  gcc/rust/hir/rust-hir-dump.cc
! dad9b406c18580970dd7320a0217e355  gcc/rust/hir/rust-hir-dump.h
! 711729b8f1bf43422eb0c23f7824ff6e  gcc/rust/hir/tree/rust-hir-expr.h
! 9ba32c065b48d3801bd5a18c366cc238  gcc/rust/hir/tree/rust-hir-full-decls.h
! c2473e5f4ded5764e94fe17b6a76355c  gcc/rust/hir/tree/rust-hir-full.h
! 43f750f92ae86367173ff047f935b1cc  gcc/rust/hir/tree/rust-hir-item.h
! 559f9f9f7ecc5975db2446bd4717c688  gcc/rust/hir/tree/rust-hir-path.h
! da4bdb723e8bf328e4840b6cade7349d  gcc/rust/hir/tree/rust-hir-pattern.h
! 47cf71c51a942f80d776af6c9c1ba731  gcc/rust/hir/tree/rust-hir-stmt.h
! 229354e209f9db0ef1224f77465f8993  gcc/rust/hir/tree/rust-hir-type.h
! 48df955bdd52b6ad71f4af4ad853363b  gcc/rust/hir/tree/rust-hir-visitor.h
! f5942499bc34d79e173ec803968c2993  gcc/rust/hir/tree/rust-hir.cc
! 49c9fe12fdc5cc1e7bbfeaa865f8c619  gcc/rust/hir/tree/rust-hir.h
! 59f0daa08e0c652ea3ddddc5846eb940  gcc/rust/lang-specs.h
! b0b7abe4a87fedfc780e6dfedda7597f  gcc/rust/lang.opt
! c6f99b837a92d3ec688f8efcdefa539e  gcc/rust/lex/rust-codepoint.h
! e820ddc853b123c42e529dd503951113  gcc/rust/lex/rust-lex.cc
! d9ff38b321508e2bdbe0f1f5e8858e46  gcc/rust/lex/rust-lex.h
! 484648b6e98e4a3024b0945510e92939  gcc/rust/lex/rust-token.cc
! 73f9583760a551d6ce8957f3a4cf414c  gcc/rust/lex/rust-token.h
! fe40f8618a9f5a5f007bc1a81fe45d3a  gcc/rust/logo.png
! 612d161dad5e6dc23a44c5ea2077ff4e  gcc/rust/metadata/rust-export-metadata.cc
! e2d360ef667f26975460109d6eee84d8  gcc/rust/metadata/rust-export-metadata.h
! ceb5723a31a190c64bf336812b0afdb7  gcc/rust/metadata/rust-extern-crate.cc
! 629ba1329feef1555e5b1e44500532f9  gcc/rust/metadata/rust-extern-crate.h
! 8aad3b9c829f76ca83a1abd65e7e50f7  gcc/rust/metadata/rust-import-archive.cc
! 08a9f59b7fa1c752ddd56ec54ef9ce17  gcc/rust/metadata/rust-imports.cc
! 945aa3bf11924e885f4a5f2d6b722426  gcc/rust/metadata/rust-imports.h
! 7a690d609665275258d6740f2a0c78f4  gcc/rust/parse/rust-cfg-parser.cc
! e0d1b97260228c2544bb509ee36eb811  gcc/rust/parse/rust-cfg-parser.h
! 67900a2cd0d8d4ae35f8eecd36887174  gcc/rust/parse/rust-parse-impl.h
! 04502997e11e20b51bc90e40a885751d  gcc/rust/parse/rust-parse.cc
! 39bf092d063bff707c09f54864652806  gcc/rust/parse/rust-parse.h
! efeabf2a327ec3a06a4e9f45fde7b9a0  gcc/rust/resolve/rust-ast-resolve-base.cc
! 94234ac9ec3d046fe94ad73c558550b8  gcc/rust/resolve/rust-ast-resolve-base.h
! 50320c4bbb314ee301b061b38c23f8fb  gcc/rust/resolve/rust-ast-resolve-expr.cc
! 5260f4c169d4582de7a24cc23b0c58a6  gcc/rust/resolve/rust-ast-resolve-expr.h
! 711449802ad78c638f93a3aa7eabe2ae  gcc/rust/resolve/rust-ast-resolve-implitem.h
! 782dd315e1e5254be55ee09eca25de58  gcc/rust/resolve/rust-ast-resolve-item.cc
! 3813e17c34dd1bd37cebcfdb938e0fdb  gcc/rust/resolve/rust-ast-resolve-item.h
! 8ab43b3ceb6792bf1ce9d82b576741e4  gcc/rust/resolve/rust-ast-resolve-path.cc
! 8f7538f75e5f33480723a4f78686dbc7  gcc/rust/resolve/rust-ast-resolve-path.h
! 1cd31bb59603e1912ba6657eceee5fc8  gcc/rust/resolve/rust-ast-resolve-pattern.cc
! 40cfe163eaa0505c31a8dfedd4f6d7a8  gcc/rust/resolve/rust-ast-resolve-pattern.h
! becbc923814971fba7c5452bbb5be3b9  gcc/rust/resolve/rust-ast-resolve-stmt.cc
! 2bd211f1ba6056a7902eb2d254d16faf  gcc/rust/resolve/rust-ast-resolve-stmt.h
! 0bc89d9766ffccbb93fb6880d2e18fa7  gcc/rust/resolve/rust-ast-resolve-struct-expr-field.cc
! 933aee5794750ffabf2542a56ba003aa  gcc/rust/resolve/rust-ast-resolve-struct-expr-field.h
! edb5e5b00c6c593be7b657c83efb2c5e  gcc/rust/resolve/rust-ast-resolve-toplevel.h
! 1dbbc4c71ee07505cd24f91e6bea3999  gcc/rust/resolve/rust-ast-resolve-type.cc
! e2d49d833a6a56b1c2e5cad8674d8b18  gcc/rust/resolve/rust-ast-resolve-type.h
! 1722bda2315dc359c3eee020204ad30c  gcc/rust/resolve/rust-ast-resolve.cc
! f520ab56e9d6ff9863cb46b83912bf01  gcc/rust/resolve/rust-ast-resolve.h
! 88b58dea9e62d35254c580d9fb627650  gcc/rust/resolve/rust-ast-verify-assignee.h
! 60fcf7c9dcd9d2f46ca7ea2dd1c22d0c  gcc/rust/resolve/rust-early-name-resolver.cc
! 46c47034f7578f5a73ac56e1c91381e1  gcc/rust/resolve/rust-early-name-resolver.h
! 4697bc75bc5498ffd6638c61d0344297  gcc/rust/resolve/rust-name-resolver.cc
! 47109d0abe43a6067b8099439dd32433  gcc/rust/resolve/rust-name-resolver.h
! 27789b3467d3be28a8ead33a19596b8a  gcc/rust/rust-backend.h
! b9686a1d45b51c8daf042d4ae5c9150b  gcc/rust/rust-diagnostics.cc
! 80892cfc283c1eb4dab2ce64822c03ec  gcc/rust/rust-diagnostics.h
! 4f6cbffd01ee2a5c0914ff57f8ebc8d0  gcc/rust/rust-gcc-diagnostics.cc
! c405c57a3a7ecd09dee2c2825d1febe7  gcc/rust/rust-gcc.cc
! 1a340fdfdcd188737100445378bc6c1f  gcc/rust/rust-gcc.h
! 1bc4e344b3e031fc9513f4909a9ef957  gcc/rust/rust-lang.cc
! 394052c885f784ed803e129318e93031  gcc/rust/rust-linemap.cc
! 76c0dd71407057526090124195115340  gcc/rust/rust-linemap.h
! ef14e8be9158abafa3a39eec1003705c  gcc/rust/rust-location.h
! bb4d0495dc2b7596b43c00844aadad2a  gcc/rust/rust-object-export.cc
! ecae93401af33d35694921afbab5448e  gcc/rust/rust-object-export.h
! 9c9080b2c3d052527acac19a0235adf0  gcc/rust/rust-session-manager.cc
! 6badcc90129005e5b5ca71e012c5fd65  gcc/rust/rust-session-manager.h
! af9f82fc026394da683994217bf238e4  gcc/rust/rust-system.h
! 6484d4d8e580de1ff80297be9c514627  gcc/rust/rustspec.cc
! 848375a24773263e7d523e953ca9296e  gcc/rust/typecheck/rust-autoderef.cc
! 339e32420cf6da29b299a9622629ea3a  gcc/rust/typecheck/rust-autoderef.h
! b95e8d4776a580fb5c0b01448e00e484  gcc/rust/typecheck/rust-casts.cc
! b4e8c98fec8f30239f03d7fc48369b11  gcc/rust/typecheck/rust-casts.h
! 073fbb2a96640d2bc60bc448a8552561  gcc/rust/typecheck/rust-coercion.cc
! b8239c32a2dc3f3db4421112ac1b209c  gcc/rust/typecheck/rust-coercion.h
! 06a17caabb1068e69d4f782118fe2822  gcc/rust/typecheck/rust-hir-dot-operator.cc
! 3a2e4c5c02617f045074509db5137d0c  gcc/rust/typecheck/rust-hir-dot-operator.h
! 784fedd7804bafef777cc6cdee6a2617  gcc/rust/typecheck/rust-hir-inherent-impl-overlap.h
! bf05443556d15907f777559667acef3b  gcc/rust/typecheck/rust-hir-path-probe.cc
! 67ef60d1f6d314240de5d56add68ed23  gcc/rust/typecheck/rust-hir-path-probe.h
! 3f4c12dc189ede4b5543b68e271927c4  gcc/rust/typecheck/rust-hir-trait-reference.cc
! b793a185f0e99c7d55a6d301fffa77b0  gcc/rust/typecheck/rust-hir-trait-reference.h
! 521901695fb45f282495ae2c65af406a  gcc/rust/typecheck/rust-hir-trait-resolve.cc
! 10954eb6863b4c14e70a3a4740883b00  gcc/rust/typecheck/rust-hir-trait-resolve.h
! 6b85c512ae8f77185942bdb45528c8e8  gcc/rust/typecheck/rust-hir-type-bounds.h
! d952ba86f985e23c02e5d633624db52e  gcc/rust/typecheck/rust-hir-type-check-base.cc
! 6c0afdc97b255d751152056ed5487d88  gcc/rust/typecheck/rust-hir-type-check-base.h
! a4c808cd7ad40da159bd8b11d0787a04  gcc/rust/typecheck/rust-hir-type-check-enumitem.cc
! cda8a93e6678b3dcc9333026a862868b  gcc/rust/typecheck/rust-hir-type-check-enumitem.h
! a7ab530ef52e6f89720d37b609693e9b  gcc/rust/typecheck/rust-hir-type-check-expr.cc
! 0f24866dd14f24cf3cd4424576630f96  gcc/rust/typecheck/rust-hir-type-check-expr.h
! 3030d1c6206f9f210050c057d20121f5  gcc/rust/typecheck/rust-hir-type-check-implitem.cc
! 064cafb7886a73841123d747dbf14fa6  gcc/rust/typecheck/rust-hir-type-check-implitem.h
! 148216f9809820b9ede4fc3673eed756  gcc/rust/typecheck/rust-hir-type-check-item.cc
! 89bf23e1651fa964598c65440479883d  gcc/rust/typecheck/rust-hir-type-check-item.h
! 5bb62077a6d13f29faa2bee8eb2dd029  gcc/rust/typecheck/rust-hir-type-check-path.cc
! b268336a138ba63e735e3d282960f31b  gcc/rust/typecheck/rust-hir-type-check-pattern.cc
! 162218e52f6bc531d88cab6823293d26  gcc/rust/typecheck/rust-hir-type-check-pattern.h
! abc0d096e60bad8045e0096dcb737f01  gcc/rust/typecheck/rust-hir-type-check-stmt.cc
! bfcbfd3eb919c87dc990f150354835e8  gcc/rust/typecheck/rust-hir-type-check-stmt.h
! d799f213f4c20193ba8f39f29a502475  gcc/rust/typecheck/rust-hir-type-check-struct-field.h
! f35b60114acb4af7f7a4f94496e5f93b  gcc/rust/typecheck/rust-hir-type-check-struct.cc
! 4fc3c7950d609cbef2bd30ed605c8930  gcc/rust/typecheck/rust-hir-type-check-toplevel.cc
! 9a453bc38e51c0355d81939126801d20  gcc/rust/typecheck/rust-hir-type-check-toplevel.h
! 93c523965ba10f3d6257646dd870702c  gcc/rust/typecheck/rust-hir-type-check-type.cc
! fd50e055b6de9596afcda6a10379fb0f  gcc/rust/typecheck/rust-hir-type-check-type.h
! c08547325a8608ad8345b67b5d0ea743  gcc/rust/typecheck/rust-hir-type-check-util.cc
! e2887f3b7884376f561417dd5b5b7b5b  gcc/rust/typecheck/rust-hir-type-check-util.h
! eebd011435f05611cd5f5b26d115848f  gcc/rust/typecheck/rust-hir-type-check.cc
! cffaa560b70ce9eed49b34aad33413ab  gcc/rust/typecheck/rust-hir-type-check.h
! 5df2e0c38aa6ef48e853b8bb55cc4a32  gcc/rust/typecheck/rust-substitution-mapper.cc
! 347a33d587b9ff9c55e39bed8fdd24a9  gcc/rust/typecheck/rust-substitution-mapper.h
! e2b8ebbc8250e690a5519e9a2b44f938  gcc/rust/typecheck/rust-tycheck-dump.h
! 9166c231f24cd7380b93e727a1bb8ad3  gcc/rust/typecheck/rust-type-util.cc
! 9e962b786fe666df2c76a497be2b516f  gcc/rust/typecheck/rust-type-util.h
! f0336842dee7a7987eb8d01094ff1024  gcc/rust/typecheck/rust-typecheck-context.cc
! f9c9083e339a92252dc38b165d422107  gcc/rust/typecheck/rust-tyty-bounds.cc
! 23db29099dcbda81daa1e7ba06b762bb  gcc/rust/typecheck/rust-tyty-bounds.h
! 65634a39024fe1d2ed7542b6c04ed587  gcc/rust/typecheck/rust-tyty-call.cc
! 2eb1c2b20c6fc7343fc594b7cd8f3939  gcc/rust/typecheck/rust-tyty-call.h
! d784ffa4984d1d66ebb461e50a86d653  gcc/rust/typecheck/rust-tyty-cmp.h
! 43e7ddbe749b75f71cfaec6c069adb3f  gcc/rust/typecheck/rust-tyty-subst.cc
! e84aff71b5662833342c1b9fab9a3988  gcc/rust/typecheck/rust-tyty-subst.h
! 6070355cab3f211c4acb59805275f54a  gcc/rust/typecheck/rust-tyty-util.cc
! 41f21b52e26829dc85788abe67cc4378  gcc/rust/typecheck/rust-tyty-util.h
! 87aec613c9ac9cc7e3d16c7b672b138c  gcc/rust/typecheck/rust-tyty-visitor.h
! 4ef669c74e508c8670460b79bd0f41d1  gcc/rust/typecheck/rust-tyty.cc
! 3df71f9a6121c917e03484303e53856a  gcc/rust/typecheck/rust-tyty.h
! a5fa07bb4944bf64f57ebf289039714a  gcc/rust/typecheck/rust-unify.cc
! 129c7af2a2ef08a0059db233cc1d3d11  gcc/rust/typecheck/rust-unify.h
! 2766e16bf2a664d25f1de62ae4ac9cbb  gcc/rust/util/fnv-hash.h
! 0fd19d0aae94954d1e41e0444087755b  gcc/rust/util/rust-abi.cc
! 0e1084fdb015c6075d1f7ef1f9d3d493  gcc/rust/util/rust-abi.h
! 940016c3f380752b8e9167d7a5d64adf  gcc/rust/util/rust-attributes.cc
! 077f7c1df62c27c039a90736e8575530  gcc/rust/util/rust-attributes.h
! 7cbd1a333b6a2e8b95c06e64964cf901  gcc/rust/util/rust-base62.cc
! 46213677168a1a295b7fe5fd94eb17a1  gcc/rust/util/rust-base62.h
! facb19b852cdcf8c4369d47361155f17  gcc/rust/util/rust-buffered-queue.h
! ff347a44ae100db82dfb3aefcdc90587  gcc/rust/util/rust-canonical-path.h
! 86e66d4faceda8f58ff48803b0d2d5fd  gcc/rust/util/rust-common.h
! cd5f12472005f7728a088846d60e10dd  gcc/rust/util/rust-hir-map.cc
! 953a508993d31e0add811569413d5a22  gcc/rust/util/rust-hir-map.h
! 506b43dd60eb3b3cb0646b0c1a18b97e  gcc/rust/util/rust-identifier.h
! 09f3fc6e88b5d8e9ea4140d36f5bc223  gcc/rust/util/rust-inline-visitor.h
! 496b4d70d465ced191c22d4097534c35  gcc/rust/util/rust-lang-item.h
! b0f7938556c5f89dd0b185262a802863  gcc/rust/util/rust-make-unique.h
! d232582149c89fb9b81673f0401215ce  gcc/rust/util/rust-mapping-common.h
! 774c2182ba7c26565943348c2ca85904  gcc/rust/util/rust-operators.h
! bcb014de055be4bd670a855996cf7b0b  gcc/rust/util/rust-optional-test.cc
! 9bf0b870b64bae5f296ce75faaf9235c  gcc/rust/util/rust-optional.h
! 439130189e8efa698252e497e92d3001  gcc/rust/util/rust-stacked-contexts.h
! f1524cf0a89f8e6d1690c7df47ba1968  gcc/sancov.cc
! 6df908981659071dab305a19e1eba66f  gcc/sanitizer.def
! ff24b1374f95e38aa726226e06ce3460  gcc/sanopt.cc
! b8397660a0f9df7e2c837560a09cf76f  gcc/sbitmap.cc
! da6c88394baa1765a131b3f0d567ee80  gcc/sbitmap.h
! 8fac49e3be1f450ee261cc0670522836  gcc/sched-deps.cc
! 883e4c1cfb8d6874ea26101d64a3926d  gcc/sched-ebb.cc
! a2867066c9b68c4f0aa66d8b1073b4c7  gcc/sched-int.h
! a80926315489963f74d8987b9416e022  gcc/sched-rgn.cc
! e859c7baabb6de874bdaab1771679ce9  gcc/sel-sched-dump.cc
! bae4a9d59e94a5d088f9d107088f952d  gcc/sel-sched-dump.h
! 472be0682aed003638c2d360ff29e4f1  gcc/sel-sched-ir.cc
! a17bb6009f575cf4b1498822334c105e  gcc/sel-sched-ir.h
! 42ad6758316b689c7637f952d101957e  gcc/sel-sched.cc
! 07b30e2e9b7492750a78a7c8aed79735  gcc/sel-sched.h
! e87a2bbed51663deec5497a932c445ab  gcc/selftest-diagnostic.cc
! f4720ca5fe1a15bf5df4e2b9a11348c8  gcc/selftest-diagnostic.h
! 59e1bc6d36c67b2006099ce0f4e2a889  gcc/selftest-rtl.cc
! cbc9470a27fa34dea5fe8c7a6155f5b6  gcc/selftest-rtl.h
! 4532f22d2cbbab6e48d5c85692a02f34  gcc/selftest-run-tests.cc
! 1471e9bb896393e0cd194127da4e9692  gcc/selftest.cc
! 15c318ed9453793603295837aa4a8383  gcc/selftest.h
! e76f38277fc6cee5fbcb63528b2b7bb5  gcc/sese.cc
! 42f06fb1e7f7569f309e645ed0c3f561  gcc/sese.h
! 14a1cf78cb35869136c9c3e73acc0d6e  gcc/shortest-paths.h
! 26f6d477d9f069a78eda9d06df0d0f87  gcc/shrink-wrap.cc
! b0025a475f4a0c82ee65a399ca0a034a  gcc/shrink-wrap.h
! bd49798c7ee1511bf4a17309e20fec94  gcc/signop.h
! e847e33394e8d441f78d0e5cc879f285  gcc/simplify-rtx.cc
! 3cf33b40d96ada5a63a4c5bed4043b03  gcc/sort.cc
! 6d6a6674cba8b72bf69b2d68045f5254  gcc/sparseset.cc
! 8e3e166004672f614cbdfd1ebcf014be  gcc/sparseset.h
! b5239fa69db4753960dc299de17ace09  gcc/spellcheck-tree.cc
! 25eed08bbd5566b8dcf1660bd3cea56e  gcc/spellcheck-tree.h
! 452a3af69c151f0b8f23e2a5ac717819  gcc/spellcheck.cc
! ad7127f772fbab419cdb95716fbd71e8  gcc/spellcheck.h
! 326f9ff956f491f8d52faf3e9c324c22  gcc/splay-tree-utils.cc
! ea45f2041106f72dbc25c1300639592a  gcc/splay-tree-utils.h
! 4dfd9537bb80c67c5683a7636cade1b7  gcc/splay-tree-utils.tcc
! dba0f0365eba7e1180b97b202ad14f26  gcc/sreal.cc
! 10f3d0286cc97f0f24db8eca8eeb6ef3  gcc/sreal.h
! 0a6045997c2b7a735fb72ed91ab27825  gcc/ssa-iterators.h
! 769da65620ef5546603093fe71ab3d01  gcc/ssa.h
! bca179f44085fd8edc737e4ba262fcfd  gcc/stack-ptr-mod.cc
! 8b9baba6588250d0568a6e79a77b40b1  gcc/statistics.cc
! 105fe33a71f974f02ef7f3263c08669a  gcc/statistics.h
! 0d3c777db64aa3d968af3598592d5b63  gcc/stmt.cc
! be9918eb7971ed2aa227d2a9556ab4c1  gcc/stmt.h
! ca456c74be9de499884af205fbfa10fe  gcc/stor-layout.cc
! b3072e70f0734ebf8ff3e86db3e31313  gcc/stor-layout.h
! fb76b9134a21d1db6565d257f40e5cff  gcc/store-motion.cc
! 11603a74567d833fec2f884670c0b974  gcc/streamer-hooks.cc
! 81010126ecf47f4e4f335e2aea2d4051  gcc/streamer-hooks.h
! d0687713f7992a01ead2c246f47c516f  gcc/stringpool.cc
! 999a6973a1cd3c7f04b5ad09bbb7ee91  gcc/stringpool.h
! d90c8b7c98120173b135aac34ce63406  gcc/substring-locations.cc
! 113b78073a7ece7f6f9d83da5509fb24  gcc/substring-locations.h
! 8ca9711265b5695339087d5948f10633  gcc/symbol-summary.h
! 950495d6efc98774e5ab462e8c0fa6cf  gcc/symtab-clones.cc
! e6c15bb100982c366657793f0ba5405f  gcc/symtab-clones.h
! 1c608d3879d04cf211f3aa235f52f971  gcc/symtab-thunks.cc
! 1df86ebb721c32a31780042b3a5afa4f  gcc/symtab-thunks.h
! c97cad962963c47c40c91b80acd45f98  gcc/symtab.cc
! ff3675d3b97df46f8e1ed96a13ce7dd7  gcc/sync-builtins.def
! ef52228ac63aeed82d7862bfa4730d7c  gcc/system.h
! 744e683ea9d5282ff763bca2bba4f90d  gcc/target-def.h
! e880e2e7aadcca94c17ee3bff654d152  gcc/target-globals.cc
! a4178410f0dd9596b6066554d292aa02  gcc/target-globals.h
! 8dc47cb819f4fa9f64f6243fdb29a1fd  gcc/target-hooks-macros.h
! ef72864327fae4a3df881df1d8c44b16  gcc/target-insns.def
! b4eef2f8d349daf0bd5a4412068c2291  gcc/target.def
! b829ed0032c899e107be2db349c913f3  gcc/target.h
! 811da275a2b9d3186a6decf96c01b0ed  gcc/targhooks.cc
! edb193a32070c4a7626fb75382def9b9  gcc/targhooks.h
  f39fcaa8197187283ccfed40107b426d  gcc/testsuite/.gitattributes
! ecff7341e0ac41b03e4c27f37816f30b  gcc/testsuite/ChangeLog
  862f04afbd87da2cc6bc432c3f28430f  gcc/testsuite/ChangeLog-1993-2007
  029a5d8dacd25eb5d4711452ac448e5b  gcc/testsuite/ChangeLog-2008
  13ac28c41d51b66b4ec40dba6bd50f39  gcc/testsuite/ChangeLog-2009
*************** c9ec5aa19ca3c027fb99e61cbe7aff7a  gcc/te
*** 6469,6488 ****
  91a08c35405a286b3ada0b88a667a7e5  gcc/testsuite/ChangeLog-2019
  4b46ab741e570fbea4c5e62643efc2bc  gcc/testsuite/ChangeLog-2020
  befd8924364e1b5fef37bb8113265b1a  gcc/testsuite/ChangeLog-2021
  e7518ff11c24876171978acda7f03080  gcc/testsuite/ChangeLog.graphite
  ec409caa3f1727e7dbe6b65dd8df068c  gcc/testsuite/ChangeLog.jit
  4e315f3ead950078f8af109b2d771220  gcc/testsuite/ChangeLog.ptr
  b2adb3e6b3129c9473b7e401edb63a71  gcc/testsuite/ChangeLog.tree-ssa
! 69c146daa9f05c5b7095c4f980a8d5d2  gcc/testsuite/README
! 04a6e2dd58cd2ed03019db60742d5258  gcc/testsuite/README.compat
! 32f708eb2a3bbf2580770b415a48b62d  gcc/testsuite/README.gcc
  2ad7c00ea00d78f6d6ee090f7894dadc  gcc/testsuite/ada/.gitignore
  4004844198395fe50ecb798ed5d30f4b  gcc/testsuite/ada/acats/elabd.lst
  b32871a59b0c07cb4eda259b98fa6aab  gcc/testsuite/ada/acats/floatstore.lst
  bb4e4f9d3c0e72730e0bf397d375689c  gcc/testsuite/ada/acats/norun.lst
  17a66c0b337fb03b6f449227ed33297c  gcc/testsuite/ada/acats/overflow.lst
  1485f263dfb9303b015015ae88161a8b  gcc/testsuite/ada/acats/run_acats.sh
! 99f08957d80806465fb1b48a59fdf892  gcc/testsuite/ada/acats/run_all.sh
  6467abb463602aeb04583b3822f653f4  gcc/testsuite/ada/acats/run_test.exp
  5723a26fced8721c3e90e6e7a9ba2a23  gcc/testsuite/ada/acats/stackcheck.lst
  feaec71549d40900aa5bcbd842c9fa57  gcc/testsuite/ada/acats/support/acats26.lst
--- 7695,7715 ----
  91a08c35405a286b3ada0b88a667a7e5  gcc/testsuite/ChangeLog-2019
  4b46ab741e570fbea4c5e62643efc2bc  gcc/testsuite/ChangeLog-2020
  befd8924364e1b5fef37bb8113265b1a  gcc/testsuite/ChangeLog-2021
+ cf2209a3e7faba16c6291ff4216ded98  gcc/testsuite/ChangeLog-2022
  e7518ff11c24876171978acda7f03080  gcc/testsuite/ChangeLog.graphite
  ec409caa3f1727e7dbe6b65dd8df068c  gcc/testsuite/ChangeLog.jit
  4e315f3ead950078f8af109b2d771220  gcc/testsuite/ChangeLog.ptr
  b2adb3e6b3129c9473b7e401edb63a71  gcc/testsuite/ChangeLog.tree-ssa
! 515302a58b174f4f7457a1d74c3993d0  gcc/testsuite/README
! bbea33cd11cbe5cb953d09d74f5a80e9  gcc/testsuite/README.compat
! 346af5a485ddb21166f74c4c3a4b954c  gcc/testsuite/README.gcc
  2ad7c00ea00d78f6d6ee090f7894dadc  gcc/testsuite/ada/.gitignore
  4004844198395fe50ecb798ed5d30f4b  gcc/testsuite/ada/acats/elabd.lst
  b32871a59b0c07cb4eda259b98fa6aab  gcc/testsuite/ada/acats/floatstore.lst
  bb4e4f9d3c0e72730e0bf397d375689c  gcc/testsuite/ada/acats/norun.lst
  17a66c0b337fb03b6f449227ed33297c  gcc/testsuite/ada/acats/overflow.lst
  1485f263dfb9303b015015ae88161a8b  gcc/testsuite/ada/acats/run_acats.sh
! 71bb2dcd4df7ad579edf271669be44d6  gcc/testsuite/ada/acats/run_all.sh
  6467abb463602aeb04583b3822f653f4  gcc/testsuite/ada/acats/run_test.exp
  5723a26fced8721c3e90e6e7a9ba2a23  gcc/testsuite/ada/acats/stackcheck.lst
  feaec71549d40900aa5bcbd842c9fa57  gcc/testsuite/ada/acats/support/acats26.lst
*************** ae85096226db49d6155303ac5a238c4f  gcc/te
*** 9086,9091 ****
--- 10313,10319 ----
  a7634a62a2c327ea1954c160e43b6d3d  gcc/testsuite/c-c++-common/Waddress-4.c
  73aa6e9b17719a2006689e3efff2c01e  gcc/testsuite/c-c++-common/Waddress-5.c
  3516a006e99c58af12e0922fe48fb612  gcc/testsuite/c-c++-common/Waddress-6.c
+ 7787aa4bd5844adb5d11c348c47000b2  gcc/testsuite/c-c++-common/Waddress-7.c
  cc70faf06727814cce7b45e0a0d0614d  gcc/testsuite/c-c++-common/Waddress-of-packed-member-1.c
  76fa33c917471922e94d50763fda451c  gcc/testsuite/c-c++-common/Waddress-of-packed-member-2.c
  273f580aad8918060378ff0f64998aa7  gcc/testsuite/c-c++-common/Walloca-larger-than.c
*************** c51902099b5071373c02eb23d9a61aab  gcc/te
*** 9098,9104 ****
  9b53f623c31e9c02bcd8e8045056e09d  gcc/testsuite/c-c++-common/Warray-bounds-7.c
  8c8f0a3b217c247195f32bdfc2d93c74  gcc/testsuite/c-c++-common/Warray-bounds-8.c
  2c4fa0b8c2a4b67bf8ba5136d06f762c  gcc/testsuite/c-c++-common/Warray-bounds-9.c
! ad210b6699449d7c2f1c95f9c363d606  gcc/testsuite/c-c++-common/Warray-bounds.c
  1465c746ce0da634140bd11994689fb1  gcc/testsuite/c-c++-common/Warray-compare-1.c
  86563e27b22c96809703786cd874a440  gcc/testsuite/c-c++-common/Warray-compare-2.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/c-c++-common/Wattributes-2.c
--- 10326,10332 ----
  9b53f623c31e9c02bcd8e8045056e09d  gcc/testsuite/c-c++-common/Warray-bounds-7.c
  8c8f0a3b217c247195f32bdfc2d93c74  gcc/testsuite/c-c++-common/Warray-bounds-8.c
  2c4fa0b8c2a4b67bf8ba5136d06f762c  gcc/testsuite/c-c++-common/Warray-bounds-9.c
! 923b706d858a721ad9d14b4f36ff9bf7  gcc/testsuite/c-c++-common/Warray-bounds.c
  1465c746ce0da634140bd11994689fb1  gcc/testsuite/c-c++-common/Warray-compare-1.c
  86563e27b22c96809703786cd874a440  gcc/testsuite/c-c++-common/Warray-compare-2.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/c-c++-common/Wattributes-2.c
*************** e3564dd628cf8de1e82dd5739305f30d  gcc/te
*** 9119,9124 ****
--- 10347,10354 ----
  e536d64e9379d6bc6925ec335006b6ef  gcc/testsuite/c-c++-common/Wbidi-chars-21.c
  7b8b5de94c2fe054521837605cc50bc5  gcc/testsuite/c-c++-common/Wbidi-chars-22.c
  0b0df64f765ef60ed59e384aa26aee66  gcc/testsuite/c-c++-common/Wbidi-chars-23.c
+ 6e6c920cf00ab8375092419dc2cb9aa8  gcc/testsuite/c-c++-common/Wbidi-chars-24.c
+ 7c12e79832875b3aa368466f7fa8c1d3  gcc/testsuite/c-c++-common/Wbidi-chars-25.c
  742ee33fd0300615b08a5fe0b00649ad  gcc/testsuite/c-c++-common/Wbidi-chars-3.c
  5ddbdaf462456c7fe7718bf4a6101a52  gcc/testsuite/c-c++-common/Wbidi-chars-4.c
  857e0d28756f79a91dfa4f0bf989be7c  gcc/testsuite/c-c++-common/Wbidi-chars-5.c
*************** cb1d5b99aa4eae2a0cb9a5598c7c0793  gcc/te
*** 9132,9140 ****
  da6daa27c49af7ff04e05ae804b39498  gcc/testsuite/c-c++-common/Wbool-compare-3.c
  1e2599302495a0ca253f12d48266d41c  gcc/testsuite/c-c++-common/Wbool-operation-1.c
  f2f147da469690b30dd805170ff61ecc  gcc/testsuite/c-c++-common/Wbuiltin-declaration-mismatch-1.c
! 45be42aaa994b5736f540c4e6d92bc7d  gcc/testsuite/c-c++-common/Wcast-align.c
  3284d45e5b10b003d6138432e1e5a237  gcc/testsuite/c-c++-common/Wcast-function-type.c
  ca0f9328a3d035930d143d8a411eac87  gcc/testsuite/c-c++-common/Wcast-qual-1.c
  1d38351fe1071b2ef958b41c05ca820e  gcc/testsuite/c-c++-common/Wconversion-pr40752.c
  2e4a0b1e36380af2fa8d3c763dd4836d  gcc/testsuite/c-c++-common/Wconversion-pr40752a.c
  dc21d1a3f0da436f1e88f7b24881a6aa  gcc/testsuite/c-c++-common/Wconversion-pr40752b.c
--- 10362,10371 ----
  da6daa27c49af7ff04e05ae804b39498  gcc/testsuite/c-c++-common/Wbool-compare-3.c
  1e2599302495a0ca253f12d48266d41c  gcc/testsuite/c-c++-common/Wbool-operation-1.c
  f2f147da469690b30dd805170ff61ecc  gcc/testsuite/c-c++-common/Wbuiltin-declaration-mismatch-1.c
! 61802d2a2cafd866447c5949a369597e  gcc/testsuite/c-c++-common/Wcast-align.c
  3284d45e5b10b003d6138432e1e5a237  gcc/testsuite/c-c++-common/Wcast-function-type.c
  ca0f9328a3d035930d143d8a411eac87  gcc/testsuite/c-c++-common/Wcast-qual-1.c
+ deb892f0207d50337a54adc14936a46b  gcc/testsuite/c-c++-common/Wconversion-1.c
  1d38351fe1071b2ef958b41c05ca820e  gcc/testsuite/c-c++-common/Wconversion-pr40752.c
  2e4a0b1e36380af2fa8d3c763dd4836d  gcc/testsuite/c-c++-common/Wconversion-pr40752a.c
  dc21d1a3f0da436f1e88f7b24881a6aa  gcc/testsuite/c-c++-common/Wconversion-pr40752b.c
*************** bb6692f219b1f0fff84900944e5cbbb4  gcc/te
*** 9143,9155 ****
  f4c88a37de8b9cf0f4dfe3e1bc876a01  gcc/testsuite/c-c++-common/Wdangling-else-2.c
  ea18cf61a2996e250f28de9ce0131778  gcc/testsuite/c-c++-common/Wdangling-else-3.c
  a476cd08d04537a1546143f21ae9ed21  gcc/testsuite/c-c++-common/Wdangling-else-4.c
  6516d4611bf9348a8fa38ab7ea7e60b1  gcc/testsuite/c-c++-common/Wdangling-pointer-2.c
  f3145c655104e18743ecb5afae49ea1a  gcc/testsuite/c-c++-common/Wdangling-pointer-3.c
  57948dbb46716b784119183c0ecfc8e6  gcc/testsuite/c-c++-common/Wdangling-pointer-4.c
! 88e769d825fd74f4b12ac03358df9839  gcc/testsuite/c-c++-common/Wdangling-pointer-5.c
  0267389602bccf5974267c04b864b33b  gcc/testsuite/c-c++-common/Wdangling-pointer-6.c
  ff3de265fbccf3612a0ffb10010db450  gcc/testsuite/c-c++-common/Wdangling-pointer-7.c
  d9ebfe45a2e22628c68723c17e000678  gcc/testsuite/c-c++-common/Wdangling-pointer-8.c
  96a9e6d56248f8f913daf667a15473f1  gcc/testsuite/c-c++-common/Wdangling-pointer.c
  df5ffd2746b9c571dd4ecaec40584254  gcc/testsuite/c-c++-common/Wduplicated-branches-1.c
  36747e99be11c2fa6022dbb012b5e657  gcc/testsuite/c-c++-common/Wduplicated-branches-10.c
--- 10374,10388 ----
  f4c88a37de8b9cf0f4dfe3e1bc876a01  gcc/testsuite/c-c++-common/Wdangling-else-2.c
  ea18cf61a2996e250f28de9ce0131778  gcc/testsuite/c-c++-common/Wdangling-else-3.c
  a476cd08d04537a1546143f21ae9ed21  gcc/testsuite/c-c++-common/Wdangling-else-4.c
+ 89e871dbd34fb7b5d15c84b5480f0075  gcc/testsuite/c-c++-common/Wdangling-pointer-10.c
  6516d4611bf9348a8fa38ab7ea7e60b1  gcc/testsuite/c-c++-common/Wdangling-pointer-2.c
  f3145c655104e18743ecb5afae49ea1a  gcc/testsuite/c-c++-common/Wdangling-pointer-3.c
  57948dbb46716b784119183c0ecfc8e6  gcc/testsuite/c-c++-common/Wdangling-pointer-4.c
! c7c3c9c8a8c26d75571dc6b1b5b1587b  gcc/testsuite/c-c++-common/Wdangling-pointer-5.c
  0267389602bccf5974267c04b864b33b  gcc/testsuite/c-c++-common/Wdangling-pointer-6.c
  ff3de265fbccf3612a0ffb10010db450  gcc/testsuite/c-c++-common/Wdangling-pointer-7.c
  d9ebfe45a2e22628c68723c17e000678  gcc/testsuite/c-c++-common/Wdangling-pointer-8.c
+ fe17411ea4717b5f12ae0efc348d1a36  gcc/testsuite/c-c++-common/Wdangling-pointer-9.c
  96a9e6d56248f8f913daf667a15473f1  gcc/testsuite/c-c++-common/Wdangling-pointer.c
  df5ffd2746b9c571dd4ecaec40584254  gcc/testsuite/c-c++-common/Wduplicated-branches-1.c
  36747e99be11c2fa6022dbb012b5e657  gcc/testsuite/c-c++-common/Wduplicated-branches-10.c
*************** c302c1a4893711fc86a172f63f8bd9dc  gcc/te
*** 9210,9222 ****
  cda3bb9ca57e369084621185346974dc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-36.c
  3c49eb8103fe7dc5e5ef9a32c553d418  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-37.c
  1a9973e86f2c609088bc53d6e4cb9eee  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-38.c
! 0b6d904bf060ceb9f9b0c1b12f434d8e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-39.c
  209de9c779ee1c2bb93781cd743aa8e7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-4.c
  006c2c882c026a00e907e95f539d0817  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-5.c
  35ef745805a62adf180cc3c34449ff39  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
  04da5c6a59c11741367cd83d451829d7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
  4b64bcc0915807f44996fe6274bf008e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-8.c
  5e51a81bf671fcaa946052b108021b4f  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-9.c
  43ae39f0679e1d383a18e2949e8dde25  gcc/testsuite/c-c++-common/Wint-in-bool-context-2.c
  eab9ee4fc9a53a45a514b59423382679  gcc/testsuite/c-c++-common/Wint-in-bool-context-3.c
  737e459a8220684ee75fa732a3b31eb8  gcc/testsuite/c-c++-common/Wint-in-bool-context.c
--- 10443,10460 ----
  cda3bb9ca57e369084621185346974dc  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-36.c
  3c49eb8103fe7dc5e5ef9a32c553d418  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-37.c
  1a9973e86f2c609088bc53d6e4cb9eee  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-38.c
! fce73466e26730317c258d5fc5b3a7c0  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-39.c
  209de9c779ee1c2bb93781cd743aa8e7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-4.c
  006c2c882c026a00e907e95f539d0817  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-5.c
  35ef745805a62adf180cc3c34449ff39  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-6.c
  04da5c6a59c11741367cd83d451829d7  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-7.c
  4b64bcc0915807f44996fe6274bf008e  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-8.c
  5e51a81bf671fcaa946052b108021b4f  gcc/testsuite/c-c++-common/Wimplicit-fallthrough-9.c
+ 3bc8a49cdd575f24293238a96a38940e  gcc/testsuite/c-c++-common/Winit-self1.c
+ 7276fa534f823d8b6f1dcb1d4abe7641  gcc/testsuite/c-c++-common/Winit-self2.c
+ 55cc9db21da5484cb9b2e7ab0411c3fe  gcc/testsuite/c-c++-common/Winit-self3.c
+ 28900a67f42e91c722f58912a7cfd077  gcc/testsuite/c-c++-common/Winit-self4.c
+ 8f7025342f374ee28b1535af041aa602  gcc/testsuite/c-c++-common/Winit-self5.c
  43ae39f0679e1d383a18e2949e8dde25  gcc/testsuite/c-c++-common/Wint-in-bool-context-2.c
  eab9ee4fc9a53a45a514b59423382679  gcc/testsuite/c-c++-common/Wint-in-bool-context-3.c
  737e459a8220684ee75fa732a3b31eb8  gcc/testsuite/c-c++-common/Wint-in-bool-context.c
*************** e993f3bb55c7b2b80690d29d047b0351  gcc/te
*** 9261,9266 ****
--- 10499,10505 ----
  8346ffa7534d11b66db33f000da92e37  gcc/testsuite/c-c++-common/Wno-attributes-5.c
  205ab8d23caa0811de460e64eaaf4e45  gcc/testsuite/c-c++-common/Wno-attributes-6.c
  4f6ad8cac6b84de53049a5eea97fab49  gcc/testsuite/c-c++-common/Wno-builtin-declaration-mismatch-1.c
+ 55147e0859abecb8559ebc1985cface1  gcc/testsuite/c-c++-common/Wpadded.c
  b935c2a58d7f731bf0cccb6a7d11766c  gcc/testsuite/c-c++-common/Wparentheses-1.c
  0c7edfe9355052ed29a31dd7ba300828  gcc/testsuite/c-c++-common/Wparentheses-2.c
  ccb8ce6afa2243d9aec47e26a1e585f2  gcc/testsuite/c-c++-common/Wpointer-arith-1.c
*************** e68c59b3c604b0f464d1f4c02629a7a5  gcc/te
*** 9300,9312 ****
  fc40f165305f408a7e0fc682ac4e4e21  gcc/testsuite/c-c++-common/Wshift-overflow-8.c
  f6687e96d1a359321b94d5babcf73720  gcc/testsuite/c-c++-common/Wshift-overflow-9.c
  2095424b6b86a7ddbae9c94c16fa2157  gcc/testsuite/c-c++-common/Wsign-compare-1.c
  40bc1e540d092c06d14dc9842ee9cd03  gcc/testsuite/c-c++-common/Wsign-conversion-1.c
! c7eebf2a6120dfecf1a6ae7de1f49694  gcc/testsuite/c-c++-common/Wsizeof-array-div1.c
  60f2f0aa7f30ae4b7fc18937d32ed9b7  gcc/testsuite/c-c++-common/Wsizeof-pointer-div.c
  268f9f6b5ca637f309e4817c68deddda  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
  bf0b620625355f346eefd54a379f0ac2  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
  9435b893d35596d6e6c421a7d0ca6b4e  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess3.c
  c2f8af9a24cbf598244cbdf23a6eb007  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess4.c
  f65e675073fa6e887cf5c8b46811dbbd  gcc/testsuite/c-c++-common/Wstringop-overflow-2-novec.c
  72b026b6797ea3ac3a7342c55601477c  gcc/testsuite/c-c++-common/Wstringop-overflow-2.c
  ed599254a04855f3e360dc18fbdba9d9  gcc/testsuite/c-c++-common/Wstringop-overflow.c
--- 10539,10553 ----
  fc40f165305f408a7e0fc682ac4e4e21  gcc/testsuite/c-c++-common/Wshift-overflow-8.c
  f6687e96d1a359321b94d5babcf73720  gcc/testsuite/c-c++-common/Wshift-overflow-9.c
  2095424b6b86a7ddbae9c94c16fa2157  gcc/testsuite/c-c++-common/Wsign-compare-1.c
+ baefeae8b123d7fff8e835b68ec75bf4  gcc/testsuite/c-c++-common/Wsign-compare-2.c
  40bc1e540d092c06d14dc9842ee9cd03  gcc/testsuite/c-c++-common/Wsign-conversion-1.c
! 6df16f069de12c985079e6e69baa8bb0  gcc/testsuite/c-c++-common/Wsizeof-array-div1.c
  60f2f0aa7f30ae4b7fc18937d32ed9b7  gcc/testsuite/c-c++-common/Wsizeof-pointer-div.c
  268f9f6b5ca637f309e4817c68deddda  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess1.c
  bf0b620625355f346eefd54a379f0ac2  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess2.c
  9435b893d35596d6e6c421a7d0ca6b4e  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess3.c
  c2f8af9a24cbf598244cbdf23a6eb007  gcc/testsuite/c-c++-common/Wsizeof-pointer-memaccess4.c
+ def0eee4b52b80a22825e7e10a92ec0d  gcc/testsuite/c-c++-common/Wstrict-flex-arrays.c
  f65e675073fa6e887cf5c8b46811dbbd  gcc/testsuite/c-c++-common/Wstringop-overflow-2-novec.c
  72b026b6797ea3ac3a7342c55601477c  gcc/testsuite/c-c++-common/Wstringop-overflow-2.c
  ed599254a04855f3e360dc18fbdba9d9  gcc/testsuite/c-c++-common/Wstringop-overflow.c
*************** b9163d26f5124adacd165e32f8b32a62  gcc/te
*** 9314,9319 ****
--- 10555,10562 ----
  e43106fc454dedd36c41a975a04be5e3  gcc/testsuite/c-c++-common/Wstringop-truncation-3.c
  e80b7aaae365db3fe8339ddc534cc5c0  gcc/testsuite/c-c++-common/Wstringop-truncation-4.c
  8fbb5eb134edcf2c44483393cbe2582c  gcc/testsuite/c-c++-common/Wstringop-truncation.c
+ f60e65a487e1a2bb5e772e685e9e7853  gcc/testsuite/c-c++-common/Wsuggest-attribute-1.c
+ 02eb68d2e3d4ad8791936378fad680f6  gcc/testsuite/c-c++-common/Wswitch-1.c
  9d794a1763749ee0180f56ce7aed6d0c  gcc/testsuite/c-c++-common/Wswitch-outside-range-1.c
  91da5133e61260ea9e9663f1e6a778fd  gcc/testsuite/c-c++-common/Wswitch-outside-range-2.c
  e47c13cfff5cd19e684db7748de8566d  gcc/testsuite/c-c++-common/Wswitch-outside-range-3.c
*************** f79bc4a80b6890a56ed93a450311aa3f  gcc/te
*** 9343,9348 ****
--- 10586,10592 ----
  4cf8b02a3b864706401fd6b605f0f57f  gcc/testsuite/c-c++-common/Wunused-var-15.c
  9c1e8e695b2a8304922b1e0f0874f4cd  gcc/testsuite/c-c++-common/Wunused-var-16.c
  f7cf252f8fb24838c4491a1b681216d3  gcc/testsuite/c-c++-common/Wunused-var-17.c
+ 64cb9f09ee8144d6c20610746cdb14c4  gcc/testsuite/c-c++-common/Wunused-var-18.c
  5f69d6398e9b0fc829351a16f994916d  gcc/testsuite/c-c++-common/Wunused-var-2.c
  8504217c544401c14012c8e1a1c18970  gcc/testsuite/c-c++-common/Wunused-var-3.c
  43839f1fa5726ea0a0d6e063d7980642  gcc/testsuite/c-c++-common/Wunused-var-4.c
*************** f7cf252f8fb24838c4491a1b681216d3  gcc/te
*** 9355,9365 ****
  5c5a689bbd8d2064a1cf9417c75365db  gcc/testsuite/c-c++-common/Wuse-after-free-3.c
  a081939c072c3d03d878123df4595138  gcc/testsuite/c-c++-common/Wuse-after-free-4.c
  c1d4aac82aafc22d1b2884cf0190af84  gcc/testsuite/c-c++-common/Wuse-after-free-5.c
! acbac1460120e4d80cf537af7b4f0835  gcc/testsuite/c-c++-common/Wuse-after-free-6.c
  5d35423b98da25ba2e8266e892e6fa46  gcc/testsuite/c-c++-common/Wuse-after-free-7.c
  0ebe37f28e2842c7d2c1eb3a5adff498  gcc/testsuite/c-c++-common/Wuse-after-free.c
  65cf5a15ffd224b6b51f7d207aa29f27  gcc/testsuite/c-c++-common/Wvarargs-2.c
  70d4ab70f79cf2ba91c2d0552436e561  gcc/testsuite/c-c++-common/Wvarargs.c
  e104bcfe21abe9fcad2b191ce9dee6c6  gcc/testsuite/c-c++-common/addrtmp.c
  f39ce0b617da5fc9aba69733615ee0de  gcc/testsuite/c-c++-common/array-1.c
  15b241020a9a5497396b58539b2405ba  gcc/testsuite/c-c++-common/array-5.c
--- 10599,10614 ----
  5c5a689bbd8d2064a1cf9417c75365db  gcc/testsuite/c-c++-common/Wuse-after-free-3.c
  a081939c072c3d03d878123df4595138  gcc/testsuite/c-c++-common/Wuse-after-free-4.c
  c1d4aac82aafc22d1b2884cf0190af84  gcc/testsuite/c-c++-common/Wuse-after-free-5.c
! 36db0372dbb4c26ae588c54253ff87ed  gcc/testsuite/c-c++-common/Wuse-after-free-6.c
  5d35423b98da25ba2e8266e892e6fa46  gcc/testsuite/c-c++-common/Wuse-after-free-7.c
  0ebe37f28e2842c7d2c1eb3a5adff498  gcc/testsuite/c-c++-common/Wuse-after-free.c
  65cf5a15ffd224b6b51f7d207aa29f27  gcc/testsuite/c-c++-common/Wvarargs-2.c
  70d4ab70f79cf2ba91c2d0552436e561  gcc/testsuite/c-c++-common/Wvarargs.c
+ ebcd60416bbf75e22b9dd92e228025d6  gcc/testsuite/c-c++-common/Wxor-used-as-pow-1.c
+ ad5482751ddf2dc94039803360db239e  gcc/testsuite/c-c++-common/Wxor-used-as-pow-fixits.c
+ d53160459fbfc0f3090991a31aba40c4  gcc/testsuite/c-c++-common/Wxor-used-as-pow-pr107002-0.c
+ e57e6c0daf0a0a792c988d6e94db6eb0  gcc/testsuite/c-c++-common/Wxor-used-as-pow-pr107002-1.c
+ a30e7635b4706892b05aac416de6e298  gcc/testsuite/c-c++-common/Wxor-used-as-pow-pr107002-2.c
  e104bcfe21abe9fcad2b191ce9dee6c6  gcc/testsuite/c-c++-common/addrtmp.c
  f39ce0b617da5fc9aba69733615ee0de  gcc/testsuite/c-c++-common/array-1.c
  15b241020a9a5497396b58539b2405ba  gcc/testsuite/c-c++-common/array-5.c
*************** cc33621f0af40932dc13ca0bff4d3557  gcc/te
*** 9370,9376 ****
  72de90fafd160e4a777ef19bc09ff0d7  gcc/testsuite/c-c++-common/asan/alloca_big_alignment.c
  2bb6049bc37ecb2ca6971011cbefcc2a  gcc/testsuite/c-c++-common/asan/alloca_detect_custom_size.c
  adeb73c262eb712e84e2823a98c1199c  gcc/testsuite/c-c++-common/asan/alloca_instruments_all_paddings.c
! 26d4fb4c2d502b73e4750d7337c6faa6  gcc/testsuite/c-c++-common/asan/alloca_loop_unpoisoning.c
  648add575c0dbd9df398dc0058875eb1  gcc/testsuite/c-c++-common/asan/alloca_overflow_partial.c
  483882054d8d099b9769ca966f926bf0  gcc/testsuite/c-c++-common/asan/alloca_overflow_right.c
  f521c0adacbecee9cbfcbdd089681c95  gcc/testsuite/c-c++-common/asan/alloca_safe_access.c
--- 10619,10625 ----
  72de90fafd160e4a777ef19bc09ff0d7  gcc/testsuite/c-c++-common/asan/alloca_big_alignment.c
  2bb6049bc37ecb2ca6971011cbefcc2a  gcc/testsuite/c-c++-common/asan/alloca_detect_custom_size.c
  adeb73c262eb712e84e2823a98c1199c  gcc/testsuite/c-c++-common/asan/alloca_instruments_all_paddings.c
! c85999d97729c4ac43cdb8e1861fcc3b  gcc/testsuite/c-c++-common/asan/alloca_loop_unpoisoning.c
  648add575c0dbd9df398dc0058875eb1  gcc/testsuite/c-c++-common/asan/alloca_overflow_partial.c
  483882054d8d099b9769ca966f926bf0  gcc/testsuite/c-c++-common/asan/alloca_overflow_right.c
  f521c0adacbecee9cbfcbdd089681c95  gcc/testsuite/c-c++-common/asan/alloca_safe_access.c
*************** e4943a29b314a6337f7b56e003bd32eb  gcc/te
*** 9385,9394 ****
  a19feeb74b26953ebaaf91c93429fd81  gcc/testsuite/c-c++-common/asan/bitfield-5.c
  fc345f9432dbaf202b33b89e3729af4e  gcc/testsuite/c-c++-common/asan/clone-test-1.c
  2b7a63d20c047f64c3e1caa408ba593b  gcc/testsuite/c-c++-common/asan/force-inline-opt0-1.c
! 4530cbfea8c731b91ad6d80e1e832ab7  gcc/testsuite/c-c++-common/asan/global-overflow-1.c
  3e11274291024634a4a707ea2297e543  gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
  110b851a84d7abdb717efa4ccf904baf  gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
! 583c97672fe7272cc8e06d1fc5e3adfb  gcc/testsuite/c-c++-common/asan/heap-overflow-1.c
  915db5fd3e96749605b646bc5e5e0a5a  gcc/testsuite/c-c++-common/asan/inc.c
  e0d196ee96eadd2755e9d28ce9b687e6  gcc/testsuite/c-c++-common/asan/inline-kernel.c
  5c5faec9d18c20198397cf668e0f176a  gcc/testsuite/c-c++-common/asan/inline.c
--- 10634,10643 ----
  a19feeb74b26953ebaaf91c93429fd81  gcc/testsuite/c-c++-common/asan/bitfield-5.c
  fc345f9432dbaf202b33b89e3729af4e  gcc/testsuite/c-c++-common/asan/clone-test-1.c
  2b7a63d20c047f64c3e1caa408ba593b  gcc/testsuite/c-c++-common/asan/force-inline-opt0-1.c
! 975880b526115957805a2c88d97a041b  gcc/testsuite/c-c++-common/asan/global-overflow-1.c
  3e11274291024634a4a707ea2297e543  gcc/testsuite/c-c++-common/asan/halt_on_error-1.c
  110b851a84d7abdb717efa4ccf904baf  gcc/testsuite/c-c++-common/asan/halt_on_error-2.c
! 0f36dfab52ff6943d9873ac7bbb342a7  gcc/testsuite/c-c++-common/asan/heap-overflow-1.c
  915db5fd3e96749605b646bc5e5e0a5a  gcc/testsuite/c-c++-common/asan/inc.c
  e0d196ee96eadd2755e9d28ce9b687e6  gcc/testsuite/c-c++-common/asan/inline-kernel.c
  5c5faec9d18c20198397cf668e0f176a  gcc/testsuite/c-c++-common/asan/inline.c
*************** b40632dc7412e10c338cdcc965f676bc  gcc/te
*** 9431,9436 ****
--- 10680,10690 ----
  c8e34a9a26867d8e55d6f7b2f75c5ea0  gcc/testsuite/c-c++-common/asan/pointer-subtract-2.c
  376bf1099b761630007b594d0a92dcf7  gcc/testsuite/c-c++-common/asan/pointer-subtract-3.c
  21163244bb8e247a93b03aa6378144eb  gcc/testsuite/c-c++-common/asan/pointer-subtract-4.c
+ b71437991ec944059c8eab89238b375e  gcc/testsuite/c-c++-common/asan/pointer-subtract-5.c
+ 348a6cb46100b5290f9a4a26fcd15872  gcc/testsuite/c-c++-common/asan/pointer-subtract-6.c
+ 418bb97e42059c30459b53c6b783f7a7  gcc/testsuite/c-c++-common/asan/pointer-subtract-7.c
+ cc00a3c5a3fe4188220028449567b571  gcc/testsuite/c-c++-common/asan/pointer-subtract-8.c
+ 27a23ff6a864a5329615ef5ebf3f7059  gcc/testsuite/c-c++-common/asan/pr106558.c
  9a0dd3dcef02945c8967f40a29316496  gcc/testsuite/c-c++-common/asan/pr56330.c
  202bae43b2843228776d43c8d07c92c8  gcc/testsuite/c-c++-common/asan/pr59029.c
  65128b17436f6406d9e224257030e000  gcc/testsuite/c-c++-common/asan/pr59063-1.c
*************** a21b32c9f479778db8395e7fac76837f  gcc/te
*** 9465,9472 ****
  a9fb6d989eff5e97f0875a8f4a6476df  gcc/testsuite/c-c++-common/asan/sleep-before-dying-1.c
  4b0947a16bf112bb03aedc70b04ae51c  gcc/testsuite/c-c++-common/asan/stack-overflow-1.c
  87f920003dce859ad124f7acaad510ae  gcc/testsuite/c-c++-common/asan/strip-path-prefix-1.c
! d9ce105edef748a44d18c8149f186159  gcc/testsuite/c-c++-common/asan/strlen-overflow-1.c
! a69bb461bcd0b78ebef5606efa4ccbd1  gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c
  ba231380f930c8e385536084b126f8a6  gcc/testsuite/c-c++-common/asan/swapcontext-test-1.c
  a16171ad5a320a8fe7705639f3e9cb35  gcc/testsuite/c-c++-common/asan/use-after-free-1.c
  a789f5331525aaabcfdd779b2981edf6  gcc/testsuite/c-c++-common/asan/use-after-return-1.c
--- 10719,10726 ----
  a9fb6d989eff5e97f0875a8f4a6476df  gcc/testsuite/c-c++-common/asan/sleep-before-dying-1.c
  4b0947a16bf112bb03aedc70b04ae51c  gcc/testsuite/c-c++-common/asan/stack-overflow-1.c
  87f920003dce859ad124f7acaad510ae  gcc/testsuite/c-c++-common/asan/strip-path-prefix-1.c
! ac77f7488fa8f0e89a4ab95262319596  gcc/testsuite/c-c++-common/asan/strlen-overflow-1.c
! 6265da622688bcc368760909a7d28eba  gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c
  ba231380f930c8e385536084b126f8a6  gcc/testsuite/c-c++-common/asan/swapcontext-test-1.c
  a16171ad5a320a8fe7705639f3e9cb35  gcc/testsuite/c-c++-common/asan/use-after-free-1.c
  a789f5331525aaabcfdd779b2981edf6  gcc/testsuite/c-c++-common/asan/use-after-return-1.c
*************** b52858b1b0e17f71a6cbfe1dbc98f153  gcc/te
*** 9478,9488 ****
--- 10732,10746 ----
  23fd6d68a2d88cbcf8cd954faf8fb296  gcc/testsuite/c-c++-common/asmgoto-3.c
  dcd81f0d6cf4d767d2d3f42f805b143b  gcc/testsuite/c-c++-common/asmgoto-4.c
  3965a9ab5dc92c92b09bb770bf0f0749  gcc/testsuite/c-c++-common/attr-aligned-1.c
+ c8b48ce2fac15a2f605bcd1785482931  gcc/testsuite/c-c++-common/attr-cdtor-1.c
  e923f51b7486cc54ba78d31bc374766a  gcc/testsuite/c-c++-common/attr-copy.c
  7013572d9ddd96911ba5c9684a120afa  gcc/testsuite/c-c++-common/attr-fallthrough-1.c
  1fd32b4c2291451fdfca75ea5c3368e7  gcc/testsuite/c-c++-common/attr-fallthrough-2.c
+ fd41a6e627dfcd947dbd8dd26a44062b  gcc/testsuite/c-c++-common/attr-fd.c
  ecc5351c14d6a9924c9ba3fe13409d1d  gcc/testsuite/c-c++-common/attr-may-alias-1.c
  38e52e11c86808356af8a92c21eed6fb  gcc/testsuite/c-c++-common/attr-may-alias-2.c
+ 364272519b6085a158e6322027e6e8bc  gcc/testsuite/c-c++-common/attr-mode-1.c
+ 1dcacd679aa98047aca41218a5efaa7d  gcc/testsuite/c-c++-common/attr-mode-2.c
  c8b98a656dafef917e51ff4b5433e980  gcc/testsuite/c-c++-common/attr-nocf-check-1.c
  712e05b8d9078f47150e78b6b8a482d5  gcc/testsuite/c-c++-common/attr-nocf-check-2.c
  c646b644758e950a4110aea0b34c55f2  gcc/testsuite/c-c++-common/attr-nocf-check-3.c
*************** c16cfe2fc05f8ec7fa89428b9e32fef6  gcc/te
*** 9526,9532 ****
  5113c71e64eb505940e6121dbd1b0816  gcc/testsuite/c-c++-common/attributes-4.c
  debeca168f3a9a432da9b7fe19f105d0  gcc/testsuite/c-c++-common/attributes-enum-1.c
  05e6e3f334bd062d9e932f51ca25a73d  gcc/testsuite/c-c++-common/attributes-enum-2.c
! 3131054fcbf980eadae11132c783d2d3  gcc/testsuite/c-c++-common/auto-init-1.c
  4b56486d7ec65e9df698bb07a1e1d8d9  gcc/testsuite/c-c++-common/auto-init-10.c
  acc04566cca5062120daa675392bd4ac  gcc/testsuite/c-c++-common/auto-init-11.c
  1da3b70f4ede84f3f11e966fe4a7fef2  gcc/testsuite/c-c++-common/auto-init-12.c
--- 10784,10790 ----
  5113c71e64eb505940e6121dbd1b0816  gcc/testsuite/c-c++-common/attributes-4.c
  debeca168f3a9a432da9b7fe19f105d0  gcc/testsuite/c-c++-common/attributes-enum-1.c
  05e6e3f334bd062d9e932f51ca25a73d  gcc/testsuite/c-c++-common/attributes-enum-2.c
! 873b9a82d43814c610652065cb27bcd8  gcc/testsuite/c-c++-common/auto-init-1.c
  4b56486d7ec65e9df698bb07a1e1d8d9  gcc/testsuite/c-c++-common/auto-init-10.c
  acc04566cca5062120daa675392bd4ac  gcc/testsuite/c-c++-common/auto-init-11.c
  1da3b70f4ede84f3f11e966fe4a7fef2  gcc/testsuite/c-c++-common/auto-init-12.c
*************** acc04566cca5062120daa675392bd4ac  gcc/te
*** 9534,9546 ****
  4449dd9ead5e5cf924df3e11121b5fb4  gcc/testsuite/c-c++-common/auto-init-14.c
  e3b67fbebf6391441124743b1bfc679b  gcc/testsuite/c-c++-common/auto-init-15.c
  47596b12b605b20b22bcab204cb4ba44  gcc/testsuite/c-c++-common/auto-init-16.c
! 2b337316a80008e9f711b3b44eff336b  gcc/testsuite/c-c++-common/auto-init-2.c
  2e1d05f9bea092be65011bccbd213475  gcc/testsuite/c-c++-common/auto-init-3.c
  db8f56bdf0e9c7f911a1a3a2233a697d  gcc/testsuite/c-c++-common/auto-init-4.c
  c318d637078a9354b41c05599224f26b  gcc/testsuite/c-c++-common/auto-init-5.c
  31f4f59aeb97b3389f55dc44718de7ce  gcc/testsuite/c-c++-common/auto-init-6.c
! 9b9ce0895edb92d1cf3752fe18a2dfd5  gcc/testsuite/c-c++-common/auto-init-7.c
! 261302a2ed5ff58938633a1d2013bd37  gcc/testsuite/c-c++-common/auto-init-8.c
  30b428fd95d6b294d8a0c2210fcf8ae6  gcc/testsuite/c-c++-common/auto-init-9.c
  131a976bb3a6bb260f77ca3e48f8227f  gcc/testsuite/c-c++-common/auto-init-esra.c
  b845dd6471572bb727666776f13e77e9  gcc/testsuite/c-c++-common/auto-init-padding-1.c
--- 10792,10804 ----
  4449dd9ead5e5cf924df3e11121b5fb4  gcc/testsuite/c-c++-common/auto-init-14.c
  e3b67fbebf6391441124743b1bfc679b  gcc/testsuite/c-c++-common/auto-init-15.c
  47596b12b605b20b22bcab204cb4ba44  gcc/testsuite/c-c++-common/auto-init-16.c
! 6a7c8ad49b94484648c698b40233d42b  gcc/testsuite/c-c++-common/auto-init-2.c
  2e1d05f9bea092be65011bccbd213475  gcc/testsuite/c-c++-common/auto-init-3.c
  db8f56bdf0e9c7f911a1a3a2233a697d  gcc/testsuite/c-c++-common/auto-init-4.c
  c318d637078a9354b41c05599224f26b  gcc/testsuite/c-c++-common/auto-init-5.c
  31f4f59aeb97b3389f55dc44718de7ce  gcc/testsuite/c-c++-common/auto-init-6.c
! 09be0efa3e5383688a367234cfc82edd  gcc/testsuite/c-c++-common/auto-init-7.c
! 80cb220a611b0548842515c000b0e5c3  gcc/testsuite/c-c++-common/auto-init-8.c
  30b428fd95d6b294d8a0c2210fcf8ae6  gcc/testsuite/c-c++-common/auto-init-9.c
  131a976bb3a6bb260f77ca3e48f8227f  gcc/testsuite/c-c++-common/auto-init-esra.c
  b845dd6471572bb727666776f13e77e9  gcc/testsuite/c-c++-common/auto-init-padding-1.c
*************** e05263912b24ac871d65efa4a51d10ea  gcc/te
*** 9570,9575 ****
--- 10828,10834 ----
  3a349fcc5db93dcaf44a93c32735f04a  gcc/testsuite/c-c++-common/builtin_location.c
  2341b1258f7e71f5aeb2fc1ac6a17b27  gcc/testsuite/c-c++-common/builtins.c
  a15893a996b14e9ab79c08a9d37157ee  gcc/testsuite/c-c++-common/cold-1.c
+ 856043e4093da5eee730f0219ccb9f99  gcc/testsuite/c-c++-common/cold-2.c
  fc20dcb635dd1e825303cc47593a9155  gcc/testsuite/c-c++-common/conflict-markers-1.c
  c2ffea9f8039ad1708c1c073f6b3b25a  gcc/testsuite/c-c++-common/conflict-markers-10.c
  c83e3d1d9dca930d44de5fee29a51bbb  gcc/testsuite/c-c++-common/conflict-markers-11.c
*************** dfcddf8e03e527e614cad79d5530f49e  gcc/te
*** 9582,9589 ****
--- 10841,10859 ----
  fe9ba880903f66a472e33ffd221fe3ee  gcc/testsuite/c-c++-common/conflict-markers-8.c
  60862ce07b266f605ac33d7ec3a6ab37  gcc/testsuite/c-c++-common/conflict-markers-9.c
  2a61ee01bf6046a5b3ebef68f4abffe8  gcc/testsuite/c-c++-common/convert-vec-1.c
+ ffe803dd1d6571e5297ec04cfc1c4adf  gcc/testsuite/c-c++-common/cpp/Winvalid-utf8-1.c
+ a1e90535bc74b54612f33869fbdd1191  gcc/testsuite/c-c++-common/cpp/Winvalid-utf8-2.c
+ 92866c1a20bedc78e756dd2271f9d11d  gcc/testsuite/c-c++-common/cpp/Winvalid-utf8-3.c
  62a7104f94454920e2aea21e5d85503a  gcc/testsuite/c-c++-common/cpp/counter-2.c
  8685d36e43046dc3ae7ce373aa03821c  gcc/testsuite/c-c++-common/cpp/counter-3.c
+ c1ad8045fa5ff78965e7e9224f86ee93  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-1.c
+ b090341af8b5d9e1054e1c181b49de0d  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-2.c
+ 6def3229fcef1166c92df3bb39e54b95  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-3.c
+ 9dad1d5a2b5c29da641dddae14ee683a  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-4.c
+ 1c5e5ab47e2b82328c70acb424564ff8  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-5.c
+ 8c19a56e6dc4885880619af30aa033b8  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-6.c
+ 22531253762d0e337d9e77f7f7207100  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-7.c
+ 192545911c42ddd12e0c3f1f6b9e027d  gcc/testsuite/c-c++-common/cpp/delimited-escape-seq-8.c
  7df2c1d437a437ae20fe8cd33d071a1a  gcc/testsuite/c-c++-common/cpp/diagnostic-pragma-1.c
  da5e564f6cffb4d2f63384ba5d7351b1  gcc/testsuite/c-c++-common/cpp/diagnostic-pragma-2.c
  7e07a117bfa1cbd4313441da514b62a7  gcc/testsuite/c-c++-common/cpp/dir-only-1.c
*************** e4a82afc909a711b27adb1d72035a0f7  gcc/te
*** 9624,9629 ****
--- 10894,10907 ----
  b0dbf2ee0d65771fb476f1bead18e214  gcc/testsuite/c-c++-common/cpp/line-4.h
  ec867e7b9ed2db10d86511396a956702  gcc/testsuite/c-c++-common/cpp/macro-arg-count-1.c
  1ea6a04229ddcedf5e76f5218e8d0f3d  gcc/testsuite/c-c++-common/cpp/macro-arg-count-2.c
+ 0ffee7384c0f18a8548234a5f32d704b  gcc/testsuite/c-c++-common/cpp/macro-trace-1.c
+ 92e278890fa0451d83c7d27defae4895  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-1.c
+ 204b84f18b5fe895fe56d68b709a82c7  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-2.c
+ 06dfdc570cbe7073e409762eb65afda4  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-3.c
+ 4cbea41e60bb957213c3c1b18591a00a  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-4.c
+ c71b7387bdf03546b02b29790cc1a49f  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-5.c
+ f86bebfb846984a477366f8240a2ef94  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-6.c
+ 5f22002eeb9c67c80c58ab4db595cf15  gcc/testsuite/c-c++-common/cpp/named-universal-char-escape-7.c
  38afd926394292efa57d77eed0f14ef2  gcc/testsuite/c-c++-common/cpp/normalize-3.c
  c1473b6b7a5935bfbf0e28c2124d5918  gcc/testsuite/c-c++-common/cpp/openacc-define-1.c
  c9229fff2e95406401ff0e77f9e25e9b  gcc/testsuite/c-c++-common/cpp/openacc-define-2.c
*************** ac27af3ea0b119b95109334b03d48ca9  gcc/te
*** 9632,9637 ****
--- 10910,10917 ----
  1ba0ade791f40edbd80fddddb700282b  gcc/testsuite/c-c++-common/cpp/openmp-define-2.c
  88fdfa7ad0dd8169a90963238ee1847e  gcc/testsuite/c-c++-common/cpp/openmp-define-3.c
  fb93693065e3e66c29a51aa146b3d3fa  gcc/testsuite/c-c++-common/cpp/pr104147.c
+ 52031f4611a992f3a4ce30bfd206198d  gcc/testsuite/c-c++-common/cpp/pr108244-1.c
+ 923955687c7d11dfef99d344ff0d96a4  gcc/testsuite/c-c++-common/cpp/pr108244-2.c
  c85025f0def783f70f9bb6a4ea9a23f3  gcc/testsuite/c-c++-common/cpp/pr45457.c
  50c40c5b8912ad75a2e46fd06778339d  gcc/testsuite/c-c++-common/cpp/pr57580.c
  6b93142f33f13f29aa948ea5e779f1a0  gcc/testsuite/c-c++-common/cpp/pr58844-1.c
*************** c85025f0def783f70f9bb6a4ea9a23f3  gcc/te
*** 9642,9647 ****
--- 10922,10928 ----
  1f4c21df8e953c03a1e56e665ab6624d  gcc/testsuite/c-c++-common/cpp/pr63831-1.c
  a72a693524249dca84528ebc132082b5  gcc/testsuite/c-c++-common/cpp/pr63831-2.c
  fc6312863e2a09e397690651369f617d  gcc/testsuite/c-c++-common/cpp/pr65238-1.c
+ abbf11969659f50e6f3cef908d473f64  gcc/testsuite/c-c++-common/cpp/pr67046.c
  98b26af476c2ea78a482486746564d25  gcc/testsuite/c-c++-common/cpp/pr88974.c
  b9707fab2c32f9df25c7136a89dceeb4  gcc/testsuite/c-c++-common/cpp/pr91639-one.h
  c193497a1a06b2c72230e6146ff47080  gcc/testsuite/c-c++-common/cpp/pr91639-two.h
*************** e0679adbe0d4b1cebebea8c808d31d66  gcc/te
*** 9684,9690 ****
  8396e54be3fd4ced4b4e48c5c558f34f  gcc/testsuite/c-c++-common/cxxbitfields-6.c
  e48cf012715a725279208fd10940b8e2  gcc/testsuite/c-c++-common/dfp/call-by-value.c
  4d71532298674e27bb29f74b9b081bb9  gcc/testsuite/c-c++-common/dfp/cast.c
! 6de381732d2a2a650b9f507f67d47f69  gcc/testsuite/c-c++-common/dfp/compare-eq-const.c
  c11eca027c987ba1b234b4ef4f6918b9  gcc/testsuite/c-c++-common/dfp/compare-eq-d128.c
  dc0701c68a0bdc629262b6210a7dfbbc  gcc/testsuite/c-c++-common/dfp/compare-eq-d32.c
  e75dffcd7a36153256eeb717078f3431  gcc/testsuite/c-c++-common/dfp/compare-eq-d64.c
--- 10965,10971 ----
  8396e54be3fd4ced4b4e48c5c558f34f  gcc/testsuite/c-c++-common/cxxbitfields-6.c
  e48cf012715a725279208fd10940b8e2  gcc/testsuite/c-c++-common/dfp/call-by-value.c
  4d71532298674e27bb29f74b9b081bb9  gcc/testsuite/c-c++-common/dfp/cast.c
! f37c239c36265131f74a1ddcfbd28253  gcc/testsuite/c-c++-common/dfp/compare-eq-const.c
  c11eca027c987ba1b234b4ef4f6918b9  gcc/testsuite/c-c++-common/dfp/compare-eq-d128.c
  dc0701c68a0bdc629262b6210a7dfbbc  gcc/testsuite/c-c++-common/dfp/compare-eq-d32.c
  e75dffcd7a36153256eeb717078f3431  gcc/testsuite/c-c++-common/dfp/compare-eq-d64.c
*************** a9841a20285bcdb2adbe9839c78fc8dd  gcc/te
*** 9701,9707 ****
  e2e9daad46396f221aba14c404f30440  gcc/testsuite/c-c++-common/dfp/compare-special-d64.c
  2262ac229b10467a7e05b447cdea7d0f  gcc/testsuite/c-c++-common/dfp/compare-special.h
  5ae19ddb12150aa7b5ad2cfb552e91e1  gcc/testsuite/c-c++-common/dfp/constants-zero.c
! 8ebd3d3dcf5c1d0797443518d5ebcc8f  gcc/testsuite/c-c++-common/dfp/convert-bfp-10.c
  7faf6c06cc205bda491540b751adc498  gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c
  0df658317e126d934dbf35a413278b2e  gcc/testsuite/c-c++-common/dfp/convert-bfp-12.c
  0c191580ae39c29ae1ee4308791fca1b  gcc/testsuite/c-c++-common/dfp/convert-bfp-13.c
--- 10982,10988 ----
  e2e9daad46396f221aba14c404f30440  gcc/testsuite/c-c++-common/dfp/compare-special-d64.c
  2262ac229b10467a7e05b447cdea7d0f  gcc/testsuite/c-c++-common/dfp/compare-special.h
  5ae19ddb12150aa7b5ad2cfb552e91e1  gcc/testsuite/c-c++-common/dfp/constants-zero.c
! cd15b03a8d9701ae9c81e1fb07bf59be  gcc/testsuite/c-c++-common/dfp/convert-bfp-10.c
  7faf6c06cc205bda491540b751adc498  gcc/testsuite/c-c++-common/dfp/convert-bfp-11.c
  0df658317e126d934dbf35a413278b2e  gcc/testsuite/c-c++-common/dfp/convert-bfp-12.c
  0c191580ae39c29ae1ee4308791fca1b  gcc/testsuite/c-c++-common/dfp/convert-bfp-13.c
*************** c9123407c29a774521ebd7bcbedc7267  gcc/te
*** 9759,9775 ****
  d05625d2e21826d2d6d10470ca58acf5  gcc/testsuite/c-c++-common/dfp/pr39034.c
  8304d471411dcf8ad7044cbee85804fd  gcc/testsuite/c-c++-common/dfp/pr39035.c
  228bc580c2a735101390047780555fe4  gcc/testsuite/c-c++-common/dfp/pr39902.c
! c196cbea47bb11b9583daf73d01d28b0  gcc/testsuite/c-c++-common/dfp/pr39986.c
  ec9404dfa572066d29306781114781a5  gcc/testsuite/c-c++-common/dfp/signbit-1.c
  456277d5b72408e83b43399d5b3f3f55  gcc/testsuite/c-c++-common/dfp/signbit-2.c
  b55d67c31827320a4218c9bfa118857d  gcc/testsuite/c-c++-common/dfp/struct-layout-1.c
  48d67f7f36d890f8419440d99f232731  gcc/testsuite/c-c++-common/dfp/usual-arith-conv-const.c
  c0e0d2f46bf19ec2b6f3291f97a1ac27  gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c
! db9bceb8d4532f36dc3c3a966819fae5  gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
! 589c3904b0371f478d557d2c51976137  gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
! 4dd18e1345ed826947ceb2cfa6dc3e98  gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
! b8e8b964da963fa199d6837e8c15245d  gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
! e657bc2863209b4fe6fa23a9601a4597  gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
  7ba00026f4502cec45f9e81640ab2978  gcc/testsuite/c-c++-common/diagnostic-units-1.c
  a3932920c58cae162a8f51b19ff5c460  gcc/testsuite/c-c++-common/diagnostic-units-2.c
  82cb424e6ccab8351b892a0bc4f1b4e9  gcc/testsuite/c-c++-common/diagnostic-units-3.c
--- 11040,11067 ----
  d05625d2e21826d2d6d10470ca58acf5  gcc/testsuite/c-c++-common/dfp/pr39034.c
  8304d471411dcf8ad7044cbee85804fd  gcc/testsuite/c-c++-common/dfp/pr39035.c
  228bc580c2a735101390047780555fe4  gcc/testsuite/c-c++-common/dfp/pr39902.c
! 6ee1875dd1db096571ce8980f70878de  gcc/testsuite/c-c++-common/dfp/pr39986.c
  ec9404dfa572066d29306781114781a5  gcc/testsuite/c-c++-common/dfp/signbit-1.c
  456277d5b72408e83b43399d5b3f3f55  gcc/testsuite/c-c++-common/dfp/signbit-2.c
  b55d67c31827320a4218c9bfa118857d  gcc/testsuite/c-c++-common/dfp/struct-layout-1.c
  48d67f7f36d890f8419440d99f232731  gcc/testsuite/c-c++-common/dfp/usual-arith-conv-const.c
  c0e0d2f46bf19ec2b6f3291f97a1ac27  gcc/testsuite/c-c++-common/dfp/usual-arith-conv.c
! 984a1c8c602922c2de48d00783740125  gcc/testsuite/c-c++-common/diagnostic-format-json-1.c
! 71ccfbc19c485098132fc888d57d5090  gcc/testsuite/c-c++-common/diagnostic-format-json-2.c
! 47eb213385c528ba24a87a6e2f186c81  gcc/testsuite/c-c++-common/diagnostic-format-json-3.c
! a7b9e07d23c6427a01d23ab863342f6e  gcc/testsuite/c-c++-common/diagnostic-format-json-4.c
! 7fbe0cc64aa7d07496c725ebe19713d2  gcc/testsuite/c-c++-common/diagnostic-format-json-5.c
! 996443d0fabc6adf05cf16b92f765f59  gcc/testsuite/c-c++-common/diagnostic-format-json-file-1.c
! da2b4e33e5e980a8daa6837265eecf2c  gcc/testsuite/c-c++-common/diagnostic-format-json-stderr-1.c
! 6483737acd2b09472eb0b810ebe7c0c7  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-1.c
! e76f7da3b6ff122b724515225ddc93dc  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-2.c
! c9df2a60be9c299d6875bdd23d7a834e  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-3.c
! abde899158cd8dde619f570e28ece19c  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-4.c
! bc7567f6dad9c6310388c5b03041c3c6  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-Wbidi-chars.c
! 05ec2175ea6dd97bff8a07761d24df05  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-bad-utf8-pr109098-1.c
! eb3b3149b2a64707ddb3ffcb96b11775  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-bad-utf8-pr109098-2.c
! 943c6c886af57e82d1f9be77c286f4a3  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-bad-utf8-pr109098-3.c
! 0e87aea25cd7b234e81d5f1ee31d1e21  gcc/testsuite/c-c++-common/diagnostic-format-sarif-file-valid-CP850.c
  7ba00026f4502cec45f9e81640ab2978  gcc/testsuite/c-c++-common/diagnostic-units-1.c
  a3932920c58cae162a8f51b19ff5c460  gcc/testsuite/c-c++-common/diagnostic-units-2.c
  82cb424e6ccab8351b892a0bc4f1b4e9  gcc/testsuite/c-c++-common/diagnostic-units-3.c
*************** f1fea57305dfe837e7453401fd24f606  gcc/te
*** 9827,9840 ****
  154e13d09dbd32a818555841bcb2b393  gcc/testsuite/c-c++-common/goacc/cache-2.c
  d520e956ceb1443b8b3d0b100a48fa63  gcc/testsuite/c-c++-common/goacc/cache-3-1.c
  36f9abb3ac94c762f04511594ed7b548  gcc/testsuite/c-c++-common/goacc/cache-3-2.c
! 1a041f41d9bc4d458518fbb0129f7ddd  gcc/testsuite/c-c++-common/goacc/classify-kernels-parloops.c
! 7bc0daca0fb001d3841a4f0f7070d586  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized-parloops.c
! e2b00ec4ab145fcdcd6d67498680ca6e  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
! 5a89ee2242c2d7fd3fc99b8dcf69c213  gcc/testsuite/c-c++-common/goacc/classify-kernels.c
! e61818ed3afe6bb87e0ac3dc3d62903d  gcc/testsuite/c-c++-common/goacc/classify-parallel.c
  65c423f9b41b6cffd057a8939b4181f6  gcc/testsuite/c-c++-common/goacc/classify-routine-nohost.c
  279369dd84a9fbef34f83dc3aca28a00  gcc/testsuite/c-c++-common/goacc/classify-routine.c
! 4c2c3b64df5a2577c43684283c008d0e  gcc/testsuite/c-c++-common/goacc/classify-serial.c
  ed0df84115a0f8b333602804bdee2a95  gcc/testsuite/c-c++-common/goacc/clauses-fail.c
  8bfd01f209498815723e71000488572c  gcc/testsuite/c-c++-common/goacc/collapse-1.c
  a29008ff83202ed302993eae2ce59225  gcc/testsuite/c-c++-common/goacc/collapse-2.c
--- 11119,11132 ----
  154e13d09dbd32a818555841bcb2b393  gcc/testsuite/c-c++-common/goacc/cache-2.c
  d520e956ceb1443b8b3d0b100a48fa63  gcc/testsuite/c-c++-common/goacc/cache-3-1.c
  36f9abb3ac94c762f04511594ed7b548  gcc/testsuite/c-c++-common/goacc/cache-3-2.c
! 9daa29c22cc0660528399f7d7828729c  gcc/testsuite/c-c++-common/goacc/classify-kernels-parloops.c
! efb01912a3b48dfbd482291a92ff6dd6  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized-parloops.c
! 9631d05943a9db2055f3c8771eef6532  gcc/testsuite/c-c++-common/goacc/classify-kernels-unparallelized.c
! e2f344cd915053e478d1463a2ad67a70  gcc/testsuite/c-c++-common/goacc/classify-kernels.c
! 04ec7cbe09cf49c6763de53bbaf7d9ae  gcc/testsuite/c-c++-common/goacc/classify-parallel.c
  65c423f9b41b6cffd057a8939b4181f6  gcc/testsuite/c-c++-common/goacc/classify-routine-nohost.c
  279369dd84a9fbef34f83dc3aca28a00  gcc/testsuite/c-c++-common/goacc/classify-routine.c
! bc31e2ca37f62f8f279d15468976e7b5  gcc/testsuite/c-c++-common/goacc/classify-serial.c
  ed0df84115a0f8b333602804bdee2a95  gcc/testsuite/c-c++-common/goacc/clauses-fail.c
  8bfd01f209498815723e71000488572c  gcc/testsuite/c-c++-common/goacc/collapse-1.c
  a29008ff83202ed302993eae2ce59225  gcc/testsuite/c-c++-common/goacc/collapse-2.c
*************** df0c5b2a3f8fd74e59ef06f3c576902b  gcc/te
*** 9851,9857 ****
  49a1e1e29de03de0f3ad515f0e13524f  gcc/testsuite/c-c++-common/goacc/declare-2.c
  fbee36d1c4d6ed4bfdee66194ad75772  gcc/testsuite/c-c++-common/goacc/declare-pr90861.c
  229bed5ef7072db0fa428c10c115e33d  gcc/testsuite/c-c++-common/goacc/declare-pr94120.c
- 9f5e4fae993aecfc2adc27d4d8746053  gcc/testsuite/c-c++-common/goacc/deep-copy-arrayofstruct.c
  17b63246fd51599bad2716165cbcff0d  gcc/testsuite/c-c++-common/goacc/default-1.c
  8e4b3f87057e886c28e0ca3244adec22  gcc/testsuite/c-c++-common/goacc/default-2.c
  7d7b279607b90403d1fc926ab594dc28  gcc/testsuite/c-c++-common/goacc/default-3.c
--- 11143,11148 ----
*************** b3c20783edf8490b5b8bac932315ae0c  gcc/te
*** 9883,9894 ****
  fd810ebe54a80c58e76683e0a559234f  gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta.c
  e3a0f1c375f36ae3f072b97ca4be8af8  gcc/testsuite/c-c++-common/goacc/kernels-alias.c
  37219df46c20afb4e83e03c1789b55cd  gcc/testsuite/c-c++-common/goacc/kernels-counter-var-redundant-load.c
! dc5878971e2c2137e5f435ee5228012f  gcc/testsuite/c-c++-common/goacc/kernels-counter-vars-function-scope.c
  1fb43a4a25ac7b34ab3dcbb454fc6f1e  gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c
  9aa4bfb88d24d9625c6eb48089e08c2d  gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
  4fc17751a19f8c4386f7d2e0302a18b6  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100280-1.c
  49ab6ecc064ed1ad888a55e5df3758b1  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-1.c
! a0884cb50456db7d5b57b015e51087ac  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
  48f2502f8a0aebf5face12788c440d39  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
  10a6cd5b5bea6d4c0a490f27bdfaa4ed  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-4.c
  40c6c02497636688d79b463b16e260d4  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr103836-1-1.c
--- 11174,11185 ----
  fd810ebe54a80c58e76683e0a559234f  gcc/testsuite/c-c++-common/goacc/kernels-alias-ipa-pta.c
  e3a0f1c375f36ae3f072b97ca4be8af8  gcc/testsuite/c-c++-common/goacc/kernels-alias.c
  37219df46c20afb4e83e03c1789b55cd  gcc/testsuite/c-c++-common/goacc/kernels-counter-var-redundant-load.c
! 6aca1c79c10aeafe8ca15c0eb9396cfc  gcc/testsuite/c-c++-common/goacc/kernels-counter-vars-function-scope.c
  1fb43a4a25ac7b34ab3dcbb454fc6f1e  gcc/testsuite/c-c++-common/goacc/kernels-decompose-1.c
  9aa4bfb88d24d9625c6eb48089e08c2d  gcc/testsuite/c-c++-common/goacc/kernels-decompose-2.c
  4fc17751a19f8c4386f7d2e0302a18b6  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100280-1.c
  49ab6ecc064ed1ad888a55e5df3758b1  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-1.c
! 6c34e620573d947a285534d49dd6d599  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-2.c
  48f2502f8a0aebf5face12788c440d39  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-3.c
  10a6cd5b5bea6d4c0a490f27bdfaa4ed  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr100400-1-4.c
  40c6c02497636688d79b463b16e260d4  gcc/testsuite/c-c++-common/goacc/kernels-decompose-pr103836-1-1.c
*************** af37b31b976b1c0c41e3db72c626d179  gcc/te
*** 9907,9926 ****
  375d0db26deebb908509391d770e8db4  gcc/testsuite/c-c++-common/goacc/kernels-default.c
  e24acb47fd402e8856dba2a851ec9fe1  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c
  a773e0a329e214183ab547e9c6d55c76  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c
! 535f123fda0efa282f5f3677012209bf  gcc/testsuite/c-c++-common/goacc/kernels-loop-2.c
! afa80716468eaa944e0aa9879cc4acc7  gcc/testsuite/c-c++-common/goacc/kernels-loop-3.c
! 540cc6fa8df154a61351a23c75780f4f  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-2.c
! dcd0bc575d17be1941f29ab6d09e983a  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-enter-exit-2.c
! e087633670754b48bf908a69d0b09aec  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-enter-exit.c
! b48d03cd3a6081d5488adb2dc84bbde3  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-update.c
! 5b6d430eb64f84cb55cf3becf31d96d2  gcc/testsuite/c-c++-common/goacc/kernels-loop-data.c
! ad264fd75fdc471b2f7e5ff554f649e8  gcc/testsuite/c-c++-common/goacc/kernels-loop-g.c
! 35476f335af94fbd345732424e7b39b2  gcc/testsuite/c-c++-common/goacc/kernels-loop-mod-not-zero.c
! 58830358c63f5abf3d9724126f05aea6  gcc/testsuite/c-c++-common/goacc/kernels-loop-n.c
! ec40c24e83a292c270dabe16dce616b1  gcc/testsuite/c-c++-common/goacc/kernels-loop-nest.c
! 93beb29d82531ddbdc9032293d27147c  gcc/testsuite/c-c++-common/goacc/kernels-loop.c
! 156ffcf455b771557139b5053fe10218  gcc/testsuite/c-c++-common/goacc/kernels-one-counter-var.c
! 3561d1c3a912a2d2cd6f3cebe51f4cf5  gcc/testsuite/c-c++-common/goacc/kernels-parallel-loop-data-enter-exit.c
  ad44e931e1431a554772eeb05bb98d85  gcc/testsuite/c-c++-common/goacc/kernels-reduction.c
  45793754c2adf529b0a269c466ed2761  gcc/testsuite/c-c++-common/goacc/loop-1.c
  be8b041248798e31b7644ec272413df0  gcc/testsuite/c-c++-common/goacc/loop-2-kernels.c
--- 11198,11217 ----
  375d0db26deebb908509391d770e8db4  gcc/testsuite/c-c++-common/goacc/kernels-default.c
  e24acb47fd402e8856dba2a851ec9fe1  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction-n.c
  a773e0a329e214183ab547e9c6d55c76  gcc/testsuite/c-c++-common/goacc/kernels-double-reduction.c
! 06eeddc1679e17d038c8bb495b75e5fd  gcc/testsuite/c-c++-common/goacc/kernels-loop-2.c
! d2b07a035d2f4f2ee747cc05843d4ce6  gcc/testsuite/c-c++-common/goacc/kernels-loop-3.c
! 49eb954cfabd30f0636ae9abb1875da1  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-2.c
! 17467fe536a9144ff0dbead7f957335c  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-enter-exit-2.c
! 5acde8c588fcb0d3d2b944d98d7640d1  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-enter-exit.c
! 0ee6c52446e5e9be033fe0f63067d838  gcc/testsuite/c-c++-common/goacc/kernels-loop-data-update.c
! 029002a91886e67008d095aed5db831c  gcc/testsuite/c-c++-common/goacc/kernels-loop-data.c
! 486a4a9e8c8c40ec3fc38c311609fa85  gcc/testsuite/c-c++-common/goacc/kernels-loop-g.c
! 338050b7503da0e58b94bde563138113  gcc/testsuite/c-c++-common/goacc/kernels-loop-mod-not-zero.c
! 1c93a2626e543e6fcc45cb76521bb121  gcc/testsuite/c-c++-common/goacc/kernels-loop-n.c
! 0c9100831338aab46723948a495effe2  gcc/testsuite/c-c++-common/goacc/kernels-loop-nest.c
! b65c956e91267b2edf2ea5d4426177f3  gcc/testsuite/c-c++-common/goacc/kernels-loop.c
! ab9791a21ead66f4fa240637df1ecd72  gcc/testsuite/c-c++-common/goacc/kernels-one-counter-var.c
! 1e3218145aed238857cad1b7494531df  gcc/testsuite/c-c++-common/goacc/kernels-parallel-loop-data-enter-exit.c
  ad44e931e1431a554772eeb05bb98d85  gcc/testsuite/c-c++-common/goacc/kernels-reduction.c
  45793754c2adf529b0a269c466ed2761  gcc/testsuite/c-c++-common/goacc/loop-1.c
  be8b041248798e31b7644ec272413df0  gcc/testsuite/c-c++-common/goacc/loop-2-kernels.c
*************** c6bb19f1b877604f532b3271637f15af  gcc/te
*** 9932,9938 ****
  943121f9af2ecdb53cd96ba15a3c0258  gcc/testsuite/c-c++-common/goacc/loop-private-1.c
  c433ed40537345c26ace448f210a1463  gcc/testsuite/c-c++-common/goacc/loop-shape.c
  daafb2cfc55c1e66b6a23616ef96a71e  gcc/testsuite/c-c++-common/goacc/mdc-1.c
! 25e24ffa2c3e130b2ce6c638ad22a064  gcc/testsuite/c-c++-common/goacc/mdc-2.c
  ca52cdb1b4cfd4d80d0632de43a8acb1  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-kernels.c
  833ecd7a5770c9f4041e327c2d324aac  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-parallel.c
  f6a8c73e3913a7f2cb2ece39276bbe11  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-routine.c
--- 11223,11229 ----
  943121f9af2ecdb53cd96ba15a3c0258  gcc/testsuite/c-c++-common/goacc/loop-private-1.c
  c433ed40537345c26ace448f210a1463  gcc/testsuite/c-c++-common/goacc/loop-shape.c
  daafb2cfc55c1e66b6a23616ef96a71e  gcc/testsuite/c-c++-common/goacc/mdc-1.c
! 3bf6e0931241e00ebcd408e0098c10fe  gcc/testsuite/c-c++-common/goacc/mdc-2.c
  ca52cdb1b4cfd4d80d0632de43a8acb1  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-kernels.c
  833ecd7a5770c9f4041e327c2d324aac  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-parallel.c
  f6a8c73e3913a7f2cb2ece39276bbe11  gcc/testsuite/c-c++-common/goacc/nested-reductions-1-routine.c
*************** fdeb18440623ddebb1218a2b4b499f03  gcc/te
*** 9975,9980 ****
--- 11266,11273 ----
  5ffe67e1b621a79b5315af14b3b0e8dd  gcc/testsuite/c-c++-common/goacc/reduction-4.c
  87d6fc53480ffc48b9bcc5dbec279543  gcc/testsuite/c-c++-common/goacc/reduction-5.c
  257a77aee12af0f943094c1039f93f8b  gcc/testsuite/c-c++-common/goacc/reduction-6.c
+ 8f8202b36e2d2898f3e7b96fa620e961  gcc/testsuite/c-c++-common/goacc/reduction-7.c
+ 1bc48442ca333da4fa8fe84b40f6fe0a  gcc/testsuite/c-c++-common/goacc/reduction-8.c
  56a2b01609c03c4779369ba70942e140  gcc/testsuite/c-c++-common/goacc/reduction-promotions.c
  b8d1c8e8a6053ab2f232231f687af30c  gcc/testsuite/c-c++-common/goacc/routine-1.c
  44f22249f0b427d35f1430b1608fc033  gcc/testsuite/c-c++-common/goacc/routine-2.c
*************** b49c7784b16fec25d9d63dff65b06085  gcc/te
*** 9990,9995 ****
--- 11283,11289 ----
  71ff1b7541d8c733624f242976e1b747  gcc/testsuite/c-c++-common/goacc/sb-1.c
  1dde0d0d526302b12c8c22cfe846ddc1  gcc/testsuite/c-c++-common/goacc/sb-2.c
  2e25fe0594ffb9e9a8f935be5d6e9cfa  gcc/testsuite/c-c++-common/goacc/sb-3.c
+ a1aa94a6909f8f48d857ad5a9cd45b61  gcc/testsuite/c-c++-common/goacc/struct-component-kind-1.c
  94af55a13b250c49ee388c813dd285e5  gcc/testsuite/c-c++-common/goacc/struct-enter-exit-data-1.c
  5109f14e1fb05cda829d216ab6c5a02f  gcc/testsuite/c-c++-common/goacc/tile-2.c
  a140f15e3d552040b8f3c805cd73f542  gcc/testsuite/c-c++-common/goacc/tile.c
*************** d463344100a0478350affbdc29db0366  gcc/te
*** 10012,10024 ****
  9111959cc520a4e29a99b5bb933a762d  gcc/testsuite/c-c++-common/gomp/affinity-5.c
  273d5b4d31c635ddabf92c1100055ab0  gcc/testsuite/c-c++-common/gomp/affinity-6.c
  b97fa9634619ef9609f4b391a3df5de2  gcc/testsuite/c-c++-common/gomp/affinity-7.c
  e9f8d7d790e775b8803a987279857fd8  gcc/testsuite/c-c++-common/gomp/allocate-1.c
! a279457a2689563eb7f9fd80f7f626b4  gcc/testsuite/c-c++-common/gomp/allocate-2.c
  9caab435288f915f6d7fe59b84b443c9  gcc/testsuite/c-c++-common/gomp/allocate-3.c
  b5cc36629f2af04781e8aa71d6a7ae0b  gcc/testsuite/c-c++-common/gomp/allocate-4.c
! 707e03e99cd36b731a7a26db01686e9f  gcc/testsuite/c-c++-common/gomp/allocate-5.c
  56edad2f1d021dddfe817eecd7e376e2  gcc/testsuite/c-c++-common/gomp/allocate-6.c
  97a0a45a85b1c1938d08e940a662893f  gcc/testsuite/c-c++-common/gomp/allocate-7.c
  594f9585c33418a75a6d249f9f52a31b  gcc/testsuite/c-c++-common/gomp/atomic-1.c
  ca9adc82afaa4bfe9afab3d0c83d5427  gcc/testsuite/c-c++-common/gomp/atomic-10.c
  95e1c98e0d2d1d928153976ab5e8cb8f  gcc/testsuite/c-c++-common/gomp/atomic-12.c
--- 11306,11330 ----
  9111959cc520a4e29a99b5bb933a762d  gcc/testsuite/c-c++-common/gomp/affinity-5.c
  273d5b4d31c635ddabf92c1100055ab0  gcc/testsuite/c-c++-common/gomp/affinity-6.c
  b97fa9634619ef9609f4b391a3df5de2  gcc/testsuite/c-c++-common/gomp/affinity-7.c
+ 560adeb9b4c7bc02838fd7f256403245  gcc/testsuite/c-c++-common/gomp/all-memory-1.c
+ 5e03e297bbed2fa2301f3ac2906e1075  gcc/testsuite/c-c++-common/gomp/all-memory-2.c
+ bb8e15cfe7081780c84131ade307b0a7  gcc/testsuite/c-c++-common/gomp/all-memory-3.c
  e9f8d7d790e775b8803a987279857fd8  gcc/testsuite/c-c++-common/gomp/allocate-1.c
! 67afa8e9a323740282252dc23a7b959a  gcc/testsuite/c-c++-common/gomp/allocate-2.c
  9caab435288f915f6d7fe59b84b443c9  gcc/testsuite/c-c++-common/gomp/allocate-3.c
  b5cc36629f2af04781e8aa71d6a7ae0b  gcc/testsuite/c-c++-common/gomp/allocate-4.c
! b329607b6b60b281ab538361ef0e5abc  gcc/testsuite/c-c++-common/gomp/allocate-5.c
  56edad2f1d021dddfe817eecd7e376e2  gcc/testsuite/c-c++-common/gomp/allocate-6.c
  97a0a45a85b1c1938d08e940a662893f  gcc/testsuite/c-c++-common/gomp/allocate-7.c
+ bf250503034f83812c610e628563cbe4  gcc/testsuite/c-c++-common/gomp/allocate-8.c
+ 6c5acf6facd4d66b41b293f41e8c48e7  gcc/testsuite/c-c++-common/gomp/assume-1.c
+ c878705d315f6cd6fedb47109f8a83c1  gcc/testsuite/c-c++-common/gomp/assume-2.c
+ 9adbf63d6cc6673274053baa4a7406f3  gcc/testsuite/c-c++-common/gomp/assume-3.c
+ 32f71a409194e932942c40570b74b4c1  gcc/testsuite/c-c++-common/gomp/assume-4.c
+ fe9e9de178a149d4be1130f4bb6a725d  gcc/testsuite/c-c++-common/gomp/assumes-1.c
+ 6c5481b2ddc3b2b24b7dd5dfec7b0ccf  gcc/testsuite/c-c++-common/gomp/assumes-2.c
+ 1e08736ed2274dbfec7f233a154f1bff  gcc/testsuite/c-c++-common/gomp/assumes-3.c
+ b51a1e730de3aa872bc687140549694a  gcc/testsuite/c-c++-common/gomp/assumes-4.c
  594f9585c33418a75a6d249f9f52a31b  gcc/testsuite/c-c++-common/gomp/atomic-1.c
  ca9adc82afaa4bfe9afab3d0c83d5427  gcc/testsuite/c-c++-common/gomp/atomic-10.c
  95e1c98e0d2d1d928153976ab5e8cb8f  gcc/testsuite/c-c++-common/gomp/atomic-12.c
*************** c651c262d3e15c95c53b73871b4f163a  gcc/te
*** 10043,10048 ****
--- 11349,11355 ----
  ef84be84eed7be26fd4aef69eb50de83  gcc/testsuite/c-c++-common/gomp/atomic-3.c
  8b71592268bef25e81e2e553562488ef  gcc/testsuite/c-c++-common/gomp/atomic-30.c
  712c72ff66738fcaa0053d10a0ef9902  gcc/testsuite/c-c++-common/gomp/atomic-31.c
+ b1eef8379d6272c82ba2014ae1380be2  gcc/testsuite/c-c++-common/gomp/atomic-32.c
  dcd88cf4442d15fe1ee6cf0c65bec7ba  gcc/testsuite/c-c++-common/gomp/atomic-4.c
  338ba582f00391fbbba5113c8a1bb792  gcc/testsuite/c-c++-common/gomp/atomic-7.c
  99033a31ad0844a80bb561d39f21bc2c  gcc/testsuite/c-c++-common/gomp/atomic-8.c
*************** dcd88cf4442d15fe1ee6cf0c65bec7ba  gcc/te
*** 10050,10080 ****
  c014acc338c8f751416c40b87de8a9ea  gcc/testsuite/c-c++-common/gomp/attrs-1.c
  936bf736d9e5166aef93b839a7fb3fcf  gcc/testsuite/c-c++-common/gomp/attrs-2.c
  a6ad21899add03d8c45781b5f59ce8f4  gcc/testsuite/c-c++-common/gomp/attrs-3.c
  9f730a41da1e4dad0ab17382046a6c23  gcc/testsuite/c-c++-common/gomp/cancel-1.c
  192802715f9a6395e2ccf6ce992c4fee  gcc/testsuite/c-c++-common/gomp/cancel-2.c
  6f9b225fe1cf719440accba12db2e1a4  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
  2d100a7efc7458044156ec5ce1b62589  gcc/testsuite/c-c++-common/gomp/clauses-1.c
  53df5de9ab063edd49814ad88fb4fb9b  gcc/testsuite/c-c++-common/gomp/clauses-2.c
! 657094047e2432f3bc3c5cafde1eafcd  gcc/testsuite/c-c++-common/gomp/clauses-3.c
  8d9ef02ce9840a58a8c64026e4df30b2  gcc/testsuite/c-c++-common/gomp/clauses-4.c
  4495a5b525e167ab62035c686fc8d83b  gcc/testsuite/c-c++-common/gomp/clauses-5.c
  70b3d73007bef6b23ec15bb120cb88ca  gcc/testsuite/c-c++-common/gomp/combined-1.c
  8971b0fe4f2bfd550f584e814610f06e  gcc/testsuite/c-c++-common/gomp/combined-2.c
  4a818b745d1f8704ddb0479a4cad1ca2  gcc/testsuite/c-c++-common/gomp/combined-3.c
  bfb7ec61cc1300767edd2730dd158b24  gcc/testsuite/c-c++-common/gomp/critical-1.c
  c572ac0bc0904c15b451df6870cc393d  gcc/testsuite/c-c++-common/gomp/critical-2.c
! 5f6c97b6403ccadad05f9eb1bf43588e  gcc/testsuite/c-c++-common/gomp/declare-target-1.c
! 011908dbc654415146f6b075c979b877  gcc/testsuite/c-c++-common/gomp/declare-target-2.c
! a21180b58525f6feec0df94eb7749cdc  gcc/testsuite/c-c++-common/gomp/declare-target-3.c
! d10729d6cc377a4d618b04058f34092a  gcc/testsuite/c-c++-common/gomp/declare-target-4.c
  bd8b4a8c817f542091fc2d7fded4917a  gcc/testsuite/c-c++-common/gomp/declare-target-5.c
  432250dcf3d9afc1090b630b510db1b8  gcc/testsuite/c-c++-common/gomp/declare-variant-1.c
  7f5d7596767c4d11ea513a12caaa9677  gcc/testsuite/c-c++-common/gomp/declare-variant-10.c
  51e43bef12ddebee2151356a6379e207  gcc/testsuite/c-c++-common/gomp/declare-variant-11.c
  a5afca905d34b587b6fd9cf5feeb7b84  gcc/testsuite/c-c++-common/gomp/declare-variant-12.c
  75564d16588312df035165e1f86306ff  gcc/testsuite/c-c++-common/gomp/declare-variant-13.c
  9a928119f9dc1e5ae5c9aa9f002564c5  gcc/testsuite/c-c++-common/gomp/declare-variant-14.c
! 8d01699da719427efa576f7174290b30  gcc/testsuite/c-c++-common/gomp/declare-variant-2.c
  94f924cd613b79f5f8ab07c38cc88b01  gcc/testsuite/c-c++-common/gomp/declare-variant-3.c
  65b510d9e426dc2a3b6896eb93dd8335  gcc/testsuite/c-c++-common/gomp/declare-variant-4.c
  ee52d5fc3f8423c9720ccca8a58180a2  gcc/testsuite/c-c++-common/gomp/declare-variant-5.c
--- 11357,11398 ----
  c014acc338c8f751416c40b87de8a9ea  gcc/testsuite/c-c++-common/gomp/attrs-1.c
  936bf736d9e5166aef93b839a7fb3fcf  gcc/testsuite/c-c++-common/gomp/attrs-2.c
  a6ad21899add03d8c45781b5f59ce8f4  gcc/testsuite/c-c++-common/gomp/attrs-3.c
+ 7051a84e085d73ad6267c8c04512579d  gcc/testsuite/c-c++-common/gomp/begin-assumes-1.c
+ f1d749df456a0bcc8ff0fa28513835f3  gcc/testsuite/c-c++-common/gomp/begin-assumes-2.c
+ 766d3b7f45920c36b59eb198aff18d97  gcc/testsuite/c-c++-common/gomp/begin-assumes-3.c
+ e60d9448f0f0bde479d4c59ba577deac  gcc/testsuite/c-c++-common/gomp/begin-assumes-4.c
+ d9d369b57d2dd28df8efeb2f5ecc9a5f  gcc/testsuite/c-c++-common/gomp/begin-declare-target-1.c
+ 936e1a766aaf54b03a099c359cf5f3ce  gcc/testsuite/c-c++-common/gomp/begin-declare-target-2.c
+ c736b176de0876f0cfa7bf6da1edba17  gcc/testsuite/c-c++-common/gomp/begin-declare-target-3.c
+ aa6f51f0ce9ba32480d8b3eddf2e9835  gcc/testsuite/c-c++-common/gomp/begin-declare-target-4.c
  9f730a41da1e4dad0ab17382046a6c23  gcc/testsuite/c-c++-common/gomp/cancel-1.c
  192802715f9a6395e2ccf6ce992c4fee  gcc/testsuite/c-c++-common/gomp/cancel-2.c
  6f9b225fe1cf719440accba12db2e1a4  gcc/testsuite/c-c++-common/gomp/clause-dups-1.c
  2d100a7efc7458044156ec5ce1b62589  gcc/testsuite/c-c++-common/gomp/clauses-1.c
  53df5de9ab063edd49814ad88fb4fb9b  gcc/testsuite/c-c++-common/gomp/clauses-2.c
! 7c761956c0dbf5422d50dece221c9a7f  gcc/testsuite/c-c++-common/gomp/clauses-3.c
  8d9ef02ce9840a58a8c64026e4df30b2  gcc/testsuite/c-c++-common/gomp/clauses-4.c
  4495a5b525e167ab62035c686fc8d83b  gcc/testsuite/c-c++-common/gomp/clauses-5.c
+ fb5ac32eda4e938a1684263a6f7ccfa9  gcc/testsuite/c-c++-common/gomp/clauses-6.c
  70b3d73007bef6b23ec15bb120cb88ca  gcc/testsuite/c-c++-common/gomp/combined-1.c
  8971b0fe4f2bfd550f584e814610f06e  gcc/testsuite/c-c++-common/gomp/combined-2.c
  4a818b745d1f8704ddb0479a4cad1ca2  gcc/testsuite/c-c++-common/gomp/combined-3.c
  bfb7ec61cc1300767edd2730dd158b24  gcc/testsuite/c-c++-common/gomp/critical-1.c
  c572ac0bc0904c15b451df6870cc393d  gcc/testsuite/c-c++-common/gomp/critical-2.c
! 4f4730edc635e08ce7fb782360034e79  gcc/testsuite/c-c++-common/gomp/declare-target-1.c
! 07732c5ac1ff732ac2b0a4e38a96b507  gcc/testsuite/c-c++-common/gomp/declare-target-2.c
! 5d9813953c9a6b9aeeb4294adf1df6e1  gcc/testsuite/c-c++-common/gomp/declare-target-3.c
! 7f193f6ce9a8d0456ff0bd3677a8921f  gcc/testsuite/c-c++-common/gomp/declare-target-4.c
  bd8b4a8c817f542091fc2d7fded4917a  gcc/testsuite/c-c++-common/gomp/declare-target-5.c
+ a5fd6a4672c9f8415dc9097c3c6acb93  gcc/testsuite/c-c++-common/gomp/declare-target-6.c
+ eee46240ce01f7d71738654e0fe04a3b  gcc/testsuite/c-c++-common/gomp/declare-target-7.c
  432250dcf3d9afc1090b630b510db1b8  gcc/testsuite/c-c++-common/gomp/declare-variant-1.c
  7f5d7596767c4d11ea513a12caaa9677  gcc/testsuite/c-c++-common/gomp/declare-variant-10.c
  51e43bef12ddebee2151356a6379e207  gcc/testsuite/c-c++-common/gomp/declare-variant-11.c
  a5afca905d34b587b6fd9cf5feeb7b84  gcc/testsuite/c-c++-common/gomp/declare-variant-12.c
  75564d16588312df035165e1f86306ff  gcc/testsuite/c-c++-common/gomp/declare-variant-13.c
  9a928119f9dc1e5ae5c9aa9f002564c5  gcc/testsuite/c-c++-common/gomp/declare-variant-14.c
! e8eb871c9e6c5dde7b293de70e42c6f8  gcc/testsuite/c-c++-common/gomp/declare-variant-2.c
  94f924cd613b79f5f8ab07c38cc88b01  gcc/testsuite/c-c++-common/gomp/declare-variant-3.c
  65b510d9e426dc2a3b6896eb93dd8335  gcc/testsuite/c-c++-common/gomp/declare-variant-4.c
  ee52d5fc3f8423c9720ccca8a58180a2  gcc/testsuite/c-c++-common/gomp/declare-variant-5.c
*************** cfe9ce2bee6dfde91d715b2c34a5a896  gcc/te
*** 10096,10108 ****
  96ee24acfb0236cf20bc30472bd80148  gcc/testsuite/c-c++-common/gomp/depend-6.c
  4a7e69295838b1320de92a6b5208a196  gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
  3ec0d6b08677a898631647adbce575dc  gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
! a4e597074c9ce25ed2b94adda52102d5  gcc/testsuite/c-c++-common/gomp/depobj-1.c
  b0614882466e367a20795bf8a724df2a  gcc/testsuite/c-c++-common/gomp/depobj-2.c
  389475c8477c859e20aa20be1676dbd0  gcc/testsuite/c-c++-common/gomp/distribute-1.c
  f10bae63863004428ff4b3fbefab335e  gcc/testsuite/c-c++-common/gomp/doacross-1.c
! f0e8744f81b4bd363089960ae8a6bbb6  gcc/testsuite/c-c++-common/gomp/doacross-2.c
  c9f7d4328381112d463ae5d7abf05d6b  gcc/testsuite/c-c++-common/gomp/doacross-3.c
  b80b407c1b236d995633edd987b92089  gcc/testsuite/c-c++-common/gomp/doacross-4.c
  5a70f931f3d1911a210ec6155240d4dc  gcc/testsuite/c-c++-common/gomp/element-1.c
  56193fbd64f093dd570f7f9543fd8e9e  gcc/testsuite/c-c++-common/gomp/error-1.c
  fa360c10a44a15ddb815a286fa0f2658  gcc/testsuite/c-c++-common/gomp/error-2.c
--- 11414,11431 ----
  96ee24acfb0236cf20bc30472bd80148  gcc/testsuite/c-c++-common/gomp/depend-6.c
  4a7e69295838b1320de92a6b5208a196  gcc/testsuite/c-c++-common/gomp/depend-iterator-1.c
  3ec0d6b08677a898631647adbce575dc  gcc/testsuite/c-c++-common/gomp/depend-iterator-2.c
! 4d7c198a6e5377f63eba24e105bd8430  gcc/testsuite/c-c++-common/gomp/depobj-1.c
  b0614882466e367a20795bf8a724df2a  gcc/testsuite/c-c++-common/gomp/depobj-2.c
+ b0891889109fe5d3e8cd36d5bd4771cc  gcc/testsuite/c-c++-common/gomp/directive-1.c
  389475c8477c859e20aa20be1676dbd0  gcc/testsuite/c-c++-common/gomp/distribute-1.c
  f10bae63863004428ff4b3fbefab335e  gcc/testsuite/c-c++-common/gomp/doacross-1.c
! 516128133174c1939bd4cf36e469fb51  gcc/testsuite/c-c++-common/gomp/doacross-2.c
  c9f7d4328381112d463ae5d7abf05d6b  gcc/testsuite/c-c++-common/gomp/doacross-3.c
  b80b407c1b236d995633edd987b92089  gcc/testsuite/c-c++-common/gomp/doacross-4.c
+ f9a6444ebc4a1c55c546158d2ff21ead  gcc/testsuite/c-c++-common/gomp/doacross-5.c
+ 0f10333a8a4f6bda70dd11c725bbcfdb  gcc/testsuite/c-c++-common/gomp/doacross-6.c
+ a31dd2f434001d3bdc2d6760064602a4  gcc/testsuite/c-c++-common/gomp/doacross-7.c
+ db5184f418f1fcff4229563335cdcac7  gcc/testsuite/c-c++-common/gomp/doacross-8.c
  5a70f931f3d1911a210ec6155240d4dc  gcc/testsuite/c-c++-common/gomp/element-1.c
  56193fbd64f093dd570f7f9543fd8e9e  gcc/testsuite/c-c++-common/gomp/error-1.c
  fa360c10a44a15ddb815a286fa0f2658  gcc/testsuite/c-c++-common/gomp/error-2.c
*************** b9f70a44108d3410396c88c5623b3919  gcc/te
*** 10127,10132 ****
--- 11450,11458 ----
  d173a4359da95b48c8d051a752a820ad  gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-4.c
  94c1c42c60585a077f568d5bea528077  gcc/testsuite/c-c++-common/gomp/lastprivate-conditional-5.c
  2e0840d181813aec1108fbd34f344fea  gcc/testsuite/c-c++-common/gomp/linear-1.c
+ 361c8125c17070e6c93fe9d05fb2da1a  gcc/testsuite/c-c++-common/gomp/linear-2.c
+ 75194c4de3abb9ff5be59d8b4da49ab6  gcc/testsuite/c-c++-common/gomp/linear-3.c
+ b68341f23c6484278c5d49bb55e6bed6  gcc/testsuite/c-c++-common/gomp/linear-4.c
  ab07b5a124255abaa1fd1c7350a95ec7  gcc/testsuite/c-c++-common/gomp/loop-1.c
  1eefa1e4ebf9306f021a466fbfb0458a  gcc/testsuite/c-c++-common/gomp/loop-10.c
  d28fa472d0ed4264e8bf9d4545e77ae5  gcc/testsuite/c-c++-common/gomp/loop-11.c
*************** d28fa472d0ed4264e8bf9d4545e77ae5  gcc/te
*** 10134,10140 ****
  9592f2cca3c5fd7c0e8fd9da7cb178d1  gcc/testsuite/c-c++-common/gomp/loop-3.c
  96f80819d26df95994ad31e806db9ad9  gcc/testsuite/c-c++-common/gomp/loop-4.c
  f57f51983db80a2fd1be027e87767d44  gcc/testsuite/c-c++-common/gomp/loop-5.c
! a09826f6b14616132ea27a08de9075b1  gcc/testsuite/c-c++-common/gomp/loop-6.c
  576203a21b3e04e83b9327037d1c1809  gcc/testsuite/c-c++-common/gomp/loop-7.c
  bbbe92047177151542b6ff825d52c4e4  gcc/testsuite/c-c++-common/gomp/loop-8.c
  67e2138fdf955d87a5868fe981258015  gcc/testsuite/c-c++-common/gomp/loop-9.c
--- 11460,11466 ----
  9592f2cca3c5fd7c0e8fd9da7cb178d1  gcc/testsuite/c-c++-common/gomp/loop-3.c
  96f80819d26df95994ad31e806db9ad9  gcc/testsuite/c-c++-common/gomp/loop-4.c
  f57f51983db80a2fd1be027e87767d44  gcc/testsuite/c-c++-common/gomp/loop-5.c
! 3e772c5747e617d6611630ea849e25ab  gcc/testsuite/c-c++-common/gomp/loop-6.c
  576203a21b3e04e83b9327037d1c1809  gcc/testsuite/c-c++-common/gomp/loop-7.c
  bbbe92047177151542b6ff825d52c4e4  gcc/testsuite/c-c++-common/gomp/loop-8.c
  67e2138fdf955d87a5868fe981258015  gcc/testsuite/c-c++-common/gomp/loop-9.c
*************** f26a9793012d174bb469a5a2bbe88ed8  gcc/te
*** 10145,10150 ****
--- 11471,11478 ----
  277cedbcd2effa8734f83ed409ddc325  gcc/testsuite/c-c++-common/gomp/map-5.c
  67c80af0682db4c373d338c03bb665ac  gcc/testsuite/c-c++-common/gomp/map-6.c
  b8e110ebbec9c6db80b28e633ae2f67e  gcc/testsuite/c-c++-common/gomp/map-7.c
+ 44f82c91ea0443cfcfe48ff2e2ad3f49  gcc/testsuite/c-c++-common/gomp/map-8.c
+ 69ff77fd1a974b1db18e0d998cb08b86  gcc/testsuite/c-c++-common/gomp/map-incomplete-type.c
  d5ee74feb13dd8875f12132dccfe8126  gcc/testsuite/c-c++-common/gomp/masked-1.c
  c8a1a97bda2a787e6f55c68563e256b6  gcc/testsuite/c-c++-common/gomp/masked-2.c
  cfaa12085558b78e5edbdb4a338479d2  gcc/testsuite/c-c++-common/gomp/masked-combined-1.c
*************** cfaa12085558b78e5edbdb4a338479d2  gcc/te
*** 10152,10158 ****
  3b2e33f5ff6d1fab628bbc47b669bb42  gcc/testsuite/c-c++-common/gomp/master-combined-1.c
  8fdb590ce90d1a3c558de7dc81a38d89  gcc/testsuite/c-c++-common/gomp/master-combined-2.c
  6fa2115821b7e05f4b4772c894f7cf12  gcc/testsuite/c-c++-common/gomp/nesting-1.c
! a42a0cc1bcf4e86e482ce7f0b675ebf1  gcc/testsuite/c-c++-common/gomp/nesting-2.c
  406abd50996addc0929156835a0b5686  gcc/testsuite/c-c++-common/gomp/nesting-warn-1.c
  ce3fb89f1513613421cc620156235d68  gcc/testsuite/c-c++-common/gomp/nontemporal-1.c
  22a3481e8c3df4f0596de8f67dab0a59  gcc/testsuite/c-c++-common/gomp/nontemporal-2.c
--- 11480,11486 ----
  3b2e33f5ff6d1fab628bbc47b669bb42  gcc/testsuite/c-c++-common/gomp/master-combined-1.c
  8fdb590ce90d1a3c558de7dc81a38d89  gcc/testsuite/c-c++-common/gomp/master-combined-2.c
  6fa2115821b7e05f4b4772c894f7cf12  gcc/testsuite/c-c++-common/gomp/nesting-1.c
! 499237904b7c8cb28bc8640600ad73ce  gcc/testsuite/c-c++-common/gomp/nesting-2.c
  406abd50996addc0929156835a0b5686  gcc/testsuite/c-c++-common/gomp/nesting-warn-1.c
  ce3fb89f1513613421cc620156235d68  gcc/testsuite/c-c++-common/gomp/nontemporal-1.c
  22a3481e8c3df4f0596de8f67dab0a59  gcc/testsuite/c-c++-common/gomp/nontemporal-2.c
*************** ce3fb89f1513613421cc620156235d68  gcc/te
*** 10160,10165 ****
--- 11488,11495 ----
  a8cae7afccfdaf5c55701d1fd623cbae  gcc/testsuite/c-c++-common/gomp/nothing-2.c
  314d7c905d7b458917321c534f1d5520  gcc/testsuite/c-c++-common/gomp/num-teams-1.c
  9284f2bc3ab39d4db900b0510ab44cb3  gcc/testsuite/c-c++-common/gomp/num-teams-2.c
+ 6edff4d259a25d0cbbd6bd788efd47b2  gcc/testsuite/c-c++-common/gomp/ompx-1.c
+ a53bfb3d3f3e9c540d6b019fcc527fa4  gcc/testsuite/c-c++-common/gomp/ompx-2.c
  a5b411651a6f93c5cf3ce9b7c306c2e4  gcc/testsuite/c-c++-common/gomp/order-1.c
  e576d3919b1276ac29fcd10c2af0e650  gcc/testsuite/c-c++-common/gomp/order-2.c
  db900e16f622568df37b1e202fd25b9f  gcc/testsuite/c-c++-common/gomp/order-3.c
*************** e8952d612b22320252f24d04beb2a8c4  gcc/te
*** 10168,10174 ****
  06c6eba3d88519d1f5d47f8bff4ee5bd  gcc/testsuite/c-c++-common/gomp/order-6.c
  346e1047ae41de5d851736fb41185adb  gcc/testsuite/c-c++-common/gomp/ordered-1.c
  ef86bb29dfbea0543e8ca02ce440c823  gcc/testsuite/c-c++-common/gomp/ordered-2.c
! c8eb196146424dae7866984b548de18b  gcc/testsuite/c-c++-common/gomp/ordered-3.c
  5e682cf26c41baf2449ab35ba5792ab9  gcc/testsuite/c-c++-common/gomp/ordered-4.c
  7c7abae5700e726f7de5bd56574429f5  gcc/testsuite/c-c++-common/gomp/pr100450.c
  6d544b90b3bb63262065e084cddafc04  gcc/testsuite/c-c++-common/gomp/pr100902-1.c
--- 11498,11504 ----
  06c6eba3d88519d1f5d47f8bff4ee5bd  gcc/testsuite/c-c++-common/gomp/order-6.c
  346e1047ae41de5d851736fb41185adb  gcc/testsuite/c-c++-common/gomp/ordered-1.c
  ef86bb29dfbea0543e8ca02ce440c823  gcc/testsuite/c-c++-common/gomp/ordered-2.c
! 434dac8d4b0c3eac54e134c566fc150e  gcc/testsuite/c-c++-common/gomp/ordered-3.c
  5e682cf26c41baf2449ab35ba5792ab9  gcc/testsuite/c-c++-common/gomp/ordered-4.c
  7c7abae5700e726f7de5bd56574429f5  gcc/testsuite/c-c++-common/gomp/pr100450.c
  6d544b90b3bb63262065e084cddafc04  gcc/testsuite/c-c++-common/gomp/pr100902-1.c
*************** ef8ec3320ae234be32fcdfc5379eaca2  gcc/te
*** 10180,10185 ****
--- 11510,11519 ----
  1135dbe7e40a4ceef1023a659000a164  gcc/testsuite/c-c++-common/gomp/pr103642.c
  0e59133481fb703cb575967bddb0ce8e  gcc/testsuite/c-c++-common/gomp/pr103705.c
  0cff3c6576e6db18b71f25c5da8bcbb0  gcc/testsuite/c-c++-common/gomp/pr104968.c
+ 20a09a854dcd3ce8ca6f7a9db64d35cc  gcc/testsuite/c-c++-common/gomp/pr106836.c
+ 1164bc26f7382179d1bd6b607af1d336  gcc/testsuite/c-c++-common/gomp/pr106981.c
+ 8f995161beda01326e712ba172a760f8  gcc/testsuite/c-c++-common/gomp/pr107001.c
+ 9b182f81cba9d60fb2cbbde45ceae582  gcc/testsuite/c-c++-common/gomp/pr108244-3.c
  e16ef156ad193ef1f3cba60ad16e57ab  gcc/testsuite/c-c++-common/gomp/pr51360.c
  84c977571aeb43c0224137efe7f5b213  gcc/testsuite/c-c++-common/gomp/pr53580.c
  28bfd873981083756a16f70fdb0b86db  gcc/testsuite/c-c++-common/gomp/pr54017.c
*************** edd476c7cf2235802faddcd9994b240a  gcc/te
*** 10269,10277 ****
  bb6de6a22e5ed8a789047eb3e5ce9194  gcc/testsuite/c-c++-common/gomp/pr99928-9.c
  9163b15a47c5f6fdd167e356b13cc71d  gcc/testsuite/c-c++-common/gomp/pragma-1.c
  ec917d1b32d82ceef9c2bdec8d8da20c  gcc/testsuite/c-c++-common/gomp/pragma-2.c
! 399d70efc153af3e2093e917bae89524  gcc/testsuite/c-c++-common/gomp/pragma-3.c
  f4385174b55a4a8fa770e9d647279749  gcc/testsuite/c-c++-common/gomp/pragma-4.c
! 34fe2677c7662e280a2b16c8d8073c69  gcc/testsuite/c-c++-common/gomp/pragma-5.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
  a5ab254ee603749ef9330558229e6163  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  857f55ab743945a521e3287d1b905b4b  gcc/testsuite/c-c++-common/gomp/reduction-task-1.c
--- 11603,11612 ----
  bb6de6a22e5ed8a789047eb3e5ce9194  gcc/testsuite/c-c++-common/gomp/pr99928-9.c
  9163b15a47c5f6fdd167e356b13cc71d  gcc/testsuite/c-c++-common/gomp/pragma-1.c
  ec917d1b32d82ceef9c2bdec8d8da20c  gcc/testsuite/c-c++-common/gomp/pragma-2.c
! 7ab8fe292315282ada2f81fce2270d05  gcc/testsuite/c-c++-common/gomp/pragma-3.c
  f4385174b55a4a8fa770e9d647279749  gcc/testsuite/c-c++-common/gomp/pragma-4.c
! 94d691e11060c430935cb6245bd9ef01  gcc/testsuite/c-c++-common/gomp/pragma-5.c
! 4d836e95ee0b1c17dd96690f60fc38ea  gcc/testsuite/c-c++-common/gomp/pragma-omp-unknown.c
  5d522e2f1f7455bc45f6c1f230d5a5b0  gcc/testsuite/c-c++-common/gomp/priority-1.c
  a5ab254ee603749ef9330558229e6163  gcc/testsuite/c-c++-common/gomp/reduction-1.c
  857f55ab743945a521e3287d1b905b4b  gcc/testsuite/c-c++-common/gomp/reduction-task-1.c
*************** a5ab254ee603749ef9330558229e6163  gcc/te
*** 10280,10286 ****
  510098e898a0bf706702fa24a48e71ac  gcc/testsuite/c-c++-common/gomp/requires-1.c
  402906410edb43bb1d0515698684f3a6  gcc/testsuite/c-c++-common/gomp/requires-2.c
  f91ff40a21debb2c128ac02f5443f258  gcc/testsuite/c-c++-common/gomp/requires-3.c
! 7737b0ae3793f150650db4af4fdfa22d  gcc/testsuite/c-c++-common/gomp/requires-4.c
  d2b914e7da7d449d03bc2fd5a17d4ac9  gcc/testsuite/c-c++-common/gomp/scan-1.c
  3fb5b28574137ba1aa754466a8ea9a57  gcc/testsuite/c-c++-common/gomp/scan-2.c
  9f76c491a629f3bbd470f28c269ef485  gcc/testsuite/c-c++-common/gomp/scan-3.c
--- 11615,11622 ----
  510098e898a0bf706702fa24a48e71ac  gcc/testsuite/c-c++-common/gomp/requires-1.c
  402906410edb43bb1d0515698684f3a6  gcc/testsuite/c-c++-common/gomp/requires-2.c
  f91ff40a21debb2c128ac02f5443f258  gcc/testsuite/c-c++-common/gomp/requires-3.c
! 53176dd60a6d44d8f4bf1f5094f1c246  gcc/testsuite/c-c++-common/gomp/requires-4.c
! d16b51ef608a08574df6100908654ce0  gcc/testsuite/c-c++-common/gomp/reverse-offload-1.c
  d2b914e7da7d449d03bc2fd5a17d4ac9  gcc/testsuite/c-c++-common/gomp/scan-1.c
  3fb5b28574137ba1aa754466a8ea9a57  gcc/testsuite/c-c++-common/gomp/scan-2.c
  9f76c491a629f3bbd470f28c269ef485  gcc/testsuite/c-c++-common/gomp/scan-3.c
*************** e413f648ce33386781b2b3e3e93cb96b  gcc/te
*** 10294,10299 ****
--- 11630,11637 ----
  906c14d7b336cf66e0e4fa5638bc2dcd  gcc/testsuite/c-c++-common/gomp/scope-2.c
  57efa71543dedf5dbf1920791f533a05  gcc/testsuite/c-c++-common/gomp/scope-3.c
  e04f56a00b201b68dca47f2c9ef16e14  gcc/testsuite/c-c++-common/gomp/scope-4.c
+ 1dddd9515f72ddb10d1546f58ac06ef6  gcc/testsuite/c-c++-common/gomp/scope-5.c
+ e3f7cf167693a8ad18d98c582934545d  gcc/testsuite/c-c++-common/gomp/scope-6.c
  c038583116ace59c25138e987e477f21  gcc/testsuite/c-c++-common/gomp/sections1.c
  a51768554ba67aa659d21bbab17ca919  gcc/testsuite/c-c++-common/gomp/simd-setjmp-1.c
  c7cb982e272572b3d42948b23c3c6229  gcc/testsuite/c-c++-common/gomp/simd1.c
*************** cbcc4bef361026a7cc530337842d4576  gcc/te
*** 10307,10322 ****
  4763c84e6c50d72fa161297e3be84c0c  gcc/testsuite/c-c++-common/gomp/single1.c
  844fb7ecb682dca6450572fb8b60782a  gcc/testsuite/c-c++-common/gomp/sink-1.c
  1c82cae2e7ce3866f8094c1dd264cbae  gcc/testsuite/c-c++-common/gomp/sink-2.c
! 5da781fbb8445e840fae91d1a209f84a  gcc/testsuite/c-c++-common/gomp/sink-3.c
  0c93f7b88c30539ace084df2f4c7f5ae  gcc/testsuite/c-c++-common/gomp/sink-4.c
  c95f2cef3c7fd923368769c2f5efbc75  gcc/testsuite/c-c++-common/gomp/sink-5.c
  0f606c818aafa917b4e4ca06798a0500  gcc/testsuite/c-c++-common/gomp/target-data-1.c
  cb81da252c32b67e25bcb9e0177c3269  gcc/testsuite/c-c++-common/gomp/target-device-1.c
  012d8a9c07dcebcd384c14829364ca84  gcc/testsuite/c-c++-common/gomp/target-device-2.c
  a89d3bc336c39386e5c41b412c5cadf6  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-1.c
! 7c5a68ee5f5e2c289c91c9d137bf95ec  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-2.c
! e72899251887369d21a334bbc7002a40  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-3.c
! dcf2f1deac989725d6599354642db249  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-4.c
  603f6027fbfbdbc9630eda8b61d659ee  gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c
  5ffcda40553abef98cacdff0ec06eea2  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c
  e5def8b0431262a97550aa7141a818a1  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-2.c
--- 11645,11664 ----
  4763c84e6c50d72fa161297e3be84c0c  gcc/testsuite/c-c++-common/gomp/single1.c
  844fb7ecb682dca6450572fb8b60782a  gcc/testsuite/c-c++-common/gomp/sink-1.c
  1c82cae2e7ce3866f8094c1dd264cbae  gcc/testsuite/c-c++-common/gomp/sink-2.c
! ee53749fe1ce6195a2d3af75b4e8d7fb  gcc/testsuite/c-c++-common/gomp/sink-3.c
  0c93f7b88c30539ace084df2f4c7f5ae  gcc/testsuite/c-c++-common/gomp/sink-4.c
  c95f2cef3c7fd923368769c2f5efbc75  gcc/testsuite/c-c++-common/gomp/sink-5.c
+ a82f5f6361b85847729140a2abdacf9a  gcc/testsuite/c-c++-common/gomp/target-50.c
  0f606c818aafa917b4e4ca06798a0500  gcc/testsuite/c-c++-common/gomp/target-data-1.c
+ 6e2b1e79dd9e5bf80f1786de4ce0d44f  gcc/testsuite/c-c++-common/gomp/target-data-2.c
+ 606d31321e7d5d4bd5f862677a31ccf9  gcc/testsuite/c-c++-common/gomp/target-data-3.c
  cb81da252c32b67e25bcb9e0177c3269  gcc/testsuite/c-c++-common/gomp/target-device-1.c
  012d8a9c07dcebcd384c14829364ca84  gcc/testsuite/c-c++-common/gomp/target-device-2.c
  a89d3bc336c39386e5c41b412c5cadf6  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-1.c
! 1112faf09f5d7dc7b7ca6bc76248f23c  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-2.c
! 415ffbd983ab85f8ae866ca8d4790b1d  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-3.c
! ca7ba586dac58a7cd9e9b58a6d8e470e  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-4.c
! 4561a8adae0edb1000cfcf5746ff89dd  gcc/testsuite/c-c++-common/gomp/target-device-ancestor-5.c
  603f6027fbfbdbc9630eda8b61d659ee  gcc/testsuite/c-c++-common/gomp/target-enter-data-1.c
  5ffcda40553abef98cacdff0ec06eea2  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-1.c
  e5def8b0431262a97550aa7141a818a1  gcc/testsuite/c-c++-common/gomp/target-has-device-addr-2.c
*************** a26fd1e6046be289a1c410feb9b08179  gcc/te
*** 10325,10336 ****
  add511064b968c5d11ab265fa90ad3bc  gcc/testsuite/c-c++-common/gomp/target-in-reduction-1.c
  1a46b3c3357de4a3d24943d0266026f3  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-1.c
  2cfdfdc278ef7c85c5e2ad7e2f1e95be  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-2.c
! a8435825c61a8dc6ab7b5b8cda3dd35d  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
  25d48772fc72e3c1f8e2192ec44ffb95  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
  1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
  f1e648ba677e52a9fa9d8897002b52a4  gcc/testsuite/c-c++-common/gomp/task-detach-3.c
  bd7a4a612b8188086bf0650fb29a279a  gcc/testsuite/c-c++-common/gomp/taskloop-reduction-1.c
  2308634fac41b5571bbc8ecf6a185772  gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c
  539c731e3f7fd40b1bf0432a8a02c04f  gcc/testsuite/c-c++-common/gomp/teams-1.c
  3020e821377ef557f546cba8a78f1192  gcc/testsuite/c-c++-common/gomp/teams-2.c
  3f5e45489b8b980cc7ab48dc63fd1c6d  gcc/testsuite/c-c++-common/gomp/teams-3.c
--- 11667,11679 ----
  add511064b968c5d11ab265fa90ad3bc  gcc/testsuite/c-c++-common/gomp/target-in-reduction-1.c
  1a46b3c3357de4a3d24943d0266026f3  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-1.c
  2cfdfdc278ef7c85c5e2ad7e2f1e95be  gcc/testsuite/c-c++-common/gomp/target-is-device-ptr-2.c
! b1764366c6f492a5e181e374576a2120  gcc/testsuite/c-c++-common/gomp/target-teams-1.c
  25d48772fc72e3c1f8e2192ec44ffb95  gcc/testsuite/c-c++-common/gomp/task-detach-1.c
  1bc40a217ad51b17433b0b59c1491757  gcc/testsuite/c-c++-common/gomp/task-detach-2.c
  f1e648ba677e52a9fa9d8897002b52a4  gcc/testsuite/c-c++-common/gomp/task-detach-3.c
  bd7a4a612b8188086bf0650fb29a279a  gcc/testsuite/c-c++-common/gomp/taskloop-reduction-1.c
  2308634fac41b5571bbc8ecf6a185772  gcc/testsuite/c-c++-common/gomp/taskwait-depend-1.c
+ 8c3ceab30b17d7db76563ec581ddede2  gcc/testsuite/c-c++-common/gomp/taskwait-depend-nowait-1.c
  539c731e3f7fd40b1bf0432a8a02c04f  gcc/testsuite/c-c++-common/gomp/teams-1.c
  3020e821377ef557f546cba8a78f1192  gcc/testsuite/c-c++-common/gomp/teams-2.c
  3f5e45489b8b980cc7ab48dc63fd1c6d  gcc/testsuite/c-c++-common/gomp/teams-3.c
*************** e26c6f6984625a53461cd5383d9d7094  gcc/te
*** 10345,10354 ****
  5a99403ed7c8d93fdff7ad2011ac018b  gcc/testsuite/c-c++-common/hwasan/alloca-array-accessible.c
  d6a93365ce10aa090cd499fb86193a0c  gcc/testsuite/c-c++-common/hwasan/alloca-base-init.c
  40c902a38793f746997b860914f31045  gcc/testsuite/c-c++-common/hwasan/alloca-gets-different-tag.c
! 3f7f9dcfc96ce314b8d960d97bcb52b4  gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c
  547e9adde82130a73a2ced63c88deb21  gcc/testsuite/c-c++-common/hwasan/arguments-1.c
  648b204333db837d8503ea3fcc7b5e55  gcc/testsuite/c-c++-common/hwasan/arguments-2.c
! 6d489ba4eb1ce5cceded8bc67c7c2d1e  gcc/testsuite/c-c++-common/hwasan/arguments-3.c
  45ae4d2f42bd7222a3e8cd1115d9799a  gcc/testsuite/c-c++-common/hwasan/arguments.c
  ea3bd6ad99fc0b75e643d47378ddae86  gcc/testsuite/c-c++-common/hwasan/asan-pr63316.c
  b5f38e3c42020a47bf53cf73dfca26c7  gcc/testsuite/c-c++-common/hwasan/asan-pr70541.c
--- 11688,11697 ----
  5a99403ed7c8d93fdff7ad2011ac018b  gcc/testsuite/c-c++-common/hwasan/alloca-array-accessible.c
  d6a93365ce10aa090cd499fb86193a0c  gcc/testsuite/c-c++-common/hwasan/alloca-base-init.c
  40c902a38793f746997b860914f31045  gcc/testsuite/c-c++-common/hwasan/alloca-gets-different-tag.c
! f39e8077d066521fb41b5daf3d64bf84  gcc/testsuite/c-c++-common/hwasan/alloca-outside-caught.c
  547e9adde82130a73a2ced63c88deb21  gcc/testsuite/c-c++-common/hwasan/arguments-1.c
  648b204333db837d8503ea3fcc7b5e55  gcc/testsuite/c-c++-common/hwasan/arguments-2.c
! 333fb6cf3adc0825d1053dd1c868bc06  gcc/testsuite/c-c++-common/hwasan/arguments-3.c
  45ae4d2f42bd7222a3e8cd1115d9799a  gcc/testsuite/c-c++-common/hwasan/arguments.c
  ea3bd6ad99fc0b75e643d47378ddae86  gcc/testsuite/c-c++-common/hwasan/asan-pr63316.c
  b5f38e3c42020a47bf53cf73dfca26c7  gcc/testsuite/c-c++-common/hwasan/asan-pr70541.c
*************** d182cbfb9bfa11dddd767cad620d828a  gcc/te
*** 10361,10375 ****
  ba40d465ba36451b257309ff68e5a488  gcc/testsuite/c-c++-common/hwasan/check-interface.c
  f44e1d535ed848b242590be9807085e4  gcc/testsuite/c-c++-common/hwasan/halt_on_error-1.c
  2e356f3a5a84ac907719c0c90f0e15c3  gcc/testsuite/c-c++-common/hwasan/handles-poly_int-marked-vars.c
! ac7a0ade4744ce5d14407daf7c3e998d  gcc/testsuite/c-c++-common/hwasan/heap-overflow.c
  b8a75949d5842171c6ef396c7daab76e  gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c
! 060eb40ec48e4dc23c12e6b61b7ea750  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-access-parent.c
  81ccd096d83b8fa1dfcfc61001649496  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-basic-failure.c
  7efc0793081dc17013ea007a1274504f  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-clears-stack.c
  bf27eba0aaefbc14fdfeb32d90400a84  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-success.c
  2a9c8876bcc3184cf12dcb18ca70626a  gcc/testsuite/c-c++-common/hwasan/kernel-defaults.c
  cb739aab77fb27271b4e819a9c5a650d  gcc/testsuite/c-c++-common/hwasan/large-aligned-0.c
! df2a1fe61e97ae81c6d3e365f94973a8  gcc/testsuite/c-c++-common/hwasan/large-aligned-1.c
  d109bec7c8574b28e7698a90fc84582e  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-0.c
  ab21cd74c015ac1e39feedd1f9ac7599  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-1.c
  5bec95c2fe1d679d7613182dc94aff8e  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-2.c
--- 11704,11718 ----
  ba40d465ba36451b257309ff68e5a488  gcc/testsuite/c-c++-common/hwasan/check-interface.c
  f44e1d535ed848b242590be9807085e4  gcc/testsuite/c-c++-common/hwasan/halt_on_error-1.c
  2e356f3a5a84ac907719c0c90f0e15c3  gcc/testsuite/c-c++-common/hwasan/handles-poly_int-marked-vars.c
! 7eb7ddc211c60ffdebc4086ebcf41b38  gcc/testsuite/c-c++-common/hwasan/heap-overflow.c
  b8a75949d5842171c6ef396c7daab76e  gcc/testsuite/c-c++-common/hwasan/hwasan-poison-optimisation.c
! a8436d606a76e395385c4a61361d7ede  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-access-parent.c
  81ccd096d83b8fa1dfcfc61001649496  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-basic-failure.c
  7efc0793081dc17013ea007a1274504f  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-clears-stack.c
  bf27eba0aaefbc14fdfeb32d90400a84  gcc/testsuite/c-c++-common/hwasan/hwasan-thread-success.c
  2a9c8876bcc3184cf12dcb18ca70626a  gcc/testsuite/c-c++-common/hwasan/kernel-defaults.c
  cb739aab77fb27271b4e819a9c5a650d  gcc/testsuite/c-c++-common/hwasan/large-aligned-0.c
! d2bd47bfce5be64e851c6a3af766f9a7  gcc/testsuite/c-c++-common/hwasan/large-aligned-1.c
  d109bec7c8574b28e7698a90fc84582e  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-0.c
  ab21cd74c015ac1e39feedd1f9ac7599  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-1.c
  5bec95c2fe1d679d7613182dc94aff8e  gcc/testsuite/c-c++-common/hwasan/large-aligned-untagging-2.c
*************** aa795736ea117bbe49456fd6e83520e8  gcc/te
*** 10389,10395 ****
  94f78a6b04df5a5688921e5b3f576574  gcc/testsuite/c-c++-common/hwasan/setjmp-longjmp-0.c
  5ec6378e1e30788903f884aaddff5294  gcc/testsuite/c-c++-common/hwasan/setjmp-longjmp-1.c
  e4d5eb20b188e55ac6a64e3c0c9e8df6  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-0.c
! 4993bf4713b1a03c76d0ac655a2ebe98  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-1.c
  6147638e8e5113273815f41efd4e4931  gcc/testsuite/c-c++-common/hwasan/stack-tagging-disable.c
  c805f0e50b68c0f1a9a99f61e7123fb6  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c
  f007ef6d3bbb6f88e9353821e2968665  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-1.c
--- 11732,11738 ----
  94f78a6b04df5a5688921e5b3f576574  gcc/testsuite/c-c++-common/hwasan/setjmp-longjmp-0.c
  5ec6378e1e30788903f884aaddff5294  gcc/testsuite/c-c++-common/hwasan/setjmp-longjmp-1.c
  e4d5eb20b188e55ac6a64e3c0c9e8df6  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-0.c
! 928a71af15ece19316f60b8b76f62be0  gcc/testsuite/c-c++-common/hwasan/stack-tagging-basic-1.c
  6147638e8e5113273815f41efd4e4931  gcc/testsuite/c-c++-common/hwasan/stack-tagging-disable.c
  c805f0e50b68c0f1a9a99f61e7123fb6  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-0.c
  f007ef6d3bbb6f88e9353821e2968665  gcc/testsuite/c-c++-common/hwasan/unprotected-allocas-1.c
*************** a26cac5f6c3bf19d27815db147fb6b76  gcc/te
*** 10419,10442 ****
  22d0401be580cc821a107ff58ba0adf4  gcc/testsuite/c-c++-common/missing-header-4.c
  43b0969da91f5c38b8fb0ee512205d1f  gcc/testsuite/c-c++-common/missing-symbol.c
  a68a4cf86f443ff3cc492bde894e586e  gcc/testsuite/c-c++-common/modref-dse.c
! 33034d99e6dfa89744a2c586900037a3  gcc/testsuite/c-c++-common/nonnull-1.c
  a1ccbbeb722e380d831827588c7f4d57  gcc/testsuite/c-c++-common/nonnull-2.c
  56f94db4972b3a054d2adecfd106d42a  gcc/testsuite/c-c++-common/nonnull-3.c
  a7f92f1077c23eb293a388ad0c9418d7  gcc/testsuite/c-c++-common/opaque-vector.c
  b0c7bf5988f0583459fa73ced65ee847  gcc/testsuite/c-c++-common/patchable_function_entry-decl.c
! 8eda77bfb76b312688d152f13a8c8b93  gcc/testsuite/c-c++-common/patchable_function_entry-default.c
  66aa0e2905364a564c6cdf951d2dcaf5  gcc/testsuite/c-c++-common/patchable_function_entry-definition.c
  8dc709a510615d4b7752427741282b37  gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
  80a177ccd304d62e86cb7f75375f0958  gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
  498ddd8ad30f33954c75dc8c4bb14a15  gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
  a6ce976933c82e0ff9cfe2bb28e85af5  gcc/testsuite/c-c++-common/pr100785.c
  05e5f34e1a745d2204989ec4f256e3c7  gcc/testsuite/c-c++-common/pr101537.c
  8709cca98d2978c94addb154e2c7ae32  gcc/testsuite/c-c++-common/pr102281.c
  24cfa37b3314f819eee358a0281492a7  gcc/testsuite/c-c++-common/pr102285.c
  3b77bbb422eaff74de51c6cd92512232  gcc/testsuite/c-c++-common/pr103881.c
  0ad1fe60770cce573f6337c8d24e0fe7  gcc/testsuite/c-c++-common/pr104505.c
  f7797890edb72db96871a3c3582464f4  gcc/testsuite/c-c++-common/pr105186.c
  d5189fe9f7cb5f4a822563c9d438762d  gcc/testsuite/c-c++-common/pr105998.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  78a05c6e7d414ef4fd6f21dece4e9f21  gcc/testsuite/c-c++-common/pr19807-2.c
  39c0873a2c1c7f951e8b2f90ebc9e12d  gcc/testsuite/c-c++-common/pr19807-3.c
--- 11762,11801 ----
  22d0401be580cc821a107ff58ba0adf4  gcc/testsuite/c-c++-common/missing-header-4.c
  43b0969da91f5c38b8fb0ee512205d1f  gcc/testsuite/c-c++-common/missing-symbol.c
  a68a4cf86f443ff3cc492bde894e586e  gcc/testsuite/c-c++-common/modref-dse.c
! 1857ca1e2a63fca3b5383864d3c28579  gcc/testsuite/c-c++-common/nonnull-1.c
  a1ccbbeb722e380d831827588c7f4d57  gcc/testsuite/c-c++-common/nonnull-2.c
  56f94db4972b3a054d2adecfd106d42a  gcc/testsuite/c-c++-common/nonnull-3.c
  a7f92f1077c23eb293a388ad0c9418d7  gcc/testsuite/c-c++-common/opaque-vector.c
  b0c7bf5988f0583459fa73ced65ee847  gcc/testsuite/c-c++-common/patchable_function_entry-decl.c
! 6324357bde9b05bc514c6d5d454a6510  gcc/testsuite/c-c++-common/patchable_function_entry-default.c
  66aa0e2905364a564c6cdf951d2dcaf5  gcc/testsuite/c-c++-common/patchable_function_entry-definition.c
  8dc709a510615d4b7752427741282b37  gcc/testsuite/c-c++-common/patchable_function_entry-error-1.c
  80a177ccd304d62e86cb7f75375f0958  gcc/testsuite/c-c++-common/patchable_function_entry-error-2.c
  498ddd8ad30f33954c75dc8c4bb14a15  gcc/testsuite/c-c++-common/patchable_function_entry-error-3.c
+ f29317306885c84ce3055ab8ed50523e  gcc/testsuite/c-c++-common/pointer-to-fn1.c
  a6ce976933c82e0ff9cfe2bb28e85af5  gcc/testsuite/c-c++-common/pr100785.c
  05e5f34e1a745d2204989ec4f256e3c7  gcc/testsuite/c-c++-common/pr101537.c
  8709cca98d2978c94addb154e2c7ae32  gcc/testsuite/c-c++-common/pr102281.c
  24cfa37b3314f819eee358a0281492a7  gcc/testsuite/c-c++-common/pr102285.c
+ aa3fc5c6f05836355e73da21c4ceac97  gcc/testsuite/c-c++-common/pr103798-1.c
+ de10da1e1aec0a1dcb31ef7ac653e978  gcc/testsuite/c-c++-common/pr103798-10.c
+ 032c2a0ecbc90df1ed8a937890d7d665  gcc/testsuite/c-c++-common/pr103798-2.c
+ b3a421701bd54bd29725cf811bcc7bdc  gcc/testsuite/c-c++-common/pr103798-3.c
+ fbace92b2eb2c2560edc165a281b8fe0  gcc/testsuite/c-c++-common/pr103798-4.c
+ 7bcd6e6668dfbb3133dbb22ca4245dfd  gcc/testsuite/c-c++-common/pr103798-5.c
+ e19241d0c4ae62db30a735ecf22df087  gcc/testsuite/c-c++-common/pr103798-6.c
+ 827f9633a827d46a2be8c0266ba54fb2  gcc/testsuite/c-c++-common/pr103798-7.c
+ b462f367b31710a6645647c66da8c83c  gcc/testsuite/c-c++-common/pr103798-8.c
+ 2a606136f60e540c3f45aa9a25392250  gcc/testsuite/c-c++-common/pr103798-9.c
  3b77bbb422eaff74de51c6cd92512232  gcc/testsuite/c-c++-common/pr103881.c
  0ad1fe60770cce573f6337c8d24e0fe7  gcc/testsuite/c-c++-common/pr104505.c
  f7797890edb72db96871a3c3582464f4  gcc/testsuite/c-c++-common/pr105186.c
  d5189fe9f7cb5f4a822563c9d438762d  gcc/testsuite/c-c++-common/pr105998.c
+ 10c9b11e734e514259fcf9722af7ef2c  gcc/testsuite/c-c++-common/pr106133.c
+ ebd0b7e3acd0cf5b26b12db66f960d0b  gcc/testsuite/c-c++-common/pr107358.c
+ e1ef9c58498f72552b0ec84751024b54  gcc/testsuite/c-c++-common/pr107465.c
+ 2ce597ddfe4f3e0b48f9b9dbd2e4cb0a  gcc/testsuite/c-c++-common/pr108365.c
+ 043b8dd187f001c1699789f752f3432d  gcc/testsuite/c-c++-common/pr108605.c
  f5dce8e27cfb8a6bfffe57596fecb796  gcc/testsuite/c-c++-common/pr19807-1.c
  78a05c6e7d414ef4fd6f21dece4e9f21  gcc/testsuite/c-c++-common/pr19807-2.c
  39c0873a2c1c7f951e8b2f90ebc9e12d  gcc/testsuite/c-c++-common/pr19807-3.c
*************** e257567d3e45108aa92c38c2756f8082  gcc/te
*** 10520,10526 ****
  93039c44a01737b0dc6ca34eeea375fc  gcc/testsuite/c-c++-common/pr57371-1.c
  88910d91b58adeb8bf74efa42b6a6a9d  gcc/testsuite/c-c++-common/pr57371-2.c
  d7d4bbcfc6cb3a970e0d8d14ece542b8  gcc/testsuite/c-c++-common/pr57371-3.c
! 076fa96d2edfc4f24e676b6a522f3d6f  gcc/testsuite/c-c++-common/pr57371-4.c
  d38efef14d0ab2c49efc359e81d86d1c  gcc/testsuite/c-c++-common/pr57653-2.c
  68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/c-c++-common/pr57653-2.h
  96f621870e8a9d49a5339944dcf7beca  gcc/testsuite/c-c++-common/pr57653.c
--- 11879,11886 ----
  93039c44a01737b0dc6ca34eeea375fc  gcc/testsuite/c-c++-common/pr57371-1.c
  88910d91b58adeb8bf74efa42b6a6a9d  gcc/testsuite/c-c++-common/pr57371-2.c
  d7d4bbcfc6cb3a970e0d8d14ece542b8  gcc/testsuite/c-c++-common/pr57371-3.c
! fd2930d2b601be1780cecd8ea48e3c6d  gcc/testsuite/c-c++-common/pr57371-4.c
! 78a7808315f694542dadb9618ee9cd65  gcc/testsuite/c-c++-common/pr57371-5.c
  d38efef14d0ab2c49efc359e81d86d1c  gcc/testsuite/c-c++-common/pr57653-2.c
  68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/c-c++-common/pr57653-2.h
  96f621870e8a9d49a5339944dcf7beca  gcc/testsuite/c-c++-common/pr57653.c
*************** afc9c0633101c574c7b1e04cac291fa2  gcc/te
*** 10568,10575 ****
  435375785acb2fdf9338ee9c2d6fb56f  gcc/testsuite/c-c++-common/pr69126.c
  1e87bd8e59e9bebe86f35abb53c89511  gcc/testsuite/c-c++-common/pr69543-1.c
  f25a0e056599bf0672be4eea87f2f110  gcc/testsuite/c-c++-common/pr69543-2.c
! 4b3f97b74185893b39eb7c2a3206407d  gcc/testsuite/c-c++-common/pr69543-3.c
! b39deb63b142ed37cbeed2ef8f825c87  gcc/testsuite/c-c++-common/pr69543-4.c
  a8220c6b25a47605b9a997470c574cce  gcc/testsuite/c-c++-common/pr69558-1.c
  bf26c472b05143abba91a54602d1fb0f  gcc/testsuite/c-c++-common/pr69558-2.c
  cbe3fc815940c07168eae35940a68240  gcc/testsuite/c-c++-common/pr69558-3.c
--- 11928,11935 ----
  435375785acb2fdf9338ee9c2d6fb56f  gcc/testsuite/c-c++-common/pr69126.c
  1e87bd8e59e9bebe86f35abb53c89511  gcc/testsuite/c-c++-common/pr69543-1.c
  f25a0e056599bf0672be4eea87f2f110  gcc/testsuite/c-c++-common/pr69543-2.c
! 484333ffc1da1220bdd47068fe5f62fc  gcc/testsuite/c-c++-common/pr69543-3.c
! 08ae98b15c2f9fe05699ad5344a213d7  gcc/testsuite/c-c++-common/pr69543-4.c
  a8220c6b25a47605b9a997470c574cce  gcc/testsuite/c-c++-common/pr69558-1.c
  bf26c472b05143abba91a54602d1fb0f  gcc/testsuite/c-c++-common/pr69558-2.c
  cbe3fc815940c07168eae35940a68240  gcc/testsuite/c-c++-common/pr69558-3.c
*************** f8ba9b55656ffe194a765712af938e40  gcc/te
*** 10629,10634 ****
--- 11989,11996 ----
  8fd647f51d930e760ae749a56cb10ac5  gcc/testsuite/c-c++-common/pr90677-2.c
  d42df05e7fed418c382335210d53f9b8  gcc/testsuite/c-c++-common/pr90677.c
  0689877a2912c8e2b99fcbf9989c65f4  gcc/testsuite/c-c++-common/pr90927.c
+ fabaa1e4034484088cdb760c3f98dc80  gcc/testsuite/c-c++-common/pr91669.c
+ 52b78c302ff9060e9cc2b3b9f73ebf94  gcc/testsuite/c-c++-common/pr91733.c
  33199266bc6ca89c5e64e48f4e68ed29  gcc/testsuite/c-c++-common/pr92352.c
  b45c683e1065f93893860cdb2a150b1c  gcc/testsuite/c-c++-common/pr92452.c
  265ce028b2de4c8a8622390ecfdfeda0  gcc/testsuite/c-c++-common/pr92833-1.c
*************** e7da4642e25c14b28d3cbf86173d69a5  gcc/te
*** 10656,10661 ****
--- 12018,12030 ----
  7859693e4c5c966ac09c6aa874fe5eb9  gcc/testsuite/c-c++-common/pr98556.c
  dcb1283b3d236483f0079fddb308212a  gcc/testsuite/c-c++-common/pr98943.c
  7e14f7ea529494ee1df50282a20a267c  gcc/testsuite/c-c++-common/pr99113.c
+ 9e63be4f202bccd1a865d8764e25c90f  gcc/testsuite/c-c++-common/pragma-diag-11.c
+ 382ced085cb6ff82e210bfc5378472f4  gcc/testsuite/c-c++-common/pragma-diag-12.c
+ c03d94813a62c9fafb95c7b8983360ce  gcc/testsuite/c-c++-common/pragma-diag-13.c
+ 1bf7750c89990cb4a063d934c12992b9  gcc/testsuite/c-c++-common/pragma-diag-14.c
+ a5afea58d4e15a829a8cfe4878ebfdc7  gcc/testsuite/c-c++-common/pragma-diag-15.c
+ 2f44bc43abfb65e37859c4ba4bba1d3d  gcc/testsuite/c-c++-common/pragma-diag-16.c
+ 6fbfb0791efb04e7199a6a9e44c1e3c9  gcc/testsuite/c-c++-common/pragma-region.c
  b0ba836310044e7b419ef679f0b48d6f  gcc/testsuite/c-c++-common/raw-string-1.c
  554e7071d2525351de28445762633866  gcc/testsuite/c-c++-common/raw-string-10.c
  fc54e7227094f307fa566b3a8cd0ba9a  gcc/testsuite/c-c++-common/raw-string-11.c
*************** e49568f3823955061595d6d2bc00ec34  gcc/te
*** 10675,10691 ****
  a183a8ddeb27d5e9654e05ba36537908  gcc/testsuite/c-c++-common/raw-string-7.c
  1be74e84c9b067d6ddd2a8488e5e6019  gcc/testsuite/c-c++-common/raw-string-8.c
  4ff3ed308d8da8d77850a30d4f12d391  gcc/testsuite/c-c++-common/raw-string-9.c
  27d899fda0e1e6f64fc3f2e0f3e7832e  gcc/testsuite/c-c++-common/restrict-1.c
  d38712ca0af7a9dc1180236b496d6f9f  gcc/testsuite/c-c++-common/restrict-2.c
  b75f32090613560551fe2b3a16a6bddf  gcc/testsuite/c-c++-common/restrict-4.c
  a1c15ef5229215f0209411736f5ccdfd  gcc/testsuite/c-c++-common/rotate-1.c
  b47149b1c26c8061062a2b6e5392dc4c  gcc/testsuite/c-c++-common/rotate-1a.c
! 7f018a27a12c5ec9bb856796c1c6c3ee  gcc/testsuite/c-c++-common/rotate-2.c
  f13d0dfdffd866dd9c1de156b3de40ae  gcc/testsuite/c-c++-common/rotate-2a.c
  a5a8317b861fa6a66f1e91e6067a3712  gcc/testsuite/c-c++-common/rotate-3.c
  0c3f3d58094a5705771f4bb82ec3c085  gcc/testsuite/c-c++-common/rotate-3a.c
! 14d47dd634bb11141b31aeca540af749  gcc/testsuite/c-c++-common/rotate-4.c
  0c3f3d58094a5705771f4bb82ec3c085  gcc/testsuite/c-c++-common/rotate-4a.c
  d325df1d9bf8b85f88d2bd466ab4316a  gcc/testsuite/c-c++-common/rotate-5.c
  1de2cfeb4b5fc7308742490cffab8f4a  gcc/testsuite/c-c++-common/rotate-6.c
  f8efe3ea05de6da4c3e58da2f4059831  gcc/testsuite/c-c++-common/rotate-6a.c
--- 12044,12066 ----
  a183a8ddeb27d5e9654e05ba36537908  gcc/testsuite/c-c++-common/raw-string-7.c
  1be74e84c9b067d6ddd2a8488e5e6019  gcc/testsuite/c-c++-common/raw-string-8.c
  4ff3ed308d8da8d77850a30d4f12d391  gcc/testsuite/c-c++-common/raw-string-9.c
+ 9e3a91b7d141874f69445c22a3d74ab6  gcc/testsuite/c-c++-common/raw-string-directive-1.c
+ 00bb4dd954585ae7c44fc148fcaeff2c  gcc/testsuite/c-c++-common/raw-string-directive-2.c
  27d899fda0e1e6f64fc3f2e0f3e7832e  gcc/testsuite/c-c++-common/restrict-1.c
  d38712ca0af7a9dc1180236b496d6f9f  gcc/testsuite/c-c++-common/restrict-2.c
  b75f32090613560551fe2b3a16a6bddf  gcc/testsuite/c-c++-common/restrict-4.c
  a1c15ef5229215f0209411736f5ccdfd  gcc/testsuite/c-c++-common/rotate-1.c
+ 5b438ca153be076de6ede90b95050821  gcc/testsuite/c-c++-common/rotate-10.c
+ af8d53f0ae71fa4edd54ac045b8b1055  gcc/testsuite/c-c++-common/rotate-11.c
  b47149b1c26c8061062a2b6e5392dc4c  gcc/testsuite/c-c++-common/rotate-1a.c
! 530ad828644bc1ac5931dccc4963f6ca  gcc/testsuite/c-c++-common/rotate-2.c
  f13d0dfdffd866dd9c1de156b3de40ae  gcc/testsuite/c-c++-common/rotate-2a.c
+ 04e9b29ffa6be8f661280d8548a9d17f  gcc/testsuite/c-c++-common/rotate-2b.c
  a5a8317b861fa6a66f1e91e6067a3712  gcc/testsuite/c-c++-common/rotate-3.c
  0c3f3d58094a5705771f4bb82ec3c085  gcc/testsuite/c-c++-common/rotate-3a.c
! d50a5d2fa28ae6f428071c2f668381b8  gcc/testsuite/c-c++-common/rotate-4.c
  0c3f3d58094a5705771f4bb82ec3c085  gcc/testsuite/c-c++-common/rotate-4a.c
+ 41b4de6a0a115362b65ace3b890e8622  gcc/testsuite/c-c++-common/rotate-4b.c
  d325df1d9bf8b85f88d2bd466ab4316a  gcc/testsuite/c-c++-common/rotate-5.c
  1de2cfeb4b5fc7308742490cffab8f4a  gcc/testsuite/c-c++-common/rotate-6.c
  f8efe3ea05de6da4c3e58da2f4059831  gcc/testsuite/c-c++-common/rotate-6a.c
*************** e6b8806ad0c5451ea3a2026279567203  gcc/te
*** 10738,10751 ****
  c1e50a7071b6999a8895b383c899231c  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c
  e71883f492cebf8129478eb15f05b834  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c
  a10b02fb3b2593b2641dfd572427f365  gcc/testsuite/c-c++-common/torture/asm-inline.c
! 4456d62b0c9d26f4bc6d7feb57e531ea  gcc/testsuite/c-c++-common/torture/attr-noinit-1.c
! 4af5d9ab597a3d1d807b0b808da0d557  gcc/testsuite/c-c++-common/torture/attr-noinit-2.c
! 923db8c72ddf0494e1c474214083baf3  gcc/testsuite/c-c++-common/torture/attr-noinit-3.c
  5d4380318adbcfde4ba27ca6b1db3d2b  gcc/testsuite/c-c++-common/torture/attr-noinit-invalid.c
  b197053d2b7a9103f76ef8190412fb65  gcc/testsuite/c-c++-common/torture/attr-noinit-main.inc
! 917e21ee93c6045e0797d8f66db6f35c  gcc/testsuite/c-c++-common/torture/attr-persistent-1.c
  b3c4ee91f93d55bb17b52e7be1926d46  gcc/testsuite/c-c++-common/torture/attr-persistent-2.c
! ed63b6714ecec0d6cf1643e4fd41ee3f  gcc/testsuite/c-c++-common/torture/attr-persistent-3.c
  6a88d7d32ff5148b8a7b6b7e1d148e73  gcc/testsuite/c-c++-common/torture/attr-persistent-invalid.c
  c9d443b03daacdbd926bfa8fc66aeb5a  gcc/testsuite/c-c++-common/torture/attr-persistent-main.inc
  44b670d0aec741e3503143d1fd81cfa5  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.c
--- 12113,12126 ----
  c1e50a7071b6999a8895b383c899231c  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-1.c
  e71883f492cebf8129478eb15f05b834  gcc/testsuite/c-c++-common/torture/aarch64-vect-lane-2.c
  a10b02fb3b2593b2641dfd572427f365  gcc/testsuite/c-c++-common/torture/asm-inline.c
! 90cfb4344453aaf961b99512974b93b2  gcc/testsuite/c-c++-common/torture/attr-noinit-1.c
! 2b07a0a319f38afa7d1c483f3f6d2e88  gcc/testsuite/c-c++-common/torture/attr-noinit-2.c
! 15a337bdd520603b23ac429fcd982ee1  gcc/testsuite/c-c++-common/torture/attr-noinit-3.c
  5d4380318adbcfde4ba27ca6b1db3d2b  gcc/testsuite/c-c++-common/torture/attr-noinit-invalid.c
  b197053d2b7a9103f76ef8190412fb65  gcc/testsuite/c-c++-common/torture/attr-noinit-main.inc
! c17379fd4708b74b76a6c4a15e693ee1  gcc/testsuite/c-c++-common/torture/attr-persistent-1.c
  b3c4ee91f93d55bb17b52e7be1926d46  gcc/testsuite/c-c++-common/torture/attr-persistent-2.c
! cd456aa4b1075a10a74a254cab500d41  gcc/testsuite/c-c++-common/torture/attr-persistent-3.c
  6a88d7d32ff5148b8a7b6b7e1d148e73  gcc/testsuite/c-c++-common/torture/attr-persistent-invalid.c
  c9d443b03daacdbd926bfa8fc66aeb5a  gcc/testsuite/c-c++-common/torture/attr-persistent-main.inc
  44b670d0aec741e3503143d1fd81cfa5  gcc/testsuite/c-c++-common/torture/builtin-arith-overflow-1.c
*************** ecf00277bf404ed30fb08d5a8347834e  gcc/te
*** 10796,10802 ****
  e6519a905d51bc4a47ceea85c886d98b  gcc/testsuite/c-c++-common/torture/builtin-convertvector-1.c
  1152c43998c24654fd01c67b23e23932  gcc/testsuite/c-c++-common/torture/builtin-convertvector-2.c
  78be28e180d73a89ef820b89b8e47458  gcc/testsuite/c-c++-common/torture/builtin-shufflevector-1.c
! 6ff515d241bb7ad8a62b371230071c70  gcc/testsuite/c-c++-common/torture/builtin-shufflevector-2.c
  bc76dceb7876987432ddd7a6c1908c45  gcc/testsuite/c-c++-common/torture/builtin-shufflevector-3.c
  255588ac3834ead37b7f36c6b58cd61b  gcc/testsuite/c-c++-common/torture/complex-alias-1.c
  252f95ec0162dd10262e227d09b36737  gcc/testsuite/c-c++-common/torture/complex-sign-add.c
--- 12171,12177 ----
  e6519a905d51bc4a47ceea85c886d98b  gcc/testsuite/c-c++-common/torture/builtin-convertvector-1.c
  1152c43998c24654fd01c67b23e23932  gcc/testsuite/c-c++-common/torture/builtin-convertvector-2.c
  78be28e180d73a89ef820b89b8e47458  gcc/testsuite/c-c++-common/torture/builtin-shufflevector-1.c
! aa1e8bdc94d5d24f185258290bad8950  gcc/testsuite/c-c++-common/torture/builtin-shufflevector-2.c
  bc76dceb7876987432ddd7a6c1908c45  gcc/testsuite/c-c++-common/torture/builtin-shufflevector-3.c
  255588ac3834ead37b7f36c6b58cd61b  gcc/testsuite/c-c++-common/torture/complex-alias-1.c
  252f95ec0162dd10262e227d09b36737  gcc/testsuite/c-c++-common/torture/complex-sign-add.c
*************** fff9a866ffaa3beb1d96455b3c496362  gcc/te
*** 10896,10902 ****
  dcb530cb7f303a23cd60919969cb794b  gcc/testsuite/c-c++-common/ubsan/align-5.c
  90dde247618151c35b3bca50f7c3e3d0  gcc/testsuite/c-c++-common/ubsan/align-6.c
  a7a38e8a32e9f420307680f9fd7c64d0  gcc/testsuite/c-c++-common/ubsan/align-7.c
! 5558f00ec360a0e38197639e469071d5  gcc/testsuite/c-c++-common/ubsan/align-8.c
  bf3eafbf8ab8751240e00f5411cf7d52  gcc/testsuite/c-c++-common/ubsan/align-9.c
  142f93192a848e1ae775dbab610799fa  gcc/testsuite/c-c++-common/ubsan/attrib-1.c
  695dc9f7bffbf6fa2ec45632f11a74a8  gcc/testsuite/c-c++-common/ubsan/attrib-2.c
--- 12271,12277 ----
  dcb530cb7f303a23cd60919969cb794b  gcc/testsuite/c-c++-common/ubsan/align-5.c
  90dde247618151c35b3bca50f7c3e3d0  gcc/testsuite/c-c++-common/ubsan/align-6.c
  a7a38e8a32e9f420307680f9fd7c64d0  gcc/testsuite/c-c++-common/ubsan/align-7.c
! 30278b21084814925748c526392c249e  gcc/testsuite/c-c++-common/ubsan/align-8.c
  bf3eafbf8ab8751240e00f5411cf7d52  gcc/testsuite/c-c++-common/ubsan/align-9.c
  142f93192a848e1ae775dbab610799fa  gcc/testsuite/c-c++-common/ubsan/attrib-1.c
  695dc9f7bffbf6fa2ec45632f11a74a8  gcc/testsuite/c-c++-common/ubsan/attrib-2.c
*************** c0cea811b60785fdbeb5a8c17cbfe97d  gcc/te
*** 10911,10917 ****
--- 12286,12298 ----
  8f13cc9cd85cff091c6bf14ddbef9776  gcc/testsuite/c-c++-common/ubsan/bounds-13.c
  cd3471a668bc0c1cefbc4a040f2df388  gcc/testsuite/c-c++-common/ubsan/bounds-14.c
  c5c4bd7ee0bda3e080d5ab175b9b63cb  gcc/testsuite/c-c++-common/ubsan/bounds-15.c
+ 3a9c9b964b340cb4859e39d040bc193d  gcc/testsuite/c-c++-common/ubsan/bounds-16.c
+ 8011f67869ad59f42ba39f6853de135e  gcc/testsuite/c-c++-common/ubsan/bounds-17.c
+ 9a0880aa101d2b0ff4ff66379de3471e  gcc/testsuite/c-c++-common/ubsan/bounds-18.c
+ 893ed365dec1c499be68468f90e62fac  gcc/testsuite/c-c++-common/ubsan/bounds-19.c
  f850e06c219ce39b9e49f07966a2cf65  gcc/testsuite/c-c++-common/ubsan/bounds-2.c
+ f4602c1ec2feeecdcca8c904e3076a37  gcc/testsuite/c-c++-common/ubsan/bounds-20.c
+ 66549344c0de2cd4edb6f4865ffe4c50  gcc/testsuite/c-c++-common/ubsan/bounds-21.c
  e7f60e0642d24587e57ad55271053c36  gcc/testsuite/c-c++-common/ubsan/bounds-3.c
  55d21c141077691618a0992441b77856  gcc/testsuite/c-c++-common/ubsan/bounds-4.c
  c4c0ec4e493317355a230d4d4a6dd09d  gcc/testsuite/c-c++-common/ubsan/bounds-5.c
*************** ea241630b0a3aed6153f59337a91f543  gcc/te
*** 10925,10934 ****
  967a19e8ebcf02886c03bde760bd29d2  gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c
  05b159dca2694a2a43f92aaf1e866b20  gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c
  d6fc9631c4badbefecdf01c3cfb3fca2  gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c
! 4372be80c58bbb5fcfb5d1250711092a  gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c
  1ee93f444bdc1eb257c409781bbb44fb  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
  6f79bf0d7a915586511e6d16f808b12f  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
  d48169540b483892cb5aef4288256769  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
  8d9e9d9d9f81061daf513b5ba1554c80  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
  96159bb28961f7d226730c47d4f46b1c  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
  412e240273773d78a1d355e70f1bb47f  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-11.c
--- 12306,12316 ----
  967a19e8ebcf02886c03bde760bd29d2  gcc/testsuite/c-c++-common/ubsan/div-by-zero-1.c
  05b159dca2694a2a43f92aaf1e866b20  gcc/testsuite/c-c++-common/ubsan/div-by-zero-2.c
  d6fc9631c4badbefecdf01c3cfb3fca2  gcc/testsuite/c-c++-common/ubsan/div-by-zero-3.c
! d7b2069383fe12d59809132e0b0b0b7d  gcc/testsuite/c-c++-common/ubsan/div-by-zero-4.c
  1ee93f444bdc1eb257c409781bbb44fb  gcc/testsuite/c-c++-common/ubsan/div-by-zero-5.c
  6f79bf0d7a915586511e6d16f808b12f  gcc/testsuite/c-c++-common/ubsan/div-by-zero-6.c
  d48169540b483892cb5aef4288256769  gcc/testsuite/c-c++-common/ubsan/div-by-zero-7.c
+ 1a58dcff8d9551745c7d182be6aae836  gcc/testsuite/c-c++-common/ubsan/div-by-zero-8.c
  8d9e9d9d9f81061daf513b5ba1554c80  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-1.c
  96159bb28961f7d226730c47d4f46b1c  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-10.c
  412e240273773d78a1d355e70f1bb47f  gcc/testsuite/c-c++-common/ubsan/float-cast-overflow-11.c
*************** ff2685208629414a89fbb3161f228476  gcc/te
*** 10949,10955 ****
  3c0ae577713ec4c85f5ad514bc7596aa  gcc/testsuite/c-c++-common/ubsan/nonnull-1.c
  5c4f1ab5d64a7368a8615e6b97b39494  gcc/testsuite/c-c++-common/ubsan/nonnull-2.c
  2e3de806982cf99d37072ed04555ac88  gcc/testsuite/c-c++-common/ubsan/nonnull-3.c
! 1a888a48d0fef7aad10fffa1fa7e3d64  gcc/testsuite/c-c++-common/ubsan/nonnull-4.c
  e2015df970a997f64cabe4a791c7016c  gcc/testsuite/c-c++-common/ubsan/nonnull-5.c
  6842fa0a5074224e7bfc1fa8476e9101  gcc/testsuite/c-c++-common/ubsan/null-1.c
  980109fa8241a757eeaa7dd86f275f3c  gcc/testsuite/c-c++-common/ubsan/null-10.c
--- 12331,12337 ----
  3c0ae577713ec4c85f5ad514bc7596aa  gcc/testsuite/c-c++-common/ubsan/nonnull-1.c
  5c4f1ab5d64a7368a8615e6b97b39494  gcc/testsuite/c-c++-common/ubsan/nonnull-2.c
  2e3de806982cf99d37072ed04555ac88  gcc/testsuite/c-c++-common/ubsan/nonnull-3.c
! ab3cfaf3576e4a617a126e1901da04f3  gcc/testsuite/c-c++-common/ubsan/nonnull-4.c
  e2015df970a997f64cabe4a791c7016c  gcc/testsuite/c-c++-common/ubsan/nonnull-5.c
  6842fa0a5074224e7bfc1fa8476e9101  gcc/testsuite/c-c++-common/ubsan/null-1.c
  980109fa8241a757eeaa7dd86f275f3c  gcc/testsuite/c-c++-common/ubsan/null-10.c
*************** c850f12076b9a7a84c2510d513a753e2  gcc/te
*** 10984,10990 ****
  0287438532e192ca85b3fab0748e11a7  gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
  fe38964f8532802a42fe779509f4d1a6  gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c
  a4b098303ece4486995742ff29ccdd05  gcc/testsuite/c-c++-common/ubsan/overflow-add-3.c
! c52181a20cd068403270fa30cac1a008  gcc/testsuite/c-c++-common/ubsan/overflow-add-4.c
  ae090ae431e425fca22fede2f8f4c79d  gcc/testsuite/c-c++-common/ubsan/overflow-add-5.c
  6de08ea7f09b2090039a215c83d0f880  gcc/testsuite/c-c++-common/ubsan/overflow-div-1.c
  9ee33ba7d3a8f6a2c2a43b96a23ec111  gcc/testsuite/c-c++-common/ubsan/overflow-div-2.c
--- 12366,12372 ----
  0287438532e192ca85b3fab0748e11a7  gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
  fe38964f8532802a42fe779509f4d1a6  gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c
  a4b098303ece4486995742ff29ccdd05  gcc/testsuite/c-c++-common/ubsan/overflow-add-3.c
! 5dd5acaa8eba491fd426c28994bea762  gcc/testsuite/c-c++-common/ubsan/overflow-add-4.c
  ae090ae431e425fca22fede2f8f4c79d  gcc/testsuite/c-c++-common/ubsan/overflow-add-5.c
  6de08ea7f09b2090039a215c83d0f880  gcc/testsuite/c-c++-common/ubsan/overflow-div-1.c
  9ee33ba7d3a8f6a2c2a43b96a23ec111  gcc/testsuite/c-c++-common/ubsan/overflow-div-2.c
*************** e38a861012a1449b45bab897d23db346  gcc/te
*** 11003,11010 ****
  f5c3f8c802beee48f514efd82c71f586  gcc/testsuite/c-c++-common/ubsan/overflow-sub-4.c
  a419ef4838cde6817792405820466636  gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c
  2ca43a119b7a576e216390fb43e1dd13  gcc/testsuite/c-c++-common/ubsan/overflow-vec-2.c
  52e44aba0bf4e0682451881391dfc23a  gcc/testsuite/c-c++-common/ubsan/pr56917.c
! 277b1083be8186921fac899c35d1f83a  gcc/testsuite/c-c++-common/ubsan/pr56956.c
  e229f42e8220b3ff0c068855f57a5b9b  gcc/testsuite/c-c++-common/ubsan/pr58443-1.c
  836a898e53e4feb76cb1fd93c367d0fd  gcc/testsuite/c-c++-common/ubsan/pr58443-2.c
  29b14745df2ec9f13eceac0200029b58  gcc/testsuite/c-c++-common/ubsan/pr58443-3.c
--- 12385,12399 ----
  f5c3f8c802beee48f514efd82c71f586  gcc/testsuite/c-c++-common/ubsan/overflow-sub-4.c
  a419ef4838cde6817792405820466636  gcc/testsuite/c-c++-common/ubsan/overflow-vec-1.c
  2ca43a119b7a576e216390fb43e1dd13  gcc/testsuite/c-c++-common/ubsan/overflow-vec-2.c
+ b4a30ebdc9604df4e34396d8e46b7889  gcc/testsuite/c-c++-common/ubsan/pr106990.c
+ 6356a42d2aca6eb5bd33f8baf0ab7190  gcc/testsuite/c-c++-common/ubsan/pr108256.c
+ 4283d2f43a803be7759bd958b4845122  gcc/testsuite/c-c++-common/ubsan/pr108880.c
+ e0b17a64f9ea468c8e448df607a7764a  gcc/testsuite/c-c++-common/ubsan/pr109107-1.c
+ 2d09d34cddcaafa44376e58b570e33c4  gcc/testsuite/c-c++-common/ubsan/pr109107-2.c
+ b07e56faf8b8f61a579155aab9444dd0  gcc/testsuite/c-c++-common/ubsan/pr109107-3.c
+ ccb4daac3853da016aaee9aaef0fb5b0  gcc/testsuite/c-c++-common/ubsan/pr109107-4.c
  52e44aba0bf4e0682451881391dfc23a  gcc/testsuite/c-c++-common/ubsan/pr56917.c
! bd4ddd65fb143719a5105084239eb4d7  gcc/testsuite/c-c++-common/ubsan/pr56956.c
  e229f42e8220b3ff0c068855f57a5b9b  gcc/testsuite/c-c++-common/ubsan/pr58443-1.c
  836a898e53e4feb76cb1fd93c367d0fd  gcc/testsuite/c-c++-common/ubsan/pr58443-2.c
  29b14745df2ec9f13eceac0200029b58  gcc/testsuite/c-c++-common/ubsan/pr58443-3.c
*************** e448ddddec48e19348734e1bc0fa2581  gcc/te
*** 11033,11039 ****
  023de540400ffa2ec91e9be4a9599a8a  gcc/testsuite/c-c++-common/ubsan/pr66313.c
  a8aa1b8550acd5ba45ee24145333c990  gcc/testsuite/c-c++-common/ubsan/pr66908.c
  ffc7c68789ff080a9c2dc0100772c9ea  gcc/testsuite/c-c++-common/ubsan/pr67921.c
! 9bd2c80828bcc0260a30db4f41b6dd8f  gcc/testsuite/c-c++-common/ubsan/pr68142.c
  374a95aec6df8d9f01336349016e6f38  gcc/testsuite/c-c++-common/ubsan/pr71403-1.c
  91513b12d8a42f21fa389a238ec16f2f  gcc/testsuite/c-c++-common/ubsan/pr71403-2.c
  efb1eb4a7a1fdc9fc291f5f9721526d0  gcc/testsuite/c-c++-common/ubsan/pr71403-3.c
--- 12422,12428 ----
  023de540400ffa2ec91e9be4a9599a8a  gcc/testsuite/c-c++-common/ubsan/pr66313.c
  a8aa1b8550acd5ba45ee24145333c990  gcc/testsuite/c-c++-common/ubsan/pr66908.c
  ffc7c68789ff080a9c2dc0100772c9ea  gcc/testsuite/c-c++-common/ubsan/pr67921.c
! 2077e57ae4df7b0a62586a3631f3f818  gcc/testsuite/c-c++-common/ubsan/pr68142.c
  374a95aec6df8d9f01336349016e6f38  gcc/testsuite/c-c++-common/ubsan/pr71403-1.c
  91513b12d8a42f21fa389a238ec16f2f  gcc/testsuite/c-c++-common/ubsan/pr71403-2.c
  efb1eb4a7a1fdc9fc291f5f9721526d0  gcc/testsuite/c-c++-common/ubsan/pr71403-3.c
*************** c2f3b3be31f310c27528d1ee4cc38bb9  gcc/te
*** 11047,11053 ****
  3346d395776f3d994b7d556bb41a2ebd  gcc/testsuite/c-c++-common/ubsan/pr80536.c
  9979234bfb68a885a383bb474f465ef7  gcc/testsuite/c-c++-common/ubsan/pr80800.c
  4977700fcf89f13d3232ebf010dfa0fd  gcc/testsuite/c-c++-common/ubsan/pr80875.c
! f2bcdc6534b76e8e3587a2418324e5dd  gcc/testsuite/c-c++-common/ubsan/pr80932.c
  fbd76d8a439d83bd798b80980de9bd48  gcc/testsuite/c-c++-common/ubsan/pr81065.c
  dc1e148d3b59fe6703bb8006c184e064  gcc/testsuite/c-c++-common/ubsan/pr81088.c
  9e08694eb8f6d839a1f9556540b783c1  gcc/testsuite/c-c++-common/ubsan/pr81097.c
--- 12436,12442 ----
  3346d395776f3d994b7d556bb41a2ebd  gcc/testsuite/c-c++-common/ubsan/pr80536.c
  9979234bfb68a885a383bb474f465ef7  gcc/testsuite/c-c++-common/ubsan/pr80800.c
  4977700fcf89f13d3232ebf010dfa0fd  gcc/testsuite/c-c++-common/ubsan/pr80875.c
! 0bf25cc075294fd55a7a8d9cb4cb25ec  gcc/testsuite/c-c++-common/ubsan/pr80932.c
  fbd76d8a439d83bd798b80980de9bd48  gcc/testsuite/c-c++-common/ubsan/pr81065.c
  dc1e148d3b59fe6703bb8006c184e064  gcc/testsuite/c-c++-common/ubsan/pr81088.c
  9e08694eb8f6d839a1f9556540b783c1  gcc/testsuite/c-c++-common/ubsan/pr81097.c
*************** a55f82635f39282e5a6df541601c4ccc  gcc/te
*** 11056,11062 ****
  0fd3d9cb379639b94e1f114a3f4dffbe  gcc/testsuite/c-c++-common/ubsan/pr81705.c
  52fab6f333c3e69631f2904e3c42135c  gcc/testsuite/c-c++-common/ubsan/pr82072-2.c
  2e7a66d3c689abca90d04a5cc8fbc9b3  gcc/testsuite/c-c++-common/ubsan/pr82072.c
! c984d91c7853e9d690baeaad795dd74b  gcc/testsuite/c-c++-common/ubsan/pr85213.c
  e60a839ec3236c525ac88fee0958beba  gcc/testsuite/c-c++-common/ubsan/pr87837.c
  e1b150cb23fdeeb165a94d174c99d4b5  gcc/testsuite/c-c++-common/ubsan/pr88215.c
  cea81e64e159f87882055579bee45c82  gcc/testsuite/c-c++-common/ubsan/pr94641.c
--- 12445,12451 ----
  0fd3d9cb379639b94e1f114a3f4dffbe  gcc/testsuite/c-c++-common/ubsan/pr81705.c
  52fab6f333c3e69631f2904e3c42135c  gcc/testsuite/c-c++-common/ubsan/pr82072-2.c
  2e7a66d3c689abca90d04a5cc8fbc9b3  gcc/testsuite/c-c++-common/ubsan/pr82072.c
! 9ed4fa0d8e9e9437b4e9a3733f4ee87f  gcc/testsuite/c-c++-common/ubsan/pr85213.c
  e60a839ec3236c525ac88fee0958beba  gcc/testsuite/c-c++-common/ubsan/pr87837.c
  e1b150cb23fdeeb165a94d174c99d4b5  gcc/testsuite/c-c++-common/ubsan/pr88215.c
  cea81e64e159f87882055579bee45c82  gcc/testsuite/c-c++-common/ubsan/pr94641.c
*************** c77f02020cbcf85af6784093386ef648  gcc/te
*** 11160,11166 ****
  552993960fde37faa6d8b69da5b5bb33  gcc/testsuite/c-c++-common/zero-scratch-regs-8.c
  c58be55f0f9b42d63e15276d36dbd399  gcc/testsuite/c-c++-common/zero-scratch-regs-9.c
  5e947ff19698fccb8ffb7ac65277ba5b  gcc/testsuite/c-c++-common/zero-scratch-regs-attr-usages.c
! c4851ec972cdff448a2dcb82ec1d0ad8  gcc/testsuite/config/default.exp
  8024a8d05ac43431e4b1302cfb4f3a39  gcc/testsuite/g++.dg/20090107-1.C
  1c4ef3fc928b689d06e4e43bd7b1118c  gcc/testsuite/g++.dg/20090121-1.C
  34c8e7d537bafbaafc64457157d9941d  gcc/testsuite/g++.dg/DRs/dr1207-1.C
--- 12549,12555 ----
  552993960fde37faa6d8b69da5b5bb33  gcc/testsuite/c-c++-common/zero-scratch-regs-8.c
  c58be55f0f9b42d63e15276d36dbd399  gcc/testsuite/c-c++-common/zero-scratch-regs-9.c
  5e947ff19698fccb8ffb7ac65277ba5b  gcc/testsuite/c-c++-common/zero-scratch-regs-attr-usages.c
! 020cc14a7186e49d78901b92d2c4058b  gcc/testsuite/config/default.exp
  8024a8d05ac43431e4b1302cfb4f3a39  gcc/testsuite/g++.dg/20090107-1.C
  1c4ef3fc928b689d06e4e43bd7b1118c  gcc/testsuite/g++.dg/20090121-1.C
  34c8e7d537bafbaafc64457157d9941d  gcc/testsuite/g++.dg/DRs/dr1207-1.C
*************** b76a9cedbf2dc42cfc090cc116dd5b23  gcc/te
*** 11176,11183 ****
  c34c077c14a731c1e76b55760a45595e  gcc/testsuite/g++.dg/DRs/dr2137-2.C
  3f7c4c9040359275e31ad38de5ffd272  gcc/testsuite/g++.dg/DRs/dr2237.C
  33ccffb334dd7be92e0462b76cdef639  gcc/testsuite/g++.dg/DRs/dr2303.C
  7a4b27e45b2c85a34faf94f75f8945d1  gcc/testsuite/g++.dg/DRs/dr625.C
! f7d57eb62850eb6e0942fff976ade0db  gcc/testsuite/g++.dg/README
  c2db197c9d51ba75cb2475afeb61f7a3  gcc/testsuite/g++.dg/Walloca1.C
  320b5b68437c4d4f5168230d3d881f16  gcc/testsuite/g++.dg/Walloca2.C
  a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
--- 12565,12581 ----
  c34c077c14a731c1e76b55760a45595e  gcc/testsuite/g++.dg/DRs/dr2137-2.C
  3f7c4c9040359275e31ad38de5ffd272  gcc/testsuite/g++.dg/DRs/dr2237.C
  33ccffb334dd7be92e0462b76cdef639  gcc/testsuite/g++.dg/DRs/dr2303.C
+ 32457cadc360e959790012ac9c4c9724  gcc/testsuite/g++.dg/DRs/dr2392.C
+ f9fe886f09e681c9e323402057864ebb  gcc/testsuite/g++.dg/DRs/dr2475.C
+ 92dc83be6e3d98e3fcd54df5e8e408c1  gcc/testsuite/g++.dg/DRs/dr2478.C
+ b26a3cc670cf83b0f26114e5683de2f6  gcc/testsuite/g++.dg/DRs/dr2518.C
+ 0d6aefe51ff95b342b96bda7d98a079a  gcc/testsuite/g++.dg/DRs/dr2530.C
+ b0dfa04b7b53aefdac18e143994883bd  gcc/testsuite/g++.dg/DRs/dr2583.C
+ f2f3b031e1cbc5967efb4a8bda8a5660  gcc/testsuite/g++.dg/DRs/dr2604.C
+ fa6e8786f24bf1bbb1ee44a3e494556e  gcc/testsuite/g++.dg/DRs/dr2664.C
+ 662ef7dab4198df4626e7fdc15e43417  gcc/testsuite/g++.dg/DRs/dr2673.C
  7a4b27e45b2c85a34faf94f75f8945d1  gcc/testsuite/g++.dg/DRs/dr625.C
! a2264ae53a9c80944787346d14e5719a  gcc/testsuite/g++.dg/README
  c2db197c9d51ba75cb2475afeb61f7a3  gcc/testsuite/g++.dg/Walloca1.C
  320b5b68437c4d4f5168230d3d881f16  gcc/testsuite/g++.dg/Walloca2.C
  a41465f245515983bde6bb1167545c97  gcc/testsuite/g++.dg/Wattributes-2.C
*************** a41465f245515983bde6bb1167545c97  gcc/te
*** 11186,11197 ****
  3ff207592dbb65eecb677a29243ae42b  gcc/testsuite/g++.dg/Wattributes-5.C
  35b2001cf691ecf0a90121735a12e0ac  gcc/testsuite/g++.dg/Wattributes.C
  b5c04f6860b32d2a8e3ec7fde9e8f7d4  gcc/testsuite/g++.dg/Wcast-function-type.C
- f2143b28e578a3bad2b2e83b50e55a09  gcc/testsuite/g++.dg/Wclass-memaccess-2.C
- 8beea6608726e30b4c6e45d68c7fd049  gcc/testsuite/g++.dg/Wclass-memaccess-3.C
- a870375da7bcd4c5c455867aab227d04  gcc/testsuite/g++.dg/Wclass-memaccess-4.C
- 4ba67574e50be395fe4f4c58eaac86a7  gcc/testsuite/g++.dg/Wclass-memaccess-5.C
- b0d394df2af420d13fbc302b3902dc22  gcc/testsuite/g++.dg/Wclass-memaccess-6.C
- dec1adf9dfa9070a36845d4db36d64e6  gcc/testsuite/g++.dg/Wclass-memaccess.C
  5ae126d2bd8ea7c9e7da7c0f0bf249a8  gcc/testsuite/g++.dg/Wframe-address-in-Wall.C
  5ba575936ea99c0ac6a33f32f31ed443  gcc/testsuite/g++.dg/Wframe-address.C
  d3da67df470514d2b026a69fffe2d402  gcc/testsuite/g++.dg/Wmissing-attributes-1.C
--- 12584,12589 ----
*************** f564d0148a08a312e7e15ffb1de694d1  gcc/te
*** 11237,11247 ****
  c7c251f16058a4d4f1db8e0df28385ff  gcc/testsuite/g++.dg/abi/align1.C
  53fac1fa94eb44628f1a30c989aa1635  gcc/testsuite/g++.dg/abi/align2.C
  73fcf08640223665c619e0649f3fb6bc  gcc/testsuite/g++.dg/abi/align3.C
! 2e2b81268b12d9840736f5f280fdcd82  gcc/testsuite/g++.dg/abi/anon1.C
  d612831779ae34b6217159ef7510dee7  gcc/testsuite/g++.dg/abi/anon2.C
  4024cd0fe696880556f4db4786e81c53  gcc/testsuite/g++.dg/abi/anon3.C
! 33fdd2e467a8fd1571a8622c9dd56bcd  gcc/testsuite/g++.dg/abi/anon4.C
  b03e050cd2306239cb18c55acf037ffa  gcc/testsuite/g++.dg/abi/anon5.C
  770a1857da6a05380e26eabb7f0ecb92  gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
  cb4ad686f7564a8666256212398d911d  gcc/testsuite/g++.dg/abi/arm_cxa_vec2.C
  62499069488aeb166c32135bb590f23e  gcc/testsuite/g++.dg/abi/arm_rtti1.C
--- 12629,12640 ----
  c7c251f16058a4d4f1db8e0df28385ff  gcc/testsuite/g++.dg/abi/align1.C
  53fac1fa94eb44628f1a30c989aa1635  gcc/testsuite/g++.dg/abi/align2.C
  73fcf08640223665c619e0649f3fb6bc  gcc/testsuite/g++.dg/abi/align3.C
! b1cb014f09d1a26e4d04bf50f24f5dd6  gcc/testsuite/g++.dg/abi/anon1.C
  d612831779ae34b6217159ef7510dee7  gcc/testsuite/g++.dg/abi/anon2.C
  4024cd0fe696880556f4db4786e81c53  gcc/testsuite/g++.dg/abi/anon3.C
! 1038c11bdd8e6958bef23598a299a6ce  gcc/testsuite/g++.dg/abi/anon4.C
  b03e050cd2306239cb18c55acf037ffa  gcc/testsuite/g++.dg/abi/anon5.C
+ 1cfb4424f540345766fc5e44ca28d49e  gcc/testsuite/g++.dg/abi/anon6.C
  770a1857da6a05380e26eabb7f0ecb92  gcc/testsuite/g++.dg/abi/arm_cxa_vec1.C
  cb4ad686f7564a8666256212398d911d  gcc/testsuite/g++.dg/abi/arm_cxa_vec2.C
  62499069488aeb166c32135bb590f23e  gcc/testsuite/g++.dg/abi/arm_rtti1.C
*************** ae8183ac34cf252335be257cff5018dc  gcc/te
*** 11269,11309 ****
  9b5fe1eda32f4e6ddea3106ea8d9f1da  gcc/testsuite/g++.dg/abi/dtor1.C
  9d59f34907d1d9588084fc4da7772c02  gcc/testsuite/g++.dg/abi/empty10.C
  5ce11bfa25802ab713c346269c112592  gcc/testsuite/g++.dg/abi/empty11.C
! 2c1804bc92d6990927272d950fdb1add  gcc/testsuite/g++.dg/abi/empty12.C
  a67351c73c174a85fd80c1312ec10944  gcc/testsuite/g++.dg/abi/empty12.h
  1630e6d5985ef065e5f89a09e1ad7de2  gcc/testsuite/g++.dg/abi/empty12a.c
! 5d4853af822e61e7fac02a620dc160c7  gcc/testsuite/g++.dg/abi/empty13.C
  a67351c73c174a85fd80c1312ec10944  gcc/testsuite/g++.dg/abi/empty13.h
  783bc42becbccf0d7968fd3bab1ba325  gcc/testsuite/g++.dg/abi/empty13a.c
! d4a2225a22f70e69ca59136f9a1b16ae  gcc/testsuite/g++.dg/abi/empty14.C
  2d8a973f4693f0c2599c71d4bd75970d  gcc/testsuite/g++.dg/abi/empty14.h
  d8ba2e9e7eb3d27c8b4a48aa1856c030  gcc/testsuite/g++.dg/abi/empty14a.c
! dd92a71887e664f6c40c6d165e73bf35  gcc/testsuite/g++.dg/abi/empty15.C
  68930f11b25b2f12499752ed5cfe247c  gcc/testsuite/g++.dg/abi/empty15.h
  8ce25fbdb0f027f2b0b568ee1c7639b1  gcc/testsuite/g++.dg/abi/empty15a.c
! 810e2646ffc23a5fcc2d6298655f2d6b  gcc/testsuite/g++.dg/abi/empty16.C
  83c1bcb566ddcd409f40c31b6c8e0983  gcc/testsuite/g++.dg/abi/empty16.h
  bf743a5f82f85d43f667e969ff6ff1fe  gcc/testsuite/g++.dg/abi/empty16a.c
! 199eebd280bc5036f7a9fcf8633f1b77  gcc/testsuite/g++.dg/abi/empty17.C
  adb63dc33cd067de7bd5aff45cb6d595  gcc/testsuite/g++.dg/abi/empty17.h
  c32cd8bf7607a12f3a4538c5b0ecc54d  gcc/testsuite/g++.dg/abi/empty17a.c
! e9db1329dacc719297595cc5592aef2d  gcc/testsuite/g++.dg/abi/empty18.C
  d39b28b357ba923c05422cd19c59e3e5  gcc/testsuite/g++.dg/abi/empty18.h
  5c07acbda0be0c2cc075d7cb857d3a34  gcc/testsuite/g++.dg/abi/empty18a.c
! 00a4795f81c059db19e1c5692f26aae0  gcc/testsuite/g++.dg/abi/empty19.C
  d34f60c5cd3e144b5da52fca4f005100  gcc/testsuite/g++.dg/abi/empty19.h
  0bf6c5fe5ca61040974a834f61745570  gcc/testsuite/g++.dg/abi/empty19a.c
  891040fc5976cd0d45d02844947ac008  gcc/testsuite/g++.dg/abi/empty20.C
  385f78cbb6a5549dbc8ec10bf138f57e  gcc/testsuite/g++.dg/abi/empty21.C
! 800a451832c8df761156a64d8974ab89  gcc/testsuite/g++.dg/abi/empty22.C
  004f629374b4c567efc4e4e63d3ac560  gcc/testsuite/g++.dg/abi/empty22.h
  7850a59e39d82507fd087278a2cd79f9  gcc/testsuite/g++.dg/abi/empty22a.c
  bb2799fbd43a031988487c6f0dd4dbba  gcc/testsuite/g++.dg/abi/empty23.C
  f0b6278a62b6c89e97bcbf083d6f17f9  gcc/testsuite/g++.dg/abi/empty24.C
! 2b6a4cad450908edb19fbc18f75617a9  gcc/testsuite/g++.dg/abi/empty25.C
  55bee7b1c82d91987e3cd6b7bdb38113  gcc/testsuite/g++.dg/abi/empty25.h
  e7af2f0a6c31f4aee9fb356be3c25cd1  gcc/testsuite/g++.dg/abi/empty25a.c
! e7fd9645583c30de9dacdd50bf8e05cc  gcc/testsuite/g++.dg/abi/empty26.C
  004f629374b4c567efc4e4e63d3ac560  gcc/testsuite/g++.dg/abi/empty26.h
  f8fee29cdc75f054e4b9e0c1cc9dca5a  gcc/testsuite/g++.dg/abi/empty26a.c
  10a11e6d098463595790e189e7be2063  gcc/testsuite/g++.dg/abi/empty27.C
--- 12662,12702 ----
  9b5fe1eda32f4e6ddea3106ea8d9f1da  gcc/testsuite/g++.dg/abi/dtor1.C
  9d59f34907d1d9588084fc4da7772c02  gcc/testsuite/g++.dg/abi/empty10.C
  5ce11bfa25802ab713c346269c112592  gcc/testsuite/g++.dg/abi/empty11.C
! 77fe30b5d9ab4b9a4a6f2e2b7555fca9  gcc/testsuite/g++.dg/abi/empty12.C
  a67351c73c174a85fd80c1312ec10944  gcc/testsuite/g++.dg/abi/empty12.h
  1630e6d5985ef065e5f89a09e1ad7de2  gcc/testsuite/g++.dg/abi/empty12a.c
! 804d5e6543e1dc4451b63bcc63af1a7b  gcc/testsuite/g++.dg/abi/empty13.C
  a67351c73c174a85fd80c1312ec10944  gcc/testsuite/g++.dg/abi/empty13.h
  783bc42becbccf0d7968fd3bab1ba325  gcc/testsuite/g++.dg/abi/empty13a.c
! 5591d514dda9decd4fc83eb3249c1bbd  gcc/testsuite/g++.dg/abi/empty14.C
  2d8a973f4693f0c2599c71d4bd75970d  gcc/testsuite/g++.dg/abi/empty14.h
  d8ba2e9e7eb3d27c8b4a48aa1856c030  gcc/testsuite/g++.dg/abi/empty14a.c
! 9beeeadb7a1613afbe4eae77804eee5e  gcc/testsuite/g++.dg/abi/empty15.C
  68930f11b25b2f12499752ed5cfe247c  gcc/testsuite/g++.dg/abi/empty15.h
  8ce25fbdb0f027f2b0b568ee1c7639b1  gcc/testsuite/g++.dg/abi/empty15a.c
! 7e4da1fdd4995305fbaf9939a0edfcf5  gcc/testsuite/g++.dg/abi/empty16.C
  83c1bcb566ddcd409f40c31b6c8e0983  gcc/testsuite/g++.dg/abi/empty16.h
  bf743a5f82f85d43f667e969ff6ff1fe  gcc/testsuite/g++.dg/abi/empty16a.c
! 361e6e1d9d9c1aa6b48e80e6fdc28568  gcc/testsuite/g++.dg/abi/empty17.C
  adb63dc33cd067de7bd5aff45cb6d595  gcc/testsuite/g++.dg/abi/empty17.h
  c32cd8bf7607a12f3a4538c5b0ecc54d  gcc/testsuite/g++.dg/abi/empty17a.c
! 6d11eb0cc525cc3e0c44f0f8259b8903  gcc/testsuite/g++.dg/abi/empty18.C
  d39b28b357ba923c05422cd19c59e3e5  gcc/testsuite/g++.dg/abi/empty18.h
  5c07acbda0be0c2cc075d7cb857d3a34  gcc/testsuite/g++.dg/abi/empty18a.c
! 372e0238bbadf600f18eb0c18d0fee50  gcc/testsuite/g++.dg/abi/empty19.C
  d34f60c5cd3e144b5da52fca4f005100  gcc/testsuite/g++.dg/abi/empty19.h
  0bf6c5fe5ca61040974a834f61745570  gcc/testsuite/g++.dg/abi/empty19a.c
  891040fc5976cd0d45d02844947ac008  gcc/testsuite/g++.dg/abi/empty20.C
  385f78cbb6a5549dbc8ec10bf138f57e  gcc/testsuite/g++.dg/abi/empty21.C
! f32e05953333f0c8574bf2200f11c2ae  gcc/testsuite/g++.dg/abi/empty22.C
  004f629374b4c567efc4e4e63d3ac560  gcc/testsuite/g++.dg/abi/empty22.h
  7850a59e39d82507fd087278a2cd79f9  gcc/testsuite/g++.dg/abi/empty22a.c
  bb2799fbd43a031988487c6f0dd4dbba  gcc/testsuite/g++.dg/abi/empty23.C
  f0b6278a62b6c89e97bcbf083d6f17f9  gcc/testsuite/g++.dg/abi/empty24.C
! 5deeb2eae0c8ed0997465e04a73e3016  gcc/testsuite/g++.dg/abi/empty25.C
  55bee7b1c82d91987e3cd6b7bdb38113  gcc/testsuite/g++.dg/abi/empty25.h
  e7af2f0a6c31f4aee9fb356be3c25cd1  gcc/testsuite/g++.dg/abi/empty25a.c
! b7b106d91f31836124e36ac2e8711fe1  gcc/testsuite/g++.dg/abi/empty26.C
  004f629374b4c567efc4e4e63d3ac560  gcc/testsuite/g++.dg/abi/empty26.h
  f8fee29cdc75f054e4b9e0c1cc9dca5a  gcc/testsuite/g++.dg/abi/empty26a.c
  10a11e6d098463595790e189e7be2063  gcc/testsuite/g++.dg/abi/empty27.C
*************** afcddf1b30dc19c258215591ad57145a  gcc/te
*** 11329,11344 ****
  7b495c695618e4f19335c4fb222ac39e  gcc/testsuite/g++.dg/abi/key1.C
  bb31b4837b79e765fedbacaa8bb430d3  gcc/testsuite/g++.dg/abi/key2.C
  d06c8255efe2bb66e4bb6606d9fb8b0c  gcc/testsuite/g++.dg/abi/lambda-capture1.C
  debb971cc045e8ae567ecab94e5e9b5e  gcc/testsuite/g++.dg/abi/lambda-defarg1.C
  2c4486b0b97a7d8919b8fffad18a0478  gcc/testsuite/g++.dg/abi/lambda-static-1.C
! 75bbddd165a101e33a88857c65eb383d  gcc/testsuite/g++.dg/abi/lambda-vis.C
  44d0f298ab4a8fb8dcb8f4930bac5fd0  gcc/testsuite/g++.dg/abi/layout1.C
  629ced02f7a4d9d57a9b120d8c7bbbde  gcc/testsuite/g++.dg/abi/layout2.C
  6372326d116dead9b369290e7a9ccb46  gcc/testsuite/g++.dg/abi/layout3.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/abi/local1-a.cc
  4ab5160617737559c38e1ffb650b797e  gcc/testsuite/g++.dg/abi/local1.C
  34ecb36205a7c22314ddda92d332a23d  gcc/testsuite/g++.dg/abi/local2.C
! dc9c8e9f43551f66bdfdbf9bc00296bc  gcc/testsuite/g++.dg/abi/macro0.C
  06f0193b05c4ae743af4e38aec8d1122  gcc/testsuite/g++.dg/abi/macro2.C
  5a637c99e4aa66fa130b6c1d893fc41e  gcc/testsuite/g++.dg/abi/main.C
  ad6491d281aef40e7e1cf7d856f2aa05  gcc/testsuite/g++.dg/abi/mangle-arm-crypto.C
--- 12722,12749 ----
  7b495c695618e4f19335c4fb222ac39e  gcc/testsuite/g++.dg/abi/key1.C
  bb31b4837b79e765fedbacaa8bb430d3  gcc/testsuite/g++.dg/abi/key2.C
  d06c8255efe2bb66e4bb6606d9fb8b0c  gcc/testsuite/g++.dg/abi/lambda-capture1.C
+ 888c2a7cfab18eea18d04933612cee1c  gcc/testsuite/g++.dg/abi/lambda-ctx1-17.C
+ 03d70327fa3bda7dc99d0428b36950bf  gcc/testsuite/g++.dg/abi/lambda-ctx1-18.C
+ 3da545211dbae3d556aa73401c07bc85  gcc/testsuite/g++.dg/abi/lambda-ctx1-18vs17.C
+ 3a8a7291b05ddbed1c8540e3f073eca4  gcc/testsuite/g++.dg/abi/lambda-ctx1.h
  debb971cc045e8ae567ecab94e5e9b5e  gcc/testsuite/g++.dg/abi/lambda-defarg1.C
+ 0273b117000077d70457d264a343c270  gcc/testsuite/g++.dg/abi/lambda-sig1-17.C
+ 287450c79b6c95084ce1bbe8e888fd16  gcc/testsuite/g++.dg/abi/lambda-sig1-18.C
+ b96e9648b7937cb460a441a36c894890  gcc/testsuite/g++.dg/abi/lambda-sig1-18vs17.C
+ e86cddbb6b1a27843e00ecdb5c398fd7  gcc/testsuite/g++.dg/abi/lambda-sig1.h
  2c4486b0b97a7d8919b8fffad18a0478  gcc/testsuite/g++.dg/abi/lambda-static-1.C
! 4d88afadd15d114833ceccc807d1a29e  gcc/testsuite/g++.dg/abi/lambda-tpl1-17.C
! 28feffdb4277b54d910415d62af1c95a  gcc/testsuite/g++.dg/abi/lambda-tpl1-18.C
! b18deebf83cac491b57449b8ede81f29  gcc/testsuite/g++.dg/abi/lambda-tpl1-18vs17.C
! c2697c4b5d5c0ea6dc3d9941ffeb3ea5  gcc/testsuite/g++.dg/abi/lambda-tpl1.h
! ad49acfed68f5e9d85c906091a1bec23  gcc/testsuite/g++.dg/abi/lambda-vis.C
  44d0f298ab4a8fb8dcb8f4930bac5fd0  gcc/testsuite/g++.dg/abi/layout1.C
  629ced02f7a4d9d57a9b120d8c7bbbde  gcc/testsuite/g++.dg/abi/layout2.C
  6372326d116dead9b369290e7a9ccb46  gcc/testsuite/g++.dg/abi/layout3.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/abi/local1-a.cc
  4ab5160617737559c38e1ffb650b797e  gcc/testsuite/g++.dg/abi/local1.C
  34ecb36205a7c22314ddda92d332a23d  gcc/testsuite/g++.dg/abi/local2.C
! 16ade9865c8b97df4e08369fb71d89ef  gcc/testsuite/g++.dg/abi/macro0.C
  06f0193b05c4ae743af4e38aec8d1122  gcc/testsuite/g++.dg/abi/macro2.C
  5a637c99e4aa66fa130b6c1d893fc41e  gcc/testsuite/g++.dg/abi/main.C
  ad6491d281aef40e7e1cf7d856f2aa05  gcc/testsuite/g++.dg/abi/mangle-arm-crypto.C
*************** dc946b2841ac32fc9fd34522264439b5  gcc/te
*** 11428,11433 ****
--- 12833,12839 ----
  9299f9aa3143d1b7ad21248a7b6baa50  gcc/testsuite/g++.dg/abi/no_unique_address4.C
  2e75f55031268b8e445a244515ca63f0  gcc/testsuite/g++.dg/abi/no_unique_address5.C
  d974d143c86cea668485a435c71e0e98  gcc/testsuite/g++.dg/abi/no_unique_address6.C
+ 0dea7bd02ebf8d5259503a9339ae7e41  gcc/testsuite/g++.dg/abi/no_unique_address7.C
  6d86ff25fe0e7bc030ff238bd833862a  gcc/testsuite/g++.dg/abi/noreturn1.C
  c57345fa3b5ca1a7540c77ee0ce25605  gcc/testsuite/g++.dg/abi/noreturn2.C
  6cfa463b31864926599a103492701f5e  gcc/testsuite/g++.dg/abi/nsdmi-aggr1.C
*************** a612359f7851a82e1755e8a1d7d750c8  gcc/te
*** 11474,11480 ****
  3b08956316b86515387a9ec36363d591  gcc/testsuite/g++.dg/abi/pr98531-3.C
  fcd31b037e301fd0bc75088f33016314  gcc/testsuite/g++.dg/abi/pr98531-4.C
  4a1543932abd77ea1cfba28eecdeeef4  gcc/testsuite/g++.dg/abi/pragma-pack1.C
! 52881b96c9e71b8371f854008be9823f  gcc/testsuite/g++.dg/abi/pure-virtual1.C
  2b576a18b3eaae586de7d82ddcfeb8f0  gcc/testsuite/g++.dg/abi/ref-temp1.C
  758c2fd81af2f42665b56b5d21b15e9f  gcc/testsuite/g++.dg/abi/regparm1.C
  d90943e976dded1f4182aeb500d1f2c7  gcc/testsuite/g++.dg/abi/rtti1.C
--- 12880,12886 ----
  3b08956316b86515387a9ec36363d591  gcc/testsuite/g++.dg/abi/pr98531-3.C
  fcd31b037e301fd0bc75088f33016314  gcc/testsuite/g++.dg/abi/pr98531-4.C
  4a1543932abd77ea1cfba28eecdeeef4  gcc/testsuite/g++.dg/abi/pragma-pack1.C
! 1fe05d7ab8ab4e934af55d25129c75ce  gcc/testsuite/g++.dg/abi/pure-virtual1.C
  2b576a18b3eaae586de7d82ddcfeb8f0  gcc/testsuite/g++.dg/abi/ref-temp1.C
  758c2fd81af2f42665b56b5d21b15e9f  gcc/testsuite/g++.dg/abi/regparm1.C
  d90943e976dded1f4182aeb500d1f2c7  gcc/testsuite/g++.dg/abi/rtti1.C
*************** a3ef49aa5fa035e0eaa1fb23c589fe61  gcc/te
*** 11506,11524 ****
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
  cb66889e261971e64a6568617bffaeaa  gcc/testsuite/g++.dg/addr_builtin-1.C
! 3873c0eea694648531ae4b8683347ec2  gcc/testsuite/g++.dg/analyzer/analyzer.exp
  0918dccee8951925f7bc4640874a6cd3  gcc/testsuite/g++.dg/analyzer/cstdlib-2.C
  b1051c81ee9929eae4057f7d1ce5ecd2  gcc/testsuite/g++.dg/analyzer/cstdlib.C
  7951a855cc080064bcfdf98631e39a2e  gcc/testsuite/g++.dg/analyzer/ctor-dtor-1.C
  d1eaf073a251f60143e80284bc5a504c  gcc/testsuite/g++.dg/analyzer/dyncast-1.C
  e618363917558f650a6b91cce53eb8d2  gcc/testsuite/g++.dg/analyzer/malloc.C
  7292fd874dc6a2a17f2f505c44add678  gcc/testsuite/g++.dg/analyzer/new-1.C
  bcda06f94e400d0e9992cb49d4db7fdb  gcc/testsuite/g++.dg/analyzer/new-vs-malloc.C
  39dffeb2dfa6a606367678b8e0c26ba4  gcc/testsuite/g++.dg/analyzer/placement-new.C
! 6ab96cda82abd2c6b9e8503cad810e6d  gcc/testsuite/g++.dg/analyzer/pr100244.C
  d4bc63615a492ebed26cfe6dcaccf3f8  gcc/testsuite/g++.dg/analyzer/pr101522.C
  f196621f1d8a0f8a5cd5899222a61f1b  gcc/testsuite/g++.dg/analyzer/pr102662.C
! db9f2a586decb860632833c22f0bc4d6  gcc/testsuite/g++.dg/analyzer/pr93212.C
  6730f749b069d8ed2ba525a0ff83ad2c  gcc/testsuite/g++.dg/analyzer/pr93288.C
  c12e9b1c9d4173ff464e74ea78ab647e  gcc/testsuite/g++.dg/analyzer/pr93777.C
  a2fd899038ad8292f72a6822b197251e  gcc/testsuite/g++.dg/analyzer/pr93899.C
--- 12912,12937 ----
  6881f6a907aed22e3604db9a81d71753  gcc/testsuite/g++.dg/abi/vthunk3.C
  59cdef1c2f5ac26231205b723cb9ea52  gcc/testsuite/g++.dg/abi/vtt1.C
  cb66889e261971e64a6568617bffaeaa  gcc/testsuite/g++.dg/addr_builtin-1.C
! 6647d06a99286b30547c2340a766f7fe  gcc/testsuite/g++.dg/analyzer/analyzer.exp
  0918dccee8951925f7bc4640874a6cd3  gcc/testsuite/g++.dg/analyzer/cstdlib-2.C
  b1051c81ee9929eae4057f7d1ce5ecd2  gcc/testsuite/g++.dg/analyzer/cstdlib.C
  7951a855cc080064bcfdf98631e39a2e  gcc/testsuite/g++.dg/analyzer/ctor-dtor-1.C
  d1eaf073a251f60143e80284bc5a504c  gcc/testsuite/g++.dg/analyzer/dyncast-1.C
+ c930c1631af9c06ed7dbcd2e167abaff  gcc/testsuite/g++.dg/analyzer/fd-bind-pr107783.C
+ 5ada15fa323a1043ed8e9454047ae98f  gcc/testsuite/g++.dg/analyzer/infinite-recursion-1.C
+ 3ab5a03785e0beb328826ec97a100dfe  gcc/testsuite/g++.dg/analyzer/infinite-recursion-2.C
+ 6c9235c35035b59cc0a83132c639d00f  gcc/testsuite/g++.dg/analyzer/infinite-recursion-3.C
  e618363917558f650a6b91cce53eb8d2  gcc/testsuite/g++.dg/analyzer/malloc.C
+ 172304701d90affbd3b1d50e2367e8f2  gcc/testsuite/g++.dg/analyzer/named-functions.C
  7292fd874dc6a2a17f2f505c44add678  gcc/testsuite/g++.dg/analyzer/new-1.C
  bcda06f94e400d0e9992cb49d4db7fdb  gcc/testsuite/g++.dg/analyzer/new-vs-malloc.C
+ 55d5c569cc7f4543ab686b03b2b4015e  gcc/testsuite/g++.dg/analyzer/out-of-bounds-placement-new.C
  39dffeb2dfa6a606367678b8e0c26ba4  gcc/testsuite/g++.dg/analyzer/placement-new.C
! 9740438440ab651939b2a10e2a3fb9f1  gcc/testsuite/g++.dg/analyzer/pr100244.C
  d4bc63615a492ebed26cfe6dcaccf3f8  gcc/testsuite/g++.dg/analyzer/pr101522.C
  f196621f1d8a0f8a5cd5899222a61f1b  gcc/testsuite/g++.dg/analyzer/pr102662.C
! 73c41bca14462db90e2256a8edfe630e  gcc/testsuite/g++.dg/analyzer/pr108003.C
! 337663ec28ba5178e5e5832bde31b266  gcc/testsuite/g++.dg/analyzer/pr93212.C
  6730f749b069d8ed2ba525a0ff83ad2c  gcc/testsuite/g++.dg/analyzer/pr93288.C
  c12e9b1c9d4173ff464e74ea78ab647e  gcc/testsuite/g++.dg/analyzer/pr93777.C
  a2fd899038ad8292f72a6822b197251e  gcc/testsuite/g++.dg/analyzer/pr93899.C
*************** b355f66bf32fab6d4e4348cbfdd707d2  gcc/te
*** 11540,11553 ****
  13526f89c6948b95aef336c0a8d9d75c  gcc/testsuite/g++.dg/analyzer/vfunc-3.C
  9b9a001e3dcd409dc5312ef55387e581  gcc/testsuite/g++.dg/analyzer/vfunc-4.C
  f211479ac4d0a91cf570369c53463c2d  gcc/testsuite/g++.dg/analyzer/vfunc-5.C
! 8790fab05b558c71c1f6762436f70c5c  gcc/testsuite/g++.dg/asan/asan.exp
  aaab0b483d6b43b9fb8facfcf01ac3b3  gcc/testsuite/g++.dg/asan/asan_globals_test-wrapper.cc
  58f1893fa192cc0429f68ba9628696b9  gcc/testsuite/g++.dg/asan/asan_globals_test.cc
! 573f81866bae96b4c422317d9f9f630c  gcc/testsuite/g++.dg/asan/asan_mem_test.cc
! ae18505cf8bcf60c7595916e5c13ca68  gcc/testsuite/g++.dg/asan/asan_oob_test.cc
! a21e7d58f33bd86c0ccf7a0bac1f06bf  gcc/testsuite/g++.dg/asan/asan_str_test.cc
  631e8e57cd8e7aa2135bbcd88e39e92f  gcc/testsuite/g++.dg/asan/asan_test.C
! 2c352907f3b51c80dddf49f6527d00d3  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
  a455db6e8dc9b02d6f2c59488f513896  gcc/testsuite/g++.dg/asan/asan_test_utils.h
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
--- 12953,12966 ----
  13526f89c6948b95aef336c0a8d9d75c  gcc/testsuite/g++.dg/analyzer/vfunc-3.C
  9b9a001e3dcd409dc5312ef55387e581  gcc/testsuite/g++.dg/analyzer/vfunc-4.C
  f211479ac4d0a91cf570369c53463c2d  gcc/testsuite/g++.dg/analyzer/vfunc-5.C
! b008fb144cd6e372a583571143eb01fc  gcc/testsuite/g++.dg/asan/asan.exp
  aaab0b483d6b43b9fb8facfcf01ac3b3  gcc/testsuite/g++.dg/asan/asan_globals_test-wrapper.cc
  58f1893fa192cc0429f68ba9628696b9  gcc/testsuite/g++.dg/asan/asan_globals_test.cc
! bb93dc37aa98920c58cec65159b0c54a  gcc/testsuite/g++.dg/asan/asan_mem_test.cc
! 122f5443f67e3370b6ab442b4d4f9fae  gcc/testsuite/g++.dg/asan/asan_oob_test.cc
! b62cd97dedd00a9fbbd509c4e3d6264b  gcc/testsuite/g++.dg/asan/asan_str_test.cc
  631e8e57cd8e7aa2135bbcd88e39e92f  gcc/testsuite/g++.dg/asan/asan_test.C
! 2ce06234b99c8ccc82520f6974a4a76b  gcc/testsuite/g++.dg/asan/asan_test.cc
  7b5f694f7ad9cbae4aab558727eaceaf  gcc/testsuite/g++.dg/asan/asan_test_config.h
  a455db6e8dc9b02d6f2c59488f513896  gcc/testsuite/g++.dg/asan/asan_test_utils.h
  5e2fbdaa2b9b39d6bf1f290e581722f4  gcc/testsuite/g++.dg/asan/deep-stack-uaf-1.C
*************** c7018c25d3568fc8c57341e5f27c2399  gcc/te
*** 11563,11569 ****
  23a150302e388ceffe71037fe85813ef  gcc/testsuite/g++.dg/asan/interception-failure-test-1.C
  fb777e6427f4a224508112af8340c3d4  gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
  5528ec64328b52adcb592f8a39c2ea36  gcc/testsuite/g++.dg/asan/interception-test-1.C
! 0bd40d9ed57b38d1bedec8f7fbb98d1c  gcc/testsuite/g++.dg/asan/large-func-test-1.C
  ca4a8065918a3119cb5474bacec801f2  gcc/testsuite/g++.dg/asan/pr102656.C
  b03be3a03970717959df65ccdcbebe88  gcc/testsuite/g++.dg/asan/pr104449.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
--- 12976,12982 ----
  23a150302e388ceffe71037fe85813ef  gcc/testsuite/g++.dg/asan/interception-failure-test-1.C
  fb777e6427f4a224508112af8340c3d4  gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C
  5528ec64328b52adcb592f8a39c2ea36  gcc/testsuite/g++.dg/asan/interception-test-1.C
! 8b04df9268a6b4bf6e32b9647e354fe9  gcc/testsuite/g++.dg/asan/large-func-test-1.C
  ca4a8065918a3119cb5474bacec801f2  gcc/testsuite/g++.dg/asan/pr102656.C
  b03be3a03970717959df65ccdcbebe88  gcc/testsuite/g++.dg/asan/pr104449.C
  e472f2ce37f2b55b1358ec08717d9f08  gcc/testsuite/g++.dg/asan/pr55617.C
*************** e0fa4a9e3d3debbc97f800a78bdcbfdb  gcc/te
*** 11609,11619 ****
  d0f4a6bb82734b4bff2e3839790242cb  gcc/testsuite/g++.dg/auto-init-uninit-pred-2_a.C
  f7f7c06ac90f234094ae984c3c676df3  gcc/testsuite/g++.dg/auto-init-uninit-pred-3_a.C
  6076d42dd1204b922d5fb0babad714f5  gcc/testsuite/g++.dg/auto-init-uninit-pred-4.C
! 93b4cac6dee814b112e8d59b40dc6ad9  gcc/testsuite/g++.dg/bprob/bprob.exp
  6683eda46cb30a95dcb3ae310aa86684  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  eb7c2ac5d3e686273e3fe6fe17a3abe4  gcc/testsuite/g++.dg/cdce3.C
! 43fea12c8e1efaaa4f6ab8056b357122  gcc/testsuite/g++.dg/cet-notrack-1.C
  5d6eb1269c8738b70f3d15b9a148001f  gcc/testsuite/g++.dg/charset/asm1.c
  f9a431484c75dceb2b5776a2ec603670  gcc/testsuite/g++.dg/charset/asm2.c
  bd34927c7e8ef0637a91744aa30c8e22  gcc/testsuite/g++.dg/charset/asm3.c
--- 13022,13032 ----
  d0f4a6bb82734b4bff2e3839790242cb  gcc/testsuite/g++.dg/auto-init-uninit-pred-2_a.C
  f7f7c06ac90f234094ae984c3c676df3  gcc/testsuite/g++.dg/auto-init-uninit-pred-3_a.C
  6076d42dd1204b922d5fb0babad714f5  gcc/testsuite/g++.dg/auto-init-uninit-pred-4.C
! 72096e9d9cea04a488d2fdab3dc0a469  gcc/testsuite/g++.dg/bprob/bprob.exp
  6683eda46cb30a95dcb3ae310aa86684  gcc/testsuite/g++.dg/bprob/g++-bprob-1.C
  91292dc36de1287d9de59661dd0c8c78  gcc/testsuite/g++.dg/bprob/g++-bprob-2.C
  eb7c2ac5d3e686273e3fe6fe17a3abe4  gcc/testsuite/g++.dg/cdce3.C
! c5de6d694fe6e93fbab2326e46d61f7e  gcc/testsuite/g++.dg/cet-notrack-1.C
  5d6eb1269c8738b70f3d15b9a148001f  gcc/testsuite/g++.dg/charset/asm1.c
  f9a431484c75dceb2b5776a2ec603670  gcc/testsuite/g++.dg/charset/asm2.c
  bd34927c7e8ef0637a91744aa30c8e22  gcc/testsuite/g++.dg/charset/asm3.c
*************** bd34927c7e8ef0637a91744aa30c8e22  gcc/te
*** 11621,11627 ****
  13aa9df754ce327f35901d755310d167  gcc/testsuite/g++.dg/charset/asm5.c
  188e64ef71cd1832cf590f89eb899d5b  gcc/testsuite/g++.dg/charset/attribute1.c
  5ec905da0c5303d292f6f23f2befdd9b  gcc/testsuite/g++.dg/charset/attribute2.c
! c24b8960bb0fc98c84ac0aafa0ad6641  gcc/testsuite/g++.dg/charset/charset.exp
  c3f1b1efe5249f47d609a5022d321c0a  gcc/testsuite/g++.dg/charset/extern1.cc
  e00c15044b80ea8ae41ddca791f728b5  gcc/testsuite/g++.dg/charset/extern2.cc
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/g++.dg/charset/extern3.cc
--- 13034,13040 ----
  13aa9df754ce327f35901d755310d167  gcc/testsuite/g++.dg/charset/asm5.c
  188e64ef71cd1832cf590f89eb899d5b  gcc/testsuite/g++.dg/charset/attribute1.c
  5ec905da0c5303d292f6f23f2befdd9b  gcc/testsuite/g++.dg/charset/attribute2.c
! d3f3fa8b91626950dc5251df25d4f0c2  gcc/testsuite/g++.dg/charset/charset.exp
  c3f1b1efe5249f47d609a5022d321c0a  gcc/testsuite/g++.dg/charset/extern1.cc
  e00c15044b80ea8ae41ddca791f728b5  gcc/testsuite/g++.dg/charset/extern2.cc
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/g++.dg/charset/extern3.cc
*************** f21dc1eb54ea34814c912bb958cc243b  gcc/te
*** 11660,11666 ****
  3e6b5a438641d0fa418b9b6b59dc9ad5  gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C
  218fc83d35fc2202ce2c23a8d88a2a0e  gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C
  ad654d45c988963d6d91e514325cd68c  gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C
! b7ee45f1311fecc555b99540b481aa05  gcc/testsuite/g++.dg/compat/break/README
  a1f42f9828f95c9f3dd670a142b67209  gcc/testsuite/g++.dg/compat/break/bitfield5.h
  a4f5bc9b9eeba848df2b3660451312e5  gcc/testsuite/g++.dg/compat/break/bitfield5_main.C
  34a963a4f73f5fc81a2a3c61cb1410b4  gcc/testsuite/g++.dg/compat/break/bitfield5_x.C
--- 13073,13079 ----
  3e6b5a438641d0fa418b9b6b59dc9ad5  gcc/testsuite/g++.dg/compat/abi/vbase8-4_main.C
  218fc83d35fc2202ce2c23a8d88a2a0e  gcc/testsuite/g++.dg/compat/abi/vbase8-4_x.C
  ad654d45c988963d6d91e514325cd68c  gcc/testsuite/g++.dg/compat/abi/vbase8-4_y.C
! 64ef03d5bf5ea316c23686def651885a  gcc/testsuite/g++.dg/compat/break/README
  a1f42f9828f95c9f3dd670a142b67209  gcc/testsuite/g++.dg/compat/break/bitfield5.h
  a4f5bc9b9eeba848df2b3660451312e5  gcc/testsuite/g++.dg/compat/break/bitfield5_main.C
  34a963a4f73f5fc81a2a3c61cb1410b4  gcc/testsuite/g++.dg/compat/break/bitfield5_x.C
*************** d9e96ae25c2319373bcfd08d3028762f  gcc/te
*** 11681,11687 ****
  c066ba2e23a50eda1497704cad37719c  gcc/testsuite/g++.dg/compat/break/vbase11_main.C
  cc9fd160c8ac0d554f08ed78757c1ad7  gcc/testsuite/g++.dg/compat/break/vbase11_x.C
  3af15235a86640de95ef01c264b9a669  gcc/testsuite/g++.dg/compat/break/vbase11_y.C
! ca29cbd17c89a0b652bdf05ec16e98c9  gcc/testsuite/g++.dg/compat/compat.exp
  d84d0fab6bdaa40e3302c2dc1bd89d10  gcc/testsuite/g++.dg/compat/decimal/compat-common.h
  5606bac1873edfc020404d944e030ebb  gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h
  3d52f6f9878705d4ff92b2d02c56e07f  gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
--- 13094,13100 ----
  c066ba2e23a50eda1497704cad37719c  gcc/testsuite/g++.dg/compat/break/vbase11_main.C
  cc9fd160c8ac0d554f08ed78757c1ad7  gcc/testsuite/g++.dg/compat/break/vbase11_x.C
  3af15235a86640de95ef01c264b9a669  gcc/testsuite/g++.dg/compat/break/vbase11_y.C
! a9eedc5784617d16dcac0a6f3bcee8e7  gcc/testsuite/g++.dg/compat/compat.exp
  d84d0fab6bdaa40e3302c2dc1bd89d10  gcc/testsuite/g++.dg/compat/decimal/compat-common.h
  5606bac1873edfc020404d944e030ebb  gcc/testsuite/g++.dg/compat/decimal/decimal-dummy.h
  3d52f6f9878705d4ff92b2d02c56e07f  gcc/testsuite/g++.dg/compat/decimal/pass-1_main.C
*************** e6954ac1ae67eacbb067ca0a7269df99  gcc/te
*** 11783,11789 ****
  2b3d95c509a4be70d740edc005431765  gcc/testsuite/g++.dg/compat/pr102024_test.h
  5a1c23b6f9ed32ad835953cc5de843ad  gcc/testsuite/g++.dg/compat/pr102024_x.C
  9145407f3d1330de95b18aa4b816a2c5  gcc/testsuite/g++.dg/compat/pr102024_y.C
! 9eee478f202ae4c14ffa4fafdb789b76  gcc/testsuite/g++.dg/compat/struct-layout-1.exp
  b3150d6e06b56824040f5b2dadcf18ce  gcc/testsuite/g++.dg/compat/struct-layout-1.h
  78cfce9cf8a86fdda9aa267ac227bd42  gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
  e615a3a6c348fc2427a919e6edad325b  gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h
--- 13196,13202 ----
  2b3d95c509a4be70d740edc005431765  gcc/testsuite/g++.dg/compat/pr102024_test.h
  5a1c23b6f9ed32ad835953cc5de843ad  gcc/testsuite/g++.dg/compat/pr102024_x.C
  9145407f3d1330de95b18aa4b816a2c5  gcc/testsuite/g++.dg/compat/pr102024_y.C
! 1d1fbf55c5fc68fbdd3073142392ba5c  gcc/testsuite/g++.dg/compat/struct-layout-1.exp
  b3150d6e06b56824040f5b2dadcf18ce  gcc/testsuite/g++.dg/compat/struct-layout-1.h
  78cfce9cf8a86fdda9aa267ac227bd42  gcc/testsuite/g++.dg/compat/struct-layout-1_generate.c
  e615a3a6c348fc2427a919e6edad325b  gcc/testsuite/g++.dg/compat/struct-layout-1_x1.h
*************** bbe257fc7d17e04ac4c36e490e7b696c  gcc/te
*** 11801,11819 ****
  83ca9e0fd92b3a6de47c569615d1b14a  gcc/testsuite/g++.dg/concepts/abbrev8.C
  f77068318f53312d2455ce0a714f40df  gcc/testsuite/g++.dg/concepts/abbrev9.C
  a54467f50f9862e2fbf96195651a862b  gcc/testsuite/g++.dg/concepts/attrib1.C
! e00adf6112b032ea6e685ae5c723e579  gcc/testsuite/g++.dg/concepts/auto1.C
! 1a06f0a3072bebfa6fe8dd131f1d2335  gcc/testsuite/g++.dg/concepts/auto3.C
! f8414a0be8fa7cfe37e9d7c536f079c2  gcc/testsuite/g++.dg/concepts/auto4.C
! e79606567a524a791b869945de1e944d  gcc/testsuite/g++.dg/concepts/class-deduction1.C
! aa0c99b661698145a9cd82a85923f427  gcc/testsuite/g++.dg/concepts/class5.C
! 33c90e558993f8d0e45fa669206fa78c  gcc/testsuite/g++.dg/concepts/class6.C
! 7fa91a4d3cb5f95e6e26a4c7abb0e0e4  gcc/testsuite/g++.dg/concepts/debug1.C
! 6998d7862b5427a03025dd3e7dffc011  gcc/testsuite/g++.dg/concepts/decl-diagnose.C
! 8346c9032841f194c406529cc8ed4eb8  gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
! c43c8c0443db1da23ae2180c5b4f688d  gcc/testsuite/g++.dg/concepts/diagnostic1.C
  fc3e1038d2ddd359b5ea90ab469aed59  gcc/testsuite/g++.dg/concepts/diagnostic10.C
  4844c47d58b026222c294f4a7e10680c  gcc/testsuite/g++.dg/concepts/diagnostic11.C
! 1a0deb127020a3e80d3a637598d66e17  gcc/testsuite/g++.dg/concepts/diagnostic12.C
  9a1ebfe628af4997f538ddc008cd6440  gcc/testsuite/g++.dg/concepts/diagnostic13.C
  21ef60ea1c10078f9a73502249868868  gcc/testsuite/g++.dg/concepts/diagnostic14.C
  513ed21afc6e2fbd849f7323535b309c  gcc/testsuite/g++.dg/concepts/diagnostic15.C
--- 13214,13234 ----
  83ca9e0fd92b3a6de47c569615d1b14a  gcc/testsuite/g++.dg/concepts/abbrev8.C
  f77068318f53312d2455ce0a714f40df  gcc/testsuite/g++.dg/concepts/abbrev9.C
  a54467f50f9862e2fbf96195651a862b  gcc/testsuite/g++.dg/concepts/attrib1.C
! b06fa51c8cf7cd0947dc48ddb8f04762  gcc/testsuite/g++.dg/concepts/auto1.C
! df6a0720deead1507c5a2beb3f89af53  gcc/testsuite/g++.dg/concepts/auto3.C
! 6cf0a17e07d37965e7023adb5e05206b  gcc/testsuite/g++.dg/concepts/auto4.C
! a0aa19106822133d891f4b19cc47c64e  gcc/testsuite/g++.dg/concepts/auto5.C
! 6f61762cc3906c8114555ca94d52f557  gcc/testsuite/g++.dg/concepts/auto6.C
! 49173b85bb8b75655228f01f64c004ca  gcc/testsuite/g++.dg/concepts/class-deduction1.C
! 5dc917226c72dd84754c3174179aed16  gcc/testsuite/g++.dg/concepts/class5.C
! bd4f86c74afe71fd279bbd2ba2a9a19e  gcc/testsuite/g++.dg/concepts/class6.C
! 87544776ff514211a2d70754b08fc8d9  gcc/testsuite/g++.dg/concepts/debug1.C
! 70c05053ef680b108fa19bc7a1074d20  gcc/testsuite/g++.dg/concepts/decl-diagnose.C
! fb0e2509a1d850376873bcbb2ae7d935  gcc/testsuite/g++.dg/concepts/deduction-constraint1.C
! 57f94573d91a77ea0e676d5b68489a7a  gcc/testsuite/g++.dg/concepts/diagnostic1.C
  fc3e1038d2ddd359b5ea90ab469aed59  gcc/testsuite/g++.dg/concepts/diagnostic10.C
  4844c47d58b026222c294f4a7e10680c  gcc/testsuite/g++.dg/concepts/diagnostic11.C
! 9bb84db5ae6efcfe019ccf353b995661  gcc/testsuite/g++.dg/concepts/diagnostic12.C
  9a1ebfe628af4997f538ddc008cd6440  gcc/testsuite/g++.dg/concepts/diagnostic13.C
  21ef60ea1c10078f9a73502249868868  gcc/testsuite/g++.dg/concepts/diagnostic14.C
  513ed21afc6e2fbd849f7323535b309c  gcc/testsuite/g++.dg/concepts/diagnostic15.C
*************** b383f5a2190e1234282797b64ffc0dc8  gcc/te
*** 11828,11897 ****
  27e3f997ced26bbdf184fd5906c3a8dc  gcc/testsuite/g++.dg/concepts/diagnostic7.C
  c9d7cb8a10b8d288002e523cc80a1f58  gcc/testsuite/g++.dg/concepts/diagnostic8.C
  d44301076a2b5c1b6d67f8097ebccdc3  gcc/testsuite/g++.dg/concepts/diagnostic9.C
! 2b0fa9bdf385b722e568cee62a91fa4b  gcc/testsuite/g++.dg/concepts/dr1430.C
! 60125e183bd40bfbd86f4bb4ff301e9d  gcc/testsuite/g++.dg/concepts/equiv.C
! bad35a69b0266b020bc955ced2b14050  gcc/testsuite/g++.dg/concepts/equiv2.C
  777ac81f55c638a07da402594472e54f  gcc/testsuite/g++.dg/concepts/explicit-spec1.C
! 5035d2866ee1c240c402c7e67d6968f3  gcc/testsuite/g++.dg/concepts/expression.C
! 9fe31807d4c7abdadc0b3bfa1b68cea5  gcc/testsuite/g++.dg/concepts/expression2.C
! 2da19a671e12ee60540bcf641442c919  gcc/testsuite/g++.dg/concepts/expression3.C
! f14e1908080965f7c87e82ab9ed5ee5b  gcc/testsuite/g++.dg/concepts/fn-concept1.C
! a015e2a869410024084e8975978f298a  gcc/testsuite/g++.dg/concepts/fn-concept2.C
! 0105b3e0e0b6df8712a75073d47e3acf  gcc/testsuite/g++.dg/concepts/fn-concept3.C
  43b4b86e8179275233dfe2e409cf5544  gcc/testsuite/g++.dg/concepts/fn-generic-member-ool.C
! 413b32aed2ff10c7bf985e924d51c3a8  gcc/testsuite/g++.dg/concepts/fn1.C
! 06f84dbe396f8d36b8f5add6983d2e62  gcc/testsuite/g++.dg/concepts/fn10.C
! 4dd03402749878866e4f5d94da8e75e3  gcc/testsuite/g++.dg/concepts/fn2.C
! cc7500226000e3e87e2736cc200d4c7c  gcc/testsuite/g++.dg/concepts/fn3.C
! cc1601b7716f484ee7c5f82116543bae  gcc/testsuite/g++.dg/concepts/fn4.C
! be6a162428e71f50ff28282a1dca5de1  gcc/testsuite/g++.dg/concepts/fn5.C
! 55899286db3b427fd2fd1770035fbe28  gcc/testsuite/g++.dg/concepts/fn6.C
  98535529d421332d371f71209699354e  gcc/testsuite/g++.dg/concepts/fn7.C
! a26b2070428e3acfa5b0c970a4be2807  gcc/testsuite/g++.dg/concepts/fn8.C
! d70cd7adb2fd39ee42766c2e45816332  gcc/testsuite/g++.dg/concepts/fn9.C
! 04a5342f33ed730d5756b7b86841f9cf  gcc/testsuite/g++.dg/concepts/generic-fn-err.C
! 6f42d0befeb130c11b3f0eb88b4e86c5  gcc/testsuite/g++.dg/concepts/generic-fn.C
! 06b2b538f45f3915612853362a8125de  gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
! d7e8ef9ae99e89772d4ae45fa32af280  gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
! e86190bd4d0da57e40c156ec6feeefb2  gcc/testsuite/g++.dg/concepts/intro1.C
! eb546a54615c51b1aef2b8c69f85327f  gcc/testsuite/g++.dg/concepts/intro2.C
! 3ba7071086ab3a57022d8dfd015a4557  gcc/testsuite/g++.dg/concepts/intro3.C
! c178953ecb918aa200a7f0f03bf09981  gcc/testsuite/g++.dg/concepts/intro4.C
! 3cc2b02e26adc4e9633a91f5f4d23c70  gcc/testsuite/g++.dg/concepts/intro5.C
! 89851cc1d5282540ddd5b7c363c09182  gcc/testsuite/g++.dg/concepts/intro6.C
! aa49aa9c949ab002547d4de60b75a2a2  gcc/testsuite/g++.dg/concepts/intro7.C
  29af9c990e1fe56208ba66e5fbe5e9f1  gcc/testsuite/g++.dg/concepts/local-extern.C
! b87f17cf2a26b3aae11c5af4b7a7a31d  gcc/testsuite/g++.dg/concepts/locations1.C
  8167dac3599949519b5c414584b01961  gcc/testsuite/g++.dg/concepts/no-bool1.C
  a0d717a73a9e41d16aea89209cfa3945  gcc/testsuite/g++.dg/concepts/pack-1.C
! 99fa25ca7339fc5649a04c6d92dbeb51  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
! 5c91e2d6a8320f7acb83e659f98eb31f  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
! 32c0dae64f1cc7aa540683e2f77ecad8  gcc/testsuite/g++.dg/concepts/partial-spec5.C
! 575947e3e4749ae08aa2015744969cb7  gcc/testsuite/g++.dg/concepts/placeholder2.C
! cb637c31f7267e6cb6c02a89a06fecf0  gcc/testsuite/g++.dg/concepts/placeholder3.C
! 79b01ce4c0ddc29b29698e41deb18cda  gcc/testsuite/g++.dg/concepts/placeholder4.C
! c6b1dbd7752014fd21d59c3495671ca9  gcc/testsuite/g++.dg/concepts/placeholder5.C
! a3041d3b0ddd1e4e139656fef2568888  gcc/testsuite/g++.dg/concepts/placeholder6.C
  91bbc43bd292628bdbb650fc92890934  gcc/testsuite/g++.dg/concepts/pr105061.C
! bff91be12faf541761b92b8a7ac5de0f  gcc/testsuite/g++.dg/concepts/pr65634.C
! e1b13bd2e7e5b547138d71c7e88ff143  gcc/testsuite/g++.dg/concepts/pr65636.C
! c793a07aee900824ca395d9ccff6ee08  gcc/testsuite/g++.dg/concepts/pr65681.C
! 76e72c4c67a6783304ed40aa1d086f52  gcc/testsuite/g++.dg/concepts/pr65848.C
! 20df532acfc2d4b7d650ec7dfa5ad3a4  gcc/testsuite/g++.dg/concepts/pr67249.C
  fe07e4925bae0dcfe3312c31c956ea94  gcc/testsuite/g++.dg/concepts/pr67544.C
! 7d27b24ac23ab02a1d7fb495d15a14b4  gcc/testsuite/g++.dg/concepts/pr67595.C
  362815b654ac87fabacd65452bb918af  gcc/testsuite/g++.dg/concepts/pr67655.C
  6b93c9bfdaa98cfad9237a7e53a8916a  gcc/testsuite/g++.dg/concepts/pr67656.C
! 938a9ea93b681cf74f4086e88a80408c  gcc/testsuite/g++.dg/concepts/pr68434.C
! a88b1b347f175114339c5bcdeb3bc43d  gcc/testsuite/g++.dg/concepts/pr71127.C
! c7a9f5584613db056577c214575d457c  gcc/testsuite/g++.dg/concepts/pr71128.C
! fc1266bdee94d209572293ff87daaafc  gcc/testsuite/g++.dg/concepts/pr71131.C
! 1c544cd56ecd2b229c89d7302abdbf34  gcc/testsuite/g++.dg/concepts/pr71385.C
  5081d20c34616376a7e34339192cee7a  gcc/testsuite/g++.dg/concepts/pr84330.C
  80acdea1aca490469567728dd37ac486  gcc/testsuite/g++.dg/concepts/pr84423-1.C
  d3cc382cfea8828e266ca88b690a649f  gcc/testsuite/g++.dg/concepts/pr84423-2.C
  48f51db719dd544c776963adc2fda8f3  gcc/testsuite/g++.dg/concepts/pr84661.C
! 2eabe6acc886a594a497ec0879b5bba8  gcc/testsuite/g++.dg/concepts/pr85065.C
  e9278b544de010d993faf3bb25d4fb2f  gcc/testsuite/g++.dg/concepts/pr87768.C
  33fc585ccda01960808b09c3a303a39b  gcc/testsuite/g++.dg/concepts/pr89036.C
  e1a4873d31b9c778075b986c64f0d3f6  gcc/testsuite/g++.dg/concepts/pr91073-1.C
--- 13243,13313 ----
  27e3f997ced26bbdf184fd5906c3a8dc  gcc/testsuite/g++.dg/concepts/diagnostic7.C
  c9d7cb8a10b8d288002e523cc80a1f58  gcc/testsuite/g++.dg/concepts/diagnostic8.C
  d44301076a2b5c1b6d67f8097ebccdc3  gcc/testsuite/g++.dg/concepts/diagnostic9.C
! 2fbeae90c5dfde2fc92c611a9b91879c  gcc/testsuite/g++.dg/concepts/dr1430.C
! 40f8aaf6fe832364d6fa1bcd7456b7b4  gcc/testsuite/g++.dg/concepts/equiv.C
! b82ca68b7eeed1d49150a0dd5b1d6bfe  gcc/testsuite/g++.dg/concepts/equiv2.C
  777ac81f55c638a07da402594472e54f  gcc/testsuite/g++.dg/concepts/explicit-spec1.C
! 54d3adb5daf405d53fb4cae734d0d1a8  gcc/testsuite/g++.dg/concepts/explicit-spec1a.C
! 7f5d026a92bcfb8e0283cb135d8ecaf8  gcc/testsuite/g++.dg/concepts/expression.C
! e36c5676feb6c12dfd3448b7a8dab3c2  gcc/testsuite/g++.dg/concepts/expression2.C
! 5ac938c2d0e7ad0f92550b994d635fc8  gcc/testsuite/g++.dg/concepts/expression3.C
! b972b7176f0432f3a1f0e5d6a7663a52  gcc/testsuite/g++.dg/concepts/fn-concept1.C
! c55402d441ade2cefbc613a396572344  gcc/testsuite/g++.dg/concepts/fn-concept2.C
! 4b67a1c0397746f4aa404e1ce36b23dd  gcc/testsuite/g++.dg/concepts/fn-concept3.C
  43b4b86e8179275233dfe2e409cf5544  gcc/testsuite/g++.dg/concepts/fn-generic-member-ool.C
! d39589e202c896dd2d2153727e5abdd4  gcc/testsuite/g++.dg/concepts/fn1.C
! eac2929e53fdfab51acde27dcbdffd8c  gcc/testsuite/g++.dg/concepts/fn10.C
! f058fc0f8507cc6e6b6372f814aa4511  gcc/testsuite/g++.dg/concepts/fn2.C
! a2b2148d962e6c7c4da8bd48d6aa8e14  gcc/testsuite/g++.dg/concepts/fn3.C
! bf541dcd42665acd7a12041b44640353  gcc/testsuite/g++.dg/concepts/fn4.C
! 2d778319e52d392434f548983647a14b  gcc/testsuite/g++.dg/concepts/fn5.C
! 7acbe626266869bb0462f56e2c7b9d1e  gcc/testsuite/g++.dg/concepts/fn6.C
  98535529d421332d371f71209699354e  gcc/testsuite/g++.dg/concepts/fn7.C
! 8b60a4c06424ae4fb3dedaf0192bfd07  gcc/testsuite/g++.dg/concepts/fn8.C
! bca40547c8c559123e105d39237def18  gcc/testsuite/g++.dg/concepts/fn9.C
! 4c85de44c202bc240189bba9a780abf6  gcc/testsuite/g++.dg/concepts/generic-fn-err.C
! 4523b016f2bfca5ff6654a7a7a302288  gcc/testsuite/g++.dg/concepts/generic-fn.C
! cc8c224ab43f9e4ebca71a43dc27e74d  gcc/testsuite/g++.dg/concepts/inherit-ctor1.C
! 564d2d12b39a896feab8fb2e5d250a56  gcc/testsuite/g++.dg/concepts/inherit-ctor3.C
! 10a61172003d5ce6858eb50b09671e23  gcc/testsuite/g++.dg/concepts/intro1.C
! 883c287118af0e3e5cf434a46b735885  gcc/testsuite/g++.dg/concepts/intro2.C
! 76b2ab98cba962aebb61ad176f982e23  gcc/testsuite/g++.dg/concepts/intro3.C
! 12703b43f355aebabcba3929f2ed9874  gcc/testsuite/g++.dg/concepts/intro4.C
! 4c0b5a57170a283c075c08de01f80aa7  gcc/testsuite/g++.dg/concepts/intro5.C
! f605a7611a7a2475bdaf828e4702067c  gcc/testsuite/g++.dg/concepts/intro6.C
! 580b6798aae7d948e85fb72c74f0da79  gcc/testsuite/g++.dg/concepts/intro7.C
  29af9c990e1fe56208ba66e5fbe5e9f1  gcc/testsuite/g++.dg/concepts/local-extern.C
! 47780796cedb1e65278def0901f4bfe9  gcc/testsuite/g++.dg/concepts/locations1.C
  8167dac3599949519b5c414584b01961  gcc/testsuite/g++.dg/concepts/no-bool1.C
  a0d717a73a9e41d16aea89209cfa3945  gcc/testsuite/g++.dg/concepts/pack-1.C
! 53bac9dd040aa4f5750be7f25b6d2171  gcc/testsuite/g++.dg/concepts/partial-concept-id1.C
! 6964a9f759681d3c2a5e2f822a4428fa  gcc/testsuite/g++.dg/concepts/partial-concept-id2.C
! 112e5468e59369f6ae2f636024ccb0cb  gcc/testsuite/g++.dg/concepts/partial-spec5.C
! 4d75d939d23320a8b7f41c6271028c71  gcc/testsuite/g++.dg/concepts/placeholder2.C
! b544e7fe3c48b01b30fb34927e5f9848  gcc/testsuite/g++.dg/concepts/placeholder3.C
! 51acda463787e418a6689592a4a053cc  gcc/testsuite/g++.dg/concepts/placeholder4.C
! 29551d7001d012dec20074e9c24e2bc0  gcc/testsuite/g++.dg/concepts/placeholder5.C
! bc54f589790b11d368beabaaf129d68f  gcc/testsuite/g++.dg/concepts/placeholder6.C
  91bbc43bd292628bdbb650fc92890934  gcc/testsuite/g++.dg/concepts/pr105061.C
! 51cd7b02c12dfa0fa5cddb1e25c66822  gcc/testsuite/g++.dg/concepts/pr65634.C
! 89183d758c17d1f0685b9f9f2a98888c  gcc/testsuite/g++.dg/concepts/pr65636.C
! d862ed23d97ceef607c9fad109796972  gcc/testsuite/g++.dg/concepts/pr65681.C
! 7f5e881fc704249ca47de23a2c383e37  gcc/testsuite/g++.dg/concepts/pr65848.C
! 72d24f6494ad1bbf32c8b2d9d70c0ef5  gcc/testsuite/g++.dg/concepts/pr67249.C
  fe07e4925bae0dcfe3312c31c956ea94  gcc/testsuite/g++.dg/concepts/pr67544.C
! 31bc2ca0fcbbd92d9d687c3c84002fbe  gcc/testsuite/g++.dg/concepts/pr67595.C
  362815b654ac87fabacd65452bb918af  gcc/testsuite/g++.dg/concepts/pr67655.C
  6b93c9bfdaa98cfad9237a7e53a8916a  gcc/testsuite/g++.dg/concepts/pr67656.C
! 64ff04fa155e70e8b740fad8342426bd  gcc/testsuite/g++.dg/concepts/pr68434.C
! e13669127295da8317e46010738c9a55  gcc/testsuite/g++.dg/concepts/pr71127.C
! 0ed7ab99c6cbb151b9ffb41541a738a8  gcc/testsuite/g++.dg/concepts/pr71128.C
! 87a3b303a5b3536dab84f5cb6961fe0a  gcc/testsuite/g++.dg/concepts/pr71131.C
! 175cbfd2cf7ab1b3c61c0306b0538783  gcc/testsuite/g++.dg/concepts/pr71385.C
  5081d20c34616376a7e34339192cee7a  gcc/testsuite/g++.dg/concepts/pr84330.C
  80acdea1aca490469567728dd37ac486  gcc/testsuite/g++.dg/concepts/pr84423-1.C
  d3cc382cfea8828e266ca88b690a649f  gcc/testsuite/g++.dg/concepts/pr84423-2.C
  48f51db719dd544c776963adc2fda8f3  gcc/testsuite/g++.dg/concepts/pr84661.C
! 4f6695e6fbb36b5901bc3bb4b5445257  gcc/testsuite/g++.dg/concepts/pr85065.C
  e9278b544de010d993faf3bb25d4fb2f  gcc/testsuite/g++.dg/concepts/pr87768.C
  33fc585ccda01960808b09c3a303a39b  gcc/testsuite/g++.dg/concepts/pr89036.C
  e1a4873d31b9c778075b986c64f0d3f6  gcc/testsuite/g++.dg/concepts/pr91073-1.C
*************** c30679471840f9e089d6a23a33648b3e  gcc/te
*** 11905,11935 ****
  42fd858d044be8a33f514fa6649f23a7  gcc/testsuite/g++.dg/concepts/pr95181-2.C
  e68480b7ad09bc8b28b4647c839fdc1c  gcc/testsuite/g++.dg/concepts/pr95181.C
  0f1fc57ab3b7de768005bbf852ef84f3  gcc/testsuite/g++.dg/concepts/pr95386.C
! 76f5a1ce3a9cd79740775294888399ba  gcc/testsuite/g++.dg/concepts/template-parm11.C
! 6eb9175b34b49ae5634767dfc9023095  gcc/testsuite/g++.dg/concepts/template-parm12.C
! 1c24f39158a8d64167f93c84ced6ec7c  gcc/testsuite/g++.dg/concepts/template-parm2.C
! 1af4f414a557c1641e3e5af2d5941a3a  gcc/testsuite/g++.dg/concepts/template-parm3.C
! 066f344bcd193f328a06f042cc4f2c93  gcc/testsuite/g++.dg/concepts/template-parm4.C
! 5db40e5ba760632863a074579b8cb70b  gcc/testsuite/g++.dg/concepts/template-template-parm1.C
! 158ce36d1e9ce017a042ec006fa07838  gcc/testsuite/g++.dg/concepts/var-concept1.C
! 5ad8abe9858ee2a8ee647e32cfc8badc  gcc/testsuite/g++.dg/concepts/var-concept2.C
! ffc971a50a6c1a4c8afc201fefc35663  gcc/testsuite/g++.dg/concepts/var-concept3.C
! 7fdaf006774082977c8dfc8dbe7370c7  gcc/testsuite/g++.dg/concepts/var-concept4.C
! 2d0e8049167580e916ee3c79135e9132  gcc/testsuite/g++.dg/concepts/var-concept5.C
! b1720f11f76780d2456ef3bb976c0e91  gcc/testsuite/g++.dg/concepts/var-concept6.C
! a732b0969ec75021ceb62c1dc7013fa9  gcc/testsuite/g++.dg/concepts/var-concept7.C
  c2756158292afe7cabf4f389fbd26ef2  gcc/testsuite/g++.dg/concepts/var-templ1.C
! c65b36775b24a5dfafbc27bca3481654  gcc/testsuite/g++.dg/concepts/var-templ2.C
! b831121f9141a8e9cb0ce3581af3bcb8  gcc/testsuite/g++.dg/concepts/var-templ3.C
! 7b7b33890eefa1cce09f420f230a85b8  gcc/testsuite/g++.dg/concepts/variadic1.C
! c7379c0f2c3c21faeeef50c4d8999424  gcc/testsuite/g++.dg/concepts/variadic2.C
! 8ad5552b5468c97d780280b2830522e3  gcc/testsuite/g++.dg/concepts/variadic3.C
! d11a4fa08a7da825858193244daaf54c  gcc/testsuite/g++.dg/concepts/variadic4.C
  269ac7b99d88175237e466f69cfb1baf  gcc/testsuite/g++.dg/concepts/variadic5.C
  80f790242b0cedc0924485313675abbd  gcc/testsuite/g++.dg/concepts/variadic6.C
  47d50ea9841dfff2e1add4fe21d8cdd8  gcc/testsuite/g++.dg/conflict-markers-1.C
  f8f8119851ae2427bb5baa9f11ad5936  gcc/testsuite/g++.dg/conflict-markers-2.C
  f25f03bef75b49b3242b2b981a26687a  gcc/testsuite/g++.dg/constexpr-null1.C
  86b1b880d2414f17dc8db282f49ae6e2  gcc/testsuite/g++.dg/conversion/Wwrite-strings.C
  f0aed431ce3357281e21fdd3e10a7644  gcc/testsuite/g++.dg/conversion/access1.C
  cae83e7bca15183b3b346f9a00467f2c  gcc/testsuite/g++.dg/conversion/ambig1.C
--- 13321,13460 ----
  42fd858d044be8a33f514fa6649f23a7  gcc/testsuite/g++.dg/concepts/pr95181-2.C
  e68480b7ad09bc8b28b4647c839fdc1c  gcc/testsuite/g++.dg/concepts/pr95181.C
  0f1fc57ab3b7de768005bbf852ef84f3  gcc/testsuite/g++.dg/concepts/pr95386.C
! f34c33c4a4203eb1b374766b9436eb12  gcc/testsuite/g++.dg/concepts/template-parm11.C
! fcdfc85740e07281d796512f572f74f6  gcc/testsuite/g++.dg/concepts/template-parm12.C
! 0445f9fed49a5ba7f3c9ac82e22b81fa  gcc/testsuite/g++.dg/concepts/template-parm2.C
! 89861cd14de8deb5030a67bae2ded02c  gcc/testsuite/g++.dg/concepts/template-parm3.C
! 4f69c690473647dab5f5f5070123cd12  gcc/testsuite/g++.dg/concepts/template-parm4.C
! 733665a0da970554221b07285ee67a95  gcc/testsuite/g++.dg/concepts/template-template-parm1.C
! ccf48b433f4802f848268e43e7145638  gcc/testsuite/g++.dg/concepts/var-concept1.C
! 703699d8f1709d1df869a3ea14cad6f1  gcc/testsuite/g++.dg/concepts/var-concept2.C
! 6b7f57fced2ca7f9cdf78b6d730652e1  gcc/testsuite/g++.dg/concepts/var-concept3.C
! 28e0b2b22fb3022fe838e6b0e8ccdd1f  gcc/testsuite/g++.dg/concepts/var-concept4.C
! f0f37a50e825c23857ec563a647b2e30  gcc/testsuite/g++.dg/concepts/var-concept5.C
! bc053552d16aa28117182a45d21fa3ae  gcc/testsuite/g++.dg/concepts/var-concept6.C
! 2ab6aeb7d76de39f406681828d7810b7  gcc/testsuite/g++.dg/concepts/var-concept7.C
  c2756158292afe7cabf4f389fbd26ef2  gcc/testsuite/g++.dg/concepts/var-templ1.C
! 22c23e3a26e997acb2bb182c531735cf  gcc/testsuite/g++.dg/concepts/var-templ2.C
! d9b6589abec2686c62b1ce96235a75db  gcc/testsuite/g++.dg/concepts/var-templ3.C
! f7d0e5bde25dcd904c54231839fd0f68  gcc/testsuite/g++.dg/concepts/variadic1.C
! c4688de088c9da0ee0d8e779f79ed489  gcc/testsuite/g++.dg/concepts/variadic2.C
! 5400c81023c8ff1f9154110c371e230e  gcc/testsuite/g++.dg/concepts/variadic3.C
! f2bf8e304f4309f9182d76b408c8a7b2  gcc/testsuite/g++.dg/concepts/variadic4.C
  269ac7b99d88175237e466f69cfb1baf  gcc/testsuite/g++.dg/concepts/variadic5.C
  80f790242b0cedc0924485313675abbd  gcc/testsuite/g++.dg/concepts/variadic6.C
  47d50ea9841dfff2e1add4fe21d8cdd8  gcc/testsuite/g++.dg/conflict-markers-1.C
  f8f8119851ae2427bb5baa9f11ad5936  gcc/testsuite/g++.dg/conflict-markers-2.C
  f25f03bef75b49b3242b2b981a26687a  gcc/testsuite/g++.dg/constexpr-null1.C
+ b943cfa99f231ecca89a127be47e62bb  gcc/testsuite/g++.dg/contracts/backtrace_handler/Makefile
+ 223c090c01345af06b66ab0000b3915c  gcc/testsuite/g++.dg/contracts/backtrace_handler/README
+ 89a180dc1e56599e0c77c9d281e46fbb  gcc/testsuite/g++.dg/contracts/backtrace_handler/assert_fail.cpp
+ bd9982768438a217a3a6ac91276d4897  gcc/testsuite/g++.dg/contracts/backtrace_handler/example_out.txt
+ 899d1249603104cd5fa1439ef9d116ca  gcc/testsuite/g++.dg/contracts/backtrace_handler/example_pretty.txt
+ 8084cec06f7b5af4e5a2df2d1077d4ee  gcc/testsuite/g++.dg/contracts/backtrace_handler/handle_contract_violation.cpp
+ 7a12aa0409116279c5d00625b5aaa210  gcc/testsuite/g++.dg/contracts/backtrace_handler/prettytrace.sh
+ b2c13d54ae9317e6f65afe3d3e435db0  gcc/testsuite/g++.dg/contracts/contracts-access1.C
+ 0a33d55a3b2f7a7c17917bd5ec0a460e  gcc/testsuite/g++.dg/contracts/contracts-assume1.C
+ 6bbeba4897ac9bfdd83a59f4162336e5  gcc/testsuite/g++.dg/contracts/contracts-assume2.C
+ 8a4c5e4d664d69ad2cab3b2f29711b8c  gcc/testsuite/g++.dg/contracts/contracts-assume3.C
+ 73d7036054bbee5f2edb34caa395b01c  gcc/testsuite/g++.dg/contracts/contracts-assume4.C
+ e1e24cc4bbd3d5ba574a42a8343c7883  gcc/testsuite/g++.dg/contracts/contracts-assume5.C
+ b8bf805ee48013f4f7b9de2fc7d93030  gcc/testsuite/g++.dg/contracts/contracts-assume6.C
+ bf2dd096ed02f2ae9c83cbdcd1d4faa6  gcc/testsuite/g++.dg/contracts/contracts-comdat1.C
+ 4d156b3cca4d9720ed6df166dd581ea6  gcc/testsuite/g++.dg/contracts/contracts-config1.C
+ 869c5fd37e964d701bcd36635ceaddcb  gcc/testsuite/g++.dg/contracts/contracts-constexpr1.C
+ 2fe69811cd9254161d24423914330718  gcc/testsuite/g++.dg/contracts/contracts-constexpr2.C
+ eccfb2d04c6e65c059f0b070fc3fae96  gcc/testsuite/g++.dg/contracts/contracts-constexpr3.C
+ 0ca5358b44119fc709ac5f2ab8930d02  gcc/testsuite/g++.dg/contracts/contracts-conversion1.C
+ 7d9c8a094730ae5af47293ccb704bb25  gcc/testsuite/g++.dg/contracts/contracts-ctor-dtor1.C
+ c9db1153e8ee5cb72849f5c0f39cf1e3  gcc/testsuite/g++.dg/contracts/contracts-ctor-dtor2.C
+ 124d5f0934307b58c175aa152287e8a0  gcc/testsuite/g++.dg/contracts/contracts-cv1.C
+ e441ab4fa3cbbe376b99cd549356774a  gcc/testsuite/g++.dg/contracts/contracts-deduced1.C
+ fbd7657b66a4ee239d820aa1db889813  gcc/testsuite/g++.dg/contracts/contracts-deduced2.C
+ 5c9bafac170b07d97ed4eb83dc16ef98  gcc/testsuite/g++.dg/contracts/contracts-err1.C
+ c9469e1b27e394f42de38b75be58b492  gcc/testsuite/g++.dg/contracts/contracts-externC.C
+ 1ec644dc35302ca0a48e369e525a8b61  gcc/testsuite/g++.dg/contracts/contracts-friend1.C
+ 52b21bc9c9cad3844d95e311a988d68f  gcc/testsuite/g++.dg/contracts/contracts-ft1.C
+ 71d1f0701de65c6343284c3a5cbb342f  gcc/testsuite/g++.dg/contracts/contracts-ignore1.C
+ 43bf83f69f1424b20113b017efa4d6d5  gcc/testsuite/g++.dg/contracts/contracts-ignore2.C
+ bb0dd846252c3c3c1d582fa399b6fd4a  gcc/testsuite/g++.dg/contracts/contracts-large-return.C
+ 45cd409571b28e38985f524a392cb715  gcc/testsuite/g++.dg/contracts/contracts-multiline1.C
+ 93826bdbe09e0a48115b2e9f7dd205d8  gcc/testsuite/g++.dg/contracts/contracts-multiple-inheritance1.C
+ d647c3628b453645a4980cb2c7de1b6a  gcc/testsuite/g++.dg/contracts/contracts-multiple-inheritance2.C
+ 2f30c236622a9703769ea01c66616f42  gcc/testsuite/g++.dg/contracts/contracts-nested-class1.C
+ 36d876bf98e5e599008851bd0a0664f4  gcc/testsuite/g++.dg/contracts/contracts-nested-class2.C
+ d61ea23f366dae37350aa0dc5f2b4528  gcc/testsuite/g++.dg/contracts/contracts-nocopy1.C
+ 01ab4dc999a96e56ee2226ac44bdbf8e  gcc/testsuite/g++.dg/contracts/contracts-override.C
+ 51d94c6f242297eab641a9cd460f5f37  gcc/testsuite/g++.dg/contracts/contracts-post1.C
+ 7e5f283d663f3d43898757853d0ef258  gcc/testsuite/g++.dg/contracts/contracts-post2.C
+ 8057083ed10e2755c441ee815a316557  gcc/testsuite/g++.dg/contracts/contracts-post3.C
+ fd1ebb08a8584706a94c2f3a8341af7c  gcc/testsuite/g++.dg/contracts/contracts-post4.C
+ e2590b46b53ec704324172e6e9b19d6e  gcc/testsuite/g++.dg/contracts/contracts-post5.C
+ c20bb9e2f528699a697643b507b9d245  gcc/testsuite/g++.dg/contracts/contracts-post6.C
+ 7116878ea39c2a20c71154e676cbcc1e  gcc/testsuite/g++.dg/contracts/contracts-pre1.C
+ cff531ab03f42a3534984cf298438fd8  gcc/testsuite/g++.dg/contracts/contracts-pre10.C
+ 87645aaad36fe7c2eb1914d42651396d  gcc/testsuite/g++.dg/contracts/contracts-pre2.C
+ 44f64673aac65a1ae27a3c101075e216  gcc/testsuite/g++.dg/contracts/contracts-pre2a1.C
+ db067f9497ea7309ae348780664f869e  gcc/testsuite/g++.dg/contracts/contracts-pre2a2.C
+ 52fcb902fd9cb545e7cf00e0f07ddd82  gcc/testsuite/g++.dg/contracts/contracts-pre3.C
+ f57c3cc21107d0814caecdf61be722c3  gcc/testsuite/g++.dg/contracts/contracts-pre4.C
+ 9ceee62ec96dfdce105470a6e9e047c4  gcc/testsuite/g++.dg/contracts/contracts-pre5.C
+ b1e16c42ac54a9ddccdb5e21e4f4f5b3  gcc/testsuite/g++.dg/contracts/contracts-pre6.C
+ 1678ab74b61c5ae2274504ae47ae24d6  gcc/testsuite/g++.dg/contracts/contracts-pre7.C
+ f212bc9e1eb4f707e6374af8c66629b4  gcc/testsuite/g++.dg/contracts/contracts-pre9.C
+ 62ba1c4517aa7006be86df32a86b112b  gcc/testsuite/g++.dg/contracts/contracts-redecl1.C
+ cb6c3d1131c86c5625a7a5cd72e4eef3  gcc/testsuite/g++.dg/contracts/contracts-redecl2.C
+ 0a70fa233dfe13da250bf3b1f479ba43  gcc/testsuite/g++.dg/contracts/contracts-redecl3.C
+ 801e45aa969866a7e0dc8a1f3bbdb21a  gcc/testsuite/g++.dg/contracts/contracts-redecl4.C
+ 82709f66f4af2a21bd6f909183dbac48  gcc/testsuite/g++.dg/contracts/contracts-redecl5.C
+ 53417ad0e8b877b94d837bcd61166f76  gcc/testsuite/g++.dg/contracts/contracts-redecl6.C
+ 11ce5508b8702e68bc895e366f4e9ef6  gcc/testsuite/g++.dg/contracts/contracts-redecl7.C
+ d53c0b0fc368bda6e8adfdda351d531e  gcc/testsuite/g++.dg/contracts/contracts-redecl8.C
+ a7f4a2fd7bf07439040a7b09cb4c8072  gcc/testsuite/g++.dg/contracts/contracts-tmpl-attr1.C
+ 7c1d45833f1ebd693d4462f114a6d1ca  gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec1.C
+ 9eada108c4e987678a19363dd058626d  gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec2.C
+ 00f7a59ada045702870670d10ee6e9b1  gcc/testsuite/g++.dg/contracts/contracts-tmpl-spec3.C
+ c210cba8e1e324774b6ab401c96deeb0  gcc/testsuite/g++.dg/contracts/contracts1.C
+ cec25083828eb115f962e091a8ae65a6  gcc/testsuite/g++.dg/contracts/contracts10.C
+ 7328aa3328d6837c51d49a379fb578e6  gcc/testsuite/g++.dg/contracts/contracts11.C
+ 190c759120c67e0575bdf5bdfa24b64a  gcc/testsuite/g++.dg/contracts/contracts12.C
+ ee120fc86148dfc73930595c4e310dd5  gcc/testsuite/g++.dg/contracts/contracts13.C
+ 5b563cf353f6da573999833a2e79c088  gcc/testsuite/g++.dg/contracts/contracts14.C
+ 8e60b1814169be53e6407141d252b774  gcc/testsuite/g++.dg/contracts/contracts15.C
+ 23a4f768640a7185c026b8ff7fb25f57  gcc/testsuite/g++.dg/contracts/contracts16.C
+ 2406edd9eb09e0dbe32e443cfa740f53  gcc/testsuite/g++.dg/contracts/contracts17.C
+ 32e88b8694a0ed5123bb44f3236a7cc9  gcc/testsuite/g++.dg/contracts/contracts18.C
+ d79864fe8460f707787b245daf5d0603  gcc/testsuite/g++.dg/contracts/contracts19.C
+ f79242a54cea67e662396d7708b1d96a  gcc/testsuite/g++.dg/contracts/contracts2.C
+ d854c6c14e50ba3b621cfa5a19c1e835  gcc/testsuite/g++.dg/contracts/contracts20.C
+ 7cedd004482213e7ea0d823af3bac482  gcc/testsuite/g++.dg/contracts/contracts22.C
+ 48cb5f6f226e76b7341aab81c08f6602  gcc/testsuite/g++.dg/contracts/contracts24.C
+ 2b1e3632e05cb51c78ef6c1312be5225  gcc/testsuite/g++.dg/contracts/contracts25.C
+ 8399a2b96fe8f2674d0878da924472ff  gcc/testsuite/g++.dg/contracts/contracts3.C
+ e33d1aa7631561080624816856ba9afa  gcc/testsuite/g++.dg/contracts/contracts35.C
+ ef29c53b1b9f00d76672c93f55d6f649  gcc/testsuite/g++.dg/contracts/contracts4.C
+ 73889b3de790f0957f9bc744c5b49b24  gcc/testsuite/g++.dg/contracts/contracts5.C
+ 927c495d30669473630db460e0c9b832  gcc/testsuite/g++.dg/contracts/contracts6.C
+ e1d6233d79978f9b6aa6354d979510ea  gcc/testsuite/g++.dg/contracts/contracts7.C
+ 1ab07d07d8710623da3e3582c85a642c  gcc/testsuite/g++.dg/contracts/contracts8.C
+ 9ff482b1dc611b79690ccf183a9f7800  gcc/testsuite/g++.dg/contracts/contracts9.C
+ 460175ab5b30061d80960faa912cdb56  gcc/testsuite/g++.dg/contracts/except_preload_handler/Makefile
+ 43408545b0dc258f8b9f1b20507a7228  gcc/testsuite/g++.dg/contracts/except_preload_handler/README
+ 898e3ee72371441be6b9914570dd1dba  gcc/testsuite/g++.dg/contracts/except_preload_handler/assert_fail.cpp
+ 976d7e6f6d60f6f3099e288e26993286  gcc/testsuite/g++.dg/contracts/except_preload_handler/handle_contract_violation.cpp
+ 460175ab5b30061d80960faa912cdb56  gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/Makefile
+ 5b9994a0d41a7ee4e89f793a435c6f57  gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/README
+ 1eef935e17a9e42132e42fbaf5825bd3  gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/assert_fail.cpp
+ 976d7e6f6d60f6f3099e288e26993286  gcc/testsuite/g++.dg/contracts/noexcept_preload_handler/handle_contract_violation.cpp
+ c81f2cfc289a492c0914488fe8b63c60  gcc/testsuite/g++.dg/contracts/preload_handler/Makefile
+ 25782949ad51a3e368e55d72b148a8b7  gcc/testsuite/g++.dg/contracts/preload_handler/README
+ a20f08cc18eaf6c3032e2d1b9cffe61d  gcc/testsuite/g++.dg/contracts/preload_handler/assert_fail.cpp
+ dc5dacc4f67e341524d85d082bb7a2d0  gcc/testsuite/g++.dg/contracts/preload_handler/handle_contract_violation.cpp
+ c756cce4ff3f49b22913831f3f1cce4d  gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/Makefile
+ 7a6038918674d84254d66a174f74f23c  gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/README
+ 750d70063c91e040a6eb22e224cb894e  gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/assert_fail.cpp
+ 788020aa04295c84bca4ce22cde827ba  gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/handle_contract_violation.cpp
+ bd7d5494b5a353e621c6049c6ee7a332  gcc/testsuite/g++.dg/contracts/preload_nocontinue_handler/nocontinue.cpp
  86b1b880d2414f17dc8db282f49ae6e2  gcc/testsuite/g++.dg/conversion/Wwrite-strings.C
  f0aed431ce3357281e21fdd3e10a7644  gcc/testsuite/g++.dg/conversion/access1.C
  cae83e7bca15183b3b346f9a00467f2c  gcc/testsuite/g++.dg/conversion/ambig1.C
*************** b3506f6da49052d7a7e20089f99f17b7  gcc/te
*** 11980,11986 ****
  5c78730bf80025f457f190a83a71fc4e  gcc/testsuite/g++.dg/conversion/packed2.C
  aadd9c8f0e37dbd4368b036b8516964b  gcc/testsuite/g++.dg/conversion/pr100635.C
  9b3ae1f3e79f50fca27a3e00a91d2baa  gcc/testsuite/g++.dg/conversion/pr16333.C
! 519c18e7a304cfef222dd6fb78722c0d  gcc/testsuite/g++.dg/conversion/pr41426.C
  57621b2c950d1c44fdcadc7ab14ae9ac  gcc/testsuite/g++.dg/conversion/pr59879.C
  7c2baf81a4424b9894f9edf958000455  gcc/testsuite/g++.dg/conversion/pr66211.C
  e6b7c453fcfdf5af281f4aa01491a4be  gcc/testsuite/g++.dg/conversion/pr66895.C
--- 13505,13511 ----
  5c78730bf80025f457f190a83a71fc4e  gcc/testsuite/g++.dg/conversion/packed2.C
  aadd9c8f0e37dbd4368b036b8516964b  gcc/testsuite/g++.dg/conversion/pr100635.C
  9b3ae1f3e79f50fca27a3e00a91d2baa  gcc/testsuite/g++.dg/conversion/pr16333.C
! 80a6e1d843531cfd52730f7dc0b64c85  gcc/testsuite/g++.dg/conversion/pr41426.C
  57621b2c950d1c44fdcadc7ab14ae9ac  gcc/testsuite/g++.dg/conversion/pr59879.C
  7c2baf81a4424b9894f9edf958000455  gcc/testsuite/g++.dg/conversion/pr66211.C
  e6b7c453fcfdf5af281f4aa01491a4be  gcc/testsuite/g++.dg/conversion/pr66895.C
*************** b80ab713758c51e69280fe2ae2dee7c9  gcc/te
*** 12004,12009 ****
--- 13529,13536 ----
  ec278d0c2a69cb842dbe397a2f7cd1da  gcc/testsuite/g++.dg/conversion/ref5.C
  7694270a112c0852442331463edd46d7  gcc/testsuite/g++.dg/conversion/ref6.C
  29aabecbfa0b52f6dea2d926d1985528  gcc/testsuite/g++.dg/conversion/ref7.C
+ f869490911b96eed9bb004cc7c328afb  gcc/testsuite/g++.dg/conversion/ref8.C
+ 7b6166ce04d73e6d379e1cf4a03123dd  gcc/testsuite/g++.dg/conversion/ref9.C
  6e5e81ebfb94f64d88135e578c526065  gcc/testsuite/g++.dg/conversion/reinterpret1.C
  da446c68ad3e26a27f1f02cfb80bb439  gcc/testsuite/g++.dg/conversion/reinterpret2.C
  f267cf08380163dcddb564b0eaf39749  gcc/testsuite/g++.dg/conversion/reinterpret3.C
*************** e272ef3520e23457da8ff42e7d7411cb  gcc/te
*** 12016,12021 ****
--- 13543,13550 ----
  a3a3822acc6c0ae0b1c800209c7c3369  gcc/testsuite/g++.dg/conversion/to-virtual-base-1.C
  7a062897a2b4fb8f55640e4a532239dd  gcc/testsuite/g++.dg/conversion/void1.C
  11a0651cbba544a16a3a99edc6dd1232  gcc/testsuite/g++.dg/conversion/void2.C
+ 328c92600a7878c243c41f5fbc6d94ff  gcc/testsuite/g++.dg/coroutines/co-await-initlist1.C
+ f74a9d1bf6640b367d56a51317dbd163  gcc/testsuite/g++.dg/coroutines/co-await-moveonly1.C
  d2633a9d9bd295c903ea6a188821ac3c  gcc/testsuite/g++.dg/coroutines/co-await-syntax-00-needs-expr.C
  cbcf61ac3695e850097b05502475b900  gcc/testsuite/g++.dg/coroutines/co-await-syntax-01-outside-fn.C
  b9cdf449335374fa9e29301f8b540c5e  gcc/testsuite/g++.dg/coroutines/co-await-syntax-02-outside-fn.C
*************** bdf425a510ce924668a7bcbca275f7d7  gcc/te
*** 12070,12087 ****
  bd0ea3710f987fa8b866de1dda671af6  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh-3.C
  1e8c7244ef18cce6ae04d3ba82a340a4  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh.h
  8bb9a557eebbfb2add0de2e6f7f82a62  gcc/testsuite/g++.dg/coroutines/coro-pre-proc.C
! 10f071e3371232e29f491fa03b59105a  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
  478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
! ae3f4fa8827fb0936773b30a07e0aafa  gcc/testsuite/g++.dg/coroutines/coroutines.exp
! 61b68061e919892b77d9a8401fa1bde0  gcc/testsuite/g++.dg/coroutines/pr100127.C
  46087ea7fe5f7e548d1db1fe2bd1cdf7  gcc/testsuite/g++.dg/coroutines/pr100673.C
! c3400c7cd98281b570bf893a90a079d9  gcc/testsuite/g++.dg/coroutines/pr100772-a.C
! 20ff89f3e9d7d2dac356dd8e9d1b88cd  gcc/testsuite/g++.dg/coroutines/pr100772-b.C
  3b360a406ca4de73d3459cedee0d38e5  gcc/testsuite/g++.dg/coroutines/pr101133.C
  3b7900c34ea0474d337aa825a01675c2  gcc/testsuite/g++.dg/coroutines/pr101765.C
  5a6ab803d16d71889bbcfbe081300785  gcc/testsuite/g++.dg/coroutines/pr102454.C
  fcf423593c66a6801268d44dcd7b6ae1  gcc/testsuite/g++.dg/coroutines/pr102489.C
  85cc1b4c4f0e73f17a81693bed3275fa  gcc/testsuite/g++.dg/coroutines/pr103328.C
--- 13599,13619 ----
  bd0ea3710f987fa8b866de1dda671af6  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh-3.C
  1e8c7244ef18cce6ae04d3ba82a340a4  gcc/testsuite/g++.dg/coroutines/coro-missing-ueh.h
  8bb9a557eebbfb2add0de2e6f7f82a62  gcc/testsuite/g++.dg/coroutines/coro-pre-proc.C
! f8ef2c7d9409afc2b9b4e1f2aa9700fd  gcc/testsuite/g++.dg/coroutines/coro.h
  cb41fef7448625fa4e0c8fd96e24fc4d  gcc/testsuite/g++.dg/coroutines/coro1-allocators.h
  478574fcd282b18447d13478fa0bec3f  gcc/testsuite/g++.dg/coroutines/coro1-missing-await-method.C
  6f5627b19b794cfdd383607165c8ad4e  gcc/testsuite/g++.dg/coroutines/coro1-refs-and-ctors.h
  6487c0454968e62ff493f215450a35cc  gcc/testsuite/g++.dg/coroutines/coro1-ret-int-yield-int.h
! 142be698101d91634e7bdcc3b4b5f42f  gcc/testsuite/g++.dg/coroutines/coroutines.exp
! 38480902b130e861149d8b8b006e7e6b  gcc/testsuite/g++.dg/coroutines/pr100127.C
! 98a063ad16e26b41bc64224b581301b8  gcc/testsuite/g++.dg/coroutines/pr100611.C
  46087ea7fe5f7e548d1db1fe2bd1cdf7  gcc/testsuite/g++.dg/coroutines/pr100673.C
! 91ac4979abfedd9052be068897dd1477  gcc/testsuite/g++.dg/coroutines/pr100772-a.C
! 7f7430490507ba4fe1e3ba93e6a9e758  gcc/testsuite/g++.dg/coroutines/pr100772-b.C
  3b360a406ca4de73d3459cedee0d38e5  gcc/testsuite/g++.dg/coroutines/pr101133.C
+ 41e3768a7e4c86bb1f5702ed69afe25d  gcc/testsuite/g++.dg/coroutines/pr101367.C
  3b7900c34ea0474d337aa825a01675c2  gcc/testsuite/g++.dg/coroutines/pr101765.C
+ 907876b899af7e13b2655a2ff373099e  gcc/testsuite/g++.dg/coroutines/pr101976.C
  5a6ab803d16d71889bbcfbe081300785  gcc/testsuite/g++.dg/coroutines/pr102454.C
  fcf423593c66a6801268d44dcd7b6ae1  gcc/testsuite/g++.dg/coroutines/pr102489.C
  85cc1b4c4f0e73f17a81693bed3275fa  gcc/testsuite/g++.dg/coroutines/pr103328.C
*************** fcf423593c66a6801268d44dcd7b6ae1  gcc/te
*** 12089,12094 ****
--- 13621,13628 ----
  4be4670ffeb4857d864cfa5cfa5dc16f  gcc/testsuite/g++.dg/coroutines/pr104051.C
  27e919b929acdcd5721b1869fde7cbf1  gcc/testsuite/g++.dg/coroutines/pr105287.C
  d790a308ebfc34da4805acce40128a0a  gcc/testsuite/g++.dg/coroutines/pr105301.C
+ c5029b3ababd909d21fec108130560c2  gcc/testsuite/g++.dg/coroutines/pr106188.C
+ 7801d6d5799eadc6c00398b3003e9a6d  gcc/testsuite/g++.dg/coroutines/pr107768.C
  cbb42d13b1660a8eb1d40a3d88308140  gcc/testsuite/g++.dg/coroutines/pr93458-1-missing-traits.C
  d9151fc224e4913ed7ffacd748769917  gcc/testsuite/g++.dg/coroutines/pr93458-2-bad-traits.C
  e9b715cb41c54f5b179b4725b788e338  gcc/testsuite/g++.dg/coroutines/pr93458-3-missing-handle.C
*************** ad31826ccc407ca77f13ccedabe598c9  gcc/te
*** 12114,12120 ****
  d7c4d12326724992c8854e0b38126068  gcc/testsuite/g++.dg/coroutines/pr95518.C
  88de21db6a5919870fc423644c307d0f  gcc/testsuite/g++.dg/coroutines/pr95520.C
  c0851b55f1db10d372a842d773d11661  gcc/testsuite/g++.dg/coroutines/pr95591.C
! a49707211a5fe8dc7634517c75f89d56  gcc/testsuite/g++.dg/coroutines/pr95599.C
  8647f401f04a81b704516887be4b28c4  gcc/testsuite/g++.dg/coroutines/pr95616-0-no-exceptions.C
  3fd320156b24d7e2f06d831a9c811848  gcc/testsuite/g++.dg/coroutines/pr95616-0.C
  0fe1b5347f976f18205e87d472712a14  gcc/testsuite/g++.dg/coroutines/pr95616-1-no-exceptions.C
--- 13648,13654 ----
  d7c4d12326724992c8854e0b38126068  gcc/testsuite/g++.dg/coroutines/pr95518.C
  88de21db6a5919870fc423644c307d0f  gcc/testsuite/g++.dg/coroutines/pr95520.C
  c0851b55f1db10d372a842d773d11661  gcc/testsuite/g++.dg/coroutines/pr95591.C
! e73c27407e7a8d493fc1ebdec10d6c87  gcc/testsuite/g++.dg/coroutines/pr95599.C
  8647f401f04a81b704516887be4b28c4  gcc/testsuite/g++.dg/coroutines/pr95616-0-no-exceptions.C
  3fd320156b24d7e2f06d831a9c811848  gcc/testsuite/g++.dg/coroutines/pr95616-0.C
  0fe1b5347f976f18205e87d472712a14  gcc/testsuite/g++.dg/coroutines/pr95616-1-no-exceptions.C
*************** f095b3e5361e6b39aaa76b256225bae8  gcc/te
*** 12141,12146 ****
--- 13675,13682 ----
  13e8e708074a4e784b2756a16cffac95  gcc/testsuite/g++.dg/coroutines/pr98480.C
  e7ca2ef0f0db55f629fcfb4d4227cd60  gcc/testsuite/g++.dg/coroutines/pr99047.C
  609255984b51c63eb216d8341218b2c3  gcc/testsuite/g++.dg/coroutines/pr99575.C
+ 28c303ff08aa9b17dc678501b118bb0d  gcc/testsuite/g++.dg/coroutines/pr99576_1.C
+ 93d9f5726e45da6ec110bcf19344e5b1  gcc/testsuite/g++.dg/coroutines/pr99576_2.C
  a52a8d452461422c8ad1bacec0e8c15f  gcc/testsuite/g++.dg/coroutines/pr99710.C
  e5855150057a1e681eabe6c4c4c37e4d  gcc/testsuite/g++.dg/coroutines/ramp-return-a.C
  695b11618163db1e2b396417d78f1fa9  gcc/testsuite/g++.dg/coroutines/ramp-return-b.C
*************** e5855150057a1e681eabe6c4c4c37e4d  gcc/te
*** 12152,12161 ****
  c5ab4cca7557f052db81657084cd47b6  gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
  07bd8cf88b91c17f7cf509b755497cf3  gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
  607ba880fbb95e466674ab95cb05a8fe  gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
! 2da30c090cc5fc1814568273a06badbb  gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
! 2d3186c55e5d0358d6d48ff28b983d8e  gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
! 1f1c1535913b8adde45f1880656ac868  gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
! b987e32eaf5382969a4c0413f0470997  gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
  68d2c76a1adcba2f93696ac2b6e79e26  gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
  8ca095e5728e7de6d69eaa482659be24  gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
  4a072d5861d5ea835ffd3f465df00eb1  gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
--- 13688,13697 ----
  c5ab4cca7557f052db81657084cd47b6  gcc/testsuite/g++.dg/coroutines/torture/alloc-02-fail-new-grooaf-check.C
  07bd8cf88b91c17f7cf509b755497cf3  gcc/testsuite/g++.dg/coroutines/torture/alloc-03-overload-new-1.C
  607ba880fbb95e466674ab95cb05a8fe  gcc/testsuite/g++.dg/coroutines/torture/alloc-04-overload-del-use-two-args.C
! e1bbc3834302e5826218b7a49e57e4df  gcc/testsuite/g++.dg/coroutines/torture/call-00-co-aw-arg.C
! e72e85d6a6baacb4b07285689083782c  gcc/testsuite/g++.dg/coroutines/torture/call-01-multiple-co-aw.C
! 907fb8427caa50260a776440e219ff4f  gcc/testsuite/g++.dg/coroutines/torture/call-02-temp-co-aw.C
! 890f9063fe42775525bc8871202662ae  gcc/testsuite/g++.dg/coroutines/torture/call-03-temp-ref-co-aw.C
  68d2c76a1adcba2f93696ac2b6e79e26  gcc/testsuite/g++.dg/coroutines/torture/class-00-co-ret.C
  8ca095e5728e7de6d69eaa482659be24  gcc/testsuite/g++.dg/coroutines/torture/class-01-co-ret-parm.C
  4a072d5861d5ea835ffd3f465df00eb1  gcc/testsuite/g++.dg/coroutines/torture/class-02-templ-parm.C
*************** d2d9fac5e6e193233d4251d26d327878  gcc/te
*** 12164,12184 ****
  67cdcc2d5eab8ffbe8e85f680eecb7f4  gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
  fc7782c76448e9269d4b939626588a26  gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
  f7cab143f0e4b49230dae85138c09969  gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
! c50af3ecc419778c1656ffff65f0468a  gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
! 490830223dba2cc7e11e8138e14773b3  gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
! a7eeb081e59de44c305bca1f25ee36b1  gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
! b5702050d573cd3541c4fd05b83e730e  gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
! f32a09a91b577e81db73e85a7dac095b  gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
! eab589d919ddb6869521fe2e116947dd  gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
! c5cd428a4bbc97e3e233e4231e419a57  gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
! 7cd07e15713570b8a5f3228ef4666940  gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
! 0ce5ebbbf9c5220389806b9b92309a3b  gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
! 88c523301764bb2e37a63571ee5103ae  gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
  f0ea2188a943ec2768bffeb066d53489  gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
! eded657584cc09daef6f6567a39c1452  gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
! b091ea3ad3513daa3be3eb336203ac35  gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
! b0b910a9390d3504c31088b464ff01ce  gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
! aca24433647bf0d163e506700db42eef  gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
  d2387597766ee660356c02649984e0dc  gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
  6bde7b59712d6af856262196fb9a2b52  gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
  c13f88b01f2852e4f1a6088a01c71cf3  gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
--- 13700,13720 ----
  67cdcc2d5eab8ffbe8e85f680eecb7f4  gcc/testsuite/g++.dg/coroutines/torture/class-05-lambda-capture-copy-local.C
  fc7782c76448e9269d4b939626588a26  gcc/testsuite/g++.dg/coroutines/torture/class-06-lambda-capture-ref.C
  f7cab143f0e4b49230dae85138c09969  gcc/testsuite/g++.dg/coroutines/torture/class-07-data-member.C
! 0b1d9c0e2dbbcbe98f7ff9214ff8ec7e  gcc/testsuite/g++.dg/coroutines/torture/co-await-00-trivial.C
! 11959a0520310f483e381108e47fe87b  gcc/testsuite/g++.dg/coroutines/torture/co-await-01-with-value.C
! 3adda00c8f3603975dd827f122193786  gcc/testsuite/g++.dg/coroutines/torture/co-await-02-xform.C
! 72a98b1ecfdc586657d8ed48e05324d1  gcc/testsuite/g++.dg/coroutines/torture/co-await-03-rhs-op.C
! 42f1b2179ee471f0e43091896e5070c9  gcc/testsuite/g++.dg/coroutines/torture/co-await-04-control-flow.C
! a97da348e884f216fa73bbe96b5a7079  gcc/testsuite/g++.dg/coroutines/torture/co-await-05-loop.C
! 488ab49f0e4a496e94a52d6fbbed2815  gcc/testsuite/g++.dg/coroutines/torture/co-await-06-ovl.C
! db96053eb5b16b3127ad41dc3a34e42f  gcc/testsuite/g++.dg/coroutines/torture/co-await-07-tmpl.C
! e8b90504ac1fe0eae6a35f69be69b7b0  gcc/testsuite/g++.dg/coroutines/torture/co-await-08-cascade.C
! 9f35d6bf73afb711d2f67501d4b52999  gcc/testsuite/g++.dg/coroutines/torture/co-await-09-pair.C
  f0ea2188a943ec2768bffeb066d53489  gcc/testsuite/g++.dg/coroutines/torture/co-await-10-template-fn-arg.C
! e9d857d7174da4b086df2e56b037e637  gcc/testsuite/g++.dg/coroutines/torture/co-await-11-forwarding.C
! 0c7b56aa11d4f80f5483568dfe267926  gcc/testsuite/g++.dg/coroutines/torture/co-await-12-operator-2.C
! 9572c419277d27a1eca8c3967cf51816  gcc/testsuite/g++.dg/coroutines/torture/co-await-13-return-ref.C
! f0cddaea8588469b4485436f28834f3e  gcc/testsuite/g++.dg/coroutines/torture/co-await-14-return-ref-to-auto.C
  d2387597766ee660356c02649984e0dc  gcc/testsuite/g++.dg/coroutines/torture/co-await-15-return-non-triv.C
  6bde7b59712d6af856262196fb9a2b52  gcc/testsuite/g++.dg/coroutines/torture/co-await-16-template-traits.C
  c13f88b01f2852e4f1a6088a01c71cf3  gcc/testsuite/g++.dg/coroutines/torture/co-await-17-capture-comp-ref.C
*************** ae63d74ff74d24f5617760e03388ac88  gcc/te
*** 12220,12225 ****
--- 13756,13762 ----
  9d1f555d6612dc78d2e5f1999fa1f2f7  gcc/testsuite/g++.dg/coroutines/torture/coro-torture.exp
  99dab3773a8e1eae30ae15c1cb6bb484  gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-0.C
  492261ab0a97b265a7926f128a913e51  gcc/testsuite/g++.dg/coroutines/torture/exceptions-test-01-n4849-a.C
+ 6c6dba9a908c581c8b205ba76a657348  gcc/testsuite/g++.dg/coroutines/torture/extern-c-coroutine.C
  9375f5455b11a5f84ff284d0742870fe  gcc/testsuite/g++.dg/coroutines/torture/func-params-00.C
  a934102f958bf0847dcc65b8b814bb06  gcc/testsuite/g++.dg/coroutines/torture/func-params-01.C
  d5b6e925db5e6ba7fa1659ba22bed06e  gcc/testsuite/g++.dg/coroutines/torture/func-params-02.C
*************** b980842cc9bcb2b9e860aa2e3af5dc8c  gcc/te
*** 12248,12256 ****
  34ccaec4926a79ee91dcb622b29fd437  gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
  880e7bddb449e36639d0b28849901bd7  gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
  eda65f9adf2b3b0f2d16abf6d3a3472a  gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
! 3f3837d96557bdac32ef086e05aeaedd  gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
  33c54ba08ef1e709e2fb67d90cc048b4  gcc/testsuite/g++.dg/coroutines/torture/pr92933.C
! f50995d33b63c7c1fdc5d79e68bd9a54  gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
  f15d0868b7388079e03b56a95cf11a64  gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
  b1b510867b818d76320b1b17e7d87962  gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
  bc8c0e4347c30987e423c33501ef5d0b  gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
--- 13785,13793 ----
  34ccaec4926a79ee91dcb622b29fd437  gcc/testsuite/g++.dg/coroutines/torture/local-var-04-hiding-nested-scopes.C
  880e7bddb449e36639d0b28849901bd7  gcc/testsuite/g++.dg/coroutines/torture/local-var-05-awaitable.C
  eda65f9adf2b3b0f2d16abf6d3a3472a  gcc/testsuite/g++.dg/coroutines/torture/local-var-06-structured-binding.C
! 3a086507b4173f7496d1581ef7af0f41  gcc/testsuite/g++.dg/coroutines/torture/mid-suspend-destruction-0.C
  33c54ba08ef1e709e2fb67d90cc048b4  gcc/testsuite/g++.dg/coroutines/torture/pr92933.C
! 308d14f00ca84e328c3f1e144675b59b  gcc/testsuite/g++.dg/coroutines/torture/pr95003.C
  f15d0868b7388079e03b56a95cf11a64  gcc/testsuite/g++.dg/coroutines/torture/pr95519-00-return_void.C
  b1b510867b818d76320b1b17e7d87962  gcc/testsuite/g++.dg/coroutines/torture/pr95519-01-initial-suspend.C
  bc8c0e4347c30987e423c33501ef5d0b  gcc/testsuite/g++.dg/coroutines/torture/pr95519-02-final_suspend.C
*************** eeb744d3368ba25e26be1112d9ca230c  gcc/te
*** 12271,12276 ****
--- 13808,13815 ----
  731959b0908b124d4eee4dab104d68bb  gcc/testsuite/g++.dg/cpp/c++98.C
  7e8a47b64bd4b7100fb7912bb8130ffa  gcc/testsuite/g++.dg/cpp/c++_cmd_1.C
  00dc832b75beaca735b4084d056fae83  gcc/testsuite/g++.dg/cpp/c++_cmd_1.h
+ 12fd1c77554f9cb58eb3af864b5a91b4  gcc/testsuite/g++.dg/cpp/delimited-escape-seq-1.C
+ c2644de4e523a3ce340a11a1240a0665  gcc/testsuite/g++.dg/cpp/delimited-escape-seq-2.C
  1cf46e6ce91a8ddaa768b5a2cecff8be  gcc/testsuite/g++.dg/cpp/elifdef-1.C
  55ade09c97b6c14f1e745916fdd8e1c7  gcc/testsuite/g++.dg/cpp/elifdef-2.C
  6a7cfe44863944df11dbbc4cc7affa72  gcc/testsuite/g++.dg/cpp/elifdef-3.C
*************** cd98bb75a2905b4efb0b0e28772e6089  gcc/te
*** 12279,12284 ****
--- 13818,13825 ----
  a02fdbd418bcf04f05b9c831f60efdff  gcc/testsuite/g++.dg/cpp/elifdef-6.C
  1494c84b56e510e0fb687cc28d257e80  gcc/testsuite/g++.dg/cpp/elifdef-7.C
  bb3c9b1e81779a43b584dae48604b8d1  gcc/testsuite/g++.dg/cpp/limits.C
+ 8562d590f29cecfa0e0dc6c51d34a6eb  gcc/testsuite/g++.dg/cpp/named-universal-char-escape-1.C
+ a17b4a7c45c8403b31af52f9108997ca  gcc/testsuite/g++.dg/cpp/named-universal-char-escape-2.C
  c41c3c60e8a193075ec6d307d58b6911  gcc/testsuite/g++.dg/cpp/paste1.C
  e9e3011043a9faa30c42b61fa3bdb8a8  gcc/testsuite/g++.dg/cpp/paste2.C
  5e10de393d1872d51958157aa6257743  gcc/testsuite/g++.dg/cpp/pedantic-errors.C
*************** aed5e9b084469df5f53338297df34ac5  gcc/te
*** 12308,12313 ****
--- 13849,13857 ----
  51d5f30d4e9c9d914f798d5d9fd7f0af  gcc/testsuite/g++.dg/cpp/ucnid-3.C
  df09112b080a4f413dd67072191ec1c6  gcc/testsuite/g++.dg/cpp/ucnid-4-utf8.C
  7a8d6ee38bbf6e99549056f57a4b5890  gcc/testsuite/g++.dg/cpp/utf16-pr41698-1.C
+ ba2e6aa282515e83442f31449865c8fa  gcc/testsuite/g++.dg/cpp/warning-1.C
+ afa6a0a8c3bd21d6f016cc9fd2a96704  gcc/testsuite/g++.dg/cpp/warning-2.C
+ abc0779ca1b84f59f57f10508d1c26ba  gcc/testsuite/g++.dg/cpp/warning-3.C
  388f26d66093d4cf51084fa41b5fbe6e  gcc/testsuite/g++.dg/cpp/weak.C
  81d80cdbba7e7386b9ae9e86a8d48685  gcc/testsuite/g++.dg/cpp0x/Wattributes1.C
  6360ff0b8118aea408899a225ba2bda2  gcc/testsuite/g++.dg/cpp0x/Wattributes2.C
*************** b128409123afa20f665fe2d5e291048c  gcc/te
*** 12326,12331 ****
--- 13870,13876 ----
  378c161f7f4fe5f6220dceedd8380af8  gcc/testsuite/g++.dg/cpp0x/Wnarrowing18.C
  e62a4dedf879dc2231d0301f8e3e4934  gcc/testsuite/g++.dg/cpp0x/Wnarrowing19.C
  24c57c9d07145952c5515888f1ebb983  gcc/testsuite/g++.dg/cpp0x/Wnarrowing2.C
+ 0ccf7e4424e95a86f4347e035c3cb729  gcc/testsuite/g++.dg/cpp0x/Wnarrowing20.C
  74bb2cd707774dcc79b45b939b21d2a8  gcc/testsuite/g++.dg/cpp0x/Wnarrowing3.C
  98f5997ac53fff61b85f99bfe358a506  gcc/testsuite/g++.dg/cpp0x/Wnarrowing4.C
  9f7e6ccafa0bff14072fa13cf9d8fe16  gcc/testsuite/g++.dg/cpp0x/Wnarrowing5.C
*************** f04afcba293f39f41dae5a3691c168f4  gcc/te
*** 12334,12353 ****
  e77445122d16af02724b7b51c72087ca  gcc/testsuite/g++.dg/cpp0x/Wnarrowing8.C
  1ef1874e50512b4092abfc3d9485970d  gcc/testsuite/g++.dg/cpp0x/Wnarrowing9.C
  909d9e8189baf45d0b2efa8c8cd07e68  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move1.C
  6cf1c92d7ad9ab97ae87cdd7cbf686d8  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
! c3c8c909d55a85cee2df782b68266997  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move3.C
  9ef1f4b39f40753d0d1a24c7162f8a44  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move4.C
  aba8379d171d780d658e34f3d05b5e75  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move5.C
  debcb24c519f8e6b34f023322cfa298d  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move6.C
! ea96308ea8a97f5c0656090eccbc9858  gcc/testsuite/g++.dg/cpp0x/Wredundant-move1.C
! 9152f7fa178c6fded32bb7225ef99aed  gcc/testsuite/g++.dg/cpp0x/Wredundant-move2.C
  92e755ee27a0ccd4a822b92823809fd7  gcc/testsuite/g++.dg/cpp0x/Wredundant-move3.C
  f484fdd6adea6e43439c02b25b4c9558  gcc/testsuite/g++.dg/cpp0x/Wredundant-move4.C
  afacfc74d8c3f71a144b740a8aa04f04  gcc/testsuite/g++.dg/cpp0x/Wredundant-move5.C
  3f9c37b20518d9a4f69786b1e555218f  gcc/testsuite/g++.dg/cpp0x/Wredundant-move6.C
! 92920804c1723ba0b6e6aea95fbf80c4  gcc/testsuite/g++.dg/cpp0x/Wredundant-move7.C
  31bdf6319be7f7f87074649fe3f2c238  gcc/testsuite/g++.dg/cpp0x/Wredundant-move8.C
! d395cfb34ebd994ce1bbfbc41826b8a1  gcc/testsuite/g++.dg/cpp0x/Wredundant-move9.C
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
  c28cdde196a3db6b64575b3ff628c1c2  gcc/testsuite/g++.dg/cpp0x/Wunused-value1.C
  55786f3aa688ed102bd0cfac7a240204  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
--- 13879,13906 ----
  e77445122d16af02724b7b51c72087ca  gcc/testsuite/g++.dg/cpp0x/Wnarrowing8.C
  1ef1874e50512b4092abfc3d9485970d  gcc/testsuite/g++.dg/cpp0x/Wnarrowing9.C
  909d9e8189baf45d0b2efa8c8cd07e68  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move1.C
+ be6c655a10f1cf541a9d740b5b63fa2f  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move10.C
  6cf1c92d7ad9ab97ae87cdd7cbf686d8  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move2.C
! 688f96872cdd2d1efca1e3bf68766394  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move3.C
  9ef1f4b39f40753d0d1a24c7162f8a44  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move4.C
  aba8379d171d780d658e34f3d05b5e75  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move5.C
  debcb24c519f8e6b34f023322cfa298d  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move6.C
! f1b1c4123077a6d5045d94e136276647  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move7.C
! 29afbce80213e4f4d2a1eb012a2616b7  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move8.C
! 53398d87f8bd0bc1c32248205b69a3ba  gcc/testsuite/g++.dg/cpp0x/Wpessimizing-move9.C
! d158aa42f695ce8e0246b44c294b4505  gcc/testsuite/g++.dg/cpp0x/Wredundant-move1.C
! b451e8fe0a09fa0106b95869136ee694  gcc/testsuite/g++.dg/cpp0x/Wredundant-move10.C
! f39513314ed3e97178e6e202bc90ef12  gcc/testsuite/g++.dg/cpp0x/Wredundant-move11.C
! 51402b6f11e12fc372768ca5ea28877b  gcc/testsuite/g++.dg/cpp0x/Wredundant-move12.C
! ad796f143d2eb04d1fd2813a9d56f0bf  gcc/testsuite/g++.dg/cpp0x/Wredundant-move13.C
! 72254576fb0a474214f9adbc765dd934  gcc/testsuite/g++.dg/cpp0x/Wredundant-move2.C
  92e755ee27a0ccd4a822b92823809fd7  gcc/testsuite/g++.dg/cpp0x/Wredundant-move3.C
  f484fdd6adea6e43439c02b25b4c9558  gcc/testsuite/g++.dg/cpp0x/Wredundant-move4.C
  afacfc74d8c3f71a144b740a8aa04f04  gcc/testsuite/g++.dg/cpp0x/Wredundant-move5.C
  3f9c37b20518d9a4f69786b1e555218f  gcc/testsuite/g++.dg/cpp0x/Wredundant-move6.C
! 3b0205dea32c70cf6f93b541d2134314  gcc/testsuite/g++.dg/cpp0x/Wredundant-move7.C
  31bdf6319be7f7f87074649fe3f2c238  gcc/testsuite/g++.dg/cpp0x/Wredundant-move8.C
! 02d4aa5d4def4027ab327025b66aefbe  gcc/testsuite/g++.dg/cpp0x/Wredundant-move9.C
  6ae3451e0c7b222e73c985a0c76a4253  gcc/testsuite/g++.dg/cpp0x/Wunused-parm.C
  c28cdde196a3db6b64575b3ff628c1c2  gcc/testsuite/g++.dg/cpp0x/Wunused-value1.C
  55786f3aa688ed102bd0cfac7a240204  gcc/testsuite/g++.dg/cpp0x/Wunused-variable-1.C
*************** ba390f0baffc64985277221eab5182a0  gcc/te
*** 12365,12371 ****
  a44d4d7f2548e1ac2ad530c6584d206d  gcc/testsuite/g++.dg/cpp0x/aggr2.C
  35eb2b0d89dd868b4665cb96608dd353  gcc/testsuite/g++.dg/cpp0x/aggr3.C
  14de020f6682d8f3c1354ba263101451  gcc/testsuite/g++.dg/cpp0x/alias-decl-0.C
! 11e072a762e1cb207c056d71c7d4a65e  gcc/testsuite/g++.dg/cpp0x/alias-decl-1.C
  b2dede644377fa2e0378d6263c6b4d8b  gcc/testsuite/g++.dg/cpp0x/alias-decl-10.C
  88f20d33fbeb7f551c0948e8ade9c2df  gcc/testsuite/g++.dg/cpp0x/alias-decl-11.C
  69442b8b23646bef7d3b25b4432cf379  gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C
--- 13918,13924 ----
  a44d4d7f2548e1ac2ad530c6584d206d  gcc/testsuite/g++.dg/cpp0x/aggr2.C
  35eb2b0d89dd868b4665cb96608dd353  gcc/testsuite/g++.dg/cpp0x/aggr3.C
  14de020f6682d8f3c1354ba263101451  gcc/testsuite/g++.dg/cpp0x/alias-decl-0.C
! 9de42bfc8a3b65ade884a9dbd229e992  gcc/testsuite/g++.dg/cpp0x/alias-decl-1.C
  b2dede644377fa2e0378d6263c6b4d8b  gcc/testsuite/g++.dg/cpp0x/alias-decl-10.C
  88f20d33fbeb7f551c0948e8ade9c2df  gcc/testsuite/g++.dg/cpp0x/alias-decl-11.C
  69442b8b23646bef7d3b25b4432cf379  gcc/testsuite/g++.dg/cpp0x/alias-decl-12.C
*************** ff3cdd35e9b74954a4247257ac643335  gcc/te
*** 12420,12426 ****
  6cc1a240ae50cb9459b3a05857a7509e  gcc/testsuite/g++.dg/cpp0x/alias-decl-56.C
  8acc04408af28c7a33d40588b54d6bed  gcc/testsuite/g++.dg/cpp0x/alias-decl-57.C
  31c6c9500508e2e44156672d59d542e0  gcc/testsuite/g++.dg/cpp0x/alias-decl-58.C
! 445849a996785ae535a6c30f3b9a98fa  gcc/testsuite/g++.dg/cpp0x/alias-decl-59.C
  a16b0e12dce894e9bc097e3fbad8787d  gcc/testsuite/g++.dg/cpp0x/alias-decl-6.C
  d479704ab457bb0aec982b228a8df0c7  gcc/testsuite/g++.dg/cpp0x/alias-decl-60.C
  d1f72aa66557b83fa8a81de2cdda78ee  gcc/testsuite/g++.dg/cpp0x/alias-decl-61.C
--- 13973,13979 ----
  6cc1a240ae50cb9459b3a05857a7509e  gcc/testsuite/g++.dg/cpp0x/alias-decl-56.C
  8acc04408af28c7a33d40588b54d6bed  gcc/testsuite/g++.dg/cpp0x/alias-decl-57.C
  31c6c9500508e2e44156672d59d542e0  gcc/testsuite/g++.dg/cpp0x/alias-decl-58.C
! 24682d85b05ef65dee8bfe9c5151819b  gcc/testsuite/g++.dg/cpp0x/alias-decl-59.C
  a16b0e12dce894e9bc097e3fbad8787d  gcc/testsuite/g++.dg/cpp0x/alias-decl-6.C
  d479704ab457bb0aec982b228a8df0c7  gcc/testsuite/g++.dg/cpp0x/alias-decl-60.C
  d1f72aa66557b83fa8a81de2cdda78ee  gcc/testsuite/g++.dg/cpp0x/alias-decl-61.C
*************** b363cc23eaa94cfb4d642e0e990d1ff1  gcc/te
*** 12442,12448 ****
  77aa48fcd9f9b9ffab08fa7ebc5d52e2  gcc/testsuite/g++.dg/cpp0x/alias-decl-8.C
  0fea677a266ad89646463d41e4df0566  gcc/testsuite/g++.dg/cpp0x/alias-decl-80296.C
  2b0ac9ee7e77902ee76b92dfbfcc37b3  gcc/testsuite/g++.dg/cpp0x/alias-decl-9.C
- c194f48c0c5ddd81f4151d3104e6eaa4  gcc/testsuite/g++.dg/cpp0x/alias-decl-debug-0.C
  0c857f35d307877fbdc35abb07bb117c  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286.C
  50768d1b6db3a8fc26c4cfb6c5811b35  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C
  ef369c9d8dbd4b3ba5c764f92fc53a46  gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286b.C
--- 13995,14000 ----
*************** f6ed96119608d817c8a36a47de91e2bc  gcc/te
*** 12492,12497 ****
--- 14044,14050 ----
  5d890faf4a821ee4240f531a35dde130  gcc/testsuite/g++.dg/cpp0x/alignof8.C
  e679c3ff5560017984a9332e3cd8e485  gcc/testsuite/g++.dg/cpp0x/anon-union1.C
  7b2ba02a276836f1d780b2c828e8dca5  gcc/testsuite/g++.dg/cpp0x/anon-union2.C
+ 0648a877f5d551cf01873bb0a34a86f8  gcc/testsuite/g++.dg/cpp0x/attr-carries_dependency1.C
  2dd5002330171bc4d37d9ba0cc381c6a  gcc/testsuite/g++.dg/cpp0x/attrib54.C
  85e5c6b94c0cc9e87d6a51765c8fc4a4  gcc/testsuite/g++.dg/cpp0x/attrib55.C
  1430719012d4ec7cb7d2aade1a23ef32  gcc/testsuite/g++.dg/cpp0x/attributes-enum-1.C
*************** a7a713ea7071d14dc175b795f443d1b0  gcc/te
*** 12552,12557 ****
--- 14105,14111 ----
  d7e67c489de3f4699b1cb6ee43c6142c  gcc/testsuite/g++.dg/cpp0x/auto53.C
  f6b00042d67759a33bbf3becf2621e18  gcc/testsuite/g++.dg/cpp0x/auto54.C
  c927462765eef1949fbb945e0a8b8a4a  gcc/testsuite/g++.dg/cpp0x/auto55.C
+ 73e7dbc6a42c3b40a0b909358e12da0d  gcc/testsuite/g++.dg/cpp0x/auto56.C
  dde34d0c42712dec10d9a53ea21565d3  gcc/testsuite/g++.dg/cpp0x/auto57.C
  7051782825f2720fd5eee3be6f2027e9  gcc/testsuite/g++.dg/cpp0x/auto7.C
  13b23623fc6ec1dc0109c253f332de7c  gcc/testsuite/g++.dg/cpp0x/auto9.C
*************** ae50dcd26c1db9c21ab23c7c6fd3e728  gcc/te
*** 12587,12592 ****
--- 14141,14147 ----
  96317097d82b7260177af2929bb7e881  gcc/testsuite/g++.dg/cpp0x/constexpr-52282-1.C
  d55311e37ed0d20d2c44697761f33eca  gcc/testsuite/g++.dg/cpp0x/constexpr-52672.C
  6bd755fcbf25a02e31fe929122a04294  gcc/testsuite/g++.dg/cpp0x/constexpr-52830.C
+ 58e4fee8affd17b660a13ee25ec2467d  gcc/testsuite/g++.dg/cpp0x/constexpr-52830a.C
  ed879f2262461536a8a87a38152015b7  gcc/testsuite/g++.dg/cpp0x/constexpr-52892-1.C
  3ae1b0a16fe1c7d2133dc2faf68bfc01  gcc/testsuite/g++.dg/cpp0x/constexpr-52892-2.C
  ecc3b96f5ee5f153f34313ef65b34ef6  gcc/testsuite/g++.dg/cpp0x/constexpr-53094-1.C
*************** aa41699e56a27b02170cc57be10b3a5e  gcc/te
*** 12629,12635 ****
  82c50bc8422508fb44939870cc6c206e  gcc/testsuite/g++.dg/cpp0x/constexpr-71537.C
  34638f51d99af855474a3feb1f02e5d7  gcc/testsuite/g++.dg/cpp0x/constexpr-71828.C
  3232d16dd5c0ff4902f3535a7b6fd04e  gcc/testsuite/g++.dg/cpp0x/constexpr-71988.C
! 48129e87fa4cb0b0f9a001145609bdb5  gcc/testsuite/g++.dg/cpp0x/constexpr-77482.C
  8c29c4c2725a7a5c3c2a973d663d5315  gcc/testsuite/g++.dg/cpp0x/constexpr-77771.C
  8a9f91865ab6d92e00b1d78f32c26682  gcc/testsuite/g++.dg/cpp0x/constexpr-79822.C
  1e7c8ba8ab02820df5254f7b652cafd5  gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
--- 14184,14190 ----
  82c50bc8422508fb44939870cc6c206e  gcc/testsuite/g++.dg/cpp0x/constexpr-71537.C
  34638f51d99af855474a3feb1f02e5d7  gcc/testsuite/g++.dg/cpp0x/constexpr-71828.C
  3232d16dd5c0ff4902f3535a7b6fd04e  gcc/testsuite/g++.dg/cpp0x/constexpr-71988.C
! 7a254b7f189ea361d1834afed4a49a5c  gcc/testsuite/g++.dg/cpp0x/constexpr-77482.C
  8c29c4c2725a7a5c3c2a973d663d5315  gcc/testsuite/g++.dg/cpp0x/constexpr-77771.C
  8a9f91865ab6d92e00b1d78f32c26682  gcc/testsuite/g++.dg/cpp0x/constexpr-79822.C
  1e7c8ba8ab02820df5254f7b652cafd5  gcc/testsuite/g++.dg/cpp0x/constexpr-84449.C
*************** bc7ccf4287a38e8f82df800db6150879  gcc/te
*** 12650,12655 ****
--- 14205,14211 ----
  d08d3bdb37be475451a39fd6f72486e9  gcc/testsuite/g++.dg/cpp0x/constexpr-99.C
  3ccc1912e7827aae6b55936a3bf3bb24  gcc/testsuite/g++.dg/cpp0x/constexpr-__func__.C
  9c47c9e14b7675d6bdf8bb573c3b0196  gcc/testsuite/g++.dg/cpp0x/constexpr-__func__2.C
+ 72ebf3b621b245de118006fff7ab480b  gcc/testsuite/g++.dg/cpp0x/constexpr-__func__3.C
  7d8afd8896f969ba303cb470f166dc1a  gcc/testsuite/g++.dg/cpp0x/constexpr-access.C
  b2677ed5d88c259b9b0fac3db40c4180  gcc/testsuite/g++.dg/cpp0x/constexpr-aggr1.C
  94e9667e9cd913c040a07e72a741ed99  gcc/testsuite/g++.dg/cpp0x/constexpr-aggr2.C
*************** dfc43f4a6c6619f77e2370dc3ac7c5bd  gcc/te
*** 12747,12753 ****
  6399b5c1c05c94cc6eab737005cda079  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor17.C
  4d403c04d2b03456f9744d92ca3358c7  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor18.C
  71c411ba85123d4dd51ea4cce3467a2d  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor19.C
! b53901b01ead6799c051d88913ebc375  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor2.C
  50c4fa620f7ec653b83dbc313350ac22  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor20.C
  75570067f1748bbf63ecff0edf089f3f  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
  6149d79aef3c5dc04bce76d97b8072e3  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor3.C
--- 14303,14309 ----
  6399b5c1c05c94cc6eab737005cda079  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor17.C
  4d403c04d2b03456f9744d92ca3358c7  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor18.C
  71c411ba85123d4dd51ea4cce3467a2d  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor19.C
! df7772e8bce1917bb8d1e66fcbe1ce31  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor2.C
  50c4fa620f7ec653b83dbc313350ac22  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor20.C
  75570067f1748bbf63ecff0edf089f3f  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor21.C
  6149d79aef3c5dc04bce76d97b8072e3  gcc/testsuite/g++.dg/cpp0x/constexpr-ctor3.C
*************** a259b7f32c3d335c69d177ab19112031  gcc/te
*** 12764,12772 ****
  c7765e8d6215ac706fbd0fd3b189155d  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype2.C
  515fa60e9a8d9e1a6fa8dde14c47e958  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype3.C
  a4cb8ab88b885adc2062830771d64846  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype4.C
  2aca1fb114aea81a9c27b98c5caa23bc  gcc/testsuite/g++.dg/cpp0x/constexpr-defarg.C
  785c6f90cb5bc3b2af7339874bf81e3c  gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C
! cff5ffbde8aa11968863d58f12230fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
  670301964142ce35b76536de5b9b09c4  gcc/testsuite/g++.dg/cpp0x/constexpr-default1.C
  b9f62d1adc6b6e0fe01886a17a69c102  gcc/testsuite/g++.dg/cpp0x/constexpr-delegating.C
  7931d487bd0cfaf955fae2246fa72de9  gcc/testsuite/g++.dg/cpp0x/constexpr-delegating2.C
--- 14320,14329 ----
  c7765e8d6215ac706fbd0fd3b189155d  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype2.C
  515fa60e9a8d9e1a6fa8dde14c47e958  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype3.C
  a4cb8ab88b885adc2062830771d64846  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype4.C
+ f660a61cb23e0a5480a52ae395b4df9c  gcc/testsuite/g++.dg/cpp0x/constexpr-decltype5.C
  2aca1fb114aea81a9c27b98c5caa23bc  gcc/testsuite/g++.dg/cpp0x/constexpr-defarg.C
  785c6f90cb5bc3b2af7339874bf81e3c  gcc/testsuite/g++.dg/cpp0x/constexpr-defarg2.C
! afa891048cfeea92bd9d1912c9fe2939  gcc/testsuite/g++.dg/cpp0x/constexpr-default-ctor.C
  670301964142ce35b76536de5b9b09c4  gcc/testsuite/g++.dg/cpp0x/constexpr-default1.C
  b9f62d1adc6b6e0fe01886a17a69c102  gcc/testsuite/g++.dg/cpp0x/constexpr-delegating.C
  7931d487bd0cfaf955fae2246fa72de9  gcc/testsuite/g++.dg/cpp0x/constexpr-delegating2.C
*************** f85801423624d5e4e418f9fe401034b6  gcc/te
*** 12776,12785 ****
  4f2e7c33f09e5b0c1d98c13b7f990e4a  gcc/testsuite/g++.dg/cpp0x/constexpr-deref.C
  a5ca183a9981a662b98c564cad9d2142  gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
  262bf0368b4b07acdfe79a5a0de00e78  gcc/testsuite/g++.dg/cpp0x/constexpr-diag2.C
! 359dd47653eb9e24f5fcacce2f78e3a0  gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C
  f40741605855158bc8dc6da1beb0acec  gcc/testsuite/g++.dg/cpp0x/constexpr-diag4.C
  cdcf1abb99ff7db2a6de02d4da860839  gcc/testsuite/g++.dg/cpp0x/constexpr-diag5.C
  3b6a46c1a5699fddb411eb1188a5afbc  gcc/testsuite/g++.dg/cpp0x/constexpr-eh-spec.C
  df8026b0f85dbf1a32a645a96eaee562  gcc/testsuite/g++.dg/cpp0x/constexpr-ellipsis.C
  3c17c7f8cedb94085b94ea1b911036e0  gcc/testsuite/g++.dg/cpp0x/constexpr-ellipsis2.C
  bd4892119061dcc2091023dfa80ffb9f  gcc/testsuite/g++.dg/cpp0x/constexpr-empty.C
--- 14333,14343 ----
  4f2e7c33f09e5b0c1d98c13b7f990e4a  gcc/testsuite/g++.dg/cpp0x/constexpr-deref.C
  a5ca183a9981a662b98c564cad9d2142  gcc/testsuite/g++.dg/cpp0x/constexpr-diag1.C
  262bf0368b4b07acdfe79a5a0de00e78  gcc/testsuite/g++.dg/cpp0x/constexpr-diag2.C
! 0536946484c7ffbd4b42e970c7950370  gcc/testsuite/g++.dg/cpp0x/constexpr-diag3.C
  f40741605855158bc8dc6da1beb0acec  gcc/testsuite/g++.dg/cpp0x/constexpr-diag4.C
  cdcf1abb99ff7db2a6de02d4da860839  gcc/testsuite/g++.dg/cpp0x/constexpr-diag5.C
  3b6a46c1a5699fddb411eb1188a5afbc  gcc/testsuite/g++.dg/cpp0x/constexpr-eh-spec.C
+ 5079a535251edeb3910b258a36413e73  gcc/testsuite/g++.dg/cpp0x/constexpr-elision1.C
  df8026b0f85dbf1a32a645a96eaee562  gcc/testsuite/g++.dg/cpp0x/constexpr-ellipsis.C
  3c17c7f8cedb94085b94ea1b911036e0  gcc/testsuite/g++.dg/cpp0x/constexpr-ellipsis2.C
  bd4892119061dcc2091023dfa80ffb9f  gcc/testsuite/g++.dg/cpp0x/constexpr-empty.C
*************** cf5dbf6e27520dc069362029f5cb0540  gcc/te
*** 12800,12806 ****
  0747afdc6137d0b7079cb129c5f34cd6  gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C
  3775b8d3a8d0d114191c1e741ebedbf9  gcc/testsuite/g++.dg/cpp0x/constexpr-empty8.C
  0639a526e3e93a7d7ddd53722d0d65a4  gcc/testsuite/g++.dg/cpp0x/constexpr-empty9.C
! af9e5b5e3be0951644251f1530904097  gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
  4e6fff7f5e83663f75c94efbf299525b  gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
  c42ce017f72e0ac9bc977500bc2d096c  gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
--- 14358,14364 ----
  0747afdc6137d0b7079cb129c5f34cd6  gcc/testsuite/g++.dg/cpp0x/constexpr-empty7.C
  3775b8d3a8d0d114191c1e741ebedbf9  gcc/testsuite/g++.dg/cpp0x/constexpr-empty8.C
  0639a526e3e93a7d7ddd53722d0d65a4  gcc/testsuite/g++.dg/cpp0x/constexpr-empty9.C
! de31aeecff5f54f6a1e2a6e6e8096298  gcc/testsuite/g++.dg/cpp0x/constexpr-ex1.C
  4e6fff7f5e83663f75c94efbf299525b  gcc/testsuite/g++.dg/cpp0x/constexpr-ex2.C
  c42ce017f72e0ac9bc977500bc2d096c  gcc/testsuite/g++.dg/cpp0x/constexpr-ex3.C
  ce75146a9a51521a3b4ff82cc14225c3  gcc/testsuite/g++.dg/cpp0x/constexpr-ex4.C
*************** aa1967267d5d21b22c4d54dfa617fcfc  gcc/te
*** 12813,12824 ****
  54d13632b3b2de9c55a44e7f11be5f5f  gcc/testsuite/g++.dg/cpp0x/constexpr-fp-except1.C
  575c4150d2d4e2ad3c10f32ecfbb8566  gcc/testsuite/g++.dg/cpp0x/constexpr-friend-2.C
  059916cbb6f4b35f06a970eef2a60fc9  gcc/testsuite/g++.dg/cpp0x/constexpr-friend-3.C
! 8f8662a4c1ee1c3b08d1ce3b309a0cdc  gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C
  b8767312f53e8514f3313a50a2077696  gcc/testsuite/g++.dg/cpp0x/constexpr-function1.C
  69a370499d9591ab41ed1338c1e335ff  gcc/testsuite/g++.dg/cpp0x/constexpr-function2.C
  9a0e6faefe14993813350141fd5d9051  gcc/testsuite/g++.dg/cpp0x/constexpr-function3.C
  65cf5eaf4d83094dd072a10754a923eb  gcc/testsuite/g++.dg/cpp0x/constexpr-fwctor1.C
! 9decac0db7abfb37da24dcb935f9a6a0  gcc/testsuite/g++.dg/cpp0x/constexpr-generated1.C
  5a491076154e43d839d4cb6d72a7f7c1  gcc/testsuite/g++.dg/cpp0x/constexpr-ice.C
  13d038d531b5d75fdad3cae33cf7ca08  gcc/testsuite/g++.dg/cpp0x/constexpr-ice10.C
  6fb859413d652871f2a4863877abcab0  gcc/testsuite/g++.dg/cpp0x/constexpr-ice11.C
--- 14371,14382 ----
  54d13632b3b2de9c55a44e7f11be5f5f  gcc/testsuite/g++.dg/cpp0x/constexpr-fp-except1.C
  575c4150d2d4e2ad3c10f32ecfbb8566  gcc/testsuite/g++.dg/cpp0x/constexpr-friend-2.C
  059916cbb6f4b35f06a970eef2a60fc9  gcc/testsuite/g++.dg/cpp0x/constexpr-friend-3.C
! 9fff5005bc87b2122162fbbd5c88e926  gcc/testsuite/g++.dg/cpp0x/constexpr-friend.C
  b8767312f53e8514f3313a50a2077696  gcc/testsuite/g++.dg/cpp0x/constexpr-function1.C
  69a370499d9591ab41ed1338c1e335ff  gcc/testsuite/g++.dg/cpp0x/constexpr-function2.C
  9a0e6faefe14993813350141fd5d9051  gcc/testsuite/g++.dg/cpp0x/constexpr-function3.C
  65cf5eaf4d83094dd072a10754a923eb  gcc/testsuite/g++.dg/cpp0x/constexpr-fwctor1.C
! b862494c2e887a48f868e4cba401545a  gcc/testsuite/g++.dg/cpp0x/constexpr-generated1.C
  5a491076154e43d839d4cb6d72a7f7c1  gcc/testsuite/g++.dg/cpp0x/constexpr-ice.C
  13d038d531b5d75fdad3cae33cf7ca08  gcc/testsuite/g++.dg/cpp0x/constexpr-ice10.C
  6fb859413d652871f2a4863877abcab0  gcc/testsuite/g++.dg/cpp0x/constexpr-ice11.C
*************** b9f6048a90a69c192d74f1909302134b  gcc/te
*** 12834,12841 ****
  445bc8616121c0024196e496ceb530a8  gcc/testsuite/g++.dg/cpp0x/constexpr-ice20.C
  8338efcd83a2b6552bc4ad1d47c18171  gcc/testsuite/g++.dg/cpp0x/constexpr-ice3.C
  a2444cbecc90b8c642eeb0fb89f00654  gcc/testsuite/g++.dg/cpp0x/constexpr-ice4.C
! c41f1725b48f2e3e21611244c4c6208e  gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C
! 3d70f2796d289fb3feeb427d6b1754c5  gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
  996613e01ba0152564096ee0dd625dd7  gcc/testsuite/g++.dg/cpp0x/constexpr-ice7.C
  2720d2f3cb78afd7d5dc73bc55faced2  gcc/testsuite/g++.dg/cpp0x/constexpr-ice8.C
  a493c011ce3849fcada47c0a411641cf  gcc/testsuite/g++.dg/cpp0x/constexpr-ice9.C
--- 14392,14399 ----
  445bc8616121c0024196e496ceb530a8  gcc/testsuite/g++.dg/cpp0x/constexpr-ice20.C
  8338efcd83a2b6552bc4ad1d47c18171  gcc/testsuite/g++.dg/cpp0x/constexpr-ice3.C
  a2444cbecc90b8c642eeb0fb89f00654  gcc/testsuite/g++.dg/cpp0x/constexpr-ice4.C
! db4c14cc7fdca18c19d67657bdddb5d7  gcc/testsuite/g++.dg/cpp0x/constexpr-ice5.C
! 72451410d06ce8fa3d0a194cc350261e  gcc/testsuite/g++.dg/cpp0x/constexpr-ice6.C
  996613e01ba0152564096ee0dd625dd7  gcc/testsuite/g++.dg/cpp0x/constexpr-ice7.C
  2720d2f3cb78afd7d5dc73bc55faced2  gcc/testsuite/g++.dg/cpp0x/constexpr-ice8.C
  a493c011ce3849fcada47c0a411641cf  gcc/testsuite/g++.dg/cpp0x/constexpr-ice9.C
*************** f9b635cca60e39e92118ea02065b9619  gcc/te
*** 12864,12875 ****
  f288c9405b4d691b91ef3844e3b9dd08  gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
  795a9ff23653541832d521a034128e3d  gcc/testsuite/g++.dg/cpp0x/constexpr-memchr.C
! f017215ed1e9a0accaca9212f861d9f2  gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
  211c953e7e3e1153239acc0f3fee4960  gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C
  bf6f271556a8b151987d288c88c9b77d  gcc/testsuite/g++.dg/cpp0x/constexpr-mutable1.C
  123ce7f549210e41438da89fdee5c4f9  gcc/testsuite/g++.dg/cpp0x/constexpr-mutable2.C
  64cb73f78ba207f5415530836a27af3e  gcc/testsuite/g++.dg/cpp0x/constexpr-neg1.C
! e02963b07b48f6e88a5b755a616555ce  gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C
  4c036c92f09357e434d2815847248b49  gcc/testsuite/g++.dg/cpp0x/constexpr-neg3.C
  e5edb7904b37f34e9b7834b8b913ff6c  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept.C
  48555ea134a5bce8f9bbcab609ea86ff  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept2.C
--- 14422,14434 ----
  f288c9405b4d691b91ef3844e3b9dd08  gcc/testsuite/g++.dg/cpp0x/constexpr-list2.C
  25358bf087f99e99f8fbfc8bcd9f01be  gcc/testsuite/g++.dg/cpp0x/constexpr-main.C
  795a9ff23653541832d521a034128e3d  gcc/testsuite/g++.dg/cpp0x/constexpr-memchr.C
! e12fcfd9cb76c0919cb207d29ff19bb1  gcc/testsuite/g++.dg/cpp0x/constexpr-memfn1.C
  211c953e7e3e1153239acc0f3fee4960  gcc/testsuite/g++.dg/cpp0x/constexpr-missing.C
  bf6f271556a8b151987d288c88c9b77d  gcc/testsuite/g++.dg/cpp0x/constexpr-mutable1.C
  123ce7f549210e41438da89fdee5c4f9  gcc/testsuite/g++.dg/cpp0x/constexpr-mutable2.C
+ e275658d57e6aa3ab659505240aee7d6  gcc/testsuite/g++.dg/cpp0x/constexpr-mutable3.C
  64cb73f78ba207f5415530836a27af3e  gcc/testsuite/g++.dg/cpp0x/constexpr-neg1.C
! 6d0a60db7e57025a2e27dfce71b6df0a  gcc/testsuite/g++.dg/cpp0x/constexpr-neg2.C
  4c036c92f09357e434d2815847248b49  gcc/testsuite/g++.dg/cpp0x/constexpr-neg3.C
  e5edb7904b37f34e9b7834b8b913ff6c  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept.C
  48555ea134a5bce8f9bbcab609ea86ff  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept2.C
*************** d1abe20c022e04bea9a779e8c64a213a  gcc/te
*** 12879,12891 ****
  b00aa1d604c54fb26fa3692e40dd73cf  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept6.C
  886e5cb86674ee37e869f08fd2b2878b  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept7.C
  9f43be8f7e8b1235935ac173ca4e70fb  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept8.C
! 4dec992762a16ac945ed3fd43b28a340  gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg.C
  d1ec0d16df219b4574614b6f4fa3b9b6  gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg2.C
  0a75560f29cb0998e87af2e6941bea4d  gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C
  7984f830cb12240213de4cb699fc0fad  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit.C
  ddcd4dc55809dc226c321025c894f2b0  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit2.C
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
  2b6a53b16231810c0a21185dce583796  gcc/testsuite/g++.dg/cpp0x/constexpr-nsdmi1.C
  990beb043ae4d800be378b30e8be4884  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
  7edfd1f97b60d8d22edb48040aab65ff  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
--- 14438,14452 ----
  b00aa1d604c54fb26fa3692e40dd73cf  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept6.C
  886e5cb86674ee37e869f08fd2b2878b  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept7.C
  9f43be8f7e8b1235935ac173ca4e70fb  gcc/testsuite/g++.dg/cpp0x/constexpr-noexcept8.C
! 3d317fcee84985815343c3174ff24501  gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg.C
  d1ec0d16df219b4574614b6f4fa3b9b6  gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg2.C
  0a75560f29cb0998e87af2e6941bea4d  gcc/testsuite/g++.dg/cpp0x/constexpr-non-const-arg3.C
  7984f830cb12240213de4cb699fc0fad  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit.C
  ddcd4dc55809dc226c321025c894f2b0  gcc/testsuite/g++.dg/cpp0x/constexpr-nonlit2.C
  e30db9bfd86140e4533c65e96fcc3879  gcc/testsuite/g++.dg/cpp0x/constexpr-nonstatic.C
  2b6a53b16231810c0a21185dce583796  gcc/testsuite/g++.dg/cpp0x/constexpr-nsdmi1.C
+ d3733d3842be9bb1b1c6c2037b318baa  gcc/testsuite/g++.dg/cpp0x/constexpr-nsdmi2.C
+ 5f3fac9ee3cc1ac0d41c5de0b085aa7e  gcc/testsuite/g++.dg/cpp0x/constexpr-nsdmi3.C
  990beb043ae4d800be378b30e8be4884  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-1.C
  7edfd1f97b60d8d22edb48040aab65ff  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr-2.C
  d4c1a5cc0803346fbc25f7a4d5748fd8  gcc/testsuite/g++.dg/cpp0x/constexpr-nullptr.C
*************** a5ce11f6f7a1de2ab9382765eaae19a9  gcc/te
*** 12899,12904 ****
--- 14460,14466 ----
  9b22329501cdc0c04eb177944b0b9482  gcc/testsuite/g++.dg/cpp0x/constexpr-pedantic.C
  21cafe90c117f963b0c4d2102a2109a0  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf1.C
  22f1652453d581ac1aa114c7e107eb73  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf2.C
+ 35b3637981f7a87405df79bbf34a383f  gcc/testsuite/g++.dg/cpp0x/constexpr-pmf3.C
  71bf544adf239f884a43b6d72e78604e  gcc/testsuite/g++.dg/cpp0x/constexpr-pos1.C
  e29b90d7c0ad7662446a6055addb6315  gcc/testsuite/g++.dg/cpp0x/constexpr-potential1.C
  a82ef0f27014a7256099b10bb3cb2b1a  gcc/testsuite/g++.dg/cpp0x/constexpr-ptrcomp1.C
*************** db629678a3f266682c3a566dd37c8b81  gcc/te
*** 12928,12934 ****
  27b41cf8f79c4f34a66f4b0ddabd4a58  gcc/testsuite/g++.dg/cpp0x/constexpr-ref7.C
  88d7941c296f4e995a894a2cebceb674  gcc/testsuite/g++.dg/cpp0x/constexpr-ref8.C
  99d2ac51d143edf6ad6147fb059396f4  gcc/testsuite/g++.dg/cpp0x/constexpr-ref9.C
! 7c740c2600da22d8ec93e0d98e4d6ca6  gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
  2837e188d6c2796de22556bf7f21a88d  gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret2.C
  c5fc1b06031517750a628c7785e37445  gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C
  0243ed8d6dc6cc84334b7250ce7437cc  gcc/testsuite/g++.dg/cpp0x/constexpr-sassert.C
--- 14490,14496 ----
  27b41cf8f79c4f34a66f4b0ddabd4a58  gcc/testsuite/g++.dg/cpp0x/constexpr-ref7.C
  88d7941c296f4e995a894a2cebceb674  gcc/testsuite/g++.dg/cpp0x/constexpr-ref8.C
  99d2ac51d143edf6ad6147fb059396f4  gcc/testsuite/g++.dg/cpp0x/constexpr-ref9.C
! e6b24a1fa37be1dafc5ee591f257fc1a  gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret1.C
  2837e188d6c2796de22556bf7f21a88d  gcc/testsuite/g++.dg/cpp0x/constexpr-reinterpret2.C
  c5fc1b06031517750a628c7785e37445  gcc/testsuite/g++.dg/cpp0x/constexpr-rom.C
  0243ed8d6dc6cc84334b7250ce7437cc  gcc/testsuite/g++.dg/cpp0x/constexpr-sassert.C
*************** ab2ec53e6f43a87c7a2ce0dc95e5e40e  gcc/te
*** 13165,13171 ****
  fe14766ad327b4eaee90f7608f477476  gcc/testsuite/g++.dg/cpp0x/defaulted27.C
  98f9bcbcf48ca387bb55af1fa12b37ed  gcc/testsuite/g++.dg/cpp0x/defaulted28.C
  74625e2ffd1ab0c5a552aa67c04bab26  gcc/testsuite/g++.dg/cpp0x/defaulted29.C
! 5a8753b863f78415813bfe64bf544ebd  gcc/testsuite/g++.dg/cpp0x/defaulted3.C
  6f72f3c29155129b0595309c15f5bc64  gcc/testsuite/g++.dg/cpp0x/defaulted30.C
  f23747a221c766783908230175d7e84f  gcc/testsuite/g++.dg/cpp0x/defaulted31.C
  5d23c972a60619362f5274653c25bb5a  gcc/testsuite/g++.dg/cpp0x/defaulted32.C
--- 14727,14733 ----
  fe14766ad327b4eaee90f7608f477476  gcc/testsuite/g++.dg/cpp0x/defaulted27.C
  98f9bcbcf48ca387bb55af1fa12b37ed  gcc/testsuite/g++.dg/cpp0x/defaulted28.C
  74625e2ffd1ab0c5a552aa67c04bab26  gcc/testsuite/g++.dg/cpp0x/defaulted29.C
! 9124744c821d85c4719c8eaf4b64872d  gcc/testsuite/g++.dg/cpp0x/defaulted3.C
  6f72f3c29155129b0595309c15f5bc64  gcc/testsuite/g++.dg/cpp0x/defaulted30.C
  f23747a221c766783908230175d7e84f  gcc/testsuite/g++.dg/cpp0x/defaulted31.C
  5d23c972a60619362f5274653c25bb5a  gcc/testsuite/g++.dg/cpp0x/defaulted32.C
*************** f8840f0998d1d23158832c277c888d14  gcc/te
*** 13236,13250 ****
  56b051f9e6f8f51d106fe800ef06e54a  gcc/testsuite/g++.dg/cpp0x/diag2.C
  6d4629d016ec53ea282d36e875e3ca38  gcc/testsuite/g++.dg/cpp0x/diag3.C
  be2f327033fbf2bb4c287d571b817102  gcc/testsuite/g++.dg/cpp0x/dr2061.C
  a07bd7a492a7f2ce7bfdf2835ea992a7  gcc/testsuite/g++.dg/cpp0x/dr2351.C
  bd568f7f1307dab8f5eb35fec36e71e2  gcc/testsuite/g++.dg/cpp0x/duplicate1.C
  d4426133b81413ad1d3051caa8d7c24a  gcc/testsuite/g++.dg/cpp0x/dyncast1.C
  66b2af972cbee8009e3e5f9895cb0a1a  gcc/testsuite/g++.dg/cpp0x/elision.C
  61e6b95f09ff3fc301b7bd5af3f1e592  gcc/testsuite/g++.dg/cpp0x/elision2.C
  27d722d5f244016b7eb68c69205b406b  gcc/testsuite/g++.dg/cpp0x/elision3.C
  5c711968979f97af62f871b9ff96e097  gcc/testsuite/g++.dg/cpp0x/elision_conv.C
  712ed8dcff4a69a8702cf91a4d752be3  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
! af521f07a34d29e505189640746f3ea0  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
  f9db6c19fc344b45754b8ddbe2566345  gcc/testsuite/g++.dg/cpp0x/enum1.C
  239bcda977968c64660c02c29c92dd44  gcc/testsuite/g++.dg/cpp0x/enum10.C
  8b05050aad9e84ebb22fb71980c21641  gcc/testsuite/g++.dg/cpp0x/enum11.C
--- 14798,14814 ----
  56b051f9e6f8f51d106fe800ef06e54a  gcc/testsuite/g++.dg/cpp0x/diag2.C
  6d4629d016ec53ea282d36e875e3ca38  gcc/testsuite/g++.dg/cpp0x/diag3.C
  be2f327033fbf2bb4c287d571b817102  gcc/testsuite/g++.dg/cpp0x/dr2061.C
+ 702fffba42b337b3a4f476a079d1e355  gcc/testsuite/g++.dg/cpp0x/dr2351-2.C
  a07bd7a492a7f2ce7bfdf2835ea992a7  gcc/testsuite/g++.dg/cpp0x/dr2351.C
  bd568f7f1307dab8f5eb35fec36e71e2  gcc/testsuite/g++.dg/cpp0x/duplicate1.C
  d4426133b81413ad1d3051caa8d7c24a  gcc/testsuite/g++.dg/cpp0x/dyncast1.C
  66b2af972cbee8009e3e5f9895cb0a1a  gcc/testsuite/g++.dg/cpp0x/elision.C
  61e6b95f09ff3fc301b7bd5af3f1e592  gcc/testsuite/g++.dg/cpp0x/elision2.C
  27d722d5f244016b7eb68c69205b406b  gcc/testsuite/g++.dg/cpp0x/elision3.C
+ 393f9319b950755d8271e18f752c823d  gcc/testsuite/g++.dg/cpp0x/elision4.C
  5c711968979f97af62f871b9ff96e097  gcc/testsuite/g++.dg/cpp0x/elision_conv.C
  712ed8dcff4a69a8702cf91a4d752be3  gcc/testsuite/g++.dg/cpp0x/elision_neg.C
! af82f06b90c9ecba7584ae36c218bc38  gcc/testsuite/g++.dg/cpp0x/elision_weak.C
  f9db6c19fc344b45754b8ddbe2566345  gcc/testsuite/g++.dg/cpp0x/enum1.C
  239bcda977968c64660c02c29c92dd44  gcc/testsuite/g++.dg/cpp0x/enum10.C
  8b05050aad9e84ebb22fb71980c21641  gcc/testsuite/g++.dg/cpp0x/enum11.C
*************** f520b3c677602a9f4bb925811947dd27  gcc/te
*** 13283,13288 ****
--- 14847,14853 ----
  1180e3480996d107ee707434d64528e0  gcc/testsuite/g++.dg/cpp0x/enum40.C
  04d281e3cb2c000a5e49e2b16f623027  gcc/testsuite/g++.dg/cpp0x/enum41.C
  a170374dff8df7695c33c8ced0de6783  gcc/testsuite/g++.dg/cpp0x/enum42.C
+ 04dc1d4fe43005d4de8c5865ec895953  gcc/testsuite/g++.dg/cpp0x/enum43.C
  771003df84c0886c950718b7f6d81033  gcc/testsuite/g++.dg/cpp0x/enum5.C
  67ec15297186c0dc5b419618c460a2f2  gcc/testsuite/g++.dg/cpp0x/enum6.C
  2b0985c5003a3baf1ba60c7c38770636  gcc/testsuite/g++.dg/cpp0x/enum7.C
*************** fd7ae1b35a49011d276e428736f4f11a  gcc/te
*** 13311,13316 ****
--- 14876,14882 ----
  1a2bb99e92ffa2d1e6477ef38633d9ee  gcc/testsuite/g++.dg/cpp0x/explicit13.C
  08da4fbac4fef79e26d26b24a22682af  gcc/testsuite/g++.dg/cpp0x/explicit14.C
  63532988eb5c68fd93bfaccea9c6c7a6  gcc/testsuite/g++.dg/cpp0x/explicit15.C
+ 438f495bd50c1db9c5c59cbab68306d8  gcc/testsuite/g++.dg/cpp0x/explicit16.C
  fec28f5357647ffbc93c027ac0fbf703  gcc/testsuite/g++.dg/cpp0x/explicit2.C
  ef5c8a016f49426952ad2493c17aef13  gcc/testsuite/g++.dg/cpp0x/explicit3.C
  438a3bc90c2ee1fc82bce90fdfa60da5  gcc/testsuite/g++.dg/cpp0x/explicit4.C
*************** b44ed86d19fab7414d28d1f3fd36a7f9  gcc/te
*** 13328,13333 ****
--- 14894,14900 ----
  592cc710524d5d21c28b065dd6c6de7c  gcc/testsuite/g++.dg/cpp0x/fallthrough1.C
  fabf296040650b16fb1ee761285e2841  gcc/testsuite/g++.dg/cpp0x/fallthrough2.C
  d4e053aec4e8eb7313176419926ab588  gcc/testsuite/g++.dg/cpp0x/fntmp-equiv1.C
+ 1050aaede53ab32a9c6a1261ff0fe5d3  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg-partial1.C
  e719fc0782c02fa926744188563c8722  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg1.C
  101686a12f4027487963b47c2243cef7  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg10.C
  d6975e94a38c08c7522664a293b0718d  gcc/testsuite/g++.dg/cpp0x/fntmpdefarg11.C
*************** d7e6d19983fefaaf3bad930060d8d107  gcc/te
*** 13444,13449 ****
--- 15011,15017 ----
  b0ab6438c410f443c2791a7956a155dd  gcc/testsuite/g++.dg/cpp0x/gen-attrs-74.C
  9cfea1f1343dd1303bdb11adb1fa60b4  gcc/testsuite/g++.dg/cpp0x/gen-attrs-75.C
  daf9ff306e1d54572eb4cce16d2d598f  gcc/testsuite/g++.dg/cpp0x/gen-attrs-76.C
+ 4333101736491e8179281e3c1c537783  gcc/testsuite/g++.dg/cpp0x/gen-attrs-77.C
  29ab98a7b8d445bb51e5069dd98f7cca  gcc/testsuite/g++.dg/cpp0x/gen-attrs-8.C
  5dd92815927177080853d47a890f5439  gcc/testsuite/g++.dg/cpp0x/gen-attrs-9.C
  40caf35e131e99903b76e36f0e04b2a9  gcc/testsuite/g++.dg/cpp0x/gnu_fext-numeric-literals.C
*************** a4d425861fbc15c68f5c3a9c0b1d1b8c  gcc/te
*** 13513,13519 ****
--- 15081,15091 ----
  acdc66e4d80b02a42a452d3b516a42b6  gcc/testsuite/g++.dg/cpp0x/initlist-array12.C
  85db0f3cfbd5f43f0c7eeee7a715292b  gcc/testsuite/g++.dg/cpp0x/initlist-array13.C
  2fdfbb5de00ce9e1c9d3b1de20d688a7  gcc/testsuite/g++.dg/cpp0x/initlist-array14.C
+ 2e47a659b47ff689633ae3d672be53a4  gcc/testsuite/g++.dg/cpp0x/initlist-array15.C
  475744598503ee0aec7ac236f92296d5  gcc/testsuite/g++.dg/cpp0x/initlist-array16.C
+ b7c080a9956d13517e0da64ac3f03102  gcc/testsuite/g++.dg/cpp0x/initlist-array17.C
+ e81473abf06cde0a1694e5af550d221d  gcc/testsuite/g++.dg/cpp0x/initlist-array18.C
+ 8a2d9881631b666080991add59939b20  gcc/testsuite/g++.dg/cpp0x/initlist-array19.C
  09f09079c354ad93c3844a14549e0854  gcc/testsuite/g++.dg/cpp0x/initlist-array2.C
  8c888f7ab5cc44480801a14718225380  gcc/testsuite/g++.dg/cpp0x/initlist-array3.C
  6c1907913d332611dd16d03002d759f9  gcc/testsuite/g++.dg/cpp0x/initlist-array4.C
*************** f0118d5667765863d9b140fbe97f21fe  gcc/te
*** 13528,13533 ****
--- 15100,15106 ----
  f01a40c7b455f2057375d7377cc73996  gcc/testsuite/g++.dg/cpp0x/initlist-base4.C
  68f886cb4e912d3c297c2a92ab92832f  gcc/testsuite/g++.dg/cpp0x/initlist-cast1.C
  6c5330c1db9324895d3422e0847edb6d  gcc/testsuite/g++.dg/cpp0x/initlist-cleanup1.C
+ 6d8648d105112bcbe1d2ddccb204a593  gcc/testsuite/g++.dg/cpp0x/initlist-const1.C
  994605127bf908d7a5b9745b9991101e  gcc/testsuite/g++.dg/cpp0x/initlist-ctor1.C
  8d42dd7607b094785c2cd3a8c2078180  gcc/testsuite/g++.dg/cpp0x/initlist-ctor2.C
  85f4b64a3f7721e892ec214ca53047d4  gcc/testsuite/g++.dg/cpp0x/initlist-deduce.C
*************** f01a40c7b455f2057375d7377cc73996  gcc/te
*** 13535,13540 ****
--- 15108,15114 ----
  d95f4f566aa82caa249bf1188b86d6f2  gcc/testsuite/g++.dg/cpp0x/initlist-deduce3.C
  164cef62ad37c1cf80ca6128f56094b2  gcc/testsuite/g++.dg/cpp0x/initlist-defarg1.C
  be08dc99a94b7b3278c8c66a5274c415  gcc/testsuite/g++.dg/cpp0x/initlist-defarg2.C
+ f469aff688f1646a6d5c53c47c8a27dc  gcc/testsuite/g++.dg/cpp0x/initlist-defarg3.C
  7f34f94c8b3b4fffe98a24b8ebadd5f6  gcc/testsuite/g++.dg/cpp0x/initlist-dr1518.C
  f61f621dcd5efc7adaf806419bd64a07  gcc/testsuite/g++.dg/cpp0x/initlist-explicit-sfinae.C
  f001f383104d84fe6269354c225ca1ec  gcc/testsuite/g++.dg/cpp0x/initlist-explicit1.C
*************** fab23eb9efdcf1b8c0f8393aa5ad7913  gcc/te
*** 13566,13571 ****
--- 15140,15146 ----
  852f3923a21c10d08b8fe1877de6f216  gcc/testsuite/g++.dg/cpp0x/initlist-value3.C
  0597c71749163f9727f9bfc6f5ddd548  gcc/testsuite/g++.dg/cpp0x/initlist-value4.C
  93763afe3eb7edb5553f76daf0ed0de3  gcc/testsuite/g++.dg/cpp0x/initlist-vect.C
+ 72e0844bf4443787fe9b82aa10ad9c44  gcc/testsuite/g++.dg/cpp0x/initlist-vect2.C
  bc81668e2b4c77a6a8c52350eb5f9bc7  gcc/testsuite/g++.dg/cpp0x/initlist1.C
  56eb446b9a79a3e01433eed6090a0b6d  gcc/testsuite/g++.dg/cpp0x/initlist10.C
  df633d620f0b08588935e9570c6fc074  gcc/testsuite/g++.dg/cpp0x/initlist100.C
*************** fe1759287ef65bc9b64a45ce0e53055f  gcc/te
*** 13601,13606 ****
--- 15176,15185 ----
  5fb0b35772deba539e69a7869f4312df  gcc/testsuite/g++.dg/cpp0x/initlist128.C
  427ec04d095e40d4e721a366c58d12a9  gcc/testsuite/g++.dg/cpp0x/initlist129.C
  a5e64985a46db12492fa03d5e7dfd347  gcc/testsuite/g++.dg/cpp0x/initlist13.C
+ 27487438faea4eb30c16f4edf880a9d6  gcc/testsuite/g++.dg/cpp0x/initlist130.C
+ c6b59c677bcd1cbdf89e61c5ca831e50  gcc/testsuite/g++.dg/cpp0x/initlist131.C
+ f9c9bfbb17863359c1717c757bee25f5  gcc/testsuite/g++.dg/cpp0x/initlist132.C
+ 6e1221359009ba7551396f68f40ffd89  gcc/testsuite/g++.dg/cpp0x/initlist133.C
  3071307e831ae441c218cbab9dbc1d8f  gcc/testsuite/g++.dg/cpp0x/initlist14.C
  803cc72c140b1d53ee7a3e50e344d414  gcc/testsuite/g++.dg/cpp0x/initlist15.C
  0cbd5b9635cd71f3d6738db34fe5f5b4  gcc/testsuite/g++.dg/cpp0x/initlist16.C
*************** da8580feb725981b1da24c49345d0739  gcc/te
*** 13705,13711 ****
--- 15284,15294 ----
  7da1d317c0e74ab901f17a10189784da  gcc/testsuite/g++.dg/cpp0x/inline-ns8.C
  81170031ad2a38d5f6c077134ed385f1  gcc/testsuite/g++.dg/cpp0x/inline-ns9.C
  3e4053a4f87f13e8a2207eebaa53813e  gcc/testsuite/g++.dg/cpp0x/iop.C
+ 6be113c7ba417d8d203c034b05165715  gcc/testsuite/g++.dg/cpp0x/keywords1.C
+ 324c47d1bae4b2aad0bfd5043527c922  gcc/testsuite/g++.dg/cpp0x/keywords2.C
  c6b850154544f0ba1eb99965d56573c7  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-104403.C
+ 3e490cd37b37e07c2862fc69f27e7b98  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-108829-2.C
+ dcafd6039bd43046849c985026eec1d0  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-108829.C
  9162d8fc6d7cb877ccad37a220cff3e3  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-50220.C
  af1ad4683eb1f8657e01dc730a845031  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-58566.C
  0d04db583ca02925777a135fa0e718a2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-59483.C
*************** dd5a1d8825301f34c70b68766377b76d  gcc/te
*** 13728,13737 ****
--- 15311,15322 ----
  d9b3b9597d3bf51088b71abd8f440104  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-98.C
  220829872340dbf04070c457af860d3c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-__func__.C
  101b0e2a29835d3f460096703091da25  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-__func__2.C
+ 46f5a9dec4bdc823522c87c8ca95eac2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-alias1.C
  c8bb19b0550505147cc17a59ca8b2c5e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-anon1.C
  58b59294830585a10b1de809f94ebe59  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-array.C
  4a4a71f2c93c7e5e1b91f4c5e042b71f  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-array2.C
  7209902f770a13ca53a0fdefe12a149c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-array3.C
+ a46ccf13a61e26483775bb4b69d16bca  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-array4.C
  de587add0ca42e32537302826d4176cd  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-asm1.C
  9f8d4c9a9712342806e07dd5c882a533  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-attr1.C
  12e217d7c561fa4925e741bbe7cac652  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-attr2.C
*************** cd0880983dc32cb469f470728ae8b22b  gcc/te
*** 13747,13752 ****
--- 15332,15338 ----
  8fc3ab70c2058568fbe8578145b021ae  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const-this.C
  1d85414b94d2d104004fc7341b90a896  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const.C
  26a3a7d7fa8662de4df1454d0f3eea85  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const10.C
+ 692c149205d32e7263c8778ba131c9dc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const11.C
  64bc761abc3783521fdfb26f930f3410  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const2.C
  e513b4dcc45e6063745c03c7c99151fa  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const3.C
  1ced7b3231f38cc9948cc247893ffec1  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const4.C
*************** b585b1ced3a56644fa0fe5fea48a7186  gcc/te
*** 13757,13763 ****
  2b3062fcf828f181fc3399b93693031a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const9.C
  b4468f4f3ad891d5e034fa908a0a57e9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-constexpr1.C
  1ea88d8208d59f25e2b46e3f1efcf9de  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-constexpr2.C
! db7bc02fc98b9ea2b1ac747f9c1b93fc  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C
  59ff738b6c6f39d1085d9586f3b2460e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv10.C
  af8f4c292dd27cf325f9b83b0e8ae304  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
  e68f0f2940c3cb9d879b66d1c30fa709  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
--- 15343,15349 ----
  2b3062fcf828f181fc3399b93693031a  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-const9.C
  b4468f4f3ad891d5e034fa908a0a57e9  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-constexpr1.C
  1ea88d8208d59f25e2b46e3f1efcf9de  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-constexpr2.C
! 167a011be964dea6896e3e468a38dc31  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C
  59ff738b6c6f39d1085d9586f3b2460e  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv10.C
  af8f4c292dd27cf325f9b83b0e8ae304  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv11.C
  e68f0f2940c3cb9d879b66d1c30fa709  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv12.C
*************** bc4834e829a567ab458b88513efb0adc  gcc/te
*** 13856,13861 ****
--- 15442,15448 ----
  9dc008f9d5045d3deab89ba4ac3a1544  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle4.C
  fd4bc46fcec54561fe0bc8e8acbf6434  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle5.C
  6240609c482a5a29a2e64e03e50d440c  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle6.C
+ bf6de34fde3b86e66f228a0e102a2767  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mangle7.C
  eeae91bf7da7535c64375c8b6e2ad746  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mixed.C
  3292c801823c4c4aa6fe6e560dd10624  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable.C
  ed3cffe55f643c172f1955fc59175de2  gcc/testsuite/g++.dg/cpp0x/lambda/lambda-mutable2.C
*************** cd8432c1af15f4b569241057f6cca8bc  gcc/te
*** 13985,13994 ****
  c994f9d97744ab8028b2b30365d6830e  gcc/testsuite/g++.dg/cpp0x/mem-init-aggr1.C
  edbd3e745ec9870bfa9a7bafa2fc38f3  gcc/testsuite/g++.dg/cpp0x/missing-initializer_list-include.C
  58a99d1c1963761ed991a9da0a1064c2  gcc/testsuite/g++.dg/cpp0x/move-return1.C
! 51b201d42d9b3f195e93472faa5b3fb3  gcc/testsuite/g++.dg/cpp0x/move-return2.C
! bd419357717e135d33957eadeb436bf1  gcc/testsuite/g++.dg/cpp0x/move-return3.C
! 99adfe2ae5608964dc00791646e2b7c4  gcc/testsuite/g++.dg/cpp0x/move-return4.C
  c1feee422fd37f5c7d79276a96c23d07  gcc/testsuite/g++.dg/cpp0x/move1.C
  9ae0ac924c5c1dafc246af2360f9164a  gcc/testsuite/g++.dg/cpp0x/mutable1.C
  e2a2d13a6043d589d665cbb45ea56db8  gcc/testsuite/g++.dg/cpp0x/named.C
  56cefa5aad12a68f18967bfe11f6e7cd  gcc/testsuite/g++.dg/cpp0x/named_refs.C
--- 15572,15583 ----
  c994f9d97744ab8028b2b30365d6830e  gcc/testsuite/g++.dg/cpp0x/mem-init-aggr1.C
  edbd3e745ec9870bfa9a7bafa2fc38f3  gcc/testsuite/g++.dg/cpp0x/missing-initializer_list-include.C
  58a99d1c1963761ed991a9da0a1064c2  gcc/testsuite/g++.dg/cpp0x/move-return1.C
! d228af1e94c70831e6822c3b9a698c78  gcc/testsuite/g++.dg/cpp0x/move-return2.C
! 212a8badfcc61c668268f7a463a7bc81  gcc/testsuite/g++.dg/cpp0x/move-return3.C
! 9270de32fe145d3b711f69547e762ed2  gcc/testsuite/g++.dg/cpp0x/move-return4.C
! c97d7894b468e0009f3401e11fdae4a0  gcc/testsuite/g++.dg/cpp0x/move-return5.C
  c1feee422fd37f5c7d79276a96c23d07  gcc/testsuite/g++.dg/cpp0x/move1.C
+ f979f2439e23ebaa6a4c2c8ea3d79459  gcc/testsuite/g++.dg/cpp0x/move2.C
  9ae0ac924c5c1dafc246af2360f9164a  gcc/testsuite/g++.dg/cpp0x/mutable1.C
  e2a2d13a6043d589d665cbb45ea56db8  gcc/testsuite/g++.dg/cpp0x/named.C
  56cefa5aad12a68f18967bfe11f6e7cd  gcc/testsuite/g++.dg/cpp0x/named_refs.C
*************** fe526337c46e51da61277e503a425d3c  gcc/te
*** 13999,14004 ****
--- 15588,15594 ----
  619ac7b9f67c073afd9a0d09b9e71a25  gcc/testsuite/g++.dg/cpp0x/new3.C
  fd416d8d36f2dd6e9ba7d2cef681fdbb  gcc/testsuite/g++.dg/cpp0x/new4.C
  49906341e996621b46c7c41ec0499a34  gcc/testsuite/g++.dg/cpp0x/new5.C
+ f9622d878dfdbb80673c052485d80c80  gcc/testsuite/g++.dg/cpp0x/new6.C
  981a1b52d13a4061d8e2bfcbe9c0fba0  gcc/testsuite/g++.dg/cpp0x/no-weak1.C
  ed2c46be3ce8712f09fcd7a4cc944efd  gcc/testsuite/g++.dg/cpp0x/noexcept01.C
  c5a2b23e292dd396ddf3637bb4fdfc11  gcc/testsuite/g++.dg/cpp0x/noexcept02.C
*************** dd169c18a4c3d9571a259e67ef8648ef  gcc/te
*** 14077,14082 ****
--- 15667,15673 ----
  1f3e552c43d920f75b1dde7450f0be06  gcc/testsuite/g++.dg/cpp0x/noexcept74a.C
  e2b18220e252af35e7715d6c7d99895e  gcc/testsuite/g++.dg/cpp0x/noexcept75.C
  b86be1b4c25b3063ddc7e4cb746b89ad  gcc/testsuite/g++.dg/cpp0x/noexcept76.C
+ 2dda03c113a688a77ec4d85b02359212  gcc/testsuite/g++.dg/cpp0x/noexcept77.C
  3bf83ccb654cedbb57a45851fb14aa9d  gcc/testsuite/g++.dg/cpp0x/nolinkage1.C
  6b7c91b931bbdacbbffbf9b90a79bc6a  gcc/testsuite/g++.dg/cpp0x/nolinkage1.h
  c92e0eda44dd6b3d74960b249fa5204f  gcc/testsuite/g++.dg/cpp0x/nolinkage1a.cc
*************** f900a961724b234dbae2b1dd5e2b9ae6  gcc/te
*** 14133,14138 ****
--- 15724,15731 ----
  93773e99f41e047cdb20c1fb229d81d2  gcc/testsuite/g++.dg/cpp0x/nsdmi-template21a.C
  dc4bd68cb1e4dc039dc569a75085b940  gcc/testsuite/g++.dg/cpp0x/nsdmi-template22.C
  0701f9d0d2b24244ead57a63737e416c  gcc/testsuite/g++.dg/cpp0x/nsdmi-template23.C
+ c01b8ba444d39018237ee544669ac45e  gcc/testsuite/g++.dg/cpp0x/nsdmi-template24.C
+ 65478d57f79f449d69bf39745b25b93f  gcc/testsuite/g++.dg/cpp0x/nsdmi-template25.C
  a4838f227c782d1dc8cc894a19deb0d1  gcc/testsuite/g++.dg/cpp0x/nsdmi-template3.C
  ecc55c2acf604366d5eab66ebf6a29dd  gcc/testsuite/g++.dg/cpp0x/nsdmi-template4.C
  2df81a05f5de27f3cb083ad4a290512a  gcc/testsuite/g++.dg/cpp0x/nsdmi-template5.C
*************** ecc55c2acf604366d5eab66ebf6a29dd  gcc/te
*** 14140,14151 ****
  bca364bb7be51173c515446b467d101b  gcc/testsuite/g++.dg/cpp0x/nsdmi-template7.C
  8228a8cc4123378699db41bb692816a8  gcc/testsuite/g++.dg/cpp0x/nsdmi-template8.C
  10d5192bc22fb982a714dabcc1321c84  gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C
! d1503365b6615b562965b9d47e9327c5  gcc/testsuite/g++.dg/cpp0x/nsdmi-union1.C
  97244e2bdff262e5f89cc9d5717cbeee  gcc/testsuite/g++.dg/cpp0x/nsdmi-union2.C
  24d435bfe180c503be113a8efa76cca0  gcc/testsuite/g++.dg/cpp0x/nsdmi-union3.C
  f306084dc287062131a42d269c3790f5  gcc/testsuite/g++.dg/cpp0x/nsdmi-union4.C
  e5098383445167a9adaab2059cbe85c6  gcc/testsuite/g++.dg/cpp0x/nsdmi-union5.C
  ed53ad00262a806fb5d832cb3c14fa67  gcc/testsuite/g++.dg/cpp0x/nsdmi-union6.C
  54a77ab9cbeaf8802273eefd6e7a3c55  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual1.C
  3c0cb799b24991eb3f632cb370865807  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual1a.C
  f9a95403a108b26b2de03038d43da14f  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual2.C
--- 15733,15745 ----
  bca364bb7be51173c515446b467d101b  gcc/testsuite/g++.dg/cpp0x/nsdmi-template7.C
  8228a8cc4123378699db41bb692816a8  gcc/testsuite/g++.dg/cpp0x/nsdmi-template8.C
  10d5192bc22fb982a714dabcc1321c84  gcc/testsuite/g++.dg/cpp0x/nsdmi-template9.C
! b97b1cd69d44e8db4b5eff96e0029051  gcc/testsuite/g++.dg/cpp0x/nsdmi-union1.C
  97244e2bdff262e5f89cc9d5717cbeee  gcc/testsuite/g++.dg/cpp0x/nsdmi-union2.C
  24d435bfe180c503be113a8efa76cca0  gcc/testsuite/g++.dg/cpp0x/nsdmi-union3.C
  f306084dc287062131a42d269c3790f5  gcc/testsuite/g++.dg/cpp0x/nsdmi-union4.C
  e5098383445167a9adaab2059cbe85c6  gcc/testsuite/g++.dg/cpp0x/nsdmi-union5.C
  ed53ad00262a806fb5d832cb3c14fa67  gcc/testsuite/g++.dg/cpp0x/nsdmi-union6.C
+ cb42db98717b6070b19f21797f6415fb  gcc/testsuite/g++.dg/cpp0x/nsdmi-union7.C
  54a77ab9cbeaf8802273eefd6e7a3c55  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual1.C
  3c0cb799b24991eb3f632cb370865807  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual1a.C
  f9a95403a108b26b2de03038d43da14f  gcc/testsuite/g++.dg/cpp0x/nsdmi-virtual2.C
*************** fb7661df85ad6b415b31574c67fa4ee0  gcc/te
*** 14219,14228 ****
--- 15813,15826 ----
  5ca00ae02aa7919e0b3d9730fa9f9ac5  gcc/testsuite/g++.dg/cpp0x/overload-conv-2.C
  2c6f9529ab2133b66b083833e669fd58  gcc/testsuite/g++.dg/cpp0x/overload-conv-3.C
  05f8d114c0307676d7d3b227b2e3213d  gcc/testsuite/g++.dg/cpp0x/overload-conv-4.C
+ 24976a5c9289b91a4727f22028c1cb65  gcc/testsuite/g++.dg/cpp0x/overload-conv-5.C
  e1598f2c9f261104495d9e7d921f8264  gcc/testsuite/g++.dg/cpp0x/overload.C
  15b4148c92763edcf90b0fe0cb6f7742  gcc/testsuite/g++.dg/cpp0x/overload2.C
  e51fa7b3953a97711f4b666480bad308  gcc/testsuite/g++.dg/cpp0x/overload3.C
  efb7ae6928ea9000a0ff27b30a77cb58  gcc/testsuite/g++.dg/cpp0x/overload4.C
+ 887aad7f8aea25612910558e896360ab  gcc/testsuite/g++.dg/cpp0x/overload5.C
+ 660400da1d46497b571390956ae8c8ce  gcc/testsuite/g++.dg/cpp0x/overload5a.C
+ 4e995918f69b8b1f23755adf83e2df73  gcc/testsuite/g++.dg/cpp0x/overload6.C
  c03c417198197c4ba3676deef5492d64  gcc/testsuite/g++.dg/cpp0x/overloadn.C
  7106d3a84752de0a3ebea3782eff9dcc  gcc/testsuite/g++.dg/cpp0x/override1.C
  7b0edd2d71ca32e524d6ff808a7ab0b7  gcc/testsuite/g++.dg/cpp0x/override2.C
*************** ec3fccada021f17376f5255d71d5545b  gcc/te
*** 14232,14238 ****
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
  6802ea11c1f5811ef4a3d0490040dcc1  gcc/testsuite/g++.dg/cpp0x/pr102305.C
  70ac2374ee7486817d2f1310406bcc69  gcc/testsuite/g++.dg/cpp0x/pr104668.C
! ab53f37eb7254188dd01a8c1e25841fd  gcc/testsuite/g++.dg/cpp0x/pr105256.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
  d65e06a3830e2b511cc25692b94615a1  gcc/testsuite/g++.dg/cpp0x/pr31432.C
--- 15830,15838 ----
  a174690fe306aaf345b02df91c3ddebe  gcc/testsuite/g++.dg/cpp0x/parse2.C
  6802ea11c1f5811ef4a3d0490040dcc1  gcc/testsuite/g++.dg/cpp0x/pr102305.C
  70ac2374ee7486817d2f1310406bcc69  gcc/testsuite/g++.dg/cpp0x/pr104668.C
! 0f5046ead85037afdaba1b501accc894  gcc/testsuite/g++.dg/cpp0x/pr105256.C
! fa773bb98628f5c9f0fa9d8d8b29beda  gcc/testsuite/g++.dg/cpp0x/pr107065.C
! 69f8f66bd163b5bad0e399b5155f053b  gcc/testsuite/g++.dg/cpp0x/pr108698.C
  26dea799d49ce223a0c4130a3c955271  gcc/testsuite/g++.dg/cpp0x/pr31431-2.C
  4d1da29b669bf3178b3987abce4d58b1  gcc/testsuite/g++.dg/cpp0x/pr31431.C
  d65e06a3830e2b511cc25692b94615a1  gcc/testsuite/g++.dg/cpp0x/pr31432.C
*************** e9182fc181b2f685d1473abd3dc6494e  gcc/te
*** 14334,14340 ****
  d3f16d565d5f0234c072b9148097482d  gcc/testsuite/g++.dg/cpp0x/pr65072.C
  bf269a0fc59902ae095a9d63af2f15e1  gcc/testsuite/g++.dg/cpp0x/pr65075.C
  e1e37c782e8544f0f2bd4a0a8c3d6b56  gcc/testsuite/g++.dg/cpp0x/pr65127.C
! 70f4a34034a805f780f5230a38566120  gcc/testsuite/g++.dg/cpp0x/pr65327.C
  3b11d27f9ec6ae594f5bfe44a2630c07  gcc/testsuite/g++.dg/cpp0x/pr65398-2.C
  15a18c8ec6bc66fe94b289311d90d95b  gcc/testsuite/g++.dg/cpp0x/pr65398.C
  525a7f1677a2f8d9ca18bad15207261b  gcc/testsuite/g++.dg/cpp0x/pr65558.C
--- 15934,15940 ----
  d3f16d565d5f0234c072b9148097482d  gcc/testsuite/g++.dg/cpp0x/pr65072.C
  bf269a0fc59902ae095a9d63af2f15e1  gcc/testsuite/g++.dg/cpp0x/pr65075.C
  e1e37c782e8544f0f2bd4a0a8c3d6b56  gcc/testsuite/g++.dg/cpp0x/pr65127.C
! 7c90ab140d9149f37efd4939624440ff  gcc/testsuite/g++.dg/cpp0x/pr65327.C
  3b11d27f9ec6ae594f5bfe44a2630c07  gcc/testsuite/g++.dg/cpp0x/pr65398-2.C
  15a18c8ec6bc66fe94b289311d90d95b  gcc/testsuite/g++.dg/cpp0x/pr65398.C
  525a7f1677a2f8d9ca18bad15207261b  gcc/testsuite/g++.dg/cpp0x/pr65558.C
*************** ce317b0879de92313ef6b7d499d12986  gcc/te
*** 14424,14430 ****
  662c2eb0632332c0375729eb9c9f926e  gcc/testsuite/g++.dg/cpp0x/pr83919.C
  70a182b3dddc113e81b5322b16298fe4  gcc/testsuite/g++.dg/cpp0x/pr83978.C
  3d3d4cf4662fd6a946d39e4e223bd600  gcc/testsuite/g++.dg/cpp0x/pr83993.C
! 46e79a32b41301a1aed286a7e2ed26a6  gcc/testsuite/g++.dg/cpp0x/pr84497.C
  bb7f83402a9ba07412c928a5c22bdf7d  gcc/testsuite/g++.dg/cpp0x/pr84585.C
  3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
  4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
--- 16024,16030 ----
  662c2eb0632332c0375729eb9c9f926e  gcc/testsuite/g++.dg/cpp0x/pr83919.C
  70a182b3dddc113e81b5322b16298fe4  gcc/testsuite/g++.dg/cpp0x/pr83978.C
  3d3d4cf4662fd6a946d39e4e223bd600  gcc/testsuite/g++.dg/cpp0x/pr83993.C
! 16f7d80402c13f236d29e94d869235c4  gcc/testsuite/g++.dg/cpp0x/pr84497.C
  bb7f83402a9ba07412c928a5c22bdf7d  gcc/testsuite/g++.dg/cpp0x/pr84585.C
  3357d765c2a248307f8a2822fc51cdf5  gcc/testsuite/g++.dg/cpp0x/pr84606.C
  4645cdc10faa1c61c439188409dd5b38  gcc/testsuite/g++.dg/cpp0x/pr84609.C
*************** b01c3079ace1bdd462b03d3af7906721  gcc/te
*** 14472,14477 ****
--- 16072,16078 ----
  114fa71f09fe7fd9b70ee4d41e776e26  gcc/testsuite/g++.dg/cpp0x/pr94616.C
  c60c0db646b29d21cd7d61d24670d63e  gcc/testsuite/g++.dg/cpp0x/pr96440.C
  1f725aacb479fe72f5d994446fab5d54  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst-arg1.C
+ 0564cc0225d38f734d46986570531094  gcc/testsuite/g++.dg/cpp0x/ptrmem-cst1.C
  6e8e648c26d9bf237cc152180e88c2c2  gcc/testsuite/g++.dg/cpp0x/range-for1.C
  5eec4a19463d582cbc114d93dbff246a  gcc/testsuite/g++.dg/cpp0x/range-for11.C
  22acc783be03cde2f30fafef0d50d9a2  gcc/testsuite/g++.dg/cpp0x/range-for12.C
*************** baf0dc0526b9c7116fa5e5cbccbe2286  gcc/te
*** 14531,14537 ****
  406a665e1cf18ab29d627440010b6614  gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
  b29a1864b99db07583a850e2242025b0  gcc/testsuite/g++.dg/cpp0x/ref-qual19.C
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
! 14edaa2083aa1c7fda41f39e5ec57607  gcc/testsuite/g++.dg/cpp0x/ref-qual20.C
  b5e0bd0074ec33c2369ad0e104f63179  gcc/testsuite/g++.dg/cpp0x/ref-qual21.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
--- 16132,16138 ----
  406a665e1cf18ab29d627440010b6614  gcc/testsuite/g++.dg/cpp0x/ref-qual18.C
  b29a1864b99db07583a850e2242025b0  gcc/testsuite/g++.dg/cpp0x/ref-qual19.C
  17d77d3ef6cc0e1cfd53228f15a40017  gcc/testsuite/g++.dg/cpp0x/ref-qual2.C
! 294b05915aa12fca6da4072d94c8ed55  gcc/testsuite/g++.dg/cpp0x/ref-qual20.C
  b5e0bd0074ec33c2369ad0e104f63179  gcc/testsuite/g++.dg/cpp0x/ref-qual21.C
  68b27ec15231994ad0330625660d2720  gcc/testsuite/g++.dg/cpp0x/ref-qual3.C
  1bb06529f586a3e77263290dd006534e  gcc/testsuite/g++.dg/cpp0x/ref-qual4.C
*************** ed0ef4952555cafa9be322b45527bce5  gcc/te
*** 14746,14751 ****
--- 16347,16353 ----
  c7c5b85000b7e7393d31feae90eee6d4  gcc/testsuite/g++.dg/cpp0x/udlit-cpp98-neg.C
  057ee217f53c1b7618905a97363b386d  gcc/testsuite/g++.dg/cpp0x/udlit-declare-neg.C
  b12d8f1a221241fb17100ba981f84473  gcc/testsuite/g++.dg/cpp0x/udlit-embed-quote.C
+ 141d32a05dedf93ee8bb84a16e5a1885  gcc/testsuite/g++.dg/cpp0x/udlit-error1.C
  9ed4b25d5489623fb9ff680609b1ec03  gcc/testsuite/g++.dg/cpp0x/udlit-extern-c.C
  e69574b29d74e1b9574f866ac163bf88  gcc/testsuite/g++.dg/cpp0x/udlit-friend.C
  5a8debc38c45079da0a8f0db33528e46  gcc/testsuite/g++.dg/cpp0x/udlit-general.C
*************** e5424a3313cd8b37eb1ae4e02ffab5bf  gcc/te
*** 14809,14814 ****
--- 16411,16417 ----
  ca37ddadc3989b47a8f871dbc75cb358  gcc/testsuite/g++.dg/cpp0x/variadic-alias5.C
  442ba0256c0aa3571579aa5a4d8d9d46  gcc/testsuite/g++.dg/cpp0x/variadic-alias6.C
  b9f93dd6756e0bd64271c918d2533edc  gcc/testsuite/g++.dg/cpp0x/variadic-alias7.C
+ 4bffb0d8f2f273875536d279ec5566e7  gcc/testsuite/g++.dg/cpp0x/variadic-alias8.C
  8eb6bba0c4ef3e1b77151f91ce5ddeb3  gcc/testsuite/g++.dg/cpp0x/variadic-bind.C
  5b99491b1ddd285caf57c8d9cc3a52aa  gcc/testsuite/g++.dg/cpp0x/variadic-crash1.C
  487cbd86a6922cf1b1ed0e770dfe74ee  gcc/testsuite/g++.dg/cpp0x/variadic-crash2.C
*************** d8f2bbdbc756eebd9db522c9d690f9fa  gcc/te
*** 14878,14884 ****
  bee3c5f0bfb165fbfd09c2d4a67d117e  gcc/testsuite/g++.dg/cpp0x/variadic-ttp7.C
  8b064910690284395dd07c4eb4749e10  gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C
  fabf432e9369e6fe877e89d0c86c7d57  gcc/testsuite/g++.dg/cpp0x/variadic-ttp9.C
! afebb5cb3a55d32fcecd85587b287bd9  gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
  eae406793547757d01528d5680162682  gcc/testsuite/g++.dg/cpp0x/variadic-tuple2.C
  9cf2b1705ed83cc74a8a4b9eb2703186  gcc/testsuite/g++.dg/cpp0x/variadic-unify-2.C
  14d049c47cd861f03247bae7077f7a4a  gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C
--- 16481,16487 ----
  bee3c5f0bfb165fbfd09c2d4a67d117e  gcc/testsuite/g++.dg/cpp0x/variadic-ttp7.C
  8b064910690284395dd07c4eb4749e10  gcc/testsuite/g++.dg/cpp0x/variadic-ttp8.C
  fabf432e9369e6fe877e89d0c86c7d57  gcc/testsuite/g++.dg/cpp0x/variadic-ttp9.C
! e2a4f4ebe01d8ef71a8e53427b0ad605  gcc/testsuite/g++.dg/cpp0x/variadic-tuple.C
  eae406793547757d01528d5680162682  gcc/testsuite/g++.dg/cpp0x/variadic-tuple2.C
  9cf2b1705ed83cc74a8a4b9eb2703186  gcc/testsuite/g++.dg/cpp0x/variadic-unify-2.C
  14d049c47cd861f03247bae7077f7a4a  gcc/testsuite/g++.dg/cpp0x/variadic-unify-3.C
*************** a1cfbfd1d513943453ec5c392ec8212f  gcc/te
*** 14974,14979 ****
--- 16577,16584 ----
  45285d93bd88ba5954fe172558a9740a  gcc/testsuite/g++.dg/cpp0x/variadic180.C
  71729e6ac870845bd172167993fa7579  gcc/testsuite/g++.dg/cpp0x/variadic181.C
  908e5186424a59fe18bcd9c5b80473e7  gcc/testsuite/g++.dg/cpp0x/variadic182.C
+ 92dec087f5d874e0808e9d7331d41987  gcc/testsuite/g++.dg/cpp0x/variadic183.C
+ b895096fa1563dd3f9dcf7ad2cda2980  gcc/testsuite/g++.dg/cpp0x/variadic184.C
  d07d2dff70e4403857f709c6f88dd0d9  gcc/testsuite/g++.dg/cpp0x/variadic19.C
  2fa72711afa172c723554cf582b008c8  gcc/testsuite/g++.dg/cpp0x/variadic2.C
  263ca23f80cf33c1a49a4d4a564e8ac3  gcc/testsuite/g++.dg/cpp0x/variadic20.C
*************** bbe5db57b5ad80f6dba45ded13dc4c7a  gcc/te
*** 15149,15155 ****
  4225acb87f7df9dda5bdd30f046d2bc9  gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
  56e6bd00ba584aef061561c13e30a444  gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
  b956356d8861035e62c871cbcfad5c34  gcc/testsuite/g++.dg/cpp1y/auto-fn26.C
! e3d40ca99ef02e17d17211d53b582f1d  gcc/testsuite/g++.dg/cpp1y/auto-fn27.C
  c61736654bcac7d243fae964457e396a  gcc/testsuite/g++.dg/cpp1y/auto-fn28.C
  d2440247bfc0707f1bd1786368455e35  gcc/testsuite/g++.dg/cpp1y/auto-fn29.C
  c4e86a95bc6b38f69a4a30b1b1cf1e4e  gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
--- 16754,16760 ----
  4225acb87f7df9dda5bdd30f046d2bc9  gcc/testsuite/g++.dg/cpp1y/auto-fn24.C
  56e6bd00ba584aef061561c13e30a444  gcc/testsuite/g++.dg/cpp1y/auto-fn25.C
  b956356d8861035e62c871cbcfad5c34  gcc/testsuite/g++.dg/cpp1y/auto-fn26.C
! 1713a99968774936cdbb7fbba33c0e83  gcc/testsuite/g++.dg/cpp1y/auto-fn27.C
  c61736654bcac7d243fae964457e396a  gcc/testsuite/g++.dg/cpp1y/auto-fn28.C
  d2440247bfc0707f1bd1786368455e35  gcc/testsuite/g++.dg/cpp1y/auto-fn29.C
  c4e86a95bc6b38f69a4a30b1b1cf1e4e  gcc/testsuite/g++.dg/cpp1y/auto-fn3.C
*************** e791b94844e59093ad5ec4175c3b673a  gcc/te
*** 15191,15196 ****
--- 16796,16802 ----
  6e1d5ab3b055c7676402021642622903  gcc/testsuite/g++.dg/cpp1y/auto-fn62.C
  86dff67be95912f694daebdd0aee911b  gcc/testsuite/g++.dg/cpp1y/auto-fn63.C
  f97d20d3d680128b6e125d1793e29b87  gcc/testsuite/g++.dg/cpp1y/auto-fn64.C
+ a5fbd625e8b645b90b2755400e929e2b  gcc/testsuite/g++.dg/cpp1y/auto-fn65.C
  03b6f2674c38c8f6ed9f7fc03583b1dc  gcc/testsuite/g++.dg/cpp1y/auto-fn7.C
  e9a317fa32e36cef4553b50965e48550  gcc/testsuite/g++.dg/cpp1y/auto-fn8.C
  d67958b896eb1dae6f8862fd59b01c62  gcc/testsuite/g++.dg/cpp1y/auto-fn9.C
*************** af7d2fcb1d1338760b009b72c73a0154  gcc/te
*** 15210,15216 ****
  596bb0c9ae27b7c107953a30347295f0  gcc/testsuite/g++.dg/cpp1y/constexpr-104284-3.C
  b18c63a0e6b162de2b47ab0e61b704bd  gcc/testsuite/g++.dg/cpp1y/constexpr-104284-4.C
  6193cad472a1684eae83fead9fc5d0d7  gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C
! 5711009968ffb66e220bca69d717f9fd  gcc/testsuite/g++.dg/cpp1y/constexpr-105050.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
  9b2030f5f70b0e913feb1b957c799f4f  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
  9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
--- 16816,16824 ----
  596bb0c9ae27b7c107953a30347295f0  gcc/testsuite/g++.dg/cpp1y/constexpr-104284-3.C
  b18c63a0e6b162de2b47ab0e61b704bd  gcc/testsuite/g++.dg/cpp1y/constexpr-104284-4.C
  6193cad472a1684eae83fead9fc5d0d7  gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C
! 03786101e254b753687a1c243a43278a  gcc/testsuite/g++.dg/cpp1y/constexpr-105050.C
! afbdcf440b8da95f919e745c0f3a85d1  gcc/testsuite/g++.dg/cpp1y/constexpr-105774.C
! bff4672a992bc57b0432abbc32b3c2c9  gcc/testsuite/g++.dg/cpp1y/constexpr-108158.C
  2d72668eefa5659edd32ef8dabc1c48e  gcc/testsuite/g++.dg/cpp1y/constexpr-50060.C
  9b2030f5f70b0e913feb1b957c799f4f  gcc/testsuite/g++.dg/cpp1y/constexpr-66093.C
  9ecc58eab147adafbf3780c51ed706fc  gcc/testsuite/g++.dg/cpp1y/constexpr-70265-1.C
*************** cae3ede91b1281417cb4b2b0a3fed7a8  gcc/te
*** 15241,15255 ****
  c0c65bed3f0ec11995705af19bb8b6ad  gcc/testsuite/g++.dg/cpp1y/constexpr-89074-1.C
  54065250db8014b94087e19130b9d3ce  gcc/testsuite/g++.dg/cpp1y/constexpr-89074-2.C
  1cfec2a008c883718d7eb9a906eac434  gcc/testsuite/g++.dg/cpp1y/constexpr-89074-3.C
! 2a98a032769264c1453829a7b23ff007  gcc/testsuite/g++.dg/cpp1y/constexpr-89285-2.C
! 07637923a25d4865628527c667773cb7  gcc/testsuite/g++.dg/cpp1y/constexpr-89285.C
  6287f6343875c97718b7c31626b1a892  gcc/testsuite/g++.dg/cpp1y/constexpr-89336-1.C
  fe38eb995d3f36bcf45ac701099de121  gcc/testsuite/g++.dg/cpp1y/constexpr-89336-2.C
  d97642d3edfa83e4dceb98692f10ca15  gcc/testsuite/g++.dg/cpp1y/constexpr-89336-3.C
  d8d5c97f0cfc535ec6b3092d8c2ad0a6  gcc/testsuite/g++.dg/cpp1y/constexpr-89481.C
  489bd3de48ef1607ca304163277af5df  gcc/testsuite/g++.dg/cpp1y/constexpr-89652.C
  90fa885f78614bf5c1521576e421e9bd  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-1.C
! 9db0b914527a8b909b9c56595af3e4d8  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C
  d74feec74ad417ce346db9a37de13b2b  gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C
  6da026613aee5ef4a0c106f2bd05788e  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-1.C
  14a30fd2e20dff6196843757b1aeaa95  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-2.C
--- 16849,16863 ----
  c0c65bed3f0ec11995705af19bb8b6ad  gcc/testsuite/g++.dg/cpp1y/constexpr-89074-1.C
  54065250db8014b94087e19130b9d3ce  gcc/testsuite/g++.dg/cpp1y/constexpr-89074-2.C
  1cfec2a008c883718d7eb9a906eac434  gcc/testsuite/g++.dg/cpp1y/constexpr-89074-3.C
! 41621f8920967bf3379b8966768c1824  gcc/testsuite/g++.dg/cpp1y/constexpr-89285-2.C
! 6cec19d370f7929ae4061e25cc42edba  gcc/testsuite/g++.dg/cpp1y/constexpr-89285.C
  6287f6343875c97718b7c31626b1a892  gcc/testsuite/g++.dg/cpp1y/constexpr-89336-1.C
  fe38eb995d3f36bcf45ac701099de121  gcc/testsuite/g++.dg/cpp1y/constexpr-89336-2.C
  d97642d3edfa83e4dceb98692f10ca15  gcc/testsuite/g++.dg/cpp1y/constexpr-89336-3.C
  d8d5c97f0cfc535ec6b3092d8c2ad0a6  gcc/testsuite/g++.dg/cpp1y/constexpr-89481.C
  489bd3de48ef1607ca304163277af5df  gcc/testsuite/g++.dg/cpp1y/constexpr-89652.C
  90fa885f78614bf5c1521576e421e9bd  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-1.C
! c3a803312a82c02990ef478b3889beb2  gcc/testsuite/g++.dg/cpp1y/constexpr-89785-2.C
  d74feec74ad417ce346db9a37de13b2b  gcc/testsuite/g++.dg/cpp1y/constexpr-90199.C
  6da026613aee5ef4a0c106f2bd05788e  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-1.C
  14a30fd2e20dff6196843757b1aeaa95  gcc/testsuite/g++.dg/cpp1y/constexpr-90383-2.C
*************** fdb8b6b86d13d007f2629fe0e79ef65b  gcc/te
*** 15275,15284 ****
--- 16883,16894 ----
  e994f9235ea884899f4cb5f923eca140  gcc/testsuite/g++.dg/cpp1y/constexpr-base1.C
  62c9fcd027436752619939db3ffca36e  gcc/testsuite/g++.dg/cpp1y/constexpr-base2.C
  e383dd00754b034ccf88071ffbf49978  gcc/testsuite/g++.dg/cpp1y/constexpr-base2a.C
+ 443fa5c73bd15f55a6b97bef44b05468  gcc/testsuite/g++.dg/cpp1y/constexpr-complex1.C
  9912061f6e14d9f4a1f557e23a4f89c2  gcc/testsuite/g++.dg/cpp1y/constexpr-copy1.C
  464341f29e9993d1f1a167321ef412cf  gcc/testsuite/g++.dg/cpp1y/constexpr-copy2.C
  e6815ab618d6af99025ddeacf6ab0545  gcc/testsuite/g++.dg/cpp1y/constexpr-copy3.C
  4808950072f67f78922c9046e31e486d  gcc/testsuite/g++.dg/cpp1y/constexpr-dr1684.C
+ 1108af7f1a7e79d87b94e4c2b3730c9d  gcc/testsuite/g++.dg/cpp1y/constexpr-elision1.C
  9b6ce1c2202c1ce9ea82fda5f060499b  gcc/testsuite/g++.dg/cpp1y/constexpr-empty1.C
  b8279a438f13574240482fd43dc100d3  gcc/testsuite/g++.dg/cpp1y/constexpr-empty2.C
  d4fc72d059e047077b1d6033d4c13026  gcc/testsuite/g++.dg/cpp1y/constexpr-empty3.C
*************** a3eb2783b3258724406759b817abc91a  gcc/te
*** 15293,15298 ****
--- 16903,16909 ----
  3a3d744ee7d9f610351075218538740d  gcc/testsuite/g++.dg/cpp1y/constexpr-local1.C
  b9802763e15bc5d3383abb6baf492f9a  gcc/testsuite/g++.dg/cpp1y/constexpr-local2.C
  ed1ec65ac2a503707f1f7a1f22815b90  gcc/testsuite/g++.dg/cpp1y/constexpr-local3.C
+ e2dbbc936784e7f58d19a64e3aa43d6a  gcc/testsuite/g++.dg/cpp1y/constexpr-local4.C
  1f83fbcd0bb2c5f2d5d480d17f3f23dd  gcc/testsuite/g++.dg/cpp1y/constexpr-loop1.C
  dd06742193a8b1ab94aab1b448819b99  gcc/testsuite/g++.dg/cpp1y/constexpr-loop2.C
  9bf4b1a4941ca58f18681abd38e8f7ca  gcc/testsuite/g++.dg/cpp1y/constexpr-loop3.C
*************** b7ba36048381eed51408ea95cc97cab5  gcc/te
*** 15301,15309 ****
  521dc899a08f28cc384d6ecb466fe37e  gcc/testsuite/g++.dg/cpp1y/constexpr-loop6.C
  ca962f3256b3b1d6a489a9b876b8f615  gcc/testsuite/g++.dg/cpp1y/constexpr-loop7.C
  2c3af685bf6854fb957640fc9e12dc46  gcc/testsuite/g++.dg/cpp1y/constexpr-loop8.C
! 357d611114c1eb8cb04a38ddcb504bcb  gcc/testsuite/g++.dg/cpp1y/constexpr-neg1.C
  668a624ab093686a10323938506ba10a  gcc/testsuite/g++.dg/cpp1y/constexpr-new.C
  383e769ca0523aee3432cc57a015a3da  gcc/testsuite/g++.dg/cpp1y/constexpr-noexcept1.C
  870daa2b4f4ec7ae726e417d7da3945a  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi2.C
  b6f3cbabd3fb752ace73590e7135e551  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi3.C
  176ebb989b26e063b7de9e5564497b0a  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi4.C
--- 16912,16922 ----
  521dc899a08f28cc384d6ecb466fe37e  gcc/testsuite/g++.dg/cpp1y/constexpr-loop6.C
  ca962f3256b3b1d6a489a9b876b8f615  gcc/testsuite/g++.dg/cpp1y/constexpr-loop7.C
  2c3af685bf6854fb957640fc9e12dc46  gcc/testsuite/g++.dg/cpp1y/constexpr-loop8.C
! a83fffbfc1eea249eb5d8445bd70ff40  gcc/testsuite/g++.dg/cpp1y/constexpr-mutable1.C
! 98dc11e7ef53a71b9e1f3604d4afd676  gcc/testsuite/g++.dg/cpp1y/constexpr-neg1.C
  668a624ab093686a10323938506ba10a  gcc/testsuite/g++.dg/cpp1y/constexpr-new.C
  383e769ca0523aee3432cc57a015a3da  gcc/testsuite/g++.dg/cpp1y/constexpr-noexcept1.C
+ 6cbf034f3528acfdb1c539b96eb6801a  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi10.C
  870daa2b4f4ec7ae726e417d7da3945a  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi2.C
  b6f3cbabd3fb752ace73590e7135e551  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi3.C
  176ebb989b26e063b7de9e5564497b0a  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi4.C
*************** b6f3cbabd3fb752ace73590e7135e551  gcc/te
*** 15311,15317 ****
  446ddedfba3c61b298533f22b6de09cf  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi6a.C
  16d3e12769a7e8caf74db419c6334acb  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi6b.C
  620dc546394e1415cbe160a424e5aebc  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7a.C
! c3cd90392b0ef60308de7e44fb884c6f  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C
  8e2e9946848c5ffc12f5f2da3fb70c72  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi8.C
  5d70ae105705b7db38c2cb81da31b2fc  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi9.C
  14a6242de0a2e59abd4b2ccf95495c91  gcc/testsuite/g++.dg/cpp1y/constexpr-ptrsub1.C
--- 16924,16930 ----
  446ddedfba3c61b298533f22b6de09cf  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi6a.C
  16d3e12769a7e8caf74db419c6334acb  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi6b.C
  620dc546394e1415cbe160a424e5aebc  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7a.C
! e3cfe7135470a51262be752b71c2092b  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi7b.C
  8e2e9946848c5ffc12f5f2da3fb70c72  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi8.C
  5d70ae105705b7db38c2cb81da31b2fc  gcc/testsuite/g++.dg/cpp1y/constexpr-nsdmi9.C
  14a6242de0a2e59abd4b2ccf95495c91  gcc/testsuite/g++.dg/cpp1y/constexpr-ptrsub1.C
*************** f705c3231fd3394bbd8e1f6d3c18f870  gcc/te
*** 15329,15335 ****
  469cd1fc4d897d90592a00ce78be9201  gcc/testsuite/g++.dg/cpp1y/constexpr-switch2.C
  c1e1359ff4463d37602a3a97e87c775f  gcc/testsuite/g++.dg/cpp1y/constexpr-switch3.C
  2cf598a0cfa5187e173eb042b77aa4a7  gcc/testsuite/g++.dg/cpp1y/constexpr-switch4.C
! 43ea448ebd6042f40566aadbcb375f1b  gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C
  2a5c9e43d369c7c32f8c79fad7cf050c  gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const1.C
  a1e377256d28d8d31ad5d8530b880858  gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const10.C
  f436b4eb5c47f9c351af92f0818f4357  gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const11.C
--- 16942,16948 ----
  469cd1fc4d897d90592a00ce78be9201  gcc/testsuite/g++.dg/cpp1y/constexpr-switch2.C
  c1e1359ff4463d37602a3a97e87c775f  gcc/testsuite/g++.dg/cpp1y/constexpr-switch3.C
  2cf598a0cfa5187e173eb042b77aa4a7  gcc/testsuite/g++.dg/cpp1y/constexpr-switch4.C
! ad7aa3aa61504a6d0f70e8274c636732  gcc/testsuite/g++.dg/cpp1y/constexpr-throw.C
  2a5c9e43d369c7c32f8c79fad7cf050c  gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const1.C
  a1e377256d28d8d31ad5d8530b880858  gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const10.C
  f436b4eb5c47f9c351af92f0818f4357  gcc/testsuite/g++.dg/cpp1y/constexpr-tracking-const11.C
*************** f9177d17a8e7ca1cf52d2e3f3738490b  gcc/te
*** 15368,15377 ****
  382c88b3557d1313cf8ea52c3a5c5e11  gcc/testsuite/g++.dg/cpp1y/cplusplus.C
  f8cacc42b6d0ee02c4ec28b4871b946c  gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
  5b15891a6820c943437e7dcf50430c8c  gcc/testsuite/g++.dg/cpp1y/decltype-auto1.C
! 767b8c2e89c1b87095adbf462dad7025  gcc/testsuite/g++.dg/cpp1y/decltype-auto2.C
  12c22b7a794484f616e052459e6ee353  gcc/testsuite/g++.dg/cpp1y/decltype-auto3.C
  e210eaaa7545615d95f00423c888ec15  gcc/testsuite/g++.dg/cpp1y/decltype-auto4.C
  194055ab7fa17e843b9e74ef24b2d117  gcc/testsuite/g++.dg/cpp1y/decltype-auto5.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
  689cbb9207e775c0f7572b0587fbd4fd  gcc/testsuite/g++.dg/cpp1y/digit-sep-line-neg.C
  b0b8339395130310f925dd038dff1c6c  gcc/testsuite/g++.dg/cpp1y/digit-sep-line.C
--- 16981,16991 ----
  382c88b3557d1313cf8ea52c3a5c5e11  gcc/testsuite/g++.dg/cpp1y/cplusplus.C
  f8cacc42b6d0ee02c4ec28b4871b946c  gcc/testsuite/g++.dg/cpp1y/cplusplus_1y.C
  5b15891a6820c943437e7dcf50430c8c  gcc/testsuite/g++.dg/cpp1y/decltype-auto1.C
! 0653e60a48db4ca2c0d5dfd34d936643  gcc/testsuite/g++.dg/cpp1y/decltype-auto2.C
  12c22b7a794484f616e052459e6ee353  gcc/testsuite/g++.dg/cpp1y/decltype-auto3.C
  e210eaaa7545615d95f00423c888ec15  gcc/testsuite/g++.dg/cpp1y/decltype-auto4.C
  194055ab7fa17e843b9e74ef24b2d117  gcc/testsuite/g++.dg/cpp1y/decltype-auto5.C
+ 29d019b91f9e9754780b3f7d3b824a43  gcc/testsuite/g++.dg/cpp1y/decltype-auto6.C
  516d0cef75f4267f67d755a810807bc2  gcc/testsuite/g++.dg/cpp1y/digit-sep-cxx11-neg.C
  689cbb9207e775c0f7572b0587fbd4fd  gcc/testsuite/g++.dg/cpp1y/digit-sep-line-neg.C
  b0b8339395130310f925dd038dff1c6c  gcc/testsuite/g++.dg/cpp1y/digit-sep-line.C
*************** c3583508c23dbe7bcbfacff859609c12  gcc/te
*** 15399,15404 ****
--- 17013,17019 ----
  a5fcad1d0708a6218c6fe69c1871df02  gcc/testsuite/g++.dg/cpp1y/lambda-deduce-mult.C
  613f8f1a0e37b58fd3edbb783043189f  gcc/testsuite/g++.dg/cpp1y/lambda-defarg7.C
  0dd8ee41a3d0ab18cecf9a17d6956776  gcc/testsuite/g++.dg/cpp1y/lambda-generic-100362.C
+ 8323a8b2c633684a23115187598b47d8  gcc/testsuite/g++.dg/cpp1y/lambda-generic-107437.C
  acb467e6576c23ea04ca8d80f1c8a11b  gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-1.C
  fe7ad46667b9e092ad808e656e9427de  gcc/testsuite/g++.dg/cpp1y/lambda-generic-69078-2.C
  b2b66ca7cef468617193eb813e2dac6a  gcc/testsuite/g++.dg/cpp1y/lambda-generic-69977.C
*************** f257a2d5d1384a750676e55da76dca2e  gcc/te
*** 15412,15418 ****
  dfa08547ad14229fe77e680e387d3dbe  gcc/testsuite/g++.dg/cpp1y/lambda-generic-85713.C
  e3c04ea33a4074f5cd6955ab214fc656  gcc/testsuite/g++.dg/cpp1y/lambda-generic-86875.C
  7640b354152fd775d65ec145fc4635da  gcc/testsuite/g++.dg/cpp1y/lambda-generic-87523.C
! c158c48cdc574a61e06922b17254f0d7  gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C
  7b8a0f9d78b07ded387c1b8722c94c66  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90265.C
  3d83ad628fa7a413326bf23651c5bb6e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90548.C
  b5a737fba00746ac9bc15993af743991  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C
--- 17027,17033 ----
  dfa08547ad14229fe77e680e387d3dbe  gcc/testsuite/g++.dg/cpp1y/lambda-generic-85713.C
  e3c04ea33a4074f5cd6955ab214fc656  gcc/testsuite/g++.dg/cpp1y/lambda-generic-86875.C
  7640b354152fd775d65ec145fc4635da  gcc/testsuite/g++.dg/cpp1y/lambda-generic-87523.C
! 3912327334a4bd4afbd1c391051985f1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-89419.C
  7b8a0f9d78b07ded387c1b8722c94c66  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90265.C
  3d83ad628fa7a413326bf23651c5bb6e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90548.C
  b5a737fba00746ac9bc15993af743991  gcc/testsuite/g++.dg/cpp1y/lambda-generic-90842.C
*************** b3d105376831c9fced97427b9128fab4  gcc/te
*** 15438,15443 ****
--- 17053,17059 ----
  d3f8bce30776925a103e5bcc1681b6ab  gcc/testsuite/g++.dg/cpp1y/lambda-generic-enum1.C
  bebbad2dccf149ad3697584e53703d3d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-enum2.C
  b7efd8d29878f4a8e3a07f9cf622188c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-func1.C
+ d6d018019d50537fa9f1dd4fc5a514ab  gcc/testsuite/g++.dg/cpp1y/lambda-generic-func2.C
  82fea772a2540cf9ab702c17cc2cdb54  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice1.C
  2c1a495f8eecefe79fade7ccb361c16c  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice10.C
  767d5be8b02f5e7228313580ecdc27bf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice2.C
*************** fd449c2760b279bd0767e28da8a563bf  gcc/te
*** 15449,15454 ****
--- 17065,17071 ----
  8efe65d95bbc02645dd6c2656587135e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice8.C
  cbe44bb553e043d66e5399d7f388dabf  gcc/testsuite/g++.dg/cpp1y/lambda-generic-ice9.C
  65815d2456686230a8b4da8685461cb9  gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class1.C
+ 47599e7b4eb02a3273b3c5423173b19e  gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-class2.C
  81a4729d1c94303fbb34bf57ad79ac29  gcc/testsuite/g++.dg/cpp1y/lambda-generic-local-fn1.C
  a5e1f08b66165b58419bbab37da9a962  gcc/testsuite/g++.dg/cpp1y/lambda-generic-mixed.C
  230ab773acec47b7efe832181c6c4972  gcc/testsuite/g++.dg/cpp1y/lambda-generic-nested1.C
*************** c9ebf7c65d25936f6751b5ecbf146c97  gcc/te
*** 15484,15490 ****
  723f502d3b40be6c90106e7124cc9e69  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic2.C
  d146dfb92f0c30b11d9e7d20af8428d9  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic20.C
  a85138cb5fc79cb28fc85f398f8a118d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic21.C
! ea0ef488e2f9b474fdcfe07e601ce060  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic22.C
  93fa62fac80c2db40c8540dcc1bb3cb1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C
  3b97ac4e949f2c389ffb4065dc536705  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic4.C
  141535a56934b529ba244dc7e7d15d06  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic5.C
--- 17101,17107 ----
  723f502d3b40be6c90106e7124cc9e69  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic2.C
  d146dfb92f0c30b11d9e7d20af8428d9  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic20.C
  a85138cb5fc79cb28fc85f398f8a118d  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic21.C
! f84ec2eb06c8668cac8178c4a890b764  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic22.C
  93fa62fac80c2db40c8540dcc1bb3cb1  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic3.C
  3b97ac4e949f2c389ffb4065dc536705  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic4.C
  141535a56934b529ba244dc7e7d15d06  gcc/testsuite/g++.dg/cpp1y/lambda-generic-variadic5.C
*************** fa5d36139114d3424b46d4a35fdcc931  gcc/te
*** 15521,15535 ****
  41a7469eb46d8fab30de1be7c115e583  gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
  eeda9ed3e95d7a31c74fcdebd07abf15  gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
  c9c747d6c51f186d14465f9e9bb8db01  gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
! b09f7464f0c692821ff03fb28a825adb  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.C
  d13aa7a67136b0f4d673be5df541a2ab  gcc/testsuite/g++.dg/cpp1y/lambda-var-templ1.C
  a0fd7a682321878b07d220b8dae15ac3  gcc/testsuite/g++.dg/cpp1y/lambda-vla1.C
  7686aff0777cf041b8454732d1f17d8e  gcc/testsuite/g++.dg/cpp1y/left-shift-1.C
  5905dcf4a0cf928e5f5eef8ea574d3ee  gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
  8505d7bc855e9e02e1d7a75fe803d027  gcc/testsuite/g++.dg/cpp1y/mangle1.C
! 105e2ac1493d370f7fefe776ab7d70db  gcc/testsuite/g++.dg/cpp1y/new1.C
  b7000c26c6ee8cc9d890f03d21c575eb  gcc/testsuite/g++.dg/cpp1y/new2.C
! 57ba16f858c68b0fbba78bdf9dabaf2a  gcc/testsuite/g++.dg/cpp1y/noexcept1.C
  dc85812a9a16f085139b655ebe8b721c  gcc/testsuite/g++.dg/cpp1y/noexcept2.C
  bedfe39f995dd913a1715072975f6a1c  gcc/testsuite/g++.dg/cpp1y/nontype1.C
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
--- 17138,17155 ----
  41a7469eb46d8fab30de1be7c115e583  gcc/testsuite/g++.dg/cpp1y/lambda-init7.C
  eeda9ed3e95d7a31c74fcdebd07abf15  gcc/testsuite/g++.dg/cpp1y/lambda-init8.C
  c9c747d6c51f186d14465f9e9bb8db01  gcc/testsuite/g++.dg/cpp1y/lambda-init9.C
! 1f32958ca3abb177b4b32b06bb770787  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1-11.C
! 9fad1c8434d555bebddc51456281c7ed  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1-17.C
! c8f87e95ea00cd5d22a26cd1e44b7fdc  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1-18.C
! 45714c3e52b8ea155c02b253861a26e1  gcc/testsuite/g++.dg/cpp1y/lambda-mangle-1.h
  d13aa7a67136b0f4d673be5df541a2ab  gcc/testsuite/g++.dg/cpp1y/lambda-var-templ1.C
  a0fd7a682321878b07d220b8dae15ac3  gcc/testsuite/g++.dg/cpp1y/lambda-vla1.C
  7686aff0777cf041b8454732d1f17d8e  gcc/testsuite/g++.dg/cpp1y/left-shift-1.C
  5905dcf4a0cf928e5f5eef8ea574d3ee  gcc/testsuite/g++.dg/cpp1y/left-shift-2.C
  8505d7bc855e9e02e1d7a75fe803d027  gcc/testsuite/g++.dg/cpp1y/mangle1.C
! eb977f661703ff719e16118a8a31d3ea  gcc/testsuite/g++.dg/cpp1y/new1.C
  b7000c26c6ee8cc9d890f03d21c575eb  gcc/testsuite/g++.dg/cpp1y/new2.C
! 191394a77e8e6ca6aeea943de1c7aba5  gcc/testsuite/g++.dg/cpp1y/noexcept1.C
  dc85812a9a16f085139b655ebe8b721c  gcc/testsuite/g++.dg/cpp1y/noexcept2.C
  bedfe39f995dd913a1715072975f6a1c  gcc/testsuite/g++.dg/cpp1y/nontype1.C
  4707396951c53026c3f457ecd9db5312  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr1.C
*************** bedfe39f995dd913a1715072975f6a1c  gcc/te
*** 15537,15542 ****
--- 17157,17168 ----
  c9dde900e1dd03846724a7195332d8ea  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr11.C
  a145c30f655e3947d4d12895d47f8848  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr12.C
  620462324dd7279425148f8c5c72821a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr13.C
+ e4294373ac83b9285b6aebd856827aa9  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr14.C
+ aa7c244500a0cc89941ec9bde7ab3b31  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr15.C
+ eef8a1be0be8aea8d2bb59e616326076  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr16.C
+ cd1e1cc2c8f983dad04083b892ec54ad  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr17.C
+ 4c1005cb08e449c04d79bc0ad019da98  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr18.C
+ a4faa7f44f43076a809225334e5cefa5  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr19.C
  6181386fced4d11038690bcc0729a80d  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr2.C
  379f3d0c83382658777fb1c2f47ed88a  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr3.C
  d986a2e035160bd06d7fd81798876e53  gcc/testsuite/g++.dg/cpp1y/nsdmi-aggr4.C
*************** e8c6da7fb812f06074a9399c95d62136  gcc/te
*** 15556,15561 ****
--- 17182,17188 ----
  f5ccbfc0fb9fd723ce3d0565bf79908b  gcc/testsuite/g++.dg/cpp1y/paren5.C
  a59e5fd28eae5235838080483b6939a6  gcc/testsuite/g++.dg/cpp1y/phoobhar.h
  371feb662742879744f401685dc5a5e0  gcc/testsuite/g++.dg/cpp1y/pr104031.C
+ eec419e7e2d598da544dfb7c3d14b09f  gcc/testsuite/g++.dg/cpp1y/pr108606.C
  7d18afb36bcaa55af2030c6546d5df38  gcc/testsuite/g++.dg/cpp1y/pr57640.C
  854092e98063500453c7c800d8eb73a5  gcc/testsuite/g++.dg/cpp1y/pr57644.C
  247d52471516e4b902d29d652eae1a51  gcc/testsuite/g++.dg/cpp1y/pr58533.C
*************** b481e5273496bfbbf3b3909be7169b4c  gcc/te
*** 15740,15745 ****
--- 17367,17382 ----
  7ec7355a58dc65697a20d36778907420  gcc/testsuite/g++.dg/cpp1y/var-templ68a.C
  b5a20feb4541fc90f07997bf20b2164d  gcc/testsuite/g++.dg/cpp1y/var-templ69.C
  3c670164f1a7f8f91ef1db2f80526182  gcc/testsuite/g++.dg/cpp1y/var-templ7.C
+ 0433a04673c8c83e2999f3cb02bc21d6  gcc/testsuite/g++.dg/cpp1y/var-templ70.C
+ be78e90234de34b76d9a71544a8e5452  gcc/testsuite/g++.dg/cpp1y/var-templ71.C
+ be875f126134f7edf9c2ff78ec08400f  gcc/testsuite/g++.dg/cpp1y/var-templ72.C
+ 530720358cf6a6b16afd74e590b7f8b0  gcc/testsuite/g++.dg/cpp1y/var-templ73.C
+ 971ce3a8b9183bbb572c27cee883e621  gcc/testsuite/g++.dg/cpp1y/var-templ74.C
+ 6129cd98fd1905ed76fb9245e0f20821  gcc/testsuite/g++.dg/cpp1y/var-templ75.C
+ 699a8df4ddeaa0a8e45153742f07ffe4  gcc/testsuite/g++.dg/cpp1y/var-templ76.C
+ c7ab12616c35e8ba0c0796618d522c42  gcc/testsuite/g++.dg/cpp1y/var-templ77.C
+ 65e2c5dc982b2101d716a561b1d08003  gcc/testsuite/g++.dg/cpp1y/var-templ78.C
+ b71a7403570a0e5b6ed564f63ee0d523  gcc/testsuite/g++.dg/cpp1y/var-templ79.C
  7490ba7f2bf9511118a48f52e8c4ceed  gcc/testsuite/g++.dg/cpp1y/var-templ8.C
  c62c3c5ce4dabfb077ffd26896b1d204  gcc/testsuite/g++.dg/cpp1y/var-templ9.C
  2e5f8fa912af0b2871356af6f1adbd06  gcc/testsuite/g++.dg/cpp1y/vla-initlist1.C
*************** d9d52b8fe2f970e02f1be30318793801  gcc/te
*** 15756,15761 ****
--- 17393,17399 ----
  7248748a9a13eeb2cb077c3407b109c5  gcc/testsuite/g++.dg/cpp1z/aggr-base10.C
  1278598316884deb31a9cde2b03366a0  gcc/testsuite/g++.dg/cpp1z/aggr-base11.C
  5a42f67c17ea24ccec45839b5086bd26  gcc/testsuite/g++.dg/cpp1z/aggr-base12.C
+ 8f1a973dd918b283bc33539b2d565ff2  gcc/testsuite/g++.dg/cpp1z/aggr-base13.C
  e149ab5ecfa10339d5771953be185fa8  gcc/testsuite/g++.dg/cpp1z/aggr-base1a.C
  4583da3d1eb350853a7252d4e6a3a64b  gcc/testsuite/g++.dg/cpp1z/aggr-base2.C
  ef50bbb4c11914c6ab62d883d9099377  gcc/testsuite/g++.dg/cpp1z/aggr-base2a.C
*************** ca10f046e47ea09ba5b87084372f1ce2  gcc/te
*** 15775,15781 ****
  4dbddfffb31fb9d4ab9b40b6ac489d84  gcc/testsuite/g++.dg/cpp1z/aligned-new6.C
  c5e8ac858eac19a1f1f10709e9b49389  gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
  1c005f415746635350d5fd1bf3068b93  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
! 91a3b7a59ec3f2f070c0cc2e24a851b2  gcc/testsuite/g++.dg/cpp1z/aligned-new9.C
  15f78f24e2133987caada47dbd4501b6  gcc/testsuite/g++.dg/cpp1z/attr-lambda1.C
  34121807f233280bd4b9ceb565c64cf6  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
  a6e3099890bf75adfc276a625b3b0e3f  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C
--- 17413,17419 ----
  4dbddfffb31fb9d4ab9b40b6ac489d84  gcc/testsuite/g++.dg/cpp1z/aligned-new6.C
  c5e8ac858eac19a1f1f10709e9b49389  gcc/testsuite/g++.dg/cpp1z/aligned-new7.C
  1c005f415746635350d5fd1bf3068b93  gcc/testsuite/g++.dg/cpp1z/aligned-new8.C
! 177df6f1f169137815bb6b89c7a72a37  gcc/testsuite/g++.dg/cpp1z/aligned-new9.C
  15f78f24e2133987caada47dbd4501b6  gcc/testsuite/g++.dg/cpp1z/attr-lambda1.C
  34121807f233280bd4b9ceb565c64cf6  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1.C
  a6e3099890bf75adfc276a625b3b0e3f  gcc/testsuite/g++.dg/cpp1z/attributes-enum-1a.C
*************** db3b073f0c7359db6e2ad4fbfa9c08d5  gcc/te
*** 15808,15813 ****
--- 17446,17454 ----
  871331a13941944f7010cfb1344eab6e  gcc/testsuite/g++.dg/cpp1z/class-deduction109.C
  517aaeb274419d156e09eb5a7d5b7077  gcc/testsuite/g++.dg/cpp1z/class-deduction11.C
  9f4ecb418c0bbb6f3b318882c20889a4  gcc/testsuite/g++.dg/cpp1z/class-deduction110.C
+ d16e54a1ce726ad2154c8897b33a76f6  gcc/testsuite/g++.dg/cpp1z/class-deduction111.C
+ 07ec005b76a21ecba245d2a70baa779b  gcc/testsuite/g++.dg/cpp1z/class-deduction112.C
+ 189fae8c467b5ec39b2479b61e1a8bd6  gcc/testsuite/g++.dg/cpp1z/class-deduction113.C
  fccf66f75d0bb293e6ce56753e50eeda  gcc/testsuite/g++.dg/cpp1z/class-deduction12.C
  8033f2dbb1dc793a3fea073353a0487a  gcc/testsuite/g++.dg/cpp1z/class-deduction13.C
  f51a81e3b0aa46f289c5ca9d3faaded6  gcc/testsuite/g++.dg/cpp1z/class-deduction14.C
*************** d09105e6c1f377543e5514e34d2837cd  gcc/te
*** 15907,15913 ****
  6962bfa121a4383ee0b7a8f045abde3f  gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
  7417be75f23f5974ec35fe6261395c8c  gcc/testsuite/g++.dg/cpp1z/constexpr-89074-1.C
  45c5f013f34b63d5d77c2d394365a506  gcc/testsuite/g++.dg/cpp1z/constexpr-96575.C
! db812bf22a911000584c903aac50ffd3  gcc/testsuite/g++.dg/cpp1z/constexpr-96862.C
  731a5da264413704826d204eeb2f2046  gcc/testsuite/g++.dg/cpp1z/constexpr-aggr-base1.C
  58f65982ee216b64a2a721ba861c9e63  gcc/testsuite/g++.dg/cpp1z/constexpr-array1.C
  70b535b9e8c7e79ff364a6bca9996aa2  gcc/testsuite/g++.dg/cpp1z/constexpr-array2.C
--- 17548,17554 ----
  6962bfa121a4383ee0b7a8f045abde3f  gcc/testsuite/g++.dg/cpp1z/constexpr-84684.C
  7417be75f23f5974ec35fe6261395c8c  gcc/testsuite/g++.dg/cpp1z/constexpr-89074-1.C
  45c5f013f34b63d5d77c2d394365a506  gcc/testsuite/g++.dg/cpp1z/constexpr-96575.C
! 05bce0543fadbbc8e4714a46234cbf88  gcc/testsuite/g++.dg/cpp1z/constexpr-96862.C
  731a5da264413704826d204eeb2f2046  gcc/testsuite/g++.dg/cpp1z/constexpr-aggr-base1.C
  58f65982ee216b64a2a721ba861c9e63  gcc/testsuite/g++.dg/cpp1z/constexpr-array1.C
  70b535b9e8c7e79ff364a6bca9996aa2  gcc/testsuite/g++.dg/cpp1z/constexpr-array2.C
*************** d309961f0255b13605cf111efa2b095a  gcc/te
*** 15916,15921 ****
--- 17557,17563 ----
  6031d9adb83bdf87e2dd05c8108493d1  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda2.C
  6a2eb0af9be5a3b73df8e66127a94fd9  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda3.C
  2746f29337da849f597ad6ce8bbb74c2  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda4.C
+ f40b7c3743735802b3e2fa6c768cf560  gcc/testsuite/g++.dg/cpp1z/constexpr-if-lambda5.C
  b70f4276933d24cd68ae2e047a954ece  gcc/testsuite/g++.dg/cpp1z/constexpr-if1.C
  1e52ede853069710bb8cc3b5b323de8c  gcc/testsuite/g++.dg/cpp1z/constexpr-if10.C
  6ad161b09218162d754ac9e397dad17c  gcc/testsuite/g++.dg/cpp1z/constexpr-if11.C
*************** bb1e8039c5f9a1898a554f4a2c5b948b  gcc/te
*** 15947,15952 ****
--- 17589,17595 ----
  285cf42451d3202fa49e91d006ccaf69  gcc/testsuite/g++.dg/cpp1z/constexpr-if35.C
  d2b00d74edfce4b38dded9d7db2fe03e  gcc/testsuite/g++.dg/cpp1z/constexpr-if36.C
  68e49d8c04b03376d365a022cccfff64  gcc/testsuite/g++.dg/cpp1z/constexpr-if37.C
+ 5b41ab566c82afde0e0be2b28cfb55e4  gcc/testsuite/g++.dg/cpp1z/constexpr-if38.C
  d32800b4d59baf4fd0d00036181adc4d  gcc/testsuite/g++.dg/cpp1z/constexpr-if4.C
  8fa44fc4f9f1105ec488f8e5308e62eb  gcc/testsuite/g++.dg/cpp1z/constexpr-if5.C
  dd3fed7a614d71be04ab2475cca10561  gcc/testsuite/g++.dg/cpp1z/constexpr-if6.C
*************** d856b41007ea6fce9b300427ea4f3a6e  gcc/te
*** 15957,15963 ****
  e080cebe9afed7a55a3555d69608d9fb  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
  68bb401876284c37eb017348cfc36d3e  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
  021f84a8505d8464417426c0ef9c52f0  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
! af72d0e033fc90048d45cf71c8c08e97  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
  c249422d923bfc189a9579b50b33bfe4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda14.C
  ee6e08d088f8f045102aa525c2ad0fd3  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
  6b919b4bc8eff80c3ad88bbd2928eb21  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C
--- 17600,17606 ----
  e080cebe9afed7a55a3555d69608d9fb  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda10.C
  68bb401876284c37eb017348cfc36d3e  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda11.C
  021f84a8505d8464417426c0ef9c52f0  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda12.C
! d82499ab05f7008aaec7d49167312b01  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda13.C
  c249422d923bfc189a9579b50b33bfe4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda14.C
  ee6e08d088f8f045102aa525c2ad0fd3  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda15.C
  6b919b4bc8eff80c3ad88bbd2928eb21  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda16.C
*************** b304cf37009380270fe9705af58081b3  gcc/te
*** 15971,15978 ****
  e85ae52cdaf9d0d5b13778ba237ba5c5  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda23.C
  58bd2e2abbc1edcb0a954b8ed6ac8821  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C
  f4382f5ede902e4b05c952d6a46baa75  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda25.C
! dce176a560dd4b2fef1e83521ee11564  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C
  74b8e6f3e9a38c9d67cce0f399c25360  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda27.C
  7a1275d47f91f21fc9a37f0e47b89dad  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
  5267d9825ab86007a9529cb6214eae5c  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
  7b6d8d9af2ed24c66e7de295c6bd2cf9  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
--- 17614,17622 ----
  e85ae52cdaf9d0d5b13778ba237ba5c5  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda23.C
  58bd2e2abbc1edcb0a954b8ed6ac8821  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda24.C
  f4382f5ede902e4b05c952d6a46baa75  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda25.C
! f1fc38f24c3138cf2bcf0c1361f8b2c4  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda26.C
  74b8e6f3e9a38c9d67cce0f399c25360  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda27.C
+ c41894a4bd54230ff06cc2b36b53cc79  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda28.C
  7a1275d47f91f21fc9a37f0e47b89dad  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda3.C
  5267d9825ab86007a9529cb6214eae5c  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda4.C
  7b6d8d9af2ed24c66e7de295c6bd2cf9  gcc/testsuite/g++.dg/cpp1z/constexpr-lambda5.C
*************** ea7e537a1ad5bc31eef18e636048f90d  gcc/te
*** 15991,15997 ****
  84bc152455f2541db49df06bc811b1f3  gcc/testsuite/g++.dg/cpp1z/decomp1.C
  a0b3020edb75d5164c9ece29abdf24d9  gcc/testsuite/g++.dg/cpp1z/decomp10.C
  bca94d5b89a5ff54a9e3c7eed7d82bfe  gcc/testsuite/g++.dg/cpp1z/decomp11.C
! 6c54393bd5410a4e3b7fc0a106c77c4d  gcc/testsuite/g++.dg/cpp1z/decomp12.C
  3fceb1dad7da2cc8d70fe589c21d3987  gcc/testsuite/g++.dg/cpp1z/decomp13.C
  72b6de75b1c8712c69b2d76eab343f88  gcc/testsuite/g++.dg/cpp1z/decomp14.C
  348d97b211be83206cfabd69ff694805  gcc/testsuite/g++.dg/cpp1z/decomp15.C
--- 17635,17641 ----
  84bc152455f2541db49df06bc811b1f3  gcc/testsuite/g++.dg/cpp1z/decomp1.C
  a0b3020edb75d5164c9ece29abdf24d9  gcc/testsuite/g++.dg/cpp1z/decomp10.C
  bca94d5b89a5ff54a9e3c7eed7d82bfe  gcc/testsuite/g++.dg/cpp1z/decomp11.C
! 698f42f497a250e1253b22f3e0b2b89c  gcc/testsuite/g++.dg/cpp1z/decomp12.C
  3fceb1dad7da2cc8d70fe589c21d3987  gcc/testsuite/g++.dg/cpp1z/decomp13.C
  72b6de75b1c8712c69b2d76eab343f88  gcc/testsuite/g++.dg/cpp1z/decomp14.C
  348d97b211be83206cfabd69ff694805  gcc/testsuite/g++.dg/cpp1z/decomp15.C
*************** af1e704cf45a12bb8c7e2865e6b7debc  gcc/te
*** 16037,16044 ****
  1464417f149b2affc5587e647192d27f  gcc/testsuite/g++.dg/cpp1z/decomp51.C
  713d57a2d4c81f9a5b157a3078e995a1  gcc/testsuite/g++.dg/cpp1z/decomp52.C
  483e3caa4572c2f88ee6dff747cf3056  gcc/testsuite/g++.dg/cpp1z/decomp53.C
! 46ef66cc9a593b59b8b3f161586b0533  gcc/testsuite/g++.dg/cpp1z/decomp54.C
  9e963a76a6e736436964ce0e71d75f41  gcc/testsuite/g++.dg/cpp1z/decomp55.C
  1bdca83f97c5e15ddd3eda87ca5353f2  gcc/testsuite/g++.dg/cpp1z/decomp6.C
  09468d9aa8e4fe8ac0677b17a3c509a2  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  0d7ba62c8322f4f98a085026e3ac529a  gcc/testsuite/g++.dg/cpp1z/decomp8.C
--- 17681,17691 ----
  1464417f149b2affc5587e647192d27f  gcc/testsuite/g++.dg/cpp1z/decomp51.C
  713d57a2d4c81f9a5b157a3078e995a1  gcc/testsuite/g++.dg/cpp1z/decomp52.C
  483e3caa4572c2f88ee6dff747cf3056  gcc/testsuite/g++.dg/cpp1z/decomp53.C
! b7d7403e79705b373448ba972b81c55d  gcc/testsuite/g++.dg/cpp1z/decomp54.C
  9e963a76a6e736436964ce0e71d75f41  gcc/testsuite/g++.dg/cpp1z/decomp55.C
+ b2c624c1eaea788d603bfc8204fdaee7  gcc/testsuite/g++.dg/cpp1z/decomp56.C
+ 7473f4d78f4cab74d8165611ea38a63d  gcc/testsuite/g++.dg/cpp1z/decomp57.C
+ 055f4b76f99d823ab62ec060da73a672  gcc/testsuite/g++.dg/cpp1z/decomp58.C
  1bdca83f97c5e15ddd3eda87ca5353f2  gcc/testsuite/g++.dg/cpp1z/decomp6.C
  09468d9aa8e4fe8ac0677b17a3c509a2  gcc/testsuite/g++.dg/cpp1z/decomp7.C
  0d7ba62c8322f4f98a085026e3ac529a  gcc/testsuite/g++.dg/cpp1z/decomp8.C
*************** b0b559b7ffc93f41fa89c0810a34700c  gcc/te
*** 16063,16068 ****
--- 17710,17716 ----
  b1d46849077c6ddc0bf882ba4c716533  gcc/testsuite/g++.dg/cpp1z/eval-order8.C
  ac52217413394dc373d70b0ce1022a25  gcc/testsuite/g++.dg/cpp1z/eval-order9.C
  8aee82acb16c495821151939f3d0d794  gcc/testsuite/g++.dg/cpp1z/fallthrough1.C
+ 3fa16146d012ac31fce940c8a77072a5  gcc/testsuite/g++.dg/cpp1z/fallthrough2.C
  94fc4260b2d8c506d1ac06cb7d4f1d7f  gcc/testsuite/g++.dg/cpp1z/feat-cxx1z.C
  ccf8e15dbea694ff2ac1c38763e318b9  gcc/testsuite/g++.dg/cpp1z/fold-ice1.C
  ce2a217eddd91a6985c4920af6223b7f  gcc/testsuite/g++.dg/cpp1z/fold-lambda.C
*************** bd11bdac9c20a2f5798e7207aca814ab  gcc/te
*** 16087,16092 ****
--- 17735,17741 ----
  fade45a91157c646e6940a215501f1c9  gcc/testsuite/g++.dg/cpp1z/gen-attrs1.C
  ac9f13854ea3e455a1371aaa819ee22a  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations1.C
  5f34b6f6c6b9801ac84fd35a7072c291  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations2.C
+ 9f9fa73c4ae67e4de5904663c140998d  gcc/testsuite/g++.dg/cpp1z/has-unique-obj-representations3.C
  712e0c3f886fdb90e5e03d39bd877f92  gcc/testsuite/g++.dg/cpp1z/inh-ctor1.C
  a5a039fe3394138160509efa1a2212c5  gcc/testsuite/g++.dg/cpp1z/inh-ctor22.C
  08e66730eb666f41f2d9476748d3745f  gcc/testsuite/g++.dg/cpp1z/inh-ctor23.C
*************** bedc458500693b5518d2b34bdc4de5cb  gcc/te
*** 16185,16190 ****
--- 17834,17841 ----
  34cf97af47dbe4a7ade75b94363e77b9  gcc/testsuite/g++.dg/cpp1z/noexcept-type23.C
  8a677f921d635efea7480743417cad8f  gcc/testsuite/g++.dg/cpp1z/noexcept-type24.C
  c5c848aea6f9a89e57f856a7b0fcfa31  gcc/testsuite/g++.dg/cpp1z/noexcept-type25.C
+ e12f74995acc66bd02b8c9f5d34a8f25  gcc/testsuite/g++.dg/cpp1z/noexcept-type26.C
+ 302828ca56d4a605a4eedc8975baf4ab  gcc/testsuite/g++.dg/cpp1z/noexcept-type27.C
  a07bd6eee0bbce4f76caa1372e66c614  gcc/testsuite/g++.dg/cpp1z/noexcept-type3.C
  a1507d2a44a55f27a0e7109b7c2a2c43  gcc/testsuite/g++.dg/cpp1z/noexcept-type4.C
  2cbc6352072676c50982358370c66f1e  gcc/testsuite/g++.dg/cpp1z/noexcept-type5.C
*************** ae3e1959f85f05c9ec509a6dbdbe24ca  gcc/te
*** 16219,16224 ****
--- 17870,17876 ----
  97b68e1efbd20ee3ef9eee20ccf717b4  gcc/testsuite/g++.dg/cpp1z/nontype3a.C
  6459f300d92f04eeb92c53237b82baac  gcc/testsuite/g++.dg/cpp1z/nontype4.C
  2d69a9b79c8f3fadb2bfb68b9d761c49  gcc/testsuite/g++.dg/cpp1z/nontype4a.C
+ 914a640ece1bdc2a12062de65d60a78d  gcc/testsuite/g++.dg/cpp1z/nontype5.C
  e668ace19a2b0d8946e0e19fd8317af1  gcc/testsuite/g++.dg/cpp1z/pr78771.C
  bc5edc17d9b70d77a054dd4736a66223  gcc/testsuite/g++.dg/cpp1z/pr79143.C
  3e5ca07aaa322577e51fd003d9524cb0  gcc/testsuite/g++.dg/cpp1z/pr81016.C
*************** f35c40f9359deda380357490b21bcf4f  gcc/te
*** 16250,16255 ****
--- 17902,17913 ----
  df4eaf51ddd73d7721c81b9a43f313c1  gcc/testsuite/g++.dg/cpp1z/typename-tmpl-tmpl-parm.C
  b33c734a6f689f16e5befdf42860a32f  gcc/testsuite/g++.dg/cpp1z/typename1.C
  08ab2d76f8b4e7d3166de74a36486eda  gcc/testsuite/g++.dg/cpp1z/udlit-utf8char.C
+ 50eba80d59cd585a49aeec5589dc00b3  gcc/testsuite/g++.dg/cpp1z/using-variadic1.C
+ 680b03d95ec43657a2a8c729a00f2976  gcc/testsuite/g++.dg/cpp1z/using-variadic1a.C
+ e98b7a63d6e3d9d44285db784c6b81cf  gcc/testsuite/g++.dg/cpp1z/using-variadic1b.C
+ 741abbe15f9dce96344af440f71cd51e  gcc/testsuite/g++.dg/cpp1z/using-variadic1c.C
+ a09ad82525aa7c9f93cdbaea3b4abc3a  gcc/testsuite/g++.dg/cpp1z/using-variadic2.C
+ bb012172207ca9da13842f645907e099  gcc/testsuite/g++.dg/cpp1z/using-variadic3.C
  3539aa7fb3975221508673bff555cbd4  gcc/testsuite/g++.dg/cpp1z/using1.C
  fc52ea62e2ecaeb1c4cf7f35a542b61c  gcc/testsuite/g++.dg/cpp1z/using2.C
  c5f6b89265916b0fda61728cb9e20fb8  gcc/testsuite/g++.dg/cpp1z/using3.C
*************** fcb976b72ee32e007373a445749a9790  gcc/te
*** 16263,16270 ****
  5be5d7f2f40f7aea358f9007942afde2  gcc/testsuite/g++.dg/cpp1z/utf8-2a.C
  744ee2159e8e7541ebf28afa0155714d  gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
  c307915525471ee8f08e6059faf237d8  gcc/testsuite/g++.dg/cpp1z/utf8.C
  21a6016a5ed226991ec2335d7534f279  gcc/testsuite/g++.dg/cpp23/auto-array.C
! c2925243df4a98c7db45d3f75b3740b2  gcc/testsuite/g++.dg/cpp23/auto-array2.C
  82713ac60222a2a50f281bf875d44dd2  gcc/testsuite/g++.dg/cpp23/auto-array3.C
  5f84b8e5dc9371ae970490708491ce3c  gcc/testsuite/g++.dg/cpp23/auto-array4.C
  cf5aa0107f8f30f3fff1a4de8babd1c7  gcc/testsuite/g++.dg/cpp23/auto-fncast1.C
--- 17921,17951 ----
  5be5d7f2f40f7aea358f9007942afde2  gcc/testsuite/g++.dg/cpp1z/utf8-2a.C
  744ee2159e8e7541ebf28afa0155714d  gcc/testsuite/g++.dg/cpp1z/utf8-neg.C
  c307915525471ee8f08e6059faf237d8  gcc/testsuite/g++.dg/cpp1z/utf8.C
+ 96100c9c0eee26169c18c9e98c78acae  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-1.C
+ ab8d769d7df5db81722e76d1b5e07250  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-10.C
+ 219e4c16bcfde896ae8ad8dce8b3e6b0  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-11.C
+ 7aceb5085964bd08da1567e7fc2a2258  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-12.C
+ 17085ad709b141de0dcd540c1cc2f10c  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-2.C
+ b80521bcf8685582dcd5368ebbbfef73  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-3.C
+ 83a89de38210e1a961c2699c43eb7739  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-4.C
+ 1acfb59d3d55c1e5f48f82edbc444ed8  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-5.C
+ aabac47f38012a93ad470d7e41680b5b  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-6.C
+ aa30e2b638e1b8a3dba4997c80595495  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-7.C
+ 598631386feb4d471266f1247348f456  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-8.C
+ b3b323fdea6c9e2f2b6d012d7a438e1f  gcc/testsuite/g++.dg/cpp23/Winvalid-utf8-9.C
+ 7837f5c32c4b8abc87d95207505bc9e8  gcc/testsuite/g++.dg/cpp23/attr-assume-opt.C
+ 19e4e3b00944ad3ecd30a121ea178980  gcc/testsuite/g++.dg/cpp23/attr-assume1.C
+ 50cef13b8381a6236d21785b262b62be  gcc/testsuite/g++.dg/cpp23/attr-assume10.C
+ 30f34a5b440747c2315dd732987e6daf  gcc/testsuite/g++.dg/cpp23/attr-assume2.C
+ 9444531c46542730746629511362820c  gcc/testsuite/g++.dg/cpp23/attr-assume3.C
+ dacec95fc1b9a4769b02ffcc28997c4e  gcc/testsuite/g++.dg/cpp23/attr-assume4.C
+ 23aa3e306ebd887dd6b9a683e68874e7  gcc/testsuite/g++.dg/cpp23/attr-assume5.C
+ 073786c67788e76973e34a60cf325df8  gcc/testsuite/g++.dg/cpp23/attr-assume6.C
+ 8174894ec578008aaa03363036503946  gcc/testsuite/g++.dg/cpp23/attr-assume7.C
+ 611afd8fc373948e7c0e1f9ed997d4be  gcc/testsuite/g++.dg/cpp23/attr-assume8.C
+ e03a9652868a08dd3545dcbaf8dbfc62  gcc/testsuite/g++.dg/cpp23/attr-assume9.C
  21a6016a5ed226991ec2335d7534f279  gcc/testsuite/g++.dg/cpp23/auto-array.C
! 13e32d100e8a9401518d444c64f6e0f1  gcc/testsuite/g++.dg/cpp23/auto-array2.C
  82713ac60222a2a50f281bf875d44dd2  gcc/testsuite/g++.dg/cpp23/auto-array3.C
  5f84b8e5dc9371ae970490708491ce3c  gcc/testsuite/g++.dg/cpp23/auto-array4.C
  cf5aa0107f8f30f3fff1a4de8babd1c7  gcc/testsuite/g++.dg/cpp23/auto-fncast1.C
*************** ee32c4ffc3127b060ad7d2d7978d4c00  gcc/te
*** 16280,16285 ****
--- 17961,17967 ----
  8a8ca882186bd5d55e6181a90b89c5b0  gcc/testsuite/g++.dg/cpp23/auto-fncast8.C
  908376aadbb678dfe697398a3cf0bdb3  gcc/testsuite/g++.dg/cpp23/auto-fncast9.C
  436f3521c73eff29eb95a9935488f619  gcc/testsuite/g++.dg/cpp23/charlit-encoding1.C
+ bbd34d70bffdb5659d43e105cc5654f0  gcc/testsuite/g++.dg/cpp23/charset1.C
  a5e6981af3e3d461e280ff24cd289402  gcc/testsuite/g++.dg/cpp23/concepts-err1.C
  636155e5662c48788ae52677e22b5249  gcc/testsuite/g++.dg/cpp23/consteval-if1.C
  c28c6948b623079449034db89bdf8f88  gcc/testsuite/g++.dg/cpp23/consteval-if10.C
*************** f393b96b1ce41606f9636a99684380eb  gcc/te
*** 16294,16315 ****
  c3433159b2bd23aac24ee2591dc866c3  gcc/testsuite/g++.dg/cpp23/consteval-if8.C
  7c4ec5fd631e7574891119be6fac6d15  gcc/testsuite/g++.dg/cpp23/consteval-if9.C
  48fd48c755d95afe74bea715a263d398  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit1.C
  201248a105e514c4c72fbf0a70e36da5  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit2.C
! 29b978782c8ecbf640542ecb33c721df  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit3.C
  95ee7fbe282c20f6111c715f5abb98de  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit4.C
  53c4ea2ddf9cf367f5c2485dffae1c1b  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit5.C
! 6bfd7e3fb2dd8f7e8d9c698e12bcb12d  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit6.C
  e8f7bd0576728e974495935283ad4f39  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit7.C
  94d923eb6e3e9a6e1a82b6aa88915ed5  gcc/testsuite/g++.dg/cpp23/cplusplus.C
! 92d47ef004cad05d17725e67099961ba  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
  b2919427c96be25ae3a72933323c8de1  gcc/testsuite/g++.dg/cpp23/init-stmt1.C
  368308646b02bb36cf22014a0d5bbbdb  gcc/testsuite/g++.dg/cpp23/init-stmt2.C
  794e5eb1bd211982315d61651af3bbaa  gcc/testsuite/g++.dg/cpp23/lambda-attr1.C
  1347e1fb0d78731bd360d6d44225ea34  gcc/testsuite/g++.dg/cpp23/lambda-attr2.C
  570aa212dcff2a498d044c98fa66a858  gcc/testsuite/g++.dg/cpp23/lambda-specifiers1.C
  0b54a398f8b42d5fc1ce9e8f422c3298  gcc/testsuite/g++.dg/cpp23/lambda-specifiers2.C
  7dfb88c8fc8142f5c07fe2c473ad00e1  gcc/testsuite/g++.dg/cpp23/lookup2.C
  9b6a18d5dc65ed2734b38938569e70bd  gcc/testsuite/g++.dg/cpp23/mixed-concat1.C
  687cd081771bc128431790436ec4d97b  gcc/testsuite/g++.dg/cpp23/narrowing-bool1.C
  02ae654405ab40dff13d7bf9efbc86c9  gcc/testsuite/g++.dg/cpp23/normalize1.C
  7aae36e156f721eb96f9f2971ec2efdb  gcc/testsuite/g++.dg/cpp23/normalize2.C
--- 17976,18037 ----
  c3433159b2bd23aac24ee2591dc866c3  gcc/testsuite/g++.dg/cpp23/consteval-if8.C
  7c4ec5fd631e7574891119be6fac6d15  gcc/testsuite/g++.dg/cpp23/consteval-if9.C
  48fd48c755d95afe74bea715a263d398  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit1.C
+ 57a68e125affb9e58476c5c4ece3c3f9  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit10.C
+ 8637c28807e233cb31091397369d92ce  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit11.C
+ 31266ea927ea910e3918941b763c240c  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit12.C
+ a490ba11330505f8eec9ed56f81a8c7b  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit13.C
+ dca9529d6c16087b7bf6e29013d27746  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit14.C
+ bda1d0d9c532526e7ebaa1257a653671  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit15.C
+ eae53a55ba0253ab9c5bef343914467a  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit16.C
+ b0353739febc6092ffa9cf1b33a7eb82  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit17.C
+ b3ca8dd9de1c09728873024fe749e360  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit18.C
  201248a105e514c4c72fbf0a70e36da5  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit2.C
! 69428db5b4777bba6d2516a7c86cb724  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit3.C
  95ee7fbe282c20f6111c715f5abb98de  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit4.C
  53c4ea2ddf9cf367f5c2485dffae1c1b  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit5.C
! ad0337582a851840018e2f052ea50ed7  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit6.C
  e8f7bd0576728e974495935283ad4f39  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit7.C
+ b5ce88b06b4f62273ce5e52103c3e312  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit8.C
+ 8cbdc0b2cb084aa43944f76ad3cc6b4c  gcc/testsuite/g++.dg/cpp23/constexpr-nonlit9.C
  94d923eb6e3e9a6e1a82b6aa88915ed5  gcc/testsuite/g++.dg/cpp23/cplusplus.C
! 00ae59725cb1786e1ee39a6a0679d23b  gcc/testsuite/g++.dg/cpp23/decltype1.C
! ad2798e7c30fce3342d33a7665ce014d  gcc/testsuite/g++.dg/cpp23/decltype2.C
! eb9c16e1c46cc9d0426e008bdad12ca6  gcc/testsuite/g++.dg/cpp23/elision1.C
! a87c887c826d5a234112e3c757dff154  gcc/testsuite/g++.dg/cpp23/elision2.C
! 65836bfa1983f40c012a7624048228c8  gcc/testsuite/g++.dg/cpp23/elision3.C
! 70bb8a412141c211f5e77a14400c0b17  gcc/testsuite/g++.dg/cpp23/elision4.C
! ccf58b30aec99457ebe03575f8fbbc78  gcc/testsuite/g++.dg/cpp23/elision5.C
! 446dca0129eca2851cf1f299a514b6e7  gcc/testsuite/g++.dg/cpp23/elision6.C
! aa66280171c7ab32d5e0accda4bebe4c  gcc/testsuite/g++.dg/cpp23/elision7.C
! 1920ebc9f1e972944422ac737c8036b9  gcc/testsuite/g++.dg/cpp23/ext-floating.h
! 05c5caecbd98fac1ee44d884b0cff074  gcc/testsuite/g++.dg/cpp23/ext-floating1.C
! c72d14ea97191dbb2084a00c896b7069  gcc/testsuite/g++.dg/cpp23/ext-floating10.C
! 34ab61b0739accec69a4e37816f69c50  gcc/testsuite/g++.dg/cpp23/ext-floating11.C
! 3fd33e5fe8b9f6f8c0258a14aa8a28f2  gcc/testsuite/g++.dg/cpp23/ext-floating12.C
! 8cc9d0aee102e32cb9fdbbb7f94b195e  gcc/testsuite/g++.dg/cpp23/ext-floating13.C
! 77c1e1529829f7eb3643512344995ae5  gcc/testsuite/g++.dg/cpp23/ext-floating14.C
! 29a44c513997fa053fa111d0fb85588d  gcc/testsuite/g++.dg/cpp23/ext-floating15.C
! 8cdf78806bffe4427931628cc81ee57f  gcc/testsuite/g++.dg/cpp23/ext-floating2.C
! 4905f5f39ea9557a77ca4fa9b78a2d30  gcc/testsuite/g++.dg/cpp23/ext-floating3.C
! 7cf138b5df4746c5a50ddd27889208d6  gcc/testsuite/g++.dg/cpp23/ext-floating4.C
! 69bfa45bf0e2f69b0931d429ccaffb49  gcc/testsuite/g++.dg/cpp23/ext-floating5.C
! e4eef3325d652767c4b83b6aed8c24b5  gcc/testsuite/g++.dg/cpp23/ext-floating6.C
! 54f4344e911f644cb2cc34417b933914  gcc/testsuite/g++.dg/cpp23/ext-floating7.C
! bc34c96001d8dfdc3193f88b494b97a1  gcc/testsuite/g++.dg/cpp23/ext-floating8.C
! 235a8f3c94e9cc7e9180fe31a3d8352b  gcc/testsuite/g++.dg/cpp23/ext-floating9.C
! b02c822bd8703885dc58d301d32a96cf  gcc/testsuite/g++.dg/cpp23/feat-cxx2b.C
  b2919427c96be25ae3a72933323c8de1  gcc/testsuite/g++.dg/cpp23/init-stmt1.C
  368308646b02bb36cf22014a0d5bbbdb  gcc/testsuite/g++.dg/cpp23/init-stmt2.C
+ 906bfd9572fea8013b12e8c215392381  gcc/testsuite/g++.dg/cpp23/label1.C
+ 9272c39a55b4b056c759abf207a7c7f7  gcc/testsuite/g++.dg/cpp23/label2.C
  794e5eb1bd211982315d61651af3bbaa  gcc/testsuite/g++.dg/cpp23/lambda-attr1.C
  1347e1fb0d78731bd360d6d44225ea34  gcc/testsuite/g++.dg/cpp23/lambda-attr2.C
  570aa212dcff2a498d044c98fa66a858  gcc/testsuite/g++.dg/cpp23/lambda-specifiers1.C
  0b54a398f8b42d5fc1ce9e8f422c3298  gcc/testsuite/g++.dg/cpp23/lambda-specifiers2.C
  7dfb88c8fc8142f5c07fe2c473ad00e1  gcc/testsuite/g++.dg/cpp23/lookup2.C
  9b6a18d5dc65ed2734b38938569e70bd  gcc/testsuite/g++.dg/cpp23/mixed-concat1.C
+ 3003437adbf67244dc2361b7be64aa57  gcc/testsuite/g++.dg/cpp23/named-universal-char-escape1.C
+ 51acd3457bdfae84345457c0cb25f5e0  gcc/testsuite/g++.dg/cpp23/named-universal-char-escape2.C
  687cd081771bc128431790436ec4d97b  gcc/testsuite/g++.dg/cpp23/narrowing-bool1.C
  02ae654405ab40dff13d7bf9efbc86c9  gcc/testsuite/g++.dg/cpp23/normalize1.C
  7aae36e156f721eb96f9f2971ec2efdb  gcc/testsuite/g++.dg/cpp23/normalize2.C
*************** db740268984e13059571b37af26229f7  gcc/te
*** 16319,16333 ****
--- 18041,18070 ----
  8125bd59f190ca2bccecdec26bb94127  gcc/testsuite/g++.dg/cpp23/normalize6.C
  ef7d7c0e26159c8de94fcb3f8aeb2c11  gcc/testsuite/g++.dg/cpp23/normalize7.C
  5fe66da6d2baee159060686defa0e47e  gcc/testsuite/g++.dg/cpp23/size_t-literals.C
+ 15ad584a4607eb422fa274d5aec5df69  gcc/testsuite/g++.dg/cpp23/static-operator-call1.C
+ 2fcd37e13aa3cc9c26d3a3e7d923dbab  gcc/testsuite/g++.dg/cpp23/static-operator-call2.C
+ 0b2d78e96fe7d57bfff4e4de6047d006  gcc/testsuite/g++.dg/cpp23/static-operator-call3.C
+ e44e5999e0fcf946fbaf4cc4247b99ae  gcc/testsuite/g++.dg/cpp23/static-operator-call4.C
+ 40f2c082ef41617a245e900009ecd2cf  gcc/testsuite/g++.dg/cpp23/static-operator-call5.C
+ 8b801aeeb85c01c051a33fa163907dc5  gcc/testsuite/g++.dg/cpp23/static-operator-call6.C
  36f6327df1a56ea4e9b05f09e62c676c  gcc/testsuite/g++.dg/cpp23/subscript1.C
+ cc99147510a4c52615413a1c85c79b07  gcc/testsuite/g++.dg/cpp23/subscript10.C
+ d685ca7f6c3f6496ec36569ed507b984  gcc/testsuite/g++.dg/cpp23/subscript11.C
+ 6a29fb1a8a8a0f85beaee3c353a799da  gcc/testsuite/g++.dg/cpp23/subscript12.C
+ 1ab0414c49ef59714682c647e1f91f8f  gcc/testsuite/g++.dg/cpp23/subscript13.C
+ 126efdb00db3e63cd8b69bac25946a29  gcc/testsuite/g++.dg/cpp23/subscript14.C
  4fc343553d0042f79bb6999971e7f3f1  gcc/testsuite/g++.dg/cpp23/subscript2.C
  5c1847673786b152609b1696a5e8c094  gcc/testsuite/g++.dg/cpp23/subscript3.C
  1cc2764b96a62eefc30e464e19cc2483  gcc/testsuite/g++.dg/cpp23/subscript4.C
  80e6dc5c6a33d1b4cff9fb1b2fd780da  gcc/testsuite/g++.dg/cpp23/subscript5.C
  8fcc8a8ee33aa0447a667acdbe7e96c4  gcc/testsuite/g++.dg/cpp23/subscript6.C
  ac774c183ac6257c45b8fd97824ef1a0  gcc/testsuite/g++.dg/cpp23/subscript7.C
+ 2429cd1bbca4ddb50fb9b3b4970d1c09  gcc/testsuite/g++.dg/cpp23/subscript8.C
+ 69f92ba9546206740265c2f12b503d38  gcc/testsuite/g++.dg/cpp23/subscript9.C
  08f054da96e20dbe3d814a912b9f815e  gcc/testsuite/g++.dg/cpp23/ucnid-1-utf8.C
  1c3bafba4e398318c09ff055adc0c76a  gcc/testsuite/g++.dg/cpp23/ucnid-2-utf8.C
+ 03ae1e87578087f0cf4ef2d37a25cc8d  gcc/testsuite/g++.dg/cpp23/wchar-multi1.C
+ f7e1644f54a3fb578d426877ff479ee8  gcc/testsuite/g++.dg/cpp23/wchar-multi2.C
  60f9d3d6a5d9c7ef12a738913318d3ba  gcc/testsuite/g++.dg/cpp23/whitespace-splice1.C
  6e521186d896dd387882c734f9554b0d  gcc/testsuite/g++.dg/cpp2a/aggr1.C
  4c16f1196fa5b9ac2fd9ba5882eba51c  gcc/testsuite/g++.dg/cpp2a/aggr2.C
*************** bf806c7f6cbefb6e5f28fb5d1a8c3f45  gcc/te
*** 16354,16359 ****
--- 18091,18097 ----
  f45c14802a831b4c2d66638708833b4e  gcc/testsuite/g++.dg/cpp2a/attr-likely4.C
  226027e75a967be6575ae9d36491d307  gcc/testsuite/g++.dg/cpp2a/attr-likely5.C
  fdfceca1c064eeb01d47f6a29cee1f95  gcc/testsuite/g++.dg/cpp2a/attr-likely6.C
+ a645683e350e05caddb94f462f7df70c  gcc/testsuite/g++.dg/cpp2a/attr-likely7.C
  3ad5e93951baf0d22ea016ff9e7e5647  gcc/testsuite/g++.dg/cpp2a/bit-cast1.C
  a3d09682b891e46d2909fa15e90968be  gcc/testsuite/g++.dg/cpp2a/bit-cast10.C
  7a65b964ef0c3be6bb2d00ec1bdc20ac  gcc/testsuite/g++.dg/cpp2a/bit-cast11.C
*************** fc2669bf6c2d9f293b18029e7572dc94  gcc/te
*** 16366,16372 ****
  43041147b254e878b1962b35b230ff79  gcc/testsuite/g++.dg/cpp2a/bit-cast4.C
  4088424a41352416e337df3284b9f736  gcc/testsuite/g++.dg/cpp2a/bit-cast5.C
  bcecfdcccf9edb773fbec699fe2b71c0  gcc/testsuite/g++.dg/cpp2a/bit-cast6.C
! 583ccc51ba286c15a022f783fb8ed515  gcc/testsuite/g++.dg/cpp2a/bit-cast7.C
  39ca439b4e0272dadf02ecf57bd67d4d  gcc/testsuite/g++.dg/cpp2a/bit-cast8.C
  2e7969cce6c326c0c378ccf7a44a7c3a  gcc/testsuite/g++.dg/cpp2a/bit-cast9.C
  efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
--- 18104,18110 ----
  43041147b254e878b1962b35b230ff79  gcc/testsuite/g++.dg/cpp2a/bit-cast4.C
  4088424a41352416e337df3284b9f736  gcc/testsuite/g++.dg/cpp2a/bit-cast5.C
  bcecfdcccf9edb773fbec699fe2b71c0  gcc/testsuite/g++.dg/cpp2a/bit-cast6.C
! 61aba0cc52f75cb4ca2c7ffaf33a1406  gcc/testsuite/g++.dg/cpp2a/bit-cast7.C
  39ca439b4e0272dadf02ecf57bd67d4d  gcc/testsuite/g++.dg/cpp2a/bit-cast8.C
  2e7969cce6c326c0c378ccf7a44a7c3a  gcc/testsuite/g++.dg/cpp2a/bit-cast9.C
  efde6c8c1860e6796275cd76c0810b5d  gcc/testsuite/g++.dg/cpp2a/bitfield1.C
*************** dbb38d79b4b755c3350566626fdf9bd8  gcc/te
*** 16376,16381 ****
--- 18114,18121 ----
  ce2ca706a5ade45822ac6444b2054bc1  gcc/testsuite/g++.dg/cpp2a/builtin-clear-padding1.C
  2a52f543924b11d7fbba0d5b92cdf169  gcc/testsuite/g++.dg/cpp2a/char8_t1.C
  6af0af64f6a4543707d9245ae3e3cb2c  gcc/testsuite/g++.dg/cpp2a/char8_t2.C
+ 3faf95287acad9ed08355200c95e67c0  gcc/testsuite/g++.dg/cpp2a/char8_t3.C
+ 121d1982020c0979c6e39f9b83392c5b  gcc/testsuite/g++.dg/cpp2a/char8_t4.C
  f185c95e6533c47459ae6a6e7821f682  gcc/testsuite/g++.dg/cpp2a/class-deduction-abbrev1.C
  d9bcdea082949e0c87b6954f2dd67298  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr1.C
  28f5f39099d59e2a95b5239e6d85699e  gcc/testsuite/g++.dg/cpp2a/class-deduction-aggr10.C
*************** c5ed9bcafe878933a01c19df089efba7  gcc/te
*** 16396,16401 ****
--- 18136,18145 ----
  a9fe8b77c077e10499786d1f43d69e35  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias11.C
  3388bb7ab766041aa70d73c8c45ae7ec  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias12.C
  81609e2aa65605ef2c3e45e97548fab8  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias13.C
+ d914edd3c3ab496798bf1d77f69b74ea  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias14.C
+ 2fd45558372c260c94bf1de497adb7a1  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias15.C
+ 2b290838af6505f125234e7318ec4249  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias16.C
+ 00dc21cb0889c2c318f9e0cf9567584b  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias17.C
  5fc58f05c478c6749c3f3dd4351420b0  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias2.C
  2fd0252922ffc9e49528942c28494f78  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias3.C
  06de637acc58c0572ef2eb75419e55e3  gcc/testsuite/g++.dg/cpp2a/class-deduction-alias4.C
*************** ea403ba40e42238758942621a96e8847  gcc/te
*** 16422,16427 ****
--- 18166,18173 ----
  63ed441f3454dbb9de59b7ce9563a475  gcc/testsuite/g++.dg/cpp2a/concepts-class2.C
  d19fb841ca3071b5e021ae201278d700  gcc/testsuite/g++.dg/cpp2a/concepts-class3.C
  de871ba0c669234d7775a8dd50e71a82  gcc/testsuite/g++.dg/cpp2a/concepts-class4.C
+ 4bcd92b6654cddea3350b4d87fd6d146  gcc/testsuite/g++.dg/cpp2a/concepts-class5.C
+ e2691e1e7623a7d8148288696c039418  gcc/testsuite/g++.dg/cpp2a/concepts-class5a.C
  23827376311292569303ff5fd4542c5c  gcc/testsuite/g++.dg/cpp2a/concepts-cmath.C
  d6b4a2062d9072a514a787db6f02cc29  gcc/testsuite/g++.dg/cpp2a/concepts-complete1.C
  cb8668f19e63ee61b88c50eb36fc3645  gcc/testsuite/g++.dg/cpp2a/concepts-complete2.C
*************** b767b966d12988229b81b213bca08722  gcc/te
*** 16438,16447 ****
--- 18184,18196 ----
  edb46bdf72eaeb378f5f0d557153ad9d  gcc/testsuite/g++.dg/cpp2a/concepts-decltype.C
  ce0107015099b9bc8bbb6308d69d1335  gcc/testsuite/g++.dg/cpp2a/concepts-decltype2.C
  20942197b42aecb2031c455e6c7139db  gcc/testsuite/g++.dg/cpp2a/concepts-decltype3.C
+ bd5315a1ae1bb7ab6b080320eca4e7cc  gcc/testsuite/g++.dg/cpp2a/concepts-decltype4.C
  2ff1559b74cd8147b9de258edac783b1  gcc/testsuite/g++.dg/cpp2a/concepts-defarg1.C
  8b450b687a58857141c45425bdbf8e80  gcc/testsuite/g++.dg/cpp2a/concepts-defarg2.C
  c215ebfad2b56bf6dd6b0a287515afa7  gcc/testsuite/g++.dg/cpp2a/concepts-dep1.C
  37eafad18707c0514512d3caa8c07489  gcc/testsuite/g++.dg/cpp2a/concepts-dr1430.C
+ b3feeac577b96f98eb5fffae47fd7684  gcc/testsuite/g++.dg/cpp2a/concepts-dr2428.C
+ 91e569a2d0afc96b699ab9a04cf1f9cb  gcc/testsuite/g++.dg/cpp2a/concepts-dtor1.C
  9a6f2742da84cba311f0be393cccdd14  gcc/testsuite/g++.dg/cpp2a/concepts-err1.C
  9cfd545ae89835254bd89b814539ec8f  gcc/testsuite/g++.dg/cpp2a/concepts-err2.C
  d953a772cd1d2f181c0e4b6b2f47961d  gcc/testsuite/g++.dg/cpp2a/concepts-err3.C
*************** a6a50b6488710734804c5c75b79b903a  gcc/te
*** 16467,16472 ****
--- 18216,18226 ----
  361e29e28ac51bd246a126bf9582d546  gcc/testsuite/g++.dg/cpp2a/concepts-fn7.C
  54600170a553fbe02a4c3cc4c16271ab  gcc/testsuite/g++.dg/cpp2a/concepts-fnparm1.C
  ddf7b3c6cc5b3127a1fb9f8ada7bd1d3  gcc/testsuite/g++.dg/cpp2a/concepts-friend1.C
+ 5a78343a21e95f60a8351427c3e14f59  gcc/testsuite/g++.dg/cpp2a/concepts-friend10.C
+ a43f5f4208803d9ed6c5574c442858a6  gcc/testsuite/g++.dg/cpp2a/concepts-friend11.C
+ 9b464178270ccc7b2da3483ef6eb72e3  gcc/testsuite/g++.dg/cpp2a/concepts-friend12.C
+ f48f8abadf7267488e7fc07300b15321  gcc/testsuite/g++.dg/cpp2a/concepts-friend13.C
+ 669a3b82cb1e8c82dff75ea34a1132cb  gcc/testsuite/g++.dg/cpp2a/concepts-friend14.C
  2fdb3d1a7c3f6a1361b9e8a0700d78f5  gcc/testsuite/g++.dg/cpp2a/concepts-friend2.C
  3f315ba7ac021707fcaa518bf77b73e4  gcc/testsuite/g++.dg/cpp2a/concepts-friend3.C
  ac59cd12de1286d61d74c57276a780ba  gcc/testsuite/g++.dg/cpp2a/concepts-friend4.C
*************** a7e2f7d20a67204e43ab8b4439aa4e77  gcc/te
*** 16498,16504 ****
  db4d7afa9cc5c159bbf139e868fd3544  gcc/testsuite/g++.dg/cpp2a/concepts-lambda19.C
  c61f89754bf19eb066c90223050eb1d6  gcc/testsuite/g++.dg/cpp2a/concepts-lambda2.C
  2cdd3df6d70a6187c69e0b2e31916579  gcc/testsuite/g++.dg/cpp2a/concepts-lambda20.C
! f2b845034b89685c0074632f8a1947ff  gcc/testsuite/g++.dg/cpp2a/concepts-lambda3.C
  6f185f0a7016ab67c7f0d4ffa7012182  gcc/testsuite/g++.dg/cpp2a/concepts-lambda4.C
  86976d8466300862e381a2182c187b35  gcc/testsuite/g++.dg/cpp2a/concepts-lambda5.C
  703446324db78bbaafc058da29f6c29d  gcc/testsuite/g++.dg/cpp2a/concepts-lambda6.C
--- 18252,18258 ----
  db4d7afa9cc5c159bbf139e868fd3544  gcc/testsuite/g++.dg/cpp2a/concepts-lambda19.C
  c61f89754bf19eb066c90223050eb1d6  gcc/testsuite/g++.dg/cpp2a/concepts-lambda2.C
  2cdd3df6d70a6187c69e0b2e31916579  gcc/testsuite/g++.dg/cpp2a/concepts-lambda20.C
! c1dc95530d3c5579fce346628c40061a  gcc/testsuite/g++.dg/cpp2a/concepts-lambda3.C
  6f185f0a7016ab67c7f0d4ffa7012182  gcc/testsuite/g++.dg/cpp2a/concepts-lambda4.C
  86976d8466300862e381a2182c187b35  gcc/testsuite/g++.dg/cpp2a/concepts-lambda5.C
  703446324db78bbaafc058da29f6c29d  gcc/testsuite/g++.dg/cpp2a/concepts-lambda6.C
*************** dcc812ca298a6d2d310068abfa0d1270  gcc/te
*** 16510,16515 ****
--- 18264,18270 ----
  d12b098e52b49342652a92f712e212d7  gcc/testsuite/g++.dg/cpp2a/concepts-memfun-err.C
  02865ef6ff74cb9b4108964da2da397f  gcc/testsuite/g++.dg/cpp2a/concepts-memfun.C
  b53c750bcf0863ab645580c6652a2f79  gcc/testsuite/g++.dg/cpp2a/concepts-memfun2.C
+ 2ac2e46289c1f783563a03c5bceb9513  gcc/testsuite/g++.dg/cpp2a/concepts-memfun3.C
  7f5a683e6cb36d020f2d955fd2b5662a  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl1.C
  e09adbfcc76e9a9b156fb1128f518684  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl2.C
  913d434a43b62d7d2f966fd44a4a141e  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl3.C
*************** e09adbfcc76e9a9b156fb1128f518684  gcc/te
*** 16518,16523 ****
--- 18273,18279 ----
  593e03fec80254264cfb8a230ae4ff94  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl5a.C
  f1dc03d643fa050fb5a6c8dbbcc30c67  gcc/testsuite/g++.dg/cpp2a/concepts-memtmpl6.C
  64d63b0665647539131af9fc002ada89  gcc/testsuite/g++.dg/cpp2a/concepts-nested1.C
+ 4c16216f8a3ea23bdba3c8e59f26b37f  gcc/testsuite/g++.dg/cpp2a/concepts-new1.C
  6a7534cd7752ba1e8a71bcb62eaf6954  gcc/testsuite/g++.dg/cpp2a/concepts-nodiscard1.C
  af32b8a680f8728b4cf3162357b86e68  gcc/testsuite/g++.dg/cpp2a/concepts-noexcept1.C
  e4aaef3dab277c2193eb4dcca63838d3  gcc/testsuite/g++.dg/cpp2a/concepts-nonbool1.C
*************** f43d24631924e6835f35ad16f9b77ac9  gcc/te
*** 16546,16560 ****
  b48de652a269ba0411d9c971e6b06869  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec8.C
  66e23ad7cf5207487bf51a95b73faeae  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec9.C
  29ec7a379f70ee79ba0310d8fc45703b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder1.C
  9a1776b1d9b3c080e847b78507e8c1c6  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
  d4ce4a5306e35eff2b78390b50d6c95b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder3.C
  e428d578c8a0c5a61ab85eddccb24071  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder4.C
  7585fa6ca3788d97b1251109859e1448  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder5.C
  c2d0d078fee9a53020db24bba52afb7a  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder6.C
! d52bc31ed2109bf517ab9f47b7e08903  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder7.C
! 8ebe9b5f46fa5edb161d44cdccda7129  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder8.C
  fc797eabdd1dc0d22609e8841d633f99  gcc/testsuite/g++.dg/cpp2a/concepts-pmf1.C
  93d1e55f1ec8ecc0589c4cf386fc18c7  gcc/testsuite/g++.dg/cpp2a/concepts-pr104410.C
  2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/cpp2a/concepts-pr58500.C
  07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/cpp2a/concepts-pr58534.C
  b6ba42db630bfd3259d65662fc03aaa0  gcc/testsuite/g++.dg/cpp2a/concepts-pr58535.C
--- 18302,18322 ----
  b48de652a269ba0411d9c971e6b06869  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec8.C
  66e23ad7cf5207487bf51a95b73faeae  gcc/testsuite/g++.dg/cpp2a/concepts-partial-spec9.C
  29ec7a379f70ee79ba0310d8fc45703b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder1.C
+ 3250feafbcf92ec0eb11831d9a5350a7  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder10.C
+ 966bf7435554a7a150aa0fb09697b04c  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder11.C
+ f57d40e8c8a062ab42228a604dc8b336  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder12.C
+ 3d20f95d326918d497b3b309b9eda0d9  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder13.C
  9a1776b1d9b3c080e847b78507e8c1c6  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder2.C
  d4ce4a5306e35eff2b78390b50d6c95b  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder3.C
  e428d578c8a0c5a61ab85eddccb24071  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder4.C
  7585fa6ca3788d97b1251109859e1448  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder5.C
  c2d0d078fee9a53020db24bba52afb7a  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder6.C
! ab8fffd9ad5ab44288587ff17983258d  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder7.C
! 9635de421565ff55ed64b8b32ded3b6a  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder8.C
! 004db5f35cbf918a16efca84537ed5a1  gcc/testsuite/g++.dg/cpp2a/concepts-placeholder9.C
  fc797eabdd1dc0d22609e8841d633f99  gcc/testsuite/g++.dg/cpp2a/concepts-pmf1.C
  93d1e55f1ec8ecc0589c4cf386fc18c7  gcc/testsuite/g++.dg/cpp2a/concepts-pr104410.C
+ d730bf14b7c6a0ff4579eb13739f7d2f  gcc/testsuite/g++.dg/cpp2a/concepts-pr108579.C
  2e23f19968091d773a47c43a32a784ae  gcc/testsuite/g++.dg/cpp2a/concepts-pr58500.C
  07c6a4dff1357ef61c0d30b12db5c948  gcc/testsuite/g++.dg/cpp2a/concepts-pr58534.C
  b6ba42db630bfd3259d65662fc03aaa0  gcc/testsuite/g++.dg/cpp2a/concepts-pr58535.C
*************** a6017b5415fc2bcf7a3df910703e0137  gcc/te
*** 16571,16582 ****
  19ab34c3acffcfac10237d280b6846a3  gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C
  bc89487bc8fc4fa7edd814ad73b2f5a0  gcc/testsuite/g++.dg/cpp2a/concepts-pr60573.C
  d9e495a50301fc18b6519a58b37f0e75  gcc/testsuite/g++.dg/cpp2a/concepts-pr65552.C
! ef2825ac191806b395137eaaec2b6414  gcc/testsuite/g++.dg/cpp2a/concepts-pr65575.C
  b6b6ca694f72c96ddf8323f8f47b9a30  gcc/testsuite/g++.dg/cpp2a/concepts-pr65634.C
  419ce7f9a789795063fd527a54b173fc  gcc/testsuite/g++.dg/cpp2a/concepts-pr65636.C
  5a1d2311d59bc80baa4a175fc3e9ac7f  gcc/testsuite/g++.dg/cpp2a/concepts-pr65848.C
  3db889f25404e785557f5d1a8bbd3057  gcc/testsuite/g++.dg/cpp2a/concepts-pr65854.C
! d5540bff1427bc002f17c05393848561  gcc/testsuite/g++.dg/cpp2a/concepts-pr66091.C
  eba6b77b814ef5e75a5d87f2147e2c06  gcc/testsuite/g++.dg/cpp2a/concepts-pr66844.C
  df7a18db64b370a45805fb151fc0de95  gcc/testsuite/g++.dg/cpp2a/concepts-pr66962.C
  eade582d72f3e6b1e06dacf6ee9217ce  gcc/testsuite/g++.dg/cpp2a/concepts-pr67070.C
--- 18333,18344 ----
  19ab34c3acffcfac10237d280b6846a3  gcc/testsuite/g++.dg/cpp2a/concepts-pr60391.C
  bc89487bc8fc4fa7edd814ad73b2f5a0  gcc/testsuite/g++.dg/cpp2a/concepts-pr60573.C
  d9e495a50301fc18b6519a58b37f0e75  gcc/testsuite/g++.dg/cpp2a/concepts-pr65552.C
! a37f60c2bf278f20325dbf16793b1252  gcc/testsuite/g++.dg/cpp2a/concepts-pr65575.C
  b6b6ca694f72c96ddf8323f8f47b9a30  gcc/testsuite/g++.dg/cpp2a/concepts-pr65634.C
  419ce7f9a789795063fd527a54b173fc  gcc/testsuite/g++.dg/cpp2a/concepts-pr65636.C
  5a1d2311d59bc80baa4a175fc3e9ac7f  gcc/testsuite/g++.dg/cpp2a/concepts-pr65848.C
  3db889f25404e785557f5d1a8bbd3057  gcc/testsuite/g++.dg/cpp2a/concepts-pr65854.C
! cff9ef71f3d5fa5141efed18dfe765b5  gcc/testsuite/g++.dg/cpp2a/concepts-pr66091.C
  eba6b77b814ef5e75a5d87f2147e2c06  gcc/testsuite/g++.dg/cpp2a/concepts-pr66844.C
  df7a18db64b370a45805fb151fc0de95  gcc/testsuite/g++.dg/cpp2a/concepts-pr66962.C
  eade582d72f3e6b1e06dacf6ee9217ce  gcc/testsuite/g++.dg/cpp2a/concepts-pr67070.C
*************** f1cbfc7c7a5b436ba46f015490d1f5e3  gcc/te
*** 16628,16638 ****
  254ef1258be3b4ea81014ce3f0ff41aa  gcc/testsuite/g++.dg/cpp2a/concepts-pr84140.C
  36d00fa8a1fecaba261bd00d6dd6094e  gcc/testsuite/g++.dg/cpp2a/concepts-pr84551.C
  32711f92204c15d0d19e4313d121f6b8  gcc/testsuite/g++.dg/cpp2a/concepts-pr84810.C
! 2d71d4e3fdb05dc2f79f2d5aff64e1ac  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-2.C
! d51d28c74ca23bd4646a3d3bfb16bcd3  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-3.C
  13fe164a5fd78a533b38323a606f025a  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979.C
! 59cb220f0035bd18b133b1aee68c3f93  gcc/testsuite/g++.dg/cpp2a/concepts-pr84980.C
! 7eeddbc465798c530d779ab3ff662f46  gcc/testsuite/g++.dg/cpp2a/concepts-pr85265.C
  27d70640425a392e01875d0ec6be9397  gcc/testsuite/g++.dg/cpp2a/concepts-pr85706.C
  d2442a59cddf2d53ae6261852ada8b20  gcc/testsuite/g++.dg/cpp2a/concepts-pr85808.C
  e39f914372d756386339c8f07831dc72  gcc/testsuite/g++.dg/cpp2a/concepts-pr85846.C
--- 18390,18400 ----
  254ef1258be3b4ea81014ce3f0ff41aa  gcc/testsuite/g++.dg/cpp2a/concepts-pr84140.C
  36d00fa8a1fecaba261bd00d6dd6094e  gcc/testsuite/g++.dg/cpp2a/concepts-pr84551.C
  32711f92204c15d0d19e4313d121f6b8  gcc/testsuite/g++.dg/cpp2a/concepts-pr84810.C
! b162d4e4e006d83510422cfc497d337c  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-2.C
! e1d69cc096b598b5fdf0c6f74637c141  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979-3.C
  13fe164a5fd78a533b38323a606f025a  gcc/testsuite/g++.dg/cpp2a/concepts-pr84979.C
! c4a0be329501ac323d9af5f4ebe17aeb  gcc/testsuite/g++.dg/cpp2a/concepts-pr84980.C
! a346064e46f9fd63ae127f06df8308b9  gcc/testsuite/g++.dg/cpp2a/concepts-pr85265.C
  27d70640425a392e01875d0ec6be9397  gcc/testsuite/g++.dg/cpp2a/concepts-pr85706.C
  d2442a59cddf2d53ae6261852ada8b20  gcc/testsuite/g++.dg/cpp2a/concepts-pr85808.C
  e39f914372d756386339c8f07831dc72  gcc/testsuite/g++.dg/cpp2a/concepts-pr85846.C
*************** f713831318164c8a8d53cee4f41a5feb  gcc/te
*** 16650,16655 ****
--- 18412,18418 ----
  494a9362815e7269cd14d3b6eb900c68  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat2.C
  c74823853141d61f8e8a8e1d3a3f8bd4  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat3.C
  e73f0ee4378def5488befad6282159a1  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat4.C
+ a5dcc7f1104645e397389de9dc3d2362  gcc/testsuite/g++.dg/cpp2a/concepts-recursive-sat5.C
  05d0c4aeef396d36ed2d0d824682b06c  gcc/testsuite/g++.dg/cpp2a/concepts-redecl1.C
  89a75de6ffea2b5931b15021369b2a4e  gcc/testsuite/g++.dg/cpp2a/concepts-requires1.C
  2a75164ac4ebdba51dd415fcd578a8f9  gcc/testsuite/g++.dg/cpp2a/concepts-requires10.C
*************** a8200681bca98aa623d744251dada14f  gcc/te
*** 16676,16681 ****
--- 18439,18448 ----
  e6e703168548b58827e38ded644feb36  gcc/testsuite/g++.dg/cpp2a/concepts-requires29a.C
  ed7e50860b352f18084c5990524595b2  gcc/testsuite/g++.dg/cpp2a/concepts-requires3.C
  af01c600c3ac040f6855ee2ed2bff7bc  gcc/testsuite/g++.dg/cpp2a/concepts-requires30.C
+ 4e9fea94af314664c5d064df3b008f44  gcc/testsuite/g++.dg/cpp2a/concepts-requires31.C
+ af06791c898f789389685e4dd38b3386  gcc/testsuite/g++.dg/cpp2a/concepts-requires32.C
+ ecb5e52db1e00c05c68ecde56b770c71  gcc/testsuite/g++.dg/cpp2a/concepts-requires33.C
+ 3e21a3f313ac75b520a5d812a344b4aa  gcc/testsuite/g++.dg/cpp2a/concepts-requires34.C
  d3851914c01bf78597e5cb411ed0b3d5  gcc/testsuite/g++.dg/cpp2a/concepts-requires4.C
  480013be0f806d0b078176447ae77360  gcc/testsuite/g++.dg/cpp2a/concepts-requires5.C
  8ea6ab45de0c359b113c65f1958a54a1  gcc/testsuite/g++.dg/cpp2a/concepts-requires6.C
*************** ec9215388b111eac1916dca163b2b4dd  gcc/te
*** 16701,16707 ****
  ee36c7ebc03385f37bcba1c49e06c808  gcc/testsuite/g++.dg/cpp2a/concepts-this1.C
  39c15f1dc604f714304d144250164089  gcc/testsuite/g++.dg/cpp2a/concepts-traits1.C
  c9a6ab7bc0f1947e843b9c7150ccb98c  gcc/testsuite/g++.dg/cpp2a/concepts-traits2.C
! da802903e656a602947ee543e58f625e  gcc/testsuite/g++.dg/cpp2a/concepts-traits3.C
  82c399ad9b34b095f9489e636de58940  gcc/testsuite/g++.dg/cpp2a/concepts-ts1.C
  202e848af4b3017e51ab2eb5995fffeb  gcc/testsuite/g++.dg/cpp2a/concepts-ts2.C
  ea441494e2367b584a16520ca6327732  gcc/testsuite/g++.dg/cpp2a/concepts-ts3.C
--- 18468,18474 ----
  ee36c7ebc03385f37bcba1c49e06c808  gcc/testsuite/g++.dg/cpp2a/concepts-this1.C
  39c15f1dc604f714304d144250164089  gcc/testsuite/g++.dg/cpp2a/concepts-traits1.C
  c9a6ab7bc0f1947e843b9c7150ccb98c  gcc/testsuite/g++.dg/cpp2a/concepts-traits2.C
! c7b62b8031571fb8bca4923e94717551  gcc/testsuite/g++.dg/cpp2a/concepts-traits3.C
  82c399ad9b34b095f9489e636de58940  gcc/testsuite/g++.dg/cpp2a/concepts-ts1.C
  202e848af4b3017e51ab2eb5995fffeb  gcc/testsuite/g++.dg/cpp2a/concepts-ts2.C
  ea441494e2367b584a16520ca6327732  gcc/testsuite/g++.dg/cpp2a/concepts-ts3.C
*************** a85f735eaeba5ac419aa763ef414d52c  gcc/te
*** 16737,16744 ****
--- 18504,18513 ----
  08839525e53c3fc606634abfb05f00d4  gcc/testsuite/g++.dg/cpp2a/cond-triv1.C
  a1c6131537b9b8fdd4e1a9f8ba34bf08  gcc/testsuite/g++.dg/cpp2a/cond-triv1a.C
  b821d53c13959d1237a15620094c9130  gcc/testsuite/g++.dg/cpp2a/cond-triv2.C
+ 3ac8c234ca8a958a27f5fd69dac43b5e  gcc/testsuite/g++.dg/cpp2a/cond-triv3.C
  32d8d55981aa81f973b7e8fdf83830c7  gcc/testsuite/g++.dg/cpp2a/consteval-defarg1.C
  6b5fc6f23fc6df75d45300b8bc1ad4ef  gcc/testsuite/g++.dg/cpp2a/consteval-defarg2.C
+ ed5bc7caf9e0d37742bad332bfb90193  gcc/testsuite/g++.dg/cpp2a/consteval-defarg3.C
  06108a2b84aac0c8eb7f2844fc732944  gcc/testsuite/g++.dg/cpp2a/consteval-expinst1.C
  f29020257148069c835c9a7a2f6c2449  gcc/testsuite/g++.dg/cpp2a/consteval-memfn1.C
  db212700d636aa0588ecc9341fc2ff01  gcc/testsuite/g++.dg/cpp2a/consteval-memfn2.C
*************** b25072b636670ba0bf6636ee75629f7f  gcc/te
*** 16764,16782 ****
  c7a9592af554427e4d3ff8482c958f03  gcc/testsuite/g++.dg/cpp2a/consteval21.C
  455bb311d894e85865796adacbc0dfbc  gcc/testsuite/g++.dg/cpp2a/consteval22.C
  f670522ff5493be6b8a1ad0951c4c2e6  gcc/testsuite/g++.dg/cpp2a/consteval23.C
! d306cf1e4f8279256c5b02b526410efc  gcc/testsuite/g++.dg/cpp2a/consteval24.C
  dd7f450d8249e6d1090b3199c6d986dd  gcc/testsuite/g++.dg/cpp2a/consteval25.C
  419c55859a9fd338cbd6417cdd3b15d3  gcc/testsuite/g++.dg/cpp2a/consteval26.C
  7b94006f015ce630f646bbae9c502103  gcc/testsuite/g++.dg/cpp2a/consteval27.C
  f5703307896a18a98097a63f1f2f7166  gcc/testsuite/g++.dg/cpp2a/consteval28.C
  25fb3b0d5dda2594a4293da515c49586  gcc/testsuite/g++.dg/cpp2a/consteval29.C
! 859ad3618c84933e95dea3b475eaa500  gcc/testsuite/g++.dg/cpp2a/consteval3.C
  d13a3bb7f52d0ff550c2883f5a2c9b93  gcc/testsuite/g++.dg/cpp2a/consteval30.C
  2525d3c20efed8795b290b9c5d66c8ae  gcc/testsuite/g++.dg/cpp2a/consteval31.C
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
  f8b2a0016c59d132f059d57a7638806f  gcc/testsuite/g++.dg/cpp2a/consteval6.C
! bdfb68953ed4b7a071f8df42f94d7b54  gcc/testsuite/g++.dg/cpp2a/consteval7.C
  72c19713fa49fcd9432f9e2dfe1238e0  gcc/testsuite/g++.dg/cpp2a/consteval8.C
  be6031c0bedd5678304d7154f8ea2b35  gcc/testsuite/g++.dg/cpp2a/consteval9.C
  249686f0fb9ecbea2e909ed986426855  gcc/testsuite/g++.dg/cpp2a/constexpr-98122.C
--- 18533,18551 ----
  c7a9592af554427e4d3ff8482c958f03  gcc/testsuite/g++.dg/cpp2a/consteval21.C
  455bb311d894e85865796adacbc0dfbc  gcc/testsuite/g++.dg/cpp2a/consteval22.C
  f670522ff5493be6b8a1ad0951c4c2e6  gcc/testsuite/g++.dg/cpp2a/consteval23.C
! fbd61971d735785a63895ec7c030b3cd  gcc/testsuite/g++.dg/cpp2a/consteval24.C
  dd7f450d8249e6d1090b3199c6d986dd  gcc/testsuite/g++.dg/cpp2a/consteval25.C
  419c55859a9fd338cbd6417cdd3b15d3  gcc/testsuite/g++.dg/cpp2a/consteval26.C
  7b94006f015ce630f646bbae9c502103  gcc/testsuite/g++.dg/cpp2a/consteval27.C
  f5703307896a18a98097a63f1f2f7166  gcc/testsuite/g++.dg/cpp2a/consteval28.C
  25fb3b0d5dda2594a4293da515c49586  gcc/testsuite/g++.dg/cpp2a/consteval29.C
! 5e9983b714bff282c3f35ad02d70ad20  gcc/testsuite/g++.dg/cpp2a/consteval3.C
  d13a3bb7f52d0ff550c2883f5a2c9b93  gcc/testsuite/g++.dg/cpp2a/consteval30.C
  2525d3c20efed8795b290b9c5d66c8ae  gcc/testsuite/g++.dg/cpp2a/consteval31.C
  2d6205fea644048201c44086df527c3a  gcc/testsuite/g++.dg/cpp2a/consteval4.C
  e71633ec506016932dc09c057d98c36c  gcc/testsuite/g++.dg/cpp2a/consteval5.C
  f8b2a0016c59d132f059d57a7638806f  gcc/testsuite/g++.dg/cpp2a/consteval6.C
! 6517514915e5a24d0ee38257c46994cc  gcc/testsuite/g++.dg/cpp2a/consteval7.C
  72c19713fa49fcd9432f9e2dfe1238e0  gcc/testsuite/g++.dg/cpp2a/consteval8.C
  be6031c0bedd5678304d7154f8ea2b35  gcc/testsuite/g++.dg/cpp2a/consteval9.C
  249686f0fb9ecbea2e909ed986426855  gcc/testsuite/g++.dg/cpp2a/constexpr-98122.C
*************** d28d3e5520803aa70919b2a4b20e6386  gcc/te
*** 16785,16790 ****
--- 18554,18562 ----
  cbf5d5a37bc2a85bde738f9433003a39  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor10.C
  08860ee32627d515f3d5dc256b10d0a9  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor11.C
  0e35a64721caa10ace15014c6a57e598  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C
+ 9e266e2e7c32bba4e0b7648c83e4833c  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor13.C
+ 993e4c6829e9ab56db460153dc55bad1  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor14.C
+ 1020d355cd830dffa45dfd17a95222fa  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor15.C
  18ceb8d2ffe5d8e310f40839d2edf0d5  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor2.C
  4161e44d5b894de84f1601dd80255a1b  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor3.C
  780076eefadeb33a1dce586533960b80  gcc/testsuite/g++.dg/cpp2a/constexpr-dtor4.C
*************** c6ad8dd084ea7848f43b81095f5664a0  gcc/te
*** 16835,16840 ****
--- 18607,18613 ----
  2afe0fb80d2df81a442af38326ae475c  gcc/testsuite/g++.dg/cpp2a/constexpr-init8.C
  6f831164f051d810464fd57353d1f786  gcc/testsuite/g++.dg/cpp2a/constexpr-init9.C
  8cdbce536f6ecfcbdb0c5b905216c240  gcc/testsuite/g++.dg/cpp2a/constexpr-inst1.C
+ 288c41333bc2400992edf593d86564f4  gcc/testsuite/g++.dg/cpp2a/constexpr-inst2.C
  fc64959989383a30e896772beafe5765  gcc/testsuite/g++.dg/cpp2a/constexpr-new1.C
  bf612b2e0a4a17b8bf679dd44dbbf19c  gcc/testsuite/g++.dg/cpp2a/constexpr-new10.C
  8f2efe7c8b150f5362a6ee3c235d3d14  gcc/testsuite/g++.dg/cpp2a/constexpr-new11.C
*************** d1fc949626e604a60a7cd826bb9fe696  gcc/te
*** 16854,16860 ****
  44e96a6cfd450fc9d40c13cc7a4e98f3  gcc/testsuite/g++.dg/cpp2a/constexpr-new4.C
  09667d3c51ef176269e12b2ece101f3d  gcc/testsuite/g++.dg/cpp2a/constexpr-new5.C
  09667d3c51ef176269e12b2ece101f3d  gcc/testsuite/g++.dg/cpp2a/constexpr-new6.C
! f6fd24fce19ffd757bf721f94a36b7f4  gcc/testsuite/g++.dg/cpp2a/constexpr-new7.C
  d29f558af48deff313645aecd90adb8d  gcc/testsuite/g++.dg/cpp2a/constexpr-new8.C
  89741a348551bf62e5198e689a2cb9eb  gcc/testsuite/g++.dg/cpp2a/constexpr-new9.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
--- 18627,18633 ----
  44e96a6cfd450fc9d40c13cc7a4e98f3  gcc/testsuite/g++.dg/cpp2a/constexpr-new4.C
  09667d3c51ef176269e12b2ece101f3d  gcc/testsuite/g++.dg/cpp2a/constexpr-new5.C
  09667d3c51ef176269e12b2ece101f3d  gcc/testsuite/g++.dg/cpp2a/constexpr-new6.C
! c4beb3372cb0e77f36a788efb02031c2  gcc/testsuite/g++.dg/cpp2a/constexpr-new7.C
  d29f558af48deff313645aecd90adb8d  gcc/testsuite/g++.dg/cpp2a/constexpr-new8.C
  89741a348551bf62e5198e689a2cb9eb  gcc/testsuite/g++.dg/cpp2a/constexpr-new9.C
  fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/testsuite/g++.dg/cpp2a/constexpr-shift1.C
*************** fe2e298a3cf2e9094a79a25a4ffd8fc2  gcc/te
*** 16862,16868 ****
  27ac7e1957f04ea6ee6160a7f7c14ecc  gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C
  c169c0f663257a769b1da0d94c0c7307  gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C
  d74e93a21b21eb22ce0742e9b6bbb923  gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C
! 6d4991f71185ad9d281f612d66716d33  gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C
  e8575fbcf5a3e212ea28a4b89fbf8253  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
  e9ee7a058b99aafd367d4607dea8fd61  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid2.C
  f078be8dacba182f7d71dbd5dc780d67  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid3.C
--- 18635,18641 ----
  27ac7e1957f04ea6ee6160a7f7c14ecc  gcc/testsuite/g++.dg/cpp2a/constexpr-try2.C
  c169c0f663257a769b1da0d94c0c7307  gcc/testsuite/g++.dg/cpp2a/constexpr-try3.C
  d74e93a21b21eb22ce0742e9b6bbb923  gcc/testsuite/g++.dg/cpp2a/constexpr-try4.C
! 02c2a396d7fac0a627ada9a52c486da3  gcc/testsuite/g++.dg/cpp2a/constexpr-try5.C
  e8575fbcf5a3e212ea28a4b89fbf8253  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid1.C
  e9ee7a058b99aafd367d4607dea8fd61  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid2.C
  f078be8dacba182f7d71dbd5dc780d67  gcc/testsuite/g++.dg/cpp2a/constexpr-typeid3.C
*************** aad62a0962b0becb6f9d460d4e8a552b  gcc/te
*** 16881,16886 ****
--- 18654,18660 ----
  b41b1406ccaabb57748ecf4f05c3e13b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual19.C
  8356345162577a74b103ae82b69fde6d  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual2.C
  86447166a312855244c09f8495d3f788  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual20.C
+ 231e5def1ab26653f262d59a62914c61  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual21.C
  387607aa06c3438be11d475781b728ae  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual3.C
  4d58f9556b7091659bbc5730f1a2697b  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual4.C
  ff80d3043b2e823e497517b5dffee736  gcc/testsuite/g++.dg/cpp2a/constexpr-virtual5.C
*************** a5ab0c1acf96ddc777b5af2b1b69b23d  gcc/te
*** 16897,16904 ****
  94ee35190fa1fe7affa8b19c3f096e85  gcc/testsuite/g++.dg/cpp2a/constinit15.C
  b4a46903f1578c613195d03127dbcae5  gcc/testsuite/g++.dg/cpp2a/constinit16.C
  6711d333549a07ea54942f18c64f8a0a  gcc/testsuite/g++.dg/cpp2a/constinit17.C
  9f7da905ea744d36251021c627953aa7  gcc/testsuite/g++.dg/cpp2a/constinit2.C
! ec97b4f24af7c726b645ccd07978270a  gcc/testsuite/g++.dg/cpp2a/constinit3.C
  ec5836ef75d0047a1e68f87292524d25  gcc/testsuite/g++.dg/cpp2a/constinit4.C
  dedfc59644b0e60dc6b2af2a6aa72984  gcc/testsuite/g++.dg/cpp2a/constinit5.C
  b096e4f747004d3775e106436def90fb  gcc/testsuite/g++.dg/cpp2a/constinit6.C
--- 18671,18679 ----
  94ee35190fa1fe7affa8b19c3f096e85  gcc/testsuite/g++.dg/cpp2a/constinit15.C
  b4a46903f1578c613195d03127dbcae5  gcc/testsuite/g++.dg/cpp2a/constinit16.C
  6711d333549a07ea54942f18c64f8a0a  gcc/testsuite/g++.dg/cpp2a/constinit17.C
+ 5f1a0d190f7b063f2ab37e1844af8991  gcc/testsuite/g++.dg/cpp2a/constinit18.C
  9f7da905ea744d36251021c627953aa7  gcc/testsuite/g++.dg/cpp2a/constinit2.C
! bfb75b72cdd7648ff4412bc1f4c20b7e  gcc/testsuite/g++.dg/cpp2a/constinit3.C
  ec5836ef75d0047a1e68f87292524d25  gcc/testsuite/g++.dg/cpp2a/constinit4.C
  dedfc59644b0e60dc6b2af2a6aa72984  gcc/testsuite/g++.dg/cpp2a/constinit5.C
  b096e4f747004d3775e106436def90fb  gcc/testsuite/g++.dg/cpp2a/constinit6.C
*************** a36a7ca1d0eff1f81629dd71a462961f  gcc/te
*** 16911,16916 ****
--- 18686,18695 ----
  97d028d9e7af8226aa281ebcad5bf29f  gcc/testsuite/g++.dg/cpp2a/decomp1.C
  aad29b064fff817ac1e3a613ef44faf8  gcc/testsuite/g++.dg/cpp2a/decomp2.C
  3346982296b26f900025d1f7046594b7  gcc/testsuite/g++.dg/cpp2a/decomp3.C
+ c45bd99bf81821c6c33a6bec2da4fce3  gcc/testsuite/g++.dg/cpp2a/decomp4.C
+ 0cbb7f35ec543d54c041228759e5d4b2  gcc/testsuite/g++.dg/cpp2a/decomp5.C
+ 37c6af01f09276138cc81194ca94d2c2  gcc/testsuite/g++.dg/cpp2a/decomp6.C
+ 56c35ac32cb997a7957999034dc6688f  gcc/testsuite/g++.dg/cpp2a/decomp7.C
  9e5b823284742c68e17318ea0110e785  gcc/testsuite/g++.dg/cpp2a/desig1.C
  103bcc9cdab7e0e9e904e2a42cfecd99  gcc/testsuite/g++.dg/cpp2a/desig10.C
  3826f47812937a822640bb78864297c9  gcc/testsuite/g++.dg/cpp2a/desig11.C
*************** ac9badd1182f4823050414ca0e462c36  gcc/te
*** 16956,16961 ****
--- 18735,18741 ----
  bbaa6b9b318dd0cb35b260ac54ce5548  gcc/testsuite/g++.dg/cpp2a/explicit16.C
  ce913ea3fabca8ffd187ffabb084a00b  gcc/testsuite/g++.dg/cpp2a/explicit17.C
  6be3c9cb493cf61cf693eedf2068611c  gcc/testsuite/g++.dg/cpp2a/explicit18.C
+ 08709b8f0b36b23322cf7dc54b58664f  gcc/testsuite/g++.dg/cpp2a/explicit19.C
  4f274bd2175020b40ce5b2de0d923fdd  gcc/testsuite/g++.dg/cpp2a/explicit2.C
  e2b8b1544e1a743421685574bc054539  gcc/testsuite/g++.dg/cpp2a/explicit3.C
  7b8cb14575cc7970a40229dcb79d6390  gcc/testsuite/g++.dg/cpp2a/explicit4.C
*************** ffff1f1e5445186cd85fc18de4595b89  gcc/te
*** 16964,16970 ****
  2c9a2b5474c2b3d7b8c260a855385434  gcc/testsuite/g++.dg/cpp2a/explicit7.C
  aa2bb54a77cb3fec28379d767c80f012  gcc/testsuite/g++.dg/cpp2a/explicit8.C
  05f18b846e0e3446396676836acfabc0  gcc/testsuite/g++.dg/cpp2a/explicit9.C
! 24f00de38e48fe6f66d789e3b23daa80  gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
  1308cad2957585ab947868996b5fa85c  gcc/testsuite/g++.dg/cpp2a/fn-template1.C
  96c4e27953bf932ba7135b847e79207d  gcc/testsuite/g++.dg/cpp2a/fn-template10.C
  2cbcabc3565e69c4edf1f078a2c0aecc  gcc/testsuite/g++.dg/cpp2a/fn-template11.C
--- 18744,18750 ----
  2c9a2b5474c2b3d7b8c260a855385434  gcc/testsuite/g++.dg/cpp2a/explicit7.C
  aa2bb54a77cb3fec28379d767c80f012  gcc/testsuite/g++.dg/cpp2a/explicit8.C
  05f18b846e0e3446396676836acfabc0  gcc/testsuite/g++.dg/cpp2a/explicit9.C
! 4b9d48c20a8b8b45356e7df5e2224fa5  gcc/testsuite/g++.dg/cpp2a/feat-cxx2a.C
  1308cad2957585ab947868996b5fa85c  gcc/testsuite/g++.dg/cpp2a/fn-template1.C
  96c4e27953bf932ba7135b847e79207d  gcc/testsuite/g++.dg/cpp2a/fn-template10.C
  2cbcabc3565e69c4edf1f078a2c0aecc  gcc/testsuite/g++.dg/cpp2a/fn-template11.C
*************** d5daad6510fdebbc8a224878e13daadb  gcc/te
*** 16995,17006 ****
  667c1542ea5f74feb06d42ad62ef73db  gcc/testsuite/g++.dg/cpp2a/implicit-move3.C
  66879a3657af8619d59730538e1ee393  gcc/testsuite/g++.dg/cpp2a/inline-asm1.C
  13c4bca5287520b44f794ff87c222cc6  gcc/testsuite/g++.dg/cpp2a/inline-asm2.C
! f9f5ebc76edafa3cb1e99a32c67ec4f3  gcc/testsuite/g++.dg/cpp2a/inline-asm3.C
  5aa6c838680e7a1a1da22f5ee9de6c76  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated1.C
  f2ad91569581aa3fa670ae32821491f9  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated10.C
  90589ce06ced8c136aaf37770e1ec488  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C
  d61cc66863701219edff4cd7fe87ebb9  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated12.C
  c158bbb4df76b9867cf177e079c2ce23  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated13.C
  4617b7d86ad3299b351c033f194bee8a  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated2.C
  73b56ba004639bd18c7c3c95c3bfd080  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated3.C
  5c37b5cacdb70688ac2e90c563d9613c  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated4.C
--- 18775,18787 ----
  667c1542ea5f74feb06d42ad62ef73db  gcc/testsuite/g++.dg/cpp2a/implicit-move3.C
  66879a3657af8619d59730538e1ee393  gcc/testsuite/g++.dg/cpp2a/inline-asm1.C
  13c4bca5287520b44f794ff87c222cc6  gcc/testsuite/g++.dg/cpp2a/inline-asm2.C
! 739ad2cf9ce35fee1ac745e2a41dce8d  gcc/testsuite/g++.dg/cpp2a/inline-asm3.C
  5aa6c838680e7a1a1da22f5ee9de6c76  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated1.C
  f2ad91569581aa3fa670ae32821491f9  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated10.C
  90589ce06ced8c136aaf37770e1ec488  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated11.C
  d61cc66863701219edff4cd7fe87ebb9  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated12.C
  c158bbb4df76b9867cf177e079c2ce23  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated13.C
+ bc1c49df918c7bedb2c04165b007f136  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated14.C
  4617b7d86ad3299b351c033f194bee8a  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated2.C
  73b56ba004639bd18c7c3c95c3bfd080  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated3.C
  5c37b5cacdb70688ac2e90c563d9613c  gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated4.C
*************** d7ed0ebf26a6437db2b5aa0d69a1e9d1  gcc/te
*** 17019,17025 ****
  f02e6aefd434d4811321f7875fea5c79  gcc/testsuite/g++.dg/cpp2a/is-corresponding-member8.C
  78d84cdb6c4c5f91546e47eea2a2f29a  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible1.C
  40b9c7b3198914d9138b2e9cb7c85b9e  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible2.C
! 50717208e5af0da18715a842d5b0bef9  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C
  087bb26b7fb10078d7689347b3385e63  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of1.C
  82ca9bc7a0479a2d7beaa0abe322c607  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class1.C
  c3fcc7088915b8703f4605aa1eca4ce3  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class2.C
--- 18800,18806 ----
  f02e6aefd434d4811321f7875fea5c79  gcc/testsuite/g++.dg/cpp2a/is-corresponding-member8.C
  78d84cdb6c4c5f91546e47eea2a2f29a  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible1.C
  40b9c7b3198914d9138b2e9cb7c85b9e  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible2.C
! fe9035900ea3799e71e327c17aa04831  gcc/testsuite/g++.dg/cpp2a/is-layout-compatible3.C
  087bb26b7fb10078d7689347b3385e63  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-base-of1.C
  82ca9bc7a0479a2d7beaa0abe322c607  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class1.C
  c3fcc7088915b8703f4605aa1eca4ce3  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class2.C
*************** a32a0480aae35890db6a4b74ebac6bc0  gcc/te
*** 17027,17036 ****
--- 18808,18820 ----
  7f96ab4053f252522be19af8ee81643f  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class4.C
  8d2ec48a83de0c935d73330f3e8a7b55  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class5.C
  108a1e84430a208365c8e85df1f93cc2  gcc/testsuite/g++.dg/cpp2a/is-pointer-interconvertible-with-class6.C
+ 32bbeb83d22cbe00809cd7a5d2e40e40  gcc/testsuite/g++.dg/cpp2a/keywords1.C
+ f041d92886505f234ae31a1bb66ddb92  gcc/testsuite/g++.dg/cpp2a/keywords2.C
  40ea32951dfb4570c1774e238c30f434  gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic20.C
  c1cdf23c08dcb292bbd629847ef95a23  gcc/testsuite/g++.dg/cpp2a/lambda-generic-variadic21.C
  f3d333d9133ccc3fed58f15dd1e6c1c1  gcc/testsuite/g++.dg/cpp2a/lambda-generic1.C
  17fc74089a22c362cec8a6606ca6625e  gcc/testsuite/g++.dg/cpp2a/lambda-generic10.C
+ d5563aeee3f9b44dbd622e206e23998d  gcc/testsuite/g++.dg/cpp2a/lambda-generic11.C
  101950bd66265e5e952f39292d61abee  gcc/testsuite/g++.dg/cpp2a/lambda-generic2.C
  f3183e909b7fd601906b1f284b8514e9  gcc/testsuite/g++.dg/cpp2a/lambda-generic3.C
  53b70e7bd216f774ecdcfeda866f430c  gcc/testsuite/g++.dg/cpp2a/lambda-generic4.C
*************** f50c8e7c7812a7eade38d014e8410110  gcc/te
*** 17046,17052 ****
  76aebdeb346269b3700ddb3dc4e2d8ac  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init4.C
  922e5dff9ed1946970d8d28661c33f0f  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init5.C
  05ee01266fc805cc3327ad09e070330c  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C
! 85f2c06ad2ac5e902901d52119b92b66  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init7.C
  9f0cb1929455333894b8734212f3d221  gcc/testsuite/g++.dg/cpp2a/lambda-requires1.C
  22ec10632b049637a7cbf82f46eda177  gcc/testsuite/g++.dg/cpp2a/lambda-this1.C
  c09b3406a6984eced941c654f03df8b6  gcc/testsuite/g++.dg/cpp2a/lambda-this2.C
--- 18830,18836 ----
  76aebdeb346269b3700ddb3dc4e2d8ac  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init4.C
  922e5dff9ed1946970d8d28661c33f0f  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init5.C
  05ee01266fc805cc3327ad09e070330c  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init6.C
! 135aaa9e481a21f9375ce861b3274c3f  gcc/testsuite/g++.dg/cpp2a/lambda-pack-init7.C
  9f0cb1929455333894b8734212f3d221  gcc/testsuite/g++.dg/cpp2a/lambda-requires1.C
  22ec10632b049637a7cbf82f46eda177  gcc/testsuite/g++.dg/cpp2a/lambda-this1.C
  c09b3406a6984eced941c654f03df8b6  gcc/testsuite/g++.dg/cpp2a/lambda-this2.C
*************** c79632f5b81fdadda65a61ca549d97f6  gcc/te
*** 17059,17064 ****
--- 18843,18849 ----
  467e186d5def67de47b9fdac7558fede  gcc/testsuite/g++.dg/cpp2a/lambda-uneval14.C
  53c7dceb19a2ce9e52327177ea4fc212  gcc/testsuite/g++.dg/cpp2a/lambda-uneval15.C
  39a9dd88b9fa47a34b758e6abf328a7a  gcc/testsuite/g++.dg/cpp2a/lambda-uneval16.C
+ e1f6714196bc4cc815de786f8301141d  gcc/testsuite/g++.dg/cpp2a/lambda-uneval17.C
  e99d0c361f9eaa55d53c9232f30b64cf  gcc/testsuite/g++.dg/cpp2a/lambda-uneval2.C
  95297857429ac8850dbeb5773639ea6b  gcc/testsuite/g++.dg/cpp2a/lambda-uneval3.C
  2f7bd1774e5f890e65ee937419a29669  gcc/testsuite/g++.dg/cpp2a/lambda-uneval4.C
*************** b9a453a0ec01130cf321abf54d07d956  gcc/te
*** 17084,17089 ****
--- 18869,18875 ----
  186640015f4c7e2121b0e4f91c56e99f  gcc/testsuite/g++.dg/cpp2a/no_unique_address11.C
  e95698a38fe4cc0a60b4857fa65742ca  gcc/testsuite/g++.dg/cpp2a/no_unique_address12.C
  dd49d8873bb047040bf7f60deb8f644f  gcc/testsuite/g++.dg/cpp2a/no_unique_address13.C
+ 10563ae733ee31b86846cfb852d66d9d  gcc/testsuite/g++.dg/cpp2a/no_unique_address14.C
  c94ac6fb1a99bf541b66d604620fa09b  gcc/testsuite/g++.dg/cpp2a/no_unique_address2.C
  67a61649264fea12fb7cc5c31bc5313e  gcc/testsuite/g++.dg/cpp2a/no_unique_address3.C
  ca2c81baf4111b5e8e15980b5237a344  gcc/testsuite/g++.dg/cpp2a/no_unique_address4.C
*************** f285697eea399206e793409d3e3967ae  gcc/te
*** 17151,17156 ****
--- 18937,18946 ----
  3d2b8201f489f4abeaf39e7f23050ce6  gcc/testsuite/g++.dg/cpp2a/nontype-class50a.C
  232f7980871c2b37f0c2cb789e4cc1d7  gcc/testsuite/g++.dg/cpp2a/nontype-class51.C
  bbdb1fabe043c15d9231e499a5a3f7b6  gcc/testsuite/g++.dg/cpp2a/nontype-class52.C
+ b8792ea2066d991e3f446fc9890163bf  gcc/testsuite/g++.dg/cpp2a/nontype-class52a.C
+ d33a9e27e43475274994dd4afc336d51  gcc/testsuite/g++.dg/cpp2a/nontype-class53.C
+ e4cb23913f9a7f4f41d2ccd2f78d7012  gcc/testsuite/g++.dg/cpp2a/nontype-class54.C
+ 3a9673c34394ab4b056ad7dd41c718f9  gcc/testsuite/g++.dg/cpp2a/nontype-class55.C
  86d91c051a62b8d9f32d57f4047a6534  gcc/testsuite/g++.dg/cpp2a/nontype-class6.C
  c78f774590fd68025c389ab4361f5714  gcc/testsuite/g++.dg/cpp2a/nontype-class7.C
  44a04e768668501da12fed78805a7d70  gcc/testsuite/g++.dg/cpp2a/nontype-class8.C
*************** bf80b786a1a4ec9eac5fda8277196264  gcc/te
*** 17223,17229 ****
  2bd66f342ffc69804585e162a722f4b9  gcc/testsuite/g++.dg/cpp2a/range-for7.C
  3c0149d6d960f694469d39f927642d6f  gcc/testsuite/g++.dg/cpp2a/range-for8.C
  56bf7a295364a50ff08473d2937104c0  gcc/testsuite/g++.dg/cpp2a/range-for9.C
! 4153e4b19e08599e4737b8296cb0b300  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr1.C
  860dab1621019c38393bc07b92b6d02f  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr2.C
  53471c31db550d658146ff8dbe979243  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr3.C
  494f62ed4d3c86eb9614203922c107f6  gcc/testsuite/g++.dg/cpp2a/spaceship-decltype1.C
--- 19013,19019 ----
  2bd66f342ffc69804585e162a722f4b9  gcc/testsuite/g++.dg/cpp2a/range-for7.C
  3c0149d6d960f694469d39f927642d6f  gcc/testsuite/g++.dg/cpp2a/range-for8.C
  56bf7a295364a50ff08473d2937104c0  gcc/testsuite/g++.dg/cpp2a/range-for9.C
! 4c080eab508c0c73653ac51fb788ed79  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr1.C
  860dab1621019c38393bc07b92b6d02f  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr2.C
  53471c31db550d658146ff8dbe979243  gcc/testsuite/g++.dg/cpp2a/spaceship-constexpr3.C
  494f62ed4d3c86eb9614203922c107f6  gcc/testsuite/g++.dg/cpp2a/spaceship-decltype1.C
*************** c7c933568cc5b17f6d8dadb7cec8101f  gcc/te
*** 17233,17241 ****
  279eb9b925ca084c1b6d0115a14ecb82  gcc/testsuite/g++.dg/cpp2a/spaceship-eq12.C
  ae3ef3d8cbf3145fa938c567ccc11530  gcc/testsuite/g++.dg/cpp2a/spaceship-eq13.C
  38fdc580773803f5236af81425b44d75  gcc/testsuite/g++.dg/cpp2a/spaceship-eq14.C
  35b5b00dc11e88e35813caed81c920fc  gcc/testsuite/g++.dg/cpp2a/spaceship-eq1a.C
  da366bbf37859e5c77c24a8138c72180  gcc/testsuite/g++.dg/cpp2a/spaceship-eq2.C
! 695134b1125f480b4d381c7ab5398d05  gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
  2e352e95da1c82415807443658c1a83a  gcc/testsuite/g++.dg/cpp2a/spaceship-eq4.C
  08a0480f8c4995afec7c957681a59391  gcc/testsuite/g++.dg/cpp2a/spaceship-eq5.C
  1d81eaad3295957fc272634f08a3559c  gcc/testsuite/g++.dg/cpp2a/spaceship-eq6.C
--- 19023,19032 ----
  279eb9b925ca084c1b6d0115a14ecb82  gcc/testsuite/g++.dg/cpp2a/spaceship-eq12.C
  ae3ef3d8cbf3145fa938c567ccc11530  gcc/testsuite/g++.dg/cpp2a/spaceship-eq13.C
  38fdc580773803f5236af81425b44d75  gcc/testsuite/g++.dg/cpp2a/spaceship-eq14.C
+ 860fd8754fe18ef03692647820b7142c  gcc/testsuite/g++.dg/cpp2a/spaceship-eq15.C
  35b5b00dc11e88e35813caed81c920fc  gcc/testsuite/g++.dg/cpp2a/spaceship-eq1a.C
  da366bbf37859e5c77c24a8138c72180  gcc/testsuite/g++.dg/cpp2a/spaceship-eq2.C
! 014a0bac4cef0e90628a5873d11914eb  gcc/testsuite/g++.dg/cpp2a/spaceship-eq3.C
  2e352e95da1c82415807443658c1a83a  gcc/testsuite/g++.dg/cpp2a/spaceship-eq4.C
  08a0480f8c4995afec7c957681a59391  gcc/testsuite/g++.dg/cpp2a/spaceship-eq5.C
  1d81eaad3295957fc272634f08a3559c  gcc/testsuite/g++.dg/cpp2a/spaceship-eq6.C
*************** fedceca40086cc3551b12c5d92f783ec  gcc/te
*** 17253,17269 ****
  ebb778c7a30944f50dc09ed15f9d75bd  gcc/testsuite/g++.dg/cpp2a/spaceship-friend1.C
  e980e1da8fb13bc55d58a2c9c4789bb6  gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C
  256e727cc84c1b3653dac7bcdf88436a  gcc/testsuite/g++.dg/cpp2a/spaceship-ref1.C
! 9c7a76d7702f9a61e3ce4503195a6106  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite1.C
  5ed489f0b3d4ebc68b2d0d0e9af9363b  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite2.C
  9b7dacddefd20fb8386155f921a7def1  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite3.C
  04933aadceb65a4efdba3b45f2497b97  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite4.C
! 4f54ab89b8fefcf1d8169983349ee500  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite5.C
  63d1925bb0c4627f5897eec1b93f80c2  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1-neg.C
  d03a0af017f2ed1b2a80044fd5a5cdbb  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1.C
  ec383069980676d6ec1898483b690eb5  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1a.C
  f63b5565ab0bb6d2125aa5a844f18e62  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar2.C
  4e73ff4fb43ecf6cf74294bda1fffe61  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar3.C
  65d5bce771b3e48a893d1ec638885d3a  gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae1.C
  a1b5541b791ba1834869a1ceeb340ddc  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg1.C
  e6037687c8367081183d5ad6f709b4a7  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
  48cc4340eb8546a39438777b57d87c47  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg3.C
--- 19044,19061 ----
  ebb778c7a30944f50dc09ed15f9d75bd  gcc/testsuite/g++.dg/cpp2a/spaceship-friend1.C
  e980e1da8fb13bc55d58a2c9c4789bb6  gcc/testsuite/g++.dg/cpp2a/spaceship-p1186.C
  256e727cc84c1b3653dac7bcdf88436a  gcc/testsuite/g++.dg/cpp2a/spaceship-ref1.C
! 6a7454e24c41f86327655e4429e94037  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite1.C
  5ed489f0b3d4ebc68b2d0d0e9af9363b  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite2.C
  9b7dacddefd20fb8386155f921a7def1  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite3.C
  04933aadceb65a4efdba3b45f2497b97  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite4.C
! cb19df16f1224508c7ba9152516b87d3  gcc/testsuite/g++.dg/cpp2a/spaceship-rewrite5.C
  63d1925bb0c4627f5897eec1b93f80c2  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1-neg.C
  d03a0af017f2ed1b2a80044fd5a5cdbb  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1.C
  ec383069980676d6ec1898483b690eb5  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar1a.C
  f63b5565ab0bb6d2125aa5a844f18e62  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar2.C
  4e73ff4fb43ecf6cf74294bda1fffe61  gcc/testsuite/g++.dg/cpp2a/spaceship-scalar3.C
  65d5bce771b3e48a893d1ec638885d3a  gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae1.C
+ 44f85774d50950da2270385ce1798644  gcc/testsuite/g++.dg/cpp2a/spaceship-sfinae2.C
  a1b5541b791ba1834869a1ceeb340ddc  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg1.C
  e6037687c8367081183d5ad6f709b4a7  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg2.C
  48cc4340eb8546a39438777b57d87c47  gcc/testsuite/g++.dg/cpp2a/spaceship-synth-neg3.C
*************** e6eff6554eb70bbd03e6aacbb13adf31  gcc/te
*** 17295,17304 ****
  0970f285ffbf72900993c2240e49583b  gcc/testsuite/g++.dg/cpp2a/spaceship-virtual1.C
  bca03d65e166f32cbeed0699c7c57e41  gcc/testsuite/g++.dg/cpp2a/spaceship-weak1.C
  450162c9df6c789ff19c8cbd1f169756  gcc/testsuite/g++.dg/cpp2a/srcloc1.C
! 249b6495683b7831ab695dd97edb19d3  gcc/testsuite/g++.dg/cpp2a/srcloc10.C
! 804144cce9b1f47744f67af4ef5dbdba  gcc/testsuite/g++.dg/cpp2a/srcloc11.C
! 998dcd7a7b593ce302b0b74e63d1d798  gcc/testsuite/g++.dg/cpp2a/srcloc12.C
! 2b422344645b5d1654bece69b8f3ca27  gcc/testsuite/g++.dg/cpp2a/srcloc13.C
  56a81e759dacca04e0c82bbba386b431  gcc/testsuite/g++.dg/cpp2a/srcloc14.C
  71c58519c119b67982e201d387b37c21  gcc/testsuite/g++.dg/cpp2a/srcloc15.C
  725c5c46c434d5e1d0f5af34104e5583  gcc/testsuite/g++.dg/cpp2a/srcloc16.C
--- 19087,19096 ----
  0970f285ffbf72900993c2240e49583b  gcc/testsuite/g++.dg/cpp2a/spaceship-virtual1.C
  bca03d65e166f32cbeed0699c7c57e41  gcc/testsuite/g++.dg/cpp2a/spaceship-weak1.C
  450162c9df6c789ff19c8cbd1f169756  gcc/testsuite/g++.dg/cpp2a/srcloc1.C
! 8222403f1fb2288f8690d23e3822c9a6  gcc/testsuite/g++.dg/cpp2a/srcloc10.C
! 672d093ade9f727ac72f6a3c18524cfd  gcc/testsuite/g++.dg/cpp2a/srcloc11.C
! c6e99dd9bdc11ba84fad812f3b1e0856  gcc/testsuite/g++.dg/cpp2a/srcloc12.C
! c59583697ae95a72f8fdca734e5b4a05  gcc/testsuite/g++.dg/cpp2a/srcloc13.C
  56a81e759dacca04e0c82bbba386b431  gcc/testsuite/g++.dg/cpp2a/srcloc14.C
  71c58519c119b67982e201d387b37c21  gcc/testsuite/g++.dg/cpp2a/srcloc15.C
  725c5c46c434d5e1d0f5af34104e5583  gcc/testsuite/g++.dg/cpp2a/srcloc16.C
*************** a8ec3f289340278b03ee97c8ebff51ae  gcc/te
*** 17307,17319 ****
  c951a3e5bb4bc2d67ee9dcf55822ab1e  gcc/testsuite/g++.dg/cpp2a/srcloc19.C
  73b3d0055024c3e89cf343ad697d921f  gcc/testsuite/g++.dg/cpp2a/srcloc2.C
  d0d6d97ed7c799dfd6ee3c3c281ece09  gcc/testsuite/g++.dg/cpp2a/srcloc20.C
! bdcc6dcb33b016ca165853f376d37a46  gcc/testsuite/g++.dg/cpp2a/srcloc3.C
! 105c3578c5e06652ad38da066c2e6f4b  gcc/testsuite/g++.dg/cpp2a/srcloc4.C
! b10f83b6961f4d7c400d206766b3878a  gcc/testsuite/g++.dg/cpp2a/srcloc5.C
! bcc53868897c6b7b0d9524d3ab3d2f81  gcc/testsuite/g++.dg/cpp2a/srcloc6.C
! da9e539e26cc915ffc354969e83b6629  gcc/testsuite/g++.dg/cpp2a/srcloc7.C
! e33d8dfcd9d9e756757f2e739e60b790  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
! ac8e3b7b16797ead0bcffd21ca5f79b6  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
  5de890e01a292e99b75abedf4b2aa561  gcc/testsuite/g++.dg/cpp2a/typename1.C
  da817b2e1901bc27f9d38ebf5e51459b  gcc/testsuite/g++.dg/cpp2a/typename10.C
  736ca6dbc6d6e66b218a41d3aaeec22a  gcc/testsuite/g++.dg/cpp2a/typename11.C
--- 19099,19111 ----
  c951a3e5bb4bc2d67ee9dcf55822ab1e  gcc/testsuite/g++.dg/cpp2a/srcloc19.C
  73b3d0055024c3e89cf343ad697d921f  gcc/testsuite/g++.dg/cpp2a/srcloc2.C
  d0d6d97ed7c799dfd6ee3c3c281ece09  gcc/testsuite/g++.dg/cpp2a/srcloc20.C
! 08b4437f1c40ac567ece79251f6bfa76  gcc/testsuite/g++.dg/cpp2a/srcloc3.C
! 8f5a9de13a6d3d96cb21aa5a93a0b563  gcc/testsuite/g++.dg/cpp2a/srcloc4.C
! 77028a5f4b7df8d89ba78fd8684766eb  gcc/testsuite/g++.dg/cpp2a/srcloc5.C
! 086905d548500017ce2dc1719918b0ca  gcc/testsuite/g++.dg/cpp2a/srcloc6.C
! 4c3fe43b12a27162ef61531d3a01f9e4  gcc/testsuite/g++.dg/cpp2a/srcloc7.C
! dc5fdccda9bb74a8259751885239a45b  gcc/testsuite/g++.dg/cpp2a/srcloc8.C
! 3cf98e82d56549304f8eada21a181a96  gcc/testsuite/g++.dg/cpp2a/srcloc9.C
  5de890e01a292e99b75abedf4b2aa561  gcc/testsuite/g++.dg/cpp2a/typename1.C
  da817b2e1901bc27f9d38ebf5e51459b  gcc/testsuite/g++.dg/cpp2a/typename10.C
  736ca6dbc6d6e66b218a41d3aaeec22a  gcc/testsuite/g++.dg/cpp2a/typename11.C
*************** ad2201a1b978f4f4fbdb00d19864f54d  gcc/te
*** 17342,17347 ****
--- 19134,19141 ----
  f2fa833dd2de8109a1887e708aa4cf5b  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp-neg2.C
  d4af70129929097daef5c738f2508ba5  gcc/testsuite/g++.dg/cpp2a/udlit-class-nttp.C
  8b123b46e3ee970336060676f9af3ef4  gcc/testsuite/g++.dg/cpp2a/using-enum-1.C
+ 332fe0abb17c371daf5592402836a5d0  gcc/testsuite/g++.dg/cpp2a/using-enum-10.C
+ 08431912d36e32ca7a13f639a84d04d9  gcc/testsuite/g++.dg/cpp2a/using-enum-10a.C
  fd7bc6d132436a68e16dbd3cf7dbe4a1  gcc/testsuite/g++.dg/cpp2a/using-enum-2.C
  22767ec36a28df188bc83c009954898e  gcc/testsuite/g++.dg/cpp2a/using-enum-3.C
  e83eaca9dc6f24d5d311cbc3b0f5e3e8  gcc/testsuite/g++.dg/cpp2a/using-enum-4.C
*************** e83eaca9dc6f24d5d311cbc3b0f5e3e8  gcc/te
*** 17350,17360 ****
  e0594ebf50b79f339906f3410ba74411  gcc/testsuite/g++.dg/cpp2a/using-enum-7.C
  2a6d4537e5c7ceafb005d88ac7453264  gcc/testsuite/g++.dg/cpp2a/using-enum-8.C
  3b9024d3a27c4b1a195fd5d7e4185661  gcc/testsuite/g++.dg/cpp2a/using-enum-9.C
! eb3624cc3c4aaf45b38420c1d813e807  gcc/testsuite/g++.dg/cpp2a/volatile1.C
  1268b9025db1cda367f76654228c1829  gcc/testsuite/g++.dg/cpp2a/volatile2.C
! 38a1560b8b9b22be4d576d30a8cef4c3  gcc/testsuite/g++.dg/cpp2a/volatile3.C
  6ef0acb96637db85886dfa5cfceedf60  gcc/testsuite/g++.dg/cpp2a/volatile4.C
! 96dafb009a7feee933cad2b35c2cccf6  gcc/testsuite/g++.dg/cpp2a/volatile5.C
  e71a3440857a0df24410cbe91e45c678  gcc/testsuite/g++.dg/debug/anonunion1.C
  8dbd2136c39269d38b72a0226e914678  gcc/testsuite/g++.dg/debug/cleanup1.C
  e4aee91d21a8cdbd286094f893319c70  gcc/testsuite/g++.dg/debug/const1.C
--- 19144,19154 ----
  e0594ebf50b79f339906f3410ba74411  gcc/testsuite/g++.dg/cpp2a/using-enum-7.C
  2a6d4537e5c7ceafb005d88ac7453264  gcc/testsuite/g++.dg/cpp2a/using-enum-8.C
  3b9024d3a27c4b1a195fd5d7e4185661  gcc/testsuite/g++.dg/cpp2a/using-enum-9.C
! 77f13508bf2a3ad8befd7cee31343ae4  gcc/testsuite/g++.dg/cpp2a/volatile1.C
  1268b9025db1cda367f76654228c1829  gcc/testsuite/g++.dg/cpp2a/volatile2.C
! 3108204aec8d45298e7c89b835b359d5  gcc/testsuite/g++.dg/cpp2a/volatile3.C
  6ef0acb96637db85886dfa5cfceedf60  gcc/testsuite/g++.dg/cpp2a/volatile4.C
! 05f0b368c4e62ef8502ff68a59ae88bb  gcc/testsuite/g++.dg/cpp2a/volatile5.C
  e71a3440857a0df24410cbe91e45c678  gcc/testsuite/g++.dg/debug/anonunion1.C
  8dbd2136c39269d38b72a0226e914678  gcc/testsuite/g++.dg/debug/cleanup1.C
  e4aee91d21a8cdbd286094f893319c70  gcc/testsuite/g++.dg/debug/const1.C
*************** e4aee91d21a8cdbd286094f893319c70  gcc/te
*** 17363,17369 ****
  b196cb4af4d539f545ae961b8905ba24  gcc/testsuite/g++.dg/debug/const4.C
  8c7b9540eb6278b6bd197c3c55ae7945  gcc/testsuite/g++.dg/debug/const5.C
  36f088b22dca6ab78668e7d505839fbd  gcc/testsuite/g++.dg/debug/crash1.C
! 446cf408d4ed631ff296f97839117dca  gcc/testsuite/g++.dg/debug/debug.exp
  2b6f3bdb657c8865549db08f96a15223  gcc/testsuite/g++.dg/debug/debug1.C
  cece96666e504d9287aaadf8a4855138  gcc/testsuite/g++.dg/debug/debug2.C
  b5c1d1e26252e6e306ee37c885cc449b  gcc/testsuite/g++.dg/debug/debug3.C
--- 19157,19163 ----
  b196cb4af4d539f545ae961b8905ba24  gcc/testsuite/g++.dg/debug/const4.C
  8c7b9540eb6278b6bd197c3c55ae7945  gcc/testsuite/g++.dg/debug/const5.C
  36f088b22dca6ab78668e7d505839fbd  gcc/testsuite/g++.dg/debug/crash1.C
! 48a3151c13490e18f0b8098077b3afd1  gcc/testsuite/g++.dg/debug/debug.exp
  2b6f3bdb657c8865549db08f96a15223  gcc/testsuite/g++.dg/debug/debug1.C
  cece96666e504d9287aaadf8a4855138  gcc/testsuite/g++.dg/debug/debug2.C
  b5c1d1e26252e6e306ee37c885cc449b  gcc/testsuite/g++.dg/debug/debug3.C
*************** b68f44c11557e3825fd41d4340b7bf62  gcc/te
*** 17401,17407 ****
  b60cdd725e03d3b1d9c56248e0f623f0  gcc/testsuite/g++.dg/debug/dwarf2/deleted-member-function.C
  2d11614b04b4a82a2bd316bf588c7852  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-1.C
  906b48b71d0ea35137dc20a9fd2f8965  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-2.C
! 49fcbf3df546c93fda12a847f6db90f4  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
  626624da3f5685a0850aad1b683ac3d4  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
  22d59b45b21c13f83b0b24bf88a853bf  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
  1b130ad10876bc9db6cf83c8fa07435f  gcc/testsuite/g++.dg/debug/dwarf2/enum1.C
--- 19195,19201 ----
  b60cdd725e03d3b1d9c56248e0f623f0  gcc/testsuite/g++.dg/debug/dwarf2/deleted-member-function.C
  2d11614b04b4a82a2bd316bf588c7852  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-1.C
  906b48b71d0ea35137dc20a9fd2f8965  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2-2.C
! a62c853233fa549a8c81cdda607708cd  gcc/testsuite/g++.dg/debug/dwarf2/dwarf2.exp
  626624da3f5685a0850aad1b683ac3d4  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-nested.C
  22d59b45b21c13f83b0b24bf88a853bf  gcc/testsuite/g++.dg/debug/dwarf2/dwarf4-typedef.C
  1b130ad10876bc9db6cf83c8fa07435f  gcc/testsuite/g++.dg/debug/dwarf2/enum1.C
*************** b7cb0f476479fbda78bd90153450d0f6  gcc/te
*** 17439,17444 ****
--- 19233,19239 ----
  84736775aaab673865f2994daaa52e89  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp17.C
  01ba88f2df292f8690678f5ec8687d78  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp20.C
  9528ad1e140eff24c9bcff8ebae30d9f  gcc/testsuite/g++.dg/debug/dwarf2/lang-cpp98.C
+ bb6bfe8d0f500af90a0ec5977f5286a2  gcc/testsuite/g++.dg/debug/dwarf2/lineno-array1.C
  8b8e5eddccdaa519cdbef29f72e2fb88  gcc/testsuite/g++.dg/debug/dwarf2/lineno-simple1.C
  4d61da9cfa655abcc31e78d858f44dc6  gcc/testsuite/g++.dg/debug/dwarf2/local-var-in-contructor.C
  ecafca546b579b33c7a08c83d0f4b355  gcc/testsuite/g++.dg/debug/dwarf2/localclass1.C
*************** abe2799d2ba99877ff9ac9491b7f3baf  gcc/te
*** 17455,17460 ****
--- 19250,19256 ----
  b3cbbd79d5ff077a6732280d76b2284e  gcc/testsuite/g++.dg/debug/dwarf2/omp-fesdr.C
  b117227269644a100a7a06bf2bc9bf6f  gcc/testsuite/g++.dg/debug/dwarf2/pr101378.C
  660a2a2e1e89fe3e9cfe2899e7f1e627  gcc/testsuite/g++.dg/debug/dwarf2/pr104407.C
+ b43f4d6e4f27dc96c0e870436aa41ff2  gcc/testsuite/g++.dg/debug/dwarf2/pr108716.C
  7054dc65c88179389afb9e79cad0df38  gcc/testsuite/g++.dg/debug/dwarf2/pr41063.C
  9118e81e091fae9d3d9c8c39a846e724  gcc/testsuite/g++.dg/debug/dwarf2/pr44641.C
  90028c65be83718cb8e154df1b502d99  gcc/testsuite/g++.dg/debug/dwarf2/pr45997-1.C
*************** a79b4fb3cb7873c05364c263058a7f1a  gcc/te
*** 17532,17537 ****
--- 19328,19334 ----
  ddbacc1f20aaa6efbe151f3f8d8b9aa9  gcc/testsuite/g++.dg/debug/dwarf2/typedef5.C
  1bac29a975fef390435bcddbc2f1112b  gcc/testsuite/g++.dg/debug/dwarf2/typedef6.C
  14de01102edbb95fe2d8f800da61dff8  gcc/testsuite/g++.dg/debug/dwarf2/using-enum.C
+ 050ec6ec6465b7e9cd99e5aec4220034  gcc/testsuite/g++.dg/debug/dwarf2/utf-1.C
  d11dcc4e37738beb9e8be03ce7630c35  gcc/testsuite/g++.dg/debug/enum-1.C
  ae15f5aa018a04a1250780eca928d27c  gcc/testsuite/g++.dg/debug/enum-2.C
  a0ac13a0885ee162c972f58ffbd934e7  gcc/testsuite/g++.dg/debug/localclass1.C
*************** a0ac13a0885ee162c972f58ffbd934e7  gcc/te
*** 17541,17546 ****
--- 19338,19344 ----
  98d1fa8a42200722f612a8f915bb9673  gcc/testsuite/g++.dg/debug/namespace2.C
  c805656a195d9a98cc7141e7db52d9ef  gcc/testsuite/g++.dg/debug/nullptr01.C
  57e21034689a45ffd010ec86b2596de5  gcc/testsuite/g++.dg/debug/pr106261.C
+ 19de4ef7373a891f957af0121c166d89  gcc/testsuite/g++.dg/debug/pr108967.C
  fcdc9d29f34ff56d1b7de0d55a1eaed7  gcc/testsuite/g++.dg/debug/pr15736.cc
  d25b84553c2083b28615202497b8f94a  gcc/testsuite/g++.dg/debug/pr16792.C
  91880dfb66fda0db4ddabf486346b755  gcc/testsuite/g++.dg/debug/pr22514.C
*************** f00dea52c61cb46b3702ed0755e5be94  gcc/te
*** 17610,17616 ****
  5381563d83a802d89887422d01bc17d1  gcc/testsuite/g++.dg/dfp/44473-1.C
  ca2c3afed1d1ac0b4c3f2b2b82264602  gcc/testsuite/g++.dg/dfp/44473-2.C
  694614d4f71e398dcda11523059a774e  gcc/testsuite/g++.dg/dfp/base.C
! eab549fa858a7a4d7865c4c2aa96cb86  gcc/testsuite/g++.dg/dfp/dfp.exp
  b98372f1dd5bbd1ea23e2933d4bdf03a  gcc/testsuite/g++.dg/dfp/mangle-1.C
  c0592e7184d9390b10cd93d3b6f1f7a0  gcc/testsuite/g++.dg/dfp/mangle-2.C
  97de1869469f8592b096b761b6a2cceb  gcc/testsuite/g++.dg/dfp/mangle-3.C
--- 19408,19414 ----
  5381563d83a802d89887422d01bc17d1  gcc/testsuite/g++.dg/dfp/44473-1.C
  ca2c3afed1d1ac0b4c3f2b2b82264602  gcc/testsuite/g++.dg/dfp/44473-2.C
  694614d4f71e398dcda11523059a774e  gcc/testsuite/g++.dg/dfp/base.C
! 4d03fe3a5a9b2c66b2b03fd96e64ef6b  gcc/testsuite/g++.dg/dfp/dfp.exp
  b98372f1dd5bbd1ea23e2933d4bdf03a  gcc/testsuite/g++.dg/dfp/mangle-1.C
  c0592e7184d9390b10cd93d3b6f1f7a0  gcc/testsuite/g++.dg/dfp/mangle-2.C
  97de1869469f8592b096b761b6a2cceb  gcc/testsuite/g++.dg/dfp/mangle-3.C
*************** becc0e6f064af285a504ff10eaffc525  gcc/te
*** 17621,17627 ****
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
  919ff80bde2b401e1cf10423071bab16  gcc/testsuite/g++.dg/dfp/pr92744.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
! 8481466a617788f108ff8a6c964f8a9a  gcc/testsuite/g++.dg/dg.exp
  acfb4c292cab52af7c96437dfeb91332  gcc/testsuite/g++.dg/diagnostic/aka1.C
  6daf9c84b004ad38b36ca9e885175631  gcc/testsuite/g++.dg/diagnostic/aka2.C
  0aacbf4bd10589d329e7f0a05be533bb  gcc/testsuite/g++.dg/diagnostic/aka3.C
--- 19419,19425 ----
  3a865b01c504023d0b90b1f055163c6a  gcc/testsuite/g++.dg/dfp/nofields.C
  919ff80bde2b401e1cf10423071bab16  gcc/testsuite/g++.dg/dfp/pr92744.C
  cd0133a632a541db051ef84d53754ac6  gcc/testsuite/g++.dg/dfp/typeid1.C
! 69cbd7b4b86323de45b6388e2fc2366b  gcc/testsuite/g++.dg/dg.exp
  acfb4c292cab52af7c96437dfeb91332  gcc/testsuite/g++.dg/diagnostic/aka1.C
  6daf9c84b004ad38b36ca9e885175631  gcc/testsuite/g++.dg/diagnostic/aka2.C
  0aacbf4bd10589d329e7f0a05be533bb  gcc/testsuite/g++.dg/diagnostic/aka3.C
*************** e083f6b3ba321e7cdc9c8d54972f027b  gcc/te
*** 17636,17641 ****
--- 19434,19440 ----
  f468ff0e470b813ba90ab6f552dfbb51  gcc/testsuite/g++.dg/diagnostic/auto-storage-1.C
  d6cd69df86e5ef21af4548c3401c93ba  gcc/testsuite/g++.dg/diagnostic/auto1.C
  2782c3a1ba0fe921f95b73de11d6bf55  gcc/testsuite/g++.dg/diagnostic/bad-binary-ops.C
+ a91bf5789095e7895cce3a68b00c225e  gcc/testsuite/g++.dg/diagnostic/bad-binary-ops2.C
  748783b112c42a8deeb80f2d23c3aa1f  gcc/testsuite/g++.dg/diagnostic/base-operand-non-pointer-1.C
  d7dcca6cdb24ff15a17be482e130bf4e  gcc/testsuite/g++.dg/diagnostic/bindings1.C
  424dce5e3d57a2b34afe27e7bbf2592d  gcc/testsuite/g++.dg/diagnostic/bitfld1.C
*************** d7dcca6cdb24ff15a17be482e130bf4e  gcc/te
*** 17643,17650 ****
  58295f6f055d69471b89bef236006e96  gcc/testsuite/g++.dg/diagnostic/bitfld3.C
  f9722392abd0d8da545dd7e9182420ee  gcc/testsuite/g++.dg/diagnostic/bitfld4.C
  08395de92ca6c9d616701695de58f2ce  gcc/testsuite/g++.dg/diagnostic/complex-invalid-1.C
! bdbe25cf432b7755bcf34617531e70c9  gcc/testsuite/g++.dg/diagnostic/conflicting-specifiers-1.C
! f7373a71dd891357231338f7279d20ca  gcc/testsuite/g++.dg/diagnostic/constexpr1.C
  13461b7c9b3b8e9d46f44892e6c9d868  gcc/testsuite/g++.dg/diagnostic/constexpr2.C
  e824a88234abd039ffea31d13a8e9e42  gcc/testsuite/g++.dg/diagnostic/delete1.C
  4a4ed8a805a81f8726e0ba889c68ff19  gcc/testsuite/g++.dg/diagnostic/disable.C
--- 19442,19449 ----
  58295f6f055d69471b89bef236006e96  gcc/testsuite/g++.dg/diagnostic/bitfld3.C
  f9722392abd0d8da545dd7e9182420ee  gcc/testsuite/g++.dg/diagnostic/bitfld4.C
  08395de92ca6c9d616701695de58f2ce  gcc/testsuite/g++.dg/diagnostic/complex-invalid-1.C
! 8dbd673d1ae2e6dd2769c63d1562817e  gcc/testsuite/g++.dg/diagnostic/conflicting-specifiers-1.C
! dc2425cff4a0be5961398d082daeeaf5  gcc/testsuite/g++.dg/diagnostic/constexpr1.C
  13461b7c9b3b8e9d46f44892e6c9d868  gcc/testsuite/g++.dg/diagnostic/constexpr2.C
  e824a88234abd039ffea31d13a8e9e42  gcc/testsuite/g++.dg/diagnostic/delete1.C
  4a4ed8a805a81f8726e0ba889c68ff19  gcc/testsuite/g++.dg/diagnostic/disable.C
*************** c3989c492c520c5e5c36e77898e2bd15  gcc/te
*** 17657,17662 ****
--- 19456,19462 ----
  dd6972e7b92113e6456388c099d1d0fc  gcc/testsuite/g++.dg/diagnostic/friend1.C
  2e522d96f1b58403f1cff0bb5e5a64fe  gcc/testsuite/g++.dg/diagnostic/friend2.C
  37831a7ee66693f63547d8f82d1f1e8a  gcc/testsuite/g++.dg/diagnostic/friend3.C
+ 67b8fa8160f0cf836bce5843bbb3d7c4  gcc/testsuite/g++.dg/diagnostic/function-color1.C
  3ba4c3c8b2c3fcce20e48ba33926269f  gcc/testsuite/g++.dg/diagnostic/functional-cast-to-array-type-1.C
  69ce128025964839ee0839b726a643f1  gcc/testsuite/g++.dg/diagnostic/incomplete-type-1.C
  b4e50b6bf0aa4ab59b9a9cb6e129a903  gcc/testsuite/g++.dg/diagnostic/inconsistent-deduction-1.C
*************** bb193b240fa78433d956d57357da2858  gcc/te
*** 17725,17730 ****
--- 19525,19531 ----
  b70b854343c43b4b0eac609476ee8fc1  gcc/testsuite/g++.dg/diagnostic/ref2.C
  fabec9ff676df7e51a4bfcca57117fa6  gcc/testsuite/g++.dg/diagnostic/ref3.C
  e3aa447c8519e3886f54a6a8d59c31c4  gcc/testsuite/g++.dg/diagnostic/return-type-invalid-1.C
+ e82e0cd73386b9a56e7277c5d9a4892b  gcc/testsuite/g++.dg/diagnostic/return-type-loc1.C
  ed0a135e3f6f6280fe8fd6ee38207fb6  gcc/testsuite/g++.dg/diagnostic/returning-a-value-1.C
  a05ba839cb9338f35410b986c40f0385  gcc/testsuite/g++.dg/diagnostic/scope1.C
  d625b560f030fba41078f9ffd66c536e  gcc/testsuite/g++.dg/diagnostic/signed-unsigned.C
*************** d84401f4f10886da506d8acbdb74a1d9  gcc/te
*** 17745,17751 ****
  1f7945145b6225ba6290bb000423cf46  gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
  349d7476d1a27bd2806b8e0a3097a511  gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
  a76cb15a146e724270d69d28ec781710  gcc/testsuite/g++.dg/diagnostic/undeclared1.C
! 9cc3611144e3b22b3f5ce232cc20df91  gcc/testsuite/g++.dg/diagnostic/using1.C
  0420bcbb4f7abd68c02f908026ad1f11  gcc/testsuite/g++.dg/diagnostic/variably-modified-type-1.C
  242539537e0b01ca558d91adcac7cb35  gcc/testsuite/g++.dg/diagnostic/variadic1.C
  793d6d70a83796d613da9b245936f84c  gcc/testsuite/g++.dg/diagnostic/virtual-constexpr.C
--- 19546,19552 ----
  1f7945145b6225ba6290bb000423cf46  gcc/testsuite/g++.dg/diagnostic/unclosed-namespace.C
  349d7476d1a27bd2806b8e0a3097a511  gcc/testsuite/g++.dg/diagnostic/unclosed-struct.C
  a76cb15a146e724270d69d28ec781710  gcc/testsuite/g++.dg/diagnostic/undeclared1.C
! 8acedfa33dd12637c81c13e8c3a04b40  gcc/testsuite/g++.dg/diagnostic/using1.C
  0420bcbb4f7abd68c02f908026ad1f11  gcc/testsuite/g++.dg/diagnostic/variably-modified-type-1.C
  242539537e0b01ca558d91adcac7cb35  gcc/testsuite/g++.dg/diagnostic/variadic1.C
  793d6d70a83796d613da9b245936f84c  gcc/testsuite/g++.dg/diagnostic/virtual-constexpr.C
*************** e917a91ae5be207defc427d0a079f7e9  gcc/te
*** 17809,17818 ****
--- 19610,19623 ----
  6d24a241b37d9461b161f8ce01317ab8  gcc/testsuite/g++.dg/eh/delayslot1.C
  8df5b68d232832afbaddc003b31e8de2  gcc/testsuite/g++.dg/eh/delegating1.C
  fd403bd2492abf66a1421658620fc19a  gcc/testsuite/g++.dg/eh/delete1.C
+ 750a9d66b5df552b2a0f65a3b1bfd283  gcc/testsuite/g++.dg/eh/dfp-1.C
+ 94ce7873aa47202a03f4da29b2726ccd  gcc/testsuite/g++.dg/eh/dfp-2.C
+ 915323765c997eabe0b8153398f4a5d3  gcc/testsuite/g++.dg/eh/dfp-saves-aarch64.C
  576fca342f1265b23facee2429c2f6ce  gcc/testsuite/g++.dg/eh/div.C
  1521a64435be961406151b3df9665c39  gcc/testsuite/g++.dg/eh/dtor1.C
  946e2e4e3fafd42b9f9d9e2594d511ac  gcc/testsuite/g++.dg/eh/dtor2.C
  023501b088469a8d2387c36a54034beb  gcc/testsuite/g++.dg/eh/dtor3.C
+ 59231dcf12c5a458a99a84f6892474ee  gcc/testsuite/g++.dg/eh/dtor4.C
  577a8bcc0bf6327d41fd9c88307c7746  gcc/testsuite/g++.dg/eh/ehopt1.C
  b0ccd0dda5f78bbdc113e7d64bcbde3c  gcc/testsuite/g++.dg/eh/elide1.C
  4a5da75795bd16f83ee0a55370fa4396  gcc/testsuite/g++.dg/eh/elide2.C
*************** f27482d95969ec072f6dc3a9d18c8b21  gcc/te
*** 18065,18071 ****
  6a6537dca5e2183665f9761920418307  gcc/testsuite/g++.dg/ext/array1.C
  f1a9da555162b7ed9f63dd442d842c1c  gcc/testsuite/g++.dg/ext/array2.C
  d1e93fe1d5f57febc15732f8f13ad24f  gcc/testsuite/g++.dg/ext/array3.C
! 59a6a5d086a3ae01ea6e51401427f2fb  gcc/testsuite/g++.dg/ext/array4.C
  d377fb4f9ef6d1ed2029c1551ddf7e3b  gcc/testsuite/g++.dg/ext/asm1.C
  82e001dc60a8f36b8affdc7210de5b60  gcc/testsuite/g++.dg/ext/asm10.C
  25fbbf0ac13b6baebc40ebabaedfe317  gcc/testsuite/g++.dg/ext/asm11.C
--- 19870,19876 ----
  6a6537dca5e2183665f9761920418307  gcc/testsuite/g++.dg/ext/array1.C
  f1a9da555162b7ed9f63dd442d842c1c  gcc/testsuite/g++.dg/ext/array2.C
  d1e93fe1d5f57febc15732f8f13ad24f  gcc/testsuite/g++.dg/ext/array3.C
! 28ced11f571eb53a28e366b2214b64db  gcc/testsuite/g++.dg/ext/array4.C
  d377fb4f9ef6d1ed2029c1551ddf7e3b  gcc/testsuite/g++.dg/ext/asm1.C
  82e001dc60a8f36b8affdc7210de5b60  gcc/testsuite/g++.dg/ext/asm10.C
  25fbbf0ac13b6baebc40ebabaedfe317  gcc/testsuite/g++.dg/ext/asm11.C
*************** c60f5e6c9153f81f92f083706dc7c286  gcc/te
*** 18102,18113 ****
  841b05f20a6b00c3b826790dbc5f7516  gcc/testsuite/g++.dg/ext/attr-const-pure.C
  e8c1ef2e31ad432f87f2a06b220c6f77  gcc/testsuite/g++.dg/ext/attr-const.C
  c4d592607823e7f7c77865976b6361e7  gcc/testsuite/g++.dg/ext/attr-constructor1.C
! 275e586d8b4cd828bd9ea73a3b57df25  gcc/testsuite/g++.dg/ext/attr-copy-2.C
  82a231e2eb77d00d265a0e2bba947dab  gcc/testsuite/g++.dg/ext/attr-copy.C
  ad620f3309b132f76780e1b18d9ccf44  gcc/testsuite/g++.dg/ext/attr-deprecated-1.C
  4f52cf13191aac1dca2c63c401a89783  gcc/testsuite/g++.dg/ext/attr-deprecated-2.C
  32409e2a44b020e2c5da0de856e26ebe  gcc/testsuite/g++.dg/ext/attr-expr1.C
  aa0f4c78aad650ce464c5b577e8460de  gcc/testsuite/g++.dg/ext/attr-flatten1.C
  05a897b022b2892abfd4bc74855a0921  gcc/testsuite/g++.dg/ext/attr-ifunc-1.C
  f6a0b8c7b4c6f39da51366edee2ee37f  gcc/testsuite/g++.dg/ext/attr-ifunc-2.C
  c3081546bf4a8a6d5679738f20f2e2e5  gcc/testsuite/g++.dg/ext/attr-ifunc-3.C
--- 19907,19922 ----
  841b05f20a6b00c3b826790dbc5f7516  gcc/testsuite/g++.dg/ext/attr-const-pure.C
  e8c1ef2e31ad432f87f2a06b220c6f77  gcc/testsuite/g++.dg/ext/attr-const.C
  c4d592607823e7f7c77865976b6361e7  gcc/testsuite/g++.dg/ext/attr-constructor1.C
! f1277e5816b0e52ac85481bda88d14c3  gcc/testsuite/g++.dg/ext/attr-copy-2.C
  82a231e2eb77d00d265a0e2bba947dab  gcc/testsuite/g++.dg/ext/attr-copy.C
  ad620f3309b132f76780e1b18d9ccf44  gcc/testsuite/g++.dg/ext/attr-deprecated-1.C
  4f52cf13191aac1dca2c63c401a89783  gcc/testsuite/g++.dg/ext/attr-deprecated-2.C
  32409e2a44b020e2c5da0de856e26ebe  gcc/testsuite/g++.dg/ext/attr-expr1.C
  aa0f4c78aad650ce464c5b577e8460de  gcc/testsuite/g++.dg/ext/attr-flatten1.C
+ 9ea0e23d968bad995d06b4f807a96f1d  gcc/testsuite/g++.dg/ext/attr-format-arg1.C
+ 1572650153b820f3c9451d6bd17e3057  gcc/testsuite/g++.dg/ext/attr-format1.C
+ 8fe7898f5abe9400c110a95fab49fda6  gcc/testsuite/g++.dg/ext/attr-format2.C
+ 69eb1d1ddd3db6af8659f02bb2bdf1d5  gcc/testsuite/g++.dg/ext/attr-format3.C
  05a897b022b2892abfd4bc74855a0921  gcc/testsuite/g++.dg/ext/attr-ifunc-1.C
  f6a0b8c7b4c6f39da51366edee2ee37f  gcc/testsuite/g++.dg/ext/attr-ifunc-2.C
  c3081546bf4a8a6d5679738f20f2e2e5  gcc/testsuite/g++.dg/ext/attr-ifunc-3.C
*************** abcc4257209dae8941d67580c272bb5e  gcc/te
*** 18135,18140 ****
--- 19944,19950 ----
  6c46559e7142685ab641751fe1177b7e  gcc/testsuite/g++.dg/ext/attr-pure.C
  359c96c31d10d777ab488b368388f5fa  gcc/testsuite/g++.dg/ext/attr-returns-nonnull.C
  dc83c0d6c6079968c8315e6161d79429  gcc/testsuite/g++.dg/ext/attr-trailing1.C
+ ed7c739de707916f3c9f5cc4c86b846a  gcc/testsuite/g++.dg/ext/attr-tsafe1.C
  9a34dbee24601c3613d18b683ab0431d  gcc/testsuite/g++.dg/ext/attr-type1.C
  436654db69995e2c5c9e51a240c1fb2b  gcc/testsuite/g++.dg/ext/attr-unavailable-1.C
  363318401f6c24d1fd4eb4b1352223b5  gcc/testsuite/g++.dg/ext/attr-unavailable-10.C
*************** df4711200e4e7cd7c5366aa4bdd29d74  gcc/te
*** 18211,18216 ****
--- 20021,20029 ----
  5254a238524950c95810e43d56192c6d  gcc/testsuite/g++.dg/ext/attrib62.C
  27519d8ffae247f3603111ebadacea31  gcc/testsuite/g++.dg/ext/attrib63.C
  c992ba90cd524ff973d2e06226c41bfa  gcc/testsuite/g++.dg/ext/attrib64.C
+ 44b909112bfd631dd20c4f45f2240f78  gcc/testsuite/g++.dg/ext/attrib65.C
+ 47aaf24b23d70e0a076ba11307265c60  gcc/testsuite/g++.dg/ext/attrib66.C
+ 3ed4e1675c864c91211151c02a6bd033  gcc/testsuite/g++.dg/ext/attrib67.C
  7af1e9265de26187b4a3a3880f99ac11  gcc/testsuite/g++.dg/ext/attrib7.C
  23c4a640241391acec5a1fd2c3fa5f25  gcc/testsuite/g++.dg/ext/attrib8.C
  db629587302d47a98b453a1702e900c9  gcc/testsuite/g++.dg/ext/attrib9.C
*************** e365f8ad6640a0436ca0135ba83acfe3  gcc/te
*** 18246,18253 ****
  85ee2bb51775678716017f28fed495b0  gcc/testsuite/g++.dg/ext/builtin-has-attribute.C
  282c952c379da688cac62d8eceee8d16  gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C
  28c9dbe7fd0321641cd617b67234b425  gcc/testsuite/g++.dg/ext/builtin-line1.C
! 8de123d2034c7e35f3a466e763cbefc8  gcc/testsuite/g++.dg/ext/builtin-object-size1.C
! 88b60ec42eecbed410b21afccf5a7be3  gcc/testsuite/g++.dg/ext/builtin-object-size2.C
  dc55e7eba1b2185bc5a3bc7222592855  gcc/testsuite/g++.dg/ext/builtin-object-size3.C
  6e22b34f1a6ac902cba4ecdeb7804089  gcc/testsuite/g++.dg/ext/builtin-offsetof1.C
  681316b793aa237fc32be0fdfa11fd84  gcc/testsuite/g++.dg/ext/builtin-offsetof2.C
--- 20059,20066 ----
  85ee2bb51775678716017f28fed495b0  gcc/testsuite/g++.dg/ext/builtin-has-attribute.C
  282c952c379da688cac62d8eceee8d16  gcc/testsuite/g++.dg/ext/builtin-has-attribute2.C
  28c9dbe7fd0321641cd617b67234b425  gcc/testsuite/g++.dg/ext/builtin-line1.C
! 1fb3cd23a1cc4662177143c94dfd9ee5  gcc/testsuite/g++.dg/ext/builtin-object-size1.C
! 0844ebe6216535744d339f58611b5d2d  gcc/testsuite/g++.dg/ext/builtin-object-size2.C
  dc55e7eba1b2185bc5a3bc7222592855  gcc/testsuite/g++.dg/ext/builtin-object-size3.C
  6e22b34f1a6ac902cba4ecdeb7804089  gcc/testsuite/g++.dg/ext/builtin-offsetof1.C
  681316b793aa237fc32be0fdfa11fd84  gcc/testsuite/g++.dg/ext/builtin-offsetof2.C
*************** dc55e7eba1b2185bc5a3bc7222592855  gcc/te
*** 18257,18262 ****
--- 20070,20076 ----
  af019eee15e37fe7fad2b4c7a1a60836  gcc/testsuite/g++.dg/ext/builtin-shufflevector-2.C
  6fe972cece2d8f6c59ec8928b18ac781  gcc/testsuite/g++.dg/ext/builtin-shufflevector-3.C
  32b975789c82ba65263ea00026cba0f6  gcc/testsuite/g++.dg/ext/builtin-shufflevector-4.C
+ 223752721fd2dce34453214d206c4038  gcc/testsuite/g++.dg/ext/builtin-shufflevector-5.C
  2688425f4bb09561395ab602acbbe5c1  gcc/testsuite/g++.dg/ext/builtin1.C
  913f9cc9acadced31bfe1ff51190752e  gcc/testsuite/g++.dg/ext/builtin10.C
  0159469d5f1eba2e6013c4c9e15f33ea  gcc/testsuite/g++.dg/ext/builtin11.C
*************** ea8708497444a8e8d07b540409207c48  gcc/te
*** 18278,18291 ****
  15cc37625c11442cc0af446e56566bb1  gcc/testsuite/g++.dg/ext/case-range2.C
  72c6bbae7ce0172b481cbf43eacbad4a  gcc/testsuite/g++.dg/ext/case-range3.C
  33c9284b87a2c450992599cc49258b60  gcc/testsuite/g++.dg/ext/char8_t-aliasing-1.C
! 1d9b053c3914a675f576e23d834995de  gcc/testsuite/g++.dg/ext/char8_t-char-literal-1.C
! b2463f7b0ceb6a3f21c959532af57f55  gcc/testsuite/g++.dg/ext/char8_t-char-literal-2.C
  ad32b8247a9b5b82a94383750aa05c98  gcc/testsuite/g++.dg/ext/char8_t-deduction-1.C
  06714a44662512959b91a0e18d0010a9  gcc/testsuite/g++.dg/ext/char8_t-deduction-2.C
  6617bc738c555c8f665291234fa1980c  gcc/testsuite/g++.dg/ext/char8_t-feature-test-macro-1.C
! eaa75bc2fbd7cb6cae4fcac3c1e5c95f  gcc/testsuite/g++.dg/ext/char8_t-feature-test-macro-2.C
  cbdcac15711ad93828a83eb4d02de7a7  gcc/testsuite/g++.dg/ext/char8_t-init-1.C
! 3a1fcce43c352eb09c104d1e15c1d6c0  gcc/testsuite/g++.dg/ext/char8_t-init-2.C
  d8d83bc869ef08afb6148664c7c7c178  gcc/testsuite/g++.dg/ext/char8_t-keyword-1.C
  99d68575f6ffe47c8f2137f12a5f8265  gcc/testsuite/g++.dg/ext/char8_t-keyword-2.C
  8a947fb373fc673422461ba128b10cd4  gcc/testsuite/g++.dg/ext/char8_t-limits-1.C
--- 20092,20105 ----
  15cc37625c11442cc0af446e56566bb1  gcc/testsuite/g++.dg/ext/case-range2.C
  72c6bbae7ce0172b481cbf43eacbad4a  gcc/testsuite/g++.dg/ext/case-range3.C
  33c9284b87a2c450992599cc49258b60  gcc/testsuite/g++.dg/ext/char8_t-aliasing-1.C
! b6d5a3e01b80dbe9bac4f49758e3a166  gcc/testsuite/g++.dg/ext/char8_t-char-literal-1.C
! 0f6aa5ab5111d96d2fe835ba245ee0e4  gcc/testsuite/g++.dg/ext/char8_t-char-literal-2.C
  ad32b8247a9b5b82a94383750aa05c98  gcc/testsuite/g++.dg/ext/char8_t-deduction-1.C
  06714a44662512959b91a0e18d0010a9  gcc/testsuite/g++.dg/ext/char8_t-deduction-2.C
  6617bc738c555c8f665291234fa1980c  gcc/testsuite/g++.dg/ext/char8_t-feature-test-macro-1.C
! 3032005893e709ac4f9ac53db3b47829  gcc/testsuite/g++.dg/ext/char8_t-feature-test-macro-2.C
  cbdcac15711ad93828a83eb4d02de7a7  gcc/testsuite/g++.dg/ext/char8_t-init-1.C
! 41290c87caccb300ef8f6df1aa3b3ce1  gcc/testsuite/g++.dg/ext/char8_t-init-2.C
  d8d83bc869ef08afb6148664c7c7c178  gcc/testsuite/g++.dg/ext/char8_t-keyword-1.C
  99d68575f6ffe47c8f2137f12a5f8265  gcc/testsuite/g++.dg/ext/char8_t-keyword-2.C
  8a947fb373fc673422461ba128b10cd4  gcc/testsuite/g++.dg/ext/char8_t-limits-1.C
*************** e710a424682710a7b643aeb0875d892d  gcc/te
*** 18344,18350 ****
  cfb1e3d3e6cedd5cd651ea51248b3822  gcc/testsuite/g++.dg/ext/cond1.C
  b619a632f099ce3dab4b1867824fb8ba  gcc/testsuite/g++.dg/ext/cond2.C
  35f45813a9e02081105f413dba5483a7  gcc/testsuite/g++.dg/ext/cond3.C
! cdc7152adabb958f4aa80615de6f6929  gcc/testsuite/g++.dg/ext/cond4.C
  be6818fc4bf61c5a68bebfcc1b622d06  gcc/testsuite/g++.dg/ext/cond5.C
  65a3298462ef1b7eae8f56cd64782e6f  gcc/testsuite/g++.dg/ext/consteval1.C
  aedb0bd74d236b797fb016d0b7034db4  gcc/testsuite/g++.dg/ext/constexpr-attr-cleanup1.C
--- 20158,20164 ----
  cfb1e3d3e6cedd5cd651ea51248b3822  gcc/testsuite/g++.dg/ext/cond1.C
  b619a632f099ce3dab4b1867824fb8ba  gcc/testsuite/g++.dg/ext/cond2.C
  35f45813a9e02081105f413dba5483a7  gcc/testsuite/g++.dg/ext/cond3.C
! fd9e96ce6211c7371bbb5469de0f2ada  gcc/testsuite/g++.dg/ext/cond4.C
  be6818fc4bf61c5a68bebfcc1b622d06  gcc/testsuite/g++.dg/ext/cond5.C
  65a3298462ef1b7eae8f56cd64782e6f  gcc/testsuite/g++.dg/ext/consteval1.C
  aedb0bd74d236b797fb016d0b7034db4  gcc/testsuite/g++.dg/ext/constexpr-attr-cleanup1.C
*************** e67bf799816a1f70359e80cdc4a84870  gcc/te
*** 18366,18372 ****
  621fa452bcd6171fb15478213e76defe  gcc/testsuite/g++.dg/ext/desig11.C
  f27fbfcb6cc0abd71969d8836702e9aa  gcc/testsuite/g++.dg/ext/desig2.C
  6aa84e0888c3e522be50c83f640eb04f  gcc/testsuite/g++.dg/ext/desig3.C
! 6617e79b9b6c10c7fc418ca6174e3580  gcc/testsuite/g++.dg/ext/desig4.C
  7aee75176b7b5d7721bbf1d4a4cbe51a  gcc/testsuite/g++.dg/ext/desig5.C
  8d6356542b4a9a08cbf58a3a62006a65  gcc/testsuite/g++.dg/ext/desig6.C
  48f719a1cde6dc4d7533b144d13a3e7f  gcc/testsuite/g++.dg/ext/desig7.C
--- 20180,20186 ----
  621fa452bcd6171fb15478213e76defe  gcc/testsuite/g++.dg/ext/desig11.C
  f27fbfcb6cc0abd71969d8836702e9aa  gcc/testsuite/g++.dg/ext/desig2.C
  6aa84e0888c3e522be50c83f640eb04f  gcc/testsuite/g++.dg/ext/desig3.C
! 26c42aadaa6ea14419bcdb34099368d7  gcc/testsuite/g++.dg/ext/desig4.C
  7aee75176b7b5d7721bbf1d4a4cbe51a  gcc/testsuite/g++.dg/ext/desig5.C
  8d6356542b4a9a08cbf58a3a62006a65  gcc/testsuite/g++.dg/ext/desig6.C
  48f719a1cde6dc4d7533b144d13a3e7f  gcc/testsuite/g++.dg/ext/desig7.C
*************** b4a8192e545a20f5b7dea0d9fb8a6f63  gcc/te
*** 18458,18463 ****
--- 20272,20278 ----
  58f8a0136cdff73766d2255387d3090e  gcc/testsuite/g++.dg/ext/gnu-inline-template-class.C
  df8bb001c84f32307c935ddafd4b28e1  gcc/testsuite/g++.dg/ext/gnu-inline-template-func.C
  adccbbb2dfe79ac5c79fd79702b4ebcb  gcc/testsuite/g++.dg/ext/goto1.C
+ 0d59ccc69a828e6d6af0bf33802fe28e  gcc/testsuite/g++.dg/ext/has-builtin-1.C
  bc6cd626f7adecd0bd10f33548711cd4  gcc/testsuite/g++.dg/ext/has_nothrow_assign.C
  48dfd353846908faae48925db69aa5bd  gcc/testsuite/g++.dg/ext/has_nothrow_assign_odr.C
  03de00c47fa1299568fc9448844b0a4a  gcc/testsuite/g++.dg/ext/has_nothrow_constructor-2.C
*************** f2cf0baaaf489aa15f22210e07d052d1  gcc/te
*** 18492,18502 ****
--- 20307,20319 ----
  3b33306d69b3ca18d4baf8c0846a03a3  gcc/testsuite/g++.dg/ext/int128-4.C
  754d9cd2dfd66632200e26d330e6b4a6  gcc/testsuite/g++.dg/ext/int128-5.C
  77dfa593ec9ad567eab91cd02d57603f  gcc/testsuite/g++.dg/ext/int128-6.C
+ 302484e7798b2a4053ee4acf24bcfa8e  gcc/testsuite/g++.dg/ext/int128-7.C
  83602db2bd9d77a181d488d81e2441e1  gcc/testsuite/g++.dg/ext/integer-pack1.C
  4443382c2ba1abef21e5ac6b05161a19  gcc/testsuite/g++.dg/ext/integer-pack2.C
  c82a623a667acc283be2af5673150fd6  gcc/testsuite/g++.dg/ext/integer-pack3.C
  c739fd3c0527fbd970a2964c988fe2de  gcc/testsuite/g++.dg/ext/integer-pack4.C
  3ca16f51f64cd6e80befc97ce779a0a4  gcc/testsuite/g++.dg/ext/integer-pack5.C
+ b71a9240c800bd7b07d3f0002412d2da  gcc/testsuite/g++.dg/ext/integer-pack6.C
  3a16bb49d1e751989bc6c5980e68cc41  gcc/testsuite/g++.dg/ext/interface1.C
  a6025f300298ca27e5d4454172592895  gcc/testsuite/g++.dg/ext/interface1.h
  0530572db926ff489aea49718a5eabe8  gcc/testsuite/g++.dg/ext/interface1a.cc
*************** b579998c84a7b6c9374dbdc81f28e45a  gcc/te
*** 18527,18532 ****
--- 20344,20355 ----
  ed04365b57dec8b58125996aefe86234  gcc/testsuite/g++.dg/ext/is_constructible4.C
  dc3385dfd74c1bf2c03d4da78571f637  gcc/testsuite/g++.dg/ext/is_constructible5.C
  9553e2b6c2e80320fe1dbc53bb218083  gcc/testsuite/g++.dg/ext/is_constructible6.C
+ c9c92d18a37f4f8ede2a39a1b3ad62f6  gcc/testsuite/g++.dg/ext/is_convertible1.C
+ 2df355ce84091bec91470e6f49164515  gcc/testsuite/g++.dg/ext/is_convertible2.C
+ 5ba6edf25552f47c87c7d5735f634b3c  gcc/testsuite/g++.dg/ext/is_convertible3.C
+ 3a805f1dafea1ecf418ab3dbdb6af96b  gcc/testsuite/g++.dg/ext/is_convertible4.C
+ 986a829ca110a6da40ad4e40333b4eb5  gcc/testsuite/g++.dg/ext/is_convertible5.C
+ ebb1df191bcea60ed6342dad182b8901  gcc/testsuite/g++.dg/ext/is_deducible1.C
  deb5d60ce9955a69d116b30edd2cf933  gcc/testsuite/g++.dg/ext/is_empty.C
  51590a59aaf8715b9fe4a7ae06414cb8  gcc/testsuite/g++.dg/ext/is_empty2.C
  03f82ac5f5b864878fa0ffa4383fa338  gcc/testsuite/g++.dg/ext/is_enum.C
*************** f21216a45d73afa0f45a28cdfc72ee5e  gcc/te
*** 18541,18546 ****
--- 20364,20373 ----
  fafacdd1be04cd54ee0db94365707bc0  gcc/testsuite/g++.dg/ext/is_nothrow_constructible4.C
  f5236918ade9df134083c1a1193f0f88  gcc/testsuite/g++.dg/ext/is_nothrow_constructible5.C
  594bc3f1122959c08f61aa87d182e406  gcc/testsuite/g++.dg/ext/is_nothrow_constructible6.C
+ b85cbea684bb347ceb84b361aaebb088  gcc/testsuite/g++.dg/ext/is_nothrow_convertible1.C
+ d68d55dab0fd8c9b90c94945650d045f  gcc/testsuite/g++.dg/ext/is_nothrow_convertible2.C
+ 1c60e05c301e80b4bce25c52a32f41de  gcc/testsuite/g++.dg/ext/is_nothrow_convertible3.C
+ eaf4aa577e3886ea0be13eb1aa62d230  gcc/testsuite/g++.dg/ext/is_nothrow_convertible4.C
  23bf9f19377330f98f34038ddb75c870  gcc/testsuite/g++.dg/ext/is_pod.C
  84c3a14b6222536e4f6c6bb7519b5400  gcc/testsuite/g++.dg/ext/is_pod_98.C
  f316c6cb603f1746eab7e3d67e84b5c4  gcc/testsuite/g++.dg/ext/is_pod_incomplete.C
*************** bcf9b6873e48870b8f6014b5da708cd3  gcc/te
*** 18598,18603 ****
--- 20425,20432 ----
  2e29b33d9b093b6a30a0e49d1b42c6c8  gcc/testsuite/g++.dg/ext/packed7.C
  065cff376c58bb925a16845eb3c01ced  gcc/testsuite/g++.dg/ext/packed8.C
  0932ad5ce3e0455a61e5bd35e5ed587a  gcc/testsuite/g++.dg/ext/packed9.C
+ 56ee2161181409d6d60df10ccf5ac2b0  gcc/testsuite/g++.dg/ext/pr106877.C
+ 8ba16c3bb73d54b943f0a1e2cd811ac3  gcc/testsuite/g++.dg/ext/pr109177.C
  210171cdbd9571de1bfd894e6c809efa  gcc/testsuite/g++.dg/ext/pr17577.C
  d017f3273bbed79c882146d070c763a4  gcc/testsuite/g++.dg/ext/pr17577.h
  eb1830f7b92ca604956f6b57b3a6d3f4  gcc/testsuite/g++.dg/ext/pr27019.C
*************** a3a19e204ac6e54df8904525f84903a0  gcc/te
*** 18632,18641 ****
--- 20461,20476 ----
  a355ef8a91fca7be6ca2387ec0ad27bd  gcc/testsuite/g++.dg/ext/pr93998.C
  0de975ae227332dc92f27d4dc970fa65  gcc/testsuite/g++.dg/ext/pr94197.C
  2e98a912d14514a9d68f342ae3ccc4cd  gcc/testsuite/g++.dg/ext/pr99508.C
+ 769de1884d220580907e3b4f4ef76d76  gcc/testsuite/g++.dg/ext/pragma1.C
  ad117686eb16e680b29f2f5e45ebe0df  gcc/testsuite/g++.dg/ext/pragmaweak1.C
  ae2794e104309a224e228d70e4cede48  gcc/testsuite/g++.dg/ext/pretty1.C
  faa8333681bedde3ba84daa60ec26ff8  gcc/testsuite/g++.dg/ext/pretty2.C
  4433151c7bac2cb6a0ce24581b48c1e1  gcc/testsuite/g++.dg/ext/pretty3.C
+ bce41fa775f2176271e957652f0edf69  gcc/testsuite/g++.dg/ext/reference_constructs_from_temporary1.C
+ 95d105b089ea555ab8e1c29ce9e1f667  gcc/testsuite/g++.dg/ext/reference_converts_from_temporary1.C
+ 01789f18bffef5bcf261727b48fc9bb5  gcc/testsuite/g++.dg/ext/remove_cv.C
+ 9d092236f17635c7e6d0abe935fd348f  gcc/testsuite/g++.dg/ext/remove_cvref.C
+ fc020aa10be075961f1ed9cc43fa5790  gcc/testsuite/g++.dg/ext/remove_reference.C
  171b60b2dd599842569025ee22f7703a  gcc/testsuite/g++.dg/ext/restrict1.C
  fe03ec285c8ec98dfe8ce3f8fe391cf8  gcc/testsuite/g++.dg/ext/restrict2.C
  9b5ee55248ed64a182e8649894580ade  gcc/testsuite/g++.dg/ext/selectany1.C
*************** e5c3a36ac53e4069367fadc126c6b8d9  gcc/te
*** 18653,18664 ****
  080f1c1312ba2fa63117d6a73efdabe4  gcc/testsuite/g++.dg/ext/stmtexpr16.C
  a3c7886e27f3c3227c55814be00ca890  gcc/testsuite/g++.dg/ext/stmtexpr17.C
  202c9dc1d40064ba895afcf341129f31  gcc/testsuite/g++.dg/ext/stmtexpr18.C
! 697a11dfa8a2edf690d95082c330ae95  gcc/testsuite/g++.dg/ext/stmtexpr19.C
  e6bc1a09cf3c9d838c7ad4575c3d8740  gcc/testsuite/g++.dg/ext/stmtexpr2.C
  7fc413acf21992b4701e6433f9e5d051  gcc/testsuite/g++.dg/ext/stmtexpr20.C
  4fcd7687415acab5a06f5081c00cf224  gcc/testsuite/g++.dg/ext/stmtexpr21.C
  4d09ca3f75571211a1af55640503553d  gcc/testsuite/g++.dg/ext/stmtexpr22.C
  08aa6b7926e8190151b8337923a5ece9  gcc/testsuite/g++.dg/ext/stmtexpr23.C
  15be25b1a07f94e4d65103bfb52d6406  gcc/testsuite/g++.dg/ext/stmtexpr3.C
  7f4e8ebedb382ebc1349d7067b034121  gcc/testsuite/g++.dg/ext/stmtexpr4.C
  a6cc01634e0bd707301c873f2d35f891  gcc/testsuite/g++.dg/ext/stmtexpr5.C
--- 20488,20501 ----
  080f1c1312ba2fa63117d6a73efdabe4  gcc/testsuite/g++.dg/ext/stmtexpr16.C
  a3c7886e27f3c3227c55814be00ca890  gcc/testsuite/g++.dg/ext/stmtexpr17.C
  202c9dc1d40064ba895afcf341129f31  gcc/testsuite/g++.dg/ext/stmtexpr18.C
! bbaed831f59571f89f57ff54b1f194ce  gcc/testsuite/g++.dg/ext/stmtexpr19.C
  e6bc1a09cf3c9d838c7ad4575c3d8740  gcc/testsuite/g++.dg/ext/stmtexpr2.C
  7fc413acf21992b4701e6433f9e5d051  gcc/testsuite/g++.dg/ext/stmtexpr20.C
  4fcd7687415acab5a06f5081c00cf224  gcc/testsuite/g++.dg/ext/stmtexpr21.C
  4d09ca3f75571211a1af55640503553d  gcc/testsuite/g++.dg/ext/stmtexpr22.C
  08aa6b7926e8190151b8337923a5ece9  gcc/testsuite/g++.dg/ext/stmtexpr23.C
+ 50b71ec6184b5e6c3e905f0038802697  gcc/testsuite/g++.dg/ext/stmtexpr24.C
+ 12bbac313feac912640ed58cf1f7cdd2  gcc/testsuite/g++.dg/ext/stmtexpr25.C
  15be25b1a07f94e4d65103bfb52d6406  gcc/testsuite/g++.dg/ext/stmtexpr3.C
  7f4e8ebedb382ebc1349d7067b034121  gcc/testsuite/g++.dg/ext/stmtexpr4.C
  a6cc01634e0bd707301c873f2d35f891  gcc/testsuite/g++.dg/ext/stmtexpr5.C
*************** cac7810767ae23faa6823a798e9c3cea  gcc/te
*** 18703,18719 ****
  0217210e867cc6de19f825b9e4b680d3  gcc/testsuite/g++.dg/ext/typeof7.C
  a9d136cfb86815cbf4d2e46089c90ce0  gcc/testsuite/g++.dg/ext/typeof8.C
  d7e6d10c23ed31b44c2e6c3268ab2b30  gcc/testsuite/g++.dg/ext/typeof9.C
! 365e2c3a8b25788d819bb132cd50c108  gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
  b56af9a8974b21c26c4d8df3e75c33dd  gcc/testsuite/g++.dg/ext/underlying_type1.C
  999bb6333438249f93af4d0c7b177d10  gcc/testsuite/g++.dg/ext/underlying_type10.C
  32d08b925dba9e7ca38d9ec9643c84fa  gcc/testsuite/g++.dg/ext/underlying_type11.C
  abfd710e95fdf463d4458ba09797be53  gcc/testsuite/g++.dg/ext/underlying_type12.C
  cd2c9017532711278e93d2ec37f32659  gcc/testsuite/g++.dg/ext/underlying_type2.C
  c3dc60fecd82cab7b2080a3b42016047  gcc/testsuite/g++.dg/ext/underlying_type3.C
  b7a8ecf75070cdd4647856d3d7028b3d  gcc/testsuite/g++.dg/ext/underlying_type4.C
  210d66722587db657b9dbd70b1b6b6e5  gcc/testsuite/g++.dg/ext/underlying_type5.C
  93e9f91e79578a6b15defdf39e6db298  gcc/testsuite/g++.dg/ext/underlying_type6.C
! e3709256966316466e563d0784165ece  gcc/testsuite/g++.dg/ext/underlying_type7.C
  e3920251c1881f799695cd65335b3cac  gcc/testsuite/g++.dg/ext/underlying_type8.C
  7156372ea568049610a6b46322d8d564  gcc/testsuite/g++.dg/ext/underlying_type9.C
  265da9fd5c8f508dc7188b306541554d  gcc/testsuite/g++.dg/ext/unroll-1.C
--- 20540,20558 ----
  0217210e867cc6de19f825b9e4b680d3  gcc/testsuite/g++.dg/ext/typeof7.C
  a9d136cfb86815cbf4d2e46089c90ce0  gcc/testsuite/g++.dg/ext/typeof8.C
  d7e6d10c23ed31b44c2e6c3268ab2b30  gcc/testsuite/g++.dg/ext/typeof9.C
! d3f4de62bf778201235632d82af7d801  gcc/testsuite/g++.dg/ext/unary_trait_incomplete.C
  b56af9a8974b21c26c4d8df3e75c33dd  gcc/testsuite/g++.dg/ext/underlying_type1.C
  999bb6333438249f93af4d0c7b177d10  gcc/testsuite/g++.dg/ext/underlying_type10.C
  32d08b925dba9e7ca38d9ec9643c84fa  gcc/testsuite/g++.dg/ext/underlying_type11.C
  abfd710e95fdf463d4458ba09797be53  gcc/testsuite/g++.dg/ext/underlying_type12.C
+ bac63f65d9af9633a6a709b56e57bc93  gcc/testsuite/g++.dg/ext/underlying_type13.C
+ 35e4819f2eebc1b3c180bf57753059ae  gcc/testsuite/g++.dg/ext/underlying_type14.C
  cd2c9017532711278e93d2ec37f32659  gcc/testsuite/g++.dg/ext/underlying_type2.C
  c3dc60fecd82cab7b2080a3b42016047  gcc/testsuite/g++.dg/ext/underlying_type3.C
  b7a8ecf75070cdd4647856d3d7028b3d  gcc/testsuite/g++.dg/ext/underlying_type4.C
  210d66722587db657b9dbd70b1b6b6e5  gcc/testsuite/g++.dg/ext/underlying_type5.C
  93e9f91e79578a6b15defdf39e6db298  gcc/testsuite/g++.dg/ext/underlying_type6.C
! d4224ad9debbb9d9c4635068b31a7415  gcc/testsuite/g++.dg/ext/underlying_type7.C
  e3920251c1881f799695cd65335b3cac  gcc/testsuite/g++.dg/ext/underlying_type8.C
  7156372ea568049610a6b46322d8d564  gcc/testsuite/g++.dg/ext/underlying_type9.C
  265da9fd5c8f508dc7188b306541554d  gcc/testsuite/g++.dg/ext/unroll-1.C
*************** b23df01dd6bcf3a8469032ec56f50cca  gcc/te
*** 18778,18784 ****
  1aca5dc21072214b61a23fc146a7973e  gcc/testsuite/g++.dg/ext/vector22.C
  480e69d3b3cfbaf863bf4572ea33adcc  gcc/testsuite/g++.dg/ext/vector23.C
  082d048149f2f298b6ae5f298da8ebe7  gcc/testsuite/g++.dg/ext/vector24.C
! 0ef4dacbc69d231f805bc247669d5157  gcc/testsuite/g++.dg/ext/vector25.C
  90e2e9a7d8de41b91b36e73f97d2d368  gcc/testsuite/g++.dg/ext/vector26.C
  3cf136e3fe2bdc443fd4f83b9b2da48e  gcc/testsuite/g++.dg/ext/vector27.C
  2ea015b73c077fb5d4aac325d1543587  gcc/testsuite/g++.dg/ext/vector28.C
--- 20617,20623 ----
  1aca5dc21072214b61a23fc146a7973e  gcc/testsuite/g++.dg/ext/vector22.C
  480e69d3b3cfbaf863bf4572ea33adcc  gcc/testsuite/g++.dg/ext/vector23.C
  082d048149f2f298b6ae5f298da8ebe7  gcc/testsuite/g++.dg/ext/vector24.C
! 3aa80b8679f4a1872a0aeb5e7ee95a62  gcc/testsuite/g++.dg/ext/vector25.C
  90e2e9a7d8de41b91b36e73f97d2d368  gcc/testsuite/g++.dg/ext/vector26.C
  3cf136e3fe2bdc443fd4f83b9b2da48e  gcc/testsuite/g++.dg/ext/vector27.C
  2ea015b73c077fb5d4aac325d1543587  gcc/testsuite/g++.dg/ext/vector28.C
*************** ff1db1bf54183447b20849ac3c27f4ab  gcc/te
*** 18798,18803 ****
--- 20637,20643 ----
  1d6b45dce331a414b31b64c5104ab383  gcc/testsuite/g++.dg/ext/vector4.C
  7527a84a941056775919388a2f30abe5  gcc/testsuite/g++.dg/ext/vector40.C
  f9d2ebdedaca8d41e448e7a698122e11  gcc/testsuite/g++.dg/ext/vector41.C
+ f3747dffb3f04c3dc3d8490b73bc13c6  gcc/testsuite/g++.dg/ext/vector42.C
  3231264b4b96091ab8a2351e76707e8d  gcc/testsuite/g++.dg/ext/vector5.C
  f630b6880676201345d2e753913e064c  gcc/testsuite/g++.dg/ext/vector6.C
  499980717843a208168505a264f263e3  gcc/testsuite/g++.dg/ext/vector7.C
*************** f810d8d490c2163100b8092bb733b17d  gcc/te
*** 18874,18880 ****
  50a5255eedce5952a1d40d86a910db5a  gcc/testsuite/g++.dg/ext/visibility/visibility-7.C
  1e3d15af5ef5d1e7ce91f6fb5b2ce876  gcc/testsuite/g++.dg/ext/visibility/visibility-8.C
  52a68707f7a31ec98e42c99f237d00db  gcc/testsuite/g++.dg/ext/visibility/visibility-9.C
! ce175ea385a92b92e4a4d666c429ce62  gcc/testsuite/g++.dg/ext/visibility/visibility-local-extern1.C
  fada77e89afed01f6b16c99bba16e18a  gcc/testsuite/g++.dg/ext/visibility/warn2.C
  3a38b55c777fae7a929a7353e32e9c85  gcc/testsuite/g++.dg/ext/visibility/warn3.C
  dc76fc17bcb2fe7dfe39be101a9bd6b5  gcc/testsuite/g++.dg/ext/visibility/warn4.C
--- 20714,20720 ----
  50a5255eedce5952a1d40d86a910db5a  gcc/testsuite/g++.dg/ext/visibility/visibility-7.C
  1e3d15af5ef5d1e7ce91f6fb5b2ce876  gcc/testsuite/g++.dg/ext/visibility/visibility-8.C
  52a68707f7a31ec98e42c99f237d00db  gcc/testsuite/g++.dg/ext/visibility/visibility-9.C
! 506e087fc3aa423994a68fa2dcaa38eb  gcc/testsuite/g++.dg/ext/visibility/visibility-local-extern1.C
  fada77e89afed01f6b16c99bba16e18a  gcc/testsuite/g++.dg/ext/visibility/warn2.C
  3a38b55c777fae7a929a7353e32e9c85  gcc/testsuite/g++.dg/ext/visibility/warn3.C
  dc76fc17bcb2fe7dfe39be101a9bd6b5  gcc/testsuite/g++.dg/ext/visibility/warn4.C
*************** d2a31eb19f78eba07ebeb256b409141a  gcc/te
*** 18912,18920 ****
  a90a1ccb44e24f11ce27ee962f1c9c2d  gcc/testsuite/g++.dg/ext/weak4.C
  3966d7feec90bb7ef5f1b9dd00c1f2fb  gcc/testsuite/g++.dg/ext/weak5.C
  7169f6fd8a00376f098cc03c0375b6b1  gcc/testsuite/g++.dg/ext/weak6.C
! 5d1e81961259215cfac58aeb10409f5d  gcc/testsuite/g++.dg/fstack-protector-strong.C
  165f4d1a12237b9ed8273a7db5e4299e  gcc/testsuite/g++.dg/func-args-1.C
! 3463cd7092fa60532a8c0f93b76eef64  gcc/testsuite/g++.dg/gcov/gcov-1.C
  3bb74e0b30131d9ca29c007bfd471494  gcc/testsuite/g++.dg/gcov/gcov-10.C
  22fc6504c62d44c9b94fe8d23a3e383f  gcc/testsuite/g++.dg/gcov/gcov-11.C
  c95c4e2bd4e437ad3ff1db17dc98ed8a  gcc/testsuite/g++.dg/gcov/gcov-12.C
--- 20752,20762 ----
  a90a1ccb44e24f11ce27ee962f1c9c2d  gcc/testsuite/g++.dg/ext/weak4.C
  3966d7feec90bb7ef5f1b9dd00c1f2fb  gcc/testsuite/g++.dg/ext/weak5.C
  7169f6fd8a00376f098cc03c0375b6b1  gcc/testsuite/g++.dg/ext/weak6.C
! 76411379bc46f8e28491db8515c8b035  gcc/testsuite/g++.dg/freestanding-main.C
! e0becb782bb1d8a5f80ddc28f09b76b5  gcc/testsuite/g++.dg/freestanding-nonint-main.C
! 809ca69af7e2e785bd8be802e550096b  gcc/testsuite/g++.dg/fstack-protector-strong.C
  165f4d1a12237b9ed8273a7db5e4299e  gcc/testsuite/g++.dg/func-args-1.C
! 298209147177d6620c693f143e25bd5f  gcc/testsuite/g++.dg/gcov/gcov-1.C
  3bb74e0b30131d9ca29c007bfd471494  gcc/testsuite/g++.dg/gcov/gcov-10.C
  22fc6504c62d44c9b94fe8d23a3e383f  gcc/testsuite/g++.dg/gcov/gcov-11.C
  c95c4e2bd4e437ad3ff1db17dc98ed8a  gcc/testsuite/g++.dg/gcov/gcov-12.C
*************** a7c093e32d8e0cc08e02c3253748979c  gcc/te
*** 18934,18940 ****
  1daf1c411209223b51591e3ac9090bfb  gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
  7def4ed5b129018a31fbca4ad8fd6300  gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
  10bbabd8392ab7ee5799bc6a14018686  gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
! 534f2451d78aee913c70b855701cd584  gcc/testsuite/g++.dg/gcov/gcov.exp
  6a2ed5ca795d47c333efae7c155c43b1  gcc/testsuite/g++.dg/gcov/gcov.py
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  4486858dfdc63ab6e7f3c42c2b6b11ed  gcc/testsuite/g++.dg/gcov/loop.C
--- 20776,20782 ----
  1daf1c411209223b51591e3ac9090bfb  gcc/testsuite/g++.dg/gcov/gcov-dump-1.C
  7def4ed5b129018a31fbca4ad8fd6300  gcc/testsuite/g++.dg/gcov/gcov-dump-2.C
  10bbabd8392ab7ee5799bc6a14018686  gcc/testsuite/g++.dg/gcov/gcov-threads-1.C
! 0e21ec89d065c90a7ebbb65071f94fb0  gcc/testsuite/g++.dg/gcov/gcov.exp
  6a2ed5ca795d47c333efae7c155c43b1  gcc/testsuite/g++.dg/gcov/gcov.py
  28167c93ffea74cb328ff3cd087d643a  gcc/testsuite/g++.dg/gcov/gcovpart-12b.C
  4486858dfdc63ab6e7f3c42c2b6b11ed  gcc/testsuite/g++.dg/gcov/loop.C
*************** a967f09270d7b705a4f98a125b76c7a6  gcc/te
*** 18950,18956 ****
  7ad2f2c71c908fc0a03c6dc6be0bbd06  gcc/testsuite/g++.dg/gcov/ternary.C
  13fff407256fdeadcb3617a113957a17  gcc/testsuite/g++.dg/gcov/test-gcov-17.py
  756bdf5e4081168579b0347da701c42f  gcc/testsuite/g++.dg/gcov/test-pr98273.py
! d1cbb5a66b4bfa8ec114cd91d6c746af  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
  57aec36453f242d12bf5515cb425f04e  gcc/testsuite/g++.dg/goacc/cache-1.C
  1f2e4a88f87fa010e31b6c237e00aea7  gcc/testsuite/g++.dg/goacc/cache-2.C
  7f9f08a09fc949be2045ab00795bc184  gcc/testsuite/g++.dg/goacc/cache-3-1.C
--- 20792,20798 ----
  7ad2f2c71c908fc0a03c6dc6be0bbd06  gcc/testsuite/g++.dg/gcov/ternary.C
  13fff407256fdeadcb3617a113957a17  gcc/testsuite/g++.dg/gcov/test-gcov-17.py
  756bdf5e4081168579b0347da701c42f  gcc/testsuite/g++.dg/gcov/test-pr98273.py
! 9aeb0b848a475cbd9cbab3bb8cf09b52  gcc/testsuite/g++.dg/goacc-gomp/goacc-gomp.exp
  57aec36453f242d12bf5515cb425f04e  gcc/testsuite/g++.dg/goacc/cache-1.C
  1f2e4a88f87fa010e31b6c237e00aea7  gcc/testsuite/g++.dg/goacc/cache-2.C
  7f9f08a09fc949be2045ab00795bc184  gcc/testsuite/g++.dg/goacc/cache-3-1.C
*************** d4df15d043d8968539a88c1beeda4e7e  gcc/te
*** 18961,18974 ****
  ab5a2e3886c2a5718ee179f9c9a446ce  gcc/testsuite/g++.dg/goacc/declare-pr94120.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
  50fb26ed859d201ce4b714967a5c4066  gcc/testsuite/g++.dg/goacc/firstprivate-mappings-1.C
! 7f228db5940b4c0b4137561d5c316a67  gcc/testsuite/g++.dg/goacc/goacc.exp
! dca2050aa56eecbf14b017115feac6a7  gcc/testsuite/g++.dg/goacc/mdc.C
  d597d4e7ee031afa50fadecd64ddac77  gcc/testsuite/g++.dg/goacc/pr101759.C
  e2e937b81f60d45e6f0fbe6cdc7207e4  gcc/testsuite/g++.dg/goacc/reference.C
  18b27d379a2a779f530009ced1114ae3  gcc/testsuite/g++.dg/goacc/routine-1.C
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
  09546a7023f0a91753083cc3cbcd8a3d  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
  e741249479c6c7025b48c7e503fcff98  gcc/testsuite/g++.dg/gomp/allocate-1.C
  49202612ed526412e25f866f82bd0573  gcc/testsuite/g++.dg/gomp/allocate-2.C
  0c676d0276d06d9e6ec17a845969619a  gcc/testsuite/g++.dg/gomp/allocate-3.C
--- 20803,20821 ----
  ab5a2e3886c2a5718ee179f9c9a446ce  gcc/testsuite/g++.dg/goacc/declare-pr94120.C
  2b70bd2b15144e92ee104c07a8e2bc13  gcc/testsuite/g++.dg/goacc/deviceptr-1.C
  50fb26ed859d201ce4b714967a5c4066  gcc/testsuite/g++.dg/goacc/firstprivate-mappings-1.C
! 88b8fdceee343986794c230676f6b881  gcc/testsuite/g++.dg/goacc/goacc.exp
! 584c742e0613158e5e3d528f9ded5463  gcc/testsuite/g++.dg/goacc/mdc.C
! 919ddcaeee68dd7dab5e3cf7adf25963  gcc/testsuite/g++.dg/goacc/member-array-acc.C
  d597d4e7ee031afa50fadecd64ddac77  gcc/testsuite/g++.dg/goacc/pr101759.C
+ e52e88addea4404d3b276d25b44761c5  gcc/testsuite/g++.dg/goacc/pr107028-1.C
+ 850fa88299e8bcfd8762d4f56284ac92  gcc/testsuite/g++.dg/goacc/pr107028-2.C
  e2e937b81f60d45e6f0fbe6cdc7207e4  gcc/testsuite/g++.dg/goacc/reference.C
  18b27d379a2a779f530009ced1114ae3  gcc/testsuite/g++.dg/goacc/routine-1.C
  9be1fd00ad32c627f4396d3b564fad56  gcc/testsuite/g++.dg/goacc/routine-2.C
  09546a7023f0a91753083cc3cbcd8a3d  gcc/testsuite/g++.dg/goacc/template.C
  63c7a5fb86ca9e170a766952f0dda797  gcc/testsuite/g++.dg/goacc/tile-1.C
+ 0ef19812fd033ce3e1a7b3f619639bc6  gcc/testsuite/g++.dg/gomp/all-memory-1.C
+ 95770641a336700c84cdc07f3cba2ea1  gcc/testsuite/g++.dg/gomp/all-memory-2.C
  e741249479c6c7025b48c7e503fcff98  gcc/testsuite/g++.dg/gomp/allocate-1.C
  49202612ed526412e25f866f82bd0573  gcc/testsuite/g++.dg/gomp/allocate-2.C
  0c676d0276d06d9e6ec17a845969619a  gcc/testsuite/g++.dg/gomp/allocate-3.C
*************** e741249479c6c7025b48c7e503fcff98  gcc/te
*** 18980,18999 ****
  b88c4d2eb787d594ae7d4448ee809655  gcc/testsuite/g++.dg/gomp/atomic-20.C
  791fe553aa8c81aef018b426f29f5e89  gcc/testsuite/g++.dg/gomp/atomic-5.C
  64f007dc7d84cb3393b19e626e175a25  gcc/testsuite/g++.dg/gomp/atomic-6.C
! 11618da00a76ca370f69c7e68fd7d55b  gcc/testsuite/g++.dg/gomp/attrs-1.C
! c48109a6488b41bbc1725ed104120e2b  gcc/testsuite/g++.dg/gomp/attrs-10.C
  6a00cf4cba9075ab202ce5a65ca3aa8b  gcc/testsuite/g++.dg/gomp/attrs-11.C
  2f120ea276638046a850ac83bd0ea37a  gcc/testsuite/g++.dg/gomp/attrs-12.C
  374abff67695b66d14322ae5a94abae0  gcc/testsuite/g++.dg/gomp/attrs-13.C
  0312393ea50f9742543a50b6b4052785  gcc/testsuite/g++.dg/gomp/attrs-14.C
! 7ddf4a898a65ee85467f4b669b2db473  gcc/testsuite/g++.dg/gomp/attrs-2.C
  afb240a82f143b0c0fd381b905ad9012  gcc/testsuite/g++.dg/gomp/attrs-3.C
  f6f7f13d6edea5043634dbe54727d513  gcc/testsuite/g++.dg/gomp/attrs-4.C
  87087766f29fa1ed6f5e1834dc53e8e6  gcc/testsuite/g++.dg/gomp/attrs-5.C
  768e4f024ce850867145580f3410ade0  gcc/testsuite/g++.dg/gomp/attrs-6.C
  f41f249db9ee61949e786f1e1854ee77  gcc/testsuite/g++.dg/gomp/attrs-7.C
  de68616288c62ad9860d6c876e1b7668  gcc/testsuite/g++.dg/gomp/attrs-8.C
! df455735715efc11aa08a4b1a5799ac4  gcc/testsuite/g++.dg/gomp/attrs-9.C
  28210efb6de9f161ddfddd705210bc01  gcc/testsuite/g++.dg/gomp/barrier-1.C
  4c453c9ea0f47e5cb5f0c015b01aa7c9  gcc/testsuite/g++.dg/gomp/barrier-2.C
  418aec9a82d0d6ecba7659cc2cbb6dfa  gcc/testsuite/g++.dg/gomp/block-0.C
--- 20827,20850 ----
  b88c4d2eb787d594ae7d4448ee809655  gcc/testsuite/g++.dg/gomp/atomic-20.C
  791fe553aa8c81aef018b426f29f5e89  gcc/testsuite/g++.dg/gomp/atomic-5.C
  64f007dc7d84cb3393b19e626e175a25  gcc/testsuite/g++.dg/gomp/atomic-6.C
! 17da6394b8c4cdc421956ec182499c05  gcc/testsuite/g++.dg/gomp/attrs-1.C
! 00c57f5b1b9a1b3a83ecc08459c28bb9  gcc/testsuite/g++.dg/gomp/attrs-10.C
  6a00cf4cba9075ab202ce5a65ca3aa8b  gcc/testsuite/g++.dg/gomp/attrs-11.C
  2f120ea276638046a850ac83bd0ea37a  gcc/testsuite/g++.dg/gomp/attrs-12.C
  374abff67695b66d14322ae5a94abae0  gcc/testsuite/g++.dg/gomp/attrs-13.C
  0312393ea50f9742543a50b6b4052785  gcc/testsuite/g++.dg/gomp/attrs-14.C
! 27b49f896bb789845232ea5137e30e4b  gcc/testsuite/g++.dg/gomp/attrs-15.C
! ae22cf8f9031f97be08e4ee31a2b0046  gcc/testsuite/g++.dg/gomp/attrs-16.C
! 02a84cd7b48b19d2f816a4673451ead5  gcc/testsuite/g++.dg/gomp/attrs-17.C
! 718e92975c718d6a8df170b8f637ec0f  gcc/testsuite/g++.dg/gomp/attrs-18.C
! 498d75c91f12b54f85492ecd724222d7  gcc/testsuite/g++.dg/gomp/attrs-2.C
  afb240a82f143b0c0fd381b905ad9012  gcc/testsuite/g++.dg/gomp/attrs-3.C
  f6f7f13d6edea5043634dbe54727d513  gcc/testsuite/g++.dg/gomp/attrs-4.C
  87087766f29fa1ed6f5e1834dc53e8e6  gcc/testsuite/g++.dg/gomp/attrs-5.C
  768e4f024ce850867145580f3410ade0  gcc/testsuite/g++.dg/gomp/attrs-6.C
  f41f249db9ee61949e786f1e1854ee77  gcc/testsuite/g++.dg/gomp/attrs-7.C
  de68616288c62ad9860d6c876e1b7668  gcc/testsuite/g++.dg/gomp/attrs-8.C
! 5789aa804503a25767f6b8f6508f55b9  gcc/testsuite/g++.dg/gomp/attrs-9.C
  28210efb6de9f161ddfddd705210bc01  gcc/testsuite/g++.dg/gomp/barrier-1.C
  4c453c9ea0f47e5cb5f0c015b01aa7c9  gcc/testsuite/g++.dg/gomp/barrier-2.C
  418aec9a82d0d6ecba7659cc2cbb6dfa  gcc/testsuite/g++.dg/gomp/block-0.C
*************** a734cd9ac4c7933b7e53991e05b0aed5  gcc/te
*** 19014,19020 ****
  229a4e7a48a56c0cf19c162f2a33f7f1  gcc/testsuite/g++.dg/gomp/clause-1.C
  58ada034a21b7734739e966345d25fac  gcc/testsuite/g++.dg/gomp/clause-2.C
  1f4bc230caef2b86cebd77a5c13b474e  gcc/testsuite/g++.dg/gomp/clause-3.C
! 2f0edfb42c07ca8f104959d595305979  gcc/testsuite/g++.dg/gomp/clause-4.C
  fe6047f5ca7e2eac34792a3acc1193c2  gcc/testsuite/g++.dg/gomp/copyin-1.C
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
  67c49c3ef2f12e8a48820530d769fbd8  gcc/testsuite/g++.dg/gomp/critical-2.C
--- 20865,20871 ----
  229a4e7a48a56c0cf19c162f2a33f7f1  gcc/testsuite/g++.dg/gomp/clause-1.C
  58ada034a21b7734739e966345d25fac  gcc/testsuite/g++.dg/gomp/clause-2.C
  1f4bc230caef2b86cebd77a5c13b474e  gcc/testsuite/g++.dg/gomp/clause-3.C
! 235336151b903eded3eeda6e7cf9bf04  gcc/testsuite/g++.dg/gomp/clause-4.C
  fe6047f5ca7e2eac34792a3acc1193c2  gcc/testsuite/g++.dg/gomp/copyin-1.C
  73dc4c4897395dc7c307860e0c371fe1  gcc/testsuite/g++.dg/gomp/critical-1.C
  67c49c3ef2f12e8a48820530d769fbd8  gcc/testsuite/g++.dg/gomp/critical-2.C
*************** d10a9dad0712612df3be24ae02ed9f6a  gcc/te
*** 19026,19033 ****
  d66c2d955608b28091f45938dce39989  gcc/testsuite/g++.dg/gomp/declare-simd-5.C
  5a587ac99f134c07ba81955351d61058  gcc/testsuite/g++.dg/gomp/declare-simd-6.C
  cd6bf0619b43f5bc63b2d8c757532754  gcc/testsuite/g++.dg/gomp/declare-simd-7.C
! 02bf257ed2f303e3b9c8e12dfe76b7e8  gcc/testsuite/g++.dg/gomp/declare-simd-8.C
! 634bd3d929883e4c691a682ea0817a3e  gcc/testsuite/g++.dg/gomp/declare-target-1.C
  afbb2c51ce08bb72df769bd10e2948b8  gcc/testsuite/g++.dg/gomp/declare-target-2.C
  00c210712d93b7b86bd0fd979516b3a4  gcc/testsuite/g++.dg/gomp/declare-target-3.C
  661796737d5bdc4f428545f6e32f9ac2  gcc/testsuite/g++.dg/gomp/declare-variant-1.C
--- 20877,20884 ----
  d66c2d955608b28091f45938dce39989  gcc/testsuite/g++.dg/gomp/declare-simd-5.C
  5a587ac99f134c07ba81955351d61058  gcc/testsuite/g++.dg/gomp/declare-simd-6.C
  cd6bf0619b43f5bc63b2d8c757532754  gcc/testsuite/g++.dg/gomp/declare-simd-7.C
! 8f55e7f1ed9a61066b20f66975de6d1d  gcc/testsuite/g++.dg/gomp/declare-simd-8.C
! 3935c27462840101e805d9321c6b8d56  gcc/testsuite/g++.dg/gomp/declare-target-1.C
  afbb2c51ce08bb72df769bd10e2948b8  gcc/testsuite/g++.dg/gomp/declare-target-2.C
  00c210712d93b7b86bd0fd979516b3a4  gcc/testsuite/g++.dg/gomp/declare-target-3.C
  661796737d5bdc4f428545f6e32f9ac2  gcc/testsuite/g++.dg/gomp/declare-variant-1.C
*************** f1c961906365e69ec5d85efca251f7e0  gcc/te
*** 19044,19050 ****
  fb99d6d7d52ead46e97905bf42cf8877  gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
  55e3a09904888da975d3d4b76f18d294  gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
  e7b69c86d16171732a1c9ef74218d864  gcc/testsuite/g++.dg/gomp/depend-iterator-3.C
! 3bb931acb0bb9987aa54258180ee8d8b  gcc/testsuite/g++.dg/gomp/depobj-1.C
  b3a64480fb5bca64c20c44719293a088  gcc/testsuite/g++.dg/gomp/doacross-1.C
  bed93c8af3078a414d71ee17e30cb559  gcc/testsuite/g++.dg/gomp/doacross-2.C
  a641b3c27a53d1c10c399e1d07c6aaba  gcc/testsuite/g++.dg/gomp/error-1.C
--- 20895,20901 ----
  fb99d6d7d52ead46e97905bf42cf8877  gcc/testsuite/g++.dg/gomp/depend-iterator-1.C
  55e3a09904888da975d3d4b76f18d294  gcc/testsuite/g++.dg/gomp/depend-iterator-2.C
  e7b69c86d16171732a1c9ef74218d864  gcc/testsuite/g++.dg/gomp/depend-iterator-3.C
! c88ca9ee83e21423c9398c9f32d372a8  gcc/testsuite/g++.dg/gomp/depobj-1.C
  b3a64480fb5bca64c20c44719293a088  gcc/testsuite/g++.dg/gomp/doacross-1.C
  bed93c8af3078a414d71ee17e30cb559  gcc/testsuite/g++.dg/gomp/doacross-2.C
  a641b3c27a53d1c10c399e1d07c6aaba  gcc/testsuite/g++.dg/gomp/error-1.C
*************** b0c773d45d10c0af972510732dfd12b4  gcc/te
*** 19063,19069 ****
  b5dd1e3c7e6a1c45e25d9fbbcf82dc0c  gcc/testsuite/g++.dg/gomp/for-19.C
  124228411a0289faecf6d140e979971c  gcc/testsuite/g++.dg/gomp/for-2.C
  206a717a3136f8c1885ed7bf8f9de921  gcc/testsuite/g++.dg/gomp/for-20.C
! 2ed89975c1935fb25c9490d94d8b4c40  gcc/testsuite/g++.dg/gomp/for-21.C
  9181a87e2f994d63d21b965bd8baf5ad  gcc/testsuite/g++.dg/gomp/for-3.C
  896da2f6ca60aa63f9ce91c6e79ed9ca  gcc/testsuite/g++.dg/gomp/for-4.C
  7d0961bb111cfa6957770269166deae7  gcc/testsuite/g++.dg/gomp/for-5.C
--- 20914,20921 ----
  b5dd1e3c7e6a1c45e25d9fbbcf82dc0c  gcc/testsuite/g++.dg/gomp/for-19.C
  124228411a0289faecf6d140e979971c  gcc/testsuite/g++.dg/gomp/for-2.C
  206a717a3136f8c1885ed7bf8f9de921  gcc/testsuite/g++.dg/gomp/for-20.C
! e3a637c28ecc41924925ac83c320a3a6  gcc/testsuite/g++.dg/gomp/for-21.C
! be30540ffa5cb139e4f1f5ae1c518fe1  gcc/testsuite/g++.dg/gomp/for-22.C
  9181a87e2f994d63d21b965bd8baf5ad  gcc/testsuite/g++.dg/gomp/for-3.C
  896da2f6ca60aa63f9ce91c6e79ed9ca  gcc/testsuite/g++.dg/gomp/for-4.C
  7d0961bb111cfa6957770269166deae7  gcc/testsuite/g++.dg/gomp/for-5.C
*************** b5dd1e3c7e6a1c45e25d9fbbcf82dc0c  gcc/te
*** 19071,19080 ****
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/g++.dg/gomp/for-7.C
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/g++.dg/gomp/for-8.C
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
! b4ea000bba7dc0427dbfd8a9089a3721  gcc/testsuite/g++.dg/gomp/gomp.exp
  eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
  b233240aa872c73ae04a12a8d81356a7  gcc/testsuite/g++.dg/gomp/loop-1.C
  c220284cfbbe6d86192d110c5d4bcf7a  gcc/testsuite/g++.dg/gomp/loop-2.C
  85a54900b277e797b5dff30d84b7fdaa  gcc/testsuite/g++.dg/gomp/loop-3.C
--- 20923,20935 ----
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/g++.dg/gomp/for-7.C
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/g++.dg/gomp/for-8.C
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/g++.dg/gomp/for-9.C
! 8f5d2e70c1efbfb5f42a7a2add5a5c07  gcc/testsuite/g++.dg/gomp/gomp.exp
  eb763d050fd680e1a3302fbda441475d  gcc/testsuite/g++.dg/gomp/lastprivate-1.C
  7f682781cd88149270eb73eb44f419f7  gcc/testsuite/g++.dg/gomp/linear-1.C
  2fe09fbd7df28122d262deb35faa2ae9  gcc/testsuite/g++.dg/gomp/linear-2.C
+ 735e63b333606d1c27a15969104fc81d  gcc/testsuite/g++.dg/gomp/linear-3.C
+ f3752dd58fb20bb921b9e8b74ec7686a  gcc/testsuite/g++.dg/gomp/linear-4.C
+ 32594d71748d37014bfb8527472591e5  gcc/testsuite/g++.dg/gomp/linear-5.C
  b233240aa872c73ae04a12a8d81356a7  gcc/testsuite/g++.dg/gomp/loop-1.C
  c220284cfbbe6d86192d110c5d4bcf7a  gcc/testsuite/g++.dg/gomp/loop-2.C
  85a54900b277e797b5dff30d84b7fdaa  gcc/testsuite/g++.dg/gomp/loop-3.C
*************** eabb0107af4ef893414bb3cef506ad03  gcc/te
*** 19089,19094 ****
--- 20944,20950 ----
  9254a2c9545e874172464af7e042681f  gcc/testsuite/g++.dg/gomp/macro-4.C
  2a90373b9280848f40b1036e42fdd914  gcc/testsuite/g++.dg/gomp/map-1.C
  cd955c2057012ba387a6b029e23c0d53  gcc/testsuite/g++.dg/gomp/map-2.C
+ 9dfc87617a82c07e89fab7b80d5eaf22  gcc/testsuite/g++.dg/gomp/map-3.C
  c0b53dcb8d3f8e31c7445987d35c43e7  gcc/testsuite/g++.dg/gomp/masked-1.C
  9dff449fe2d97c4b3ade07b982e69364  gcc/testsuite/g++.dg/gomp/master-1.C
  c6830eca56ca17885a14ffa21aeb16c4  gcc/testsuite/g++.dg/gomp/master-2.C
*************** aec913fefeac6132003dfcbe3fd035eb  gcc/te
*** 19097,19105 ****
--- 20953,20963 ----
  fc63cfdc56a33b15fa4d063e5ef655b2  gcc/testsuite/g++.dg/gomp/member-2.C
  57b9a2c844df3931aacf1c2702dc3ebe  gcc/testsuite/g++.dg/gomp/member-3.C
  135dd9ca392aa9976b7a20570053aa68  gcc/testsuite/g++.dg/gomp/member-4.C
+ b04637997ce93ec04bd981d2cda2f110  gcc/testsuite/g++.dg/gomp/member-array-omp.C
  40ddfb4cf46a4ea2a28ece501a9d1b2b  gcc/testsuite/g++.dg/gomp/method-1.C
  d829c2c1f9a522a97ec0370c1f67a993  gcc/testsuite/g++.dg/gomp/num-teams-1.C
  ebf6d36088516c323fa66747a975021b  gcc/testsuite/g++.dg/gomp/num-teams-2.C
+ 76682136fc1c0725cd4472b43ebc8e34  gcc/testsuite/g++.dg/gomp/ompx-attrs-1.C
  badbf609721acd5ee04999023c4af494  gcc/testsuite/g++.dg/gomp/openmp-simd-1.C
  2e7e4a5c79eb8fe54062fed88c9a9fa3  gcc/testsuite/g++.dg/gomp/openmp-simd-2.C
  ad5a2c143fabe766d3848eb100ea6c38  gcc/testsuite/g++.dg/gomp/openmp-simd-3.C
*************** d9a1f43ca6ac2a073e22bbbf243f300b  gcc/te
*** 19117,19123 ****
--- 20975,20988 ----
  745b3d4f8032be6841890fdb1bb681a7  gcc/testsuite/g++.dg/gomp/pr103851.C
  6fd504859922066c8bc38b2a926a5e17  gcc/testsuite/g++.dg/gomp/pr104623.C
  fce64f47dec68912cbdef7b1329bf864  gcc/testsuite/g++.dg/gomp/pr105092.C
+ dce42c4107e17af3c94cb2ba8473e793  gcc/testsuite/g++.dg/gomp/pr105839-1.C
+ b2b4c495143bcddf8d93ab8981f20a56  gcc/testsuite/g++.dg/gomp/pr105839-2.C
+ 7e0c22485f96abb66b7f1423871e39b0  gcc/testsuite/g++.dg/gomp/pr106124.C
  2a1bc0a0ca3eb44a30af243b7764d562  gcc/testsuite/g++.dg/gomp/pr106492.C
+ bd9556c57358bc478181fd7105e19b2f  gcc/testsuite/g++.dg/gomp/pr106829.C
+ e1073bec80cbc48fb15e02126aebb2b0  gcc/testsuite/g++.dg/gomp/pr107558.C
+ 641b551c65455ce91907afab3c572a40  gcc/testsuite/g++.dg/gomp/pr108503.C
+ e6195ed8251ecef3da90dc8d0e37ed89  gcc/testsuite/g++.dg/gomp/pr108607.C
  539bba6df5330b7a6631eca5665a0899  gcc/testsuite/g++.dg/gomp/pr24849.C
  78ea34fd7a1a2767f61a703271e7070a  gcc/testsuite/g++.dg/gomp/pr25874.C
  93a85a09acfdf011a86ff95fc9184a94  gcc/testsuite/g++.dg/gomp/pr25996.C
*************** d26dc16e551e9c50eaca4ea300e37bd2  gcc/te
*** 19189,19195 ****
  c8adaaa9363849ee507618478a8c6bdf  gcc/testsuite/g++.dg/gomp/pr49223-2.C
  07b2ae49f8ff75d1230e86dbfe3f3ef3  gcc/testsuite/g++.dg/gomp/pr51360.C
  7a2da759d2704e78a3b0d45bae8fc384  gcc/testsuite/g++.dg/gomp/pr51669.C
! 271355b3ab79506b8ff11b6ce0ae4994  gcc/testsuite/g++.dg/gomp/pr56217.C
  7acfcd346054818a3171197aa2de3bbd  gcc/testsuite/g++.dg/gomp/pr58567.C
  ded60cd9c13f96a2bd3542993e913567  gcc/testsuite/g++.dg/gomp/pr58702.C
  06fc3b25cfa1d042e8dab15b0a40e4f1  gcc/testsuite/g++.dg/gomp/pr58874.C
--- 21054,21060 ----
  c8adaaa9363849ee507618478a8c6bdf  gcc/testsuite/g++.dg/gomp/pr49223-2.C
  07b2ae49f8ff75d1230e86dbfe3f3ef3  gcc/testsuite/g++.dg/gomp/pr51360.C
  7a2da759d2704e78a3b0d45bae8fc384  gcc/testsuite/g++.dg/gomp/pr51669.C
! 5f9269c4cdd59d1b6b0306043bf1db7f  gcc/testsuite/g++.dg/gomp/pr56217.C
  7acfcd346054818a3171197aa2de3bbd  gcc/testsuite/g++.dg/gomp/pr58567.C
  ded60cd9c13f96a2bd3542993e913567  gcc/testsuite/g++.dg/gomp/pr58702.C
  06fc3b25cfa1d042e8dab15b0a40e4f1  gcc/testsuite/g++.dg/gomp/pr58874.C
*************** f0ca29d7ad7cbea99e20dbbd47fccc3a  gcc/te
*** 19217,19229 ****
  07a5c3f588f1e61335a990d16052ec53  gcc/testsuite/g++.dg/gomp/pr78363-6.C
  de66b2101b13469eca3715a5cc2415c6  gcc/testsuite/g++.dg/gomp/pr78363-7.C
  b818df42e2e83be27f8843cc160f0681  gcc/testsuite/g++.dg/gomp/pr79429.C
! 04763a158ab575d6a2fc64f11dc2cfe9  gcc/testsuite/g++.dg/gomp/pr79664.C
  61f6175348fda4d4917305d233417a28  gcc/testsuite/g++.dg/gomp/pr80141.C
  ba547a4dc52e5fa57b7cf7b21dfac263  gcc/testsuite/g++.dg/gomp/pr81011.C
  002e68c629105684ed6e09f1c3c9f806  gcc/testsuite/g++.dg/gomp/pr81154.C
  85de78483a4661ef28290525beee799f  gcc/testsuite/g++.dg/gomp/pr82054.C
  54e312e994ab6dd396abd0e47383da05  gcc/testsuite/g++.dg/gomp/pr84430.C
  7acf455fdf4b520ecba029196c8446ce  gcc/testsuite/g++.dg/gomp/pr84448.C
  bff82192d0c205d606fc9dc3f4db8647  gcc/testsuite/g++.dg/gomp/pr84556.C
  509552ea6a4e3381b95cf49447f0217f  gcc/testsuite/g++.dg/gomp/pr84557.C
  f4af350e7c840b674d4df142d3432e80  gcc/testsuite/g++.dg/gomp/pr84791.C
--- 21082,21095 ----
  07a5c3f588f1e61335a990d16052ec53  gcc/testsuite/g++.dg/gomp/pr78363-6.C
  de66b2101b13469eca3715a5cc2415c6  gcc/testsuite/g++.dg/gomp/pr78363-7.C
  b818df42e2e83be27f8843cc160f0681  gcc/testsuite/g++.dg/gomp/pr79429.C
! 0f6fd45a68cfb01a2272d6d06a62c821  gcc/testsuite/g++.dg/gomp/pr79664.C
  61f6175348fda4d4917305d233417a28  gcc/testsuite/g++.dg/gomp/pr80141.C
  ba547a4dc52e5fa57b7cf7b21dfac263  gcc/testsuite/g++.dg/gomp/pr81011.C
  002e68c629105684ed6e09f1c3c9f806  gcc/testsuite/g++.dg/gomp/pr81154.C
  85de78483a4661ef28290525beee799f  gcc/testsuite/g++.dg/gomp/pr82054.C
  54e312e994ab6dd396abd0e47383da05  gcc/testsuite/g++.dg/gomp/pr84430.C
  7acf455fdf4b520ecba029196c8446ce  gcc/testsuite/g++.dg/gomp/pr84448.C
+ 749e8f1610b952f21df7a75c79b9c13b  gcc/testsuite/g++.dg/gomp/pr84469.C
  bff82192d0c205d606fc9dc3f4db8647  gcc/testsuite/g++.dg/gomp/pr84556.C
  509552ea6a4e3381b95cf49447f0217f  gcc/testsuite/g++.dg/gomp/pr84557.C
  f4af350e7c840b674d4df142d3432e80  gcc/testsuite/g++.dg/gomp/pr84791.C
*************** f97f1706978c263c63bb1cf7a9b02300  gcc/te
*** 19264,19277 ****
  4700c4fd7a0a53bd064b879e10cad37f  gcc/testsuite/g++.dg/gomp/sink-3.C
  d5056d7847f2753ff16e19275fe96735  gcc/testsuite/g++.dg/gomp/target-1.C
  8c284b2db0213aba2b9a945275ec6d74  gcc/testsuite/g++.dg/gomp/target-2.C
! 07e8aa40bf4b05f8e242c3fbbc0e5313  gcc/testsuite/g++.dg/gomp/target-3.C
! 24f23b540aa3a84ff9558d74b50767c8  gcc/testsuite/g++.dg/gomp/target-lambda-1.C
  0af399d08e71042cdbc9609c343d255c  gcc/testsuite/g++.dg/gomp/target-lambda-2.C
! e364244678eabb5fde7dbd8cb1a23102  gcc/testsuite/g++.dg/gomp/target-teams-1.C
  bcd255e2d0e26acf60901103fc4678cc  gcc/testsuite/g++.dg/gomp/target-this-1.C
! 8ff7327af3f9d49efb8436b6523710bd  gcc/testsuite/g++.dg/gomp/target-this-2.C
! 6c08c38be467fd2be4ad6892f294a6fa  gcc/testsuite/g++.dg/gomp/target-this-3.C
! 96f8a80f1785cb94ed51e29a464a887f  gcc/testsuite/g++.dg/gomp/target-this-4.C
  0ff4f4ce212c8528a4be5b080fdf156c  gcc/testsuite/g++.dg/gomp/target-this-5.C
  926d8449d7242be3abf0b04b4f5a0201  gcc/testsuite/g++.dg/gomp/task-1.C
  dd317148fbd7859764db9b7028cfa23d  gcc/testsuite/g++.dg/gomp/task-detach-1.C
--- 21130,21145 ----
  4700c4fd7a0a53bd064b879e10cad37f  gcc/testsuite/g++.dg/gomp/sink-3.C
  d5056d7847f2753ff16e19275fe96735  gcc/testsuite/g++.dg/gomp/target-1.C
  8c284b2db0213aba2b9a945275ec6d74  gcc/testsuite/g++.dg/gomp/target-2.C
! e9b0e4dd4a2b6b1859c38faf273fc7ed  gcc/testsuite/g++.dg/gomp/target-3.C
! b36cc6c59fa8dfeda12bb772d5cdf5e4  gcc/testsuite/g++.dg/gomp/target-lambda-1.C
  0af399d08e71042cdbc9609c343d255c  gcc/testsuite/g++.dg/gomp/target-lambda-2.C
! cb5219ee6745fc371bfbb0e484f3205e  gcc/testsuite/g++.dg/gomp/target-simd-clone-1.C
! e033ffcb572e3c374bf58a0eebd43584  gcc/testsuite/g++.dg/gomp/target-simd-clone-2.C
! 2948a42eb9b2368cd175c4e97e1ec30e  gcc/testsuite/g++.dg/gomp/target-teams-1.C
  bcd255e2d0e26acf60901103fc4678cc  gcc/testsuite/g++.dg/gomp/target-this-1.C
! cbbe10902855a271b9728e1fc6174c53  gcc/testsuite/g++.dg/gomp/target-this-2.C
! 2a44d8c1d41013b395d193ec94b2beaf  gcc/testsuite/g++.dg/gomp/target-this-3.C
! 717b2e043a5bda67763b3e13f2df048c  gcc/testsuite/g++.dg/gomp/target-this-4.C
  0ff4f4ce212c8528a4be5b080fdf156c  gcc/testsuite/g++.dg/gomp/target-this-5.C
  926d8449d7242be3abf0b04b4f5a0201  gcc/testsuite/g++.dg/gomp/task-1.C
  dd317148fbd7859764db9b7028cfa23d  gcc/testsuite/g++.dg/gomp/task-detach-1.C
*************** d647e97b4f8477aa549f4f2f6eb6daa1  gcc/te
*** 19307,19314 ****
  a10dd83ffd8fea8213e9a3713b91277f  gcc/testsuite/g++.dg/gomp/udr-4.C
  cbb9b7e93953b72bbadec7a3dd5d1de0  gcc/testsuite/g++.dg/gomp/udr-5.C
  432e931e22639a849a7183275e9c7582  gcc/testsuite/g++.dg/gomp/udr-6.C
! e5a7964681322dad9df0ebf2bee44df8  gcc/testsuite/g++.dg/gomp/unmappable-1.C
! 02b97c91e459ce34a3fab324c5b13eb7  gcc/testsuite/g++.dg/graphite/graphite.exp
  de81689ffe7845348fd7504b61336c82  gcc/testsuite/g++.dg/graphite/id-1.C
  5c6a1178f4fd620e8792644c534c29f8  gcc/testsuite/g++.dg/graphite/pr39447.C
  266d67267efa84e1ec7b55b895fd2442  gcc/testsuite/g++.dg/graphite/pr41305.C
--- 21175,21182 ----
  a10dd83ffd8fea8213e9a3713b91277f  gcc/testsuite/g++.dg/gomp/udr-4.C
  cbb9b7e93953b72bbadec7a3dd5d1de0  gcc/testsuite/g++.dg/gomp/udr-5.C
  432e931e22639a849a7183275e9c7582  gcc/testsuite/g++.dg/gomp/udr-6.C
! f0d6ccb51f8211f0c1ac5d76df91ff55  gcc/testsuite/g++.dg/gomp/unmappable-1.C
! 5388c4004bbdfed7f7b2bf37aa28dcc1  gcc/testsuite/g++.dg/graphite/graphite.exp
  de81689ffe7845348fd7504b61336c82  gcc/testsuite/g++.dg/graphite/id-1.C
  5c6a1178f4fd620e8792644c534c29f8  gcc/testsuite/g++.dg/graphite/pr39447.C
  266d67267efa84e1ec7b55b895fd2442  gcc/testsuite/g++.dg/graphite/pr41305.C
*************** dcecc8a81073a9824c153ff083f81a4a  gcc/te
*** 19317,19323 ****
  012194f3f4441fc0dc8fb4ba94a8882b  gcc/testsuite/g++.dg/graphite/pr42681.C
  dfe63b7d52f6d97e04da25f267ac330c  gcc/testsuite/g++.dg/graphite/pr42930.C
  4cf735ba9e5b65e201dbbd4ec916b359  gcc/testsuite/g++.dg/graphite/pr43026.C
! a75b83e8d5052fa0817648b5802726ae  gcc/testsuite/g++.dg/guality/guality.exp
  2e0a2ac35d8a11426ad1e59f818a5d03  gcc/testsuite/g++.dg/guality/guality.h
  9f6bd16255ea79978f41ff1fd8300ddc  gcc/testsuite/g++.dg/guality/pr46815.C
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
--- 21185,21191 ----
  012194f3f4441fc0dc8fb4ba94a8882b  gcc/testsuite/g++.dg/graphite/pr42681.C
  dfe63b7d52f6d97e04da25f267ac330c  gcc/testsuite/g++.dg/graphite/pr42930.C
  4cf735ba9e5b65e201dbbd4ec916b359  gcc/testsuite/g++.dg/graphite/pr43026.C
! 38e3f063d99a01f2e69d87070f805198  gcc/testsuite/g++.dg/guality/guality.exp
  2e0a2ac35d8a11426ad1e59f818a5d03  gcc/testsuite/g++.dg/guality/guality.h
  9f6bd16255ea79978f41ff1fd8300ddc  gcc/testsuite/g++.dg/guality/pr46815.C
  be57153d0806c5827262dfc205d1ddd5  gcc/testsuite/g++.dg/guality/pr55541.C
*************** a4cc053c9d17978de8abeaa091606802  gcc/te
*** 19328,19334 ****
  a0dca44ebd71904f8aeb3e055b8d94c7  gcc/testsuite/g++.dg/guality/pr93888.C
  0a776e30f0b520134b2f63d4d5e4e170  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
! 70792bcbf5a824d2e5c8db4ea152a469  gcc/testsuite/g++.dg/hwasan/hwasan.exp
  da4fad928e1600184552de0820443fc5  gcc/testsuite/g++.dg/hwasan/rvo-handled.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
  06874da0f9322a8d8220986c9c167391  gcc/testsuite/g++.dg/inherit/access2.C
--- 21196,21202 ----
  a0dca44ebd71904f8aeb3e055b8d94c7  gcc/testsuite/g++.dg/guality/pr93888.C
  0a776e30f0b520134b2f63d4d5e4e170  gcc/testsuite/g++.dg/guality/redeclaration1.C
  d4b1aa612cf9b628d986d19617ad2770  gcc/testsuite/g++.dg/header.C
! 191c84bf3226898d4c08ff98fad6fd9f  gcc/testsuite/g++.dg/hwasan/hwasan.exp
  da4fad928e1600184552de0820443fc5  gcc/testsuite/g++.dg/hwasan/rvo-handled.C
  176e66df5d6aa9dd76c8fe406b78a370  gcc/testsuite/g++.dg/inherit/access1.C
  06874da0f9322a8d8220986c9c167391  gcc/testsuite/g++.dg/inherit/access2.C
*************** e7a4920eaa905e671e74b6482c654721  gcc/te
*** 19524,19530 ****
  75ec5b148dcbeb2412d88d1fcfb89b82  gcc/testsuite/g++.dg/init/array59.C
  12f516d0ef7088644b46185bbd83ef4d  gcc/testsuite/g++.dg/init/array6.C
  c083b6ec43687658fab80f7d11038fb8  gcc/testsuite/g++.dg/init/array60.C
! cb77b5e3742bffa76c379088ce860b88  gcc/testsuite/g++.dg/init/array61.C
  02cf876b0b0d2594118addc046b9112a  gcc/testsuite/g++.dg/init/array7.C
  4ab5bb9dc38b78d749ba584adefbdc33  gcc/testsuite/g++.dg/init/array8.C
  b1c2a3438d19ab4734ef026ce6aba7fa  gcc/testsuite/g++.dg/init/array9.C
--- 21392,21398 ----
  75ec5b148dcbeb2412d88d1fcfb89b82  gcc/testsuite/g++.dg/init/array59.C
  12f516d0ef7088644b46185bbd83ef4d  gcc/testsuite/g++.dg/init/array6.C
  c083b6ec43687658fab80f7d11038fb8  gcc/testsuite/g++.dg/init/array60.C
! 8f1cbb3eca47b9c2626ec2b222c22fd9  gcc/testsuite/g++.dg/init/array61.C
  02cf876b0b0d2594118addc046b9112a  gcc/testsuite/g++.dg/init/array7.C
  4ab5bb9dc38b78d749ba584adefbdc33  gcc/testsuite/g++.dg/init/array8.C
  b1c2a3438d19ab4734ef026ce6aba7fa  gcc/testsuite/g++.dg/init/array9.C
*************** e657849b9797c7df684fd4fafe1341d1  gcc/te
*** 19604,19609 ****
--- 21472,21479 ----
  c3504b39a6dc15f7e9a22986743ea38c  gcc/testsuite/g++.dg/init/elide5.C
  210b4300164756f497bbe2319f298e4a  gcc/testsuite/g++.dg/init/elide6.C
  482a68c2f76d597051f9be7376fcaf4f  gcc/testsuite/g++.dg/init/elide7.C
+ 1a38ec261d9ca8a804e6bd038ff9d313  gcc/testsuite/g++.dg/init/elide8.C
+ 12e66696363812ea055f0ec2ed0f8f46  gcc/testsuite/g++.dg/init/elide9.C
  d2ea13322f402d3ce506a9a1106ee836  gcc/testsuite/g++.dg/init/empty1.C
  2e99b553f901f5c5d03ec2f96b9ab845  gcc/testsuite/g++.dg/init/empty2.C
  5808f0bb0a1ec4426a2b23d99bd8069f  gcc/testsuite/g++.dg/init/empty3.C
*************** f9ead90e4d5cffd123ae313927303782  gcc/te
*** 19632,19637 ****
--- 21502,21508 ----
  0867c022db8ad55482b727ba001b7cf2  gcc/testsuite/g++.dg/init/lifetime1.C
  9a639b6aec30981f552d544b9c3373f3  gcc/testsuite/g++.dg/init/lifetime2.C
  b280d60771fc613f6363c55c8137a4b8  gcc/testsuite/g++.dg/init/lifetime3.C
+ 328a37bf513e700d237e7863d45e0ec7  gcc/testsuite/g++.dg/init/lifetime4.C
  0160b85e4a1a6610929a08c40f60df4d  gcc/testsuite/g++.dg/init/member1.C
  bdc0a28e899cdd6a24fc02b81555168a  gcc/testsuite/g++.dg/init/mutable1.C
  3dd2b2682d04e72fb7a9a8d137ec7e9d  gcc/testsuite/g++.dg/init/new1.C
*************** ece146914185349992892b6c7e289bb0  gcc/te
*** 19680,19685 ****
--- 21551,21557 ----
  9ca5511847720382b5f5eb6e481a9a08  gcc/testsuite/g++.dg/init/new49.C
  165b53a00e07117f81b4b42f0b88ed5c  gcc/testsuite/g++.dg/init/new5.C
  28c8b93bf9233d503208c75095d2b4ab  gcc/testsuite/g++.dg/init/new50.C
+ a4b98677dbbd3e890175c95b258e0111  gcc/testsuite/g++.dg/init/new51.C
  6142030ce76d1ab9453ff0a223722577  gcc/testsuite/g++.dg/init/new6.C
  625c88e7ce2f57c2f27e69085c8278eb  gcc/testsuite/g++.dg/init/new7.C
  9e9ce794649ccc9a4507b42cb8c4c0d0  gcc/testsuite/g++.dg/init/new8.C
*************** b25b382db37739c81869b75df02687cf  gcc/te
*** 19716,19721 ****
--- 21588,21594 ----
  89bc34eae0365b381ab82e8d4ca5957f  gcc/testsuite/g++.dg/init/pr43890.C
  f660de16a9cf160558064bb92eb21901  gcc/testsuite/g++.dg/init/pr44086.C
  880ee6b08cc835f2a1db0bae613e7a23  gcc/testsuite/g++.dg/init/pr48859.C
+ 326a48b27d057d316de2e35aec05d132  gcc/testsuite/g++.dg/init/pr53932.C
  aa6fb39dc7128d68580ac96eb833e456  gcc/testsuite/g++.dg/init/pr55497.C
  c835d50eaf5fe1a2b052a1579b5ce77f  gcc/testsuite/g++.dg/init/pr58811.C
  f25ce72283c3004e08c0df4685ca2469  gcc/testsuite/g++.dg/init/pr60572.C
*************** ded575d1c35757dbf89f635e5a86910d  gcc/te
*** 19764,19769 ****
--- 21637,21643 ----
  f6b622b8df1f9be4adbfe05e8d8ddbdc  gcc/testsuite/g++.dg/init/reference3.C
  7d8b7ff14410173fd3e1cb0594f72583  gcc/testsuite/g++.dg/init/save1.C
  a48726a2b65855eb8c52e41df2fe8018  gcc/testsuite/g++.dg/init/self1.C
+ 2a42575dd60850d9698f7e2aff939d1e  gcc/testsuite/g++.dg/init/static-cdtor1.C
  3590ad5754f93f2ab00974878ace368e  gcc/testsuite/g++.dg/init/static-init1.C
  c0a507cb8b6bf9a5448427e537d93531  gcc/testsuite/g++.dg/init/static-init2.C
  eac75da8029ebf097e358f87837418c2  gcc/testsuite/g++.dg/init/static-init3.C
*************** baa7a26fbd7f93011660ae486b2d5a03  gcc/te
*** 19890,19895 ****
--- 21764,21771 ----
  311cf63f592827ae694b276e1fd87094  gcc/testsuite/g++.dg/ipa/ipa-sra-2.C
  dd9da84319526c87d1b5ab5555ecf0ce  gcc/testsuite/g++.dg/ipa/ipa-sra-3.C
  979ddadf770264dfe40f1f19ce96f7aa  gcc/testsuite/g++.dg/ipa/ipa-sra-4.C
+ 632c0e3261188bada7e08933ba27bb63  gcc/testsuite/g++.dg/ipa/ipa-sra-5.C
+ 597380a4a3ce904111a722934da8aad5  gcc/testsuite/g++.dg/ipa/ipa-sra-6.C
  d006a1cb4b42713f1a4e2c48ea89a5ef  gcc/testsuite/g++.dg/ipa/ivinline-1.C
  0612f7455e1930eacd9d89722d3bc4f1  gcc/testsuite/g++.dg/ipa/ivinline-2.C
  2b579f9c8cd3abef21905cb01ba2edc8  gcc/testsuite/g++.dg/ipa/ivinline-3.C
*************** d0415e5d5ed79c73a04e7df5551e4b95  gcc/te
*** 19903,19908 ****
--- 21779,21789 ----
  ecfa94e705bc436ad699767b1e4c929e  gcc/testsuite/g++.dg/ipa/polymorphic-call-1.C
  55ee7bff7cc115f42266bd1d62dda46b  gcc/testsuite/g++.dg/ipa/pr100413.C
  901698e6dabf29dd6ced031811fcf59e  gcc/testsuite/g++.dg/ipa/pr103099.C
+ f2ff4523ab9758b8e447b088ac708879  gcc/testsuite/g++.dg/ipa/pr106258.C
+ c43cd4a90674d630795e0323738e0460  gcc/testsuite/g++.dg/ipa/pr107661.C
+ 7d63c0342d026b9ee4f2ecb03364cefe  gcc/testsuite/g++.dg/ipa/pr108110.C
+ 9a257f3564fd42fe9d7e00c5567f89d2  gcc/testsuite/g++.dg/ipa/pr108509.C
+ 9cf2cc98e56a48a7332ea02be0425960  gcc/testsuite/g++.dg/ipa/pr108830.C
  02f3704c0511b2d171c55dbf09c64325  gcc/testsuite/g++.dg/ipa/pr43695.C
  5345293723ad062b59b168c319738e1e  gcc/testsuite/g++.dg/ipa/pr43812.C
  b001cbe3dfdeb7d2a1061f024aa08ea4  gcc/testsuite/g++.dg/ipa/pr44372.C
*************** e2988362ecb41c55df743fe23666ff05  gcc/te
*** 20027,20033 ****
  67ce956b024be06467602bda94a08aa7  gcc/testsuite/g++.dg/ipa/pr98690.C
  36fa3f305af8daf292a5a974b6cd8017  gcc/testsuite/g++.dg/ipa/pure-const-1.C
  82a7eaa06c8e9918346a40ce4e5c9881  gcc/testsuite/g++.dg/ipa/pure-const-2.C
! 5e761e76cdfdc05bb2efdd250afd3264  gcc/testsuite/g++.dg/ipa/pure-const-3.C
  c3659ea03164ca46a25f7148ed889974  gcc/testsuite/g++.dg/ipa/remref-1.C
  c8c5e8bc4984a582357e6ff03fb165cb  gcc/testsuite/g++.dg/ipa/remref-2.C
  b4804485e0df8c8497236eb6966a8244  gcc/testsuite/g++.dg/ipa/type-inheritance-1.C
--- 21908,21914 ----
  67ce956b024be06467602bda94a08aa7  gcc/testsuite/g++.dg/ipa/pr98690.C
  36fa3f305af8daf292a5a974b6cd8017  gcc/testsuite/g++.dg/ipa/pure-const-1.C
  82a7eaa06c8e9918346a40ce4e5c9881  gcc/testsuite/g++.dg/ipa/pure-const-2.C
! 4d1e7f2b0120bc31bc12be9d00dc4a53  gcc/testsuite/g++.dg/ipa/pure-const-3.C
  c3659ea03164ca46a25f7148ed889974  gcc/testsuite/g++.dg/ipa/remref-1.C
  c8c5e8bc4984a582357e6ff03fb165cb  gcc/testsuite/g++.dg/ipa/remref-2.C
  b4804485e0df8c8497236eb6966a8244  gcc/testsuite/g++.dg/ipa/type-inheritance-1.C
*************** af77d184009ac1aa02cbf79020da1c7d  gcc/te
*** 20045,20050 ****
--- 21926,21932 ----
  f6ed60ec36721bb21df4b4b0a445bcff  gcc/testsuite/g++.dg/lookup/anon5.C
  97bc2c4f321b81d2e5129e269f014b8b  gcc/testsuite/g++.dg/lookup/anon6.C
  8efa7c4066efa37096c6aa5f256ab6dc  gcc/testsuite/g++.dg/lookup/anon7.C
+ a111ce47c73319890ad9ce99bd06eb83  gcc/testsuite/g++.dg/lookup/anon8.C
  9b4af41a9b7ce52e2f2a1c0f80c2b16a  gcc/testsuite/g++.dg/lookup/builtin1.C
  5b03fcc95fe345eaff394c7c89375c40  gcc/testsuite/g++.dg/lookup/builtin2.C
  f7071ebb383c4bfa6e3d7a62fe5aeeeb  gcc/testsuite/g++.dg/lookup/builtin3.C
*************** c50416bd024b7f394ccf13b2af42d6e9  gcc/te
*** 20104,20109 ****
--- 21986,21994 ----
  6c4b3ee38e0ef8c73906d3d6ef93c86e  gcc/testsuite/g++.dg/lookup/friend20.C
  a484b9799b124bf970c056c966db32e6  gcc/testsuite/g++.dg/lookup/friend21.C
  e5da5eba809ee821e6882a9f27fe37d6  gcc/testsuite/g++.dg/lookup/friend22.C
+ 431dde5a260c7c5b3a3eb84fb782ccc1  gcc/testsuite/g++.dg/lookup/friend23.C
+ 2212655cd503f3dbf25bf127bc32e45f  gcc/testsuite/g++.dg/lookup/friend24.C
+ b934aa7a931b1e2b7826d53611e36da4  gcc/testsuite/g++.dg/lookup/friend25.C
  e51e64a92ddf4c4d012cb738bf62fde5  gcc/testsuite/g++.dg/lookup/friend3.C
  96ad222df48d0097eb84d66dbf37d17d  gcc/testsuite/g++.dg/lookup/friend4.C
  187ba092057b229619d98cf5e000c6e1  gcc/testsuite/g++.dg/lookup/friend5.C
*************** e79584d4c910c70ebcefcd854ff0809f  gcc/te
*** 20180,20187 ****
  ecb804007c1fa8a878d2197cb35a2d89  gcc/testsuite/g++.dg/lookup/missing-std-include.C
  6c99bf6f0c2260471ad74e39e36cdf71  gcc/testsuite/g++.dg/lookup/name-clash1.C
  51f1b95d6c879739a8fae563ede188d0  gcc/testsuite/g++.dg/lookup/name-clash10.C
! 60ecf3d908b35110b764bcf5a75b8e52  gcc/testsuite/g++.dg/lookup/name-clash11.C
  319f6724208ee0a45cb7321c8b447409  gcc/testsuite/g++.dg/lookup/name-clash12.C
  924d0b82f921fb6c61ded452d74242a8  gcc/testsuite/g++.dg/lookup/name-clash2.C
  81599e15173d111c32e196e35a6bc5ed  gcc/testsuite/g++.dg/lookup/name-clash3.C
  4e9fb69366257ce11558488f9cdac95d  gcc/testsuite/g++.dg/lookup/name-clash4.C
--- 22065,22076 ----
  ecb804007c1fa8a878d2197cb35a2d89  gcc/testsuite/g++.dg/lookup/missing-std-include.C
  6c99bf6f0c2260471ad74e39e36cdf71  gcc/testsuite/g++.dg/lookup/name-clash1.C
  51f1b95d6c879739a8fae563ede188d0  gcc/testsuite/g++.dg/lookup/name-clash10.C
! 29612e6ccf58835593f126113426c6a6  gcc/testsuite/g++.dg/lookup/name-clash11.C
  319f6724208ee0a45cb7321c8b447409  gcc/testsuite/g++.dg/lookup/name-clash12.C
+ 9ba5ae9e795c2804fda0a7f801a29ec5  gcc/testsuite/g++.dg/lookup/name-clash13.C
+ d45f11c632238d3ade5b26e3bb7a4b59  gcc/testsuite/g++.dg/lookup/name-clash14.C
+ f86e63e940fa3b7387b37761cb3c8f5d  gcc/testsuite/g++.dg/lookup/name-clash15.C
+ d016896da93a13852a98c5d02ec0b6ed  gcc/testsuite/g++.dg/lookup/name-clash16.C
  924d0b82f921fb6c61ded452d74242a8  gcc/testsuite/g++.dg/lookup/name-clash2.C
  81599e15173d111c32e196e35a6bc5ed  gcc/testsuite/g++.dg/lookup/name-clash3.C
  4e9fb69366257ce11558488f9cdac95d  gcc/testsuite/g++.dg/lookup/name-clash4.C
*************** a793e64bb6b34881797f23d0f6a812f7  gcc/te
*** 20282,20287 ****
--- 22171,22177 ----
  7019845dfb6dbd2d5547a6f72b822068  gcc/testsuite/g++.dg/lookup/template2.C
  75b2b90a34407d67ae6e6b01b7e2a7f7  gcc/testsuite/g++.dg/lookup/template3.C
  230f917f7f04354731ed6ab070fc0e97  gcc/testsuite/g++.dg/lookup/this1.C
+ 5bd4ca1719ef8bdd55564bbecbb585c1  gcc/testsuite/g++.dg/lookup/this2.C
  0f014086c6e90e67e8879d132fc019d6  gcc/testsuite/g++.dg/lookup/two-stage1.C
  1d4d95969d27910bf0528926c351da6c  gcc/testsuite/g++.dg/lookup/two-stage2.C
  673f5cb94e0c6c5a86bce634e4eb2be5  gcc/testsuite/g++.dg/lookup/two-stage3.C
*************** a44566d13ced1a79770276fc437e80d4  gcc/te
*** 20510,20516 ****
  62ce00e27e2297def984a00e603cd45f  gcc/testsuite/g++.dg/lto/inline-crossmodule-1.h
  88882257febd460b4ecf31b840a232c7  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_0.C
  a9aa6c16f15dfad712dab4d5e34d1ad3  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_1.C
! fba6a2d0efb04f024ff1f0cd44522991  gcc/testsuite/g++.dg/lto/lto.exp
  51384f349888b259f190c2e578232db0  gcc/testsuite/g++.dg/lto/odr-1_0.C
  d2314a32a8cfaa76cd78c66c44bfc35a  gcc/testsuite/g++.dg/lto/odr-1_1.C
  5c6ba6285c9f905aad689d0df9b3b508  gcc/testsuite/g++.dg/lto/odr-2_0.C
--- 22400,22406 ----
  62ce00e27e2297def984a00e603cd45f  gcc/testsuite/g++.dg/lto/inline-crossmodule-1.h
  88882257febd460b4ecf31b840a232c7  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_0.C
  a9aa6c16f15dfad712dab4d5e34d1ad3  gcc/testsuite/g++.dg/lto/inline-crossmodule-1_1.C
! 18ccce37d97da575aae49a138d462159  gcc/testsuite/g++.dg/lto/lto.exp
  51384f349888b259f190c2e578232db0  gcc/testsuite/g++.dg/lto/odr-1_0.C
  d2314a32a8cfaa76cd78c66c44bfc35a  gcc/testsuite/g++.dg/lto/odr-1_1.C
  5c6ba6285c9f905aad689d0df9b3b508  gcc/testsuite/g++.dg/lto/odr-2_0.C
*************** cac1beb5973f2ae7f413286aea273726  gcc/te
*** 20530,20535 ****
--- 22420,22426 ----
  8b0aae3760bbbdbb56a12a24c02e7d7e  gcc/testsuite/g++.dg/lto/pr101396_0.C
  ac5555b4df88275d04e41aa95b0aca9a  gcc/testsuite/g++.dg/lto/pr101396_1.C
  57e4a1572912531a0ef7ae5e66a36910  gcc/testsuite/g++.dg/lto/pr105399_0.C
+ 0a39d2e9c16962015b5adf8bff3214c8  gcc/testsuite/g++.dg/lto/pr108772_0.C
  ba9b686c163762488051ec4094a838b2  gcc/testsuite/g++.dg/lto/pr40818_0.C
  08a786b250f802e56e458c7d60a358fc  gcc/testsuite/g++.dg/lto/pr42987_0.C
  1b56fef803fe85ec97121919ad3ba2b9  gcc/testsuite/g++.dg/lto/pr42987_1.C
*************** cb782e35cc277d1b7be31cdb2b766e39  gcc/te
*** 20660,20666 ****
  4f6e362a864f5ac4f9b9b99e660e0674  gcc/testsuite/g++.dg/lto/pr89358_1.C
  71c4e0358186a48bc58fd216bc445a9a  gcc/testsuite/g++.dg/lto/pr90939_0.C
  52ac5c759138b17ea3fb0b5c2ad3e41c  gcc/testsuite/g++.dg/lto/pr90939_1.C
! d5c35682ee11c963e6927c070079971e  gcc/testsuite/g++.dg/lto/pr90990_0.C
  f4fd4f3ad07ffe64bf370d8927987578  gcc/testsuite/g++.dg/lto/pr91572_0.C
  895e652a3aee72b7eb633d05728f8192  gcc/testsuite/g++.dg/lto/pr91574_0.C
  ce8be172edac90152397f5825f64ab68  gcc/testsuite/g++.dg/lto/pr92476_0.C
--- 22551,22557 ----
  4f6e362a864f5ac4f9b9b99e660e0674  gcc/testsuite/g++.dg/lto/pr89358_1.C
  71c4e0358186a48bc58fd216bc445a9a  gcc/testsuite/g++.dg/lto/pr90939_0.C
  52ac5c759138b17ea3fb0b5c2ad3e41c  gcc/testsuite/g++.dg/lto/pr90939_1.C
! 445d2551442bc685a2e12fdc8173874f  gcc/testsuite/g++.dg/lto/pr90990_0.C
  f4fd4f3ad07ffe64bf370d8927987578  gcc/testsuite/g++.dg/lto/pr91572_0.C
  895e652a3aee72b7eb633d05728f8192  gcc/testsuite/g++.dg/lto/pr91574_0.C
  ce8be172edac90152397f5825f64ab68  gcc/testsuite/g++.dg/lto/pr92476_0.C
*************** b8735311421a9557b475c780e1712295  gcc/te
*** 20676,20681 ****
--- 22567,22576 ----
  6232508298dd20a759cf64fffbca9f5e  gcc/testsuite/g++.dg/lto/v1-plugin-api-not-supported_0.C
  dbe30d4af4bd2caeabf4784c3ef0ca9d  gcc/testsuite/g++.dg/missing-return.C
  0611288c84e3f846cb789e1b0d0e7706  gcc/testsuite/g++.dg/missing-symbol-2.C
+ 5ea15da0c6d0bfcf59702e2fe7b87c1f  gcc/testsuite/g++.dg/modules/100616_a.H
+ 944c3e30374eb421d84a8c5426b2e660  gcc/testsuite/g++.dg/modules/100616_b.C
+ 8ab9ebda251da61256856238e91e69f8  gcc/testsuite/g++.dg/modules/100616_c.C
+ cb6fd3c7fff8631ed4460da9de6e631e  gcc/testsuite/g++.dg/modules/100616_d.C
  3e82072151bc1ef9460e5aa293c1f7e9  gcc/testsuite/g++.dg/modules/access-1_a.C
  09b5b33549e0fae8241fc5c1e511aa94  gcc/testsuite/g++.dg/modules/access-1_b.C
  3530117fb493e047e12aef4eb9b47cdb  gcc/testsuite/g++.dg/modules/access-1_c.C
*************** f401bc7b53e7de843d517ee0ad528749  gcc/te
*** 20735,20750 ****
  3b264755fa54e09c174088a50027eb56  gcc/testsuite/g++.dg/modules/auto-2.h
  d479e8fed74f485f9b8e9b4816402569  gcc/testsuite/g++.dg/modules/auto-2_a.H
  9e4842387b313ba5aa98f2d5cc9a3592  gcc/testsuite/g++.dg/modules/auto-2_b.C
! 4bad490d7b6fb20e48a9cbf8891a7514  gcc/testsuite/g++.dg/modules/bad-mapper-1.C
  429207e0eb777b4a43a566e8777f6503  gcc/testsuite/g++.dg/modules/bad-mapper-2.C
! aa678a370b72d6bb266600443ab8d76f  gcc/testsuite/g++.dg/modules/bad-mapper-3.C
! 757428deb56e7859633745b2778125ea  gcc/testsuite/g++.dg/modules/ben-1.map
! 0e9c9830fda5e7d8283ad2b410eb9e74  gcc/testsuite/g++.dg/modules/ben-1_a.C
  859e9af2f22665e71d4c53310b3fc495  gcc/testsuite/g++.dg/modules/ben-1_b.C
  e222ae13ea3198a57cf77c7b9716951c  gcc/testsuite/g++.dg/modules/bfield-1_a.C
  ad57e7a7e7d0763a5d7b53eebeef2326  gcc/testsuite/g++.dg/modules/bfield-1_b.C
  8fe510d9d635ecd99e7dfc62a2cd5b10  gcc/testsuite/g++.dg/modules/bfield-2_a.C
  6cb146eb2d95ac9baf9b3e5d650677c7  gcc/testsuite/g++.dg/modules/bfield-2_b.C
  9175185dccd187937b7ecfd1e08a2f53  gcc/testsuite/g++.dg/modules/binding-1_a.H
  3c5dfe77c841814ff90a0546f7aa6f24  gcc/testsuite/g++.dg/modules/binding-1_b.H
  942ce8ea8cdc38780ea8e94d33cfd1d3  gcc/testsuite/g++.dg/modules/binding-1_c.C
--- 22630,22649 ----
  3b264755fa54e09c174088a50027eb56  gcc/testsuite/g++.dg/modules/auto-2.h
  d479e8fed74f485f9b8e9b4816402569  gcc/testsuite/g++.dg/modules/auto-2_a.H
  9e4842387b313ba5aa98f2d5cc9a3592  gcc/testsuite/g++.dg/modules/auto-2_b.C
! db3511d6d560e34fa59c74d10ea11ce3  gcc/testsuite/g++.dg/modules/auto-3.h
! f07c72ff8379fda058ae5d0a9875b722  gcc/testsuite/g++.dg/modules/auto-3_a.H
! 2f977bb348df94188e29c8c1aa8088bf  gcc/testsuite/g++.dg/modules/auto-3_b.C
! e263ea29250c5e9efe65a8382bb02ca6  gcc/testsuite/g++.dg/modules/bad-mapper-1.C
  429207e0eb777b4a43a566e8777f6503  gcc/testsuite/g++.dg/modules/bad-mapper-2.C
! 59e1f091bb31cff7b842dfea2f75a8e4  gcc/testsuite/g++.dg/modules/bad-mapper-3.C
! d47743bc71edc48a3b35156e9957ac97  gcc/testsuite/g++.dg/modules/ben-1.map
! fbee0d701857159f09852913a5a2ba81  gcc/testsuite/g++.dg/modules/ben-1_a.C
  859e9af2f22665e71d4c53310b3fc495  gcc/testsuite/g++.dg/modules/ben-1_b.C
  e222ae13ea3198a57cf77c7b9716951c  gcc/testsuite/g++.dg/modules/bfield-1_a.C
  ad57e7a7e7d0763a5d7b53eebeef2326  gcc/testsuite/g++.dg/modules/bfield-1_b.C
  8fe510d9d635ecd99e7dfc62a2cd5b10  gcc/testsuite/g++.dg/modules/bfield-2_a.C
  6cb146eb2d95ac9baf9b3e5d650677c7  gcc/testsuite/g++.dg/modules/bfield-2_b.C
+ ba25c98b700e39b48711b141af6b8d5f  gcc/testsuite/g++.dg/modules/bfield-3.H
  9175185dccd187937b7ecfd1e08a2f53  gcc/testsuite/g++.dg/modules/binding-1_a.H
  3c5dfe77c841814ff90a0546f7aa6f24  gcc/testsuite/g++.dg/modules/binding-1_b.H
  942ce8ea8cdc38780ea8e94d33cfd1d3  gcc/testsuite/g++.dg/modules/binding-1_c.C
*************** c260a7dd28df40b7c5b61dcd0901fff3  gcc/te
*** 20773,20778 ****
--- 22672,22679 ----
  6f4f6f034ae6c6f611a1b844eb7146ed  gcc/testsuite/g++.dg/modules/cexpr-1_b.C
  a6052479b7749f10c8955222e0e5f377  gcc/testsuite/g++.dg/modules/cexpr-2_a.C
  eca65e3a9db1fb6ccbd70d53907f93dd  gcc/testsuite/g++.dg/modules/cexpr-2_b.C
+ 3dbbe1080adf47594d298b727121ab4e  gcc/testsuite/g++.dg/modules/cexpr-3_a.C
+ 0ba4469c7ee995cd2bd01f3ea2decfd5  gcc/testsuite/g++.dg/modules/cexpr-3_b.C
  9e8b6b97c14fc8ba72560634615d4fbe  gcc/testsuite/g++.dg/modules/circ-1_a.C
  98607f9dff6572a0baa9956e2dd1be8c  gcc/testsuite/g++.dg/modules/circ-1_b.C
  e7d806e1771c11cb72e41af12e6d57e4  gcc/testsuite/g++.dg/modules/circ-1_c.C
*************** b6db4e57770ab4a96d0120ec2744eab0  gcc/te
*** 20814,20821 ****
--- 22715,22737 ----
  83305f4742d5dfabffb02c0e555c7dad  gcc/testsuite/g++.dg/modules/concept-6.h
  0b495a916f11e2b6207f31f15ec2c734  gcc/testsuite/g++.dg/modules/concept-6_a.H
  15c6474f9e36ad631a5e20c87355fc02  gcc/testsuite/g++.dg/modules/concept-6_b.C
+ 6748ee683c2d9f02a44807030fc038a9  gcc/testsuite/g++.dg/modules/concept-7_a.C
+ 3d4d545a2f813c003d1b9de2e5348bfc  gcc/testsuite/g++.dg/modules/concept-7_b.C
  065c21c126c925a3e00aca89ecd68082  gcc/testsuite/g++.dg/modules/constrained-partial-1_a.C
  36ec67bdeefa980122cd592ead6b309b  gcc/testsuite/g++.dg/modules/constrained-partial-1_b.C
+ fe18f4f4c09fb184532b102f0aeda85d  gcc/testsuite/g++.dg/modules/contracts-1_a.C
+ 456f6aa18c7514e2a5ffaf6cf04cbe70  gcc/testsuite/g++.dg/modules/contracts-1_b.C
+ 6bf40954c16493c98ae7c2b50db160e6  gcc/testsuite/g++.dg/modules/contracts-2_a.C
+ 812c9cd73cfe1e6c3922242459752611  gcc/testsuite/g++.dg/modules/contracts-2_b.C
+ c3aa378b4d40c2a73a91d1ed014b3379  gcc/testsuite/g++.dg/modules/contracts-2_c.C
+ 950674e05462156e3ea3ffab3c3be974  gcc/testsuite/g++.dg/modules/contracts-3_a.C
+ 94a991fcd30c1ab95611ab716567cf38  gcc/testsuite/g++.dg/modules/contracts-3_b.C
+ 4de82f7ace840ca0d8b4b3c5c83bc79b  gcc/testsuite/g++.dg/modules/contracts-4_a.C
+ ce1ebf06dbe7cdae676970830da2a4e7  gcc/testsuite/g++.dg/modules/contracts-4_b.C
+ f536f28baebb566f8e0524872a79e757  gcc/testsuite/g++.dg/modules/contracts-4_c.C
+ 56e90f154098eafee99bcdb1253eba61  gcc/testsuite/g++.dg/modules/contracts-4_d.C
+ 8924e09c1bf99205db3bf2a95baa7701  gcc/testsuite/g++.dg/modules/contracts-tpl-friend-1_a.C
+ 0a66e0a40527f0507cceaeb322c91a15  gcc/testsuite/g++.dg/modules/contracts-tpl-friend-1_b.C
  097ffafa56bf8b6bcbb8f85c58b0e187  gcc/testsuite/g++.dg/modules/convop-1_a.C
  02940f3eec05ab2c1e44ea29d72255b6  gcc/testsuite/g++.dg/modules/convop-1_b.C
  ac21ba6dd7a4b896ded96e6d9d998074  gcc/testsuite/g++.dg/modules/cpp-1.C
*************** f8ae8345e0918908805964c313e6738d  gcc/te
*** 20848,20853 ****
--- 22764,22773 ----
  98e286748a71de409ea8ea91c61bff89  gcc/testsuite/g++.dg/modules/dir-only-3.C
  751bc164d219ba7ac2c0a5df96b7e328  gcc/testsuite/g++.dg/modules/dir-only-4.C
  7e9a537d2bfa5adb9b6da64d83a6f631  gcc/testsuite/g++.dg/modules/dir-recovery.C
+ a76835e47b764922b013544f6f8353a4  gcc/testsuite/g++.dg/modules/enum-10_a.H
+ 44320dac8e952abf4ec85406d1ed45ac  gcc/testsuite/g++.dg/modules/enum-10_b.C
+ 98303daeb2784eff9b49fb8941d26be4  gcc/testsuite/g++.dg/modules/enum-11_a.H
+ 7844e14a6778ebcc4e48b8a1fc722798  gcc/testsuite/g++.dg/modules/enum-11_b.C
  02bf8548b63223a7f975e8051966d186  gcc/testsuite/g++.dg/modules/enum-1_a.C
  07cd39c397707ffd7ecad5f19200c483  gcc/testsuite/g++.dg/modules/enum-1_b.C
  930da5cebd5959d9a725229b25f0d412  gcc/testsuite/g++.dg/modules/enum-2_a.C
*************** fba4e0e215f5f8e00fb56dcf5aafa8f4  gcc/te
*** 20865,20870 ****
--- 22785,22792 ----
  f2791267d753e8cd1679a1f96c9cc5da  gcc/testsuite/g++.dg/modules/enum-8_b.H
  6c4e4f9f21faf0b8906b27d93c8940e5  gcc/testsuite/g++.dg/modules/enum-8_c.C
  49bb87ed835e48bf12d123782293d31b  gcc/testsuite/g++.dg/modules/enum-8_d.C
+ 85cc3a9695cb145885ebe00ddf36c43c  gcc/testsuite/g++.dg/modules/enum-9_a.H
+ 79dafa8e89f57987a0cffa7ce6435a3e  gcc/testsuite/g++.dg/modules/enum-9_b.C
  3d6c6246260d49fb3e01cfbc543f50c3  gcc/testsuite/g++.dg/modules/enum-bad-1_a.H
  fe3b83716afeebfb21410e24299a7c65  gcc/testsuite/g++.dg/modules/enum-bad-1_b.C
  4d9c4e0b2fc2a89e93b40dfbcd287523  gcc/testsuite/g++.dg/modules/err-1_a.C
*************** dff0f26eb5087deaef96b9d54314b6a4  gcc/te
*** 20971,20990 ****
  3b279d20d6f9b17047cd5dfb4553fab2  gcc/testsuite/g++.dg/modules/indirect-2_b.C
  000412366748e0a40001148af86b72cc  gcc/testsuite/g++.dg/modules/indirect-2_c.C
  ecf2e4ddd87fc8079d71d327bb21fa91  gcc/testsuite/g++.dg/modules/indirect-3_a.C
! 31de8cfc8b5d20da2f853697ed420a09  gcc/testsuite/g++.dg/modules/indirect-3_b.C
  c119afc0df74c0b17381b088d145b86c  gcc/testsuite/g++.dg/modules/indirect-3_c.C
  fee5d6f962f7988ae62febd5f1a8e244  gcc/testsuite/g++.dg/modules/indirect-4_a.C
  896a19175e213ea62b9b91cd64995e4a  gcc/testsuite/g++.dg/modules/indirect-4_b.C
  dfea171c241790df8f63ba50f342a189  gcc/testsuite/g++.dg/modules/indirect-4_c.C
! c62cb6c2400ea0e101dd0ed969bd4d04  gcc/testsuite/g++.dg/modules/inext-1.H
  5e921af9b318fd9ca4328648337456f1  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h
  c01dcb11c5d36976b14d9fd7c4516581  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H
  b0fd01fc5ecf329ebeb91627e98dd165  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C
  6f534c4c44593fcb2f1b0e2f899fbc10  gcc/testsuite/g++.dg/modules/init-1_a.C
  0b620f715f0e94e454380a2cffbc8367  gcc/testsuite/g++.dg/modules/init-1_b.C
! fc5c7f354d22517c4b6cc16ba51fca03  gcc/testsuite/g++.dg/modules/init-2_a.C
! b0a9dd8b818c5be64dfe629d8ce864fa  gcc/testsuite/g++.dg/modules/init-2_b.C
! 48ca1194272e4126402b9b473151ace0  gcc/testsuite/g++.dg/modules/init-2_c.C
  30908e323612f1e35765a18cc68bc403  gcc/testsuite/g++.dg/modules/inst-1_a.C
  c1563babb7ad3b33d7a48b6846276373  gcc/testsuite/g++.dg/modules/inst-1_b.C
  3a7d1df29e3e9ca965b7f8c21b60b189  gcc/testsuite/g++.dg/modules/inst-2_a.C
--- 22893,22916 ----
  3b279d20d6f9b17047cd5dfb4553fab2  gcc/testsuite/g++.dg/modules/indirect-2_b.C
  000412366748e0a40001148af86b72cc  gcc/testsuite/g++.dg/modules/indirect-2_c.C
  ecf2e4ddd87fc8079d71d327bb21fa91  gcc/testsuite/g++.dg/modules/indirect-3_a.C
! 86ff514d00e1774eb9045dc4defacf25  gcc/testsuite/g++.dg/modules/indirect-3_b.C
  c119afc0df74c0b17381b088d145b86c  gcc/testsuite/g++.dg/modules/indirect-3_c.C
  fee5d6f962f7988ae62febd5f1a8e244  gcc/testsuite/g++.dg/modules/indirect-4_a.C
  896a19175e213ea62b9b91cd64995e4a  gcc/testsuite/g++.dg/modules/indirect-4_b.C
  dfea171c241790df8f63ba50f342a189  gcc/testsuite/g++.dg/modules/indirect-4_c.C
! 6c090a18a818b71985851c5f5e82e2f7  gcc/testsuite/g++.dg/modules/inext-1.H
  5e921af9b318fd9ca4328648337456f1  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1.h
  c01dcb11c5d36976b14d9fd7c4516581  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_a.H
  b0fd01fc5ecf329ebeb91627e98dd165  gcc/testsuite/g++.dg/modules/inh-tmpl-ctor-1_b.C
  6f534c4c44593fcb2f1b0e2f899fbc10  gcc/testsuite/g++.dg/modules/init-1_a.C
  0b620f715f0e94e454380a2cffbc8367  gcc/testsuite/g++.dg/modules/init-1_b.C
! 68ebe15cbe623e6e55363b39901f8685  gcc/testsuite/g++.dg/modules/init-2_a.C
! 194758996c48a35c9140914751e05d48  gcc/testsuite/g++.dg/modules/init-2_b.C
! a44b0c32fbdda0edf84339e2b3ec139c  gcc/testsuite/g++.dg/modules/init-2_c.C
! 71079e6e366b808c5c62be403a46694f  gcc/testsuite/g++.dg/modules/init-2_d.C
! 1dd2e4d960ee627c5f30f44666248c6a  gcc/testsuite/g++.dg/modules/init-3_a.C
! acdf2b4dea5747e7876a723f39c550f4  gcc/testsuite/g++.dg/modules/init-3_b.C
! d83d27b7985e20783fd914a9d60f0cf2  gcc/testsuite/g++.dg/modules/init-3_c.C
  30908e323612f1e35765a18cc68bc403  gcc/testsuite/g++.dg/modules/inst-1_a.C
  c1563babb7ad3b33d7a48b6846276373  gcc/testsuite/g++.dg/modules/inst-1_b.C
  3a7d1df29e3e9ca965b7f8c21b60b189  gcc/testsuite/g++.dg/modules/inst-2_a.C
*************** d30c873b55b93fa8afc633ee0ae189de  gcc/te
*** 21022,21027 ****
--- 22948,22956 ----
  59ccc3469393fd4a35b408bbf78b94d9  gcc/testsuite/g++.dg/modules/lang-1_c.C
  2b3081d597950e3beb85661a683d44a1  gcc/testsuite/g++.dg/modules/lang-2_a.C
  34287388d4e4550523525c1fcb12f18e  gcc/testsuite/g++.dg/modules/lang-2_b.C
+ f691889108c3ab41c26b216899719992  gcc/testsuite/g++.dg/modules/lang-3_a.C
+ 29a3330000780d86555efc7480e1ea5b  gcc/testsuite/g++.dg/modules/lang-3_b.C
+ 7a61baf64b6b2df1f68f1344f599ce44  gcc/testsuite/g++.dg/modules/lang-3_c.C
  f9e6b80b1e66a7547173ff7f3f39a78a  gcc/testsuite/g++.dg/modules/late-ret-1.H
  c363febb29cf4d3eccc01979daac4c46  gcc/testsuite/g++.dg/modules/late-ret-2_a.H
  9f2ead4d0b90ea087689b20fd95f201f  gcc/testsuite/g++.dg/modules/late-ret-2_b.H
*************** a1c73182260914d493b7e86a0a904c5b  gcc/te
*** 21100,21105 ****
--- 23029,23038 ----
  d924cff1bbe926b1f17e1167003881bb  gcc/testsuite/g++.dg/modules/loc-2_d.C
  534d7688514278aa4aef358e6e5d3ac7  gcc/testsuite/g++.dg/modules/loc-2_e.C
  4de75d3275f355ae864778aed70bae70  gcc/testsuite/g++.dg/modules/loc-2_f.C
+ 60cb604832901841e94298c6bdd70f38  gcc/testsuite/g++.dg/modules/loc-prune-1.C
+ 779fbd57bbb7905c8d8fb676c59cdd20  gcc/testsuite/g++.dg/modules/loc-prune-2.C
+ d234e2fa234dbe6bc35c0d449aa99716  gcc/testsuite/g++.dg/modules/loc-prune-3.C
+ 1b650053fc88a374645a2e82bd7313a2  gcc/testsuite/g++.dg/modules/loc-prune-4.C
  6531454223747b5248efd268335cd69f  gcc/testsuite/g++.dg/modules/loc-wrapper-1.h
  084b7fe112f0f51317dca6c0aab9cc6d  gcc/testsuite/g++.dg/modules/loc-wrapper-1_a.H
  8cdd1ec4497b754d0e88faf6273069e8  gcc/testsuite/g++.dg/modules/loc-wrapper-1_b.C
*************** de6660e4acc49035a9e5e9821835deb7  gcc/te
*** 21229,21239 ****
  2129e3bf78fea701d2748fc468af1932  gcc/testsuite/g++.dg/modules/mod-sym-1.C
  075fd04762fcd0609fc02a557a3afa98  gcc/testsuite/g++.dg/modules/mod-sym-2.C
  e803cdb19c3e7f7d188196d7bb80cb80  gcc/testsuite/g++.dg/modules/mod-sym-3.C
  b66a905fae26f7efc4eaf3f3c60a6b65  gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C
  e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
  ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! b866b0c561d4e3823316d2b8b70d1c91  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
--- 23162,23173 ----
  2129e3bf78fea701d2748fc468af1932  gcc/testsuite/g++.dg/modules/mod-sym-1.C
  075fd04762fcd0609fc02a557a3afa98  gcc/testsuite/g++.dg/modules/mod-sym-2.C
  e803cdb19c3e7f7d188196d7bb80cb80  gcc/testsuite/g++.dg/modules/mod-sym-3.C
+ 67ae9499e9f454de7e7171e4336a9d7c  gcc/testsuite/g++.dg/modules/mod-sym-4.C
  b66a905fae26f7efc4eaf3f3c60a6b65  gcc/testsuite/g++.dg/modules/mod-tpl-1_a.C
  e83f9a9aca70673da8258ca0631a2125  gcc/testsuite/g++.dg/modules/mod-tpl-1_b.C
  ad9ef329572dab16f2d3d5613538cd3f  gcc/testsuite/g++.dg/modules/mod-tpl-2_a.C
  95ab3577dee99f3d59838a96f1cbf4fc  gcc/testsuite/g++.dg/modules/mod-tpl-2_b.C
! 1bbab7399b519c9dff6afef5ca7685a9  gcc/testsuite/g++.dg/modules/modules.exp
  f49c118362c9a45e801940d0725a767d  gcc/testsuite/g++.dg/modules/mutual-friend.ii
  ebce3d8effe71472ad6b1910c0b435f6  gcc/testsuite/g++.dg/modules/namespace-1_a.C
  c34c17e18223f5c84607e68a5f2dd81a  gcc/testsuite/g++.dg/modules/namespace-1_b.C
*************** e366846489950b58c52df35a27846525  gcc/te
*** 21328,21333 ****
--- 23262,23273 ----
  6dce6b530852880662a2a88b22a82982  gcc/testsuite/g++.dg/modules/partial-1.h
  6dbe3ef9e0f9f227062003ba18e1cc0b  gcc/testsuite/g++.dg/modules/partial-1_a.H
  cc4a92d4663ab8a3eb6403f1efd63522  gcc/testsuite/g++.dg/modules/partial-1_b.C
+ b2fb0f46e6523102943cfe6dbc9c3ed9  gcc/testsuite/g++.dg/modules/partial-2.cc
+ 778a45855b7bf702bdcb78b5729aaf67  gcc/testsuite/g++.dg/modules/partial-2.h
+ 164b5c34d89fe5be1b83dc531854a715  gcc/testsuite/g++.dg/modules/partial-2_a.C
+ d3641c8abf72c10ec23d46781c9d5f8a  gcc/testsuite/g++.dg/modules/partial-2_b.C
+ 3dd14e8c2254c8393506e24a4461ff8d  gcc/testsuite/g++.dg/modules/partial-2_c.H
+ 8dfb68f84283ac3fbafa6b39844969e3  gcc/testsuite/g++.dg/modules/partial-2_d.C
  fbd0b1dab6ed1e2ae131e2b1eb041193  gcc/testsuite/g++.dg/modules/pmf-1.h
  27588c87bfcbced49f086af1780f7380  gcc/testsuite/g++.dg/modules/pmf-1_a.H
  f9973f82fe827543518c93e5883577cf  gcc/testsuite/g++.dg/modules/pmf-1_b.C
*************** f979d20df148ee22f4beaaca4b13ab43  gcc/te
*** 21338,21344 ****
--- 23278,23298 ----
  807404dae49679f55eec9277e3160153  gcc/testsuite/g++.dg/modules/pmp-1_b.C
  2234c7539ce1ba0ef576226e3393ce3e  gcc/testsuite/g++.dg/modules/pmp-2.C
  3a56ec9de09c0aba7fb1a5e3c762e714  gcc/testsuite/g++.dg/modules/pmp-3.C
+ f015c0ff1908f1befd40f6bb952b56db  gcc/testsuite/g++.dg/modules/pr100881_a.C
+ 2ff43efd5d5b4f73c0b91816abf2d46e  gcc/testsuite/g++.dg/modules/pr100881_b.C
  16afad71e1a1a8502b6e6aec951409cc  gcc/testsuite/g++.dg/modules/pr101582-1.C
+ db0f88a1a0903d3b5720c3d056d72619  gcc/testsuite/g++.dg/modules/pr102576_a.H
+ d63d1b5264d1459902abfe8a3c7f8963  gcc/testsuite/g++.dg/modules/pr102576_b.C
+ bfdd6003f0822a40b3e827ec67fc868a  gcc/testsuite/g++.dg/modules/pr105045_a.C
+ 716af8bc47e26f3ef23e375920c3beaf  gcc/testsuite/g++.dg/modules/pr105045_b.C
+ 4f11306441549f37f4e5b56e8deeef62  gcc/testsuite/g++.dg/modules/pr105169.h
+ 31298b300e750008bf908fd1756b1006  gcc/testsuite/g++.dg/modules/pr105169_a.C
+ 3237950d5a1f633eaca47f25748b2426  gcc/testsuite/g++.dg/modules/pr105169_b.C
+ 5575c4b179039e0db48d03d5389d0e88  gcc/testsuite/g++.dg/modules/pr106304_a.C
+ 065e72a68affa81a8cf3ffafd8ccdcf9  gcc/testsuite/g++.dg/modules/pr106304_b.C
+ bb0626047fc0ed25b166e49e15e90815  gcc/testsuite/g++.dg/modules/pr106761.h
+ d71ad1e42d5edd10bf65dd64c81a4107  gcc/testsuite/g++.dg/modules/pr106761_a.H
+ 57c308104a9d589b59baa6c5289ef1ae  gcc/testsuite/g++.dg/modules/pr106761_b.C
  56ba9e2a41b995724a511df79d8df541  gcc/testsuite/g++.dg/modules/pr98531-1.h
  7155fba8679861dc6ac8879b5f49a6eb  gcc/testsuite/g++.dg/modules/pr98531-1_a.H
  db36409e89afb58e627178caf0f3d7d5  gcc/testsuite/g++.dg/modules/pr98531-1_b.C
*************** d521f5defa1c2439ade983caa3878626  gcc/te
*** 21349,21356 ****
  c259b1281e8af31d180336aca7392b9e  gcc/testsuite/g++.dg/modules/pr98531-3_a.H
  9bc0019a79d4a55bdb80742f0cc03640  gcc/testsuite/g++.dg/modules/pr98531-3_b.C
  63636712c391a0bb20418c4bd980e9cc  gcc/testsuite/g++.dg/modules/pr98591.H
! 7d183d0302a9438f220450375475b1cb  gcc/testsuite/g++.dg/modules/pr98718_a.C
! b0d808922fe102b75c7298def0b6648b  gcc/testsuite/g++.dg/modules/pr98718_b.C
  8cf1acffb67e16e64b43f5ddd3c4e52a  gcc/testsuite/g++.dg/modules/pr98741_a.H
  ba9f1f60bd25fb25b1989b645b9351fc  gcc/testsuite/g++.dg/modules/pr98741_b.H
  eb2e34a90bfcd64a24bb7caeac5dab34  gcc/testsuite/g++.dg/modules/pr98741_c.C
--- 23303,23310 ----
  c259b1281e8af31d180336aca7392b9e  gcc/testsuite/g++.dg/modules/pr98531-3_a.H
  9bc0019a79d4a55bdb80742f0cc03640  gcc/testsuite/g++.dg/modules/pr98531-3_b.C
  63636712c391a0bb20418c4bd980e9cc  gcc/testsuite/g++.dg/modules/pr98591.H
! a3f0ded048a86dcbdd13af7f108c9fbb  gcc/testsuite/g++.dg/modules/pr98718_a.C
! e12f0124ad95220cec5ac2dfd0fafff4  gcc/testsuite/g++.dg/modules/pr98718_b.C
  8cf1acffb67e16e64b43f5ddd3c4e52a  gcc/testsuite/g++.dg/modules/pr98741_a.H
  ba9f1f60bd25fb25b1989b645b9351fc  gcc/testsuite/g++.dg/modules/pr98741_b.H
  eb2e34a90bfcd64a24bb7caeac5dab34  gcc/testsuite/g++.dg/modules/pr98741_c.C
*************** ffae0410baa0cf1f144b964387bfbcfe  gcc/te
*** 21365,21371 ****
  701cfcc8c357aa094f34aa029490f60d  gcc/testsuite/g++.dg/modules/pr98944_c.C
  a3323ba22bbfa9772b24db538aeb6eed  gcc/testsuite/g++.dg/modules/pr98944_d.C
  af1b95042fd2d6b253524aa91fe9a321  gcc/testsuite/g++.dg/modules/pr99023_a.X
! 0f47104a2b5e50105b77be4fa733f547  gcc/testsuite/g++.dg/modules/pr99023_b.X
  fa6f37da884582c7c5b2c64f3ff374c1  gcc/testsuite/g++.dg/modules/pr99039_a.C
  a44f9dc7dfc41fee43a04d3fce2ab510  gcc/testsuite/g++.dg/modules/pr99039_b.C
  7fdbdbd01fa4fd6223aaad6e202ea497  gcc/testsuite/g++.dg/modules/pr99040_a.C
--- 23319,23325 ----
  701cfcc8c357aa094f34aa029490f60d  gcc/testsuite/g++.dg/modules/pr98944_c.C
  a3323ba22bbfa9772b24db538aeb6eed  gcc/testsuite/g++.dg/modules/pr98944_d.C
  af1b95042fd2d6b253524aa91fe9a321  gcc/testsuite/g++.dg/modules/pr99023_a.X
! 40a47188a63c8c6aa72bc61eb0844ab0  gcc/testsuite/g++.dg/modules/pr99023_b.X
  fa6f37da884582c7c5b2c64f3ff374c1  gcc/testsuite/g++.dg/modules/pr99039_a.C
  a44f9dc7dfc41fee43a04d3fce2ab510  gcc/testsuite/g++.dg/modules/pr99039_b.C
  7fdbdbd01fa4fd6223aaad6e202ea497  gcc/testsuite/g++.dg/modules/pr99040_a.C
*************** d3922fc29d0463ecc831e46bc974d5b3  gcc/te
*** 21376,21382 ****
  b7e1d9ff3c0fc1cb573ab8564f4c775d  gcc/testsuite/g++.dg/modules/pr99050_b.C
  c6bc457ee1bf928a28da74304e251a1e  gcc/testsuite/g++.dg/modules/pr99071_a.H
  98ad7aa1471ca9b20c8c4b0d5a818f49  gcc/testsuite/g++.dg/modules/pr99071_b.H
! ef555ee952d6399b10990de5171b6fa9  gcc/testsuite/g++.dg/modules/pr99072.H
  08c41f579dbe003c5b812c3a9ec75877  gcc/testsuite/g++.dg/modules/pr99153_a.H
  558328a4bbfde4537ee9b51c8eff91a2  gcc/testsuite/g++.dg/modules/pr99153_b.H
  9aa6a2b7ce69815ae65132a4db04c6df  gcc/testsuite/g++.dg/modules/pr99166_a.X
--- 23330,23336 ----
  b7e1d9ff3c0fc1cb573ab8564f4c775d  gcc/testsuite/g++.dg/modules/pr99050_b.C
  c6bc457ee1bf928a28da74304e251a1e  gcc/testsuite/g++.dg/modules/pr99071_a.H
  98ad7aa1471ca9b20c8c4b0d5a818f49  gcc/testsuite/g++.dg/modules/pr99071_b.H
! 3c266365d8c07b76c7d1dd8ca292ac37  gcc/testsuite/g++.dg/modules/pr99072.H
  08c41f579dbe003c5b812c3a9ec75877  gcc/testsuite/g++.dg/modules/pr99153_a.H
  558328a4bbfde4537ee9b51c8eff91a2  gcc/testsuite/g++.dg/modules/pr99153_b.H
  9aa6a2b7ce69815ae65132a4db04c6df  gcc/testsuite/g++.dg/modules/pr99166_a.X
*************** e1fe747b8f2f9ce4b64165c48e4663de  gcc/te
*** 21436,21441 ****
--- 23390,23397 ----
  32a7c505afdfe7483de475fa0450a26e  gcc/testsuite/g++.dg/modules/pr99294_b.C
  fef22f03937836b2e6643435fd0ff30a  gcc/testsuite/g++.dg/modules/pr99344_a.C
  187d55b7ea81342dd730c889ce2e54b0  gcc/testsuite/g++.dg/modules/pr99344_b.C
+ 1d3b24b6b017d00f539b978627a6e4cf  gcc/testsuite/g++.dg/modules/pr99377-2_a.C
+ e1790540954e09049a88bca416297f44  gcc/testsuite/g++.dg/modules/pr99377-2_b.C
  5eb3328674ac9b14d498980dc0ef26dd  gcc/testsuite/g++.dg/modules/pr99377_a.H
  add697b9dad03234b264f8eed3625f24  gcc/testsuite/g++.dg/modules/pr99377_b.C
  ca57a8cb09eb7df5c27154b21d6289a9  gcc/testsuite/g++.dg/modules/pr99377_c.C
*************** df985f4dcd12d98035a56d56fcdd7015  gcc/te
*** 21485,21490 ****
--- 23441,23448 ----
  8284b0df8548e8013a5edbde6f832f93  gcc/testsuite/g++.dg/modules/static-1_a.C
  c080c59625958504bf04e1d791f2e185  gcc/testsuite/g++.dg/modules/static-1_b.C
  ccd007366f5705a31d52fe9c5bab9141  gcc/testsuite/g++.dg/modules/static-1_c.C
+ d222ec618defd74eb51edcc421e095c8  gcc/testsuite/g++.dg/modules/static-2_a.H
+ 3f8e91a21c5b2617780c3d92a627f9b2  gcc/testsuite/g++.dg/modules/static-2_b.C
  ead144c6dd6a554943704f3fcabf2981  gcc/testsuite/g++.dg/modules/std-1_a.C
  44eb33e5fba5df9a2f785daa5a7a97df  gcc/testsuite/g++.dg/modules/std-1_b.C
  f2f914e81d0e558e16d8c2b531a02840  gcc/testsuite/g++.dg/modules/std-subst-2.C
*************** ab9ad3f69ee578c68df73507b4f930a9  gcc/te
*** 21578,21583 ****
--- 23536,23543 ----
  b51b053beacc19bf223fb0111d5cc38e  gcc/testsuite/g++.dg/modules/tpl-friend-6_b.C
  940f3e9291fe7841eb211bd483df6203  gcc/testsuite/g++.dg/modules/tpl-friend-7_a.C
  47ca0ba1815983a6f1f480f0edf3d827  gcc/testsuite/g++.dg/modules/tpl-friend-7_b.C
+ 2f120706e28ff59f870efb60b9ffe17d  gcc/testsuite/g++.dg/modules/tpl-friend-8_a.H
+ f491c55bfd930e25725bbc56c05907dd  gcc/testsuite/g++.dg/modules/tpl-friend-8_b.C
  34f345480583a302fca05d661038880e  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.cc
  429f3d1daac109d3a2717ed74c3368a4  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1.h
  48815aab963fd190cbc6bab4de9786e5  gcc/testsuite/g++.dg/modules/tpl-friend-merge-1_a.H
*************** bf06ee8fbede92aacd5ecf4a5c769327  gcc/te
*** 21601,21606 ****
--- 23561,23568 ----
  ba47118b706b0830fd726f1ab7253614  gcc/testsuite/g++.dg/modules/tpl-spec-6_a.C
  ad09111c5e018f53c8a715b8bdcfb7ad  gcc/testsuite/g++.dg/modules/tpl-spec-6_b.C
  bd4d984a60145ba6156e8fc50d4f5ed0  gcc/testsuite/g++.dg/modules/tpl-spec-7.C
+ f0cc5cf43618d482e8ca98a94e909fbb  gcc/testsuite/g++.dg/modules/tpl-spec-8_a.H
+ d8cb88d2afe20155da288978d93ad470  gcc/testsuite/g++.dg/modules/tpl-spec-8_b.C
  e98a12b4ae46870b0643fa1223fdc3b4  gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_a.C
  3dd3da204a400133a64f0d5961a045af  gcc/testsuite/g++.dg/modules/tpl-tpl-friend-1_b.C
  cc129c773de8f392f991d9083e48611b  gcc/testsuite/g++.dg/modules/tpl-tpl-mem-1_a.C
*************** abb264131cf69ea3d4038a76ed813597  gcc/te
*** 21628,21633 ****
--- 23590,23597 ----
  45d12a3e78d3382cd9c35a1159dc0f12  gcc/testsuite/g++.dg/modules/ttp-3_b.C
  0caa5672645b8b70e134f077e695f1f4  gcc/testsuite/g++.dg/modules/typename-1_a.C
  d92fe811980f743f6ceae665d0e6d815  gcc/testsuite/g++.dg/modules/typename-1_b.C
+ f0018549a1dd967c9debb3cdb1131d36  gcc/testsuite/g++.dg/modules/typename-friend_a.C
+ f1d985b13d698bcccc55e9f689df6a56  gcc/testsuite/g++.dg/modules/typename-friend_b.C
  634f316800fb64083c45650e2e916e91  gcc/testsuite/g++.dg/modules/unnamed-1_a.C
  fcd88fa087afa6876483c9180896600f  gcc/testsuite/g++.dg/modules/unnamed-1_b.C
  b56edd1f3ed182e1e681ca48a66740bf  gcc/testsuite/g++.dg/modules/unnamed-2.C
*************** adc4f32bd70209871e3deed494628f03  gcc/te
*** 21661,21667 ****
  5363cb6d035a0839de3364cef17f901a  gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C
  c1b40f22d6234f4c5283687a112d1f6e  gcc/testsuite/g++.dg/modules/virt-1_a.C
  ef900fef308d0ecbd503017332905389  gcc/testsuite/g++.dg/modules/virt-1_b.C
! e0772c636c0bb479773598528943bc1c  gcc/testsuite/g++.dg/modules/virt-2_a.C
  35a755a2f769813335533080fb611f80  gcc/testsuite/g++.dg/modules/virt-2_b.C
  04591658e0d8d0795e7f23f57ba2c242  gcc/testsuite/g++.dg/modules/virt-2_c.C
  1127461faa60a09d4c3f0ce98cd9d08b  gcc/testsuite/g++.dg/modules/vmort-1_a.C
--- 23625,23631 ----
  5363cb6d035a0839de3364cef17f901a  gcc/testsuite/g++.dg/modules/var-tpl-concept-1_b.C
  c1b40f22d6234f4c5283687a112d1f6e  gcc/testsuite/g++.dg/modules/virt-1_a.C
  ef900fef308d0ecbd503017332905389  gcc/testsuite/g++.dg/modules/virt-1_b.C
! 6647f96807ca5ce9d3943016c54e5327  gcc/testsuite/g++.dg/modules/virt-2_a.C
  35a755a2f769813335533080fb611f80  gcc/testsuite/g++.dg/modules/virt-2_b.C
  04591658e0d8d0795e7f23f57ba2c242  gcc/testsuite/g++.dg/modules/virt-2_c.C
  1127461faa60a09d4c3f0ce98cd9d08b  gcc/testsuite/g++.dg/modules/vmort-1_a.C
*************** b9e6dd7232aadc013278f66fb1b6943a  gcc/te
*** 21679,21685 ****
  98f4134fbdf70aa52f8b7485cc2b7bee  gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
  0192d2cf9b607dfc75c5ec8ccf0ab892  gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
  bed7f5d7a3cc0e071270be9feca8f82d  gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C
! b2b961423bdc518da35f7a8b09f5da6f  gcc/testsuite/g++.dg/modules/xtreme-header-2.h
  808f4bde53dc63bf027df7f3f42c142d  gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
  1a0932537d7d7b9406b78d1164a48f5b  gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
  ae606742eb915a1cb398dcbbce5c625d  gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C
--- 23643,23649 ----
  98f4134fbdf70aa52f8b7485cc2b7bee  gcc/testsuite/g++.dg/modules/xtreme-header-1_a.H
  0192d2cf9b607dfc75c5ec8ccf0ab892  gcc/testsuite/g++.dg/modules/xtreme-header-1_b.C
  bed7f5d7a3cc0e071270be9feca8f82d  gcc/testsuite/g++.dg/modules/xtreme-header-1_c.C
! 65565b8b88947a9cd7d21a03e63bfbda  gcc/testsuite/g++.dg/modules/xtreme-header-2.h
  808f4bde53dc63bf027df7f3f42c142d  gcc/testsuite/g++.dg/modules/xtreme-header-2_a.H
  1a0932537d7d7b9406b78d1164a48f5b  gcc/testsuite/g++.dg/modules/xtreme-header-2_b.C
  ae606742eb915a1cb398dcbbce5c625d  gcc/testsuite/g++.dg/modules/xtreme-header-2_c.C
*************** e8228349c15997bd101dce93d255e164  gcc/te
*** 21695,21712 ****
  d17e82ac87ed66555ffde8058e4d0c76  gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
  39cf119bbb49dcf4fec1fe451ffa231b  gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
  c3636cf9dd8b860418b1ec20eca2fcfa  gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C
! 0eb86c325687230f651493809df4232e  gcc/testsuite/g++.dg/modules/xtreme-header-6.h
  85dfd677144240809d1219f05d17f8ab  gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
  dafc999dc77232ecf4da841ea0785153  gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
  63b82749637ed6fb8c7c3635237b5133  gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C
! d94a040fd383960841da3874312807b4  gcc/testsuite/g++.dg/modules/xtreme-header.h
  17ec177cae98b9faed2d659aff2838fc  gcc/testsuite/g++.dg/modules/xtreme-header_a.H
  5c6d89fdd3100b17ff424aaee91d841b  gcc/testsuite/g++.dg/modules/xtreme-header_b.C
  275063e55db5497a82b6a8afb6b265f0  gcc/testsuite/g++.dg/modules/xtreme-tr1.h
  6df9a71a58dbf8146adfa33a7c18858e  gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
  847138241047c39840018b1c3eb8bd7d  gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
  328d5426468f09a9a108df6191684b78  gcc/testsuite/g++.dg/no-stack-protector-attr-2.C
! 7f74fa2cbb8a6b5d2e3cfba656e474c3  gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
  020cc92178f45d27f797218781bfe02c  gcc/testsuite/g++.dg/no-stack-protector-attr.C
  8782d87c3ab6e3b20b317d9f1492e146  gcc/testsuite/g++.dg/opt/20050511-1.C
  5e1f1ec360f2ae54c78ee347de5c583f  gcc/testsuite/g++.dg/opt/20181025-1.C
--- 23659,23676 ----
  d17e82ac87ed66555ffde8058e4d0c76  gcc/testsuite/g++.dg/modules/xtreme-header-5_a.H
  39cf119bbb49dcf4fec1fe451ffa231b  gcc/testsuite/g++.dg/modules/xtreme-header-5_b.C
  c3636cf9dd8b860418b1ec20eca2fcfa  gcc/testsuite/g++.dg/modules/xtreme-header-5_c.C
! 25a7ffd38933a2b162a4845c90bab5b7  gcc/testsuite/g++.dg/modules/xtreme-header-6.h
  85dfd677144240809d1219f05d17f8ab  gcc/testsuite/g++.dg/modules/xtreme-header-6_a.H
  dafc999dc77232ecf4da841ea0785153  gcc/testsuite/g++.dg/modules/xtreme-header-6_b.C
  63b82749637ed6fb8c7c3635237b5133  gcc/testsuite/g++.dg/modules/xtreme-header-6_c.C
! 8d28abdd4430cf521ed158aa2999d543  gcc/testsuite/g++.dg/modules/xtreme-header.h
  17ec177cae98b9faed2d659aff2838fc  gcc/testsuite/g++.dg/modules/xtreme-header_a.H
  5c6d89fdd3100b17ff424aaee91d841b  gcc/testsuite/g++.dg/modules/xtreme-header_b.C
  275063e55db5497a82b6a8afb6b265f0  gcc/testsuite/g++.dg/modules/xtreme-tr1.h
  6df9a71a58dbf8146adfa33a7c18858e  gcc/testsuite/g++.dg/modules/xtreme-tr1_a.H
  847138241047c39840018b1c3eb8bd7d  gcc/testsuite/g++.dg/modules/xtreme-tr1_b.C
  328d5426468f09a9a108df6191684b78  gcc/testsuite/g++.dg/no-stack-protector-attr-2.C
! eb2e0f01c9a4d46c1646751931cacef7  gcc/testsuite/g++.dg/no-stack-protector-attr-3.C
  020cc92178f45d27f797218781bfe02c  gcc/testsuite/g++.dg/no-stack-protector-attr.C
  8782d87c3ab6e3b20b317d9f1492e146  gcc/testsuite/g++.dg/opt/20050511-1.C
  5e1f1ec360f2ae54c78ee347de5c583f  gcc/testsuite/g++.dg/opt/20181025-1.C
*************** b879c3972fcf09a0bef4781d973dea10  gcc/te
*** 21750,21756 ****
  6ce6781eee8599f8f5762ae874d368af  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.C
! 5bc6618e030e397aeed7cf91aa526f63  gcc/testsuite/g++.dg/opt/const7.C
  8a6577c2e8b91d69c2d55b8ed2488fc8  gcc/testsuite/g++.dg/opt/copysign-1.C
  5c2d124413a2eaf9d343379ef14570a2  gcc/testsuite/g++.dg/opt/covariant1.C
  2b8e568482a37c0e98a0154aa649f58b  gcc/testsuite/g++.dg/opt/crash1.C
--- 23714,23720 ----
  6ce6781eee8599f8f5762ae874d368af  gcc/testsuite/g++.dg/opt/const4.C
  8acf967b641c44d3b713b18abd459981  gcc/testsuite/g++.dg/opt/const5.C
  77ef3f0315a1d75cc03361805c714b79  gcc/testsuite/g++.dg/opt/const6.C
! 0967e58e6b053bd3d763f7d463c40dd5  gcc/testsuite/g++.dg/opt/const7.C
  8a6577c2e8b91d69c2d55b8ed2488fc8  gcc/testsuite/g++.dg/opt/copysign-1.C
  5c2d124413a2eaf9d343379ef14570a2  gcc/testsuite/g++.dg/opt/covariant1.C
  2b8e568482a37c0e98a0154aa649f58b  gcc/testsuite/g++.dg/opt/crash1.C
*************** b7cb98f473e1920797490085dbf7bb94  gcc/te
*** 21825,21830 ****
--- 23789,23797 ----
  09696a226561fa381a83f8c1b56bd004  gcc/testsuite/g++.dg/opt/interface1.h
  1ac038665b7965caf38f2ddc0a55b918  gcc/testsuite/g++.dg/opt/interface2.C
  147890dfec6e1cbd6d1bb8385a3ca1e0  gcc/testsuite/g++.dg/opt/interface2.h
+ 519840c294d6b87811a202c0881051a4  gcc/testsuite/g++.dg/opt/is_constant_evaluated1.C
+ f1b0fb8d0e48803f4a6ff987db38f6ce  gcc/testsuite/g++.dg/opt/is_constant_evaluated2.C
+ 49327bf56d9dcef050fbd46cbe3b54eb  gcc/testsuite/g++.dg/opt/is_constant_evaluated3.C
  d3914504bba83652fe1a238821c3dea2  gcc/testsuite/g++.dg/opt/life1.C
  e9d20e766af5e3640a5fe827cb945f15  gcc/testsuite/g++.dg/opt/local1.C
  74049e3e36b5fbdab2f271b70320a6d8  gcc/testsuite/g++.dg/opt/longbranch1.C
*************** b503536c5b760d3b8bf52f3b09253012  gcc/te
*** 21881,21886 ****
--- 23848,23862 ----
  a05f3fe9e917eacdb552f9ade1d73f34  gcc/testsuite/g++.dg/opt/pr104880.C
  bad9496f071793031ea4ab93b911a483  gcc/testsuite/g++.dg/opt/pr105235-1.C
  793a7a376d70ab6e7e1088ceec9a6b33  gcc/testsuite/g++.dg/opt/pr105306.C
+ 2c9e1c0384f1a0798de8996046a58efd  gcc/testsuite/g++.dg/opt/pr105802.C
+ c689fefa20f0614d72c4ecf8ddedced7  gcc/testsuite/g++.dg/opt/pr105874.C
+ 72a7c6951fbc7040ff1d75b25b1a7725  gcc/testsuite/g++.dg/opt/pr106860.C
+ ebbec8ff132c1bf960fba8ddac82480e  gcc/testsuite/g++.dg/opt/pr107569.C
+ 401696a6d7ff91be17e1e28685ccdbaf  gcc/testsuite/g++.dg/opt/pr108253.C
+ 0fd8014a8bf41063904c9006c6d3f334  gcc/testsuite/g++.dg/opt/pr108365.C
+ 2613159e61afceaa9e7ace58beef53f4  gcc/testsuite/g++.dg/opt/pr108854.C
+ fc956d5d39ddca9870d1a2fca7df287d  gcc/testsuite/g++.dg/opt/pr109434.C
+ b66c56d1ba4ee568e881df0560f18827  gcc/testsuite/g++.dg/opt/pr109462.C
  2896f5b1a96dd9fabb1dbb65cb4c5921  gcc/testsuite/g++.dg/opt/pr13066-1.C
  4f87f86b9f018cae74888e97468b2fe0  gcc/testsuite/g++.dg/opt/pr14029.C
  8fb7e68e9e9b5eb02628e03f5333e645  gcc/testsuite/g++.dg/opt/pr14888.C
*************** c7f48544f74c23480e79a8c68b0ab1a8  gcc/te
*** 22178,22184 ****
  07c218d68fbc642331f671b72bf1cef6  gcc/testsuite/g++.dg/opt/vt2.C
  52fff29b07362fe5d23c4905a7595e39  gcc/testsuite/g++.dg/opt/vt3.C
  a0b34e9a729ff5b2181e421f2d8fb7c4  gcc/testsuite/g++.dg/opt/vt4.C
- 57ab207fa6f8b3558759d13d1a56154e  gcc/testsuite/g++.dg/other/PR23205.C
  3b2d6e520a67586ffdc3595ba397d91a  gcc/testsuite/g++.dg/other/abstract1.C
  f70708b0fe4401269dacc34ed85850e3  gcc/testsuite/g++.dg/other/abstract2.C
  32f6a4ff28854973168944cb1ac27537  gcc/testsuite/g++.dg/other/abstract3.C
--- 24154,24159 ----
*************** c744ed5aaa2c2c1507e6c50193db38bb  gcc/te
*** 22320,22325 ****
--- 24295,24301 ----
  dc99910fb2d0aaf7a5c4306f76bad987  gcc/testsuite/g++.dg/other/error33.C
  f4020af99d5cd87e4e7dbd1bc9415ef9  gcc/testsuite/g++.dg/other/error34.C
  f4ff66d3666148740eb666f07fc5155b  gcc/testsuite/g++.dg/other/error35.C
+ d0034ea71ec33a1eb892f88029c5cc6f  gcc/testsuite/g++.dg/other/error36.C
  82a7d9e64c93dc6a0cb8f8e5b33cb4b5  gcc/testsuite/g++.dg/other/error4.C
  2dc8fe3ed4586980f9360d1cf34c2a71  gcc/testsuite/g++.dg/other/error5.C
  211bf7afef91ced5b9f2bdf67115b606  gcc/testsuite/g++.dg/other/error6.C
*************** eda67a8394a25b381e47971e78264eba  gcc/te
*** 22366,22373 ****
  3ca5017faf45f39326ff4e30a1ec1ba8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  8925c3efd781e76570846cfd6f817fd2  gcc/testsuite/g++.dg/other/i386-11.C
! 2086b5b366ae30f08951f7ec0d621892  gcc/testsuite/g++.dg/other/i386-2.C
! 75657a09fab5874092430b19f8416d79  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  b3ef431f4cf4776208d7042aff2ddb83  gcc/testsuite/g++.dg/other/i386-8.C
--- 24342,24349 ----
  3ca5017faf45f39326ff4e30a1ec1ba8  gcc/testsuite/g++.dg/other/i386-1.C
  9913a24914ce11f6a0606c70ed58cb96  gcc/testsuite/g++.dg/other/i386-10.C
  8925c3efd781e76570846cfd6f817fd2  gcc/testsuite/g++.dg/other/i386-11.C
! d8bed1834b734ded41b6dd297e398fbc  gcc/testsuite/g++.dg/other/i386-2.C
! f0fda132600c70f2b205acbf4692a402  gcc/testsuite/g++.dg/other/i386-3.C
  a4ad4c2cb3c1448496351241a77aedb7  gcc/testsuite/g++.dg/other/i386-4.C
  a32a5af1b4c57aabcbdaa817835a698d  gcc/testsuite/g++.dg/other/i386-7.C
  b3ef431f4cf4776208d7042aff2ddb83  gcc/testsuite/g++.dg/other/i386-8.C
*************** a9c2bd4786300d7cf805e7ef57335a2c  gcc/te
*** 22390,22396 ****
  f90c8d6149f32ba2d05926d185233e6f  gcc/testsuite/g++.dg/other/main2.C
  452d570f73a334919cfa670c983dc7af  gcc/testsuite/g++.dg/other/main3.C
  688ada87fb447bcc4f314e612d65b84b  gcc/testsuite/g++.dg/other/mmintrin.C
! 6b0d71cb40f690a059f35fa91d64ee5f  gcc/testsuite/g++.dg/other/mult-stor1.C
  ebb91c2b0072fbe70f09b0fb26a8cb70  gcc/testsuite/g++.dg/other/nested-extern-1.C
  d32079973d903931a6a5e3a3f13eb2c2  gcc/testsuite/g++.dg/other/nested-extern-1.cc
  4f31f1d30f904a85f5b99f5ea9f4572d  gcc/testsuite/g++.dg/other/nested-extern-2.C
--- 24366,24372 ----
  f90c8d6149f32ba2d05926d185233e6f  gcc/testsuite/g++.dg/other/main2.C
  452d570f73a334919cfa670c983dc7af  gcc/testsuite/g++.dg/other/main3.C
  688ada87fb447bcc4f314e612d65b84b  gcc/testsuite/g++.dg/other/mmintrin.C
! abd91675832288668edaa0df6a506f18  gcc/testsuite/g++.dg/other/mult-stor1.C
  ebb91c2b0072fbe70f09b0fb26a8cb70  gcc/testsuite/g++.dg/other/nested-extern-1.C
  d32079973d903931a6a5e3a3f13eb2c2  gcc/testsuite/g++.dg/other/nested-extern-1.cc
  4f31f1d30f904a85f5b99f5ea9f4572d  gcc/testsuite/g++.dg/other/nested-extern-2.C
*************** a7f0f2c1d80a46d3283257e09b5b8611  gcc/te
*** 22423,22429 ****
  f43f96bf3c378817b959c22aee3466c0  gcc/testsuite/g++.dg/other/pr20366.C
  972110c0d861ecae87ae8ad4d861dd0f  gcc/testsuite/g++.dg/other/pr22003.C
  57901344b69ec7b216bf1128cc5a7242  gcc/testsuite/g++.dg/other/pr22358.C
- 6b6295db303eea90d8c5c94c2cd7e82f  gcc/testsuite/g++.dg/other/pr23205-2.C
  6fbc149b2107962f2863c83d0c880f1a  gcc/testsuite/g++.dg/other/pr24623.C
  8ed27916cb5b71de34de304c8c46a014  gcc/testsuite/g++.dg/other/pr25632.C
  d135b9a72f0f848337f5db8cd4d42ca2  gcc/testsuite/g++.dg/other/pr27495.C
--- 24399,24404 ----
*************** f9ca50b6e63332cd9218b158f25436d8  gcc/te
*** 22540,22546 ****
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
  6be2049d130249765f95acaa423811d7  gcc/testsuite/g++.dg/other/switch4.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
! bbbc42226f302577b317dbefbed13e8a  gcc/testsuite/g++.dg/other/thunk1.C
  123a1d9e28482bdcbc8dda30bc694c21  gcc/testsuite/g++.dg/other/thunk2a.C
  96ef308c0639c20dcd512d32e427f5f8  gcc/testsuite/g++.dg/other/thunk2b.C
  f8dc723a51d7ae25d4c82158123aefaf  gcc/testsuite/g++.dg/other/typedef1.C
--- 24515,24521 ----
  bb7141945a25ded3ef95f8a4fab53bff  gcc/testsuite/g++.dg/other/switch3.C
  6be2049d130249765f95acaa423811d7  gcc/testsuite/g++.dg/other/switch4.C
  9bae0d01ef429f94e58c536f39c9ca7b  gcc/testsuite/g++.dg/other/synth1.C
! 40538b376c21bc0ef41a10de431fd101  gcc/testsuite/g++.dg/other/thunk1.C
  123a1d9e28482bdcbc8dda30bc694c21  gcc/testsuite/g++.dg/other/thunk2a.C
  96ef308c0639c20dcd512d32e427f5f8  gcc/testsuite/g++.dg/other/thunk2b.C
  f8dc723a51d7ae25d4c82158123aefaf  gcc/testsuite/g++.dg/other/typedef1.C
*************** a0b8fd80bfd82adaa23c61a98df112fb  gcc/te
*** 22590,22595 ****
--- 24565,24571 ----
  a0940c624da881bbf5ac3c841243c409  gcc/testsuite/g++.dg/overload/conv-op1.C
  fbd791e505451bc9022bcc66d1461cd3  gcc/testsuite/g++.dg/overload/conv-op2.C
  8ae6c6553dbbee15f45f0a28425dfa81  gcc/testsuite/g++.dg/overload/conv-op3.C
+ 1ef565a522347f71c02761880aef7214  gcc/testsuite/g++.dg/overload/conv-op4.C
  98a842578a616e44aeceebe22e18afd1  gcc/testsuite/g++.dg/overload/copy1.C
  b952933e6f52d065ea331a27b2e7852f  gcc/testsuite/g++.dg/overload/defarg1.C
  1fe01cdd569e9efdd1a736f06edff77b  gcc/testsuite/g++.dg/overload/defarg10.C
*************** f95f2ce9408aae34f003cb20506e3a38  gcc/te
*** 22659,22664 ****
--- 24635,24641 ----
  540a07a7ab8558b0f45439640f7704e6  gcc/testsuite/g++.dg/parse/access11.C
  6046a3158ae016cd50c3a9dee9e2807a  gcc/testsuite/g++.dg/parse/access12.C
  571c9cf3e6332700b4fa76472b38cffe  gcc/testsuite/g++.dg/parse/access13.C
+ d8cbb3cc14ea7990e2d09f744bfd4d37  gcc/testsuite/g++.dg/parse/access14.C
  f1ac82a9ba8ce5b8b202ad832e593845  gcc/testsuite/g++.dg/parse/access2.C
  752b3707237c1f83483b50a66bf06844  gcc/testsuite/g++.dg/parse/access3.C
  d15089685ef9bec1d6011e43465e0eb2  gcc/testsuite/g++.dg/parse/access4.C
*************** d44f99d0f38b43ff740e826c56b2fa80  gcc/te
*** 22670,22675 ****
--- 24647,24656 ----
  1a4356ed33dce1c233f305b885c79fc2  gcc/testsuite/g++.dg/parse/alignas1.C
  6606f920d5b7219bc3178a9025894dc2  gcc/testsuite/g++.dg/parse/ambig1.C
  a9cdb854e4a0b864029e71b201a434a3  gcc/testsuite/g++.dg/parse/ambig10.C
+ 6cbd8c3d9c381cd18e3204fbe93a0ef6  gcc/testsuite/g++.dg/parse/ambig11.C
+ 88ed4ff4a85c038af91c394437a2f000  gcc/testsuite/g++.dg/parse/ambig12.C
+ 7bcb291cec1c2fb4b5f2ed6bcc284317  gcc/testsuite/g++.dg/parse/ambig13.C
+ 53580722ec008c0e990a4a6c21cfec44  gcc/testsuite/g++.dg/parse/ambig14.C
  3942d08ed7cbdaac837b06646132916e  gcc/testsuite/g++.dg/parse/ambig2.C
  dccd55557e6e7045693056e69f389dc4  gcc/testsuite/g++.dg/parse/ambig3.C
  fae81ce0afd197e10c8c2306551490cd  gcc/testsuite/g++.dg/parse/ambig4.C
*************** f824d66de93483bee5f6f7609bdc615b  gcc/te
*** 22774,22780 ****
  45cdd5263d466996ad8f4fa6719e2855  gcc/testsuite/g++.dg/parse/crash36.C
  a082e1ec4d2ff1d8b432964e3209d790  gcc/testsuite/g++.dg/parse/crash37.C
  4a7260e30600ec64262e39249bd74759  gcc/testsuite/g++.dg/parse/crash38.C
! 2a3c48e62d61fe6c85a7fc5800e98b77  gcc/testsuite/g++.dg/parse/crash39.C
  6f460684fc2f06d7abf6fcf1e9e4eb95  gcc/testsuite/g++.dg/parse/crash4.C
  a65f3be221a7566812e1c5eea4b01858  gcc/testsuite/g++.dg/parse/crash40.C
  2da0b9e200467905b73281833f10ce5c  gcc/testsuite/g++.dg/parse/crash41.C
--- 24755,24761 ----
  45cdd5263d466996ad8f4fa6719e2855  gcc/testsuite/g++.dg/parse/crash36.C
  a082e1ec4d2ff1d8b432964e3209d790  gcc/testsuite/g++.dg/parse/crash37.C
  4a7260e30600ec64262e39249bd74759  gcc/testsuite/g++.dg/parse/crash38.C
! ea556b948b37ae1185e62363737a88cd  gcc/testsuite/g++.dg/parse/crash39.C
  6f460684fc2f06d7abf6fcf1e9e4eb95  gcc/testsuite/g++.dg/parse/crash4.C
  a65f3be221a7566812e1c5eea4b01858  gcc/testsuite/g++.dg/parse/crash40.C
  2da0b9e200467905b73281833f10ce5c  gcc/testsuite/g++.dg/parse/crash41.C
*************** c3815b12d6adb1ac6f7c8f2379deb21d  gcc/te
*** 22942,22954 ****
  1770bd4111f50f08d153011b97e0ee41  gcc/testsuite/g++.dg/parse/error61.C
  1c27b0becdebc68ee67aaab409111d9b  gcc/testsuite/g++.dg/parse/error62.C
  39157b5f9d86e45cb8d1abe69a66ad29  gcc/testsuite/g++.dg/parse/error63.C
  69f9cb5c7beb27587f6ec060eeafc314  gcc/testsuite/g++.dg/parse/error7.C
  a9b4e068ec9bd53e03eab1f20b49779f  gcc/testsuite/g++.dg/parse/error8.C
  645fd7881b9edb38e573c6cc40ee26e9  gcc/testsuite/g++.dg/parse/error9.C
  f290af7231cc5e56195c68bf02c7fc6a  gcc/testsuite/g++.dg/parse/explicit1.C
  d5e1867a018baeb589c4bfc1ab21e892  gcc/testsuite/g++.dg/parse/expr1.C
  6babcafae0598fcc1b60b41da5acb465  gcc/testsuite/g++.dg/parse/expr2.C
! 6d7be91bc2c8c6e24eeb0e2834b30879  gcc/testsuite/g++.dg/parse/expr3.C
  ce0d46f2d60d16814d3d9c5b74aa6e41  gcc/testsuite/g++.dg/parse/extern-C-1.C
  6f5cc357c139363ad5258de16155e814  gcc/testsuite/g++.dg/parse/extern-C-2.C
  e0895a4d45dffd67334cc087868941a2  gcc/testsuite/g++.dg/parse/extern1.C
--- 24923,24936 ----
  1770bd4111f50f08d153011b97e0ee41  gcc/testsuite/g++.dg/parse/error61.C
  1c27b0becdebc68ee67aaab409111d9b  gcc/testsuite/g++.dg/parse/error62.C
  39157b5f9d86e45cb8d1abe69a66ad29  gcc/testsuite/g++.dg/parse/error63.C
+ 2c8451fa3eaf0641deecb9d15392bf3a  gcc/testsuite/g++.dg/parse/error64.C
  69f9cb5c7beb27587f6ec060eeafc314  gcc/testsuite/g++.dg/parse/error7.C
  a9b4e068ec9bd53e03eab1f20b49779f  gcc/testsuite/g++.dg/parse/error8.C
  645fd7881b9edb38e573c6cc40ee26e9  gcc/testsuite/g++.dg/parse/error9.C
  f290af7231cc5e56195c68bf02c7fc6a  gcc/testsuite/g++.dg/parse/explicit1.C
  d5e1867a018baeb589c4bfc1ab21e892  gcc/testsuite/g++.dg/parse/expr1.C
  6babcafae0598fcc1b60b41da5acb465  gcc/testsuite/g++.dg/parse/expr2.C
! ae48d834038f49224b01a0ca248143f9  gcc/testsuite/g++.dg/parse/expr3.C
  ce0d46f2d60d16814d3d9c5b74aa6e41  gcc/testsuite/g++.dg/parse/extern-C-1.C
  6f5cc357c139363ad5258de16155e814  gcc/testsuite/g++.dg/parse/extern-C-2.C
  e0895a4d45dffd67334cc087868941a2  gcc/testsuite/g++.dg/parse/extern1.C
*************** ead8df5d9d4cf435bf4e3cf134c0131c  gcc/te
*** 22974,22979 ****
--- 24956,24962 ----
  757948645eac8a4e3fcab96194123ce4  gcc/testsuite/g++.dg/parse/friend8.C
  1c99376ee30ece6c8b916ee9974374ed  gcc/testsuite/g++.dg/parse/friend9.C
  e8e9b52687fc710dc5ded14930091f3f  gcc/testsuite/g++.dg/parse/func-def1.C
+ 5a8577a5b5c7db2f8dd01207234704ab  gcc/testsuite/g++.dg/parse/functor1.C
  8bf1527135b5cd5516b6bbd9bd9c62d2  gcc/testsuite/g++.dg/parse/funptr1.C
  1b5b66c1d590a993aa96ce6e1f199469  gcc/testsuite/g++.dg/parse/fused-params1.C
  9326901f7db3032f59fb639815b474a6  gcc/testsuite/g++.dg/parse/inline1.C
*************** eb26fb436b8f8415a8abc1bccfbe0115  gcc/te
*** 23106,23111 ****
--- 25089,25095 ----
  ea7f3915f2a7ae810b80994ab09f9f4a  gcc/testsuite/g++.dg/parse/pr95999.C
  e092324667ee9b9d28e3bbedbac9d8cb  gcc/testsuite/g++.dg/parse/pr96257.C
  5ed1c736ecb0dfd7d196f7b0355e826d  gcc/testsuite/g++.dg/parse/pr96258.C
+ 6d8526046696d306b8565838ae6138f1  gcc/testsuite/g++.dg/parse/pr96442.C
  44edf260253cab603050f781362fdeda  gcc/testsuite/g++.dg/parse/pragma-recovery.C
  5a9d33aff7826f90760a0154af35d9f0  gcc/testsuite/g++.dg/parse/pragma1.C
  1f6123ac6fb8020a2ebda2653a23c5d2  gcc/testsuite/g++.dg/parse/pragma2.C
*************** ad10de81d76fff3ac6f0d42c5b013580  gcc/te
*** 23176,23184 ****
  273ae361a87c0391ccbbe442c86d676e  gcc/testsuite/g++.dg/parse/template25.C
  24209fc47c8bc3374fae451404dbd2df  gcc/testsuite/g++.dg/parse/template26.C
  ba5fea52e589d10cf797adaaeee748ac  gcc/testsuite/g++.dg/parse/template27.C
! b317dcf6b71b7e1a1d6798916661f4ff  gcc/testsuite/g++.dg/parse/template28.C
  152e03aa0bab781e753c83dfb1e3c3cd  gcc/testsuite/g++.dg/parse/template29.C
  a31feb6abdee70df8465893bfc01cc3f  gcc/testsuite/g++.dg/parse/template3.C
  17872444c3e507c8ec724d519d4c6457  gcc/testsuite/g++.dg/parse/template4.C
  eb5012efbf2e76d0649338687d64eab1  gcc/testsuite/g++.dg/parse/template5.C
  36ce6bc0b81d40546501089e276c612d  gcc/testsuite/g++.dg/parse/template6.C
--- 25160,25170 ----
  273ae361a87c0391ccbbe442c86d676e  gcc/testsuite/g++.dg/parse/template25.C
  24209fc47c8bc3374fae451404dbd2df  gcc/testsuite/g++.dg/parse/template26.C
  ba5fea52e589d10cf797adaaeee748ac  gcc/testsuite/g++.dg/parse/template27.C
! 9332f756f125474e69f9f611457adfa4  gcc/testsuite/g++.dg/parse/template28.C
  152e03aa0bab781e753c83dfb1e3c3cd  gcc/testsuite/g++.dg/parse/template29.C
  a31feb6abdee70df8465893bfc01cc3f  gcc/testsuite/g++.dg/parse/template3.C
+ b5628e1700cd25518ce907c18c69e47d  gcc/testsuite/g++.dg/parse/template30.C
+ 7bbe9405de4476f557431f61bbc055be  gcc/testsuite/g++.dg/parse/template31.C
  17872444c3e507c8ec724d519d4c6457  gcc/testsuite/g++.dg/parse/template4.C
  eb5012efbf2e76d0649338687d64eab1  gcc/testsuite/g++.dg/parse/template5.C
  36ce6bc0b81d40546501089e276c612d  gcc/testsuite/g++.dg/parse/template6.C
*************** fe312b5e22af7a61d39446fc1257d020  gcc/te
*** 23198,23204 ****
  f60ae2ded91ec2dc8a237b91d1282751  gcc/testsuite/g++.dg/parse/typedef5.C
  174e24e49c802ceec036dddc815a14ff  gcc/testsuite/g++.dg/parse/typedef6.C
  71e8821fc281e76f6affdbe9259cfad2  gcc/testsuite/g++.dg/parse/typedef7.C
! 3a7fa2191253cc54b8efb130ada64f4e  gcc/testsuite/g++.dg/parse/typedef8.C
  8d023d15ec15c8c668eeaa5774614087  gcc/testsuite/g++.dg/parse/typedef9.C
  816e586cce785bd66d07622b7e076afe  gcc/testsuite/g++.dg/parse/typename1.C
  31eb059e3dbe1b34a067aafb14847fb8  gcc/testsuite/g++.dg/parse/typename10.C
--- 25184,25190 ----
  f60ae2ded91ec2dc8a237b91d1282751  gcc/testsuite/g++.dg/parse/typedef5.C
  174e24e49c802ceec036dddc815a14ff  gcc/testsuite/g++.dg/parse/typedef6.C
  71e8821fc281e76f6affdbe9259cfad2  gcc/testsuite/g++.dg/parse/typedef7.C
! 9e51f1f76aa5f99bfb9aa83177f5b1c7  gcc/testsuite/g++.dg/parse/typedef8.C
  8d023d15ec15c8c668eeaa5774614087  gcc/testsuite/g++.dg/parse/typedef9.C
  816e586cce785bd66d07622b7e076afe  gcc/testsuite/g++.dg/parse/typename1.C
  31eb059e3dbe1b34a067aafb14847fb8  gcc/testsuite/g++.dg/parse/typename10.C
*************** d41d8cd98f00b204e9800998ecf8427e  gcc/te
*** 23241,23249 ****
  1b5d28bf11bae4996001396e1ffe083b  gcc/testsuite/g++.dg/pch/local-1.Hs
  f9271dce9d7980fa8b426246ec2b9126  gcc/testsuite/g++.dg/pch/operator-1.C
  4a61ad56a41cb4cbee40e9821143277c  gcc/testsuite/g++.dg/pch/operator-1.Hs
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
! 8b59c96160dbc17a147836b4e8c57f14  gcc/testsuite/g++.dg/pch/pch.exp
  a79b4c14973bc580e45325abf4c19b72  gcc/testsuite/g++.dg/pch/pr90326.C
  8733db8bb02cf7abd5d7d07601acc332  gcc/testsuite/g++.dg/pch/pr90326.Hs
  f820a691997c43f0fd5a910e8712635b  gcc/testsuite/g++.dg/pch/pr92458.C
--- 25227,25237 ----
  1b5d28bf11bae4996001396e1ffe083b  gcc/testsuite/g++.dg/pch/local-1.Hs
  f9271dce9d7980fa8b426246ec2b9126  gcc/testsuite/g++.dg/pch/operator-1.C
  4a61ad56a41cb4cbee40e9821143277c  gcc/testsuite/g++.dg/pch/operator-1.Hs
+ 4d2177c4bbf97c75693219b0d4c149ae  gcc/testsuite/g++.dg/pch/pch-string-nulls.C
+ 1d2691135fb8c5529b20585ff62273d6  gcc/testsuite/g++.dg/pch/pch-string-nulls.Hs
  a42f209088bbce8d3650be5966861b6b  gcc/testsuite/g++.dg/pch/pch.C
  95603c8965412870090ed14011f4b123  gcc/testsuite/g++.dg/pch/pch.Hs
! 8cc6dad8ea88778aff40136804f2630c  gcc/testsuite/g++.dg/pch/pch.exp
  a79b4c14973bc580e45325abf4c19b72  gcc/testsuite/g++.dg/pch/pr90326.C
  8733db8bb02cf7abd5d7d07601acc332  gcc/testsuite/g++.dg/pch/pr90326.Hs
  f820a691997c43f0fd5a910e8712635b  gcc/testsuite/g++.dg/pch/pr92458.C
*************** b393922db8d338bed7f3bcf037edd19c  gcc/te
*** 23278,23297 ****
  3a80079be7a0bfd6f8efce4de8795fcb  gcc/testsuite/g++.dg/plugin/header_plugin.c
  1c30a8080468929a3cbbc7a4ef384c4c  gcc/testsuite/g++.dg/plugin/location-overflow-test-pr100796.c
  0422777feb5bb202ec0e53d6551fe397  gcc/testsuite/g++.dg/plugin/location-overflow-test-pr96391.c
! c55832f0688f7b95e7414cc8adaac59d  gcc/testsuite/g++.dg/plugin/plugin.exp
  0555e81b1b7c9c8e06b4e9d9ffccb7ff  gcc/testsuite/g++.dg/plugin/pragma_plugin-test-1.C
  bb9719af4ef365b9625ed93e9794b8b2  gcc/testsuite/g++.dg/plugin/pragma_plugin.c
  503f96544096dfaa1ea93338e21923ff  gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
  436d3d1e052b227d2661a53bc1d71e69  gcc/testsuite/g++.dg/plugin/self-assign-test-2.C
  e051d5cb1d92744fe18b74552249a54e  gcc/testsuite/g++.dg/plugin/self-assign-test-3.C
! 13b273d8b932f86e14def9c496a1a5c4  gcc/testsuite/g++.dg/plugin/selfassign.c
  84294469facc088b7f5a63c985cf91b3  gcc/testsuite/g++.dg/plugin/show-template-tree-color-labels.C
  21bdec26dd354f6ec8377f10495a1e22  gcc/testsuite/g++.dg/plugin/show-template-tree-color-no-elide-type.C
  34171c7d3f22062d3826646c0e5f1f9d  gcc/testsuite/g++.dg/plugin/show-template-tree-color.C
  4e74baf6e971213789395d81a85385e0  gcc/testsuite/g++.dg/plugin/show_template_tree_color_plugin.c
  2e53d96b8ba6ffa8b9414775da7e87f3  gcc/testsuite/g++.dg/pr100253.C
  8565710d6f77641a38bd4e09919a3fb2  gcc/testsuite/g++.dg/pr100574.C
! d3a2e291e213458826ecfcc0e5d8cd46  gcc/testsuite/g++.dg/pr100774.C
  f236ce0dc0fda54ce2f7cf384f1dc29b  gcc/testsuite/g++.dg/pr101331.C
  6f0617957144c31d2d94ce32f70bb279  gcc/testsuite/g++.dg/pr101511.C
  15e96bcd73215914d723945f149e608e  gcc/testsuite/g++.dg/pr102359_1.C
--- 25266,25285 ----
  3a80079be7a0bfd6f8efce4de8795fcb  gcc/testsuite/g++.dg/plugin/header_plugin.c
  1c30a8080468929a3cbbc7a4ef384c4c  gcc/testsuite/g++.dg/plugin/location-overflow-test-pr100796.c
  0422777feb5bb202ec0e53d6551fe397  gcc/testsuite/g++.dg/plugin/location-overflow-test-pr96391.c
! 49edc5627f9a8d4a8681c919fdc9aa49  gcc/testsuite/g++.dg/plugin/plugin.exp
  0555e81b1b7c9c8e06b4e9d9ffccb7ff  gcc/testsuite/g++.dg/plugin/pragma_plugin-test-1.C
  bb9719af4ef365b9625ed93e9794b8b2  gcc/testsuite/g++.dg/plugin/pragma_plugin.c
  503f96544096dfaa1ea93338e21923ff  gcc/testsuite/g++.dg/plugin/self-assign-test-1.C
  436d3d1e052b227d2661a53bc1d71e69  gcc/testsuite/g++.dg/plugin/self-assign-test-2.C
  e051d5cb1d92744fe18b74552249a54e  gcc/testsuite/g++.dg/plugin/self-assign-test-3.C
! 5f9b6973b5f55304febb17e03d56165d  gcc/testsuite/g++.dg/plugin/selfassign.c
  84294469facc088b7f5a63c985cf91b3  gcc/testsuite/g++.dg/plugin/show-template-tree-color-labels.C
  21bdec26dd354f6ec8377f10495a1e22  gcc/testsuite/g++.dg/plugin/show-template-tree-color-no-elide-type.C
  34171c7d3f22062d3826646c0e5f1f9d  gcc/testsuite/g++.dg/plugin/show-template-tree-color.C
  4e74baf6e971213789395d81a85385e0  gcc/testsuite/g++.dg/plugin/show_template_tree_color_plugin.c
  2e53d96b8ba6ffa8b9414775da7e87f3  gcc/testsuite/g++.dg/pr100253.C
  8565710d6f77641a38bd4e09919a3fb2  gcc/testsuite/g++.dg/pr100574.C
! fff532cdcec98c1dd1cffeb35a951441  gcc/testsuite/g++.dg/pr100774.C
  f236ce0dc0fda54ce2f7cf384f1dc29b  gcc/testsuite/g++.dg/pr101331.C
  6f0617957144c31d2d94ce32f70bb279  gcc/testsuite/g++.dg/pr101511.C
  15e96bcd73215914d723945f149e608e  gcc/testsuite/g++.dg/pr102359_1.C
*************** bc073049efd8de31a04ecce7e05f88df  gcc/te
*** 23307,23316 ****
--- 25295,25317 ----
  3fc694d366af647e9b78c02133e52da4  gcc/testsuite/g++.dg/pr103326.C
  46f210b54d7564e698736b4e327a2037  gcc/testsuite/g++.dg/pr103530.C
  c1251c5de07903c2976e214b0ce9b893  gcc/testsuite/g++.dg/pr103856.C
+ cc1a227a8a28a04643333f8b99a2571f  gcc/testsuite/g++.dg/pr104547.C
  cb3b0d87ebb06649d90f205f72680272  gcc/testsuite/g++.dg/pr104648.C
  18b9174889675eec328ca8173a24e49a  gcc/testsuite/g++.dg/pr104869.C
+ 3e13592e1bcac294620a0d0d8e6eb8a1  gcc/testsuite/g++.dg/pr104992-1.C
  152c50eb40e9677388868b9fc74192a1  gcc/testsuite/g++.dg/pr105276.C
  2fed98e7e2272502be0cfa68e9b4dca8  gcc/testsuite/g++.dg/pr105871.C
+ e42dabbcc9a6dac71e9f86241b509a36  gcc/testsuite/g++.dg/pr106219.C
+ 957aa933e540cb2a85c915d2cd613984  gcc/testsuite/g++.dg/pr106474.C
+ ed6854773d2f95643fb418f5d4eba091  gcc/testsuite/g++.dg/pr106687.C
+ bc18d70f903aab9f389e7209d70b2c1f  gcc/testsuite/g++.dg/pr106824.C
+ 30757e76cae5b927b5cfc74519b751b6  gcc/testsuite/g++.dg/pr107087.C
+ 615e8d0a920faf7e9bbd4ba42d211158  gcc/testsuite/g++.dg/pr107411.C
+ acecb79ae369db01a54d35302ff8bac3  gcc/testsuite/g++.dg/pr107803.C
+ c555871eebd38318d08e6231eacd3642  gcc/testsuite/g++.dg/pr107867.C
+ fd6634de9e7bec1226bf7939736dd6a2  gcc/testsuite/g++.dg/pr107985.C
+ 9f85b642c872ce476b819232071a1f96  gcc/testsuite/g++.dg/pr108520.C
+ f678b424d2148346313809851fbbe611  gcc/testsuite/g++.dg/pr109524.C
  2ac64817a39fe1a5c2dc328f4233cda1  gcc/testsuite/g++.dg/pr37742.C
  32b2fbda29ffd2ac2181c43c971f3a7d  gcc/testsuite/g++.dg/pr44328.C
  e43b4ea2d038b181b57782d5d56d22ba  gcc/testsuite/g++.dg/pr44486.C
*************** a925ae8e8cb9fbbaebf7c8d183952481  gcc/te
*** 23353,23358 ****
--- 25354,25360 ----
  30e309355b8a4ded0ec5e7560f1ad370  gcc/testsuite/g++.dg/pr57662.C
  b01bbf7436a5394cc1b921b12a607281  gcc/testsuite/g++.dg/pr57878.C
  511234314f9b0a3ba0b9f5c6d7080948  gcc/testsuite/g++.dg/pr58123.C
+ 92b9e21f16acadd3cb92f5e4526a6676  gcc/testsuite/g++.dg/pr58245-1.C
  1c3bb90a5b9e846331336c61b714d4a9  gcc/testsuite/g++.dg/pr58389.C
  3ec8eae79152a63de1c1e2cca524349f  gcc/testsuite/g++.dg/pr58438.C
  1afffa3d74939421dcfa7501280f88dd  gcc/testsuite/g++.dg/pr58950.C
*************** c196198d50bad93b87f24ccaf1c0ee15  gcc/te
*** 23382,23399 ****
  2925678828b854c5f2a448d4d34d8e08  gcc/testsuite/g++.dg/pr64688.C
  0f0d9bb4908d6bdb56109652b1ef4e88  gcc/testsuite/g++.dg/pr65032.C
  2a99023224d23b7b4c2df438196b9877  gcc/testsuite/g++.dg/pr65049.C
- 922496f33a9ac5ccae6f8aa317a02a67  gcc/testsuite/g++.dg/pr65240-1.C
- 8bd9fd039876f7fc1a911c89028258ff  gcc/testsuite/g++.dg/pr65240-2.C
- 5ba7c1a90046e9179ea6288129367815  gcc/testsuite/g++.dg/pr65240-3.C
- d50cfc924c3c6bfe48d010f49b0320c5  gcc/testsuite/g++.dg/pr65240-4.C
- ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.dg/pr65240.h
- 225c688c4f2ead1be77c30e05bf4245c  gcc/testsuite/g++.dg/pr65242.C
  c987d521d6ec4222a0bbaff58ae0df77  gcc/testsuite/g++.dg/pr65295.C
  20bcb78b164336c6b42304de362d905a  gcc/testsuite/g++.dg/pr66655.C
  575d8cfa0f7cc7a30ac74c14eec274d2  gcc/testsuite/g++.dg/pr66655.h
  9b717eabe7d22f65a71673e3ffc1470b  gcc/testsuite/g++.dg/pr66655_1.cc
  c014278b0e7c6cf72bd8834b1b9d6631  gcc/testsuite/g++.dg/pr66866.C
- 6e5baacb67506374f7db3dffb5272daf  gcc/testsuite/g++.dg/pr67211.C
  54fc8bd86f8a81eead6183ed98044e5e  gcc/testsuite/g++.dg/pr67351.C
  c15a8cc45a8eaf8903cfaae658dc8822  gcc/testsuite/g++.dg/pr67405.C
  61d6f57e830446105d84b6744eecd7eb  gcc/testsuite/g++.dg/pr67666.C
--- 25384,25394 ----
*************** b76c7ee65b34b2377285a776d351781b  gcc/te
*** 23419,23429 ****
  d8fba4e6baf8e0880ae882765e1135b4  gcc/testsuite/g++.dg/pr70590.C
  5c6cf3e2bb082400e2ca3d17973fdd4b  gcc/testsuite/g++.dg/pr70965.C
  0b728dae13a5f48195e47018a83c4f35  gcc/testsuite/g++.dg/pr71184.C
- 1c81a3ae2a74a3e67c56f46fd05e05ae  gcc/testsuite/g++.dg/pr71294.C
  f16de79e4d58f2cc3e59dec4e4bdcce4  gcc/testsuite/g++.dg/pr71389.C
  6b1ee9b05340152c90e7c09d5b9eb5c2  gcc/testsuite/g++.dg/pr71488.C
  c31e2e223082d89e965cb706ebd83efc  gcc/testsuite/g++.dg/pr71655.C
! e71ffaaf0dda0a585015ab52583b2b01  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
  723e9507a3916605af59b5df349ee3e5  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
--- 25414,25423 ----
  d8fba4e6baf8e0880ae882765e1135b4  gcc/testsuite/g++.dg/pr70590.C
  5c6cf3e2bb082400e2ca3d17973fdd4b  gcc/testsuite/g++.dg/pr70965.C
  0b728dae13a5f48195e47018a83c4f35  gcc/testsuite/g++.dg/pr71184.C
  f16de79e4d58f2cc3e59dec4e4bdcce4  gcc/testsuite/g++.dg/pr71389.C
  6b1ee9b05340152c90e7c09d5b9eb5c2  gcc/testsuite/g++.dg/pr71488.C
  c31e2e223082d89e965cb706ebd83efc  gcc/testsuite/g++.dg/pr71655.C
! 059c43e4ec808c046b8c56faee04d189  gcc/testsuite/g++.dg/pr71694.C
  1202ce040862ab92e1f0e7f8da8f372a  gcc/testsuite/g++.dg/pr71973-1.C
  723e9507a3916605af59b5df349ee3e5  gcc/testsuite/g++.dg/pr71973-2.C
  77a4316445a154cba3284882042820df  gcc/testsuite/g++.dg/pr71973-3.C
*************** bf14562b088e1e4c01e4050adbd18394  gcc/te
*** 23461,23468 ****
  136beb2446d7ea3b218dd029e09e25bd  gcc/testsuite/g++.dg/pr83541.C
  a8cae2d227c02ee5705e9b5b205bb1d1  gcc/testsuite/g++.dg/pr83979.C
  8528aaf5d93c3e6771dcc4828d7264b5  gcc/testsuite/g++.dg/pr84231.C
- 083c1f5c90058b5d83822264c5d52f0e  gcc/testsuite/g++.dg/pr84264.C
- 26d10f4b383162ffd9eb468d61656fe3  gcc/testsuite/g++.dg/pr84279.C
  fcd3d77f2c884effb0321a5b04ff8ca6  gcc/testsuite/g++.dg/pr84492.C
  ebc2502b64fbdf6e7c61b806ec979487  gcc/testsuite/g++.dg/pr84729.C
  75d741968e42202427b6e9c163e5c326  gcc/testsuite/g++.dg/pr84821.C
--- 25455,25460 ----
*************** e4a1820535e55911e89f64e30d107b90  gcc/te
*** 23478,23484 ****
  dcc31f0f329aae582ac1148fb671567d  gcc/testsuite/g++.dg/pr85515-1.C
  9372651820d55cf0f9bac7f42975e68c  gcc/testsuite/g++.dg/pr85515-2.C
  09e29cb5a63e29dd1a6877ef08b7e76a  gcc/testsuite/g++.dg/pr85523.C
- 2844a2c2d799ba21b91bfa9ca470fa9e  gcc/testsuite/g++.dg/pr85657.C
  77a4030bec4585a3fbb291b2cb2fd64e  gcc/testsuite/g++.dg/pr85746.C
  9a9e0c1dbf371e1a350448629ca33c6c  gcc/testsuite/g++.dg/pr86082.C
  3631c61c86e8241c79412605aacbcb35  gcc/testsuite/g++.dg/pr86159.C
--- 25470,25475 ----
*************** a632da06916027a661eebd4e506433e3  gcc/te
*** 23513,23528 ****
  9392f1da9f8e22c24888dd87d007f7b3  gcc/testsuite/g++.dg/pr92365.C
  00730c1ddad403168d9d04f13d328e21  gcc/testsuite/g++.dg/pr92370.C
  751024b9fd9d5af197249b2242be0e5b  gcc/testsuite/g++.dg/pr92542.C
! 6ccbaa9e2a98332fae31dba7420596de  gcc/testsuite/g++.dg/pr93195a.C
  7c80245d25cf6ddc4edafb1d0ab9627d  gcc/testsuite/g++.dg/pr93195b.C
  3a47aae18b4224a029e9016939955b70  gcc/testsuite/g++.dg/pr93674.C
- 68083424b21377a269cb1f4b7edce028  gcc/testsuite/g++.dg/pr93974.C
  6eca5639737684ae37b7c4be3e650f82  gcc/testsuite/g++.dg/pr94027.C
  1c2d093bc20fb04da453865d04388278  gcc/testsuite/g++.dg/pr94314-2.C
  435a4374f33be9cc7594fc57bce10ce4  gcc/testsuite/g++.dg/pr94314-3.C
  b28f1aa5479585861779a602aaf7d3f3  gcc/testsuite/g++.dg/pr94314-4.C
  fdf3135e57da2e320f80a80723315d9f  gcc/testsuite/g++.dg/pr94314.C
  482706f039139a44488ccf489c439fdd  gcc/testsuite/g++.dg/pr94666.C
  a9ce4502f1b279312e1fdca7af49461c  gcc/testsuite/g++.dg/pr95768.C
  5fa1238dc25e63c91396c8b3a76f125d  gcc/testsuite/g++.dg/pr96308.C
  ffcc5666b0bec69ad84fdd0dbbd00e5f  gcc/testsuite/g++.dg/pr96707.C
--- 25504,25520 ----
  9392f1da9f8e22c24888dd87d007f7b3  gcc/testsuite/g++.dg/pr92365.C
  00730c1ddad403168d9d04f13d328e21  gcc/testsuite/g++.dg/pr92370.C
  751024b9fd9d5af197249b2242be0e5b  gcc/testsuite/g++.dg/pr92542.C
! 9d448968bdd66869e7615957291a18cd  gcc/testsuite/g++.dg/pr93195a.C
  7c80245d25cf6ddc4edafb1d0ab9627d  gcc/testsuite/g++.dg/pr93195b.C
  3a47aae18b4224a029e9016939955b70  gcc/testsuite/g++.dg/pr93674.C
  6eca5639737684ae37b7c4be3e650f82  gcc/testsuite/g++.dg/pr94027.C
  1c2d093bc20fb04da453865d04388278  gcc/testsuite/g++.dg/pr94314-2.C
  435a4374f33be9cc7594fc57bce10ce4  gcc/testsuite/g++.dg/pr94314-3.C
  b28f1aa5479585861779a602aaf7d3f3  gcc/testsuite/g++.dg/pr94314-4.C
  fdf3135e57da2e320f80a80723315d9f  gcc/testsuite/g++.dg/pr94314.C
  482706f039139a44488ccf489c439fdd  gcc/testsuite/g++.dg/pr94666.C
+ 4419b17846f3d0998909a873040e5326  gcc/testsuite/g++.dg/pr94920-1.C
+ c8b1af02d3cb9597c3a59dc9de1fb3e3  gcc/testsuite/g++.dg/pr94920.C
  a9ce4502f1b279312e1fdca7af49461c  gcc/testsuite/g++.dg/pr95768.C
  5fa1238dc25e63c91396c8b3a76f125d  gcc/testsuite/g++.dg/pr96308.C
  ffcc5666b0bec69ad84fdd0dbbd00e5f  gcc/testsuite/g++.dg/pr96707.C
*************** c228b3ed01594ed861f4cadcaf972679  gcc/te
*** 23539,23544 ****
--- 25531,25537 ----
  4c8ee28b75b6181d48b6370da1d724c1  gcc/testsuite/g++.dg/pr98499.C
  b9c413e1dc01687c00feebd03ca30772  gcc/testsuite/g++.dg/pr99165.C
  26d6cca564c83a4cd20ad0860975aebe  gcc/testsuite/g++.dg/pr99218.C
+ 18c846d9bfa18c4adb5dc5a9eae926e9  gcc/testsuite/g++.dg/pr99966.C
  184e70d5635b77134bb901b25ccd4c61  gcc/testsuite/g++.dg/predict-1.C
  df9c1f0040c84d9c37fd8d281618f2df  gcc/testsuite/g++.dg/predict-2.C
  9eaee03e6354eabcc7fc34abc5cc11db  gcc/testsuite/g++.dg/predict-3.C
*************** b5e04568d275d9d8237df66b459409ef  gcc/te
*** 23569,23574 ****
--- 25562,25568 ----
  c27356ab2343f10d43b1a2e8626535be  gcc/testsuite/g++.dg/rtti/missing-typeinfo-include.C
  11ddfffc9b05013900dc0f7fcf21274e  gcc/testsuite/g++.dg/rtti/no-rtti-voidptr.C
  2b60e8322ecfa1d5fc0875888ebb24e2  gcc/testsuite/g++.dg/rtti/no-rtti.C
+ 8caa7d433965d490460eba48da2da97a  gcc/testsuite/g++.dg/rtti/pr109042.C
  e9bf87f7b1f007ecb7dfa626ecb78f6c  gcc/testsuite/g++.dg/rtti/pr83534.C
  352a1ba9eb698ac9c7b5ff1d691318bb  gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-1.C
  d53958b1de4c01a672e8ec50c3bfa248  gcc/testsuite/g++.dg/rtti/predefined-rtti-macro-2.C
*************** b0c0786c803eaf05e6755f729c87257e  gcc/te
*** 23594,23600 ****
  3357bf9a2204710e948cb278fb4c4266  gcc/testsuite/g++.dg/simulate-thread/atomics-2.C
  0f9193c70bd9c12ca05e5645fdd35442  gcc/testsuite/g++.dg/simulate-thread/bitfields-2.C
  f9a70819a6e534b6c462618926ea0a80  gcc/testsuite/g++.dg/simulate-thread/bitfields.C
! 07f59ac4f0cef96e569ebaff7be3fb0b  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
  c6cf9552e831a422e53a8ee8d8817449  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.gdb
  8ed1bb09d81129e522f6ac6dce99d52a  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.h
  2a467b197d39f6d623192355bbc4b5d3  gcc/testsuite/g++.dg/special/conpr-1.C
--- 25588,25594 ----
  3357bf9a2204710e948cb278fb4c4266  gcc/testsuite/g++.dg/simulate-thread/atomics-2.C
  0f9193c70bd9c12ca05e5645fdd35442  gcc/testsuite/g++.dg/simulate-thread/bitfields-2.C
  f9a70819a6e534b6c462618926ea0a80  gcc/testsuite/g++.dg/simulate-thread/bitfields.C
! f4858f4d7fb6ca6c434fa91b5efe2cd6  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.exp
  c6cf9552e831a422e53a8ee8d8817449  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.gdb
  8ed1bb09d81129e522f6ac6dce99d52a  gcc/testsuite/g++.dg/simulate-thread/simulate-thread.h
  2a467b197d39f6d623192355bbc4b5d3  gcc/testsuite/g++.dg/special/conpr-1.C
*************** ce313483756ae4ae75458a512a089656  gcc/te
*** 23604,23613 ****
  09034a812fccea6ecaa6edd2f8089fc9  gcc/testsuite/g++.dg/special/conpr-3a.cc
  0d5597e1f29008b02b626a0d09bf9c34  gcc/testsuite/g++.dg/special/conpr-3b.cc
  a0eb468046d5e36275ade20495e2f0c4  gcc/testsuite/g++.dg/special/conpr-4.C
! ba32e42ac1c06a54e1181d6ee4326da9  gcc/testsuite/g++.dg/special/ecos.exp
  d646642e04b6f7a6bb987dddc08a0268  gcc/testsuite/g++.dg/special/initp1.C
  ae5f6e9b349b6bd54b510d6f4e11eab0  gcc/testsuite/g++.dg/special/initpri1.C
  495d2d9e552898de91e04d1536c2d0bc  gcc/testsuite/g++.dg/special/initpri2.C
  0bf488203688cc3a8da411c5dff908ce  gcc/testsuite/g++.dg/spellcheck-c++-11-keyword.C
  c1046dd316dec6f0b685aa481a1b9387  gcc/testsuite/g++.dg/spellcheck-fields-2.C
  b57591402d64bc0218597be33d025525  gcc/testsuite/g++.dg/spellcheck-fields.C
--- 25598,25608 ----
  09034a812fccea6ecaa6edd2f8089fc9  gcc/testsuite/g++.dg/special/conpr-3a.cc
  0d5597e1f29008b02b626a0d09bf9c34  gcc/testsuite/g++.dg/special/conpr-3b.cc
  a0eb468046d5e36275ade20495e2f0c4  gcc/testsuite/g++.dg/special/conpr-4.C
! c5003b8c6cf9e7f47a0e702c383deb3e  gcc/testsuite/g++.dg/special/ecos.exp
  d646642e04b6f7a6bb987dddc08a0268  gcc/testsuite/g++.dg/special/initp1.C
  ae5f6e9b349b6bd54b510d6f4e11eab0  gcc/testsuite/g++.dg/special/initpri1.C
  495d2d9e552898de91e04d1536c2d0bc  gcc/testsuite/g++.dg/special/initpri2.C
+ b190d743d6318c7a50d9f43daca7f3f6  gcc/testsuite/g++.dg/special/initpri3.C
  0bf488203688cc3a8da411c5dff908ce  gcc/testsuite/g++.dg/spellcheck-c++-11-keyword.C
  c1046dd316dec6f0b685aa481a1b9387  gcc/testsuite/g++.dg/spellcheck-fields-2.C
  b57591402d64bc0218597be33d025525  gcc/testsuite/g++.dg/spellcheck-fields.C
*************** cf711ea2ac1f0a7044e001bc02282e5e  gcc/te
*** 23631,23637 ****
  7eb03d350a29bce257b72d771d908294  gcc/testsuite/g++.dg/spellcheck-typenames.C
  9ad7d6448de7763f41feba51662efa9e  gcc/testsuite/g++.dg/sso-1.C
  3effe360372112f0a4945b07676db736  gcc/testsuite/g++.dg/sso-2.C
! bd131607abeb702a0c04932a3e443c5d  gcc/testsuite/g++.dg/stackprotectexplicit2.C
  17ca6638f0ceb63bdd6e6d79da598160  gcc/testsuite/g++.dg/system-binary-constants-1.C
  e365b74306fcc009f9864598bae7a166  gcc/testsuite/g++.dg/system-binary-constants-1.h
  f660af37e71a300b94fc53e6bc686185  gcc/testsuite/g++.dg/tc1/dr1.C
--- 25626,25633 ----
  7eb03d350a29bce257b72d771d908294  gcc/testsuite/g++.dg/spellcheck-typenames.C
  9ad7d6448de7763f41feba51662efa9e  gcc/testsuite/g++.dg/sso-1.C
  3effe360372112f0a4945b07676db736  gcc/testsuite/g++.dg/sso-2.C
! fa011470540ad9d82ce9256acb7c4e4e  gcc/testsuite/g++.dg/stackprotectexplicit2.C
! 818e836e9afe37ef1ccf1f438b5cf602  gcc/testsuite/g++.dg/strict-flex-array-1.C
  17ca6638f0ceb63bdd6e6d79da598160  gcc/testsuite/g++.dg/system-binary-constants-1.C
  e365b74306fcc009f9864598bae7a166  gcc/testsuite/g++.dg/system-binary-constants-1.h
  f660af37e71a300b94fc53e6bc686185  gcc/testsuite/g++.dg/tc1/dr1.C
*************** d5229c37c43e6a9c1a45d1ec7d2bf7e5  gcc/te
*** 23700,23706 ****
  8085d28744228961aaed5d3af4e1df4e  gcc/testsuite/g++.dg/template/access34.C
  0524646845bf130c39116db60554f59c  gcc/testsuite/g++.dg/template/access35.C
  688d6bcdb9fea3206932e292dd7d0e39  gcc/testsuite/g++.dg/template/access36.C
! 332a0fdadcd28e79ffca0c295240fa57  gcc/testsuite/g++.dg/template/access37.C
  2a54b59867fdc21e69f762aca1ccbe7c  gcc/testsuite/g++.dg/template/access37a.C
  629f28b6f4a03eb3b5b1a8b07fb518c8  gcc/testsuite/g++.dg/template/access38.C
  d1ab3a2909d9d576c5dfa94f007a2714  gcc/testsuite/g++.dg/template/access39.C
--- 25696,25702 ----
  8085d28744228961aaed5d3af4e1df4e  gcc/testsuite/g++.dg/template/access34.C
  0524646845bf130c39116db60554f59c  gcc/testsuite/g++.dg/template/access35.C
  688d6bcdb9fea3206932e292dd7d0e39  gcc/testsuite/g++.dg/template/access36.C
! f41ced470a4ef2c69e52c2102e6d7d58  gcc/testsuite/g++.dg/template/access37.C
  2a54b59867fdc21e69f762aca1ccbe7c  gcc/testsuite/g++.dg/template/access37a.C
  629f28b6f4a03eb3b5b1a8b07fb518c8  gcc/testsuite/g++.dg/template/access38.C
  d1ab3a2909d9d576c5dfa94f007a2714  gcc/testsuite/g++.dg/template/access39.C
*************** e459df3ddd572b111e8694073c95e5b9  gcc/te
*** 23793,23798 ****
--- 25789,25795 ----
  e3d27e71e5cdf1b6216b87f64c98c15c  gcc/testsuite/g++.dg/template/call6.C
  4430bc3c331103d5a2ee03d64056e256  gcc/testsuite/g++.dg/template/call7.C
  e876f99b62be9e0bbabeb4b79921dc36  gcc/testsuite/g++.dg/template/call8.C
+ 5204aaa55cdce531a0a5d8b67234c0d6  gcc/testsuite/g++.dg/template/call9.C
  d7bcb12b4251a66478891aad1a8828b7  gcc/testsuite/g++.dg/template/canon-type-1.C
  ad0e0128dad7b2d09241fb6a378fc1d5  gcc/testsuite/g++.dg/template/canon-type-10.C
  839b78a8760c0ceeabf6faa7c1d3df53  gcc/testsuite/g++.dg/template/canon-type-11.C
*************** c0878730b7c8472ddb19e20d3c955b7d  gcc/te
*** 23803,23809 ****
--- 25800,25808 ----
  801f5f681e4a6ebde6aacf9306721112  gcc/testsuite/g++.dg/template/canon-type-16.C
  0df539c586b67a00ff5e8be8f9d0b057  gcc/testsuite/g++.dg/template/canon-type-17.C
  cf04b466159d8d844c08eba37f7def9e  gcc/testsuite/g++.dg/template/canon-type-18.C
+ 8a8684a65ef530bdaf771314b63d4a2d  gcc/testsuite/g++.dg/template/canon-type-19.C
  cb422094173e29b6267dd8e869190b16  gcc/testsuite/g++.dg/template/canon-type-2.C
+ 3dd8ed580e3bbe71a5b2a4cb29b2d865  gcc/testsuite/g++.dg/template/canon-type-20.C
  6dd8c537054ea8cf4d688cc3066c6c21  gcc/testsuite/g++.dg/template/canon-type-3.C
  6182badf792f2a554489f1b490e70bc3  gcc/testsuite/g++.dg/template/canon-type-4.C
  85fdca2492646ea03edf6e35b0a582d0  gcc/testsuite/g++.dg/template/canon-type-5.C
*************** cf864ea56a274c6c9a392f3a5f2f5910  gcc/te
*** 23943,23949 ****
  f58855114e5ac6f9d257056219515c0c  gcc/testsuite/g++.dg/template/crash52.C
  9e6c436bad600bf0334f12681f2caecb  gcc/testsuite/g++.dg/template/crash53.C
  dc113f6f407f869c16ea1bfd3923f2c0  gcc/testsuite/g++.dg/template/crash54.C
! 6dddaf9fbb8f05521efc07ae389d137a  gcc/testsuite/g++.dg/template/crash55.C
  9216506b0f0b8eabd9018316cc07551e  gcc/testsuite/g++.dg/template/crash56.C
  2d7d828f7348b2282589065e7789d5e8  gcc/testsuite/g++.dg/template/crash57.C
  d723188e66b53d1b47c72e45d36126b7  gcc/testsuite/g++.dg/template/crash58.C
--- 25942,25948 ----
  f58855114e5ac6f9d257056219515c0c  gcc/testsuite/g++.dg/template/crash52.C
  9e6c436bad600bf0334f12681f2caecb  gcc/testsuite/g++.dg/template/crash53.C
  dc113f6f407f869c16ea1bfd3923f2c0  gcc/testsuite/g++.dg/template/crash54.C
! b4c71957e860c755a5873bf9ad392a27  gcc/testsuite/g++.dg/template/crash55.C
  9216506b0f0b8eabd9018316cc07551e  gcc/testsuite/g++.dg/template/crash56.C
  2d7d828f7348b2282589065e7789d5e8  gcc/testsuite/g++.dg/template/crash57.C
  d723188e66b53d1b47c72e45d36126b7  gcc/testsuite/g++.dg/template/crash58.C
*************** ea031f0eed2506b6add80fa9a5f38b85  gcc/te
*** 23992,23997 ****
--- 25991,25997 ----
  04c7e0cdc041fdd2a9bee1cb186e590a  gcc/testsuite/g++.dg/template/crash98.C
  6fb58c8840c31d10b033d3d47d681397  gcc/testsuite/g++.dg/template/crash99.C
  50bb5f64947bd92da66029bd39fa5eed  gcc/testsuite/g++.dg/template/ctor1.C
+ 9a289bc8090ab09e425b2ee42adc318b  gcc/testsuite/g++.dg/template/ctor10.C
  5a69c7531482ab0af57cca8c90779073  gcc/testsuite/g++.dg/template/ctor2.C
  eb5e9f0376abe643c647f3a9d5b69532  gcc/testsuite/g++.dg/template/ctor3.C
  517013de9505a99dcece802cdd7f1c6d  gcc/testsuite/g++.dg/template/ctor4.C
*************** d94402fce12c3debaa6aa7a22d0d5261  gcc/te
*** 24135,24141 ****
  a687552bc36835830b1f2af841f44459  gcc/testsuite/g++.dg/template/error28.C
  f942827c4c8f49e463f6196ed54942bb  gcc/testsuite/g++.dg/template/error29.C
  0e96862a75ffea6e3b8357e5251534dd  gcc/testsuite/g++.dg/template/error3.C
! 502376238140e1cc91dddc2190992aba  gcc/testsuite/g++.dg/template/error30.C
  0f550f42a764725b5ef085971e281ea8  gcc/testsuite/g++.dg/template/error31.C
  95475caa3d2f02af77559820e82ebb1c  gcc/testsuite/g++.dg/template/error32.C
  237801950642a8652b123fbc000b9471  gcc/testsuite/g++.dg/template/error33.C
--- 26135,26141 ----
  a687552bc36835830b1f2af841f44459  gcc/testsuite/g++.dg/template/error28.C
  f942827c4c8f49e463f6196ed54942bb  gcc/testsuite/g++.dg/template/error29.C
  0e96862a75ffea6e3b8357e5251534dd  gcc/testsuite/g++.dg/template/error3.C
! 1ea1bf3d905fc3d87e9c5d34944c5277  gcc/testsuite/g++.dg/template/error30.C
  0f550f42a764725b5ef085971e281ea8  gcc/testsuite/g++.dg/template/error31.C
  95475caa3d2f02af77559820e82ebb1c  gcc/testsuite/g++.dg/template/error32.C
  237801950642a8652b123fbc000b9471  gcc/testsuite/g++.dg/template/error33.C
*************** d7dd197474ca91bf31cfac374404267d  gcc/te
*** 24171,24176 ****
--- 26171,26180 ----
  3eacbecd65bcd0b71a23a9e2127f6e27  gcc/testsuite/g++.dg/template/error7.C
  c9b240f0c05d21fb3eecb76bae171790  gcc/testsuite/g++.dg/template/error8.C
  140297b8d72a104b762af1a4e390e9ec  gcc/testsuite/g++.dg/template/error9.C
+ 34905a18bcb702533341ddb00e6cad18  gcc/testsuite/g++.dg/template/evaluated1.C
+ f5e5168334e9f8a56f897aca011b18bc  gcc/testsuite/g++.dg/template/evaluated1a.C
+ 50bc0a97a97fa5c2c2800944c0fb1b33  gcc/testsuite/g++.dg/template/evaluated1b.C
+ 719747cd4786978e50ef99b4212abb15  gcc/testsuite/g++.dg/template/evaluated1c.C
  e55630cc11be91571d5b580292e51090  gcc/testsuite/g++.dg/template/explicit-args1.C
  8c9d021c07761a64a71d7ed3a6cbd9f8  gcc/testsuite/g++.dg/template/explicit-args2.C
  231648bc12e1dfdeee041e3845e82de6  gcc/testsuite/g++.dg/template/explicit-args3.C
*************** c516af6d3dbacce330102f6926ee7107  gcc/te
*** 24182,24187 ****
--- 26186,26192 ----
  6335a6cb9fd88717c1c31d2bc8b80c3e  gcc/testsuite/g++.dg/template/explicit-instantiation2.C
  7c2daced476ed6b72c25a10611af9a2c  gcc/testsuite/g++.dg/template/explicit-instantiation3.C
  4e37a54564809d4cd3d149349f378941  gcc/testsuite/g++.dg/template/explicit-instantiation4.C
+ 2272cd92b5c114b457626eb6e3f44b3c  gcc/testsuite/g++.dg/template/explicit-instantiation5.C
  610a5ce174887479710ddef7e050b0e9  gcc/testsuite/g++.dg/template/explicit1.C
  44f3a8f925589bae9dc773b19a3fd2de  gcc/testsuite/g++.dg/template/explicit2.C
  3b0207ca15de6320946949f657d95b9a  gcc/testsuite/g++.dg/template/explicit3.C
*************** f8aa89e0edae3ef78836a8cc046f0550  gcc/te
*** 24197,24202 ****
--- 26202,26210 ----
  fe166f987dc66815758e22b930f6d98b  gcc/testsuite/g++.dg/template/fn-ptr1.C
  bf4059583f0cb76eb21c8462cd632142  gcc/testsuite/g++.dg/template/fn-ptr2.C
  d48db96d165a20e7398ea0f7e9cd00c3  gcc/testsuite/g++.dg/template/fn-ptr3.C
+ b705911769b4dedde26fc55666525547  gcc/testsuite/g++.dg/template/fn-ptr3a.C
+ b21023a383690906d31ed5c2f45cd122  gcc/testsuite/g++.dg/template/fn-ptr3b.C
+ 2137f89260c82e219c89d76cc24abafa  gcc/testsuite/g++.dg/template/fn-ptr4.C
  636ef7c6b9de68376146848db023fb19  gcc/testsuite/g++.dg/template/fn-ref1.C
  f85ab66eeb2b191e2fee2b0b5013d956  gcc/testsuite/g++.dg/template/fn.C
  1581f9141ad183d6d31a009275ebf7a4  gcc/testsuite/g++.dg/template/fnspec1.C
*************** e149357d205dbd99b9633575f81b34c7  gcc/te
*** 24269,24275 ****
  134eb1fa2dfe0e7e1737c002d17c7781  gcc/testsuite/g++.dg/template/friend66.C
  f8b96612d216a7b190f337247c8e8315  gcc/testsuite/g++.dg/template/friend67.C
  5fd10061d799b3da808888d5834b1df1  gcc/testsuite/g++.dg/template/friend68.C
! 58712e229c64b951fc1f50272bfd28f5  gcc/testsuite/g++.dg/template/friend69.C
  1d4f923241bfe8578940f39c34f80d7c  gcc/testsuite/g++.dg/template/friend7.C
  33f91697bdb7e2294d13e7eb88e92b55  gcc/testsuite/g++.dg/template/friend70.C
  20f36227317bf6bb8a652c05ab8aac80  gcc/testsuite/g++.dg/template/friend71.C
--- 26277,26283 ----
  134eb1fa2dfe0e7e1737c002d17c7781  gcc/testsuite/g++.dg/template/friend66.C
  f8b96612d216a7b190f337247c8e8315  gcc/testsuite/g++.dg/template/friend67.C
  5fd10061d799b3da808888d5834b1df1  gcc/testsuite/g++.dg/template/friend68.C
! bd0f521c596d8807aa8d76b10716d619  gcc/testsuite/g++.dg/template/friend69.C
  1d4f923241bfe8578940f39c34f80d7c  gcc/testsuite/g++.dg/template/friend7.C
  33f91697bdb7e2294d13e7eb88e92b55  gcc/testsuite/g++.dg/template/friend70.C
  20f36227317bf6bb8a652c05ab8aac80  gcc/testsuite/g++.dg/template/friend71.C
*************** eb97b845951649a22172514806d1ef72  gcc/te
*** 24440,24445 ****
--- 26448,26454 ----
  dd5106154e8f9fa0866be1a1283b490e  gcc/testsuite/g++.dg/template/new10.C
  8a3716757b496de374cb6d6a4f5b6a64  gcc/testsuite/g++.dg/template/new11.C
  22fdea7e0d8c7b43828d7f57e62f8723  gcc/testsuite/g++.dg/template/new12.C
+ 69a4aec7bac75f5a56b81d4d1ce80d37  gcc/testsuite/g++.dg/template/new13.C
  b8243d46589815a568bb0992cb04adec  gcc/testsuite/g++.dg/template/new2.C
  96809d2309b18f883a007f6f203fcd45  gcc/testsuite/g++.dg/template/new3.C
  dd1a46f35db3a9b5825a9179ac010e0c  gcc/testsuite/g++.dg/template/new4.C
*************** eb35e1face3b65b2aae71fc55558b420  gcc/te
*** 24523,24528 ****
--- 26532,26538 ----
  997b3c61e3112d55ee07873992fbec86  gcc/testsuite/g++.dg/template/operator13.C
  5fe3703cb59160fb82cf953a2d646ffb  gcc/testsuite/g++.dg/template/operator14.C
  df382df64c960f4f5c75fdc847fa49d2  gcc/testsuite/g++.dg/template/operator15.C
+ 49a174c7a3bd9712eb56aeaa67019b2e  gcc/testsuite/g++.dg/template/operator16.C
  08eba0ef43fd418e3505a0132a2e9c05  gcc/testsuite/g++.dg/template/operator2.C
  51da64bb1a35e2d4a874ecc36ed30236  gcc/testsuite/g++.dg/template/operator3.C
  7e567ad662951a97d90d67420df1d001  gcc/testsuite/g++.dg/template/operator4.C
*************** c58b2d32f1995ef6c37b087328d5049d  gcc/te
*** 24557,24562 ****
--- 26567,26573 ----
  cf88c333627b0b71c493b6375c6b9286  gcc/testsuite/g++.dg/template/parm-cv3.C
  486d4c5a4f5f81e0939deae14d55e933  gcc/testsuite/g++.dg/template/partial-order1.C
  ae5d48999739c18e13002880ad3cd978  gcc/testsuite/g++.dg/template/partial-order2.C
+ a1c1a1990e3a2880c059ff1f334dbfc4  gcc/testsuite/g++.dg/template/partial-order3.C
  e187a317d102d915368fe357726202ba  gcc/testsuite/g++.dg/template/partial-specialization.C
  dff775a30f72a8e3c0ef1db583a1ea7b  gcc/testsuite/g++.dg/template/partial-specialization10.C
  9ba8631cf52f4ca9887f51f7e2a0dee4  gcc/testsuite/g++.dg/template/partial-specialization11.C
*************** af2b317af1f920fbca6b70a32297df09  gcc/te
*** 24590,24595 ****
--- 26601,26607 ----
  27869f98e951e86a28a79500f1a221da  gcc/testsuite/g++.dg/template/partial7.C
  2b23d416282107a906fcf6e2b3a898e7  gcc/testsuite/g++.dg/template/partial8.C
  9fc092b7f4cd096177059593553e523e  gcc/testsuite/g++.dg/template/partial9.C
+ 14967698fd85bf0506454b2df17f8d2a  gcc/testsuite/g++.dg/template/pr108206.C
  1cb28c70209f6da9c6fd5dc25fde1e1a  gcc/testsuite/g++.dg/template/pr16564.C
  ada1f30ea7c959c2a12b240ba308c1bf  gcc/testsuite/g++.dg/template/pr17410.C
  d87951fd4d4a384028f64a2c9e34ee94  gcc/testsuite/g++.dg/template/pr18969-2.C
*************** d7e997028da5485d49789a1ed367286f  gcc/te
*** 24711,24716 ****
--- 26723,26729 ----
  8b3ff42e1ac7c25a72ae099a1bdd30cd  gcc/testsuite/g++.dg/template/ptrmem30.C
  4a5c12efa02380f96bed041f831c9b80  gcc/testsuite/g++.dg/template/ptrmem31.C
  8469f0a5fd87c7edea1ce86836b6bbaf  gcc/testsuite/g++.dg/template/ptrmem32.C
+ 3b49005292f85001f897f8ff5d7bac7e  gcc/testsuite/g++.dg/template/ptrmem33.C
  9a4a21b8504db815b1c727663eff64ff  gcc/testsuite/g++.dg/template/ptrmem4.C
  c1d71028a4f69f5c3fcfd2fd8a35f919  gcc/testsuite/g++.dg/template/ptrmem5.C
  0142354fd9237d4486fb0edc36ef39cc  gcc/testsuite/g++.dg/template/ptrmem6.C
*************** c6c126721707d148ce66066de06c754b  gcc/te
*** 24763,24769 ****
  e5547a0a17e476f40de83fdf6f7b297f  gcc/testsuite/g++.dg/template/ref10.C
  55ce57535ea4f812b4b3a2be7cafa6c4  gcc/testsuite/g++.dg/template/ref11.C
  a02f5612e9219b8cd807bc11c6baa86d  gcc/testsuite/g++.dg/template/ref2.C
! 03590f95ff079c31de0f7962f9d2850e  gcc/testsuite/g++.dg/template/ref3.C
  c3bbc6f642a26de6b3238750b8f9c01f  gcc/testsuite/g++.dg/template/ref4.C
  506e5f8f23105cf0257a836058d1806b  gcc/testsuite/g++.dg/template/ref5.C
  be5ada7fe947b5c46a81b039d0695560  gcc/testsuite/g++.dg/template/ref6.C
--- 26776,26782 ----
  e5547a0a17e476f40de83fdf6f7b297f  gcc/testsuite/g++.dg/template/ref10.C
  55ce57535ea4f812b4b3a2be7cafa6c4  gcc/testsuite/g++.dg/template/ref11.C
  a02f5612e9219b8cd807bc11c6baa86d  gcc/testsuite/g++.dg/template/ref2.C
! 3fe7102cd5d7b48abace464974ca16c3  gcc/testsuite/g++.dg/template/ref3.C
  c3bbc6f642a26de6b3238750b8f9c01f  gcc/testsuite/g++.dg/template/ref4.C
  506e5f8f23105cf0257a836058d1806b  gcc/testsuite/g++.dg/template/ref5.C
  be5ada7fe947b5c46a81b039d0695560  gcc/testsuite/g++.dg/template/ref6.C
*************** df17c39af3a33df1f3370cca4ca51b18  gcc/te
*** 24806,24811 ****
--- 26819,26825 ----
  7f378098b4a82d5d47518ed450e9113c  gcc/testsuite/g++.dg/template/sfinae31.C
  4ecb18193c506692934a47b3527683c5  gcc/testsuite/g++.dg/template/sfinae32.C
  f1a145fcd62b5f844470ea87991cdb7b  gcc/testsuite/g++.dg/template/sfinae32a.C
+ a4b43543445ce0064c2504d6c310580b  gcc/testsuite/g++.dg/template/sfinae33.C
  14c823d80f9e1e49b0085a00aa357406  gcc/testsuite/g++.dg/template/sfinae4.C
  d489a85672b2d956beff65b15b095039  gcc/testsuite/g++.dg/template/sfinae5.C
  2622d4a8e2409cf748878b7d2db89477  gcc/testsuite/g++.dg/template/sfinae6.C
*************** eff4a38049a6b02f4545e91036c5fce8  gcc/te
*** 24967,24976 ****
  d0358242f59f83c835c6f294b4b63d99  gcc/testsuite/g++.dg/template/ttp34.C
  f1061bfe9cbd4c443a0c7f071ebe178b  gcc/testsuite/g++.dg/template/ttp34a.C
  c9fdebc946ad552adbe984f19d967fb6  gcc/testsuite/g++.dg/template/ttp34b.C
  ab6711e26bfa413d472fc55475e7cc75  gcc/testsuite/g++.dg/template/ttp4.C
  786176b167efb2fb05f5876afccf4ea7  gcc/testsuite/g++.dg/template/ttp5.C
  ede8e95c1aeeeb0cf1c4cfb0fd860e07  gcc/testsuite/g++.dg/template/ttp6.C
! 8ef73a0d2fb7b35129f101b657888692  gcc/testsuite/g++.dg/template/ttp7.C
  ad156dec50f1d7aecc0ad4207046c838  gcc/testsuite/g++.dg/template/ttp8.C
  32ec8290dcb76d620e429687f0236c40  gcc/testsuite/g++.dg/template/ttp9.C
  611da7a9ecc28370c069f827531c1a03  gcc/testsuite/g++.dg/template/type1.C
--- 26981,26992 ----
  d0358242f59f83c835c6f294b4b63d99  gcc/testsuite/g++.dg/template/ttp34.C
  f1061bfe9cbd4c443a0c7f071ebe178b  gcc/testsuite/g++.dg/template/ttp34a.C
  c9fdebc946ad552adbe984f19d967fb6  gcc/testsuite/g++.dg/template/ttp34b.C
+ 03aefa933585cedfd0df2b9ccf14d362  gcc/testsuite/g++.dg/template/ttp35.C
+ da2a51af53cbc854115bee0af8932ed9  gcc/testsuite/g++.dg/template/ttp36.C
  ab6711e26bfa413d472fc55475e7cc75  gcc/testsuite/g++.dg/template/ttp4.C
  786176b167efb2fb05f5876afccf4ea7  gcc/testsuite/g++.dg/template/ttp5.C
  ede8e95c1aeeeb0cf1c4cfb0fd860e07  gcc/testsuite/g++.dg/template/ttp6.C
! a523aab467e9f1ab808cb852a6429393  gcc/testsuite/g++.dg/template/ttp7.C
  ad156dec50f1d7aecc0ad4207046c838  gcc/testsuite/g++.dg/template/ttp8.C
  32ec8290dcb76d620e429687f0236c40  gcc/testsuite/g++.dg/template/ttp9.C
  611da7a9ecc28370c069f827531c1a03  gcc/testsuite/g++.dg/template/type1.C
*************** ed9372cf56fbc13b47d33c9145d1e02c  gcc/te
*** 25034,25039 ****
--- 27050,27060 ----
  331317e575027725a91f3ca79535e495  gcc/testsuite/g++.dg/template/typename21.C
  3aa0f96082caf4a3387f62e5bf838e85  gcc/testsuite/g++.dg/template/typename22.C
  7977d6d210f57215d68afe73ad6ab35f  gcc/testsuite/g++.dg/template/typename23.C
+ ebd5addc2ee6a03f88d2ba3519a1dde7  gcc/testsuite/g++.dg/template/typename24.C
+ 1beebde50ca9063af3a83980bff0ff52  gcc/testsuite/g++.dg/template/typename25.C
+ e2587a40fb672baa729d2f8083fe246f  gcc/testsuite/g++.dg/template/typename25a.C
+ fc7b7853a5f7a95f421a1d0cf6ab7009  gcc/testsuite/g++.dg/template/typename26.C
+ d2dcd3650658067025919b306be088a5  gcc/testsuite/g++.dg/template/typename27.C
  462be480a1ce1e091374b678ce018264  gcc/testsuite/g++.dg/template/typename3.C
  e539dae13a2fcf8c5c897799294fa8f0  gcc/testsuite/g++.dg/template/typename4.C
  657b2e18e1c5bda47ab17e796163c009  gcc/testsuite/g++.dg/template/typename5.C
*************** f7e4853292654f0af6a0a460b8924add  gcc/te
*** 25161,25166 ****
--- 27182,27191 ----
  6e16acccf0c9f3e11f613dd140679e49  gcc/testsuite/g++.dg/tls/thread_local12j.C
  9eb8b3d800f83f9d7d869d484abd19e6  gcc/testsuite/g++.dg/tls/thread_local12k.C
  b6d15debf41ad15b105889629ec239cc  gcc/testsuite/g++.dg/tls/thread_local12l.C
+ 172557168cbc67b1f30728843273661b  gcc/testsuite/g++.dg/tls/thread_local13-aux.cc
+ f872c9bb06d86928cee03742631d043b  gcc/testsuite/g++.dg/tls/thread_local13.C
+ 55b421ef887d033e9d55b24ecf73ba9a  gcc/testsuite/g++.dg/tls/thread_local14-aux.cc
+ 10f422a7b298c551b33dc01dd37d0089  gcc/testsuite/g++.dg/tls/thread_local14.C
  24b7dce2c6b463d883c54b5a853ce0ad  gcc/testsuite/g++.dg/tls/thread_local2.C
  6c980c168dd76bd2823f2ec310b5f47b  gcc/testsuite/g++.dg/tls/thread_local2g.C
  6c7d3f08d2224c4d24f97029d8604655  gcc/testsuite/g++.dg/tls/thread_local3.C
*************** cf26e329259baed2e3c2675d10b71343  gcc/te
*** 25175,25181 ****
  3aecfa587091ae9e3524d10e3013ccf0  gcc/testsuite/g++.dg/tls/thread_local7g.C
  9399e18da7889fb7fc5333e641e339e4  gcc/testsuite/g++.dg/tls/thread_local8.C
  46eb3382c1226c7ec68020221453058a  gcc/testsuite/g++.dg/tls/thread_local9.C
! cd38ceee0d36b0fce45f86e5de14dc60  gcc/testsuite/g++.dg/tls/tls.exp
  86479ffee518e8ec862d5e9dcaa9866f  gcc/testsuite/g++.dg/tls/tls_model1.C
  7212556766805451a098e554a8ab648e  gcc/testsuite/g++.dg/tls/trivial.C
  debf53c602437e43da099fa943834a84  gcc/testsuite/g++.dg/tm/20100429.C
--- 27200,27206 ----
  3aecfa587091ae9e3524d10e3013ccf0  gcc/testsuite/g++.dg/tls/thread_local7g.C
  9399e18da7889fb7fc5333e641e339e4  gcc/testsuite/g++.dg/tls/thread_local8.C
  46eb3382c1226c7ec68020221453058a  gcc/testsuite/g++.dg/tls/thread_local9.C
! 1ce5755050241b89c45e31ad912b2674  gcc/testsuite/g++.dg/tls/tls.exp
  86479ffee518e8ec862d5e9dcaa9866f  gcc/testsuite/g++.dg/tls/tls_model1.C
  7212556766805451a098e554a8ab648e  gcc/testsuite/g++.dg/tls/trivial.C
  debf53c602437e43da099fa943834a84  gcc/testsuite/g++.dg/tm/20100429.C
*************** b8417aa0335eeb4b3381d508ea7f5c38  gcc/te
*** 25255,25261 ****
  8ee54951fa048ab382ca2cdb618a0489  gcc/testsuite/g++.dg/tm/template-3.C
  90fa076ea202f452e01e1b4dcbe98e33  gcc/testsuite/g++.dg/tm/template-4.C
  0b77afa8d842f0a0b08d94321879afc3  gcc/testsuite/g++.dg/tm/template-5.C
! e87221d16e64dd90db50a3302f9d2c9b  gcc/testsuite/g++.dg/tm/tm.exp
  74d340d87dae689e01101883f8aa0e51  gcc/testsuite/g++.dg/tm/unsafe1.C
  21a5d2c89779740daec0728828afc1e7  gcc/testsuite/g++.dg/tm/unsafe2.C
  6c44d3ee04abacf4b43b2418345ac8d3  gcc/testsuite/g++.dg/tm/vector-1.C
--- 27280,27286 ----
  8ee54951fa048ab382ca2cdb618a0489  gcc/testsuite/g++.dg/tm/template-3.C
  90fa076ea202f452e01e1b4dcbe98e33  gcc/testsuite/g++.dg/tm/template-4.C
  0b77afa8d842f0a0b08d94321879afc3  gcc/testsuite/g++.dg/tm/template-5.C
! 81871bb83c51036a6eac1f246d108e13  gcc/testsuite/g++.dg/tm/tm.exp
  74d340d87dae689e01101883f8aa0e51  gcc/testsuite/g++.dg/tm/unsafe1.C
  21a5d2c89779740daec0728828afc1e7  gcc/testsuite/g++.dg/tm/unsafe2.C
  6c44d3ee04abacf4b43b2418345ac8d3  gcc/testsuite/g++.dg/tm/vector-1.C
*************** cba46ba0e799162dc4863891ff25ded3  gcc/te
*** 25270,25275 ****
--- 27295,27301 ----
  8e57d382980230ca521d366b656b79bc  gcc/testsuite/g++.dg/torture/20121105-1.C
  6170b6412c56e4e8b9acf5fec85b85ad  gcc/testsuite/g++.dg/torture/20141013.C
  817906803d35f56621dc188401ae1c1b  gcc/testsuite/g++.dg/torture/20180705-1.C
+ 1fde243d05b2be503da4fa14df055b7e  gcc/testsuite/g++.dg/torture/20230313.C
  080ecc95e15ea3b4ed02e0e24c727d53  gcc/testsuite/g++.dg/torture/PR58294.C
  fcec9f16b462c0dbbbf999c903573c12  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess1.C
  e0639b0af892e171cf6f37f580a2f9fc  gcc/testsuite/g++.dg/torture/Wsizeof-pointer-memaccess2.C
*************** a311bc7bf2311aa8855ffbd171dc6632  gcc/te
*** 25293,25300 ****
--- 27319,27328 ----
  12bbc31ebdb5389852fb19dbc0efd9b4  gcc/testsuite/g++.dg/torture/covariant-1.C
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/g++.dg/torture/darwin-cfstring-3.C
  4a0b418d1bbb783ee191f2d05263d191  gcc/testsuite/g++.dg/torture/dg-torture.exp
+ 2fcf42acf195dc5d57cc2374b8d8baa8  gcc/testsuite/g++.dg/torture/except-1.C
  fab1470d87fc879a4a285622c057b736  gcc/testsuite/g++.dg/torture/init-list1.C
  4054dd6c177ca7971902e3ac60e34695  gcc/testsuite/g++.dg/torture/ipa-cp-1.C
+ f7837cd1e7b0fe610ef272ba2fc3896b  gcc/testsuite/g++.dg/torture/phi-1.C
  dd60ebe4e09cf5edd91dd360bcbcba8e  gcc/testsuite/g++.dg/torture/ppc-ldst-array.C
  3a32f1508211597859da662863730a83  gcc/testsuite/g++.dg/torture/pr100303.C
  bcfa60433b43854760763807c6d1e968  gcc/testsuite/g++.dg/torture/pr100382.C
*************** e0f2cfb1a1f922a19280efa88e1e5f1c  gcc/te
*** 25318,25323 ****
--- 27346,27358 ----
  55421b614773ff9e900b6ad17ffe7df3  gcc/testsuite/g++.dg/torture/pr105189.C
  2f5be7c92fa23dea959ab17d5b766c87  gcc/testsuite/g++.dg/torture/pr105577.C
  42b175a7c38d6a15012b0e11d9e7457d  gcc/testsuite/g++.dg/torture/pr106131.C
+ fc3fe3397beb9b946ff024ad76a8ccbc  gcc/testsuite/g++.dg/torture/pr106922.C
+ 969b42bbb4cb9492e8474f8e7a941812  gcc/testsuite/g++.dg/torture/pr107029.C
+ fa23934e49741783f674026ff5030aff  gcc/testsuite/g++.dg/torture/pr108166.C
+ 60b41cff18886e9134d2385735087ca2  gcc/testsuite/g++.dg/torture/pr108647.C
+ 23e30e4218daf5839a22e1a835dc139d  gcc/testsuite/g++.dg/torture/pr108888.C
+ 37a8e4f74ae63207e9b1619c6f44a43a  gcc/testsuite/g++.dg/torture/pr109262.C
+ e8eff4c0ef885b002db007e536bb99f2  gcc/testsuite/g++.dg/torture/pr109342.C
  161154ed9f6193a2a7da119e068c3f3f  gcc/testsuite/g++.dg/torture/pr27218.C
  a84e9fff95df4801f8e582fbc33303b8  gcc/testsuite/g++.dg/torture/pr30252.C
  e980bf95890544d46879b89f7aa98df6  gcc/testsuite/g++.dg/torture/pr30567.C
*************** dad5f6df8311295c4832533334c84d00  gcc/te
*** 25502,25507 ****
--- 27537,27543 ----
  9a98404f2bdaa970f43c1300bb87cc27  gcc/testsuite/g++.dg/torture/pr53693.C
  ff4072f62ae5ddefa538d5777a2ff63c  gcc/testsuite/g++.dg/torture/pr53752.C
  fbe94bcf48ad5e7374ea220cc3ae42c0  gcc/testsuite/g++.dg/torture/pr53970.C
+ 4ffbd8e21d67aeb78f41df023d61e307  gcc/testsuite/g++.dg/torture/pr54498.C
  223cbe0817bf9dd882b64bfda782f806  gcc/testsuite/g++.dg/torture/pr54563.C
  dc106f856185dd3ee7cfdb5a86571091  gcc/testsuite/g++.dg/torture/pr54647.C
  dedc14a5f4caa87ea494123f2002de83  gcc/testsuite/g++.dg/torture/pr54684.C
*************** dbe58e15424b476b932c58cb5bc16046  gcc/te
*** 25715,25720 ****
--- 27751,27757 ----
  922274fa2bea46eb7cee843b1f139ab8  gcc/testsuite/g++.dg/torture/pr90194.C
  38d5ed9578a5910b56d57c30c896f01f  gcc/testsuite/g++.dg/torture/pr90313.cc
  8f37bcbeb67682110bfb7b989631551a  gcc/testsuite/g++.dg/torture/pr90982.C
+ bd0e252d81e8fe6df182d804fa7e51d1  gcc/testsuite/g++.dg/torture/pr90994.C
  c09ff981d388790529f959a054685551  gcc/testsuite/g++.dg/torture/pr91155.C
  25acdead98815c5c152ccee9449f6ab0  gcc/testsuite/g++.dg/torture/pr91270.C
  8512e0d79849c3153a1290024a552a14  gcc/testsuite/g++.dg/torture/pr91280.C
*************** cae456330f7461197045e0a2f5fa12ce  gcc/te
*** 25756,25762 ****
  798d1fe29ec407f8783626ddb0d01446  gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C
  ac2b625997ec285af8b6598167ada1fa  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C
  5e58161ad482c690ceda702d708037b4  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C
! 702639d85c6ab9692c8cce7a04ee7da7  gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
  b1433c47f1b3510e41343cb1176ab88e  gcc/testsuite/g++.dg/torture/stackalign/stdcall-1.C
  b01a92d8302c9dc593001dd53f236dcf  gcc/testsuite/g++.dg/torture/stackalign/test-unwind.h
  46c8c72894cd196236d1548df5c8b779  gcc/testsuite/g++.dg/torture/stackalign/throw-1.C
--- 27793,27799 ----
  798d1fe29ec407f8783626ddb0d01446  gcc/testsuite/g++.dg/torture/stackalign/eh-thiscall-1.C
  ac2b625997ec285af8b6598167ada1fa  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-1.C
  5e58161ad482c690ceda702d708037b4  gcc/testsuite/g++.dg/torture/stackalign/eh-vararg-2.C
! a5d95b519cd49c0af4e07fcc7096b73e  gcc/testsuite/g++.dg/torture/stackalign/stackalign.exp
  b1433c47f1b3510e41343cb1176ab88e  gcc/testsuite/g++.dg/torture/stackalign/stdcall-1.C
  b01a92d8302c9dc593001dd53f236dcf  gcc/testsuite/g++.dg/torture/stackalign/test-unwind.h
  46c8c72894cd196236d1548df5c8b779  gcc/testsuite/g++.dg/torture/stackalign/throw-1.C
*************** e5c358735afed9e9c54950b2b1516563  gcc/te
*** 25810,25823 ****
  3e4967b80142545b6a4d840a9e18f3b3  gcc/testsuite/g++.dg/tree-prof/reorder.C
  45ee371a772198109e5e2acb3f7c0f0b  gcc/testsuite/g++.dg/tree-prof/reorder_class1.h
  3dacd3cf3baf954cf35437e3859e7171  gcc/testsuite/g++.dg/tree-prof/reorder_class2.h
! 6fa635c5a5417b86b038672d89d93a4c  gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
  2a1f9c8b1ccb241e4745f1e06c56fac3  gcc/testsuite/g++.dg/tree-ssa/20040317-1.C
  7dda69fb98d47a720fec9044146ebd16  gcc/testsuite/g++.dg/tree-ssa/aggregate1.C
  9b3694af0b6195c5c10b4b0caa6af5a4  gcc/testsuite/g++.dg/tree-ssa/alias-access-path-1.C
  b08c03e3cfb53a5fe650ed3f65313c3a  gcc/testsuite/g++.dg/tree-ssa/array-temp1.C
  08d69e786b9ad4d3160a39a0d5e489fa  gcc/testsuite/g++.dg/tree-ssa/block1.C
  92014ea122d687546fe3649560d8b2a7  gcc/testsuite/g++.dg/tree-ssa/builtin1.C
  713d6b942f1fdfec168122607d26adf6  gcc/testsuite/g++.dg/tree-ssa/calloc.C
  96f78e0eceff770431ee91e38866bb06  gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
  976b25599ddf8018c866aa1c66d6dba9  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
  87d33077dde5db2d1e9e001bd82dc9cd  gcc/testsuite/g++.dg/tree-ssa/counts-1.C
--- 27847,27862 ----
  3e4967b80142545b6a4d840a9e18f3b3  gcc/testsuite/g++.dg/tree-prof/reorder.C
  45ee371a772198109e5e2acb3f7c0f0b  gcc/testsuite/g++.dg/tree-prof/reorder_class1.h
  3dacd3cf3baf954cf35437e3859e7171  gcc/testsuite/g++.dg/tree-prof/reorder_class2.h
! f7c1a1a82f10b261e79fbe6fd69af77b  gcc/testsuite/g++.dg/tree-prof/tree-prof.exp
  2a1f9c8b1ccb241e4745f1e06c56fac3  gcc/testsuite/g++.dg/tree-ssa/20040317-1.C
  7dda69fb98d47a720fec9044146ebd16  gcc/testsuite/g++.dg/tree-ssa/aggregate1.C
  9b3694af0b6195c5c10b4b0caa6af5a4  gcc/testsuite/g++.dg/tree-ssa/alias-access-path-1.C
+ 0364cc382ec425485afd71c350ae6c46  gcc/testsuite/g++.dg/tree-ssa/allocator-opt1.C
  b08c03e3cfb53a5fe650ed3f65313c3a  gcc/testsuite/g++.dg/tree-ssa/array-temp1.C
  08d69e786b9ad4d3160a39a0d5e489fa  gcc/testsuite/g++.dg/tree-ssa/block1.C
  92014ea122d687546fe3649560d8b2a7  gcc/testsuite/g++.dg/tree-ssa/builtin1.C
  713d6b942f1fdfec168122607d26adf6  gcc/testsuite/g++.dg/tree-ssa/calloc.C
+ 77eae20bc535d63c8ba5e78f1753ad4f  gcc/testsuite/g++.dg/tree-ssa/cond-temp1.C
  96f78e0eceff770431ee91e38866bb06  gcc/testsuite/g++.dg/tree-ssa/copyprop-1.C
  976b25599ddf8018c866aa1c66d6dba9  gcc/testsuite/g++.dg/tree-ssa/copyprop.C
  87d33077dde5db2d1e9e001bd82dc9cd  gcc/testsuite/g++.dg/tree-ssa/counts-1.C
*************** f47eaa2d8002496a7b4b7724ca81009b  gcc/te
*** 25828,25834 ****
  7a59e09c4cb65bda7874f5d6af01a6f5  gcc/testsuite/g++.dg/tree-ssa/empty-1.C
  6ca719a4fb53798313a64270ae55a047  gcc/testsuite/g++.dg/tree-ssa/empty-2.C
  5496cb6269663cf7b6e1734a3a939fd8  gcc/testsuite/g++.dg/tree-ssa/empty-3.C
! 30d62968cde95850619635c86d34f5c3  gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
  87bbb4a55dd7abc95e6b9094f8fa9d5c  gcc/testsuite/g++.dg/tree-ssa/final1.C
  e7acf0a7b027c556c76317572440f052  gcc/testsuite/g++.dg/tree-ssa/final2.C
  3c696786eeb4bd40f02526c5787fb676  gcc/testsuite/g++.dg/tree-ssa/final3.C
--- 27867,27873 ----
  7a59e09c4cb65bda7874f5d6af01a6f5  gcc/testsuite/g++.dg/tree-ssa/empty-1.C
  6ca719a4fb53798313a64270ae55a047  gcc/testsuite/g++.dg/tree-ssa/empty-2.C
  5496cb6269663cf7b6e1734a3a939fd8  gcc/testsuite/g++.dg/tree-ssa/empty-3.C
! 9682f3c6e0f5c89f14e2a48000e526eb  gcc/testsuite/g++.dg/tree-ssa/empty-loop.C
  87bbb4a55dd7abc95e6b9094f8fa9d5c  gcc/testsuite/g++.dg/tree-ssa/final1.C
  e7acf0a7b027c556c76317572440f052  gcc/testsuite/g++.dg/tree-ssa/final2.C
  3c696786eeb4bd40f02526c5787fb676  gcc/testsuite/g++.dg/tree-ssa/final3.C
*************** bca63426f4323897c7869d093f089d80  gcc/te
*** 25837,25842 ****
--- 27876,27884 ----
  9c918af3cab5a77ccdb922ddbdb9c126  gcc/testsuite/g++.dg/tree-ssa/forwprop-switch.C
  64c09190e248a41f55f2136c28fdea69  gcc/testsuite/g++.dg/tree-ssa/fwprop-align.C
  8bb6414e80e2b42a36361d40348b3534  gcc/testsuite/g++.dg/tree-ssa/if-to-switch-1.C
+ 4dee88733af9764407daef44d97d6ea0  gcc/testsuite/g++.dg/tree-ssa/initlist-opt1.C
+ 7f93f0a7fb5af2dd6932d9ff18f9b668  gcc/testsuite/g++.dg/tree-ssa/initlist-opt2.C
+ d12a46c580eb9d4dc235d3622d0f89b4  gcc/testsuite/g++.dg/tree-ssa/initlist-opt3.C
  127599cd2fc99b9d009cc2cd103b0b2e  gcc/testsuite/g++.dg/tree-ssa/inline-1.C
  05007feb9baa282cc5097a6f8208ee56  gcc/testsuite/g++.dg/tree-ssa/inline-2.C
  dc09af43ca9827d657db7f2b91897bea  gcc/testsuite/g++.dg/tree-ssa/inline-3.C
*************** c8003cf8b272bb11f8a21275b9e5c595  gcc/te
*** 25857,25866 ****
--- 27899,27915 ----
  6474aef48daec343e8355cccf7ae5d56  gcc/testsuite/g++.dg/tree-ssa/phiopt-1.C
  daf046d4911258823d8a9f8947354f8c  gcc/testsuite/g++.dg/tree-ssa/pointer-reference-alias.C
  38a84cee75caf37cd532dd21e3d1fc85  gcc/testsuite/g++.dg/tree-ssa/pr101769.C
+ 8b1686b7e8a4861fed6d268a9cf3cf19  gcc/testsuite/g++.dg/tree-ssa/pr101839.C
  7837e8067b44742d47649f2f8b536584  gcc/testsuite/g++.dg/tree-ssa/pr102216-1.C
  1a99806d72062cb909c91fe385b75643  gcc/testsuite/g++.dg/tree-ssa/pr102216-2.C
  b43892ed3a0294f440ccfdc4017d74ed  gcc/testsuite/g++.dg/tree-ssa/pr103168.C
  4f4b9d993ed3cb39bcc4613af0e55332  gcc/testsuite/g++.dg/tree-ssa/pr104529.C
+ 0da5cc881991f624b7192f3ce86049c0  gcc/testsuite/g++.dg/tree-ssa/pr105820.c
+ 20608e2a01aa2fdaa469216feb542314  gcc/testsuite/g++.dg/tree-ssa/pr106077.C
+ 125bd6cdf57dfa5b982bd279950874f3  gcc/testsuite/g++.dg/tree-ssa/pr106922.C
+ f95e009eb80810faddca573e232d899e  gcc/testsuite/g++.dg/tree-ssa/pr106936.C
+ 473b75bc40f72c03a042a150d43cb69b  gcc/testsuite/g++.dg/tree-ssa/pr107206.C
+ 5f9aef2211a5b0981f2a79d22debe366  gcc/testsuite/g++.dg/tree-ssa/pr107876.C
  482a64ed60783060cd1097d55e09aa68  gcc/testsuite/g++.dg/tree-ssa/pr13146.C
  e92faf794746371f0e92e8a68244ff5e  gcc/testsuite/g++.dg/tree-ssa/pr13954.C
  316b32deb2433fa7d0e4ad1c5a62804b  gcc/testsuite/g++.dg/tree-ssa/pr14703.C
*************** b7fb5b853f7854c141799346f2354a0c  gcc/te
*** 25934,25940 ****
  8aea640c13c12833067fe21f2796f0ab  gcc/testsuite/g++.dg/tree-ssa/pr28238.C
  376ebc3d295f82c1a09d3726e5adb664  gcc/testsuite/g++.dg/tree-ssa/pr29902.C
  9ba7a3040603a45fb04631498ba8894c  gcc/testsuite/g++.dg/tree-ssa/pr30738.C
! 61052fabe4d162cf6a2af7be3489a981  gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C
  5ecc94721fc6b658cc6ddbdb37dc1489  gcc/testsuite/g++.dg/tree-ssa/pr31146.C
  b39514536a29fff0b9033f022be8908b  gcc/testsuite/g++.dg/tree-ssa/pr31307.C
  22dcd80f01872c86b3e1268b90f33072  gcc/testsuite/g++.dg/tree-ssa/pr33593.C
--- 27983,27989 ----
  8aea640c13c12833067fe21f2796f0ab  gcc/testsuite/g++.dg/tree-ssa/pr28238.C
  376ebc3d295f82c1a09d3726e5adb664  gcc/testsuite/g++.dg/tree-ssa/pr29902.C
  9ba7a3040603a45fb04631498ba8894c  gcc/testsuite/g++.dg/tree-ssa/pr30738.C
! 60066444cabbcacc6bee5234a2d907c4  gcc/testsuite/g++.dg/tree-ssa/pr31146-2.C
  5ecc94721fc6b658cc6ddbdb37dc1489  gcc/testsuite/g++.dg/tree-ssa/pr31146.C
  b39514536a29fff0b9033f022be8908b  gcc/testsuite/g++.dg/tree-ssa/pr31307.C
  22dcd80f01872c86b3e1268b90f33072  gcc/testsuite/g++.dg/tree-ssa/pr33593.C
*************** cb1020cc1be52a08fe1719b557fc0fc6  gcc/te
*** 25999,26005 ****
  c0b65a34728bd0641ed11250d156dd96  gcc/testsuite/g++.dg/tree-ssa/pr83518.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
  61fe56181a8e9245b77fd272e9912ecd  gcc/testsuite/g++.dg/tree-ssa/pr86062.C
! 39af726ca8012f85160b6180dd60017f  gcc/testsuite/g++.dg/tree-ssa/pr86544.C
  b275e1ed3abd90cc7e8e421e8c6062b9  gcc/testsuite/g++.dg/tree-ssa/pr87008.C
  cfcb017784f2c8d78d4dc8299526d486  gcc/testsuite/g++.dg/tree-ssa/pr87436.C
  ea4e143932bfcde8a35c6a9f47ca6cde  gcc/testsuite/g++.dg/tree-ssa/pr87686.C
--- 28048,28054 ----
  c0b65a34728bd0641ed11250d156dd96  gcc/testsuite/g++.dg/tree-ssa/pr83518.C
  99096ec4f30fcdb55089995ea662cded  gcc/testsuite/g++.dg/tree-ssa/pr83523.C
  61fe56181a8e9245b77fd272e9912ecd  gcc/testsuite/g++.dg/tree-ssa/pr86062.C
! 33c3ca116bd47b630a440a6f2c7764db  gcc/testsuite/g++.dg/tree-ssa/pr86544.C
  b275e1ed3abd90cc7e8e421e8c6062b9  gcc/testsuite/g++.dg/tree-ssa/pr87008.C
  cfcb017784f2c8d78d4dc8299526d486  gcc/testsuite/g++.dg/tree-ssa/pr87436.C
  ea4e143932bfcde8a35c6a9f47ca6cde  gcc/testsuite/g++.dg/tree-ssa/pr87686.C
*************** cbba22e9568932c7e9798b4143e8babf  gcc/te
*** 26043,26048 ****
--- 28092,28099 ----
  948d00fc979cc2bd7b0f86e83a4eb496  gcc/testsuite/g++.dg/tree-ssa/strlenopt-2.C
  2a5935f325533fa199bc7f5e3b2b36d5  gcc/testsuite/g++.dg/tree-ssa/tail-call-1.C
  0fb08fd6d187247ae5872931e884061c  gcc/testsuite/g++.dg/tree-ssa/tmmti.C
+ d0016ead88409af28f506089528155ae  gcc/testsuite/g++.dg/tree-ssa/value-expr1.C
+ ee5f35c1e0d0183f37f4bef5ff673e11  gcc/testsuite/g++.dg/tree-ssa/value-expr2.C
  67826d6c8638dba46a4b37835998f34a  gcc/testsuite/g++.dg/tree-ssa/volatile1.C
  927ac273b42ce90eecf5fb0ad135f1c0  gcc/testsuite/g++.dg/tree-ssa/volatile2.C
  2f2cb4fe0eb03e7d7bb6cb25c9e775b0  gcc/testsuite/g++.dg/tsan/aligned_vs_unaligned_race.C
*************** cd932ca55aa9252a2188bb383ac82ed7  gcc/te
*** 26057,26063 ****
  96f255f38a0cb7c1f48e01e6e96d0abf  gcc/testsuite/g++.dg/tsan/pr80110.C
  ba8b56e337f98c3bdfc0402e0dac484a  gcc/testsuite/g++.dg/tsan/pr88018.C
  f7cc5e2f9d147758fb8abe92b561f4e8  gcc/testsuite/g++.dg/tsan/pthread_cond_clockwait.C
! 9727afd6a8832645ef17f13c675ff682  gcc/testsuite/g++.dg/tsan/tsan.exp
  1048d0e6a3ca80d3b4720a445847e7cb  gcc/testsuite/g++.dg/tsan/tsan_barrier.h
  4a8a525549940ddd77b19875ffb1bcc6  gcc/testsuite/g++.dg/tsan/vptr_benign_race.C
  580f9f0da39034a82858b2ac3acfb1dc  gcc/testsuite/g++.dg/tsan/vptr_harmful_race.C
--- 28108,28114 ----
  96f255f38a0cb7c1f48e01e6e96d0abf  gcc/testsuite/g++.dg/tsan/pr80110.C
  ba8b56e337f98c3bdfc0402e0dac484a  gcc/testsuite/g++.dg/tsan/pr88018.C
  f7cc5e2f9d147758fb8abe92b561f4e8  gcc/testsuite/g++.dg/tsan/pthread_cond_clockwait.C
! f70c7434b41fe37f2e554262051d5d18  gcc/testsuite/g++.dg/tsan/tsan.exp
  1048d0e6a3ca80d3b4720a445847e7cb  gcc/testsuite/g++.dg/tsan/tsan_barrier.h
  4a8a525549940ddd77b19875ffb1bcc6  gcc/testsuite/g++.dg/tsan/vptr_benign_race.C
  580f9f0da39034a82858b2ac3acfb1dc  gcc/testsuite/g++.dg/tsan/vptr_harmful_race.C
*************** edd0f3a5f8a8fc672ad606424b99556e  gcc/te
*** 26066,26071 ****
--- 28117,28123 ----
  2f3fe688d6c3cf6cb8662e809944b816  gcc/testsuite/g++.dg/ubsan/align-3.C
  091303ac6b23c180ed41c610ac00741d  gcc/testsuite/g++.dg/ubsan/align-4.C
  a5c9a4af6ba744a4f85e714099331f92  gcc/testsuite/g++.dg/ubsan/attrib-1.C
+ f96e4068b33a7bfcae6d57a1ae97a9f6  gcc/testsuite/g++.dg/ubsan/bounds-1.C
  e0dd5668236c82185e44268a5d7921e7  gcc/testsuite/g++.dg/ubsan/cxx11-shift-1.C
  858f50197cab1823688292dba8b98ab7  gcc/testsuite/g++.dg/ubsan/cxx11-shift-2.C
  e3958cfc5fa0a6b48d8b57dd246957cd  gcc/testsuite/g++.dg/ubsan/cxx2a-shift-1.C
*************** c05485082568567a8bc2c41519fc374b  gcc/te
*** 26154,26164 ****
  97027d455c8b2512011502382e6c1745  gcc/testsuite/g++.dg/ubsan/return-5.C
  ce973542ab3756eba13870ee1f67fdef  gcc/testsuite/g++.dg/ubsan/return-6.C
  385aeb0a9dc0f6b2efe5243cd43b2738  gcc/testsuite/g++.dg/ubsan/return-7.C
  ceefdce8629af65f842f11d82ad86264  gcc/testsuite/g++.dg/ubsan/shift-1.C
  a512113af0ac3172f2466ee3a8c93259  gcc/testsuite/g++.dg/ubsan/static-init-1.C
  b1a38b150fef25f02239b481561ad148  gcc/testsuite/g++.dg/ubsan/static-init-2.C
  76c5d965e0f0683fddef3a001be6193c  gcc/testsuite/g++.dg/ubsan/static-init-3.C
! 20c3104ab79db6aca177698bb0a40e3d  gcc/testsuite/g++.dg/ubsan/ubsan.exp
  cc0dd6c9b1afc04ca7636be396fec990  gcc/testsuite/g++.dg/ubsan/vla-1.C
  f36d3df10de7d616fdeaf6bd08060535  gcc/testsuite/g++.dg/ubsan/vla-2.C
  5217088a7dd4248f6e9f0170ee0f262b  gcc/testsuite/g++.dg/ubsan/vptr-1.C
--- 28206,28221 ----
  97027d455c8b2512011502382e6c1745  gcc/testsuite/g++.dg/ubsan/return-5.C
  ce973542ab3756eba13870ee1f67fdef  gcc/testsuite/g++.dg/ubsan/return-6.C
  385aeb0a9dc0f6b2efe5243cd43b2738  gcc/testsuite/g++.dg/ubsan/return-7.C
+ 02df9206b49f7069ca83bf0c0da7272d  gcc/testsuite/g++.dg/ubsan/return-8.C
+ b39128103e08759e8cd3b8389694291c  gcc/testsuite/g++.dg/ubsan/return-8a.C
+ 1c3f582532558868a6b3229f1ca171e9  gcc/testsuite/g++.dg/ubsan/return-8b.C
+ 7fe8fc2e4987ab1c33bf66c3aa1b1f6f  gcc/testsuite/g++.dg/ubsan/return-8d.C
+ d75059eb61a22414e7eb61c8073c2833  gcc/testsuite/g++.dg/ubsan/return-8e.C
  ceefdce8629af65f842f11d82ad86264  gcc/testsuite/g++.dg/ubsan/shift-1.C
  a512113af0ac3172f2466ee3a8c93259  gcc/testsuite/g++.dg/ubsan/static-init-1.C
  b1a38b150fef25f02239b481561ad148  gcc/testsuite/g++.dg/ubsan/static-init-2.C
  76c5d965e0f0683fddef3a001be6193c  gcc/testsuite/g++.dg/ubsan/static-init-3.C
! b5e70fbc56e8fb94243bcaa9527c939e  gcc/testsuite/g++.dg/ubsan/ubsan.exp
  cc0dd6c9b1afc04ca7636be396fec990  gcc/testsuite/g++.dg/ubsan/vla-1.C
  f36d3df10de7d616fdeaf6bd08060535  gcc/testsuite/g++.dg/ubsan/vla-2.C
  5217088a7dd4248f6e9f0170ee0f262b  gcc/testsuite/g++.dg/ubsan/vptr-1.C
*************** dcd9726dc8b4e6083387751cc9d6254d  gcc/te
*** 26173,26184 ****
  1968a8f982e5990a850fcae723fa33cc  gcc/testsuite/g++.dg/ubsan/vptr-18.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
! 84fc9de739270361f7c7a0069392a74e  gcc/testsuite/g++.dg/ubsan/vptr-4.C
  9447dcebd783299ea53e3b00d2a1d05d  gcc/testsuite/g++.dg/ubsan/vptr-5.C
  5f0e63af9fa7453e9da50b162d2b6bf2  gcc/testsuite/g++.dg/ubsan/vptr-6.C
  be256b721153266207c19c200b69e403  gcc/testsuite/g++.dg/ubsan/vptr-7.C
  46d3d7c5be428e6ff1218aa017f38d54  gcc/testsuite/g++.dg/ubsan/vptr-8.C
  d84ccb64e326e6f939102655055da75e  gcc/testsuite/g++.dg/ubsan/vptr-9.C
  d2e64a4a0ecb590f25f40402647fb5a3  gcc/testsuite/g++.dg/uninit-pr74762.C
  bc857364cab52e462e2e718cd7fefaa8  gcc/testsuite/g++.dg/uninit-pred-1_a.C
  6b26b973249421d830f2fec8a5610837  gcc/testsuite/g++.dg/uninit-pred-1_b.C
--- 28230,28244 ----
  1968a8f982e5990a850fcae723fa33cc  gcc/testsuite/g++.dg/ubsan/vptr-18.C
  cef046f562c0a23eb331cea94cd5b44f  gcc/testsuite/g++.dg/ubsan/vptr-2.C
  729147822cd9bf5bf718456c1dbff28d  gcc/testsuite/g++.dg/ubsan/vptr-3.C
! c56c0a2d56d1483bfcbff6562ca6a84a  gcc/testsuite/g++.dg/ubsan/vptr-4.C
  9447dcebd783299ea53e3b00d2a1d05d  gcc/testsuite/g++.dg/ubsan/vptr-5.C
  5f0e63af9fa7453e9da50b162d2b6bf2  gcc/testsuite/g++.dg/ubsan/vptr-6.C
  be256b721153266207c19c200b69e403  gcc/testsuite/g++.dg/ubsan/vptr-7.C
  46d3d7c5be428e6ff1218aa017f38d54  gcc/testsuite/g++.dg/ubsan/vptr-8.C
  d84ccb64e326e6f939102655055da75e  gcc/testsuite/g++.dg/ubsan/vptr-9.C
+ edb153ed13cda8739722c1dec0db46c7  gcc/testsuite/g++.dg/uninit-pr105646.C
+ 38ddc42ac8ea24c4180b07e3b5b6c41b  gcc/testsuite/g++.dg/uninit-pr105937.C
+ e56682f2381efdb19cee3b25fd54bb34  gcc/testsuite/g++.dg/uninit-pr106722-1.C
  d2e64a4a0ecb590f25f40402647fb5a3  gcc/testsuite/g++.dg/uninit-pr74762.C
  bc857364cab52e462e2e718cd7fefaa8  gcc/testsuite/g++.dg/uninit-pred-1_a.C
  6b26b973249421d830f2fec8a5610837  gcc/testsuite/g++.dg/uninit-pred-1_b.C
*************** c299a2e8f2fcb74286fbc4d6d1cf115d  gcc/te
*** 26187,26192 ****
--- 28247,28253 ----
  5786bf78cee1b70c9836b60ec34f42ba  gcc/testsuite/g++.dg/uninit-pred-3_a.C
  e7062d8b8ae34f0a4f8b5b407e180316  gcc/testsuite/g++.dg/uninit-pred-3_b.C
  5ee1b7f723d2f67283e9a5a7eb0c38f1  gcc/testsuite/g++.dg/uninit-pred-4.C
+ d403029994bed5e01d1267a0905e9d3c  gcc/testsuite/g++.dg/uninit-pred-5.C
  2fcbc57bdfc93414220095e1211dcd11  gcc/testsuite/g++.dg/uninit-pred-loop-1_a.C
  9a63e9b5506271a4e3d1932baef3c60c  gcc/testsuite/g++.dg/uninit-pred-loop-1_b.C
  03f4073fa87ba95286c70ed7ad57b553  gcc/testsuite/g++.dg/uninit-pred-loop-1_c.C
*************** bb3b906322f73b1bfddaab3658a0314e  gcc/te
*** 26202,26207 ****
--- 28263,28271 ----
  5cc7bcb3384dda5ac9ed1595171888bf  gcc/testsuite/g++.dg/vect/pr105053.cc
  333be91f77cee11284aa46108024ad5e  gcc/testsuite/g++.dg/vect/pr105254.cc
  13bc7912af5a3fc0b482bebcd1a313b8  gcc/testsuite/g++.dg/vect/pr105437.cc
+ 9228e757c42c560668ce2fcc584c6768  gcc/testsuite/g++.dg/vect/pr106794.cc
+ 6a3f27d6cc59523d994a5f1a6e68286a  gcc/testsuite/g++.dg/vect/pr106841.cc
+ 68c0b9dd93bac5121c5b637904764ca8  gcc/testsuite/g++.dg/vect/pr107766.cc
  02ab0e7dea4c30ddeaecb971c0b8241e  gcc/testsuite/g++.dg/vect/pr19951.cc
  e7c5a636a280962b70166d1494223f9c  gcc/testsuite/g++.dg/vect/pr21218.cc
  9a0a6f56bdb2cc697abc78c901418a19  gcc/testsuite/g++.dg/vect/pr21734_1.cc
*************** f9ec9f29d29198d0fd2269ad44e55b21  gcc/te
*** 26233,26239 ****
  4665de842fe7961eed5fad345695a420  gcc/testsuite/g++.dg/vect/pr60836.cc
  b7b79e1c6424f4373d8f860593191fd9  gcc/testsuite/g++.dg/vect/pr60896.cc
  2de94c5a0cf4dc2ff2b7fb5f335afddf  gcc/testsuite/g++.dg/vect/pr61171.cc
! e61f16419adb6ed9aef99bd3303db30a  gcc/testsuite/g++.dg/vect/pr64410.cc
  be3798224f4845a3175e6668c613f712  gcc/testsuite/g++.dg/vect/pr68145.cc
  6888446339ac8d82c16a8c1d1ff2253f  gcc/testsuite/g++.dg/vect/pr68762-1.cc
  5c7fd9083bc5eecf88828a3e8041163f  gcc/testsuite/g++.dg/vect/pr68762-2.cc
--- 28297,28303 ----
  4665de842fe7961eed5fad345695a420  gcc/testsuite/g++.dg/vect/pr60836.cc
  b7b79e1c6424f4373d8f860593191fd9  gcc/testsuite/g++.dg/vect/pr60896.cc
  2de94c5a0cf4dc2ff2b7fb5f335afddf  gcc/testsuite/g++.dg/vect/pr61171.cc
! 353dacc50249784b051638a414829e4c  gcc/testsuite/g++.dg/vect/pr64410.cc
  be3798224f4845a3175e6668c613f712  gcc/testsuite/g++.dg/vect/pr68145.cc
  6888446339ac8d82c16a8c1d1ff2253f  gcc/testsuite/g++.dg/vect/pr68762-1.cc
  5c7fd9083bc5eecf88828a3e8041163f  gcc/testsuite/g++.dg/vect/pr68762-2.cc
*************** dc35acb0f3b80c07fb4789cb89eb09b2  gcc/te
*** 26247,26253 ****
  57ec4c770d54501152de549d1dd29844  gcc/testsuite/g++.dg/vect/pr84556.cc
  179d2cf91ba3eb321a9c8dc0e19457fc  gcc/testsuite/g++.dg/vect/pr87621.cc
  6f2e63784179305f0c880851e4919fe0  gcc/testsuite/g++.dg/vect/pr87914.cc
! f43552c44ef4b1c173b99eef9aa263d8  gcc/testsuite/g++.dg/vect/pr89653.cc
  e3c0964a70677f56a2eccf0db300d710  gcc/testsuite/g++.dg/vect/pr92595.cc
  61256228c999b0fe6df91a3666bfd697  gcc/testsuite/g++.dg/vect/pr95290.cc
  76acf1f17c191c2e7f29bb8bfda15df9  gcc/testsuite/g++.dg/vect/pr95297.cc
--- 28311,28317 ----
  57ec4c770d54501152de549d1dd29844  gcc/testsuite/g++.dg/vect/pr84556.cc
  179d2cf91ba3eb321a9c8dc0e19457fc  gcc/testsuite/g++.dg/vect/pr87621.cc
  6f2e63784179305f0c880851e4919fe0  gcc/testsuite/g++.dg/vect/pr87914.cc
! 404f245256bcbfa4c6c43189ad964b2a  gcc/testsuite/g++.dg/vect/pr89653.cc
  e3c0964a70677f56a2eccf0db300d710  gcc/testsuite/g++.dg/vect/pr92595.cc
  61256228c999b0fe6df91a3666bfd697  gcc/testsuite/g++.dg/vect/pr95290.cc
  76acf1f17c191c2e7f29bb8bfda15df9  gcc/testsuite/g++.dg/vect/pr95297.cc
*************** b8fb5b23ece050421d669915c600780b  gcc/te
*** 26296,26313 ****
  06bbcfadea2fee02b417d4dadcb3d241  gcc/testsuite/g++.dg/vect/slp-pr98855.cc
  cd8c6e5cf62f7909f63f4516114ba39c  gcc/testsuite/g++.dg/vect/slp-pr99971.cc
  474ba1e8afc259a33d5d37ef2c18cf22  gcc/testsuite/g++.dg/vect/vec-cond-expr-eh.C
! 4adc68b9aa6a516c1c4680fdaee33148  gcc/testsuite/g++.dg/vect/vect.exp
  71d10a285587bb46cc1bf1ab339fa743  gcc/testsuite/g++.dg/warn/83895.C
  daeef1989c46da48d17102900d28c0c7  gcc/testsuite/g++.dg/warn/Waddress-1.C
  76f33c61a70fa23046bdab31539d3229  gcc/testsuite/g++.dg/warn/Waddress-2.C
  ed2324232decd497351f560a041de128  gcc/testsuite/g++.dg/warn/Waddress-3.C
  dc053c634cf498503fefe544d38cf6bd  gcc/testsuite/g++.dg/warn/Waddress-4.C
! 3184b0e7ee124a608dd149e10fb0f927  gcc/testsuite/g++.dg/warn/Waddress-5.C
  94176442e0035daabf1057e70c9b69fb  gcc/testsuite/g++.dg/warn/Waddress-6.C
  fcac9b73ac8cbfd48e4e11bb0babbb2f  gcc/testsuite/g++.dg/warn/Waddress-7.C
  c18412e7f733b11c25c87e0fa6292752  gcc/testsuite/g++.dg/warn/Waddress-8.C
  f70b05c7c6da2eb1e388cdb09831d355  gcc/testsuite/g++.dg/warn/Waddress-of-packed-member1.C
  7e2363ecaf57d636dba9be32a29d05fa  gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C
  38c1d3bcd70aac8e2e1f0e19b075e6a9  gcc/testsuite/g++.dg/warn/Wall-write-strings.C
  37d0be0d56d9e0aa2b1a4c10c166ffd2  gcc/testsuite/g++.dg/warn/Walways-true-1.C
  2bb8416db71e09d2c32b48ff9fe3eb8c  gcc/testsuite/g++.dg/warn/Walways-true-2.C
--- 28360,28379 ----
  06bbcfadea2fee02b417d4dadcb3d241  gcc/testsuite/g++.dg/vect/slp-pr98855.cc
  cd8c6e5cf62f7909f63f4516114ba39c  gcc/testsuite/g++.dg/vect/slp-pr99971.cc
  474ba1e8afc259a33d5d37ef2c18cf22  gcc/testsuite/g++.dg/vect/vec-cond-expr-eh.C
! d6bf7448ccc43f801c548ce33e85d5af  gcc/testsuite/g++.dg/vect/vect.exp
  71d10a285587bb46cc1bf1ab339fa743  gcc/testsuite/g++.dg/warn/83895.C
  daeef1989c46da48d17102900d28c0c7  gcc/testsuite/g++.dg/warn/Waddress-1.C
  76f33c61a70fa23046bdab31539d3229  gcc/testsuite/g++.dg/warn/Waddress-2.C
  ed2324232decd497351f560a041de128  gcc/testsuite/g++.dg/warn/Waddress-3.C
  dc053c634cf498503fefe544d38cf6bd  gcc/testsuite/g++.dg/warn/Waddress-4.C
! 9126470c0a06ea5a37488fa1fecd626d  gcc/testsuite/g++.dg/warn/Waddress-5.C
  94176442e0035daabf1057e70c9b69fb  gcc/testsuite/g++.dg/warn/Waddress-6.C
  fcac9b73ac8cbfd48e4e11bb0babbb2f  gcc/testsuite/g++.dg/warn/Waddress-7.C
  c18412e7f733b11c25c87e0fa6292752  gcc/testsuite/g++.dg/warn/Waddress-8.C
+ 11a1b78f09fa3436ab74ae129fb291f6  gcc/testsuite/g++.dg/warn/Waddress-9.C
  f70b05c7c6da2eb1e388cdb09831d355  gcc/testsuite/g++.dg/warn/Waddress-of-packed-member1.C
  7e2363ecaf57d636dba9be32a29d05fa  gcc/testsuite/g++.dg/warn/Waddress-of-packed-member2.C
+ fcffb8ec200cbeecab3b66fcd62fca53  gcc/testsuite/g++.dg/warn/Waddress-of-packed-member3.C
  38c1d3bcd70aac8e2e1f0e19b075e6a9  gcc/testsuite/g++.dg/warn/Wall-write-strings.C
  37d0be0d56d9e0aa2b1a4c10c166ffd2  gcc/testsuite/g++.dg/warn/Walways-true-1.C
  2bb8416db71e09d2c32b48ff9fe3eb8c  gcc/testsuite/g++.dg/warn/Walways-true-2.C
*************** d53003b93dc25906e11f3f1291fb8a1d  gcc/te
*** 26338,26343 ****
--- 28404,28410 ----
  2dd5f5327b10ed709f19f591b16a7848  gcc/testsuite/g++.dg/warn/Warray-bounds-7.C
  d7cbf62602ce3f0fa143eaedf4981bb9  gcc/testsuite/g++.dg/warn/Warray-bounds-8.C
  6eeb1f365add4be4bdb7ddd36c65ac44  gcc/testsuite/g++.dg/warn/Warray-bounds-9.C
+ 404736f3786e412f10598b365ba4917e  gcc/testsuite/g++.dg/warn/Warray-bounds-pr104165-1.C
  2d6a670b4e83bb7433e838e5b33398be  gcc/testsuite/g++.dg/warn/Warray-bounds.C
  060f3f7d5c9e12d3ee82fa6b0a768523  gcc/testsuite/g++.dg/warn/Warray-bounds15.C
  d9be18151631c99a55837fcc6f6ada21  gcc/testsuite/g++.dg/warn/Wbool-operation-1.C
*************** d15107f3d840c1f7539a3dc2f640a5df  gcc/te
*** 26356,26362 ****
--- 28423,28435 ----
  405a43ec2fe3003f95668d54092d08b1  gcc/testsuite/g++.dg/warn/Wchar-subscripts.C
  f9f3693c109e335911bc80e8396e0c60  gcc/testsuite/g++.dg/warn/Wclass-conversion1.C
  d1f9d6bf90b8f6a0b12581bcdadaf0cc  gcc/testsuite/g++.dg/warn/Wclass-conversion2.C
+ f2143b28e578a3bad2b2e83b50e55a09  gcc/testsuite/g++.dg/warn/Wclass-memaccess-2.C
+ 8beea6608726e30b4c6e45d68c7fd049  gcc/testsuite/g++.dg/warn/Wclass-memaccess-3.C
+ a870375da7bcd4c5c455867aab227d04  gcc/testsuite/g++.dg/warn/Wclass-memaccess-4.C
+ 4ba67574e50be395fe4f4c58eaac86a7  gcc/testsuite/g++.dg/warn/Wclass-memaccess-5.C
+ b0d394df2af420d13fbc302b3902dc22  gcc/testsuite/g++.dg/warn/Wclass-memaccess-6.C
  a1de6b04521ef70bac619958562f4c5c  gcc/testsuite/g++.dg/warn/Wclass-memaccess-7.C
+ 0c178f0e8203956145410ea9b44f7409  gcc/testsuite/g++.dg/warn/Wclass-memaccess.C
  91fa9d535a67070a0cbd4728cca02222  gcc/testsuite/g++.dg/warn/Wconditionally-supported-1.C
  0a5318e679484e4c698dc3557ca77477  gcc/testsuite/g++.dg/warn/Wconversion-integer.C
  6cdba00d4fc0e7d2742e63c92a31a3df  gcc/testsuite/g++.dg/warn/Wconversion-null-2.C
*************** bc62ca5d41c48fc463c9f801cf992f38  gcc/te
*** 26369,26375 ****
  576bee0a7ec892ed245bd67b3471168c  gcc/testsuite/g++.dg/warn/Wconversion-pr94067.C
  6187fc4b2bc68062cfde710d71cc6791  gcc/testsuite/g++.dg/warn/Wconversion-real-integer-3.C
  83f25a4a0c15a025b671a5728685be6c  gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C
! 736c0fc05f17bc3cebde2b3749d2c04e  gcc/testsuite/g++.dg/warn/Wconversion-real-integer2.C
  d10152133e840d3699814c5271083357  gcc/testsuite/g++.dg/warn/Wconversion1.C
  aeadbc7507b32cb0295c0b4fb7b26084  gcc/testsuite/g++.dg/warn/Wconversion2.C
  bd809ba5b78959a32e5c921c83c4f02b  gcc/testsuite/g++.dg/warn/Wconversion3.C
--- 28442,28448 ----
  576bee0a7ec892ed245bd67b3471168c  gcc/testsuite/g++.dg/warn/Wconversion-pr94067.C
  6187fc4b2bc68062cfde710d71cc6791  gcc/testsuite/g++.dg/warn/Wconversion-real-integer-3.C
  83f25a4a0c15a025b671a5728685be6c  gcc/testsuite/g++.dg/warn/Wconversion-real-integer.C
! 96a09f4a9ebc0fd0302d137947776a1d  gcc/testsuite/g++.dg/warn/Wconversion-real-integer2.C
  d10152133e840d3699814c5271083357  gcc/testsuite/g++.dg/warn/Wconversion1.C
  aeadbc7507b32cb0295c0b4fb7b26084  gcc/testsuite/g++.dg/warn/Wconversion2.C
  bd809ba5b78959a32e5c921c83c4f02b  gcc/testsuite/g++.dg/warn/Wconversion3.C
*************** a1916c2510751afdcbb293e075fc4b79  gcc/te
*** 26382,26392 ****
  0f6b09801c09e79156b9009cc3a19adc  gcc/testsuite/g++.dg/warn/Wctad-maybe-unsupported4.C
  2d2da24222711602624d6870a966c8b0  gcc/testsuite/g++.dg/warn/Wctor-dtor.C
  b75d4f8883c7ddd7a04229eea603e6d3  gcc/testsuite/g++.dg/warn/Wctor-dtor2.C
! 9db1cf26d0b90c23744fe71b3745d007  gcc/testsuite/g++.dg/warn/Wdangling-pointer-2.C
  ac355f312027ebf3e91d21475ab4e796  gcc/testsuite/g++.dg/warn/Wdangling-pointer-3.C
  04389df734f9e345759f783a9ae88097  gcc/testsuite/g++.dg/warn/Wdangling-pointer-4.C
  7665878652e47fd15f97fc1fbda21d1e  gcc/testsuite/g++.dg/warn/Wdangling-pointer-5.C
! 3c62bc574bc5f258ee0353c4ce2e9a85  gcc/testsuite/g++.dg/warn/Wdangling-pointer.C
  81f664dba5a025cdc726a4ce39403653  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-1.C
  e5cc13e8f74ebb47c678a7c5745e57a8  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-2.C
  1a61a88751379aff79eff4189d8d053d  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-3.C
--- 28455,28478 ----
  0f6b09801c09e79156b9009cc3a19adc  gcc/testsuite/g++.dg/warn/Wctad-maybe-unsupported4.C
  2d2da24222711602624d6870a966c8b0  gcc/testsuite/g++.dg/warn/Wctor-dtor.C
  b75d4f8883c7ddd7a04229eea603e6d3  gcc/testsuite/g++.dg/warn/Wctor-dtor2.C
! d5f8bff89c5d5feb9f6cae7e686a57a0  gcc/testsuite/g++.dg/warn/Wdangling-pointer-2.C
  ac355f312027ebf3e91d21475ab4e796  gcc/testsuite/g++.dg/warn/Wdangling-pointer-3.C
  04389df734f9e345759f783a9ae88097  gcc/testsuite/g++.dg/warn/Wdangling-pointer-4.C
  7665878652e47fd15f97fc1fbda21d1e  gcc/testsuite/g++.dg/warn/Wdangling-pointer-5.C
! 50d0cc7c4a63b7eca1ce1af43573c771  gcc/testsuite/g++.dg/warn/Wdangling-pointer-6.C
! 086c0900031416d8c18a5290f0242617  gcc/testsuite/g++.dg/warn/Wdangling-pointer.C
! a5c82e451d68d995d7f3bdc2c840dc43  gcc/testsuite/g++.dg/warn/Wdangling-reference1.C
! 9d04fe182e8e2bb211d04ab0870e673d  gcc/testsuite/g++.dg/warn/Wdangling-reference10.C
! bf07c61e5674247801eb597fb9faca8a  gcc/testsuite/g++.dg/warn/Wdangling-reference11.C
! 1845787c3d3902f727e3dad43e0fb5ac  gcc/testsuite/g++.dg/warn/Wdangling-reference12.C
! 340821be1cf2e197db157ef7a58a35ba  gcc/testsuite/g++.dg/warn/Wdangling-reference2.C
! a66ef981e5fcee8dcf90b28fd2b221d9  gcc/testsuite/g++.dg/warn/Wdangling-reference3.C
! 4515bab7ba1ef52bd87e0ce661302dfd  gcc/testsuite/g++.dg/warn/Wdangling-reference4.C
! b1f9e5d8557cc56fdb7bd124ce3a6809  gcc/testsuite/g++.dg/warn/Wdangling-reference5.C
! 74d5c1dd927763dbe99c2c6b4dba16b6  gcc/testsuite/g++.dg/warn/Wdangling-reference6.C
! e4a55c27577ae3c13d1a7268aff3715f  gcc/testsuite/g++.dg/warn/Wdangling-reference7.C
! 50deb62e7d1f43a62e3c3a7761443e32  gcc/testsuite/g++.dg/warn/Wdangling-reference8.C
! bdb93627691324f8e89a3fc0c3b3d6b4  gcc/testsuite/g++.dg/warn/Wdangling-reference9.C
  81f664dba5a025cdc726a4ce39403653  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-1.C
  e5cc13e8f74ebb47c678a7c5745e57a8  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-2.C
  1a61a88751379aff79eff4189d8d053d  gcc/testsuite/g++.dg/warn/Wdelete-incomplete-3.C
*************** c1c94fbed68712c556c47675075fab08  gcc/te
*** 26407,26412 ****
--- 28493,28501 ----
  df34a3119747a72018c056305c89abd6  gcc/testsuite/g++.dg/warn/Wduplicated-branches7.C
  53e8ba692e810326b135e28115da516a  gcc/testsuite/g++.dg/warn/Wduplicated-cond1.C
  aee46bcb7031162dcee9c8ebe1228c6f  gcc/testsuite/g++.dg/warn/Wduplicated-cond2.C
+ 3fd71ef4467ff2d96bedfb8624c9f6c9  gcc/testsuite/g++.dg/warn/Wduplicated-cond3.C
+ ee9fccf38e503088114d384982bac300  gcc/testsuite/g++.dg/warn/Wduplicated-cond4.C
+ ed018a65c775f03c142661adae76c9d5  gcc/testsuite/g++.dg/warn/Wduplicated-cond5.C
  8b9cbae2542d0ee1294a9aba56467023  gcc/testsuite/g++.dg/warn/Wenum-compare-no-2.C
  0159dc16051c0a3deaba6db2eeae85f8  gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
  b141ada1b2936d65fc9a46fee390d652  gcc/testsuite/g++.dg/warn/Wenum-compare.C
*************** caf05a8324926e9472342da0584539ad  gcc/te
*** 26437,26442 ****
--- 28526,28532 ----
  55295c0bc11e5dffe89757d080280054  gcc/testsuite/g++.dg/warn/Wignored-attributes-2.C
  a5142c9cd89ebb3502a6adbdb75fa29c  gcc/testsuite/g++.dg/warn/Wignored-qualifiers1.C
  90dde3d2eabc1a35285253724486da84  gcc/testsuite/g++.dg/warn/Wignored-qualifiers2.C
+ ba171861e1275e81164f427cf8da80b2  gcc/testsuite/g++.dg/warn/Wignored-qualifiers3.C
  f9b7e3158d7918eb87fb4faeb4bb757d  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-1.C
  e8496d82a0f58fc4bc26efa7a0a75fd3  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-2.C
  126f476a9780bcba16781feab90ed2d8  gcc/testsuite/g++.dg/warn/Wimplicit-fallthrough-3.C
*************** f1360330e2c03adfb9e1efd9136d3f31  gcc/te
*** 26470,26475 ****
--- 28560,28566 ----
  90a871726cae9dea93ce0da4b5bb7b2c  gcc/testsuite/g++.dg/warn/Wlogical-op-1.C
  13ee95f1cd2836b595541e2a9917c06d  gcc/testsuite/g++.dg/warn/Wlogical-op-2.C
  73a4aa4570ee8ec2a83f04a672162a02  gcc/testsuite/g++.dg/warn/Wlogical-op-3.C
+ 868d012a31fa22c4f94b06695961a1bd  gcc/testsuite/g++.dg/warn/Wlogical-op-4.C
  0d474dffc39eac06f1ef0fff37a5792f  gcc/testsuite/g++.dg/warn/Wmemset-elt-size1.C
  640ad4c16d17c7bf605e6b30568da488  gcc/testsuite/g++.dg/warn/Wmemset-transposed-args-1.C
  1184b1df4ae243b5ab6917e0e3b219b6  gcc/testsuite/g++.dg/warn/Wmismatched-dealloc-2.C
*************** f53b1f90733acd430c8cdf6142c6d0ae  gcc/te
*** 26483,26488 ****
--- 28574,28580 ----
  c6df77cbbce60aad70c6bc987ecd4bd2  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete-7.C
  3089b7e4a074a4993652acd742390397  gcc/testsuite/g++.dg/warn/Wmismatched-new-delete.C
  7729ea0086a47fb6cab7bd9640283fcd  gcc/testsuite/g++.dg/warn/Wmismatched-tags-10.C
+ 67285d97432f227bc5e4c7e66666868f  gcc/testsuite/g++.dg/warn/Wmismatched-tags-11.C
  9e3053e15f6b0726e17bd19ce7fc3bf8  gcc/testsuite/g++.dg/warn/Wmismatched-tags-2.C
  34c810b16cc722166ffa4de29c41c7e5  gcc/testsuite/g++.dg/warn/Wmismatched-tags-3.C
  52f77f366a578c7b96fa3a4d1ae9a1c9  gcc/testsuite/g++.dg/warn/Wmismatched-tags-4.C
*************** d3017d025f43f9093bf016847e418a34  gcc/te
*** 26498,26504 ****
  df77bef9a13ed28df97e854b2336076a  gcc/testsuite/g++.dg/warn/Wmultistatement-macros-1.C
  13048d07bf8630f21562df0b77b67343  gcc/testsuite/g++.dg/warn/Wno-div-by-zero.C
  7c3ea8d27e4d862f83fc6998269f6f42  gcc/testsuite/g++.dg/warn/Wno-narrowing1.C
! 26f056d6de0144f7aed85c81b3e4f583  gcc/testsuite/g++.dg/warn/Wno-return-local-addr.C
  3de680abd7e614dc06f9edcb6f087cfc  gcc/testsuite/g++.dg/warn/Wnoexcept1.C
  924ad5e5caf7a53b9f4294c66b631c00  gcc/testsuite/g++.dg/warn/Wnoexcept1.h
  05ac5fff0496cdb42393000832a16d00  gcc/testsuite/g++.dg/warn/Wnoexcept2.C
--- 28590,28596 ----
  df77bef9a13ed28df97e854b2336076a  gcc/testsuite/g++.dg/warn/Wmultistatement-macros-1.C
  13048d07bf8630f21562df0b77b67343  gcc/testsuite/g++.dg/warn/Wno-div-by-zero.C
  7c3ea8d27e4d862f83fc6998269f6f42  gcc/testsuite/g++.dg/warn/Wno-narrowing1.C
! d024a70ad0eccd6ae1e4af09f6ff03b0  gcc/testsuite/g++.dg/warn/Wno-return-local-addr.C
  3de680abd7e614dc06f9edcb6f087cfc  gcc/testsuite/g++.dg/warn/Wnoexcept1.C
  924ad5e5caf7a53b9f4294c66b631c00  gcc/testsuite/g++.dg/warn/Wnoexcept1.h
  05ac5fff0496cdb42393000832a16d00  gcc/testsuite/g++.dg/warn/Wnoexcept2.C
*************** c8cfeb1be8b9ab6b1a5bf044e67e73e2  gcc/te
*** 26538,26546 ****
  4d3b7ed38b5e078db7e76014e7eab321  gcc/testsuite/g++.dg/warn/Woverloaded-1.C
  ed471db2dd6df6116f741f1749004495  gcc/testsuite/g++.dg/warn/Woverloaded-2.C
  5ae40f7ac8f48b19db8ffbb07808fafd  gcc/testsuite/g++.dg/warn/Woverloaded-2.h
  5433407ca1a050560b08f45d03fdef67  gcc/testsuite/g++.dg/warn/Wpadded-1.C
  d1f22f759809f81b1b677be34f938b02  gcc/testsuite/g++.dg/warn/Wparentheses-1.C
! 798c29628076248a1951e0948ffcc739  gcc/testsuite/g++.dg/warn/Wparentheses-10.C
  593d167a09cfa3cfdaaf95d5d0955105  gcc/testsuite/g++.dg/warn/Wparentheses-11.C
  8c613703632f7f5021d63a811def4981  gcc/testsuite/g++.dg/warn/Wparentheses-12.C
  9ec8d4fa497036c260fb5d2dbf4ff336  gcc/testsuite/g++.dg/warn/Wparentheses-13.C
--- 28630,28642 ----
  4d3b7ed38b5e078db7e76014e7eab321  gcc/testsuite/g++.dg/warn/Woverloaded-1.C
  ed471db2dd6df6116f741f1749004495  gcc/testsuite/g++.dg/warn/Woverloaded-2.C
  5ae40f7ac8f48b19db8ffbb07808fafd  gcc/testsuite/g++.dg/warn/Woverloaded-2.h
+ f4d4031ba7d932297f959823933e17d3  gcc/testsuite/g++.dg/warn/Woverloaded-virt1.C
+ 01c26c72a37db8f84c645c213cfb0f2a  gcc/testsuite/g++.dg/warn/Woverloaded-virt2.C
+ 4e0440348e49e1e429dbe6184e03e6d8  gcc/testsuite/g++.dg/warn/Woverloaded-virt3.C
+ f16dd3eaabb61969a14adb68eccfc1d1  gcc/testsuite/g++.dg/warn/Woverloaded-virt4.C
  5433407ca1a050560b08f45d03fdef67  gcc/testsuite/g++.dg/warn/Wpadded-1.C
  d1f22f759809f81b1b677be34f938b02  gcc/testsuite/g++.dg/warn/Wparentheses-1.C
! 1fd66bda07d0d1a8f1625c816b321aae  gcc/testsuite/g++.dg/warn/Wparentheses-10.C
  593d167a09cfa3cfdaaf95d5d0955105  gcc/testsuite/g++.dg/warn/Wparentheses-11.C
  8c613703632f7f5021d63a811def4981  gcc/testsuite/g++.dg/warn/Wparentheses-12.C
  9ec8d4fa497036c260fb5d2dbf4ff336  gcc/testsuite/g++.dg/warn/Wparentheses-13.C
*************** e151ff9706ff8f8d25eb870b6f099bc2  gcc/te
*** 26548,26555 ****
  08a0dd4d42f7674207742306f422308a  gcc/testsuite/g++.dg/warn/Wparentheses-15.C
  9bf24a91b61b697e120b73ae40901d68  gcc/testsuite/g++.dg/warn/Wparentheses-16.C
  91ab8d0010665a4d81358361c95189a1  gcc/testsuite/g++.dg/warn/Wparentheses-17.C
! efbe99f9deea7ce008810d1c4ae8906d  gcc/testsuite/g++.dg/warn/Wparentheses-18.C
! 57e45fb814d74e86de9c4f3666a82e67  gcc/testsuite/g++.dg/warn/Wparentheses-19.C
  ea3c2716291fc812b8d00190b207f31b  gcc/testsuite/g++.dg/warn/Wparentheses-2.C
  1fee47e73503ddfb98374f911b0e3801  gcc/testsuite/g++.dg/warn/Wparentheses-20.C
  f5f50acbe2a146e13079538cc1b650f3  gcc/testsuite/g++.dg/warn/Wparentheses-21.C
--- 28644,28651 ----
  08a0dd4d42f7674207742306f422308a  gcc/testsuite/g++.dg/warn/Wparentheses-15.C
  9bf24a91b61b697e120b73ae40901d68  gcc/testsuite/g++.dg/warn/Wparentheses-16.C
  91ab8d0010665a4d81358361c95189a1  gcc/testsuite/g++.dg/warn/Wparentheses-17.C
! 5d928182712915ada2aeb5d1400f59ce  gcc/testsuite/g++.dg/warn/Wparentheses-18.C
! 9ec7bd40c814d8306e3a611420854c9d  gcc/testsuite/g++.dg/warn/Wparentheses-19.C
  ea3c2716291fc812b8d00190b207f31b  gcc/testsuite/g++.dg/warn/Wparentheses-2.C
  1fee47e73503ddfb98374f911b0e3801  gcc/testsuite/g++.dg/warn/Wparentheses-20.C
  f5f50acbe2a146e13079538cc1b650f3  gcc/testsuite/g++.dg/warn/Wparentheses-21.C
*************** dfcd589329d7ac56994e48372202080f  gcc/te
*** 26563,26574 ****
  3385c5e26c1214efc7b69cbde452a639  gcc/testsuite/g++.dg/warn/Wparentheses-29.C
  f54d3fb57e7ea75f1954d2671e769fd5  gcc/testsuite/g++.dg/warn/Wparentheses-3.C
  96e374f330483a2fd899a4be27553c39  gcc/testsuite/g++.dg/warn/Wparentheses-30.C
  5cb9671988084dbee7c5cdf77fbbfa0c  gcc/testsuite/g++.dg/warn/Wparentheses-4.C
  2e05be0ce305723a94a4113e02835003  gcc/testsuite/g++.dg/warn/Wparentheses-5.C
  83fcd8ddf744b31d0e06101be5cc47fe  gcc/testsuite/g++.dg/warn/Wparentheses-6.C
  2d2ebfb174ee9ab83c9537cf9981ae96  gcc/testsuite/g++.dg/warn/Wparentheses-7.C
  fbe474c3ff1c910d01a5cb5e4447a752  gcc/testsuite/g++.dg/warn/Wparentheses-8.C
! 6e767451a876da4d1880041cbfd264b0  gcc/testsuite/g++.dg/warn/Wparentheses-9.C
  d6d302322c17b62b7594047d0c81b5cd  gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
  59084ba53d0a718a92a26128b81d7474  gcc/testsuite/g++.dg/warn/Wplacement-new-size-10.C
  bdd877cb0a1d1ac83c428e67ad0a5b39  gcc/testsuite/g++.dg/warn/Wplacement-new-size-11.C
--- 28659,28671 ----
  3385c5e26c1214efc7b69cbde452a639  gcc/testsuite/g++.dg/warn/Wparentheses-29.C
  f54d3fb57e7ea75f1954d2671e769fd5  gcc/testsuite/g++.dg/warn/Wparentheses-3.C
  96e374f330483a2fd899a4be27553c39  gcc/testsuite/g++.dg/warn/Wparentheses-30.C
+ e954d97d020134ab9743dd967500c3cf  gcc/testsuite/g++.dg/warn/Wparentheses-31.C
  5cb9671988084dbee7c5cdf77fbbfa0c  gcc/testsuite/g++.dg/warn/Wparentheses-4.C
  2e05be0ce305723a94a4113e02835003  gcc/testsuite/g++.dg/warn/Wparentheses-5.C
  83fcd8ddf744b31d0e06101be5cc47fe  gcc/testsuite/g++.dg/warn/Wparentheses-6.C
  2d2ebfb174ee9ab83c9537cf9981ae96  gcc/testsuite/g++.dg/warn/Wparentheses-7.C
  fbe474c3ff1c910d01a5cb5e4447a752  gcc/testsuite/g++.dg/warn/Wparentheses-8.C
! 2a6bb2c6a74cb30116079dda3f3b82d5  gcc/testsuite/g++.dg/warn/Wparentheses-9.C
  d6d302322c17b62b7594047d0c81b5cd  gcc/testsuite/g++.dg/warn/Wplacement-new-size-1.C
  59084ba53d0a718a92a26128b81d7474  gcc/testsuite/g++.dg/warn/Wplacement-new-size-10.C
  bdd877cb0a1d1ac83c428e67ad0a5b39  gcc/testsuite/g++.dg/warn/Wplacement-new-size-11.C
*************** c581ab7bc1c10728c1e68266d06af6e9  gcc/te
*** 26601,26612 ****
  d0e225992bc2f0e5e2e51d846e21a8b4  gcc/testsuite/g++.dg/warn/Wreturn-3.C
  2517f12853f6838edd913b1fa72b10a6  gcc/testsuite/g++.dg/warn/Wreturn-4.C
  9e1882cc8fcb69eefac6004d8d0a4bb9  gcc/testsuite/g++.dg/warn/Wreturn-5.C
  47e19e0aa7cc935c5692f22838d704d8  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
  9c909989b6fe62571bb57ca4b30ea4e2  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-3.C
  514216b0701c15265ff14809c766c104  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-4.C
  8020f9bd49dcb3bd70e40a1e2beda78c  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-5.C
  12f1cd49790214f42fa39885b008bf25  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-6.C
! 7e583350bd73c98912c56f5d3dd90aed  gcc/testsuite/g++.dg/warn/Wreturn-local-addr.C
  784c916e3f956afe80f26ff565b29be6  gcc/testsuite/g++.dg/warn/Wreturn-type-1.C
  152517b8ffa5661c5b6be0b9234c1501  gcc/testsuite/g++.dg/warn/Wreturn-type-10.C
  0e594e6f78e55b364baf8496c437b7bf  gcc/testsuite/g++.dg/warn/Wreturn-type-11.C
--- 28698,28710 ----
  d0e225992bc2f0e5e2e51d846e21a8b4  gcc/testsuite/g++.dg/warn/Wreturn-3.C
  2517f12853f6838edd913b1fa72b10a6  gcc/testsuite/g++.dg/warn/Wreturn-4.C
  9e1882cc8fcb69eefac6004d8d0a4bb9  gcc/testsuite/g++.dg/warn/Wreturn-5.C
+ 6e072c02833a2eeafdc7f85bfcb13bf7  gcc/testsuite/g++.dg/warn/Wreturn-6.C
  47e19e0aa7cc935c5692f22838d704d8  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-2.C
  9c909989b6fe62571bb57ca4b30ea4e2  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-3.C
  514216b0701c15265ff14809c766c104  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-4.C
  8020f9bd49dcb3bd70e40a1e2beda78c  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-5.C
  12f1cd49790214f42fa39885b008bf25  gcc/testsuite/g++.dg/warn/Wreturn-local-addr-6.C
! b63f05fc1824f146f4f71e61724fb21f  gcc/testsuite/g++.dg/warn/Wreturn-local-addr.C
  784c916e3f956afe80f26ff565b29be6  gcc/testsuite/g++.dg/warn/Wreturn-type-1.C
  152517b8ffa5661c5b6be0b9234c1501  gcc/testsuite/g++.dg/warn/Wreturn-type-10.C
  0e594e6f78e55b364baf8496c437b7bf  gcc/testsuite/g++.dg/warn/Wreturn-type-11.C
*************** ac4f08dd2a157d7c72adbbb04354e082  gcc/te
*** 26620,26629 ****
--- 28718,28729 ----
  7d2696250f449ef817e376057902360c  gcc/testsuite/g++.dg/warn/Wreturn-type-7.C
  ea532b8d02c84e413fb770ee0fdd34c7  gcc/testsuite/g++.dg/warn/Wreturn-type-8.C
  11c96d177204bba0d28acdba72d60115  gcc/testsuite/g++.dg/warn/Wreturn-type-9.C
+ a7a9ceb17bae1bbfcadb47638a8de51c  gcc/testsuite/g++.dg/warn/Wself-move1.C
  78a781a7fee9227b3174b6dee0ac20b3  gcc/testsuite/g++.dg/warn/Wsequence-point-1.C
  d0d6c5fe9b201bcd8b68523fbf3f0ce2  gcc/testsuite/g++.dg/warn/Wsequence-point-2.C
  21e8a0380962b41685ed2da030d6e679  gcc/testsuite/g++.dg/warn/Wsequence-point-3.C
  f58385057fb43a4541194480dc43d360  gcc/testsuite/g++.dg/warn/Wsequence-point-4.C
+ f09d07e0fd5c0b9c0c417b86039ac382  gcc/testsuite/g++.dg/warn/Wsequence-point-5.C
  8fb4b9a6c1d26c1e9bde7782d85ab4db  gcc/testsuite/g++.dg/warn/Wsequence-point-pr18050.C
  44fe19ff71727efce22e2f732d2ac553  gcc/testsuite/g++.dg/warn/Wshadow-1.C
  501d6f433bab53d27b046fc419dcb80a  gcc/testsuite/g++.dg/warn/Wshadow-10.C
*************** f345b06fca626501d991adc9447c18e0  gcc/te
*** 26687,26693 ****
  466955c9310c236c76f3bbc5582969f8  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C
  73aa8fdd361564d9ba904d4252613717  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-struct-included.C
  16b9a30664bf0e9e0ead763d2f5c3a33  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C
! d635ff290903ee4e0276548a094a3551  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union-2.C
  81024e5e796ea1637204d6a421f3c1bb  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union.C
  47299cf4c0e4a2de8810c91ebac11082  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C
  30c0feed463f3b6ac398c3d7aa0e04be  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-1.C
--- 28787,28793 ----
  466955c9310c236c76f3bbc5582969f8  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-signed-unsigned.C
  73aa8fdd361564d9ba904d4252613717  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-struct-included.C
  16b9a30664bf0e9e0ead763d2f5c3a33  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-tmpl.C
! b0bd1eb18f364ff50a5380ab75134719  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union-2.C
  81024e5e796ea1637204d6a421f3c1bb  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-bogus-union.C
  47299cf4c0e4a2de8810c91ebac11082  gcc/testsuite/g++.dg/warn/Wstrict-aliasing-float-ref-int-obj.C
  30c0feed463f3b6ac398c3d7aa0e04be  gcc/testsuite/g++.dg/warn/Wstring-literal-comparison-1.C
*************** a0b497dc1f8dc8ce49f81bc391f0deb1  gcc/te
*** 26697,26703 ****
  6410b05c3b999712196121758246d3f4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-1.C
  bab7e5656bf0736ab8cd5ae9256981d6  gcc/testsuite/g++.dg/warn/Wstringop-overflow-2.C
  38d9e0f462fe42c6229028728971ef78  gcc/testsuite/g++.dg/warn/Wstringop-overflow-3.C
! fdf3f6774c83c8402eaa4a82c19e0470  gcc/testsuite/g++.dg/warn/Wstringop-overflow-4.C
  d1f308b2ce4d89fda2347e839404f085  gcc/testsuite/g++.dg/warn/Wstringop-overflow-5.C
  1bab351a542f6d244c9a83d65c6f27d4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
  ea32c8c8b42add7fd76338f37d3b13e0  gcc/testsuite/g++.dg/warn/Wstringop-overflow-7.C
--- 28797,28803 ----
  6410b05c3b999712196121758246d3f4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-1.C
  bab7e5656bf0736ab8cd5ae9256981d6  gcc/testsuite/g++.dg/warn/Wstringop-overflow-2.C
  38d9e0f462fe42c6229028728971ef78  gcc/testsuite/g++.dg/warn/Wstringop-overflow-3.C
! 7fbaac9db842981c2ad344bdeb0f34c4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-4.C
  d1f308b2ce4d89fda2347e839404f085  gcc/testsuite/g++.dg/warn/Wstringop-overflow-5.C
  1bab351a542f6d244c9a83d65c6f27d4  gcc/testsuite/g++.dg/warn/Wstringop-overflow-6.C
  ea32c8c8b42add7fd76338f37d3b13e0  gcc/testsuite/g++.dg/warn/Wstringop-overflow-7.C
*************** ac765247730b2bbd6e40254f091bba3e  gcc/te
*** 26709,26714 ****
--- 28809,28815 ----
  eba56eb80e2c30e3bb80d1a990dbb623  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-2.C
  836b53326756a2843a16b15fee84ea09  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-3.C
  c4794eeb90f1cfe006ae901e87395026  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-4.C
+ c8789e1aabf641b12a66a5c212ba3eed  gcc/testsuite/g++.dg/warn/Wsubobject-linkage-5.C
  37b1f9816a13b859a74d7d771c457985  gcc/testsuite/g++.dg/warn/Wsuggest-final-2.C
  66fc4594b649634436248d04beb915da  gcc/testsuite/g++.dg/warn/Wsuggest-final.C
  bc5f4f6e82e2462ec57c90e3dde36d89  gcc/testsuite/g++.dg/warn/Wsuggest-override-2.C
*************** bc5f4f6e82e2462ec57c90e3dde36d89  gcc/te
*** 26716,26721 ****
--- 28817,28823 ----
  77e66f6335a7a4224bbaee7a4264c3e6  gcc/testsuite/g++.dg/warn/Wswitch-1.C
  063811cae4064dfe33ddbcd11e9f93ee  gcc/testsuite/g++.dg/warn/Wswitch-2.C
  d2e4a4d8e8ab5acfd1a2c4346dddffd3  gcc/testsuite/g++.dg/warn/Wswitch-3.C
+ 2de08529e5a802a5064b2016b95665b6  gcc/testsuite/g++.dg/warn/Wswitch-4.C
  ec17a45e76ade076a9d23dd01ca9751f  gcc/testsuite/g++.dg/warn/Wswitch-default-1.C
  2908bb9b9b3a7ea3f41f0effd0934ce0  gcc/testsuite/g++.dg/warn/Wswitch-default-2.C
  cdae88e68f83f9f05a5c79241d1c14e0  gcc/testsuite/g++.dg/warn/Wswitch-unreachable-1.C
*************** ff7e55750a566580a7e5b746cf7dfa22  gcc/te
*** 26761,26772 ****
--- 28863,28876 ----
  39f7eedf0fd2f2f37ba740674e0e8b37  gcc/testsuite/g++.dg/warn/Wuninitialized-30.C
  d6ab64b605a24d07d95eb4282b431dac  gcc/testsuite/g++.dg/warn/Wuninitialized-31.C
  396db29dd4ffacf13fccefd03552734c  gcc/testsuite/g++.dg/warn/Wuninitialized-32.C
+ e78084d6db2698f85d0e705a603998fa  gcc/testsuite/g++.dg/warn/Wuninitialized-33.C
  be5b47714ba41b25933660896d6c7427  gcc/testsuite/g++.dg/warn/Wuninitialized-4.C
  1f013ef9d737e679cea70e842d47a7ce  gcc/testsuite/g++.dg/warn/Wuninitialized-5.C
  5d5a54e16a8f1ca7a7dc521b9a20af28  gcc/testsuite/g++.dg/warn/Wuninitialized-6.C
  39473618f9d65a4934a59f824d12279a  gcc/testsuite/g++.dg/warn/Wuninitialized-7.C
  9499c4dafb0ba272277b5ed41c0cf76b  gcc/testsuite/g++.dg/warn/Wuninitialized-8.C
  cbc63320f1b9587eb653a962d61c8945  gcc/testsuite/g++.dg/warn/Wuninitialized-9.C
+ 0882591d7986fa7a13117b45f37daa8d  gcc/testsuite/g++.dg/warn/Wuninitialized-pr107919-1.C
  d08f8f4d2f55349741193b20c16afa1a  gcc/testsuite/g++.dg/warn/Wunused-1.C
  09723811a7331dcc7580068bdfe05710  gcc/testsuite/g++.dg/warn/Wunused-10.C
  509e856e0fc2084da098b641f1d63e89  gcc/testsuite/g++.dg/warn/Wunused-11.C
*************** f11e1a6a7c64d32c0698605c42c159c1  gcc/te
*** 26810,26815 ****
--- 28914,28920 ----
  6e35ef68908ea1627bbf0f12306891ed  gcc/testsuite/g++.dg/warn/Wunused-parm-9.C
  b70117657eaf5edbb95110248d7ee800  gcc/testsuite/g++.dg/warn/Wunused-result-1.C
  fba202d17d94d19c21e05a678c6a5ab1  gcc/testsuite/g++.dg/warn/Wunused-result-2.C
+ 9f58f786374ace9197727c146cea66dd  gcc/testsuite/g++.dg/warn/Wunused-value-1.C
  4f806576508d70a95ed2a3e232685cdb  gcc/testsuite/g++.dg/warn/Wunused-var-1.C
  898eca8edc4214a3f0d47032d1e29a12  gcc/testsuite/g++.dg/warn/Wunused-var-10.C
  16cd18b051568e2b0d1ed53dfcd6fc38  gcc/testsuite/g++.dg/warn/Wunused-var-11.C
*************** ca9be5c5f545fdac363bd282da40aa45  gcc/te
*** 26840,26845 ****
--- 28945,28953 ----
  356b6b7ef09ff04858ade6c5f0dddca3  gcc/testsuite/g++.dg/warn/Wunused-var-34.C
  3cd6cb204217a85c4158e63a368ad3c6  gcc/testsuite/g++.dg/warn/Wunused-var-35.C
  a0153f267ad41a4cf2f1dec39837d246  gcc/testsuite/g++.dg/warn/Wunused-var-36.C
+ 91ca25b68e7aa2b94ab5ab3931b3d8cd  gcc/testsuite/g++.dg/warn/Wunused-var-37.C
+ 998a3f10f988e7baba9b261f4e42d7fb  gcc/testsuite/g++.dg/warn/Wunused-var-38.C
+ 34eb935534f258b4cdd6d7f1b0bb2b6e  gcc/testsuite/g++.dg/warn/Wunused-var-39.C
  62e5565091b4ee3f018515196f818bf3  gcc/testsuite/g++.dg/warn/Wunused-var-4.C
  d9191ea69f8ac18b1043d3d093b1f0d4  gcc/testsuite/g++.dg/warn/Wunused-var-5.C
  87a6fe8bfeffa1f31aecfb6dc5c8fc8e  gcc/testsuite/g++.dg/warn/Wunused-var-6.C
*************** b81dd316dd30881afe998cc16667340f  gcc/te
*** 26849,26858 ****
  f62d0efa105434ddb77f8584066aa865  gcc/testsuite/g++.dg/warn/Wunused-var30.C
  05ca808832d9fd67738b75a8019ab2d3  gcc/testsuite/g++.dg/warn/Wuse-after-free.C
  e458d0fab0b37edff03370ba4ad52623  gcc/testsuite/g++.dg/warn/Wuse-after-free2.C
! 7661f517c59be2c2775ba11daa38e4e6  gcc/testsuite/g++.dg/warn/Wuse-after-free3.C
  3cfad577c57b131562e2e5cae28cc116  gcc/testsuite/g++.dg/warn/Wuse-after-free4.C
! 7c73aa4b260c1d16ea9a76d2e0a28fcb  gcc/testsuite/g++.dg/warn/Wuseless-cast.C
  ff8ed0a4ce8ad573aa89f6b015e4a122  gcc/testsuite/g++.dg/warn/Wuseless-cast2.C
  9de23321d5ac135de5ba8afa251a359a  gcc/testsuite/g++.dg/warn/Wvexing-parse.C
  47c8ae3dc7144acf6191de59ea2930a1  gcc/testsuite/g++.dg/warn/Wvexing-parse2.C
  8a7c0f92b372b8761c8b842613d7c6a2  gcc/testsuite/g++.dg/warn/Wvexing-parse3.C
--- 28957,28968 ----
  f62d0efa105434ddb77f8584066aa865  gcc/testsuite/g++.dg/warn/Wunused-var30.C
  05ca808832d9fd67738b75a8019ab2d3  gcc/testsuite/g++.dg/warn/Wuse-after-free.C
  e458d0fab0b37edff03370ba4ad52623  gcc/testsuite/g++.dg/warn/Wuse-after-free2.C
! 86527247d75407802a9c79ab5d36d150  gcc/testsuite/g++.dg/warn/Wuse-after-free3.C
  3cfad577c57b131562e2e5cae28cc116  gcc/testsuite/g++.dg/warn/Wuse-after-free4.C
! 902f05f29c33aa5d562b711128653136  gcc/testsuite/g++.dg/warn/Wuse-after-free5.C
! 30054c1718881a393d74bb5fa87ea44b  gcc/testsuite/g++.dg/warn/Wuseless-cast.C
  ff8ed0a4ce8ad573aa89f6b015e4a122  gcc/testsuite/g++.dg/warn/Wuseless-cast2.C
+ 9accdd115e85d99f4c1e968e50ca384c  gcc/testsuite/g++.dg/warn/Wuseless-cast3.C
  9de23321d5ac135de5ba8afa251a359a  gcc/testsuite/g++.dg/warn/Wvexing-parse.C
  47c8ae3dc7144acf6191de59ea2930a1  gcc/testsuite/g++.dg/warn/Wvexing-parse2.C
  8a7c0f92b372b8761c8b842613d7c6a2  gcc/testsuite/g++.dg/warn/Wvexing-parse3.C
*************** e7af61050124191d3801f828f590d8a8  gcc/te
*** 26877,26882 ****
--- 28987,28993 ----
  edd46a85983298076d1f5947ff73d686  gcc/testsuite/g++.dg/warn/Wwrite-strings-7.C
  b5744b69a9a9baf05fa3af9a7106f773  gcc/testsuite/g++.dg/warn/Wwrite-strings-8.C
  5f667172f22450baf0c74992684c8ac2  gcc/testsuite/g++.dg/warn/Wwrite-strings-9.C
+ 5cb850feccc416d85f5fba737de1ab94  gcc/testsuite/g++.dg/warn/Wxor-used-as-pow-named-op.C
  e499cf96017cff4c8ee660b295ac72f2  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-1.C
  25351c131271a50a8cfeb70c68ced525  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-2.C
  72f6e24d01ded2dacc4868ebf4d21a6f  gcc/testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-3.C
*************** b718de980adb60556e7ed2d1500c1178  gcc/te
*** 26889,26901 ****
  742770da6dc852dbab06cd3f38047a67  gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h
  f8ad5a1b952230262de883716c47bcdd  gcc/testsuite/g++.dg/warn/anonymous-namespace-2.C
  da50cbe61799c0f2708b13648ec90404  gcc/testsuite/g++.dg/warn/anonymous-namespace-2.h
! 5fe87a6003dafa187a4c659e6b639f48  gcc/testsuite/g++.dg/warn/anonymous-namespace-3.C
  b2f7ffb2dbf7177febbd1d45245b3251  gcc/testsuite/g++.dg/warn/anonymous-namespace-3.h
  d932d5a80777e6eb1f5c5b5ddab9d03d  gcc/testsuite/g++.dg/warn/anonymous-namespace-4.C
  ded24587426b8329f8c1a806eb7d86d2  gcc/testsuite/g++.dg/warn/anonymous-namespace-4.h
  6b75beb82727fa901a97c3f415f79fd3  gcc/testsuite/g++.dg/warn/anonymous-namespace-5.C
  be3d4fa6911580b9269c3ea654b72a7e  gcc/testsuite/g++.dg/warn/anonymous-namespace-6.C
  a8fcc3969752dc9c9e16853c63eeb1b5  gcc/testsuite/g++.dg/warn/changes-meaning.C
  492edf36129aefc2a581ff76c08dd23f  gcc/testsuite/g++.dg/warn/compare1.C
  89ebc9f37c7b1a4e258df8e861fc9fc7  gcc/testsuite/g++.dg/warn/constexpr-70194.C
  85be959a24d4346758266af7cda69d72  gcc/testsuite/g++.dg/warn/conv1.C
--- 29000,29014 ----
  742770da6dc852dbab06cd3f38047a67  gcc/testsuite/g++.dg/warn/anonymous-namespace-1.h
  f8ad5a1b952230262de883716c47bcdd  gcc/testsuite/g++.dg/warn/anonymous-namespace-2.C
  da50cbe61799c0f2708b13648ec90404  gcc/testsuite/g++.dg/warn/anonymous-namespace-2.h
! b622b9e5692754be42cfec62e289dba5  gcc/testsuite/g++.dg/warn/anonymous-namespace-3.C
  b2f7ffb2dbf7177febbd1d45245b3251  gcc/testsuite/g++.dg/warn/anonymous-namespace-3.h
  d932d5a80777e6eb1f5c5b5ddab9d03d  gcc/testsuite/g++.dg/warn/anonymous-namespace-4.C
  ded24587426b8329f8c1a806eb7d86d2  gcc/testsuite/g++.dg/warn/anonymous-namespace-4.h
  6b75beb82727fa901a97c3f415f79fd3  gcc/testsuite/g++.dg/warn/anonymous-namespace-5.C
  be3d4fa6911580b9269c3ea654b72a7e  gcc/testsuite/g++.dg/warn/anonymous-namespace-6.C
  a8fcc3969752dc9c9e16853c63eeb1b5  gcc/testsuite/g++.dg/warn/changes-meaning.C
+ 064f6424f52e046b11975e2ef13ca97d  gcc/testsuite/g++.dg/warn/changes-meaning2.C
+ 38e5db553fffdf55f896641993728229  gcc/testsuite/g++.dg/warn/changes-meaning3.C
  492edf36129aefc2a581ff76c08dd23f  gcc/testsuite/g++.dg/warn/compare1.C
  89ebc9f37c7b1a4e258df8e861fc9fc7  gcc/testsuite/g++.dg/warn/constexpr-70194.C
  85be959a24d4346758266af7cda69d72  gcc/testsuite/g++.dg/warn/conv1.C
*************** ac14aaa010428fa00cd60d6e6bb808c0  gcc/te
*** 27019,27024 ****
--- 29132,29139 ----
  cc35779b6305bb8c111aecea1f3f7d25  gcc/testsuite/g++.dg/warn/pr101515.C
  96b3e712fbdbacb6647076bf03b56975  gcc/testsuite/g++.dg/warn/pr104025.C
  edc1a994e1246279f2c5c7c45650e061  gcc/testsuite/g++.dg/warn/pr104492.C
+ 41723c6a15ab6dfc9c0db2c118c357a5  gcc/testsuite/g++.dg/warn/pr108285.C
+ 1ba5741dd0aa023aa23edc39041b235e  gcc/testsuite/g++.dg/warn/pr108365.C
  adea0a023eba0c3c51b6a4894014d35a  gcc/testsuite/g++.dg/warn/pr11159.C
  f257fca4d00c8c67aa2b9d6e43ee906f  gcc/testsuite/g++.dg/warn/pr11492.C
  5fab7f879534ef351718dc73d825b667  gcc/testsuite/g++.dg/warn/pr12242.C
*************** b95277fda9b1b8a4b6b4202b57e14529  gcc/te
*** 27085,27090 ****
--- 29200,29207 ----
  5224742fbd6a0785340bc648bf0febd6  gcc/testsuite/g++.dg/warn/pragma-system_header4.h
  ead08695035c4edabe2cbf3251983089  gcc/testsuite/g++.dg/warn/pragma-system_header5.C
  f589a557984dd9757ade5f6409471bb5  gcc/testsuite/g++.dg/warn/pragma-system_header5.h
+ 1cfaca1f41390b6bf2232fca33ee0e51  gcc/testsuite/g++.dg/warn/pragma-system_header6.C
+ 72ffe06759cdbd0b585e3c82997f0e97  gcc/testsuite/g++.dg/warn/pragma-system_header6.h
  8c096cfbcb0f16fa5bde02650ac4ab41  gcc/testsuite/g++.dg/warn/private1.C
  5a8eed272c67bdc2b8cf77d9197fbf09  gcc/testsuite/g++.dg/warn/ref-temp1.C
  4298cb37de7f2562b424c1ca4cf7c9a8  gcc/testsuite/g++.dg/warn/register-parm-1.C
*************** da80b7e97d4e9ee67decc3ead64065ff  gcc/te
*** 27240,27246 ****
  320f3eae6dc6bbd5aa64e7a285f758f7  gcc/testsuite/g++.old-deja/g++.bob/template2.C
  d3aa332b02a50a2c976fd3acd8f16058  gcc/testsuite/g++.old-deja/g++.bob/template3.C
  aeb5818b98767c6df0e85e3dd85f0da7  gcc/testsuite/g++.old-deja/g++.bob/template4.C
! ba6215629bc2b40ac5a0c47d535422d1  gcc/testsuite/g++.old-deja/g++.brendan/README
  ae92d366fb4b1fb345a39cf07442d5f1  gcc/testsuite/g++.old-deja/g++.brendan/abstract1.C
  fc6063368e5474a8653856d27762de94  gcc/testsuite/g++.old-deja/g++.brendan/access1.C
  cd7e52b4b869a50f1833437935e02700  gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
--- 29357,29363 ----
  320f3eae6dc6bbd5aa64e7a285f758f7  gcc/testsuite/g++.old-deja/g++.bob/template2.C
  d3aa332b02a50a2c976fd3acd8f16058  gcc/testsuite/g++.old-deja/g++.bob/template3.C
  aeb5818b98767c6df0e85e3dd85f0da7  gcc/testsuite/g++.old-deja/g++.bob/template4.C
! 483562baa1cb2724926cd16c3bb17341  gcc/testsuite/g++.old-deja/g++.brendan/README
  ae92d366fb4b1fb345a39cf07442d5f1  gcc/testsuite/g++.old-deja/g++.brendan/abstract1.C
  fc6063368e5474a8653856d27762de94  gcc/testsuite/g++.old-deja/g++.brendan/access1.C
  cd7e52b4b869a50f1833437935e02700  gcc/testsuite/g++.old-deja/g++.brendan/alignof.C
*************** a9b230fa3f6f281be0b5d7c1b0744eeb  gcc/te
*** 27269,27275 ****
  4b2ab58d3d7e3f0db2cd9c43e232e05b  gcc/testsuite/g++.old-deja/g++.brendan/copy6.C
  696c1f641ba8cf4c76eea17b05a68e7c  gcc/testsuite/g++.old-deja/g++.brendan/copy7.C
  330313d34e8179459b8d6fdbca0b4371  gcc/testsuite/g++.old-deja/g++.brendan/copy8.C
! ebcf953de22d960ed17d4f132adceedc  gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
  62172a7e4c59ed5aa0aa705ae8090fe0  gcc/testsuite/g++.old-deja/g++.brendan/crash1.C
  9bb5650319b1cbd73f548bcbcadbf2b4  gcc/testsuite/g++.old-deja/g++.brendan/crash10.C
  cd4e6c94edc7344f866733e2c178caa0  gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
--- 29386,29392 ----
  4b2ab58d3d7e3f0db2cd9c43e232e05b  gcc/testsuite/g++.old-deja/g++.brendan/copy6.C
  696c1f641ba8cf4c76eea17b05a68e7c  gcc/testsuite/g++.old-deja/g++.brendan/copy7.C
  330313d34e8179459b8d6fdbca0b4371  gcc/testsuite/g++.old-deja/g++.brendan/copy8.C
! fa9b0c176a8d00e45a03ab6644d2b0fc  gcc/testsuite/g++.old-deja/g++.brendan/copy9.C
  62172a7e4c59ed5aa0aa705ae8090fe0  gcc/testsuite/g++.old-deja/g++.brendan/crash1.C
  9bb5650319b1cbd73f548bcbcadbf2b4  gcc/testsuite/g++.old-deja/g++.brendan/crash10.C
  cd4e6c94edc7344f866733e2c178caa0  gcc/testsuite/g++.old-deja/g++.brendan/crash11.C
*************** efe4265b25ae54dbf04cfbbd033499c1  gcc/te
*** 27318,27324 ****
  e1871547e771dae40fb84cc4ec409e44  gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
  0d23b5f837eca50d6659a9747fa8e8bd  gcc/testsuite/g++.old-deja/g++.brendan/crash53.C
  76cab97db1c153ad14cd499c7d483fa7  gcc/testsuite/g++.old-deja/g++.brendan/crash54.C
! 3a96b876c0ad1b07d2b231509cbc11f4  gcc/testsuite/g++.old-deja/g++.brendan/crash55.C
  ae88d651341f4eb739d20b6a95da3d05  gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
  f99628dfc0766d237ee572c05c96f5ef  gcc/testsuite/g++.old-deja/g++.brendan/crash57.C
  2ea8e7e4ddc11489cf2a94e03e54ed33  gcc/testsuite/g++.old-deja/g++.brendan/crash58.C
--- 29435,29441 ----
  e1871547e771dae40fb84cc4ec409e44  gcc/testsuite/g++.old-deja/g++.brendan/crash52.C
  0d23b5f837eca50d6659a9747fa8e8bd  gcc/testsuite/g++.old-deja/g++.brendan/crash53.C
  76cab97db1c153ad14cd499c7d483fa7  gcc/testsuite/g++.old-deja/g++.brendan/crash54.C
! 500303a028abe89e3a0f3faa0ec009e1  gcc/testsuite/g++.old-deja/g++.brendan/crash55.C
  ae88d651341f4eb739d20b6a95da3d05  gcc/testsuite/g++.old-deja/g++.brendan/crash56.C
  f99628dfc0766d237ee572c05c96f5ef  gcc/testsuite/g++.old-deja/g++.brendan/crash57.C
  2ea8e7e4ddc11489cf2a94e03e54ed33  gcc/testsuite/g++.old-deja/g++.brendan/crash58.C
*************** ade4467b45d58789068683691ed64ee7  gcc/te
*** 27455,27461 ****
  df96675fc2ffaff1c92ab6003d91f701  gcc/testsuite/g++.old-deja/g++.brendan/overload4.C
  a4396bbce384652b7936e281f7ab7cc8  gcc/testsuite/g++.old-deja/g++.brendan/overload5.C
  5b6359b5a39b8cb125e95a28558f215b  gcc/testsuite/g++.old-deja/g++.brendan/overload6.C
! 20c8208207072ded537d54825c012514  gcc/testsuite/g++.old-deja/g++.brendan/overload7.C
  12363e86b7e84131804e82d8811fd126  gcc/testsuite/g++.old-deja/g++.brendan/overload8.C
  bd18d18d6b81f4f0be592286a3cb07e4  gcc/testsuite/g++.old-deja/g++.brendan/overload9.C
  947a08d1eb2c6c39e11bb5d45072caf1  gcc/testsuite/g++.old-deja/g++.brendan/parse1.C
--- 29572,29578 ----
  df96675fc2ffaff1c92ab6003d91f701  gcc/testsuite/g++.old-deja/g++.brendan/overload4.C
  a4396bbce384652b7936e281f7ab7cc8  gcc/testsuite/g++.old-deja/g++.brendan/overload5.C
  5b6359b5a39b8cb125e95a28558f215b  gcc/testsuite/g++.old-deja/g++.brendan/overload6.C
! f9935fa9a1d2fdb5c3c19963835f6b6c  gcc/testsuite/g++.old-deja/g++.brendan/overload7.C
  12363e86b7e84131804e82d8811fd126  gcc/testsuite/g++.old-deja/g++.brendan/overload8.C
  bd18d18d6b81f4f0be592286a3cb07e4  gcc/testsuite/g++.old-deja/g++.brendan/overload9.C
  947a08d1eb2c6c39e11bb5d45072caf1  gcc/testsuite/g++.old-deja/g++.brendan/parse1.C
*************** a8f1ea23e326c034a480ba87a1cbe8b8  gcc/te
*** 27575,27581 ****
  25b8398da50b1cee3d0facbcb1a12fa5  gcc/testsuite/g++.old-deja/g++.bugs/900210_07.C
  9e00b67da73217bd8eeac124e326b5bf  gcc/testsuite/g++.old-deja/g++.bugs/900210_08.C
  e9b978752f3e6b3a803beab6d95eb453  gcc/testsuite/g++.old-deja/g++.bugs/900210_09.C
! 8784bafd753c84e2a08c4e00f7a6b8d3  gcc/testsuite/g++.old-deja/g++.bugs/900210_10.C
  65fa40102bb6e8ff3dd1d877c8cec679  gcc/testsuite/g++.old-deja/g++.bugs/900211_01.C
  ff07ad9f2a0d93718ca5f6af614604ed  gcc/testsuite/g++.old-deja/g++.bugs/900211_02.C
  6abd890f103a051448d93d9bda74c173  gcc/testsuite/g++.old-deja/g++.bugs/900211_03.C
--- 29692,29698 ----
  25b8398da50b1cee3d0facbcb1a12fa5  gcc/testsuite/g++.old-deja/g++.bugs/900210_07.C
  9e00b67da73217bd8eeac124e326b5bf  gcc/testsuite/g++.old-deja/g++.bugs/900210_08.C
  e9b978752f3e6b3a803beab6d95eb453  gcc/testsuite/g++.old-deja/g++.bugs/900210_09.C
! 369012029b59f9568c22c305d0b349c2  gcc/testsuite/g++.old-deja/g++.bugs/900210_10.C
  65fa40102bb6e8ff3dd1d877c8cec679  gcc/testsuite/g++.old-deja/g++.bugs/900211_01.C
  ff07ad9f2a0d93718ca5f6af614604ed  gcc/testsuite/g++.old-deja/g++.bugs/900211_02.C
  6abd890f103a051448d93d9bda74c173  gcc/testsuite/g++.old-deja/g++.bugs/900211_03.C
*************** fe1e369a541ff0ff613e35c5b065ddb4  gcc/te
*** 27822,27828 ****
  53aef353e2e1a9a9eaac3faea32e02e5  gcc/testsuite/g++.old-deja/g++.jason/builtin.C
  b2517f61d6564dd5a82b4acf0e6bcb03  gcc/testsuite/g++.old-deja/g++.jason/builtin2.C
  36fc886b059d49d827435b551f7df603  gcc/testsuite/g++.old-deja/g++.jason/byval.C
! 02b0c705db935aa087185a228aa52a73  gcc/testsuite/g++.old-deja/g++.jason/byval2.C
  e532df26a2e57d3c517f97d9d1dd2ac2  gcc/testsuite/g++.old-deja/g++.jason/byval3.C
  cf06a8bbf7aa350ee56e4d98d2401d80  gcc/testsuite/g++.old-deja/g++.jason/c-inline.C
  5b2e6d162a150fb1b7a57feab087fb05  gcc/testsuite/g++.old-deja/g++.jason/cast1.C
--- 29939,29945 ----
  53aef353e2e1a9a9eaac3faea32e02e5  gcc/testsuite/g++.old-deja/g++.jason/builtin.C
  b2517f61d6564dd5a82b4acf0e6bcb03  gcc/testsuite/g++.old-deja/g++.jason/builtin2.C
  36fc886b059d49d827435b551f7df603  gcc/testsuite/g++.old-deja/g++.jason/byval.C
! 3a0085d5b2c82394b49aa62eba4a764b  gcc/testsuite/g++.old-deja/g++.jason/byval2.C
  e532df26a2e57d3c517f97d9d1dd2ac2  gcc/testsuite/g++.old-deja/g++.jason/byval3.C
  cf06a8bbf7aa350ee56e4d98d2401d80  gcc/testsuite/g++.old-deja/g++.jason/c-inline.C
  5b2e6d162a150fb1b7a57feab087fb05  gcc/testsuite/g++.old-deja/g++.jason/cast1.C
*************** beb07d7e7193d5b20c559e39f9f833bb  gcc/te
*** 27955,27961 ****
  190eaf169c3c8d34166229478918fdae  gcc/testsuite/g++.old-deja/g++.jason/opeq4.C
  5292a09a4c6bef333b385323117453e7  gcc/testsuite/g++.old-deja/g++.jason/opeq5.C
  1477d34b82967d572fc358778ff2b504  gcc/testsuite/g++.old-deja/g++.jason/opeq6.C
! 2385098fa5acb042b1fcf96583d618a6  gcc/testsuite/g++.old-deja/g++.jason/operator.C
  185eea2532af5023b78f9ce2e69cbacf  gcc/testsuite/g++.old-deja/g++.jason/operator2.C
  fa239349b87333357926a294a44fee03  gcc/testsuite/g++.old-deja/g++.jason/opover.C
  50849d785fd4c47ffa71357f340f5f0e  gcc/testsuite/g++.old-deja/g++.jason/optimize.C
--- 30072,30078 ----
  190eaf169c3c8d34166229478918fdae  gcc/testsuite/g++.old-deja/g++.jason/opeq4.C
  5292a09a4c6bef333b385323117453e7  gcc/testsuite/g++.old-deja/g++.jason/opeq5.C
  1477d34b82967d572fc358778ff2b504  gcc/testsuite/g++.old-deja/g++.jason/opeq6.C
! 6be222f8defae5c87eeedcd68b249b66  gcc/testsuite/g++.old-deja/g++.jason/operator.C
  185eea2532af5023b78f9ce2e69cbacf  gcc/testsuite/g++.old-deja/g++.jason/operator2.C
  fa239349b87333357926a294a44fee03  gcc/testsuite/g++.old-deja/g++.jason/opover.C
  50849d785fd4c47ffa71357f340f5f0e  gcc/testsuite/g++.old-deja/g++.jason/optimize.C
*************** ebdf62f7f3836654110fa87cfd57eb7f  gcc/te
*** 28145,28151 ****
  bf9b9e774390745b6524aacd80dda893  gcc/testsuite/g++.old-deja/g++.jason/template8.C
  8440d3da5688b035d93aa00b1a95c9c6  gcc/testsuite/g++.old-deja/g++.jason/template9.C
  911b0ff6a8a656d49067bdf00345cba8  gcc/testsuite/g++.old-deja/g++.jason/temporary.C
! e0f69a71832e1e64f35fd0c4cbbac0a8  gcc/testsuite/g++.old-deja/g++.jason/temporary2.C
  852f61e7f2559e88807caba3b50ea8e2  gcc/testsuite/g++.old-deja/g++.jason/temporary3.C
  6101f026315976121bdd39bc042b0790  gcc/testsuite/g++.old-deja/g++.jason/temporary4.C
  775bb937779a50dd9c56199cec7eec12  gcc/testsuite/g++.old-deja/g++.jason/temporary5.C
--- 30262,30268 ----
  bf9b9e774390745b6524aacd80dda893  gcc/testsuite/g++.old-deja/g++.jason/template8.C
  8440d3da5688b035d93aa00b1a95c9c6  gcc/testsuite/g++.old-deja/g++.jason/template9.C
  911b0ff6a8a656d49067bdf00345cba8  gcc/testsuite/g++.old-deja/g++.jason/temporary.C
! 06e5079057af500da09ae218efb905de  gcc/testsuite/g++.old-deja/g++.jason/temporary2.C
  852f61e7f2559e88807caba3b50ea8e2  gcc/testsuite/g++.old-deja/g++.jason/temporary3.C
  6101f026315976121bdd39bc042b0790  gcc/testsuite/g++.old-deja/g++.jason/temporary4.C
  775bb937779a50dd9c56199cec7eec12  gcc/testsuite/g++.old-deja/g++.jason/temporary5.C
*************** a2506956134c374b100b47ee83408a71  gcc/te
*** 28659,28665 ****
  a374d562febe9e05f5916b22baa7c15a  gcc/testsuite/g++.old-deja/g++.mike/p2806.C
  d2c99260e4f431ccfe3df52d0417f3e2  gcc/testsuite/g++.old-deja/g++.mike/p2846.C
  d6d68f430bfaba7d33736d647fbc5f9a  gcc/testsuite/g++.old-deja/g++.mike/p2846a.C
! 60c4e62b2d4472f11e5d9c1c76530654  gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
  f7dae9fa1a77cf40152391dc7dd9fe57  gcc/testsuite/g++.old-deja/g++.mike/p2855.C
  f9eabf76220ab85f7858705f32bf365c  gcc/testsuite/g++.old-deja/g++.mike/p2960.C
  f6372b326346bae5cb43cdbb5908973f  gcc/testsuite/g++.old-deja/g++.mike/p3041.C
--- 30776,30782 ----
  a374d562febe9e05f5916b22baa7c15a  gcc/testsuite/g++.old-deja/g++.mike/p2806.C
  d2c99260e4f431ccfe3df52d0417f3e2  gcc/testsuite/g++.old-deja/g++.mike/p2846.C
  d6d68f430bfaba7d33736d647fbc5f9a  gcc/testsuite/g++.old-deja/g++.mike/p2846a.C
! f09e844a0df42c4c231634c481b8b349  gcc/testsuite/g++.old-deja/g++.mike/p2846b.C
  f7dae9fa1a77cf40152391dc7dd9fe57  gcc/testsuite/g++.old-deja/g++.mike/p2855.C
  f9eabf76220ab85f7858705f32bf365c  gcc/testsuite/g++.old-deja/g++.mike/p2960.C
  f6372b326346bae5cb43cdbb5908973f  gcc/testsuite/g++.old-deja/g++.mike/p3041.C
*************** ed134b735a26a8d28537d1024870f261  gcc/te
*** 29340,29346 ****
  05e31669787864f1c11b882a62ef8b59  gcc/testsuite/g++.old-deja/g++.other/overload10.C
  b1ddb4a7184a06404a214bce41835a5e  gcc/testsuite/g++.old-deja/g++.other/overload11.C
  4ce08bd991a3d17e3a64a27b989b2bdb  gcc/testsuite/g++.old-deja/g++.other/overload12.C
! 52b8dcde24c324a2d8dc19ecd0d0eb40  gcc/testsuite/g++.old-deja/g++.other/overload13.C
  1814ba09dcbbc9987c90048e924acf14  gcc/testsuite/g++.old-deja/g++.other/overload14.C
  7ac2eb316531c89193f2d2d44e146cb5  gcc/testsuite/g++.old-deja/g++.other/overload2.C
  14c85fe3998040c710174b388b703406  gcc/testsuite/g++.old-deja/g++.other/overload3.C
--- 31457,31463 ----
  05e31669787864f1c11b882a62ef8b59  gcc/testsuite/g++.old-deja/g++.other/overload10.C
  b1ddb4a7184a06404a214bce41835a5e  gcc/testsuite/g++.old-deja/g++.other/overload11.C
  4ce08bd991a3d17e3a64a27b989b2bdb  gcc/testsuite/g++.old-deja/g++.other/overload12.C
! d4f42e18d3917d980e4457508f736b0a  gcc/testsuite/g++.old-deja/g++.other/overload13.C
  1814ba09dcbbc9987c90048e924acf14  gcc/testsuite/g++.old-deja/g++.other/overload14.C
  7ac2eb316531c89193f2d2d44e146cb5  gcc/testsuite/g++.old-deja/g++.other/overload2.C
  14c85fe3998040c710174b388b703406  gcc/testsuite/g++.old-deja/g++.other/overload3.C
*************** e4bacbe47abba3ebf1104b50d7cf9249  gcc/te
*** 30233,30239 ****
  e890a612b46d6c7b501609a21a4674a8  gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
  e26ad5718ff51449da03b8b3023ebab1  gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
  18090564deaeabb2833db724176f5e3e  gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
! 644730dc4a224c564918f312da13d4fb  gcc/testsuite/g++.old-deja/g++.robertl/README
  7043c0e8dd58f93b9ec2d562d4af77b8  gcc/testsuite/g++.old-deja/g++.robertl/eb10.C
  ee83a1efbd7590614fbf204920c56047  gcc/testsuite/g++.old-deja/g++.robertl/eb102.C
  16b83875b8a1cbbdb43a0c94bc18228d  gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
--- 32350,32356 ----
  e890a612b46d6c7b501609a21a4674a8  gcc/testsuite/g++.old-deja/g++.rfg/00321_01-.C
  e26ad5718ff51449da03b8b3023ebab1  gcc/testsuite/g++.old-deja/g++.rfg/00324_02-.C
  18090564deaeabb2833db724176f5e3e  gcc/testsuite/g++.old-deja/g++.robertl/980310-1.C
! 00396563e739133822dd0a2802d53748  gcc/testsuite/g++.old-deja/g++.robertl/README
  7043c0e8dd58f93b9ec2d562d4af77b8  gcc/testsuite/g++.old-deja/g++.robertl/eb10.C
  ee83a1efbd7590614fbf204920c56047  gcc/testsuite/g++.old-deja/g++.robertl/eb102.C
  16b83875b8a1cbbdb43a0c94bc18228d  gcc/testsuite/g++.old-deja/g++.robertl/eb103.C
*************** f0d75f94742cf514d429d51c4d4df58c  gcc/te
*** 30374,30390 ****
  a885b90302ee9e0cb5c2e13efa009de3  gcc/testsuite/g++.old-deja/g++.warn/inline.C
  d53cb2073c8f36697f63dfe19779eb13  gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
  0c1003d602150141b4f4705044d2624f  gcc/testsuite/g++.old-deja/g++.warn/virt1.C
! ffa93750b4f76bf897309b5d9b1f635e  gcc/testsuite/g++.old-deja/old-deja.exp
! fc2548fe3f5c4917ea6f09e32422f740  gcc/testsuite/g++.target/aarch64/aarch64.exp
! 2daf84a2bbcebee0fcf0559817712401  gcc/testsuite/g++.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
  992600153061bcf9c4f34a765c2c8f7e  gcc/testsuite/g++.target/aarch64/advsimd-intrinsics/pr98852.C
! ebce94697839c9a076df3569eade77eb  gcc/testsuite/g++.target/aarch64/bfloat_cpp_typecheck.C
  c11e5f97e7a5971cc5c5017024f54496  gcc/testsuite/g++.target/aarch64/diag_aka_1.C
  4320de0414b96b162e7734443992dd38  gcc/testsuite/g++.target/aarch64/interference.C
  4d5fd415b9746bcd53f093e8282fb37d  gcc/testsuite/g++.target/aarch64/no_unique_address_1.C
  20b857cf626aad749264f74e19d94347  gcc/testsuite/g++.target/aarch64/no_unique_address_2.C
  ff91378a7ee794cf81b35b9b219bd4b2  gcc/testsuite/g++.target/aarch64/pr103147-1.C
! b15b5a75c4e74aa074353168cf929941  gcc/testsuite/g++.target/aarch64/pr103147-10.C
  51603f65ccab9c1ede5d7110a43c75a1  gcc/testsuite/g++.target/aarch64/pr103147-2.C
  846f32ec61a2c44d9395459e726dc310  gcc/testsuite/g++.target/aarch64/pr103147-3.C
  b45179fb4c2cb954cc481e0a385817d5  gcc/testsuite/g++.target/aarch64/pr103147-4.C
--- 32491,32514 ----
  a885b90302ee9e0cb5c2e13efa009de3  gcc/testsuite/g++.old-deja/g++.warn/inline.C
  d53cb2073c8f36697f63dfe19779eb13  gcc/testsuite/g++.old-deja/g++.warn/iomanip.C
  0c1003d602150141b4f4705044d2624f  gcc/testsuite/g++.old-deja/g++.warn/virt1.C
! 289a2cbda63899dd34585e1494df70a0  gcc/testsuite/g++.old-deja/old-deja.exp
! dd6bafc65c209bc20fbbf0343022e050  gcc/testsuite/g++.target/aarch64/aarch64.exp
! 469c0ad16ca5c5ecc3654919c90dcf62  gcc/testsuite/g++.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
  992600153061bcf9c4f34a765c2c8f7e  gcc/testsuite/g++.target/aarch64/advsimd-intrinsics/pr98852.C
! 323c7e5c5fbc1e627c7630bec9c0ce5c  gcc/testsuite/g++.target/aarch64/bfloat_cpp_typecheck.C
! 00828ba2141dc2185601894f83428c75  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning-align16-O2-extra.C
! cbb30a4d3c73f183db77e6da8a13e3a9  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning-align16-O2.C
! 3dd2d42986c8406e16c1bdb1d5830114  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning-align32-O2-extra.C
! 141a398f5f3cce7f1afc2c97f7d1b806  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning-align32-O2.C
! 961b2f0cd3d022eade41dfa830845a3f  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning-align8-O2.C
! f7378d596bb7308498db40ad34fd8dab  gcc/testsuite/g++.target/aarch64/bitfield-abi-warning.h
! 64610704e2fb7b814ffc84b6b28714a0  gcc/testsuite/g++.target/aarch64/complex-init.C
  c11e5f97e7a5971cc5c5017024f54496  gcc/testsuite/g++.target/aarch64/diag_aka_1.C
  4320de0414b96b162e7734443992dd38  gcc/testsuite/g++.target/aarch64/interference.C
  4d5fd415b9746bcd53f093e8282fb37d  gcc/testsuite/g++.target/aarch64/no_unique_address_1.C
  20b857cf626aad749264f74e19d94347  gcc/testsuite/g++.target/aarch64/no_unique_address_2.C
  ff91378a7ee794cf81b35b9b219bd4b2  gcc/testsuite/g++.target/aarch64/pr103147-1.C
! 54fdce2e7bb47f6289f5740bd0eadf0c  gcc/testsuite/g++.target/aarch64/pr103147-10.C
  51603f65ccab9c1ede5d7110a43c75a1  gcc/testsuite/g++.target/aarch64/pr103147-2.C
  846f32ec61a2c44d9395459e726dc310  gcc/testsuite/g++.target/aarch64/pr103147-3.C
  b45179fb4c2cb954cc481e0a385817d5  gcc/testsuite/g++.target/aarch64/pr103147-4.C
*************** e41794101e1163933e295ca13a5ea408  gcc/te
*** 30393,30398 ****
--- 32517,32523 ----
  02bff38b96b8706f58c3b373fea990f2  gcc/testsuite/g++.target/aarch64/pr103147-7.C
  8931dca56e54462bd94ce184b0a14e21  gcc/testsuite/g++.target/aarch64/pr103147-8.C
  18f8443138a6fbfd030458bc4aee321e  gcc/testsuite/g++.target/aarch64/pr103147-9.C
+ fdd58df958d044ebf7cd930cae94f2b8  gcc/testsuite/g++.target/aarch64/pr107080.C
  1755134bcb84bdbcfd658df7150649e0  gcc/testsuite/g++.target/aarch64/pr89752.C
  ba9d23bf9864be2b6061429c3faa49b7  gcc/testsuite/g++.target/aarch64/pr94052.C
  376b3a47b3ddd89e448a765321d0e622  gcc/testsuite/g++.target/aarch64/pr94514.C
*************** af40dade74feb71f52277a623af87930  gcc/te
*** 30402,30411 ****
  716e0dc0f2b0b7fa20373a1a78ece033  gcc/testsuite/g++.target/aarch64/pr95726.C
  1ce9a3af843eab0dca2dbb5193fb0db2  gcc/testsuite/g++.target/aarch64/return_address_sign_ab_exception.C
  1649b9447d9bcb87e619e52bd2ad8119  gcc/testsuite/g++.target/aarch64/return_address_sign_b_exception.C
! 90ae5414c17860a635feef8d1b2d1fb4  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
  a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
! 2b043d6919e106347f4c2cef41a1f11f  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! c18222f032e2d76ac4ce26ad8eee2806  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
  a4694db6f43496d141f7d03b0bad5454  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.C
  c9bec53dca7f345d3812bc87a82ac56e  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.h
  c264d7575a5c60660881b415fc9e52ba  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_2.C
--- 32527,32536 ----
  716e0dc0f2b0b7fa20373a1a78ece033  gcc/testsuite/g++.target/aarch64/pr95726.C
  1ce9a3af843eab0dca2dbb5193fb0db2  gcc/testsuite/g++.target/aarch64/return_address_sign_ab_exception.C
  1649b9447d9bcb87e619e52bd2ad8119  gcc/testsuite/g++.target/aarch64/return_address_sign_b_exception.C
! 3f3bba8a186e82e1bd1f9ee32fb65820  gcc/testsuite/g++.target/aarch64/sve/aarch64-sve.exp
  a6360472eed92aa68d9de7e0dcbbc077  gcc/testsuite/g++.target/aarch64/sve/abd_1.C
! f2bcd162e408cdc37b1cd21ba8fe8efe  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! 164b509945fdbc4a3790bff8c11a7c8e  gcc/testsuite/g++.target/aarch64/sve/acle/aarch64-sve-acle.exp
  a4694db6f43496d141f7d03b0bad5454  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.C
  c9bec53dca7f345d3812bc87a82ac56e  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_1.h
  c264d7575a5c60660881b415fc9e52ba  gcc/testsuite/g++.target/aarch64/sve/acle/general-c++/add_2.C
*************** f3ce91773bd0b4a3127c481ccd50f20e  gcc/te
*** 30532,30558 ****
  57a0aa7896383cbb0273342d58a4a7b5  gcc/testsuite/g++.target/aarch64/sve/max_1.C
  ab6c5e333d0a740ae5ecff69966813a2  gcc/testsuite/g++.target/aarch64/sve/min_1.C
  6bb662ee32d75fad86cbbcc07aab9998  gcc/testsuite/g++.target/aarch64/sve/pr102252.C
! 032fe0d5fa79aaf6c36c32fb19a50c00  gcc/testsuite/g++.target/aarch64/sve/pr96974.C
  6c0e94c363caf9e62df35ea98b4918ed  gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C
  e64000c150bb204c31dca884ee33dd4f  gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C
  93beeb2f54f185bcaa9bbc741e3969f0  gcc/testsuite/g++.target/aarch64/sve/pr99216.C
! 7a3f6881450cc6c3e64742a99fe7ce38  gcc/testsuite/g++.target/aarch64/sve/pr99766.C
  2593683d9c7386135d4e8b8ef8a59b7a  gcc/testsuite/g++.target/aarch64/sve/pr99781.C
  6979d0ef19d61a437acf8559362a5af8  gcc/testsuite/g++.target/aarch64/sve/pr99813.C
  eb290283439217e61bf7146ea947386f  gcc/testsuite/g++.target/aarch64/sve/static-var-in-template.C
  221b0724e04f13318fe418921311ae33  gcc/testsuite/g++.target/aarch64/sve/tls_2.C
  7d111b2af4cdd362d19027877d6ff20b  gcc/testsuite/g++.target/aarch64/sve/vcond_1.C
  aa928203aafdb1f6793fe73d77390fc9  gcc/testsuite/g++.target/aarch64/sve/vcond_1_run.C
! a1a42dd995b59da298bae8bcaad1b1c3  gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! cfbfc60ac3aac9250378ca80229421f7  gcc/testsuite/g++.target/arm/arm.exp
  99b5cde1aa5ba8d3c40ce3af92ef40f5  gcc/testsuite/g++.target/arm/bfloat_cpp_typecheck.C
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
  817f6b8bbc13fc92c8ffbe3bcaf7963d  gcc/testsuite/g++.target/arm/interference.C
! 3e16bc7c86081cf42bd4e6913125c90d  gcc/testsuite/g++.target/arm/mve.exp
  fefb1ea34abe2e49510cd8293f8c14e5  gcc/testsuite/g++.target/arm/no_unique_address_1.C
  bb7292912fa6d506586421d0df58412b  gcc/testsuite/g++.target/arm/no_unique_address_2.C
  4c06abe7b8d5bd183704907c3993392c  gcc/testsuite/g++.target/arm/pr102842.C
  5d0bfb5484f8db2f1a2556bb0ea6394b  gcc/testsuite/g++.target/arm/pr103676.C
  86ce099311b8a462979885c1f82c41db  gcc/testsuite/g++.target/arm/pr81497.C
  c66ac2233f3efac56ec64b9294b3708d  gcc/testsuite/g++.target/arm/pr95726.C
  881bcc41183f756e0d7cbda13b2b51df  gcc/testsuite/g++.target/arm/pr99593.C
--- 32657,32686 ----
  57a0aa7896383cbb0273342d58a4a7b5  gcc/testsuite/g++.target/aarch64/sve/max_1.C
  ab6c5e333d0a740ae5ecff69966813a2  gcc/testsuite/g++.target/aarch64/sve/min_1.C
  6bb662ee32d75fad86cbbcc07aab9998  gcc/testsuite/g++.target/aarch64/sve/pr102252.C
! 0dc60096927b240a4fb696311ad6b402  gcc/testsuite/g++.target/aarch64/sve/pr107920.C
! 29fcc7f7695fcab2e4779698100f3053  gcc/testsuite/g++.target/aarch64/sve/pr96974.C
  6c0e94c363caf9e62df35ea98b4918ed  gcc/testsuite/g++.target/aarch64/sve/pr98177-1.C
  e64000c150bb204c31dca884ee33dd4f  gcc/testsuite/g++.target/aarch64/sve/pr98177-2.C
  93beeb2f54f185bcaa9bbc741e3969f0  gcc/testsuite/g++.target/aarch64/sve/pr99216.C
! d4ca4a940822b140b8a1ada40f4e60af  gcc/testsuite/g++.target/aarch64/sve/pr99766.C
  2593683d9c7386135d4e8b8ef8a59b7a  gcc/testsuite/g++.target/aarch64/sve/pr99781.C
  6979d0ef19d61a437acf8559362a5af8  gcc/testsuite/g++.target/aarch64/sve/pr99813.C
  eb290283439217e61bf7146ea947386f  gcc/testsuite/g++.target/aarch64/sve/static-var-in-template.C
  221b0724e04f13318fe418921311ae33  gcc/testsuite/g++.target/aarch64/sve/tls_2.C
  7d111b2af4cdd362d19027877d6ff20b  gcc/testsuite/g++.target/aarch64/sve/vcond_1.C
  aa928203aafdb1f6793fe73d77390fc9  gcc/testsuite/g++.target/aarch64/sve/vcond_1_run.C
! 55af7fc5f0e1638b09d950cbdd5d53ca  gcc/testsuite/g++.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! 1c3a0ba840e20c61644cff72f913fa82  gcc/testsuite/g++.target/arm/arm.exp
  99b5cde1aa5ba8d3c40ce3af92ef40f5  gcc/testsuite/g++.target/arm/bfloat_cpp_typecheck.C
  e64278e516f7ebae5481e326b54f28dd  gcc/testsuite/g++.target/arm/cde_mve.C
  817f6b8bbc13fc92c8ffbe3bcaf7963d  gcc/testsuite/g++.target/arm/interference.C
! 5ae1654fe16dc1025119c40ebe0adba4  gcc/testsuite/g++.target/arm/mve.exp
  fefb1ea34abe2e49510cd8293f8c14e5  gcc/testsuite/g++.target/arm/no_unique_address_1.C
  bb7292912fa6d506586421d0df58412b  gcc/testsuite/g++.target/arm/no_unique_address_2.C
+ 191b23294c5891b3d18d01e5979a706f  gcc/testsuite/g++.target/arm/pac-1.C
  4c06abe7b8d5bd183704907c3993392c  gcc/testsuite/g++.target/arm/pr102842.C
  5d0bfb5484f8db2f1a2556bb0ea6394b  gcc/testsuite/g++.target/arm/pr103676.C
+ d8845d0576030f586cc8563067a1c9ed  gcc/testsuite/g++.target/arm/pr107080.C
  86ce099311b8a462979885c1f82c41db  gcc/testsuite/g++.target/arm/pr81497.C
  c66ac2233f3efac56ec64b9294b3708d  gcc/testsuite/g++.target/arm/pr95726.C
  881bcc41183f756e0d7cbda13b2b51df  gcc/testsuite/g++.target/arm/pr99593.C
*************** c174ff7705931b0de0e317387956baa9  gcc/te
*** 30579,30591 ****
  989085cee5b240a6124a1eb805392cfd  gcc/testsuite/g++.target/i386/avx512vl-pr96246-2.C
  4b4064fa7873d4cb7157ac2a64b60aa1  gcc/testsuite/g++.target/i386/avx512vl-pr98537-1.C
  6fb49c93f0095a942a2bf1dd276425d5  gcc/testsuite/g++.target/i386/avx512vl-pr98537-2.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
  ea7a625a5c087724f70333c1b6ad80fc  gcc/testsuite/g++.target/i386/empty-class1.C
! fc6584cb6450a43c850eb626ce94a8d0  gcc/testsuite/g++.target/i386/empty-class2.C
! 59baaf7d8dc52c0829364fc8f3bc8cf9  gcc/testsuite/g++.target/i386/float16-1.C
  9925d7b9c6c837b57951d0f9591f8d67  gcc/testsuite/g++.target/i386/float16-2.C
  4e150fddd678b3b96442fa875ac8becb  gcc/testsuite/g++.target/i386/float16-3.C
! 0c244671d8508bc0dbd62c69231c32b3  gcc/testsuite/g++.target/i386/i386.exp
  f23b91fd4df934b4b8cb89c14e082b05  gcc/testsuite/g++.target/i386/interference.C
  0ec10c6dd8c46db7332b15201fba84ba  gcc/testsuite/g++.target/i386/m128-check.h
  a1f73425439294ed2e5c470eb6a67f31  gcc/testsuite/g++.target/i386/m256-check.h
--- 32707,32730 ----
  989085cee5b240a6124a1eb805392cfd  gcc/testsuite/g++.target/i386/avx512vl-pr96246-2.C
  4b4064fa7873d4cb7157ac2a64b60aa1  gcc/testsuite/g++.target/i386/avx512vl-pr98537-1.C
  6fb49c93f0095a942a2bf1dd276425d5  gcc/testsuite/g++.target/i386/avx512vl-pr98537-2.C
+ 2d64a3afc50933646d007d62c1909ff4  gcc/testsuite/g++.target/i386/bfloat_cpp_typecheck.C
  7a33fea3b2ecb10736e762b211f6ae42  gcc/testsuite/g++.target/i386/crc32-4.C
  ea7a625a5c087724f70333c1b6ad80fc  gcc/testsuite/g++.target/i386/empty-class1.C
! 5c480abcec0d76095612ae8099a7315e  gcc/testsuite/g++.target/i386/empty-class2.C
! 45bc018f249f4f97e104fe727aaae825  gcc/testsuite/g++.target/i386/excess-precision-1.C
! 59319b76414fe2119e4d593b49456c83  gcc/testsuite/g++.target/i386/excess-precision-10.C
! d91b252793a0b04f4668191000679cc7  gcc/testsuite/g++.target/i386/excess-precision-11.C
! 835daa34288d20c58165e4272e741e24  gcc/testsuite/g++.target/i386/excess-precision-12.C
! 5807ce1840c49f4392656d581d36d55e  gcc/testsuite/g++.target/i386/excess-precision-2.C
! 2624bf5568ae8ff45b560511aac8f6de  gcc/testsuite/g++.target/i386/excess-precision-3.C
! ce8e2501180e952788ad7bfbfebcd617  gcc/testsuite/g++.target/i386/excess-precision-4.C
! 2074f12169b00cb50c5b05916c02713b  gcc/testsuite/g++.target/i386/excess-precision-5.C
! 2c47cb7ec62489e252ef2aa1520d9f23  gcc/testsuite/g++.target/i386/excess-precision-6.C
! 994c5982d16213d6d84e4b1880ce3d1b  gcc/testsuite/g++.target/i386/excess-precision-8.C
! 6c49e319045e20c829295cb8999eef61  gcc/testsuite/g++.target/i386/float16-1.C
  9925d7b9c6c837b57951d0f9591f8d67  gcc/testsuite/g++.target/i386/float16-2.C
  4e150fddd678b3b96442fa875ac8becb  gcc/testsuite/g++.target/i386/float16-3.C
! 82b75f592bce87de9fae85092e0e0366  gcc/testsuite/g++.target/i386/i386.exp
  f23b91fd4df934b4b8cb89c14e082b05  gcc/testsuite/g++.target/i386/interference.C
  0ec10c6dd8c46db7332b15201fba84ba  gcc/testsuite/g++.target/i386/m128-check.h
  a1f73425439294ed2e5c470eb6a67f31  gcc/testsuite/g++.target/i386/m256-check.h
*************** d7d81744846ecefe8f7677db1eb870be  gcc/te
*** 30598,30604 ****
  7bd56e010086961d6b148fa238972ab3  gcc/testsuite/g++.target/i386/mv13.C
  51ba34bcfd4aa85e44bfffe933c6081a  gcc/testsuite/g++.target/i386/mv14.C
  fd2faa1ce293884909e71ac1de0fa72f  gcc/testsuite/g++.target/i386/mv15.C
! 0949ffb5d1b695e462fbb444422e1c6f  gcc/testsuite/g++.target/i386/mv16.C
  5d29a5380a7809fd409e2a8fbce62e46  gcc/testsuite/g++.target/i386/mv17.C
  fefb95a7923263c40f6ccbf9f5345d5e  gcc/testsuite/g++.target/i386/mv18.C
  2020e957a2dbc426e1e4a2974db97293  gcc/testsuite/g++.target/i386/mv19.C
--- 32737,32743 ----
  7bd56e010086961d6b148fa238972ab3  gcc/testsuite/g++.target/i386/mv13.C
  51ba34bcfd4aa85e44bfffe933c6081a  gcc/testsuite/g++.target/i386/mv14.C
  fd2faa1ce293884909e71ac1de0fa72f  gcc/testsuite/g++.target/i386/mv15.C
! 59871e992cb663ef43100be7ad26d5d3  gcc/testsuite/g++.target/i386/mv16.C
  5d29a5380a7809fd409e2a8fbce62e46  gcc/testsuite/g++.target/i386/mv17.C
  fefb95a7923263c40f6ccbf9f5345d5e  gcc/testsuite/g++.target/i386/mv18.C
  2020e957a2dbc426e1e4a2974db97293  gcc/testsuite/g++.target/i386/mv19.C
*************** bc255ba4628b94d5377f0ba915ad26da  gcc/te
*** 30612,30621 ****
  c3abd0fb44ca490064aaa6988814d40c  gcc/testsuite/g++.target/i386/mv26.C
  203c2fb05767e713a362682a2dcedfc7  gcc/testsuite/g++.target/i386/mv27.C
  015182fced49b5ec2160104b1e1fcfd5  gcc/testsuite/g++.target/i386/mv28.C
! dac0893381524d0f9aaec2e84e62637f  gcc/testsuite/g++.target/i386/mv29.C
  bad9a677892adffe2c45653797aad55c  gcc/testsuite/g++.target/i386/mv3.C
  8e16cb4ef8b3ee3b728e21112c7331d1  gcc/testsuite/g++.target/i386/mv30.C
  6c2437562ef96defbdcf21aa49f5676f  gcc/testsuite/g++.target/i386/mv31.C
  253207ecb3f4d04076efa9253026fa4c  gcc/testsuite/g++.target/i386/mv4.C
  dc39143004995c38b524d1b929c9c96c  gcc/testsuite/g++.target/i386/mv5.C
  01094409b78d48ec67bbf367448ecc93  gcc/testsuite/g++.target/i386/mv6.C
--- 32751,32761 ----
  c3abd0fb44ca490064aaa6988814d40c  gcc/testsuite/g++.target/i386/mv26.C
  203c2fb05767e713a362682a2dcedfc7  gcc/testsuite/g++.target/i386/mv27.C
  015182fced49b5ec2160104b1e1fcfd5  gcc/testsuite/g++.target/i386/mv28.C
! 3dc8383e8aa0e822e68ee82dc2cbbc5f  gcc/testsuite/g++.target/i386/mv29.C
  bad9a677892adffe2c45653797aad55c  gcc/testsuite/g++.target/i386/mv3.C
  8e16cb4ef8b3ee3b728e21112c7331d1  gcc/testsuite/g++.target/i386/mv30.C
  6c2437562ef96defbdcf21aa49f5676f  gcc/testsuite/g++.target/i386/mv31.C
+ c28bc9a98901e25a1c14b424b4f4c48d  gcc/testsuite/g++.target/i386/mv32.C
  253207ecb3f4d04076efa9253026fa4c  gcc/testsuite/g++.target/i386/mv4.C
  dc39143004995c38b524d1b929c9c96c  gcc/testsuite/g++.target/i386/mv5.C
  01094409b78d48ec67bbf367448ecc93  gcc/testsuite/g++.target/i386/mv6.C
*************** e7c4ad8e3b4d2a6588c231359cacaffb  gcc/te
*** 30646,30651 ****
--- 32786,32792 ----
  55dc02825e792c771d7116580948fd0d  gcc/testsuite/g++.target/i386/pr102566-5b.C
  90fdb9bef2585466a4828d4b7df1d6ed  gcc/testsuite/g++.target/i386/pr102566-6a.C
  14b2c1c0042744a49eb44819dbaab8ba  gcc/testsuite/g++.target/i386/pr102566-6b.C
+ 73029ff4d83bb0d7cc78e89fa4b99c22  gcc/testsuite/g++.target/i386/pr102566-7.C
  5bf0e7dd3443f6ba12f2fc4e9513d0d5  gcc/testsuite/g++.target/i386/pr102639.C
  2a03baff08b5b7bdeb8d3633c49032bb  gcc/testsuite/g++.target/i386/pr103012.C
  d14b3d4a9b5fcacba2b980352b05c8e3  gcc/testsuite/g++.target/i386/pr103696.C
*************** a180acec30b50a433b12979e550fdfba  gcc/te
*** 30675,30681 ****
--- 32816,32831 ----
  a87c63cefd62030b99bd90bcd75c66f2  gcc/testsuite/g++.target/i386/pr103973-9.C
  528fa6bfe03c4eae15918407205bb139  gcc/testsuite/g++.target/i386/pr104533.C
  e22bf5b2b8a89ad669b8340531ba8f41  gcc/testsuite/g++.target/i386/pr104540.C
+ 54c71772157350cf9e34459b4fae5d2b  gcc/testsuite/g++.target/i386/pr105593.C
+ af5455e94a9a32cc87a26feeea2d2288  gcc/testsuite/g++.target/i386/pr105638.C
  2764c2246b3d183e94097026d61a69a1  gcc/testsuite/g++.target/i386/pr105953.C
+ b745a307c6018d88262928962e2684e9  gcc/testsuite/g++.target/i386/pr105980.C
+ 8aa5b61e36e8dac3c3e9d70c6f0edadc  gcc/testsuite/g++.target/i386/pr106180-1.C
+ 8b43a5abf835a65b01bede55be8dd67a  gcc/testsuite/g++.target/i386/pr106627.C
+ e10a0652aff7df3b5d31aabc5b83fc4e  gcc/testsuite/g++.target/i386/pr106875.C
+ 591a879661c63273581e832f22c0f96e  gcc/testsuite/g++.target/i386/pr107404.C
+ 67d8378f149029e8703f825a6227065a  gcc/testsuite/g++.target/i386/pr108711.C
+ 198bde5a37731f00084d791cde389e8b  gcc/testsuite/g++.target/i386/pr108934.C
  55fb67abf6517f92b1a0240d2c06b5c5  gcc/testsuite/g++.target/i386/pr35513-1.C
  14dde546e4eefec7aa6d1ac41261cb16  gcc/testsuite/g++.target/i386/pr35513-2.C
  1c706f97b6d93c0124dc4a203c98f6d2  gcc/testsuite/g++.target/i386/pr57362.C
*************** a9182e6d928d363b56a91bded6231bb9  gcc/te
*** 30685,30690 ****
--- 32835,32841 ----
  4ec9a5753441130dc533fd918508a7c7  gcc/testsuite/g++.target/i386/pr80566-1.C
  86d74fadde941f269d85c201b35ecf20  gcc/testsuite/g++.target/i386/pr80566-2.C
  819ecf07fe897248c2153cdb9dee2292  gcc/testsuite/g++.target/i386/pr82625.C
+ 1356c14cb02d7fb590d2c63c2aabdd63  gcc/testsuite/g++.target/i386/pr85048.C
  595e95a52a8e7241531daede25387052  gcc/testsuite/g++.target/i386/pr85329-2.C
  83ee00a9e7a064242ad6f43457dfa886  gcc/testsuite/g++.target/i386/pr85329.C
  7eeddec0420d9a51d61e3c4c9be6d594  gcc/testsuite/g++.target/i386/pr85334-1.C
*************** ae2a93d8f19ffa52e3299875575fb012  gcc/te
*** 30702,30707 ****
--- 32853,32859 ----
  69c6d8a6296d89c19cf32c074329d59e  gcc/testsuite/g++.target/i386/pr90424-1.C
  2b13106e558a04c6c56ecbecb130e2e2  gcc/testsuite/g++.target/i386/pr90424-2.C
  dfc04a3ac4026ae2ece42bfe273b5aff  gcc/testsuite/g++.target/i386/pr91605.C
+ 1eae4ca8d0bcb53bb3df8cbbd6a9593e  gcc/testsuite/g++.target/i386/pr91681.C
  776455f9c7adca8d6d30440fad19263f  gcc/testsuite/g++.target/i386/pr92354.C
  b36d1f7d78bc796a0f4968f5bb51711a  gcc/testsuite/g++.target/i386/pr92788.C
  ce4ef4a52cb8cca61d3ad37ccd43c5c3  gcc/testsuite/g++.target/i386/pr93828.C
*************** a621b799eff193996043d9d5462e5c27  gcc/te
*** 30720,30734 ****
  821d1f6cc7812ffc5220fc45c484c00f  gcc/testsuite/g++.target/i386/sse4_1-pr54700-1.C
  05e47f652ea4bc7c8df9bae20aaaa2b4  gcc/testsuite/g++.target/i386/sse4_1-pr54700-2.C
  6d0d9132ecd5c558bd1ec20dcee32d5d  gcc/testsuite/g++.target/i386/vec-tmpl1.C
! 83617f6ce4e2c1f57ea571b083200a12  gcc/testsuite/g++.target/loongarch/loongarch.exp
  3e379ce66f2b5fd83481c50aad661033  gcc/testsuite/g++.target/loongarch/pr106096.C
  0326a0afb833c5dbd49b5d623c8dd93b  gcc/testsuite/g++.target/mips/cxx17_empty_base.C
! c56f5e56a00b90a56d9dd4ef483dbda1  gcc/testsuite/g++.target/mips/mips.exp
  dcd3af289f36f150df28be99b5efc7ed  gcc/testsuite/g++.target/mips/pr102024.C
  436543179ef45c1a7c596bfa70c8ef1d  gcc/testsuite/g++.target/msp430/data-attributes.C
! c809a17796021867ed7808be437cfa29  gcc/testsuite/g++.target/msp430/msp430.exp
  5848d6741a53192ff50fe53e91b24df1  gcc/testsuite/g++.target/nios2/hello-pie.C
! 16100719ebd0336852fd4cf76239d792  gcc/testsuite/g++.target/nios2/nios2.exp
  866ae57bf40de984200cce23327a2675  gcc/testsuite/g++.target/powerpc/altivec-1.C
  b4f090ce0f4d5a698db06ef3858c0a8b  gcc/testsuite/g++.target/powerpc/altivec-10.C
  b42156baabeb4c76393e9c82a906d6ac  gcc/testsuite/g++.target/powerpc/altivec-11.C
--- 32872,32889 ----
  821d1f6cc7812ffc5220fc45c484c00f  gcc/testsuite/g++.target/i386/sse4_1-pr54700-1.C
  05e47f652ea4bc7c8df9bae20aaaa2b4  gcc/testsuite/g++.target/i386/sse4_1-pr54700-2.C
  6d0d9132ecd5c558bd1ec20dcee32d5d  gcc/testsuite/g++.target/i386/vec-tmpl1.C
! d4dcded6122bb77c0450fd18568c030b  gcc/testsuite/g++.target/i386/vect-bfloat16-1.C
! 580dcc09db78d63c393f7d3c75b38ada  gcc/testsuite/g++.target/loongarch/bytepick.C
! daf40cbe22c01f26a5655b3c8ce6f5a7  gcc/testsuite/g++.target/loongarch/loongarch.exp
  3e379ce66f2b5fd83481c50aad661033  gcc/testsuite/g++.target/loongarch/pr106096.C
+ 93be464703e23aa90bcb86e5faf6250d  gcc/testsuite/g++.target/loongarch/pr106828.C
  0326a0afb833c5dbd49b5d623c8dd93b  gcc/testsuite/g++.target/mips/cxx17_empty_base.C
! 57a6c9f80be13720acfbbdbeef414716  gcc/testsuite/g++.target/mips/mips.exp
  dcd3af289f36f150df28be99b5efc7ed  gcc/testsuite/g++.target/mips/pr102024.C
  436543179ef45c1a7c596bfa70c8ef1d  gcc/testsuite/g++.target/msp430/data-attributes.C
! a7c5e3a5228d3ef0c41fbf94725ca379  gcc/testsuite/g++.target/msp430/msp430.exp
  5848d6741a53192ff50fe53e91b24df1  gcc/testsuite/g++.target/nios2/hello-pie.C
! 6cf9aca3dbf405fb981dcfebae81a27b  gcc/testsuite/g++.target/nios2/nios2.exp
  866ae57bf40de984200cce23327a2675  gcc/testsuite/g++.target/powerpc/altivec-1.C
  b4f090ce0f4d5a698db06ef3858c0a8b  gcc/testsuite/g++.target/powerpc/altivec-10.C
  b42156baabeb4c76393e9c82a906d6ac  gcc/testsuite/g++.target/powerpc/altivec-11.C
*************** ace1668590f04da8d87791b2b820e239  gcc/te
*** 30758,30766 ****
  672bbca6e5a2428df4bd9349a317ae28  gcc/testsuite/g++.target/powerpc/altivec-types-4.C
  e70f88144abfc6a69a1241301a9b5e68  gcc/testsuite/g++.target/powerpc/const2.C
  bd1c35be302338df14b1aa330813797d  gcc/testsuite/g++.target/powerpc/darwin-minversion-1.C
! 47b35306d5dd665c6e6a343068bc3e24  gcc/testsuite/g++.target/powerpc/powerpc.exp
  bafc15005abdfe9131f6074efde175eb  gcc/testsuite/g++.target/powerpc/ppc64-sighandle-cr.C
  bac7601eaf931ebd7c595a2dc9672d64  gcc/testsuite/g++.target/powerpc/pr102024.C
  63b698681e4a076eb88feccb3e6373df  gcc/testsuite/g++.target/powerpc/pr94707-1.C
  75c93ba90b3ca18a6d5c5264e2816651  gcc/testsuite/g++.target/powerpc/pr94707-2.C
  a63f2ade84bc38838f3986dfc4bc9d85  gcc/testsuite/g++.target/powerpc/pr94707-3.C
--- 32913,32938 ----
  672bbca6e5a2428df4bd9349a317ae28  gcc/testsuite/g++.target/powerpc/altivec-types-4.C
  e70f88144abfc6a69a1241301a9b5e68  gcc/testsuite/g++.target/powerpc/const2.C
  bd1c35be302338df14b1aa330813797d  gcc/testsuite/g++.target/powerpc/darwin-minversion-1.C
! 6b7d3a91025a24d70e7e6f509f59cd80  gcc/testsuite/g++.target/powerpc/powerpc.exp
  bafc15005abdfe9131f6074efde175eb  gcc/testsuite/g++.target/powerpc/ppc64-sighandle-cr.C
+ ca310178fe7c147ffe915bbd9c124ee3  gcc/testsuite/g++.target/powerpc/pr101168.C
+ a873678a5188427c7ceb88e3a408ce84  gcc/testsuite/g++.target/powerpc/pr101322.C
  bac7601eaf931ebd7c595a2dc9672d64  gcc/testsuite/g++.target/powerpc/pr102024.C
+ a786ad78bd3d3301483d3f57c15f4634  gcc/testsuite/g++.target/powerpc/pr105485.C
+ 2034aad446ec78a87b23d863575c1d87  gcc/testsuite/g++.target/powerpc/pr65240-1.C
+ ee885d4799df9042b7bb7afcb3882d1e  gcc/testsuite/g++.target/powerpc/pr65240-2.C
+ 9bd86a0f5ddd41ef7b331e42e57dcf66  gcc/testsuite/g++.target/powerpc/pr65240-3.C
+ 180cb7fcfd4966da44b92f60ec09c0c1  gcc/testsuite/g++.target/powerpc/pr65240-4.C
+ ff90a96b0f5bda64aea35147770302e1  gcc/testsuite/g++.target/powerpc/pr65240.h
+ 383dd26e2324b42f577a7d7cb32d7893  gcc/testsuite/g++.target/powerpc/pr65242.C
+ 24381524fac7caec80af3531781d53b2  gcc/testsuite/g++.target/powerpc/pr67211.C
+ bb774dd69ce8198cfbd44cb67a8fce65  gcc/testsuite/g++.target/powerpc/pr71294.C
+ 454b0f87867ea7aa84d83652eeff7620  gcc/testsuite/g++.target/powerpc/pr83660.C
+ 29c053c9691c1bec01703b8e94dfa7ca  gcc/testsuite/g++.target/powerpc/pr84264.C
+ 6506b5d4622fca5aede450c8f7e5860a  gcc/testsuite/g++.target/powerpc/pr84279.C
+ c6d8b59232f195f134f195c54026fd69  gcc/testsuite/g++.target/powerpc/pr85657.C
+ 9755e5a0fd101c2554c1d3cb3fa79a6c  gcc/testsuite/g++.target/powerpc/pr90259.C
+ 68083424b21377a269cb1f4b7edce028  gcc/testsuite/g++.target/powerpc/pr93974.C
  63b698681e4a076eb88feccb3e6373df  gcc/testsuite/g++.target/powerpc/pr94707-1.C
  75c93ba90b3ca18a6d5c5264e2816651  gcc/testsuite/g++.target/powerpc/pr94707-2.C
  a63f2ade84bc38838f3986dfc4bc9d85  gcc/testsuite/g++.target/powerpc/pr94707-3.C
*************** dc88c4a16670b88873deaa496d62f7e0  gcc/te
*** 30776,30788 ****
  d524c0f12362d29431b637fe039b54af  gcc/testsuite/g++.target/powerpc/uncaught3.C
  36d64226b0cf06f34f4cc117335fae5d  gcc/testsuite/g++.target/powerpc/undef-bool-1.C
  fb915623fe5d0c1208c53c6de33e722a  gcc/testsuite/g++.target/powerpc/undef-bool-3.C
  84541f8edc35b61b62256dbd71b731b8  gcc/testsuite/g++.target/riscv/call-with-empty-struct-float.C
  0224a15f72de72af47e3eeb572c2d4eb  gcc/testsuite/g++.target/riscv/call-with-empty-struct-int.C
  13fbd035f1483c414ba4dab326db8f4e  gcc/testsuite/g++.target/riscv/call-with-empty-struct.H
  bda24fd764e95be6398892d48adf8be7  gcc/testsuite/g++.target/riscv/frflags.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
! 80ce8b9351d212eeffc9d9ea6cfef75a  gcc/testsuite/g++.target/riscv/riscv.exp
  74f02d12b4213817c3460e1eebfa9eae  gcc/testsuite/g++.target/s390/mi-thunk.C
  93b786c04aacd9a92606e85c55410461  gcc/testsuite/g++.target/s390/pr100281-1.C
  4b5a44a1819e9404a2b1305798c19846  gcc/testsuite/g++.target/s390/pr100281-2.C
--- 32948,32988 ----
  d524c0f12362d29431b637fe039b54af  gcc/testsuite/g++.target/powerpc/uncaught3.C
  36d64226b0cf06f34f4cc117335fae5d  gcc/testsuite/g++.target/powerpc/undef-bool-1.C
  fb915623fe5d0c1208c53c6de33e722a  gcc/testsuite/g++.target/powerpc/undef-bool-3.C
+ 4b11a77cc6e6a6d127ce6f11252f605a  gcc/testsuite/g++.target/riscv/_Float16.C
  84541f8edc35b61b62256dbd71b731b8  gcc/testsuite/g++.target/riscv/call-with-empty-struct-float.C
  0224a15f72de72af47e3eeb572c2d4eb  gcc/testsuite/g++.target/riscv/call-with-empty-struct-int.C
  13fbd035f1483c414ba4dab326db8f4e  gcc/testsuite/g++.target/riscv/call-with-empty-struct.H
  bda24fd764e95be6398892d48adf8be7  gcc/testsuite/g++.target/riscv/frflags.C
  4c45e102d6dd19ee08a476904b64542d  gcc/testsuite/g++.target/riscv/pr96759.C
  ac37e529bda1269045c3681cc4b425dd  gcc/testsuite/g++.target/riscv/pr97682.C
! 2f4366fc92a843022bf9cc8903dceb8e  gcc/testsuite/g++.target/riscv/riscv.exp
! f6e16583372329bd6bde0147a26cd404  gcc/testsuite/g++.target/riscv/rvv/base/bug-1.C
! 6ab45ab0541a43c239ecf0e7c427dc6b  gcc/testsuite/g++.target/riscv/rvv/base/bug-10.C
! 5eba5ac05d12b0e3e471a2fea20bb17e  gcc/testsuite/g++.target/riscv/rvv/base/bug-11.C
! 32900c8e77b2fd755c379bd1d88df622  gcc/testsuite/g++.target/riscv/rvv/base/bug-12.C
! 6fc61af31804fac26886073c6e13f1f7  gcc/testsuite/g++.target/riscv/rvv/base/bug-13.C
! 95c3932c982046814b2c7f9fa475fb74  gcc/testsuite/g++.target/riscv/rvv/base/bug-14.C
! 2fab97050dc1deba33670548bd6ccaf4  gcc/testsuite/g++.target/riscv/rvv/base/bug-15.C
! d2e40b3dbee3212c1c154d1dcb771367  gcc/testsuite/g++.target/riscv/rvv/base/bug-16.C
! c39be0597317abafaa3ddc8dd2bceaf8  gcc/testsuite/g++.target/riscv/rvv/base/bug-17.C
! cc9ebb50d390eb0de12a3eb2928b08e5  gcc/testsuite/g++.target/riscv/rvv/base/bug-18.C
! 79fba44ec0068581ec1074a18c8ee1dd  gcc/testsuite/g++.target/riscv/rvv/base/bug-19.C
! 08cceb8f28134f8a66a6545899368d86  gcc/testsuite/g++.target/riscv/rvv/base/bug-2.C
! a55d3efc7f95624e7979de502134f8cb  gcc/testsuite/g++.target/riscv/rvv/base/bug-20.C
! fb86a7339c2fdd23671a828022581a5a  gcc/testsuite/g++.target/riscv/rvv/base/bug-21.C
! 3eda6b16625ab3d827324a6abc1f4fd3  gcc/testsuite/g++.target/riscv/rvv/base/bug-22.C
! 0b0abae07b41d7bb2abcaeea44afae80  gcc/testsuite/g++.target/riscv/rvv/base/bug-23.C
! 6d97ed2240b9ec967f25c0b1cbfed95f  gcc/testsuite/g++.target/riscv/rvv/base/bug-3.C
! 28af4fcdf924027c69a0b97d00796678  gcc/testsuite/g++.target/riscv/rvv/base/bug-4.C
! 6bc5242b2bde29c30c2f745674caf5c0  gcc/testsuite/g++.target/riscv/rvv/base/bug-5.C
! 6e75d327923b9aeca4114cb44ad0d372  gcc/testsuite/g++.target/riscv/rvv/base/bug-6.C
! 5e90b3a53b87f54f55225d461b8ded29  gcc/testsuite/g++.target/riscv/rvv/base/bug-7.C
! 4c1f70ac8e545aacdda90aec07547d03  gcc/testsuite/g++.target/riscv/rvv/base/bug-8.C
! 13e04297880b27ff469b2278c95363ef  gcc/testsuite/g++.target/riscv/rvv/base/bug-9.C
! 52fb0d5342b2dcbc51ecf7bc9b7daff3  gcc/testsuite/g++.target/riscv/rvv/base/exception-1.C
! 33fe4f27a4106e9aec819d1ad6cea265  gcc/testsuite/g++.target/riscv/rvv/base/pr109244.C
! 979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/g++.target/riscv/rvv/base/riscv_vector.h
! 3da111ba64e80745aed9b3ae6219fd0f  gcc/testsuite/g++.target/riscv/rvv/rvv.exp
  74f02d12b4213817c3460e1eebfa9eae  gcc/testsuite/g++.target/s390/mi-thunk.C
  93b786c04aacd9a92606e85c55410461  gcc/testsuite/g++.target/s390/pr100281-1.C
  4b5a44a1819e9404a2b1305798c19846  gcc/testsuite/g++.target/s390/pr100281-2.C
*************** f536562eba9a9954ace3a616ac52f438  gcc/te
*** 30797,30805 ****
  673a3b45283bd1b872f1b198781a14a3  gcc/testsuite/g++.target/s390/pr94704-3.C
  0a3c74a94606c9870a40fec1d0577aa8  gcc/testsuite/g++.target/s390/pr94704-4.C
  c0aa169f53b6c831c9c42b449fec63b6  gcc/testsuite/g++.target/s390/pr98722.C
! b69988978fc7f84355c6d0cb081f2379  gcc/testsuite/g++.target/s390/s390.exp
! f53fd3b921a5138fb5d1fa0708eecb01  gcc/testsuite/g++.target/xtensa/pr95571.C
! 65e009123581709547b492e32b41fd98  gcc/testsuite/g++.target/xtensa/xtensa.exp
  ab411a7e60cfec57473a2cab3ecc3197  gcc/testsuite/gcc.c-torture/ChangeLog.0
  84740fd4194274c1fbddfa5575623a40  gcc/testsuite/gcc.c-torture/compat/strct-layout.c
  3bb9d56b7cd137b146d286534c43ff8c  gcc/testsuite/gcc.c-torture/compat/struct-align.c
--- 32997,33005 ----
  673a3b45283bd1b872f1b198781a14a3  gcc/testsuite/g++.target/s390/pr94704-3.C
  0a3c74a94606c9870a40fec1d0577aa8  gcc/testsuite/g++.target/s390/pr94704-4.C
  c0aa169f53b6c831c9c42b449fec63b6  gcc/testsuite/g++.target/s390/pr98722.C
! 7b4d23389a5196e7602fcd5300cebdc6  gcc/testsuite/g++.target/s390/s390.exp
! 9ec75dfed03d43e4480e98ac02f604a7  gcc/testsuite/g++.target/xtensa/pr95571.C
! 7370e155147e68072cf0b8396660f623  gcc/testsuite/g++.target/xtensa/xtensa.exp
  ab411a7e60cfec57473a2cab3ecc3197  gcc/testsuite/gcc.c-torture/ChangeLog.0
  84740fd4194274c1fbddfa5575623a40  gcc/testsuite/gcc.c-torture/compat/strct-layout.c
  3bb9d56b7cd137b146d286534c43ff8c  gcc/testsuite/gcc.c-torture/compat/struct-align.c
*************** ab411a7e60cfec57473a2cab3ecc3197  gcc/te
*** 30808,30814 ****
  33d61e2f2d5a36044962db710bce81db  gcc/testsuite/gcc.c-torture/compat/struct-ic.c
  b1a7d4218caf9bcc557077d4aa43e94e  gcc/testsuite/gcc.c-torture/compat/struct-ii.c
  426584adc31397d8ab72547a8b07a853  gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c
! 3a8c5ed2460ef2f4104262599246b808  gcc/testsuite/gcc.c-torture/compile/103818.c
  020eb2921d5899a38ea379f354f54233  gcc/testsuite/gcc.c-torture/compile/20000105-1.c
  9851010109199ab205947b27c7a81ab1  gcc/testsuite/gcc.c-torture/compile/20000105-2.c
  ea95b5ed026fb753ad9419303d80eff5  gcc/testsuite/gcc.c-torture/compile/20000120-1.c
--- 33008,33014 ----
  33d61e2f2d5a36044962db710bce81db  gcc/testsuite/gcc.c-torture/compat/struct-ic.c
  b1a7d4218caf9bcc557077d4aa43e94e  gcc/testsuite/gcc.c-torture/compat/struct-ii.c
  426584adc31397d8ab72547a8b07a853  gcc/testsuite/gcc.c-torture/compat/struct-ret-1.c
! 0721901de40a663dbb3246adfb2c7d8f  gcc/testsuite/gcc.c-torture/compile/103818.c
  020eb2921d5899a38ea379f354f54233  gcc/testsuite/gcc.c-torture/compile/20000105-1.c
  9851010109199ab205947b27c7a81ab1  gcc/testsuite/gcc.c-torture/compile/20000105-2.c
  ea95b5ed026fb753ad9419303d80eff5  gcc/testsuite/gcc.c-torture/compile/20000120-1.c
*************** cbe67a4212b7d85b023f62848033fa31  gcc/te
*** 31588,31594 ****
  1dc09506975eee8e6b4451c77c2ca0f5  gcc/testsuite/gcc.c-torture/compile/asmgoto-3.c
  44775d2c2c8031eaffd51797729f6b78  gcc/testsuite/gcc.c-torture/compile/asmgoto-4.c
  22f5be5aa586df70b0fd5248cd64def3  gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c
! d8d6d3a3bdc75e33ad9224aa3ca20839  gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c
  6cceb06a530ca6cf611287cae72b0437  gcc/testsuite/gcc.c-torture/compile/attr-complex-method.c
  518904c535699cbcecc96482c0284cbe  gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c
  5a438692e9c3f90679360b39bf72aa6d  gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c
--- 33788,33794 ----
  1dc09506975eee8e6b4451c77c2ca0f5  gcc/testsuite/gcc.c-torture/compile/asmgoto-3.c
  44775d2c2c8031eaffd51797729f6b78  gcc/testsuite/gcc.c-torture/compile/asmgoto-4.c
  22f5be5aa586df70b0fd5248cd64def3  gcc/testsuite/gcc.c-torture/compile/asmgoto-5.c
! d69b019f2f65278608964711e375d5d7  gcc/testsuite/gcc.c-torture/compile/attr-complex-method-2.c
  6cceb06a530ca6cf611287cae72b0437  gcc/testsuite/gcc.c-torture/compile/attr-complex-method.c
  518904c535699cbcecc96482c0284cbe  gcc/testsuite/gcc.c-torture/compile/attr-retain-1.c
  5a438692e9c3f90679360b39bf72aa6d  gcc/testsuite/gcc.c-torture/compile/attr-retain-2.c
*************** f5766202f628b43d0fac0910adc0eecb  gcc/te
*** 31645,31651 ****
  2db408a5885d812f5975ff6d22d8deb5  gcc/testsuite/gcc.c-torture/compile/cn1.c
  6bc0454ef3b51ee1abf897438c9d20f8  gcc/testsuite/gcc.c-torture/compile/comb.c
  646c27d881cf11bdfb63a423ffd3b604  gcc/testsuite/gcc.c-torture/compile/combine-hang.c
! 5b3d08df99700f8987331faef7e3eec7  gcc/testsuite/gcc.c-torture/compile/compile.exp
  a87e64aae03ac41e010753e916d8ee6d  gcc/testsuite/gcc.c-torture/compile/complex-1.c
  9d993598ddcfa7b7cd841fe5a114cec2  gcc/testsuite/gcc.c-torture/compile/complex-2.c
  e78988c1feb46a12813cd47feaaab89f  gcc/testsuite/gcc.c-torture/compile/complex-3.c
--- 33845,33851 ----
  2db408a5885d812f5975ff6d22d8deb5  gcc/testsuite/gcc.c-torture/compile/cn1.c
  6bc0454ef3b51ee1abf897438c9d20f8  gcc/testsuite/gcc.c-torture/compile/comb.c
  646c27d881cf11bdfb63a423ffd3b604  gcc/testsuite/gcc.c-torture/compile/combine-hang.c
! a37a6e52d0d2dfebba119f5cf063ea45  gcc/testsuite/gcc.c-torture/compile/compile.exp
  a87e64aae03ac41e010753e916d8ee6d  gcc/testsuite/gcc.c-torture/compile/complex-1.c
  9d993598ddcfa7b7cd841fe5a114cec2  gcc/testsuite/gcc.c-torture/compile/complex-2.c
  e78988c1feb46a12813cd47feaaab89f  gcc/testsuite/gcc.c-torture/compile/complex-3.c
*************** a4388070dfa15cbd678485953a9d6165  gcc/te
*** 31668,31673 ****
--- 33868,33875 ----
  e5e909189675ca6cb666ee2344ef6dff  gcc/testsuite/gcc.c-torture/compile/d.c
  1948da60e562ef25510ca4be09fe597d  gcc/testsuite/gcc.c-torture/compile/dbl_parm.c
  68fe7a7b232376cd57394c0ac719e10b  gcc/testsuite/gcc.c-torture/compile/dblbug.c
+ 60ab74a0311986845d4157e4aa8df2ef  gcc/testsuite/gcc.c-torture/compile/dce-inline-asm-1.c
+ 3fdc86f0bcaebaddae6a03d0b118be65  gcc/testsuite/gcc.c-torture/compile/dce-inline-asm-2.c
  36aa2b83fd1383abff504f6866d7fa1b  gcc/testsuite/gcc.c-torture/compile/ddd.c
  60f8588b567dc8677daee3d21bf488c5  gcc/testsuite/gcc.c-torture/compile/dead.c
  a0cfda0503e80c3ab337b8cd51778fc5  gcc/testsuite/gcc.c-torture/compile/debugvlafunction-1.c
*************** a2656a59d00f50e3a24dc4e71bfb3973  gcc/te
*** 31836,31841 ****
--- 34038,34057 ----
  b8c09513cab59ca8f22d38e515f50fa8  gcc/testsuite/gcc.c-torture/compile/pr105234.c
  112c17f5638bc2cf5c04c9e917943218  gcc/testsuite/gcc.c-torture/compile/pr105247.c
  9477024f0d6e7d41ab0ee7d8ab3d3e58  gcc/testsuite/gcc.c-torture/compile/pr106030.c
+ a3b64dd1348a124fafa3123af1fade2b  gcc/testsuite/gcc.c-torture/compile/pr106101.c
+ 1a4e73ad03c229361a9693ac736566b5  gcc/testsuite/gcc.c-torture/compile/pr106433.c
+ e12df015117953bcc79bb2bd0912de65  gcc/testsuite/gcc.c-torture/compile/pr106751.c
+ 12ff5d18b6bf67f003c974931bd83681  gcc/testsuite/gcc.c-torture/compile/pr106878.c
+ 1e4a974fa322bd5cf045264503d48d49  gcc/testsuite/gcc.c-torture/compile/pr106958.c
+ 4dd866246092682caa7a8870b3f5fb5d  gcc/testsuite/gcc.c-torture/compile/pr107835.c
+ 591ba0d7b38a8f57d62f0b2928e693c4  gcc/testsuite/gcc.c-torture/compile/pr107997.c
+ e1a987965f844354ef93e18f546749c9  gcc/testsuite/gcc.c-torture/compile/pr108237.c
+ 9c6d8cdc69d8f80df1390e153dd3fffc  gcc/testsuite/gcc.c-torture/compile/pr108596.c
+ d4fa23318b96f5289939b05942610cc2  gcc/testsuite/gcc.c-torture/compile/pr108638.c
+ dd402d355ab63a087ccad160409acaa1  gcc/testsuite/gcc.c-torture/compile/pr108639.c
+ 6531dceb4d0bccc3f89474a26aea0d4a  gcc/testsuite/gcc.c-torture/compile/pr108688-1.c
+ 36e883bce8d9951768a9441174da8c4e  gcc/testsuite/gcc.c-torture/compile/pr108783.c
+ e0b4886989ab945696b0b58709123573  gcc/testsuite/gcc.c-torture/compile/pr108892.c
  33c7141fcf5b1add3ddd2be0100f1f0d  gcc/testsuite/gcc.c-torture/compile/pr12517.c
  ec16b12ab11c499bf321be18ea59da33  gcc/testsuite/gcc.c-torture/compile/pr12578.c
  86f3d5cf87d24e97aa663b79f2d0ac5d  gcc/testsuite/gcc.c-torture/compile/pr12899.c
*************** ee8db0af2e24f128a55c1fad88d05a4d  gcc/te
*** 32318,32324 ****
  5e594fb77f380e61efb0418a45ba7841  gcc/testsuite/gcc.c-torture/compile/pr54925.c
  dbeb2d5879e34cafdc80fa8281851406  gcc/testsuite/gcc.c-torture/compile/pr55273.c
  e64bc95a135f8e235fd32f21277cc950  gcc/testsuite/gcc.c-torture/compile/pr55350.c
! 616747029798b37d08d81814f9320911  gcc/testsuite/gcc.c-torture/compile/pr55569.c
  84272a401c04656e02e545b4399da048  gcc/testsuite/gcc.c-torture/compile/pr55832.c
  a40caa4ac9e2126163813ba3ac4e6539  gcc/testsuite/gcc.c-torture/compile/pr55851.c
  1d3e5275039b357339d3c9811b014ec7  gcc/testsuite/gcc.c-torture/compile/pr55920.c
--- 34534,34540 ----
  5e594fb77f380e61efb0418a45ba7841  gcc/testsuite/gcc.c-torture/compile/pr54925.c
  dbeb2d5879e34cafdc80fa8281851406  gcc/testsuite/gcc.c-torture/compile/pr55273.c
  e64bc95a135f8e235fd32f21277cc950  gcc/testsuite/gcc.c-torture/compile/pr55350.c
! a8971663560b4b43261f7d80595b1b0f  gcc/testsuite/gcc.c-torture/compile/pr55569.c
  84272a401c04656e02e545b4399da048  gcc/testsuite/gcc.c-torture/compile/pr55832.c
  a40caa4ac9e2126163813ba3ac4e6539  gcc/testsuite/gcc.c-torture/compile/pr55851.c
  1d3e5275039b357339d3c9811b014ec7  gcc/testsuite/gcc.c-torture/compile/pr55920.c
*************** dc8f609dbb0db163caa0e7adfc5d9240  gcc/te
*** 32550,32555 ****
--- 34766,34772 ----
  156dbb8af2805f1d7b1d39d0088f5b2f  gcc/testsuite/gcc.c-torture/compile/pr93348-1.c
  620d5c7d92e3c8bc73e14d8ac589036a  gcc/testsuite/gcc.c-torture/compile/pr93505.c
  1b49dedb69816b9f0c6f1da628925879  gcc/testsuite/gcc.c-torture/compile/pr93533.c
+ ce8f26361632de54e40e79ca199af7f8  gcc/testsuite/gcc.c-torture/compile/pr93776.c
  02cc5e58c2968a268ee9acf02a7b3989  gcc/testsuite/gcc.c-torture/compile/pr93927-1.c
  3b9dd43447b4b92215c38ec2a9f576bc  gcc/testsuite/gcc.c-torture/compile/pr93927-2.c
  22928b66796dd98928bd0441207dfe65  gcc/testsuite/gcc.c-torture/compile/pr93949.c
*************** ece957bd2db1749c32578bdb5e0c533d  gcc/te
*** 32681,32686 ****
--- 34898,34904 ----
  39c80b120fd9223106e136841ab72011  gcc/testsuite/gcc.c-torture/compile/vector-6.c
  f22fa3d40420e1d3face4986ae537c69  gcc/testsuite/gcc.c-torture/compile/vector-align-1.c
  157b51d7ce9c15037387105cd05282b6  gcc/testsuite/gcc.c-torture/compile/vector-dup-1.c
+ 9c09e33d4176dbc5b3ff3d2143a003f0  gcc/testsuite/gcc.c-torture/compile/vector-shift-1.c
  d15bacdeb3488c9844bef78c3669d147  gcc/testsuite/gcc.c-torture/compile/vla-const-1.c
  967fa88da6ed3bc1aed48cc1d0645240  gcc/testsuite/gcc.c-torture/compile/vla-const-2.c
  c5f3f4df6f7c679e7f264b10b16f1988  gcc/testsuite/gcc.c-torture/compile/volatile-1.c
*************** ecbbfd4b186a0dd8448d96f39a543fb4  gcc/te
*** 33178,33183 ****
--- 35396,35402 ----
  8476af17c3a5d7a639fdbdcad1641482  gcc/testsuite/gcc.c-torture/execute/20190901-1.c
  2e368329bfad3d99e406eade7d55032d  gcc/testsuite/gcc.c-torture/execute/20191023-1.c
  b4ae081235a5dc1e90b1adea7befe6cf  gcc/testsuite/gcc.c-torture/execute/20210505-1.c
+ 318f0b7324815bae3c8b8b75f6381ddb  gcc/testsuite/gcc.c-torture/execute/20221006-1.c
  65f01ac7346bd4d47ed9c1ca94ab74ff  gcc/testsuite/gcc.c-torture/execute/900409-1.c
  5aefab4daab0bd29ecf2a389f3c44f40  gcc/testsuite/gcc.c-torture/execute/920202-1.c
  74e2b57e4fb280900b2f9b169dd75b1c  gcc/testsuite/gcc.c-torture/execute/920302-1.c
*************** caa74354806f94b1777d3d438547d909  gcc/te
*** 33520,33526 ****
  d7d9ce89ee3d3fe0e8938f62790f051e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c
  1dda6f7a5d9ce23a5db5f59c430ae29e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c
  8784d3bd9b264b3c2abfb7b7ea25ccb6  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c
! 149006d9fde9f36f54014a976468fd05  gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
  82dc8c0cc07405b06eb5eee9b43cb713  gcc/testsuite/gcc.c-torture/execute/builtins/chk.h
  f36e146a2aececdc84d9199d53a363ec  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c
  8b5a662c0134cd00115a5866e1c0b6c9  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c
--- 35739,35745 ----
  d7d9ce89ee3d3fe0e8938f62790f051e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-2.c
  1dda6f7a5d9ce23a5db5f59c430ae29e  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3-lib.c
  8784d3bd9b264b3c2abfb7b7ea25ccb6  gcc/testsuite/gcc.c-torture/execute/builtins/abs-3.c
! 26ccac8540730590a8ee5e51c470276e  gcc/testsuite/gcc.c-torture/execute/builtins/builtins.exp
  82dc8c0cc07405b06eb5eee9b43cb713  gcc/testsuite/gcc.c-torture/execute/builtins/chk.h
  f36e146a2aececdc84d9199d53a363ec  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1-lib.c
  8b5a662c0134cd00115a5866e1c0b6c9  gcc/testsuite/gcc.c-torture/execute/builtins/complex-1.c
*************** e329c7fca0108570e81273f5b62d90e0  gcc/te
*** 33711,33717 ****
  b75081070e5d6cda7c7fa71f2652e5c4  gcc/testsuite/gcc.c-torture/execute/enum-1.c
  0de8cd8896dc35069287acffcf0cf023  gcc/testsuite/gcc.c-torture/execute/enum-2.c
  91b8922c3b6304ab6ab99942dbca6c66  gcc/testsuite/gcc.c-torture/execute/enum-3.c
! cd48fef6fa8e18518eeb4bdf64624890  gcc/testsuite/gcc.c-torture/execute/execute.exp
  3f877fc808f2ba680241c6f0726afdb8  gcc/testsuite/gcc.c-torture/execute/extzvsi.c
  d2dbbb18d94c0dbb1f03952bbd682bdc  gcc/testsuite/gcc.c-torture/execute/ffs-1.c
  59890cc9fc7ac6d103d95e083b353cd1  gcc/testsuite/gcc.c-torture/execute/ffs-2.c
--- 35930,35936 ----
  b75081070e5d6cda7c7fa71f2652e5c4  gcc/testsuite/gcc.c-torture/execute/enum-1.c
  0de8cd8896dc35069287acffcf0cf023  gcc/testsuite/gcc.c-torture/execute/enum-2.c
  91b8922c3b6304ab6ab99942dbca6c66  gcc/testsuite/gcc.c-torture/execute/enum-3.c
! 815882a6e79630fdb0f21a53487c3d20  gcc/testsuite/gcc.c-torture/execute/execute.exp
  3f877fc808f2ba680241c6f0726afdb8  gcc/testsuite/gcc.c-torture/execute/extzvsi.c
  d2dbbb18d94c0dbb1f03952bbd682bdc  gcc/testsuite/gcc.c-torture/execute/ffs-1.c
  59890cc9fc7ac6d103d95e083b353cd1  gcc/testsuite/gcc.c-torture/execute/ffs-2.c
*************** b4829a5beb2ba9c854289ed59b149c87  gcc/te
*** 33765,33783 ****
  84acc8b1076b65bc49262020bd723f48  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4l.c
  b6187f5e7f437af55596d4899703c64d  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-5.c
  a27940c41de4aa616b9a7838dcd2ff06  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-6.c
! c70578fda10ba34906c056f0cfa7d7f4  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-6.x
  29aef7d959a16091b3ebad8b64980f25  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-7.c
  fee97375f1852586391d62e54dbf07b6  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-7.x
  e6e4bf75b7bfe776a42e2d834c668aa0  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8.c
  8269310d30e373a5b948feca34d5c256  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8e.c
  80cb66b64dbc493a71cd89ff79bfe22a  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8f.c
  987c92fc82b6f0a9fcd149cb6983020f  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8l.c
  eda53ee18df0e1666f58ac145f30c8bc  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c
! c8b196e822d4b979813f1d04c3197dff  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x
! 603c016997aab4955e1ac71ed5f1e95f  gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
  becc504a322770453dcee9cedb700b2a  gcc/testsuite/gcc.c-torture/execute/ieee/inf-1.c
  455ba77f92be22cda1b657fc7de869ac  gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c
  2b23329ee0437a7e47b835bee3d9d3e1  gcc/testsuite/gcc.c-torture/execute/ieee/inf-3.c
  2736a1631ef3bc3d1b07e98d9c11e15d  gcc/testsuite/gcc.c-torture/execute/ieee/minuszero.c
  c30cd058e421a2490756d89ddc0aafa0  gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c
  05d1a430099f387b688299a468cf3942  gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.x
--- 35984,36005 ----
  84acc8b1076b65bc49262020bd723f48  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-4l.c
  b6187f5e7f437af55596d4899703c64d  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-5.c
  a27940c41de4aa616b9a7838dcd2ff06  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-6.c
! 9e43c27455c7096b6dbc2d64603291f8  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-6.x
  29aef7d959a16091b3ebad8b64980f25  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-7.c
  fee97375f1852586391d62e54dbf07b6  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-7.x
  e6e4bf75b7bfe776a42e2d834c668aa0  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8.c
  8269310d30e373a5b948feca34d5c256  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8e.c
  80cb66b64dbc493a71cd89ff79bfe22a  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8f.c
  987c92fc82b6f0a9fcd149cb6983020f  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-8l.c
+ 6bd4a57f0b4c4e24ea80bf9291de98ec  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-9.c
+ c70578fda10ba34906c056f0cfa7d7f4  gcc/testsuite/gcc.c-torture/execute/ieee/fp-cmp-9.x
  eda53ee18df0e1666f58ac145f30c8bc  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.c
! 89328c997b5c856595f8abbea69ad47a  gcc/testsuite/gcc.c-torture/execute/ieee/hugeval.x
! e97b9ae0938cde281e0f6c40ff726eaa  gcc/testsuite/gcc.c-torture/execute/ieee/ieee.exp
  becc504a322770453dcee9cedb700b2a  gcc/testsuite/gcc.c-torture/execute/ieee/inf-1.c
  455ba77f92be22cda1b657fc7de869ac  gcc/testsuite/gcc.c-torture/execute/ieee/inf-2.c
  2b23329ee0437a7e47b835bee3d9d3e1  gcc/testsuite/gcc.c-torture/execute/ieee/inf-3.c
+ 376dcad6e7b248fd5a9bab27ace3ba47  gcc/testsuite/gcc.c-torture/execute/ieee/inf-4.c
  2736a1631ef3bc3d1b07e98d9c11e15d  gcc/testsuite/gcc.c-torture/execute/ieee/minuszero.c
  c30cd058e421a2490756d89ddc0aafa0  gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.c
  05d1a430099f387b688299a468cf3942  gcc/testsuite/gcc.c-torture/execute/ieee/mul-subnormal-single-1.x
*************** f45ca3b0c410537aa1ba72331b725ee3  gcc/te
*** 33787,33792 ****
--- 36009,36018 ----
  ca24b3bde293e0dc51664263dfbd7596  gcc/testsuite/gcc.c-torture/execute/ieee/mzero4.c
  706b37713beb55db2b6ffee8c94caad3  gcc/testsuite/gcc.c-torture/execute/ieee/mzero5.c
  863479e0e407e39a90ba2476bf1207e3  gcc/testsuite/gcc.c-torture/execute/ieee/mzero6.c
+ 1d16dce456c4134583b993567f1ead0f  gcc/testsuite/gcc.c-torture/execute/ieee/pr108540-1.c
+ d4e8f56755c1913d6081dfe8d0242da6  gcc/testsuite/gcc.c-torture/execute/ieee/pr108540-2.c
+ a45b4760120c88edd8ca57835c941a19  gcc/testsuite/gcc.c-torture/execute/ieee/pr109008.c
+ 85a7ab9e9a70d0f0bc5caeb1e1f43644  gcc/testsuite/gcc.c-torture/execute/ieee/pr109386.c
  1b9dac5340cc72f68524acd4c4da7e80  gcc/testsuite/gcc.c-torture/execute/ieee/pr28634.c
  d8612b7bdffc24880131ef35f74be2d6  gcc/testsuite/gcc.c-torture/execute/ieee/pr29302-1.c
  34f935573c831edc6e12782ff995e44a  gcc/testsuite/gcc.c-torture/execute/ieee/pr29302-1.x
*************** a89a9f97e9f6a37a0db709c2b09097b9  gcc/te
*** 33886,33892 ****
--- 36112,36129 ----
  eda9698796bef969bb50e5712208e61b  gcc/testsuite/gcc.c-torture/execute/pr104604.c
  8f1a8c89149c065ac6e73140793989be  gcc/testsuite/gcc.c-torture/execute/pr104814.c
  87b1203ac926f7da31883b0ba420b9b8  gcc/testsuite/gcc.c-torture/execute/pr104839.c
+ 243794ec3b0d8328c46cb972bf42912b  gcc/testsuite/gcc.c-torture/execute/pr105613.c
+ 882a740a0b7b405451478eb2eae9f074  gcc/testsuite/gcc.c-torture/execute/pr105777.c
+ 399d27127665346ab5e85604215905b9  gcc/testsuite/gcc.c-torture/execute/pr105984.c
  6b9abb094fcd9b7fa8d30c4251026072  gcc/testsuite/gcc.c-torture/execute/pr106032.c
+ 648140ac374da564be1d5bcfdb9f6512  gcc/testsuite/gcc.c-torture/execute/pr106523.c
+ 93b9ac308d7aaa9e802f601e379cb1ff  gcc/testsuite/gcc.c-torture/execute/pr107131.c
+ 7a452826a0b69ad170679ed32c9d9d29  gcc/testsuite/gcc.c-torture/execute/pr107879.c
+ 9c62df56e19a75c333a2e6248ad57196  gcc/testsuite/gcc.c-torture/execute/pr108064.c
+ 4badcaaf116af3e7dd155e4534d8ac88  gcc/testsuite/gcc.c-torture/execute/pr108292.c
+ 154a19663c66fcea6a49b6718c685882  gcc/testsuite/gcc.c-torture/execute/pr108498-1.c
+ ee35df6bcc12c95f226b88f0d72b377d  gcc/testsuite/gcc.c-torture/execute/pr108498-2.c
+ c8bc63449a253495869d91d5e4176c35  gcc/testsuite/gcc.c-torture/execute/pr109040.c
  7758cb727d75f4fc1c0e483d503de146  gcc/testsuite/gcc.c-torture/execute/pr15262-1.c
  58dc249612dbc918d7fc4010e94deb8d  gcc/testsuite/gcc.c-torture/execute/pr15262-2.c
  d9c36fc850771445c5e4b6ce6dae1a12  gcc/testsuite/gcc.c-torture/execute/pr15262.c
*************** b7fe837c76747d26da2acd2bcae8bf09  gcc/te
*** 33957,33962 ****
--- 36194,36200 ----
  3f61fa905babbe6c484dac9d45814df6  gcc/testsuite/gcc.c-torture/execute/pr29797-2.c
  7bdcd6b86b37a8213d70e297974a416b  gcc/testsuite/gcc.c-torture/execute/pr29798.c
  24b8850f6330d243d6793ff80797c575  gcc/testsuite/gcc.c-torture/execute/pr30185.c
+ ee2a2d73a7ad190989d6cf543996de1c  gcc/testsuite/gcc.c-torture/execute/pr30314.c
  1a7e62e0ec026e7e2132a6a614a1b646  gcc/testsuite/gcc.c-torture/execute/pr30778.c
  5b22901df59cbd7d77a9e8592b6f6539  gcc/testsuite/gcc.c-torture/execute/pr31072.c
  2dfccb1970f967ad4ac9f6156747b98e  gcc/testsuite/gcc.c-torture/execute/pr31136.c
*************** e763b176bcaa84e63102add66d6a12e4  gcc/te
*** 34090,34096 ****
  471322f15c2f1dcda01def19d1a660fc  gcc/testsuite/gcc.c-torture/execute/pr46909-2.c
  66c6a913b510e010bc621bef1cad1324  gcc/testsuite/gcc.c-torture/execute/pr47148.c
  b4a273d42b3a6389d4b6280f692937a1  gcc/testsuite/gcc.c-torture/execute/pr47155.c
! 6ba29c58117a8036b3b46bccfc5de56a  gcc/testsuite/gcc.c-torture/execute/pr47237.c
  a06a9a127d8beee5a22482326b40e6a2  gcc/testsuite/gcc.c-torture/execute/pr47299.c
  85069ce3a2a71852fc8b4f9ca5d420f7  gcc/testsuite/gcc.c-torture/execute/pr47337.c
  d99a0e97eb5fc22626c506a705b1db3f  gcc/testsuite/gcc.c-torture/execute/pr47538.c
--- 36328,36334 ----
  471322f15c2f1dcda01def19d1a660fc  gcc/testsuite/gcc.c-torture/execute/pr46909-2.c
  66c6a913b510e010bc621bef1cad1324  gcc/testsuite/gcc.c-torture/execute/pr47148.c
  b4a273d42b3a6389d4b6280f692937a1  gcc/testsuite/gcc.c-torture/execute/pr47155.c
! 407d66c47dcd664af0dc6605bb5a06c6  gcc/testsuite/gcc.c-torture/execute/pr47237.c
  a06a9a127d8beee5a22482326b40e6a2  gcc/testsuite/gcc.c-torture/execute/pr47299.c
  85069ce3a2a71852fc8b4f9ca5d420f7  gcc/testsuite/gcc.c-torture/execute/pr47337.c
  d99a0e97eb5fc22626c506a705b1db3f  gcc/testsuite/gcc.c-torture/execute/pr47538.c
*************** c5d9f6e864aa6ce765a8ec4276629c5f  gcc/te
*** 34432,34437 ****
--- 36670,36676 ----
  38ae3977156254634cecdb2eb8a2c868  gcc/testsuite/gcc.c-torture/execute/pr97836.c
  4aba7c31e5b79f85ac783a249d5c9482  gcc/testsuite/gcc.c-torture/execute/pr97888-1.c
  b77c0d88fd06be516e1bddd02f64ee13  gcc/testsuite/gcc.c-torture/execute/pr97888-2.c
+ 29f0a16610f8a7c55f6aca10d12a58d1  gcc/testsuite/gcc.c-torture/execute/pr98304-2.c
  c0604879f00bf14de861680217e4ac2e  gcc/testsuite/gcc.c-torture/execute/pr98366.c
  58f14240090be9619912d042ff552198  gcc/testsuite/gcc.c-torture/execute/pr98474.c
  f25dd6049e9c8dd046ca17e8bc55d979  gcc/testsuite/gcc.c-torture/execute/pr98681.c
*************** f30bf0095addeef700a83f36c598deab  gcc/te
*** 34552,34559 ****
  5d8fbb34f7ad51fedc394527a5885d4d  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
  76a05adc513bcf00de7e94465ef0bc6d  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
! a6f0f63358be034e9a7780ea3e01749e  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
! 901bf464d29edfb10eb7c0060b53d2c5  gcc/testsuite/gcc.dg-selftests/dg-final.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
  d8a5405adb98e221c4fa41ce145177c6  gcc/testsuite/gcc.dg/20000623-1.c
--- 36791,36798 ----
  5d8fbb34f7ad51fedc394527a5885d4d  gcc/testsuite/gcc.c-torture/execute/zerolen-2.c
  44c6ad090d3f06206aa54f59582ae32c  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.c
  76a05adc513bcf00de7e94465ef0bc6d  gcc/testsuite/gcc.c-torture/unsorted/dump-noaddr.x
! 35f3a740191216d4689000c9f13f8d8f  gcc/testsuite/gcc.c-torture/unsorted/unsorted.exp
! 64bb4e1b5f3c3055c53d33fe42e3fe50  gcc/testsuite/gcc.dg-selftests/dg-final.exp
  d0289bfc068c575e2168df7bc156b45a  gcc/testsuite/gcc.dg/20000108-1.c
  586ef49702317acb226ba076aeea11ee  gcc/testsuite/gcc.dg/20000111-1.c
  d8a5405adb98e221c4fa41ce145177c6  gcc/testsuite/gcc.dg/20000623-1.c
*************** cbc66fee494d1a2762b59ab750e035f9  gcc/te
*** 34689,34695 ****
  71ba5f95a096c115a81efed86894ff2e  gcc/testsuite/gcc.dg/20040622-2.c
  85b98f905d8489e42756e32724714074  gcc/testsuite/gcc.dg/20040625-1.c
  774dcfdec92b7339ed81a07e4eb85ddd  gcc/testsuite/gcc.dg/20040627-1.c
- af49afeedc35cae5f3006b10cef863fa  gcc/testsuite/gcc.dg/20040813-1.c
  f6b89935794e56059d42e599dba92ec2  gcc/testsuite/gcc.dg/20040910-1.c
  e41c70826d2d2e86d16c489f982a0f1a  gcc/testsuite/gcc.dg/20040916-1.c
  b83c307108e223d5dad2856b28ee3386  gcc/testsuite/gcc.dg/20040920-1.c
--- 36928,36933 ----
*************** cda741cce59ba0dcd70871f300400003  gcc/te
*** 34774,34780 ****
  eba607c17011c649eb3d7e1c5513ffdd  gcc/testsuite/gcc.dg/Foundation.framework/empty
  509fc4e45ca169a2f01541865c72e7d9  gcc/testsuite/gcc.dg/O16384.c
  5572aaa0a05957fff2416d1f5f7c0cc6  gcc/testsuite/gcc.dg/PR68002.c
! 1114586d4079131c7fbb2e93290d46fb  gcc/testsuite/gcc.dg/README
  bd2b0579d869dd45682e46db89fcdb4f  gcc/testsuite/gcc.dg/Wabsolute-value.c
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  c24bef0f408b6e43c19ee75c1ce7717a  gcc/testsuite/gcc.dg/Waddress-3.c
--- 37012,37018 ----
  eba607c17011c649eb3d7e1c5513ffdd  gcc/testsuite/gcc.dg/Foundation.framework/empty
  509fc4e45ca169a2f01541865c72e7d9  gcc/testsuite/gcc.dg/O16384.c
  5572aaa0a05957fff2416d1f5f7c0cc6  gcc/testsuite/gcc.dg/PR68002.c
! efcb38d0bea023b0aa80d660bc6ae9b2  gcc/testsuite/gcc.dg/README
  bd2b0579d869dd45682e46db89fcdb4f  gcc/testsuite/gcc.dg/Wabsolute-value.c
  3b152bda38c8adacaa17cce7b0cf4e42  gcc/testsuite/gcc.dg/Waddress-2.c
  c24bef0f408b6e43c19ee75c1ce7717a  gcc/testsuite/gcc.dg/Waddress-3.c
*************** d264d25955b548eb2c7066d1fc44c895  gcc/te
*** 34803,34809 ****
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
  55dc1f00b00f6e508fe83fc8f64b989f  gcc/testsuite/gcc.dg/Walloca-12.c
! ce8d58b6331fa1f7b9a626023ca30647  gcc/testsuite/gcc.dg/Walloca-13.c
  b62a67c07815a09e72a8c257fbaebf29  gcc/testsuite/gcc.dg/Walloca-14.c
  e5cdd59c60a14eb884306afcedf7c6f6  gcc/testsuite/gcc.dg/Walloca-15.c
  49fa808f10f6cbd4c7788eebd86de9fd  gcc/testsuite/gcc.dg/Walloca-16.c
--- 37041,37047 ----
  538a90f3521bf6b465ebbc392080610e  gcc/testsuite/gcc.dg/Walloca-10.c
  bb3fac63e26e1a1793361a553f83b373  gcc/testsuite/gcc.dg/Walloca-11.c
  55dc1f00b00f6e508fe83fc8f64b989f  gcc/testsuite/gcc.dg/Walloca-12.c
! 06881e25661efe6dec49f921a736851e  gcc/testsuite/gcc.dg/Walloca-13.c
  b62a67c07815a09e72a8c257fbaebf29  gcc/testsuite/gcc.dg/Walloca-14.c
  e5cdd59c60a14eb884306afcedf7c6f6  gcc/testsuite/gcc.dg/Walloca-15.c
  49fa808f10f6cbd4c7788eebd86de9fd  gcc/testsuite/gcc.dg/Walloca-16.c
*************** cb4200f2eb907130481e17db75d38aed  gcc/te
*** 34823,34829 ****
  e0f03fe3585a327467250a2ec39fc2be  gcc/testsuite/gcc.dg/Walways-true-1.c
  e0eaa51369369eede5d7e28a789540d5  gcc/testsuite/gcc.dg/Walways-true-2.c
  33a98cba1121b42ccbc1b9ea87c0a5e2  gcc/testsuite/gcc.dg/Warray-bounds-10.c
! fab4e8097a76381883777cdb08a59bac  gcc/testsuite/gcc.dg/Warray-bounds-11.c
  aff04d276a341a86dbe0aeb9559c0a09  gcc/testsuite/gcc.dg/Warray-bounds-12.c
  b6c0291a21f96dc6fcc3ed29eac8c8af  gcc/testsuite/gcc.dg/Warray-bounds-13.c
  7ec2b213eb8f2ef61fb90d2f5334d907  gcc/testsuite/gcc.dg/Warray-bounds-14.c
--- 37061,37067 ----
  e0f03fe3585a327467250a2ec39fc2be  gcc/testsuite/gcc.dg/Walways-true-1.c
  e0eaa51369369eede5d7e28a789540d5  gcc/testsuite/gcc.dg/Walways-true-2.c
  33a98cba1121b42ccbc1b9ea87c0a5e2  gcc/testsuite/gcc.dg/Warray-bounds-10.c
! 6dbf8e1aa0f7d0b10a19689a67d95cff  gcc/testsuite/gcc.dg/Warray-bounds-11.c
  aff04d276a341a86dbe0aeb9559c0a09  gcc/testsuite/gcc.dg/Warray-bounds-12.c
  b6c0291a21f96dc6fcc3ed29eac8c8af  gcc/testsuite/gcc.dg/Warray-bounds-13.c
  7ec2b213eb8f2ef61fb90d2f5334d907  gcc/testsuite/gcc.dg/Warray-bounds-14.c
*************** db89bc16bba99d1896fd369f83d6a7b5  gcc/te
*** 34848,34854 ****
  8b65ddd6aa612fd11722b98bcdac2196  gcc/testsuite/gcc.dg/Warray-bounds-31.c
  81bd321922b3694940694510b0d8d0c4  gcc/testsuite/gcc.dg/Warray-bounds-32.c
  6b9ac8ad880ced5374b2667375c34928  gcc/testsuite/gcc.dg/Warray-bounds-33.c
! 0d5c45e1045ae1cfb51e99b1a996737e  gcc/testsuite/gcc.dg/Warray-bounds-34.c
  70792e0f2bd388c08d846ece8c1a9894  gcc/testsuite/gcc.dg/Warray-bounds-35.c
  53cf522d5540d20053932c1c37e42025  gcc/testsuite/gcc.dg/Warray-bounds-36.c
  88110b8c8042e3a992d1fae3d97c87b0  gcc/testsuite/gcc.dg/Warray-bounds-37.c
--- 37086,37092 ----
  8b65ddd6aa612fd11722b98bcdac2196  gcc/testsuite/gcc.dg/Warray-bounds-31.c
  81bd321922b3694940694510b0d8d0c4  gcc/testsuite/gcc.dg/Warray-bounds-32.c
  6b9ac8ad880ced5374b2667375c34928  gcc/testsuite/gcc.dg/Warray-bounds-33.c
! 6a03e7b93f4fe957d581eba158780e50  gcc/testsuite/gcc.dg/Warray-bounds-34.c
  70792e0f2bd388c08d846ece8c1a9894  gcc/testsuite/gcc.dg/Warray-bounds-35.c
  53cf522d5540d20053932c1c37e42025  gcc/testsuite/gcc.dg/Warray-bounds-36.c
  88110b8c8042e3a992d1fae3d97c87b0  gcc/testsuite/gcc.dg/Warray-bounds-37.c
*************** f1d188ca73d565a2f5f0ef5ac4da7de3  gcc/te
*** 34858,34876 ****
  a24dbf2381bca49baad37bd9894a1364  gcc/testsuite/gcc.dg/Warray-bounds-40.c
  ade1fdd3e190a5dcc364ebe1609610ba  gcc/testsuite/gcc.dg/Warray-bounds-41.c
  f789b1e7b8becd79f38feadd4851b46e  gcc/testsuite/gcc.dg/Warray-bounds-42.c
! 9f10034dcc846ba4d394b4b6c294f41e  gcc/testsuite/gcc.dg/Warray-bounds-43.c
  bcfdc1bd403c9aafe13abbe133808f9a  gcc/testsuite/gcc.dg/Warray-bounds-44.c
  f3112cdf9edbe2af3277d38e4643af1f  gcc/testsuite/gcc.dg/Warray-bounds-45.c
  6e95be44603cc2f0f4a1e04edd5ae3c4  gcc/testsuite/gcc.dg/Warray-bounds-46.c
  cb64293b7b9a92cb5cd94dedde913801  gcc/testsuite/gcc.dg/Warray-bounds-47.c
! 61b5f4a019ea5aba637f88d12c0f3b26  gcc/testsuite/gcc.dg/Warray-bounds-48-novec.c
! 332f91c662d10e51d4f762b426cf3e05  gcc/testsuite/gcc.dg/Warray-bounds-48.c
  3aa7adb94918bc13234602f8516dd1a9  gcc/testsuite/gcc.dg/Warray-bounds-49.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
  99ca661fd44c871abb678e58007bc467  gcc/testsuite/gcc.dg/Warray-bounds-50.c
  80b1ec0f5441fed204561ea4b998732e  gcc/testsuite/gcc.dg/Warray-bounds-51-novec.c
  76dcbe5fc7b7946795b40b27b4583187  gcc/testsuite/gcc.dg/Warray-bounds-51.c
! 6de6b62504aa1addbf743e98f598c3c9  gcc/testsuite/gcc.dg/Warray-bounds-52.c
  e14bc5062e6d55c30a8533079955b491  gcc/testsuite/gcc.dg/Warray-bounds-53.c
  12a0fa5409b214bab70ca278f4e5c555  gcc/testsuite/gcc.dg/Warray-bounds-54.c
  3735dc90a235299206d9177f18fbe519  gcc/testsuite/gcc.dg/Warray-bounds-55.c
--- 37096,37114 ----
  a24dbf2381bca49baad37bd9894a1364  gcc/testsuite/gcc.dg/Warray-bounds-40.c
  ade1fdd3e190a5dcc364ebe1609610ba  gcc/testsuite/gcc.dg/Warray-bounds-41.c
  f789b1e7b8becd79f38feadd4851b46e  gcc/testsuite/gcc.dg/Warray-bounds-42.c
! 45fb1915bf22caaa2b57cbdd7672682d  gcc/testsuite/gcc.dg/Warray-bounds-43.c
  bcfdc1bd403c9aafe13abbe133808f9a  gcc/testsuite/gcc.dg/Warray-bounds-44.c
  f3112cdf9edbe2af3277d38e4643af1f  gcc/testsuite/gcc.dg/Warray-bounds-45.c
  6e95be44603cc2f0f4a1e04edd5ae3c4  gcc/testsuite/gcc.dg/Warray-bounds-46.c
  cb64293b7b9a92cb5cd94dedde913801  gcc/testsuite/gcc.dg/Warray-bounds-47.c
! cab2ba3eb9cf90b242a46a6d6d8d3bcb  gcc/testsuite/gcc.dg/Warray-bounds-48-novec.c
! c2dd7440bf90485b0a38150b662da025  gcc/testsuite/gcc.dg/Warray-bounds-48.c
  3aa7adb94918bc13234602f8516dd1a9  gcc/testsuite/gcc.dg/Warray-bounds-49.c
  6a53ea6731c8e33605392ac843284e1c  gcc/testsuite/gcc.dg/Warray-bounds-5.c
  99ca661fd44c871abb678e58007bc467  gcc/testsuite/gcc.dg/Warray-bounds-50.c
  80b1ec0f5441fed204561ea4b998732e  gcc/testsuite/gcc.dg/Warray-bounds-51-novec.c
  76dcbe5fc7b7946795b40b27b4583187  gcc/testsuite/gcc.dg/Warray-bounds-51.c
! e65bb9b64b5e0619dca6f795f8b57308  gcc/testsuite/gcc.dg/Warray-bounds-52.c
  e14bc5062e6d55c30a8533079955b491  gcc/testsuite/gcc.dg/Warray-bounds-53.c
  12a0fa5409b214bab70ca278f4e5c555  gcc/testsuite/gcc.dg/Warray-bounds-54.c
  3735dc90a235299206d9177f18fbe519  gcc/testsuite/gcc.dg/Warray-bounds-55.c
*************** ed0be1b0dbc4d096cf7420e0e0916ba7  gcc/te
*** 34914,34919 ****
--- 37152,37163 ----
  34a2f1dde5b0d1ece3145392c920538a  gcc/testsuite/gcc.dg/Warray-bounds-90.c
  597845c74f9e6de5ac325edc29f2ac80  gcc/testsuite/gcc.dg/Warray-bounds-91.c
  aaf0c5347a83074f9bddec09f86caea5  gcc/testsuite/gcc.dg/Warray-bounds-92.c
+ 7c9c0c1abf3d9df51afd1db2b855f4c1  gcc/testsuite/gcc.dg/Warray-bounds-flex-arrays-1.c
+ 00be1a979d840338be862131d5c5dc07  gcc/testsuite/gcc.dg/Warray-bounds-flex-arrays-2.c
+ 3edd4fd8bd087a91e9563e27a8776177  gcc/testsuite/gcc.dg/Warray-bounds-flex-arrays-3.c
+ 91ae71bfd2be2b5916fc12d4d1933c27  gcc/testsuite/gcc.dg/Warray-bounds-flex-arrays-4.c
+ 595e624169c103a98c1cdb039d81b59d  gcc/testsuite/gcc.dg/Warray-bounds-flex-arrays-5.c
+ 6d136ca32fc39f8f1b4263d21e962dea  gcc/testsuite/gcc.dg/Warray-bounds-flex-arrays-6.c
  0b85a8646c05f520e95768e6d605a0dd  gcc/testsuite/gcc.dg/Warray-bounds.c
  02492a8b231edd0a885fae4c951d176c  gcc/testsuite/gcc.dg/Warray-parameter-10.c
  3ea5d5a49094bf793c5897fff9d315be  gcc/testsuite/gcc.dg/Warray-parameter-11.c
*************** b87b7ebc31064d6e57b0af0b3017afeb  gcc/te
*** 34936,34942 ****
  5b6c200e82806a6e48523fca76ca9baa  gcc/testsuite/gcc.dg/Wattributes-5.c
  e07fdc272a434aa05e75700c13b249b0  gcc/testsuite/gcc.dg/Wattributes-6.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/gcc.dg/Wattributes-7.c
! 88ca5f23785409e414d83a6e43d561a3  gcc/testsuite/gcc.dg/Wattributes-8.c
  3657d8392090a291a46e662e66ab20ac  gcc/testsuite/gcc.dg/Wbad-function-cast-1.c
  dec2067dc6cb85456e910b911face133  gcc/testsuite/gcc.dg/Wbool-operation-1.c
  fa34af530f0819d48745f85d1a99fb6d  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-10.c
--- 37180,37186 ----
  5b6c200e82806a6e48523fca76ca9baa  gcc/testsuite/gcc.dg/Wattributes-5.c
  e07fdc272a434aa05e75700c13b249b0  gcc/testsuite/gcc.dg/Wattributes-6.c
  fe25f03fdb469ad245f6cae14480ddad  gcc/testsuite/gcc.dg/Wattributes-7.c
! e6837d08b51cbdb5725ec33c460d55bb  gcc/testsuite/gcc.dg/Wattributes-8.c
  3657d8392090a291a46e662e66ab20ac  gcc/testsuite/gcc.dg/Wbad-function-cast-1.c
  dec2067dc6cb85456e910b911face133  gcc/testsuite/gcc.dg/Wbool-operation-1.c
  fa34af530f0819d48745f85d1a99fb6d  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-10.c
*************** c36a96f0a2054d693f222a7f39b91b3b  gcc/te
*** 34951,34957 ****
  170a588446cae3e8cc514828ad956e96  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-4.c
  6ac379a9179bcb846ad2589dfa8985b4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-5.c
  5202898a25df5cc8ec38caa2f601f70f  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-6.c
! efce06ed4bf7a2b2d008a8d7dc7d7c5d  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-7.c
  87df707b31832d3a13ac5b7916a7f705  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-8.c
  8a8837539e33ca8ac417627e3ec2aa48  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-9.c
  9b33351e5312ae176453336710b80112  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-ignore.c
--- 37195,37201 ----
  170a588446cae3e8cc514828ad956e96  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-4.c
  6ac379a9179bcb846ad2589dfa8985b4  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-5.c
  5202898a25df5cc8ec38caa2f601f70f  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-6.c
! a4be043f27e0d83678af2c268d64edab  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-7.c
  87df707b31832d3a13ac5b7916a7f705  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-8.c
  8a8837539e33ca8ac417627e3ec2aa48  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-9.c
  9b33351e5312ae176453336710b80112  gcc/testsuite/gcc.dg/Wbuiltin-declaration-mismatch-ignore.c
*************** ce09510aec33f3aa92a11cee89b4fe1d  gcc/te
*** 34978,34983 ****
--- 37222,37232 ----
  d9c468d91c48cac11cb3ddc9f78972bc  gcc/testsuite/gcc.dg/Wc99-c11-compat-7.c
  7743e1b205f1143469bd158c877889ac  gcc/testsuite/gcc.dg/Wchar-subscripts-1.c
  23848042c116a8f0cb17f86b4d168bf6  gcc/testsuite/gcc.dg/Wchar-subscripts.c
+ d0c2e1080ec63781cbb00dc4b5839cb9  gcc/testsuite/gcc.dg/Wcomplain-wrong-lang-1.c
+ 741a05bfac93665e852b3d30ec722b71  gcc/testsuite/gcc.dg/Wcomplain-wrong-lang-2.c
+ 0264e0d845f3fe38274e8a3a380bc1ea  gcc/testsuite/gcc.dg/Wcomplain-wrong-lang-3.c
+ 9bea90f917b852e60d0843a840d0be5c  gcc/testsuite/gcc.dg/Wcomplain-wrong-lang-4.c
+ dcf05f4b5ebc0230435c5511bc2e8d08  gcc/testsuite/gcc.dg/Wcomplain-wrong-lang-5.c
  f0d04eb2a12065ae8325119e1af32b99  gcc/testsuite/gcc.dg/Wconversion-3.c
  8a5a51de19f67fc1ef77567aa32604bd  gcc/testsuite/gcc.dg/Wconversion-4.c
  b0d43f24b4e69291ba84c8f5b49e90c7  gcc/testsuite/gcc.dg/Wconversion-5.c
*************** e30c655105453062112de9c7e9443274  gcc/te
*** 35012,35017 ****
--- 37261,37267 ----
  364e7c4451765a266ace542e3351811d  gcc/testsuite/gcc.dg/Wdangling-pointer-2.c
  b2580351ea9d40e4accaa522c5d2f399  gcc/testsuite/gcc.dg/Wdangling-pointer-3.c
  316f1623e5acd83274de418921892a69  gcc/testsuite/gcc.dg/Wdangling-pointer-4.c
+ 18ba0a492210455e75913512789ce9fe  gcc/testsuite/gcc.dg/Wdangling-pointer-pr106868.c
  ec2abae8e4d243e4139a0b6f517f7f0f  gcc/testsuite/gcc.dg/Wdangling-pointer.c
  01f0cbfc5de1ea87105985bb541819fb  gcc/testsuite/gcc.dg/Wdeclaration-after-statement-1.c
  2da9aabb3c1d80fdd6cd7e866760fe3d  gcc/testsuite/gcc.dg/Wdeclaration-after-statement-2.c
*************** f8e0507acf1da471f9078e673cd34f50  gcc/te
*** 35024,35029 ****
--- 37274,37284 ----
  80c0ca28edb638295458740c9ed660b2  gcc/testsuite/gcc.dg/Wduplicate-decl-specifier.c
  1c2b759be94c4194b01f7ab821cdbd76  gcc/testsuite/gcc.dg/Wenum-compare-1.c
  d2e27d460dca94fcc89b5c53608e47b0  gcc/testsuite/gcc.dg/Wenum-conversion.c
+ 0d983ad7393ca749830160cdf8ca0d3a  gcc/testsuite/gcc.dg/Wenum-int-mismatch-1.c
+ 3efd66e5dbf455a5c80fdaafdca4da4b  gcc/testsuite/gcc.dg/Wenum-int-mismatch-2.c
+ 64a08ac2440e9279db581ad8993adce2  gcc/testsuite/gcc.dg/Wenum-int-mismatch-3.c
+ b75686d94d16cc1721025b6d02ef855f  gcc/testsuite/gcc.dg/Wenum-int-mismatch-4.c
+ b190e2aec024d9727c2850692fe1e7b6  gcc/testsuite/gcc.dg/Wenum-int-mismatch-5.c
  6b3f2927bb009c4a746939e172087670  gcc/testsuite/gcc.dg/Werror-1.c
  4d5ffe62df5cb64f7a8e4d71d9989aa8  gcc/testsuite/gcc.dg/Werror-10.c
  9e171907b426827660b9e95608e364c5  gcc/testsuite/gcc.dg/Werror-11.c
*************** fadf7514e1bb63b4a5e988ce51700510  gcc/te
*** 35040,35045 ****
--- 37295,37301 ----
  666446ea2e19372ed246f3e20a0224ef  gcc/testsuite/gcc.dg/Wfatal-2.c
  afffd7f8af0ccf26ac1db7d5fdb87aed  gcc/testsuite/gcc.dg/Wfatal.c
  bf6eefaa01d8a709541da7a1b2e3b6ba  gcc/testsuite/gcc.dg/Wfloat-equal-1.c
+ f3c3746bf375262808b02694edb98d66  gcc/testsuite/gcc.dg/Wformat-overflow1.c
  9277c9006ab7b00c6efc21c31dbd8c4a  gcc/testsuite/gcc.dg/Wframe-address-in-Wall.c
  a3fccbf1a7232687802f00c0e1f6aa94  gcc/testsuite/gcc.dg/Wframe-address.c
  8d0791011fc11919d43bcce331d009ee  gcc/testsuite/gcc.dg/Wframe-larger-than-2.c
*************** cf21dd47d3e7a7fd332e4ebdad43f47f  gcc/te
*** 35097,35103 ****
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
  f273410ff764324a50afef028667ebe5  gcc/testsuite/gcc.dg/Wno-attribute-warning.c
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
! 3d8226a48302922b6854d6583a5de791  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
  86e970a811686b96a8c946217879e0b6  gcc/testsuite/gcc.dg/Wnonnull-2.c
  359b700d31704492b8af3694547fa2b7  gcc/testsuite/gcc.dg/Wnonnull-3.c
--- 37353,37359 ----
  2fb7927f6cb43b738ac0c6c4695c7fed  gcc/testsuite/gcc.dg/Wno-all.c
  f273410ff764324a50afef028667ebe5  gcc/testsuite/gcc.dg/Wno-attribute-warning.c
  d45570f5347d0d2fceb2f46d5bb28195  gcc/testsuite/gcc.dg/Wno-c++-compat.c
! 6e383e84d7ec6abc4d8c5e07b2ccde58  gcc/testsuite/gcc.dg/Wno-frame-address.c
  78b26e55f8111808885390fc48d39f07  gcc/testsuite/gcc.dg/Wno-pointer-sign.c
  86e970a811686b96a8c946217879e0b6  gcc/testsuite/gcc.dg/Wnonnull-2.c
  359b700d31704492b8af3694547fa2b7  gcc/testsuite/gcc.dg/Wnonnull-3.c
*************** d45570f5347d0d2fceb2f46d5bb28195  gcc/te
*** 35105,35115 ****
  122d168a76610b5995ed8402529d4c4d  gcc/testsuite/gcc.dg/Wnonnull-5.c
  349ca7e23fb9ac66e9d5e90eeec2b9bc  gcc/testsuite/gcc.dg/Wnonnull-6.c
  80eac9b22b9d41ef2026f9a55a1c269c  gcc/testsuite/gcc.dg/Wnonnull-7.c
  12ac8bc4beaf9edbdf04979c8dfcb9e8  gcc/testsuite/gcc.dg/Wnonnull.c
  f3a584c667b58c927f9e96a3b3bf281d  gcc/testsuite/gcc.dg/Wobjsize-1.c
  964f8252363c2458931200da17eaaa36  gcc/testsuite/gcc.dg/Wobjsize-1.h
  b92f8933f909c18a277ea167043b2847  gcc/testsuite/gcc.dg/Wold-style-definition-1.c
! 8fa8c8f96ec9b62258e5040409f3e505  gcc/testsuite/gcc.dg/Wold-style-definition-2.c
  7256cd2e505f10c051c8ac833ca88513  gcc/testsuite/gcc.dg/Woverflow-1.c
  9bc388e58bfd1cdb62f20ded1e767644  gcc/testsuite/gcc.dg/Woverflow-2.c
  c8cfeb1be8b9ab6b1a5bf044e67e73e2  gcc/testsuite/gcc.dg/Woverflow-3.c
--- 37361,37372 ----
  122d168a76610b5995ed8402529d4c4d  gcc/testsuite/gcc.dg/Wnonnull-5.c
  349ca7e23fb9ac66e9d5e90eeec2b9bc  gcc/testsuite/gcc.dg/Wnonnull-6.c
  80eac9b22b9d41ef2026f9a55a1c269c  gcc/testsuite/gcc.dg/Wnonnull-7.c
+ 2443d129515c78bbd9ac131fa95a4384  gcc/testsuite/gcc.dg/Wnonnull-8.c
  12ac8bc4beaf9edbdf04979c8dfcb9e8  gcc/testsuite/gcc.dg/Wnonnull.c
  f3a584c667b58c927f9e96a3b3bf281d  gcc/testsuite/gcc.dg/Wobjsize-1.c
  964f8252363c2458931200da17eaaa36  gcc/testsuite/gcc.dg/Wobjsize-1.h
  b92f8933f909c18a277ea167043b2847  gcc/testsuite/gcc.dg/Wold-style-definition-1.c
! 645f8590dc0563fcc985b5ae4c105626  gcc/testsuite/gcc.dg/Wold-style-definition-2.c
  7256cd2e505f10c051c8ac833ca88513  gcc/testsuite/gcc.dg/Woverflow-1.c
  9bc388e58bfd1cdb62f20ded1e767644  gcc/testsuite/gcc.dg/Woverflow-2.c
  c8cfeb1be8b9ab6b1a5bf044e67e73e2  gcc/testsuite/gcc.dg/Woverflow-3.c
*************** a68483d45a63cbc8948df11f21228729  gcc/te
*** 35141,35148 ****
  5c95b8dd44003f49595ab21613f2ecf8  gcc/testsuite/gcc.dg/Wparentheses-3.c
  2a8b847e79577357a66fdbe9ff0c2c13  gcc/testsuite/gcc.dg/Wparentheses-4.c
  8e41f06a61c51d51d6ecde7f0f1da968  gcc/testsuite/gcc.dg/Wparentheses-5.c
! 42579a89b0619df25adb68bea2754c3c  gcc/testsuite/gcc.dg/Wparentheses-6.c
! 62c82bd9750b3488374d128b387eaf55  gcc/testsuite/gcc.dg/Wparentheses-7.c
  078db4636bb2e603aa4154acfa78dd5a  gcc/testsuite/gcc.dg/Wparentheses-8.c
  733662f34bd059186239cd7a8f9bf45a  gcc/testsuite/gcc.dg/Wparentheses-9.c
  f83c729b5368a427c44394d243c75115  gcc/testsuite/gcc.dg/Wpointer-arith.c
--- 37398,37405 ----
  5c95b8dd44003f49595ab21613f2ecf8  gcc/testsuite/gcc.dg/Wparentheses-3.c
  2a8b847e79577357a66fdbe9ff0c2c13  gcc/testsuite/gcc.dg/Wparentheses-4.c
  8e41f06a61c51d51d6ecde7f0f1da968  gcc/testsuite/gcc.dg/Wparentheses-5.c
! dda3cd0483bccf7bfb20a5e3760d8802  gcc/testsuite/gcc.dg/Wparentheses-6.c
! e0beaed7003b891a3da557f327d3d24c  gcc/testsuite/gcc.dg/Wparentheses-7.c
  078db4636bb2e603aa4154acfa78dd5a  gcc/testsuite/gcc.dg/Wparentheses-8.c
  733662f34bd059186239cd7a8f9bf45a  gcc/testsuite/gcc.dg/Wparentheses-9.c
  f83c729b5368a427c44394d243c75115  gcc/testsuite/gcc.dg/Wpointer-arith.c
*************** e4fa08748fb198fefd089310c5cc45b3  gcc/te
*** 35221,35226 ****
--- 37478,37486 ----
  3eb7b891e18663975849bd38a63be2b8  gcc/testsuite/gcc.dg/Wstrict-aliasing-converted-assigned.c
  96b75b2ab89861b0b841292bd711f135  gcc/testsuite/gcc.dg/Wstrict-aliasing-float-ptr-int-obj.c
  f84a62b2c04fd0a9824305fdbf33ca9a  gcc/testsuite/gcc.dg/Wstrict-aliasing-struct-with-char-member.c
+ 7d527fafe1db806347cfb826be8f7ac6  gcc/testsuite/gcc.dg/Wstrict-flex-arrays-2.c
+ 1ab9973f43ef639043dfbd2f42f2c6c7  gcc/testsuite/gcc.dg/Wstrict-flex-arrays-3.c
+ b70ddb0fb0f39ff0a77446d94a7b7efb  gcc/testsuite/gcc.dg/Wstrict-flex-arrays.c
  af59ad0b143483efd888a257a65c26fc  gcc/testsuite/gcc.dg/Wstrict-overflow-1.c
  1110716453a4773019d5bb6410117baf  gcc/testsuite/gcc.dg/Wstrict-overflow-10.c
  5949afbfe54027b57c5a7ff340e5c3d8  gcc/testsuite/gcc.dg/Wstrict-overflow-11.c
*************** def8fa5a7aa6b0a519559905119bf281  gcc/te
*** 35313,35319 ****
  3ed0228ee42fdeeee600954a398a1234  gcc/testsuite/gcc.dg/Wstringop-overflow-6.c
  7bbffc672c74ca8a522c2041f9deb5ee  gcc/testsuite/gcc.dg/Wstringop-overflow-60.c
  6939fabd511eb9944599e0b4a108d8a0  gcc/testsuite/gcc.dg/Wstringop-overflow-61.c
! 357bbe80d1d933328b212478cfbf9ef5  gcc/testsuite/gcc.dg/Wstringop-overflow-62.c
  5f5bbe8b13d63449ad123893fd334f76  gcc/testsuite/gcc.dg/Wstringop-overflow-63.c
  ca15ac122386ace1c5f64e5fc3ed9352  gcc/testsuite/gcc.dg/Wstringop-overflow-64.c
  ba09b89eacd1a1f030c52761621d27c3  gcc/testsuite/gcc.dg/Wstringop-overflow-65.c
--- 37573,37579 ----
  3ed0228ee42fdeeee600954a398a1234  gcc/testsuite/gcc.dg/Wstringop-overflow-6.c
  7bbffc672c74ca8a522c2041f9deb5ee  gcc/testsuite/gcc.dg/Wstringop-overflow-60.c
  6939fabd511eb9944599e0b4a108d8a0  gcc/testsuite/gcc.dg/Wstringop-overflow-61.c
! ef583556aa2b7f02fad61624a0a3f35d  gcc/testsuite/gcc.dg/Wstringop-overflow-62.c
  5f5bbe8b13d63449ad123893fd334f76  gcc/testsuite/gcc.dg/Wstringop-overflow-63.c
  ca15ac122386ace1c5f64e5fc3ed9352  gcc/testsuite/gcc.dg/Wstringop-overflow-64.c
  ba09b89eacd1a1f030c52761621d27c3  gcc/testsuite/gcc.dg/Wstringop-overflow-65.c
*************** af3b50877504362cbb1ccef9ff0f0400  gcc/te
*** 35343,35349 ****
--- 37603,37611 ----
  949a031e65e64751dcadeeed6b8a8c28  gcc/testsuite/gcc.dg/Wstringop-overflow-86.c
  e2bd77542ae008c9402736b63e4a5343  gcc/testsuite/gcc.dg/Wstringop-overflow-87.c
  3becedb6b1d221ae76e4e6975376ea8b  gcc/testsuite/gcc.dg/Wstringop-overflow-88.c
+ bf9f320ffe6b2744e943c80ee13592e9  gcc/testsuite/gcc.dg/Wstringop-overflow-89.c
  efc30ea8232c5270c8cbd61b0a271ef1  gcc/testsuite/gcc.dg/Wstringop-overflow-9.c
+ f144664bddf2c81971caa5cfad6b7101  gcc/testsuite/gcc.dg/Wstringop-overflow-pr106904.c
  f16f5c5471020dfe24813accb55a72a7  gcc/testsuite/gcc.dg/Wstringop-overflow.c
  82a023f65dab8d4e888e7b6af021dc1d  gcc/testsuite/gcc.dg/Wstringop-overread-2.c
  ce1a42317ef0bc7599074fc1fe734a77  gcc/testsuite/gcc.dg/Wstringop-overread-3.c
*************** a13eb5b6d56da8e97b1f212cb86cf10e  gcc/te
*** 35392,35399 ****
  60507dbf641d9a6406e5d78edb6b1edf  gcc/testsuite/gcc.dg/Wunused-var-4.c
  e84c031d0cb7a11693c4b37f0142bded  gcc/testsuite/gcc.dg/Wunused-var-5.c
  6a41e2bb8df7e9d9c2dc7b7aa9fa559f  gcc/testsuite/gcc.dg/Wunused-var-6.c
! 349cdcb7c52fd8473d2de9460bdbeecb  gcc/testsuite/gcc.dg/Wuse-after-free-2.c
  1451aa756e6066ce78c4abc8cdd5081c  gcc/testsuite/gcc.dg/Wuse-after-free-3.c
  e6fbb87a8003326f83f635271804917e  gcc/testsuite/gcc.dg/Wuse-after-free.c
  285c7e1e346f5498c52fc3f2557e2f20  gcc/testsuite/gcc.dg/Wvla-1.c
  64bfeb26603a057e080b6ec9a2b39583  gcc/testsuite/gcc.dg/Wvla-2.c
--- 37654,37663 ----
  60507dbf641d9a6406e5d78edb6b1edf  gcc/testsuite/gcc.dg/Wunused-var-4.c
  e84c031d0cb7a11693c4b37f0142bded  gcc/testsuite/gcc.dg/Wunused-var-5.c
  6a41e2bb8df7e9d9c2dc7b7aa9fa559f  gcc/testsuite/gcc.dg/Wunused-var-6.c
! e069e831ec812b42fbe698791b4eccc8  gcc/testsuite/gcc.dg/Wuse-after-free-2.c
  1451aa756e6066ce78c4abc8cdd5081c  gcc/testsuite/gcc.dg/Wuse-after-free-3.c
+ ea478d2a0d932457ff9d136b5f1a897c  gcc/testsuite/gcc.dg/Wuse-after-free-pr109123.c
+ 8a2b1e7c915347ce1f16658af4e1d253  gcc/testsuite/gcc.dg/Wuse-after-free-pr109170.c
  e6fbb87a8003326f83f635271804917e  gcc/testsuite/gcc.dg/Wuse-after-free.c
  285c7e1e346f5498c52fc3f2557e2f20  gcc/testsuite/gcc.dg/Wvla-1.c
  64bfeb26603a057e080b6ec9a2b39583  gcc/testsuite/gcc.dg/Wvla-2.c
*************** c0135afc5269c6f871dc2d0d446ace02  gcc/te
*** 35421,35435 ****
  61db3569f87675cf18aa9ec737d4482e  gcc/testsuite/gcc.dg/Wvla-parameter-9.c
  719e8d0d3ef2404f3da8959ccf484f95  gcc/testsuite/gcc.dg/Wvla-parameter.c
  5fffb57610eb1fa0134cbf5e15786d2f  gcc/testsuite/gcc.dg/Wwrite-strings-1.c
  2c1df90fdfff3161d9b25eb34c52ba47  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-2-novec.c
! 0d34355156e16f914866f763a54d03cb  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-2.c
  fdd470d58568d2da9fbf935b7a830003  gcc/testsuite/gcc.dg/Wzero-length-array-bounds.c
  ba877f8bb7ef9b285db351d83d2d0fa3  gcc/testsuite/gcc.dg/absu.c
  ac5d23bd8b84607e06f4682d24c54e96  gcc/testsuite/gcc.dg/add-mul-overflow-1.c
  6635be8a44d0fb2136fde83d328e24a8  gcc/testsuite/gcc.dg/addr_builtin-1.c
! 21ad05f6b9ac6c5ce3a6111aba633586  gcc/testsuite/gcc.dg/addr_equal-1.c
  30a7d179045c9dfbeaf77863c9a666ee  gcc/testsuite/gcc.dg/alias-1.c
! 4f6d694d1eba0566b352561f0806a291  gcc/testsuite/gcc.dg/alias-10.c
  aeaf1bfe8cfcbf69579479fe7c5fb4d3  gcc/testsuite/gcc.dg/alias-11.c
  12d54765ca522283848dc0d126562a69  gcc/testsuite/gcc.dg/alias-12.c
  a54f6b2dd0ab16e9d2c65a6ed228952e  gcc/testsuite/gcc.dg/alias-13.c
--- 37685,37701 ----
  61db3569f87675cf18aa9ec737d4482e  gcc/testsuite/gcc.dg/Wvla-parameter-9.c
  719e8d0d3ef2404f3da8959ccf484f95  gcc/testsuite/gcc.dg/Wvla-parameter.c
  5fffb57610eb1fa0134cbf5e15786d2f  gcc/testsuite/gcc.dg/Wwrite-strings-1.c
+ 7f88aa93488ad4e1763464c4f0d4cb1c  gcc/testsuite/gcc.dg/Wxor-used-as-pow-pr106830.c
  2c1df90fdfff3161d9b25eb34c52ba47  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-2-novec.c
! 32e100d01495383efc8b112a434d69df  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-2.c
! 45daea5245c80442c211f21720675880  gcc/testsuite/gcc.dg/Wzero-length-array-bounds-3.c
  fdd470d58568d2da9fbf935b7a830003  gcc/testsuite/gcc.dg/Wzero-length-array-bounds.c
  ba877f8bb7ef9b285db351d83d2d0fa3  gcc/testsuite/gcc.dg/absu.c
  ac5d23bd8b84607e06f4682d24c54e96  gcc/testsuite/gcc.dg/add-mul-overflow-1.c
  6635be8a44d0fb2136fde83d328e24a8  gcc/testsuite/gcc.dg/addr_builtin-1.c
! 65217b368b16a9d0ad5ac6f3c933366c  gcc/testsuite/gcc.dg/addr_equal-1.c
  30a7d179045c9dfbeaf77863c9a666ee  gcc/testsuite/gcc.dg/alias-1.c
! 0619174a7cfea9b6f1781d5f2c588fc0  gcc/testsuite/gcc.dg/alias-10.c
  aeaf1bfe8cfcbf69579479fe7c5fb4d3  gcc/testsuite/gcc.dg/alias-11.c
  12d54765ca522283848dc0d126562a69  gcc/testsuite/gcc.dg/alias-12.c
  a54f6b2dd0ab16e9d2c65a6ed228952e  gcc/testsuite/gcc.dg/alias-13.c
*************** b3869c9bd68bb9659f230f48bf56f83c  gcc/te
*** 35455,35474 ****
  f69e8cd9fd4e56cc65e71a4dfef997a4  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue-2.c
  1a5f9e3123194efaadd5fb7ab38396df  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c
  86d6d6ec23a415364e5fca0ca3cc5e2e  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-minimal.c
  2a4fb2c70afac3ec00d2aa07665c4bec  gcc/testsuite/gcc.dg/analyzer/abort.c
  ae69c46005567e7d1eb865066adcb226  gcc/testsuite/gcc.dg/analyzer/abs-1.c
  ca39a9bcc32da0de969872e39eec2dcb  gcc/testsuite/gcc.dg/analyzer/aliasing-1.c
  21ccef1b042617794f28392a02c47c2e  gcc/testsuite/gcc.dg/analyzer/aliasing-2.c
  32fde96ad42a02a24edc6a02b1226299  gcc/testsuite/gcc.dg/analyzer/aliasing-3.c
  18fc2a84aecda4ede234a6de9d8690c2  gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
! f77fcc9ffd92ab717a2d6107303723f5  gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h
  90dda8fe240a90810c6e1ceac986f94d  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c
  4a550fb2a3d0da71845491af53126fc1  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c
  4af04acb904167afb9365e7d69bb67d7  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c
  6f13c48d287fe59d52b17e51ccd6fca9  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2a.c
  91071d4bdc9f508d03823383cfe8302a  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3.c
  ddd318f0d7ec18cf56dba10884be8c19  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3a.c
! f0abf39d853f4de954184bd7ca42952a  gcc/testsuite/gcc.dg/analyzer/analyzer.exp
  fc965261104eb781f63faa0fe5a3d7b1  gcc/testsuite/gcc.dg/analyzer/asm-x86-1.c
  7145b6f3637a739ae894c4e1ebe7ee08  gcc/testsuite/gcc.dg/analyzer/asm-x86-dyndbg-1.c
  2d9b7a44f7c158100d74ae0014a15577  gcc/testsuite/gcc.dg/analyzer/asm-x86-dyndbg-2.c
--- 37721,37756 ----
  f69e8cd9fd4e56cc65e71a4dfef997a4  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue-2.c
  1a5f9e3123194efaadd5fb7ab38396df  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-dedupe-issue.c
  86d6d6ec23a415364e5fca0ca3cc5e2e  gcc/testsuite/gcc.dg/analyzer/CVE-2005-1689-minimal.c
+ 78a5d2ec1775604f51f65022cb368643  gcc/testsuite/gcc.dg/analyzer/CWE-131-examples.c
+ d0f7bb2477c7399d9c787d2e1891f0a6  gcc/testsuite/gcc.dg/analyzer/SARD-tc117-basic-00001-min.c
+ 4656af16261a46b3b0a549b8e725fb72  gcc/testsuite/gcc.dg/analyzer/SARD-tc1909-stack_overflow_loop.c
+ 7dbb75c2ad0127cda3c2a6b1c8a376b6  gcc/testsuite/gcc.dg/analyzer/SARD-tc249-basic-00034-min.c
+ 05d3112c6482099e76531347972f0253  gcc/testsuite/gcc.dg/analyzer/SARD-tc293-basic-00045-min.c
+ d396ac30a4549605a8b91e88fb32d4e3  gcc/testsuite/gcc.dg/analyzer/SARD-tc841-basic-00182-min.c
  2a4fb2c70afac3ec00d2aa07665c4bec  gcc/testsuite/gcc.dg/analyzer/abort.c
  ae69c46005567e7d1eb865066adcb226  gcc/testsuite/gcc.dg/analyzer/abs-1.c
  ca39a9bcc32da0de969872e39eec2dcb  gcc/testsuite/gcc.dg/analyzer/aliasing-1.c
  21ccef1b042617794f28392a02c47c2e  gcc/testsuite/gcc.dg/analyzer/aliasing-2.c
  32fde96ad42a02a24edc6a02b1226299  gcc/testsuite/gcc.dg/analyzer/aliasing-3.c
+ acf49c11840dc8bc432c930cb02b389c  gcc/testsuite/gcc.dg/analyzer/aliasing-pr106473.c
  18fc2a84aecda4ede234a6de9d8690c2  gcc/testsuite/gcc.dg/analyzer/alloca-leak.c
! 75fcafdd3e3254bbd7067487aac00bb8  gcc/testsuite/gcc.dg/analyzer/allocation-size-1.c
! 883809a543fc00194aa0122fd7885429  gcc/testsuite/gcc.dg/analyzer/allocation-size-2.c
! c96b0b1881ce3b3626d09a506ac4c405  gcc/testsuite/gcc.dg/analyzer/allocation-size-3.c
! b9014dde0622543e19db1bd68aadaf4b  gcc/testsuite/gcc.dg/analyzer/allocation-size-4.c
! 2fbe7c43718aa946f2698455261a0c9f  gcc/testsuite/gcc.dg/analyzer/allocation-size-5.c
! 7df73f5a6b529b429351deaa3466abb2  gcc/testsuite/gcc.dg/analyzer/allocation-size-multiline-1.c
! 8832903c7e2ccd3d92a2e29d550241ac  gcc/testsuite/gcc.dg/analyzer/allocation-size-multiline-2.c
! 7ca48bbcabd9772dd758051b4536ee34  gcc/testsuite/gcc.dg/analyzer/allocation-size-multiline-3.c
! 84d8987fac13d5215f5fc055229d77d8  gcc/testsuite/gcc.dg/analyzer/analyzer-debugging-fns-1.c
! e1fdaa48444fc5676927bb339608d942  gcc/testsuite/gcc.dg/analyzer/analyzer-decls.h
  90dda8fe240a90810c6e1ceac986f94d  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-0.c
  4a550fb2a3d0da71845491af53126fc1  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-1.c
  4af04acb904167afb9365e7d69bb67d7  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2.c
  6f13c48d287fe59d52b17e51ccd6fca9  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-2a.c
  91071d4bdc9f508d03823383cfe8302a  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3.c
  ddd318f0d7ec18cf56dba10884be8c19  gcc/testsuite/gcc.dg/analyzer/analyzer-verbosity-3a.c
! 9bf5637bd79b2ee6a8c9d69834c8d2fa  gcc/testsuite/gcc.dg/analyzer/analyzer.exp
  fc965261104eb781f63faa0fe5a3d7b1  gcc/testsuite/gcc.dg/analyzer/asm-x86-1.c
  7145b6f3637a739ae894c4e1ebe7ee08  gcc/testsuite/gcc.dg/analyzer/asm-x86-dyndbg-1.c
  2d9b7a44f7c158100d74ae0014a15577  gcc/testsuite/gcc.dg/analyzer/asm-x86-dyndbg-2.c
*************** d780518e28005b87079c2be1a96dab0e  gcc/te
*** 35476,35482 ****
  a4b48a92bf5c5ed1b18d749eccdb9e3a  gcc/testsuite/gcc.dg/analyzer/asm-x86-lp64-2.c
  c41899060576b47d99e59ea79b7abcf5  gcc/testsuite/gcc.dg/analyzer/attr-const-1.c
  a0b2e2cd9950584a2520f1fcc3f0968d  gcc/testsuite/gcc.dg/analyzer/attr-const-2.c
! 6b887f043f42b25927fbf3734691e148  gcc/testsuite/gcc.dg/analyzer/attr-const-3.c
  7e04586dfdf34765be05ca4a006473a3  gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c
  b4515e65ed785bcd07a7162f6ccb804a  gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c
  046d0c0ef6b5715f28a641d19c38b314  gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c
--- 37758,37764 ----
  a4b48a92bf5c5ed1b18d749eccdb9e3a  gcc/testsuite/gcc.dg/analyzer/asm-x86-lp64-2.c
  c41899060576b47d99e59ea79b7abcf5  gcc/testsuite/gcc.dg/analyzer/attr-const-1.c
  a0b2e2cd9950584a2520f1fcc3f0968d  gcc/testsuite/gcc.dg/analyzer/attr-const-2.c
! 4929e246f79eda3c50d5aa9ecf568159  gcc/testsuite/gcc.dg/analyzer/attr-const-3.c
  7e04586dfdf34765be05ca4a006473a3  gcc/testsuite/gcc.dg/analyzer/attr-malloc-1.c
  b4515e65ed785bcd07a7162f6ccb804a  gcc/testsuite/gcc.dg/analyzer/attr-malloc-2.c
  046d0c0ef6b5715f28a641d19c38b314  gcc/testsuite/gcc.dg/analyzer/attr-malloc-4.c
*************** b4515e65ed785bcd07a7162f6ccb804a  gcc/te
*** 35484,35497 ****
  243c8e733d93a30f1b96b68044c19782  gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c
  35f38fdea541935448e811384d026d07  gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c
  bccece796597d19d1f7a0fea1ecd1d5c  gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c
  7a814ea917099316d0741d5799a472f0  gcc/testsuite/gcc.dg/analyzer/attr-tainted_args-1.c
  3f7d3cba520a26c38c50f22274b6c413  gcc/testsuite/gcc.dg/analyzer/attr-tainted_args-misuses.c
! 86a8afc40e3c3f447547c16cf1afd633  gcc/testsuite/gcc.dg/analyzer/attribute-nonnull.c
  215f65c0f414779a43cca081e7a96b0b  gcc/testsuite/gcc.dg/analyzer/bitfields-1.c
  9a9ee4011d51982118bd3982ddc26b5e  gcc/testsuite/gcc.dg/analyzer/boxed-malloc-1.c
  de1c3d5d0b46c866fdd4ebeca363175b  gcc/testsuite/gcc.dg/analyzer/bzero-1.c
  2a6fd4b0596437c81584911234e358fe  gcc/testsuite/gcc.dg/analyzer/bzip2-arg-parse-1.c
  768424351f1b238f53407ec9bb29e126  gcc/testsuite/gcc.dg/analyzer/call-summaries-1.c
  a99cd9f5718c9d37aee6aee0294cc872  gcc/testsuite/gcc.dg/analyzer/callbacks-1.c
  0b7fa83ab4d00972ea110527aa160a26  gcc/testsuite/gcc.dg/analyzer/callbacks-2.c
  054c975de1ad550bc0b3a3000890f5ab  gcc/testsuite/gcc.dg/analyzer/callbacks-3.c
--- 37766,37790 ----
  243c8e733d93a30f1b96b68044c19782  gcc/testsuite/gcc.dg/analyzer/attr-malloc-6.c
  35f38fdea541935448e811384d026d07  gcc/testsuite/gcc.dg/analyzer/attr-malloc-CVE-2019-19078-usb-leak.c
  bccece796597d19d1f7a0fea1ecd1d5c  gcc/testsuite/gcc.dg/analyzer/attr-malloc-misuses.c
+ e335d916bb1026d6d9d508119e1eb9e8  gcc/testsuite/gcc.dg/analyzer/attr-malloc-pr108252.c
+ 9424116fb3a7804ff0f4eac8cf131a38  gcc/testsuite/gcc.dg/analyzer/attr-nonnull-pr106325.c
  7a814ea917099316d0741d5799a472f0  gcc/testsuite/gcc.dg/analyzer/attr-tainted_args-1.c
  3f7d3cba520a26c38c50f22274b6c413  gcc/testsuite/gcc.dg/analyzer/attr-tainted_args-misuses.c
! c480119897bf409501913cf24fea555c  gcc/testsuite/gcc.dg/analyzer/attribute-nonnull.c
  215f65c0f414779a43cca081e7a96b0b  gcc/testsuite/gcc.dg/analyzer/bitfields-1.c
  9a9ee4011d51982118bd3982ddc26b5e  gcc/testsuite/gcc.dg/analyzer/boxed-malloc-1.c
+ b079556a417329a74b2a9c1f780cc54d  gcc/testsuite/gcc.dg/analyzer/builtins-pr107565.c
  de1c3d5d0b46c866fdd4ebeca363175b  gcc/testsuite/gcc.dg/analyzer/bzero-1.c
  2a6fd4b0596437c81584911234e358fe  gcc/testsuite/gcc.dg/analyzer/bzip2-arg-parse-1.c
  768424351f1b238f53407ec9bb29e126  gcc/testsuite/gcc.dg/analyzer/call-summaries-1.c
+ 722fc329175bc9af28757071b8488205  gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c
+ 1d08e89be2885a0530a8dd0fd33848ce  gcc/testsuite/gcc.dg/analyzer/call-summaries-3.c
+ a98652f2d06708729de689f5875dcc2c  gcc/testsuite/gcc.dg/analyzer/call-summaries-asm-x86.c
+ 6958986d14e5b5d82a6e5d8d1a4253fe  gcc/testsuite/gcc.dg/analyzer/call-summaries-errno.c
+ 53dd37e8e78b9b34ac59c168b3026d6c  gcc/testsuite/gcc.dg/analyzer/call-summaries-malloc.c
+ 5106fcf69d180623a3f99851f20849d0  gcc/testsuite/gcc.dg/analyzer/call-summaries-pr107072.c
+ c8b52dd62c1c9d300466183f293ad610  gcc/testsuite/gcc.dg/analyzer/call-summaries-pr107158-2.c
+ c217dc0a580b458c80df495d4eabd771  gcc/testsuite/gcc.dg/analyzer/call-summaries-pr107158.c
  a99cd9f5718c9d37aee6aee0294cc872  gcc/testsuite/gcc.dg/analyzer/callbacks-1.c
  0b7fa83ab4d00972ea110527aa160a26  gcc/testsuite/gcc.dg/analyzer/callbacks-2.c
  054c975de1ad550bc0b3a3000890f5ab  gcc/testsuite/gcc.dg/analyzer/callbacks-3.c
*************** ea761a32a87e7dd14f7f4d83472c0e79  gcc/te
*** 35512,35518 ****
  a9211e3f54bc8dd31aed70c7c3f9b905  gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
  1c0a20304d7da2a80255211819446599  gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c
  8cfdc88c0b5a96aa0b303a5409085dfc  gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c
! 5e1eac67b9b0fb99867b15785509dc37  gcc/testsuite/gcc.dg/analyzer/data-model-1.c
  fbf171c2475c36b54306b4fa689eee97  gcc/testsuite/gcc.dg/analyzer/data-model-10.c
  6c6fdb499c22eb058dcbea40374d2696  gcc/testsuite/gcc.dg/analyzer/data-model-11.c
  9117b1e1f037bbea1974142b15b71ebf  gcc/testsuite/gcc.dg/analyzer/data-model-12.c
--- 37805,37813 ----
  a9211e3f54bc8dd31aed70c7c3f9b905  gcc/testsuite/gcc.dg/analyzer/conditionals-3.c
  1c0a20304d7da2a80255211819446599  gcc/testsuite/gcc.dg/analyzer/conditionals-notrans.c
  8cfdc88c0b5a96aa0b303a5409085dfc  gcc/testsuite/gcc.dg/analyzer/conditionals-trans.c
! 99fb800a6b0a83f7c07274389ab87765  gcc/testsuite/gcc.dg/analyzer/coreutils-cksum-pr108664.c
! 1066b0bbdd0921af0ddb70986559e4c9  gcc/testsuite/gcc.dg/analyzer/coreutils-sum-pr108666.c
! 7ebb983e4240132a42afee7e5b9e33af  gcc/testsuite/gcc.dg/analyzer/data-model-1.c
  fbf171c2475c36b54306b4fa689eee97  gcc/testsuite/gcc.dg/analyzer/data-model-10.c
  6c6fdb499c22eb058dcbea40374d2696  gcc/testsuite/gcc.dg/analyzer/data-model-11.c
  9117b1e1f037bbea1974142b15b71ebf  gcc/testsuite/gcc.dg/analyzer/data-model-12.c
*************** fbf171c2475c36b54306b4fa689eee97  gcc/te
*** 35527,35535 ****
  e5cb255db014dc57d570bbe1561719b2  gcc/testsuite/gcc.dg/analyzer/data-model-20.c
  1a7244f30f830702369a54bb48fc8aef  gcc/testsuite/gcc.dg/analyzer/data-model-21.c
  167e706d53055dd18733c241608420b2  gcc/testsuite/gcc.dg/analyzer/data-model-22.c
! 99c2999efefff19cb59bd84ab2498758  gcc/testsuite/gcc.dg/analyzer/data-model-23.c
  e7daf7589a18b2ab24bdc2f3f62367d5  gcc/testsuite/gcc.dg/analyzer/data-model-4.c
! ec77a3f181dddb102f833affeab3f86a  gcc/testsuite/gcc.dg/analyzer/data-model-5.c
  50de8dcfc0305e565c234999fa450fed  gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
  d932e32ee23667f73c2b38527aaef2a9  gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
  ce3825071f0459fd39e18dc4443bc5a7  gcc/testsuite/gcc.dg/analyzer/data-model-5d.c
--- 37822,37830 ----
  e5cb255db014dc57d570bbe1561719b2  gcc/testsuite/gcc.dg/analyzer/data-model-20.c
  1a7244f30f830702369a54bb48fc8aef  gcc/testsuite/gcc.dg/analyzer/data-model-21.c
  167e706d53055dd18733c241608420b2  gcc/testsuite/gcc.dg/analyzer/data-model-22.c
! 60c1562137794e4c7d5ca3e93f330449  gcc/testsuite/gcc.dg/analyzer/data-model-23.c
  e7daf7589a18b2ab24bdc2f3f62367d5  gcc/testsuite/gcc.dg/analyzer/data-model-4.c
! 8b3936ae8969f3a1152ef7885922b4ad  gcc/testsuite/gcc.dg/analyzer/data-model-5.c
  50de8dcfc0305e565c234999fa450fed  gcc/testsuite/gcc.dg/analyzer/data-model-5b.c
  d932e32ee23667f73c2b38527aaef2a9  gcc/testsuite/gcc.dg/analyzer/data-model-5c.c
  ce3825071f0459fd39e18dc4443bc5a7  gcc/testsuite/gcc.dg/analyzer/data-model-5d.c
*************** be7aafbe051db1d04fdb6dda26644e29  gcc/te
*** 35537,35544 ****
--- 37832,37853 ----
  e30a91c7d128ee44d4a195e5868ee03a  gcc/testsuite/gcc.dg/analyzer/data-model-8.c
  31f1a32a7438f9e74a61e8b03567a77e  gcc/testsuite/gcc.dg/analyzer/data-model-9.c
  e9598af7814c9b574008795653746252  gcc/testsuite/gcc.dg/analyzer/data-model-path-1.c
+ 7cecbe3ff8f0a8faf72f48437253394d  gcc/testsuite/gcc.dg/analyzer/deref-before-check-1.c
+ c983dc0a3824841a4b277a70d4f30c24  gcc/testsuite/gcc.dg/analyzer/deref-before-check-2.c
+ 1712456e05161d3b0417014c34379ace  gcc/testsuite/gcc.dg/analyzer/deref-before-check-macro-pr108745.c
+ 2b005f545877795663ba55a328aa9b60  gcc/testsuite/gcc.dg/analyzer/deref-before-check-macro.c
+ 579acdee714d530cdb83efe3e4280cb6  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr108455-1.c
+ e504f98fa61c5596bd399d93b6c5bb0b  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr108455-git-pack-revindex.c
+ b5db231f7d5cf3af0c19c514187f18df  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr108475-1.c
+ 4ecd7c5fb8128c8790fbf6e467e6f447  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr108475-haproxy-tcpcheck.c
+ d73c74c2b29425393e36b683916e3230  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr109060-haproxy-cfgparse.c
+ 1bd55ea175c88e72b390562b62790fa2  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr109239-linux-bus.c
+ 4bb996492235cb81f106826f5610ae8c  gcc/testsuite/gcc.dg/analyzer/deref-before-check-pr77425.c
+ d2ac7cdc94dcc7ea5bfd23ed78b9b41a  gcc/testsuite/gcc.dg/analyzer/deref-before-check-qemu-qtest_rsp_args.c
  64840faa76375f58a4f02239bbee2133  gcc/testsuite/gcc.dg/analyzer/describe-1.c
  13ffe607de30212adc9ebda16cc7cbbc  gcc/testsuite/gcc.dg/analyzer/disabling.c
+ 5a46fc2ecfd967da0040babb4bca6499  gcc/testsuite/gcc.dg/analyzer/doom-d_main-IdentifyVersion.c
+ 7658389385e72adc055d72f76e6eb1c1  gcc/testsuite/gcc.dg/analyzer/doom-s_sound-pr108867.c
  755fd6b33501ddcdd674252b43e6c382  gcc/testsuite/gcc.dg/analyzer/dot-output.c
  0ec3d38b15165ad7732c142bfbb0329f  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1-a.c
  5da5e08e5a3b9fac183936207016118f  gcc/testsuite/gcc.dg/analyzer/double-free-lto-1-b.c
*************** e9598af7814c9b574008795653746252  gcc/te
*** 35547,35591 ****
  101f9021149cc564f0ca9fb761c01032  gcc/testsuite/gcc.dg/analyzer/edges-1.c
  5349560ff6dd31c0631eedd6b00658ee  gcc/testsuite/gcc.dg/analyzer/edges-2.c
  cd58bff2b56161f01ab9307737cbe5dd  gcc/testsuite/gcc.dg/analyzer/equivalence.c
  7a41edb146e30ff88645faff41cd6660  gcc/testsuite/gcc.dg/analyzer/error-1.c
  959242e188dc1726d5f00627897522c2  gcc/testsuite/gcc.dg/analyzer/error-2.c
  c5de56a4561f064e270ee358ffb7aa30  gcc/testsuite/gcc.dg/analyzer/error-3.c
  f336bce0a86a089cef98497358794093  gcc/testsuite/gcc.dg/analyzer/escaping-1.c
  a5f30efaea21fb670c8c02fcd0a225ba  gcc/testsuite/gcc.dg/analyzer/expect-1.c
! fcf118c836d3e0314fa725f5f6a9a5cd  gcc/testsuite/gcc.dg/analyzer/explode-1.c
  10d31dc45c3f21fbd96aa46492473138  gcc/testsuite/gcc.dg/analyzer/explode-2.c
  0924e466b64c157716b9918defbc3848  gcc/testsuite/gcc.dg/analyzer/explode-2a.c
  8a65bc460ebfced6ab82065135e57d26  gcc/testsuite/gcc.dg/analyzer/factorial.c
  c67fd7150c48c2cbde13c569af42d724  gcc/testsuite/gcc.dg/analyzer/feasibility-1.c
  00d15989662428086fefe3003fd1d85d  gcc/testsuite/gcc.dg/analyzer/feasibility-2.c
  1ecf4969c7b67421cceea02a7cfb7e0b  gcc/testsuite/gcc.dg/analyzer/feasibility-3.c
  b4ae76ed4a7c1a97bdbfd34c861b3338  gcc/testsuite/gcc.dg/analyzer/fgets-1.c
  0d6e01df673fded93678160ef3f843e9  gcc/testsuite/gcc.dg/analyzer/fibonacci.c
  2e05a981243c5494d6a9ea0b4514acc7  gcc/testsuite/gcc.dg/analyzer/fields.c
! b96aa952b9e9493745143747fbb4ca86  gcc/testsuite/gcc.dg/analyzer/file-1.c
  b29483f2758f47b95759473be5a64ba6  gcc/testsuite/gcc.dg/analyzer/file-2.c
  4d1005ccd0e2c6b96780497a29dc930f  gcc/testsuite/gcc.dg/analyzer/file-3.c
  60112ba55cc527ed2f374a5469b8bb21  gcc/testsuite/gcc.dg/analyzer/file-paths-1.c
  d915eedeb695b8593d6c7101dd8eeea5  gcc/testsuite/gcc.dg/analyzer/file-pr58237.c
  20d65cfa29c33455231b4036f2cf5708  gcc/testsuite/gcc.dg/analyzer/first-field-1.c
  205728a949c258519a4725538e6f2dd9  gcc/testsuite/gcc.dg/analyzer/first-field-2.c
  b56e6fc2ffb4fe410aeca9754005de9b  gcc/testsuite/gcc.dg/analyzer/fread-1.c
  4f24d2c6cf1a7ea65c4721e2a5b02c15  gcc/testsuite/gcc.dg/analyzer/fread-2.c
  e02f4f3f73df89227f8853a4206f0cad  gcc/testsuite/gcc.dg/analyzer/function-ptr-1.c
  65a4362aae50033f7c6b13c2daab548c  gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c
  6a55e6868fb6e1f3a4844412e8ad9f93  gcc/testsuite/gcc.dg/analyzer/function-ptr-3.c
  b2879bf88ff165ec7fcf358bfa0851f9  gcc/testsuite/gcc.dg/analyzer/function-ptr-4.c
! 1e42bf8a97fe52a292508ac165061fc7  gcc/testsuite/gcc.dg/analyzer/getchar-1.c
  cd629fc9b87516508b6418bde7e6512b  gcc/testsuite/gcc.dg/analyzer/gzio-2.c
  fda86ff25535c945555b6fc4c394a45e  gcc/testsuite/gcc.dg/analyzer/gzio-3.c
  826438f921dddc8033a63027fd6280aa  gcc/testsuite/gcc.dg/analyzer/gzio-3a.c
  95ad79e96dde48a914a9588f08788b19  gcc/testsuite/gcc.dg/analyzer/gzio.c
! a2174c9e3aefc65ef7370280cd66e38b  gcc/testsuite/gcc.dg/analyzer/infinite-recursion.c
  28a2c270aa1b745766369de60cee0f7c  gcc/testsuite/gcc.dg/analyzer/init.c
  7a48058aaf7419920b16429c67d04982  gcc/testsuite/gcc.dg/analyzer/invalid-shift-1.c
  094b1340efd825baefc9ac68d2865171  gcc/testsuite/gcc.dg/analyzer/leak-2.c
  862c513838cce7710b72958de0e089e7  gcc/testsuite/gcc.dg/analyzer/leak-3.c
  70c3b4e23da4264b5547a8adf9a264d6  gcc/testsuite/gcc.dg/analyzer/leak-4.c
  9b630a4b5d2445a17f5fcc0d2d08b96b  gcc/testsuite/gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c
  ccff25473fa2d7eb6b31302f8757af2e  gcc/testsuite/gcc.dg/analyzer/loop-0-up-to-n-by-1.c
  e7d3ac631bcaca30613f84fbe2cfae3f  gcc/testsuite/gcc.dg/analyzer/loop-2.c
--- 37856,37998 ----
  101f9021149cc564f0ca9fb761c01032  gcc/testsuite/gcc.dg/analyzer/edges-1.c
  5349560ff6dd31c0631eedd6b00658ee  gcc/testsuite/gcc.dg/analyzer/edges-2.c
  cd58bff2b56161f01ab9307737cbe5dd  gcc/testsuite/gcc.dg/analyzer/equivalence.c
+ 2d83da4ee4b322aa6495120a44ab4a2c  gcc/testsuite/gcc.dg/analyzer/errno-1.c
+ aaadcec13e3fe9bdd8840af607307fe7  gcc/testsuite/gcc.dg/analyzer/errno-___errno.c
+ 06951c6e7e03b1f718140cca8d7389d8  gcc/testsuite/gcc.dg/analyzer/errno-__error.c
+ 8d211fca1cbcf4fb7b1bb6346f3a3f6a  gcc/testsuite/gcc.dg/analyzer/errno-global-var.c
+ 0ab30799aa76ae04b4edb6495e72e92f  gcc/testsuite/gcc.dg/analyzer/errno-pr107777.c
  7a41edb146e30ff88645faff41cd6660  gcc/testsuite/gcc.dg/analyzer/error-1.c
  959242e188dc1726d5f00627897522c2  gcc/testsuite/gcc.dg/analyzer/error-2.c
  c5de56a4561f064e270ee358ffb7aa30  gcc/testsuite/gcc.dg/analyzer/error-3.c
+ 661fbac2bdbb13d6a1616a88998047c7  gcc/testsuite/gcc.dg/analyzer/error-uninit.c
  f336bce0a86a089cef98497358794093  gcc/testsuite/gcc.dg/analyzer/escaping-1.c
+ 1dce10fd6c05e960d4d3f11d39a03071  gcc/testsuite/gcc.dg/analyzer/exec-1.c
  a5f30efaea21fb670c8c02fcd0a225ba  gcc/testsuite/gcc.dg/analyzer/expect-1.c
! fb6027da0380d31038644ba5db02fce8  gcc/testsuite/gcc.dg/analyzer/explode-1.c
  10d31dc45c3f21fbd96aa46492473138  gcc/testsuite/gcc.dg/analyzer/explode-2.c
  0924e466b64c157716b9918defbc3848  gcc/testsuite/gcc.dg/analyzer/explode-2a.c
+ e42c67081cc782a2fbf78edf4ad1187f  gcc/testsuite/gcc.dg/analyzer/explode-3.c
  8a65bc460ebfced6ab82065135e57d26  gcc/testsuite/gcc.dg/analyzer/factorial.c
+ 3efc345b51b7277578af413178d26130  gcc/testsuite/gcc.dg/analyzer/fd-1.c
+ 08209591e6a5f867ee4a2f405e8b4be9  gcc/testsuite/gcc.dg/analyzer/fd-2.c
+ 40298520e3317080f9c41cabe4a50544  gcc/testsuite/gcc.dg/analyzer/fd-3.c
+ 4e4fb196ecd79794043f10d1d6911df8  gcc/testsuite/gcc.dg/analyzer/fd-4.c
+ 4d40240a2d335c039e0a43fff1b9fca6  gcc/testsuite/gcc.dg/analyzer/fd-accept.c
+ 2530d550c40182f2e415566420f1903a  gcc/testsuite/gcc.dg/analyzer/fd-access-mode-enum.c
+ 489459d5b157c16e319b14cb96bdac2f  gcc/testsuite/gcc.dg/analyzer/fd-access-mode-macros.c
+ 45a9154e54535a9d12b52c509497b185  gcc/testsuite/gcc.dg/analyzer/fd-access-mode-target-headers.c
+ 8d59ae372666083a7d189b26af00ecfc  gcc/testsuite/gcc.dg/analyzer/fd-bind-pr107783.c
+ 50636a97d77b8f9987955e13d490394f  gcc/testsuite/gcc.dg/analyzer/fd-bind-pr107928.c
+ a38fee08e9852e95b40354aaa70aba2b  gcc/testsuite/gcc.dg/analyzer/fd-bind.c
+ 2b4e89d6bd86a237296bded464000d70  gcc/testsuite/gcc.dg/analyzer/fd-connect-pr107928.c
+ 33b580122bdc1cca2f8b3460eee00433  gcc/testsuite/gcc.dg/analyzer/fd-connect.c
+ afc1d96bb615a5163498b5b8dfafbba6  gcc/testsuite/gcc.dg/analyzer/fd-datagram-socket.c
+ 827dcc603f79b7aa5453b7b4dfba4665  gcc/testsuite/gcc.dg/analyzer/fd-dup-1.c
+ fc7d8278a1b704c1c5490f68539b33d8  gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-connection-server.c
+ 4f297a71867f6ffe69dc67b324298dba  gcc/testsuite/gcc.dg/analyzer/fd-glibc-byte-stream-socket.c
+ edd1e708973b1e8a22d87da59f67e0da  gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-client.c
+ 47a0eeeb0272f76bb1a6de21db1609cc  gcc/testsuite/gcc.dg/analyzer/fd-glibc-datagram-socket.c
+ 983aa8eb3b385c301b0f38e058072ad2  gcc/testsuite/gcc.dg/analyzer/fd-glibc-make_named_socket.h
+ dfec44c9516f74c36a586e4fcca16e64  gcc/testsuite/gcc.dg/analyzer/fd-leak-pr108252.c
+ 9ffdd6c3aa55a71e867e92ec9be2375e  gcc/testsuite/gcc.dg/analyzer/fd-listen.c
+ a177d44130d41a3609c707d32d17d30c  gcc/testsuite/gcc.dg/analyzer/fd-manpage-getaddrinfo-client.c
+ fb03bc2fc5f65662c4e60d4569235699  gcc/testsuite/gcc.dg/analyzer/fd-mappage-getaddrinfo-server.c
+ dcb15e6b7d5c3424f3cb08babe7fb63a  gcc/testsuite/gcc.dg/analyzer/fd-meaning.c
+ 8fb341e8fe6909ce190ae756b2789975  gcc/testsuite/gcc.dg/analyzer/fd-pr108633.c
+ 420c686f24999848149401ab7c228a3b  gcc/testsuite/gcc.dg/analyzer/fd-socket-meaning.c
+ 6e101b940d779c01b7726d6d953023a8  gcc/testsuite/gcc.dg/analyzer/fd-socket-misuse.c
+ 47df9afaa31d051e91cf3beb6f8debbf  gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-active-open.c
+ 4ba499b0f78a6e19bd5861f949bd704e  gcc/testsuite/gcc.dg/analyzer/fd-stream-socket-passive-open.c
+ f6f21dc0ea093fa9c7e15e97920aac71  gcc/testsuite/gcc.dg/analyzer/fd-stream-socket.c
+ 004856011d247a34929f6f0a0cf8ab8d  gcc/testsuite/gcc.dg/analyzer/fd-symbolic-socket.c
+ c1e500f74e478290b2358e6a5d237d83  gcc/testsuite/gcc.dg/analyzer/fd-uninit-1.c
+ 0fec3e8bbcc3a193f4e6d57c5f2d57b5  gcc/testsuite/gcc.dg/analyzer/fdump-analyzer-1.c
  c67fd7150c48c2cbde13c569af42d724  gcc/testsuite/gcc.dg/analyzer/feasibility-1.c
  00d15989662428086fefe3003fd1d85d  gcc/testsuite/gcc.dg/analyzer/feasibility-2.c
  1ecf4969c7b67421cceea02a7cfb7e0b  gcc/testsuite/gcc.dg/analyzer/feasibility-3.c
+ 088ec06833570acdc6c6bb265466f91e  gcc/testsuite/gcc.dg/analyzer/feasibility-4.c
+ 1761d210a631bde55c4d4207134fd68c  gcc/testsuite/gcc.dg/analyzer/feasibility-pr107582-1.c
+ e3febbf18f1dc3e8c6dbca7b8d1ca64a  gcc/testsuite/gcc.dg/analyzer/feasibility-pr107582-2.c
+ 166367f89bddb5b54a71a7870a8f1fe1  gcc/testsuite/gcc.dg/analyzer/feasibility-pr107948.c
+ 1461e7b4d80bbbc9eaca84c3c53e4ced  gcc/testsuite/gcc.dg/analyzer/ferror-1.c
  b4ae76ed4a7c1a97bdbfd34c861b3338  gcc/testsuite/gcc.dg/analyzer/fgets-1.c
  0d6e01df673fded93678160ef3f843e9  gcc/testsuite/gcc.dg/analyzer/fibonacci.c
  2e05a981243c5494d6a9ea0b4514acc7  gcc/testsuite/gcc.dg/analyzer/fields.c
! 18174663dff64a509abb3f5ada449bdc  gcc/testsuite/gcc.dg/analyzer/file-1.c
  b29483f2758f47b95759473be5a64ba6  gcc/testsuite/gcc.dg/analyzer/file-2.c
  4d1005ccd0e2c6b96780497a29dc930f  gcc/testsuite/gcc.dg/analyzer/file-3.c
+ 74551d8bd5683960b9795e840ed3cad4  gcc/testsuite/gcc.dg/analyzer/file-CWE-1341-example.c
+ 201348c53a15d6dd5ba2dba86efc8eab  gcc/testsuite/gcc.dg/analyzer/file-meaning-1.c
  60112ba55cc527ed2f374a5469b8bb21  gcc/testsuite/gcc.dg/analyzer/file-paths-1.c
  d915eedeb695b8593d6c7101dd8eeea5  gcc/testsuite/gcc.dg/analyzer/file-pr58237.c
+ 89737b51a5c30a4053ff561fafc96a87  gcc/testsuite/gcc.dg/analyzer/file-uninit-1.c
+ 1d9483d273baff7deb3faf2f5b69ed4d  gcc/testsuite/gcc.dg/analyzer/fileno-1.c
  20d65cfa29c33455231b4036f2cf5708  gcc/testsuite/gcc.dg/analyzer/first-field-1.c
  205728a949c258519a4725538e6f2dd9  gcc/testsuite/gcc.dg/analyzer/first-field-2.c
+ 31ef78da92834b0880d52901e84d93c2  gcc/testsuite/gcc.dg/analyzer/flex-with-call-summaries.c
+ ad3851df78a85807e604fac850d2e060  gcc/testsuite/gcc.dg/analyzer/flex-without-call-summaries.c
+ 09966841338021d87dc6470e7ce4ad46  gcc/testsuite/gcc.dg/analyzer/flexible-array-member-1.c
+ a6fdea16ec5681772d23041ed961946e  gcc/testsuite/gcc.dg/analyzer/fold-string-to-char.c
  b56e6fc2ffb4fe410aeca9754005de9b  gcc/testsuite/gcc.dg/analyzer/fread-1.c
  4f24d2c6cf1a7ea65c4721e2a5b02c15  gcc/testsuite/gcc.dg/analyzer/fread-2.c
+ f512dabde9dcd2f000bf124a071e88d4  gcc/testsuite/gcc.dg/analyzer/fread-pr108661.c
  e02f4f3f73df89227f8853a4206f0cad  gcc/testsuite/gcc.dg/analyzer/function-ptr-1.c
  65a4362aae50033f7c6b13c2daab548c  gcc/testsuite/gcc.dg/analyzer/function-ptr-2.c
  6a55e6868fb6e1f3a4844412e8ad9f93  gcc/testsuite/gcc.dg/analyzer/function-ptr-3.c
  b2879bf88ff165ec7fcf358bfa0851f9  gcc/testsuite/gcc.dg/analyzer/function-ptr-4.c
! dbed48e142a4b6c0e70daafe64e39f88  gcc/testsuite/gcc.dg/analyzer/function-ptr-5.c
! 27e7865f9c71851f26bc947168724ada  gcc/testsuite/gcc.dg/analyzer/getc-1.c
! 60731db68fab4e97a10b7f143df530c4  gcc/testsuite/gcc.dg/analyzer/getchar-1.c
  cd629fc9b87516508b6418bde7e6512b  gcc/testsuite/gcc.dg/analyzer/gzio-2.c
  fda86ff25535c945555b6fc4c394a45e  gcc/testsuite/gcc.dg/analyzer/gzio-3.c
  826438f921dddc8033a63027fd6280aa  gcc/testsuite/gcc.dg/analyzer/gzio-3a.c
  95ad79e96dde48a914a9588f08788b19  gcc/testsuite/gcc.dg/analyzer/gzio.c
! 9f2287cf880bd04809fe7bc81e052340  gcc/testsuite/gcc.dg/analyzer/imprecise-floating-point-1.c
! ff805313fa956a67f1dc98c3dac09efa  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-2.c
! 34901b2d3bb8a6242b45481f8329dfad  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-3.c
! 36d8f1e7bf8efe96a15ce80880e10e83  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-4-limited-buggy.c
! 6c02fdcda6da2e22db9f2590da1ed81e  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-4-limited.c
! 29e098dde04cb3f8dc4bc4d3e6ecea87  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-4-unlimited-buggy.c
! 57e4b763cf0302dace5e4608c7185d85  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-4-unlimited.c
! eecccbd82a0978c6fefd4883a004a5ce  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-5.c
! 5d46cc14809df1773684db513d227c0f  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-alloca.c
! fc9d74b72a130c35707ef77334668958  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-inlining.c
! 8f5a39dbe5e17797f497e06ffd95c6ee  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-multiline-1.c
! 7e34c832a1d6df141666ab3fe2c8fe8e  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-multiline-2.c
! 5b6951f6e4b964a2c50b04c6e18ab18d  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-pr108524-1.c
! 10655b22efe364785ba8c5027193226b  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-pr108524-2.c
! 58ca278b99ae12194d74cef226052e70  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-pr108524-qobject-json-parser.c
! a66185ed3bef2742621b423d3bec08ab  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-pr108935-1.c
! 7d75523d81879148276b42e991a4c362  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-pr108935-1a.c
! 66723f902622a5e196b22ca3d8fceff6  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-pr108935-2.c
! 43c57be318716a133d18499c08ddc7aa  gcc/testsuite/gcc.dg/analyzer/infinite-recursion-variadic.c
! d5e270f77ea78102f30f82e5d2f2191b  gcc/testsuite/gcc.dg/analyzer/infinite-recursion.c
  28a2c270aa1b745766369de60cee0f7c  gcc/testsuite/gcc.dg/analyzer/init.c
+ 07f8f2aeb9aad61c63d51260f4728892  gcc/testsuite/gcc.dg/analyzer/inlining-1-multiline.c
+ 111b13e5745e85042633f793367de15a  gcc/testsuite/gcc.dg/analyzer/inlining-1-no-undo.c
+ b48800f01c8d26ae909f436e5cd6e8c8  gcc/testsuite/gcc.dg/analyzer/inlining-1.c
+ 090c506331daa44b165328a2f0d7a460  gcc/testsuite/gcc.dg/analyzer/inlining-2-multiline.c
+ b5100b4538da260ea7ae11ba62fc65c6  gcc/testsuite/gcc.dg/analyzer/inlining-2.c
+ ec2b81ba5b0754ff690fecadef94bc8c  gcc/testsuite/gcc.dg/analyzer/inlining-3-multiline.c
+ 180c64cd140810828deb4afdee10ea12  gcc/testsuite/gcc.dg/analyzer/inlining-3.c
+ ad1ba5dec4298473e7f0cb2537fdb164  gcc/testsuite/gcc.dg/analyzer/inlining-4-multiline.c
+ 1b20002a31f507e0fe7a0a2eacd752cc  gcc/testsuite/gcc.dg/analyzer/inlining-4.c
+ 0a1f4cf1c6c7854be08ec9ba9df85995  gcc/testsuite/gcc.dg/analyzer/inlining-5-multiline.c
+ c5bed76dd10cd3ee7b133ddc3ade09c7  gcc/testsuite/gcc.dg/analyzer/inlining-5.c
+ 61800a5ec8423e077177782c7bc7cdf7  gcc/testsuite/gcc.dg/analyzer/inlining-6-multiline.c
+ f96a5e26ebe3f224244fcc898ace703b  gcc/testsuite/gcc.dg/analyzer/inlining-6.c
+ 098d5c87bdbb786f7c4618d5b8220f1b  gcc/testsuite/gcc.dg/analyzer/inlining-7-multiline.c
+ f17e0d8915231a8ec68df05de5383de1  gcc/testsuite/gcc.dg/analyzer/inlining-7.c
  7a48058aaf7419920b16429c67d04982  gcc/testsuite/gcc.dg/analyzer/invalid-shift-1.c
+ 78fec9cc691969cd1992e214fa400125  gcc/testsuite/gcc.dg/analyzer/isatty-1.c
  094b1340efd825baefc9ac68d2865171  gcc/testsuite/gcc.dg/analyzer/leak-2.c
  862c513838cce7710b72958de0e089e7  gcc/testsuite/gcc.dg/analyzer/leak-3.c
  70c3b4e23da4264b5547a8adf9a264d6  gcc/testsuite/gcc.dg/analyzer/leak-4.c
+ 48a3fef492382f63be7022d8f749b997  gcc/testsuite/gcc.dg/analyzer/leak-pr105906.c
+ b820f5c4dc5ad825d166dd29e4843185  gcc/testsuite/gcc.dg/analyzer/leak-pr108045-with-call-summaries.c
+ 0480feafe72120f76ae2287ebcd639a9  gcc/testsuite/gcc.dg/analyzer/leak-pr108045-without-call-summaries.c
+ 8a2e355017d9323ec8df64988c25429d  gcc/testsuite/gcc.dg/analyzer/leak-pr109059-1.c
+ df6ea921b915d23b58f64b1153a91ab6  gcc/testsuite/gcc.dg/analyzer/leak-pr109059-2.c
  9b630a4b5d2445a17f5fcc0d2d08b96b  gcc/testsuite/gcc.dg/analyzer/loop-0-up-to-n-by-1-with-iter-obj.c
  ccff25473fa2d7eb6b31302f8757af2e  gcc/testsuite/gcc.dg/analyzer/loop-0-up-to-n-by-1.c
  e7d3ac631bcaca30613f84fbe2cfae3f  gcc/testsuite/gcc.dg/analyzer/loop-2.c
*************** e7d3ac631bcaca30613f84fbe2cfae3f  gcc/te
*** 35598,35616 ****
  8ad1b0087276cc9cb69d159e668f8e0f  gcc/testsuite/gcc.dg/analyzer/loop-start-to-end-by-step.c
  a338db9e662a64be9acd7699f6b8f480  gcc/testsuite/gcc.dg/analyzer/loop-start-up-to-end-by-1.c
  bac89c08a695635d761a021615d9e74e  gcc/testsuite/gcc.dg/analyzer/loop.c
! ad0fd753458919d0e77f4a31fc95eda2  gcc/testsuite/gcc.dg/analyzer/malloc-1.c
  016c3c7250e597b255e646086af41c0d  gcc/testsuite/gcc.dg/analyzer/malloc-2.c
  9de3ac19ac5e83db9dc669b5ded16421  gcc/testsuite/gcc.dg/analyzer/malloc-3.c
  2b64001dfbd8f6e02b57086866f713a5  gcc/testsuite/gcc.dg/analyzer/malloc-4.c
  a0bcfa3badd49dd40ba6ca4b9c4af6e3  gcc/testsuite/gcc.dg/analyzer/malloc-5.c
! c606c5eea506dc27983a3a924100f88c  gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
  212fdabc9998e80319bb376300f15a4c  gcc/testsuite/gcc.dg/analyzer/malloc-dce.c
  a0baef29e471a23f4b1d85765e6c323a  gcc/testsuite/gcc.dg/analyzer/malloc-dedupe-1.c
  98d6716096afb847d597604ce1dd4ebc  gcc/testsuite/gcc.dg/analyzer/malloc-in-loop.c
  0eb3eab22850b1ee96240fa0f315c8f7  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-1.c
  d079e62118cc134df565e6e8305c0f02  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-10.c
  13f13f3283f3e240e014762cf1d8cf06  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c
! 3ff62c1047006323bbbda7abeda5a977  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-12.c
  865e5f8c81482626d2e9eae5344bcf6e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13.c
  040536c40f5543d2f3a0fded49c9f951  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13a.c
  c975c8677595ca5266f4944072467ac6  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-2.c
--- 38005,38027 ----
  8ad1b0087276cc9cb69d159e668f8e0f  gcc/testsuite/gcc.dg/analyzer/loop-start-to-end-by-step.c
  a338db9e662a64be9acd7699f6b8f480  gcc/testsuite/gcc.dg/analyzer/loop-start-up-to-end-by-1.c
  bac89c08a695635d761a021615d9e74e  gcc/testsuite/gcc.dg/analyzer/loop.c
! b9fe9044ec2e84e338963eaa83d77760  gcc/testsuite/gcc.dg/analyzer/malloc-1.c
  016c3c7250e597b255e646086af41c0d  gcc/testsuite/gcc.dg/analyzer/malloc-2.c
  9de3ac19ac5e83db9dc669b5ded16421  gcc/testsuite/gcc.dg/analyzer/malloc-3.c
  2b64001dfbd8f6e02b57086866f713a5  gcc/testsuite/gcc.dg/analyzer/malloc-4.c
  a0bcfa3badd49dd40ba6ca4b9c4af6e3  gcc/testsuite/gcc.dg/analyzer/malloc-5.c
! 089a218821bc78b4449f445d077fe986  gcc/testsuite/gcc.dg/analyzer/malloc-CWE-401-example.c
! 33eb20bdcc22880a94f04f3cf3ce75ac  gcc/testsuite/gcc.dg/analyzer/malloc-CWE-415-examples.c
! ad93a90a150e736e096f90487b8efc05  gcc/testsuite/gcc.dg/analyzer/malloc-CWE-416-examples.c
! 45b01883f51af8cc9019455aa59be87c  gcc/testsuite/gcc.dg/analyzer/malloc-CWE-590-examples.c
! c442a7086d2a1d0126ea24bfcce8048d  gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
  212fdabc9998e80319bb376300f15a4c  gcc/testsuite/gcc.dg/analyzer/malloc-dce.c
  a0baef29e471a23f4b1d85765e6c323a  gcc/testsuite/gcc.dg/analyzer/malloc-dedupe-1.c
  98d6716096afb847d597604ce1dd4ebc  gcc/testsuite/gcc.dg/analyzer/malloc-in-loop.c
  0eb3eab22850b1ee96240fa0f315c8f7  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-1.c
  d079e62118cc134df565e6e8305c0f02  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-10.c
  13f13f3283f3e240e014762cf1d8cf06  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-11.c
! 9ba47d1cadcdb905818d680ab630fc87  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-12.c
  865e5f8c81482626d2e9eae5344bcf6e  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13.c
  040536c40f5543d2f3a0fded49c9f951  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-13a.c
  c975c8677595ca5266f4944072467ac6  gcc/testsuite/gcc.dg/analyzer/malloc-ipa-2.c
*************** fe31474c1de3fcecf8fc2126e5d77be5  gcc/te
*** 35632,35637 ****
--- 38043,38049 ----
  0a26b1a6638ad50af7917b694d62f3ca  gcc/testsuite/gcc.dg/analyzer/malloc-many-paths-1.c
  c70af2073448635855d144cc02268df7  gcc/testsuite/gcc.dg/analyzer/malloc-many-paths-2.c
  3fa8d16b65385c1f68e354229e9e76d1  gcc/testsuite/gcc.dg/analyzer/malloc-many-paths-3.c
+ 651998f628e3054917e94d72e1539e23  gcc/testsuite/gcc.dg/analyzer/malloc-meaning-1.c
  5f1e6465e704334db9b85ba9f9bc5f24  gcc/testsuite/gcc.dg/analyzer/malloc-paths-1.c
  8d7ccfbc02f689c8b6b79362b9c9cf06  gcc/testsuite/gcc.dg/analyzer/malloc-paths-10.c
  412aa50e9719b304e4b0af9bf584748c  gcc/testsuite/gcc.dg/analyzer/malloc-paths-2.c
*************** c0512edf80944ffafce5cf9e1f06c2ee  gcc/te
*** 35642,35647 ****
--- 38054,38061 ----
  601cd4c7b73ebb6e97b3bda99e6bea6b  gcc/testsuite/gcc.dg/analyzer/malloc-paths-7.c
  16ddee2fac1ab9a0fbc3731f7cd52b2e  gcc/testsuite/gcc.dg/analyzer/malloc-paths-8.c
  6cc81ee18fb6d2aecab26207acd6c349  gcc/testsuite/gcc.dg/analyzer/malloc-paths-9.c
+ e73a0522f7f81259b897de6b7881df57  gcc/testsuite/gcc.dg/analyzer/malloc-reuse.c
+ 3c3322cd86074b063a5baf45f9e915d0  gcc/testsuite/gcc.dg/analyzer/malloc-sarif-1.c
  8261cb8449d54e0382dc64b74d46d2c0  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1a.c
  b5bb321785e7bea5388cb2b64e173213  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-1b.c
  d464c105278a3135eece0b536dfddef1  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-2.c
*************** d612c4dbe9f34c8b84f01f0c3b2c896f  gcc/te
*** 35649,35659 ****
  79dc7e451e8ed0274f282b8d09979e95  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-4.c
  6ccd146a06cc2ba54e9f0262c6f28597  gcc/testsuite/gcc.dg/analyzer/many-disabled-diagnostics.c
  a9a24860ed497a76f830a117a460b2ec  gcc/testsuite/gcc.dg/analyzer/many-unused-locals.c
! 145ed1a412b6387db33ed9536ecc69e8  gcc/testsuite/gcc.dg/analyzer/memcpy-1.c
  039e14e5522dc7ae2630c4abefa8173f  gcc/testsuite/gcc.dg/analyzer/memset-1.c
  669fd539af0a545567f25d8aa7b91bd0  gcc/testsuite/gcc.dg/analyzer/memset-2.c
! 2785076373883719abdd8e35f6e8606b  gcc/testsuite/gcc.dg/analyzer/memset-CVE-2017-18549-1.c
  aaddc4b9a407ce80be75f1c757af9df4  gcc/testsuite/gcc.dg/analyzer/operations.c
  7c6c9ed633de8bd71c9e5bf5ec95ceb7  gcc/testsuite/gcc.dg/analyzer/params-2.c
  7cc16c21f19526f1926009cff6d0e22f  gcc/testsuite/gcc.dg/analyzer/params.c
  4d166a6392bd44e453b465258f187cd0  gcc/testsuite/gcc.dg/analyzer/paths-1.c
--- 38063,38116 ----
  79dc7e451e8ed0274f282b8d09979e95  gcc/testsuite/gcc.dg/analyzer/malloc-vs-local-4.c
  6ccd146a06cc2ba54e9f0262c6f28597  gcc/testsuite/gcc.dg/analyzer/many-disabled-diagnostics.c
  a9a24860ed497a76f830a117a460b2ec  gcc/testsuite/gcc.dg/analyzer/many-unused-locals.c
! ac65547952c25ba221985e37016c6fb2  gcc/testsuite/gcc.dg/analyzer/memcpy-1.c
! 728602d0d805828021fa0a9e3e2650ce  gcc/testsuite/gcc.dg/analyzer/memcpy-2.c
! 514217ce51b9ac79af7a07592d1e878b  gcc/testsuite/gcc.dg/analyzer/memcpy-pr107882.c
! 9c02a73028cac042acd872f0880e838c  gcc/testsuite/gcc.dg/analyzer/memmove-1.c
  039e14e5522dc7ae2630c4abefa8173f  gcc/testsuite/gcc.dg/analyzer/memset-1.c
  669fd539af0a545567f25d8aa7b91bd0  gcc/testsuite/gcc.dg/analyzer/memset-2.c
! 3a40f2fbe201a2ed74b291bb546e345d  gcc/testsuite/gcc.dg/analyzer/memset-CVE-2017-18549-1.c
! b867e2dbe9886d21b384558c692736d3  gcc/testsuite/gcc.dg/analyzer/named-constants-Wunused-macros.c
! 249e92fa7bb08b66f184515348adf910  gcc/testsuite/gcc.dg/analyzer/named-constants-via-command-line.c
! 0605ec7df17825d30fe4f6374f77bbe9  gcc/testsuite/gcc.dg/analyzer/named-constants-via-enum-and-macro.c
! 2452e15cec3740876b29d1965e9493ef  gcc/testsuite/gcc.dg/analyzer/named-constants-via-enum.c
! 0c0049b78b7d635c54221da0f1405b15  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-2.c
! e052f140a24235b21cd8ca14cc572309  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-3.c
! c0d536eb878756e8abcb266bdb84c0ca  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-4.c
! f2ef41567ee028e2c9a0b2dcc93610d5  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-empty.c
! 48af698d604d6cf95b9b6eef5ebccf8c  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-gc.c
! 8ca03489a7a16008cda28b311d2ad31d  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-traditional.c
! 61af2386834b57be29eb9039ab3e0c5d  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros-undef.c
! 213c59cf6fda65fb41294c9ac6b79be6  gcc/testsuite/gcc.dg/analyzer/named-constants-via-macros.c
! e4cc36b1c03592d61e37db6479bc397d  gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-1.c
! c52e42e884d37da5eaf5f2b75dbac21b  gcc/testsuite/gcc.dg/analyzer/null-deref-pr102671-2.c
! fdb76ae36384216e00d153014c92f251  gcc/testsuite/gcc.dg/analyzer/null-deref-pr105755.c
! cbe7a2dcfa8b9b5941874902c24dabac  gcc/testsuite/gcc.dg/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early-O2.c
! 54c0075434c52fc8202c1a96a981138b  gcc/testsuite/gcc.dg/analyzer/null-deref-pr108251-smp_fetch_ssl_fc_has_early.c
! 42e7e6b578b91216eba64c89c03896bb  gcc/testsuite/gcc.dg/analyzer/null-deref-pr108400-SoftEtherVPN-WebUi.c
! 4bffaf4df31b8a44852f1708ee5ecdb9  gcc/testsuite/gcc.dg/analyzer/null-deref-pr108806-qemu.c
! c9face5eb282b0e7d42da3a3503a64f5  gcc/testsuite/gcc.dg/analyzer/null-deref-pr108830.c
! 0d02ed8e1b5ac37f6e2d0eec884933c1  gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-1.c
! 43dcd48b6c73f9d8d64b95d20f4581b4  gcc/testsuite/gcc.dg/analyzer/omp-parallel-for-get-min.c
  aaddc4b9a407ce80be75f1c757af9df4  gcc/testsuite/gcc.dg/analyzer/operations.c
+ c76a072d603737e8a9ce384e4cf89273  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-1.c
+ 654cf2216de99aef352cbc6284927eed  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-2.c
+ 010805505962cb3ca5a783127e374794  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-3.c
+ 3b27232f5cf255ca8253bb7b23b7a3c0  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-4.c
+ 443c526a8f09d572552f878c3f1207b6  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c
+ 51ae5882c3c42881ceafdbf1a92e54c3  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-container_of.c
+ 26b89903a9c16c999eb9f1a1442ba192  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-coreutils.c
+ 60857d347c63aa7ed3234fed1dc5ec66  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-curl.c
+ 4cf772bd692044b2e359f8ec7ce1b3ee  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-multiline-1.c
+ 6dfa34d80808ee7889c5d826e5e205b8  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-multiline-2.c
+ 525e0bc1850a84e8e7242a4f6db33b2f  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-read-char-arr.c
+ 98843c5223809f4a124d12a592435fac  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-read-int-arr.c
+ 8bc1b2dd538d5c16c37b8b5bf724a4cc  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-read-struct-arr.c
+ 8e72b3602a293395949616541ab8ff04  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-realloc-grow.c
+ 0c8b585fca3b911ecbe64cb6700e0802  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-write-char-arr.c
+ 1e983ca7a4b3b1b4b201607210aedfaf  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-write-int-arr.c
+ e4c3643265721b24d21f9763581d569d  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-write-struct-arr.c
+ f860abacfff9f0f438125c3b6af20e40  gcc/testsuite/gcc.dg/analyzer/out-of-bounds-zero.c
  7c6c9ed633de8bd71c9e5bf5ec95ceb7  gcc/testsuite/gcc.dg/analyzer/params-2.c
  7cc16c21f19526f1926009cff6d0e22f  gcc/testsuite/gcc.dg/analyzer/params.c
  4d166a6392bd44e453b465258f187cd0  gcc/testsuite/gcc.dg/analyzer/paths-1.c
*************** b818695de20677346ff28a3913c7b163  gcc/te
*** 35669,35704 ****
  de88cc940a155308bb436a246da730b9  gcc/testsuite/gcc.dg/analyzer/pattern-test-2.c
  9cb68fed0c8d449d4662e8c12866a2f9  gcc/testsuite/gcc.dg/analyzer/phi-1.c
  08c8643d827be311b98875441004c1ab  gcc/testsuite/gcc.dg/analyzer/phi-2.c
  8704d0b888bfd7cbf5c7f8dfbb9f5610  gcc/testsuite/gcc.dg/analyzer/pointer-merging.c
  3f583dbde80b3efe12b65cefa6758f9f  gcc/testsuite/gcc.dg/analyzer/pr100011.c
  2a829c368b1b687fbe16de043fb0b895  gcc/testsuite/gcc.dg/analyzer/pr100546.c
  e0e00f8ff65a3533430a5abc47af4315  gcc/testsuite/gcc.dg/analyzer/pr100615.c
  62c29c74bff34938d246ad62ccf4f5ac  gcc/testsuite/gcc.dg/analyzer/pr101143.c
  30e835c53c7baf5d03ea63776d856b43  gcc/testsuite/gcc.dg/analyzer/pr101503.c
! 0504e7622f87684dd7dcb0b7516b76bb  gcc/testsuite/gcc.dg/analyzer/pr101547.c
  67f1876dabdfe679ca73c0ea199f4d5a  gcc/testsuite/gcc.dg/analyzer/pr101570.c
  d7fdd42f2b44dc1e43a9f30292acc743  gcc/testsuite/gcc.dg/analyzer/pr101721.c
  8e16196108463716a2cfc4f344af5d64  gcc/testsuite/gcc.dg/analyzer/pr101837.c
! 55f06fbd95d33996a3b032d659a86aac  gcc/testsuite/gcc.dg/analyzer/pr101875.c
! 1b447e5ae01d885666f0f8ccb0aaaf74  gcc/testsuite/gcc.dg/analyzer/pr101962.c
  60b2a5e408979c204812ee09c755be9d  gcc/testsuite/gcc.dg/analyzer/pr101983-main.c
  9af3fc4e1a3e5925599c434e4d8ec749  gcc/testsuite/gcc.dg/analyzer/pr101983-not-main.c
  e84f664468060451e3cb304c75cea3d6  gcc/testsuite/gcc.dg/analyzer/pr102692-2.c
  7eea22d259719a44f082976446139ac0  gcc/testsuite/gcc.dg/analyzer/pr102695.c
! f9a946d0a888655a1f29a16de6bf45ab  gcc/testsuite/gcc.dg/analyzer/pr103217-2.c
! ad50af17d1dfc4b00965c6c82364bf7d  gcc/testsuite/gcc.dg/analyzer/pr103217-3.c
  89328508480588c2f80fa5160078a764  gcc/testsuite/gcc.dg/analyzer/pr103217-4.c
  682c85a8b33655e8e6969f2b149c32c6  gcc/testsuite/gcc.dg/analyzer/pr103217-5.c
! e4770f9374ec5c6abb03702adbb1453c  gcc/testsuite/gcc.dg/analyzer/pr103217.c
  dcc4c6bd6d83e4936d09cdeae09d3666  gcc/testsuite/gcc.dg/analyzer/pr103526.c
  cfd3f0c9f53b040ab3ea2a88856d3a72  gcc/testsuite/gcc.dg/analyzer/pr103892.c
  7a58cd43a2a659fa092cdd52995bac99  gcc/testsuite/gcc.dg/analyzer/pr104029.c
  4b6bcda7fd7ddd782af1e52f3db973fe  gcc/testsuite/gcc.dg/analyzer/pr104062.c
  b37b97c145c4e03b92cc527ed777ccc3  gcc/testsuite/gcc.dg/analyzer/pr104089.c
! d54f32a5ce7fc98376feb14d2a9894d2  gcc/testsuite/gcc.dg/analyzer/pr104224.c
  2476fa0b2e91faf3777b4bf56eaf8ea9  gcc/testsuite/gcc.dg/analyzer/pr104308.c
! bf6a963459611cfe7f4b6014800f6b70  gcc/testsuite/gcc.dg/analyzer/pr104369-1.c
! 2377091a5eb83285a6c4c67beda4dfc6  gcc/testsuite/gcc.dg/analyzer/pr104369-2.c
  193bbc40b5d1663602f78ebcf3ec7d09  gcc/testsuite/gcc.dg/analyzer/pr104417.c
  740583ce32547a8d87a3cd63946b90f2  gcc/testsuite/gcc.dg/analyzer/pr104434-const.c
  bd08c3118e654f97ec8726f35f798dfe  gcc/testsuite/gcc.dg/analyzer/pr104434-nonconst.c
--- 38126,38168 ----
  de88cc940a155308bb436a246da730b9  gcc/testsuite/gcc.dg/analyzer/pattern-test-2.c
  9cb68fed0c8d449d4662e8c12866a2f9  gcc/testsuite/gcc.dg/analyzer/phi-1.c
  08c8643d827be311b98875441004c1ab  gcc/testsuite/gcc.dg/analyzer/phi-2.c
+ af8b06f18b2ffd74d5cfdc6557523f17  gcc/testsuite/gcc.dg/analyzer/pipe-1.c
+ 506942e75a5af88120c41f50101e3552  gcc/testsuite/gcc.dg/analyzer/pipe-glibc.c
+ 6edeb1e95fe0400f413338830db36fe5  gcc/testsuite/gcc.dg/analyzer/pipe-manpages.c
+ 504cd57ec0a0e6b768eaedede8d25c6c  gcc/testsuite/gcc.dg/analyzer/pipe-pr107486.c
+ 9da3ee312a53989520c6f6fd2a0a2e2a  gcc/testsuite/gcc.dg/analyzer/pipe-void-return.c
+ 2a2f495dec7f278925ae67dee036fcc1  gcc/testsuite/gcc.dg/analyzer/pipe2-1.c
  8704d0b888bfd7cbf5c7f8dfbb9f5610  gcc/testsuite/gcc.dg/analyzer/pointer-merging.c
  3f583dbde80b3efe12b65cefa6758f9f  gcc/testsuite/gcc.dg/analyzer/pr100011.c
  2a829c368b1b687fbe16de043fb0b895  gcc/testsuite/gcc.dg/analyzer/pr100546.c
  e0e00f8ff65a3533430a5abc47af4315  gcc/testsuite/gcc.dg/analyzer/pr100615.c
  62c29c74bff34938d246ad62ccf4f5ac  gcc/testsuite/gcc.dg/analyzer/pr101143.c
  30e835c53c7baf5d03ea63776d856b43  gcc/testsuite/gcc.dg/analyzer/pr101503.c
! 71129fa06e1b067223c303245054200a  gcc/testsuite/gcc.dg/analyzer/pr101547.c
  67f1876dabdfe679ca73c0ea199f4d5a  gcc/testsuite/gcc.dg/analyzer/pr101570.c
  d7fdd42f2b44dc1e43a9f30292acc743  gcc/testsuite/gcc.dg/analyzer/pr101721.c
  8e16196108463716a2cfc4f344af5d64  gcc/testsuite/gcc.dg/analyzer/pr101837.c
! 8e41b138580137917cf3c8483f35abbb  gcc/testsuite/gcc.dg/analyzer/pr101875.c
! 5e17a4a12322ce1cfa388df9e200f06e  gcc/testsuite/gcc.dg/analyzer/pr101962.c
  60b2a5e408979c204812ee09c755be9d  gcc/testsuite/gcc.dg/analyzer/pr101983-main.c
  9af3fc4e1a3e5925599c434e4d8ec749  gcc/testsuite/gcc.dg/analyzer/pr101983-not-main.c
  e84f664468060451e3cb304c75cea3d6  gcc/testsuite/gcc.dg/analyzer/pr102692-2.c
  7eea22d259719a44f082976446139ac0  gcc/testsuite/gcc.dg/analyzer/pr102695.c
! c28450e9d92ca1e038dff38991e685d4  gcc/testsuite/gcc.dg/analyzer/pr103217-2.c
! 8bfbe18263e57b8fb27c6add9314239b  gcc/testsuite/gcc.dg/analyzer/pr103217-3.c
  89328508480588c2f80fa5160078a764  gcc/testsuite/gcc.dg/analyzer/pr103217-4.c
  682c85a8b33655e8e6969f2b149c32c6  gcc/testsuite/gcc.dg/analyzer/pr103217-5.c
! 4724fd5727eb9650b27a497a2660bbaa  gcc/testsuite/gcc.dg/analyzer/pr103217.c
  dcc4c6bd6d83e4936d09cdeae09d3666  gcc/testsuite/gcc.dg/analyzer/pr103526.c
  cfd3f0c9f53b040ab3ea2a88856d3a72  gcc/testsuite/gcc.dg/analyzer/pr103892.c
  7a58cd43a2a659fa092cdd52995bac99  gcc/testsuite/gcc.dg/analyzer/pr104029.c
  4b6bcda7fd7ddd782af1e52f3db973fe  gcc/testsuite/gcc.dg/analyzer/pr104062.c
  b37b97c145c4e03b92cc527ed777ccc3  gcc/testsuite/gcc.dg/analyzer/pr104089.c
! 15fc590ce739292d51fb1d190f57dc81  gcc/testsuite/gcc.dg/analyzer/pr104224-split.c
! df5dee0e0e92ecf4b97f80a2aff5b9de  gcc/testsuite/gcc.dg/analyzer/pr104224.c
  2476fa0b2e91faf3777b4bf56eaf8ea9  gcc/testsuite/gcc.dg/analyzer/pr104308.c
! 9a3e569f28c1d0f11b573f8af0d0bd9f  gcc/testsuite/gcc.dg/analyzer/pr104369-1.c
! ab0c16bc57aaaccd7ce9c716b2063797  gcc/testsuite/gcc.dg/analyzer/pr104369-2.c
  193bbc40b5d1663602f78ebcf3ec7d09  gcc/testsuite/gcc.dg/analyzer/pr104417.c
  740583ce32547a8d87a3cd63946b90f2  gcc/testsuite/gcc.dg/analyzer/pr104434-const.c
  bd08c3118e654f97ec8726f35f798dfe  gcc/testsuite/gcc.dg/analyzer/pr104434-nonconst.c
*************** bd08c3118e654f97ec8726f35f798dfe  gcc/te
*** 35711,35718 ****
  ff3edd5d7ef8daa0dbc4754f1e087dea  gcc/testsuite/gcc.dg/analyzer/pr105087-1.c
  31e66e50ca6137c903edb9a5f1c33bb8  gcc/testsuite/gcc.dg/analyzer/pr105087-2.c
  7db1771ee016e8eff4a7d43565e82ac4  gcc/testsuite/gcc.dg/analyzer/pr105252.c
! 7ec8beca5852bf5760ba785d3b75d3e5  gcc/testsuite/gcc.dg/analyzer/pr105365.c
! 9c9974fbe8ddd03c7a3dd80e2127e20d  gcc/testsuite/gcc.dg/analyzer/pr105366.c
  4d9dda4c090b351e888380f256fdf703  gcc/testsuite/gcc.dg/analyzer/pr61861.c
  242590eedae3d5fb56d59f94b5ce9dbf  gcc/testsuite/gcc.dg/analyzer/pr93032-mztools-signed-char.c
  3b715088546567d4c2cc30cc26417f11  gcc/testsuite/gcc.dg/analyzer/pr93032-mztools-simplified.c
--- 38175,38188 ----
  ff3edd5d7ef8daa0dbc4754f1e087dea  gcc/testsuite/gcc.dg/analyzer/pr105087-1.c
  31e66e50ca6137c903edb9a5f1c33bb8  gcc/testsuite/gcc.dg/analyzer/pr105087-2.c
  7db1771ee016e8eff4a7d43565e82ac4  gcc/testsuite/gcc.dg/analyzer/pr105252.c
! 51c44ec6bdff5d8fc63586489dc05809  gcc/testsuite/gcc.dg/analyzer/pr105365.c
! c5aaf610718cba5c59ae6937f43eb7db  gcc/testsuite/gcc.dg/analyzer/pr105366.c
! 2ae82b77b6e92bafec5d986c9eae1ea5  gcc/testsuite/gcc.dg/analyzer/pr105783.c
! 148ff0f73f935f255a7bb3cd60ddbf95  gcc/testsuite/gcc.dg/analyzer/pr106181.c
! f731f4f8612f8ee22eb1ea13cf0aec0f  gcc/testsuite/gcc.dg/analyzer/pr106394.c
! 8af52372a76611b936c16a76eb1d0104  gcc/testsuite/gcc.dg/analyzer/pr106539.c
! cdc8616a7ffe3b90347da98ea49fbe0c  gcc/testsuite/gcc.dg/analyzer/pr106845.c
! 1cceccf471f278322fcfe86b0544b088  gcc/testsuite/gcc.dg/analyzer/pr107345.c
  4d9dda4c090b351e888380f256fdf703  gcc/testsuite/gcc.dg/analyzer/pr61861.c
  242590eedae3d5fb56d59f94b5ce9dbf  gcc/testsuite/gcc.dg/analyzer/pr93032-mztools-signed-char.c
  3b715088546567d4c2cc30cc26417f11  gcc/testsuite/gcc.dg/analyzer/pr93032-mztools-simplified.c
*************** fd0f492f05905f9735a1c3fb5aba65e2  gcc/te
*** 35749,35755 ****
  6cd931319824cc8853e7a562f4f1b30a  gcc/testsuite/gcc.dg/analyzer/pr94732.c
  0026c538f0e20f37842630fe25b7d4c0  gcc/testsuite/gcc.dg/analyzer/pr94754.c
  0556ddfd9dd826211ba6a53ea757ed52  gcc/testsuite/gcc.dg/analyzer/pr94839.c
! d11c1fff0713538d5e1cb409bf0ccb85  gcc/testsuite/gcc.dg/analyzer/pr94851-1.c
  eae76672134a123479373b9f9bbac641  gcc/testsuite/gcc.dg/analyzer/pr94851-2.c
  9ea2ed915597b6c25fabf8d6beb5fffd  gcc/testsuite/gcc.dg/analyzer/pr94851-3.c
  e25cdbeef846ec06d9e2bc17cf57bb2b  gcc/testsuite/gcc.dg/analyzer/pr94851-4.c
--- 38219,38225 ----
  6cd931319824cc8853e7a562f4f1b30a  gcc/testsuite/gcc.dg/analyzer/pr94732.c
  0026c538f0e20f37842630fe25b7d4c0  gcc/testsuite/gcc.dg/analyzer/pr94754.c
  0556ddfd9dd826211ba6a53ea757ed52  gcc/testsuite/gcc.dg/analyzer/pr94839.c
! ef42f03d3bb8caac2a24c9aea94f1103  gcc/testsuite/gcc.dg/analyzer/pr94851-1.c
  eae76672134a123479373b9f9bbac641  gcc/testsuite/gcc.dg/analyzer/pr94851-2.c
  9ea2ed915597b6c25fabf8d6beb5fffd  gcc/testsuite/gcc.dg/analyzer/pr94851-3.c
  e25cdbeef846ec06d9e2bc17cf57bb2b  gcc/testsuite/gcc.dg/analyzer/pr94851-4.c
*************** da360e3b0e9156b732e2cd7f740dacb8  gcc/te
*** 35762,35768 ****
  cad22848bbe62237ae68e9fbe69f44e1  gcc/testsuite/gcc.dg/analyzer/pr95240.c
  d0a6505c532b4244902d3dd3501af977  gcc/testsuite/gcc.dg/analyzer/pr96598.c
  a18aec5c928fb5cf0238f90bc5890720  gcc/testsuite/gcc.dg/analyzer/pr96611.c
! 905860989acbfee07070993a010cda3b  gcc/testsuite/gcc.dg/analyzer/pr96639.c
  29816e82bef6bf88156d55346d54b72f  gcc/testsuite/gcc.dg/analyzer/pr96642.c
  1cc9fc986e0c43dbfa3116f2b887d305  gcc/testsuite/gcc.dg/analyzer/pr96644.c
  8122e564ee9470c65abe46b95a4e01e0  gcc/testsuite/gcc.dg/analyzer/pr96646.c
--- 38232,38238 ----
  cad22848bbe62237ae68e9fbe69f44e1  gcc/testsuite/gcc.dg/analyzer/pr95240.c
  d0a6505c532b4244902d3dd3501af977  gcc/testsuite/gcc.dg/analyzer/pr96598.c
  a18aec5c928fb5cf0238f90bc5890720  gcc/testsuite/gcc.dg/analyzer/pr96611.c
! 8a24df64133f07cf853e0d0f2d909c52  gcc/testsuite/gcc.dg/analyzer/pr96639.c
  29816e82bef6bf88156d55346d54b72f  gcc/testsuite/gcc.dg/analyzer/pr96642.c
  1cc9fc986e0c43dbfa3116f2b887d305  gcc/testsuite/gcc.dg/analyzer/pr96644.c
  8122e564ee9470c65abe46b95a4e01e0  gcc/testsuite/gcc.dg/analyzer/pr96646.c
*************** d777926cfd1375880c4f587b8ba11656  gcc/te
*** 35777,35789 ****
  93d3de68df9d3d71a9a39d6fc15caaee  gcc/testsuite/gcc.dg/analyzer/pr96699.c
  59b287a3143a88ac8698f48e67bca083  gcc/testsuite/gcc.dg/analyzer/pr96705.c
  4ca9c431f41a72254ed6c43b62aa8ddb  gcc/testsuite/gcc.dg/analyzer/pr96713.c
! 24a97b42d46668731e6aa353b0a87964  gcc/testsuite/gcc.dg/analyzer/pr96764.c
  054ab1c927a55fe5f67ab96348c0bfac  gcc/testsuite/gcc.dg/analyzer/pr96777.c
  3675cea43058febb213ff4846d03855f  gcc/testsuite/gcc.dg/analyzer/pr96792.c
  e604e08fb12bb423df63eacb82d3dafa  gcc/testsuite/gcc.dg/analyzer/pr96841.c
  ec51c705859096428ddf0f549b1d2378  gcc/testsuite/gcc.dg/analyzer/pr96860-1.c
  b67ccef1b701357aa6aefedbaa975f0e  gcc/testsuite/gcc.dg/analyzer/pr96860-2.c
! 5839d172a96605828b373470e9bcf285  gcc/testsuite/gcc.dg/analyzer/pr97029.c
  5bd94fca89134ed6b5d3236ba6cc6a31  gcc/testsuite/gcc.dg/analyzer/pr97072.c
  d01f45d8713ae323b82e7597f5c3ee13  gcc/testsuite/gcc.dg/analyzer/pr97074.c
  e2da6e0e14d8c8ac966c0b44386c520d  gcc/testsuite/gcc.dg/analyzer/pr97130.c
--- 38247,38259 ----
  93d3de68df9d3d71a9a39d6fc15caaee  gcc/testsuite/gcc.dg/analyzer/pr96699.c
  59b287a3143a88ac8698f48e67bca083  gcc/testsuite/gcc.dg/analyzer/pr96705.c
  4ca9c431f41a72254ed6c43b62aa8ddb  gcc/testsuite/gcc.dg/analyzer/pr96713.c
! 5c78c63d9f9e9ac1898eb1f4ffc56f65  gcc/testsuite/gcc.dg/analyzer/pr96764.c
  054ab1c927a55fe5f67ab96348c0bfac  gcc/testsuite/gcc.dg/analyzer/pr96777.c
  3675cea43058febb213ff4846d03855f  gcc/testsuite/gcc.dg/analyzer/pr96792.c
  e604e08fb12bb423df63eacb82d3dafa  gcc/testsuite/gcc.dg/analyzer/pr96841.c
  ec51c705859096428ddf0f549b1d2378  gcc/testsuite/gcc.dg/analyzer/pr96860-1.c
  b67ccef1b701357aa6aefedbaa975f0e  gcc/testsuite/gcc.dg/analyzer/pr96860-2.c
! e90b6e64cc366c53200b591dd4d37db6  gcc/testsuite/gcc.dg/analyzer/pr97029.c
  5bd94fca89134ed6b5d3236ba6cc6a31  gcc/testsuite/gcc.dg/analyzer/pr97072.c
  d01f45d8713ae323b82e7597f5c3ee13  gcc/testsuite/gcc.dg/analyzer/pr97074.c
  e2da6e0e14d8c8ac966c0b44386c520d  gcc/testsuite/gcc.dg/analyzer/pr97130.c
*************** eed361a309e3745bd4ef7b47ad455045  gcc/te
*** 35819,35831 ****
  999daf76457c2842454c315884e1181c  gcc/testsuite/gcc.dg/analyzer/pr99886.c
  e7ec58c8488f858c6b9c88105194899a  gcc/testsuite/gcc.dg/analyzer/pr99906.c
  8c73c87efb75a0bef0c4a982a728d2a5  gcc/testsuite/gcc.dg/analyzer/pragma-1.c
! de595cd3345798980e12641371d110bc  gcc/testsuite/gcc.dg/analyzer/pragma-2.c
  45cde6a70e0181df10af312e24e4aef4  gcc/testsuite/gcc.dg/analyzer/realloc-1.c
! f54f592f1a34809c785a390fe52842b1  gcc/testsuite/gcc.dg/analyzer/realloc-2.c
! c332adf16123cf980cd4a36081c74582  gcc/testsuite/gcc.dg/analyzer/realloc-3.c
  7f9a58dbe3d9e59cd0a8e15a8a931a40  gcc/testsuite/gcc.dg/analyzer/realloc-4.c
  80fa663011e0905b551ff26c0f4ab6aa  gcc/testsuite/gcc.dg/analyzer/refcounting-1.c
  eb90114c90a666d2fc417737f203862d  gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c
  65666ac62f3a2ea02329e2df4a3dc80b  gcc/testsuite/gcc.dg/analyzer/scope-1.c
  a3e079fdb0af6c6373526bb5b0925662  gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
  235b23e579165b5bc29ded1884282ac0  gcc/testsuite/gcc.dg/analyzer/setjmp-1.c
--- 38289,38305 ----
  999daf76457c2842454c315884e1181c  gcc/testsuite/gcc.dg/analyzer/pr99886.c
  e7ec58c8488f858c6b9c88105194899a  gcc/testsuite/gcc.dg/analyzer/pr99906.c
  8c73c87efb75a0bef0c4a982a728d2a5  gcc/testsuite/gcc.dg/analyzer/pragma-1.c
! c302e44e12d48022ecebf9039af2c645  gcc/testsuite/gcc.dg/analyzer/pragma-2.c
! cf6fbfbf8f4f1f945c5e7701d33fe4d4  gcc/testsuite/gcc.dg/analyzer/putenv-1.c
! ee803c3283890e05fed6552fbff9532c  gcc/testsuite/gcc.dg/analyzer/read-pr108661.c
  45cde6a70e0181df10af312e24e4aef4  gcc/testsuite/gcc.dg/analyzer/realloc-1.c
! ad012545a694fac57685010f86ea11d7  gcc/testsuite/gcc.dg/analyzer/realloc-2.c
! 9a0e6bd4cb78e44f3c6874d389ff719f  gcc/testsuite/gcc.dg/analyzer/realloc-3.c
  7f9a58dbe3d9e59cd0a8e15a8a931a40  gcc/testsuite/gcc.dg/analyzer/realloc-4.c
+ 992c92f21bf2037b2feff8f20d13814a  gcc/testsuite/gcc.dg/analyzer/realloc-5.c
  80fa663011e0905b551ff26c0f4ab6aa  gcc/testsuite/gcc.dg/analyzer/refcounting-1.c
  eb90114c90a666d2fc417737f203862d  gcc/testsuite/gcc.dg/analyzer/rhbz1878600.c
+ b7184568f0f50651f8fbd1cffcf54f18  gcc/testsuite/gcc.dg/analyzer/sarif-pr107366.c
  65666ac62f3a2ea02329e2df4a3dc80b  gcc/testsuite/gcc.dg/analyzer/scope-1.c
  a3e079fdb0af6c6373526bb5b0925662  gcc/testsuite/gcc.dg/analyzer/sensitive-1.c
  235b23e579165b5bc29ded1884282ac0  gcc/testsuite/gcc.dg/analyzer/setjmp-1.c
*************** c04d5fc1dea77f1e99f32e5ee47e000f  gcc/te
*** 35838,35843 ****
--- 38312,38318 ----
  51e087d07482f17215c8c8ac1ecf70b6  gcc/testsuite/gcc.dg/analyzer/setjmp-7a.c
  6fd7af9fe85c8fa521ef73ff135dd1af  gcc/testsuite/gcc.dg/analyzer/setjmp-8.c
  24ae6e59284354d0ed2f5e6a015abbb3  gcc/testsuite/gcc.dg/analyzer/setjmp-9.c
+ 8588e0ec348d5eef2edf586ce087d26b  gcc/testsuite/gcc.dg/analyzer/setjmp-pr109094.c
  93fc25e0ff71cfdd7223fa0bb7841517  gcc/testsuite/gcc.dg/analyzer/setjmp-pr93378.c
  0cb4c7a3599bf002d40a3b5ac76644aa  gcc/testsuite/gcc.dg/analyzer/signal-1.c
  a6cb10f4e6f6aa799d4c4c4aea433d9d  gcc/testsuite/gcc.dg/analyzer/signal-2.c
*************** c3d6877dc6b6aaf933b97e6748b315cc  gcc/te
*** 35851,35876 ****
  21f29e324e02af30bdd09e1978dc26f6  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
  8959874363aade3ab965125e11d3ded5  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
  041939ea34c3dd2bdd2d95257e5520ad  gcc/testsuite/gcc.dg/analyzer/single-field.c
  5c0567311c3a574a185c84afd8f87b2b  gcc/testsuite/gcc.dg/analyzer/sock-1.c
  d2d0bf430ae5db83cb2eeb1d4c3c4844  gcc/testsuite/gcc.dg/analyzer/sock-2.c
  0d17ba25adaab3e664c5b31f67e250f4  gcc/testsuite/gcc.dg/analyzer/stale-frame-1.c
! 95c6ab46cff9827d5ae5249cf7ac9527  gcc/testsuite/gcc.dg/analyzer/strchr-1.c
  5c824937a2b8b50d8d983130fccd4e81  gcc/testsuite/gcc.dg/analyzer/strcmp-1.c
  75d08bca79f4ac1789e8518f83e25230  gcc/testsuite/gcc.dg/analyzer/strcpy-1.c
  a20f56474f9327e4df5f75e759a08cfc  gcc/testsuite/gcc.dg/analyzer/strcpy-2.c
  fac607b6d04c358896bf7ed70dbf5347  gcc/testsuite/gcc.dg/analyzer/strdup-1.c
  e2a106505ad57f8fb83ebcbe30b56b27  gcc/testsuite/gcc.dg/analyzer/strndup-1.c
! 18ec83d6218fa8d4d146ea7ca579dbc4  gcc/testsuite/gcc.dg/analyzer/switch.c
! c6ff36bbb860a260cfcab0b25aaded49  gcc/testsuite/gcc.dg/analyzer/symbolic-1.c
  37efe101803b1ff8e261666644ca2b63  gcc/testsuite/gcc.dg/analyzer/symbolic-12.c
  2982a3481c63231cadba1329977640bd  gcc/testsuite/gcc.dg/analyzer/symbolic-2.c
  24d2d7b09cf8245a68dd00b36075e2cd  gcc/testsuite/gcc.dg/analyzer/symbolic-3.c
  784de898ae2196cc28e4405a23f94314  gcc/testsuite/gcc.dg/analyzer/symbolic-4.c
  8d8ebd7d911c51e682f6290fd9fca032  gcc/testsuite/gcc.dg/analyzer/symbolic-5.c
  2874e0dd4822b9e02d76d958c6b96223  gcc/testsuite/gcc.dg/analyzer/symbolic-6.c
! 7f112d0177047915aac74484299c5eea  gcc/testsuite/gcc.dg/analyzer/symbolic-7.c
  32609711c2e8949725877cdd45605fff  gcc/testsuite/gcc.dg/analyzer/symbolic-8.c
  c8bc6833de96ea946301995b38dec3db  gcc/testsuite/gcc.dg/analyzer/symbolic-9.c
  6863101d8819b9bf80a78e076396e2a5  gcc/testsuite/gcc.dg/analyzer/taint-CVE-2011-2210-1.c
  03c5adee66f7bad3a46810ed71abf0f0  gcc/testsuite/gcc.dg/analyzer/taint-CVE-2020-13143-1.c
  667a1190cd16badacef247391bbfe5ab  gcc/testsuite/gcc.dg/analyzer/taint-CVE-2020-13143-2.c
--- 38326,38379 ----
  21f29e324e02af30bdd09e1978dc26f6  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-5.c
  8959874363aade3ab965125e11d3ded5  gcc/testsuite/gcc.dg/analyzer/sigsetjmp-6.c
  041939ea34c3dd2bdd2d95257e5520ad  gcc/testsuite/gcc.dg/analyzer/single-field.c
+ 906aee8f9f577223582268d4a620b525  gcc/testsuite/gcc.dg/analyzer/snprintf-concat.c
  5c0567311c3a574a185c84afd8f87b2b  gcc/testsuite/gcc.dg/analyzer/sock-1.c
  d2d0bf430ae5db83cb2eeb1d4c3c4844  gcc/testsuite/gcc.dg/analyzer/sock-2.c
+ aa4efbe12292cd5c02e4fb04677581d0  gcc/testsuite/gcc.dg/analyzer/sprintf-1.c
+ a8037222659831e159d018624496f883  gcc/testsuite/gcc.dg/analyzer/sprintf-concat.c
  0d17ba25adaab3e664c5b31f67e250f4  gcc/testsuite/gcc.dg/analyzer/stale-frame-1.c
! 5c72aedcce8177798415d32e0a8bf938  gcc/testsuite/gcc.dg/analyzer/stdarg-1-ms_abi.c
! ae7b0d56b5a779d9be16f41d3efb6e03  gcc/testsuite/gcc.dg/analyzer/stdarg-1-sysv_abi.c
! 83eea51c7616c3097a43f056ac9be295  gcc/testsuite/gcc.dg/analyzer/stdarg-1.c
! 1b2f767530b25f94b104129c38517103  gcc/testsuite/gcc.dg/analyzer/stdarg-2.c
! 18157b6be7cfe6d468cac095357f27e1  gcc/testsuite/gcc.dg/analyzer/stdarg-3.c
! b76452713c6522655217df51194d0da5  gcc/testsuite/gcc.dg/analyzer/stdarg-fmtstring-1.c
! 16df75a00d60c15ce6e3c88145dc4a52  gcc/testsuite/gcc.dg/analyzer/stdarg-lto-1-a.c
! 704cf666386e2d20cb2947b0dfd0067a  gcc/testsuite/gcc.dg/analyzer/stdarg-lto-1-b.c
! 222b11a7c333c892c49c4acf13282013  gcc/testsuite/gcc.dg/analyzer/stdarg-lto-1.h
! 6cb68eb8b2eb45ac0544be60f2161e0e  gcc/testsuite/gcc.dg/analyzer/stdarg-sentinel-1.c
! 7c34f9a3c92ba106a890f78970e8464a  gcc/testsuite/gcc.dg/analyzer/stdarg-types-1.c
! 386715a511e63dee39f78737e48a7137  gcc/testsuite/gcc.dg/analyzer/stdarg-types-2.c
! 8ffbb46c48a69dd15b62a7f13fd55b94  gcc/testsuite/gcc.dg/analyzer/stdarg-types-3.c
! 7f61fc263e6d3625a5df0e88fb730927  gcc/testsuite/gcc.dg/analyzer/stdarg-types-4.c
! 92e5d533f324ce6a190e13bc04ada7af  gcc/testsuite/gcc.dg/analyzer/strchr-1.c
  5c824937a2b8b50d8d983130fccd4e81  gcc/testsuite/gcc.dg/analyzer/strcmp-1.c
  75d08bca79f4ac1789e8518f83e25230  gcc/testsuite/gcc.dg/analyzer/strcpy-1.c
  a20f56474f9327e4df5f75e759a08cfc  gcc/testsuite/gcc.dg/analyzer/strcpy-2.c
+ 6650306af11fcf47f40ac2281b73ef39  gcc/testsuite/gcc.dg/analyzer/strcpy-3.c
  fac607b6d04c358896bf7ed70dbf5347  gcc/testsuite/gcc.dg/analyzer/strdup-1.c
+ 7257568ac07240de491ed3c6e6dc1d1d  gcc/testsuite/gcc.dg/analyzer/strdup-pr108252.c
+ 24556524b137bbbef1ef7e2e121e58ae  gcc/testsuite/gcc.dg/analyzer/string-ops-concat-pair.c
+ 86f8cac14f31956b8f01b596551a3575  gcc/testsuite/gcc.dg/analyzer/string-ops-dup.c
  e2a106505ad57f8fb83ebcbe30b56b27  gcc/testsuite/gcc.dg/analyzer/strndup-1.c
! 776c83102066dafdfd4919f6bee676e7  gcc/testsuite/gcc.dg/analyzer/strndup-pr108252.c
! 23c8551e7b91e875fc63b06d0ee8ebee  gcc/testsuite/gcc.dg/analyzer/switch-enum-1.c
! 53337379f22adbe0c556208521ce5a99  gcc/testsuite/gcc.dg/analyzer/switch-enum-2.c
! 9ee61b76563b064c5d39e5e8e5f579b5  gcc/testsuite/gcc.dg/analyzer/switch-enum-pr105273-git-vreportf-2.c
! 42184dc462989060e46fba9ca5914bab  gcc/testsuite/gcc.dg/analyzer/switch-enum-taint-1.c
! b76cb1d27db82d1b655fd7715d3a8b9a  gcc/testsuite/gcc.dg/analyzer/switch-wrong-enum.c
! 94d50b44acb880793de0436efdd4b8a5  gcc/testsuite/gcc.dg/analyzer/switch.c
! d36f5325a7e5fa9b8ac849be4b6b9226  gcc/testsuite/gcc.dg/analyzer/symbolic-1.c
  37efe101803b1ff8e261666644ca2b63  gcc/testsuite/gcc.dg/analyzer/symbolic-12.c
  2982a3481c63231cadba1329977640bd  gcc/testsuite/gcc.dg/analyzer/symbolic-2.c
  24d2d7b09cf8245a68dd00b36075e2cd  gcc/testsuite/gcc.dg/analyzer/symbolic-3.c
  784de898ae2196cc28e4405a23f94314  gcc/testsuite/gcc.dg/analyzer/symbolic-4.c
  8d8ebd7d911c51e682f6290fd9fca032  gcc/testsuite/gcc.dg/analyzer/symbolic-5.c
  2874e0dd4822b9e02d76d958c6b96223  gcc/testsuite/gcc.dg/analyzer/symbolic-6.c
! c65116045ddccfc3f491c0a185fa75ea  gcc/testsuite/gcc.dg/analyzer/symbolic-7.c
  32609711c2e8949725877cdd45605fff  gcc/testsuite/gcc.dg/analyzer/symbolic-8.c
  c8bc6833de96ea946301995b38dec3db  gcc/testsuite/gcc.dg/analyzer/symbolic-9.c
+ c2fcb94a2603dbbeaffe0f588f927e6d  gcc/testsuite/gcc.dg/analyzer/symbolic-gt-1.c
  6863101d8819b9bf80a78e076396e2a5  gcc/testsuite/gcc.dg/analyzer/taint-CVE-2011-2210-1.c
  03c5adee66f7bad3a46810ed71abf0f0  gcc/testsuite/gcc.dg/analyzer/taint-CVE-2020-13143-1.c
  667a1190cd16badacef247391bbfe5ab  gcc/testsuite/gcc.dg/analyzer/taint-CVE-2020-13143-2.c
*************** fbd647fd29b471a7a55a1fb5f7c747ce  gcc/te
*** 35880,35885 ****
--- 38383,38392 ----
  d12199de8a73038d508adc4781b1c82c  gcc/testsuite/gcc.dg/analyzer/taint-alloc-3.c
  2e33673bc33d322da439d4e94dbf6afc  gcc/testsuite/gcc.dg/analyzer/taint-alloc-4.c
  acc7ba3d31b74a70e29d2deb549157d4  gcc/testsuite/gcc.dg/analyzer/taint-alloc-5.c
+ 6eb8e625510cb905f47833ae1dfdb737  gcc/testsuite/gcc.dg/analyzer/taint-assert-BUG_ON.c
+ 5d65953a5a601bc0bf1ae230341c3729  gcc/testsuite/gcc.dg/analyzer/taint-assert-macro-expansion.c
+ 284e2308a1ca75b599ea0891b23aaffa  gcc/testsuite/gcc.dg/analyzer/taint-assert-system-header.c
+ e9723db028427fdcfd3295084437bc13  gcc/testsuite/gcc.dg/analyzer/taint-assert.c
  1964aa2d0d8526b8bb106453ddd3d38c  gcc/testsuite/gcc.dg/analyzer/taint-divisor-1.c
  6a05eaa2e2c1e6b090ece3c5fd1f2dec  gcc/testsuite/gcc.dg/analyzer/taint-merger.c
  989ecfdd65e4e4576e9e4c32ea8989c9  gcc/testsuite/gcc.dg/analyzer/taint-ops.c
*************** ec8535ecc12c8b894c1d73f4597eb0be  gcc/te
*** 35890,35899 ****
  f4f9f41e54069c509bb5eae592ff6f87  gcc/testsuite/gcc.dg/analyzer/taint-size-access-attr-1.c
  0337ba6b22c31a1bf490617c707c752e  gcc/testsuite/gcc.dg/analyzer/taint-write-index-1.c
  477c05f1a507bff1df071f92846c8bbf  gcc/testsuite/gcc.dg/analyzer/taint-write-offset-1.c
! ca97da792ccb8600104f461e27f88997  gcc/testsuite/gcc.dg/analyzer/test-setjmp.h
  c4ea4a7111cad6e2223b4b4e23b1fd95  gcc/testsuite/gcc.dg/analyzer/test-uaccess.h
  1044a7408c5d7630501b02b9726d7b8b  gcc/testsuite/gcc.dg/analyzer/torture/20060625-1.c
! 1f4518ba50d4a0d01953d4dc3eea2d78  gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
  ab8b5fe6003e8ef4d2d1b26e247a6207  gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-array_index_mask_nospec.c
  9e0121dee23fed15f762b03898392c8a  gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-1.c
  144d9ec1f7cc82583ee9bca4b319b24c  gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-2.c
--- 38397,38408 ----
  f4f9f41e54069c509bb5eae592ff6f87  gcc/testsuite/gcc.dg/analyzer/taint-size-access-attr-1.c
  0337ba6b22c31a1bf490617c707c752e  gcc/testsuite/gcc.dg/analyzer/taint-write-index-1.c
  477c05f1a507bff1df071f92846c8bbf  gcc/testsuite/gcc.dg/analyzer/taint-write-offset-1.c
! 5c37a718a5792e1d46f1e4ed86dbc98a  gcc/testsuite/gcc.dg/analyzer/test-alloca.h
! 486419cac8d180eb2b80b19e520f0727  gcc/testsuite/gcc.dg/analyzer/test-assert.h
! bd601748927d5c75feb46ce9e4546e5e  gcc/testsuite/gcc.dg/analyzer/test-setjmp.h
  c4ea4a7111cad6e2223b4b4e23b1fd95  gcc/testsuite/gcc.dg/analyzer/test-uaccess.h
  1044a7408c5d7630501b02b9726d7b8b  gcc/testsuite/gcc.dg/analyzer/torture/20060625-1.c
! bc322d81cc1e2e921f9e0251e7154db1  gcc/testsuite/gcc.dg/analyzer/torture/analyzer-torture.exp
  ab8b5fe6003e8ef4d2d1b26e247a6207  gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-array_index_mask_nospec.c
  9e0121dee23fed15f762b03898392c8a  gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-1.c
  144d9ec1f7cc82583ee9bca4b319b24c  gcc/testsuite/gcc.dg/analyzer/torture/asm-x86-linux-cpuid-paravirt-2.c
*************** c4652807434ba6ccf4a2477242729b0a  gcc/te
*** 35907,35912 ****
--- 38416,38422 ----
  6600a700d9c3d03886029438e22848f6  gcc/testsuite/gcc.dg/analyzer/torture/conditionals-2.c
  4c43e729ef81f365c923eb98024417c6  gcc/testsuite/gcc.dg/analyzer/torture/conftest-1.c
  e85d83557fa692d7016e4622b85ca975  gcc/testsuite/gcc.dg/analyzer/torture/empty-struct-1.c
+ 8d709abc006dc3a0451121f9d45c50b3  gcc/testsuite/gcc.dg/analyzer/torture/fold-ptr-arith-pr105784.c
  2a944db68262f05280b26c9c165685c9  gcc/testsuite/gcc.dg/analyzer/torture/intptr_t.c
  fbd2e05a9e1bee211c5fd03bb02f863a  gcc/testsuite/gcc.dg/analyzer/torture/leak-pr102308-1.c
  8f5b6da995738b027bfc202c0abfeb53  gcc/testsuite/gcc.dg/analyzer/torture/leak-pr102308-2.c
*************** a939a37317deb3e080ba6ccd04ffd0a8  gcc/te
*** 35919,35925 ****
  f220df257b7652557308a81a18da555f  gcc/testsuite/gcc.dg/analyzer/torture/pr103685.c
  6df37e6fa084973f15534b808bc30ec4  gcc/testsuite/gcc.dg/analyzer/torture/pr104159.c
  64067e2ef0854aeb2bb753c24f92b356  gcc/testsuite/gcc.dg/analyzer/torture/pr104863.c
! d1bd725bfd85304b0430a4afe4ef5b4e  gcc/testsuite/gcc.dg/analyzer/torture/pr51628-30.c
  ca62b5bdb1c5cf71cd203f8d475fbcdc  gcc/testsuite/gcc.dg/analyzer/torture/pr59037.c
  46c9c74b1f40499fc80ecfe6126ffee2  gcc/testsuite/gcc.dg/analyzer/torture/pr93349.c
  304166ab1304d8ee2d62c62d4aecf6f0  gcc/testsuite/gcc.dg/analyzer/torture/pr93350.c
--- 38429,38435 ----
  f220df257b7652557308a81a18da555f  gcc/testsuite/gcc.dg/analyzer/torture/pr103685.c
  6df37e6fa084973f15534b808bc30ec4  gcc/testsuite/gcc.dg/analyzer/torture/pr104159.c
  64067e2ef0854aeb2bb753c24f92b356  gcc/testsuite/gcc.dg/analyzer/torture/pr104863.c
! db6ef5fe16ec292bdaca4046678b6f0c  gcc/testsuite/gcc.dg/analyzer/torture/pr51628-30.c
  ca62b5bdb1c5cf71cd203f8d475fbcdc  gcc/testsuite/gcc.dg/analyzer/torture/pr59037.c
  46c9c74b1f40499fc80ecfe6126ffee2  gcc/testsuite/gcc.dg/analyzer/torture/pr93349.c
  304166ab1304d8ee2d62c62d4aecf6f0  gcc/testsuite/gcc.dg/analyzer/torture/pr93350.c
*************** d1e99649276949170dff59fc147716f5  gcc/te
*** 35931,35949 ****
  9b48e1c683a3576d5b6aeaae504b75d0  gcc/testsuite/gcc.dg/analyzer/torture/pr93438-2.c
  d0497e5c33b1ac1c4a394d71fab98cc8  gcc/testsuite/gcc.dg/analyzer/torture/pr93438.c
  46baa544a269e09c2b193d9afa13e792  gcc/testsuite/gcc.dg/analyzer/torture/pr93450.c
! 64f32ad6797e83ec5635fbee8b4cb44c  gcc/testsuite/gcc.dg/analyzer/torture/pr93451.c
  edff473b255c0dea0c18477a32ff789c  gcc/testsuite/gcc.dg/analyzer/torture/pr93544.c
  7d61ba3b8fe5f40159915f93daf67457  gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
  32a48f1dc8e9a869a6baba13956aa4aa  gcc/testsuite/gcc.dg/analyzer/torture/pr93649.c
  049209558c45a95b2d1cfb0369c75138  gcc/testsuite/gcc.dg/analyzer/torture/pr93947.c
  9ad091485049c3474ef15f305054d030  gcc/testsuite/gcc.dg/analyzer/torture/switch-2.c
  5d72557f7c8e1ba44690dbc97eaf218d  gcc/testsuite/gcc.dg/analyzer/torture/switch-3.c
  395de16f08102a554c60112d9f79a4ac  gcc/testsuite/gcc.dg/analyzer/torture/switch-4.c
  d395542cab6151e7cd1ab370ab6a6181  gcc/testsuite/gcc.dg/analyzer/torture/switch-5.c
  1fae21b0c67b5b679beeecb28014ef75  gcc/testsuite/gcc.dg/analyzer/torture/symbolic-10.c
  b2b79a31b8a0345532a9a02fa98d668f  gcc/testsuite/gcc.dg/analyzer/torture/ubsan-1.c
  46dca54a13d3ed78a493a176a50d867e  gcc/testsuite/gcc.dg/analyzer/torture/uninit-bit-field-ref.c
  9a20e5bda2c613c6f8637d84ed00559c  gcc/testsuite/gcc.dg/analyzer/torture/uninit-pr106204.c
  d05a3955306cf8591941d3856debd78b  gcc/testsuite/gcc.dg/analyzer/torture/uninit-pr63311.c
  2ffa956e249f74277e2565912f3333b9  gcc/testsuite/gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-pattern.c
  4b038f337620ba8e85c0752005cb1818  gcc/testsuite/gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-uninitialized.c
--- 38441,38467 ----
  9b48e1c683a3576d5b6aeaae504b75d0  gcc/testsuite/gcc.dg/analyzer/torture/pr93438-2.c
  d0497e5c33b1ac1c4a394d71fab98cc8  gcc/testsuite/gcc.dg/analyzer/torture/pr93438.c
  46baa544a269e09c2b193d9afa13e792  gcc/testsuite/gcc.dg/analyzer/torture/pr93450.c
! 422d18402c0c3d4f0678d2f2eb3bdbb7  gcc/testsuite/gcc.dg/analyzer/torture/pr93451.c
  edff473b255c0dea0c18477a32ff789c  gcc/testsuite/gcc.dg/analyzer/torture/pr93544.c
  7d61ba3b8fe5f40159915f93daf67457  gcc/testsuite/gcc.dg/analyzer/torture/pr93647.c
  32a48f1dc8e9a869a6baba13956aa4aa  gcc/testsuite/gcc.dg/analyzer/torture/pr93649.c
  049209558c45a95b2d1cfb0369c75138  gcc/testsuite/gcc.dg/analyzer/torture/pr93947.c
+ 33cfe031089e835f2fd40516d6f10e97  gcc/testsuite/gcc.dg/analyzer/torture/stdarg-4.c
  9ad091485049c3474ef15f305054d030  gcc/testsuite/gcc.dg/analyzer/torture/switch-2.c
  5d72557f7c8e1ba44690dbc97eaf218d  gcc/testsuite/gcc.dg/analyzer/torture/switch-3.c
  395de16f08102a554c60112d9f79a4ac  gcc/testsuite/gcc.dg/analyzer/torture/switch-4.c
  d395542cab6151e7cd1ab370ab6a6181  gcc/testsuite/gcc.dg/analyzer/torture/switch-5.c
+ c6607cf8f0a83f57db4d5d7e2592d22d  gcc/testsuite/gcc.dg/analyzer/torture/switch-enum-pr105273-doom-p_floor.c
+ 2d17dc42388a5274764c1624ca93c80e  gcc/testsuite/gcc.dg/analyzer/torture/switch-enum-pr105273-doom-p_maputl.c
+ fee376fc039217ac8eadbd50e48b7797  gcc/testsuite/gcc.dg/analyzer/torture/switch-enum-pr105273-git-vreportf-1.c
  1fae21b0c67b5b679beeecb28014ef75  gcc/testsuite/gcc.dg/analyzer/torture/symbolic-10.c
+ 79f06951549ed81d5f02c0719dc46a23  gcc/testsuite/gcc.dg/analyzer/torture/taint-read-index-2.c
+ 8aacdcd1a66a942260b01b74b8e5f2ed  gcc/testsuite/gcc.dg/analyzer/torture/taint-read-index-3.c
  b2b79a31b8a0345532a9a02fa98d668f  gcc/testsuite/gcc.dg/analyzer/torture/ubsan-1.c
  46dca54a13d3ed78a493a176a50d867e  gcc/testsuite/gcc.dg/analyzer/torture/uninit-bit-field-ref.c
  9a20e5bda2c613c6f8637d84ed00559c  gcc/testsuite/gcc.dg/analyzer/torture/uninit-pr106204.c
+ 7b2a710ab3259fd2f60c4c147318dcea  gcc/testsuite/gcc.dg/analyzer/torture/uninit-pr108725.c
+ 7d379abec41c81e7d4c4e9451f770fdc  gcc/testsuite/gcc.dg/analyzer/torture/uninit-pr108733.c
  d05a3955306cf8591941d3856debd78b  gcc/testsuite/gcc.dg/analyzer/torture/uninit-pr63311.c
  2ffa956e249f74277e2565912f3333b9  gcc/testsuite/gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-pattern.c
  4b038f337620ba8e85c0752005cb1818  gcc/testsuite/gcc.dg/analyzer/torture/uninit-trivial-auto-var-init-uninitialized.c
*************** cc641b4453a1b743c66c43ea1c92e357  gcc/te
*** 35951,35976 ****
  99429c9d75d55782747b0a4bfd4a43ed  gcc/testsuite/gcc.dg/analyzer/uninit-1.c
  f3b04cae0253d04943b8e3a80f6609c3  gcc/testsuite/gcc.dg/analyzer/uninit-2.c
  5230c72c5072304c5579bb33f03c01e8  gcc/testsuite/gcc.dg/analyzer/uninit-3.c
! a99012d995d21d800d52fd2fde4902ac  gcc/testsuite/gcc.dg/analyzer/uninit-4.c
  12770fc4b4e596f10d34f77417d0a681  gcc/testsuite/gcc.dg/analyzer/uninit-6.c
  dc18b7f43ca34ba2bdcf1f2293ef3567  gcc/testsuite/gcc.dg/analyzer/uninit-6b.c
  541b34b1ad44afd6ca6d0a768db2946a  gcc/testsuite/gcc.dg/analyzer/uninit-CWE-457-examples.c
  4dfe342efb4c45e8a5094ee1ed577042  gcc/testsuite/gcc.dg/analyzer/uninit-alloca.c
  76c4fa43fef5c9ac975c951c831adb52  gcc/testsuite/gcc.dg/analyzer/uninit-pr104576.c
  29ba9a3ce1e65ae0d19ec63085e2d2ef  gcc/testsuite/gcc.dg/analyzer/uninit-pr106204.c
! feedfa199c7f0701af3669f463daaa51  gcc/testsuite/gcc.dg/analyzer/uninit-pr94713.c
  27bc9adec517c382409208e0208662ee  gcc/testsuite/gcc.dg/analyzer/uninit-pr94714.c
  c1e2ec7b982a6c1d3f3d88277f0a5412  gcc/testsuite/gcc.dg/analyzer/unknown-fns-2.c
  9346d04a573f82a1a5d2aa442f8df654  gcc/testsuite/gcc.dg/analyzer/unknown-fns-3.c
  81481da5bab0e2c1f85b1504bcfab189  gcc/testsuite/gcc.dg/analyzer/unknown-fns-4.c
  b06ba7887a4ece7ea7f11a9caf8e97b4  gcc/testsuite/gcc.dg/analyzer/unknown-fns.c
  087460b24b93f2716c1d11c02d30965e  gcc/testsuite/gcc.dg/analyzer/untracked-1.c
  33bcbf1ef7e77468ac1cb0eceb5bb7b9  gcc/testsuite/gcc.dg/analyzer/unused-local-1.c
  376fb4403916477fbc28accfb5d269f1  gcc/testsuite/gcc.dg/analyzer/use-after-free-2.c
  f11e97b1fc5ab33807c3c2d2087970e8  gcc/testsuite/gcc.dg/analyzer/use-after-free-3.c
  fb0acf2dd995d01b9b08a8f1188592f7  gcc/testsuite/gcc.dg/analyzer/use-after-free.c
  fce9eab7faf36d303a43f44482d7c6ee  gcc/testsuite/gcc.dg/analyzer/vasprintf-1.c
  102385c780a6490b1bab8dac593cbd07  gcc/testsuite/gcc.dg/analyzer/vla-1.c
  6fcd3abc5b1f2edc5e93bd98f3438e8c  gcc/testsuite/gcc.dg/analyzer/write-to-const-1.c
  d23060d9617d607793c74626be7479fe  gcc/testsuite/gcc.dg/analyzer/write-to-const-2.c
  77840cbcb97259e6e74b02896969ea84  gcc/testsuite/gcc.dg/analyzer/write-to-function-1.c
--- 38469,38501 ----
  99429c9d75d55782747b0a4bfd4a43ed  gcc/testsuite/gcc.dg/analyzer/uninit-1.c
  f3b04cae0253d04943b8e3a80f6609c3  gcc/testsuite/gcc.dg/analyzer/uninit-2.c
  5230c72c5072304c5579bb33f03c01e8  gcc/testsuite/gcc.dg/analyzer/uninit-3.c
! 547ceffa8e845c31d902790c7e0e3057  gcc/testsuite/gcc.dg/analyzer/uninit-4.c
  12770fc4b4e596f10d34f77417d0a681  gcc/testsuite/gcc.dg/analyzer/uninit-6.c
  dc18b7f43ca34ba2bdcf1f2293ef3567  gcc/testsuite/gcc.dg/analyzer/uninit-6b.c
+ 8c87a229f0dd190ba422467801b8229b  gcc/testsuite/gcc.dg/analyzer/uninit-7.c
+ 60b6279b02ede62acce22b59a1ab91f6  gcc/testsuite/gcc.dg/analyzer/uninit-8.c
  541b34b1ad44afd6ca6d0a768db2946a  gcc/testsuite/gcc.dg/analyzer/uninit-CWE-457-examples.c
  4dfe342efb4c45e8a5094ee1ed577042  gcc/testsuite/gcc.dg/analyzer/uninit-alloca.c
  76c4fa43fef5c9ac975c951c831adb52  gcc/testsuite/gcc.dg/analyzer/uninit-pr104576.c
  29ba9a3ce1e65ae0d19ec63085e2d2ef  gcc/testsuite/gcc.dg/analyzer/uninit-pr106204.c
! c98f8534d7e8d5036a05a97de1ee6199  gcc/testsuite/gcc.dg/analyzer/uninit-pr108704.c
! 49fbfbad3a21a66322f1c7f018f0f86f  gcc/testsuite/gcc.dg/analyzer/uninit-pr108806-qemu.c
! f7c765972c099dc7cfeb2ba7d764c78d  gcc/testsuite/gcc.dg/analyzer/uninit-pr108968-register.c
! 5f2be8cb83f9bed0a69e89484bb54b9f  gcc/testsuite/gcc.dg/analyzer/uninit-pr94713.c
  27bc9adec517c382409208e0208662ee  gcc/testsuite/gcc.dg/analyzer/uninit-pr94714.c
  c1e2ec7b982a6c1d3f3d88277f0a5412  gcc/testsuite/gcc.dg/analyzer/unknown-fns-2.c
  9346d04a573f82a1a5d2aa442f8df654  gcc/testsuite/gcc.dg/analyzer/unknown-fns-3.c
  81481da5bab0e2c1f85b1504bcfab189  gcc/testsuite/gcc.dg/analyzer/unknown-fns-4.c
  b06ba7887a4ece7ea7f11a9caf8e97b4  gcc/testsuite/gcc.dg/analyzer/unknown-fns.c
  087460b24b93f2716c1d11c02d30965e  gcc/testsuite/gcc.dg/analyzer/untracked-1.c
+ 707fb133dc622a539e4f6fb70c516502  gcc/testsuite/gcc.dg/analyzer/untracked-2.c
  33bcbf1ef7e77468ac1cb0eceb5bb7b9  gcc/testsuite/gcc.dg/analyzer/unused-local-1.c
  376fb4403916477fbc28accfb5d269f1  gcc/testsuite/gcc.dg/analyzer/use-after-free-2.c
  f11e97b1fc5ab33807c3c2d2087970e8  gcc/testsuite/gcc.dg/analyzer/use-after-free-3.c
  fb0acf2dd995d01b9b08a8f1188592f7  gcc/testsuite/gcc.dg/analyzer/use-after-free.c
  fce9eab7faf36d303a43f44482d7c6ee  gcc/testsuite/gcc.dg/analyzer/vasprintf-1.c
  102385c780a6490b1bab8dac593cbd07  gcc/testsuite/gcc.dg/analyzer/vla-1.c
+ a833a6ad5ab9dc4df4c5628344367514  gcc/testsuite/gcc.dg/analyzer/vsnprintf-1.c
  6fcd3abc5b1f2edc5e93bd98f3438e8c  gcc/testsuite/gcc.dg/analyzer/write-to-const-1.c
  d23060d9617d607793c74626be7479fe  gcc/testsuite/gcc.dg/analyzer/write-to-const-2.c
  77840cbcb97259e6e74b02896969ea84  gcc/testsuite/gcc.dg/analyzer/write-to-function-1.c
*************** d23060d9617d607793c74626be7479fe  gcc/te
*** 35979,35992 ****
  57fc075c8dbac107e616b70295049b4b  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-3.c
  a9738509a7a9603042261187b2455209  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-4-disabled.c
  6d83368141768ce083388691e6ba4efd  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-4.c
! 55eb51eae3cf20a8c0ed1c6ee5b3e407  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-5.c
  838b90b78b8ec4ed64b4613806941236  gcc/testsuite/gcc.dg/analyzer/zlib-1.c
  57902d5ce798d9c34760d0ab62f511a0  gcc/testsuite/gcc.dg/analyzer/zlib-2.c
! eb50163c3ad2c6ba6cf64c0de93675e0  gcc/testsuite/gcc.dg/analyzer/zlib-3.c
  df72c008ff04db0cf35cc53f456d09e9  gcc/testsuite/gcc.dg/analyzer/zlib-4.c
  8c05b90cc0edbdbdb87d92a6ed796f4c  gcc/testsuite/gcc.dg/analyzer/zlib-5.c
  f879ebf85b514c5e20431d11da89e21f  gcc/testsuite/gcc.dg/analyzer/zlib-6.c
! 77a7c1a8959f89a7063736068b232049  gcc/testsuite/gcc.dg/analyzer/zlib-6a.c
  9a236d4e4079496d64daed78574cc006  gcc/testsuite/gcc.dg/and-1.c
  8025bb7e0765732f0d28a027a9225fc6  gcc/testsuite/gcc.dg/anon-struct-1.c
  169a57abcdc48109c6aa5c69baf2c0da  gcc/testsuite/gcc.dg/anon-struct-10.c
--- 38504,38517 ----
  57fc075c8dbac107e616b70295049b4b  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-3.c
  a9738509a7a9603042261187b2455209  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-4-disabled.c
  6d83368141768ce083388691e6ba4efd  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-4.c
! a19614ade7ab01c2dee1273afcb56e3e  gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-5.c
  838b90b78b8ec4ed64b4613806941236  gcc/testsuite/gcc.dg/analyzer/zlib-1.c
  57902d5ce798d9c34760d0ab62f511a0  gcc/testsuite/gcc.dg/analyzer/zlib-2.c
! 4ad6acd95f4f163ad0a0d3d4599de6ee  gcc/testsuite/gcc.dg/analyzer/zlib-3.c
  df72c008ff04db0cf35cc53f456d09e9  gcc/testsuite/gcc.dg/analyzer/zlib-4.c
  8c05b90cc0edbdbdb87d92a6ed796f4c  gcc/testsuite/gcc.dg/analyzer/zlib-5.c
  f879ebf85b514c5e20431d11da89e21f  gcc/testsuite/gcc.dg/analyzer/zlib-6.c
! 82d2d50559f8da5c45335800f5d3273e  gcc/testsuite/gcc.dg/analyzer/zlib-6a.c
  9a236d4e4079496d64daed78574cc006  gcc/testsuite/gcc.dg/and-1.c
  8025bb7e0765732f0d28a027a9225fc6  gcc/testsuite/gcc.dg/anon-struct-1.c
  169a57abcdc48109c6aa5c69baf2c0da  gcc/testsuite/gcc.dg/anon-struct-10.c
*************** f5a2800fc5f21185bd9bdbd69e270c10  gcc/te
*** 36025,36037 ****
  93602cc4baf67e85d9c438d1a69dc55d  gcc/testsuite/gcc.dg/array-quals-1.c
  142997aec138f2b5487250ef14d6de54  gcc/testsuite/gcc.dg/array-quals-2.c
  889ad8871787262fb9533d339c717e6a  gcc/testsuite/gcc.dg/aru-2.c
! 70ba2d2e1867ce7e0b883bedefe43e05  gcc/testsuite/gcc.dg/asan/asan.exp
  b8a049317908d7e0078316ad82437346  gcc/testsuite/gcc.dg/asan/nested-1.c
  738544a74dbe22f6a41201227dfe9cd9  gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c
  62ddd0ab49b2d8a39773ae7568d8aa74  gcc/testsuite/gcc.dg/asan/pr104449.c
  3424b712fda248acb67afe3bbb5dbc46  gcc/testsuite/gcc.dg/asan/pr105214.c
  695fe49bfb0b0c5cd4e60ba1a0f27cf6  gcc/testsuite/gcc.dg/asan/pr105396.c
  fa23f58fca5e1980d38cd26b6e3e332a  gcc/testsuite/gcc.dg/asan/pr105714.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
  9a45b4bebab3901180dbe2a44efcd070  gcc/testsuite/gcc.dg/asan/pr64170.c
--- 38550,38570 ----
  93602cc4baf67e85d9c438d1a69dc55d  gcc/testsuite/gcc.dg/array-quals-1.c
  142997aec138f2b5487250ef14d6de54  gcc/testsuite/gcc.dg/array-quals-2.c
  889ad8871787262fb9533d339c717e6a  gcc/testsuite/gcc.dg/aru-2.c
! 2f332d28722881214df6ecbe2c5bbe27  gcc/testsuite/gcc.dg/asan/asan.exp
  b8a049317908d7e0078316ad82437346  gcc/testsuite/gcc.dg/asan/nested-1.c
  738544a74dbe22f6a41201227dfe9cd9  gcc/testsuite/gcc.dg/asan/nosanitize-and-inline.c
  62ddd0ab49b2d8a39773ae7568d8aa74  gcc/testsuite/gcc.dg/asan/pr104449.c
  3424b712fda248acb67afe3bbb5dbc46  gcc/testsuite/gcc.dg/asan/pr105214.c
  695fe49bfb0b0c5cd4e60ba1a0f27cf6  gcc/testsuite/gcc.dg/asan/pr105396.c
  fa23f58fca5e1980d38cd26b6e3e332a  gcc/testsuite/gcc.dg/asan/pr105714.c
+ 1a25dd9cb28d8417a3ce246587233c84  gcc/testsuite/gcc.dg/asan/pr106190.c
+ c3b533151735c602f99cd3d2cb415cf8  gcc/testsuite/gcc.dg/asan/pr107317.c
+ 46799a616187a964db7e60b6a0e7c39c  gcc/testsuite/gcc.dg/asan/pr108777-1.c
+ 56ad0828b453890b88128948102b2fbb  gcc/testsuite/gcc.dg/asan/pr108777-2.c
+ c87bfd1f1a20fb1eb27f8f10cab07c9b  gcc/testsuite/gcc.dg/asan/pr108777-3.c
+ b989844b8de5feb2e33ec096aa812ec6  gcc/testsuite/gcc.dg/asan/pr108777-4.c
+ e3f654469966ae1c0b0222fd88742a56  gcc/testsuite/gcc.dg/asan/pr108777-5.c
+ 50f6224f5546a4552995bf584c4638ff  gcc/testsuite/gcc.dg/asan/pr108777-6.c
  a5e988481cd66b8acf6c610b847cb713  gcc/testsuite/gcc.dg/asan/pr56417.c
  0c13e4008bb665f05b030eb42e43183f  gcc/testsuite/gcc.dg/asan/pr63845.c
  9a45b4bebab3901180dbe2a44efcd070  gcc/testsuite/gcc.dg/asan/pr64170.c
*************** c6879980a054642fecf33371357e8e0e  gcc/te
*** 36060,36066 ****
  39c8a5f3240912f763b37da76e663389  gcc/testsuite/gcc.dg/asan/pr95033.c
  7ce9fbfd8ab6da25366344e542f90eb2  gcc/testsuite/gcc.dg/asan/pr95051.c
  3454dc6f285abc03efc10b39853cc81b  gcc/testsuite/gcc.dg/asan/pr97294.c
! c6f60f32a95e2d22e279f0a72eae0bca  gcc/testsuite/gcc.dg/asan/pr99673.c
  da89dc3f01ef08b35253f1daef462bec  gcc/testsuite/gcc.dg/asan/sancov-1.c
  7f4f842288c94385c74120c61927a140  gcc/testsuite/gcc.dg/asan/use-after-scope-1.c
  83d04d7ae277af2b6b6c14d844bec429  gcc/testsuite/gcc.dg/asan/use-after-scope-10.c
--- 38593,38599 ----
  39c8a5f3240912f763b37da76e663389  gcc/testsuite/gcc.dg/asan/pr95033.c
  7ce9fbfd8ab6da25366344e542f90eb2  gcc/testsuite/gcc.dg/asan/pr95051.c
  3454dc6f285abc03efc10b39853cc81b  gcc/testsuite/gcc.dg/asan/pr97294.c
! d1b24d9fe1b1b0c7406b2fe9b4219c65  gcc/testsuite/gcc.dg/asan/pr99673.c
  da89dc3f01ef08b35253f1daef462bec  gcc/testsuite/gcc.dg/asan/sancov-1.c
  7f4f842288c94385c74120c61927a140  gcc/testsuite/gcc.dg/asan/use-after-scope-1.c
  83d04d7ae277af2b6b6c14d844bec429  gcc/testsuite/gcc.dg/asan/use-after-scope-10.c
*************** b6d936bcef333630cc9629b477556dad  gcc/te
*** 36145,36163 ****
  cfbaa184996beeec40d054222582f88d  gcc/testsuite/gcc.dg/atomic-store-4.c
  46ad754bc98b69bc0f3db1488d026dc2  gcc/testsuite/gcc.dg/atomic-store-5.c
  ce7e52f61e6fb003d8ae0bf9772503eb  gcc/testsuite/gcc.dg/atomic-store-6.c
! 9ce1401217683732858d8399f25a7556  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  fc7bfd846491d840116f75940e9fa4d5  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
  26c96c849ea8b781c5176b22d3ae0f3f  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-3.c
! 5eb307935a17eefbd29848f81bc97f15  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c
! 3c5d4d4c6cf5bcc01671dbaab29f7927  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c
  c104d4bbbf393aecc426659f83432644  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-6.c
  05addf91f06d7c4032d0a8225739b02c  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-7.c
  c130cbfd55eeb7a9e065d9b93d8876cb  gcc/testsuite/gcc.dg/atomic/pr65345-4.c
  81f6a9440e5c693903c6f41e0cf1d7f4  gcc/testsuite/gcc.dg/atomic/pr71675.c
! 1da4fb2f8213200b5bf27cf23efe8f22  gcc/testsuite/gcc.dg/atomic/pr80640-2.c
! 6d96266a856579e0bf4bbde2d34b6658  gcc/testsuite/gcc.dg/atomic/pr80640.c
! f3f29d3bd6a4b0245ae9e1a1d4241705  gcc/testsuite/gcc.dg/atomic/pr81316.c
  60f7be9d76d175a4f8caf1410ff40fb1  gcc/testsuite/gcc.dg/atomic/stdatomic-compare-exchange-1.c
  6bf917621324530748010eadfe9a2514  gcc/testsuite/gcc.dg/atomic/stdatomic-compare-exchange-2.c
  c6a53ca1a6f31a5209313db2e897d09c  gcc/testsuite/gcc.dg/atomic/stdatomic-compare-exchange-3.c
--- 38678,38699 ----
  cfbaa184996beeec40d054222582f88d  gcc/testsuite/gcc.dg/atomic-store-4.c
  46ad754bc98b69bc0f3db1488d026dc2  gcc/testsuite/gcc.dg/atomic-store-5.c
  ce7e52f61e6fb003d8ae0bf9772503eb  gcc/testsuite/gcc.dg/atomic-store-6.c
! d9d35c69a32e52d212c6e45b3ff104c3  gcc/testsuite/gcc.dg/atomic/atomic.exp
  c341a56eb40ffc48dba93161f0413185  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-1.c
  fc7bfd846491d840116f75940e9fa4d5  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-2.c
  26c96c849ea8b781c5176b22d3ae0f3f  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-3.c
! ea909df0e4688338991fa69e9b90ba96  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-4.c
! bbe14dec7e21cda18e741e4354d2c17e  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-5.c
  c104d4bbbf393aecc426659f83432644  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-6.c
  05addf91f06d7c4032d0a8225739b02c  gcc/testsuite/gcc.dg/atomic/c11-atomic-exec-7.c
+ 4715a3e94c485bd11ec14432475a09ff  gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-lockfree-char8_t.c
+ 694fc247c4ef1168f1f8af47cf22e0b9  gcc/testsuite/gcc.dg/atomic/c2x-stdatomic-var-init-1.c
+ b3bdb9867d68270b6e0ff4c7d6e896ff  gcc/testsuite/gcc.dg/atomic/gnu2x-stdatomic-lockfree-char8_t.c
  c130cbfd55eeb7a9e065d9b93d8876cb  gcc/testsuite/gcc.dg/atomic/pr65345-4.c
  81f6a9440e5c693903c6f41e0cf1d7f4  gcc/testsuite/gcc.dg/atomic/pr71675.c
! 7f735c85c899d82ef58271a29282b6ea  gcc/testsuite/gcc.dg/atomic/pr80640-2.c
! c907f9793c458fd060bd9d17d9727a13  gcc/testsuite/gcc.dg/atomic/pr80640.c
! c66d1a6bfa9b756760b57e09442ed026  gcc/testsuite/gcc.dg/atomic/pr81316.c
  60f7be9d76d175a4f8caf1410ff40fb1  gcc/testsuite/gcc.dg/atomic/stdatomic-compare-exchange-1.c
  6bf917621324530748010eadfe9a2514  gcc/testsuite/gcc.dg/atomic/stdatomic-compare-exchange-2.c
  c6a53ca1a6f31a5209313db2e897d09c  gcc/testsuite/gcc.dg/atomic/stdatomic-compare-exchange-3.c
*************** e2a79e8b69a6b8bbbeab0ba442c5de78  gcc/te
*** 36206,36219 ****
  675327adce99f8c97f34c5251a8c4280  gcc/testsuite/gcc.dg/attr-alias-5.c
  ef49e9f0f717d3a4d1c827df010599a5  gcc/testsuite/gcc.dg/attr-aligned-2.c
  9a4118e77ef09128c8a4e3bf859f9a05  gcc/testsuite/gcc.dg/attr-aligned-3.c
! 218ecba16d2d3bab118b45a8fd07376c  gcc/testsuite/gcc.dg/attr-aligned.c
  a9ff03a6ff85f7c46fced4797280e236  gcc/testsuite/gcc.dg/attr-alloc_align-1.c
  daf15f1ec989bc8e1d4831a0d1c70e3e  gcc/testsuite/gcc.dg/attr-alloc_align-2.c
  a40448e5fa79d5f463c4408a645a3bb7  gcc/testsuite/gcc.dg/attr-alloc_align-3.c
  20673f6fc38505564ee86bd12ff52bee  gcc/testsuite/gcc.dg/attr-alloc_align-4.c
  97a9f10f1ebd5c89262aa838eb08f235  gcc/testsuite/gcc.dg/attr-alloc_align-5.c
  a2b6348e7f085fa83db64bd978c4e56c  gcc/testsuite/gcc.dg/attr-alloc_size-10.c
! 305748d5293287364731d3d5ddbad056  gcc/testsuite/gcc.dg/attr-alloc_size-11.c
  95ee9b201db957fb93ce07864f13b9b4  gcc/testsuite/gcc.dg/attr-alloc_size-12.c
  be16f6b71bd68991024f0ec321092a06  gcc/testsuite/gcc.dg/attr-alloc_size-13.c
  6e7b391534abc17673b1ce896f7c3a66  gcc/testsuite/gcc.dg/attr-alloc_size-2.c
--- 38742,38755 ----
  675327adce99f8c97f34c5251a8c4280  gcc/testsuite/gcc.dg/attr-alias-5.c
  ef49e9f0f717d3a4d1c827df010599a5  gcc/testsuite/gcc.dg/attr-aligned-2.c
  9a4118e77ef09128c8a4e3bf859f9a05  gcc/testsuite/gcc.dg/attr-aligned-3.c
! b95b3dc0c0387a0c252fe7adc9296482  gcc/testsuite/gcc.dg/attr-aligned.c
  a9ff03a6ff85f7c46fced4797280e236  gcc/testsuite/gcc.dg/attr-alloc_align-1.c
  daf15f1ec989bc8e1d4831a0d1c70e3e  gcc/testsuite/gcc.dg/attr-alloc_align-2.c
  a40448e5fa79d5f463c4408a645a3bb7  gcc/testsuite/gcc.dg/attr-alloc_align-3.c
  20673f6fc38505564ee86bd12ff52bee  gcc/testsuite/gcc.dg/attr-alloc_align-4.c
  97a9f10f1ebd5c89262aa838eb08f235  gcc/testsuite/gcc.dg/attr-alloc_align-5.c
  a2b6348e7f085fa83db64bd978c4e56c  gcc/testsuite/gcc.dg/attr-alloc_size-10.c
! 1f4671134603de0f0fd161afa7e62be4  gcc/testsuite/gcc.dg/attr-alloc_size-11.c
  95ee9b201db957fb93ce07864f13b9b4  gcc/testsuite/gcc.dg/attr-alloc_size-12.c
  be16f6b71bd68991024f0ec321092a06  gcc/testsuite/gcc.dg/attr-alloc_size-13.c
  6e7b391534abc17673b1ce896f7c3a66  gcc/testsuite/gcc.dg/attr-alloc_size-2.c
*************** ea7bcf6a72a5617495c3e237cdd515f8  gcc/te
*** 36226,36231 ****
--- 38762,38772 ----
  52c6f276a374df0f896123bfcbe0aaaa  gcc/testsuite/gcc.dg/attr-alloc_size-9.c
  905e80d8b2e439cd15ed0597458ce2ec  gcc/testsuite/gcc.dg/attr-alloc_size.c
  bff5bf12c7a752b89f17af335428c788  gcc/testsuite/gcc.dg/attr-alwaysinline.c
+ 572d7d5112ae72abef228193d3cd55c7  gcc/testsuite/gcc.dg/attr-assume-1.c
+ b44772fbcd2e08350b35e4dd6946f2a4  gcc/testsuite/gcc.dg/attr-assume-2.c
+ b4a8b630e47887fcd32a48a20c7edabb  gcc/testsuite/gcc.dg/attr-assume-3.c
+ b16875f45f28b5a0af6776ba93cb39a9  gcc/testsuite/gcc.dg/attr-assume-4.c
+ 6c976d06223e8872a9662f8343594517  gcc/testsuite/gcc.dg/attr-assume-5.c
  6774f30903239eb0b974c38374bce074  gcc/testsuite/gcc.dg/attr-assume_aligned-1.c
  02d7d6aadac12a028dedd724bb71f324  gcc/testsuite/gcc.dg/attr-assume_aligned-2.c
  381dde82adbf6ab920a6cf273228f01e  gcc/testsuite/gcc.dg/attr-assume_aligned-3.c
*************** bff5bf12c7a752b89f17af335428c788  gcc/te
*** 36234,36240 ****
  b2c4e769d6b76333376078e568f8eaa8  gcc/testsuite/gcc.dg/attr-copy-3.c
  3366e3a3db8c8a30d5a7e6f8c872146d  gcc/testsuite/gcc.dg/attr-copy-4.c
  b89b2a5e91e59587574b0ef6b1f1b4c7  gcc/testsuite/gcc.dg/attr-copy-5.c
! 98e146d54f44c9b519ca1bd637d92b1a  gcc/testsuite/gcc.dg/attr-copy-6.c
  c10fa29096ca32d276cd578446b49f94  gcc/testsuite/gcc.dg/attr-copy-7.c
  80ddfc710ac1746e479d9236789f2d96  gcc/testsuite/gcc.dg/attr-copy-8.c
  b354bea7c992db9900660e8f86e50619  gcc/testsuite/gcc.dg/attr-copy.c
--- 38775,38781 ----
  b2c4e769d6b76333376078e568f8eaa8  gcc/testsuite/gcc.dg/attr-copy-3.c
  3366e3a3db8c8a30d5a7e6f8c872146d  gcc/testsuite/gcc.dg/attr-copy-4.c
  b89b2a5e91e59587574b0ef6b1f1b4c7  gcc/testsuite/gcc.dg/attr-copy-5.c
! 8fe164ae8a25086ee79c81a07c172566  gcc/testsuite/gcc.dg/attr-copy-6.c
  c10fa29096ca32d276cd578446b49f94  gcc/testsuite/gcc.dg/attr-copy-7.c
  80ddfc710ac1746e479d9236789f2d96  gcc/testsuite/gcc.dg/attr-copy-8.c
  b354bea7c992db9900660e8f86e50619  gcc/testsuite/gcc.dg/attr-copy.c
*************** d3600675bb718f7ec9a87dfa91e38b66  gcc/te
*** 36272,36278 ****
  d34a8237b8b2ae66201cb2c46551b6f9  gcc/testsuite/gcc.dg/attr-unavailable-4.c
  4554671d9ab35e8acb59840d49480a24  gcc/testsuite/gcc.dg/attr-unavailable-5.c
  ec93f18bfda5d3628b53cbe80df0ce9c  gcc/testsuite/gcc.dg/attr-unavailable-6.c
! f12d440433cd7ec628429457b4195c00  gcc/testsuite/gcc.dg/attr-vector_size.c
  fa7929b130df76e25cb947b7f8fdc470  gcc/testsuite/gcc.dg/attr-weak-1.c
  db8374eda20551d6cd60bccb85b32576  gcc/testsuite/gcc.dg/attr-weak-hidden-1.c
  9d67dfe9d24216b60cb82426bce86193  gcc/testsuite/gcc.dg/attr-weak-hidden-1a.c
--- 38813,38819 ----
  d34a8237b8b2ae66201cb2c46551b6f9  gcc/testsuite/gcc.dg/attr-unavailable-4.c
  4554671d9ab35e8acb59840d49480a24  gcc/testsuite/gcc.dg/attr-unavailable-5.c
  ec93f18bfda5d3628b53cbe80df0ce9c  gcc/testsuite/gcc.dg/attr-unavailable-6.c
! 79cace84b266c966c836a2826c66081f  gcc/testsuite/gcc.dg/attr-vector_size.c
  fa7929b130df76e25cb947b7f8fdc470  gcc/testsuite/gcc.dg/attr-weak-1.c
  db8374eda20551d6cd60bccb85b32576  gcc/testsuite/gcc.dg/attr-weak-hidden-1.c
  9d67dfe9d24216b60cb82426bce86193  gcc/testsuite/gcc.dg/attr-weak-hidden-1a.c
*************** da68ac31262c3fbaefafb059699ba37f  gcc/te
*** 36325,36333 ****
  6491a264d2cddc0eaf16befd84a7a690  gcc/testsuite/gcc.dg/auto-init-uninit-C.c
  502bde940d7765e100ed9e9fd499e134  gcc/testsuite/gcc.dg/auto-init-uninit-H.c
  8d9520bfb4ebbd2f6a732b6469a0a7f9  gcc/testsuite/gcc.dg/auto-init-uninit-I.c
  728ad18ac3017195abfa17386cbb7a12  gcc/testsuite/gcc.dg/auto-type-1.c
  c5e609e52b13380aa093916bc7d09fce  gcc/testsuite/gcc.dg/auto-type-2.c
! d8bcaf6d4213e846b44f0796720f8fac  gcc/testsuite/gcc.dg/autopar/autopar.exp
  aa4d5a35793f7cfe360cd57078e1adc3  gcc/testsuite/gcc.dg/autopar/outer-1.c
  025c98b5845d57489814930464df1724  gcc/testsuite/gcc.dg/autopar/outer-2.c
  89a6c222b7a3ca9428f07d4ea8489cee  gcc/testsuite/gcc.dg/autopar/outer-3.c
--- 38866,38875 ----
  6491a264d2cddc0eaf16befd84a7a690  gcc/testsuite/gcc.dg/auto-init-uninit-C.c
  502bde940d7765e100ed9e9fd499e134  gcc/testsuite/gcc.dg/auto-init-uninit-H.c
  8d9520bfb4ebbd2f6a732b6469a0a7f9  gcc/testsuite/gcc.dg/auto-init-uninit-I.c
+ 763f5a680b343d517c92f9c6b593a423  gcc/testsuite/gcc.dg/auto-init-unused-1.c
  728ad18ac3017195abfa17386cbb7a12  gcc/testsuite/gcc.dg/auto-type-1.c
  c5e609e52b13380aa093916bc7d09fce  gcc/testsuite/gcc.dg/auto-type-2.c
! f7084329ee22da1f82725f2bb71e8140  gcc/testsuite/gcc.dg/autopar/autopar.exp
  aa4d5a35793f7cfe360cd57078e1adc3  gcc/testsuite/gcc.dg/autopar/outer-1.c
  025c98b5845d57489814930464df1724  gcc/testsuite/gcc.dg/autopar/outer-2.c
  89a6c222b7a3ca9428f07d4ea8489cee  gcc/testsuite/gcc.dg/autopar/outer-3.c
*************** ee541acf5138faf020e99a710e071f08  gcc/te
*** 36343,36348 ****
--- 38885,38892 ----
  82c7725c2b527d0325fd8ed1733ea976  gcc/testsuite/gcc.dg/autopar/parloops-exit-first-loop-alt-7.c
  f395d0176ca05100e7c6610ad7439a5b  gcc/testsuite/gcc.dg/autopar/parloops-exit-first-loop-alt-pr66652.c
  244da678ecbba7bc623088fceb1d26bd  gcc/testsuite/gcc.dg/autopar/parloops-exit-first-loop-alt.c
+ 1247bc83c1560cf14a2d389695bcfe63  gcc/testsuite/gcc.dg/autopar/pr106737.c
+ 69cb603b56f209bd64198f73d76e9bd5  gcc/testsuite/gcc.dg/autopar/pr107153.c
  815eb13fb915e4bf0ade8ea370f7804a  gcc/testsuite/gcc.dg/autopar/pr39500-1.c
  b8931d413719972ae9d357f86043a4a9  gcc/testsuite/gcc.dg/autopar/pr39500-2.c
  a0dd24bea2a4240be4d58b40efff5d33  gcc/testsuite/gcc.dg/autopar/pr46066.c
*************** c9bbd70f3dbd7558a9c1c7a6e5901e7b  gcc/te
*** 36467,36474 ****
  bc286f4ff365c89c597fd19aa53a46c4  gcc/testsuite/gcc.dg/builtin-alloc-size.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/builtin-apply1.c
  db9849e61a5589377bb913beb6893b0f  gcc/testsuite/gcc.dg/builtin-apply2.c
! 4844379205910806b383dbde4bb6bb59  gcc/testsuite/gcc.dg/builtin-apply3.c
! e1eed7b7fb47002f691a4ddfbcb683a9  gcc/testsuite/gcc.dg/builtin-apply4.c
  ba28fc0bde6fe3759423e5308218c5de  gcc/testsuite/gcc.dg/builtin-arith-overflow-1.c
  2f5a429e4857e305cbaaea57ef8fce49  gcc/testsuite/gcc.dg/builtin-arith-overflow-2.c
  d040792d1dd4c9dd03defd6b33b73ca3  gcc/testsuite/gcc.dg/builtin-arith-overflow-3.c
--- 39011,39018 ----
  bc286f4ff365c89c597fd19aa53a46c4  gcc/testsuite/gcc.dg/builtin-alloc-size.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/builtin-apply1.c
  db9849e61a5589377bb913beb6893b0f  gcc/testsuite/gcc.dg/builtin-apply2.c
! 3069593d5aa8b2583eff321d60dc7b4e  gcc/testsuite/gcc.dg/builtin-apply3.c
! 1ab7dfa5500ec9743d2bf32364da86ec  gcc/testsuite/gcc.dg/builtin-apply4.c
  ba28fc0bde6fe3759423e5308218c5de  gcc/testsuite/gcc.dg/builtin-arith-overflow-1.c
  2f5a429e4857e305cbaaea57ef8fce49  gcc/testsuite/gcc.dg/builtin-arith-overflow-2.c
  d040792d1dd4c9dd03defd6b33b73ca3  gcc/testsuite/gcc.dg/builtin-arith-overflow-3.c
*************** b152d7b3044cd4c130385716be2c314d  gcc/te
*** 36500,36507 ****
  8a5469840816c0e59551cba587e09908  gcc/testsuite/gcc.dg/builtin-complex-err-2.c
  0c222cc6e71e46ddf388523376157d29  gcc/testsuite/gcc.dg/builtin-constant_p-1.c
  9f503648a269c2cbb13ec94b04dd3900  gcc/testsuite/gcc.dg/builtin-dynamic-alloc-size.c
! 8b56ede7aa37ec29e403585664897b0d  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c
! ed02cb7e1879650329b72f07536751b0  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-1.c
  1ff75aa914f15c33a68e1cc40479cd14  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-10.c
  6728d15f57ec5dc1e75076fc95a6ef24  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-11.c
  9f8620548cc565190f9195dc5ccf4a96  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-12.c
--- 39044,39051 ----
  8a5469840816c0e59551cba587e09908  gcc/testsuite/gcc.dg/builtin-complex-err-2.c
  0c222cc6e71e46ddf388523376157d29  gcc/testsuite/gcc.dg/builtin-constant_p-1.c
  9f503648a269c2cbb13ec94b04dd3900  gcc/testsuite/gcc.dg/builtin-dynamic-alloc-size.c
! 3d0bb3569ec84e63b7412c770dec384a  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-0.c
! c5e5f862262559c38264d70aa150ff8c  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-1.c
  1ff75aa914f15c33a68e1cc40479cd14  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-10.c
  6728d15f57ec5dc1e75076fc95a6ef24  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-11.c
  9f8620548cc565190f9195dc5ccf4a96  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-12.c
*************** c20cea884b6dfc628cdcbf331fdb46b7  gcc/te
*** 36512,36520 ****
  26c61662e9f84f77446c307aac0fc969  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-17.c
  7ba18a78460ef2def96b42cf9b6bcbea  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-18.c
  350c4a053d83646c38a9aab653275ba5  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-19.c
! 66fed57f12ef67a1845d335338d126f5  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-2.c
! 1f68cf4312d9ad1bc08c107749d9b6ec  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-3.c
! d521316f56e64f3a838487217fe605ee  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-4.c
  6a3bd76db06e1cef893e79790a2fbaf9  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5-main.c
  aa300b6138aca54a87382d73d77b9afd  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5.c
  a5e27521e31c487bc91f8281068f33c3  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-6.c
--- 39056,39064 ----
  26c61662e9f84f77446c307aac0fc969  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-17.c
  7ba18a78460ef2def96b42cf9b6bcbea  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-18.c
  350c4a053d83646c38a9aab653275ba5  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-19.c
! b02b56dd09de187b13a3a9dd7e3653fe  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-2.c
! b5d8b202caa9517a1d84cc1cabf7b57a  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-3.c
! 9d831587a401180ab6a463d3b5a8ce56  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-4.c
  6a3bd76db06e1cef893e79790a2fbaf9  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5-main.c
  aa300b6138aca54a87382d73d77b9afd  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-5.c
  a5e27521e31c487bc91f8281068f33c3  gcc/testsuite/gcc.dg/builtin-dynamic-object-size-6.c
*************** accf3598507b8caeb30c44d0552888e4  gcc/te
*** 36530,36556 ****
  297482280bba1db1aca62784fdb79b21  gcc/testsuite/gcc.dg/builtin-memchr.c
  a44ac88aa8a6da31cb9b33133af1f622  gcc/testsuite/gcc.dg/builtin-memcpy-2.c
  8f379b287c70f375ef6c56e42f7b980a  gcc/testsuite/gcc.dg/builtin-memcpy.c
! 9228436e03a4a423568d53a9b68905e6  gcc/testsuite/gcc.dg/builtin-object-size-1.c
  03a590dda2c435b8a60eaa573bd785b0  gcc/testsuite/gcc.dg/builtin-object-size-10.c
  f122f7a281486824649a6f822f81d9d0  gcc/testsuite/gcc.dg/builtin-object-size-11.c
! 7b0a4ff07e98aabe7730bc4b5a26e330  gcc/testsuite/gcc.dg/builtin-object-size-12.c
! 9f066d6a8e0811eae2ce1fbd68b6a261  gcc/testsuite/gcc.dg/builtin-object-size-13.c
  06173dc325d89329fd5bac54f74ca67c  gcc/testsuite/gcc.dg/builtin-object-size-14.c
! 31cd2e853fa3ab150360036e531e0590  gcc/testsuite/gcc.dg/builtin-object-size-15.c
  bd55267dc409bf4cd73fc7fdf17926e1  gcc/testsuite/gcc.dg/builtin-object-size-16.c
  d729b9d6db81d465a307ade374f42256  gcc/testsuite/gcc.dg/builtin-object-size-17.c
  869d1b49b0a28836ddaebf74d3462566  gcc/testsuite/gcc.dg/builtin-object-size-18.c
  581a4845d9f8f961c091eaf11a4010f0  gcc/testsuite/gcc.dg/builtin-object-size-19.c
! ae1e70635c1a14b8cfe5cced7df05968  gcc/testsuite/gcc.dg/builtin-object-size-2.c
! e93226957585f3511d4d0f68e18234d7  gcc/testsuite/gcc.dg/builtin-object-size-20.c
  6866a8187425ffe835c719a45992dae9  gcc/testsuite/gcc.dg/builtin-object-size-21.c
! c98801c65ec071817d9b6de8dd8dc855  gcc/testsuite/gcc.dg/builtin-object-size-3.c
! cd31dce4f5149a3d6b8ec494914a9eae  gcc/testsuite/gcc.dg/builtin-object-size-4.c
  1154c87579fbeba4e04c1f1b8d7bc0f1  gcc/testsuite/gcc.dg/builtin-object-size-5.c
! 67f72c638739e21e5096efb451c998f8  gcc/testsuite/gcc.dg/builtin-object-size-6.c
! 7d6776c6e0c882e6255b02670cc2458d  gcc/testsuite/gcc.dg/builtin-object-size-7.c
! 6cc4c5737df46810ea698b6978820d9e  gcc/testsuite/gcc.dg/builtin-object-size-8.c
  7c3e911f08750fc7d2d79ad0e689c38a  gcc/testsuite/gcc.dg/builtin-object-size-9.c
  8a97ebf058fb89f3b374807943c1fa63  gcc/testsuite/gcc.dg/builtin-prefetch-1.c
  9592adb58bb664e7d9b8270d44906bb8  gcc/testsuite/gcc.dg/builtin-protos-1.c
  b8f4d79971032c6c7c0bf1ef3c3ffdeb  gcc/testsuite/gcc.dg/builtin-redefine.c
--- 39074,39102 ----
  297482280bba1db1aca62784fdb79b21  gcc/testsuite/gcc.dg/builtin-memchr.c
  a44ac88aa8a6da31cb9b33133af1f622  gcc/testsuite/gcc.dg/builtin-memcpy-2.c
  8f379b287c70f375ef6c56e42f7b980a  gcc/testsuite/gcc.dg/builtin-memcpy.c
! 2af6cdbd780e761c9d16b673d5823838  gcc/testsuite/gcc.dg/builtin-object-size-1.c
  03a590dda2c435b8a60eaa573bd785b0  gcc/testsuite/gcc.dg/builtin-object-size-10.c
  f122f7a281486824649a6f822f81d9d0  gcc/testsuite/gcc.dg/builtin-object-size-11.c
! 1301b9ef334b8c60b50816cdcfd0ee2c  gcc/testsuite/gcc.dg/builtin-object-size-12.c
! fdffe903eeef8d892f2b76a42da6e7d3  gcc/testsuite/gcc.dg/builtin-object-size-13.c
  06173dc325d89329fd5bac54f74ca67c  gcc/testsuite/gcc.dg/builtin-object-size-14.c
! e7c8a252f15b5c173ffc0402b3789d2a  gcc/testsuite/gcc.dg/builtin-object-size-15.c
  bd55267dc409bf4cd73fc7fdf17926e1  gcc/testsuite/gcc.dg/builtin-object-size-16.c
  d729b9d6db81d465a307ade374f42256  gcc/testsuite/gcc.dg/builtin-object-size-17.c
  869d1b49b0a28836ddaebf74d3462566  gcc/testsuite/gcc.dg/builtin-object-size-18.c
  581a4845d9f8f961c091eaf11a4010f0  gcc/testsuite/gcc.dg/builtin-object-size-19.c
! eafdc2bdd5cf00170aeca954c42a6926  gcc/testsuite/gcc.dg/builtin-object-size-2.c
! cf6f2769bab5f5e06b9751f69afb0b75  gcc/testsuite/gcc.dg/builtin-object-size-20.c
  6866a8187425ffe835c719a45992dae9  gcc/testsuite/gcc.dg/builtin-object-size-21.c
! cebfc0e53c1528723fa6284f1a8cafa1  gcc/testsuite/gcc.dg/builtin-object-size-22.c
! 860fefb769bf2c0a6fc117803b334575  gcc/testsuite/gcc.dg/builtin-object-size-3.c
! 11150772ca587f3bde4ac1661186849a  gcc/testsuite/gcc.dg/builtin-object-size-4.c
  1154c87579fbeba4e04c1f1b8d7bc0f1  gcc/testsuite/gcc.dg/builtin-object-size-5.c
! 03cc40092ecce666556484e4a8b00248  gcc/testsuite/gcc.dg/builtin-object-size-6.c
! 199b74c72225c5f24af2cf2a68908cd0  gcc/testsuite/gcc.dg/builtin-object-size-7.c
! 4725b486a35b6e155ddee3262897bb30  gcc/testsuite/gcc.dg/builtin-object-size-8.c
  7c3e911f08750fc7d2d79ad0e689c38a  gcc/testsuite/gcc.dg/builtin-object-size-9.c
+ e1e33044d82e82f1585b2419c3ca5cf2  gcc/testsuite/gcc.dg/builtin-object-size-common.h
  8a97ebf058fb89f3b374807943c1fa63  gcc/testsuite/gcc.dg/builtin-prefetch-1.c
  9592adb58bb664e7d9b8270d44906bb8  gcc/testsuite/gcc.dg/builtin-protos-1.c
  b8f4d79971032c6c7c0bf1ef3c3ffdeb  gcc/testsuite/gcc.dg/builtin-redefine.c
*************** e6fb34d9dcc3e8d3fb2c859d542bd34b  gcc/te
*** 36569,36575 ****
  35c590121da633e8f3bebf6707a46ba7  gcc/testsuite/gcc.dg/builtin-strstr.c
  9dc9676d48f7e9a36fc5b0a46d64ef0d  gcc/testsuite/gcc.dg/builtin-tgmath-1.c
  06344ebcad12736ac392ff342cc2c519  gcc/testsuite/gcc.dg/builtin-tgmath-2.c
! d7613dbcd376ca127f654a4f34104e6e  gcc/testsuite/gcc.dg/builtin-tgmath-3.c
  8f15e791651aca2683649f498455ef1e  gcc/testsuite/gcc.dg/builtin-tgmath-err-1.c
  e06e75338accc1d77eb96706931ab719  gcc/testsuite/gcc.dg/builtin-tgmath-err-2.c
  2aff03ba9fa42e64dea658c79ad816e6  gcc/testsuite/gcc.dg/builtin-unreachable-1.c
--- 39115,39121 ----
  35c590121da633e8f3bebf6707a46ba7  gcc/testsuite/gcc.dg/builtin-strstr.c
  9dc9676d48f7e9a36fc5b0a46d64ef0d  gcc/testsuite/gcc.dg/builtin-tgmath-1.c
  06344ebcad12736ac392ff342cc2c519  gcc/testsuite/gcc.dg/builtin-tgmath-2.c
! 4b99d532b7edf9641c752bcd626cd64e  gcc/testsuite/gcc.dg/builtin-tgmath-3.c
  8f15e791651aca2683649f498455ef1e  gcc/testsuite/gcc.dg/builtin-tgmath-err-1.c
  e06e75338accc1d77eb96706931ab719  gcc/testsuite/gcc.dg/builtin-tgmath-err-2.c
  2aff03ba9fa42e64dea658c79ad816e6  gcc/testsuite/gcc.dg/builtin-unreachable-1.c
*************** ca6f678477db46c57462ab1cc0d3bd29  gcc/te
*** 36637,36643 ****
  e99f948a2420290f76df40092a42fab0  gcc/testsuite/gcc.dg/builtins-66.c
  2735fd083d99b4e8efe6fb8bea07f329  gcc/testsuite/gcc.dg/builtins-67.c
  3a4118157005aab9c57cd3714270e0b2  gcc/testsuite/gcc.dg/builtins-68.c
! f3b66c442dc3455142dcfd21e883bf0f  gcc/testsuite/gcc.dg/builtins-69.c
  1863267706e2e098673111de96a7b9c7  gcc/testsuite/gcc.dg/builtins-7.c
  e75838cbd7442b0b3e01123b50e4cc85  gcc/testsuite/gcc.dg/builtins-70.c
  467c6e1601c1415e20b67f4540598f61  gcc/testsuite/gcc.dg/builtins-8.c
--- 39183,39189 ----
  e99f948a2420290f76df40092a42fab0  gcc/testsuite/gcc.dg/builtins-66.c
  2735fd083d99b4e8efe6fb8bea07f329  gcc/testsuite/gcc.dg/builtins-67.c
  3a4118157005aab9c57cd3714270e0b2  gcc/testsuite/gcc.dg/builtins-68.c
! 4222329b6ef240dae3e2a48b58251a4c  gcc/testsuite/gcc.dg/builtins-69.c
  1863267706e2e098673111de96a7b9c7  gcc/testsuite/gcc.dg/builtins-7.c
  e75838cbd7442b0b3e01123b50e4cc85  gcc/testsuite/gcc.dg/builtins-70.c
  467c6e1601c1415e20b67f4540598f61  gcc/testsuite/gcc.dg/builtins-8.c
*************** d02a55d128f246861a5c923d33a6f9ab  gcc/te
*** 36649,36655 ****
  518a512e7ba00c065bf9d0b179728153  gcc/testsuite/gcc.dg/c11-align-1.c
  cb1acb90e96c07c37d3fbd481db36ef4  gcc/testsuite/gcc.dg/c11-align-2.c
  2e85aa9232c9807927b9486b8f1a8466  gcc/testsuite/gcc.dg/c11-align-3.c
! 3ed0ac71f17964d29ca8347b618fa0dc  gcc/testsuite/gcc.dg/c11-align-4.c
  bed8aa54aaa767e19afc5377399a58fa  gcc/testsuite/gcc.dg/c11-align-5.c
  adf85e554b5d3abf9d35ffe7726aa9f2  gcc/testsuite/gcc.dg/c11-align-6.c
  d01d97509c83a924e0a4dd7a59a90613  gcc/testsuite/gcc.dg/c11-align-7.c
--- 39195,39201 ----
  518a512e7ba00c065bf9d0b179728153  gcc/testsuite/gcc.dg/c11-align-1.c
  cb1acb90e96c07c37d3fbd481db36ef4  gcc/testsuite/gcc.dg/c11-align-2.c
  2e85aa9232c9807927b9486b8f1a8466  gcc/testsuite/gcc.dg/c11-align-3.c
! 2e837e9f89af6d35652a042a23bbb0d2  gcc/testsuite/gcc.dg/c11-align-4.c
  bed8aa54aaa767e19afc5377399a58fa  gcc/testsuite/gcc.dg/c11-align-5.c
  adf85e554b5d3abf9d35ffe7726aa9f2  gcc/testsuite/gcc.dg/c11-align-6.c
  d01d97509c83a924e0a4dd7a59a90613  gcc/testsuite/gcc.dg/c11-align-7.c
*************** fb6856ed42272d2e75705288147407d4  gcc/te
*** 36674,36699 ****
--- 39220,39262 ----
  47c6a18b65d09a5d8bfb22cb00e62f09  gcc/testsuite/gcc.dg/c11-compare-incomplete-1.c
  507babbb6da0d18aba4c0234531bfc0e  gcc/testsuite/gcc.dg/c11-compare-incomplete-2.c
  12ef1e10f51b7a7205f424c6c3ce9ef9  gcc/testsuite/gcc.dg/c11-complex-1.c
+ 5ba087ead2d5d6cc22d21d11d8a7e7b2  gcc/testsuite/gcc.dg/c11-complit-1.c
+ d143de8934fa3a1c512e11f89dfa9b22  gcc/testsuite/gcc.dg/c11-complit-2.c
+ ecd797193f08444d5fdeff0580bfa33f  gcc/testsuite/gcc.dg/c11-complit-3.c
  4379db3d95da5339cde0b57fed54fb14  gcc/testsuite/gcc.dg/c11-digit-separators-1.c
+ 71a24c7320e28508f47103da5a443a1e  gcc/testsuite/gcc.dg/c11-empty-init-1.c
+ 51ccf8c34a305d71b64d94729ad5861c  gcc/testsuite/gcc.dg/c11-empty-init-2.c
+ 489c030e2d89402d23a6939189f7b434  gcc/testsuite/gcc.dg/c11-empty-init-3.c
+ 38ac349942f1c90d5c41edf3fce8fade  gcc/testsuite/gcc.dg/c11-enum-1.c
+ 9a41324bc86fd7c975702fa28a3d7695  gcc/testsuite/gcc.dg/c11-enum-2.c
+ 134af045c9ea52103f7556938592edf8  gcc/testsuite/gcc.dg/c11-enum-3.c
+ 45a22fdd7e658fd74fa21cb8dcc1ee42  gcc/testsuite/gcc.dg/c11-enum-4.c
+ 6158e269e94a89a0b18485df46e4898f  gcc/testsuite/gcc.dg/c11-enum-5.c
+ 0920bf5001bf71cf72a7677029df06df  gcc/testsuite/gcc.dg/c11-enum-6.c
  d9a2f9168158c56d6257cb7866dbe1f8  gcc/testsuite/gcc.dg/c11-float-1.c
  5a0906a4ebef0b27aa6dd7d4cad0cf9f  gcc/testsuite/gcc.dg/c11-float-2.c
  04b2d9216570787bdcc1f01fba4ad2a8  gcc/testsuite/gcc.dg/c11-float-3.c
  41ab83e3a406a7516c960cb70255cc5c  gcc/testsuite/gcc.dg/c11-float-4.c
  393ef19efe1927d270c2b7a7943708db  gcc/testsuite/gcc.dg/c11-float-5.c
  f5943e612c16b7bcb16ca6226253ea6c  gcc/testsuite/gcc.dg/c11-float-6.c
+ 2c1fc82b3fa500bcdbd5ec39348ce181  gcc/testsuite/gcc.dg/c11-float-7.c
+ 344bae5bf5449cc6019511d933152ec6  gcc/testsuite/gcc.dg/c11-float-8.c
  0223046956e0ac17c6d4ec16a73e0052  gcc/testsuite/gcc.dg/c11-float-dfp-1.c
  e6ce0af835170a38d7c6aafc1bc9d582  gcc/testsuite/gcc.dg/c11-float-dfp-2.c
  8472bf4fa0a02e831b47e014c3d8ff39  gcc/testsuite/gcc.dg/c11-generic-1.c
  9067e724c4ff52e45f30d96d1baf4aa5  gcc/testsuite/gcc.dg/c11-generic-2.c
  edccfa9a6ec4138450a583864191741b  gcc/testsuite/gcc.dg/c11-generic-3.c
+ 9cfd95df643bd191ab000bd178809dee  gcc/testsuite/gcc.dg/c11-keywords-1.c
  3db892ff7dff5c32a37d9f3b20627c73  gcc/testsuite/gcc.dg/c11-labels-1.c
  22f625932f22946e080ea3988bd9f854  gcc/testsuite/gcc.dg/c11-labels-2.c
  2476375795b6f2042388440bb97fa092  gcc/testsuite/gcc.dg/c11-labels-3.c
+ fb15d13b559e6ed4b77b925f2174bd6b  gcc/testsuite/gcc.dg/c11-limits-1.c
  78d114a088cf800bcb136263001e0c24  gcc/testsuite/gcc.dg/c11-noreturn-1.c
  79a7c7ddbbeb534965c073907ba1502d  gcc/testsuite/gcc.dg/c11-noreturn-2.c
  bd510e212640224d22dba81f49c4b9e7  gcc/testsuite/gcc.dg/c11-noreturn-3.c
  d8272e1d572d33a852614f0a74a31345  gcc/testsuite/gcc.dg/c11-noreturn-4.c
  f9262f126c900d76cdb16f0afbfc600f  gcc/testsuite/gcc.dg/c11-noreturn-5.c
+ abfbae98d3f37ff0d3a2b7bda81a856c  gcc/testsuite/gcc.dg/c11-nullptr-1.c
  d33ce50710ecd86a247a10319e5421d3  gcc/testsuite/gcc.dg/c11-old-style-definition-1.c
  e197e3e287789d1604bf0e0c997b89fe  gcc/testsuite/gcc.dg/c11-old-style-definition-2.c
  76c61754cd6702dd0aa8c96472ab6679  gcc/testsuite/gcc.dg/c11-parm-omit-1.c
*************** d7ef98239e7c17e364c10debfa89d9d2  gcc/te
*** 36712,36774 ****
  9bb121031c94e5ff19758f9eaf4c87a1  gcc/testsuite/gcc.dg/c11-static-assert-7.c
  64b3055467aa64af1607dc7226abdd4d  gcc/testsuite/gcc.dg/c11-static-assert-8.c
  58a7e832ab903726e603d897241366a6  gcc/testsuite/gcc.dg/c11-static-assert-9.c
  8d5bda54b390a2348c084bf998549d82  gcc/testsuite/gcc.dg/c11-stdatomic-1.c
  c61a3a2fb711240cb33f2d975167e099  gcc/testsuite/gcc.dg/c11-stdatomic-2.c
  5ee4dd2ade00d5f10952682e37905c79  gcc/testsuite/gcc.dg/c11-thread-local-1.c
  58f7954bcc9e1400078445a38b80d9cc  gcc/testsuite/gcc.dg/c11-thread-local-2.c
  e2a0227684c75fbd79e6e01a85396388  gcc/testsuite/gcc.dg/c11-true_min-1.c
  cce86829bf185b88188e1478f6f86b43  gcc/testsuite/gcc.dg/c11-typedef-1.c
  6f673adf8dbf19341d44962e8f0acf41  gcc/testsuite/gcc.dg/c11-uni-string-1.c
  8b1d5bf350b30002364428953e7e269f  gcc/testsuite/gcc.dg/c11-uni-string-2.c
  4ad07e2f74164421471239f2c41fc7d1  gcc/testsuite/gcc.dg/c11-unproto-1.c
  97d39f61e5ba801a91ba7cd19c75c4f4  gcc/testsuite/gcc.dg/c11-unproto-2.c
  0f19b008744e2186cb49b549d66ca484  gcc/testsuite/gcc.dg/c11-utf8char-1.c
  d8fec2fce7b0346ffeb1fbb2bd55d7e5  gcc/testsuite/gcc.dg/c11-version-1.c
  7e31e73dc6465f7388bf6d84893c3a04  gcc/testsuite/gcc.dg/c11-version-2.c
  5ad87a8fc8d331629e6c46ceda1f0cf2  gcc/testsuite/gcc.dg/c17-version-1.c
  3dbfc6cb7eab32d45526a6c027b7c7a2  gcc/testsuite/gcc.dg/c17-version-2.c
  aeb16ae2682d8d01a1d6120c9de5edfd  gcc/testsuite/gcc.dg/c18-version-1.c
  cd00c6feebac836c0ec488202c21d6a7  gcc/testsuite/gcc.dg/c18-version-2.c
  1a6078af67236639a20541935b9c1759  gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c
! a94bb301958b9a62e50e21c069442512  gcc/testsuite/gcc.dg/c2x-attr-deprecated-2.c
  ec4ce1d7cd47b2d554a69b72933ba06b  gcc/testsuite/gcc.dg/c2x-attr-deprecated-3.c
  040e55ecdcf60d5df0f050c4955388f9  gcc/testsuite/gcc.dg/c2x-attr-deprecated-4.c
  6684ae2b2a9246bfaf5fc88fd7ca0ecd  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c
! ade7f27c3af0e55308b3f8378df7247b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-2.c
  8ff9a4ace7a0658c0b47caa687fc54b8  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-3.c
  f92fdbd923b9ff881a9b6de11a93320f  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-4.c
  9d7950144aebc8e6d928d4108ed10486  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-5.c
  92ef8a5b7fe2bb4f8741a8267b9abb0b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-6.c
! 07b79ef75eca03e2bdf5c3620e83aa32  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-1.c
  4672e1aa92d294e631e09697818f5a40  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-2.c
  ddd2e02d1492c4dd2fd93bb872328e72  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-3.c
  fcb97faa38daf1241ac63b55b08b2291  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-4.c
  41ec962da570a27ed3fb272af3dc3c45  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-1.c
! 41ab2ed4cfcfc9d072cf81d55e82cf5b  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-2.c
  1b417b2cef24f7e8d651858eb4706c35  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-3.c
  4538cf4e8b0845911921e1899d0347ea  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-4.c
  f2989cbea7233f22a5f3e5881d430d6e  gcc/testsuite/gcc.dg/c2x-attr-syntax-1.c
  230b0d85a26ef13ac13065780826c4b3  gcc/testsuite/gcc.dg/c2x-attr-syntax-2.c
  b8f200f508d05887dc47a551eb3f7d0d  gcc/testsuite/gcc.dg/c2x-attr-syntax-3.c
  a83848b7b241c7b8e115c3a4dddb747f  gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c
  9b0765846cb41d393e7fb47b1e4cdee4  gcc/testsuite/gcc.dg/c2x-attr-syntax-5.c
  1ee4223adce9600a47bbb336ca696c0b  gcc/testsuite/gcc.dg/c2x-binary-constants-1.c
  4a865b821e9afd1b12f18920156de316  gcc/testsuite/gcc.dg/c2x-binary-constants-2.c
  ba639c5eb00f59a2ddffbee0249ebe64  gcc/testsuite/gcc.dg/c2x-binary-constants-3.c
! 877291ec915869126d7261bbbafe5547  gcc/testsuite/gcc.dg/c2x-bool-1.c
  e4c4e5028ccfb46dfcc79a41e4ed5488  gcc/testsuite/gcc.dg/c2x-bool-limits-1.c
  396a74b7c1b42fdf67e5d3c36f655b65  gcc/testsuite/gcc.dg/c2x-builtins-1.c
  1daa7fbd8e2c976af88ccab67f239d60  gcc/testsuite/gcc.dg/c2x-digit-separators-1.c
  f3a13d08ce265f16fb1e0bbff905dda0  gcc/testsuite/gcc.dg/c2x-digit-separators-2.c
  ec1408942667add450a81147a38df95c  gcc/testsuite/gcc.dg/c2x-digit-separators-3.c
  90f5c814361317bbacff5ea0a7b26cf1  gcc/testsuite/gcc.dg/c2x-float-1.c
! 7f0f89a42c938a971abc808663e81081  gcc/testsuite/gcc.dg/c2x-float-10.c
! 1798707b6c0b60203833f7f8a48f98a5  gcc/testsuite/gcc.dg/c2x-float-2.c
  dd22f71fd3db4e7e3bff58f62a3349ea  gcc/testsuite/gcc.dg/c2x-float-3.c
  117d0c1e261e52e8a8368ff4edba8d40  gcc/testsuite/gcc.dg/c2x-float-4.c
  59e11a3113c2663bf03b469466cc63dc  gcc/testsuite/gcc.dg/c2x-float-5.c
  ab3ebd8a2507f0a729a6822cfdcbd6fd  gcc/testsuite/gcc.dg/c2x-float-6.c
! 9e1b33f14dcbfee5e1f8e2a1fe859de2  gcc/testsuite/gcc.dg/c2x-float-7.c
  778c287b9a0f07077ee4bfe28b14f673  gcc/testsuite/gcc.dg/c2x-float-8.c
  13752a9f8db4b847dcf36a69feeb451d  gcc/testsuite/gcc.dg/c2x-float-9.c
  fd42672c4bbfd0a0de2075c67b750445  gcc/testsuite/gcc.dg/c2x-float-no-dfp-1.c
--- 39275,39396 ----
  9bb121031c94e5ff19758f9eaf4c87a1  gcc/testsuite/gcc.dg/c11-static-assert-7.c
  64b3055467aa64af1607dc7226abdd4d  gcc/testsuite/gcc.dg/c11-static-assert-8.c
  58a7e832ab903726e603d897241366a6  gcc/testsuite/gcc.dg/c11-static-assert-9.c
+ 210dd3c9197b2cb465dc08a9251777fb  gcc/testsuite/gcc.dg/c11-stdarg-1.c
+ 7f22c3906d72aa6105457b867b8810f1  gcc/testsuite/gcc.dg/c11-stdarg-2.c
+ 7514f2709bbbf4768001b0400ac5e58a  gcc/testsuite/gcc.dg/c11-stdarg-3.c
+ d8afba1d2b1a04e30bf233094d9faac2  gcc/testsuite/gcc.dg/c11-stdarg-4.c
  8d5bda54b390a2348c084bf998549d82  gcc/testsuite/gcc.dg/c11-stdatomic-1.c
  c61a3a2fb711240cb33f2d975167e099  gcc/testsuite/gcc.dg/c11-stdatomic-2.c
+ 13df763d0421a41bc85cd00a0a488d5b  gcc/testsuite/gcc.dg/c11-stdatomic-3.c
+ 16c627d081bbf1e4be3c4c070ec27476  gcc/testsuite/gcc.dg/c11-stddef-1.c
+ 32eb3f0a7aece0dafd68ef1f61611255  gcc/testsuite/gcc.dg/c11-stdint-1.c
  5ee4dd2ade00d5f10952682e37905c79  gcc/testsuite/gcc.dg/c11-thread-local-1.c
  58f7954bcc9e1400078445a38b80d9cc  gcc/testsuite/gcc.dg/c11-thread-local-2.c
  e2a0227684c75fbd79e6e01a85396388  gcc/testsuite/gcc.dg/c11-true_min-1.c
  cce86829bf185b88188e1478f6f86b43  gcc/testsuite/gcc.dg/c11-typedef-1.c
+ 51405bdb6cae63e718147f9a08b88907  gcc/testsuite/gcc.dg/c11-typeof-1.c
  6f673adf8dbf19341d44962e8f0acf41  gcc/testsuite/gcc.dg/c11-uni-string-1.c
  8b1d5bf350b30002364428953e7e269f  gcc/testsuite/gcc.dg/c11-uni-string-2.c
  4ad07e2f74164421471239f2c41fc7d1  gcc/testsuite/gcc.dg/c11-unproto-1.c
  97d39f61e5ba801a91ba7cd19c75c4f4  gcc/testsuite/gcc.dg/c11-unproto-2.c
+ 04504611c52e8e89b4149daa828fba5d  gcc/testsuite/gcc.dg/c11-unproto-3.c
+ 14a8e444f99b3504dea4ba6dbe635778  gcc/testsuite/gcc.dg/c11-unreachable-1.c
  0f19b008744e2186cb49b549d66ca484  gcc/testsuite/gcc.dg/c11-utf8char-1.c
+ 40caf03e37e4fea5ccc8c1ad6d05b81a  gcc/testsuite/gcc.dg/c11-utf8str-type.c
  d8fec2fce7b0346ffeb1fbb2bd55d7e5  gcc/testsuite/gcc.dg/c11-version-1.c
  7e31e73dc6465f7388bf6d84893c3a04  gcc/testsuite/gcc.dg/c11-version-2.c
+ 5a67292dfe6f82e2c4fce49abe5cf184  gcc/testsuite/gcc.dg/c17-nullptr-1.c
+ 94d0f5b1bdaa984bdfc7a849b073adb0  gcc/testsuite/gcc.dg/c17-nullptr-2.c
+ fcd4572df13af248f922ae7a7c77e6a8  gcc/testsuite/gcc.dg/c17-utf8str-type.c
  5ad87a8fc8d331629e6c46ceda1f0cf2  gcc/testsuite/gcc.dg/c17-version-1.c
  3dbfc6cb7eab32d45526a6c027b7c7a2  gcc/testsuite/gcc.dg/c17-version-2.c
  aeb16ae2682d8d01a1d6120c9de5edfd  gcc/testsuite/gcc.dg/c18-version-1.c
  cd00c6feebac836c0ec488202c21d6a7  gcc/testsuite/gcc.dg/c18-version-2.c
+ e534b0f2e881e50aca6c1f2a52542dc2  gcc/testsuite/gcc.dg/c2x-align-1.c
+ 6fd315ddd7219855d32d6938f5c972be  gcc/testsuite/gcc.dg/c2x-align-6.c
  1a6078af67236639a20541935b9c1759  gcc/testsuite/gcc.dg/c2x-attr-deprecated-1.c
! 13a58302a211ad6af91c3a3a799a11a0  gcc/testsuite/gcc.dg/c2x-attr-deprecated-2.c
  ec4ce1d7cd47b2d554a69b72933ba06b  gcc/testsuite/gcc.dg/c2x-attr-deprecated-3.c
  040e55ecdcf60d5df0f050c4955388f9  gcc/testsuite/gcc.dg/c2x-attr-deprecated-4.c
  6684ae2b2a9246bfaf5fc88fd7ca0ecd  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-1.c
! e68e31d326cb08a80e19306f6240f9f9  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-2.c
  8ff9a4ace7a0658c0b47caa687fc54b8  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-3.c
  f92fdbd923b9ff881a9b6de11a93320f  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-4.c
  9d7950144aebc8e6d928d4108ed10486  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-5.c
  92ef8a5b7fe2bb4f8741a8267b9abb0b  gcc/testsuite/gcc.dg/c2x-attr-fallthrough-6.c
! ac04afccac55a673669ceb59505bc2ca  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-1.c
  4672e1aa92d294e631e09697818f5a40  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-2.c
  ddd2e02d1492c4dd2fd93bb872328e72  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-3.c
  fcb97faa38daf1241ac63b55b08b2291  gcc/testsuite/gcc.dg/c2x-attr-maybe_unused-4.c
  41ec962da570a27ed3fb272af3dc3c45  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-1.c
! 307cbed5b5aefee1dae6068c7a502017  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-2.c
  1b417b2cef24f7e8d651858eb4706c35  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-3.c
  4538cf4e8b0845911921e1899d0347ea  gcc/testsuite/gcc.dg/c2x-attr-nodiscard-4.c
+ 51a86e89dffe6a45868e9658527bea7f  gcc/testsuite/gcc.dg/c2x-attr-noreturn-1.c
+ e42e56429bbf66fea0969f25e253b626  gcc/testsuite/gcc.dg/c2x-attr-noreturn-2.c
+ e447c9faca965c70029a40801ad3b397  gcc/testsuite/gcc.dg/c2x-attr-noreturn-3.c
  f2989cbea7233f22a5f3e5881d430d6e  gcc/testsuite/gcc.dg/c2x-attr-syntax-1.c
  230b0d85a26ef13ac13065780826c4b3  gcc/testsuite/gcc.dg/c2x-attr-syntax-2.c
  b8f200f508d05887dc47a551eb3f7d0d  gcc/testsuite/gcc.dg/c2x-attr-syntax-3.c
  a83848b7b241c7b8e115c3a4dddb747f  gcc/testsuite/gcc.dg/c2x-attr-syntax-4.c
  9b0765846cb41d393e7fb47b1e4cdee4  gcc/testsuite/gcc.dg/c2x-attr-syntax-5.c
+ 6dbfaf699f3d6488347f14cb28bce735  gcc/testsuite/gcc.dg/c2x-auto-1.c
+ fd92297a2302df71f7b9f4fa5ab002f8  gcc/testsuite/gcc.dg/c2x-auto-2.c
+ 801cdbe16aaa1e64a6de2c461de257ab  gcc/testsuite/gcc.dg/c2x-auto-3.c
+ 6bef7e2803067f13b40bdfce889f1673  gcc/testsuite/gcc.dg/c2x-auto-4.c
  1ee4223adce9600a47bbb336ca696c0b  gcc/testsuite/gcc.dg/c2x-binary-constants-1.c
  4a865b821e9afd1b12f18920156de316  gcc/testsuite/gcc.dg/c2x-binary-constants-2.c
  ba639c5eb00f59a2ddffbee0249ebe64  gcc/testsuite/gcc.dg/c2x-binary-constants-3.c
! c938f0d2611235ab008a23b4bd43a47d  gcc/testsuite/gcc.dg/c2x-bool-1.c
! 200f8f07e9964d833f4c58cb0929cb29  gcc/testsuite/gcc.dg/c2x-bool-2.c
  e4c4e5028ccfb46dfcc79a41e4ed5488  gcc/testsuite/gcc.dg/c2x-bool-limits-1.c
  396a74b7c1b42fdf67e5d3c36f655b65  gcc/testsuite/gcc.dg/c2x-builtins-1.c
+ cb5a48cf245e98e3ebc3bec52bb1b305  gcc/testsuite/gcc.dg/c2x-complit-1.c
+ e7b02322a9a0c68e2065111ca68535ba  gcc/testsuite/gcc.dg/c2x-complit-2.c
+ 01fa95ea0d2e0ca26b1048a11adba865  gcc/testsuite/gcc.dg/c2x-complit-3.c
+ 3eb6390ff9a597cb951fe6d0a77e2d8e  gcc/testsuite/gcc.dg/c2x-complit-4.c
+ bd7b48ecb9b7b1eb4814d8539aa91d4a  gcc/testsuite/gcc.dg/c2x-complit-5.c
+ 52a71d522bef6b49e1f5bd857fe622c2  gcc/testsuite/gcc.dg/c2x-complit-6.c
+ ce2afbb88d1dff570c061e0bfcd54cab  gcc/testsuite/gcc.dg/c2x-complit-7.c
+ 89c24fe5d27022531a99e5ee7eaa65ea  gcc/testsuite/gcc.dg/c2x-complit-8.c
+ 8981d4f1b891ceafff33e76ed2831620  gcc/testsuite/gcc.dg/c2x-concat-1.c
+ 4675707676273951cf0415ea4898953f  gcc/testsuite/gcc.dg/c2x-constexpr-1.c
+ a35e5aa256a87f8e6c143395805492d0  gcc/testsuite/gcc.dg/c2x-constexpr-2a.c
+ aeda3d817ab1592467bf25d32cf38908  gcc/testsuite/gcc.dg/c2x-constexpr-2b.c
+ 56cc473ea37948e7c0ddcc376b2847c4  gcc/testsuite/gcc.dg/c2x-constexpr-3.c
+ 2fceba7caa127a5a14e61985faf8e189  gcc/testsuite/gcc.dg/c2x-constexpr-4.c
+ 805b860c557f4ae340f445eeef5f0691  gcc/testsuite/gcc.dg/c2x-constexpr-5.c
+ c2b1f89e4e81ba3d0911a0cfccbc8232  gcc/testsuite/gcc.dg/c2x-constexpr-6.c
+ 985e033592ffa5a014c7cdbf5946d3dd  gcc/testsuite/gcc.dg/c2x-constexpr-7.c
+ c4124e562745478624db6bcb640ec74c  gcc/testsuite/gcc.dg/c2x-constexpr-8.c
+ 6b265ea6f0c92a60587457ce2837d147  gcc/testsuite/gcc.dg/c2x-constexpr-9.c
  1daa7fbd8e2c976af88ccab67f239d60  gcc/testsuite/gcc.dg/c2x-digit-separators-1.c
  f3a13d08ce265f16fb1e0bbff905dda0  gcc/testsuite/gcc.dg/c2x-digit-separators-2.c
  ec1408942667add450a81147a38df95c  gcc/testsuite/gcc.dg/c2x-digit-separators-3.c
+ e19fe8cfd7dd2ac1e61b00a82465764b  gcc/testsuite/gcc.dg/c2x-empty-init-1.c
+ 4b0ca8b051cc26a6f4d66f60f192a8d2  gcc/testsuite/gcc.dg/c2x-empty-init-2.c
+ d2879a629997a93ecceae8de846ba117  gcc/testsuite/gcc.dg/c2x-empty-init-3.c
+ c79750fe3a05fc60a95430e4b14ba497  gcc/testsuite/gcc.dg/c2x-enum-1.c
+ fa50be0925026d9178e843568bb72fcb  gcc/testsuite/gcc.dg/c2x-enum-2.c
+ c93ba4472a27a35f732321114c43b5ea  gcc/testsuite/gcc.dg/c2x-enum-3.c
+ a993d9a77862500d5943698b3ac2a5f9  gcc/testsuite/gcc.dg/c2x-enum-4.c
+ 9de9d5104f308e6013567365da85f7cd  gcc/testsuite/gcc.dg/c2x-enum-5.c
+ dad0b1d75e770c58b017b53340971954  gcc/testsuite/gcc.dg/c2x-enum-6.c
+ b408b23ec113b85ba831a77d6465f366  gcc/testsuite/gcc.dg/c2x-enum-7.c
+ 8a91a67559de1769765d42da1358af34  gcc/testsuite/gcc.dg/c2x-enum-8.c
  90f5c814361317bbacff5ea0a7b26cf1  gcc/testsuite/gcc.dg/c2x-float-1.c
! e109dc4236e8c4d4fd66dfdb4da2e37b  gcc/testsuite/gcc.dg/c2x-float-10.c
! 09351aa07b27dbf890a7d067a8f21b0c  gcc/testsuite/gcc.dg/c2x-float-11.c
! 779b76345e7e6873ad10b9edf051fe13  gcc/testsuite/gcc.dg/c2x-float-12.c
! 064cf32ff98ab6a02a5fb3aebf8eec52  gcc/testsuite/gcc.dg/c2x-float-13.c
! 5e1fcf5e3ebce209b119689783594f8a  gcc/testsuite/gcc.dg/c2x-float-2.c
  dd22f71fd3db4e7e3bff58f62a3349ea  gcc/testsuite/gcc.dg/c2x-float-3.c
  117d0c1e261e52e8a8368ff4edba8d40  gcc/testsuite/gcc.dg/c2x-float-4.c
  59e11a3113c2663bf03b469466cc63dc  gcc/testsuite/gcc.dg/c2x-float-5.c
  ab3ebd8a2507f0a729a6822cfdcbd6fd  gcc/testsuite/gcc.dg/c2x-float-6.c
! 089b952a71a1a4d84c5a11893fd3267d  gcc/testsuite/gcc.dg/c2x-float-7a.c
! ffcb041634ad77517d1f34a653c35dde  gcc/testsuite/gcc.dg/c2x-float-7b.c
! b922ea1afa12d980fd6f2eee02711dd1  gcc/testsuite/gcc.dg/c2x-float-7c.c
  778c287b9a0f07077ee4bfe28b14f673  gcc/testsuite/gcc.dg/c2x-float-8.c
  13752a9f8db4b847dcf36a69feeb451d  gcc/testsuite/gcc.dg/c2x-float-9.c
  fd42672c4bbfd0a0de2075c67b750445  gcc/testsuite/gcc.dg/c2x-float-no-dfp-1.c
*************** fd42672c4bbfd0a0de2075c67b750445  gcc/te
*** 36776,36794 ****
  c896c681d16278ccfb60277ea6d60ea7  gcc/testsuite/gcc.dg/c2x-float-no-dfp-3.c
  2e0314c2eb8a19080246928d8ac80274  gcc/testsuite/gcc.dg/c2x-float-no-dfp-4.c
  2d19c187230a819591ad1acd5e6861a2  gcc/testsuite/gcc.dg/c2x-has-c-attribute-1.c
! 275b1acfc5a1273e3ed71f10bf280108  gcc/testsuite/gcc.dg/c2x-has-c-attribute-2.c
  996b1c79eeba71a3fb4a6d0c6f775bbf  gcc/testsuite/gcc.dg/c2x-has-c-attribute-3.c
  12af672718164067826449dc3d706cfc  gcc/testsuite/gcc.dg/c2x-has-c-attribute-4.c
  e12d838e9ae1c0ef00e7615fccef3476  gcc/testsuite/gcc.dg/c2x-labels-1.c
  885da369c5855d3bcd78e084bf36d154  gcc/testsuite/gcc.dg/c2x-labels-2.c
  0d32e7389b35d1d631d4805cf6be6ec7  gcc/testsuite/gcc.dg/c2x-labels-3.c
  9aa46756a285d809fdf673f01df53026  gcc/testsuite/gcc.dg/c2x-no-dfp-1.c
  96fb9744f0d87599adaf21898d43a8da  gcc/testsuite/gcc.dg/c2x-old-style-definition-1.c
  142fa04ae5383196024c6e12791b4272  gcc/testsuite/gcc.dg/c2x-old-style-definition-2.c
  765dbbbac0b9c0f4d5fda8adb96ed4f1  gcc/testsuite/gcc.dg/c2x-old-style-definition-3.c
  b4b8a88f7469ab941346f4d6f9cb1e32  gcc/testsuite/gcc.dg/c2x-old-style-definition-4.c
  fec316d2e27f8fe61a00d3fdae1ca5f3  gcc/testsuite/gcc.dg/c2x-old-style-definition-5.c
! 640358448cdec8263151e6b5d7a13aa0  gcc/testsuite/gcc.dg/c2x-old-style-definition-6.c
  c65227cf031fcfb6cea27f0b13ee542c  gcc/testsuite/gcc.dg/c2x-parm-omit-1.c
  597596705ccebbf3aaa0271c02ad0ee9  gcc/testsuite/gcc.dg/c2x-parm-omit-2.c
  46a1998613654b31cf08003d875762d9  gcc/testsuite/gcc.dg/c2x-parm-omit-3.c
--- 39398,39423 ----
  c896c681d16278ccfb60277ea6d60ea7  gcc/testsuite/gcc.dg/c2x-float-no-dfp-3.c
  2e0314c2eb8a19080246928d8ac80274  gcc/testsuite/gcc.dg/c2x-float-no-dfp-4.c
  2d19c187230a819591ad1acd5e6861a2  gcc/testsuite/gcc.dg/c2x-has-c-attribute-1.c
! 3540c691b282fc1fa06bce369b6d4527  gcc/testsuite/gcc.dg/c2x-has-c-attribute-2.c
  996b1c79eeba71a3fb4a6d0c6f775bbf  gcc/testsuite/gcc.dg/c2x-has-c-attribute-3.c
  12af672718164067826449dc3d706cfc  gcc/testsuite/gcc.dg/c2x-has-c-attribute-4.c
  e12d838e9ae1c0ef00e7615fccef3476  gcc/testsuite/gcc.dg/c2x-labels-1.c
  885da369c5855d3bcd78e084bf36d154  gcc/testsuite/gcc.dg/c2x-labels-2.c
  0d32e7389b35d1d631d4805cf6be6ec7  gcc/testsuite/gcc.dg/c2x-labels-3.c
+ e2f94f4e7e8ea024edd7729e39052d5d  gcc/testsuite/gcc.dg/c2x-limits-1.c
  9aa46756a285d809fdf673f01df53026  gcc/testsuite/gcc.dg/c2x-no-dfp-1.c
+ 3982c0796c4e52b6e10b9f10a8bf1a01  gcc/testsuite/gcc.dg/c2x-nullptr-1.c
+ 30aa1734384116f6da33645efa2b62cc  gcc/testsuite/gcc.dg/c2x-nullptr-2.c
+ de2a441ec0baa15b08ba7d07933f4d79  gcc/testsuite/gcc.dg/c2x-nullptr-3.c
+ 5ffae81ac1a1b2dc17162f7f7942346d  gcc/testsuite/gcc.dg/c2x-nullptr-4.c
+ af7c619a8e5a06a85cbc69222f75fb03  gcc/testsuite/gcc.dg/c2x-nullptr-5.c
+ d4a86dd1969bdf3b739ba45111a55453  gcc/testsuite/gcc.dg/c2x-nullptr-6.c
  96fb9744f0d87599adaf21898d43a8da  gcc/testsuite/gcc.dg/c2x-old-style-definition-1.c
  142fa04ae5383196024c6e12791b4272  gcc/testsuite/gcc.dg/c2x-old-style-definition-2.c
  765dbbbac0b9c0f4d5fda8adb96ed4f1  gcc/testsuite/gcc.dg/c2x-old-style-definition-3.c
  b4b8a88f7469ab941346f4d6f9cb1e32  gcc/testsuite/gcc.dg/c2x-old-style-definition-4.c
  fec316d2e27f8fe61a00d3fdae1ca5f3  gcc/testsuite/gcc.dg/c2x-old-style-definition-5.c
! 4196349794d4c3e8652285780662b5a3  gcc/testsuite/gcc.dg/c2x-old-style-definition-6.c
  c65227cf031fcfb6cea27f0b13ee542c  gcc/testsuite/gcc.dg/c2x-parm-omit-1.c
  597596705ccebbf3aaa0271c02ad0ee9  gcc/testsuite/gcc.dg/c2x-parm-omit-2.c
  46a1998613654b31cf08003d875762d9  gcc/testsuite/gcc.dg/c2x-parm-omit-3.c
*************** f32ade1ad180ee81c2c0349416e6af4b  gcc/te
*** 36802,36812 ****
  b5e0251d7581115667b0b89d014c5915  gcc/testsuite/gcc.dg/c2x-qual-7.c
  5a0b89a86561a35e1a3f052f805e31a5  gcc/testsuite/gcc.dg/c2x-static-assert-1.c
  b7acfb59773a55aff25adad54de3b253  gcc/testsuite/gcc.dg/c2x-static-assert-2.c
! fa87adf74504500c72e9d9e5a5a7d185  gcc/testsuite/gcc.dg/c2x-unproto-1.c
! 8eccadb2d48ac4262caa832fc12500b7  gcc/testsuite/gcc.dg/c2x-unproto-2.c
  c641ae56954ced84038d41d853a95c30  gcc/testsuite/gcc.dg/c2x-utf8char-1.c
  397c0c1279e1fadf70c464bb612caec1  gcc/testsuite/gcc.dg/c2x-utf8char-2.c
  9eccf342d72be6b4c7523a233760ab3f  gcc/testsuite/gcc.dg/c2x-utf8char-3.c
  0908655191bb29a30d0b1908b3cf088e  gcc/testsuite/gcc.dg/c90-align-1.c
  8caa60cd18ee5b631b7c2b11150305a4  gcc/testsuite/gcc.dg/c90-anon-struct-1.c
  65e495bcc821b0c04c03e8e7c871913c  gcc/testsuite/gcc.dg/c90-array-lval-1.c
--- 39431,39460 ----
  b5e0251d7581115667b0b89d014c5915  gcc/testsuite/gcc.dg/c2x-qual-7.c
  5a0b89a86561a35e1a3f052f805e31a5  gcc/testsuite/gcc.dg/c2x-static-assert-1.c
  b7acfb59773a55aff25adad54de3b253  gcc/testsuite/gcc.dg/c2x-static-assert-2.c
! 7d220a71ca110966289d12682b1e534b  gcc/testsuite/gcc.dg/c2x-static-assert-3.c
! fd5b8875d9c5b758301ecd767dcc337b  gcc/testsuite/gcc.dg/c2x-static-assert-4.c
! 7bbb9a8c264d6041c2b1dcb10d5d52ae  gcc/testsuite/gcc.dg/c2x-stdarg-1.c
! 1755251d6a34282aa37353209424d9a7  gcc/testsuite/gcc.dg/c2x-stdarg-2.c
! d64b1c217a7ff86a28655a02e9e529be  gcc/testsuite/gcc.dg/c2x-stdarg-3.c
! 78b10a6ef5f366fe19dddb53645c6164  gcc/testsuite/gcc.dg/c2x-stdarg-4.c
! 0a6b0716135c3b9cb4314a1a472e8f9a  gcc/testsuite/gcc.dg/c2x-stdarg-5.c
! 9fd0d3006142163b978479626166dc53  gcc/testsuite/gcc.dg/c2x-stdatomic-1.c
! 844e2c18635eae64651dd29bb450d32b  gcc/testsuite/gcc.dg/c2x-stddef-1.c
! 3e744448fc5eec7b85ce5e7eaa4f817f  gcc/testsuite/gcc.dg/c2x-stdint-1.c
! 8b87fbcdf4bb954e6a717b2653f76941  gcc/testsuite/gcc.dg/c2x-thread-local-1.c
! 8b3872c02a6c34786b6fd701128975c5  gcc/testsuite/gcc.dg/c2x-typeof-1.c
! d3ec46e61bd13aae5aa726a969b4c4f8  gcc/testsuite/gcc.dg/c2x-typeof-2.c
! 8c0c949ce4a889b59e0d8633d3e6091b  gcc/testsuite/gcc.dg/c2x-typeof-3.c
! 34f7edac98fd7352e0aa3319771d83f2  gcc/testsuite/gcc.dg/c2x-unproto-1.c
! dee9ba10f0d71d8101c30b3ce19f0977  gcc/testsuite/gcc.dg/c2x-unproto-2.c
! e04b766a459a46fa78d0a8c5bf847ecb  gcc/testsuite/gcc.dg/c2x-unproto-3.c
! 0a0d8a191eaf00fa46e3b3cb63b8117c  gcc/testsuite/gcc.dg/c2x-unproto-4.c
! 95fb3e48f11330d495c2dbf247808444  gcc/testsuite/gcc.dg/c2x-unreachable-1.c
  c641ae56954ced84038d41d853a95c30  gcc/testsuite/gcc.dg/c2x-utf8char-1.c
  397c0c1279e1fadf70c464bb612caec1  gcc/testsuite/gcc.dg/c2x-utf8char-2.c
  9eccf342d72be6b4c7523a233760ab3f  gcc/testsuite/gcc.dg/c2x-utf8char-3.c
+ f028eeb32c486c13c5ed779428a87aa4  gcc/testsuite/gcc.dg/c2x-utf8str-type.c
+ 68bc60a463b32b908266a700527456d8  gcc/testsuite/gcc.dg/c2x-utf8str.c
  0908655191bb29a30d0b1908b3cf088e  gcc/testsuite/gcc.dg/c90-align-1.c
  8caa60cd18ee5b631b7c2b11150305a4  gcc/testsuite/gcc.dg/c90-anon-struct-1.c
  65e495bcc821b0c04c03e8e7c871913c  gcc/testsuite/gcc.dg/c90-array-lval-1.c
*************** ec0ea7a4a37d919a111d18227bfbf85c  gcc/te
*** 36821,36828 ****
--- 39469,39478 ----
  eb67599b3babd964f32070e29a0b64b3  gcc/testsuite/gcc.dg/c90-array-quals.c
  ca4702fe5362c15e603fcf8163476603  gcc/testsuite/gcc.dg/c90-arraydecl-1.c
  bd625f89c30c13d44a25f058b5e576fe  gcc/testsuite/gcc.dg/c90-atomic-1.c
+ 007679cfdb38e6336c6cd19f01623185  gcc/testsuite/gcc.dg/c90-auto-1.c
  75154a2dbba6bcb281fb39f9d576bb08  gcc/testsuite/gcc.dg/c90-complex-1.c
  3724d83680dddcf96724f689959bee91  gcc/testsuite/gcc.dg/c90-complit-1.c
+ 5311602a8e7294679cea90a07236985e  gcc/testsuite/gcc.dg/c90-complit-2.c
  44572329674d37dc562af967e34d6aa9  gcc/testsuite/gcc.dg/c90-const-expr-1.c
  650fc9a34b50bcabf5a98414ca62bd2b  gcc/testsuite/gcc.dg/c90-const-expr-10.c
  32894fa79593617ac1a94e3402e828d8  gcc/testsuite/gcc.dg/c90-const-expr-11.c
*************** e48b04bf4b78be83245611481fa25dd4  gcc/te
*** 36897,36903 ****
  406a5feeb7ccc8af3e1b1b32ef2bf41f  gcc/testsuite/gcc.dg/c99-complex-2.c
  e98f91356cd47c9c21ab37ec6c60cecb  gcc/testsuite/gcc.dg/c99-complex-3.c
  464594168399c7b8d2aaa7fa3684e66a  gcc/testsuite/gcc.dg/c99-complit-1.c
! 598f7c5d2ea3762850881136df876080  gcc/testsuite/gcc.dg/c99-complit-2.c
  3f3859641ef282a76f9d385dc673b78f  gcc/testsuite/gcc.dg/c99-condexpr-1.c
  ba2db177292eaaf55d14598ece867f4d  gcc/testsuite/gcc.dg/c99-const-expr-1.c
  75959a61145abfe0ad77766e727d8815  gcc/testsuite/gcc.dg/c99-const-expr-10.c
--- 39547,39553 ----
  406a5feeb7ccc8af3e1b1b32ef2bf41f  gcc/testsuite/gcc.dg/c99-complex-2.c
  e98f91356cd47c9c21ab37ec6c60cecb  gcc/testsuite/gcc.dg/c99-complex-3.c
  464594168399c7b8d2aaa7fa3684e66a  gcc/testsuite/gcc.dg/c99-complit-1.c
! 8cb3c2e135748027e6b0e165f73f706f  gcc/testsuite/gcc.dg/c99-complit-2.c
  3f3859641ef282a76f9d385dc673b78f  gcc/testsuite/gcc.dg/c99-condexpr-1.c
  ba2db177292eaaf55d14598ece867f4d  gcc/testsuite/gcc.dg/c99-const-expr-1.c
  75959a61145abfe0ad77766e727d8815  gcc/testsuite/gcc.dg/c99-const-expr-10.c
*************** c860222550f269562be7e07154270c46  gcc/te
*** 36989,36994 ****
--- 39639,39647 ----
  7edbbf023f50b286791374498a6a3b29  gcc/testsuite/gcc.dg/c99-tag-1.c
  4ded0fbf4c885a50d6aabe51bc417569  gcc/testsuite/gcc.dg/c99-tag-2.c
  5f7f391e769c6953fb08ffdb542c3481  gcc/testsuite/gcc.dg/c99-tag-3.c
+ 6384d4d786a3c6122f14b4d76526f018  gcc/testsuite/gcc.dg/c99-tag-4.c
+ 85e3f6871ee04aefb8ff9a199ccccb41  gcc/testsuite/gcc.dg/c99-tag-5.c
+ 08cea271f65197d0cf62a2564dc440d9  gcc/testsuite/gcc.dg/c99-tag-6.c
  ef5388bdf970968ead2d9cae65fa30ee  gcc/testsuite/gcc.dg/c99-tgmath-1.c
  8311af5c4fbac249bb77f594f30e70e9  gcc/testsuite/gcc.dg/c99-tgmath-2.c
  00faae5a1ec1401d585225f923b4fef9  gcc/testsuite/gcc.dg/c99-tgmath-3.c
*************** bd34927c7e8ef0637a91744aa30c8e22  gcc/te
*** 37035,37041 ****
  7bcfb1562ffc5ec66175fdcc52054745  gcc/testsuite/gcc.dg/charset/attribute2.c
  d256d028f437be7e103b223e7c20fe96  gcc/testsuite/gcc.dg/charset/builtin1.c
  a00066d47a6f8dc20ebf4861a2541212  gcc/testsuite/gcc.dg/charset/builtin2.c
! e0f8e7afd6458ec3bc591161c6ab8ed1  gcc/testsuite/gcc.dg/charset/charset.exp
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/gcc.dg/charset/extern.c
  5314225894f8ef8a8d8249f4a0973380  gcc/testsuite/gcc.dg/charset/function.c
  a59f9cb8c1327a655a207f133f19d6fb  gcc/testsuite/gcc.dg/charset/string.c
--- 39688,39694 ----
  7bcfb1562ffc5ec66175fdcc52054745  gcc/testsuite/gcc.dg/charset/attribute2.c
  d256d028f437be7e103b223e7c20fe96  gcc/testsuite/gcc.dg/charset/builtin1.c
  a00066d47a6f8dc20ebf4861a2541212  gcc/testsuite/gcc.dg/charset/builtin2.c
! 7fa989c7ba139a20d371ab36fd16a997  gcc/testsuite/gcc.dg/charset/charset.exp
  8c029ca8175e4d8995ea0dbac6040733  gcc/testsuite/gcc.dg/charset/extern.c
  5314225894f8ef8a8d8249f4a0973380  gcc/testsuite/gcc.dg/charset/function.c
  a59f9cb8c1327a655a207f133f19d6fb  gcc/testsuite/gcc.dg/charset/string.c
*************** c7cb5e1831bea1746c3a206e4c26e3ec  gcc/te
*** 37075,37081 ****
  ed52253f6b0d3e0e42d8c7d911691e47  gcc/testsuite/gcc.dg/compare8.c
  e505e91e0c3898015606540b084a3cf3  gcc/testsuite/gcc.dg/compare9.c
  320a670a68ed763f73f02634dc198ac9  gcc/testsuite/gcc.dg/compat/compat-common.h
! a70e25d008273715c9e906a4a5aafc01  gcc/testsuite/gcc.dg/compat/compat.exp
  24894b4e4b3498731affefac610f0a05  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_main.c
  fe9eda5144c4b80c732bde86debf0550  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_x.c
  564c8abb5b6fdd9d796e4c9983416c75  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_y.c
--- 39728,39734 ----
  ed52253f6b0d3e0e42d8c7d911691e47  gcc/testsuite/gcc.dg/compare8.c
  e505e91e0c3898015606540b084a3cf3  gcc/testsuite/gcc.dg/compare9.c
  320a670a68ed763f73f02634dc198ac9  gcc/testsuite/gcc.dg/compat/compat-common.h
! f3c78ae8d82b84026a4189c6346f9a15  gcc/testsuite/gcc.dg/compat/compat.exp
  24894b4e4b3498731affefac610f0a05  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_main.c
  fe9eda5144c4b80c732bde86debf0550  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_x.c
  564c8abb5b6fdd9d796e4c9983416c75  gcc/testsuite/gcc.dg/compat/fnptr-by-value-1_y.c
*************** b13ce33543763e05e497e6e9b0b06afc  gcc/te
*** 37254,37260 ****
  b2ee80d950ef18b6d552d6f80b1ea7ec  gcc/testsuite/gcc.dg/compat/struct-complex-2_main.c
  a03c72d9882332482357735b2b82316a  gcc/testsuite/gcc.dg/compat/struct-complex-2_x.c
  8797a70232b48157299f45876cf6b247  gcc/testsuite/gcc.dg/compat/struct-complex-2_y.c
! 4c3b9b500200c32da01a0e4ce7ae6d7e  gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
  63acee7a9bb7d9a457beb370e4beede2  gcc/testsuite/gcc.dg/compat/struct-layout-1.h
  d628ab6f03137145384ca913f20d6ac3  gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
  997082aeb20119519c8c3e77ee7f6cd1  gcc/testsuite/gcc.dg/compat/struct-layout-1_main.c
--- 39907,39913 ----
  b2ee80d950ef18b6d552d6f80b1ea7ec  gcc/testsuite/gcc.dg/compat/struct-complex-2_main.c
  a03c72d9882332482357735b2b82316a  gcc/testsuite/gcc.dg/compat/struct-complex-2_x.c
  8797a70232b48157299f45876cf6b247  gcc/testsuite/gcc.dg/compat/struct-complex-2_y.c
! dd2b857b930384974307d711b9214c5c  gcc/testsuite/gcc.dg/compat/struct-layout-1.exp
  63acee7a9bb7d9a457beb370e4beede2  gcc/testsuite/gcc.dg/compat/struct-layout-1.h
  d628ab6f03137145384ca913f20d6ac3  gcc/testsuite/gcc.dg/compat/struct-layout-1_generate.c
  997082aeb20119519c8c3e77ee7f6cd1  gcc/testsuite/gcc.dg/compat/struct-layout-1_main.c
*************** c82752836e1d5d6a5f58b9bf26e9abf6  gcc/te
*** 37320,37326 ****
  66b4de358b94a61c9a5ebac5a5372393  gcc/testsuite/gcc.dg/complete-port.c
  d05bdce55447fc39d09a1133e04e88b4  gcc/testsuite/gcc.dg/completion-1.c
  0ecae1a6ee91c5e0f624feb0fe698592  gcc/testsuite/gcc.dg/completion-2.c
! c69c6378c9410227b4af8fe30bcb3f80  gcc/testsuite/gcc.dg/completion-3.c
  45e735b0d33fac192a119347115d5b0c  gcc/testsuite/gcc.dg/completion-4.c
  649ce6d53eeda31c7cb4947fab7ac38f  gcc/testsuite/gcc.dg/completion-5.c
  a86556f4f0c72c0bee2f104440830505  gcc/testsuite/gcc.dg/complex-1.c
--- 39973,39979 ----
  66b4de358b94a61c9a5ebac5a5372393  gcc/testsuite/gcc.dg/complete-port.c
  d05bdce55447fc39d09a1133e04e88b4  gcc/testsuite/gcc.dg/completion-1.c
  0ecae1a6ee91c5e0f624feb0fe698592  gcc/testsuite/gcc.dg/completion-2.c
! 897186ef1eff2a496337a6959d7a5d3d  gcc/testsuite/gcc.dg/completion-3.c
  45e735b0d33fac192a119347115d5b0c  gcc/testsuite/gcc.dg/completion-4.c
  649ce6d53eeda31c7cb4947fab7ac38f  gcc/testsuite/gcc.dg/completion-5.c
  a86556f4f0c72c0bee2f104440830505  gcc/testsuite/gcc.dg/complex-1.c
*************** da2226add6799fd192e2b367404d1b0b  gcc/te
*** 37329,37337 ****
  7cbd734da9d8330b57f4e78af353b9f2  gcc/testsuite/gcc.dg/complex-3.c
  47685f7f7986540a92dac40dcd9edc3f  gcc/testsuite/gcc.dg/complex-4.c
  40fff02642e5e2ead0c4b58bc10042b7  gcc/testsuite/gcc.dg/complex-5.c
! 9de5db7ff7a6ed7515b31df0322b076e  gcc/testsuite/gcc.dg/complex-6.c
! b674b2aeb681aa44d931199aa6db6fd8  gcc/testsuite/gcc.dg/complex-7.c
  e4076ab8b4eaeecdcbb527dfc36e6b0a  gcc/testsuite/gcc.dg/compound-literal-1.c
  0f6847b008a2fc6d389626675248c378  gcc/testsuite/gcc.dg/compound-lvalue-1.c
  1446a4d262092084b79d8f6b2b822154  gcc/testsuite/gcc.dg/concat.c
  b210f7864dc335cf71ab4f5ac69bd153  gcc/testsuite/gcc.dg/concat2.c
--- 39982,39991 ----
  7cbd734da9d8330b57f4e78af353b9f2  gcc/testsuite/gcc.dg/complex-3.c
  47685f7f7986540a92dac40dcd9edc3f  gcc/testsuite/gcc.dg/complex-4.c
  40fff02642e5e2ead0c4b58bc10042b7  gcc/testsuite/gcc.dg/complex-5.c
! c7dc328831cb2f54c434fe280fbc315a  gcc/testsuite/gcc.dg/complex-6.c
! 680764f447f89f563460401a948f1554  gcc/testsuite/gcc.dg/complex-7.c
  e4076ab8b4eaeecdcbb527dfc36e6b0a  gcc/testsuite/gcc.dg/compound-literal-1.c
+ 6f0c2274db9a2a034c64efad43a3d3c4  gcc/testsuite/gcc.dg/compound-literal-cast-lvalue-1.c
  0f6847b008a2fc6d389626675248c378  gcc/testsuite/gcc.dg/compound-lvalue-1.c
  1446a4d262092084b79d8f6b2b822154  gcc/testsuite/gcc.dg/concat.c
  b210f7864dc335cf71ab4f5ac69bd153  gcc/testsuite/gcc.dg/concat2.c
*************** d6fdc59bae27f9e3097840361d13c67a  gcc/te
*** 37405,37411 ****
  342b42bbace19c658aff4b38bba906c3  gcc/testsuite/gcc.dg/cpp/_Pragma7.c
  5d435e2d88987bbe8d9e62951d0d9d04  gcc/testsuite/gcc.dg/cpp/arith-1.c
  55fe1a813facb5ba765d096c8e745fa1  gcc/testsuite/gcc.dg/cpp/arith-3.c
! 9ac932a496455d65e0bbcbb06664aca5  gcc/testsuite/gcc.dg/cpp/assembl2.S
  d2ceecccef1772ada3beff72d6faed3e  gcc/testsuite/gcc.dg/cpp/assembler.S
  9ca3af4c8a508d8e50858641266fef9f  gcc/testsuite/gcc.dg/cpp/assert1.c
  5e115586c68bc98bb44755b93dcf7068  gcc/testsuite/gcc.dg/cpp/assert2.c
--- 40059,40065 ----
  342b42bbace19c658aff4b38bba906c3  gcc/testsuite/gcc.dg/cpp/_Pragma7.c
  5d435e2d88987bbe8d9e62951d0d9d04  gcc/testsuite/gcc.dg/cpp/arith-1.c
  55fe1a813facb5ba765d096c8e745fa1  gcc/testsuite/gcc.dg/cpp/arith-3.c
! 083fb522e201a333315d4482943b501e  gcc/testsuite/gcc.dg/cpp/assembl2.S
  d2ceecccef1772ada3beff72d6faed3e  gcc/testsuite/gcc.dg/cpp/assembler.S
  9ca3af4c8a508d8e50858641266fef9f  gcc/testsuite/gcc.dg/cpp/assert1.c
  5e115586c68bc98bb44755b93dcf7068  gcc/testsuite/gcc.dg/cpp/assert2.c
*************** c7a189aca9e28ef213e587486efddd56  gcc/te
*** 37418,37428 ****
--- 40072,40096 ----
  8f51f2bf3c9792e415bae62650028376  gcc/testsuite/gcc.dg/cpp/builtin-macro-1.c
  37d5a2a32c5264c67c0b77cd9832e868  gcc/testsuite/gcc.dg/cpp/c11-elifdef-1.c
  fcc0ebd873adc208f52d57df24688339  gcc/testsuite/gcc.dg/cpp/c11-scope-1.c
+ 4a111c6234dcf4e8ec0ae015130cc011  gcc/testsuite/gcc.dg/cpp/c11-trigraphs-1.c
+ 10cd08bea3ecf287dbd9876702ff1d3a  gcc/testsuite/gcc.dg/cpp/c11-vararg-1.c
+ 85b21b6c941c4435cf426adb5f101ec9  gcc/testsuite/gcc.dg/cpp/c11-warning-1.c
+ b2f1ef4ea8876c91665f3be9cc7b1928  gcc/testsuite/gcc.dg/cpp/c11-warning-2.c
+ 2cd4ae0c5147b3cf8d03524e12b43f82  gcc/testsuite/gcc.dg/cpp/c11-warning-3.c
+ 084d78e1dcad7fb9fe18a53e093e651e  gcc/testsuite/gcc.dg/cpp/c11-warning-4.c
  51e01528783cda46e99a6baa7fb77e34  gcc/testsuite/gcc.dg/cpp/c17-scope-1.c
  ab8ae4908a134665ec2cb7931aacecf0  gcc/testsuite/gcc.dg/cpp/c2x-elifdef-1.c
  0609335dbd9bb86e934747eee7857d95  gcc/testsuite/gcc.dg/cpp/c2x-elifdef-2.c
  e218b8825a7e74b082a068f31665ad82  gcc/testsuite/gcc.dg/cpp/c2x-scope-1.c
  e3fdf9e6251e4e33e1ffc1261f688a0d  gcc/testsuite/gcc.dg/cpp/c2x-scope-2.c
+ 82c1f40fcf54f140d9867394a58b3761  gcc/testsuite/gcc.dg/cpp/c2x-trigraphs-1.c
+ 17247f488458798b389f619a31362c1b  gcc/testsuite/gcc.dg/cpp/c2x-trigraphs-2.c
+ 81dd4eda66314f350f6a7d4068cdf6be  gcc/testsuite/gcc.dg/cpp/c2x-ucn-1.c
+ 2e105f57816f0624fe2bab18aad364a3  gcc/testsuite/gcc.dg/cpp/c2x-ucnid-1-utf8.c
+ bdce26259e444689681e43839e61b7c3  gcc/testsuite/gcc.dg/cpp/c2x-ucnid-1.c
+ 88bac7ce3edc042f8dee455db6c27fa0  gcc/testsuite/gcc.dg/cpp/c2x-va-opt-1.c
+ 80365c3fd8e9695a5bab4883687833a2  gcc/testsuite/gcc.dg/cpp/c2x-warning-1.c
+ b2fd1d5209d47f460de7a63d1f9e3c14  gcc/testsuite/gcc.dg/cpp/c2x-warning-2.c
  bbda00c98c81c2379844c5d755ee7246  gcc/testsuite/gcc.dg/cpp/c89-pedantic.c
  454bc7f11a8d465fec35fbb6f78621f6  gcc/testsuite/gcc.dg/cpp/c89.c
  84d144adb20df1d5fe899a811b56fca7  gcc/testsuite/gcc.dg/cpp/c90-empty-macro-args.c
*************** d62663c6040cd44ce9ceaef5ef47e6be  gcc/te
*** 37485,37491 ****
  0afc77e6745b381c2db4e3eb47069397  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-8.c
  dc9eac76c9e4283c4325c2a6c902a00b  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-9.c
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
! 0a3ef9da4029805840c2946c0cf273d0  gcc/testsuite/gcc.dg/cpp/cpp.exp
  a4207c77f8d160b9e8cfe0b186630d5a  gcc/testsuite/gcc.dg/cpp/cxxcom1.c
  d77a661fbfed762f6397bfd3581e855e  gcc/testsuite/gcc.dg/cpp/cxxcom2.c
  8af19f954e4c7d8397aa53ac210b124e  gcc/testsuite/gcc.dg/cpp/cxxcom2.h
--- 40153,40159 ----
  0afc77e6745b381c2db4e3eb47069397  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-8.c
  dc9eac76c9e4283c4325c2a6c902a00b  gcc/testsuite/gcc.dg/cpp/cmdlne-dU-9.c
  d698e775932010971513c46f0883bce0  gcc/testsuite/gcc.dg/cpp/counter-1.c
! 1b4b0690b1ae9f0a1f42af29e6f3f7fc  gcc/testsuite/gcc.dg/cpp/cpp.exp
  a4207c77f8d160b9e8cfe0b186630d5a  gcc/testsuite/gcc.dg/cpp/cxxcom1.c
  d77a661fbfed762f6397bfd3581e855e  gcc/testsuite/gcc.dg/cpp/cxxcom2.c
  8af19f954e4c7d8397aa53ac210b124e  gcc/testsuite/gcc.dg/cpp/cxxcom2.h
*************** f7153669da4d8a66133678b8fe4f19f6  gcc/te
*** 37495,37500 ****
--- 40163,40170 ----
  95bf25f005a6456d19b8bb1c3e87a48b  gcc/testsuite/gcc.dg/cpp/defined-Wno-expansion-to-defined.c
  a83181694c7989336a8d88357624bf7d  gcc/testsuite/gcc.dg/cpp/defined-syshdr.c
  56153c2e2789aa5ceca082af3c114b61  gcc/testsuite/gcc.dg/cpp/defined.c
+ 4c632f85d16d53f42b9488ff3c4cf007  gcc/testsuite/gcc.dg/cpp/delimited-escape-seq-1.c
+ bf045943a2d5a26c348f90867fab375a  gcc/testsuite/gcc.dg/cpp/delimited-escape-seq-2.c
  7c767936cfc5aa6d5eb65700ff8f8bcf  gcc/testsuite/gcc.dg/cpp/digraph1.c
  6affb409d38829f180f4436ae9a801e6  gcc/testsuite/gcc.dg/cpp/digraph2.c
  855b7a2dfd829a85c270587471927c38  gcc/testsuite/gcc.dg/cpp/digraphs.c
*************** f63929b880f2dbd68851c905df23edf9  gcc/te
*** 37522,37528 ****
--- 40192,40204 ----
  0ed55dc91c36aa55323e9dc31635730d  gcc/testsuite/gcc.dg/cpp/gnu11-elifdef-3.c
  843c5db890295f75563550551ef75427  gcc/testsuite/gcc.dg/cpp/gnu11-elifdef-4.c
  249f8cef8b8882e23c64416d1b349d1b  gcc/testsuite/gcc.dg/cpp/gnu11-scope-1.c
+ deabf1ff6d845c9f6d39a47b5841deac  gcc/testsuite/gcc.dg/cpp/gnu11-warning-1.c
+ da0f2471196b875c8c78e9bfa81850f8  gcc/testsuite/gcc.dg/cpp/gnu11-warning-2.c
+ 258503aca906db66b5118b49f4df4cb3  gcc/testsuite/gcc.dg/cpp/gnu11-warning-3.c
+ 95d44f2973728b81efec2487fbdd65fb  gcc/testsuite/gcc.dg/cpp/gnu11-warning-4.c
  387a38d01596b5031e131434b9e77173  gcc/testsuite/gcc.dg/cpp/gnu17-scope-1.c
+ acbae8c492281e98e985a5e6dd1a0c4c  gcc/testsuite/gcc.dg/cpp/gnu2x-warning-1.c
+ eaf6729ceb60ba3bfccd2f9514dce056  gcc/testsuite/gcc.dg/cpp/gnu2x-warning-2.c
  a2441b4fd086f33f11e77efdec935c19  gcc/testsuite/gcc.dg/cpp/gnu89-scope-1.c
  afa46c476e52e14bfced96dc51f6c635  gcc/testsuite/gcc.dg/cpp/gnu99-scope-1.c
  6f35c1e2a6a28e958dce46f047684778  gcc/testsuite/gcc.dg/cpp/gnuc89-pedantic.c
*************** d7d87a4e1593e0be917d01567b403633  gcc/te
*** 37648,37653 ****
--- 40324,40331 ----
  e9e7b9fd51bf1a0bc663ce351365c3dc  gcc/testsuite/gcc.dg/cpp/misspelled-directive-2.c
  4cc7ef506bdde2d3409f5373f1c5aa7f  gcc/testsuite/gcc.dg/cpp/multiline-2.c
  15dfb99d710849580a03c8dd833461fe  gcc/testsuite/gcc.dg/cpp/multiline.c
+ 09d52af8f88e977d8d00933ed5a05e9e  gcc/testsuite/gcc.dg/cpp/named-universal-char-escape-1.c
+ 12d13a1648a80586fac966ab409753e8  gcc/testsuite/gcc.dg/cpp/named-universal-char-escape-2.c
  58379c82ef9fbf2b21c3da3373a0d76c  gcc/testsuite/gcc.dg/cpp/normalize-1.c
  39cfd6782178acb25d41749c93ea731d  gcc/testsuite/gcc.dg/cpp/normalize-2.c
  2c41d7d22c19dd9f33f459710dc8a1be  gcc/testsuite/gcc.dg/cpp/normalize-4.c
*************** cd284656aaf570a6f621480512077abd  gcc/te
*** 37708,37713 ****
--- 40386,40397 ----
  b50aa89102a7000c9f6a19cd08edb5b2  gcc/testsuite/gcc.dg/cpp/pr36674.i
  305ae9c95b1a4224816adfdc5af2f157  gcc/testsuite/gcc.dg/cpp/pr43195.c
  b5ad224e236fc4a36c19d3cfb71bb8da  gcc/testsuite/gcc.dg/cpp/pr43195.h
+ d3b98cc4c3ffbf8098e9f964dbf71440  gcc/testsuite/gcc.dg/cpp/pr60014-1.c
+ 8a8b441141218a428dc2187c535f964e  gcc/testsuite/gcc.dg/cpp/pr60014-1.h
+ 5d6f13d2f7ac2fcff5a57558c2f7566e  gcc/testsuite/gcc.dg/cpp/pr60014-2.c
+ fa42a9248770f161cb27fe85a6bbc8c7  gcc/testsuite/gcc.dg/cpp/pr60014-2.h
+ 11b0fa8d42a1925cc5296e2a9a70581e  gcc/testsuite/gcc.dg/cpp/pr60014-3.c
+ d47b6081e98142312bbce6cab28c4168  gcc/testsuite/gcc.dg/cpp/pr60014-3.h
  54fcd6b1971769d85a79a8752e4a5c89  gcc/testsuite/gcc.dg/cpp/pr60570.c
  7839208dbe8970cdd8014e6220c0bd65  gcc/testsuite/gcc.dg/cpp/pr61854-1.c
  3e3935e19d07aa897e96b2fc598d439a  gcc/testsuite/gcc.dg/cpp/pr61854-2.c
*************** b7f8fcb34083c60ccd543167bcebc6f7  gcc/te
*** 37739,37745 ****
  9241d9486090aa8021616b792a43cb0e  gcc/testsuite/gcc.dg/cpp/pragma-2.c
  e5582da61bf791df4e080109c993f646  gcc/testsuite/gcc.dg/cpp/pragma-3.c
  011c5b5ce8c83438720f581b72457bce  gcc/testsuite/gcc.dg/cpp/pragma-diagnostic-1.c
! e82335a43282b870ed13599f391aea3a  gcc/testsuite/gcc.dg/cpp/pragma-diagnostic-2.c
  0b3b9bca9b35763743ac25ae8f2e78b8  gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c
  63a5cc78041db6f5fe01fed974740942  gcc/testsuite/gcc.dg/cpp/pragma-once-1.c
  99bde0eaa7fe7e6d2667a6ac6c349a52  gcc/testsuite/gcc.dg/cpp/pragma-once-1b.h
--- 40423,40429 ----
  9241d9486090aa8021616b792a43cb0e  gcc/testsuite/gcc.dg/cpp/pragma-2.c
  e5582da61bf791df4e080109c993f646  gcc/testsuite/gcc.dg/cpp/pragma-3.c
  011c5b5ce8c83438720f581b72457bce  gcc/testsuite/gcc.dg/cpp/pragma-diagnostic-1.c
! d7ecf03713cde507ba5a481ab2489a6f  gcc/testsuite/gcc.dg/cpp/pragma-diagnostic-2.c
  0b3b9bca9b35763743ac25ae8f2e78b8  gcc/testsuite/gcc.dg/cpp/pragma-float-const-decimal64-1.c
  63a5cc78041db6f5fe01fed974740942  gcc/testsuite/gcc.dg/cpp/pragma-once-1.c
  99bde0eaa7fe7e6d2667a6ac6c349a52  gcc/testsuite/gcc.dg/cpp/pragma-once-1b.h
*************** fb8d966edc2bb4f9de1858ef3f07c225  gcc/te
*** 37865,37871 ****
  c1aa9faf5b39d1bba0aeaa85934f3e1a  gcc/testsuite/gcc.dg/cpp/trad/redef1.c
  d02c582ddc7f3e7e944d26e530487750  gcc/testsuite/gcc.dg/cpp/trad/redef2.c
  98ee20f87a972bda969b7109dd4c69d2  gcc/testsuite/gcc.dg/cpp/trad/strify.c
! ff1061c8f772e71a7c8a53b7c194581d  gcc/testsuite/gcc.dg/cpp/trad/trad.exp
  4934795b44ee5b4d4a100c69ae18a71a  gcc/testsuite/gcc.dg/cpp/trad/uchar.c
  9741e04a76510827749554c1610f8b02  gcc/testsuite/gcc.dg/cpp/trad/xwin1.c
  1cd5384614e3226fa238ee19dd09ecce  gcc/testsuite/gcc.dg/cpp/trigraphs.c
--- 40549,40555 ----
  c1aa9faf5b39d1bba0aeaa85934f3e1a  gcc/testsuite/gcc.dg/cpp/trad/redef1.c
  d02c582ddc7f3e7e944d26e530487750  gcc/testsuite/gcc.dg/cpp/trad/redef2.c
  98ee20f87a972bda969b7109dd4c69d2  gcc/testsuite/gcc.dg/cpp/trad/strify.c
! 432b515be264fe618532933504ba6903  gcc/testsuite/gcc.dg/cpp/trad/trad.exp
  4934795b44ee5b4d4a100c69ae18a71a  gcc/testsuite/gcc.dg/cpp/trad/uchar.c
  9741e04a76510827749554c1610f8b02  gcc/testsuite/gcc.dg/cpp/trad/xwin1.c
  1cd5384614e3226fa238ee19dd09ecce  gcc/testsuite/gcc.dg/cpp/trigraphs.c
*************** ea8e81ccf9b0e8a7d31a02ddf10f3ae7  gcc/te
*** 37952,37964 ****
  dc6685bcab4cd7ed276483fd8d031507  gcc/testsuite/gcc.dg/ctor1.c
  13a7eb422d70031061c88832496b4b3b  gcc/testsuite/gcc.dg/cwsc0.c
  d9dc93acb42ceaf059f158db6f7ea6d2  gcc/testsuite/gcc.dg/cwsc1.c
- 31f68cda2cf50ca6f7c6c4a9cf4545fd  gcc/testsuite/gcc.dg/darwin-20040809-2.c
  fb2cff7f2512c80434d59d702b80e754  gcc/testsuite/gcc.dg/darwin-20040812-1.c
  e3c60516eb9991f352d93d33fde752d3  gcc/testsuite/gcc.dg/darwin-aligned-globals.c
  3010db4d547a5bce8e8559d5cc724330  gcc/testsuite/gcc.dg/darwin-cfstring-1.c
  e43f7a2f13e87638cc08c97ba7326543  gcc/testsuite/gcc.dg/darwin-cfstring-2.c
  c4152191bf290926b6b747aa4397e015  gcc/testsuite/gcc.dg/darwin-cfstring-format-1.c
! 4b9fbc9c27c43751e8b7c93a99afaabc  gcc/testsuite/gcc.dg/darwin-comm-1.c
  7e6cf48347ff53c1f9c509b921aceb22  gcc/testsuite/gcc.dg/darwin-comm.c
  b477cca030ba86435b074a334ee9bfd0  gcc/testsuite/gcc.dg/darwin-ld-1.c
  4ac76811f1a6c80f6dc5191396c37748  gcc/testsuite/gcc.dg/darwin-ld-2.c
--- 40636,40647 ----
  dc6685bcab4cd7ed276483fd8d031507  gcc/testsuite/gcc.dg/ctor1.c
  13a7eb422d70031061c88832496b4b3b  gcc/testsuite/gcc.dg/cwsc0.c
  d9dc93acb42ceaf059f158db6f7ea6d2  gcc/testsuite/gcc.dg/cwsc1.c
  fb2cff7f2512c80434d59d702b80e754  gcc/testsuite/gcc.dg/darwin-20040812-1.c
  e3c60516eb9991f352d93d33fde752d3  gcc/testsuite/gcc.dg/darwin-aligned-globals.c
  3010db4d547a5bce8e8559d5cc724330  gcc/testsuite/gcc.dg/darwin-cfstring-1.c
  e43f7a2f13e87638cc08c97ba7326543  gcc/testsuite/gcc.dg/darwin-cfstring-2.c
  c4152191bf290926b6b747aa4397e015  gcc/testsuite/gcc.dg/darwin-cfstring-format-1.c
! f6fc7e2ea2fa3bb9082daec81d56aeff  gcc/testsuite/gcc.dg/darwin-comm-1.c
  7e6cf48347ff53c1f9c509b921aceb22  gcc/testsuite/gcc.dg/darwin-comm.c
  b477cca030ba86435b074a334ee9bfd0  gcc/testsuite/gcc.dg/darwin-ld-1.c
  4ac76811f1a6c80f6dc5191396c37748  gcc/testsuite/gcc.dg/darwin-ld-2.c
*************** d7ad03b2a6b8077164c037f53a4ee77c  gcc/te
*** 38007,38027 ****
  877845f7aad96a75a507fe303bd070cf  gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c
  c6acea5fc07cc366b37498350830514f  gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c
  8a52dd50e428d9db591c61d1ad91de9a  gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c
! 7481ea021bfd8e9b987c6d51c84b8e04  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-1.c
  a7a6134e3613cad320eef79cddfa7324  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c
  dc1f9d1f305a0bcb31d9c3ca21e0d7a6  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
  09a13f462323e032a306173e42b58069  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c
  c8c07917b8fa88fed0014102030b9ee8  gcc/testsuite/gcc.dg/debug/btf/btf-cvr-quals-1.c
! 88e96eea8e35f64f4c36f032e69e6703  gcc/testsuite/gcc.dg/debug/btf/btf-datasec-1.c
! bd2d30371ec87b3856e9fd61f3bf7d65  gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
  f69c19d70ecf052b9849631cd2c96282  gcc/testsuite/gcc.dg/debug/btf/btf-float-1.c
  12c1b6f565228e7e78809220514ef2f9  gcc/testsuite/gcc.dg/debug/btf/btf-forward-1.c
  822a099318844b46230aaf2fe81d43de  gcc/testsuite/gcc.dg/debug/btf/btf-function-1.c
  de6cbe052990dd17f62f4ac614384063  gcc/testsuite/gcc.dg/debug/btf/btf-function-2.c
! d38879c9e7a9ecd9f8d7ad8294064b75  gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c
! 93f28d03d23acf3ab75cc77e8ac2e00b  gcc/testsuite/gcc.dg/debug/btf/btf-int-1.c
  ec3ef284064bd1373b5bd16fce95e105  gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c
  d88796e35daf5eabf6a8ee3cc6c5e9b7  gcc/testsuite/gcc.dg/debug/btf/btf-pointers-2.c
  149e1772a34f92dbf550628ea67aa0a1  gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c
  8b5304b18e5e95a0e5881320c177bd7c  gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c
  0c417a6cf3aa40a3a251e0e4594bafd2  gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c
--- 40690,40716 ----
  877845f7aad96a75a507fe303bd070cf  gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-struct-1.c
  c6acea5fc07cc366b37498350830514f  gcc/testsuite/gcc.dg/debug/btf/btf-anonymous-union-1.c
  8a52dd50e428d9db591c61d1ad91de9a  gcc/testsuite/gcc.dg/debug/btf/btf-array-1.c
! 0ebc1e42923703f8675ccf5d9a8fdae3  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-1.c
  a7a6134e3613cad320eef79cddfa7324  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-2.c
  dc1f9d1f305a0bcb31d9c3ca21e0d7a6  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-3.c
  09a13f462323e032a306173e42b58069  gcc/testsuite/gcc.dg/debug/btf/btf-bitfields-4.c
  c8c07917b8fa88fed0014102030b9ee8  gcc/testsuite/gcc.dg/debug/btf/btf-cvr-quals-1.c
! bb2706a1f2ad426d6b75d9ee9e890217  gcc/testsuite/gcc.dg/debug/btf/btf-datasec-1.c
! 2d63e6ca83518fcbe2790062c3290854  gcc/testsuite/gcc.dg/debug/btf/btf-datasec-2.c
! 901006c5efe6c5d7f9d37a2ed1bdde2f  gcc/testsuite/gcc.dg/debug/btf/btf-enum-1.c
! 874e09c8f741f9a846f144761bed4efe  gcc/testsuite/gcc.dg/debug/btf/btf-enum64-1.c
  f69c19d70ecf052b9849631cd2c96282  gcc/testsuite/gcc.dg/debug/btf/btf-float-1.c
  12c1b6f565228e7e78809220514ef2f9  gcc/testsuite/gcc.dg/debug/btf/btf-forward-1.c
  822a099318844b46230aaf2fe81d43de  gcc/testsuite/gcc.dg/debug/btf/btf-function-1.c
  de6cbe052990dd17f62f4ac614384063  gcc/testsuite/gcc.dg/debug/btf/btf-function-2.c
! 78dc5beede6c429d3e6b9b63ec4a1eff  gcc/testsuite/gcc.dg/debug/btf/btf-function-3.c
! 3b045e25dc8301e3cd3b175ee4069a67  gcc/testsuite/gcc.dg/debug/btf/btf-function-4.c
! 32ea353626f3c3fb938aa89bc20dfb76  gcc/testsuite/gcc.dg/debug/btf/btf-function-5.c
! ae1cbe7134ca31c9cefeea20243ed3bd  gcc/testsuite/gcc.dg/debug/btf/btf-function-6.c
! 835d989f5a48033f2b7a0677368e22a9  gcc/testsuite/gcc.dg/debug/btf/btf-int-1.c
  ec3ef284064bd1373b5bd16fce95e105  gcc/testsuite/gcc.dg/debug/btf/btf-pointers-1.c
  d88796e35daf5eabf6a8ee3cc6c5e9b7  gcc/testsuite/gcc.dg/debug/btf/btf-pointers-2.c
+ 31cca9bd048ceea2bc54482e0c4b43ce  gcc/testsuite/gcc.dg/debug/btf/btf-pr106773.c
  149e1772a34f92dbf550628ea67aa0a1  gcc/testsuite/gcc.dg/debug/btf/btf-struct-1.c
  8b5304b18e5e95a0e5881320c177bd7c  gcc/testsuite/gcc.dg/debug/btf/btf-struct-2.c
  0c417a6cf3aa40a3a251e0e4594bafd2  gcc/testsuite/gcc.dg/debug/btf/btf-typedef-1.c
*************** d88796e35daf5eabf6a8ee3cc6c5e9b7  gcc/te
*** 38029,38035 ****
  872eb4b63bebb4c8ab8c55d709584370  gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c
  82303111c5592cc51dccc59eb0a20737  gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c
  3fe28c927bc21d0392a705f27a1bedd7  gcc/testsuite/gcc.dg/debug/btf/btf-variables-3.c
! 697c63811eaea2d251f9b65955872603  gcc/testsuite/gcc.dg/debug/btf/btf.exp
  43b79cd3ca67853ae15362a1eb8e3d6a  gcc/testsuite/gcc.dg/debug/const-1.c
  b436f74276be886856059b6d921c0daf  gcc/testsuite/gcc.dg/debug/const-2.c
  17393d7ba43c4bb0cb2f02b8906f09ea  gcc/testsuite/gcc.dg/debug/const-3.c
--- 40718,40726 ----
  872eb4b63bebb4c8ab8c55d709584370  gcc/testsuite/gcc.dg/debug/btf/btf-variables-1.c
  82303111c5592cc51dccc59eb0a20737  gcc/testsuite/gcc.dg/debug/btf/btf-variables-2.c
  3fe28c927bc21d0392a705f27a1bedd7  gcc/testsuite/gcc.dg/debug/btf/btf-variables-3.c
! 198737d371e3f3b460d9af3de3021afc  gcc/testsuite/gcc.dg/debug/btf/btf-variables-4.c
! 54f24ed7c216c0ab89c174fe96c566c4  gcc/testsuite/gcc.dg/debug/btf/btf-variables-5.c
! 8caf513ee175e8164f2c8c14b0744814  gcc/testsuite/gcc.dg/debug/btf/btf.exp
  43b79cd3ca67853ae15362a1eb8e3d6a  gcc/testsuite/gcc.dg/debug/const-1.c
  b436f74276be886856059b6d921c0daf  gcc/testsuite/gcc.dg/debug/const-2.c
  17393d7ba43c4bb0cb2f02b8906f09ea  gcc/testsuite/gcc.dg/debug/const-3.c
*************** f3bfbefc74808effb826ba673d68da20  gcc/te
*** 38049,38055 ****
  d41b96a64d3ca7af1a197f5150af5084  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-2.c
  bdd351306f463f39d05101125d2bd16a  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-3.c
  db0188d69141484062b52438e40ce060  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-4.c
! 9a90b2e137856346b5d4e61b3a8c50a7  gcc/testsuite/gcc.dg/debug/ctf/ctf-complex-1.c
  80a2388c58f3df114d49a2361b291fe4  gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-1.c
  00ac7ee4d3c23da2e40c4deb67169366  gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-2.c
  8b98063e87fd84f837a1ccebd3e08073  gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-3.c
--- 40740,40746 ----
  d41b96a64d3ca7af1a197f5150af5084  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-2.c
  bdd351306f463f39d05101125d2bd16a  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-3.c
  db0188d69141484062b52438e40ce060  gcc/testsuite/gcc.dg/debug/ctf/ctf-bitfields-4.c
! becb843df83e1e41dee2bcdafbe0068b  gcc/testsuite/gcc.dg/debug/ctf/ctf-complex-1.c
  80a2388c58f3df114d49a2361b291fe4  gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-1.c
  00ac7ee4d3c23da2e40c4deb67169366  gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-2.c
  8b98063e87fd84f837a1ccebd3e08073  gcc/testsuite/gcc.dg/debug/ctf/ctf-cvr-quals-3.c
*************** ec2103f2d7a749a23acc0690e8c18f4e  gcc/te
*** 38098,38104 ****
  8cd93c9afbb749f3453147c93d84a731  gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-1.c
  b8f9de531119631c3459a93c1fdfd186  gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-2.c
  e542a430adb55cd8f70ef3fd306d241a  gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-3.c
! 0409a522b29ec36a38ef4805600df99e  gcc/testsuite/gcc.dg/debug/ctf/ctf.exp
  c5ce68d6bc614fe16f32816d6e22ce66  gcc/testsuite/gcc.dg/debug/debug-1.c
  c17982bc9ca8dd7ebe9f41677e7982f9  gcc/testsuite/gcc.dg/debug/debug-2.c
  ea7172af490d3fb85bddeb7037fddc2e  gcc/testsuite/gcc.dg/debug/debug-3.c
--- 40789,40795 ----
  8cd93c9afbb749f3453147c93d84a731  gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-1.c
  b8f9de531119631c3459a93c1fdfd186  gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-2.c
  e542a430adb55cd8f70ef3fd306d241a  gcc/testsuite/gcc.dg/debug/ctf/ctf-variables-3.c
! 93f3e6388296478b4e9b454e917d51a7  gcc/testsuite/gcc.dg/debug/ctf/ctf.exp
  c5ce68d6bc614fe16f32816d6e22ce66  gcc/testsuite/gcc.dg/debug/debug-1.c
  c17982bc9ca8dd7ebe9f41677e7982f9  gcc/testsuite/gcc.dg/debug/debug-2.c
  ea7172af490d3fb85bddeb7037fddc2e  gcc/testsuite/gcc.dg/debug/debug-3.c
*************** ea7172af490d3fb85bddeb7037fddc2e  gcc/te
*** 38106,38112 ****
  16edfbc8489f8d2648184f4d56272f9a  gcc/testsuite/gcc.dg/debug/debug-5.c
  3a93989c56d211b178b4ce1cb7b8db55  gcc/testsuite/gcc.dg/debug/debug-6.c
  92ca009107fd3047af0ed6bffbcf92f2  gcc/testsuite/gcc.dg/debug/debug-7.c
! bb1f061795d3d28c4517c9c69e310e2b  gcc/testsuite/gcc.dg/debug/debug.exp
  900fe69daa3b56214378610d534c3e53  gcc/testsuite/gcc.dg/debug/dwarf2-1.c
  9cf87b67a0fe641563a13455b49c7154  gcc/testsuite/gcc.dg/debug/dwarf2-2.c
  0b09f7a5e1f45f894f8df2a63437e7c8  gcc/testsuite/gcc.dg/debug/dwarf2/align-1.c
--- 40797,40803 ----
  16edfbc8489f8d2648184f4d56272f9a  gcc/testsuite/gcc.dg/debug/debug-5.c
  3a93989c56d211b178b4ce1cb7b8db55  gcc/testsuite/gcc.dg/debug/debug-6.c
  92ca009107fd3047af0ed6bffbcf92f2  gcc/testsuite/gcc.dg/debug/debug-7.c
! 636997bcf1d117d6cc9338e82c0a449d  gcc/testsuite/gcc.dg/debug/debug.exp
  900fe69daa3b56214378610d534c3e53  gcc/testsuite/gcc.dg/debug/dwarf2-1.c
  9cf87b67a0fe641563a13455b49c7154  gcc/testsuite/gcc.dg/debug/dwarf2-2.c
  0b09f7a5e1f45f894f8df2a63437e7c8  gcc/testsuite/gcc.dg/debug/dwarf2/align-1.c
*************** fbe375bf9288bf092b7cef1996c14a1f  gcc/te
*** 38145,38151 ****
  41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
  9e89388c0e1fb3e82696e9c739160c92  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
  eec651e182274afc1200132346cdf1ed  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
! 1636f05124a9ad3cd9fd65e2041e974a  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  59c839cb709f2082c72d622c16f665f4  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
  f7dc86f08b2d23f2ec144956f62a155d  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.h
--- 40836,40842 ----
  41463d28a9bbf97a554feb4c959fed01  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-3.h
  9e89388c0e1fb3e82696e9c739160c92  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro.c
  eec651e182274afc1200132346cdf1ed  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2-macro2.c
! fcb2e54b9188c92a9bdc9d4d4c5dcac6  gcc/testsuite/gcc.dg/debug/dwarf2/dwarf2.exp
  362aa298514051f8a5b0ce8f2e1ee91a  gcc/testsuite/gcc.dg/debug/dwarf2/enum-loc1.c
  59c839cb709f2082c72d622c16f665f4  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.c
  f7dc86f08b2d23f2ec144956f62a155d  gcc/testsuite/gcc.dg/debug/dwarf2/fesd-any.h
*************** ba83948a6c75c4a8d289cf7e3de10226  gcc/te
*** 38236,38242 ****
  9526047e5fa493577621840ae67ba1b7  gcc/testsuite/gcc.dg/debug/pr29609-2.c
  42cb5d94bc96b52f894ae66c95bea7c1  gcc/testsuite/gcc.dg/debug/pr32610.c
  ad3a3845ffb8ece1041fb783c03ddd1e  gcc/testsuite/gcc.dg/debug/pr33316.c
- 0c072557ab3e029013549cbcdd27fd75  gcc/testsuite/gcc.dg/debug/pr35154.c
  7757a3bebc231c1a2ddbe5383e80ba0a  gcc/testsuite/gcc.dg/debug/pr36690-1.c
  85739684f23994651b1f94709500260c  gcc/testsuite/gcc.dg/debug/pr36690-2.c
  478bc40c68312fa9509c382e5769f8fa  gcc/testsuite/gcc.dg/debug/pr36690-3.c
--- 40927,40932 ----
*************** ba7e6f4007944b95dbec857fc6c74794  gcc/te
*** 38325,38338 ****
  bd803fab76b770802d951e70b61c9696  gcc/testsuite/gcc.dg/dfp/Wbad-function-cast-1.c
  d898987e43ad43f22c65725bb92ec24f  gcc/testsuite/gcc.dg/dfp/Wtraditional-conversion-2.c
  8dfa85ff2d4eb5d9335903160b756d39  gcc/testsuite/gcc.dg/dfp/altivec-types.c
! 4a0827303faa43749c8cd640dbe780f2  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
! ddc7d6b63d747557a4e9b308af18f19c  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
! fab5a640c4568914b07985435cbfca57  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
! 20ea9fa0b5844799db130e6b40771a9b  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
! 7f0c08d8929bcff2716ec6dcb11d6d86  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
! 50702f1de618fe90570e4d65bdc7306d  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
! 3df60bf7fc5addda94bde087254e63e5  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
! f0ae4245e06f4788c24978a3b8a12df6  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
  22f3c782df5fe8d1cc2647be9e54ef57  gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
  d52de125edb1b6785a1995c8d138b9f0  gcc/testsuite/gcc.dg/dfp/builtin-snan-2.c
--- 41015,41028 ----
  bd803fab76b770802d951e70b61c9696  gcc/testsuite/gcc.dg/dfp/Wbad-function-cast-1.c
  d898987e43ad43f22c65725bb92ec24f  gcc/testsuite/gcc.dg/dfp/Wtraditional-conversion-2.c
  8dfa85ff2d4eb5d9335903160b756d39  gcc/testsuite/gcc.dg/dfp/altivec-types.c
! 244547f323334eb04c4a6629573ec3d2  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-1.c
! 9f84568882b9d9a2ca76c5aeed15f0eb  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-2.c
! 18ed674f83bf3af82638371713ae8086  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-3.c
! 3045cc7b46e378fa3a515876f1c8d146  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d128-4.c
! 98073b7d3e95d2c6854b3c06a95abcc1  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-1.c
! 3ab13023d147a6d9393fc529e8b0ef58  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d32-2.c
! 191528d2f68e02e2503bf76a097a12ea  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-1.c
! 0006109fba2a454c6ad437f20fa24e2f  gcc/testsuite/gcc.dg/dfp/bid-non-canonical-d64-2.c
  2d5128bddc0d69a547254935ce84b555  gcc/testsuite/gcc.dg/dfp/builtin-complex.c
  22f3c782df5fe8d1cc2647be9e54ef57  gcc/testsuite/gcc.dg/dfp/builtin-snan-1.c
  d52de125edb1b6785a1995c8d138b9f0  gcc/testsuite/gcc.dg/dfp/builtin-snan-2.c
*************** cf8bc786843fa5b2fd0c45ad86131bbb  gcc/te
*** 38345,38350 ****
--- 41035,41042 ----
  cd4c4e5c57b8677aa612ac108325bec1  gcc/testsuite/gcc.dg/dfp/c2x-builtins-dfp-1.c
  4a688fd5a3259df491dcdf1f982185e2  gcc/testsuite/gcc.dg/dfp/c2x-constants-1.c
  efe3f3991a7d9f3ec4e1fa44d8e69924  gcc/testsuite/gcc.dg/dfp/c2x-constants-2.c
+ b275b4908f78e169e44d30e1713b73c6  gcc/testsuite/gcc.dg/dfp/c2x-constexpr-dfp-1.c
+ 83eaf3b93d147a4fbfc458b129e47893  gcc/testsuite/gcc.dg/dfp/c2x-constexpr-dfp-2.c
  7f6ee6a620379941fa2b8e44acc05ecf  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-1.c
  df6bbc8f4a494f18ad1e51f53bcfd58c  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-2.c
  1387cf7a470c6add4d2d07cc5e58d297  gcc/testsuite/gcc.dg/dfp/c2x-float-dfp-3.c
*************** dfe075c7272c802e4c6f44b1a66f1302  gcc/te
*** 38372,38378 ****
  4004acaaacb54ecad2e0c6ee8e8224d5  gcc/testsuite/gcc.dg/dfp/dfp-dbg.h
  b0c002cff8051f24b9c9db05f3062f21  gcc/testsuite/gcc.dg/dfp/dfp-except.h
  aadafbfd9e0540666c99d31e72e91f96  gcc/testsuite/gcc.dg/dfp/dfp-round.h
! cc2f8360da48efc61a3f570b0a8a3895  gcc/testsuite/gcc.dg/dfp/dfp.exp
  0daf957dbef663389abca329acc1d74c  gcc/testsuite/gcc.dg/dfp/fe-binop.c
  dc5f56a82263868da11e7d3a3e80a8c8  gcc/testsuite/gcc.dg/dfp/fe-check.h
  e014b3254e79531d97833550fdb2486d  gcc/testsuite/gcc.dg/dfp/fe-convert-1.c
--- 41064,41070 ----
  4004acaaacb54ecad2e0c6ee8e8224d5  gcc/testsuite/gcc.dg/dfp/dfp-dbg.h
  b0c002cff8051f24b9c9db05f3062f21  gcc/testsuite/gcc.dg/dfp/dfp-except.h
  aadafbfd9e0540666c99d31e72e91f96  gcc/testsuite/gcc.dg/dfp/dfp-round.h
! 5661714a26daec93e549c38c52eec2f2  gcc/testsuite/gcc.dg/dfp/dfp.exp
  0daf957dbef663389abca329acc1d74c  gcc/testsuite/gcc.dg/dfp/fe-binop.c
  dc5f56a82263868da11e7d3a3e80a8c8  gcc/testsuite/gcc.dg/dfp/fe-check.h
  e014b3254e79531d97833550fdb2486d  gcc/testsuite/gcc.dg/dfp/fe-convert-1.c
*************** a0ac850750aaa6f8934dd8d86cad48b3  gcc/te
*** 38387,38392 ****
--- 41079,41085 ----
  440b3f562b43525babe2c96be973d1be  gcc/testsuite/gcc.dg/dfp/operator-bitwise.c
  b6f9108cd4878577de83d43be75185ce  gcc/testsuite/gcc.dg/dfp/pr104510.c
  440b561ad1d9037d4559c7011d636b7a  gcc/testsuite/gcc.dg/dfp/pr104557.c
+ 74ff23770b319829b7487e85a1ed72f6  gcc/testsuite/gcc.dg/dfp/pr108068.c
  d8629eb8e0c765b5a7daa583cb8eedad  gcc/testsuite/gcc.dg/dfp/pr31344.c
  b59fd600db434af135f39c38e21e2d74  gcc/testsuite/gcc.dg/dfp/pr37435.c
  17353eaf91a4f3959fa168324f86f6f5  gcc/testsuite/gcc.dg/dfp/pr41049.c
*************** ef8eb17f7da56bfde3d6840acb400831  gcc/te
*** 38417,38425 ****
  53e450baff1edfc9b3bf82a5a1b2a674  gcc/testsuite/gcc.dg/dfp/warn-abs-2.c
  9190a1b37c2c0dd750746fbca83c728e  gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c
  1d1366a913ab3a21a6dbd1b236fc57a4  gcc/testsuite/gcc.dg/dg-test-1.c
! 202f58718cd65c81333836bce0fc1126  gcc/testsuite/gcc.dg/dg.exp
  f26c27ac11691c96c083fca389b2dbb6  gcc/testsuite/gcc.dg/di-longlong64-sync-1.c
! a7ce88f792a87e99ee9aa3c1a4bf5983  gcc/testsuite/gcc.dg/di-sync-multithread.c
  034e91f8d262e00b27763ec15c59df1d  gcc/testsuite/gcc.dg/diag-aka-1.c
  e2abbf9a555098c950175c13d2f01605  gcc/testsuite/gcc.dg/diag-aka-2.c
  c5d748774fb2199480c81f1cce289faf  gcc/testsuite/gcc.dg/diag-aka-3.c
--- 41110,41118 ----
  53e450baff1edfc9b3bf82a5a1b2a674  gcc/testsuite/gcc.dg/dfp/warn-abs-2.c
  9190a1b37c2c0dd750746fbca83c728e  gcc/testsuite/gcc.dg/dfp/wtr-conversion-1.c
  1d1366a913ab3a21a6dbd1b236fc57a4  gcc/testsuite/gcc.dg/dg-test-1.c
! 302d0c99e4a0f76934358ba63cf66c64  gcc/testsuite/gcc.dg/dg.exp
  f26c27ac11691c96c083fca389b2dbb6  gcc/testsuite/gcc.dg/di-longlong64-sync-1.c
! 219e789dfc5a796c8a7791e531f94157  gcc/testsuite/gcc.dg/di-sync-multithread.c
  034e91f8d262e00b27763ec15c59df1d  gcc/testsuite/gcc.dg/diag-aka-1.c
  e2abbf9a555098c950175c13d2f01605  gcc/testsuite/gcc.dg/diag-aka-2.c
  c5d748774fb2199480c81f1cce289faf  gcc/testsuite/gcc.dg/diag-aka-3.c
*************** c62d15575797919e845abb5fb04433d2  gcc/te
*** 38434,38440 ****
  bad47d238e839b516e66fcd453fbcb94  gcc/testsuite/gcc.dg/diagnostic-range-bad-return.c
  dcc653db3a251c337257e1b52bb808dc  gcc/testsuite/gcc.dg/diagnostic-range-static-assert.c
  1850e51342e1e31dc6cc8847d0bd4192  gcc/testsuite/gcc.dg/diagnostic-ranges-1.c
! 532b50c735d0ca4cdd7c547d51fef8e1  gcc/testsuite/gcc.dg/diagnostic-token-ranges.c
  8305a00f04715c7339ccbe2e819cdcc3  gcc/testsuite/gcc.dg/diagnostic-tree-expr-ranges-2.c
  a1b6f6dc38f81dc434b0af5eb729521a  gcc/testsuite/gcc.dg/diagnostic-types-1.c
  acf65d30040d30d5a4ea7bb09731753b  gcc/testsuite/gcc.dg/div-cmp-1.c
--- 41127,41133 ----
  bad47d238e839b516e66fcd453fbcb94  gcc/testsuite/gcc.dg/diagnostic-range-bad-return.c
  dcc653db3a251c337257e1b52bb808dc  gcc/testsuite/gcc.dg/diagnostic-range-static-assert.c
  1850e51342e1e31dc6cc8847d0bd4192  gcc/testsuite/gcc.dg/diagnostic-ranges-1.c
! bf6fb6db60d824a436f7ab92633f38cc  gcc/testsuite/gcc.dg/diagnostic-token-ranges.c
  8305a00f04715c7339ccbe2e819cdcc3  gcc/testsuite/gcc.dg/diagnostic-tree-expr-ranges-2.c
  a1b6f6dc38f81dc434b0af5eb729521a  gcc/testsuite/gcc.dg/diagnostic-types-1.c
  acf65d30040d30d5a4ea7bb09731753b  gcc/testsuite/gcc.dg/div-cmp-1.c
*************** af315092d026865340052aee7b9849a3  gcc/te
*** 38548,38554 ****
  11f3b667f90a009058a0bbb781d75c33  gcc/testsuite/gcc.dg/fixed-point/convert-sat.c
  17daa5326aad34d453af61740fa3b55b  gcc/testsuite/gcc.dg/fixed-point/convert.h
  4d465f534ba6b0040d0b907de70eb06d  gcc/testsuite/gcc.dg/fixed-point/define.c
! 7617a5fdcc0fcaa48a415301a6f16576  gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
  7172d69a38fc3346148178e2346509cf  gcc/testsuite/gcc.dg/fixed-point/func-array.c
  c71cd62369fd73371bd64d9e9c2653fe  gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
  2b619b6a57d0ac97a39f559544f66909  gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
--- 41241,41247 ----
  11f3b667f90a009058a0bbb781d75c33  gcc/testsuite/gcc.dg/fixed-point/convert-sat.c
  17daa5326aad34d453af61740fa3b55b  gcc/testsuite/gcc.dg/fixed-point/convert.h
  4d465f534ba6b0040d0b907de70eb06d  gcc/testsuite/gcc.dg/fixed-point/define.c
! 7fb3fb63aa899a5b480d9625790d05da  gcc/testsuite/gcc.dg/fixed-point/fixed-point.exp
  7172d69a38fc3346148178e2346509cf  gcc/testsuite/gcc.dg/fixed-point/func-array.c
  c71cd62369fd73371bd64d9e9c2653fe  gcc/testsuite/gcc.dg/fixed-point/func-mixed.c
  2b619b6a57d0ac97a39f559544f66909  gcc/testsuite/gcc.dg/fixed-point/func-scalar.c
*************** f2542628fe46ccc65fd442a53e80df5f  gcc/te
*** 38664,38669 ****
--- 41357,41363 ----
  66ff2dcff0e3fb3f8a572d1cb5e1df62  gcc/testsuite/gcc.dg/fold-convlshift-1.c
  7b2a2b6daa6df9af392a37843c445308  gcc/testsuite/gcc.dg/fold-convlshift-2.c
  05e73cd385c212fa9c76241382d8993b  gcc/testsuite/gcc.dg/fold-convlshift-3.c
+ fbdcee9255eedeb35d6d027b231afa16  gcc/testsuite/gcc.dg/fold-convlshift-4.c
  ee5011d0e6b7fccb87df0fdf4ed4cdaf  gcc/testsuite/gcc.dg/fold-convmaxconv-1.c
  bd0bf08bda1424362307a0339137a72d  gcc/testsuite/gcc.dg/fold-convminconv-1.c
  eaf814577ce35df4d8865fd97a483ccb  gcc/testsuite/gcc.dg/fold-convnotconv-1.c
*************** ecf3e0a507fd9596feac9b2b4403e0c2  gcc/te
*** 38680,38685 ****
--- 41374,41380 ----
  f1489650592f7675e1fc3916f9bec3c3  gcc/testsuite/gcc.dg/fold-eqandshift-1.c
  e1c7fab36a99cc4409e347911757fcfa  gcc/testsuite/gcc.dg/fold-eqandshift-2.c
  50dabcd8afcf8df83d85c612443b1e4d  gcc/testsuite/gcc.dg/fold-eqandshift-3.c
+ dad453048bf4e4127a52aabef687a6ad  gcc/testsuite/gcc.dg/fold-eqandshift-4.c
  bab473e138314f0d96260884a246a76a  gcc/testsuite/gcc.dg/fold-eqbswap-1.c
  84557f0100311fa1251b7bcaad0c8570  gcc/testsuite/gcc.dg/fold-eqcmplx-1.c
  e759253d06936eb8e73cfea6d866573a  gcc/testsuite/gcc.dg/fold-eqrotate-1.c
*************** fd0fed4c372f03e7cb66f4d19c80e7b6  gcc/te
*** 38773,38784 ****
  a5f952800e5755765d6e77745c013e40  gcc/testsuite/gcc.dg/format/builtin-1.c
  440f0dfd53878248bb6deed7cc1fe9e7  gcc/testsuite/gcc.dg/format/c11-dfp-printf-1.c
  f37ed9d19977f59844e9e1bf5f0e85f1  gcc/testsuite/gcc.dg/format/c11-dfp-scanf-1.c
! 3798d8b2bf1e64e819ea105cb32e04f1  gcc/testsuite/gcc.dg/format/c11-printf-1.c
! b6d984f40b96a651e3aa86975d84d743  gcc/testsuite/gcc.dg/format/c11-scanf-1.c
  bb4e836704e1e8c7f70d769f7614db91  gcc/testsuite/gcc.dg/format/c2x-dfp-printf-1.c
  f7fad5f30473b437b8b959bc20f8a12c  gcc/testsuite/gcc.dg/format/c2x-dfp-scanf-1.c
! 34e1fa3b115ea4cce705ccd6ad52c3cc  gcc/testsuite/gcc.dg/format/c2x-printf-1.c
! 929276b2f9336ff510d81744bce2f15f  gcc/testsuite/gcc.dg/format/c2x-scanf-1.c
  c4a2f22ec8cdf76a1d3e0d474153e132  gcc/testsuite/gcc.dg/format/c2x-strftime-1.c
  10e638dd137cfdbd1b51ace231d0c656  gcc/testsuite/gcc.dg/format/c90-printf-1.c
  912996266243b1739f46e4e34a2c13ba  gcc/testsuite/gcc.dg/format/c90-printf-2.c
--- 41468,41479 ----
  a5f952800e5755765d6e77745c013e40  gcc/testsuite/gcc.dg/format/builtin-1.c
  440f0dfd53878248bb6deed7cc1fe9e7  gcc/testsuite/gcc.dg/format/c11-dfp-printf-1.c
  f37ed9d19977f59844e9e1bf5f0e85f1  gcc/testsuite/gcc.dg/format/c11-dfp-scanf-1.c
! ca3f73ee8edbc30e2769e90b285b337a  gcc/testsuite/gcc.dg/format/c11-printf-1.c
! 971f3e2359529c5ee7fff769b26755b7  gcc/testsuite/gcc.dg/format/c11-scanf-1.c
  bb4e836704e1e8c7f70d769f7614db91  gcc/testsuite/gcc.dg/format/c2x-dfp-printf-1.c
  f7fad5f30473b437b8b959bc20f8a12c  gcc/testsuite/gcc.dg/format/c2x-dfp-scanf-1.c
! 4fc1fe3fd459ae784b6bdded460ddb51  gcc/testsuite/gcc.dg/format/c2x-printf-1.c
! 42efea63fe987a2f7de58f6a94fc7f96  gcc/testsuite/gcc.dg/format/c2x-scanf-1.c
  c4a2f22ec8cdf76a1d3e0d474153e132  gcc/testsuite/gcc.dg/format/c2x-strftime-1.c
  10e638dd137cfdbd1b51ace231d0c656  gcc/testsuite/gcc.dg/format/c90-printf-1.c
  912996266243b1739f46e4e34a2c13ba  gcc/testsuite/gcc.dg/format/c90-printf-2.c
*************** d48360a30dc24fbd67e388a9848b02d3  gcc/te
*** 38818,38827 ****
  280e9929affa5c28ecacf01249e7f11b  gcc/testsuite/gcc.dg/format/ext-6.c
  0f2ebefdffa8d565f653d54653327fe8  gcc/testsuite/gcc.dg/format/ext-7.c
  9b01ff037cc666ebab469fea9243a970  gcc/testsuite/gcc.dg/format/ext-8.c
! e120ed80e4ef95c8f395df02759a47a6  gcc/testsuite/gcc.dg/format/ext-9.c
  15bea7790574d1770ac396bfef50a19e  gcc/testsuite/gcc.dg/format/few-1.c
! 44fb23a040b5b3a8dd2bf35865439752  gcc/testsuite/gcc.dg/format/format.exp
! 3c298331a5764a4c3e39e92fb781efd5  gcc/testsuite/gcc.dg/format/format.h
  9511da811944e674f4785ad683fe8226  gcc/testsuite/gcc.dg/format/gcc_diag-1.c
  a484d0f83ec2d309b89e88feec0dd1e8  gcc/testsuite/gcc.dg/format/gcc_diag-10.c
  d2010406824bbf752492c4811ec55836  gcc/testsuite/gcc.dg/format/gcc_diag-11.c
--- 41513,41522 ----
  280e9929affa5c28ecacf01249e7f11b  gcc/testsuite/gcc.dg/format/ext-6.c
  0f2ebefdffa8d565f653d54653327fe8  gcc/testsuite/gcc.dg/format/ext-7.c
  9b01ff037cc666ebab469fea9243a970  gcc/testsuite/gcc.dg/format/ext-8.c
! 42ac21fc83490cb338b263b0eb8ef26c  gcc/testsuite/gcc.dg/format/ext-9.c
  15bea7790574d1770ac396bfef50a19e  gcc/testsuite/gcc.dg/format/few-1.c
! 4acef751ee5ceb91a80383d3537264ac  gcc/testsuite/gcc.dg/format/format.exp
! e2490c0c34db4afed2c43ea8d9b062ec  gcc/testsuite/gcc.dg/format/format.h
  9511da811944e674f4785ad683fe8226  gcc/testsuite/gcc.dg/format/gcc_diag-1.c
  a484d0f83ec2d309b89e88feec0dd1e8  gcc/testsuite/gcc.dg/format/gcc_diag-10.c
  d2010406824bbf752492c4811ec55836  gcc/testsuite/gcc.dg/format/gcc_diag-11.c
*************** b5fc99d5cd488987e446fd40c88fdcde  gcc/te
*** 38930,38936 ****
  29caabda4f0970842bda436e701889de  gcc/testsuite/gcc.dg/format/pr96935.c
  5fad85f6a525ba649eb9b2cc42c89366  gcc/testsuite/gcc.dg/format/proto.c
  8e4de68e496a28c03b2a9a568280143e  gcc/testsuite/gcc.dg/format/sec-1.c
! 2008185e009c72895d5c225da2bf56c3  gcc/testsuite/gcc.dg/format/sentinel-1.c
  9cbef1e5751733a4ccc852045f747a93  gcc/testsuite/gcc.dg/format/strfmon-1.c
  0580b4faa6d69e15b3dbd3564bef3b03  gcc/testsuite/gcc.dg/format/strfmon-2.c
  4e657e701841e398dd65ba221d93dd1d  gcc/testsuite/gcc.dg/format/sys_format.c
--- 41625,41631 ----
  29caabda4f0970842bda436e701889de  gcc/testsuite/gcc.dg/format/pr96935.c
  5fad85f6a525ba649eb9b2cc42c89366  gcc/testsuite/gcc.dg/format/proto.c
  8e4de68e496a28c03b2a9a568280143e  gcc/testsuite/gcc.dg/format/sec-1.c
! e237ed24e55e62c199105f7dfda9c95c  gcc/testsuite/gcc.dg/format/sentinel-1.c
  9cbef1e5751733a4ccc852045f747a93  gcc/testsuite/gcc.dg/format/strfmon-1.c
  0580b4faa6d69e15b3dbd3564bef3b03  gcc/testsuite/gcc.dg/format/strfmon-2.c
  4e657e701841e398dd65ba221d93dd1d  gcc/testsuite/gcc.dg/format/sys_format.c
*************** efdf83d01ddd79162b4664860b902b22  gcc/te
*** 38951,38956 ****
--- 41646,41653 ----
  ab168371521010cab0fb40567190798a  gcc/testsuite/gcc.dg/framework-2.c
  72cddfd9b852c1976438d75d9facbec7  gcc/testsuite/gcc.dg/free-1.c
  b545fd5015b04774ac8c95c87722bfc2  gcc/testsuite/gcc.dg/free-2.c
+ 76411379bc46f8e28491db8515c8b035  gcc/testsuite/gcc.dg/freestanding-main.c
+ 196d33dd29e6d3bd808b05c7472ef1d2  gcc/testsuite/gcc.dg/freestanding-nonint-main.c
  60aef7ab4a0a9bca44f5182276f77cc3  gcc/testsuite/gcc.dg/fshort-wchar.c
  e69d451610be384e22b38ba06231497c  gcc/testsuite/gcc.dg/fstack-protector-strong.c
  e229fba1e745ea8e6ffbf5e48314ecd3  gcc/testsuite/gcc.dg/ftrapv-1.c
*************** e73a81b78ce09634b29ea8c39f657b96  gcc/te
*** 38972,38978 ****
  8a53a31cb6a7ccbc98d66b16851d8053  gcc/testsuite/gcc.dg/fwrapv-1.c
  f9529b0f4fa81996122f55df493f75c2  gcc/testsuite/gcc.dg/fwrapv-2.c
  4c9e8d7d2b6fc94e654e298890d9a70c  gcc/testsuite/gcc.dg/gcc-have-sync-compare-and-swap.c
! bd75d759f542c9a302ac19ae05b7c2d2  gcc/testsuite/gcc.dg/gcov-info-to-gcda.c
  53690c04d2b6818eb846076e47cb5a23  gcc/testsuite/gcc.dg/gimplefe-1.c
  41fdff568f467ca45c859b570a911703  gcc/testsuite/gcc.dg/gimplefe-10.c
  5747e00251d6af0838ac8c8688e696be  gcc/testsuite/gcc.dg/gimplefe-11.c
--- 41669,41675 ----
  8a53a31cb6a7ccbc98d66b16851d8053  gcc/testsuite/gcc.dg/fwrapv-1.c
  f9529b0f4fa81996122f55df493f75c2  gcc/testsuite/gcc.dg/fwrapv-2.c
  4c9e8d7d2b6fc94e654e298890d9a70c  gcc/testsuite/gcc.dg/gcc-have-sync-compare-and-swap.c
! 7da46cabcabc5b6f2ea21e5951ce83b7  gcc/testsuite/gcc.dg/gcov-info-to-gcda.c
  53690c04d2b6818eb846076e47cb5a23  gcc/testsuite/gcc.dg/gimplefe-1.c
  41fdff568f467ca45c859b570a911703  gcc/testsuite/gcc.dg/gimplefe-10.c
  5747e00251d6af0838ac8c8688e696be  gcc/testsuite/gcc.dg/gimplefe-11.c
*************** f5793067d0e01bcfdf92ccab888a0d6d  gcc/te
*** 38992,38998 ****
  9e6ce6f5175c7ff4dff703ea8639c816  gcc/testsuite/gcc.dg/gimplefe-24.c
  4c080d812b9c953204221ceb0912b747  gcc/testsuite/gcc.dg/gimplefe-25.c
  82b92572d98f24bfb0db836b060508e6  gcc/testsuite/gcc.dg/gimplefe-26.c
! 199bf2d727115e50436c0dc0bbb638c9  gcc/testsuite/gcc.dg/gimplefe-27.c
  37417e8d5bc50ff3e8d69e1e61249649  gcc/testsuite/gcc.dg/gimplefe-28.c
  459059a4f033e6fb6a529b083ff73751  gcc/testsuite/gcc.dg/gimplefe-29.c
  166dc9288f662277f0e3a9937decafdc  gcc/testsuite/gcc.dg/gimplefe-3.c
--- 41689,41695 ----
  9e6ce6f5175c7ff4dff703ea8639c816  gcc/testsuite/gcc.dg/gimplefe-24.c
  4c080d812b9c953204221ceb0912b747  gcc/testsuite/gcc.dg/gimplefe-25.c
  82b92572d98f24bfb0db836b060508e6  gcc/testsuite/gcc.dg/gimplefe-26.c
! 18f6514ccd9a729c3802d8eaa77deb2c  gcc/testsuite/gcc.dg/gimplefe-27.c
  37417e8d5bc50ff3e8d69e1e61249649  gcc/testsuite/gcc.dg/gimplefe-28.c
  459059a4f033e6fb6a529b083ff73751  gcc/testsuite/gcc.dg/gimplefe-29.c
  166dc9288f662277f0e3a9937decafdc  gcc/testsuite/gcc.dg/gimplefe-3.c
*************** e6814c98756761f222d943c13ee581ad  gcc/te
*** 39010,39016 ****
  9ddf86d2eb77d21c2e05769b1538d391  gcc/testsuite/gcc.dg/gimplefe-42.c
  34f653039b6a19157b5e6e939514150b  gcc/testsuite/gcc.dg/gimplefe-43.c
  e77515df730caf92aaccc463aedcd8c1  gcc/testsuite/gcc.dg/gimplefe-44.c
! 28822abf98987bb79aad43571bfa5831  gcc/testsuite/gcc.dg/gimplefe-45.c
  2f581daa32c54ac01dfbb700b3c55853  gcc/testsuite/gcc.dg/gimplefe-46.c
  269ae74f2c685731dd2c577870e6f130  gcc/testsuite/gcc.dg/gimplefe-47.c
  42033fd81415a220072769a5adec4eb3  gcc/testsuite/gcc.dg/gimplefe-48.c
--- 41707,41713 ----
  9ddf86d2eb77d21c2e05769b1538d391  gcc/testsuite/gcc.dg/gimplefe-42.c
  34f653039b6a19157b5e6e939514150b  gcc/testsuite/gcc.dg/gimplefe-43.c
  e77515df730caf92aaccc463aedcd8c1  gcc/testsuite/gcc.dg/gimplefe-44.c
! ac4f542243160409b282373a022d7522  gcc/testsuite/gcc.dg/gimplefe-45.c
  2f581daa32c54ac01dfbb700b3c55853  gcc/testsuite/gcc.dg/gimplefe-46.c
  269ae74f2c685731dd2c577870e6f130  gcc/testsuite/gcc.dg/gimplefe-47.c
  42033fd81415a220072769a5adec4eb3  gcc/testsuite/gcc.dg/gimplefe-48.c
*************** e45dbd809432ea3c6911d238fbd0d89e  gcc/te
*** 39026,39031 ****
--- 41723,41729 ----
  f01a8a4d620c24644f7618e21e2f811b  gcc/testsuite/gcc.dg/gimplefe-error-12.c
  d075e1ed2b2fb5d21ab476c50aaaa7d4  gcc/testsuite/gcc.dg/gimplefe-error-13.c
  ab3f4797f7365b2acf6d2c39beef404f  gcc/testsuite/gcc.dg/gimplefe-error-14.c
+ bc09becefd492db7bf633407020cd40e  gcc/testsuite/gcc.dg/gimplefe-error-15.c
  8732eebb459e2274a07edcd677b00f18  gcc/testsuite/gcc.dg/gimplefe-error-2.c
  ada325f0b72d6ab38e2125c5cbc606b4  gcc/testsuite/gcc.dg/gimplefe-error-3.c
  c633216963c8d3e5cf26c00e55663895  gcc/testsuite/gcc.dg/gimplefe-error-4.c
*************** b51074560898490ec9b135be86916e73  gcc/te
*** 39041,39054 ****
--- 41739,41765 ----
  dae93188c3869bbff623a97d9f7b2b08  gcc/testsuite/gcc.dg/gnu-cond-expr-3.c
  78dbc165a91d16e2113b59bde997e8f1  gcc/testsuite/gcc.dg/gnu-predef-1.c
  6210c50f4f4266fc68c146927b33c06f  gcc/testsuite/gcc.dg/gnu11-align-1.c
+ 3a332e39fec6e68a2d4507ccd5c20199  gcc/testsuite/gcc.dg/gnu11-typeof-1.c
+ 2989c9d34c6a51129dd29b1e6cc8a20d  gcc/testsuite/gcc.dg/gnu11-typeof-2.c
  98860983e0e7e6c0e27409a268e0b255  gcc/testsuite/gcc.dg/gnu11-version-1.c
  b5c900b3809745b1829686281a8f8c3d  gcc/testsuite/gcc.dg/gnu2x-attr-syntax-1.c
  3b47f957e2060e6eb318b662c8650133  gcc/testsuite/gcc.dg/gnu2x-attr-syntax-2.c
  4c6c791f75ab6ab99c2baa6eb4f74e12  gcc/testsuite/gcc.dg/gnu2x-attrs-1.c
  5609a59d71f1428da09cb0a534d00501  gcc/testsuite/gcc.dg/gnu2x-attrs-2.c
+ 3273e03ea389c386f25bb18b36d1bde9  gcc/testsuite/gcc.dg/gnu2x-auto-1.c
  16d0b8252a6383741372abb853ecb7db  gcc/testsuite/gcc.dg/gnu2x-builtins-no-dfp-1.c
+ b44f58660fbbce6819b964df23515e43  gcc/testsuite/gcc.dg/gnu2x-complit-1.c
+ ba5b54b4bef7825c1ad698da352baa92  gcc/testsuite/gcc.dg/gnu2x-complit-2.c
+ a81894d0b21046cb6300814038be7cd4  gcc/testsuite/gcc.dg/gnu2x-constexpr-1.c
+ 256654b7f7f354436702eed4b964ecbf  gcc/testsuite/gcc.dg/gnu2x-empty-init-1.c
+ a18fe689cc25fc77916ede8038d9a276  gcc/testsuite/gcc.dg/gnu2x-empty-init-2.c
+ 70cdf2713d6b409f2a7113a99c5878f6  gcc/testsuite/gcc.dg/gnu2x-enum-1.c
  94907bdb647bf450077c89cda2d46da4  gcc/testsuite/gcc.dg/gnu2x-static-assert-1.c
+ b09adffd5083da96008c315088451df5  gcc/testsuite/gcc.dg/gnu2x-stdarg-1.c
+ 88ccd922482fd79aa3a25f402b9ee7f2  gcc/testsuite/gcc.dg/gnu2x-typeof-1.c
  5f81ba18335fad03342353b4e2b93989  gcc/testsuite/gcc.dg/gnu2x-utf8char-1.c
+ dbce43671b8613846e367dea29fdd8bf  gcc/testsuite/gcc.dg/gnu2x-utf8str-type.c
+ 200b2ad962cd3afe8c781cc64c0b6dda  gcc/testsuite/gcc.dg/gnu2x-utf8str.c
  1dba007eb9375f507aea8a8537219f2f  gcc/testsuite/gcc.dg/gnu89-const-expr-1.c
  5f9245bb91ebd059fd2e1a5562ed7ed7  gcc/testsuite/gcc.dg/gnu89-const-expr-2.c
  b2a706a7cbbcb618336ca54df5e8285f  gcc/testsuite/gcc.dg/gnu89-dupqual-1.c
*************** ae8f65ff46d5c742b9d555f0c48fdbe3  gcc/te
*** 39064,39072 ****
  465c3878b47ae66788561ddbec36b439  gcc/testsuite/gcc.dg/gnu99-init-1.c
  21af052ed022fbb55651109aaef9f7e0  gcc/testsuite/gcc.dg/gnu99-init-2.c
  6981df5e05752f9975e927f7aa20f8e0  gcc/testsuite/gcc.dg/gnu99-static-1.c
! b1823dcc4dd19a41aa6d196b8964be53  gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
  e301304e13590c1ce7f775ce00ef95b0  gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
! 6d422c251722d7cc0d57f3e39f03419b  gcc/testsuite/gcc.dg/goacc/goacc.exp
  f1c6a4ba57460443a8ecc12c3bf25d9f  gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
  afb6312838d88aea13a070e21cbe9fb9  gcc/testsuite/gcc.dg/goacc/nested-function-1.c
  28e371856aae0bf30288fd000314f411  gcc/testsuite/gcc.dg/goacc/nested-function-2.c
--- 41775,41783 ----
  465c3878b47ae66788561ddbec36b439  gcc/testsuite/gcc.dg/gnu99-init-1.c
  21af052ed022fbb55651109aaef9f7e0  gcc/testsuite/gcc.dg/gnu99-init-2.c
  6981df5e05752f9975e927f7aa20f8e0  gcc/testsuite/gcc.dg/gnu99-static-1.c
! bfa1dff4adcb294ca1b7852d9432e7a0  gcc/testsuite/gcc.dg/goacc-gomp/goacc-gomp.exp
  e301304e13590c1ce7f775ce00ef95b0  gcc/testsuite/gcc.dg/goacc/acc_on_device-1.c
! 02dda7ae126f758d90a0b48ff2004d31  gcc/testsuite/gcc.dg/goacc/goacc.exp
  f1c6a4ba57460443a8ecc12c3bf25d9f  gcc/testsuite/gcc.dg/goacc/loop-processing-1.c
  afb6312838d88aea13a070e21cbe9fb9  gcc/testsuite/gcc.dg/goacc/nested-function-1.c
  28e371856aae0bf30288fd000314f411  gcc/testsuite/gcc.dg/goacc/nested-function-2.c
*************** b6791d2dc8bbcd1cde186bf6d48381b1  gcc/te
*** 39130,39136 ****
  79682352a0c94e668e3de0e2a7fa1c22  gcc/testsuite/gcc.dg/gomp/block-9.c
  4910624b952a49e6626cc2f12abebbbf  gcc/testsuite/gcc.dg/gomp/cancel-1.c
  5c863da63bc2a44607b745b56d4373e8  gcc/testsuite/gcc.dg/gomp/clause-1.c
! 69b3c6d02d10bc53d283c974ed1e7ec6  gcc/testsuite/gcc.dg/gomp/clause-2.c
  5ac08c2b4cafd06b9d0ecc5295b58bc9  gcc/testsuite/gcc.dg/gomp/collapse-1.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/gomp/combined-1.c
  de16af0b7453b18f17c66d9ef6034bbe  gcc/testsuite/gcc.dg/gomp/complex-1.c
--- 41841,41847 ----
  79682352a0c94e668e3de0e2a7fa1c22  gcc/testsuite/gcc.dg/gomp/block-9.c
  4910624b952a49e6626cc2f12abebbbf  gcc/testsuite/gcc.dg/gomp/cancel-1.c
  5c863da63bc2a44607b745b56d4373e8  gcc/testsuite/gcc.dg/gomp/clause-1.c
! c7d834ccfdd2998d05058b9180e9a6e9  gcc/testsuite/gcc.dg/gomp/clause-2.c
  5ac08c2b4cafd06b9d0ecc5295b58bc9  gcc/testsuite/gcc.dg/gomp/collapse-1.c
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/gomp/combined-1.c
  de16af0b7453b18f17c66d9ef6034bbe  gcc/testsuite/gcc.dg/gomp/complex-1.c
*************** d04c18e8518877b08e0371599b6643ed  gcc/te
*** 39176,39182 ****
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/gcc.dg/gomp/for-7.c
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/gcc.dg/gomp/for-8.c
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/gcc.dg/gomp/for-9.c
! 6fa2dd6359051f45572d90f1e5217339  gcc/testsuite/gcc.dg/gomp/gomp.exp
  f23a4bf5a986b8f5c098e677d3a78a11  gcc/testsuite/gcc.dg/gomp/linear-1.c
  11c71eb5733cf2b2fd8236737c95dfad  gcc/testsuite/gcc.dg/gomp/loop-1.c
  110dfd4b42962d803dd77ce77900455c  gcc/testsuite/gcc.dg/gomp/loop-2.c
--- 41887,41893 ----
  80a82ac0d4faa464e36b67b133df4697  gcc/testsuite/gcc.dg/gomp/for-7.c
  d9604d99f8b1a6974afc5a3cab2765b3  gcc/testsuite/gcc.dg/gomp/for-8.c
  34eb86e893e0bd796aad8d236b5bc215  gcc/testsuite/gcc.dg/gomp/for-9.c
! fd36c6cb702f29f9216e72344061229f  gcc/testsuite/gcc.dg/gomp/gomp.exp
  f23a4bf5a986b8f5c098e677d3a78a11  gcc/testsuite/gcc.dg/gomp/linear-1.c
  11c71eb5733cf2b2fd8236737c95dfad  gcc/testsuite/gcc.dg/gomp/loop-1.c
  110dfd4b42962d803dd77ce77900455c  gcc/testsuite/gcc.dg/gomp/loop-2.c
*************** d7769c446568c18d557180c850cf3b4a  gcc/te
*** 39204,39212 ****
  f711435274df71049aa71808a78fc7a5  gcc/testsuite/gcc.dg/gomp/parallel-3.c
  d9a1f43ca6ac2a073e22bbbf243f300b  gcc/testsuite/gcc.dg/gomp/parallel-4.c
  0f7ac2e81ae2d400d52c34aa1c0b379a  gcc/testsuite/gcc.dg/gomp/pr100508.c
! b366c60601c1c55dbcf45891d864da72  gcc/testsuite/gcc.dg/gomp/pr104517.c
  cd38ec3195ea21395e6d6950ff620410  gcc/testsuite/gcc.dg/gomp/pr104532.c
  0c8d7b49664fa54dbd4054b13e8a3133  gcc/testsuite/gcc.dg/gomp/pr104757.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
  597de3ed24e1bc1c650af918589d83c3  gcc/testsuite/gcc.dg/gomp/pr25989.c
  0bd3e8dc860de61dd8e09229c090e1f5  gcc/testsuite/gcc.dg/gomp/pr25990.c
--- 41915,41924 ----
  f711435274df71049aa71808a78fc7a5  gcc/testsuite/gcc.dg/gomp/parallel-3.c
  d9a1f43ca6ac2a073e22bbbf243f300b  gcc/testsuite/gcc.dg/gomp/parallel-4.c
  0f7ac2e81ae2d400d52c34aa1c0b379a  gcc/testsuite/gcc.dg/gomp/pr100508.c
! 886891c0b0bbb38214a01a9e71882530  gcc/testsuite/gcc.dg/gomp/pr104517.c
  cd38ec3195ea21395e6d6950ff620410  gcc/testsuite/gcc.dg/gomp/pr104532.c
  0c8d7b49664fa54dbd4054b13e8a3133  gcc/testsuite/gcc.dg/gomp/pr104757.c
+ a633f425b4fdde0a7b6f0aa6aa2f2754  gcc/testsuite/gcc.dg/gomp/pr108435.c
  7a163e65fe52b23fc85f2daa18c442ee  gcc/testsuite/gcc.dg/gomp/pr25874.c
  597de3ed24e1bc1c650af918589d83c3  gcc/testsuite/gcc.dg/gomp/pr25989.c
  0bd3e8dc860de61dd8e09229c090e1f5  gcc/testsuite/gcc.dg/gomp/pr25990.c
*************** ad6a9027ae49be1e64cb9dd3311b1b94  gcc/te
*** 39336,39341 ****
--- 42048,42061 ----
  0e4b88bcdaea3e0ec538494446e27cde  gcc/testsuite/gcc.dg/gomp/target-1.c
  3dbda1e12ff1651f658704d415f7e84f  gcc/testsuite/gcc.dg/gomp/target-2.c
  f5d36c4c8c6e9b78f8b507ff3bb8142a  gcc/testsuite/gcc.dg/gomp/target-3.c
+ 75d44dfc9bd2f54678db46f137d93851  gcc/testsuite/gcc.dg/gomp/target-simd-clone-1.c
+ 790750059a6e05605748d80ed13b2533  gcc/testsuite/gcc.dg/gomp/target-simd-clone-2.c
+ 197a8cb4f6ec466d5b1a893b782ca807  gcc/testsuite/gcc.dg/gomp/target-simd-clone-3.c
+ 2001adac7fd0443995c870d016dc942c  gcc/testsuite/gcc.dg/gomp/target-simd-clone-4.c
+ 3fbd6734676ad4d7e53588b62f00ad50  gcc/testsuite/gcc.dg/gomp/target-simd-clone-5.c
+ a7bf6ee9fa703ae99b4686c9b2f89e6a  gcc/testsuite/gcc.dg/gomp/target-simd-clone-6.c
+ 519a7ee0f368b6e5458c6dc8e908c57d  gcc/testsuite/gcc.dg/gomp/target-simd-clone-7.c
+ 4194b833734d9667d0af0a863e2a97a3  gcc/testsuite/gcc.dg/gomp/target-simd-clone-8.c
  f2e9b1993ad0ade2480d28889a6b9b76  gcc/testsuite/gcc.dg/gomp/task-detach-1.c
  4741c3d5f20c56daf5979276c5b6f618  gcc/testsuite/gcc.dg/gomp/taskgroup-1.c
  b98a2bc5c4eb574a9dd2efa360dc67c3  gcc/testsuite/gcc.dg/gomp/teams-1.c
*************** d52311b9c131d936e432ecb0ead28e52  gcc/te
*** 39420,39426 ****
  5e3ef65d649f9a7d1c1d6819a2188844  gcc/testsuite/gcc.dg/graphite/block-pr47654.c
  9c2252f89106b7004be1067a7dbd5b52  gcc/testsuite/gcc.dg/graphite/fuse-1.c
  63d4a7071763336f82d3784cd09338d4  gcc/testsuite/gcc.dg/graphite/fuse-2.c
! fef7050b6b9a7bc6253684bc76b84fdd  gcc/testsuite/gcc.dg/graphite/graphite.exp
  fcc649eff8ed5565979257e4569372a8  gcc/testsuite/gcc.dg/graphite/id-1.c
  09f79b77ac016159bcb104dc023d7b07  gcc/testsuite/gcc.dg/graphite/id-10.c
  3e96948dcff7f34717278e07eb31443a  gcc/testsuite/gcc.dg/graphite/id-11.c
--- 42140,42146 ----
  5e3ef65d649f9a7d1c1d6819a2188844  gcc/testsuite/gcc.dg/graphite/block-pr47654.c
  9c2252f89106b7004be1067a7dbd5b52  gcc/testsuite/gcc.dg/graphite/fuse-1.c
  63d4a7071763336f82d3784cd09338d4  gcc/testsuite/gcc.dg/graphite/fuse-2.c
! c9e7f25131dd64874af616bd6fef9e51  gcc/testsuite/gcc.dg/graphite/graphite.exp
  fcc649eff8ed5565979257e4569372a8  gcc/testsuite/gcc.dg/graphite/id-1.c
  09f79b77ac016159bcb104dc023d7b07  gcc/testsuite/gcc.dg/graphite/id-10.c
  3e96948dcff7f34717278e07eb31443a  gcc/testsuite/gcc.dg/graphite/id-11.c
*************** c0a5902abca3277fb2c3371823c620eb  gcc/te
*** 39490,39495 ****
--- 42210,42216 ----
  340665edfc599e4439f6d33f4c8aea1b  gcc/testsuite/gcc.dg/graphite/isl-ast-gen-single-loop-3.c
  3c869c0dc067ca1fd4ca1e430608eac3  gcc/testsuite/gcc.dg/graphite/isl-ast-gen-user-1.c
  4e23241d90b6472bd3399bd9104dd643  gcc/testsuite/gcc.dg/graphite/isl-ast-op-select.c
+ 48d66d27639d95446c690c4a5d1347ba  gcc/testsuite/gcc.dg/graphite/pr106055.c
  9b9162822adb571b6b648827778dc56a  gcc/testsuite/gcc.dg/graphite/pr18792.c
  2247a3a0f30b24cd4f6afb8a99289230  gcc/testsuite/gcc.dg/graphite/pr19910.c
  93366da6daaa0436c31dfcb03c746093  gcc/testsuite/gcc.dg/graphite/pr20041110-1.c
*************** c9e8998af64165292da0f348d0b87b58  gcc/te
*** 39673,39678 ****
--- 42394,42400 ----
  55925c9dae07abf74f8a3efbc21806b6  gcc/testsuite/gcc.dg/graphite/scop-20.c
  69ad6c6f93ec5b2c4af37d8b2eca6177  gcc/testsuite/gcc.dg/graphite/scop-21.c
  16c46a1e15469b82ce011a240cc853bc  gcc/testsuite/gcc.dg/graphite/scop-22.c
+ d48fcb55dfa2d88b2d266a5a68866f4b  gcc/testsuite/gcc.dg/graphite/scop-22a.c
  b53f45865574ccabd59e1d656437b74c  gcc/testsuite/gcc.dg/graphite/scop-23.c
  9ee27af941ef11d6edd8d2b9cd697a91  gcc/testsuite/gcc.dg/graphite/scop-24.c
  44f99b16a0aa9674919373c67af38463  gcc/testsuite/gcc.dg/graphite/scop-3.c
*************** b9aafcde73d659e8a8f12aec94a7cb09  gcc/te
*** 39706,39712 ****
  46fe10dc7c2a1b21f0d7af66c601ad44  gcc/testsuite/gcc.dg/guality/drap.c
  35524176317603e370c0e34f6d8bd9ae  gcc/testsuite/gcc.dg/guality/example.c
  b585f5364a9c450ecb2e3b12c31813d4  gcc/testsuite/gcc.dg/guality/guality.c
! 6a55e291b85166259225a8d7acf8f3c5  gcc/testsuite/gcc.dg/guality/guality.exp
  8c384d0e247915329d53a586d7639107  gcc/testsuite/gcc.dg/guality/guality.h
  2d9c26760bf9d33b3f102b5e17c22c93  gcc/testsuite/gcc.dg/guality/inline-params-2.c
  3e4b160c43920e148f7c88f96f5b4f0d  gcc/testsuite/gcc.dg/guality/inline-params.c
--- 42428,42434 ----
  46fe10dc7c2a1b21f0d7af66c601ad44  gcc/testsuite/gcc.dg/guality/drap.c
  35524176317603e370c0e34f6d8bd9ae  gcc/testsuite/gcc.dg/guality/example.c
  b585f5364a9c450ecb2e3b12c31813d4  gcc/testsuite/gcc.dg/guality/guality.c
! f732aceb108be95e24919de86abdc86f  gcc/testsuite/gcc.dg/guality/guality.exp
  8c384d0e247915329d53a586d7639107  gcc/testsuite/gcc.dg/guality/guality.h
  2d9c26760bf9d33b3f102b5e17c22c93  gcc/testsuite/gcc.dg/guality/inline-params-2.c
  3e4b160c43920e148f7c88f96f5b4f0d  gcc/testsuite/gcc.dg/guality/inline-params.c
*************** bc96d3d7a369ee1d75a9841b80312226  gcc/te
*** 39718,39728 ****
  4f7560385c9b3bd900cc1de342ed58bc  gcc/testsuite/gcc.dg/guality/param-3.c
  74ce6c60795531920ab0a680e346e657  gcc/testsuite/gcc.dg/guality/param-4.c
  f932e4faa7d538859c699e070447bc01  gcc/testsuite/gcc.dg/guality/param-5.c
  b0deaf43b4029cf429b4a541937eefd0  gcc/testsuite/gcc.dg/guality/pr101905.c
  91c528fa3ca63dee1e35b7c6d02cd258  gcc/testsuite/gcc.dg/guality/pr25967-1.c
  fa9ed629eec13dc2cd77fec24ea82b3c  gcc/testsuite/gcc.dg/guality/pr25967-2.c
  4fe5b7e5b7e0d6b1bda4df1eb9976296  gcc/testsuite/gcc.dg/guality/pr36728-1.c
! 8e17dc11d45d0df604dd9db97a6d6786  gcc/testsuite/gcc.dg/guality/pr36728-2.c
  ebaa7610bcb4b84f2114855d1da9ded1  gcc/testsuite/gcc.dg/guality/pr36728-3.c
  c9e147a33e4a3b229f1f7f7ecf62470e  gcc/testsuite/gcc.dg/guality/pr36728-4.c
  870c69b13f7ce3207d60bfb18ef50dec  gcc/testsuite/gcc.dg/guality/pr36977.c
--- 42440,42451 ----
  4f7560385c9b3bd900cc1de342ed58bc  gcc/testsuite/gcc.dg/guality/param-3.c
  74ce6c60795531920ab0a680e346e657  gcc/testsuite/gcc.dg/guality/param-4.c
  f932e4faa7d538859c699e070447bc01  gcc/testsuite/gcc.dg/guality/param-5.c
+ ecc959f713bd4b7484cbac2f7d3ea518  gcc/testsuite/gcc.dg/guality/param-6.c
  b0deaf43b4029cf429b4a541937eefd0  gcc/testsuite/gcc.dg/guality/pr101905.c
  91c528fa3ca63dee1e35b7c6d02cd258  gcc/testsuite/gcc.dg/guality/pr25967-1.c
  fa9ed629eec13dc2cd77fec24ea82b3c  gcc/testsuite/gcc.dg/guality/pr25967-2.c
  4fe5b7e5b7e0d6b1bda4df1eb9976296  gcc/testsuite/gcc.dg/guality/pr36728-1.c
! 6091c0fae3693f979d62155ed6271ee5  gcc/testsuite/gcc.dg/guality/pr36728-2.c
  ebaa7610bcb4b84f2114855d1da9ded1  gcc/testsuite/gcc.dg/guality/pr36728-3.c
  c9e147a33e4a3b229f1f7f7ecf62470e  gcc/testsuite/gcc.dg/guality/pr36728-4.c
  870c69b13f7ce3207d60bfb18ef50dec  gcc/testsuite/gcc.dg/guality/pr36977.c
*************** f59890b50dc747afab9803faad83af78  gcc/te
*** 39747,39760 ****
  0a8f326039eacf3795df083d59d270e1  gcc/testsuite/gcc.dg/guality/pr48466.c
  67820d262d95458ec0b89cffe57437ec  gcc/testsuite/gcc.dg/guality/pr49888.c
  9e835811e321a45d04341afae4b5d3b0  gcc/testsuite/gcc.dg/guality/pr54200.c
! f9732f3ad196f0166cb59e0c4ab93fc2  gcc/testsuite/gcc.dg/guality/pr54519-1.c
  c3794a4a04d5241ee82db84945cf689a  gcc/testsuite/gcc.dg/guality/pr54519-2.c
! 2be47aa882a60989678f09f07674eb36  gcc/testsuite/gcc.dg/guality/pr54519-3.c
  292fbf7ab8412c8dae773c8eae697d44  gcc/testsuite/gcc.dg/guality/pr54519-4.c
  ecb604a07138737ba579b3cb4d7cd8d0  gcc/testsuite/gcc.dg/guality/pr54519-5.c
  e23b3494be5e35860f18b19c7f5a9186  gcc/testsuite/gcc.dg/guality/pr54519-6.c
  3b698bcedbf976b8fb41e5ed0e6c24d4  gcc/testsuite/gcc.dg/guality/pr54551.c
! dc5f736cdb4818471c24e5e91dda425a  gcc/testsuite/gcc.dg/guality/pr54693-2.c
  a0f519834f82ace4b5906cd4aac0b98e  gcc/testsuite/gcc.dg/guality/pr54693.c
  f6545f32d210f8c908e8b567c811af9c  gcc/testsuite/gcc.dg/guality/pr54796.c
  8daf210b82a9b3508a2b7525e13b3bec  gcc/testsuite/gcc.dg/guality/pr54970.c
--- 42470,42483 ----
  0a8f326039eacf3795df083d59d270e1  gcc/testsuite/gcc.dg/guality/pr48466.c
  67820d262d95458ec0b89cffe57437ec  gcc/testsuite/gcc.dg/guality/pr49888.c
  9e835811e321a45d04341afae4b5d3b0  gcc/testsuite/gcc.dg/guality/pr54200.c
! 29a8ad9d8713423902a0ed900eb00c1b  gcc/testsuite/gcc.dg/guality/pr54519-1.c
  c3794a4a04d5241ee82db84945cf689a  gcc/testsuite/gcc.dg/guality/pr54519-2.c
! 11768e4fb12713bddeeea7bc29c3dfa1  gcc/testsuite/gcc.dg/guality/pr54519-3.c
  292fbf7ab8412c8dae773c8eae697d44  gcc/testsuite/gcc.dg/guality/pr54519-4.c
  ecb604a07138737ba579b3cb4d7cd8d0  gcc/testsuite/gcc.dg/guality/pr54519-5.c
  e23b3494be5e35860f18b19c7f5a9186  gcc/testsuite/gcc.dg/guality/pr54519-6.c
  3b698bcedbf976b8fb41e5ed0e6c24d4  gcc/testsuite/gcc.dg/guality/pr54551.c
! 2c82edfd75085d45f49d3001689ce71d  gcc/testsuite/gcc.dg/guality/pr54693-2.c
  a0f519834f82ace4b5906cd4aac0b98e  gcc/testsuite/gcc.dg/guality/pr54693.c
  f6545f32d210f8c908e8b567c811af9c  gcc/testsuite/gcc.dg/guality/pr54796.c
  8daf210b82a9b3508a2b7525e13b3bec  gcc/testsuite/gcc.dg/guality/pr54970.c
*************** c9c3c711c2fb8ac1a0051b259a2d0a19  gcc/te
*** 39792,39798 ****
  9102efe5e2518fc06add3b4152dbbf46  gcc/testsuite/gcc.dg/guality/prevent-optimization.h
  c0d9571f415055f61c0ecd1bd0b82a7f  gcc/testsuite/gcc.dg/guality/restrict.c
  ed974f3f5302f2126afc51c7c8a44af0  gcc/testsuite/gcc.dg/guality/rotatetest.c
! 65d4a3a66af0611bd48a85e90bba1df7  gcc/testsuite/gcc.dg/guality/sra-1.c
  d355cdc2d7159885b7e76d2bfa1524ae  gcc/testsuite/gcc.dg/guality/vla-1.c
  dbf324da02b522e018f28aa8802538b7  gcc/testsuite/gcc.dg/guality/vla-2.c
  159f05fd30f2600345ae500afd392114  gcc/testsuite/gcc.dg/guality/zero-length-array.c
--- 42515,42521 ----
  9102efe5e2518fc06add3b4152dbbf46  gcc/testsuite/gcc.dg/guality/prevent-optimization.h
  c0d9571f415055f61c0ecd1bd0b82a7f  gcc/testsuite/gcc.dg/guality/restrict.c
  ed974f3f5302f2126afc51c7c8a44af0  gcc/testsuite/gcc.dg/guality/rotatetest.c
! a6afc276cffbeb09e81212a0d98c15e7  gcc/testsuite/gcc.dg/guality/sra-1.c
  d355cdc2d7159885b7e76d2bfa1524ae  gcc/testsuite/gcc.dg/guality/vla-1.c
  dbf324da02b522e018f28aa8802538b7  gcc/testsuite/gcc.dg/guality/vla-2.c
  159f05fd30f2600345ae500afd392114  gcc/testsuite/gcc.dg/guality/zero-length-array.c
*************** beabf14243b2b65800f0733144ef725e  gcc/te
*** 39808,39814 ****
  dc12526b2575b25bbb0263164484aeb3  gcc/testsuite/gcc.dg/hoist-register-pressure-1.c
  0df11bb9dd20d8cf406324e2baa18d83  gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
! a7a1804852ebba092188ebeca22e45e0  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
  f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
  36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
  a5a7f8d29428537e3a2276c6511f420c  gcc/testsuite/gcc.dg/hwasan/nested-functions-2.c
--- 42531,42537 ----
  dc12526b2575b25bbb0263164484aeb3  gcc/testsuite/gcc.dg/hoist-register-pressure-1.c
  0df11bb9dd20d8cf406324e2baa18d83  gcc/testsuite/gcc.dg/hoist-register-pressure-2.c
  dd0c3d86be7753351dad89d50055a01e  gcc/testsuite/gcc.dg/hoist-register-pressure-3.c
! 24f315485be4ac02da1a97de589ad4b6  gcc/testsuite/gcc.dg/hwasan/hwasan.exp
  f20946bfbddc67e74cf619bd02e31549  gcc/testsuite/gcc.dg/hwasan/nested-functions-0.c
  36c11146134a4d86c84c359d41e52a7c  gcc/testsuite/gcc.dg/hwasan/nested-functions-1.c
  a5a7f8d29428537e3a2276c6511f420c  gcc/testsuite/gcc.dg/hwasan/nested-functions-2.c
*************** f46dce055fca6bcb88a60d11a0bb710b  gcc/te
*** 39830,39836 ****
  3fcd24000493dccbffcab8d7f571db16  gcc/testsuite/gcc.dg/ifcvt-1.c
  788cdc139607df186471194c57393d9b  gcc/testsuite/gcc.dg/ifcvt-2.c
  1406d8ef80fc3e9a51abb05637775214  gcc/testsuite/gcc.dg/ifcvt-3.c
! db4dd0756dd28b01407e57f26fae236c  gcc/testsuite/gcc.dg/ifcvt-4.c
  851af7bdf70bdcebc1bbfe12c989a445  gcc/testsuite/gcc.dg/ifcvt-5.c
  18c54e879b05c8aed2d3ad8ec198fe6d  gcc/testsuite/gcc.dg/ifcvt-fabs-1.c
  9a6101d4463140bd764616fe8d813f87  gcc/testsuite/gcc.dg/ifelse-1.c
--- 42553,42559 ----
  3fcd24000493dccbffcab8d7f571db16  gcc/testsuite/gcc.dg/ifcvt-1.c
  788cdc139607df186471194c57393d9b  gcc/testsuite/gcc.dg/ifcvt-2.c
  1406d8ef80fc3e9a51abb05637775214  gcc/testsuite/gcc.dg/ifcvt-3.c
! bf99da5f144bfa2b93ab29914ca6883c  gcc/testsuite/gcc.dg/ifcvt-4.c
  851af7bdf70bdcebc1bbfe12c989a445  gcc/testsuite/gcc.dg/ifcvt-5.c
  18c54e879b05c8aed2d3ad8ec198fe6d  gcc/testsuite/gcc.dg/ifcvt-fabs-1.c
  9a6101d4463140bd764616fe8d813f87  gcc/testsuite/gcc.dg/ifelse-1.c
*************** c686dca1473baeadaf2f166d4c96e4ef  gcc/te
*** 39840,39846 ****
  f77f4e1b3820c0e1099e7438eb895d42  gcc/testsuite/gcc.dg/imag-1.c
  0b9c32da80718012a226452338fe25a6  gcc/testsuite/gcc.dg/incomplete-typedef-1.c
  f56673c5900fb2e39c7f865e95e75d5a  gcc/testsuite/gcc.dg/independent-cloneids-1.c
! 40f334b77ba095bba2fa33655034825f  gcc/testsuite/gcc.dg/init-bad-1.c
  5cad920dfbdb642fa95b968bf1309d8b  gcc/testsuite/gcc.dg/init-bad-2.c
  08719f36ce425d988539aac42fc7c6e9  gcc/testsuite/gcc.dg/init-bad-3.c
  3165455a01709c2ab187d6545d1536bf  gcc/testsuite/gcc.dg/init-bad-4.c
--- 42563,42570 ----
  f77f4e1b3820c0e1099e7438eb895d42  gcc/testsuite/gcc.dg/imag-1.c
  0b9c32da80718012a226452338fe25a6  gcc/testsuite/gcc.dg/incomplete-typedef-1.c
  f56673c5900fb2e39c7f865e95e75d5a  gcc/testsuite/gcc.dg/independent-cloneids-1.c
! 350b6d19c60e3c8fc95fbe1f5c7284db  gcc/testsuite/gcc.dg/infinite-loop.c
! 5ff565b033842cb08cc33ab4ecc12d57  gcc/testsuite/gcc.dg/init-bad-1.c
  5cad920dfbdb642fa95b968bf1309d8b  gcc/testsuite/gcc.dg/init-bad-2.c
  08719f36ce425d988539aac42fc7c6e9  gcc/testsuite/gcc.dg/init-bad-3.c
  3165455a01709c2ab187d6545d1536bf  gcc/testsuite/gcc.dg/init-bad-4.c
*************** f70ded6613ae8c6868fcd8a898089b34  gcc/te
*** 39920,39925 ****
--- 42644,42650 ----
  c98bd8084443af9809a9b85283a91966  gcc/testsuite/gcc.dg/instrument-1.c
  50e20d44cf899b50a377dfbe7b59c8e6  gcc/testsuite/gcc.dg/instrument-2.c
  0d49d6b891baf686b7989dc2f3e27fd4  gcc/testsuite/gcc.dg/instrument-3.c
+ 6077153710c7f48ed85417e157b3a87e  gcc/testsuite/gcc.dg/instrument-4.c
  a481d0a49a4bf2aa98254e8df226bcd5  gcc/testsuite/gcc.dg/intermod-1.c
  22557d653f291c76fc7092fa90747b0a  gcc/testsuite/gcc.dg/intmax_t-1.c
  623aed8859c8d8790d8542fcad873744  gcc/testsuite/gcc.dg/invalid-call-1.c
*************** a05cf460f608576e1ec29c7399d1246e  gcc/te
*** 39936,39942 ****
  43d5c0e314a3292dcc193afd2be619bf  gcc/testsuite/gcc.dg/ipa/iinline-5.c
  c7f0626e05751d9c20b2246acd8fee16  gcc/testsuite/gcc.dg/ipa/iinline-6.c
  9cdfc8f1f86ba8ace89ecfd4d060e448  gcc/testsuite/gcc.dg/ipa/iinline-7.c
! b14ea23e6d9c4b36dadb205d801b1a59  gcc/testsuite/gcc.dg/ipa/iinline-attr.c
  b396e5f65410b5143443d020f227239a  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-1.c
  5c4798c50999146427b6978726ba79ca  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-2.c
  7dd63b0614a8121704ba4953d8c90e49  gcc/testsuite/gcc.dg/ipa/inline-1.c
--- 42661,42667 ----
  43d5c0e314a3292dcc193afd2be619bf  gcc/testsuite/gcc.dg/ipa/iinline-5.c
  c7f0626e05751d9c20b2246acd8fee16  gcc/testsuite/gcc.dg/ipa/iinline-6.c
  9cdfc8f1f86ba8ace89ecfd4d060e448  gcc/testsuite/gcc.dg/ipa/iinline-7.c
! f46b592a81a9f58646c56f40d5705a05  gcc/testsuite/gcc.dg/ipa/iinline-attr.c
  b396e5f65410b5143443d020f227239a  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-1.c
  5c4798c50999146427b6978726ba79ca  gcc/testsuite/gcc.dg/ipa/iinline-cstagg-2.c
  7dd63b0614a8121704ba4953d8c90e49  gcc/testsuite/gcc.dg/ipa/inline-1.c
*************** c67f7d13d068efa64db24e8e8dc7a1f8  gcc/te
*** 39954,39959 ****
--- 42679,42685 ----
  986d05677bd9d6899662c3d7abcc4d90  gcc/testsuite/gcc.dg/ipa/inlinehint-3.c
  3fe0cc741bbd830988843edbaa8a886e  gcc/testsuite/gcc.dg/ipa/inlinehint-4.c
  037953f5f515da9d85b0c8966cc8f034  gcc/testsuite/gcc.dg/ipa/inlinehint-5.c
+ 724b4496d87d462ef747f0997c04fab1  gcc/testsuite/gcc.dg/ipa/inlinehint-6.c
  72c8782c7fb325d74ad9370287eb440f  gcc/testsuite/gcc.dg/ipa/ipa-1.c
  459cdd64eb0d00fa2c0c66393f340c61  gcc/testsuite/gcc.dg/ipa/ipa-2.c
  6b1b99d9576860b04d3ff15be4c0aff2  gcc/testsuite/gcc.dg/ipa/ipa-3.c
*************** aecb4d443c0e36e7aeae05f1c05bb7e7  gcc/te
*** 40044,40057 ****
  c4dcb24e809d2cb67d92a9c144ae1d96  gcc/testsuite/gcc.dg/ipa/ipa-sra-22.c
  b1d7fcbd12e91e9264c24f15d1e11b27  gcc/testsuite/gcc.dg/ipa/ipa-sra-23.c
  793244d49a25620244973c2b526e0833  gcc/testsuite/gcc.dg/ipa/ipa-sra-24.c
  97395f127f5222283afef7a146b9bb7c  gcc/testsuite/gcc.dg/ipa/ipa-sra-3.c
  8f778cd0ed59258e5860e55940de2881  gcc/testsuite/gcc.dg/ipa/ipa-sra-4.c
  6ef7d3bb5d644ec45ca8db604c29cbb0  gcc/testsuite/gcc.dg/ipa/ipa-sra-5.c
  f389ed7606a4bab674d66dc4dcbd5533  gcc/testsuite/gcc.dg/ipa/ipa-sra-7.c
  a150c8ee6054d4be6013ea5d81d3f7d8  gcc/testsuite/gcc.dg/ipa/ipa-sra-8.c
  bb00c0c2b31f210548ae62b1328be368  gcc/testsuite/gcc.dg/ipa/ipa-sra-9.c
  fb762aeae2f1c2476ca0c285f1bf9a37  gcc/testsuite/gcc.dg/ipa/ipa-sra-ret-nonull.c
! 3c5d76aa98d76baf5396765a738c59bf  gcc/testsuite/gcc.dg/ipa/ipa.exp
  be5489532ad8117e567e1ea5c8ad4b6a  gcc/testsuite/gcc.dg/ipa/ipacost-1.c
  a1e98f91fdb742af3e542b201d095fcd  gcc/testsuite/gcc.dg/ipa/ipacost-2.c
  cec9083b7567e1f82d50440e7631e86f  gcc/testsuite/gcc.dg/ipa/ipcp-1.c
--- 42770,42790 ----
  c4dcb24e809d2cb67d92a9c144ae1d96  gcc/testsuite/gcc.dg/ipa/ipa-sra-22.c
  b1d7fcbd12e91e9264c24f15d1e11b27  gcc/testsuite/gcc.dg/ipa/ipa-sra-23.c
  793244d49a25620244973c2b526e0833  gcc/testsuite/gcc.dg/ipa/ipa-sra-24.c
+ 809f71d724b3e623355612a8d0c66c93  gcc/testsuite/gcc.dg/ipa/ipa-sra-25.c
+ 392e07794954e94e2536ddeb0c8e61ae  gcc/testsuite/gcc.dg/ipa/ipa-sra-26.c
+ c4697d04b552316912df01412ff9eab9  gcc/testsuite/gcc.dg/ipa/ipa-sra-27.c
+ 15dbdc8e6727e9fc0f867627af20931e  gcc/testsuite/gcc.dg/ipa/ipa-sra-28.c
+ 52406bbe0118dd656afd85075870fb1c  gcc/testsuite/gcc.dg/ipa/ipa-sra-29.c
  97395f127f5222283afef7a146b9bb7c  gcc/testsuite/gcc.dg/ipa/ipa-sra-3.c
+ 024df9535f9a738beafd35d5a95bdc86  gcc/testsuite/gcc.dg/ipa/ipa-sra-30.c
+ ec1f5ae82072d277b96b8260ff2f93b1  gcc/testsuite/gcc.dg/ipa/ipa-sra-31.c
  8f778cd0ed59258e5860e55940de2881  gcc/testsuite/gcc.dg/ipa/ipa-sra-4.c
  6ef7d3bb5d644ec45ca8db604c29cbb0  gcc/testsuite/gcc.dg/ipa/ipa-sra-5.c
  f389ed7606a4bab674d66dc4dcbd5533  gcc/testsuite/gcc.dg/ipa/ipa-sra-7.c
  a150c8ee6054d4be6013ea5d81d3f7d8  gcc/testsuite/gcc.dg/ipa/ipa-sra-8.c
  bb00c0c2b31f210548ae62b1328be368  gcc/testsuite/gcc.dg/ipa/ipa-sra-9.c
  fb762aeae2f1c2476ca0c285f1bf9a37  gcc/testsuite/gcc.dg/ipa/ipa-sra-ret-nonull.c
! 48a211c8c5b330860be46e6f9c4f244e  gcc/testsuite/gcc.dg/ipa/ipa.exp
  be5489532ad8117e567e1ea5c8ad4b6a  gcc/testsuite/gcc.dg/ipa/ipacost-1.c
  a1e98f91fdb742af3e542b201d095fcd  gcc/testsuite/gcc.dg/ipa/ipacost-2.c
  cec9083b7567e1f82d50440e7631e86f  gcc/testsuite/gcc.dg/ipa/ipcp-1.c
*************** cec9083b7567e1f82d50440e7631e86f  gcc/te
*** 40061,40067 ****
  1d6188a3ce8385221389a004eb653357  gcc/testsuite/gcc.dg/ipa/ipcp-5.c
  869bd19c205f2ccf580f8b640709d232  gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
  e43488a98150e7c008bf0103c8e4ce76  gcc/testsuite/gcc.dg/ipa/ipcp-agg-10.c
! d20bf3284a3d9c0d5d1c8fdb45a22923  gcc/testsuite/gcc.dg/ipa/ipcp-agg-11.c
  f130caee5e1d8d48e06a1ae3dd7dc477  gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c
  3082a67a035dc63460c6f4a03a24bd9c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-13.c
  c71233f7e2ddb4a8889ca1fe57ea62cc  gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
--- 42794,42800 ----
  1d6188a3ce8385221389a004eb653357  gcc/testsuite/gcc.dg/ipa/ipcp-5.c
  869bd19c205f2ccf580f8b640709d232  gcc/testsuite/gcc.dg/ipa/ipcp-agg-1.c
  e43488a98150e7c008bf0103c8e4ce76  gcc/testsuite/gcc.dg/ipa/ipcp-agg-10.c
! 69e429cd0f09966a98176cdd47d10f33  gcc/testsuite/gcc.dg/ipa/ipcp-agg-11.c
  f130caee5e1d8d48e06a1ae3dd7dc477  gcc/testsuite/gcc.dg/ipa/ipcp-agg-12.c
  3082a67a035dc63460c6f4a03a24bd9c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-13.c
  c71233f7e2ddb4a8889ca1fe57ea62cc  gcc/testsuite/gcc.dg/ipa/ipcp-agg-2.c
*************** b30637ee2dfddd2f33e1f6f41de2efa3  gcc/te
*** 40070,40076 ****
  23c0de326784817a77ed7245787492c2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-5.c
  30e84204197f772ab1add837d69909e2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-6.c
  3cbca90b547c38415ee1ca57ae01192c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
! 91320abdfc34905d8b7cfdc7ff425a61  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  92494975f86350b030e5c00f76095aa8  gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
  24a9ebe968c2d5aad84520657228eb49  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c
  504899d6e8adecbea2a964feab263d64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c
--- 42803,42809 ----
  23c0de326784817a77ed7245787492c2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-5.c
  30e84204197f772ab1add837d69909e2  gcc/testsuite/gcc.dg/ipa/ipcp-agg-6.c
  3cbca90b547c38415ee1ca57ae01192c  gcc/testsuite/gcc.dg/ipa/ipcp-agg-7.c
! 0afe2a5faa6c65c05824d4ff42bb549b  gcc/testsuite/gcc.dg/ipa/ipcp-agg-8.c
  92494975f86350b030e5c00f76095aa8  gcc/testsuite/gcc.dg/ipa/ipcp-agg-9.c
  24a9ebe968c2d5aad84520657228eb49  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-1.c
  504899d6e8adecbea2a964feab263d64  gcc/testsuite/gcc.dg/ipa/ipcp-cstagg-2.c
*************** e9a270cc0fe29965bd5d3f98375ad921  gcc/te
*** 40102,40107 ****
--- 42835,42845 ----
  99587579302ee66a706ecb63eca8d73f  gcc/testsuite/gcc.dg/ipa/pr105160.c
  e261240fcc7035cd8398f9cbecd10a00  gcc/testsuite/gcc.dg/ipa/pr105639.c
  d6d366e61e9493a8fc9ad14a2e6f9ba4  gcc/testsuite/gcc.dg/ipa/pr105739.c
+ e53f73d24fa35ba6817e4a5b5d5e4d33  gcc/testsuite/gcc.dg/ipa/pr107640-2.c
+ 265ca89bf18d64d019ff7d75ea03f0b7  gcc/testsuite/gcc.dg/ipa/pr108384.c
+ a613ec3a747f862a332859659437e61a  gcc/testsuite/gcc.dg/ipa/pr108679.c
+ ec56d4020da1007033149a15637c5de4  gcc/testsuite/gcc.dg/ipa/pr108959.c
+ cf4edb1ce9b073657fc6da0e1310515b  gcc/testsuite/gcc.dg/ipa/pr109318.c
  40bd41302666d56c4edf7330db97920e  gcc/testsuite/gcc.dg/ipa/pr42706.c
  e4887053c792f4f78b03804c148839ce  gcc/testsuite/gcc.dg/ipa/pr45644.c
  6e1b4f2c5d0c0d768778da8e3b7df828  gcc/testsuite/gcc.dg/ipa/pr48195.c
*************** eddfda4ba6e5db900b697d68f6dc4f54  gcc/te
*** 40133,40139 ****
  8a5bcf790b3a7e92c83518ad5f38f586  gcc/testsuite/gcc.dg/ipa/pr70306.c
  d7c1d9b981bf01c33fdef55aa1f7d528  gcc/testsuite/gcc.dg/ipa/pr70646.c
  9b41a13a82881dc459bf71f6d78e8b4c  gcc/testsuite/gcc.dg/ipa/pr71981.c
! bbaa5d3e8b0128ee66d273ed4e1fc5aa  gcc/testsuite/gcc.dg/ipa/pr77653.c
  6c0d1235242158b8fda56254328d3d8f  gcc/testsuite/gcc.dg/ipa/pr78121.c
  fa8ddbcc7285d68bc45e806fa10c5aa5  gcc/testsuite/gcc.dg/ipa/pr80104.c
  a55e76e0d9a9ab759aa659b874d72f39  gcc/testsuite/gcc.dg/ipa/pr81520.c
--- 42871,42877 ----
  8a5bcf790b3a7e92c83518ad5f38f586  gcc/testsuite/gcc.dg/ipa/pr70306.c
  d7c1d9b981bf01c33fdef55aa1f7d528  gcc/testsuite/gcc.dg/ipa/pr70646.c
  9b41a13a82881dc459bf71f6d78e8b4c  gcc/testsuite/gcc.dg/ipa/pr71981.c
! c188e02f6048255b4701a0567717ba31  gcc/testsuite/gcc.dg/ipa/pr77653.c
  6c0d1235242158b8fda56254328d3d8f  gcc/testsuite/gcc.dg/ipa/pr78121.c
  fa8ddbcc7285d68bc45e806fa10c5aa5  gcc/testsuite/gcc.dg/ipa/pr80104.c
  a55e76e0d9a9ab759aa659b874d72f39  gcc/testsuite/gcc.dg/ipa/pr81520.c
*************** bfd19a33e270e728ac128981bbc58f6d  gcc/te
*** 40147,40153 ****
  4d2a385eed9a0157f2820e93f227f411  gcc/testsuite/gcc.dg/ipa/pr88214.c
  722161cd45054e7141436121f8d7998f  gcc/testsuite/gcc.dg/ipa/pr88985.c
  12c23181ba2da312583b830fc6392ad3  gcc/testsuite/gcc.dg/ipa/pr90555.c
! da3f79eb7db9e09d21b9102b8078d83c  gcc/testsuite/gcc.dg/ipa/pr91088.c
  51d419af24e1c36f61ecab348e06a07a  gcc/testsuite/gcc.dg/ipa/pr91089.c
  43bcde3d47cbbc50a0b5af735557b1a5  gcc/testsuite/gcc.dg/ipa/pr91832.c
  2b42c5b979097f2aa72e75bd29f4248d  gcc/testsuite/gcc.dg/ipa/pr91853.c
--- 42885,42891 ----
  4d2a385eed9a0157f2820e93f227f411  gcc/testsuite/gcc.dg/ipa/pr88214.c
  722161cd45054e7141436121f8d7998f  gcc/testsuite/gcc.dg/ipa/pr88985.c
  12c23181ba2da312583b830fc6392ad3  gcc/testsuite/gcc.dg/ipa/pr90555.c
! 6765cdf08e7f3ce008f2e3a8558a156d  gcc/testsuite/gcc.dg/ipa/pr91088.c
  51d419af24e1c36f61ecab348e06a07a  gcc/testsuite/gcc.dg/ipa/pr91089.c
  43bcde3d47cbbc50a0b5af735557b1a5  gcc/testsuite/gcc.dg/ipa/pr91832.c
  2b42c5b979097f2aa72e75bd29f4248d  gcc/testsuite/gcc.dg/ipa/pr91853.c
*************** fcc7dce8774036ba93e1fe9211b4421d  gcc/te
*** 40188,40194 ****
  4adb6e96b3bcb4dd3ecb1702ca5258d2  gcc/testsuite/gcc.dg/ipa/remref-5.c
  2f98d70b4613eb7789fd16ce01458a0a  gcc/testsuite/gcc.dg/ipa/remref-6.c
  a4676419cc3a331d3b9012027515cd35  gcc/testsuite/gcc.dg/ipa/remref-7.c
! a3830a9933b209d3afe2e2abf3c4f86c  gcc/testsuite/gcc.dg/ipa/symver1.c
  dc629ef9342acd1db93ed124df2cb8ca  gcc/testsuite/gcc.dg/ipa/vrp1.c
  7528bdadffdc3cc715527935504b1e45  gcc/testsuite/gcc.dg/ipa/vrp2.c
  4b601248e5b7991bdcf988b06b4a5e1c  gcc/testsuite/gcc.dg/ipa/vrp3.c
--- 42926,42932 ----
  4adb6e96b3bcb4dd3ecb1702ca5258d2  gcc/testsuite/gcc.dg/ipa/remref-5.c
  2f98d70b4613eb7789fd16ce01458a0a  gcc/testsuite/gcc.dg/ipa/remref-6.c
  a4676419cc3a331d3b9012027515cd35  gcc/testsuite/gcc.dg/ipa/remref-7.c
! 930b7aab3d43c8aa2dca624660702723  gcc/testsuite/gcc.dg/ipa/symver1.c
  dc629ef9342acd1db93ed124df2cb8ca  gcc/testsuite/gcc.dg/ipa/vrp1.c
  7528bdadffdc3cc715527935504b1e45  gcc/testsuite/gcc.dg/ipa/vrp2.c
  4b601248e5b7991bdcf988b06b4a5e1c  gcc/testsuite/gcc.dg/ipa/vrp3.c
*************** a1511014730573ca08fa055a4f00aa75  gcc/te
*** 40217,40232 ****
  d0bcca2e1a0a2193680083619c7cffab  gcc/testsuite/gcc.dg/limits-width-1.c
  e413f0f7240a3d4dd2c99035203b33f4  gcc/testsuite/gcc.dg/limits-width-2.c
  7cbf042d875b063388beeee95141e92b  gcc/testsuite/gcc.dg/live-patching-1.c
! b96df03c34f20761b8a66808dfc63a63  gcc/testsuite/gcc.dg/live-patching-2.c
  5832d6d09db6f71495d0171b2f941e50  gcc/testsuite/gcc.dg/live-patching-3.c
  619b58721598a979e2fb6ffb5a4b8a4a  gcc/testsuite/gcc.dg/live-patching-4.c
  209fdf5744b573204a2de0155546afc5  gcc/testsuite/gcc.dg/local1.c
  8c594498180fabb74acf611568d4f67e  gcc/testsuite/gcc.dg/localalias-2.c
  ee0c3ba150290bda1153f3076c3303b4  gcc/testsuite/gcc.dg/localalias.c
  0719df2af362b74f64d07659e78dbc9d  gcc/testsuite/gcc.dg/long-long-compare-1.c
  ffe4d747ae708d9b7c4aa0999dc0837a  gcc/testsuite/gcc.dg/long-long-cst1.c
  2fc326204806db0bd76fbba4686929cd  gcc/testsuite/gcc.dg/long-long-typespec-1.c
! 3080ba7dc90699afef066c4c168a0d51  gcc/testsuite/gcc.dg/long_branch.c
  bf870f767c6be672a0cfc990dd97f936  gcc/testsuite/gcc.dg/loop-1.c
  6b5237c8148a38f20728981213824d52  gcc/testsuite/gcc.dg/loop-2.c
  0a9033ecae87ae0e54d2b003958a08a2  gcc/testsuite/gcc.dg/loop-3.c
--- 42955,42971 ----
  d0bcca2e1a0a2193680083619c7cffab  gcc/testsuite/gcc.dg/limits-width-1.c
  e413f0f7240a3d4dd2c99035203b33f4  gcc/testsuite/gcc.dg/limits-width-2.c
  7cbf042d875b063388beeee95141e92b  gcc/testsuite/gcc.dg/live-patching-1.c
! 94f2b5084b2cc34273650b4de59a5e2e  gcc/testsuite/gcc.dg/live-patching-2.c
  5832d6d09db6f71495d0171b2f941e50  gcc/testsuite/gcc.dg/live-patching-3.c
  619b58721598a979e2fb6ffb5a4b8a4a  gcc/testsuite/gcc.dg/live-patching-4.c
+ a58ddec7228812bb78181f0f22cecb9a  gcc/testsuite/gcc.dg/live-patching-5.c
  209fdf5744b573204a2de0155546afc5  gcc/testsuite/gcc.dg/local1.c
  8c594498180fabb74acf611568d4f67e  gcc/testsuite/gcc.dg/localalias-2.c
  ee0c3ba150290bda1153f3076c3303b4  gcc/testsuite/gcc.dg/localalias.c
  0719df2af362b74f64d07659e78dbc9d  gcc/testsuite/gcc.dg/long-long-compare-1.c
  ffe4d747ae708d9b7c4aa0999dc0837a  gcc/testsuite/gcc.dg/long-long-cst1.c
  2fc326204806db0bd76fbba4686929cd  gcc/testsuite/gcc.dg/long-long-typespec-1.c
! a120e94847ba585d4876bc532dcde466  gcc/testsuite/gcc.dg/long_branch.c
  bf870f767c6be672a0cfc990dd97f936  gcc/testsuite/gcc.dg/loop-1.c
  6b5237c8148a38f20728981213824d52  gcc/testsuite/gcc.dg/loop-2.c
  0a9033ecae87ae0e54d2b003958a08a2  gcc/testsuite/gcc.dg/loop-3.c
*************** b9d2d63f3863f74c5f1ce87d23debfe4  gcc/te
*** 40239,40250 ****
  632fe44b5eb079c1c706c76c1ac9a54b  gcc/testsuite/gcc.dg/loop-invariant-2.c
  efe590d29d570b6d17bba7b2c21339db  gcc/testsuite/gcc.dg/loop-invariant.c
  77d01b87345e303fc40f590c4f7e7785  gcc/testsuite/gcc.dg/loop-split.c
! 5737e9e5fee11e0032e40b36d99dcd09  gcc/testsuite/gcc.dg/loop-unswitch-1.c
  44b490988cc0f0544b4081ca49ca2822  gcc/testsuite/gcc.dg/loop-unswitch-2.c
  ff181fa6e4548d47aa84367f90ad303f  gcc/testsuite/gcc.dg/loop-unswitch-3.c
  f819e34fb5a7f733d4b5bc72ef4a1cf9  gcc/testsuite/gcc.dg/loop-unswitch-4.c
  29a5cfbdfcc557e25e137def28bc6d7a  gcc/testsuite/gcc.dg/loop-unswitch-5.c
  62fc4b433647b95aa69e72baa0688815  gcc/testsuite/gcc.dg/loop-unswitch-6.c
  feb7653457a5455ad23c2e8cbfda5890  gcc/testsuite/gcc.dg/loop-versioning-1.c
  bd95b8dcfe2066017e9ab3bf65e6e8ab  gcc/testsuite/gcc.dg/loop-versioning-10.c
  698864ba149cf54cee29fc9f1a7b4a41  gcc/testsuite/gcc.dg/loop-versioning-11.c
--- 42978,43001 ----
  632fe44b5eb079c1c706c76c1ac9a54b  gcc/testsuite/gcc.dg/loop-invariant-2.c
  efe590d29d570b6d17bba7b2c21339db  gcc/testsuite/gcc.dg/loop-invariant.c
  77d01b87345e303fc40f590c4f7e7785  gcc/testsuite/gcc.dg/loop-split.c
! 131e2820dc3f0dd0daad8b4f7485d09f  gcc/testsuite/gcc.dg/loop-unswitch-1.c
! 32780ee5bb7778abc6761d5c7d9a9530  gcc/testsuite/gcc.dg/loop-unswitch-10.c
! 3b2beaec24c7308c8093a6c0a8324979  gcc/testsuite/gcc.dg/loop-unswitch-11.c
! dfb8eb3d8776a98272cdb79c03057de6  gcc/testsuite/gcc.dg/loop-unswitch-12.c
! 0954352f4fa3a3999892475cc0eff8bc  gcc/testsuite/gcc.dg/loop-unswitch-13.c
! 0764b413afc4ede726e55adcd0e080d8  gcc/testsuite/gcc.dg/loop-unswitch-14.c
! 7eff269f165fc9c4703633000fc4872a  gcc/testsuite/gcc.dg/loop-unswitch-15.c
! fd615ddc837f30eb837c3252a93097a5  gcc/testsuite/gcc.dg/loop-unswitch-16.c
! 5cfd2f4d832d3b87649e681e72711509  gcc/testsuite/gcc.dg/loop-unswitch-17.c
! d7918e0526893bb36ea04d7229ead772  gcc/testsuite/gcc.dg/loop-unswitch-18.c
  44b490988cc0f0544b4081ca49ca2822  gcc/testsuite/gcc.dg/loop-unswitch-2.c
  ff181fa6e4548d47aa84367f90ad303f  gcc/testsuite/gcc.dg/loop-unswitch-3.c
  f819e34fb5a7f733d4b5bc72ef4a1cf9  gcc/testsuite/gcc.dg/loop-unswitch-4.c
  29a5cfbdfcc557e25e137def28bc6d7a  gcc/testsuite/gcc.dg/loop-unswitch-5.c
  62fc4b433647b95aa69e72baa0688815  gcc/testsuite/gcc.dg/loop-unswitch-6.c
+ ec01f260e261dd577830583e7ef5570d  gcc/testsuite/gcc.dg/loop-unswitch-7.c
+ d700e416152faa4ac7530f17bd42466d  gcc/testsuite/gcc.dg/loop-unswitch-8.c
+ 93bdcc18987fba098efe96acfb4d0462  gcc/testsuite/gcc.dg/loop-unswitch-9.c
  feb7653457a5455ad23c2e8cbfda5890  gcc/testsuite/gcc.dg/loop-versioning-1.c
  bd95b8dcfe2066017e9ab3bf65e6e8ab  gcc/testsuite/gcc.dg/loop-versioning-10.c
  698864ba149cf54cee29fc9f1a7b4a41  gcc/testsuite/gcc.dg/loop-versioning-11.c
*************** e81d04faee8838d4f176f04b73de78ae  gcc/te
*** 40259,40265 ****
  77ef31b80f911042dfae8b5bbf1a69ae  gcc/testsuite/gcc.dg/loop-versioning-7.c
  25e4f6b758f23925ea1c00248f0b155f  gcc/testsuite/gcc.dg/loop-versioning-8.c
  715823161848b36ee4015e09f60c5eaf  gcc/testsuite/gcc.dg/loop-versioning-9.c
! 8106ec4cb93954a65ab1ade89c954f91  gcc/testsuite/gcc.dg/lower-subreg-1.c
  67693155148765dffe43b30f027cea68  gcc/testsuite/gcc.dg/lsr-div1.c
  678fb66feed3ab9d6e765b1d6810b843  gcc/testsuite/gcc.dg/lto/20080908_0.c
  c94f785256f1b68d319dcd3c9cff6a07  gcc/testsuite/gcc.dg/lto/20080917_0.c
--- 43010,43016 ----
  77ef31b80f911042dfae8b5bbf1a69ae  gcc/testsuite/gcc.dg/loop-versioning-7.c
  25e4f6b758f23925ea1c00248f0b155f  gcc/testsuite/gcc.dg/loop-versioning-8.c
  715823161848b36ee4015e09f60c5eaf  gcc/testsuite/gcc.dg/loop-versioning-9.c
! 347c1e229bc51a321f157e14fbc7a89a  gcc/testsuite/gcc.dg/lower-subreg-1.c
  67693155148765dffe43b30f027cea68  gcc/testsuite/gcc.dg/lsr-div1.c
  678fb66feed3ab9d6e765b1d6810b843  gcc/testsuite/gcc.dg/lto/20080908_0.c
  c94f785256f1b68d319dcd3c9cff6a07  gcc/testsuite/gcc.dg/lto/20080917_0.c
*************** e22501e605edeaceeca043b437e49ba9  gcc/te
*** 40430,40436 ****
  5afe5712f0eec3e1317099cf354d0a38  gcc/testsuite/gcc.dg/lto/ipareference2_1.c
  744ef838cd191f7a2544697bf8f124dd  gcc/testsuite/gcc.dg/lto/ipareference_0.c
  798f96b8b3130da03f51bfae27df4189  gcc/testsuite/gcc.dg/lto/ipareference_1.c
! 06f1a1d81b735ad053967fbe5c82ea4a  gcc/testsuite/gcc.dg/lto/lto.exp
  b9cc7cb6d7d65f984ee0a8985b8e0e6e  gcc/testsuite/gcc.dg/lto/materialize-1_0.c
  4c9f4a6440d7bd9fa3f564ee6b91b50c  gcc/testsuite/gcc.dg/lto/materialize-1_1.c
  ae3d0968e71a8445a5ea662452d0f5ce  gcc/testsuite/gcc.dg/lto/modref-1_0.c
--- 43181,43187 ----
  5afe5712f0eec3e1317099cf354d0a38  gcc/testsuite/gcc.dg/lto/ipareference2_1.c
  744ef838cd191f7a2544697bf8f124dd  gcc/testsuite/gcc.dg/lto/ipareference_0.c
  798f96b8b3130da03f51bfae27df4189  gcc/testsuite/gcc.dg/lto/ipareference_1.c
! 03266039adc925ac2b9a6815e2756a0d  gcc/testsuite/gcc.dg/lto/lto.exp
  b9cc7cb6d7d65f984ee0a8985b8e0e6e  gcc/testsuite/gcc.dg/lto/materialize-1_0.c
  4c9f4a6440d7bd9fa3f564ee6b91b50c  gcc/testsuite/gcc.dg/lto/materialize-1_1.c
  ae3d0968e71a8445a5ea662452d0f5ce  gcc/testsuite/gcc.dg/lto/modref-1_0.c
*************** a6de94e75077173343457ffe489d2c5e  gcc/te
*** 40442,40448 ****
  1eb5a5a9618f46e44dc9d6ee2a4c8bc4  gcc/testsuite/gcc.dg/lto/modref-4_1.c
  e1bd2be5006d2bb7a3b670af0868ffeb  gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
  2472b5bc8466fe62188232d9fbcd9de6  gcc/testsuite/gcc.dg/lto/noreturn-1_1.c
! b277b193b2a7ff104d28fbf8e50407e8  gcc/testsuite/gcc.dg/lto/pr101868_0.c
  ca741859e8754c149e68fc40892d50b1  gcc/testsuite/gcc.dg/lto/pr101868_1.c
  e4aec3391bc7aed1a5d886edeb277407  gcc/testsuite/gcc.dg/lto/pr101868_2.c
  02d829cec4d5ff9723124841f79edca9  gcc/testsuite/gcc.dg/lto/pr101868_3.c
--- 43193,43199 ----
  1eb5a5a9618f46e44dc9d6ee2a4c8bc4  gcc/testsuite/gcc.dg/lto/modref-4_1.c
  e1bd2be5006d2bb7a3b670af0868ffeb  gcc/testsuite/gcc.dg/lto/noreturn-1_0.c
  2472b5bc8466fe62188232d9fbcd9de6  gcc/testsuite/gcc.dg/lto/noreturn-1_1.c
! 21f8c67e453be6eb9a5ff6a39f9f92e5  gcc/testsuite/gcc.dg/lto/pr101868_0.c
  ca741859e8754c149e68fc40892d50b1  gcc/testsuite/gcc.dg/lto/pr101868_1.c
  e4aec3391bc7aed1a5d886edeb277407  gcc/testsuite/gcc.dg/lto/pr101868_2.c
  02d829cec4d5ff9723124841f79edca9  gcc/testsuite/gcc.dg/lto/pr101868_3.c
*************** b81512aa407aff2f251e1bedfee71bbc  gcc/te
*** 40457,40462 ****
--- 43208,43216 ----
  fe0705b8881cddd35d729ad7e893213e  gcc/testsuite/gcc.dg/lto/pr103171_0.c
  2aa0e1e2d80203f72d32aa9f9b4cc175  gcc/testsuite/gcc.dg/lto/pr103171_1.c
  cdecd03c005af5a99a42aa5b9c5d802f  gcc/testsuite/gcc.dg/lto/pr105459_0.c
+ fe020ff7b4d35a4d3f13e426cbacc4da  gcc/testsuite/gcc.dg/lto/pr107769_0.c
+ 24a11e691dcb757325e921b35f556473  gcc/testsuite/gcc.dg/lto/pr108445_0.c
+ 75895ff7058fe9716d776a1c92124f2d  gcc/testsuite/gcc.dg/lto/pr108445_1.c
  5192817b2492ca93ffadce3b4a5e4794  gcc/testsuite/gcc.dg/lto/pr27898_0.c
  c5f48897247dfaec60df4e32beffcd8e  gcc/testsuite/gcc.dg/lto/pr27898_1.c
  2ad724786bc4b555a7f31e8b3bf164b6  gcc/testsuite/gcc.dg/lto/pr28706_0.c
*************** d1e770d91208595495a35d2e8dc75a6e  gcc/te
*** 40600,40616 ****
  a9c2bd4786300d7cf805e7ef57335a2c  gcc/testsuite/gcc.dg/macro-1.c
  31f14197268739823400554afb459afd  gcc/testsuite/gcc.dg/macro-fusion-1.c
  58f7a0b8b1c20e76358a69ae8d733bad  gcc/testsuite/gcc.dg/macro-fusion-2.c
! 4bb01542786b8bd235373b8cd168b698  gcc/testsuite/gcc.dg/mallign.c
  3c60c6cb5a37e01b4d0de4ac16f26aed  gcc/testsuite/gcc.dg/march-generic.c
  5fffcdfefb3c530e1b472e8397d647cb  gcc/testsuite/gcc.dg/march.c
  797c5b8279b119e196b60ddd82ff6200  gcc/testsuite/gcc.dg/max-1.c
  1a4cdf01852ee814e663ce4a12f81332  gcc/testsuite/gcc.dg/max.c
  2eb99e685dc27ff7c74d04a147795043  gcc/testsuite/gcc.dg/memchr-2.c
! 22d582a2726627f54daf4ef1cdde49e6  gcc/testsuite/gcc.dg/memchr-3.c
! 50174301b6b17b4a9ea31e39ba46f71b  gcc/testsuite/gcc.dg/memchr.c
  a7970b17f2cd70d5522f097145c9da58  gcc/testsuite/gcc.dg/memcmp-1.c
  d46511208ba88b755c518bb5aa8112c3  gcc/testsuite/gcc.dg/memcmp-2.c
! ef60e5ad992554e817a42639054472bc  gcc/testsuite/gcc.dg/memcmp-3.c
  30c111f00536fce8bf5c9fddb92630a8  gcc/testsuite/gcc.dg/memcmp-4.c
  0f2861fb7f169ea38d93b906ca4c9be4  gcc/testsuite/gcc.dg/memcmp-5.c
  266bcafb43c75b9093bb22aaad2ac8d7  gcc/testsuite/gcc.dg/memcmp-6.c
--- 43354,43370 ----
  a9c2bd4786300d7cf805e7ef57335a2c  gcc/testsuite/gcc.dg/macro-1.c
  31f14197268739823400554afb459afd  gcc/testsuite/gcc.dg/macro-fusion-1.c
  58f7a0b8b1c20e76358a69ae8d733bad  gcc/testsuite/gcc.dg/macro-fusion-2.c
! d0f7ad775f7535709bd76a4c558f1a51  gcc/testsuite/gcc.dg/mallign.c
  3c60c6cb5a37e01b4d0de4ac16f26aed  gcc/testsuite/gcc.dg/march-generic.c
  5fffcdfefb3c530e1b472e8397d647cb  gcc/testsuite/gcc.dg/march.c
  797c5b8279b119e196b60ddd82ff6200  gcc/testsuite/gcc.dg/max-1.c
  1a4cdf01852ee814e663ce4a12f81332  gcc/testsuite/gcc.dg/max.c
  2eb99e685dc27ff7c74d04a147795043  gcc/testsuite/gcc.dg/memchr-2.c
! 4ae6cf9ba3571b90f177d4b9b44d1cce  gcc/testsuite/gcc.dg/memchr-3.c
! 9d87244d84141f68f68c9df9b9943fae  gcc/testsuite/gcc.dg/memchr.c
  a7970b17f2cd70d5522f097145c9da58  gcc/testsuite/gcc.dg/memcmp-1.c
  d46511208ba88b755c518bb5aa8112c3  gcc/testsuite/gcc.dg/memcmp-2.c
! 656fc17a7231d4e1379a02817888a5d3  gcc/testsuite/gcc.dg/memcmp-3.c
  30c111f00536fce8bf5c9fddb92630a8  gcc/testsuite/gcc.dg/memcmp-4.c
  0f2861fb7f169ea38d93b906ca4c9be4  gcc/testsuite/gcc.dg/memcmp-5.c
  266bcafb43c75b9093bb22aaad2ac8d7  gcc/testsuite/gcc.dg/memcmp-6.c
*************** b054d23fd7d868a509aeb363dc7e8ffc  gcc/te
*** 40749,40755 ****
  816b6759ae933f803099070549d0e06e  gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
  67db74b19085ff950f0aaafaec250ef4  gcc/testsuite/gcc.dg/noncompile/label-1.c
  158d88cfb97dd38de0cb17ccc39f3d5e  gcc/testsuite/gcc.dg/noncompile/label-lineno-1.c
! 055f5c49ff4ab6da01aa4d21e1971998  gcc/testsuite/gcc.dg/noncompile/noncompile.exp
  415c039abdab8437275df71102cc5113  gcc/testsuite/gcc.dg/noncompile/old-style-parm-1.c
  6ccdd7958d053743fbd68691650b1b61  gcc/testsuite/gcc.dg/noncompile/old-style-parm-2.c
  dc03b56a3d101a6001179c75ccbd6723  gcc/testsuite/gcc.dg/noncompile/old-style-parm-3.c
--- 43503,43509 ----
  816b6759ae933f803099070549d0e06e  gcc/testsuite/gcc.dg/noncompile/invalid_asm.c
  67db74b19085ff950f0aaafaec250ef4  gcc/testsuite/gcc.dg/noncompile/label-1.c
  158d88cfb97dd38de0cb17ccc39f3d5e  gcc/testsuite/gcc.dg/noncompile/label-lineno-1.c
! 655f968731ccda4617395be232d2003b  gcc/testsuite/gcc.dg/noncompile/noncompile.exp
  415c039abdab8437275df71102cc5113  gcc/testsuite/gcc.dg/noncompile/old-style-parm-1.c
  6ccdd7958d053743fbd68691650b1b61  gcc/testsuite/gcc.dg/noncompile/old-style-parm-2.c
  dc03b56a3d101a6001179c75ccbd6723  gcc/testsuite/gcc.dg/noncompile/old-style-parm-3.c
*************** de304718b009b210b30f573b7fc0491d  gcc/te
*** 40770,40776 ****
  e9c4b9ac1764f109629be29afe89e235  gcc/testsuite/gcc.dg/noncompile/pr71418.c
  0957326859205274026e4dcb33639746  gcc/testsuite/gcc.dg/noncompile/pr71426.c
  9d1dbbc7954243ba6f9b868a5f7cc3c6  gcc/testsuite/gcc.dg/noncompile/pr71573.c
! 3154e833a0a327060d844cfeac7df988  gcc/testsuite/gcc.dg/noncompile/pr71583.c
  795fb0aea23fa4679ac66c15370f8f54  gcc/testsuite/gcc.dg/noncompile/pr71853.c
  d6215827f1b3ddeacd3b48d1d8b16bd5  gcc/testsuite/gcc.dg/noncompile/pr79758.c
  9dcbfb000a62c03db07cd7dfcc272eae  gcc/testsuite/gcc.dg/noncompile/pr81289.c
--- 43524,43530 ----
  e9c4b9ac1764f109629be29afe89e235  gcc/testsuite/gcc.dg/noncompile/pr71418.c
  0957326859205274026e4dcb33639746  gcc/testsuite/gcc.dg/noncompile/pr71426.c
  9d1dbbc7954243ba6f9b868a5f7cc3c6  gcc/testsuite/gcc.dg/noncompile/pr71573.c
! dce450a02a76e8850fa1af640a197e05  gcc/testsuite/gcc.dg/noncompile/pr71583.c
  795fb0aea23fa4679ac66c15370f8f54  gcc/testsuite/gcc.dg/noncompile/pr71853.c
  d6215827f1b3ddeacd3b48d1d8b16bd5  gcc/testsuite/gcc.dg/noncompile/pr79758.c
  9dcbfb000a62c03db07cd7dfcc272eae  gcc/testsuite/gcc.dg/noncompile/pr81289.c
*************** d4f39b14782b9fcbd5b3abc56f255fe6  gcc/te
*** 40794,40800 ****
  feda80c2b619aa7ff1c6c6849bdb16d2  gcc/testsuite/gcc.dg/noreturn-1.c
  56713e84d6ab80cf2460f2af1c5498e2  gcc/testsuite/gcc.dg/noreturn-2.c
  f4dad19a38b94b6587614001f5996a5c  gcc/testsuite/gcc.dg/noreturn-3.c
- e69d82c33002bde0bd49c51d4c9f759d  gcc/testsuite/gcc.dg/noreturn-4.c
  255513eee17c367ecb2aa180c0b9e301  gcc/testsuite/gcc.dg/noreturn-5.c
  5ece99a9f9f5f1aa69ff7f13f02276eb  gcc/testsuite/gcc.dg/noreturn-6.c
  50f990ec1fc044dfc8885d8f24c04564  gcc/testsuite/gcc.dg/noreturn-7.c
--- 43548,43553 ----
*************** a0182c7350fe1a90fff285e2b2b1c85b  gcc/te
*** 40814,40820 ****
  1dadc95df2cfcfe39615669d181980e7  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
  404ca003e7761822ce477a10495ab916  gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
  2411cd50c6b3a2f2c92ef4ec97287013  gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
! 9c8da7720e5bd21617b6c738c4cb4c1e  gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
  6d24510e55a8e45939dcdefb58abed12  gcc/testsuite/gcc.dg/optimize-bswapsi-1.c
  d1c5f8043ad0d459a3903165dca712b5  gcc/testsuite/gcc.dg/optimize-bswapsi-2.c
  3e2af2f78fbd024fa7ef3cadf042e4a5  gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
--- 43567,43573 ----
  1dadc95df2cfcfe39615669d181980e7  gcc/testsuite/gcc.dg/optimize-bswapdi-1.c
  404ca003e7761822ce477a10495ab916  gcc/testsuite/gcc.dg/optimize-bswapdi-2.c
  2411cd50c6b3a2f2c92ef4ec97287013  gcc/testsuite/gcc.dg/optimize-bswapdi-3.c
! 603c26003fdd00b0d80f72bbdc678b81  gcc/testsuite/gcc.dg/optimize-bswaphi-1.c
  6d24510e55a8e45939dcdefb58abed12  gcc/testsuite/gcc.dg/optimize-bswapsi-1.c
  d1c5f8043ad0d459a3903165dca712b5  gcc/testsuite/gcc.dg/optimize-bswapsi-2.c
  3e2af2f78fbd024fa7ef3cadf042e4a5  gcc/testsuite/gcc.dg/optimize-bswapsi-3.c
*************** ad340c212293170a71d90e58ff6eea45  gcc/te
*** 40845,40851 ****
  00468c6e7128a9c553728d36cac76215  gcc/testsuite/gcc.dg/overflow-warn-6.c
  f7dbf888578b8cc0b67acca3dbe4b7ee  gcc/testsuite/gcc.dg/overflow-warn-7.c
  9d572c8786e80ce4edf1b4ed9e4b78a1  gcc/testsuite/gcc.dg/overflow-warn-8.c
! 17105228942f875bd10eb8d6614c3a73  gcc/testsuite/gcc.dg/overflow-warn-9.c
  3536b36db5b8b073cc594dfe033142f0  gcc/testsuite/gcc.dg/pack-test-1.c
  9305e6f4b98cfb04210884229294d310  gcc/testsuite/gcc.dg/pack-test-1.h
  c508332c262788008c73edbcedf451b5  gcc/testsuite/gcc.dg/pack-test-2.c
--- 43598,43604 ----
  00468c6e7128a9c553728d36cac76215  gcc/testsuite/gcc.dg/overflow-warn-6.c
  f7dbf888578b8cc0b67acca3dbe4b7ee  gcc/testsuite/gcc.dg/overflow-warn-7.c
  9d572c8786e80ce4edf1b4ed9e4b78a1  gcc/testsuite/gcc.dg/overflow-warn-8.c
! 0ff8964732b6f36629d079f2aab30b6e  gcc/testsuite/gcc.dg/overflow-warn-9.c
  3536b36db5b8b073cc594dfe033142f0  gcc/testsuite/gcc.dg/pack-test-1.c
  9305e6f4b98cfb04210884229294d310  gcc/testsuite/gcc.dg/pack-test-1.h
  c508332c262788008c73edbcedf451b5  gcc/testsuite/gcc.dg/pack-test-2.c
*************** b817ca627688575b94c9dba877cb008f  gcc/te
*** 40858,40864 ****
  ddeb76cd34e791893c0f539fdab879bb  gcc/testsuite/gcc.dg/params/LICENSE
  dbe49534045bebcd393d3d0d5ccec28a  gcc/testsuite/gcc.dg/params/README
  86dede4ba9e425e8357eeabd89e5a7a9  gcc/testsuite/gcc.dg/params/blocksort-part.c
! e274eddf7a4590ecb2363b02e939023e  gcc/testsuite/gcc.dg/params/params.exp
  2bfe07faa645e00622fecd5d6eb93e5d  gcc/testsuite/gcc.dg/parm-forwdecl-1.c
  64cab05bc7533e03a76ec901dec2853f  gcc/testsuite/gcc.dg/parm-forwdecl-2.c
  acdeeb693086bdb4ca6cdde57d9eb91d  gcc/testsuite/gcc.dg/parm-forwdecl-3.c
--- 43611,43617 ----
  ddeb76cd34e791893c0f539fdab879bb  gcc/testsuite/gcc.dg/params/LICENSE
  dbe49534045bebcd393d3d0d5ccec28a  gcc/testsuite/gcc.dg/params/README
  86dede4ba9e425e8357eeabd89e5a7a9  gcc/testsuite/gcc.dg/params/blocksort-part.c
! 78302be1dc09444d3c24aa26118634d5  gcc/testsuite/gcc.dg/params/params.exp
  2bfe07faa645e00622fecd5d6eb93e5d  gcc/testsuite/gcc.dg/parm-forwdecl-1.c
  64cab05bc7533e03a76ec901dec2853f  gcc/testsuite/gcc.dg/parm-forwdecl-2.c
  acdeeb693086bdb4ca6cdde57d9eb91d  gcc/testsuite/gcc.dg/parm-forwdecl-3.c
*************** b19f78cc8cfdc1d6a96b2f1f9d2b1da6  gcc/te
*** 40938,40944 ****
  b01e42858e0423266a42ce48f5963765  gcc/testsuite/gcc.dg/pch/macro-3.hs
  98eb40fd35afc99b8d7a0d9037913d4a  gcc/testsuite/gcc.dg/pch/macro-4.c
  9dfd3f4bded8093e1bd9fe58412b43c6  gcc/testsuite/gcc.dg/pch/macro-4.hs
! 3b43c2414bbc5c12f49db60e793de493  gcc/testsuite/gcc.dg/pch/pch.exp
  d4141b7ac70c28b7c83f42cea80032d1  gcc/testsuite/gcc.dg/pch/pr66343-1.c
  fecd32092f1271edbd03eb98de866244  gcc/testsuite/gcc.dg/pch/pr66343-1.hs
  140e74992c61983f49deebe0a5a98c95  gcc/testsuite/gcc.dg/pch/pr66343-2.c
--- 43691,43697 ----
  b01e42858e0423266a42ce48f5963765  gcc/testsuite/gcc.dg/pch/macro-3.hs
  98eb40fd35afc99b8d7a0d9037913d4a  gcc/testsuite/gcc.dg/pch/macro-4.c
  9dfd3f4bded8093e1bd9fe58412b43c6  gcc/testsuite/gcc.dg/pch/macro-4.hs
! 1034c18d3eef301d7787058e72b714e2  gcc/testsuite/gcc.dg/pch/pch.exp
  d4141b7ac70c28b7c83f42cea80032d1  gcc/testsuite/gcc.dg/pch/pr66343-1.c
  fecd32092f1271edbd03eb98de866244  gcc/testsuite/gcc.dg/pch/pr66343-1.hs
  140e74992c61983f49deebe0a5a98c95  gcc/testsuite/gcc.dg/pch/pr66343-2.c
*************** b896794f81fc191be4cef03999d2a872  gcc/te
*** 40977,40985 ****
  53c37d9194064876f0e4cff1ae180761  gcc/testsuite/gcc.dg/pg-override.c
  53c37d9194064876f0e4cff1ae180761  gcc/testsuite/gcc.dg/pg.c
  f1072dd0acb0f7d06b0b1ef593b7b1cc  gcc/testsuite/gcc.dg/pic-1.c
! d9a197240d51bf4b3e98a49de304172c  gcc/testsuite/gcc.dg/pic-2.c
! 2784105b7d4f3addd12c7775ed46dbbc  gcc/testsuite/gcc.dg/pic-3.c
! 762b005a07126544845976067b15ca4d  gcc/testsuite/gcc.dg/pic-4.c
  1310eec5a596f6f3f1034c18543936a3  gcc/testsuite/gcc.dg/pic-macro-define.c
  de302da8d7737a4e96d474e241080339  gcc/testsuite/gcc.dg/pie-1.c
  e85ed22735e235dc5a9457487286d6f0  gcc/testsuite/gcc.dg/pie-2.c
--- 43730,43738 ----
  53c37d9194064876f0e4cff1ae180761  gcc/testsuite/gcc.dg/pg-override.c
  53c37d9194064876f0e4cff1ae180761  gcc/testsuite/gcc.dg/pg.c
  f1072dd0acb0f7d06b0b1ef593b7b1cc  gcc/testsuite/gcc.dg/pic-1.c
! 9e29e867a9a1778af032970f4f41c31a  gcc/testsuite/gcc.dg/pic-2.c
! 3fb15b43f77e2c2c948a15f8437476e4  gcc/testsuite/gcc.dg/pic-3.c
! 08d8bf606d2349825433d688bb7b8259  gcc/testsuite/gcc.dg/pic-4.c
  1310eec5a596f6f3f1034c18543936a3  gcc/testsuite/gcc.dg/pic-macro-define.c
  de302da8d7737a4e96d474e241080339  gcc/testsuite/gcc.dg/pie-1.c
  e85ed22735e235dc5a9457487286d6f0  gcc/testsuite/gcc.dg/pie-2.c
*************** df1fb04645820cce9159c1b05e520fc7  gcc/te
*** 40991,40997 ****
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
  000d3a6c8dca7e54f5be771190d10f29  gcc/testsuite/gcc.dg/pie-static-1.c
  be052bceddbf752586b645bc9e048e9c  gcc/testsuite/gcc.dg/pie-static-2.c
! 1d315d2bc8c93df955c121387a2e94b5  gcc/testsuite/gcc.dg/plugin/analyzer_gil_plugin.c
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
  a0bce3f622c2549614e45f5a9afe9c88  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-2.c
--- 43744,43758 ----
  72712f41dcc921ba1827000fc0809a9c  gcc/testsuite/gcc.dg/pie-link.c
  000d3a6c8dca7e54f5be771190d10f29  gcc/testsuite/gcc.dg/pie-static-1.c
  be052bceddbf752586b645bc9e048e9c  gcc/testsuite/gcc.dg/pie-static-2.c
! be7e44e725cbd4a51086ce42ce21698c  gcc/testsuite/gcc.dg/plugin/analyzer_gil_plugin.c
! a11f551bfc410c5fd7f2e4f9d40e8104  gcc/testsuite/gcc.dg/plugin/analyzer_kernel_plugin.c
! f7d1429adff33775f830febb9d10f825  gcc/testsuite/gcc.dg/plugin/analyzer_known_fns_plugin.c
! d3483f3815d016c754ed9f76ac62ac34  gcc/testsuite/gcc.dg/plugin/copy_from_user-1.c
! fbd111d935b46378f259c8ad372e6e12  gcc/testsuite/gcc.dg/plugin/crash-test-ice-sarif.c
! f8f4338f179e67c92b6bd47bcbe5077c  gcc/testsuite/gcc.dg/plugin/crash-test-ice-stderr.c
! 7fd1acebbc09d544eb6a2b0665efe825  gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-sarif.c
! bc86565c4741df743140772a2fa69df5  gcc/testsuite/gcc.dg/plugin/crash-test-write-though-null-stderr.c
! 07e231a98872197c9ea4f93a023099fe  gcc/testsuite/gcc.dg/plugin/crash_test_plugin.c
  146ffa25d8a6444346ca2a51bfa748ec  gcc/testsuite/gcc.dg/plugin/diagnostic-group-test-1.c
  901114feb3fc4bc44a06034fc6abcbff  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-1.c
  a0bce3f622c2549614e45f5a9afe9c88  gcc/testsuite/gcc.dg/plugin/diagnostic-path-format-inline-events-2.c
*************** ab9b438d79da41ae2faa25073b1f68ff  gcc/te
*** 41004,41014 ****
  49685be9087563d411cc61352a593d84  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-2.c
  48a41768247d6b150673cba3b15e815e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
! f73494e354387768373dca977a01f607  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
  2559315813eed7c53c721794d2abb2e6  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
  38b2aa13fa65cc96be9b8cd14bde1ec1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c2ec1cc8d8b83dbb2bda70a9f54dcf4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
  7049acd785444dd8554dd09b160777de  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c
  d7b8d6a01abe683de027809614a2b63f  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c
  d97d9296064e2548698cc70191b940fe  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers-2.c
--- 43765,43776 ----
  49685be9087563d411cc61352a593d84  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-2.c
  48a41768247d6b150673cba3b15e815e  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-3.c
  c5d2a11e1172f48545387ed92bd56a11  gcc/testsuite/gcc.dg/plugin/diagnostic-test-inlining-4.c
! ce81f72fcd363c22f9fce9cd0b0c76b1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-metadata.c
  a6a63e4d673f32d534d3afc18a7f8218  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-1.c
  2559315813eed7c53c721794d2abb2e6  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-2.c
  38b2aa13fa65cc96be9b8cd14bde1ec1  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-3.c
  9c2ec1cc8d8b83dbb2bda70a9f54dcf4  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-4.c
+ d69b80e0a539be7739a33736ee0e8aaf  gcc/testsuite/gcc.dg/plugin/diagnostic-test-paths-5.c
  7049acd785444dd8554dd09b160777de  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v1.c
  d7b8d6a01abe683de027809614a2b63f  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-GCC_EXTRA_DIAGNOSTIC_OUTPUT-fixits-v2.c
  d97d9296064e2548698cc70191b940fe  gcc/testsuite/gcc.dg/plugin/diagnostic-test-show-locus-bw-line-numbers-2.c
*************** bb20191ab0ad6e0d6ba368003d857339  gcc/te
*** 41024,41048 ****
  1a45355cf06403e775b5d7ab5b2a59f7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-2.c
  9724706865aec183bf418db2220222c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-3.c
  9130ee71c624765ab112b75378ac96c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-4.c
! 64a62a33969a68dabd414a649151bbf0  gcc/testsuite/gcc.dg/plugin/diagnostic_group_plugin.c
! ec592bfd273d806ead078d85f814e82c  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
! ee63c958a3cb48c8a89453979a3e3b31  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c
! 6166699181d0af7113e8d77486e75ef4  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_metadata.c
! 78302f36d90c98364f12c9362b61e53d  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c
! 064f04486c7a7bf4560482d2b4333df5  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
! 75006163ce7e07c7298e9e1fad560386  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
! b0b2fc226001595620383855c8eacf11  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c
  07558668b4c054118c12c8514bb94698  gcc/testsuite/gcc.dg/plugin/dump-1.c
  88c83e306ac4f214fd9bc80a3eba0054  gcc/testsuite/gcc.dg/plugin/dump-2.c
  7427e09de26af0b57094c9728b35ea7d  gcc/testsuite/gcc.dg/plugin/dump_plugin.c
  3364b35e14d37af3ceb073f305b97409  gcc/testsuite/gcc.dg/plugin/expensive-selftests-1.c
  8a629c0ce899fb209834c51965bc5bf3  gcc/testsuite/gcc.dg/plugin/expensive_selftests_plugin.c
  17affb987043f39ff846effdbaa6040c  gcc/testsuite/gcc.dg/plugin/finish_unit-test-1.c
! 1c6a9973a6ef6f459b0990d8f17fe192  gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
  232d54c69029a45c46660ba009ebdf28  gcc/testsuite/gcc.dg/plugin/ggcplug-test-1.c
! 946d91607bc14508e8394c33f82cd987  gcc/testsuite/gcc.dg/plugin/ggcplug.c
  22cbcbb280a3987fb49a74754543f9f1  gcc/testsuite/gcc.dg/plugin/gil-1.c
  c1994b3e108cc9c7befbc1b7c93a70ff  gcc/testsuite/gcc.dg/plugin/gil.h
  d3e84ae842f69911a3ac0ceb96542627  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
  502e1f072faf23c44132129d5a080fdb  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173-1.h
--- 43786,43823 ----
  1a45355cf06403e775b5d7ab5b2a59f7  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-2.c
  9724706865aec183bf418db2220222c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-3.c
  9130ee71c624765ab112b75378ac96c0  gcc/testsuite/gcc.dg/plugin/diagnostic-test-string-literals-4.c
! 72f6f67e826b1657a8d1c2b9fbfbf44c  gcc/testsuite/gcc.dg/plugin/diagnostic_group_plugin.c
! b12fef6ecd628932a2da7d4367604327  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_show_trees.c
! 8d6b21a11d4a8a2c270dfdfc9254864a  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_inlining.c
! 55c90f2e521240707723c45e6dbb1902  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_metadata.c
! 6450d67e283426f43fc8c8f502cd165c  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_paths.c
! a989a148e3bd656e85efc84c0ad59700  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
! d0a5e5c508f128e3073f77cee71cdf3a  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_string_literals.c
! 4de49470f2aa7e4564980b292b26f49c  gcc/testsuite/gcc.dg/plugin/diagnostic_plugin_test_tree_expression_range.c
  07558668b4c054118c12c8514bb94698  gcc/testsuite/gcc.dg/plugin/dump-1.c
  88c83e306ac4f214fd9bc80a3eba0054  gcc/testsuite/gcc.dg/plugin/dump-2.c
  7427e09de26af0b57094c9728b35ea7d  gcc/testsuite/gcc.dg/plugin/dump_plugin.c
  3364b35e14d37af3ceb073f305b97409  gcc/testsuite/gcc.dg/plugin/expensive-selftests-1.c
  8a629c0ce899fb209834c51965bc5bf3  gcc/testsuite/gcc.dg/plugin/expensive_selftests_plugin.c
  17affb987043f39ff846effdbaa6040c  gcc/testsuite/gcc.dg/plugin/finish_unit-test-1.c
! f73dcf28a556d348a80ecf63c3650bad  gcc/testsuite/gcc.dg/plugin/finish_unit_plugin.c
  232d54c69029a45c46660ba009ebdf28  gcc/testsuite/gcc.dg/plugin/ggcplug-test-1.c
! 7355026eb791452501fe83f429c14411  gcc/testsuite/gcc.dg/plugin/ggcplug.c
  22cbcbb280a3987fb49a74754543f9f1  gcc/testsuite/gcc.dg/plugin/gil-1.c
  c1994b3e108cc9c7befbc1b7c93a70ff  gcc/testsuite/gcc.dg/plugin/gil.h
+ d6e1a3de2198d157be20ab4fe6fedd70  gcc/testsuite/gcc.dg/plugin/infoleak-1.c
+ aa4d22479edd9960ca259055206dfce9  gcc/testsuite/gcc.dg/plugin/infoleak-2.c
+ 1696da0ec083332fc30ee3ce442eb320  gcc/testsuite/gcc.dg/plugin/infoleak-3.c
+ d97822eab6d3cec4a429124e0ebf4dad  gcc/testsuite/gcc.dg/plugin/infoleak-CVE-2011-1078-1.c
+ bbcd0beb988096a6d621125f04655e2b  gcc/testsuite/gcc.dg/plugin/infoleak-CVE-2011-1078-2.c
+ 8c9984262c9a8cd64eaa5696bad121c3  gcc/testsuite/gcc.dg/plugin/infoleak-CVE-2014-1446-1.c
+ b05ae8584845daeb59ab2a2d859880ad  gcc/testsuite/gcc.dg/plugin/infoleak-CVE-2017-18549-1.c
+ 5778f2611e7404e19c858b6e099759b1  gcc/testsuite/gcc.dg/plugin/infoleak-CVE-2017-18550-1.c
+ 1bf6e41b018b4dbc083435bfec8eca81  gcc/testsuite/gcc.dg/plugin/infoleak-antipatterns-1.c
+ f22c386d32e16704e73e0ad284bf1ad1  gcc/testsuite/gcc.dg/plugin/infoleak-fixit-1.c
+ 02ffae050507325cf99ff537048a6e3c  gcc/testsuite/gcc.dg/plugin/infoleak-net-ethtool-ioctl.c
+ 1a2a9877b17c3ce0a16c15c88640cc64  gcc/testsuite/gcc.dg/plugin/infoleak-vfio_iommu_type1.c
+ 4644aff4e3d9b41ef0b44eb441b3e574  gcc/testsuite/gcc.dg/plugin/known-fns-1.c
  d3e84ae842f69911a3ac0ceb96542627  gcc/testsuite/gcc.dg/plugin/location-overflow-test-1.c
  b584a46252319e63ce8a18cd3d89f07c  gcc/testsuite/gcc.dg/plugin/location-overflow-test-2.c
  502e1f072faf23c44132129d5a080fdb  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173-1.h
*************** b584a46252319e63ce8a18cd3d89f07c  gcc/te
*** 41050,41061 ****
  6d6028de00b79eb5be6f42b7a4332c90  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173.c
  96ff609825b6520f9e9cc6f866930933  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173.h
  d1539ad0fd49e9bb07ab30a1445bc9fb  gcc/testsuite/gcc.dg/plugin/location_overflow_plugin.c
! db7ca96e3ca2a65918f7ad1c3bf0c344  gcc/testsuite/gcc.dg/plugin/must-tail-call-1.c
! b1a9c2af16dec0d49e4f96f176a99493  gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c
! 4f9162b0bea5be7a65cfd95710142650  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.c
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
! 140175a2d33b8c31f25c3427b04baa1b  gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
! ba90e3e51c359d1e1afc8f499b48abb8  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
--- 43825,43836 ----
  6d6028de00b79eb5be6f42b7a4332c90  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173.c
  96ff609825b6520f9e9cc6f866930933  gcc/testsuite/gcc.dg/plugin/location-overflow-test-pr83173.h
  d1539ad0fd49e9bb07ab30a1445bc9fb  gcc/testsuite/gcc.dg/plugin/location_overflow_plugin.c
! c323b7b4ac0cf2caa641c6bb31350375  gcc/testsuite/gcc.dg/plugin/must-tail-call-1.c
! de7a6b85ff1667e6ef4b89117e774f2d  gcc/testsuite/gcc.dg/plugin/must-tail-call-2.c
! 4905199fc259967af414db22821f7f74  gcc/testsuite/gcc.dg/plugin/must_tail_call_plugin.c
  adbc6d60d6e1474ca93af3b50208e741  gcc/testsuite/gcc.dg/plugin/one_time-test-1.c
! 91500c30c78de7048ecb72b86a431e80  gcc/testsuite/gcc.dg/plugin/one_time_plugin.c
! 542804f26bfc1222c71283cbfe874800  gcc/testsuite/gcc.dg/plugin/plugin.exp
  10b87cc378ff8b6e30ae77af8c669e4b  gcc/testsuite/gcc.dg/plugin/plugindir1.c
  770fbe5bf2a65884c6120dab4b13a1d4  gcc/testsuite/gcc.dg/plugin/plugindir2.c
  5be673fb13573d3689c3cc3dff9f5a2e  gcc/testsuite/gcc.dg/plugin/plugindir3.c
*************** f43fc23479a723cf1e0c43c07823d2d0  gcc/te
*** 41073,41081 ****
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/plugin/pr87562-b.h
  dfb4077095a9a1767f9d3405363543a5  gcc/testsuite/gcc.dg/plugin/self-assign-test-1.c
  f6e137597dce4650ba1565206e539ea7  gcc/testsuite/gcc.dg/plugin/self-assign-test-2.c
! 38465469edcccebd91e9d413962b2d8e  gcc/testsuite/gcc.dg/plugin/selfassign.c
  17affb987043f39ff846effdbaa6040c  gcc/testsuite/gcc.dg/plugin/start_unit-test-1.c
! 80ddf4863ec68e41e4ca48de3dbe45f2  gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c
  0085c872ae54e8abe011c707f4b59882  gcc/testsuite/gcc.dg/plugin/wide-int-test-1.c
  8afb11ca2fdffe4c8ee020a4c15c0e25  gcc/testsuite/gcc.dg/plugin/wide-int_plugin.c
  0867fa267e341a1f2e7de0b0dc27e1bb  gcc/testsuite/gcc.dg/pointer-arith-1.c
--- 43848,43869 ----
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/plugin/pr87562-b.h
  dfb4077095a9a1767f9d3405363543a5  gcc/testsuite/gcc.dg/plugin/self-assign-test-1.c
  f6e137597dce4650ba1565206e539ea7  gcc/testsuite/gcc.dg/plugin/self-assign-test-2.c
! e02805e9ce58a796cf7d12cfc4e32dc7  gcc/testsuite/gcc.dg/plugin/selfassign.c
  17affb987043f39ff846effdbaa6040c  gcc/testsuite/gcc.dg/plugin/start_unit-test-1.c
! 64321dc1b161184739b07f96a1981ab5  gcc/testsuite/gcc.dg/plugin/start_unit_plugin.c
! dbb098adf2d5b48ac3a000abc8467144  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-1-fixed.c
! 5c2013df18e4e995b824b24046c49fc1  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-1.c
! 75ced7cee07d6c06cd2c77b07cff0426  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-2-fixed.c
! 9547d28a2fec3c60a37f846b2af9cfdf  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-2.c
! df6a93e07c1b85f6e0a87c611b64ca47  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-3-fixed.c
! 121da33372989db0ee2b31a02a05b788  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-3.c
! 9ce297064cb02b7f00a9a6199aee0d69  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-4.c
! c2d8aa5a6d357f555e63e55c889dd7fa  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-5-fixed.c
! 811331dbdc9c1a30c41c5f7f8ae5bb67  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-5.c
! 332fe157f957c46be4d8f317244e1d34  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521-6.c
! 6197eb6a55be4bb0911aef2bdace74a3  gcc/testsuite/gcc.dg/plugin/taint-CVE-2011-0521.h
! 96166fb1ce38c2715288ab82a00bed60  gcc/testsuite/gcc.dg/plugin/taint-antipatterns-1.c
! 8432194cb08e7a4a524b574b0b640535  gcc/testsuite/gcc.dg/plugin/test-uaccess.h
  0085c872ae54e8abe011c707f4b59882  gcc/testsuite/gcc.dg/plugin/wide-int-test-1.c
  8afb11ca2fdffe4c8ee020a4c15c0e25  gcc/testsuite/gcc.dg/plugin/wide-int_plugin.c
  0867fa267e341a1f2e7de0b0dc27e1bb  gcc/testsuite/gcc.dg/pointer-arith-1.c
*************** f5883b8a2323e7318237e3750e037d52  gcc/te
*** 41097,41103 ****
  7798275b8b0de282f953e3c97703b235  gcc/testsuite/gcc.dg/pow-sqrt-1.c
  4ad1671efbaffa754dd12b7d3fb0c24f  gcc/testsuite/gcc.dg/pow-sqrt-2.c
  fd3265437095da6aff9d665f55b837b2  gcc/testsuite/gcc.dg/pow-sqrt-3.c
! b9bdf8358b02d555adf76b44050cc156  gcc/testsuite/gcc.dg/pow-sqrt-synth-1.c
  e037582257371f62a3a039df4321225d  gcc/testsuite/gcc.dg/pow-sqrt.x
  ecd4e45106744489e5a78254ca44d88a  gcc/testsuite/gcc.dg/pr100142.c
  0869c29788d11616cd48af5ae7173721  gcc/testsuite/gcc.dg/pr100225.c
--- 43885,43891 ----
  7798275b8b0de282f953e3c97703b235  gcc/testsuite/gcc.dg/pow-sqrt-1.c
  4ad1671efbaffa754dd12b7d3fb0c24f  gcc/testsuite/gcc.dg/pow-sqrt-2.c
  fd3265437095da6aff9d665f55b837b2  gcc/testsuite/gcc.dg/pow-sqrt-3.c
! d0f47c969958818a7b10cdf3e0a873d7  gcc/testsuite/gcc.dg/pow-sqrt-synth-1.c
  e037582257371f62a3a039df4321225d  gcc/testsuite/gcc.dg/pow-sqrt.x
  ecd4e45106744489e5a78254ca44d88a  gcc/testsuite/gcc.dg/pr100142.c
  0869c29788d11616cd48af5ae7173721  gcc/testsuite/gcc.dg/pr100225.c
*************** db661ade03c7d38cab8e4ca47f631e4c  gcc/te
*** 41113,41122 ****
  380f5ed401661497e77142772a24054a  gcc/testsuite/gcc.dg/pr100521.c
  580ac919e1954ba779b2269203b11211  gcc/testsuite/gcc.dg/pr100547.c
  395736a8e0816a51c506968c1ca01f5d  gcc/testsuite/gcc.dg/pr100563.c
! 0d16c3f79029d0b1d58367952a9cdfa3  gcc/testsuite/gcc.dg/pr100590.c
  b6d7f7ed4dde3865c140de6c031f2bda  gcc/testsuite/gcc.dg/pr100619.c
  3a4aa573e35026433b0c5710fc8ceed0  gcc/testsuite/gcc.dg/pr100680.c
! 7ac80b11ee6122eab32803ef7c45befe  gcc/testsuite/gcc.dg/pr100781.c
  a79b25dcfa2c7136ecdca2ad37927dff  gcc/testsuite/gcc.dg/pr100788.c
  807e819f46c5553946b5fd3987e81c9f  gcc/testsuite/gcc.dg/pr100790.c
  5e25293a3107689203988f78c03ea859  gcc/testsuite/gcc.dg/pr100791.c
--- 43901,43910 ----
  380f5ed401661497e77142772a24054a  gcc/testsuite/gcc.dg/pr100521.c
  580ac919e1954ba779b2269203b11211  gcc/testsuite/gcc.dg/pr100547.c
  395736a8e0816a51c506968c1ca01f5d  gcc/testsuite/gcc.dg/pr100563.c
! 6daa69c8cca8c36c6357499a855a73b9  gcc/testsuite/gcc.dg/pr100590.c
  b6d7f7ed4dde3865c140de6c031f2bda  gcc/testsuite/gcc.dg/pr100619.c
  3a4aa573e35026433b0c5710fc8ceed0  gcc/testsuite/gcc.dg/pr100680.c
! 74d2cc6d66d3dd7e2d623ddcf80111a2  gcc/testsuite/gcc.dg/pr100781.c
  a79b25dcfa2c7136ecdca2ad37927dff  gcc/testsuite/gcc.dg/pr100788.c
  807e819f46c5553946b5fd3987e81c9f  gcc/testsuite/gcc.dg/pr100790.c
  5e25293a3107689203988f78c03ea859  gcc/testsuite/gcc.dg/pr100791.c
*************** e280e3138d3f866451e5f7c69bf2af22  gcc/te
*** 41127,41133 ****
  0d03fd02d95149f8c7d54f57fbe17c9a  gcc/testsuite/gcc.dg/pr101028.c
  b20e922d857d70fc849642b04d8aef50  gcc/testsuite/gcc.dg/pr101062.c
  2acf2b8e09ad9bce35eeea4f93f5ebde  gcc/testsuite/gcc.dg/pr101145-1.c
! 920fe93e08111a63fe4013475dee7163  gcc/testsuite/gcc.dg/pr101145-2.c
  f18acedefe9e23843bfc481cdeb419ad  gcc/testsuite/gcc.dg/pr101156.c
  7952b8b6d14ea9a6e15744297329db7c  gcc/testsuite/gcc.dg/pr101170.c
  f7653fb72f02585ca98c4cb008a53e32  gcc/testsuite/gcc.dg/pr101171.c
--- 43915,43921 ----
  0d03fd02d95149f8c7d54f57fbe17c9a  gcc/testsuite/gcc.dg/pr101028.c
  b20e922d857d70fc849642b04d8aef50  gcc/testsuite/gcc.dg/pr101062.c
  2acf2b8e09ad9bce35eeea4f93f5ebde  gcc/testsuite/gcc.dg/pr101145-1.c
! 0dc8c28f4cc0327cf4962b15090fd83c  gcc/testsuite/gcc.dg/pr101145-2.c
  f18acedefe9e23843bfc481cdeb419ad  gcc/testsuite/gcc.dg/pr101156.c
  7952b8b6d14ea9a6e15744297329db7c  gcc/testsuite/gcc.dg/pr101170.c
  f7653fb72f02585ca98c4cb008a53e32  gcc/testsuite/gcc.dg/pr101171.c
*************** cf17d565e22770879e54b6d0b5f98c72  gcc/te
*** 41142,41147 ****
--- 43930,43941 ----
  51fa849c28379b9795b20cbcf5bd8067  gcc/testsuite/gcc.dg/pr101496.c
  82ba8f6dfa7a7a8e6eb6d73d5c8df572  gcc/testsuite/gcc.dg/pr101497.c
  fea990856f92887377e1bb43b4bd09e3  gcc/testsuite/gcc.dg/pr101741.c
+ 07ef659451572ce97fd0afbe444142e4  gcc/testsuite/gcc.dg/pr101836.c
+ 0703faa789a431b6ad04398656468f62  gcc/testsuite/gcc.dg/pr101836_1.c
+ d55157cee78d06e4d19028939549708f  gcc/testsuite/gcc.dg/pr101836_2.c
+ 0b0050222d217ad74a3d8cd1b277c371  gcc/testsuite/gcc.dg/pr101836_3.c
+ 9e8cbfa3dac14212a1985707843f0f36  gcc/testsuite/gcc.dg/pr101836_4.c
+ 5b8385c501579191610e18648375493b  gcc/testsuite/gcc.dg/pr101836_5.c
  b4b433110fcae56d605360d13c82f748  gcc/testsuite/gcc.dg/pr101858.c
  dc76b4ca81299363e06ffe39774d173b  gcc/testsuite/gcc.dg/pr101885.c
  f116a7bdcdcc6c4004a71ae0ab006702  gcc/testsuite/gcc.dg/pr101938.c
*************** a8b0cac4c5b824611e6fc2a6a978218a  gcc/te
*** 41160,41175 ****
  18cfd35dbe31380111f765852cb9f992  gcc/testsuite/gcc.dg/pr102463.c
  91844853e35a7b41b30a3460cc946f81  gcc/testsuite/gcc.dg/pr102478.c
  3eb7714752e61f1a5b88bd014f660753  gcc/testsuite/gcc.dg/pr102511.c
  df2f72644b9e7b16a9e33105c82facca  gcc/testsuite/gcc.dg/pr102585.c
  b3e2a2ba14426fc2ba1209ef4ff954ad  gcc/testsuite/gcc.dg/pr102648.c
  5bcdca82a70510b0c530045042c5c6ae  gcc/testsuite/gcc.dg/pr102738.c
  5c4103f875aaa65db72170f1b652beb8  gcc/testsuite/gcc.dg/pr102764.c
  d2b6c61457f02b40823ad6f31b29f47c  gcc/testsuite/gcc.dg/pr102798.c
  1c554752a4a7e252e75eab3295cf4334  gcc/testsuite/gcc.dg/pr102827.c
! 0ca26b5e69bf256e6d2b10ce1a9adda2  gcc/testsuite/gcc.dg/pr102892-1.c
  3cc3131778a8709d2331de3fa630fd84  gcc/testsuite/gcc.dg/pr102892-2.c
  c045562529677f5cb7d484f9a1528485  gcc/testsuite/gcc.dg/pr102897.c
! 5f55b331fa4581e733b6451f9aa47cdd  gcc/testsuite/gcc.dg/pr102983.c
  29252f4cd0235dafa4a0aa5783ea4e2a  gcc/testsuite/gcc.dg/pr103003.c
  11b2d6d5fe2e6b7e01f567ce3bb16ad4  gcc/testsuite/gcc.dg/pr103028.c
  7ee0c5d807884f2fbee926b391d31764  gcc/testsuite/gcc.dg/pr103062.c
--- 43954,43973 ----
  18cfd35dbe31380111f765852cb9f992  gcc/testsuite/gcc.dg/pr102463.c
  91844853e35a7b41b30a3460cc946f81  gcc/testsuite/gcc.dg/pr102478.c
  3eb7714752e61f1a5b88bd014f660753  gcc/testsuite/gcc.dg/pr102511.c
+ 7491684702f6af73c0a347e76d1d969e  gcc/testsuite/gcc.dg/pr102540.c
  df2f72644b9e7b16a9e33105c82facca  gcc/testsuite/gcc.dg/pr102585.c
  b3e2a2ba14426fc2ba1209ef4ff954ad  gcc/testsuite/gcc.dg/pr102648.c
+ c6e55a9a6cbe44338a2b134ba89264fd  gcc/testsuite/gcc.dg/pr102650.c
  5bcdca82a70510b0c530045042c5c6ae  gcc/testsuite/gcc.dg/pr102738.c
  5c4103f875aaa65db72170f1b652beb8  gcc/testsuite/gcc.dg/pr102764.c
  d2b6c61457f02b40823ad6f31b29f47c  gcc/testsuite/gcc.dg/pr102798.c
  1c554752a4a7e252e75eab3295cf4334  gcc/testsuite/gcc.dg/pr102827.c
! ef83c05a9501eeb220dfbcfbe176575e  gcc/testsuite/gcc.dg/pr102872.c
! 4ee176875f42b14e61bf5f40423c6ca3  gcc/testsuite/gcc.dg/pr102892-1.c
  3cc3131778a8709d2331de3fa630fd84  gcc/testsuite/gcc.dg/pr102892-2.c
  c045562529677f5cb7d484f9a1528485  gcc/testsuite/gcc.dg/pr102897.c
! c8eff45b51c94e89b3b09b1a17943808  gcc/testsuite/gcc.dg/pr102950.c
! 1eeb7a06e5c02c8e753d91ead59c0fde  gcc/testsuite/gcc.dg/pr102983.c
  29252f4cd0235dafa4a0aa5783ea4e2a  gcc/testsuite/gcc.dg/pr103003.c
  11b2d6d5fe2e6b7e01f567ce3bb16ad4  gcc/testsuite/gcc.dg/pr103028.c
  7ee0c5d807884f2fbee926b391d31764  gcc/testsuite/gcc.dg/pr103062.c
*************** d8eb2a227e52aa5ee92bca485c5024a1  gcc/te
*** 41187,41192 ****
--- 43985,43991 ----
  f47fc011aefa5a0cde8039c05a34cfc0  gcc/testsuite/gcc.dg/pr103268-2.c
  b624a6f5be33cbb4c028eaa960562cf7  gcc/testsuite/gcc.dg/pr103270.c
  13acd10ba9ce006fd5d74e8b7a3767a1  gcc/testsuite/gcc.dg/pr103277.c
+ b96dd7512bd361f35bb0182715a8b4ab  gcc/testsuite/gcc.dg/pr103356-1.c
  254f4a829c77c6e9465eeac8bf6acbac  gcc/testsuite/gcc.dg/pr103359.c
  250254752bed666b5d72300a0db5cab9  gcc/testsuite/gcc.dg/pr103406.c
  2cdc02ab045994a9364118673417319d  gcc/testsuite/gcc.dg/pr103431.c
*************** f339e15d0bfc50d3400a3fcd67b1e48f  gcc/te
*** 41197,41208 ****
--- 43996,44009 ----
  935af8248001b82d641b2af34c047572  gcc/testsuite/gcc.dg/pr103594.c
  18e73d7fe225bed88611a5c17d298a3f  gcc/testsuite/gcc.dg/pr103721-2.c
  8d33e065fb7ed80e1325731c58eaa0a2  gcc/testsuite/gcc.dg/pr103721.c
+ 07e7c1461840964f3ae4ee460ab89407  gcc/testsuite/gcc.dg/pr103770.c
  22d5541869a19caa77db2bab79e6fe3b  gcc/testsuite/gcc.dg/pr103775.c
  060dc7a8eaffd96f9d9b05272e455d2b  gcc/testsuite/gcc.dg/pr103793.c
  dc3443d0ab55ff4dd9d3ef69fb42bfaa  gcc/testsuite/gcc.dg/pr103808.c
  220dde695d4a28e6fb719f38a397ed0e  gcc/testsuite/gcc.dg/pr103837.c
  8eab078f5fe12fd259103c4e2fa30713  gcc/testsuite/gcc.dg/pr103838.c
  c491227c29f1ea6f72ca84ad07d1b0bd  gcc/testsuite/gcc.dg/pr103845.c
+ e5a36e1443ebdb69deb9b43102e8e931  gcc/testsuite/gcc.dg/pr103859.c
  a4874d44c0ba05d6340ed06bc5958e53  gcc/testsuite/gcc.dg/pr103860.c
  8226e377d45ef0ffeb7badfb04740ab9  gcc/testsuite/gcc.dg/pr10392-1.c
  63c1519148bdbf875d5e04e0ba238c3d  gcc/testsuite/gcc.dg/pr103961.c
*************** af41be766b7c7339308e509fc8d2cb53  gcc/te
*** 41218,41230 ****
  16d97403010e8d86071ea77ab4fe6422  gcc/testsuite/gcc.dg/pr104420-4.c
  23c67db89513923bf73a932b11f90927  gcc/testsuite/gcc.dg/pr104427.c
  5b838c151f5d2d826af2c42f7dcf66cb  gcc/testsuite/gcc.dg/pr104459.c
! 160540a96840a88fee73e5380198b7d0  gcc/testsuite/gcc.dg/pr104464.c
  3688a84b1aadef3f232ccfaeba375afb  gcc/testsuite/gcc.dg/pr104506-1.c
  5119493fa63ae8a1b1cd0a6fcfea689a  gcc/testsuite/gcc.dg/pr104506-2.c
  fee51c1affab287931d11eb36868a20a  gcc/testsuite/gcc.dg/pr104506-3.c
  c055fb27d1a723e98ef6bd9290551487  gcc/testsuite/gcc.dg/pr104511.c
  fa765845c0ef9f86423a7decf5b4abe1  gcc/testsuite/gcc.dg/pr104522.c
  338f3ba74719d172ad1ca16b71b9f893  gcc/testsuite/gcc.dg/pr104526.c
  1198a55fbf04ab73754710d047131b2b  gcc/testsuite/gcc.dg/pr104544.c
  6167afae4871b9c4c8baaf5903d51c46  gcc/testsuite/gcc.dg/pr104558.c
  b81e7399fabf9263127ce516a240a32c  gcc/testsuite/gcc.dg/pr104612.c
--- 44019,44032 ----
  16d97403010e8d86071ea77ab4fe6422  gcc/testsuite/gcc.dg/pr104420-4.c
  23c67db89513923bf73a932b11f90927  gcc/testsuite/gcc.dg/pr104427.c
  5b838c151f5d2d826af2c42f7dcf66cb  gcc/testsuite/gcc.dg/pr104459.c
! bd2c6d60bae52a50ffaa396d03966172  gcc/testsuite/gcc.dg/pr104464.c
  3688a84b1aadef3f232ccfaeba375afb  gcc/testsuite/gcc.dg/pr104506-1.c
  5119493fa63ae8a1b1cd0a6fcfea689a  gcc/testsuite/gcc.dg/pr104506-2.c
  fee51c1affab287931d11eb36868a20a  gcc/testsuite/gcc.dg/pr104506-3.c
  c055fb27d1a723e98ef6bd9290551487  gcc/testsuite/gcc.dg/pr104511.c
  fa765845c0ef9f86423a7decf5b4abe1  gcc/testsuite/gcc.dg/pr104522.c
  338f3ba74719d172ad1ca16b71b9f893  gcc/testsuite/gcc.dg/pr104526.c
+ 609961df11661a11286df49d3cff2e62  gcc/testsuite/gcc.dg/pr104530.c
  1198a55fbf04ab73754710d047131b2b  gcc/testsuite/gcc.dg/pr104544.c
  6167afae4871b9c4c8baaf5903d51c46  gcc/testsuite/gcc.dg/pr104558.c
  b81e7399fabf9263127ce516a240a32c  gcc/testsuite/gcc.dg/pr104612.c
*************** d8ac6e8cccf7bcb1070140ae44ef117a  gcc/te
*** 41237,41243 ****
--- 44039,44047 ----
  2968ba86ec9be073192c7975ec531fb3  gcc/testsuite/gcc.dg/pr104786.c
  8c0ed1baab74c7b05d89e60fb2786609  gcc/testsuite/gcc.dg/pr104910.c
  624cf1d4b1b58ba0e2c492d29bba7754  gcc/testsuite/gcc.dg/pr104975.c
+ 9f7acbb30f08c556606caa81d9d748e9  gcc/testsuite/gcc.dg/pr104992.c
  b86dfb95591cedd4e8f9612c0d76e923  gcc/testsuite/gcc.dg/pr105049.c
+ f6daf3140a9707899657962982ad2826  gcc/testsuite/gcc.dg/pr105065.c
  d08f59d459c7f9fa390c668c1f6b2b4f  gcc/testsuite/gcc.dg/pr105080.c
  f8d1a8342ac7db3ad1336ab098edd372  gcc/testsuite/gcc.dg/pr105094.c
  194a2dad6f902fdbaa5355dc3fa0ebe6  gcc/testsuite/gcc.dg/pr105140.c
*************** cc6ac8d68c79338a580a123141221e8b  gcc/te
*** 41255,41270 ****
--- 44059,44183 ----
  c3d8ae3e46240608f001dd6a702ebf0b  gcc/testsuite/gcc.dg/pr105331.c
  df5c854ae6b61ad7980dc609c12732b5  gcc/testsuite/gcc.dg/pr105333.c
  cfa158c5ec1ec68947ea7cf84ebac9f7  gcc/testsuite/gcc.dg/pr105376.c
+ 3b605e51709051d88ad7da1a993a5ff3  gcc/testsuite/gcc.dg/pr105414.c
+ 96a698fad0b39e94d66e029bdeb57930  gcc/testsuite/gcc.dg/pr105415.c
  6c079381fc5bea8ba966068e353963c8  gcc/testsuite/gcc.dg/pr105455.c
  70752dbf95282e3e1682d161dec96c60  gcc/testsuite/gcc.dg/pr105458.c
  8f69648258c8f27361e18186db792348  gcc/testsuite/gcc.dg/pr105461.c
  bd694253207b0e4d0a25d5c16b288b5c  gcc/testsuite/gcc.dg/pr105528.c
+ c1c400df202083158ced44d2e89c6c0b  gcc/testsuite/gcc.dg/pr105591.c
+ 9e6c2e731a3d7f363d04d35feadca314  gcc/testsuite/gcc.dg/pr105597.c
+ 56c0bd9327182434c23201e42a562b2c  gcc/testsuite/gcc.dg/pr105630.c
  96d62d7595a54c11e88844900871d456  gcc/testsuite/gcc.dg/pr105635.c
+ 7cfe0252fb06e6e2b62656ef015985b6  gcc/testsuite/gcc.dg/pr105660-1.c
+ 0ceb4dedc7a251ff1d9fc92f7d657369  gcc/testsuite/gcc.dg/pr105660-2.c
+ 7a17ba9a0aa919417290b69137a34761  gcc/testsuite/gcc.dg/pr105676.c
+ 29abb9eec4d8c512efde5db7fedb5f8e  gcc/testsuite/gcc.dg/pr105763.c
+ 3eecbad8adf883985a8182ede3852cb0  gcc/testsuite/gcc.dg/pr105770.c
+ 2207c4a0b7a6da52b2ec26f5bf39a6b9  gcc/testsuite/gcc.dg/pr105825.c
+ 6b33bb77cadcbae3d990e7ab45ad03f5  gcc/testsuite/gcc.dg/pr105835.c
+ 7aa8b2b488f023e583cd6e55b561305c  gcc/testsuite/gcc.dg/pr105853.c
+ 117927dac9db8b5c56a299e6548c7534  gcc/testsuite/gcc.dg/pr105856.c
+ 9c3d1e5699081a64f9a7371ec1bf079f  gcc/testsuite/gcc.dg/pr105911.c
  5450efb71a4677ee6bce61dee16ec4eb  gcc/testsuite/gcc.dg/pr105969.c
+ fe172baae6e5e7cbaa701cf25aed6296  gcc/testsuite/gcc.dg/pr105972.c
  de5d81445ad859074ca4d853ab220c74  gcc/testsuite/gcc.dg/pr106027.c
+ 4bbdf9e409c578c187260be918b92e8a  gcc/testsuite/gcc.dg/pr106061.c
  7fb0f2437939b99bbac4d027b90b6c84  gcc/testsuite/gcc.dg/pr106063.c
+ 0b79f13def5875cdcd6ff7cf2914ae2d  gcc/testsuite/gcc.dg/pr106099.c
  56b89433876918f481cf5fe03041c940  gcc/testsuite/gcc.dg/pr106114.c
  289edb9f71d96816c053cd6cf90ff744  gcc/testsuite/gcc.dg/pr106189.c
+ 1f4be7e07d7f460c7594bec7acb069fb  gcc/testsuite/gcc.dg/pr106198.c
+ 9dc72ac5ba62dd8f65968a481c0d9d96  gcc/testsuite/gcc.dg/pr106243-1.c
+ 686d5cd37d847890054a9f9a4dd372bd  gcc/testsuite/gcc.dg/pr106243.c
+ 14477675dd598ffe33bceba6701a2544  gcc/testsuite/gcc.dg/pr106249.c
+ 1839e2430f2b9ef99ac40294dbd5c35d  gcc/testsuite/gcc.dg/pr106264.c
+ ae823fe6c503b8d3ab2c78c40ec443da  gcc/testsuite/gcc.dg/pr106278.c
+ f3f94c6c846098a44b824a2a97da9053  gcc/testsuite/gcc.dg/pr106379-1.c
+ 7532e844fdf56a837eb37652b272feb3  gcc/testsuite/gcc.dg/pr106397.c
+ c748e71e8ac256d9575c8ae2120aab9f  gcc/testsuite/gcc.dg/pr106421.c
+ 122c07534d40d5ce912a266ebc276bb2  gcc/testsuite/gcc.dg/pr106510.c
+ aff98ecaeb2732bfef9a1b217335bb20  gcc/testsuite/gcc.dg/pr106519.c
+ 9605daec39a2a2f38931e6f175e753d9  gcc/testsuite/gcc.dg/pr106617.c
+ 8d540a2d7222309e86a2909c7649a543  gcc/testsuite/gcc.dg/pr106621.c
+ c475e08b8000c7ada2ebc07c02d67b0d  gcc/testsuite/gcc.dg/pr106719.c
+ 0e355b7d94adbe79c01692ea976e52ba  gcc/testsuite/gcc.dg/pr106781.c
+ dd149382d90a0c6fd1c40fc8c4c1335e  gcc/testsuite/gcc.dg/pr106844.c
+ e7887b790a9f16077e9a08fa13b5e23b  gcc/testsuite/gcc.dg/pr106923.c
+ bb28219e351c67a206d2415c89db0aa1  gcc/testsuite/gcc.dg/pr106938.c
+ d39b4203470156b99b330266683a9790  gcc/testsuite/gcc.dg/pr107107.c
+ ebccf814e2974ae2d3fef79375fc2a74  gcc/testsuite/gcc.dg/pr107109.c
+ 8dd35121cb6e8e3f018e6f4551ce80b1  gcc/testsuite/gcc.dg/pr107127.c
+ 9ab2aff363e0823d9616d81769d4729d  gcc/testsuite/gcc.dg/pr107131.c
+ c16717b833d5db5a9a8e0b0649ed37bf  gcc/testsuite/gcc.dg/pr107262.c
+ 4f0d5b8c78199ceef742ba745999898c  gcc/testsuite/gcc.dg/pr107300.c
+ 0215d2ef3b9000a72563a0a5de550edf  gcc/testsuite/gcc.dg/pr107389.c
+ e93299ab13ea49e64f3354c006946b72  gcc/testsuite/gcc.dg/pr107505.c
+ 5ad9ea4546fd246fa3030e31b6e8525c  gcc/testsuite/gcc.dg/pr107523.c
+ 28e818f9bc480a7c87c0c9b03c0121ea  gcc/testsuite/gcc.dg/pr107547.c
+ d64d53420ac059d0a4813bb6b0e625bd  gcc/testsuite/gcc.dg/pr107554.c
+ 08de5247efbcbc99d7fec40b33ebcd24  gcc/testsuite/gcc.dg/pr107570.c
+ 974e2a521a10196206be8afa62a1233b  gcc/testsuite/gcc.dg/pr107585.c
+ e8aa9aecaf909f80bb293391d3cbff23  gcc/testsuite/gcc.dg/pr107618.c
+ bfe683bab17f972c72cffcb817291d2e  gcc/testsuite/gcc.dg/pr107686.c
+ 90b413a4271c49f08bcd093300aaec2b  gcc/testsuite/gcc.dg/pr107787.c
+ af78a3b891c82dc5de6e1d27319cff32  gcc/testsuite/gcc.dg/pr107805-1.c
+ 69665fa155e8b9a9ae8e1c2c06f79732  gcc/testsuite/gcc.dg/pr107805-2.c
+ 098e26474f2d8d62843aadfbdb935013  gcc/testsuite/gcc.dg/pr107846.c
+ 19724dd3bb7e549b1d58a7a696392572  gcc/testsuite/gcc.dg/pr107937.c
+ 66cf99f0b8a24303327f1f5543248c3b  gcc/testsuite/gcc.dg/pr107967-1.c
+ 856756e7fb251e8a3883170e78ec1cf3  gcc/testsuite/gcc.dg/pr107967-2.c
+ 36c1d5b1df984f2219a47b6011d26aa4  gcc/testsuite/gcc.dg/pr107967-3.c
+ 29bef005daafa096eb2fea0a0d724444  gcc/testsuite/gcc.dg/pr107975.c
+ 0e355bc6ddeaf24bb5f47834594ac0b8  gcc/testsuite/gcc.dg/pr108043.c
+ 4b0c665c9ac4f4701760e4205e109f61  gcc/testsuite/gcc.dg/pr108095.c
+ daebdf64898476146d541014e20e03da  gcc/testsuite/gcc.dg/pr108117.c
+ 3aa3d774e528445c83a111a977c5ea5d  gcc/testsuite/gcc.dg/pr108139.c
+ 76e40e99e3864dc91727ad4aa957999e  gcc/testsuite/gcc.dg/pr108164.c
+ f368e46c0bbbce491418dab7b354f403  gcc/testsuite/gcc.dg/pr108241.c
+ bd863f368e66222e04e9d267d7b2808e  gcc/testsuite/gcc.dg/pr108263.c
+ c056feceecb1e4c44f6bf01a21cb6e9d  gcc/testsuite/gcc.dg/pr108264.c
+ 73222b0b09cbbe4de059f42669acf64e  gcc/testsuite/gcc.dg/pr108306.c
+ 90fdc7b6989fe4e07d3e050a2063ce4b  gcc/testsuite/gcc.dg/pr108308.c
+ 95d340ae95552540d12b3e4690571455  gcc/testsuite/gcc.dg/pr108356.c
+ 562e17ab12ecd12a1807516aa80daaaa  gcc/testsuite/gcc.dg/pr108359.c
+ a42a27ad33f635fa46d4d20d1c0d8634  gcc/testsuite/gcc.dg/pr108375-1.c
+ 3e7c3041f5bbcedffb2450c7db9a556b  gcc/testsuite/gcc.dg/pr108375-2.c
+ f8f2fb0ca21e49421f7660d4a63a0d99  gcc/testsuite/gcc.dg/pr108385.c
+ f30b1102f1055492125a5e7ac2f4cf1e  gcc/testsuite/gcc.dg/pr108387.c
+ 60ea2c19441da71df58ec088daf3d829  gcc/testsuite/gcc.dg/pr108447.c
+ de94641db5f202a1a636dbdf4e798129  gcc/testsuite/gcc.dg/pr108449.c
+ 138236578f41448aaca50b7c8d6a4881  gcc/testsuite/gcc.dg/pr108463.c
+ e0baf0198b26b94a0e92182918c52449  gcc/testsuite/gcc.dg/pr108573.c
+ 70097d6efbf012477656d01018688b7a  gcc/testsuite/gcc.dg/pr108582-1.c
+ 58629ccc236a40b8dec9ecfe5aa35f2a  gcc/testsuite/gcc.dg/pr108625.c
+ a7cbf4a480a7e4f83515bec5365194b1  gcc/testsuite/gcc.dg/pr108655.c
+ 6108a5c745cc8eb1105c44fbae91cc31  gcc/testsuite/gcc.dg/pr108657.c
+ 601a4d114636a020de8efde04e19967e  gcc/testsuite/gcc.dg/pr108688.c
+ 5b3e9146fc31e7a7e8623f94f2118fac  gcc/testsuite/gcc.dg/pr108691.c
+ 21a62b0e858621e46700af10fbe121e4  gcc/testsuite/gcc.dg/pr108692.c
+ 10fcf1d08f9a39199beb3e72d1836739  gcc/testsuite/gcc.dg/pr108787.c
+ e1e8d414ac951f379fb6ccff06784511  gcc/testsuite/gcc.dg/pr108805.c
+ 70cc568eeb5214c97b9d32241c816bf9  gcc/testsuite/gcc.dg/pr108819.c
+ 318d440f5a0935adb9118352732b7a05  gcc/testsuite/gcc.dg/pr108855.c
+ 754d02670a78a773abeaaad61aaf1a0f  gcc/testsuite/gcc.dg/pr108862.c
+ 9684749b7efa4713291fbab44438d45d  gcc/testsuite/gcc.dg/pr108868.c
+ 9b50390957b3a6b9f2fe49adac18f30b  gcc/testsuite/gcc.dg/pr108947.c
+ 971cdaa7be51531f55247a24459108ed  gcc/testsuite/gcc.dg/pr108970.c
+ b2cc9b3414f5f8e47e69d7429d38f51b  gcc/testsuite/gcc.dg/pr109008.c
+ 512c120b715e6b5d557ed0a011de510f  gcc/testsuite/gcc.dg/pr109115.c
+ b108b00c49aeb9d5d164d8d72e3dcc50  gcc/testsuite/gcc.dg/pr109187.c
+ c66fee8d96a854eabadb8ee243caabd6  gcc/testsuite/gcc.dg/pr109230.c
+ fef759074d2405b19218d52a2f1d4c87  gcc/testsuite/gcc.dg/pr109238.c
+ 024ef2629cf4c28ff2dfffc47f34bf27  gcc/testsuite/gcc.dg/pr109274.c
+ 0c748fdbad039c05fc772087b11f05ae  gcc/testsuite/gcc.dg/pr109301.c
+ 7fdf5b5bab6aec81de409bfb1430ba9f  gcc/testsuite/gcc.dg/pr109303.c
+ b4bb8ae97fc12f1c66b22b9149ca7a2b  gcc/testsuite/gcc.dg/pr109304.c
+ 26cb03e00d88f4257622852ed3e5369b  gcc/testsuite/gcc.dg/pr109327.c
+ 45f9003776530da05643fd2fcd9640b8  gcc/testsuite/gcc.dg/pr109392.c
+ 8c5ddd68de1ed874eb52f91b7136909e  gcc/testsuite/gcc.dg/pr109410.c
+ 86a351ab8a6255c1c7e39f673dcac916  gcc/testsuite/gcc.dg/pr109417.c
+ 761ec38d2e9b593ffd05c4d7af63acfb  gcc/testsuite/gcc.dg/pr109583.c
  860f163dcd0b252ea3f85323bc959a7d  gcc/testsuite/gcc.dg/pr11459-1.c
  e164a736918661d669864e3645da290c  gcc/testsuite/gcc.dg/pr11492.c
  3b83403729a3686d25552352bf0c4577  gcc/testsuite/gcc.dg/pr11864-1.c
*************** e6f9ed128f23b888c1a7db1a1f348e4f  gcc/te
*** 41399,41405 ****
  96010d372019692740562795288d038e  gcc/testsuite/gcc.dg/pr23584.c
  e8905d3412d69e651a0a09ba3b8bbe97  gcc/testsuite/gcc.dg/pr23623.c
  8e4083bccd7d7e2d0baff96c0dd08540  gcc/testsuite/gcc.dg/pr23818.c
! 70df517fc59ab98a6afa258b97002a6d  gcc/testsuite/gcc.dg/pr23911.c
  edd85b2182f6d00b78ea2848e29dbce1  gcc/testsuite/gcc.dg/pr24101-1.i
  5e75074ea2ae8ca590caee79c73e6620  gcc/testsuite/gcc.dg/pr24101-2.i
  ffc7a2d9d7980ad0112c569fcdb2558a  gcc/testsuite/gcc.dg/pr24225.c
--- 44312,44318 ----
  96010d372019692740562795288d038e  gcc/testsuite/gcc.dg/pr23584.c
  e8905d3412d69e651a0a09ba3b8bbe97  gcc/testsuite/gcc.dg/pr23623.c
  8e4083bccd7d7e2d0baff96c0dd08540  gcc/testsuite/gcc.dg/pr23818.c
! d3b70d030dccc3e44b846ca376722dfa  gcc/testsuite/gcc.dg/pr23911.c
  edd85b2182f6d00b78ea2848e29dbce1  gcc/testsuite/gcc.dg/pr24101-1.i
  5e75074ea2ae8ca590caee79c73e6620  gcc/testsuite/gcc.dg/pr24101-2.i
  ffc7a2d9d7980ad0112c569fcdb2558a  gcc/testsuite/gcc.dg/pr24225.c
*************** d475727c04d7b0890bdc8df05799bebc  gcc/te
*** 41415,41420 ****
--- 44328,44334 ----
  93d9e50c249a057642c823d88736c8d3  gcc/testsuite/gcc.dg/pr24820.c
  fec5da03a0c2deda5e2e23320eb104f9  gcc/testsuite/gcc.dg/pr25023.c
  08cad12653e74b3a4fc2b4e71f0e8ae7  gcc/testsuite/gcc.dg/pr25376.c
+ c867062b1b8baea9be302127b5ece36b  gcc/testsuite/gcc.dg/pr25521.c
  8ba65ccc2fce8c161f1b603190ebfe45  gcc/testsuite/gcc.dg/pr25529.c
  e809d3f90dc75b0418bcf7babfae796c  gcc/testsuite/gcc.dg/pr25530.c
  0e19591f58f2ec1d28818d979a7176c5  gcc/testsuite/gcc.dg/pr25559.c
*************** b49231117065e2d837d054b724055511  gcc/te
*** 41491,41497 ****
  51ce9c94a8adba4173a5e911b6cff35b  gcc/testsuite/gcc.dg/pr30137-2.c
  cd332e620ec60d4412ded051731a9400  gcc/testsuite/gcc.dg/pr30172-1.c
  c182d03bce69cbc3b1b5abeffa1ba863  gcc/testsuite/gcc.dg/pr30189.c
! 184056eea4750de0a71ab7c56587a44a  gcc/testsuite/gcc.dg/pr30260.c
  20a61f6930831773474c9fea96678a54  gcc/testsuite/gcc.dg/pr30286.c
  ca5e9b5f5a638fa1bf92d74546e76cb6  gcc/testsuite/gcc.dg/pr30360.c
  ae4bf96bdc8e70590c5576f435e6652b  gcc/testsuite/gcc.dg/pr30457.c
--- 44405,44411 ----
  51ce9c94a8adba4173a5e911b6cff35b  gcc/testsuite/gcc.dg/pr30137-2.c
  cd332e620ec60d4412ded051731a9400  gcc/testsuite/gcc.dg/pr30172-1.c
  c182d03bce69cbc3b1b5abeffa1ba863  gcc/testsuite/gcc.dg/pr30189.c
! 4921129f8218d1dae97c20f8d69481b6  gcc/testsuite/gcc.dg/pr30260.c
  20a61f6930831773474c9fea96678a54  gcc/testsuite/gcc.dg/pr30286.c
  ca5e9b5f5a638fa1bf92d74546e76cb6  gcc/testsuite/gcc.dg/pr30360.c
  ae4bf96bdc8e70590c5576f435e6652b  gcc/testsuite/gcc.dg/pr30457.c
*************** a5b131ce7b0ee006d66f2f1d89605944  gcc/te
*** 41896,41902 ****
  78056e976ecd239614632c4a7189bbc6  gcc/testsuite/gcc.dg/pr46585.c
  035b086fe2da3c833f5c2d21a6b75dda  gcc/testsuite/gcc.dg/pr46614.c
  8e0cbd622a0d0f0e00d409d7def41aa7  gcc/testsuite/gcc.dg/pr46620.c
! e2b77f46396eb8adba5d935eedd06818  gcc/testsuite/gcc.dg/pr46647.c
  b57afb306ccedb17511e56c52f04a6a9  gcc/testsuite/gcc.dg/pr46674.c
  fbce19089fab978e34fea848b036fbcc  gcc/testsuite/gcc.dg/pr46675.c
  59d00d3c7293322dc7c28de584ad6603  gcc/testsuite/gcc.dg/pr46685.c
--- 44810,44816 ----
  78056e976ecd239614632c4a7189bbc6  gcc/testsuite/gcc.dg/pr46585.c
  035b086fe2da3c833f5c2d21a6b75dda  gcc/testsuite/gcc.dg/pr46614.c
  8e0cbd622a0d0f0e00d409d7def41aa7  gcc/testsuite/gcc.dg/pr46620.c
! 62d79d565a917d1edeab785a9fbb1b41  gcc/testsuite/gcc.dg/pr46647.c
  b57afb306ccedb17511e56c52f04a6a9  gcc/testsuite/gcc.dg/pr46674.c
  fbce19089fab978e34fea848b036fbcc  gcc/testsuite/gcc.dg/pr46675.c
  59d00d3c7293322dc7c28de584ad6603  gcc/testsuite/gcc.dg/pr46685.c
*************** a122916cb52fd117f5920fe8161fd4fc  gcc/te
*** 42123,42128 ****
--- 45037,45043 ----
  8f1936750f8bd3feaa58bcfae63f414f  gcc/testsuite/gcc.dg/pr54087.c
  b81900d9ad3fcbe05c4ed65ac7256e11  gcc/testsuite/gcc.dg/pr54113.c
  07824df135f4349df5c421e2761c7ecc  gcc/testsuite/gcc.dg/pr54121.c
+ ea5f69dac6c7008be4f907d24e559c42  gcc/testsuite/gcc.dg/pr54346.c
  d29cdb734b585413f64cca717aec325c  gcc/testsuite/gcc.dg/pr54355.c
  8a2ea91a96747976b46923fd8abd89fc  gcc/testsuite/gcc.dg/pr54363.c
  612ee5bfe180d9a9545ce42edbf4098c  gcc/testsuite/gcc.dg/pr54472.c
*************** d2c91f0601aece029dd3340da8167e6d  gcc/te
*** 42284,42290 ****
  fd6d55cfa9bf35d351e1a730e13d5043  gcc/testsuite/gcc.dg/pr61058.c
  e2d94f81ab73335d50800841dbd4b12c  gcc/testsuite/gcc.dg/pr61060.c
  5a9d386362e104a85e47611c5e368830  gcc/testsuite/gcc.dg/pr61077.c
! 668db4d4d62dd5089d271a0fcfd2c3b2  gcc/testsuite/gcc.dg/pr61096-1.c
  e9f7cfac9bbb82f94ba17e371af853b0  gcc/testsuite/gcc.dg/pr61096-2.c
  b358e4a8210bfc8692a1c2a738bba969  gcc/testsuite/gcc.dg/pr61158.c
  4f2f3101076ad61604b0b0a351c21bab  gcc/testsuite/gcc.dg/pr61162-2.c
--- 45199,45205 ----
  fd6d55cfa9bf35d351e1a730e13d5043  gcc/testsuite/gcc.dg/pr61058.c
  e2d94f81ab73335d50800841dbd4b12c  gcc/testsuite/gcc.dg/pr61060.c
  5a9d386362e104a85e47611c5e368830  gcc/testsuite/gcc.dg/pr61077.c
! 70906d02431b537ddb9417d4632f567f  gcc/testsuite/gcc.dg/pr61096-1.c
  e9f7cfac9bbb82f94ba17e371af853b0  gcc/testsuite/gcc.dg/pr61096-2.c
  b358e4a8210bfc8692a1c2a738bba969  gcc/testsuite/gcc.dg/pr61158.c
  4f2f3101076ad61604b0b0a351c21bab  gcc/testsuite/gcc.dg/pr61162-2.c
*************** b2947b2840760e6f6cb66c30dda3f057  gcc/te
*** 42369,42375 ****
  f28c9c90b3d30633266db4aef0f121a8  gcc/testsuite/gcc.dg/pr64454.c
  d2253df541cef89436be2e59701319fc  gcc/testsuite/gcc.dg/pr64465.c
  c6f1921b2165f45723cda892443a24c3  gcc/testsuite/gcc.dg/pr64511.c
! fbcba818644b54491e9e8f3b9c6cd09b  gcc/testsuite/gcc.dg/pr64536.c
  d509539e43ac4a3bf9c9b01c0503ebdf  gcc/testsuite/gcc.dg/pr64563.c
  a797044c31f28103c61f4bcbbfbf1066  gcc/testsuite/gcc.dg/pr64637.c
  84213f413cfa8fc453fa64e68f295dd4  gcc/testsuite/gcc.dg/pr64663.c
--- 45284,45290 ----
  f28c9c90b3d30633266db4aef0f121a8  gcc/testsuite/gcc.dg/pr64454.c
  d2253df541cef89436be2e59701319fc  gcc/testsuite/gcc.dg/pr64465.c
  c6f1921b2165f45723cda892443a24c3  gcc/testsuite/gcc.dg/pr64511.c
! 9173e74c9221989537bb7b9fa47ef9e9  gcc/testsuite/gcc.dg/pr64536.c
  d509539e43ac4a3bf9c9b01c0503ebdf  gcc/testsuite/gcc.dg/pr64563.c
  a797044c31f28103c61f4bcbbfbf1066  gcc/testsuite/gcc.dg/pr64637.c
  84213f413cfa8fc453fa64e68f295dd4  gcc/testsuite/gcc.dg/pr64663.c
*************** df9ac0f0b0a90dbfbd85367929e92e16  gcc/te
*** 42385,42390 ****
--- 45300,45306 ----
  b11601d408bb4cb7b789af28a28c1102  gcc/testsuite/gcc.dg/pr64856.c
  d526334e581a212161787889c4a77fbf  gcc/testsuite/gcc.dg/pr64935-1.c
  3bbd7eb874919c59791ddcbfd50e6e96  gcc/testsuite/gcc.dg/pr64935-2.c
+ c0688b2dc82199a259eef1c1af16b829  gcc/testsuite/gcc.dg/pr64992.c
  a5cf7232405c66d6cf0663fcf55c313b  gcc/testsuite/gcc.dg/pr65050.c
  200af7e30479176902999ddc6f996f56  gcc/testsuite/gcc.dg/pr65063.c
  196812eb950c1c75b24b3d0458f13d82  gcc/testsuite/gcc.dg/pr65066.c
*************** a6e6691be08c011dce70f8c4f435fa04  gcc/te
*** 42397,42403 ****
  eda4de616e3d556c5cf2cdac2af61165  gcc/testsuite/gcc.dg/pr65408.c
  9eb85cf7b2a4f49d0cf4b6d956ca7026  gcc/testsuite/gcc.dg/pr65521.c
  ea26d99c3e63bed7c77e9432ebc467e3  gcc/testsuite/gcc.dg/pr65533.c
! 53ef0788826a36829abad3e8d3207aa2  gcc/testsuite/gcc.dg/pr65658.c
  0e68d50d4e471a450f94e6c9ec2cdcae  gcc/testsuite/gcc.dg/pr65779.c
  b18d1f03bd6df8b188a7d76d61268ecd  gcc/testsuite/gcc.dg/pr65780-1.c
  a896eb27b87b520a15455d8b8240eb87  gcc/testsuite/gcc.dg/pr65780-2.c
--- 45313,45319 ----
  eda4de616e3d556c5cf2cdac2af61165  gcc/testsuite/gcc.dg/pr65408.c
  9eb85cf7b2a4f49d0cf4b6d956ca7026  gcc/testsuite/gcc.dg/pr65521.c
  ea26d99c3e63bed7c77e9432ebc467e3  gcc/testsuite/gcc.dg/pr65533.c
! 1c3adf16b9419f2f92018e9fa8ad72f7  gcc/testsuite/gcc.dg/pr65658.c
  0e68d50d4e471a450f94e6c9ec2cdcae  gcc/testsuite/gcc.dg/pr65779.c
  b18d1f03bd6df8b188a7d76d61268ecd  gcc/testsuite/gcc.dg/pr65780-1.c
  a896eb27b87b520a15455d8b8240eb87  gcc/testsuite/gcc.dg/pr65780-2.c
*************** bafa800c13b3f396448834609a245b9f  gcc/te
*** 42462,42468 ****
  fe7ef582e37d9691649dc50a2e0357f2  gcc/testsuite/gcc.dg/pr68129_1.c
  18d42254aaeedf3ee06abcca146f8308  gcc/testsuite/gcc.dg/pr68134.c
  4f48371433fff03f9edb551983ceaf91  gcc/testsuite/gcc.dg/pr68162-1.c
! 9e24825fee32e5bdf1093efc3ecf6fff  gcc/testsuite/gcc.dg/pr68217.c
  676afbe2455b670ba0309593d30aeb84  gcc/testsuite/gcc.dg/pr68286.c
  244993ecc8cf3673159d65b46a85e488  gcc/testsuite/gcc.dg/pr68306-2.c
  821e8f1eb04499179f7605c25960f8f3  gcc/testsuite/gcc.dg/pr68306-3.c
--- 45378,45384 ----
  fe7ef582e37d9691649dc50a2e0357f2  gcc/testsuite/gcc.dg/pr68129_1.c
  18d42254aaeedf3ee06abcca146f8308  gcc/testsuite/gcc.dg/pr68134.c
  4f48371433fff03f9edb551983ceaf91  gcc/testsuite/gcc.dg/pr68162-1.c
! a9a2c019da5ff110f4ba92e331569775  gcc/testsuite/gcc.dg/pr68217.c
  676afbe2455b670ba0309593d30aeb84  gcc/testsuite/gcc.dg/pr68286.c
  244993ecc8cf3673159d65b46a85e488  gcc/testsuite/gcc.dg/pr68306-2.c
  821e8f1eb04499179f7605c25960f8f3  gcc/testsuite/gcc.dg/pr68306-3.c
*************** a37376ddb8a1fbb5a3af90f0aba6aa18  gcc/te
*** 42514,42520 ****
  f821e0bb25df3f5fd6871eb31d537e47  gcc/testsuite/gcc.dg/pr69421.c
  711611b6b6b7f604b17050b606eb9fb1  gcc/testsuite/gcc.dg/pr69442.c
  1d54a626e863eb5ee8def90ec0440af2  gcc/testsuite/gcc.dg/pr69471-1.c
- 27173645ac5a8549564d57befe8aeb75  gcc/testsuite/gcc.dg/pr69471-2.c
  a41ba5ba24695c25cd59b160570dfed6  gcc/testsuite/gcc.dg/pr69483.c
  a27a7dca8454452a4315a5004cde84ca  gcc/testsuite/gcc.dg/pr69522.c
  8f21aa15682e08266170946e9944e704  gcc/testsuite/gcc.dg/pr69535.c
--- 45430,45435 ----
*************** cd6384cce6d749c94d09ceb5ff92b5da  gcc/te
*** 42586,42591 ****
--- 45501,45508 ----
  dc3c7225f47bd3f37227cbbb8d77804b  gcc/testsuite/gcc.dg/pr71279.c
  3d37594011e2b17c95916d7a93b445c5  gcc/testsuite/gcc.dg/pr71280.c
  d8fb37a88dd6af67ddf26141a988183a  gcc/testsuite/gcc.dg/pr71289.c
+ 33c1716c8b3aeef4c91f6dd22650e0df  gcc/testsuite/gcc.dg/pr71343-1.c
+ f4e935c2436c8b747c6aa45281593ab5  gcc/testsuite/gcc.dg/pr71343-2.c
  2a82552f433c064895a0bf0fdb8bf0c8  gcc/testsuite/gcc.dg/pr71362.c
  14e3e26531f6ffce2191f82ff3109058  gcc/testsuite/gcc.dg/pr71478.c
  6cfa7bf3ef8f4dfa4f7342ec82b8ccd3  gcc/testsuite/gcc.dg/pr71514.c
*************** a45d8a7ea58bf6c772c8fa0d9d6f1ca5  gcc/te
*** 42621,42627 ****
  7b4000046bfacc476cc593d31d924258  gcc/testsuite/gcc.dg/pr77834.c
  8fb4c574c5adf7215daaa687ac164da5  gcc/testsuite/gcc.dg/pr77860.c
  3f2cb00a662837941189f51adc2d8214  gcc/testsuite/gcc.dg/pr77862.c
! 4005ef691c03f6913138a4aa2666aee2  gcc/testsuite/gcc.dg/pr77975.c
  a777a206da2c1bfe3ba53d32fb8b2e9c  gcc/testsuite/gcc.dg/pr78138.c
  427e79810052c59fa2a8c9b43fbdfa29  gcc/testsuite/gcc.dg/pr78148.c
  38c8c806f957a135e11b0daa90cc9de6  gcc/testsuite/gcc.dg/pr78185.c
--- 45538,45544 ----
  7b4000046bfacc476cc593d31d924258  gcc/testsuite/gcc.dg/pr77834.c
  8fb4c574c5adf7215daaa687ac164da5  gcc/testsuite/gcc.dg/pr77860.c
  3f2cb00a662837941189f51adc2d8214  gcc/testsuite/gcc.dg/pr77862.c
! 9bab0eefb1f67d8cb761385476ed39f4  gcc/testsuite/gcc.dg/pr77975.c
  a777a206da2c1bfe3ba53d32fb8b2e9c  gcc/testsuite/gcc.dg/pr78138.c
  427e79810052c59fa2a8c9b43fbdfa29  gcc/testsuite/gcc.dg/pr78148.c
  38c8c806f957a135e11b0daa90cc9de6  gcc/testsuite/gcc.dg/pr78185.c
*************** f06508b7bee3369e1dc3a81328ad4c4f  gcc/te
*** 42663,42669 ****
  9c25129a5f3400435bb046e327b76463  gcc/testsuite/gcc.dg/pr79494.c
  9ec3e8f462eef4a5f6494d9a88865b8c  gcc/testsuite/gcc.dg/pr79499.c
  b0bb2f56a5f149e9206e0c54da377a58  gcc/testsuite/gcc.dg/pr79538.c
! 489b3e216679b50aa195c9691741e9a5  gcc/testsuite/gcc.dg/pr79570.c
  28988c41c40042f95506d21ea70f33cb  gcc/testsuite/gcc.dg/pr79574-2.c
  8757e7055d5c4d752bee007011bd64a9  gcc/testsuite/gcc.dg/pr79574.c
  75d59ed7e119507eaf0cc0b6c021b4ed  gcc/testsuite/gcc.dg/pr79677.c
--- 45580,45586 ----
  9c25129a5f3400435bb046e327b76463  gcc/testsuite/gcc.dg/pr79494.c
  9ec3e8f462eef4a5f6494d9a88865b8c  gcc/testsuite/gcc.dg/pr79499.c
  b0bb2f56a5f149e9206e0c54da377a58  gcc/testsuite/gcc.dg/pr79538.c
! b162833131675e289fcdc7321e2ab3e0  gcc/testsuite/gcc.dg/pr79570.c
  28988c41c40042f95506d21ea70f33cb  gcc/testsuite/gcc.dg/pr79574-2.c
  8757e7055d5c4d752bee007011bd64a9  gcc/testsuite/gcc.dg/pr79574.c
  75d59ed7e119507eaf0cc0b6c021b4ed  gcc/testsuite/gcc.dg/pr79677.c
*************** cb869ebc2ecdd8df754ac18110cd5c9e  gcc/te
*** 42678,42684 ****
  39b75d6facc0c1f0e6bcee0096f12fc7  gcc/testsuite/gcc.dg/pr80100.c
  2d1972d8689c48e2d392ef1c0f4d516a  gcc/testsuite/gcc.dg/pr80112.c
  4d9cf5f5e091fac09a95c0b3443b1aac  gcc/testsuite/gcc.dg/pr80131-1.c
! 95a89903b60c90b43683dff855a12700  gcc/testsuite/gcc.dg/pr80163.c
  4fca98d64bca7d9c536c25b9be965eaa  gcc/testsuite/gcc.dg/pr80170.c
  443d0b623cd055eb8afd363bad4d21c4  gcc/testsuite/gcc.dg/pr80218.c
  84b0e8e3e377514aaf1b169b00c28bee  gcc/testsuite/gcc.dg/pr80286.c
--- 45595,45601 ----
  39b75d6facc0c1f0e6bcee0096f12fc7  gcc/testsuite/gcc.dg/pr80100.c
  2d1972d8689c48e2d392ef1c0f4d516a  gcc/testsuite/gcc.dg/pr80112.c
  4d9cf5f5e091fac09a95c0b3443b1aac  gcc/testsuite/gcc.dg/pr80131-1.c
! a1d3cd5613c9e5ca1c24d73b932461a9  gcc/testsuite/gcc.dg/pr80163.c
  4fca98d64bca7d9c536c25b9be965eaa  gcc/testsuite/gcc.dg/pr80170.c
  443d0b623cd055eb8afd363bad4d21c4  gcc/testsuite/gcc.dg/pr80218.c
  84b0e8e3e377514aaf1b169b00c28bee  gcc/testsuite/gcc.dg/pr80286.c
*************** c63e7806c3d2d9248a99f9d2bbc5619b  gcc/te
*** 42840,42846 ****
  350ecde2080adce3b16ae868d60d4aa7  gcc/testsuite/gcc.dg/pr84841.c
  0b86071d460e95cfac961b6b9e5ddc6d  gcc/testsuite/gcc.dg/pr84853.c
  13a2c6ed4e8585ccd298c2bbe58a83f9  gcc/testsuite/gcc.dg/pr84875.c
! 8c3453d518aaf3430072a5c8b5d6c8db  gcc/testsuite/gcc.dg/pr84877.c
  4294a6745f3296677b46dd5bfd884901  gcc/testsuite/gcc.dg/pr84899.c
  dbf69b3874174be30af9ef57a4dddf35  gcc/testsuite/gcc.dg/pr84941.c
  10853acb471ecaea1557d0f0b8f741e4  gcc/testsuite/gcc.dg/pr84953.c
--- 45757,45763 ----
  350ecde2080adce3b16ae868d60d4aa7  gcc/testsuite/gcc.dg/pr84841.c
  0b86071d460e95cfac961b6b9e5ddc6d  gcc/testsuite/gcc.dg/pr84853.c
  13a2c6ed4e8585ccd298c2bbe58a83f9  gcc/testsuite/gcc.dg/pr84875.c
! 2b1f11fb67ff2c482d994080b53065d1  gcc/testsuite/gcc.dg/pr84877.c
  4294a6745f3296677b46dd5bfd884901  gcc/testsuite/gcc.dg/pr84899.c
  dbf69b3874174be30af9ef57a4dddf35  gcc/testsuite/gcc.dg/pr84941.c
  10853acb471ecaea1557d0f0b8f741e4  gcc/testsuite/gcc.dg/pr84953.c
*************** c045d6a7155d87f33a8a58e18fc8fae0  gcc/te
*** 42902,42908 ****
  1eccee440762e525a97556576c144d1f  gcc/testsuite/gcc.dg/pr87024.c
  92af82d0ed0498d359b9b41731157a6f  gcc/testsuite/gcc.dg/pr87025.c
  75b21a531d585a6452f6c1ff03fdf713  gcc/testsuite/gcc.dg/pr87047.c
! cef0999714582aad49bf69310dcb38b4  gcc/testsuite/gcc.dg/pr87052.c
  7409a4639ad449497636ab1ffd396ab9  gcc/testsuite/gcc.dg/pr87054.c
  573bff30fabe1d954bb7773456e8752b  gcc/testsuite/gcc.dg/pr87074.c
  5b7ec2719e61162c44f1431fa4b8f9d3  gcc/testsuite/gcc.dg/pr87092.c
--- 45819,45825 ----
  1eccee440762e525a97556576c144d1f  gcc/testsuite/gcc.dg/pr87024.c
  92af82d0ed0498d359b9b41731157a6f  gcc/testsuite/gcc.dg/pr87025.c
  75b21a531d585a6452f6c1ff03fdf713  gcc/testsuite/gcc.dg/pr87047.c
! 76cdfe0fa9071cd68093c7fd89331ccb  gcc/testsuite/gcc.dg/pr87052.c
  7409a4639ad449497636ab1ffd396ab9  gcc/testsuite/gcc.dg/pr87054.c
  573bff30fabe1d954bb7773456e8752b  gcc/testsuite/gcc.dg/pr87074.c
  5b7ec2719e61162c44f1431fa4b8f9d3  gcc/testsuite/gcc.dg/pr87092.c
*************** f05824bb6a8ee4df57182feba94d6224  gcc/te
*** 43033,43038 ****
--- 45950,45956 ----
  29bddba09d773b04b2a3a7f640bd0ece  gcc/testsuite/gcc.dg/pr91014.c
  24c438728a57d7ea88d20d12f53f789e  gcc/testsuite/gcc.dg/pr91029.c
  da28f19c06ff7662e7a7546ec852e25c  gcc/testsuite/gcc.dg/pr91069.c
+ ae6290a43a38f48e933c747a1d1f3299  gcc/testsuite/gcc.dg/pr91134.c
  0835b2ca75603c1c11ac781095ca851d  gcc/testsuite/gcc.dg/pr91172.c
  b3a812009694e752663ca04925320324  gcc/testsuite/gcc.dg/pr91181.c
  196c4342cb2568a603593ef3a72ee31d  gcc/testsuite/gcc.dg/pr91195.c
*************** d415dab7955287f7dc30b8f97718c405  gcc/te
*** 43085,43096 ****
--- 46003,46016 ----
  a381b8115d1a3059738b007b59ec85b1  gcc/testsuite/gcc.dg/pr93820-2.c
  96f7c73b6cb0b7b5f65e07636845c78b  gcc/testsuite/gcc.dg/pr93820.c
  be052ff03204f5c4aab2ab7a358b6b27  gcc/testsuite/gcc.dg/pr93874.c
+ 1615991b1e5f6fce46e7f2acbb2cbb2d  gcc/testsuite/gcc.dg/pr93917.c
  87b5cdd84800016a77df3942458b9c21  gcc/testsuite/gcc.dg/pr93953.c
  8bda02493a3432a443e4f3c222a0d773  gcc/testsuite/gcc.dg/pr93986.c
  cfd561b135ceb50d230b596505e94c74  gcc/testsuite/gcc.dg/pr93995.c
  cab59fbf55d5a85f5adade2417f6f944  gcc/testsuite/gcc.dg/pr94001.c
  7188ff1454897a578bd9300a88e8188b  gcc/testsuite/gcc.dg/pr94002.c
  6ab891619e61d9a6e1954bceeae933ad  gcc/testsuite/gcc.dg/pr94015.c
+ 0d0391ee486a02da3b0d757041f6a6c0  gcc/testsuite/gcc.dg/pr94026.c
  0ae9dcc0ac6d521e37ddb5afb45d1dd5  gcc/testsuite/gcc.dg/pr94114.c
  fc6e5039865fe10dc1fddd25c8dcb667  gcc/testsuite/gcc.dg/pr94121.c
  3f211532b2198634f06950321f46e1b4  gcc/testsuite/gcc.dg/pr94166.c
*************** c72df927b15d18de0d1c05eef46be3ba  gcc/te
*** 43132,43141 ****
  2a8fd6be342ac636e177ee04b63e5a07  gcc/testsuite/gcc.dg/pr94784.c
  4a231f2fae7b7510cf7b3374a29735db  gcc/testsuite/gcc.dg/pr94842.c
  3d72c356497bfbeaacb889491ca6f756  gcc/testsuite/gcc.dg/pr94873.c
  c2fd25feddce893f7652a84fe5746fa4  gcc/testsuite/gcc.dg/pr94963.c
  903a1bb951735666f689961e0bf5ab2a  gcc/testsuite/gcc.dg/pr94968.c
  e4dde89601272f1b99612f3aef7cb7e5  gcc/testsuite/gcc.dg/pr95052.c
! 86ccf70ae09c24fad23aa9df39072a82  gcc/testsuite/gcc.dg/pr95115.c
  1feb85be5d60e05ef1bda1b1214cd644  gcc/testsuite/gcc.dg/pr95118.c
  374fe6896d7f734385c9df06306a39f3  gcc/testsuite/gcc.dg/pr95133.c
  130d9acc88fc75c668740cf769b79052  gcc/testsuite/gcc.dg/pr95141.c
--- 46052,46063 ----
  2a8fd6be342ac636e177ee04b63e5a07  gcc/testsuite/gcc.dg/pr94784.c
  4a231f2fae7b7510cf7b3374a29735db  gcc/testsuite/gcc.dg/pr94842.c
  3d72c356497bfbeaacb889491ca6f756  gcc/testsuite/gcc.dg/pr94873.c
+ cdbc08c96878471a22a2e3ce4afb1ac5  gcc/testsuite/gcc.dg/pr94899.c
+ 1ba911d623ccfe419495438b8acd6b91  gcc/testsuite/gcc.dg/pr94920-2.c
  c2fd25feddce893f7652a84fe5746fa4  gcc/testsuite/gcc.dg/pr94963.c
  903a1bb951735666f689961e0bf5ab2a  gcc/testsuite/gcc.dg/pr94968.c
  e4dde89601272f1b99612f3aef7cb7e5  gcc/testsuite/gcc.dg/pr95052.c
! 58599cfb97b216be6b7e62dbc868de25  gcc/testsuite/gcc.dg/pr95115.c
  1feb85be5d60e05ef1bda1b1214cd644  gcc/testsuite/gcc.dg/pr95118.c
  374fe6896d7f734385c9df06306a39f3  gcc/testsuite/gcc.dg/pr95133.c
  130d9acc88fc75c668740cf769b79052  gcc/testsuite/gcc.dg/pr95141.c
*************** e81595a04ac86a2f9b83fb199a7245c9  gcc/te
*** 43164,43170 ****
  327090f1ff0488bf70d342d108613ef0  gcc/testsuite/gcc.dg/pr96453.c
  6f3a630e04585e6954c3af6c3da4cd68  gcc/testsuite/gcc.dg/pr96466.c
  f6dbe508409f3fdef69bb18356571537  gcc/testsuite/gcc.dg/pr96514.c
! 0430e37607f9ac0b8eaff3c88ecd3247  gcc/testsuite/gcc.dg/pr96542.c
  12772272fb5504a0b84c4743fde95b04  gcc/testsuite/gcc.dg/pr96558.c
  3ee9fc3b7d139b2e57d06a5c240864a3  gcc/testsuite/gcc.dg/pr96573.c
  06ae27dde8da22331e1e8dcd059d4d03  gcc/testsuite/gcc.dg/pr96579.c
--- 46086,46092 ----
  327090f1ff0488bf70d342d108613ef0  gcc/testsuite/gcc.dg/pr96453.c
  6f3a630e04585e6954c3af6c3da4cd68  gcc/testsuite/gcc.dg/pr96466.c
  f6dbe508409f3fdef69bb18356571537  gcc/testsuite/gcc.dg/pr96514.c
! 00f80ae1653a2bbff450c40d3bc8f47b  gcc/testsuite/gcc.dg/pr96542.c
  12772272fb5504a0b84c4743fde95b04  gcc/testsuite/gcc.dg/pr96558.c
  3ee9fc3b7d139b2e57d06a5c240864a3  gcc/testsuite/gcc.dg/pr96573.c
  06ae27dde8da22331e1e8dcd059d4d03  gcc/testsuite/gcc.dg/pr96579.c
*************** ec1830becced622760bda688ca2bb126  gcc/te
*** 43234,43244 ****
  58a90f953d863b4da3602876f58c3dad  gcc/testsuite/gcc.dg/pr98147.c
  ab67ce545d0c71a9f5f15c381f3e0c67  gcc/testsuite/gcc.dg/pr98190.c
  06873fe076c24bd9c80510ca25414ed4  gcc/testsuite/gcc.dg/pr98198.c
! 46ac3184f9690034210e99d5d2ca729e  gcc/testsuite/gcc.dg/pr98211.c
  0ffdbfe76fd130e510ec19ac27307b9d  gcc/testsuite/gcc.dg/pr98255.c
  885b5b8dbec3343d2d1f7815afe1fba4  gcc/testsuite/gcc.dg/pr98271.c
  bab0f33f3dc1129eb8dcb00974efb2ba  gcc/testsuite/gcc.dg/pr98272.c
  358377419a8fc398557c8e69170ddbc9  gcc/testsuite/gcc.dg/pr98287.c
  7970814b2b083dc51dccbb47c9b622d3  gcc/testsuite/gcc.dg/pr98330.c
  2232cd10c89412a750db8fa0a772b747  gcc/testsuite/gcc.dg/pr98331.c
  fe3fce151ef7e045021498cdad0f3ecf  gcc/testsuite/gcc.dg/pr98420.c
--- 46156,46167 ----
  58a90f953d863b4da3602876f58c3dad  gcc/testsuite/gcc.dg/pr98147.c
  ab67ce545d0c71a9f5f15c381f3e0c67  gcc/testsuite/gcc.dg/pr98190.c
  06873fe076c24bd9c80510ca25414ed4  gcc/testsuite/gcc.dg/pr98198.c
! 6402d0b3c10f679cca0a7edf36045a9a  gcc/testsuite/gcc.dg/pr98211.c
  0ffdbfe76fd130e510ec19ac27307b9d  gcc/testsuite/gcc.dg/pr98255.c
  885b5b8dbec3343d2d1f7815afe1fba4  gcc/testsuite/gcc.dg/pr98271.c
  bab0f33f3dc1129eb8dcb00974efb2ba  gcc/testsuite/gcc.dg/pr98272.c
  358377419a8fc398557c8e69170ddbc9  gcc/testsuite/gcc.dg/pr98287.c
+ e0aaf35916ca626fd4eb6512d1bcb49f  gcc/testsuite/gcc.dg/pr98304-1.c
  7970814b2b083dc51dccbb47c9b622d3  gcc/testsuite/gcc.dg/pr98330.c
  2232cd10c89412a750db8fa0a772b747  gcc/testsuite/gcc.dg/pr98331.c
  fe3fce151ef7e045021498cdad0f3ecf  gcc/testsuite/gcc.dg/pr98420.c
*************** b21ece181cd66a1e64aa9dde33e8d1d0  gcc/te
*** 43247,43252 ****
--- 46170,46176 ----
  6f1182e067a6b12f97acf69996773c2e  gcc/testsuite/gcc.dg/pr98766.c
  adabb0bef50f4d7481373e03730d7eca  gcc/testsuite/gcc.dg/pr98793.c
  740d7fb36e41a4cae562cdea26998ff2  gcc/testsuite/gcc.dg/pr98807.c
+ 7935203ef9b964ed53ea8adeecd1bbed  gcc/testsuite/gcc.dg/pr98865.c
  310114e6ce04de1373727da3fff452a3  gcc/testsuite/gcc.dg/pr99104.c
  c8ed2bc909c8f2213b8af5e0e34bb1fc  gcc/testsuite/gcc.dg/pr99122-1.c
  3efab6f8b5fe7930094ba4b39f130934  gcc/testsuite/gcc.dg/pr99122-2.c
*************** e5fa04b57a4c6ee2a8578c05f2e54789  gcc/te
*** 43292,43298 ****
  5429d14c7edd0ef67dabb3432ed24b6b  gcc/testsuite/gcc.dg/pragma-re-2.c
  7123af8ec1f3b12791e84b28ccbb0953  gcc/testsuite/gcc.dg/pragma-re-3.c
  334a71ce68396a366d840cccfec441ea  gcc/testsuite/gcc.dg/pragma-re-4.c
! efa6034cc39517afbb457a507e9ce345  gcc/testsuite/gcc.dg/precedence-1.c
  ea82d4023b231a2f4540f76435c3b6d2  gcc/testsuite/gcc.dg/predict-1.c
  26354537bffc13b99bf0e1d5cb7ba10d  gcc/testsuite/gcc.dg/predict-10.c
  9b19aba5c4c546aafc87068f0bbb734f  gcc/testsuite/gcc.dg/predict-11.c
--- 46216,46222 ----
  5429d14c7edd0ef67dabb3432ed24b6b  gcc/testsuite/gcc.dg/pragma-re-2.c
  7123af8ec1f3b12791e84b28ccbb0953  gcc/testsuite/gcc.dg/pragma-re-3.c
  334a71ce68396a366d840cccfec441ea  gcc/testsuite/gcc.dg/pragma-re-4.c
! caf7f2b9f5b17b3229e25416ef272023  gcc/testsuite/gcc.dg/precedence-1.c
  ea82d4023b231a2f4540f76435c3b6d2  gcc/testsuite/gcc.dg/predict-1.c
  26354537bffc13b99bf0e1d5cb7ba10d  gcc/testsuite/gcc.dg/predict-10.c
  9b19aba5c4c546aafc87068f0bbb734f  gcc/testsuite/gcc.dg/predict-11.c
*************** fa3e7c382ff66e5d2620f232268180a7  gcc/te
*** 43306,43312 ****
  fb8ee0a0567856379f47c9fa24376c9f  gcc/testsuite/gcc.dg/predict-18.c
  1868f122f6ae50a73af86b5d3ba896b0  gcc/testsuite/gcc.dg/predict-19.c
  72706bfb463bdad90a67054588fe3a08  gcc/testsuite/gcc.dg/predict-2.c
! 748ef945b24b4adc8e646dffb4272a3c  gcc/testsuite/gcc.dg/predict-20.c
  398b3637b52a2ef982352b439856518c  gcc/testsuite/gcc.dg/predict-21.c
  d1261478a22b761e5ece132558a44e6f  gcc/testsuite/gcc.dg/predict-22.c
  db02424a4c19e49ec9d7f6697aa99832  gcc/testsuite/gcc.dg/predict-3.c
--- 46230,46236 ----
  fb8ee0a0567856379f47c9fa24376c9f  gcc/testsuite/gcc.dg/predict-18.c
  1868f122f6ae50a73af86b5d3ba896b0  gcc/testsuite/gcc.dg/predict-19.c
  72706bfb463bdad90a67054588fe3a08  gcc/testsuite/gcc.dg/predict-2.c
! d604d9323f647ba625472c89e0281422  gcc/testsuite/gcc.dg/predict-20.c
  398b3637b52a2ef982352b439856518c  gcc/testsuite/gcc.dg/predict-21.c
  d1261478a22b761e5ece132558a44e6f  gcc/testsuite/gcc.dg/predict-22.c
  db02424a4c19e49ec9d7f6697aa99832  gcc/testsuite/gcc.dg/predict-3.c
*************** bae376025f56a65c5687491587f56cf8  gcc/te
*** 43325,43330 ****
--- 46249,46255 ----
  43b5ea7eb4cde6fc54e5fd9f2fed463f  gcc/testsuite/gcc.dg/profile-generate-1.c
  dc974b5be096639b3d83b02ea81ef099  gcc/testsuite/gcc.dg/profile-generate-2.c
  a86caaa0b39c05b44476b1daa7029ee5  gcc/testsuite/gcc.dg/profile-generate-3.c
+ 228f71b659b63f8993f6beba786c0be4  gcc/testsuite/gcc.dg/profile-generate-4.c
  fe0dfbb4e9a3744d6ae829de7b0e4b76  gcc/testsuite/gcc.dg/profile-info-section.c
  03400698c3e371c93945ab78c118bc44  gcc/testsuite/gcc.dg/profile-update-warning.c
  731cbe31caa392f45d3a34efa13ec6fe  gcc/testsuite/gcc.dg/proto-1.c
*************** bbc5eb9ec870c7a8a2930d29040efe10  gcc/te
*** 43369,43375 ****
--- 46294,46307 ----
  e9f6ab8177be009b10587da44d562a5a  gcc/testsuite/gcc.dg/redecl-16.c
  fccd1934a683d43aa6a7d546eee38065  gcc/testsuite/gcc.dg/redecl-17.c
  581f2d3b0f6519eb0fb0b166b220fdb6  gcc/testsuite/gcc.dg/redecl-18.c
+ fc4d9aa23649c1bae28ec227fd82281f  gcc/testsuite/gcc.dg/redecl-19.c
  0c4274e004ec10f6f1cd982118716a43  gcc/testsuite/gcc.dg/redecl-2.c
+ 4940ac7ea47f01e1bfab755372b91200  gcc/testsuite/gcc.dg/redecl-20.c
+ 53169922682abdb600a60ca5d9a1f02f  gcc/testsuite/gcc.dg/redecl-21.c
+ 303d553f7e6bbd80402018d422342320  gcc/testsuite/gcc.dg/redecl-22.c
+ 22997665367f8e4d62c40ca6b9304dc4  gcc/testsuite/gcc.dg/redecl-23.c
+ fb540068c6e9115d05618b4b7b7222cc  gcc/testsuite/gcc.dg/redecl-24.c
+ 41fed7044e8456e814ecdc143463bd42  gcc/testsuite/gcc.dg/redecl-25.c
  a894d26cb8bd0b9d9dc915eec4d06120  gcc/testsuite/gcc.dg/redecl-3.c
  019f3b9fad0705bf1afbc6b03a6ecb78  gcc/testsuite/gcc.dg/redecl-4.c
  436332565897173cbaf3ea20d42805c4  gcc/testsuite/gcc.dg/redecl-5.c
*************** a107a9eae4cd59d68f55abfc11da7cec  gcc/te
*** 43398,43404 ****
  a9069345cbc40d488766c1fbf34c5555  gcc/testsuite/gcc.dg/rtl/arm/ldrd-peepholes.c
  85baf2f4880c1f6892aac66e29e93d7a  gcc/testsuite/gcc.dg/rtl/arm/mve-vxbi.c
  1a862d5804e1cd16507ae8049cf93f0d  gcc/testsuite/gcc.dg/rtl/arm/stl-cond.c
! 37b17f2b70583467c4e93a47c239d64c  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
  555898d2432906a81b3aa66cb112a450  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
--- 46330,46336 ----
  a9069345cbc40d488766c1fbf34c5555  gcc/testsuite/gcc.dg/rtl/arm/ldrd-peepholes.c
  85baf2f4880c1f6892aac66e29e93d7a  gcc/testsuite/gcc.dg/rtl/arm/mve-vxbi.c
  1a862d5804e1cd16507ae8049cf93f0d  gcc/testsuite/gcc.dg/rtl/arm/stl-cond.c
! 27b2890aa92c322eff82e4b42dc7c124  gcc/testsuite/gcc.dg/rtl/rtl.exp
  75dd0c3d9daa8abdd58a0d0eaf55bd9e  gcc/testsuite/gcc.dg/rtl/test.c
  555898d2432906a81b3aa66cb112a450  gcc/testsuite/gcc.dg/rtl/truncated-rtl-file.c
  3a9704d0df301152dace95218afa80c6  gcc/testsuite/gcc.dg/rtl/unknown-rtx-code.c
*************** b1af2df249a0e6a4c994bd1ed21dca0d  gcc/te
*** 43423,43429 ****
  0c3b41d31bc8c5766ef00b41563b6f67  gcc/testsuite/gcc.dg/sancov/basic0.c
  7bc3b2dd6c2595fc002c58318ba0ad0e  gcc/testsuite/gcc.dg/sancov/basic1.c
  c3a18562322c5cc05e7fb2d95a929a8a  gcc/testsuite/gcc.dg/sancov/basic2.c
! 6907e496a1c757bd5121a3d41c546181  gcc/testsuite/gcc.dg/sancov/cmp0.c
  927c5e9b37d200b6cfe636bfd8be7405  gcc/testsuite/gcc.dg/sancov/pr104158-1.c
  ccb6546b7e60cd1f83eb1e5ac4beafb2  gcc/testsuite/gcc.dg/sancov/pr104158-2.c
  858aba4141ef5229621e371c3fd82e05  gcc/testsuite/gcc.dg/sancov/pr104158-3.c
--- 46355,46361 ----
  0c3b41d31bc8c5766ef00b41563b6f67  gcc/testsuite/gcc.dg/sancov/basic0.c
  7bc3b2dd6c2595fc002c58318ba0ad0e  gcc/testsuite/gcc.dg/sancov/basic1.c
  c3a18562322c5cc05e7fb2d95a929a8a  gcc/testsuite/gcc.dg/sancov/basic2.c
! a278b5899a838354deb402aaf261e227  gcc/testsuite/gcc.dg/sancov/cmp0.c
  927c5e9b37d200b6cfe636bfd8be7405  gcc/testsuite/gcc.dg/sancov/pr104158-1.c
  ccb6546b7e60cd1f83eb1e5ac4beafb2  gcc/testsuite/gcc.dg/sancov/pr104158-2.c
  858aba4141ef5229621e371c3fd82e05  gcc/testsuite/gcc.dg/sancov/pr104158-3.c
*************** eb7e84bf599d4eff95e62177de9c772a  gcc/te
*** 43432,43438 ****
  7a3f147eba9c1aeac1de411abd4f64cf  gcc/testsuite/gcc.dg/sancov/pr104158-6.c
  fdf6d2f3e4906aec199d43bc561b5a5d  gcc/testsuite/gcc.dg/sancov/pr104158-7.c
  10a9db85b046a8ccc1ebb5e953dedb6d  gcc/testsuite/gcc.dg/sancov/pr80444.c
! 0efeb1b1dd78a48f33c97ac0594da4de  gcc/testsuite/gcc.dg/sancov/sancov.exp
  d5126a2bd42a9c1593aedafecf29da00  gcc/testsuite/gcc.dg/section1.c
  8ecbb4fd22f228acc936096f5fed21fb  gcc/testsuite/gcc.dg/self-right-shift.c
  00d91fe4b16ca2aeae1cccad86d4c9f2  gcc/testsuite/gcc.dg/semicolon-fixits.c
--- 46364,46370 ----
  7a3f147eba9c1aeac1de411abd4f64cf  gcc/testsuite/gcc.dg/sancov/pr104158-6.c
  fdf6d2f3e4906aec199d43bc561b5a5d  gcc/testsuite/gcc.dg/sancov/pr104158-7.c
  10a9db85b046a8ccc1ebb5e953dedb6d  gcc/testsuite/gcc.dg/sancov/pr80444.c
! 773fec7d67784038ef6f742055a37dbd  gcc/testsuite/gcc.dg/sancov/sancov.exp
  d5126a2bd42a9c1593aedafecf29da00  gcc/testsuite/gcc.dg/section1.c
  8ecbb4fd22f228acc936096f5fed21fb  gcc/testsuite/gcc.dg/self-right-shift.c
  00d91fe4b16ca2aeae1cccad86d4c9f2  gcc/testsuite/gcc.dg/semicolon-fixits.c
*************** aaf2153b841fae71456b1ba41211400b  gcc/te
*** 43446,43451 ****
--- 46378,46384 ----
  5dbdea05d50f594556f604bf66857dbc  gcc/testsuite/gcc.dg/setjmp-4.c
  157d41b3446aa6c54a0249f7f027768f  gcc/testsuite/gcc.dg/setjmp-5.c
  3d24e3b1ad253339cd3d8ab118110513  gcc/testsuite/gcc.dg/setjmp-6.c
+ dfe9d8b1cef24676837fec45edf86c22  gcc/testsuite/gcc.dg/setjmp-7.c
  6f4ffedec35f0de53e9ae24b36462712  gcc/testsuite/gcc.dg/short-compare-1.c
  e95ac1ec5f25aac9c9389159d09b366c  gcc/testsuite/gcc.dg/short-compare-2.c
  d97ba82ddd6d2eff00283bf678a89e32  gcc/testsuite/gcc.dg/shrink-wrap-alloca.c
*************** dcbe36a784d46169abe8a9a404b0c6e0  gcc/te
*** 43454,43460 ****
  e177bd4a7f3cb433b33b2c59e4e0af3d  gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c
  3294e4a5b74b99e369aaf413c51c9d9a  gcc/testsuite/gcc.dg/sibcall-1.c
  85669fc6c7689b5f5969e64fcf9cfade  gcc/testsuite/gcc.dg/sibcall-10.c
! 56436caf606f4a70d8e0249cbe98b609  gcc/testsuite/gcc.dg/sibcall-11.c
  4475ace1c55af8932ec4fb580e690e52  gcc/testsuite/gcc.dg/sibcall-2.c
  9271d47e06ad7cb2c71a2e4edebb514c  gcc/testsuite/gcc.dg/sibcall-3.c
  19ab1b11d16d0636c8e134bc34b747b7  gcc/testsuite/gcc.dg/sibcall-4.c
--- 46387,46393 ----
  e177bd4a7f3cb433b33b2c59e4e0af3d  gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c
  3294e4a5b74b99e369aaf413c51c9d9a  gcc/testsuite/gcc.dg/sibcall-1.c
  85669fc6c7689b5f5969e64fcf9cfade  gcc/testsuite/gcc.dg/sibcall-10.c
! 2c3c94a61ed7b9f075ac496625f3df59  gcc/testsuite/gcc.dg/sibcall-11.c
  4475ace1c55af8932ec4fb580e690e52  gcc/testsuite/gcc.dg/sibcall-2.c
  9271d47e06ad7cb2c71a2e4edebb514c  gcc/testsuite/gcc.dg/sibcall-3.c
  19ab1b11d16d0636c8e134bc34b747b7  gcc/testsuite/gcc.dg/sibcall-4.c
*************** a4a9d32810747a683dfd61a19a195556  gcc/te
*** 43462,43471 ****
  62808c704ae0941d6882eb2639725b7e  gcc/testsuite/gcc.dg/sibcall-7.c
  ffee6308d78dda55af86280534155756  gcc/testsuite/gcc.dg/sibcall-8.c
  a9d1837d9fddf7d1517a251715a86a60  gcc/testsuite/gcc.dg/sibcall-9.c
! 7a3e9302dc9be71c9f7e9b647b813f23  gcc/testsuite/gcc.dg/signbit-2.c
  66aaf0d9868e1fb506cfc16fea64b403  gcc/testsuite/gcc.dg/signbit-3.c
  82d412bd422617ac165bdfeefeb96891  gcc/testsuite/gcc.dg/signbit-4.c
! e68c532ae4bed110446fac5be9239c32  gcc/testsuite/gcc.dg/signbit-5.c
  336150c4fa4cf498d062bcda71db9baf  gcc/testsuite/gcc.dg/signbit-6.c
  5b629cb801eca62320ea49a242d8d182  gcc/testsuite/gcc.dg/signbit-sa.c
  333e0feef5b858bcbce745edf0d287f9  gcc/testsuite/gcc.dg/simd-1.c
--- 46395,46404 ----
  62808c704ae0941d6882eb2639725b7e  gcc/testsuite/gcc.dg/sibcall-7.c
  ffee6308d78dda55af86280534155756  gcc/testsuite/gcc.dg/sibcall-8.c
  a9d1837d9fddf7d1517a251715a86a60  gcc/testsuite/gcc.dg/sibcall-9.c
! 7976154c3c96bf4378598eacd1dcd4bd  gcc/testsuite/gcc.dg/signbit-2.c
  66aaf0d9868e1fb506cfc16fea64b403  gcc/testsuite/gcc.dg/signbit-3.c
  82d412bd422617ac165bdfeefeb96891  gcc/testsuite/gcc.dg/signbit-4.c
! 52a293945a9e0a01f0bf494d4b9197c4  gcc/testsuite/gcc.dg/signbit-5.c
  336150c4fa4cf498d062bcda71db9baf  gcc/testsuite/gcc.dg/signbit-6.c
  5b629cb801eca62320ea49a242d8d182  gcc/testsuite/gcc.dg/signbit-sa.c
  333e0feef5b858bcbce745edf0d287f9  gcc/testsuite/gcc.dg/simd-1.c
*************** cdcbfe4963d2fb08c5ca3beee8988a3a  gcc/te
*** 43486,43492 ****
  2cef976581d9a7b739ab4028601cccef  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
  dd9deecd35e329ea7c8b1a24c3721dfb  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-longlong.c
  bc0a90e6775aacab35294b814a4dc066  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-short.c
! d118407969a5a16a0611900e63db7604  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
  a551d568c4b3e2e586a288740ed87bc7  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.gdb
  e01edd8c252c9b0041b4625fb9403160  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.h
  1206815dd7536f73ea767fa3901ecc15  gcc/testsuite/gcc.dg/simulate-thread/speculative-store-2.c
--- 46419,46425 ----
  2cef976581d9a7b739ab4028601cccef  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-int128.c
  dd9deecd35e329ea7c8b1a24c3721dfb  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-longlong.c
  bc0a90e6775aacab35294b814a4dc066  gcc/testsuite/gcc.dg/simulate-thread/atomic-other-short.c
! 46a4d47130d315f8b442e200ebe70180  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.exp
  a551d568c4b3e2e586a288740ed87bc7  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.gdb
  e01edd8c252c9b0041b4625fb9403160  gcc/testsuite/gcc.dg/simulate-thread/simulate-thread.h
  1206815dd7536f73ea767fa3901ecc15  gcc/testsuite/gcc.dg/simulate-thread/speculative-store-2.c
*************** d699e78c8f0e5f106aca671faa82b0db  gcc/te
*** 43529,43537 ****
  58b6b7734c2d9522f6acba13d91a557a  gcc/testsuite/gcc.dg/special/alias-1.c
  4b29f93ef3bc27cb9d83fdbc6aaa5b4a  gcc/testsuite/gcc.dg/special/alias-2.c
  d7d4289254a30a2d7a36599f413b3f00  gcc/testsuite/gcc.dg/special/gcsec-1.c
! 04740a57266598f38c886d701eb4fd29  gcc/testsuite/gcc.dg/special/mips-abi.exp
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/special/mips-abi.s
! 475eb554781f45c3b7fdc1e19ee727af  gcc/testsuite/gcc.dg/special/special.exp
  401a0d7d075a4091d05bc341cd97d3bf  gcc/testsuite/gcc.dg/special/weak-1.c
  f92cc2fa14e5fe946fde0490c2b6321b  gcc/testsuite/gcc.dg/special/weak-1a.c
  679f99ed535d87ef210f2c69a6777b7e  gcc/testsuite/gcc.dg/special/weak-2.c
--- 46462,46470 ----
  58b6b7734c2d9522f6acba13d91a557a  gcc/testsuite/gcc.dg/special/alias-1.c
  4b29f93ef3bc27cb9d83fdbc6aaa5b4a  gcc/testsuite/gcc.dg/special/alias-2.c
  d7d4289254a30a2d7a36599f413b3f00  gcc/testsuite/gcc.dg/special/gcsec-1.c
! f92541e8d261725af6992e532860b7a7  gcc/testsuite/gcc.dg/special/mips-abi.exp
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gcc.dg/special/mips-abi.s
! e855de58512cb759f8260619e8fb79e3  gcc/testsuite/gcc.dg/special/special.exp
  401a0d7d075a4091d05bc341cd97d3bf  gcc/testsuite/gcc.dg/special/weak-1.c
  f92cc2fa14e5fe946fde0490c2b6321b  gcc/testsuite/gcc.dg/special/weak-1a.c
  679f99ed535d87ef210f2c69a6777b7e  gcc/testsuite/gcc.dg/special/weak-2.c
*************** a22c0db258dd69508b2ceb6070cac172  gcc/te
*** 43598,43603 ****
--- 46531,46537 ----
  29f6b01322fd3f283d659295b7a42257  gcc/testsuite/gcc.dg/sso-14.c
  c248e635d1ac4e803a2fd1f8e029c98b  gcc/testsuite/gcc.dg/sso-15.c
  ae63ef59d4955da47b8b32d066fbadb0  gcc/testsuite/gcc.dg/sso-16.c
+ 48e05b713f14b7737a5213a884d6b0ed  gcc/testsuite/gcc.dg/sso-17.c
  1596e67c3fd5ccc4a9264cba4aa398c4  gcc/testsuite/gcc.dg/sso-2.c
  4a6f7bb1645423ba5d23a61f98233d1d  gcc/testsuite/gcc.dg/sso-3.c
  edaa32662275ea6100c4a0657754194a  gcc/testsuite/gcc.dg/sso-4.c
*************** c5722da05aa36d4bc2a009327e233223  gcc/te
*** 43617,43623 ****
  741cf882eb02cecd5b4ea044f98db3cb  gcc/testsuite/gcc.dg/sso/init8.h
  958023bce89bc77e3102b1d4c4c9e4b2  gcc/testsuite/gcc.dg/sso/init9.h
  d9dceef7cffb0b231dc9ff0a6a394bb7  gcc/testsuite/gcc.dg/sso/ipa-sra-1.c
! 972c2e8785486a5090817467e0411556  gcc/testsuite/gcc.dg/sso/memcpy-1.c
  9fcf538967f335747a7d7d10e60c49d2  gcc/testsuite/gcc.dg/sso/p1.c
  ffe5dfce00c04690ddd831cac1cc5166  gcc/testsuite/gcc.dg/sso/p13.c
  3cd9339eed7d07cd80a26c10ba2bfa0f  gcc/testsuite/gcc.dg/sso/p2.c
--- 46551,46557 ----
  741cf882eb02cecd5b4ea044f98db3cb  gcc/testsuite/gcc.dg/sso/init8.h
  958023bce89bc77e3102b1d4c4c9e4b2  gcc/testsuite/gcc.dg/sso/init9.h
  d9dceef7cffb0b231dc9ff0a6a394bb7  gcc/testsuite/gcc.dg/sso/ipa-sra-1.c
! ff3c0db3da16a3e639a609007d830d54  gcc/testsuite/gcc.dg/sso/memcpy-1.c
  9fcf538967f335747a7d7d10e60c49d2  gcc/testsuite/gcc.dg/sso/p1.c
  ffe5dfce00c04690ddd831cac1cc5166  gcc/testsuite/gcc.dg/sso/p13.c
  3cd9339eed7d07cd80a26c10ba2bfa0f  gcc/testsuite/gcc.dg/sso/p2.c
*************** dfb751744ae63c43f989ee13f0e517d6  gcc/te
*** 43648,43654 ****
  5acf2012225c2563f5111699dc108d4e  gcc/testsuite/gcc.dg/sso/s6.c
  2881d668843202ec4c4e53caf7d29b7c  gcc/testsuite/gcc.dg/sso/s7.c
  dc1e222143fcffd35ee8b32c36dfe5e9  gcc/testsuite/gcc.dg/sso/s8.c
! bc2abab71776516b96584c5060b68a6f  gcc/testsuite/gcc.dg/sso/sso.exp
  72a4bbb7159286bb235d6cc0329af835  gcc/testsuite/gcc.dg/sso/t1.c
  093ed74aa99ca9c9bc8760b6167c6c6f  gcc/testsuite/gcc.dg/sso/t13.c
  7b8e3ada92eb2f2a4e4aea8f81dd9b16  gcc/testsuite/gcc.dg/sso/t2.c
--- 46582,46588 ----
  5acf2012225c2563f5111699dc108d4e  gcc/testsuite/gcc.dg/sso/s6.c
  2881d668843202ec4c4e53caf7d29b7c  gcc/testsuite/gcc.dg/sso/s7.c
  dc1e222143fcffd35ee8b32c36dfe5e9  gcc/testsuite/gcc.dg/sso/s8.c
! d576b401252b6b1c50dbdc299565c8d5  gcc/testsuite/gcc.dg/sso/sso.exp
  72a4bbb7159286bb235d6cc0329af835  gcc/testsuite/gcc.dg/sso/t1.c
  093ed74aa99ca9c9bc8760b6167c6c6f  gcc/testsuite/gcc.dg/sso/t13.c
  7b8e3ada92eb2f2a4e4aea8f81dd9b16  gcc/testsuite/gcc.dg/sso/t2.c
*************** db06818741aeb33bcd33b0888babc0af  gcc/te
*** 43737,43742 ****
--- 46671,46679 ----
  084befa05f18817775b23424ba808569  gcc/testsuite/gcc.dg/strcmpopt_7.c
  e380a12d8343e0f687c7863f49e24814  gcc/testsuite/gcc.dg/strcmpopt_8.c
  c74af1bb0d6b8cf2a8b6dce5c7c425b6  gcc/testsuite/gcc.dg/strcmpopt_9.c
+ bf4c65f0bfac9e2583acb9db6b6e985d  gcc/testsuite/gcc.dg/strict-flex-array-1.c
+ cc35f761f39f12de1fb448ac6fbb69b5  gcc/testsuite/gcc.dg/strict-flex-array-2.c
+ 883390485583fb70cf9b091216537dff  gcc/testsuite/gcc.dg/strict-flex-array-3.c
  a5486e384972bccac519272ed90e4d73  gcc/testsuite/gcc.dg/strict-overflow-1.c
  a448f788a587d5309d6dc1af1e3f5e10  gcc/testsuite/gcc.dg/strict-overflow-2.c
  7e6fb4d2c17602860c6ad5f9cb98186a  gcc/testsuite/gcc.dg/strict-overflow-3.c
*************** a448f788a587d5309d6dc1af1e3f5e10  gcc/te
*** 43745,43755 ****
  230e6ad16dc5dbf4b40d86f6cb1a8e56  gcc/testsuite/gcc.dg/strict-overflow-6.c
  4050c41f0a73b01a8891094c4e2ca2db  gcc/testsuite/gcc.dg/string-opt-1.c
  4e2cc4477559d5b34349057cc78fa4b6  gcc/testsuite/gcc.dg/strlenopt-1.c
! fab521cde506ca749f45d7d656236c56  gcc/testsuite/gcc.dg/strlenopt-10.c
! eb5dd7833b0c1d18532039df8b80c5c2  gcc/testsuite/gcc.dg/strlenopt-11.c
  0dd241c218cfb51a94c339d0d1d73686  gcc/testsuite/gcc.dg/strlenopt-12.c
  22f8e4118dada6b90a1ca90697718b05  gcc/testsuite/gcc.dg/strlenopt-12g.c
! cd5362bc1069fa88f20ce96b1d3d844d  gcc/testsuite/gcc.dg/strlenopt-13.c
  deaa967bcc2601da4dc140c0c04c1152  gcc/testsuite/gcc.dg/strlenopt-14g.c
  d679e195e621af3b43be0d1a21e81174  gcc/testsuite/gcc.dg/strlenopt-14gf.c
  7826b5dcaa407346ae137c54718ba408  gcc/testsuite/gcc.dg/strlenopt-15.c
--- 46682,46692 ----
  230e6ad16dc5dbf4b40d86f6cb1a8e56  gcc/testsuite/gcc.dg/strict-overflow-6.c
  4050c41f0a73b01a8891094c4e2ca2db  gcc/testsuite/gcc.dg/string-opt-1.c
  4e2cc4477559d5b34349057cc78fa4b6  gcc/testsuite/gcc.dg/strlenopt-1.c
! a5c39092d4cc1e6819d3bf4c00167563  gcc/testsuite/gcc.dg/strlenopt-10.c
! dc0b6acd1d742e74502c1fe27a425d3b  gcc/testsuite/gcc.dg/strlenopt-11.c
  0dd241c218cfb51a94c339d0d1d73686  gcc/testsuite/gcc.dg/strlenopt-12.c
  22f8e4118dada6b90a1ca90697718b05  gcc/testsuite/gcc.dg/strlenopt-12g.c
! e893fc12d36f0658c86b7c70bcbddd91  gcc/testsuite/gcc.dg/strlenopt-13.c
  deaa967bcc2601da4dc140c0c04c1152  gcc/testsuite/gcc.dg/strlenopt-14g.c
  d679e195e621af3b43be0d1a21e81174  gcc/testsuite/gcc.dg/strlenopt-14gf.c
  7826b5dcaa407346ae137c54718ba408  gcc/testsuite/gcc.dg/strlenopt-15.c
*************** d964e9c3d529c43e9ae498a35fdf5775  gcc/te
*** 43871,43876 ****
--- 46808,46814 ----
  fb287bcce152203dc79c5d39fd9cc40f  gcc/testsuite/gcc.dg/struct-semi-2.c
  cb7bc7b759208322b507c9776b24d8df  gcc/testsuite/gcc.dg/struct-semi-3.c
  66baf19ad852a2e36df065445f46962f  gcc/testsuite/gcc.dg/struct-semi-4.c
+ 51f93c69fcc9b867dc1816fdd5dad106  gcc/testsuite/gcc.dg/subnot.c
  8ad58b0da863d71abd38c59499c37ce3  gcc/testsuite/gcc.dg/superblock.c
  1ed7413760549398593dc058c3c6bcde  gcc/testsuite/gcc.dg/switch-1.c
  46aae448f4d41836f5a09d93795945ef  gcc/testsuite/gcc.dg/switch-10.c
*************** a831de49f2d41703b35fb1187a5eaacf  gcc/te
*** 43940,43946 ****
  3fb5ccff70fc82da2e2aac8594fb9457  gcc/testsuite/gcc.dg/tls/pr47715-5.c
  7193b5d66103274fe5171afd9347d3b2  gcc/testsuite/gcc.dg/tls/pr58595.c
  f12db64d724ba7ee8005f9b84bbac338  gcc/testsuite/gcc.dg/tls/pr66470.c
! f16cbb04b7ab390512b206edfaad586e  gcc/testsuite/gcc.dg/tls/pr78796.c
  8422497541cdde65944aa49f5f92c3a8  gcc/testsuite/gcc.dg/tls/pr82095.c
  237b9cf194db36ab11f01771186e6a0a  gcc/testsuite/gcc.dg/tls/pr83945.c
  a25e6d22e39772bf36ad7e281b7e57e8  gcc/testsuite/gcc.dg/tls/pr99466-1.c
--- 46878,46884 ----
  3fb5ccff70fc82da2e2aac8594fb9457  gcc/testsuite/gcc.dg/tls/pr47715-5.c
  7193b5d66103274fe5171afd9347d3b2  gcc/testsuite/gcc.dg/tls/pr58595.c
  f12db64d724ba7ee8005f9b84bbac338  gcc/testsuite/gcc.dg/tls/pr66470.c
! 54f648f5034f84731458a48f03ece972  gcc/testsuite/gcc.dg/tls/pr78796.c
  8422497541cdde65944aa49f5f92c3a8  gcc/testsuite/gcc.dg/tls/pr82095.c
  237b9cf194db36ab11f01771186e6a0a  gcc/testsuite/gcc.dg/tls/pr83945.c
  a25e6d22e39772bf36ad7e281b7e57e8  gcc/testsuite/gcc.dg/tls/pr99466-1.c
*************** bd750cfcc2981be8695d1ba87cf4e02d  gcc/te
*** 43951,43958 ****
  3ab1a16951cdbfaf172055375ee208b1  gcc/testsuite/gcc.dg/tls/thr-cse-1.c
  f9dca9ba3163a454b601045eb9567803  gcc/testsuite/gcc.dg/tls/thr-init-1.c
  622c1bed70cf0fe0a74c0a5ed3602602  gcc/testsuite/gcc.dg/tls/thr-init-2.c
! 1906941862e0d2413d2fe4c1c0788405  gcc/testsuite/gcc.dg/tls/tls.exp
  972a92c27c38895cc90d496745d8e669  gcc/testsuite/gcc.dg/tls/trivial.c
  25214598e340e56bf7487e493e42c739  gcc/testsuite/gcc.dg/tm/20091013.c
  f9f47372393116a3e58a8470e17cae92  gcc/testsuite/gcc.dg/tm/20091221.c
  aa085ac0f143cec3ccd2d58a48f072e2  gcc/testsuite/gcc.dg/tm/20100125.c
--- 46889,46903 ----
  3ab1a16951cdbfaf172055375ee208b1  gcc/testsuite/gcc.dg/tls/thr-cse-1.c
  f9dca9ba3163a454b601045eb9567803  gcc/testsuite/gcc.dg/tls/thr-init-1.c
  622c1bed70cf0fe0a74c0a5ed3602602  gcc/testsuite/gcc.dg/tls/thr-init-2.c
! 8fd786ba0c0ce77522031d17e888538c  gcc/testsuite/gcc.dg/tls/tls.exp
  972a92c27c38895cc90d496745d8e669  gcc/testsuite/gcc.dg/tls/trivial.c
+ 3f64e8f044d5d216448bf9d1642e94a3  gcc/testsuite/gcc.dg/tls/vis-attr-gd.c
+ ac52768e9cf872ef83ce702631ddbf02  gcc/testsuite/gcc.dg/tls/vis-attr-hidden-gd.c
+ a6735d8e8f69b97fa5d86d82b34c7df5  gcc/testsuite/gcc.dg/tls/vis-attr-hidden.c
+ 714dc1536adb0cea64bdb18b59ec1bb2  gcc/testsuite/gcc.dg/tls/vis-flag-hidden-gd.c
+ 5f4089837c478b6f1c875de27ed7b201  gcc/testsuite/gcc.dg/tls/vis-flag-hidden.c
+ 72de2a10909cbbf20b93b7eac4b5554b  gcc/testsuite/gcc.dg/tls/vis-pragma-hidden-gd.c
+ 497f332dd166e008cc9059d18c3a2fc6  gcc/testsuite/gcc.dg/tls/vis-pragma-hidden.c
  25214598e340e56bf7487e493e42c739  gcc/testsuite/gcc.dg/tm/20091013.c
  f9f47372393116a3e58a8470e17cae92  gcc/testsuite/gcc.dg/tm/20091221.c
  aa085ac0f143cec3ccd2d58a48f072e2  gcc/testsuite/gcc.dg/tm/20100125.c
*************** fe3f545b4342e4629b8e3f50ec72aa75  gcc/te
*** 44034,44040 ****
  69106475c2239e1185e01df0c747e5d0  gcc/testsuite/gcc.dg/tm/props-5.c
  c6a48dab441b531c2ea8105678947e48  gcc/testsuite/gcc.dg/tm/pub-safety-1.c
  04141c931c3cf5684e6da6b0f18cc32b  gcc/testsuite/gcc.dg/tm/reg-promotion.c
! 0f7e358fa43150007ed27ecef9a41a13  gcc/testsuite/gcc.dg/tm/tm.exp
  00343bf5eb219ac16f5bb8c4bd59994b  gcc/testsuite/gcc.dg/tm/unsafe.c
  c5937eee848b88c1df5be63f77274eb5  gcc/testsuite/gcc.dg/tm/unused.c
  73db2a051a0e581c5f21d54dac46af4f  gcc/testsuite/gcc.dg/tm/vector-1.c
--- 46979,46985 ----
  69106475c2239e1185e01df0c747e5d0  gcc/testsuite/gcc.dg/tm/props-5.c
  c6a48dab441b531c2ea8105678947e48  gcc/testsuite/gcc.dg/tm/pub-safety-1.c
  04141c931c3cf5684e6da6b0f18cc32b  gcc/testsuite/gcc.dg/tm/reg-promotion.c
! 3304bb83dcb816ac2ff1ab7161e9c93e  gcc/testsuite/gcc.dg/tm/tm.exp
  00343bf5eb219ac16f5bb8c4bd59994b  gcc/testsuite/gcc.dg/tm/unsafe.c
  c5937eee848b88c1df5be63f77274eb5  gcc/testsuite/gcc.dg/tm/unused.c
  73db2a051a0e581c5f21d54dac46af4f  gcc/testsuite/gcc.dg/tm/vector-1.c
*************** a268f7e7fe5d358fe2f76cd8fc4ecac3  gcc/te
*** 44064,44069 ****
--- 47009,47017 ----
  682902102f565ed7c61ed171053e8f83  gcc/testsuite/gcc.dg/torture/20200727-0.c
  1541425a8d99c32b4a72c395ce05cf51  gcc/testsuite/gcc.dg/torture/20210916.c
  d31400fbd06cbdeec1327317131c1eef  gcc/testsuite/gcc.dg/torture/20211118-1.c
+ e9a65b982d10036ade7cc92c77da3682  gcc/testsuite/gcc.dg/torture/20220518-1.c
+ 9fd80ecd2f7ee9f40db77c5478910f27  gcc/testsuite/gcc.dg/torture/20220518-2.c
+ 852a8e3497f32ebb54e9b55fc7587eb2  gcc/testsuite/gcc.dg/torture/20220525-1.c
  6b765185ec201860e2594b08bb18461a  gcc/testsuite/gcc.dg/torture/Wsizeof-pointer-memaccess1.c
  d23f5563695ea2b9898397f0244ca90d  gcc/testsuite/gcc.dg/torture/alias-1.c
  2063dc05a74374000dcf03fc407536e5  gcc/testsuite/gcc.dg/torture/alias-2.c
*************** e05c10e4692341801a9878158cad27d7  gcc/te
*** 44082,44087 ****
--- 47030,47039 ----
  c2aabfd0e7da2857b86672bc59174dcf  gcc/testsuite/gcc.dg/torture/arm-fp16-ops.h
  9743d27e99f550b54fcdb44efc054f02  gcc/testsuite/gcc.dg/torture/asm-subreg-1.c
  d95cc663b80362e038948f52fb3d74be  gcc/testsuite/gcc.dg/torture/badshift.c
+ ef8a74113ed65681e746068871cc9691  gcc/testsuite/gcc.dg/torture/bfloat16-basic.c
+ 4f2bc32805181f5c4c94abf466abb45b  gcc/testsuite/gcc.dg/torture/bfloat16-builtin-issignaling-1.c
+ 0f421e5d90df5d6b1df83fa8ea509c38  gcc/testsuite/gcc.dg/torture/bfloat16-builtin.c
+ b17b4527a47b2b6306755793803b481f  gcc/testsuite/gcc.dg/torture/bfloat16-complex.c
  cf9904d4026e69bddaf745011bbaaab3  gcc/testsuite/gcc.dg/torture/builtin-attr-1.c
  e9fcd2618d7b5037e83f97c753ccd9b8  gcc/testsuite/gcc.dg/torture/builtin-complex-1.c
  3799cfeec447b62af156b116f77ae4e8  gcc/testsuite/gcc.dg/torture/builtin-convert-1.c
*************** c52cf8304bc6fa5604bc97a203120619  gcc/te
*** 44098,44103 ****
--- 47050,47057 ----
  f17d1f5035ab6459558b499a77e14ecc  gcc/testsuite/gcc.dg/torture/builtin-frexp-1.c
  b240a0ef7d00244042073b024cac7c9e  gcc/testsuite/gcc.dg/torture/builtin-integral-1.c
  4ce025382a7da5160143d92f4b87df45  gcc/testsuite/gcc.dg/torture/builtin-isinf_sign-1.c
+ ae065e2d0b0f2cf03ba8778b34d20d38  gcc/testsuite/gcc.dg/torture/builtin-issignaling-1.c
+ eaaf6db1d2f24f7e1647597cee1dab33  gcc/testsuite/gcc.dg/torture/builtin-issignaling-2.c
  87e32542dbc07d3d4d36b5c92fffba27  gcc/testsuite/gcc.dg/torture/builtin-ldexp-1.c
  4f89f07c2c594f2f34b8f1f728b4ce1b  gcc/testsuite/gcc.dg/torture/builtin-logb-1.c
  ea4608180e322835bb3a84e957c95ae5  gcc/testsuite/gcc.dg/torture/builtin-math-1.c
*************** fc59b38dbf924b0e9645900212548fea  gcc/te
*** 44118,44137 ****
  b465b03e50a5f0e6eb3f4fc778cae87c  gcc/testsuite/gcc.dg/torture/builtin-round-roundeven.c
  c1b87db2a9e9bd9b79aeb89e694fd159  gcc/testsuite/gcc.dg/torture/builtin-round-roundevenf128.c
  9e1b5d427790f2b01d5620a8b551a56a  gcc/testsuite/gcc.dg/torture/builtin-rounding-1.c
! 7e1b45610b7960d4c7e24bb1f0e8c5f5  gcc/testsuite/gcc.dg/torture/builtin-self.c
  fe01d458fb1e7b307aca4d27de62eff0  gcc/testsuite/gcc.dg/torture/builtin-sin-mpfr-1.c
  8d42dae4813a5c391a3481a72ac9c577  gcc/testsuite/gcc.dg/torture/builtin-sprintf.c
  23e1ea0bdd97005c1b4f8564d23f2b6a  gcc/testsuite/gcc.dg/torture/builtin-sqrt-cmp-1.c
  500d48d3b156ad2e1b9121d933504b79  gcc/testsuite/gcc.dg/torture/builtin-symmetric-1.c
  aa8cb0db7596e9b0e87edb8ba4d89392  gcc/testsuite/gcc.dg/torture/builtin-wctype-1.c
  48103f541453ef994906baa3e8cc9d99  gcc/testsuite/gcc.dg/torture/builtins-1.c
  dca6b9a0b04be64d1fd91290469bb98b  gcc/testsuite/gcc.dg/torture/c99-contract-1.c
  d91f1642a3d3d72da6f61a576021d2ea  gcc/testsuite/gcc.dg/torture/calleesave-sse.c
  61fdb26117b326e597982d733555a398  gcc/testsuite/gcc.dg/torture/cris-asm-mof-1.c
  82bfe80fc489a6c0a56a612f224158c1  gcc/testsuite/gcc.dg/torture/cris-volatile-1.c
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/gcc.dg/torture/darwin-cfstring-3.c
  537c85296c73ca5b8d5644f2db0f4333  gcc/testsuite/gcc.dg/torture/dg-torture.exp
  cd5f72d1a4b2a92dcf8434e80e2602fc  gcc/testsuite/gcc.dg/torture/float128-basic.c
  494e5cff36358bcb8a5d95a0a1af2886  gcc/testsuite/gcc.dg/torture/float128-builtin.c
  91878abc4b4d0b7881e1265b4152798a  gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
  1d70fefec2682a655242b228afd11ac7  gcc/testsuite/gcc.dg/torture/float128-complex.c
--- 47072,47099 ----
  b465b03e50a5f0e6eb3f4fc778cae87c  gcc/testsuite/gcc.dg/torture/builtin-round-roundeven.c
  c1b87db2a9e9bd9b79aeb89e694fd159  gcc/testsuite/gcc.dg/torture/builtin-round-roundevenf128.c
  9e1b5d427790f2b01d5620a8b551a56a  gcc/testsuite/gcc.dg/torture/builtin-rounding-1.c
! e09f1e946db0ab1dc4d3acd77ea2b116  gcc/testsuite/gcc.dg/torture/builtin-self.c
  fe01d458fb1e7b307aca4d27de62eff0  gcc/testsuite/gcc.dg/torture/builtin-sin-mpfr-1.c
  8d42dae4813a5c391a3481a72ac9c577  gcc/testsuite/gcc.dg/torture/builtin-sprintf.c
  23e1ea0bdd97005c1b4f8564d23f2b6a  gcc/testsuite/gcc.dg/torture/builtin-sqrt-cmp-1.c
  500d48d3b156ad2e1b9121d933504b79  gcc/testsuite/gcc.dg/torture/builtin-symmetric-1.c
  aa8cb0db7596e9b0e87edb8ba4d89392  gcc/testsuite/gcc.dg/torture/builtin-wctype-1.c
  48103f541453ef994906baa3e8cc9d99  gcc/testsuite/gcc.dg/torture/builtins-1.c
+ 666ec222d674bedc16159aefa730071e  gcc/testsuite/gcc.dg/torture/c2x-stdarg-split-1a.c
+ ed8e4df274fbfd698768337bdf0ac488  gcc/testsuite/gcc.dg/torture/c2x-stdarg-split-1b.c
  dca6b9a0b04be64d1fd91290469bb98b  gcc/testsuite/gcc.dg/torture/c99-contract-1.c
  d91f1642a3d3d72da6f61a576021d2ea  gcc/testsuite/gcc.dg/torture/calleesave-sse.c
+ ca7351c7a93d80d524ce603d92263c47  gcc/testsuite/gcc.dg/torture/convert-dfp-2.c
+ 17bd0a31e9a5ce530b6d1899747f7a93  gcc/testsuite/gcc.dg/torture/convert-dfp.c
  61fdb26117b326e597982d733555a398  gcc/testsuite/gcc.dg/torture/cris-asm-mof-1.c
  82bfe80fc489a6c0a56a612f224158c1  gcc/testsuite/gcc.dg/torture/cris-volatile-1.c
  ce4f8106ed96ef070bead8ca0df02eea  gcc/testsuite/gcc.dg/torture/darwin-cfstring-3.c
+ e2fc2f6efb6228b3bdb1290bc22490fe  gcc/testsuite/gcc.dg/torture/dfp-default-init-1.c
+ 309fb84632cbbf1dec8848dc9a808a83  gcc/testsuite/gcc.dg/torture/dfp-default-init-2.c
+ f0a0abbf88d90c241d5a79a842755381  gcc/testsuite/gcc.dg/torture/dfp-default-init-3.c
  537c85296c73ca5b8d5644f2db0f4333  gcc/testsuite/gcc.dg/torture/dg-torture.exp
  cd5f72d1a4b2a92dcf8434e80e2602fc  gcc/testsuite/gcc.dg/torture/float128-basic.c
+ bb3b562f0a0883df26aa18dc082521cd  gcc/testsuite/gcc.dg/torture/float128-builtin-issignaling-1.c
  494e5cff36358bcb8a5d95a0a1af2886  gcc/testsuite/gcc.dg/torture/float128-builtin.c
  91878abc4b4d0b7881e1265b4152798a  gcc/testsuite/gcc.dg/torture/float128-cmp-invalid.c
  1d70fefec2682a655242b228afd11ac7  gcc/testsuite/gcc.dg/torture/float128-complex.c
*************** d485cbf25472f0637e218de5aa74322a  gcc/te
*** 44151,44156 ****
--- 47113,47119 ----
  a0352637f21fc07fa0443b4c4e043743  gcc/testsuite/gcc.dg/torture/float128-truncdf-underflow.c
  8fbddcb636bd4a2b44df81e9c60f7f79  gcc/testsuite/gcc.dg/torture/float128-truncsf-underflow.c
  5e609df5e211240e5036e11a24878448  gcc/testsuite/gcc.dg/torture/float128x-basic.c
+ 2f74fdcfdfcde496703891e4e17507fe  gcc/testsuite/gcc.dg/torture/float128x-builtin-issignaling-1.c
  e33e9866b71e5b2d80a7726f98b4f67a  gcc/testsuite/gcc.dg/torture/float128x-builtin.c
  e49fe7885268fff640a38e0a037329c4  gcc/testsuite/gcc.dg/torture/float128x-complex.c
  401684af3896cffb4704dc55d75742c0  gcc/testsuite/gcc.dg/torture/float128x-floath.c
*************** c13372500282ebfd8b04577d9ddf5d17  gcc/te
*** 44160,44165 ****
--- 47123,47129 ----
  2d17bad2259db985234345b4f2259fe6  gcc/testsuite/gcc.dg/torture/float128x-tg-3.c
  3dc76b62ff5a0921c2cd55872da79614  gcc/testsuite/gcc.dg/torture/float128x-tg.c
  897b79c4f8eaf80f94f43880f77942ad  gcc/testsuite/gcc.dg/torture/float16-basic.c
+ 14b7d693328eed6d553e36d007f5aaaf  gcc/testsuite/gcc.dg/torture/float16-builtin-issignaling-1.c
  0b852fc3b1862a3ee4465e753b0e5269  gcc/testsuite/gcc.dg/torture/float16-builtin.c
  7e58cfd59df7aaacf5f6b4d8cf740b4e  gcc/testsuite/gcc.dg/torture/float16-complex.c
  810fc9eca4c8607405db7c71c2529179  gcc/testsuite/gcc.dg/torture/float16-floath.c
*************** e090fedeec308991a1c09abff9f6fe64  gcc/te
*** 44169,44174 ****
--- 47133,47139 ----
  9777da1a4b23fac807d5ed96f0c68132  gcc/testsuite/gcc.dg/torture/float16-tg-3.c
  4298972236099eaad4f04b7a93a2b923  gcc/testsuite/gcc.dg/torture/float16-tg.c
  3c7e9600fad352e6db16433dc3adf406  gcc/testsuite/gcc.dg/torture/float32-basic.c
+ b4096eb52651ec65f950d30aee4a4940  gcc/testsuite/gcc.dg/torture/float32-builtin-issignaling-1.c
  94b044327500f6d1582d37ae9ea7796c  gcc/testsuite/gcc.dg/torture/float32-builtin.c
  466fe4121149750edb2fec5ab3226c8a  gcc/testsuite/gcc.dg/torture/float32-complex.c
  479194fddf3b58b2a535336a2b171630  gcc/testsuite/gcc.dg/torture/float32-floath.c
*************** fa50dda441f5c8935cc3883b733d6f4f  gcc/te
*** 44178,44201 ****
  484c0f7a0e1bacc0b657a1a64d94ee09  gcc/testsuite/gcc.dg/torture/float32-tg-3.c
  3afb82e5cfc167df693441c3ed19e5ff  gcc/testsuite/gcc.dg/torture/float32-tg.c
  85c6c5f52f73b65b1c948c3890f98995  gcc/testsuite/gcc.dg/torture/float32x-basic.c
  4a70ceb9cb585dd2e7b808836ba1a5c6  gcc/testsuite/gcc.dg/torture/float32x-builtin.c
  aef817e604f3b188289291b1907bfc65  gcc/testsuite/gcc.dg/torture/float32x-complex.c
  63ec3f7c1deb2f123396d523bf83ae3a  gcc/testsuite/gcc.dg/torture/float32x-floath.c
! fef6a8044cbea59874cf2c927f52c99d  gcc/testsuite/gcc.dg/torture/float32x-nan-floath.c
! f65406ca6d0960fbb2fac0b1a622cc18  gcc/testsuite/gcc.dg/torture/float32x-nan.c
  dafff5133398fb327002b7b2ecfdc9f7  gcc/testsuite/gcc.dg/torture/float32x-tg-2.c
  7e0e3d85111a1d8396674ffd7902dcc4  gcc/testsuite/gcc.dg/torture/float32x-tg-3.c
  ec429bc681a2cdaaf93025b91a53b777  gcc/testsuite/gcc.dg/torture/float32x-tg.c
  19e47064edd340fead503184a0052f1f  gcc/testsuite/gcc.dg/torture/float64-basic.c
  cae353410ad77c26913e93de7759b965  gcc/testsuite/gcc.dg/torture/float64-builtin.c
  4796861bb6ca40790008edefd3e86b9f  gcc/testsuite/gcc.dg/torture/float64-complex.c
  465667475890a3f5b21d79ee1d6989f4  gcc/testsuite/gcc.dg/torture/float64-floath.c
! 72bbec339963ee28542d3865baa63c6d  gcc/testsuite/gcc.dg/torture/float64-nan-floath.c
! 109e5928c7c5f70e3d86ad8e0ca58808  gcc/testsuite/gcc.dg/torture/float64-nan.c
  d296cbbb51d32777492acb1f17aef0f2  gcc/testsuite/gcc.dg/torture/float64-tg-2.c
  a5c1a74d472cc90f018fe1671f7c9256  gcc/testsuite/gcc.dg/torture/float64-tg-3.c
  8af80ee8e8536fab4be8d890f966a365  gcc/testsuite/gcc.dg/torture/float64-tg.c
  35cd512c19b363695945987b7e069720  gcc/testsuite/gcc.dg/torture/float64x-basic.c
  857b2170423eed94fc84970fa740a540  gcc/testsuite/gcc.dg/torture/float64x-builtin.c
  aa497c91f7fdcc573573ced57b4f09dc  gcc/testsuite/gcc.dg/torture/float64x-complex.c
  689e43c42e051608d1c6723fed792de2  gcc/testsuite/gcc.dg/torture/float64x-floath.c
--- 47143,47169 ----
  484c0f7a0e1bacc0b657a1a64d94ee09  gcc/testsuite/gcc.dg/torture/float32-tg-3.c
  3afb82e5cfc167df693441c3ed19e5ff  gcc/testsuite/gcc.dg/torture/float32-tg.c
  85c6c5f52f73b65b1c948c3890f98995  gcc/testsuite/gcc.dg/torture/float32x-basic.c
+ 9c917e42d0660232584c878afe4d77f4  gcc/testsuite/gcc.dg/torture/float32x-builtin-issignaling-1.c
  4a70ceb9cb585dd2e7b808836ba1a5c6  gcc/testsuite/gcc.dg/torture/float32x-builtin.c
  aef817e604f3b188289291b1907bfc65  gcc/testsuite/gcc.dg/torture/float32x-complex.c
  63ec3f7c1deb2f123396d523bf83ae3a  gcc/testsuite/gcc.dg/torture/float32x-floath.c
! 5899748737d87a2f48dfe688cbe0a77b  gcc/testsuite/gcc.dg/torture/float32x-nan-floath.c
! 8efe896a31c91066b6963bfdcb5a1e49  gcc/testsuite/gcc.dg/torture/float32x-nan.c
  dafff5133398fb327002b7b2ecfdc9f7  gcc/testsuite/gcc.dg/torture/float32x-tg-2.c
  7e0e3d85111a1d8396674ffd7902dcc4  gcc/testsuite/gcc.dg/torture/float32x-tg-3.c
  ec429bc681a2cdaaf93025b91a53b777  gcc/testsuite/gcc.dg/torture/float32x-tg.c
  19e47064edd340fead503184a0052f1f  gcc/testsuite/gcc.dg/torture/float64-basic.c
+ d484dfa82978a064727b8afa7bfcf265  gcc/testsuite/gcc.dg/torture/float64-builtin-issignaling-1.c
  cae353410ad77c26913e93de7759b965  gcc/testsuite/gcc.dg/torture/float64-builtin.c
  4796861bb6ca40790008edefd3e86b9f  gcc/testsuite/gcc.dg/torture/float64-complex.c
  465667475890a3f5b21d79ee1d6989f4  gcc/testsuite/gcc.dg/torture/float64-floath.c
! 65537651c353ca1685a3cb584fad3afb  gcc/testsuite/gcc.dg/torture/float64-nan-floath.c
! aafa2750eb1c3f9c87d637685a067d90  gcc/testsuite/gcc.dg/torture/float64-nan.c
  d296cbbb51d32777492acb1f17aef0f2  gcc/testsuite/gcc.dg/torture/float64-tg-2.c
  a5c1a74d472cc90f018fe1671f7c9256  gcc/testsuite/gcc.dg/torture/float64-tg-3.c
  8af80ee8e8536fab4be8d890f966a365  gcc/testsuite/gcc.dg/torture/float64-tg.c
  35cd512c19b363695945987b7e069720  gcc/testsuite/gcc.dg/torture/float64x-basic.c
+ e4e755a866c90ba4abb29720bc65fed2  gcc/testsuite/gcc.dg/torture/float64x-builtin-issignaling-1.c
  857b2170423eed94fc84970fa740a540  gcc/testsuite/gcc.dg/torture/float64x-builtin.c
  aa497c91f7fdcc573573ced57b4f09dc  gcc/testsuite/gcc.dg/torture/float64x-complex.c
  689e43c42e051608d1c6723fed792de2  gcc/testsuite/gcc.dg/torture/float64x-floath.c
*************** aa497c91f7fdcc573573ced57b4f09dc  gcc/te
*** 44204,44211 ****
  ce3cf05c8b3a13ab0ef86e5961e651ac  gcc/testsuite/gcc.dg/torture/float64x-tg-2.c
  575021dc90e288896a1760008ca30505  gcc/testsuite/gcc.dg/torture/float64x-tg-3.c
  53990205e045b88b7047e0d82209eb0d  gcc/testsuite/gcc.dg/torture/float64x-tg.c
! b00364c9f7e9c896aebd8bddfe206369  gcc/testsuite/gcc.dg/torture/floatn-basic.h
! 44f7de0f67e1d80f10b6c16d580a1066  gcc/testsuite/gcc.dg/torture/floatn-builtin.h
  6ea3e0c782c3ad1d61be80a8f5ef6175  gcc/testsuite/gcc.dg/torture/floatn-complex.h
  a4fec089c1874d76f9c35d734c68421f  gcc/testsuite/gcc.dg/torture/floatn-convert.c
  ba1b7857598f404e8abee27ec3a2e27d  gcc/testsuite/gcc.dg/torture/floatn-floath.h
--- 47172,47179 ----
  ce3cf05c8b3a13ab0ef86e5961e651ac  gcc/testsuite/gcc.dg/torture/float64x-tg-2.c
  575021dc90e288896a1760008ca30505  gcc/testsuite/gcc.dg/torture/float64x-tg-3.c
  53990205e045b88b7047e0d82209eb0d  gcc/testsuite/gcc.dg/torture/float64x-tg.c
! 2b31ffb9f03bc1476a07b8506f61c31d  gcc/testsuite/gcc.dg/torture/floatn-basic.h
! 3fd7709ed4712e9410abdbf570fd1751  gcc/testsuite/gcc.dg/torture/floatn-builtin.h
  6ea3e0c782c3ad1d61be80a8f5ef6175  gcc/testsuite/gcc.dg/torture/floatn-complex.h
  a4fec089c1874d76f9c35d734c68421f  gcc/testsuite/gcc.dg/torture/floatn-convert.c
  ba1b7857598f404e8abee27ec3a2e27d  gcc/testsuite/gcc.dg/torture/floatn-floath.h
*************** e09f593e2cab835f9fb2f42fef184aaf  gcc/te
*** 44215,44221 ****
  ee74520c41d30f86fc2e503c64a2c642  gcc/testsuite/gcc.dg/torture/floatn-tg-3.h
  e9f715c66fe1cd22e199951430100c47  gcc/testsuite/gcc.dg/torture/floatn-tg.h
  7734647dadb81caf0ae1f96df53c47f9  gcc/testsuite/gcc.dg/torture/fp-compare.c
! a68e82ce57a913affc955229b8931ab0  gcc/testsuite/gcc.dg/torture/fp-double-convert-float-1.c
  4a1efbe908d1984e5c7866446e422e72  gcc/testsuite/gcc.dg/torture/fp-int-convert-2.c
  a0c11f3d8611b2fea52d09cbf0b71da3  gcc/testsuite/gcc.dg/torture/fp-int-convert-double.c
  ebde1fd0494ae1b65f239981255691c9  gcc/testsuite/gcc.dg/torture/fp-int-convert-float.c
--- 47183,47189 ----
  ee74520c41d30f86fc2e503c64a2c642  gcc/testsuite/gcc.dg/torture/floatn-tg-3.h
  e9f715c66fe1cd22e199951430100c47  gcc/testsuite/gcc.dg/torture/floatn-tg.h
  7734647dadb81caf0ae1f96df53c47f9  gcc/testsuite/gcc.dg/torture/fp-compare.c
! 22243b77af41eed18d4fe83d73572fd0  gcc/testsuite/gcc.dg/torture/fp-double-convert-float-1.c
  4a1efbe908d1984e5c7866446e422e72  gcc/testsuite/gcc.dg/torture/fp-int-convert-2.c
  a0c11f3d8611b2fea52d09cbf0b71da3  gcc/testsuite/gcc.dg/torture/fp-int-convert-double.c
  ebde1fd0494ae1b65f239981255691c9  gcc/testsuite/gcc.dg/torture/fp-int-convert-float.c
*************** c291ca9e80ea000b6dc33f0d7f7d34e9  gcc/te
*** 44242,44263 ****
  f8e2abd75769f3a4ef8ad7b9914390be  gcc/testsuite/gcc.dg/torture/fp-int-convert-long-double.c
  9ef87b27cfee504086000e94ac29f50a  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-1.c
  5169357e3279d3d6cdbbba3f5f56ae06  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-2.c
! 1693262ce9bbff75614cabd11769c3bb  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c
! 4c8473474ab81348950cc8917d5cfdba  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c
  b433f576987f7d246553ea453e377ab9  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode.c
  ee42b6d1749f9706fac80052d9404d0a  gcc/testsuite/gcc.dg/torture/fp-int-convert.h
! fa522bb9cccbbb36790dbe8f3372db72  gcc/testsuite/gcc.dg/torture/fp-uint64-convert-double-1.c
! cdc895418b61034850ab1f2d8c794b24  gcc/testsuite/gcc.dg/torture/fp-uint64-convert-double-2.c
  ff646b4bbd5d24fb83db416b6482d625  gcc/testsuite/gcc.dg/torture/ftrapv-1.c
  9479cb5c7a5a2913427912c1cb622377  gcc/testsuite/gcc.dg/torture/ftrapv-2.c
! 4d5a201d0e6acb5cc52023eed6db29dd  gcc/testsuite/gcc.dg/torture/inf-compare-1.c
! 934da7297e9155e7e1e6ee12d50437f6  gcc/testsuite/gcc.dg/torture/inf-compare-2.c
! 38206cc8639f2fe0e3eb0396d196a9e3  gcc/testsuite/gcc.dg/torture/inf-compare-3.c
! 71fd4daba4360187e086370d19810b36  gcc/testsuite/gcc.dg/torture/inf-compare-4.c
! 8ad4bc70e7bffda83119f765829b3d43  gcc/testsuite/gcc.dg/torture/inf-compare-5.c
! 85c95efe0b452cd5f0eaa3f700317b6d  gcc/testsuite/gcc.dg/torture/inf-compare-6.c
! 0afc22877e4afe2b0cae1651d390279b  gcc/testsuite/gcc.dg/torture/inf-compare-7.c
! b3e295ce736ac724fd1319d77d9cd372  gcc/testsuite/gcc.dg/torture/inf-compare-8.c
  8bc405a0c2f066f42366f583340cc58b  gcc/testsuite/gcc.dg/torture/inline-1.c
  601b941620b89839abca232084604d70  gcc/testsuite/gcc.dg/torture/inline-2.c
  b7ae2bf193984e936d51e73d7e4783e2  gcc/testsuite/gcc.dg/torture/ipa-pta-1.c
--- 47210,47239 ----
  f8e2abd75769f3a4ef8ad7b9914390be  gcc/testsuite/gcc.dg/torture/fp-int-convert-long-double.c
  9ef87b27cfee504086000e94ac29f50a  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-1.c
  5169357e3279d3d6cdbbba3f5f56ae06  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-2.c
! a10d4bf791ef2af812d4f7be0cf8acf9  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-3.c
! 2c192bccc0605a278e8405d2583ff09f  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode-4.c
  b433f576987f7d246553ea453e377ab9  gcc/testsuite/gcc.dg/torture/fp-int-convert-timode.c
  ee42b6d1749f9706fac80052d9404d0a  gcc/testsuite/gcc.dg/torture/fp-int-convert.h
! effb4dbb66229fedfdf33c591ab1c3fe  gcc/testsuite/gcc.dg/torture/fp-uint64-convert-double-1.c
! b5ce592010c8698105487afa7089b8b1  gcc/testsuite/gcc.dg/torture/fp-uint64-convert-double-2.c
  ff646b4bbd5d24fb83db416b6482d625  gcc/testsuite/gcc.dg/torture/ftrapv-1.c
  9479cb5c7a5a2913427912c1cb622377  gcc/testsuite/gcc.dg/torture/ftrapv-2.c
! 0781e72d34733d4d855abdff16164e61  gcc/testsuite/gcc.dg/torture/inf-compare-1-float.c
! 37b3a395204de921222050c9326ed5d3  gcc/testsuite/gcc.dg/torture/inf-compare-1.c
! b704a5182c8ca77a9eb5810b6918a36b  gcc/testsuite/gcc.dg/torture/inf-compare-2-float.c
! 06656dfa5e49c1b0912212236a1ca16a  gcc/testsuite/gcc.dg/torture/inf-compare-2.c
! 891a8f21aa4dcf4744ef3e627915ed18  gcc/testsuite/gcc.dg/torture/inf-compare-3-float.c
! b58f97401cdcd9c43091c9ce7e888f4f  gcc/testsuite/gcc.dg/torture/inf-compare-3.c
! 3f228d4d39d9269b18e003b5b0c17c2a  gcc/testsuite/gcc.dg/torture/inf-compare-4-float.c
! 0721c4982dbedf91fd2743badb8b4427  gcc/testsuite/gcc.dg/torture/inf-compare-4.c
! 80fa2b6d0b3a26b490a0fac55389c3fa  gcc/testsuite/gcc.dg/torture/inf-compare-5-float.c
! 8ffcd300d0ff2c416d0b1e21152ad8f3  gcc/testsuite/gcc.dg/torture/inf-compare-5.c
! cee315c60d4bb9871399c0c79c06b497  gcc/testsuite/gcc.dg/torture/inf-compare-6-float.c
! 63c9b5d6def0f2f359e085c8da196ad1  gcc/testsuite/gcc.dg/torture/inf-compare-6.c
! 3b33cda1bf36f38bab505a34edc50049  gcc/testsuite/gcc.dg/torture/inf-compare-7-float.c
! 9fea239a42cf841eca3fc5b6194fafa4  gcc/testsuite/gcc.dg/torture/inf-compare-7.c
! 8616b41a6bb85ca652778b1525ed2816  gcc/testsuite/gcc.dg/torture/inf-compare-8-float.c
! 81911e8fd95be0f05b695bc222d6e48f  gcc/testsuite/gcc.dg/torture/inf-compare-8.c
  8bc405a0c2f066f42366f583340cc58b  gcc/testsuite/gcc.dg/torture/inline-1.c
  601b941620b89839abca232084604d70  gcc/testsuite/gcc.dg/torture/inline-2.c
  b7ae2bf193984e936d51e73d7e4783e2  gcc/testsuite/gcc.dg/torture/ipa-pta-1.c
*************** ba222bffc08c28a180298a0d4c6d6aea  gcc/te
*** 44280,44286 ****
  4ac07881b7842f59c3aeffe74b35a881  gcc/testsuite/gcc.dg/torture/parm-coalesce.c
  9d76608a6d99fb21a235151928a24b22  gcc/testsuite/gcc.dg/torture/pr100053.c
  73b4b3e59f81e5abe002d826d7be5575  gcc/testsuite/gcc.dg/torture/pr100329.c
! da526597c6d1f576574d8aceeee9060d  gcc/testsuite/gcc.dg/torture/pr100398.c
  9d2f1adc508f8626c3bd56448501eb00  gcc/testsuite/gcc.dg/torture/pr100492.c
  232932e20fd0511dfa266de78f409bb5  gcc/testsuite/gcc.dg/torture/pr100499-1.c
  81a324c7b609a973d1a7d59affcdcf93  gcc/testsuite/gcc.dg/torture/pr100499-2.c
--- 47256,47262 ----
  4ac07881b7842f59c3aeffe74b35a881  gcc/testsuite/gcc.dg/torture/parm-coalesce.c
  9d76608a6d99fb21a235151928a24b22  gcc/testsuite/gcc.dg/torture/pr100053.c
  73b4b3e59f81e5abe002d826d7be5575  gcc/testsuite/gcc.dg/torture/pr100329.c
! dee163a9ce8a5e588dba3fce2f306d7f  gcc/testsuite/gcc.dg/torture/pr100398.c
  9d2f1adc508f8626c3bd56448501eb00  gcc/testsuite/gcc.dg/torture/pr100492.c
  232932e20fd0511dfa266de78f409bb5  gcc/testsuite/gcc.dg/torture/pr100499-1.c
  81a324c7b609a973d1a7d59affcdcf93  gcc/testsuite/gcc.dg/torture/pr100499-2.c
*************** ff84a95c5f69f1f2863800f55eb74095  gcc/te
*** 44354,44362 ****
--- 47330,47380 ----
  cfa64624c60a354aabfb89f439ddf206  gcc/testsuite/gcc.dg/torture/pr105598.c
  799f07265d34626ee5c18ce87187d6e9  gcc/testsuite/gcc.dg/torture/pr105665.c
  48144e737bcd38bcbb928b976051e967  gcc/testsuite/gcc.dg/torture/pr105786.c
+ 6f0b5921287d63c244a1362a3cff76be  gcc/testsuite/gcc.dg/torture/pr106070.c
  b14f04ff913718764d3bdef465cc8316  gcc/testsuite/gcc.dg/torture/pr106112.c
+ 1a2a1b702c3adc5d7deeb1c6b03aa45b  gcc/testsuite/gcc.dg/torture/pr106182.c
+ e73ab5785058dee572f82d4600e4f7ef  gcc/testsuite/gcc.dg/torture/pr106196.c
+ 6fef181bc79fbe05853419eae92eefe7  gcc/testsuite/gcc.dg/torture/pr106414-1.c
+ 018b63b85116a9112a8cc1d4f8bb67a6  gcc/testsuite/gcc.dg/torture/pr106414-2.c
+ 91090c7850b0045a185d0463387f52b6  gcc/testsuite/gcc.dg/torture/pr106422.c
+ dc7d878f7ebd8fe8119d4a236b4eeca5  gcc/testsuite/gcc.dg/torture/pr106497.c
  dcce8968ffefc4127aace33be872b0b1  gcc/testsuite/gcc.dg/torture/pr106513.c
+ 7c2b2442baa8f3332521c199fd341aa5  gcc/testsuite/gcc.dg/torture/pr106521.c
+ 3f97424ac0a034e1436008a5837938d2  gcc/testsuite/gcc.dg/torture/pr106590.c
+ 8b4ba26a1729db716ce0dc71ce15e59f  gcc/testsuite/gcc.dg/torture/pr106630.c
+ a18e1aed520ae0e9f74f76068f8a2c9f  gcc/testsuite/gcc.dg/torture/pr106809.c
+ e1b483b65be081b4b298ed61ad7e3eed  gcc/testsuite/gcc.dg/torture/pr106892.c
  c17159dabf628310bc542029267ef6ef  gcc/testsuite/gcc.dg/torture/pr106971.c
+ 9e13dab25399fb10996bbceba359de9a  gcc/testsuite/gcc.dg/torture/pr107115.c
+ 366b77cfd22f49d273d0dcf2caf64235  gcc/testsuite/gcc.dg/torture/pr107176.c
+ 917ef0b6176966a68d17d6bd6285446b  gcc/testsuite/gcc.dg/torture/pr107301.c
+ 478730bb4770bc629982821178a47f1f  gcc/testsuite/gcc.dg/torture/pr107407.c
+ f533117b3ab96be08cf3daab9f874c30  gcc/testsuite/gcc.dg/torture/pr107435.c
+ 8a45c1212793c3a86f7cf259756d9723  gcc/testsuite/gcc.dg/torture/pr107447.c
+ 52e50fb88c76596d45c9fa47a5313317  gcc/testsuite/gcc.dg/torture/pr107451.c
+ d547ae28851e97478962ff6033f81a59  gcc/testsuite/gcc.dg/torture/pr107493.c
+ 44958c82c4db4c00d6a4b45238c045b2  gcc/testsuite/gcc.dg/torture/pr107833.c
+ 4cc4206c7e7cf05e631a4aca06268055  gcc/testsuite/gcc.dg/torture/pr107935.c
+ 5badd9cb552b126e1568f773f867f8b3  gcc/testsuite/gcc.dg/torture/pr108076.c
+ 51c14114eb8e84276a24bffc786883bf  gcc/testsuite/gcc.dg/torture/pr108482.c
+ bdc32dadd650e03564d59453e6ae95a3  gcc/testsuite/gcc.dg/torture/pr108523.c
+ 292b783fa2e7d560be2c126dcc50e292  gcc/testsuite/gcc.dg/torture/pr108574-1.c
+ 0bedd6dbdbba339e6fad78d82ef87bb8  gcc/testsuite/gcc.dg/torture/pr108574-2.c
+ cb14f27bab3637f8fbcf0eedffc10553  gcc/testsuite/gcc.dg/torture/pr108574-3.c
+ 3b223f324553364856c2a05c4e806779  gcc/testsuite/gcc.dg/torture/pr108737.c
+ 2d2278d5a53cf6f5eb54dd1534cc4318  gcc/testsuite/gcc.dg/torture/pr108782.c
+ e1867f2717ff0868a4ea5d1f1913e338  gcc/testsuite/gcc.dg/torture/pr108791.c
+ f260468383f94ce8cae2ce5b2ef65427  gcc/testsuite/gcc.dg/torture/pr108793.c
+ 1b4e15adea1e02e16096a3afc76b0f6e  gcc/testsuite/gcc.dg/torture/pr108816.c
+ a5fe02cf6cd0196e8354e99b41394f45  gcc/testsuite/gcc.dg/torture/pr108825.c
+ 1d22a943b944cf738045d6401143c3bd  gcc/testsuite/gcc.dg/torture/pr108910.c
+ d65ff171a20187d5f981bae2619fc787  gcc/testsuite/gcc.dg/torture/pr109002.c
+ 40557d3bfb598197240328750127ced0  gcc/testsuite/gcc.dg/torture/pr109139.c
+ 6643881c07cd12bae87cd6366bf0a05f  gcc/testsuite/gcc.dg/torture/pr109219.c
+ c1a4cedc4f83158be6beb3b56be99a99  gcc/testsuite/gcc.dg/torture/pr109331.c
+ 20080fb33b5b17277c72133229475af4  gcc/testsuite/gcc.dg/torture/pr109469.c
+ eeac37698d62ac42c407cf7ffdab1b4a  gcc/testsuite/gcc.dg/torture/pr109564-1.c
+ ef2b84dc0bce27c12bd12e27c33dd806  gcc/testsuite/gcc.dg/torture/pr109564-2.c
  ded4330fd1cd52783bd9b1761db038ef  gcc/testsuite/gcc.dg/torture/pr16104-1.c
  fc265ee05da2f29f0e92804661cd1f28  gcc/testsuite/gcc.dg/torture/pr17526.c
  01c583edb41b632b835aa892b9c1cb14  gcc/testsuite/gcc.dg/torture/pr17933-1.c
*************** a07d3b764fad19bf315579f23943a03f  gcc/te
*** 44375,44381 ****
  e0143dfae40092dc89e3b1a088370e88  gcc/testsuite/gcc.dg/torture/pr24626-4.c
  42e05ae5d0f540838f79b6544080817e  gcc/testsuite/gcc.dg/torture/pr24750-1.c
  98fba13047a6cfb5f660402f3f56296f  gcc/testsuite/gcc.dg/torture/pr24912-1.c
! 7004e1af583a6690cc5682354ea22c14  gcc/testsuite/gcc.dg/torture/pr25183.c
  a8e844b5e45570d6708a8da821cdb7ed  gcc/testsuite/gcc.dg/torture/pr25481.c
  b93e5a6d4aa60a17bfa7ec5bda2eb25a  gcc/testsuite/gcc.dg/torture/pr25654.c
  81035e7a609855a8022fd1e3b78def06  gcc/testsuite/gcc.dg/torture/pr25706-1.c
--- 47393,47399 ----
  e0143dfae40092dc89e3b1a088370e88  gcc/testsuite/gcc.dg/torture/pr24626-4.c
  42e05ae5d0f540838f79b6544080817e  gcc/testsuite/gcc.dg/torture/pr24750-1.c
  98fba13047a6cfb5f660402f3f56296f  gcc/testsuite/gcc.dg/torture/pr24912-1.c
! 0738631cfcfdad6eb0bad628dc72f60e  gcc/testsuite/gcc.dg/torture/pr25183.c
  a8e844b5e45570d6708a8da821cdb7ed  gcc/testsuite/gcc.dg/torture/pr25481.c
  b93e5a6d4aa60a17bfa7ec5bda2eb25a  gcc/testsuite/gcc.dg/torture/pr25654.c
  81035e7a609855a8022fd1e3b78def06  gcc/testsuite/gcc.dg/torture/pr25706-1.c
*************** d74f6acf0e1f652f5c716c969531d6c9  gcc/te
*** 44550,44556 ****
  068c3b0c1e041dff7326ef728033d52a  gcc/testsuite/gcc.dg/torture/pr47744-2.c
  d8f37dc708617f6389ec622f76b6cbcf  gcc/testsuite/gcc.dg/torture/pr47744-3.c
  0dd48878c14fd87645d9271ddfc856a8  gcc/testsuite/gcc.dg/torture/pr47890.c
! f47156d152a6b81c177dba6b702977dc  gcc/testsuite/gcc.dg/torture/pr47917.c
  1e3482288568c4f0ac3f7d648bb5e835  gcc/testsuite/gcc.dg/torture/pr47958-1.c
  6f4d26d375e37dd68889b6d257b90b9b  gcc/testsuite/gcc.dg/torture/pr47968.c
  287ecf24d5abcb1d62df079ac9c2bee2  gcc/testsuite/gcc.dg/torture/pr47975.c
--- 47568,47574 ----
  068c3b0c1e041dff7326ef728033d52a  gcc/testsuite/gcc.dg/torture/pr47744-2.c
  d8f37dc708617f6389ec622f76b6cbcf  gcc/testsuite/gcc.dg/torture/pr47744-3.c
  0dd48878c14fd87645d9271ddfc856a8  gcc/testsuite/gcc.dg/torture/pr47890.c
! 7a86000b0f2d30713ddf442d25ab66ae  gcc/testsuite/gcc.dg/torture/pr47917.c
  1e3482288568c4f0ac3f7d648bb5e835  gcc/testsuite/gcc.dg/torture/pr47958-1.c
  6f4d26d375e37dd68889b6d257b90b9b  gcc/testsuite/gcc.dg/torture/pr47968.c
  287ecf24d5abcb1d62df079ac9c2bee2  gcc/testsuite/gcc.dg/torture/pr47975.c
*************** e19181206a152ea54fd43daaa6278244  gcc/te
*** 44627,44633 ****
  35d6999d529b9f0ee94c98a9bb12d737  gcc/testsuite/gcc.dg/torture/pr52407.c
  6bad48b82b90303318a4d140d020d689  gcc/testsuite/gcc.dg/torture/pr52419.c
  0c4de913ac2b8b1489c83f48fbbaac06  gcc/testsuite/gcc.dg/torture/pr52429.c
! bdfd2f13dfd8932e961ce349545106c3  gcc/testsuite/gcc.dg/torture/pr52451.c
  8a23df0a6ac93e35ef3d05b1d4d89b9a  gcc/testsuite/gcc.dg/torture/pr52493.c
  7013fe713fdb30a897f18ea880ed234c  gcc/testsuite/gcc.dg/torture/pr52530.c
  230b2d7823cf7a40b4575ad7d3bd030f  gcc/testsuite/gcc.dg/torture/pr52693.c
--- 47645,47651 ----
  35d6999d529b9f0ee94c98a9bb12d737  gcc/testsuite/gcc.dg/torture/pr52407.c
  6bad48b82b90303318a4d140d020d689  gcc/testsuite/gcc.dg/torture/pr52419.c
  0c4de913ac2b8b1489c83f48fbbaac06  gcc/testsuite/gcc.dg/torture/pr52429.c
! 95cf05e37ef27d535a6278c92e2fc665  gcc/testsuite/gcc.dg/torture/pr52451.c
  8a23df0a6ac93e35ef3d05b1d4d89b9a  gcc/testsuite/gcc.dg/torture/pr52493.c
  7013fe713fdb30a897f18ea880ed234c  gcc/testsuite/gcc.dg/torture/pr52530.c
  230b2d7823cf7a40b4575ad7d3bd030f  gcc/testsuite/gcc.dg/torture/pr52693.c
*************** eb7c28f8fb377dba0060e3879194722d  gcc/te
*** 44658,44664 ****
  03807cc67dfb92ed7387ab445e76f0df  gcc/testsuite/gcc.dg/torture/pr53703.c
  58809eab4a9186297cc9e6413399f775  gcc/testsuite/gcc.dg/torture/pr53790.c
  d0ffb441d208abf83622aa00e25e03a4  gcc/testsuite/gcc.dg/torture/pr53908.c
! 4c702e48614ebe6d900fb268636f54aa  gcc/testsuite/gcc.dg/torture/pr53922.c
  24ce0b8d2ec767f9039e313b7fecd173  gcc/testsuite/gcc.dg/torture/pr54027.c
  a3c366ae7818844a5ca45d4ccef993bc  gcc/testsuite/gcc.dg/torture/pr54098.c
  9907f0a9a984ffb7426cf1c7963914ab  gcc/testsuite/gcc.dg/torture/pr54109.c
--- 47676,47682 ----
  03807cc67dfb92ed7387ab445e76f0df  gcc/testsuite/gcc.dg/torture/pr53703.c
  58809eab4a9186297cc9e6413399f775  gcc/testsuite/gcc.dg/torture/pr53790.c
  d0ffb441d208abf83622aa00e25e03a4  gcc/testsuite/gcc.dg/torture/pr53908.c
! fc38200e078d65f6dab8b688cc12ecc7  gcc/testsuite/gcc.dg/torture/pr53922.c
  24ce0b8d2ec767f9039e313b7fecd173  gcc/testsuite/gcc.dg/torture/pr54027.c
  a3c366ae7818844a5ca45d4ccef993bc  gcc/testsuite/gcc.dg/torture/pr54098.c
  9907f0a9a984ffb7426cf1c7963914ab  gcc/testsuite/gcc.dg/torture/pr54109.c
*************** c5b69018539af33b153200da995bed75  gcc/te
*** 44806,44812 ****
  bce1a41800b1242ba448fe4938c4ee1a  gcc/testsuite/gcc.dg/torture/pr59903.c
  a0d76efc48328548b5c9fdeabdba5798  gcc/testsuite/gcc.dg/torture/pr59990.c
  8fd58a81befcd37ab8a2c857cd33ac4e  gcc/testsuite/gcc.dg/torture/pr59993.c
! 7492f5a3a2139baff16c3d7ea932aad6  gcc/testsuite/gcc.dg/torture/pr60092.c
  1e0c7fa9a60ee1e7c4d0ea1eb8ec37ab  gcc/testsuite/gcc.dg/torture/pr60115.c
  3e0dd582d51f218aa9dbe4841686c12a  gcc/testsuite/gcc.dg/torture/pr60183.c
  37edab80333ac230277b7302ae12a316  gcc/testsuite/gcc.dg/torture/pr60606-1.c
--- 47824,47830 ----
  bce1a41800b1242ba448fe4938c4ee1a  gcc/testsuite/gcc.dg/torture/pr59903.c
  a0d76efc48328548b5c9fdeabdba5798  gcc/testsuite/gcc.dg/torture/pr59990.c
  8fd58a81befcd37ab8a2c857cd33ac4e  gcc/testsuite/gcc.dg/torture/pr59993.c
! ac65941afdba08ff4fd610fd799139cf  gcc/testsuite/gcc.dg/torture/pr60092.c
  1e0c7fa9a60ee1e7c4d0ea1eb8ec37ab  gcc/testsuite/gcc.dg/torture/pr60115.c
  3e0dd582d51f218aa9dbe4841686c12a  gcc/testsuite/gcc.dg/torture/pr60183.c
  37edab80333ac230277b7302ae12a316  gcc/testsuite/gcc.dg/torture/pr60606-1.c
*************** cc26f0ad00be51581f3873b4936c2888  gcc/te
*** 45022,45028 ****
  08b15e14c6c9f4cc6291f19fc8ba963b  gcc/testsuite/gcc.dg/torture/pr71423.c
  7093d7e831acdde839d3946e665b9380  gcc/testsuite/gcc.dg/torture/pr71428.c
  0c398d952cf20fc83aec050f85d8a44b  gcc/testsuite/gcc.dg/torture/pr71452.c
! a91614e6190ee2b9b765165b70015e38  gcc/testsuite/gcc.dg/torture/pr71462.c
  32fb9ea9f80770446549d2ce5ee20692  gcc/testsuite/gcc.dg/torture/pr71477.c
  d7822d9246b54abacbdc7d6230ab041d  gcc/testsuite/gcc.dg/torture/pr71522.c
  af2fe96a56e12f4d3da8c1e9da5687fe  gcc/testsuite/gcc.dg/torture/pr71532.c
--- 48040,48046 ----
  08b15e14c6c9f4cc6291f19fc8ba963b  gcc/testsuite/gcc.dg/torture/pr71423.c
  7093d7e831acdde839d3946e665b9380  gcc/testsuite/gcc.dg/torture/pr71428.c
  0c398d952cf20fc83aec050f85d8a44b  gcc/testsuite/gcc.dg/torture/pr71452.c
! 0e074e7bcd9c5f148057d23aecf3c752  gcc/testsuite/gcc.dg/torture/pr71462.c
  32fb9ea9f80770446549d2ce5ee20692  gcc/testsuite/gcc.dg/torture/pr71477.c
  d7822d9246b54abacbdc7d6230ab041d  gcc/testsuite/gcc.dg/torture/pr71522.c
  af2fe96a56e12f4d3da8c1e9da5687fe  gcc/testsuite/gcc.dg/torture/pr71532.c
*************** c4067e68903cdc2e5aaad5e7fa945264  gcc/te
*** 45164,45170 ****
  9a50e566233efc7c957b0bf69536e32f  gcc/testsuite/gcc.dg/torture/pr82436-2.c
  dc0f1b805e3da13506e6574437d79942  gcc/testsuite/gcc.dg/torture/pr82473.c
  7486e2be0c8bd30e05693a45799dca21  gcc/testsuite/gcc.dg/torture/pr82603.c
! 2375933a4732a72bb6501f2c5fb2692b  gcc/testsuite/gcc.dg/torture/pr82692.c
  9751e831af5032dd0fef399e0fa3c24c  gcc/testsuite/gcc.dg/torture/pr82697.c
  c2de7238c8fa758b5b81befc0997a17a  gcc/testsuite/gcc.dg/torture/pr82762.c
  866b818a3cd90d0567b428880448d0a8  gcc/testsuite/gcc.dg/torture/pr83055.c
--- 48182,48188 ----
  9a50e566233efc7c957b0bf69536e32f  gcc/testsuite/gcc.dg/torture/pr82436-2.c
  dc0f1b805e3da13506e6574437d79942  gcc/testsuite/gcc.dg/torture/pr82473.c
  7486e2be0c8bd30e05693a45799dca21  gcc/testsuite/gcc.dg/torture/pr82603.c
! 7d7e35aaa7cd299d07f8934b84a9f53f  gcc/testsuite/gcc.dg/torture/pr82692.c
  9751e831af5032dd0fef399e0fa3c24c  gcc/testsuite/gcc.dg/torture/pr82697.c
  c2de7238c8fa758b5b81befc0997a17a  gcc/testsuite/gcc.dg/torture/pr82762.c
  866b818a3cd90d0567b428880448d0a8  gcc/testsuite/gcc.dg/torture/pr83055.c
*************** bc5bedb53a5031564816c911cd9f7bd1  gcc/te
*** 45256,45268 ****
  62cac649b94529d0e690ee09df6e06ba  gcc/testsuite/gcc.dg/torture/pr89247.c
  5027d01e012944eed6e57508cf5efccf  gcc/testsuite/gcc.dg/torture/pr89505.c
  67023595cda810dfd27ab63686f32e54  gcc/testsuite/gcc.dg/torture/pr89572.c
! a56be250f5d8a4a3f63fad5c8624d2bb  gcc/testsuite/gcc.dg/torture/pr89595.c
  66e6d1d850f181ba202147d0c255aafa  gcc/testsuite/gcc.dg/torture/pr89677.c
  3ebff6f9fdd08ad83f1b108d52ed3515  gcc/testsuite/gcc.dg/torture/pr89710.c
  65e2e781c26cdc8e19de407584ae7097  gcc/testsuite/gcc.dg/torture/pr89779.c
  8007fcafda3e8f036b3e842a9a180e2c  gcc/testsuite/gcc.dg/torture/pr89789.c
  998a987615152e0ebad640146ff97b16  gcc/testsuite/gcc.dg/torture/pr89794.c
! 324796b00c00dce814303e653cfacb62  gcc/testsuite/gcc.dg/torture/pr90020.c
  00ba0b2b03892ecc75ac7c17c2f0d02e  gcc/testsuite/gcc.dg/torture/pr90071.c
  00e6f1395499e5956a1821ce97b809c7  gcc/testsuite/gcc.dg/torture/pr90278.c
  1c6a61da912dfe2711fb64a23a660471  gcc/testsuite/gcc.dg/torture/pr90328.c
--- 48274,48286 ----
  62cac649b94529d0e690ee09df6e06ba  gcc/testsuite/gcc.dg/torture/pr89247.c
  5027d01e012944eed6e57508cf5efccf  gcc/testsuite/gcc.dg/torture/pr89505.c
  67023595cda810dfd27ab63686f32e54  gcc/testsuite/gcc.dg/torture/pr89572.c
! 53f72d60ac1c36f94eb9fbc43c261a98  gcc/testsuite/gcc.dg/torture/pr89595.c
  66e6d1d850f181ba202147d0c255aafa  gcc/testsuite/gcc.dg/torture/pr89677.c
  3ebff6f9fdd08ad83f1b108d52ed3515  gcc/testsuite/gcc.dg/torture/pr89710.c
  65e2e781c26cdc8e19de407584ae7097  gcc/testsuite/gcc.dg/torture/pr89779.c
  8007fcafda3e8f036b3e842a9a180e2c  gcc/testsuite/gcc.dg/torture/pr89789.c
  998a987615152e0ebad640146ff97b16  gcc/testsuite/gcc.dg/torture/pr89794.c
! acaa764bc5d5e7b6cbaa9b1e1588132a  gcc/testsuite/gcc.dg/torture/pr90020.c
  00ba0b2b03892ecc75ac7c17c2f0d02e  gcc/testsuite/gcc.dg/torture/pr90071.c
  00e6f1395499e5956a1821ce97b809c7  gcc/testsuite/gcc.dg/torture/pr90278.c
  1c6a61da912dfe2711fb64a23a660471  gcc/testsuite/gcc.dg/torture/pr90328.c
*************** ef26911618617d51e6ffc39ca7a78dc2  gcc/te
*** 45398,45404 ****
  0973b111af619a63a2fc0d48845e1210  gcc/testsuite/gcc.dg/torture/ssa-fre-4.c
  21e1c7ca64fde86602f4b6e1f1fc190d  gcc/testsuite/gcc.dg/torture/ssa-fre-5.c
  e210efee65ce4c71ee51c42800c7d958  gcc/testsuite/gcc.dg/torture/ssa-fre-6.c
! 2ca52347d5fbc94204426029afb30f25  gcc/testsuite/gcc.dg/torture/ssa-fre-7.c
  2781dc6d2fef5f3f895a7736312f66e5  gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
  53a2ab81fc05f5ba0724c2020a12a151  gcc/testsuite/gcc.dg/torture/stackalign/alloca-1.c
  2d416072232dd69f1b2a756bbb4d1dfd  gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
--- 48416,48422 ----
  0973b111af619a63a2fc0d48845e1210  gcc/testsuite/gcc.dg/torture/ssa-fre-4.c
  21e1c7ca64fde86602f4b6e1f1fc190d  gcc/testsuite/gcc.dg/torture/ssa-fre-5.c
  e210efee65ce4c71ee51c42800c7d958  gcc/testsuite/gcc.dg/torture/ssa-fre-6.c
! 095e87ff17fb64844ff3bf9a63f032dd  gcc/testsuite/gcc.dg/torture/ssa-fre-7.c
  2781dc6d2fef5f3f895a7736312f66e5  gcc/testsuite/gcc.dg/torture/ssa-pta-fn-1.c
  53a2ab81fc05f5ba0724c2020a12a151  gcc/testsuite/gcc.dg/torture/stackalign/alloca-1.c
  2d416072232dd69f1b2a756bbb4d1dfd  gcc/testsuite/gcc.dg/torture/stackalign/alloca-2.c
*************** edd2b87cbd92db8aadd0dffe6eebb23d  gcc/te
*** 45408,45415 ****
  ac89150f1589849bc2c9db379c422d8a  gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c
  7e4dce4a710a8ea40f0dcd057f150b1f  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
! 4844379205910806b383dbde4bb6bb59  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c
! 4b4b59cd55751e5743bc4195c9571b78  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c
  d902ae1540aab0be308e7ba8052278bf  gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c
  05af8afc5d7de164574915304a190d13  gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-2.c
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/gcc.dg/torture/stackalign/check.h
--- 48426,48433 ----
  ac89150f1589849bc2c9db379c422d8a  gcc/testsuite/gcc.dg/torture/stackalign/alloca-6.c
  fef5a8d7a1f7cdc1db96edce26047f61  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-1.c
  7e4dce4a710a8ea40f0dcd057f150b1f  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-2.c
! 3069593d5aa8b2583eff321d60dc7b4e  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-3.c
! 6dd24dc7605a59da289de302b04367c6  gcc/testsuite/gcc.dg/torture/stackalign/builtin-apply-4.c
  d902ae1540aab0be308e7ba8052278bf  gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-1.c
  05af8afc5d7de164574915304a190d13  gcc/testsuite/gcc.dg/torture/stackalign/builtin-return-2.c
  a1b47b9c3e69d79d1895ebc4fd11032b  gcc/testsuite/gcc.dg/torture/stackalign/check.h
*************** eeb7cdfccbec69227ac2915527d61fa3  gcc/te
*** 45440,45446 ****
  0c1806b37db5e92a3ab1c3c51fb22d93  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
  ffc8d6d378e80da23cc2300fd9f2d529  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
  2a60ec21d6968b6101b16fa5b7c6ddb5  gcc/testsuite/gcc.dg/torture/stackalign/sibcall-1.c
! 3f344071303e75a8a97c528351975523  gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
  1adc6e1acc06069cf12168f39ef7f916  gcc/testsuite/gcc.dg/torture/stackalign/struct-1.c
  30d5a92d8a2ed3890586ed1c2d6602c9  gcc/testsuite/gcc.dg/torture/stackalign/thiscall-1.c
  d5967747961c3c0e43380a4aee91e5dd  gcc/testsuite/gcc.dg/torture/stackalign/vararg-1.c
--- 48458,48464 ----
  0c1806b37db5e92a3ab1c3c51fb22d93  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-3.c
  ffc8d6d378e80da23cc2300fd9f2d529  gcc/testsuite/gcc.dg/torture/stackalign/setjmp-4.c
  2a60ec21d6968b6101b16fa5b7c6ddb5  gcc/testsuite/gcc.dg/torture/stackalign/sibcall-1.c
! d54ebba248aaee10ada26e217df8176f  gcc/testsuite/gcc.dg/torture/stackalign/stackalign.exp
  1adc6e1acc06069cf12168f39ef7f916  gcc/testsuite/gcc.dg/torture/stackalign/struct-1.c
  30d5a92d8a2ed3890586ed1c2d6602c9  gcc/testsuite/gcc.dg/torture/stackalign/thiscall-1.c
  d5967747961c3c0e43380a4aee91e5dd  gcc/testsuite/gcc.dg/torture/stackalign/vararg-1.c
*************** a7dd8959cd95d178e51f986a468a0a72  gcc/te
*** 45455,45461 ****
  0cca0b22c665af78b56436b3e71b756f  gcc/testsuite/gcc.dg/torture/tls/thr-init-2.c
  32042e365dfe5925f2393ec1d5c692d1  gcc/testsuite/gcc.dg/torture/tls/tls-reload-1.c
  a759d083aeeb716f90190112ebdae9ca  gcc/testsuite/gcc.dg/torture/tls/tls-test.c
! cc21f6da851c739a2e61ff0e3131238b  gcc/testsuite/gcc.dg/torture/tls/tls.exp
  943be2937b2b327811185a47734cf258  gcc/testsuite/gcc.dg/torture/transpose-1.c
  1449d9d29dea8de5fba10079ff2581ac  gcc/testsuite/gcc.dg/torture/transpose-2.c
  5061844ac50db8a5cc4a6626c641b34c  gcc/testsuite/gcc.dg/torture/transpose-3.c
--- 48473,48479 ----
  0cca0b22c665af78b56436b3e71b756f  gcc/testsuite/gcc.dg/torture/tls/thr-init-2.c
  32042e365dfe5925f2393ec1d5c692d1  gcc/testsuite/gcc.dg/torture/tls/tls-reload-1.c
  a759d083aeeb716f90190112ebdae9ca  gcc/testsuite/gcc.dg/torture/tls/tls-test.c
! 4062b423cbac7cf0791422db1f54afff  gcc/testsuite/gcc.dg/torture/tls/tls.exp
  943be2937b2b327811185a47734cf258  gcc/testsuite/gcc.dg/torture/transpose-1.c
  1449d9d29dea8de5fba10079ff2581ac  gcc/testsuite/gcc.dg/torture/transpose-2.c
  5061844ac50db8a5cc4a6626c641b34c  gcc/testsuite/gcc.dg/torture/transpose-3.c
*************** d85610312206caa729ac7ee485b19a6b  gcc/te
*** 45510,45517 ****
  8d1595003065ecd1d4556067ec7e25cc  gcc/testsuite/gcc.dg/tree-prof/20041218-1.c
  3efe9018c42617fad26ca176fc3306fd  gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
  7fea89044d1cae3c25a1775dd049cbe7  gcc/testsuite/gcc.dg/tree-prof/bb-reorg.c
! dc328569b49093621d4f5d4b641aceb0  gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
! 02c5329d22768b6b3b66d9487f6217f0  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
  9a43319c4f03c869fc3c7320fbc78bff  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
  b45a4f5b69be7e2454186267f7bdab9b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
  cf7f678829144365c7c6e3436f2fe6c9  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c
--- 48528,48535 ----
  8d1595003065ecd1d4556067ec7e25cc  gcc/testsuite/gcc.dg/tree-prof/20041218-1.c
  3efe9018c42617fad26ca176fc3306fd  gcc/testsuite/gcc.dg/tree-prof/20050826-2.c
  7fea89044d1cae3c25a1775dd049cbe7  gcc/testsuite/gcc.dg/tree-prof/bb-reorg.c
! 476017a09a2a64a3c852ac67367e7c4b  gcc/testsuite/gcc.dg/tree-prof/cmpsf-1.c
! 0693fb7446c5b001070e35451ce72e12  gcc/testsuite/gcc.dg/tree-prof/cold_partition_label.c
  9a43319c4f03c869fc3c7320fbc78bff  gcc/testsuite/gcc.dg/tree-prof/comp-goto-1.c
  b45a4f5b69be7e2454186267f7bdab9b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1.c
  cf7f678829144365c7c6e3436f2fe6c9  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indir-call-topn-1a.c
*************** cf7f678829144365c7c6e3436f2fe6c9  gcc/te
*** 45520,45526 ****
  8a7ed79d9687fd79c9c1f831e7e7995b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
  26029d99148f25b6e5936d8536719f05  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
  af6029c2bad38cfb5326e5a120549d06  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1a.c
! 921f3397cb2f39ad1520b84a158fc597  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-2.c
  1a6a44bdec75a8550a766d6afea7e532  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-malloc.c
  85d5018bec782bddcb3e3782c0be5143  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
  2f63ba3e6af0482cfbe8138e11455f6f  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
--- 48538,48544 ----
  8a7ed79d9687fd79c9c1f831e7e7995b  gcc/testsuite/gcc.dg/tree-prof/crossmodule-indircall-1a.c
  26029d99148f25b6e5936d8536719f05  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1.c
  af6029c2bad38cfb5326e5a120549d06  gcc/testsuite/gcc.dg/tree-prof/ic-misattribution-1a.c
! aa1766806b0aae39d0f83f4e18d3fa48  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-2.c
  1a6a44bdec75a8550a766d6afea7e532  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-malloc.c
  85d5018bec782bddcb3e3782c0be5143  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof-topn.c
  2f63ba3e6af0482cfbe8138e11455f6f  gcc/testsuite/gcc.dg/tree-prof/indir-call-prof.c
*************** af6029c2bad38cfb5326e5a120549d06  gcc/te
*** 45528,45533 ****
--- 48546,48552 ----
  5db2d8c69929de2cc39824b4fc51389a  gcc/testsuite/gcc.dg/tree-prof/inliner-1.c
  2b174a32f54b644b6e346838426c6612  gcc/testsuite/gcc.dg/tree-prof/merge_block.c
  d47ca7cd7557792c189886a518a1a5dd  gcc/testsuite/gcc.dg/tree-prof/peel-1.c
+ 688e3ad6723d98b311ac0dbae88a997e  gcc/testsuite/gcc.dg/tree-prof/pr108000.c
  fa7217b4e402db46b1d64ca38eb6f212  gcc/testsuite/gcc.dg/tree-prof/pr34999.c
  108cb119dfbe8eeaec0b0f384384d090  gcc/testsuite/gcc.dg/tree-prof/pr44777.c
  8878763a813881e8960c5e8246142427  gcc/testsuite/gcc.dg/tree-prof/pr45354.c
*************** fa7217b4e402db46b1d64ca38eb6f212  gcc/te
*** 45545,45553 ****
  f0f34a48ac0b986d65958e798b48c8b5  gcc/testsuite/gcc.dg/tree-prof/pr96394.c
  1249bef1cb51c0e803cbf6327242106d  gcc/testsuite/gcc.dg/tree-prof/pr97461.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
! 96589ee0164379d36e7d3c49db984ac5  gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
! b72968fae2b61dcdac7ed3cbf3a8bcfe  gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
! e694203912312dcdd0acf040ebf8319e  gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
  e0651baf3344a3a41f63b729be3166b4  gcc/testsuite/gcc.dg/tree-prof/split-1.c
  1b60ba56b22c321a64245cc8f3874332  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
  5dff0b8dd29e1343fce33f09353889c2  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
--- 48564,48572 ----
  f0f34a48ac0b986d65958e798b48c8b5  gcc/testsuite/gcc.dg/tree-prof/pr96394.c
  1249bef1cb51c0e803cbf6327242106d  gcc/testsuite/gcc.dg/tree-prof/pr97461.c
  6326a041bce19e077fb8352676c53447  gcc/testsuite/gcc.dg/tree-prof/prof-robust-1.c
! 2e3de1203ea4c87ee53e392cc26ee752  gcc/testsuite/gcc.dg/tree-prof/section-attr-1.c
! eba5b542188993e5874e60eb093c236d  gcc/testsuite/gcc.dg/tree-prof/section-attr-2.c
! da98d4111ddd3082c1602e48cb8f924e  gcc/testsuite/gcc.dg/tree-prof/section-attr-3.c
  e0651baf3344a3a41f63b729be3166b4  gcc/testsuite/gcc.dg/tree-prof/split-1.c
  1b60ba56b22c321a64245cc8f3874332  gcc/testsuite/gcc.dg/tree-prof/stringop-1.c
  5dff0b8dd29e1343fce33f09353889c2  gcc/testsuite/gcc.dg/tree-prof/stringop-2.c
*************** d772d253a3efe703a6f81d851febfdcc  gcc/te
*** 45557,45563 ****
  a3bc2a0ab5b9121134c0c8183bdd363d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-2.c
  d4bb2fbb3f0ff1c2682f30c9bd6f533d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-3.c
  00abf1ef402b6663d2eca17cddf11f1b  gcc/testsuite/gcc.dg/tree-prof/tracer-1.c
! 479a91aeeb4744899ba2ab28f94717fe  gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
  7475ec338be2dc0236a9208d95977141  gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
  14a5277ebc22dc06798be4e7a79ee909  gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
  2c485d6763546bfa5c14ee8da0cfe215  gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
--- 48576,48582 ----
  a3bc2a0ab5b9121134c0c8183bdd363d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-2.c
  d4bb2fbb3f0ff1c2682f30c9bd6f533d  gcc/testsuite/gcc.dg/tree-prof/time-profiler-3.c
  00abf1ef402b6663d2eca17cddf11f1b  gcc/testsuite/gcc.dg/tree-prof/tracer-1.c
! 073d9e122cf5da574d2ee8dae2dc25e4  gcc/testsuite/gcc.dg/tree-prof/tree-prof.exp
  7475ec338be2dc0236a9208d95977141  gcc/testsuite/gcc.dg/tree-prof/unroll-1.c
  14a5277ebc22dc06798be4e7a79ee909  gcc/testsuite/gcc.dg/tree-prof/update-cunroll-2.c
  2c485d6763546bfa5c14ee8da0cfe215  gcc/testsuite/gcc.dg/tree-prof/update-loopch.c
*************** a07f27b9ea1908c0da3c7fec81abe378  gcc/te
*** 45605,45611 ****
  8de27e1a4e478d74dfa560f31222790c  gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
  6cec9e96cabe7cca5abfaa95f6c49859  gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c
  07e2af53a9fb560e269dc73e314bc30a  gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c
! e26488aa5c597c0183eb409c7a7ba618  gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c
  c8c7614c5b35138401427d50f1448ff4  gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
  a4bf3fed0349916d9cdd5dbb0be96539  gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c
  fc63d7799744c2981df0646d56f18c5b  gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c
--- 48624,48630 ----
  8de27e1a4e478d74dfa560f31222790c  gcc/testsuite/gcc.dg/tree-ssa/20030807-7.c
  6cec9e96cabe7cca5abfaa95f6c49859  gcc/testsuite/gcc.dg/tree-ssa/20030807-8.c
  07e2af53a9fb560e269dc73e314bc30a  gcc/testsuite/gcc.dg/tree-ssa/20030807-9.c
! ca9672781a58faa1d67e69959fbd0133  gcc/testsuite/gcc.dg/tree-ssa/20030808-1.c
  c8c7614c5b35138401427d50f1448ff4  gcc/testsuite/gcc.dg/tree-ssa/20030814-1.c
  a4bf3fed0349916d9cdd5dbb0be96539  gcc/testsuite/gcc.dg/tree-ssa/20030814-2.c
  fc63d7799744c2981df0646d56f18c5b  gcc/testsuite/gcc.dg/tree-ssa/20030814-3.c
*************** e79cd62bd574d773375b923ec037485f  gcc/te
*** 45733,45738 ****
--- 48752,48759 ----
  d7f5d8dac03d8f6fae78c4e03ccad69a  gcc/testsuite/gcc.dg/tree-ssa/alias-access-path-9.c
  05f03e56d0aa980b93ecd29184a0ce06  gcc/testsuite/gcc.dg/tree-ssa/alias_bug.c
  1c6abd3e143f916950c60b2a81dfabc6  gcc/testsuite/gcc.dg/tree-ssa/and-1.c
+ ce0af69e6d986f69bff758d75ded9d29  gcc/testsuite/gcc.dg/tree-ssa/andnegcmp-1.c
+ 544405ef759f703ebe70e92f216d8b61  gcc/testsuite/gcc.dg/tree-ssa/andnegcmp-2.c
  05defa8900f91e914561900c8614c842  gcc/testsuite/gcc.dg/tree-ssa/andnot-1.c
  a9c0c211afbb39b5f93bd46b490eb013  gcc/testsuite/gcc.dg/tree-ssa/andnot-2.c
  dfe706f0d26d930c6244daa570b86549  gcc/testsuite/gcc.dg/tree-ssa/andor-1.c
*************** e1bd4409eccc80afa812078aba4007f5  gcc/te
*** 45773,45778 ****
--- 48794,48802 ----
  1cb3b179de593b07bb216808c9edb43d  gcc/testsuite/gcc.dg/tree-ssa/bool-7.c
  67f7f27945fd8a6f00b5d020c854dbb7  gcc/testsuite/gcc.dg/tree-ssa/bool-8.c
  9eefb67e552cd1d47b1ded79984c99ab  gcc/testsuite/gcc.dg/tree-ssa/bool-9.c
+ 977c3821d057bc7435e1e736f1a29f48  gcc/testsuite/gcc.dg/tree-ssa/bool-minus-1.c
+ fdb67da438c8a0f6f02fb5406cd9bded  gcc/testsuite/gcc.dg/tree-ssa/bool-minus-2.c
+ d86f3b089d923169837c453da1b2acb1  gcc/testsuite/gcc.dg/tree-ssa/branchless-cond.c
  ed01fecf47b756a152f04241a3582230  gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-1.c
  1934645e97bb01171b718e4c4bed6c96  gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-2.c
  09801fa8130e8dd4207500ebac85229c  gcc/testsuite/gcc.dg/tree-ssa/builtin-expect-3.c
*************** b5bac817fa7c7a456a8e73848dfde207  gcc/te
*** 45864,45869 ****
--- 48888,48903 ----
  99ba8314164b834571c8f16cca8ac3fc  gcc/testsuite/gcc.dg/tree-ssa/calloc-4.c
  a4f18eca886b653efaca825607a6bfd3  gcc/testsuite/gcc.dg/tree-ssa/calloc-5.c
  6fcdc3ce00d06104607909b512da9a61  gcc/testsuite/gcc.dg/tree-ssa/cfgcleanup-1.c
+ da812dc2a63bd55a6862444747526edf  gcc/testsuite/gcc.dg/tree-ssa/cltz-complement-max.c
+ c2e528a882c38b974f5ff48fe615b523  gcc/testsuite/gcc.dg/tree-ssa/cltz-max.c
+ e4f9d2d39bc022ae5d3a7fd0e327087c  gcc/testsuite/gcc.dg/tree-ssa/clz-char.c
+ c19bdc5326921865c7002435de1da26d  gcc/testsuite/gcc.dg/tree-ssa/clz-complement-char.c
+ 41a3f7aa9e4120aa7bdc6fd848aea2a4  gcc/testsuite/gcc.dg/tree-ssa/clz-complement-int.c
+ d8c553ca76fd00c32274bc9894c346d6  gcc/testsuite/gcc.dg/tree-ssa/clz-complement-long-long.c
+ edbd9c8149ee7f7444bccf51ba92d4d3  gcc/testsuite/gcc.dg/tree-ssa/clz-complement-long.c
+ 193345bed30fceee142d74cfa0dfcd7b  gcc/testsuite/gcc.dg/tree-ssa/clz-int.c
+ a3b38bae98a3e59b214495d7876b628d  gcc/testsuite/gcc.dg/tree-ssa/clz-long-long.c
+ b81775b8e2a31310b44c81245fcf9eec  gcc/testsuite/gcc.dg/tree-ssa/clz-long.c
  33f85eb0abc0ef1a76d386a351d636de  gcc/testsuite/gcc.dg/tree-ssa/cmp-1.c
  03432e056ab2d24dc46fc6da99462435  gcc/testsuite/gcc.dg/tree-ssa/cmpdiv.c
  cb3424dc91a8b1d10dfaf36552885dcb  gcc/testsuite/gcc.dg/tree-ssa/cmpexactdiv-2.c
*************** eff8f806b1a91fc87bafb5aaff55fd32  gcc/te
*** 45898,45903 ****
--- 48932,48945 ----
  b51831242139a92b34dbcd60cebb1cd5  gcc/testsuite/gcc.dg/tree-ssa/cswtch-4.c
  480e4d735335d00028f58f451947cfe1  gcc/testsuite/gcc.dg/tree-ssa/cswtch-5.c
  59e69728c798843be3e7e01a41019422  gcc/testsuite/gcc.dg/tree-ssa/cswtch.c
+ 3a98d5ff303f51c628fb855f94b30645  gcc/testsuite/gcc.dg/tree-ssa/ctz-char.c
+ 2693b3a5d1d97d4cb3f14fea48ab348f  gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-char.c
+ 8c15d450f70c55e1df99047b1f5ebadd  gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-int.c
+ 1562a40decbf6829917394385b2e15c7  gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long-long.c
+ 9352768f3425f32a544c025e45842abf  gcc/testsuite/gcc.dg/tree-ssa/ctz-complement-long.c
+ 9b1b0e048c8f97b78d9a81a7d35ff0cd  gcc/testsuite/gcc.dg/tree-ssa/ctz-int.c
+ bc15b035f75616d49ae3217feb655970  gcc/testsuite/gcc.dg/tree-ssa/ctz-long-long.c
+ 0b0b6aee09e8f5c99b5dd453262a9560  gcc/testsuite/gcc.dg/tree-ssa/ctz-long.c
  00a5789f4787f29247de180d1f75c125  gcc/testsuite/gcc.dg/tree-ssa/cunroll-1.c
  32eb8903d0c34fb7ebbfdf653428cab1  gcc/testsuite/gcc.dg/tree-ssa/cunroll-10.c
  5e78a0f7c81199d9572e9eb72b2b9b6c  gcc/testsuite/gcc.dg/tree-ssa/cunroll-11.c
*************** c153f32fa106a459a7fa71c9649155c3  gcc/te
*** 45918,45924 ****
  d9df64c73cfb44c982ea8777bc83598c  gcc/testsuite/gcc.dg/tree-ssa/divide-4.c
  a2e7a9267052ac4ae19d933a4fe39c12  gcc/testsuite/gcc.dg/tree-ssa/divide-5.c
  5c71f313af73633da474793408a37470  gcc/testsuite/gcc.dg/tree-ssa/divide-6.c
! 01e4cf277c4038b1d496dbff7343ceaf  gcc/testsuite/gcc.dg/tree-ssa/divide-7.c
  5ff4e3bb013af087df7774637a5a7f32  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
  0a7ff4f8ff2cbc2ad6ac233489b11964  gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
  5d82d65865d66cefacac9df984f79919  gcc/testsuite/gcc.dg/tree-ssa/dump-2.c
--- 48960,48966 ----
  d9df64c73cfb44c982ea8777bc83598c  gcc/testsuite/gcc.dg/tree-ssa/divide-4.c
  a2e7a9267052ac4ae19d933a4fe39c12  gcc/testsuite/gcc.dg/tree-ssa/divide-5.c
  5c71f313af73633da474793408a37470  gcc/testsuite/gcc.dg/tree-ssa/divide-6.c
! 77e49fec8819a28745200ccf32657ae6  gcc/testsuite/gcc.dg/tree-ssa/divide-7.c
  5ff4e3bb013af087df7774637a5a7f32  gcc/testsuite/gcc.dg/tree-ssa/dse-points-to.c
  0a7ff4f8ff2cbc2ad6ac233489b11964  gcc/testsuite/gcc.dg/tree-ssa/dump-1.c
  5d82d65865d66cefacac9df984f79919  gcc/testsuite/gcc.dg/tree-ssa/dump-2.c
*************** a2e7a9267052ac4ae19d933a4fe39c12  gcc/te
*** 45926,45935 ****
  f4597d2c70ad59ab81400cddd726d275  gcc/testsuite/gcc.dg/tree-ssa/dump-4.c
  3ff94f9450f7842e2e2ae65a53df11c8  gcc/testsuite/gcc.dg/tree-ssa/dump-5.c
  b41ca1665ed6388e916086ad17eef717  gcc/testsuite/gcc.dg/tree-ssa/dump-6.c
! b6661366cb8569822f6ffb346d8c9c7f  gcc/testsuite/gcc.dg/tree-ssa/evrp-ignore.c
  6dc99348cdd056f4be8776745f0eba7a  gcc/testsuite/gcc.dg/tree-ssa/evrp-trans.c
  941457da855f0081ed2295b1a14dbcc4  gcc/testsuite/gcc.dg/tree-ssa/evrp-trans2.c
  329281a919b365ab71ed91ef28202305  gcc/testsuite/gcc.dg/tree-ssa/evrp1.c
  27ac2ccca1316b69757f2c9d71f85f56  gcc/testsuite/gcc.dg/tree-ssa/evrp11.c
  3a97a9e35e227264546d100a03b93ca6  gcc/testsuite/gcc.dg/tree-ssa/evrp12.c
  7a804e5df582c42d9dc57ca0ad528f5a  gcc/testsuite/gcc.dg/tree-ssa/evrp13.c
--- 48968,48978 ----
  f4597d2c70ad59ab81400cddd726d275  gcc/testsuite/gcc.dg/tree-ssa/dump-4.c
  3ff94f9450f7842e2e2ae65a53df11c8  gcc/testsuite/gcc.dg/tree-ssa/dump-5.c
  b41ca1665ed6388e916086ad17eef717  gcc/testsuite/gcc.dg/tree-ssa/dump-6.c
! b093f37312e163e366fad183f508f659  gcc/testsuite/gcc.dg/tree-ssa/evrp-ignore.c
  6dc99348cdd056f4be8776745f0eba7a  gcc/testsuite/gcc.dg/tree-ssa/evrp-trans.c
  941457da855f0081ed2295b1a14dbcc4  gcc/testsuite/gcc.dg/tree-ssa/evrp-trans2.c
  329281a919b365ab71ed91ef28202305  gcc/testsuite/gcc.dg/tree-ssa/evrp1.c
+ 4e7b9519daa6a5e1f96160da92af99b0  gcc/testsuite/gcc.dg/tree-ssa/evrp10.c
  27ac2ccca1316b69757f2c9d71f85f56  gcc/testsuite/gcc.dg/tree-ssa/evrp11.c
  3a97a9e35e227264546d100a03b93ca6  gcc/testsuite/gcc.dg/tree-ssa/evrp12.c
  7a804e5df582c42d9dc57ca0ad528f5a  gcc/testsuite/gcc.dg/tree-ssa/evrp13.c
*************** defaf318e06f609663fceb3a057d74cb  gcc/te
*** 45939,45945 ****
  477348534a1016813cc59733f6348e95  gcc/testsuite/gcc.dg/tree-ssa/evrp22.c
  84ac955a816090865d6a53c9fd6a9d18  gcc/testsuite/gcc.dg/tree-ssa/evrp3.c
  5328bbb800f5f302e3e3d17f3f8c256f  gcc/testsuite/gcc.dg/tree-ssa/evrp30.c
! 77b8f936793dfbfd94a2af89ece64029  gcc/testsuite/gcc.dg/tree-ssa/evrp4.c
  d31aba1cffe264ab5c504eb3c2466555  gcc/testsuite/gcc.dg/tree-ssa/evrp6.c
  220974a462638cc10a01465b1d592ac9  gcc/testsuite/gcc.dg/tree-ssa/evrp7.c
  b96ec27bf62c7cc9ec3e981db0fe5ba1  gcc/testsuite/gcc.dg/tree-ssa/evrp8.c
--- 48982,48988 ----
  477348534a1016813cc59733f6348e95  gcc/testsuite/gcc.dg/tree-ssa/evrp22.c
  84ac955a816090865d6a53c9fd6a9d18  gcc/testsuite/gcc.dg/tree-ssa/evrp3.c
  5328bbb800f5f302e3e3d17f3f8c256f  gcc/testsuite/gcc.dg/tree-ssa/evrp30.c
! b77a4fe96fe03c3ef4300ba716a48d4e  gcc/testsuite/gcc.dg/tree-ssa/evrp4.c
  d31aba1cffe264ab5c504eb3c2466555  gcc/testsuite/gcc.dg/tree-ssa/evrp6.c
  220974a462638cc10a01465b1d592ac9  gcc/testsuite/gcc.dg/tree-ssa/evrp7.c
  b96ec27bf62c7cc9ec3e981db0fe5ba1  gcc/testsuite/gcc.dg/tree-ssa/evrp8.c
*************** f235a066c1064d4e7f0dbd1cfe1d6416  gcc/te
*** 45968,45974 ****
  2e984af97cdbfd08a974fbebf05cc01b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-16.c
  806ef336b24a45d5e40c11b63cbd0a8b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-17.c
  3c1bc66bd7546c05948f02688fd1cfc8  gcc/testsuite/gcc.dg/tree-ssa/forwprop-18.c
! c696bede814e92f998550e4f15862437  gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c
  70b2f8007a81a149a4cf04facd7e6e95  gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
  810a8bcde3b5726f9dba2ed1edbc37aa  gcc/testsuite/gcc.dg/tree-ssa/forwprop-20.c
  22b8516b91d54afdf37b652e12f9a922  gcc/testsuite/gcc.dg/tree-ssa/forwprop-21.c
--- 49011,49017 ----
  2e984af97cdbfd08a974fbebf05cc01b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-16.c
  806ef336b24a45d5e40c11b63cbd0a8b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-17.c
  3c1bc66bd7546c05948f02688fd1cfc8  gcc/testsuite/gcc.dg/tree-ssa/forwprop-18.c
! a930baef7589695e3e3de90cd756f5a3  gcc/testsuite/gcc.dg/tree-ssa/forwprop-19.c
  70b2f8007a81a149a4cf04facd7e6e95  gcc/testsuite/gcc.dg/tree-ssa/forwprop-2.c
  810a8bcde3b5726f9dba2ed1edbc37aa  gcc/testsuite/gcc.dg/tree-ssa/forwprop-20.c
  22b8516b91d54afdf37b652e12f9a922  gcc/testsuite/gcc.dg/tree-ssa/forwprop-21.c
*************** f538956198f8cfd8efabf61fdedcf966  gcc/te
*** 45979,45985 ****
  7ebd17dc0f032a72f40c0d2ab9180999  gcc/testsuite/gcc.dg/tree-ssa/forwprop-27.c
  875ed5a0be1bd431aab4e2f4b09f63ae  gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
  cdde25415329017e4f06612e1a50c87c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-29.c
! 7360b0977e5beb59efbac191a984c372  gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c
  a2f3f36dd4a0c63859fad47e5d64e2f6  gcc/testsuite/gcc.dg/tree-ssa/forwprop-30.c
  2031aa845b341e47554f528e4a8311a7  gcc/testsuite/gcc.dg/tree-ssa/forwprop-31.c
  7d391e34842fa812d33d401d09446978  gcc/testsuite/gcc.dg/tree-ssa/forwprop-32.c
--- 49022,49028 ----
  7ebd17dc0f032a72f40c0d2ab9180999  gcc/testsuite/gcc.dg/tree-ssa/forwprop-27.c
  875ed5a0be1bd431aab4e2f4b09f63ae  gcc/testsuite/gcc.dg/tree-ssa/forwprop-28.c
  cdde25415329017e4f06612e1a50c87c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-29.c
! 2b0cab82b62d75f08d6104927e441690  gcc/testsuite/gcc.dg/tree-ssa/forwprop-3.c
  a2f3f36dd4a0c63859fad47e5d64e2f6  gcc/testsuite/gcc.dg/tree-ssa/forwprop-30.c
  2031aa845b341e47554f528e4a8311a7  gcc/testsuite/gcc.dg/tree-ssa/forwprop-31.c
  7d391e34842fa812d33d401d09446978  gcc/testsuite/gcc.dg/tree-ssa/forwprop-32.c
*************** cde9d104bd184f9fe53748afa894a131  gcc/te
*** 45989,45994 ****
--- 49032,49038 ----
  db7fb90d90011b907bfb30cceb6f1c9e  gcc/testsuite/gcc.dg/tree-ssa/forwprop-36.c
  c4d85f1a0ac2c091e026cf0d052e2f21  gcc/testsuite/gcc.dg/tree-ssa/forwprop-37.c
  fc8efeaf2ed7c9bba5d4f1717e7e356b  gcc/testsuite/gcc.dg/tree-ssa/forwprop-38.c
+ 260a7d066794f7642a568e403fb5e5d4  gcc/testsuite/gcc.dg/tree-ssa/forwprop-39.c
  cb909e7812f73f90414b63042c95d199  gcc/testsuite/gcc.dg/tree-ssa/forwprop-4.c
  d56422e63543fcf4bf4b78d825c534da  gcc/testsuite/gcc.dg/tree-ssa/forwprop-5.c
  0f6dc2b3b3469af9cd27d5b5cd97353c  gcc/testsuite/gcc.dg/tree-ssa/forwprop-6.c
*************** a9096c4b5b756bdc9dcc196398730d73  gcc/te
*** 45996,46013 ****
  03b3892ce65f3264531de5b303cbe30e  gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
  2f204af513925825367059c8c7904e98  gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
  c5da678cf578c57faa40129378929cf4  gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
! 37c9c94a0aa7732095325168e35b6241  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c
! 8847b784d4afa960614f3abe85f69a6f  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c
  c4778a5d167ea622bf99df287c4bd701  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c
  c177f823491b23ed671dd72cae6bdd38  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c
! cff764a2ebafb6289be05026a4fa3f95  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
! 1712dcd4bc0231a36d0086b106369e57  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
! 5deebb3f6093725bffcc928ef4e316b1  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
! ae32469031917ca7f4815b7154b5bc06  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
! 7dedd5a47e1055812df9473fe2137316  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
  88394f5bf5b05af6dcff8c92c3277984  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
  bbf280cd31c7741b8c59afad86a4b316  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c
  55213dbff5b0135f3e9d2e4a1f57ef2f  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c
  52e12d7fff0dbdfb62c8588a9c8b302a  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c
  fbc46d731b28682d463972d7b59d20e7  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
--- 49040,49059 ----
  03b3892ce65f3264531de5b303cbe30e  gcc/testsuite/gcc.dg/tree-ssa/forwprop-8.c
  2f204af513925825367059c8c7904e98  gcc/testsuite/gcc.dg/tree-ssa/forwprop-9.c
  c5da678cf578c57faa40129378929cf4  gcc/testsuite/gcc.dg/tree-ssa/fre-vce-1.c
! a0fbf3c748cab32ce67837bafd594ee5  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11.c
! 92c19b6c66be5177d45c3de598c5ce47  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11a.c
  c4778a5d167ea622bf99df287c4bd701  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11b.c
  c177f823491b23ed671dd72cae6bdd38  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-11c.c
! f339f3a1e5bd9548ccfe5b18c2c7c7e5  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-2.c
! 407f5e3525abdace7d6ff525b35e9b3b  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-25.c
! a9035f101274c289aedd6685e9ed30ec  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-26.c
! d637cf73f6c38b75ddfb9687a20f1ec6  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-28.c
! e04b32c6114139e6a8e522e17e1b449b  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-32.c
  c700544c3e68a401546cefbdad359728  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-33.c
+ 955e41ee303f67ec226ec41283fd05af  gcc/testsuite/gcc.dg/tree-ssa/gen-vect-34.c
  88394f5bf5b05af6dcff8c92c3277984  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-1.c
  bbf280cd31c7741b8c59afad86a4b316  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-10.c
+ 4e1b56c57651571441a396e85893c496  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-11.c
  55213dbff5b0135f3e9d2e4a1f57ef2f  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-2.c
  52e12d7fff0dbdfb62c8588a9c8b302a  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-3.c
  fbc46d731b28682d463972d7b59d20e7  gcc/testsuite/gcc.dg/tree-ssa/if-to-switch-4.c
*************** e7f1d9aa62f4ef95b6264aa71e4a8684  gcc/te
*** 46111,46117 ****
  63cd83289c799449a4dec5c11b582682  gcc/testsuite/gcc.dg/tree-ssa/ldist-21.c
  cc6a08eac75910a06313eb596249c7bb  gcc/testsuite/gcc.dg/tree-ssa/ldist-22.c
  a48ddb68441e9f0157bc1a253aae6dda  gcc/testsuite/gcc.dg/tree-ssa/ldist-23.c
! e1f45dd33f57e8bb069dad0924ba8481  gcc/testsuite/gcc.dg/tree-ssa/ldist-24.c
  93d48c06a84cf00215cdd40f4774a370  gcc/testsuite/gcc.dg/tree-ssa/ldist-25.c
  dc7b10c2a8490347fbb12884007e157d  gcc/testsuite/gcc.dg/tree-ssa/ldist-26.c
  0c9e3381a31e26b8c588f12eb8a4310e  gcc/testsuite/gcc.dg/tree-ssa/ldist-27.c
--- 49157,49163 ----
  63cd83289c799449a4dec5c11b582682  gcc/testsuite/gcc.dg/tree-ssa/ldist-21.c
  cc6a08eac75910a06313eb596249c7bb  gcc/testsuite/gcc.dg/tree-ssa/ldist-22.c
  a48ddb68441e9f0157bc1a253aae6dda  gcc/testsuite/gcc.dg/tree-ssa/ldist-23.c
! d2cdbe3bd6c83dbed0c559a4e0f23f17  gcc/testsuite/gcc.dg/tree-ssa/ldist-24.c
  93d48c06a84cf00215cdd40f4774a370  gcc/testsuite/gcc.dg/tree-ssa/ldist-25.c
  dc7b10c2a8490347fbb12884007e157d  gcc/testsuite/gcc.dg/tree-ssa/ldist-26.c
  0c9e3381a31e26b8c588f12eb8a4310e  gcc/testsuite/gcc.dg/tree-ssa/ldist-27.c
*************** e3f1a326d63f28f3be9a8544a60505aa  gcc/te
*** 46124,46132 ****
  9c82573f2711f01761f4bb230b3191e5  gcc/testsuite/gcc.dg/tree-ssa/ldist-33.c
  d5c8c7bee8816f98aede8ab1448f6689  gcc/testsuite/gcc.dg/tree-ssa/ldist-34.c
  ffd9d902fd127eef04e8bc7818f04da7  gcc/testsuite/gcc.dg/tree-ssa/ldist-35.c
! e5c7ff63681748294f115b0cd63bfb05  gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c
  39ce1d1e6f9138f3e7496314be545457  gcc/testsuite/gcc.dg/tree-ssa/ldist-37.c
  ffb4adebfee1a469b5b970ceca2b62d1  gcc/testsuite/gcc.dg/tree-ssa/ldist-38.c
  7bdc0c7833fb91fb8d9e59f13d759a73  gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
  3661b05c66bd70675e28123e086b5032  gcc/testsuite/gcc.dg/tree-ssa/ldist-5.c
  1a4004933a12168c16067d1e775147e2  gcc/testsuite/gcc.dg/tree-ssa/ldist-6.c
--- 49170,49179 ----
  9c82573f2711f01761f4bb230b3191e5  gcc/testsuite/gcc.dg/tree-ssa/ldist-33.c
  d5c8c7bee8816f98aede8ab1448f6689  gcc/testsuite/gcc.dg/tree-ssa/ldist-34.c
  ffd9d902fd127eef04e8bc7818f04da7  gcc/testsuite/gcc.dg/tree-ssa/ldist-35.c
! 426393b2d6b717d0b46325d18eefaea1  gcc/testsuite/gcc.dg/tree-ssa/ldist-36.c
  39ce1d1e6f9138f3e7496314be545457  gcc/testsuite/gcc.dg/tree-ssa/ldist-37.c
  ffb4adebfee1a469b5b970ceca2b62d1  gcc/testsuite/gcc.dg/tree-ssa/ldist-38.c
+ a2002bfe18a372ac61959bfbd5ca72c9  gcc/testsuite/gcc.dg/tree-ssa/ldist-39.c
  7bdc0c7833fb91fb8d9e59f13d759a73  gcc/testsuite/gcc.dg/tree-ssa/ldist-4.c
  3661b05c66bd70675e28123e086b5032  gcc/testsuite/gcc.dg/tree-ssa/ldist-5.c
  1a4004933a12168c16067d1e775147e2  gcc/testsuite/gcc.dg/tree-ssa/ldist-6.c
*************** f71fff56070660e50e71b957f17bb866  gcc/te
*** 46202,46208 ****
  7568ea74f69d0e8207b25fa5c534390f  gcc/testsuite/gcc.dg/tree-ssa/loop-41.c
  888818fbf6c97e2ef324d3dda9432e07  gcc/testsuite/gcc.dg/tree-ssa/loop-42.c
  3e8f631045b52e4f9b029dd63cdeff9d  gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
! e6e929d4294452397b194b9b8fece765  gcc/testsuite/gcc.dg/tree-ssa/loop-6.c
  6dc6bd9d11b049ec2a81a9378dbd44a3  gcc/testsuite/gcc.dg/tree-ssa/loop-7.c
  fbe5838205bf556202a63b4267f7ac13  gcc/testsuite/gcc.dg/tree-ssa/loop-8.c
  ca60d15c705ab307b185849a6d684577  gcc/testsuite/gcc.dg/tree-ssa/loop-9.c
--- 49249,49255 ----
  7568ea74f69d0e8207b25fa5c534390f  gcc/testsuite/gcc.dg/tree-ssa/loop-41.c
  888818fbf6c97e2ef324d3dda9432e07  gcc/testsuite/gcc.dg/tree-ssa/loop-42.c
  3e8f631045b52e4f9b029dd63cdeff9d  gcc/testsuite/gcc.dg/tree-ssa/loop-5.c
! 075bc230285738adf497107231daea37  gcc/testsuite/gcc.dg/tree-ssa/loop-6.c
  6dc6bd9d11b049ec2a81a9378dbd44a3  gcc/testsuite/gcc.dg/tree-ssa/loop-7.c
  fbe5838205bf556202a63b4267f7ac13  gcc/testsuite/gcc.dg/tree-ssa/loop-8.c
  ca60d15c705ab307b185849a6d684577  gcc/testsuite/gcc.dg/tree-ssa/loop-9.c
*************** f2fb3151add498ea76d57eb5397270d9  gcc/te
*** 46232,46240 ****
  3b17eb93fceafc79398ec40382cc2fdb  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-9.c
  0b0f06ef0d088201a656eef58febfabf  gcc/testsuite/gcc.dg/tree-ssa/loop-niter-1.c
  3585c145cba008fa15dffe90270f4cc5  gcc/testsuite/gcc.dg/tree-ssa/loop-niter-2.c
! 7e3f742153a1a615543970606e835c4b  gcc/testsuite/gcc.dg/tree-ssa/loopclosedphi.c
  03f2e136e4fd829b170e29613889a81e  gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c
  21959e600b3e318fb6e964900d48abc5  gcc/testsuite/gcc.dg/tree-ssa/minmax-2.c
  fa665ccc5c37f6639ff420a922266cc1  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend-2.c
  eab9b8fbca526d3026277ce8a7c3179f  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend.c
  dd531f5928d5579a42c6d936314756c1  gcc/testsuite/gcc.dg/tree-ssa/minus-ovf.c
--- 49279,49301 ----
  3b17eb93fceafc79398ec40382cc2fdb  gcc/testsuite/gcc.dg/tree-ssa/loop-interchange-9.c
  0b0f06ef0d088201a656eef58febfabf  gcc/testsuite/gcc.dg/tree-ssa/loop-niter-1.c
  3585c145cba008fa15dffe90270f4cc5  gcc/testsuite/gcc.dg/tree-ssa/loop-niter-2.c
! a83f3f323f8f4ab72419c34630657fda  gcc/testsuite/gcc.dg/tree-ssa/loopclosedphi.c
  03f2e136e4fd829b170e29613889a81e  gcc/testsuite/gcc.dg/tree-ssa/minmax-1.c
+ 5f9fd3ebbf7146f303e891283c25eaf1  gcc/testsuite/gcc.dg/tree-ssa/minmax-10.c
+ 47c87cd5f5643eb9522343b37cbf9afd  gcc/testsuite/gcc.dg/tree-ssa/minmax-11.c
+ 5ef0140a508e96e35b40ba98840cf428  gcc/testsuite/gcc.dg/tree-ssa/minmax-12.c
+ 50001d0643c91a8ce803c90b31c9f2ad  gcc/testsuite/gcc.dg/tree-ssa/minmax-13.c
+ 7b7a8c9883da8c818f8747dd78b0a8cb  gcc/testsuite/gcc.dg/tree-ssa/minmax-14.c
+ 0d22930804e950147349eaad66b3eee9  gcc/testsuite/gcc.dg/tree-ssa/minmax-15.c
+ ea319c1ff516eeeb4546121f25214fc2  gcc/testsuite/gcc.dg/tree-ssa/minmax-16.c
  21959e600b3e318fb6e964900d48abc5  gcc/testsuite/gcc.dg/tree-ssa/minmax-2.c
+ cabdddbd82b9ba47b42ba8ef74b296c7  gcc/testsuite/gcc.dg/tree-ssa/minmax-3.c
+ ea1937c79f8939d4475860f08a6403bb  gcc/testsuite/gcc.dg/tree-ssa/minmax-4.c
+ 77ed912ede1a2bab711125703d70fecc  gcc/testsuite/gcc.dg/tree-ssa/minmax-5.c
+ 64d1ac96d63f1275356a5f31398dce9d  gcc/testsuite/gcc.dg/tree-ssa/minmax-6.c
+ 8c3961b152f7a4c237cf3af53a73d146  gcc/testsuite/gcc.dg/tree-ssa/minmax-7.c
+ 6347d7fbd0234ce23fafb40caa72bbe6  gcc/testsuite/gcc.dg/tree-ssa/minmax-8.c
+ 50c27bf3f0fece6523414faee93a4c74  gcc/testsuite/gcc.dg/tree-ssa/minmax-9.c
  fa665ccc5c37f6639ff420a922266cc1  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend-2.c
  eab9b8fbca526d3026277ce8a7c3179f  gcc/testsuite/gcc.dg/tree-ssa/minmax-loopend.c
  dd531f5928d5579a42c6d936314756c1  gcc/testsuite/gcc.dg/tree-ssa/minus-ovf.c
*************** fd326f4e5a35e41b78cb70f85b0fff1d  gcc/te
*** 46259,46268 ****
--- 49320,49332 ----
  6b82bd78f57bf0a626ba00a1871e56d6  gcc/testsuite/gcc.dg/tree-ssa/modref-dse-4.c
  3c0de53016b809ca5a6648715861af8c  gcc/testsuite/gcc.dg/tree-ssa/modref-dse-5.c
  2f41932c23afcb14f9d5b5feeeb14e2b  gcc/testsuite/gcc.dg/tree-ssa/modref-dse-6.c
+ 6a8548ccf241102bfc94210e66f995f1  gcc/testsuite/gcc.dg/tree-ssa/modref-dse-7.c
  86b3b545b7d95e5a9edad0a6ab56705b  gcc/testsuite/gcc.dg/tree-ssa/mulcmp-1.c
  9d609bd79769ece6157bc34fbbb0371f  gcc/testsuite/gcc.dg/tree-ssa/muldiv-1.c
  9a861088652f3a7c7b3117c9a108131a  gcc/testsuite/gcc.dg/tree-ssa/muldiv-2.c
  0f176d9e4db4a1694abf102a0c8ac46f  gcc/testsuite/gcc.dg/tree-ssa/mult-abs-2.c
+ de18b9aafeb5b7a70c2415d80406308c  gcc/testsuite/gcc.dg/tree-ssa/multcmp-1.c
+ d247eecb7ac955c043ad5e586c7470e1  gcc/testsuite/gcc.dg/tree-ssa/multcmp-2.c
  2d24280dac358b9f66c4931b4f05b337  gcc/testsuite/gcc.dg/tree-ssa/negate.c
  0e4f2cc9014da9897cf2e06c37a2172d  gcc/testsuite/gcc.dg/tree-ssa/negminus.c
  38dca550c71758b1703de32c9e8a47c5  gcc/testsuite/gcc.dg/tree-ssa/negneg-1.c
*************** dec7e9a594d55bb6427abfb7ee0ae7b3  gcc/te
*** 46307,46322 ****
  44b84455e4e32ef45ab0091bcb29e029  gcc/testsuite/gcc.dg/tree-ssa/phi_on_compare-2.c
  f26d2e01babf45dbaeac6dc0140557e7  gcc/testsuite/gcc.dg/tree-ssa/phi_on_compare-3.c
  e6b4d4e12abe0ec0eba00659cb2c72b1  gcc/testsuite/gcc.dg/tree-ssa/phi_on_compare-4.c
! db4f86a4f8ff0fc9653954f4e21c1f3f  gcc/testsuite/gcc.dg/tree-ssa/popcount.c
! 1e2db2ea55f8eb96805a4dc045b119c5  gcc/testsuite/gcc.dg/tree-ssa/popcount2.c
! 39af726ca8012f85160b6180dd60017f  gcc/testsuite/gcc.dg/tree-ssa/popcount3.c
  2fb4e6c2bc49e5d7ef90a8c649a0e14d  gcc/testsuite/gcc.dg/tree-ssa/popcount4.c
  f62ac8c6a6ff1517485b4579f8a00f33  gcc/testsuite/gcc.dg/tree-ssa/popcount4l.c
  4937840294c08122588eed29b4080e7e  gcc/testsuite/gcc.dg/tree-ssa/popcount4ll.c
  4c5f6856cd0cacec06d4f42d7dc705a3  gcc/testsuite/gcc.dg/tree-ssa/popcount5.c
  37c95d5ee8501532edd39636e62b1144  gcc/testsuite/gcc.dg/tree-ssa/popcount5l.c
  ecd327087ec5129f4762a83c6c58bb42  gcc/testsuite/gcc.dg/tree-ssa/popcount5ll.c
! 644a9ec23e3054a4b9900bbd8c6a2ce5  gcc/testsuite/gcc.dg/tree-ssa/pr100359.c
  6804f4f388ad8b533f34eb3de20dac4d  gcc/testsuite/gcc.dg/tree-ssa/pr100794.c
  d5dace55f72aa8ccb51636dff79f5ccc  gcc/testsuite/gcc.dg/tree-ssa/pr101824.c
  c3925f4a4c97c2d1ae9800c4011550d8  gcc/testsuite/gcc.dg/tree-ssa/pr101941-1.c
--- 49371,49389 ----
  44b84455e4e32ef45ab0091bcb29e029  gcc/testsuite/gcc.dg/tree-ssa/phi_on_compare-2.c
  f26d2e01babf45dbaeac6dc0140557e7  gcc/testsuite/gcc.dg/tree-ssa/phi_on_compare-3.c
  e6b4d4e12abe0ec0eba00659cb2c72b1  gcc/testsuite/gcc.dg/tree-ssa/phi_on_compare-4.c
! 9e81c2841a4d91e2549d250cfa33f24c  gcc/testsuite/gcc.dg/tree-ssa/popcount-max.c
! c7d4b48e1b7fabc4a3165b3279573966  gcc/testsuite/gcc.dg/tree-ssa/popcount.c
! 698a1a5b66251de92ebeb4f655fd8be8  gcc/testsuite/gcc.dg/tree-ssa/popcount2.c
! 33c3ca116bd47b630a440a6f2c7764db  gcc/testsuite/gcc.dg/tree-ssa/popcount3.c
  2fb4e6c2bc49e5d7ef90a8c649a0e14d  gcc/testsuite/gcc.dg/tree-ssa/popcount4.c
  f62ac8c6a6ff1517485b4579f8a00f33  gcc/testsuite/gcc.dg/tree-ssa/popcount4l.c
  4937840294c08122588eed29b4080e7e  gcc/testsuite/gcc.dg/tree-ssa/popcount4ll.c
  4c5f6856cd0cacec06d4f42d7dc705a3  gcc/testsuite/gcc.dg/tree-ssa/popcount5.c
  37c95d5ee8501532edd39636e62b1144  gcc/testsuite/gcc.dg/tree-ssa/popcount5l.c
  ecd327087ec5129f4762a83c6c58bb42  gcc/testsuite/gcc.dg/tree-ssa/popcount5ll.c
! 4256e7f2af59a698439adecd1790d9ca  gcc/testsuite/gcc.dg/tree-ssa/popcount6.c
! b2197879c497a963508f367b026baebe  gcc/testsuite/gcc.dg/tree-ssa/popcount6b.c
! 0341d659d040511e18c036b7dd477420  gcc/testsuite/gcc.dg/tree-ssa/pr100359.c
  6804f4f388ad8b533f34eb3de20dac4d  gcc/testsuite/gcc.dg/tree-ssa/pr100794.c
  d5dace55f72aa8ccb51636dff79f5ccc  gcc/testsuite/gcc.dg/tree-ssa/pr101824.c
  c3925f4a4c97c2d1ae9800c4011550d8  gcc/testsuite/gcc.dg/tree-ssa/pr101941-1.c
*************** ba5fbae8412c94dcffa215cb6cff04c0  gcc/te
*** 46338,46344 ****
--- 49405,49442 ----
  b09ca12340e534366a044672763446bf  gcc/testsuite/gcc.dg/tree-ssa/pr104639-1.c
  c502141393b8f053f7454ee254898a9a  gcc/testsuite/gcc.dg/tree-ssa/pr104639-2.c
  83ed534d9becd608f3b5229e52d305d0  gcc/testsuite/gcc.dg/tree-ssa/pr104645.c
+ e47699ee9cf13d5804649766bc0537e9  gcc/testsuite/gcc.dg/tree-ssa/pr105777.c
  660324e032912162df8b4570de2731f5  gcc/testsuite/gcc.dg/tree-ssa/pr105860.c
+ 51aefebe5a7150d43227f1c8527c0fbb  gcc/testsuite/gcc.dg/tree-ssa/pr105983.c
+ b891127ad22d0d7cb09e69f8f27f96ac  gcc/testsuite/gcc.dg/tree-ssa/pr106126.c
+ e36665ab393c345c7737cbc50b135180  gcc/testsuite/gcc.dg/tree-ssa/pr106819.c
+ d505cdb5188b39f3577224e86bc9b394  gcc/testsuite/gcc.dg/tree-ssa/pr106867.c
+ 2039a8bc432137e3b821b7f1ea3987f1  gcc/testsuite/gcc.dg/tree-ssa/pr106967.c
+ d9497cab1ff90504a77521039499946d  gcc/testsuite/gcc.dg/tree-ssa/pr106970.c
+ 3617e4911386a9f579e684140bedcd67  gcc/testsuite/gcc.dg/tree-ssa/pr107009.c
+ d4179bd30d4ee2dec6b88eb328b1a6d9  gcc/testsuite/gcc.dg/tree-ssa/pr107052.c
+ b7cd3b55b88b19a9bd8451e7659e14d1  gcc/testsuite/gcc.dg/tree-ssa/pr107130.c
+ e43a40ad32978f21f63f34a0544b7b49  gcc/testsuite/gcc.dg/tree-ssa/pr107170.c
+ deaa5c976f0b0bca0ce9ddc252dabb33  gcc/testsuite/gcc.dg/tree-ssa/pr107195-1.c
+ 6d514b6f0c0571059a7257eb4daa024a  gcc/testsuite/gcc.dg/tree-ssa/pr107195-2.c
+ f5c9ebc28f01d76391eb199e75003e95  gcc/testsuite/gcc.dg/tree-ssa/pr107195-3.c
+ e01fcccbf920fc0216ea12c03da9332a  gcc/testsuite/gcc.dg/tree-ssa/pr107273-1.c
+ e76c6d3fbc2d559417cd356d9c8576a7  gcc/testsuite/gcc.dg/tree-ssa/pr107273-2.c
+ 2384b4f9a35179692bb6c2ae7b344708  gcc/testsuite/gcc.dg/tree-ssa/pr107293.c
+ 0b2312ef2558ac9fd9aad91d8afc7009  gcc/testsuite/gcc.dg/tree-ssa/pr107323.c
+ 8f17bdac33dc4b6f53b1d8e3f2b961b1  gcc/testsuite/gcc.dg/tree-ssa/pr107355.c
+ a6826351b30654b83b4d6d89410713a2  gcc/testsuite/gcc.dg/tree-ssa/pr107394.c
+ 1e7e26bf4ab680f9f06509ebe4cb4776  gcc/testsuite/gcc.dg/tree-ssa/pr107490.c
+ 5c2b311b0ce459f37b094f8fe17b35c1  gcc/testsuite/gcc.dg/tree-ssa/pr107541.c
+ c783e038e48be744df1050cd1e482b85  gcc/testsuite/gcc.dg/tree-ssa/pr107699.c
+ 6fe45df99f875124cf368b5a0f6e9bab  gcc/testsuite/gcc.dg/tree-ssa/pr107732.c
+ e7f331e191d07635b3ac2b406e62617c  gcc/testsuite/gcc.dg/tree-ssa/pr107767.c
+ ba0f756770b2c8c27b5698876e3038d6  gcc/testsuite/gcc.dg/tree-ssa/pr108137.c
+ 6e9a4a3a8a16375f78591054eb13656b  gcc/testsuite/gcc.dg/tree-ssa/pr108354-1.c
+ 17457a9f12304e22150f0ed2c4732252  gcc/testsuite/gcc.dg/tree-ssa/pr108357.c
+ 486e83eb732ae374266e81bf0ad91d4c  gcc/testsuite/gcc.dg/tree-ssa/pr108684-1.c
+ 9a57b932241f72e62ecf6645de5034e9  gcc/testsuite/gcc.dg/tree-ssa/pr109031-1.c
+ 3e53d598753ed4660dbeb6be7795b42e  gcc/testsuite/gcc.dg/tree-ssa/pr109031-2.c
  78e6c5fe63f7305009c8a79840fe20dc  gcc/testsuite/gcc.dg/tree-ssa/pr13146.c
  eab19e0c04884cd782c9879cbe292109  gcc/testsuite/gcc.dg/tree-ssa/pr14341.c
  9945ed7002a5f7d4918e8ff5eb4cb647  gcc/testsuite/gcc.dg/tree-ssa/pr14490-1.c
*************** d9df7625f66b989cd9c941e4fe5b29c1  gcc/te
*** 46424,46430 ****
  e41277e04bee7df7b11d55da9b4fe987  gcc/testsuite/gcc.dg/tree-ssa/pr22591.c
  6ec855d3db6bc5e4410f28561c40c9a3  gcc/testsuite/gcc.dg/tree-ssa/pr23048.c
  eb1132cd848438e315e0b19148faaf2a  gcc/testsuite/gcc.dg/tree-ssa/pr23086.c
! ae1232f92b10b84bded6dd34a16323b4  gcc/testsuite/gcc.dg/tree-ssa/pr23109.c
  ee201c36cb0ac45de5f89a38e7ffc5f0  gcc/testsuite/gcc.dg/tree-ssa/pr23115.c
  17cf4f2be6b7c7f23ca1e880e6d2fe18  gcc/testsuite/gcc.dg/tree-ssa/pr23192.c
  1fe2b7b4b490cdf9b653867ecd2b355c  gcc/testsuite/gcc.dg/tree-ssa/pr23234.c
--- 49522,49528 ----
  e41277e04bee7df7b11d55da9b4fe987  gcc/testsuite/gcc.dg/tree-ssa/pr22591.c
  6ec855d3db6bc5e4410f28561c40c9a3  gcc/testsuite/gcc.dg/tree-ssa/pr23048.c
  eb1132cd848438e315e0b19148faaf2a  gcc/testsuite/gcc.dg/tree-ssa/pr23086.c
! 05ed52c0632c49c5c3269523fb0c9425  gcc/testsuite/gcc.dg/tree-ssa/pr23109.c
  ee201c36cb0ac45de5f89a38e7ffc5f0  gcc/testsuite/gcc.dg/tree-ssa/pr23115.c
  17cf4f2be6b7c7f23ca1e880e6d2fe18  gcc/testsuite/gcc.dg/tree-ssa/pr23192.c
  1fe2b7b4b490cdf9b653867ecd2b355c  gcc/testsuite/gcc.dg/tree-ssa/pr23234.c
*************** b306e7eebde7d3ea663a7ac1bbaf212e  gcc/te
*** 46463,46468 ****
--- 49561,49567 ----
  f8a2080b6f7b30a69659124c828d0224  gcc/testsuite/gcc.dg/tree-ssa/pr27799.c
  1678e2dfe8c03b2f65d5b5027563d1f0  gcc/testsuite/gcc.dg/tree-ssa/pr27810.c
  fc05082a4654700efb64a6850ebe2949  gcc/testsuite/gcc.dg/tree-ssa/pr28410.c
+ 9f9141fd955640b20014b74999b32076  gcc/testsuite/gcc.dg/tree-ssa/pr30314.c
  b30f3a905d9cb1c07a3b7b7325d275a2  gcc/testsuite/gcc.dg/tree-ssa/pr30375.c
  573cf597efe5e1b29a3d6c30a72feb89  gcc/testsuite/gcc.dg/tree-ssa/pr30978.c
  1abc5a684a68d03301f4fc1147b86a17  gcc/testsuite/gcc.dg/tree-ssa/pr31261.c
*************** eb3c860d5f9311432576d2c60ba8e833  gcc/te
*** 46539,46544 ****
--- 49638,49644 ----
  6eae7d338bd35ee75c95745a31735731  gcc/testsuite/gcc.dg/tree-ssa/pr54211.c
  5cfe577df2571b1475d5db616c40bf37  gcc/testsuite/gcc.dg/tree-ssa/pr54915.c
  87ba347e6d0c933e0a6a8cdb3c2f1bac  gcc/testsuite/gcc.dg/tree-ssa/pr55008.c
+ 5138a9c7520620d92b0450383907175d  gcc/testsuite/gcc.dg/tree-ssa/pr55157.c
  d64d66e96b2a81e7097abe36ef4bafbd  gcc/testsuite/gcc.dg/tree-ssa/pr55177-1.c
  c7ad6f1bea15d0129d2d4114715d38ab  gcc/testsuite/gcc.dg/tree-ssa/pr55579.c
  337de2f03bc182ae1e01fb18807fa344  gcc/testsuite/gcc.dg/tree-ssa/pr56719.c
*************** c1a1214c4f6f4e4d71a1466aa45fbc98  gcc/te
*** 46558,46566 ****
  7d548dcaea296768cf61e084e5c869fa  gcc/testsuite/gcc.dg/tree-ssa/pr61607.c
  6385de463934a70dde788fe6ba5fc47f  gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c
  feb9a853a0548af696e7d13eeb3a435d  gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c
! 174dd9ccabd7870a921d0b57e13fee9a  gcc/testsuite/gcc.dg/tree-ssa/pr61839_1.c
  b6bdc9b73d81393380cf8bb76886499a  gcc/testsuite/gcc.dg/tree-ssa/pr61839_2.c
! 22b5f250c401521ade0a1cdcbe141c75  gcc/testsuite/gcc.dg/tree-ssa/pr61839_3.c
  fdf71b131cfffb1acfa1864e8be83ea3  gcc/testsuite/gcc.dg/tree-ssa/pr61839_4.c
  2a97f529e786df2ff135adfdcea70961  gcc/testsuite/gcc.dg/tree-ssa/pr62112-1.c
  28fc1a0b84d44cad29c7e6681e432132  gcc/testsuite/gcc.dg/tree-ssa/pr62112-2.c
--- 49658,49666 ----
  7d548dcaea296768cf61e084e5c869fa  gcc/testsuite/gcc.dg/tree-ssa/pr61607.c
  6385de463934a70dde788fe6ba5fc47f  gcc/testsuite/gcc.dg/tree-ssa/pr61743-1.c
  feb9a853a0548af696e7d13eeb3a435d  gcc/testsuite/gcc.dg/tree-ssa/pr61743-2.c
! a098963116aba87c5b3e3db8404b7e72  gcc/testsuite/gcc.dg/tree-ssa/pr61839_1.c
  b6bdc9b73d81393380cf8bb76886499a  gcc/testsuite/gcc.dg/tree-ssa/pr61839_2.c
! 6b1b7f02cbf760aeffccce0289e06eb0  gcc/testsuite/gcc.dg/tree-ssa/pr61839_3.c
  fdf71b131cfffb1acfa1864e8be83ea3  gcc/testsuite/gcc.dg/tree-ssa/pr61839_4.c
  2a97f529e786df2ff135adfdcea70961  gcc/testsuite/gcc.dg/tree-ssa/pr62112-1.c
  28fc1a0b84d44cad29c7e6681e432132  gcc/testsuite/gcc.dg/tree-ssa/pr62112-2.c
*************** e6986386d8ec85afd7b821cc2f311d1c  gcc/te
*** 46573,46578 ****
--- 49673,49679 ----
  9eafc1ee5f7c68756f96254104c44110  gcc/testsuite/gcc.dg/tree-ssa/pr64910-2.c
  14d4888f6e747c3cd8522a955b553225  gcc/testsuite/gcc.dg/tree-ssa/pr65136.c
  e3a8c430fd6ca31515a7e1bbea95b6dd  gcc/testsuite/gcc.dg/tree-ssa/pr65447.c
+ 499a491da27a1a5055db7cdada8dc42b  gcc/testsuite/gcc.dg/tree-ssa/pr65855-2.c
  80ee06c1361a2efc5e45db8d97d08877  gcc/testsuite/gcc.dg/tree-ssa/pr66449.c
  9746cb857a37622734dbbf059cadd7b4  gcc/testsuite/gcc.dg/tree-ssa/pr66726-2.c
  6f286535adafcaa2bd2c8411c48b6c57  gcc/testsuite/gcc.dg/tree-ssa/pr66726-3.c
*************** a9bbab0ab31459c437e6995c2b0b2d9b  gcc/te
*** 46656,46662 ****
  4243b02667ea36b1a06988e34b324696  gcc/testsuite/gcc.dg/tree-ssa/pr78655.c
  75a749edade7cb5984ade8da56775264  gcc/testsuite/gcc.dg/tree-ssa/pr78886.c
  f5d31222c8144a8d065867ff0693dbeb  gcc/testsuite/gcc.dg/tree-ssa/pr78910.c
! b4ed2887f835573a5c157f54975f46c3  gcc/testsuite/gcc.dg/tree-ssa/pr79095.c
  6d9823ac81314cf5c126551268d6d773  gcc/testsuite/gcc.dg/tree-ssa/pr79275.c
  357d24efc439ff9cfffb519e024624f9  gcc/testsuite/gcc.dg/tree-ssa/pr79327-2.c
  c825140a1f235ddcf25a490d34456943  gcc/testsuite/gcc.dg/tree-ssa/pr79327.c
--- 49757,49763 ----
  4243b02667ea36b1a06988e34b324696  gcc/testsuite/gcc.dg/tree-ssa/pr78655.c
  75a749edade7cb5984ade8da56775264  gcc/testsuite/gcc.dg/tree-ssa/pr78886.c
  f5d31222c8144a8d065867ff0693dbeb  gcc/testsuite/gcc.dg/tree-ssa/pr78910.c
! cd37eaf3e26c8e7ec0f3fe9f69175579  gcc/testsuite/gcc.dg/tree-ssa/pr79095.c
  6d9823ac81314cf5c126551268d6d773  gcc/testsuite/gcc.dg/tree-ssa/pr79275.c
  357d24efc439ff9cfffb519e024624f9  gcc/testsuite/gcc.dg/tree-ssa/pr79327-2.c
  c825140a1f235ddcf25a490d34456943  gcc/testsuite/gcc.dg/tree-ssa/pr79327.c
*************** e69de51dce3766c5fdf511b7cae45ae2  gcc/te
*** 46715,46720 ****
--- 49816,49823 ----
  c95f9346fdf91a2af21b609136ce6e2b  gcc/testsuite/gcc.dg/tree-ssa/pr83648-2.c
  1c296504ab2e292b80b2f17f4a8bd1da  gcc/testsuite/gcc.dg/tree-ssa/pr83648.c
  893a1bc278c3ce3874bce3efe709bc89  gcc/testsuite/gcc.dg/tree-ssa/pr83695.c
+ 8ed1f7332c91bd8bf3aa0d93af04baba  gcc/testsuite/gcc.dg/tree-ssa/pr83907-1.c
+ d1c26c609c5d2d65129aebab87fc5fd2  gcc/testsuite/gcc.dg/tree-ssa/pr83907-2.c
  f313676a3bd1def3f52a4a2ad337e5b4  gcc/testsuite/gcc.dg/tree-ssa/pr84436-1.c
  1e29fdba8f6b0730e9cc3c90e2196fe1  gcc/testsuite/gcc.dg/tree-ssa/pr84436-2.c
  fe56336568b1ca09af0087f9a7894117  gcc/testsuite/gcc.dg/tree-ssa/pr84436-3.c
*************** b0f2c1e77fc0cf943a631ac09484533b  gcc/te
*** 46753,46758 ****
--- 49856,49862 ----
  e89f8e784c43baa5c307166a1b734b4b  gcc/testsuite/gcc.dg/tree-ssa/pr89060.c
  d16b47ca881eb8e90be58ab33ff756b3  gcc/testsuite/gcc.dg/tree-ssa/pr89074.c
  024ba71c905d05d7a9881facfa2c7774  gcc/testsuite/gcc.dg/tree-ssa/pr89209.c
+ fe31b3e19f64fc4269a737c1f669d568  gcc/testsuite/gcc.dg/tree-ssa/pr89317.c
  e8d812d9f4cc1e5589250829f2d5788a  gcc/testsuite/gcc.dg/tree-ssa/pr89430-1.c
  48c96459dd271a728f17eda9f142d41f  gcc/testsuite/gcc.dg/tree-ssa/pr89430-2.c
  7422c22dad66116dbbe3f939acb67f5e  gcc/testsuite/gcc.dg/tree-ssa/pr89430-3.c
*************** f1dcd7501f11cde86730fe9682f5800f  gcc/te
*** 46776,46782 ****
  30664d36dc1df130226d6a77cc9e4161  gcc/testsuite/gcc.dg/tree-ssa/pr91029-1.c
  3fb69a8e142b66d801784ef59cd6ac5a  gcc/testsuite/gcc.dg/tree-ssa/pr91029-2.c
  103840d2937e040bab69f9d58086e0b9  gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c
! 97dbd55e973c0aeb3073bb7074ecbb87  gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c
  6ded25a6acd595d2f2bbb609da0d9fb7  gcc/testsuite/gcc.dg/tree-ssa/pr91482.c
  c56985aba27fe45fdf438551dcc4ab69  gcc/testsuite/gcc.dg/tree-ssa/pr91504.c
  2743452cb12bee6de4a0d759e6f1733a  gcc/testsuite/gcc.dg/tree-ssa/pr91579.c
--- 49880,49886 ----
  30664d36dc1df130226d6a77cc9e4161  gcc/testsuite/gcc.dg/tree-ssa/pr91029-1.c
  3fb69a8e142b66d801784ef59cd6ac5a  gcc/testsuite/gcc.dg/tree-ssa/pr91029-2.c
  103840d2937e040bab69f9d58086e0b9  gcc/testsuite/gcc.dg/tree-ssa/pr91091-1.c
! ef6f71a9f0d9a62afaf5ad6528086bab  gcc/testsuite/gcc.dg/tree-ssa/pr91091-2.c
  6ded25a6acd595d2f2bbb609da0d9fb7  gcc/testsuite/gcc.dg/tree-ssa/pr91482.c
  c56985aba27fe45fdf438551dcc4ab69  gcc/testsuite/gcc.dg/tree-ssa/pr91504.c
  2743452cb12bee6de4a0d759e6f1733a  gcc/testsuite/gcc.dg/tree-ssa/pr91579.c
*************** a76b91bb4ff84b9f5ebf713c243657eb  gcc/te
*** 46811,46817 ****
  c25bc66e518faa330ec0e19ebd46e5b9  gcc/testsuite/gcc.dg/tree-ssa/pr93582-7.c
  6346b3e6adf9192925c0f0ead513d239  gcc/testsuite/gcc.dg/tree-ssa/pr93582-8.c
  45bf953087ec1f900da8458b7d5a998d  gcc/testsuite/gcc.dg/tree-ssa/pr93582-9.c
- 8aa62492210b4d7d0f838a9c9389e359  gcc/testsuite/gcc.dg/tree-ssa/pr93776.c
  b1d064a3026e8b57269706b2db747e94  gcc/testsuite/gcc.dg/tree-ssa/pr93781-1.c
  e27849e4f028f9f63442449af6738404  gcc/testsuite/gcc.dg/tree-ssa/pr93781-2.c
  b422f5eb310c1b5a1626a8eabb17795e  gcc/testsuite/gcc.dg/tree-ssa/pr93781-3.c
--- 49915,49920 ----
*************** b72700d1405dc73ecb0cb4aae1b592f5  gcc/te
*** 46895,46900 ****
--- 49998,50004 ----
  566f2cf5c36f26ba96a5827e3ad9322f  gcc/testsuite/gcc.dg/tree-ssa/pr99142.c
  2f52ef9c058ed05fc6ab41c1d284a3a7  gcc/testsuite/gcc.dg/tree-ssa/pr99473-1.c
  ade2a31f339a2cef5d9ebcd9b1f2cb67  gcc/testsuite/gcc.dg/tree-ssa/pr99578-1.c
+ 4a41d61459a69194154301316b5463c8  gcc/testsuite/gcc.dg/tree-ssa/pr99739.c
  25bc0c9f6fb706db98fb7274413f0086  gcc/testsuite/gcc.dg/tree-ssa/pr99793.c
  e6c9f2dd9d7405dee4bfd5d6d0fc455f  gcc/testsuite/gcc.dg/tree-ssa/pred-1.c
  073bed4b8270e0ae3beaf5098f0630da  gcc/testsuite/gcc.dg/tree-ssa/predcom-1.c
*************** bc54a55ac78e555806e7b448f49728b0  gcc/te
*** 46978,46985 ****
  43cedee8ba1282cf6b6558cafbaf9c24  gcc/testsuite/gcc.dg/tree-ssa/reassoc-45.c
  31c8f83c1a544753f4baf31acc63a283  gcc/testsuite/gcc.dg/tree-ssa/reassoc-46.c
  5072abc088fac51ef4fb9d38cfab1016  gcc/testsuite/gcc.dg/tree-ssa/reassoc-46.h
! b067bcec98d4aaa828d0ef7abaf12cc9  gcc/testsuite/gcc.dg/tree-ssa/reassoc-47.c
! ec30166019f16808535b6a01076d2659  gcc/testsuite/gcc.dg/tree-ssa/reassoc-48.c
  c978501cc36987a39be2fe7b6f3fef22  gcc/testsuite/gcc.dg/tree-ssa/reassoc-49.c
  c75bffd403ebb6298962402a14677298  gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c
  a755ebec01dcafbcef5b6208ad50f78e  gcc/testsuite/gcc.dg/tree-ssa/reassoc-50.c
--- 50082,50088 ----
  43cedee8ba1282cf6b6558cafbaf9c24  gcc/testsuite/gcc.dg/tree-ssa/reassoc-45.c
  31c8f83c1a544753f4baf31acc63a283  gcc/testsuite/gcc.dg/tree-ssa/reassoc-46.c
  5072abc088fac51ef4fb9d38cfab1016  gcc/testsuite/gcc.dg/tree-ssa/reassoc-46.h
! d9f71773089e956982981615cbb6af18  gcc/testsuite/gcc.dg/tree-ssa/reassoc-47.c
  c978501cc36987a39be2fe7b6f3fef22  gcc/testsuite/gcc.dg/tree-ssa/reassoc-49.c
  c75bffd403ebb6298962402a14677298  gcc/testsuite/gcc.dg/tree-ssa/reassoc-5.c
  a755ebec01dcafbcef5b6208ad50f78e  gcc/testsuite/gcc.dg/tree-ssa/reassoc-50.c
*************** af7283dee474093606fed455637b88f3  gcc/te
*** 46990,46996 ****
  898bf73ccd91832671c8da00617439c7  gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c
  09a0ef1d8ae3fff11dd67dca71fd8ba0  gcc/testsuite/gcc.dg/tree-ssa/recip-1.c
  f4bcbafb829540ea32f44a5eb5d1b215  gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
! ec8c07714d481b3272e96db3abfe1b42  gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
  5b2e65e338a30863d4a32a9c0fa2ae41  gcc/testsuite/gcc.dg/tree-ssa/recip-4.c
  78cd4cb521cece5f9778a6c47bac5ffe  gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
  6487b68e6cadf4f3a540ff4e3ee978c8  gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
--- 50093,50099 ----
  898bf73ccd91832671c8da00617439c7  gcc/testsuite/gcc.dg/tree-ssa/reassoc-9.c
  09a0ef1d8ae3fff11dd67dca71fd8ba0  gcc/testsuite/gcc.dg/tree-ssa/recip-1.c
  f4bcbafb829540ea32f44a5eb5d1b215  gcc/testsuite/gcc.dg/tree-ssa/recip-2.c
! 36e2877930097fd3d91266d9e0a44b1a  gcc/testsuite/gcc.dg/tree-ssa/recip-3.c
  5b2e65e338a30863d4a32a9c0fa2ae41  gcc/testsuite/gcc.dg/tree-ssa/recip-4.c
  78cd4cb521cece5f9778a6c47bac5ffe  gcc/testsuite/gcc.dg/tree-ssa/recip-5.c
  6487b68e6cadf4f3a540ff4e3ee978c8  gcc/testsuite/gcc.dg/tree-ssa/recip-6.c
*************** a971bbe60f2e69d2e08e300a2d555b9f  gcc/te
*** 47056,47062 ****
  318ced0a1ecc28ca82748c44b19faefc  gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c
  164d3f1553fd0d030b255cf928d0cd42  gcc/testsuite/gcc.dg/tree-ssa/slsr-37.c
  cd42b4f614ae2ea57d9c405a7e6d8df8  gcc/testsuite/gcc.dg/tree-ssa/slsr-38.c
! 1e9c5dbac19ba986933d1bb6fe260fab  gcc/testsuite/gcc.dg/tree-ssa/slsr-39.c
  579608c94039e43dbe82307c8633999a  gcc/testsuite/gcc.dg/tree-ssa/slsr-4.c
  cb53eb85681a890a589c1f50e386c443  gcc/testsuite/gcc.dg/tree-ssa/slsr-40.c
  d03cb3596196779855c74f48d36a97a2  gcc/testsuite/gcc.dg/tree-ssa/slsr-41.c
--- 50159,50165 ----
  318ced0a1ecc28ca82748c44b19faefc  gcc/testsuite/gcc.dg/tree-ssa/slsr-36.c
  164d3f1553fd0d030b255cf928d0cd42  gcc/testsuite/gcc.dg/tree-ssa/slsr-37.c
  cd42b4f614ae2ea57d9c405a7e6d8df8  gcc/testsuite/gcc.dg/tree-ssa/slsr-38.c
! 3feafd6caa2f158678215214990db969  gcc/testsuite/gcc.dg/tree-ssa/slsr-39.c
  579608c94039e43dbe82307c8633999a  gcc/testsuite/gcc.dg/tree-ssa/slsr-4.c
  cb53eb85681a890a589c1f50e386c443  gcc/testsuite/gcc.dg/tree-ssa/slsr-40.c
  d03cb3596196779855c74f48d36a97a2  gcc/testsuite/gcc.dg/tree-ssa/slsr-41.c
*************** c9d54e802a416f03458eaee182da0547  gcc/te
*** 47066,47072 ****
  47f4aa00fc6ef30ae0f1b03e5733a572  gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
  f5cbb278145ac126dcce52ba55a7e986  gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
  a033da229d97e775dc989a1095ff34b8  gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
! 4a59da192568eb854b220a6304bfea72  gcc/testsuite/gcc.dg/tree-ssa/split-path-1.c
  374f7d1e0bcd74c6255d65e104a73dbf  gcc/testsuite/gcc.dg/tree-ssa/split-path-10.c
  6f118f8784310e78f72417963dea9249  gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
  7f70f1f8957026ce7c76f2d7f8173762  gcc/testsuite/gcc.dg/tree-ssa/split-path-12.c
--- 50169,50175 ----
  47f4aa00fc6ef30ae0f1b03e5733a572  gcc/testsuite/gcc.dg/tree-ssa/slsr-7.c
  f5cbb278145ac126dcce52ba55a7e986  gcc/testsuite/gcc.dg/tree-ssa/slsr-8.c
  a033da229d97e775dc989a1095ff34b8  gcc/testsuite/gcc.dg/tree-ssa/slsr-9.c
! 1dff1a4b39584300d227d7cd277f036c  gcc/testsuite/gcc.dg/tree-ssa/split-path-1.c
  374f7d1e0bcd74c6255d65e104a73dbf  gcc/testsuite/gcc.dg/tree-ssa/split-path-10.c
  6f118f8784310e78f72417963dea9249  gcc/testsuite/gcc.dg/tree-ssa/split-path-11.c
  7f70f1f8957026ce7c76f2d7f8173762  gcc/testsuite/gcc.dg/tree-ssa/split-path-12.c
*************** d205ff4a7ea20fa74fa2ce48df212443  gcc/te
*** 47130,47139 ****
--- 50233,50245 ----
  22eb5bf1dae656cba392dcf7143de995  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-39.c
  a89cc51f8eed91ff9f67a03136fadfc2  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-40.c
  9f43a2b46c3c7518c4325720e6dfe2a1  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-41.c
+ da74be31fe6f59d63f8df06e088dd2de  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-42.c
+ 53b3235f987a5fda4292f25d2b007ef6  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-43.c
  f7cce43d31e9f12959af7cf644592290  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-7.c
  51be37cfd24e328fafdfd467109bfff4  gcc/testsuite/gcc.dg/tree-ssa/ssa-ccp-9.c
  a4485085185fcdf9689ad1ba99aa8d60  gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-1.c
  fc3e2aaf0b10a13e63cd6178c5dc77cb  gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-2.c
+ 4ec0b7302258c006ea983e8cbec5561c  gcc/testsuite/gcc.dg/tree-ssa/ssa-copyprop-3.c
  0ab53c5566862b724caea49a0b1314ac  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-1.c
  754437368439973765d70d8243ee96ae  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-2.c
  d2e19123225493048816ba7880125ee7  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-3.c
*************** b596f72df33a0229e9487dc91cf6fc0f  gcc/te
*** 47143,47149 ****
  867e58b89d0d7e5db1ae140b1b97f4ce  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-7.c
  b7ccd5f262237601ddd937d39599c479  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-8.c
  fe380a1f1df354382cdc2b0804d55603  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-9.c
! 234074b4256dac328cd0aa9b439a5d71  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-branch-1.c
  e666ad14b4ed9af521fe3321b676a452  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c
  8a64614ddb6fafb7fd2cde19df7908b4  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
  35fe651ba16877b7b82da8181a1b6e5d  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
--- 50249,50255 ----
  867e58b89d0d7e5db1ae140b1b97f4ce  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-7.c
  b7ccd5f262237601ddd937d39599c479  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-8.c
  fe380a1f1df354382cdc2b0804d55603  gcc/testsuite/gcc.dg/tree-ssa/ssa-dce-9.c
! f1f638198cff2b8c357994d67d496cac  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-branch-1.c
  e666ad14b4ed9af521fe3321b676a452  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-ccp-1.c
  8a64614ddb6fafb7fd2cde19df7908b4  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-1.c
  35fe651ba16877b7b82da8181a1b6e5d  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-cse-2.c
*************** cb116123611aabec34a5f7821fa63a02  gcc/te
*** 47172,47178 ****
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! a708cb5989cc841e128ccc6302e201de  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
  de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
--- 50278,50284 ----
  05aea1a4d7030c5cf55b50b84dc9f78f  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2g.c
  15738f38675ee569391bc24effefc64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-2h.c
  881f6db6cb1a3e63bf8dd2e0f203cc95  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-5.c
! bcc0e3162deeb1a11b7daf4065e6b405  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-7.c
  de890ed0b8a4a8f0e19572bf759856a3  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-8.c
  1e01eee87c695d67cde163a4530069b0  gcc/testsuite/gcc.dg/tree-ssa/ssa-dom-thread-9.c
  9131f70d5244737552818651f478cdc5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-1.c
*************** e1f6e529145ed0b2f0232c14f76bd2d4  gcc/te
*** 47210,47215 ****
--- 50316,50324 ----
  dbb4751df5b581df2bf59314c3a16ebf  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-41.c
  65c320550e259474b51344faf99d7649  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-42.c
  05a1f242e7d278dcb147a1bb54cc9efd  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-43.c
+ 789058e5fe3d3df6b624fcf249f795c6  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-44.c
+ 34e7711e9599a9e06c0484e2d330ab6a  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-45.c
+ 2d90cf283a134945d0ba42c6d39a54da  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-46.c
  8464edd661b6724b6cc8a6c0591e9ada  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-5.c
  d67df09df0e5c754eb61edc5766cd64b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-6.c
  e61169ee1fb9fc84f1d8b0d413a8a21b  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-7.c
*************** f4779c6680cebbcb248e8fd574b9bfa0  gcc/te
*** 47217,47222 ****
--- 50326,50333 ----
  e5f1a43c747faec63c35af79e768d4a5  gcc/testsuite/gcc.dg/tree-ssa/ssa-dse-9.c
  963a0396c65a846ccb0a83dc6a16144b  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-1.c
  c1d1b89464c021a62101f69087a9fc75  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-10.c
+ e38a8e54b4ea0d0d8fd4e9176e26de28  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-100.c
+ 4c8f24912f15202c6672c6017ec6d769  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-101.c
  5561c38451474a42839647e4e156c010  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-11.c
  5561c38451474a42839647e4e156c010  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-12.c
  b95088c9ed88a484349d681f36871312  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-13.c
*************** bab030e723ebb78dbecdf8eb91fd51f8  gcc/te
*** 47306,47311 ****
--- 50417,50423 ----
  21c1db010295ebf23af359cdfb637e17  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-96.c
  185978ab1560ac88d364c0be2fc59857  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-97.c
  24d28507f3390e02b4857810af2b1792  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-98.c
+ 8d4714a0162d3513545cf6150492e990  gcc/testsuite/gcc.dg/tree-ssa/ssa-fre-99.c
  2957dc80c49929e08096f70c96f5df81  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-1.c
  2d6dabe93b06b03f622762226dbb6c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-2.c
  70be68799a646b8992aed1aafb5151ab  gcc/testsuite/gcc.dg/tree-ssa/ssa-hoist-3.c
*************** cb14d497286df49863c83afa886a3a92  gcc/te
*** 47334,47340 ****
  6a24e17b687dca694ffe1d65867ad9e5  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c
  0127e8622d56a87fffe76987fdb249f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c
  c456ebf49f3666d48ef00a6ef3c341c7  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
! 9aae14b32a26cb59ea2b62b4c541abd6  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
  6e2983c6ef63d3ea5a3fe01596a9b0c0  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-13.c
  7d0707c4a3f43204bc5bb9f08a490d52  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-14.c
  bf1786a48b894314bf5d86f6d8bd0560  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-15.c
--- 50446,50452 ----
  6a24e17b687dca694ffe1d65867ad9e5  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-1.c
  0127e8622d56a87fffe76987fdb249f8  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-10.c
  c456ebf49f3666d48ef00a6ef3c341c7  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-11.c
! 627dc79f0a45ff1bb42212af427fbc71  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-12.c
  6e2983c6ef63d3ea5a3fe01596a9b0c0  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-13.c
  7d0707c4a3f43204bc5bb9f08a490d52  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-14.c
  bf1786a48b894314bf5d86f6d8bd0560  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-15.c
*************** b4e4c407419f9356fb5ba85b87fb95fb  gcc/te
*** 47344,47352 ****
  acc518693a637a0c3bd381d2765ae53e  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-19.c
  e8ad1077cbbf867b677d6dbe00524406  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
  5bb9959f9214d2ff65130e028127a68d  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-20.c
! 9b925fe8cb28803df00219a6c81a1638  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-21.c
  3fada5964c97d348ed7e7e1eb62f0512  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-22.c
  6a109e21502e5353e985b8e9180f3c79  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-23.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
  d00d2a078458d4fc876af7d2a29c241a  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-5.c
  769aa5eb478537be389d55c410c46887  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
--- 50456,50465 ----
  acc518693a637a0c3bd381d2765ae53e  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-19.c
  e8ad1077cbbf867b677d6dbe00524406  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-2.c
  5bb9959f9214d2ff65130e028127a68d  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-20.c
! bc1b0eb9d58483a9f609b164efd64d18  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-21.c
  3fada5964c97d348ed7e7e1eb62f0512  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-22.c
  6a109e21502e5353e985b8e9180f3c79  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-23.c
+ 99cacb357948a00b34aa1d255c66558b  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-24.c
  c0ab69fe1a4b916817bbafe5e5048c34  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-3.c
  d00d2a078458d4fc876af7d2a29c241a  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-5.c
  769aa5eb478537be389d55c410c46887  gcc/testsuite/gcc.dg/tree-ssa/ssa-lim-6.c
*************** c0e501146babecae5e2250a96dc56a99  gcc/te
*** 47399,47405 ****
  f237fb84d8c929de79482cd9290e2e8a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-15.c
  05f9dbfe971934dca1a91733dd7cc3ef  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-16.c
  161829b6c7430353195336356feb1e31  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-17.c
! 31262b98534bc1e5cd3dd2fc1538c3de  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-18.c
  d869cf884bf06167758bc9df313cee97  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-19.c
  75f1fbb86f90eb2820845f3b864c8649  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
  9825bb51561846515088fa3daf93eb2c  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
--- 50512,50518 ----
  f237fb84d8c929de79482cd9290e2e8a  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-15.c
  05f9dbfe971934dca1a91733dd7cc3ef  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-16.c
  161829b6c7430353195336356feb1e31  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-17.c
! 571ef285aa422e43de74cf948caaf618  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-18.c
  d869cf884bf06167758bc9df313cee97  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-19.c
  75f1fbb86f90eb2820845f3b864c8649  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-2.c
  9825bb51561846515088fa3daf93eb2c  gcc/testsuite/gcc.dg/tree-ssa/ssa-sink-3.c
*************** f8d79acf16a7b0f25c65f787eb80a4f0  gcc/te
*** 47416,47421 ****
--- 50529,50540 ----
  639917ac728fb50216b5d641326a2d4e  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-13.c
  2d2a4c5d9176f15e6d84e8b7ebd76656  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-14.c
  d27e19cbc74977f6d1e4eb7b508acbd2  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-15.c
+ 97654a0ac48e6a645068fcebe3d8d8ed  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-16.c
+ 7b67e9ddb035d2cd169ccd1452a8d47a  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-17.c
+ 054da81e5ac60be0a91010d71ddf9ee8  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-18.c
+ 4b0f41e665ea108724b1c5c7fc582cd4  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-19.c
+ 8754296b236f3b2f6abfa14ca2a80025  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-20.c
+ 5dcb244531627f9e7d56395a25df0cf7  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-21.c
  f9ec9861cfad29ae5e65f5801dec8b35  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-backedge.c
  345c2de66411a0afb210e968afaa62c0  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-invalid.c
  31af1b6bef4a6bfebd6ec195519366b8  gcc/testsuite/gcc.dg/tree-ssa/ssa-thread-valid.c
*************** ac68e635052c49f6b773cb66ed20a1e8  gcc/te
*** 47464,47470 ****
  e84424985e065b3a1999b1ea596c8e5c  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
  6400d5651fcf9e68caeb41223c2fced7  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
  fe06bda8f8339334f5d8b9e5b475bfc5  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-8.c
! 68a8640e8d20170a68bb7fc5cc51b59b  gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
  b529a183f5c763b842cd8fad5900b40f  gcc/testsuite/gcc.dg/tree-ssa/unord.c
  1c4bf657e9d9fe122d42a9f94704b7e2  gcc/testsuite/gcc.dg/tree-ssa/unreachable.c
  1e3d2be7b65bc67d143ce4e436bfcdb1  gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
--- 50583,50589 ----
  e84424985e065b3a1999b1ea596c8e5c  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-6.c
  6400d5651fcf9e68caeb41223c2fced7  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-7.c
  fe06bda8f8339334f5d8b9e5b475bfc5  gcc/testsuite/gcc.dg/tree-ssa/tailrecursion-8.c
! fec363e80efb724288fe2a78a0c012d8  gcc/testsuite/gcc.dg/tree-ssa/tree-ssa.exp
  b529a183f5c763b842cd8fad5900b40f  gcc/testsuite/gcc.dg/tree-ssa/unord.c
  1c4bf657e9d9fe122d42a9f94704b7e2  gcc/testsuite/gcc.dg/tree-ssa/unreachable.c
  1e3d2be7b65bc67d143ce4e436bfcdb1  gcc/testsuite/gcc.dg/tree-ssa/upcast-1.c
*************** d2a0e5aa7e3c69668d759a4fc33f63ca  gcc/te
*** 47482,47494 ****
  5075fecf046c0224239ec47fc9cdb321  gcc/testsuite/gcc.dg/tree-ssa/vector-5.c
  a12895e160ece0f553a23b23be8acc70  gcc/testsuite/gcc.dg/tree-ssa/vector-6.c
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
  42f4f044421eebfa376074d65304f8c1  gcc/testsuite/gcc.dg/tree-ssa/vrp.h
  98949ddf030166af1c48e9d8178080a7  gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
  5d06bb2c1a50be57fc580e1055ed9f6a  gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
  996219a5d7fe3925b7d8246148bfa5a8  gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
  55cd62e5dbba2b7f42ec1d98b2da126c  gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
  a6a58345d8323b1844a96f9b45df6e20  gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
! 44d1493f2b4dc8d8d86ec0599040b34f  gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
  eff08b3fde2380a2ac814a1e396be412  gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
  be5af6115952e8a4bdcb3c935f76e3bf  gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
  0b0c8c15f7ac16476b694c8a8f91ce37  gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
--- 50601,50632 ----
  5075fecf046c0224239ec47fc9cdb321  gcc/testsuite/gcc.dg/tree-ssa/vector-5.c
  a12895e160ece0f553a23b23be8acc70  gcc/testsuite/gcc.dg/tree-ssa/vector-6.c
  ae4c45e8e11a3fe4fc4c58ed7fba53fa  gcc/testsuite/gcc.dg/tree-ssa/vector-7.c
+ d2716d7b0ff8fed54064ac391092556a  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-1.c
+ ead105f59515a642c6fc52a424df28de  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-11.c
+ 8fc95c275dc5e1ffb8c7d13ea8c8d61d  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-3.c
+ f43c0ce34a118063d676f4018c4bc0a8  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-3a.c
+ 004d2bbfe19302e36a7a52883734af6d  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-4.c
+ 8c278a74f63389b7d423f8c7311ea495  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-4a.c
+ bb80b99977750a36908e3e2dffb9a3f9  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-5a.c
+ 9e836be71c76565f6b21bfc807316709  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-6.c
+ 330ef877971bbef3819f4cf263e25dfb  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-7.c
+ 564f40109b1049f137c82198e8c6c769  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-8.c
+ 50d0391a92e3a04baff8f5d6fe93d683  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-abs-1.c
+ 088c5fcb38e11ac3ea517c35416e3888  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-inf-1.c
+ ddf35dbfa6fadefd77f8d99f52bf0310  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-nan-1.c
+ b3ab245e78e617ea4a53ae113c58df6e  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-plus.c
+ dcd6b7c8149e3e1bf62ecdac2c39dce3  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-signbit-1.c
+ ebac22fe693910194996cdf239108af7  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-signbit-2.c
+ c7772445382b7be958fdb8b4b189ab2a  gcc/testsuite/gcc.dg/tree-ssa/vrp-float-signbit-3.c
+ 2dbbcecafae688d4435ec38c3d30ed5f  gcc/testsuite/gcc.dg/tree-ssa/vrp-unreachable.c
+ 821a8719b170a366e27a5139e23b4b21  gcc/testsuite/gcc.dg/tree-ssa/vrp-update.c
  42f4f044421eebfa376074d65304f8c1  gcc/testsuite/gcc.dg/tree-ssa/vrp.h
  98949ddf030166af1c48e9d8178080a7  gcc/testsuite/gcc.dg/tree-ssa/vrp01.c
  5d06bb2c1a50be57fc580e1055ed9f6a  gcc/testsuite/gcc.dg/tree-ssa/vrp02.c
  996219a5d7fe3925b7d8246148bfa5a8  gcc/testsuite/gcc.dg/tree-ssa/vrp03.c
  55cd62e5dbba2b7f42ec1d98b2da126c  gcc/testsuite/gcc.dg/tree-ssa/vrp04.c
  a6a58345d8323b1844a96f9b45df6e20  gcc/testsuite/gcc.dg/tree-ssa/vrp05.c
! 995e3714b08a433eabff3026cd0b6d43  gcc/testsuite/gcc.dg/tree-ssa/vrp06.c
  eff08b3fde2380a2ac814a1e396be412  gcc/testsuite/gcc.dg/tree-ssa/vrp07.c
  be5af6115952e8a4bdcb3c935f76e3bf  gcc/testsuite/gcc.dg/tree-ssa/vrp08.c
  0b0c8c15f7ac16476b694c8a8f91ce37  gcc/testsuite/gcc.dg/tree-ssa/vrp09.c
*************** a2d068c8b5d5ecb7aeb9d6f60f75690b  gcc/te
*** 47516,47521 ****
--- 50654,50661 ----
  419ced6aac18d78614ce2296a1a6b660  gcc/testsuite/gcc.dg/tree-ssa/vrp12.c
  2103f3e1c8fc30651b6d62c026cac2ca  gcc/testsuite/gcc.dg/tree-ssa/vrp120.c
  a62799429f8c8c8beabf64b3b102d402  gcc/testsuite/gcc.dg/tree-ssa/vrp121.c
+ d28e9c71b10a2f76510acd6bfc8979c6  gcc/testsuite/gcc.dg/tree-ssa/vrp122.c
+ fffdbdc5b093f3e6f5bcd7eddb0c788b  gcc/testsuite/gcc.dg/tree-ssa/vrp123.c
  5c02e78e0a19d3b4ab362211af9c057d  gcc/testsuite/gcc.dg/tree-ssa/vrp13.c
  7e4e2677592121fe637fead20ff82420  gcc/testsuite/gcc.dg/tree-ssa/vrp14.c
  88a28f67649717d0c28edf297d3bc70c  gcc/testsuite/gcc.dg/tree-ssa/vrp15.c
*************** ea9c9fae9c2a305a0331890426a783a3  gcc/te
*** 47527,47533 ****
  f2e4fe4214ef074f2445f096ddd49c9c  gcc/testsuite/gcc.dg/tree-ssa/vrp21.c
  9f53fc578b207368ed4f3e8c297f9b27  gcc/testsuite/gcc.dg/tree-ssa/vrp22.c
  3c3eade9f8e979c77418a9c0acb3a446  gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
! d72dc7fb7dc5520e64eeeefdf69c40da  gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
  91f86680779766aaa869c1d9c0787dfb  gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
  6cbc4705e68ce3d1d9350c8491f8e399  gcc/testsuite/gcc.dg/tree-ssa/vrp26.c
  f853acbf0702a19593f9da2e8c7a0f9e  gcc/testsuite/gcc.dg/tree-ssa/vrp27.c
--- 50667,50673 ----
  f2e4fe4214ef074f2445f096ddd49c9c  gcc/testsuite/gcc.dg/tree-ssa/vrp21.c
  9f53fc578b207368ed4f3e8c297f9b27  gcc/testsuite/gcc.dg/tree-ssa/vrp22.c
  3c3eade9f8e979c77418a9c0acb3a446  gcc/testsuite/gcc.dg/tree-ssa/vrp23.c
! c2afe2d17ae3bbe5c928d3378f230839  gcc/testsuite/gcc.dg/tree-ssa/vrp24.c
  91f86680779766aaa869c1d9c0787dfb  gcc/testsuite/gcc.dg/tree-ssa/vrp25.c
  6cbc4705e68ce3d1d9350c8491f8e399  gcc/testsuite/gcc.dg/tree-ssa/vrp26.c
  f853acbf0702a19593f9da2e8c7a0f9e  gcc/testsuite/gcc.dg/tree-ssa/vrp27.c
*************** a09378d2b6faf9db3eeee9329a4e769b  gcc/te
*** 47549,47555 ****
  70c9b424c7b9ceb5a0dddbb96f081ed8  gcc/testsuite/gcc.dg/tree-ssa/vrp43.c
  9bf048958e86351cbf561caf69e31fe9  gcc/testsuite/gcc.dg/tree-ssa/vrp44.c
  4a6e8dbe7719b76bfaefc33af58c14d0  gcc/testsuite/gcc.dg/tree-ssa/vrp45.c
! affd159b3eff5c72ff5cf0befcf52eda  gcc/testsuite/gcc.dg/tree-ssa/vrp46.c
  f18088ab45bb9d03c61099a31e726021  gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
  d8a4078933f79b2a7edab22461d8cbe9  gcc/testsuite/gcc.dg/tree-ssa/vrp48.c
  e6de071c00096491257e03d5eaf88561  gcc/testsuite/gcc.dg/tree-ssa/vrp49.c
--- 50689,50695 ----
  70c9b424c7b9ceb5a0dddbb96f081ed8  gcc/testsuite/gcc.dg/tree-ssa/vrp43.c
  9bf048958e86351cbf561caf69e31fe9  gcc/testsuite/gcc.dg/tree-ssa/vrp44.c
  4a6e8dbe7719b76bfaefc33af58c14d0  gcc/testsuite/gcc.dg/tree-ssa/vrp45.c
! 3341feda177d034aba13513cdf60e243  gcc/testsuite/gcc.dg/tree-ssa/vrp46.c
  f18088ab45bb9d03c61099a31e726021  gcc/testsuite/gcc.dg/tree-ssa/vrp47.c
  d8a4078933f79b2a7edab22461d8cbe9  gcc/testsuite/gcc.dg/tree-ssa/vrp48.c
  e6de071c00096491257e03d5eaf88561  gcc/testsuite/gcc.dg/tree-ssa/vrp49.c
*************** bb62f82a973334db1c0ebf75b17bcdf8  gcc/te
*** 47613,47623 ****
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
  0986037c6e0724a89f8308100f3f920f  gcc/testsuite/gcc.dg/tsan/atomic-fence.c
  66723ae098123069493e416708ef5146  gcc/testsuite/gcc.dg/tsan/pr88017.c
  dcc8ff133faffd3fe561dfe431569a07  gcc/testsuite/gcc.dg/tsan/pr88030.c
  de40a1e950c75128048b75517e728603  gcc/testsuite/gcc.dg/tsan/pr90208-1.c
  65ac9eca3bcd49137d096a4f2573e2e2  gcc/testsuite/gcc.dg/tsan/pr90208-2.c
! f46ed58b497c8dc9f5f2a207b547394e  gcc/testsuite/gcc.dg/tsan/tsan.exp
  01ec42502b146041504a5ab811e7f3b1  gcc/testsuite/gcc.dg/two-types-1.c
  95ad9b7c791f67ee2f4be1bd942e6718  gcc/testsuite/gcc.dg/two-types-10.c
  ca1b8417ca9c37159dd4270d3263cc19  gcc/testsuite/gcc.dg/two-types-2.c
--- 50753,50764 ----
  016029e7b08dbc8fe1d266551df2fdd3  gcc/testsuite/gcc.dg/tree-ssa/writeonly.c
  22eb0b8eeae794a6956326b2c9383fb2  gcc/testsuite/gcc.dg/trunc-1.c
  0986037c6e0724a89f8308100f3f920f  gcc/testsuite/gcc.dg/tsan/atomic-fence.c
+ c0761616b56e6c13ccfbf05810c3ad42  gcc/testsuite/gcc.dg/tsan/pr106984.c
  66723ae098123069493e416708ef5146  gcc/testsuite/gcc.dg/tsan/pr88017.c
  dcc8ff133faffd3fe561dfe431569a07  gcc/testsuite/gcc.dg/tsan/pr88030.c
  de40a1e950c75128048b75517e728603  gcc/testsuite/gcc.dg/tsan/pr90208-1.c
  65ac9eca3bcd49137d096a4f2573e2e2  gcc/testsuite/gcc.dg/tsan/pr90208-2.c
! 142fa6c1d7f64fa57e1c8f1e665cd1e6  gcc/testsuite/gcc.dg/tsan/tsan.exp
  01ec42502b146041504a5ab811e7f3b1  gcc/testsuite/gcc.dg/two-types-1.c
  95ad9b7c791f67ee2f4be1bd942e6718  gcc/testsuite/gcc.dg/two-types-10.c
  ca1b8417ca9c37159dd4270d3263cc19  gcc/testsuite/gcc.dg/two-types-2.c
*************** c3e1ec66a1ba63c23068279c0986a103  gcc/te
*** 47642,47648 ****
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
  49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
! ba6ee052ca72deddc1d08a3c06f509de  gcc/testsuite/gcc.dg/ubsan/c-shift-1.c
  577cc36a854722ee2c73da1a6a6e2322  gcc/testsuite/gcc.dg/ubsan/c-shift-2.c
  2dbfddf9f012a91eb07b3c83841941a1  gcc/testsuite/gcc.dg/ubsan/c99-shift-1.c
  a8a75b36b3cbde1b2efc3f3da0ae398d  gcc/testsuite/gcc.dg/ubsan/c99-shift-2.c
--- 50783,50794 ----
  b9d67dbc50419a82b76d70029936f329  gcc/testsuite/gcc.dg/ubsan/bounds-1.c
  8ef707e5f4c734c1b8be85269cd93d06  gcc/testsuite/gcc.dg/ubsan/bounds-2.c
  49c14bdc09fb274e14fd4f886b5e6fb9  gcc/testsuite/gcc.dg/ubsan/bounds-3.c
! 5963ec5d68109093ec570812aa0fa056  gcc/testsuite/gcc.dg/ubsan/bounds-4.c
! 48638da0cdb47fea7ca6fa78d58a1d89  gcc/testsuite/gcc.dg/ubsan/bounds-4a.c
! be649b157b87eeba210d9d645165264e  gcc/testsuite/gcc.dg/ubsan/bounds-4b.c
! 1ea4ad045906d620d6176526b219ab28  gcc/testsuite/gcc.dg/ubsan/bounds-4c.c
! a59d627e0d28238dd1c0e6bc3e5d6038  gcc/testsuite/gcc.dg/ubsan/bounds-4d.c
! 2510a85977afe2ae638b3bb1920b690a  gcc/testsuite/gcc.dg/ubsan/c-shift-1.c
  577cc36a854722ee2c73da1a6a6e2322  gcc/testsuite/gcc.dg/ubsan/c-shift-2.c
  2dbfddf9f012a91eb07b3c83841941a1  gcc/testsuite/gcc.dg/ubsan/c99-shift-1.c
  a8a75b36b3cbde1b2efc3f3da0ae398d  gcc/testsuite/gcc.dg/ubsan/c99-shift-2.c
*************** e4441e7485c1c8e740509a37f0c0bb14  gcc/te
*** 47657,47663 ****
--- 50803,50814 ----
  b6636fcf606d4b2a9b3c129b082bc808  gcc/testsuite/gcc.dg/ubsan/float-cast-overflow-bf.c
  3325507ff87bcf4f63df3972ec6895c4  gcc/testsuite/gcc.dg/ubsan/ipa-icf-1.c
  20138e45bcf86067b02f18ee36d2a451  gcc/testsuite/gcc.dg/ubsan/object-size-9.c
+ 623866abaff3bf1dcf98b3248fabce25  gcc/testsuite/gcc.dg/ubsan/object-size-dyn.c
  bd23f40ca964648dca24107dcc929765  gcc/testsuite/gcc.dg/ubsan/pr103456.c
+ dc95648d25ed66b53703856ca8bf9c89  gcc/testsuite/gcc.dg/ubsan/pr106099.c
+ cefdc2a9eb13f2095c81dff3665fcbe2  gcc/testsuite/gcc.dg/ubsan/pr107183.c
+ 50f54783636f7e63e2f5702bfd228de0  gcc/testsuite/gcc.dg/ubsan/pr107668.c
+ 4111deb3a8958abcc5c35e4fb6d09931  gcc/testsuite/gcc.dg/ubsan/pr108995.c
  8b53119c2975ba4eb7e0a8a3f21049bc  gcc/testsuite/gcc.dg/ubsan/pr63690.c
  7a3b89a11b570c0d6817707c745a9fba  gcc/testsuite/gcc.dg/ubsan/pr67279.c
  c9a455b03d901e306e1836d50e9e37d6  gcc/testsuite/gcc.dg/ubsan/pr67662.c
*************** e95ed112f0ea45770ff240c4770cd2c7  gcc/te
*** 47681,47687 ****
  a6de1d906f46c35c2202d196fcbdba1a  gcc/testsuite/gcc.dg/ubsan/pr89284.c
  51557943b6a5571078dca811d526d7d8  gcc/testsuite/gcc.dg/ubsan/pr94423.c
  0f09425e087253b3e4d9360b845cfa01  gcc/testsuite/gcc.dg/ubsan/pr95810.c
! c31e1ce9db014fe53eb121823a3e0887  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  ff1993364d91d08b560ce3b84092e86d  gcc/testsuite/gcc.dg/ucnid-1-utf8.c
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
  d1ef7efe2db207bd7f1420dda8d447eb  gcc/testsuite/gcc.dg/ucnid-10-utf8.c
--- 50832,50838 ----
  a6de1d906f46c35c2202d196fcbdba1a  gcc/testsuite/gcc.dg/ubsan/pr89284.c
  51557943b6a5571078dca811d526d7d8  gcc/testsuite/gcc.dg/ubsan/pr94423.c
  0f09425e087253b3e4d9360b845cfa01  gcc/testsuite/gcc.dg/ubsan/pr95810.c
! d6c02bc15397c86f7944794eec1a171e  gcc/testsuite/gcc.dg/ubsan/ubsan.exp
  ff1993364d91d08b560ce3b84092e86d  gcc/testsuite/gcc.dg/ucnid-1-utf8.c
  b749062a1214fdf6ba947d30bdf90f30  gcc/testsuite/gcc.dg/ucnid-1.c
  d1ef7efe2db207bd7f1420dda8d447eb  gcc/testsuite/gcc.dg/ucnid-10-utf8.c
*************** b7c6bfc3bd2cba3afab2030ac56dd67e  gcc/te
*** 47787,47800 ****
--- 50938,50958 ----
  2519fc3bdcb9029abb613eae7d15ae75  gcc/testsuite/gcc.dg/uninit-pr101300.c
  bf768406434195e48962c188b55bf5c2  gcc/testsuite/gcc.dg/uninit-pr101494.c
  8200f01a2009070dab21c75f90bc9dbf  gcc/testsuite/gcc.dg/uninit-pr101573.c
+ ec770d21b1c5e2012cb0ec949716e6f7  gcc/testsuite/gcc.dg/uninit-pr101912.c
  351fe7aa637f2e54aad00a82bf867c15  gcc/testsuite/gcc.dg/uninit-pr102403-c2.c
  e2b774abf8d7e4cc810bee5ab597c4cc  gcc/testsuite/gcc.dg/uninit-pr102403.c
  5ff4f56884cf578c7f982952c079b4f6  gcc/testsuite/gcc.dg/uninit-pr105109.c
+ 90baecf3153505a3d804cb079da43df9  gcc/testsuite/gcc.dg/uninit-pr106155-1.c
+ 5ab5ce2cb9b25a98ce70a6310fc6a88d  gcc/testsuite/gcc.dg/uninit-pr106866.c
+ d302509e7e4d06b47b78ba3214c7fc0e  gcc/testsuite/gcc.dg/uninit-pr106881.c
+ bb6370e51fdfc71eb406f2d9d7e1f004  gcc/testsuite/gcc.dg/uninit-pr107839.c
+ 10779a14525372affcb25a7e7209e309  gcc/testsuite/gcc.dg/uninit-pr108547.c
  58c1fce493b489aff04e0b2f66635e90  gcc/testsuite/gcc.dg/uninit-pr19430-2.c
  79f653fd913dfd35f07e5b3890168e74  gcc/testsuite/gcc.dg/uninit-pr19430-O0.c
  0ba39e72d317abfcfd3703541b7f8a41  gcc/testsuite/gcc.dg/uninit-pr19430.c
  91c544bce46e7d686c64631ec6c9422e  gcc/testsuite/gcc.dg/uninit-pr20644-O0.c
  bd8e8e7214f9f23684fcce6542ba21a2  gcc/testsuite/gcc.dg/uninit-pr20644.c
+ 6dcf6d29de8f848cdc6ca21e0b33995d  gcc/testsuite/gcc.dg/uninit-pr40635.c
  fb7fb911814f67c58846323d51173f98  gcc/testsuite/gcc.dg/uninit-pr40943.c
  cc87ba9b6c639bd8ff150bf229696aaf  gcc/testsuite/gcc.dg/uninit-pr44547.c
  0d268bf46ec35f0bd1c568a5916d76e1  gcc/testsuite/gcc.dg/uninit-pr50476.c
*************** f3d0c9f5e1f93ea3a3c13cc79f4d5def  gcc/te
*** 47804,47811 ****
--- 50962,50972 ----
  1734c6a57c50120395340cb541c58c88  gcc/testsuite/gcc.dg/uninit-pr61409.c
  785af39d8c329bcc7df0ae094695f47b  gcc/testsuite/gcc.dg/uninit-pr61677.c
  1f4acfdc63b9f419aa5b8754b0a641e1  gcc/testsuite/gcc.dg/uninit-pr61869.c
+ 9691c9a8bb062e5fa98966be53e9dc15  gcc/testsuite/gcc.dg/uninit-pr63660.c
  5881e1c79acfe63238ea242998577105  gcc/testsuite/gcc.dg/uninit-pr65178.c
  6ba1683e472556b17b3c225408b3fc21  gcc/testsuite/gcc.dg/uninit-pr65182.c
+ 4a89976ac2b9b4b69cd3137db26fe807  gcc/testsuite/gcc.dg/uninit-pr65244-1.c
+ a10553f644fe76b730224e51945b36d6  gcc/testsuite/gcc.dg/uninit-pr65244-2.c
  1c8d27f96b4cf1013a7cd0fae3e7368a  gcc/testsuite/gcc.dg/uninit-pr65686.c
  e821794f64a67239864ede698d50f620  gcc/testsuite/gcc.dg/uninit-pr78295.c
  e5914ec194abe834db8656483a92fcdc  gcc/testsuite/gcc.dg/uninit-pr78548.c
*************** ec22e39e2b160e6444e03b5dcacc93f3  gcc/te
*** 47821,47826 ****
--- 50982,50990 ----
  2e37ae395e46a8e8e62921557b5db451  gcc/testsuite/gcc.dg/uninit-pr95136.c
  cb4477c93eddb2c98e8db3799ef9a8d3  gcc/testsuite/gcc.dg/uninit-pr98578.c
  d33bce997dea4f74cbb227675f6ec7b7  gcc/testsuite/gcc.dg/uninit-pr98583.c
+ 4d968f2db69dec7e5f880146576fc801  gcc/testsuite/gcc.dg/uninit-pred-10.c
+ 1c6a6934369db3cfac321448a75a0f01  gcc/testsuite/gcc.dg/uninit-pred-11.c
+ ba0a14121a9b141b05ad92194338f663  gcc/testsuite/gcc.dg/uninit-pred-12.c
  2e2b2ca64d1c3db87c75755a21b4bc06  gcc/testsuite/gcc.dg/uninit-pred-2_a.c
  7d67cd7432d67994c6642a61e0020d9e  gcc/testsuite/gcc.dg/uninit-pred-2_b.c
  dc20b95e0c82e7593d7e562b3b1e5aaf  gcc/testsuite/gcc.dg/uninit-pred-2_c.c
*************** c17f9d40557afd23540fbdc6dee10e2d  gcc/te
*** 47838,47844 ****
  05f38c38c613725dd896471fbc94ef85  gcc/testsuite/gcc.dg/uninit-pred-6_c.c
  840114fbb15ec153ec3965fd3d60423e  gcc/testsuite/gcc.dg/uninit-pred-6_d.c
  ddb0d9d02246d260424316fc51c4b34f  gcc/testsuite/gcc.dg/uninit-pred-6_e.c
! c86e3e3c28fad2fc003cc8a64b5a56a4  gcc/testsuite/gcc.dg/uninit-pred-7_a.c
  19e220a29cccab9dbda4e645d69c30b2  gcc/testsuite/gcc.dg/uninit-pred-7_b.c
  ae9f63955208be4c16b0ba30bd16f5b4  gcc/testsuite/gcc.dg/uninit-pred-7_c.c
  7a3eae1faebb33a9f5f883ebc298164a  gcc/testsuite/gcc.dg/uninit-pred-7_d.c
--- 51002,51008 ----
  05f38c38c613725dd896471fbc94ef85  gcc/testsuite/gcc.dg/uninit-pred-6_c.c
  840114fbb15ec153ec3965fd3d60423e  gcc/testsuite/gcc.dg/uninit-pred-6_d.c
  ddb0d9d02246d260424316fc51c4b34f  gcc/testsuite/gcc.dg/uninit-pred-6_e.c
! 7fc529e05e88623e8a1680b679c615b4  gcc/testsuite/gcc.dg/uninit-pred-7_a.c
  19e220a29cccab9dbda4e645d69c30b2  gcc/testsuite/gcc.dg/uninit-pred-7_b.c
  ae9f63955208be4c16b0ba30bd16f5b4  gcc/testsuite/gcc.dg/uninit-pred-7_c.c
  7a3eae1faebb33a9f5f883ebc298164a  gcc/testsuite/gcc.dg/uninit-pred-7_d.c
*************** ae9f63955208be4c16b0ba30bd16f5b4  gcc/te
*** 47847,47853 ****
  48dec70277ff9a8f83aba472bc7a6ea6  gcc/testsuite/gcc.dg/uninit-pred-8_c.c
  096e58c93515dd3678c391930e20efb7  gcc/testsuite/gcc.dg/uninit-pred-8_d.c
  f8c4f61a7dcf75600a176b4dab26db57  gcc/testsuite/gcc.dg/uninit-pred-9_a.c
! ab39d11a7afb84e861c39110f0ace2d4  gcc/testsuite/gcc.dg/uninit-pred-9_b.c
  bc7ca58b23b9c0a381b714ac4dc2ca9f  gcc/testsuite/gcc.dg/uninit-suppress.c
  5e843957c9ab050cc934b752246d8cf9  gcc/testsuite/gcc.dg/uninit-suppress_2.c
  b0e2e79211806d4afcda9cf5d4d4dcb6  gcc/testsuite/gcc.dg/uninit-suppress_3.c
--- 51011,51017 ----
  48dec70277ff9a8f83aba472bc7a6ea6  gcc/testsuite/gcc.dg/uninit-pred-8_c.c
  096e58c93515dd3678c391930e20efb7  gcc/testsuite/gcc.dg/uninit-pred-8_d.c
  f8c4f61a7dcf75600a176b4dab26db57  gcc/testsuite/gcc.dg/uninit-pred-9_a.c
! c2d9ec976494d9c7d7650dfbdb043fb3  gcc/testsuite/gcc.dg/uninit-pred-9_b.c
  bc7ca58b23b9c0a381b714ac4dc2ca9f  gcc/testsuite/gcc.dg/uninit-suppress.c
  5e843957c9ab050cc934b752246d8cf9  gcc/testsuite/gcc.dg/uninit-suppress_2.c
  b0e2e79211806d4afcda9cf5d4d4dcb6  gcc/testsuite/gcc.dg/uninit-suppress_3.c
*************** b06bbb6143a3be2dc6987b5a4cda943c  gcc/te
*** 48009,48015 ****
  63055f2f2246daecb801ed30dfa937b1  gcc/testsuite/gcc.dg/vect/bb-slp-65.c
  a69c2c27919262d61df10eca968ae56c  gcc/testsuite/gcc.dg/vect/bb-slp-66.c
  57b252f3073ef6efcb04277b95ebb03d  gcc/testsuite/gcc.dg/vect/bb-slp-67.c
! 4daa025752ce1d42970810c3e737fa78  gcc/testsuite/gcc.dg/vect/bb-slp-68.c
  15ebcb1640864f38fb35c69c5a64c16d  gcc/testsuite/gcc.dg/vect/bb-slp-69.c
  e07b4d2c5c7b96559385582969530695  gcc/testsuite/gcc.dg/vect/bb-slp-7.c
  385cc9557f6c95e0dd210863bce477a0  gcc/testsuite/gcc.dg/vect/bb-slp-70.c
--- 51173,51179 ----
  63055f2f2246daecb801ed30dfa937b1  gcc/testsuite/gcc.dg/vect/bb-slp-65.c
  a69c2c27919262d61df10eca968ae56c  gcc/testsuite/gcc.dg/vect/bb-slp-66.c
  57b252f3073ef6efcb04277b95ebb03d  gcc/testsuite/gcc.dg/vect/bb-slp-67.c
! d0e02a661312441465b49fcd58bd789f  gcc/testsuite/gcc.dg/vect/bb-slp-68.c
  15ebcb1640864f38fb35c69c5a64c16d  gcc/testsuite/gcc.dg/vect/bb-slp-69.c
  e07b4d2c5c7b96559385582969530695  gcc/testsuite/gcc.dg/vect/bb-slp-7.c
  385cc9557f6c95e0dd210863bce477a0  gcc/testsuite/gcc.dg/vect/bb-slp-70.c
*************** e25a8f3320f641e5055cfc1e0a955c40  gcc/te
*** 48022,48030 ****
  74399495ff8f4034fefd09f665413168  gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
  19ee53d59cf6e245a1708525a8887b01  gcc/testsuite/gcc.dg/vect/bb-slp-9.c
  8809855af1ea14173db1668e1ebb3c33  gcc/testsuite/gcc.dg/vect/bb-slp-bool-1.c
! d50b6198d0ab7f141d0ca1fe2c25c55e  gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
  1b5ff799161e9971d6bd28bec8d16440  gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
  d840a44aa42e8dbf05f710b4031b11a1  gcc/testsuite/gcc.dg/vect/bb-slp-div-2.c
  7c41afdc5735a359182f9e762fce7639  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-1.c
  da7b4fa15b104e471f4ae118b8378eb1  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-2.c
  c311453bfa9e07fb29dd6981eaaf350d  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
--- 51186,51215 ----
  74399495ff8f4034fefd09f665413168  gcc/testsuite/gcc.dg/vect/bb-slp-8b.c
  19ee53d59cf6e245a1708525a8887b01  gcc/testsuite/gcc.dg/vect/bb-slp-9.c
  8809855af1ea14173db1668e1ebb3c33  gcc/testsuite/gcc.dg/vect/bb-slp-bool-1.c
! f8db9d15b58a75bf595dae1f3f511417  gcc/testsuite/gcc.dg/vect/bb-slp-cond-1.c
  1b5ff799161e9971d6bd28bec8d16440  gcc/testsuite/gcc.dg/vect/bb-slp-div-1.c
  d840a44aa42e8dbf05f710b4031b11a1  gcc/testsuite/gcc.dg/vect/bb-slp-div-2.c
+ 4e9145a07928809fe075b3bb341ee40f  gcc/testsuite/gcc.dg/vect/bb-slp-layout-1.c
+ fdb302dac16d725a294ed7100f24988a  gcc/testsuite/gcc.dg/vect/bb-slp-layout-10.c
+ 3c8d097fc35a0f696a25ed1977b59c8c  gcc/testsuite/gcc.dg/vect/bb-slp-layout-11.c
+ 82c54fa9d5fd0082e94ab725e93b5014  gcc/testsuite/gcc.dg/vect/bb-slp-layout-12.c
+ fee5e11873bf1f4845414b0d38912b37  gcc/testsuite/gcc.dg/vect/bb-slp-layout-13.c
+ c8ed8e9e4250f08b918c56bfef4b7a7f  gcc/testsuite/gcc.dg/vect/bb-slp-layout-14.c
+ 88487b31ffeb949303792ef3923ad196  gcc/testsuite/gcc.dg/vect/bb-slp-layout-15.c
+ 0e8f57e36bc8448e80035b833a363fe7  gcc/testsuite/gcc.dg/vect/bb-slp-layout-16.c
+ 43e9ffb9410d050942d09e445ee46ffa  gcc/testsuite/gcc.dg/vect/bb-slp-layout-17.c
+ 3afdb69243343b45ef93e502063ebf7e  gcc/testsuite/gcc.dg/vect/bb-slp-layout-18.c
+ cb45a80ec54e79ec32e9eb3b3ab3ff58  gcc/testsuite/gcc.dg/vect/bb-slp-layout-19.c
+ 55c6129299ee94434b97edc3312d1563  gcc/testsuite/gcc.dg/vect/bb-slp-layout-2.c
+ 9e1acf425f12a0a63d6844e356ebdb18  gcc/testsuite/gcc.dg/vect/bb-slp-layout-20.c
+ d14dd3c8c51616e1a7455ce0faa962c7  gcc/testsuite/gcc.dg/vect/bb-slp-layout-21.c
+ 8e304a5307ad211a0aedbaa5f617fed8  gcc/testsuite/gcc.dg/vect/bb-slp-layout-3.c
+ fb9f98e21cb8e41e8aac090c292612b6  gcc/testsuite/gcc.dg/vect/bb-slp-layout-4.c
+ 6f3088d1b383c652c81ac7d8da518e95  gcc/testsuite/gcc.dg/vect/bb-slp-layout-5.c
+ adb8e3246d18d18c606b9853f2a369a1  gcc/testsuite/gcc.dg/vect/bb-slp-layout-6.c
+ bf93022bc801116cb5c896bd159f9325  gcc/testsuite/gcc.dg/vect/bb-slp-layout-7.c
+ 586550b9ffd6fb956900d17ebaed8ca9  gcc/testsuite/gcc.dg/vect/bb-slp-layout-8.c
+ ca338e02e0e7f8d2527742eb4245b399  gcc/testsuite/gcc.dg/vect/bb-slp-layout-9.c
  7c41afdc5735a359182f9e762fce7639  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-1.c
  da7b4fa15b104e471f4ae118b8378eb1  gcc/testsuite/gcc.dg/vect/bb-slp-over-widen-2.c
  c311453bfa9e07fb29dd6981eaaf350d  gcc/testsuite/gcc.dg/vect/bb-slp-pattern-1.c
*************** d073ebbe7b155eb721f58facf72de8c5  gcc/te
*** 48036,48053 ****
  937488d605d0957aa4f93e7419efeefb  gcc/testsuite/gcc.dg/vect/bb-slp-pr101242.c
  a393de493a44969dd08e807805513df0  gcc/testsuite/gcc.dg/vect/bb-slp-pr101615-1.c
  bdedf0ea0dbf21fbeaa20a6ae82af692  gcc/testsuite/gcc.dg/vect/bb-slp-pr101615-2.c
  cf1f520661c5242475d0a36f640664dd  gcc/testsuite/gcc.dg/vect/bb-slp-pr101756.c
  5295b6a2a7e93bc6dfe10ebdd01406b8  gcc/testsuite/gcc.dg/vect/bb-slp-pr103800.c
! d099da16826a37fbc0c63adf0bc3ca88  gcc/testsuite/gcc.dg/vect/bb-slp-pr54400.c
  5472e7bf338627077f4e6ce8cce9944e  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
  416b7cfbbbbca3664b53c4942dfd6f6d  gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
  a3000cd864ecf8f7a3037fec3f0ac388  gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c
  1d3aaf7003b6ad6834ed135c4c749cac  gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
  7bde18f16db8ba76291d8ca502888f3e  gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
  9abc16eaff706d04389dd061cf9b1d1b  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-1.c
! c1bab5326da7d18b750a45bf3ffc6edc  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
  bb2e6913bb62e062ec8f4a7171326362  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
! 4263db4494be1cde99ddba5572d3113b  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
  77b3fe616e2da5b96ef0a5422f10f67c  gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
  3ac66e7d12525b6746af51507c570d90  gcc/testsuite/gcc.dg/vect/bb-slp-pr92596.c
  6628429c4ae70acf5a0a3f8a70698be4  gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c
--- 51221,51241 ----
  937488d605d0957aa4f93e7419efeefb  gcc/testsuite/gcc.dg/vect/bb-slp-pr101242.c
  a393de493a44969dd08e807805513df0  gcc/testsuite/gcc.dg/vect/bb-slp-pr101615-1.c
  bdedf0ea0dbf21fbeaa20a6ae82af692  gcc/testsuite/gcc.dg/vect/bb-slp-pr101615-2.c
+ a225231bf09f735228bcd507754e255a  gcc/testsuite/gcc.dg/vect/bb-slp-pr101668.c
  cf1f520661c5242475d0a36f640664dd  gcc/testsuite/gcc.dg/vect/bb-slp-pr101756.c
  5295b6a2a7e93bc6dfe10ebdd01406b8  gcc/testsuite/gcc.dg/vect/bb-slp-pr103800.c
! be86bc81622216478087ebb0eb3b5c80  gcc/testsuite/gcc.dg/vect/bb-slp-pr104240.c
! 272eb771300120bc0b0190d7c82879d6  gcc/testsuite/gcc.dg/vect/bb-slp-pr106019.c
! 3fdbb9f95d28ae07799a0c2627ff805d  gcc/testsuite/gcc.dg/vect/bb-slp-pr54400.c
  5472e7bf338627077f4e6ce8cce9944e  gcc/testsuite/gcc.dg/vect/bb-slp-pr58135.c
  416b7cfbbbbca3664b53c4942dfd6f6d  gcc/testsuite/gcc.dg/vect/bb-slp-pr65935.c
  a3000cd864ecf8f7a3037fec3f0ac388  gcc/testsuite/gcc.dg/vect/bb-slp-pr69907.c
  1d3aaf7003b6ad6834ed135c4c749cac  gcc/testsuite/gcc.dg/vect/bb-slp-pr78205.c
  7bde18f16db8ba76291d8ca502888f3e  gcc/testsuite/gcc.dg/vect/bb-slp-pr80705.c
  9abc16eaff706d04389dd061cf9b1d1b  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-1.c
! aaed398efad175a431775f6f65ef5cfc  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-2.c
  bb2e6913bb62e062ec8f4a7171326362  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-3.c
! dd22f4fbb5e5a16296ec833b8840b9a6  gcc/testsuite/gcc.dg/vect/bb-slp-pr81635-4.c
  77b3fe616e2da5b96ef0a5422f10f67c  gcc/testsuite/gcc.dg/vect/bb-slp-pr90006.c
  3ac66e7d12525b6746af51507c570d90  gcc/testsuite/gcc.dg/vect/bb-slp-pr92596.c
  6628429c4ae70acf5a0a3f8a70698be4  gcc/testsuite/gcc.dg/vect/bb-slp-pr95271.c
*************** f458c4bd5bf3886b45d0ca62da2ba1ff  gcc/te
*** 48073,48079 ****
  61b5bdbfdffd17b15f9ffe274ebb887e  gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c
  76ca89dbf04b0da54f93449816c40139  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
  6f206346ceb24c5ac1795b0003f74f55  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
! f511c5e3bf05877e92e7c9fb18acc107  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
  303f98baa99ca71b360bb5b490edf989  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c
  4de1e012f6eb5ea19ca369f6fcf4e1c5  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c
  211bc477e9c121e47269e80a88557f74  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
--- 51261,51267 ----
  61b5bdbfdffd17b15f9ffe274ebb887e  gcc/testsuite/gcc.dg/vect/bb-slp-pr98854.c
  76ca89dbf04b0da54f93449816c40139  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-1.c
  6f206346ceb24c5ac1795b0003f74f55  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-2.c
! 1d4bc9f1de300fbdc340417100930d00  gcc/testsuite/gcc.dg/vect/bb-slp-subgroups-3.c
  303f98baa99ca71b360bb5b490edf989  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-int.c
  4de1e012f6eb5ea19ca369f6fcf4e1c5  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-long.c
  211bc477e9c121e47269e80a88557f74  gcc/testsuite/gcc.dg/vect/complex/bb-slp-complex-add-pattern-short.c
*************** d296c18a5121519fc5fa6c393b6ca043  gcc/te
*** 48087,48099 ****
  62214c964d5fe67dd941ceaf38c0af04  gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c
  1b2da204849f9a4b044381276b99053b  gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c
  b663bc81b4270defc2534ee4b697c313  gcc/testsuite/gcc.dg/vect/complex/complex-operations.c
! 76b26c82429e17d3ec4bfaf8e24f4530  gcc/testsuite/gcc.dg/vect/complex/complex.exp
  6731d6a4275dee04a68d8a15040dbf9d  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
  e7e998e227aa0d1f54e5abb40415b355  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c
  315119e00b97000fb6f371f5ae9b2515  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c
  1348c7c393221492d645b88dd87e4c90  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c
  37c05e5942cf108df1659e4ccfbe29c4  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c
! ba621e253c3a6a4dd667ac55ec84a2e0  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c
  092651583077a4d3f14105ecd53b0042  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c
  0532e123a1e9bee598bcc9fe42fb8b7f  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c
  071e3059211d80112c0ec46775e51fb0  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c
--- 51275,51287 ----
  62214c964d5fe67dd941ceaf38c0af04  gcc/testsuite/gcc.dg/vect/complex/complex-mul-template.c
  1b2da204849f9a4b044381276b99053b  gcc/testsuite/gcc.dg/vect/complex/complex-operations-run.c
  b663bc81b4270defc2534ee4b697c313  gcc/testsuite/gcc.dg/vect/complex/complex-operations.c
! b5fc87074676c97d4f7c80a4314bab8f  gcc/testsuite/gcc.dg/vect/complex/complex.exp
  6731d6a4275dee04a68d8a15040dbf9d  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-double.c
  e7e998e227aa0d1f54e5abb40415b355  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-float.c
  315119e00b97000fb6f371f5ae9b2515  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-half-float.c
  1348c7c393221492d645b88dd87e4c90  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-double.c
  37c05e5942cf108df1659e4ccfbe29c4  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-float.c
! 511f2255c03b2993d7e76739c0890a7d  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-add-pattern-half-float.c
  092651583077a4d3f14105ecd53b0042  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-double.c
  0532e123a1e9bee598bcc9fe42fb8b7f  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-float.c
  071e3059211d80112c0ec46775e51fb0  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mla-half-float.c
*************** f364b6fd72c7c2b91e119829fcc3d492  gcc/te
*** 48105,48111 ****
  c8c88ecb3145b5ae379a4eaf565e7867  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c
  6701638eb7c412a219993a3e49351040  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
  dc9ce49dcc6631e2eda8610ab7dcb050  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c
! b3853ba38a4c7bbd8e1e0644d0004316  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
  17681470257f21a1741d290027ee6320  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
  02549823c408c283a8ff6eeb91e102ae  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
  13f53490d24bc0b038b9cdc4de9616b5  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
--- 51293,51299 ----
  c8c88ecb3145b5ae379a4eaf565e7867  gcc/testsuite/gcc.dg/vect/complex/fast-math-bb-slp-complex-mul-half-float.c
  6701638eb7c412a219993a3e49351040  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-double.c
  dc9ce49dcc6631e2eda8610ab7dcb050  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-float.c
! ea6ecb8eb1c4807fafaeef993ad9104f  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-half-float.c
  17681470257f21a1741d290027ee6320  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-double.c
  02549823c408c283a8ff6eeb91e102ae  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-float.c
  13f53490d24bc0b038b9cdc4de9616b5  gcc/testsuite/gcc.dg/vect/complex/fast-math-complex-add-pattern-half-float.c
*************** de7dd1e584604b7bdea2dc13b43ddc14  gcc/te
*** 48141,48147 ****
  f460536507001609ab3aa91df1c958aa  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c
! aa82d81537516146583eb0052b18cbc4  gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
  f8de521e4a7696891de446aa77201098  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
  ffaf8702a4fc3b142c8b1a931c153dae  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
  d25dc6b156dd43d1cf5e1224a3abb151  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
--- 51329,51335 ----
  f460536507001609ab3aa91df1c958aa  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-33.c
  e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-68.c
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/i386/costmodel-vect-reduc-1char.c
! a40c1ee7581ca34c837ed964fa6b39e8  gcc/testsuite/gcc.dg/vect/costmodel/i386/i386-costmodel-vect.exp
  f8de521e4a7696891de446aa77201098  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a-pr63175.c
  ffaf8702a4fc3b142c8b1a931c153dae  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-bb-slp-9a.c
  d25dc6b156dd43d1cf5e1224a3abb151  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-fast-math-vect-pr29925.c
*************** d7e4207d0458ef7d643b113a4d3b67be  gcc/te
*** 48161,48171 ****
  8f22ac8bc29002f40901ab1712356e3f  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c
  9ac66f90cde8ee4865e6773bc02157e1  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
  a0cfa86bcfadab7dd7bfdc45d44a30ee  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-reduc-1char.c
! 2884e9d98d5e183e6323e475a90a0869  gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
  782f0b41429f222276333f508cb8f6be  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-alignpeel.c
  05fc220f1ddbdb4d47d859b5d07869e2  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-fast-math-vect-pr29925.c
  1cdf0d7e4e3b665e1cc3792b6ab6e912  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-1.c
! 78ebcf1d0afabda95c3f6f95505977dc  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-2.c
  45453c03b2d83b8c253a510f6a157bdd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-3.c
  220ca37927f70593ad75a493a099ae58  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-4.c
  adf307e0a12bcc8d31b97d83adb3e848  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
--- 51349,51359 ----
  8f22ac8bc29002f40901ab1712356e3f  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-76c.c
  9ac66f90cde8ee4865e6773bc02157e1  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-outer-fir.c
  a0cfa86bcfadab7dd7bfdc45d44a30ee  gcc/testsuite/gcc.dg/vect/costmodel/ppc/costmodel-vect-reduc-1char.c
! 4ffa9e791b25772b0c1da69a089e3784  gcc/testsuite/gcc.dg/vect/costmodel/ppc/ppc-costmodel-vect.exp
  782f0b41429f222276333f508cb8f6be  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-alignpeel.c
  05fc220f1ddbdb4d47d859b5d07869e2  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-fast-math-vect-pr29925.c
  1cdf0d7e4e3b665e1cc3792b6ab6e912  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-1.c
! aca7d2373617a1be34881ac1c7f666c3  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-2.c
  45453c03b2d83b8c253a510f6a157bdd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-3.c
  220ca37927f70593ad75a493a099ae58  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr104582-4.c
  adf307e0a12bcc8d31b97d83adb3e848  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-pr30843.c
*************** e8ac43ab8cf8cbf7bfd8167cf04e3b0e  gcc/te
*** 48179,48185 ****
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
  f6fdadd0ea9395aed541bf9b57b73780  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c
  8fa1df6d327c2eef9e16ea686cbebd42  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
! 0c98744d7d2ff3859ec2cc7bf6df156d  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
  82db66d96715b83f7de0d05c532b64ac  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
  c7b2ca703aba051b9a31eb848cd6195e  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
  dba914eb2c6896f87a7a3bb3e0c40c08  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
--- 51367,51373 ----
  460815bb26ae1f6c220e23de56a2d3fd  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-reduc-1char.c
  f6fdadd0ea9395aed541bf9b57b73780  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp-2.c
  8fa1df6d327c2eef9e16ea686cbebd42  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/costmodel-vect-slp.c
! cf20fe4f5d8053c0153d855d3581cb6c  gcc/testsuite/gcc.dg/vect/costmodel/x86_64/x86_64-costmodel-vect.exp
  82db66d96715b83f7de0d05c532b64ac  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-1.c
  c7b2ca703aba051b9a31eb848cd6195e  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-2.c
  dba914eb2c6896f87a7a3bb3e0c40c08  gcc/testsuite/gcc.dg/vect/fast-math-bb-slp-call-3.c
*************** fc10208c55881431e6477e4618491f9e  gcc/te
*** 48292,48304 ****
  6dcd4afc04a3078b894bd8b9273794f2  gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
  cc946be513229c842b441477d742adec  gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
  90ab4de708b524f7cbbdacf1cc401f14  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
! 06e41db63dac66d2434a37e7152187df  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
  f098c26c1e0188d733a3992b19505255  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
  91af3673bc1774acfcabeaa64650294f  gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
  d122ac18b4a3ae4813e46562ff41d564  gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
  ac90ad8f4383592387ff86cb8dbd78ce  gcc/testsuite/gcc.dg/vect/nodump-pr23073.c
  8bb8b8c5a5dd310d79c2ef7142ad2432  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
  3ecab99ec0e71cbd846419df9b53e360  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-2.c
  eef9d53f7fc64f5bf484207cbabd7414  gcc/testsuite/gcc.dg/vect/pr101145.c
  3b10b998010f5d41be4ff11dca903549  gcc/testsuite/gcc.dg/vect/pr101145.inc
  25482ceb1124b6cb3b0b4a429c5903c3  gcc/testsuite/gcc.dg/vect/pr101145_1.c
--- 51480,51493 ----
  6dcd4afc04a3078b894bd8b9273794f2  gcc/testsuite/gcc.dg/vect/no-vfa-vect-61.c
  cc946be513229c842b441477d742adec  gcc/testsuite/gcc.dg/vect/no-vfa-vect-79.c
  90ab4de708b524f7cbbdacf1cc401f14  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-1.c
! d53ba1956152b091d0556807a2646668  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-2.c
  f098c26c1e0188d733a3992b19505255  gcc/testsuite/gcc.dg/vect/no-vfa-vect-depend-3.c
  91af3673bc1774acfcabeaa64650294f  gcc/testsuite/gcc.dg/vect/no-vfa-vect-dv-2.c
  d122ac18b4a3ae4813e46562ff41d564  gcc/testsuite/gcc.dg/vect/nodump-forwprop-22.c
  ac90ad8f4383592387ff86cb8dbd78ce  gcc/testsuite/gcc.dg/vect/nodump-pr23073.c
  8bb8b8c5a5dd310d79c2ef7142ad2432  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-1.c
  3ecab99ec0e71cbd846419df9b53e360  gcc/testsuite/gcc.dg/vect/nodump-vect-opt-info-2.c
+ fe7973cef663532a2f4c56171265cdb3  gcc/testsuite/gcc.dg/vect/pr100756.c
  eef9d53f7fc64f5bf484207cbabd7414  gcc/testsuite/gcc.dg/vect/pr101145.c
  3b10b998010f5d41be4ff11dca903549  gcc/testsuite/gcc.dg/vect/pr101145.inc
  25482ceb1124b6cb3b0b4a429c5903c3  gcc/testsuite/gcc.dg/vect/pr101145_1.c
*************** ae8b9fa809bc0868516d373dbc070b85  gcc/te
*** 48313,48319 ****
  859bb5bf4a83258b4c99d26be93ed965  gcc/testsuite/gcc.dg/vect/pr102318.c
  ade348e4de25df9c33207531cf5e1270  gcc/testsuite/gcc.dg/vect/pr102832.c
  a0e8cb9f9f5598691ceabc4164c5e796  gcc/testsuite/gcc.dg/vect/pr103116-1.c
! cfaa4c4a67ed4d2706caf5ad80e52e9a  gcc/testsuite/gcc.dg/vect/pr103116-2.c
  dcd21bad9a0ccaa6b61cc26ae10498ab  gcc/testsuite/gcc.dg/vect/pr103253.c
  3027554c675b698964371551d4c242aa  gcc/testsuite/gcc.dg/vect/pr103494.c
  167997ae7fe74f3c29652d5e227a608e  gcc/testsuite/gcc.dg/vect/pr103517.c
--- 51502,51508 ----
  859bb5bf4a83258b4c99d26be93ed965  gcc/testsuite/gcc.dg/vect/pr102318.c
  ade348e4de25df9c33207531cf5e1270  gcc/testsuite/gcc.dg/vect/pr102832.c
  a0e8cb9f9f5598691ceabc4164c5e796  gcc/testsuite/gcc.dg/vect/pr103116-1.c
! 2bbd32b8c8033313c86d1d790164d79f  gcc/testsuite/gcc.dg/vect/pr103116-2.c
  dcd21bad9a0ccaa6b61cc26ae10498ab  gcc/testsuite/gcc.dg/vect/pr103253.c
  3027554c675b698964371551d4c242aa  gcc/testsuite/gcc.dg/vect/pr103494.c
  167997ae7fe74f3c29652d5e227a608e  gcc/testsuite/gcc.dg/vect/pr103517.c
*************** fd7e1b94d8c4315a2364eebdd0c788df  gcc/te
*** 48327,48334 ****
  860f8bb39577a05db59d8465da979c26  gcc/testsuite/gcc.dg/vect/pr104112-2.c
  b53f19c5cce29955511b5d817d2f0418  gcc/testsuite/gcc.dg/vect/pr104152.c
  793fae35b1a1e920435aac3954c23d69  gcc/testsuite/gcc.dg/vect/pr104445.c
  1e8e221275bfa8e8dc66a37d14f07f32  gcc/testsuite/gcc.dg/vect/pr104782.c
! a8f46ae0bf8ccd4ca742a85a90e2d052  gcc/testsuite/gcc.dg/vect/pr105219.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  3aed50f38aa86c4915d6e4b3cef91287  gcc/testsuite/gcc.dg/vect/pr18400.c
--- 51516,51542 ----
  860f8bb39577a05db59d8465da979c26  gcc/testsuite/gcc.dg/vect/pr104112-2.c
  b53f19c5cce29955511b5d817d2f0418  gcc/testsuite/gcc.dg/vect/pr104152.c
  793fae35b1a1e920435aac3954c23d69  gcc/testsuite/gcc.dg/vect/pr104445.c
+ d69269cb4ebabc5a087a077a3f160d36  gcc/testsuite/gcc.dg/vect/pr104595.c
  1e8e221275bfa8e8dc66a37d14f07f32  gcc/testsuite/gcc.dg/vect/pr104782.c
! 98736a2db3fdc5e7b1063193abafc00f  gcc/testsuite/gcc.dg/vect/pr105219.c
! 1677ed7c45e6703fe35e0c2366f6bb59  gcc/testsuite/gcc.dg/vect/pr106250.c
! a82282f2fe95b4b06a700f2c046471b0  gcc/testsuite/gcc.dg/vect/pr106914.c
! 65b4f8979f34c05baa567391729a83e6  gcc/testsuite/gcc.dg/vect/pr107160.c
! f1c2ca8659ed33069fed7de6e429bc7e  gcc/testsuite/gcc.dg/vect/pr107212-1.c
! 4d42750e9517b302a0544999b3f7fcc1  gcc/testsuite/gcc.dg/vect/pr107212-2.c
! c39e8942cd73a8d2514fd1c87f13f049  gcc/testsuite/gcc.dg/vect/pr107229-1.c
! cd5ad38c33be8ec2737a203e34259a0f  gcc/testsuite/gcc.dg/vect/pr107229-2.c
! e35b2631434308a15ce0dad177058fce  gcc/testsuite/gcc.dg/vect/pr107229-3.c
! 3c65fd30511b27e342b70dfbe944b960  gcc/testsuite/gcc.dg/vect/pr107275.c
! c65533e1ccb5c102bc25ce3dc93172d8  gcc/testsuite/gcc.dg/vect/pr107302.c
! f2b4fd422f1a8a843040f86cce9edfa2  gcc/testsuite/gcc.dg/vect/pr107326.c
! ccbd4ad0ec4d5c7d66ae8a17324026a8  gcc/testsuite/gcc.dg/vect/pr108314.c
! a1aac4d2d18c86d4f8a2b483d19f6571  gcc/testsuite/gcc.dg/vect/pr108316.c
! e131976da53307331b69c03e9c64cc4a  gcc/testsuite/gcc.dg/vect/pr108608.c
! bdc9d900f60b3777cfec5cd1a41102d7  gcc/testsuite/gcc.dg/vect/pr108950.c
! 4c3bfccc66bd917fd713c2ef21b62992  gcc/testsuite/gcc.dg/vect/pr109025.c
! bce13fdf2ea61a0bc1886470eed1bf60  gcc/testsuite/gcc.dg/vect/pr109473.c
! aa0a603e6aee5b8a3fd3463354c9bf10  gcc/testsuite/gcc.dg/vect/pr109502.c
  42d48d2ecd5682545b12ac42f879a831  gcc/testsuite/gcc.dg/vect/pr16105.c
  231c99dba9475fe09525bbf6f4374124  gcc/testsuite/gcc.dg/vect/pr18308.c
  3aed50f38aa86c4915d6e4b3cef91287  gcc/testsuite/gcc.dg/vect/pr18400.c
*************** bcd16b0fa588b7a812873ef0ae64bd86  gcc/te
*** 48374,48380 ****
  d24482a9f820b34b4c664d7caff34295  gcc/testsuite/gcc.dg/vect/pr33833.c
  f2e384b79e71e99d03856813309aa20e  gcc/testsuite/gcc.dg/vect/pr33846.c
  2fddacf1bdf2f2af653ce8577f6b0c31  gcc/testsuite/gcc.dg/vect/pr33866.c
! 826738aee8939e20001cedc33a066356  gcc/testsuite/gcc.dg/vect/pr33953.c
  5f35540decc25ee08577e713fc035432  gcc/testsuite/gcc.dg/vect/pr34005.c
  a46ff63fc3b27434f0db611d79725ce2  gcc/testsuite/gcc.dg/vect/pr34195.c
  532c718a12954eae2d0db8ddd9a342b0  gcc/testsuite/gcc.dg/vect/pr34407.c
--- 51582,51588 ----
  d24482a9f820b34b4c664d7caff34295  gcc/testsuite/gcc.dg/vect/pr33833.c
  f2e384b79e71e99d03856813309aa20e  gcc/testsuite/gcc.dg/vect/pr33846.c
  2fddacf1bdf2f2af653ce8577f6b0c31  gcc/testsuite/gcc.dg/vect/pr33866.c
! c72b8a05de9a05a8d17fc8c92c066375  gcc/testsuite/gcc.dg/vect/pr33953.c
  5f35540decc25ee08577e713fc035432  gcc/testsuite/gcc.dg/vect/pr34005.c
  a46ff63fc3b27434f0db611d79725ce2  gcc/testsuite/gcc.dg/vect/pr34195.c
  532c718a12954eae2d0db8ddd9a342b0  gcc/testsuite/gcc.dg/vect/pr34407.c
*************** d13429b3781bb8b350e71ceb1d17df1a  gcc/te
*** 48518,48525 ****
  2e7cb88c0ae683eecc30f2b1f201c579  gcc/testsuite/gcc.dg/vect/pr65947-1.c
  f1737214fc8112b3443c76973fecf514  gcc/testsuite/gcc.dg/vect/pr65947-10.c
  a13016b360e8964d5f476e90b028d5e5  gcc/testsuite/gcc.dg/vect/pr65947-11.c
! bf27f5d9c8bd924bf85879ae5cf60cc7  gcc/testsuite/gcc.dg/vect/pr65947-12.c
! 70ce5dd89f8693e7cb1d1a56fa800358  gcc/testsuite/gcc.dg/vect/pr65947-13.c
  0444ea4cd1d517faad3350085077f8ca  gcc/testsuite/gcc.dg/vect/pr65947-14.c
  d036d0bbc6468e18bdb62cb3b4289dc7  gcc/testsuite/gcc.dg/vect/pr65947-2.c
  82379586f666c9edccfb38a83aa8bb11  gcc/testsuite/gcc.dg/vect/pr65947-3.c
--- 51726,51733 ----
  2e7cb88c0ae683eecc30f2b1f201c579  gcc/testsuite/gcc.dg/vect/pr65947-1.c
  f1737214fc8112b3443c76973fecf514  gcc/testsuite/gcc.dg/vect/pr65947-10.c
  a13016b360e8964d5f476e90b028d5e5  gcc/testsuite/gcc.dg/vect/pr65947-11.c
! 3b2d61166bf7bcb519d4252b58a56ffd  gcc/testsuite/gcc.dg/vect/pr65947-12.c
! 835c1397b93dfc9716446a50b49777b9  gcc/testsuite/gcc.dg/vect/pr65947-13.c
  0444ea4cd1d517faad3350085077f8ca  gcc/testsuite/gcc.dg/vect/pr65947-14.c
  d036d0bbc6468e18bdb62cb3b4289dc7  gcc/testsuite/gcc.dg/vect/pr65947-2.c
  82379586f666c9edccfb38a83aa8bb11  gcc/testsuite/gcc.dg/vect/pr65947-3.c
*************** a12062986be1b14e66db717db5cdadba  gcc/te
*** 48579,48585 ****
  e805f67ead2894c44bccccd340803cfc  gcc/testsuite/gcc.dg/vect/pr79887.c
  edbdd45bd957dd2181f8bbebe5b66f82  gcc/testsuite/gcc.dg/vect/pr79920.c
  c4f04d47e0c0be544b6ac473f0645e04  gcc/testsuite/gcc.dg/vect/pr80631-1.c
! 062f90bf6481fe30df25449e85340b37  gcc/testsuite/gcc.dg/vect/pr80631-2.c
  6e21e500860ba90d3c89edc03a134816  gcc/testsuite/gcc.dg/vect/pr80815-1.c
  736948611ba2161e516a3e99760aa173  gcc/testsuite/gcc.dg/vect/pr80815-2.c
  39fbed119a918e618964fa9ab4e4d72d  gcc/testsuite/gcc.dg/vect/pr80815-3.c
--- 51787,51793 ----
  e805f67ead2894c44bccccd340803cfc  gcc/testsuite/gcc.dg/vect/pr79887.c
  edbdd45bd957dd2181f8bbebe5b66f82  gcc/testsuite/gcc.dg/vect/pr79920.c
  c4f04d47e0c0be544b6ac473f0645e04  gcc/testsuite/gcc.dg/vect/pr80631-1.c
! 9f4ef732c9f5f6f60071db8372930150  gcc/testsuite/gcc.dg/vect/pr80631-2.c
  6e21e500860ba90d3c89edc03a134816  gcc/testsuite/gcc.dg/vect/pr80815-1.c
  736948611ba2161e516a3e99760aa173  gcc/testsuite/gcc.dg/vect/pr80815-2.c
  39fbed119a918e618964fa9ab4e4d72d  gcc/testsuite/gcc.dg/vect/pr80815-3.c
*************** c5cc63b339d4d79237ce6ae9795568aa  gcc/te
*** 48715,48728 ****
  ecf30a3d5633aea4fdce036a11b8e64f  gcc/testsuite/gcc.dg/vect/pr98848.c
  32439212bff1056b7d07e9de23c2f3df  gcc/testsuite/gcc.dg/vect/pr99102.c
  1906ecaca4ed41844bbfad6d9289b6e2  gcc/testsuite/gcc.dg/vect/pr99253.c
  24dbffd92c63e8683ef23b5143e0d607  gcc/testsuite/gcc.dg/vect/pr99540.c
  aefd4bda7e5d3e855da2011fb58b8c47  gcc/testsuite/gcc.dg/vect/pr99856.c
  32d06c886c85516fbdce4ca1bd516496  gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
  d7c598d838a7c98392febc88239e2769  gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
  cd2f0240aaa18dda8ac3a18459c93d29  gcc/testsuite/gcc.dg/vect/slp-1.c
  7f23b9b51779dc0a435fe7f7eb32b0e8  gcc/testsuite/gcc.dg/vect/slp-10.c
! 731c52b0ee675b8bd3f075148fc17648  gcc/testsuite/gcc.dg/vect/slp-11a.c
! cbaf41448f4bde0514a14267e3afb6bc  gcc/testsuite/gcc.dg/vect/slp-11b.c
  639970eabd19badb89a03efd21ba873c  gcc/testsuite/gcc.dg/vect/slp-11c.c
  ba897d8c2f0b0e987a99c1e033948730  gcc/testsuite/gcc.dg/vect/slp-12a.c
  aee19441d8ce48ddc2771a5390cca482  gcc/testsuite/gcc.dg/vect/slp-12b.c
--- 51923,51937 ----
  ecf30a3d5633aea4fdce036a11b8e64f  gcc/testsuite/gcc.dg/vect/pr98848.c
  32439212bff1056b7d07e9de23c2f3df  gcc/testsuite/gcc.dg/vect/pr99102.c
  1906ecaca4ed41844bbfad6d9289b6e2  gcc/testsuite/gcc.dg/vect/pr99253.c
+ 000173f450d34bba06b07317e128469c  gcc/testsuite/gcc.dg/vect/pr99412.c
  24dbffd92c63e8683ef23b5143e0d607  gcc/testsuite/gcc.dg/vect/pr99540.c
  aefd4bda7e5d3e855da2011fb58b8c47  gcc/testsuite/gcc.dg/vect/pr99856.c
  32d06c886c85516fbdce4ca1bd516496  gcc/testsuite/gcc.dg/vect/section-anchors-pr27770.c
  d7c598d838a7c98392febc88239e2769  gcc/testsuite/gcc.dg/vect/section-anchors-vect-69.c
  cd2f0240aaa18dda8ac3a18459c93d29  gcc/testsuite/gcc.dg/vect/slp-1.c
  7f23b9b51779dc0a435fe7f7eb32b0e8  gcc/testsuite/gcc.dg/vect/slp-10.c
! 75ee84147bff16154172aea7e7e9ce3a  gcc/testsuite/gcc.dg/vect/slp-11a.c
! bcc1565365a52a580ef234e60732045c  gcc/testsuite/gcc.dg/vect/slp-11b.c
  639970eabd19badb89a03efd21ba873c  gcc/testsuite/gcc.dg/vect/slp-11c.c
  ba897d8c2f0b0e987a99c1e033948730  gcc/testsuite/gcc.dg/vect/slp-12a.c
  aee19441d8ce48ddc2771a5390cca482  gcc/testsuite/gcc.dg/vect/slp-12b.c
*************** e5e1221b0f3db24e3f3bf9735cf578a4  gcc/te
*** 48748,48754 ****
  140aa4e68ff44957bad070a78e984763  gcc/testsuite/gcc.dg/vect/slp-26.c
  40b78b95123cd9af1a6de9646a0e2d0e  gcc/testsuite/gcc.dg/vect/slp-28.c
  620f25efe383cf052fc165488dc172ac  gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
! 4ba28475c657da51f041add82c2f4b91  gcc/testsuite/gcc.dg/vect/slp-3.c
  f1371cb78bd8406146bf5d3be6ca8a13  gcc/testsuite/gcc.dg/vect/slp-33.c
  a8ca70fc391abd3a49dd54f752958fa2  gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
  a5429ab06c5986c2e0271c3a6f4c6cf0  gcc/testsuite/gcc.dg/vect/slp-34.c
--- 51957,51963 ----
  140aa4e68ff44957bad070a78e984763  gcc/testsuite/gcc.dg/vect/slp-26.c
  40b78b95123cd9af1a6de9646a0e2d0e  gcc/testsuite/gcc.dg/vect/slp-28.c
  620f25efe383cf052fc165488dc172ac  gcc/testsuite/gcc.dg/vect/slp-3-big-array.c
! d155e7a306b63e41a94a1696a3d2ddcd  gcc/testsuite/gcc.dg/vect/slp-3.c
  f1371cb78bd8406146bf5d3be6ca8a13  gcc/testsuite/gcc.dg/vect/slp-33.c
  a8ca70fc391abd3a49dd54f752958fa2  gcc/testsuite/gcc.dg/vect/slp-34-big-array.c
  a5429ab06c5986c2e0271c3a6f4c6cf0  gcc/testsuite/gcc.dg/vect/slp-34.c
*************** fae76ca272ca1d56a1750929315ad201  gcc/te
*** 48783,48789 ****
  128dd7ca21c17a4f31443f1f3ae6a233  gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
  378fd3c047a4e11988b5916b89079e54  gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
  36720b86229f187364440189c978bdb7  gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
! 80bbb2cd6658321995687dd919648137  gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
  611fa558934babaeccf3ebcc805c085a  gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
  c3b3a41e54fbfae2cbdac1a7285c0ca4  gcc/testsuite/gcc.dg/vect/slp-multitypes-13.c
  409aa5591bdee4aacf2a5aa83d03e9f9  gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
--- 51992,51998 ----
  128dd7ca21c17a4f31443f1f3ae6a233  gcc/testsuite/gcc.dg/vect/slp-multitypes-1.c
  378fd3c047a4e11988b5916b89079e54  gcc/testsuite/gcc.dg/vect/slp-multitypes-10.c
  36720b86229f187364440189c978bdb7  gcc/testsuite/gcc.dg/vect/slp-multitypes-11-big-array.c
! 2984ea81250ef4a7d4116170eec3ba6b  gcc/testsuite/gcc.dg/vect/slp-multitypes-11.c
  611fa558934babaeccf3ebcc805c085a  gcc/testsuite/gcc.dg/vect/slp-multitypes-12.c
  c3b3a41e54fbfae2cbdac1a7285c0ca4  gcc/testsuite/gcc.dg/vect/slp-multitypes-13.c
  409aa5591bdee4aacf2a5aa83d03e9f9  gcc/testsuite/gcc.dg/vect/slp-multitypes-2.c
*************** b0dbfa6cdc6dde5390e046d7232b175a  gcc/te
*** 48804,48810 ****
  e9bb13be425e14161749170fa87ec0f6  gcc/testsuite/gcc.dg/vect/slp-perm-5.c
  ed9aee5045ea1db454e98a0a75bb0595  gcc/testsuite/gcc.dg/vect/slp-perm-6.c
  46764cca553d4fe0718067fb18004da4  gcc/testsuite/gcc.dg/vect/slp-perm-7.c
! 12acbe40978aea85a359e0398284e3c2  gcc/testsuite/gcc.dg/vect/slp-perm-8.c
  bc336869608effbadcb614ac30fd0f2c  gcc/testsuite/gcc.dg/vect/slp-perm-9.c
  15dec799e753a2ad77b96874b96dc1c8  gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
  e33d9305ff87bf0b76410ea5729955bf  gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
--- 52013,52019 ----
  e9bb13be425e14161749170fa87ec0f6  gcc/testsuite/gcc.dg/vect/slp-perm-5.c
  ed9aee5045ea1db454e98a0a75bb0595  gcc/testsuite/gcc.dg/vect/slp-perm-6.c
  46764cca553d4fe0718067fb18004da4  gcc/testsuite/gcc.dg/vect/slp-perm-7.c
! 5730fe935f21cd67726d3798f0b6d166  gcc/testsuite/gcc.dg/vect/slp-perm-8.c
  bc336869608effbadcb614ac30fd0f2c  gcc/testsuite/gcc.dg/vect/slp-perm-9.c
  15dec799e753a2ad77b96874b96dc1c8  gcc/testsuite/gcc.dg/vect/slp-reduc-1.c
  e33d9305ff87bf0b76410ea5729955bf  gcc/testsuite/gcc.dg/vect/slp-reduc-10a.c
*************** c4e2f923d33c5b7b33949455e9f92e65  gcc/te
*** 48815,48821 ****
  72470473142b614c9abbb4961ae363e0  gcc/testsuite/gcc.dg/vect/slp-reduc-11.c
  c2dfc1561d3c84ccf7888c7ec864dca3  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
  75285f8513469a815d923eef56a5a8ac  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
! 59ddba033e6520d7023e0cc4cf50f919  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
  1b5987e80f4b7de162d30d061e5a4354  gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
  e0e83977857b0d99ff7820be33d715b3  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
  40e5371238678c762c14d45c232ab7d3  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
--- 52024,52030 ----
  72470473142b614c9abbb4961ae363e0  gcc/testsuite/gcc.dg/vect/slp-reduc-11.c
  c2dfc1561d3c84ccf7888c7ec864dca3  gcc/testsuite/gcc.dg/vect/slp-reduc-2.c
  75285f8513469a815d923eef56a5a8ac  gcc/testsuite/gcc.dg/vect/slp-reduc-3.c
! 922cbd15ae104261be30cbbf32336d93  gcc/testsuite/gcc.dg/vect/slp-reduc-4.c
  1b5987e80f4b7de162d30d061e5a4354  gcc/testsuite/gcc.dg/vect/slp-reduc-5.c
  e0e83977857b0d99ff7820be33d715b3  gcc/testsuite/gcc.dg/vect/slp-reduc-6.c
  40e5371238678c762c14d45c232ab7d3  gcc/testsuite/gcc.dg/vect/slp-reduc-7.c
*************** da6b49438769df265a4a0896419569eb  gcc/te
*** 48826,48832 ****
  ebf9a4af438eb418680812f064e4b6b0  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
  b959bf9c495c51757df862405bcd0437  gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
  d1b21b9400153596e0d058bf048e9911  gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
! 2bd2abe5cf6ada1b3333906ec59ad0d1  gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
  c98bf5e8cdb13d002ce5b474539328d2  gcc/testsuite/gcc.dg/vect/tree-vect.h
  e89cc050a04f95cc194e9469aa72808f  gcc/testsuite/gcc.dg/vect/tsvc/license.txt
  a7d3e97da65f4dfe42449b901cf9215b  gcc/testsuite/gcc.dg/vect/tsvc/tsvc.h
--- 52035,52041 ----
  ebf9a4af438eb418680812f064e4b6b0  gcc/testsuite/gcc.dg/vect/slp-widen-mult-half.c
  b959bf9c495c51757df862405bcd0437  gcc/testsuite/gcc.dg/vect/slp-widen-mult-s16.c
  d1b21b9400153596e0d058bf048e9911  gcc/testsuite/gcc.dg/vect/slp-widen-mult-u8.c
! 3581110ad2b3af27f54b41f9364c1e14  gcc/testsuite/gcc.dg/vect/trapv-vect-reduc-4.c
  c98bf5e8cdb13d002ce5b474539328d2  gcc/testsuite/gcc.dg/vect/tree-vect.h
  e89cc050a04f95cc194e9469aa72808f  gcc/testsuite/gcc.dg/vect/tsvc/license.txt
  a7d3e97da65f4dfe42449b901cf9215b  gcc/testsuite/gcc.dg/vect/tsvc/tsvc.h
*************** a7f2dbf580114b2f153604e7581e2acf  gcc/te
*** 48893,48904 ****
  4c435fc1c8fd55c7fae05909b4a826b4  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s235.c
  dcaf196bf79d059b531baf20e4bd7de3  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s241.c
  96c0667d45798115c6fb862dd5c94f25  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s242.c
! 1ea79033eb147ac32da8b9ea00915f1f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s243.c
  131b19be810a8bfb767545aa578b7ef8  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s244.c
  fbe1a08af29413012b695d33f50acd1c  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s251.c
! e646e348ba51cf1586471ec4ff79c177  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s252.c
  6c4318e97128d7ceac21358ef7a0ac08  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s253.c
! 1f267b0b78dfcb308ecec153e602af0f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s254.c
  2c381e103fb4bc210b8893a0e3694b5d  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s255.c
  607d0e9c1c3547b8e384fcc149ea0adc  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s256.c
  c34e9a7ae92c1e585ce20ab7d630e069  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s257.c
--- 52102,52113 ----
  4c435fc1c8fd55c7fae05909b4a826b4  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s235.c
  dcaf196bf79d059b531baf20e4bd7de3  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s241.c
  96c0667d45798115c6fb862dd5c94f25  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s242.c
! 47d237c29cb7dae067162bde8f8dcc5c  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s243.c
  131b19be810a8bfb767545aa578b7ef8  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s244.c
  fbe1a08af29413012b695d33f50acd1c  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s251.c
! 16808db49d694bcb7fa2388f2b27cae0  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s252.c
  6c4318e97128d7ceac21358ef7a0ac08  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s253.c
! 4244ba9876785c75a498ff49318fb37f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s254.c
  2c381e103fb4bc210b8893a0e3694b5d  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s255.c
  607d0e9c1c3547b8e384fcc149ea0adc  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s256.c
  c34e9a7ae92c1e585ce20ab7d630e069  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s257.c
*************** b4e1a61bab611e31beed78edb6d07e2f  gcc/te
*** 48917,48923 ****
  7981ad0f8f86f890e7ead1c0e91a467d  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s278.c
  f3cf46b7cb75f0d802320c0f8da0e16b  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s279.c
  edde27caeb90674dfc63f9c173c1b91f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s281.c
! 17b8931fe59e36e56c8a1f57283effad  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s291.c
  487436a657a10164bf9f61b4a31677bf  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s292.c
  bb61c333ca489dc9c9ff444266758423  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s293.c
  190e37171bed3c92de9d86fa1e13fa24  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s311.c
--- 52126,52132 ----
  7981ad0f8f86f890e7ead1c0e91a467d  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s278.c
  f3cf46b7cb75f0d802320c0f8da0e16b  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s279.c
  edde27caeb90674dfc63f9c173c1b91f  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s281.c
! 96fbfc156c3b3288d2ff073c66fd45f1  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s291.c
  487436a657a10164bf9f61b4a31677bf  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s292.c
  bb61c333ca489dc9c9ff444266758423  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s293.c
  190e37171bed3c92de9d86fa1e13fa24  gcc/testsuite/gcc.dg/vect/tsvc/vect-tsvc-s311.c
*************** acd17fa620a3c8c7714b13203c43d954  gcc/te
*** 49173,49178 ****
--- 52382,52399 ----
  eee8284de2c89fe1e0116b94f0f75118  gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-6.c
  2f55dc2b07040c1444953a4f6b6fe16a  gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-8.c
  d6eaa948601aaabef30d80face368007  gcc/testsuite/gcc.dg/vect/vect-bic-bitmask-9.c
+ fc742340dcb637deb759feca71ed75a0  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-1.c
+ 42250d2a0ebc5276a2112e13e7b78288  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-2.c
+ e371674e0f6ebfad6750cc1aaa6f34cd  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-3.c
+ 3373118a9355e443623d9fd499a73c18  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-4.c
+ 4ac6e34b4c32b7f15b57005d80172e76  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-5.c
+ 38c0147ce2e58b998fea6377c8af11ef  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-6.c
+ b2b51a8172e905eb6018b2775c5b3898  gcc/testsuite/gcc.dg/vect/vect-bitfield-read-7.c
+ 7d40787c298c4bc379dddba79872ccbe  gcc/testsuite/gcc.dg/vect/vect-bitfield-write-1.c
+ b59a33769ea67abadddd0bdd9c7272b1  gcc/testsuite/gcc.dg/vect/vect-bitfield-write-2.c
+ 14fec4c0a17b1bfd24c5a899b909330d  gcc/testsuite/gcc.dg/vect/vect-bitfield-write-3.c
+ 5f6d3f4b4570e6945733546a9cf30f7f  gcc/testsuite/gcc.dg/vect/vect-bitfield-write-4.c
+ f56d013138b7a700ae8b85fcbe983f1e  gcc/testsuite/gcc.dg/vect/vect-bitfield-write-5.c
  154c42706e014b10ba6740d5b2ec9fb1  gcc/testsuite/gcc.dg/vect/vect-bool-1.c
  88ece9587087a3d3d1b4461a490bb1e1  gcc/testsuite/gcc.dg/vect/vect-bool-cmp-2.c
  2c73184f24942ac0b976ac2249081168  gcc/testsuite/gcc.dg/vect/vect-bool-cmp.c
*************** c6eb69337f445f03241c930aa5ae855c  gcc/te
*** 49221,49226 ****
--- 52442,52453 ----
  da6c54a57c412277438b8a28fa335e40  gcc/testsuite/gcc.dg/vect/vect-cselim-2.c
  dce2415ccc21ee8df7ffd1b533a4cd37  gcc/testsuite/gcc.dg/vect/vect-ctor-1.c
  6a93583f599051f181cc85fe92a7146a  gcc/testsuite/gcc.dg/vect/vect-debug-pr41926.c
+ 93cbbf2fc0227c3002a8b9a73567c9d3  gcc/testsuite/gcc.dg/vect/vect-div-bitmask-1.c
+ 7ed32f556e2f90b2ce76f1c86a0d92da  gcc/testsuite/gcc.dg/vect/vect-div-bitmask-2.c
+ 5a75a78907385e61f827b75b524ed7b1  gcc/testsuite/gcc.dg/vect/vect-div-bitmask-3.c
+ b9a4f7a51fc0260cbc49c60989ec57e1  gcc/testsuite/gcc.dg/vect/vect-div-bitmask-4.c
+ b9eb1109a68d122cb02640c72d29f5fa  gcc/testsuite/gcc.dg/vect/vect-div-bitmask-5.c
+ c7abd4c8107a04a3226169b5e991502f  gcc/testsuite/gcc.dg/vect/vect-div-bitmask.h
  cc5c83e334c2dda13f9040f4d00fa2ac  gcc/testsuite/gcc.dg/vect/vect-double-reduc-1.c
  1d63e3caff982316641c6691c217430c  gcc/testsuite/gcc.dg/vect/vect-double-reduc-2.c
  23a5ea26364ec425dc1dee5d59d6625b  gcc/testsuite/gcc.dg/vect/vect-double-reduc-3.c
*************** cf4a4d6e6cc4b23522c19982266ca248  gcc/te
*** 49239,49259 ****
  aa46a01c430ca6bcb60fb6bc2edfbb1d  gcc/testsuite/gcc.dg/vect/vect-fma-1.c
  b10686cc9cc745d9a4e579ee285eae2d  gcc/testsuite/gcc.dg/vect/vect-fma-2.c
  f26bda59075ce8ddcb0291dc86a118b3  gcc/testsuite/gcc.dg/vect/vect-fma-3.c
! 7718ea0dbd3e5cf90d36785e5e6856b1  gcc/testsuite/gcc.dg/vect/vect-fmax-1.c
! 402a6dee687c77191aee362a5ec11457  gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
! 9e40cae6b53777322184655af56a6d7e  gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
! b6a49b6453366544e5792fadbbd70e02  gcc/testsuite/gcc.dg/vect/vect-fmin-1.c
! 514748e37dabc7d4ccc0e8bd4a34956f  gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
! 9036ec8d298021e41c83c69812542f07  gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
  f7e0d01143aad0f81b1d1f66c5737e3a  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
  35c3ee4b34fc72c77cfca5c91b2ab36c  gcc/testsuite/gcc.dg/vect/vect-gather-1.c
  42b00c38af065e33048d2a1d390a7232  gcc/testsuite/gcc.dg/vect/vect-gather-2.c
  1dba52381c6aba539d0efa40e551a155  gcc/testsuite/gcc.dg/vect/vect-gather-3.c
  e180f90bcddffb95d143a607814ea50a  gcc/testsuite/gcc.dg/vect/vect-gather-4.c
  b57bff07bf75c647567f17c15d11e41a  gcc/testsuite/gcc.dg/vect/vect-ifcvt-10.c
  a0b812b43a2a49d603a582c192074c86  gcc/testsuite/gcc.dg/vect/vect-ifcvt-11.c
  9dbd0e84949b41bb8d3ca7406736f54d  gcc/testsuite/gcc.dg/vect/vect-ifcvt-16.c
  8bc0b33be3c023bd3459a56725e590f0  gcc/testsuite/gcc.dg/vect/vect-ifcvt-17.c
  8280799a10a29a6d5a9d9f18d643f7fc  gcc/testsuite/gcc.dg/vect/vect-ifcvt-2.c
  22b8162196395f56afc3fda805e5c7a6  gcc/testsuite/gcc.dg/vect/vect-ifcvt-3.c
  d31c580b602974793ca141ffe83739b6  gcc/testsuite/gcc.dg/vect/vect-ifcvt-4.c
--- 52466,52488 ----
  aa46a01c430ca6bcb60fb6bc2edfbb1d  gcc/testsuite/gcc.dg/vect/vect-fma-1.c
  b10686cc9cc745d9a4e579ee285eae2d  gcc/testsuite/gcc.dg/vect/vect-fma-2.c
  f26bda59075ce8ddcb0291dc86a118b3  gcc/testsuite/gcc.dg/vect/vect-fma-3.c
! 609ec8572941506ac02bdead3631cf1a  gcc/testsuite/gcc.dg/vect/vect-fmax-1.c
! 8dd709fc543f80ce70588b05e38be7ae  gcc/testsuite/gcc.dg/vect/vect-fmax-2.c
! b913a0ce97e1075ed9731f6e62b860bf  gcc/testsuite/gcc.dg/vect/vect-fmax-3.c
! f7641c61bbf333053e42be5bfa67d8e4  gcc/testsuite/gcc.dg/vect/vect-fmin-1.c
! 33e9990b22cd49f97ec590b283e99e41  gcc/testsuite/gcc.dg/vect/vect-fmin-2.c
! 92e4333ba4e6a6e7852441677e9dd7e1  gcc/testsuite/gcc.dg/vect/vect-fmin-3.c
  f7e0d01143aad0f81b1d1f66c5737e3a  gcc/testsuite/gcc.dg/vect/vect-fold-1.c
  35c3ee4b34fc72c77cfca5c91b2ab36c  gcc/testsuite/gcc.dg/vect/vect-gather-1.c
  42b00c38af065e33048d2a1d390a7232  gcc/testsuite/gcc.dg/vect/vect-gather-2.c
  1dba52381c6aba539d0efa40e551a155  gcc/testsuite/gcc.dg/vect/vect-gather-3.c
  e180f90bcddffb95d143a607814ea50a  gcc/testsuite/gcc.dg/vect/vect-gather-4.c
+ da9eedb2c6a365008d958ef7f394e8c4  gcc/testsuite/gcc.dg/vect/vect-gather-5.c
  b57bff07bf75c647567f17c15d11e41a  gcc/testsuite/gcc.dg/vect/vect-ifcvt-10.c
  a0b812b43a2a49d603a582c192074c86  gcc/testsuite/gcc.dg/vect/vect-ifcvt-11.c
  9dbd0e84949b41bb8d3ca7406736f54d  gcc/testsuite/gcc.dg/vect/vect-ifcvt-16.c
  8bc0b33be3c023bd3459a56725e590f0  gcc/testsuite/gcc.dg/vect/vect-ifcvt-17.c
+ 37f2a7b8cd501d5ff2a6c9638bff8602  gcc/testsuite/gcc.dg/vect/vect-ifcvt-18.c
  8280799a10a29a6d5a9d9f18d643f7fc  gcc/testsuite/gcc.dg/vect/vect-ifcvt-2.c
  22b8162196395f56afc3fda805e5c7a6  gcc/testsuite/gcc.dg/vect/vect-ifcvt-3.c
  d31c580b602974793ca141ffe83739b6  gcc/testsuite/gcc.dg/vect/vect-ifcvt-4.c
*************** ea891669f15d8e84d6fda8024dd5f815  gcc/te
*** 49383,49390 ****
  5666635e14070a657bf1e668d3ed2801  gcc/testsuite/gcc.dg/vect/vect-outer-slp-1.c
  df36cb0c240831b9733207208bc578ed  gcc/testsuite/gcc.dg/vect/vect-outer-slp-2.c
  347db98e53368a88ad19a70adab83483  gcc/testsuite/gcc.dg/vect/vect-outer-slp-3.c
! aaa24fa9ac85318455e522bae93400b0  gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
! 224b675bc9ce76f75269395b98e27739  gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
  7ef8875afbd4bb0c3a177da55ea4c13b  gcc/testsuite/gcc.dg/vect/vect-over-widen-10.c
  0df50304255db16bc31792bec92fe372  gcc/testsuite/gcc.dg/vect/vect-over-widen-11.c
  50dbec7ec92bebd5ac32c272cc975735  gcc/testsuite/gcc.dg/vect/vect-over-widen-12.c
--- 52612,52619 ----
  5666635e14070a657bf1e668d3ed2801  gcc/testsuite/gcc.dg/vect/vect-outer-slp-1.c
  df36cb0c240831b9733207208bc578ed  gcc/testsuite/gcc.dg/vect/vect-outer-slp-2.c
  347db98e53368a88ad19a70adab83483  gcc/testsuite/gcc.dg/vect/vect-outer-slp-3.c
! 7a1c6bc53e2cab2c1a4b348505223c4e  gcc/testsuite/gcc.dg/vect/vect-over-widen-1-big-array.c
! b79c1b1d104e71954ba6514449e457a1  gcc/testsuite/gcc.dg/vect/vect-over-widen-1.c
  7ef8875afbd4bb0c3a177da55ea4c13b  gcc/testsuite/gcc.dg/vect/vect-over-widen-10.c
  0df50304255db16bc31792bec92fe372  gcc/testsuite/gcc.dg/vect/vect-over-widen-11.c
  50dbec7ec92bebd5ac32c272cc975735  gcc/testsuite/gcc.dg/vect/vect-over-widen-12.c
*************** fa21364c98fc5274644488e0b27a028d  gcc/te
*** 49401,49410 ****
  413de422a9f903d9693f12cb0cf139c5  gcc/testsuite/gcc.dg/vect/vect-over-widen-21.c
  59550746bf2f2b7ac80133868e731de8  gcc/testsuite/gcc.dg/vect/vect-over-widen-22.c
  c9a117c798551ca179c9f9b6b278c897  gcc/testsuite/gcc.dg/vect/vect-over-widen-23.c
! 3f382f60fb36d4d4837f0b31888f063a  gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
! 3e427987c6b423983658c52790af2aca  gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
! 68684c57f6a90ef08e28ed4cd191b611  gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
! 5338b2a148ee057dd43b56dc2f90927a  gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
  ebc132ebf64090b329410885b70adc85  gcc/testsuite/gcc.dg/vect/vect-over-widen-5.c
  3c5da2507fe18e1cda1a449db0cce8d4  gcc/testsuite/gcc.dg/vect/vect-over-widen-6.c
  7099455014defdb848588bc5ed9d1b4d  gcc/testsuite/gcc.dg/vect/vect-over-widen-7.c
--- 52630,52639 ----
  413de422a9f903d9693f12cb0cf139c5  gcc/testsuite/gcc.dg/vect/vect-over-widen-21.c
  59550746bf2f2b7ac80133868e731de8  gcc/testsuite/gcc.dg/vect/vect-over-widen-22.c
  c9a117c798551ca179c9f9b6b278c897  gcc/testsuite/gcc.dg/vect/vect-over-widen-23.c
! e9ecc76f7f55b6b823397ffb05329b17  gcc/testsuite/gcc.dg/vect/vect-over-widen-3-big-array.c
! d4ebd36e2e0b6aea988ba3a2dc48a87e  gcc/testsuite/gcc.dg/vect/vect-over-widen-3.c
! e58340a93b3a9ff24f71cc253fa37e38  gcc/testsuite/gcc.dg/vect/vect-over-widen-4-big-array.c
! 82b65dd5c3822f3a3a537243cb20844b  gcc/testsuite/gcc.dg/vect/vect-over-widen-4.c
  ebc132ebf64090b329410885b70adc85  gcc/testsuite/gcc.dg/vect/vect-over-widen-5.c
  3c5da2507fe18e1cda1a449db0cce8d4  gcc/testsuite/gcc.dg/vect/vect-over-widen-6.c
  7099455014defdb848588bc5ed9d1b4d  gcc/testsuite/gcc.dg/vect/vect-over-widen-7.c
*************** dce179d9539fcb48637e8e9c102da26c  gcc/te
*** 49426,49431 ****
--- 52655,52666 ----
  3a3a316ff2f2496494ecb0bd77d61aad  gcc/testsuite/gcc.dg/vect/vect-pre-interact.c
  bcf8d4d938304b75cfe5af73ef6b191b  gcc/testsuite/gcc.dg/vect/vect-profile-1.c
  ae4441b04534528916849ebd82e66022  gcc/testsuite/gcc.dg/vect/vect-recip.c
+ 36b22a8977e962db02dde3913cf3bfd4  gcc/testsuite/gcc.dg/vect/vect-recurr-1.c
+ 8e041c4703813c2549809428eef8d93c  gcc/testsuite/gcc.dg/vect/vect-recurr-2.c
+ f77bcd6abf3d7fc181b5c9099b8107e9  gcc/testsuite/gcc.dg/vect/vect-recurr-3.c
+ 57fce33d05ece46874b1533bb515f641  gcc/testsuite/gcc.dg/vect/vect-recurr-4.c
+ 4fd234c6d904b08de1c1ef5da8a85989  gcc/testsuite/gcc.dg/vect/vect-recurr-5.c
+ 341e8cf83af90ee08e2f0e11eabd1b72  gcc/testsuite/gcc.dg/vect/vect-recurr-6.c
  14379418c35bd92a759c557ae5c861c6  gcc/testsuite/gcc.dg/vect/vect-reduc-1.c
  22a0d53785f7d6c47cd23f6847097e73  gcc/testsuite/gcc.dg/vect/vect-reduc-10.c
  5e2267c9823c709c9186c2bae29c4b9e  gcc/testsuite/gcc.dg/vect/vect-reduc-11.c
*************** afaa45daeb6740febad38b149bba00f4  gcc/te
*** 49442,49468 ****
  c0dc4d999a9dd3a90639e4eb6b307722  gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
  deb8ecbd7cdb913c066f7d366640b30b  gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
  78bdeb760d9d97cdc35bbb827cdcf29d  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-1.c
! 6eb4a209f855067454aac5eef4786ff9  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c
! 6764f91bfb67b8ce62598ef142abdb91  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c
! a07f328b0dde0503fe0d373480a981d6  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c
! ace9a58bc028ff24310a98d79c596a57  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c
! 592066a48ade6ddfe4ec0d99a0c9c4c2  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c
! e1bad883a971d429b34a662aae650982  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c
! 5dee893b650f05471ca30e60a55409e3  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c
! 1188a8083bec6275cf6953e04ff17181  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-17.c
! 71671b1ef1a696578e881921d137ce7a  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-18.c
! e8371608a604536ad488c49233b1a76b  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-19.c
  8bb99383a3d30f2e7a971c28dfdb6bbc  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-2.c
! 63fec49496c065b83f4bef329dd6e86d  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-20.c
! 0179f9a69aa59bfaeb551be4c74bfafd  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-21.c
! b9f807d50c1cb90b63819750c1a7f023  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-22.c
  7617a5d0a2af193507333c64d80b9f85  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-3.c
  9a4e92377d3c8499cad2dbc27098ed3f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-4.c
  2fe52e43abbe10e0d3a2c5bd783c86f5  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-5.c
  a79cc962357cf4f42a44efad158b03e6  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-6.c
  8593f0a78707f2d870196d3db8601bb9  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-7.c
  b6aeb022dde69e8ffe448352fd61d3bd  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-8.c
! e01013fbcd15b7580b145038cf17b812  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c
  f567043538b37b8f96a7639f420ebf5a  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
  4ac381c0ce01711ae42fa052dd047242  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
  3f79364b1434591b07c839635489cfd3  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
--- 52677,52703 ----
  c0dc4d999a9dd3a90639e4eb6b307722  gcc/testsuite/gcc.dg/vect/vect-reduc-8.c
  deb8ecbd7cdb913c066f7d366640b30b  gcc/testsuite/gcc.dg/vect/vect-reduc-9.c
  78bdeb760d9d97cdc35bbb827cdcf29d  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-1.c
! 8766f1e32dd79e5d368ecf7021fdac0f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-10.c
! 85696840ef5d750dde8486e0a7c97463  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-11.c
! 8247ee6bd03c205a35b072abad41c44a  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-12.c
! 2c27ce9aa26e14effd870bf642035116  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-13.c
! 80522218fa95aec45337285090e20751  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-14.c
! a9811bdfc2ce6a7cde3dcee96335951c  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-15.c
! aeaf72f8b348aaa7edc0b0bdb5b96f64  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-16.c
! bb82eaec4bf7b381b69be7a9b19611f3  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-17.c
! a3f9e641fde74fa78c666221cb8da15f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-18.c
! 777f89783ded1515a1116c4e7d79efef  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-19.c
  8bb99383a3d30f2e7a971c28dfdb6bbc  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-2.c
! 88b93e876c00abb5327f024ef78788e8  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-20.c
! 320554c76c733769c9c9200decbc4c85  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-21.c
! 9b65c4dc4025d40724d150c907ab2f0e  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-22.c
  7617a5d0a2af193507333c64d80b9f85  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-3.c
  9a4e92377d3c8499cad2dbc27098ed3f  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-4.c
  2fe52e43abbe10e0d3a2c5bd783c86f5  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-5.c
  a79cc962357cf4f42a44efad158b03e6  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-6.c
  8593f0a78707f2d870196d3db8601bb9  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-7.c
  b6aeb022dde69e8ffe448352fd61d3bd  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-8.c
! 7f56c49d37576baac4d44a6bd6013359  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-9.c
  f567043538b37b8f96a7639f420ebf5a  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16a.c
  4ac381c0ce01711ae42fa052dd047242  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16b.c
  3f79364b1434591b07c839635489cfd3  gcc/testsuite/gcc.dg/vect/vect-reduc-dot-s16c.c
*************** b706dc8a8f0465d5f4517099eb8a07c4  gcc/te
*** 49541,49547 ****
  d1851a7e16c0f7f9c86a65bc1f5dddf4  gcc/testsuite/gcc.dg/vect/vect-simd-7.c
  cd8006ee32a8ec77d460d4c6d8b8b4da  gcc/testsuite/gcc.dg/vect/vect-simd-8.c
  ebf671e29dd7d98b4e2c2e69a4c2385e  gcc/testsuite/gcc.dg/vect/vect-simd-9.c
! 870d11eebf7ff384c41a590921cd8dfe  gcc/testsuite/gcc.dg/vect/vect-simd-clone-1.c
  bc9723b4294408a734863a909b71712b  gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
  e15c9b03d8e1d3a7a5ee1c79b19ba163  gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.h
  1464349ea26540551dcba3e44d957b36  gcc/testsuite/gcc.dg/vect/vect-simd-clone-10a.c
--- 52776,52782 ----
  d1851a7e16c0f7f9c86a65bc1f5dddf4  gcc/testsuite/gcc.dg/vect/vect-simd-7.c
  cd8006ee32a8ec77d460d4c6d8b8b4da  gcc/testsuite/gcc.dg/vect/vect-simd-8.c
  ebf671e29dd7d98b4e2c2e69a4c2385e  gcc/testsuite/gcc.dg/vect/vect-simd-9.c
! 163a3863922c6a5dd0c12afb89f6fb78  gcc/testsuite/gcc.dg/vect/vect-simd-clone-1.c
  bc9723b4294408a734863a909b71712b  gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.c
  e15c9b03d8e1d3a7a5ee1c79b19ba163  gcc/testsuite/gcc.dg/vect/vect-simd-clone-10.h
  1464349ea26540551dcba3e44d957b36  gcc/testsuite/gcc.dg/vect/vect-simd-clone-10a.c
*************** d8b650e8ad6c5d4182b48acc7bced0d5  gcc/te
*** 49551,49563 ****
  60af91149238db9ff77ec6956d1e63e8  gcc/testsuite/gcc.dg/vect/vect-simd-clone-13.c
  a81a97f4a56c119cab9c8d7bdf895b21  gcc/testsuite/gcc.dg/vect/vect-simd-clone-14.c
  5edae6372e7587276b5346987dce1fb9  gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c
! 27b8daadaffbc06e780f871c88c1c9f1  gcc/testsuite/gcc.dg/vect/vect-simd-clone-2.c
! 920d4b261d6a10a6127163d119c30118  gcc/testsuite/gcc.dg/vect/vect-simd-clone-3.c
! fd42b513de549850607ae76ac92c51c1  gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
! 02bf8e312708c04b3214e58cfde4fe15  gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
  23c0980905550ebefa630b2c4d63e046  gcc/testsuite/gcc.dg/vect/vect-simd-clone-6.c
  306ffa24004dc399b10db67824a78811  gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
! 0c537683f6b649a914c4fcd267f78550  gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
  53fc47c084baeaf27ddd1b2fea497ffb  gcc/testsuite/gcc.dg/vect/vect-simd-clone-9.c
  4f938eaebf48217ae438f73dece6a598  gcc/testsuite/gcc.dg/vect/vect-singleton_1.c
  843ea11d418a53b8f740fee4a248309d  gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
--- 52786,52816 ----
  60af91149238db9ff77ec6956d1e63e8  gcc/testsuite/gcc.dg/vect/vect-simd-clone-13.c
  a81a97f4a56c119cab9c8d7bdf895b21  gcc/testsuite/gcc.dg/vect/vect-simd-clone-14.c
  5edae6372e7587276b5346987dce1fb9  gcc/testsuite/gcc.dg/vect/vect-simd-clone-15.c
! b0cb1e21e14035b1194c4f3f4e68becc  gcc/testsuite/gcc.dg/vect/vect-simd-clone-16.c
! c36c3ad97cfbf1be43ad8307f7b3eba0  gcc/testsuite/gcc.dg/vect/vect-simd-clone-16b.c
! d5c3e537825f03ee31473b2e33902ca3  gcc/testsuite/gcc.dg/vect/vect-simd-clone-16c.c
! 525f5f7180939d3a63ee7c154328349e  gcc/testsuite/gcc.dg/vect/vect-simd-clone-16d.c
! 28bb9727bb68f19dffb44f934f029e2d  gcc/testsuite/gcc.dg/vect/vect-simd-clone-16e.c
! 5f234dcc8c1625b954e63a615aff2aa2  gcc/testsuite/gcc.dg/vect/vect-simd-clone-16f.c
! df907a0bedf6430cc4e5e0086f3ac9ab  gcc/testsuite/gcc.dg/vect/vect-simd-clone-17.c
! 30dd07bd633247c311c2eb04d6ecefe8  gcc/testsuite/gcc.dg/vect/vect-simd-clone-17b.c
! 239c912ca0d50a3601dceab4e3497575  gcc/testsuite/gcc.dg/vect/vect-simd-clone-17c.c
! 0032df92d6eb481839eeaf1b67a14297  gcc/testsuite/gcc.dg/vect/vect-simd-clone-17d.c
! bf533adb9e5c51763d56908279be7daa  gcc/testsuite/gcc.dg/vect/vect-simd-clone-17e.c
! 46ed78e3b8ad5d2df7f7a6c6b1f31dac  gcc/testsuite/gcc.dg/vect/vect-simd-clone-17f.c
! ee711a645968f35d0d88969943f997df  gcc/testsuite/gcc.dg/vect/vect-simd-clone-18.c
! bb816b62d1cccb292fd79316f6930a5b  gcc/testsuite/gcc.dg/vect/vect-simd-clone-18b.c
! 73528a22e87c01b97bafd4e1c533d7c3  gcc/testsuite/gcc.dg/vect/vect-simd-clone-18c.c
! c16fe6c117819bc16384ac60165d3f0c  gcc/testsuite/gcc.dg/vect/vect-simd-clone-18d.c
! b909da935d057e1e3a2fd43bee466656  gcc/testsuite/gcc.dg/vect/vect-simd-clone-18e.c
! 2a3a123209dffbe92e72508d5f345d9e  gcc/testsuite/gcc.dg/vect/vect-simd-clone-18f.c
! 78a8ef05e5cb8fd8fc34936f429365f1  gcc/testsuite/gcc.dg/vect/vect-simd-clone-2.c
! 90f5d376aa6d955add3f1b1d0030d7b3  gcc/testsuite/gcc.dg/vect/vect-simd-clone-3.c
! d7a3842f772dd42ffcc5f0bc7f110063  gcc/testsuite/gcc.dg/vect/vect-simd-clone-4.c
! e90398c2ab202382d78208e5e6804056  gcc/testsuite/gcc.dg/vect/vect-simd-clone-5.c
  23c0980905550ebefa630b2c4d63e046  gcc/testsuite/gcc.dg/vect/vect-simd-clone-6.c
  306ffa24004dc399b10db67824a78811  gcc/testsuite/gcc.dg/vect/vect-simd-clone-7.c
! aac1475c4e6d451886448cb5fcf0d391  gcc/testsuite/gcc.dg/vect/vect-simd-clone-8.c
  53fc47c084baeaf27ddd1b2fea497ffb  gcc/testsuite/gcc.dg/vect/vect-simd-clone-9.c
  4f938eaebf48217ae438f73dece6a598  gcc/testsuite/gcc.dg/vect/vect-singleton_1.c
  843ea11d418a53b8f740fee4a248309d  gcc/testsuite/gcc.dg/vect/vect-strided-a-mult.c
*************** a59df89b1376b4f03dea39b74f5b0a4b  gcc/te
*** 49596,49602 ****
  a635c9f92719f684fc12bdcfa02f7ef5  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c
  49b5b5246537d2032067a34b59509e15  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
  f7ec09efd18b80ae109a707068f6ee9b  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
! b26aec6173ce64399abc34d5b0842b42  gcc/testsuite/gcc.dg/vect/vect-tail-nomask-1.c
  77c1344d6e99c9bf6c4f1170c256d122  gcc/testsuite/gcc.dg/vect/vect-version-1.c
  b4f31e51d7444b0dbc43aff2dc3d5426  gcc/testsuite/gcc.dg/vect/vect-version-2.c
  a7957f54ccc3f67952d53b86c4b0094d  gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
--- 52849,52855 ----
  a635c9f92719f684fc12bdcfa02f7ef5  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7-big-array.c
  49b5b5246537d2032067a34b59509e15  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8-gap7.c
  f7ec09efd18b80ae109a707068f6ee9b  gcc/testsuite/gcc.dg/vect/vect-strided-u8-i8.c
! 9720e2786d44326ad8aad89ca3093cc4  gcc/testsuite/gcc.dg/vect/vect-tail-nomask-1.c
  77c1344d6e99c9bf6c4f1170c256d122  gcc/testsuite/gcc.dg/vect/vect-version-1.c
  b4f31e51d7444b0dbc43aff2dc3d5426  gcc/testsuite/gcc.dg/vect/vect-version-2.c
  a7957f54ccc3f67952d53b86c4b0094d  gcc/testsuite/gcc.dg/vect/vect-vfa-01.c
*************** ab5379404640e60b68283cea3a87ea22  gcc/te
*** 49624,49630 ****
  fbf164f2875819f557043a2d78017764  gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
  abe3c6bc74fd9730499cd8e54e143935  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
  8146ba6466499582165bf09d96598f47  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
! 0e99fe21b3321e4cfa59a84d006c977e  gcc/testsuite/gcc.dg/vect/vect.exp
  9dfff9b6a28d5e65dca4073934514d5e  gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
  3613af6098a597772fd1b7e4dd37a0f3  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
  431e29e277cc621ccb31b18bba96d195  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
--- 52877,52883 ----
  fbf164f2875819f557043a2d78017764  gcc/testsuite/gcc.dg/vect/vect-widen-shift-s8.c
  abe3c6bc74fd9730499cd8e54e143935  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u16.c
  8146ba6466499582165bf09d96598f47  gcc/testsuite/gcc.dg/vect/vect-widen-shift-u8.c
! c6a3442e5a767e5d00af1789454bfc8a  gcc/testsuite/gcc.dg/vect/vect.exp
  9dfff9b6a28d5e65dca4073934514d5e  gcc/testsuite/gcc.dg/vect/wrapv-vect-7.c
  3613af6098a597772fd1b7e4dd37a0f3  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2char.c
  431e29e277cc621ccb31b18bba96d195  gcc/testsuite/gcc.dg/vect/wrapv-vect-reduc-2short.c
*************** fcefe80d362d778b71a9c6431b796a1e  gcc/te
*** 49649,49655 ****
  f83d2db3e2fd97e87230a5d9dd1274b9  gcc/testsuite/gcc.dg/visibility-2.c
  eb58aa4a681a08d91397e2a11fbe81e3  gcc/testsuite/gcc.dg/visibility-20.c
  3f8f1445188e50bcf22ad7a8fc85ee2b  gcc/testsuite/gcc.dg/visibility-21.c
! 53e859a3603a5f96fbf285e13fe6c1ac  gcc/testsuite/gcc.dg/visibility-22.c
  9efe2209183ec6701835782f5226ac33  gcc/testsuite/gcc.dg/visibility-23.c
  d0a344fbd6e7158b3bf4cdbb4440ef36  gcc/testsuite/gcc.dg/visibility-3.c
  8d7d13e33f78b22dd6e7c886111a31ad  gcc/testsuite/gcc.dg/visibility-4.c
--- 52902,52908 ----
  f83d2db3e2fd97e87230a5d9dd1274b9  gcc/testsuite/gcc.dg/visibility-2.c
  eb58aa4a681a08d91397e2a11fbe81e3  gcc/testsuite/gcc.dg/visibility-20.c
  3f8f1445188e50bcf22ad7a8fc85ee2b  gcc/testsuite/gcc.dg/visibility-21.c
! b243f2b25c734ac1fbe117df8c16e237  gcc/testsuite/gcc.dg/visibility-22.c
  9efe2209183ec6701835782f5226ac33  gcc/testsuite/gcc.dg/visibility-23.c
  d0a344fbd6e7158b3bf4cdbb4440ef36  gcc/testsuite/gcc.dg/visibility-3.c
  8d7d13e33f78b22dd6e7c886111a31ad  gcc/testsuite/gcc.dg/visibility-4.c
*************** d8a13a61fad5116ae169d2bfc88dcaea  gcc/te
*** 49688,49695 ****
  e24d0f20e739156ac3cf1c83cb940873  gcc/testsuite/gcc.dg/vla-8.c
  12550e1a0bc2d11107e74a5bd2f75a0e  gcc/testsuite/gcc.dg/vla-9.c
  18f8fa8a55cbcb4e18bf8230f6f1d37f  gcc/testsuite/gcc.dg/vla-init-1.c
! 9dfc1875c10e05708b3000de451d2513  gcc/testsuite/gcc.dg/vla-init-2.c
! 72a2e50013bca55ed934c9db00f852af  gcc/testsuite/gcc.dg/vla-init-3.c
  943b40322a964bc97313e85b4eb158b6  gcc/testsuite/gcc.dg/vla-init-4.c
  17d2fd5480a0274dbb802302e84e1945  gcc/testsuite/gcc.dg/vla-init-5.c
  1b4202fd8dd28d797fa2a26ecca28fa7  gcc/testsuite/gcc.dg/vla-stexp-1.c
--- 52941,52948 ----
  e24d0f20e739156ac3cf1c83cb940873  gcc/testsuite/gcc.dg/vla-8.c
  12550e1a0bc2d11107e74a5bd2f75a0e  gcc/testsuite/gcc.dg/vla-9.c
  18f8fa8a55cbcb4e18bf8230f6f1d37f  gcc/testsuite/gcc.dg/vla-init-1.c
! 0cc7ec34ad1b21fe811a038e5f9a3f15  gcc/testsuite/gcc.dg/vla-init-2.c
! 3ebc83a0a0f2edba6c53937797fcfaef  gcc/testsuite/gcc.dg/vla-init-3.c
  943b40322a964bc97313e85b4eb158b6  gcc/testsuite/gcc.dg/vla-init-4.c
  17d2fd5480a0274dbb802302e84e1945  gcc/testsuite/gcc.dg/vla-init-5.c
  1b4202fd8dd28d797fa2a26ecca28fa7  gcc/testsuite/gcc.dg/vla-stexp-1.c
*************** b74b4229263d70abbf112c2c622f29ba  gcc/te
*** 49831,49837 ****
  5cc01078c1f3f451644a44dfdc807444  gcc/testsuite/gcc.dg/vmx/varargs-6.c
  441584a435c20e33e9ba2840da79de7b  gcc/testsuite/gcc.dg/vmx/varargs-7.c
  88d7e6b1c915da50092f2f05e8403f00  gcc/testsuite/gcc.dg/vmx/vec-set.c
! c5abb3e84c1496f325a25262ffb67883  gcc/testsuite/gcc.dg/vmx/vmx.exp
  7b36f93de20205be4944182fe8222120  gcc/testsuite/gcc.dg/vmx/vsums.c
  0e39fb03e625fd0928ac3568284946cb  gcc/testsuite/gcc.dg/vmx/x-01.c
  780491d8a6964b34313eb871098c1ec6  gcc/testsuite/gcc.dg/vmx/x-02.c
--- 53084,53090 ----
  5cc01078c1f3f451644a44dfdc807444  gcc/testsuite/gcc.dg/vmx/varargs-6.c
  441584a435c20e33e9ba2840da79de7b  gcc/testsuite/gcc.dg/vmx/varargs-7.c
  88d7e6b1c915da50092f2f05e8403f00  gcc/testsuite/gcc.dg/vmx/vec-set.c
! d413349126c005f42e9d17a4c253a8dd  gcc/testsuite/gcc.dg/vmx/vmx.exp
  7b36f93de20205be4944182fe8222120  gcc/testsuite/gcc.dg/vmx/vsums.c
  0e39fb03e625fd0928ac3568284946cb  gcc/testsuite/gcc.dg/vmx/x-01.c
  780491d8a6964b34313eb871098c1ec6  gcc/testsuite/gcc.dg/vmx/x-02.c
*************** c2a72555b847a160fe0e6ed226d4d97d  gcc/te
*** 49861,49867 ****
  f5b5cb2b526a46cc84be22a60b28910d  gcc/testsuite/gcc.dg/vshift-7.c
  e24f2248b6dfe2458324a1f859ecb3c3  gcc/testsuite/gcc.dg/vxworks/initpri1.c
  082cdb5ff1a15b2384040533828cac32  gcc/testsuite/gcc.dg/vxworks/initpri2.c
! a4acbba01acbb5926319487749396e1f  gcc/testsuite/gcc.dg/vxworks/vxworks.exp
  807831bd928d8bca1ad6f704a5f898aa  gcc/testsuite/gcc.dg/warn-1.c
  707e0da2129d4bb332c0bf10ea621989  gcc/testsuite/gcc.dg/warn-abs-1.c
  be8f7b50176d3cc112e9b45dfbff569c  gcc/testsuite/gcc.dg/warn-addr-cmp.c
--- 53114,53120 ----
  f5b5cb2b526a46cc84be22a60b28910d  gcc/testsuite/gcc.dg/vshift-7.c
  e24f2248b6dfe2458324a1f859ecb3c3  gcc/testsuite/gcc.dg/vxworks/initpri1.c
  082cdb5ff1a15b2384040533828cac32  gcc/testsuite/gcc.dg/vxworks/initpri2.c
! 613dad4294841831abf4273676390e8b  gcc/testsuite/gcc.dg/vxworks/vxworks.exp
  807831bd928d8bca1ad6f704a5f898aa  gcc/testsuite/gcc.dg/warn-1.c
  707e0da2129d4bb332c0bf10ea621989  gcc/testsuite/gcc.dg/warn-abs-1.c
  be8f7b50176d3cc112e9b45dfbff569c  gcc/testsuite/gcc.dg/warn-addr-cmp.c
*************** b7dc9ca29b0c2fb0c11b45350fbe20ac  gcc/te
*** 49897,49903 ****
  bbde9e22b1b903e5ff4a277a65a1cb04  gcc/testsuite/gcc.dg/weak/weak-7.c
  ef4ea7d4216e9123244c1d14e75ca376  gcc/testsuite/gcc.dg/weak/weak-8.c
  df7f481c6f796831760bd5209df6243d  gcc/testsuite/gcc.dg/weak/weak-9.c
! bb557bab9ca6712772c6dabdedde207e  gcc/testsuite/gcc.dg/weak/weak.exp
  4f8d055b663cb38e2bbb352f1cb7a53c  gcc/testsuite/gcc.dg/webizer.c
  b73fb0ba5d6e226781f1b052bc3742c5  gcc/testsuite/gcc.dg/wide-shift-128.c
  81a04bf47a86380caff11ddcb8294ecc  gcc/testsuite/gcc.dg/wide-shift-64.c
--- 53150,53156 ----
  bbde9e22b1b903e5ff4a277a65a1cb04  gcc/testsuite/gcc.dg/weak/weak-7.c
  ef4ea7d4216e9123244c1d14e75ca376  gcc/testsuite/gcc.dg/weak/weak-8.c
  df7f481c6f796831760bd5209df6243d  gcc/testsuite/gcc.dg/weak/weak-9.c
! 018305c81e1ab48a6ce45d3e548c9bb9  gcc/testsuite/gcc.dg/weak/weak.exp
  4f8d055b663cb38e2bbb352f1cb7a53c  gcc/testsuite/gcc.dg/webizer.c
  b73fb0ba5d6e226781f1b052bc3742c5  gcc/testsuite/gcc.dg/wide-shift-128.c
  81a04bf47a86380caff11ddcb8294ecc  gcc/testsuite/gcc.dg/wide-shift-64.c
*************** c34b827a7f28759ebf3d5ebc26e975b8  gcc/te
*** 49932,49946 ****
  ce7181a37e4abd0831a2d47b7a9a11f2  gcc/testsuite/gcc.dg/zero_bits_compound-2.c
  3818016c4a025396f38ca3c9bd0c1f47  gcc/testsuite/gcc.dg/zero_sign_ext_test.c
  4e040b1868690b5543136a52a2f030b3  gcc/testsuite/gcc.misc-tests/acker1.c
! 9282c0b191fb17272c16593fe9bd9996  gcc/testsuite/gcc.misc-tests/acker1.exp
  77cec6e0fd95e9ae200e495071d1ae9a  gcc/testsuite/gcc.misc-tests/arm-isr.c
! 159945893ce383f23fe15b6e610adbac  gcc/testsuite/gcc.misc-tests/arm-isr.exp
  69ee82e02b642cb6edfac2cec4b99756  gcc/testsuite/gcc.misc-tests/bprob-1.c
  769b91c7738037eb489394524ae54796  gcc/testsuite/gcc.misc-tests/bprob-2.c
! 82fbfe0bd0ed2de1140647ed43b5516b  gcc/testsuite/gcc.misc-tests/bprob.exp
! 343bb77b9f3de94df98c5b34231c4f5c  gcc/testsuite/gcc.misc-tests/dectest.exp
  a11bded9860644075434da1f07b7f1bf  gcc/testsuite/gcc.misc-tests/dhry.c
! 076b9e619e52c68becfda4966bd877cb  gcc/testsuite/gcc.misc-tests/dhry.exp
  850c45b3c3b492adf09b115c0d2d2286  gcc/testsuite/gcc.misc-tests/dhry.h
  02aa6ab9e158e9fa6e94768d75bd86cb  gcc/testsuite/gcc.misc-tests/gcov-1.c
  44d73a2d21081bbe1b4c64084331ec77  gcc/testsuite/gcc.misc-tests/gcov-10.c
--- 53185,53199 ----
  ce7181a37e4abd0831a2d47b7a9a11f2  gcc/testsuite/gcc.dg/zero_bits_compound-2.c
  3818016c4a025396f38ca3c9bd0c1f47  gcc/testsuite/gcc.dg/zero_sign_ext_test.c
  4e040b1868690b5543136a52a2f030b3  gcc/testsuite/gcc.misc-tests/acker1.c
! da4f30cbb9618847df5c0a2527d4a277  gcc/testsuite/gcc.misc-tests/acker1.exp
  77cec6e0fd95e9ae200e495071d1ae9a  gcc/testsuite/gcc.misc-tests/arm-isr.c
! 279014f3f0c11d988ce5db47ac16b41b  gcc/testsuite/gcc.misc-tests/arm-isr.exp
  69ee82e02b642cb6edfac2cec4b99756  gcc/testsuite/gcc.misc-tests/bprob-1.c
  769b91c7738037eb489394524ae54796  gcc/testsuite/gcc.misc-tests/bprob-2.c
! 1fe791d6e970d9bcec8808f52ebfa4ec  gcc/testsuite/gcc.misc-tests/bprob.exp
! cebf681185f2b495aacead3047b18d8d  gcc/testsuite/gcc.misc-tests/dectest.exp
  a11bded9860644075434da1f07b7f1bf  gcc/testsuite/gcc.misc-tests/dhry.c
! cd5160d924d96c5f1ee74e165004eebf  gcc/testsuite/gcc.misc-tests/dhry.exp
  850c45b3c3b492adf09b115c0d2d2286  gcc/testsuite/gcc.misc-tests/dhry.h
  02aa6ab9e158e9fa6e94768d75bd86cb  gcc/testsuite/gcc.misc-tests/gcov-1.c
  44d73a2d21081bbe1b4c64084331ec77  gcc/testsuite/gcc.misc-tests/gcov-10.c
*************** a19cb340410a6420dbacef02fec4bcd8  gcc/te
*** 49956,49962 ****
  26d3ee0bab7bc8a86b5239d64728101d  gcc/testsuite/gcc.misc-tests/gcov-1a.c
  7a8ab4c1f62f1462575863cae613404b  gcc/testsuite/gcc.misc-tests/gcov-2.c
  c71219d95b56b360f999cbe8dd8b9109  gcc/testsuite/gcc.misc-tests/gcov-3.c
! 7ee7fdf2863e181255489c48059d04a0  gcc/testsuite/gcc.misc-tests/gcov-4.c
  7d9bedbf8aa7d7ba724d6149406ba528  gcc/testsuite/gcc.misc-tests/gcov-4b.c
  3de3228964abb899dfdf7f0613136f40  gcc/testsuite/gcc.misc-tests/gcov-5b.c
  9f0a4f4ae87d9c8e7ee70f27c75d5114  gcc/testsuite/gcc.misc-tests/gcov-6.c
--- 53209,53215 ----
  26d3ee0bab7bc8a86b5239d64728101d  gcc/testsuite/gcc.misc-tests/gcov-1a.c
  7a8ab4c1f62f1462575863cae613404b  gcc/testsuite/gcc.misc-tests/gcov-2.c
  c71219d95b56b360f999cbe8dd8b9109  gcc/testsuite/gcc.misc-tests/gcov-3.c
! 5031c27c248f452d2706615b860fc3f3  gcc/testsuite/gcc.misc-tests/gcov-4.c
  7d9bedbf8aa7d7ba724d6149406ba528  gcc/testsuite/gcc.misc-tests/gcov-4b.c
  3de3228964abb899dfdf7f0613136f40  gcc/testsuite/gcc.misc-tests/gcov-5b.c
  9f0a4f4ae87d9c8e7ee70f27c75d5114  gcc/testsuite/gcc.misc-tests/gcov-6.c
*************** cd738df03ae207debc1ad168ab05d024  gcc/te
*** 49974,50021 ****
  ce15b46ef3abd924c340b60b46880630  gcc/testsuite/gcc.misc-tests/gcov-pr90574-1.c
  b4c981ce038b4aba05421ca069c8e20f  gcc/testsuite/gcc.misc-tests/gcov-pr90574-2.c
  64595fd213798d37265f5eb087bb77f2  gcc/testsuite/gcc.misc-tests/gcov-pr94029.c
! 8f90a6ea316080d4a00c636209c7509a  gcc/testsuite/gcc.misc-tests/gcov.exp
  d0c60992e0ef331502b84f8ee13cb818  gcc/testsuite/gcc.misc-tests/gcovpart-13b.c
  85548e872dac07684e3abdce20cb40dc  gcc/testsuite/gcc.misc-tests/godump-1.c
! 737c236b113f3a0b5c06efada9b038b8  gcc/testsuite/gcc.misc-tests/godump.exp
! 3172af7a22328e332eea5a3876964788  gcc/testsuite/gcc.misc-tests/help.exp
  6d43a784cf19762437a5b9baec4d4095  gcc/testsuite/gcc.misc-tests/i386-pf-3dnow-1.c
  4a06f6c2d9b50ef414030d175fbe9d5c  gcc/testsuite/gcc.misc-tests/i386-pf-athlon-1.c
  bfd2eae1e2b6b0aa804a7e33580dc190  gcc/testsuite/gcc.misc-tests/i386-pf-none-1.c
  81ac61201db56efd77fdfd14cf2e4266  gcc/testsuite/gcc.misc-tests/i386-pf-sse-1.c
! 5526c1afa602cf198a17ad204c66174f  gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
  51bca646196e93b1c8a68319441e0595  gcc/testsuite/gcc.misc-tests/linkage-x.c
  4020995d3b08e117c48c529d5bc0b3ec  gcc/testsuite/gcc.misc-tests/linkage-y.c
! f40ea22d38e34e0fb809a846c64c571e  gcc/testsuite/gcc.misc-tests/linkage.exp
  1d8fa0a1210ed4c4bf0ff4dfa959f060  gcc/testsuite/gcc.misc-tests/matrix1.c
! 50a2e909e6bcc139950be10ed14142a1  gcc/testsuite/gcc.misc-tests/matrix1.exp
  b45579fdac6008721502ddecb5df29d8  gcc/testsuite/gcc.misc-tests/mg-2.c
! d6f17a7dccabf873e3ee33beb66319b0  gcc/testsuite/gcc.misc-tests/mg-2.exp
  fb7a4e029ce05eea8ba0f03f9033caa2  gcc/testsuite/gcc.misc-tests/mg.c
! c09b96de7058f87d468ae78e360f9b44  gcc/testsuite/gcc.misc-tests/mg.exp
! 4b7f41b5fb8569690f3567d0930286d3  gcc/testsuite/gcc.misc-tests/options.exp
! e83cd0e67adb5c439f09429a543be8aa  gcc/testsuite/gcc.misc-tests/output.exp
  69d9b561b303bd96e74ea417f73e1ac5  gcc/testsuite/gcc.misc-tests/outputs-0.c
  773736389c2fb248099dd6dcee0ddb6b  gcc/testsuite/gcc.misc-tests/outputs-1.c
  4bffb1320eb13262d3eb5336a6683a84  gcc/testsuite/gcc.misc-tests/outputs-2.c
! c80eeb9fec68252608ca5667d103aa42  gcc/testsuite/gcc.misc-tests/outputs.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
! 1c5c6f85f31e05af0171069f9a2e119f  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
! 880a2403dfade4f5ced83505a0a43a1d  gcc/testsuite/gcc.misc-tests/sort2.exp
! db99ea9df53af2aa9156fb039f1d5e57  gcc/testsuite/gcc.src/maintainers.exp
  8031dd3c171877e36f7163b73fe68210  gcc/testsuite/gcc.target/aarch64/121127.c
  512f8592397ac26799ee85d9c29339ec  gcc/testsuite/gcc.target/aarch64/_Float16_1.c
  6bead3d18e15a037cfb743e33e7712a5  gcc/testsuite/gcc.target/aarch64/_Float16_2.c
  d365d8bf0f5478b04e6451262cf0b804  gcc/testsuite/gcc.target/aarch64/_Float16_3.c
! 8947768a6a02f91b8b1431a92aa7f811  gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
  fbb13bb7b4d389c258ef20d9aae07cf6  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-2.h
  c708255687954aa3e3174b83b89e4e66  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-common.h
  ab893b67ef591ba6b84bda6885255075  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.S
  61be345a5679446528edab66406aba1e  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.h
! 5c95bebd2e87b6e9a0e8b6c763fa8af9  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
  a6c7d5ab48076a030ed52077beafbecf  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-2.c
! 1a111469a0b7ea77b4f8f2305b31a413  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-3.c
  6e23a268de3c65849220e7499e74dfde  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-4.c
  7b79a81d3a6b2801b420b5c1340b6d04  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-64x1_1.c
  12a5af6191c62319e9641c4190e5883e  gcc/testsuite/gcc.target/aarch64/aapcs64/ice_1.c
--- 53227,53275 ----
  ce15b46ef3abd924c340b60b46880630  gcc/testsuite/gcc.misc-tests/gcov-pr90574-1.c
  b4c981ce038b4aba05421ca069c8e20f  gcc/testsuite/gcc.misc-tests/gcov-pr90574-2.c
  64595fd213798d37265f5eb087bb77f2  gcc/testsuite/gcc.misc-tests/gcov-pr94029.c
! 2d28ae8fb4289514d89f7e79f8cba7ff  gcc/testsuite/gcc.misc-tests/gcov.exp
  d0c60992e0ef331502b84f8ee13cb818  gcc/testsuite/gcc.misc-tests/gcovpart-13b.c
  85548e872dac07684e3abdce20cb40dc  gcc/testsuite/gcc.misc-tests/godump-1.c
! 48b4dafb082f3392b06fe646783a708f  gcc/testsuite/gcc.misc-tests/godump.exp
! 6159f136e8f235edb80f8b07ae130603  gcc/testsuite/gcc.misc-tests/help.exp
  6d43a784cf19762437a5b9baec4d4095  gcc/testsuite/gcc.misc-tests/i386-pf-3dnow-1.c
  4a06f6c2d9b50ef414030d175fbe9d5c  gcc/testsuite/gcc.misc-tests/i386-pf-athlon-1.c
  bfd2eae1e2b6b0aa804a7e33580dc190  gcc/testsuite/gcc.misc-tests/i386-pf-none-1.c
  81ac61201db56efd77fdfd14cf2e4266  gcc/testsuite/gcc.misc-tests/i386-pf-sse-1.c
! 63cef59190bb388ede6566d1f3830332  gcc/testsuite/gcc.misc-tests/i386-prefetch.exp
  51bca646196e93b1c8a68319441e0595  gcc/testsuite/gcc.misc-tests/linkage-x.c
  4020995d3b08e117c48c529d5bc0b3ec  gcc/testsuite/gcc.misc-tests/linkage-y.c
! e5b3d6adaec0dba51a4e9f3cc666096a  gcc/testsuite/gcc.misc-tests/linkage.exp
  1d8fa0a1210ed4c4bf0ff4dfa959f060  gcc/testsuite/gcc.misc-tests/matrix1.c
! 6a828df86636ce0726e3caabae0e6ae4  gcc/testsuite/gcc.misc-tests/matrix1.exp
  b45579fdac6008721502ddecb5df29d8  gcc/testsuite/gcc.misc-tests/mg-2.c
! 92659b9776e29c1afd5a8d7925e58798  gcc/testsuite/gcc.misc-tests/mg-2.exp
  fb7a4e029ce05eea8ba0f03f9033caa2  gcc/testsuite/gcc.misc-tests/mg.c
! 93ec1896f85ca8262070fca6ea519197  gcc/testsuite/gcc.misc-tests/mg.exp
! fa03e2d2bac3733688489904e8bcfe65  gcc/testsuite/gcc.misc-tests/options.exp
! d8ce66444739ddb9416e222f7d05151a  gcc/testsuite/gcc.misc-tests/output.exp
  69d9b561b303bd96e74ea417f73e1ac5  gcc/testsuite/gcc.misc-tests/outputs-0.c
  773736389c2fb248099dd6dcee0ddb6b  gcc/testsuite/gcc.misc-tests/outputs-1.c
  4bffb1320eb13262d3eb5336a6683a84  gcc/testsuite/gcc.misc-tests/outputs-2.c
! 61601cdae2aab8fd16af70d24226c1a9  gcc/testsuite/gcc.misc-tests/outputs.exp
  37d75aade49dd3329803e520456ae8a6  gcc/testsuite/gcc.misc-tests/sieve.c
! c82a7d80308f5416abb8d2c4597ae9f4  gcc/testsuite/gcc.misc-tests/sieve.exp
  f0e0d52dbb689249f8d057f00e4c65e9  gcc/testsuite/gcc.misc-tests/sort2.c
! 755c56cd6c5771e50d081bb660cc4da4  gcc/testsuite/gcc.misc-tests/sort2.exp
! 8c703dc9d60dffb960ea94c363242565  gcc/testsuite/gcc.src/maintainers.exp
  8031dd3c171877e36f7163b73fe68210  gcc/testsuite/gcc.target/aarch64/121127.c
  512f8592397ac26799ee85d9c29339ec  gcc/testsuite/gcc.target/aarch64/_Float16_1.c
  6bead3d18e15a037cfb743e33e7712a5  gcc/testsuite/gcc.target/aarch64/_Float16_2.c
  d365d8bf0f5478b04e6451262cf0b804  gcc/testsuite/gcc.target/aarch64/_Float16_3.c
! cad7c9a931ff8c2a10f8eb9a4e6cb38b  gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
  fbb13bb7b4d389c258ef20d9aae07cf6  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-2.h
  c708255687954aa3e3174b83b89e4e66  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest-common.h
  ab893b67ef591ba6b84bda6885255075  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.S
  61be345a5679446528edab66406aba1e  gcc/testsuite/gcc.target/aarch64/aapcs64/abitest.h
! a060bf27d254f08eb108d21b46fed38f  gcc/testsuite/gcc.target/aarch64/aapcs64/dfp-1.c
! eda0242f1312e5f417f132c24aa7a9a4  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-1.c
  a6c7d5ab48076a030ed52077beafbecf  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-2.c
! 61d3f7c1866200f2ff0c83f649cc05c2  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-3.c
  6e23a268de3c65849220e7499e74dfde  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-4.c
  7b79a81d3a6b2801b420b5c1340b6d04  gcc/testsuite/gcc.target/aarch64/aapcs64/func-ret-64x1_1.c
  12a5af6191c62319e9641c4190e5883e  gcc/testsuite/gcc.target/aarch64/aapcs64/ice_1.c
*************** a6c7d5ab48076a030ed52077beafbecf  gcc/te
*** 50023,50028 ****
--- 53277,53283 ----
  6f60c7c22501fc5c0d017c297a34ddba  gcc/testsuite/gcc.target/aarch64/aapcs64/ice_3.c
  ba077977324443167e28ec8443883dfd  gcc/testsuite/gcc.target/aarch64/aapcs64/ice_4.c
  842b856575c5bd4f4f172d24595e04de  gcc/testsuite/gcc.target/aarch64/aapcs64/ice_5.c
+ f1effa48b4890ccf1d77140c54d0aecb  gcc/testsuite/gcc.target/aarch64/aapcs64/ice_dfp_5.c
  55668d6919389c1f507cd65ecc82a46a  gcc/testsuite/gcc.target/aarch64/aapcs64/macro-def.h
  239b737e4ae0ac4ef0a4a6c8606c979e  gcc/testsuite/gcc.target/aarch64/aapcs64/rec_align-5.c
  b91fa15b75e9d354f8b92ea86f3726ae  gcc/testsuite/gcc.target/aarch64/aapcs64/rec_align-6.c
*************** d5069690dfb0a7a412c4801569874e97  gcc/te
*** 50072,50081 ****
  1ad059e322a9ea8c8d5b46b28155e22e  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align-7.c
  9676afea08f472fac6d40d266f9ec8fb  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align-8.c
  1d39d696bf6ec531b1e1ae44bcbeaf1b  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align-9.c
  5c50cda62bd8e028126d50524394cdcb  gcc/testsuite/gcc.target/aarch64/aapcs64/test_complex.c
  610639db1ddaee1b632bcaa03ae9e6d0  gcc/testsuite/gcc.target/aarch64/aapcs64/test_int128.c
  6fda7511aca063408b079c2bb62031f8  gcc/testsuite/gcc.target/aarch64/aapcs64/test_quad_double.c
! 8c5922f2cdfa547b85ea3b7f8a58620e  gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
  031e50b975bd9652bcd149055b4e526a  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-1.c
  596c2fbda9662178d39bdc8ca38a7b1e  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-10.c
  00b5c9f8a1a7953292a641277343cd80  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-11.c
--- 53327,53365 ----
  1ad059e322a9ea8c8d5b46b28155e22e  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align-7.c
  9676afea08f472fac6d40d266f9ec8fb  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align-8.c
  1d39d696bf6ec531b1e1ae44bcbeaf1b  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align-9.c
+ 2f3aba1a2fdf41119c21fcd920d3fa68  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-1.c
+ ca0a4ca42e479ad9d3b2c8795d185fc1  gcc/testsuite/gcc.target/aarch64/aapcs64/test_align_dfp-4.c
  5c50cda62bd8e028126d50524394cdcb  gcc/testsuite/gcc.target/aarch64/aapcs64/test_complex.c
+ 5d46fef9d448baec0a879049339f5775  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_1.c
+ 81739253cab5a5e7d23fb38e3ec02133  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_10.c
+ 2f23ed865b2f8d462484caa899a3003a  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_11.c
+ bfb060042a5c76bbbad27175708ed25b  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_12.c
+ 323ecb51cdcfe78c4367c69ea55130e6  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_13.c
+ 727043b45b6bed7a53f37a84e9c257b8  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_14.c
+ 7a5d16859e84837fd65c76ea0908bbd0  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_15.c
+ c12a8bdb4def874685e86358c7f2a5e5  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_16.c
+ b7de4d629203f9d4200db16eab02150b  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_17.c
+ 268e9b957a4238b0ddde9f61a91839b4  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_18.c
+ 933d61c64debe680cc9af90f596b7235  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_19.c
+ 209da2606402d1fc03d97003929039be  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_2.c
+ 2e900f5f74f07bc084a2c2af2194f211  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_20.c
+ 6b716817b9579fc6841de53d24fd5f52  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_21.c
+ 00a61637f7c0c2aae6a3d1a9dc43249d  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_22.c
+ 6717c0b52c059d4e58b85b6bdc481cca  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_23.c
+ 0a6dc422085199ec70180241b6f2ee0c  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_24.c
+ b063071038290058a2ab3aacb76665a8  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_25.c
+ 18b31a59add3f14e34e180e937b3653e  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_26.c
+ fec4d7c2c71e19e0cafd3238b18e9fb9  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_27.c
+ e928fcffe7d5ad585b2d3c4189af9b38  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_3.c
+ 59335553d467046bf59c9ae68e6d3c5a  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_5.c
+ 27010e0ad97f87d5387489b8e37b03e2  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_6.c
+ ce6a05b627ad2ab01f46ed1fe1d06b11  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_7.c
+ e595d1ceeca14809a6c5bb48e19f3720  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_8.c
+ ffcbde78d87177a33ffb25aa93517159  gcc/testsuite/gcc.target/aarch64/aapcs64/test_dfp_9.c
  610639db1ddaee1b632bcaa03ae9e6d0  gcc/testsuite/gcc.target/aarch64/aapcs64/test_int128.c
  6fda7511aca063408b079c2bb62031f8  gcc/testsuite/gcc.target/aarch64/aapcs64/test_quad_double.c
! 404626b194fa4d2c004a293ee1e990f5  gcc/testsuite/gcc.target/aarch64/aapcs64/test_quad_double_dfp.c
! 4c4d32eb3adefcfbb5402a2026b65c25  gcc/testsuite/gcc.target/aarch64/aapcs64/type-def.h
  031e50b975bd9652bcd149055b4e526a  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-1.c
  596c2fbda9662178d39bdc8ca38a7b1e  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-10.c
  00b5c9f8a1a7953292a641277343cd80  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-11.c
*************** d5069690dfb0a7a412c4801569874e97  gcc/te
*** 50084,50089 ****
--- 53368,53374 ----
  7277fa58dadb57113bc4495170498ae7  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-14.c
  d6d753fee2cc939c6e58cf69a3d84ce4  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-15.c
  cf78d84c225362adc20fcbbd1c4020fd  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-16.c
+ 271d94a1e8fcc99eabcb16bcae6495dd  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-17.c
  fc1b2fafeab3eb9b11c280cffbae0a84  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-2.c
  90f631203c55b0d551750a5a226e34d4  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-3.c
  8976e90901bc403d658e1154a201ff04  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-4.c
*************** d63d966901b8e8b51837691645468a2c  gcc/te
*** 50092,50104 ****
  7e7f057f14619ac48ce204fb91dd5b30  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-7.c
  9ae942d81ddb29e68f70db9e55725a4b  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-8.c
  dd14302fbe1a7e8e74bc61b31eb30b59  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-9.c
  3f40e5d196a05153206e4941fc3b1d10  gcc/testsuite/gcc.target/aarch64/aapcs64/validate_memory.h
! f309e0144c9ee8b729ab921507fa4b58  gcc/testsuite/gcc.target/aarch64/aarch64.exp
  5edfd2c8b369aabd5c367fb78ad782bd  gcc/testsuite/gcc.target/aarch64/abd_1.c
  ae513bfb2896c38de994944b104fb7c8  gcc/testsuite/gcc.target/aarch64/abs_1.c
  8a6aed21d2622bf72389f22f09d8bd4b  gcc/testsuite/gcc.target/aarch64/abs_2.c
! 1a7ccb40e3e56d330628a0d87661662b  gcc/testsuite/gcc.target/aarch64/acle/acle.exp
  a545b8f7fc60af12576f85397e1733cb  gcc/testsuite/gcc.target/aarch64/acle/armv8-r.c
  339f7215861041bbe928186d86e2c7b7  gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
  b3b451a8f938e2c0a24c2751eab2c62d  gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
  ff79cdd1c6205d62ceab022024616fbc  gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
--- 53377,53404 ----
  7e7f057f14619ac48ce204fb91dd5b30  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-7.c
  9ae942d81ddb29e68f70db9e55725a4b  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-8.c
  dd14302fbe1a7e8e74bc61b31eb30b59  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg-9.c
+ 8897671e11a453b60e4cca72c008ccc6  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-1.c
+ 8a3a47bc2309cb4b42d03e63488985d9  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-10.c
+ e2e723d727714e5d673055e020ee2410  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-11.c
+ 04ec972741a501a615b43fa9ad3fa3b1  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-12.c
+ 421f56e7445bfd99282a701e1b92a00e  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-13.c
+ 760384ecad03998752c80eff3fc98425  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-14.c
+ d915171076158a57d39734abe706875c  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-16.c
+ 8e338ba55081a08476bc308813e46338  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-2.c
+ 9eb431c09a843de4142b03817b27e331  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-3.c
+ 4664b0c9870a4d131b912f1da431c2e4  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-4.c
+ b51362df070ad6ef73f3c62bb1acacfb  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-5.c
+ 9aa8616d4f0c2064ae25bb65553716dc  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-6.c
+ 8306069eae8c21a38cf65ea80960e602  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-8.c
+ f05c75f497f017a490f3facad4b26647  gcc/testsuite/gcc.target/aarch64/aapcs64/va_arg_dfp-9.c
  3f40e5d196a05153206e4941fc3b1d10  gcc/testsuite/gcc.target/aarch64/aapcs64/validate_memory.h
! a999c41430e4cf632ef9b0cb5d601688  gcc/testsuite/gcc.target/aarch64/aarch64.exp
  5edfd2c8b369aabd5c367fb78ad782bd  gcc/testsuite/gcc.target/aarch64/abd_1.c
  ae513bfb2896c38de994944b104fb7c8  gcc/testsuite/gcc.target/aarch64/abs_1.c
  8a6aed21d2622bf72389f22f09d8bd4b  gcc/testsuite/gcc.target/aarch64/abs_2.c
! 9cfd4d4ad02332bd9b9d2ef4e80d85c6  gcc/testsuite/gcc.target/aarch64/acle/acle.exp
  a545b8f7fc60af12576f85397e1733cb  gcc/testsuite/gcc.target/aarch64/acle/armv8-r.c
+ 62e20cc9b647dedfdd26cf101e10f58e  gcc/testsuite/gcc.target/aarch64/acle/bti_def.c
  339f7215861041bbe928186d86e2c7b7  gcc/testsuite/gcc.target/aarch64/acle/crc32b.c
  b3b451a8f938e2c0a24c2751eab2c62d  gcc/testsuite/gcc.target/aarch64/acle/crc32cb.c
  ff79cdd1c6205d62ceab022024616fbc  gcc/testsuite/gcc.target/aarch64/acle/crc32cd.c
*************** fa7ed3baf58293efac2270a829b36fbf  gcc/te
*** 50111,50116 ****
--- 53411,53417 ----
  56cadf41ea040c38f913b6c3e6475be3  gcc/testsuite/gcc.target/aarch64/acle/jcvt_1.c
  a7c4014d53740d897076d06edcac5aaa  gcc/testsuite/gcc.target/aarch64/acle/jcvt_2.c
  ccf5175907998c0c871634fd51ca889f  gcc/testsuite/gcc.target/aarch64/acle/ls64_asm.c
+ 227ce3bdabfe19000133fa6e523116a8  gcc/testsuite/gcc.target/aarch64/acle/ls64_asm_2.c
  5d5290a990ac45d048d05d14caca4874  gcc/testsuite/gcc.target/aarch64/acle/ls64_ld64b-2.c
  1c5b2165b1d114daea4683d247a75998  gcc/testsuite/gcc.target/aarch64/acle/ls64_ld64b-3.c
  fa1ccdd20a958a2e7bc98028d2b2a9f0  gcc/testsuite/gcc.target/aarch64/acle/ls64_ld64b.c
*************** a9efd5e0ebc228f128308006c2db9c2b  gcc/te
*** 50126,50131 ****
--- 53427,53435 ----
  ff3a09d9afde293ac1598cb7530ead9d  gcc/testsuite/gcc.target/aarch64/acle/memtag_1.c
  722af47b92a99bf8f052eb56ae7c0c5e  gcc/testsuite/gcc.target/aarch64/acle/memtag_2.c
  e2be4748443bb6caa176b86d28972388  gcc/testsuite/gcc.target/aarch64/acle/memtag_3.c
+ 1d797526b5b45f0f4e3526be82bb2af3  gcc/testsuite/gcc.target/aarch64/acle/pauth_def.c
+ 4f75ca7b0d38f756a18d8f9574e56fd4  gcc/testsuite/gcc.target/aarch64/acle/pmull64.c
+ 7891d663249f27cbe3e8c65142207451  gcc/testsuite/gcc.target/aarch64/acle/pr108140.c
  59a572a57e0172b2d647b53aaa71b73b  gcc/testsuite/gcc.target/aarch64/acle/rintnzx_1.c
  0d5ba16c2924cc1abd60d5f6e84bb892  gcc/testsuite/gcc.target/aarch64/acle/rng_1.c
  cb84d7d74821259d1a47775dd18c13c8  gcc/testsuite/gcc.target/aarch64/acle/rng_2.c
*************** e2b1388fba47b95c8b27a3e1a29953ff  gcc/te
*** 50137,50143 ****
  caf80fb3defd2872fa7d7dc3fa721878  gcc/testsuite/gcc.target/aarch64/adds2.c
  480e16f2c7cfb659fed5b0f7a3c1547a  gcc/testsuite/gcc.target/aarch64/adds3.c
  55ff9765cb94d7817c4c42421ab1deaa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README
! cd0020f40fd7a6556989f0ac25317fcd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
  6be72d4411b42d96dbefbc2a2b05d2be  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
  012249ec105164442e4c8e2f09841d19  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c
  13fdac8c1ccc57731f09af48efde5d69  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_get-be.c
--- 53441,53447 ----
  caf80fb3defd2872fa7d7dc3fa721878  gcc/testsuite/gcc.target/aarch64/adds2.c
  480e16f2c7cfb659fed5b0f7a3c1547a  gcc/testsuite/gcc.target/aarch64/adds3.c
  55ff9765cb94d7817c4c42421ab1deaa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/README
! d7a8ea326d253b902f54565f323cb4ab  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/advsimd-intrinsics.exp
  6be72d4411b42d96dbefbc2a2b05d2be  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/arm-neon-ref.h
  012249ec105164442e4c8e2f09841d19  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_dup.c
  13fdac8c1ccc57731f09af48efde5d69  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/bf16_get-be.c
*************** ec22fbdd8271e68304a64fd92533fcc2  gcc/te
*** 50168,50174 ****
--- 53472,53480 ----
  2d6270ad676cb500aa09bb673e226e66  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_fp_op.inc
  2eb04076c167d9623ef4db08ba5b5eac  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_op.inc
  8b7fe5e3f608156c6dd8c2382aa48368  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/cmp_zero_op.inc
+ 09467f6d3704f99313ea2c4bb06ebadd  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/combine.c
  e9dbf1dca3c765be5169575cd8169e1c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/compute-ref-data.h
+ 5125cb4b3bd28f66b40d4070ec5aaf36  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/ignored_return_1.c
  0244d27c155f8b9253241c5715fda41f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/p64_p128.c
  dd4fa55b661e81d32222124388be6ee7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/pr98852.c
  96a535921f3e2c472376fe13d48fbc68  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/shrn-1.c
*************** ab7951fe68fbc1de8a165fc90b1f997f  gcc/te
*** 50335,50343 ****
  96e8da08d722aa741ecb0ac9781738a2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1.c
  bfeae76254480655a1facd4fd82b65d1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c
  c09bfdef2bfed68f3c6a6b918e6bf91f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c
! a54db878faa3bea8271a22771b397d97  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x2.c
! e140d0e200667c7fdd9e835b3fd289fa  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c
! de55d3e6dcf434bbc5a48b1708cd76d6  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c
  f6001854eaca71f68290006d17daa075  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_bf16_indices_1.c
  a1cd4982b079c6219414aebc78248e70  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f16_indices_1.c
  80a2ba3700244d2e74ac3529c34c3505  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f32_indices_1.c
--- 53641,53649 ----
  96e8da08d722aa741ecb0ac9781738a2  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1.c
  bfeae76254480655a1facd4fd82b65d1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_dup.c
  c09bfdef2bfed68f3c6a6b918e6bf91f  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1_lane.c
! 17c614af1921f2e7fb163173523b8f71  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x2.c
! 66913d837874172f4062f48c21afa4e1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x3.c
! 820775bc343f4dc9ff9c347e92187a37  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld1x4.c
  f6001854eaca71f68290006d17daa075  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_bf16_indices_1.c
  a1cd4982b079c6219414aebc78248e70  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f16_indices_1.c
  80a2ba3700244d2e74ac3529c34c3505  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vld2_lane_f32_indices_1.c
*************** a08f9cff18e4c066a55f7dfce2153c67  gcc/te
*** 50616,50624 ****
  1b45d47b5286f4d9bf275840e581f6d4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsra_n.c
  8b1ee8065de75dcd339b1d488127f4c1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsri_n.c
  ca3459eb580d2822a56b8028828f9c93  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1_lane.c
! c6cde8768e5302615eedd6bb924e8001  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c
! 90fae6c708d908fe5880cc91b238efce  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c
! 1449ce6a38293c90c7b13c99a762d19b  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c
  eed7e68a3ef3a53d357467c7229c8c7c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_bf16_indices_1.c
  49198211b17de08cd0ebc7d045615277  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f16_indices_1.c
  390af6ad7662822c0421998ff3ce55b5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f32_indices_1.c
--- 53922,53930 ----
  1b45d47b5286f4d9bf275840e581f6d4  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsra_n.c
  8b1ee8065de75dcd339b1d488127f4c1  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vsri_n.c
  ca3459eb580d2822a56b8028828f9c93  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1_lane.c
! aedb2b0b0e58ebe335d8b1a5299fbdad  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x2.c
! c9c8e87c9f04cb701215b8608f8e65a9  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x3.c
! dbedf25390f92e087fad13121afc62cb  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst1x4.c
  eed7e68a3ef3a53d357467c7229c8c7c  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_bf16_indices_1.c
  49198211b17de08cd0ebc7d045615277  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f16_indices_1.c
  390af6ad7662822c0421998ff3ce55b5  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vst2_lane_f32_indices_1.c
*************** c1a78c795e464e555618f9dae7cddf94  gcc/te
*** 50712,50726 ****
  0b2548f22a35b3ec92a54ba0e041a914  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c
  2765f7e1734188c461dff4680cc3ac28  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c
  2577b34228fa012b1608402ec8a858b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip_half.c
! 49ed1c2d874af633b852639c9cdf1205  gcc/testsuite/gcc.target/aarch64/aes-fuse-1.c
! a1f177ffd0862f4b4d2cf8089b641e17  gcc/testsuite/gcc.target/aarch64/aes-fuse-2.c
! 904fcc9a4fae07870b9cb9e077d40e2a  gcc/testsuite/gcc.target/aarch64/aes_1.c
! f579ec2c6b2aaae4154654375a568cb8  gcc/testsuite/gcc.target/aarch64/aes_2.c
! 6fc5ea113b9f1a18e380dabb486b1f93  gcc/testsuite/gcc.target/aarch64/aes_xor_combine.c
  b144bbaff9193d702e5e6e91e1c21a7a  gcc/testsuite/gcc.target/aarch64/and_const.c
  5625f9d0aa6dd393a4e54a9d8f0df277  gcc/testsuite/gcc.target/aarch64/and_const2.c
  e4ce46d425f8ea0594bf48b8fec9250a  gcc/testsuite/gcc.target/aarch64/ands_1.c
! 100509c83ee701a7aba05206a1b6cdc5  gcc/testsuite/gcc.target/aarch64/ands_2.c
  33021be5e1a12a1a0cdf4f5560175a64  gcc/testsuite/gcc.target/aarch64/ands_3.c
  69c287f57b5cb72e48f872fd46676fe6  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-1.c
  e9c25c1873b1c88e896cbfdc10e65bb2  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-2.c
--- 54018,54033 ----
  0b2548f22a35b3ec92a54ba0e041a914  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vuzp_half.c
  2765f7e1734188c461dff4680cc3ac28  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip.c
  2577b34228fa012b1608402ec8a858b7  gcc/testsuite/gcc.target/aarch64/advsimd-intrinsics/vzip_half.c
! 00d1d5f7b3d9f7e8706118e4b05618f7  gcc/testsuite/gcc.target/aarch64/aes-fuse-1.c
! 0aacb150da9d15974ff197ec7638a0db  gcc/testsuite/gcc.target/aarch64/aes-fuse-2.c
! f73e7d4ce7c3e327e953b946f2617247  gcc/testsuite/gcc.target/aarch64/aes_1.c
! d1d74e6c3fd8740a204f8a685d723756  gcc/testsuite/gcc.target/aarch64/aes_2.c
! ae9d490ad1228549fa8e44e7c17ec959  gcc/testsuite/gcc.target/aarch64/aes_xor_combine.c
! 87ffe2f549ae8342b95a0220082c56a9  gcc/testsuite/gcc.target/aarch64/ampere1-no_ldp_combine.c
  b144bbaff9193d702e5e6e91e1c21a7a  gcc/testsuite/gcc.target/aarch64/and_const.c
  5625f9d0aa6dd393a4e54a9d8f0df277  gcc/testsuite/gcc.target/aarch64/and_const2.c
  e4ce46d425f8ea0594bf48b8fec9250a  gcc/testsuite/gcc.target/aarch64/ands_1.c
! 5bf9d62485d332804592cff21b26e2a5  gcc/testsuite/gcc.target/aarch64/ands_2.c
  33021be5e1a12a1a0cdf4f5560175a64  gcc/testsuite/gcc.target/aarch64/ands_3.c
  69c287f57b5cb72e48f872fd46676fe6  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-1.c
  e9c25c1873b1c88e896cbfdc10e65bb2  gcc/testsuite/gcc.target/aarch64/arch-diagnostics-2.c
*************** e3003ad7bf9014830c6f9c58e85b082a  gcc/te
*** 50782,50788 ****
  e2630d4e02d27500ef42c075fea9596a  gcc/testsuite/gcc.target/aarch64/auto-init-4.c
  957708ea83978ca85b51a492c2777540  gcc/testsuite/gcc.target/aarch64/auto-init-5.c
  46b2038d6a8de54fe8ef127b8d150cc2  gcc/testsuite/gcc.target/aarch64/auto-init-6.c
! 28a7211f85135d0e2e4ec718a410924a  gcc/testsuite/gcc.target/aarch64/auto-init-7.c
  82a86967361fb139ed59816cd69721e4  gcc/testsuite/gcc.target/aarch64/auto-init-8.c
  630c742bc2781439914d777f777f39fb  gcc/testsuite/gcc.target/aarch64/auto-init-padding-1.c
  6152eb7bd8e8fb962404c859fd655d9d  gcc/testsuite/gcc.target/aarch64/auto-init-padding-10.c
--- 54089,54095 ----
  e2630d4e02d27500ef42c075fea9596a  gcc/testsuite/gcc.target/aarch64/auto-init-4.c
  957708ea83978ca85b51a492c2777540  gcc/testsuite/gcc.target/aarch64/auto-init-5.c
  46b2038d6a8de54fe8ef127b8d150cc2  gcc/testsuite/gcc.target/aarch64/auto-init-6.c
! bf9558c21c69b0ace0ae8237582b7a3c  gcc/testsuite/gcc.target/aarch64/auto-init-7.c
  82a86967361fb139ed59816cd69721e4  gcc/testsuite/gcc.target/aarch64/auto-init-8.c
  630c742bc2781439914d777f777f39fb  gcc/testsuite/gcc.target/aarch64/auto-init-padding-1.c
  6152eb7bd8e8fb962404c859fd655d9d  gcc/testsuite/gcc.target/aarch64/auto-init-padding-10.c
*************** b46f641f0dcc38f3e3de3f9a90702753  gcc/te
*** 50800,50820 ****
  855cfd1a9802da7ce78ef8175531090b  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_2.c
  d6a50d584b2477098572c1a78a597d52  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_3.c
  f223650db45b594cefc84bf8646fadbc  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_4.c
! 80645147bcd3458cfb49d92969b1cb0f  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_typecheck.c
  66b05a6a721964103c20b21e071477da  gcc/testsuite/gcc.target/aarch64/bfloat16_simd_1.c
  b13075188317e306c6968ca79a2b3829  gcc/testsuite/gcc.target/aarch64/bfloat16_simd_2.c
  99f62f94c817421cc9fe2b591336cf33  gcc/testsuite/gcc.target/aarch64/bfloat16_simd_3.c
! 4807521264a7a546cacc4edbe0411eda  gcc/testsuite/gcc.target/aarch64/bfloat16_vector_typecheck_1.c
! 49eb2d9705fe019a5255cd64f3381ec1  gcc/testsuite/gcc.target/aarch64/bfloat16_vector_typecheck_2.c
  61dac314ba6a1629bed37f7dc73024de  gcc/testsuite/gcc.target/aarch64/bfxil_1.c
  6378518f0a698c129d49f6f5eb229d63  gcc/testsuite/gcc.target/aarch64/bfxil_2.c
  6dc62170423fa4b690cc016a9b80d5a7  gcc/testsuite/gcc.target/aarch64/bic-bitmask-1.c
  e83c37f9be2990a7cda9a4dded6d46e3  gcc/testsuite/gcc.target/aarch64/bic_imm_1.c
  fdee6dc65f1aea1fb6a62ac64d03d92d  gcc/testsuite/gcc.target/aarch64/bics_1.c
! 4c64364ab565ca51532520ed434bbf58  gcc/testsuite/gcc.target/aarch64/bics_2.c
  946b6917c33aba8084d5a129bb3f3e87  gcc/testsuite/gcc.target/aarch64/bics_3.c
  7b6b35a52fbd180696cad88dbba07bee  gcc/testsuite/gcc.target/aarch64/bics_4.c
  dbf9d0b9347271827283e2f005a43518  gcc/testsuite/gcc.target/aarch64/bics_5.c
  11f6f9054981704db09136d921c586d4  gcc/testsuite/gcc.target/aarch64/branch-protection-attr-2.c
  b6fc023f262312a065344653a280322f  gcc/testsuite/gcc.target/aarch64/branch-protection-attr.c
  c45ad55864031fa75ffa4f831160438a  gcc/testsuite/gcc.target/aarch64/branch-protection-option-2.c
--- 54107,54133 ----
  855cfd1a9802da7ce78ef8175531090b  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_2.c
  d6a50d584b2477098572c1a78a597d52  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_3.c
  f223650db45b594cefc84bf8646fadbc  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_4.c
! ee084d41732fc33444a013c68c2fe7a9  gcc/testsuite/gcc.target/aarch64/bfloat16_scalar_typecheck.c
  66b05a6a721964103c20b21e071477da  gcc/testsuite/gcc.target/aarch64/bfloat16_simd_1.c
  b13075188317e306c6968ca79a2b3829  gcc/testsuite/gcc.target/aarch64/bfloat16_simd_2.c
  99f62f94c817421cc9fe2b591336cf33  gcc/testsuite/gcc.target/aarch64/bfloat16_simd_3.c
! 7fc4c28ccfdbc3afaf140439691cbab7  gcc/testsuite/gcc.target/aarch64/bfloat16_vector_typecheck_1.c
! 671f594119aea1682088a130c977c529  gcc/testsuite/gcc.target/aarch64/bfloat16_vector_typecheck_2.c
  61dac314ba6a1629bed37f7dc73024de  gcc/testsuite/gcc.target/aarch64/bfxil_1.c
  6378518f0a698c129d49f6f5eb229d63  gcc/testsuite/gcc.target/aarch64/bfxil_2.c
  6dc62170423fa4b690cc016a9b80d5a7  gcc/testsuite/gcc.target/aarch64/bic-bitmask-1.c
  e83c37f9be2990a7cda9a4dded6d46e3  gcc/testsuite/gcc.target/aarch64/bic_imm_1.c
  fdee6dc65f1aea1fb6a62ac64d03d92d  gcc/testsuite/gcc.target/aarch64/bics_1.c
! 592b25a885cc53e513bf8ee029c3b3f7  gcc/testsuite/gcc.target/aarch64/bics_2.c
  946b6917c33aba8084d5a129bb3f3e87  gcc/testsuite/gcc.target/aarch64/bics_3.c
  7b6b35a52fbd180696cad88dbba07bee  gcc/testsuite/gcc.target/aarch64/bics_4.c
  dbf9d0b9347271827283e2f005a43518  gcc/testsuite/gcc.target/aarch64/bics_5.c
+ c79466c15619cd90c1f890045aec5cf1  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align16-O2-extra.c
+ bd617dea5865297dc7c83169eea4311f  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align16-O2.c
+ fa7780f2752e4fa50b018aad6ab46b33  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align32-O2-extra.c
+ 45fd75f2db6f8fa64db6d2ca793f30a9  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align32-O2.c
+ ba1aa14b7548fcc22d232467eb0998c9  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning-align8-O2.c
+ f7378d596bb7308498db40ad34fd8dab  gcc/testsuite/gcc.target/aarch64/bitfield-abi-warning.h
  11f6f9054981704db09136d921c586d4  gcc/testsuite/gcc.target/aarch64/branch-protection-attr-2.c
  b6fc023f262312a065344653a280322f  gcc/testsuite/gcc.target/aarch64/branch-protection-attr.c
  c45ad55864031fa75ffa4f831160438a  gcc/testsuite/gcc.target/aarch64/branch-protection-option-2.c
*************** f0d278d66f3c6d099e299ada3c0f2f5a  gcc/te
*** 50870,50876 ****
  e8f539acbee96c6f26c7eb82b2275f73  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-2.c
  bacc2bf13ff0d50de57c856b6cfe89f2  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-3.c
  204fe994da11aab4c0f8f0a889d976ad  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-4.c
! 1a7ccb40e3e56d330628a0d87661662b  gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
  f88dcec7a52a0d115da213f16170f154  gcc/testsuite/gcc.target/aarch64/cpunative/info_0
  8d55917f3f8bda7a065c7a0f0fb75c4b  gcc/testsuite/gcc.target/aarch64/cpunative/info_1
  ee8eca9c8007ef2044353709e26a2510  gcc/testsuite/gcc.target/aarch64/cpunative/info_10
--- 54183,54189 ----
  e8f539acbee96c6f26c7eb82b2275f73  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-2.c
  bacc2bf13ff0d50de57c856b6cfe89f2  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-3.c
  204fe994da11aab4c0f8f0a889d976ad  gcc/testsuite/gcc.target/aarch64/cpu-diagnostics-4.c
! 9cfd4d4ad02332bd9b9d2ef4e80d85c6  gcc/testsuite/gcc.target/aarch64/cpunative/aarch64-cpunative.exp
  f88dcec7a52a0d115da213f16170f154  gcc/testsuite/gcc.target/aarch64/cpunative/info_0
  8d55917f3f8bda7a065c7a0f0fb75c4b  gcc/testsuite/gcc.target/aarch64/cpunative/info_1
  ee8eca9c8007ef2044353709e26a2510  gcc/testsuite/gcc.target/aarch64/cpunative/info_10
*************** c84ec68e16463ed98fee3cd8cb4e230f  gcc/te
*** 50878,50910 ****
  2ebc5e4d2162c162fa9a2f8741fa9f9c  gcc/testsuite/gcc.target/aarch64/cpunative/info_12
  f88dcec7a52a0d115da213f16170f154  gcc/testsuite/gcc.target/aarch64/cpunative/info_13
  0e1794c5980d78e11a9aff64bd2dc530  gcc/testsuite/gcc.target/aarch64/cpunative/info_14
! a83f195cec2faf2fbf29ad0e4f2fa03e  gcc/testsuite/gcc.target/aarch64/cpunative/info_15
! 6b4accde7a3f09a7ad6afd867b6b510e  gcc/testsuite/gcc.target/aarch64/cpunative/info_16
! 6b4accde7a3f09a7ad6afd867b6b510e  gcc/testsuite/gcc.target/aarch64/cpunative/info_17
  4b5005c4193fa80868408bf4492b4e3b  gcc/testsuite/gcc.target/aarch64/cpunative/info_2
  4c4387d4071cf10c793b4efe11f43439  gcc/testsuite/gcc.target/aarch64/cpunative/info_3
  d8a7caffcc99feff5312001aed51cd38  gcc/testsuite/gcc.target/aarch64/cpunative/info_4
  195bf754aeaf6d4fa8426e8fb4a553ce  gcc/testsuite/gcc.target/aarch64/cpunative/info_5
  73a2f048b60d92f4c6f8167c05bbd47c  gcc/testsuite/gcc.target/aarch64/cpunative/info_6
  a4639eec7e5e20089dff980c4a41ff83  gcc/testsuite/gcc.target/aarch64/cpunative/info_7
! a3f5b0d69242cb74c8d006774761a29d  gcc/testsuite/gcc.target/aarch64/cpunative/info_8
! 9dd177e4d6a3fa53aab31954c3ac6229  gcc/testsuite/gcc.target/aarch64/cpunative/info_9
! 1b5fa388b88380573c74c295f36c4e0a  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_0.c
  1dbb8e9e14a8f091753c4cdc0bb18156  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_1.c
! eb5a59b2e1e4230e6edaabbfb42d3908  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_10.c
  9066b157ae07f93acfab6f4f76a1ed40  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_11.c
  d381cd3e88e2680adaf2d96ab40c7f36  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_12.c
! c033638d0946e9ee53dca3d93087a1e9  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_13.c
  6053245b4b2e80b7e957f46340ac4844  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_14.c
  1edb30a14c92c1f3d8768f2fe63085ab  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_15.c
! 8e02152777262240d455bd509c70d382  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_16.c
! 4fcc3084ec949e5f38385c554799a1f1  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_17.c
! ae5358d52499de77a7a1beac3683c709  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_2.c
  5932d955ed9dc11faefb9f331763ff2c  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_3.c
  cfd988497c936bc048f9b952dc82ebac  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_4.c
  f40714de7a09b627eb98087b5a7cff0a  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_5.c
! c90274917a74a6e06b5774cd05a57c90  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_6.c
! 8d0c9405c9362c5b0d9d432d05e1a3d0  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_7.c
  464a3107496c61df0ccb63ddc46e787f  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_8.c
  3a30be9f048052ce41672d65dd8f9fed  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_9.c
  e8ccec6b2fb8a30023cf88dcf2548dba  gcc/testsuite/gcc.target/aarch64/cpymem-q-reg_1.c
--- 54191,54233 ----
  2ebc5e4d2162c162fa9a2f8741fa9f9c  gcc/testsuite/gcc.target/aarch64/cpunative/info_12
  f88dcec7a52a0d115da213f16170f154  gcc/testsuite/gcc.target/aarch64/cpunative/info_13
  0e1794c5980d78e11a9aff64bd2dc530  gcc/testsuite/gcc.target/aarch64/cpunative/info_14
! 1c9df40648dbb2c6c92ad819f6aef8fc  gcc/testsuite/gcc.target/aarch64/cpunative/info_15
! d205b924c7f019cc69da5720c3107c22  gcc/testsuite/gcc.target/aarch64/cpunative/info_16
! d205b924c7f019cc69da5720c3107c22  gcc/testsuite/gcc.target/aarch64/cpunative/info_17
! 77b9d125c413bdfe2a579cf2a959f461  gcc/testsuite/gcc.target/aarch64/cpunative/info_18
! 69ab0ad5166b545cfdc360f70e59803d  gcc/testsuite/gcc.target/aarch64/cpunative/info_19
  4b5005c4193fa80868408bf4492b4e3b  gcc/testsuite/gcc.target/aarch64/cpunative/info_2
+ 21db1247990bbb695911318f39d8bd85  gcc/testsuite/gcc.target/aarch64/cpunative/info_20
+ d335e36067020cadd7d9a133513eafd0  gcc/testsuite/gcc.target/aarch64/cpunative/info_21
+ 10b507183ea6ee447505b829be51e826  gcc/testsuite/gcc.target/aarch64/cpunative/info_22
  4c4387d4071cf10c793b4efe11f43439  gcc/testsuite/gcc.target/aarch64/cpunative/info_3
  d8a7caffcc99feff5312001aed51cd38  gcc/testsuite/gcc.target/aarch64/cpunative/info_4
  195bf754aeaf6d4fa8426e8fb4a553ce  gcc/testsuite/gcc.target/aarch64/cpunative/info_5
  73a2f048b60d92f4c6f8167c05bbd47c  gcc/testsuite/gcc.target/aarch64/cpunative/info_6
  a4639eec7e5e20089dff980c4a41ff83  gcc/testsuite/gcc.target/aarch64/cpunative/info_7
! f8a42f4cf707ff9f63c265a3286517d1  gcc/testsuite/gcc.target/aarch64/cpunative/info_8
! b2078512594dc486f0ff5f2a787bc11a  gcc/testsuite/gcc.target/aarch64/cpunative/info_9
! 001023459e427c6da4b2a886baaf3e9c  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_0.c
  1dbb8e9e14a8f091753c4cdc0bb18156  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_1.c
! c7370b7498d9a03df58bea8b1defa2f7  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_10.c
  9066b157ae07f93acfab6f4f76a1ed40  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_11.c
  d381cd3e88e2680adaf2d96ab40c7f36  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_12.c
! f4a3bc92b6cd54dfb06948010e6af5de  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_13.c
  6053245b4b2e80b7e957f46340ac4844  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_14.c
  1edb30a14c92c1f3d8768f2fe63085ab  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_15.c
! bd3077fc2687bf509987850e7707ea80  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_16.c
! 1f77dd934a211344d8c9fcc3d6a12401  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_17.c
! 7f6f8f8e6241c818ea037d533dc71d1a  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_18.c
! 476b3fa2c761d7942530b1eae27aec1b  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_19.c
! 9d16997853f8148025ecc0370b78842f  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_2.c
! 6f01c32735c284b9b5c64340ca11fbbe  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_20.c
! e033630a50ba8eda1384e5633631743a  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_21.c
! b261e4b3a92afb198bb5a15e54284bae  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_22.c
  5932d955ed9dc11faefb9f331763ff2c  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_3.c
  cfd988497c936bc048f9b952dc82ebac  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_4.c
  f40714de7a09b627eb98087b5a7cff0a  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_5.c
! 9852d3f0d62cf759f60853c972dbbedb  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_6.c
! c554faf0b14292eccb2f12f903c5ec3f  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_7.c
  464a3107496c61df0ccb63ddc46e787f  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_8.c
  3a30be9f048052ce41672d65dd8f9fed  gcc/testsuite/gcc.target/aarch64/cpunative/native_cpu_9.c
  e8ccec6b2fb8a30023cf88dcf2548dba  gcc/testsuite/gcc.target/aarch64/cpymem-q-reg_1.c
*************** eebd6ca7c2a0fe9846bf88388a00d172  gcc/te
*** 50917,50927 ****
--- 54240,54258 ----
  6410b551a20f2f0c610819e3d5145b76  gcc/testsuite/gcc.target/aarch64/csinv-neg-1.c
  dee20761ab09d0689a56f667594a30a7  gcc/testsuite/gcc.target/aarch64/csinv-neg.c
  daa118ed7835c32ea71c32e65d22689f  gcc/testsuite/gcc.target/aarch64/csneg-1.c
+ 51f175c396c9a9a9251dd98f94a7ebf4  gcc/testsuite/gcc.target/aarch64/cssc_1.c
+ 05ea5743886230b700d9517872bc7739  gcc/testsuite/gcc.target/aarch64/cssc_2.c
+ f8584ef5813441112b0bfb8283a130fd  gcc/testsuite/gcc.target/aarch64/cssc_3.c
+ 697e2284b2a0af960516eca1893e9ed0  gcc/testsuite/gcc.target/aarch64/cssc_4.c
+ c6f22c75d128166e2734ec28d48d349b  gcc/testsuite/gcc.target/aarch64/cssc_5.c
  f15d1ff83066971ce9a42593ae9e147c  gcc/testsuite/gcc.target/aarch64/ctz.c
  66e80d99734f8cef1f2093c52336c4c2  gcc/testsuite/gcc.target/aarch64/cvtf_1.c
  aae1cd7b85cfa4ed915a5b8a0b263fda  gcc/testsuite/gcc.target/aarch64/dbl_mov_immediate_1.c
  063fb3cb3ef8c03670a39beb490eee85  gcc/testsuite/gcc.target/aarch64/diag_aka_1.c
+ 99d13b07988399a087cb53856c728972  gcc/testsuite/gcc.target/aarch64/div-by-bitmask.c
  5a0fb82365f402f7b5e039bc723a3020  gcc/testsuite/gcc.target/aarch64/dwarf-cfa-reg.c
+ a9ccf8cef71e90daa83ae00204fd983c  gcc/testsuite/gcc.target/aarch64/dwarf_reg_size_1.c
+ 5fdc01fccf89920c24ce6dadea7114d3  gcc/testsuite/gcc.target/aarch64/dwarf_reg_size_2.c
  337c39f85c95ad488bb585665bf18a76  gcc/testsuite/gcc.target/aarch64/eh_return.c
  0d0e2a489d3255344941fbdef5cd849a  gcc/testsuite/gcc.target/aarch64/eon_1.c
  8dac5a05d1eca8860b3df16bc7b03f2a  gcc/testsuite/gcc.target/aarch64/extend-syntax.c
*************** a1212235242dd12baac6ac6d3f0f04ad  gcc/te
*** 50986,50992 ****
  37fb660ad953888e296980c0d2b85a7c  gcc/testsuite/gcc.target/aarch64/fnmul-4.c
  a9470d48ec15369aea11218770e41e89  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_1.c
  1a65d9a8643a40367284cf31d1d3b963  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_2.c
! 16bbf83d0ec6ab08b76e56a77e144f6b  gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
  c789e3d353f9e2287a4c9ef36dffcb2f  gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
  33e7feca82b3b0b54d58bbcd49d61f40  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h
  7aa945158b0a4b5f86014c0b7d857a22  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_1.c
--- 54317,54323 ----
  37fb660ad953888e296980c0d2b85a7c  gcc/testsuite/gcc.target/aarch64/fnmul-4.c
  a9470d48ec15369aea11218770e41e89  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_1.c
  1a65d9a8643a40367284cf31d1d3b963  gcc/testsuite/gcc.target/aarch64/fp16/f16_convs_2.c
! dc5ab594228ca6b61b3ba51dad0c5969  gcc/testsuite/gcc.target/aarch64/fp16/fp16.exp
  c789e3d353f9e2287a4c9ef36dffcb2f  gcc/testsuite/gcc.target/aarch64/fp16/set_zero_1.c
  33e7feca82b3b0b54d58bbcd49d61f40  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high.h
  7aa945158b0a4b5f86014c0b7d857a22  gcc/testsuite/gcc.target/aarch64/fp16_fmul_high_1.c
*************** c4aa8a1f0ad2e74a9d73da81126c1f7e  gcc/te
*** 51011,51017 ****
  22ce675229a62ee836f1fbec03e0a9f1  gcc/testsuite/gcc.target/aarch64/frint_double.c
  e415b924a99a0696f070ee6cf8357d54  gcc/testsuite/gcc.target/aarch64/frint_float.c
  7f8140bc0d65dde3896572f2fe084146  gcc/testsuite/gcc.target/aarch64/fuse-caller-save.c
! 6ed33457f293332f03ce167c620b35b0  gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c
  814f2a8701d47a79b645e43e6fe31b57  gcc/testsuite/gcc.target/aarch64/get_fpcr64_1.c
  dcfff550a1456524fd7870f0bec66e6f  gcc/testsuite/gcc.target/aarch64/get_fpsr64_1.c
  77410b35f9bf6bc7cf2a51fbc9461727  gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c
--- 54342,54348 ----
  22ce675229a62ee836f1fbec03e0a9f1  gcc/testsuite/gcc.target/aarch64/frint_double.c
  e415b924a99a0696f070ee6cf8357d54  gcc/testsuite/gcc.target/aarch64/frint_float.c
  7f8140bc0d65dde3896572f2fe084146  gcc/testsuite/gcc.target/aarch64/fuse-caller-save.c
! 4b8ae6f45383d71443f074a2d98751fe  gcc/testsuite/gcc.target/aarch64/fuse_adrp_add_1.c
  814f2a8701d47a79b645e43e6fe31b57  gcc/testsuite/gcc.target/aarch64/get_fpcr64_1.c
  dcfff550a1456524fd7870f0bec66e6f  gcc/testsuite/gcc.target/aarch64/get_fpsr64_1.c
  77410b35f9bf6bc7cf2a51fbc9461727  gcc/testsuite/gcc.target/aarch64/get_lane_f16_1.c
*************** dcfff550a1456524fd7870f0bec66e6f  gcc/te
*** 51019,51024 ****
--- 54350,54357 ----
  818995f657f497ee60b80e64df6087a6  gcc/testsuite/gcc.target/aarch64/gtu_to_ltu_cmp_1.c
  5fd4c4637acf41fecfb9bd79e8372c44  gcc/testsuite/gcc.target/aarch64/gtu_to_ltu_cmp_2.c
  6c27a7fd52e09c1d9401d5c4851b2cbf  gcc/testsuite/gcc.target/aarch64/hfmode_ins_1.c
+ f7353dd395d4a06a8cb38e34a076fb39  gcc/testsuite/gcc.target/aarch64/if-compare_1.c
+ 65020835c6bbf8049ce4f2254d0ae7cb  gcc/testsuite/gcc.target/aarch64/if-compare_2.c
  b90f3600518fbc46af4cd4bd1cdb7186  gcc/testsuite/gcc.target/aarch64/ifcvt_multiple_sets_subreg_1.c
  af0e32f53ec629289269248abb106c2e  gcc/testsuite/gcc.target/aarch64/iinline-attr-1.c
  aefe1b3bc82bc3b13544821b70918a4f  gcc/testsuite/gcc.target/aarch64/imm_choice_comparison.c
*************** caaafb769b844ad26e03a5f739c93732  gcc/te
*** 51028,51037 ****
--- 54361,54376 ----
  b37a5781e82510dfa7ecdf3ce4922a58  gcc/testsuite/gcc.target/aarch64/insv_1.c
  a897ae01d807185bd4ca7f1587e181d9  gcc/testsuite/gcc.target/aarch64/insv_2.c
  18f0bd2efa738426efce6208b83e0cbd  gcc/testsuite/gcc.target/aarch64/int_mov_immediate_1.c
+ f4cfa8c3ddedd1eb26e5f20fdfac88d1  gcc/testsuite/gcc.target/aarch64/interleave-init-1.c
  2feabf7a23a544e445cd6f1d402811d0  gcc/testsuite/gcc.target/aarch64/lane-bound-1.c
  49907aab7182a2a85495455c2d574117  gcc/testsuite/gcc.target/aarch64/lane-bound-2.c
  81256a6fac965eea861536637ff35013  gcc/testsuite/gcc.target/aarch64/large_struct_copy.c
  508532c90ef5da7602402b5f0076c554  gcc/testsuite/gcc.target/aarch64/large_struct_copy_2.c
+ aa51cad6adc25f2ceabe6717f164d378  gcc/testsuite/gcc.target/aarch64/ldapr-sext.c
+ 38fc6dd344a380994437f88ed387faca  gcc/testsuite/gcc.target/aarch64/ldapr-zext.c
+ 68214d6b949317dd07f6359cdaaaf7d5  gcc/testsuite/gcc.target/aarch64/ldapr.c
+ e44d2a3726404fa7172221c7b20729b8  gcc/testsuite/gcc.target/aarch64/ldar_1.c
+ 8d2d09f7823d54ba6cd111f061a9329c  gcc/testsuite/gcc.target/aarch64/ldar_2.c
  c4d33c58db6c2e77df14b83ac56be1ec  gcc/testsuite/gcc.target/aarch64/ldp_stp_1.c
  d60171b608bda1a5cf0258e031bb3520  gcc/testsuite/gcc.target/aarch64/ldp_stp_10.c
  1786c5d34b0f7cceace3327361040bde  gcc/testsuite/gcc.target/aarch64/ldp_stp_11.c
*************** cbdc754fdeb0adb91fae9b724bc37683  gcc/te
*** 51045,51050 ****
--- 54384,54394 ----
  cb8abbb0950e72e68d86ee3959b22eee  gcc/testsuite/gcc.target/aarch64/ldp_stp_18.c
  c5975ec22e631fd84b727d806f60c43b  gcc/testsuite/gcc.target/aarch64/ldp_stp_19.c
  a942ef178dbff47e07909da75486489e  gcc/testsuite/gcc.target/aarch64/ldp_stp_2.c
+ 9e261e1619ca4e81d153ea9758d5be03  gcc/testsuite/gcc.target/aarch64/ldp_stp_20.c
+ 0fed88402afe9cba3c6cab88369753b9  gcc/testsuite/gcc.target/aarch64/ldp_stp_21.c
+ 13127d30e930179c95b9c11cf172855d  gcc/testsuite/gcc.target/aarch64/ldp_stp_22.c
+ a49bb74e71ea598c3c09fede3892b1f2  gcc/testsuite/gcc.target/aarch64/ldp_stp_23.c
+ 65457a83421b49a3500338270e1bec47  gcc/testsuite/gcc.target/aarch64/ldp_stp_24.c
  a8da8b18aa0d7e9598ba65e8e634ad45  gcc/testsuite/gcc.target/aarch64/ldp_stp_3.c
  cf3224c75efba2a7cdab28293aa78058  gcc/testsuite/gcc.target/aarch64/ldp_stp_4.c
  c61389721149fafe5b576ac5eac3e81d  gcc/testsuite/gcc.target/aarch64/ldp_stp_5.c
*************** cb18e653bc36a91d64d93edcc2632490  gcc/te
*** 51083,51089 ****
  424a2b5eafd789db7d0b5caa9628ff62  gcc/testsuite/gcc.target/aarch64/merge_trunc1.c
  4eed4dd5aa94cdbafdb452fb4f2fa939  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_1.c
  b89c285bf72a3b1d134d2ed30e7955a8  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_2.c
! 1c6436442e97352feb4470e7662eb7ae  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_3.c
  c9a7887e4088a8e959845ccde4eb948a  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
  fa90b8a378a809b67f8356f285f867cb  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_5.c
  c70316e68cbf96797221358b1bdb80cc  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_6.c
--- 54427,54433 ----
  424a2b5eafd789db7d0b5caa9628ff62  gcc/testsuite/gcc.target/aarch64/merge_trunc1.c
  4eed4dd5aa94cdbafdb452fb4f2fa939  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_1.c
  b89c285bf72a3b1d134d2ed30e7955a8  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_2.c
! 640727d5baa92078d43b34d07d8bc9ea  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_3.c
  c9a7887e4088a8e959845ccde4eb948a  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_4.c
  fa90b8a378a809b67f8356f285f867cb  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_5.c
  c70316e68cbf96797221358b1bdb80cc  gcc/testsuite/gcc.target/aarch64/mgeneral-regs_6.c
*************** cb35ae597b395ee5d00d96a082dfbd6a  gcc/te
*** 51110,51122 ****
--- 54454,54492 ----
  1a56fe0cba4f9ce878a71c556244fa39  gcc/testsuite/gcc.target/aarch64/mops_2.c
  9e207cc04909dc52e63cc6c37858b5e4  gcc/testsuite/gcc.target/aarch64/mops_3.c
  50151365e68fe7717c740c37be863cc2  gcc/testsuite/gcc.target/aarch64/mops_4.c
+ fd48ccb944d2f2990e98c181bd06ec24  gcc/testsuite/gcc.target/aarch64/mops_5.c
+ 6b6269dcfa6bceb701b7943ad5703be6  gcc/testsuite/gcc.target/aarch64/mops_6.c
+ a3777fac4759dcd3290aa64c1d8c180e  gcc/testsuite/gcc.target/aarch64/mops_7.c
+ fe9f5338c111dab8f276e8a4494a0dcb  gcc/testsuite/gcc.target/aarch64/movdf_1.c
  4eaf2d9267fe13f12a85ce4cf0fa7ce3  gcc/testsuite/gcc.target/aarch64/movdi_1.c
+ 77bdacd4884727d28cdf331a4228bec9  gcc/testsuite/gcc.target/aarch64/movdi_2.c
+ 66870a63499684530fce81f912341322  gcc/testsuite/gcc.target/aarch64/movhf_1.c
+ 06e414f021c8fab509bb158c2da3d270  gcc/testsuite/gcc.target/aarch64/movhi_1.c
  f6ab612d7f8f0a3e569b67ec3d18908f  gcc/testsuite/gcc.target/aarch64/movi_1.c
  85fbc78b9315391c60d6d963528f56b8  gcc/testsuite/gcc.target/aarch64/movi_hf.c
  f3845a0299f51ecef1ccd2bcae060294  gcc/testsuite/gcc.target/aarch64/movk.c
  ae82e1a65f9bde05cbb20490441434f5  gcc/testsuite/gcc.target/aarch64/movk_2.c
+ eb1f3b98910d52b14f033a9a92438cd5  gcc/testsuite/gcc.target/aarch64/movk_3.c
+ 8f9a97c266a8915a1e8b920efda091a7  gcc/testsuite/gcc.target/aarch64/movqi_1.c
+ d4c27b38956ec8fb167aea6848768109  gcc/testsuite/gcc.target/aarch64/movsf_1.c
+ 98d49c1bf6bb77a3f05ffd1ccaccde82  gcc/testsuite/gcc.target/aarch64/movsi_1.c
  5260008b5bf426c473c9db5529ca9d42  gcc/testsuite/gcc.target/aarch64/movtf_1.c
+ 39df00ec4bd1411c1c8d69fd09d821b5  gcc/testsuite/gcc.target/aarch64/movtf_2.c
  823357b095860206610462e9b4d49d8f  gcc/testsuite/gcc.target/aarch64/movti_1.c
+ 61256683e06efa0fd21cd86e4829697d  gcc/testsuite/gcc.target/aarch64/movti_2.c
+ db4d3fa1b5ba501f604db0f5bf16208a  gcc/testsuite/gcc.target/aarch64/movv16qi_1.c
+ 28ed27a67067dfa66b0e20cedba187bb  gcc/testsuite/gcc.target/aarch64/movv16qi_2.c
+ 5c90437514d5456256912d55e745eecd  gcc/testsuite/gcc.target/aarch64/movv16qi_3.c
+ 823e45606e78e31955727b7d97c25e6d  gcc/testsuite/gcc.target/aarch64/movv2di_1.c
+ e1413ddcbf283ae1312893ff82fd70b8  gcc/testsuite/gcc.target/aarch64/movv2x16qi_1.c
+ 970594770208e13b0c5fbbf26313b2e7  gcc/testsuite/gcc.target/aarch64/movv2x8qi_1.c
+ ffdee11a6f33cebb0532821449410ff1  gcc/testsuite/gcc.target/aarch64/movv3x16qi_1.c
+ 3f3b41a6f5d2cc181a5ae05a972cfe65  gcc/testsuite/gcc.target/aarch64/movv3x8qi_1.c
+ f657a0706821f5c7079874fc569e4949  gcc/testsuite/gcc.target/aarch64/movv4x16qi_1.c
+ a642072306e978a39000ad2039303e17  gcc/testsuite/gcc.target/aarch64/movv4x8qi_1.c
+ 5e04d57c61b44aa3f8b127d73d163ce0  gcc/testsuite/gcc.target/aarch64/movv8qi_1.c
+ 5258818fc0a55113c967990ffec0ef08  gcc/testsuite/gcc.target/aarch64/movv8qi_2.c
+ 40eb481cbe44f83df2c6cf97bbd02e6d  gcc/testsuite/gcc.target/aarch64/movv8qi_3.c
  db03f22087ec85856b46abc08df18a7c  gcc/testsuite/gcc.target/aarch64/mul_intrinsic_1.c
  b9c785119e80b786b5898ebaa7db0700  gcc/testsuite/gcc.target/aarch64/mult-synth_1.c
  5e37be111c4688833b9693bc6302f1ed  gcc/testsuite/gcc.target/aarch64/mult-synth_2.c
*************** fb19dd57034e67da13f2a5b22815fcc5  gcc/te
*** 51138,51150 ****
  56f1cae94d74d605f3127ff54df58e5e  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_2.c
  9567b5cb1744b0c5a301604d3a25bbc2  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
  13a63494139cde5273b13f2e4eb58493  gcc/testsuite/gcc.target/aarch64/nofp_1.c
  31192c5ad4b7d30f5e3a3f25a5e74741  gcc/testsuite/gcc.target/aarch64/noplt_1.c
  390e3deb9378ba437cf8138949f7153b  gcc/testsuite/gcc.target/aarch64/noplt_2.c
  e1e28ce510ce90ec2cf4b8863b5abb4d  gcc/testsuite/gcc.target/aarch64/noplt_3.c
  e061c7b1af333a61965c081818e07940  gcc/testsuite/gcc.target/aarch64/nospill.c
  5d43e2829488a18473d4b2ca37cdaf82  gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c
  773bc5b0a8368679f7d4856edfb4d60f  gcc/testsuite/gcc.target/aarch64/options_set_1.c
- d6e1d0cb7cb44f50985db131c62ba20b  gcc/testsuite/gcc.target/aarch64/options_set_10.c
  c5e8bab80eb00f021421951e89f331a9  gcc/testsuite/gcc.target/aarch64/options_set_11.c
  3a1012ebba55424a028d07c19041e778  gcc/testsuite/gcc.target/aarch64/options_set_12.c
  7f1d3dc87c84e390ee1213d03242532f  gcc/testsuite/gcc.target/aarch64/options_set_13.c
--- 54508,54520 ----
  56f1cae94d74d605f3127ff54df58e5e  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_2.c
  9567b5cb1744b0c5a301604d3a25bbc2  gcc/testsuite/gcc.target/aarch64/no-inline-lrint_3.c
  13a63494139cde5273b13f2e4eb58493  gcc/testsuite/gcc.target/aarch64/nofp_1.c
+ b0e90aa46397bdde3bb349cc558012c7  gcc/testsuite/gcc.target/aarch64/nofp_2.c
  31192c5ad4b7d30f5e3a3f25a5e74741  gcc/testsuite/gcc.target/aarch64/noplt_1.c
  390e3deb9378ba437cf8138949f7153b  gcc/testsuite/gcc.target/aarch64/noplt_2.c
  e1e28ce510ce90ec2cf4b8863b5abb4d  gcc/testsuite/gcc.target/aarch64/noplt_3.c
  e061c7b1af333a61965c081818e07940  gcc/testsuite/gcc.target/aarch64/nospill.c
  5d43e2829488a18473d4b2ca37cdaf82  gcc/testsuite/gcc.target/aarch64/nosplit-di-const-volatile_1.c
  773bc5b0a8368679f7d4856edfb4d60f  gcc/testsuite/gcc.target/aarch64/options_set_1.c
  c5e8bab80eb00f021421951e89f331a9  gcc/testsuite/gcc.target/aarch64/options_set_11.c
  3a1012ebba55424a028d07c19041e778  gcc/testsuite/gcc.target/aarch64/options_set_12.c
  7f1d3dc87c84e390ee1213d03242532f  gcc/testsuite/gcc.target/aarch64/options_set_13.c
*************** a1bbe83545c5254641ff6b90ee835c61  gcc/te
*** 51154,51160 ****
  7de15e6e1084033d6b95a78446e19759  gcc/testsuite/gcc.target/aarch64/options_set_17.c
  65f58e1706d189216515431bf57337c7  gcc/testsuite/gcc.target/aarch64/options_set_18.c
  bbac3d5e80988a3a19fd1bad42c38ac0  gcc/testsuite/gcc.target/aarch64/options_set_19.c
! 38913b9d93786135bbb9f14461fcb591  gcc/testsuite/gcc.target/aarch64/options_set_2.c
  22795f64e718b99e4ce25b666f1d0146  gcc/testsuite/gcc.target/aarch64/options_set_20.c
  7155a606924a2522e139f80e006686c0  gcc/testsuite/gcc.target/aarch64/options_set_21.c
  a92fd71ffb40052125105d63684b3c88  gcc/testsuite/gcc.target/aarch64/options_set_22.c
--- 54524,54530 ----
  7de15e6e1084033d6b95a78446e19759  gcc/testsuite/gcc.target/aarch64/options_set_17.c
  65f58e1706d189216515431bf57337c7  gcc/testsuite/gcc.target/aarch64/options_set_18.c
  bbac3d5e80988a3a19fd1bad42c38ac0  gcc/testsuite/gcc.target/aarch64/options_set_19.c
! 92e6cecbbd6027815cc383aea7f6506d  gcc/testsuite/gcc.target/aarch64/options_set_2.c
  22795f64e718b99e4ce25b666f1d0146  gcc/testsuite/gcc.target/aarch64/options_set_20.c
  7155a606924a2522e139f80e006686c0  gcc/testsuite/gcc.target/aarch64/options_set_21.c
  a92fd71ffb40052125105d63684b3c88  gcc/testsuite/gcc.target/aarch64/options_set_22.c
*************** cd36419db4c9900c9708bb37b8a098cf  gcc/te
*** 51162,51171 ****
  0c4290a59a2e292e41e0c29bb697fc3a  gcc/testsuite/gcc.target/aarch64/options_set_24.c
  4859272e9512afe43a0babeaeb697569  gcc/testsuite/gcc.target/aarch64/options_set_25.c
  22795f64e718b99e4ce25b666f1d0146  gcc/testsuite/gcc.target/aarch64/options_set_26.c
! 7f4c8da035a3fac4e823b922b071f373  gcc/testsuite/gcc.target/aarch64/options_set_3.c
! 6acdd0168da65a1ce59810d19a1bda89  gcc/testsuite/gcc.target/aarch64/options_set_4.c
  8f27bf551906208d070df1b7012a68a2  gcc/testsuite/gcc.target/aarch64/options_set_5.c
! 18a48c819a40a0d0c0bb86b8cb3ccab2  gcc/testsuite/gcc.target/aarch64/options_set_6.c
  3c7fc6e40b171e0b03c095ccf5773192  gcc/testsuite/gcc.target/aarch64/options_set_7.c
  51f0102245f943732739fa2da8b863ee  gcc/testsuite/gcc.target/aarch64/options_set_8.c
  df4e11a3114d2114f873039e70aa26eb  gcc/testsuite/gcc.target/aarch64/options_set_9.c
--- 54532,54541 ----
  0c4290a59a2e292e41e0c29bb697fc3a  gcc/testsuite/gcc.target/aarch64/options_set_24.c
  4859272e9512afe43a0babeaeb697569  gcc/testsuite/gcc.target/aarch64/options_set_25.c
  22795f64e718b99e4ce25b666f1d0146  gcc/testsuite/gcc.target/aarch64/options_set_26.c
! dadab3a539de6a89bb855b42477abf45  gcc/testsuite/gcc.target/aarch64/options_set_3.c
! 126860f6709220fb9557ef4fc3c09ed7  gcc/testsuite/gcc.target/aarch64/options_set_4.c
  8f27bf551906208d070df1b7012a68a2  gcc/testsuite/gcc.target/aarch64/options_set_5.c
! 4cf7502e3271943a7d36d78ab82b8bbf  gcc/testsuite/gcc.target/aarch64/options_set_6.c
  3c7fc6e40b171e0b03c095ccf5773192  gcc/testsuite/gcc.target/aarch64/options_set_7.c
  51f0102245f943732739fa2da8b863ee  gcc/testsuite/gcc.target/aarch64/options_set_8.c
  df4e11a3114d2114f873039e70aa26eb  gcc/testsuite/gcc.target/aarch64/options_set_9.c
*************** c634a3e3729a1cf014159113aaaa5923  gcc/te
*** 51179,51185 ****
  73044733387a8f754915be808c060624  gcc/testsuite/gcc.target/aarch64/pmull_1.c
  629072fafe5767161ca1f67309a94cc5  gcc/testsuite/gcc.target/aarch64/popcnt.c
  1444bbe1566e1e44cb5d667947f37296  gcc/testsuite/gcc.target/aarch64/popcnt2.c
! 86842168437685ec7a5c743fbea8576c  gcc/testsuite/gcc.target/aarch64/popcount4.c
  27e2c5c9a0bcdfebf2133e263738b146  gcc/testsuite/gcc.target/aarch64/pr100028.c
  54fb26388022e156768595e3d8b46954  gcc/testsuite/gcc.target/aarch64/pr100056.c
  c3d44b74cbd361a863813180478ad6c8  gcc/testsuite/gcc.target/aarch64/pr100075.c
--- 54549,54555 ----
  73044733387a8f754915be808c060624  gcc/testsuite/gcc.target/aarch64/pmull_1.c
  629072fafe5767161ca1f67309a94cc5  gcc/testsuite/gcc.target/aarch64/popcnt.c
  1444bbe1566e1e44cb5d667947f37296  gcc/testsuite/gcc.target/aarch64/popcnt2.c
! 1e502ffc7c9d63e78c4e9edd6822a6a8  gcc/testsuite/gcc.target/aarch64/popcount4.c
  27e2c5c9a0bcdfebf2133e263738b146  gcc/testsuite/gcc.target/aarch64/pr100028.c
  54fb26388022e156768595e3d8b46954  gcc/testsuite/gcc.target/aarch64/pr100056.c
  c3d44b74cbd361a863813180478ad6c8  gcc/testsuite/gcc.target/aarch64/pr100075.c
*************** e2136e7e4121b5b98591560242d1826f  gcc/te
*** 51189,51195 ****
  60149cce51c7ce96f2f40008aac502a2  gcc/testsuite/gcc.target/aarch64/pr103085.c
  46d6ff3fd00506e5bdc9c04d3d444c4e  gcc/testsuite/gcc.target/aarch64/pr103094.c
  6ab646c64e54d73bfe7fecdb44f824c3  gcc/testsuite/gcc.target/aarch64/pr103147-1.c
! 36448e4422f5aa59373ea811ae6684e4  gcc/testsuite/gcc.target/aarch64/pr103147-10.c
  b4780965b308ea64a30faae3dd03ff0b  gcc/testsuite/gcc.target/aarch64/pr103147-2.c
  331a1f2804cb2d624b662808784a18cf  gcc/testsuite/gcc.target/aarch64/pr103147-3.c
  1863cdd074e5a1878fd0fa3625c0bec4  gcc/testsuite/gcc.target/aarch64/pr103147-4.c
--- 54559,54565 ----
  60149cce51c7ce96f2f40008aac502a2  gcc/testsuite/gcc.target/aarch64/pr103085.c
  46d6ff3fd00506e5bdc9c04d3d444c4e  gcc/testsuite/gcc.target/aarch64/pr103094.c
  6ab646c64e54d73bfe7fecdb44f824c3  gcc/testsuite/gcc.target/aarch64/pr103147-1.c
! 7a6bdaa071cc871595b1c5e9dee1f8f6  gcc/testsuite/gcc.target/aarch64/pr103147-10.c
  b4780965b308ea64a30faae3dd03ff0b  gcc/testsuite/gcc.target/aarch64/pr103147-2.c
  331a1f2804cb2d624b662808784a18cf  gcc/testsuite/gcc.target/aarch64/pr103147-3.c
  1863cdd074e5a1878fd0fa3625c0bec4  gcc/testsuite/gcc.target/aarch64/pr103147-4.c
*************** e047cf533ea7d668ad1746232b7c35f6  gcc/te
*** 51204,51210 ****
  7ac80b7a4c25415aa8f17143e3348308  gcc/testsuite/gcc.target/aarch64/pr103350-2.c
  d476917b01e1a6ee9c389abac401fcf6  gcc/testsuite/gcc.target/aarch64/pr103523.c
  60105fd77c472b6a7d016a05f7c5918f  gcc/testsuite/gcc.target/aarch64/pr103741.c
! 78b36e30c5827cd7feaca767b2bfe584  gcc/testsuite/gcc.target/aarch64/pr104005.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
--- 54574,54595 ----
  7ac80b7a4c25415aa8f17143e3348308  gcc/testsuite/gcc.target/aarch64/pr103350-2.c
  d476917b01e1a6ee9c389abac401fcf6  gcc/testsuite/gcc.target/aarch64/pr103523.c
  60105fd77c472b6a7d016a05f7c5918f  gcc/testsuite/gcc.target/aarch64/pr103741.c
! a09415299ccad356d1c753effda41e1f  gcc/testsuite/gcc.target/aarch64/pr104005.c
! e868d6ee849923be52ae257b1d0d3c3f  gcc/testsuite/gcc.target/aarch64/pr104689.c
! d31b19093bf5b52a4ab71663355a6864  gcc/testsuite/gcc.target/aarch64/pr104921-1.c
! de49e9125d6237709299bcc3a1dfd315  gcc/testsuite/gcc.target/aarch64/pr104921-2.c
! 80bfa364bfe20370e6bd035b978c10f8  gcc/testsuite/gcc.target/aarch64/pr104921.x
! 4198cdedd33371d2e34f020137612130  gcc/testsuite/gcc.target/aarch64/pr105549.c
! c9fe2bbbb223bb44d35e0f763a6c53f1  gcc/testsuite/gcc.target/aarch64/pr106583.c
! d11f9a84e9269478f65c52a7249a2186  gcc/testsuite/gcc.target/aarch64/pr107209.c
! 8c8a67e24364ffc97872921358d32983  gcc/testsuite/gcc.target/aarch64/pr107988-1.c
! 49e3db98c926a3ebc07b785f4627de36  gcc/testsuite/gcc.target/aarch64/pr108508.c
! a7d8042acc2272e21686f52da76e42f1  gcc/testsuite/gcc.target/aarch64/pr108589.c
! 6dc2a87c4e95456d47637c506dfe5b0e  gcc/testsuite/gcc.target/aarch64/pr108601.c
! 8caf1b331d1a984045c0427f609a988b  gcc/testsuite/gcc.target/aarch64/pr108681.c
! 41c34270308784309bf8fd336d044aa7  gcc/testsuite/gcc.target/aarch64/pr108999.c
! c06d3b2030bc06f25071cbc162980592  gcc/testsuite/gcc.target/aarch64/pr109072_1.c
! 96db4199e6f01de5b5bc5f1e5545c2e2  gcc/testsuite/gcc.target/aarch64/pr109072_2.c
  9adb42733d9f5e2b1f2dbb364b62100d  gcc/testsuite/gcc.target/aarch64/pr37780_1.c
  e668fb9e0d32efadd671247467dc90db  gcc/testsuite/gcc.target/aarch64/pr58460.c
  9023f817c07ddec673c5b546525fc184  gcc/testsuite/gcc.target/aarch64/pr60034.c
*************** d8cfefc063686118062e9fc3b774907b  gcc/te
*** 51215,51221 ****
  617b125a3275c9ce440e1e542a8bbc79  gcc/testsuite/gcc.target/aarch64/pr62178.c
  da1fc7d53b5f8b6e99f57a2a7b7ac849  gcc/testsuite/gcc.target/aarch64/pr62262.c
  5b090e5d951a21826fd629be991b5411  gcc/testsuite/gcc.target/aarch64/pr62308.c
! c5c29359ead6b589bff98ed4b2ac962a  gcc/testsuite/gcc.target/aarch64/pr63304_1.c
  5195785cc7216a9662357829a66aa2c7  gcc/testsuite/gcc.target/aarch64/pr63424.c
  baf71778326c44f90d27479f00af7a63  gcc/testsuite/gcc.target/aarch64/pr63874.c
  193743022291a9918f493ad3090965ec  gcc/testsuite/gcc.target/aarch64/pr64263_1.c
--- 54600,54606 ----
  617b125a3275c9ce440e1e542a8bbc79  gcc/testsuite/gcc.target/aarch64/pr62178.c
  da1fc7d53b5f8b6e99f57a2a7b7ac849  gcc/testsuite/gcc.target/aarch64/pr62262.c
  5b090e5d951a21826fd629be991b5411  gcc/testsuite/gcc.target/aarch64/pr62308.c
! b39607ed8246d1c1e4730c6984888a15  gcc/testsuite/gcc.target/aarch64/pr63304_1.c
  5195785cc7216a9662357829a66aa2c7  gcc/testsuite/gcc.target/aarch64/pr63424.c
  baf71778326c44f90d27479f00af7a63  gcc/testsuite/gcc.target/aarch64/pr63874.c
  193743022291a9918f493ad3090965ec  gcc/testsuite/gcc.target/aarch64/pr64263_1.c
*************** b28ad75ae030029f6a891f12b81c0ebf  gcc/te
*** 51235,51241 ****
  065e6ab62eb109b24a2126e76d2447a1  gcc/testsuite/gcc.target/aarch64/pr69245_2.c
  029e51f05456a28a597add4730ec77aa  gcc/testsuite/gcc.target/aarch64/pr70044.c
  9357327a0e7073dde1ca415f103c86f2  gcc/testsuite/gcc.target/aarch64/pr70120-1.c
! 6d806c50c21bbbe2e388dd9e1819fb28  gcc/testsuite/gcc.target/aarch64/pr70120-2.c
  61ea50a51a3ed94b38acd7cd026cd077  gcc/testsuite/gcc.target/aarch64/pr70120-3.c
  a5a030e82205f8d9b2799618b27cc294  gcc/testsuite/gcc.target/aarch64/pr70398.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
--- 54620,54626 ----
  065e6ab62eb109b24a2126e76d2447a1  gcc/testsuite/gcc.target/aarch64/pr69245_2.c
  029e51f05456a28a597add4730ec77aa  gcc/testsuite/gcc.target/aarch64/pr70044.c
  9357327a0e7073dde1ca415f103c86f2  gcc/testsuite/gcc.target/aarch64/pr70120-1.c
! bb6ce7a591647d506bc7a6dc956d2160  gcc/testsuite/gcc.target/aarch64/pr70120-2.c
  61ea50a51a3ed94b38acd7cd026cd077  gcc/testsuite/gcc.target/aarch64/pr70120-3.c
  a5a030e82205f8d9b2799618b27cc294  gcc/testsuite/gcc.target/aarch64/pr70398.c
  e7efe396ef16dbc7526785247ead6d84  gcc/testsuite/gcc.target/aarch64/pr70809_1.c
*************** c8c052e3ffb361fbe4b0043b1414c58b  gcc/te
*** 51246,51253 ****
  ed6579d962ab6988afc3e526e6c51275  gcc/testsuite/gcc.target/aarch64/pr78255.c
  f9f37ccfc032535c8079deb6b916aca7  gcc/testsuite/gcc.target/aarch64/pr78382.c
  15de7f015106f4b337262f146247f86f  gcc/testsuite/gcc.target/aarch64/pr78561.c
! 393c885b78542f7884ffe55dcb0653ef  gcc/testsuite/gcc.target/aarch64/pr78733.c
! 393c885b78542f7884ffe55dcb0653ef  gcc/testsuite/gcc.target/aarch64/pr79041-2.c
  1074b04062fdbdecea7da7cc9a58423f  gcc/testsuite/gcc.target/aarch64/pr79794.c
  aa2dfd18bc6784e0bc7ee00c3ef8561a  gcc/testsuite/gcc.target/aarch64/pr80295.c
  105bb65b036f134453135d5817cd946c  gcc/testsuite/gcc.target/aarch64/pr81356.c
--- 54631,54638 ----
  ed6579d962ab6988afc3e526e6c51275  gcc/testsuite/gcc.target/aarch64/pr78255.c
  f9f37ccfc032535c8079deb6b916aca7  gcc/testsuite/gcc.target/aarch64/pr78382.c
  15de7f015106f4b337262f146247f86f  gcc/testsuite/gcc.target/aarch64/pr78561.c
! 39f4224dd0c729f3e2990c7cc441e6a0  gcc/testsuite/gcc.target/aarch64/pr78733.c
! 39f4224dd0c729f3e2990c7cc441e6a0  gcc/testsuite/gcc.target/aarch64/pr79041-2.c
  1074b04062fdbdecea7da7cc9a58423f  gcc/testsuite/gcc.target/aarch64/pr79794.c
  aa2dfd18bc6784e0bc7ee00c3ef8561a  gcc/testsuite/gcc.target/aarch64/pr80295.c
  105bb65b036f134453135d5817cd946c  gcc/testsuite/gcc.target/aarch64/pr81356.c
*************** d43406280c991dedd7072642fee590a0  gcc/te
*** 51266,51273 ****
  cb9ff251051d24e9eaa0963c842a29d1  gcc/testsuite/gcc.target/aarch64/pr91710.c
  fc91452912566f4106b747b6e9c396e5  gcc/testsuite/gcc.target/aarch64/pr91927.c
  9562a96a900add1659850fcc3d3901cf  gcc/testsuite/gcc.target/aarch64/pr92424-1.c
! fa96ea78d21fc13d022162f4fb6d0e23  gcc/testsuite/gcc.target/aarch64/pr92424-2.c
! cc14caf0fac017855cfb26da3f9bd70f  gcc/testsuite/gcc.target/aarch64/pr92424-3.c
  2c2213c9e95d84ffb54b1bf1c59ba1a4  gcc/testsuite/gcc.target/aarch64/pr92526.c
  4a3651caf4f05ecfa237c1017ec5b341  gcc/testsuite/gcc.target/aarch64/pr93119.c
  040dfb8e58ad051e80d35c470c8ab52a  gcc/testsuite/gcc.target/aarch64/pr93221.c
--- 54651,54658 ----
  cb9ff251051d24e9eaa0963c842a29d1  gcc/testsuite/gcc.target/aarch64/pr91710.c
  fc91452912566f4106b747b6e9c396e5  gcc/testsuite/gcc.target/aarch64/pr91927.c
  9562a96a900add1659850fcc3d3901cf  gcc/testsuite/gcc.target/aarch64/pr92424-1.c
! 7ea4c38cd3b178d78f046f19f7b583c3  gcc/testsuite/gcc.target/aarch64/pr92424-2.c
! f8ddd6b01afffeb3d1d200d82260e62c  gcc/testsuite/gcc.target/aarch64/pr92424-3.c
  2c2213c9e95d84ffb54b1bf1c59ba1a4  gcc/testsuite/gcc.target/aarch64/pr92526.c
  4a3651caf4f05ecfa237c1017ec5b341  gcc/testsuite/gcc.target/aarch64/pr93119.c
  040dfb8e58ad051e80d35c470c8ab52a  gcc/testsuite/gcc.target/aarch64/pr93221.c
*************** a9e3fa9bf042d9c1c357a23c16f6b387  gcc/te
*** 51279,51286 ****
  9cfb3b160866ec3ddc9bc343efa6b2e8  gcc/testsuite/gcc.target/aarch64/pr94398.c
  d89f585a7ccbac10cff70c726d0dea2b  gcc/testsuite/gcc.target/aarch64/pr94435.c
  8d8f9b6336f8a3c7534960e50ea4d681  gcc/testsuite/gcc.target/aarch64/pr94514.c
! c62d6dacdfaa7c29b7d597102a1c90c7  gcc/testsuite/gcc.target/aarch64/pr94530.c
! adbd85a2c55f47f70a05be84ab927f7a  gcc/testsuite/gcc.target/aarch64/pr94577.c
  1366814bb1b0d8bfd71ff640bd30b0df  gcc/testsuite/gcc.target/aarch64/pr94697.c
  c6eebf3e7952e61593d0c0e9db4a9363  gcc/testsuite/gcc.target/aarch64/pr94748.c
  7f56460afccd09f9dac35acbb8186c34  gcc/testsuite/gcc.target/aarch64/pr95254.c
--- 54664,54671 ----
  9cfb3b160866ec3ddc9bc343efa6b2e8  gcc/testsuite/gcc.target/aarch64/pr94398.c
  d89f585a7ccbac10cff70c726d0dea2b  gcc/testsuite/gcc.target/aarch64/pr94435.c
  8d8f9b6336f8a3c7534960e50ea4d681  gcc/testsuite/gcc.target/aarch64/pr94514.c
! 2e591f3efe065a02e03185695c88bfc3  gcc/testsuite/gcc.target/aarch64/pr94530.c
! c0ad70b450d97246f6f5c07954d99cb8  gcc/testsuite/gcc.target/aarch64/pr94577.c
  1366814bb1b0d8bfd71ff640bd30b0df  gcc/testsuite/gcc.target/aarch64/pr94697.c
  c6eebf3e7952e61593d0c0e9db4a9363  gcc/testsuite/gcc.target/aarch64/pr94748.c
  7f56460afccd09f9dac35acbb8186c34  gcc/testsuite/gcc.target/aarch64/pr95254.c
*************** c5ac198fcc683ea88b36ff21fc73e2c5  gcc/te
*** 51295,51300 ****
--- 54680,54686 ----
  fd312dc569ccf5ce510dd16b64f1203b  gcc/testsuite/gcc.target/aarch64/pr97701.c
  98e2f872193b247fc94cc5d6f30aaddf  gcc/testsuite/gcc.target/aarch64/pr98603.c
  d36ed016a2b11c922ff41b3a63eb03d8  gcc/testsuite/gcc.target/aarch64/pr98772.c
+ ed80808a6a48521e174e06ce44642e0c  gcc/testsuite/gcc.target/aarch64/pr98776.c
  18603818c100529306da07a556c00769  gcc/testsuite/gcc.target/aarch64/pr99381.c
  1f2ce8a6e6be36322ada7a2a222926ac  gcc/testsuite/gcc.target/aarch64/pr99767.c
  49e4573c158d59f2a37800471ca3bc65  gcc/testsuite/gcc.target/aarch64/pr99808.c
*************** c117eaeade3674a6a21013315de55b26  gcc/te
*** 51302,51310 ****
  c45bc47433163208f0aec414ada73705  gcc/testsuite/gcc.target/aarch64/pr99873_2.c
  18c52a2faa4e83538abeef107e3b4d8a  gcc/testsuite/gcc.target/aarch64/pr99873_3.c
  5e9a238ae88bfc957497e635ed104144  gcc/testsuite/gcc.target/aarch64/pr99988.c
! d3e6defa85b5cd4bb506306377e59a53  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  dc70336a2a022f10ec27787e628c5113  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  1802b716a6dff570eaf8df2688efe1dd  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
--- 54688,54697 ----
  c45bc47433163208f0aec414ada73705  gcc/testsuite/gcc.target/aarch64/pr99873_2.c
  18c52a2faa4e83538abeef107e3b4d8a  gcc/testsuite/gcc.target/aarch64/pr99873_3.c
  5e9a238ae88bfc957497e635ed104144  gcc/testsuite/gcc.target/aarch64/pr99988.c
! 7647e74954bed1df0b5452c86dc7806b  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_1.c
  dc70336a2a022f10ec27787e628c5113  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_2.c
  1802b716a6dff570eaf8df2688efe1dd  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_3.c
+ 823557554938ddb59a20f60c31dc3e22  gcc/testsuite/gcc.target/aarch64/pragma_cpp_predefs_4.c
  1f95766b4ed5bfb5f2cf1f168a607a8d  gcc/testsuite/gcc.target/aarch64/predefine_large.c
  d38e476730748c653068e7cb2d8d6ca6  gcc/testsuite/gcc.target/aarch64/predefine_small.c
  29e7dbfba15c0f945488b33400b908b4  gcc/testsuite/gcc.target/aarch64/predefine_tiny.c
*************** d0bcbc3d9ff4ecc6817a33d0d9f3aed3  gcc/te
*** 51314,51320 ****
  74688db113854841ef6e7ea639b44f4c  gcc/testsuite/gcc.target/aarch64/reg-alloc-2.c
  d6af8901d4df3dbbd85fb4a872ad6e99  gcc/testsuite/gcc.target/aarch64/reg-alloc-3.c
  ae41f7b64717901920ce9a6a8098b825  gcc/testsuite/gcc.target/aarch64/reg-alloc-4.c
! 19e3d2fe2f3d2da546f57e32e1f53f39  gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c
  bed515c59d85f8fa531ff7c57e701c41  gcc/testsuite/gcc.target/aarch64/return_address_sign_1.c
  4b0e7c8dc1ccf80140eee97a9b37aeef  gcc/testsuite/gcc.target/aarch64/return_address_sign_2.c
  b9524ac9c94a04e98f82c9c679c0b715  gcc/testsuite/gcc.target/aarch64/return_address_sign_3.c
--- 54701,54707 ----
  74688db113854841ef6e7ea639b44f4c  gcc/testsuite/gcc.target/aarch64/reg-alloc-2.c
  d6af8901d4df3dbbd85fb4a872ad6e99  gcc/testsuite/gcc.target/aarch64/reg-alloc-3.c
  ae41f7b64717901920ce9a6a8098b825  gcc/testsuite/gcc.target/aarch64/reg-alloc-4.c
! c27a4c6f9c9e7aee309e6f023d713539  gcc/testsuite/gcc.target/aarch64/reload-valid-spoff.c
  bed515c59d85f8fa531ff7c57e701c41  gcc/testsuite/gcc.target/aarch64/return_address_sign_1.c
  4b0e7c8dc1ccf80140eee97a9b37aeef  gcc/testsuite/gcc.target/aarch64/return_address_sign_2.c
  b9524ac9c94a04e98f82c9c679c0b715  gcc/testsuite/gcc.target/aarch64/return_address_sign_3.c
*************** b9524ac9c94a04e98f82c9c679c0b715  gcc/te
*** 51323,51329 ****
--- 54710,54719 ----
  10c0667fe6669dd3a58aad882ef86a33  gcc/testsuite/gcc.target/aarch64/return_address_sign_b_3.c
  4c29e6ea2fa29c84d350a343b163fe54  gcc/testsuite/gcc.target/aarch64/return_address_sign_builtin.c
  70b0a417548eb5574b49ff1b37acde43  gcc/testsuite/gcc.target/aarch64/rev16_1.c
+ 2f04362c27a9d92b5c3630595d13128b  gcc/testsuite/gcc.target/aarch64/rev16_2.c
  a6b0a3d46a5a5170f93dc87f2d7171b5  gcc/testsuite/gcc.target/aarch64/ror.c
+ c5f7398a3319e25a23c9aebb45e8472a  gcc/testsuite/gcc.target/aarch64/ror_2.c
+ 6a7b4c2858dc4092dd8e5eead61374c3  gcc/testsuite/gcc.target/aarch64/ror_3.c
  fd2b51934a9f3b3f1041deacbd4c5429  gcc/testsuite/gcc.target/aarch64/saddw-1.c
  06fac2f51e492eb91f6fdcb6f6baea2f  gcc/testsuite/gcc.target/aarch64/saddw-2.c
  dff5614a018a2765dcb90ecb31013713  gcc/testsuite/gcc.target/aarch64/sbc.c
*************** c0725600c63b6165198bcd4488142b24  gcc/te
*** 51334,51342 ****
  b0af57cfaade3214be10647c1c8b885d  gcc/testsuite/gcc.target/aarch64/sdiv_costs_1.c
  3e8ce149782bdd987aa781b057d78ceb  gcc/testsuite/gcc.target/aarch64/set_fpcr64_1.c
  a93f1f3ea917533aaecb0c213be0f4d9  gcc/testsuite/gcc.target/aarch64/set_fpsr64_1.c
! f62a4cd99af4f919eb92ce0f2ca54a9c  gcc/testsuite/gcc.target/aarch64/sha1_1.c
  4d32184bd371e3cea9bd7c063192da56  gcc/testsuite/gcc.target/aarch64/sha2.h
! fe26f8621abd85653f2c73821030ac0f  gcc/testsuite/gcc.target/aarch64/sha256_1.c
  4ce4005aa04497535fa6dedb59d0013d  gcc/testsuite/gcc.target/aarch64/sha2_1.c
  19f17e7dd89f8110e5c9f67f57238f8a  gcc/testsuite/gcc.target/aarch64/sha2_2.c
  ce1f8e207a7a24660c494ecf8dd545c2  gcc/testsuite/gcc.target/aarch64/sha2_3.c
--- 54724,54732 ----
  b0af57cfaade3214be10647c1c8b885d  gcc/testsuite/gcc.target/aarch64/sdiv_costs_1.c
  3e8ce149782bdd987aa781b057d78ceb  gcc/testsuite/gcc.target/aarch64/set_fpcr64_1.c
  a93f1f3ea917533aaecb0c213be0f4d9  gcc/testsuite/gcc.target/aarch64/set_fpsr64_1.c
! b44e92a535087a99a3ac716388f1c979  gcc/testsuite/gcc.target/aarch64/sha1_1.c
  4d32184bd371e3cea9bd7c063192da56  gcc/testsuite/gcc.target/aarch64/sha2.h
! 00c4e1cc35971202c8c8069466267e6b  gcc/testsuite/gcc.target/aarch64/sha256_1.c
  4ce4005aa04497535fa6dedb59d0013d  gcc/testsuite/gcc.target/aarch64/sha2_1.c
  19f17e7dd89f8110e5c9f67f57238f8a  gcc/testsuite/gcc.target/aarch64/sha2_2.c
  ce1f8e207a7a24660c494ecf8dd545c2  gcc/testsuite/gcc.target/aarch64/sha2_3.c
*************** f98a0bd31791e270aac8fc6102a9e140  gcc/te
*** 51352,51363 ****
  a0d0870973f0fcaae1c5cec0042ef105  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_6.c
  a02965d358c103b08e6c3e285f93010b  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_7.c
  529e67315e902787ce0d0009ef247545  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_8.c
  8944288dbff8e1e27c9948e6640f93d5  gcc/testsuite/gcc.target/aarch64/shift_wide_invalid_1.c
  82788cbb043cb268dfa4db7129b0952a  gcc/testsuite/gcc.target/aarch64/shl-combine-2.c
  e7df497b1060ec35ed3d6baa86e0f202  gcc/testsuite/gcc.target/aarch64/shl-combine-3.c
  fa3bb689f3a7d8d27c8e462d58be9685  gcc/testsuite/gcc.target/aarch64/shl-combine-4.c
  0e556388c6b9dad6fb3e0dd799249152  gcc/testsuite/gcc.target/aarch64/shl-combine-5.c
! 0d48e6d77924a54eb077969bf5f8aafb  gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c
  1581fca9833dd741d7b8f91b93455158  gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
  ad2d0fc3dcc2c60a25cb46fbf29750a9  gcc/testsuite/gcc.target/aarch64/shrn-combine-1.c
  20b0b487166b045e09d95e98512cb56f  gcc/testsuite/gcc.target/aarch64/shrn-combine-10.c
--- 54742,54754 ----
  a0d0870973f0fcaae1c5cec0042ef105  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_6.c
  a02965d358c103b08e6c3e285f93010b  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_7.c
  529e67315e902787ce0d0009ef247545  gcc/testsuite/gcc.target/aarch64/shadow_call_stack_8.c
+ a165f88ed1988f9840bbb02ea02df7de  gcc/testsuite/gcc.target/aarch64/shift_and_operator-1.c
  8944288dbff8e1e27c9948e6640f93d5  gcc/testsuite/gcc.target/aarch64/shift_wide_invalid_1.c
  82788cbb043cb268dfa4db7129b0952a  gcc/testsuite/gcc.target/aarch64/shl-combine-2.c
  e7df497b1060ec35ed3d6baa86e0f202  gcc/testsuite/gcc.target/aarch64/shl-combine-3.c
  fa3bb689f3a7d8d27c8e462d58be9685  gcc/testsuite/gcc.target/aarch64/shl-combine-4.c
  0e556388c6b9dad6fb3e0dd799249152  gcc/testsuite/gcc.target/aarch64/shl-combine-5.c
! f5edeaf58dfbc94a5477b36d0f156ee3  gcc/testsuite/gcc.target/aarch64/shrink_wrap_1.c
  1581fca9833dd741d7b8f91b93455158  gcc/testsuite/gcc.target/aarch64/shrink_wrap_symbol_ref_1.c
  ad2d0fc3dcc2c60a25cb46fbf29750a9  gcc/testsuite/gcc.target/aarch64/shrn-combine-1.c
  20b0b487166b045e09d95e98512cb56f  gcc/testsuite/gcc.target/aarch64/shrn-combine-10.c
*************** df616b441a15b0fdbf888d04c5fe95fb  gcc/te
*** 51373,51378 ****
--- 54764,54770 ----
  d6d84820bf58577dda59d8f5e7e556f1  gcc/testsuite/gcc.target/aarch64/signbit-2.c
  7378ad57a7e281bf3f87ce9a0d494e69  gcc/testsuite/gcc.target/aarch64/signbitv2sf.c
  d2757938fad3b14f583150a49e03367e  gcc/testsuite/gcc.target/aarch64/signbitv4sf.c
+ cce0e0d17f23232b9c556c2da6266969  gcc/testsuite/gcc.target/aarch64/simd/addsub_1.c
  6aef5c8c46a252fab1f15291c3545ce4  gcc/testsuite/gcc.target/aarch64/simd/ext_f32.x
  ddc6725ef357d85f1e09e4c10067f0cd  gcc/testsuite/gcc.target/aarch64/simd/ext_f32_1.c
  c1e72dac8ab01a1a17aeec90718b60d2  gcc/testsuite/gcc.target/aarch64/simd/ext_f64_1.c
*************** f1c9e2aa3c435c9efdc1ea83da4e1eeb  gcc/te
*** 51424,51430 ****
  f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
  c4b08114012e09e0f47a84f5e5311441  gcc/testsuite/gcc.target/aarch64/simd/pr97349.c
  98ad17eba6ed6a47a93dddc98dcba951  gcc/testsuite/gcc.target/aarch64/simd/pr99437.c
! 71118fdf100747eea56ede2da83bf735  gcc/testsuite/gcc.target/aarch64/simd/simd.exp
  3bdc28b0037a305b18bdc0489c55e433  gcc/testsuite/gcc.target/aarch64/simd/ssra.c
  6cc70e998362cc09840837fba67910d8  gcc/testsuite/gcc.target/aarch64/simd/trn_zip_p64_1.c
  5de7a6e0814e5fb97ee3b61393d07d26  gcc/testsuite/gcc.target/aarch64/simd/usra.c
--- 54816,54822 ----
  f2791d55a2c9ed7182a54a406810cf47  gcc/testsuite/gcc.target/aarch64/simd/pr67896.c
  c4b08114012e09e0f47a84f5e5311441  gcc/testsuite/gcc.target/aarch64/simd/pr97349.c
  98ad17eba6ed6a47a93dddc98dcba951  gcc/testsuite/gcc.target/aarch64/simd/pr99437.c
! 881e0d6d37b76c188c89f79078037db7  gcc/testsuite/gcc.target/aarch64/simd/simd.exp
  3bdc28b0037a305b18bdc0489c55e433  gcc/testsuite/gcc.target/aarch64/simd/ssra.c
  6cc70e998362cc09840837fba67910d8  gcc/testsuite/gcc.target/aarch64/simd/trn_zip_p64_1.c
  5de7a6e0814e5fb97ee3b61393d07d26  gcc/testsuite/gcc.target/aarch64/simd/usra.c
*************** b85188df577a6b8c4ea30329b38769d8  gcc/te
*** 51455,51462 ****
  deca043ed23c518b74a2792701289981  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_u64_f64_1.c
  6dbd14fdcf24b2d17c35bdaf069688a6  gcc/testsuite/gcc.target/aarch64/simd/vect_str_zero.c
  316465198cc13e56db13f95b521d5d2d  gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
! 1befb286b0644e39c9829338c6449b03  gcc/testsuite/gcc.target/aarch64/simd/vfma_f64.c
! f1a54c525a18abf029354ff2f70209d5  gcc/testsuite/gcc.target/aarch64/simd/vfms_f64.c
  53a5c0ff886cf0f1a64184445c0bdee0  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c
  aaf893d92f0ba49c50ddcb67df509b29  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c
  bed52a3410b4938c4b91db5bb847ecd1  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c
--- 54847,54854 ----
  deca043ed23c518b74a2792701289981  gcc/testsuite/gcc.target/aarch64/simd/vcvtp_u64_f64_1.c
  6dbd14fdcf24b2d17c35bdaf069688a6  gcc/testsuite/gcc.target/aarch64/simd/vect_str_zero.c
  316465198cc13e56db13f95b521d5d2d  gcc/testsuite/gcc.target/aarch64/simd/vect_su_add_sub.c
! 193aaed5c334d9ba2fa37ff1394c985a  gcc/testsuite/gcc.target/aarch64/simd/vfma_f64.c
! e8a7b42845aa1c5b25930c4fb0a6a0ee  gcc/testsuite/gcc.target/aarch64/simd/vfms_f64.c
  53a5c0ff886cf0f1a64184445c0bdee0  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f32_indices_1.c
  aaf893d92f0ba49c50ddcb67df509b29  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_f64_indices_1.c
  bed52a3410b4938c4b91db5bb847ecd1  gcc/testsuite/gcc.target/aarch64/simd/vget_lane_p16_indices_1.c
*************** d3471e819805085e851c6ef99b412fc9  gcc/te
*** 51489,51497 ****
  7b488ba6c1f84e266799b037eedc797b  gcc/testsuite/gcc.target/aarch64/simd/vmmla.c
  94345e699abe993e3294cab2d9423634  gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c
  22cac23569a49d0ec6c6bc3ebf72db5a  gcc/testsuite/gcc.target/aarch64/simd/vmul_elem_1.c
! f4f3b7ca3433b577e0c8b5a94bd6c11a  gcc/testsuite/gcc.target/aarch64/simd/vmul_f64_1.c
  7fd8f1130afba68a9c1f1cdf8b7c4c5d  gcc/testsuite/gcc.target/aarch64/simd/vmul_lane_const_lane_1.c
! 3cdb699ca84ff1ea6ae1795064cddfee  gcc/testsuite/gcc.target/aarch64/simd/vmul_n_f64_1.c
  4fbdb7438297e55c1ffc477bf86f3ff7  gcc/testsuite/gcc.target/aarch64/simd/vmuld_lane_f64_1.c
  8289fdc27e513a6b5430040add06d87b  gcc/testsuite/gcc.target/aarch64/simd/vmuld_laneq_f64_1.c
  3d545be7fa0f553f61cb140189e7bf75  gcc/testsuite/gcc.target/aarch64/simd/vmuls_lane_f32_1.c
--- 54881,54889 ----
  7b488ba6c1f84e266799b037eedc797b  gcc/testsuite/gcc.target/aarch64/simd/vmmla.c
  94345e699abe993e3294cab2d9423634  gcc/testsuite/gcc.target/aarch64/simd/vmovl_high_1.c
  22cac23569a49d0ec6c6bc3ebf72db5a  gcc/testsuite/gcc.target/aarch64/simd/vmul_elem_1.c
! 65169a4470253b75fae29b77e6c97dad  gcc/testsuite/gcc.target/aarch64/simd/vmul_f64_1.c
  7fd8f1130afba68a9c1f1cdf8b7c4c5d  gcc/testsuite/gcc.target/aarch64/simd/vmul_lane_const_lane_1.c
! b4b1c51bedd41012a4234e1c9f3cbc87  gcc/testsuite/gcc.target/aarch64/simd/vmul_n_f64_1.c
  4fbdb7438297e55c1ffc477bf86f3ff7  gcc/testsuite/gcc.target/aarch64/simd/vmuld_lane_f64_1.c
  8289fdc27e513a6b5430040add06d87b  gcc/testsuite/gcc.target/aarch64/simd/vmuld_laneq_f64_1.c
  3d545be7fa0f553f61cb140189e7bf75  gcc/testsuite/gcc.target/aarch64/simd/vmuls_lane_f32_1.c
*************** e43da77091a964f70ebc3cb5dc286cec  gcc/te
*** 51539,51548 ****
  3b730ce502ddc6c2c9f8c1fd72eba373  gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_laneq_s32_indices_1.c
  0eae3740382de7312b4e1799b0430782  gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_lane_s16.c
  bf37d07db933dfc964a7f19ada96ee11  gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_lane_s16_indices_1.c
! 0ffa2e0c665b2320976cf1317b6725c9  gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c
  d21d9039bbc3e4a3d3fcfb5e4bd68b3b  gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c
  a15d630e8025125c2691e5a9a0b357e1  gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32_indices_1.c
! 14ce25f677f71bdf7a8021b656f380b5  gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c
  5734c06c34539d116c499b7b3e8cccc0  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s16.c
  fa245bc4172e7224abbd47b5f9a03f68  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s16_indices_1.c
  176455134bdf72658a28dce8ccd18a9b  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s32.c
--- 54931,54940 ----
  3b730ce502ddc6c2c9f8c1fd72eba373  gcc/testsuite/gcc.target/aarch64/simd/vqdmlal_laneq_s32_indices_1.c
  0eae3740382de7312b4e1799b0430782  gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_lane_s16.c
  bf37d07db933dfc964a7f19ada96ee11  gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_lane_s16_indices_1.c
! 26ca42e298b7a7a3af6d0540cea43b68  gcc/testsuite/gcc.target/aarch64/simd/vqdmlalh_laneq_s16_1.c
  d21d9039bbc3e4a3d3fcfb5e4bd68b3b  gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32.c
  a15d630e8025125c2691e5a9a0b357e1  gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_lane_s32_indices_1.c
! 1e760c75a747bb416cdb622e217b26b6  gcc/testsuite/gcc.target/aarch64/simd/vqdmlals_laneq_s32_1.c
  5734c06c34539d116c499b7b3e8cccc0  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s16.c
  fa245bc4172e7224abbd47b5f9a03f68  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s16_indices_1.c
  176455134bdf72658a28dce8ccd18a9b  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_high_lane_s32.c
*************** d41b9cd22f5711d034b3b7a75736b1bb  gcc/te
*** 51560,51587 ****
  ebacf17cf7221af7441c0256d10ae108  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_laneq_s32_indices_1.c
  a0bd9f0007e2b1c1251b1d9a1b8e9650  gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_lane_s16.c
  c11f27da2a77f588f589f5d6c22cd7ca  gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_lane_s16_indices_1.c
! f5a7f082ecde524823fe18a9a6047acf  gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c
  6e6994cf722f1f8e71dd9e57cc029cc2  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c
  2c3b183fe4b052035e426edd6bce93cc  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32_indices_1.c
! d41cb1706ede263cf47c64596088bbfc  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c
  9f4d079936b24ec69fca750ab4386488  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_lane_s16_indices_1.c
  62fda4ef64043889d9335bfd1ca7bcf2  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_lane_s32_indices_1.c
  ae72cdbb1a9254eaf9d7c7ff65d118a4  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s16.c
  282468d30d8e82d70a06be12e87fb9d8  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s16_indices_1.c
  eaff4a22113e3e56eb736ff1de37ec15  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s32.c
  b1455b15607917a762ba36e6627a43cd  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s32_indices_1.c
! e3a8441b02b542f81113d4d3148c02ed  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_lane_s16.c
  ef1704cf071545bbefe1377724d81d32  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_lane_s16_indices_1.c
! 386c42f181c46e18a39a09f001da6afd  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c
  561621200429ffbc2498e1e11e8eb382  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_lane_s16_indices_1.c
  5b4a53efe5974c8209499e43a4ac67c8  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_lane_s32_indices_1.c
  ec7d0b2be34c60dfdc66f21f15c70001  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s16.c
  3f9241ca7d1423fe6f450fc200f0ac4e  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s16_indices_1.c
  0bce798021bc77d1afa539c521ddab57  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s32.c
  bb469e52d8194587193cd93dda5d24ef  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s32_indices_1.c
! 5b5210a017b08708551aa245c5e13d8c  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_lane_s32.c
  faea743e140f2eb6b1f06a3d299409ba  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_lane_s32_indices_1.c
! 7e3fa5fe854204c64af9ed8dfe4bada0  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c
  5c463b9fa580cf41a513c1e92bac5783  gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s16.c
  f4d5036cf92f035b637b8812d29b5254  gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s16_indices_1.c
  1dea84453de261f1c0f01dbfa83b3294  gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s32.c
--- 54952,54979 ----
  ebacf17cf7221af7441c0256d10ae108  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsl_laneq_s32_indices_1.c
  a0bd9f0007e2b1c1251b1d9a1b8e9650  gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_lane_s16.c
  c11f27da2a77f588f589f5d6c22cd7ca  gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_lane_s16_indices_1.c
! c2dc8f81f896c85660e166a4a5de18db  gcc/testsuite/gcc.target/aarch64/simd/vqdmlslh_laneq_s16_1.c
  6e6994cf722f1f8e71dd9e57cc029cc2  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32.c
  2c3b183fe4b052035e426edd6bce93cc  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_lane_s32_indices_1.c
! 8cd00430adb33a92b3ac739b2f9d607d  gcc/testsuite/gcc.target/aarch64/simd/vqdmlsls_laneq_s32_1.c
  9f4d079936b24ec69fca750ab4386488  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_lane_s16_indices_1.c
  62fda4ef64043889d9335bfd1ca7bcf2  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_lane_s32_indices_1.c
  ae72cdbb1a9254eaf9d7c7ff65d118a4  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s16.c
  282468d30d8e82d70a06be12e87fb9d8  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s16_indices_1.c
  eaff4a22113e3e56eb736ff1de37ec15  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s32.c
  b1455b15607917a762ba36e6627a43cd  gcc/testsuite/gcc.target/aarch64/simd/vqdmulh_laneq_s32_indices_1.c
! 285c609c1598b4fa9b4a968dc9ee8caf  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_lane_s16.c
  ef1704cf071545bbefe1377724d81d32  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_lane_s16_indices_1.c
! b71ae4da3381e97285e03be219ce501f  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhh_laneq_s16_1.c
  561621200429ffbc2498e1e11e8eb382  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_lane_s16_indices_1.c
  5b4a53efe5974c8209499e43a4ac67c8  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_lane_s32_indices_1.c
  ec7d0b2be34c60dfdc66f21f15c70001  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s16.c
  3f9241ca7d1423fe6f450fc200f0ac4e  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s16_indices_1.c
  0bce798021bc77d1afa539c521ddab57  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s32.c
  bb469e52d8194587193cd93dda5d24ef  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhq_laneq_s32_indices_1.c
! c0371685a04c767c91b8755fd3578900  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_lane_s32.c
  faea743e140f2eb6b1f06a3d299409ba  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_lane_s32_indices_1.c
! 75fc554e2232fbeadfeaf504ae8a34f9  gcc/testsuite/gcc.target/aarch64/simd/vqdmulhs_laneq_s32_1.c
  5c463b9fa580cf41a513c1e92bac5783  gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s16.c
  f4d5036cf92f035b637b8812d29b5254  gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s16_indices_1.c
  1dea84453de261f1c0f01dbfa83b3294  gcc/testsuite/gcc.target/aarch64/simd/vqdmull_high_lane_s32.c
*************** fd2a8f68611e84fda5e48c3afaf3bcf2  gcc/te
*** 51610,51627 ****
  717bce202d209f9adce8c15afe0f6dc5  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s16_indices_1.c
  72f7beac54fbdcd491bb63c7aea1b02f  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s32.c
  1284468c23ec47e577143593ee536f67  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s32_indices_1.c
! b33465b2a47d6d523ac6b48db3f79d9e  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_lane_s16.c
  c3efc4aacec3dc7e9857a22044f8dfe3  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_lane_s16_indices_1.c
! f67b151e2eeef248afcfcc96571380da  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c
  bb7643e8266eb9ecc537a1d2a5b93d10  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_lane_s16_indices_1.c
  2917ea7c9d4473a22018666f66120cea  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_lane_s32_indices_1.c
  e90b621a67f3ad614a7eca38a056cc26  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s16.c
  0bf2a411c58742ca4e8dc09deaf63ca1  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s16_indices_1.c
  8b6780ea27c07a92bfd5e71ba157c7d2  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s32.c
  9063e1cd4be289bff5bf8accea0d4143  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s32_indices_1.c
! deb0f552af79b96da8822d2e2a318406  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_lane_s32.c
  f47ff008eabd1771b9f7850c6af67037  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_lane_s32_indices_1.c
! e68818f0673f773bf38995d0a20dc13e  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c
  d038a49ab51bbd3d2923efa046b88a04  gcc/testsuite/gcc.target/aarch64/simd/vqshlb_1.c
  5dbcbb4f9ffc8242f121a1460096e912  gcc/testsuite/gcc.target/aarch64/simd/vrbit_1.c
  951d82e9d2ea92e67f2f2ff16314c3b6  gcc/testsuite/gcc.target/aarch64/simd/vrev16p8.x
--- 55002,55019 ----
  717bce202d209f9adce8c15afe0f6dc5  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s16_indices_1.c
  72f7beac54fbdcd491bb63c7aea1b02f  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s32.c
  1284468c23ec47e577143593ee536f67  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulh_laneq_s32_indices_1.c
! 29d6b6d7256bbd3a0072993acc06a281  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_lane_s16.c
  c3efc4aacec3dc7e9857a22044f8dfe3  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_lane_s16_indices_1.c
! a18a40ac2bd6a91e424b48297988e13c  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhh_laneq_s16_1.c
  bb7643e8266eb9ecc537a1d2a5b93d10  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_lane_s16_indices_1.c
  2917ea7c9d4473a22018666f66120cea  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_lane_s32_indices_1.c
  e90b621a67f3ad614a7eca38a056cc26  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s16.c
  0bf2a411c58742ca4e8dc09deaf63ca1  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s16_indices_1.c
  8b6780ea27c07a92bfd5e71ba157c7d2  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s32.c
  9063e1cd4be289bff5bf8accea0d4143  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhq_laneq_s32_indices_1.c
! e92449dbe51f0662375441361477b642  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_lane_s32.c
  f47ff008eabd1771b9f7850c6af67037  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_lane_s32_indices_1.c
! efab84aba0152e5b78b2b69c2f8a4974  gcc/testsuite/gcc.target/aarch64/simd/vqrdmulhs_laneq_s32_1.c
  d038a49ab51bbd3d2923efa046b88a04  gcc/testsuite/gcc.target/aarch64/simd/vqshlb_1.c
  5dbcbb4f9ffc8242f121a1460096e912  gcc/testsuite/gcc.target/aarch64/simd/vrbit_1.c
  951d82e9d2ea92e67f2f2ff16314c3b6  gcc/testsuite/gcc.target/aarch64/simd/vrev16p8.x
*************** e24e752cdfaae08d96c7ec56c0ef75fd  gcc/te
*** 51819,51828 ****
  ea10ab0509dcbe5d25695d4b7db37790  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
  411e73a8b509fa4da979e06198cebf3f  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
  191883f75825c4b0b253a140dcf374ff  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
! 123ec9662951341951c6777c8776984f  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
  95e880a9b2777120f2cedeadb9eff8ee  gcc/testsuite/gcc.target/aarch64/sm3_sm4.c
  75e6f162f69d023ed491e527240992ca  gcc/testsuite/gcc.target/aarch64/smov_1.c
  e414dc04465c5addb25b43a59cc281ec  gcc/testsuite/gcc.target/aarch64/spellcheck_1.c
  1c287219907e110889f1c6702b055fdc  gcc/testsuite/gcc.target/aarch64/spellcheck_2.c
  0994b950f62dafc38693405ca796983d  gcc/testsuite/gcc.target/aarch64/spellcheck_3.c
  7a99444b0c4b744562c85becf03023c1  gcc/testsuite/gcc.target/aarch64/spellcheck_4.c
--- 55211,55221 ----
  ea10ab0509dcbe5d25695d4b7db37790  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-blr.c
  411e73a8b509fa4da979e06198cebf3f  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr-pacret.c
  191883f75825c4b0b253a140dcf374ff  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-miti-retbr.c
! 1fd9f7a128a06ec973c245bbc26a5f2b  gcc/testsuite/gcc.target/aarch64/sls-mitigation/sls-mitigation.exp
  95e880a9b2777120f2cedeadb9eff8ee  gcc/testsuite/gcc.target/aarch64/sm3_sm4.c
  75e6f162f69d023ed491e527240992ca  gcc/testsuite/gcc.target/aarch64/smov_1.c
  e414dc04465c5addb25b43a59cc281ec  gcc/testsuite/gcc.target/aarch64/spellcheck_1.c
+ 0b508e0ea40f93dfb0b6afcca4d21f87  gcc/testsuite/gcc.target/aarch64/spellcheck_10.c
  1c287219907e110889f1c6702b055fdc  gcc/testsuite/gcc.target/aarch64/spellcheck_2.c
  0994b950f62dafc38693405ca796983d  gcc/testsuite/gcc.target/aarch64/spellcheck_3.c
  7a99444b0c4b744562c85becf03023c1  gcc/testsuite/gcc.target/aarch64/spellcheck_4.c
*************** a39fffcb877f065fdd23dfa57eee91ff  gcc/te
*** 51850,51857 ****
  863c1d4981653714d2c83be7c8ca2380  gcc/testsuite/gcc.target/aarch64/stack-check-alloca-8.c
  45b4c2bf6fb81a430d8f6727b9f34006  gcc/testsuite/gcc.target/aarch64/stack-check-alloca-9.c
  45d0507f692b31ce9bcb7889745dd889  gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
! 01eadd42b5120f04e2082246dd262f95  gcc/testsuite/gcc.target/aarch64/stack-check-cfa-1.c
! a2b26ce3b98bf832bec591ff538bca93  gcc/testsuite/gcc.target/aarch64/stack-check-cfa-2.c
  c2a30320545955ae7a4bcbbb006591c0  gcc/testsuite/gcc.target/aarch64/stack-check-cfa-3.c
  65bc395ce81a82844cf56c9c527ed62e  gcc/testsuite/gcc.target/aarch64/stack-check-prologue-1.c
  e1809e82f25f94c4d0945a9220fc235e  gcc/testsuite/gcc.target/aarch64/stack-check-prologue-10.c
--- 55243,55250 ----
  863c1d4981653714d2c83be7c8ca2380  gcc/testsuite/gcc.target/aarch64/stack-check-alloca-8.c
  45b4c2bf6fb81a430d8f6727b9f34006  gcc/testsuite/gcc.target/aarch64/stack-check-alloca-9.c
  45d0507f692b31ce9bcb7889745dd889  gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
! 223977e4450d22425c3f32311d353183  gcc/testsuite/gcc.target/aarch64/stack-check-cfa-1.c
! 98bf4582988e92904b41701cbd198690  gcc/testsuite/gcc.target/aarch64/stack-check-cfa-2.c
  c2a30320545955ae7a4bcbbb006591c0  gcc/testsuite/gcc.target/aarch64/stack-check-cfa-3.c
  65bc395ce81a82844cf56c9c527ed62e  gcc/testsuite/gcc.target/aarch64/stack-check-prologue-1.c
  e1809e82f25f94c4d0945a9220fc235e  gcc/testsuite/gcc.target/aarch64/stack-check-prologue-10.c
*************** a4531a773ebb1ba221309f7860dbafa3  gcc/te
*** 51901,51910 ****
  da0f05a59f07947e5516436d11add9e4  gcc/testsuite/gcc.target/aarch64/subs_compare_1.c
  244d438c9b47564a8579d9ea1b0639e2  gcc/testsuite/gcc.target/aarch64/subs_compare_2.c
  b80ee08d736c3560f1d085793990beb9  gcc/testsuite/gcc.target/aarch64/subsp.c
! 3a9dc1e92859b2d64dcd3933805075f0  gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
  18ebbc8e9de1d2ee5d54133da671b995  gcc/testsuite/gcc.target/aarch64/sve/abs_1.c
! ef08758527e2f9f0f98d6633dda30648  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! b3c544e15b6a716301bf7b40cddc7e51  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
  7f5733dc43b70ddb95a2391ed989189b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f16.c
  50880d9abd4092a46bc1d7b23eb352a4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f32.c
  94959a93fdfe967c8d71932f6b318833  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f64.c
--- 55294,55303 ----
  da0f05a59f07947e5516436d11add9e4  gcc/testsuite/gcc.target/aarch64/subs_compare_1.c
  244d438c9b47564a8579d9ea1b0639e2  gcc/testsuite/gcc.target/aarch64/subs_compare_2.c
  b80ee08d736c3560f1d085793990beb9  gcc/testsuite/gcc.target/aarch64/subsp.c
! 5100298de44ce9bb05c0d7f99fe29e50  gcc/testsuite/gcc.target/aarch64/sve/aarch64-sve.exp
  18ebbc8e9de1d2ee5d54133da671b995  gcc/testsuite/gcc.target/aarch64/sve/abs_1.c
! 6055e2691e8fd9527c1dc616fa8481ec  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle-asm.exp
! 7ae1887a6c09d13a53f0d2be00acd608  gcc/testsuite/gcc.target/aarch64/sve/acle/aarch64-sve-acle.exp
  7f5733dc43b70ddb95a2391ed989189b  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f16.c
  50880d9abd4092a46bc1d7b23eb352a4  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f32.c
  94959a93fdfe967c8d71932f6b318833  gcc/testsuite/gcc.target/aarch64/sve/acle/asm/abd_f64.c
*************** ec11eff8f5009ed3e03c5cf524c5878a  gcc/te
*** 53526,53533 ****
  0b68032f816a925e8845d3f268a55eec  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_4.c
  337b7d7297a2c734b9d6bb549e12ff20  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_5.c
  1b825dc1e669f521fe9e9634dc38c59d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_6.c
! 84c0374d800b28d71858a7582a3ace36  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c
! 38760965db449b53ea194aab724a2971  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c
  b770c388883ffa9cba2a327f326c095c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
  080af5a2a0700b55236617c1664d8616  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
  ab6e998de220254a7fd49a73ef7eeb48  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/inc_dec_1.c
--- 56919,56926 ----
  0b68032f816a925e8845d3f268a55eec  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_4.c
  337b7d7297a2c734b9d6bb549e12ff20  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_5.c
  1b825dc1e669f521fe9e9634dc38c59d  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/get_6.c
! b7a3c2edca741d7b4c4b8125976c63a2  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_1.c
! 979b52ffe58f075abc0d7aeee3475935  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_2.c
  b770c388883ffa9cba2a327f326c095c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_3.c
  080af5a2a0700b55236617c1664d8616  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/gnu_vectors_4.c
  ab6e998de220254a7fd49a73ef7eeb48  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/inc_dec_1.c
*************** d694a2a73e1299bcb9942d63a1fd1f53  gcc/te
*** 53596,53603 ****
  7860e226748dc56cc8a042c854f7451c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_to_uint_1.c
  5247f1c6191fedb6ff46df2d8b49730b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c
  72423ba2ee357b0880c2f5c558b896cb  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c
! 06069f328b5c95b071d228cede1370ee  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
! 0954a03ad195133021581beb7daaaf5b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
  e2a52c026c55887b56cf89fcbf36f4ab  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c
  08d256af3c1d657a617185babd817877  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c
  6c75b84741b054bef7e2c7af4cade6dc  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c
--- 56989,56996 ----
  7860e226748dc56cc8a042c854f7451c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowb_to_uint_1.c
  5247f1c6191fedb6ff46df2d8b49730b  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_1.c
  72423ba2ee357b0880c2f5c558b896cb  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/shift_right_imm_narrowt_to_uint_1.c
! eeecc69ee185191f420ff179f52442cf  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-1.c
! 3ec75b71e378c7b447e19930f9b358a3  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/sizeless-2.c
  e2a52c026c55887b56cf89fcbf36f4ab  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_1.c
  08d256af3c1d657a617185babd817877  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_2.c
  6c75b84741b054bef7e2c7af4cade6dc  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/store_scatter_index_1.c
*************** b52fb4e9ec8a6b03376457660198d288  gcc/te
*** 53610,53616 ****
  e489201588035c19e80854319dfa6c1c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_1.c
  2a968cffec554c08f741b8e1d996c629  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lane_1.c
  536694c0c8ac04dfb812d7e5fe6f95b9  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lanex2_1.c
! 9dcef37750ca02c4119d1ce02be951c3  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_opt_n_1.c
  5ea045af8c3b78015c57a191f6deee74  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_lane_1.c
  ddb27d621b0790b802bcfd7ccc5f89e0  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_opt_n_1.c
  fa4dcb6f258709fbf77beb43a8a32a71  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_lane_1.c
--- 57003,57009 ----
  e489201588035c19e80854319dfa6c1c  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_1.c
  2a968cffec554c08f741b8e1d996c629  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lane_1.c
  536694c0c8ac04dfb812d7e5fe6f95b9  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_lanex2_1.c
! c09e6507cab90829ffcb000f63b46bf4  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_bfloat16_opt_n_1.c
  5ea045af8c3b78015c57a191f6deee74  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_lane_1.c
  ddb27d621b0790b802bcfd7ccc5f89e0  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_intq_uintq_opt_n_1.c
  fa4dcb6f258709fbf77beb43a8a32a71  gcc/testsuite/gcc.target/aarch64/sve/acle/general-c/ternary_lane_1.c
*************** c837aa90d4f65fe43a41a1df66ecddaa  gcc/te
*** 53675,53688 ****
  dbd822adb848a971885a06967432c628  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_4.c
  cffa63a742186323feab22505915a6e9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_5.c
  4427e079ae4e96814bee01be95c9fa65  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_6.c
! e566a5e929cb642a78066bf00691e1bc  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_7.c
  92c276aa826427c641795daf9568c67a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_8.c
  05382618b8c4ba6e308d6b5ff864fab5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/bic_1.c
! 5ae6341c57153ec20112c098c47d4a4f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brka_1.c
  4eea3d7baf0e2958356c0c33600e72e4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brka_2.c
! 47cd2b091e30ac40fddd5d5428615f8d  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkb_1.c
  727e5a19783b8b46c75ba94a5a33f1da  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkb_2.c
! 88cae91706dea5ab1150bf4ba8df41d5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkn_1.c
  3e4d3053ca7b442dbfeb54e8df14d433  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkpa_1.c
  41715679da86b4845c2da3233725d0f2  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkpb_1.c
  4e7a3ff45a72f35e2476f4e660886eb0  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cmpeq_1.c
--- 57068,57082 ----
  dbd822adb848a971885a06967432c628  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_4.c
  cffa63a742186323feab22505915a6e9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_5.c
  4427e079ae4e96814bee01be95c9fa65  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_6.c
! 8eb96c59a60b9d4449fc0ae4c9d8ccb2  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_7.c
  92c276aa826427c641795daf9568c67a  gcc/testsuite/gcc.target/aarch64/sve/acle/general/attributes_8.c
  05382618b8c4ba6e308d6b5ff864fab5  gcc/testsuite/gcc.target/aarch64/sve/acle/general/bic_1.c
! af77aba325d1fbc52d95aa9fcc602577  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brka_1.c
  4eea3d7baf0e2958356c0c33600e72e4  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brka_2.c
! f81d80fd6fc545f0e3c86a51a1ad1aa8  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkb_1.c
  727e5a19783b8b46c75ba94a5a33f1da  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkb_2.c
! f05f061869c6f335b6395f5250ec83ee  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkn_1.c
! 649722b7feeb54ead3f4ff347e8ef4db  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkn_2.c
  3e4d3053ca7b442dbfeb54e8df14d433  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkpa_1.c
  41715679da86b4845c2da3233725d0f2  gcc/testsuite/gcc.target/aarch64/sve/acle/general/brkpb_1.c
  4e7a3ff45a72f35e2476f4e660886eb0  gcc/testsuite/gcc.target/aarch64/sve/acle/general/cmpeq_1.c
*************** bb3a7f2587d8584d185738649f93a6f6  gcc/te
*** 53747,53755 ****
--- 57141,57152 ----
  4a5457bf98a3061b6c949b777ceca410  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_1.c
  6d3b0cbb6b0b88e0030fbf0003faa4c9  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pnext_2.c
  9ff121474de72b7f1e7df15e02d1fcbf  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr104092.c
+ 06b9fe18846ba9da10d77ea945b0fa4f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr107920.c
  cd84e485b3fa7a0d50f2ee5113eca33d  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94683.c
  111a35b5bdbe877086a99d29b13dc65b  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr94700.c
  dd9873ff910539b000561a51ccc3a52f  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr96146.c
+ 050fdcad0003e5c41e7b51b49036f7e7  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr96463-1.c
+ 0563e3e4b4098431d25f77b622f4d38d  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr96463-2.c
  da046fabc772d027dd4d185b27c37230  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr97546.c
  999779dd0082670db7ad0a68cd4d67d1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr98037.c
  a5788fbbeb941609b02d51151c326705  gcc/testsuite/gcc.target/aarch64/sve/acle/general/pr99246.c
*************** d36d9579c20df8f136f28fd106587166  gcc/te
*** 53779,53784 ****
--- 57176,57182 ----
  3d416ecddcdc2b5a7c6c8837f0357738  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_3.c
  0806391c016c8debb474b7d2ccb7f9e1  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_4.c
  ba734365b41c2307c8f246196db5fb40  gcc/testsuite/gcc.target/aarch64/sve/acle/general/whilelt_5.c
+ 961cd5bf40c30fe194d6c5a5bb165705  gcc/testsuite/gcc.target/aarch64/sve/addsub_1.c
  76a0c6858282d55909f2d7749a149ea2  gcc/testsuite/gcc.target/aarch64/sve/adr_1.c
  2d610447058d50eb4f033ca1419526bb  gcc/testsuite/gcc.target/aarch64/sve/adr_1_run.c
  28f064710084d9e8a8aef431c7cb26de  gcc/testsuite/gcc.target/aarch64/sve/adr_2.c
*************** ae054ca80eef5370f60b398f80ca624e  gcc/te
*** 53844,53850 ****
  de20c023bfdec615e3bef202481b8941  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5.c
  f76243fd74d976c03e9e9c6e2d0e09af  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5_run.c
  057607b93c8072bb59862f61a65f16f7  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_6.c
! b4c45622c244462e8e96da2776491fe6  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
  66f89090e06d8be84d0ece9730aee086  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c
  e8b19672e185ac775fab17be20819eed  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c
  e9ed357e627af054ebae26f9f7b0ee32  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c
--- 57242,57248 ----
  de20c023bfdec615e3bef202481b8941  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5.c
  f76243fd74d976c03e9e9c6e2d0e09af  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_5_run.c
  057607b93c8072bb59862f61a65f16f7  gcc/testsuite/gcc.target/aarch64/sve/cond_arith_6.c
! bd01832532ac120bc025aa363c885809  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1.c
  66f89090e06d8be84d0ece9730aee086  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_1_run.c
  e8b19672e185ac775fab17be20819eed  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2.c
  e9ed357e627af054ebae26f9f7b0ee32  gcc/testsuite/gcc.target/aarch64/sve/cond_asrd_2_run.c
*************** eb7f72a0a8905e0f9d876a515cbc0468  gcc/te
*** 53856,53866 ****
  aba660a7ebde60eb7c63ad59a707f076  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_2_run.c
  442027510f6e107e768dbd2aad42fa72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3.c
  85048f66e07545d536f3ae18e4e4df87  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3_run.c
! 59eec511c9c251315afde458cc1604dd  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
  a14493d83d663147b4b88fd163bc2b72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c
  5ce681225c3088de36e1d1a7654fd8b3  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c
  13a3ee06b66c0c4211cb0cc7b785c475  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c
! 5a9c356f75f02e51fba3247a83a311e6  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c
  2fc0c2415bf756641ef095c94659fad8  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c
  f6afb0f0ed8ad11d5fa81cc1c80c7dc7  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1.c
  7e75481a97c6bdc123111a4215aca802  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1_run.c
--- 57254,57264 ----
  aba660a7ebde60eb7c63ad59a707f076  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_2_run.c
  442027510f6e107e768dbd2aad42fa72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3.c
  85048f66e07545d536f3ae18e4e4df87  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_3_run.c
! 202d7b1d33137718d5fe28e4e2cd7272  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4.c
  a14493d83d663147b4b88fd163bc2b72  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_4_run.c
  5ce681225c3088de36e1d1a7654fd8b3  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5.c
  13a3ee06b66c0c4211cb0cc7b785c475  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_5_run.c
! a1ca28c7d5290182afb9ef7d7fd2924c  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6.c
  2fc0c2415bf756641ef095c94659fad8  gcc/testsuite/gcc.target/aarch64/sve/cond_cnot_6_run.c
  f6afb0f0ed8ad11d5fa81cc1c80c7dc7  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1.c
  7e75481a97c6bdc123111a4215aca802  gcc/testsuite/gcc.target/aarch64/sve/cond_convert_1_run.c
*************** c646dd2e0fac8da4972c667888c025dc  gcc/te
*** 53993,54001 ****
  48c8b8da28cd7561f3eebc9897a10408  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_3_run.c
  203714ae863c84f9652c911b42a25da5  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_4.c
  14deb8e873fa9fed70a00adc999bf312  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_4_run.c
! bd1261d11edb1213d28b6113b1dc7c75  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
  435ac44927974eb89426cad7e0d39cce  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c
! fb24b56fb4c4a1f7922f2ac01cf2d48c  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c
  91fa757262d5209751931a7e514e7e42  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c
  21cdf9de5c49a0808c598704b79049c6  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c
  678eb6b159a1b54b7a80cf499bdde4f9  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c
--- 57391,57399 ----
  48c8b8da28cd7561f3eebc9897a10408  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_3_run.c
  203714ae863c84f9652c911b42a25da5  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_4.c
  14deb8e873fa9fed70a00adc999bf312  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_4_run.c
! eb1747931f82467dfe34ef642129e56f  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5.c
  435ac44927974eb89426cad7e0d39cce  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_5_run.c
! 9ed3dd7a15c80c18e046f7ad39033169  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6.c
  91fa757262d5209751931a7e514e7e42  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_6_run.c
  21cdf9de5c49a0808c598704b79049c6  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7.c
  678eb6b159a1b54b7a80cf499bdde4f9  gcc/testsuite/gcc.target/aarch64/sve/cond_unary_7_run.c
*************** a8419890219c776edc0ed6dbae299529  gcc/te
*** 54009,54015 ****
  81c8713fc65aeeceea43e413e0853180  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_3_run.c
  552619d8323219cf84c033d1e66bb3be  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4.c
  17f39d852a925eb171b031496e369494  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4_run.c
! 2a26f11dc31ece90edd0e28aee57e613  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
  5669236b1b64f25a02492e26bff3fff9  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c
  8bbdef796cb9f7c3ed167406690c24c5  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c
  d8756a95c958d82cd6c5e7e4c6a9a6b0  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c
--- 57407,57413 ----
  81c8713fc65aeeceea43e413e0853180  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_3_run.c
  552619d8323219cf84c033d1e66bb3be  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4.c
  17f39d852a925eb171b031496e369494  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_4_run.c
! d3a49e046c591565f5cd7736b81bf151  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5.c
  5669236b1b64f25a02492e26bff3fff9  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_5_run.c
  8bbdef796cb9f7c3ed167406690c24c5  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6.c
  d8756a95c958d82cd6c5e7e4c6a9a6b0  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_6_run.c
*************** d8756a95c958d82cd6c5e7e4c6a9a6b0  gcc/te
*** 54017,54022 ****
--- 57415,57422 ----
  7f7d04c06d2f68f2c315d1d6caacb701  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_7_run.c
  360164890e0d8ef8fb7d8cc47959b759  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8.c
  8b2488dcbf94dff35c79b3e2cdc76d4c  gcc/testsuite/gcc.target/aarch64/sve/cond_uxt_8_run.c
+ 2cb4d7fb5b43492872ebb5bf43ada8f0  gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_1.c
+ 12b05d054409e66e682011f6daaac0e0  gcc/testsuite/gcc.target/aarch64/sve/cond_xorsign_2.c
  3f80e6ac7e9eb0358bfcba6677fdffad  gcc/testsuite/gcc.target/aarch64/sve/const_1.c
  a04b176d1f4debec96b6eb4ccec14017  gcc/testsuite/gcc.target/aarch64/sve/const_2.c
  748aa3fe4ea69df2485d8d4f5cea0000  gcc/testsuite/gcc.target/aarch64/sve/const_3.c
*************** c586ed3d32d5df8a6105efcebd07dd98  gcc/te
*** 54062,54068 ****
  d68047438620c41fa63ab865908964c6  gcc/testsuite/gcc.target/aarch64/sve/extract_3.c
  8fcc627e22d38ab106a67d22164e34b1  gcc/testsuite/gcc.target/aarch64/sve/extract_4.c
  78032a462f8d255b37f9ae88a948b638  gcc/testsuite/gcc.target/aarch64/sve/extract_5.c
! 9a75f7f21b17e6d75ba9243a784a9a81  gcc/testsuite/gcc.target/aarch64/sve/fabd_1.c
  e09d60c9368e764045edec1b162362fb  gcc/testsuite/gcc.target/aarch64/sve/fabs_1.c
  e17e79795ac83cf6b647f5a47d70895f  gcc/testsuite/gcc.target/aarch64/sve/fadda_1.c
  68ba5ef8137ec135b92767cce4f91f2c  gcc/testsuite/gcc.target/aarch64/sve/fcvtz_signed_1.c
--- 57462,57468 ----
  d68047438620c41fa63ab865908964c6  gcc/testsuite/gcc.target/aarch64/sve/extract_3.c
  8fcc627e22d38ab106a67d22164e34b1  gcc/testsuite/gcc.target/aarch64/sve/extract_4.c
  78032a462f8d255b37f9ae88a948b638  gcc/testsuite/gcc.target/aarch64/sve/extract_5.c
! 05e4cf39731fb932fb11ed96cfc93adc  gcc/testsuite/gcc.target/aarch64/sve/fabd_1.c
  e09d60c9368e764045edec1b162362fb  gcc/testsuite/gcc.target/aarch64/sve/fabs_1.c
  e17e79795ac83cf6b647f5a47d70895f  gcc/testsuite/gcc.target/aarch64/sve/fadda_1.c
  68ba5ef8137ec135b92767cce4f91f2c  gcc/testsuite/gcc.target/aarch64/sve/fcvtz_signed_1.c
*************** e1ebbc13eea26781f1254af1d30baefc  gcc/te
*** 54084,54096 ****
  95b5b4f4d37b2eb26a3e6bb60f4621fb  gcc/testsuite/gcc.target/aarch64/sve/fmla_2_run.c
  de76ba42542481bf5d10f04cc4a567e0  gcc/testsuite/gcc.target/aarch64/sve/fmls_1.c
  3628717788183220201dedb49380cc4e  gcc/testsuite/gcc.target/aarch64/sve/fmsb_1.c
! 5175978b3047304f6480db7a7f211bf3  gcc/testsuite/gcc.target/aarch64/sve/fmul_1.c
  321ab23efa97fd79ba7096856581ba95  gcc/testsuite/gcc.target/aarch64/sve/fneg_1.c
  d7286c7d7044caf530eb51c8265882bf  gcc/testsuite/gcc.target/aarch64/sve/fnmad_1.c
  0a35e1341e09452548284613ce871aab  gcc/testsuite/gcc.target/aarch64/sve/fnmla_1.c
  b1f34999111510e2f313342976d93991  gcc/testsuite/gcc.target/aarch64/sve/fnmls_1.c
  c6ea286d39fa074b2f5ebe016371f47e  gcc/testsuite/gcc.target/aarch64/sve/fnmsb_1.c
! 65ff8f84c427db09d4d38188ed2ea9c5  gcc/testsuite/gcc.target/aarch64/sve/fp_arith_1.c
  d4b418cc5537148fb9700983744cb6e1  gcc/testsuite/gcc.target/aarch64/sve/frinta_1.c
  7150ced0ec1abb3083a5755508b2f528  gcc/testsuite/gcc.target/aarch64/sve/frinti_1.c
  dcaa686631aa0b4617b68bb9a59197cb  gcc/testsuite/gcc.target/aarch64/sve/frintm_1.c
--- 57484,57496 ----
  95b5b4f4d37b2eb26a3e6bb60f4621fb  gcc/testsuite/gcc.target/aarch64/sve/fmla_2_run.c
  de76ba42542481bf5d10f04cc4a567e0  gcc/testsuite/gcc.target/aarch64/sve/fmls_1.c
  3628717788183220201dedb49380cc4e  gcc/testsuite/gcc.target/aarch64/sve/fmsb_1.c
! 621f97df478d60ad2d8b4f5b792dc424  gcc/testsuite/gcc.target/aarch64/sve/fmul_1.c
  321ab23efa97fd79ba7096856581ba95  gcc/testsuite/gcc.target/aarch64/sve/fneg_1.c
  d7286c7d7044caf530eb51c8265882bf  gcc/testsuite/gcc.target/aarch64/sve/fnmad_1.c
  0a35e1341e09452548284613ce871aab  gcc/testsuite/gcc.target/aarch64/sve/fnmla_1.c
  b1f34999111510e2f313342976d93991  gcc/testsuite/gcc.target/aarch64/sve/fnmls_1.c
  c6ea286d39fa074b2f5ebe016371f47e  gcc/testsuite/gcc.target/aarch64/sve/fnmsb_1.c
! 09f24f114bf0079fa6cd77c56a4ab54c  gcc/testsuite/gcc.target/aarch64/sve/fp_arith_1.c
  d4b418cc5537148fb9700983744cb6e1  gcc/testsuite/gcc.target/aarch64/sve/frinta_1.c
  7150ced0ec1abb3083a5755508b2f528  gcc/testsuite/gcc.target/aarch64/sve/frinti_1.c
  dcaa686631aa0b4617b68bb9a59197cb  gcc/testsuite/gcc.target/aarch64/sve/frintm_1.c
*************** f18be1e7abbda4855f72a61ca0933ab7  gcc/te
*** 54098,54104 ****
  79c4c16c5e6085a4f556a31d040a9bb4  gcc/testsuite/gcc.target/aarch64/sve/frintx_1.c
  9910bd2f1261719b81a80509e3d2295d  gcc/testsuite/gcc.target/aarch64/sve/frintz_1.c
  607014dc05862a9ad4f7f4418f259f4c  gcc/testsuite/gcc.target/aarch64/sve/fsqrt_1.c
! d68da16c2a0199fc893e113ce4495812  gcc/testsuite/gcc.target/aarch64/sve/fsubr_1.c
  f07bba8d8481e5ecf52b8e2cb7e34fc4  gcc/testsuite/gcc.target/aarch64/sve/gather_load_1.c
  d624e2893eea113ceac2f384f150224e  gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c
  85f4fd77f528414afa59cb2cf0575f23  gcc/testsuite/gcc.target/aarch64/sve/gather_load_11.c
--- 57498,57504 ----
  79c4c16c5e6085a4f556a31d040a9bb4  gcc/testsuite/gcc.target/aarch64/sve/frintx_1.c
  9910bd2f1261719b81a80509e3d2295d  gcc/testsuite/gcc.target/aarch64/sve/frintz_1.c
  607014dc05862a9ad4f7f4418f259f4c  gcc/testsuite/gcc.target/aarch64/sve/fsqrt_1.c
! 5dcdcb3bfd4e0ede6827ac488ba11d6a  gcc/testsuite/gcc.target/aarch64/sve/fsubr_1.c
  f07bba8d8481e5ecf52b8e2cb7e34fc4  gcc/testsuite/gcc.target/aarch64/sve/gather_load_1.c
  d624e2893eea113ceac2f384f150224e  gcc/testsuite/gcc.target/aarch64/sve/gather_load_10.c
  85f4fd77f528414afa59cb2cf0575f23  gcc/testsuite/gcc.target/aarch64/sve/gather_load_11.c
*************** ed8c00bb799512fa988960af6397117a  gcc/te
*** 54259,54264 ****
--- 57659,57665 ----
  3a2b3ac68ec5a5d4dbd3ece209e5d84c  gcc/testsuite/gcc.target/aarch64/sve/mixed_size_9.c
  dd11207791d13f084db138dc0f5db1d6  gcc/testsuite/gcc.target/aarch64/sve/mla_1.c
  f225f93a4247d63d33445e7f1312fa59  gcc/testsuite/gcc.target/aarch64/sve/mla_2.c
+ fbbf192bd359cab23c9f4bf7c2af214c  gcc/testsuite/gcc.target/aarch64/sve/mla_3.c
  cafa023ecc4fc66a8c9a3bcda1baef83  gcc/testsuite/gcc.target/aarch64/sve/mls_1.c
  585d1ba667e1091cae32cede44f75eb1  gcc/testsuite/gcc.target/aarch64/sve/mls_2.c
  373914dd86484840207e0827a609555d  gcc/testsuite/gcc.target/aarch64/sve/mov_rr_1.c
*************** bd0ea7412913a5ce083ddea4613bd169  gcc/te
*** 54284,54290 ****
  fa06e7238dbd52dd10fcbc8218d6f455  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1.c
  f73856c9978f65aed41f7a5c062f010a  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1_run.c
  3767d9f5b48765e1ea663d93605a0b14  gcc/testsuite/gcc.target/aarch64/sve/part_vect_single_iter_epilog.c
! 81af0068658edca0dc2303ec5848ce9a  gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
  32297ab4eebb8c660c35d34c167b3298  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_1.c
  248fda9300aa4a9871796c24beae3e58  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_2.c
  eb3818ec16fadffb1ecf19d7a7d01030  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_3.c
--- 57685,57691 ----
  fa06e7238dbd52dd10fcbc8218d6f455  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1.c
  f73856c9978f65aed41f7a5c062f010a  gcc/testsuite/gcc.target/aarch64/sve/pack_float_1_run.c
  3767d9f5b48765e1ea663d93605a0b14  gcc/testsuite/gcc.target/aarch64/sve/part_vect_single_iter_epilog.c
! 3d753238fd574c5bbbbb5420eeefc339  gcc/testsuite/gcc.target/aarch64/sve/pcs/aarch64-sve-pcs.exp
  32297ab4eebb8c660c35d34c167b3298  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_1.c
  248fda9300aa4a9871796c24beae3e58  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_2.c
  eb3818ec16fadffb1ecf19d7a7d01030  gcc/testsuite/gcc.target/aarch64/sve/pcs/annotate_3.c
*************** ab7e96ffad0e120db206c2fe1d3866a9  gcc/te
*** 54470,54475 ****
--- 57871,57882 ----
  e30fd5dcda5a72ba3b2d66a5485b282a  gcc/testsuite/gcc.target/aarch64/sve/pr104474-3.c
  a1eb5ddb5902496d5253fa3260ba71e1  gcc/testsuite/gcc.target/aarch64/sve/pr105197-1.c
  03657387d2c9ee82c783fb8d0980449a  gcc/testsuite/gcc.target/aarch64/sve/pr105197-2.c
+ 8cdf49618d3a0d6c619b66f29122607c  gcc/testsuite/gcc.target/aarch64/sve/pr106524.c
+ 98d66f81e990fa17cc98d71159fe3ada  gcc/testsuite/gcc.target/aarch64/sve/pr108430.c
+ 48482e1fc72765b58f7e50fe16705068  gcc/testsuite/gcc.target/aarch64/sve/pr108603.c
+ e63ee9a8151c9691caadc8fcc81bbf26  gcc/testsuite/gcc.target/aarch64/sve/pr108608-1.c
+ fca208aba0269c8218d4736a10ac6a83  gcc/testsuite/gcc.target/aarch64/sve/pr109176.c
+ 72b392d1da91fcaa10ed39874a05eb04  gcc/testsuite/gcc.target/aarch64/sve/pr109254.c
  7e2aaf0806edd37415079b5c2e48b66c  gcc/testsuite/gcc.target/aarch64/sve/pr81003.c
  00b752a6e175de8b1a300df08f275461  gcc/testsuite/gcc.target/aarch64/sve/pr87563.c
  c56eeba71ad463673a1bdb30e7a94863  gcc/testsuite/gcc.target/aarch64/sve/pr87815.c
*************** df29a45b5ee2033132b0a6f7d96ebfe3  gcc/te
*** 54599,54608 ****
  a859ea80596a38af45ac60b162ed9e8a  gcc/testsuite/gcc.target/aarch64/sve/slp_11_run.c
  d0c4e7129d2cfff6b2f83ac4dc3c0cc7  gcc/testsuite/gcc.target/aarch64/sve/slp_12.c
  f5f2ddecb49f9cee52452fe9bf42028a  gcc/testsuite/gcc.target/aarch64/sve/slp_12_run.c
! 043891703559bfff71f0bfc6daf41305  gcc/testsuite/gcc.target/aarch64/sve/slp_13.c
  5063e2f1b2fdd4123ce879dfc91c4698  gcc/testsuite/gcc.target/aarch64/sve/slp_13_run.c
  e7b6f99f9d5d9e3d9c73299b45ea654c  gcc/testsuite/gcc.target/aarch64/sve/slp_14.c
  c54948f7932f7edbfcf5e583707bb57a  gcc/testsuite/gcc.target/aarch64/sve/slp_14_run.c
  79f41ea7a893e9339ce387e58fe66fd6  gcc/testsuite/gcc.target/aarch64/sve/slp_1_run.c
  a9b0fe55793066f4a15802f6acd2e1e6  gcc/testsuite/gcc.target/aarch64/sve/slp_2.c
  b8578d07ed2dd3d31f510c026633eb78  gcc/testsuite/gcc.target/aarch64/sve/slp_2_run.c
--- 58006,58016 ----
  a859ea80596a38af45ac60b162ed9e8a  gcc/testsuite/gcc.target/aarch64/sve/slp_11_run.c
  d0c4e7129d2cfff6b2f83ac4dc3c0cc7  gcc/testsuite/gcc.target/aarch64/sve/slp_12.c
  f5f2ddecb49f9cee52452fe9bf42028a  gcc/testsuite/gcc.target/aarch64/sve/slp_12_run.c
! 42057a068a96761d35fa47068601da11  gcc/testsuite/gcc.target/aarch64/sve/slp_13.c
  5063e2f1b2fdd4123ce879dfc91c4698  gcc/testsuite/gcc.target/aarch64/sve/slp_13_run.c
  e7b6f99f9d5d9e3d9c73299b45ea654c  gcc/testsuite/gcc.target/aarch64/sve/slp_14.c
  c54948f7932f7edbfcf5e583707bb57a  gcc/testsuite/gcc.target/aarch64/sve/slp_14_run.c
+ 3d81f01a302896a05a60f12a487cb805  gcc/testsuite/gcc.target/aarch64/sve/slp_15.c
  79f41ea7a893e9339ce387e58fe66fd6  gcc/testsuite/gcc.target/aarch64/sve/slp_1_run.c
  a9b0fe55793066f4a15802f6acd2e1e6  gcc/testsuite/gcc.target/aarch64/sve/slp_2.c
  b8578d07ed2dd3d31f510c026633eb78  gcc/testsuite/gcc.target/aarch64/sve/slp_2_run.c
*************** f43ef1769e91eb875072734c9c8173f1  gcc/te
*** 54784,54790 ****
  f0f80eba8ad8cb496dcf47c07681b8c4  gcc/testsuite/gcc.target/aarch64/sve/vcond_2_run.c
  1d26374203c365b659b39bcfeb06199e  gcc/testsuite/gcc.target/aarch64/sve/vcond_3.c
  38651e95e5b4205ca7bb3bc5b6ea8489  gcc/testsuite/gcc.target/aarch64/sve/vcond_4.c
! d63d637d72859822dcb39eae7a8b8dba  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_costly.c
  a97678d2ba804b4a8bec4111661eb537  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_run.c
  624dfc744b415ae9884bdd6dce72a57f  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_sel.c
  b01361325a97d937e4664ba86e8f8fcb  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_zero.c
--- 58192,58198 ----
  f0f80eba8ad8cb496dcf47c07681b8c4  gcc/testsuite/gcc.target/aarch64/sve/vcond_2_run.c
  1d26374203c365b659b39bcfeb06199e  gcc/testsuite/gcc.target/aarch64/sve/vcond_3.c
  38651e95e5b4205ca7bb3bc5b6ea8489  gcc/testsuite/gcc.target/aarch64/sve/vcond_4.c
! 04d905a4165cb88d645ce34061ae95a9  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_costly.c
  a97678d2ba804b4a8bec4111661eb537  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_run.c
  624dfc744b415ae9884bdd6dce72a57f  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_sel.c
  b01361325a97d937e4664ba86e8f8fcb  gcc/testsuite/gcc.target/aarch64/sve/vcond_4_zero.c
*************** e13b38f2990120fb563c7e3296667346  gcc/te
*** 54829,54837 ****
  1a84a5937709246fd93ca5b48868e104  gcc/testsuite/gcc.target/aarch64/sve/zip1_2.c
  c5724f6767410c7983d266d6febb0f89  gcc/testsuite/gcc.target/aarch64/sve/zip2_1.c
  2eed99c891a5aeae7979afd71257ceaa  gcc/testsuite/gcc.target/aarch64/sve/zip2_2.c
! 42b66826f4f6e8ad57f3d62c896beda1  gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
! 9a98bf4dc7c3488ab663213675280146  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! 098a5609ee21fd0ef6d4bb1ed63449cb  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
  f70a8121d1df4875294cca368f9923a7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s16.c
  c218a2086e6a44bef255447d1da29b8b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c
  e66b0c7936f0923b4b4c2d6f4e417206  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c
--- 58237,58245 ----
  1a84a5937709246fd93ca5b48868e104  gcc/testsuite/gcc.target/aarch64/sve/zip1_2.c
  c5724f6767410c7983d266d6febb0f89  gcc/testsuite/gcc.target/aarch64/sve/zip2_1.c
  2eed99c891a5aeae7979afd71257ceaa  gcc/testsuite/gcc.target/aarch64/sve/zip2_2.c
! 5a56319fc72f257af912cadbcb5d6b6f  gcc/testsuite/gcc.target/aarch64/sve2/aarch64-sve2.exp
! 927268733e860b6e3776708e04d4336a  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle-asm.exp
! a50f04dc9f9e3d0a11424355f6f90870  gcc/testsuite/gcc.target/aarch64/sve2/acle/aarch64-sve2-acle.exp
  f70a8121d1df4875294cca368f9923a7  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s16.c
  c218a2086e6a44bef255447d1da29b8b  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s32.c
  e66b0c7936f0923b4b4c2d6f4e417206  gcc/testsuite/gcc.target/aarch64/sve2/acle/asm/aba_s64.c
*************** f23df8d77bb63840931d1aee39d47578  gcc/te
*** 55692,55707 ****
  f138a3da42d63bd49959d9ace6c814ab  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_2.c
  138cb696e2f9aecb8036abf684116d9a  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_3.c
  db510fed2a207b35df2126caab14bc03  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_4.c
  601e2a51cde2e0a9fd3515f4fbdf4eb7  gcc/testsuite/gcc.target/aarch64/sve2/eor3_1.c
  34c844ca053b9c871341786139fbf872  gcc/testsuite/gcc.target/aarch64/sve2/mulhrs_1.c
  b360e0ac1da1500645df64fce4fab7dd  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_1.c
  4446107d252cac5778f692095515b222  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_2.c
  3ddfd16fcbf89890fd9785fec8f0c081  gcc/testsuite/gcc.target/aarch64/sve2/shracc_1.c
  253ea1793d85a6047e9fc6e69f5a62af  gcc/testsuite/gcc.target/aarch64/sve2/whilerw_1.c
  42ba6aece1381e39342dd7cf99a96910  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_1.c
  d807c78d9b80a1f49bc50cb0cae86706  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_2.c
  c1ccdcf1821a2a9f689561bfc74f48dc  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
! b4127affc5c8c177d402c917c2b81097  gcc/testsuite/gcc.target/aarch64/symbol-range.c
  d707fbbaf0d37436be7ea3b6ac3b81d7  gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c
  c210c6b6344e5119de7869315aefba48  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
  322a3d828a7a9ead661b7d17a7aeceea  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.x
--- 59100,59119 ----
  f138a3da42d63bd49959d9ace6c814ab  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_2.c
  138cb696e2f9aecb8036abf684116d9a  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_3.c
  db510fed2a207b35df2126caab14bc03  gcc/testsuite/gcc.target/aarch64/sve2/bitsel_4.c
+ f51ca31da309b560c4c02fd5d28475ba  gcc/testsuite/gcc.target/aarch64/sve2/div-by-bitmask_1.c
  601e2a51cde2e0a9fd3515f4fbdf4eb7  gcc/testsuite/gcc.target/aarch64/sve2/eor3_1.c
  34c844ca053b9c871341786139fbf872  gcc/testsuite/gcc.target/aarch64/sve2/mulhrs_1.c
  b360e0ac1da1500645df64fce4fab7dd  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_1.c
  4446107d252cac5778f692095515b222  gcc/testsuite/gcc.target/aarch64/sve2/nlogic_2.c
+ f6df41d6d0c00a657a60617993e7fd37  gcc/testsuite/gcc.target/aarch64/sve2/pr107717.c
+ 10614e0cbb3e88c95f34ea133bf8898e  gcc/testsuite/gcc.target/aarch64/sve2/pr107830-1.c
+ f5f6f291e9c1c848a46c8ef91ca99f58  gcc/testsuite/gcc.target/aarch64/sve2/pr107830-2.c
  3ddfd16fcbf89890fd9785fec8f0c081  gcc/testsuite/gcc.target/aarch64/sve2/shracc_1.c
  253ea1793d85a6047e9fc6e69f5a62af  gcc/testsuite/gcc.target/aarch64/sve2/whilerw_1.c
  42ba6aece1381e39342dd7cf99a96910  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_1.c
  d807c78d9b80a1f49bc50cb0cae86706  gcc/testsuite/gcc.target/aarch64/sve2/whilewr_2.c
  c1ccdcf1821a2a9f689561bfc74f48dc  gcc/testsuite/gcc.target/aarch64/symbol-range-tiny.c
! b10293e89ee2df8eb55e37a5c18f3bd5  gcc/testsuite/gcc.target/aarch64/symbol-range.c
  d707fbbaf0d37436be7ea3b6ac3b81d7  gcc/testsuite/gcc.target/aarch64/sync-comp-swap-ool.c
  c210c6b6344e5119de7869315aefba48  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.c
  322a3d828a7a9ead661b7d17a7aeceea  gcc/testsuite/gcc.target/aarch64/sync-comp-swap.x
*************** bf9afeb6532edb2f9d5ea8620df5ab50  gcc/te
*** 55721,55727 ****
  2a9edf7c483ff75cf1319b1811b18262  gcc/testsuite/gcc.target/aarch64/target_attr_12.c
  c850677a06284224d4f4c40ffd5e4d78  gcc/testsuite/gcc.target/aarch64/target_attr_13.c
  6ead8e56b05aa69dc2477d005100c803  gcc/testsuite/gcc.target/aarch64/target_attr_14.c
! 84c7440bc07ac7221be9934a64f40ff5  gcc/testsuite/gcc.target/aarch64/target_attr_15.c
  639032a9f80bce937ccbcf962600a338  gcc/testsuite/gcc.target/aarch64/target_attr_17.c
  c58ba3dda55aafe8c837f58d3ba9dc9d  gcc/testsuite/gcc.target/aarch64/target_attr_18.c
  93145ff3e03510c58daa08e45866f6ba  gcc/testsuite/gcc.target/aarch64/target_attr_2.c
--- 59133,59139 ----
  2a9edf7c483ff75cf1319b1811b18262  gcc/testsuite/gcc.target/aarch64/target_attr_12.c
  c850677a06284224d4f4c40ffd5e4d78  gcc/testsuite/gcc.target/aarch64/target_attr_13.c
  6ead8e56b05aa69dc2477d005100c803  gcc/testsuite/gcc.target/aarch64/target_attr_14.c
! 9d574d7da39f2900f48a62cbfc310aaa  gcc/testsuite/gcc.target/aarch64/target_attr_15.c
  639032a9f80bce937ccbcf962600a338  gcc/testsuite/gcc.target/aarch64/target_attr_17.c
  c58ba3dda55aafe8c837f58d3ba9dc9d  gcc/testsuite/gcc.target/aarch64/target_attr_18.c
  93145ff3e03510c58daa08e45866f6ba  gcc/testsuite/gcc.target/aarch64/target_attr_2.c
*************** c17cb964233b0aa7dd1ec0085d5a8fe2  gcc/te
*** 55734,55741 ****
  890ae3968d31413e8ddaa0ad072317c6  gcc/testsuite/gcc.target/aarch64/target_attr_7.c
  c3bdf427007d07f3883a94ebab891f55  gcc/testsuite/gcc.target/aarch64/target_attr_8.c
  f6ab59a6fb51c2f31ff41e022a946244  gcc/testsuite/gcc.target/aarch64/target_attr_9.c
! 48dfd975ea4cd953456354d60a37d0df  gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_1.c
  72b807b6163266e3cc8d97b5717cb93c  gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_2.c
  8337f562dcf7ef4442f3fda5116f6516  gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c
  852b4cd568f885879f0e4ee07c42db62  gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c
  554672c3dd8780c71f3a6be4a4bc74dc  gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c
--- 59146,59156 ----
  890ae3968d31413e8ddaa0ad072317c6  gcc/testsuite/gcc.target/aarch64/target_attr_7.c
  c3bdf427007d07f3883a94ebab891f55  gcc/testsuite/gcc.target/aarch64/target_attr_8.c
  f6ab59a6fb51c2f31ff41e022a946244  gcc/testsuite/gcc.target/aarch64/target_attr_9.c
! 3b3c6f4a697ca1bd0f45d5465baaaad8  gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_1.c
  72b807b6163266e3cc8d97b5717cb93c  gcc/testsuite/gcc.target/aarch64/target_attr_crypto_ice_2.c
+ 038f11aa9e6f1a7714c44a57550a260e  gcc/testsuite/gcc.target/aarch64/tbz_1.c
+ 9ffba880929c2d08bdbc7d0a30a411a1  gcc/testsuite/gcc.target/aarch64/tbz_2.c
+ 189a1d84ddfafd309b413723971ee116  gcc/testsuite/gcc.target/aarch64/tbz_3.c
  8337f562dcf7ef4442f3fda5116f6516  gcc/testsuite/gcc.target/aarch64/test-framepointer-1.c
  852b4cd568f885879f0e4ee07c42db62  gcc/testsuite/gcc.target/aarch64/test-framepointer-2.c
  554672c3dd8780c71f3a6be4a4bc74dc  gcc/testsuite/gcc.target/aarch64/test-framepointer-3.c
*************** c59c91f159013d73cdf4d699b8f4ae48  gcc/te
*** 55755,55761 ****
  a5e6b722f4144697d90e30cfabaee788  gcc/testsuite/gcc.target/aarch64/test_frame_14.c
  9880f8a846f56405c1be761252ad78b7  gcc/testsuite/gcc.target/aarch64/test_frame_15.c
  6c5bce43d2093b676bcbc3084394efb0  gcc/testsuite/gcc.target/aarch64/test_frame_16.c
! 4eb4fd9252581638e9f65decbfbf4b9e  gcc/testsuite/gcc.target/aarch64/test_frame_17.c
  d559354500ea93464e9f09bbad4b19a9  gcc/testsuite/gcc.target/aarch64/test_frame_2.c
  3b6dc13fe4d40fc07c0288cb31d3cfc5  gcc/testsuite/gcc.target/aarch64/test_frame_3.c
  49c58d65bf066f19f7a62fd4998f8a83  gcc/testsuite/gcc.target/aarch64/test_frame_4.c
--- 59170,59176 ----
  a5e6b722f4144697d90e30cfabaee788  gcc/testsuite/gcc.target/aarch64/test_frame_14.c
  9880f8a846f56405c1be761252ad78b7  gcc/testsuite/gcc.target/aarch64/test_frame_15.c
  6c5bce43d2093b676bcbc3084394efb0  gcc/testsuite/gcc.target/aarch64/test_frame_16.c
! 1558cee3b358a4686101166d3efa7561  gcc/testsuite/gcc.target/aarch64/test_frame_17.c
  d559354500ea93464e9f09bbad4b19a9  gcc/testsuite/gcc.target/aarch64/test_frame_2.c
  3b6dc13fe4d40fc07c0288cb31d3cfc5  gcc/testsuite/gcc.target/aarch64/test_frame_3.c
  49c58d65bf066f19f7a62fd4998f8a83  gcc/testsuite/gcc.target/aarch64/test_frame_4.c
*************** a2ccf9bfd1d0bb840b23c25e1bdec31c  gcc/te
*** 55776,55782 ****
  4d1251d696b9339c130cb783420a3ecc  gcc/testsuite/gcc.target/aarch64/tlsle32_1.c
  d7ac99c012df73ffbde36998316bf1ef  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_small_1.c
  fc2eb8ac52faed5fba0a017b858d4ae4  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_tiny_1.c
! 22ac2528ed143d2373bc7e340f2a5215  gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
--- 59191,59197 ----
  4d1251d696b9339c130cb783420a3ecc  gcc/testsuite/gcc.target/aarch64/tlsle32_1.c
  d7ac99c012df73ffbde36998316bf1ef  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_small_1.c
  fc2eb8ac52faed5fba0a017b858d4ae4  gcc/testsuite/gcc.target/aarch64/tlsle_sizeadj_tiny_1.c
! 8a43a90457a76e1e8f6951c362fed0e0  gcc/testsuite/gcc.target/aarch64/torture/aarch64-torture.exp
  5266ac107a73e3ee1d1f44e1cda7d9f2  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-1.c
  9c3416db2fc04c3f91b03ecae15e943e  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-10.c
  df55bfe2c1ce46074b19b4566cedeef4  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-11.c
*************** df55bfe2c1ce46074b19b4566cedeef4  gcc/te
*** 55790,55801 ****
  d27cf5c573d83aeb3376b52fa2d42277  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-9.c
  243944adb745b523dc89b085c3612ccb  gcc/testsuite/gcc.target/aarch64/tst-1.c
  b408270b084f360295aac255b1236a43  gcc/testsuite/gcc.target/aarch64/tst_1.c
! dc3ab0fb62fcd0f12992c9870e0bffce  gcc/testsuite/gcc.target/aarch64/tst_2.c
  81127c700b1ef5cf4b40456880a944c1  gcc/testsuite/gcc.target/aarch64/tst_3.c
  e1f64758e0e04d39fe56f6bea6f5ae42  gcc/testsuite/gcc.target/aarch64/tst_4.c
  7c8e47a631931ebae8ad1a28f2e4973b  gcc/testsuite/gcc.target/aarch64/tst_5.c
  ff47a563fea9ff5491c3f292daf07778  gcc/testsuite/gcc.target/aarch64/tst_6.c
! 15ec28f7d1c1c2a72fd38a8f9b26cb48  gcc/testsuite/gcc.target/aarch64/tst_imm_split_1.c
  d345e22d4cc9fb570ade2c1377392ec9  gcc/testsuite/gcc.target/aarch64/uaddw-1.c
  e096738dd28b2289464e1c1af2eb63e6  gcc/testsuite/gcc.target/aarch64/uaddw-2.c
  6af9fad526c3126d396965b710d1903c  gcc/testsuite/gcc.target/aarch64/uaddw-3.c
--- 59205,59216 ----
  d27cf5c573d83aeb3376b52fa2d42277  gcc/testsuite/gcc.target/aarch64/torture/simd-abi-9.c
  243944adb745b523dc89b085c3612ccb  gcc/testsuite/gcc.target/aarch64/tst-1.c
  b408270b084f360295aac255b1236a43  gcc/testsuite/gcc.target/aarch64/tst_1.c
! 37192804dea7878cae6f099ba15e2f20  gcc/testsuite/gcc.target/aarch64/tst_2.c
  81127c700b1ef5cf4b40456880a944c1  gcc/testsuite/gcc.target/aarch64/tst_3.c
  e1f64758e0e04d39fe56f6bea6f5ae42  gcc/testsuite/gcc.target/aarch64/tst_4.c
  7c8e47a631931ebae8ad1a28f2e4973b  gcc/testsuite/gcc.target/aarch64/tst_5.c
  ff47a563fea9ff5491c3f292daf07778  gcc/testsuite/gcc.target/aarch64/tst_6.c
! ed6b0413424b4d3151e82ded1cdfdefc  gcc/testsuite/gcc.target/aarch64/tst_imm_split_1.c
  d345e22d4cc9fb570ade2c1377392ec9  gcc/testsuite/gcc.target/aarch64/uaddw-1.c
  e096738dd28b2289464e1c1af2eb63e6  gcc/testsuite/gcc.target/aarch64/uaddw-2.c
  6af9fad526c3126d396965b710d1903c  gcc/testsuite/gcc.target/aarch64/uaddw-3.c
*************** e6b9946a1986b795094a79817cb344ea  gcc/te
*** 55933,55938 ****
--- 59348,59355 ----
  8b98b40c2e7ce896247ab9ceeb2eb1cc  gcc/testsuite/gcc.target/aarch64/vect_smlal_1.c
  7986f2bcd5f241ae25518bc7a8e80ee6  gcc/testsuite/gcc.target/aarch64/vect_srhadd_1.c
  b492ca2077d7ff66c6b66f4ab082437f  gcc/testsuite/gcc.target/aarch64/vect_uhadd_1.c
+ ee75ba585648b3f8f825cadccf3a5ef0  gcc/testsuite/gcc.target/aarch64/vect_unary_1.c
+ 2f90e98a90f4eb622cc3f403c199b293  gcc/testsuite/gcc.target/aarch64/vect_unary_2.c
  d8b7bf172e8cfd96979b54e10c4e2570  gcc/testsuite/gcc.target/aarch64/vect_urhadd_1.c
  739575d641b47c254cda6c8d642702f9  gcc/testsuite/gcc.target/aarch64/vector_initialization_nostack.c
  91822962d5a71129a8f94a0f50f2c42b  gcc/testsuite/gcc.target/aarch64/vector_intrinsics.c
*************** f439076be9a48a135c5fa2921d660d58  gcc/te
*** 55998,56004 ****
  17f6fb1c3dca9d7ede25b02cf419efc7  gcc/testsuite/gcc.target/alpha/20000715-1.c
  11ab80b2f79c054dcb32865854c6ea77  gcc/testsuite/gcc.target/alpha/20011018-1.c
  2d8c29ac23704a70a80831327c5e0754  gcc/testsuite/gcc.target/alpha/980217-1.c
! 63bd32e5398ea33032be4e6f33159d8b  gcc/testsuite/gcc.target/alpha/alpha.exp
  a9f54382c872d8300abd0751aaf2baa7  gcc/testsuite/gcc.target/alpha/asm-1.c
  72088d2975371a0383b6fa19c63a6ee4  gcc/testsuite/gcc.target/alpha/base-1.c
  2cf5d8a00cade8200304281bbeb38cff  gcc/testsuite/gcc.target/alpha/base-2.c
--- 59415,59421 ----
  17f6fb1c3dca9d7ede25b02cf419efc7  gcc/testsuite/gcc.target/alpha/20000715-1.c
  11ab80b2f79c054dcb32865854c6ea77  gcc/testsuite/gcc.target/alpha/20011018-1.c
  2d8c29ac23704a70a80831327c5e0754  gcc/testsuite/gcc.target/alpha/980217-1.c
! 49417b15338157ff889e109b265c4957  gcc/testsuite/gcc.target/alpha/alpha.exp
  a9f54382c872d8300abd0751aaf2baa7  gcc/testsuite/gcc.target/alpha/asm-1.c
  72088d2975371a0383b6fa19c63a6ee4  gcc/testsuite/gcc.target/alpha/base-1.c
  2cf5d8a00cade8200304281bbeb38cff  gcc/testsuite/gcc.target/alpha/base-2.c
*************** a28c8b957006268fb63ac90eaea21d90  gcc/te
*** 56027,56033 ****
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
  317e054822141a390845a27fd6a9d594  gcc/testsuite/gcc.target/arc/add_n-combine.c
  e6be20952086b2b05a1879e41e70daac  gcc/testsuite/gcc.target/arc/and-cnst-size.c
! 07dfdaf09871486efea4e14ceffcf759  gcc/testsuite/gcc.target/arc/arc.exp
  3e772a00d37dc9ac78faa763e2dd058d  gcc/testsuite/gcc.target/arc/arc700-stld-hazard.c
  d0cebb0a2330505d8dd990632e8fccbf  gcc/testsuite/gcc.target/arc/barrel-shifter-1.c
  b39c0e6513279f1844d9242a3025b258  gcc/testsuite/gcc.target/arc/barrel-shifter-2.c
--- 59444,59450 ----
  a125f0012bfc0fdad155c9b9bcc0f009  gcc/testsuite/gcc.target/arc/abitest.h
  317e054822141a390845a27fd6a9d594  gcc/testsuite/gcc.target/arc/add_n-combine.c
  e6be20952086b2b05a1879e41e70daac  gcc/testsuite/gcc.target/arc/and-cnst-size.c
! 85178d697db8e8d29b68336eeac19781  gcc/testsuite/gcc.target/arc/arc.exp
  3e772a00d37dc9ac78faa763e2dd058d  gcc/testsuite/gcc.target/arc/arc700-stld-hazard.c
  d0cebb0a2330505d8dd990632e8fccbf  gcc/testsuite/gcc.target/arc/barrel-shifter-1.c
  b39c0e6513279f1844d9242a3025b258  gcc/testsuite/gcc.target/arc/barrel-shifter-2.c
*************** d07620cd1b0aefd0ce0a68df905f1326  gcc/te
*** 56057,56062 ****
--- 59474,59480 ----
  093c1c334d43cf719378e187c501d944  gcc/testsuite/gcc.target/arc/code-density-flag.c
  ab3e3c633530b0e2e02f20e76907cab4  gcc/testsuite/gcc.target/arc/cond-set-use.c
  a8ef1d01a0865b83aab1825f39789150  gcc/testsuite/gcc.target/arc/delay-slot-limm.c
+ 1a62d72266a82c77878046559bc2e3aa  gcc/testsuite/gcc.target/arc/enter-dw2-1.c
  d9d9cdf928da4c195b1a99dad0aeda06  gcc/testsuite/gcc.target/arc/extzv-1.c
  548254c3a241c8551ebb0aa5d94e45c4  gcc/testsuite/gcc.target/arc/firq-1.c
  4e583df9e864022980d99fd265bb3ab5  gcc/testsuite/gcc.target/arc/firq-2.c
*************** b873d0236afe2211776bd0aadeaad46f  gcc/te
*** 56072,56077 ****
--- 59490,59496 ----
  796570e0ed264d734737eb6b1c2875a1  gcc/testsuite/gcc.target/arc/interrupt-10.c
  fe91b7a5e3e42548ea63eac34802f611  gcc/testsuite/gcc.target/arc/interrupt-11.c
  8b36b47f1a3fda869de3c96c241bd2db  gcc/testsuite/gcc.target/arc/interrupt-12.c
+ f89c2e568e8ed0beb1990c230690688a  gcc/testsuite/gcc.target/arc/interrupt-13.c
  6eeda426d6eb6b6a008ea7873fac75a6  gcc/testsuite/gcc.target/arc/interrupt-2.c
  57794d5d98911629416fe6bf16a609e0  gcc/testsuite/gcc.target/arc/interrupt-3.c
  b1b1e7ab7fe3d3c645620b9ae615c9f0  gcc/testsuite/gcc.target/arc/interrupt-4.c
*************** ee0ca7340a42fc6a148fcc28be052f56  gcc/te
*** 56102,56108 ****
  71500e070a364390c2d96ff52af64889  gcc/testsuite/gcc.target/arc/mcpu-arc601.c
  ae51b6b5a108bba0cb65d3dc53bff451  gcc/testsuite/gcc.target/arc/mcpu-arc700.c
  436d97c30c105f3d38d867debdf85e1a  gcc/testsuite/gcc.target/arc/mdpfp.c
! 3bba95d86793be4d1b9cacfeb517d456  gcc/testsuite/gcc.target/arc/milli-1.c
  192440eda1391192d213ce180fce09d2  gcc/testsuite/gcc.target/arc/mlock.c
  5dbcbf85df7b029074109c1ddb79bcb8  gcc/testsuite/gcc.target/arc/mno-lock.c
  6739e90bc4c37813db369ce1cbdaa285  gcc/testsuite/gcc.target/arc/mno-swape.c
--- 59521,59527 ----
  71500e070a364390c2d96ff52af64889  gcc/testsuite/gcc.target/arc/mcpu-arc601.c
  ae51b6b5a108bba0cb65d3dc53bff451  gcc/testsuite/gcc.target/arc/mcpu-arc700.c
  436d97c30c105f3d38d867debdf85e1a  gcc/testsuite/gcc.target/arc/mdpfp.c
! a5175d61f8223d91638698784fb84ab8  gcc/testsuite/gcc.target/arc/milli-1.c
  192440eda1391192d213ce180fce09d2  gcc/testsuite/gcc.target/arc/mlock.c
  5dbcbf85df7b029074109c1ddb79bcb8  gcc/testsuite/gcc.target/arc/mno-lock.c
  6739e90bc4c37813db369ce1cbdaa285  gcc/testsuite/gcc.target/arc/mno-swape.c
*************** ba04f0952f2c38c9d10a1af7f5d56f9a  gcc/te
*** 56167,56173 ****
  f6ab9742a5f36de1928fda9c37febb86  gcc/testsuite/gcc.target/arc/tls-ld.c
  078ba8c63e3f35e7c682fa712064ebb1  gcc/testsuite/gcc.target/arc/tls-le.c
  c3e938f937a51f7649df681938f6cd9b  gcc/testsuite/gcc.target/arc/tmac-1.c
! 9d4d9e6267b9dd0779e0cf628b156ee6  gcc/testsuite/gcc.target/arc/tmac-2.c
  34b33b974d6dbb0431042aa5831e4bf8  gcc/testsuite/gcc.target/arc/tmac-3.c
  0c045503d08f603cf24d7b47172fdd78  gcc/testsuite/gcc.target/arc/tmac-4.c
  fc60d81a81f1025434b2711d3bc9cade  gcc/testsuite/gcc.target/arc/tmac.h
--- 59586,59592 ----
  f6ab9742a5f36de1928fda9c37febb86  gcc/testsuite/gcc.target/arc/tls-ld.c
  078ba8c63e3f35e7c682fa712064ebb1  gcc/testsuite/gcc.target/arc/tls-le.c
  c3e938f937a51f7649df681938f6cd9b  gcc/testsuite/gcc.target/arc/tmac-1.c
! 3d22c8cc2938a210e4c8729caf3e3e09  gcc/testsuite/gcc.target/arc/tmac-2.c
  34b33b974d6dbb0431042aa5831e4bf8  gcc/testsuite/gcc.target/arc/tmac-3.c
  0c045503d08f603cf24d7b47172fdd78  gcc/testsuite/gcc.target/arc/tmac-4.c
  fc60d81a81f1025434b2711d3bc9cade  gcc/testsuite/gcc.target/arc/tmac.h
*************** d059b2e33fe3944d4609bef74df38413  gcc/te
*** 56195,56201 ****
  678e95fcf9ea10b2ad5f97a249136cdb  gcc/testsuite/gcc.target/arm/20090811-1.c
  3246666ab1db4fd6160f12106dd2fea4  gcc/testsuite/gcc.target/arm/20131120.c
  99d362e2051f9f2bf0e7ff2ec49b0df7  gcc/testsuite/gcc.target/arm/README.advsimd-intrinsics
! 0186bd5ea974e05a80bb5b99fa9d7e9f  gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
  dce658d805b258027bde980a1d76a50d  gcc/testsuite/gcc.target/arm/aapcs/abitest.h
  96bc5ca2eaed6da1d7e22b1c0e28317d  gcc/testsuite/gcc.target/arm/aapcs/align1.c
  1ad40fcc9ea2067b6fa8508030c2f1d4  gcc/testsuite/gcc.target/arm/aapcs/align2.c
--- 59614,59620 ----
  678e95fcf9ea10b2ad5f97a249136cdb  gcc/testsuite/gcc.target/arm/20090811-1.c
  3246666ab1db4fd6160f12106dd2fea4  gcc/testsuite/gcc.target/arm/20131120.c
  99d362e2051f9f2bf0e7ff2ec49b0df7  gcc/testsuite/gcc.target/arm/README.advsimd-intrinsics
! 87b719410182b44e0d940f44ae268f2b  gcc/testsuite/gcc.target/arm/aapcs/aapcs.exp
  dce658d805b258027bde980a1d76a50d  gcc/testsuite/gcc.target/arm/aapcs/abitest.h
  96bc5ca2eaed6da1d7e22b1c0e28317d  gcc/testsuite/gcc.target/arm/aapcs/align1.c
  1ad40fcc9ea2067b6fa8508030c2f1d4  gcc/testsuite/gcc.target/arm/aapcs/align2.c
*************** b03843d0bfb6128e2d6e634be21c3021  gcc/te
*** 56250,56261 ****
  e5b7374e291244b801b4c292504d3f80  gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
  3aa1f9e592cb3a6a4181176724ae2fa8  gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
  37ac30daf2fa61e7f2d97c17c39fddfe  gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
! 8378eb471e8a85a4eda3f609f551d614  gcc/testsuite/gcc.target/arm/acle/acle.exp
! 14b0c63ff2ea5258d212ec979aa36c8c  gcc/testsuite/gcc.target/arm/acle/cde-errors.c
  5ae0b75d3edc7d5441f595fec368443c  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-1.c
! 3ef89af25e41c2840ae4eb47d8fe80fe  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-2.c
  94bcf4eb76f1c5723627b1baedcdc159  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-3.c
! 75b2f5f65508805b6809f9df652deb28  gcc/testsuite/gcc.target/arm/acle/cde-mve-full-assembly.c
  c7f80609570e0d905fcd9cff2e6350ed  gcc/testsuite/gcc.target/arm/acle/cde-mve-tests.c
  717b6b8eab0fad73225367b08781c73c  gcc/testsuite/gcc.target/arm/acle/cde.c
  9fc59b91aee2a52356be7a0ba683ae10  gcc/testsuite/gcc.target/arm/acle/cde_v_1.c
--- 59669,59680 ----
  e5b7374e291244b801b4c292504d3f80  gcc/testsuite/gcc.target/arm/aapcs/vfp7.c
  3aa1f9e592cb3a6a4181176724ae2fa8  gcc/testsuite/gcc.target/arm/aapcs/vfp8.c
  37ac30daf2fa61e7f2d97c17c39fddfe  gcc/testsuite/gcc.target/arm/aapcs/vfp9.c
! d04a2fd2bd877bfdef331abbf1edc92b  gcc/testsuite/gcc.target/arm/acle/acle.exp
! 658e0707622d22620aa765f8608c22db  gcc/testsuite/gcc.target/arm/acle/cde-errors.c
  5ae0b75d3edc7d5441f595fec368443c  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-1.c
! 792d9dbc57ff346f36bc666b7df02fc5  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-2.c
  94bcf4eb76f1c5723627b1baedcdc159  gcc/testsuite/gcc.target/arm/acle/cde-mve-error-3.c
! 499b585a2e76d2f641d42e0683c31f90  gcc/testsuite/gcc.target/arm/acle/cde-mve-full-assembly.c
  c7f80609570e0d905fcd9cff2e6350ed  gcc/testsuite/gcc.target/arm/acle/cde-mve-tests.c
  717b6b8eab0fad73225367b08781c73c  gcc/testsuite/gcc.target/arm/acle/cde.c
  9fc59b91aee2a52356be7a0ba683ae10  gcc/testsuite/gcc.target/arm/acle/cde_v_1.c
*************** eee783c37d90eef12bf5d89dd9e9f34c  gcc/te
*** 56285,56290 ****
--- 59704,59721 ----
  1089abf6533526d82e14c2c80d726483  gcc/testsuite/gcc.target/arm/acle/mrc2.c
  e66b3819f1cc1c13b66c38b83972f3a2  gcc/testsuite/gcc.target/arm/acle/mrrc.c
  5280b32decaf5622a9f85f834e828bdf  gcc/testsuite/gcc.target/arm/acle/mrrc2.c
+ 6f740e3440a96131c11b5113864a1398  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-1.c
+ f65741e127a585964d0a2540cba9fa79  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-10.c
+ 12f3b36de7e30a9feb40a75552be0dbd  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-11.c
+ 336eaaa6b59a3fe03826de0277b51fbc  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-12.c
+ 2fed58fe92afda390e1d0b2a5c1f0d3e  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-2.c
+ 1c61e241c3a55069d019bffd2ec1425a  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-3.c
+ b72139ce3705641b14d00721bf82f8c0  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-4.c
+ 61b5110c4dedea0e52dacebc4015442b  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-5.c
+ 8557fc8e2712b7c69c62ae717dd4ae2d  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-6.c
+ ab5b78d0b6e3b4b4f36e001d8e9c9eea  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-7.c
+ f4d3b3d5d2d0a91b76e36336c5f4ea7f  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-8.c
+ ee32b4af80596c42b02a378ff2e2b698  gcc/testsuite/gcc.target/arm/acle/pacbti-m-predef-9.c
  ee12e8ca5824715b40bd53e5bd847687  gcc/testsuite/gcc.target/arm/acle/pr100856.c
  c351089daa0fb41b19888a703d2c10c8  gcc/testsuite/gcc.target/arm/acle/sat_no_smlatb.c
  52edc26e05c5a7011e01e793b188666a  gcc/testsuite/gcc.target/arm/acle/saturation.c
*************** fc648f69779c2ae9f4075ca8aed84b4f  gcc/te
*** 56297,56310 ****
  040dfdd8abd27c81f014da36e605a1ca  gcc/testsuite/gcc.target/arm/addr-modes-float.c
  e83f97202504a386d4e913ce29128f75  gcc/testsuite/gcc.target/arm/addr-modes-int.c
  d21ea73439704c16e82e0898ae8bc79e  gcc/testsuite/gcc.target/arm/addr-modes.h
! a5f0180c8ecac7dfafe3b00d8c9097e8  gcc/testsuite/gcc.target/arm/aes-fuse-1.c
! 71563f42f55284e51fa3b79e5c73219d  gcc/testsuite/gcc.target/arm/aes-fuse-2.c
  beeedfa6811e6847c3cf97dc8034edc6  gcc/testsuite/gcc.target/arm/aes_xor_combine.c
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
  8acda08d68bcc11cfdd01eb0a1ed850d  gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
  2de4b776a367481e41c80f0bf35fc6e4  gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c
! 7ee87d6a0b34605eadcc8b6f82965621  gcc/testsuite/gcc.target/arm/arm.exp
  5810c65774cd6173ff73a4ca6f3b0562  gcc/testsuite/gcc.target/arm/armv6-unaligned-load-ice.c
  e0b358414d3e86102d32b626de2fbc40  gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c
  0434c51f353f1957fce79533a348ee29  gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c
--- 59728,59741 ----
  040dfdd8abd27c81f014da36e605a1ca  gcc/testsuite/gcc.target/arm/addr-modes-float.c
  e83f97202504a386d4e913ce29128f75  gcc/testsuite/gcc.target/arm/addr-modes-int.c
  d21ea73439704c16e82e0898ae8bc79e  gcc/testsuite/gcc.target/arm/addr-modes.h
! ec521664e76bf483f95c66515ae27933  gcc/testsuite/gcc.target/arm/aes-fuse-1.c
! bb4f62dc6804b99787551bd2e1ee1c9f  gcc/testsuite/gcc.target/arm/aes-fuse-2.c
  beeedfa6811e6847c3cf97dc8034edc6  gcc/testsuite/gcc.target/arm/aes_xor_combine.c
  4c670413ffa35c00c8cf86a9eda18d8b  gcc/testsuite/gcc.target/arm/anddi3-opt.c
  dfc4bf650d099d2aff3f9e5f3d4b62ac  gcc/testsuite/gcc.target/arm/anddi3-opt2.c
  8acda08d68bcc11cfdd01eb0a1ed850d  gcc/testsuite/gcc.target/arm/anddi_notdi-1.c
  2de4b776a367481e41c80f0bf35fc6e4  gcc/testsuite/gcc.target/arm/arm-soft-strd-even.c
! f84b40fdc43503eaaac6c5a61e166ae7  gcc/testsuite/gcc.target/arm/arm.exp
  5810c65774cd6173ff73a4ca6f3b0562  gcc/testsuite/gcc.target/arm/armv6-unaligned-load-ice.c
  e0b358414d3e86102d32b626de2fbc40  gcc/testsuite/gcc.target/arm/armv8-sync-comp-swap.c
  0434c51f353f1957fce79533a348ee29  gcc/testsuite/gcc.target/arm/armv8-sync-op-acquire.c
*************** c6c1c759a610556eca59987a77084f45  gcc/te
*** 56318,56325 ****
  53e11cdab71cca17d6fdaf4ed9224a30  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  e760d8a00f0e4b4ceedce756dc61f6c1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! 5861a72a2b15085324305371dbea13fc  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! 771620b8522f47f0902c876afa9eeb03  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
  43365e7220d0c89c221983b0088e64ec  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  dc2445fc2ce3b9779058431b1cfb377b  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
--- 59749,59756 ----
  53e11cdab71cca17d6fdaf4ed9224a30  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-1.c
  5790d3efd74c1ddf5aeb2e8743385c60  gcc/testsuite/gcc.target/arm/armv8_2-fp16-arith-2.c
  e760d8a00f0e4b4ceedce756dc61f6c1  gcc/testsuite/gcc.target/arm/armv8_2-fp16-conv-1.c
! 2f54b8d253156a2be1577d30ce773f07  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-1.c
! 8411d0e77a0611b1b9aef23030254fbe  gcc/testsuite/gcc.target/arm/armv8_2-fp16-move-2.c
  43365e7220d0c89c221983b0088e64ec  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-1.c
  dc2445fc2ce3b9779058431b1cfb377b  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-2.c
  992185bff8a637178d6613bb76a8369c  gcc/testsuite/gcc.target/arm/armv8_2-fp16-neon-3.c
*************** dc2445fc2ce3b9779058431b1cfb377b  gcc/te
*** 56327,56333 ****
  4bad0a804fdff0fae8f92991ef639b11  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
  662f95b68b4da4be16c54b9f1ab1730c  gcc/testsuite/gcc.target/arm/asm-flag-1.c
  f3fa0198457b98710b26072dfa716655  gcc/testsuite/gcc.target/arm/asm-flag-3.c
! fc85f6b00063aadac4fe642aea1d37a0  gcc/testsuite/gcc.target/arm/asm-flag-4.c
  d594ca95d990ca9c3f2561ed11ac28ca  gcc/testsuite/gcc.target/arm/asm-flag-5.c
  9d3dff5d35894339289b1625ab2c86ce  gcc/testsuite/gcc.target/arm/asm-flag-6.c
  03573355651ad4a9aa5e1e5fa8f0b7d6  gcc/testsuite/gcc.target/arm/asm-flag-7.c
--- 59758,59764 ----
  4bad0a804fdff0fae8f92991ef639b11  gcc/testsuite/gcc.target/arm/armv8_2-fp16-scalar-2.c
  662f95b68b4da4be16c54b9f1ab1730c  gcc/testsuite/gcc.target/arm/asm-flag-1.c
  f3fa0198457b98710b26072dfa716655  gcc/testsuite/gcc.target/arm/asm-flag-3.c
! e9acf444a22759b1ea52f56e919edf4a  gcc/testsuite/gcc.target/arm/asm-flag-4.c
  d594ca95d990ca9c3f2561ed11ac28ca  gcc/testsuite/gcc.target/arm/asm-flag-5.c
  9d3dff5d35894339289b1625ab2c86ce  gcc/testsuite/gcc.target/arm/asm-flag-6.c
  03573355651ad4a9aa5e1e5fa8f0b7d6  gcc/testsuite/gcc.target/arm/asm-flag-7.c
*************** fc8506cad4c77b4468d913131234b8df  gcc/te
*** 56379,56385 ****
  610fd80be398913926ba72652bd8ae63  gcc/testsuite/gcc.target/arm/attr-align1.c
  eced09044f2e63efaea7b67cc2b8701d  gcc/testsuite/gcc.target/arm/attr-align2.c
  7f9cac5a33fedda7cbe7dbfa7091e3c8  gcc/testsuite/gcc.target/arm/attr-align3.c
! a62cfa50f6b17e85cf37876c3053bab6  gcc/testsuite/gcc.target/arm/attr-crypto.c
  cf7c684a14b2daa8b876c512e3599582  gcc/testsuite/gcc.target/arm/attr-fp16-arith-1.c
  d5f4f823ea6fb9bc4c6e9ccba5acdb91  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail.c
  c462d71e23fb07062a21f54c54d09271  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail2.c
--- 59810,59816 ----
  610fd80be398913926ba72652bd8ae63  gcc/testsuite/gcc.target/arm/attr-align1.c
  eced09044f2e63efaea7b67cc2b8701d  gcc/testsuite/gcc.target/arm/attr-align2.c
  7f9cac5a33fedda7cbe7dbfa7091e3c8  gcc/testsuite/gcc.target/arm/attr-align3.c
! 491c57202a0a92733d5e2d45a475ff1c  gcc/testsuite/gcc.target/arm/attr-crypto.c
  cf7c684a14b2daa8b876c512e3599582  gcc/testsuite/gcc.target/arm/attr-fp16-arith-1.c
  d5f4f823ea6fb9bc4c6e9ccba5acdb91  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail.c
  c462d71e23fb07062a21f54c54d09271  gcc/testsuite/gcc.target/arm/attr-neon-builtin-fail2.c
*************** f101ebe2e42b2c28eb921bcc60e875f6  gcc/te
*** 56417,56422 ****
--- 59848,59855 ----
  8a63eeba730368096509797a3284dc46  gcc/testsuite/gcc.target/arm/bics_4.c
  0fd8a665cdc25d00e7cd297ae567a70f  gcc/testsuite/gcc.target/arm/bics_5.c
  8689ee742289887539d8fd99b8a4ae0b  gcc/testsuite/gcc.target/arm/big-endian-subreg.c
+ 8c6582c78364705bc61eb152846b1036  gcc/testsuite/gcc.target/arm/bti-1.c
+ abb9e91f15aee3a63c2d663676de29ac  gcc/testsuite/gcc.target/arm/bti-2.c
  1dd263669be7a1b6c873cc7a525944ee  gcc/testsuite/gcc.target/arm/builtin-bswap-1.c
  2b930ef60b0ed29af3cf92e86d988143  gcc/testsuite/gcc.target/arm/builtin-bswap-2.c
  3404eef73f3a64fd34cd1b8785921d04  gcc/testsuite/gcc.target/arm/builtin-bswap.x
*************** a4114cf2b3bd0ac0af3dffbbe0b40004  gcc/te
*** 56450,56458 ****
  b3421fbdc1418b61214986622eb978f2  gcc/testsuite/gcc.target/arm/cmse/baseline/softfp.c
  dfde9b7816ac82223f119b2bfaa13341  gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c
  a3d5632079324bffb4dfe7cfa572dbe5  gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c
! 8c14e9379a543fffbff58c4a0f8133f1  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
! 8e90c93e8df0712b2b8514ac951dd65e  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
! 289a5065efa5757ec8891e86a75c5b71  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
  fc541d9ca530164540b9c0bb80ff85ca  gcc/testsuite/gcc.target/arm/cmse/bitfield-4.x
  52bda0f55dad71b45f9928cf777c2a1f  gcc/testsuite/gcc.target/arm/cmse/bitfield-5.x
  0aa800ae33265f609b6deafe6e06f856  gcc/testsuite/gcc.target/arm/cmse/bitfield-6.x
--- 59883,59891 ----
  b3421fbdc1418b61214986622eb978f2  gcc/testsuite/gcc.target/arm/cmse/baseline/softfp.c
  dfde9b7816ac82223f119b2bfaa13341  gcc/testsuite/gcc.target/arm/cmse/baseline/union-1.c
  a3d5632079324bffb4dfe7cfa572dbe5  gcc/testsuite/gcc.target/arm/cmse/baseline/union-2.c
! 3a696ba550dff106d39149511c0b0de5  gcc/testsuite/gcc.target/arm/cmse/bitfield-1.c
! 41ae1c120ef99d0e6c273119cef9cd11  gcc/testsuite/gcc.target/arm/cmse/bitfield-2.c
! 5a79322cba867ee3afdfb353047e9ad7  gcc/testsuite/gcc.target/arm/cmse/bitfield-3.c
  fc541d9ca530164540b9c0bb80ff85ca  gcc/testsuite/gcc.target/arm/cmse/bitfield-4.x
  52bda0f55dad71b45f9928cf777c2a1f  gcc/testsuite/gcc.target/arm/cmse/bitfield-5.x
  0aa800ae33265f609b6deafe6e06f856  gcc/testsuite/gcc.target/arm/cmse/bitfield-6.x
*************** cbb6c1dd0bf40d8c3631372eeeb23003  gcc/te
*** 56465,56483 ****
  ebdb15be89bef0e9c175a92e85f05897  gcc/testsuite/gcc.target/arm/cmse/cmse-12.c
  345628b6955bb78f99657e95ad7a6b53  gcc/testsuite/gcc.target/arm/cmse/cmse-13.x
  4e543347c53c9c12e6cbcaad2b4c1199  gcc/testsuite/gcc.target/arm/cmse/cmse-14.c
! ef7ca529c8bfa7604b48cdb713711215  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  5ff0a15a5a399d7d0fafcad196691899  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
  da139a3f1e88bf3b7034931f46a04110  gcc/testsuite/gcc.target/arm/cmse/cmse-17.c
  a0cc973b6770567d9ae9d0d7e19290d3  gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
  d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
! 9309eaae0e11dbd8092b4249a3023775  gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  ce1fe2059d8e263b0f3d889cb1392892  gcc/testsuite/gcc.target/arm/cmse/cmse-5.x
  679443fc734534194407169158890899  gcc/testsuite/gcc.target/arm/cmse/cmse-7.x
  a29c7dfe0255ba24ca52aa9293640971  gcc/testsuite/gcc.target/arm/cmse/cmse-8.x
  ce946170746cf737bca71ec699014fef  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
! 4cff09e964949ce40d8295aef9e8721c  gcc/testsuite/gcc.target/arm/cmse/cmse.exp
  6e9c9a777c4a333e2bdba95bdaf23364  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c
  c540adef0c0a8fc3e8e03fee5f712683  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c
  727ae9b55594654191b60afa67ad5094  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c
--- 59898,59916 ----
  ebdb15be89bef0e9c175a92e85f05897  gcc/testsuite/gcc.target/arm/cmse/cmse-12.c
  345628b6955bb78f99657e95ad7a6b53  gcc/testsuite/gcc.target/arm/cmse/cmse-13.x
  4e543347c53c9c12e6cbcaad2b4c1199  gcc/testsuite/gcc.target/arm/cmse/cmse-14.c
! 02f77ac4381e8044f4e0fb6975f1881b  gcc/testsuite/gcc.target/arm/cmse/cmse-15.c
  5ff0a15a5a399d7d0fafcad196691899  gcc/testsuite/gcc.target/arm/cmse/cmse-16.c
  da139a3f1e88bf3b7034931f46a04110  gcc/testsuite/gcc.target/arm/cmse/cmse-17.c
  a0cc973b6770567d9ae9d0d7e19290d3  gcc/testsuite/gcc.target/arm/cmse/cmse-18.c
  d307e00dde7714d2f353a08b08451b57  gcc/testsuite/gcc.target/arm/cmse/cmse-1c99.c
! aee7e08137af9ad5cb0dc780a0c319de  gcc/testsuite/gcc.target/arm/cmse/cmse-20.c
  266f2af407dee9fa3bf85b781282684c  gcc/testsuite/gcc.target/arm/cmse/cmse-3.c
  4c264cc4ce26c3ecec599c99d3e29942  gcc/testsuite/gcc.target/arm/cmse/cmse-4.c
  ce1fe2059d8e263b0f3d889cb1392892  gcc/testsuite/gcc.target/arm/cmse/cmse-5.x
  679443fc734534194407169158890899  gcc/testsuite/gcc.target/arm/cmse/cmse-7.x
  a29c7dfe0255ba24ca52aa9293640971  gcc/testsuite/gcc.target/arm/cmse/cmse-8.x
  ce946170746cf737bca71ec699014fef  gcc/testsuite/gcc.target/arm/cmse/cmse-9.c
! 397473f1a48c5b6f6bd4381804634aad  gcc/testsuite/gcc.target/arm/cmse/cmse.exp
  6e9c9a777c4a333e2bdba95bdaf23364  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-4.c
  c540adef0c0a8fc3e8e03fee5f712683  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-5.c
  727ae9b55594654191b60afa67ad5094  gcc/testsuite/gcc.target/arm/cmse/mainline/8_1m/bitfield-6.c
*************** cb60008d5e98eeaf45a18dec48047164  gcc/te
*** 56544,56550 ****
  bfdbc743afa8415599bab6c48cb26d64  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-2.c
  8cd1e54844f2fab111ede15dfc983556  gcc/testsuite/gcc.target/arm/cmse/pr100333.c
  c7feddd41b8ab7d0bcc61e9ba67a259a  gcc/testsuite/gcc.target/arm/cmse/pr99725.c
! ee7923c47e203d92d730bdfda69d6a8f  gcc/testsuite/gcc.target/arm/cmse/struct-1.c
  018f6e1e401b9f8f53cb13da1c5fcef7  gcc/testsuite/gcc.target/arm/cmse/union-1.x
  4b49e4c79c02f37ae492dd2e76ef29e7  gcc/testsuite/gcc.target/arm/cmse/union-2.x
  2dc71ce174b431509377d1ffd99a8551  gcc/testsuite/gcc.target/arm/cold-lc.c
--- 59977,59983 ----
  bfdbc743afa8415599bab6c48cb26d64  gcc/testsuite/gcc.target/arm/cmse/mainline/8m/union-2.c
  8cd1e54844f2fab111ede15dfc983556  gcc/testsuite/gcc.target/arm/cmse/pr100333.c
  c7feddd41b8ab7d0bcc61e9ba67a259a  gcc/testsuite/gcc.target/arm/cmse/pr99725.c
! dc937ad7bdd38e233f8eb2871fbab365  gcc/testsuite/gcc.target/arm/cmse/struct-1.c
  018f6e1e401b9f8f53cb13da1c5fcef7  gcc/testsuite/gcc.target/arm/cmse/union-1.x
  4b49e4c79c02f37ae492dd2e76ef29e7  gcc/testsuite/gcc.target/arm/cmse/union-2.x
  2dc71ce174b431509377d1ffd99a8551  gcc/testsuite/gcc.target/arm/cold-lc.c
*************** bf821309d2cd93b8c0d6b0704742bc45  gcc/te
*** 56715,56721 ****
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
  c0ebea9052f8cd9253ee6ff358df5e52  gcc/testsuite/gcc.target/arm/lp1243022.c
  b4f8ad85c07f7be61a90747a85bd0be4  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
! f21109d312daca04ae5962ed68df3786  gcc/testsuite/gcc.target/arm/lto/lto.exp
  90bf73bda834641a0bea89584effe1a7  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_0.c
  636cbd6b191957f3f94b3734e71688a5  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_1.c
  0fe8e2ad477327f013e80d0961d711a8  gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c
--- 60148,60154 ----
  bda0b982c40bee2fd28b1750fa6bc2bf  gcc/testsuite/gcc.target/arm/lp1189445.c
  c0ebea9052f8cd9253ee6ff358df5e52  gcc/testsuite/gcc.target/arm/lp1243022.c
  b4f8ad85c07f7be61a90747a85bd0be4  gcc/testsuite/gcc.target/arm/lround-vcvt_1.c
! ae84b7955dc0a27defac5b969be1f806  gcc/testsuite/gcc.target/arm/lto/lto.exp
  90bf73bda834641a0bea89584effe1a7  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_0.c
  636cbd6b191957f3f94b3734e71688a5  gcc/testsuite/gcc.target/arm/lto/pr61123-enum-size_1.c
  0fe8e2ad477327f013e80d0961d711a8  gcc/testsuite/gcc.target/arm/lto/pr65837-attr_0.c
*************** c6b1f31177a60b170040e0eddc1787ba  gcc/te
*** 56751,56760 ****
  7b0294d6197317c05cb3accfdbee95d9  gcc/testsuite/gcc.target/arm/movhi_movw.c
  484b6553c962caa2f0746fa65de739e8  gcc/testsuite/gcc.target/arm/movsi_movt.c
  190ffba53357096715f051384c38965b  gcc/testsuite/gcc.target/arm/movsi_movw.c
! 318e966952d36350b93da5f0ffaa2b49  gcc/testsuite/gcc.target/arm/multilib.exp
  56a0fbce4d79d10043dc3f64ce0aa364  gcc/testsuite/gcc.target/arm/mve/general-c/type_redef_1.c
  f7aa4c937541029a5bd3fe618bef6974  gcc/testsuite/gcc.target/arm/mve/general/double_pragmas_1.c
  e787e32385a63c5e015b59725e3d0250  gcc/testsuite/gcc.target/arm/mve/general/nomve_1.c
  0cb82b3c13272daae33b86a0b70c3ab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c
  f6c2f6c35390e01c453145baae48aa6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c
  8742cb74c36fe44acebeaf852842a44d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c
--- 60184,60194 ----
  7b0294d6197317c05cb3accfdbee95d9  gcc/testsuite/gcc.target/arm/movhi_movw.c
  484b6553c962caa2f0746fa65de739e8  gcc/testsuite/gcc.target/arm/movsi_movt.c
  190ffba53357096715f051384c38965b  gcc/testsuite/gcc.target/arm/movsi_movw.c
! e7756a9be4efbfccc1e126064251e13a  gcc/testsuite/gcc.target/arm/multilib.exp
  56a0fbce4d79d10043dc3f64ce0aa364  gcc/testsuite/gcc.target/arm/mve/general-c/type_redef_1.c
  f7aa4c937541029a5bd3fe618bef6974  gcc/testsuite/gcc.target/arm/mve/general/double_pragmas_1.c
  e787e32385a63c5e015b59725e3d0250  gcc/testsuite/gcc.target/arm/mve/general/nomve_1.c
+ 398e4816db99fac1f05cd83d7d9911ec  gcc/testsuite/gcc.target/arm/mve/general/preserve_user_namespace_1.c
  0cb82b3c13272daae33b86a0b70c3ab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/asrl.c
  f6c2f6c35390e01c453145baae48aa6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/lsll.c
  8742cb74c36fe44acebeaf852842a44d  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve-vldstr16-no-writeback.c
*************** a23662cdce162388aafacd6bd5ae8401  gcc/te
*** 56765,56770 ****
--- 60199,60206 ----
  7831959c4528e6a37429d37461c09bd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu2.c
  9b8afb9ef88ec69d20f93267dfc70f09  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_fpu3.c
  9e92f2f97d3d1ab5f56f69c957ed79d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_immediates_1_n.c
+ d50b310107ff00d1912337e483ceac17  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-fp.c
+ 45553a3ce9a7bd68a8e21bc25ab09db7  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_intrinsic_type_overloads-int.c
  5d5bd4c946d0704e8f9c836b2e2a0f59  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall1.c
  5c78178c71e076f2f1c218053a2f991b  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_libcall2.c
  a55cf229f5fac9dc5cf365b9fd80f3cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/mve_load_from_array.c
*************** df219bf2f772cd3fc958be5fe4e0fa17  gcc/te
*** 56876,56932 ****
  eb44348f498f11e5fe4fed9516dedd3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c
  f0053fe2799d5893d084185820fe655b  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c
  bee152e91177477fc44602122786a6b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c
! 00f1b1875c4a86d85bb09047caa4fd61  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c
! e87bfe4d3d8cd3a54e0626ce2d2ade42  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c
! 9453bec6bc28e0815b6ff5b80b737b62  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c
! 6b9d1c1c98bd8df85ec880d0d7ba6f33  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c
! 70f689454b74d0bee4652d1835cdfd37  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c
! 698c4772503537e127b5919ea227ba9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c
! 4f7175e4cce74c0f093ca2e3fb5f4935  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c
! 8dd1af66daca71b88b57cd7e4f873516  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c
! 866663de683d7d24b3c7d70a6d9f40fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c
! 98c902c7e76d45f82eb2c2e76f92b8df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c
! 0adcb111d52201ed421cbdebeec346a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c
! 5023045576ce79adf90c0cf4dffcf292  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c
! ac55498e54132bfb485eb241a77f38af  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f16.c
! 2d0033ba6523b002f7599b3f9e31d296  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f32.c
! 3ca537d5f80c59d47d8149534a6f454f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f16.c
! ee4254f95799bed77863ff93b8ed92ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f32.c
! 5b3d07b95052edaaa44e9da69f7728db  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s16.c
! e52550a208f8153864ca08ad546e8478  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s32.c
! 29aae19f780d5f6635f17efbc84979c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s8.c
! aa85822fc9fd50334d146560d73a895a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u16.c
! c0c3146dc4843f570209e5547565bb96  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u32.c
! 7224b0bf553f65f70701dd1968f08ac1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u8.c
! 95ee127252413f3d3dc44153994f78df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s16.c
! af46bb4564212f687aa8f3edc34f85a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s32.c
! ad3ea6bcfbe7606c3affad1d8d65d498  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s8.c
! 538b70807bcd1b079eb25dfde3a45a44  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u16.c
! 23adcdec0bb07fd7b16ea36569e060bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u32.c
! 6e0def62545b047b729f307e47f129ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u8.c
! faf62d20a876caa7de128ed116d3ab06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f16.c
! 4438abd9df779036670aaad5773e8c8a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f32.c
! 9c5da15534e898616ca5878f6c9af0bc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s16.c
! 6c1019acff34cba9e879bacbfee3dd46  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s32.c
! 9a8eca33848e25aaa1570ef75720604e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s8.c
! 9a2a0d240efd474434d2f4ebd8fdc5be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u16.c
! 58fa5687c893cb4ed12c0e11733227b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u32.c
! c4e64183e154ad88581d7d5c272c2ab2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u8.c
! 3b184fb35827e4976a94ac6022ed4f10  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f16.c
! 151f9d1bd2203c2148862d9f9b55a9d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f32.c
! 5fb422c7fe1da6ee4b55d8b5583d4205  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f16.c
! f28c1f560f538c8756df88428fe94bb4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f32.c
! e8b1ccd9614894d6469ac04d6ea8038f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s16.c
! 8f6da3f5eb920659117410742c70e8ef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s32.c
! 2b81d12739d9532400270deb078f07ef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s8.c
! 3849185d7aac571d06c52cefc2d75091  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s16.c
! c8839a478bfc87fbfd4dc612aa5e693f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s32.c
! 5d769b091b0e22cb6226f820eaf26392  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s8.c
! 45b7d1a30d1010b288f43c2775b5beb6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f16.c
! 032fd8b290c3b06e9c83183dfb9a8ac5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f32.c
! 258df1eaf1997d465aa2f56eaa188ab2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s16.c
! 619af39cffc151ec5a060d286887ca38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s32.c
! 3f3705d1dcc21febd482bdd38438efb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s8.c
  45df11d019e1c415de804c92e6f0607d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_s32.c
  a4721aff489d8876cd68728618b26bff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c
  cbb1be2c4f6881560829cdf5557fb482  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c
--- 60312,60368 ----
  eb44348f498f11e5fe4fed9516dedd3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/uqshll.c
  f0053fe2799d5893d084185820fe655b  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshr.c
  bee152e91177477fc44602122786a6b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/urshrl.c
! bafc5915396c36dd0b92a94db86a8b26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s16.c
! 13b7a0be8d75d3a39dfabddd0d2929a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s32.c
! 210b43751f72df75b561694983081d5c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_s8.c
! 84dbf7cd344d01387f33019508a464d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u16.c
! ba9c7780f5c487e209ce00bba981ac7d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u32.c
! fcb79818ccbd774cbac6578116512b95  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_p_u8.c
! 33bcf7bebcf46b52548ee4fd8a59dc12  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s16.c
! fa3c9ea6080e7614284c037ca2662306  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s32.c
! 0e85723dd557b8524ef8a9f6311b7f86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_s8.c
! a18e63a3e71935108bb5d2554b223494  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u16.c
! 406fd2c9d3bb4184100bda3145a5a11e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u32.c
! fbdc6c3cf4b3c5292473c028324f1824  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabavq_u8.c
! 3f07043d42c6d55d80eba0ac2cbc5c3c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f16.c
! cbd969f6d93ff1c028d38c477c5559cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_f32.c
! 971b896e0131e1fd745dfecfe9282851  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f16.c
! 3f3934ab22c25eaea6f771b499b92bfd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_f32.c
! f21442f9082ce88850438647521ebe26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s16.c
! 65d99dec9a46deb6c67675e29835981e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s32.c
! a16c76b6597fed70783c2accaf3a1ef1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_s8.c
! eb9ef1d39f7f7579aa79709dd1c1e1cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u16.c
! e0e224c2b6f3bd4849f7a9ae7a7abb68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u32.c
! 04298e138b8dc9bc80c12270eecd02ee  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_m_u8.c
! aca4a2a260550e997f0d897ffb87d5dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s16.c
! 690f175d1a296da0643adc5fa383fcc1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s32.c
! 3f7f7720db090c8356f88e2a1c0fe9c6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_s8.c
! f2aa5e93039dad027003c0fc64dc9703  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u16.c
! 0496d94c19b1a6784582762e155c3fc8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u32.c
! 4af6e11bc812ce7cd1aa33ede5a1d43f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_u8.c
! fdf95825447ca1aca2f302ae9dfba5eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f16.c
! 7194d84ec9909887df33e61f9121bd4e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_f32.c
! 75fc421e5e7e4d19e496a00b6b9227d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s16.c
! 9a5609ac3636730614ca9866889894dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s32.c
! 07d9325a472575c44c46b740d036de07  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_s8.c
! 2b12244fa31fccda4cd506dd12eaa904  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u16.c
! 15b751868f9b34102fd42f4a67af895b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u32.c
! edf5eff575667da961b02eee884030c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabdq_x_u8.c
! 3478cbf3cf6397304fa2cd9e23843661  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f16.c
! 9dfe071f0fd202175f3b92d59da22100  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_f32.c
! b4a302b69bf1e6a72da8e7479a5a0511  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f16.c
! de281d1be813dc94b51cb0a24d32f4c6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_f32.c
! 023cb049a1481432324b8d4437c03794  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s16.c
! 1e308a9b2d8a9bbc9654aae9f607e13b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s32.c
! 9dbccd059e4b9a4b8ec38edaaed11769  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_m_s8.c
! 1be8109cef10506e0af3bcfb03500830  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s16.c
! d7ee28ad42e6c1e570f5c5f58863259a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s32.c
! 5481183ab573ab9a12eefba9108910ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_s8.c
! a5806aa09d314a8b147277bf02de9d20  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f16.c
! 3f599ac07cd57ce6af9406df79f37b79  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_f32.c
! 1480ed3fc8857c05fa934ce2ffb39a5c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s16.c
! bb637e11c784052529f6933459d58183  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s32.c
! 2529e0f47ff47dd3fa3e7f4fd74eb2fd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vabsq_x_s8.c
  45df11d019e1c415de804c92e6f0607d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_s32.c
  a4721aff489d8876cd68728618b26bff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_m_u32.c
  cbb1be2c4f6881560829cdf5557fb482  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadciq_s32.c
*************** cbb1be2c4f6881560829cdf5557fb482  gcc/te
*** 56935,57024 ****
  36ab78b0866877402ff5ae68a95c40a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
  071587739f43bec02d918e5876bb5ff6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c
  5aa04eeb4e1c916325eddb7ff9ecfcaa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c
! 715fe4624b6aa89221dac6fcff9e7851  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c
! 153dc5f3dc0065e5b6237fbe52602c0e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c
! a45f027483a76d43e8424b36a4bf11ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c
! 444be46e12387f7d136cbec55ef1d9e3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c
! 9c2d5d86a1aff359deb1daeeb8bb14f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c
! b67d1a185f930021fff8a060f996c4ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c
! b19c484dfc31b74049beba2bdd01b4be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_s32.c
! 9ee04dc08a4b656057bc86fdccb0bc09  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_u32.c
! 234bfb159bbe242764df36998231a319  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f16.c
! 8ce3cd1a0c2bf515cc47ab34a03b59f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f32.c
! a2a8f4f71523ec9fa826e17222c630ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f16.c
! ddf2b84dcea090c2db30c0eb7befe8e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f32.c
  e2189168ec86365d6e24562665a3a236  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c
! 51dac737dc760236b1b81fbd29d0aad2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c
  f03346639a8f9a612687c160b2f2ccb0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c
! d58bda7d1774178a904ae23f99cf08dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c
! 6a2f46e2978e72ab4df470a4db1da154  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c
! 2cc8df00f4d2315aa1e38c835b563119  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c
! c254b08ab6cce660d466809ceb4b62c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c
! f80b8d433fb874db151013695727b8e3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c
! 11df3bfb9568e28c93558cfbeb9a2be5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c
! 5e9abafe29cc80d07a8f3345f96b2dd0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c
! 9c4c00e4b1fc86ff70ca0069abeec2da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s16.c
! 983fce255b6f693a73c398765d7e7e79  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s32.c
! 26629fe1dd64bb7a2daa20f400ea5aff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s8.c
! dd7d18fc5151072b2720cd4a6c4977a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u16.c
! bddacaf1c827dd056775e514c3551c10  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u32.c
! 96413d8c515b20945c01b760870c550e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u8.c
! 9055bbc6fe82c4f6c5f54cb953d1a964  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f16.c
! f46dba49bf4f9a715d45f127e84c19f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f32.c
! 9a0d3e3580bbddd53e712f791e17e9d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s16.c
! f43e212c75fcca5329394340b473ca88  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s32.c
! 9f2b4028e8bb750c1a6c566df5f9c861  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s8.c
! 1fc0bd9a30eb3e0ab3a8a5654d9b69ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u16.c
! 6895a1276395ec5b8b1adc80d509c1e6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u32.c
! bc51cfea52734e391b9ff75bf386eb11  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u8.c
! 8aacb1f559de838b143e6d78199a6e46  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s16.c
! a2f05e11a93302b5bc9ae2dc25354eec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s32.c
! 2b9c5fb15d596abf13aa6f525a348eb4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s8.c
! b39c913a4ee491bd18014c705491352c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u16.c
! 5db4ef41239079fffa33cfc2ed380703  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u32.c
! 0513cc3c7094568358d88b9d00183d28  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u8.c
! b99634c5e2c09ade2cc6fd4c9c60eb15  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f16.c
! 27e690e9221805df6fa4f1cacb1a8055  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f32.c
  9537e3e324f3848c865129789700716d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c
! bc9822920c9660ad8dbca423bcf355d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c
  88782a692febf452b8aa48e3f6c91458  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c
! f4945166cbe936b263e35bec2b028f1f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c
! d6bda434b499464d450df0c15181c333  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c
! ab10b01c5e0a9bf748d872602714d7c7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c
! e1891a9790993814da69e376dc997071  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c
! a113799d0b941d778155ec1553aff824  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c
! e7b85e38905bb8b5604d40ced034406b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c
! 91007c710f4fca4977033c5630d0228b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c
! 2a71dbae11fe613922eed5a4f240e4c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s16.c
! 2a87d7aac1246753bea7c47c038d9b55  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s32.c
! 66e4bfdb5cddc46e8b106ee84c708735  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s8.c
! e6d8ac29e5b786aebdb6efa73e911221  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u16.c
! 7a8133bca1178bf1faabea53575ed972  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u32.c
! aae4f543dd94e9247f9c24db6589c0e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u8.c
! faeeb830bf7c33518c70f04f96feb99f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c
! 7a526f6aa950bd8c7b16a39d50824ac9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c
! 47ca53fd5148630236d3559bfd235585  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c
! 01529e243fdfa14027c7852e2a3c1159  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c
! e298cdea744ff6e471a3816033eb2620  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c
! 985eb3dbef130486a5e9e69fd641b020  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c
! 28dfbc3f5047b5584ec2a72e1ae29e65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s16.c
! 708fccd1411473d3820daff6e7c0d5ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s32.c
! 26463d3da76b34b281ed8bb1a36173eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s8.c
! 90daa6c199c4128a49b03e90ef26443a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u16.c
! 2ee93b419ba3401477df1057bd772ddf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u32.c
! 2bac5509a3b14ad34460044578c642a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u8.c
! a7f6a13d5d5393306d3d23af4ca295a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c
! 177f8fc99b165d89244db7fc892ea090  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c
! 6ac1f7f4090f98933bf1a32fa943e74d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c
! fbddbf93a7d7df364ec1ba00e64b17bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c
! a7b76316bac571de2145e4b0108ab51c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c
! 6d55f0f4292e7019b81e6dee5da56e7d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c
! ccff58930aa5b3d2dc16ef47f60ac839  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s16.c
! 5ee97df93b49f7e02c6a2c6ef0e66151  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s32.c
! 61f0a8e95b571b82acece5595f5ef6cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s8.c
! 30da4004c5e70a357aaf4b9e15ca5269  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u16.c
! f0ed1a6ead4b4d59f59339049b418ba8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u32.c
! 493f64e8a4aeacf8b1be21a78c5a02c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u8.c
  dd263a0da78b69ac3967bd2c6a212939  gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f16.c
  864f6f91515bb623e648184a9fb61df1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f32.c
  06206a423234cf7e860e176ec908702c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f16.c
--- 60371,60460 ----
  36ab78b0866877402ff5ae68a95c40a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_m_u32.c
  071587739f43bec02d918e5876bb5ff6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_s32.c
  5aa04eeb4e1c916325eddb7ff9ecfcaa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vadcq_u32.c
! 30849dd964b0e504a851831adfe15591  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_s32.c
! fb88408d501261d256b7964e09fa4d93  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_p_u32.c
! d0d228142c9d1a15a07f36a41582afde  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_s32.c
! 3da64b1f6bd04fb66a32ce901e550790  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvaq_u32.c
! f76ead262b983c13b782286b6e083f4a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_s32.c
! 5c7e8b4ba248dcb6994ad701cfdc5fd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_p_u32.c
! 09e976770fc6c96da1b4eff5089488fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_s32.c
! 818bb0fdb98850c8a8afc4d5615d4571  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddlvq_u32.c
! ff2c76c08c67f9bbc6915e2515d90773  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f16.c
! d841eb61868c6fab9ebd55cc59acd715  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_f32.c
! 7bd3eb745b8e3e133d39a85ba3e692a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f16.c
! bf2f2bb355f8f6c1b71085880cd5d2f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_f32.c
  e2189168ec86365d6e24562665a3a236  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16-1.c
! 5f7814256bd38afa9116b3010b9ca4fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f16.c
  f03346639a8f9a612687c160b2f2ccb0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32-1.c
! 26fdbc8079667905a6c01dde03c220e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_f32.c
! eef4efbbfe04884b7b27af7f2a0a5af3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s16.c
! e486854a852679bc82c8b9aab09b036e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s32.c
! 692d2ee1c99817f20ca2351405209833  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_s8.c
! 68602d0dd9d65ba1d77d71814ee3243f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u16.c
! 226ba3594188dd34779a8cc68172be02  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u32.c
! 303b6d3e65788e0346000a070dc57178  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_n_u8.c
! b6009339a69cf32bfa95bbd7fe0e8ae8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s16.c
! c79a80b6cd51be692d899c73315a2311  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s32.c
! 0d961646c438ac6633ac1b9c576ca38c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_s8.c
! 71722267871200c983b82ad9bcbbd98c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u16.c
! 4ee144b8f5fad4fd5bc0bc615accc1fd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u32.c
! f8e065bfaa35d7caeecb0dac3c3b8fd3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_m_u8.c
! b714f0003ab921e7f2833e7a7df8ac2e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f16.c
! 65c599a0a51abb5f299adaae96cb0fe3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_f32.c
! b0799d2477fab2d8d021816c48af53f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s16.c
! 3f7de8ca760bf082a85556c8f0efa243  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s32.c
! a4f02af3e24b950c93fad1e48542b8fd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_s8.c
! c554f5a5e99262cf94177bddd54dfae1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u16.c
! b580ef1ebe1d5ba7c3d53f0a9e344bdc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u32.c
! fc4f2ec972d9eaf13a5db384dd9bc65d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_n_u8.c
! 91b0654227d1d4e30f3a7a628a27de59  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s16.c
! 60d941a9bea3bd3b5f7ba52ac9e3cfa6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s32.c
! 1649fec7c647f2ac903e96fcf23cde03  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_s8.c
! bc6ea2d09a559b958c2cc8f039a5ac78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u16.c
! 7f574ee875693e00d4886fefd1d699cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u32.c
! 11af79e835b7633fbb3941429305065d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_u8.c
! 7170fd955d132bb3b41c7811a91bb422  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f16.c
! 4c379523b6acab85eec940335b0f2a26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_f32.c
  9537e3e324f3848c865129789700716d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16-1.c
! ed95ca7c5ccc6f8af907093b4b6906a2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f16.c
  88782a692febf452b8aa48e3f6c91458  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32-1.c
! 5cd5cd9f36ebca359642e41d63d3086f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_f32.c
! 13538a148059fa538809f72533a7a3da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s16.c
! 3bc3ca6263691091659bab641185a67b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s32.c
! b0a1953b42917f930786fcea57bf3c1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_s8.c
! 5b4684044f80965f4072b460e8b52134  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u16.c
! 6b2d9a45b6e436802fee03cb415d4160  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u32.c
! 12ddfa3ba5799a382967aa85254613a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_n_u8.c
! a5a4079265a478d316e1709c74686b06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s16.c
! 4a2f41a5ea260d252756bf7e16f93215  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s32.c
! f406862dc177f34d6854af76d8b3d297  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_s8.c
! 4d55ffd74c8e67a6cfd3bf1745d3cceb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u16.c
! d79d714bd3634abe811625109842a489  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u32.c
! a2b005367728076c0f4ddc8c79272241  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddq_x_u8.c
! c3a6979c7ee3e609b477344146270a41  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s16.c
! 49aabfa10481a82cc33fadf209b4cf75  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s32.c
! d2c8033f3faaff3d7e8305f71e4c871f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_s8.c
! ed692ab127c580011a2c344dddcd2be8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u16.c
! 47026b0ac967635702a8b80dbaa2318f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u32.c
! 55aa01f6542a24a54a471162e48f6b2b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_p_u8.c
! 8ac9fc6bcdf3b6bd32eda7cc18ccfa50  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s16.c
! 17273034b0b385c9596c113d876bfbbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s32.c
! 13c72eefdce209dc2a170745c4cbcc20  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_s8.c
! 64120f9f941d7f4e094a493e7868cfab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u16.c
! 8d6a674ca8d58e984239ea292efa0ccd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u32.c
! d4d819b382ec6df1fe87d3d337be933e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvaq_u8.c
! 095b14a3a130e111efd07c5583043fb6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s16.c
! 27888b7f7ef60292706abea8fcdb976c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s32.c
! ce241e1a3a19a4a995912b381eab0640  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_s8.c
! e3845f82b1224987479c8477c705e499  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u16.c
! 74ee89e8866ff7822719cc5de3cf4f04  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u32.c
! 16d7ffe887c0c9b6c22a6650ae4ca45e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_p_u8.c
! b47d392eda67e3a2c67f72898da6bd9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s16.c
! 9d4fc7cdcb6349211e959f6741e19000  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s32.c
! 76b45f5f3e22c45c8eea00cc8ec96dd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_s8.c
! 39ce0c3f060980d77b990d44580dda74  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u16.c
! 140be68237cc2743dcddd9b8861cecbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u32.c
! a2b9fa247d57df0c3f2b37e9996dc9f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vaddvq_u8.c
  dd263a0da78b69ac3967bd2c6a212939  gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f16.c
  864f6f91515bb623e648184a9fb61df1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_f32.c
  06206a423234cf7e860e176ec908702c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vandq_m_f16.c
*************** d1006e9771da810b05faaed97704caf5  gcc/te
*** 57099,57421 ****
  06b19bee2309cf8aef602d176877594d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c
  ad641ad69fd40905b75efc98ed0ffd85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c
  ffd86e684e7fef863a6a1fa52fc3bcc6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c
! c18df38c835af7ca09ac10ffa2e249be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c
! fa80178c80fda376917da2900567de6e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c
! f00cff849f24309ac9908c19a799efbb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c
! b3dd396b43d828540664243003e29996  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c
! cbd59c625b3e19703cc264c6f38c43a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c
! f3830db15069923eadd5818494e669b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c
! cf1edb8b07d6b961a5018bd5d5e956d7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c
! 45bf8b6bc9fcc05817dd8c71729037e3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c
! e4a8099da3c8470ae5fb338feaf18454  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c
! 37bec311a7d61e3c637fc4d4be7454fb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c
! 0fefcfda8f22800d3ffb01960ce64732  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c
! c1e6cbe8203629691932d264d43889a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c
! b62a55658449e9a3b709c14f7e711a66  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c
! b136ffe0f0c0976c51e5a389c62593bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c
! eb557361971960e9606cbf1cf07244bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c
! 6a2fa7009235eebf74917713518bd233  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c
! d1dd7473d6172f660c57ee57b2b95149  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c
! 59b7a48b669cadd4fd78c0662923afa2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c
! f80c7251cad58ac3c655bbb33b086fd2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c
! 6dab236a4e65b38383aadf2b313b38ef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c
! d2ba4ddce877fa81ad6702d1ef62a713  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c
! cc2f5f9e606f56728a7d6e350fc35660  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c
! f2b9583dd39285f5cc3b2bfcabb1d767  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c
! 73c1b83edc716e562ab24219a20e7971  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c
! 392976d3553405103c58ba242c96ce37  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c
! 302647053b07694273d1df6efbf6e704  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c
! 5e7d48aef68283a4bca588f169107082  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c
! 0cdd9e5bc0e784ba82bc92e987f32082  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c
! 7c6ee4a70d60a71a20a279cada721563  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c
! 728d6da6a45e9f209ddb933868f50212  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c
! 9b52a1fbbf45bb17043cb0e909c4d1f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c
! 5160d4d9e802111ea192a8616de36e63  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c
! 76ebc526891bd2e092d7b36b8ef1508d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c
! 7d04a54da4a2feea98560248211be0fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c
! 86557ca1dc6a62dfca6868033f1b6367  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c
! 2d4f11bf577ee0b2c6498e515d3e47ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c
! fb33b745bd7906e44946b061c6a99261  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c
! 30dd3870b6a84c0baa09a78d5661d9b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c
! 1e401ca949bf3b0ac1eddb991921e617  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c
! 3d6b925ae0cd04b129f87705597e324e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c
! 2ece657f007b044d91c4d1423682ed44  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c
! 1dc74c6f2f4d4509bcf0e62ef3c01b19  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c
! aca2ec867411b2a0cad15e0991d4a432  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c
! 89deea12bbbaa3ecd2dcf18cf2c3bda1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c
! 78a3af1ecb0c2654ca5722dd2bcdb1e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c
! 0618ea450d286111d1633beeaf506198  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c
! 45ffef3e248cb8863215c0df431cb56a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c
! a641748319ec1a05d43bf3d18565c2c5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c
! 7ec1cf3c02b78bf31f4d683dd7b6d9b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s16.c
! b86b34c153abf859889adefd26d7f873  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s32.c
! 894461e820cadf8f20fea21943cf555f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s8.c
! ef525a30055fe04e9197bebc6361073c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s16.c
! c964f433b2a92f7ca2a3bcd8fef17a38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s32.c
! d79276519307987388130f183cfa024a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s8.c
! 487c45df12c917684d9665614b2b2a0d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s16.c
! 51b5ac8c3859dcf3810a9fd9e420c83f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s32.c
! 7d3a0102dcf9bc0f3d75c54dacb38c70  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s8.c
! e08f5b97de17bb3ef423dcd8ecda8d7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s16.c
! a75e96e7898e7f5f49dce8e5ab1404b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s32.c
! 42bff25a4304672c29db805665340fa0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s8.c
! 7d95bd653ab4acfd8440a8fb14283bbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u16.c
! 8800da4ec47e6e3febb3ddaf50b41ec3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u32.c
! 64bfa6be7a9c22f698b993cbb1214354  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u8.c
! 85ea53ca3abbc296bde9928b6ca41abd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s16.c
! 9b9d2faa7388914f70d471c6cc50b7e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s32.c
! f29fbe66bd082c655f3da7db03b5fc11  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s8.c
! 84adea76071db238ddbe6e4f4a6bc03b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u16.c
! be148f67970d91da4abf5c7c48c4c41e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u32.c
! 5d69b86696e81df8fa5090b4c00be72f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u8.c
! 4c30fb880dbcd7c3faf308cb658a87a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s16.c
! 943d51b14b7d28c222bed01caff6e081  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s32.c
! 4f0e209ebfcdadd01e9372faa277a9be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s8.c
! e6cdb76114fe00674ce3baac9fd4aa96  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u16.c
! 64923d2058d2a30aa69e97e4946a0c8d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u32.c
! 0abae747b1dda6c123a17a87d062874c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u8.c
! 4269bcaa0d87b7c5b4988d2dece4cb7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f16.c
! 049b349f1e68d74f845d19053445775f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f32.c
! 2d16f383aa94e91815ba5d7405f4c607  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c
! 01d2d7bb69f52a77414b982b437f284c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c
! a10568417171db71dea81f0d95b280ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c
! bcd0c52eac573ceaa36daa2c3346b58e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c
! 7b6ef4902dd539bdc06ed961291179b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c
! 52f3c56d03e7d111deb5ab97938dfba8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c
! 487690db146d3e458d69b627093d7968  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c
! 8b81d3115556aeb617208394ba6a900d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c
! 8518d7fbe54c979fa04b6b1ede4e79a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c
! fbdd3037353e2d4ea41e8fc8b0d11159  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c
! 8fbc143e3c9a1cb2d764bc5857e8a0dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c
! 22fc2a52e10e40f5ab7db0227a22ee2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c
! 09e336cc5b9ee4974f4533f0a38d759a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c
! b3b607109f86809901de798220b4b573  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c
! 80867b04527ff18b34bb3b9539ba4fb4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c
! 162e8a3473421ab61ef633c185bee42a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c
! 054cdda21795bda63b7977ebd52c5fb0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c
! cec65a12c0c20b9691420c1b2823e18e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c
! c1e5f2a63ee8348816b66faa101f768e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c
! 5f0e3b5f1375e4e69542b6622b396a26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c
! 8f9a9fe793cce5717f25fa192f2ea90b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c
! 0e831c12545ac886350469acbaf9e9f9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c
! 1daeeaa840e32720b33a4491d566da30  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c
! a545f33b0ca92479b36f51ed34866507  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c
! cda26ea5eb688daa79e6c760cc0bd018  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c
! 3c40fb6f18cb971293599fc73682f189  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c
! 9f431a9ce9048d038cde3e5d006d49a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c
! a65c07e69ba1cffe23c97a995f467dea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c
! d0c9e71776d51e11bbeebd48ff879be1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c
! 6109a303e1c5c1ee8f76139644dae6ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c
  b645efed5040a8147ab3cbe10a7439e6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c
! caf4b531a5440b29296a30598e933280  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c
  5481db2a7bdf7fdf4bb0fffa8a3703a2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c
! eb2b0102e2349fd7876b891a85769230  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c
! 636ff9fd1f4a87d476281683b1bd37e3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c
! bcaac43ccf6073c848d7b094c1f54025  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c
! 58f11fdd5a858086998b1f4f84867b34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c
! 7e7eccaec12ab0f068e1b3dc7c76f229  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c
! 47df0a72159cbad28fe4ba33b1f612cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c
! fef38da315a7cf9923b502b76ca987fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c
! faa3984734990f68290a3125f58c5081  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c
! 34592c03632fb4b7e11e913d3e3fa7cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c
! 05bb2de318f03578a21b0755f1b1bbe2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c
! d8d4af984ae38df256cf64e0acfd3f9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c
! 18b56721484059e198d9f397a86d5bce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c
! 1218b32ab84c4a87ab60fc6ea328c079  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c
  64ebcee365f72d2b4617f30a874d1200  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c
! 2459d10fa92c11de96d1c77592e6420e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c
  200ab1f4410b9e618de0dbe77408781e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c
! 8ba68d2303d792d96fec5cb31cb8db80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c
! e98cafe24c1dfb90970ed7cfac4215ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c
! 47434a5a898f5c6af8802cf542ddad7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c
! 0dfa6833b02a452ba9228772ffe40ed7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c
! 61829b23cedf346d3da410758735ce57  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c
! 649510cb72a747e44ef15ea6c4fe07ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c
! 30252ae7d5c88cc0a5f76914e275e158  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c
! 5979c9ea7e766c27ade85cdc3500f4ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c
! 2cb55fdacc8082df22160ff17c4e7a04  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c
! b2bdb73a7270fa036ef08f7bb7a27d45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c
! 7ad05db9ed1ad76b58740d71f102259f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c
! 3b3c314d0dcb87dbd1205c0743e82245  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c
! e887327a7fdbc202f9f888879413cc8a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c
! 2fde40199e9b4c71cf7b40a04d7722d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c
! 1b7104711e3e89b3cb5eb01ba67e2819  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c
! ae5ec11c296ecc29ea42c52bb41520c8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c
! a55937710182642a011010534d884689  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c
  5ec5df57e830abc5794149ae054d2053  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c
! 86f45218ab88c9497b150a3fc3fda43e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c
  50da8bd1ae31dd83a46dfa4db86aa6aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c
! ea6f3d835ad126b5b6392b8b044c58e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c
! 1b45b14c3a8ce0e49413828cb930d93f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c
! f98682b9eda3ccada9988238ca77f787  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c
! 6baa946b5cad4696fe62aa8861f0005e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c
! fa9c9b238dc41118e7b80e054aeb00ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c
! 3752e350be4289dd9e7de803f9db8d38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c
! 305e4cd7d4ab5563aa09f51fa8f5472e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c
  1faa84b7aadaa19a8b49b0397a49a340  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c
! 69ff6060e176567b9d2ed579eaa7f7fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c
  9226dce650e2cc62554bb4f38da0e3ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c
! bb5564ad0dcb5b847b44f9695ba9f0b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c
! c08edbeea5f4a3bf7eb4e6310a10255e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c
! 9f8dd55542db5edd5661a0be2e52250f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c
! 3bf6131ff423b064102c843aa19bf72a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c
! 31ecd36de8185339dc4f6afb5ddf6c88  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c
! a946e789d488206b36cbd4cf3a98320e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c
! 41706fb4123147e43c4d655aeb5c5420  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c
! 180e7e263654ccca02e86312f2502981  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c
! f049ad1ed11afcdc847955f25dc5eaaf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c
! 6d360824d84cab96cc28d1b62046263b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c
! 1cd78a11dffb2b4bfb13a1dcbf147aed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c
  722591faa1232b4bc455b235e2bd854f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c
! 393c91ec5740d5d2069cdc14394d75b1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c
  ed6ff8954243c6f1947ac88a8fd52e1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c
! 52c43a6047a0e8a0f7eabc27fb7478d9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c
! 9bd810b61c99f42e5a3719628bbafb58  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c
! 9dc0a66d521d266ae598d4d1780c51b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c
! e7c61ef4eac85bd5d02e39952297b9b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c
! 165c31d94e634025b9cdf1910cc74d30  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c
! c4ed43dd85ce6bf796690b75eb4c2202  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c
! 13b0fe9983b7f59966e33555aee70fab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c
  f2e4902be60b05edc4037d46bb6c5be8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c
! aa6798affa74757820668edfda7867e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c
  a22f94bf5995abd783c0519816ce4ce4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c
! 6aedc725a5e7dd7458da86affa234f10  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c
! c497573814b3148fd4fca57f2690e426  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c
! 88737f7848cfbafa4b1fa1b5c1ce6fa1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c
! 8d3186beabb510c5f13b58a4ef628bd2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c
! 6f697c914482340cd9ce61989955563e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c
! 7179bb81acc2d747e35f413572f1ffd1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c
! f5e61885d5e13c9aac6d66b847e97a90  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c
! 957fd89c475cad8eaccbc60bd27636c7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c
! 3b1a3e24cc6cd54f2fade0731f43bc76  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c
! 79500037d25aea6e3debe135db174001  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c
! 3945ce062b2086bd6328b0215bff015c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c
! 5e38486eb8660c35c107ab2abc3cf51a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c
! 1fe7d422b4f3deda53ce53c36f7e8cd3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c
! af8572a3a0e045f891da42306ce19f0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c
! a4954cc61a26e3628dc67beb2ba14d5b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c
! 44760e1b6211ec2349e03eb730b5af1f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c
! 9d16bf092e5588c9cf0f4884636bc855  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u16.c
! 8f8746c98d8a458fa601450e7a639c8f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u32.c
! aa0aece41a97fbaf4723e02ab0956233  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u8.c
! 89a6f0ef9a389d6db0941a39ebfcb92c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f16.c
! d0283d06b31ebb61b1d033f685dc1d33  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f32.c
! 9d10288fa2c49845492b6d068a6584dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c
! bdfdd55e6996299cf5e81b149f06ea01  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c
  fb590235d03662fcc3caeaed2af1a224  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c
! 4ba22b08a8ba1117e8cdfb8890644191  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c
  9578f1500a9d7e90b39b781846243e4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c
! 7c7b2e807f86fee5cbb57bebd79de6dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c
! 8d6361b4df7a697e8d1c483c7ca80e62  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c
! eccb9b6dea7694ef40b6cf9b8bf236c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c
! 1ea28b0520e9c0b9402cf8ae047a52db  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c
! a542fcd8d0057c6335403ef7d1b2ed98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c
! 0574d9ca940c8ec9848253e51348d710  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c
! 1867e54ecce37f04dce881fb66386d3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c
  fbc254bf0987cb3969ca8fad96a24898  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c
! b0fb6b95e73bc96b54e39d5a6a5da4df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c
  6c8227752b96607ad6581e7f48cdad99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c
! 3bd3af6a5d618f3a47e356084e93baec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c
! 7000b64c01b98253599d84a8efd1c663  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c
! e95fcc402f057b9142b47d18e5327ed0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c
! 96f0c2cad0b501edac62b2f1b4bf5a7b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c
! 9154057dee9c360543ade6bdf9451abc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s16.c
! c6a4b38ca97018b4d0edc72dbf2cadb2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s32.c
! d632e5004abf6482fab4f9bb42dbda3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s8.c
! d5b301be7af911f56e11a92b1f548157  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f16.c
! 99ec252257fec7187afdd970489965ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f32.c
! bfbfa182816a8471a05edc7c09944c57  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c
! 07ba8c69a2751a1eab7a4c40e26f4e84  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c
  d3d023250a43908857f51b4bdcbeb5e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c
! 1be473507259c2029685212ba1d46662  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c
  0e4f57b9c2da6ce6da8844a4bbc54486  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c
! 3467eba4ed024a339fd131d95e0e7c74  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c
! ef4e949782143b3066430decbc2ddcda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c
! b5eb7c748ed81ec3924dc82369fd360c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c
! 69566670f8076adea212885edc4db988  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c
! 95422727a5f2e4c9d4e1de344702ad45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c
! 1432936f82fec81db29cc2797c2ed260  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c
! 33f7c1e53d9fd45c597e18bb2d676189  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c
  208cb6b79d545aed44277aa7e7867c87  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c
! 7c384b87d72d6beba53e0a4ec9cb537f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c
  992f3e9e9f759ca52e5fe064a26950b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c
! 2f7d88f3de976cb0d02fb2396b4d1b53  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c
! 42fd42bd4f3fd99f8e71fef019884c00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c
! 64530059753ebcd1d7c2e2b0ca52aa22  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c
! 9085e8b1c8c0a69777ee340ca147a308  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c
! 2d8ee98a54c2003ea8d5d7480bf27720  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s16.c
! c92070cb33fcda8b05d5108527c4cb70  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s32.c
! f1244d3c6df6ab0c8df8032b6ed59ece  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s8.c
! 309df76136f982ff446348a6510a2de2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f16.c
! 2d50f1ca933203fbae9cdc4f9a47867e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f32.c
! 5476b591755ddee365920c101af8b307  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c
! 44b70cc57dc4a906f0740b5ca516fd99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c
  6a96cc5ea25dd7e8bf31a05fa440540e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c
! 6d76921c58bd152d908492975ce35d7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c
  315bfbc856c147fcd171206cddc07cd5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c
! 563f23673401799a4655a8edc0c60153  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c
! e7661d4b5e4672bf19bcb38c99346828  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c
! b629f1cdffd5743321e121d79344bb97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c
! 4a2a1696290631400067df5a140c0a4f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c
! a66810750d2d9cf7e704e4bbc0d3e293  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c
! 75e6311b5002d8181d0fbecd0a4130a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c
! 4282ec4ff2cb552c0192b70c0d7b8952  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c
! 4ee2a59f08c277dbd69960ba35b225d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c
! 66eab3d246370ed1bcaf14b17ee9f9d7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c
! db3ba592c090627150baa4c1ad545495  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c
! 5a9d1001787a98d551418b85f1d9a80a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c
! ef2e2b89f2099060fb3660efc24e94a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c
! 55b6cb94bc227f2d668e16e03a1572b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c
  c87e45dd2b50fb4e3ae022e63270cf1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c
! 28736a4f294a8511ef350ccc1dc33959  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c
  6337dcb25f5a4632f0ca08e910c78a94  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c
! 34aa3a325a000dc80dbf6883a5fce319  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c
! e62c2ef07055ba67e29d60ec6af76e69  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c
! eb43657d2aaf4703c515263f3124a749  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c
! 0dd93784e0813ac0fd96ff6b9db98b7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c
! e74ccdeea81e85f08e286d3786d0e4de  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c
! bdb008ced723cf854ec8de03b97fdcf6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c
! 0b32f69843ab29a4ca64974972de86d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c
! f42939ecf81ff692d933ef9fdf609839  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s16.c
! bf667d23be073e9c4d8f80d43e9b1b38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s32.c
! 96fb1de5a940c107d9595c6eeec0ac2f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s8.c
! 1cfeb0fe06d5b1675a5e7faa03aebaf5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u16.c
! f6e80c616e514a64e04a5d2e302400c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u32.c
! 3eab23c9cf03e37cebd0c1b58b5be69a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u8.c
! c330befd224d546a05444a01ae4ac722  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f16.c
! d2d6dadddbe9e294a9ed486348c098c6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f32.c
! 15954c8846fc953bf3cd0d00eb5f8fd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c
! b18fbba08be09d864f1b73e90bd3df5d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c
! 8518df3f78adda2a3be0a29c5f20d83c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c
! 9e82cdd9444f7e3289d608eb53d5df98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c
! 50a61212cf634a2ecd1e87dfc0d7f2ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c
! 56a73c2596ebf59138e79d4ef9ed3fe1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c
! ca9687de39fa00ae2b785d3187c47946  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c
! 6ba12538c2fd8a07bb201d4c31e536cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c
! 3d6832cecf149789eb913cd64b50bb94  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c
! 3bd3c9ebac1cef69c823b3226e2cdedc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c
! d32f93a21706a21db4790dfe04dee141  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c
! d56d34d4c880add51eaa387f9aa35943  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c
! a82df5545a65e99b95d7031ac6bf2a67  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c
! 739f5fcdfc3f8348012c61206fd4c7ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c
! 1c3e930827d4000b2358f2a3e205ff66  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c
! 20ccf5a4a466dfe05a038337de4e607c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c
! 3d2a2ae4038436b4d3259c3dae853ac4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c
! 14e0145561def42d2f88f44ae03f3cf5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c
! 53480228ba4b3481a8fde9265873f13e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c
! c670c83e4b95b09d163cccb702bf2cd5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c
! bbae01eb27cf63884c3ebfc56794245d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c
! 05fa4ec2649f2da9f167321331f66869  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c
! abdd6d418e4a0815e58ac0dd0b969652  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f16.c
! 68147fe44dd83ab5962687240c79efd8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f32.c
! b871f95875cb1ef73f9bbf9a9b83912a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s16.c
! 2a0d833ddf8de3c34c45a3a75bedcc64  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s32.c
! b0817c35b563a7bdb91b06b75fd6191d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s64.c
! c4918b0fd6233fe827a6f57d40048c88  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s8.c
! a1373bbe3010c67fbd13ba2348ab2893  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u16.c
! 325251392c9080f39fcf7e649d0ce806  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u32.c
! dbc16b23cdd9e41875ac609d202d39c7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u64.c
! e9fb69ed7150100a858c4cbdff46db61  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u8.c
  3a585fa7eb7e80f9a3ecf7fec8142e54  gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q.c
  57ad4c19250ff0eaf821f296f4aede43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q_m.c
  d16066e6e0f403efe047a6ec08327ce1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q.c
--- 60535,60857 ----
  06b19bee2309cf8aef602d176877594d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u16.c
  ad641ad69fd40905b75efc98ed0ffd85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u32.c
  ffd86e684e7fef863a6a1fa52fc3bcc6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vbrsrq_x_n_u8.c
! a58a443edfedf091ffc03bc0658937b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f16.c
! bc763d5167755ff49417cf02a44810dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_f32.c
! 7b9e27b1728e7d937c6910d33fd8dfb2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f16.c
! 90bc22c729069b86eef2b145158345e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_f32.c
! 226f60cd7641b100b012f9e0368f100e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s16.c
! 7d8a26bb0ff5a927dc8c17e66b4d5be5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s32.c
! 0b9f93e2c145ea2d82d3b13e8d661789  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_s8.c
! f9262a658a13b227128d820bedaf69ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u16.c
! 003f5c2e10316e0a9d4c48912308394d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u32.c
! 9c067c3bb945250baf0890d2abcc41b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_m_u8.c
! a0be6ca5b57d151534a7dab095ec131b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s16.c
! bb08d1003229bdceef302488af6c9b16  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s32.c
! bbe140fd4e3fde2de4c778056497a333  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_s8.c
! b94b1f776a0807fd8858f36d6e3e8281  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u16.c
! 2f5825fa3a8851f5c5f48d910508cc85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u32.c
! aa663b7712fa77e2365eb74bef330777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_u8.c
! e908e86f316f3c6664ba0ce36bca4262  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f16.c
! 7724c9a6ccc2a2973cd899048cdffd6c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_f32.c
! aed8b42c3b410ed11bbadb316e5df27c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s16.c
! a3d1933e627d216899f5059c78ce7c21  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s32.c
! 3d8dc924848f93acb19e4699595a2551  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_s8.c
! 8e17f679168b5bdf79e0c30a766cdd9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u16.c
! 389d50473be3eea351142507785ca92d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u32.c
! 75ea00d0772fa08d5d9d6007bd711891  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot270_x_u8.c
! 10ca99d1f7ec330fe34b7704c03fee6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f16.c
! 91c92dee877ea04f1456e58434a8148e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_f32.c
! b69dccd79322b2b12a3f26e4ae24a882  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f16.c
! bb0f4a3b32840120739203d01932286a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_f32.c
! a696a42b814a5d5047cd2a2c65f44be2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s16.c
! c7a4614af164c9ba4c9495b1e564b9d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s32.c
! aadda103f4c555b2fda7ed1c9f400f23  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_s8.c
! 2e87e60687de1df18ed3ce3761857fde  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u16.c
! 401dabb7757368b88a79ecae0859b89f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u32.c
! e5aa439650fe0d1d6468829de8d66772  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_m_u8.c
! bcfea0f55b41a3e08f066fab3eab13d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s16.c
! 8f58a7ab1678bcb2a62be88cf4645762  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s32.c
! 18a5b1b7f6c7dc4df8cf3e1e7a016824  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_s8.c
! 7176ad1b0d0405eb0bf7fb543a37eb96  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u16.c
! 3650aff395ccb0fe53ee5f0959b60305  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u32.c
! 833f8ad4be955c3626815d856f689d56  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_u8.c
! 7fc92e76e325d472447611222efd7317  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f16.c
! cdc595a6f4f4ae5b8d0ba91ad9e6284f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_f32.c
! b5784678d7112dc0aeeb92f2b6eb08c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s16.c
! 7d845a7cdd27c33681733104daa72448  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s32.c
! 5072a8f83894a0b9f608d9edc8737c6e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_s8.c
! aac6d456493006a95b0902cd147b8024  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u16.c
! e8b4641f5e68625e763032d6976f79b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u32.c
! 742b68e3a830b5bc64628ea7bcbc8f76  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcaddq_rot90_x_u8.c
! 1b328bb5735bccae3421047285891dd3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s16.c
! 37e7a5999fcbc457e682cdb942607a48  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s32.c
! ee119279362861c9fb6ebd30295d0c90  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_m_s8.c
! 7b655302413cac811ffbc596c32e589f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s16.c
! f3d1a8c7a1361cb7f066f62680fc499b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s32.c
! 0d2a10eba33e9df8a26a75bfb7d761c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_s8.c
! e2674a4bbcb8dcfaabf0690495f3b163  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s16.c
! d7599ae172d963f137ce2077f48c2952  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s32.c
! c79cb9d0f04110a55e28a88d3d63df8f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclsq_x_s8.c
! 99c598f1fc5246417d95e582f94fe485  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s16.c
! 823f7f495951fe3a1963e9a6aa6a152b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s32.c
! 86a4323f915205f00322341ddeb52241  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_s8.c
! ba1646f718e89e32ab9b586c4f85ef9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u16.c
! baa931c88905816cd3926dc012488ce8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u32.c
! 8e78b403f1cda9d934c44f6ceeb5b445  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_m_u8.c
! 9bd44a4731ac0e4cba7550cd9b6cc026  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s16.c
! 16ba2b9c178cd6ea271b7b5333866022  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s32.c
! b5e457f01f286c614b7c554031bc3b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_s8.c
! d8bb3556ed42ed2e292ee3fb883b048e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u16.c
! ae141a345e3797dabbced411a1b78777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u32.c
! 004848852a7c6b771237ea2f95e41e10  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_u8.c
! 0a5e3e971a5d3660c5e779d622a5e78d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s16.c
! f7fc0817dffa95a7b564bb3189d9509d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s32.c
! 98d7b561f755e25f4ab7d0e967a7cb81  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_s8.c
! 5b3119714f26c9f52615eca31043617c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u16.c
! df04084e26d324ef65f23c35145b63d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u32.c
! 8b546323993f3509731be70f25774af6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vclzq_x_u8.c
! 572c964866e41aa8d1885e6dd3d6abfb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f16.c
! 1918eadb7d42be226d118582ff714466  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_f32.c
! 4374efe81346e362e4b8c859adf809b9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f16.c
! 38e8197bedefede6a8f5b96372ae14a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_m_f32.c
! d8a1803fa84826186f75856f32714444  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f16.c
! fe8cf9f52b27bd273a396bc6aebea98d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_f32.c
! 2f47d757907ee5d08d672ab17d559737  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f16.c
! 24c76e692db32652555ef477d36ac1ac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot180_m_f32.c
! 74172e24b5fb1453547f20233bd6f438  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f16.c
! aca78caa162ce1b60cb813d02f43673c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_f32.c
! 55f3a2aebdaee734c148fb526867381b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f16.c
! 74f30a4c7b1b86d9690f7fd30f3da836  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot270_m_f32.c
! 1a68666ab67209f5714927b983bb5991  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f16.c
! cb69f8961e9a03283f9e8e99b8e8de6f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_f32.c
! 8c2c38c10ee6454bab0d1a1fdbe8b67d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f16.c
! f3b2eae0670e33c394e29cc73f5533bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmlaq_rot90_m_f32.c
! 562d9f27e80c89421173ac64dba44c3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u16.c
! 52da8da89bf766519ce061588d72d758  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u32.c
! 8d54a05cf9b2e550e38abdd50a2690ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_n_u8.c
! da8a42f43047b5576986d68c0ca39c2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u16.c
! 5f3f962e88f8221536af4303933778f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u32.c
! 4a0951aaf89687b6fc02b8754990c257  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_m_u8.c
! f80f832b9621e8dba5c564e045176946  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u16.c
! 52ccd2dcaaf3057f82aaa310cead29a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u32.c
! 37f3434684d0e0c0f124355318346862  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_n_u8.c
! f46b0fa95884cd1a19e5d83aa46bc42a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u16.c
! 86bc73dd5c56c12d88ce2effa732fb80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u32.c
! 20c2060ceeb91661de625dbadef204ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpcsq_u8.c
! 04d091f819a9c72e110c81acf9e14ece  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f16.c
! 7e26e937d339c5798f24cc5e3bf14405  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_f32.c
! dbbf48ea4c3d0e15632224787152d46c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f16.c
! c3e2536c745c5b3962807f7fc39712df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_f32.c
  b645efed5040a8147ab3cbe10a7439e6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16-1.c
! 6831f8dd6bb98f4415fe486cc4a3bc98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f16.c
  5481db2a7bdf7fdf4bb0fffa8a3703a2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32-1.c
! 62e42d018d7781ee7499fb5cfdc6338e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_f32.c
! 755513df91cd947cbb98db3ce877ae07  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s16.c
! ca566c9f31c7cba2a77c9c39de75129f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s32.c
! f190071078190d894878f4a78b1f4ebe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_s8.c
! 13a0da9db0341b0e9b1c117dced2a77d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u16.c
! fd9ef2d4725aea4c673fbde9b84c5ec7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u32.c
! 83a1dff1baabfb00970595a0473c7793  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_n_u8.c
! 419b83ccd44af8161cbe2713787d9a84  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s16.c
! 78de4dfedaaf9572bd14b69449c03eae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s32.c
! 49533d4375dc4f920d9e46d4d262b67f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_s8.c
! dd9822317a50df93ffb02f0ba518afbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u16.c
! a38d7d776a97a72a8ebfe39106058642  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u32.c
! 40bb1f959169a03ae77b759439a2ac35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_m_u8.c
  64ebcee365f72d2b4617f30a874d1200  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16-1.c
! 60c9a7f404f41e1332524c16d2615d53  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f16.c
  200ab1f4410b9e618de0dbe77408781e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32-1.c
! 6e7c407262068d83c889aa13a6e09cf8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_f32.c
! 0df0a1c61a4f06231aac7513d731a8dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s16.c
! 5504570139574570fedbda5658f17e92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s32.c
! a9c8da29a97aa6968c3645b3890424e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_s8.c
! e6f8404cd54faf903de5e8baf92018ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u16.c
! 9fe93b4b2ce10b84400ce063e9b79089  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u32.c
! a9a4c985c1672db5c773730988f825f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_n_u8.c
! 1b8609da7c18a4907dd62b6e40ca7865  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s16.c
! f0923da6dbc67e4cbe15ac20d975b878  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s32.c
! 8cdf6c0d2ea856ea0605ab1d550f1501  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_s8.c
! dadb159dae661b21ae418b494322dd9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u16.c
! ab390c489da33d9c263117eea20fcba2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u32.c
! 42a7c8b9ee1365446b90085092e23aeb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpeqq_u8.c
! 202f584258f64b79ba00988377ffa219  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f16.c
! 6fe471b45a915f4267a542080f02fa34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_f32.c
! 31fb262f9bf1b28f48945d76cf034668  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f16.c
! 45bb1678656d1eb25a5756a530f617fb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_f32.c
  5ec5df57e830abc5794149ae054d2053  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16-1.c
! f84fe47eac412bcbb93f4bd43c879ae1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f16.c
  50da8bd1ae31dd83a46dfa4db86aa6aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32-1.c
! e131f0f90d2ccb1e8eff81ef4b75dbd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_f32.c
! 7622b330fed2ba11fac0a033d13a3c5b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s16.c
! 22720232b742c4ec74f28915fddca6f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s32.c
! 5ea77cdc995bbde6398efd6ad4bf9903  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_n_s8.c
! 11625030b4a4a378f6a8b75616275571  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s16.c
! ffbfd3c338a76d17f67c42f5f5b90f3d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s32.c
! dad552ad6969cc4f08eab40d2440f4b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_m_s8.c
  1faa84b7aadaa19a8b49b0397a49a340  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16-1.c
! 05a35eb6ba85757fc984454351af56b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f16.c
  9226dce650e2cc62554bb4f38da0e3ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32-1.c
! ce57873b091f53bdb5879e7755b6dfcf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_f32.c
! fbe4e1fa3cbcd9441d8750a03c24a2b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s16.c
! 82249d796ce4aa5effd5dd89ee869f64  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s32.c
! 1b457ec0ecc5792cad05e8bada9d869e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_n_s8.c
! d0175154633929985675d64e3f255f7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s16.c
! 82fb0531a000e59ae7e0039823502cb5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s32.c
! 52375e34640ea725c7cc55a3f5742210  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgeq_s8.c
! cc3243d5a31249c6a83123daeed04898  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f16.c
! 2228f76bc7896d5cccaefc9a3bdb4bd1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_f32.c
! cb2ffb871d1d786cdca441eaeef77dab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f16.c
! 4babf84171077cbb2a76bf45b3e7acfa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_f32.c
  722591faa1232b4bc455b235e2bd854f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16-1.c
! bb73831834ace257ebbe4d0122ce856d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f16.c
  ed6ff8954243c6f1947ac88a8fd52e1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32-1.c
! 5c77c8f5567d74ec5604a3965879207b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_f32.c
! caf291b1574b7c0e124de662faa9ae6f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s16.c
! 5a094325f7f51df7963970524d47c211  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s32.c
! d48603220c1ffe7d000eed5580f08ecc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_n_s8.c
! e26c1fce9a5cfbc4261ae1eb72b60f2a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s16.c
! 497d72083d91192b45f6c7e2257bc168  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s32.c
! 9e0ce133a8cc48accedce9634834ca52  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_m_s8.c
  f2e4902be60b05edc4037d46bb6c5be8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16-1.c
! 8e044eac385ebeab781eb76ef1f9b741  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f16.c
  a22f94bf5995abd783c0519816ce4ce4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32-1.c
! 95b15189dff745db7593f825becc5d60  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_f32.c
! 3d59ccbd17d243df01e087a600bec0a5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s16.c
! 60ac0f32b7176d593199fd53d71bd703  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s32.c
! 43d631f28fb9700bb560496eb5789457  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_n_s8.c
! 7cdd7ce7f35e1da2fc00f51355a19bf3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s16.c
! f46ddf6255f18187cb3e665dfdf09a40  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s32.c
! 71b6d437c7835da5d6305a7994124475  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpgtq_s8.c
! b99b946c9304485e1ec8bd86e969cf3f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u16.c
! 41d21888c2185f62ff0dd8afde960c97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u32.c
! 061e42aaa7a4b3e4635b079c3b4b44cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_n_u8.c
! aad2873d64aea6cc739c7810c2e4a634  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u16.c
! 1f5bbd2b2c5930407e5ed19c28d9b05c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u32.c
! c89fd9c6fcf2058961efbdd5071e8bd3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_m_u8.c
! 9bd67866d59e639d1601746900e3b325  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u16.c
! 005fb22b8a12e385e72ba51ecd59d677  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u32.c
! 18166394fc2d066669f5fad2c72da00b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_n_u8.c
! c068d88973ee01ce91272f97c53ed51c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u16.c
! d742b4fcf148ebfc095d8c2f2f3d0f63  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u32.c
! 4438d7600756913c6a3dafbcb87e7b7b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmphiq_u8.c
! a63f616dfafa6a6d85be90405d8972a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f16.c
! d908b5f1c918c3621fdc9f3193825afb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_f32.c
! fcca8f116fe3c26a47fe37ccdfa28d53  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f16.c
! 20339f8e75e01439d04025e0652d2284  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_f32.c
  fb590235d03662fcc3caeaed2af1a224  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16-1.c
! 8cbbe74e30be0f8f1a4a414a40eccd6d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f16.c
  9578f1500a9d7e90b39b781846243e4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32-1.c
! 34648ba3baa5bd5fa94e74a22aa4d106  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_f32.c
! 6f4d1e244d0a011ac57d864111ccfdbb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s16.c
! 87b0482a2121d79cde04a6c60f1c6b82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s32.c
! 7557238fdd0747369aa9b24c41d675f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_n_s8.c
! 9399d7a9087e73100637c825c3989772  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s16.c
! 9dfbcb3682f3fa25cfb5242eade0fb04  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s32.c
! 2fdff391555e5ba6408b16846a53e32f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_m_s8.c
  fbc254bf0987cb3969ca8fad96a24898  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16-1.c
! 2aa81f0f3197aeb31b8d461928cc3e76  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f16.c
  6c8227752b96607ad6581e7f48cdad99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32-1.c
! 753df343c15ccb2f41bfddca7c6426c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_f32.c
! 542898313698b508153898b958856ddd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s16.c
! 4fff35de0d1db3c850afd9a4b07e32d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s32.c
! 5a3e17f85fcb6556b36231cba46da4ca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_n_s8.c
! 4601180fdba6c88955fd09b7c5affbe8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s16.c
! 2ff3ae7d99fa963ebc860ce1c80d2701  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s32.c
! 3c045a64f729bc8dbfc200e3a6028395  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpleq_s8.c
! 18e7314da5a1d2b997db94179bd93992  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f16.c
! 96a46edf58400e958b125a211d08366f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_f32.c
! be573f460a5e81540993bfa6edbda121  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f16.c
! 920155695cb9a5d081f9e10db83634bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_f32.c
  d3d023250a43908857f51b4bdcbeb5e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16-1.c
! 4b5cf55e251b7a70d41cd50017a2ebf1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f16.c
  0e4f57b9c2da6ce6da8844a4bbc54486  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32-1.c
! 8864b55bfa6066cf82c0b10028e7bb44  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_f32.c
! 6c436e1729598e8e49019342e0d24519  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s16.c
! c8516648c0f216555fa3ed8ccc8908f1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s32.c
! 74d850d1351a9408022cd122d8a183a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_n_s8.c
! 4da35f51be62dbca2b78bbed034f24c5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s16.c
! 59c86ba506931a4bff0e80c35a33e19c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s32.c
! 4c0cd490673e474cd2dfb2df7d257cc9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_m_s8.c
  208cb6b79d545aed44277aa7e7867c87  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16-1.c
! 896ffa8e20059ed96d7029282f86e7d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f16.c
  992f3e9e9f759ca52e5fe064a26950b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32-1.c
! 9d7a59ef5f45d98ddd413d54eee96861  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_f32.c
! 6055c1a93d3b035ff494cfb93a1010b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s16.c
! ac25dc23a3f2a313e7833fdb51586dc5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s32.c
! 73514edae820dfce2ab75600f90fe675  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_n_s8.c
! d8c45c73de5104c44a3f9df0122a20e2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s16.c
! bcc4a901b370513571fb1735bbddebc8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s32.c
! 0d6f54946563299dd0276b90414e5969  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpltq_s8.c
! f8fc06f3104ea0d11147f790c5f972f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f16.c
! 1b9d05081c8856f4ab3e788aab25c66c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_f32.c
! 43a05ca63b5724d172a29ab719f87c4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f16.c
! 2b900947a6f921ec81fb803e039d7d47  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_f32.c
  6a96cc5ea25dd7e8bf31a05fa440540e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16-1.c
! 1e2b1cc70b51ae45b287e8b0062dea06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f16.c
  315bfbc856c147fcd171206cddc07cd5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32-1.c
! 82b56384d686864fff657fd8967f3168  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_f32.c
! 65db8c6d6312b33c0e4c4db0392ba765  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s16.c
! 726ec9163b95ad2322e73c41410d63d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s32.c
! e0fe6ef39958de279e338e6c93ffe363  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_s8.c
! 0e4a93340323f3d7535dde230c378d47  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u16.c
! 70055dfa037d58e26681faa721d81414  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u32.c
! d938b4342448a7fed595c5f22c259649  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_n_u8.c
! 20a5d983dd45f4aae7188371a9f69c06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s16.c
! 67c7c6b2600b339006c963c5edada136  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s32.c
! babb589973fe8ee57f60fbc6fcdec2bc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_s8.c
! 771439ce55bfe1421044d5b1520a0949  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u16.c
! b3e22e65609535559cd2532fda9cc66d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u32.c
! d8b224ba70ec7846a4d67cadf06b409b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_m_u8.c
  c87e45dd2b50fb4e3ae022e63270cf1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16-1.c
! 943a511be6028b34818732a9b9041185  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f16.c
  6337dcb25f5a4632f0ca08e910c78a94  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32-1.c
! fa2300cadc1f2dfd87d50e1133783fea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_f32.c
! ed3b43f9d6fa5c42edee640261e53452  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s16.c
! dfcbdfcd6501b64afbb4b766b40de4c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s32.c
! f89060b1d360be62e7215bffc9b73fb7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_s8.c
! ed038c7e60e9503f72e7babb03c03db5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u16.c
! 832f0e7b88781795d1ca388632c3e1b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u32.c
! 3e28da74eb8f62fab5527314b7e3cbbc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_n_u8.c
! 20def7d1d925c1e06142dfeb45a12518  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s16.c
! 729eac6db9d44ac7c00479640749ac22  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s32.c
! a0dab96fa05a82704030a817f2ac1727  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_s8.c
! 5367ec5b29dce201981011d99e959e19  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u16.c
! 9319ab026e1393e704d1abb2953103a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u32.c
! 1e7044672a5164c0219be74168f1dd4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmpneq_u8.c
! 019f2934c4baa6df61575278a4c49f7b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f16.c
! b8a2fe51584c219bef0f4b13c6f8fee3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_f32.c
! babdb2d2e15f0ed8d51615489d394774  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f16.c
! b65367515df760237195053b309683f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_m_f32.c
! e577606bece1177cacf8b7ecd787c738  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f16.c
! 7d090449652a0b3b6bf7d4ff24d6b889  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_f32.c
! 2d32177ae7f7adcaee30d6b104044972  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f16.c
! 55074b7fff2f169d90fa74520bd4455d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_m_f32.c
! 139e5b4f8a84e106525274f7d82d11d9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f16.c
! 4ae4123a2c0bd89c5c7bbfef2e72926c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot180_x_f32.c
! a3d93d67d286c37a8993a3268f02c454  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f16.c
! eef0a6547a686ebb8cff4a1bf7c56378  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_f32.c
! a48430e86fbfc3c0342d082227a71560  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f16.c
! 9f7dbf7b1253b0c6554e87d585a4551a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_m_f32.c
! 183d2cfc341affe0a4c9c5079329f815  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f16.c
! 537df86012373ffb4c016537373916c7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot270_x_f32.c
! 4e297476575edea70cf267d76e12ebf2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f16.c
! e5de9ca952d51367f94741b25f3d6237  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_f32.c
! 72a326f6825a86a48946d83788262402  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f16.c
! cf71b22154cba1d18ee8b0507a036a7b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_m_f32.c
! 8e03bacffe0ab4cb5139acbe39fec8aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f16.c
! cd137b49d662004a2dae2ed2ea238ebf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_rot90_x_f32.c
! d19f287591a5193b9c47ed7336b7f81c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f16.c
! 43a6ac724c479ccb862925d909bdcb0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcmulq_x_f32.c
! 397a92c55b4b9898b7cd74b7e0e4143b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f16.c
! cce48cc0da459ecad4170bafe8aa7719  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_f32.c
! a588b027bb590185fad22a0c594a5fa7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s16.c
! c14a574f29894a956ec2b7b60aea092c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s32.c
! 8989e6366b9d1d81e0f6579487036e53  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s64.c
! 4466daf73f4af8e7dc8c8c27ae833c7f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_s8.c
! 8e1e9b899b47c233dec3457ad6d93b95  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u16.c
! 0656d067d62398dbd6a5f96e01a1db8b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u32.c
! dae908e45799833d40c0ec552e799783  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u64.c
! b881537633b668318e297956ae4606da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcreateq_u8.c
  3a585fa7eb7e80f9a3ecf7fec8142e54  gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q.c
  57ad4c19250ff0eaf821f296f4aede43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp16q_m.c
  d16066e6e0f403efe047a6ec08327ce1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vctp32q.c
*************** f67b0964a793a77e7970dd4cd5409133  gcc/te
*** 57530,57595 ****
  fa2270aa9a531d5c646e8b125711478f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c
  4330f1050c112aa80bb61d76feb4a7f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c
  2d2d9bc2ac8ae02457ed966ec99fe4e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c
! d5b556939a95eb83bcb56fbb54bd4cf1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c
! 0d7a4ed61be478ad94ebf0506ae6b9ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c
! c7c65491b3b21b5a44a074bcc28b09d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c
! 6d581917bb61b39c4d76a175ff41b3d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c
! 6ce7a19d23db35c88ff329b784708528  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c
! 2e0eb1c09ec37bf92e84f595b72c1620  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c
! d070e26be667e68be489535020a4381e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u16.c
! f5dc08ead31592b3b7fe2cad98530530  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u32.c
! 4c36e7ef86f516fa9d4818c1d47444aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u8.c
! 040cb4d20b39d2f5ae9956b81e2fa242  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c
! 79a0d0afc3c1525e28b41eb38b56066a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c
! 20bf472cf4ac9026e847bd6d34f74478  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c
! a085bd850f480c24a5db771a1bd63de1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c
! 045fa111ae28c0d8e478e72c069ee006  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c
! 834ea74812ff8af30ff5e300aa9c65d9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c
! 89bbb447c6e68e00142ee4292b3c9ca7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c
! 7c2200e94d3df279e09fb444da5fd110  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c
! 43c526b59804f9c955bba6ba1740e415  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c
! 8a10c09d398f2c17f2614657cb97202e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c
! 6120f40b172c4eb7e9b88953e4f26865  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c
! ebd611fe5ac246dcf792ce29a47c7145  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c
! e1e177cb280e092d73c47ac9b3ae9c7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c
! 1fd04fe401a165bc42090a15bca9ba0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c
! 99aefaa763134f841d0d074760084a98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c
! 3544d4b3b520d7b57206c1a14f370335  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c
! efb85489ba73088c107245705285e0f8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c
! c9c539b72b5b2f25128830db34acd858  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f16.c
! 851f0dadb246c64322d67fc53c50b712  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f32.c
! 11f1aed4ce3c81b86a6cd471420f8b96  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s16.c
! e77f557a62cfed6c4d266cc73d663683  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s32.c
! 3b4712df65a384e7d570fe24b40ac3cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s8.c
! 188a502f3caadd2c86c4af432a6ba4ee  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u16.c
! 02d442af04b68bf14e5bf497aeaa5782  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u32.c
! 4459c3d89753812c7d4c6eca3155a237  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u8.c
! 40e639780023c9767d0ac3ace6152ce2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c
! a391849634a496b037918b31859ac484  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c
! 941f467bced34e7706444d4e5f45e197  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c
! 739bb9488e2f9ee3b4cb2a330b8d0d9a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c
! 3a81307ee9093c2d72759751980d7d29  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c
! a5482d735a85b0c76b544f61d9e9debd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c
! c58a9741f4df6d5d42e8a56f8a9bcbda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c
! df92f4c586294a62dafb63ba0773ff8e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c
! bde3e189bbd2de63095f2773305be956  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c
! d4021fc67d3e03200427d1dff17a21b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c
! 44a1614d2ead4ff470a2a65cdb2b735f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c
! 85850bbafe6afce2e366c8aa808bfbc2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c
! 23cc974a48b79d38fa4e6038ee8513d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c
! bdd5a57062effbe2b9f12a3686a4c452  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c
! 4881da07b760ecd526327a39ac0ac6a5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c
! 9fd8f7d98e13f6d30918bb5237c3dfa2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c
! f1c365c1ed8de5a4cf664802c73f12f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c
! 4f1368735830d9bc6c82ea5558895649  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c
! 5c0f5bccafdc42c09fa53972d1334b62  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c
! 47a22e29629d9e1a4701603d5bbaca0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c
! a5663f6a817b9008b550eac096a6e4e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c
! 7df22d657b30f3e2450b7357eabc808d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c
! 7521a60122d2ac3e1bcb8d5ad68ea550  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c
! eb9e5f7ed560df163905d503e49a13b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c
! 899605e895da655b7072b501b85f62f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c
! 0cd98e78ec632e39314b862eb50dfb95  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c
  1e7aebe66fdd3c8e80609571151bcc3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f16.c
  4450e04d18db11a2ca23aee228ef9516  gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f32.c
  0fa06abc9ed007721409294c8411400d  gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f16.c
--- 60966,61031 ----
  fa2270aa9a531d5c646e8b125711478f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f16_f32.c
  4330f1050c112aa80bb61d76feb4a7f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_m_f32_f16.c
  2d2d9bc2ac8ae02457ed966ec99fe4e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vcvttq_x_f32_f16.c
! bf995273adc1e67fe997e6f71f06ac82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u16.c
! f68fce78f1c3675368ea38e50049f2aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u32.c
! 73db69dc369e64c8f8fca972614cc860  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_n_u8.c
! 24d6c8490d94020a725a67717044b759  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u16.c
! 7135a2487330927b77a087be35c4d8e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u32.c
! b6ca6abd2975e7c80dac0ac7d9d9a667  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_m_wb_u8.c
! d9b212087e03421f8314e5e725be4609  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u16.c
! a1381436b3916edcd1548f5dbf182d40  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u32.c
! c9e89185116dca6a773850e30ef3aa68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_n_u8.c
! 743fe17e04bfaf4bbc983d9dec99016d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u16.c
! 62ff76e21df8b958f3cd98f121dd880f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u32.c
! 02658544d19305d0f1b3906c569422a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_wb_u8.c
! a2a6462f7dad95340c898fc32890d4cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u16.c
! d67effa94efb6df338f9257428e8e398  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u32.c
! 147c69113cf2dd038754b5e73be7de2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_n_u8.c
! 584cb108080769a93b9bbbdec85a8700  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u16.c
! 902a6a4ea6f0a883ab3da9419bdb27b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u32.c
! 2a0e8edca43e5b584c9f4b3876a1ceac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vddupq_x_wb_u8.c
! eee1f0db49f2fc0a7e9ba421e216433f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f16.c
! e793bf622ca0edf7347b76f5ab8a7b95  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_f32.c
! 89e394b063d5316d83567cd28f65e182  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s16.c
! 193576ba817e78f2869e063668bc1e65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s32.c
! 32c11f7184cc28bce42dfe363c133b7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_s8.c
! dc3bbe82f0ada40b2478603578aa8315  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u16.c
! 697a31f795106526b183dc7c8cd59d31  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u32.c
! e123ffb87aa6243074119f950a80a899  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_m_n_u8.c
! 3348cde416cb2e050ca3e7dabc1a3a47  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f16.c
! 5edbb8db84654f2ea6cbcb94c484b411  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_f32.c
! 583e0cd6271be5bf6c2dba724be5f0ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s16.c
! d0e773ac795d470d4097b264e9ee7499  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s32.c
! e243e3f93d1da2652e43be28693b1fb4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_s8.c
! 22f608145f9a0014b9ab4e0b8c5db361  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u16.c
! 728b7c19e99a060efccbe577378191e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u32.c
! 30efd51cc1c768f1d7d53a2b6aad8b8f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_n_u8.c
! 9fdcb845b11f89c868101d5a6ee7d721  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f16.c
! 1c447195f3aeae143ec7d3eabe774979  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_f32.c
! d4f456ca928c904422cb98eab0522272  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s16.c
! 3d37397993364e8328cb78f7565c0756  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s32.c
! 074f4041845ae60e037a91d2f2d664e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_s8.c
! b69ae74e9837313d281bca2f9e61513c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u16.c
! e3f60e81da7b88bc2f02934cbc2fa837  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u32.c
! 1db93bc353932f7f224fa81f56c75f74  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdupq_x_n_u8.c
! 4c23f55d6612277e6b2dfb173cc662ac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u16.c
! 8c6c2d59e4cc6e27f5ef6cd22558e480  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u32.c
! e69fd60528b58f1ff784453a5ce25357  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_n_u8.c
! 9ed97369a2792eb3195bb2744c341e78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u16.c
! 55c1eba397837f8577001d9dc5057dcc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u32.c
! 6a3e64b27f1151080fc66728027fac9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_m_wb_u8.c
! d9afebb0a62a83db7cf5580d217f3368  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u16.c
! 72b1a20173f517dc1500a3fd9875ac24  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u32.c
! bf615847479b081df22eedf27bf22b22  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_n_u8.c
! ca5d85eaf4c9f949f07c8f8190b61edb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u16.c
! 4250f15a8444f8a88508d0cfd59722c5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u32.c
! 368bd45d53ecb990817a516e74c4a7b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_wb_u8.c
! 9ecf68ce8f1e166c13201dbb644d36c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u16.c
! f324d05ec647f8d9b4ba206d2f743842  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u32.c
! 9b36f33560b26a2cd4a1960bd890a7cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_n_u8.c
! 16bacde022c174ffc4e25a52a5d1d7e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u16.c
! 61fd65371cf0b638bc259e02da130522  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u32.c
! 08c892cc318655498614e6d30a283725  gcc/testsuite/gcc.target/arm/mve/intrinsics/vdwdupq_x_wb_u8.c
  1e7aebe66fdd3c8e80609571151bcc3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f16.c
  4450e04d18db11a2ca23aee228ef9516  gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_f32.c
  0fa06abc9ed007721409294c8411400d  gcc/testsuite/gcc.target/arm/mve/intrinsics/veorq_m_f16.c
*************** ecaa7ee0003a6362e2dcf3efddb70cd4  gcc/te
*** 57627,57635 ****
  b270290ddc9cd20bad6b9f1ecdfa1946  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c
  5fed7229bb583f2d04cb23ba05885305  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c
  7a86cf3b6f4d283745469015f4eacf98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c
! 22fa68d064c5902809ee064c075712a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c
  39eceb1db90deeea31f7ffc808101d67  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c
! dd02f00742ef7d2fec2ae051fa2c7f7f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c
  429eeb5518343cea1ce9323b941a3a4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c
  c30556896f378b62bf2cfebde81c053e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c
  ce70a937593f2667cb28f01c0e5435ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c
--- 61063,61071 ----
  b270290ddc9cd20bad6b9f1ecdfa1946  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32-1.c
  5fed7229bb583f2d04cb23ba05885305  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmaq_n_f32.c
  7a86cf3b6f4d283745469015f4eacf98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16-1.c
! de6b044c7f28bb37ea219a6c4e179c28  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f16.c
  39eceb1db90deeea31f7ffc808101d67  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32-1.c
! 89788c2cae878e7010685f928eab9abf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_m_n_f32.c
  429eeb5518343cea1ce9323b941a3a4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16-1.c
  c30556896f378b62bf2cfebde81c053e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f16.c
  ce70a937593f2667cb28f01c0e5435ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vfmasq_n_f32-1.c
*************** ca8fc175292b81b70decf89029745e9b  gcc/te
*** 57648,57689 ****
  ead51aa932f54ce080e763a9d560716f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
  a3b7d26a1d14371254a3c36462110c35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
  555de40671413a541c288777ba86e237  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
! d87efbead358ad1516f1f5c100835423  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
! 871c875f259858673bbbc355f3d35ba4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
! 9e444f673f0946492598b20ef850ea5c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c
! ede3a86c08b3a3a48aee85a8daf80185  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c
! 807e0d0e428be513f0f28b241a7b28da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c
! 08e42e7800338b181de4d9c931beaf6a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c
! 9caef6cf67d57c3f58efc9375f574df0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c
! d554f626b1e9d31dda74a18fff1aca0d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c
! 763bc4b6b70be423425cdcc2c57ed3a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c
! aab40c3f32e90625af26349c081b9aed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c
! dec8d8beda1bb95728ab9ea87d315c07  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c
! 1330cf88c40cbec655722447d5fff357  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c
! 449590376d031ac77d88c2ea8fd300d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c
! d02d15377d04bc57867595f9656091f6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c
! 6325bf9ae532f87802ad35082a817a06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c
! b2359f2a0236b646bb70e934eb7d0b00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c
! 8223c4d41fe95c24d30a025f80261245  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c
! 2ad364c8722f49c4a56451c5b39bfad8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c
! a8ea570ae51961183482ef53690a6884  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s16.c
! fc1a3c18d0bbce5ab5cc5e29465d7889  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s32.c
! b8f992a15cb5d9eda966bf08bd40eb4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s8.c
! b179163d0896c82184336f3d1b306426  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u16.c
! 1123ae820f069904a8581acabec608ac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u32.c
! 1c5afdd194915c31b1b275a3de8c09e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u8.c
! 3b8f102cb99ada450028a456f2c2053b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c
! f41f90bda697ae72693ffcc25e637253  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c
! aa55b614a240b9c497189704616588f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c
! bc141d142846078ee5520819ecc485c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c
! cc9cb61565b019e5d06b32d74d9d2721  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c
! e36c6e1fb2fde9475b8fd596f2f5310f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c
! 223161d58c7cceabffe11475a9d73a7b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c
! 14e97fd389dd3f21752873571152e44b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c
! c0a94d74e0c1da50a4c50489aec81178  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c
! 41e960a334e815d65db91e690c1c53e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c
! 11600ce765843e87691d49c6c697e779  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c
! f8e89e3c2304d5fba5c76b9c2428fcf6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c
  b1bd258648aabf6f95eb6f8a08ad34da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c
  fc07f78d2fb7017df79dc0fa139f2f57  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c
  ab9c2a6532edd9f86217e6bd15db21b4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c
--- 61084,61125 ----
  ead51aa932f54ce080e763a9d560716f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u32.c
  a3b7d26a1d14371254a3c36462110c35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u64.c
  555de40671413a541c288777ba86e237  gcc/testsuite/gcc.target/arm/mve/intrinsics/vgetq_lane_u8.c
! 456367251ea09d02e1b559ac0fda6cd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s16.c
! 666a634c92812f22f3e579287bf86de2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s32.c
! 90add2bcd9e418fec40810e0db7340d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_s8.c
! d57324637db36c5b4e6bcc454a896f1c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u16.c
! 0de155c33329e483935449cd9d8c25c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u32.c
! 3644aea2fe2a88824e8708f5f146e910  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_n_u8.c
! 128ca3d7031556f0bd6663aa87c12249  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s16.c
! acb126b23cb871ec42114d932a455e9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s32.c
! 76cf1a2b744c36189426e20dd2706d8a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_s8.c
! 50afb9ff1d61b682d5111fe376ba2a23  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u16.c
! 4a970ce2b8be7e77d8b3e7eeecfb0a00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u32.c
! b846a0757030e34489132936a076ecbb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_m_u8.c
! 535a2ebecb4fbd44ecc043d531c6ec7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s16.c
! d5077eb63316eb1050d876da751192fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s32.c
! 67f42ea4b856374964c43a59cb5ef716  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_s8.c
! 8b2df3f81de68e4e416240f94dd6cf31  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u16.c
! 9c444ddd9e0abfcd4a249432a084c8f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u32.c
! 4ff28f6276971eb247bab35346b550e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_n_u8.c
! 3b45f749cf4818fc9ca9b82ecd7c88bc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s16.c
! 9a015f49c71da40cfbc1a77391608bea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s32.c
! cbfcf59eac955310d733ea04c7ed6232  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_s8.c
! 8e513eb9459d596311c4e73ac2ac7b53  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u16.c
! 5d7ff0efc1e7fc048fdf1488f993fe9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u32.c
! fbae783a4f5dcbb2dbce0746fc90a628  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_u8.c
! 923c98ab40c93b228b24ffe7e1dad59c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s16.c
! 1f5faacc29607510e64a5e4a85f2df93  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s32.c
! a24b4e17732fc72176744a5697ecf92b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_s8.c
! 97034ddbd0b2711c5e9ae2729b6a4ff2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u16.c
! bf703227da56db2226152490331744b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u32.c
! 69ca3be80fe9e9724ee79ff5a21330da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_n_u8.c
! d4161922c3b256f3d4eea1f539c34b3d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s16.c
! bbbfe15716d45dd76174675ae30d9478  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s32.c
! 309a45c2f52ea5531b9956488949dae0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_s8.c
! 00ebf3d09cd01185619d68aec726583a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u16.c
! 65f751a9b4bb6abe527e24a121361dd9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u32.c
! 6aa60f9facb6b66431f443564a0f8411  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhaddq_x_u8.c
  b1bd258648aabf6f95eb6f8a08ad34da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s16.c
  fc07f78d2fb7017df79dc0fa139f2f57  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s32.c
  ab9c2a6532edd9f86217e6bd15db21b4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot270_m_s8.c
*************** a242eeb22a7e8c3c3e35eec84db26ede  gcc/te
*** 57702,57779 ****
  3e7a7d591bb84d1444af6653e7018ab5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c
  1c1f57b700b64ff218dfaae59d8a6f9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c
  90fe89f0f69dee4a1b694f91ff894dea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c
! 75b1f1d07c350f52049a7b7213d5316d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c
! 069c71ee30c40ce9637494653d682681  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c
! 22001dee5f894096ec6cc694bf6a438f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c
! 8dfb5d387da4e1e7846cf1fc5576ddf3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c
! ee721d001c27cb56ec8824707bd70687  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c
! 9f12c48cbb19ada6a82d53b5c10653d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c
! e6e3c0e053abacfe4677b93fb7a81284  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c
! b95fdc381537af986a1d50a60b122db6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c
! 0955e1ab06ab71392fcce9c4d8aff6d9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c
! a24a0fd5039e57bdc79ebe5d3a1b7d94  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c
! a55d8910cbe63c6dd7643355a941466b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c
! cd354c277dadc77fd0703c155c5c5db4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c
! 966bbfd644dc3864221baa39bcc21eee  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c
! e3245419825718f9e119b737eb7d27c6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c
! 95cab0eb96564e5db051867af2623ad4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c
! cb524ef416719dbc2124bdbe2f343fb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c
! b3264e5cbf33e2b6ca161d02bb8869df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c
! fb8f30c5a1474e1d276a6572c7ab8760  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c
! 67461fa522296571d0f681b938a8b467  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s16.c
! 0dbc3cfdc073a60e92c295d6004e4446  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s32.c
! 5a433622afd8b809f2f100ecd23a23fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s8.c
! 72875095aee6429b69342f02941f40eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u16.c
! 3595ec030e4d093f0484f59350e22b76  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u32.c
! 5bbe5ee6856329089b07d7db4bc79715  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u8.c
! d6d325c0f662c10643eaa9967f7e235d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c
! 90cd4ea3f1750e02154695fe73368a6a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c
! 8d241d7825ddabc13fafbb9bbcbe04aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c
! 6e5ff848a0e5aeeed3321573bd336cd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c
! d55955af69e5fa2b05a1229fa1175dff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c
! 8413ea3fab329ab960b192f400a45956  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c
! 0efc61fc4201735faba6074b31cf9ae9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c
! ab3e827304ae35d8ec55cfa11b7e254f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c
! fe144e199e449fda0e045243641e150c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c
! f720828e1197309f989ea3a8f9efab20  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c
! a65aa41d0e693e2495fdadceed3957f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c
! 63a8eef833339998342bc73513088bf3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c
! a8f69b94d057de8d2456d22b07419855  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c
! c82eb00e357c28852b41ad017190ef87  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c
! 87ecd6ccda5ef389016cab970e0ae86b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c
! e9cab2df491f42afd2ee91f716706810  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c
! 32a0e0431ec5f6b7ce6007188ab5f909  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c
! 4be06948aa85ab82189e4b3bb4b82875  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c
! 2d0a5abc60e246341ebf88fb0b681a76  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u16.c
! 69136f1f76658f93f9fa9d5c52d9fbfc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u32.c
! e7a3347693dd3c814f5cf64059b39ae1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u8.c
! 84c224f10e051cf2a68916036621755c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c
! d0bf9c96c634db762b890fe58ee8c806  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c
! ae76faf7a1bbf3666a2988fa4aee27cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c
! 8156c0d157623e278d2254ed36a1d55a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c
! eeb19f48e9a43fec2b6f9e74ab435413  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c
! 1a5a818ff638964a841721e15ad95580  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c
! e506aa6dbb15147b765704621db10213  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c
! 8087a6ad503dfb3aaa3d9e7ead2379a5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c
! ca270fd4084f8a899f97c7ffc88b966d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c
! 9affd753432269a83c7bb9c8b1bf7382  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c
! daf827e8fe750b3d1570d3316383c0b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c
! 682796d2be841fbc936dc59a3395987d  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c
! 413f8141c8241479d41e781a032d50e6  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c
! 1c16d0887dfdfbdcbd1db818cadb6c41  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c
! 6ce86ac38b23fa1cba6f3ae38c03a435  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c
! 1d7cf459c1ecb83df35c04c9e940705e  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c
! d98b6a994d94c42b7b0b67211c567c38  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c
! d7b34e30e8149cfd223cdc61c7e5a88d  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c
! 53870afdb41e6ffd4247b7cde002540e  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c
! 32d011996408fa3dce0ae92242f35588  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c
! 3fd4ef56d1c4b4eeb8a60d6b8130cbb5  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c
! cf32e8e4fc90af853ebc4cd895e0286b  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c
! ca6f4afbe39629271740386b825440f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c
! dce4d25100be07ab57a2c607d1b839d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c
! 6681a93e27919282af3ceb45177ecabd  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c
! 10ddebe4873f39e9965d0934b601bbbb  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c
! eb80c87ff6563796c6ca1db8b86cf358  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c
  e09e10b44af8cdfb7910ae8a99a80b12  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f16.c
  f62747ccac97e326d67f64153144192d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f32.c
  b9fce508162a7e6e86df41672b5d53b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s16.c
--- 61138,61215 ----
  3e7a7d591bb84d1444af6653e7018ab5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s16.c
  1c1f57b700b64ff218dfaae59d8a6f9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s32.c
  90fe89f0f69dee4a1b694f91ff894dea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhcaddq_rot90_x_s8.c
! 659f8bf3460391d45407441ecd940668  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s16.c
! 5b76e1a794f6e32ca443fa182869bc26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s32.c
! 662e4920cb9ca39b7eeaf3e7a3cd62ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_s8.c
! b3a3b1a28e039e0b113ff22aac1166b9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u16.c
! 13f6178fcba00afd8eef93ee0e5302e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u32.c
! ebc89b331fc46f84fa4bcfb60494d465  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_n_u8.c
! 332712066b396086f987af4ee2d54ce6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s16.c
! 41440d61c7f785580669ca09723d2921  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s32.c
! 1a47840acb359e0610248da321958d01  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_s8.c
! b4e27c2bf251e556f4e8dc61a93e2ecd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u16.c
! 753fb55a034f5e94895a37411ff88900  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u32.c
! b5e9bba11ce92ead915c197dc652e3cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_m_u8.c
! 464953f2ddc9e0f3f3067da6ac25c2a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s16.c
! a3ec4fc3a057ba3ff1c2b6d3f33c2c8e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s32.c
! 1128772db6d8b7e59cb9040895f25578  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_s8.c
! 38c50f3a3a07ca43520b50ef89dbb573  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u16.c
! 1d70c2fa45d825bbf3405d0ca5e9a4da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u32.c
! 36ec60c1453c0653ccb852c678f6e4e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_n_u8.c
! 7873e6b639817302f0aa4cac3a90f3c0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s16.c
! 69df957e94a1109e868a5de1aeb6b87d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s32.c
! 02514c44e720c938fdb6d788542f335a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_s8.c
! a765bca5bd9d430fbec8b9c2873448e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u16.c
! b2072989e55aeceec12c99b7faa0aa80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u32.c
! fab9b15e8eeee6b1d10c34fed6c526a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_u8.c
! cae8e3cadbad295cd70728f7170562ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s16.c
! e1d31d41c30f14046572e8575dc025cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s32.c
! 7f87e897f934f662fb1f17ac6b1e936e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_s8.c
! bee7c865cbd3902bf327e253dfe6346e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u16.c
! 3a979476d56d8c62e129225a8cd81c82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u32.c
! 87f9974c2aed7525c87cca73d0addfb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_n_u8.c
! e8a03a3331f336b3a88012e980fe7ca5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s16.c
! 8c03a4e3f857199fd72677f0392567fd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s32.c
! f13daf195934e76c442245049fe0ddf1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_s8.c
! 85f4d6d80d40c94a49d4b3119b15cd98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u16.c
! bc141e4d1e010a6e831ec18caeeb077c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u32.c
! 83bb69c086a781551c240b20caf8eddf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vhsubq_x_u8.c
! 526a01507871f88edd6072fdd4822ec3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u16.c
! 454533070618063f624b9a314c1b7acc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u32.c
! 5c4498a1e3af8f8451de2ba6fe0ba9ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_n_u8.c
! 717b368ad8cd66b8843199267d5dabf7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u16.c
! b7af210b5ea1c1e5837b030c1d4db887  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u32.c
! 72eb28c9431a867f1d42e7185a783fe0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_m_wb_u8.c
! 916a6baf90898cf4fdf86665ccb6185f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u16.c
! 1779e9b98f0e158ccb19d01f7c8ebdc4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u32.c
! 099d7aaa0bc77d6ea363e3e5ee5d51fb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_n_u8.c
! dc3ed0e3e64bfdc4a62199c97dc9a57f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u16.c
! f107fa1247f0a2dc52a3cc4a3fd74f04  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u32.c
! a47971a41846fac69d076c67e408ec68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_wb_u8.c
! 6650efa310efe8d4f96747c0d444b2ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u16.c
! eedf4374fdb958b330edb7623645958c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u32.c
! b2edb8160e6ecc767c80f2983e5fdd67  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_n_u8.c
! 48b8ec39fd4c282f05728cfecf143fff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u16.c
! 70e7dd27975bf2cf5e5185338e3fe253  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u32.c
! 6610927a8274d0bbf55a9553fdf840e6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vidupq_x_wb_u8.c
! 363bb841f31ef6858d3e4e73651338ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u16.c
! dbc8a1162b387d844c58c8e7a3e92261  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u32.c
! 1685c34a08c6db697f9058bf44fa9b69  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_n_u8.c
! 15247ddf54182f246feb53572a7354e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u16.c
! 76bc11c9da82dbe5c59edfc0b4798531  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u32.c
! 703847f17780531e50016c01a4155b5e  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_m_wb_u8.c
! 29f1daa3a0526ecce4c399a389db3b6f  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u16.c
! 2e57a650168bfca9258134c775e1ee14  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u32.c
! da334762f1a8386a43138b2c05a5b0b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_n_u8.c
! f9b6521c9a440cf488385b2544c4e2fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u16.c
! 67b532d3095330cf9c85813305e30dd5  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u32.c
! 61112b698664449c6f70cbe3afe6840d  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_wb_u8.c
! 14598cbd1393a5de42c15e80b6a30256  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u16.c
! b0b55c5bdef888cb3c4760d712b21443  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u32.c
! b5bc3c9dfddac3a9a87a8e8f302fb0c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_n_u8.c
! 73fac9d50785026af3de12f4d70fef8d  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u16.c
! ce9125a39efad7aa5c00deace0cfa6ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u32.c
! 5c107b52df9868babae2770f5e6790cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/viwdupq_x_wb_u8.c
  e09e10b44af8cdfb7910ae8a99a80b12  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f16.c
  f62747ccac97e326d67f64153144192d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_f32.c
  b9fce508162a7e6e86df41672b5d53b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_s16.c
*************** e08c55e46db76183310c30da7627fed1  gcc/te
*** 57790,57803 ****
  0d0400ac0c7763d4497ce8e855981945  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u16.c
  ac47da27ef08555edf6808d2eec76caa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u32.c
  79d29a6ca815b0ab8b7aa24e8f7e1ddf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u8.c
! 3846a3ee99d7f3a85c4e9ce0e06d0b8d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f16.c
! 8ff6ee661647110eba0ee902705f2ace  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f32.c
! da8bbd7c8ce52691b9d26f898c5eaa07  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s16.c
! 0945923cc24bcc6affc4a19f91c9f613  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s32.c
! f3ad7983bd0cf1cb4a7be3a90bf8ffe8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s8.c
! ac6cd6ef7e1c0d629b2a4ed5571cd224  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u16.c
! 33f50c4e9f3041accc73ff24e8da2aaf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u32.c
! 22c41b18024ccc245df25282bc7d8841  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u8.c
  135e462a7790a7a81a28f71d7281ca12  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f16.c
  fc6f4c3be2f06bf5fbe18466ab8b1c98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f32.c
  85ad59120f99c7a5454394855dec01f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s16.c
--- 61226,61239 ----
  0d0400ac0c7763d4497ce8e855981945  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u16.c
  ac47da27ef08555edf6808d2eec76caa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u32.c
  79d29a6ca815b0ab8b7aa24e8f7e1ddf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld1q_z_u8.c
! c48b805f30cf1e2201cb18c18355150e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f16.c
! 77e2e294d15aab906be84ebf7f8b34be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_f32.c
! c2eee0f12a283bf3b7cde84d46d0fe4e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s16.c
! 394972546be64206cd9ffe8276db3106  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s32.c
! 96f2579896d2c75722b89d28aaedeabf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_s8.c
! e2ad57e6ed5f84592b8576c3a05b1888  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u16.c
! 7971b878935bca9f3507370361575499  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u32.c
! d64b50dcf15b486bd916c9f01ce0a286  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld2q_u8.c
  135e462a7790a7a81a28f71d7281ca12  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f16.c
  fc6f4c3be2f06bf5fbe18466ab8b1c98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_f32.c
  85ad59120f99c7a5454394855dec01f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vld4q_s16.c
*************** a1eaac4134d0d15cb534ec4919d34c1f  gcc/te
*** 57883,57891 ****
  853c1fd913d18719ecc086a2d5f633cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c
  5d5ef25021a8113a5fb480841314fd3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c
  a3790ebd5d675fa6ff483959b29ef823  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c
! c5df5ed6f724e6c6be59fa202b46c69d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c
! bcfea1585fb8836176f92b023ed891d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c
! 7ec657731d5808019c6519f4085791cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c
  d333d3194dbf929474c8c6016c699679  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c
  7fea2e7d6a072b0cbfe0a5e16e4697fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c
  e9a9b5d959c8260abaedc4be1cf324ca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c
--- 61319,61327 ----
  853c1fd913d18719ecc086a2d5f633cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_f32.c
  5d5ef25021a8113a5fb480841314fd3a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_s32.c
  a3790ebd5d675fa6ff483959b29ef823  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_u32.c
! 887b7b4a35a415ddf12a5152841c8ef3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_f32.c
! 0d1d9f1a62a36f88f4d071236c7ca9b9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_s32.c
! ff58844a04a541507ae92aceb491315a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_wb_z_u32.c
  d333d3194dbf929474c8c6016c699679  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_f32.c
  7fea2e7d6a072b0cbfe0a5e16e4697fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_s32.c
  e9a9b5d959c8260abaedc4be1cf324ca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_gather_base_z_u32.c
*************** c41d03fd2be1eae911f39252caa40c73  gcc/te
*** 57906,58065 ****
  58cb73d621b713ebe5634431509c7854  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c
  fc232654d74a8f153c430f830464193d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c
  5b256b4d531fa066fb2d4b1429db5841  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c
! 4596f8a6680597f5526864379597c690  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c
! 9bc88de909354740e2801b0cefb06212  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c
! b4ffdc567fee6bf0d9219f602465b6ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c
! ca0515bfe0f3bdadcbe85aabb3e6b8cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c
! 3159aab876060418d43294ca1450808c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c
! 4cdbc7f8a437d4cae26970b63cdb292f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c
! 874e0d6b5c383df226239ab581ad0860  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c
! b8ca2edcffd54727785ac773bbd3902f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c
! 35afd53686f007403109332a5fdb4ea0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c
! 16c1bebb3dc3da8513ee1cdb4b7e2ef1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c
! 9a6c251f847412e43e5494cf966114d0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c
! dec6430b84704c3d68e0f0d2e966943d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c
! f6c598f58fbc7caa2a09b9b46070ab0e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c
! 656752b3e7ae627046a7ab5a1b704b8c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c
! 082ca6e93476a686a6b2f5179be3fafc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c
! 458772411a018731122cd0b3a945aa13  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c
  884cdcae054ad5898f4b4c4d9837a118  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c
! 4df2f37490498b42180ea7b97209a0a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c
  7e6adb7a40553d5501ead4e4f105851a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c
! b6b0bb23f2b062338458ce9e7e9feb0a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c
  51d3ef6c52791fecec4e2ba80ac38a73  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c
! 9bba4a9f6c16c931b1ed1247164c62da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c
  d217e5e037090519192a7701a47c38be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c
! 0935eb24719bf73bc47f855ad1081db8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c
! 26d712377c900756d2fe8eb088fef396  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c
! 3c7a54dd7e9743b1d6424f80c1b6a829  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c
! 92c98f3b74dff854d81832e9727def7f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c
! 209f92c05637a267d570878acd055329  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c
! a5c145f93cffd39080a98c13fbb0429b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c
! 75279a90452daab2115e98f3e7c8716c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c
  3e59645c6c893e8eb80f7aac6fc4e8bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c
! 3c00a1171264756c3e573559debd8816  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c
  2387d728d98725468692acd223d23133  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c
! 728fcdc775448ed1ffb8c707c4a4e5b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c
  19a4b57d187e4a0b2e2eaa376e0ba799  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c
! 959cad8d69514f04fca6cd17f4c03237  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c
  2f888fec0412321b9cd257608740fe59  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c
! 6c72a8485de34992533235b9ea138e3c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c
! 9c9288b3fdbf2e63eba7bda0582abb1f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c
! 701c5f5f22b93ed23a4df46a2d897ecd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c
! 5dcf0e5525c3e7c762eeb66167b08553  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c
! ec2790d3e8364d9d6ba808990db54989  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c
! 8965384bfea24f9830d1908d6b7a20bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c
! 86254890a08ea9f6486e40694b57b8fd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c
! 16aac1853b3345a8a96a4f41d82c9f42  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c
! e7a5185f3efc93b2915d65a02ccd9a4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c
! f4147329c741d7d0cd9f7e73cd049f24  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c
! 11a0f140efaa6d3a9f243c63202cee0f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c
! cb83cde53906583fdc9c93c155b82234  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c
! ae5b3aa6ed8783cdfa6f5497c4330d76  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c
! 8139768328841868224a43c9dacbfc68  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c
! c59a0d13364bf587568bf7451dc40e00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c
! 5d2edc744e6d638e38b5a76bf318daad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c
! cbec71e72bde8ed62f96a5fa668e2a59  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c
! 0a8102737c298320000a07e54e1f9bf4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c
! 6b9b355a0cc2cffbd63261c8bc1ecc17  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c
! 25dca9d227fb912ff3f55adabe0d8b1c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c
! 66ba3bf6699d36e29fd20123fd7e95a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c
! e8c3d66cc23382b670da52405d9ea84c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c
! 9e095b70d7425daf4cfffb1d8a3e1dbe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c
! 14675994483024b996ee665829b7838b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c
! f5474ed0c722b8c00e9fae7dc3888bdb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c
! a3c8a7e2930174c27e694c39a1e1bee0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c
! dd0206c044a58630b043439108264338  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c
! fa7cef10b4b5af14f0e3abc6f7fd941e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c
! 8bb5b3651b9e3268ffacbe99ec653c44  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c
! 9c4313775558b2ff144462ca842df391  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c
! bb8bc380d0b03016b8322a41bd778175  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c
! dea55b5938395147e57178fbe34faab2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s16.c
! 4f1fdb3ecfcf322f2f9cb07b57a9cd0e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s32.c
! 95d72210ec90ea383c7e0cd0a17e57d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s8.c
! 0e687d1b735d367a0b1e43deb7001876  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s16.c
! 0d2d559f3b7bad9492de9c6792fa9a36  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s32.c
! 91b4e20aa8723b732bd92e11142d2f1e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s8.c
! ddf8353591c231f403e0ea139834e8d9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s16.c
! f924a3e8d7c7abd0ddefbd4787e708ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s32.c
! f02008ba8651f14603f3dc77075daf2c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s8.c
! c0fff210557fbd8441f4e1d625f6c85b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s16.c
! 35d70b56a6f9cc653f941e56f6e0e0b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s32.c
! 054f2f8c2f499cbec7be6728db6f911d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s8.c
! 9fb5326a76c205149e0f5f0637444e5c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f16.c
! 282d6b0499e3efc87ea61bb1d9521c2b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f32.c
! b41b2b193699b9003342a61ad64dc3ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c
! 790c933f7cf5110a61c15962f2fba98b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c
  c9b82873e4873c90d254eec714ec4936  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c
! 66a6c13073bd0cae309a6a94f7319e2c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16.c
  90f38d8ca6703507084d0d5df8a54763  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c
! 4418ecceceb87beab2c9a5e8f2f0f5fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32.c
  0ed6cef5484566d609960d8e5f923413  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c
! 593ff28fe1a4cea3dd25037993c87798  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c
  939e32f355e74e2c1eaf01dc0db612a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c
! 191a27957ba46699e6cc37506568ef13  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c
! be894468e8fbdc34fd239cb4a338f4af  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f16.c
! 1e5658386d1543a8fcc8fea54ac686af  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f32.c
! b91f24d146e2543812a08944d3d7643e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c
! b32b5527a747248aaebbde1653431c42  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c
! b8a53289449c42d870a7c983c33933ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c
! 736c0ace129e5bbb5cb98fff06bd9870  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c
  9193a08e42eb8030510236e040d92b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c
! 43f437d35f9ef1b41d08a98c7b5e00aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16.c
  76a74cc77bc95a78769980ae99740a38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c
! 484e2b890dfdf853dee7c6d6dfe299f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32.c
  b9e053e2f2f132ce8f3644b7dd2500f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c
! db54cc6f11588ef62dd2aa65682ece16  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c
  6b49b02fe8f7d10e853a3392b4a7ec5a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c
! 6a9abdd33538108ac7894960f2bba0e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c
! 3a23fd5083abfbbe184ff324dac68d18  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s16.c
! 9c8b839247c19c62a640d7a67b004273  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s32.c
! 9a38b7a0092ac944e8a60a786b423570  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s8.c
! cbcd09d0f161db3f15795eafa91a85f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u16.c
! 9b3efea5488c86152fc3d1aff8b71e4b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u32.c
! 7994b885c6d8fbddfaee222c02d89c71  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u8.c
! 75ede7b945f8e23a32177889505ebda8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s16.c
! f9ef9a3ec55ac8b01e0e923bb615d000  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s32.c
! 309afdff54a7b54e2db046c24c7e466e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s8.c
! e2572127e21f61ebbb4e5abdf3269daa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u16.c
! c9d104d420a5310b122c5758a5be5188  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u32.c
! ddff6c028a6d2cb1911e8e45f9e27850  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u8.c
! 2e30e0a4df99decd913f1e4297e2fab1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s16.c
! 324bcd3840f318fee994aafd7a43b268  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s32.c
! 9600d6759fb6e5b6e450b99fa4abfa7f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s8.c
! 989e03883122f4fe4915f9af9d342d98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u16.c
! f43ca3dee611a5d0ff137928dc9484da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u32.c
! 18e6bf252f27f49cd4f4975d9ecb50bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u8.c
! ede4ac02f16e03ebb275ca501bb142e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s16.c
! 633c86f9fe5d20ab502dc98b9bc6d744  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s32.c
! 03c3cc8b9cb613f7c16e002d933b4b21  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s8.c
! 64c3e9c8e7339c938941a97a2b1675e2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u16.c
! 2235f6a28fce854294e6f4fb80964026  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u32.c
! d5445ce2a001793ca75bb6423f0e8777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u8.c
! 72e27dbb76f102943c8969b208aaeb41  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s16.c
! b000adf4b0a2512b3cf4a86b53dfc88e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s32.c
! 68edfb683e9e4efbdc68fd762be9665b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s8.c
! 0cd4f47d8b3ce8e8b59fe0598a6cb9b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u16.c
! 81924a326694cbb609829bdd437b3d89  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u32.c
! 44d8b8177daa9fa8636700523932535e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u8.c
! e2af8cc747291fd9e9d3fe6aa6d7d2d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c
! 13af4f2e43f1af3bfe7016fd97cc4cb5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c
! af783b65330fe1e5431ca15f438cadbc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c
! af575112973078e25b32c2720ce87849  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c
! 695bb164c7455a143c9d1ea810856ab7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c
! 97ea0181b8a19de0dd265596c9565cdb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c
! f612057fc278ba116f2bc22d45f35049  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s16.c
! 89179ce787b9f650318603a902efb385  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s32.c
! ad981bc4ba0475e22a06f3f5a7101d1c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s8.c
! 036ede4d2c7124a13862790877547a3d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u16.c
! 9dab762933a3d353f5dfea59cd89a109  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u32.c
! 978c28b006fd2de03a1e3162621c9fd1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u8.c
! 1f5be18003fc06811c86f92ab6a1bc64  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c
! 6a8ac77632aafd27faf2e19847491281  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c
! cabb7b5cc06d98e3f6026f9a2c8620a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c
! 937effad50e411f189d924b190acb9b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c
! f87a71b5a9a4e618aedaf22e6d18c0ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c
! 21b2cd858e6995df0219bc56d01cf9dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c
  80cfbdd83a9c118ab03faa139057205d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c
  95b2896b5828aa934262dd0242b0fd52  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c
  8a7883dfd75e63a6473a8eebd96f63b1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c
--- 61342,61502 ----
  58cb73d621b713ebe5634431509c7854  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_f32.c
  fc232654d74a8f153c430f830464193d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_s32.c
  5b256b4d531fa066fb2d4b1429db5841  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldrwq_z_u32.c
! c74c5973fcfef73146c302e43aae1d84  gcc/testsuite/gcc.target/arm/mve/intrinsics/vldst24q_reg_offset.c
! 5de17348dc8ebde15a01a208ffeb433f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s16.c
! c3b864afb5213e329938bb9d3c9760ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s32.c
! 3f27300eaf9c475a91c8c8e021492a02  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_m_s8.c
! bcbdad74c1a96f557fb0846bbb27cb21  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s16.c
! 7ac02897a027dcf2b84010b6dc6e5003  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s32.c
! a3201877a50c3abb85a1f9bc801387af  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxaq_s8.c
! d6d908ea948a3ce9335c8a2c5db2e367  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s16.c
! 2642f295ea2c44cb7f34f53afaac30c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s32.c
! 56da0ed102db443ae0c3b9f96eaea978  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_p_s8.c
! 61abb3c09fdf8dadefdae48c713d6250  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s16.c
! ea3b6b92390151d59b0592fbc38d3c6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s32.c
! 8e5974ca528573aa06fefef76f0bb047  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxavq_s8.c
! a60d7664c47a6890c926d3a8760e1c6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f16.c
! d31b3f83cf760dc817704a8189301031  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_f32.c
! bd8c04a62e8bb73de3109d6dfcd791e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f16.c
! c1f08016e58ac184509cc73e158ded1b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmaq_m_f32.c
  884cdcae054ad5898f4b4c4d9837a118  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16-1.c
! 09b8ff99812923bd5f1d0c9f13a9d36f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f16.c
  7e6adb7a40553d5501ead4e4f105851a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32-1.c
! b533f93e8a6df9a49f7dec4bf1bac746  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_f32.c
  51d3ef6c52791fecec4e2ba80ac38a73  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16-1.c
! 9ad897d261030d930f1212a21e7b6eb1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f16.c
  d217e5e037090519192a7701a47c38be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32-1.c
! 018a7bce41f8d6277b41034a6e58c7b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmavq_p_f32.c
! 64cadef5d98492e0821ec1fb8b70452f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f16.c
! cc3a50eb2e2a4416b8eefb876ce908bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_f32.c
! 3e63a759eafba42b8c8b89f4ba6319d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f16.c
! d60d3ddc62e7295107e086d738fff92e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_m_f32.c
! 5b860c9e23e535b74d0b4836a8529a37  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f16.c
! 30b224c1354cd0816239b347661d3261  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmq_x_f32.c
  3e59645c6c893e8eb80f7aac6fc4e8bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16-1.c
! ce47cf387183a4494b0108d07abcb50c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f16.c
  2387d728d98725468692acd223d23133  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32-1.c
! fcab48c487c80dfab3d32ab75ba982bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_f32.c
  19a4b57d187e4a0b2e2eaa376e0ba799  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16-1.c
! d37869a0a4794fa7f1c9e34f1f71e4d5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f16.c
  2f888fec0412321b9cd257608740fe59  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32-1.c
! ad83d9bd701ec3298ad0ddda7209c1fd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxnmvq_p_f32.c
! 93def1ed2a5d5c7efa50914c0a80f6bc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s16.c
! a7dd288d9646a582d9f0e5ce227044ef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s32.c
! 7f82521f45ecba7aeb2f26043321ab4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_s8.c
! 649f44c5d647768b2d04d67cc5c3be85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u16.c
! e7344ec4342cd9b97808cfd6ea96e114  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u32.c
! add74ed2a6418dd02d055d5796b64825  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_m_u8.c
! c0785e65b0f2692994210012dd75ed54  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s16.c
! 5b9967e46f5112784bfee4fc71f74d45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s32.c
! 8f5b367f0df95f78804c1b2e16d7dec2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_s8.c
! 52caaf554a1f37ab40ee9a77f91e48d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u16.c
! d65ba0dc206c9285dd06bd6510fb42f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u32.c
! c29ff224bc7bcb38653ca8f26a0c68d0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_u8.c
! 34fc9b7bf2e58c053680b3be81b96de7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s16.c
! 7d76628ec0c19c55c9cb442966c0051b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s32.c
! 9c9e4508b5e46c4d7dc593fc33393894  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_s8.c
! ae141d77192da5bfaa237d4e008e02f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u16.c
! d14d199ad7d031fcc270f921fc585793  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u32.c
! 87f155c4157aff4b16897935e4b04c5e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxq_x_u8.c
! c0ec9d1d07015b47005308554dbaf759  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s16.c
! 696a670803a811ff35097f3bd56fb32d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s32.c
! 8d412a45993dcc1c09271ba8aa05bedf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_s8.c
! 5701138564229de5f7b740a666072ad0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u16.c
! 81d38babc8e0bb0455fe14f896dc8f0f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u32.c
! c495298b1b77e2b43ddd386e39eebef8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_p_u8.c
! ba873a7ab2f533151340259f0c577623  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s16.c
! a28f0b6517e2d2cdff006871d03f4a3d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s32.c
! 12f14f0a0cef77bd425f0aa754253431  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_s8.c
! 1472f4a1a88a89d0a48c66b4a4d9ae1f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u16.c
! 0c581ed0bab904def1325c7d4f0de557  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u32.c
! 9bd485ad6224c0d3c9b12c7249dc591e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmaxvq_u8.c
! acc815f98e802b3e4fce915df736fbfa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s16.c
! 6031e7f59fb60a629372a83f802e24b1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s32.c
! 9d90f45c19ef2308f13161a95c4370c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_m_s8.c
! 63d6896bc041bdd6fc2d441a046efa7f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s16.c
! 710148c346ae637925571c95085bf200  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s32.c
! eddcc052251da377b00d78802c52d5a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminaq_s8.c
! 7e4215075829089be11584716030822a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s16.c
! b8e45545c279a5da3bd58a2e78fb7ecf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s32.c
! 31ac3c5786a088b84bfc903a869b8117  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_p_s8.c
! 438afb9ba85050f47a711dacde6f2847  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s16.c
! de85e74598ae0f93c299ba742a100d23  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s32.c
! 641a80756b995607ef37f3cc372a2bc5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminavq_s8.c
! fad9eb0de3b968c357fa49f5718f9ce9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f16.c
! 7e109fdfaa0470052445bc035dd48744  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_f32.c
! 8229136da2e44bbeca72dc105156f135  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f16.c
! ca9eeb392cdaea0cd9e3c953e3b25f16  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmaq_m_f32.c
  c9b82873e4873c90d254eec714ec4936  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16-1.c
! 1ee853efecb639385b48b177b123ab0a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f16.c
  90f38d8ca6703507084d0d5df8a54763  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32-1.c
! bfd79096f23a464f6280c2faa6d48bc3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_f32.c
  0ed6cef5484566d609960d8e5f923413  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16-1.c
! 08d46a3fd525dc6adfc8baa6075cdb5b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f16.c
  939e32f355e74e2c1eaf01dc0db612a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32-1.c
! 5ab3ececf3024315af62abc6fccedcbd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmavq_p_f32.c
! 46ddb54d0a8814fc54ac4658109cf9bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f16.c
! b91c246ae9380cea1c294dc6bdf7283a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_f32.c
! 4bcbd29ef2719b2618c98e48886e0c9e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f16.c
! 92c47d1cebf978c68d0ae6113c38b951  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_m_f32.c
! b7b8972ea96402b888db377ae9acf5e3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f16.c
! bc3129cbb5213298db9cfc80ed8e7f92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmq_x_f32.c
  9193a08e42eb8030510236e040d92b1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16-1.c
! 01af6189ae684a12feca4ccf760e5d39  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f16.c
  76a74cc77bc95a78769980ae99740a38  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32-1.c
! 517c28cf90d9a9eee52e1457c929b778  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_f32.c
  b9e053e2f2f132ce8f3644b7dd2500f2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16-1.c
! 83d10982c89c302b55aa90529cdd4d62  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f16.c
  6b49b02fe8f7d10e853a3392b4a7ec5a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32-1.c
! 0271e0a12d45285b943270b3b8efbb8c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminnmvq_p_f32.c
! bdc607bef624e288d689826e626433e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s16.c
! b60eb43a5c1d77e50873510c02e37d7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s32.c
! 3672902c83679465578ee2053e3c6d66  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_s8.c
! ca459f95d19a4bd6452baa8b0afcd04b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u16.c
! dd9baaa530b01d2d1859dc28f3e5aaca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u32.c
! 03147ca33cc31c17c261e652ad4988bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_m_u8.c
! 0dbdc0eee637eaa20f3662d6a42204a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s16.c
! 69bef9af378a88ad9a3a65b72949000b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s32.c
! c88203b0435a9c5bded8c8a85d35ad6d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_s8.c
! be594f0cf12c2e864fca2bbc82748ea1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u16.c
! 0f398f3f1d49d75ec6497b2126d90e73  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u32.c
! 86d77afdede716a107e31296f1863e3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_u8.c
! c59bed81ef70401a3ab87559213d959f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s16.c
! 083dfa326a946ea50ea1a1fd4c403794  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s32.c
! 9d1418d7e67b07b580ab0dcb367cdf1c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_s8.c
! e5d266845f5f54a23812f7778b8e7a50  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u16.c
! 87a6b03d74703e626f2520c3faa77450  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u32.c
! f6f4c392c939783e7b04f1aeaf29b138  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminq_x_u8.c
! 64053e4695201e19a9b19cd01258d624  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s16.c
! 5566850d88a618ca44b3dc6af6c2fc9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s32.c
! 19e662cea546406bffa9c5c90c5404b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_s8.c
! 0a3fa9e8300fe1e66e8d8e5f6d85ed13  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u16.c
! 8504fe49451fb3fb9360c4b24c86b992  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u32.c
! d0de56b663f729a3efbf188d0f71163d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_p_u8.c
! 8768dd3900ab5d67ded35c8d2ee35378  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s16.c
! 06593515bb25d37e351b459346f97775  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s32.c
! 9f20d0be6217e87e58784c6540953924  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_s8.c
! 930b3e0795b2060eb4f95b20e2de4c36  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u16.c
! d5780384e6f460e52501cafb2de890c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u32.c
! 47699ca0ca5c990341165e373fab2af2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vminvq_u8.c
! 338e919211aebec2c1df086dcad31307  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s16.c
! bdc3b51c8b312afb4dd8bee8065c2c8a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s32.c
! 7520adba6d33ea1113b4c2ac1edbe672  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_s8.c
! 4f2e6594997b578d43e840b3f38301c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u16.c
! 29309f4e325865ffd5f770d22e7ea2cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u32.c
! f8a7d5030ab075e4946258913f8fd8bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_p_u8.c
! 80f288f905890c7cfe0701058473d7d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s16.c
! 6bf70e31b8e387f3d836a3ea2652ecd3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s32.c
! 9a7dee46f67fea2ac2dfb2005689cba4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_s8.c
! ef3f3fd48e7159d4fffd813f83196218  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u16.c
! 50a0b8d5e26daaa9caac36a3f9558287  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u32.c
! 4ef60b052dcae9ddfe45a3548e119093  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaq_u8.c
! 2c954c943e875a440169fc86e1335aca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s16.c
! 4cbf5763bfbe20ba407dd1a810520915  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s32.c
! 6cd95cfe2463aa0bbdc0619495733dd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_p_s8.c
! 82132495b6afc34ef6f05a0eff2d5d34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s16.c
! a5bd3e72bc313f2373a3ebcf4ef62535  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s32.c
! 37549a63cd84130b4fb659f019be32c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavaxq_s8.c
  80cfbdd83a9c118ab03faa139057205d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s16.c
  95b2896b5828aa934262dd0242b0fd52  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s32.c
  8a7883dfd75e63a6473a8eebd96f63b1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmladavq_p_s8.c
*************** bcc422b36a62f74f6090502ccebd4ddb  gcc/te
*** 58086,58095 ****
  995e900e827e48a37a40ae5f1fb13037  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c
  559dc8f0e74007bfcefa3226c1ec9dac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c
  dfafc1504188d918af0c4576c94fbbc7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c
! 1fb60fccd0248495ea4b4c97413201ac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c
! 10b11571f2be4d2236deb2da727ae7d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c
! 9c737b6c8fcda3e82a1365956ab3a30a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c
! e98c149fb02279c17fd68b12edf70f19  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c
  661a7d0add4661c6b1d8e80dba7a2323  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c
  a22ad420ded3325d9074a0a6ae41e305  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c
  598b1e8a35cd4a9ffe726958498f3959  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c
--- 61523,61532 ----
  995e900e827e48a37a40ae5f1fb13037  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_s32.c
  559dc8f0e74007bfcefa3226c1ec9dac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u16.c
  dfafc1504188d918af0c4576c94fbbc7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaq_u32.c
! a89c41b19bbaa2d3f2c83291c6f8e68c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s16.c
! 1f992e108bd7404e4b10ec72aecc466a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_p_s32.c
! d71a1184e8a45cae44089952b8835467  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s16.c
! c747e1f2c3171d0e5288daad12a33c2f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavaxq_s32.c
  661a7d0add4661c6b1d8e80dba7a2323  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s16.c
  a22ad420ded3325d9074a0a6ae41e305  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_s32.c
  598b1e8a35cd4a9ffe726958498f3959  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaldavq_p_u16.c
*************** c274fbc729098f0ff6c716f2a5ae6cef  gcc/te
*** 58114,58131 ****
  98eb8407b9499015d73a8fc8f7dbf83b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c
  972b712fae38e0f913132c095d74492b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c
  f8eab11a56a8ba00ab534783b3c7c389  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c
! f469f2403f6376c2f3cdf766ba271d1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c
! b57102267d242266cf01565717df6423  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c
! 8444fbfa1b1dcbefb56f2e9e1633eb00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c
! 92356486457c7b71a221f63fe7dca010  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c
! c8f02f7281d5ab217a4404ad61530638  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c
! 1235f65e0f08e141db2a3d288a9a295e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c
! 5e7887d764fe355bb4f38060052c9796  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c
! a70d3e6a2871cd94e3c514817c868bfb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c
! 1f0dc367c9c18bcf473bec3b4d790bf2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c
! baff65d012bba4e86900cbab1060b4a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c
! 8335e7c658fa6c330825076b8b2dd9b9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c
! 012b267119586b9a78303e50a277b420  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c
  e6de0c804336d63319d08eadf31fc926  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c
  3c0872cc2bfa593e8f881019ddff3fbc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c
  c621e23bc50db9851b8de893f59ad858  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c
--- 61551,61568 ----
  98eb8407b9499015d73a8fc8f7dbf83b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u16.c
  972b712fae38e0f913132c095d74492b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u32.c
  f8eab11a56a8ba00ab534783b3c7c389  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlaq_n_u8.c
! e99062772407ed574359cec7016ffe74  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s16.c
! 519ee1035867981cfc6934c32b49f0e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s32.c
! 2401b8190d98d49fa431dfa9047490d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_s8.c
! 8ead3a1ca8b7795f7aad79e196e6acd3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u16.c
! 67bf164c43d211e3570781d35ddc490d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u32.c
! df71ca85c666be91d43243b42d92de31  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_m_n_u8.c
! a91f09fa1be75fc9f2de1fae18c1e705  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s16.c
! c00817177f8ca7fca1373a21aea5b457  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s32.c
! 3d28cf27a6151d584f06e12f92363a60  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_s8.c
! feb0f6ef1a0d4a966d5937c79491d762  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u16.c
! a073eb0dd0d7532bb7492d1e36292e08  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u32.c
! f0dab183f65f09437dba57847f8d1f55  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlasq_n_u8.c
  e6de0c804336d63319d08eadf31fc926  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s16.c
  3c0872cc2bfa593e8f881019ddff3fbc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s32.c
  c621e23bc50db9851b8de893f59ad858  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmlsdavaq_p_s8.c
*************** a2ebf55f532c8adf6195fc686c1f6d3c  gcc/te
*** 58206,58331 ****
  435cc349f39741b732ae08e5ae62047c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s32.c
  501442b0934e883ca96f55b07018d675  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u16.c
  ef852e3af0a02199518364ceb253f2ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u32.c
! c8c24ab941ca3be9f1087ca81d897bfe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c
! fbff8f13b8ccb62c103f6944f6adab78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c
! 2286aa160b652035aca4dac295009200  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c
! 659002488db3e8632c12bfa50f947140  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c
! 23b86cf113eb73b2d9f98daa5f3ff865  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c
! ab92ee1bb7d9c6ae499ea54f2a161f01  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c
! 921ee39d834042ad2a12ba98f0aa7574  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s16.c
! 831a0685804be5b4e8b4b1efc306f215  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s32.c
! 41c4e0c56b07e2fa8766265515d44219  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s8.c
! 7cc30e85a786791174f3c22d72c42faa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u16.c
! 23c40a91a6c037cbc67b227c98f5c1c2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u32.c
! 0a673a3341ae98ca5fb857ee30c396ce  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u8.c
! bcbf09a8f49054533d7579ebb4c26e1f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c
! 523941b7b5ed4652e35d9292f80fb2ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c
! 748a49c3c02f34e35cd0844303518386  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c
! 94face5adb4d96d68ec8c782e8de680b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c
! 15a0a46258164bde7c52e0d035720832  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c
! 419c3ee3cfac902bb20c8d46dc687a93  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c
! 8898ab9595f0da187e307bf343486660  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c
! 9c8f0bc76a114dfd1011cd9c9c1ee51b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c
! eeddaaac9cd72a96a14869e600263447  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c
! 0783bc2a4842125e9e4f2a37f4c731ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c
! f47458dd5839c886c2a5dd616a73f8ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c
! c57a6ca399d599f89ba82dee4d4e47d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c
! f8b49f7229617396e0f34021e099e2d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c
! 158aee53b04f45659e75804c0c0e7ac5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c
! 6e22f3f2e8aad053d752adb4d757a969  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c
! 8077dc11ad49d11344f3a292bbcd5d7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c
! becc7456205778ef9d9511ef6292f6e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c
! 9da2c69da44a28c10d42fcfeb5eceb2f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c
! 595ed1d970f9487af1b1fbda5b3592b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c
! 00da188191730fa829126515d8af3d3c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c
! 91638b34d9973610f3d7e97dbe782d15  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c
! b0fbc0e9e273ee1a68ffa3e9825c575e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c
! 496ad1eb26fa76531ca2074118793131  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c
! a9d3c7431329def6a79e0ceb211f155d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c
! caa592131a59108789cc9c3a3ca975a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c
! 6643a3f61311733714787eb94ad8973a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c
! b8c221f6c6cd394e28dce62f4d832194  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c
! cdc8f1dd9239bc3e585f8af26e0d1ce6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c
! c25dd1356707c084c78eb26268993317  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c
! 691dfc6c3d1611c995d3245cac573c3d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c
! 8cb482318d0240633147ce925cad4b08  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c
! 20a6c9df4ce4c869c1255ea048b26a30  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c
! e7b470f46761f5151fd72f5ce37f1ce9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c
! 851db6473887c3e9370c37cec75f1ee4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c
! 483070e1b9f823c2add33fdeacd5ef6f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c
! f57f8c90349726fe85866138bbd26ba9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c
! 9661645f80e3fb58f5fab075612a54ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c
! 2e2ba1559c3981c68269226f08842e43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c
! 4e3243966c37d427a3b9112d96bb4af2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c
! 6ed69a4013afea54468a3f25f8eebb41  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c
! 1bad8f2a86c33e304bb681756dbdafab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c
! 97f7bd6239d4fc0deaffb2062c52416e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c
! 87292b01b8b3575e8ce30b68524c6988  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c
! cf838175caa9ffad49c885457b2cf927  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c
! 7b50f9cbce602df82486ba7d6ed231ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c
! 3da43df50a8766ccbea1b1c440aeebcc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c
! ea738e11376bfe8c657b4dd00aa1872d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c
! 9e012b534473536bbd4ff42fa723086e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c
! d8d1eb843e17812f0bce79c622cfcea1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c
! 08d0ec7f990db9cf9f0a134b856b70ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c
! 1a109f97b9b4acea8366da99508ebe77  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c
! 8cada7c7957dee532f8ba32221a3861b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c
! 2df8263c593f71dff6b931dd22208a26  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c
! 337800f5234de4421672620c469a080e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c
! 959d1ac2da4cc8956a00404425b914a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f16.c
! 7035266d7911e3c66b94956157705bcd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f32.c
! 9c1ef6033c0e58a6edbbc8ff55ef6eb2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f16.c
! 3d5db4cafe14cc9a0d8b9702f8eaaa79  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f32.c
  aaea531e9c3de4bdd46fdaed408b14a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c
! 518863f610be718f4cbdf28356f92f20  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c
  d259cb258406f29f8c6afa4f94df49c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c
! 0e8213a239e4b46641707560e2e09255  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c
! 0e26304979b85f3ffe661a04428090c8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c
! c4ea6263c18ad27b9a0d5fed7e027405  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c
! 1b384395661c1e0d3c2e7c581f2bd26b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c
! 570d8c41f0553f392125deb01a9ebbed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c
! 24da91637eba519e1c7b8d76bfe0043c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c
! d78d9c102e89bf77469fc6520b6efd2e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c
! 0f139e40c34e732b04d4456221661274  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s16.c
! 91a062f5431f9ce8b04fd9fe6b5bf334  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s32.c
! 3d9eb0e6c655e2cd19fe1eca402f744b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s8.c
! 4605d13f0eea6efbad40d92239cb3dd5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u16.c
! 8debd61e048d91c8bc582d3336c2dfd8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u32.c
! 88ff44a2d6639155da75c68d4f26d5f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u8.c
  5f705b44a993f0b6de2945f98dae8f71  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c
! b8946f7b8f08d441ca1f1628523e9574  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16.c
  53a08d4e473fb076c27b37f255073777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c
! fba13bff73c1385a4a7942985baaaf7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32.c
! f7343c5d729108e8a4f44854c7456382  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s16.c
! a22774a9025e8cbcb26991cb2cd1943a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s32.c
! 4c7b45387e6bc34ad93239cdf9593708  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s8.c
! d2fac588a94634e18ca8f4752320fc72  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u16.c
! 610b02a519783235ff41c5a4d2c289d7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u32.c
! e219d23128fbe86b24ade7cea1def46a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u8.c
! ac4a23371698407c9f007d28acc090c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s16.c
! 405067f1e0818ea1d7a8e1ecb52806ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s32.c
! 78ded989333c83e99177ef7220cb52d7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s8.c
! 800725a61dd1ee1f91472897c0528296  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u16.c
! f04e4695c544d3497be3ac576589b14f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u32.c
! a1b3663805dcceb4a92aee7c1b139c05  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u8.c
! eeac86b1314c4af13bdcb59ee0266ad5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f16.c
! b934f2865f685511f882c8ae0bfc9e53  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f32.c
  6004db00746f4669b31ccac771057851  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c
! 45f59398386cff192828cf33e335a768  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c
  2335e561bfb15455ffd3f710f41d023f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c
! 139bc8bbefa48a5c1d2e4c0ceb435bd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c
! ae710741bdbfe93b9eb4bb866d05a044  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c
! aa2ad809a980c64a182220e748c0010e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c
! 34efc122594a909a6f76734d0406088a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c
! 260e316c6776441da918ead0133594dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c
! 20c5a475cef61652952cbbc639350e1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c
! 49354ddb2a4c676e399cbf09d4a3aaae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c
! fcc2d94b663886ce15e7a740fbb0ced1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s16.c
! e333febb69eec3974217f437ba646af4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s32.c
! d9bfa0a37b95045709817230b3910572  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s8.c
! 8d481558e4ea61ecf57156d32f99ff85  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c
! 1a9f3731a92c40c684d2e33d9f1f6de3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c
! 53bb75afff319ac070e22733345cbf46  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c
  2dbce946b67e38561c8df9ff6da46969  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
  ae7c5f268de2c73d12a437493c3e7ada  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c
  b770578bb44b2ed666ed871f729ed055  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
--- 61643,61768 ----
  435cc349f39741b732ae08e5ae62047c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_s32.c
  501442b0934e883ca96f55b07018d675  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u16.c
  ef852e3af0a02199518364ceb253f2ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmovntq_u32.c
! 09274be92712ddcd574128be4360dcc6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s16.c
! ef198fc608f45559513b105cc85cce55  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s32.c
! 8bab40c1a58dcaf8261cd589c33f44b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_s8.c
! 74c3c5d98eeeef9ca5006bd8dff33eb2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u16.c
! 1bc6a1916dfec70c3f34126fff84d2b1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u32.c
! 893595ed388f748fbc3f0dfcbe9e654b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_m_u8.c
! bd0d230798187833a8262f1de5716840  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s16.c
! 7b56c8af80c36094baa76e8be6336637  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s32.c
! 5043baeb1473267322789cacc5b8aa6f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_s8.c
! 5ee54f64dc9007516f4d7d973a07d328  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u16.c
! ddaaeb8666f9c58b170fe8b2cc98a8ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u32.c
! 770350dc228ba615a82ddf8a2374bf7c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_u8.c
! 7882d72f0e997b2bd39d4cbc42c6452c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s16.c
! 662eb86b3fab4e400612d0e8f33b38b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s32.c
! 840f9e085c7b7610f9667ef876aa0301  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_s8.c
! 6de7b86f94bba2897640c35c002714ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u16.c
! 4773364cd106df00487c6444e3f4709f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u32.c
! 6ae6d4d3aa95f0b72e803b7f0692ba25  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulhq_x_u8.c
! 45a10c7956901c1aec16ba70b789a961  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s16.c
! 7005d7dc41c21165d83a0a8d3d92ece0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s32.c
! 6e00016a47c1b0572f73780da0870f5e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_s8.c
! f2ea448f81d7cce09ea8d83c5a7ddc0d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u16.c
! 1c0611a8e302495098bdacae65e41ad0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u32.c
! a69b4e556199b0310a340a6f94dfa9d2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_m_u8.c
! 1c422e98873335c93d3fd1ca9e514252  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s16.c
! 39d10340139bd4b3a545b7f811a9e869  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s32.c
! 598a353a66cbf22ea8541560dc12ec2e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_s8.c
! 12eb9b2cd3276a1bc6f607d606e30c32  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u16.c
! 63a23ce894faf88886fac1d677ed94d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u32.c
! dd6c6f4df688a7e236e165f3a1d5d2b4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_u8.c
! 4577ec53466ad29d28ff7c336561e83d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s16.c
! 26c9b9b3e3f9e95ee28fe16f830a6751  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s32.c
! c13526e9f67bf96a5e304e164246a959  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_s8.c
! d3962ce056da78b1a993d67f75ec8d00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u16.c
! b54b34a97541ad41766d8581829a93ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u32.c
! 6fbfc572ab49dae33463db07cfdbb0d5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_int_x_u8.c
! 5cb8ec3f0e027f74c532693f652a56ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p16.c
! 60cbf776464047233c9fd9b218967133  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_m_p8.c
! 9977f5fcf1473f46652ad62c6fa44c5d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p16.c
! a0a8db6c60665b8eb2104fac131f3dac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_p8.c
! 4f7b431f6e4fbaadb87c43f395c346e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p16.c
! 2b1c58cfd61adb001e5c1b693bce7be8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmullbq_poly_x_p8.c
! ff3b341eb0b3fe906cafb3fe7fd78dc0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s16.c
! 04e1f687447637fccf305965a273260d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s32.c
! ba5c3a4da7ff7ab8170ca407517ac583  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_s8.c
! 53c2b01e5a64e6c8e589652f4c4c4154  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u16.c
! 17cd57d429a1c885bab536a27e64b7a5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u32.c
! 4c484693925f6d39495a4b0ba50c603a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_m_u8.c
! 4f318151639c9981c52f7a4ce76d2fed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s16.c
! 059a5002b2862ac752087b42c48cc861  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s32.c
! e13556254214c6f13775f40f6a9fb281  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_s8.c
! 6d38c2ba9eff36c647ee7b09408b8343  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u16.c
! f7e7ffc722568d1a21fee10657830059  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u32.c
! 92bc81e4b39b7e753823d1758412be17  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_u8.c
! cde6b3da81df4311747f724e33b6700c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s16.c
! f40476fe26a221e83c92625025c55fb3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s32.c
! 82a9cabc7bff90ab0bc9966b98e60fd1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_s8.c
! 2417c5378fd09175caa2eaea84a06562  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u16.c
! ef379d922a8f15ff16a2e3582a92d811  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u32.c
! 2ad892207f5cff3a4c803fa7901bf341  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_int_x_u8.c
! df57db567758dce3a7a8240289131993  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p16.c
! 89ce6a09ff65985978159300c003a5ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_m_p8.c
! dc6ca994d75f7c18b0750c84bf2889d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p16.c
! dd33c0a3e023ab3851633b2b631e31d0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_p8.c
! e38c12b447b84e44a267a2fe9bedf8f6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p16.c
! ea193c46e54b47549f7e82f88af096b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulltq_poly_x_p8.c
! 7bd278b3287da9500290dfa0ae2649c7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f16.c
! fd22151d354c1578d27369d632319320  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_f32.c
! 246a2ffe703343b174a99092ba8af8cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f16.c
! 420898024214e68b292f72849966419d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_f32.c
  aaea531e9c3de4bdd46fdaed408b14a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16-1.c
! b359b22fa836d9e7f5838982f8de56b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f16.c
  d259cb258406f29f8c6afa4f94df49c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32-1.c
! c4081693c71496d5396658a666a54e78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_f32.c
! 432e312ac10ce1bef6a7063fa92ac7ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s16.c
! 1b8e3603f6052da6fd8e2f5d6a76a7d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s32.c
! 72379d5e92815ebb412ed6e6f6f4bd1d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_s8.c
! 6026c7e2d4f66974d6dd5aafd7b6e217  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u16.c
! 6715699411a72a8d5a70f931042afa94  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u32.c
! e0b1068787c353adc3f0506b7049532a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_n_u8.c
! e0fb41c228071210e416731131093bf8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s16.c
! 8de36315598d491bfb2bbec9c42006f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s32.c
! 86110293edc4cd2f23cdb99fe5023493  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_s8.c
! 3d1878a69d5add0a0b97d06fd0d9706d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u16.c
! 4181c1edf544c53a31b5713d2b319615  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u32.c
! 94eb9fb56b1480eb1fc727a0f19d83fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_m_u8.c
  5f705b44a993f0b6de2945f98dae8f71  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16-1.c
! 3f973a3033dde3e3562833553a1cb961  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f16.c
  53a08d4e473fb076c27b37f255073777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32-1.c
! a0f39412b2811a1389e2d10b8bb5897a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_f32.c
! 2b3bd373cb4e1c1e44ebb4de9f186ac2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s16.c
! 2e482e828854adfa29f15cc0801cde4d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s32.c
! 97fe8390d456f3525b6e11bb2e41578d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_s8.c
! 831d62458adc815897e161c3c6cb3561  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u16.c
! fa0d6d9cff6626e6f555e66fa6cea92d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u32.c
! 60d00b5319600e10168b41fdbb38c12e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_n_u8.c
! c55d3c023121132eae99b39e1cce2cf8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s16.c
! 3fc545da8f8ff1b53cf71d46d20cc768  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s32.c
! cf9bdcb1e20f6056fb55ab826b8e34df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_s8.c
! 4fedf8c482d8d13bcf5bc90d774a8164  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u16.c
! fd1629dd64d2f87d7bba53a04cc92636  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u32.c
! 4ddf0bdd1a00ae1241d40c9217dadadb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_u8.c
! afab86c9612797faa8b2c1f2f1ca4ae4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f16.c
! 7febc298eec8d10681c203ef28e8b323  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_f32.c
  6004db00746f4669b31ccac771057851  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16-1.c
! d65af3c33fd50e22c1af6d33bbda6a49  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f16.c
  2335e561bfb15455ffd3f710f41d023f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32-1.c
! 7fe7f31871635e77114dedc0224d9d6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_f32.c
! 63a9ff12ea387429aed3ebbe433eeb20  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s16.c
! 02adf729d1f8917dbfcc965a35b3fb7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s32.c
! fe701f5c048b303f9bb3ab53c4b1a246  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_s8.c
! e51c2bd70232361dc51ff324486396da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u16.c
! 35ed6b03b2d4565fcdb8c314bc104bd2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u32.c
! 45a60ba4e6dc2ba962740ff03b0ebff5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_n_u8.c
! eaca578057885ae943c817131017c789  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s16.c
! 665c7ade84fd151016a68d2cbbe94740  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s32.c
! 611aa964beeea1a1da3a9b01ac520b2c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_s8.c
! b9436ee142cf012cba4bc0227caee592  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u16.c
! 54347a155ea714bcb9e212dc3462b701  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u32.c
! c800aa91b52274f68917941cd1190c7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmulq_x_u8.c
  2dbce946b67e38561c8df9ff6da46969  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s16.c
  ae7c5f268de2c73d12a437493c3e7ada  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_s32.c
  b770578bb44b2ed666ed871f729ed055  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_m_n_u16.c
*************** ccc49af6593940ed5ced1085838124d4  gcc/te
*** 58356,58376 ****
  7cbcd746c8f2090b14593137cc4df570  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c
  3dc5f6805e818b3c1a3f93343d42b9b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c
  5c5bfd733a0a273feb9cffd702da9e72  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c
! fcd36904464f5b13ff948aee4352b745  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f16.c
! 5f8623b070a9d45613a4242337db4943  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f32.c
! e4a311c216945c6cc2753e4a5422be2b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f16.c
! b5fdb403b6aaeb19d128a84f7b554bf4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f32.c
! ae3d9d5cc1b83b4f3dc762c4c6b1b016  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s16.c
! 592a4d33db3d201b641f2a8c2a0c8542  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s32.c
! fcb60c8122452b02b289dc4e6d0d0d99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s8.c
! 78c466615171bd821c434249fe8eed7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s16.c
! 78b6aa63daa5b2cf0a7a82074c11b101  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s32.c
! 28be01cbcea12f5db3bee571161b54c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s8.c
! 565e0b6d2c064ece01598cae84ac1b19  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f16.c
! fe995c49832fc5574e53fb6c883fe0ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f32.c
! 0094bf3c19f233e41383367fe994a97b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s16.c
! cc05e569ce50b3bf6ef050ad8ce82810  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s32.c
! d5833cb7f06a24294ec62d5b0e78bd65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s8.c
  c56b79936b38be311cff25ee794f8efb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f16.c
  7285dcc610c016ea97a8cc9e33127cd7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f32.c
  3c54fee49e037ef3793c90a06c672355  gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f16.c
--- 61793,61813 ----
  7cbcd746c8f2090b14593137cc4df570  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u16.c
  3dc5f6805e818b3c1a3f93343d42b9b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u32.c
  5c5bfd733a0a273feb9cffd702da9e72  gcc/testsuite/gcc.target/arm/mve/intrinsics/vmvnq_x_u8.c
! 62694f581fe764466ca4415580a6dbc4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f16.c
! bfbee12f0e4f525f98435bb049bb04f9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_f32.c
! 5d9ed21ac81002fcaa38ebc8102a9322  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f16.c
! 9c27e0769b67d75b40dc9466f2f2ce98  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_f32.c
! 98a2593a3f377e4ffe4f4ff598904967  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s16.c
! 4b90ab5f620149babe6e25383a14465f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s32.c
! 9cc890fbe4eec978773fbc887d313c13  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_m_s8.c
! 6ffb1bdd238a17590caf829f049dcabf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s16.c
! 3e00ed9032eb810a68da301099f5eaea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s32.c
! 7ac4058195939038e5651b28a65b0759  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_s8.c
! a7eb6385a340274ccf0ad6aa3c64d943  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f16.c
! 9586769190ccc84b75e3b5ea452f92d0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_f32.c
! f45f4d69311f3bd407d30e9935a73b7b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s16.c
! f89eae6a939a89945124fa33f4a6fbf5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s32.c
! c038a6aeb1273da61d8e603dab7f6fec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vnegq_x_s8.c
  c56b79936b38be311cff25ee794f8efb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f16.c
  7285dcc610c016ea97a8cc9e33127cd7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_f32.c
  3c54fee49e037ef3793c90a06c672355  gcc/testsuite/gcc.target/arm/mve/intrinsics/vornq_m_f16.c
*************** de3b4aae7630eda8945738cb562b1966  gcc/te
*** 58438,58537 ****
  0802f88241104c6cfeee4c0eff01bf35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u32.c
  17d3d6f29ccaf9b064ecefe2387efa34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u64.c
  83ddff02db9b8b8340bcfe36e476e8b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u8.c
! f0b24f5f34b8dd136dbb82e8042c9985  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c
! d2126b9f4535cbec629c1a37f353a88e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c
! e08f8ad7f8b419982a6dc28bf2d06e6c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c
! 01a59fb3f6d699691ffe966ce912565b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s16.c
! 52e092145c321298609965fee876b0bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s32.c
! c703aeafea1b07d5cb6f430d10ed41d5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s8.c
! c90f64775c01b99a4d8c630e9c143db3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c
! 4b5ab57c85998c94a2d228eba06b591c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c
! 21a89522e9a3adfada9fbe77c0c886fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c
! ac2e0236fb56aedd8312ebab8983cc19  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c
! 70b57046a7fd6b983dc928905bcfd1ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c
! 02c08e6cbe84600968cd408b8aed75eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c
! df786d26be4d81f65a73006a42680631  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c
! 2fb8207176facbf5bce42abdfde2db06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c
! 4b784bd06e42e8a3da3553c72ca6bbf7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c
! 103c6ff3e15a251308fa471dbe974832  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c
! 05ede1582286e9a11d38a63c90a6e7e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c
! ecd43cd613e38e48c6c0bccb9a3b5b87  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c
! d5f8c68b125a0cc36ec460674cc04534  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c
! db1f526423cfa8e95d483e418fede2fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c
! 6be20bbdd6d6c691db2a312496565a69  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c
! 9a17ba047730d3b79d163833eb409764  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c
! ea83d241b400a016aaae7a8ec85179c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c
! 47583fa514c87dd3856849dd93496748  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c
! ab93eebdea1c3fe3d65437d1ad3daa08  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s16.c
! 73f357c45318636315d0e6d9251ce0ee  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s32.c
! 8e727b739eb4994cd2502ca19f90968f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s8.c
! b3add0674feba92bdbfa44d54a9ba78f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u16.c
! d99f47b7cac7c0dc255b026bb696d893  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u32.c
! 1585c181e5b7ade847a4d84d459bbd72  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u8.c
! b23ed350b5043f272d4eb2a0e8a125cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c
! c76b5a21f2e7dee297fadf1063f28e9b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c
! a97b45184d6b0feb3e46a9715564a455  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c
! 26b90b6f8e3ad68b5e0daa91ca8f20fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c
! 48fa81e2a2bd359884a375e1769bcb03  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c
! 8037651a9936b07258daaee15425797a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c
! e16b420893cb6f61e2ea1443a3f32f2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c
! b980638c349003fb3d171e3dc0dda78c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c
! 24e856c05a982e5991f9e36a5a43a8a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c
! 4526a3ac6f7531b8febdd1228677a60e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c
! e3b4db3a425507a8c6af49b21840e2eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c
! b665b5de88757cf2673c4eef65e2dd29  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c
! b111407030f24c50c0eca38d635f5fe4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c
! d7f14502a92c36aa32eb91d3b08126b0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c
! 76e81dba615e0eaa1533325e75ed7ef8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c
! 690db2bc09d4d59cffe457c0b00e3560  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c
! 47a1419d5d3739b96258877c3210becc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c
! 396239b933dd1fccaf557553735a7d9f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c
! fb2cfacd36935a2339c786c5214f0de5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c
! b843df5dcd51e4d4770f08821224c730  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c
! 3c736baa2470332d0669a59f86bc3fb7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c
! 73a1d6e0ccd67d3683fe4d030baab6d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c
! 573c0e8f9a73b1b664b7bed5d2f8bae6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c
! 85cc9c19916c7b28f9e091cceac5be3e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c
! c3abe148bad4105126f72a7bce3855b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c
! 7ccecb95e5a08fcfda0b61a6f6cc4ec3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c
! 76ad3f991d6e240e9ae89c2a51bed842  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c
! 070e6ae580050666439033525ed109e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c
! 855dd0596f2266a101c859eb974e90e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c
! f442220e56fd84137bc55981aa149a86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c
! 3bf413b92f8341fec79756f2cd98ed31  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c
! f7e75980a74e1c51e44ba10e15b037bd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c
! e766a72cca028040056bfa4654e119c6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c
! 9b7cc735bec57b9b01828abc9d0aa451  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c
! de58706bb939f2265786e1f2530d2a24  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c
! f668a7a3b565952614a57af8fc1b0774  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c
! bfca640a69f3c62bd74ad355c0a33711  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c
! a8561c0df3f85e1429d3efce12cfa605  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c
! 78f1f321ee1ccc7660c0c7609bfbd99d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c
! 004e13c49412d0fc5a09afe98fede128  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c
! 49202e5548b65d0f501d329d029fc70e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c
! 2dd23e38beca787732056d1831ffa103  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c
! 7d5c4d538e1ad8a81fc933bcb7013425  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c
! 0ce6ecf62c19721bf9df4140ec43f714  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c
! 91b889f4659d47a142011c0dcd46bc70  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c
! a17f3d837ab31156a1ae01fe3ff4c561  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c
! 8c489200b3c39bf73c82e9d2214c3226  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c
! 3816a8bc5804979a8463f55055d7d985  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c
! a1a9421c964833d86670954eddf163d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c
! cfe9d9dcfa30b78af98e13dfbab49afa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c
! ef092a53cb8eac5467d767fb3c6cff00  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c
! 73526d5eb41ac9d31c9fa36d739ce412  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c
! 3ffd8c166842f8cccd5fb4073c9e84c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c
! 6082afe083b1709148b48d2992f7b0f1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c
! 698e7efb739283196d1f0a4a0082424c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c
! 6fa028ee5565623d9d58db4b8119f1bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c
! 7912dadb129a956b232f2c8a9dff918a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c
! a1f272e434a97c0e9768f00374ca92ab  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c
! b24d527170e738f0fc6c68a5d6e8e557  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c
! ca140ab4fbdf0e8e13e7a77cf80529c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c
! e829a6e95697d18ca052ca07f67b3ad1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c
! fa35fa9b3e275246c864f9652960ff3b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c
! e337be8014e8cacfd22d7fe306e40a23  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c
! fb0f4b9dd990bceeac13e43d5b06cc14  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c
  cd55be4e297b1d02efc597c991dcf2eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c
  d0ceef8ad5a45160e1117d090c26b39e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c
  e7c212f0cc51f09a76423c6f2d18c62f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c
--- 61875,61974 ----
  0802f88241104c6cfeee4c0eff01bf35  gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u32.c
  17d3d6f29ccaf9b064ecefe2387efa34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u64.c
  83ddff02db9b8b8340bcfe36e476e8b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vpselq_u8.c
! ea8b4ee282e9a8a4810c1c4f936a4308  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s16.c
! 30bc19ff59ed7088577a3ec5b8ec143e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s32.c
! 1935866712e0d180e0533de7370234cd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_m_s8.c
! d95bd33ad079df3aed532fe66d44926c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s16.c
! 5010535d47d646434706cda7c5b5d8f4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s32.c
! d5e4bea7847bb1ff7c00f9465f73afd4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqabsq_s8.c
! 9fb8de41c7c6a6aa2440a7b2ec3041e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s16.c
! 70f942894800cdbafa455a8dcf31085d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s32.c
! 30d0ae2ec873cc1cf27e594c441f995f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_s8.c
! 4e6a72adc9b81fb94b61e00fb255b0f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u16.c
! e789cb7038cb757d4cc6c1d53c38a103  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u32.c
! e59ec117b21a360f66f4f7f0019de31f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_n_u8.c
! bf26ff5250a5a7cdabd726b27f22c0c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s16.c
! 16be433b5acfe7ada5df2882a16bcbff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s32.c
! 88f01cd96a57170a8bdacab3637e3050  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_s8.c
! 462539364bdbc2c8dd0cce0f8bc1e7e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u16.c
! 6abec3fae347da4f487500c61758fb88  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u32.c
! 00db825ddaf29e54355e3ac1ee9375da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_m_u8.c
! fcc4ab9d515d7dead97cff9e227a0c74  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s16.c
! 8f66496ee471a3a770c01171cfbba6d1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s32.c
! 9dfd504afd3f7c69760a7bb4be305345  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_s8.c
! ed6afc9aa005400e4ed02b761bc4b4ef  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u16.c
! 159a3c69ff15c3619ae2d06acbcf67c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u32.c
! 42be25405bde30a022d6db19f2c1551f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_n_u8.c
! 0d59105fed506dd2cb861ab684cf0ada  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s16.c
! 80c9211191db1d7db43cf41572c6cb0b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s32.c
! 9cd30f30907d1dcb044c214ba6ccbbf6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_s8.c
! 5f203b3ed3a1ec26eaf50fb1d4b5ac64  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u16.c
! 610d8150d83bd7d7e02c6e0ee6953be8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u32.c
! 02025ed5b551bd0a5e4c4c17d8a62641  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqaddq_u8.c
! 663fa703f02759a4dc09820d760e3ddd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s16.c
! c1f3d8eeb9fe1ba98c05834d2e20f727  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s32.c
! d825fead9936fa6529c986eca2288226  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_m_s8.c
! 921ac80b9692e89e67da9f503dadccc7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s16.c
! 782f7c6f317d1df6a3db33e9f0ad904d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s32.c
! 12712b7cd48c1b87c1933de07ef6f8b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhq_s8.c
! e5d6498ba5c575488b2cfd4d2e75ff45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s16.c
! b633cffa0cb74056e7eee4ba25f7847c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s32.c
! daf3cccf973b5e2bdb081899791bc35e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_m_s8.c
! 5717fd0d80c9d824438b3435d2377e4c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s16.c
! b1cd48360ffad48427fae0335416afe3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s32.c
! 9b626ab0130c9b4a000ab7d230a49730  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmladhxq_s8.c
! 25db60e24552d7c66a18cc2f1fcc9c09  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s16.c
! 39c0b75d39d91987ca5486f4976b8041  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s32.c
! 9b81d965aad6b44e9860dd974a32a9db  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_m_n_s8.c
! 129eda90e4237f0d546f11ba154cd7f9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s16.c
! 9666a9749700a4345e38dbc5411c168d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s32.c
! 7ddcac44477dca224e5caa0a43352ad0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlahq_n_s8.c
! 1a5743c6f93351a1f0fd82848008c373  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s16.c
! e74e53c8a0d62ee3d39d40baf5eefb2f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s32.c
! ca868946f28512f5ed95e4b1563bf378  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_m_n_s8.c
! 4fe46a18fa2778521709445d700109a0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s16.c
! 46e1da0a3cca1f08b693fdcbeedf1404  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s32.c
! e629ce8a8925e431c883588730597556  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlashq_n_s8.c
! 796c0ccc2854f7822c26d55bf7c2b78d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s16.c
! 98dc315da2c3c72f90680b4fedef8218  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s32.c
! 8802d4b8d18a8fc62c6f71376c5a01ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_m_s8.c
! d28e612083217a13f8d0785e5fd8e869  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s16.c
! 88087ea7f5dd4ba34dfd83a2c8f1640b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s32.c
! 0227e6907873e70e5e2d287f8369ea29  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhq_s8.c
! f1ff0eff884001d38cae102ac0ab50ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s16.c
! 9061c6c39e107accab682599b46fb473  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s32.c
! 62bf79da3909f8ffc95f2f987d2a2110  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_m_s8.c
! 7a6ce057d10e54ff5c13b782abbedbdc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s16.c
! 09c19150bda18700743adeb4bc8138d3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s32.c
! 810d718da92cb0cb30620184fc75e725  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmlsdhxq_s8.c
! 43d87cd1ac719b42288afb5da8c876e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s16.c
! 234befd7b03c58eb18b50a45d8c30a7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s32.c
! 05fe253ca672e54ddfea310a1b63c41b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_n_s8.c
! 43d9789441056888203f15a0160c0c28  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s16.c
! ff0b11f787e9229ac231a919c8465870  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s32.c
! c8c64104e80276a43574a189081229bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_m_s8.c
! e4e8127f04b593c9b3e1393c307336be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s16.c
! 5b79fe2db854d75fa75969d443746674  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s32.c
! a2bd0f23508ef816e2db393d40ebc073  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_n_s8.c
! 476b2c07fe4f660c59bc9b51b5035dc0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s16.c
! 119ab59bcf84e4b1acd0144f6329ccf1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s32.c
! 800c8c8b4dc0ca584ae13a99d4340a3c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulhq_s8.c
! 9678487c3a1fb7fde39cb9c65ce14ab4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s16.c
! b2b60b7ef4775248fb33d8de5a82fa17  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_n_s32.c
! cc072f6c64eadf0e0c6fe4b3b282c972  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s16.c
! f4eef421d5f924598fb89d2af50dde55  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_m_s32.c
! f671be7608ead313b350b0a8ebd174a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s16.c
! 1e908e5a4814934d4dcc486c00dfbb79  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_n_s32.c
! b3047b3486d9d1613612c63c11f607b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s16.c
! 8d0824882465c710086ecde645eeb885  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmullbq_s32.c
! ad1108418e69c13cad7c1a655db3c6fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s16.c
! 236cd07bc30e778dc603b733e1888394  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_n_s32.c
! 6b88bb7417c95ccb02d4143618408bdb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s16.c
! f7f8c92c9008c64aa35387ea2aa6b566  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_m_s32.c
! 38d39d280112d1473830523ee3b13a75  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s16.c
! ca6d86f0e9609265159e2b2a7b96dfae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_n_s32.c
! 589c184ff4768848871221c6b7319307  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s16.c
! 532dc00a7a3215cacce260a919d76c01  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqdmulltq_s32.c
  cd55be4e297b1d02efc597c991dcf2eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s16.c
  d0ceef8ad5a45160e1117d090c26b39e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_s32.c
  e7c212f0cc51f09a76423c6f2d18c62f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovnbq_m_u16.c
*************** a7d65df71709c95f3fd00e2e92e5eb11  gcc/te
*** 58556,58615 ****
  403e7bb486f4296fd23c64d1ebe68550  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c
  6bed8eb4f256c4f5f83d00984857ffb8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c
  64d802ba1035e60d9ca650fad4aabfcc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c
! 7c20753c1e353e52b14eb23d20552b2a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c
! e9471c3659e234dd2a4aa1624e053de0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c
! 4ebb8767cb0cde97cf18781dc6f5217b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c
! da20d3e1a05639a537f89bab6369e56f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s16.c
! 79583f2e7dc40fcaa4d1c3335db8d47d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s32.c
! c56741087da1777496be20ac0a0325af  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s8.c
! db87bab0072ec9a23f264ff60eade79f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c
! f48544e3aba16da60dc121a654c7a003  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c
! 761c1be945add645b50e7724d22945a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c
! a1af59178b73737ff2489529d85e2c57  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c
! 7aeac2caee9924a6bc998f1c1ccab60c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c
! 3df1458599d1c365694a3e7ea171c22d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c
! 46e07a0428d5455197c9a8ab64827361  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c
! 4485c23d914e50861035dee3f78d96e0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c
! 7b16b02fe8b327dc9589fbf7c9b04ce4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c
! 89ea0b3d3a28f821504828a1bbf84cca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c
! 35ddc6b3f6f222cf800e10250c06f1fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c
! 69df369d6e0f93e11c98ff18c72edad0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c
! 9f0d25802c02e73b18e32341cbaa6bd5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c
! c4593274abae0d94b934dafb850f40fe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c
! 53b6f11a9009c28fd19b85fd2d2efac5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c
! ea840ce29acdf6c331d7a3d4faf89a1c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c
! b2c30ede768b29acc766b2196d35097d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c
! 8d7a369292a5740095698471dac74b33  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c
! 59ca7c0ca9a47d903525c583aae22491  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c
! 0a94e3ba6d280fb2c100f65ea5a83028  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c
! 5653afa75cc454f3b3f8d74b89f972d7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c
! b986d5440ba5117c6624bbf314190eaa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c
! e53c6e1eebfa43b8dd4df70fd4546318  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c
! 7b6966376dbf986502feba108b10784a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c
! 5d50dea78c750dee5b1340d8be24c5fb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c
! 564b82530e1ac066008dd4eb51e1bdb8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c
! 7bb3da65944d119e056f91040499bc34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c
! c9f9b1800a25f50758e323cad9e69261  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c
! abe56d3ba7243dd681f1f29b3ecb9777  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c
! f52d922fd78a5baf5807e5428633dd54  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c
! a8cd18e4fa0f6af9d8f9c67aa4a258b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c
! 1daa8d6d5c1ed21f02c30c89a700bbe1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c
! ada3310d51aca6bdba1dde07e538192e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c
! 96844c3c16323fb7dd6f204f5ee36522  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c
! 77fc00c91927c2740f2fddadaab010cc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c
! 571baabae97066d948c5252a6491acb8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c
! 767ee5ce73d19cb9d3d4235a1c438bc7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c
! 6932c28dcfba43bd7849bcd01214148c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c
! 8203b4b62882736a5a9cd46778087673  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c
! 2c1412e42b7a25689e33581e4584d9dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c
! 8cdd2c9241ed0dddad2f53104fcf6138  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c
! e39ea4e45f68a04956e2a4ca299e81b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c
! 8a45348c1203bdbbd80f5bb868155b92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c
! b3ce9dbcff38d9507206ddda3c5757b7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c
! 8e5a920c8fef761ff9e2889b6e4638a7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c
! 1537d3c8f4099f3de873e0518baed355  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c
! ef689062e41cf113179bddb786dd2554  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c
! 6c3c00ec2e29aaf3e1d1f9ead554531c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c
  c3bf301c95eacf7e96b6baa04bcfefe9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c
  4628118ed8381bbf5edd28e493cca21d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c
  31a6f4768b326fef3caa91f89e6416c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c
--- 61993,62052 ----
  403e7bb486f4296fd23c64d1ebe68550  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_m_s32.c
  6bed8eb4f256c4f5f83d00984857ffb8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s16.c
  64d802ba1035e60d9ca650fad4aabfcc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqmovuntq_s32.c
! 75653bf32de69c08490817c097b014c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s16.c
! 632d7d3f469e0aed51444ab9465cb347  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s32.c
! 4edd673d0a292dca18cc410b6f34f8e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_m_s8.c
! 2987f433fcdce2cbd688bb8e192651a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s16.c
! a9b3ab749dd7f3a408b0d61c534073df  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s32.c
! 66743fa321afd1eca4ade6ee45fbe1bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqnegq_s8.c
! cdf7451a7754ec20b23b1234d1b57531  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s16.c
! 6717c234721a4b1eb92bb9378b1a203c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s32.c
! 5c19bc21f0ce6233e1d9d850af83c08d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_m_s8.c
! 323338903fd6e5a4446c1db13d57ad13  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s16.c
! 370e0a57356edef7c94ee1c6f9022f7e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s32.c
! 218160e1c148b899c4ebb05aafa4a833  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhq_s8.c
! 595c05c8944a1d92e395bed0d9333f8b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s16.c
! d36bb5e24de225ad0bc50ab9017a3b0c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s32.c
! 2fe69f947f397a620b571688cc2935ca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_m_s8.c
! 8dd7ebdad8b60743a40ed2eb8bffc001  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s16.c
! bf656b5b651493eae53f2d9d2cf96352  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s32.c
! db5616ee6110418e59378d7c24b436bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmladhxq_s8.c
! d4990889baa393dc1c8d466fe1378906  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s16.c
! 456823d2f25d0157790d86a833f93ec1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s32.c
! beb6c823c633289984c8eb1a8ef11536  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_m_n_s8.c
! 290b31bf8992821b8b4f21b992edf1ff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s16.c
! 1a476055352c9e1f8959d00dec24203d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s32.c
! 695d56c48b8f0b164337c53bb1b49584  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlahq_n_s8.c
! bfd85e06305ca9087506300d7fc75c0e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s16.c
! dcd0d16ca53a0208d834716494a928dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s32.c
! 917a2820df66f5b6604eb9065726e682  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_m_n_s8.c
! 44828fa0a2e2ffb415d7a4df85761aa8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s16.c
! 0202ce95c02ca2c7cf0f9f801abe8ec9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s32.c
! 32c28a73d6176e0003e3bfb1bb7790d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlashq_n_s8.c
! ff591d4f8a5cf5384f6fd562c9c66f41  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s16.c
! e8462289b8891279b6384032e98d8199  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s32.c
! b8b1d590b452542c9eef3604dc393d8c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_m_s8.c
! 5164a5027d25fbf40992aa2f65a5563a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s16.c
! 262927ad7d3db6be3b3d1d4e27c0c8ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s32.c
! 90914a39ac79d3af02decbbdc25b83b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhq_s8.c
! 27cbc0daa50816c76a3a87554e5683b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s16.c
! eb7490df8c51dff2684e71c10e5d1285  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s32.c
! d872c31c3737d7aa8639126212e123fa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_m_s8.c
! 5122058dc27ce62de9538b9ed60c7ec2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s16.c
! f7240c27ae564da0b4accacbc24c17d6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s32.c
! 8e0552b60a0782504969c629e848f910  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmlsdhxq_s8.c
! 107f1035e30b811106e7f1852a57e7ec  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s16.c
! 81eaad8842d27849959d71d07aa063c8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s32.c
! 3444184d4056a8255a5ae4fe627cfdc9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_n_s8.c
! 7dc1685445a46264067b51aed0b2a88d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s16.c
! 7d83c0c7276ed5142f2e2f63a7e48999  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s32.c
! 6eaa50495a06fd094adf4a42c3749244  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_m_s8.c
! 0222d8840ee0393adbb66f28201463e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s16.c
! 98c2652761cd702b09b273d068daf7f8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s32.c
! 1f56ef76e02ca9a46a537a1dccca8e49  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_n_s8.c
! a415002eea65522926e57f032dee8376  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s16.c
! 41eca3205cd451fbc96cf795a9b8553a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s32.c
! a8eb69a7c8b1400e347ad448faa94b05  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrdmulhq_s8.c
  c3bf301c95eacf7e96b6baa04bcfefe9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s16.c
  4628118ed8381bbf5edd28e493cca21d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s32.c
  31a6f4768b326fef3caa91f89e6416c3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqrshlq_m_n_s8.c
*************** dfd2bc7d3d6f7f08c497ccb82f629398  gcc/te
*** 58724,58753 ****
  bda5b19497e3040dcde5e63bf25117e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c
  a95eb23ae9f7290c7b6cbf7e835170c0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c
  e02d4b5a1531e0ad25cdbd3437d4b0ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c
! 28d0111ee1cfa37e2fb8bf32f17236e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c
! 6d28c21f3f05edbf327a420949f5c64a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c
! 95071f098b387e10a661f6971cac3b07  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c
! fda6a09ebaa650a20b4df20a115f74a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c
! 100cb8af69e644bf24777e744dbae81b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c
! 8f4fdc5e0cb52f580556df5c0a3cd324  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c
! ec793ce45401a14d3078dcb99fdaa8ac  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c
! 51a790ec0377962bda84edd3b601a5c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c
! 53dba491df8c0bdcd308515d2f9f63af  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c
! 42deb820b4eb1ee0974f07abed6e57e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c
! 8e6a788d85a3c5c6945a7110f0487277  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c
! ee992775938de9eb5c310f2432ee94c4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c
! 2ccb1f3395f43907498938861414c320  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c
! 4d1a4adb3e0bf08aebf98afb77a8dbdf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c
! 40b23bf78be30dfea0c5fc19683caa23  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c
! 75e5c3652edb85ff5e619e60a002f2de  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c
! 247d8d3f82b64941f3d81e4c524bf5d0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c
! 03da6a53485c40509dd7b3415d16ecc7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c
! 5883bac051452462a378128e05d735b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s16.c
! 30b4b1adf3e5433c3f2824e3235d9909  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s32.c
! ac9fd46cd935ff27e6ddeb6dd6e1eb72  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s8.c
! d69b18e61cbbcebdf7ffacdb71da0471  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c
! c13632a571fe9b99220cb4398b494b45  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c
! be95d2aeac3eed9ebf603c5b2e32bd80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c
  b4fcdf3cb05b2bff3bb9a856565b84cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c
  9ef945e29fc71ecd898a3aae88ba1da6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c
  312fb2c034e3b25ce55448c9a1dc1a9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c
--- 62161,62190 ----
  bda5b19497e3040dcde5e63bf25117e1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_m_n_s32.c
  a95eb23ae9f7290c7b6cbf7e835170c0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s16.c
  e02d4b5a1531e0ad25cdbd3437d4b0ad  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqshruntq_n_s32.c
! 0827656d5303a2fd930ba0a3d3c56170  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s16.c
! 704638c38a8f17f704de221e1c154738  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s32.c
! cf0f6ff6d02d15430a2e7545f449345e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_s8.c
! c2bbaff0495c7a901de93562f5c52b4b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u16.c
! 5af0f2a257a992488acb57732ce8da84  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u32.c
! d40b8c7a37e96505aa1de573144c8f66  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_n_u8.c
! e7e2969d1ff77a9283e3be42be5eec1f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s16.c
! 10c2f099726a38c9001257571252ca7a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s32.c
! 0320873a6600dd173a1e920533aad9ee  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_s8.c
! 56b742be3208d74903c22d0809054fa1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u16.c
! 9b7219ace6a8a5c34b4ed173fb48d49d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u32.c
! dab353556fc5cbd7b5f94ebd2d0b2e4a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_m_u8.c
! bfe05a5da855f81feed8971874a10795  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s16.c
! dfc355c23a5fcc4035f14618ff4c00e5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s32.c
! 4600a991df64da61d22fc16800f6db24  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_s8.c
! 4459084991247bf3fc7baa2958b6861f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u16.c
! 20663ccaec483ddc17e5566256cbf741  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u32.c
! b47dde1db1b7d3d9e3679586fe9a37f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_n_u8.c
! 74aee7c6a1942946ac059a8134e7e07b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s16.c
! 158d3aee4863be30e984c554af57c7d0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s32.c
! 6fdda6e36a38ca97d7765e599fbe7afe  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_s8.c
! b0c4384e50d903faa7199c72989c8370  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u16.c
! f14d78689321d37aefc3ccb79869fb1b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u32.c
! 383ae498b7c6601cd0d2f61580f49d33  gcc/testsuite/gcc.target/arm/mve/intrinsics/vqsubq_u8.c
  b4fcdf3cb05b2bff3bb9a856565b84cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f16.c
  9ef945e29fc71ecd898a3aae88ba1da6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_f32.c
  312fb2c034e3b25ce55448c9a1dc1a9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vreinterpretq_s16.c
*************** b58bff75c9732591aab987147eb9012b  gcc/te
*** 58783,58788 ****
--- 62220,62226 ----
  2e93aff6cfc94100cce717d7e77d11f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_f32.c
  f276db3db14e3fff8d49d3f7611a7a20  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f16.c
  6e8df10ccb034f48c88bd9c59ecef1f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_f32.c
+ e7032facf022236de268bb70ab482fea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16-clobber.c
  fa1e0602b17de2ecbbb8455a83e2f0f7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s16.c
  78ffc33f17a73e5c814c4f31fada961c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s32.c
  f25b7fff93f650481888bf0167674561  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrev64q_m_s8.c
*************** b9d97d55c492f1620112420ec1b54834  gcc/te
*** 58821,58830 ****
  f088407d6b2bde6e3c1137eec9627f06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c
  174f59684cb4017d20fc7f31b980edd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c
  ccd2ae4de7d98ed337670548c8686a86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c
! 83951ea40443494716286afee81cacd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c
! b1ea654cf2cde60fbbad0c865b2ea21d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c
! 6c18352370b134a3223d550abfbe80ca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c
! 4bb1c885dfc2cb1b2fbcfd5886deafc2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c
  be7234dc32a3d369a0fd16bd5a7676b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c
  a085786be4e38ff64524afda05226ac3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c
  b1d8144cac54a2b34249eb33a927a85d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c
--- 62259,62268 ----
  f088407d6b2bde6e3c1137eec9627f06  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u16.c
  174f59684cb4017d20fc7f31b980edd6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u32.c
  ccd2ae4de7d98ed337670548c8686a86  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrhaddq_x_u8.c
! 39315b271611f139106c376ffd88bf99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_s32.c
! c52fbc0873be6eaf48ee4c27426a162e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_p_u32.c
! aca6dddab9c138e2c46907fab284123b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_s32.c
! e4c5f265c082b3f597286d34410118e8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaq_u32.c
  be7234dc32a3d369a0fd16bd5a7676b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_p_s32.c
  a085786be4e38ff64524afda05226ac3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhaxq_s32.c
  b1d8144cac54a2b34249eb33a927a85d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrmlaldavhq_p_s32.c
*************** dcf1d060a83840e8760abefd11ebe21a  gcc/te
*** 58895,58930 ****
  6b258153e02bb64dc1b085a9896bfba2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c
  f586e5ec60fafd359accfd4fccd419e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c
  70eb015befac290c751d998ff6c27aff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c
! 67de698d4762f3f5e60903a283c88f18  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c
! f6d8c14612381434640e3c8251a612a6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c
! 163d180af1e309ec2158ce890545f254  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c
! b5ec442fa7859406b2f6038b101de6dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c
! 169369593a8e91adc78cae480633f367  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c
! 273abfc6f50ee5b5062f4c9289d5ebc4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c
! 064c5ba6020c5ff5d4bccd22db2cf2cf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c
! 9d41dc5de9811b4b5d527aafa445408d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c
! c96ada71724fe241533d992090b28061  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c
! 7c5753941b7830c1b5037f3e3907bfc0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c
! b3c390a2ea7a4f05b7393c4ae2a7c3f3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c
! 6cb4dbf4590b8d6d09b41e612da214aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c
! 261d8e033d81ea8487d049f222f87cc3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c
! 2129ee5166b44a06f29dbcb65ff322d8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c
! 363ecac89d6b9aba39bf748d7a3847bf  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c
! b9ecdb6cb33bb35345529cca45ce7eba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c
! 39ca2955e2bc38654564a1ff29096b97  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c
! d8fe7a5d217285b77320d131de97c0dc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c
! 21ee11b2734930d7349f44f58751c15f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s16.c
! b97df2d51323abcabfb09a5df5e0309e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s32.c
! 9b578c14833689f73e21757bb31e52ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s8.c
! 929c1e7f6adcf752a7ed97430b89ef2a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u16.c
! 1df1d3556375c2bc149893d6ca562e9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u32.c
! 70e674cc4f320f8cb21f41aa8db647ca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u8.c
! 569eabf9a3bce29838957335ab2e03ae  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c
! 5346b289f78ae14c6f06975c87b8b866  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c
! 04a0a137a92e7d1ae48fa4ea5e51fb6b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c
! e890457e597a3be1cb3682ba19cfd908  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c
! 8ebf3c1763756d2b58a4f2f4f6990af1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c
! f256238e1f0bc370e92b6ebee5a49825  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c
  9ab7c52ed692331ac17f3a77a359e6a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c
  0b11dbaa0f60f8e4ea321f4c55f621b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c
  515a1f70293c50ea8503d02aed850da2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c
--- 62333,62368 ----
  6b258153e02bb64dc1b085a9896bfba2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_m_f32.c
  f586e5ec60fafd359accfd4fccd419e7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f16.c
  70eb015befac290c751d998ff6c27aff  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrndxq_x_f32.c
! 90fa8496dbecdd1eafc5a0c9f9403731  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s16.c
! 73852814a308cc5c161fe3cb891cc8eb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s32.c
! 54a2aaf7359e8e95c7e5acbcb5eb74a4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_s8.c
! 5e0867209cf1313e0a751f3ae726815a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u16.c
! 1174456586e34b651f631b464109462a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u32.c
! aba9ba9d780cf93fce7a320ba4241c69  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_n_u8.c
! 913e779bfa4f3416a653690d25ed86bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s16.c
! 530feb5b175038443a82c49a1c4f80f1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s32.c
! d47295e0b65f13b7120d4ce1f4501474  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_s8.c
! d29eb1d4b30559193ba1e114ff35f014  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u16.c
! eac3c6cd21aea4e6ef3ac30b56c692db  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u32.c
! 060a8c8b4f184eaca455a074ff2702f1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_m_u8.c
! 4d03db10c511fcfbab292b3a79288b40  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s16.c
! e8cd287ea29a83003235f11e9470c0f5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s32.c
! ca6b47e99ca1bcb1a0ecdd45823bc79f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_s8.c
! ca6660d4cc3e981b277ed99340b2b968  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u16.c
! 9aa32f19bc669038d70721bcbfc1f70e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u32.c
! a427580dc3a21069a9b88e524a9cd958  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_n_u8.c
! 73be7a58377a53d3b130a292127fd1a3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s16.c
! 0853d1a10e04be61807c6e48831a4e82  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s32.c
! a38e541fe24c87504e025810afdb06bb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_s8.c
! a0dbd2d6d35ee250aebc608596d57752  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u16.c
! 747fbd06981bd5e755ae29cb6149e943  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u32.c
! 226867cfd5ac428299e2ff962b6e296b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_u8.c
! 24048b619a9a386653f66b77c8c4711b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s16.c
! a975c1fbeaa9693f3ca09a057cd7e008  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s32.c
! 72ca491494ecf6aa061ef5e1fa68a007  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_s8.c
! cbfcf18be204f7678a28363a8bc9c3a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u16.c
! 999b62740cd4995931c90a25ba836848  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u32.c
! 093171f11fb6e0df610738fabb482310  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshlq_x_u8.c
  9ab7c52ed692331ac17f3a77a359e6a8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s16.c
  0b11dbaa0f60f8e4ea321f4c55f621b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_s32.c
  515a1f70293c50ea8503d02aed850da2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vrshrnbq_m_n_u16.c
*************** e2a37832d2a2faaf2a26e34f2f625595  gcc/te
*** 58968,58984 ****
  9f716bfa41d2ea73b51efc144e37c069  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  8b14670727e0420852e05a1ed690b3b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  9f8f1fdf181b32325dcf53c574e0f3d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c
! ef8c61e0b01e798514442f95fdea7a49  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
  3b9b0765f651afddc1fa59941cf48ae0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c
! b10cfdb237776099c4180833e3c5ba65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c
! 619b5a8a36d7d063f7ce43cc2eff5560  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c
! 905227377ead65a55eed190a9d85e9a9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c
! 453b61d72ac14797e09e2b64733bb3b5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
! 659833bfb3162e1c1facc6b8a92b4f93  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c
! 8f7269908b469dfc3407b1a8d980f69b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c
! dc5c97486293aabf2938431e5a6a104c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c
! 04feab40a05196b25738dd6dc329d4aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
! 236fbb4d62a1a18efa9ec3ac3d4a5791  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c
  a21c5da0c94b3574447973ffbf4a95ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c
  7dfc4b4a31c672e09cfda5ef1cf3aa43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c
  1d8a7fa8a125cf4d2a5271f018ecf0b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c
--- 62406,62422 ----
  9f716bfa41d2ea73b51efc144e37c069  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_s32.c
  8b14670727e0420852e05a1ed690b3b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsbcq_u32.c
  9f8f1fdf181b32325dcf53c574e0f3d4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16-1.c
! af70db4174c1713b590a6d5ba294aa2d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f16.c
  3b9b0765f651afddc1fa59941cf48ae0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32-1.c
! 25befadfa1ca09ed85081c818a46c071  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_f32.c
! c9fa67c20fec9ef097315c2e0664eb2f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s16.c
! 0e904d54afafee544aac46db74a0fb78  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s32.c
! def367f33eb6f2d3b377c08209d4e3ba  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s64.c
! 8260100dce01c5f54338df06aed56da3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_s8.c
! 3aebb2229ee3c92f32168bc434c06dcc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u16.c
! b6849ec20ab5271453eb6a6910746ff2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u32.c
! 770546f9f98bbba226ff4a00ebb7d508  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u64.c
! ed0f72d390ea11c3168e5e335bdec21d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsetq_lane_u8.c
  a21c5da0c94b3574447973ffbf4a95ea  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s16.c
  7dfc4b4a31c672e09cfda5ef1cf3aa43  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s32.c
  1d8a7fa8a125cf4d2a5271f018ecf0b6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vshlcq_m_s8.c
*************** abce9fa40a22c2c5dc20a59011f7387e  gcc/te
*** 59252,59318 ****
  69075023cafdee99d0080662970052b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c
  d80c806917a7f12944ded6b73a851be4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c
  ee88b68d0d38d4a93bda3c89bedea923  gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_u32.c
! 9ca5c334211f8a4df22743101ca51865  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f16.c
! b0c5636e9addd36efa9bee57f980d361  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f32.c
! 13fd69cbebeb2d3b51de366ede94c93e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f16.c
! de2d45fe56d675c94c9c7102d0469f37  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f32.c
  870fa1cfecd057944f70bcbe2dff451e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c
! d22f274a7993cdc1fe8f3cf73ce92488  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c
  4e932b45f9481cee6dc4771c74e3c7c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c
! e1aed294cfa9acb60f34c3cbf5612b70  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c
! 0e273aa6076b72d7de642b79b801b75c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c
! 1daf0221453418a0f660c85e68c4eb88  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c
! b85c8a2e96d005a451ffdbacbc96cdb4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c
! ba85d7d880378f24a09d331582cc1184  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c
! ee420fd554fae7bf9152eb2be4630894  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c
! 8dea6f21e5d2da12529f0e0d1bf3a7c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c
! a0368d94d8bec35cdbacc3625bfd4013  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s16.c
! c963995544b26f957ea897c641f56696  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s32.c
! 9d8e31829b484377c6233a8d8f9f0bb9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s8.c
! fb062ff24bf2736372c8ed58c3e101f8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u16.c
! b05e74746366ffd0b8447c9679d99128  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u32.c
! c7a51089b336b2d6af419c70d085ba9d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u8.c
  6dff99b745a5088c0da8355aa48e8109  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c
! b02db63853e45a9040afc062d561bc34  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16.c
  eff932b1314a826b3305f16701653f80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c
! 7be2d6fdb0a7b8b01dde4fdbed0c4dcb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32.c
! 15b8bf1988e87a0e09cf6dc300a6433c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s16.c
! 8592836fd192bfc03baf32b55676935f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s32.c
! d323fa4b38eef426ea70d5bdbd0e8873  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s8.c
! caaf2ee02ede57a30f46e30795f7b03a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u16.c
! c0741fa966ec8cb3607ef2edda292f19  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u32.c
! 35e5b6dd76b55bdd4f8c7a5ac4788eda  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u8.c
! c0a25d38514c7c909586157f72be39be  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s16.c
! ec4a7ef0d1db6eee50c41b55a29eefca  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s32.c
! db0b3a9ff7ce732782046c6875134c99  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s8.c
! 916c8191fa032494907729aa43716a75  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u16.c
! 36267a30dde755c615a9650fffc84b83  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u32.c
! 2295d0cd15facda9627dd4906dd08222  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u8.c
! 9dc41e812674d5ebf435d6ecf6c027a1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f16.c
! 625646e26902f4d7ecbcaf30e41a379b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f32.c
  ecdfae9dab471c7510b30704ac817db4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c
! e26759ef593ff162088f262a5e53e9f0  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c
  c5463f57e474e0ee1551b52c786daf15  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c
! 8d0cf6e5b1e72f2364f34e7ebed670e2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c
! ce416b71d30727b2789b47ce92560930  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c
! 2dd613aefb9c1fbc791d55e0f12bf19b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c
! a78581ab7bea7dfa31a8bb37df0bf360  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c
! 5cc12580dba31e989c34bf104cd90c3d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c
! f3eb4b32af3fcdda945d5196906cc31c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c
! e3c29d80edd7131235d02512539e9f64  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c
! 855a79a197addb094b02a708d0f9b52b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s16.c
! 65172d86d1bdd9c1126948d6a5215f65  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s32.c
! 8426502360a32923a48343deb838ca72  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s8.c
! bc23d7c97ce5cd4d925d2584ba26e8d9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u16.c
! 7b89c0d503d807b8c470013ae87ac965  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u32.c
! 4f4647fda4b51e236989d04766be3f50  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c
  23988252db151973cc6a8a718310f805  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c
  1b1caac6115bffedba10607ae46ecb1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c
  dd8187345c556677b24a6d6363dd2cf5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c
  140114add4d912efe3ae58837e07a2e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c
! f85ec28e0fec0a26395ea93637d74f62  gcc/testsuite/gcc.target/arm/mve/mve.exp
! c182f14c0ce0f393486f83ecb5d4dc84  gcc/testsuite/gcc.target/arm/mve/mve_load_memory_modes.c
! 93fa7d6fd560d991c8d38fc6f4c828b9  gcc/testsuite/gcc.target/arm/mve/mve_store_memory_modes.c
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
  2d75e6bd9379b6e090e6104b97434376  gcc/testsuite/gcc.target/arm/negdi-1.c
--- 62690,62790 ----
  69075023cafdee99d0080662970052b3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_s32.c
  d80c806917a7f12944ded6b73a851be4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_scatter_shifted_offset_u32.c
  ee88b68d0d38d4a93bda3c89bedea923  gcc/testsuite/gcc.target/arm/mve/intrinsics/vstrwq_u32.c
! 471a4adf7f7f6c36a9f8dcd63d7c9f92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f16.c
! ded2a903704f5d207c652909ea0350c9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_f32.c
! 7213a728fcca543b05dc9327980fbae4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f16.c
! e39321e0b472a1d0883477f46714b5aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_f32.c
  870fa1cfecd057944f70bcbe2dff451e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16-1.c
! 6cd682a33a3cb3634657d4d35e5c092c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f16.c
  4e932b45f9481cee6dc4771c74e3c7c1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32-1.c
! bf9a09ba7d7a53fcd050240228cd81aa  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_f32.c
! fb3d0405f709d2f0cff12e63ebf909fc  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s16.c
! 8b3b3c606ed54a9dcc86656050d113d5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s32.c
! 2aaef508f39d664157faa58be2f3bd0f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_s8.c
! adc6c0b6b4f6ddc7a1d7a848f5307f79  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u16.c
! a254b4fffb6f5659777fcbeae8b28c4b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u32.c
! 32bf6e95e53dc6059f7122f491091b74  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_n_u8.c
! a1e90c41e4df6782cd128a6fe60eb2d7  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s16.c
! 07f374800c87c54b1c2a8e29b2426e9a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s32.c
! 2118fd682832feff2d22f6c1e68066b8  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_s8.c
! decf453aca47327414fbfd1282d608ed  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u16.c
! 24b8547f6e44b9b2911eb48252b4715d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u32.c
! d93e32efac0770473efbea5f92a0392b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_m_u8.c
  6dff99b745a5088c0da8355aa48e8109  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16-1.c
! 03cb6e5f824eedb67a4c0ad3051a5ab6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f16.c
  eff932b1314a826b3305f16701653f80  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32-1.c
! fc7ba2f90b23e955ed6ffcd86bd02024  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_f32.c
! 72a9988251b35edcc450179eab3458f6  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s16.c
! 438826f012e905b3d1b0b927c41c69dd  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s32.c
! 5ce198c7b18e64310e0fe62fe413d47b  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_s8.c
! ac6f04beab039970433d54816c3bf7db  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u16.c
! f4b6e217fe00451d68ea62ba330dd2e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u32.c
! c44d4e9f9fbd545079fef0c92755a2a5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_n_u8.c
! f2ec35d42bad4aa445f478ec642596e4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s16.c
! 9d48f95ab3c512c68d683915d86eba25  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s32.c
! 98283c87773c5204b8691b3ce195656a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_s8.c
! 3d1a918e2bc7fa31b200e48ee632f5a5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u16.c
! 903ad637a9d226f2c46d4665f3321ec1  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u32.c
! 8abb1114e8244c7289232845fb2ed40d  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_u8.c
! 36a0a968f1828e7f62f2a36809fab06e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f16.c
! ea14dd53b1ffe8e6057e46f654c9cb0c  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_f32.c
  ecdfae9dab471c7510b30704ac817db4  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16-1.c
! 05cbdb9ab15c18642df26eeb98c957d5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f16.c
  c5463f57e474e0ee1551b52c786daf15  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32-1.c
! b9616c7124d80576d4dfed487fa7c12f  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_f32.c
! 66303105114a02d78e01f0015a0e599a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s16.c
! 1d221416840159088891d621950af69e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s32.c
! e90d5bfd2c2c44608fbffaf1d0e8cbc3  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_s8.c
! 57ce910c88953ddaea465c82a6376de5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u16.c
! daaddec480b813989fdfc9e180109518  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u32.c
! 4901e8bd828e5d2fc50fa11043ec7027  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_n_u8.c
! 14eb11a144aac1bb3d40319959f0c7cb  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s16.c
! c7072a4a61f117743e2c39a2f956709a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s32.c
! b1adc092a1225c3bb16d4d9e7b94927e  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_s8.c
! 55244f358fdaa7b0bcd702b059252b92  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u16.c
! d5068cbd7a08c2cb2252064ce7d7f5b2  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u32.c
! 45314f792a92d8327d850713b7f244da  gcc/testsuite/gcc.target/arm/mve/intrinsics/vsubq_x_u8.c
  23988252db151973cc6a8a718310f805  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float.c
  1b1caac6115bffedba10607ae46ecb1a  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_float1.c
  dd8187345c556677b24a6d6363dd2cf5  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int.c
  140114add4d912efe3ae58837e07a2e9  gcc/testsuite/gcc.target/arm/mve/intrinsics/vuninitializedq_int1.c
! 3c96b97a8cb10e25816aaa9094533908  gcc/testsuite/gcc.target/arm/mve/mve.exp
! 844c3ba72612fb8dee47abb3578cbd7d  gcc/testsuite/gcc.target/arm/mve/mve_load_memory_modes.c
! c0dde028cd8e5d714e98c74caa23c249  gcc/testsuite/gcc.target/arm/mve/mve_store_memory_modes.c
! 28756e11817e21b4baba9ba369b61c1a  gcc/testsuite/gcc.target/arm/mve/mve_vpt.c
! 1898761e9d8b35657c796620a30ff540  gcc/testsuite/gcc.target/arm/mve/pr107987.c
! 8058f9e4ee7ad1cb4b0efe6e1d8aeb7b  gcc/testsuite/gcc.target/arm/mve/pr108177-1-run.c
! 6f4280c7602eee3b4d263f85c7369e7b  gcc/testsuite/gcc.target/arm/mve/pr108177-1.c
! d4888bb5470cc8e841906cf352acfaee  gcc/testsuite/gcc.target/arm/mve/pr108177-10-run.c
! 87568581d9c5a69517ac5cbf55b634b3  gcc/testsuite/gcc.target/arm/mve/pr108177-10.c
! 4cebc2938fd99646970ee58873a08cf8  gcc/testsuite/gcc.target/arm/mve/pr108177-11-run.c
! 55619b307c1402118fc4262cfe40da9c  gcc/testsuite/gcc.target/arm/mve/pr108177-11.c
! c97418d1de344e87d2a32d1d548865f5  gcc/testsuite/gcc.target/arm/mve/pr108177-12-run.c
! 7ed978a98ab93a636f1ba4789f3177c4  gcc/testsuite/gcc.target/arm/mve/pr108177-12.c
! 6e0cbcba7767b386515129a527e83b43  gcc/testsuite/gcc.target/arm/mve/pr108177-13-run.c
! deeb44acf5b78719f349351bac5ad392  gcc/testsuite/gcc.target/arm/mve/pr108177-13.c
! 2f5b1a6b3bbc9e761fffd8890f2f089a  gcc/testsuite/gcc.target/arm/mve/pr108177-14-run.c
! c38df920c4d368fba3c1cc993ce5e4b6  gcc/testsuite/gcc.target/arm/mve/pr108177-14.c
! 01e488d66d7c64d44799e15dacff22e8  gcc/testsuite/gcc.target/arm/mve/pr108177-2-run.c
! cdef2c2146a9b8c779dbdb7861c69591  gcc/testsuite/gcc.target/arm/mve/pr108177-2.c
! 4f8fb5095d32450e4cfbde06427400b2  gcc/testsuite/gcc.target/arm/mve/pr108177-3-run.c
! 05f3b494640f15cc05099dca81ba27c5  gcc/testsuite/gcc.target/arm/mve/pr108177-3.c
! a5f1ffb8a251948a8f91991f325e73e1  gcc/testsuite/gcc.target/arm/mve/pr108177-4-run.c
! b3aa736897e026152d3930227f3ed5af  gcc/testsuite/gcc.target/arm/mve/pr108177-4.c
! 61ce38cbd541c7c9907992cd627caa47  gcc/testsuite/gcc.target/arm/mve/pr108177-5-run.c
! d93755ec2a124ee93522db4539c225c2  gcc/testsuite/gcc.target/arm/mve/pr108177-5.c
! a986dc74593dd8b1b30ec0f6ec21e57f  gcc/testsuite/gcc.target/arm/mve/pr108177-6-run.c
! 8b57ac5ef339dd9d38e264ff378e23f7  gcc/testsuite/gcc.target/arm/mve/pr108177-6.c
! efcdc8f46585b58b3d99208ff8223886  gcc/testsuite/gcc.target/arm/mve/pr108177-7-run.c
! 76dc48b8d72ee93d77d464a74f2c6867  gcc/testsuite/gcc.target/arm/mve/pr108177-7.c
! a5a909cd9273a228e889803838c59364  gcc/testsuite/gcc.target/arm/mve/pr108177-8-run.c
! 9fecee039822ebff7055cd5a8e8c42ce  gcc/testsuite/gcc.target/arm/mve/pr108177-8.c
! bfb42861506a8becbe4e801a6916b724  gcc/testsuite/gcc.target/arm/mve/pr108177-9-run.c
! 243794b0244f3f3b1c5416684ee30e0d  gcc/testsuite/gcc.target/arm/mve/pr108177-9.c
! 3b5b52b7462c96502cbd244f99969b24  gcc/testsuite/gcc.target/arm/mve/pr108177-main.x
! 18522c58df95c4bb74f07216f5d84eb4  gcc/testsuite/gcc.target/arm/mve/pr108177.x
! 862598210b4a0190e89ee162ce0a04f3  gcc/testsuite/gcc.target/arm/mve/pr108443-run.c
! 213c8f121b27265f0cfdb5f2363a9259  gcc/testsuite/gcc.target/arm/mve/pr108443.c
  a27c7480ff5cba860dda5da683bb3b87  gcc/testsuite/gcc.target/arm/naked-1.c
  292c423c2aa66b03398c922259527367  gcc/testsuite/gcc.target/arm/naked-2.c
  2d75e6bd9379b6e090e6104b97434376  gcc/testsuite/gcc.target/arm/negdi-1.c
*************** d9176edb2d4bd04cd070915cebff5f2a  gcc/te
*** 59416,59421 ****
--- 62888,62909 ----
  149a0cf89600ca690106d2b6482bf84a  gcc/testsuite/gcc.target/arm/optional_thumb-1.c
  dd0827774a767586a558dee375d638d3  gcc/testsuite/gcc.target/arm/optional_thumb-2.c
  7f513f196dcd13462f6ac0cd6ce1da4d  gcc/testsuite/gcc.target/arm/optional_thumb-3.c
+ cd79f6a8a6619bfb4deabfdd64ef1d49  gcc/testsuite/gcc.target/arm/pac-1.c
+ 0f3f42e604f65aa2313ffa8acf201e4e  gcc/testsuite/gcc.target/arm/pac-10.c
+ c0018f3211f42533b453803a006dcb93  gcc/testsuite/gcc.target/arm/pac-11.c
+ 38aa4a9786740aa14e4c4c2fabab26de  gcc/testsuite/gcc.target/arm/pac-12.c
+ dc0ea59198bb4b88b123d504d71bd2a7  gcc/testsuite/gcc.target/arm/pac-13.c
+ cc9af8b6aa239043068417fdec46750b  gcc/testsuite/gcc.target/arm/pac-14.c
+ 2a1747a35392425b764564116ce1285e  gcc/testsuite/gcc.target/arm/pac-15.c
+ 31b59697e7c2e5d722b311c1db992cde  gcc/testsuite/gcc.target/arm/pac-2.c
+ 7291ea4b4be321ce3192fcc52f62d4eb  gcc/testsuite/gcc.target/arm/pac-3.c
+ fa870e6a2ce68f4ef67d537bd5a76fb4  gcc/testsuite/gcc.target/arm/pac-4.c
+ 1f7d4cae7e86af72545b05285d5adc92  gcc/testsuite/gcc.target/arm/pac-5.c
+ ef10b7803f7ace6199521b5e4c9428a0  gcc/testsuite/gcc.target/arm/pac-6.c
+ 12b022cc37717c3bfd0b8e98e9ed0a33  gcc/testsuite/gcc.target/arm/pac-7.c
+ 34aba47ad65c3950a41fc2c64c4861cf  gcc/testsuite/gcc.target/arm/pac-8.c
+ 1f9b68eab435a69c70be7fdee6ed275f  gcc/testsuite/gcc.target/arm/pac-9.c
+ 1115daad97541e167c5651bc1032e202  gcc/testsuite/gcc.target/arm/pac.h
  37a9218c79439946d7d0121ec2abee72  gcc/testsuite/gcc.target/arm/peep-ldrd-1.c
  ce2ea998f70f030c1e5c5cf0f3536bd7  gcc/testsuite/gcc.target/arm/peep-ldrd-2.c
  852d7dad95a15e1bee77bdc0817b7192  gcc/testsuite/gcc.target/arm/peep-strd-1.c
*************** e1ed53ebccbb0c6d744bc7e982608a00  gcc/te
*** 59438,59444 ****
  a0cc282faae69b0bed204923b5c83ada  gcc/testsuite/gcc.target/arm/pr40887.c
  ae7f616dfc9c4cb975cbf5c12a0f4568  gcc/testsuite/gcc.target/arm/pr40900.c
  9a91f6d3c3a7943082f0c68bef63d10f  gcc/testsuite/gcc.target/arm/pr40956.c
! 498aad9c6c3722b09e223e34c23a2e6c  gcc/testsuite/gcc.target/arm/pr42093.c
  12a357bcf3056e56219445cb67fb9035  gcc/testsuite/gcc.target/arm/pr42172-1.c
  306136b2196150e4fdffad398a074908  gcc/testsuite/gcc.target/arm/pr42235.c
  02da99cf5e2c1ddcd7b4f10b0762d7ee  gcc/testsuite/gcc.target/arm/pr42495.c
--- 62926,62932 ----
  a0cc282faae69b0bed204923b5c83ada  gcc/testsuite/gcc.target/arm/pr40887.c
  ae7f616dfc9c4cb975cbf5c12a0f4568  gcc/testsuite/gcc.target/arm/pr40900.c
  9a91f6d3c3a7943082f0c68bef63d10f  gcc/testsuite/gcc.target/arm/pr40956.c
! 513774a1d466df3c3f0fa626a3a888a8  gcc/testsuite/gcc.target/arm/pr42093.c
  12a357bcf3056e56219445cb67fb9035  gcc/testsuite/gcc.target/arm/pr42172-1.c
  306136b2196150e4fdffad398a074908  gcc/testsuite/gcc.target/arm/pr42235.c
  02da99cf5e2c1ddcd7b4f10b0762d7ee  gcc/testsuite/gcc.target/arm/pr42495.c
*************** ec5b96b8283a62c791f40ad2c7334d85  gcc/te
*** 59474,59480 ****
  1b0c11d109e5c1c7dd206ab3c72d6e20  gcc/testsuite/gcc.target/arm/pr50099.c
  d457a4577fb934ac2b4fc272aa7a0ab9  gcc/testsuite/gcc.target/arm/pr50305.c
  979c3871e985af269e6e0679b4805f64  gcc/testsuite/gcc.target/arm/pr50318-1.c
! 9bae94116bfadabbcd02cb062071b588  gcc/testsuite/gcc.target/arm/pr51534.c
  e24904ecd70180168ee75db6eb7b3461  gcc/testsuite/gcc.target/arm/pr51835.c
  3f2081d2849855a22f0db1f6ba620f00  gcc/testsuite/gcc.target/arm/pr51915.c
  8ea3e4ba594d4b6bdc19056d44672bca  gcc/testsuite/gcc.target/arm/pr51968.c
--- 62962,62969 ----
  1b0c11d109e5c1c7dd206ab3c72d6e20  gcc/testsuite/gcc.target/arm/pr50099.c
  d457a4577fb934ac2b4fc272aa7a0ab9  gcc/testsuite/gcc.target/arm/pr50305.c
  979c3871e985af269e6e0679b4805f64  gcc/testsuite/gcc.target/arm/pr50318-1.c
! 518109fadcc725b0cebe4a85e0cc8d54  gcc/testsuite/gcc.target/arm/pr51534.c
! 1fc6a0f615c83a4303e062b49c7a507f  gcc/testsuite/gcc.target/arm/pr51534s.c
  e24904ecd70180168ee75db6eb7b3461  gcc/testsuite/gcc.target/arm/pr51835.c
  3f2081d2849855a22f0db1f6ba620f00  gcc/testsuite/gcc.target/arm/pr51915.c
  8ea3e4ba594d4b6bdc19056d44672bca  gcc/testsuite/gcc.target/arm/pr51968.c
*************** be0f627c9760e72ac531303722e2aa4a  gcc/te
*** 59623,59629 ****
  fae12b2484aa501254f0f6f18c223eb7  gcc/testsuite/gcc.target/arm/pure-code/pr96769.c
  97baedb199afd57478166d225f8cdc6d  gcc/testsuite/gcc.target/arm/pure-code/pr96770.c
  23b438a7445931d6c586530cff90a5e9  gcc/testsuite/gcc.target/arm/pure-code/pr98998.c
! e0b77f00d4bc21ed75896d0dc498c49a  gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
  f95b339eab714ded2d8494556dd13630  gcc/testsuite/gcc.target/arm/reg_equal_test.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
  7e00efeaf92d1f9068732d041c1566d2  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
--- 63112,63118 ----
  fae12b2484aa501254f0f6f18c223eb7  gcc/testsuite/gcc.target/arm/pure-code/pr96769.c
  97baedb199afd57478166d225f8cdc6d  gcc/testsuite/gcc.target/arm/pure-code/pr96770.c
  23b438a7445931d6c586530cff90a5e9  gcc/testsuite/gcc.target/arm/pure-code/pr98998.c
! 501266fd274467f8491a4d983fca5a76  gcc/testsuite/gcc.target/arm/pure-code/pure-code.exp
  f95b339eab714ded2d8494556dd13630  gcc/testsuite/gcc.target/arm/reg_equal_test.c
  3143560976572191d8bba6ba78a45aa6  gcc/testsuite/gcc.target/arm/register-variables.c
  7e00efeaf92d1f9068732d041c1566d2  gcc/testsuite/gcc.target/arm/require-pic-register-loc.c
*************** c85c6e997259bc6ea785859ca3cd0503  gcc/te
*** 59652,59672 ****
  86a910fbea8e786089563912a699727e  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
  ce6bfdecafebf5d96e30584ac5bde11f  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
  c7ef3b93e6ead3d17a958c3c299e8b73  gcc/testsuite/gcc.target/arm/simd/fp16fml_low.c
! 6c7c4c225924663f715da299cee5e6a5  gcc/testsuite/gcc.target/arm/simd/mve-compare-1.c
  5dcf4e932871aeba4c1b9a49be403bf6  gcc/testsuite/gcc.target/arm/simd/mve-compare-2.c
  79ad4702846317f8676e19282166aa0d  gcc/testsuite/gcc.target/arm/simd/mve-compare-3.c
! 62d1f0ad9e655a68d6ecbfc7124a6aa1  gcc/testsuite/gcc.target/arm/simd/mve-compare-scalar-1.c
! b65f0b51ef899b937b63abf1e3405106  gcc/testsuite/gcc.target/arm/simd/mve-vabs.c
! e5b4125a24ef0a7243f3e53f42b055dd  gcc/testsuite/gcc.target/arm/simd/mve-vadd-1.c
! 7deef803acc8b6bc6851bf5caf65c977  gcc/testsuite/gcc.target/arm/simd/mve-vadd-scalar-1.c
  817e504d8a4f3a8fe3668c375dbb1998  gcc/testsuite/gcc.target/arm/simd/mve-vaddv-1.c
  7370991ffab828bb67ea9207e79d17ed  gcc/testsuite/gcc.target/arm/simd/mve-vand.c
  57337e605c24d6ca7890908234fe55fd  gcc/testsuite/gcc.target/arm/simd/mve-vbic.c
! a89ba01a34119210a98694c961ce138e  gcc/testsuite/gcc.target/arm/simd/mve-vclz.c
  d34579bb65d7395a1f822d658596726e  gcc/testsuite/gcc.target/arm/simd/mve-vcmp-f16.c
! ae407b3b95f556a909330ca46587c746  gcc/testsuite/gcc.target/arm/simd/mve-vcmp-f32-2.c
  38d5e1e8de59fae0897546aafa88daf5  gcc/testsuite/gcc.target/arm/simd/mve-vcmp-f32.c
! 1a1b1c8b681587a1e716fe5f81336aea  gcc/testsuite/gcc.target/arm/simd/mve-vcmp.c
  ad91e84e4e236e53bf616bfe551f7eda  gcc/testsuite/gcc.target/arm/simd/mve-veor.c
  0e5d51f0dfb4e6e8bcb85222b141383c  gcc/testsuite/gcc.target/arm/simd/mve-vhadd-1.c
  5d3409e0bc1b329a973218097ef5a063  gcc/testsuite/gcc.target/arm/simd/mve-vhadd-2.c
--- 63141,63161 ----
  86a910fbea8e786089563912a699727e  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_high.c
  ce6bfdecafebf5d96e30584ac5bde11f  gcc/testsuite/gcc.target/arm/simd/fp16fml_lane_low.c
  c7ef3b93e6ead3d17a958c3c299e8b73  gcc/testsuite/gcc.target/arm/simd/fp16fml_low.c
! d21e638a6c36bfc09953f404b86a485f  gcc/testsuite/gcc.target/arm/simd/mve-compare-1.c
  5dcf4e932871aeba4c1b9a49be403bf6  gcc/testsuite/gcc.target/arm/simd/mve-compare-2.c
  79ad4702846317f8676e19282166aa0d  gcc/testsuite/gcc.target/arm/simd/mve-compare-3.c
! f3b1d2b5756c4d3b3d2e615e514d6c49  gcc/testsuite/gcc.target/arm/simd/mve-compare-scalar-1.c
! 988b7e5a921ffc215868fc0c17512af4  gcc/testsuite/gcc.target/arm/simd/mve-vabs.c
! 0f2be96cafe2bb9a1c2796d9f50adca0  gcc/testsuite/gcc.target/arm/simd/mve-vadd-1.c
! 935d1dbc60e1d974bb29b01e2f735e02  gcc/testsuite/gcc.target/arm/simd/mve-vadd-scalar-1.c
  817e504d8a4f3a8fe3668c375dbb1998  gcc/testsuite/gcc.target/arm/simd/mve-vaddv-1.c
  7370991ffab828bb67ea9207e79d17ed  gcc/testsuite/gcc.target/arm/simd/mve-vand.c
  57337e605c24d6ca7890908234fe55fd  gcc/testsuite/gcc.target/arm/simd/mve-vbic.c
! 53293bc28b223e76b3a77822b8d82869  gcc/testsuite/gcc.target/arm/simd/mve-vclz.c
  d34579bb65d7395a1f822d658596726e  gcc/testsuite/gcc.target/arm/simd/mve-vcmp-f16.c
! 0d620f3f4e02ef35007344200f38dba9  gcc/testsuite/gcc.target/arm/simd/mve-vcmp-f32-2.c
  38d5e1e8de59fae0897546aafa88daf5  gcc/testsuite/gcc.target/arm/simd/mve-vcmp-f32.c
! 16959613b263f44ae7eecac4cc973721  gcc/testsuite/gcc.target/arm/simd/mve-vcmp.c
  ad91e84e4e236e53bf616bfe551f7eda  gcc/testsuite/gcc.target/arm/simd/mve-veor.c
  0e5d51f0dfb4e6e8bcb85222b141383c  gcc/testsuite/gcc.target/arm/simd/mve-vhadd-1.c
  5d3409e0bc1b329a973218097ef5a063  gcc/testsuite/gcc.target/arm/simd/mve-vhadd-2.c
*************** c2eea7db2d4567249d33b386cdaf476b  gcc/te
*** 59676,59686 ****
  6db903ede2b03c4e104d446de2d997d9  gcc/testsuite/gcc.target/arm/simd/mve-vmul-scalar-1.c
  36779691f42ae231092570148a42b261  gcc/testsuite/gcc.target/arm/simd/mve-vmul_1.c
  8a858f14e2f8788bc8e6d834c44cb944  gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c
! eec4a2942df9514516f09adb538ca6c1  gcc/testsuite/gcc.target/arm/simd/mve-vneg.c
  454ea9c4b205cc5970ef1f679c56ad7a  gcc/testsuite/gcc.target/arm/simd/mve-vorn.c
  fcce8db5ec7e8bdb594b192422634626  gcc/testsuite/gcc.target/arm/simd/mve-vorr.c
  8c135e895bc223508b6735896b11e21f  gcc/testsuite/gcc.target/arm/simd/mve-vshl.c
! 44d9633172a744d57748b78cd9459397  gcc/testsuite/gcc.target/arm/simd/mve-vshr.c
  93474bc90e5156ad689799d6fb6a4511  gcc/testsuite/gcc.target/arm/simd/mve-vsub-scalar-1.c
  6c75eaaec68dfb8c4f79555ce03a5fc5  gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c
  1b47bf72d463778fb593a6c8e88de7bf  gcc/testsuite/gcc.target/arm/simd/neon-compare-1.c
--- 63165,63175 ----
  6db903ede2b03c4e104d446de2d997d9  gcc/testsuite/gcc.target/arm/simd/mve-vmul-scalar-1.c
  36779691f42ae231092570148a42b261  gcc/testsuite/gcc.target/arm/simd/mve-vmul_1.c
  8a858f14e2f8788bc8e6d834c44cb944  gcc/testsuite/gcc.target/arm/simd/mve-vmvn.c
! b39d52db8b06b00a7c57fd2d7dd7bc0a  gcc/testsuite/gcc.target/arm/simd/mve-vneg.c
  454ea9c4b205cc5970ef1f679c56ad7a  gcc/testsuite/gcc.target/arm/simd/mve-vorn.c
  fcce8db5ec7e8bdb594b192422634626  gcc/testsuite/gcc.target/arm/simd/mve-vorr.c
  8c135e895bc223508b6735896b11e21f  gcc/testsuite/gcc.target/arm/simd/mve-vshl.c
! 436aabb7e19b94cd90c42d18d9ffd235  gcc/testsuite/gcc.target/arm/simd/mve-vshr.c
  93474bc90e5156ad689799d6fb6a4511  gcc/testsuite/gcc.target/arm/simd/mve-vsub-scalar-1.c
  6c75eaaec68dfb8c4f79555ce03a5fc5  gcc/testsuite/gcc.target/arm/simd/mve-vsub_1.c
  1b47bf72d463778fb593a6c8e88de7bf  gcc/testsuite/gcc.target/arm/simd/neon-compare-1.c
*************** b0c788863641ceb9eafa40c7a7674f0b  gcc/te
*** 59696,59712 ****
  457467054ee307e0e0321d9172a8051b  gcc/testsuite/gcc.target/arm/simd/neon-vhadd-2.c
  68c87b57e05a6645373dc8d51e390d27  gcc/testsuite/gcc.target/arm/simd/neon-vrndx_f32_1.c
  20510447d248969276dc517dca7c29d2  gcc/testsuite/gcc.target/arm/simd/neon-vrndxq_f32_1.c
! ffd0817dddebee5f98e6672151768b28  gcc/testsuite/gcc.target/arm/simd/pr100757-2.c
! c128da719ddaa71fe006886c68ef9e8b  gcc/testsuite/gcc.target/arm/simd/pr100757-3.c
! ed5726c14960e6946d6059ad2eafda39  gcc/testsuite/gcc.target/arm/simd/pr100757-4.c
! 9d1a89861df9439f2260142a68ce64d5  gcc/testsuite/gcc.target/arm/simd/pr100757.c
  697c6e1839ba0f86de4a02316e9dbdfa  gcc/testsuite/gcc.target/arm/simd/pr101325-2.c
! b12640f73eff96966ca77078dd5fb9e4  gcc/testsuite/gcc.target/arm/simd/pr101325.c
! e1603cc96f76b89440e17fe221245eed  gcc/testsuite/gcc.target/arm/simd/pr104882.c
  be3a6e865cff5e83a7ddc3fdeff09efc  gcc/testsuite/gcc.target/arm/simd/pr105374.C
  046001a34adf828e1dc1680bb6554761  gcc/testsuite/gcc.target/arm/simd/pr97906.c
  be013ac628d53196d301f2fb67205a61  gcc/testsuite/gcc.target/arm/simd/pr98435.c
! c4c9cd643691ce299be90948f0058461  gcc/testsuite/gcc.target/arm/simd/simd.exp
  be37d1c2f068a408d0dcf51da9bb2153  gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c
  bfc8c84b4d25f4a7889d9453580915a0  gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c
  32ad7b41034573f84cb8764de3e4cd94  gcc/testsuite/gcc.target/arm/simd/vdot-2-1.c
--- 63185,63201 ----
  457467054ee307e0e0321d9172a8051b  gcc/testsuite/gcc.target/arm/simd/neon-vhadd-2.c
  68c87b57e05a6645373dc8d51e390d27  gcc/testsuite/gcc.target/arm/simd/neon-vrndx_f32_1.c
  20510447d248969276dc517dca7c29d2  gcc/testsuite/gcc.target/arm/simd/neon-vrndxq_f32_1.c
! e42ce7a04414e1c1b3a75e6c17430776  gcc/testsuite/gcc.target/arm/simd/pr100757-2.c
! 5fc6ccf4c41b8344d3f59b541f237924  gcc/testsuite/gcc.target/arm/simd/pr100757-3.c
! fbac215b14816715b9ae4c7410cf1842  gcc/testsuite/gcc.target/arm/simd/pr100757-4.c
! 46c301794431bb43576da7b817bb3a7a  gcc/testsuite/gcc.target/arm/simd/pr100757.c
  697c6e1839ba0f86de4a02316e9dbdfa  gcc/testsuite/gcc.target/arm/simd/pr101325-2.c
! ac6c1f0bd9ddea47b998e6d6fe81f3f3  gcc/testsuite/gcc.target/arm/simd/pr101325.c
! 0252838205985b9a6ba4a6e43ef953af  gcc/testsuite/gcc.target/arm/simd/pr104882.c
  be3a6e865cff5e83a7ddc3fdeff09efc  gcc/testsuite/gcc.target/arm/simd/pr105374.C
  046001a34adf828e1dc1680bb6554761  gcc/testsuite/gcc.target/arm/simd/pr97906.c
  be013ac628d53196d301f2fb67205a61  gcc/testsuite/gcc.target/arm/simd/pr98435.c
! a77b4b18df3edf884332fded851f948c  gcc/testsuite/gcc.target/arm/simd/simd.exp
  be37d1c2f068a408d0dcf51da9bb2153  gcc/testsuite/gcc.target/arm/simd/vceqz_p64.c
  bfc8c84b4d25f4a7889d9453580915a0  gcc/testsuite/gcc.target/arm/simd/vceqzq_p64.c
  32ad7b41034573f84cb8764de3e4cd94  gcc/testsuite/gcc.target/arm/simd/vdot-2-1.c
*************** ed39b4c31a81f4f17ea556e45805a496  gcc/te
*** 59868,59876 ****
  3ebeca3ed0f25632879b6c5261fa73b9  gcc/testsuite/gcc.target/arm/ssadv16qi.c
  2e30a53910cdcc3b73ee4ec5cef30bcb  gcc/testsuite/gcc.target/arm/stack-checking.c
  3e7aee3ca3268716b7e56cda15a6ccc3  gcc/testsuite/gcc.target/arm/stack-corruption.c
! 844538cfcaf46d0f4437febbda806846  gcc/testsuite/gcc.target/arm/stack-protector-1.c
  c2b556510a6d5c54101374760111a06e  gcc/testsuite/gcc.target/arm/stack-protector-2.c
! ba6c6b402205fa474f7093d07d3d3129  gcc/testsuite/gcc.target/arm/stack-protector-3.c
  e13154393d19a49196906480b6d2d4bc  gcc/testsuite/gcc.target/arm/stack-protector-4.c
  70342bcaa3f6107c83106c2d684152ed  gcc/testsuite/gcc.target/arm/stack-protector-5.c
  fe2f9ebabcf72015dcbdb73c0c9e2338  gcc/testsuite/gcc.target/arm/stack-protector-6.c
--- 63357,63365 ----
  3ebeca3ed0f25632879b6c5261fa73b9  gcc/testsuite/gcc.target/arm/ssadv16qi.c
  2e30a53910cdcc3b73ee4ec5cef30bcb  gcc/testsuite/gcc.target/arm/stack-checking.c
  3e7aee3ca3268716b7e56cda15a6ccc3  gcc/testsuite/gcc.target/arm/stack-corruption.c
! e34e4576a4ca4582a6af6386d1c1d2e5  gcc/testsuite/gcc.target/arm/stack-protector-1.c
  c2b556510a6d5c54101374760111a06e  gcc/testsuite/gcc.target/arm/stack-protector-2.c
! 1f0e5a314b14b7ff97bf70dded977e0c  gcc/testsuite/gcc.target/arm/stack-protector-3.c
  e13154393d19a49196906480b6d2d4bc  gcc/testsuite/gcc.target/arm/stack-protector-4.c
  70342bcaa3f6107c83106c2d684152ed  gcc/testsuite/gcc.target/arm/stack-protector-5.c
  fe2f9ebabcf72015dcbdb73c0c9e2338  gcc/testsuite/gcc.target/arm/stack-protector-6.c
*************** f54354bf39395de458fef63aa726c12c  gcc/te
*** 59954,59959 ****
--- 63443,63450 ----
  a146fdabdb2ad719360157740f40af65  gcc/testsuite/gcc.target/arm/vect-rounding-roundf.c
  96ac2b1029f45a3cc392b052c3cd7cc8  gcc/testsuite/gcc.target/arm/vect-vcvt.c
  f955867badc1233a269b216d0256bd56  gcc/testsuite/gcc.target/arm/vect-vcvtq.c
+ 8a00a0d08e71ac156dabfa9a30477997  gcc/testsuite/gcc.target/arm/vect_binary_1.c
+ 03b88066ee1494526d7fa0529458bf0b  gcc/testsuite/gcc.target/arm/vect_unary_1.c
  1f2a4883d08756b5ace27238e8ee9a74  gcc/testsuite/gcc.target/arm/vfp-1.c
  ebbb43e440e5971041834a23169caac0  gcc/testsuite/gcc.target/arm/vfp-ldmdbd.c
  30ab9af6e1b1729e2c1b8413367a3fa4  gcc/testsuite/gcc.target/arm/vfp-ldmdbs.c
*************** c75ed40c88ef10849c23f953624d1ae2  gcc/te
*** 60024,60034 ****
  5c6680598a83083cd8ee0c39ad5821bf  gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
  a1131491d67160098e775860b91e3021  gcc/testsuite/gcc.target/arm/xor-and.c
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
! 853f53a6e0cf31af3573c0ab91f70f27  gcc/testsuite/gcc.target/avr/avr.exp
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
  01c5f01bf5db7494c293de76bfa7ad3f  gcc/testsuite/gcc.target/avr/isr-test.h
! 879c51ec49cf59758894de101ade42ff  gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
  421d2b9b36fa2496dce05d129d2c352b  gcc/testsuite/gcc.target/avr/mmcu/pr58545.c
  8172209b564aa8049ce5758eac60cc46  gcc/testsuite/gcc.target/avr/mmcu/tiny-caller-save.c
  80cabd0a89ca2c48055ae61bc82b633e  gcc/testsuite/gcc.target/avr/mmcu/tiny-memx.c
--- 63515,63525 ----
  5c6680598a83083cd8ee0c39ad5821bf  gcc/testsuite/gcc.target/arm/wmul-bitfield-2.c
  a1131491d67160098e775860b91e3021  gcc/testsuite/gcc.target/arm/xor-and.c
  79a594a642e89de4c3a753867b50cf54  gcc/testsuite/gcc.target/arm/xordi3-opt.c
! f337da365ccbbfcebc72092316840c27  gcc/testsuite/gcc.target/avr/avr.exp
  a6701935d18c8ed062555c8a48454bc9  gcc/testsuite/gcc.target/avr/dev-specific-rmw.c
  2028ceccf9f97e5e84e9adf6beb7597e  gcc/testsuite/gcc.target/avr/exit-abort.h
  01c5f01bf5db7494c293de76bfa7ad3f  gcc/testsuite/gcc.target/avr/isr-test.h
! 893cec940cefc9cecf77869119a40689  gcc/testsuite/gcc.target/avr/mmcu/avr-mmcu.exp
  421d2b9b36fa2496dce05d129d2c352b  gcc/testsuite/gcc.target/avr/mmcu/pr58545.c
  8172209b564aa8049ce5758eac60cc46  gcc/testsuite/gcc.target/avr/mmcu/tiny-caller-save.c
  80cabd0a89ca2c48055ae61bc82b633e  gcc/testsuite/gcc.target/avr/mmcu/tiny-memx.c
*************** a6701935d18c8ed062555c8a48454bc9  gcc/te
*** 60036,60041 ****
--- 63527,63533 ----
  572dc228e08385a1db0fcbab66dbaa4e  gcc/testsuite/gcc.target/avr/pr46779-2.c
  d92831f37e30237d1dc568f585e4c2c9  gcc/testsuite/gcc.target/avr/pr50739.c
  cab5109a6b7fdff7f863acba217c057c  gcc/testsuite/gcc.target/avr/pr52472.c
+ e0e1e2e0021b9ad7de197bd200536621  gcc/testsuite/gcc.target/avr/pr54816.c
  efcda82866c9de5c520a07c8b80a5a00  gcc/testsuite/gcc.target/avr/pr60040-1.c
  378bd094630b756ab3a99b367485434b  gcc/testsuite/gcc.target/avr/pr60040-2.c
  9e82df166e8b559cb56d2c4f48cbaf30  gcc/testsuite/gcc.target/avr/pr60991.c
*************** d5c8fd29fb9b2ff9d36bac3d01f75b13  gcc/te
*** 60059,60064 ****
--- 63551,63557 ----
  859b3836a035473a6251a77102bbe16d  gcc/testsuite/gcc.target/avr/pr71678.c
  f91d8c4774a3ac3e49934378e0629b52  gcc/testsuite/gcc.target/avr/pr71873.c
  675750e3e482b5f5103d79510bfe2e28  gcc/testsuite/gcc.target/avr/pr88253.c
+ cbd676b663043514bbc26a8a6c3b7a9d  gcc/testsuite/gcc.target/avr/pr90706.c
  881cb1836ddfc3105e0aacacc481aa09  gcc/testsuite/gcc.target/avr/progmem-error-1.c
  57cf0cd622a50ae70434f57249214c0a  gcc/testsuite/gcc.target/avr/progmem-error-1.cpp
  56de611fd29076ce9da389a853476819  gcc/testsuite/gcc.target/avr/progmem-warning-1.c
*************** e2ddf19981b44595d911d7d384c3824f  gcc/te
*** 60073,60079 ****
  53dfc94573110c2220b0a51c076fda55  gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c
  6fb32c1fcefb2d5260347dc067759686  gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c
  a0d24b6b729b3316832b85d84ee2f113  gcc/testsuite/gcc.target/avr/torture/addr-space-2.h
! ebaffb03b01764f15a9e4a258c115e51  gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
  8fb103e22590dcf8f557336ecf8d0b5d  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-1.c
  43852eb8aa736eadca5b3c517bf0d743  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-2.c
  6f7a316d69505eb726fcfadde1df3047  gcc/testsuite/gcc.target/avr/torture/builtins-1.c
--- 63566,63572 ----
  53dfc94573110c2220b0a51c076fda55  gcc/testsuite/gcc.target/avr/torture/addr-space-2-g.c
  6fb32c1fcefb2d5260347dc067759686  gcc/testsuite/gcc.target/avr/torture/addr-space-2-x.c
  a0d24b6b729b3316832b85d84ee2f113  gcc/testsuite/gcc.target/avr/torture/addr-space-2.h
! 36a9fd0ce0b7dbcd36baf1027fd8b06e  gcc/testsuite/gcc.target/avr/torture/avr-torture.exp
  8fb103e22590dcf8f557336ecf8d0b5d  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-1.c
  43852eb8aa736eadca5b3c517bf0d743  gcc/testsuite/gcc.target/avr/torture/builtin_insert_bits-2.c
  6f7a316d69505eb726fcfadde1df3047  gcc/testsuite/gcc.target/avr/torture/builtins-1.c
*************** b132d1738c80be39010cd2b0314aba73  gcc/te
*** 60133,60139 ****
  e8596cb430561d81a166efee3830ab78  gcc/testsuite/gcc.target/bfin/20090914-2.c
  49ce985a23784e4dedbfc6c211266187  gcc/testsuite/gcc.target/bfin/20090914-3.c
  bf1c248fa1b1520ecdeed5e768375da7  gcc/testsuite/gcc.target/bfin/arith.c
! 22e74f19555d522e0123ade79a7166cd  gcc/testsuite/gcc.target/bfin/bfin.exp
  e666a8a0054e7cac9ce2a121c6d1ccbf  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c
  9b9ec1d751f1617d55d1098c8c77391b  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c
  6b81ebc6aa2acb74b2481ebe48c3dc2c  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c
--- 63626,63632 ----
  e8596cb430561d81a166efee3830ab78  gcc/testsuite/gcc.target/bfin/20090914-2.c
  49ce985a23784e4dedbfc6c211266187  gcc/testsuite/gcc.target/bfin/20090914-3.c
  bf1c248fa1b1520ecdeed5e768375da7  gcc/testsuite/gcc.target/bfin/arith.c
! f834ff02afc8ba5ab71378e830107cac  gcc/testsuite/gcc.target/bfin/bfin.exp
  e666a8a0054e7cac9ce2a121c6d1ccbf  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-1.c
  9b9ec1d751f1617d55d1098c8c77391b  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x16-2.c
  6b81ebc6aa2acb74b2481ebe48c3dc2c  gcc/testsuite/gcc.target/bfin/builtins/abs_fr1x32-1.c
*************** fe4d87c005f4281c70950e298d2332d6  gcc/te
*** 60146,60152 ****
  68777a9f94150662d944e2fa189c4dd7  gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c
  d0c87dc45464d8073220a36a5b5f9150  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c
  9d8cdd9e02d1a76707491953ffcab689  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c
! 6dadda74d6bacfce0c5aa410c176157f  gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
  f7e7cbc65ce8949842a0128a24bd2338  gcc/testsuite/gcc.target/bfin/builtins/circptr.c
  6c9969a981de179714ed81df51335aa9  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c
  136597c96eab5947bf5b9d9ac2e01f54  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c
--- 63639,63645 ----
  68777a9f94150662d944e2fa189c4dd7  gcc/testsuite/gcc.target/bfin/builtins/add_fr1x32-2.c
  d0c87dc45464d8073220a36a5b5f9150  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-1.c
  9d8cdd9e02d1a76707491953ffcab689  gcc/testsuite/gcc.target/bfin/builtins/add_fr2x16-2.c
! c0495f5d61d6baea866b12b508a4baaf  gcc/testsuite/gcc.target/bfin/builtins/bfin-builtins.exp
  f7e7cbc65ce8949842a0128a24bd2338  gcc/testsuite/gcc.target/bfin/builtins/circptr.c
  6c9969a981de179714ed81df51335aa9  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-1.c
  136597c96eab5947bf5b9d9ac2e01f54  gcc/testsuite/gcc.target/bfin/builtins/cpmlx_mac_fr2x16-2.c
*************** b7e44f629992ef6eb090866310307190  gcc/te
*** 60347,60355 ****
  998eede0c55f8146863da4eee6db210b  gcc/testsuite/gcc.target/bfin/workarounds-any.c
  b7e44f629992ef6eb090866310307190  gcc/testsuite/gcc.target/bfin/workarounds-none.c
  d574c9cd6d9f06e4304767f46fc8eb38  gcc/testsuite/gcc.target/bpf/alu-1.c
! a8cfb241067237a76c50fd9f3b511dcf  gcc/testsuite/gcc.target/bpf/bpf.exp
  e18e9906424d8f6d6559626d05b228a1  gcc/testsuite/gcc.target/bpf/builtin-load.c
! de0225c20b6d4e27e5b67ccb3354f120  gcc/testsuite/gcc.target/bpf/constant-calls.c
  b8b314b84b551ed2be2f010a24abe9f9  gcc/testsuite/gcc.target/bpf/core-attr-1.c
  b9cc467364bead27ec20679665483049  gcc/testsuite/gcc.target/bpf/core-attr-2.c
  3b2e17aff6a101dd53a2e432ea78e841  gcc/testsuite/gcc.target/bpf/core-attr-3.c
--- 63840,63850 ----
  998eede0c55f8146863da4eee6db210b  gcc/testsuite/gcc.target/bfin/workarounds-any.c
  b7e44f629992ef6eb090866310307190  gcc/testsuite/gcc.target/bfin/workarounds-none.c
  d574c9cd6d9f06e4304767f46fc8eb38  gcc/testsuite/gcc.target/bpf/alu-1.c
! ac83cc9a0e1d08440d2d555fddc2c882  gcc/testsuite/gcc.target/bpf/bpf.exp
! bb33a5daec764c44d4e0362372821146  gcc/testsuite/gcc.target/bpf/bswap-1.c
  e18e9906424d8f6d6559626d05b228a1  gcc/testsuite/gcc.target/bpf/builtin-load.c
! c15ffd0fcf13b8089eb979818ca695d3  gcc/testsuite/gcc.target/bpf/constant-calls-1.c
! 308ec3c13b184f3b2a8e46ea0f32f4c8  gcc/testsuite/gcc.target/bpf/constant-calls-2.c
  b8b314b84b551ed2be2f010a24abe9f9  gcc/testsuite/gcc.target/bpf/core-attr-1.c
  b9cc467364bead27ec20679665483049  gcc/testsuite/gcc.target/bpf/core-attr-2.c
  3b2e17aff6a101dd53a2e432ea78e841  gcc/testsuite/gcc.target/bpf/core-attr-3.c
*************** d91a5053beb3967e034e51883dc25dd1  gcc/te
*** 60357,60363 ****
--- 63852,63871 ----
  8daa38602d4832500fa5d1fa654882ae  gcc/testsuite/gcc.target/bpf/core-builtin-1.c
  d29fde5f049c90eb3638f347d15f46a2  gcc/testsuite/gcc.target/bpf/core-builtin-2.c
  89ded91824d23ad06903739576a871a1  gcc/testsuite/gcc.target/bpf/core-builtin-3.c
+ 54dea86a7ec285be4a47822eb5a09605  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-errors-1.c
+ 2729b49591c9a44633a77bf566f42862  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-errors-2.c
+ 1f78bd2cfd4a5c777fb05eb36815df1b  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-existence-1.c
+ c6be4d29a0c7cdfaee53492c2a9c09db  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-lshift-1-be.c
+ 4e6c59149276c655d18b50cc0fe8f981  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-lshift-1-le.c
+ 44481361289520140189eec43bd02c1d  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-lshift-2.c
+ 3c2fc0ef2ba38abbe6886b142e03dbfb  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-offset-1.c
+ ba0b6bea55f2e88cf37c259450b1fef3  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-rshift-1.c
+ 3c0bac34957bd44026dce11bbd751c63  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-rshift-2.c
+ c3b945765a99565aebc91abe802a3012  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-sign-1.c
+ 128c5eb3ecf36fbf536c1c44027a967a  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-sign-2.c
+ a920c278d59c641452e0bbf6d068c86b  gcc/testsuite/gcc.target/bpf/core-builtin-fieldinfo-size-1.c
  382784a9ab064815e8d03f16cad75b39  gcc/testsuite/gcc.target/bpf/core-lto-1.c
+ d806e90d8b8b8547bd35f37c91477380  gcc/testsuite/gcc.target/bpf/core-pr106745.c
  44d568fcfefc5d8da7a27f51746e08ed  gcc/testsuite/gcc.target/bpf/core-section-1.c
  7c5767ad8853516ee52b4fccd6f2ad45  gcc/testsuite/gcc.target/bpf/diag-funargs-2.c
  0f171b6874c7ce98e825ae0d0725fee0  gcc/testsuite/gcc.target/bpf/diag-funargs-3.c
*************** d29fde5f049c90eb3638f347d15f46a2  gcc/te
*** 60365,60370 ****
--- 63873,63881 ----
  efb35ca8408d4ca4edc1dc74e7d53c88  gcc/testsuite/gcc.target/bpf/diag-indcalls.c
  6157a730cbda46936373436b62a9dd52  gcc/testsuite/gcc.target/bpf/diag-sdiv.c
  868a8fcabece970704fc01dcdd8c940f  gcc/testsuite/gcc.target/bpf/diag-smod.c
+ a2ee893a1eca899e32b9191538662abe  gcc/testsuite/gcc.target/bpf/double-1.c
+ e1fab4c62985d1f4ca539e04ff39f922  gcc/testsuite/gcc.target/bpf/double-2.c
+ 676b4b1bf98949a54214ceb5f0c1ec3a  gcc/testsuite/gcc.target/bpf/float-1.c
  dae4968889f616459c438a45482825bc  gcc/testsuite/gcc.target/bpf/helper-bind.c
  25f9de4ca526ec37e6f6aa1c1f3b3d73  gcc/testsuite/gcc.target/bpf/helper-bpf-redirect.c
  4cf9afc33fb29b890d470dc5e598b794  gcc/testsuite/gcc.target/bpf/helper-clone-redirect.c
*************** c0c04a0ed12ec95a86e428b6a03ec112  gcc/te
*** 60473,60478 ****
--- 63984,63990 ----
  34f49e9a3bad17dcba3af6133ecdac39  gcc/testsuite/gcc.target/bpf/helper-xdp-adjust-meta.c
  73b0d4e42dc2de2a236b6bc0a889e58a  gcc/testsuite/gcc.target/bpf/helper-xdp-adjust-tail.c
  aecb36e66a00bc767e57e19c60cac9b3  gcc/testsuite/gcc.target/bpf/jmp-1.c
+ cc1edd27320c8d14e2d909c679a42497  gcc/testsuite/gcc.target/bpf/ldxdw.c
  ea119219c2d407c1b7b8da1f3946fa74  gcc/testsuite/gcc.target/bpf/nop-1.c
  cd41d37c2f24e4c5454955bd38989508  gcc/testsuite/gcc.target/bpf/skb-ancestor-cgroup-id.c
  5660ceee20ea01caded4e675ebcc0487  gcc/testsuite/gcc.target/bpf/sync-fetch-and-add.c
*************** da811515083d9ddf056500903ebb758b  gcc/te
*** 60495,60501 ****
  825d51bc2455ddb81464d0a078c11bda  gcc/testsuite/gcc.target/cris/builtin_clz_v3.c
  619e346f21294a1edba1fa0d4fb11951  gcc/testsuite/gcc.target/cris/builtin_ctz_v3.c
  37dd2f4312701e553c1c5e8a89d8fcdd  gcc/testsuite/gcc.target/cris/builtin_ctz_v8.c
! b56dbff66c3cabfcfc0ee86fc16960ae  gcc/testsuite/gcc.target/cris/cris.exp
  f267ed4a3d93f57ca2fd47fb88787845  gcc/testsuite/gcc.target/cris/dbr-1.c
  09fbcf24d1de7a8eae1a6d8d6243d8de  gcc/testsuite/gcc.target/cris/inasm-other.c
  22e3cf12d66bc0fca53215d6e8dbe6ff  gcc/testsuite/gcc.target/cris/inasm-v10.c
--- 64007,64013 ----
  825d51bc2455ddb81464d0a078c11bda  gcc/testsuite/gcc.target/cris/builtin_clz_v3.c
  619e346f21294a1edba1fa0d4fb11951  gcc/testsuite/gcc.target/cris/builtin_ctz_v3.c
  37dd2f4312701e553c1c5e8a89d8fcdd  gcc/testsuite/gcc.target/cris/builtin_ctz_v8.c
! 03c6809132162401322c77c3d7d6487a  gcc/testsuite/gcc.target/cris/cris.exp
  f267ed4a3d93f57ca2fd47fb88787845  gcc/testsuite/gcc.target/cris/dbr-1.c
  09fbcf24d1de7a8eae1a6d8d6243d8de  gcc/testsuite/gcc.target/cris/inasm-other.c
  22e3cf12d66bc0fca53215d6e8dbe6ff  gcc/testsuite/gcc.target/cris/inasm-v10.c
*************** b08e4db62a9fb0f97ea3211c38828a92  gcc/te
*** 60561,60567 ****
  a8632f4c714d9a1bc78849b980440a8c  gcc/testsuite/gcc.target/cris/sync-4i.c
  690e9023ecafeef7a7be46436ca9854c  gcc/testsuite/gcc.target/cris/sync-4s.c
  0b1b7109726eb4d3415da0cc65329694  gcc/testsuite/gcc.target/cris/sync-xchg-1.c
! 61df1639861c1df8c0dc8f0519cc5cdd  gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
  46bb07141c5993a8c5154d62b285f8c7  gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c
  4181eccc65a7ef0c720e1f62eafc01fa  gcc/testsuite/gcc.target/cris/torture/pr24750-2.c
  3578773c3349eca3bbd054dfb8ebac62  gcc/testsuite/gcc.target/cris/torture/pr34773.c
--- 64073,64079 ----
  a8632f4c714d9a1bc78849b980440a8c  gcc/testsuite/gcc.target/cris/sync-4i.c
  690e9023ecafeef7a7be46436ca9854c  gcc/testsuite/gcc.target/cris/sync-4s.c
  0b1b7109726eb4d3415da0cc65329694  gcc/testsuite/gcc.target/cris/sync-xchg-1.c
! 7c848d41b0e7fb76bda766aef6d3aed5  gcc/testsuite/gcc.target/cris/torture/cris-torture.exp
  46bb07141c5993a8c5154d62b285f8c7  gcc/testsuite/gcc.target/cris/torture/no-pro-epi-1.c
  4181eccc65a7ef0c720e1f62eafc01fa  gcc/testsuite/gcc.target/cris/torture/pr24750-2.c
  3578773c3349eca3bbd054dfb8ebac62  gcc/testsuite/gcc.target/cris/torture/pr34773.c
*************** c70adc041bc91df7a4d0eb7aa2a58cf7  gcc/te
*** 60582,60595 ****
  2f18951162d37f7614de5437e004f833  gcc/testsuite/gcc.target/cris/torture/trap-v3.c
  7228b2fd781bfb84fe2d0582375ddcb7  gcc/testsuite/gcc.target/csky/and1.c
  b3e0d6cef818ba76e51eb5e030cd1b39  gcc/testsuite/gcc.target/csky/and2.c
- d1aa2964f477d55bf0370537b02d24ac  gcc/testsuite/gcc.target/csky/and3a.c
  a7a375f209fc55b40dbe3416a2cb8200  gcc/testsuite/gcc.target/csky/and3b.c
! b7155a676b316d828ff12c2c503fd59c  gcc/testsuite/gcc.target/csky/ck801-branch.c
! 983dfeeef53f41aac018925fa90c69d8  gcc/testsuite/gcc.target/csky/constpool-1.c
! aaad88eae49192421bd38c2c837d5ffc  gcc/testsuite/gcc.target/csky/constpool-2.c
! 7e4e72e722403eab3bdd2874c8512498  gcc/testsuite/gcc.target/csky/constpool-3.c
  c64550af69ac6a4dfb37edcc3e6de899  gcc/testsuite/gcc.target/csky/cse-cc.c
! e0ad139d80279985dfac69dd3c030d01  gcc/testsuite/gcc.target/csky/csky.exp
  3ff18cb12dcb4fb55c1616d207f0f2e9  gcc/testsuite/gcc.target/csky/fldrd_fstrd.c
  0f17acdd834091c69016d7a2af242e1f  gcc/testsuite/gcc.target/csky/fnargs-1.c
  71a0a8fdef92000347984095b42f84f2  gcc/testsuite/gcc.target/csky/fnargs-2.c
--- 64094,64107 ----
  2f18951162d37f7614de5437e004f833  gcc/testsuite/gcc.target/cris/torture/trap-v3.c
  7228b2fd781bfb84fe2d0582375ddcb7  gcc/testsuite/gcc.target/csky/and1.c
  b3e0d6cef818ba76e51eb5e030cd1b39  gcc/testsuite/gcc.target/csky/and2.c
  a7a375f209fc55b40dbe3416a2cb8200  gcc/testsuite/gcc.target/csky/and3b.c
! 50d4af85d398a38136f61228d96ea994  gcc/testsuite/gcc.target/csky/ck801-and.c
! ce5d9b7dbf68bda1f2ae708aeaac3ee4  gcc/testsuite/gcc.target/csky/ck801-branch.c
! e334448d62e2715aea6c2d7e57c2576b  gcc/testsuite/gcc.target/csky/ck801-constpool.c
! aaad88eae49192421bd38c2c837d5ffc  gcc/testsuite/gcc.target/csky/constpool-1.c
! 7e4e72e722403eab3bdd2874c8512498  gcc/testsuite/gcc.target/csky/constpool-2.c
  c64550af69ac6a4dfb37edcc3e6de899  gcc/testsuite/gcc.target/csky/cse-cc.c
! 98a36041b88d8d2a9eaf1c97735e80da  gcc/testsuite/gcc.target/csky/csky.exp
  3ff18cb12dcb4fb55c1616d207f0f2e9  gcc/testsuite/gcc.target/csky/fldrd_fstrd.c
  0f17acdd834091c69016d7a2af242e1f  gcc/testsuite/gcc.target/csky/fnargs-1.c
  71a0a8fdef92000347984095b42f84f2  gcc/testsuite/gcc.target/csky/fnargs-2.c
*************** ac08a3c5539d8fe4b68818cce90d0271  gcc/te
*** 60599,60605 ****
  fcd38c704b19d2241fdea4d4564d7218  gcc/testsuite/gcc.target/csky/fnmul-3.c
  8e4a61b89a91d87d007558c91da270fc  gcc/testsuite/gcc.target/csky/fnmul-4.c
  32b43a0f434aa490598892cf1cbe6618  gcc/testsuite/gcc.target/csky/fpuv3/fldr64_fstr64.c
! 2b1995193714ffda88b2f3aaa4cd0fae  gcc/testsuite/gcc.target/csky/fpuv3/fpuv3.exp
  f0e0df3f7b547f0f568889d82be4d61b  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_div.c
  94bf44b18840c2e29caf1d82fd7284a4  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_fadd.c
  3367772e87bcfd8ebc7f55ac55c2da13  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_fdtos.c
--- 64111,64117 ----
  fcd38c704b19d2241fdea4d4564d7218  gcc/testsuite/gcc.target/csky/fnmul-3.c
  8e4a61b89a91d87d007558c91da270fc  gcc/testsuite/gcc.target/csky/fnmul-4.c
  32b43a0f434aa490598892cf1cbe6618  gcc/testsuite/gcc.target/csky/fpuv3/fldr64_fstr64.c
! f5e73e6eeb923dbf23757ae4c9af8696  gcc/testsuite/gcc.target/csky/fpuv3/fpuv3.exp
  f0e0df3f7b547f0f568889d82be4d61b  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_div.c
  94bf44b18840c2e29caf1d82fd7284a4  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_fadd.c
  3367772e87bcfd8ebc7f55ac55c2da13  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_fdtos.c
*************** d2620ca1df46ba15daac1595403d171a  gcc/te
*** 60638,60648 ****
  937ea4807ddabd55579faa9c4c2163a4  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_unordered.c
  d314e10078acacca0634c35cf325bf1f  gcc/testsuite/gcc.target/csky/land1.c
  61b8717c421fc4f1d764429691b8bc3e  gcc/testsuite/gcc.target/csky/land2.c
! a88ea058d0687111d933cfc597fd576f  gcc/testsuite/gcc.target/csky/ldbs.c
  f8325974b60d2e8397f34c8f0e8d8bbf  gcc/testsuite/gcc.target/csky/naked.c
  b7b0230f4b534b91ce701e0cfaf699fc  gcc/testsuite/gcc.target/csky/or1.c
  3396d7f14e4963592892b06ccec1dbed  gcc/testsuite/gcc.target/epiphany/btst-1.c
! cddef70c66aad4f955bbc55e9a33cbff  gcc/testsuite/gcc.target/epiphany/epiphany.exp
  f477a84910092e956697c8b091ff4aba  gcc/testsuite/gcc.target/epiphany/fcmp-1.c
  c8ff5d5cf55484cd9bab33958ca94c36  gcc/testsuite/gcc.target/epiphany/fmadd-1.c
  a2ce030a9439b19e934208c89cb93ba6  gcc/testsuite/gcc.target/epiphany/fmsub-1.c
--- 64150,64160 ----
  937ea4807ddabd55579faa9c4c2163a4  gcc/testsuite/gcc.target/csky/fpuv3/fpv3_unordered.c
  d314e10078acacca0634c35cf325bf1f  gcc/testsuite/gcc.target/csky/land1.c
  61b8717c421fc4f1d764429691b8bc3e  gcc/testsuite/gcc.target/csky/land2.c
! e21f46f9fe1e967307de4447e3bfd188  gcc/testsuite/gcc.target/csky/ldbs.c
  f8325974b60d2e8397f34c8f0e8d8bbf  gcc/testsuite/gcc.target/csky/naked.c
  b7b0230f4b534b91ce701e0cfaf699fc  gcc/testsuite/gcc.target/csky/or1.c
  3396d7f14e4963592892b06ccec1dbed  gcc/testsuite/gcc.target/epiphany/btst-1.c
! cbfd5f1e718dd39b2a49ad348501d777  gcc/testsuite/gcc.target/epiphany/epiphany.exp
  f477a84910092e956697c8b091ff4aba  gcc/testsuite/gcc.target/epiphany/fcmp-1.c
  c8ff5d5cf55484cd9bab33958ca94c36  gcc/testsuite/gcc.target/epiphany/fmadd-1.c
  a2ce030a9439b19e934208c89cb93ba6  gcc/testsuite/gcc.target/epiphany/fmsub-1.c
*************** d7f2f60c2c464ec7133704d0b8deb86d  gcc/te
*** 60683,60691 ****
  0bbd4283a697514ba60e495e007fbbaa  gcc/testsuite/gcc.target/frv/fr550-builtins-3.c
  d8fff2cc6bc3321095b7345915e98ec1  gcc/testsuite/gcc.target/frv/fr550-builtins-4.c
  4f94aea2a37f6adad09abfdbb47bb87e  gcc/testsuite/gcc.target/frv/fr550-builtins-5.c
! 44a9c4f5b25458998a4b163e58ffa718  gcc/testsuite/gcc.target/frv/frv.exp
  7b7fc5fe9c67544f0b261293730d590b  gcc/testsuite/gcc.target/gcn/fpdiv.c
! 7c4db94b11bd144705999f21f121b3f6  gcc/testsuite/gcc.target/gcn/gcn.exp
  0ea62a0ac401e376be4dd2643553b422  gcc/testsuite/gcc.target/gcn/sram-ecc-1.c
  294892f7304e51ed7447fc2643e45348  gcc/testsuite/gcc.target/gcn/sram-ecc-2.c
  3f10465d2867369105692e397e098a18  gcc/testsuite/gcc.target/gcn/sram-ecc-3.c
--- 64195,64259 ----
  0bbd4283a697514ba60e495e007fbbaa  gcc/testsuite/gcc.target/frv/fr550-builtins-3.c
  d8fff2cc6bc3321095b7345915e98ec1  gcc/testsuite/gcc.target/frv/fr550-builtins-4.c
  4f94aea2a37f6adad09abfdbb47bb87e  gcc/testsuite/gcc.target/frv/fr550-builtins-5.c
! a59a55f98239d81df45e4007d315600c  gcc/testsuite/gcc.target/frv/frv.exp
! df466e656c9d9b4d351c2a9bb8d8f6d8  gcc/testsuite/gcc.target/gcn/complex.c
! 2180e3d37af65cd29a16bd32a2a43df9  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_1.c
! 2511ca08a6587c62a068468e93afc652  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_1_run.c
! e2ab8c5c5d97ce6fe19ec2aff7e51ff3  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_2.c
! eb8696a455fd16137fbe536d0c09c64f  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_2_run.c
! 9a8ee023dd2f4ca6c2e4c3d2193e4852  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_3.c
! 1116a722095cd29029e1ed1b0f42f342  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_3_run.c
! 0880f9b5a2ba60d4cfc07299a77f4141  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_4.c
! 10f7ee57055ca921a3fc2baa780f7a02  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_4_run.c
! 3aef879c4b7d9f3935d4b6e58d415267  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_5.c
! 22598d4094703254571d1c1c38bf9114  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_5_run.c
! 7f900b8ac9c9966af39b571863622648  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_6.c
! 153d623e75f707339c207b99c3961ad3  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_6_run.c
! d12235e973d22c294cf5136f6f5b8ab2  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_7.c
! f2cdea9c4c832879b4953b4fb63da7a6  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_7_run.c
! 7d19fc5e1e6e0888afacdcf3fa81c450  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_8.c
! f10c8486c2d1b83804c7a5660577c681  gcc/testsuite/gcc.target/gcn/cond_fmaxnm_8_run.c
! ddb1b4294adfd2d23a9838976c16e4f4  gcc/testsuite/gcc.target/gcn/cond_fminnm_1.c
! 6ba7a458125ab63cef5a955eb3f679dc  gcc/testsuite/gcc.target/gcn/cond_fminnm_1_run.c
! 1064b4200284c35c256b130af88351c3  gcc/testsuite/gcc.target/gcn/cond_fminnm_2.c
! 9ab15d59c2a1ef7550302595b78e4c77  gcc/testsuite/gcc.target/gcn/cond_fminnm_2_run.c
! ab06844ea189789b119d83f5fc9d7d44  gcc/testsuite/gcc.target/gcn/cond_fminnm_3.c
! 4cd45f5a7694799cc968464eb3bba148  gcc/testsuite/gcc.target/gcn/cond_fminnm_3_run.c
! a17fe579768053b36d39439f54d7c0ee  gcc/testsuite/gcc.target/gcn/cond_fminnm_4.c
! d366633ce5e932318194971afdf7f7a2  gcc/testsuite/gcc.target/gcn/cond_fminnm_4_run.c
! a834f5feb85b7f2249d3c80ae4eb8132  gcc/testsuite/gcc.target/gcn/cond_fminnm_5.c
! b58ba4d23a4f05a63892c26fc6320b36  gcc/testsuite/gcc.target/gcn/cond_fminnm_5_run.c
! 68ed5ddba4705689c324bc851f261cc8  gcc/testsuite/gcc.target/gcn/cond_fminnm_6.c
! 1c77c03912b367743edd4a016041f6c9  gcc/testsuite/gcc.target/gcn/cond_fminnm_6_run.c
! cea588f3895bdb567e1093b9394ce7af  gcc/testsuite/gcc.target/gcn/cond_fminnm_7.c
! fd541d2634275bc49972f63e3ea1a22b  gcc/testsuite/gcc.target/gcn/cond_fminnm_7_run.c
! 92e5e45db0341446db03e77e841c2024  gcc/testsuite/gcc.target/gcn/cond_fminnm_8.c
! 05cf329d952b3c5fa1f6dee44334b2f4  gcc/testsuite/gcc.target/gcn/cond_fminnm_8_run.c
! da99fd0980d64626bae6adcc0d09b2b2  gcc/testsuite/gcc.target/gcn/cond_shift_3.c
! 1e17bdb912a33e366ddc9e5e1dbcf66f  gcc/testsuite/gcc.target/gcn/cond_shift_3_run.c
! 2487d22c007b08c202ddbd911690e973  gcc/testsuite/gcc.target/gcn/cond_shift_4.c
! c3e4da440176caeea1441b7269253b5a  gcc/testsuite/gcc.target/gcn/cond_shift_4_run.c
! 14893f5191dec0c2bf3756d1160ca43d  gcc/testsuite/gcc.target/gcn/cond_shift_8.c
! a4dccf4a3ebf463ff7c1ef6309127c2b  gcc/testsuite/gcc.target/gcn/cond_shift_8_run.c
! 3800505c91250f200fe4040ccf934ba4  gcc/testsuite/gcc.target/gcn/cond_shift_9.c
! 8001e6f963f215252768c40269d67f46  gcc/testsuite/gcc.target/gcn/cond_shift_9_run.c
! d96f3b7bcbb9b368c854e7f4d51afd63  gcc/testsuite/gcc.target/gcn/cond_smax_1.c
! 4af897fd9bc0955a48837cdf20fc911b  gcc/testsuite/gcc.target/gcn/cond_smax_1_run.c
! 94e035d612e8e3463e1b101fd813943e  gcc/testsuite/gcc.target/gcn/cond_smin_1.c
! 2ed63564c3ec9cee1b4a9b34863cb248  gcc/testsuite/gcc.target/gcn/cond_smin_1_run.c
! 3df2b1c2704a56f59d951a6767194fd9  gcc/testsuite/gcc.target/gcn/cond_umax_1.c
! 3a2b9375bc537bfcb75d840dd851b66b  gcc/testsuite/gcc.target/gcn/cond_umax_1_run.c
! 5ec317301426d571f7b2cdf778be9091  gcc/testsuite/gcc.target/gcn/cond_umin_1.c
! 40b9cd3a0a4158d65bbd69924aa432fa  gcc/testsuite/gcc.target/gcn/cond_umin_1_run.c
  7b7fc5fe9c67544f0b261293730d590b  gcc/testsuite/gcc.target/gcn/fpdiv.c
! d64b16993666ddd5f00728d95c1e5e36  gcc/testsuite/gcc.target/gcn/gcn.exp
! f8c14281fa729687851e69729e7776c8  gcc/testsuite/gcc.target/gcn/math-builtins-1.c
! e1a9ff6e293dc4cd41f1b88894566c73  gcc/testsuite/gcc.target/gcn/simd-math-1.c
! e44eff572cbf9d441776358c84f710c4  gcc/testsuite/gcc.target/gcn/simd-math-2.c
! b2a9def41f10244288af094b92597e8e  gcc/testsuite/gcc.target/gcn/smax_1.c
! 6e933396760a7a72a37422dcce7d607d  gcc/testsuite/gcc.target/gcn/smax_1_run.c
! d3b69579c49c8403b79d6b23a4fd93ad  gcc/testsuite/gcc.target/gcn/smin_1.c
! 1e8da5af3a5f8caa3571350d21540384  gcc/testsuite/gcc.target/gcn/smin_1_run.c
  0ea62a0ac401e376be4dd2643553b422  gcc/testsuite/gcc.target/gcn/sram-ecc-1.c
  294892f7304e51ed7447fc2643e45348  gcc/testsuite/gcc.target/gcn/sram-ecc-2.c
  3f10465d2867369105692e397e098a18  gcc/testsuite/gcc.target/gcn/sram-ecc-3.c
*************** d60d982cb4210c180358f523b33a4a54  gcc/te
*** 60694,60705 ****
  b39be000dd7931ea7f636d96b9345501  gcc/testsuite/gcc.target/gcn/sram-ecc-6.c
  d8a69d1e0f8e59ede6337a9f9af06146  gcc/testsuite/gcc.target/gcn/sram-ecc-7.c
  2c882a842b59dbf26f7c106877836e56  gcc/testsuite/gcc.target/gcn/sram-ecc-8.c
  1e706003dee9df5d57006e904e26af25  gcc/testsuite/gcc.target/gcn/vcc-clobber.c
  84f0af82a71d1e7354056e7e80e57cc6  gcc/testsuite/gcc.target/h8300/add-2.c
  216037d0da5ff83a3c5aee08d451cc6a  gcc/testsuite/gcc.target/h8300/add-3.c
  60aaa20daa95a2c6a46f951ed2210274  gcc/testsuite/gcc.target/h8300/add.c
  6618feb3136b4db14cb25d0ac22056c4  gcc/testsuite/gcc.target/h8300/andsi3_ashift_n_lower.c
! 4cd4129d556f920169aee79fb3c438eb  gcc/testsuite/gcc.target/h8300/h8300.exp
  945675e6af6576f674dcc30697a6f78b  gcc/testsuite/gcc.target/h8300/pr13721.c
  5788c901799e460b8e5c429a23b94ebe  gcc/testsuite/gcc.target/h8300/pr17306-1.c
  4a76a6a9bd3c90b87865db2ad9c10434  gcc/testsuite/gcc.target/h8300/pr17306-2.c
--- 64262,64278 ----
  b39be000dd7931ea7f636d96b9345501  gcc/testsuite/gcc.target/gcn/sram-ecc-6.c
  d8a69d1e0f8e59ede6337a9f9af06146  gcc/testsuite/gcc.target/gcn/sram-ecc-7.c
  2c882a842b59dbf26f7c106877836e56  gcc/testsuite/gcc.target/gcn/sram-ecc-8.c
+ a6912225a2514b70b905d5ce5b1ff92f  gcc/testsuite/gcc.target/gcn/umax_1.c
+ 2719dad67ae134a3041196bde8b23bec  gcc/testsuite/gcc.target/gcn/umax_1_run.c
+ 008a014072290507913d8cbfb6b03211  gcc/testsuite/gcc.target/gcn/umin_1.c
+ c1f2f58ff01ac0af9bac1540222140eb  gcc/testsuite/gcc.target/gcn/umin_1_run.c
+ 789a4df2f8cafe6ecb94a95067888657  gcc/testsuite/gcc.target/gcn/unsafe-math-1.c
  1e706003dee9df5d57006e904e26af25  gcc/testsuite/gcc.target/gcn/vcc-clobber.c
  84f0af82a71d1e7354056e7e80e57cc6  gcc/testsuite/gcc.target/h8300/add-2.c
  216037d0da5ff83a3c5aee08d451cc6a  gcc/testsuite/gcc.target/h8300/add-3.c
  60aaa20daa95a2c6a46f951ed2210274  gcc/testsuite/gcc.target/h8300/add.c
  6618feb3136b4db14cb25d0ac22056c4  gcc/testsuite/gcc.target/h8300/andsi3_ashift_n_lower.c
! 16c99693f801ce9594ae9490f115afe5  gcc/testsuite/gcc.target/h8300/h8300.exp
  945675e6af6576f674dcc30697a6f78b  gcc/testsuite/gcc.target/h8300/pr13721.c
  5788c901799e460b8e5c429a23b94ebe  gcc/testsuite/gcc.target/h8300/pr17306-1.c
  4a76a6a9bd3c90b87865db2ad9c10434  gcc/testsuite/gcc.target/h8300/pr17306-2.c
*************** aaaadf978237931983f712ab447eeff0  gcc/te
*** 60709,60715 ****
  520d992d481a80dfc60ea32b9335b583  gcc/testsuite/gcc.target/h8300/sub-2.c
  04357d0cac796ebc8355f137f2041585  gcc/testsuite/gcc.target/h8300/sub-3.c
  4e0e54c95521e668ac88da0666ea4642  gcc/testsuite/gcc.target/h8300/sub.c
! 3b9286437181d168fcfd9614e882e7ce  gcc/testsuite/gcc.target/hppa/hppa.exp
  b3208ea4097d665215fd20e76146b954  gcc/testsuite/gcc.target/hppa/shadd-1.c
  793a9a24f14f046eed5297e9926e198f  gcc/testsuite/gcc.target/hppa/shadd-2.c
  062013a0e3e7eddd556932d95da5027e  gcc/testsuite/gcc.target/hppa/shadd-3.c
--- 64282,64288 ----
  520d992d481a80dfc60ea32b9335b583  gcc/testsuite/gcc.target/h8300/sub-2.c
  04357d0cac796ebc8355f137f2041585  gcc/testsuite/gcc.target/h8300/sub-3.c
  4e0e54c95521e668ac88da0666ea4642  gcc/testsuite/gcc.target/h8300/sub.c
! 30fc046c532e536172a25c2fa595e8e8  gcc/testsuite/gcc.target/hppa/hppa.exp
  b3208ea4097d665215fd20e76146b954  gcc/testsuite/gcc.target/hppa/shadd-1.c
  793a9a24f14f046eed5297e9926e198f  gcc/testsuite/gcc.target/hppa/shadd-2.c
  062013a0e3e7eddd556932d95da5027e  gcc/testsuite/gcc.target/hppa/shadd-3.c
*************** f3b1566c7c98d2f59922637c82963457  gcc/te
*** 60798,60803 ****
--- 64371,64378 ----
  3db02232be23b8323e256e34853b5a45  gcc/testsuite/gcc.target/i386/addr-space-3.c
  8271f07e21d6eeebacf960a2de716a17  gcc/testsuite/gcc.target/i386/addr-space-4.c
  152e32331ada53cf77054183ff2428ef  gcc/testsuite/gcc.target/i386/addr-space-5.c
+ 44bbc82940c02caf24e3da98b3d7f366  gcc/testsuite/gcc.target/i386/addr-space-typeck-1.c
+ 8c140e83decbbd083657a128e5f45ec1  gcc/testsuite/gcc.target/i386/addr-space-typeck-2.c
  dd05e8a4c4da9897a764303a258ce47e  gcc/testsuite/gcc.target/i386/adx-addcarryx32-1.c
  4f8c4336e84c21c48a8806801033bb01  gcc/testsuite/gcc.target/i386/adx-addcarryx32-2.c
  1725bf7b2ca097affc7681de4103f954  gcc/testsuite/gcc.target/i386/adx-addcarryx32-3.c
*************** ae8b5a5d686fedd54544f4210ebf0d66  gcc/te
*** 60833,60854 ****
  d3f15f077bac4fdd98e262ff70319e29  gcc/testsuite/gcc.target/i386/amd64-abi-7.c
  41e281a8a41c48fe7dbd02b555d86032  gcc/testsuite/gcc.target/i386/amd64-abi-8.c
  29b2c8175a8aeb1de6d8e6148a11d79d  gcc/testsuite/gcc.target/i386/amd64-abi-9.c
! 3186d9938a0a2ff6b31c795cb0902992  gcc/testsuite/gcc.target/i386/amx-check.h
  3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
  215b9569abd57352c2d13ba5129e07cd  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
! da96302cc56e3a5f8e0b027d5612c4e5  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
  9c0241aa040bd07b656b878c62a423b9  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
  2622cfbb5e38bb55e4751132b8d85ea3  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
! c5330aafe258890f8c38cb1aab66e148  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
! d60dbd15c646ed84efd9129d21d39b6d  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
! 7afa2ba7a106ecf4dc01a7a82fee2f49  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
! 3eebd7a67adf970dc6eea82ff3eda30d  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
  4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
  a455baf8f9990eb7494164842dce7c91  gcc/testsuite/gcc.target/i386/amxtile-3.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
  2629a435840ab211444b4a2af4563d8d  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
  c5cfc6b01e748536e4ac5d65b3528952  gcc/testsuite/gcc.target/i386/andor-1.c
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
  2a0e75dae748effbe9abaa9db2d01436  gcc/testsuite/gcc.target/i386/asm-1.c
  71b9972c5849678e344f7330b6b395bd  gcc/testsuite/gcc.target/i386/asm-2.c
  85f31e7bd33534098fea5ad7147be119  gcc/testsuite/gcc.target/i386/asm-3.c
--- 64408,64439 ----
  d3f15f077bac4fdd98e262ff70319e29  gcc/testsuite/gcc.target/i386/amd64-abi-7.c
  41e281a8a41c48fe7dbd02b555d86032  gcc/testsuite/gcc.target/i386/amd64-abi-8.c
  29b2c8175a8aeb1de6d8e6148a11d79d  gcc/testsuite/gcc.target/i386/amd64-abi-9.c
! ab183c688cdb4a97e3f15f79a1c2e13f  gcc/testsuite/gcc.target/i386/amx-check.h
! e41de94d793974394641e42ed7370a65  gcc/testsuite/gcc.target/i386/amx-helper.h
  3e5ed8f51d1403b179db592f12cb019c  gcc/testsuite/gcc.target/i386/amxbf16-asmatt-1.c
  215b9569abd57352c2d13ba5129e07cd  gcc/testsuite/gcc.target/i386/amxbf16-asmintel-1.c
! c4406ef230e7a6bb0e7b45b2f94958e9  gcc/testsuite/gcc.target/i386/amxbf16-dpbf16ps-2.c
! 0787eb1011631a123144aa2e9fe5b9f2  gcc/testsuite/gcc.target/i386/amxcomplex-asmatt-1.c
! 971dbba18c823297793b59421738511a  gcc/testsuite/gcc.target/i386/amxcomplex-asmintel-1.c
! 88abb806331f7455dfc053e7bfa9993d  gcc/testsuite/gcc.target/i386/amxcomplex-cmmimfp16ps-2.c
! 5029635b15d7dd713761d53e4630a666  gcc/testsuite/gcc.target/i386/amxcomplex-cmmrlfp16ps-2.c
! 0a13ebe83385a9aedb0a82cf5504a96b  gcc/testsuite/gcc.target/i386/amxfp16-asmatt-1.c
! eefaf66ff1c174b18d152560427620f0  gcc/testsuite/gcc.target/i386/amxfp16-asmintel-1.c
! 26723806e86b2502f2d6b3c39febf8ce  gcc/testsuite/gcc.target/i386/amxfp16-dpfp16ps-2.c
  9c0241aa040bd07b656b878c62a423b9  gcc/testsuite/gcc.target/i386/amxint8-asmatt-1.c
  2622cfbb5e38bb55e4751132b8d85ea3  gcc/testsuite/gcc.target/i386/amxint8-asmintel-1.c
! 06751f31b3086f1ff040533de854e994  gcc/testsuite/gcc.target/i386/amxint8-dpbssd-2.c
! e3f6b37649c7f1fa4d20b6327cdcdb27  gcc/testsuite/gcc.target/i386/amxint8-dpbsud-2.c
! a8ab966558faa138830cc3e75dbe4464  gcc/testsuite/gcc.target/i386/amxint8-dpbusd-2.c
! fc50af06e61cf9d13887f2fe515b0e27  gcc/testsuite/gcc.target/i386/amxint8-dpbuud-2.c
  4e7e8638f4652613beb251daa4730463  gcc/testsuite/gcc.target/i386/amxtile-2.c
  a455baf8f9990eb7494164842dce7c91  gcc/testsuite/gcc.target/i386/amxtile-3.c
  8e7fab1b3f5c89155f09aabb59da8382  gcc/testsuite/gcc.target/i386/amxtile-asmatt-1.c
  2629a435840ab211444b4a2af4563d8d  gcc/testsuite/gcc.target/i386/amxtile-asmintel-1.c
+ 000edc038d71c16eb844c26f6d7f2f53  gcc/testsuite/gcc.target/i386/and-1.c
  c5cfc6b01e748536e4ac5d65b3528952  gcc/testsuite/gcc.target/i386/andor-1.c
  c052d916aa90fa5343dac48ba370180f  gcc/testsuite/gcc.target/i386/andor-2.c
+ 6b37f3af0f281a50739a4dabbfa5799a  gcc/testsuite/gcc.target/i386/ashlti3-1.c
  2a0e75dae748effbe9abaa9db2d01436  gcc/testsuite/gcc.target/i386/asm-1.c
  71b9972c5849678e344f7330b6b395bd  gcc/testsuite/gcc.target/i386/asm-2.c
  85f31e7bd33534098fea5ad7147be119  gcc/testsuite/gcc.target/i386/asm-3.c
*************** e87dd16c26a5e74dd3b1d5db54711e7c  gcc/te
*** 60881,60887 ****
  f65b08f90b0d063dfe0900c48ae44e31  gcc/testsuite/gcc.target/i386/auto-init-23.c
  bcf4bec8ae3fb406f477539e4ce5e3ae  gcc/testsuite/gcc.target/i386/auto-init-24.c
  71a4675584bf20a65fc303e77c312593  gcc/testsuite/gcc.target/i386/auto-init-3.c
! 2cd406ebdf250994ac20b2d5970e0bed  gcc/testsuite/gcc.target/i386/auto-init-4.c
  1c3aad106f065f8f59eefa5ef2e696f7  gcc/testsuite/gcc.target/i386/auto-init-5.c
  b75e9b4b68c37a6bbe89fb4653e9c56f  gcc/testsuite/gcc.target/i386/auto-init-6.c
  839577d5139fbc687a0280c2c0655a0d  gcc/testsuite/gcc.target/i386/auto-init-7.c
--- 64466,64472 ----
  f65b08f90b0d063dfe0900c48ae44e31  gcc/testsuite/gcc.target/i386/auto-init-23.c
  bcf4bec8ae3fb406f477539e4ce5e3ae  gcc/testsuite/gcc.target/i386/auto-init-24.c
  71a4675584bf20a65fc303e77c312593  gcc/testsuite/gcc.target/i386/auto-init-3.c
! 2215064118772f25fb8ca3b2b1b122a4  gcc/testsuite/gcc.target/i386/auto-init-4.c
  1c3aad106f065f8f59eefa5ef2e696f7  gcc/testsuite/gcc.target/i386/auto-init-5.c
  b75e9b4b68c37a6bbe89fb4653e9c56f  gcc/testsuite/gcc.target/i386/auto-init-6.c
  839577d5139fbc687a0280c2c0655a0d  gcc/testsuite/gcc.target/i386/auto-init-7.c
*************** da9a874cc43d515ca40fe91f469c7339  gcc/te
*** 60898,60904 ****
  64889694d1cb3280b3aa71fa1424dec5  gcc/testsuite/gcc.target/i386/auto-init-padding-7.c
  6833c0fc00c0e05839ef7fc0ebe6662f  gcc/testsuite/gcc.target/i386/auto-init-padding-8.c
  549987a73da82c221222811981e79dc3  gcc/testsuite/gcc.target/i386/auto-init-padding-9.c
! d2d0a2fe52fd164d43ff7fe24fd6d62d  gcc/testsuite/gcc.target/i386/avx-1.c
  5d79949d0342d2be91b231a563b48794  gcc/testsuite/gcc.target/i386/avx-2.c
  b8752c209e6f3770321077d53e28d157  gcc/testsuite/gcc.target/i386/avx-3.c
  604a63c576a08022e714a4940dc0e904  gcc/testsuite/gcc.target/i386/avx-additional-reg-names.c
--- 64483,64489 ----
  64889694d1cb3280b3aa71fa1424dec5  gcc/testsuite/gcc.target/i386/auto-init-padding-7.c
  6833c0fc00c0e05839ef7fc0ebe6662f  gcc/testsuite/gcc.target/i386/auto-init-padding-8.c
  549987a73da82c221222811981e79dc3  gcc/testsuite/gcc.target/i386/auto-init-padding-9.c
! ec16ac6fa2b59bd228d2fafe922958a6  gcc/testsuite/gcc.target/i386/avx-1.c
  5d79949d0342d2be91b231a563b48794  gcc/testsuite/gcc.target/i386/avx-2.c
  b8752c209e6f3770321077d53e28d157  gcc/testsuite/gcc.target/i386/avx-3.c
  604a63c576a08022e714a4940dc0e904  gcc/testsuite/gcc.target/i386/avx-additional-reg-names.c
*************** b8752c209e6f3770321077d53e28d157  gcc/te
*** 60907,60913 ****
  6121fa35c29e810adc69d901b6a65662  gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
  dc7b0b61713dbdc64942fcafa8aa3bbf  gcc/testsuite/gcc.target/i386/avx-ceilf-sfix-vec.c
  85748cbad44c56d9ae5a472ce45f79ce  gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
! 090dbae8193e4b8d9868052513543b8c  gcc/testsuite/gcc.target/i386/avx-check.h
  2a65fd05c0003aea46c7faaefb3a9ad1  gcc/testsuite/gcc.target/i386/avx-cmpsd-1.c
  ae728a63491324c9279e2facbffccbb7  gcc/testsuite/gcc.target/i386/avx-cmpsd-2.c
  584d5233a25d47a9749449fea9de2276  gcc/testsuite/gcc.target/i386/avx-cmpss-1.c
--- 64492,64498 ----
  6121fa35c29e810adc69d901b6a65662  gcc/testsuite/gcc.target/i386/avx-ceil-vec.c
  dc7b0b61713dbdc64942fcafa8aa3bbf  gcc/testsuite/gcc.target/i386/avx-ceilf-sfix-vec.c
  85748cbad44c56d9ae5a472ce45f79ce  gcc/testsuite/gcc.target/i386/avx-ceilf-vec.c
! 280f8ccacb138dc4e0c315c8cdd230c5  gcc/testsuite/gcc.target/i386/avx-check.h
  2a65fd05c0003aea46c7faaefb3a9ad1  gcc/testsuite/gcc.target/i386/avx-cmpsd-1.c
  ae728a63491324c9279e2facbffccbb7  gcc/testsuite/gcc.target/i386/avx-cmpsd-2.c
  584d5233a25d47a9749449fea9de2276  gcc/testsuite/gcc.target/i386/avx-cmpss-1.c
*************** e08ea1ad65a1356c216e10a127fa5372  gcc/te
*** 60930,60935 ****
--- 64515,64528 ----
  a9399ea6a589a3471b681317fdaae2ce  gcc/testsuite/gcc.target/i386/avx-floorf-sfix-vec.c
  be71b5c8fcb01dcf0584d73126144087  gcc/testsuite/gcc.target/i386/avx-floorf-vec.c
  c28b8cd90127111369b3a3f9e566a7b4  gcc/testsuite/gcc.target/i386/avx-fp-covert-1.c
+ 3d92ee64652a62114ec4df69f0c6a252  gcc/testsuite/gcc.target/i386/avx-ifma-1.c
+ ef100fd83dc3fcc0f4db7670c47568e4  gcc/testsuite/gcc.target/i386/avx-ifma-2.c
+ 8a1d60614a1b514ca1d59f849c09640e  gcc/testsuite/gcc.target/i386/avx-ifma-3.c
+ 581c323549ac1a43c4377ac437004cba  gcc/testsuite/gcc.target/i386/avx-ifma-4.c
+ 05a23f24eab9e0502e1468e444a60ff8  gcc/testsuite/gcc.target/i386/avx-ifma-5.c
+ d492956a81debfaf73314310c70144c2  gcc/testsuite/gcc.target/i386/avx-ifma-6.c
+ 3fcfbd4df0b603c8e844267d3e61dbf0  gcc/testsuite/gcc.target/i386/avx-ifma-vpmaddhuq-2.c
+ 07183f89ef41a2e991a020e38a54b194  gcc/testsuite/gcc.target/i386/avx-ifma-vpmaddluq-2.c
  00da02db70f133be74dae17241af27eb  gcc/testsuite/gcc.target/i386/avx-inline.c
  6ce5bb66230471952f8d93ba742e9287  gcc/testsuite/gcc.target/i386/avx-int-covert-1.c
  bb988640d708e14bbba7f036d1d900dc  gcc/testsuite/gcc.target/i386/avx-loadu2-m128-1.c
*************** f5710388bf6592fabf21f6aa05044790  gcc/te
*** 60941,60946 ****
--- 64534,64547 ----
  0573dc96587f464eab32fb45381cd9c3  gcc/testsuite/gcc.target/i386/avx-lrint-vec.c
  3391c9dd1dd0dbbac597a660fd5fb010  gcc/testsuite/gcc.target/i386/avx-lrintf-vec.c
  b4097136b326678c552cf24792f79fe8  gcc/testsuite/gcc.target/i386/avx-mul-1.c
+ e27aba9c25cfb5a48bac6c6354a97826  gcc/testsuite/gcc.target/i386/avx-ne-convert-1.c
+ d03de2728a4eea3b7b83d89fd40a8c2c  gcc/testsuite/gcc.target/i386/avx-ne-convert-vbcstnebf162ps-2.c
+ e098abacd326fa403ba8d8834cb92f59  gcc/testsuite/gcc.target/i386/avx-ne-convert-vbcstnesh2ps-2.c
+ 71c717dba99f2d7206135f53e0fd85bd  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneebf162ps-2.c
+ 3813412ee5d1a6fc85a5c2a5b47e010b  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneeph2ps-2.c
+ d62f4eaf47b23414362fe83ba0b4dd8f  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneobf162ps-2.c
+ 5f3fd55d36dae847e7c186826cd2c794  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneoph2ps-2.c
+ 646358e4ca06412b35d34d9562ea8118  gcc/testsuite/gcc.target/i386/avx-ne-convert-vcvtneps2bf16-2.c
  46322bf9b32fe645dd973a6bc8e8b128  gcc/testsuite/gcc.target/i386/avx-os-support.h
  4282e5e62a637968b77c731037a2875b  gcc/testsuite/gcc.target/i386/avx-pr102224.c
  62aa13560c827f799be1941a2e6da500  gcc/testsuite/gcc.target/i386/avx-pr51581-1.c
*************** d96f0c65f45ec07edea7b117f82635e3  gcc/te
*** 61064,61075 ****
--- 64665,64678 ----
  163bb26bfa075683131a8c5bc8fe29df  gcc/testsuite/gcc.target/i386/avx-vcomisd-4.c
  c59950caf3ad0b8bd03935c13c1a6efd  gcc/testsuite/gcc.target/i386/avx-vcomisd-5.c
  e40cf9d8c7ebf98038da38276d22ec2c  gcc/testsuite/gcc.target/i386/avx-vcomisd-6.c
+ f1fc949ddb48b234c50b71bb2137c6d4  gcc/testsuite/gcc.target/i386/avx-vcomisd-pr106113-2.c
  c23177d89aa9c937b2e588e26d9f5930  gcc/testsuite/gcc.target/i386/avx-vcomiss-1.c
  676d6693015fbd189a76d7ffc0f00c89  gcc/testsuite/gcc.target/i386/avx-vcomiss-2.c
  302eaf6a806ac603928813fecadd251a  gcc/testsuite/gcc.target/i386/avx-vcomiss-3.c
  b14ce68aa71996fa3240a56e865d6a35  gcc/testsuite/gcc.target/i386/avx-vcomiss-4.c
  56903f5d31c5cc14aceb05c8dec9427c  gcc/testsuite/gcc.target/i386/avx-vcomiss-5.c
  38e46dcaf70d1ff4cf00e613096ca9e4  gcc/testsuite/gcc.target/i386/avx-vcomiss-6.c
+ ea9d305516f767375ecd312bc0f6a090  gcc/testsuite/gcc.target/i386/avx-vcomiss-pr106113-2.c
  5fb3e39e45265d8568b30816239b64a3  gcc/testsuite/gcc.target/i386/avx-vcvtdq2pd-1.c
  f688820d95142f333e024e0bb4db22e6  gcc/testsuite/gcc.target/i386/avx-vcvtdq2pd-256-1.c
  dc2ab5fadac0a0e5ecea00b60880baf5  gcc/testsuite/gcc.target/i386/avx-vcvtdq2ps-1.c
*************** a87a9779ad174289515f380780abbfdd  gcc/te
*** 61427,61438 ****
--- 65030,65043 ----
  3be830e6a36f348e304f0c48e9fbcf2a  gcc/testsuite/gcc.target/i386/avx-vucomisd-4.c
  ad2074cdc48ed3350825be8d455b6c2a  gcc/testsuite/gcc.target/i386/avx-vucomisd-5.c
  a55b5cd88ef900902ef00a0bd9e2ee07  gcc/testsuite/gcc.target/i386/avx-vucomisd-6.c
+ f39c8e2ded47bd542a19cae4e4f45860  gcc/testsuite/gcc.target/i386/avx-vucomisd-pr106113-2.c
  6d24f391bfd8d1c29cb45e5d186beaa8  gcc/testsuite/gcc.target/i386/avx-vucomiss-1.c
  b8a65005c82f3492b0f5510842bd37fb  gcc/testsuite/gcc.target/i386/avx-vucomiss-2.c
  a849980c147bb499c3117abb416bdf7b  gcc/testsuite/gcc.target/i386/avx-vucomiss-3.c
  4520a006004e044cdb90204eb8e1ccdc  gcc/testsuite/gcc.target/i386/avx-vucomiss-4.c
  73e47ff1e8bd9419b180c93df03a6265  gcc/testsuite/gcc.target/i386/avx-vucomiss-5.c
  3296207b4e6015ed768ba9ca7a77a6da  gcc/testsuite/gcc.target/i386/avx-vucomiss-6.c
+ d2338debc58abab7edda1fbdd44e6e6e  gcc/testsuite/gcc.target/i386/avx-vucomiss-pr106113-2.c
  e2f0d8f39f892f93f1506128c35a32d9  gcc/testsuite/gcc.target/i386/avx-vunpckhpd-1.c
  cb781af0e4593774e54ca6ec4ebb1078  gcc/testsuite/gcc.target/i386/avx-vunpckhpd-256-1.c
  658563b893fef83c39824609bf165950  gcc/testsuite/gcc.target/i386/avx-vunpckhps-1.c
*************** a5901d33285892facee8dbfe287ce0d1  gcc/te
*** 61479,61485 ****
  958690bb20e5ef6d9a38def7eb976f13  gcc/testsuite/gcc.target/i386/avx2-check.h
  7dc98d98981fa7b82c0ae95d09c8128c  gcc/testsuite/gcc.target/i386/avx2-cvt-1.c
  ea08c4d81609e53332974756983fe0c2  gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
! 0598c67dc7d57cb536fed4dfd284c353  gcc/testsuite/gcc.target/i386/avx2-dest-false-dep-for-glc.c
  aaabb27f441033ad22d615277a666b93  gcc/testsuite/gcc.target/i386/avx2-gather-1.c
  193500dbe679e3b0106077cb94dcd659  gcc/testsuite/gcc.target/i386/avx2-gather-2.c
  e6fb48367ac48aab006ff09ee7205b7f  gcc/testsuite/gcc.target/i386/avx2-gather-3.c
--- 65084,65090 ----
  958690bb20e5ef6d9a38def7eb976f13  gcc/testsuite/gcc.target/i386/avx2-check.h
  7dc98d98981fa7b82c0ae95d09c8128c  gcc/testsuite/gcc.target/i386/avx2-cvt-1.c
  ea08c4d81609e53332974756983fe0c2  gcc/testsuite/gcc.target/i386/avx2-cvt-2.c
! 396a1c94edbd7736dc717b5af4f86d14  gcc/testsuite/gcc.target/i386/avx2-dest-false-dep-for-glc.c
  aaabb27f441033ad22d615277a666b93  gcc/testsuite/gcc.target/i386/avx2-gather-1.c
  193500dbe679e3b0106077cb94dcd659  gcc/testsuite/gcc.target/i386/avx2-gather-2.c
  e6fb48367ac48aab006ff09ee7205b7f  gcc/testsuite/gcc.target/i386/avx2-gather-3.c
*************** fe43a9deff46d9922603adbeeafc1bca  gcc/te
*** 61556,61561 ****
--- 65161,65167 ----
  19c711e3f9248722e8b79f75080e72d9  gcc/testsuite/gcc.target/i386/avx2-pr101286.c
  d88c63775cca32821a256ed084eb0bc4  gcc/testsuite/gcc.target/i386/avx2-pr101611-1.c
  f9c098fee9a454404b6c994c1b481bc0  gcc/testsuite/gcc.target/i386/avx2-pr101611-2.c
+ b2a5408a9b77cab42d5d95146250a38f  gcc/testsuite/gcc.target/i386/avx2-pr108599.c
  a544282846ec57648b2f38abf14119f0  gcc/testsuite/gcc.target/i386/avx2-pr51581-1.c
  46ffedd4e5e66cd46ad561ee8562eb7b  gcc/testsuite/gcc.target/i386/avx2-pr51581-2.c
  adf63582badc02467af57f768108628f  gcc/testsuite/gcc.target/i386/avx2-pr57233.c
*************** f1d81bb2aa29430ffc97c28299b0ff19  gcc/te
*** 61922,61937 ****
  9248b5a45ef16a214bee776d65455f9f  gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c
  7f0e9e79d91783e5e1dbe2af3fa7684d  gcc/testsuite/gcc.target/i386/avx2-vpxor-2.c
  bbe8f565a096f607db5869dc65e6878c  gcc/testsuite/gcc.target/i386/avx2-vshift-1.c
! 6d68415283494efc9df78829ac7b5ab0  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
  d313bab77287b21e3f72292a35842992  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
  782370215f9eb7521cac26b9e2342c33  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
  1ed00f85c56ba2eb621086a7b39e4529  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
  ac1c6f23df451df8715f98348ab41e7b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
  010f15340b233494003927d058cdde0e  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
  30a72b65677ffe96e520e986be6eb49b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
! d27ae3d359b741c698de8eae30ec7af2  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
! 874da2766b15d9f04db3d4882c42e355  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
! cce52fe4d17cb0b3062d0d31526c517f  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
  aaef10fa24c4bc67258e89962335eaed  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
  851dac1c7dd73efe6b05026da917342d  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
  3f5fa6be90bc7c0bb2fc93906c9940b3  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
--- 65528,65543 ----
  9248b5a45ef16a214bee776d65455f9f  gcc/testsuite/gcc.target/i386/avx2-vpxor-1.c
  7f0e9e79d91783e5e1dbe2af3fa7684d  gcc/testsuite/gcc.target/i386/avx2-vpxor-2.c
  bbe8f565a096f607db5869dc65e6878c  gcc/testsuite/gcc.target/i386/avx2-vshift-1.c
! 5c4b6744b76e8979d3a9e676ed24ab21  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-1.c
  d313bab77287b21e3f72292a35842992  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-2.c
  782370215f9eb7521cac26b9e2342c33  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-3.c
  1ed00f85c56ba2eb621086a7b39e4529  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-4.c
  ac1c6f23df451df8715f98348ab41e7b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-5.c
  010f15340b233494003927d058cdde0e  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-6.c
  30a72b65677ffe96e520e986be6eb49b  gcc/testsuite/gcc.target/i386/avx256-unaligned-load-7.c
! 4c27cde84e5828fb8e0db20c9d17f5af  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-1.c
! c158fe42ffca88feedfafca517f41077  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-2.c
! 3a36003c490438a6be37d8b9024bce3e  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-3.c
  aaef10fa24c4bc67258e89962335eaed  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-4.c
  851dac1c7dd73efe6b05026da917342d  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-5.c
  3f5fa6be90bc7c0bb2fc93906c9940b3  gcc/testsuite/gcc.target/i386/avx256-unaligned-store-6.c
*************** f55df70acaaa1a05030d45495848eb2b  gcc/te
*** 61961,61975 ****
  1db2c2106138cc396b1ae8c512625b33  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c
  5052cdd63fbafc27cd3d7534458acaec  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c
  925a068450d57f20740e5ce6e8fe217e  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c
! c1f9073502666ca9099f0b4f0e5e680a  gcc/testsuite/gcc.target/i386/avx512bf16-cvtsbh2ss-1.c
  964a5f2a2c89b83533b2be720732ccd6  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtne2ps2bf16-1.c
  80660c3a1129515840c1c9e263211f06  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c
  85f9fe6854d98f374a63df40394fb8cd  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtpbh2ps-1.c
  63e7956c8ca198ce2181d80ed229bbbb  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-1.c
! df6e4022dfad9e000020611638b05fdd  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-2.c
! da8171416799b80449528405a6388d08  gcc/testsuite/gcc.target/i386/avx512bf16vl-cvtness2sbh-1.c
  f877c7aff68980a873311e9e3029ab4e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c
! 334659570f347a4b03cf37336321aa2c  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1.c
  3df523677ab1d5b0815a28ada548ad0f  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtpbh2ps-1.c
  4d0bcbe3e5ed908d180434ef26bd4a3a  gcc/testsuite/gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c
  1c17eded698566bf1d33a8808168935d  gcc/testsuite/gcc.target/i386/avx512bitalg-pr97770-1.c
--- 65567,65583 ----
  1db2c2106138cc396b1ae8c512625b33  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssd-2.c
  5052cdd63fbafc27cd3d7534458acaec  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-1.c
  925a068450d57f20740e5ce6e8fe217e  gcc/testsuite/gcc.target/i386/avx5124vnniw-vp4dpwssds-2.c
! d29c79e3f90ea13ca131538d02e8cbea  gcc/testsuite/gcc.target/i386/avx512bf16-cvtsbh2ss-1.c
! f1bdc6fefc74a8aef23a109f4b02e663  gcc/testsuite/gcc.target/i386/avx512bf16-pr108881.c
  964a5f2a2c89b83533b2be720732ccd6  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtne2ps2bf16-1.c
  80660c3a1129515840c1c9e263211f06  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtneps2bf16-1.c
  85f9fe6854d98f374a63df40394fb8cd  gcc/testsuite/gcc.target/i386/avx512bf16-vcvtpbh2ps-1.c
  63e7956c8ca198ce2181d80ed229bbbb  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-1.c
! cec20eb9c1925a45f98a14c4507287f3  gcc/testsuite/gcc.target/i386/avx512bf16-vdpbf16ps-2.c
! 935f53a8b6597ba96c0e84ef8ed552a4  gcc/testsuite/gcc.target/i386/avx512bf16vl-cvtness2sbh-1.c
  f877c7aff68980a873311e9e3029ab4e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtne2ps2bf16-1.c
! 1e43b2fef5c316c799de12e0b7d6539e  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1a.c
! 98b5aec84f1eef594c6bd9570935562f  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtneps2bf16-1b.c
  3df523677ab1d5b0815a28ada548ad0f  gcc/testsuite/gcc.target/i386/avx512bf16vl-vcvtpbh2ps-1.c
  4d0bcbe3e5ed908d180434ef26bd4a3a  gcc/testsuite/gcc.target/i386/avx512bf16vl-vdpbf16ps-1.c
  1c17eded698566bf1d33a8808168935d  gcc/testsuite/gcc.target/i386/avx512bitalg-pr97770-1.c
*************** e6a2d08517354a6475d26db37dba85e2  gcc/te
*** 62515,62527 ****
  d63ad896d9c758712bf90d6dc9341750  gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-5.c
  ac444822bf41eda8ff9b0517ed627613  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c
  c88d598d6edb7c0c743c1dc16a2cc16d  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c
! 66c451d88ce9132977227c7ba2971b27  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-1.c
  08373bd09639bc64a0bddd2ddc47768f  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-2.c
! 420e8ef015f38e0bec7301c54807220e  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-3.c
  a9d7eae800fa77dbac9b5164b17093c5  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-4.c
! 145d385c34547cbbb412be00d98c8227  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-5.c
  0e1564775717bbc2a1b1b34d11aa25e2  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-6.c
! eccc7d9eecbe7f20dcc6e4a7e5c5c15a  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-7.c
  d6d82e1f94a08c07c77189274e3051de  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
  043ca358343e3cd8084b52ddd77fc44b  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c
  46819e77f7b43bb780dd8a446e563d7d  gcc/testsuite/gcc.target/i386/avx512f-ceil-vec-1.c
--- 66123,66135 ----
  d63ad896d9c758712bf90d6dc9341750  gcc/testsuite/gcc.target/i386/avx512f-andn-si-zmm-5.c
  ac444822bf41eda8ff9b0517ed627613  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-1.c
  c88d598d6edb7c0c743c1dc16a2cc16d  gcc/testsuite/gcc.target/i386/avx512f-broadcast-gpr-2.c
! 4610630dc06f46ba15cb4b1d4afefbf7  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-1.c
  08373bd09639bc64a0bddd2ddc47768f  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-2.c
! 97b1b6d4bf2739b6e621086b377217b7  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-3.c
  a9d7eae800fa77dbac9b5164b17093c5  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-4.c
! 9000011503e7dcdf5c7e6a12355ce3d6  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-5.c
  0e1564775717bbc2a1b1b34d11aa25e2  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-6.c
! 57a624131d39343fc5c40145915d6580  gcc/testsuite/gcc.target/i386/avx512f-broadcast-pr87767-7.c
  d6d82e1f94a08c07c77189274e3051de  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-1.c
  043ca358343e3cd8084b52ddd77fc44b  gcc/testsuite/gcc.target/i386/avx512f-ceil-sfix-vec-2.c
  46819e77f7b43bb780dd8a446e563d7d  gcc/testsuite/gcc.target/i386/avx512f-ceil-vec-1.c
*************** c58d5e0518f9a55f9357771ec2f9b77a  gcc/te
*** 62860,62865 ****
--- 66468,66474 ----
  3c686cf13670ff01f2452dffabbe0339  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-1.c
  bb93618c24644f5f810bc9f925e52ac6  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-2.c
  3a76240db4ea5fdc0dae9b071c3729df  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-pr95254.c
+ cb55e2121d04013d132458bef594f03e  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2ph-sae.c
  c85c4875b511f42975a9021c9b8a893a  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-1.c
  0401f46259a989a5d63841ab8f7d40c0  gcc/testsuite/gcc.target/i386/avx512f-vcvtps2udq-2.c
  5471924da73ff85fc9b17915453eaa53  gcc/testsuite/gcc.target/i386/avx512f-vcvtsd2si-1.c
*************** ca0f018c6d6395c19ee0d3be7e8879f8  gcc/te
*** 63532,63538 ****
  a44636473e98bc4b55c8bd51133893da  gcc/testsuite/gcc.target/i386/avx512fp16-8.c
  447b45c01969decbbee566bfdd9fc852  gcc/testsuite/gcc.target/i386/avx512fp16-9a.c
  9bcd70e54382f27d62bb6c31949ee01e  gcc/testsuite/gcc.target/i386/avx512fp16-9b.c
! aee65ea5eafc2805dbfb5fe359814328  gcc/testsuite/gcc.target/i386/avx512fp16-broadcast-1.c
  b00d04590dae0dee872d01e3439174ee  gcc/testsuite/gcc.target/i386/avx512fp16-broadcast-2.c
  e79f5471eaed0e7487f965113398d268  gcc/testsuite/gcc.target/i386/avx512fp16-builtin-fpcompare-1.c
  22cab6bb0d2c641607fcf909a8cca39b  gcc/testsuite/gcc.target/i386/avx512fp16-builtin-fpcompare-2.c
--- 67141,67147 ----
  a44636473e98bc4b55c8bd51133893da  gcc/testsuite/gcc.target/i386/avx512fp16-8.c
  447b45c01969decbbee566bfdd9fc852  gcc/testsuite/gcc.target/i386/avx512fp16-9a.c
  9bcd70e54382f27d62bb6c31949ee01e  gcc/testsuite/gcc.target/i386/avx512fp16-9b.c
! 70d83c8de35bbb68eb082d5595124c12  gcc/testsuite/gcc.target/i386/avx512fp16-broadcast-1.c
  b00d04590dae0dee872d01e3439174ee  gcc/testsuite/gcc.target/i386/avx512fp16-broadcast-2.c
  e79f5471eaed0e7487f965113398d268  gcc/testsuite/gcc.target/i386/avx512fp16-builtin-fpcompare-1.c
  22cab6bb0d2c641607fcf909a8cca39b  gcc/testsuite/gcc.target/i386/avx512fp16-builtin-fpcompare-2.c
*************** ac477f1c32fad10fc7a0406189e98ac6  gcc/te
*** 63549,63562 ****
  834dadc5dea756bfe689d52ed2ec58a6  gcc/testsuite/gcc.target/i386/avx512fp16-helper.h
  b27abeb08b864284971b1aba8ced6b22  gcc/testsuite/gcc.target/i386/avx512fp16-neg-1a.c
  7a47cd88a25f16e65dda4800001d8f07  gcc/testsuite/gcc.target/i386/avx512fp16-neg-1b.c
! 1fb5a7d458011e625304c59dd1baf934  gcc/testsuite/gcc.target/i386/avx512fp16-pr101846.c
  2e40da5c6cc066c5c3fc6534287c3bb1  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-1.c
  ddf42476c9bd487716414f58d3c10527  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-2.c
  b5d5082a6d865b8b24dbefc908fafb2d  gcc/testsuite/gcc.target/i386/avx512fp16-pr94680.c
  0be682c7ab6c675fa46f84d592d76785  gcc/testsuite/gcc.target/i386/avx512fp16-recip-1.c
  38a807ac8fade227ea34604df002fb5f  gcc/testsuite/gcc.target/i386/avx512fp16-recip-2.c
  4312226ac8ecfd68a6cf8f867262789a  gcc/testsuite/gcc.target/i386/avx512fp16-reduce-op-1.c
! 2d2ca93697ff6e4db6819c28c1a24ced  gcc/testsuite/gcc.target/i386/avx512fp16-reduce-op-2.c
  fa7a7d92ce80bfb7f5faf7e81addb4ce  gcc/testsuite/gcc.target/i386/avx512fp16-reduce-op-3.c
  53ae782dbc5f04df9f8a5b4a2e2fb00e  gcc/testsuite/gcc.target/i386/avx512fp16-scalar-bitwise-1a.c
  aa19ef379fcd517ef558b68d6edcf2bc  gcc/testsuite/gcc.target/i386/avx512fp16-scalar-bitwise-1b.c
--- 67158,67171 ----
  834dadc5dea756bfe689d52ed2ec58a6  gcc/testsuite/gcc.target/i386/avx512fp16-helper.h
  b27abeb08b864284971b1aba8ced6b22  gcc/testsuite/gcc.target/i386/avx512fp16-neg-1a.c
  7a47cd88a25f16e65dda4800001d8f07  gcc/testsuite/gcc.target/i386/avx512fp16-neg-1b.c
! a0059c72ee5f8a3b553da9a85e2e8686  gcc/testsuite/gcc.target/i386/avx512fp16-pr101846.c
  2e40da5c6cc066c5c3fc6534287c3bb1  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-1.c
  ddf42476c9bd487716414f58d3c10527  gcc/testsuite/gcc.target/i386/avx512fp16-pr103750-2.c
  b5d5082a6d865b8b24dbefc908fafb2d  gcc/testsuite/gcc.target/i386/avx512fp16-pr94680.c
  0be682c7ab6c675fa46f84d592d76785  gcc/testsuite/gcc.target/i386/avx512fp16-recip-1.c
  38a807ac8fade227ea34604df002fb5f  gcc/testsuite/gcc.target/i386/avx512fp16-recip-2.c
  4312226ac8ecfd68a6cf8f867262789a  gcc/testsuite/gcc.target/i386/avx512fp16-reduce-op-1.c
! 8a21142a89855cf2718f175185235ea4  gcc/testsuite/gcc.target/i386/avx512fp16-reduce-op-2.c
  fa7a7d92ce80bfb7f5faf7e81addb4ce  gcc/testsuite/gcc.target/i386/avx512fp16-reduce-op-3.c
  53ae782dbc5f04df9f8a5b4a2e2fb00e  gcc/testsuite/gcc.target/i386/avx512fp16-scalar-bitwise-1a.c
  aa19ef379fcd517ef558b68d6edcf2bc  gcc/testsuite/gcc.target/i386/avx512fp16-scalar-bitwise-1b.c
*************** b7c23a85cbec24b08e6ce959951b7d70  gcc/te
*** 63613,63625 ****
  3036678309bc4a21dbcf666f9758f105  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsd2sh-1b.c
  53d46435fe1e2e0084ced0f7a5413b68  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2sd-1a.c
  d15cd8a7aba026c95369ed92e0047555  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2sd-1b.c
! 7e4bb8abe41bbbb241f2b0ac4c066b49  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si-1a.c
  089c7c5600b7b38c781698aa9b18c5c7  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si-1b.c
  a5111e025d95e6fcbd4fb965d79c746c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si64-1a.c
  06d2080506df0f1204110886d85e3dfb  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si64-1b.c
  a704e2eb19e77459ba233c2fa0ea4f3a  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2ss-1a.c
  5d15dcf0159566e477b62163ba0953d9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2ss-1b.c
! 08fa46de9db1a088f5abe0ef3ce6f3a1  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi-1a.c
  0f7bfe1c69caab051706b55a380c543c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi-1b.c
  bdfaa245b1fe6089b7e15d4763833076  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi64-1a.c
  62708a3ae9f11db72cb30ef27e09d1a4  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi64-1b.c
--- 67222,67234 ----
  3036678309bc4a21dbcf666f9758f105  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsd2sh-1b.c
  53d46435fe1e2e0084ced0f7a5413b68  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2sd-1a.c
  d15cd8a7aba026c95369ed92e0047555  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2sd-1b.c
! 10ebf7aeb3cc77b3a105aca324a039d0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si-1a.c
  089c7c5600b7b38c781698aa9b18c5c7  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si-1b.c
  a5111e025d95e6fcbd4fb965d79c746c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si64-1a.c
  06d2080506df0f1204110886d85e3dfb  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2si64-1b.c
  a704e2eb19e77459ba233c2fa0ea4f3a  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2ss-1a.c
  5d15dcf0159566e477b62163ba0953d9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2ss-1b.c
! 9fa1e99a66fbc4ba4c8020be7fb072c9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi-1a.c
  0f7bfe1c69caab051706b55a380c543c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi-1b.c
  bdfaa245b1fe6089b7e15d4763833076  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi64-1a.c
  62708a3ae9f11db72cb30ef27e09d1a4  gcc/testsuite/gcc.target/i386/avx512fp16-vcvtsh2usi64-1b.c
*************** f1c28b001d9d1a6143bc8ef91f0e4ab8  gcc/te
*** 63641,63651 ****
  a0b9d8aefb40699d0fcbc6bad023e571  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1b.c
  e2f21352e0bdb253ab43600b1791832c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c
  0900c8d29804a5b9a7f025c9a3b5f34b  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1b.c
! 7d66208ba1d5b7b674ca55ca363bcdd8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1a.c
  a8ecbf52ad049c2898815b51904ee653  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1b.c
  f7cc8f9979f71534cd0f98a716377f01  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si64-1a.c
  99b2df9dc2f5cd6647916f94fb2fa3f8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si64-1b.c
! bf07c447eb7e9c81d58242a425d42f3f  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi-1a.c
  382d27ddc349b11d76e1ebb344811341  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi-1b.c
  2bd5443742ddc58c66dd21fab1a25bf0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi64-1a.c
  67a22d0e46956df441b87d2050b136ad  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi64-1b.c
--- 67250,67260 ----
  a0b9d8aefb40699d0fcbc6bad023e571  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2uw-1b.c
  e2f21352e0bdb253ab43600b1791832c  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1a.c
  0900c8d29804a5b9a7f025c9a3b5f34b  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttph2w-1b.c
! c3176b010bb8c1e11cf63b13652157c3  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1a.c
  a8ecbf52ad049c2898815b51904ee653  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si-1b.c
  f7cc8f9979f71534cd0f98a716377f01  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si64-1a.c
  99b2df9dc2f5cd6647916f94fb2fa3f8  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2si64-1b.c
! 3ae225aedb2125344befdb6f436b32e9  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi-1a.c
  382d27ddc349b11d76e1ebb344811341  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi-1b.c
  2bd5443742ddc58c66dd21fab1a25bf0  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi64-1a.c
  67a22d0e46956df441b87d2050b136ad  gcc/testsuite/gcc.target/i386/avx512fp16-vcvttsh2usi64-1b.c
*************** ffb9d8f0bbca8da07b144757af8d03cc  gcc/te
*** 63726,63732 ****
  c1206484ddb91b764b0aeac219423583  gcc/testsuite/gcc.target/i386/avx512fp16-vminph-1b.c
  5c67e15a45b1ede6346c8c57c2d55911  gcc/testsuite/gcc.target/i386/avx512fp16-vminsh-1.c
  f9617e7125bd55d1d523a1913c295286  gcc/testsuite/gcc.target/i386/avx512fp16-vminsh-1b.c
! f98df9ca075292635475b285e648ebc1  gcc/testsuite/gcc.target/i386/avx512fp16-vmovsh-1a.c
  5814340d176783a15ae31a06c5697ea1  gcc/testsuite/gcc.target/i386/avx512fp16-vmovsh-1b.c
  5bc7907d63b59c7fc0efd2bb1011327a  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-1a.c
  3b034becae983ec519fa6fae9c2dbdf9  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-1b.c
--- 67335,67341 ----
  c1206484ddb91b764b0aeac219423583  gcc/testsuite/gcc.target/i386/avx512fp16-vminph-1b.c
  5c67e15a45b1ede6346c8c57c2d55911  gcc/testsuite/gcc.target/i386/avx512fp16-vminsh-1.c
  f9617e7125bd55d1d523a1913c295286  gcc/testsuite/gcc.target/i386/avx512fp16-vminsh-1b.c
! 0eed93df5e6c3d20d12a2ff1c0dd2860  gcc/testsuite/gcc.target/i386/avx512fp16-vmovsh-1a.c
  5814340d176783a15ae31a06c5697ea1  gcc/testsuite/gcc.target/i386/avx512fp16-vmovsh-1b.c
  5bc7907d63b59c7fc0efd2bb1011327a  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-1a.c
  3b034becae983ec519fa6fae9c2dbdf9  gcc/testsuite/gcc.target/i386/avx512fp16-vmovw-1b.c
*************** a31020a143f331b9ec34d4180148bd9e  gcc/te
*** 63879,63887 ****
  09bb88db303e43f561ea2094ee199daa  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1a.c
  45cc050ea550fe0bc7b9a0b73a4ad3e4  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
  bec6be257618e9cc911be966efb2ab8a  gcc/testsuite/gcc.target/i386/avx512fvl-vaes-1.c
! 7ca8f53ddb06d28b1ffcae13894efb3e  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddhuq-1.c
  ae1ccb7e2041f3482999d81701ee97ed  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddhuq-2.c
! 44f5fa114a15245b56519092be1d7465  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddluq-1.c
  3b96fd792360e8ef04bfaf7109ce2873  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddluq-2.c
  3c3b16fd347899ace66a367d92875093  gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c
  182846f8342d6a2ee02f868f0f626b17  gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c
--- 67488,67498 ----
  09bb88db303e43f561ea2094ee199daa  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1a.c
  45cc050ea550fe0bc7b9a0b73a4ad3e4  gcc/testsuite/gcc.target/i386/avx512fp16vl-vsubph-1b.c
  bec6be257618e9cc911be966efb2ab8a  gcc/testsuite/gcc.target/i386/avx512fvl-vaes-1.c
! 7ca8f53ddb06d28b1ffcae13894efb3e  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddhuq-1a.c
! eff58fd06e835dcfa36c08eb98e94ab7  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddhuq-1b.c
  ae1ccb7e2041f3482999d81701ee97ed  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddhuq-2.c
! 44f5fa114a15245b56519092be1d7465  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddluq-1a.c
! 5a753e738033b0a079fb2f710c5fd40a  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddluq-1b.c
  3b96fd792360e8ef04bfaf7109ce2873  gcc/testsuite/gcc.target/i386/avx512ifma-vpmaddluq-2.c
  3c3b16fd347899ace66a367d92875093  gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dpd-1.c
  182846f8342d6a2ee02f868f0f626b17  gcc/testsuite/gcc.target/i386/avx512pf-vgatherpf0dps-1.c
*************** d1bdd43046d2a862a62096e884f2a148  gcc/te
*** 63925,63935 ****
  c6cc01bcba78b07acbc0c97f8ecffc30  gcc/testsuite/gcc.target/i386/avx512vl-andn-si-ymm-1.c
  660e32b26a158d938edc524a1d9fead4  gcc/testsuite/gcc.target/i386/avx512vl-blendv-1.c
  177293e898edfd6fd1acc72f09e22811  gcc/testsuite/gcc.target/i386/avx512vl-blendv-2.c
! 395adc06c14d72c8e8ecb458cd180088  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-1.c
  bcc0041bf4882e8ffc439974df32bf6a  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-2.c
! 0d8bc260ab66b4b4d146eb76e3d04402  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-3.c
  7ca815481d1a25c18f3e474b0ace8bca  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-4.c
! f95e0ba727ff25d35ad316c2f5bbee6c  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-5.c
  205513778704d9cadedab6e62b5b5621  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-6.c
  99ab8f6b1890ccfcd14f1ea1cc6ca1c8  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
--- 67536,67546 ----
  c6cc01bcba78b07acbc0c97f8ecffc30  gcc/testsuite/gcc.target/i386/avx512vl-andn-si-ymm-1.c
  660e32b26a158d938edc524a1d9fead4  gcc/testsuite/gcc.target/i386/avx512vl-blendv-1.c
  177293e898edfd6fd1acc72f09e22811  gcc/testsuite/gcc.target/i386/avx512vl-blendv-2.c
! 29066099d9f6b15b059200ec33043337  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-1.c
  bcc0041bf4882e8ffc439974df32bf6a  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-2.c
! fa2b0b2963dda19be4f2c7496960f9d1  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-3.c
  7ca815481d1a25c18f3e474b0ace8bca  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-4.c
! 0d6ea41fc2a073816b607e33beecee04  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-5.c
  205513778704d9cadedab6e62b5b5621  gcc/testsuite/gcc.target/i386/avx512vl-broadcast-pr87767-6.c
  99ab8f6b1890ccfcd14f1ea1cc6ca1c8  gcc/testsuite/gcc.target/i386/avx512vl-check.h
  0617dd4b8fef3764392d3723a75e2c8b  gcc/testsuite/gcc.target/i386/avx512vl-concatv2di-1.c
*************** c1fc8c403bea321e9edbec8f46fe2fd8  gcc/te
*** 63982,63987 ****
--- 67593,67599 ----
  677f7e556dddad5fe5ca2d37be1cdfa4  gcc/testsuite/gcc.target/i386/avx512vl-pr100267-ps-2.c
  283b4877d58ced6f0c220db178d854a5  gcc/testsuite/gcc.target/i386/avx512vl-pr100648.c
  94073157c7c18d465b0898342cfaf127  gcc/testsuite/gcc.target/i386/avx512vl-pr101472.c
+ 283543f4907a911dc1da7cea2581ece6  gcc/testsuite/gcc.target/i386/avx512vl-pr106721.c
  1ce70da2226efd6f3d5d92c101fb79d9  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-1.c
  e3cc31b3308cdb56423451f2cd8c2a00  gcc/testsuite/gcc.target/i386/avx512vl-pr79299-2.c
  7cff0350d919ed5edc42e841b11e38f2  gcc/testsuite/gcc.target/i386/avx512vl-pr82370.c
*************** bd110cc98a6c83e36f31c6c68e28123c  gcc/te
*** 64739,64745 ****
--- 68351,68366 ----
  17d28bf7cef176269dc5873687b13c9f  gcc/testsuite/gcc.target/i386/avx512vpopcntdqvl-vpopcntq-1.c
  5da8354c1b0f081b6c64be550d4b604e  gcc/testsuite/gcc.target/i386/avxfp-1.c
  96da42bfb9b55e417c89693514ae20a6  gcc/testsuite/gcc.target/i386/avxfp-2.c
+ 886ec1208d19dfac1038071807c2c23b  gcc/testsuite/gcc.target/i386/avxneconvert-1.c
  51a2ee7ea5f4c0b592af239653345942  gcc/testsuite/gcc.target/i386/avxvnni-builtin.c
+ 206e272a2b52f2dcded8941856eceb15  gcc/testsuite/gcc.target/i386/avxvnniint8-1.c
+ 9962104b5a5c9aaab63179604e9068d9  gcc/testsuite/gcc.target/i386/avxvnniint8-vpdpbssd-2.c
+ dbc1b41820399022ea74a49b480fd874  gcc/testsuite/gcc.target/i386/avxvnniint8-vpdpbssds-2.c
+ 84151de4d3d62811b81006e4a89c4c97  gcc/testsuite/gcc.target/i386/avxvnniint8-vpdpbsud-2.c
+ 406488c79902ceb0e213d598ca18d72c  gcc/testsuite/gcc.target/i386/avxvnniint8-vpdpbsuds-2.c
+ 1b44a60e1ea9e44cc57cc2bb75aacd4c  gcc/testsuite/gcc.target/i386/avxvnniint8-vpdpbuud-2.c
+ 3f680c0ac1b6f6a8b31e44de8ac7d07c  gcc/testsuite/gcc.target/i386/avxvnniint8-vpdpbuuds-2.c
+ 4eafaac84ebae56fbab9cf9ce58b0e31  gcc/testsuite/gcc.target/i386/bfloat16-1.c
  6f9ec5819fa880d6a423fcc3fa67af2f  gcc/testsuite/gcc.target/i386/bitfield1.c
  674019fac54e0c27947386666000a1c8  gcc/testsuite/gcc.target/i386/bitfield2.c
  f453ea0129a9fcdd06a9ec24524c1cb9  gcc/testsuite/gcc.target/i386/bitfield3.c
*************** d734ef6576ca43ccd690807e2770c4e7  gcc/te
*** 64759,64764 ****
--- 68380,68387 ----
  bb19afb049882c8576684da2015d3e06  gcc/testsuite/gcc.target/i386/bmi-andn-1a.c
  5ad1ba00f553e06f0cc84df9d4335648  gcc/testsuite/gcc.target/i386/bmi-andn-2.c
  2df35ed53f2f5a8ee6534092261f7c36  gcc/testsuite/gcc.target/i386/bmi-andn-2a.c
+ c8b02103151467a4588564a1aa82a994  gcc/testsuite/gcc.target/i386/bmi-andn-3.c
+ a8ba7594cf6ae123b97018619ab467c5  gcc/testsuite/gcc.target/i386/bmi-andn-4.c
  06ddb8e886a72f49f5ae03d34ef9766a  gcc/testsuite/gcc.target/i386/bmi-bextr-1.c
  519fc1dbd9a690adb68f647190c125a9  gcc/testsuite/gcc.target/i386/bmi-bextr-1a.c
  90e22496d524d0710badf78cb5a0f680  gcc/testsuite/gcc.target/i386/bmi-bextr-2.c
*************** a9b1dee6ec200856939709d32118cf4d  gcc/te
*** 64847,64859 ****
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
! a5b9a8d233b8f077360b763ca08d0a61  gcc/testsuite/gcc.target/i386/builtin_target.c
  5502489cd371c4d2b333eee65153eec7  gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c
  4278b9cf349a82b327a03ec6fb2f2b43  gcc/testsuite/gcc.target/i386/cadd.c
  bcb496f917fb6dad4ebb0207c1334471  gcc/testsuite/gcc.target/i386/call-1.c
  03f91a577d4f6be3e4731c0a4c63e51e  gcc/testsuite/gcc.target/i386/call-2.c
  947cb220beb3f17f918fd03948cdc44a  gcc/testsuite/gcc.target/i386/cet-intrin-10.c
  53d6b59f9961f5e5027c373e198824a2  gcc/testsuite/gcc.target/i386/cet-intrin-3.c
  7548f27c3ebe96e9fa6bd6cd57dba640  gcc/testsuite/gcc.target/i386/cet-intrin-4.c
--- 68470,68484 ----
  aa862ceda0d7a76c1857d703604c7cf7  gcc/testsuite/gcc.target/i386/builtin-bswap-5.c
  04d6147486a507d49f5d165aac499b5d  gcc/testsuite/gcc.target/i386/builtin-copysign.c
  83540904d3592a74a85860a8850ad325  gcc/testsuite/gcc.target/i386/builtin-has-attribute.c
+ c9f542098c7044c5b8ac4b18be20d199  gcc/testsuite/gcc.target/i386/builtin-issignaling-1.c
  07c7b1b786ccb4b67484b353aa40d9c7  gcc/testsuite/gcc.target/i386/builtin-ucmp.c
  c8f91a97e3f4734a3595572bab26a3e7  gcc/testsuite/gcc.target/i386/builtin-unreachable.c
! 76c4c943017f93f9d8dcb14a59f81f01  gcc/testsuite/gcc.target/i386/builtin_target.c
  5502489cd371c4d2b333eee65153eec7  gcc/testsuite/gcc.target/i386/builtin_thread_pointer.c
  4278b9cf349a82b327a03ec6fb2f2b43  gcc/testsuite/gcc.target/i386/cadd.c
  bcb496f917fb6dad4ebb0207c1334471  gcc/testsuite/gcc.target/i386/call-1.c
  03f91a577d4f6be3e4731c0a4c63e51e  gcc/testsuite/gcc.target/i386/call-2.c
+ eb3c0e0fcea4976ba2aad5a93014b1cc  gcc/testsuite/gcc.target/i386/cbranchbf4.c
  947cb220beb3f17f918fd03948cdc44a  gcc/testsuite/gcc.target/i386/cet-intrin-10.c
  53d6b59f9961f5e5027c373e198824a2  gcc/testsuite/gcc.target/i386/cet-intrin-3.c
  7548f27c3ebe96e9fa6bd6cd57dba640  gcc/testsuite/gcc.target/i386/cet-intrin-4.c
*************** a4dff4664eff59fc1d1d6ac49e52a6b6  gcc/te
*** 64891,64898 ****
  0ce34b19fb1aba3fae48ca22781d12e2  gcc/testsuite/gcc.target/i386/cet-sjlj-3.c
  468e8aa10ace6b5e1389e5c01cbdb8f2  gcc/testsuite/gcc.target/i386/cet-sjlj-4.c
  90c8ac5897434d5e30c476a51d6a1fe4  gcc/testsuite/gcc.target/i386/cet-sjlj-5.c
! fe18bceea056fa7c5ce2c0eb9fd0f2ce  gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c
! 5cd340cda5b41736cb38e2a525269e74  gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c
  a2960f70e9092f35ab7846d97bc2cd2a  gcc/testsuite/gcc.target/i386/cet-switch-1.c
  d9248423c9f1c716a36c066054a7f5b9  gcc/testsuite/gcc.target/i386/cet-switch-2.c
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
--- 68516,68523 ----
  0ce34b19fb1aba3fae48ca22781d12e2  gcc/testsuite/gcc.target/i386/cet-sjlj-3.c
  468e8aa10ace6b5e1389e5c01cbdb8f2  gcc/testsuite/gcc.target/i386/cet-sjlj-4.c
  90c8ac5897434d5e30c476a51d6a1fe4  gcc/testsuite/gcc.target/i386/cet-sjlj-5.c
! 97c8cda0d1ce639191cf02516499e400  gcc/testsuite/gcc.target/i386/cet-sjlj-6a.c
! 8b81a2aaac0a3e6c82afece203088ac9  gcc/testsuite/gcc.target/i386/cet-sjlj-6b.c
  a2960f70e9092f35ab7846d97bc2cd2a  gcc/testsuite/gcc.target/i386/cet-switch-1.c
  d9248423c9f1c716a36c066054a7f5b9  gcc/testsuite/gcc.target/i386/cet-switch-2.c
  b20d49e3df7ecba263d6a023f199461f  gcc/testsuite/gcc.target/i386/cet-switch-3.c
*************** bcb4166cdef6b56e89b654dc4cb83a03  gcc/te
*** 64917,64922 ****
--- 68542,68552 ----
  9f954feff3ae35b2879ea55901eae8a4  gcc/testsuite/gcc.target/i386/cmov7.c
  f20d8e2e048a66edc93c5638ce3cd2d9  gcc/testsuite/gcc.target/i386/cmov8.c
  000f630353ad4e662a8123ff07c183c0  gcc/testsuite/gcc.target/i386/cmov9.c
+ a7e5d6a57b645a1c832fad2acbb1016b  gcc/testsuite/gcc.target/i386/cmpccxadd-1.c
+ 7139cb8a2661e3fe95f654cff3bec6d7  gcc/testsuite/gcc.target/i386/cmpccxadd-2.c
+ 5f98340fec8fce3d9097abb98c65fb65  gcc/testsuite/gcc.target/i386/cmpti1.c
+ 657ffd70a2b88bad5845a02aad916083  gcc/testsuite/gcc.target/i386/cmpti2.c
+ 0b212c741d08a2c6f561fae6a701bede  gcc/testsuite/gcc.target/i386/cmpti3.c
  5e2242226bd3af93cef201caa25d8d86  gcc/testsuite/gcc.target/i386/cmpxchg16b-1.c
  b72099cd966e9c576a224799821d5d28  gcc/testsuite/gcc.target/i386/cold-attribute-1.c
  0167fa6749ad93cf0251a4b9260fbccd  gcc/testsuite/gcc.target/i386/cold-attribute-2.c
*************** b7607fa5a42dea41bcc58aa8fbc1b696  gcc/te
*** 65017,65039 ****
  e0d22ed73421320d7f3bb70305094f77  gcc/testsuite/gcc.target/i386/endbr_immediate.c
  5d5c47e004c3ebf97d2da3489e7c9992  gcc/testsuite/gcc.target/i386/enqcmd.c
  f71b6a7495b0645d1ecb8db1b2f1958b  gcc/testsuite/gcc.target/i386/enqcmds.c
! 83f426635f973eba278a3083233c3cab  gcc/testsuite/gcc.target/i386/excess-precision-1.c
! 152619207ab2c4a64db6b800dd8c631e  gcc/testsuite/gcc.target/i386/excess-precision-10.c
! 1992660f3802f82a52281e84c4ebb3b1  gcc/testsuite/gcc.target/i386/excess-precision-2.c
! 7d84cdd9903815cdb41d570f813b171d  gcc/testsuite/gcc.target/i386/excess-precision-3.c
  d32dfb8b0b8944719e8830b24eea1a9b  gcc/testsuite/gcc.target/i386/excess-precision-4.c
  84a950dfca30599ef0a85e6b79290e1c  gcc/testsuite/gcc.target/i386/excess-precision-5.c
  6fb5fed4a8e9a270eb075c3c8291ae21  gcc/testsuite/gcc.target/i386/excess-precision-6.c
! 79b5d28742df60c45cb92a25db0a47f2  gcc/testsuite/gcc.target/i386/excess-precision-7.c
! 885466772084d51d65bddec88e0ba498  gcc/testsuite/gcc.target/i386/excess-precision-8.c
! 41c352b71eed2605158e6062d9b8a811  gcc/testsuite/gcc.target/i386/excess-precision-9.c
  4b7cb127246205eab94ebbd4695e09b9  gcc/testsuite/gcc.target/i386/extract-1.c
  30aa917f86badefc1e52008a72c439b4  gcc/testsuite/gcc.target/i386/extract-2.c
  e786e5dcb712ff242718b73b5e6ebe7f  gcc/testsuite/gcc.target/i386/extract-3.c
  f5dad00b18e6260d56790349ef4b0ecc  gcc/testsuite/gcc.target/i386/extract-4.c
  beabba7cdb57fe1b104d0ebda790dc72  gcc/testsuite/gcc.target/i386/extract-5.c
  9fa05574c82a870139a2524c4a9ea84c  gcc/testsuite/gcc.target/i386/extract-6.c
! b9e834d41c948e584d3f1cd39c3a5959  gcc/testsuite/gcc.target/i386/extract-insert-combining.c
  4ea9a85bc3f40b1ebeb0581bd96620de  gcc/testsuite/gcc.target/i386/f16c-check.h
  019f466ae9c955f33a105efa418493cf  gcc/testsuite/gcc.target/i386/fabsneg-1.c
  45c5b062d943eec3fbf355c1cf1f80fb  gcc/testsuite/gcc.target/i386/falign-functions-2.c
--- 68647,68674 ----
  e0d22ed73421320d7f3bb70305094f77  gcc/testsuite/gcc.target/i386/endbr_immediate.c
  5d5c47e004c3ebf97d2da3489e7c9992  gcc/testsuite/gcc.target/i386/enqcmd.c
  f71b6a7495b0645d1ecb8db1b2f1958b  gcc/testsuite/gcc.target/i386/enqcmds.c
! 38e6b3fda33a09c739a549f0b0c62cf2  gcc/testsuite/gcc.target/i386/excess-precision-1.c
! 1074f8ea1a1217c0ad0e9b4f254d3bfd  gcc/testsuite/gcc.target/i386/excess-precision-10.c
! 0ea8a219394ab895453cd722a1361eff  gcc/testsuite/gcc.target/i386/excess-precision-11.c
! f7d01e998f70eb80188d51ba570690e2  gcc/testsuite/gcc.target/i386/excess-precision-12.c
! 9aec2858d7d8e4a0b46251f74b74be90  gcc/testsuite/gcc.target/i386/excess-precision-2.c
! 67ab49a3410a627e09fd6ff969d84637  gcc/testsuite/gcc.target/i386/excess-precision-3.c
  d32dfb8b0b8944719e8830b24eea1a9b  gcc/testsuite/gcc.target/i386/excess-precision-4.c
  84a950dfca30599ef0a85e6b79290e1c  gcc/testsuite/gcc.target/i386/excess-precision-5.c
  6fb5fed4a8e9a270eb075c3c8291ae21  gcc/testsuite/gcc.target/i386/excess-precision-6.c
! 3e6bf7958ab224976567adc5f57a0b77  gcc/testsuite/gcc.target/i386/excess-precision-7.c
! 6a5e13923999e9324a8ee02a3f2d98c3  gcc/testsuite/gcc.target/i386/excess-precision-8.c
! 2d179344e3b3d6c52efa7112d6266eb2  gcc/testsuite/gcc.target/i386/excess-precision-9.c
! 8280cff0f65f0800f106d5f5dd10f9c0  gcc/testsuite/gcc.target/i386/extendbfsf.c
! 49b4a3a5ebc29ab7b4146e9772e420e9  gcc/testsuite/gcc.target/i386/extendditi2-1.c
! c6a2240b3463f4e8a3088a3bdac097a5  gcc/testsuite/gcc.target/i386/extendditi2-2.c
  4b7cb127246205eab94ebbd4695e09b9  gcc/testsuite/gcc.target/i386/extract-1.c
  30aa917f86badefc1e52008a72c439b4  gcc/testsuite/gcc.target/i386/extract-2.c
  e786e5dcb712ff242718b73b5e6ebe7f  gcc/testsuite/gcc.target/i386/extract-3.c
  f5dad00b18e6260d56790349ef4b0ecc  gcc/testsuite/gcc.target/i386/extract-4.c
  beabba7cdb57fe1b104d0ebda790dc72  gcc/testsuite/gcc.target/i386/extract-5.c
  9fa05574c82a870139a2524c4a9ea84c  gcc/testsuite/gcc.target/i386/extract-6.c
! 5851d1bb083c918f8c25f09169ed0c78  gcc/testsuite/gcc.target/i386/extract-insert-combining.c
  4ea9a85bc3f40b1ebeb0581bd96620de  gcc/testsuite/gcc.target/i386/f16c-check.h
  019f466ae9c955f33a105efa418493cf  gcc/testsuite/gcc.target/i386/fabsneg-1.c
  45c5b062d943eec3fbf355c1cf1f80fb  gcc/testsuite/gcc.target/i386/falign-functions-2.c
*************** dbf3cc9b53b5e2d78a16330cbb9137e5  gcc/te
*** 65045,65051 ****
  5046881025e2cf5dcd3027d9718a2633  gcc/testsuite/gcc.target/i386/fentry.c
  48b7c3a611d7e2361c0d7fe315d26972  gcc/testsuite/gcc.target/i386/fentryname1.c
  25e6a100b24cebd0390edc44a4b95b46  gcc/testsuite/gcc.target/i386/fentryname2.c
! 014bcb000b2ea0dabf25ce8cd2990afe  gcc/testsuite/gcc.target/i386/fentryname3.c
  bd55fbb60894cd429f7fc93df2f43fee  gcc/testsuite/gcc.target/i386/float128-1.c
  706567a3c78ce7fec9f91ce88f6100bd  gcc/testsuite/gcc.target/i386/float128-2.c
  02d798a42a24e851bb36577bb0e02d26  gcc/testsuite/gcc.target/i386/float128-3.c
--- 68680,68686 ----
  5046881025e2cf5dcd3027d9718a2633  gcc/testsuite/gcc.target/i386/fentry.c
  48b7c3a611d7e2361c0d7fe315d26972  gcc/testsuite/gcc.target/i386/fentryname1.c
  25e6a100b24cebd0390edc44a4b95b46  gcc/testsuite/gcc.target/i386/fentryname2.c
! e929ba2759562dca3c31e9c489d9b6c7  gcc/testsuite/gcc.target/i386/fentryname3.c
  bd55fbb60894cd429f7fc93df2f43fee  gcc/testsuite/gcc.target/i386/float128-1.c
  706567a3c78ce7fec9f91ce88f6100bd  gcc/testsuite/gcc.target/i386/float128-2.c
  02d798a42a24e851bb36577bb0e02d26  gcc/testsuite/gcc.target/i386/float128-3.c
*************** c1320fd604803bc04257c984f1e3ba77  gcc/te
*** 65148,65154 ****
  3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! f4a606946f43ef5c9080581bacc9cb73  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  6886186deb869f2b04be36492c05b8aa  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  0ba9f1b7368ea580cabab541b451aea8  gcc/testsuite/gcc.target/i386/funcspec-8.c
--- 68783,68789 ----
  3dd864a351a6115db6a5b2ea1ee16ece  gcc/testsuite/gcc.target/i386/funcspec-3.c
  5af0527c599bf95f77628d48b1beb0ec  gcc/testsuite/gcc.target/i386/funcspec-4.c
  7568c1249431aafb7f8e2610a1e4a35e  gcc/testsuite/gcc.target/i386/funcspec-5.c
! b7011b0fba7da01fdee798517d964184  gcc/testsuite/gcc.target/i386/funcspec-56.inc
  6886186deb869f2b04be36492c05b8aa  gcc/testsuite/gcc.target/i386/funcspec-6.c
  35655de5c9348f2a36254312a8d17908  gcc/testsuite/gcc.target/i386/funcspec-7.c
  0ba9f1b7368ea580cabab541b451aea8  gcc/testsuite/gcc.target/i386/funcspec-8.c
*************** f0aea57bccd3254b56180992963b7853  gcc/te
*** 65176,65182 ****
  1f9937c491145b854eb2f33cb4416a73  gcc/testsuite/gcc.target/i386/harden-sls-3.c
  667e4b0b2b9d59e5ff6a33a8402c35c2  gcc/testsuite/gcc.target/i386/harden-sls-4.c
  9635894cad10ee51f232944f316ec859  gcc/testsuite/gcc.target/i386/harden-sls-5.c
! dba3741d16b2beb35426c7f90dcbfc89  gcc/testsuite/gcc.target/i386/harden-sls-6.c
  ccf25da2b2cf1ab0770df6b2f00df250  gcc/testsuite/gcc.target/i386/headmerge-1.c
  8ea580a2c1ae6cd77d71593ecfc28b76  gcc/testsuite/gcc.target/i386/headmerge-2.c
  b7f9898daa61fc87f05fbe6171392dce  gcc/testsuite/gcc.target/i386/hle-add-acq-1.c
--- 68811,68817 ----
  1f9937c491145b854eb2f33cb4416a73  gcc/testsuite/gcc.target/i386/harden-sls-3.c
  667e4b0b2b9d59e5ff6a33a8402c35c2  gcc/testsuite/gcc.target/i386/harden-sls-4.c
  9635894cad10ee51f232944f316ec859  gcc/testsuite/gcc.target/i386/harden-sls-5.c
! 0619d8edcf2a5f86ebe4743fb2b9d0d7  gcc/testsuite/gcc.target/i386/harden-sls-6.c
  ccf25da2b2cf1ab0770df6b2f00df250  gcc/testsuite/gcc.target/i386/headmerge-1.c
  8ea580a2c1ae6cd77d71593ecfc28b76  gcc/testsuite/gcc.target/i386/headmerge-2.c
  b7f9898daa61fc87f05fbe6171392dce  gcc/testsuite/gcc.target/i386/hle-add-acq-1.c
*************** d95f56a3f95ba78c3fdb5f418f8d953a  gcc/te
*** 65198,65205 ****
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
  6bb730f0122ef83efe1593372db950e5  gcc/testsuite/gcc.target/i386/hreset-1.c
! 377bf150fc4c2839d2f765b6cf328326  gcc/testsuite/gcc.target/i386/i386.exp
! e17d351aa14028c1f4015fc4bc97b4f1  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  8c17efb1ee1c990d7e1a55e4f347a4b2  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
  a77c8e89ec538edb98eb4ac96da0db61  gcc/testsuite/gcc.target/i386/iamcu/defines.h
--- 68833,68840 ----
  c937938a0a49e70d699ee5ef70d33cb0  gcc/testsuite/gcc.target/i386/hle-xor-acq-1.c
  7aef940035776cbf7ecabc540f63e33e  gcc/testsuite/gcc.target/i386/hle-xor-rel-1.c
  6bb730f0122ef83efe1593372db950e5  gcc/testsuite/gcc.target/i386/hreset-1.c
! 70e796450f5dc751de1615eee89b6415  gcc/testsuite/gcc.target/i386/i386.exp
! 1da955e054415579b90399c8776c88a9  gcc/testsuite/gcc.target/i386/iamcu/abi-iamcu.exp
  824179ec90e1e4fdb872aed133f8d523  gcc/testsuite/gcc.target/i386/iamcu/args.h
  8c17efb1ee1c990d7e1a55e4f347a4b2  gcc/testsuite/gcc.target/i386/iamcu/asm-support.S
  a77c8e89ec538edb98eb4ac96da0db61  gcc/testsuite/gcc.target/i386/iamcu/defines.h
*************** aa8a4b5daac0c21a379120ce3ab4e865  gcc/te
*** 65292,65304 ****
  6bbc5e1b00a93a791e4215af0c1c561e  gcc/testsuite/gcc.target/i386/inline_error.c
  e9c3d3c97474356da96a1fc22eb4227d  gcc/testsuite/gcc.target/i386/interrupt-1.c
  b8833946f76f120528a455a8a038099f  gcc/testsuite/gcc.target/i386/interrupt-10.c
! 5e7acedc99050eabc18e4afa97f620f8  gcc/testsuite/gcc.target/i386/interrupt-11.c
! bd9e94e09aac9ec31051de95bf016188  gcc/testsuite/gcc.target/i386/interrupt-12.c
! 55cf3fb5462a8f4d76b1f7ede0813555  gcc/testsuite/gcc.target/i386/interrupt-13.c
  4609c90dc9ad28bf220f5f449014a1f4  gcc/testsuite/gcc.target/i386/interrupt-14.c
! 68b7d555dd88142b7078ac58b98682f4  gcc/testsuite/gcc.target/i386/interrupt-15.c
! 5170dfd2d8cf594253a3ed01aef2bd02  gcc/testsuite/gcc.target/i386/interrupt-16.c
! 06accf28baf8c84b221aa48bbf2f6458  gcc/testsuite/gcc.target/i386/interrupt-17.c
  6442ee0aaf57b80fc0c0555b49479df5  gcc/testsuite/gcc.target/i386/interrupt-18.c
  2a92ed875b52c83373107688535325d5  gcc/testsuite/gcc.target/i386/interrupt-19.c
  fa2fc8fe5382bd9063967ea827a90b42  gcc/testsuite/gcc.target/i386/interrupt-2.c
--- 68927,68939 ----
  6bbc5e1b00a93a791e4215af0c1c561e  gcc/testsuite/gcc.target/i386/inline_error.c
  e9c3d3c97474356da96a1fc22eb4227d  gcc/testsuite/gcc.target/i386/interrupt-1.c
  b8833946f76f120528a455a8a038099f  gcc/testsuite/gcc.target/i386/interrupt-10.c
! 4133b05dd173ebdf704d2fd2b9ca3bc0  gcc/testsuite/gcc.target/i386/interrupt-11.c
! 91c54b9dfc626bee31b148269879d5e9  gcc/testsuite/gcc.target/i386/interrupt-12.c
! d458a0e32cb2349bcd36f8d2d34f5f8d  gcc/testsuite/gcc.target/i386/interrupt-13.c
  4609c90dc9ad28bf220f5f449014a1f4  gcc/testsuite/gcc.target/i386/interrupt-14.c
! 08e23012b58fe85be0d87a2f9137b0a4  gcc/testsuite/gcc.target/i386/interrupt-15.c
! c6e693b5f9a7c73ab931ca1a8b1030cf  gcc/testsuite/gcc.target/i386/interrupt-16.c
! 0bd3898f1b1d458377a8614055066514  gcc/testsuite/gcc.target/i386/interrupt-17.c
  6442ee0aaf57b80fc0c0555b49479df5  gcc/testsuite/gcc.target/i386/interrupt-18.c
  2a92ed875b52c83373107688535325d5  gcc/testsuite/gcc.target/i386/interrupt-19.c
  fa2fc8fe5382bd9063967ea827a90b42  gcc/testsuite/gcc.target/i386/interrupt-2.c
*************** d4351c29098d7e1a0896dab49723502e  gcc/te
*** 65318,65324 ****
  84e919a811bf0126248d9ed6ec609a5f  gcc/testsuite/gcc.target/i386/interrupt-5.c
  c730df5f075d47e0709251194392510e  gcc/testsuite/gcc.target/i386/interrupt-6.c
  b717775fdf3fe009b8d77efe1fb114b4  gcc/testsuite/gcc.target/i386/interrupt-7.c
! 31f2838c853f3afae9c8caee5a594c4e  gcc/testsuite/gcc.target/i386/interrupt-8.c
  8e995490e0319f3e718a691f9a237941  gcc/testsuite/gcc.target/i386/interrupt-9.c
  acfd195237a4ce2a0cc03304f4873e80  gcc/testsuite/gcc.target/i386/interrupt-iamcu.c
  bb763a0c4d76af07026d968cf1d02bea  gcc/testsuite/gcc.target/i386/interrupt-mmx-err-1.c
--- 68953,68959 ----
  84e919a811bf0126248d9ed6ec609a5f  gcc/testsuite/gcc.target/i386/interrupt-5.c
  c730df5f075d47e0709251194392510e  gcc/testsuite/gcc.target/i386/interrupt-6.c
  b717775fdf3fe009b8d77efe1fb114b4  gcc/testsuite/gcc.target/i386/interrupt-7.c
! 8b169e8f31fb606884859b8f40845595  gcc/testsuite/gcc.target/i386/interrupt-8.c
  8e995490e0319f3e718a691f9a237941  gcc/testsuite/gcc.target/i386/interrupt-9.c
  acfd195237a4ce2a0cc03304f4873e80  gcc/testsuite/gcc.target/i386/interrupt-iamcu.c
  bb763a0c4d76af07026d968cf1d02bea  gcc/testsuite/gcc.target/i386/interrupt-mmx-err-1.c
*************** f1728b5e83b3ce3c8eaebf907d52fe30  gcc/te
*** 65367,65374 ****
  7d6318be1e679ff633411e06bdf9bc8b  gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c
  365be795bdc65acb8232f4fc0f710d08  gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.c
  599484c2f5122d14ad244cba89c2c0e0  gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.c
! 4c4a88b13cbf3c58c70ad98c32a8879d  gcc/testsuite/gcc.target/i386/keylocker-encodekey128.c
! 5d4d1e811f69626e9becd2b2c2a1c6d6  gcc/testsuite/gcc.target/i386/keylocker-encodekey256.c
  78393ec91600382e98db57e560deaea9  gcc/testsuite/gcc.target/i386/keylocker-loadiwkey.c
  6a61f297f5746de86187140f048ab655  gcc/testsuite/gcc.target/i386/l_fma_1.h
  c598c1d2a127be1189b3dfe020919429  gcc/testsuite/gcc.target/i386/l_fma_2.h
--- 69002,69009 ----
  7d6318be1e679ff633411e06bdf9bc8b  gcc/testsuite/gcc.target/i386/keylocker-aesenc256kl.c
  365be795bdc65acb8232f4fc0f710d08  gcc/testsuite/gcc.target/i386/keylocker-aesencwide128kl.c
  599484c2f5122d14ad244cba89c2c0e0  gcc/testsuite/gcc.target/i386/keylocker-aesencwide256kl.c
! c6f6aaff47d064fbceed4cfbcb5b9279  gcc/testsuite/gcc.target/i386/keylocker-encodekey128.c
! a468c392fd8838d0198cfb8b367d4b6d  gcc/testsuite/gcc.target/i386/keylocker-encodekey256.c
  78393ec91600382e98db57e560deaea9  gcc/testsuite/gcc.target/i386/keylocker-loadiwkey.c
  6a61f297f5746de86187140f048ab655  gcc/testsuite/gcc.target/i386/l_fma_1.h
  c598c1d2a127be1189b3dfe020919429  gcc/testsuite/gcc.target/i386/l_fma_2.h
*************** a697ff9e2f8fc0bffc90007a1118893e  gcc/te
*** 65462,65468 ****
  2b719a429ba467512cb34ad73352ab1f  gcc/testsuite/gcc.target/i386/math-torture/lfloor.c
  90c0fcbde458b9688e1e20332b2f1308  gcc/testsuite/gcc.target/i386/math-torture/lrint.c
  75c95d53b12109ed3e501ca632f0035d  gcc/testsuite/gcc.target/i386/math-torture/lround.c
! 8e5c9281f2075464336be38f9e573823  gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
  b8987de7098b84e004093b3d86b59425  gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c
  9b512770257f2687cde1774f56f4d64d  gcc/testsuite/gcc.target/i386/math-torture/rint.c
  29b89b8d60fbc8ee9eb2fb986ae17c23  gcc/testsuite/gcc.target/i386/math-torture/round.c
--- 69097,69103 ----
  2b719a429ba467512cb34ad73352ab1f  gcc/testsuite/gcc.target/i386/math-torture/lfloor.c
  90c0fcbde458b9688e1e20332b2f1308  gcc/testsuite/gcc.target/i386/math-torture/lrint.c
  75c95d53b12109ed3e501ca632f0035d  gcc/testsuite/gcc.target/i386/math-torture/lround.c
! ea9fb826489c4c036a50a4acf55afd57  gcc/testsuite/gcc.target/i386/math-torture/math-torture.exp
  b8987de7098b84e004093b3d86b59425  gcc/testsuite/gcc.target/i386/math-torture/nearbyint.c
  9b512770257f2687cde1774f56f4d64d  gcc/testsuite/gcc.target/i386/math-torture/rint.c
  29b89b8d60fbc8ee9eb2fb986ae17c23  gcc/testsuite/gcc.target/i386/math-torture/round.c
*************** fad1f723fea113cd6e9ed9c154a8ac50  gcc/te
*** 65499,65505 ****
  ff0a702aa0efe0f21e105da81c274eb6  gcc/testsuite/gcc.target/i386/memset-strategy-9.c
  abacd2e1491b7c40915d4be18c0229b4  gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
  87dbca58e427b20c0f83b7a2aefbd38a  gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
! 820bfa5c15a64564c66a03aa917aeae1  gcc/testsuite/gcc.target/i386/merge-1.c
  c4570886a9f211d78bbdd2e42072c902  gcc/testsuite/gcc.target/i386/minmax-1.c
  0ff9b1c7cefc9d6f11d41b132dc6cca7  gcc/testsuite/gcc.target/i386/minmax-10.c
  7836f1f75af426e0f8157eab2934b89e  gcc/testsuite/gcc.target/i386/minmax-11.c
--- 69134,69140 ----
  ff0a702aa0efe0f21e105da81c274eb6  gcc/testsuite/gcc.target/i386/memset-strategy-9.c
  abacd2e1491b7c40915d4be18c0229b4  gcc/testsuite/gcc.target/i386/memset-vector_loop-1.c
  87dbca58e427b20c0f83b7a2aefbd38a  gcc/testsuite/gcc.target/i386/memset-vector_loop-2.c
! 0f0d6bfb1ded50a271c2d5125c308eaf  gcc/testsuite/gcc.target/i386/merge-1.c
  c4570886a9f211d78bbdd2e42072c902  gcc/testsuite/gcc.target/i386/minmax-1.c
  0ff9b1c7cefc9d6f11d41b132dc6cca7  gcc/testsuite/gcc.target/i386/minmax-10.c
  7836f1f75af426e0f8157eab2934b89e  gcc/testsuite/gcc.target/i386/minmax-11.c
*************** e302a983fa569ca9c52105401b06e054  gcc/te
*** 65562,65574 ****
  b1d4c5cfd15d435b380b98085cd82466  gcc/testsuite/gcc.target/i386/mvc4.c
  e9719dc09a8623c4469196f154f1eb0b  gcc/testsuite/gcc.target/i386/mvc5.c
  3c42a6c268da49c39ff71a06b88da4d9  gcc/testsuite/gcc.target/i386/mvc6.c
! 386d89b41c4e5d5ccfc2ef9ca1c33f46  gcc/testsuite/gcc.target/i386/mvc7.c
  e4d2dd951186c493cd025e4b5e976fa1  gcc/testsuite/gcc.target/i386/mvc8.c
  7ae0694e7bb3605c7b05ed3e6ee19600  gcc/testsuite/gcc.target/i386/mvc9.c
  be0d97ad0e48f00567936ea3449b3b79  gcc/testsuite/gcc.target/i386/naked-1.c
  5a955bac7e699a476f5d580987eee0a2  gcc/testsuite/gcc.target/i386/naked-2.c
  d4f46b5271ce6dccc8d803376c5790f5  gcc/testsuite/gcc.target/i386/naked-3.c
  8c4bd037860d3567dcbeae3ff5197511  gcc/testsuite/gcc.target/i386/naked-4.c
  a7f204e20c0df5dad30eac30c4a089ab  gcc/testsuite/gcc.target/i386/nest-1.c
  907e6711117480fbf04e37d85bdb4beb  gcc/testsuite/gcc.target/i386/nop-mcount.c
  7554f6e1a30e3cc93f33dbad79fc2a68  gcc/testsuite/gcc.target/i386/noplt-1.c
--- 69197,69211 ----
  b1d4c5cfd15d435b380b98085cd82466  gcc/testsuite/gcc.target/i386/mvc4.c
  e9719dc09a8623c4469196f154f1eb0b  gcc/testsuite/gcc.target/i386/mvc5.c
  3c42a6c268da49c39ff71a06b88da4d9  gcc/testsuite/gcc.target/i386/mvc6.c
! 9e20d595b9c2b35c7ae876bcd910e35f  gcc/testsuite/gcc.target/i386/mvc7.c
  e4d2dd951186c493cd025e4b5e976fa1  gcc/testsuite/gcc.target/i386/mvc8.c
  7ae0694e7bb3605c7b05ed3e6ee19600  gcc/testsuite/gcc.target/i386/mvc9.c
  be0d97ad0e48f00567936ea3449b3b79  gcc/testsuite/gcc.target/i386/naked-1.c
  5a955bac7e699a476f5d580987eee0a2  gcc/testsuite/gcc.target/i386/naked-2.c
  d4f46b5271ce6dccc8d803376c5790f5  gcc/testsuite/gcc.target/i386/naked-3.c
  8c4bd037860d3567dcbeae3ff5197511  gcc/testsuite/gcc.target/i386/naked-4.c
+ 53573eabfe7a88bc5c685842328a0bfb  gcc/testsuite/gcc.target/i386/neg-zext-1.c
+ 17e0a5a79b5ebe25244934057a3faf0f  gcc/testsuite/gcc.target/i386/neg-zext-2.c
  a7f204e20c0df5dad30eac30c4a089ab  gcc/testsuite/gcc.target/i386/nest-1.c
  907e6711117480fbf04e37d85bdb4beb  gcc/testsuite/gcc.target/i386/nop-mcount.c
  7554f6e1a30e3cc93f33dbad79fc2a68  gcc/testsuite/gcc.target/i386/noplt-1.c
*************** d84c245c19907cbcb51ec1260f2f2e75  gcc/te
*** 65586,65592 ****
  d7a02dbcdc54a18a392397fb1ed438e2  gcc/testsuite/gcc.target/i386/opt-2.c
  768e6e106257ef723b64a10eb89e9811  gcc/testsuite/gcc.target/i386/ordcmp-1.c
  f0eaf4bd598d014fce8369eb0b54ee88  gcc/testsuite/gcc.target/i386/pad-1.c
! f46921bc51d5adaf3a4d05fa6566cd7d  gcc/testsuite/gcc.target/i386/pad-10.c
  75b35cf81b5bb2eea07c8f6faa9146c0  gcc/testsuite/gcc.target/i386/pad-2.c
  8e2ffb4e1dd9f9ba09d4e1a64a46f244  gcc/testsuite/gcc.target/i386/pad-3.c
  dc10c73f7dc0232744baa8a2d6539cb9  gcc/testsuite/gcc.target/i386/pad-4.c
--- 69223,69229 ----
  d7a02dbcdc54a18a392397fb1ed438e2  gcc/testsuite/gcc.target/i386/opt-2.c
  768e6e106257ef723b64a10eb89e9811  gcc/testsuite/gcc.target/i386/ordcmp-1.c
  f0eaf4bd598d014fce8369eb0b54ee88  gcc/testsuite/gcc.target/i386/pad-1.c
! 5f9a4d07e98c50b2728dc23ca71b8f3b  gcc/testsuite/gcc.target/i386/pad-10.c
  75b35cf81b5bb2eea07c8f6faa9146c0  gcc/testsuite/gcc.target/i386/pad-2.c
  8e2ffb4e1dd9f9ba09d4e1a64a46f244  gcc/testsuite/gcc.target/i386/pad-3.c
  dc10c73f7dc0232744baa8a2d6539cb9  gcc/testsuite/gcc.target/i386/pad-4.c
*************** c5387195c56efb1dc4ee3aea30c3e6cc  gcc/te
*** 65663,65669 ****
  e0bb92a526955a1789440ebafb809f58  gcc/testsuite/gcc.target/i386/pieces-memset-27.c
  1c439878817e3fad97e118a4daddf77e  gcc/testsuite/gcc.target/i386/pieces-memset-28.c
  7018e77ee0514f6fe0ee280b75f6ab0f  gcc/testsuite/gcc.target/i386/pieces-memset-29.c
! f76c4014207b7260a0d6d0e1d833da13  gcc/testsuite/gcc.target/i386/pieces-memset-3.c
  dfdb563e4ff7bbe491b12bbbe647b9dc  gcc/testsuite/gcc.target/i386/pieces-memset-30.c
  4920af6ef8af7487a957349a29dbab5a  gcc/testsuite/gcc.target/i386/pieces-memset-31.c
  5a1d68c281d8c3d69242275385fca73b  gcc/testsuite/gcc.target/i386/pieces-memset-32.c
--- 69300,69306 ----
  e0bb92a526955a1789440ebafb809f58  gcc/testsuite/gcc.target/i386/pieces-memset-27.c
  1c439878817e3fad97e118a4daddf77e  gcc/testsuite/gcc.target/i386/pieces-memset-28.c
  7018e77ee0514f6fe0ee280b75f6ab0f  gcc/testsuite/gcc.target/i386/pieces-memset-29.c
! bb245b3bbe402f7fd5e914e9819a64e1  gcc/testsuite/gcc.target/i386/pieces-memset-3.c
  dfdb563e4ff7bbe491b12bbbe647b9dc  gcc/testsuite/gcc.target/i386/pieces-memset-30.c
  4920af6ef8af7487a957349a29dbab5a  gcc/testsuite/gcc.target/i386/pieces-memset-31.c
  5a1d68c281d8c3d69242275385fca73b  gcc/testsuite/gcc.target/i386/pieces-memset-32.c
*************** dfdb563e4ff7bbe491b12bbbe647b9dc  gcc/te
*** 65671,65679 ****
  16f63d88d853af6b12c879750e183960  gcc/testsuite/gcc.target/i386/pieces-memset-34.c
  181b017254dd31eb2223399402d99647  gcc/testsuite/gcc.target/i386/pieces-memset-35.c
  1459df6a5e5bf8ce8f966ba8966bfddd  gcc/testsuite/gcc.target/i386/pieces-memset-36.c
! 98520236020ae438a633156e10f18109  gcc/testsuite/gcc.target/i386/pieces-memset-37.c
  71d7cb14af52878612fec7d2cc2dcdff  gcc/testsuite/gcc.target/i386/pieces-memset-38.c
! 3c40d1cea3026e11bb928e9427e769ab  gcc/testsuite/gcc.target/i386/pieces-memset-39.c
  b9528f9fe022aa90d7c7d9764f67ece4  gcc/testsuite/gcc.target/i386/pieces-memset-4.c
  e97806715f1d074e19f850beb7a46cf7  gcc/testsuite/gcc.target/i386/pieces-memset-40.c
  fa508fb4ea1f8f8b18cde0a830cf3953  gcc/testsuite/gcc.target/i386/pieces-memset-41.c
--- 69308,69316 ----
  16f63d88d853af6b12c879750e183960  gcc/testsuite/gcc.target/i386/pieces-memset-34.c
  181b017254dd31eb2223399402d99647  gcc/testsuite/gcc.target/i386/pieces-memset-35.c
  1459df6a5e5bf8ce8f966ba8966bfddd  gcc/testsuite/gcc.target/i386/pieces-memset-36.c
! 706f5c92442e84a05ac86f5049be1023  gcc/testsuite/gcc.target/i386/pieces-memset-37.c
  71d7cb14af52878612fec7d2cc2dcdff  gcc/testsuite/gcc.target/i386/pieces-memset-38.c
! 46290722ded2b4db346c0397ed4a4f6e  gcc/testsuite/gcc.target/i386/pieces-memset-39.c
  b9528f9fe022aa90d7c7d9764f67ece4  gcc/testsuite/gcc.target/i386/pieces-memset-4.c
  e97806715f1d074e19f850beb7a46cf7  gcc/testsuite/gcc.target/i386/pieces-memset-40.c
  fa508fb4ea1f8f8b18cde0a830cf3953  gcc/testsuite/gcc.target/i386/pieces-memset-41.c
*************** f29f6d2af05e1f08f148f0eed162d860  gcc/te
*** 65686,65691 ****
--- 69323,69329 ----
  fab4224ceed336ed6902793909c0c6c2  gcc/testsuite/gcc.target/i386/pieces-memset-48.c
  b6a5763cac2b72e43f0900c7fbca0740  gcc/testsuite/gcc.target/i386/pieces-memset-49.c
  e59e962761850423b307c01f720c8e84  gcc/testsuite/gcc.target/i386/pieces-memset-5.c
+ f6afe5571570af54d1d2e02c0e28d3f6  gcc/testsuite/gcc.target/i386/pieces-memset-50.c
  9a26520df010055f642c2ece0b8228da  gcc/testsuite/gcc.target/i386/pieces-memset-6.c
  965472deb34cf62f613f73701201f9b4  gcc/testsuite/gcc.target/i386/pieces-memset-7.c
  7c2aa9a23dfc3f65dc77c8d3af0a6a3f  gcc/testsuite/gcc.target/i386/pieces-memset-8.c
*************** a4604cdc0bd245eabfdda1b8994d0444  gcc/te
*** 65718,65724 ****
  4dd4204ea1719e49b9513943dfa81aee  gcc/testsuite/gcc.target/i386/pr100701.c
  d6be9416b5a692dcf10f49538e62c72a  gcc/testsuite/gcc.target/i386/pr100704-1.c
  79bcfaca817f59f84be4d439452f5686  gcc/testsuite/gcc.target/i386/pr100704-2.c
! 8f0140f382ce775a24be94b4120ddafc  gcc/testsuite/gcc.target/i386/pr100704-3.c
  3867710318c1f66b0baefc39f250ac61  gcc/testsuite/gcc.target/i386/pr100711-1.c
  d67bab80045236216b478b5dc7a6b6c7  gcc/testsuite/gcc.target/i386/pr100711-2.c
  21342a2d589a99d18c416c9c8cb14e73  gcc/testsuite/gcc.target/i386/pr100722.c
--- 69356,69362 ----
  4dd4204ea1719e49b9513943dfa81aee  gcc/testsuite/gcc.target/i386/pr100701.c
  d6be9416b5a692dcf10f49538e62c72a  gcc/testsuite/gcc.target/i386/pr100704-1.c
  79bcfaca817f59f84be4d439452f5686  gcc/testsuite/gcc.target/i386/pr100704-2.c
! 8197644f7a377a4e773e37bcaf521a03  gcc/testsuite/gcc.target/i386/pr100704-3.c
  3867710318c1f66b0baefc39f250ac61  gcc/testsuite/gcc.target/i386/pr100711-1.c
  d67bab80045236216b478b5dc7a6b6c7  gcc/testsuite/gcc.target/i386/pr100711-2.c
  21342a2d589a99d18c416c9c8cb14e73  gcc/testsuite/gcc.target/i386/pr100722.c
*************** e292a240560fbabcde2b3e6709148e38  gcc/te
*** 65731,65747 ****
  bfc29b0613a8b50ad05723222e02fca0  gcc/testsuite/gcc.target/i386/pr100865-12a.c
  05ff62d2aea9db819682757c26e4d599  gcc/testsuite/gcc.target/i386/pr100865-12b.c
  609a6efc8f26048c66413a6b2cd5337e  gcc/testsuite/gcc.target/i386/pr100865-12c.c
! fbcc026e435fd5ecf1fc89cd42808ce7  gcc/testsuite/gcc.target/i386/pr100865-2.c
! 0fa97d6f191c6fb49bd88fc0873030c4  gcc/testsuite/gcc.target/i386/pr100865-3.c
! 288f9005ede0b3e5399ac5de232334a0  gcc/testsuite/gcc.target/i386/pr100865-4a.c
! 6ecde3746459af9c538bdb7053ea0f2c  gcc/testsuite/gcc.target/i386/pr100865-4b.c
! 269822614a23a2759b992718120775b7  gcc/testsuite/gcc.target/i386/pr100865-5a.c
! a6abe6c67c13c8075c732a6f475e9666  gcc/testsuite/gcc.target/i386/pr100865-5b.c
! 141211da7bb82a627cb91a481ae7e717  gcc/testsuite/gcc.target/i386/pr100865-6a.c
! 77a33bda5286a6a0302feba88bb9ff50  gcc/testsuite/gcc.target/i386/pr100865-6b.c
! 3c8fc8cf77fc678567411228bb412d79  gcc/testsuite/gcc.target/i386/pr100865-6c.c
  1c42679e51355c023fcf9ced51148e88  gcc/testsuite/gcc.target/i386/pr100865-7a.c
! d5ed6554ef2f8e0b3488d3e0552a1ddb  gcc/testsuite/gcc.target/i386/pr100865-7b.c
  24b690b0da869c1f902989f4c75dfd60  gcc/testsuite/gcc.target/i386/pr100865-7c.c
  2e6c0885d5ed036832dae0f07276269a  gcc/testsuite/gcc.target/i386/pr100865-8a.c
  38883a5389fa795fd84a1023776608ea  gcc/testsuite/gcc.target/i386/pr100865-8b.c
--- 69369,69385 ----
  bfc29b0613a8b50ad05723222e02fca0  gcc/testsuite/gcc.target/i386/pr100865-12a.c
  05ff62d2aea9db819682757c26e4d599  gcc/testsuite/gcc.target/i386/pr100865-12b.c
  609a6efc8f26048c66413a6b2cd5337e  gcc/testsuite/gcc.target/i386/pr100865-12c.c
! 9eb1d7bee3ec27dabbdf0479bcde9808  gcc/testsuite/gcc.target/i386/pr100865-2.c
! 2ac7fb416e4a98fc4e69463ec597559b  gcc/testsuite/gcc.target/i386/pr100865-3.c
! 9d6cb22953f26fa862eb8852bc96677e  gcc/testsuite/gcc.target/i386/pr100865-4a.c
! 7cac8f6f48bb687c22fa1d0be557fa16  gcc/testsuite/gcc.target/i386/pr100865-4b.c
! 47b3df774c896fec66fdd3127d76b7c1  gcc/testsuite/gcc.target/i386/pr100865-5a.c
! 02c1e45e4337022f463c96887afff0db  gcc/testsuite/gcc.target/i386/pr100865-5b.c
! b1a92e51935fa6dfe87cc1b5591f86cc  gcc/testsuite/gcc.target/i386/pr100865-6a.c
! cd0c1e0c14e0cd797ad6a3fe36f61c41  gcc/testsuite/gcc.target/i386/pr100865-6b.c
! 79c69335f7b22344550f6fa784a3c0fd  gcc/testsuite/gcc.target/i386/pr100865-6c.c
  1c42679e51355c023fcf9ced51148e88  gcc/testsuite/gcc.target/i386/pr100865-7a.c
! 9ad73e17a2a8a2177f83924d42a9ec6d  gcc/testsuite/gcc.target/i386/pr100865-7b.c
  24b690b0da869c1f902989f4c75dfd60  gcc/testsuite/gcc.target/i386/pr100865-7c.c
  2e6c0885d5ed036832dae0f07276269a  gcc/testsuite/gcc.target/i386/pr100865-8a.c
  38883a5389fa795fd84a1023776608ea  gcc/testsuite/gcc.target/i386/pr100865-8b.c
*************** e0bc688540cd8ed83ce6df81886303a5  gcc/te
*** 65774,65789 ****
  6a033f94694c14382da16121484a5059  gcc/testsuite/gcc.target/i386/pr101492-3.c
  2a7216d43f3ffddb5fc3d62af8e5a895  gcc/testsuite/gcc.target/i386/pr101492-4.c
  d4e20b825c09cf6794e6e5b597c7335f  gcc/testsuite/gcc.target/i386/pr101504.c
  5d41fc380eccae6344c39847965d0da0  gcc/testsuite/gcc.target/i386/pr101636.c
  b974d1c1eb2c64f7c28acd2f356d3503  gcc/testsuite/gcc.target/i386/pr101685.c
  b7917a5931ee0a85f9f8604fa1a42161  gcc/testsuite/gcc.target/i386/pr101716.c
  18982a20a869451cc3518d5947d3a7b2  gcc/testsuite/gcc.target/i386/pr101742a.c
  758e66b76326e2664ea96ea9261ec8e4  gcc/testsuite/gcc.target/i386/pr101742b.c
! 586e3adb518406a5737ac9edd4b73d53  gcc/testsuite/gcc.target/i386/pr101796-1.c
  557643d55294de049431c337a4d582d7  gcc/testsuite/gcc.target/i386/pr101797.c
  8799e0da44fea4280d7718fd3e9b8245  gcc/testsuite/gcc.target/i386/pr101812.c
  84b0729af4c999d30a48152a6966d6ce  gcc/testsuite/gcc.target/i386/pr101846-1.c
! 913f80ab968aea57b0f907bcef034044  gcc/testsuite/gcc.target/i386/pr101846-2.c
  882b6859e76edaebed96853f73063bea  gcc/testsuite/gcc.target/i386/pr101846-3.c
  eb1fb93011a15999f5bb8b17bb03b659  gcc/testsuite/gcc.target/i386/pr101846-4.c
  f2863b3a527bf374fc23d2b8bd7a65b8  gcc/testsuite/gcc.target/i386/pr101895.c
--- 69412,69429 ----
  6a033f94694c14382da16121484a5059  gcc/testsuite/gcc.target/i386/pr101492-3.c
  2a7216d43f3ffddb5fc3d62af8e5a895  gcc/testsuite/gcc.target/i386/pr101492-4.c
  d4e20b825c09cf6794e6e5b597c7335f  gcc/testsuite/gcc.target/i386/pr101504.c
+ dc16503e73180cbb7d121cbbe8978dea  gcc/testsuite/gcc.target/i386/pr101617.c
  5d41fc380eccae6344c39847965d0da0  gcc/testsuite/gcc.target/i386/pr101636.c
+ 12da55d83461aa19e9bc27fe99056a71  gcc/testsuite/gcc.target/i386/pr101668.c
  b974d1c1eb2c64f7c28acd2f356d3503  gcc/testsuite/gcc.target/i386/pr101685.c
  b7917a5931ee0a85f9f8604fa1a42161  gcc/testsuite/gcc.target/i386/pr101716.c
  18982a20a869451cc3518d5947d3a7b2  gcc/testsuite/gcc.target/i386/pr101742a.c
  758e66b76326e2664ea96ea9261ec8e4  gcc/testsuite/gcc.target/i386/pr101742b.c
! 436721f9a4bb4a08661758c2e0fc2457  gcc/testsuite/gcc.target/i386/pr101796-1.c
  557643d55294de049431c337a4d582d7  gcc/testsuite/gcc.target/i386/pr101797.c
  8799e0da44fea4280d7718fd3e9b8245  gcc/testsuite/gcc.target/i386/pr101812.c
  84b0729af4c999d30a48152a6966d6ce  gcc/testsuite/gcc.target/i386/pr101846-1.c
! a2369d644b99e7aea1a289a4a41c3cfa  gcc/testsuite/gcc.target/i386/pr101846-2.c
  882b6859e76edaebed96853f73063bea  gcc/testsuite/gcc.target/i386/pr101846-3.c
  eb1fb93011a15999f5bb8b17bb03b659  gcc/testsuite/gcc.target/i386/pr101846-4.c
  f2863b3a527bf374fc23d2b8bd7a65b8  gcc/testsuite/gcc.target/i386/pr101895.c
*************** b4d06268d42bf5db1da463eaab008024  gcc/te
*** 65799,65807 ****
  0457f3d16b7a3fe95e09e531dd63da5f  gcc/testsuite/gcc.target/i386/pr101989-1.c
  c0989692a0f2603de7cdb8cf6bbc470d  gcc/testsuite/gcc.target/i386/pr101989-2.c
  ce94fb3876b696419b146fe6dbfba74b  gcc/testsuite/gcc.target/i386/pr101989-3.c
! bda82f017fecb1d7b2edb529aea0280c  gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c
  87b3d1a468a63279ca3c521ffeeeb440  gcc/testsuite/gcc.target/i386/pr102016.c
! 051978a110cebdfa100ba2a54bcb6bb1  gcc/testsuite/gcc.target/i386/pr102021.c
  ae9e982908f39694cfa63cde47ecd4ef  gcc/testsuite/gcc.target/i386/pr102024.c
  7b643f9feaacdf61e235197b76917d23  gcc/testsuite/gcc.target/i386/pr102080.c
  906d02e2e76bbe7aab1739a3b7260688  gcc/testsuite/gcc.target/i386/pr102230.c
--- 69439,69447 ----
  0457f3d16b7a3fe95e09e531dd63da5f  gcc/testsuite/gcc.target/i386/pr101989-1.c
  c0989692a0f2603de7cdb8cf6bbc470d  gcc/testsuite/gcc.target/i386/pr101989-2.c
  ce94fb3876b696419b146fe6dbfba74b  gcc/testsuite/gcc.target/i386/pr101989-3.c
! 21b1e986ca3dc4d419c2817e1ca408b4  gcc/testsuite/gcc.target/i386/pr101989-broadcast-1.c
  87b3d1a468a63279ca3c521ffeeeb440  gcc/testsuite/gcc.target/i386/pr102016.c
! 3a74be3f071d0c9cbe7710c799b1c986  gcc/testsuite/gcc.target/i386/pr102021.c
  ae9e982908f39694cfa63cde47ecd4ef  gcc/testsuite/gcc.target/i386/pr102024.c
  7b643f9feaacdf61e235197b76917d23  gcc/testsuite/gcc.target/i386/pr102080.c
  906d02e2e76bbe7aab1739a3b7260688  gcc/testsuite/gcc.target/i386/pr102230.c
*************** ed0cddf242c215429a89505edcb5cda5  gcc/te
*** 65837,65842 ****
--- 69477,69483 ----
  397d2b0f63331be87ef1afb32fd6b7f9  gcc/testsuite/gcc.target/i386/pr102566-8b.c
  3481740b854e0ac8d553ec30a8e1e2f0  gcc/testsuite/gcc.target/i386/pr102566-9a.c
  c9acab92ab83b6832f10d5744bbbb9fc  gcc/testsuite/gcc.target/i386/pr102566-9b.c
+ fdab572bd18f9d25e8aa60a0fccbac08  gcc/testsuite/gcc.target/i386/pr102583.c
  53e87cba1a4282f640d05ef1fee359c4  gcc/testsuite/gcc.target/i386/pr102627.c
  34eb3ca8ee784a5cb3c2145b1609e105  gcc/testsuite/gcc.target/i386/pr102761.c
  94fbca2c3bfe03a7170b3a5271be0057  gcc/testsuite/gcc.target/i386/pr102811-1.c
*************** b1c903e2b37cfb9b2f060a009b3b4219  gcc/te
*** 65850,65855 ****
--- 69491,69502 ----
  a44a12bfc869662533e31a5506badb47  gcc/testsuite/gcc.target/i386/pr103069-4.c
  45c8bf67cae0f4d4cd78e718c7e3f2eb  gcc/testsuite/gcc.target/i386/pr103074.c
  3c046813d3772127c2fb4a817b636b16  gcc/testsuite/gcc.target/i386/pr103097.c
+ 5ca3ad8301019ec3134b62c9354d4773  gcc/testsuite/gcc.target/i386/pr103144-mul-1.c
+ b3bbd6ffde93886f859abdcc885dcd18  gcc/testsuite/gcc.target/i386/pr103144-mul-2.c
+ 618e2eb0d569357f9280d4d1d6908740  gcc/testsuite/gcc.target/i386/pr103144-neg-1.c
+ 96936763b96a30ad61e7cc0bfdf47519  gcc/testsuite/gcc.target/i386/pr103144-neg-2.c
+ 0bcf66b0bd59812ba14aa080080dd122  gcc/testsuite/gcc.target/i386/pr103144-shift-1.c
+ 4dfafb1513276f6dc72eacdc3803a4b7  gcc/testsuite/gcc.target/i386/pr103144-shift-2.c
  bbb49f0f7f2923e3bc0b023ec5585ef4  gcc/testsuite/gcc.target/i386/pr103151.c
  c7f53ed0d2b5ff62f54c98df873c7c68  gcc/testsuite/gcc.target/i386/pr103194-2.c
  aed17b3136a26972a669479a00fd2b6e  gcc/testsuite/gcc.target/i386/pr103194-3.c
*************** c0e2167ef56d8630d304b52813dd2572  gcc/te
*** 65860,65869 ****
  bcf207e15c0d5b9e3168e3c570bc4999  gcc/testsuite/gcc.target/i386/pr103205.c
  212321a633ef72354f108b8d3918603c  gcc/testsuite/gcc.target/i386/pr103275.c
  3ad820d9f385b5084912eee35d9461fb  gcc/testsuite/gcc.target/i386/pr103404.c
  11a2f1dceefd55efad1ceccf784fda57  gcc/testsuite/gcc.target/i386/pr103463-2.c
  eb497ce0de16af435c79a706e2627a74  gcc/testsuite/gcc.target/i386/pr103463.c
  766f504289bda21d3b887858becc90bc  gcc/testsuite/gcc.target/i386/pr103611-1.c
! f168547213dde204cd3dabfe1658ada2  gcc/testsuite/gcc.target/i386/pr103611-2.c
  2e18e3c6a972bff9a887cc8c3d7c6dfc  gcc/testsuite/gcc.target/i386/pr103753.c
  8617139572e784b5c0861936cb2b248e  gcc/testsuite/gcc.target/i386/pr103762-1a.c
  bafa333a176943cfc5ba57dcd53348db  gcc/testsuite/gcc.target/i386/pr103762-1b.c
--- 69507,69527 ----
  bcf207e15c0d5b9e3168e3c570bc4999  gcc/testsuite/gcc.target/i386/pr103205.c
  212321a633ef72354f108b8d3918603c  gcc/testsuite/gcc.target/i386/pr103275.c
  3ad820d9f385b5084912eee35d9461fb  gcc/testsuite/gcc.target/i386/pr103404.c
+ 93a80f0957a7ab302bc89298a34b73f3  gcc/testsuite/gcc.target/i386/pr103462-1.c
+ 894b627406e9c9888fb4697cb9bc455d  gcc/testsuite/gcc.target/i386/pr103462-2.c
+ 0e1f4e15f0cd7bf2621f1415e7a230bd  gcc/testsuite/gcc.target/i386/pr103462-3.c
+ 33d88da1981150ba24b0b8381bc7026e  gcc/testsuite/gcc.target/i386/pr103462-4.c
+ 4bc437b20774fc9161626185d0e385f4  gcc/testsuite/gcc.target/i386/pr103462-5.c
+ a7941a8c10628e683aa4b8dbb0134b2c  gcc/testsuite/gcc.target/i386/pr103462-6.c
  11a2f1dceefd55efad1ceccf784fda57  gcc/testsuite/gcc.target/i386/pr103463-2.c
  eb497ce0de16af435c79a706e2627a74  gcc/testsuite/gcc.target/i386/pr103463.c
+ c7a13783b61c463e7f0e646875b05abc  gcc/testsuite/gcc.target/i386/pr103541.c
+ c0b6dd1011a38d3083993133ef9df4c6  gcc/testsuite/gcc.target/i386/pr103559-1.c
+ 12c56087aaa9305eca4c5e79269e1b4f  gcc/testsuite/gcc.target/i386/pr103559-2.c
+ 0062b075ad5632f3c23a5fd51119960b  gcc/testsuite/gcc.target/i386/pr103559-3.c
+ 9018a3346bb6e5d30c1e3a933cb1d03c  gcc/testsuite/gcc.target/i386/pr103559-4.c
  766f504289bda21d3b887858becc90bc  gcc/testsuite/gcc.target/i386/pr103611-1.c
! 9111fe5ffd8cb7c81cbde87ce67df8ef  gcc/testsuite/gcc.target/i386/pr103611-2.c
  2e18e3c6a972bff9a887cc8c3d7c6dfc  gcc/testsuite/gcc.target/i386/pr103753.c
  8617139572e784b5c0861936cb2b248e  gcc/testsuite/gcc.target/i386/pr103762-1a.c
  bafa333a176943cfc5ba57dcd53348db  gcc/testsuite/gcc.target/i386/pr103762-1b.c
*************** cfdce4960f4e6412cc8da9af0d33f51c  gcc/te
*** 65913,65919 ****
  53c36359ec9f2e689c1bd9882aaa6e38  gcc/testsuite/gcc.target/i386/pr104188.c
  a4a622986785e6f70969c2a502ed82b5  gcc/testsuite/gcc.target/i386/pr104307.c
  63ce798253abf6c855847d44c00a0999  gcc/testsuite/gcc.target/i386/pr104362.c
! 578892a7046af90b3951860a49b0a583  gcc/testsuite/gcc.target/i386/pr104441-1a.c
  7847083e5431fa0d0f90a6966b944b11  gcc/testsuite/gcc.target/i386/pr104441-1b.c
  9db2b13a34fc86475d27728a925461c5  gcc/testsuite/gcc.target/i386/pr104446.c
  bf404f867e3472759c232458b7e6fb09  gcc/testsuite/gcc.target/i386/pr104447.c
--- 69571,69580 ----
  53c36359ec9f2e689c1bd9882aaa6e38  gcc/testsuite/gcc.target/i386/pr104188.c
  a4a622986785e6f70969c2a502ed82b5  gcc/testsuite/gcc.target/i386/pr104307.c
  63ce798253abf6c855847d44c00a0999  gcc/testsuite/gcc.target/i386/pr104362.c
! de5c0402e953a4791c9ebd5927b494ef  gcc/testsuite/gcc.target/i386/pr104371-1.c
! 9e15c481c855ada756c6eba2e513df9b  gcc/testsuite/gcc.target/i386/pr104371-2.c
! 280455c5b9367e3a1d330a905b2515dd  gcc/testsuite/gcc.target/i386/pr104375.c
! edf62206a68a4c58a0dec6fbdc090c31  gcc/testsuite/gcc.target/i386/pr104441-1a.c
  7847083e5431fa0d0f90a6966b944b11  gcc/testsuite/gcc.target/i386/pr104441-1b.c
  9db2b13a34fc86475d27728a925461c5  gcc/testsuite/gcc.target/i386/pr104446.c
  bf404f867e3472759c232458b7e6fb09  gcc/testsuite/gcc.target/i386/pr104447.c
*************** a92681d4c2c5095462e23684946fe9fd  gcc/te
*** 65927,65933 ****
--- 69588,69596 ----
  8d0bd7059c7beeb35df811f84735212e  gcc/testsuite/gcc.target/i386/pr104496.c
  6f32caf69432ac867dd42051bcfa22a8  gcc/testsuite/gcc.target/i386/pr104502.c
  2bb2b636832da9741d92fab7c29a5ffc  gcc/testsuite/gcc.target/i386/pr104551.c
+ 26a24eab4fc47eed9dfafe977229db80  gcc/testsuite/gcc.target/i386/pr104610.c
  21083ed0382a1c184689d3a9ee1bc7ee  gcc/testsuite/gcc.target/i386/pr104637.c
+ 1c3cbf71b8260b841b1623172a27e2dd  gcc/testsuite/gcc.target/i386/pr104658.c
  c10378a2d73ee5141b52663c27dd9ab3  gcc/testsuite/gcc.target/i386/pr104664.c
  4d27fd1176df4ee229e9b963da7d3774  gcc/testsuite/gcc.target/i386/pr104666.c
  c0361c1e4d91a839c96bfc8c71f15139  gcc/testsuite/gcc.target/i386/pr104674.c
*************** bce925bcc4824ac269c7eff429880bdc  gcc/te
*** 65937,65945 ****
  958bafe3ee4e146ce118fa1c0800c61b  gcc/testsuite/gcc.target/i386/pr104704-4.c
  ec017ce1f8cdd75815b576c125ee5925  gcc/testsuite/gcc.target/i386/pr104704-5.c
  ad94da4af150d37dc4fa0f7e9ab83483  gcc/testsuite/gcc.target/i386/pr104704-6.c
! d840c9df3e338f4787efa05c14216739  gcc/testsuite/gcc.target/i386/pr104732.c
  858d73b3a6b729d83724be36c5329db8  gcc/testsuite/gcc.target/i386/pr104779.c
  69c507a5894d6d6b62f48b087adf9652  gcc/testsuite/gcc.target/i386/pr104890.c
  037a3d7a3f3b35e995ffa489f29e6e01  gcc/testsuite/gcc.target/i386/pr104961.c
  8aea430f8fa49eb985ac268facb6294c  gcc/testsuite/gcc.target/i386/pr104963.c
  a64b8516e04de39ddebcd66dc046d450  gcc/testsuite/gcc.target/i386/pr104971.c
--- 69600,69610 ----
  958bafe3ee4e146ce118fa1c0800c61b  gcc/testsuite/gcc.target/i386/pr104704-4.c
  ec017ce1f8cdd75815b576c125ee5925  gcc/testsuite/gcc.target/i386/pr104704-5.c
  ad94da4af150d37dc4fa0f7e9ab83483  gcc/testsuite/gcc.target/i386/pr104704-6.c
! 47f96a125eb63c87e83e125c74a8b3fa  gcc/testsuite/gcc.target/i386/pr104732.c
  858d73b3a6b729d83724be36c5329db8  gcc/testsuite/gcc.target/i386/pr104779.c
  69c507a5894d6d6b62f48b087adf9652  gcc/testsuite/gcc.target/i386/pr104890.c
+ 846608e86e142978de0086783de6c784  gcc/testsuite/gcc.target/i386/pr104915-vmovd.c
+ 32187b31df5447878a6700728bf70408  gcc/testsuite/gcc.target/i386/pr104915-vmovw.c
  037a3d7a3f3b35e995ffa489f29e6e01  gcc/testsuite/gcc.target/i386/pr104961.c
  8aea430f8fa49eb985ac268facb6294c  gcc/testsuite/gcc.target/i386/pr104963.c
  a64b8516e04de39ddebcd66dc046d450  gcc/testsuite/gcc.target/i386/pr104971.c
*************** d397ad2737d73d869e11d2b504e795cd  gcc/te
*** 65951,65971 ****
  a892cf5449c572594d9ac500ec2178bc  gcc/testsuite/gcc.target/i386/pr105000-2.c
  6c6335b2ca1f773cd45cd27ad0d7a133  gcc/testsuite/gcc.target/i386/pr105000-3.c
  898f47e6fdcddbb3b8671b76b32b4b68  gcc/testsuite/gcc.target/i386/pr105000-4.c
! e3cf12a5755f26431dc36e4c7edc3345  gcc/testsuite/gcc.target/i386/pr105032.c
  21eae05c7058c12d267eef32d269e06d  gcc/testsuite/gcc.target/i386/pr105066.c
  4e4bf1a2c07ae507bdb50bda9764c54c  gcc/testsuite/gcc.target/i386/pr105068.c
  3de9ba59994fd09bad053a28eecbc68d  gcc/testsuite/gcc.target/i386/pr105123.c
  55393e491b95779e32dd8bc6d909a4fc  gcc/testsuite/gcc.target/i386/pr105139.c
  4ae7c694596b4d8b84d1d2e01c54c21c  gcc/testsuite/gcc.target/i386/pr105253.c
  dfc3f83604e6883a02d821c48a3ad632  gcc/testsuite/gcc.target/i386/pr105338.c
  2a5473f87bb2410849bfe5418a5abeb6  gcc/testsuite/gcc.target/i386/pr105367.c
  eeeee8caa23185d1a21ba6680503f028  gcc/testsuite/gcc.target/i386/pr105711.c
  840fb83f35546d6c20183029a35d1f95  gcc/testsuite/gcc.target/i386/pr105951-1.c
  2ff5f727d612ee865a9f68d980e8cb80  gcc/testsuite/gcc.target/i386/pr105951-2.c
  055fbfc14df0687f007fcf91e74339d3  gcc/testsuite/gcc.target/i386/pr105960.c
  33c7b4aca18d9f888a3862033b8e2150  gcc/testsuite/gcc.target/i386/pr105965.c
  afe42f2264a7583bee62a6e718faeef5  gcc/testsuite/gcc.target/i386/pr105970.c
  7cb073c67b48920056a7708378cc97d8  gcc/testsuite/gcc.target/i386/pr106122.c
  304b7d185da41754f69656f5bfa7d508  gcc/testsuite/gcc.target/i386/pr11001-memcpy-1.c
  7dbe55f1460795545dd744807466a430  gcc/testsuite/gcc.target/i386/pr11001-memcpy-2.c
  cbe58ae1efc3b97c1019a430e1fedfcb  gcc/testsuite/gcc.target/i386/pr11001-memcpy-3.c
--- 69616,69760 ----
  a892cf5449c572594d9ac500ec2178bc  gcc/testsuite/gcc.target/i386/pr105000-2.c
  6c6335b2ca1f773cd45cd27ad0d7a133  gcc/testsuite/gcc.target/i386/pr105000-3.c
  898f47e6fdcddbb3b8671b76b32b4b68  gcc/testsuite/gcc.target/i386/pr105000-4.c
! 6835f42a37c0159616cc082bd3c33721  gcc/testsuite/gcc.target/i386/pr105032.c
! 3d49336dd9549859bf4dff672a2596e2  gcc/testsuite/gcc.target/i386/pr105033.c
  21eae05c7058c12d267eef32d269e06d  gcc/testsuite/gcc.target/i386/pr105066.c
  4e4bf1a2c07ae507bdb50bda9764c54c  gcc/testsuite/gcc.target/i386/pr105068.c
+ 0c5dc04a569067f4bb6a3b32f7b29051  gcc/testsuite/gcc.target/i386/pr105072.c
+ 75e6ecacd91c5bcc9a019f2c002c382b  gcc/testsuite/gcc.target/i386/pr105079.c
  3de9ba59994fd09bad053a28eecbc68d  gcc/testsuite/gcc.target/i386/pr105123.c
  55393e491b95779e32dd8bc6d909a4fc  gcc/testsuite/gcc.target/i386/pr105139.c
  4ae7c694596b4d8b84d1d2e01c54c21c  gcc/testsuite/gcc.target/i386/pr105253.c
  dfc3f83604e6883a02d821c48a3ad632  gcc/testsuite/gcc.target/i386/pr105338.c
+ 011c836b7c20d989a4885bbe1ca245b7  gcc/testsuite/gcc.target/i386/pr105354-1.c
+ af9539d60e2dd11a0e3e3f8e78f0e9ae  gcc/testsuite/gcc.target/i386/pr105354-2.c
  2a5473f87bb2410849bfe5418a5abeb6  gcc/testsuite/gcc.target/i386/pr105367.c
+ 3e59623d82099b9b3e3d1ea99c8157e9  gcc/testsuite/gcc.target/i386/pr105493.c
+ faa2789fb55d0b7bb1e08f48501c285d  gcc/testsuite/gcc.target/i386/pr105513-1.c
+ db0abcfd3877faa33b33aa19a57352a5  gcc/testsuite/gcc.target/i386/pr105554.c
+ abdcac20a85ff356a7103baf30c2cad2  gcc/testsuite/gcc.target/i386/pr105587.c
+ 1c991f69922d2409520cabb4c80c0b51  gcc/testsuite/gcc.target/i386/pr105624.c
+ d3054d00843266f8c2d242966d899040  gcc/testsuite/gcc.target/i386/pr105668.c
  eeeee8caa23185d1a21ba6680503f028  gcc/testsuite/gcc.target/i386/pr105711.c
+ a498301dfaa6c0008b4d07706c9a06e2  gcc/testsuite/gcc.target/i386/pr105735-1.c
+ 135d7d6c0eb77bfdf1602a21d85cd598  gcc/testsuite/gcc.target/i386/pr105735-2.c
+ ea3f5b1a8dc1f2a75525c32a752e7f2e  gcc/testsuite/gcc.target/i386/pr105778.c
+ 8217651f44dab90cf8e1033c97295008  gcc/testsuite/gcc.target/i386/pr105791.c
+ b4224e20d05d6c8f5776e96a70593e71  gcc/testsuite/gcc.target/i386/pr105854.c
+ 9d3f7a861c6c4329c4fcd07f3748db1c  gcc/testsuite/gcc.target/i386/pr105927.c
  840fb83f35546d6c20183029a35d1f95  gcc/testsuite/gcc.target/i386/pr105951-1.c
  2ff5f727d612ee865a9f68d980e8cb80  gcc/testsuite/gcc.target/i386/pr105951-2.c
  055fbfc14df0687f007fcf91e74339d3  gcc/testsuite/gcc.target/i386/pr105960.c
  33c7b4aca18d9f888a3862033b8e2150  gcc/testsuite/gcc.target/i386/pr105965.c
  afe42f2264a7583bee62a6e718faeef5  gcc/testsuite/gcc.target/i386/pr105970.c
+ ac30bfc84df8bff1364a23ac270fc7b3  gcc/testsuite/gcc.target/i386/pr105993.c
+ 7cbb1a6d5b93724203dfc19ad14d2fff  gcc/testsuite/gcc.target/i386/pr106010-1a.c
+ 5dbc7fcf49eb54c83c8aa58d09e2ff9a  gcc/testsuite/gcc.target/i386/pr106010-1b.c
+ ee1149891f3925c80655bd1cdc6b8a17  gcc/testsuite/gcc.target/i386/pr106010-1c.c
+ 132ff9502f39a8d3477bfbfceed9e122  gcc/testsuite/gcc.target/i386/pr106010-2a.c
+ 8b55a4ee4c9892bdde993b760eee5bee  gcc/testsuite/gcc.target/i386/pr106010-2b.c
+ a8607a96d2753da5968ae1ea10183e03  gcc/testsuite/gcc.target/i386/pr106010-2c.c
+ 0557f5d57e73e954a252ffb370cf2203  gcc/testsuite/gcc.target/i386/pr106010-3a.c
+ 90318d3b83aa67bb85d1f19df835c349  gcc/testsuite/gcc.target/i386/pr106010-3b.c
+ 1953496acd538155e30b9c6fba1a929f  gcc/testsuite/gcc.target/i386/pr106010-3c.c
+ d3c520460bae418462e4b3b48722518b  gcc/testsuite/gcc.target/i386/pr106010-4a.c
+ 5d8de20f5e889a0b32f31e92b35aad6e  gcc/testsuite/gcc.target/i386/pr106010-4b.c
+ 49f90e3f4a5df9bf10243a67f09f8e5e  gcc/testsuite/gcc.target/i386/pr106010-4c.c
+ e023ab4a1c0747c02d8effc26f3393b0  gcc/testsuite/gcc.target/i386/pr106010-5a.c
+ 7d7f2b6bf95723231ed76d61eef90fe2  gcc/testsuite/gcc.target/i386/pr106010-5b.c
+ 972e539d02760aa5b2ae41827fdac3b8  gcc/testsuite/gcc.target/i386/pr106010-5c.c
+ 18563b4c68f658132e83d7829327f47b  gcc/testsuite/gcc.target/i386/pr106010-6a.c
+ cdc1238924ddc4849e17fa7a4f103cd1  gcc/testsuite/gcc.target/i386/pr106010-6b.c
+ 305edd413996b362318b95f9f0ec45ee  gcc/testsuite/gcc.target/i386/pr106010-6c.c
+ 8ad50da6f85dd19d3f04e6f43aa0e9eb  gcc/testsuite/gcc.target/i386/pr106010-7a.c
+ 0fd8f64a290db0ac7388d7eea0833c34  gcc/testsuite/gcc.target/i386/pr106010-7b.c
+ 803e50f5cdfb7df0e51a402e325724ce  gcc/testsuite/gcc.target/i386/pr106010-7c.c
+ fd58df44b6529e0ce5a9fd01402f7f76  gcc/testsuite/gcc.target/i386/pr106010-8a.c
+ 7a4a3961a6e6a6b4d06661aa08d9d406  gcc/testsuite/gcc.target/i386/pr106010-8b.c
+ f222713f206cec358d69d31c959ed703  gcc/testsuite/gcc.target/i386/pr106010-8c.c
+ 6145941422f07b303fb138fc5b1073e4  gcc/testsuite/gcc.target/i386/pr106010-9a.c
+ 998ed8793869bc8b41b5c9099f797a1d  gcc/testsuite/gcc.target/i386/pr106010-9b.c
+ c23e5f5ec6b023aacfed790b5837e59b  gcc/testsuite/gcc.target/i386/pr106010-9c.c
+ 308d4fcebebd73d03fb10cc257ed6020  gcc/testsuite/gcc.target/i386/pr106010-9d.c
+ 8e4def2e0504b6d0b2eea676ba003dd5  gcc/testsuite/gcc.target/i386/pr106022-1.c
+ 3ad6741115454a8eda70444f864c265b  gcc/testsuite/gcc.target/i386/pr106022-2.c
+ 675fbe2579363a7272905784fd3f0680  gcc/testsuite/gcc.target/i386/pr106022-3.c
+ bbd4316e9550f452c0b86cf4e3ecf4a8  gcc/testsuite/gcc.target/i386/pr106022-4.c
+ 324d64685ac24a3673ae04df4a898f6b  gcc/testsuite/gcc.target/i386/pr106038-1.c
+ e1526b4760d054549a455444c35997de  gcc/testsuite/gcc.target/i386/pr106053.c
+ a81b000946ef8fad4e273c7209987f99  gcc/testsuite/gcc.target/i386/pr106095.c
  7cb073c67b48920056a7708378cc97d8  gcc/testsuite/gcc.target/i386/pr106122.c
+ 2d54c8c3f54676aee89848132817019f  gcc/testsuite/gcc.target/i386/pr106231-1.c
+ 3868cfb4a47544faf495a6f775077677  gcc/testsuite/gcc.target/i386/pr106231-2.c
+ 819678158c85d77cc74b35cd5756b035  gcc/testsuite/gcc.target/i386/pr106273.c
+ b908829ba1abd899d74b7494ef7f84c8  gcc/testsuite/gcc.target/i386/pr106303.c
+ 8e04a4c455c50be91bd44e269c69ba78  gcc/testsuite/gcc.target/i386/pr106322.c
+ d73eb1730ba03838f067f7d89538ec5f  gcc/testsuite/gcc.target/i386/pr106347.c
+ 8b2a2d866f1cca03bdf1c6e4549342c7  gcc/testsuite/gcc.target/i386/pr106450.c
+ 1b9e10a79afe3d75e16c7e53f14d3a61  gcc/testsuite/gcc.target/i386/pr106453.c
+ 6b7de3fd1c9dbe08e19184ca06249a0c  gcc/testsuite/gcc.target/i386/pr106481.c
+ 0b24757c68eb2a3daa238bf239c21f77  gcc/testsuite/gcc.target/i386/pr106577.c
+ d70147351889ff7692e05953058680aa  gcc/testsuite/gcc.target/i386/pr106704.c
+ ea97a05184ec916865fdbd1647d696d2  gcc/testsuite/gcc.target/i386/pr106707.c
+ d2fddfa7bc1e37a2ad1ca1d7acb2872b  gcc/testsuite/gcc.target/i386/pr106742.c
+ 732eb589da116456399d4986f2bbee2c  gcc/testsuite/gcc.target/i386/pr106746.c
+ 554ff25f596284886f56c2aaa02f626a  gcc/testsuite/gcc.target/i386/pr106748.c
+ 1ba09abc788e14765d429f80f97f5eee  gcc/testsuite/gcc.target/i386/pr106905.c
+ f805b23a7f2175af94df7507c4e61d36  gcc/testsuite/gcc.target/i386/pr106910-1.c
+ 0c9cf96197202ea56a56b353995f0f07  gcc/testsuite/gcc.target/i386/pr106933-1.c
+ ae1d9a465c5a85bd604ce1465bcf1aa4  gcc/testsuite/gcc.target/i386/pr106933-2.c
+ acf19b986d49be7e37d7e04397ccc58f  gcc/testsuite/gcc.target/i386/pr106959-1.c
+ 6fd3d6be16cd52e90f9d33c5280c6d17  gcc/testsuite/gcc.target/i386/pr106959-2.c
+ 18e33bd1504e2b9ed0e66179031590f6  gcc/testsuite/gcc.target/i386/pr106959-3.c
+ a4ade66456ceb82af20435e9dcf75a5e  gcc/testsuite/gcc.target/i386/pr106963.c
+ a6d6cc09f712eb0d5c30d8c6bfd7fe4e  gcc/testsuite/gcc.target/i386/pr106994.c
+ 5a1d9db6cf3904e8bb2c665002bf8422  gcc/testsuite/gcc.target/i386/pr107055.c
+ 7d7df678172356bc247923ffad2e2caf  gcc/testsuite/gcc.target/i386/pr107057.c
+ b4c76c40ecd921fd705ccb0caf7bcc7e  gcc/testsuite/gcc.target/i386/pr107093.c
+ eaaa31c47163e310ff84038671b83217  gcc/testsuite/gcc.target/i386/pr107172.c
+ ef78793d46f8e457dbd4a2bb90422566  gcc/testsuite/gcc.target/i386/pr107185.c
+ a1a323ccbaff417b65ffa44d58cff85b  gcc/testsuite/gcc.target/i386/pr107261.c
+ 9d91b164a4b311e663b49e1b224fb89b  gcc/testsuite/gcc.target/i386/pr107271.c
+ cdeea0aa2bbf545e490be76ecf1ae59a  gcc/testsuite/gcc.target/i386/pr107304.c
+ 568fd8d874c6aaa98b459e4a4b02b865  gcc/testsuite/gcc.target/i386/pr107312.c
+ a4658673585e066c5824fc2118bb4c52  gcc/testsuite/gcc.target/i386/pr107322.c
+ e2d688af45e4fff4045c47d283b9a3f3  gcc/testsuite/gcc.target/i386/pr107540.c
+ 1617c3b5060bd03bff4dcb9daf566ca3  gcc/testsuite/gcc.target/i386/pr107546.c
+ 2d88490404fbac5825875fad752f5d82  gcc/testsuite/gcc.target/i386/pr107548-1.c
+ 4e7e20134ea300ae35ab595f7f5d3a40  gcc/testsuite/gcc.target/i386/pr107548-2.c
+ bb98e7ff5bd1a22b1cff8247bea15c1c  gcc/testsuite/gcc.target/i386/pr107627-1.c
+ b3fc3daadd1cc019e966631ca9efbd21  gcc/testsuite/gcc.target/i386/pr107627-2.c
+ 3a01bbbb1ebed2482ae6b824f44ebc43  gcc/testsuite/gcc.target/i386/pr107627-3.c
+ 935fe404efd7e16f3f26edab86e26b6b  gcc/testsuite/gcc.target/i386/pr107627-4.c
+ 7634a8c29f899f66c003a8fee07bbe89  gcc/testsuite/gcc.target/i386/pr107628.c
+ 793166a4646d4f87faa84df62cc37760  gcc/testsuite/gcc.target/i386/pr107647.c
+ 972837aa3a25d88acfe4af629c37d530  gcc/testsuite/gcc.target/i386/pr107863.c
+ cff6d762589be31cfb42f0b3f5f9c273  gcc/testsuite/gcc.target/i386/pr107934.c
+ 48075294edf8cd1a881d62641b64bf53  gcc/testsuite/gcc.target/i386/pr107969.c
+ 78faa0a79d1b2ebb67bf0f082827008d  gcc/testsuite/gcc.target/i386/pr107970.c
+ 7db7bb050758aafe3487678dbc26ef13  gcc/testsuite/gcc.target/i386/pr107993.c
+ 9602c2180e135dfe19b67f07d8154d7b  gcc/testsuite/gcc.target/i386/pr108044-1.c
+ 39e261aa9b0ce7e82ad3fd98dfc5c372  gcc/testsuite/gcc.target/i386/pr108044-2.c
+ 400805db83bda48827c8c48b8bfbc84c  gcc/testsuite/gcc.target/i386/pr108044-3.c
+ b9982470b58539c17ecc63d9b0bfa100  gcc/testsuite/gcc.target/i386/pr108044-4.c
+ f93f1f3ff8581b00136eccb401d0e142  gcc/testsuite/gcc.target/i386/pr108292.c
+ 1246612a5c47e50325bced1167f36a79  gcc/testsuite/gcc.target/i386/pr108436.c
+ 7fc748dc706bfe536df57132aa1fc2b1  gcc/testsuite/gcc.target/i386/pr108516-1.c
+ 3d9ce8d9fde5a211bf8aeb8e5e2d87b9  gcc/testsuite/gcc.target/i386/pr108516-2.c
+ 6d48857e6500359b1e3e69289a21f6cc  gcc/testsuite/gcc.target/i386/pr108724.c
+ f41bcc9cec5b788807bebdd7850d9984  gcc/testsuite/gcc.target/i386/pr108774.c
+ 635557f7ce6a4e98cde86d132129bca7  gcc/testsuite/gcc.target/i386/pr108831-1.c
+ 2a282149878baf27ad80c5fbcc6663fc  gcc/testsuite/gcc.target/i386/pr108831-2.c
+ 19d501a9e83dcf447b7a20813cd5c63e  gcc/testsuite/gcc.target/i386/pr108832.c
+ 1675944d49d0d21e6ed54ac1de036ca6  gcc/testsuite/gcc.target/i386/pr109052-2.c
+ 06350ebd5780be04cce09335e3042ce5  gcc/testsuite/gcc.target/i386/pr109052.c
+ 4951625cf53f5113b1aa560d5d82ceb2  gcc/testsuite/gcc.target/i386/pr109109-1.c
+ b1a0a8623e789df1f0aa53476ec194b6  gcc/testsuite/gcc.target/i386/pr109109-2.c
+ 55bf808880a186f7e91325a07a3c8b97  gcc/testsuite/gcc.target/i386/pr109117-1.c
+ 42289d7c9bc3961bee61677fd75996d4  gcc/testsuite/gcc.target/i386/pr109137.c
+ a643678ff500c5823e0dfd6f13a78767  gcc/testsuite/gcc.target/i386/pr109276.c
+ 0c97b030ebc254d658a2a94036b21e96  gcc/testsuite/gcc.target/i386/pr109362.c
+ 53f3c713c5195f8b1c6f3756b973b949  gcc/testsuite/gcc.target/i386/pr109458.c
  304b7d185da41754f69656f5bfa7d508  gcc/testsuite/gcc.target/i386/pr11001-memcpy-1.c
  7dbe55f1460795545dd744807466a430  gcc/testsuite/gcc.target/i386/pr11001-memcpy-2.c
  cbe58ae1efc3b97c1019a430e1fedfcb  gcc/testsuite/gcc.target/i386/pr11001-memcpy-3.c
*************** f99f88a6e994ad6e55e065e41bc58f8f  gcc/te
*** 65983,65990 ****
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
  6a09a31c8162440929d99a05b6983c5a  gcc/testsuite/gcc.target/i386/pr14552.c
! 05ac11ac7684ec1579591c6e6064a185  gcc/testsuite/gcc.target/i386/pr15184-1.c
! 97b155f0e8cf769840b251ea0c776079  gcc/testsuite/gcc.target/i386/pr15184-2.c
  d4aa6113ea62bc36639d93e1e44a1210  gcc/testsuite/gcc.target/i386/pr17390.c
  2e4c03f3bc4f33ebf1fe63318811709f  gcc/testsuite/gcc.target/i386/pr17692.c
  d3dae857859b68227163d1fc45aaf67c  gcc/testsuite/gcc.target/i386/pr18041-1.c
--- 69772,69779 ----
  9a752a4b3b77930d91d3c8b0c8897b90  gcc/testsuite/gcc.target/i386/pr13685.c
  31ead0ee84b382ba03e3561931bc6e40  gcc/testsuite/gcc.target/i386/pr14289-1.c
  6a09a31c8162440929d99a05b6983c5a  gcc/testsuite/gcc.target/i386/pr14552.c
! e0e0a92c78bf564587af65728ae84707  gcc/testsuite/gcc.target/i386/pr15184-1.c
! f2b5aa949434305bb4f137d654b5f62e  gcc/testsuite/gcc.target/i386/pr15184-2.c
  d4aa6113ea62bc36639d93e1e44a1210  gcc/testsuite/gcc.target/i386/pr17390.c
  2e4c03f3bc4f33ebf1fe63318811709f  gcc/testsuite/gcc.target/i386/pr17692.c
  d3dae857859b68227163d1fc45aaf67c  gcc/testsuite/gcc.target/i386/pr18041-1.c
*************** e99eb064d503f38b5a9c419915b38ae9  gcc/te
*** 66016,66022 ****
  d0e5cc510ff9f517c83e2f7086ecb411  gcc/testsuite/gcc.target/i386/pr24178.c
  7757504bdc3b5bd70de1a5960fb48a38  gcc/testsuite/gcc.target/i386/pr24306.c
  32fe0462a1b53d3fc2901ef49c868f00  gcc/testsuite/gcc.target/i386/pr24315.c
! 0f58cd327f51c6024b5baa09e289c4e1  gcc/testsuite/gcc.target/i386/pr24414.c
  7374a381241b2f4065e5ce84cfc03f77  gcc/testsuite/gcc.target/i386/pr25196.c
  e2e1fa15682cd42c52206538adc05f64  gcc/testsuite/gcc.target/i386/pr25254.c
  303aec7f9e7bd15228b804c19e082f1e  gcc/testsuite/gcc.target/i386/pr25293.c
--- 69805,69811 ----
  d0e5cc510ff9f517c83e2f7086ecb411  gcc/testsuite/gcc.target/i386/pr24178.c
  7757504bdc3b5bd70de1a5960fb48a38  gcc/testsuite/gcc.target/i386/pr24306.c
  32fe0462a1b53d3fc2901ef49c868f00  gcc/testsuite/gcc.target/i386/pr24315.c
! c3ab5fa25dbf4ad40cc34b4554819df2  gcc/testsuite/gcc.target/i386/pr24414.c
  7374a381241b2f4065e5ce84cfc03f77  gcc/testsuite/gcc.target/i386/pr25196.c
  e2e1fa15682cd42c52206538adc05f64  gcc/testsuite/gcc.target/i386/pr25254.c
  303aec7f9e7bd15228b804c19e082f1e  gcc/testsuite/gcc.target/i386/pr25293.c
*************** e9e5f9369a4a36e10da6f34dbcd56fe6  gcc/te
*** 66031,66037 ****
  eefea3f3d3ef9a6ff440c58ee4f46894  gcc/testsuite/gcc.target/i386/pr27696.c
  184de3fa2cdd678f427a91639a253afa  gcc/testsuite/gcc.target/i386/pr27790.c
  21aaf61df4c93c03c7bc7996e2935b31  gcc/testsuite/gcc.target/i386/pr27827.c
! de8e624a2623812deb967659299f9173  gcc/testsuite/gcc.target/i386/pr27971.c
  84c85fbc1a90d87b6650806261fe6ecd  gcc/testsuite/gcc.target/i386/pr28839.c
  3aa9b823d9d01f15098aa3ea4e9bace9  gcc/testsuite/gcc.target/i386/pr28946.c
  11491d553f7be969ca12f9fc5f13efe4  gcc/testsuite/gcc.target/i386/pr29978.c
--- 69820,69826 ----
  eefea3f3d3ef9a6ff440c58ee4f46894  gcc/testsuite/gcc.target/i386/pr27696.c
  184de3fa2cdd678f427a91639a253afa  gcc/testsuite/gcc.target/i386/pr27790.c
  21aaf61df4c93c03c7bc7996e2935b31  gcc/testsuite/gcc.target/i386/pr27827.c
! 24630e3b4ca1d43364c0ffad16c6de26  gcc/testsuite/gcc.target/i386/pr27971.c
  84c85fbc1a90d87b6650806261fe6ecd  gcc/testsuite/gcc.target/i386/pr28839.c
  3aa9b823d9d01f15098aa3ea4e9bace9  gcc/testsuite/gcc.target/i386/pr28946.c
  11491d553f7be969ca12f9fc5f13efe4  gcc/testsuite/gcc.target/i386/pr29978.c
*************** aa073f4162ffad443bb245d594813932  gcc/te
*** 66216,66221 ****
--- 70005,70011 ----
  f959f9b7f68ec9300176ea5f3b5b723a  gcc/testsuite/gcc.target/i386/pr43524.c
  1066419aa0129e03db1a00505876de93  gcc/testsuite/gcc.target/i386/pr43528.c
  58183b44c704bf8f6adb8c75a84488d9  gcc/testsuite/gcc.target/i386/pr43546.c
+ 8fd04955fb3d4e10718dce3149a58f48  gcc/testsuite/gcc.target/i386/pr43618-1.c
  5635dcc46744c1f49edb4c954be65a2a  gcc/testsuite/gcc.target/i386/pr43638.c
  3ab94ca7094b4b2701ceb9a87bd5055b  gcc/testsuite/gcc.target/i386/pr43653.c
  1e6cfad2ee7ef499c25f339998f4e63f  gcc/testsuite/gcc.target/i386/pr43662.c
*************** f9d970a48c4311b69ea7b5bb0d50ea87  gcc/te
*** 66305,66310 ****
--- 70095,70101 ----
  3b16c13dcc55d512b3df8c314112d62c  gcc/testsuite/gcc.target/i386/pr47780.c
  eb8781125f66963c89df53744574f73f  gcc/testsuite/gcc.target/i386/pr47800.c
  6b58712d049f5aebed6ffb31fa93e896  gcc/testsuite/gcc.target/i386/pr47809.c
+ d2691558e8bbc67104040f378d4e510a  gcc/testsuite/gcc.target/i386/pr47949.c
  22af252dce69896e7d9263c7f2f6e69e  gcc/testsuite/gcc.target/i386/pr48037-1.c
  90439fe72c685b2a254023fc3941adcb  gcc/testsuite/gcc.target/i386/pr48084-1.c
  6e327d8c1d1bdc99f01d1d41d2a245e2  gcc/testsuite/gcc.target/i386/pr48084-2.c
*************** aff7074250516571a07457eace3f2639  gcc/te
*** 66346,66351 ****
--- 70137,70143 ----
  90079b4ea4763efde34a2a2bd21612b4  gcc/testsuite/gcc.target/i386/pr51235.c
  e2c5c9c01d62f181543c46c15e625efc  gcc/testsuite/gcc.target/i386/pr51236.c
  cc3feb019a23f31f22f8d90ea35306a2  gcc/testsuite/gcc.target/i386/pr51393.c
+ 5127dab483b6f86a4dd94731958d0698  gcc/testsuite/gcc.target/i386/pr51954.c
  feae34d686df3d5dc6348f1e08292d5f  gcc/testsuite/gcc.target/i386/pr51987.c
  28bbe8fb8e03847360d72e655a04541c  gcc/testsuite/gcc.target/i386/pr52146.c
  fa01242d5badde4691345c598d6cad72  gcc/testsuite/gcc.target/i386/pr52171.c
*************** ae96f2a6ec3876560fe977282760bda7  gcc/te
*** 66363,66368 ****
--- 70155,70164 ----
  908f895d749fbe4b41db70b705b92270  gcc/testsuite/gcc.target/i386/pr52883.c
  7cd607f59acbf5495f51e7f583bdfaaf  gcc/testsuite/gcc.target/i386/pr53249.c
  a4f58bfe349afe627603d04111cd1482  gcc/testsuite/gcc.target/i386/pr53315.c
+ 3ed04637d10b664531e7242ae0a0f8fa  gcc/testsuite/gcc.target/i386/pr53346-1.c
+ f294a69da13bda3905c78218e108da3c  gcc/testsuite/gcc.target/i386/pr53346-2.c
+ fcd6d38bfb18ecc06f60c2a9bb712901  gcc/testsuite/gcc.target/i386/pr53346-3.c
+ 8f1cabb778006c3077139c8f6157e4a1  gcc/testsuite/gcc.target/i386/pr53346-4.c
  f690a14b83beca2838adf0ade3c944fd  gcc/testsuite/gcc.target/i386/pr53366-1.c
  50a8ca388b02fdc98188b970e4718ea5  gcc/testsuite/gcc.target/i386/pr53366-2.c
  022a1155aa8c3129002163472c77af90  gcc/testsuite/gcc.target/i386/pr53383-1.c
*************** fd40b61a82fba3ab0c6bb50cfedfb117  gcc/te
*** 66373,66378 ****
--- 70169,70179 ----
  45a3485d7b45197693c5679d3215b6ce  gcc/testsuite/gcc.target/i386/pr53416.c
  438890bd8588325bfdd31602ae74f65c  gcc/testsuite/gcc.target/i386/pr53425-1.c
  384ba022d2854e096a4ab0f145961c51  gcc/testsuite/gcc.target/i386/pr53425-2.c
+ 172835d4d3a830c063864517d916faad  gcc/testsuite/gcc.target/i386/pr53533-1.c
+ 925203ac5caff2b16cefcd6ff6dc58af  gcc/testsuite/gcc.target/i386/pr53533-2.c
+ a3732fbf175290a36fc0d93f0595076c  gcc/testsuite/gcc.target/i386/pr53533-3.c
+ b781be4db7f09c50f9a239720bb47251  gcc/testsuite/gcc.target/i386/pr53533-4.c
+ a9ae3f8158d6dabac2309c51e13115c1  gcc/testsuite/gcc.target/i386/pr53533-5.c
  b39743561f1aade37b33835b241fb062  gcc/testsuite/gcc.target/i386/pr53623.c
  6c796e63203758ca42629846494a63cc  gcc/testsuite/gcc.target/i386/pr53652-1.c
  179de2cb7520586109384b9edf5a9b30  gcc/testsuite/gcc.target/i386/pr53698.c
*************** c502c143bfe08e286784446e3a530233  gcc/te
*** 66395,66405 ****
  915f45d04c9dfc17ee40450f653a11f7  gcc/testsuite/gcc.target/i386/pr54855-12.c
  306948b0d5b1130b66d0cea7fca028f5  gcc/testsuite/gcc.target/i386/pr54855-13.c
  e1f8fefaf23ab23b68f6b9e333156fbd  gcc/testsuite/gcc.target/i386/pr54855-2.c
! e13bc68c6f17bd4eaa19cccef521eb76  gcc/testsuite/gcc.target/i386/pr54855-3.c
  6c8a61e66aa69d7b21476fdde3fc61e9  gcc/testsuite/gcc.target/i386/pr54855-4.c
  8454659f5121819b6572e5c62d9da410  gcc/testsuite/gcc.target/i386/pr54855-5.c
  4a710e105a13bc0c780bd4a46bd28238  gcc/testsuite/gcc.target/i386/pr54855-6.c
! b60e5de60a2f034253dfa6d657743b1f  gcc/testsuite/gcc.target/i386/pr54855-7.c
  44e6d3206f845c1ad1a6581540a52f97  gcc/testsuite/gcc.target/i386/pr54855-8.c
  508a976f0ef4831a104047d6425744ca  gcc/testsuite/gcc.target/i386/pr54855-9.c
  f9b778e3b98dfbae81a8d9edc0e6e7f0  gcc/testsuite/gcc.target/i386/pr55049-1.c
--- 70196,70206 ----
  915f45d04c9dfc17ee40450f653a11f7  gcc/testsuite/gcc.target/i386/pr54855-12.c
  306948b0d5b1130b66d0cea7fca028f5  gcc/testsuite/gcc.target/i386/pr54855-13.c
  e1f8fefaf23ab23b68f6b9e333156fbd  gcc/testsuite/gcc.target/i386/pr54855-2.c
! c5180162b29d54e400e719e562e3e7b2  gcc/testsuite/gcc.target/i386/pr54855-3.c
  6c8a61e66aa69d7b21476fdde3fc61e9  gcc/testsuite/gcc.target/i386/pr54855-4.c
  8454659f5121819b6572e5c62d9da410  gcc/testsuite/gcc.target/i386/pr54855-5.c
  4a710e105a13bc0c780bd4a46bd28238  gcc/testsuite/gcc.target/i386/pr54855-6.c
! eaa8b0340911db238f1a4cf7122772b7  gcc/testsuite/gcc.target/i386/pr54855-7.c
  44e6d3206f845c1ad1a6581540a52f97  gcc/testsuite/gcc.target/i386/pr54855-8.c
  508a976f0ef4831a104047d6425744ca  gcc/testsuite/gcc.target/i386/pr54855-9.c
  f9b778e3b98dfbae81a8d9edc0e6e7f0  gcc/testsuite/gcc.target/i386/pr55049-1.c
*************** eb594eead359af59ccf1611376ca0e06  gcc/te
*** 66425,66430 ****
--- 70226,70232 ----
  3e411acf0cb67b1e2dfd7386904224ad  gcc/testsuite/gcc.target/i386/pr55512-2.c
  b4fb0c886229835ec55bd681f831812b  gcc/testsuite/gcc.target/i386/pr55512-3.c
  2d3d0716987d79a9b2427e2e7237c420  gcc/testsuite/gcc.target/i386/pr55512-4.c
+ 723462753d8451dcaa85c833459986df  gcc/testsuite/gcc.target/i386/pr55583.c
  ed1ba8dd30b6e7d0c41497405b5c6d08  gcc/testsuite/gcc.target/i386/pr55590-1.c
  f36e5b68f83ad7f55d170085ad4c4fff  gcc/testsuite/gcc.target/i386/pr55590-2.c
  bdfd75705a8ed1ae370d0e6397e89e61  gcc/testsuite/gcc.target/i386/pr55597.c
*************** c8a2893ea0fde8d16222be9c58cb1f46  gcc/te
*** 66787,66792 ****
--- 70589,70596 ----
  7baa00da5b600cf9ac0059d740da1816  gcc/testsuite/gcc.target/i386/pr69454-2.c
  4baed9b88fed94b3bd199c8235745c94  gcc/testsuite/gcc.target/i386/pr69459.c
  05855004b849a72af06e7dcbc61536a0  gcc/testsuite/gcc.target/i386/pr69471-3.c
+ e9a7f36944fabb6b1370b9da354625de  gcc/testsuite/gcc.target/i386/pr69482-1.c
+ ef7acb24e613dbadf45fc15b65ab66d4  gcc/testsuite/gcc.target/i386/pr69482-2.c
  28bcee77a96d7f6cfe65409040fe5e10  gcc/testsuite/gcc.target/i386/pr69512.c
  3e28b4ade390d7c7ac3afa2b0617487e  gcc/testsuite/gcc.target/i386/pr69530.c
  51f445507ac4ace5b56d6e38e816cc6d  gcc/testsuite/gcc.target/i386/pr69551.c
*************** f26d676f1685c2877882d01b1c168b4a  gcc/te
*** 66831,66841 ****
  739862fd73f31c1145ce629e55b43db8  gcc/testsuite/gcc.target/i386/pr70155-9.c
  f84f244e926f8199454c8740b60ac33f  gcc/testsuite/gcc.target/i386/pr70160.c
  68dae1baf512769d1acf148db5166a48  gcc/testsuite/gcc.target/i386/pr70251.c
! fcef3df8c640dba4fe0c80bb38c4f34a  gcc/testsuite/gcc.target/i386/pr70263-2.c
  9dc4644acf439047622a4c11be362103  gcc/testsuite/gcc.target/i386/pr70293.c
  77a10eac7238aed7e2e4bc7e46fdbf09  gcc/testsuite/gcc.target/i386/pr70300.c
  857f3aaeea9ed51acaa70ac8080e3855  gcc/testsuite/gcc.target/i386/pr70302.c
  6192086ea1bd3f4ca3024f18ae02c92b  gcc/testsuite/gcc.target/i386/pr70314.c
  8eb635052e7af90b767d742c35d98c12  gcc/testsuite/gcc.target/i386/pr70322-1.c
  614a4d96f766f9b0c9a16b2c6430a0c4  gcc/testsuite/gcc.target/i386/pr70322-2.c
  000306df7153399c97be28712e1e4637  gcc/testsuite/gcc.target/i386/pr70322-3.c
--- 70635,70646 ----
  739862fd73f31c1145ce629e55b43db8  gcc/testsuite/gcc.target/i386/pr70155-9.c
  f84f244e926f8199454c8740b60ac33f  gcc/testsuite/gcc.target/i386/pr70160.c
  68dae1baf512769d1acf148db5166a48  gcc/testsuite/gcc.target/i386/pr70251.c
! b58f75f5f0f7fddf4cec8fc6a02cb7ca  gcc/testsuite/gcc.target/i386/pr70263-2.c
  9dc4644acf439047622a4c11be362103  gcc/testsuite/gcc.target/i386/pr70293.c
  77a10eac7238aed7e2e4bc7e46fdbf09  gcc/testsuite/gcc.target/i386/pr70300.c
  857f3aaeea9ed51acaa70ac8080e3855  gcc/testsuite/gcc.target/i386/pr70302.c
  6192086ea1bd3f4ca3024f18ae02c92b  gcc/testsuite/gcc.target/i386/pr70314.c
+ ccdd5c4d93dfe61c6892752fc3490614  gcc/testsuite/gcc.target/i386/pr70321.c
  8eb635052e7af90b767d742c35d98c12  gcc/testsuite/gcc.target/i386/pr70322-1.c
  614a4d96f766f9b0c9a16b2c6430a0c4  gcc/testsuite/gcc.target/i386/pr70322-2.c
  000306df7153399c97be28712e1e4637  gcc/testsuite/gcc.target/i386/pr70322-3.c
*************** a7ae171348479a97f8436614b36fd410  gcc/te
*** 66856,66861 ****
--- 70661,70668 ----
  9a6009bd978dadd47bb2a756be9c41cb  gcc/testsuite/gcc.target/i386/pr70525.c
  4fbcd5b3350355ed9b86fc2f9efebbcf  gcc/testsuite/gcc.target/i386/pr70593.c
  c4dd0a4466890153a50da4018a6840e3  gcc/testsuite/gcc.target/i386/pr70596.c
+ 578930abc6067000473056332aea8708  gcc/testsuite/gcc.target/i386/pr7061-1.c
+ 8112ff01f44ee18198ecf1103390bc41  gcc/testsuite/gcc.target/i386/pr7061-2.c
  63614f4a8e03a5baed97479f04e87900  gcc/testsuite/gcc.target/i386/pr70662.c
  d30fb05bd79f101c6bd53c37a89521cf  gcc/testsuite/gcc.target/i386/pr70689.c
  18fd16e0176d3982cb0de00173db61f3  gcc/testsuite/gcc.target/i386/pr70703.c
*************** e24e16431564ae1db7f06ba62681abaa  gcc/te
*** 66912,66918 ****
  e5be6cf6d0060be81cbbeb24d1b45ac8  gcc/testsuite/gcc.target/i386/pr77856.c
  93e914077bc0a0fec60293774cf1fb84  gcc/testsuite/gcc.target/i386/pr77881.c
  ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
! e92468cd3d6db284b41cbd24c3b82524  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
  01e4a31e89c869cea640914ee549516e  gcc/testsuite/gcc.target/i386/pr78057.c
  cb796275f121f6fc5bb34a1f5ecd6404  gcc/testsuite/gcc.target/i386/pr78102.c
--- 70719,70725 ----
  e5be6cf6d0060be81cbbeb24d1b45ac8  gcc/testsuite/gcc.target/i386/pr77856.c
  93e914077bc0a0fec60293774cf1fb84  gcc/testsuite/gcc.target/i386/pr77881.c
  ebdf78610e5253029e5305e68875b6c9  gcc/testsuite/gcc.target/i386/pr77991.c
! f7128cf60180ba3fac33b941315c81be  gcc/testsuite/gcc.target/i386/pr78035.c
  a0f1a716d3aa44f2dbe260d265da5118  gcc/testsuite/gcc.target/i386/pr78037.c
  01e4a31e89c869cea640914ee549516e  gcc/testsuite/gcc.target/i386/pr78057.c
  cb796275f121f6fc5bb34a1f5ecd6404  gcc/testsuite/gcc.target/i386/pr78102.c
*************** affabb2536eb040c140a3110204ca3b0  gcc/te
*** 67044,67050 ****
  4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
  a85ee44d1991b911c0a14a0e8939bb37  gcc/testsuite/gcc.target/i386/pr81481.c
  98d0e76fde3f746743a32d52d393ac1e  gcc/testsuite/gcc.target/i386/pr81502.c
! e3b82b712ca5673f25540fd5d22fb04c  gcc/testsuite/gcc.target/i386/pr81563.c
  487cad21d9bb2d8bb734efc861a4e1ca  gcc/testsuite/gcc.target/i386/pr81639.c
  6f823ba95e2ef0fb5061621d3fcd985c  gcc/testsuite/gcc.target/i386/pr81641.c
  038644eb788a58458ff5b6d517c88717  gcc/testsuite/gcc.target/i386/pr81644.c
--- 70851,70857 ----
  4a3389f7f2146d2198f9c46d5209ba9f  gcc/testsuite/gcc.target/i386/pr81471.c
  a85ee44d1991b911c0a14a0e8939bb37  gcc/testsuite/gcc.target/i386/pr81481.c
  98d0e76fde3f746743a32d52d393ac1e  gcc/testsuite/gcc.target/i386/pr81502.c
! 66ae4c056da07dc7620743fcea9a3d76  gcc/testsuite/gcc.target/i386/pr81563.c
  487cad21d9bb2d8bb734efc861a4e1ca  gcc/testsuite/gcc.target/i386/pr81639.c
  6f823ba95e2ef0fb5061621d3fcd985c  gcc/testsuite/gcc.target/i386/pr81641.c
  038644eb788a58458ff5b6d517c88717  gcc/testsuite/gcc.target/i386/pr81644.c
*************** fdff40dff74b5a9723606b85d25291c0  gcc/te
*** 67054,67062 ****
  bb2d4966606a36afeb42adf77317fc37  gcc/testsuite/gcc.target/i386/pr81736-2.c
  a2ddb4d89c347a11f776d1247c99db5f  gcc/testsuite/gcc.target/i386/pr81736-3.c
  93ae06b858e123a7c00e3611bbcfd689  gcc/testsuite/gcc.target/i386/pr81736-4.c
! b98345eac5578848b918efe5fbdfe484  gcc/testsuite/gcc.target/i386/pr81736-5.c
  42c3629851528e7ef662078a02487f38  gcc/testsuite/gcc.target/i386/pr81736-6.c
! 365006a2bc25fb27374fab0b1320e361  gcc/testsuite/gcc.target/i386/pr81736-7.c
  c5d91f720ac19a39b21200b7763ea25f  gcc/testsuite/gcc.target/i386/pr81766.c
  147e8ea8d47f4a3d8f4818e4d0b63af0  gcc/testsuite/gcc.target/i386/pr81769-1a.c
  151e53a6bb0727048dacc68c71734940  gcc/testsuite/gcc.target/i386/pr81769-1b.c
--- 70861,70869 ----
  bb2d4966606a36afeb42adf77317fc37  gcc/testsuite/gcc.target/i386/pr81736-2.c
  a2ddb4d89c347a11f776d1247c99db5f  gcc/testsuite/gcc.target/i386/pr81736-3.c
  93ae06b858e123a7c00e3611bbcfd689  gcc/testsuite/gcc.target/i386/pr81736-4.c
! f30dda0a5cbcc534a34c804bf963045d  gcc/testsuite/gcc.target/i386/pr81736-5.c
  42c3629851528e7ef662078a02487f38  gcc/testsuite/gcc.target/i386/pr81736-6.c
! 04da05326d25bbf6b245c4aaab470c26  gcc/testsuite/gcc.target/i386/pr81736-7.c
  c5d91f720ac19a39b21200b7763ea25f  gcc/testsuite/gcc.target/i386/pr81766.c
  147e8ea8d47f4a3d8f4818e4d0b63af0  gcc/testsuite/gcc.target/i386/pr81769-1a.c
  151e53a6bb0727048dacc68c71734940  gcc/testsuite/gcc.target/i386/pr81769-1b.c
*************** be4886fc2cd0dbd18a9cbd38f8d6690d  gcc/te
*** 67143,67156 ****
  3592e3b6e0dee866a764af464d0ee7af  gcc/testsuite/gcc.target/i386/pr83620.c
  1cbb11f638276c7d3789f6d1a6aee18f  gcc/testsuite/gcc.target/i386/pr83682.c
  038b9c92a928a2196a93e23a317b09ba  gcc/testsuite/gcc.target/i386/pr83735.c
! db90c8006566386e587dac261c42475d  gcc/testsuite/gcc.target/i386/pr83782-1.c
! fd4df670d1f2432334ac5dea69ad2449  gcc/testsuite/gcc.target/i386/pr83782-2.c
  c78c9ff18e67e4fc991f85ce7a1d2f1a  gcc/testsuite/gcc.target/i386/pr83994.c
  898a487bfe8ece1ba9283d78e23c3064  gcc/testsuite/gcc.target/i386/pr84064.c
! 73c196df16e556f3d978eb775397d53e  gcc/testsuite/gcc.target/i386/pr84101.c
  3fdc33c4435f1417dc7afcbcb3181466  gcc/testsuite/gcc.target/i386/pr84128.c
  87f029e1cd2ac55ab752af611c64ccda  gcc/testsuite/gcc.target/i386/pr84146.c
! 58f60dba0169ddbf0a54b9452ef3fd1f  gcc/testsuite/gcc.target/i386/pr84278.c
  8ff1565164ef9b1c7f45e14a2a6888a4  gcc/testsuite/gcc.target/i386/pr84301.c
  060e4005d876e22e1ee09604ef3f9469  gcc/testsuite/gcc.target/i386/pr84309.c
  625c6aff5378d4c659c530f3808021bb  gcc/testsuite/gcc.target/i386/pr84310-2.c
--- 70950,70964 ----
  3592e3b6e0dee866a764af464d0ee7af  gcc/testsuite/gcc.target/i386/pr83620.c
  1cbb11f638276c7d3789f6d1a6aee18f  gcc/testsuite/gcc.target/i386/pr83682.c
  038b9c92a928a2196a93e23a317b09ba  gcc/testsuite/gcc.target/i386/pr83735.c
! 881b6354d53c26090518c90f862c5727  gcc/testsuite/gcc.target/i386/pr83782-1.c
! 110dc4996980c561ac1d094a9d458428  gcc/testsuite/gcc.target/i386/pr83782-2.c
! 6f5fb8de3dc9963b541254781a9e3919  gcc/testsuite/gcc.target/i386/pr83782-3.c
  c78c9ff18e67e4fc991f85ce7a1d2f1a  gcc/testsuite/gcc.target/i386/pr83994.c
  898a487bfe8ece1ba9283d78e23c3064  gcc/testsuite/gcc.target/i386/pr84064.c
! cf08099256fc8ecd79b0aa1027c96534  gcc/testsuite/gcc.target/i386/pr84101.c
  3fdc33c4435f1417dc7afcbcb3181466  gcc/testsuite/gcc.target/i386/pr84128.c
  87f029e1cd2ac55ab752af611c64ccda  gcc/testsuite/gcc.target/i386/pr84146.c
! 9c11e24547645516169ab0d7b3327efe  gcc/testsuite/gcc.target/i386/pr84278.c
  8ff1565164ef9b1c7f45e14a2a6888a4  gcc/testsuite/gcc.target/i386/pr84301.c
  060e4005d876e22e1ee09604ef3f9469  gcc/testsuite/gcc.target/i386/pr84309.c
  625c6aff5378d4c659c530f3808021bb  gcc/testsuite/gcc.target/i386/pr84310-2.c
*************** e0206060855fbdd405c6183bce97a0ea  gcc/te
*** 67205,67222 ****
  bfc63737303c346862df5e9d8928d4f0  gcc/testsuite/gcc.target/i386/pr85473-2.c
  51e373c9a10bdce46b6bd839fecfedeb  gcc/testsuite/gcc.target/i386/pr85508.c
  c9b6441c0d7b7f884874e0499b1458cd  gcc/testsuite/gcc.target/i386/pr85511.c
! d57c15d8d315998b09f9cd1a9f85541d  gcc/testsuite/gcc.target/i386/pr85593.c
  b4b72e8bbdacae2a4a51a302193e0b33  gcc/testsuite/gcc.target/i386/pr85620-1.c
! 0a8faffa7bc071d82b524cac33e6e1da  gcc/testsuite/gcc.target/i386/pr85620-2.c
  02d1fa1405e32f0ec5d5143e5a9f439d  gcc/testsuite/gcc.target/i386/pr85620-3.c
  ef26d6c20cd8d62290f57071ec7d3aa3  gcc/testsuite/gcc.target/i386/pr85620-4.c
  6ad11c4fec0ee7f96ee7177b031643d0  gcc/testsuite/gcc.target/i386/pr85667-1.c
  91d570a0ad17e88baacfd8df45cf890f  gcc/testsuite/gcc.target/i386/pr85667-10.c
  f6ae1970d5d59d2346e9cc80a1025399  gcc/testsuite/gcc.target/i386/pr85667-2.c
  9f89c7c3a99d927e53d6bfe1003c2249  gcc/testsuite/gcc.target/i386/pr85667-3.c
  1e62148a68084060b4de71901f6abb3f  gcc/testsuite/gcc.target/i386/pr85667-4.c
  607300ba762a35449b97cef427bd9b31  gcc/testsuite/gcc.target/i386/pr85667-5.c
! 0ce7fb923d78058f2f86ecdfc69d1e90  gcc/testsuite/gcc.target/i386/pr85667-6.c
  a5786646ba750d22ea879269cc087364  gcc/testsuite/gcc.target/i386/pr85667-7.c
  e978d99e64900c57a4fb4fc02c3e26ff  gcc/testsuite/gcc.target/i386/pr85667-8.c
  1463aed136a92c4f66cdcc362d839181  gcc/testsuite/gcc.target/i386/pr85667-9.c
--- 71013,71033 ----
  bfc63737303c346862df5e9d8928d4f0  gcc/testsuite/gcc.target/i386/pr85473-2.c
  51e373c9a10bdce46b6bd839fecfedeb  gcc/testsuite/gcc.target/i386/pr85508.c
  c9b6441c0d7b7f884874e0499b1458cd  gcc/testsuite/gcc.target/i386/pr85511.c
! eb20c12ceb921a6c11b6e5b72c08d1b7  gcc/testsuite/gcc.target/i386/pr85593.c
  b4b72e8bbdacae2a4a51a302193e0b33  gcc/testsuite/gcc.target/i386/pr85620-1.c
! 816c52552db759833c19b548883dc1e3  gcc/testsuite/gcc.target/i386/pr85620-2.c
  02d1fa1405e32f0ec5d5143e5a9f439d  gcc/testsuite/gcc.target/i386/pr85620-3.c
  ef26d6c20cd8d62290f57071ec7d3aa3  gcc/testsuite/gcc.target/i386/pr85620-4.c
+ 590a79dfa6b48f2d063ec458b442c231  gcc/testsuite/gcc.target/i386/pr85620-5.c
+ 07329c0b7b6de9b73c8aaa400a418d57  gcc/testsuite/gcc.target/i386/pr85620-6.c
+ 79f8e7f882f5b7bb19fe6320a45def50  gcc/testsuite/gcc.target/i386/pr85620-7.c
  6ad11c4fec0ee7f96ee7177b031643d0  gcc/testsuite/gcc.target/i386/pr85667-1.c
  91d570a0ad17e88baacfd8df45cf890f  gcc/testsuite/gcc.target/i386/pr85667-10.c
  f6ae1970d5d59d2346e9cc80a1025399  gcc/testsuite/gcc.target/i386/pr85667-2.c
  9f89c7c3a99d927e53d6bfe1003c2249  gcc/testsuite/gcc.target/i386/pr85667-3.c
  1e62148a68084060b4de71901f6abb3f  gcc/testsuite/gcc.target/i386/pr85667-4.c
  607300ba762a35449b97cef427bd9b31  gcc/testsuite/gcc.target/i386/pr85667-5.c
! 433ebd9405e851c3d3dadcdf88e350f3  gcc/testsuite/gcc.target/i386/pr85667-6.c
  a5786646ba750d22ea879269cc087364  gcc/testsuite/gcc.target/i386/pr85667-7.c
  e978d99e64900c57a4fb4fc02c3e26ff  gcc/testsuite/gcc.target/i386/pr85667-8.c
  1463aed136a92c4f66cdcc362d839181  gcc/testsuite/gcc.target/i386/pr85667-9.c
*************** c19a9d9e41959574f6c21d72429137da  gcc/te
*** 67239,67245 ****
  e68e510c245a1586dead99573f2e33d2  gcc/testsuite/gcc.target/i386/pr86048.c
  926130d343ce505b99901b7c06918b57  gcc/testsuite/gcc.target/i386/pr86194.c
  44e3a13049c67a4c86c87d53799997a1  gcc/testsuite/gcc.target/i386/pr86257.c
! 42c0a5d4c8a73cc06e361387318fb1ab  gcc/testsuite/gcc.target/i386/pr86270.c
  e89855e4afbc8be3009567aa4b7ef483  gcc/testsuite/gcc.target/i386/pr86334.c
  0a8780c8461919b0211d3ff52f93b9c8  gcc/testsuite/gcc.target/i386/pr86348.c
  27b04474e1fd5c1bb0082fbdb319dd57  gcc/testsuite/gcc.target/i386/pr86386.c
--- 71050,71056 ----
  e68e510c245a1586dead99573f2e33d2  gcc/testsuite/gcc.target/i386/pr86048.c
  926130d343ce505b99901b7c06918b57  gcc/testsuite/gcc.target/i386/pr86194.c
  44e3a13049c67a4c86c87d53799997a1  gcc/testsuite/gcc.target/i386/pr86257.c
! 7f18ba9dbf8a77195aa56b8a46d13cfd  gcc/testsuite/gcc.target/i386/pr86270.c
  e89855e4afbc8be3009567aa4b7ef483  gcc/testsuite/gcc.target/i386/pr86334.c
  0a8780c8461919b0211d3ff52f93b9c8  gcc/testsuite/gcc.target/i386/pr86348.c
  27b04474e1fd5c1bb0082fbdb319dd57  gcc/testsuite/gcc.target/i386/pr86386.c
*************** bce12f30738edf2774ad07623978e78c  gcc/te
*** 67322,67328 ****
  96469657c46a5db9e093206d585159bb  gcc/testsuite/gcc.target/i386/pr88796.c
  7af4459509529efc78f8cbe44f73cabd  gcc/testsuite/gcc.target/i386/pr88809-2.c
  8497072c958cb5494396edf468b39239  gcc/testsuite/gcc.target/i386/pr88809.c
! 7eb26c0db3fd88145a5bd8c0bfaaffbe  gcc/testsuite/gcc.target/i386/pr88828-0.c
  1631afdc742b2d2a76424ee57448ca33  gcc/testsuite/gcc.target/i386/pr88828-1.c
  168b94889653fec10c76f9f092653a2e  gcc/testsuite/gcc.target/i386/pr88828-1a.c
  6a5173e40ac3a2d73ca7b06d5b823813  gcc/testsuite/gcc.target/i386/pr88828-1b.c
--- 71133,71139 ----
  96469657c46a5db9e093206d585159bb  gcc/testsuite/gcc.target/i386/pr88796.c
  7af4459509529efc78f8cbe44f73cabd  gcc/testsuite/gcc.target/i386/pr88809-2.c
  8497072c958cb5494396edf468b39239  gcc/testsuite/gcc.target/i386/pr88809.c
! 9d682528b30cb290cfb279d4345c67ed  gcc/testsuite/gcc.target/i386/pr88828-0.c
  1631afdc742b2d2a76424ee57448ca33  gcc/testsuite/gcc.target/i386/pr88828-1.c
  168b94889653fec10c76f9f092653a2e  gcc/testsuite/gcc.target/i386/pr88828-1a.c
  6a5173e40ac3a2d73ca7b06d5b823813  gcc/testsuite/gcc.target/i386/pr88828-1b.c
*************** adae3156ab4e2f317ef6a23cbd52a09e  gcc/te
*** 67394,67400 ****
  2b740660f12ab9c7636b35db2ec19c55  gcc/testsuite/gcc.target/i386/pr89965.c
  61421458c0cd694e7f45d147f09c71dd  gcc/testsuite/gcc.target/i386/pr89984-1.c
  4675458af6efdc7039a76f2ca0824f6a  gcc/testsuite/gcc.target/i386/pr89984-2.c
! 4fd743cb437900275562031e9da68537  gcc/testsuite/gcc.target/i386/pr90007.c
  a7e4330876ef271143c6421ba5f2cf85  gcc/testsuite/gcc.target/i386/pr90096.c
  a9287216d129eff30597718cb0900160  gcc/testsuite/gcc.target/i386/pr90178.c
  c04294701860868605e6d4177d1f5a28  gcc/testsuite/gcc.target/i386/pr90193.c
--- 71205,71211 ----
  2b740660f12ab9c7636b35db2ec19c55  gcc/testsuite/gcc.target/i386/pr89965.c
  61421458c0cd694e7f45d147f09c71dd  gcc/testsuite/gcc.target/i386/pr89984-1.c
  4675458af6efdc7039a76f2ca0824f6a  gcc/testsuite/gcc.target/i386/pr89984-2.c
! 0fde4fbe7c3ef420d3178fba128d51e7  gcc/testsuite/gcc.target/i386/pr90007.c
  a7e4330876ef271143c6421ba5f2cf85  gcc/testsuite/gcc.target/i386/pr90096.c
  a9287216d129eff30597718cb0900160  gcc/testsuite/gcc.target/i386/pr90178.c
  c04294701860868605e6d4177d1f5a28  gcc/testsuite/gcc.target/i386/pr90193.c
*************** bedac99974c4a13a1a78b62b24233122  gcc/te
*** 67417,67426 ****
  f7e21a56566f8559fcba70f3cda721fe  gcc/testsuite/gcc.target/i386/pr90773-14.c
  bc6806d14eb4d9fac9f78751c494bb2b  gcc/testsuite/gcc.target/i386/pr90773-15.c
  06df718acc299d530a1ea5b6fa3f889d  gcc/testsuite/gcc.target/i386/pr90773-16.c
! 2bc65423916016d38cdf35a4de5ccbd3  gcc/testsuite/gcc.target/i386/pr90773-17.c
  91b619d01a947fbd9e263614f1000278  gcc/testsuite/gcc.target/i386/pr90773-18.c
  700d4a7ed37c9f9247b66f3967dc24c1  gcc/testsuite/gcc.target/i386/pr90773-19.c
! ce71d2d204e70fc104bb0bde9fa1abc7  gcc/testsuite/gcc.target/i386/pr90773-2.c
  5fa9c561dde23d97ac790aff8cb8e83d  gcc/testsuite/gcc.target/i386/pr90773-20.c
  2b433e52b2c381c1508a26267c24ea60  gcc/testsuite/gcc.target/i386/pr90773-21.c
  9705238b58cde2fb78fac84b31c2572c  gcc/testsuite/gcc.target/i386/pr90773-22.c
--- 71228,71237 ----
  f7e21a56566f8559fcba70f3cda721fe  gcc/testsuite/gcc.target/i386/pr90773-14.c
  bc6806d14eb4d9fac9f78751c494bb2b  gcc/testsuite/gcc.target/i386/pr90773-15.c
  06df718acc299d530a1ea5b6fa3f889d  gcc/testsuite/gcc.target/i386/pr90773-16.c
! a2bf3f9fe7475c7374a80e84180baad8  gcc/testsuite/gcc.target/i386/pr90773-17.c
  91b619d01a947fbd9e263614f1000278  gcc/testsuite/gcc.target/i386/pr90773-18.c
  700d4a7ed37c9f9247b66f3967dc24c1  gcc/testsuite/gcc.target/i386/pr90773-19.c
! f80a713960f0646d35d5cd99ddc87102  gcc/testsuite/gcc.target/i386/pr90773-2.c
  5fa9c561dde23d97ac790aff8cb8e83d  gcc/testsuite/gcc.target/i386/pr90773-20.c
  2b433e52b2c381c1508a26267c24ea60  gcc/testsuite/gcc.target/i386/pr90773-21.c
  9705238b58cde2fb78fac84b31c2572c  gcc/testsuite/gcc.target/i386/pr90773-22.c
*************** ce71d2d204e70fc104bb0bde9fa1abc7  gcc/te
*** 67428,67434 ****
  02a80269a71a00c4d622823fa50ec6dd  gcc/testsuite/gcc.target/i386/pr90773-24.c
  b9441c7790b11e31803b469f75453364  gcc/testsuite/gcc.target/i386/pr90773-25.c
  7a537e43b7169ce5c42b66a28332fa9a  gcc/testsuite/gcc.target/i386/pr90773-26.c
! 9dbe61f3785c1f68f516febd9aeaec1e  gcc/testsuite/gcc.target/i386/pr90773-3.c
  97422587df7aa58c60dc6e0f1914878b  gcc/testsuite/gcc.target/i386/pr90773-4.c
  8efe9d8a87db42e6fa61dd083da1b287  gcc/testsuite/gcc.target/i386/pr90773-5.c
  a4837008d1df9276ede99b659bce983a  gcc/testsuite/gcc.target/i386/pr90773-6.c
--- 71239,71245 ----
  02a80269a71a00c4d622823fa50ec6dd  gcc/testsuite/gcc.target/i386/pr90773-24.c
  b9441c7790b11e31803b469f75453364  gcc/testsuite/gcc.target/i386/pr90773-25.c
  7a537e43b7169ce5c42b66a28332fa9a  gcc/testsuite/gcc.target/i386/pr90773-26.c
! ee1bf1ca6b24814235db147e47733389  gcc/testsuite/gcc.target/i386/pr90773-3.c
  97422587df7aa58c60dc6e0f1914878b  gcc/testsuite/gcc.target/i386/pr90773-4.c
  8efe9d8a87db42e6fa61dd083da1b287  gcc/testsuite/gcc.target/i386/pr90773-5.c
  a4837008d1df9276ede99b659bce983a  gcc/testsuite/gcc.target/i386/pr90773-6.c
*************** f0fcd639c26dec3b350ac6bf649264db  gcc/te
*** 67459,67468 ****
  64cc0c185459dccf818a2e26073b682d  gcc/testsuite/gcc.target/i386/pr91333.c
  2c506f7ed02f01933d3eb1f68153db80  gcc/testsuite/gcc.target/i386/pr91384.c
  2470ef4544f4a84841952f618da1b96d  gcc/testsuite/gcc.target/i386/pr91385.c
! 9111066ea918636e0d208d6c622d3dfa  gcc/testsuite/gcc.target/i386/pr91400-1.c
! e489f4efe87c467d7fa60d59b9c6fb70  gcc/testsuite/gcc.target/i386/pr91400-2.c
  3b4e2b2c32d8bdc5a1a5b4ef145bdefc  gcc/testsuite/gcc.target/i386/pr91408.c
! 265abc59281cb582e3bcfc36fe5f2a90  gcc/testsuite/gcc.target/i386/pr91446.c
  ab6ee2072fb61291268093129ba13ec6  gcc/testsuite/gcc.target/i386/pr91461-1.c
  de1bf3bf26a0088e97654cd462f8a1f6  gcc/testsuite/gcc.target/i386/pr91461-2.c
  811082e592579f750af07ca87c986f2c  gcc/testsuite/gcc.target/i386/pr91461-3.c
--- 71270,71279 ----
  64cc0c185459dccf818a2e26073b682d  gcc/testsuite/gcc.target/i386/pr91333.c
  2c506f7ed02f01933d3eb1f68153db80  gcc/testsuite/gcc.target/i386/pr91384.c
  2470ef4544f4a84841952f618da1b96d  gcc/testsuite/gcc.target/i386/pr91385.c
! 031e44a32929718a17cbe4b6ea75e08b  gcc/testsuite/gcc.target/i386/pr91400-1.c
! 2927fee3df69b51f89e75e36cc47211e  gcc/testsuite/gcc.target/i386/pr91400-2.c
  3b4e2b2c32d8bdc5a1a5b4ef145bdefc  gcc/testsuite/gcc.target/i386/pr91408.c
! 465260947117edd42727cff06d0c488e  gcc/testsuite/gcc.target/i386/pr91446.c
  ab6ee2072fb61291268093129ba13ec6  gcc/testsuite/gcc.target/i386/pr91461-1.c
  de1bf3bf26a0088e97654cd462f8a1f6  gcc/testsuite/gcc.target/i386/pr91461-2.c
  811082e592579f750af07ca87c986f2c  gcc/testsuite/gcc.target/i386/pr91461-3.c
*************** cb8d57d1c99d2ae6fd68669c33788601  gcc/te
*** 67473,67478 ****
--- 71284,71292 ----
  deab09ecbea721af89a8c42ba82c920c  gcc/testsuite/gcc.target/i386/pr91528.c
  9aebfbb82120887215191f0edce0a285  gcc/testsuite/gcc.target/i386/pr91604.c
  904988f9250117b2c2d885170f150f76  gcc/testsuite/gcc.target/i386/pr91623.c
+ 1bff73533186f001fba8efcd6586240d  gcc/testsuite/gcc.target/i386/pr91681-1.c
+ 04d342c93fcd50de765838a7be605cda  gcc/testsuite/gcc.target/i386/pr91681-2.c
+ 52976d6efa52c1b6c8f78ae8f8913ef8  gcc/testsuite/gcc.target/i386/pr91681-3.c
  acc82a5b459bf1433e5f0d6d4849c00a  gcc/testsuite/gcc.target/i386/pr91704.c
  8c2bf433b8f7f5b33f44dd85c44a950d  gcc/testsuite/gcc.target/i386/pr91824-1.c
  5b18133ef695be50ad30b3e266f163ac  gcc/testsuite/gcc.target/i386/pr91824-2.c
*************** cb7d2b73c1aa814d4874833bf6d514f4  gcc/te
*** 67488,67495 ****
  30405eb53e18194ed85aeeff6c440038  gcc/testsuite/gcc.target/i386/pr92469.c
  81e392b4a25b32acb751ef18742582be  gcc/testsuite/gcc.target/i386/pr92549.c
  b7cac4959f15ba45f067fec51fddab75  gcc/testsuite/gcc.target/i386/pr92615.c
! b897f2cc3ef2de83f71baf076fcd704a  gcc/testsuite/gcc.target/i386/pr92645-2.c
! 025eb8c4e8756613532224704ea780d4  gcc/testsuite/gcc.target/i386/pr92645-3.c
  4ea16423fe41fd23fc418cad85272177  gcc/testsuite/gcc.target/i386/pr92645-4.c
  fd5403ac26bbe83c4c9a50fff34fd61f  gcc/testsuite/gcc.target/i386/pr92645-5.c
  5f53809106eb4f515eef2f02170d4add  gcc/testsuite/gcc.target/i386/pr92645-6.c
--- 71302,71309 ----
  30405eb53e18194ed85aeeff6c440038  gcc/testsuite/gcc.target/i386/pr92469.c
  81e392b4a25b32acb751ef18742582be  gcc/testsuite/gcc.target/i386/pr92549.c
  b7cac4959f15ba45f067fec51fddab75  gcc/testsuite/gcc.target/i386/pr92615.c
! 269411ecd37470339c1020ba04b86107  gcc/testsuite/gcc.target/i386/pr92645-2.c
! 496ea3e57e811aae7a7e70e6ae3f47b5  gcc/testsuite/gcc.target/i386/pr92645-3.c
  4ea16423fe41fd23fc418cad85272177  gcc/testsuite/gcc.target/i386/pr92645-4.c
  fd5403ac26bbe83c4c9a50fff34fd61f  gcc/testsuite/gcc.target/i386/pr92645-5.c
  5f53809106eb4f515eef2f02170d4add  gcc/testsuite/gcc.target/i386/pr92645-6.c
*************** d99054d3a6717f6febc8ba0f9175eb4d  gcc/te
*** 67512,67522 ****
  f452eb29da541a59bfaaaac52be5e4ce  gcc/testsuite/gcc.target/i386/pr92819-1.c
  e66a8b09a8c5e18ceafa4d48c0b02d38  gcc/testsuite/gcc.target/i386/pr92819.c
  4ae2ab41aa3353b71fa6341327631b6f  gcc/testsuite/gcc.target/i386/pr92825.c
! cdb535a0358d93b880f4cf410cb28b3c  gcc/testsuite/gcc.target/i386/pr92841-2.c
  fcfeca533cdb42d6c9b96e0cb7101a2b  gcc/testsuite/gcc.target/i386/pr92841.c
  857c3f369363773d3bd7c843fa23f1a8  gcc/testsuite/gcc.target/i386/pr92865-1.c
  f48649045a7a5580979710279225e336  gcc/testsuite/gcc.target/i386/pr92905.c
! e4479da6970d703907fa64cc0aec5e84  gcc/testsuite/gcc.target/i386/pr93002.c
  710ff3152a3030c5b8c9f0f36e637e1c  gcc/testsuite/gcc.target/i386/pr93027.c
  62ade5dc105d6119dff3a6aa23ee6a45  gcc/testsuite/gcc.target/i386/pr93088.c
  489a6369c6578ae309cc17e988c74eeb  gcc/testsuite/gcc.target/i386/pr93089-1.c
--- 71326,71336 ----
  f452eb29da541a59bfaaaac52be5e4ce  gcc/testsuite/gcc.target/i386/pr92819-1.c
  e66a8b09a8c5e18ceafa4d48c0b02d38  gcc/testsuite/gcc.target/i386/pr92819.c
  4ae2ab41aa3353b71fa6341327631b6f  gcc/testsuite/gcc.target/i386/pr92825.c
! eca04b18dc7f3ec0d25af5d71881d1e7  gcc/testsuite/gcc.target/i386/pr92841-2.c
  fcfeca533cdb42d6c9b96e0cb7101a2b  gcc/testsuite/gcc.target/i386/pr92841.c
  857c3f369363773d3bd7c843fa23f1a8  gcc/testsuite/gcc.target/i386/pr92865-1.c
  f48649045a7a5580979710279225e336  gcc/testsuite/gcc.target/i386/pr92905.c
! dd083fd85c5a6e2f7d4cc8e615b8c94f  gcc/testsuite/gcc.target/i386/pr93002.c
  710ff3152a3030c5b8c9f0f36e637e1c  gcc/testsuite/gcc.target/i386/pr93027.c
  62ade5dc105d6119dff3a6aa23ee6a45  gcc/testsuite/gcc.target/i386/pr93088.c
  489a6369c6578ae309cc17e988c74eeb  gcc/testsuite/gcc.target/i386/pr93089-1.c
*************** a66e070d185cf46ff3cee5cc2a247e9c  gcc/te
*** 67531,67540 ****
  ed9ca6b6e7a5f74d080f80bb7fb9c2e9  gcc/testsuite/gcc.target/i386/pr93346.c
  00cf6279198438d4bb24c7415d6332cd  gcc/testsuite/gcc.target/i386/pr93395.c
  8afa6fc9b9a61e004c0c1d39a49db1b1  gcc/testsuite/gcc.target/i386/pr93492-1.c
! 8319a563b8ef39a86dd4fd99721436a5  gcc/testsuite/gcc.target/i386/pr93492-2.c
! 57aeeee30b09d9d30932eb126155dc34  gcc/testsuite/gcc.target/i386/pr93492-3.c
! a8de425afd94edfbb817e5d56cabad40  gcc/testsuite/gcc.target/i386/pr93492-4.c
! 155b269ca172eee4be557d6df3f11605  gcc/testsuite/gcc.target/i386/pr93492-5.c
  16c32cf33e45444168010f2d660b185b  gcc/testsuite/gcc.target/i386/pr93611.c
  9387bfde104289ddf53adc9ae95c43ef  gcc/testsuite/gcc.target/i386/pr93654.c
  0cbbfb6a80b114bf60fcfd0fce913fdb  gcc/testsuite/gcc.target/i386/pr93656.c
--- 71345,71354 ----
  ed9ca6b6e7a5f74d080f80bb7fb9c2e9  gcc/testsuite/gcc.target/i386/pr93346.c
  00cf6279198438d4bb24c7415d6332cd  gcc/testsuite/gcc.target/i386/pr93395.c
  8afa6fc9b9a61e004c0c1d39a49db1b1  gcc/testsuite/gcc.target/i386/pr93492-1.c
! c9eb5d38661bdb8e79a65ba04d5c0825  gcc/testsuite/gcc.target/i386/pr93492-2.c
! 291af42ebb9633dc68339da0ad2d68d9  gcc/testsuite/gcc.target/i386/pr93492-3.c
! dfe601dd62f0bb43b4f06b62a5ddeb31  gcc/testsuite/gcc.target/i386/pr93492-4.c
! 11eab759ab2b2f59db81f74fd0a8dc53  gcc/testsuite/gcc.target/i386/pr93492-5.c
  16c32cf33e45444168010f2d660b185b  gcc/testsuite/gcc.target/i386/pr93611.c
  9387bfde104289ddf53adc9ae95c43ef  gcc/testsuite/gcc.target/i386/pr93654.c
  0cbbfb6a80b114bf60fcfd0fce913fdb  gcc/testsuite/gcc.target/i386/pr93656.c
*************** c93af1b8273ac94a94f8677f1b5cd79e  gcc/te
*** 67567,67576 ****
  74bc9b105e1d3b09ffb1089b0029ed6c  gcc/testsuite/gcc.target/i386/pr94802.c
  6066623ac8fb7000178efdaffd58159d  gcc/testsuite/gcc.target/i386/pr94857.c
  86bbb5b72491974076a858614f1c432f  gcc/testsuite/gcc.target/i386/pr94913-1.c
! 68a7ea4848e4a26b10e3364cd50c526b  gcc/testsuite/gcc.target/i386/pr94913-2.c
  4e4197632993a51b7c388446fa78e6ba  gcc/testsuite/gcc.target/i386/pr94914.c
  cf63209a9dbfa282faf0cb366089599d  gcc/testsuite/gcc.target/i386/pr94942.c
  506ce2484df66cf92c6784e4877b16ea  gcc/testsuite/gcc.target/i386/pr94956.c
  6c4fd12d85fb7d8355eb81c928b5e567  gcc/testsuite/gcc.target/i386/pr94980.c
  a102f5a44fa2640b68a658aa74c6a704  gcc/testsuite/gcc.target/i386/pr95021-1.c
  d4ef4f6b47a4fdedb7ba07f47e0eb158  gcc/testsuite/gcc.target/i386/pr95021-2.c
--- 71381,71394 ----
  74bc9b105e1d3b09ffb1089b0029ed6c  gcc/testsuite/gcc.target/i386/pr94802.c
  6066623ac8fb7000178efdaffd58159d  gcc/testsuite/gcc.target/i386/pr94857.c
  86bbb5b72491974076a858614f1c432f  gcc/testsuite/gcc.target/i386/pr94913-1.c
! e88e5727a67218596a6069f1451699bf  gcc/testsuite/gcc.target/i386/pr94913-2.c
  4e4197632993a51b7c388446fa78e6ba  gcc/testsuite/gcc.target/i386/pr94914.c
  cf63209a9dbfa282faf0cb366089599d  gcc/testsuite/gcc.target/i386/pr94942.c
  506ce2484df66cf92c6784e4877b16ea  gcc/testsuite/gcc.target/i386/pr94956.c
+ def72a36fed876808048d386962b5f39  gcc/testsuite/gcc.target/i386/pr94962-1.c
+ 89d3e55a237fd2da923e368b28cfec85  gcc/testsuite/gcc.target/i386/pr94962-2.c
+ 179d8b3cbb18f0dbfa33110dfa7d0392  gcc/testsuite/gcc.target/i386/pr94962-3.c
+ 5b7ef712af02d4b22e7f00ad48d81802  gcc/testsuite/gcc.target/i386/pr94962-4.c
  6c4fd12d85fb7d8355eb81c928b5e567  gcc/testsuite/gcc.target/i386/pr94980.c
  a102f5a44fa2640b68a658aa74c6a704  gcc/testsuite/gcc.target/i386/pr95021-1.c
  d4ef4f6b47a4fdedb7ba07f47e0eb158  gcc/testsuite/gcc.target/i386/pr95021-2.c
*************** e3c8ba81048775e01a220f4434f6f73b  gcc/te
*** 67589,67594 ****
--- 71407,71420 ----
  775e022412b9eb8788a2f89e73af6377  gcc/testsuite/gcc.target/i386/pr95052.c
  119d16d55811f9aa62a3d51063b0d9a7  gcc/testsuite/gcc.target/i386/pr95125-avx.c
  dee92b3246f112fd920d87f83464ad78  gcc/testsuite/gcc.target/i386/pr95125-avx512f.c
+ ee4dac3e3567c7d89e1f0f2ffe25d07f  gcc/testsuite/gcc.target/i386/pr95126-m32-1.c
+ ff914d385bee390a3cda3641cbea7e7c  gcc/testsuite/gcc.target/i386/pr95126-m32-2.c
+ 6f4453068096c2f7f2b430ae11b6a41d  gcc/testsuite/gcc.target/i386/pr95126-m32-3.c
+ 606d8de76d329dc8f588b79e5ee72b53  gcc/testsuite/gcc.target/i386/pr95126-m32-4.c
+ da4bd0e3a4a3b190a7d47b84e1ebea0f  gcc/testsuite/gcc.target/i386/pr95126-m64-1.c
+ 717bc9c274878452d5d82fa5feaa2c18  gcc/testsuite/gcc.target/i386/pr95126-m64-2.c
+ 7a2687c3f533d6dae8afa7abdb6fb2b8  gcc/testsuite/gcc.target/i386/pr95126-m64-3.c
+ 6d3bdcae21f34b617f5d252c50e38671  gcc/testsuite/gcc.target/i386/pr95126-m64-4.c
  98ae5caacce28eb9e052121818b4c3c8  gcc/testsuite/gcc.target/i386/pr95151-1.c
  14c560f6a0e6f54bf0f908098fc7bb00  gcc/testsuite/gcc.target/i386/pr95151-2.c
  d65fda9cac3aa8e3b3d5a10ecba348b2  gcc/testsuite/gcc.target/i386/pr95151-3.c
*************** ca4627a395e3df1e7e554ee5bb6aa898  gcc/te
*** 67602,67609 ****
  d9aae8289f586cb0642d8c4a75e854bb  gcc/testsuite/gcc.target/i386/pr95443-2.c
  a0a717bd3162b524beb938288c0edac9  gcc/testsuite/gcc.target/i386/pr95458-1.c
  feab5f45e1e18afc892095125a4b26a2  gcc/testsuite/gcc.target/i386/pr95458-2.c
! 0748a249e20b96f9e7a21d325a0a8a7d  gcc/testsuite/gcc.target/i386/pr95464.c
! 1c71be2def175c399af970b5a44f2ffd  gcc/testsuite/gcc.target/i386/pr95483-1.c
  0f2eaf1c814cc6f796229e239db8cf94  gcc/testsuite/gcc.target/i386/pr95483-2.c
  732ce5897b50a7bdc89573fcd64bfaf7  gcc/testsuite/gcc.target/i386/pr95483-3.c
  2ae2f5ad6b7aab32a5b5c61ea3ba9083  gcc/testsuite/gcc.target/i386/pr95483-4.c
--- 71428,71435 ----
  d9aae8289f586cb0642d8c4a75e854bb  gcc/testsuite/gcc.target/i386/pr95443-2.c
  a0a717bd3162b524beb938288c0edac9  gcc/testsuite/gcc.target/i386/pr95458-1.c
  feab5f45e1e18afc892095125a4b26a2  gcc/testsuite/gcc.target/i386/pr95458-2.c
! 805d289fcc57e8ef6f9598f08a7080ba  gcc/testsuite/gcc.target/i386/pr95464.c
! 5f14852c931480a5da5330f830720465  gcc/testsuite/gcc.target/i386/pr95483-1.c
  0f2eaf1c814cc6f796229e239db8cf94  gcc/testsuite/gcc.target/i386/pr95483-2.c
  732ce5897b50a7bdc89573fcd64bfaf7  gcc/testsuite/gcc.target/i386/pr95483-3.c
  2ae2f5ad6b7aab32a5b5c61ea3ba9083  gcc/testsuite/gcc.target/i386/pr95483-4.c
*************** f072219a90178a8fc4afbacca65f147c  gcc/te
*** 67614,67629 ****
  72c79186961f94732883bd658e38ad62  gcc/testsuite/gcc.target/i386/pr95535-2.c
  c7485821b3a31d9cfaeed2b36d378c96  gcc/testsuite/gcc.target/i386/pr95740.c
  20068d0d93e713ef0051850c981b52e7  gcc/testsuite/gcc.target/i386/pr95750.c
! 25fe85ddb7ee9cab612ea5eda9d44dbe  gcc/testsuite/gcc.target/i386/pr95771.c
  1da034b64ad8be123f1b3fb0e22739a8  gcc/testsuite/gcc.target/i386/pr95778-1.c
  30808786af3c66cc8bb63577fcb21b13  gcc/testsuite/gcc.target/i386/pr95778-2.c
  e8bf37fd9069fb47dd6ee3999065d19f  gcc/testsuite/gcc.target/i386/pr95791.c
  fd4a3f74fb119b3f9778cf26e12d7195  gcc/testsuite/gcc.target/i386/pr95798-1.c
  a22384fcda5fe9c2f3b2dff0fc36e60c  gcc/testsuite/gcc.target/i386/pr95798-2.c
  79acb80e6322af9fc4ebc6e7e63ab3e8  gcc/testsuite/gcc.target/i386/pr95852-1.c
! ae270707b27ab3cfb4847c3ff6fcd7b5  gcc/testsuite/gcc.target/i386/pr95852-2.c
  cb144ecc27b4a46d3bb712e33de3bfc3  gcc/testsuite/gcc.target/i386/pr95852-3.c
! 80825b8a7e1f2c87cca515a336b68340  gcc/testsuite/gcc.target/i386/pr95852-4.c
  e42f9251f6e18226c383e50c9cc1bab5  gcc/testsuite/gcc.target/i386/pr95863-1.c
  4c4483f507ec52bffb257bc82dc47328  gcc/testsuite/gcc.target/i386/pr95866-1.c
  bc6e07d857997a244fb5666a34ad24e7  gcc/testsuite/gcc.target/i386/pr95905-1.c
--- 71440,71456 ----
  72c79186961f94732883bd658e38ad62  gcc/testsuite/gcc.target/i386/pr95535-2.c
  c7485821b3a31d9cfaeed2b36d378c96  gcc/testsuite/gcc.target/i386/pr95740.c
  20068d0d93e713ef0051850c981b52e7  gcc/testsuite/gcc.target/i386/pr95750.c
! 875d982c2583821c58a36cfbd4d7d5dc  gcc/testsuite/gcc.target/i386/pr95771-2.c
! e517510ba93645076605937751e39c23  gcc/testsuite/gcc.target/i386/pr95771.c
  1da034b64ad8be123f1b3fb0e22739a8  gcc/testsuite/gcc.target/i386/pr95778-1.c
  30808786af3c66cc8bb63577fcb21b13  gcc/testsuite/gcc.target/i386/pr95778-2.c
  e8bf37fd9069fb47dd6ee3999065d19f  gcc/testsuite/gcc.target/i386/pr95791.c
  fd4a3f74fb119b3f9778cf26e12d7195  gcc/testsuite/gcc.target/i386/pr95798-1.c
  a22384fcda5fe9c2f3b2dff0fc36e60c  gcc/testsuite/gcc.target/i386/pr95798-2.c
  79acb80e6322af9fc4ebc6e7e63ab3e8  gcc/testsuite/gcc.target/i386/pr95852-1.c
! 23fd25e1e2b1286d42304c43c391d314  gcc/testsuite/gcc.target/i386/pr95852-2.c
  cb144ecc27b4a46d3bb712e33de3bfc3  gcc/testsuite/gcc.target/i386/pr95852-3.c
! bee548dc5344c7f3c38d76d801c2687f  gcc/testsuite/gcc.target/i386/pr95852-4.c
  e42f9251f6e18226c383e50c9cc1bab5  gcc/testsuite/gcc.target/i386/pr95863-1.c
  4c4483f507ec52bffb257bc82dc47328  gcc/testsuite/gcc.target/i386/pr95866-1.c
  bc6e07d857997a244fb5666a34ad24e7  gcc/testsuite/gcc.target/i386/pr95905-1.c
*************** fd3ae4c11b9e966cb3569321e98abb26  gcc/te
*** 67641,67647 ****
  d1a0d25008e21716be4b9e1ce0338b49  gcc/testsuite/gcc.target/i386/pr96262-1.c
  a58801ab95d6c36f56d320212bc09df3  gcc/testsuite/gcc.target/i386/pr96271.c
  45643988cf15c9ae848c59ace0b86744  gcc/testsuite/gcc.target/i386/pr96298.c
! 307deb6b4038e80b218bab133b0e0e60  gcc/testsuite/gcc.target/i386/pr96539.c
  7452cc0f5db1672bf14a67b2874c0d0e  gcc/testsuite/gcc.target/i386/pr96562-1.c
  6d9da6efe469401a64586c5cd12edddf  gcc/testsuite/gcc.target/i386/pr96696.c
  f48be0c67737fdfd86cf3b33ed03b238  gcc/testsuite/gcc.target/i386/pr96744-1.c
--- 71468,71474 ----
  d1a0d25008e21716be4b9e1ce0338b49  gcc/testsuite/gcc.target/i386/pr96262-1.c
  a58801ab95d6c36f56d320212bc09df3  gcc/testsuite/gcc.target/i386/pr96271.c
  45643988cf15c9ae848c59ace0b86744  gcc/testsuite/gcc.target/i386/pr96298.c
! 18cb4bda10170f389afa9dcd9c702b9d  gcc/testsuite/gcc.target/i386/pr96539.c
  7452cc0f5db1672bf14a67b2874c0d0e  gcc/testsuite/gcc.target/i386/pr96562-1.c
  6d9da6efe469401a64586c5cd12edddf  gcc/testsuite/gcc.target/i386/pr96696.c
  f48be0c67737fdfd86cf3b33ed03b238  gcc/testsuite/gcc.target/i386/pr96744-1.c
*************** da7936c976f9e834f5cbd253109ebc0e  gcc/te
*** 67691,67701 ****
  f8ecf4adafb31200f6cb5f02f878203e  gcc/testsuite/gcc.target/i386/pr97971.c
  e3d35c4b9c35829e096fbb3d11b860df  gcc/testsuite/gcc.target/i386/pr97978.c
  670c12a0948ada55645036481c5bd816  gcc/testsuite/gcc.target/i386/pr98060.c
! 6afe67531438d8115c46cbbd340d8f73  gcc/testsuite/gcc.target/i386/pr98063.c
  b7ddfcf2edaca40780663862d490b44f  gcc/testsuite/gcc.target/i386/pr98079.c
  3e550210eceaa9555180fcdc5434cf50  gcc/testsuite/gcc.target/i386/pr98086.c
  f05a11a90b720489273566f54bf45421  gcc/testsuite/gcc.target/i386/pr98100.c
  70971c1416774bc2945ea932f03a5c73  gcc/testsuite/gcc.target/i386/pr98161.c
  91547df733560031fecb190e05b697bb  gcc/testsuite/gcc.target/i386/pr98169.c
  489d73ba45e60b5e7c2ae506c5f44042  gcc/testsuite/gcc.target/i386/pr98212.c
  e1cacce592c991893bbfb6d3b8ede106  gcc/testsuite/gcc.target/i386/pr98218-1.c
--- 71518,71529 ----
  f8ecf4adafb31200f6cb5f02f878203e  gcc/testsuite/gcc.target/i386/pr97971.c
  e3d35c4b9c35829e096fbb3d11b860df  gcc/testsuite/gcc.target/i386/pr97978.c
  670c12a0948ada55645036481c5bd816  gcc/testsuite/gcc.target/i386/pr98060.c
! de9a29845d5a93f4882c3e21249e708f  gcc/testsuite/gcc.target/i386/pr98063.c
  b7ddfcf2edaca40780663862d490b44f  gcc/testsuite/gcc.target/i386/pr98079.c
  3e550210eceaa9555180fcdc5434cf50  gcc/testsuite/gcc.target/i386/pr98086.c
  f05a11a90b720489273566f54bf45421  gcc/testsuite/gcc.target/i386/pr98100.c
  70971c1416774bc2945ea932f03a5c73  gcc/testsuite/gcc.target/i386/pr98161.c
+ 913d3341827109307befade86aaaf250  gcc/testsuite/gcc.target/i386/pr98167.c
  91547df733560031fecb190e05b697bb  gcc/testsuite/gcc.target/i386/pr98169.c
  489d73ba45e60b5e7c2ae506c5f44042  gcc/testsuite/gcc.target/i386/pr98212.c
  e1cacce592c991893bbfb6d3b8ede106  gcc/testsuite/gcc.target/i386/pr98218-1.c
*************** e73203bdab86f1437f72992c8108e5f2  gcc/te
*** 67717,67723 ****
  218c0ce39bcca31eb5d5bf91fc82c2fc  gcc/testsuite/gcc.target/i386/pr98434-2.c
  88f43a2d69db7f2777c6c19a5b6f2594  gcc/testsuite/gcc.target/i386/pr98439.c
  3f276b7bd6149fbec0dd83a41acb41cd  gcc/testsuite/gcc.target/i386/pr98468.c
! 9b88de17937851cbfbce595d92cc2020  gcc/testsuite/gcc.target/i386/pr98482-1.c
  2430d914288f17ecc7fd2bc12b5de212  gcc/testsuite/gcc.target/i386/pr98482-2.c
  5b69e4f37f3a4dc1c806fab46f753f91  gcc/testsuite/gcc.target/i386/pr98495-1.c
  f4b5bffd2c9013553fd76ef2b67b4932  gcc/testsuite/gcc.target/i386/pr98495-2.c
--- 71545,71551 ----
  218c0ce39bcca31eb5d5bf91fc82c2fc  gcc/testsuite/gcc.target/i386/pr98434-2.c
  88f43a2d69db7f2777c6c19a5b6f2594  gcc/testsuite/gcc.target/i386/pr98439.c
  3f276b7bd6149fbec0dd83a41acb41cd  gcc/testsuite/gcc.target/i386/pr98468.c
! 35cdb6ce293794e7bdcbcc8b57e015c4  gcc/testsuite/gcc.target/i386/pr98482-1.c
  2430d914288f17ecc7fd2bc12b5de212  gcc/testsuite/gcc.target/i386/pr98482-2.c
  5b69e4f37f3a4dc1c806fab46f753f91  gcc/testsuite/gcc.target/i386/pr98495-1.c
  f4b5bffd2c9013553fd76ef2b67b4932  gcc/testsuite/gcc.target/i386/pr98495-2.c
*************** bd02ca4144772eaf8136dbd10c3fd09c  gcc/te
*** 67742,67747 ****
--- 71570,71576 ----
  a7f00e32a1ff209c9cadf082f30822ca  gcc/testsuite/gcc.target/i386/pr98737-6.c
  14c022ec4f3089265b3ee5764e4b4b2b  gcc/testsuite/gcc.target/i386/pr98737-7.c
  e674bc0a3568e20f2cff8d319251d559  gcc/testsuite/gcc.target/i386/pr98833.c
+ 3132e2bdec118ca2a92d5a53a4495a84  gcc/testsuite/gcc.target/i386/pr98865.c
  13f2ed187bf7a12c46fe6f9bead4c78b  gcc/testsuite/gcc.target/i386/pr98911.c
  a2799012296658b7581bee7cb15827db  gcc/testsuite/gcc.target/i386/pr98928.c
  3b707ff0fa9510c15e327859af5c46b6  gcc/testsuite/gcc.target/i386/pr99025.c
*************** a9d8b452ef25921e567309d0cc5e4daf  gcc/te
*** 67753,67766 ****
  c58d1c95f1a45ece2f51ade32dc55823  gcc/testsuite/gcc.target/i386/pr99454.c
  f961c1d8f947043bf2b762f5fc35531a  gcc/testsuite/gcc.target/i386/pr99463-2.c
  0d4aa0e3c5217bd61c80adc456e50b25  gcc/testsuite/gcc.target/i386/pr99463.c
! 812ceb61fd7dac741ab0d4054cf661f7  gcc/testsuite/gcc.target/i386/pr99464.c
! e76bf7b176ec89f531f1b0d2fe971f14  gcc/testsuite/gcc.target/i386/pr99530-1.c
! efcc3b0030ffe11cce61a7538a9b2ccc  gcc/testsuite/gcc.target/i386/pr99530-2.c
! e819fc760d8e721b1c4caa3edc9e7e49  gcc/testsuite/gcc.target/i386/pr99530-3.c
! ac8b252af4fba05cccbbb422257f61d5  gcc/testsuite/gcc.target/i386/pr99530-4.c
! 86388f8d6ad435e00cc67e6f48c81d78  gcc/testsuite/gcc.target/i386/pr99530-5.c
! 9f5d7919054aa393f75903c1f4cb342a  gcc/testsuite/gcc.target/i386/pr99530-6.c
! fec76088d24d8a97da60b73469c5ccd9  gcc/testsuite/gcc.target/i386/pr99531.c
  5486d1afdbf1b54f2a6bb18f55e8463d  gcc/testsuite/gcc.target/i386/pr99591.c
  50d8d196bff1de9d48e4220d453251f2  gcc/testsuite/gcc.target/i386/pr99600.c
  5c90090d1d1e1b7415543965fbde2289  gcc/testsuite/gcc.target/i386/pr99726.c
--- 71582,71595 ----
  c58d1c95f1a45ece2f51ade32dc55823  gcc/testsuite/gcc.target/i386/pr99454.c
  f961c1d8f947043bf2b762f5fc35531a  gcc/testsuite/gcc.target/i386/pr99463-2.c
  0d4aa0e3c5217bd61c80adc456e50b25  gcc/testsuite/gcc.target/i386/pr99463.c
! 93d34a3ab3374dee5f772a3c620facbe  gcc/testsuite/gcc.target/i386/pr99464.c
! 9371e74e50a7e7b6ed790f5b6061ca4f  gcc/testsuite/gcc.target/i386/pr99530-1.c
! 443302c985e2329556fcaa7ac5a3a0ea  gcc/testsuite/gcc.target/i386/pr99530-2.c
! 1fb4306676e9dda0226c23558fe4187c  gcc/testsuite/gcc.target/i386/pr99530-3.c
! d88d894f59e12289ac2cfeaa36951ce0  gcc/testsuite/gcc.target/i386/pr99530-4.c
! a0b729acde9699d1371dbbc4a150e4c3  gcc/testsuite/gcc.target/i386/pr99530-5.c
! 25a78143f84c4b7633b9577c2adb7e30  gcc/testsuite/gcc.target/i386/pr99530-6.c
! 3dc7436738419d05898b026d61d1ffed  gcc/testsuite/gcc.target/i386/pr99531.c
  5486d1afdbf1b54f2a6bb18f55e8463d  gcc/testsuite/gcc.target/i386/pr99591.c
  50d8d196bff1de9d48e4220d453251f2  gcc/testsuite/gcc.target/i386/pr99600.c
  5c90090d1d1e1b7415543965fbde2289  gcc/testsuite/gcc.target/i386/pr99726.c
*************** c39efc4096726785a0d8fb50d2037679  gcc/te
*** 67772,67790 ****
  2b686392753086234e196d009c01de7b  gcc/testsuite/gcc.target/i386/pr99744-6.c
  1184f2fb7f7bb564229b203997b52859  gcc/testsuite/gcc.target/i386/pr99744-7.c
  4d9c7be1b278961172c90ef75258d56c  gcc/testsuite/gcc.target/i386/pr99744-8.c
! a71198813fff29be79900d9ec3e782da  gcc/testsuite/gcc.target/i386/pr99753.c
  a3e5a8589b650ac289a1ebcf789619f6  gcc/testsuite/gcc.target/i386/pr99754-1.c
  4b02ca6501588dc1490c310e786ee13e  gcc/testsuite/gcc.target/i386/pr99754-2.c
  5f031f82b484c0f439288d4926362365  gcc/testsuite/gcc.target/i386/pr99863.c
! e2033457a6fda578099d3b1c2092a4fa  gcc/testsuite/gcc.target/i386/pr99881.c
  939447bef72a36fa24dc61bac7010b1b  gcc/testsuite/gcc.target/i386/pr99905.c
  bb74fe2f09b19928e6c4047fee136b0b  gcc/testsuite/gcc.target/i386/prefer-vector-width-attr.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
  4561455bd0f6ca8ce0b0f477f2897ee2  gcc/testsuite/gcc.target/i386/ptwrite1.c
  90a00e0f61849345a274cd1b4f96c029  gcc/testsuite/gcc.target/i386/ptwrite2.c
  1c20da95e9e947694dd009c5a701a628  gcc/testsuite/gcc.target/i386/quad-sse.c
  380eaffe3002406a883d64d65cd08581  gcc/testsuite/gcc.target/i386/quad-sse4.c
  9934554e37602f57ebd1d5ff71e36078  gcc/testsuite/gcc.target/i386/rdfsbase-1.c
  f65c92042f645a4147cc6f4fcc1d717a  gcc/testsuite/gcc.target/i386/rdfsbase-2.c
  47f1d67eee8b98ccbc0ba91d2ba98f10  gcc/testsuite/gcc.target/i386/rdgsbase-1.c
--- 71601,71630 ----
  2b686392753086234e196d009c01de7b  gcc/testsuite/gcc.target/i386/pr99744-6.c
  1184f2fb7f7bb564229b203997b52859  gcc/testsuite/gcc.target/i386/pr99744-7.c
  4d9c7be1b278961172c90ef75258d56c  gcc/testsuite/gcc.target/i386/pr99744-8.c
! 53efd94d15c3daa4915e31d423ea9336  gcc/testsuite/gcc.target/i386/pr99753.c
  a3e5a8589b650ac289a1ebcf789619f6  gcc/testsuite/gcc.target/i386/pr99754-1.c
  4b02ca6501588dc1490c310e786ee13e  gcc/testsuite/gcc.target/i386/pr99754-2.c
  5f031f82b484c0f439288d4926362365  gcc/testsuite/gcc.target/i386/pr99863.c
! 3e24fab4cd6a98c884b490eae74a3aaf  gcc/testsuite/gcc.target/i386/pr99881.c
  939447bef72a36fa24dc61bac7010b1b  gcc/testsuite/gcc.target/i386/pr99905.c
  bb74fe2f09b19928e6c4047fee136b0b  gcc/testsuite/gcc.target/i386/prefer-vector-width-attr.c
+ aac8ef14c7538ca8bb3df8ee0d3a6144  gcc/testsuite/gcc.target/i386/prefetchi-1.c
+ 5fb0aad075edba2ca6bd9c52e18048a4  gcc/testsuite/gcc.target/i386/prefetchi-2.c
+ 0d239d33a9eeb5af2e5ffd12b6d373df  gcc/testsuite/gcc.target/i386/prefetchi-3.c
+ 89c120add0d0cea3a2a86aaa0863dd2e  gcc/testsuite/gcc.target/i386/prefetchi-4.c
+ 7ac67198871c4cac2af2231517ff5658  gcc/testsuite/gcc.target/i386/prefetchi-5.c
  24ceb6d5f3f5cde4b9d852839bdb98ae  gcc/testsuite/gcc.target/i386/prefetchw-1.c
  f11f4731c396f099373c033ab016a64f  gcc/testsuite/gcc.target/i386/prefetchwt1-1.c
  4561455bd0f6ca8ce0b0f477f2897ee2  gcc/testsuite/gcc.target/i386/ptwrite1.c
  90a00e0f61849345a274cd1b4f96c029  gcc/testsuite/gcc.target/i386/ptwrite2.c
  1c20da95e9e947694dd009c5a701a628  gcc/testsuite/gcc.target/i386/quad-sse.c
  380eaffe3002406a883d64d65cd08581  gcc/testsuite/gcc.target/i386/quad-sse4.c
+ ff6f0f836e0b466201844a35fdf383c5  gcc/testsuite/gcc.target/i386/rao-helper.h
+ f2d84db3c314458ac4839fe001c1bc1c  gcc/testsuite/gcc.target/i386/raoint-1.c
+ c2971ff23fbc8134c0463c0bc6621697  gcc/testsuite/gcc.target/i386/raoint-aadd-2.c
+ d0cd1b1558d7f3aa670d07b17e28892d  gcc/testsuite/gcc.target/i386/raoint-aand-2.c
+ 297518408472f8e129cb6a4ba9bbda2a  gcc/testsuite/gcc.target/i386/raoint-aor-2.c
+ b83d9424492e932ab4ddac51f3bc8363  gcc/testsuite/gcc.target/i386/raoint-axor-2.c
  9934554e37602f57ebd1d5ff71e36078  gcc/testsuite/gcc.target/i386/rdfsbase-1.c
  f65c92042f645a4147cc6f4fcc1d717a  gcc/testsuite/gcc.target/i386/rdfsbase-2.c
  47f1d67eee8b98ccbc0ba91d2ba98f10  gcc/testsuite/gcc.target/i386/rdgsbase-1.c
*************** ced55c097c7540a16ac1207e0104aafd  gcc/te
*** 67892,67907 ****
  76fe9bc79bc28950109f6611fb70870f  gcc/testsuite/gcc.target/i386/spellcheck-options-3.c
  262a2bdbd21e9f24d1d5ec309b4ea792  gcc/testsuite/gcc.target/i386/spellcheck-options-4.c
  88e1317c51ed7bb5ed3c1716fc086edb  gcc/testsuite/gcc.target/i386/spellcheck-options-5.c
! 5bfaae8e6f8201c0caf8e537601fae24  gcc/testsuite/gcc.target/i386/spill_to_mask-1.c
  bc6b7244a28a5688b5a5c75593461393  gcc/testsuite/gcc.target/i386/spill_to_mask-2.c
  804deea8c4f33f26f4da6a212c76c676  gcc/testsuite/gcc.target/i386/spill_to_mask-3.c
  305e3a3b48c4296588bdf1eb1a8ede55  gcc/testsuite/gcc.target/i386/spill_to_mask-4.c
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! 1bb2f373c5a5eb9db6b65e377d0dac63  gcc/testsuite/gcc.target/i386/sse-12.c
! 8db7dedcd3e98eefaeb4be82f3471d6c  gcc/testsuite/gcc.target/i386/sse-13.c
! f5d7ffd0af514d091d844db8a40b5764  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
--- 71732,71747 ----
  76fe9bc79bc28950109f6611fb70870f  gcc/testsuite/gcc.target/i386/spellcheck-options-3.c
  262a2bdbd21e9f24d1d5ec309b4ea792  gcc/testsuite/gcc.target/i386/spellcheck-options-4.c
  88e1317c51ed7bb5ed3c1716fc086edb  gcc/testsuite/gcc.target/i386/spellcheck-options-5.c
! fd58dafdb97c51dad37c2b05ade39391  gcc/testsuite/gcc.target/i386/spill_to_mask-1.c
  bc6b7244a28a5688b5a5c75593461393  gcc/testsuite/gcc.target/i386/spill_to_mask-2.c
  804deea8c4f33f26f4da6a212c76c676  gcc/testsuite/gcc.target/i386/spill_to_mask-3.c
  305e3a3b48c4296588bdf1eb1a8ede55  gcc/testsuite/gcc.target/i386/spill_to_mask-4.c
  cc8a162617784a2e883a5e726d28ebde  gcc/testsuite/gcc.target/i386/sse-1.c
  31f7ce4356be3b5523e49df7d4ad0951  gcc/testsuite/gcc.target/i386/sse-10.c
  49bde97b271274cb2bc26697ce2b19be  gcc/testsuite/gcc.target/i386/sse-11.c
! d7c1af06bacfa705cb95c916f47a2010  gcc/testsuite/gcc.target/i386/sse-12.c
! 26a3deabdd423e91b1550b2dd3a26d25  gcc/testsuite/gcc.target/i386/sse-13.c
! f795187d62f27a8281898f11142171ea  gcc/testsuite/gcc.target/i386/sse-14.c
  92ad37b5ad7426d489b1b6f1ba0f41ea  gcc/testsuite/gcc.target/i386/sse-15.c
  2e7b115c4bd7984925f1a8d17a5faf67  gcc/testsuite/gcc.target/i386/sse-16.c
  f660e67b22cb44e6a6b38a247b1d78c3  gcc/testsuite/gcc.target/i386/sse-17.c
*************** f660e67b22cb44e6a6b38a247b1d78c3  gcc/te
*** 67910,67918 ****
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 56e7249d1496bcb9d2310773569c2635  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! e0a379d5c5f2bf69e6d7a535f6c875d1  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  74d7245c448c34b5d69a304bcd162956  gcc/testsuite/gcc.target/i386/sse-26.c
--- 71750,71758 ----
  bb148b6e9dd40de90aed723794e38216  gcc/testsuite/gcc.target/i386/sse-2.c
  c23a0ea446a060d55e49e48429513f7d  gcc/testsuite/gcc.target/i386/sse-20.c
  d5e7e4c7d488a953399d853e48aa484e  gcc/testsuite/gcc.target/i386/sse-21.c
! 16fb832b50fecbd99928a9356103cccc  gcc/testsuite/gcc.target/i386/sse-22.c
  1c2df57cb3d7d6a3daf4084135ba9b1b  gcc/testsuite/gcc.target/i386/sse-22a.c
! d3f0a0a2a7404257578e6f05560c3b6d  gcc/testsuite/gcc.target/i386/sse-23.c
  3fe1d48ff9d52631da56f04cc922a9cb  gcc/testsuite/gcc.target/i386/sse-24.c
  f839ec28fa786a06dabe541954c1b1ae  gcc/testsuite/gcc.target/i386/sse-25.c
  74d7245c448c34b5d69a304bcd162956  gcc/testsuite/gcc.target/i386/sse-26.c
*************** dbf4c7b6ce3fccf7ee1941f8e1034f73  gcc/te
*** 67935,67940 ****
--- 71775,71782 ----
  ed911466c07c0736e02e66d90b095100  gcc/testsuite/gcc.target/i386/sse-comiss-4.c
  d9fb3b3486eefe8b11ff61c445a11e02  gcc/testsuite/gcc.target/i386/sse-comiss-5.c
  3ca8e7c267b407960cc458e7275698b7  gcc/testsuite/gcc.target/i386/sse-comiss-6.c
+ 76beefc74648ddae77f1cec0348bf112  gcc/testsuite/gcc.target/i386/sse-comiss-pr106113-1.c
+ 9cd398f711f85815ad6c261a886bc761  gcc/testsuite/gcc.target/i386/sse-comiss-pr106113-2.c
  adfe74cb36ffba9acf9b22f79f8187a1  gcc/testsuite/gcc.target/i386/sse-copysignf-vec.c
  6f95113603c56abe57a1d7b4816deb8e  gcc/testsuite/gcc.target/i386/sse-covert-1.c
  899fec05563e846a830eeed834029d2f  gcc/testsuite/gcc.target/i386/sse-cvtsi2ss-1.c
*************** e506da4c6de413148b5b72fc61ef0c1a  gcc/te
*** 67965,67970 ****
--- 71807,71813 ----
  0c20fe3e793cdf3df534a3410f87980d  gcc/testsuite/gcc.target/i386/sse-movss-1.c
  caa588177b3a91e2a57fd162fd9c803f  gcc/testsuite/gcc.target/i386/sse-movss-2.c
  a4eecf1c384ff0251e2c9f7dc262fcb2  gcc/testsuite/gcc.target/i386/sse-movss-3.c
+ 33f6c5e44118ee8b6a9363daabf2978d  gcc/testsuite/gcc.target/i386/sse-movss-4.c
  495f0f96f3d88e2a5aa6dcf7b01cf317  gcc/testsuite/gcc.target/i386/sse-movups-1.c
  bcf0d6d51d39f674c2672181211f8783  gcc/testsuite/gcc.target/i386/sse-movups-2.c
  0496ef0acd33a936ebe83ac1bae2c8f3  gcc/testsuite/gcc.target/i386/sse-mulps-1.c
*************** e732da1bea01895c7e57d68c95815451  gcc/te
*** 67986,67991 ****
--- 71829,71836 ----
  0468413a6454b3f6e710d0233f5ed997  gcc/testsuite/gcc.target/i386/sse-ucomiss-4.c
  677d791ca3dcc7e877a425df590bfd01  gcc/testsuite/gcc.target/i386/sse-ucomiss-5.c
  4a6ecdfcf542baef0610e56cf9bacdc6  gcc/testsuite/gcc.target/i386/sse-ucomiss-6.c
+ dfc74bea1383cb4a2a98e09bcd991364  gcc/testsuite/gcc.target/i386/sse-ucomiss-pr106113-1.c
+ 6eb9c4bc4a6fbd86ef7ed9cd33b4b652  gcc/testsuite/gcc.target/i386/sse-ucomiss-pr106113-2.c
  e80e025b5521ce049d975cd0376dd73f  gcc/testsuite/gcc.target/i386/sse-unpckhps-1.c
  96937d4f53343afbd857a121ebb693f7  gcc/testsuite/gcc.target/i386/sse-unpcklps-1.c
  27e078e9a291d5acadabf500a076edaa  gcc/testsuite/gcc.target/i386/sse-vect-types.c
*************** d577617bdd4e8a2de2ec9b6e4bde1eb4  gcc/te
*** 67994,67999 ****
--- 71839,71847 ----
  45d458b0f755e9542ac936ae4fc8eb16  gcc/testsuite/gcc.target/i386/sse2-addsd-1.c
  f31713939bdc5209351df9a08b597557  gcc/testsuite/gcc.target/i386/sse2-andnpd-1.c
  ad1dd097598261bb606526980c62c78e  gcc/testsuite/gcc.target/i386/sse2-andpd-1.c
+ f755c7b1256859497debfc77f9c3ca36  gcc/testsuite/gcc.target/i386/sse2-bfloat16-1.c
+ 534cad63c699a360c7081b2647c43ab9  gcc/testsuite/gcc.target/i386/sse2-bfloat16-2.c
+ 783e29c7002c1fa71d641869a82c7f8b  gcc/testsuite/gcc.target/i386/sse2-bfloat16-scalar-typecheck.c
  5c043f9abbc3ad9ae973384fd30850c0  gcc/testsuite/gcc.target/i386/sse2-builtin-fp-int-inexact.c
  6658245d9cdd7b084f9f2fa2dcc881f2  gcc/testsuite/gcc.target/i386/sse2-check.h
  12ed5dd15b94275feb351ef37ce96d3d  gcc/testsuite/gcc.target/i386/sse2-cmpsd-1.c
*************** f9303cbefb35bb531ae6bf99854d6e5b  gcc/te
*** 68003,68008 ****
--- 71851,71858 ----
  eee6bd623599432f7832e0c7317ccdb8  gcc/testsuite/gcc.target/i386/sse2-comisd-4.c
  b4178c256301ad4dedf8beee720d4f58  gcc/testsuite/gcc.target/i386/sse2-comisd-5.c
  de64abbae5fd84b85677810337b1ac54  gcc/testsuite/gcc.target/i386/sse2-comisd-6.c
+ 2d1ca5779f1a20c85af4460a91f0313e  gcc/testsuite/gcc.target/i386/sse2-comisd-pr106113-1.c
+ df22f12267f810c018c686f009e7cba9  gcc/testsuite/gcc.target/i386/sse2-comisd-pr106113-2.c
  14b9f4bc4c0f19eb6e584d8ef3272cf5  gcc/testsuite/gcc.target/i386/sse2-copysign-vec.c
  324b9d10bea70a8599cbd3f177dcf836  gcc/testsuite/gcc.target/i386/sse2-cvt-1.c
  f2f38b39c3ce88f13ccffa4f0158b251  gcc/testsuite/gcc.target/i386/sse2-cvt-2.c
*************** a8f1701db23e2d9c338b73798609d3d9  gcc/te
*** 68055,68061 ****
  268792e901957ee3d55d6c9ed109960e  gcc/testsuite/gcc.target/i386/sse2-mmx-19a.c
  0823a669795e08180288fa4960c50170  gcc/testsuite/gcc.target/i386/sse2-mmx-2.c
  385e60dfc67ea7785f17a6360ea5fd55  gcc/testsuite/gcc.target/i386/sse2-mmx-20.c
! 841920639bc5a23b1d1a900055238f58  gcc/testsuite/gcc.target/i386/sse2-mmx-21.c
  8c5fd3d91dd84cb92c4107b0c15766d8  gcc/testsuite/gcc.target/i386/sse2-mmx-22.c
  83f9447cf4f9d0c9e315b9313d45b313  gcc/testsuite/gcc.target/i386/sse2-mmx-3.c
  470ec9eb7900bfe7b555ccef273b6398  gcc/testsuite/gcc.target/i386/sse2-mmx-4.c
--- 71905,71911 ----
  268792e901957ee3d55d6c9ed109960e  gcc/testsuite/gcc.target/i386/sse2-mmx-19a.c
  0823a669795e08180288fa4960c50170  gcc/testsuite/gcc.target/i386/sse2-mmx-2.c
  385e60dfc67ea7785f17a6360ea5fd55  gcc/testsuite/gcc.target/i386/sse2-mmx-20.c
! f800bfb7952044ea7cad286a3bc450ab  gcc/testsuite/gcc.target/i386/sse2-mmx-21.c
  8c5fd3d91dd84cb92c4107b0c15766d8  gcc/testsuite/gcc.target/i386/sse2-mmx-22.c
  83f9447cf4f9d0c9e315b9313d45b313  gcc/testsuite/gcc.target/i386/sse2-mmx-3.c
  470ec9eb7900bfe7b555ccef273b6398  gcc/testsuite/gcc.target/i386/sse2-mmx-4.c
*************** df07554dcb7cb2f474fb8cb88dce4c3e  gcc/te
*** 68068,68073 ****
--- 71918,71924 ----
  a9f2b3f67cc7cb3fb9c0619f634d95c3  gcc/testsuite/gcc.target/i386/sse2-mmx-cvtps2pi.c
  246aec5060d9e32ebd3fdcc6119f9387  gcc/testsuite/gcc.target/i386/sse2-mmx-cvttps2pi.c
  dcc8ed3eee64487dcb2955693af5ca25  gcc/testsuite/gcc.target/i386/sse2-mmx-maskmovq.c
+ 03c4ea51dc32d67f20c5680428b2bebe  gcc/testsuite/gcc.target/i386/sse2-mmx-movss-1.c
  aeedf1243eb2ac92a988260ff4f330e2  gcc/testsuite/gcc.target/i386/sse2-mmx-packssdw.c
  ebb38c7ab7edcfdb1a20ad6d30e500be  gcc/testsuite/gcc.target/i386/sse2-mmx-packsswb.c
  b9e6b582fd5bc8c137d2bb46eae6f3bb  gcc/testsuite/gcc.target/i386/sse2-mmx-packuswb.c
*************** f74da89ccc25550df06087c141afdd97  gcc/te
*** 68159,68164 ****
--- 72010,72016 ----
  d5b818f965db3f8a6fee907b748785d9  gcc/testsuite/gcc.target/i386/sse2-movs.c
  70fdf1bc420ca06c4d2d3433dd3722a3  gcc/testsuite/gcc.target/i386/sse2-movsd-1.c
  a1c36049c008e71e9c8fbeb3c7516204  gcc/testsuite/gcc.target/i386/sse2-movsd-2.c
+ 1609f26e2102197f67fbf830963fe2c3  gcc/testsuite/gcc.target/i386/sse2-movsd-3.c
  dba017852b221b4a3d9870e2038939d9  gcc/testsuite/gcc.target/i386/sse2-movupd-1.c
  9ad6864502f6f0070d01ce084e5e1fcb  gcc/testsuite/gcc.target/i386/sse2-movupd-2.c
  2e07b99bbbbd651c64e4496c1201d502  gcc/testsuite/gcc.target/i386/sse2-mul-1.c
*************** c6cc7b9cddecbd362f62ee43f93aad9a  gcc/te
*** 68278,68283 ****
--- 72130,72137 ----
  0141e98a0c825329cbb5a4ab981c7ae2  gcc/testsuite/gcc.target/i386/sse2-ucomisd-4.c
  8c34ba2618e91e021ae0ec78981af7fe  gcc/testsuite/gcc.target/i386/sse2-ucomisd-5.c
  bab76acbc7e8c59491b8644934eb6ecb  gcc/testsuite/gcc.target/i386/sse2-ucomisd-6.c
+ c4c37dada406934768a6f0911f10c76e  gcc/testsuite/gcc.target/i386/sse2-ucomisd-pr106113-1.c
+ c8e314bac263e55f2fcbbdf16df8d2d1  gcc/testsuite/gcc.target/i386/sse2-ucomisd-pr106113-2.c
  1b06ca6a8e7b298579d4f8b082218114  gcc/testsuite/gcc.target/i386/sse2-unpack-1.c
  43e8ca0937f6b7cbab38830389bf3387  gcc/testsuite/gcc.target/i386/sse2-unpckhpd-1.c
  85905c2a21413d27a8372674c172763a  gcc/testsuite/gcc.target/i386/sse2-unpcklpd-1.c
*************** bab76acbc7e8c59491b8644934eb6ecb  gcc/te
*** 68292,68297 ****
--- 72146,72153 ----
  cf99e4d1cf8d2c89fd3dbdda184cc0ea  gcc/testsuite/gcc.target/i386/sse2-v1ti-shift-2.c
  4eba81e6b3506e6c73a8b1b2aeac0f41  gcc/testsuite/gcc.target/i386/sse2-v1ti-shift-3.c
  9a8d5b480c8112c2e4351b9e0c1fcf18  gcc/testsuite/gcc.target/i386/sse2-v1ti-shift.c
+ 31b7095b565797047cf7de6e161fdb82  gcc/testsuite/gcc.target/i386/sse2-v1ti-veq.c
+ 563427a8f754f4f95465a884cd9e7ed2  gcc/testsuite/gcc.target/i386/sse2-v1ti-vne.c
  f84fad3c04a7990bc664cb9368714469  gcc/testsuite/gcc.target/i386/sse2-v1ti-zext.c
  dc9066a5a4e2651d9a9a03c5eef62f20  gcc/testsuite/gcc.target/i386/sse2-vec-1.c
  5ef6907bdb04ea9524e19fcbc3e33d50  gcc/testsuite/gcc.target/i386/sse2-vec-2.c
*************** fd3b33fd84346bf0b8d462c1febb06fb  gcc/te
*** 68439,68444 ****
--- 72295,72309 ----
  ff4a381ee5305c9a18c5754c13c12790  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-2a.c
  e74f5b8f16d9e3c28227ea31186f816a  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-3.c
  a2f5b0c7365f7c93751ba3a6aa3eee83  gcc/testsuite/gcc.target/i386/sse4_1-set-v16qi-3a.c
+ edddd6da3bf0853cb20bb152f72f3334  gcc/testsuite/gcc.target/i386/sse4_1-stv-1.c
+ 0d4ea3fb9a13317ac032d3b746eb211a  gcc/testsuite/gcc.target/i386/sse4_1-stv-2.c
+ 7ccf320367db828d9231b02a5a2706de  gcc/testsuite/gcc.target/i386/sse4_1-stv-3.c
+ 60adbd8686ae10af58220efca0984cce  gcc/testsuite/gcc.target/i386/sse4_1-stv-4.c
+ 188e6fb351c623587b3438faa7402197  gcc/testsuite/gcc.target/i386/sse4_1-stv-5.c
+ 0141a211b57a98b2a722a6e14ddc2551  gcc/testsuite/gcc.target/i386/sse4_1-stv-6.c
+ e1c25694b14becd08b14458203f36c4e  gcc/testsuite/gcc.target/i386/sse4_1-stv-7.c
+ c5d8a69553e93d20da53aa97dbd851fd  gcc/testsuite/gcc.target/i386/sse4_1-stv-8.c
+ 68831cd1afc62953bae7add902600a86  gcc/testsuite/gcc.target/i386/sse4_1-stv-9.c
  6ce5f7a9e3c9fffe77b1a62fe72e8122  gcc/testsuite/gcc.target/i386/sse4_1-trunc-vec.c
  73a07de2b59200c14c97da9c1f6888c8  gcc/testsuite/gcc.target/i386/sse4_1-truncf-vec.c
  ebc8d116f761865e717970e537ac9fc2  gcc/testsuite/gcc.target/i386/sse4_1-vec-set-1.c
*************** a0e47f84ef019a0c0609e9c44732ef14  gcc/te
*** 68495,68500 ****
--- 72360,72366 ----
  6db34eb726bd47c0e8fec4f80e73f19f  gcc/testsuite/gcc.target/i386/ssse3-pabsb.c
  089dfc478b2c4e52d599a05740fde627  gcc/testsuite/gcc.target/i386/ssse3-pabsd.c
  4766ef3390ab65d7157d3a7026ef19d3  gcc/testsuite/gcc.target/i386/ssse3-pabsw.c
+ 37a96067a07569fd8c336c1aea0889c5  gcc/testsuite/gcc.target/i386/ssse3-palignr-2.c
  991d94225da143f6317d74cd4d02ce8f  gcc/testsuite/gcc.target/i386/ssse3-palignr.c
  619188fb3e428545fc39fd5d269cc0f3  gcc/testsuite/gcc.target/i386/ssse3-phaddd.c
  08762d29ce740113771a91a89d9f368f  gcc/testsuite/gcc.target/i386/ssse3-phaddsw.c
*************** b3082251265483716a53827b31517936  gcc/te
*** 68510,68522 ****
  a9f88e9f5dc3a65651e4aac1c477bd99  gcc/testsuite/gcc.target/i386/ssse3-psignw.c
  350a25c3aea2becac5c56cff7b4bf401  gcc/testsuite/gcc.target/i386/ssse3-vals.h
  477939a29a89fa9e24f140cf485795a0  gcc/testsuite/gcc.target/i386/stack-check-11.c
! 6a99e9b76b37149be8cd25e15ff99650  gcc/testsuite/gcc.target/i386/stack-check-12.c
! 22483b80d7ac0874da87507768c048f1  gcc/testsuite/gcc.target/i386/stack-check-17.c
  f4f31f4c82164ce7b9fec1c877d2f06a  gcc/testsuite/gcc.target/i386/stack-check-18.c
  85ba669397fb051dbc3e76f146553033  gcc/testsuite/gcc.target/i386/stack-check-19.c
  ca5571ee490db85826dd15cbfd5c6555  gcc/testsuite/gcc.target/i386/stack-prot-guard.c
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
! d4a0de32b5fc72f0848beec394a4cb3e  gcc/testsuite/gcc.target/i386/stack-prot-sym.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
  f2432fa4e94240719fb29b95541fb57b  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
--- 72376,72388 ----
  a9f88e9f5dc3a65651e4aac1c477bd99  gcc/testsuite/gcc.target/i386/ssse3-psignw.c
  350a25c3aea2becac5c56cff7b4bf401  gcc/testsuite/gcc.target/i386/ssse3-vals.h
  477939a29a89fa9e24f140cf485795a0  gcc/testsuite/gcc.target/i386/stack-check-11.c
! 663ee911f5f6c14483010012c61ad672  gcc/testsuite/gcc.target/i386/stack-check-12.c
! 7844ca617d81af9d9c4b5080dbdde5fe  gcc/testsuite/gcc.target/i386/stack-check-17.c
  f4f31f4c82164ce7b9fec1c877d2f06a  gcc/testsuite/gcc.target/i386/stack-check-18.c
  85ba669397fb051dbc3e76f146553033  gcc/testsuite/gcc.target/i386/stack-check-19.c
  ca5571ee490db85826dd15cbfd5c6555  gcc/testsuite/gcc.target/i386/stack-prot-guard.c
  79da87a540843a0e1db2e7c3a4c97b4a  gcc/testsuite/gcc.target/i386/stack-prot-kernel.c
! 915a1e795ed7f5bdc16dea9e8b895e29  gcc/testsuite/gcc.target/i386/stack-prot-sym.c
  734f9c675c89f8938b16af80f2c9e1b8  gcc/testsuite/gcc.target/i386/stack-realign-win.c
  f005410b5bda86af8a785a48fccbbc30  gcc/testsuite/gcc.target/i386/stack-realign.c
  f2432fa4e94240719fb29b95541fb57b  gcc/testsuite/gcc.target/i386/stack-usage-realign.c
*************** e797e3acc17ea660fd93c0911e210be1  gcc/te
*** 68532,68538 ****
  22fcf3b6f05e35417473446a6401735c  gcc/testsuite/gcc.target/i386/stackalign/return-4.c
  8276f2c9f0467299ccc2c3bc989ca9cb  gcc/testsuite/gcc.target/i386/stackalign/return-5.c
  67a3c24d3712370ddefd38dcbb853a48  gcc/testsuite/gcc.target/i386/stackalign/return-6.c
! 6dfd2679bc6ae381a7a56d29a374ef2b  gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
  2778b9ab1729f5a65d10668b47f03340  gcc/testsuite/gcc.target/i386/strcmpopt_6.c
  caa0a36ffb354dbc6cd84a8137f4aef9  gcc/testsuite/gcc.target/i386/strinline.c
  aa69c6504471efa5d76824859d0bc6cb  gcc/testsuite/gcc.target/i386/strncmp-1.c
--- 72398,72404 ----
  22fcf3b6f05e35417473446a6401735c  gcc/testsuite/gcc.target/i386/stackalign/return-4.c
  8276f2c9f0467299ccc2c3bc989ca9cb  gcc/testsuite/gcc.target/i386/stackalign/return-5.c
  67a3c24d3712370ddefd38dcbb853a48  gcc/testsuite/gcc.target/i386/stackalign/return-6.c
! be1e25f439f8ea6d53eb7d517508c2d7  gcc/testsuite/gcc.target/i386/stackalign/stackalign.exp
  2778b9ab1729f5a65d10668b47f03340  gcc/testsuite/gcc.target/i386/strcmpopt_6.c
  caa0a36ffb354dbc6cd84a8137f4aef9  gcc/testsuite/gcc.target/i386/strinline.c
  aa69c6504471efa5d76824859d0bc6cb  gcc/testsuite/gcc.target/i386/strncmp-1.c
*************** a276fee7a7cbbc4286d4e2deb772ed2f  gcc/te
*** 68552,68557 ****
--- 72418,72426 ----
  dc3c4ac8cdb7401733c5fb1675741879  gcc/testsuite/gcc.target/i386/testimm-7.c
  4af6e948e6967e59d4fabeaab7e14749  gcc/testsuite/gcc.target/i386/testimm-8.c
  03e16979a29b97cbde8aec024c558431  gcc/testsuite/gcc.target/i386/testimm-9.c
+ f4b5be0aa9e7ccbafe31ee3c1809baff  gcc/testsuite/gcc.target/i386/testnot-1.c
+ eea325a3ec07f551da45222800b264fa  gcc/testsuite/gcc.target/i386/testnot-2.c
+ 099a48a53f957ebca8311e14ad730208  gcc/testsuite/gcc.target/i386/testnot-3.c
  d44614fd5596d1f2a2a55c835ee50727  gcc/testsuite/gcc.target/i386/testround-1.c
  b20b310f3636a1d1d5c3491de30c7a3b  gcc/testsuite/gcc.target/i386/testround-2.c
  832965b06213f2066439fd1482fcb8a7  gcc/testsuite/gcc.target/i386/tpause-1.c
*************** a4fe926ed930e3d04f3d214919607450  gcc/te
*** 68594,68599 ****
--- 72463,72469 ----
  80fc45c82401c81c8e327977d855adfe  gcc/testsuite/gcc.target/i386/vcvtps2ph-1.c
  62f75fee089e9d7544817acc173d5b9e  gcc/testsuite/gcc.target/i386/vcvtps2ph-2.c
  7bfd4b219fe89df5db7d39dd83f07267  gcc/testsuite/gcc.target/i386/vcvtps2ph-3.c
+ 4e2a9fed7ac851716175ce533cffc50c  gcc/testsuite/gcc.target/i386/vec-maskstore-vn.c
  c3845076ba5898729c1d858ed48d8182  gcc/testsuite/gcc.target/i386/vec-may_alias.c
  6c6b35f324ed291cf10b22e9a8f246a4  gcc/testsuite/gcc.target/i386/vecinit-1.c
  8c76c9fbb837c00a866f4323808181a0  gcc/testsuite/gcc.target/i386/vecinit-2.c
*************** e8b765803fadda8eefcf01741317c8de  gcc/te
*** 68614,68619 ****
--- 72484,72495 ----
  5e421c94bedfd65495d5368891bb3990  gcc/testsuite/gcc.target/i386/vect-alignment-peeling-1.c
  0518e4e31721ecfae2923daa6806692e  gcc/testsuite/gcc.target/i386/vect-alignment-peeling-2.c
  dcf09c8d7eb01e0e8a5e8cefaf164498  gcc/testsuite/gcc.target/i386/vect-args.c
+ 166514b293e147eb9e6ae706c1dcf60f  gcc/testsuite/gcc.target/i386/vect-bfloat16-1.c
+ 64e947d6f5fbfaeeb886d49aec0a5ea0  gcc/testsuite/gcc.target/i386/vect-bfloat16-2a.c
+ 5e1a816c4e72e212dd0e6f8f96f869f2  gcc/testsuite/gcc.target/i386/vect-bfloat16-2b.c
+ eda0d442fd95aa4f91e9f15d67b2a009  gcc/testsuite/gcc.target/i386/vect-bfloat16-2c.c
+ 4308a7e615055bcef8a986ef90c02437  gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_1.c
+ 18e1b622ec54ee1383a44580695adefb  gcc/testsuite/gcc.target/i386/vect-bfloat16-typecheck_2.c
  f34aa81937bfa895146815db467bcc3d  gcc/testsuite/gcc.target/i386/vect-cond-1.c
  5c0044496c9a7d83c47a821d73ab8ddf  gcc/testsuite/gcc.target/i386/vect-div-1.c
  38733171ed3f42215de340f00f2277e8  gcc/testsuite/gcc.target/i386/vect-double-1.c
*************** cf807a1a0c9ea4bc99f4a22859d9b829  gcc/te
*** 68667,68672 ****
--- 72543,72550 ----
  6e75842fa095abfc68c803037e8bf3aa  gcc/testsuite/gcc.target/i386/vnni-auto-vectorize-1.c
  40595281c51d64d5637a42a7958158a3  gcc/testsuite/gcc.target/i386/vnni-auto-vectorize-2.c
  6517a2c66873ffa0e86469852e46a556  gcc/testsuite/gcc.target/i386/vnni_inline_error.c
+ e125caaf089656a38668d9a76e5a9fd8  gcc/testsuite/gcc.target/i386/vnniint8-auto-vectorize-1.c
+ 0f1ad3156307cf7dd9eb8422acf396f6  gcc/testsuite/gcc.target/i386/vnniint8-auto-vectorize-2.c
  784c987777c87b20adb70aefdd43c1ea  gcc/testsuite/gcc.target/i386/volatile-1.c
  df392be222a4275b2813dd6198b59951  gcc/testsuite/gcc.target/i386/volatile-2.c
  a1724ce16bcf831fa3fa93e00649d504  gcc/testsuite/gcc.target/i386/volatile-bitfields-1.c
*************** c3b4c8bfdfdc7315973c64221ff65caf  gcc/te
*** 68719,68735 ****
  745fd40cb30f0b4a91e9bf21f348141d  gcc/testsuite/gcc.target/i386/x86-needed-1.c
  96b734de6eb2ea47555de580d9a37d21  gcc/testsuite/gcc.target/i386/x86-needed-2.c
  35735ea8c699397471a586d8d1adc3a1  gcc/testsuite/gcc.target/i386/x86-needed-3.c
! 6460da38724b82cd5dce2376a5d471f6  gcc/testsuite/gcc.target/i386/x86gprintrin-1.c
! 3ab7657accb84412e825209041081ff9  gcc/testsuite/gcc.target/i386/x86gprintrin-2.c
! d9e1e2f002caa3340d4eb24a99830c34  gcc/testsuite/gcc.target/i386/x86gprintrin-3.c
! 452335c544db8d7f430d13772aa5a4fb  gcc/testsuite/gcc.target/i386/x86gprintrin-4.c
  9400b7c473e2b608a3bcc607d5bdfb8e  gcc/testsuite/gcc.target/i386/x86gprintrin-4a.c
! 102f6ba05a35ed9f47c443efea22c1f3  gcc/testsuite/gcc.target/i386/x86gprintrin-5.c
  928b2ab134391048e3dc1272d26b7f0a  gcc/testsuite/gcc.target/i386/x86gprintrin-5a.c
  e620cb612e6e5e7d4d2148b916d23273  gcc/testsuite/gcc.target/i386/x86gprintrin-5b.c
  cd5f15dc6f4513c2f0c6b7723c73a3cc  gcc/testsuite/gcc.target/i386/x86gprintrin-6.c
  e45be5b5dd5f8be0a75495bb33be0404  gcc/testsuite/gcc.target/i386/xchg-1.c
  b6d6abcfbd5245e5750e48d0e9518639  gcc/testsuite/gcc.target/i386/xchg-2.c
  bb9856cef755854e2f3eebc7fffd6629  gcc/testsuite/gcc.target/i386/xgetsetbv.c
  5ee25ab13ecf1397089259762302768b  gcc/testsuite/gcc.target/i386/xop-check.h
  c37d749cc823fbe15fae562023e669f6  gcc/testsuite/gcc.target/i386/xop-frczX.c
--- 72597,72614 ----
  745fd40cb30f0b4a91e9bf21f348141d  gcc/testsuite/gcc.target/i386/x86-needed-1.c
  96b734de6eb2ea47555de580d9a37d21  gcc/testsuite/gcc.target/i386/x86-needed-2.c
  35735ea8c699397471a586d8d1adc3a1  gcc/testsuite/gcc.target/i386/x86-needed-3.c
! 6ddee8fa7b63886daf25f05d48fd025f  gcc/testsuite/gcc.target/i386/x86gprintrin-1.c
! 4ce5e6bf0dca69a3667c3f3f7766c0f0  gcc/testsuite/gcc.target/i386/x86gprintrin-2.c
! 5a9b46af74fdae66a37c24cb1b5520fd  gcc/testsuite/gcc.target/i386/x86gprintrin-3.c
! d5fe2479baf7d830bba4bd5e4f721a22  gcc/testsuite/gcc.target/i386/x86gprintrin-4.c
  9400b7c473e2b608a3bcc607d5bdfb8e  gcc/testsuite/gcc.target/i386/x86gprintrin-4a.c
! 05fc8b936bc9aea7c2671df843999017  gcc/testsuite/gcc.target/i386/x86gprintrin-5.c
  928b2ab134391048e3dc1272d26b7f0a  gcc/testsuite/gcc.target/i386/x86gprintrin-5a.c
  e620cb612e6e5e7d4d2148b916d23273  gcc/testsuite/gcc.target/i386/x86gprintrin-5b.c
  cd5f15dc6f4513c2f0c6b7723c73a3cc  gcc/testsuite/gcc.target/i386/x86gprintrin-6.c
  e45be5b5dd5f8be0a75495bb33be0404  gcc/testsuite/gcc.target/i386/xchg-1.c
  b6d6abcfbd5245e5750e48d0e9518639  gcc/testsuite/gcc.target/i386/xchg-2.c
+ 6b4af20868897fdf46e4f385241c152d  gcc/testsuite/gcc.target/i386/xchg-3.c
  bb9856cef755854e2f3eebc7fffd6629  gcc/testsuite/gcc.target/i386/xgetsetbv.c
  5ee25ab13ecf1397089259762302768b  gcc/testsuite/gcc.target/i386/xop-check.h
  c37d749cc823fbe15fae562023e669f6  gcc/testsuite/gcc.target/i386/xop-frczX.c
*************** b8afe26f29e3d32ac95aaa33621d54b8  gcc/te
*** 68741,68746 ****
--- 72620,72626 ----
  a390d40d8a1affb5cd5f9f3db7a982e8  gcc/testsuite/gcc.target/i386/xop-mul-1.c
  e958cd4a15db13f7f9d756d8e597850e  gcc/testsuite/gcc.target/i386/xop-pcmov.c
  9ff4b82a962aeea51c95bf02f6bf7581  gcc/testsuite/gcc.target/i386/xop-pcmov2.c
+ 74886747227d39a6a7a490ca16c59e3d  gcc/testsuite/gcc.target/i386/xop-pcmov3.c
  5e5a8a68487e65740060a961941c5426  gcc/testsuite/gcc.target/i386/xop-pr57233.c
  2ab60c120001ef1c9c38bbff7a7468e7  gcc/testsuite/gcc.target/i386/xop-rotate1-int.c
  3255a31882fe4b3adff94b9f17877355  gcc/testsuite/gcc.target/i386/xop-rotate1-vector.c
*************** e50239a34975c5fbc852ce8f339c44ea  gcc/te
*** 68831,68842 ****
  de4e305b115a22fef774b1524552bf20  gcc/testsuite/gcc.target/ia64/fpreg-2.c
  25922243d19af1f913e65dbd4e5ffb31  gcc/testsuite/gcc.target/ia64/fptr-1.c
  08fa38ef5026e6de3937383461ad92f2  gcc/testsuite/gcc.target/ia64/got-1.c
! ba2bda216402f550140f02917fca9908  gcc/testsuite/gcc.target/ia64/ia64.exp
  37ef53f75bdf314832e2e6e7f81c6c93  gcc/testsuite/gcc.target/ia64/mfused-madd-vect.c
  e8a414d98f9dcd1d545f9c542dda6671  gcc/testsuite/gcc.target/ia64/mfused-madd.c
  282dda375f4c7025c7ff2dee87894838  gcc/testsuite/gcc.target/ia64/mno-fused-madd-vect.c
  41e5197c75d26929e255c22557d93ce2  gcc/testsuite/gcc.target/ia64/mno-fused-madd.c
  78e9bbaeebf5b8a61104ae2da0c31b16  gcc/testsuite/gcc.target/ia64/postinc-1.c
  5fac14a30ee1cf89bf281483c6706a7a  gcc/testsuite/gcc.target/ia64/pr29682.c
  16e1396fec5164ccc957d13dccfdbc5b  gcc/testsuite/gcc.target/ia64/pr42542-1.c
  1b8db9215acd28ec852832eb4f47b483  gcc/testsuite/gcc.target/ia64/pr42542-2.c
--- 72711,72723 ----
  de4e305b115a22fef774b1524552bf20  gcc/testsuite/gcc.target/ia64/fpreg-2.c
  25922243d19af1f913e65dbd4e5ffb31  gcc/testsuite/gcc.target/ia64/fptr-1.c
  08fa38ef5026e6de3937383461ad92f2  gcc/testsuite/gcc.target/ia64/got-1.c
! 1979f0877ceb23fe75b8d4446e9bc109  gcc/testsuite/gcc.target/ia64/ia64.exp
  37ef53f75bdf314832e2e6e7f81c6c93  gcc/testsuite/gcc.target/ia64/mfused-madd-vect.c
  e8a414d98f9dcd1d545f9c542dda6671  gcc/testsuite/gcc.target/ia64/mfused-madd.c
  282dda375f4c7025c7ff2dee87894838  gcc/testsuite/gcc.target/ia64/mno-fused-madd-vect.c
  41e5197c75d26929e255c22557d93ce2  gcc/testsuite/gcc.target/ia64/mno-fused-madd.c
  78e9bbaeebf5b8a61104ae2da0c31b16  gcc/testsuite/gcc.target/ia64/postinc-1.c
+ fd2f969aaaab55fbb3158c1356538cdd  gcc/testsuite/gcc.target/ia64/pr106905.c
  5fac14a30ee1cf89bf281483c6706a7a  gcc/testsuite/gcc.target/ia64/pr29682.c
  16e1396fec5164ccc957d13dccfdbc5b  gcc/testsuite/gcc.target/ia64/pr42542-1.c
  1b8db9215acd28ec852832eb4f47b483  gcc/testsuite/gcc.target/ia64/pr42542-2.c
*************** e7cfcf35d3576cc348fad814806318e1  gcc/te
*** 68862,68872 ****
  2191695e83896188ccba1a223f3a204c  gcc/testsuite/gcc.target/ia64/versionid-2.c
  5976d0923571b4543887e7a4b23c0414  gcc/testsuite/gcc.target/ia64/visibility-1.c
  ab4a753420c7cc112326b8711285358c  gcc/testsuite/gcc.target/ia64/visibility-2.c
  6a73e078ae4dd205f6bf24d6d465a6ae  gcc/testsuite/gcc.target/loongarch/larch-builtin.c
! fad9a071f9e73c3ff1cb70eb4fbaaf9d  gcc/testsuite/gcc.target/loongarch/loongarch.exp
  ab8d85a261f0846c278e2d6db2c6ab77  gcc/testsuite/gcc.target/loongarch/mulw_d_w.c
! 5277f82d621d0f5ff40e67b8a8688bb8  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
! e0bad7f039a28a10cea2a3ae6b4187a3  gcc/testsuite/gcc.target/loongarch/tst-asm-const.c
  daa985dfac90c17791ed0549fd2b0181  gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c
  c5a3a773bb277e1c1071f9d892d1ed48  gcc/testsuite/gcc.target/loongarch/zero-size-field-ret.c
  ce7c3a66fa22a36825ef82d61a779479  gcc/testsuite/gcc.target/m68k/20090709-1.c
--- 72743,72816 ----
  2191695e83896188ccba1a223f3a204c  gcc/testsuite/gcc.target/ia64/versionid-2.c
  5976d0923571b4543887e7a4b23c0414  gcc/testsuite/gcc.target/ia64/visibility-1.c
  ab4a753420c7cc112326b8711285358c  gcc/testsuite/gcc.target/ia64/visibility-2.c
+ 9f6a0067cf273ede4ba33d3824d023ff  gcc/testsuite/gcc.target/loongarch/attr-model-1.c
+ 432baf56ded24535d315bd2e867a8be3  gcc/testsuite/gcc.target/loongarch/attr-model-2.c
+ f9bd26f98b04e99789925370214a2a06  gcc/testsuite/gcc.target/loongarch/attr-model-diag.c
+ b0da33fc443024e77c7b605056bff4ae  gcc/testsuite/gcc.target/loongarch/attr-model-test.c
+ 2ea39544bfe26567ec668ca7a33a8a5e  gcc/testsuite/gcc.target/loongarch/direct-extern-1.c
+ b4c0f3fd4670da4309e2a028316c3c4c  gcc/testsuite/gcc.target/loongarch/direct-extern-2.c
+ 1dfea9ab319ea08d9da234c41d4b88e7  gcc/testsuite/gcc.target/loongarch/div-1.c
+ 82faab3f51217ce0561916dde4f4f801  gcc/testsuite/gcc.target/loongarch/div-2.c
+ 7247cc240dabb3c9514ba4b0a07278c5  gcc/testsuite/gcc.target/loongarch/div-3.c
+ adc95e9ab59294f8040ec17904b73569  gcc/testsuite/gcc.target/loongarch/div-4.c
+ ddf9ecd0daf6d14ef98de40e7fd68f34  gcc/testsuite/gcc.target/loongarch/fcopysign.c
+ 256bb0a8b0fff1f225a70fa39849ccd6  gcc/testsuite/gcc.target/loongarch/flogb.c
+ c9d08bb72896d9b4861ce4073ec5e57f  gcc/testsuite/gcc.target/loongarch/flt-abi-isa-1.c
+ 6d758f852068391aa189ac79c376aa60  gcc/testsuite/gcc.target/loongarch/flt-abi-isa-2.c
+ f72ce6aeb8beb0eff27354c07ef71cd1  gcc/testsuite/gcc.target/loongarch/flt-abi-isa-3.c
+ ab6db876a44193a92b0a1625c65eb4e7  gcc/testsuite/gcc.target/loongarch/flt-abi-isa-4.c
+ aaaf53a882a8a0ae0583d851021e03cc  gcc/testsuite/gcc.target/loongarch/fmax-fmin.c
+ fee1bedd25e7db9b4e91f3ede9e05608  gcc/testsuite/gcc.target/loongarch/frint.c
+ 2f79a7482d38a9632f39b484c09a8f2f  gcc/testsuite/gcc.target/loongarch/fscaleb.c
+ 40d69683116e216d2295e4600c830736  gcc/testsuite/gcc.target/loongarch/ftint-no-inexact.c
+ 0f9dff1aa6e85e49a03dbcbdf4658c96  gcc/testsuite/gcc.target/loongarch/ftint.c
+ ad86dc957e0557262d3e3b556956b2a0  gcc/testsuite/gcc.target/loongarch/func-call-1.c
+ 6555886ed6fbe8f4e24de3a291a45553  gcc/testsuite/gcc.target/loongarch/func-call-2.c
+ 5dbc11856d74098fe100931eb49438cb  gcc/testsuite/gcc.target/loongarch/func-call-3.c
+ 6e7acd767b1c4bd09452cd99a2adea72  gcc/testsuite/gcc.target/loongarch/func-call-4.c
+ 9e65a4490117f796bf975aa39588fccb  gcc/testsuite/gcc.target/loongarch/func-call-5.c
+ f4006ce8b6051f06f10f9d4f5591b9ee  gcc/testsuite/gcc.target/loongarch/func-call-6.c
+ ff8685804997300a25a532b1f5c17e96  gcc/testsuite/gcc.target/loongarch/func-call-7.c
+ decd98512ab21ae74a09e32a6abfc080  gcc/testsuite/gcc.target/loongarch/func-call-8.c
+ 5ad7009545802e7808918400f05e83de  gcc/testsuite/gcc.target/loongarch/func-call-extreme-1.c
+ 2b04aafdbcae51de9e3f0d37c0657f2f  gcc/testsuite/gcc.target/loongarch/func-call-extreme-2.c
+ 8c085fb4a134c34fb9db525796ff0a95  gcc/testsuite/gcc.target/loongarch/func-call-medium-1.c
+ 7dab082f11ca0ded9fa5be66ac950f2e  gcc/testsuite/gcc.target/loongarch/func-call-medium-2.c
+ 7e3cba207400b286611487e31fed9062  gcc/testsuite/gcc.target/loongarch/func-call-medium-3.c
+ 6a51fa31f036257c2d590cb31dec9999  gcc/testsuite/gcc.target/loongarch/func-call-medium-4.c
+ 3bb1daf919e779264cc37600030a29ea  gcc/testsuite/gcc.target/loongarch/func-call-medium-5.c
+ a40f459343a02dd25d8bf6479130ee77  gcc/testsuite/gcc.target/loongarch/func-call-medium-6.c
+ bbc8be931fd6e36bcc88f959bc6702fe  gcc/testsuite/gcc.target/loongarch/func-call-medium-7.c
+ fd5539b6de7d74ba74d1a9d756cbc509  gcc/testsuite/gcc.target/loongarch/func-call-medium-8.c
+ fa9b5bf25d00779ab5d75b5c231c2558  gcc/testsuite/gcc.target/loongarch/imm-load.c
+ bf43fbf10b9ffc55af574ffb98286b8e  gcc/testsuite/gcc.target/loongarch/imm-load1.c
  6a73e078ae4dd205f6bf24d6d465a6ae  gcc/testsuite/gcc.target/loongarch/larch-builtin.c
! 5149b74a773463551ceb59b2f038916e  gcc/testsuite/gcc.target/loongarch/loongarch.exp
  ab8d85a261f0846c278e2d6db2c6ab77  gcc/testsuite/gcc.target/loongarch/mulw_d_w.c
! d6f2200e900b3d85d0a491db3bfa13bc  gcc/testsuite/gcc.target/loongarch/pr106459.c
! 087dab2b9c082de756b93456f039cdb7  gcc/testsuite/gcc.target/loongarch/pr107713-1.c
! dfafc65f0a89ca5ee45ebec52ceac527  gcc/testsuite/gcc.target/loongarch/pr107713-2.c
! ee611d581d29c00b7178ec95c3dc6e82  gcc/testsuite/gcc.target/loongarch/pr107731.c
! 3adba2a8ae6f671eb22ec8228777c1ac  gcc/testsuite/gcc.target/loongarch/prolog-opt.c
! 1075563283e6d2ab3492f10a46a844ad  gcc/testsuite/gcc.target/loongarch/relocs-symbol-noaddend.c
! 1794666eb38b2c760f7e0797a8843251  gcc/testsuite/gcc.target/loongarch/stack-check-alloca-1.c
! bada1783d3726bb8da71dcc10c61bb4e  gcc/testsuite/gcc.target/loongarch/stack-check-alloca-2.c
! acdab92956a33fb473e28883d3784f6b  gcc/testsuite/gcc.target/loongarch/stack-check-alloca-3.c
! 37026db76f9c2578badf56d2fb7dddf2  gcc/testsuite/gcc.target/loongarch/stack-check-alloca-4.c
! 8c3d80861a826008564aca9af2f9443a  gcc/testsuite/gcc.target/loongarch/stack-check-alloca-5.c
! 9360480ea47fd9090e9779b774260f1b  gcc/testsuite/gcc.target/loongarch/stack-check-alloca-6.c
! 45d0507f692b31ce9bcb7889745dd889  gcc/testsuite/gcc.target/loongarch/stack-check-alloca.h
! 5502a3356820f8e05e5b07aecb26da88  gcc/testsuite/gcc.target/loongarch/stack-check-cfa-1.c
! 83735f4f8a3b9258cb4049ebe8dc37ad  gcc/testsuite/gcc.target/loongarch/stack-check-cfa-2.c
! adc9389cbfe48c25858aaf47dbd856e7  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-1.c
! 5f68933f0e9b335edad6507943792a49  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-2.c
! f654ef3204f91c3ea6a9a4613e068084  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-3.c
! 729261c23c6813cc16819d9edebca456  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-4.c
! b0d8451f1600fb7ed044bb4afac6c54e  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-5.c
! 9ddc825310e2f1207621093040d11658  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-6.c
! 835c129cffc725b50f77270d00d701aa  gcc/testsuite/gcc.target/loongarch/stack-check-prologue-7.c
! 6cc96f2ff91ce012328dc2190416bdf3  gcc/testsuite/gcc.target/loongarch/stack-check-prologue.h
! f5882791c480e8388c4406c0e38b740a  gcc/testsuite/gcc.target/loongarch/tls-gd-noplt.c
  daa985dfac90c17791ed0549fd2b0181  gcc/testsuite/gcc.target/loongarch/zero-size-field-pass.c
  c5a3a773bb277e1c1071f9d892d1ed48  gcc/testsuite/gcc.target/loongarch/zero-size-field-ret.c
  ce7c3a66fa22a36825ef82d61a779479  gcc/testsuite/gcc.target/m68k/20090709-1.c
*************** aa59fb938dc80d0bfebfc946cdbfbabf  gcc/te
*** 68877,68883 ****
  363ff108550fa02c923cccb0da681ab5  gcc/testsuite/gcc.target/m68k/interrupt_thread-1.c
  3c540acf2434a3c410d35013267ca79a  gcc/testsuite/gcc.target/m68k/interrupt_thread-2.c
  4183579970ae4f3d5815533efb1b3269  gcc/testsuite/gcc.target/m68k/interrupt_thread-3.c
! 3b6bc6f8532bcc9c44310e0382483eac  gcc/testsuite/gcc.target/m68k/m68k.exp
  22fc64de9c71e0dd6fc2ede8b6a4b336  gcc/testsuite/gcc.target/m68k/mulsi_highpart.c
  024e8f5fdf9b8d6bb2395e4e383e4712  gcc/testsuite/gcc.target/m68k/pic-1.c
  16f39f8e31f0f10521879907e696470d  gcc/testsuite/gcc.target/m68k/pr19201.c
--- 72821,72827 ----
  363ff108550fa02c923cccb0da681ab5  gcc/testsuite/gcc.target/m68k/interrupt_thread-1.c
  3c540acf2434a3c410d35013267ca79a  gcc/testsuite/gcc.target/m68k/interrupt_thread-2.c
  4183579970ae4f3d5815533efb1b3269  gcc/testsuite/gcc.target/m68k/interrupt_thread-3.c
! b719a888edd5bf8788705230c861e90b  gcc/testsuite/gcc.target/m68k/m68k.exp
  22fc64de9c71e0dd6fc2ede8b6a4b336  gcc/testsuite/gcc.target/m68k/mulsi_highpart.c
  024e8f5fdf9b8d6bb2395e4e383e4712  gcc/testsuite/gcc.target/m68k/pic-1.c
  16f39f8e31f0f10521879907e696470d  gcc/testsuite/gcc.target/m68k/pr19201.c
*************** e695224d5b317835a290893c94d4209e  gcc/te
*** 68905,68920 ****
  64801a5d12a7d876eb9fc0407fd9af8f  gcc/testsuite/gcc.target/m68k/slp-ice.c
  0849c1bed0b42b3d010dd80dc8d7c444  gcc/testsuite/gcc.target/m68k/stack-limit-1.c
  8cd9d92a4559564d1109079326d62868  gcc/testsuite/gcc.target/m68k/tls-dimode.c
  1af85e04a7c424bce4a2ee28c4ceb12c  gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c
  87267fa50c38c49a4996c516f23a9332  gcc/testsuite/gcc.target/m68k/tls-gd.c
  019f673c6d4e13d990aae04c99f2c195  gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c
  6aed9af2aa920d791d08452b85c12b97  gcc/testsuite/gcc.target/m68k/tls-ie.c
  c6a646c1f867d67c470bdcb6fccd402c  gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c
  db062f125a567903b74318544b62c317  gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c
  5669c74ed311803fb6fbdbe992224905  gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c
! 75249d666ace542b2f59789ac45e764d  gcc/testsuite/gcc.target/m68k/tls-ld.c
  24c3e276dc2fbfc57b71dc04b9e9f5d4  gcc/testsuite/gcc.target/m68k/tls-le-xtls.c
! b4040f8b44faedebd5c8c114a152b9c8  gcc/testsuite/gcc.target/m68k/tls-le.c
  ab8edefded7f6632435c925aac41912a  gcc/testsuite/gcc.target/m68k/xgot-1.c
  ff9e93d3e77e32e0ebcc4ee4d9ace05d  gcc/testsuite/gcc.target/microblaze/isa/bshift.c
  0527b3c3c328b62fc0ae788dc511ddf5  gcc/testsuite/gcc.target/microblaze/isa/div.c
--- 72849,72870 ----
  64801a5d12a7d876eb9fc0407fd9af8f  gcc/testsuite/gcc.target/m68k/slp-ice.c
  0849c1bed0b42b3d010dd80dc8d7c444  gcc/testsuite/gcc.target/m68k/stack-limit-1.c
  8cd9d92a4559564d1109079326d62868  gcc/testsuite/gcc.target/m68k/tls-dimode.c
+ 5b2d476448e290ba6fffc665cc6275eb  gcc/testsuite/gcc.target/m68k/tls-gd-off.c
  1af85e04a7c424bce4a2ee28c4ceb12c  gcc/testsuite/gcc.target/m68k/tls-gd-xgot.c
  87267fa50c38c49a4996c516f23a9332  gcc/testsuite/gcc.target/m68k/tls-gd.c
+ 286055808c0f7e43631e3b39838a1608  gcc/testsuite/gcc.target/m68k/tls-ie-off.c
  019f673c6d4e13d990aae04c99f2c195  gcc/testsuite/gcc.target/m68k/tls-ie-xgot.c
  6aed9af2aa920d791d08452b85c12b97  gcc/testsuite/gcc.target/m68k/tls-ie.c
+ 7a3216a1f5dd7014da0ab0248878ccad  gcc/testsuite/gcc.target/m68k/tls-ld-off.c
  c6a646c1f867d67c470bdcb6fccd402c  gcc/testsuite/gcc.target/m68k/tls-ld-xgot-xtls.c
  db062f125a567903b74318544b62c317  gcc/testsuite/gcc.target/m68k/tls-ld-xgot.c
+ 9af65344fab4c91df2a3bcfe51fdc28b  gcc/testsuite/gcc.target/m68k/tls-ld-xtls-off.c
  5669c74ed311803fb6fbdbe992224905  gcc/testsuite/gcc.target/m68k/tls-ld-xtls.c
! a73ac91ccfdad823f8731fcf44188770  gcc/testsuite/gcc.target/m68k/tls-ld.c
! 2976d9a50480aaee567c978b8072d32c  gcc/testsuite/gcc.target/m68k/tls-le-off.c
! d42eb48f71e2c7fc0fb924df3962c815  gcc/testsuite/gcc.target/m68k/tls-le-xtls-off.c
  24c3e276dc2fbfc57b71dc04b9e9f5d4  gcc/testsuite/gcc.target/m68k/tls-le-xtls.c
! 4a2c94ae2d02983de778783de1bbfde0  gcc/testsuite/gcc.target/m68k/tls-le.c
  ab8edefded7f6632435c925aac41912a  gcc/testsuite/gcc.target/m68k/xgot-1.c
  ff9e93d3e77e32e0ebcc4ee4d9ace05d  gcc/testsuite/gcc.target/microblaze/isa/bshift.c
  0527b3c3c328b62fc0ae788dc511ddf5  gcc/testsuite/gcc.target/microblaze/isa/div.c
*************** e143618b2c8e9f74a89e408849d5ea9e  gcc/te
*** 68934,68940 ****
  2086e2e1ebf0b6ad99cc2808f906bdaf  gcc/testsuite/gcc.target/microblaze/isa/nofloat.c
  7d11470d188b8ddbdb82b31ba91f41ff  gcc/testsuite/gcc.target/microblaze/isa/pcmp.c
  950feeef0cf00d66d2c89478821978e0  gcc/testsuite/gcc.target/microblaze/isa/vanilla.c
! 812e869f96c7094b0b4d89abef4dcb54  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
  a498a396b1e4969560394c7d56f05fa5  gcc/testsuite/gcc.target/microblaze/others/builtin-trap.c
  821cbcd6a2563ff2997adb005fdd91af  gcc/testsuite/gcc.target/microblaze/others/data_var1.c
--- 72884,72890 ----
  2086e2e1ebf0b6ad99cc2808f906bdaf  gcc/testsuite/gcc.target/microblaze/isa/nofloat.c
  7d11470d188b8ddbdb82b31ba91f41ff  gcc/testsuite/gcc.target/microblaze/isa/pcmp.c
  950feeef0cf00d66d2c89478821978e0  gcc/testsuite/gcc.target/microblaze/isa/vanilla.c
! 7a924dcfefdd5ed6de9a76749cdc7146  gcc/testsuite/gcc.target/microblaze/microblaze.exp
  9a329728496d062effbbdf4b7bde3f00  gcc/testsuite/gcc.target/microblaze/others/break_handler.c
  a498a396b1e4969560394c7d56f05fa5  gcc/testsuite/gcc.target/microblaze/others/builtin-trap.c
  821cbcd6a2563ff2997adb005fdd91af  gcc/testsuite/gcc.target/microblaze/others/data_var1.c
*************** b6598997f99e11ea5cde760f16bc51b8  gcc/te
*** 69047,69070 ****
  ddd414d2cdff7059cb5e0c601ad632cc  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
  0e811556243ef05a090351b71010af15  gcc/testsuite/gcc.target/mips/clear-cache-1.c
  10c7701a3904364c72d3dc09d3612abd  gcc/testsuite/gcc.target/mips/clear-cache-2.c
  44d569798a91e2c06f1ea5e924b754dc  gcc/testsuite/gcc.target/mips/code-readable-1.c
  8e8d38b5848408e00f13fdbbab2914bc  gcc/testsuite/gcc.target/mips/code-readable-2.c
  1abe031db3c5b45247fccbf2ca25dea4  gcc/testsuite/gcc.target/mips/code-readable-3.c
  511e74e77bede63bd88c956d1c083daa  gcc/testsuite/gcc.target/mips/code-readable-4.c
! 6f1b4174ab504cbd97afcff94646a572  gcc/testsuite/gcc.target/mips/compact-branches-1.c
  d91cd5fe96893db5204874d9dfddfb40  gcc/testsuite/gcc.target/mips/compact-branches-2.c
  553c2949d5952ba5b080f920812388e3  gcc/testsuite/gcc.target/mips/compact-branches-3.c
  da097cd3c80cf4fbd482b2f848b60bba  gcc/testsuite/gcc.target/mips/compact-branches-4.c
  a87d05b60c37cfe8fabcb9ab19481f58  gcc/testsuite/gcc.target/mips/compact-branches-5.c
  b02808348a9a00d345beb525938d52c3  gcc/testsuite/gcc.target/mips/compact-branches-6.c
  49dd404799cdc2b1a924fc6163a1b359  gcc/testsuite/gcc.target/mips/compact-branches-7.c
  ca56634a2eac89dd69e61b0be079e31d  gcc/testsuite/gcc.target/mips/const-anchor-1.c
  d70897fb103953773b6a45dd5328c664  gcc/testsuite/gcc.target/mips/const-anchor-2.c
  3b6a124b5a2fb30b5093b46cd5b69a34  gcc/testsuite/gcc.target/mips/const-anchor-3.c
  05ea0ada393e7ec2c1c35a6485113a2b  gcc/testsuite/gcc.target/mips/const-anchor-4.c
  766902dab6d6d5cd9d7197254a7332e5  gcc/testsuite/gcc.target/mips/constant-spill.c
  43c7b13372ab127f62a02908b0d109ea  gcc/testsuite/gcc.target/mips/data-sym-jump.c
! e2187b87e72dd566fdcd706c7d799faf  gcc/testsuite/gcc.target/mips/data-sym-multi-pool.c
  fbb4f223bbd5e08d3cc054682c367405  gcc/testsuite/gcc.target/mips/data-sym-pool.c
  17c9c459b5bd9c2c1f5322a9cebe7c52  gcc/testsuite/gcc.target/mips/div-1.c
  258f4051ab8422e0fc6f3fecf2520d64  gcc/testsuite/gcc.target/mips/div-13.c
--- 72997,73024 ----
  ddd414d2cdff7059cb5e0c601ad632cc  gcc/testsuite/gcc.target/mips/cfgcleanup-jalr3.c
  0e811556243ef05a090351b71010af15  gcc/testsuite/gcc.target/mips/clear-cache-1.c
  10c7701a3904364c72d3dc09d3612abd  gcc/testsuite/gcc.target/mips/clear-cache-2.c
+ d8720bdab5bd3ac1a9a2656e6a83f553  gcc/testsuite/gcc.target/mips/clo.c
+ bd664be1fa493e8551398de32f3a5bec  gcc/testsuite/gcc.target/mips/clz.c
  44d569798a91e2c06f1ea5e924b754dc  gcc/testsuite/gcc.target/mips/code-readable-1.c
  8e8d38b5848408e00f13fdbbab2914bc  gcc/testsuite/gcc.target/mips/code-readable-2.c
  1abe031db3c5b45247fccbf2ca25dea4  gcc/testsuite/gcc.target/mips/code-readable-3.c
  511e74e77bede63bd88c956d1c083daa  gcc/testsuite/gcc.target/mips/code-readable-4.c
! fd1a158a5c96f52051dc580e5683a1c4  gcc/testsuite/gcc.target/mips/compact-branches-1.c
  d91cd5fe96893db5204874d9dfddfb40  gcc/testsuite/gcc.target/mips/compact-branches-2.c
  553c2949d5952ba5b080f920812388e3  gcc/testsuite/gcc.target/mips/compact-branches-3.c
  da097cd3c80cf4fbd482b2f848b60bba  gcc/testsuite/gcc.target/mips/compact-branches-4.c
  a87d05b60c37cfe8fabcb9ab19481f58  gcc/testsuite/gcc.target/mips/compact-branches-5.c
  b02808348a9a00d345beb525938d52c3  gcc/testsuite/gcc.target/mips/compact-branches-6.c
  49dd404799cdc2b1a924fc6163a1b359  gcc/testsuite/gcc.target/mips/compact-branches-7.c
+ 05d688a591046295a4e8062db7e0d3b8  gcc/testsuite/gcc.target/mips/compact-branches-8.c
+ a9e1e0e664d2516d8ff01b12f0b9d0c9  gcc/testsuite/gcc.target/mips/compact-branches-9.c
  ca56634a2eac89dd69e61b0be079e31d  gcc/testsuite/gcc.target/mips/const-anchor-1.c
  d70897fb103953773b6a45dd5328c664  gcc/testsuite/gcc.target/mips/const-anchor-2.c
  3b6a124b5a2fb30b5093b46cd5b69a34  gcc/testsuite/gcc.target/mips/const-anchor-3.c
  05ea0ada393e7ec2c1c35a6485113a2b  gcc/testsuite/gcc.target/mips/const-anchor-4.c
  766902dab6d6d5cd9d7197254a7332e5  gcc/testsuite/gcc.target/mips/constant-spill.c
  43c7b13372ab127f62a02908b0d109ea  gcc/testsuite/gcc.target/mips/data-sym-jump.c
! 3c9641aa6969157a57229607c3f7ec68  gcc/testsuite/gcc.target/mips/data-sym-multi-pool.c
  fbb4f223bbd5e08d3cc054682c367405  gcc/testsuite/gcc.target/mips/data-sym-pool.c
  17c9c459b5bd9c2c1f5322a9cebe7c52  gcc/testsuite/gcc.target/mips/div-1.c
  258f4051ab8422e0fc6f3fecf2520d64  gcc/testsuite/gcc.target/mips/div-13.c
*************** f5708a14d24fa3ec5113806245448661  gcc/te
*** 69169,69174 ****
--- 73123,73129 ----
  0b11ee2c842b84b4bc066e44c1cdb1d4  gcc/testsuite/gcc.target/mips/get-fcsr-1.c
  0b438608d3e1f6097d6deafb8cc1adcc  gcc/testsuite/gcc.target/mips/get-fcsr-2.c
  3e8c2c752342d245655270615111d225  gcc/testsuite/gcc.target/mips/get-fcsr-3.c
+ ab9dd645972bd8333b65459e7ba97f0c  gcc/testsuite/gcc.target/mips/hazard-barrier-return-attribute.c
  16d43ceaf979632be1e1d4b9aa8de52c  gcc/testsuite/gcc.target/mips/inline-memcpy-1.c
  b5002e9e5369181413c9ffddd38c11f9  gcc/testsuite/gcc.target/mips/inline-memcpy-2.c
  4bb37f55e916928ff7048e252937636b  gcc/testsuite/gcc.target/mips/inline-memcpy-3.c
*************** e7490a676f50b43dff9fbe84ff3bd95e  gcc/te
*** 69184,69190 ****
  c81aee9c49e6f97c3c8859ac412e9a1a  gcc/testsuite/gcc.target/mips/insn-tablejump.c
  89a4ef1858913bac4051ca04ba4ebdea  gcc/testsuite/gcc.target/mips/int-moves-1.c
  1c97317ecf082e15cdf77755e9fcebbb  gcc/testsuite/gcc.target/mips/int-moves-2.c
! ab62441689c7016677aa528f9108c9b3  gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
  41a97b2d305c2755e145a924168d4527  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_main.c
  d231e6bcd981687f765ebf5b64bfe33d  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
  1b5e8db99dca8d400407b92203490cd8  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_y.c
--- 73139,73145 ----
  c81aee9c49e6f97c3c8859ac412e9a1a  gcc/testsuite/gcc.target/mips/insn-tablejump.c
  89a4ef1858913bac4051ca04ba4ebdea  gcc/testsuite/gcc.target/mips/int-moves-1.c
  1c97317ecf082e15cdf77755e9fcebbb  gcc/testsuite/gcc.target/mips/int-moves-2.c
! 7fe940a2e6b987da7c3a27c86ec60bf2  gcc/testsuite/gcc.target/mips/inter/mips16-inter.exp
  41a97b2d305c2755e145a924168d4527  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_main.c
  d231e6bcd981687f765ebf5b64bfe33d  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_x.c
  1b5e8db99dca8d400407b92203490cd8  gcc/testsuite/gcc.target/mips/inter/mips16_stubs_1_y.c
*************** e29cf040ff47381ec220169736b7446a  gcc/te
*** 69233,69239 ****
  0c68f22b9635571f990298a5dd303133  gcc/testsuite/gcc.target/mips/mips-3d-8.c
  3f1d2771ce47e4d32f5b8afd4beb82d3  gcc/testsuite/gcc.target/mips/mips-3d-9.c
  375a28f0b3d06b2fad9a483c26ea4000  gcc/testsuite/gcc.target/mips/mips-builtins-pure.c
! 1091b30e163995a47e7938e1c3190e1e  gcc/testsuite/gcc.target/mips/mips-nonpic/README
  0e86fc6b72b862d940296b6decd5d983  gcc/testsuite/gcc.target/mips/mips-nonpic/main-1.c
  84eb9316a2c541350e627b08dd891336  gcc/testsuite/gcc.target/mips/mips-nonpic/main-10.c
  b1a835baf5477fd4c7927dfd57b3c53b  gcc/testsuite/gcc.target/mips/mips-nonpic/main-11.c
--- 73188,73194 ----
  0c68f22b9635571f990298a5dd303133  gcc/testsuite/gcc.target/mips/mips-3d-8.c
  3f1d2771ce47e4d32f5b8afd4beb82d3  gcc/testsuite/gcc.target/mips/mips-3d-9.c
  375a28f0b3d06b2fad9a483c26ea4000  gcc/testsuite/gcc.target/mips/mips-builtins-pure.c
! 4a5a0e83f0594367232cc9f00e65bcde  gcc/testsuite/gcc.target/mips/mips-nonpic/README
  0e86fc6b72b862d940296b6decd5d983  gcc/testsuite/gcc.target/mips/mips-nonpic/main-1.c
  84eb9316a2c541350e627b08dd891336  gcc/testsuite/gcc.target/mips/mips-nonpic/main-10.c
  b1a835baf5477fd4c7927dfd57b3c53b  gcc/testsuite/gcc.target/mips/mips-nonpic/main-11.c
*************** f7db832be6c1f33d30392dc4571ec31a  gcc/te
*** 69250,69256 ****
  f3d83fe630c8754c36f040556d8ac908  gcc/testsuite/gcc.target/mips/mips-nonpic/main-7.c
  6df45c093b1debb44ab59e19680afe1a  gcc/testsuite/gcc.target/mips/mips-nonpic/main-8.c
  1c8aaab2d02d475708358405e698cef3  gcc/testsuite/gcc.target/mips/mips-nonpic/main-9.c
! 4896f6dddcf79ac29b1f6549bbb0d9bc  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
  019e2bb848027bcd4216983c967f3950  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.h
  1e01424d10b7a1e8927d5a1f53724f45  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr-call.c
  8dd8657a8c441d55f4fa03d7b3eb5ea8  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr.c
--- 73205,73211 ----
  f3d83fe630c8754c36f040556d8ac908  gcc/testsuite/gcc.target/mips/mips-nonpic/main-7.c
  6df45c093b1debb44ab59e19680afe1a  gcc/testsuite/gcc.target/mips/mips-nonpic/main-8.c
  1c8aaab2d02d475708358405e698cef3  gcc/testsuite/gcc.target/mips/mips-nonpic/main-9.c
! 171a260207dba9533e0d65eb88b53917  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.exp
  019e2bb848027bcd4216983c967f3950  gcc/testsuite/gcc.target/mips/mips-nonpic/mips-nonpic.h
  1e01424d10b7a1e8927d5a1f53724f45  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr-call.c
  8dd8657a8c441d55f4fa03d7b3eb5ea8  gcc/testsuite/gcc.target/mips/mips-nonpic/nonpic-addr.c
*************** a85a02c19fa964f6a465de8a4f8929ee  gcc/te
*** 69273,69279 ****
  9a29c67ce03ecfddfabb4df18f2ea5d0  gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
  e166ce4f43ccc2c62b14cf1987cc44c9  gcc/testsuite/gcc.target/mips/mips-ps-type.c
  1da4a0d69d85dcc79c371471a1e1519e  gcc/testsuite/gcc.target/mips/mips-sched-madd.c
! 625c820489b238ff60fe7094c7e855a1  gcc/testsuite/gcc.target/mips/mips.exp
  b48e1f7713d9377ade65ca3353e3aadd  gcc/testsuite/gcc.target/mips/mips16-attributes-2.c
  ec0fc4cda7ea3307bf321757f0f6ab8b  gcc/testsuite/gcc.target/mips/mips16-attributes-3.c
  6de1fc03c068d128a6bcc28a79510784  gcc/testsuite/gcc.target/mips/mips16-attributes-4.c
--- 73228,73234 ----
  9a29c67ce03ecfddfabb4df18f2ea5d0  gcc/testsuite/gcc.target/mips/mips-ps-type-2.c
  e166ce4f43ccc2c62b14cf1987cc44c9  gcc/testsuite/gcc.target/mips/mips-ps-type.c
  1da4a0d69d85dcc79c371471a1e1519e  gcc/testsuite/gcc.target/mips/mips-sched-madd.c
! 74d2d14ba2a4130da6cbaef9604ffd13  gcc/testsuite/gcc.target/mips/mips.exp
  b48e1f7713d9377ade65ca3353e3aadd  gcc/testsuite/gcc.target/mips/mips16-attributes-2.c
  ec0fc4cda7ea3307bf321757f0f6ab8b  gcc/testsuite/gcc.target/mips/mips16-attributes-3.c
  6de1fc03c068d128a6bcc28a79510784  gcc/testsuite/gcc.target/mips/mips16-attributes-4.c
*************** e673ccfc74205709a2572a5600a74ef8  gcc/te
*** 69307,69313 ****
  5b2c6ad1cf12ab0a6723c98b20dcae7e  gcc/testsuite/gcc.target/mips/msa-builtins.c
  2eadbb80b2f27ea5dec2927523282eac  gcc/testsuite/gcc.target/mips/msa-dotp.c
  24dc0b2f66533d2bc320fadac55156d3  gcc/testsuite/gcc.target/mips/msa-dpadd-dpsub.c
! ee4d5e0c7e7dda84b8625b02b91f79b1  gcc/testsuite/gcc.target/mips/msa-ds.c
  27a766579a6d69bf5da7215900f5c157  gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c
  6ca28b1dbd353df15b9215ec8b8ac903  gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c
  4aeaa4b74503d004f53a0c826972e294  gcc/testsuite/gcc.target/mips/msa-fp-cc.c
--- 73262,73268 ----
  5b2c6ad1cf12ab0a6723c98b20dcae7e  gcc/testsuite/gcc.target/mips/msa-builtins.c
  2eadbb80b2f27ea5dec2927523282eac  gcc/testsuite/gcc.target/mips/msa-dotp.c
  24dc0b2f66533d2bc320fadac55156d3  gcc/testsuite/gcc.target/mips/msa-dpadd-dpsub.c
! e151f4642441c39fa23f92292201ce34  gcc/testsuite/gcc.target/mips/msa-ds.c
  27a766579a6d69bf5da7215900f5c157  gcc/testsuite/gcc.target/mips/msa-fmadd-n64.c
  6ca28b1dbd353df15b9215ec8b8ac903  gcc/testsuite/gcc.target/mips/msa-fmadd-o32.c
  4aeaa4b74503d004f53a0c826972e294  gcc/testsuite/gcc.target/mips/msa-fp-cc.c
*************** caada899adaa25d988c300185e4be613  gcc/te
*** 69416,69421 ****
--- 73371,73377 ----
  f42f0801a44d06285cee316810947fb7  gcc/testsuite/gcc.target/mips/pr102024-2.c
  98311d9530bd225a74247a96e75fd525  gcc/testsuite/gcc.target/mips/pr102024-3.c
  4722bc5e1a9d0de7597bc138894a36d3  gcc/testsuite/gcc.target/mips/pr102024-4.c
+ 06ed58a6932750afce22db3b1b18fd17  gcc/testsuite/gcc.target/mips/pr106462.c
  def76d72ccc4011afcc36f6a1668e0a5  gcc/testsuite/gcc.target/mips/pr26765.c
  a353694197fdff37f4981c3e510c5565  gcc/testsuite/gcc.target/mips/pr33256.c
  10ea730da40444dc72c89d6cde02220c  gcc/testsuite/gcc.target/mips/pr33635-1.c
*************** e8ccb7e6be9b4a5a6ee6f2e94fc961da  gcc/te
*** 69618,69624 ****
  27128b7463fae2c76e78b92abb781315  gcc/testsuite/gcc.target/msp430/mcpu-is-430xv2.c
  e7e107ec835c73626fadb6558d4cd699  gcc/testsuite/gcc.target/msp430/mlarge-pedwarns.c
  68a7d21ba011cdccee863c1757c35ab8  gcc/testsuite/gcc.target/msp430/mlarge-use-430-insn.c
! 2e13d314f915d9571e73eaca30650ffa  gcc/testsuite/gcc.target/msp430/msp430.exp
  9a9833f7a9115cf97f061eb7c068bbb7  gcc/testsuite/gcc.target/msp430/msp430.h
  e96192907f9fd6f32abdb4b2f8c43e7a  gcc/testsuite/gcc.target/msp430/msp430f-device-symbol.c
  4ff245af8aceb3c9dc91c199e31b7af0  gcc/testsuite/gcc.target/msp430/msp430i-device-symbol.c
--- 73574,73580 ----
  27128b7463fae2c76e78b92abb781315  gcc/testsuite/gcc.target/msp430/mcpu-is-430xv2.c
  e7e107ec835c73626fadb6558d4cd699  gcc/testsuite/gcc.target/msp430/mlarge-pedwarns.c
  68a7d21ba011cdccee863c1757c35ab8  gcc/testsuite/gcc.target/msp430/mlarge-use-430-insn.c
! 05947598ec8fe71c81391f96b076c0c9  gcc/testsuite/gcc.target/msp430/msp430.exp
  9a9833f7a9115cf97f061eb7c068bbb7  gcc/testsuite/gcc.target/msp430/msp430.h
  e96192907f9fd6f32abdb4b2f8c43e7a  gcc/testsuite/gcc.target/msp430/msp430f-device-symbol.c
  4ff245af8aceb3c9dc91c199e31b7af0  gcc/testsuite/gcc.target/msp430/msp430i-device-symbol.c
*************** a76e9bdd8dd768b474700a1307ac151c  gcc/te
*** 69667,69673 ****
  15f6a34c31bfccfa2f37f50fbedaa686  gcc/testsuite/gcc.target/nds32/builtin-mfusr-mtusr.c
  2a347ba3731aa3fa17024e865968c3b8  gcc/testsuite/gcc.target/nds32/builtin-setgie-dis.c
  ddaca84e0c321fa88f3cedb3bac1bae5  gcc/testsuite/gcc.target/nds32/builtin-setgie-en.c
! 70bb84e1a96ad719386e994b3d746c25  gcc/testsuite/gcc.target/nds32/nds32.exp
  267d1f508341cb93b318d1a249e34c19  gcc/testsuite/gcc.target/nios2/andci.c
  b6812a3a7ba3a86a41e0fdc982390c97  gcc/testsuite/gcc.target/nios2/biggot-1.c
  cdbcb03e5a340d5566b6e43e17797f5e  gcc/testsuite/gcc.target/nios2/biggot-2.c
--- 73623,73629 ----
  15f6a34c31bfccfa2f37f50fbedaa686  gcc/testsuite/gcc.target/nds32/builtin-mfusr-mtusr.c
  2a347ba3731aa3fa17024e865968c3b8  gcc/testsuite/gcc.target/nds32/builtin-setgie-dis.c
  ddaca84e0c321fa88f3cedb3bac1bae5  gcc/testsuite/gcc.target/nds32/builtin-setgie-en.c
! f9563b5c57e98e55080571f163da547f  gcc/testsuite/gcc.target/nds32/nds32.exp
  267d1f508341cb93b318d1a249e34c19  gcc/testsuite/gcc.target/nios2/andci.c
  b6812a3a7ba3a86a41e0fdc982390c97  gcc/testsuite/gcc.target/nios2/biggot-1.c
  cdbcb03e5a340d5566b6e43e17797f5e  gcc/testsuite/gcc.target/nios2/biggot-2.c
*************** a87061df79ea1df98b37173a67798115  gcc/te
*** 69745,69751 ****
  6dbe531363c65af94c9d1cf19e943696  gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c
  758d14c9a54781c627955ab573f81558  gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c
  84c9378417e6cb2069a618430a13661c  gcc/testsuite/gcc.target/nios2/nios2-wrctl.c
! 1aaa67675add62df0d1a4a1953f79eeb  gcc/testsuite/gcc.target/nios2/nios2.exp
  5738a626d052d93dbea37d4d0144d7b8  gcc/testsuite/gcc.target/nios2/pr87079-1.c
  efa2a47188c46b5407f22a2a066118c8  gcc/testsuite/gcc.target/nios2/pr87079-2.c
  b267f28fe7ecd61569a0c578100b7bea  gcc/testsuite/gcc.target/nios2/pr92499-1.c
--- 73701,73707 ----
  6dbe531363c65af94c9d1cf19e943696  gcc/testsuite/gcc.target/nios2/nios2-wrctl-not-zero.c
  758d14c9a54781c627955ab573f81558  gcc/testsuite/gcc.target/nios2/nios2-wrctl-zero.c
  84c9378417e6cb2069a618430a13661c  gcc/testsuite/gcc.target/nios2/nios2-wrctl.c
! 78ab90932562d8d5a5d3d1902d0196d0  gcc/testsuite/gcc.target/nios2/nios2.exp
  5738a626d052d93dbea37d4d0144d7b8  gcc/testsuite/gcc.target/nios2/pr87079-1.c
  efa2a47188c46b5407f22a2a066118c8  gcc/testsuite/gcc.target/nios2/pr87079-2.c
  b267f28fe7ecd61569a0c578100b7bea  gcc/testsuite/gcc.target/nios2/pr92499-1.c
*************** fb0e44378720162460683cbfd0dbdc52  gcc/te
*** 69827,69833 ****
  46842942450b2228182a8a02cdfd0bad  gcc/testsuite/gcc.target/nvptx/mul-wide.c
  26682b7c6e1dc875ec8e2effc028a378  gcc/testsuite/gcc.target/nvptx/mul-wide64.c
  17c39d8f0e043cf2fa692089cf8498c7  gcc/testsuite/gcc.target/nvptx/neg-selp.c
! c223160afe61ca0bac348c1d25a7264a  gcc/testsuite/gcc.target/nvptx/nvptx.exp
  97135e11860bc0316757d03f9f9eab37  gcc/testsuite/gcc.target/nvptx/patchable_function_entry-default.c
  a935421e20c83d40eb47ae736d5b5859  gcc/testsuite/gcc.target/nvptx/popc-1.c
  c8bd1e5a7d975c41c97fb76577695e6e  gcc/testsuite/gcc.target/nvptx/popc-2.c
--- 73783,73789 ----
  46842942450b2228182a8a02cdfd0bad  gcc/testsuite/gcc.target/nvptx/mul-wide.c
  26682b7c6e1dc875ec8e2effc028a378  gcc/testsuite/gcc.target/nvptx/mul-wide64.c
  17c39d8f0e043cf2fa692089cf8498c7  gcc/testsuite/gcc.target/nvptx/neg-selp.c
! 13be6ed7e57081edaab34a164f27eddb  gcc/testsuite/gcc.target/nvptx/nvptx.exp
  97135e11860bc0316757d03f9f9eab37  gcc/testsuite/gcc.target/nvptx/patchable_function_entry-default.c
  a935421e20c83d40eb47ae736d5b5859  gcc/testsuite/gcc.target/nvptx/popc-1.c
  c8bd1e5a7d975c41c97fb76577695e6e  gcc/testsuite/gcc.target/nvptx/popc-2.c
*************** d59f1ded63c010f7c70d8914ff035369  gcc/te
*** 69884,69890 ****
  9e49229cfb3a4570a9259ea659772866  gcc/testsuite/gcc.target/or1k/cmov-2.c
  6bd14b0136c11119eb7b862a377f7a1d  gcc/testsuite/gcc.target/or1k/div-mul-1.c
  7fd1bcd610e82d1586aecf6b07e5cabb  gcc/testsuite/gcc.target/or1k/div-mul-2.c
! baff6ed7dab25fda19ba92368a28221c  gcc/testsuite/gcc.target/or1k/or1k.exp
  26536fcae441d001c2a53c21abf56757  gcc/testsuite/gcc.target/or1k/return-1.c
  cbc20b748446a09b12e149a14d1dc326  gcc/testsuite/gcc.target/or1k/return-2.c
  30571d600ad8e2c620b4c88dd60b22ab  gcc/testsuite/gcc.target/or1k/return-3.c
--- 73840,73846 ----
  9e49229cfb3a4570a9259ea659772866  gcc/testsuite/gcc.target/or1k/cmov-2.c
  6bd14b0136c11119eb7b862a377f7a1d  gcc/testsuite/gcc.target/or1k/div-mul-1.c
  7fd1bcd610e82d1586aecf6b07e5cabb  gcc/testsuite/gcc.target/or1k/div-mul-2.c
! 15daecaaa26f5064ec7574187b04636b  gcc/testsuite/gcc.target/or1k/or1k.exp
  26536fcae441d001c2a53c21abf56757  gcc/testsuite/gcc.target/or1k/return-1.c
  cbc20b748446a09b12e149a14d1dc326  gcc/testsuite/gcc.target/or1k/return-2.c
  30571d600ad8e2c620b4c88dd60b22ab  gcc/testsuite/gcc.target/or1k/return-3.c
*************** ea95f7612f0049e3a94038c123a0e60d  gcc/te
*** 69895,69900 ****
--- 73851,73858 ----
  11fa4323bb0698ed08c441ecf4a9de20  gcc/testsuite/gcc.target/or1k/shftimm-1.c
  4ee88d86fdfbf4d4ea1743897d934830  gcc/testsuite/gcc.target/or1k/shftimm-2.c
  e4f9cf3a5432c52f9f1d2ce9020312c4  gcc/testsuite/gcc.target/or1k/sibcall-1.c
+ 1cc48a89a1301f83729259444d93da62  gcc/testsuite/gcc.target/pdp11/pdp11.exp
+ 5e734d4f3084597cb92d1488fd0b9760  gcc/testsuite/gcc.target/pdp11/pr108388.c
  a03b92350a69b724ce16f3b7aa1803d7  gcc/testsuite/gcc.target/powerpc/20020118-1.c
  bb3374c69dde2e7b04fca300c9416620  gcc/testsuite/gcc.target/powerpc/20040121-1.c
  af361d9cce9906e7956ed7632c663422  gcc/testsuite/gcc.target/powerpc/20040622-1.c
*************** d5a3520388a5d684298f2ecede66ab11  gcc/te
*** 70045,70051 ****
  3a64fbfa795ceb21229f28888aa88ca4  gcc/testsuite/gcc.target/powerpc/bcd-2.c
  17645a2fd8d5ba2d2bc6c718c249ccf2  gcc/testsuite/gcc.target/powerpc/bcd-3.c
  fc549969b0a6cd788bf8da347fdb8b8a  gcc/testsuite/gcc.target/powerpc/bcd-4.c
! 3a4c1fe0533769c68de86c58f2d8cda4  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  a9acf66df4a99620b48a370fbf90f1e9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  6b805ac8ccc140528c05fe8211e24791  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
  9edcc760a84627d628e437142f98fe00  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
--- 74003,74009 ----
  3a64fbfa795ceb21229f28888aa88ca4  gcc/testsuite/gcc.target/powerpc/bcd-2.c
  17645a2fd8d5ba2d2bc6c718c249ccf2  gcc/testsuite/gcc.target/powerpc/bcd-3.c
  fc549969b0a6cd788bf8da347fdb8b8a  gcc/testsuite/gcc.target/powerpc/bcd-4.c
! 328a73a692c963c977f386d831574570  gcc/testsuite/gcc.target/powerpc/bfp/bfp.exp
  a9acf66df4a99620b48a370fbf90f1e9  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-0.c
  6b805ac8ccc140528c05fe8211e24791  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-1.c
  9edcc760a84627d628e437142f98fe00  gcc/testsuite/gcc.target/powerpc/bfp/scalar-cmp-exp-eq-2.c
*************** e6064234e1ff945f70aea710267ad0fd  gcc/te
*** 70102,70111 ****
  3aafb56b77b9d6a86fe4f40e1a8aa4d5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-1.c
  d28ee61836b7ad032f0ca8aac9877f6b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-10.c
  c1ae2fed6493b53ca839ee1492f670df  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c
! 7e8619805bfaa018672ad9d3740be480  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-12.c
  8b151022a0fe9b76fc734fa235c42dd5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-13.c
! b778133ecfccc947d6107fe65169e686  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-14.c
! 22ac5c058882b03b252aed43414023c6  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-15.c
  f05f903cb210020b46710f6d136404c1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-2.c
  6a54ac165bd51ab56c830f2132c8aa52  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-3.c
  f4c31ce75c2db5935d3bd54b3b434540  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-4.c
--- 74060,74069 ----
  3aafb56b77b9d6a86fe4f40e1a8aa4d5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-1.c
  d28ee61836b7ad032f0ca8aac9877f6b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-10.c
  c1ae2fed6493b53ca839ee1492f670df  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-11.c
! acab18328795beb684d3fb0230912659  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-12.c
  8b151022a0fe9b76fc734fa235c42dd5  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-13.c
! 5a55d694383ea42c65a0e734a08fde15  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-14.c
! 72332bb8f78bdc43c6f1a8dc5cf11687  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-15.c
  f05f903cb210020b46710f6d136404c1  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-2.c
  6a54ac165bd51ab56c830f2132c8aa52  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-3.c
  f4c31ce75c2db5935d3bd54b3b434540  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-data-class-4.c
*************** f89867d63a217f084e9502e63d906695  gcc/te
*** 70122,70128 ****
  f56af8c646c37c09819af6d713463c1b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c
  a17c0089fe2acabf4baa27c99b4c3f90  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-6.c
  5af1cb0aa09a5184a2286fbdabe56fcd  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-7.c
! 2ac7a6e60efeadda0bbe3edf87af53fa  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-8.c
  5afb3d1b3050df892764184540c0f215  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-0.c
  d75a7d80c777560a61f51a81e5f2df0d  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-1.c
  350ce82578c5a4bec2b1ad5d1d12b57c  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
--- 74080,74086 ----
  f56af8c646c37c09819af6d713463c1b  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-5.c
  a17c0089fe2acabf4baa27c99b4c3f90  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-6.c
  5af1cb0aa09a5184a2286fbdabe56fcd  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-7.c
! c5a6e3698c21f2484a57892ba8b6b9bc  gcc/testsuite/gcc.target/powerpc/bfp/scalar-test-neg-8.c
  5afb3d1b3050df892764184540c0f215  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-0.c
  d75a7d80c777560a61f51a81e5f2df0d  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-1.c
  350ce82578c5a4bec2b1ad5d1d12b57c  gcc/testsuite/gcc.target/powerpc/bfp/vec-extract-exp-2.c
*************** bb4b7ac98b67eb69dfafdba7d0001209  gcc/te
*** 70156,70162 ****
  d2e524b382b2181ac5438a1200c31c09  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-6.c
  8a575518d085a37695caa4f3694a712e  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-7.c
  f6ef2287686b07dd4ad99d21b7aabe54  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-8.c
! 3f6c1f233d0fb89255dabcc4d15475c7  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-9.c
  d71e4fffd67fe9a02068065c31f40a8c  gcc/testsuite/gcc.target/powerpc/block-move-1.c
  acce3a59dc7d4ef94160abede8f06c07  gcc/testsuite/gcc.target/powerpc/block-move-2.c
  d8aa673b60fb5339ddbce0e63fdee95e  gcc/testsuite/gcc.target/powerpc/bmi-andn-1.c
--- 74114,74120 ----
  d2e524b382b2181ac5438a1200c31c09  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-6.c
  8a575518d085a37695caa4f3694a712e  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-7.c
  f6ef2287686b07dd4ad99d21b7aabe54  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-8.c
! 97cdb1e602cc1725a6ed7cf35b9a5254  gcc/testsuite/gcc.target/powerpc/bfp/vec-test-data-class-9.c
  d71e4fffd67fe9a02068065c31f40a8c  gcc/testsuite/gcc.target/powerpc/block-move-1.c
  acce3a59dc7d4ef94160abede8f06c07  gcc/testsuite/gcc.target/powerpc/block-move-2.c
  d8aa673b60fb5339ddbce0e63fdee95e  gcc/testsuite/gcc.target/powerpc/bmi-andn-1.c
*************** dc2d3d2859a886302c3ee70084f25059  gcc/te
*** 70230,70236 ****
  50bb9ae2f77e2ee92fa420b15a5d1d93  gcc/testsuite/gcc.target/powerpc/builtins-4-p9-runnable.c
  229b92af5d708ec95906efd39c078624  gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
  a434ec9b73b5bda40b0236364298edbc  gcc/testsuite/gcc.target/powerpc/builtins-4.c
! 13e0b4808cc07b46cac8e9d91447da3c  gcc/testsuite/gcc.target/powerpc/builtins-5-p9-runnable.c
  46cecca879d095c0c788ca55bc6241ef  gcc/testsuite/gcc.target/powerpc/builtins-5.c
  d6c50bef137b8bc795dc8da8475e7d72  gcc/testsuite/gcc.target/powerpc/builtins-6-p9-runnable.c
  54e75f8afa24099030187760b9579828  gcc/testsuite/gcc.target/powerpc/builtins-6-runnable.c
--- 74188,74194 ----
  50bb9ae2f77e2ee92fa420b15a5d1d93  gcc/testsuite/gcc.target/powerpc/builtins-4-p9-runnable.c
  229b92af5d708ec95906efd39c078624  gcc/testsuite/gcc.target/powerpc/builtins-4-runnable.c
  a434ec9b73b5bda40b0236364298edbc  gcc/testsuite/gcc.target/powerpc/builtins-4.c
! e08baaf9a0d1b4c5378da7deab293215  gcc/testsuite/gcc.target/powerpc/builtins-5-p9-runnable.c
  46cecca879d095c0c788ca55bc6241ef  gcc/testsuite/gcc.target/powerpc/builtins-5.c
  d6c50bef137b8bc795dc8da8475e7d72  gcc/testsuite/gcc.target/powerpc/builtins-6-p9-runnable.c
  54e75f8afa24099030187760b9579828  gcc/testsuite/gcc.target/powerpc/builtins-6-runnable.c
*************** c557254ecf58aa4d6f3d4bdb298275db  gcc/te
*** 70249,70254 ****
--- 74207,74214 ----
  58649744a331577784ece84c2d89a6b3  gcc/testsuite/gcc.target/powerpc/byte-in-set-0.c
  595315abe517e7640f312c098a95a84e  gcc/testsuite/gcc.target/powerpc/byte-in-set-1.c
  ccab226ed6b1c2e5cad1abda23c992c7  gcc/testsuite/gcc.target/powerpc/byte-in-set-2.c
+ aa3a328249d1b5d2e5d886843c65f69f  gcc/testsuite/gcc.target/powerpc/cbranchcc4-1.c
+ 774f769c6ea974794be75428470b27d3  gcc/testsuite/gcc.target/powerpc/cbranchcc4-2.c
  2967ae37e85e61aa7e2d5198922374ad  gcc/testsuite/gcc.target/powerpc/cell_builtin-1.c
  222e0812e626f0e1abf688d71c5afc58  gcc/testsuite/gcc.target/powerpc/cell_builtin-2.c
  e25f2a228d796f1db494d4bd8e5d34f5  gcc/testsuite/gcc.target/powerpc/cell_builtin-3.c
*************** ce1f3ad7eb43ff7d5709418e9886c843  gcc/te
*** 70328,70334 ****
  70d51abf2988870d80cb9cc5e753c87b  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  28bb384f8efa10801efa64c838eab4e2  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  20555599c7a199625c2d8d95f50de5e9  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! 32a16fdc7d3694b41b0a83c9cc150446  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  87e54b934c02cfbc3b6fb142c76e4e04  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
  eeaa0257c75044dd988a2b10bddeea7c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  cf4bee8bc84345204e6621398ea24cc3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
--- 74288,74294 ----
  70d51abf2988870d80cb9cc5e753c87b  gcc/testsuite/gcc.target/powerpc/dfp-td-2.c
  28bb384f8efa10801efa64c838eab4e2  gcc/testsuite/gcc.target/powerpc/dfp-td-3.c
  20555599c7a199625c2d8d95f50de5e9  gcc/testsuite/gcc.target/powerpc/dfp-td.c
! fe40ce44c356a7f5ce67d2aefb86efd3  gcc/testsuite/gcc.target/powerpc/dfp/dfp.exp
  87e54b934c02cfbc3b6fb142c76e4e04  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-0.c
  eeaa0257c75044dd988a2b10bddeea7c  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-1.c
  cf4bee8bc84345204e6621398ea24cc3  gcc/testsuite/gcc.target/powerpc/dfp/dtstsfi-10.c
*************** bbd67209d5072324b6c172166dfdc420  gcc/te
*** 70430,70435 ****
--- 74390,74397 ----
  09495604f3a8758d402fe4f21d86c61c  gcc/testsuite/gcc.target/powerpc/dive-vectorize-2.h
  0532ce60fbb266a7997c5b039f019605  gcc/testsuite/gcc.target/powerpc/dive-vectorize-run-1.c
  c5a9d08c3b838f5a1fea3a4a1a8fd74c  gcc/testsuite/gcc.target/powerpc/dive-vectorize-run-2.c
+ 696e63162a2f3acf5d17e871a4d6c5b7  gcc/testsuite/gcc.target/powerpc/divic3-1.c
+ 1979ea6670fbb71d39841682940e44aa  gcc/testsuite/gcc.target/powerpc/divic3-2.c
  437116f4ece2fc838159319958a00e92  gcc/testsuite/gcc.target/powerpc/divkc3-1.c
  499cd7621c221e968d7b038cf3e898d9  gcc/testsuite/gcc.target/powerpc/divkc3-2.c
  acd01b4a84dada449fb4247ebc8529e0  gcc/testsuite/gcc.target/powerpc/divkc3-3.c
*************** eb998d6ef2653ca2d3b987d2a1b0c567  gcc/te
*** 70518,70523 ****
--- 74480,74486 ----
  7482829c69b33ee5b98c599b6ecdfb75  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p7.c
  54367c549f4cf6dd1cafba2967f03121  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p8.c
  48f224974d267d780136ce5281b87afb  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int.p9.c
+ 95589273f7be6f4ef22f88ff1ff2d4c9  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-int128.c
  f67a83a9f4936ed73f685569b705dcec  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-longlong.c
  1e3dcfff9a591243440725f5901f9d63  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.h
  c64b3b6e74c02a83ece50134f8a7c94a  gcc/testsuite/gcc.target/powerpc/fold-vec-cmp-short.p8.c
*************** c0d91fe2e7dbdb7d7aedb914d67fcedb  gcc/te
*** 70534,70540 ****
  e878b1f5b97280c654030ad18132a088  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p9.c
  06662a48faa71b240b5e9d3c1e1ba5af  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
  fa27145dde6c108df6e976bb402b111c  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p8.c
! 535358f98c3b8827140dd2a785bc95d3  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c
  89f40be7947fda24987e25856b7b165e  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
  fc258cfb8dc3c7bd06ab308198b80404  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
  7a0759e27979c5806319cd64c6401208  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p9.c
--- 74497,74503 ----
  e878b1f5b97280c654030ad18132a088  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-char.p9.c
  06662a48faa71b240b5e9d3c1e1ba5af  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p7.c
  fa27145dde6c108df6e976bb402b111c  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p8.c
! f28454392bfa7d7a1137bcafe2123abf  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-double.p9.c
  89f40be7947fda24987e25856b7b165e  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p7.c
  fc258cfb8dc3c7bd06ab308198b80404  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p8.c
  7a0759e27979c5806319cd64c6401208  gcc/testsuite/gcc.target/powerpc/fold-vec-extract-float.p9.c
*************** b0289eef57a41f5bdbb7823fee56214b  gcc/te
*** 70739,70745 ****
  b777ef2a10f6f5ff643ab886bf487233  gcc/testsuite/gcc.target/powerpc/htm-xl-intrin-1.c
  8d634b2a7d443f1e5b4b69716e57ac00  gcc/testsuite/gcc.target/powerpc/indexed-addr.c
  1cc843325d44861ca12b01f8232baced  gcc/testsuite/gcc.target/powerpc/inf128-1.c
! 6ffc88ec7c7f4d33f739e8767efbd023  gcc/testsuite/gcc.target/powerpc/int_128bit-runnable.c
  2cfd2ecd43230367d6d063b77664e314  gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
  7893fdf7b4681a84cb4d049bea9ffc10  gcc/testsuite/gcc.target/powerpc/leaf.c
  9d79c9715a5734121e7d5c8fa078a7df  gcc/testsuite/gcc.target/powerpc/lhs-1.c
--- 74702,74708 ----
  b777ef2a10f6f5ff643ab886bf487233  gcc/testsuite/gcc.target/powerpc/htm-xl-intrin-1.c
  8d634b2a7d443f1e5b4b69716e57ac00  gcc/testsuite/gcc.target/powerpc/indexed-addr.c
  1cc843325d44861ca12b01f8232baced  gcc/testsuite/gcc.target/powerpc/inf128-1.c
! 9207e81fac0b858b4fe23a0d073da056  gcc/testsuite/gcc.target/powerpc/int_128bit-runnable.c
  2cfd2ecd43230367d6d063b77664e314  gcc/testsuite/gcc.target/powerpc/le-altivec-consts.c
  7893fdf7b4681a84cb4d049bea9ffc10  gcc/testsuite/gcc.target/powerpc/leaf.c
  9d79c9715a5734121e7d5c8fa078a7df  gcc/testsuite/gcc.target/powerpc/lhs-1.c
*************** bc09ccd31ca386dda15202c6adf9371a  gcc/te
*** 70816,70826 ****
--- 74779,74793 ----
  44ea7227a4af1aed1643b840469d076d  gcc/testsuite/gcc.target/powerpc/mmx-punpcklwd-1.c
  180bf46e92dd9c837dbbc9cb04dd70c9  gcc/testsuite/gcc.target/powerpc/mod-1.c
  f86f87dd7c82f05785a8e530a4718235  gcc/testsuite/gcc.target/powerpc/mod-2.c
+ e7f24c5bcf4677a0ae7a8fdcd1aeff80  gcc/testsuite/gcc.target/powerpc/mod-no_copy.c
+ fed2453600d3a45ca2a5679c322ff194  gcc/testsuite/gcc.target/powerpc/mod-peephole.c
  b3bf87376bd60d32d00ef203e1cf7d6e  gcc/testsuite/gcc.target/powerpc/mod-vectorize.c
  2a62a820771528492abcb2b5b082d93d  gcc/testsuite/gcc.target/powerpc/mul-vectorize-1.c
  0756792d071f22b4d0d92c56ab912d25  gcc/testsuite/gcc.target/powerpc/mul-vectorize-2.c
  64af73bfe790036cc6a9cae813ae5517  gcc/testsuite/gcc.target/powerpc/mul-vectorize-3.c
  fb4a75732e13475e8348aaa599f24ca9  gcc/testsuite/gcc.target/powerpc/mul-vectorize-4.c
+ 0eeef6e17953a9f9d3921bffff4a3fad  gcc/testsuite/gcc.target/powerpc/mulic3-1.c
+ 40832ab7e8baf16efb6af3d58eb2479b  gcc/testsuite/gcc.target/powerpc/mulic3-2.c
  4eaddf22e0f22b514f7215226f16b76c  gcc/testsuite/gcc.target/powerpc/mulkc3-1.c
  1549b9373bc2fd4008625c3dfbefb007  gcc/testsuite/gcc.target/powerpc/mulkc3-2.c
  18aac6a2b165d96b59c08a6941c593dd  gcc/testsuite/gcc.target/powerpc/mulkc3-3.c
*************** f894721021799aabe3eadaa2daf74231  gcc/te
*** 70864,70870 ****
  060af2b0be9baf28c65dd6a2c3c8a530  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
  5fad8b402567215ed28ca6fdf43f0183  gcc/testsuite/gcc.target/powerpc/p9-dimode1.c
  a7f58c62ee3a7a8f1162eb70b615945a  gcc/testsuite/gcc.target/powerpc/p9-dimode2.c
! 5ebf6c3bb7886caeb7c355ef715c9e51  gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
  23e74d860629275756e652adec96ff26  gcc/testsuite/gcc.target/powerpc/p9-extract-2.c
  b98e9e294f5e7e979ffc1acb72861484  gcc/testsuite/gcc.target/powerpc/p9-extract-3.c
  cf1b99547521c33d8d864faace781136  gcc/testsuite/gcc.target/powerpc/p9-extract-4.c
--- 74831,74837 ----
  060af2b0be9baf28c65dd6a2c3c8a530  gcc/testsuite/gcc.target/powerpc/p8vector-vectorize-5.c
  5fad8b402567215ed28ca6fdf43f0183  gcc/testsuite/gcc.target/powerpc/p9-dimode1.c
  a7f58c62ee3a7a8f1162eb70b615945a  gcc/testsuite/gcc.target/powerpc/p9-dimode2.c
! 892408850b0143d0d0b9e22eab6d6bf7  gcc/testsuite/gcc.target/powerpc/p9-extract-1.c
  23e74d860629275756e652adec96ff26  gcc/testsuite/gcc.target/powerpc/p9-extract-2.c
  b98e9e294f5e7e979ffc1acb72861484  gcc/testsuite/gcc.target/powerpc/p9-extract-3.c
  cf1b99547521c33d8d864faace781136  gcc/testsuite/gcc.target/powerpc/p9-extract-4.c
*************** c28edf1d4900581a18cfe9388ed98dd7  gcc/te
*** 70880,70886 ****
  a6211dec098d657a18749d7ffe72b371  gcc/testsuite/gcc.target/powerpc/p9-novsx.c
  f1c22b7125d1d3b2d4a8cb3878d6a313  gcc/testsuite/gcc.target/powerpc/p9-options-1.c
  9d87be0758175c69faf593117726c44c  gcc/testsuite/gcc.target/powerpc/p9-permute.c
! c35fe992924972f820d30b13b50e1d48  gcc/testsuite/gcc.target/powerpc/p9-sign_extend-runnable.c
  19208a1ca04ecbd61dd2fc9f62b0bb17  gcc/testsuite/gcc.target/powerpc/p9-splat-1.c
  b3bd137ac2457919c51b1e0885a28cf9  gcc/testsuite/gcc.target/powerpc/p9-splat-2.c
  cdd965ef19d5f08902aa357d47055aab  gcc/testsuite/gcc.target/powerpc/p9-splat-3.c
--- 74847,74853 ----
  a6211dec098d657a18749d7ffe72b371  gcc/testsuite/gcc.target/powerpc/p9-novsx.c
  f1c22b7125d1d3b2d4a8cb3878d6a313  gcc/testsuite/gcc.target/powerpc/p9-options-1.c
  9d87be0758175c69faf593117726c44c  gcc/testsuite/gcc.target/powerpc/p9-permute.c
! 886c77bc76a412a94847f37ff07e2fb9  gcc/testsuite/gcc.target/powerpc/p9-sign_extend-runnable.c
  19208a1ca04ecbd61dd2fc9f62b0bb17  gcc/testsuite/gcc.target/powerpc/p9-splat-1.c
  b3bd137ac2457919c51b1e0885a28cf9  gcc/testsuite/gcc.target/powerpc/p9-splat-2.c
  cdd965ef19d5f08902aa357d47055aab  gcc/testsuite/gcc.target/powerpc/p9-splat-3.c
*************** e1b8cd08f8318d0a6b2e5b855075001d  gcc/te
*** 70895,70908 ****
  5d9fad6eebd37291c65898f8fbfd8aa4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-6.h
  4b4d6e3387e320581f6e26cd33efa8c4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-7.h
  542bcc43fcc4ae002c6071e4fb82f606  gcc/testsuite/gcc.target/powerpc/p9-vec-length-8.h
! 6f1960cdffbaef21e4593eccd38e7929  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-1.c
! f671afd110d5f782e9d20ab4ebc4d4be  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-2.c
! eba9fb2ef8829b4f12eb280c7bdf546b  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-3.c
! 61e552d417782e245d4e82c437d23974  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-4.c
! 3fa98625eb1aca5e5de550a027af26ab  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-5.c
! e3d0df1fe70a1a16f61af01a0541b590  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-6.c
  3b95eb0e16f740c59fed518b1061aafd  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-7.c
! 140e9ccca6e080ac87e45aa4eca7f44f  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-8.c
  661823bc37a352c7a0284caefaf94ad3  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-1.c
  c93356c7aed0735689569396e6f3134e  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-2.c
  9855b5087d8f6fff301d3c34593e4278  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-3.c
--- 74862,74875 ----
  5d9fad6eebd37291c65898f8fbfd8aa4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-6.h
  4b4d6e3387e320581f6e26cd33efa8c4  gcc/testsuite/gcc.target/powerpc/p9-vec-length-7.h
  542bcc43fcc4ae002c6071e4fb82f606  gcc/testsuite/gcc.target/powerpc/p9-vec-length-8.h
! b6245cfe8555a1c112ab77aa31231677  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-1.c
! 2c4b0d06849c2813d8ba1cc5c99530ef  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-2.c
! b1888bfc7a38a6175d5283f28a368a2c  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-3.c
! f0e6330c98b8592e570e0d33c210435b  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-4.c
! b5343082f0bc012ab020a3c7990f8288  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-5.c
! 534b0ef33b44ea2c96d3d9760d39a66e  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-6.c
  3b95eb0e16f740c59fed518b1061aafd  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-7.c
! ada3a85647eeb3b0a752188b923a7c80  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-8.c
  661823bc37a352c7a0284caefaf94ad3  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-1.c
  c93356c7aed0735689569396e6f3134e  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-2.c
  9855b5087d8f6fff301d3c34593e4278  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-3.c
*************** c93356c7aed0735689569396e6f3134e  gcc/te
*** 70911,70924 ****
  befd102cc556de49c551f984f7607ff5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-6.c
  6ab4acea9bc066025498eb5a8caa7ce8  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-7.c
  d9bf88eb680a6b1eb840090871e1de9d  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-8.c
! 3fb71c141b802aa4981bc89dd61a0241  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-1.c
! 998f7612089f7ca7151c60d297457a09  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-2.c
! b2622014ac647ae93ca6a19d4a0f6e63  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-3.c
! e3a4c5a3f53fd1f78bbff95301a9a0f3  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-4.c
! a619bdf3d50595136050c6201d6a33d5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-5.c
! dd4a9f2f07298325bccd0457959de0aa  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-6.c
  abd5542b140772430f89fdc57f0f9b17  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-7.c
! 3ddfe6216b76faa377fb67e65f91b4dd  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-8.c
  347f7ced5af84328cec5b76767c2dfd0  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-1.c
  6011bbefd012a5722b03bf23fc01c8b7  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-2.c
  fa24c780840f4b77dd9ff11801a2aa9a  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-3.c
--- 74878,74891 ----
  befd102cc556de49c551f984f7607ff5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-6.c
  6ab4acea9bc066025498eb5a8caa7ce8  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-7.c
  d9bf88eb680a6b1eb840090871e1de9d  gcc/testsuite/gcc.target/powerpc/p9-vec-length-epil-run-8.c
! 9a27c1344dbb9441c877b805dc907046  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-1.c
! 33fa9a224f1e37ab8974891f072663e6  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-2.c
! 521b01c205745a9d2e925dcd51eb848d  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-3.c
! acf38bf1b4cd8c6aba876365302e136c  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-4.c
! 18f0bd05f35a09e69cd4c2810bdcaec5  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-5.c
! 962ca313d6325e87c01096c9dfe0d5e8  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-6.c
  abd5542b140772430f89fdc57f0f9b17  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-7.c
! a38e3be0257e605d028979c9c058102a  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-8.c
  347f7ced5af84328cec5b76767c2dfd0  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-1.c
  6011bbefd012a5722b03bf23fc01c8b7  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-2.c
  fa24c780840f4b77dd9ff11801a2aa9a  gcc/testsuite/gcc.target/powerpc/p9-vec-length-full-run-3.c
*************** ee8c0fe3fe328a4102e36f1a91ad6105  gcc/te
*** 70937,70943 ****
  71775cec123fe96ec58d805a44df5147  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-8.h
  ca2326bfc2b9007e3b63b0bea8890a00  gcc/testsuite/gcc.target/powerpc/p9-vec-length.h
  384af3a86160f8a14629fb05f541acd4  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
! 1927d37785de58e49934412776e54594  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
  b26961d59fb61a1d972f9bce8166abcf  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
  effdc6f6f7d2783f62ecfc6b15424d8e  gcc/testsuite/gcc.target/powerpc/p9-xxbr-1.c
  f5ff4265dd8eef473babbbc9f92afdc2  gcc/testsuite/gcc.target/powerpc/p9-xxbr-2.c
--- 74904,74910 ----
  71775cec123fe96ec58d805a44df5147  gcc/testsuite/gcc.target/powerpc/p9-vec-length-run-8.h
  ca2326bfc2b9007e3b63b0bea8890a00  gcc/testsuite/gcc.target/powerpc/p9-vec-length.h
  384af3a86160f8a14629fb05f541acd4  gcc/testsuite/gcc.target/powerpc/p9-vneg.c
! bc701c10be9cbdfa6b05c521a259cd14  gcc/testsuite/gcc.target/powerpc/p9-vparity.c
  b26961d59fb61a1d972f9bce8166abcf  gcc/testsuite/gcc.target/powerpc/p9-vpermr.c
  effdc6f6f7d2783f62ecfc6b15424d8e  gcc/testsuite/gcc.target/powerpc/p9-xxbr-1.c
  f5ff4265dd8eef473babbbc9f92afdc2  gcc/testsuite/gcc.target/powerpc/p9-xxbr-2.c
*************** f3bcfcd71339225d3b3fc35393553b55  gcc/te
*** 70979,70985 ****
  b818a05f9892ef086f53347beb95c5ab  gcc/testsuite/gcc.target/powerpc/popcount-1.c
  a1ca0398bda92fa2d58fffbdae74b412  gcc/testsuite/gcc.target/powerpc/popcount-2.c
  765612a7627c33c6b923cafa4b6f8492  gcc/testsuite/gcc.target/powerpc/popcount-3.c
! cd89f68d37fa789646b1c1e491565ff3  gcc/testsuite/gcc.target/powerpc/powerpc.exp
  7b955220897e3c489f9cc6a3dfbb95eb  gcc/testsuite/gcc.target/powerpc/ppc-and-1.c
  d6e0d31ab4778feea50f0fdf0f3bcd89  gcc/testsuite/gcc.target/powerpc/ppc-bitfield1.c
  1ea7507881ba72f6b3c6548f30014d46  gcc/testsuite/gcc.target/powerpc/ppc-compare-1.c
--- 74946,74952 ----
  b818a05f9892ef086f53347beb95c5ab  gcc/testsuite/gcc.target/powerpc/popcount-1.c
  a1ca0398bda92fa2d58fffbdae74b412  gcc/testsuite/gcc.target/powerpc/popcount-2.c
  765612a7627c33c6b923cafa4b6f8492  gcc/testsuite/gcc.target/powerpc/popcount-3.c
! c549f352f6ea953815eab6307c23df14  gcc/testsuite/gcc.target/powerpc/powerpc.exp
  7b955220897e3c489f9cc6a3dfbb95eb  gcc/testsuite/gcc.target/powerpc/ppc-and-1.c
  d6e0d31ab4778feea50f0fdf0f3bcd89  gcc/testsuite/gcc.target/powerpc/ppc-bitfield1.c
  1ea7507881ba72f6b3c6548f30014d46  gcc/testsuite/gcc.target/powerpc/ppc-compare-1.c
*************** dbe8b7a61a7368d65f67bfc4131425cf  gcc/te
*** 70996,71004 ****
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
  546f8b1533e6aef90ce72768fe282cb0  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
! 7fdb5eba51fa57cb7495f8f9cd302009  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
  52ce6ab70ec07f3c0a8847b56ee3e297  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr102767.f90
! d8dee8628be2277beaeffe1850a700cd  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
  164d50a721edad82a9cd9f4b63b1b8f9  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
  98f6990b548a4e10341ee0039997e942  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
  9f7c58381e366ddea9a6746fd8d828e0  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-11.c
--- 74963,74971 ----
  b49bfc8892e32ccd4715b924f41106d6  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-2.c
  90d042fffee10d77e01ab7cf9fcbb7c1  gcc/testsuite/gcc.target/powerpc/ppc-fmadd-3.c
  546f8b1533e6aef90ce72768fe282cb0  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ieee128-math.f90
! dc7de1f5fb8e08a6a2d1685a834561f0  gcc/testsuite/gcc.target/powerpc/ppc-fortran/ppc-fortran.exp
  52ce6ab70ec07f3c0a8847b56ee3e297  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr102767.f90
! 7053a555244823afb7f5781e652a5180  gcc/testsuite/gcc.target/powerpc/ppc-fortran/pr80108-1.f90
  164d50a721edad82a9cd9f4b63b1b8f9  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-1.c
  98f6990b548a4e10341ee0039997e942  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-10.c
  9f7c58381e366ddea9a6746fd8d828e0  gcc/testsuite/gcc.target/powerpc/ppc-fpconv-11.c
*************** b6bd72515ca594257e5ab11b307231e8  gcc/te
*** 71046,71056 ****
  322275a6e18c464401bb8e7d050b7539  gcc/testsuite/gcc.target/powerpc/ppc64-toc.c
  a64bd4e47397af3253bc9e8dc2c56780  gcc/testsuite/gcc.target/powerpc/ppu-intrinsics.c
  ef3b097387678432aef397a313268021  gcc/testsuite/gcc.target/powerpc/pr100085.c
  5ccf50d6af741aec776b2d54411331d5  gcc/testsuite/gcc.target/powerpc/pr100777.c
  93530f0352e114499a2243d7a2a63830  gcc/testsuite/gcc.target/powerpc/pr101129.c
  98ac1105d04b59ee48240bf0f7de65df  gcc/testsuite/gcc.target/powerpc/pr101324.c
  49e2861f8bafbfa8fb4beaf059a21224  gcc/testsuite/gcc.target/powerpc/pr101384-1.c
! 703ab858eeafc240a8f44fad795671a0  gcc/testsuite/gcc.target/powerpc/pr101384-2.c
  2defd7a4f1a3a146b7a4bb52e394d4af  gcc/testsuite/gcc.target/powerpc/pr101596-1.c
  dcc4eac3d42ed0904a410de41ce14d66  gcc/testsuite/gcc.target/powerpc/pr101596-2.c
  e43ef13018c5e5bb2d9e1b0dbfd705a3  gcc/testsuite/gcc.target/powerpc/pr101596-3.c
--- 75013,75026 ----
  322275a6e18c464401bb8e7d050b7539  gcc/testsuite/gcc.target/powerpc/ppc64-toc.c
  a64bd4e47397af3253bc9e8dc2c56780  gcc/testsuite/gcc.target/powerpc/ppu-intrinsics.c
  ef3b097387678432aef397a313268021  gcc/testsuite/gcc.target/powerpc/pr100085.c
+ 1303cdaf34dd8ca56079b84c2ea25cc0  gcc/testsuite/gcc.target/powerpc/pr100645.c
  5ccf50d6af741aec776b2d54411331d5  gcc/testsuite/gcc.target/powerpc/pr100777.c
+ 75fb37badf6ba6dceeec125380fbd87c  gcc/testsuite/gcc.target/powerpc/pr100866-1.c
+ 6ad97209debb8a530eaf908370f96c0b  gcc/testsuite/gcc.target/powerpc/pr100866-2.c
  93530f0352e114499a2243d7a2a63830  gcc/testsuite/gcc.target/powerpc/pr101129.c
  98ac1105d04b59ee48240bf0f7de65df  gcc/testsuite/gcc.target/powerpc/pr101324.c
  49e2861f8bafbfa8fb4beaf059a21224  gcc/testsuite/gcc.target/powerpc/pr101384-1.c
! dfbdac263fc54ba43e6e0d8ad85f5e18  gcc/testsuite/gcc.target/powerpc/pr101384-2.c
  2defd7a4f1a3a146b7a4bb52e394d4af  gcc/testsuite/gcc.target/powerpc/pr101596-1.c
  dcc4eac3d42ed0904a410de41ce14d66  gcc/testsuite/gcc.target/powerpc/pr101596-2.c
  e43ef13018c5e5bb2d9e1b0dbfd705a3  gcc/testsuite/gcc.target/powerpc/pr101596-3.c
*************** a71d80353dd79a03e464836b916549b6  gcc/te
*** 71065,71077 ****
--- 75035,75054 ----
  a192830e09e3a3d8478a89f2b2add0ff  gcc/testsuite/gcc.target/powerpc/pr102347.c
  5ac11cd9704215864ed137e674a41285  gcc/testsuite/gcc.target/powerpc/pr102868.c
  0726fc47d5d46d095efa95b874637be7  gcc/testsuite/gcc.target/powerpc/pr102976.c
+ b47ab1f05bef402d7e2e00653ef4fae7  gcc/testsuite/gcc.target/powerpc/pr103109-1.c
+ 2ca490f74221b15ca25bbbea22261a60  gcc/testsuite/gcc.target/powerpc/pr103109-2.c
+ 459499543bab72d501d949ef029805a7  gcc/testsuite/gcc.target/powerpc/pr103109.h
  848df019550d5cc820772a40ac5a43de  gcc/testsuite/gcc.target/powerpc/pr103124.c
  0a52159bfa51b1365996904b04ac429e  gcc/testsuite/gcc.target/powerpc/pr103127.c
+ 3a624f553d6aa779c9ac3ded4d4e2396  gcc/testsuite/gcc.target/powerpc/pr103316.c
+ 2e28abb3dab00a40af19eb41bc4d56ce  gcc/testsuite/gcc.target/powerpc/pr103353.c
  4a0d8fa948f1e42c9d8e4482f83147b5  gcc/testsuite/gcc.target/powerpc/pr103515.c
  20a7942f4601125d17110951f0d9d799  gcc/testsuite/gcc.target/powerpc/pr103627-1.c
  75bf709f259ebd7bb4ea3bb9e4c7a6e3  gcc/testsuite/gcc.target/powerpc/pr103627-2.c
  173204ae2ee9c78ee24b407929800cd8  gcc/testsuite/gcc.target/powerpc/pr103627-3.c
  cb6e7330d4dd26c88108858950fb503f  gcc/testsuite/gcc.target/powerpc/pr103702.c
+ ed0696b7f115d5ca0a4d67f86142bcff  gcc/testsuite/gcc.target/powerpc/pr103743.c
+ 718ffe2bb1815e937f879e7cf1f059f8  gcc/testsuite/gcc.target/powerpc/pr103743_1.c
  4c5fec3c22510255ca3a019ae8a8db95  gcc/testsuite/gcc.target/powerpc/pr104015-1.c
  b8b074d85922e675276b730f8e4cee82  gcc/testsuite/gcc.target/powerpc/pr104015-2.c
  b7339ab4137e4c5175deca053bb790c8  gcc/testsuite/gcc.target/powerpc/pr104208-1.c
*************** f6ac3c27283c48efaf0d82dfeb54c5bd  gcc/te
*** 71080,71085 ****
--- 75057,75063 ----
  97f7181aacfdfde9e170de93028d3af8  gcc/testsuite/gcc.target/powerpc/pr104239-2.c
  df3d484780813f669a79bf679fb169af  gcc/testsuite/gcc.target/powerpc/pr104239-3.c
  76860a5a20e1c892c05c24cdc70fe3c2  gcc/testsuite/gcc.target/powerpc/pr104253.c
+ bcea25fcc7f7d5b31ffe8cfbc60716ae  gcc/testsuite/gcc.target/powerpc/pr104482.c
  2b6918b6554ea8bb4c4efc7647cb4607  gcc/testsuite/gcc.target/powerpc/pr104698-1.c
  1e6dbb90d53667be975092bccd5b339f  gcc/testsuite/gcc.target/powerpc/pr104698-2.c
  9a808339fd965b70f658340d20c28253  gcc/testsuite/gcc.target/powerpc/pr104778.c
*************** bc8ea782345dbe874b74f42d43945922  gcc/te
*** 71089,71097 ****
  514a9b86c22fdf3ed2a46c790e3b9dfa  gcc/testsuite/gcc.target/powerpc/pr105041.c
  85d4f791b2093e7fd29ce51247a7fbbb  gcc/testsuite/gcc.target/powerpc/pr105271.c
  2d8d540a24bba783fff809d640c23d00  gcc/testsuite/gcc.target/powerpc/pr105334.c
! 3d2856a72952743cfd2634473f23222c  gcc/testsuite/gcc.target/powerpc/pr105991.c
  1ab2f3b15230d62d1557536701b89524  gcc/testsuite/gcc.target/powerpc/pr106016.c
  77039220fc5a52161837a12ea92d1ea3  gcc/testsuite/gcc.target/powerpc/pr106091.c
  c2f6d6cf82ef4931619d09e10a0a72aa  gcc/testsuite/gcc.target/powerpc/pr16155.c
  396ae287e72ecdda51bb3157818030a9  gcc/testsuite/gcc.target/powerpc/pr16286.c
  198d8a69d2887e8fadcb050d90e21aa6  gcc/testsuite/gcc.target/powerpc/pr16458-1.c
--- 75067,75108 ----
  514a9b86c22fdf3ed2a46c790e3b9dfa  gcc/testsuite/gcc.target/powerpc/pr105041.c
  85d4f791b2093e7fd29ce51247a7fbbb  gcc/testsuite/gcc.target/powerpc/pr105271.c
  2d8d540a24bba783fff809d640c23d00  gcc/testsuite/gcc.target/powerpc/pr105334.c
! f0ddfb3edfb9941a08b8e295a57f843e  gcc/testsuite/gcc.target/powerpc/pr105586.c
! 73e28c08da6f3dc009a4582f93dfba92  gcc/testsuite/gcc.target/powerpc/pr105627.c
! e1311d3408303e5d3bb31126a2f3dcaf  gcc/testsuite/gcc.target/powerpc/pr105991.c
  1ab2f3b15230d62d1557536701b89524  gcc/testsuite/gcc.target/powerpc/pr106016.c
+ 1717ad0418e192e7d5bbcdcc715baa9a  gcc/testsuite/gcc.target/powerpc/pr106017.c
  77039220fc5a52161837a12ea92d1ea3  gcc/testsuite/gcc.target/powerpc/pr106091.c
+ 19c79cd734687058ce13a5486b78bd77  gcc/testsuite/gcc.target/powerpc/pr106322.c
+ 7b0904894180cdbddf64e53f5fbe7f6c  gcc/testsuite/gcc.target/powerpc/pr106460.c
+ 7de40a1c4b42a4fb49cc3f14baa10c1e  gcc/testsuite/gcc.target/powerpc/pr106550.c
+ 07835abe5928af6d0923e12335abf594  gcc/testsuite/gcc.target/powerpc/pr106550_1.c
+ 739048c640db1dc5dea58911f6dcac93  gcc/testsuite/gcc.target/powerpc/pr106680-1.c
+ ffc27d1ed5ea543d6fefe54a1710ea32  gcc/testsuite/gcc.target/powerpc/pr106680-2.c
+ 2e7ce8e63be729d8e1c7833fed3ed847  gcc/testsuite/gcc.target/powerpc/pr106680-3.c
+ 925b4846930bdcf4c7d3c04aad8fbcb4  gcc/testsuite/gcc.target/powerpc/pr106680-4.c
+ 4a7e08f1ffe7c6ff37e4adfdda70773d  gcc/testsuite/gcc.target/powerpc/pr106708.c
+ b89eb373488426e128fceff637542836  gcc/testsuite/gcc.target/powerpc/pr106736-1.c
+ b628655d5e6da478a0338b6a99c2b547  gcc/testsuite/gcc.target/powerpc/pr106736-2.c
+ 268c405264ea346b9620a21b4008ae3d  gcc/testsuite/gcc.target/powerpc/pr106736-3.c
+ 80f943ae05ca5bf1bdb90616a4a55bee  gcc/testsuite/gcc.target/powerpc/pr106736-4.c
+ 8c4791ff0309e78169b9fa522b35014a  gcc/testsuite/gcc.target/powerpc/pr106736-5.c
+ cc371da54f8baaffe7810cf7f4a388f7  gcc/testsuite/gcc.target/powerpc/pr106833.c
+ 501399bb132d9f61ee543ed14dcc26d9  gcc/testsuite/gcc.target/powerpc/pr107412.c
+ cf6fc6f2cd4ce40de4bfcae2384bc88d  gcc/testsuite/gcc.target/powerpc/pr108272-1.c
+ f50d5d85d2fd6cdb2c24ba2f99c5ed50  gcc/testsuite/gcc.target/powerpc/pr108272-2.c
+ 80b0790ba15d5f168fdb877edfba8e3c  gcc/testsuite/gcc.target/powerpc/pr108272-3.c
+ 8b12dd4a97ca50e2f9880c335cebf74b  gcc/testsuite/gcc.target/powerpc/pr108272-4.c
+ 40726e9ba9f0dbe699d13f0248929db7  gcc/testsuite/gcc.target/powerpc/pr108348-1.c
+ 590060f31f74e624d8948e67f5efe8a9  gcc/testsuite/gcc.target/powerpc/pr108348-2.c
+ d4695291f14d81c9829000b656211b10  gcc/testsuite/gcc.target/powerpc/pr108396.c
+ d1ebac89ce86ba01adcab56447399dd9  gcc/testsuite/gcc.target/powerpc/pr108699.c
+ 8dc6f7b3f475db76d4acd724068737cc  gcc/testsuite/gcc.target/powerpc/pr108787.c
+ 4e716a0a290d9aa588276f96d74da875  gcc/testsuite/gcc.target/powerpc/pr108862.c
+ 183c2d6b4a645b22aa3a9a3870d8c787  gcc/testsuite/gcc.target/powerpc/pr109082.c
+ bafd50f43ed68366ad85e5b1a7157b97  gcc/testsuite/gcc.target/powerpc/pr109167.c
+ 5d792150402910e5e2632539f0ba98c0  gcc/testsuite/gcc.target/powerpc/pr109178.c
+ be09a09453e3025da575fddc32110640  gcc/testsuite/gcc.target/powerpc/pr109566.c
  c2f6d6cf82ef4931619d09e10a0a72aa  gcc/testsuite/gcc.target/powerpc/pr16155.c
  396ae287e72ecdda51bb3157818030a9  gcc/testsuite/gcc.target/powerpc/pr16286.c
  198d8a69d2887e8fadcb050d90e21aa6  gcc/testsuite/gcc.target/powerpc/pr16458-1.c
*************** de09210d456b5ec489b5febb07484cd5  gcc/te
*** 71149,71155 ****
  d40a51962a039d2508b9b3e8ce82ac22  gcc/testsuite/gcc.target/powerpc/pr54240.c
  853064cbe6e6b358b4e72923e94ee354  gcc/testsuite/gcc.target/powerpc/pr55033.c
  e4531bd522b146b22bdbf991fc3d207e  gcc/testsuite/gcc.target/powerpc/pr56256.c
! 2e9e477f44f5b935e874f48d7ed9bf1b  gcc/testsuite/gcc.target/powerpc/pr56605.c
  be37d527321d015059e346e469f7e0e4  gcc/testsuite/gcc.target/powerpc/pr57150.c
  7a49a99d1d678fcb8065029344b893d5  gcc/testsuite/gcc.target/powerpc/pr57363.c
  84af6f269cb613d7abad750c2b136798  gcc/testsuite/gcc.target/powerpc/pr57744.c
--- 75160,75166 ----
  d40a51962a039d2508b9b3e8ce82ac22  gcc/testsuite/gcc.target/powerpc/pr54240.c
  853064cbe6e6b358b4e72923e94ee354  gcc/testsuite/gcc.target/powerpc/pr55033.c
  e4531bd522b146b22bdbf991fc3d207e  gcc/testsuite/gcc.target/powerpc/pr56256.c
! c1e226810308677426b3240d2a8147a5  gcc/testsuite/gcc.target/powerpc/pr56605.c
  be37d527321d015059e346e469f7e0e4  gcc/testsuite/gcc.target/powerpc/pr57150.c
  7a49a99d1d678fcb8065029344b893d5  gcc/testsuite/gcc.target/powerpc/pr57363.c
  84af6f269cb613d7abad750c2b136798  gcc/testsuite/gcc.target/powerpc/pr57744.c
*************** c2bb4c50496aade60596e697b1d8782d  gcc/te
*** 71198,71203 ****
--- 75209,75215 ----
  f04c5add43326054cacbb6544404890d  gcc/testsuite/gcc.target/powerpc/pr70010-4.c
  1de006067bf04677e8e3043c80b99112  gcc/testsuite/gcc.target/powerpc/pr70010.c
  30bf5235bdce0bbd05169c7ec78fb273  gcc/testsuite/gcc.target/powerpc/pr70117.c
+ fa25257d80acb26f0f70a5da209dbad5  gcc/testsuite/gcc.target/powerpc/pr70243.c
  9f0a82f7f84690a18cb82bed87617073  gcc/testsuite/gcc.target/powerpc/pr70640.c
  9f7996dd7c38f201960362b08e509c7d  gcc/testsuite/gcc.target/powerpc/pr70669.c
  bb6ec828efc211131c5a036203ac7c94  gcc/testsuite/gcc.target/powerpc/pr70866.c
*************** c8e4d5ccb2226fba0ad28aadabb79509  gcc/te
*** 71235,71241 ****
  7269e93e0c9a9d55e127430a45880a33  gcc/testsuite/gcc.target/powerpc/pr78056-7.c
  8147b78599f11589ae3053b11931b862  gcc/testsuite/gcc.target/powerpc/pr78102.c
  19e74ae8a63b24ab76c67fac9391c56f  gcc/testsuite/gcc.target/powerpc/pr78543.c
! 0de8a5a6a228e4e540faf3f17739b976  gcc/testsuite/gcc.target/powerpc/pr78604.c
  1234f158984bdca5449a39cefc26a2dd  gcc/testsuite/gcc.target/powerpc/pr78658.c
  e77f24f1b3f26aacf550086da8e1c63b  gcc/testsuite/gcc.target/powerpc/pr78691-ppc.c
  17f56c3879a1aceb32e5e65c4dd06c6c  gcc/testsuite/gcc.target/powerpc/pr78953.c
--- 75247,75253 ----
  7269e93e0c9a9d55e127430a45880a33  gcc/testsuite/gcc.target/powerpc/pr78056-7.c
  8147b78599f11589ae3053b11931b862  gcc/testsuite/gcc.target/powerpc/pr78102.c
  19e74ae8a63b24ab76c67fac9391c56f  gcc/testsuite/gcc.target/powerpc/pr78543.c
! e78c90376e0d5873048a39c2c2261d37  gcc/testsuite/gcc.target/powerpc/pr78604.c
  1234f158984bdca5449a39cefc26a2dd  gcc/testsuite/gcc.target/powerpc/pr78658.c
  e77f24f1b3f26aacf550086da8e1c63b  gcc/testsuite/gcc.target/powerpc/pr78691-ppc.c
  17f56c3879a1aceb32e5e65c4dd06c6c  gcc/testsuite/gcc.target/powerpc/pr78953.c
*************** d00f702a3eabc4c4562d778ce7c43884  gcc/te
*** 71298,71305 ****
  94063e07a1d46fd61e894aa64b40ebaf  gcc/testsuite/gcc.target/powerpc/pr82848.c
  ea551d3ae1683b94dcf15935e3841a31  gcc/testsuite/gcc.target/powerpc/pr83399.c
  15f19b48d6d84c3685af80447edafc48  gcc/testsuite/gcc.target/powerpc/pr83629.c
! 454b0f87867ea7aa84d83652eeff7620  gcc/testsuite/gcc.target/powerpc/pr83660.C
! 0e10d8c65b18afcf4138404e469c5288  gcc/testsuite/gcc.target/powerpc/pr83677.c
  649c25d197e82583d1f58ca7dc0e0b9b  gcc/testsuite/gcc.target/powerpc/pr83862.c
  73347c1481c6d9c50f16f425d409c708  gcc/testsuite/gcc.target/powerpc/pr83926.c
  88f706eef23e0ac23ef58bea3e3cf28a  gcc/testsuite/gcc.target/powerpc/pr83969.c
--- 75310,75316 ----
  94063e07a1d46fd61e894aa64b40ebaf  gcc/testsuite/gcc.target/powerpc/pr82848.c
  ea551d3ae1683b94dcf15935e3841a31  gcc/testsuite/gcc.target/powerpc/pr83399.c
  15f19b48d6d84c3685af80447edafc48  gcc/testsuite/gcc.target/powerpc/pr83629.c
! 95f3057a6b14afee4d6303b80c7f0657  gcc/testsuite/gcc.target/powerpc/pr83677.c
  649c25d197e82583d1f58ca7dc0e0b9b  gcc/testsuite/gcc.target/powerpc/pr83862.c
  73347c1481c6d9c50f16f425d409c708  gcc/testsuite/gcc.target/powerpc/pr83926.c
  88f706eef23e0ac23ef58bea3e3cf28a  gcc/testsuite/gcc.target/powerpc/pr83969.c
*************** a366faf9f4600279f7a65c67c3d0fbae  gcc/te
*** 71324,71330 ****
  a350423ed93def71f8b093f25456d889  gcc/testsuite/gcc.target/powerpc/pr85755.c
  df4e314e536a2cc293edaee73e90fc21  gcc/testsuite/gcc.target/powerpc/pr86324-1.c
  b393d3f2f044e6fd8f631b7ab2551943  gcc/testsuite/gcc.target/powerpc/pr86324-2.c
! 2f2590ee6bc7b97ecd4dfafb992693b1  gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
  363dc03cd34e833cf82185607e641246  gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv.c
  68ee1d2248cb68728290b40312abd26d  gcc/testsuite/gcc.target/powerpc/pr86731-longlong.c
  8a2b25fb431e8663e2eac4a3ef707bc5  gcc/testsuite/gcc.target/powerpc/pr86731.c
--- 75335,75341 ----
  a350423ed93def71f8b093f25456d889  gcc/testsuite/gcc.target/powerpc/pr85755.c
  df4e314e536a2cc293edaee73e90fc21  gcc/testsuite/gcc.target/powerpc/pr86324-1.c
  b393d3f2f044e6fd8f631b7ab2551943  gcc/testsuite/gcc.target/powerpc/pr86324-2.c
! e35e948d61d2e46fd9c5cf9e9908ccb4  gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv-longlong.c
  363dc03cd34e833cf82185607e641246  gcc/testsuite/gcc.target/powerpc/pr86731-fwrapv.c
  68ee1d2248cb68728290b40312abd26d  gcc/testsuite/gcc.target/powerpc/pr86731-longlong.c
  8a2b25fb431e8663e2eac4a3ef707bc5  gcc/testsuite/gcc.target/powerpc/pr86731.c
*************** c187e0f1af6407257235b1bb9a2fb7ac  gcc/te
*** 71370,71386 ****
--- 75381,75401 ----
  bf5eef64bd13d358ccd4ecc20fc71dea  gcc/testsuite/gcc.target/powerpc/pr93012.c
  6ed2bd11c87cb97b53a02a6da437dd68  gcc/testsuite/gcc.target/powerpc/pr93073.c
  ffc3e49b879237e4c50decbfa7827c62  gcc/testsuite/gcc.target/powerpc/pr93122.c
+ 2810ebba4a3d8c51ff7ff5cef80a9591  gcc/testsuite/gcc.target/powerpc/pr93453-1.c
  38f0ad1fa74b57574f2b77b7354f16fe  gcc/testsuite/gcc.target/powerpc/pr93658.c
  7ec2211c1708cebde5e1bb5e3087dd76  gcc/testsuite/gcc.target/powerpc/pr93800.c
  b8d9c0d34bd25c6c852036ab8e5aee8a  gcc/testsuite/gcc.target/powerpc/pr94613.c
  ca39e661d5c8829e74d8a523cedd9a16  gcc/testsuite/gcc.target/powerpc/pr94740.c
  baf149d64053b2f0f606c42999ad64b8  gcc/testsuite/gcc.target/powerpc/pr95450.c
+ ac625d56316f12bb2c2935ae069960ee  gcc/testsuite/gcc.target/powerpc/pr95737.c
  e7cf1c47ea2ac68fa8b2f1bc1dc06872  gcc/testsuite/gcc.target/powerpc/pr95907.c
+ 5c286273d2472c19e1388a58fbf1fae4  gcc/testsuite/gcc.target/powerpc/pr96072.c
  c3fdf2edbc3880b6e23670387a188c81  gcc/testsuite/gcc.target/powerpc/pr96125.c
  c41dc78db559b0a60ade2f03b039206d  gcc/testsuite/gcc.target/powerpc/pr96139-a.c
  a07b15408dfcb7108da14ce215101920  gcc/testsuite/gcc.target/powerpc/pr96139-b.c
  077f66488295d290f80d30233e453520  gcc/testsuite/gcc.target/powerpc/pr96139-c.c
  260b4195fb458fd7f0ec3afc524236ff  gcc/testsuite/gcc.target/powerpc/pr96264.c
+ 42e9d864b740d7bf95a81bde9f4f1fbe  gcc/testsuite/gcc.target/powerpc/pr96373.c
  4041fca09c3daed5a381d4dc45e9a366  gcc/testsuite/gcc.target/powerpc/pr96446.c
  06df07809324154deb45d934dbebf494  gcc/testsuite/gcc.target/powerpc/pr96493.c
  f296eca9a733cf4bb4e198a3539e8cec  gcc/testsuite/gcc.target/powerpc/pr96506-1.c
*************** f900d3f1e79811e92ae2e91267891d4a  gcc/te
*** 71408,71414 ****
  cbb1371df0e1adf74c71a77d5895b17c  gcc/testsuite/gcc.target/powerpc/pr99557.c
  de511ffaecad04c9cbb12cacdec00373  gcc/testsuite/gcc.target/powerpc/pr99581.c
  0f5a5bdff1232df3c7799da88e6e8eb9  gcc/testsuite/gcc.target/powerpc/pr99708-2.c
! d32fc3bf3e7a14bc8f9ad8955ffb16a4  gcc/testsuite/gcc.target/powerpc/pr99708.c
  74f4f475f7fbab34a0ec83f7fd8e551b  gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
  e02c101f5cebe3d8dfa298413197b1a7  gcc/testsuite/gcc.target/powerpc/pragma_misc9.c
  98c02b2c2946f882d2b5e41da4b7d78b  gcc/testsuite/gcc.target/powerpc/pragma_power6.c
--- 75423,75435 ----
  cbb1371df0e1adf74c71a77d5895b17c  gcc/testsuite/gcc.target/powerpc/pr99557.c
  de511ffaecad04c9cbb12cacdec00373  gcc/testsuite/gcc.target/powerpc/pr99581.c
  0f5a5bdff1232df3c7799da88e6e8eb9  gcc/testsuite/gcc.target/powerpc/pr99708-2.c
! 45ac4f1ec99dd5006f6ff8b5cfc8a317  gcc/testsuite/gcc.target/powerpc/pr99708.c
! 925aa385bba9eb4bb2f7b93648eeeff5  gcc/testsuite/gcc.target/powerpc/pr99888-1.c
! 1f748d9f75f438c648de17a8831042c5  gcc/testsuite/gcc.target/powerpc/pr99888-2.c
! fa923522ac8da3ab05e770db45f788b6  gcc/testsuite/gcc.target/powerpc/pr99888-3.c
! 340541848d9b0120d8ec0fd7fa1f4d6e  gcc/testsuite/gcc.target/powerpc/pr99888-4.c
! b72fce1882c977cbd736b3f9e0051945  gcc/testsuite/gcc.target/powerpc/pr99888-5.c
! 452e2984829526b868a44034bc62f383  gcc/testsuite/gcc.target/powerpc/pr99888-6.c
  74f4f475f7fbab34a0ec83f7fd8e551b  gcc/testsuite/gcc.target/powerpc/pragma-optimize.c
  e02c101f5cebe3d8dfa298413197b1a7  gcc/testsuite/gcc.target/powerpc/pragma_misc9.c
  98c02b2c2946f882d2b5e41da4b7d78b  gcc/testsuite/gcc.target/powerpc/pragma_power6.c
*************** caa4db29432fb9a75d1d9d729711d8ca  gcc/te
*** 71829,71835 ****
  e97a2a7881c0d1aa7fddb88c11f02b9d  gcc/testsuite/gcc.target/powerpc/ssse3-psignd.c
  b95952c2cb2c3da6f2ec763d074b958d  gcc/testsuite/gcc.target/powerpc/ssse3-psignw.c
  f3459c279e70e34d7f608b7b9cd9fe46  gcc/testsuite/gcc.target/powerpc/ssse3-vals.h
- 13c6ee4934b094179a2336371362f10d  gcc/testsuite/gcc.target/powerpc/stabs-attrib-vect-darwin.c
  ab241355ba77c8e163b05eb81f33d1c5  gcc/testsuite/gcc.target/powerpc/stack-limit.c
  ba8561d330e1ff11cde165a34f6b95e9  gcc/testsuite/gcc.target/powerpc/swaps-p8-1.c
  1251a69a170efd2dccca47828de63a2a  gcc/testsuite/gcc.target/powerpc/swaps-p8-10.c
--- 75850,75855 ----
*************** b88613b767bb0807b1762e8eb526a343  gcc/te
*** 72264,72270 ****
  47a01322cf4b1487712207de43d7799d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-7.c
  b0a697b054abbb240f1d84da6b8b6e3d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c
  4c31abd6b29ad29d6e3781f73129efd7  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c
! 897792c10a0ba45640d0afa97722f403  gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
  aaeb960a2e271bc474363e9917aecb51  gcc/testsuite/gcc.target/powerpc/vsx-13.c
  2d2324d8274dfc9b008525e52c7c7bd6  gcc/testsuite/gcc.target/powerpc/vsx-7.c
  52f42f9be22f511e882b624f99d63a7d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
--- 76284,76290 ----
  47a01322cf4b1487712207de43d7799d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-7.c
  b0a697b054abbb240f1d84da6b8b6e3d  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-8.c
  4c31abd6b29ad29d6e3781f73129efd7  gcc/testsuite/gcc.target/powerpc/vsu/vec-xst-len-9.c
! 845ca02d5d6ccde8d6a67ac7cda157a8  gcc/testsuite/gcc.target/powerpc/vsu/vsu.exp
  aaeb960a2e271bc474363e9917aecb51  gcc/testsuite/gcc.target/powerpc/vsx-13.c
  2d2324d8274dfc9b008525e52c7c7bd6  gcc/testsuite/gcc.target/powerpc/vsx-7.c
  52f42f9be22f511e882b624f99d63a7d  gcc/testsuite/gcc.target/powerpc/vsx-builtin-1.c
*************** d2a696110957009abb60358c583ae15b  gcc/te
*** 72380,72390 ****
--- 76400,76414 ----
  f221be3b8f1eae9fc5bf2ead3376ca38  gcc/testsuite/gcc.target/powerpc/warn-lvsl-lvsr.c
  a2ac91e17cb9dea1db858f7f03eecc07  gcc/testsuite/gcc.target/powerpc/xxgenpc-runnable.c
  4085caae38d94c3ee9344e9611ff744a  gcc/testsuite/gcc.target/pru/abi-arg-struct.c
+ 35e98e4e14285e40404161f7c30e0cd5  gcc/testsuite/gcc.target/pru/ashiftdi-1.c
  6656ae83d6a1aa9ba23e7ddd98bd7663  gcc/testsuite/gcc.target/pru/ashiftrt.c
+ cb75fd223ff9808b0c5ab0d3b0dd4620  gcc/testsuite/gcc.target/pru/bitop-di.c
  eb37da7b7a1c2dd2f37facf076700919  gcc/testsuite/gcc.target/pru/builtins-1.c
  f68fafa197d4e3c5306c9e60f6a73cbf  gcc/testsuite/gcc.target/pru/builtins-error.c
  b1971e5cba3a4b0c2b8ab488ddebf145  gcc/testsuite/gcc.target/pru/clearbit.c
  148e56e25c8663966fdd06ef357ee484  gcc/testsuite/gcc.target/pru/clobber-sp.c
+ 0d357d6aa637158b10d5aa7379e3250d  gcc/testsuite/gcc.target/pru/clz-hi-2.c
+ 2fb151aee7050d3602e14f481e142e43  gcc/testsuite/gcc.target/pru/clz-hi.c
  68ffe5637b2fd7262c58183a6492376f  gcc/testsuite/gcc.target/pru/halt.c
  f219104eff0da94d15f6e5b08772e732  gcc/testsuite/gcc.target/pru/lmbd.c
  4075b8039f1970fec14ed80c59f32df6  gcc/testsuite/gcc.target/pru/loop-asm.c
*************** e723b7a7f530e73ad253bc9dd197f22c  gcc/te
*** 72402,72407 ****
--- 76426,76432 ----
  a71f924d37c55643c417681737768eee  gcc/testsuite/gcc.target/pru/loop-ubyte-2.c
  6b66e7c3542bcb548f7be2dc15327a78  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-1.c
  8c19dc6643f242dac0f633e28aed3859  gcc/testsuite/gcc.target/pru/lra-framepointer-fragmentation-2.c
+ b76541e78d6c0a4a83f038a91722260c  gcc/testsuite/gcc.target/pru/lshiftrtdi-1.c
  3ef624a9acc199b79a2e7fdb3d02524e  gcc/testsuite/gcc.target/pru/mabi-ti-1.c
  139ed36d4d0fc027ab815f8bbfd4ab0f  gcc/testsuite/gcc.target/pru/mabi-ti-2.c
  19eab9f9f5dfcf20929abd7149593d5d  gcc/testsuite/gcc.target/pru/mabi-ti-3.c
*************** a71f924d37c55643c417681737768eee  gcc/te
*** 72409,72417 ****
  1540ee6c974fb4e808afaaef37a52835  gcc/testsuite/gcc.target/pru/mabi-ti-5.c
  76eb68b6c145a36a9dda4bdc30703da6  gcc/testsuite/gcc.target/pru/mabi-ti-6.c
  a5d8400fbc1e042d4b59d52b3b6e800b  gcc/testsuite/gcc.target/pru/mabi-ti-7.c
  d754f6db5a9f4cb648931c1a300fe5e6  gcc/testsuite/gcc.target/pru/pr64366.c
  aa63cbae8ab220e484f3dfce0053edb2  gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c
! 14f976ff434d52b87549f51e59ecea6b  gcc/testsuite/gcc.target/pru/pru.exp
  7a1298d80f26753aedd3f2268299e382  gcc/testsuite/gcc.target/pru/pru_irq_map.c
  7b1dfd818b26fc3abda3150a2a5dccb4  gcc/testsuite/gcc.target/pru/qbbc-1.c
  d022a63c4f1bad92f86058d5cc8188d1  gcc/testsuite/gcc.target/pru/qbbc-2.c
--- 76434,76451 ----
  1540ee6c974fb4e808afaaef37a52835  gcc/testsuite/gcc.target/pru/mabi-ti-5.c
  76eb68b6c145a36a9dda4bdc30703da6  gcc/testsuite/gcc.target/pru/mabi-ti-6.c
  a5d8400fbc1e042d4b59d52b3b6e800b  gcc/testsuite/gcc.target/pru/mabi-ti-7.c
+ b1afab226bd7930d036687abb97385f0  gcc/testsuite/gcc.target/pru/mov-m1.c
+ 42f66870bc5a7dedea2cd9fefcd1ece9  gcc/testsuite/gcc.target/pru/pr106562-1.c
+ e8716e779432b45406cc534631aec9a8  gcc/testsuite/gcc.target/pru/pr106562-2.c
+ f27e7d60b31e775397f87c3627ceda57  gcc/testsuite/gcc.target/pru/pr106562-3.c
+ 6f92d2681d767e323adb9027957cce53  gcc/testsuite/gcc.target/pru/pr106562-4.c
+ 7199f5b409c6a58c4ef1d4a5d431079b  gcc/testsuite/gcc.target/pru/pr106564-1.c
+ 851451c629fe33409b83f202bfc1068e  gcc/testsuite/gcc.target/pru/pr106564-2.c
+ a919202ce244d49003df5ad24d6682bd  gcc/testsuite/gcc.target/pru/pr106564-3.c
+ cf8d82ddb80b76405af0214285246746  gcc/testsuite/gcc.target/pru/pr106564-4.c
  d754f6db5a9f4cb648931c1a300fe5e6  gcc/testsuite/gcc.target/pru/pr64366.c
  aa63cbae8ab220e484f3dfce0053edb2  gcc/testsuite/gcc.target/pru/pragma-ctable_entry.c
! fbfa024651716a654e057345b0570d07  gcc/testsuite/gcc.target/pru/pru.exp
  7a1298d80f26753aedd3f2268299e382  gcc/testsuite/gcc.target/pru/pru_irq_map.c
  7b1dfd818b26fc3abda3150a2a5dccb4  gcc/testsuite/gcc.target/pru/qbbc-1.c
  d022a63c4f1bad92f86058d5cc8188d1  gcc/testsuite/gcc.target/pru/qbbc-2.c
*************** e4648ec15f2bbd0d4d9b5bb8d05ba657  gcc/te
*** 72436,72441 ****
--- 76470,76492 ----
  2225a6f7684a41fdc3c9fedebe226c82  gcc/testsuite/gcc.target/pru/zero_extend-hisi.c
  57debb1068324d1b650c42700abacf74  gcc/testsuite/gcc.target/pru/zero_extend-qihi.c
  09a429ba90db19830e7f9b51abc8f22f  gcc/testsuite/gcc.target/pru/zero_extend-qisi.c
+ 5fa2c90fcc7d61bb2c7527e6d4d62986  gcc/testsuite/gcc.target/riscv/_Float16-soft-1.c
+ 6fefea39a200b87c25e6a7e8be89f966  gcc/testsuite/gcc.target/riscv/_Float16-soft-2.c
+ a67b312e0319d2c6117475bf6055b46c  gcc/testsuite/gcc.target/riscv/_Float16-soft-3.c
+ f7e3e02cfa055769e5c83fac9a4ab314  gcc/testsuite/gcc.target/riscv/_Float16-soft-4.c
+ 07ae967dd2053379ff0a88c29e437d8b  gcc/testsuite/gcc.target/riscv/_Float16-zfh-1.c
+ e1e5f006bf0244326198eeaaa65a143e  gcc/testsuite/gcc.target/riscv/_Float16-zfh-2.c
+ 53acf6f325e821e27f6e732be12f04ee  gcc/testsuite/gcc.target/riscv/_Float16-zfh-3.c
+ e23d33e7e3cf5c1e0e92f5b1f3332ad6  gcc/testsuite/gcc.target/riscv/_Float16-zfhmin-1.c
+ 598695fcc06e4ef6e2194437874ec2c1  gcc/testsuite/gcc.target/riscv/_Float16-zfhmin-2.c
+ 39dee2ee1013e6bf0838f4e77f04f872  gcc/testsuite/gcc.target/riscv/_Float16-zfhmin-3.c
+ ab1d534554fc495482d1949c9d897b88  gcc/testsuite/gcc.target/riscv/_Float16-zhinx-1.c
+ 7df18ee48aa1e757de0108f77dec4e5c  gcc/testsuite/gcc.target/riscv/_Float16-zhinx-2.c
+ cd709a10461254ddf2db66c3d68f0ea1  gcc/testsuite/gcc.target/riscv/_Float16-zhinx-3.c
+ dad38917ecea549937413c9cd3a59371  gcc/testsuite/gcc.target/riscv/_Float16-zhinxmin-1.c
+ 4ad91f5205e504cc55e820e0db68a469  gcc/testsuite/gcc.target/riscv/_Float16-zhinxmin-2.c
+ db63dce5cb81a9322d507198be4afe2b  gcc/testsuite/gcc.target/riscv/_Float16-zhinxmin-3.c
+ 3ff3e986a97f4269e8ce353c4d141360  gcc/testsuite/gcc.target/riscv/_Float16.c
  d0db5e2267389a1185e58b9406371ee4  gcc/testsuite/gcc.target/riscv/arch-1.c
  3b7707b06c4df57de1fbf8812c8df071  gcc/testsuite/gcc.target/riscv/arch-10.c
  ec7f5ab1f99ea69345d1e5ac8e166932  gcc/testsuite/gcc.target/riscv/arch-11.c
*************** ec7f5ab1f99ea69345d1e5ac8e166932  gcc/te
*** 72443,72452 ****
  b353e25bf8c050c9bb23e150b537ad4a  gcc/testsuite/gcc.target/riscv/arch-13.c
  8b8697567c751496fc4ac7b320f52e7a  gcc/testsuite/gcc.target/riscv/arch-14.c
  91157ce4b1f35354afc7bed46671c63c  gcc/testsuite/gcc.target/riscv/arch-15.c
  07c54de88d120fb9d5f2cb208bd8ebcf  gcc/testsuite/gcc.target/riscv/arch-2.c
  acb7dcb6bf251bf541bd328345825a0f  gcc/testsuite/gcc.target/riscv/arch-3.c
  a7fd98a8530a5994fa6594c79ed33fc5  gcc/testsuite/gcc.target/riscv/arch-4.c
! 7e2bcd391e8a5dd85f2b8d1463a8df3d  gcc/testsuite/gcc.target/riscv/arch-5.c
  2cd6ade559b1ab254703146aa7008e18  gcc/testsuite/gcc.target/riscv/arch-6.c
  81519955d6644acb55c78120405494a5  gcc/testsuite/gcc.target/riscv/arch-7.c
  ec0990d4345bd503d7a090432b5eb8c0  gcc/testsuite/gcc.target/riscv/arch-8.c
--- 76494,76507 ----
  b353e25bf8c050c9bb23e150b537ad4a  gcc/testsuite/gcc.target/riscv/arch-13.c
  8b8697567c751496fc4ac7b320f52e7a  gcc/testsuite/gcc.target/riscv/arch-14.c
  91157ce4b1f35354afc7bed46671c63c  gcc/testsuite/gcc.target/riscv/arch-15.c
+ 8c74fded78ad83fce8b9cc3868c85702  gcc/testsuite/gcc.target/riscv/arch-16.c
+ 6f8090b93cd463d74214942e95716715  gcc/testsuite/gcc.target/riscv/arch-17.c
+ e8df073c7b4dc1500bc1b56aebb64125  gcc/testsuite/gcc.target/riscv/arch-18.c
+ bdf6e671a35ce62da3862697db65e753  gcc/testsuite/gcc.target/riscv/arch-19.c
  07c54de88d120fb9d5f2cb208bd8ebcf  gcc/testsuite/gcc.target/riscv/arch-2.c
  acb7dcb6bf251bf541bd328345825a0f  gcc/testsuite/gcc.target/riscv/arch-3.c
  a7fd98a8530a5994fa6594c79ed33fc5  gcc/testsuite/gcc.target/riscv/arch-4.c
! afb7b4bff405a0007c8799e7ceb50159  gcc/testsuite/gcc.target/riscv/arch-5.c
  2cd6ade559b1ab254703146aa7008e18  gcc/testsuite/gcc.target/riscv/arch-6.c
  81519955d6644acb55c78120405494a5  gcc/testsuite/gcc.target/riscv/arch-7.c
  ec0990d4345bd503d7a090432b5eb8c0  gcc/testsuite/gcc.target/riscv/arch-8.c
*************** dad325a459f19676dfee86731f315a34  gcc/te
*** 72469,72476 ****
--- 76524,76559 ----
  e21ab49d7189048e7846cf34bb083a0c  gcc/testsuite/gcc.target/riscv/attribute-7.c
  3a94bc06ffd8655006bf4f73ce32c6d0  gcc/testsuite/gcc.target/riscv/attribute-8.c
  c168d11fce6257194b04ca108933932b  gcc/testsuite/gcc.target/riscv/attribute-9.c
+ b4171b78d48ceb8a0a4b920a87338e9e  gcc/testsuite/gcc.target/riscv/branch-1.c
+ 85f87265a7ef9502222a090b17d5c066  gcc/testsuite/gcc.target/riscv/builtin_pause.c
+ 4871954678f8c088ea61e950d306fe2b  gcc/testsuite/gcc.target/riscv/cmo-zicbom-1.c
+ 403382dd3d4f610c46c33100f96050bb  gcc/testsuite/gcc.target/riscv/cmo-zicbom-2.c
+ 28f0db450de2e11dbbf7a6138c7234f6  gcc/testsuite/gcc.target/riscv/cmo-zicbop-1.c
+ 7fd5d2309bafcb8b08d55ab159f89935  gcc/testsuite/gcc.target/riscv/cmo-zicbop-2.c
+ a093c104ed149894b0297471de52af9a  gcc/testsuite/gcc.target/riscv/cmo-zicboz-1.c
+ 7fc52bdd7484a11d12e5fb04ed6063fe  gcc/testsuite/gcc.target/riscv/cmo-zicboz-2.c
  ac22a668a6627141957bbd3d791e4b02  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-1.c
  62823213389acb5bfc34bf2e10ae7aa7  gcc/testsuite/gcc.target/riscv/flattened-struct-abi-2.c
+ f98d42d2c328f9e906c604650a395fb8  gcc/testsuite/gcc.target/riscv/fle-ieee.c
+ 6d26dadff91cdea799a17c88fd15d942  gcc/testsuite/gcc.target/riscv/fle-snan.c
+ 0233371a1c80858646a0303ebd2aa8a5  gcc/testsuite/gcc.target/riscv/fle.c
+ b3403cb590e0a552922063b2cfbb8e06  gcc/testsuite/gcc.target/riscv/flef-ieee.c
+ 5fdab8f78d3c1c8d7140983e3c9a287a  gcc/testsuite/gcc.target/riscv/flef-snan.c
+ 172fc3c2cef4e6b03b03cfb26090f181  gcc/testsuite/gcc.target/riscv/flef.c
+ 6ff65bcf7da63eaf17f4d8d1e73e857f  gcc/testsuite/gcc.target/riscv/flt-ieee.c
+ 915f7df0942c7ac225efb2b97b7c626e  gcc/testsuite/gcc.target/riscv/flt-snan.c
+ 3c1632c9fd62717ee28fb27a41b0d7b9  gcc/testsuite/gcc.target/riscv/flt.c
+ caf8aff9a7069a38583bc4c25dcce2bc  gcc/testsuite/gcc.target/riscv/fltf-ieee.c
+ 377fe5600636595503854f22c64c4ae7  gcc/testsuite/gcc.target/riscv/fltf-snan.c
+ c32704622e2680b1192e0934e1fe06a6  gcc/testsuite/gcc.target/riscv/fltf.c
+ cce0f100408ab68657416ee6dff78afa  gcc/testsuite/gcc.target/riscv/fmax-snan.c
+ c5fce1891bf87ad67a6990a0df33c336  gcc/testsuite/gcc.target/riscv/fmax.c
+ 44cd3b2444009d3d4378ccd10505b70d  gcc/testsuite/gcc.target/riscv/fmaxf-snan.c
+ bb144c34f5eab3757e03ae48e9aa39ed  gcc/testsuite/gcc.target/riscv/fmaxf.c
+ 9afba9b6966c28ace25d45dcbd51e214  gcc/testsuite/gcc.target/riscv/fmin-snan.c
+ 8f19287280703d530bf8cd8235403683  gcc/testsuite/gcc.target/riscv/fmin.c
+ 39c94afa2c5f88eda89da27eafffaab8  gcc/testsuite/gcc.target/riscv/fminf-snan.c
+ 9e42b582cd65d706a3bddf995fc48aa1  gcc/testsuite/gcc.target/riscv/fminf.c
  ebafbcb889d217f529a4a6f6ca558444  gcc/testsuite/gcc.target/riscv/interrupt-1.c
  9403cf8e7b3af27ece005e85c732a485  gcc/testsuite/gcc.target/riscv/interrupt-2.c
  2c4e63df0ea453e7839094f9d7beb67b  gcc/testsuite/gcc.target/riscv/interrupt-3.c
*************** e7e93d441684b5aaccb4b78191215f6d  gcc/te
*** 72491,72510 ****
  efcb2d5344bde460bcbee76b9e33c09d  gcc/testsuite/gcc.target/riscv/mcpu-5.c
  e20585893ea69038755bd9bf2baa0622  gcc/testsuite/gcc.target/riscv/mcpu-6.c
  5a433cb606f15a057de6b4d95a40169d  gcc/testsuite/gcc.target/riscv/mcpu-7.c
  9188465f5f69f5d38067c08a962f52f2  gcc/testsuite/gcc.target/riscv/pr102957.c
  c70df77dca2d9d059e9b22e279613d45  gcc/testsuite/gcc.target/riscv/pr103302.c
  78659ffafd452ac6a43859083b99d8ae  gcc/testsuite/gcc.target/riscv/pr104140.c
  62fc13de2a3248454aa1c822e4421155  gcc/testsuite/gcc.target/riscv/pr105314.c
! 384ba4a03f71e10b20842ce4b6db9bfc  gcc/testsuite/gcc.target/riscv/pr105666.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  287e116d84e5eca39a410aca336f89b1  gcc/testsuite/gcc.target/riscv/pr93202.c
! 4ec5e1eb12b4c6fb12d89619f49ef627  gcc/testsuite/gcc.target/riscv/pr93304.c
  f95453a04d25316c015010a3d66699b8  gcc/testsuite/gcc.target/riscv/pr95252.c
  2a0b4380ee3a1ae8c2f449020e1caa54  gcc/testsuite/gcc.target/riscv/pr95683.c
  4a09604ef4cdb81da6aaf6179b4347d1  gcc/testsuite/gcc.target/riscv/pr96759.c
  06f027ca6a8c58be75a7b860dc39bf86  gcc/testsuite/gcc.target/riscv/pr98777.c
  576ffdec066d69c35af0753463b174ae  gcc/testsuite/gcc.target/riscv/pr99702.c
! 78237d8616afb1aa47a7542da5468b4a  gcc/testsuite/gcc.target/riscv/predef-1.c
  631c168c77a9af0c773050bef4b8943f  gcc/testsuite/gcc.target/riscv/predef-10.c
  318dab274ae6db996cba3a94694e749d  gcc/testsuite/gcc.target/riscv/predef-11.c
  a2c9fa03a9dd9f49ac1497ec91ae9cca  gcc/testsuite/gcc.target/riscv/predef-12.c
--- 76574,76602 ----
  efcb2d5344bde460bcbee76b9e33c09d  gcc/testsuite/gcc.target/riscv/mcpu-5.c
  e20585893ea69038755bd9bf2baa0622  gcc/testsuite/gcc.target/riscv/mcpu-6.c
  5a433cb606f15a057de6b4d95a40169d  gcc/testsuite/gcc.target/riscv/mcpu-7.c
+ d66b77cd3223498c6e933305c7a7ca13  gcc/testsuite/gcc.target/riscv/mcpu-thead-c906.c
  9188465f5f69f5d38067c08a962f52f2  gcc/testsuite/gcc.target/riscv/pr102957.c
  c70df77dca2d9d059e9b22e279613d45  gcc/testsuite/gcc.target/riscv/pr103302.c
  78659ffafd452ac6a43859083b99d8ae  gcc/testsuite/gcc.target/riscv/pr104140.c
  62fc13de2a3248454aa1c822e4421155  gcc/testsuite/gcc.target/riscv/pr105314.c
! 488d01f6a52c713a85a02ef3f9147fe8  gcc/testsuite/gcc.target/riscv/pr105666.c
! e2d715acc45ff1c4de4202ff85ed13eb  gcc/testsuite/gcc.target/riscv/pr106602-rv32i.c
! a4140e65ee8a24c14a0a9a63e5f92a62  gcc/testsuite/gcc.target/riscv/pr106602-rv64i.c
! fd454cbbc31e7c4bb8e24d07543b8255  gcc/testsuite/gcc.target/riscv/pr106602-rv64i_zba.c
! ec6ec43c9e76076efb0caf7fd6975bd5  gcc/testsuite/gcc.target/riscv/pr107786-2.c
! 5201d6361bb5315fd35a51ff807d7115  gcc/testsuite/gcc.target/riscv/pr107786.c
! d84dbc7cecc66316cc6e095e4da62b30  gcc/testsuite/gcc.target/riscv/pr108987.c
! 2dff48c2cbadd1b5f5afb4808e4eadff  gcc/testsuite/gcc.target/riscv/pr109508.c
  10400130cc47973d43925669f3c795ed  gcc/testsuite/gcc.target/riscv/pr84660.c
  287e116d84e5eca39a410aca336f89b1  gcc/testsuite/gcc.target/riscv/pr93202.c
! 01c8227bf1b5efa52e434a407c33930d  gcc/testsuite/gcc.target/riscv/pr93304.c
  f95453a04d25316c015010a3d66699b8  gcc/testsuite/gcc.target/riscv/pr95252.c
+ 755ab5aaa59ce32ddfd25ae8f503af35  gcc/testsuite/gcc.target/riscv/pr95632.c
  2a0b4380ee3a1ae8c2f449020e1caa54  gcc/testsuite/gcc.target/riscv/pr95683.c
  4a09604ef4cdb81da6aaf6179b4347d1  gcc/testsuite/gcc.target/riscv/pr96759.c
  06f027ca6a8c58be75a7b860dc39bf86  gcc/testsuite/gcc.target/riscv/pr98777.c
  576ffdec066d69c35af0753463b174ae  gcc/testsuite/gcc.target/riscv/pr99702.c
! bdd391da1a021d60dd06443a2c462e61  gcc/testsuite/gcc.target/riscv/predef-1.c
  631c168c77a9af0c773050bef4b8943f  gcc/testsuite/gcc.target/riscv/predef-10.c
  318dab274ae6db996cba3a94694e749d  gcc/testsuite/gcc.target/riscv/predef-11.c
  a2c9fa03a9dd9f49ac1497ec91ae9cca  gcc/testsuite/gcc.target/riscv/predef-12.c
*************** a2c9fa03a9dd9f49ac1497ec91ae9cca  gcc/te
*** 72515,72531 ****
  981b22f8d0822eb392cc684aea295a02  gcc/testsuite/gcc.target/riscv/predef-17.c
  a335b5e1909d390294a0a65a294b3327  gcc/testsuite/gcc.target/riscv/predef-18.c
  7467c900a7a5a13d2990492333310a6c  gcc/testsuite/gcc.target/riscv/predef-19.c
! 24080ddab0c7254e9c3e5b6e684b71c2  gcc/testsuite/gcc.target/riscv/predef-2.c
  1dae05fb7ee217e838eabf1f45e7114e  gcc/testsuite/gcc.target/riscv/predef-20.c
! 70eb42646f5429619515c25c72770c17  gcc/testsuite/gcc.target/riscv/predef-3.c
! 77ef663f023b4dd7d133f5b64ddc4979  gcc/testsuite/gcc.target/riscv/predef-4.c
! af35b7665e704672648c454914aed786  gcc/testsuite/gcc.target/riscv/predef-5.c
! 4988ec3213a71adbc67f3707483f636b  gcc/testsuite/gcc.target/riscv/predef-6.c
! abae81877589b27444cd46022e7b31fb  gcc/testsuite/gcc.target/riscv/predef-7.c
! 2ddc569aca38f5ab07ad727d4d771543  gcc/testsuite/gcc.target/riscv/predef-8.c
  9ac2b9b8f51654fa48e8cb3aa6343a32  gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c
  65ce2c3872664bd9ee6b621cf3ea090d  gcc/testsuite/gcc.target/riscv/read-thread-pointer.c
! a9f1fb669971ce312160aa92ecd608bb  gcc/testsuite/gcc.target/riscv/riscv.exp
  e21250cdea6ea09da525f0119c38ea38  gcc/testsuite/gcc.target/riscv/save-restore-1.c
  d9f3969fcf83beaed59186cbaaa465bf  gcc/testsuite/gcc.target/riscv/save-restore-2.c
  f77ea662d9f85837dacf2e485dc91143  gcc/testsuite/gcc.target/riscv/save-restore-3.c
--- 76607,77317 ----
  981b22f8d0822eb392cc684aea295a02  gcc/testsuite/gcc.target/riscv/predef-17.c
  a335b5e1909d390294a0a65a294b3327  gcc/testsuite/gcc.target/riscv/predef-18.c
  7467c900a7a5a13d2990492333310a6c  gcc/testsuite/gcc.target/riscv/predef-19.c
! f4cd285d40f82500ac94b38d69ddff10  gcc/testsuite/gcc.target/riscv/predef-2.c
  1dae05fb7ee217e838eabf1f45e7114e  gcc/testsuite/gcc.target/riscv/predef-20.c
! 42182dd604c357b7c179981ed12114de  gcc/testsuite/gcc.target/riscv/predef-21.c
! 28318e1b19daee48e9bdd57c91a3e6a0  gcc/testsuite/gcc.target/riscv/predef-22.c
! 5fabe8eb53d7c19a3bd3d2d6b7771dbd  gcc/testsuite/gcc.target/riscv/predef-23.c
! c87a4d55d7a66b9a0c9aa423e4c92bb8  gcc/testsuite/gcc.target/riscv/predef-24.c
! 36f5d30af2f6b2e1e7584ac498bf4d1f  gcc/testsuite/gcc.target/riscv/predef-25.c
! aef18d51cf991660d6d516782f8ad7f5  gcc/testsuite/gcc.target/riscv/predef-3.c
! f3c66996e322e8ef05092aac3fe78678  gcc/testsuite/gcc.target/riscv/predef-4.c
! 9f840617445a041a9135dd3a68171540  gcc/testsuite/gcc.target/riscv/predef-5.c
! d03b56de8a4e3ed49030054695c76f93  gcc/testsuite/gcc.target/riscv/predef-6.c
! 245c7a576493b3a0cba7029e8ce8cf68  gcc/testsuite/gcc.target/riscv/predef-7.c
! b7fff0dcab7fdef2f655cc4a09e22a67  gcc/testsuite/gcc.target/riscv/predef-8.c
! 82f69e74b37ada0716cd433335e84733  gcc/testsuite/gcc.target/riscv/predef-__riscv_v_intrinsic.c
  9ac2b9b8f51654fa48e8cb3aa6343a32  gcc/testsuite/gcc.target/riscv/promote-type-for-libcall.c
  65ce2c3872664bd9ee6b621cf3ea090d  gcc/testsuite/gcc.target/riscv/read-thread-pointer.c
! fab4d2fa332615f40a97719626ec05ac  gcc/testsuite/gcc.target/riscv/ret-1.c
! 1bdaef92e9c1a523c9f2808c30b27034  gcc/testsuite/gcc.target/riscv/riscv.exp
! 6c06251f46956faed6e5b540e9ab010f  gcc/testsuite/gcc.target/riscv/rv32-load-64bit-constant.c
! f3772720103b7015f51fee95e5d294ea  gcc/testsuite/gcc.target/riscv/rvv/base/abi-1.c
! 6ba19fed5c959266c0b391b99f5c338e  gcc/testsuite/gcc.target/riscv/rvv/base/abi-2.c
! 79df4b147a8c962b142cfd7748451769  gcc/testsuite/gcc.target/riscv/rvv/base/abi-3.c
! fc5296dd345c8e6a8c7d02399b6fdd35  gcc/testsuite/gcc.target/riscv/rvv/base/abi-4.c
! 16adc2d9f3e67080575c660cf54cc868  gcc/testsuite/gcc.target/riscv/rvv/base/abi-5.c
! 75b9b893ae637c5b5a469edd52dd56b1  gcc/testsuite/gcc.target/riscv/rvv/base/abi-6.c
! 0fab0069f7636e81c56ceedc25520fff  gcc/testsuite/gcc.target/riscv/rvv/base/abi-7.c
! c89a8a88dd389f2e4ca39fd4bc200153  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-1.c
! 929bc9dd479fcb10564c5d95d7e20a94  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-2.c
! 7f68e4a9f7c2b4f939d60564f0e450a0  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-3.c
! f8aed0b6876ddd3a75e7744b827af0db  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-4.c
! ff323861ce892f5a6c41c2624e599f88  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-5.c
! 361457316869b36ee3ecc99db50d1ca6  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-6.c
! c5b31100603ffe499e25fff3404b7c8f  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vv_constraint-7.c
! a6a99edf1593248d76939dfc683d4faa  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-1.c
! 5d7a7dcebdcaabe82fdb11b244a0cd3d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-10.c
! fb7fbad162632975f3ef0f58ae2427ee  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-100.c
! 8c099a5bf727ab4d6f26179f65b66cf1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-101.c
! 6dbf9f9efababf19dcc9f9b75691fc1b  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-102.c
! 489dbc69b3e60bd568ffb04cda85eb4a  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-103.c
! d2d82dfbd5efe9f779f950b18b7094b2  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-104.c
! 62589986c5a1a8d84d42df46ee14e324  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-105.c
! f1b82bbd761a47e386617f097f29e9c9  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-106.c
! 63f2b995aac3fb02389a262c3cf3e126  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-107.c
! 49c8578b269aab13b00768184929a756  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-108.c
! c188a057d6180bb4d813332f56768913  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-109.c
! c4bc50985eb5bc7251827d44133b476b  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-11.c
! 8635d8912d76f40410ec807bf13e49d1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-110.c
! 6e5cfa134629d5e97918d505276fbb6d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-111.c
! c657afe50ed7c2fd6dd8b66cc6d52698  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-112.c
! b476b0738e47748f9c46202cabd90751  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-113.c
! 29540ecd790ef3ca5e8d9b7613340946  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-114.c
! 359ac2a3a13d6bde8610a04085f4bf4b  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-115.c
! f9e704a0d07b901c06b5c1e08e5b6f86  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-116.c
! 9e43ce3a09913c4de485b09a857db8b0  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-117.c
! faa1e08026e7542a327cb3c1682f7fa1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-118.c
! 09bc4e82b7cc52b9ff891103e9e4e7b0  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-119.c
! dde234a92bdcd5614e30f0fbeb8d990f  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-12.c
! 47a380f5980f1c018dc746b592bff29e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-120.c
! 629e6f1981a307c1da9e872eda7195b6  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-121.c
! 73c0d3c8a3407bf46bd1b10b8900f257  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-122.c
! 2810b54b38e27c6d29407c420e1f4dbf  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-123.c
! 10f669084169154d3b6452a59215d82e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-124.c
! 4b673c77bfd668e719c5aee96962de08  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-125.c
! bb5b2cb59d4d8a5e05257fa151afb63e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-126.c
! e014944a405eb10c1f269542a44b8cc6  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-127.c
! 04cbcda663315873a29aeb1df741bf38  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-128.c
! e565d0b4cf19a391e52da423dd4ee4c2  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-129.c
! 75d9b0b9e4daaa0c77f9e8a181d2e3d1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-13.c
! d2e95275c012f5d96fd998dc921e1174  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-130.c
! aaf6e6b6b6dd68533a8a6ef24113b927  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-131.c
! f10d03e4108cb760eda1309c691ea214  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-132.c
! de6ad002049742592a84ffdf151674a1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-133.c
! 41676947052204b8f5bda1d3e93c1312  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-134.c
! 30280ff5362d5ef0dceabaad686381df  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-135.c
! b623763080675c2dee483ed4a8a8f9e8  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-136.c
! 0299840c540fc99fd075b65c3b7d7d60  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-137.c
! 55383e290f8c43513d3e8ad97d5260a4  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-138.c
! 83e261f0356bb63fd6107f076971f106  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-139.c
! 4d46dc9e070c74f335de9adedf52b42a  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-14.c
! 9697d9c5a59bee80c7faeecb0728a6bd  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-140.c
! 8f4b739717bf2562ba86b0fbf6445d6c  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-141.c
! 77baa83b524fc50296c78ab1c0b75421  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-142.c
! 1672ee8d6a8a39a61ad07d713fa1e59d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-143.c
! a4be0487f555f96b2cc3ec48fdc46800  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-144.c
! ec186fa68f7279770f487c6a3f18a07b  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-145.c
! ae70352ef11c235a2ce6e31d3119a637  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-146.c
! 70d3f3241a852c9dcb6654dfc5ad3242  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-147.c
! 9110181beffc31f3a71a7e12efe71a3d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-148.c
! df14863c2566c81219c627379772873e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-149.c
! ce784ab98ffb2e3fa2b906671512d44f  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-15.c
! d34c53b995bd9162718dc1b9a79a4f9d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-150.c
! 26b488251fed1489045833ce6ade2ac0  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-151.c
! 9cedd5819dbff27c274ce7435ba66983  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-152.c
! a42c0c503c185563e2d7df8d0923f541  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-153.c
! 968ba014ef2a46bb86a1d8d704e4e668  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-154.c
! e502356361d433d7ccaed635ba2aa371  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-155.c
! 12e2e8de05acde60ac92616aae10a6b3  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-156.c
! 1fdd8de858fd9549e7883b2b64443711  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-157.c
! e502356361d433d7ccaed635ba2aa371  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-158.c
! 12e2e8de05acde60ac92616aae10a6b3  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-159.c
! 5723110f2e95deabb6bc1668a8d2d109  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-16.c
! 1fdd8de858fd9549e7883b2b64443711  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-160.c
! 2bf87ad1a4fbabf13cbe65737243f476  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-161.c
! e27303612d2456705ce7357998c48ab1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-162.c
! cc32316b5a6d9cd036b6972cb8b4476c  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-163.c
! b25124b2f21fd07da3411e77c247314c  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-164.c
! 394851a4079db4a304ed430c1ee18ed2  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-165.c
! dfdfd0484b7d9bece18ad92e58520499  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-166.c
! 2f18f98f714dd8101def6cc0b24f05ea  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-167.c
! 1bc84777447b3ba804e04edb06c389bb  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-168.c
! b80b68669a81c674d92450b020260ec3  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-169.c
! c340756f5c5bde3082cff8d37203006e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-17.c
! 541d858a9962cae132546a7831768780  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-170.c
! 58352e7dfc4836454b0c1671dd41688d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-171.c
! de65beace2e64c3c179e181296a26f58  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-172.c
! 176698b16c6275cc165120f66bbab9b9  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-173.c
! 6258e86f8d4b87b6dbd77b8cdf1fe2e2  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-174.c
! 97d7f9aa5b51a378c8a6c459d1501830  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-18.c
! bb7aa98adaa5d5715c5bce07d626a356  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-19.c
! 384c810beb44c9ac5e68f9975926fc34  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-2.c
! 87425db5aa30f69fdc39a4305ba7724e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-20.c
! d440d442a5fdca5f6eade9a4efaff64b  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-21.c
! 7338220e6d9689aa5212232d2d315663  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-22.c
! 66d300fa30f69a9511c21956d0ed63b8  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-23.c
! ddffcd2c9770f262043268004ac3e833  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-24.c
! 9859e7725f219b3bb2b4f61d26e5f665  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-25.c
! 0a9b83361b80679f9ac96d5993855215  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-26.c
! 7063b2f405684caf12cd5e9c35685c62  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-27.c
! c0770ba2278cb07cbd0481afeb302c9a  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-28.c
! 3d363a70fc88ad4d0855c12c857a5d80  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-29.c
! 8f95e679fb4a949790bf49a757a966e4  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-3.c
! b34586c7f53c4912d02d6da5c99e5afc  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-30.c
! 3d363a70fc88ad4d0855c12c857a5d80  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-31.c
! b34586c7f53c4912d02d6da5c99e5afc  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-32.c
! adfda761ee183aa810cc5a99e7d8e0cc  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-33.c
! 5a9d8428b57b3706fa84dae6ddcc94ae  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-34.c
! adfda761ee183aa810cc5a99e7d8e0cc  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-35.c
! 5a9d8428b57b3706fa84dae6ddcc94ae  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-36.c
! 65850c1c23608a54d39aa77aaf485e41  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-37.c
! fc6b38eb38d07095f32fae8758724bc7  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-38.c
! e4a4d82300dc74b1728fc0aca30d53c4  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-39.c
! df4ad62b9676610c4cd86a53a5702092  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-4.c
! 6c93ca4f7951e39d7573b41bc222103d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-40.c
! 211b98d1cd3661c6dd74de0ae71c4ba3  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-41.c
! eebd31f2105195510d9688c9a178f381  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-42.c
! e0508e9b1a40c224a17019214eb7d3f7  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-43.c
! 2af8999d2fd0803dfefa4eaa185519df  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-44.c
! eb19cf1915f8ebb8ee8083bdffbbdc63  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-45.c
! 8e93de8025742d1d6a9b23b53d5dca83  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-46.c
! 31c3438c5c6e437440084d9608e25a03  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-47.c
! c6b49938097a6f85a67ff8707669934f  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-48.c
! c49652c0898941b148fa62cc203938e0  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-49.c
! fd11334a63d9e9e16fe301b1c197038a  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-5.c
! ec43c637f582d82e2452b33449504045  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-50.c
! 547d051d5071cd6fd49d4eb984812069  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-51.c
! cad299bb4a8727e77737f6ae9fb9e4c8  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-52.c
! 06a5ada101900e71afd0d40e242e6c74  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-53.c
! 69085d7c02f31acecd43600254c3f6ec  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-54.c
! 6318973f8dadd6fd566a0f9782de5987  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-55.c
! 2d5fa333412725d80215939cda6fa767  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-56.c
! 19ded9124fbeb7d7a3d743a49848eeb2  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-57.c
! 5b7eebba13195dba9dfb745dad0902f3  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-58.c
! cacb9f3083315ff85f56d0bc76e95d42  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-59.c
! 7347f3a00c4aaa124a4d028d8bcaefcf  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-6.c
! 38552b12f058c60376e3c9f2a671ad3d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-60.c
! 7e83d2d6f2eacb595bed50951df6b8d0  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-61.c
! 5712f0134f89ca316546df71b0ba802a  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-62.c
! 7fafbad1e10469266fa11145ddac46f1  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-63.c
! 3d7af9e3cb0929fc6e979da9e5fe93d5  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-64.c
! fa0cb24c579bbb260920831a70b8fbc8  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-65.c
! 31040a88669705acc9c667f7ff361544  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-66.c
! c7a499e6ee9fbf526a750b8a55e77bf6  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-67.c
! 215f361055e1faf17616d89ed04fc422  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-68.c
! 808b605a6060bf56399bde43240389de  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-69.c
! ac97c0d9a7a2f1bc3ba6ee48e92dc68c  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-7.c
! 8bdf6b6f33848504963670cf820472e2  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-70.c
! a9611111b7ea9eaf4a1e48083a77b052  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-71.c
! 5b282b1260dbed731a43389e9e729a79  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-72.c
! 1bd935df1f597cbefc6d7525a818cb67  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-73.c
! bbefcb9b5c50f3f3313d72a34ea9f6be  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-74.c
! 7b8a1e61f32ddedac67bed6b697c4c26  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-75.c
! 774dd700e5f85af962fd62adddcdef27  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-76.c
! 5159a8991593472a2bbed3368a12be7f  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-77.c
! 24bd3d035ae3691db5837dbdc691aee4  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-78.c
! aab51db0dc5f9518241b13786724d98d  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-79.c
! 32e11b51297bdcde2056d54dea1724d8  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-8.c
! 6a5390e99fa496571d7e9a2f5f40aae5  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-80.c
! 6c2163532b5ad681e169cd3f0e4ddf65  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-81.c
! 1efda29709856d41fe1cb9460fa04b4c  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-82.c
! 0e6ee4597f1b39507defe7e4589f2b51  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-83.c
! fede3e50e8b10c99d3d79cab9e88e0ea  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-84.c
! 12a5171e1e7bf1c7bd7abd4e4b8cd3a4  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-85.c
! a26b847ff8da36491bbde8efd8e03fe8  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-86.c
! d886121d15819c36df11f778ca95d5a5  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-87.c
! a44637434a0d05330aef0578f9d15d70  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-88.c
! 23cdaff96ff2f223a4c670376b606646  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-89.c
! 7264eeb00a4ae9deedafed021e022a1a  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-9.c
! 96cc9c1dbdc81534cbd63ccceb22f047  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-90.c
! 51100f8affeefaefb78ebc5b4ad45810  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-91.c
! c6d0ff4cf763c04065289f227183ae7e  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-92.c
! cc810a9616e3438c79ba4198af28b8fa  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-93.c
! 2019e76eedd5e5d086c11de523460684  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-94.c
! 744d58e8f6d127d4444c67c8c0f5fd61  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-95.c
! 5f7693bb4cb84cb63a8e61bf44501912  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-96.c
! 750bb2e50345cf96fef0a97dd00fb8a7  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-97.c
! d0b909d869e818b5b2abd0395ab17271  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-98.c
! 31c3438c5c6e437440084d9608e25a03  gcc/testsuite/gcc.target/riscv/rvv/base/binop_vx_constraint-99.c
! 13c1c20db59e9d99461ec9170fed983c  gcc/testsuite/gcc.target/riscv/rvv/base/bug-1.c
! 68884bc5d70a58c7055df54c35b12065  gcc/testsuite/gcc.target/riscv/rvv/base/bug-2.c
! eb6bb8bdd26bcfdf5626086dbc40cc38  gcc/testsuite/gcc.target/riscv/rvv/base/bug-3.c
! b2f786cbc556d613901e2fd0b0efe097  gcc/testsuite/gcc.target/riscv/rvv/base/bug-4.c
! b27b361023d6a5eb05374d0d8ac98cf5  gcc/testsuite/gcc.target/riscv/rvv/base/bug-5.c
! f8d68eda8e75610f3abd8282856cc66e  gcc/testsuite/gcc.target/riscv/rvv/base/dup-1.c
! 4b95c2c6a750dec788a04b8733aedbfa  gcc/testsuite/gcc.target/riscv/rvv/base/dup-2.c
! 1dba3b8cd001408fa92c132ad3f9c111  gcc/testsuite/gcc.target/riscv/rvv/base/macro.h
! 4b88a0cb8f595383e6b82bc791a32290  gcc/testsuite/gcc.target/riscv/rvv/base/mask_insn_shortcut.c
! d2e53bf1c848b7ec74d87d83f39ca89f  gcc/testsuite/gcc.target/riscv/rvv/base/merge_constraint-1.c
! e634b25f20b14ea882e5d7efbd631386  gcc/testsuite/gcc.target/riscv/rvv/base/merge_constraint-2.c
! 6fb683811c27252f6f814cf1bf34089d  gcc/testsuite/gcc.target/riscv/rvv/base/merge_constraint-3.c
! 40491e4b82c978c3023451d1872ea027  gcc/testsuite/gcc.target/riscv/rvv/base/merge_constraint-4.c
! 46e353fdcd33bf3775d57d45c0feb385  gcc/testsuite/gcc.target/riscv/rvv/base/mov-1.c
! 5072b35f85f1361d531d202c10a98b29  gcc/testsuite/gcc.target/riscv/rvv/base/mov-10.c
! af42c934a70128e1fd226529cb8004fd  gcc/testsuite/gcc.target/riscv/rvv/base/mov-11.c
! 197d894467f80454e98544f42a091ec2  gcc/testsuite/gcc.target/riscv/rvv/base/mov-12.c
! 8761d8404e2f9dcc70963d5d0ba33243  gcc/testsuite/gcc.target/riscv/rvv/base/mov-13.c
! 082c24e03fbb7193bfa686402af24bc6  gcc/testsuite/gcc.target/riscv/rvv/base/mov-2.c
! 66d76bee53bfd37765034b8d0489f6dc  gcc/testsuite/gcc.target/riscv/rvv/base/mov-3.c
! d3d7f4057c2768a6817d56fb9da6c525  gcc/testsuite/gcc.target/riscv/rvv/base/mov-4.c
! 3e520b4a80a6369b79afd13e6a1c5f86  gcc/testsuite/gcc.target/riscv/rvv/base/mov-5.c
! eee07e7f02ac91f8adf778c10661c2a1  gcc/testsuite/gcc.target/riscv/rvv/base/mov-6.c
! b6bd0811c82a6af5d3f5b16c8c8a8af7  gcc/testsuite/gcc.target/riscv/rvv/base/mov-7.c
! 83a3ad5e108ad86593a9b18046a8e987  gcc/testsuite/gcc.target/riscv/rvv/base/mov-8.c
! 77f72f25d47d86afb72813e3d058656b  gcc/testsuite/gcc.target/riscv/rvv/base/mov-9.c
! 5fd11780198a40bfebdfe809dcb842b9  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-1.c
! bc908c8e86335a1e2679eb72213fcc84  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-10.c
! 428997b4f2b90fe6d460ddd9b52be1eb  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-11.c
! ad8a60301f84873d38ab21107e52c63a  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-2.c
! 0a6e7a6d5b9e3acfce79c504a21656dc  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-3.c
! d59f2887972f0489455a60ded3eafcd8  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-4.c
! a71b10ee39910b10aecc2a39055d6ab7  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-5.c
! 4961cdf342d7aee4336acb4b6175898f  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-6.c
! 103794ecacca2192502e77aabefe57ad  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-7.c
! bd2f1480d1fc8a5ba74df6103403fe12  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-8.c
! 328642521916570cb75ca3fe613dc0e5  gcc/testsuite/gcc.target/riscv/rvv/base/narrow_constraint-9.c
! 7b472b6a17c8b87f2504d71181026f02  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-1.c
! 98ec3916fc6b6402d868531ab0b9fdf3  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-2.c
! f6e9c9cdd464e975b70db6a4d939dbc0  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-3.c
! 6ae088e8e110a86b22e55fbe8670ef5e  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-4.c
! 0964611f59434b33df4b5b5b54d8a040  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-5.c
! 13a4156935999c44e657643f7e856188  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-6.c
! 525ff428edeca511c86e5fb675326eb0  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-7.c
! d71c3f56021d3797031c6ad70669ca47  gcc/testsuite/gcc.target/riscv/rvv/base/pr108185-8.c
! 1e2dfa1b1e54e4036c3983c1a4331ca8  gcc/testsuite/gcc.target/riscv/rvv/base/pr109479-1.c
! f181bbabda2838bf06773fa6a4994ed2  gcc/testsuite/gcc.target/riscv/rvv/base/pr109479-2.c
! 0f8329bd667c5b1cc6b91c900670b11d  gcc/testsuite/gcc.target/riscv/rvv/base/pr109479-3.c
! 3b73d23e1d746ed57e6185e904f1a8e0  gcc/testsuite/gcc.target/riscv/rvv/base/pr109479-4.c
! d83d871fd46ba7b8f2aab7967f5ba049  gcc/testsuite/gcc.target/riscv/rvv/base/pr109479-5.c
! ee09eca4cd8eb6ecb824b7eacc075068  gcc/testsuite/gcc.target/riscv/rvv/base/pr109479-6.c
! c804a0fabb820aad63370b0a038cf47a  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-1.c
! 101f4c473acff10d55020431a73f7ca9  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-2.c
! f2a7c0ac32100a9bfa19647d4c2134f8  gcc/testsuite/gcc.target/riscv/rvv/base/pragma-3.c
! 979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/base/riscv_vector.h
! d2d2e9fe0f87d34014cb558f4e5f1add  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-1.c
! f0ef727ad421676bfc8524d445606492  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-2.c
! 6c7cdecd10fb8854fb71be95c2dd58c6  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-3.c
! 8c21b304dcf8bfcea2ca1180cbeec2d2  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-4.c
! 97bf6f27ba796847a1f8f2175edd9e5c  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-5.c
! c9fa7c9f1f73b0caee80fd11f8cc7998  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-6.c
! 1e71d7a2e9286dd5dec229229abd75f6  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-7.c
! 29be05d6e6dbf5bf5053d5be53ce4c65  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-8.c
! 3e207f073e047580eb29a2b880bb0544  gcc/testsuite/gcc.target/riscv/rvv/base/scalar_move-9.c
! 30e35e1581d9bfb1fe1e73fb62303125  gcc/testsuite/gcc.target/riscv/rvv/base/shift_vx_constraint-1.c
! ad8d99fd677b8833ccecc44863fd49dc  gcc/testsuite/gcc.target/riscv/rvv/base/spill-1.c
! 544a29246ceaf329107d7f09a4991998  gcc/testsuite/gcc.target/riscv/rvv/base/spill-10.c
! 4a2780d3aa95a9209605a3562c5f2989  gcc/testsuite/gcc.target/riscv/rvv/base/spill-11.c
! 3a1c59ed1dc29a0fe1c35eeb4be76d36  gcc/testsuite/gcc.target/riscv/rvv/base/spill-12.c
! bf90952d994b84336a102ecec076a8d6  gcc/testsuite/gcc.target/riscv/rvv/base/spill-2.c
! 7e16c487634ab16b38c7199173d45066  gcc/testsuite/gcc.target/riscv/rvv/base/spill-3.c
! 98aa00d975b60597d71a78892fc2784f  gcc/testsuite/gcc.target/riscv/rvv/base/spill-4.c
! 7cb3c81fca63ecef02c6ba995f504876  gcc/testsuite/gcc.target/riscv/rvv/base/spill-5.c
! b3bfba70a86dfd7e0b66e2e9b165995e  gcc/testsuite/gcc.target/riscv/rvv/base/spill-6.c
! ab9e940eefba814d9fffb8ace2d7e17f  gcc/testsuite/gcc.target/riscv/rvv/base/spill-7.c
! 31b945f30d695b40cfab5ae856e4e38f  gcc/testsuite/gcc.target/riscv/rvv/base/spill-8.c
! 2da89379bb8043d0da250640779e832d  gcc/testsuite/gcc.target/riscv/rvv/base/spill-9.c
! 7de53eea40a2d3d1318fd361b276a775  gcc/testsuite/gcc.target/riscv/rvv/base/spill-sp-adjust.c
! 95d2198a5e1bf0270cc00e3a6e611d52  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vv_constraint-1.c
! 9fc9c95f4527fddbd13a205758082a2b  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vv_constraint-2.c
! dd40bde9ba837a418f04cda7f7f026cc  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vv_constraint-3.c
! 5be143677447d5b837ca24245acabb30  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vv_constraint-4.c
! c983cb480fc571810a8c0e747a10dccb  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vv_constraint-5.c
! 01b77feccdb713d37ce1a91b1bcfae05  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vv_constraint-6.c
! 019df586c7f75eed7bf7d9d5ac3a3215  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-1.c
! cdfde402a9bc2f52349e1fad712771b1  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-2.c
! 473b0f8fae29f8c2c8a195451b389eb8  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-3.c
! a21794bc1d8dfea5ab729f01cfc95a7b  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-4.c
! bcb77a370a0025f6080cf4a17567a755  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-5.c
! 3dcf42346b0a4d9654845af0a52664c9  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-6.c
! 1c9cc972f5f13366c45b35203453c787  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-7.c
! cf9e743209e4a7015eb91411dc0ce11f  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-8.c
! f39a463509ab1138806f1f5cf6f1cb63  gcc/testsuite/gcc.target/riscv/rvv/base/ternop_vx_constraint-9.c
! 31a1bc157dec48b928dc74208940364c  gcc/testsuite/gcc.target/riscv/rvv/base/unop_v_constraint-1.c
! c8e4123dbf789d6736cdfc3b869b8cff  gcc/testsuite/gcc.target/riscv/rvv/base/unop_v_constraint-2.c
! 788aaa7d69ba3f329a0fd22e3aa677bd  gcc/testsuite/gcc.target/riscv/rvv/base/user-1.c
! 52dcbac3168a911ed23eef9924e73cb8  gcc/testsuite/gcc.target/riscv/rvv/base/user-2.c
! 176f8e8720fae138bf55d82d12af56be  gcc/testsuite/gcc.target/riscv/rvv/base/user-3.c
! cbc1ef68a39770e18309f1b2c9ab7db7  gcc/testsuite/gcc.target/riscv/rvv/base/user-4.c
! 02e7d50b5fb12f944b9afc426178af51  gcc/testsuite/gcc.target/riscv/rvv/base/user-5.c
! 1f02e86934525ff05992c9fcc88fd48a  gcc/testsuite/gcc.target/riscv/rvv/base/user-6.c
! 5d33efd776de379270a693a7f842dde5  gcc/testsuite/gcc.target/riscv/rvv/base/vlenb-1.c
! ca5aa1738c25fb0d043d454c19d9c97c  gcc/testsuite/gcc.target/riscv/rvv/rvv.exp
! 285305cd7953cf2cabe0a4cc1b898121  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-1.c
! 4b5b4534e3089791a73b9a8cf87c3ff6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-10.c
! 93c14d545ddc0d0759bae07d34b126d8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-11.c
! 6101d69baae5820a42e4d53bbb779531  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-12.c
! 7034b11620fa51c2c8bcf6ca3c426082  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-13.c
! 4978e8812929c7de66f65c5b203bc524  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-14.c
! 9812cab027f8fc9bf958e86d64d02f4e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-15.c
! 80c3d58f42239a8e80c0e2726bccd437  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-16.c
! c58842ed184e9e30ffe032a9f067baf8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-2.c
! cb44d50c7c6381a1c58e44d749487b7f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-3.c
! d09934658960089e4e30dacfc7c514c9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-4.c
! 422fbc6b5e47f0d5b8f2b088cb7f2c92  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-5.c
! f0197a1b27380ad0863200ddaf18dae5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-6.c
! d1239cd040c102570c007840b38638f4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-7.c
! f87148ca25d5f12f8a021230072b4fb9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-8.c
! 57ff965153e1455080c0d2e746f72773  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_multiple-9.c
! e98a02d76b3d9ea532704c72de3890dd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-1.c
! 7cbe49eb0826a7dcfc214c74e19bbe73  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-10.c
! 3c33722bf850cf125db7abe5d0a0eb9d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-100.c
! 867b1c926ccb79ec41ad66fb445d0817  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-101.c
! 1e11e8b6b6b327f862510ac7bdc15aaa  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-11.c
! 1f6caa47509ef30a9b15ab8ee6bd8408  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-12.c
! 137988f8aa0e831a58ef1477705797a4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-13.c
! 1182d51bee490e60e029cb2af2b7010f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-14.c
! 05f6a971e167549bcc57b483c934fdc2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-15.c
! faccf2461f7957a8e2e82d1f7dff8153  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-16.c
! 3274950f100a604c587a881fbaa54937  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-17.c
! 238ac86bfc798c43bfadf8ba0a504887  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-18.c
! 98d684702bb40b40500f15a99446be4b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-19.c
! 6b19bea22a5209734ec4213df359d4ee  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-2.c
! 8062cf1c21c0df1b59b978ff5a7c5684  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-20.c
! dd2f1bccf90dbb6ca6a9f33d80fdbe35  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-21.c
! efaddf26a392709e3e10978799892eb8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-22.c
! 8fb382763255e7e747964b9213994fa8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-23.c
! 718367b33189f21a7d3249af59729610  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-24.c
! 2227b551ba1cb9451b32d3c85aad43c4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-25.c
! 05d17ade8678e14808d32a67fe9c2c0c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-26.c
! 1d30261556f46a8be470c56a4f0b4dd0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-27.c
! c79c19173749fedb189084b047ee4eb5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-28.c
! efebee13b791a2312964a22d62967111  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-29.c
! dc5f01dbf92b8528565a165fe18d4493  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-3.c
! e92fdaf82db1130152a598343d0f7ec4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-30.c
! 43f81ee2b3c33aed8274f7b5aa12f444  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-31.c
! 3c8d76a5952f8038432341da1779f5c2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-32.c
! 34f1f470e197e8cfe1dcb9fab4f873c0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-33.c
! beb497f713eaa0a861bd99d693973ea0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-34.c
! 61192dec477df2f809b10a6fbbfb6673  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-35.c
! ad275129939c930f18bf09d8cee4bc33  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-36.c
! 23a3656e6144026f774fac0d4133833d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-37.c
! dd905382a95abff1666cafbeb711302c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-38.c
! 0a0d225f1f9486023b4164df4e61214b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-39.c
! 53b83620f80180a7474eefe90af7384c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-4.c
! 95c87201b27b3b538ade1cb3062e64ac  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-40.c
! 1d571b5f72c7b472a28ba8d9f9170e62  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-41.c
! 346c7fe1e9dfa7a7ffe048fafbb5e9ca  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-42.c
! 9e29b6e305147af0d5c736faf6558bdd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-43.c
! 7efe1e62bdd4b3382c4e69f82a7a879d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-44.c
! f21f70cd870335eacf94ee332c5fc5aa  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-45.c
! 95d34162881703116af763aed6441c3d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-46.c
! 446bba7f67faee9299c0f02a0676a349  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-47.c
! e671a18113a4182686309a806c0b5236  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-48.c
! 5ed50ef0c673a1c717ab7e95c1bd454b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-49.c
! 8d2f88447fbf976d6a92e0573768abb9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-5.c
! 14bd53b31429f9a554bebc38a35944c1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-50.c
! 42ea21b1a833bbcfe76331d012598e8c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-51.c
! 0b756a077b185e70ad0d115251962d68  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-52.c
! abb85ffd093b063ffa8139c736a5fb44  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-53.c
! 95e7402585030bde7a4be42d6543d4e3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-54.c
! ed147e958fe4914026ab5a7c548a8ff8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-55.c
! 6807c92a08a4f005d1d61f66db107648  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-56.c
! fee58417f2f63671aae97cfa0d391324  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-57.c
! fe134155ed8078ed964255fdf3528fd8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-58.c
! f1f7ed810a505b4126d4fcde7c69bd05  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-59.c
! 255204fdb4d96049fbf841fac54575a5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-6.c
! befdb4faf1ad27ad166767e43371b321  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-60.c
! 0fee4d04d855d5512ffbbc7f6ee679db  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-61.c
! d430a3d044707d24f4edc54633321a84  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-62.c
! a7bd83f6a4ebb91cbd17296d49b24357  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-63.c
! 44b37fe03be9d188ba53f378fe1e3c5f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-64.c
! ff47a98cc85c86f8eb44f4a8441e2732  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-65.c
! 7076ae4058d6690d13c8a31886ef8f2f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-66.c
! c231de6eb15f919c47e99b7effb1bb61  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-67.c
! 2e5ef894c52561083407a932a03e1a0e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-68.c
! ab532acd1b684eacf707d6ac9121dbac  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-69.c
! c5560f1f8999bfa18ab4f2f0d119bb16  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-7.c
! 617e21fb3269424a3178fc50974d5199  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-70.c
! 45157a6245d074b98cc86264841eb885  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-71.c
! 32dbd2f4bd86fceb33f805a344cd1d3c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-72.c
! 188ae2c763afafaf041e6f94dccb7c12  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-73.c
! 505ab663a4d317c34f13b21ca46549cd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-74.c
! 7dd47bd303c40833aff4811d2cd226ee  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-75.c
! 796463a847c77ef839f0684a68e61b9f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-76.c
! 917f71c31d8bf2d5bfc3d0fb98633c91  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-77.c
! 5e1ae57316930c51af9784e9bd1387b1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-78.c
! 2090de7d209018eada15a2c7dae527aa  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-79.c
! 2f262f8972c41f77ec4a3c6c6ee3cd3e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-8.c
! fba78836e09fcc2af635ce2c308a16bb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-80.c
! 8f56909fce07b0d9c12d5d433613dcbc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-81.c
! 87748ecbb0fe8632692bd5db27b00751  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-82.c
! b2486458349848c4bca58876982aefe2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-83.c
! 5abf8be4718ed0c17c82545b39218833  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-84.c
! 81b52d356bb3432353c45ec0c41c1ca7  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-85.c
! 431a8b5c9077f5e1096664b384890d6c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-86.c
! ca7e8d156d0bb86c68c251dedb789c68  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-87.c
! 95b5e50659a5d252ff02dfd10d6af0c7  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-88.c
! 19629779e23c6de9f7f1c9747648a059  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-89.c
! e7c82b20323459f6b2210aadce4e879d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-9.c
! 718f15b60b9a5620f911fbc321849dc2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-90.c
! 330e45620d4a1dc62bc889947c13f8a9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-91.c
! 6068a669c5c1ae7adc6a2d378cf58070  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-92.c
! 4f6f036b9ca8580af618b960abc2adb8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-93.c
! 15a65acea3c89716668aebba7069d977  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-94.c
! c64f9765ffd3607a253558fad673cc6c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-95.c
! 353057b922f02ace6ae8f6bac03b5c82  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-96.c
! 0335a38e1953dfc75c91c9d2f1d31240  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-97.c
! ee95b6fbc4b73b58c5296620ed2e1470  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-98.c
! 70fe0d011080572a8a2085facf706bb4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/avl_single-99.c
! 419c154c9ff99d3f84872152496454e6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/dump-1.c
! 52ff1117b7b3362b9ec0dd9a4204e629  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-1.c
! da7e15139e8df3eaf51decff3f3514ec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-10.c
! 061940d0c91bb7a6a48fa9745857d651  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-11.c
! 0067c7ba8083aed6d55f18b077556f8f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-12.c
! 05f290f3a0f58b0a967cd534f0063b04  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-13.c
! 20e0f7882236647937671e07641f2356  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-2.c
! 86bdc4571b1fed46419ac35f3aa96cf5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-3.c
! 2e21e828509c37cd5618c633771c2679  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-4.c
! a3ed5354fad15414dd4a54d23cd4c81a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-5.c
! 2f59af6cc031580ada5a8c8ee471e718  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-6.c
! 763175cd50111ef58a551ef2fc48d981  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-7.c
! 2e4456648c796dcbeaf20707c01cac83  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-8.c
! 5f2a4a29de214b4cd80a9946eac0fa5d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_bb_prop-9.c
! 8cff2b17f110838f324d52eb926fa9a3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_conflict-1.c
! ad1bdf831212e7409718cfcd0b75e284  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_conflict-2.c
! ef54049f310ddc286dcfbd02d7a3e046  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_conflict-3.c
! 7d584d5f397cc70238726066293cafad  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_conflict-4.c
! 7befc4d554b446d4a94a80a896d9eaab  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_conflict-5.c
! d034aedd40c7fec171fd035cbff1cca1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-1.c
! 7678418a4761db5ed524310935ddfd1e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-10.c
! 2e2e361da7f6f9467c24bea2e4e27876  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-11.c
! c3ff12b78ec33e1be39b3f98782b41be  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-12.c
! 2c7f66a806ca0a696357a893ea94d45a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-13.c
! 83717170b9196357130f49c69873085e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-14.c
! 0afe7a2b93c94e24b262c160eeebc861  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-15.c
! cbbe3f31133a34c27e6b5630d60a25a3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-16.c
! 8a2ac134f2e32664811fdf3f4b9d3402  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-17.c
! 6a0fe0f9aefef658d4f057793838071c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-2.c
! 089b67c27c6d0e64a9d1c4162bb82f56  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-3.c
! 7b118cf8f79acebcfca21d825dc489a0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-4.c
! 96bc4e638d529d6a47d197939ec68997  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-5.c
! 0a780cb53a265db12854f749773a79bc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-6.c
! 6f44cae827c37152902d6345d133ea07  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-7.c
! d489de137924fb25024f70ab2e19a5e3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-8.c
! 4daed8de1251e3218233fed9a8045726  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_loop_invariant-9.c
! d5e9f92099fe94c13f1c89cbaab55c86  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-1.c
! 7dba2fc93fb742d123c15ee9a14e816b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-2.c
! 6e3af1b927927be73e419023318a9a1e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-3.c
! 8c558f3011721ea2c1b608ee723175ab  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-4.c
! 99814442ef44bd473febd316b2ccbede  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-5.c
! 68e6807285a1836c8f600505c20b7018  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-6.c
! 1b2a3d7aa13ceac7a752d32be764d9d6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-7.c
! fc42786a48f30a95b0aa2552f60845f0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-8.c
! 705bfb13f27b4cec2aa9023c2b083749  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/imm_switch-9.c
! 048cf6bf1d5733af6537f6eccfb61549  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/pr109399.c
! 979e78c5ed1d2ba91a46584480362b26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/riscv_vector.h
! 43222f020a3d499731c953a12e53eacd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-1.c
! e784089ee6a1f060eacee1982ed1f7db  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-10.c
! ebaf1c67b650c4f5ab06ad92657d7b9b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-11.c
! 4f2a6e9a0f005f8a989a9e6e0923e66a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-12.c
! 042d8fe5f97f3c67c978b761c1122356  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-13.c
! 8d208959c87d81ff07dffebc8bd1eac0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-14.c
! 60825b83fe08bcfc57b7d86eb772485f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-15.c
! b858428a388301741cd16fcf44e14b3d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-16.c
! 052163e13c11a989da19f69c5483bc69  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-17.c
! d3f8bfd09ff66883f9f5b2ea5abddd34  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-18.c
! 79eeb1b5ac993a7dc7555c7ebbb4a62a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-19.c
! 784cfa9ea057f94f6ade470d423b41b8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-2.c
! 052163e13c11a989da19f69c5483bc69  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-20.c
! 50db33f3c6f67e1e76ac882e3fe88fdb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-21.c
! bd6b4166776589d38578534fdb462c5e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-22.c
! 3535b26e3a1b52b5d0c62d828e073357  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-23.c
! fb813efb57521219581dc15b334e166a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-24.c
! a3e7c66f828a15a0d1bff652a646f332  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-25.c
! cf3bbc56dee842efb700c82de6f445cc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-26.c
! a60e9c0abdff4a2b670038c01dad001c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-27.c
! c3e8c12157effde2c0828aae10c8ded9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-28.c
! 0f03896425e96f2a731c273a9e789819  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-29.c
! 699bd2000c8931689d2a39f270ea02d8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-3.c
! 444c847247181076f570df33b89b775e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-30.c
! 59d824b59f6f977e82ff9fec944724aa  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-31.c
! fd7a489b379cbc355b9c0517415bc76b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-32.c
! 4e40c93c4a4ba66ad97b6d904155d48f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-33.c
! 22f5234a47ff16ec46cf68cc6d1263ee  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-34.c
! b3088ae1d08a56007f0a3b4025a0bfe3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-35.c
! 107071f1f23f9b2bfeebff2f2aef136e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-36.c
! fe69a1f13ed56c9319b19189d2c5d03c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-37.c
! 4cbde9c696f4f47e2e112b46834d445d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-38.c
! 4a216119bd78633d62ca26d65072e411  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-39.c
! f6dc998862f42d8d36b9f67a201b6749  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-4.c
! bbbdb5eef3d195df54834ded7a7480b0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-40.c
! a8d69c2863bc49303123e0c9281a3854  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-41.c
! b9629a9c4e5728ec35d8896fae770417  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-42.c
! e53803b10efca4af17a60d11a5ac491e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-43.c
! 47b942eeedb18844b11df302aa573db7  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-44.c
! 29b7f16a1ef70e91a482e5c1a283d633  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-45.c
! d08adc410f3ea6cf186525f82ad329b8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-46.c
! 2b42b89e2ff91d7f3664e77cc09541dd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-5.c
! 08da37b9fe3e4b437a50617ba0c286b3  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-6.c
! aa72330a6164cc8416d37a4c6e5c2b1b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-7.c
! f99715701628fcc7d8d61d9cd2f6ef9c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-8.c
! 57d9010ec97346e146926ea86dcc6234  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_back_prop-9.c
! 32d970812660350d87cbf0f9368d6ee5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-1.c
! 53270075e6aaed5501521fd71e5344ff  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-10.c
! 4d71b197dd20496f8c0796d0050e3cf6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-11.c
! 0451c5cd907187bf4b8d368c9953bd2c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-12.c
! 14ff0f433c99fa34055406ce86cf745a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-13.c
! afce6435d9fd03ab10205291fc1c5227  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-14.c
! 6fb89817096fa5843bd7b20ea0b3a7e2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-15.c
! e200711715f46ebb4c7f59d3012929ff  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-16.c
! 3468dced43fd50e6cf55a9a50da4aa2d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-17.c
! 5f34391158ed5b723a37d8de4de68481  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-18.c
! 6bd412dac2ad6705198bcc24b462b9f0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-19.c
! 41aa2eab26363c6c749b890a1812ef8d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-2.c
! 1dc957feef8d587a96a92f042000bd40  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-20.c
! 8a195947fe55576950c7960e3368c2ea  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-21.c
! b9af42677b767d4ce8ce0b242d9391ad  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-22.c
! d6f0ada281870b141a9866f34a033645  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-23.c
! 50d2932620ec7073d8e8eaabbf161f59  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-24.c
! a3421615ff035969098aba182fb233ae  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-25.c
! e9f1a0ea07b687995a15e50ada18b807  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-26.c
! 049ef31685a280437f720e1c7c8f83c1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-27.c
! 3cfa3ad2022cf939afc83693637bb5f9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-28.c
! 70fc56672636184e83ac29185424538c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-3.c
! 29630f0efbe15e2cfea439f32767e2a8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-4.c
! 4c2038539c45f379f3d4e7281e0d5781  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-5.c
! 2f96910264d6ca25433942b6068c25d2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-6.c
! 6f2aded801d9b882a960fd21b9b11aa0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-7.c
! 5fb74d9ca79ffb8ef730ec81f59fbb4a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-8.c
! 699493d249ec314f35ee0ed73b66ded1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_bb_prop-9.c
! 5cc202e1a5b4a9b305eb1de1c98943e9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-1.c
! a65958fefcf76dfa3549e8f330e3dc42  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-2.c
! 6332d3b2ef1d04c8498782f02ee9a68e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-3.c
! 16fa8cebf603286e6064f33c6332f387  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_call-4.c
! 9d2016970d45d5a88e9763b671cd201b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-1.c
! 8c5dba38548a5e45ef7a0388d596f877  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_complex_loop-2.c
! d44bbfde36c6e719b0a5aaf6d1b3bdc9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-1.c
! b449d756979b953c5dec600b862ba7fa  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-10.c
! 41b036ff123acf931d148fd577345aa9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-11.c
! 7cdb3c76b57de18ce592931091585c12  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-12.c
! 72439e2129f922eebe4779e66779391f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-2.c
! ba8f559a7cb7a1cbb00e7a9065b775d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-3.c
! 5afb418823759cc30edb6345e149f935  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-4.c
! 6eadbc3f970862a48b93b52a27dc87a0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-5.c
! 9fc5619b5620271a844b688027b73d26  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-6.c
! 3c7ea45503d41e8482783e8b1997e6e2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-7.c
! 1b3592e301087861b43413e8d32e97fe  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-8.c
! 46d9ccf190a37af9fc1ed98eadd21e46  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_conflict-9.c
! f78bd912542139439bb9e24d6adea4c2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-1.c
! 23e99d9b1e6b47cbc0012896e02e238b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-10.c
! f59700762e870033ce466a0724dc4141  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-11.c
! 66ba57265165c282a44b9b81a4b4ad10  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-12.c
! 7f62e352004ce8061dca995a19b9125f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-13.c
! e117dde564ac3f30ad57d13b5daee14a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-14.c
! ac05202d149ff33f2ba60edda3fe573c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-15.c
! 1424b0a396f5409f2ab7b21006dd2704  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-16.c
! d1ef0179b7f39b3973ee7adf0aa2dfc1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-17.c
! b164f37b05cc15fa39727f2d993c4a13  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-18.c
! dfb61ee7f0906348d6c507262c979008  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-19.c
! ed90d2b46de417f2dc7f288673b3b51e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-2.c
! e90765657fa8c10901271bfb2edf20ee  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-20.c
! 1ef491ff1f4ebb2e6af432fc63f8f942  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-21.c
! 15971fceae15efd7622688f214098f13  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-22.c
! 3c3a0c065837dfa0382faaa378939d78  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-23.c
! 63ce4271abdf181b29b537cd5bbddeea  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-24.c
! 37ea225940848dbf835eaf2f3009da73  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-25.c
! c8fbc002dfef7a21a2dc26d376c7fac5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-26.c
! 8e3b06124d0106ac7949d1603d3e8a7e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-27.c
! 249ea335a3ac1a873d5aea68799673ed  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-28.c
! 3d4c10191ede95bb0c98f555fa07ee52  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-3.c
! 44769c94703b1dd2edcda246e6ecfcfd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-4.c
! 212f7f50595cb63c0919ecc4fb86548c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-5.c
! 0b92627084046d669ca5eb64689219a9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-6.c
! cc043a022454ce87c9549cd50bd0334d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-7.c
! 29b85241523b8b81092e4ff644074764  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-8.c
! 7f5f96c55c3c22161ecc6669648952f4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_miss_default-9.c
! 60e6218a82ea5142d1ff079fc76129e1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-1.c
! 766e5bc7d8691ed8dfb49631668a643a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-10.c
! 81b0bed149aee0afd27a0663697bd3d0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-11.c
! cf90063e564c2b0a5e9f46fb0026bceb  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-12.c
! 971f81f064434956f6a9f0fe75326989  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-13.c
! 563e37f01d8d5aee827504b257951aa1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-14.c
! 459646711166306114e88f0717f43648  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-15.c
! 8a55194fde4dc59d241d1eaf951f9658  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-16.c
! 160cc154213745467c7c79323c87aa5a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-17.c
! 72cdc2a7ee6dc8236fbd31abee7006ff  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-18.c
! 3223d3cf5c461b59ce813708215f9826  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-19.c
! cdfe07df0d0c3474f80d8fdce3e385ed  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-2.c
! 2a795d42ef3cb0b4133d9f409e2e8aa9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-20.c
! e6492c97c6166c28cfe4cf6456b6dd93  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-21.c
! 2c1dfe1d72236c533fad138b8338899e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-22.c
! 985ce9a1c1eed62103cfc2a063760e2d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-23.c
! c8216bbbc91ca41e9c21ae7b70955aa6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-24.c
! 9c3aefa1ae84dd887cd05a2e0d10db5a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-25.c
! 2ff09e6124bc748166decbe1745d0bb6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-26.c
! 34e8b07b04f46d7d615e0d3c51d95988  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-27.c
! 840188e9ab79bdf08082c103d725d8bc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-28.c
! 3a556e4e123480d5798f7f479a51e32a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-3.c
! d584deac4a95061cab6fded33354ebbe  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-4.c
! a97de7171f92727c46c1c9c9023ff4c9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-5.c
! 91a35cc7812bc31a4d7709f66436bc25  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-6.c
! adf8f6df9d317a04a647ffaf041902ec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-7.c
! f4e883ce284b712207ec47d2b1e8a38a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-8.c
! 7c76b9dd766796a1560564601209d0f1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_phi-9.c
! 8c92afd2f3d0dbafd1db07b8e5f8a899  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-1.c
! 58185326ab54f7d13167328702bc5956  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-10.c
! 3e774c1f98b33e1eda2b6f6296e8eff9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-11.c
! ac043e42f598b86d17513c00fb064dc0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-12.c
! 634512930e4b8673448ebd057c52e0b7  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-13.c
! 73c51a5e09892a0121bdb373614c8fd6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-14.c
! 728225c66c25b07224cff304aafaf0cc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-15.c
! 2f6d619c2abd649a50171611b480d909  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-16.c
! 2373bc80ae131cc5a490e75078c78cba  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-17.c
! e0209b44ca29b4e4ff39e1862e684bd9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-18.c
! 405a0f325ae18704a767b4decdbb0526  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-19.c
! 69e9305a9c663dac50cb2ac7a8aec424  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-2.c
! c3b5e289b24000bb8f0c7c4469121de9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-3.c
! 4e8cbcd30720b9d86550b11e7d71a872  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-4.c
! 58d79e61b152fee4e4b5cadf1c5652ba  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-5.c
! f852fb0b7e1e2d40822dd0246aca2744  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-6.c
! 8863c7b758e5897a3583bed8b041da96  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-7.c
! 0ecd92f64846284c1a580255daad0973  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-8.c
! 5749c2cdbc1fea4dc75057c7370aca22  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_block-9.c
! 6ec110f0f3b835cf95d6087ba4c644af  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-1.c
! 5e9c535e74d910e2ab23b533720ab3a1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-2.c
! 13f627d0676c308aec09bfda670db0f8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-3.c
! f2f2e11130ba0fe28b21838c88178c45  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-4.c
! 2ff423ab1800917ecb8afdbe81a0f4fe  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-5.c
! 3b50c912c07abd3b4c445745eafdf436  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-6.c
! b26000e9c0a5bb541868bbef1474f436  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-7.c
! 8c88e1985650733d1d4dbeee25d1c161  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_single_vtype-8.c
! 9d0fb17ce60b9fcd224dcd8b2013e1d9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-1.c
! 2578d0a153a4140d44d7d11482178d62  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-10.c
! 5c5fb8c6cc3dd7fe6ed1ed9c07afa635  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-11.c
! e28b3ffa46225b818e1a02acc5fdb8b7  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-12.c
! 52459ca489398dc10434def9c200a56a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-13.c
! 2d66afd9c448f735c7677ec46172bd6b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-14.c
! 614fc2d7a8da25c8d56c5e81c331677c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-15.c
! 5e205a0bb7eebd9477ad944ab5f580ec  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-16.c
! 672232e2a88ca96b6865a7cef6e30a9a  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-2.c
! 70ef5c4f8b5ef06345cd1d6648ed1b5b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-3.c
! c595191ca3cf0334e24eb76663819cf6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-4.c
! c595191ca3cf0334e24eb76663819cf6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-5.c
! db6df5dcb43e00a72a21a975269f78dd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-6.c
! 4d8f7e4e2d1982d7a261d11693713291  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-7.c
! e0642f45de21c682c835326574f4af73  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-8.c
! e0642f45de21c682c835326574f4af73  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vlmax_switch_vtype-9.c
! b58923db12984b032da500569f3e9608  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-1.c
! 8dbce6c07ab27566e362127d76f4ec3b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-10.c
! fc9ffbceb45276433055433ab5cccde8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-11.c
! fb343d69256d9274eb511b85996546af  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-12.c
! 64d1caf7783d2723279ff0b447e164a8  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-13.c
! ccb05320657ad1b5e3ab01e083b8c4a0  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-14.c
! 9a338213e599cd912b8f8651dd0d5a5d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-15.c
! 68ac7bcac2a0fe0258e44bfdf7d7744d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-16.c
! 42a702274fbb00e6f24a58040da10596  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-17.c
! d35453338039c171b25f8fbac411f023  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-18.c
! 95016986740f6105b4170ba180de3f5e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-19.c
! 1bec3794c657d6e37a19e6916a0cc453  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-2.c
! 907ee14805809864e49ba4e89fdff507  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-20.c
! 7ea20a959dae59f4ea42c25acfe09c7b  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-3.c
! 86a36c3856d47f9bc8d6faa45301210c  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-4.c
! b3a8d3baaacfd44c7be817dce26936fc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-5.c
! 18a55800c38a323938308baad4dcb2c1  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-6.c
! 053f99474f5703428adbe8504fef4d98  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-7.c
! 4d0028da0a021add7d87a6b11853fd79  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-8.c
! c6c2a079ad0777dfb406f3bc0ddfc0bc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvl-9.c
! aa81391fc854ad47770a38a28d058507  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-1.c
! d1e3c702d09d49be6ad72763837f11e2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-10.c
! 533e34a62a9e27447702177df5f1bb93  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-11.c
! 9a8bac58c40685805a29881f29521bbd  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-12.c
! 25e2a0e1e539ee146a4a79ccfa0994ca  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-13.c
! 8b3c7ee37e5529b7ac73dfffafdd763e  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-14.c
! aceea3b8111b8a3217df3cc3b361af30  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-15.c
! 83ccb19e7d37ab2cc6d311bfca3242f2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-16.c
! 75a834de6cdf18b939b4be0dffff9fe4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-17.c
! b03b6b1a414d3cfd938a9571d381faee  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-18.c
! 451ac88183eb65e5a95f5acbef6ed959  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-19.c
! e19ce86bf9d3ed75b1dfbe415ab052bc  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-2.c
! 7ba004379b11477bd041d22935c65ff9  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-20.c
! 3172223a8bccaf65edbbcfce4ed6115f  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-3.c
! 32684c2ed3248afb813730a093cd2ca6  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-4.c
! 0e31fa4843c79c3ccbd113e156fad449  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-5.c
! 0b94170e938a6626be3f3d497d25f3f5  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-6.c
! 29b336d6fc945bdebe4205750de2dbd4  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-7.c
! 97deb36eb30d9bceee953355d45ec06d  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-8.c
! d1e3c702d09d49be6ad72763837f11e2  gcc/testsuite/gcc.target/riscv/rvv/vsetvl/vsetvlmax-9.c
  e21250cdea6ea09da525f0119c38ea38  gcc/testsuite/gcc.target/riscv/save-restore-1.c
  d9f3969fcf83beaed59186cbaaa465bf  gcc/testsuite/gcc.target/riscv/save-restore-2.c
  f77ea662d9f85837dacf2e485dc91143  gcc/testsuite/gcc.target/riscv/save-restore-3.c
*************** c08993fb3b1eec219ac8ae53cc03597e  gcc/te
*** 72535,72540 ****
--- 77321,77328 ----
  e235c279f7ce15f9087254bf97918762  gcc/testsuite/gcc.target/riscv/save-restore-7.c
  88dbe500ee71e24bf3a5827524daa6a6  gcc/testsuite/gcc.target/riscv/save-restore-8.c
  ca1e563124a7035c98d86fadbdd1371d  gcc/testsuite/gcc.target/riscv/save-restore-9.c
+ 5fcf0b559c722cc3ed68b1ddfc2e1622  gcc/testsuite/gcc.target/riscv/sge.c
+ af2cd5ac59fa1b5f6b8381db83629b16  gcc/testsuite/gcc.target/riscv/sgeu.c
  763d05548f04a56e951795e6503a810c  gcc/testsuite/gcc.target/riscv/shift-and-1.c
  84c8ae748549dd620b75bf4c20c8571a  gcc/testsuite/gcc.target/riscv/shift-and-2.c
  53aed487d057c50e553501f96767a8e7  gcc/testsuite/gcc.target/riscv/shift-shift-1.c
*************** adeab39fcb6c1ec904288ee86a3fe990  gcc/te
*** 72542,72582 ****
  c362166b82cfd15aece996eccbc64f3b  gcc/testsuite/gcc.target/riscv/shift-shift-3.c
  3fea76f17e317b5f62c76206c3db714b  gcc/testsuite/gcc.target/riscv/shift-shift-4.c
  26ae4f6d79a8e8f5c115859a5a225a5d  gcc/testsuite/gcc.target/riscv/shift-shift-5.c
! 247ec0f1826f2457f2b71b9507d54bd4  gcc/testsuite/gcc.target/riscv/shorten-memrefs-1.c
! 6b93f1ca4993d204a98b0faf05e1b631  gcc/testsuite/gcc.target/riscv/shorten-memrefs-2.c
! ed9df552f948fb7d24fbf78d7c396da3  gcc/testsuite/gcc.target/riscv/shorten-memrefs-3.c
! 91f20599356624f2450c7021221822a6  gcc/testsuite/gcc.target/riscv/shorten-memrefs-4.c
! 5c46af70be0369c6c73358621c699956  gcc/testsuite/gcc.target/riscv/shorten-memrefs-5.c
! 448f79300173857aa9caefb09ddd795e  gcc/testsuite/gcc.target/riscv/shorten-memrefs-6.c
  0f1d841ce46c53b8978fe44320b0b635  gcc/testsuite/gcc.target/riscv/shorten-memrefs-7.c
! 76580e1637275435e3a9a424e9c3789f  gcc/testsuite/gcc.target/riscv/shorten-memrefs-8.c
  3972750143cd7dd650cdab45b716366c  gcc/testsuite/gcc.target/riscv/switch-qi.c
  55b7a5fbbc21abad8b24fc94d7adf9c6  gcc/testsuite/gcc.target/riscv/switch-si.c
  76005de0a7c1ca66b1b06de3c53ad1c2  gcc/testsuite/gcc.target/riscv/weak-1.c
  19ac4192707a6577469d125431cdefc9  gcc/testsuite/gcc.target/riscv/zba-adduw.c
  439000b8b977f80aaf4001f0df2a2708  gcc/testsuite/gcc.target/riscv/zba-shNadd-01.c
  91eb944f291436f0dbc28f8582caf85f  gcc/testsuite/gcc.target/riscv/zba-shNadd-02.c
  80c06090d5b9372e4d3b24414a3ac481  gcc/testsuite/gcc.target/riscv/zba-shNadd-03.c
  1b8636944ff925cb64365451c0156358  gcc/testsuite/gcc.target/riscv/zba-slliuw.c
  fc7c6281b4cedac153ced742d0cc8c5b  gcc/testsuite/gcc.target/riscv/zba-zextw.c
  0ee4c750d9a61f375588a40c48b04e98  gcc/testsuite/gcc.target/riscv/zbb-andn-orn-xnor-01.c
  d5b3992f3e13d5bd291fe4479a1fadb6  gcc/testsuite/gcc.target/riscv/zbb-andn-orn-xnor-02.c
  35227b696f49eef2ddac0862665d9ab2  gcc/testsuite/gcc.target/riscv/zbb-li-rotr.c
  3471a95bcdebb938d770978eb8d08add  gcc/testsuite/gcc.target/riscv/zbb-min-max.c
  dbd02e997494852a8425da306f93f58d  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-01.c
  c0698d5adec3f1300d17232a8da78e04  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-02.c
  e90eca75db4a4b2cfc5144938f3e1327  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-03.c
  7d738998e5e4d1a51d6b8f5227d896ef  gcc/testsuite/gcc.target/riscv/zbbw.c
  c271e5b072a3646600a1899a96adda89  gcc/testsuite/gcc.target/riscv/zbs-bclr.c
! 1bea53e355bb7cbbf1ab855fa6e83c7d  gcc/testsuite/gcc.target/riscv/zbs-bext.c
  f0758d2a3ccffebc00b0ad5385022ac8  gcc/testsuite/gcc.target/riscv/zbs-binv.c
  e09110fde228f69b253ac5e753d43601  gcc/testsuite/gcc.target/riscv/zbs-bset.c
  cedf31a83e340f11dc6b347811079ad3  gcc/testsuite/gcc.target/riscv/zero-extend-1.c
  3ae98dfd4e99f1110956db75e0a6b5b2  gcc/testsuite/gcc.target/riscv/zero-extend-2.c
  f6a8c03b002394bdd304c26e43d03f83  gcc/testsuite/gcc.target/riscv/zero-extend-3.c
  a160364612bb7f4e7091db81877266a6  gcc/testsuite/gcc.target/riscv/zero-extend-4.c
  1c7cc4d79a825451f95eba8f7d7c7979  gcc/testsuite/gcc.target/riscv/zero-extend-5.c
! 7488cf4440e70fec6e229ebdc3964bfa  gcc/testsuite/gcc.target/rl78/rl78.exp
  08a6a665d3a592b70dd51e3b59945801  gcc/testsuite/gcc.target/rl78/test_addm3.c
  f0737b5115c4a94dc1b2f670de5d83a4  gcc/testsuite/gcc.target/rl78/test_addsi3_internal.c
  77b20d827a48683a5d34b36224891ead  gcc/testsuite/gcc.target/rl78/test_auto_vector.c
--- 77330,77457 ----
  c362166b82cfd15aece996eccbc64f3b  gcc/testsuite/gcc.target/riscv/shift-shift-3.c
  3fea76f17e317b5f62c76206c3db714b  gcc/testsuite/gcc.target/riscv/shift-shift-4.c
  26ae4f6d79a8e8f5c115859a5a225a5d  gcc/testsuite/gcc.target/riscv/shift-shift-5.c
! d42b5158196a609204cd9c4e3de58825  gcc/testsuite/gcc.target/riscv/shorten-memrefs-1.c
! 94457781ee5b39939d4c674c305c370b  gcc/testsuite/gcc.target/riscv/shorten-memrefs-2.c
! 1b41375720582a9c2434a6eee6651b62  gcc/testsuite/gcc.target/riscv/shorten-memrefs-3.c
! 0158a4e90058684623a3d0a25d50f0ef  gcc/testsuite/gcc.target/riscv/shorten-memrefs-4.c
! 8a88c2df3cfb9db345c5470a49f81e6d  gcc/testsuite/gcc.target/riscv/shorten-memrefs-5.c
! 98c83ba3b448e8be3a69620427e8a37b  gcc/testsuite/gcc.target/riscv/shorten-memrefs-6.c
  0f1d841ce46c53b8978fe44320b0b635  gcc/testsuite/gcc.target/riscv/shorten-memrefs-7.c
! 526aa694599c53f8e5558561bb574f68  gcc/testsuite/gcc.target/riscv/shorten-memrefs-8.c
! 6727bdb2e2678b27aa57ae036e6b5fc1  gcc/testsuite/gcc.target/riscv/shrink-wrap-1.c
! 0b526a98245be580ee7d193c02518cef  gcc/testsuite/gcc.target/riscv/sle.c
! e7323b2b75e72558319fae931cfdda03  gcc/testsuite/gcc.target/riscv/sleu.c
! d608fda58ecfa5f38d79844092b2d72b  gcc/testsuite/gcc.target/riscv/smax-ieee.c
! 86c31544a16504a7d32260ca07621420  gcc/testsuite/gcc.target/riscv/smax.c
! 37b5905987c616f527ac3903de4087d2  gcc/testsuite/gcc.target/riscv/smaxf-ieee.c
! cdb04f31d6f1fa2cacb8ccae467880f3  gcc/testsuite/gcc.target/riscv/smaxf.c
! 6491227f708566c72ff2e98b3e93fbe1  gcc/testsuite/gcc.target/riscv/smin-ieee.c
! 55464a1a60268f3df9e4c34893965e56  gcc/testsuite/gcc.target/riscv/smin.c
! bf516e9bbbbdc21ceb500364ab88aad0  gcc/testsuite/gcc.target/riscv/sminf-ieee.c
! ff5bbc31f569f4e1b8286fe3e8f4153b  gcc/testsuite/gcc.target/riscv/sminf.c
! 303e1468981b64cf07461158b0ab0649  gcc/testsuite/gcc.target/riscv/stack_frame.c
  3972750143cd7dd650cdab45b716366c  gcc/testsuite/gcc.target/riscv/switch-qi.c
  55b7a5fbbc21abad8b24fc94d7adf9c6  gcc/testsuite/gcc.target/riscv/switch-si.c
  76005de0a7c1ca66b1b06de3c53ad1c2  gcc/testsuite/gcc.target/riscv/weak-1.c
+ 2d691bec54eef9c713895ac9abe32620  gcc/testsuite/gcc.target/riscv/xtheadba-addsl.c
+ 54b82844aaf37fd430066617d6750fd9  gcc/testsuite/gcc.target/riscv/xtheadba.c
+ d6824daffe31d00a07a7cb3cb5b257c2  gcc/testsuite/gcc.target/riscv/xtheadbb-ext.c
+ 9d2923e1d7956aeb5deea4e6098068f9  gcc/testsuite/gcc.target/riscv/xtheadbb-extu-2.c
+ 18bf00eaf91110854f5b47075e205cbb  gcc/testsuite/gcc.target/riscv/xtheadbb-extu.c
+ 262700746898b570786f228c90322509  gcc/testsuite/gcc.target/riscv/xtheadbb-ff1.c
+ 169a6e9cb637657f3fc29f50fb2a13bc  gcc/testsuite/gcc.target/riscv/xtheadbb-rev.c
+ 48788b4cde5085faf12957bf7364a13e  gcc/testsuite/gcc.target/riscv/xtheadbb-srri.c
+ 30b6b86c72b50b5009c84b75a6ab69a3  gcc/testsuite/gcc.target/riscv/xtheadbb.c
+ 65e3e8aa7a88041b453481c31ffed53c  gcc/testsuite/gcc.target/riscv/xtheadbs-tst.c
+ 102389a933d684c925ecec62569a69c2  gcc/testsuite/gcc.target/riscv/xtheadbs.c
+ 50ebd93dcdfb49f0931558b1c9d21ddd  gcc/testsuite/gcc.target/riscv/xtheadcmo.c
+ 77ef52d87137d9e77d956c9205dd2126  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mveqz-imm-eqz.c
+ 7d8be1ecc98c674514075384be18b540  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mveqz-imm-not.c
+ 1a46fb815d1b5dcb5e09d8719edeb276  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mveqz-reg-eqz.c
+ 824e5a3fa36d95af3832cf3c7d7e9e87  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mveqz-reg-not.c
+ 36eb2d0e1878afaf61c196dab07bdf56  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mvnez-imm-cond.c
+ a314bc7b47a1eda9b35dd5c0d361a377  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mvnez-imm-nez.c
+ 6ee04229c4e2692cb11afba0245d03c1  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mvnez-reg-cond.c
+ f17f6a9f3a28a01ec315225c18fb6696  gcc/testsuite/gcc.target/riscv/xtheadcondmov-mvnez-reg-nez.c
+ f2c416b6cefa9ac63f5d481183500a2c  gcc/testsuite/gcc.target/riscv/xtheadcondmov.c
+ 03839d5e6793550acc5cddbced7a893b  gcc/testsuite/gcc.target/riscv/xtheadfmemidx.c
+ 292e0d19747c08f0a9c14ce0cc86b3e0  gcc/testsuite/gcc.target/riscv/xtheadfmv-fmv.c
+ f91daca70f2be1f59ba90d0c6916cbea  gcc/testsuite/gcc.target/riscv/xtheadfmv.c
+ e0136fcfa899b2967ab2825bdd9bebd3  gcc/testsuite/gcc.target/riscv/xtheadint.c
+ 2d63440eb714b01d9365d08a0670b2a0  gcc/testsuite/gcc.target/riscv/xtheadmac-mula-muls.c
+ 12da50bd6059b158d45821fea71d8e3e  gcc/testsuite/gcc.target/riscv/xtheadmac.c
+ 4017c3d0a9aaad74e9729cf9022d8314  gcc/testsuite/gcc.target/riscv/xtheadmemidx.c
+ 73d7049a35fb8a305c5e87efe1790c7a  gcc/testsuite/gcc.target/riscv/xtheadmempair-1.c
+ b2ee48debb8260ca43eae7a7599d100f  gcc/testsuite/gcc.target/riscv/xtheadmempair-2.c
+ 68468a87437dcca3d624d91ab036dbfb  gcc/testsuite/gcc.target/riscv/xtheadmempair-3.c
+ df429bd7726fa8df9524022ce272a6b9  gcc/testsuite/gcc.target/riscv/xtheadmempair.c
+ ac71bb928660a9e6d22ba4f78a7ad0b8  gcc/testsuite/gcc.target/riscv/xtheadsync.c
+ 0b05ec64bbcb660023a075a936d4ece6  gcc/testsuite/gcc.target/riscv/zawrs.c
  19ac4192707a6577469d125431cdefc9  gcc/testsuite/gcc.target/riscv/zba-adduw.c
  439000b8b977f80aaf4001f0df2a2708  gcc/testsuite/gcc.target/riscv/zba-shNadd-01.c
  91eb944f291436f0dbc28f8582caf85f  gcc/testsuite/gcc.target/riscv/zba-shNadd-02.c
  80c06090d5b9372e4d3b24414a3ac481  gcc/testsuite/gcc.target/riscv/zba-shNadd-03.c
+ 3c9d94ddfcfae97abd4d5ffece4e122d  gcc/testsuite/gcc.target/riscv/zba-shNadd-04.c
+ 1456e0b644560b4d55a604c8032c331b  gcc/testsuite/gcc.target/riscv/zba-shNadd-05.c
+ f73a8a79af831fbaafde15c511033527  gcc/testsuite/gcc.target/riscv/zba-shNadd-07.c
+ da20df00924c672e61656946641d3cf9  gcc/testsuite/gcc.target/riscv/zba-shadd.c
  1b8636944ff925cb64365451c0156358  gcc/testsuite/gcc.target/riscv/zba-slliuw.c
  fc7c6281b4cedac153ced742d0cc8c5b  gcc/testsuite/gcc.target/riscv/zba-zextw.c
  0ee4c750d9a61f375588a40c48b04e98  gcc/testsuite/gcc.target/riscv/zbb-andn-orn-xnor-01.c
  d5b3992f3e13d5bd291fe4479a1fadb6  gcc/testsuite/gcc.target/riscv/zbb-andn-orn-xnor-02.c
  35227b696f49eef2ddac0862665d9ab2  gcc/testsuite/gcc.target/riscv/zbb-li-rotr.c
+ 45885c6ba1a9f22cb19561f56454a0d2  gcc/testsuite/gcc.target/riscv/zbb-min-max-02.c
+ b84bccfa6cff888d65dad4e7ae75c175  gcc/testsuite/gcc.target/riscv/zbb-min-max-03.c
  3471a95bcdebb938d770978eb8d08add  gcc/testsuite/gcc.target/riscv/zbb-min-max.c
  dbd02e997494852a8425da306f93f58d  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-01.c
  c0698d5adec3f1300d17232a8da78e04  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-02.c
  e90eca75db4a4b2cfc5144938f3e1327  gcc/testsuite/gcc.target/riscv/zbb-rol-ror-03.c
+ 53a2faccaffa79bae9f2f156bcae935f  gcc/testsuite/gcc.target/riscv/zbb-srai-andn.c
+ 7756d0af1a1119b1fa9aa8faec4da8b9  gcc/testsuite/gcc.target/riscv/zbb_32_bswap-1.c
+ 39ef554d034a8e6aba860abc725b9d58  gcc/testsuite/gcc.target/riscv/zbb_32_bswap-2.c
+ 63b09ea6f8bf81eb8e856c702c2e9ca0  gcc/testsuite/gcc.target/riscv/zbb_bswap-1.c
+ d33ea9cc2e114af44aae6652d2210bfc  gcc/testsuite/gcc.target/riscv/zbb_bswap-2.c
  7d738998e5e4d1a51d6b8f5227d896ef  gcc/testsuite/gcc.target/riscv/zbbw.c
+ 0c868e3bd75a58cf8f904a75eb1345b6  gcc/testsuite/gcc.target/riscv/zbkb32.c
+ ebef3725a72134d3514be45679ea336c  gcc/testsuite/gcc.target/riscv/zbkb64.c
+ b2f59ea1f7b933f41117edb155b8c605  gcc/testsuite/gcc.target/riscv/zbkc32.c
+ 74a98e8a064641ef49a64a422f9f20e9  gcc/testsuite/gcc.target/riscv/zbkc64.c
+ 78533d8f1d7b64f8ed743d3357ff2612  gcc/testsuite/gcc.target/riscv/zbkx32.c
+ 4d15fd60246f69fc0dbbbdf91aebb2d5  gcc/testsuite/gcc.target/riscv/zbkx64.c
  c271e5b072a3646600a1899a96adda89  gcc/testsuite/gcc.target/riscv/zbs-bclr.c
! e2542c8640613e3201b12054d45b3722  gcc/testsuite/gcc.target/riscv/zbs-bclri-01.c
! e4f42bd193de17a97d6ba4d7cf10116f  gcc/testsuite/gcc.target/riscv/zbs-bclri-02.c
! 3028537c946eb01b7931710cc79fbc17  gcc/testsuite/gcc.target/riscv/zbs-bext.c
! 654584dc55d2bdd02192a295a812c13a  gcc/testsuite/gcc.target/riscv/zbs-bexti.c
  f0758d2a3ccffebc00b0ad5385022ac8  gcc/testsuite/gcc.target/riscv/zbs-binv.c
+ 87813769727061c534ee40846fe5d329  gcc/testsuite/gcc.target/riscv/zbs-binvi.c
  e09110fde228f69b253ac5e753d43601  gcc/testsuite/gcc.target/riscv/zbs-bset.c
+ 71ca7967e6cbba3fc34380193ec89519  gcc/testsuite/gcc.target/riscv/zbs-bseti-02.c
+ c237dae5bf595d65ee7877fe44bac195  gcc/testsuite/gcc.target/riscv/zbs-bseti.c
+ 3fac61bb61fec1ea6a5b2dc959359036  gcc/testsuite/gcc.target/riscv/zbs-extra-bit-or-twobits.c
+ 19debc3a04e1393764efad7ab43274c1  gcc/testsuite/gcc.target/riscv/zbs-if_then_else-01.c
  cedf31a83e340f11dc6b347811079ad3  gcc/testsuite/gcc.target/riscv/zero-extend-1.c
  3ae98dfd4e99f1110956db75e0a6b5b2  gcc/testsuite/gcc.target/riscv/zero-extend-2.c
  f6a8c03b002394bdd304c26e43d03f83  gcc/testsuite/gcc.target/riscv/zero-extend-3.c
  a160364612bb7f4e7091db81877266a6  gcc/testsuite/gcc.target/riscv/zero-extend-4.c
  1c7cc4d79a825451f95eba8f7d7c7979  gcc/testsuite/gcc.target/riscv/zero-extend-5.c
! 649eab595a8e0cf00b90212069e14aec  gcc/testsuite/gcc.target/riscv/zero-scratch-regs-1.c
! 54271b2260f78e9b7d17ee70595a38bc  gcc/testsuite/gcc.target/riscv/zero-scratch-regs-2.c
! 80fcf7a7c999249b3576e7615985ca93  gcc/testsuite/gcc.target/riscv/zero-scratch-regs-3.c
! 36eb8a9a469819efe7c919a69161508a  gcc/testsuite/gcc.target/riscv/zknd32.c
! 51ee2ea7f509fbe1ebfcc5f8a0255bdf  gcc/testsuite/gcc.target/riscv/zknd64.c
! ef5afe3a5291c258bd59a8c19717e8b4  gcc/testsuite/gcc.target/riscv/zkne32.c
! 12368bf4cf5f47116e09a96903450d88  gcc/testsuite/gcc.target/riscv/zkne64.c
! db0207e6dd0e5c5a2221af371eb34452  gcc/testsuite/gcc.target/riscv/zknh-sha256.c
! 90d0ab53a787702b98e89c4def82c006  gcc/testsuite/gcc.target/riscv/zknh-sha512-32.c
! 4ed8eef1debded2cb3c914f4ac9d9cde  gcc/testsuite/gcc.target/riscv/zknh-sha512-64.c
! 8357876cd3bbb3c59ae634a32d27a40c  gcc/testsuite/gcc.target/riscv/zksed32.c
! daaba3894d8efe5a457dd2aacc88f30a  gcc/testsuite/gcc.target/riscv/zksed64.c
! 11d2e37d299f0dc904a80fb602abc72a  gcc/testsuite/gcc.target/riscv/zksh32.c
! 7ea067c2a7e725042b169677b6faab8e  gcc/testsuite/gcc.target/riscv/zksh64.c
! 14c4df6783e1a9e600cb33add7f5b299  gcc/testsuite/gcc.target/riscv/zmmul-1.c
! 9259888aac8963bae4c1bf39b62b9034  gcc/testsuite/gcc.target/riscv/zmmul-2.c
! bb600d438f516c03c1d3afac705ee50f  gcc/testsuite/gcc.target/rl78/rl78.exp
  08a6a665d3a592b70dd51e3b59945801  gcc/testsuite/gcc.target/rl78/test_addm3.c
  f0737b5115c4a94dc1b2f670de5d83a4  gcc/testsuite/gcc.target/rl78/test_addsi3_internal.c
  77b20d827a48683a5d34b36224891ead  gcc/testsuite/gcc.target/rl78/test_auto_vector.c
*************** f0737b5115c4a94dc1b2f670de5d83a4  gcc/te
*** 72589,72602 ****
  1854cae6bc69cd8d1d547a850a4e43f0  gcc/testsuite/gcc.target/rx/packed-struct.c
  c141239c428d6f6e368356cbbd1dcdb7  gcc/testsuite/gcc.target/rx/pr83831.c
  853c27a897cefbe98ebdbb934bbedef0  gcc/testsuite/gcc.target/rx/rx-abi-function-tests.c
! 5fa4c98dc47af8168f16cfecba29173c  gcc/testsuite/gcc.target/rx/rx.exp
  e718c4f5bac79651adb4d0396b231953  gcc/testsuite/gcc.target/rx/zero-width-bitfield.c
  2326486bbdc13fa6e49aadd508a1be61  gcc/testsuite/gcc.target/s390/20020926-1.c
  5f66a42e5c40df26aab6aad04c3794e3  gcc/testsuite/gcc.target/s390/20030123-1.c
  bfbcb40f434922a438420abc293e4a1e  gcc/testsuite/gcc.target/s390/20030129-1.c
  53b04422f85cb2fd7dedf7e13f61cb29  gcc/testsuite/gcc.target/s390/20040305-1.c
  ef11ebec6d8d569864e6c1176c702646  gcc/testsuite/gcc.target/s390/20041109-1.c
- ca38ac6e4b1978c0176e6665ec565e13  gcc/testsuite/gcc.target/s390/20041216-1.c
  676a0fd188876d507340688ee2dfcc1b  gcc/testsuite/gcc.target/s390/20050409-1.c
  ee05c824cd4a82ab77049eb9faf0e4fc  gcc/testsuite/gcc.target/s390/20050524-1.c
  c975117f4dad5f7d006165a64d22ff94  gcc/testsuite/gcc.target/s390/20050824-1.c
--- 77464,77476 ----
  1854cae6bc69cd8d1d547a850a4e43f0  gcc/testsuite/gcc.target/rx/packed-struct.c
  c141239c428d6f6e368356cbbd1dcdb7  gcc/testsuite/gcc.target/rx/pr83831.c
  853c27a897cefbe98ebdbb934bbedef0  gcc/testsuite/gcc.target/rx/rx-abi-function-tests.c
! 76f826b2ad9567299a4d7d92f48bed81  gcc/testsuite/gcc.target/rx/rx.exp
  e718c4f5bac79651adb4d0396b231953  gcc/testsuite/gcc.target/rx/zero-width-bitfield.c
  2326486bbdc13fa6e49aadd508a1be61  gcc/testsuite/gcc.target/s390/20020926-1.c
  5f66a42e5c40df26aab6aad04c3794e3  gcc/testsuite/gcc.target/s390/20030123-1.c
  bfbcb40f434922a438420abc293e4a1e  gcc/testsuite/gcc.target/s390/20030129-1.c
  53b04422f85cb2fd7dedf7e13f61cb29  gcc/testsuite/gcc.target/s390/20040305-1.c
  ef11ebec6d8d569864e6c1176c702646  gcc/testsuite/gcc.target/s390/20041109-1.c
  676a0fd188876d507340688ee2dfcc1b  gcc/testsuite/gcc.target/s390/20050409-1.c
  ee05c824cd4a82ab77049eb9faf0e4fc  gcc/testsuite/gcc.target/s390/20050524-1.c
  c975117f4dad5f7d006165a64d22ff94  gcc/testsuite/gcc.target/s390/20050824-1.c
*************** c5136e0bb58277988b6c8fb48db7921f  gcc/te
*** 72644,72649 ****
--- 77518,77524 ----
  1d597c2c76602bea7e4683b7c43d63ab  gcc/testsuite/gcc.target/s390/dwarfregtable-1.c
  3df32b127f6505d5afe3b8ea351491f1  gcc/testsuite/gcc.target/s390/dwarfregtable-2.c
  e4935aebfbac92efa594724b44e77822  gcc/testsuite/gcc.target/s390/dwarfregtable-3.c
+ a726659c2ae1fb309562a9b72e3c2160  gcc/testsuite/gcc.target/s390/fcall-saved.c
  b76aabe27bc8e57b089f23dadbb05795  gcc/testsuite/gcc.target/s390/float_t-1.c
  893bc834068fdeaf65a05649de7ee1a1  gcc/testsuite/gcc.target/s390/float_t-2.c
  9d34a3245581ff3208ddbda615ef6617  gcc/testsuite/gcc.target/s390/flogr-1.c
*************** b4b351f743f85d6222579341377c02c8  gcc/te
*** 72713,72723 ****
  def4a5321d04b176ac0db1488fdbec1b  gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c
  b3dd05db76a00a764bd5968152b2ef72  gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
  81eabdfd43ce0edc626c27f72b8cbfed  gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c
! cee6dc33f1adf8eae8308b4a853a7686  gcc/testsuite/gcc.target/s390/ifcvt-one-insn-bool.c
! ea304d4ba7ef6c195eb09c6993c50064  gcc/testsuite/gcc.target/s390/ifcvt-one-insn-char.c
! 851c22c4fd4ac9fa8f3330da80acfb9c  gcc/testsuite/gcc.target/s390/ifcvt-two-insns-bool.c
! 05c9da37698402929c07c483123e9e91  gcc/testsuite/gcc.target/s390/ifcvt-two-insns-int.c
! ff50c413e44f37b768bf41c7f7d0b616  gcc/testsuite/gcc.target/s390/ifcvt-two-insns-long.c
  404116fb6b10d4fe3544c0e8e39a1204  gcc/testsuite/gcc.target/s390/insv-1.c
  7361c2c610e646df57c6d91b57e4689e  gcc/testsuite/gcc.target/s390/insv-2.c
  baa6d1c3d77baf7c1324df7bb6f4f40c  gcc/testsuite/gcc.target/s390/insv-3.c
--- 77588,77598 ----
  def4a5321d04b176ac0db1488fdbec1b  gcc/testsuite/gcc.target/s390/htm-builtins-z13-1.c
  b3dd05db76a00a764bd5968152b2ef72  gcc/testsuite/gcc.target/s390/htm-nofloat-1.c
  81eabdfd43ce0edc626c27f72b8cbfed  gcc/testsuite/gcc.target/s390/htm-nofloat-compile-1.c
! f97bcab06113197e41c92343b7c72115  gcc/testsuite/gcc.target/s390/ifcvt-one-insn-bool.c
! d94841af420f4745c433040de2753088  gcc/testsuite/gcc.target/s390/ifcvt-one-insn-char.c
! 2b6e27fb8c269454cda4b9124b0e9469  gcc/testsuite/gcc.target/s390/ifcvt-two-insns-bool.c
! 0336e88917e98f4a57628237772223ba  gcc/testsuite/gcc.target/s390/ifcvt-two-insns-int.c
! 54fc6c42e5cde795a04a012e14c9f842  gcc/testsuite/gcc.target/s390/ifcvt-two-insns-long.c
  404116fb6b10d4fe3544c0e8e39a1204  gcc/testsuite/gcc.target/s390/insv-1.c
  7361c2c610e646df57c6d91b57e4689e  gcc/testsuite/gcc.target/s390/insv-2.c
  baa6d1c3d77baf7c1324df7bb6f4f40c  gcc/testsuite/gcc.target/s390/insv-3.c
*************** dfee7fa2ec55ccfb935c28226ca15fe3  gcc/te
*** 72789,72799 ****
--- 77664,77679 ----
  562f1ca03435b8b1feb13adcaaa3be2c  gcc/testsuite/gcc.target/s390/nodatarel-1.c
  7ea6fcf7afbdc4bcd57407e5299e712a  gcc/testsuite/gcc.target/s390/nolrl-1.c
  d5b2bba665576dc0538f9d0bd2142e62  gcc/testsuite/gcc.target/s390/nomemloopunroll-1.c
+ 8ed627b3bfa707f445d4ba3ae1d9c812  gcc/testsuite/gcc.target/s390/not.c
  40f68b40c79861c5702abc1940423c1b  gcc/testsuite/gcc.target/s390/oscbreak-1.c
  25c3bd00fd3d097e42ac8cfc215fd0c4  gcc/testsuite/gcc.target/s390/pfpo.c
  bc7456fc6c1a06bf4e0babad37deb6b4  gcc/testsuite/gcc.target/s390/pr101260.c
  bdf3ebe1c6a408e4efe2845222b3d54d  gcc/testsuite/gcc.target/s390/pr102222.c
  182ebf3677a29bf9b1dbb033505f78dd  gcc/testsuite/gcc.target/s390/pr104775.c
+ b65b6b60679fe5fe589b83fa813950ac  gcc/testsuite/gcc.target/s390/pr106355-1.c
+ 7768189c94023d287d68251021ad2dee  gcc/testsuite/gcc.target/s390/pr106355-2.c
+ a69e5256407f09ac05e2e19ea14c9e15  gcc/testsuite/gcc.target/s390/pr106355-3.c
+ 5680e7515cb52b85f38e10b48d5e6a75  gcc/testsuite/gcc.target/s390/pr106355.h
  765307a040de72f2f4376b7068d68018  gcc/testsuite/gcc.target/s390/pr20927.c
  85f31fb9b4b15529205376d3f6fa385c  gcc/testsuite/gcc.target/s390/pr24624.c
  7adacbd67601dc0845e556e5632cd718  gcc/testsuite/gcc.target/s390/pr27661.c
*************** f4792ece0a0aff8add8968cae67374ad  gcc/te
*** 72835,72840 ****
--- 77715,77723 ----
  f1116dd01874e965a113345275e6310a  gcc/testsuite/gcc.target/s390/pr96456.c
  26a9015200103b2f0617d5672b91a902  gcc/testsuite/gcc.target/s390/pr97497.c
  45d0019f5b3d0e18a69edbc1595f0798  gcc/testsuite/gcc.target/s390/pr99663.c
+ 8d798fcd0d87f17d6c3a8253fb51a8e8  gcc/testsuite/gcc.target/s390/preserve-args-1.c
+ 68221b669a135ab2606b54506cfd7989  gcc/testsuite/gcc.target/s390/preserve-args-2.c
+ d0ba6ce53be2df8464e7d29dec20c450  gcc/testsuite/gcc.target/s390/preserve-args-3.c
  67a78b5542696a9589ecec30f861139d  gcc/testsuite/gcc.target/s390/rawmemchr-1.c
  f9de3c4e9d9e8c3a707e1f51e48901b6  gcc/testsuite/gcc.target/s390/return-addr1.c
  5368e8759352b798ae1db6bc79919aa2  gcc/testsuite/gcc.target/s390/return-addr2.c
*************** c638a86bd5bf24acab1490492cbfb557  gcc/te
*** 72842,72848 ****
  532ff931ad8bf62f60b08b1f9261827a  gcc/testsuite/gcc.target/s390/risbg-ll-2.c
  abd82e72aa14d30ef649fb88b2856d0d  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
  6c330cfc80a0f60d042947448413d011  gcc/testsuite/gcc.target/s390/rotate-truncation-mask.c
! 9c284f058917bc5e1d7e290cc09bf700  gcc/testsuite/gcc.target/s390/s390.exp
  970ac972bfd816dae5f8b5705abd8ab6  gcc/testsuite/gcc.target/s390/section-anchors.c
  2e57c7c23cac49a65eb61077317a2f1b  gcc/testsuite/gcc.target/s390/section-anchors2.c
  78c4d933475e58d55d22ab5b46b27884  gcc/testsuite/gcc.target/s390/section-anchors3.c
--- 77725,77731 ----
  532ff931ad8bf62f60b08b1f9261827a  gcc/testsuite/gcc.target/s390/risbg-ll-2.c
  abd82e72aa14d30ef649fb88b2856d0d  gcc/testsuite/gcc.target/s390/risbg-ll-3.c
  6c330cfc80a0f60d042947448413d011  gcc/testsuite/gcc.target/s390/rotate-truncation-mask.c
! e00763e8b5d7461b62c7efb571facc37  gcc/testsuite/gcc.target/s390/s390.exp
  970ac972bfd816dae5f8b5705abd8ab6  gcc/testsuite/gcc.target/s390/section-anchors.c
  2e57c7c23cac49a65eb61077317a2f1b  gcc/testsuite/gcc.target/s390/section-anchors2.c
  78c4d933475e58d55d22ab5b46b27884  gcc/testsuite/gcc.target/s390/section-anchors3.c
*************** d2fd14017e00d1f811d5387a32f38a98  gcc/te
*** 73026,73031 ****
--- 77909,77940 ----
  4d61dcf9d7172719d7f77c7dc59e50ce  gcc/testsuite/gcc.target/s390/vector/long-double-wfsxb.c
  3ccf7ba1964b2bb29e8b687b6b638ceb  gcc/testsuite/gcc.target/s390/vector/long-double-wftcixb-1.c
  87e5127945063988138f68369e07418f  gcc/testsuite/gcc.target/s390/vector/long-double-wftcixb.c
+ a565e2f8dd12c39ee081427f9a742ed8  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-1.h
+ 7172609cf3d7574fd601ded9003eb60a  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-2.h
+ cacde4c297655c59e5767214d140056f  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-3.h
+ abd57b1682e8716a3218094c4bf9cec3  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-7.h
+ 10f763f49843594082ed6e111541f3e2  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-1.c
+ 19c597446cfa4da344ac547d6a3bdf70  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-2.c
+ d33abdd465f4209f0414de05c349653b  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-3.c
+ 9d2e1ee2a40fbfb5a57d6cbd45168c07  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-7.c
+ e770b34dbf363215a6051b789b90e974  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-1.c
+ 53dddd9b047a3df2392779a3764037db  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-2.c
+ 153d8a228586550504c014bd06484f1a  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-3.c
+ ada2b9b2b8df0cfdabaf20b41b0a65f0  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-epil-run-7.c
+ bc45cc7c4b51be2f491414209559c220  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-1.c
+ c4bfbd8958774aa5955cf3a6c8f5fb77  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-2.c
+ c35cbcfe48dc273d14940b790bb3ff09  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-3.c
+ 8b0615e73a71f47e5f535d17ded839f3  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-7.c
+ be44d6c3c4d8055ce8fd43e62a287c12  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-1.c
+ 6b7b8c64675220c39817413d5d5d322f  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-2.c
+ 18f4664c4d1a14140be566917ccb73fd  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-3.c
+ e234d0268236221dbf51755b0be4aca1  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-full-run-7.c
+ 6987c4cf29e1ce5a359faf0d1b6d2409  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-1.h
+ 1be087c55f77a74d9d4f749b223320a1  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-2.h
+ 0611839c929c24b2af8573f8569dfd65  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-3.h
+ bef5e60d91c914bf7de9023a9ab9f6b9  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-run-7.h
+ 722b2bf1dc8f0eaf2fe36ba4b1c93e29  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length-small.c
+ ca2326bfc2b9007e3b63b0bea8890a00  gcc/testsuite/gcc.target/s390/vector/partial/s390-vec-length.h
  4e3622409ea1c0cfdb63f541b7d010ff  gcc/testsuite/gcc.target/s390/vector/perm-merge.c
  e75326d3bdf5a961413690c8fac7722a  gcc/testsuite/gcc.target/s390/vector/perm-vpdi.c
  c9919c66d15a72dcfc7be8b1d30e4de1  gcc/testsuite/gcc.target/s390/vector/pr92950.c
*************** dd0d54001d5c0c89de9ecbfeca7d9163  gcc/te
*** 73054,73060 ****
  f4f003702feb568dbc88ed411b2783e9  gcc/testsuite/gcc.target/s390/vector/vec-cmp-1.c
  6ad5106106095fa0defa7e045850f1a6  gcc/testsuite/gcc.target/s390/vector/vec-cmp-2.c
  836ebd984394712bf83085d3675ab39b  gcc/testsuite/gcc.target/s390/vector/vec-copysign-execute.c
! fab4976ba27218446ab4ea3d93774393  gcc/testsuite/gcc.target/s390/vector/vec-copysign.c
  9c5a93306d2612b0adf7c1ca5650d94d  gcc/testsuite/gcc.target/s390/vector/vec-dbl-math-compile-1.c
  b015126e7fb7ce82a8d5140428c4e192  gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c
  56c4b1af3959c56145108f2f9535cc8f  gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-2.c
--- 77963,77969 ----
  f4f003702feb568dbc88ed411b2783e9  gcc/testsuite/gcc.target/s390/vector/vec-cmp-1.c
  6ad5106106095fa0defa7e045850f1a6  gcc/testsuite/gcc.target/s390/vector/vec-cmp-2.c
  836ebd984394712bf83085d3675ab39b  gcc/testsuite/gcc.target/s390/vector/vec-copysign-execute.c
! b2d0a0fe9bc2bcd1f0cf523b66f2c66f  gcc/testsuite/gcc.target/s390/vector/vec-copysign.c
  9c5a93306d2612b0adf7c1ca5650d94d  gcc/testsuite/gcc.target/s390/vector/vec-dbl-math-compile-1.c
  b015126e7fb7ce82a8d5140428c4e192  gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-1.c
  56c4b1af3959c56145108f2f9535cc8f  gcc/testsuite/gcc.target/s390/vector/vec-genbytemask-2.c
*************** f6942a3fba9c800bffade3bb79196479  gcc/te
*** 73064,73077 ****
  2c26f350a22588870ab9a7eca3102f56  gcc/testsuite/gcc.target/s390/vector/vec-init-2.c
  03cc140b84b037d2fe9c9c0be079e135  gcc/testsuite/gcc.target/s390/vector/vec-int-math-compile-1.c
  3f0e273f04c5175b1fdb100976e981c6  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c
! 9854e916ee33c3d55eb8860c8a3fed74  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-2.c
  604b357bf5bdc9c25e2e900ed77fd858  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
  8de36944e18edbbcc735c9baad533f52  gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c
  0f81f716920700cba16fc05e47df6d56  gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c
  cea49877a5895e80cb13491b6cdfa2a2  gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c
  09fe971e1ee2ac0d9627fec05f679430  gcc/testsuite/gcc.target/s390/vector/vec-types.h
  db4e2b1f6b0441e2f2f64b6e141245cd  gcc/testsuite/gcc.target/s390/vector/vec-vcond-1.c
  3820ec0689c3262f947212e6f357e08c  gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c
  9fc90b732df663117f1ed481b91525c3  gcc/testsuite/gcc.target/s390/vxe/bitops-1.c
  81fd996600cd4355d2efb4f18bd9a019  gcc/testsuite/gcc.target/s390/vxe/negfma-1.c
  d9c7cdb9278996c3e1dfb12b0fea17bd  gcc/testsuite/gcc.target/s390/vxe/popcount-1.c
--- 77973,77989 ----
  2c26f350a22588870ab9a7eca3102f56  gcc/testsuite/gcc.target/s390/vector/vec-init-2.c
  03cc140b84b037d2fe9c9c0be079e135  gcc/testsuite/gcc.target/s390/vector/vec-int-math-compile-1.c
  3f0e273f04c5175b1fdb100976e981c6  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-1.c
! 36edbd8af8f3368a9b83ac5c88068cfc  gcc/testsuite/gcc.target/s390/vector/vec-nopeel-2.c
  604b357bf5bdc9c25e2e900ed77fd858  gcc/testsuite/gcc.target/s390/vector/vec-scalar-cmp-1.c
  8de36944e18edbbcc735c9baad533f52  gcc/testsuite/gcc.target/s390/vector/vec-shift-1.c
  0f81f716920700cba16fc05e47df6d56  gcc/testsuite/gcc.target/s390/vector/vec-shift-2.c
  cea49877a5895e80cb13491b6cdfa2a2  gcc/testsuite/gcc.target/s390/vector/vec-sub-1.c
+ 621242ae760f6d41066bd3c69c7a43d3  gcc/testsuite/gcc.target/s390/vector/vec-sum-across-no-lower-subreg-1.c
  09fe971e1ee2ac0d9627fec05f679430  gcc/testsuite/gcc.target/s390/vector/vec-types.h
  db4e2b1f6b0441e2f2f64b6e141245cd  gcc/testsuite/gcc.target/s390/vector/vec-vcond-1.c
  3820ec0689c3262f947212e6f357e08c  gcc/testsuite/gcc.target/s390/vector/vec-vrepi-1.c
+ b285e00f64be083356e248425ad42f69  gcc/testsuite/gcc.target/s390/vector/vperm-rev-z14.c
+ 6a26b9ab98b26ffa11b6e80dd969b1d9  gcc/testsuite/gcc.target/s390/vector/vperm-rev-z15.c
  9fc90b732df663117f1ed481b91525c3  gcc/testsuite/gcc.target/s390/vxe/bitops-1.c
  81fd996600cd4355d2efb4f18bd9a019  gcc/testsuite/gcc.target/s390/vxe/negfma-1.c
  d9c7cdb9278996c3e1dfb12b0fea17bd  gcc/testsuite/gcc.target/s390/vxe/popcount-1.c
*************** dcc5ed5b3edf72f429ca266357c415da  gcc/te
*** 73084,73090 ****
  02d986ab48994194ddc04258f4564aec  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-le.c
  cff015e0826212242aca87d52202da4b  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-lt.c
  23de00604ff742b6dc36beb2ae1e17de  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-ordered.c
! a5213d6f9cfffef96e73a61bf46a6a42  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-uneq.c
  bf463ecf5d2c2f224b5d2b86f9a93497  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-unordered.c
  b8420772bf28568b3da111bdba2a4f48  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13-finite.c
  5bbb01fa22ec78e47839a2ad680a77f7  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13.c
--- 77996,78002 ----
  02d986ab48994194ddc04258f4564aec  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-le.c
  cff015e0826212242aca87d52202da4b  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-lt.c
  23de00604ff742b6dc36beb2ae1e17de  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-ordered.c
! 49342fd1a765aa89b204057b41b8cf06  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-uneq.c
  bf463ecf5d2c2f224b5d2b86f9a93497  gcc/testsuite/gcc.target/s390/zvector/autovec-double-quiet-unordered.c
  b8420772bf28568b3da111bdba2a4f48  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13-finite.c
  5bbb01fa22ec78e47839a2ad680a77f7  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-eq-z13.c
*************** c4678d4d64070324cfc30fd4ad18ac5a  gcc/te
*** 73103,73109 ****
  a6eea94b47ecdcef7062543019d1455b  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-lt.c
  78147cd07f8bfc1cba377a7af4af1827  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ltgt-z13-finite.c
  c1d317d5598ad38c9483b1d1ff0b2136  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ltgt-z13.c
! c46bd7969c48de757910e8821716b67a  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ltgt.c
  d0097ca5084f16b6c2ecf0ad3589dd3a  gcc/testsuite/gcc.target/s390/zvector/autovec-double-smax-z13.F90
  045d6efa5c8c8021e5f964937ce22d1d  gcc/testsuite/gcc.target/s390/zvector/autovec-double-smax.F90
  96c3fe8c6e65aad58b46f88c78280659  gcc/testsuite/gcc.target/s390/zvector/autovec-double-smin-z13.F90
--- 78015,78021 ----
  a6eea94b47ecdcef7062543019d1455b  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-lt.c
  78147cd07f8bfc1cba377a7af4af1827  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ltgt-z13-finite.c
  c1d317d5598ad38c9483b1d1ff0b2136  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ltgt-z13.c
! 00934de356b457af6152b34814760828  gcc/testsuite/gcc.target/s390/zvector/autovec-double-signaling-ltgt.c
  d0097ca5084f16b6c2ecf0ad3589dd3a  gcc/testsuite/gcc.target/s390/zvector/autovec-double-smax-z13.F90
  045d6efa5c8c8021e5f964937ce22d1d  gcc/testsuite/gcc.target/s390/zvector/autovec-double-smax.F90
  96c3fe8c6e65aad58b46f88c78280659  gcc/testsuite/gcc.target/s390/zvector/autovec-double-smin-z13.F90
*************** dfdee22bbb3d3831391e4ca7b47d8e38  gcc/te
*** 73114,73127 ****
  889237fd9392e06b63cfd4e707eb69f6  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-le.c
  28ea97c82fd03e3474129f6b86a83832  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-lt.c
  f902cd7f9c25180b19317cc4af17108d  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-ordered.c
! 7af5706ff57eb5579f79d27ad98fcb6e  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-uneq.c
  31fec9af8c96f88d045d2b2a32617a08  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-unordered.c
  63f178895412f3d494e5444d38221203  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
  69b3c3664eb5ceccdfb73e846e55eb99  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-ge.c
  92a75f2ec1fa3a4cdee2c400db21e2f1  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-gt.c
  b7d0c4fabbe822201ba834f5ab319e26  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-le.c
  a9d7735bf6747fa69b4beaa1f24480b9  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-lt.c
! 8577d71f9cde91fe968b4fc7967c4bcd  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-ltgt.c
  ee43b58cba4d9fd02558bcbb58258fee  gcc/testsuite/gcc.target/s390/zvector/autovec-fortran.h
  a8673a5fe28e5d729705bc6fae165c8c  gcc/testsuite/gcc.target/s390/zvector/autovec-long-double-signaling-ge.c
  84ea4cc095258ec7d4f17ec67d3a0fbe  gcc/testsuite/gcc.target/s390/zvector/autovec-long-double-signaling-gt.c
--- 78026,78039 ----
  889237fd9392e06b63cfd4e707eb69f6  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-le.c
  28ea97c82fd03e3474129f6b86a83832  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-lt.c
  f902cd7f9c25180b19317cc4af17108d  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-ordered.c
! b1f026c618513126d1fae644fa441dac  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-uneq.c
  31fec9af8c96f88d045d2b2a32617a08  gcc/testsuite/gcc.target/s390/zvector/autovec-float-quiet-unordered.c
  63f178895412f3d494e5444d38221203  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-eq.c
  69b3c3664eb5ceccdfb73e846e55eb99  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-ge.c
  92a75f2ec1fa3a4cdee2c400db21e2f1  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-gt.c
  b7d0c4fabbe822201ba834f5ab319e26  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-le.c
  a9d7735bf6747fa69b4beaa1f24480b9  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-lt.c
! 0f484469633979e92320ea666efc1666  gcc/testsuite/gcc.target/s390/zvector/autovec-float-signaling-ltgt.c
  ee43b58cba4d9fd02558bcbb58258fee  gcc/testsuite/gcc.target/s390/zvector/autovec-fortran.h
  a8673a5fe28e5d729705bc6fae165c8c  gcc/testsuite/gcc.target/s390/zvector/autovec-long-double-signaling-ge.c
  84ea4cc095258ec7d4f17ec67d3a0fbe  gcc/testsuite/gcc.target/s390/zvector/autovec-long-double-signaling-gt.c
*************** c510e08487f29d55308ff7e6e92099e1  gcc/te
*** 73148,73154 ****
  37bcaad0074056fd492f7d54c312c3a0  gcc/testsuite/gcc.target/s390/zvector/vec-_Bool.c
  52639af19eb9820f01b9c5381a9fc995  gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c
  8ff1ed12c88c0f19d703adc7a5a4a566  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c
! efc5b917bbc1187b0d840255aad6cb6f  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c
  ccdf3c2d3031ce42906139030ba856e1  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
  99a4d9d376b39be880dd323c2ff0e424  gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c
  49a1b950a9fdcff9d3d01ebb3d53e342  gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c
--- 78060,78066 ----
  37bcaad0074056fd492f7d54c312c3a0  gcc/testsuite/gcc.target/s390/zvector/vec-_Bool.c
  52639af19eb9820f01b9c5381a9fc995  gcc/testsuite/gcc.target/s390/zvector/vec-addc-u128.c
  8ff1ed12c88c0f19d703adc7a5a4a566  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-1.c
! 3dda159673a45586bb1e0d489527d0c6  gcc/testsuite/gcc.target/s390/zvector/vec-cmp-2.c
  ccdf3c2d3031ce42906139030ba856e1  gcc/testsuite/gcc.target/s390/zvector/vec-dbl-math-compile-1.c
  99a4d9d376b39be880dd323c2ff0e424  gcc/testsuite/gcc.target/s390/zvector/vec-double-1.c
  49a1b950a9fdcff9d3d01ebb3d53e342  gcc/testsuite/gcc.target/s390/zvector/vec-double-2.c
*************** bb6fff430ecdcaea1d62ba4c832fde59  gcc/te
*** 73171,73182 ****
  e5b6f6b47da7c1724c74cbc511588e69  gcc/testsuite/gcc.target/s390/zvector/vec-revb-load-double.c
  354011cd201e9e82b04ea14fcfcbe975  gcc/testsuite/gcc.target/s390/zvector/vec-revb-store-double-z14.c
  764a6ac41baaf24491a3b582064a6553  gcc/testsuite/gcc.target/s390/zvector/vec-revb-store-double.c
  9d5b0bc6ab229b03ed70b1e551d88310  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-byte-z14.c
  a6d8e1ac749bd175b644a04f66ec89f2  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-byte.c
  ff51731fc9b3fa6372a6d6eaaaef2a63  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-halfword-z14.c
  bbfd12d94a6ec1d60c1cafa0ff1f2823  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-halfword.c
  c45c3b740eeb61e0c5f07c87f891fd13  gcc/testsuite/gcc.target/s390/zvector/vec-reve-store-byte-z14.c
! 063c798bd5a78297fcf0306c1d06e8a7  gcc/testsuite/gcc.target/s390/zvector/vec-reve-store-byte.c
  34bb8f4f396fce6fd98e6cb7806be80e  gcc/testsuite/gcc.target/s390/zvector/vec-search-string-cc-1.c
  ca3a119c232d2f9c4175fb19938beae4  gcc/testsuite/gcc.target/s390/zvector/vec-search-string-cc-compile.c
  20b17b7a2b72b3740b4c5ab6b4c3b23e  gcc/testsuite/gcc.target/s390/zvector/vec-search-string-until-zero-cc-1.c
--- 78083,78095 ----
  e5b6f6b47da7c1724c74cbc511588e69  gcc/testsuite/gcc.target/s390/zvector/vec-revb-load-double.c
  354011cd201e9e82b04ea14fcfcbe975  gcc/testsuite/gcc.target/s390/zvector/vec-revb-store-double-z14.c
  764a6ac41baaf24491a3b582064a6553  gcc/testsuite/gcc.target/s390/zvector/vec-revb-store-double.c
+ 3ff4520f82a1a67ee26a8e30a7f5155e  gcc/testsuite/gcc.target/s390/zvector/vec-reve-int-long.c
  9d5b0bc6ab229b03ed70b1e551d88310  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-byte-z14.c
  a6d8e1ac749bd175b644a04f66ec89f2  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-byte.c
  ff51731fc9b3fa6372a6d6eaaaef2a63  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-halfword-z14.c
  bbfd12d94a6ec1d60c1cafa0ff1f2823  gcc/testsuite/gcc.target/s390/zvector/vec-reve-load-halfword.c
  c45c3b740eeb61e0c5f07c87f891fd13  gcc/testsuite/gcc.target/s390/zvector/vec-reve-store-byte-z14.c
! c0469f7e53dc343cc6621e4f03217d37  gcc/testsuite/gcc.target/s390/zvector/vec-reve-store-byte.c
  34bb8f4f396fce6fd98e6cb7806be80e  gcc/testsuite/gcc.target/s390/zvector/vec-search-string-cc-1.c
  ca3a119c232d2f9c4175fb19938beae4  gcc/testsuite/gcc.target/s390/zvector/vec-search-string-cc-compile.c
  20b17b7a2b72b3740b4c5ab6b4c3b23e  gcc/testsuite/gcc.target/s390/zvector/vec-search-string-until-zero-cc-1.c
*************** db7a02bef0ea1d74a99297c9ee53c525  gcc/te
*** 73379,73385 ****
  b5f624677b85b090003118209ef93244  gcc/testsuite/gcc.target/sh/rte-delay-slot.c
  dadf2783f39a6e7573222cafcc2dee03  gcc/testsuite/gcc.target/sh/sh-relax-vxworks.c
  e21f6ad0f71c5acbd58d0b5dc9016512  gcc/testsuite/gcc.target/sh/sh-relax.c
! c9234a6d84bb35e845485df6a887f83f  gcc/testsuite/gcc.target/sh/sh.exp
  76c4b37de6ed467c955dc2c4e605bd74  gcc/testsuite/gcc.target/sh/sh2a-band.c
  6ca867fd045b678140e16f1d2034e672  gcc/testsuite/gcc.target/sh/sh2a-bclr.c
  65b6c86dd5734b5e9047d04326b96065  gcc/testsuite/gcc.target/sh/sh2a-bclrmem.c
--- 78292,78298 ----
  b5f624677b85b090003118209ef93244  gcc/testsuite/gcc.target/sh/rte-delay-slot.c
  dadf2783f39a6e7573222cafcc2dee03  gcc/testsuite/gcc.target/sh/sh-relax-vxworks.c
  e21f6ad0f71c5acbd58d0b5dc9016512  gcc/testsuite/gcc.target/sh/sh-relax.c
! 65a9e687096eadf21628b6f6e36f1e8d  gcc/testsuite/gcc.target/sh/sh.exp
  76c4b37de6ed467c955dc2c4e605bd74  gcc/testsuite/gcc.target/sh/sh2a-band.c
  6ca867fd045b678140e16f1d2034e672  gcc/testsuite/gcc.target/sh/sh2a-bclr.c
  65b6c86dd5734b5e9047d04326b96065  gcc/testsuite/gcc.target/sh/sh2a-bclrmem.c
*************** a2644837d5da1aa36c1bcfeab14bd34b  gcc/te
*** 73418,73424 ****
  b238f0c893c816effc7e00714687e793  gcc/testsuite/gcc.target/sh/torture/pr70416.c
  f2da248599c9251df57c4afab66c5b3d  gcc/testsuite/gcc.target/sh/torture/pragma-isr.c
  e59de62c79e4620b848baee27d159b9c  gcc/testsuite/gcc.target/sh/torture/pragma-isr2.c
! df433dfeeca8de2667ab5cbfd08da297  gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
  7fafc38036a01faa4f72f34d7eaaad89  gcc/testsuite/gcc.target/sh/torture/strncmp.c
  d8726234ff72b0fa25ab40cc3fe6d24b  gcc/testsuite/gcc.target/sparc/20001013-1.c
  d0d646cfe216eb6e3c43fb56cb548ea0  gcc/testsuite/gcc.target/sparc/20001101-1.c
--- 78331,78337 ----
  b238f0c893c816effc7e00714687e793  gcc/testsuite/gcc.target/sh/torture/pr70416.c
  f2da248599c9251df57c4afab66c5b3d  gcc/testsuite/gcc.target/sh/torture/pragma-isr.c
  e59de62c79e4620b848baee27d159b9c  gcc/testsuite/gcc.target/sh/torture/pragma-isr2.c
! 9f931cdc0eefb8fb14994f8e0081501f  gcc/testsuite/gcc.target/sh/torture/sh-torture.exp
  7fafc38036a01faa4f72f34d7eaaad89  gcc/testsuite/gcc.target/sh/torture/strncmp.c
  d8726234ff72b0fa25ab40cc3fe6d24b  gcc/testsuite/gcc.target/sparc/20001013-1.c
  d0d646cfe216eb6e3c43fb56cb548ea0  gcc/testsuite/gcc.target/sparc/20001101-1.c
*************** bf95d536cbad4db92f264aa740abbbbc  gcc/te
*** 73437,73442 ****
--- 78350,78359 ----
  3b3205cedf38a33c506ea5c4414d489f  gcc/testsuite/gcc.target/sparc/20181129-2.c
  3f593e1ef43ebce309fa2b2033f8be77  gcc/testsuite/gcc.target/sparc/20210917-1.c
  0c6705acc2a655d06368478b465dca00  gcc/testsuite/gcc.target/sparc/20220510-1.c
+ 40321901935127f9cf34a34197b9b48a  gcc/testsuite/gcc.target/sparc/20230328-1.c
+ c2f3fa5b3477e7057e2c90dc5425c4c9  gcc/testsuite/gcc.target/sparc/20230328-2.c
+ 49b5e11c8a86f6c891f68583037323b4  gcc/testsuite/gcc.target/sparc/20230328-3.c
+ 6a7256be670eb611556c4ac0a711fa1b  gcc/testsuite/gcc.target/sparc/20230328-4.c
  44373c57181608413fc07f3ec0e2ad6e  gcc/testsuite/gcc.target/sparc/align.c
  667a877a2fb02d919c4eaaea6fbccbad  gcc/testsuite/gcc.target/sparc/array.c
  941bd8aa096c3c20415035d9d17cca6e  gcc/testsuite/gcc.target/sparc/attr-aligned.c
*************** eb9fea9eb3ccdd5fb4d85ac011c10dc5  gcc/te
*** 73542,73548 ****
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
  eab3dd9c7afd97e9615ef7573877aeeb  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
! 9ee26ffc003d96571e5cb6fa3f88c1b5  gcc/testsuite/gcc.target/sparc/sparc.exp
  36ce6bf50327f9b2f6c9980aea9830d2  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
  29c9104d23f7983b691da600e79c9cf0  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
--- 78459,78465 ----
  111c6ff31ffc23f4b402354941b88338  gcc/testsuite/gcc.target/sparc/sparc-ret-2.c
  eab3dd9c7afd97e9615ef7573877aeeb  gcc/testsuite/gcc.target/sparc/sparc-ret-3.c
  1943f3e1f1253e644f6fe445637c2dec  gcc/testsuite/gcc.target/sparc/sparc-trap-1.c
! 70e722e158938beb5413da238338c12f  gcc/testsuite/gcc.target/sparc/sparc.exp
  36ce6bf50327f9b2f6c9980aea9830d2  gcc/testsuite/gcc.target/sparc/struct-ret-check-1.c
  8e13d07524eb18b1e933aa690c21a993  gcc/testsuite/gcc.target/sparc/struct-ret-check-2.c
  29c9104d23f7983b691da600e79c9cf0  gcc/testsuite/gcc.target/sparc/tls-ld-int16.c
*************** c6e8cea536062af6f23168b438e096e3  gcc/te
*** 73588,73594 ****
  cb59fa93f6ec7ffdc7c45b9ffe016270  gcc/testsuite/gcc.target/tic6x/bswapl.c
  880ba4c7bbafa50a3cc6634a50dc02b5  gcc/testsuite/gcc.target/tic6x/builtin-math-7.c
  6189f555f502d05c8cf8f4c22546bdee  gcc/testsuite/gcc.target/tic6x/builtins/arith24.c
! a43ba2540af9cbc052866a4d13668f62  gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
  d44d40be94d3b2c409ccde008c52fd47  gcc/testsuite/gcc.target/tic6x/builtins/extclr.c
  199fddda4489c9408a194900b3af00cc  gcc/testsuite/gcc.target/tic6x/builtins/sarith1.c
  2a93c542861f1f7e0f2350f76094d837  gcc/testsuite/gcc.target/tic6x/builtins/smpy.c
--- 78505,78511 ----
  cb59fa93f6ec7ffdc7c45b9ffe016270  gcc/testsuite/gcc.target/tic6x/bswapl.c
  880ba4c7bbafa50a3cc6634a50dc02b5  gcc/testsuite/gcc.target/tic6x/builtin-math-7.c
  6189f555f502d05c8cf8f4c22546bdee  gcc/testsuite/gcc.target/tic6x/builtins/arith24.c
! d595e1edfba0b69ff2a562ae00b8ce86  gcc/testsuite/gcc.target/tic6x/builtins/c6x-builtins.exp
  d44d40be94d3b2c409ccde008c52fd47  gcc/testsuite/gcc.target/tic6x/builtins/extclr.c
  199fddda4489c9408a194900b3af00cc  gcc/testsuite/gcc.target/tic6x/builtins/sarith1.c
  2a93c542861f1f7e0f2350f76094d837  gcc/testsuite/gcc.target/tic6x/builtins/smpy.c
*************** f914e8e604fad0a96e99fb396ea883ad  gcc/te
*** 73604,73613 ****
  baa04394e3ff6b7cba6819b89fb4e822  gcc/testsuite/gcc.target/tic6x/longcalls.c
  a25cc2d7288ac685c9d35e9c43f1cf21  gcc/testsuite/gcc.target/tic6x/rotdi16-scan.c
  9373dfa296a424e3396f81925fbd59bc  gcc/testsuite/gcc.target/tic6x/rotdi16.c
! 707dd8707c4a467e6b1e3fec0cf715cc  gcc/testsuite/gcc.target/tic6x/tic6x.exp
  670857f86bef69c76dcf7d725b01b954  gcc/testsuite/gcc.target/tic6x/weak-call.c
  1842497af5066e493839b7a75e67e2a7  gcc/testsuite/gcc.target/v850/pr104400.c
! 70227343e866ab46a280480f61da28d1  gcc/testsuite/gcc.target/v850/v850.exp
  f266f148c43d4b9593895e66efc3fa97  gcc/testsuite/gcc.target/vax/bbcci.c
  c64b50c02089a9c71ddbf71d118c42b8  gcc/testsuite/gcc.target/vax/bbssi.c
  44ba73b98dea9a0454806dbe98941328  gcc/testsuite/gcc.target/vax/bswapdi-1.c
--- 78521,78530 ----
  baa04394e3ff6b7cba6819b89fb4e822  gcc/testsuite/gcc.target/tic6x/longcalls.c
  a25cc2d7288ac685c9d35e9c43f1cf21  gcc/testsuite/gcc.target/tic6x/rotdi16-scan.c
  9373dfa296a424e3396f81925fbd59bc  gcc/testsuite/gcc.target/tic6x/rotdi16.c
! 2a8460924b8df309e1a9fc7afa406fab  gcc/testsuite/gcc.target/tic6x/tic6x.exp
  670857f86bef69c76dcf7d725b01b954  gcc/testsuite/gcc.target/tic6x/weak-call.c
  1842497af5066e493839b7a75e67e2a7  gcc/testsuite/gcc.target/v850/pr104400.c
! df9dd575459d823328eff0584c705390  gcc/testsuite/gcc.target/v850/v850.exp
  f266f148c43d4b9593895e66efc3fa97  gcc/testsuite/gcc.target/vax/bbcci.c
  c64b50c02089a9c71ddbf71d118c42b8  gcc/testsuite/gcc.target/vax/bbssi.c
  44ba73b98dea9a0454806dbe98941328  gcc/testsuite/gcc.target/vax/bswapdi-1.c
*************** ce472e70039700885bcf173911ef24dc  gcc/te
*** 73827,73833 ****
  86b2c92ff217edc7b11b2d6f5cba77c6  gcc/testsuite/gcc.target/vax/pr56875.c
  22629a1b386f420f06d6c23ff8e35b7f  gcc/testsuite/gcc.target/vax/push.c
  aa49cef95004b6430e3fd36b1edc76bc  gcc/testsuite/gcc.target/vax/setmem.c
! ab426c6a53d49be4e9da4814b2fb704a  gcc/testsuite/gcc.target/vax/vax.exp
  80427f37ed9a9b5949e9525f9049ac5d  gcc/testsuite/gcc.target/visium/bit_shift.c
  8b6e9241f591f13a4ae6f06419b206b4  gcc/testsuite/gcc.target/visium/bit_test.c
  38dfc40b21838f07e0e01202beadfa5c  gcc/testsuite/gcc.target/visium/block_move.c
--- 78744,78750 ----
  86b2c92ff217edc7b11b2d6f5cba77c6  gcc/testsuite/gcc.target/vax/pr56875.c
  22629a1b386f420f06d6c23ff8e35b7f  gcc/testsuite/gcc.target/vax/push.c
  aa49cef95004b6430e3fd36b1edc76bc  gcc/testsuite/gcc.target/vax/setmem.c
! bbaf705133ad08e4a14f512e84c58362  gcc/testsuite/gcc.target/vax/vax.exp
  80427f37ed9a9b5949e9525f9049ac5d  gcc/testsuite/gcc.target/visium/bit_shift.c
  8b6e9241f591f13a4ae6f06419b206b4  gcc/testsuite/gcc.target/visium/bit_test.c
  38dfc40b21838f07e0e01202beadfa5c  gcc/testsuite/gcc.target/visium/block_move.c
*************** da335bd5b7d24260be92152ec43c9c69  gcc/te
*** 73839,73851 ****
  22e4f821af1c93516061d0c9e939e1d1  gcc/testsuite/gcc.target/visium/overflow16.c
  ed48eae7631e0c3fec552abc3abf6370  gcc/testsuite/gcc.target/visium/overflow32.c
  9038dededd39b0c0f41798e290669394  gcc/testsuite/gcc.target/visium/overflow8.c
! 089c0c17caf17b9718465fb1b521c150  gcc/testsuite/gcc.target/visium/visium.exp
! d2419633bd63c2960fcebad0d4ff0f61  gcc/testsuite/gcc.target/x86_64/abi/README.gcc
! e47192199afb2bcde51a4fd6274d8faa  gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
  4599244d74ba4aabbd69240d86d2fe79  gcc/testsuite/gcc.target/x86_64/abi/args.h
  2a169afd0fa371ba877780d1e8074c08  gcc/testsuite/gcc.target/x86_64/abi/asm-support-darwin.s
  867f79bc8cc32bb226b0c476fa9fa125  gcc/testsuite/gcc.target/x86_64/abi/asm-support.S
! 7e1742da7c080d7b998e2f85437139ba  gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
  f559d61e72669fec3c7c3bb1345a001f  gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
  6e43bc6b3d6feb70612d399a677d1c7d  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s
  337ee5fd14ee235d1a474731bfdb21b6  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
--- 78756,78768 ----
  22e4f821af1c93516061d0c9e939e1d1  gcc/testsuite/gcc.target/visium/overflow16.c
  ed48eae7631e0c3fec552abc3abf6370  gcc/testsuite/gcc.target/visium/overflow32.c
  9038dededd39b0c0f41798e290669394  gcc/testsuite/gcc.target/visium/overflow8.c
! 19c6182ad2ab873424d5daab9786e6dd  gcc/testsuite/gcc.target/visium/visium.exp
! 6dbee4048187b0e905dd67100b87b6b0  gcc/testsuite/gcc.target/x86_64/abi/README.gcc
! 2d1180feda3f1712226074c04417b215  gcc/testsuite/gcc.target/x86_64/abi/abi-x86_64.exp
  4599244d74ba4aabbd69240d86d2fe79  gcc/testsuite/gcc.target/x86_64/abi/args.h
  2a169afd0fa371ba877780d1e8074c08  gcc/testsuite/gcc.target/x86_64/abi/asm-support-darwin.s
  867f79bc8cc32bb226b0c476fa9fa125  gcc/testsuite/gcc.target/x86_64/abi/asm-support.S
! c3d5e224260aaee375fd3d56ab5bb0d8  gcc/testsuite/gcc.target/x86_64/abi/avx/abi-avx.exp
  f559d61e72669fec3c7c3bb1345a001f  gcc/testsuite/gcc.target/x86_64/abi/avx/args.h
  6e43bc6b3d6feb70612d399a677d1c7d  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support-darwin.s
  337ee5fd14ee235d1a474731bfdb21b6  gcc/testsuite/gcc.target/x86_64/abi/avx/asm-support.S
*************** b43e5e8d171dcdbec5cac42b0b9a298c  gcc/te
*** 73855,73861 ****
  ff732b27c9bb0c5b99ccccb31d12d3ea  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
  d02989c16f0d1cd0951fe435483c550e  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
  2712f2843274c5262e020aca5e18fc41  gcc/testsuite/gcc.target/x86_64/abi/avx/test_varargs-m256.c
! c728eafc2b1946c08997f778d64f2c99  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  c79ac297933c3dae25e3f797420d1814  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s
  212a18bd874fbfbbc83f778fb334af73  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
--- 78772,78778 ----
  ff732b27c9bb0c5b99ccccb31d12d3ea  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_structs.c
  d02989c16f0d1cd0951fe435483c550e  gcc/testsuite/gcc.target/x86_64/abi/avx/test_passing_unions.c
  2712f2843274c5262e020aca5e18fc41  gcc/testsuite/gcc.target/x86_64/abi/avx/test_varargs-m256.c
! 9c5b1fc42076a8b8ca66b495c13589eb  gcc/testsuite/gcc.target/x86_64/abi/avx512f/abi-avx512f.exp
  2cf03d73572ce81dab43dcceeeacf5c4  gcc/testsuite/gcc.target/x86_64/abi/avx512f/args.h
  c79ac297933c3dae25e3f797420d1814  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support-darwin.s
  212a18bd874fbfbbc83f778fb334af73  gcc/testsuite/gcc.target/x86_64/abi/avx512f/asm-support.S
*************** c79ac297933c3dae25e3f797420d1814  gcc/te
*** 73865,73877 ****
  24464384d6d7542bbd2ae638f390e7a6  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c
  fe0e9b140dbc68ca140fc7100c1ade24  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c
  ea57c03627834ae6586c0f2b69bf32bc  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_varargs-m512.c
! 9458e043fa1436e2c38f4edf4caa5ae3  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/abi-avx512fp16-xmm.exp
  2b129c5d89f4fa1b005adf23508c4fec  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/args.h
  8ec66f49f4364320ac024e42b69a851c  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/asm-support.S
  bcfa5ef4f1f22fe71409ef362478b98a  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/avx512fp16-check.h
  a5cb603e3325d1483156a1bafca70853  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/avx512fp16-xmm-check.h
  59a59553dc3e012851df850ebc07de5e  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/defines.h
! 8674bc1d76d044f3e9a61e92b9227ee1  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/abi-avx512fp16-ymm.exp
  d09bd80049e83e4efed5897afee5c4ff  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/args.h
  337ee5fd14ee235d1a474731bfdb21b6  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/asm-support.S
  88d9834938333121b41948df32c869b2  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/avx512fp16-ymm-check.h
--- 78782,78794 ----
  24464384d6d7542bbd2ae638f390e7a6  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_structs.c
  fe0e9b140dbc68ca140fc7100c1ade24  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_passing_unions.c
  ea57c03627834ae6586c0f2b69bf32bc  gcc/testsuite/gcc.target/x86_64/abi/avx512f/test_varargs-m512.c
! 2849aa62483f0cf828a7b797ed3f3956  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/abi-avx512fp16-xmm.exp
  2b129c5d89f4fa1b005adf23508c4fec  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/args.h
  8ec66f49f4364320ac024e42b69a851c  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/asm-support.S
  bcfa5ef4f1f22fe71409ef362478b98a  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/avx512fp16-check.h
  a5cb603e3325d1483156a1bafca70853  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/avx512fp16-xmm-check.h
  59a59553dc3e012851df850ebc07de5e  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/defines.h
! 2f3c4f45b972ad15d5a60179847723a8  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/abi-avx512fp16-ymm.exp
  d09bd80049e83e4efed5897afee5c4ff  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/args.h
  337ee5fd14ee235d1a474731bfdb21b6  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/asm-support.S
  88d9834938333121b41948df32c869b2  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/avx512fp16-ymm-check.h
*************** a437b16e934be9ca096a7c1741e8085f  gcc/te
*** 73880,73886 ****
  992138c3f98a569ecd2ffa2b73fad6a7  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/test_passing_structs.c
  17d74e6230fbbecaf9cc223807c58341  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/test_passing_unions.c
  b9e013481b466db18703e47f37a22408  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/test_varargs-m256.c
! 9458e043fa1436e2c38f4edf4caa5ae3  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/abi-avx512fp16-zmm.exp
  176cf0e188d1f0e52307d89b8d784fdd  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/args.h
  212a18bd874fbfbbc83f778fb334af73  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/asm-support.S
  ba52323e4ee4308b6b4e8989ddb5f3f4  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/avx512fp16-zmm-check.h
--- 78797,78803 ----
  992138c3f98a569ecd2ffa2b73fad6a7  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/test_passing_structs.c
  17d74e6230fbbecaf9cc223807c58341  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/test_passing_unions.c
  b9e013481b466db18703e47f37a22408  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m256h/test_varargs-m256.c
! 2849aa62483f0cf828a7b797ed3f3956  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/abi-avx512fp16-zmm.exp
  176cf0e188d1f0e52307d89b8d784fdd  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/args.h
  212a18bd874fbfbbc83f778fb334af73  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/asm-support.S
  ba52323e4ee4308b6b4e8989ddb5f3f4  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/m512h/avx512fp16-zmm-check.h
*************** e22c619a2f431de8e65d3afabf108e1c  gcc/te
*** 73905,73911 ****
  b42af2b2d27084488f2cbff57c084c7e  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/test_passing_unions.c
  7708c68d41b7c3c416bc62d837c31b4d  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/test_struct_returning.c
  4e635600e6c770510213147a02f03d44  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/test_varargs-m128.c
! dcdf5165eaafaedce981f203c3322568  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
  b52212e25b4fe43a1bda56b50d2cc914  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.h
  bd08629b87a61bb1d8bfca958f60b18f  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c
  17951c08530e05273568b3b636fb8a4e  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
--- 78822,78870 ----
  b42af2b2d27084488f2cbff57c084c7e  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/test_passing_unions.c
  7708c68d41b7c3c416bc62d837c31b4d  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/test_struct_returning.c
  4e635600e6c770510213147a02f03d44  gcc/testsuite/gcc.target/x86_64/abi/avx512fp16/test_varargs-m128.c
! 6890be116974c66554ba5b81d21aba31  gcc/testsuite/gcc.target/x86_64/abi/bf16/abi-bf16.exp
! 267075a616caa20baf1cdb6d59273da7  gcc/testsuite/gcc.target/x86_64/abi/bf16/args.h
! f2f6be87af6fdd2b9038a0493b9f4e5f  gcc/testsuite/gcc.target/x86_64/abi/bf16/asm-support-darwin.S
! 983102b5da86835530b5d6c5a2e184fe  gcc/testsuite/gcc.target/x86_64/abi/bf16/asm-support.S
! 363a58e295ec3d94386622bac19f0fdc  gcc/testsuite/gcc.target/x86_64/abi/bf16/bf16-check.h
! ef001e25461cad1a905cc3940b8a59a1  gcc/testsuite/gcc.target/x86_64/abi/bf16/bf16-helper.h
! 3d83e5be06c53befcde7bb6589de52e1  gcc/testsuite/gcc.target/x86_64/abi/bf16/defines.h
! f61d71fee54e2ac824d85de220695e89  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/abi-bf16-ymm.exp
! afef53759167fe4e911437d754f38005  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/args.h
! 1d8f51b67e980af0a3d27bc1aa71cc22  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/asm-support-darwin.S
! 337ee5fd14ee235d1a474731bfdb21b6  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/asm-support.S
! ad5c327915d65a21a4e9ba2b345a4121  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/bf16-ymm-check.h
! 06ecc8312477b9c6c62c0b36173c64ad  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/test_m256_returning.c
! acba9f3b81ebc1546fdfdbe4b6aa7f4c  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/test_passing_m256.c
! 73bd600b3da626bbd4377e964af2f489  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/test_passing_structs.c
! fb110ce41e65d5c5a34b6dfd9aae97b9  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/test_passing_unions.c
! 037befa2c6f87c1831afb1b0c9a799c2  gcc/testsuite/gcc.target/x86_64/abi/bf16/m256bf16/test_varargs-m256.c
! 87d19d3aadd120838eaf366716612cbe  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/abi-bf16-zmm.exp
! 67297c5c4ab3b318022029a58e7fd404  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/args.h
! 206a66ec7c31d9ba7a8d13d86038cc45  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/asm-support-darwin.S
! 212a18bd874fbfbbc83f778fb334af73  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/asm-support.S
! 5f9c76b12512b491dcb66818e9039984  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/bf16-zmm-check.h
! 981d8962768ef823936f26c746f096d1  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/test_m512_returning.c
! 3858936c5bc6908a956192ace2ed196d  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/test_passing_m512.c
! 767fd0d6494015abcbb421070c0d6dbd  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/test_passing_structs.c
! 3af75ee4a6fbfe618fc7a4730aebdfc7  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/test_passing_unions.c
! 4d5930ddd881514c8657308eb16fc55a  gcc/testsuite/gcc.target/x86_64/abi/bf16/m512bf16/test_varargs-m512.c
! ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/bf16/macros.h
! 7e38f6c6bd56d0dc3e96b411d44a4121  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_3_element_struct_and_unions.c
! c27595c336c0fe49dac61c578bb316a4  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_basic_alignment.c
! 1f9f37f57199149c41654b1b4db6f7e2  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_basic_array_size_and_align.c
! 510832fd0c22806209fd8b5a2e12dc9f  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_basic_returning.c
! 6512d7c27548f049169c98c09e251386  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_basic_sizes.c
! 7b1735c4fafe9fe96c5562e41a647c2f  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_basic_struct_size_and_align.c
! 6a3ba7317719db47d47b67428ded8964  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_basic_union_size_and_align.c
! 5feeafde322ed7d6dfdd4eba421bccc6  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_m128_returning.c
! 2ecd0f3399e47c7ab3df4b8278500446  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_passing_floats.c
! e45d3c04b43ec1971546dba8e67d47d6  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_passing_m128.c
! af318c8616cebdebba4e185177c8ed0d  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_passing_structs.c
! 5fdd234cc9ad7df783a95400b9bbd62f  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_passing_unions.c
! 419e101bf2cea096ae41adea141df03f  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_struct_returning.c
! 017621a52995d96231c7e32023a4b6b6  gcc/testsuite/gcc.target/x86_64/abi/bf16/test_varargs-m128.c
! f3dc3b9e079c2737fe2cd850d2c734b6  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.exp
  b52212e25b4fe43a1bda56b50d2cc914  gcc/testsuite/gcc.target/x86_64/abi/callabi/callabi.h
  bd08629b87a61bb1d8bfca958f60b18f  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-1.c
  17951c08530e05273568b3b636fb8a4e  gcc/testsuite/gcc.target/x86_64/abi/callabi/func-2a.c
*************** d02a2912e872fd8b7b39b69b74482091  gcc/te
*** 73926,73935 ****
  dfc167e3c82be6261ef045c50a409cf9  gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-6.c
  002286d968abb2e5012ebb83dd44784d  gcc/testsuite/gcc.target/x86_64/abi/defines.h
  ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/macros.h
! 44025db62c3dfb2fea4593219a3c9466  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
  cf207cd32f48bf81f1c2ea9397f53856  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
  b14bf90b9e86d7c81b95cad9c4d55dae  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
! ebf3cf3bcb74a6aba311d9006ee9c06b  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
  df350cc8fc42fcbfb44edc088765d60a  gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c
  54a02258e782aaa35101b4f6cddbe300  gcc/testsuite/gcc.target/x86_64/abi/test_basic_alignment.c
  21f9b335d755c74bdef8998aeac98585  gcc/testsuite/gcc.target/x86_64/abi/test_basic_array_size_and_align.c
--- 78885,78894 ----
  dfc167e3c82be6261ef045c50a409cf9  gcc/testsuite/gcc.target/x86_64/abi/callabi/vaarg-6.c
  002286d968abb2e5012ebb83dd44784d  gcc/testsuite/gcc.target/x86_64/abi/defines.h
  ced3e7fc25757fe027f4eacc904e6881  gcc/testsuite/gcc.target/x86_64/abi/macros.h
! 06700177fba933d7f6400c8f7c454244  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/do-test.S
  cf207cd32f48bf81f1c2ea9397f53856  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
  b14bf90b9e86d7c81b95cad9c4d55dae  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
! 2e9bcfc89d80443a3dbd43f550c950e3  gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.exp
  df350cc8fc42fcbfb44edc088765d60a  gcc/testsuite/gcc.target/x86_64/abi/test_3_element_struct_and_unions.c
  54a02258e782aaa35101b4f6cddbe300  gcc/testsuite/gcc.target/x86_64/abi/test_basic_alignment.c
  21f9b335d755c74bdef8998aeac98585  gcc/testsuite/gcc.target/x86_64/abi/test_basic_array_size_and_align.c
*************** de974d8f497b1ad76694e8f9333fcd26  gcc/te
*** 74155,74170 ****
  92244b620516764d25382b815309419b  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c
  292d09294f8beccfa611eb5d5ace3e5d  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c
  399545481a5e90f464e00d2cdb3b624f  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c
! 41bf13a1fa5ab1ab131001e65b4df019  gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
! 160617ce3e92166c524b3c1d584958a1  gcc/testsuite/gcc.target/xtensa/bswap.c
  5dd88a67050813a2722e394515530667  gcc/testsuite/gcc.target/xtensa/mabi-call0.c
  55cb36db164b6243fa3041628937695c  gcc/testsuite/gcc.target/xtensa/mabi-windowed.c
  fc75a0f9bf2050602dba2ff080a220b4  gcc/testsuite/gcc.target/xtensa/pr91880.c
  acfb44b971ca766549ce4e3d2974f084  gcc/testsuite/gcc.target/xtensa/pr94584.c
  ef29d88bcc9a62033efa0a6e41a3e7d8  gcc/testsuite/gcc.target/xtensa/pr98285.c
  a948656f4ea504ef065dc8d743d6ae01  gcc/testsuite/gcc.target/xtensa/shifts.c
! 26589e93b43e27bb6d65e9bbdc3b630c  gcc/testsuite/gcc.target/xtensa/xtensa.exp
! c4ef295a290a9fbc874fb729f4f83b32  gcc/testsuite/gcc.test-framework/README
  096a37c4b1e488bdb060872ca7b99862  gcc/testsuite/gcc.test-framework/dg-bogus-exp-P.c
  9f91f73374d446d6b0085730a8104942  gcc/testsuite/gcc.test-framework/dg-bogus-exp-XF.c
  570821aa898995690ac6f67de0840c1a  gcc/testsuite/gcc.test-framework/dg-do-assemble-exp-P.c
--- 79114,79143 ----
  92244b620516764d25382b815309419b  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_8.c
  292d09294f8beccfa611eb5d5ace3e5d  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_b.c
  399545481a5e90f464e00d2cdb3b624f  gcc/testsuite/gcc.target/xstormy16/sfr/27_if0_sfrw_bitfield_f.c
! 9de01c055e169c9af7e2e6310bac2641  gcc/testsuite/gcc.target/xstormy16/xstormy16.exp
! eacc096a7f94a630ed769a6bed50453d  gcc/testsuite/gcc.target/xtensa/BALL-BNALL.c
! 2c169e3ed7b7968f235d883ab0a5457a  gcc/testsuite/gcc.target/xtensa/bswap-O1.c
! 1a07128767cc4b46376ceb321c59f191  gcc/testsuite/gcc.target/xtensa/bswap-O2.c
! a9416652aa64c95df384346392cbfe6e  gcc/testsuite/gcc.target/xtensa/bswap-Os.c
! 838815dfe721339bb146bb1ed3ca5c93  gcc/testsuite/gcc.target/xtensa/check_zero_byte.c
! 5a104f8eacc55b9d4292f91bb5b77563  gcc/testsuite/gcc.target/xtensa/constsynth_2insns.c
! d7d13a4de1bb8d4900eec10ef3010828  gcc/testsuite/gcc.target/xtensa/constsynth_3insns.c
! c1831e6dbeb2aec9e1b98afc4cc0902f  gcc/testsuite/gcc.target/xtensa/constsynth_double.c
! 28eaa56254e255a49e278e3a342b35e0  gcc/testsuite/gcc.target/xtensa/elim_GP_regmove_0.c
! ce29d96a29845fe03357acacff463e16  gcc/testsuite/gcc.target/xtensa/elim_GP_regmove_1.c
! 553083855fb266d0dde46053f5331304  gcc/testsuite/gcc.target/xtensa/elim_callee_saved.c
! 67f6bc3272f355380928a1c0a5bf2049  gcc/testsuite/gcc.target/xtensa/funnel_shifter.c
  5dd88a67050813a2722e394515530667  gcc/testsuite/gcc.target/xtensa/mabi-call0.c
  55cb36db164b6243fa3041628937695c  gcc/testsuite/gcc.target/xtensa/mabi-windowed.c
+ a15a47e169752fa5ceea299d07d5f088  gcc/testsuite/gcc.target/xtensa/one_cmpl_abs.c
+ b7bda6f199a1b6771b9270aa47b61b64  gcc/testsuite/gcc.target/xtensa/pr108919.c
  fc75a0f9bf2050602dba2ff080a220b4  gcc/testsuite/gcc.target/xtensa/pr91880.c
  acfb44b971ca766549ce4e3d2974f084  gcc/testsuite/gcc.target/xtensa/pr94584.c
  ef29d88bcc9a62033efa0a6e41a3e7d8  gcc/testsuite/gcc.target/xtensa/pr98285.c
  a948656f4ea504ef065dc8d743d6ae01  gcc/testsuite/gcc.target/xtensa/shifts.c
! 9c340cc6ce0b118b23559c6dff251397  gcc/testsuite/gcc.target/xtensa/sibcalls.c
! 99223b8c90ad404e46f69b18b7507a25  gcc/testsuite/gcc.target/xtensa/xtensa.exp
! b37cebdc6aa25471a2b1263d787ec0b6  gcc/testsuite/gcc.test-framework/README
  096a37c4b1e488bdb060872ca7b99862  gcc/testsuite/gcc.test-framework/dg-bogus-exp-P.c
  9f91f73374d446d6b0085730a8104942  gcc/testsuite/gcc.test-framework/dg-bogus-exp-XF.c
  570821aa898995690ac6f67de0840c1a  gcc/testsuite/gcc.test-framework/dg-do-assemble-exp-P.c
*************** d76821513655f47d266e00386180369f  gcc/te
*** 74220,74234 ****
  7741b86259484f4bb14a28d48d2a3723  gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c
  a5fed7916fa20d3c35ba9b6ca7d18593  gcc/testsuite/gcc.test-framework/dg-warning-exp-P.c
  b09307dc50aad69d9ba101705dce41f4  gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c
! e194a3901952483fedf42ffc5554904e  gcc/testsuite/gcc.test-framework/gen_directive_tests
! 610902682c8b23c187d07f3098f52a46  gcc/testsuite/gcc.test-framework/test-framework.awk
! e39ca362f298ecd885080e2e18e0300d  gcc/testsuite/gcc.test-framework/test-framework.exp
  502192866584cff5028f4aa00858d119  gcc/testsuite/gdc.dg/Waddress.d
  94208575e1a523900cf5bbbacff458ff  gcc/testsuite/gdc.dg/Wcastresult1.d
  44e39786a0fd5bf9bfdb4d4356edd009  gcc/testsuite/gdc.dg/Wcastresult2.d
  ba3ec121536606fdf9d34aff37b9da35  gcc/testsuite/gdc.dg/Wpadded.d
  684da8abc6d44a02e6b361d163e350c1  gcc/testsuite/gdc.dg/array1.d
! e3229cdbb49fa4eddc8e95415670f5e6  gcc/testsuite/gdc.dg/asan/asan.exp
  10180752a9d53fac31ca576e678cdd06  gcc/testsuite/gdc.dg/asan/gdc272.d
  de1309b7ef02b8dd0a89139091b615b3  gcc/testsuite/gdc.dg/asm1.d
  fe26b7411075062b4f74f94131f6ff12  gcc/testsuite/gdc.dg/asm2.d
--- 79193,79210 ----
  7741b86259484f4bb14a28d48d2a3723  gcc/testsuite/gcc.test-framework/dg-warning-exp-F.c
  a5fed7916fa20d3c35ba9b6ca7d18593  gcc/testsuite/gcc.test-framework/dg-warning-exp-P.c
  b09307dc50aad69d9ba101705dce41f4  gcc/testsuite/gcc.test-framework/dg-warning-nocache-exp-P.c
! e8b10d44cf0ce7660fb590fc7033e2e1  gcc/testsuite/gcc.test-framework/gen_directive_tests
! cf6b826f4e7228338ca934f4b8ee96b6  gcc/testsuite/gcc.test-framework/test-framework.awk
! 43208400ba6b1eb913162f9962d741e8  gcc/testsuite/gcc.test-framework/test-framework.exp
  502192866584cff5028f4aa00858d119  gcc/testsuite/gdc.dg/Waddress.d
+ 8c1b4247bd6d7e5b761c57e5000129ce  gcc/testsuite/gdc.dg/Wbuiltin_declaration_mismatch1.d
+ 8adf8b68c4c026c925facba4583a855a  gcc/testsuite/gdc.dg/Wbuiltin_declaration_mismatch2.d
  94208575e1a523900cf5bbbacff458ff  gcc/testsuite/gdc.dg/Wcastresult1.d
  44e39786a0fd5bf9bfdb4d4356edd009  gcc/testsuite/gdc.dg/Wcastresult2.d
  ba3ec121536606fdf9d34aff37b9da35  gcc/testsuite/gdc.dg/Wpadded.d
  684da8abc6d44a02e6b361d163e350c1  gcc/testsuite/gdc.dg/array1.d
! e8f3d928a72b02cbf256c0bb36f89756  gcc/testsuite/gdc.dg/asan/asan.exp
! b128e4398f4a7480b25915e786aa46ef  gcc/testsuite/gdc.dg/asan/attr_no_sanitize1.d
  10180752a9d53fac31ca576e678cdd06  gcc/testsuite/gdc.dg/asan/gdc272.d
  de1309b7ef02b8dd0a89139091b615b3  gcc/testsuite/gdc.dg/asm1.d
  fe26b7411075062b4f74f94131f6ff12  gcc/testsuite/gdc.dg/asm2.d
*************** be44f393409c50d8949f150eec7cddbf  gcc/te
*** 74252,74275 ****
  a65496ad0ebda41bcdf68425b9a9f72d  gcc/testsuite/gdc.dg/attr_optimize2.d
  efa62e7f66285132689e5617fbc58246  gcc/testsuite/gdc.dg/attr_optimize3.d
  266c55f25df87c316673bbb58d9e0447  gcc/testsuite/gdc.dg/attr_optimize4.d
  14fa3594bd8bc49bc227959dab848846  gcc/testsuite/gdc.dg/attr_restrict1.d
! 3224bcf6fda67cf18671a91ef42189f3  gcc/testsuite/gdc.dg/attr_section1.d
  3797a343519b62c2741944820cb78acc  gcc/testsuite/gdc.dg/attr_symver1.d
  6be6e0c3646dcb685d92c584754e4595  gcc/testsuite/gdc.dg/attr_target1.d
  a7aa471b806a0dc9aa5c6bb1b37b42ad  gcc/testsuite/gdc.dg/attr_targetclones1.d
  61945d5076ad9702338fa473f898a394  gcc/testsuite/gdc.dg/attr_used1.d
  84521024efb763093c6953cf9c5af938  gcc/testsuite/gdc.dg/attr_used2.d
  9572ed86d7a73e283f1add9802b99b1a  gcc/testsuite/gdc.dg/attr_weak1.d
  0aaff757c8c0406ea7a86643ad642fb3  gcc/testsuite/gdc.dg/cast1.d
! 1aa737abc3f6f98c201e3d6d98b5e4cf  gcc/testsuite/gdc.dg/debug/debug.exp
! 30df248a2c4b4a996fa34a6d46c9c16c  gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp
  f57bfa4edc494fecd4284a542f695d0f  gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d
  37e2ca0f4e06cb14e92a710579518a60  gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d
  db93819c7b52f4f6ea4f42fed3e0a48a  gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d
  8527933fbf2d9fb7c82fd63435063168  gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d
  0121ae6408f107a6bf6f915c24102bd3  gcc/testsuite/gdc.dg/debug/trivial.d
! 513a9ff1eab2fe60e403ca1f13490d25  gcc/testsuite/gdc.dg/dg.exp
! 143caa33650ff48f316c9f2da298fce3  gcc/testsuite/gdc.dg/extern-c++/extern-c++.exp
  61180002f0f17ca7ed75def599d123f0  gcc/testsuite/gdc.dg/extern-c++/pr101664.d
  68936fbe708c1d13dcaca6e4a4a06f77  gcc/testsuite/gdc.dg/extern-c++/pr101664_1.cc
  a1a48cc59d8f09de15d5d5519e240770  gcc/testsuite/gdc.dg/fileimports/pr93038.txt
--- 79228,79261 ----
  a65496ad0ebda41bcdf68425b9a9f72d  gcc/testsuite/gdc.dg/attr_optimize2.d
  efa62e7f66285132689e5617fbc58246  gcc/testsuite/gdc.dg/attr_optimize3.d
  266c55f25df87c316673bbb58d9e0447  gcc/testsuite/gdc.dg/attr_optimize4.d
+ 7327ea5bd9e901bdfa02052f373e0711  gcc/testsuite/gdc.dg/attr_register1.d
+ 593b1eb13f42a6967516670aa4dcbe16  gcc/testsuite/gdc.dg/attr_register2.d
+ b57590df25e10e4e6f8a353dc95c6160  gcc/testsuite/gdc.dg/attr_register3.d
  14fa3594bd8bc49bc227959dab848846  gcc/testsuite/gdc.dg/attr_restrict1.d
! 0e5c351c4d477b37e8896e97fdcd6e95  gcc/testsuite/gdc.dg/attr_section1.d
! 82e963683df76aaf2a372fe591b46be8  gcc/testsuite/gdc.dg/attr_simd1.d
! 9dc8cc50deb53db20b9308c14a747406  gcc/testsuite/gdc.dg/attr_simd2.d
  3797a343519b62c2741944820cb78acc  gcc/testsuite/gdc.dg/attr_symver1.d
  6be6e0c3646dcb685d92c584754e4595  gcc/testsuite/gdc.dg/attr_target1.d
  a7aa471b806a0dc9aa5c6bb1b37b42ad  gcc/testsuite/gdc.dg/attr_targetclones1.d
  61945d5076ad9702338fa473f898a394  gcc/testsuite/gdc.dg/attr_used1.d
  84521024efb763093c6953cf9c5af938  gcc/testsuite/gdc.dg/attr_used2.d
+ 065fd8e52ab3e735b6f89fbd14d06346  gcc/testsuite/gdc.dg/attr_visibility1.d
+ b96246fe2fd61f131bffcb73cf6c3661  gcc/testsuite/gdc.dg/attr_visibility2.d
+ 68d5fbec2923867523a72d9b95de39e1  gcc/testsuite/gdc.dg/attr_visibility3.d
  9572ed86d7a73e283f1add9802b99b1a  gcc/testsuite/gdc.dg/attr_weak1.d
+ 51f05240bc073e45dfb7cd2af384c423  gcc/testsuite/gdc.dg/builtins.d
  0aaff757c8c0406ea7a86643ad642fb3  gcc/testsuite/gdc.dg/cast1.d
! 191c7332d72a7ccafbe3cfaa328fd410  gcc/testsuite/gdc.dg/ctfeintrinsics.d
! e050fd9a26438159421caec59183ebf7  gcc/testsuite/gdc.dg/debug/debug.exp
! 65038c6079b658648c6ddaaab6f3b8f9  gcc/testsuite/gdc.dg/debug/dwarf2/dwarf2.exp
  f57bfa4edc494fecd4284a542f695d0f  gcc/testsuite/gdc.dg/debug/dwarf2/imports/pr98067.d
  37e2ca0f4e06cb14e92a710579518a60  gcc/testsuite/gdc.dg/debug/dwarf2/langdw2.d
  db93819c7b52f4f6ea4f42fed3e0a48a  gcc/testsuite/gdc.dg/debug/dwarf2/langdw3.d
  8527933fbf2d9fb7c82fd63435063168  gcc/testsuite/gdc.dg/debug/dwarf2/pr98067.d
  0121ae6408f107a6bf6f915c24102bd3  gcc/testsuite/gdc.dg/debug/trivial.d
! 221872e623e7561cf7ee01e02bd48936  gcc/testsuite/gdc.dg/dg.exp
! e13b61cf77c000f61413c39e9ed0fa64  gcc/testsuite/gdc.dg/extern-c++/extern-c++.exp
  61180002f0f17ca7ed75def599d123f0  gcc/testsuite/gdc.dg/extern-c++/pr101664.d
  68936fbe708c1d13dcaca6e4a4a06f77  gcc/testsuite/gdc.dg/extern-c++/pr101664_1.cc
  a1a48cc59d8f09de15d5d5519e240770  gcc/testsuite/gdc.dg/fileimports/pr93038.txt
*************** b60175beb28e5f269667d25260e08c71  gcc/te
*** 74331,74339 ****
  22f231195c5f7726c704d3f9d99b0d85  gcc/testsuite/gdc.dg/imports/gdc27.d
  aeec8ff75316a52def72f86d4bc1708c  gcc/testsuite/gdc.dg/imports/gdcpkg256/package.d
  d509ef7215df7a85f46d6cbdc8018e22  gcc/testsuite/gdc.dg/imports/pr106555.d
  7ae8eee97923fab094ae5ca5a1eca902  gcc/testsuite/gdc.dg/imports/pr92216.d
  8120e5c267785a8c8b8eb099660e9a14  gcc/testsuite/gdc.dg/intrinsics.d
! 2319a395f830492fe9ec7d713b9983a3  gcc/testsuite/gdc.dg/lto/lto.exp
  73f4e0e4c2d7cacc12e6ae72ff1a988e  gcc/testsuite/gdc.dg/lto/ltotests_0.d
  bcf14abbb66e47644086ee0018354420  gcc/testsuite/gdc.dg/lto/ltotests_1.d
  67f3da95e0d4f9e0695facaa788ce93f  gcc/testsuite/gdc.dg/lto/pr102094_0.d
--- 79317,79329 ----
  22f231195c5f7726c704d3f9d99b0d85  gcc/testsuite/gdc.dg/imports/gdc27.d
  aeec8ff75316a52def72f86d4bc1708c  gcc/testsuite/gdc.dg/imports/gdcpkg256/package.d
  d509ef7215df7a85f46d6cbdc8018e22  gcc/testsuite/gdc.dg/imports/pr106555.d
+ 8fba2c4130687ac9061c9b748ca84568  gcc/testsuite/gdc.dg/imports/pr108050/mod1.d
+ 753f5121640aa2d9e67d4f235bed8d2b  gcc/testsuite/gdc.dg/imports/pr108050/mod2.d
+ b0fb7628aa04803e7405378e8ff66d8c  gcc/testsuite/gdc.dg/imports/pr108050/package.d
+ c1371b9d51218c700b58595265d42b2d  gcc/testsuite/gdc.dg/imports/pr108877a.d
  7ae8eee97923fab094ae5ca5a1eca902  gcc/testsuite/gdc.dg/imports/pr92216.d
  8120e5c267785a8c8b8eb099660e9a14  gcc/testsuite/gdc.dg/intrinsics.d
! 242a471b046e60438681d9b34060435b  gcc/testsuite/gdc.dg/lto/lto.exp
  73f4e0e4c2d7cacc12e6ae72ff1a988e  gcc/testsuite/gdc.dg/lto/ltotests_0.d
  bcf14abbb66e47644086ee0018354420  gcc/testsuite/gdc.dg/lto/ltotests_1.d
  67f3da95e0d4f9e0695facaa788ce93f  gcc/testsuite/gdc.dg/lto/pr102094_0.d
*************** f4b93d30d706ee858eb3d1d73cac63f0  gcc/te
*** 74356,74361 ****
--- 79346,79356 ----
  78fb78f49f61330c2751bcc186e8fade  gcc/testsuite/gdc.dg/pr106139c.d
  27e575511646bb151afbd1a856acdadc  gcc/testsuite/gdc.dg/pr106139d.d
  6ccb68ecf420e903e3af60faf75fe297  gcc/testsuite/gdc.dg/pr106555.d
+ 9e838ba67909954cf1aa94614647413b  gcc/testsuite/gdc.dg/pr107592.d
+ 5e07b36b71c4e1c18324a1aa28b644c9  gcc/testsuite/gdc.dg/pr108050.d
+ 6749c2ba8be2e0d1e905bdca064df2ee  gcc/testsuite/gdc.dg/pr108167.d
+ 531ba2cfc6bb317d132b6b86e9221526  gcc/testsuite/gdc.dg/pr108877.d
+ c16aed3940c554d7f670f5852dff6bd8  gcc/testsuite/gdc.dg/pr108945.d
  d32aa8ed5ea10931be4ddb5bb9e863d8  gcc/testsuite/gdc.dg/pr89017.d
  53fa8db94d4ca3fc9ba83769733dc0e7  gcc/testsuite/gdc.dg/pr89041.d
  6c316b13f71ea31fcada56b58a41ebd1  gcc/testsuite/gdc.dg/pr89042a.d
*************** c315ba401242513acfc2cdc70141e5c7  gcc/te
*** 74409,74431 ****
  513fcf8d3ca12f72fdece27dd6670d31  gcc/testsuite/gdc.dg/simd17720a.d
  cc88f045df5f6f78caef226ba1080c83  gcc/testsuite/gdc.dg/simd17720b.d
  a212ab6fd6d4655cf609ad552047ca98  gcc/testsuite/gdc.dg/simd18489.d
  38c22d06146ca22bb0e7de6ff9d7d8d8  gcc/testsuite/gdc.dg/simd19224.d
  32eefa3de18cb277221ac224e95c2c9b  gcc/testsuite/gdc.dg/simd19627.d
  9785aaf465e6302e316fdc58f453d5b2  gcc/testsuite/gdc.dg/simd19628.d
  a404b46e0cb800e49ef56609790c6bae  gcc/testsuite/gdc.dg/simd19629.d
! 79e921aaf034c657a1cba5c0e0f99503  gcc/testsuite/gdc.dg/simd19630.d
! d9af962457cc347185a26f435d66e8f3  gcc/testsuite/gdc.dg/simd2a.d
! ec9183d920fc80bf84a90ac7d1bf49d9  gcc/testsuite/gdc.dg/simd2b.d
! 4ea83792041a561a7018bf7573aded49  gcc/testsuite/gdc.dg/simd2c.d
! b60e904c823429ae3ea86b4b9d31b307  gcc/testsuite/gdc.dg/simd2d.d
! 62b82eecb7e6e04806421d55ba286467  gcc/testsuite/gdc.dg/simd2e.d
! 99f5383f5aff3bdb8da709efa864fab8  gcc/testsuite/gdc.dg/simd2f.d
! 7b7594541d1d0c5fe694d6baa9fe79c9  gcc/testsuite/gdc.dg/simd2g.d
! fdd690a879a94f9a120c3d50b357807c  gcc/testsuite/gdc.dg/simd2h.d
! 01cc22b6b6bb5d6c3cc7e21c6449d81e  gcc/testsuite/gdc.dg/simd2i.d
! 4029c02331c764334d52a4d047275fe8  gcc/testsuite/gdc.dg/simd2j.d
  ae514e1e0dc35f480c8a12eb626e8e37  gcc/testsuite/gdc.dg/simd7951.d
- 806a5507b26a84986cef5feefc32276a  gcc/testsuite/gdc.dg/simd_ctfe.d
  e6da23dd8d6593b3e693bba3c6655d0e  gcc/testsuite/gdc.dg/special1.d
  a7c34dd8ee918654448f7d7b879eb96f  gcc/testsuite/gdc.dg/torture/array2.d
  38be24cf4164de4216f6f5628482be07  gcc/testsuite/gdc.dg/torture/array3.d
--- 79404,79434 ----
  513fcf8d3ca12f72fdece27dd6670d31  gcc/testsuite/gdc.dg/simd17720a.d
  cc88f045df5f6f78caef226ba1080c83  gcc/testsuite/gdc.dg/simd17720b.d
  a212ab6fd6d4655cf609ad552047ca98  gcc/testsuite/gdc.dg/simd18489.d
+ cd402195bc167b106007b4585477a144  gcc/testsuite/gdc.dg/simd18867.d
  38c22d06146ca22bb0e7de6ff9d7d8d8  gcc/testsuite/gdc.dg/simd19224.d
  32eefa3de18cb277221ac224e95c2c9b  gcc/testsuite/gdc.dg/simd19627.d
  9785aaf465e6302e316fdc58f453d5b2  gcc/testsuite/gdc.dg/simd19628.d
  a404b46e0cb800e49ef56609790c6bae  gcc/testsuite/gdc.dg/simd19629.d
! 97b2c5ba9b67b18188f4107b5ce41737  gcc/testsuite/gdc.dg/simd19630.d
! 5df134a10c407dd2b93cec02d5c689a3  gcc/testsuite/gdc.dg/simd19630b.d
! fd5b7790389093667f65a1f54b7b0490  gcc/testsuite/gdc.dg/simd19630c.d
! 700f6d168ca6b6bf81aa10b1659d6950  gcc/testsuite/gdc.dg/simd19788.d
! 0b0dacc3efb216c7f3c0a76ac1ace42d  gcc/testsuite/gdc.dg/simd21469.d
! 052e6f13c0cd63d6328d138d71f59e47  gcc/testsuite/gdc.dg/simd21672.d
! 22388523ed72e9652e24772c2bb5a88e  gcc/testsuite/gdc.dg/simd23077.d
! 739cd6713676b9cb52538fb7eea1c980  gcc/testsuite/gdc.dg/simd23084.d
! 1f9aa4ef4f3ffa26ff059cde56778081  gcc/testsuite/gdc.dg/simd23085.d
! d2644c92cace05d0fb6af7c573bf4d41  gcc/testsuite/gdc.dg/simd2a.d
! 84b66bf6165faefc42903afc32a3f8e7  gcc/testsuite/gdc.dg/simd2b.d
! 15edb49cb83cc70b2a0bbc4e8a8519f3  gcc/testsuite/gdc.dg/simd2c.d
! 75c2028cf059f3430a87cffede6ae7ba  gcc/testsuite/gdc.dg/simd2d.d
! 8d4265560bae01ce2b286d6a704b9071  gcc/testsuite/gdc.dg/simd2e.d
! 88eab132457ca34e094c773357d473c2  gcc/testsuite/gdc.dg/simd2f.d
! bb43bfdc0c6d56aa91447a4ed5e4132b  gcc/testsuite/gdc.dg/simd2g.d
! f0043ec96c6a4b20386957bb95d026e5  gcc/testsuite/gdc.dg/simd2h.d
! 3ff4c97315af57580d15fac33e8dfabe  gcc/testsuite/gdc.dg/simd2i.d
! 1633c66380e59ee711011b5084db8e21  gcc/testsuite/gdc.dg/simd2j.d
  ae514e1e0dc35f480c8a12eb626e8e37  gcc/testsuite/gdc.dg/simd7951.d
  e6da23dd8d6593b3e693bba3c6655d0e  gcc/testsuite/gdc.dg/special1.d
  a7c34dd8ee918654448f7d7b879eb96f  gcc/testsuite/gdc.dg/torture/array2.d
  38be24cf4164de4216f6f5628482be07  gcc/testsuite/gdc.dg/torture/array3.d
*************** d3cb0d42e94f3b4127de8609610ded70  gcc/te
*** 74459,74470 ****
--- 79462,79480 ----
  0e1133c49fba438fe64d8180953d6c57  gcc/testsuite/gdc.dg/torture/imports/pr106563math.d
  234daca943205896fce0ff4782d0870f  gcc/testsuite/gdc.dg/torture/imports/pr106563regex.d
  eebe0b1a8ecf5f5162d0d07addd22be4  gcc/testsuite/gdc.dg/torture/imports/pr106563uni.d
+ 688a4952974b86e51d56768c1ab59434  gcc/testsuite/gdc.dg/torture/imports/pr108055conv.d
+ 11af6bc37407477e6b53012a5574c0a9  gcc/testsuite/gdc.dg/torture/imports/pr108055spec.d
+ e253515f214e7f5bb8a972ce8348282f  gcc/testsuite/gdc.dg/torture/imports/pr108055write.d
+ 50c9072e0ffdfc079790d637e1a5c72a  gcc/testsuite/gdc.dg/torture/imports/pr109108.d
  646170aa418a99d37c59a7bb02130400  gcc/testsuite/gdc.dg/torture/init1.d
  1ae8edb9b2cd9747efb9868621aec4e8  gcc/testsuite/gdc.dg/torture/pr100882.d
  cede80748e43884ad3613a2a7e4b6ff3  gcc/testsuite/gdc.dg/torture/pr101273.d
  a24df8e498053d7ab8325fc58ede1835  gcc/testsuite/gdc.dg/torture/pr101282.d
  0fc7def8da03a8d1c23f337789aa59f9  gcc/testsuite/gdc.dg/torture/pr106563.d
  94fac34c5154803e3977e6d3bb798eac  gcc/testsuite/gdc.dg/torture/pr106623.d
+ bb3b5b6a4251926ee26d0a04242932f2  gcc/testsuite/gdc.dg/torture/pr108055.d
+ 41c17e6e62da4333262dbaa7b4e20510  gcc/testsuite/gdc.dg/torture/pr109108.d
+ ff744a0a8c5876d35d04359a49ff0f84  gcc/testsuite/gdc.dg/torture/pr109144.d
  580aadb24b666799e25f1f02ef3b7bbb  gcc/testsuite/gdc.dg/torture/pr92309.d
  d5626e21f8cdc22799175cb6adfddfd6  gcc/testsuite/gdc.dg/torture/pr94424.d
  ae5b279461655f243d767b80a6d0bc1b  gcc/testsuite/gdc.dg/torture/pr94777b.d
*************** b82b2d96f26d876bca525fdf413dab79  gcc/te
*** 74481,74488 ****
--- 79491,79508 ----
  44e1187137f18767ca90fd436d5296d7  gcc/testsuite/gdc.dg/torture/simd17344.d
  7f1ca4d8fd576ca1b1e6b65fa3493fdc  gcc/testsuite/gdc.dg/torture/simd19223.d
  422cd16a34555382631f0db8b649ea53  gcc/testsuite/gdc.dg/torture/simd19607.d
+ 84b1f436ef890e32ab264fff8db3f90a  gcc/testsuite/gdc.dg/torture/simd19632.d
+ f28b661d84b3331c6db1a70001cf18ba  gcc/testsuite/gdc.dg/torture/simd20041.d
  728ce04e32b5660cb36d183de72feb42  gcc/testsuite/gdc.dg/torture/simd20052.d
+ 2763bc38b9ffd25bf17e85e9903c13d0  gcc/testsuite/gdc.dg/torture/simd21673.d
+ f386e8206ca9c6e53124b2d442f17ae8  gcc/testsuite/gdc.dg/torture/simd21676.d
  681abd01df82493116a34bbdf36b32ea  gcc/testsuite/gdc.dg/torture/simd21727.d
+ aa8c436e537e177de301b9f308a22a5d  gcc/testsuite/gdc.dg/torture/simd22438.d
+ 086e98463176ee9d29b6e9b2299a03bc  gcc/testsuite/gdc.dg/torture/simd23009.d
+ 22388523ed72e9652e24772c2bb5a88e  gcc/testsuite/gdc.dg/torture/simd23077.d
+ bdba59e5c71c4c7d0d1603859a7f6cc6  gcc/testsuite/gdc.dg/torture/simd23084.d
+ 1f9aa4ef4f3ffa26ff059cde56778081  gcc/testsuite/gdc.dg/torture/simd23085.d
+ 4d10a117b830bde1b006284a2bb59955  gcc/testsuite/gdc.dg/torture/simd23218.d
  b927eb63d97cd85ed9a074da8ccff420  gcc/testsuite/gdc.dg/torture/simd3.d
  4988c4cb18b3c8c4ddca61b36792d24e  gcc/testsuite/gdc.dg/torture/simd4.d
  20f83bf87a01f535221b6a83983a5d6f  gcc/testsuite/gdc.dg/torture/simd6.d
*************** c8fea1c3e1d9839dc5db775a30ef5b81  gcc/te
*** 74491,74509 ****
  8f743e86b5b9e6719013a739438430fd  gcc/testsuite/gdc.dg/torture/simd7413a.d
  550f3d6bc1c80bf8083e9594f6d0a23f  gcc/testsuite/gdc.dg/torture/simd7413b.d
  be211d00217b412a281626e091521ca8  gcc/testsuite/gdc.dg/torture/simd7414.d
  7bf8e380f88dbe38fd93751e7ff880f9  gcc/testsuite/gdc.dg/torture/simd9200.d
  db32bdd5bf5efb008a8d0769d3d86934  gcc/testsuite/gdc.dg/torture/simd9304.d
  c8641c4ecb508bce56fb288cf0e0f8e3  gcc/testsuite/gdc.dg/torture/simd9449.d
  f74a24d5b20a5e26cd6f9d895a213ec6  gcc/testsuite/gdc.dg/torture/simd9910.d
! f2f0c31f96e508a7f142c58ec8ecb02c  gcc/testsuite/gdc.dg/torture/torture.exp
  c7ab3cec87c4498faece019276ff666c  gcc/testsuite/gdc.dg/ubsan/pr88957.d
! 64ab537cbf0eb45bc01fbad307ba613c  gcc/testsuite/gdc.dg/ubsan/ubsan.exp
  310f79be9999b0b9e22f7cfbfe79f71d  gcc/testsuite/gdc.test/README.gcc
  39d4bcd12f778b37cbfbe3b82aa1da94  gcc/testsuite/gdc.test/compilable/99bottles.d
  93a145e4de3beb6c8a655fcdc4d097ee  gcc/testsuite/gdc.test/compilable/Test16206.d
  d0da0bd439ac994effa1536916a8cb97  gcc/testsuite/gdc.test/compilable/a3682.d
! fe92e980839f07bf95701e96735f857b  gcc/testsuite/gdc.test/compilable/aggr_alignment.d
! 19b56d2887fbdc4bf4acf986ff96de65  gcc/testsuite/gdc.test/compilable/aliasassign.d
  e94dbc21b72d0458fe61f1f27467da09  gcc/testsuite/gdc.test/compilable/aliasdecl.d
  c830eb21b0dd96c9b8d314d8bbdf13b3  gcc/testsuite/gdc.test/compilable/alignment.d
  07983dc221a81489d42ae7308d4bb3b1  gcc/testsuite/gdc.test/compilable/art4769.d
--- 79511,79541 ----
  8f743e86b5b9e6719013a739438430fd  gcc/testsuite/gdc.dg/torture/simd7413a.d
  550f3d6bc1c80bf8083e9594f6d0a23f  gcc/testsuite/gdc.dg/torture/simd7413b.d
  be211d00217b412a281626e091521ca8  gcc/testsuite/gdc.dg/torture/simd7414.d
+ 41191dd4dc62f98586fc575b276c626c  gcc/testsuite/gdc.dg/torture/simd8.d
+ 315bbeb7c7679e7577196ade6927cc32  gcc/testsuite/gdc.dg/torture/simd9.d
  7bf8e380f88dbe38fd93751e7ff880f9  gcc/testsuite/gdc.dg/torture/simd9200.d
  db32bdd5bf5efb008a8d0769d3d86934  gcc/testsuite/gdc.dg/torture/simd9304.d
  c8641c4ecb508bce56fb288cf0e0f8e3  gcc/testsuite/gdc.dg/torture/simd9449.d
  f74a24d5b20a5e26cd6f9d895a213ec6  gcc/testsuite/gdc.dg/torture/simd9910.d
! 13270a6e0518a1fedb4b7c92dad1f674  gcc/testsuite/gdc.dg/torture/simd_blendvector.d
! 7317bddfd1f4ac0237cccc4250927413  gcc/testsuite/gdc.dg/torture/simd_cond.d
! be7835e3f28c9171a359c46518167265  gcc/testsuite/gdc.dg/torture/simd_convertvector.d
! ff4a85fd83a4be026ef390f6a00c1202  gcc/testsuite/gdc.dg/torture/simd_load.d
! a0e0944c7671eea74a608e5667074acf  gcc/testsuite/gdc.dg/torture/simd_logical.d
! d21b6150a8d726bb469bed3f4c7015d8  gcc/testsuite/gdc.dg/torture/simd_prefetch.d
! 0f6b11142f7729df8824f53d8910fbe7  gcc/testsuite/gdc.dg/torture/simd_shuffle.d
! 174db156eca98308869e4cd982bc2123  gcc/testsuite/gdc.dg/torture/simd_shufflevector.d
! 5715a07d9f806d53b0dc575b1c5f92cc  gcc/testsuite/gdc.dg/torture/simd_store.d
! d2b0854f39aed250c98010934317a0af  gcc/testsuite/gdc.dg/torture/torture.exp
! 35b85b5b7759f88eacfa2a4d51303dae  gcc/testsuite/gdc.dg/ubsan/attr_no_sanitize2.d
  c7ab3cec87c4498faece019276ff666c  gcc/testsuite/gdc.dg/ubsan/pr88957.d
! 907a6d9761ab8faff8742c9cbdcae84f  gcc/testsuite/gdc.dg/ubsan/ubsan.exp
  310f79be9999b0b9e22f7cfbfe79f71d  gcc/testsuite/gdc.test/README.gcc
  39d4bcd12f778b37cbfbe3b82aa1da94  gcc/testsuite/gdc.test/compilable/99bottles.d
  93a145e4de3beb6c8a655fcdc4d097ee  gcc/testsuite/gdc.test/compilable/Test16206.d
  d0da0bd439ac994effa1536916a8cb97  gcc/testsuite/gdc.test/compilable/a3682.d
! 695153e68a4a8b3579aeca75fd920e75  gcc/testsuite/gdc.test/compilable/aggr_alignment.d
! 9e6586be83fe48d4f429380e3b4729f4  gcc/testsuite/gdc.test/compilable/aliasassign.d
  e94dbc21b72d0458fe61f1f27467da09  gcc/testsuite/gdc.test/compilable/aliasdecl.d
  c830eb21b0dd96c9b8d314d8bbdf13b3  gcc/testsuite/gdc.test/compilable/alignment.d
  07983dc221a81489d42ae7308d4bb3b1  gcc/testsuite/gdc.test/compilable/art4769.d
*************** c6f64fcc66716ad719d6a22796d0fbec  gcc/te
*** 74516,74522 ****
  506432c79f059a09154bcc8193d57812  gcc/testsuite/gdc.test/compilable/b16244.d
  167ffcae45e7ea8e9abfd504753d7c72  gcc/testsuite/gdc.test/compilable/b16346.d
  c5c7e97bc1737359df54f060aaec7469  gcc/testsuite/gdc.test/compilable/b16355.d
- e36aed02d75a8dbd4d6223aa24f4b55c  gcc/testsuite/gdc.test/compilable/b16360.d
  020127a91629a559be2c4425c776ffb5  gcc/testsuite/gdc.test/compilable/b16382.d
  37abce4177ae3408ada0f4f86ea35a7b  gcc/testsuite/gdc.test/compilable/b16483.d
  503fa1bd80a250813e17e46cda25c2fa  gcc/testsuite/gdc.test/compilable/b16598.d
--- 79548,79553 ----
*************** aa31ae3115526255bd9b4fcc578a6909  gcc/te
*** 74540,74545 ****
--- 79571,79577 ----
  f6cf3a07bcc035e041f5145a73b0acab  gcc/testsuite/gdc.test/compilable/b20885.d
  6f806c291d4b0243cc9a3506f96d901f  gcc/testsuite/gdc.test/compilable/b20938.d
  37f3586142dde8e3fee6cab474108bd5  gcc/testsuite/gdc.test/compilable/b21285.d
+ b70235cd02c0e382e8c76e4d9c446157  gcc/testsuite/gdc.test/compilable/b23620.d
  dd6b060571b0749203963259463139ec  gcc/testsuite/gdc.test/compilable/b33.d
  a2225822551ba3ef0ca3817276a127c1  gcc/testsuite/gdc.test/compilable/b6227.d
  d7585558f60cab3c210a6f2bbbce4357  gcc/testsuite/gdc.test/compilable/b6395.d
*************** fbecccee350c9b5a8815a306c8c7a540  gcc/te
*** 74555,74574 ****
  3363c5d962731388ddd2be858af1f9cc  gcc/testsuite/gdc.test/compilable/callconv.d
  0e36f750b64889cd6faa25256c48ebe8  gcc/testsuite/gdc.test/compilable/casttuple.d
  912439c2b6495e16ada18e8d781325f0  gcc/testsuite/gdc.test/compilable/ccompile.d
! 62abc6e3ed34bf34772d48be91cd85ca  gcc/testsuite/gdc.test/compilable/cdcmp.d
  2195ce4127b8a9f492fa85a2796e69c1  gcc/testsuite/gdc.test/compilable/checkimports3.d
  2dc395b33298bfa04c55987e2421b833  gcc/testsuite/gdc.test/compilable/chkformat.d
! 3c7d6ba4d9dcc1c4028f235cede53e71  gcc/testsuite/gdc.test/compilable/commontype.d
! a8eaa9dfba647b99f70e04773203a5e4  gcc/testsuite/gdc.test/compilable/compilable.exp
! 5ed31c5c58089ef75275777198d91a32  gcc/testsuite/gdc.test/compilable/compile1.d
  f99c18d556cf5938ebbb7d3b40c97dd7  gcc/testsuite/gdc.test/compilable/const.d
  cb099446f4c201cc98f8b7b70599433f  gcc/testsuite/gdc.test/compilable/covariant_override.d
  147666b156671e03a85243ba4426d716  gcc/testsuite/gdc.test/compilable/cpp_abi_tag_unused.d
! 521dc786fe75292c6bb1459bb582c00f  gcc/testsuite/gdc.test/compilable/cppmangle.d
  b69be4810e3ae0bc0ca5518561733f11  gcc/testsuite/gdc.test/compilable/cppmangle2.d
! cef0dfcb3e38b8dfc3f52c1df4c72f42  gcc/testsuite/gdc.test/compilable/cppmangle3.d
  dcb6459009e7567342912938e6f5aabf  gcc/testsuite/gdc.test/compilable/cppmangle_abitag.d
  f14da5eed6d94462ca44fdb445eeae9f  gcc/testsuite/gdc.test/compilable/ctfe_math.d
  857dd7cb6020badfa814837f2ed143e0  gcc/testsuite/gdc.test/compilable/ddoc1.d
  a9609bf56f52db363bdf76f9156a2456  gcc/testsuite/gdc.test/compilable/ddoc10.d
  74990bf8bc55d39b1555ac59d55801bf  gcc/testsuite/gdc.test/compilable/ddoc10236.d
--- 79587,79607 ----
  3363c5d962731388ddd2be858af1f9cc  gcc/testsuite/gdc.test/compilable/callconv.d
  0e36f750b64889cd6faa25256c48ebe8  gcc/testsuite/gdc.test/compilable/casttuple.d
  912439c2b6495e16ada18e8d781325f0  gcc/testsuite/gdc.test/compilable/ccompile.d
! a8b6758c3ba22d9d2f071a8dc18ecab5  gcc/testsuite/gdc.test/compilable/cdcmp.d
  2195ce4127b8a9f492fa85a2796e69c1  gcc/testsuite/gdc.test/compilable/checkimports3.d
  2dc395b33298bfa04c55987e2421b833  gcc/testsuite/gdc.test/compilable/chkformat.d
! 641f46c4748210b1af1c18e0ff967755  gcc/testsuite/gdc.test/compilable/commontype.d
! bd24ce7f1333e895e549e1f53f945d4b  gcc/testsuite/gdc.test/compilable/compilable.exp
! c96c3e8b2321d73e0973e2c2fd8bbf35  gcc/testsuite/gdc.test/compilable/compile1.d
  f99c18d556cf5938ebbb7d3b40c97dd7  gcc/testsuite/gdc.test/compilable/const.d
  cb099446f4c201cc98f8b7b70599433f  gcc/testsuite/gdc.test/compilable/covariant_override.d
  147666b156671e03a85243ba4426d716  gcc/testsuite/gdc.test/compilable/cpp_abi_tag_unused.d
! 6c4f47042f052830f88aadcf29ab9003  gcc/testsuite/gdc.test/compilable/cppmangle.d
  b69be4810e3ae0bc0ca5518561733f11  gcc/testsuite/gdc.test/compilable/cppmangle2.d
! 0ebbf5c23d04675fd1e7685aabd2aa8b  gcc/testsuite/gdc.test/compilable/cppmangle3.d
  dcb6459009e7567342912938e6f5aabf  gcc/testsuite/gdc.test/compilable/cppmangle_abitag.d
  f14da5eed6d94462ca44fdb445eeae9f  gcc/testsuite/gdc.test/compilable/ctfe_math.d
+ 3507b2b18c7e1d1dcb294c2b8f586a05  gcc/testsuite/gdc.test/compilable/dbitfield.d
  857dd7cb6020badfa814837f2ed143e0  gcc/testsuite/gdc.test/compilable/ddoc1.d
  a9609bf56f52db363bdf76f9156a2456  gcc/testsuite/gdc.test/compilable/ddoc10.d
  74990bf8bc55d39b1555ac59d55801bf  gcc/testsuite/gdc.test/compilable/ddoc10236.d
*************** e3a824c13d575010feaa8a04a40f8185  gcc/te
*** 74638,74660 ****
  9d089db222c5dfdc412960134dbdd5d5  gcc/testsuite/gdc.test/compilable/ddoc9903.d
  7e94f06d537f408b81e58b54144950de  gcc/testsuite/gdc.test/compilable/ddocYear.d
  95bc433ac69cd87aba7a438c4e0c89ab  gcc/testsuite/gdc.test/compilable/ddoc_markdown_breaks.d
- 5e7686dac42b4faeb0b449ccde6ac501  gcc/testsuite/gdc.test/compilable/ddoc_markdown_breaks_verbose.d
  7cdb906708020dc86b5dae3c36d69bfa  gcc/testsuite/gdc.test/compilable/ddoc_markdown_code.d
- 24a80dc85e3f7caf7080f8703c458059  gcc/testsuite/gdc.test/compilable/ddoc_markdown_code_verbose.d
  d5212bf8222d1c6c407aaefc446ad536  gcc/testsuite/gdc.test/compilable/ddoc_markdown_emphasis.d
- e7929a3abb4880d4d1f37a9e82951d64  gcc/testsuite/gdc.test/compilable/ddoc_markdown_emphasis_verbose.d
  ffad3bda5e99a2d99f87457887608830  gcc/testsuite/gdc.test/compilable/ddoc_markdown_escapes.d
  8de8edc58b124d5e8a5ce5e8196a3d27  gcc/testsuite/gdc.test/compilable/ddoc_markdown_headings.d
- c37ea65511d331ad9ac32c90374e47f8  gcc/testsuite/gdc.test/compilable/ddoc_markdown_headings_verbose.d
  54d4f89fce0abfd0a6eefe4560406218  gcc/testsuite/gdc.test/compilable/ddoc_markdown_links.d
- 6abb48774d5b5e1308163b7b8134383a  gcc/testsuite/gdc.test/compilable/ddoc_markdown_links_verbose.d
  b6a29e9c9691d62dff07a7a7031675b8  gcc/testsuite/gdc.test/compilable/ddoc_markdown_lists.d
- d3adc706344f56f08798c71ff0f59191  gcc/testsuite/gdc.test/compilable/ddoc_markdown_lists_verbose.d
  1533aeda9456a4a2e27bc7573191c0e6  gcc/testsuite/gdc.test/compilable/ddoc_markdown_quote.d
- f27b2d15c80f5b4a48323b1760364967  gcc/testsuite/gdc.test/compilable/ddoc_markdown_quote_verbose.d
  126bab45d0e222c8f6e69a210f8969fd  gcc/testsuite/gdc.test/compilable/ddoc_markdown_tables.d
  3b7772823323c7c2d72048b87e2e3e97  gcc/testsuite/gdc.test/compilable/ddoc_markdown_tables_22285.d
- a947db7dfa97ef8f22c053d5827f790a  gcc/testsuite/gdc.test/compilable/ddoc_markdown_tables_verbose.d
  91a1d5e8954ba2200ecf5c1fa8a0b1b5  gcc/testsuite/gdc.test/compilable/ddocbackticks.d
  b4b3da555766eb0b4b5db38e61553d4f  gcc/testsuite/gdc.test/compilable/ddocunittest.d
  e84e0d42d3044dbde3d74652eb93e92d  gcc/testsuite/gdc.test/compilable/debugInference.d
--- 79671,79685 ----
*************** ece3fcebff1c5a8167a5e21587d73d44  gcc/te
*** 74671,74708 ****
  5178e0b9eb9d63604be2885745879bea  gcc/testsuite/gdc.test/compilable/dip22d.d
  27b5feb8c08101bf8d4b6f035f03db6f  gcc/testsuite/gdc.test/compilable/disable_new.d
  19a835fa32d4bda3ea4981962af102e7  gcc/testsuite/gdc.test/compilable/dlangui_crash.d
! a4ed0235dc4676b602b839f683e6ac9e  gcc/testsuite/gdc.test/compilable/dtoh_21217.d
! bf6b53c214b542e7c76d905ec0097abc  gcc/testsuite/gdc.test/compilable/dtoh_AliasDeclaration.d
! 9d42fe9106b687b0445354ee4eecfa34  gcc/testsuite/gdc.test/compilable/dtoh_AliasDeclaration_98.d
! 2b4643ab14f560ef3979ae8dfd05dd3e  gcc/testsuite/gdc.test/compilable/dtoh_AnonDeclaration.d
! 963a0be62feb7267a21c738f757013a1  gcc/testsuite/gdc.test/compilable/dtoh_CPPNamespaceDeclaration.d
! fa4319ec6cd173338ac86893e7645e0f  gcc/testsuite/gdc.test/compilable/dtoh_ClassDeclaration.d
! 24c83be4f5996dfdbdf33fc940a9ad2a  gcc/testsuite/gdc.test/compilable/dtoh_StructDeclaration.d
! 3e7eb4e148a53168e10c5d0152bc35a4  gcc/testsuite/gdc.test/compilable/dtoh_TemplateDeclaration.d
! be05cdfdba1d3ded6ca4120b5da10229  gcc/testsuite/gdc.test/compilable/dtoh_UnionDeclaration.d
! a904811cb0834bf34be060b4c1f81d01  gcc/testsuite/gdc.test/compilable/dtoh_VarDeclaration.d
! 2aad8ffa861efc49f96e947c5bd60c4d  gcc/testsuite/gdc.test/compilable/dtoh_cpp98_compat.d
! cf97660b76aed19af01f9865598cce0a  gcc/testsuite/gdc.test/compilable/dtoh_enum.d
! 8c00ec7fa1821b041faca7acb653ad0b  gcc/testsuite/gdc.test/compilable/dtoh_enum_cpp98.d
! 9aba1e881c217bb0ef7e9df88e50707a  gcc/testsuite/gdc.test/compilable/dtoh_expressions.d
! 6cd1b9aa1e5105a497f414bc577134f8  gcc/testsuite/gdc.test/compilable/dtoh_extern_type.d
! 1ff04e49dc0cbb03890e5a887d12adb3  gcc/testsuite/gdc.test/compilable/dtoh_forwarding.d
! 3cd99cbb569fe2d3805b5fe7c4a5eb38  gcc/testsuite/gdc.test/compilable/dtoh_functions.d
! abc4ff1c3c0f43608659c49594f8f3dd  gcc/testsuite/gdc.test/compilable/dtoh_ignored.d
! 9b74c941356cc57ad9bc98e02ea00ee0  gcc/testsuite/gdc.test/compilable/dtoh_invalid_identifiers.d
! 421fd75ed5872bd0f03f4593037cef55  gcc/testsuite/gdc.test/compilable/dtoh_mangling.d
! 7a99cf271b26b7d736694553621af148  gcc/testsuite/gdc.test/compilable/dtoh_names.d
! b850286913eadf79ae12311c953f6ee1  gcc/testsuite/gdc.test/compilable/dtoh_protection.d
! 94cef5d31a337d0efef4add95cabb8c3  gcc/testsuite/gdc.test/compilable/dtoh_required_symbols.d
! 92812ca9d9753b4c4e9d0d73693ac393  gcc/testsuite/gdc.test/compilable/dtoh_special_enum.d
! 39cb1233814ee463242b6a732af5324d  gcc/testsuite/gdc.test/compilable/dtoh_unittest_block.d
! e8acf8131b2108cb77f98dfb57bdb88c  gcc/testsuite/gdc.test/compilable/dtoh_verbose.d
  8fe1999b7dc753be465ad414e5ced86b  gcc/testsuite/gdc.test/compilable/dtorfields.d
  9f24034cca71b2232520662f552a99ab  gcc/testsuite/gdc.test/compilable/dtorfields_deprecation.d
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/empty_file.d
  7013b630e9767ffb53b9375f518abaee  gcc/testsuite/gdc.test/compilable/emptygenmain.d
  90f6d815cae8c116f4d22a25f5cc61b4  gcc/testsuite/gdc.test/compilable/enumbasearithmetic.d
  7f97d3263822f7811155ec0ef0ba7d2b  gcc/testsuite/gdc.test/compilable/exception.d
  6e4898300968cb02708e13dc4c48b7e3  gcc/testsuite/gdc.test/compilable/extra-files/c6395.d
  b439564acc50c00a17aa583a0eea6a79  gcc/testsuite/gdc.test/compilable/extra-files/ddoc10367.ddoc
  f8d48831eff10cb23399c59486930574  gcc/testsuite/gdc.test/compilable/extra-files/ddoc198.ddoc
--- 79696,79734 ----
  5178e0b9eb9d63604be2885745879bea  gcc/testsuite/gdc.test/compilable/dip22d.d
  27b5feb8c08101bf8d4b6f035f03db6f  gcc/testsuite/gdc.test/compilable/disable_new.d
  19a835fa32d4bda3ea4981962af102e7  gcc/testsuite/gdc.test/compilable/dlangui_crash.d
! 6657a987f8e5ea933bfda1918dd5b3ff  gcc/testsuite/gdc.test/compilable/dtoh_21217.d
! 9c17173fd900ef5ec5e576a13c2035d4  gcc/testsuite/gdc.test/compilable/dtoh_AliasDeclaration.d
! 585e4afbf498433076a80d7cf8345421  gcc/testsuite/gdc.test/compilable/dtoh_AliasDeclaration_98.d
! 1d99d2bc4c20a959c63d21832240a02c  gcc/testsuite/gdc.test/compilable/dtoh_AnonDeclaration.d
! 671b8ea785bcb79cc8d4f1a912a22d51  gcc/testsuite/gdc.test/compilable/dtoh_CPPNamespaceDeclaration.d
! 840d69c226a21ac8c3a3c1b4cfd6834e  gcc/testsuite/gdc.test/compilable/dtoh_ClassDeclaration.d
! 9c26d9bf141272a2c2a869d25aed075a  gcc/testsuite/gdc.test/compilable/dtoh_StructDeclaration.d
! 5ce0ebb85cbb3d412143c38b91aac424  gcc/testsuite/gdc.test/compilable/dtoh_TemplateDeclaration.d
! a67a923fff901849c12defffb276680b  gcc/testsuite/gdc.test/compilable/dtoh_UnionDeclaration.d
! 7d955c40525206951fce203f46fd30b4  gcc/testsuite/gdc.test/compilable/dtoh_VarDeclaration.d
! 8bb39e8cee1ae6d61d691e78989b728b  gcc/testsuite/gdc.test/compilable/dtoh_cpp98_compat.d
! 9700fda1e2bc146c7e25108a50b14c9e  gcc/testsuite/gdc.test/compilable/dtoh_enum.d
! 37f55899032d407f3b0653606202ec49  gcc/testsuite/gdc.test/compilable/dtoh_enum_cpp98.d
! e2f2027570a3c5dde17c9a8d1f26ecf7  gcc/testsuite/gdc.test/compilable/dtoh_expressions.d
! aea612b99d0330abf7b5b676425c924e  gcc/testsuite/gdc.test/compilable/dtoh_extern_type.d
! 1af7ca106c9c623f4c3a9b716291a8d6  gcc/testsuite/gdc.test/compilable/dtoh_forwarding.d
! dfdca8cfc5d153846f60c43d1a12d9cd  gcc/testsuite/gdc.test/compilable/dtoh_functions.d
! 68281bd52968b56df91bf4775ce2baee  gcc/testsuite/gdc.test/compilable/dtoh_ignored.d
! 1705cb5dbd4492b0030aae933d4ba277  gcc/testsuite/gdc.test/compilable/dtoh_invalid_identifiers.d
! 19182c4d4982a7c9759a2656b1e38e15  gcc/testsuite/gdc.test/compilable/dtoh_mangling.d
! 8b616820b6c5194c08d2d32f7304979a  gcc/testsuite/gdc.test/compilable/dtoh_names.d
! abcb9343fd057dba5404300afbdc0d3a  gcc/testsuite/gdc.test/compilable/dtoh_protection.d
! 49f593d7e38ca4c8e39239f5d90796a1  gcc/testsuite/gdc.test/compilable/dtoh_required_symbols.d
! a54d34baf37716d1847e42e2e8fa36ed  gcc/testsuite/gdc.test/compilable/dtoh_special_enum.d
! 36b0a170930a352298a7440d65b0e0a7  gcc/testsuite/gdc.test/compilable/dtoh_unittest_block.d
! 8f1c422b1b051604f6b7d368b5c266d9  gcc/testsuite/gdc.test/compilable/dtoh_verbose.d
  8fe1999b7dc753be465ad414e5ced86b  gcc/testsuite/gdc.test/compilable/dtorfields.d
  9f24034cca71b2232520662f552a99ab  gcc/testsuite/gdc.test/compilable/dtorfields_deprecation.d
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/empty_file.d
  7013b630e9767ffb53b9375f518abaee  gcc/testsuite/gdc.test/compilable/emptygenmain.d
  90f6d815cae8c116f4d22a25f5cc61b4  gcc/testsuite/gdc.test/compilable/enumbasearithmetic.d
  7f97d3263822f7811155ec0ef0ba7d2b  gcc/testsuite/gdc.test/compilable/exception.d
+ df4ecb9ef4fdeba279c36a5f795fa64c  gcc/testsuite/gdc.test/compilable/extra-files/build23499.d
  6e4898300968cb02708e13dc4c48b7e3  gcc/testsuite/gdc.test/compilable/extra-files/c6395.d
  b439564acc50c00a17aa583a0eea6a79  gcc/testsuite/gdc.test/compilable/extra-files/ddoc10367.ddoc
  f8d48831eff10cb23399c59486930574  gcc/testsuite/gdc.test/compilable/extra-files/ddoc198.ddoc
*************** ae1f4203bf550794e707ed5be806367b  gcc/te
*** 74721,74731 ****
  cf2cb48cde6a5cacaab45cf9daa47dd1  gcc/testsuite/gdc.test/compilable/extra-files/example7190/models/HomeModel.d
  24df1b88c3f5551299f701fd14ff4a76  gcc/testsuite/gdc.test/compilable/extra-files/header1.d
  ad8d83a34b5a26e396d29ee59edb35d8  gcc/testsuite/gdc.test/compilable/extra-files/header17125.d
! cb70742d66b63eaa9dac86ec51b22368  gcc/testsuite/gdc.test/compilable/extra-files/header18365.d
! b9e2b79f5b3baca6745ad5fe1b8c5841  gcc/testsuite/gdc.test/compilable/extra-files/header2.d
  afe402733aa720a2cd8e8cc8e693949d  gcc/testsuite/gdc.test/compilable/extra-files/header3.d
  96b3d751c92c490a3213da0030540e86  gcc/testsuite/gdc.test/compilable/extra-files/imp12624.d
! 038135fba76af92f75037b2c58ae885d  gcc/testsuite/gdc.test/compilable/extra-files/imp9057.d
  8568ce2d1753427d734d5733834e6693  gcc/testsuite/gdc.test/compilable/extra-files/imp9057_2.d
  84bebd871a01f556191f22e1fa9eace9  gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d
  fbb312d5cafb03938994c428c2ed63d8  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37/datetime/common.d
--- 79747,79757 ----
  cf2cb48cde6a5cacaab45cf9daa47dd1  gcc/testsuite/gdc.test/compilable/extra-files/example7190/models/HomeModel.d
  24df1b88c3f5551299f701fd14ff4a76  gcc/testsuite/gdc.test/compilable/extra-files/header1.d
  ad8d83a34b5a26e396d29ee59edb35d8  gcc/testsuite/gdc.test/compilable/extra-files/header17125.d
! 84e275b184b9aa10c41ec3002d651f5f  gcc/testsuite/gdc.test/compilable/extra-files/header18365.d
! 885030e1fb5b2651af1a87f0d82062ca  gcc/testsuite/gdc.test/compilable/extra-files/header2.d
  afe402733aa720a2cd8e8cc8e693949d  gcc/testsuite/gdc.test/compilable/extra-files/header3.d
  96b3d751c92c490a3213da0030540e86  gcc/testsuite/gdc.test/compilable/extra-files/imp12624.d
! a57dc9c2a5c20ac14e15d1ab50d95a09  gcc/testsuite/gdc.test/compilable/extra-files/imp9057.d
  8568ce2d1753427d734d5733834e6693  gcc/testsuite/gdc.test/compilable/extra-files/imp9057_2.d
  84bebd871a01f556191f22e1fa9eace9  gcc/testsuite/gdc.test/compilable/extra-files/minimal/object.d
  fbb312d5cafb03938994c428c2ed63d8  gcc/testsuite/gdc.test/compilable/extra-files/pkgDIP37/datetime/common.d
*************** cb6818365b29b41ad47f5424c409e99c  gcc/te
*** 74745,74750 ****
--- 79771,79778 ----
  ef173d2cdbc0bc5a02f0c5d0cbd51949  gcc/testsuite/gdc.test/compilable/extra-files/serenity7190/core/Model.d
  9f668d225fea83eafca80d0c1f8e96b8  gcc/testsuite/gdc.test/compilable/extra-files/test16080b.d
  1eb726ec1e3b3c09d563bfeba4931136  gcc/testsuite/gdc.test/compilable/extra-files/test20280a.d
+ fb236a7127b6d48fe9a40a7cf59bdd47  gcc/testsuite/gdc.test/compilable/extra-files/test23626a.d
+ 2ce64eff388d8039e70e7c45b5f951a7  gcc/testsuite/gdc.test/compilable/extra-files/test23626b.d
  52dedd0bc0265044807934e4f228636d  gcc/testsuite/gdc.test/compilable/fail137.d
  513a2b1874c3c5a798b1586ac310cc31  gcc/testsuite/gdc.test/compilable/fail260.d
  b552f44c7ef16a065db8c305bc20c029  gcc/testsuite/gdc.test/compilable/fieldwise.d
*************** e35a9ad65780f43e25b76de0308cbde9  gcc/te
*** 74790,74796 ****
  a6497ef98e6b9c1e991d98f5af5b9f0f  gcc/testsuite/gdc.test/compilable/ice13819.d
  2297e44da705944456f3d87b9fb0db95  gcc/testsuite/gdc.test/compilable/ice13874.d
  23ab39f3c47038f5b9963eb369ef9aa8  gcc/testsuite/gdc.test/compilable/ice13886.d
! 2e2f650fe5da6573ba343703f7e9f196  gcc/testsuite/gdc.test/compilable/ice13920.d
  7c9984409abfae9271756cf23f4fd4db  gcc/testsuite/gdc.test/compilable/ice13968.d
  57cda19fc10b3e3937afdfa9759da010  gcc/testsuite/gdc.test/compilable/ice14075.d
  947e7307b3b3e83bde0d771fd17cecef  gcc/testsuite/gdc.test/compilable/ice14739.d
--- 79818,79824 ----
  a6497ef98e6b9c1e991d98f5af5b9f0f  gcc/testsuite/gdc.test/compilable/ice13819.d
  2297e44da705944456f3d87b9fb0db95  gcc/testsuite/gdc.test/compilable/ice13874.d
  23ab39f3c47038f5b9963eb369ef9aa8  gcc/testsuite/gdc.test/compilable/ice13886.d
! 8f9281f7c4633b43f033fe5711a5f158  gcc/testsuite/gdc.test/compilable/ice13920.d
  7c9984409abfae9271756cf23f4fd4db  gcc/testsuite/gdc.test/compilable/ice13968.d
  57cda19fc10b3e3937afdfa9759da010  gcc/testsuite/gdc.test/compilable/ice14075.d
  947e7307b3b3e83bde0d771fd17cecef  gcc/testsuite/gdc.test/compilable/ice14739.d
*************** fb74ec9731e081481c9cb9f98f6dcdc8  gcc/te
*** 74831,74846 ****
--- 79859,79880 ----
  e549fb3fb27aef58c9fb0e637020f69b  gcc/testsuite/gdc.test/compilable/imports/checkimports3a.d
  f6dc0b6e038af5071ee1975e134b72f2  gcc/testsuite/gdc.test/compilable/imports/checkimports3b.d
  f42b040cc735f147de9e381788dcc63b  gcc/testsuite/gdc.test/compilable/imports/checkimports3c.d
+ 692529dfdfa147098a56106a9b118e36  gcc/testsuite/gdc.test/compilable/imports/cimports2a.i
+ 6274b24fdb136ad0547252b1bd73b757  gcc/testsuite/gdc.test/compilable/imports/cimports2b.i
  181e788a386ac8cb359ed9cd7b9eeffd  gcc/testsuite/gdc.test/compilable/imports/cstuff3.c
  957c95be0044c62b0a6c57145ffd62c8  gcc/testsuite/gdc.test/compilable/imports/defaa.d
  d6c15f746a2feba66db905f13d4368c5  gcc/testsuite/gdc.test/compilable/imports/defab.d
  51c4cc09ad07993ac2f4044028515968  gcc/testsuite/gdc.test/compilable/imports/defac.d
  57669e79302b6a7341ca254736da39ed  gcc/testsuite/gdc.test/compilable/imports/defad.d
+ 25f28597e62ebab0394fa4e6b6cc4873  gcc/testsuite/gdc.test/compilable/imports/defines.c
  ad665c5d6e56c4f3b4f2ebee84c46319  gcc/testsuite/gdc.test/compilable/imports/diag12598a.d
  abe63f7624cf794cd7b3698661f93ee6  gcc/testsuite/gdc.test/compilable/imports/dip22.d
  8b2f94f2c9591cd94d8c008b51ef253e  gcc/testsuite/gdc.test/compilable/imports/dip22d.d
  892b0476d152077e445bae0cb08d1712  gcc/testsuite/gdc.test/compilable/imports/dip22e.d
  7a8bfeae02d83ffdff9a24a22e038ae6  gcc/testsuite/gdc.test/compilable/imports/f313.d
+ 5f87abd4a63353e72ebf2348b828305d  gcc/testsuite/gdc.test/compilable/imports/file23499.d
+ ae08d90b111732d2a91d065e1bdae186  gcc/testsuite/gdc.test/compilable/imports/format23327.d
+ d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/format23327/write.d
  257c7bfcfd7f8aa0d73ba9e683464feb  gcc/testsuite/gdc.test/compilable/imports/fwdref12201a.d
  eae7f13df60ea789889474fd66b8825e  gcc/testsuite/gdc.test/compilable/imports/fwdref2_test17548.d
  a3ec949c029ba8d789fb2062d3d42b03  gcc/testsuite/gdc.test/compilable/imports/fwdref9514.d
*************** c1d1d74046f5a2e29b3546ad753f2ff9  gcc/te
*** 74874,74879 ****
--- 79908,79914 ----
  a667727c02ccc971d7c05c508de4ada9  gcc/testsuite/gdc.test/compilable/imports/imp22625.c
  9883398346a2178c5e7cbe0f1bd31a0c  gcc/testsuite/gdc.test/compilable/imports/imp22665.c
  91bc6c76a8e99bc3e0bcdb80a716c03d  gcc/testsuite/gdc.test/compilable/imports/imp22734.c
+ ff06a5fcaab395e1905535b4dc53d53a  gcc/testsuite/gdc.test/compilable/imports/imp23662.c
  ffb02a7ce616b7c2fdd649a67dc4b02d  gcc/testsuite/gdc.test/compilable/imports/impfieldwise.d
  3d9aac3b6cd1bdc497ccaa9fbed2a264  gcc/testsuite/gdc.test/compilable/imports/issue21614a.d
  80335f846a510030cde94b5996d091ba  gcc/testsuite/gdc.test/compilable/imports/jsonimport1.d
*************** e66844cdd008e5c3984e6b678fe37371  gcc/te
*** 74885,74890 ****
--- 79920,79926 ----
  b56c3e652d5f4ccf730dd3dd9bc3afa8  gcc/testsuite/gdc.test/compilable/imports/pkg16044/package.d
  a6bf37840e2367e81572f030740a8b42  gcc/testsuite/gdc.test/compilable/imports/pkg16044/sub/package.d
  d41d8cd98f00b204e9800998ecf8427e  gcc/testsuite/gdc.test/compilable/imports/pkg20537/package.d
+ 44563428b833c5250f9c2d2dc28be2ea  gcc/testsuite/gdc.test/compilable/imports/pkg22952/package.d
  cf35fae634540a741b269f55e769278f  gcc/testsuite/gdc.test/compilable/imports/pkg313/c313.d
  0ccc66c7c2824f105b12e29d04161898  gcc/testsuite/gdc.test/compilable/imports/pkgmod313/mod.d
  e5b55ced4559d6a06ce7db266e5c9631  gcc/testsuite/gdc.test/compilable/imports/pkgmod313/package.d
*************** e00a356527fd9de68672afcd288ed7d8  gcc/te
*** 74979,74984 ****
--- 80015,80023 ----
  9ab422df3123c1496f5dc9fe36ad6df5  gcc/testsuite/gdc.test/compilable/imports/test22685c.d
  02a2590e246aa059b8b0a4cb52842f7d  gcc/testsuite/gdc.test/compilable/imports/test22714a.d
  1e8691fc12b29c4990c9b465638bcc0c  gcc/testsuite/gdc.test/compilable/imports/test22714b.d
+ b605f77d98fb574cd83369e7ab76edd4  gcc/testsuite/gdc.test/compilable/imports/test23490frop.d
+ 37c21a3320b2ca4d7ce8d549bbe5795b  gcc/testsuite/gdc.test/compilable/imports/test23490pop.d
+ 4d51d2d004ad1f397490eef55d25cc2f  gcc/testsuite/gdc.test/compilable/imports/test23490zoo.d
  e6b06846e47d7e657b4b6da3e34a6954  gcc/testsuite/gdc.test/compilable/imports/test25a.d
  dcecd311a16774881975a1c3b62d5e02  gcc/testsuite/gdc.test/compilable/imports/test25b.d
  dd423bc6d69cba269b09946e729dbf08  gcc/testsuite/gdc.test/compilable/imports/test2991.d
*************** e1b2201bb7bef13edd5b1dd62a016069  gcc/te
*** 75028,75037 ****
--- 80067,80080 ----
  1d8fc89265fe679561568985cc3facff  gcc/testsuite/gdc.test/compilable/imports/udamodule2.d
  2f1dca8de92811ccae257ea9c1e85b24  gcc/testsuite/gdc.test/compilable/imports/udamodule2a.d
  28954be8a40dfe6c1d475542cc4a4950  gcc/testsuite/gdc.test/compilable/imports/wax16798.d
+ 1fe81c33c6da1cbc003e0ab00f5e163c  gcc/testsuite/gdc.test/compilable/infer_stc.d
+ 13a308ac0197720d622c5e96c15af2f1  gcc/testsuite/gdc.test/compilable/inliner.d
+ a2c2b21595b3ee690554e1ff236b06d9  gcc/testsuite/gdc.test/compilable/inliner2.d
  ef6621356266511f2cc350934f6c915d  gcc/testsuite/gdc.test/compilable/interpret3.d
  4e6e008425b8e270dc3a1df0495d9ce3  gcc/testsuite/gdc.test/compilable/interpret4.d
  06030303622e394ed8c4697f73259c9e  gcc/testsuite/gdc.test/compilable/interpret5.d
  450fffaacdb4952032aa47dc230ed71d  gcc/testsuite/gdc.test/compilable/isZeroInit.d
+ 6700886aefd0190b552136b7c1d6df03  gcc/testsuite/gdc.test/compilable/isexpalias.d
  38f9e58c2715314b37d8bdbc7914a3ae  gcc/testsuite/gdc.test/compilable/isreturnonstack.d
  376cb54eec7916337251b9d0785afab8  gcc/testsuite/gdc.test/compilable/issue12520.d
  cb0a083c308a114ae069864cdecbf5db  gcc/testsuite/gdc.test/compilable/issue15478.d
*************** b910b30d7854e09339dcc3d2fb33a7f1  gcc/te
*** 75044,75049 ****
--- 80087,80093 ----
  9233bd62bb2a9f406c9aca87b21e05fc  gcc/testsuite/gdc.test/compilable/issue19925.d
  daa2c8dffcb01b4cb7fedae1b33794fa  gcc/testsuite/gdc.test/compilable/issue20362.d
  922d1f80ce8888fbd0679ee853c38414  gcc/testsuite/gdc.test/compilable/issue20599.d
+ e389a95af444bdb58242457866e64837  gcc/testsuite/gdc.test/compilable/issue20618.d
  edc2285459e4656968c13c6d1996b338  gcc/testsuite/gdc.test/compilable/issue20704.d
  8d3582f0fd9eaca372ff61350332a11b  gcc/testsuite/gdc.test/compilable/issue20705.d
  04daeea9c5ccfa61f11dd3e1dbb1285a  gcc/testsuite/gdc.test/compilable/issue20915.d
*************** d44936b3c2d3be5638fdb042d88ff414  gcc/te
*** 75062,75067 ****
--- 80106,80116 ----
  5d3024e94e16444e74e762a86e97ac5a  gcc/testsuite/gdc.test/compilable/issue21882.d
  24aa1bef43803bf7945269f6dbb963db  gcc/testsuite/gdc.test/compilable/issue21905.d
  4803db4022ac5a18c1ba3362a8d75239  gcc/testsuite/gdc.test/compilable/issue22130.d
+ f725ac9468f8266d38b3b800c3de49d5  gcc/testsuite/gdc.test/compilable/issue22646.d
+ 87ad8472814b8ec81a7279eb5624af7d  gcc/testsuite/gdc.test/compilable/issue22854.d
+ 07e9955d34050593bd26a0af011eeae2  gcc/testsuite/gdc.test/compilable/issue22975.d
+ 6febadbbf0173c101fca008948c0ffeb  gcc/testsuite/gdc.test/compilable/issue23391.d
+ dc47adc5a0fe42d1ac2f11ac1bd2ae2c  gcc/testsuite/gdc.test/compilable/issue23567.d
  2fc93ec0ef318092df8f037cadf05a7f  gcc/testsuite/gdc.test/compilable/issue9884.d
  e91a92c9c06d7b2d9d69ab65e6d5d8b4  gcc/testsuite/gdc.test/compilable/json.d
  0dbed47c0a9e6379e5441611de2fdd43  gcc/testsuite/gdc.test/compilable/json20742.d
*************** c0a34931ae605eeb3d2920a2ea74eb71  gcc/te
*** 75075,75090 ****
  b6a5dd6f5f5e40ec69f5d95cff610577  gcc/testsuite/gdc.test/compilable/mixintype.d
  7f66ba09b458afa472d31fc5f9015147  gcc/testsuite/gdc.test/compilable/mixintype2.d
  12cc7909584b66e9017a50fdd8e9ca50  gcc/testsuite/gdc.test/compilable/must_use_assign.d
  2cdfbad9a4fe22ff52644e1ee84b57dc  gcc/testsuite/gdc.test/compilable/must_use_not_reserved.d
  018484fedaaf413c3cd5082f3b76ba5e  gcc/testsuite/gdc.test/compilable/must_use_opassign.d
  12e804d755bb05565da7e4afddbc305d  gcc/testsuite/gdc.test/compilable/must_use_opopassign.d
  5893fd27bc8dcbbf4b557999d7e6fcc4  gcc/testsuite/gdc.test/compilable/must_use_opunary.d
  5c3027247e211bc17095d2a5331d6415  gcc/testsuite/gdc.test/compilable/must_use_suppress.d
  234250ba55c9db35a7a38bbdebebc0ac  gcc/testsuite/gdc.test/compilable/nestedtempl0.d
  0692185f429a12ae9a98b28baf6bc8e1  gcc/testsuite/gdc.test/compilable/nestedtempl1.d
  a3c24afe0733ea3b2f5afb6b064e3a71  gcc/testsuite/gdc.test/compilable/noderef.d
! 8d8a694f2c83500f3c60c6644b19ff35  gcc/testsuite/gdc.test/compilable/nogc.d
! 4c7bf6aa12ba46d46551824e8882358f  gcc/testsuite/gdc.test/compilable/noreturn1.d
  5fbaecaa28f6007b4b1d3347e88d130d  gcc/testsuite/gdc.test/compilable/ob1.d
  97cf4856aa8990a0fe28a6aabadd9a23  gcc/testsuite/gdc.test/compilable/pr9374.d
  7d64317f6d15dac75cff6ccb494e7ef9  gcc/testsuite/gdc.test/compilable/pr9383.d
--- 80124,80143 ----
  b6a5dd6f5f5e40ec69f5d95cff610577  gcc/testsuite/gdc.test/compilable/mixintype.d
  7f66ba09b458afa472d31fc5f9015147  gcc/testsuite/gdc.test/compilable/mixintype2.d
  12cc7909584b66e9017a50fdd8e9ca50  gcc/testsuite/gdc.test/compilable/must_use_assign.d
+ 4609d14d7f0e432204e446fc10286d5b  gcc/testsuite/gdc.test/compilable/must_use_initialize.d
  2cdfbad9a4fe22ff52644e1ee84b57dc  gcc/testsuite/gdc.test/compilable/must_use_not_reserved.d
  018484fedaaf413c3cd5082f3b76ba5e  gcc/testsuite/gdc.test/compilable/must_use_opassign.d
  12e804d755bb05565da7e4afddbc305d  gcc/testsuite/gdc.test/compilable/must_use_opopassign.d
  5893fd27bc8dcbbf4b557999d7e6fcc4  gcc/testsuite/gdc.test/compilable/must_use_opunary.d
  5c3027247e211bc17095d2a5331d6415  gcc/testsuite/gdc.test/compilable/must_use_suppress.d
+ 75b9095619579ca716487eac5af96f4d  gcc/testsuite/gdc.test/compilable/named_argumens_struct.d
+ 638349cac53a6d95ee7c6f5fe1ab699a  gcc/testsuite/gdc.test/compilable/named_arguments.d
  234250ba55c9db35a7a38bbdebebc0ac  gcc/testsuite/gdc.test/compilable/nestedtempl0.d
  0692185f429a12ae9a98b28baf6bc8e1  gcc/testsuite/gdc.test/compilable/nestedtempl1.d
  a3c24afe0733ea3b2f5afb6b064e3a71  gcc/testsuite/gdc.test/compilable/noderef.d
! 5464e3a346156d21915d55cfd61ac35c  gcc/testsuite/gdc.test/compilable/nogc.d
! 1f7f9bc6578b1c3d98bf1759364334df  gcc/testsuite/gdc.test/compilable/noreturn1.d
! daabe595b61af45fef53af1e4537fb53  gcc/testsuite/gdc.test/compilable/noreturn3.d
  5fbaecaa28f6007b4b1d3347e88d130d  gcc/testsuite/gdc.test/compilable/ob1.d
  97cf4856aa8990a0fe28a6aabadd9a23  gcc/testsuite/gdc.test/compilable/pr9374.d
  7d64317f6d15dac75cff6ccb494e7ef9  gcc/testsuite/gdc.test/compilable/pr9383.d
*************** c83b370b77d383fd10e8e53e026450e9  gcc/te
*** 75110,75123 ****
  d8f9e17c4e0c2caed923d9e15a8fba76  gcc/testsuite/gdc.test/compilable/revert_dip1000.d
  cd042ba170234d1e39ed18bb4035f19e  gcc/testsuite/gdc.test/compilable/riia_ctor.d
  9049661aee8ae9fbf955c442c514f3b7  gcc/testsuite/gdc.test/compilable/rvalueref.d
! d53987fd40a6651562bc46672b43b588  gcc/testsuite/gdc.test/compilable/scope.d
  882b736d1262f755a317ddc6156a5b43  gcc/testsuite/gdc.test/compilable/scopeinfer.d
! 2142f5627117e0584fb63335d2552a52  gcc/testsuite/gdc.test/compilable/shared.d
  fd1eeff8f6c846eeb29e20921f5da298  gcc/testsuite/gdc.test/compilable/shared_destructor.d
  badf98b7c4bd98928b7900f50021dd58  gcc/testsuite/gdc.test/compilable/sharedopt.d
! a2b038b77641949ffb5019f66fd85a89  gcc/testsuite/gdc.test/compilable/shortened_methods.d
  7c98dcd3fa3508059372d1492d038c01  gcc/testsuite/gdc.test/compilable/sroa.d
  764dda5c691e23f6bb7b7df9165d7e14  gcc/testsuite/gdc.test/compilable/staticforeach.d
  fd05920d5061cba0cd9dc221a4b63e50  gcc/testsuite/gdc.test/compilable/stc_traits.d
  668745ffa1278262e74c6cd37e4c954d  gcc/testsuite/gdc.test/compilable/sw_transition_complex.d
  6d4d15a31cd7806cabe1af5f4e06bb12  gcc/testsuite/gdc.test/compilable/sw_transition_field.d
--- 80163,80180 ----
  d8f9e17c4e0c2caed923d9e15a8fba76  gcc/testsuite/gdc.test/compilable/revert_dip1000.d
  cd042ba170234d1e39ed18bb4035f19e  gcc/testsuite/gdc.test/compilable/riia_ctor.d
  9049661aee8ae9fbf955c442c514f3b7  gcc/testsuite/gdc.test/compilable/rvalueref.d
! 508b7041943ffa9a89d695282b8f3269  gcc/testsuite/gdc.test/compilable/scope.d
! 38b50e49e9c1daee50b68b8bb85eb5c3  gcc/testsuite/gdc.test/compilable/scope_infer_array_assign.d
! d1bae8a7d648de90882dfe330925715c  gcc/testsuite/gdc.test/compilable/scope_tuple_expansion.d
  882b736d1262f755a317ddc6156a5b43  gcc/testsuite/gdc.test/compilable/scopeinfer.d
! b58883b15934c7e71a25e7843fcbd199  gcc/testsuite/gdc.test/compilable/segfaultgolf.d
! e52a295a51b0f9fef4b4f197402a2d67  gcc/testsuite/gdc.test/compilable/shared.d
  fd1eeff8f6c846eeb29e20921f5da298  gcc/testsuite/gdc.test/compilable/shared_destructor.d
  badf98b7c4bd98928b7900f50021dd58  gcc/testsuite/gdc.test/compilable/sharedopt.d
! aa1c2759adc66322e20338c7e67467f7  gcc/testsuite/gdc.test/compilable/shortened_methods.d
  7c98dcd3fa3508059372d1492d038c01  gcc/testsuite/gdc.test/compilable/sroa.d
  764dda5c691e23f6bb7b7df9165d7e14  gcc/testsuite/gdc.test/compilable/staticforeach.d
+ 0e24586f4018f7e6eceb24795ff0b303  gcc/testsuite/gdc.test/compilable/statictemplatethis.d
  fd05920d5061cba0cd9dc221a4b63e50  gcc/testsuite/gdc.test/compilable/stc_traits.d
  668745ffa1278262e74c6cd37e4c954d  gcc/testsuite/gdc.test/compilable/sw_transition_complex.d
  6d4d15a31cd7806cabe1af5f4e06bb12  gcc/testsuite/gdc.test/compilable/sw_transition_field.d
*************** f0584c1b2c098c52e274ad8b664c4946  gcc/te
*** 75149,75155 ****
  6f29e1c2c94e9aa39045848ad7a4e0bf  gcc/testsuite/gdc.test/compilable/test11824.d
  0db92c92cecb1382ce4798c061531a12  gcc/testsuite/gdc.test/compilable/test11847.d
  8bf0ff47ef3b2433a9fa48e24c536bc7  gcc/testsuite/gdc.test/compilable/test11914.d
! 5f5597bf8979e57f84581b7dc54f0803  gcc/testsuite/gdc.test/compilable/test11980.d
  aa89b8203af70d96610b1ce5edf18959  gcc/testsuite/gdc.test/compilable/test12009.d
  6fbf78ead38aab7b50286f345072f838  gcc/testsuite/gdc.test/compilable/test1238.d
  d5c08dfc4e902bb2f108de725abd2339  gcc/testsuite/gdc.test/compilable/test12496.d
--- 80206,80212 ----
  6f29e1c2c94e9aa39045848ad7a4e0bf  gcc/testsuite/gdc.test/compilable/test11824.d
  0db92c92cecb1382ce4798c061531a12  gcc/testsuite/gdc.test/compilable/test11847.d
  8bf0ff47ef3b2433a9fa48e24c536bc7  gcc/testsuite/gdc.test/compilable/test11914.d
! 28f91537573ac4d673e250b1f17b1f5c  gcc/testsuite/gdc.test/compilable/test11980.d
  aa89b8203af70d96610b1ce5edf18959  gcc/testsuite/gdc.test/compilable/test12009.d
  6fbf78ead38aab7b50286f345072f838  gcc/testsuite/gdc.test/compilable/test1238.d
  d5c08dfc4e902bb2f108de725abd2339  gcc/testsuite/gdc.test/compilable/test12496.d
*************** d8c4af0849e8c816c0d29a332900db29  gcc/te
*** 75167,75172 ****
--- 80224,80230 ----
  f77e1a7bbd7be92c09cd140d5df25033  gcc/testsuite/gdc.test/compilable/test12967.d
  07863d4967475fec3d567e028eefcb03  gcc/testsuite/gdc.test/compilable/test13008.d
  d8a24ba15faf351dc5548d5c73aa838f  gcc/testsuite/gdc.test/compilable/test13053.d
+ 4584c0f269cebd9aaa45e1c24a29b3fa  gcc/testsuite/gdc.test/compilable/test13123.d
  7605bed39c4e8e392901b9e40b7db3f1  gcc/testsuite/gdc.test/compilable/test13193.d
  37e19582ba6f9dfed8393fa878569186  gcc/testsuite/gdc.test/compilable/test13194.d
  d99efc4fc656e4cfd02fce96060ab892  gcc/testsuite/gdc.test/compilable/test13226.d
*************** b27971febde409e8525eeaddce12cd73  gcc/te
*** 75217,75222 ****
--- 80275,80281 ----
  b2450b3d68fb07bbb35fed7e9a7d4049  gcc/testsuite/gdc.test/compilable/test15618.d
  8dcaa8a54506b89615d613d5c7bf3877  gcc/testsuite/gdc.test/compilable/test15668.d
  1ee914509000eb8716be1b969ecc7d19  gcc/testsuite/gdc.test/compilable/test15711.d
+ 1605b775f1b0bef5f010d8e0d13c1882  gcc/testsuite/gdc.test/compilable/test15712.d
  15b87f1d82f0d05527c6ff45b1a3f9e9  gcc/testsuite/gdc.test/compilable/test15762.d
  b92dd768af5e4cef6539509b13dd06ac  gcc/testsuite/gdc.test/compilable/test15780.d
  f53698308a86147743b2f30c9ed83654  gcc/testsuite/gdc.test/compilable/test15784.d
*************** c66d78d3bf4e71c925116093469fe79d  gcc/te
*** 75236,75241 ****
--- 80295,80301 ----
  4fc0c8e93709482033d98eec271bda7c  gcc/testsuite/gdc.test/compilable/test16088.d
  31219575114bc2b42585187acaca62ab  gcc/testsuite/gdc.test/compilable/test16107.d
  f5d646fc75920828d81e7205c65853a9  gcc/testsuite/gdc.test/compilable/test16183.d
+ 38e6adb220f0c5e82fb2ff610ceba985  gcc/testsuite/gdc.test/compilable/test16213.d
  6d4665413c39103240c73ee6a3e7231e  gcc/testsuite/gdc.test/compilable/test16214a.d
  1993845af4c9e0117911b62c6ba51011  gcc/testsuite/gdc.test/compilable/test16225.d
  dc8508079e83d5a7707eaa39ff767f3a  gcc/testsuite/gdc.test/compilable/test16273.d
*************** dbb21fcb4c8117b8e86e342839b6ea86  gcc/te
*** 75244,75249 ****
--- 80304,80310 ----
  4141477ca72a5096c3206adef57a58ea  gcc/testsuite/gdc.test/compilable/test16340.d
  7cdc1bdcfc88b0bff153fa73281ccc37  gcc/testsuite/gdc.test/compilable/test16348.d
  3f32ab2141b07937c95902ad46075e32  gcc/testsuite/gdc.test/compilable/test16460.d
+ c5a8b83350423457136880535c34eb62  gcc/testsuite/gdc.test/compilable/test16495.d
  043a88f40b9c47c01f0a06d0baca0491  gcc/testsuite/gdc.test/compilable/test16525.d
  e014faa15d07ab8af6f94fadcc30894c  gcc/testsuite/gdc.test/compilable/test16540.d
  a4f9e5e07caf5b52d346ebffe86d8357  gcc/testsuite/gdc.test/compilable/test16563.d
*************** e87f48da66ddb31559c11628da10640e  gcc/te
*** 75271,75277 ****
  9f322d85f59db5aacfceee570828f699  gcc/testsuite/gdc.test/compilable/test17215.d
  34a4f761ce44732e8d98f2154d655148  gcc/testsuite/gdc.test/compilable/test17339.d
  21c9a8cfce4024f66cda8de89ebf5fcf  gcc/testsuite/gdc.test/compilable/test17349.d
! 525b0b6637c2125d112ab0ca775a6471  gcc/testsuite/gdc.test/compilable/test17351.d
  68e1dbe483cf3a2ae1a41c5106689102  gcc/testsuite/gdc.test/compilable/test17352.d
  b5a0838019af7196a13c25a852653409  gcc/testsuite/gdc.test/compilable/test17373.d
  2c4fd5be03468f47c86571d4effcafb0  gcc/testsuite/gdc.test/compilable/test17399.d
--- 80332,80338 ----
  9f322d85f59db5aacfceee570828f699  gcc/testsuite/gdc.test/compilable/test17215.d
  34a4f761ce44732e8d98f2154d655148  gcc/testsuite/gdc.test/compilable/test17339.d
  21c9a8cfce4024f66cda8de89ebf5fcf  gcc/testsuite/gdc.test/compilable/test17349.d
! 5034b3a003d321cd0aea64ddbc0c5390  gcc/testsuite/gdc.test/compilable/test17351.d
  68e1dbe483cf3a2ae1a41c5106689102  gcc/testsuite/gdc.test/compilable/test17352.d
  b5a0838019af7196a13c25a852653409  gcc/testsuite/gdc.test/compilable/test17373.d
  2c4fd5be03468f47c86571d4effcafb0  gcc/testsuite/gdc.test/compilable/test17399.d
*************** b5a0838019af7196a13c25a852653409  gcc/te
*** 75286,75292 ****
  a443d47e876b2d53af86e27079438afd  gcc/testsuite/gdc.test/compilable/test17541.d
  899dd61785dc3d9b6aae33b45cac74bf  gcc/testsuite/gdc.test/compilable/test17545.d
  137e383b156d559f4bbc5a572cc18bf7  gcc/testsuite/gdc.test/compilable/test17548.d
! 8ae0157007a2b73f8e3724118fcdff99  gcc/testsuite/gdc.test/compilable/test17590.d
  8bd938e7e29a0097af2e364a3a27bc2b  gcc/testsuite/gdc.test/compilable/test17752.d
  003b5665af758297dc3f72ce51f5936c  gcc/testsuite/gdc.test/compilable/test17782.d
  7de2b38dc4a5590a892e1780e09185d5  gcc/testsuite/gdc.test/compilable/test17791.d
--- 80347,80353 ----
  a443d47e876b2d53af86e27079438afd  gcc/testsuite/gdc.test/compilable/test17541.d
  899dd61785dc3d9b6aae33b45cac74bf  gcc/testsuite/gdc.test/compilable/test17545.d
  137e383b156d559f4bbc5a572cc18bf7  gcc/testsuite/gdc.test/compilable/test17548.d
! cff229af99454f877a93bf29957fddcc  gcc/testsuite/gdc.test/compilable/test17590.d
  8bd938e7e29a0097af2e364a3a27bc2b  gcc/testsuite/gdc.test/compilable/test17752.d
  003b5665af758297dc3f72ce51f5936c  gcc/testsuite/gdc.test/compilable/test17782.d
  7de2b38dc4a5590a892e1780e09185d5  gcc/testsuite/gdc.test/compilable/test17791.d
*************** f9645959365eb348f2c096cd81f2e5d5  gcc/te
*** 75301,75306 ****
--- 80362,80368 ----
  e2fe66eab97a7b69aa09a30ec570ce09  gcc/testsuite/gdc.test/compilable/test17991.d
  fef3ccf128a702c92d1bb16b7150d66d  gcc/testsuite/gdc.test/compilable/test18000.d
  9566ecb27a10bda6584f9f539e11e08b  gcc/testsuite/gdc.test/compilable/test18020.d
+ 38b6323e26e033daf6be672b3cdc389a  gcc/testsuite/gdc.test/compilable/test18026.d
  d6dac6c332c8fa1b92e2550a20ceba4b  gcc/testsuite/gdc.test/compilable/test18030.d
  19884833b956eb2a61eb0e50846fbbe0  gcc/testsuite/gdc.test/compilable/test18099.d
  8c96dcf6167f002cfbba1551b126f451  gcc/testsuite/gdc.test/compilable/test18115.d
*************** ef2ed248a84e6cc602afeafacee55114  gcc/te
*** 75315,75320 ****
--- 80377,80383 ----
  5357a097ada9e24236a5df57012182d2  gcc/testsuite/gdc.test/compilable/test18578.d
  d47061152b471a5cf32271626e2a43c1  gcc/testsuite/gdc.test/compilable/test18584.d
  24584da2350c078d583328c7a375f3af  gcc/testsuite/gdc.test/compilable/test18645.d
+ 3aeed1cc8bf642532f86b55fb607d2e1  gcc/testsuite/gdc.test/compilable/test18646.d
  ec310c7091f176146c7835c51098639e  gcc/testsuite/gdc.test/compilable/test18651a.d
  ca0dacd6aecaba129120b03611526bc1  gcc/testsuite/gdc.test/compilable/test18670.d
  1cb67adcdda9bb0c3182d484d4b60652  gcc/testsuite/gdc.test/compilable/test18694.d
*************** f1fb0fc76744ec9a244711207ad19617  gcc/te
*** 75339,75345 ****
--- 80402,80410 ----
  af3d1eacaf292262a44f9f9831a27c93  gcc/testsuite/gdc.test/compilable/test19203.d
  c1e97c068a8180f6eba8d4e025f616e5  gcc/testsuite/gdc.test/compilable/test19224.d
  6456b8ecc296a982329fbbeb272fdff6  gcc/testsuite/gdc.test/compilable/test19227.d
+ 2608688d4f620b103a0c2e2baf33bcb6  gcc/testsuite/gdc.test/compilable/test19268.d
  fc41777a1b9816ebf55ae1456219acef  gcc/testsuite/gdc.test/compilable/test19292.d
+ 0f1c5ce0e10c23183772a2639b955ad4  gcc/testsuite/gdc.test/compilable/test19295.d
  44572e423ec460e685a6f14ce2713e8e  gcc/testsuite/gdc.test/compilable/test19315.d
  1d42cc2465474c8e5ee940979c99bef6  gcc/testsuite/gdc.test/compilable/test19409.d
  c7560fb9fdd44bb33720d347b6dc00b7  gcc/testsuite/gdc.test/compilable/test19464.d
*************** baa145adb23a15d036c01e709c9885c5  gcc/te
*** 75350,75355 ****
--- 80415,80421 ----
  8f87157437b0364a223be7b928b9a127  gcc/testsuite/gdc.test/compilable/test19540.d
  1a900c27d6267aae4bf289d34d7d9e24  gcc/testsuite/gdc.test/compilable/test19557.d
  09d8521f98b3e68044c9a3bb9b194ba2  gcc/testsuite/gdc.test/compilable/test19574.d
+ 6d8f041113f29e6c3431fa071c1dc1e6  gcc/testsuite/gdc.test/compilable/test19585.d
  671796df6f82be1c33c025e0854f72f9  gcc/testsuite/gdc.test/compilable/test19609.d
  0886dd6b0ff11f03356d092250866653  gcc/testsuite/gdc.test/compilable/test19631.d
  9442fde4cb34738935d24c3560a4c98d  gcc/testsuite/gdc.test/compilable/test19652.d
*************** b41606c2bc70ec2ddd69b8a97364d10e  gcc/te
*** 75383,75388 ****
--- 80449,80455 ----
  779521e06838c0618e724ed04abf939b  gcc/testsuite/gdc.test/compilable/test20138.d
  acf65fea78fda931df435e170b4ff10e  gcc/testsuite/gdc.test/compilable/test20151a.d
  38f8f7828f75ee6da7c68edadee72d84  gcc/testsuite/gdc.test/compilable/test20181.d
+ adacdca47b1782c409a13f7cae679385  gcc/testsuite/gdc.test/compilable/test20201.d
  7e7e889dc8289b4e1c60ca28fa97e657  gcc/testsuite/gdc.test/compilable/test20236.d
  9c9235445cfb7a0250eb9c627c45a97d  gcc/testsuite/gdc.test/compilable/test20280.d
  f770c7a5fb39b162b577f96d2ed51ab6  gcc/testsuite/gdc.test/compilable/test20296.d
*************** bfa3b260bba42f69ddab55c994c20dbc  gcc/te
*** 75394,75399 ****
--- 80461,80467 ----
  9bc2862cc0a15805e1a3d54fb4facdc4  gcc/testsuite/gdc.test/compilable/test20410.d
  19fa0dc0bb0e14fce798654e012f8ce0  gcc/testsuite/gdc.test/compilable/test20417.d
  8d0f1a5a1e86cb9fd37c885bfe11dc84  gcc/testsuite/gdc.test/compilable/test20420.d
+ a9bd99abed44befe910f7cb0409c337b  gcc/testsuite/gdc.test/compilable/test20427.d
  56c36e1b133f904122f59921311ead7a  gcc/testsuite/gdc.test/compilable/test20488.d
  5d7a8d265f4f29667ecde34793879f65  gcc/testsuite/gdc.test/compilable/test20530.d
  06b732fa6a39c017318cbc16939f52fa  gcc/testsuite/gdc.test/compilable/test20537.d
*************** a7f0bb660a8c24f67cc96a182191462d  gcc/te
*** 75409,75414 ****
--- 80477,80483 ----
  6ac9eb4a70c61f211a4d526c80ba58e9  gcc/testsuite/gdc.test/compilable/test20789.d
  22b5aabc9e6268467ede3429f798cd3c  gcc/testsuite/gdc.test/compilable/test20795.d
  d47922cfcdb5a31342cb4c065d01bab4  gcc/testsuite/gdc.test/compilable/test20821.d
+ 9480e6ee34fde2d091c0a0f82ac0599f  gcc/testsuite/gdc.test/compilable/test20832.d
  023aa07bce6d52c1c6a36f6d6d00cf25  gcc/testsuite/gdc.test/compilable/test20835.d
  95258b243a7fde4a836e4cde9df43966  gcc/testsuite/gdc.test/compilable/test20842.d
  112a4d74fbaa35955d2c4898421f0ac3  gcc/testsuite/gdc.test/compilable/test20860.d
*************** dbf2fba3b0e01ab05f8e2bdd9a3b8c81  gcc/te
*** 75421,75430 ****
  e1c4ec84eedeb5a0cc94e1f9bc4e5cbe  gcc/testsuite/gdc.test/compilable/test20990.d
  e7496866f23a58a93b9b6db19e13e796  gcc/testsuite/gdc.test/compilable/test21050.d
  bec53864a2bc465c93fe4d228284bc43  gcc/testsuite/gdc.test/compilable/test21058.d
! 530ce434b634fe824b7a83f59c41f35f  gcc/testsuite/gdc.test/compilable/test21073.d
! 46e9b8dea246a3ac8622f83241a5b395  gcc/testsuite/gdc.test/compilable/test21177.d
  1b54b7938f8b85c1a5afd3ed89fcafcf  gcc/testsuite/gdc.test/compilable/test21196.d
  0077aff09fa55a7dc6893618897f6466  gcc/testsuite/gdc.test/compilable/test21227.d
  bbfea94fb62e11c065d4b01364310a6a  gcc/testsuite/gdc.test/compilable/test21255.d
  d971aaecc34ddbe6181a2ac08ab2b066  gcc/testsuite/gdc.test/compilable/test21282.d
  0ba90edd374f89515b149c9045f12ad4  gcc/testsuite/gdc.test/compilable/test21299a.d
--- 80490,80500 ----
  e1c4ec84eedeb5a0cc94e1f9bc4e5cbe  gcc/testsuite/gdc.test/compilable/test20990.d
  e7496866f23a58a93b9b6db19e13e796  gcc/testsuite/gdc.test/compilable/test21050.d
  bec53864a2bc465c93fe4d228284bc43  gcc/testsuite/gdc.test/compilable/test21058.d
! a2488983506d7c2c5483f94e40926f28  gcc/testsuite/gdc.test/compilable/test21177.d
  1b54b7938f8b85c1a5afd3ed89fcafcf  gcc/testsuite/gdc.test/compilable/test21196.d
+ aef1d94d1e219fd82c826644f5cacdb6  gcc/testsuite/gdc.test/compilable/test21197.d
  0077aff09fa55a7dc6893618897f6466  gcc/testsuite/gdc.test/compilable/test21227.d
+ 2b1e1c6a1fd62681b20ab1056124d729  gcc/testsuite/gdc.test/compilable/test21243.d
  bbfea94fb62e11c065d4b01364310a6a  gcc/testsuite/gdc.test/compilable/test21255.d
  d971aaecc34ddbe6181a2ac08ab2b066  gcc/testsuite/gdc.test/compilable/test21282.d
  0ba90edd374f89515b149c9045f12ad4  gcc/testsuite/gdc.test/compilable/test21299a.d
*************** effd503ab143f07a377f69a6abd2e2ab  gcc/te
*** 75435,75445 ****
  1798a08bb6bc5d4d9cfb0e43f52c0214  gcc/testsuite/gdc.test/compilable/test21372.d
  98a7dd18d329068251146d297fab72d7  gcc/testsuite/gdc.test/compilable/test21398.d
  c6744c3207244c878cf6f0574302e3f2  gcc/testsuite/gdc.test/compilable/test21414.d
  ba9fd4b88ca0267441472f1febace9ae  gcc/testsuite/gdc.test/compilable/test21438.d
  3f1b768c6d2a4190f6a0e7e142cea814  gcc/testsuite/gdc.test/compilable/test21464.d
  6aae9ab24e30cc1449c46abe03e9439e  gcc/testsuite/gdc.test/compilable/test21501a.d
  2f705ac2ed4d159ee7622474a6f61815  gcc/testsuite/gdc.test/compilable/test21514.d
- 9959057e7dc37c0ead21531d77de783f  gcc/testsuite/gdc.test/compilable/test21543.d
  9c28314750a684e306e8009cc05f2c6d  gcc/testsuite/gdc.test/compilable/test21591.d
  4b14068114e43c728903370792cda6d8  gcc/testsuite/gdc.test/compilable/test21659.d
  f308f3be6a8928891a3703e099815b37  gcc/testsuite/gdc.test/compilable/test21661.d
--- 80505,80515 ----
  1798a08bb6bc5d4d9cfb0e43f52c0214  gcc/testsuite/gdc.test/compilable/test21372.d
  98a7dd18d329068251146d297fab72d7  gcc/testsuite/gdc.test/compilable/test21398.d
  c6744c3207244c878cf6f0574302e3f2  gcc/testsuite/gdc.test/compilable/test21414.d
+ f7b07a5a3e3bfac17af47439bb8ec413  gcc/testsuite/gdc.test/compilable/test21432.d
  ba9fd4b88ca0267441472f1febace9ae  gcc/testsuite/gdc.test/compilable/test21438.d
  3f1b768c6d2a4190f6a0e7e142cea814  gcc/testsuite/gdc.test/compilable/test21464.d
  6aae9ab24e30cc1449c46abe03e9439e  gcc/testsuite/gdc.test/compilable/test21501a.d
  2f705ac2ed4d159ee7622474a6f61815  gcc/testsuite/gdc.test/compilable/test21514.d
  9c28314750a684e306e8009cc05f2c6d  gcc/testsuite/gdc.test/compilable/test21591.d
  4b14068114e43c728903370792cda6d8  gcc/testsuite/gdc.test/compilable/test21659.d
  f308f3be6a8928891a3703e099815b37  gcc/testsuite/gdc.test/compilable/test21661.d
*************** bc7975fb011749a023500cb1a40cae84  gcc/te
*** 75461,75466 ****
--- 80531,80537 ----
  031f91ebad1f7a90775adfbea13c93e7  gcc/testsuite/gdc.test/compilable/test21861.d
  9d6857891098eee0f95c918781d462a2  gcc/testsuite/gdc.test/compilable/test21876.d
  7bf71d49bd9d761471be55f9c50f5c92  gcc/testsuite/gdc.test/compilable/test21898.d
+ e07e9c7e001fd467ab2f260a4424715e  gcc/testsuite/gdc.test/compilable/test21956.d
  d3621808e61522c1aa8b496bb0e0f5e1  gcc/testsuite/gdc.test/compilable/test21975.d
  f8ec0845cd2590e50d27071453701fb7  gcc/testsuite/gdc.test/compilable/test22006.d
  b6493dad6772677cf5ad85421f3d8b10  gcc/testsuite/gdc.test/compilable/test22122.d
*************** f0737d79f6456280c78a209165f4d539  gcc/te
*** 75472,75477 ****
--- 80543,80549 ----
  7f79a8ba6e17f04bc68a544afa1f4e7e  gcc/testsuite/gdc.test/compilable/test22254.d
  cd14028e6c63884cd62d8e8f5f122123  gcc/testsuite/gdc.test/compilable/test22292.d
  00f62f1242fafcf68f4d6010324917b8  gcc/testsuite/gdc.test/compilable/test22388.d
+ d9bd3b9153d70453fbc2d383d0c00068  gcc/testsuite/gdc.test/compilable/test22390.d
  c3ad9ddce7a481ae3eceabc801dc2d60  gcc/testsuite/gdc.test/compilable/test22410.d
  65f8254f25cb4c8306d198aa1a754dd6  gcc/testsuite/gdc.test/compilable/test22420.d
  09e28d8639702c9abcd1422f5f548fea  gcc/testsuite/gdc.test/compilable/test22421.d
*************** c3ad9ddce7a481ae3eceabc801dc2d60  gcc/te
*** 75479,75509 ****
  b4702b1d639684759b0136604f59cd6a  gcc/testsuite/gdc.test/compilable/test22593.d
  510a0e27f32c7cc5e0dd1f202e12379e  gcc/testsuite/gdc.test/compilable/test22619.d
  181497175eb047b56fdd4a9ec765f832  gcc/testsuite/gdc.test/compilable/test22625.d
  901554ddde3ae8936462b745163fcba2  gcc/testsuite/gdc.test/compilable/test22632.d
  e6bb4f5c97bbba010f496af7cdf7dad5  gcc/testsuite/gdc.test/compilable/test22635.d
  a75e284a1343ab57a8bfbd77f823e12a  gcc/testsuite/gdc.test/compilable/test22639.d
  b5fdcb6907ce11c779472f845a763da6  gcc/testsuite/gdc.test/compilable/test22646.d
  b5688dff60640d71c5c1f5e9c51b5871  gcc/testsuite/gdc.test/compilable/test22665.d
  500ebbbbc62656a7e24328bcf85bbefb  gcc/testsuite/gdc.test/compilable/test22676.d
  d2f5f11274cb1bc2aceb1062858500d5  gcc/testsuite/gdc.test/compilable/test22685.d
  7591114e0810d21b5f28a3159a1703bf  gcc/testsuite/gdc.test/compilable/test22714.d
  f574ca50ea8bff40d0be73e922b0c00a  gcc/testsuite/gdc.test/compilable/test22734.d
  b6fa7fb8b6be39ac614122daf3b72230  gcc/testsuite/gdc.test/compilable/test22825.d
  3ce6d345a8a1370ca8e0335c59ee3e11  gcc/testsuite/gdc.test/compilable/test22859.d
  5045cc574731b81b8e89337c37a97779  gcc/testsuite/gdc.test/compilable/test22860.d
  507222c7ae19a95bd88c720e54c83222  gcc/testsuite/gdc.test/compilable/test22919.d
  a92fa3d1edefb6370e848a80b53e97ed  gcc/testsuite/gdc.test/compilable/test22988.d
  77ae147d30776a57d1b1e1f498f50d40  gcc/testsuite/gdc.test/compilable/test22997.d
  ec10cf15692d6643f872a67e8b78deb2  gcc/testsuite/gdc.test/compilable/test23082.d
  39043d209bd26409a2bb6419b73549ed  gcc/testsuite/gdc.test/compilable/test23087.d
  ebf5b789d4a31be2e939321d6490d585  gcc/testsuite/gdc.test/compilable/test23089.d
  91dbefd06049014b48ccf6dea94f05f3  gcc/testsuite/gdc.test/compilable/test23097.d
  f8b8b1e13145441d1c69d68cde48b4c4  gcc/testsuite/gdc.test/compilable/test23166.d
  e839f70004c90a7a3783e0b05662a616  gcc/testsuite/gdc.test/compilable/test23172.d
  ce92a5a9e73ad19738962c2dadafec98  gcc/testsuite/gdc.test/compilable/test23258.d
  330c2acf4539ef672ad9c8cf0faa0c5e  gcc/testsuite/gdc.test/compilable/test25.d
  912661e1615a2dd8fe14dbd20528f7ba  gcc/testsuite/gdc.test/compilable/test2991.d
! b8623f405791e76ef4434794003e2abe  gcc/testsuite/gdc.test/compilable/test3004.d
  65b2f8459513797e86e01bd50b1bb608  gcc/testsuite/gdc.test/compilable/test313a.d
  8b0a688ad726eb9d76224ef39e11e0f3  gcc/testsuite/gdc.test/compilable/test313b.d
  84d3cbf662e0b76bf448874c485eedb3  gcc/testsuite/gdc.test/compilable/test313c.d
--- 80551,80629 ----
  b4702b1d639684759b0136604f59cd6a  gcc/testsuite/gdc.test/compilable/test22593.d
  510a0e27f32c7cc5e0dd1f202e12379e  gcc/testsuite/gdc.test/compilable/test22619.d
  181497175eb047b56fdd4a9ec765f832  gcc/testsuite/gdc.test/compilable/test22625.d
+ 5682770d993fd0540962dd00fa2c5813  gcc/testsuite/gdc.test/compilable/test22626.d
  901554ddde3ae8936462b745163fcba2  gcc/testsuite/gdc.test/compilable/test22632.d
  e6bb4f5c97bbba010f496af7cdf7dad5  gcc/testsuite/gdc.test/compilable/test22635.d
+ 3a0a3bdf36fdab620d6fbc2c2e1bed02  gcc/testsuite/gdc.test/compilable/test22638.d
  a75e284a1343ab57a8bfbd77f823e12a  gcc/testsuite/gdc.test/compilable/test22639.d
  b5fdcb6907ce11c779472f845a763da6  gcc/testsuite/gdc.test/compilable/test22646.d
  b5688dff60640d71c5c1f5e9c51b5871  gcc/testsuite/gdc.test/compilable/test22665.d
+ c64b906f8ec8d74a707fd3c7f1ac9a03  gcc/testsuite/gdc.test/compilable/test22674.d
  500ebbbbc62656a7e24328bcf85bbefb  gcc/testsuite/gdc.test/compilable/test22676.d
  d2f5f11274cb1bc2aceb1062858500d5  gcc/testsuite/gdc.test/compilable/test22685.d
  7591114e0810d21b5f28a3159a1703bf  gcc/testsuite/gdc.test/compilable/test22714.d
  f574ca50ea8bff40d0be73e922b0c00a  gcc/testsuite/gdc.test/compilable/test22734.d
+ aa87689770ed32b270abbc0c18e24e50  gcc/testsuite/gdc.test/compilable/test22784.d
+ a13568e3baba05e9f1d3fdf1dd09aeb6  gcc/testsuite/gdc.test/compilable/test22813.d
  b6fa7fb8b6be39ac614122daf3b72230  gcc/testsuite/gdc.test/compilable/test22825.d
  3ce6d345a8a1370ca8e0335c59ee3e11  gcc/testsuite/gdc.test/compilable/test22859.d
  5045cc574731b81b8e89337c37a97779  gcc/testsuite/gdc.test/compilable/test22860.d
+ 300c7a5a04905fb4e773274af32f50e9  gcc/testsuite/gdc.test/compilable/test22865.d
+ 5e21d274547f621284add858e8815642  gcc/testsuite/gdc.test/compilable/test22916.d
  507222c7ae19a95bd88c720e54c83222  gcc/testsuite/gdc.test/compilable/test22919.d
+ bed218d1e903acd1adf1a4db4ee2df53  gcc/testsuite/gdc.test/compilable/test22952.d
  a92fa3d1edefb6370e848a80b53e97ed  gcc/testsuite/gdc.test/compilable/test22988.d
  77ae147d30776a57d1b1e1f498f50d40  gcc/testsuite/gdc.test/compilable/test22997.d
+ 7f63ae25c93f7fd48b7f257e2adcc1d3  gcc/testsuite/gdc.test/compilable/test23047.d
+ 42cf250027255776d33431028358b520  gcc/testsuite/gdc.test/compilable/test23076.d
  ec10cf15692d6643f872a67e8b78deb2  gcc/testsuite/gdc.test/compilable/test23082.d
  39043d209bd26409a2bb6419b73549ed  gcc/testsuite/gdc.test/compilable/test23087.d
  ebf5b789d4a31be2e939321d6490d585  gcc/testsuite/gdc.test/compilable/test23089.d
  91dbefd06049014b48ccf6dea94f05f3  gcc/testsuite/gdc.test/compilable/test23097.d
+ 18b466bef2e0124dd12a1499a86f00e9  gcc/testsuite/gdc.test/compilable/test23105.d
+ 19ed0ff13bf6375ae12f6893cc145763  gcc/testsuite/gdc.test/compilable/test23142.d
+ 1f873367a8e199a2eac66fd4ad356daa  gcc/testsuite/gdc.test/compilable/test23145.d
  f8b8b1e13145441d1c69d68cde48b4c4  gcc/testsuite/gdc.test/compilable/test23166.d
+ 4f765e28fd4c1a48432ad744c956c3f9  gcc/testsuite/gdc.test/compilable/test23168.d
+ 4fa99fe8979b3c75eac8f3e18f9f4ae4  gcc/testsuite/gdc.test/compilable/test23169.d
  e839f70004c90a7a3783e0b05662a616  gcc/testsuite/gdc.test/compilable/test23172.d
+ b699d40488d1619d331aa57ab786b0e4  gcc/testsuite/gdc.test/compilable/test23173.d
+ 88e0f7dab62fcddda2de75f0d13d6b08  gcc/testsuite/gdc.test/compilable/test23174.d
+ 5e496bfdffb91aa602a686521fc659ff  gcc/testsuite/gdc.test/compilable/test23235.d
+ 12eb609e349401b8ccc1e4b12d95bed9  gcc/testsuite/gdc.test/compilable/test23256.d
  ce92a5a9e73ad19738962c2dadafec98  gcc/testsuite/gdc.test/compilable/test23258.d
+ b369bc126493b9f53a9d8be5f02402d7  gcc/testsuite/gdc.test/compilable/test23262.d
+ 4d6595355987d419c02bc58d9865b016  gcc/testsuite/gdc.test/compilable/test23306.d
+ d109d7ca9dbf53c99313e0c213269eb0  gcc/testsuite/gdc.test/compilable/test23327.d
+ 40c3af3b744d27f19a9746c9be1d7006  gcc/testsuite/gdc.test/compilable/test23380.d
+ 3cf7adc41b5c44e97b5bdc6120708c0b  gcc/testsuite/gdc.test/compilable/test23386.d
+ 699b52614df61450cb552710a1a11ba2  gcc/testsuite/gdc.test/compilable/test23431.d
+ 0761f18523e8d2ee8a9fb41a4ffe7352  gcc/testsuite/gdc.test/compilable/test23431_minimal.d
+ 7b24be6d97d90ba763a176edb318c68c  gcc/testsuite/gdc.test/compilable/test23433.d
+ a0d6d79fce258945a9549d2dbef10094  gcc/testsuite/gdc.test/compilable/test23439.d
+ 1510b820fae508f5c830b438e902d50e  gcc/testsuite/gdc.test/compilable/test23481.d
+ 1402a0df4fed91c89a73efb87ee50531  gcc/testsuite/gdc.test/compilable/test23490.d
+ 9be27e9b77147542985a18f4da45f46b  gcc/testsuite/gdc.test/compilable/test23497.d
+ cd62a6e0c42e4f4b0ffd1dfed7935a22  gcc/testsuite/gdc.test/compilable/test23499.d
+ e4680b99d45fe39442d0d77e2471970d  gcc/testsuite/gdc.test/compilable/test23529.d
+ d95d2c9da602db55a6915a4d03d76842  gcc/testsuite/gdc.test/compilable/test23532.d
+ dafaaa49edb05e2c4f33f9e11a592690  gcc/testsuite/gdc.test/compilable/test23533.d
+ eb48c1df30e26093f6f255de0e353fab  gcc/testsuite/gdc.test/compilable/test23534.d
+ 47706929f3607f62e2572c113e7351ed  gcc/testsuite/gdc.test/compilable/test23586.d
+ 2452a1cfe8ac2d2e3513b174861671fa  gcc/testsuite/gdc.test/compilable/test23587.d
+ 992703c7bd8280c5be4017b3e3b04cf4  gcc/testsuite/gdc.test/compilable/test23589.d
+ ec5aff27169cb6fd12726ea44d778bd7  gcc/testsuite/gdc.test/compilable/test23598.d
+ 9e366ecc0d5b7a3594f9857e12e34ba5  gcc/testsuite/gdc.test/compilable/test23606.d
+ febede3404663f63f5ea9266f6683a53  gcc/testsuite/gdc.test/compilable/test23617.d
+ 5c2204edb27a8a450e360dc0533eb3b4  gcc/testsuite/gdc.test/compilable/test23626.d
+ 914c05a0e9775fe04be16dad8163ae53  gcc/testsuite/gdc.test/compilable/test23639.d
+ 9ad400d25cc0cf9d24706ebd3f4c3397  gcc/testsuite/gdc.test/compilable/test23651.d
+ d6adb0700c796d7765e510c8288ad2f1  gcc/testsuite/gdc.test/compilable/test23662.d
+ 1aaa8d1ddb656566f866cbcbcdad8dcd  gcc/testsuite/gdc.test/compilable/test23676.d
+ 0c69a4cce2743fa0d1d1d5504034811e  gcc/testsuite/gdc.test/compilable/test23679.d
  330c2acf4539ef672ad9c8cf0faa0c5e  gcc/testsuite/gdc.test/compilable/test25.d
  912661e1615a2dd8fe14dbd20528f7ba  gcc/testsuite/gdc.test/compilable/test2991.d
! b0234808764370745e6dbf7744465cff  gcc/testsuite/gdc.test/compilable/test3004.d
  65b2f8459513797e86e01bd50b1bb608  gcc/testsuite/gdc.test/compilable/test313a.d
  8b0a688ad726eb9d76224ef39e11e0f3  gcc/testsuite/gdc.test/compilable/test313b.d
  84d3cbf662e0b76bf448874c485eedb3  gcc/testsuite/gdc.test/compilable/test313c.d
*************** d2140d1c3d6e75f65b8b91c61c2fd9ae  gcc/te
*** 75518,75529 ****
  113f708c9494acbd5e6b907d30855919  gcc/testsuite/gdc.test/compilable/test4003.d
  8b5c10cf07a14040c6cff2fb546fb9ba  gcc/testsuite/gdc.test/compilable/test4090.d
  984272f47ab93b847449ea196fd097fc  gcc/testsuite/gdc.test/compilable/test4364.d
! de0e9a578f767c9879ebcd7ed8679ef4  gcc/testsuite/gdc.test/compilable/test4375.d
  ceec4bcd5a404c18ed0f108ec1f5bf5e  gcc/testsuite/gdc.test/compilable/test50.d
  6d1e9687702234190693f0e531ac8839  gcc/testsuite/gdc.test/compilable/test5227.d
  46edec42d5338d9ae35bd08f80fc52d1  gcc/testsuite/gdc.test/compilable/test55.d
  d1f87c40fa0c0b62b9db8f077f690237  gcc/testsuite/gdc.test/compilable/test59.d
- cd4cd770f9fc248d99ce5678ac34434b  gcc/testsuite/gdc.test/compilable/test5973.d
  10e8d5e8b165758a31cd3921e3649fe5  gcc/testsuite/gdc.test/compilable/test6013.d
  ba4310ed7e27a9658657147c4a8aea8a  gcc/testsuite/gdc.test/compilable/test602.d
  f203cdad472a1ac06cee89c4e3557d42  gcc/testsuite/gdc.test/compilable/test6056a.d
--- 80638,80648 ----
  113f708c9494acbd5e6b907d30855919  gcc/testsuite/gdc.test/compilable/test4003.d
  8b5c10cf07a14040c6cff2fb546fb9ba  gcc/testsuite/gdc.test/compilable/test4090.d
  984272f47ab93b847449ea196fd097fc  gcc/testsuite/gdc.test/compilable/test4364.d
! 2c420f5eae0d27caed7558c2fd547763  gcc/testsuite/gdc.test/compilable/test4375.d
  ceec4bcd5a404c18ed0f108ec1f5bf5e  gcc/testsuite/gdc.test/compilable/test50.d
  6d1e9687702234190693f0e531ac8839  gcc/testsuite/gdc.test/compilable/test5227.d
  46edec42d5338d9ae35bd08f80fc52d1  gcc/testsuite/gdc.test/compilable/test55.d
  d1f87c40fa0c0b62b9db8f077f690237  gcc/testsuite/gdc.test/compilable/test59.d
  10e8d5e8b165758a31cd3921e3649fe5  gcc/testsuite/gdc.test/compilable/test6013.d
  ba4310ed7e27a9658657147c4a8aea8a  gcc/testsuite/gdc.test/compilable/test602.d
  f203cdad472a1ac06cee89c4e3557d42  gcc/testsuite/gdc.test/compilable/test6056a.d
*************** db533e40440813c61fa46fb37a6f18b6  gcc/te
*** 75540,75546 ****
  783342e2cfeb88610e0a04d00450ea41  gcc/testsuite/gdc.test/compilable/test6552.d
  189fccabae6a301202fc7fad174d5203  gcc/testsuite/gdc.test/compilable/test66.d
  5beb11822a09654b517cd74fe05fb47a  gcc/testsuite/gdc.test/compilable/test67.d
- 020d85eb88809fb9eff87180b65573b5  gcc/testsuite/gdc.test/compilable/test6777.d
  ae68fa3295e63c9b13e9139b6948f21f  gcc/testsuite/gdc.test/compilable/test68.d
  1564b6ec3ad7bfb5d4f94c2dfa5ae2c7  gcc/testsuite/gdc.test/compilable/test69.d
  326c080f81967572de05e4f09d015008  gcc/testsuite/gdc.test/compilable/test6999.d
--- 80659,80664 ----
*************** a8aff1c75bc0695071a90cb5aa15971e  gcc/te
*** 75615,75625 ****
  85a5ba423ac12043f320f0ff47d0b161  gcc/testsuite/gdc.test/compilable/testVRP.d
  4f38613138feda91b158dbc10e9dcaf8  gcc/testsuite/gdc.test/compilable/testcheckimports.d
  dbddcfe494cc3c61d9b82e969af2c8ea  gcc/testsuite/gdc.test/compilable/testcontracts.d
  939371c9d34a5af76ab78baebe16d363  gcc/testsuite/gdc.test/compilable/testcstuff3.d
! 552c4640682b445ef0760a89704dd105  gcc/testsuite/gdc.test/compilable/testdip1008.d
  a45fff07259b904bd2e0780eb2b4b920  gcc/testsuite/gdc.test/compilable/testexpression.d
  165adaaca3d4cb680db8e8f7bef830af  gcc/testsuite/gdc.test/compilable/testfptr.d
  f8d3fd67e69cbc3faa127c9ea1a7ee45  gcc/testsuite/gdc.test/compilable/testfwdref.d
  acdc78c2e0880e10d12d0ba711e9c3a2  gcc/testsuite/gdc.test/compilable/testheader1.d
  b6a425aea90992550c5b5f5b1b61165d  gcc/testsuite/gdc.test/compilable/testheader12567a.d
  1e2747d468b376e4d3a04f38f0813ea8  gcc/testsuite/gdc.test/compilable/testheader12567b.d
--- 80733,80746 ----
  85a5ba423ac12043f320f0ff47d0b161  gcc/testsuite/gdc.test/compilable/testVRP.d
  4f38613138feda91b158dbc10e9dcaf8  gcc/testsuite/gdc.test/compilable/testcheckimports.d
  dbddcfe494cc3c61d9b82e969af2c8ea  gcc/testsuite/gdc.test/compilable/testcontracts.d
+ e4998c6896a3ce1b4036155ac0ec1abc  gcc/testsuite/gdc.test/compilable/testcorrectthis.d
  939371c9d34a5af76ab78baebe16d363  gcc/testsuite/gdc.test/compilable/testcstuff3.d
! f3865dda0bc7fc025ee349a831e415e7  gcc/testsuite/gdc.test/compilable/testdefines.d
! 035c837c9828677c99e64cf928df76e6  gcc/testsuite/gdc.test/compilable/testdip1008.d
  a45fff07259b904bd2e0780eb2b4b920  gcc/testsuite/gdc.test/compilable/testexpression.d
  165adaaca3d4cb680db8e8f7bef830af  gcc/testsuite/gdc.test/compilable/testfptr.d
  f8d3fd67e69cbc3faa127c9ea1a7ee45  gcc/testsuite/gdc.test/compilable/testfwdref.d
+ 301628c09e0db2d57d3f84616f1c098c  gcc/testsuite/gdc.test/compilable/testgotoskips.d
  acdc78c2e0880e10d12d0ba711e9c3a2  gcc/testsuite/gdc.test/compilable/testheader1.d
  b6a425aea90992550c5b5f5b1b61165d  gcc/testsuite/gdc.test/compilable/testheader12567a.d
  1e2747d468b376e4d3a04f38f0813ea8  gcc/testsuite/gdc.test/compilable/testheader12567b.d
*************** c1730dc788fc7e0b50d230868830e36b  gcc/te
*** 75632,75638 ****
  c50c4e3aa93d8e409dd93c6593cd3ee5  gcc/testsuite/gdc.test/compilable/testimport12242.d
  85b71e742bf5bfe7cfcf1e2a20ffb5e9  gcc/testsuite/gdc.test/compilable/testlambdacomp.d
  c5edf683ca0bd30ac0d1d5b44a632f2d  gcc/testsuite/gdc.test/compilable/testos.d
! f552c5fbb298519149738d9281e65149  gcc/testsuite/gdc.test/compilable/testparse.d
  04f186437495743a1bb1ca150d9b1c9c  gcc/testsuite/gdc.test/compilable/testpostblit.d
  b4b221ef317b956132f4d2d2b4addb1d  gcc/testsuite/gdc.test/compilable/testprofile.d
  06d53bd527300beec01412a18aacbb8b  gcc/testsuite/gdc.test/compilable/testsctreturn.d
--- 80753,80759 ----
  c50c4e3aa93d8e409dd93c6593cd3ee5  gcc/testsuite/gdc.test/compilable/testimport12242.d
  85b71e742bf5bfe7cfcf1e2a20ffb5e9  gcc/testsuite/gdc.test/compilable/testlambdacomp.d
  c5edf683ca0bd30ac0d1d5b44a632f2d  gcc/testsuite/gdc.test/compilable/testos.d
! 31b9ff8b1f91c0c0d46f167c6d69a750  gcc/testsuite/gdc.test/compilable/testparse.d
  04f186437495743a1bb1ca150d9b1c9c  gcc/testsuite/gdc.test/compilable/testpostblit.d
  b4b221ef317b956132f4d2d2b4addb1d  gcc/testsuite/gdc.test/compilable/testprofile.d
  06d53bd527300beec01412a18aacbb8b  gcc/testsuite/gdc.test/compilable/testsctreturn.d
*************** e21ca3f9cac637625ae52b172d03bcfd  gcc/te
*** 75641,75655 ****
  8e5ed37369ec09b09468ccf443c443fc  gcc/testsuite/gdc.test/compilable/traits_getFunctionAttributes.d
  0da951db343407cecaa9f85317fb649d  gcc/testsuite/gdc.test/compilable/transition_in.d
  2a5c3303f2fc00fbaf51ab7e1a392eee  gcc/testsuite/gdc.test/compilable/typeid_name.d
! 1d237198a559d6143c0e660c66cefa3b  gcc/testsuite/gdc.test/compilable/uda.d
  b215346ff6994a9f80fd4b4a3300e489  gcc/testsuite/gdc.test/compilable/udamodule1.d
  fddab229d4f220f7768aa32bff4eb235  gcc/testsuite/gdc.test/compilable/udamodule2.d
  05d2b62ab46fd89af248af1c2e5be2c1  gcc/testsuite/gdc.test/compilable/union_initialization.d
! bed7ef880f72248e4e05cd76f1015180  gcc/testsuite/gdc.test/compilable/vcg-ast.d
  e39d851e2d6df0fb0a228237d9973bdc  gcc/testsuite/gdc.test/compilable/verrors_spec.d
  7c3dc0b69abaf4feb7674c4ea5304c4d  gcc/testsuite/gdc.test/compilable/version.d
  7ea9e82ff7eecd14d9b7809d9156aad5  gcc/testsuite/gdc.test/compilable/vgc1.d
! 874604d82319461005a1d66fa1c082fe  gcc/testsuite/gdc.test/compilable/vgc2.d
  1f313881c51241b6e69f1c399d78ade7  gcc/testsuite/gdc.test/compilable/vgc3.d
  1f7b74cc98b46eee4066e8614f446c78  gcc/testsuite/gdc.test/compilable/vtemplates.d
  fe3fe69f3ba0159a4ec76976ea3bf053  gcc/testsuite/gdc.test/compilable/vtemplates_list.d
--- 80762,80777 ----
  8e5ed37369ec09b09468ccf443c443fc  gcc/testsuite/gdc.test/compilable/traits_getFunctionAttributes.d
  0da951db343407cecaa9f85317fb649d  gcc/testsuite/gdc.test/compilable/transition_in.d
  2a5c3303f2fc00fbaf51ab7e1a392eee  gcc/testsuite/gdc.test/compilable/typeid_name.d
! ac9e751e20c95911b8e0c1bc570c6124  gcc/testsuite/gdc.test/compilable/uda.d
  b215346ff6994a9f80fd4b4a3300e489  gcc/testsuite/gdc.test/compilable/udamodule1.d
  fddab229d4f220f7768aa32bff4eb235  gcc/testsuite/gdc.test/compilable/udamodule2.d
  05d2b62ab46fd89af248af1c2e5be2c1  gcc/testsuite/gdc.test/compilable/union_initialization.d
! b13edd5ae1b061369112622cadbdc3da  gcc/testsuite/gdc.test/compilable/vararg.d
! a628926ce76a489cff5ca423a30f04db  gcc/testsuite/gdc.test/compilable/vcg-ast.d
  e39d851e2d6df0fb0a228237d9973bdc  gcc/testsuite/gdc.test/compilable/verrors_spec.d
  7c3dc0b69abaf4feb7674c4ea5304c4d  gcc/testsuite/gdc.test/compilable/version.d
  7ea9e82ff7eecd14d9b7809d9156aad5  gcc/testsuite/gdc.test/compilable/vgc1.d
! 8b1d1f09cc831f47f82a490c8ef78d15  gcc/testsuite/gdc.test/compilable/vgc2.d
  1f313881c51241b6e69f1c399d78ade7  gcc/testsuite/gdc.test/compilable/vgc3.d
  1f7b74cc98b46eee4066e8614f446c78  gcc/testsuite/gdc.test/compilable/vtemplates.d
  fe3fe69f3ba0159a4ec76976ea3bf053  gcc/testsuite/gdc.test/compilable/vtemplates_list.d
*************** b5b14c87f99689b64af89383a7600110  gcc/te
*** 75658,75664 ****
--- 80780,80788 ----
  18907c6d791bf506f12bb09b49c6a960  gcc/testsuite/gdc.test/fail_compilation/aacmp10381.d
  e0066ba6846a84c27c5813f1eae1f740  gcc/testsuite/gdc.test/fail_compilation/aliasassign.d
  724063393d084db2d74d55a0653dbf2f  gcc/testsuite/gdc.test/fail_compilation/aliasassign1.d
+ 44e432d8553e9d7349664fe96270cd70  gcc/testsuite/gdc.test/fail_compilation/aliasassign2.d
  29ac4b31cfdfb34ac1753068addb9296  gcc/testsuite/gdc.test/fail_compilation/already_defined.d
+ e2827d0ebb099e38eb6125c844d64250  gcc/testsuite/gdc.test/fail_compilation/attributediagnostic.d
  e309e5ed61e9e05b734a04331138794f  gcc/testsuite/gdc.test/fail_compilation/b12504.d
  781af0061ee627ed6ea3f18dd0f84c5b  gcc/testsuite/gdc.test/fail_compilation/b15069.d
  6830b0c11beb2de9c49b65c98e786c9b  gcc/testsuite/gdc.test/fail_compilation/b15875.d
*************** b19c540895e68030d7f79aea6ba21213  gcc/te
*** 75677,75684 ****
  365ab715a73fe9c494170233e038c30b  gcc/testsuite/gdc.test/fail_compilation/b20780.d
  82cdbb62978f6d1599220b6ee9f9a92b  gcc/testsuite/gdc.test/fail_compilation/b20875.d
  47c41c40dd4bf706c7dd71dc9350a9c1  gcc/testsuite/gdc.test/fail_compilation/b3841.d
! 519990e6c61b8bdaf5b380851475d8ad  gcc/testsuite/gdc.test/fail_compilation/b6227.d
! ace267dee17fdf434350526c6c171cce  gcc/testsuite/gdc.test/fail_compilation/betterc.d
  6c4e325d72a973cc17e40fd597c6ca8b  gcc/testsuite/gdc.test/fail_compilation/bug15613.d
  e4bc96ee8e6ef17e2d638e85e45c7913  gcc/testsuite/gdc.test/fail_compilation/bug16165.d
  6fdc01527eb87db969507dc657c75baa  gcc/testsuite/gdc.test/fail_compilation/bug18743.d
--- 80801,80812 ----
  365ab715a73fe9c494170233e038c30b  gcc/testsuite/gdc.test/fail_compilation/b20780.d
  82cdbb62978f6d1599220b6ee9f9a92b  gcc/testsuite/gdc.test/fail_compilation/b20875.d
  47c41c40dd4bf706c7dd71dc9350a9c1  gcc/testsuite/gdc.test/fail_compilation/b3841.d
! 4f14c24ff5b09173d0eaac42b8afff9e  gcc/testsuite/gdc.test/fail_compilation/b6227.d
! 1803dad8fd943fe1b5364f410f4667b8  gcc/testsuite/gdc.test/fail_compilation/betterc.d
! d48231d61948a296c522365cd0c81005  gcc/testsuite/gdc.test/fail_compilation/biterrors.d
! f745eda1a6614a93d1b62cc2fd57698e  gcc/testsuite/gdc.test/fail_compilation/biterrors2.d
! bcdfe503564b5d03743b739bfffe8009  gcc/testsuite/gdc.test/fail_compilation/biterrors3.d
! bff631f408d6b1d6f1c1b401e3b1fade  gcc/testsuite/gdc.test/fail_compilation/biterrors4.d
  6c4e325d72a973cc17e40fd597c6ca8b  gcc/testsuite/gdc.test/fail_compilation/bug15613.d
  e4bc96ee8e6ef17e2d638e85e45c7913  gcc/testsuite/gdc.test/fail_compilation/bug16165.d
  6fdc01527eb87db969507dc657c75baa  gcc/testsuite/gdc.test/fail_compilation/bug18743.d
*************** dfcfc941a23106dfb4aa633010d25044  gcc/te
*** 75691,75705 ****
  e40db6207cc66055571f5552ba4dd74e  gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
  e483d431bf6e45ed82ce3539c2baab76  gcc/testsuite/gdc.test/fail_compilation/bug8891.d
  a2fa5b05cd2ac9c8269f5d03d1ef6a4e  gcc/testsuite/gdc.test/fail_compilation/bug9631.d
  ec3bf4a66065f2860f602b88e0da3655  gcc/testsuite/gdc.test/fail_compilation/casttuple.d
  ce21d4a4c779579022965a535cbcb1a6  gcc/testsuite/gdc.test/fail_compilation/ccast.d
  1942044f0f053eea8fc8572c50ee4fe1  gcc/testsuite/gdc.test/fail_compilation/cerrors.d
  4e83f64920318dc56ac80f35d4b3915f  gcc/testsuite/gdc.test/fail_compilation/checkimports2.d
! 251a02d3dfb01ccd8bb885928ff25722  gcc/testsuite/gdc.test/fail_compilation/chkformat.d
  9797e02f098d52d0de89e8253f84b6c3  gcc/testsuite/gdc.test/fail_compilation/circ10280.d
  6a293d0ed6519f3f6657000a879d53c2  gcc/testsuite/gdc.test/fail_compilation/class1.d
  ac55f5cfdfaa7cf8d01f1887d25ab07a  gcc/testsuite/gdc.test/fail_compilation/class2.d
! 82d5c58af40ca12b71a055c234f4810e  gcc/testsuite/gdc.test/fail_compilation/commaexp.d
  b4bfce7761bc12b212dab71a7e6279f7  gcc/testsuite/gdc.test/fail_compilation/constraints_aggr.d
  abef410d735fbbafd1e6c203893dd1b8  gcc/testsuite/gdc.test/fail_compilation/constraints_defs.d
  b5562043c169c9776456060c54e3ad09  gcc/testsuite/gdc.test/fail_compilation/constraints_func1.d
--- 80819,80834 ----
  e40db6207cc66055571f5552ba4dd74e  gcc/testsuite/gdc.test/fail_compilation/bug8150b.d
  e483d431bf6e45ed82ce3539c2baab76  gcc/testsuite/gdc.test/fail_compilation/bug8891.d
  a2fa5b05cd2ac9c8269f5d03d1ef6a4e  gcc/testsuite/gdc.test/fail_compilation/bug9631.d
+ 841e7b9289bdecfa32b91f46d4d274ba  gcc/testsuite/gdc.test/fail_compilation/call_function_type.d
  ec3bf4a66065f2860f602b88e0da3655  gcc/testsuite/gdc.test/fail_compilation/casttuple.d
  ce21d4a4c779579022965a535cbcb1a6  gcc/testsuite/gdc.test/fail_compilation/ccast.d
  1942044f0f053eea8fc8572c50ee4fe1  gcc/testsuite/gdc.test/fail_compilation/cerrors.d
  4e83f64920318dc56ac80f35d4b3915f  gcc/testsuite/gdc.test/fail_compilation/checkimports2.d
! 3bf379199a220b56736062172e226468  gcc/testsuite/gdc.test/fail_compilation/chkformat.d
  9797e02f098d52d0de89e8253f84b6c3  gcc/testsuite/gdc.test/fail_compilation/circ10280.d
  6a293d0ed6519f3f6657000a879d53c2  gcc/testsuite/gdc.test/fail_compilation/class1.d
  ac55f5cfdfaa7cf8d01f1887d25ab07a  gcc/testsuite/gdc.test/fail_compilation/class2.d
! 77f88d47e1f26f0dd36c1835e6194ba5  gcc/testsuite/gdc.test/fail_compilation/commaexp.d
  b4bfce7761bc12b212dab71a7e6279f7  gcc/testsuite/gdc.test/fail_compilation/constraints_aggr.d
  abef410d735fbbafd1e6c203893dd1b8  gcc/testsuite/gdc.test/fail_compilation/constraints_defs.d
  b5562043c169c9776456060c54e3ad09  gcc/testsuite/gdc.test/fail_compilation/constraints_func1.d
*************** dfd223ee8e19d86aeb106dce298f3061  gcc/te
*** 75714,75719 ****
--- 80843,80849 ----
  928d45bd54111a5e63e6cbd42dc55481  gcc/testsuite/gdc.test/fail_compilation/cppeh2.d
  1c6ea8e8eec8928220d748a1a5eda623  gcc/testsuite/gdc.test/fail_compilation/cppmangle.d
  32bd77efb94a7a1a8369659d1697ac55  gcc/testsuite/gdc.test/fail_compilation/cppmangle2.d
+ d10ef51e2ba236346c33f305347a1b3a  gcc/testsuite/gdc.test/fail_compilation/cppvar.d
  1ba05446e4c373c3fdbe16b248b90c1c  gcc/testsuite/gdc.test/fail_compilation/ctfe10989.d
  24ee417386f9acb8b0b48425b516c896  gcc/testsuite/gdc.test/fail_compilation/ctfe10995.d
  489e4852a292b484e336ecf177ab97a0  gcc/testsuite/gdc.test/fail_compilation/ctfe11467.d
*************** dfd223ee8e19d86aeb106dce298f3061  gcc/te
*** 75721,75729 ****
--- 80851,80861 ----
  7af06ff2514f3b06289ab78993fbf62a  gcc/testsuite/gdc.test/fail_compilation/ctfe14207.d
  e875c4bc47d169566d81fc9e3cd91921  gcc/testsuite/gdc.test/fail_compilation/ctfe14465.d
  de17b2a15306feb4124dbd44c07f1477  gcc/testsuite/gdc.test/fail_compilation/ctfe14731.d
+ 4ecb3dd4cf9077fc0b6756ab36174ed9  gcc/testsuite/gdc.test/fail_compilation/ctfeblock.d
  b0b58282b0fe3f3fe68b280aefebbf28  gcc/testsuite/gdc.test/fail_compilation/ctypes.d
  2cf4b4d38bcfec6baeb522b946354879  gcc/testsuite/gdc.test/fail_compilation/cwords.d
  648e4f1d8563d8a65d3947f9f5d0a995  gcc/testsuite/gdc.test/fail_compilation/dassert.d
+ bc1d8807cf854326de1b4c43a31e885b  gcc/testsuite/gdc.test/fail_compilation/dbitfields.d
  dcca7e17c023779b24f628b1c9e3d282  gcc/testsuite/gdc.test/fail_compilation/ddoc_18083.d
  4d924d33cec417a66c755fe3d7769105  gcc/testsuite/gdc.test/fail_compilation/debugCaseDeclaration.d
  048678d1d099844514ca11b5d5ab5cb2  gcc/testsuite/gdc.test/fail_compilation/dep_d1_ops.d
*************** e41028796693073cf78596bf89f2fe18  gcc/te
*** 75732,75764 ****
  ac11c760472b9b30ec93e1c3f589dd6a  gcc/testsuite/gdc.test/fail_compilation/depmsg15814.d
  8e33583582257f8d70a4992ecd2674c7  gcc/testsuite/gdc.test/fail_compilation/depmsg15815.d
  cb5c9fb87f88ec5049b61a4ee9b09382  gcc/testsuite/gdc.test/fail_compilation/deprecate1553.d
  fb2d65527498b849c7a6166457aa4449  gcc/testsuite/gdc.test/fail_compilation/deprecated6760.d
  e3cb450a222f6e7769f2f80109b5669c  gcc/testsuite/gdc.test/fail_compilation/deprecatedImports.d
  f2c7e463732bac008be36eef40f1f794  gcc/testsuite/gdc.test/fail_compilation/deprecatedTemplates.d
  58bd989a6c4cef0ef2f7111fcc8f2fa0  gcc/testsuite/gdc.test/fail_compilation/deprecateopdot.d
  f6f3553d7b2001f0c682efff6764aa19  gcc/testsuite/gdc.test/fail_compilation/deprecations.d
  89725246f834be49561fa26ca1a81abe  gcc/testsuite/gdc.test/fail_compilation/diag10089.d
! 381407271899f4b10b9d6ad737780732  gcc/testsuite/gdc.test/fail_compilation/diag10099.d
  da8bedca9f07c5500e3fd0c0d624138f  gcc/testsuite/gdc.test/fail_compilation/diag10141.d
! 77a1f2d14863eb107f340720ebfb5bf3  gcc/testsuite/gdc.test/fail_compilation/diag10169.d
  c8b81e8d799716ffe482b951a7a5784c  gcc/testsuite/gdc.test/fail_compilation/diag10221.d
  95a3eab7c2b730bb39cc59728912d49b  gcc/testsuite/gdc.test/fail_compilation/diag10221a.d
! 91b6e5db072f2c2bd4cbb3c2b03c02f6  gcc/testsuite/gdc.test/fail_compilation/diag10319.d
  3ac9c2c67c7cc5aacc8d31f1d8cad8de  gcc/testsuite/gdc.test/fail_compilation/diag10327.d
  8c5aee5c8821623c5fa500cc7b794ab5  gcc/testsuite/gdc.test/fail_compilation/diag10359.d
  97f43a15ee0e3ae55ecb8ee2d5a4ef88  gcc/testsuite/gdc.test/fail_compilation/diag10405.d
  11a17667a41ad9d2157464f474efd825  gcc/testsuite/gdc.test/fail_compilation/diag10415.d
  1b5e8da546ae6c6b10920988d411edb2  gcc/testsuite/gdc.test/fail_compilation/diag10688.d
  3325c9050495bdf5823b3250f244d278  gcc/testsuite/gdc.test/fail_compilation/diag10768.d
! c6f7f49c4c5bb698659469f4f996d058  gcc/testsuite/gdc.test/fail_compilation/diag10783.d
  9435511e2251f51140243460475ba28b  gcc/testsuite/gdc.test/fail_compilation/diag10792.d
! 03989d7d12cf58ba65a56378f98f44a9  gcc/testsuite/gdc.test/fail_compilation/diag10805.d
! b2ecb5e8bdf7dcbdac60b656ef82ab91  gcc/testsuite/gdc.test/fail_compilation/diag10862.d
  0f8fa1a117d96e72fecd6da544cc30de  gcc/testsuite/gdc.test/fail_compilation/diag10926.d
  8f5344172ec0e3c06210b931eb8b2289  gcc/testsuite/gdc.test/fail_compilation/diag10984.d
  29a03f85bb4ab7f29f1c7276976fe7c2  gcc/testsuite/gdc.test/fail_compilation/diag11078.d
! 0faca6f755cd34758eca5dde51012d34  gcc/testsuite/gdc.test/fail_compilation/diag11132.d
! 251337936687eddfab2149b8793c1114  gcc/testsuite/gdc.test/fail_compilation/diag11198.d
  085c1cdc700e65be81dd4c7bf52294cb  gcc/testsuite/gdc.test/fail_compilation/diag11423.d
  1066a5949691f5ee2814964ad44866dc  gcc/testsuite/gdc.test/fail_compilation/diag11425.d
  1595d3eede6d84963a630a22f6874c62  gcc/testsuite/gdc.test/fail_compilation/diag11727.d
--- 80864,80897 ----
  ac11c760472b9b30ec93e1c3f589dd6a  gcc/testsuite/gdc.test/fail_compilation/depmsg15814.d
  8e33583582257f8d70a4992ecd2674c7  gcc/testsuite/gdc.test/fail_compilation/depmsg15815.d
  cb5c9fb87f88ec5049b61a4ee9b09382  gcc/testsuite/gdc.test/fail_compilation/deprecate1553.d
+ ee1d89ac55be93db8883279137ef0a85  gcc/testsuite/gdc.test/fail_compilation/deprecate_getVirtualFunctions.d
  fb2d65527498b849c7a6166457aa4449  gcc/testsuite/gdc.test/fail_compilation/deprecated6760.d
  e3cb450a222f6e7769f2f80109b5669c  gcc/testsuite/gdc.test/fail_compilation/deprecatedImports.d
  f2c7e463732bac008be36eef40f1f794  gcc/testsuite/gdc.test/fail_compilation/deprecatedTemplates.d
  58bd989a6c4cef0ef2f7111fcc8f2fa0  gcc/testsuite/gdc.test/fail_compilation/deprecateopdot.d
  f6f3553d7b2001f0c682efff6764aa19  gcc/testsuite/gdc.test/fail_compilation/deprecations.d
  89725246f834be49561fa26ca1a81abe  gcc/testsuite/gdc.test/fail_compilation/diag10089.d
! 55324cf5a63fdb7f5f16fb3f858ec68a  gcc/testsuite/gdc.test/fail_compilation/diag10099.d
  da8bedca9f07c5500e3fd0c0d624138f  gcc/testsuite/gdc.test/fail_compilation/diag10141.d
! 4b984c6d8ff67f57be6b538bfa4e1248  gcc/testsuite/gdc.test/fail_compilation/diag10169.d
  c8b81e8d799716ffe482b951a7a5784c  gcc/testsuite/gdc.test/fail_compilation/diag10221.d
  95a3eab7c2b730bb39cc59728912d49b  gcc/testsuite/gdc.test/fail_compilation/diag10221a.d
! c22a3b107c73f4b6e75350253158c2b9  gcc/testsuite/gdc.test/fail_compilation/diag10319.d
  3ac9c2c67c7cc5aacc8d31f1d8cad8de  gcc/testsuite/gdc.test/fail_compilation/diag10327.d
  8c5aee5c8821623c5fa500cc7b794ab5  gcc/testsuite/gdc.test/fail_compilation/diag10359.d
  97f43a15ee0e3ae55ecb8ee2d5a4ef88  gcc/testsuite/gdc.test/fail_compilation/diag10405.d
  11a17667a41ad9d2157464f474efd825  gcc/testsuite/gdc.test/fail_compilation/diag10415.d
  1b5e8da546ae6c6b10920988d411edb2  gcc/testsuite/gdc.test/fail_compilation/diag10688.d
  3325c9050495bdf5823b3250f244d278  gcc/testsuite/gdc.test/fail_compilation/diag10768.d
! f2a37e66ac1078eafe899bdbf93154a6  gcc/testsuite/gdc.test/fail_compilation/diag10783.d
  9435511e2251f51140243460475ba28b  gcc/testsuite/gdc.test/fail_compilation/diag10792.d
! 29ca6c80d3d81d3547800e40caef32f1  gcc/testsuite/gdc.test/fail_compilation/diag10805.d
! 2a21f82c5f68e9f3886ba881004fa394  gcc/testsuite/gdc.test/fail_compilation/diag10862.d
  0f8fa1a117d96e72fecd6da544cc30de  gcc/testsuite/gdc.test/fail_compilation/diag10926.d
  8f5344172ec0e3c06210b931eb8b2289  gcc/testsuite/gdc.test/fail_compilation/diag10984.d
  29a03f85bb4ab7f29f1c7276976fe7c2  gcc/testsuite/gdc.test/fail_compilation/diag11078.d
! 56b76f8f79c22f37c4a483d94cc992c5  gcc/testsuite/gdc.test/fail_compilation/diag11132.d
! 5609c196ea47f6f0d67f688b3ef7eb4e  gcc/testsuite/gdc.test/fail_compilation/diag11198.d
  085c1cdc700e65be81dd4c7bf52294cb  gcc/testsuite/gdc.test/fail_compilation/diag11423.d
  1066a5949691f5ee2814964ad44866dc  gcc/testsuite/gdc.test/fail_compilation/diag11425.d
  1595d3eede6d84963a630a22f6874c62  gcc/testsuite/gdc.test/fail_compilation/diag11727.d
*************** cd21f58b757a4597aecb16109e045703  gcc/te
*** 75771,75777 ****
  052f50c16bbe7e7daa684e7d68044f6a  gcc/testsuite/gdc.test/fail_compilation/diag12063.d
  36eaacf4aa9b526badb51a1b2a781cff  gcc/testsuite/gdc.test/fail_compilation/diag12124.d
  42592ce737085699a7e4f2328a040c3d  gcc/testsuite/gdc.test/fail_compilation/diag12280.d
! 510d839a4af121ba503edd690d799bd6  gcc/testsuite/gdc.test/fail_compilation/diag12312.d
  8767ce6ac75391d72d3bf72f7e98f2e5  gcc/testsuite/gdc.test/fail_compilation/diag12380.d
  5f628747633cc61c61aae674fa0ce146  gcc/testsuite/gdc.test/fail_compilation/diag12432.d
  ec941f3b9443e4300eb4f2b5c013b752  gcc/testsuite/gdc.test/fail_compilation/diag12480.d
--- 80904,80910 ----
  052f50c16bbe7e7daa684e7d68044f6a  gcc/testsuite/gdc.test/fail_compilation/diag12063.d
  36eaacf4aa9b526badb51a1b2a781cff  gcc/testsuite/gdc.test/fail_compilation/diag12124.d
  42592ce737085699a7e4f2328a040c3d  gcc/testsuite/gdc.test/fail_compilation/diag12280.d
! cce35e6668151aa556db94f1c688fa72  gcc/testsuite/gdc.test/fail_compilation/diag12312.d
  8767ce6ac75391d72d3bf72f7e98f2e5  gcc/testsuite/gdc.test/fail_compilation/diag12380.d
  5f628747633cc61c61aae674fa0ce146  gcc/testsuite/gdc.test/fail_compilation/diag12432.d
  ec941f3b9443e4300eb4f2b5c013b752  gcc/testsuite/gdc.test/fail_compilation/diag12480.d
*************** ec941f3b9443e4300eb4f2b5c013b752  gcc/te
*** 75779,75785 ****
  4aa0e121f0b2bab5aa266044e6c5265b  gcc/testsuite/gdc.test/fail_compilation/diag12640.d
  7e901d0a60622bbf5d21e068b85dae87  gcc/testsuite/gdc.test/fail_compilation/diag12678.d
  e5a44aa59f0a8c539df417253dfc757d  gcc/testsuite/gdc.test/fail_compilation/diag12777.d
! d02fe9df0ea9c61f551040c6db3d9f89  gcc/testsuite/gdc.test/fail_compilation/diag12829.d
  12ad99f038ff9d4b130534d896ba7e3e  gcc/testsuite/gdc.test/fail_compilation/diag13028.d
  26a273e7e974918905dcd941ce0a6b28  gcc/testsuite/gdc.test/fail_compilation/diag13082.d
  d4bdce5da010bdb608d7a34a8a7f5740  gcc/testsuite/gdc.test/fail_compilation/diag13142.d
--- 80912,80918 ----
  4aa0e121f0b2bab5aa266044e6c5265b  gcc/testsuite/gdc.test/fail_compilation/diag12640.d
  7e901d0a60622bbf5d21e068b85dae87  gcc/testsuite/gdc.test/fail_compilation/diag12678.d
  e5a44aa59f0a8c539df417253dfc757d  gcc/testsuite/gdc.test/fail_compilation/diag12777.d
! f0a3873b3c6792dd7db6cca830f4f476  gcc/testsuite/gdc.test/fail_compilation/diag12829.d
  12ad99f038ff9d4b130534d896ba7e3e  gcc/testsuite/gdc.test/fail_compilation/diag13028.d
  26a273e7e974918905dcd941ce0a6b28  gcc/testsuite/gdc.test/fail_compilation/diag13082.d
  d4bdce5da010bdb608d7a34a8a7f5740  gcc/testsuite/gdc.test/fail_compilation/diag13142.d
*************** d4bdce5da010bdb608d7a34a8a7f5740  gcc/te
*** 75787,75803 ****
  85dab21ff2de797ebee17a2ddc1fb394  gcc/testsuite/gdc.test/fail_compilation/diag13281.d
  97d3e50e19ff8502b51f9204e824c38f  gcc/testsuite/gdc.test/fail_compilation/diag13320.d
  dd421ed0f9abe1a714c279007e2a5592  gcc/testsuite/gdc.test/fail_compilation/diag13333.d
! 4c049c00b9882da6f233bdc115b7569a  gcc/testsuite/gdc.test/fail_compilation/diag13528.d
  31eaec2f7799d785b3d295c2f8f8fdc7  gcc/testsuite/gdc.test/fail_compilation/diag13609a.d
  9688de813cdbe563a300541d45c3bede  gcc/testsuite/gdc.test/fail_compilation/diag13609b.d
  323639abc3ebdd34ce32293a912c31fc  gcc/testsuite/gdc.test/fail_compilation/diag13787.d
  29a96c80e52a33d2abd697465057cdaf  gcc/testsuite/gdc.test/fail_compilation/diag13884.d
  faff105f32e9ad1bee6d733b11ef0440  gcc/testsuite/gdc.test/fail_compilation/diag13942.d
  b135de15f64cd4196a902ddf0bc6bca5  gcc/testsuite/gdc.test/fail_compilation/diag14102.d
! 0946fe4151d10e98d70dbe3929b04909  gcc/testsuite/gdc.test/fail_compilation/diag14145.d
  470f9e960030641e13352fc666d6c8fe  gcc/testsuite/gdc.test/fail_compilation/diag14163.d
! 918fdf3ef80f8ad80218f03b8a241fa1  gcc/testsuite/gdc.test/fail_compilation/diag14235.d
! 8640199a4a4f638b7f555c0d037fe852  gcc/testsuite/gdc.test/fail_compilation/diag14818.d
  3808501546013484e5ead4ac99b5e9ee  gcc/testsuite/gdc.test/fail_compilation/diag14875.d
  3721c00c1cf5f5573935d4961c7f9f52  gcc/testsuite/gdc.test/fail_compilation/diag14876.d
  5c4ad04d22fbe55f5b07497287ced691  gcc/testsuite/gdc.test/fail_compilation/diag15001.d
--- 80920,80936 ----
  85dab21ff2de797ebee17a2ddc1fb394  gcc/testsuite/gdc.test/fail_compilation/diag13281.d
  97d3e50e19ff8502b51f9204e824c38f  gcc/testsuite/gdc.test/fail_compilation/diag13320.d
  dd421ed0f9abe1a714c279007e2a5592  gcc/testsuite/gdc.test/fail_compilation/diag13333.d
! dab78f06d70c642d12537815a7c1109a  gcc/testsuite/gdc.test/fail_compilation/diag13528.d
  31eaec2f7799d785b3d295c2f8f8fdc7  gcc/testsuite/gdc.test/fail_compilation/diag13609a.d
  9688de813cdbe563a300541d45c3bede  gcc/testsuite/gdc.test/fail_compilation/diag13609b.d
  323639abc3ebdd34ce32293a912c31fc  gcc/testsuite/gdc.test/fail_compilation/diag13787.d
  29a96c80e52a33d2abd697465057cdaf  gcc/testsuite/gdc.test/fail_compilation/diag13884.d
  faff105f32e9ad1bee6d733b11ef0440  gcc/testsuite/gdc.test/fail_compilation/diag13942.d
  b135de15f64cd4196a902ddf0bc6bca5  gcc/testsuite/gdc.test/fail_compilation/diag14102.d
! 01fd3ec5af6304a8ba774953d807c55c  gcc/testsuite/gdc.test/fail_compilation/diag14145.d
  470f9e960030641e13352fc666d6c8fe  gcc/testsuite/gdc.test/fail_compilation/diag14163.d
! 1a2929addc83dac2ec8bfe022f2d3a36  gcc/testsuite/gdc.test/fail_compilation/diag14235.d
! 4e2b3a2f190850c011d184f5a2067132  gcc/testsuite/gdc.test/fail_compilation/diag14818.d
  3808501546013484e5ead4ac99b5e9ee  gcc/testsuite/gdc.test/fail_compilation/diag14875.d
  3721c00c1cf5f5573935d4961c7f9f52  gcc/testsuite/gdc.test/fail_compilation/diag14876.d
  5c4ad04d22fbe55f5b07497287ced691  gcc/testsuite/gdc.test/fail_compilation/diag15001.d
*************** b135de15f64cd4196a902ddf0bc6bca5  gcc/te
*** 75807,75813 ****
  b2c274e49ec1f078f27e11c2c3c1480f  gcc/testsuite/gdc.test/fail_compilation/diag15411.d
  f28f753c50d24ae45fd4aacf60d88ef4  gcc/testsuite/gdc.test/fail_compilation/diag1566.d
  079ea590e7e1ad4e2aa15133ada08c5a  gcc/testsuite/gdc.test/fail_compilation/diag15669.d
! f2cbcf5e5cffa4c4f2d17e6d1089c3c6  gcc/testsuite/gdc.test/fail_compilation/diag15713.d
  88da152ad7463583e00c228e6531a782  gcc/testsuite/gdc.test/fail_compilation/diag15974.d
  53f97b18fcd9150362cfa32203d1ce90  gcc/testsuite/gdc.test/fail_compilation/diag16271.d
  79eeb3e32b34783ae3c4ccea6caf4721  gcc/testsuite/gdc.test/fail_compilation/diag16499.d
--- 80940,80946 ----
  b2c274e49ec1f078f27e11c2c3c1480f  gcc/testsuite/gdc.test/fail_compilation/diag15411.d
  f28f753c50d24ae45fd4aacf60d88ef4  gcc/testsuite/gdc.test/fail_compilation/diag1566.d
  079ea590e7e1ad4e2aa15133ada08c5a  gcc/testsuite/gdc.test/fail_compilation/diag15669.d
! dc5b7fb35b3c8566acbced7e66b9287f  gcc/testsuite/gdc.test/fail_compilation/diag15713.d
  88da152ad7463583e00c228e6531a782  gcc/testsuite/gdc.test/fail_compilation/diag15974.d
  53f97b18fcd9150362cfa32203d1ce90  gcc/testsuite/gdc.test/fail_compilation/diag16271.d
  79eeb3e32b34783ae3c4ccea6caf4721  gcc/testsuite/gdc.test/fail_compilation/diag16499.d
*************** ef13cff5613132d38394dfcda321198a  gcc/te
*** 75822,75831 ****
  e382e1fe742ff323d95980a7b3337beb  gcc/testsuite/gdc.test/fail_compilation/diag20059.d
  c3638a460a108e562e095fa04d0d60be  gcc/testsuite/gdc.test/fail_compilation/diag20518.d
  b233b20e604b69dca9939988d5ecf22f  gcc/testsuite/gdc.test/fail_compilation/diag21883.d
  9b6cfcbc4b79fcd4610ac7bcb72ffb67  gcc/testsuite/gdc.test/fail_compilation/diag2452.d
  6f951b34310a15382960e9f406c8484e  gcc/testsuite/gdc.test/fail_compilation/diag3013.d
! 5a878ff44a7acd11a67ba387edb73bfe  gcc/testsuite/gdc.test/fail_compilation/diag3438.d
! f53190991d6bad04d5f8507c6bcddfe8  gcc/testsuite/gdc.test/fail_compilation/diag3438b.d
  e771c3d0b572b4c3cad86d219b8ae6bc  gcc/testsuite/gdc.test/fail_compilation/diag3672.d
  3310352e022602a5aade42284297bffb  gcc/testsuite/gdc.test/fail_compilation/diag3672a.d
  2f37bbfbcaf32e6965aa587cda1caa6f  gcc/testsuite/gdc.test/fail_compilation/diag3673.d
--- 80955,80966 ----
  e382e1fe742ff323d95980a7b3337beb  gcc/testsuite/gdc.test/fail_compilation/diag20059.d
  c3638a460a108e562e095fa04d0d60be  gcc/testsuite/gdc.test/fail_compilation/diag20518.d
  b233b20e604b69dca9939988d5ecf22f  gcc/testsuite/gdc.test/fail_compilation/diag21883.d
+ 5c89600971dd19099525abe20ce5f158  gcc/testsuite/gdc.test/fail_compilation/diag23295.d
+ c13e43cabcb95659a33f835e356f750f  gcc/testsuite/gdc.test/fail_compilation/diag23355.d
+ 224a2021912a4ad8ba087865fa352232  gcc/testsuite/gdc.test/fail_compilation/diag23384.d
  9b6cfcbc4b79fcd4610ac7bcb72ffb67  gcc/testsuite/gdc.test/fail_compilation/diag2452.d
  6f951b34310a15382960e9f406c8484e  gcc/testsuite/gdc.test/fail_compilation/diag3013.d
! 863bf09faa109691f5e866a564d3203b  gcc/testsuite/gdc.test/fail_compilation/diag3438.d
  e771c3d0b572b4c3cad86d219b8ae6bc  gcc/testsuite/gdc.test/fail_compilation/diag3672.d
  3310352e022602a5aade42284297bffb  gcc/testsuite/gdc.test/fail_compilation/diag3672a.d
  2f37bbfbcaf32e6965aa587cda1caa6f  gcc/testsuite/gdc.test/fail_compilation/diag3673.d
*************** df337ef4561ea1d5044bc4478536d6e3  gcc/te
*** 75851,75857 ****
  b0bb0a7eed29aa54814135d9d2b2a25a  gcc/testsuite/gdc.test/fail_compilation/diag7747.d
  c054c437713978aaa4afae9d1d969336  gcc/testsuite/gdc.test/fail_compilation/diag7998.d
  c3f1286978539eb8fb344f622234e66f  gcc/testsuite/gdc.test/fail_compilation/diag8044.d
! 0bc5a6d5669f649bd952495c9e985fe6  gcc/testsuite/gdc.test/fail_compilation/diag8101.d
  23e1ead2a04cd7bb7f19949550db3bd3  gcc/testsuite/gdc.test/fail_compilation/diag8101b.d
  286c2b3cf8b5667b030e56dc6f4b2389  gcc/testsuite/gdc.test/fail_compilation/diag8178.d
  03f28c9b644096a7e8a4b8ce284a059b  gcc/testsuite/gdc.test/fail_compilation/diag8318.d
--- 80986,80992 ----
  b0bb0a7eed29aa54814135d9d2b2a25a  gcc/testsuite/gdc.test/fail_compilation/diag7747.d
  c054c437713978aaa4afae9d1d969336  gcc/testsuite/gdc.test/fail_compilation/diag7998.d
  c3f1286978539eb8fb344f622234e66f  gcc/testsuite/gdc.test/fail_compilation/diag8044.d
! 63d9012b1964ee226e2c686bda02edaa  gcc/testsuite/gdc.test/fail_compilation/diag8101.d
  23e1ead2a04cd7bb7f19949550db3bd3  gcc/testsuite/gdc.test/fail_compilation/diag8101b.d
  286c2b3cf8b5667b030e56dc6f4b2389  gcc/testsuite/gdc.test/fail_compilation/diag8178.d
  03f28c9b644096a7e8a4b8ce284a059b  gcc/testsuite/gdc.test/fail_compilation/diag8318.d
*************** ec634dbbf8f3a96a5d79c7d8f3efccf8  gcc/te
*** 75866,75872 ****
  42812d0c83ffaf8e781baa00443ebbac  gcc/testsuite/gdc.test/fail_compilation/diag8787.d
  ff3b86a24c6b08b8abda906070e72c91  gcc/testsuite/gdc.test/fail_compilation/diag8825.d
  2f7ecdc871c982df25cc4452eb37393d  gcc/testsuite/gdc.test/fail_compilation/diag8892.d
! 7ff0004a27d99a84392ea5fe3d9590d1  gcc/testsuite/gdc.test/fail_compilation/diag8894.d
  883b3aa087c353de52e9d7ef2f1e11d3  gcc/testsuite/gdc.test/fail_compilation/diag8928.d
  16bc7fb774cb7a9fb57bdfdc8899dc53  gcc/testsuite/gdc.test/fail_compilation/diag9004.d
  1ca0cbaa5486bbb1fca649821e5fd454  gcc/testsuite/gdc.test/fail_compilation/diag9148.d
--- 81001,81007 ----
  42812d0c83ffaf8e781baa00443ebbac  gcc/testsuite/gdc.test/fail_compilation/diag8787.d
  ff3b86a24c6b08b8abda906070e72c91  gcc/testsuite/gdc.test/fail_compilation/diag8825.d
  2f7ecdc871c982df25cc4452eb37393d  gcc/testsuite/gdc.test/fail_compilation/diag8892.d
! db41553f8280f3382fe6298ab3972393  gcc/testsuite/gdc.test/fail_compilation/diag8894.d
  883b3aa087c353de52e9d7ef2f1e11d3  gcc/testsuite/gdc.test/fail_compilation/diag8928.d
  16bc7fb774cb7a9fb57bdfdc8899dc53  gcc/testsuite/gdc.test/fail_compilation/diag9004.d
  1ca0cbaa5486bbb1fca649821e5fd454  gcc/testsuite/gdc.test/fail_compilation/diag9148.d
*************** e9a684b92a19f3209b93cfa703068084  gcc/te
*** 75876,75882 ****
  87826ac2f6bbb76e4f3765ad1364c54d  gcc/testsuite/gdc.test/fail_compilation/diag9250.d
  32fc269de8dcfbab6b85ba14bdb63ee7  gcc/testsuite/gdc.test/fail_compilation/diag9312.d
  b28a3eecd7c36ded5aca587073cebd78  gcc/testsuite/gdc.test/fail_compilation/diag9357.d
! 1410c537ff08dad7fa865a7b77b6a3b2  gcc/testsuite/gdc.test/fail_compilation/diag9358.d
  b7b293d85267d1066cc299d96cd9f665  gcc/testsuite/gdc.test/fail_compilation/diag9398.d
  6eb53adfe26eb5bbba0a5c917ad178cb  gcc/testsuite/gdc.test/fail_compilation/diag9420.d
  31497bedce46e25b7ba95e54bc77fbbf  gcc/testsuite/gdc.test/fail_compilation/diag9451.d
--- 81011,81017 ----
  87826ac2f6bbb76e4f3765ad1364c54d  gcc/testsuite/gdc.test/fail_compilation/diag9250.d
  32fc269de8dcfbab6b85ba14bdb63ee7  gcc/testsuite/gdc.test/fail_compilation/diag9312.d
  b28a3eecd7c36ded5aca587073cebd78  gcc/testsuite/gdc.test/fail_compilation/diag9357.d
! e79225b5e67e900ce187e333f87cf6dd  gcc/testsuite/gdc.test/fail_compilation/diag9358.d
  b7b293d85267d1066cc299d96cd9f665  gcc/testsuite/gdc.test/fail_compilation/diag9398.d
  6eb53adfe26eb5bbba0a5c917ad178cb  gcc/testsuite/gdc.test/fail_compilation/diag9420.d
  31497bedce46e25b7ba95e54bc77fbbf  gcc/testsuite/gdc.test/fail_compilation/diag9451.d
*************** c71eae763fc17f4bb9c9edc5c73097ab  gcc/te
*** 75884,75890 ****
  54b1b2af358aa461b393edfb0bf136e8  gcc/testsuite/gdc.test/fail_compilation/diag9574.d
  76fe93a42e4458fcc121c868576a07e0  gcc/testsuite/gdc.test/fail_compilation/diag9620.d
  40a26cdfdc76ded75627d866bd791a6e  gcc/testsuite/gdc.test/fail_compilation/diag9635.d
! 78c4ddd7886c173598bd3ab4034452d6  gcc/testsuite/gdc.test/fail_compilation/diag9679.d
  e6846c6e7f24e0dbf859ddb4ee3797da  gcc/testsuite/gdc.test/fail_compilation/diag9765.d
  bb487b4659793bcee21e209fc10b6dd2  gcc/testsuite/gdc.test/fail_compilation/diag9831.d
  0a1ea1d064f1b004feea83c95bdd98d3  gcc/testsuite/gdc.test/fail_compilation/diag9861.d
--- 81019,81025 ----
  54b1b2af358aa461b393edfb0bf136e8  gcc/testsuite/gdc.test/fail_compilation/diag9574.d
  76fe93a42e4458fcc121c868576a07e0  gcc/testsuite/gdc.test/fail_compilation/diag9620.d
  40a26cdfdc76ded75627d866bd791a6e  gcc/testsuite/gdc.test/fail_compilation/diag9635.d
! 5876acaf72ec719af891cafb7f2f6c01  gcc/testsuite/gdc.test/fail_compilation/diag9679.d
  e6846c6e7f24e0dbf859ddb4ee3797da  gcc/testsuite/gdc.test/fail_compilation/diag9765.d
  bb487b4659793bcee21e209fc10b6dd2  gcc/testsuite/gdc.test/fail_compilation/diag9831.d
  0a1ea1d064f1b004feea83c95bdd98d3  gcc/testsuite/gdc.test/fail_compilation/diag9861.d
*************** bb487b4659793bcee21e209fc10b6dd2  gcc/te
*** 75894,75922 ****
  019968fb4ac455c35c49d8374b556ec3  gcc/testsuite/gdc.test/fail_compilation/diag_cstyle.d
  ac1ecc983943befbdb99b4963b9bbd6a  gcc/testsuite/gdc.test/fail_compilation/diag_debug_conditional.d
  a80d9b7356faf786d0cfbbc683dd384b  gcc/testsuite/gdc.test/fail_compilation/diag_err1.d
! 268a1b00385f331dbe6458cb2490e162  gcc/testsuite/gdc.test/fail_compilation/diag_funclit.d
  c1261c2895e88b735569f4206cc6ac70  gcc/testsuite/gdc.test/fail_compilation/diag_template_alias.d
  1248ebe003fb4c529ab1a5c34e8dc488  gcc/testsuite/gdc.test/fail_compilation/diag_template_this.d
! a441c7f2d8327af056a4f992cf61e94f  gcc/testsuite/gdc.test/fail_compilation/diagin.d
  bca78167ff7a3c97e08c33b9bba2a2eb  gcc/testsuite/gdc.test/fail_compilation/diaginref.d
! 05d55e507041b55cec55e82032a40f5f  gcc/testsuite/gdc.test/fail_compilation/dip22a.d
  9f256dbd3ec217ad95c9e492a2137864  gcc/testsuite/gdc.test/fail_compilation/dip22b.d
  0e99be6b01ea3e8a145b5f587ed83d23  gcc/testsuite/gdc.test/fail_compilation/dip22e.d
! a5ee70a4e57f3c35c71cedbec75202a5  gcc/testsuite/gdc.test/fail_compilation/dip25.d
  342f6526dab7f6966b6f04965f84d2cc  gcc/testsuite/gdc.test/fail_compilation/disable.d
  3c2f76ba05acd80893f8b5c379e55865  gcc/testsuite/gdc.test/fail_compilation/disable_new.d
! ac5e3a7bfc065333ba94fab863cdfff3  gcc/testsuite/gdc.test/fail_compilation/dtor_attributes.d
! c6868dc189d18c29ad586141986dc0aa  gcc/testsuite/gdc.test/fail_compilation/dtorfields_attributes.d
! ffebbcb6ce1cde0cc6db7bd0a7f6a756  gcc/testsuite/gdc.test/fail_compilation/e15876_1.d
  2500d02c26d2ef0e7fc6ee2769ed9103  gcc/testsuite/gdc.test/fail_compilation/e15876_2.d
! 1489ab41f744cebfd24dcc939238892d  gcc/testsuite/gdc.test/fail_compilation/e15876_3.d
! 8d2bae8d20217ac0f91cfca4771a436d  gcc/testsuite/gdc.test/fail_compilation/e15876_4.d
! 9e27a50d00297c82abe05490ae52fa94  gcc/testsuite/gdc.test/fail_compilation/e15876_5.d
  59a847b524ea2e40b5db154080acbb1c  gcc/testsuite/gdc.test/fail_compilation/e15876_6.d
! 103c14cc4470816407d25ef479870c5f  gcc/testsuite/gdc.test/fail_compilation/e7804_1.d
  ebd624415ce51467f6282d2f66d82e6b  gcc/testsuite/gdc.test/fail_compilation/e7804_2.d
! aa4c4b7e2f3ac8b13ed863135d976500  gcc/testsuite/gdc.test/fail_compilation/enum9921.d
! 1aa4aa08b66f74d0f0cdb5f71878c2f3  gcc/testsuite/gdc.test/fail_compilation/enum_init.d
  f76cf9db0833afa5687645d4c74a9897  gcc/testsuite/gdc.test/fail_compilation/extra-files/bar11453.d
  99acc5a7305edac00837d2641c2f1bb9  gcc/testsuite/gdc.test/fail_compilation/extra-files/foo11453.d
  84bebd871a01f556191f22e1fa9eace9  gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/object.d
--- 81029,81060 ----
  019968fb4ac455c35c49d8374b556ec3  gcc/testsuite/gdc.test/fail_compilation/diag_cstyle.d
  ac1ecc983943befbdb99b4963b9bbd6a  gcc/testsuite/gdc.test/fail_compilation/diag_debug_conditional.d
  a80d9b7356faf786d0cfbbc683dd384b  gcc/testsuite/gdc.test/fail_compilation/diag_err1.d
! e9d41a39faeccdf482bf48c2e0d9bb71  gcc/testsuite/gdc.test/fail_compilation/diag_funclit.d
! 6dcb531b3e3bdd493826c6b9e087ce54  gcc/testsuite/gdc.test/fail_compilation/diag_in_array.d
  c1261c2895e88b735569f4206cc6ac70  gcc/testsuite/gdc.test/fail_compilation/diag_template_alias.d
  1248ebe003fb4c529ab1a5c34e8dc488  gcc/testsuite/gdc.test/fail_compilation/diag_template_this.d
! b4473c3742d815261ff5b4cd61e8f360  gcc/testsuite/gdc.test/fail_compilation/diagin.d
  bca78167ff7a3c97e08c33b9bba2a2eb  gcc/testsuite/gdc.test/fail_compilation/diaginref.d
! aa5f996b3c96d756dc60f208811409cb  gcc/testsuite/gdc.test/fail_compilation/dip1000_deprecation.d
! 89ffd8e3577a113d589fe05b6c1a53cb  gcc/testsuite/gdc.test/fail_compilation/dip22a.d
  9f256dbd3ec217ad95c9e492a2137864  gcc/testsuite/gdc.test/fail_compilation/dip22b.d
  0e99be6b01ea3e8a145b5f587ed83d23  gcc/testsuite/gdc.test/fail_compilation/dip22e.d
! 1b912760cdec43dea02cb1e1a09bd642  gcc/testsuite/gdc.test/fail_compilation/dip25.d
! 9feee5abd1332de813bbab90f35c3bf2  gcc/testsuite/gdc.test/fail_compilation/dip25flag.d
  342f6526dab7f6966b6f04965f84d2cc  gcc/testsuite/gdc.test/fail_compilation/disable.d
  3c2f76ba05acd80893f8b5c379e55865  gcc/testsuite/gdc.test/fail_compilation/disable_new.d
! 9ffe32970c06ad3547a304130c4423d5  gcc/testsuite/gdc.test/fail_compilation/dtor_attributes.d
! 097c0612462a3ae00990bc68a9ccabb3  gcc/testsuite/gdc.test/fail_compilation/dtorfields_attributes.d
! dab46e2bce697fc40ad6ad9d3fa35801  gcc/testsuite/gdc.test/fail_compilation/e15876_1.d
  2500d02c26d2ef0e7fc6ee2769ed9103  gcc/testsuite/gdc.test/fail_compilation/e15876_2.d
! 965f16e6a62131bcbf3d0a30704f7b15  gcc/testsuite/gdc.test/fail_compilation/e15876_3.d
! c6a3e631bdb258e10a20bc0db6055b61  gcc/testsuite/gdc.test/fail_compilation/e15876_4.d
! ab1cadaffa89b61eb7dff4af5221d0b2  gcc/testsuite/gdc.test/fail_compilation/e15876_5.d
  59a847b524ea2e40b5db154080acbb1c  gcc/testsuite/gdc.test/fail_compilation/e15876_6.d
! 9c85e4911f1d459b180bb94b53ede6aa  gcc/testsuite/gdc.test/fail_compilation/e7804_1.d
  ebd624415ce51467f6282d2f66d82e6b  gcc/testsuite/gdc.test/fail_compilation/e7804_2.d
! bec96d18023efd76c6a9a3f99ff127b5  gcc/testsuite/gdc.test/fail_compilation/enum9921.d
! 5746e670b1e0969f5a165a27c3b77724  gcc/testsuite/gdc.test/fail_compilation/enum_init.d
  f76cf9db0833afa5687645d4c74a9897  gcc/testsuite/gdc.test/fail_compilation/extra-files/bar11453.d
  99acc5a7305edac00837d2641c2f1bb9  gcc/testsuite/gdc.test/fail_compilation/extra-files/foo11453.d
  84bebd871a01f556191f22e1fa9eace9  gcc/testsuite/gdc.test/fail_compilation/extra-files/minimal/object.d
*************** f76cf9db0833afa5687645d4c74a9897  gcc/te
*** 75925,75931 ****
  34db3c1cc5f276345570566eb4e02af7  gcc/testsuite/gdc.test/fail_compilation/fail100.d
  88b97a03f929852a192f6fe27a2e618b  gcc/testsuite/gdc.test/fail_compilation/fail10082.d
  16047c5990c17931fbc6575cc3904378  gcc/testsuite/gdc.test/fail_compilation/fail101.d
! 21847bd8ebfb7d6ba10b80a0ec31569c  gcc/testsuite/gdc.test/fail_compilation/fail10102.d
  8996744362ad412ec4c92c2c9593cd25  gcc/testsuite/gdc.test/fail_compilation/fail10115.d
  a883dee9cdfef4dfaf5f5fb50b0e3916  gcc/testsuite/gdc.test/fail_compilation/fail10207.d
  dc0b2c8b06a051c610f3f48d202814c8  gcc/testsuite/gdc.test/fail_compilation/fail10254.d
--- 81063,81069 ----
  34db3c1cc5f276345570566eb4e02af7  gcc/testsuite/gdc.test/fail_compilation/fail100.d
  88b97a03f929852a192f6fe27a2e618b  gcc/testsuite/gdc.test/fail_compilation/fail10082.d
  16047c5990c17931fbc6575cc3904378  gcc/testsuite/gdc.test/fail_compilation/fail101.d
! 4fde9d64edbfbe7ce6810a9d31ed28ec  gcc/testsuite/gdc.test/fail_compilation/fail10102.d
  8996744362ad412ec4c92c2c9593cd25  gcc/testsuite/gdc.test/fail_compilation/fail10115.d
  a883dee9cdfef4dfaf5f5fb50b0e3916  gcc/testsuite/gdc.test/fail_compilation/fail10207.d
  dc0b2c8b06a051c610f3f48d202814c8  gcc/testsuite/gdc.test/fail_compilation/fail10254.d
*************** b726e7e5862cef761fbffe4798462131  gcc/te
*** 75942,75952 ****
  71288e2e511948061477a0747fecb40e  gcc/testsuite/gdc.test/fail_compilation/fail10630.d
  cb53acf48a2b67325d7f8241e9c9ab8b  gcc/testsuite/gdc.test/fail_compilation/fail10666.d
  132cc39e1c28cccfc1029171f7c406d8  gcc/testsuite/gdc.test/fail_compilation/fail10806.d
! f40a224a929da6faa6b4a07a7d1ec8ec  gcc/testsuite/gdc.test/fail_compilation/fail109.d
! e633ca8200e6d5a0fe83b98b7e77c37e  gcc/testsuite/gdc.test/fail_compilation/fail10905.d
  84cb1acfd9c573c41c1b83dac83a9c8f  gcc/testsuite/gdc.test/fail_compilation/fail10947.d
  67f504c001f946a3a9205c3a5d585f49  gcc/testsuite/gdc.test/fail_compilation/fail10964.d
! ce241e9e28b4579d7647590c955f8876  gcc/testsuite/gdc.test/fail_compilation/fail10968.d
  fa66b0e920971c09a8f7f0ae71cc7e78  gcc/testsuite/gdc.test/fail_compilation/fail10980.d
  7461aa4bd527e973ee745038e7e175a7  gcc/testsuite/gdc.test/fail_compilation/fail11.d
  7249231e0229e12b12abb71155f5b603  gcc/testsuite/gdc.test/fail_compilation/fail110.d
--- 81080,81089 ----
  71288e2e511948061477a0747fecb40e  gcc/testsuite/gdc.test/fail_compilation/fail10630.d
  cb53acf48a2b67325d7f8241e9c9ab8b  gcc/testsuite/gdc.test/fail_compilation/fail10666.d
  132cc39e1c28cccfc1029171f7c406d8  gcc/testsuite/gdc.test/fail_compilation/fail10806.d
! 71407111459a99cf21bd6af959bb9282  gcc/testsuite/gdc.test/fail_compilation/fail109.d
  84cb1acfd9c573c41c1b83dac83a9c8f  gcc/testsuite/gdc.test/fail_compilation/fail10947.d
  67f504c001f946a3a9205c3a5d585f49  gcc/testsuite/gdc.test/fail_compilation/fail10964.d
! b53585084cacb66ecf8806f4af7bff5e  gcc/testsuite/gdc.test/fail_compilation/fail10968.d
  fa66b0e920971c09a8f7f0ae71cc7e78  gcc/testsuite/gdc.test/fail_compilation/fail10980.d
  7461aa4bd527e973ee745038e7e175a7  gcc/testsuite/gdc.test/fail_compilation/fail11.d
  7249231e0229e12b12abb71155f5b603  gcc/testsuite/gdc.test/fail_compilation/fail110.d
*************** fdaa763060909e97acdcb129ab83f2a7  gcc/te
*** 75983,75999 ****
  a691b7855ffa66fe0d4d016977d36507  gcc/testsuite/gdc.test/fail_compilation/fail11746.d
  e40c97caf3db9f4880aff09011b1daf4  gcc/testsuite/gdc.test/fail_compilation/fail11748.d
  c0c579cb086b8a2a634c0ab754c26a07  gcc/testsuite/gdc.test/fail_compilation/fail11751.d
! 3377ccf850a3814957b6b51f45bc6fbe  gcc/testsuite/gdc.test/fail_compilation/fail118.d
! be95cb2b665636b2200b371cb1df87d0  gcc/testsuite/gdc.test/fail_compilation/fail12.d
  8d49b3e03628cd7c6cd8a538148ad725  gcc/testsuite/gdc.test/fail_compilation/fail120.d
  7bf72c637818e7f1de6be900e0fe70e8  gcc/testsuite/gdc.test/fail_compilation/fail12047.d
! bc29d8052e02438aec3b5f987d52ec37  gcc/testsuite/gdc.test/fail_compilation/fail121.d
  7e087119e9127154573ca4d0a46ced6a  gcc/testsuite/gdc.test/fail_compilation/fail122.d
  2579250e407c32fa652443bf68e8fd70  gcc/testsuite/gdc.test/fail_compilation/fail12236.d
  8dfe0e2c61aa226bf5b0ea82ca94398c  gcc/testsuite/gdc.test/fail_compilation/fail12255.d
  c6a9045d059f3176aa12fb81d590f0d2  gcc/testsuite/gdc.test/fail_compilation/fail123.d
  f8f10e131c15bd3239affaf48aebff8c  gcc/testsuite/gdc.test/fail_compilation/fail12378.d
! 0083fafbf1085293b752ef8e6ac1e876  gcc/testsuite/gdc.test/fail_compilation/fail12390.d
  bfb7ab7957a4356a4b9665e88b61f34f  gcc/testsuite/gdc.test/fail_compilation/fail124.d
  93e33f45e68e44a918a98a2107552d3e  gcc/testsuite/gdc.test/fail_compilation/fail12436.d
  42eb030c62dea6bce5bfa6734f12a9df  gcc/testsuite/gdc.test/fail_compilation/fail125.d
--- 81120,81136 ----
  a691b7855ffa66fe0d4d016977d36507  gcc/testsuite/gdc.test/fail_compilation/fail11746.d
  e40c97caf3db9f4880aff09011b1daf4  gcc/testsuite/gdc.test/fail_compilation/fail11748.d
  c0c579cb086b8a2a634c0ab754c26a07  gcc/testsuite/gdc.test/fail_compilation/fail11751.d
! 25e439b474b4e4e754f9f61209593fb8  gcc/testsuite/gdc.test/fail_compilation/fail118.d
! c7101fcb0aa4d9b28f3f5c0edfb7a900  gcc/testsuite/gdc.test/fail_compilation/fail12.d
  8d49b3e03628cd7c6cd8a538148ad725  gcc/testsuite/gdc.test/fail_compilation/fail120.d
  7bf72c637818e7f1de6be900e0fe70e8  gcc/testsuite/gdc.test/fail_compilation/fail12047.d
! 1af19ec4022d99eea157fa25b8d69cae  gcc/testsuite/gdc.test/fail_compilation/fail121.d
  7e087119e9127154573ca4d0a46ced6a  gcc/testsuite/gdc.test/fail_compilation/fail122.d
  2579250e407c32fa652443bf68e8fd70  gcc/testsuite/gdc.test/fail_compilation/fail12236.d
  8dfe0e2c61aa226bf5b0ea82ca94398c  gcc/testsuite/gdc.test/fail_compilation/fail12255.d
  c6a9045d059f3176aa12fb81d590f0d2  gcc/testsuite/gdc.test/fail_compilation/fail123.d
  f8f10e131c15bd3239affaf48aebff8c  gcc/testsuite/gdc.test/fail_compilation/fail12378.d
! 68e29081956558b41e843ec07ce567ca  gcc/testsuite/gdc.test/fail_compilation/fail12390.d
  bfb7ab7957a4356a4b9665e88b61f34f  gcc/testsuite/gdc.test/fail_compilation/fail124.d
  93e33f45e68e44a918a98a2107552d3e  gcc/testsuite/gdc.test/fail_compilation/fail12436.d
  42eb030c62dea6bce5bfa6734f12a9df  gcc/testsuite/gdc.test/fail_compilation/fail125.d
*************** a1674e1394b35a5df1b3c4aac66f998f  gcc/te
*** 76014,76019 ****
--- 81151,81157 ----
  2180f72e2e570d452ff43f600b437482  gcc/testsuite/gdc.test/fail_compilation/fail131.d
  8642bc95c48767755ad4274b2b4cdb1a  gcc/testsuite/gdc.test/fail_compilation/fail13116.d
  94a595c0a8513c40bbd51052c275c3dc  gcc/testsuite/gdc.test/fail_compilation/fail13120.d
+ 7ed4197cc2f78cb780c882a6e8b16131  gcc/testsuite/gdc.test/fail_compilation/fail13123.d
  b03b5e0032abc66adcb709edbb941cc4  gcc/testsuite/gdc.test/fail_compilation/fail13187.d
  b11884cf1566b08a9902a268a0b5cbb5  gcc/testsuite/gdc.test/fail_compilation/fail132.d
  8000033f214284cf259489cb70780afd  gcc/testsuite/gdc.test/fail_compilation/fail13203.d
*************** f7c162250484aa2c830b621f48a4cbf7  gcc/te
*** 76033,76039 ****
  ffcc92538fea18e1edc848b035d2da56  gcc/testsuite/gdc.test/fail_compilation/fail13756.d
  7f637277f7409ea6e5315946be618ca9  gcc/testsuite/gdc.test/fail_compilation/fail13775.d
  a580d1b37336e7005f2011c16123a2f8  gcc/testsuite/gdc.test/fail_compilation/fail139.d
! 06fab03b1da066d02640b3bacf39bc05  gcc/testsuite/gdc.test/fail_compilation/fail13902.d
  10554ee69c68fa02536edb00437cd248  gcc/testsuite/gdc.test/fail_compilation/fail14.d
  88b0dedb5114a417e9a013dc320646cb  gcc/testsuite/gdc.test/fail_compilation/fail14089.d
  c452b6c39ca422156c80d164ccd00d3e  gcc/testsuite/gdc.test/fail_compilation/fail142.d
--- 81171,81177 ----
  ffcc92538fea18e1edc848b035d2da56  gcc/testsuite/gdc.test/fail_compilation/fail13756.d
  7f637277f7409ea6e5315946be618ca9  gcc/testsuite/gdc.test/fail_compilation/fail13775.d
  a580d1b37336e7005f2011c16123a2f8  gcc/testsuite/gdc.test/fail_compilation/fail139.d
! 06be4f4e09fb76ee2bae43a5a4667446  gcc/testsuite/gdc.test/fail_compilation/fail13902.d
  10554ee69c68fa02536edb00437cd248  gcc/testsuite/gdc.test/fail_compilation/fail14.d
  88b0dedb5114a417e9a013dc320646cb  gcc/testsuite/gdc.test/fail_compilation/fail14089.d
  c452b6c39ca422156c80d164ccd00d3e  gcc/testsuite/gdc.test/fail_compilation/fail142.d
*************** c753f5a08f745f6326cda953e7a42e47  gcc/te
*** 76042,76053 ****
  b9b54d3d4e18a399b604955806258516  gcc/testsuite/gdc.test/fail_compilation/fail143.d
  8dc5066aab0e47bc083a69e67f10066e  gcc/testsuite/gdc.test/fail_compilation/fail14304.d
  fe661808ca5ccd87b92c6817b80182d3  gcc/testsuite/gdc.test/fail_compilation/fail144.d
! bbc5223383ebab515d15768197865a53  gcc/testsuite/gdc.test/fail_compilation/fail14406.d
  60ac8535b218629f6e302cf38a0e4d64  gcc/testsuite/gdc.test/fail_compilation/fail14416.d
  6b7e660a67bdd0b25bbc892cd220f071  gcc/testsuite/gdc.test/fail_compilation/fail14486.d
  d6f267f324a0bb2be0329e69f05316d2  gcc/testsuite/gdc.test/fail_compilation/fail145.d
  21b27f5810d8bbd5e53d1a85f251389f  gcc/testsuite/gdc.test/fail_compilation/fail14554.d
! 3bf31066a2c94e8b624051baddd81ee4  gcc/testsuite/gdc.test/fail_compilation/fail14669.d
  2eb0f0a3a630d5305cedcfc6ba947caa  gcc/testsuite/gdc.test/fail_compilation/fail14965.d
  351f0dc3289118d6f73f00d620e4cf37  gcc/testsuite/gdc.test/fail_compilation/fail14997.d
  a70e7b47122c2a876b23154fde937dc2  gcc/testsuite/gdc.test/fail_compilation/fail15.d
--- 81180,81191 ----
  b9b54d3d4e18a399b604955806258516  gcc/testsuite/gdc.test/fail_compilation/fail143.d
  8dc5066aab0e47bc083a69e67f10066e  gcc/testsuite/gdc.test/fail_compilation/fail14304.d
  fe661808ca5ccd87b92c6817b80182d3  gcc/testsuite/gdc.test/fail_compilation/fail144.d
! dc36dc401919af534824ea7139f384f0  gcc/testsuite/gdc.test/fail_compilation/fail14406.d
  60ac8535b218629f6e302cf38a0e4d64  gcc/testsuite/gdc.test/fail_compilation/fail14416.d
  6b7e660a67bdd0b25bbc892cd220f071  gcc/testsuite/gdc.test/fail_compilation/fail14486.d
  d6f267f324a0bb2be0329e69f05316d2  gcc/testsuite/gdc.test/fail_compilation/fail145.d
  21b27f5810d8bbd5e53d1a85f251389f  gcc/testsuite/gdc.test/fail_compilation/fail14554.d
! 985183b55e2f14fc2861ffc407c715b7  gcc/testsuite/gdc.test/fail_compilation/fail14669.d
  2eb0f0a3a630d5305cedcfc6ba947caa  gcc/testsuite/gdc.test/fail_compilation/fail14965.d
  351f0dc3289118d6f73f00d620e4cf37  gcc/testsuite/gdc.test/fail_compilation/fail14997.d
  a70e7b47122c2a876b23154fde937dc2  gcc/testsuite/gdc.test/fail_compilation/fail15.d
*************** e3e5a1338c4fb6fa1b922916d383f3ea  gcc/te
*** 76058,76086 ****
  855ab11f0bd62621b99dfea1cb130c26  gcc/testsuite/gdc.test/fail_compilation/fail153.d
  8ffd2e63fb125b33d3573d667ed80e1f  gcc/testsuite/gdc.test/fail_compilation/fail15361.d
  9d037c59d1e7a468338f3f3f381d91c4  gcc/testsuite/gdc.test/fail_compilation/fail154.d
! ee6094104374e6990e160d3400d91e34  gcc/testsuite/gdc.test/fail_compilation/fail155.d
  b8e5e7c3a81b656da38456cb46d2e9b4  gcc/testsuite/gdc.test/fail_compilation/fail15535.d
  8d6777061a04969663e28b186960951b  gcc/testsuite/gdc.test/fail_compilation/fail15550.d
! 7374029b69deef73dca4e77b90aaf90e  gcc/testsuite/gdc.test/fail_compilation/fail156.d
! 8d36d05a7afdfa99502f0cf457df3552  gcc/testsuite/gdc.test/fail_compilation/fail15616a.d
! d4aea9d7b2363fa241eb76f08f00cba1  gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
  3be4ce307a92d11b64cfa9d4f03f4445  gcc/testsuite/gdc.test/fail_compilation/fail15626.d
  d068b087cdb3131ab554be42180adbce  gcc/testsuite/gdc.test/fail_compilation/fail15667.d
  c684ab29bcabeefed5b53fffe9d3f70e  gcc/testsuite/gdc.test/fail_compilation/fail15691.d
  8be5f3fd1abbb065f32f3eca5b858dee  gcc/testsuite/gdc.test/fail_compilation/fail15755.d
! 81ac9c4f415090bed18f5f7943fdf18b  gcc/testsuite/gdc.test/fail_compilation/fail158.d
  7dffcb12548594529e08c394a72f593e  gcc/testsuite/gdc.test/fail_compilation/fail15896.d
  0e7efcd6e123a7faef05ce3ae6f59ce9  gcc/testsuite/gdc.test/fail_compilation/fail159.d
  d612a27ea5535404d84d598bae901e32  gcc/testsuite/gdc.test/fail_compilation/fail16.d
  b1a3c7961f99b91306dbd64d284c746a  gcc/testsuite/gdc.test/fail_compilation/fail160.d
! 1fa52b99dc65c45b1e1a5bbbfe116dee  gcc/testsuite/gdc.test/fail_compilation/fail16001.d
  1c72cecc096b7d2d4e31dd6f47fb8895  gcc/testsuite/gdc.test/fail_compilation/fail161.d
  cf3a56d2bcb984e62fa150555c016513  gcc/testsuite/gdc.test/fail_compilation/fail162.d
  99c094fe5a883a7d9a9adcbd82f194c1  gcc/testsuite/gdc.test/fail_compilation/fail16206a.d
  7e34a6b4dd39ae5c562fa3e43ae5b267  gcc/testsuite/gdc.test/fail_compilation/fail16206b.d
  65570fad8408c994cb62f7bb4e38bc7f  gcc/testsuite/gdc.test/fail_compilation/fail163.d
  816639db88c51c1b5a596d40ade2c3ce  gcc/testsuite/gdc.test/fail_compilation/fail16600.d
  8b4b096412e0264029af463d8d17a67b  gcc/testsuite/gdc.test/fail_compilation/fail16689.d
  623bcd19ed4331349d750dd7e0ccec0f  gcc/testsuite/gdc.test/fail_compilation/fail169.d
  aa393179c2ca7bc3a60b6d8c4f96cbc7  gcc/testsuite/gdc.test/fail_compilation/fail16997.d
  34a18b39e76e5dc61eed79b9f5f81866  gcc/testsuite/gdc.test/fail_compilation/fail17.d
--- 81196,81229 ----
  855ab11f0bd62621b99dfea1cb130c26  gcc/testsuite/gdc.test/fail_compilation/fail153.d
  8ffd2e63fb125b33d3573d667ed80e1f  gcc/testsuite/gdc.test/fail_compilation/fail15361.d
  9d037c59d1e7a468338f3f3f381d91c4  gcc/testsuite/gdc.test/fail_compilation/fail154.d
! a73b77746c950296c0b93d498dcd63c5  gcc/testsuite/gdc.test/fail_compilation/fail15414.d
! 05f7a47faed85447c3c860dd46f9ce69  gcc/testsuite/gdc.test/fail_compilation/fail155.d
  b8e5e7c3a81b656da38456cb46d2e9b4  gcc/testsuite/gdc.test/fail_compilation/fail15535.d
  8d6777061a04969663e28b186960951b  gcc/testsuite/gdc.test/fail_compilation/fail15550.d
! 6bb28b4e2ee304c5c47507988ed9e0ee  gcc/testsuite/gdc.test/fail_compilation/fail156.d
! c239fcb718b674ffcd8dc38c08d3fbbe  gcc/testsuite/gdc.test/fail_compilation/fail15616a.d
! 98490d66059e3ce1ce70608f18f04aec  gcc/testsuite/gdc.test/fail_compilation/fail15616b.d
! 7d7ffd0ff905b470836f6184abd71ad4  gcc/testsuite/gdc.test/fail_compilation/fail15616c.d
! eb25ca31055afa86912f9701e7994607  gcc/testsuite/gdc.test/fail_compilation/fail15616d.d
  3be4ce307a92d11b64cfa9d4f03f4445  gcc/testsuite/gdc.test/fail_compilation/fail15626.d
  d068b087cdb3131ab554be42180adbce  gcc/testsuite/gdc.test/fail_compilation/fail15667.d
  c684ab29bcabeefed5b53fffe9d3f70e  gcc/testsuite/gdc.test/fail_compilation/fail15691.d
  8be5f3fd1abbb065f32f3eca5b858dee  gcc/testsuite/gdc.test/fail_compilation/fail15755.d
! 2b6be87bab9c944e4449b89cccc18e26  gcc/testsuite/gdc.test/fail_compilation/fail158.d
  7dffcb12548594529e08c394a72f593e  gcc/testsuite/gdc.test/fail_compilation/fail15896.d
  0e7efcd6e123a7faef05ce3ae6f59ce9  gcc/testsuite/gdc.test/fail_compilation/fail159.d
  d612a27ea5535404d84d598bae901e32  gcc/testsuite/gdc.test/fail_compilation/fail16.d
  b1a3c7961f99b91306dbd64d284c746a  gcc/testsuite/gdc.test/fail_compilation/fail160.d
! 45aa62a7c4b2fe3afda147252be922f8  gcc/testsuite/gdc.test/fail_compilation/fail16001.d
  1c72cecc096b7d2d4e31dd6f47fb8895  gcc/testsuite/gdc.test/fail_compilation/fail161.d
  cf3a56d2bcb984e62fa150555c016513  gcc/testsuite/gdc.test/fail_compilation/fail162.d
  99c094fe5a883a7d9a9adcbd82f194c1  gcc/testsuite/gdc.test/fail_compilation/fail16206a.d
  7e34a6b4dd39ae5c562fa3e43ae5b267  gcc/testsuite/gdc.test/fail_compilation/fail16206b.d
  65570fad8408c994cb62f7bb4e38bc7f  gcc/testsuite/gdc.test/fail_compilation/fail163.d
+ e45c2789377eab835bc467180048df0f  gcc/testsuite/gdc.test/fail_compilation/fail16575.d
  816639db88c51c1b5a596d40ade2c3ce  gcc/testsuite/gdc.test/fail_compilation/fail16600.d
  8b4b096412e0264029af463d8d17a67b  gcc/testsuite/gdc.test/fail_compilation/fail16689.d
+ 44eba52d5df5e4a393aed81e20319a7e  gcc/testsuite/gdc.test/fail_compilation/fail16772.d
  623bcd19ed4331349d750dd7e0ccec0f  gcc/testsuite/gdc.test/fail_compilation/fail169.d
  aa393179c2ca7bc3a60b6d8c4f96cbc7  gcc/testsuite/gdc.test/fail_compilation/fail16997.d
  34a18b39e76e5dc61eed79b9f5f81866  gcc/testsuite/gdc.test/fail_compilation/fail17.d
*************** ef2759042bec4471458a397b3895857f  gcc/te
*** 76100,76106 ****
  5293b18b7813b4fc05083160ebf03448  gcc/testsuite/gdc.test/fail_compilation/fail17612.d
  e96e978609d37c7c1a44f934612d39a1  gcc/testsuite/gdc.test/fail_compilation/fail17625.d
  2cabd5f43fb4c3f7eb2da73fc4b1164d  gcc/testsuite/gdc.test/fail_compilation/fail17630.d
! e0a10a3344243433bc0b8c0d496f8f45  gcc/testsuite/gdc.test/fail_compilation/fail17646.d
  ab8c22cf2be47d14e82979e49ec3083e  gcc/testsuite/gdc.test/fail_compilation/fail17689.d
  3663f0a0ac789099ac33803ae479ca86  gcc/testsuite/gdc.test/fail_compilation/fail177.d
  35cf531fa58e2680d573c8081c2cb759  gcc/testsuite/gdc.test/fail_compilation/fail17722a.d
--- 81243,81249 ----
  5293b18b7813b4fc05083160ebf03448  gcc/testsuite/gdc.test/fail_compilation/fail17612.d
  e96e978609d37c7c1a44f934612d39a1  gcc/testsuite/gdc.test/fail_compilation/fail17625.d
  2cabd5f43fb4c3f7eb2da73fc4b1164d  gcc/testsuite/gdc.test/fail_compilation/fail17630.d
! ac6a292ac8e949a5653826732c5257b8  gcc/testsuite/gdc.test/fail_compilation/fail17646.d
  ab8c22cf2be47d14e82979e49ec3083e  gcc/testsuite/gdc.test/fail_compilation/fail17689.d
  3663f0a0ac789099ac33803ae479ca86  gcc/testsuite/gdc.test/fail_compilation/fail177.d
  35cf531fa58e2680d573c8081c2cb759  gcc/testsuite/gdc.test/fail_compilation/fail17722a.d
*************** ab8c22cf2be47d14e82979e49ec3083e  gcc/te
*** 76108,76115 ****
  3a5368bfa9e925466d90dfbe40b3e1ef  gcc/testsuite/gdc.test/fail_compilation/fail17842.d
  6f7188c359b760528830357bc2727f64  gcc/testsuite/gdc.test/fail_compilation/fail179.d
  c72f18ab36254636b191d78e0549b0a3  gcc/testsuite/gdc.test/fail_compilation/fail17906.d
! 7787960467cb5fc6d3c00c32cb821990  gcc/testsuite/gdc.test/fail_compilation/fail17927.d
! 605a594630744314bb62389f24423e06  gcc/testsuite/gdc.test/fail_compilation/fail17955.d
  b99b1841325cc0c06e5d27ca0e8c99a4  gcc/testsuite/gdc.test/fail_compilation/fail17969.d
  b3fde2514586c4a3e2046b5c0a6ed176  gcc/testsuite/gdc.test/fail_compilation/fail17976.d
  f8d46bb7603384631c0a6f26126398b0  gcc/testsuite/gdc.test/fail_compilation/fail18.d
--- 81251,81258 ----
  3a5368bfa9e925466d90dfbe40b3e1ef  gcc/testsuite/gdc.test/fail_compilation/fail17842.d
  6f7188c359b760528830357bc2727f64  gcc/testsuite/gdc.test/fail_compilation/fail179.d
  c72f18ab36254636b191d78e0549b0a3  gcc/testsuite/gdc.test/fail_compilation/fail17906.d
! 0494fe970355cc4c502b74174e2e9d9a  gcc/testsuite/gdc.test/fail_compilation/fail17927.d
! 907610b21e5fae4ed9491ae41b20a788  gcc/testsuite/gdc.test/fail_compilation/fail17955.d
  b99b1841325cc0c06e5d27ca0e8c99a4  gcc/testsuite/gdc.test/fail_compilation/fail17969.d
  b3fde2514586c4a3e2046b5c0a6ed176  gcc/testsuite/gdc.test/fail_compilation/fail17976.d
  f8d46bb7603384631c0a6f26126398b0  gcc/testsuite/gdc.test/fail_compilation/fail18.d
*************** f1ffdb661067e628c5a18fa4aa3d425f  gcc/te
*** 76130,76149 ****
  3842518a33f76de89f147a54b5759486  gcc/testsuite/gdc.test/fail_compilation/fail187.d
  76fd6b7643f779174c686a27d0de7ed2  gcc/testsuite/gdc.test/fail_compilation/fail18719.d
  05c618d08631552b989a390b13365945  gcc/testsuite/gdc.test/fail_compilation/fail188.d
! 3844ed57f59733132087afefe484c12e  gcc/testsuite/gdc.test/fail_compilation/fail18892.d
  39344b97e72e7a51418d2304bfe71bac  gcc/testsuite/gdc.test/fail_compilation/fail189.d
  1855d7a7607707b089d145fc3dbf9c4a  gcc/testsuite/gdc.test/fail_compilation/fail18938.d
! cc683eecfa464601e581c82ee9da8cff  gcc/testsuite/gdc.test/fail_compilation/fail18970.d
! 94d0161ab08e808b84a06a1d9c7145db  gcc/testsuite/gdc.test/fail_compilation/fail18979.d
  f205ca554aa3912ed64d43f95458cc81  gcc/testsuite/gdc.test/fail_compilation/fail18985.d
  c3e9bf6ab82266989bda68580c167325  gcc/testsuite/gdc.test/fail_compilation/fail18994.d
  b29394abf29591d84b9d8789bb4565cb  gcc/testsuite/gdc.test/fail_compilation/fail190.d
! a020ac533fbb222dd619467826263b55  gcc/testsuite/gdc.test/fail_compilation/fail1900.d
  121d905fcabf558bac6f01c9c857d68d  gcc/testsuite/gdc.test/fail_compilation/fail19038.d
! fd6073f3cce2fefb9651dee36ae69966  gcc/testsuite/gdc.test/fail_compilation/fail19076.d
  8265e9a9f4a973f41fa5ceaf867da9f3  gcc/testsuite/gdc.test/fail_compilation/fail19098.d
  38e2cba6bcb50a692990ffe7b96fb049  gcc/testsuite/gdc.test/fail_compilation/fail19099.d
! c73f0abfc8a03be8ed77231499165d23  gcc/testsuite/gdc.test/fail_compilation/fail19103.d
  90c7cdd15ee714303e1566bc4af7044c  gcc/testsuite/gdc.test/fail_compilation/fail19181.d
  2658559b7e065a4d9a88423a76b0a1f8  gcc/testsuite/gdc.test/fail_compilation/fail19182.d
  8c7b72f8d54d7f8f256985e65bb7a17b  gcc/testsuite/gdc.test/fail_compilation/fail192.d
--- 81273,81292 ----
  3842518a33f76de89f147a54b5759486  gcc/testsuite/gdc.test/fail_compilation/fail187.d
  76fd6b7643f779174c686a27d0de7ed2  gcc/testsuite/gdc.test/fail_compilation/fail18719.d
  05c618d08631552b989a390b13365945  gcc/testsuite/gdc.test/fail_compilation/fail188.d
! 97f1d73a379e0ef97109a8dfecce0fd9  gcc/testsuite/gdc.test/fail_compilation/fail18892.d
  39344b97e72e7a51418d2304bfe71bac  gcc/testsuite/gdc.test/fail_compilation/fail189.d
  1855d7a7607707b089d145fc3dbf9c4a  gcc/testsuite/gdc.test/fail_compilation/fail18938.d
! 409a2e8b85e1b3db20f6ae92dc839a08  gcc/testsuite/gdc.test/fail_compilation/fail18970.d
! 7b4b24ab82d93b0046c38feca996485e  gcc/testsuite/gdc.test/fail_compilation/fail18979.d
  f205ca554aa3912ed64d43f95458cc81  gcc/testsuite/gdc.test/fail_compilation/fail18985.d
  c3e9bf6ab82266989bda68580c167325  gcc/testsuite/gdc.test/fail_compilation/fail18994.d
  b29394abf29591d84b9d8789bb4565cb  gcc/testsuite/gdc.test/fail_compilation/fail190.d
! cc191c6524b8af6850f19da385da4faf  gcc/testsuite/gdc.test/fail_compilation/fail1900.d
  121d905fcabf558bac6f01c9c857d68d  gcc/testsuite/gdc.test/fail_compilation/fail19038.d
! 2ee890f54a8cb317357045b95c420a17  gcc/testsuite/gdc.test/fail_compilation/fail19076.d
  8265e9a9f4a973f41fa5ceaf867da9f3  gcc/testsuite/gdc.test/fail_compilation/fail19098.d
  38e2cba6bcb50a692990ffe7b96fb049  gcc/testsuite/gdc.test/fail_compilation/fail19099.d
! 02f8c86e3bb10ab0ada5fc46552df7e7  gcc/testsuite/gdc.test/fail_compilation/fail19103.d
  90c7cdd15ee714303e1566bc4af7044c  gcc/testsuite/gdc.test/fail_compilation/fail19181.d
  2658559b7e065a4d9a88423a76b0a1f8  gcc/testsuite/gdc.test/fail_compilation/fail19182.d
  8c7b72f8d54d7f8f256985e65bb7a17b  gcc/testsuite/gdc.test/fail_compilation/fail192.d
*************** e1731a230aaee95c968d09e488c4f32b  gcc/te
*** 76158,76178 ****
  255cbdd802a2bc528e235738c17ed595  gcc/testsuite/gdc.test/fail_compilation/fail19447.d
  7594dbc07383fa13599d213acea6e03a  gcc/testsuite/gdc.test/fail_compilation/fail195.d
  676dfacf37090247608e1eabe58d4327  gcc/testsuite/gdc.test/fail_compilation/fail19520.d
! a50937a3dd1cde344eb3102e6b0c9d06  gcc/testsuite/gdc.test/fail_compilation/fail196.d
  a09e1208955504bd9a765b08ef650b11  gcc/testsuite/gdc.test/fail_compilation/fail19609.d
! ffae11bbcbdb75781c4d269d5a0b3dc2  gcc/testsuite/gdc.test/fail_compilation/fail19687.d
  4748cb1d7ac90ff780c0f16b4a407af1  gcc/testsuite/gdc.test/fail_compilation/fail19729.d
  5497eef106b03c1d1c5abca76532ef7f  gcc/testsuite/gdc.test/fail_compilation/fail19744.d
  ab33dd9a1412bc650d3341ca810280e1  gcc/testsuite/gdc.test/fail_compilation/fail19757_m32.d
  f48f0703c5e7d1124e8dafcfac05bf26  gcc/testsuite/gdc.test/fail_compilation/fail19757_m64.d
  b4fc56015b91bcdd15ed815be30ee12c  gcc/testsuite/gdc.test/fail_compilation/fail198.d
  1331488e808fb89535bd56551e1b503c  gcc/testsuite/gdc.test/fail_compilation/fail19871.d
! 03052363d14d51a6c975f381771dd3b8  gcc/testsuite/gdc.test/fail_compilation/fail19881.d
  b3070a0c09fb126898447ec5bb74392b  gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
  0dd563f23672b90a723ba3a9db77eaf0  gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
  803923bf31c7fc9bfe54c9f63a09fd67  gcc/testsuite/gdc.test/fail_compilation/fail19897.d
! 190058ce2827a01f798cf5bfb3a55922  gcc/testsuite/gdc.test/fail_compilation/fail19898a.d
! 307185d56a183f49ba81aab1fc9322a1  gcc/testsuite/gdc.test/fail_compilation/fail19898b.d
  6dd5bad406278481b7d4badda46d5b83  gcc/testsuite/gdc.test/fail_compilation/fail199.d
  20732ebad089aa6fc8fd4b82c40d461a  gcc/testsuite/gdc.test/fail_compilation/fail19911a.d
  170403a4dd923340bba9ba4156ebf981  gcc/testsuite/gdc.test/fail_compilation/fail19911b.d
--- 81301,81322 ----
  255cbdd802a2bc528e235738c17ed595  gcc/testsuite/gdc.test/fail_compilation/fail19447.d
  7594dbc07383fa13599d213acea6e03a  gcc/testsuite/gdc.test/fail_compilation/fail195.d
  676dfacf37090247608e1eabe58d4327  gcc/testsuite/gdc.test/fail_compilation/fail19520.d
! 3e6e69eb968edf7bb5a0d6e610e5bbde  gcc/testsuite/gdc.test/fail_compilation/fail196.d
  a09e1208955504bd9a765b08ef650b11  gcc/testsuite/gdc.test/fail_compilation/fail19609.d
! 3f5bd68363cca36c32206c67b500f342  gcc/testsuite/gdc.test/fail_compilation/fail19687.d
  4748cb1d7ac90ff780c0f16b4a407af1  gcc/testsuite/gdc.test/fail_compilation/fail19729.d
  5497eef106b03c1d1c5abca76532ef7f  gcc/testsuite/gdc.test/fail_compilation/fail19744.d
  ab33dd9a1412bc650d3341ca810280e1  gcc/testsuite/gdc.test/fail_compilation/fail19757_m32.d
  f48f0703c5e7d1124e8dafcfac05bf26  gcc/testsuite/gdc.test/fail_compilation/fail19757_m64.d
+ 33bf38575dfd10064e518f9283c22829  gcc/testsuite/gdc.test/fail_compilation/fail19759.d
  b4fc56015b91bcdd15ed815be30ee12c  gcc/testsuite/gdc.test/fail_compilation/fail198.d
  1331488e808fb89535bd56551e1b503c  gcc/testsuite/gdc.test/fail_compilation/fail19871.d
! d7aaba99f3b1217cae97ee836f479155  gcc/testsuite/gdc.test/fail_compilation/fail19881.d
  b3070a0c09fb126898447ec5bb74392b  gcc/testsuite/gdc.test/fail_compilation/fail19890a.d
  0dd563f23672b90a723ba3a9db77eaf0  gcc/testsuite/gdc.test/fail_compilation/fail19890b.d
  803923bf31c7fc9bfe54c9f63a09fd67  gcc/testsuite/gdc.test/fail_compilation/fail19897.d
! 780f3b6248e47c31d92b599b12301358  gcc/testsuite/gdc.test/fail_compilation/fail19898a.d
! 261252defe5c1323d54bb76d7faa286d  gcc/testsuite/gdc.test/fail_compilation/fail19898b.d
  6dd5bad406278481b7d4badda46d5b83  gcc/testsuite/gdc.test/fail_compilation/fail199.d
  20732ebad089aa6fc8fd4b82c40d461a  gcc/testsuite/gdc.test/fail_compilation/fail19911a.d
  170403a4dd923340bba9ba4156ebf981  gcc/testsuite/gdc.test/fail_compilation/fail19911b.d
*************** a69de6e1a6d36384bc5bf67a94a6c25f  gcc/te
*** 76182,76188 ****
  3dfc5d9f9e5b23be6fa7be17c27df8f4  gcc/testsuite/gdc.test/fail_compilation/fail19912c.d
  2d7bd518a3f896bc8c92743d30deb468  gcc/testsuite/gdc.test/fail_compilation/fail19912d.d
  29995ce5e5af44e67e932cad0821ab66  gcc/testsuite/gdc.test/fail_compilation/fail19912e.d
! 24d89dbfd62e9559a62de4d2a276becf  gcc/testsuite/gdc.test/fail_compilation/fail19913.d
  df4fbc4bc25d0ca61982bfcb19c863a9  gcc/testsuite/gdc.test/fail_compilation/fail19914.d
  4d2680d6855f6886fde4f2ab5117c00f  gcc/testsuite/gdc.test/fail_compilation/fail19915.d
  aa9c562b805cdde30e5a0afd83499523  gcc/testsuite/gdc.test/fail_compilation/fail19917.d
--- 81326,81332 ----
  3dfc5d9f9e5b23be6fa7be17c27df8f4  gcc/testsuite/gdc.test/fail_compilation/fail19912c.d
  2d7bd518a3f896bc8c92743d30deb468  gcc/testsuite/gdc.test/fail_compilation/fail19912d.d
  29995ce5e5af44e67e932cad0821ab66  gcc/testsuite/gdc.test/fail_compilation/fail19912e.d
! c6147cf2701486d995172195915656a4  gcc/testsuite/gdc.test/fail_compilation/fail19913.d
  df4fbc4bc25d0ca61982bfcb19c863a9  gcc/testsuite/gdc.test/fail_compilation/fail19914.d
  4d2680d6855f6886fde4f2ab5117c00f  gcc/testsuite/gdc.test/fail_compilation/fail19915.d
  aa9c562b805cdde30e5a0afd83499523  gcc/testsuite/gdc.test/fail_compilation/fail19917.d
*************** ec4256f5b8f7ca86efdc68db68cd6633  gcc/te
*** 76203,76209 ****
  c12128390dab2358113f818b2ee02203  gcc/testsuite/gdc.test/fail_compilation/fail20073.d
  f228d34ca53f073a5e0c086254b1bd68  gcc/testsuite/gdc.test/fail_compilation/fail20084.d
  2cc3df5c37adb911728a27ec62bb9fe6  gcc/testsuite/gdc.test/fail_compilation/fail201.d
! 2cba474a6a9660bbcc78ed1c33318f6d  gcc/testsuite/gdc.test/fail_compilation/fail20108.d
  04bd61e549b8047b02bf8f713226b5ce  gcc/testsuite/gdc.test/fail_compilation/fail20163.d
  491d5c7988c3b5e24cd424510b5ca61b  gcc/testsuite/gdc.test/fail_compilation/fail20164.d
  13b0863241487805492f27976c43584e  gcc/testsuite/gdc.test/fail_compilation/fail20183.d
--- 81347,81353 ----
  c12128390dab2358113f818b2ee02203  gcc/testsuite/gdc.test/fail_compilation/fail20073.d
  f228d34ca53f073a5e0c086254b1bd68  gcc/testsuite/gdc.test/fail_compilation/fail20084.d
  2cc3df5c37adb911728a27ec62bb9fe6  gcc/testsuite/gdc.test/fail_compilation/fail201.d
! 79a43fc730ebadec062a0f18a6776a07  gcc/testsuite/gdc.test/fail_compilation/fail20108.d
  04bd61e549b8047b02bf8f713226b5ce  gcc/testsuite/gdc.test/fail_compilation/fail20163.d
  491d5c7988c3b5e24cd424510b5ca61b  gcc/testsuite/gdc.test/fail_compilation/fail20164.d
  13b0863241487805492f27976c43584e  gcc/testsuite/gdc.test/fail_compilation/fail20183.d
*************** fc7b8d7ee7a9ef28f4089d85def249f9  gcc/te
*** 76215,76230 ****
  d6a41113ab2e7b3eff417c5021e83c2b  gcc/testsuite/gdc.test/fail_compilation/fail20461.d
  b94aaa7ed8ca494a3810cf65f8b1018e  gcc/testsuite/gdc.test/fail_compilation/fail205.d
  26395e360ca164a475e789a3b0cc920f  gcc/testsuite/gdc.test/fail_compilation/fail20538.d
- 7bafa59faaf33ccf3247f50affb1161e  gcc/testsuite/gdc.test/fail_compilation/fail20547.d
  edea67fe10d58bfa25d0000dfad5ade1  gcc/testsuite/gdc.test/fail_compilation/fail20551.d
  9735bea81fe7d24038b3778d5eea4c99  gcc/testsuite/gdc.test/fail_compilation/fail206.d
  5497ff6488537ddce762defd5395054f  gcc/testsuite/gdc.test/fail_compilation/fail20609.d
  20926315a08d0112cb394e537432519b  gcc/testsuite/gdc.test/fail_compilation/fail20616.d
- 60e913bb2df78fbc29f18eed05b4a82a  gcc/testsuite/gdc.test/fail_compilation/fail20618.d
  a198818657a3dee89836f60de09f2cfe  gcc/testsuite/gdc.test/fail_compilation/fail20637.d
  b145b7208e64060148d44c7e840bbef3  gcc/testsuite/gdc.test/fail_compilation/fail20638.d
  bfba6f06e64694108fdda60cbbb3a965  gcc/testsuite/gdc.test/fail_compilation/fail20658.d
! cbebdd4a0b3885d2941ea5f24499f1bb  gcc/testsuite/gdc.test/fail_compilation/fail20691.d
  e11dbf32a7deac2ceef48948ddce0cbe  gcc/testsuite/gdc.test/fail_compilation/fail207.d
  d8cbbb687b97f541fa3366579b9eb603  gcc/testsuite/gdc.test/fail_compilation/fail20714.d
  f4b7a202b00d93825722c995891faef8  gcc/testsuite/gdc.test/fail_compilation/fail20730a.d
--- 81359,81372 ----
  d6a41113ab2e7b3eff417c5021e83c2b  gcc/testsuite/gdc.test/fail_compilation/fail20461.d
  b94aaa7ed8ca494a3810cf65f8b1018e  gcc/testsuite/gdc.test/fail_compilation/fail205.d
  26395e360ca164a475e789a3b0cc920f  gcc/testsuite/gdc.test/fail_compilation/fail20538.d
  edea67fe10d58bfa25d0000dfad5ade1  gcc/testsuite/gdc.test/fail_compilation/fail20551.d
  9735bea81fe7d24038b3778d5eea4c99  gcc/testsuite/gdc.test/fail_compilation/fail206.d
  5497ff6488537ddce762defd5395054f  gcc/testsuite/gdc.test/fail_compilation/fail20609.d
  20926315a08d0112cb394e537432519b  gcc/testsuite/gdc.test/fail_compilation/fail20616.d
  a198818657a3dee89836f60de09f2cfe  gcc/testsuite/gdc.test/fail_compilation/fail20637.d
  b145b7208e64060148d44c7e840bbef3  gcc/testsuite/gdc.test/fail_compilation/fail20638.d
  bfba6f06e64694108fdda60cbbb3a965  gcc/testsuite/gdc.test/fail_compilation/fail20658.d
! 26957e83232a8cc037985d5d1ec2e7be  gcc/testsuite/gdc.test/fail_compilation/fail20691.d
  e11dbf32a7deac2ceef48948ddce0cbe  gcc/testsuite/gdc.test/fail_compilation/fail207.d
  d8cbbb687b97f541fa3366579b9eb603  gcc/testsuite/gdc.test/fail_compilation/fail20714.d
  f4b7a202b00d93825722c995891faef8  gcc/testsuite/gdc.test/fail_compilation/fail20730a.d
*************** e86a43746a06c328b7e7e0ba7df00372  gcc/te
*** 76240,76249 ****
  a73d3317381cd1a7dad4b419b99a70c1  gcc/testsuite/gdc.test/fail_compilation/fail21001.d
  15efbee5d7d12e140b24d2a045c8770e  gcc/testsuite/gdc.test/fail_compilation/fail21091a.d
  94ce42e8c54b06d1ce0618c9091c5b20  gcc/testsuite/gdc.test/fail_compilation/fail21091b.d
! 8c036b8743d61d27c0160ff0f8cad1b4  gcc/testsuite/gdc.test/fail_compilation/fail21092.d
  53a6efb64314ca922163fd4aacf0597e  gcc/testsuite/gdc.test/fail_compilation/fail212.d
! da515e0e3ccb6122748469e3748506cb  gcc/testsuite/gdc.test/fail_compilation/fail21275.d
  2d9df3ff3291444912ae26c1928ab756  gcc/testsuite/gdc.test/fail_compilation/fail213.d
  13ad9b137c1b6f7e351e545d9935bdd4  gcc/testsuite/gdc.test/fail_compilation/fail215.d
  71a09b4bf6b48720fcf973edfe6c3e01  gcc/testsuite/gdc.test/fail_compilation/fail21508.d
  fa51ba78aed7e51b5bea920cbb76cf2c  gcc/testsuite/gdc.test/fail_compilation/fail21508_2.d
--- 81382,81394 ----
  a73d3317381cd1a7dad4b419b99a70c1  gcc/testsuite/gdc.test/fail_compilation/fail21001.d
  15efbee5d7d12e140b24d2a045c8770e  gcc/testsuite/gdc.test/fail_compilation/fail21091a.d
  94ce42e8c54b06d1ce0618c9091c5b20  gcc/testsuite/gdc.test/fail_compilation/fail21091b.d
! 3bd1b362fe8b8a478ba7c64e32e891da  gcc/testsuite/gdc.test/fail_compilation/fail21092.d
  53a6efb64314ca922163fd4aacf0597e  gcc/testsuite/gdc.test/fail_compilation/fail212.d
! ff7d0d6d18158ece6dacbd261f021eb6  gcc/testsuite/gdc.test/fail_compilation/fail21206.d
! 3846fcb1f6804aa0e4e3aca57f48afec  gcc/testsuite/gdc.test/fail_compilation/fail21243.d
! 7cd295d2f41e7a53beba06911a674d6f  gcc/testsuite/gdc.test/fail_compilation/fail21275.d
  2d9df3ff3291444912ae26c1928ab756  gcc/testsuite/gdc.test/fail_compilation/fail213.d
+ 11c327ae74ea5071c0ad376800875d7b  gcc/testsuite/gdc.test/fail_compilation/fail21314.d
  13ad9b137c1b6f7e351e545d9935bdd4  gcc/testsuite/gdc.test/fail_compilation/fail215.d
  71a09b4bf6b48720fcf973edfe6c3e01  gcc/testsuite/gdc.test/fail_compilation/fail21508.d
  fa51ba78aed7e51b5bea920cbb76cf2c  gcc/testsuite/gdc.test/fail_compilation/fail21508_2.d
*************** a83d55be79bbfec18976ece3917ef4c3  gcc/te
*** 76255,76261 ****
  f53cd799f73a88b39e37762ab5f0d895  gcc/testsuite/gdc.test/fail_compilation/fail21831.d
  cde47018767be52b59c3714b8b3b7c23  gcc/testsuite/gdc.test/fail_compilation/fail21832.d
  924b73715b305ddb10cf8e8fcd7ac8ad  gcc/testsuite/gdc.test/fail_compilation/fail21849.d
! 89f599c580c3afe454b124c31ce98ab2  gcc/testsuite/gdc.test/fail_compilation/fail21868b.d
  d3e754f69fda705025724136d5ffd640  gcc/testsuite/gdc.test/fail_compilation/fail21885.d
  3cc974f3f05c55db8eea1f915e9881e5  gcc/testsuite/gdc.test/fail_compilation/fail21928.d
  01cfc5ae8f798a3a9b4cc8df405dd2cd  gcc/testsuite/gdc.test/fail_compilation/fail21928b.d
--- 81400,81406 ----
  f53cd799f73a88b39e37762ab5f0d895  gcc/testsuite/gdc.test/fail_compilation/fail21831.d
  cde47018767be52b59c3714b8b3b7c23  gcc/testsuite/gdc.test/fail_compilation/fail21832.d
  924b73715b305ddb10cf8e8fcd7ac8ad  gcc/testsuite/gdc.test/fail_compilation/fail21849.d
! 13950261e7b51601cfd71db85330d877  gcc/testsuite/gdc.test/fail_compilation/fail21868b.d
  d3e754f69fda705025724136d5ffd640  gcc/testsuite/gdc.test/fail_compilation/fail21885.d
  3cc974f3f05c55db8eea1f915e9881e5  gcc/testsuite/gdc.test/fail_compilation/fail21928.d
  01cfc5ae8f798a3a9b4cc8df405dd2cd  gcc/testsuite/gdc.test/fail_compilation/fail21928b.d
*************** d3e754f69fda705025724136d5ffd640  gcc/te
*** 76264,76269 ****
--- 81409,81415 ----
  6274ef7e8105ea803309557412cf83af  gcc/testsuite/gdc.test/fail_compilation/fail220.d
  24f4c3c3fa945ca54c802bc7b4fc9976  gcc/testsuite/gdc.test/fail_compilation/fail22006.d
  a4ee47c4449f07f5d351b6c05aeb5fc1  gcc/testsuite/gdc.test/fail_compilation/fail22035.d
+ 933d0bade21ca7413250a580843fd5b2  gcc/testsuite/gdc.test/fail_compilation/fail22039.d
  a7a360e9ac568b736b869e81fbb1eda7  gcc/testsuite/gdc.test/fail_compilation/fail22054.d
  32e9a53915db9581977b4869f165b323  gcc/testsuite/gdc.test/fail_compilation/fail22075.d
  bdb29ac495380b23d0398faa494dcb3b  gcc/testsuite/gdc.test/fail_compilation/fail22084.d
*************** b70b339a1dbd5b5807d24c2f37fb9ac3  gcc/te
*** 76273,76278 ****
--- 81419,81425 ----
  2eb3076801c4b34338e991f409be8590  gcc/testsuite/gdc.test/fail_compilation/fail22121/imports/test22121/package.d
  673fad350f62c8a44c501f8c402d7a21  gcc/testsuite/gdc.test/fail_compilation/fail22127.d
  2b4fb39fd7fc4e72ebcaa1ce62956043  gcc/testsuite/gdc.test/fail_compilation/fail22133.d
+ 0eb7354db04b068599fbb98e0945b443  gcc/testsuite/gdc.test/fail_compilation/fail22134.d
  0fec8d242cc8653c987a5380a0e71966  gcc/testsuite/gdc.test/fail_compilation/fail22138.d
  9b88e4363da5c8d1e01b4b215b2046e0  gcc/testsuite/gdc.test/fail_compilation/fail22144.d
  8e495eb6f782921db4fc6fc559c36d67  gcc/testsuite/gdc.test/fail_compilation/fail22151.d
*************** b70b339a1dbd5b5807d24c2f37fb9ac3  gcc/te
*** 76280,76289 ****
  1dfa55bc17ffdec8baf3883cb1a4752e  gcc/testsuite/gdc.test/fail_compilation/fail222.d
  93bd8250bf0139126e20c0b0e7e5ac81  gcc/testsuite/gdc.test/fail_compilation/fail22202.d
  928492c14b5c84fee4c14ddcc7dd2654  gcc/testsuite/gdc.test/fail_compilation/fail223.d
! 71cbaf2fc34e8b0f572e74712a8e7481  gcc/testsuite/gdc.test/fail_compilation/fail22366.d
  3f3c3c715b9b751e293418c6f11a698d  gcc/testsuite/gdc.test/fail_compilation/fail224.d
  8f21001702995c4e796c601f972acd8d  gcc/testsuite/gdc.test/fail_compilation/fail22529.d
! 10631e3b3f599849c50e0219aa2724af  gcc/testsuite/gdc.test/fail_compilation/fail22570.d
  31fb74dd9708f5d3461a97b5c69b8b7b  gcc/testsuite/gdc.test/fail_compilation/fail22634.d
  524d3aa06d43f7dc07b54abd5885156c  gcc/testsuite/gdc.test/fail_compilation/fail22749.d
  509e6c0eaf43ea955a41140f2c8d1eee  gcc/testsuite/gdc.test/fail_compilation/fail22780.d
--- 81427,81437 ----
  1dfa55bc17ffdec8baf3883cb1a4752e  gcc/testsuite/gdc.test/fail_compilation/fail222.d
  93bd8250bf0139126e20c0b0e7e5ac81  gcc/testsuite/gdc.test/fail_compilation/fail22202.d
  928492c14b5c84fee4c14ddcc7dd2654  gcc/testsuite/gdc.test/fail_compilation/fail223.d
! 17a695cee90e738df660838758034a05  gcc/testsuite/gdc.test/fail_compilation/fail22351.d
! 5f5a322da95758dcc7838f717387eb01  gcc/testsuite/gdc.test/fail_compilation/fail22366.d
  3f3c3c715b9b751e293418c6f11a698d  gcc/testsuite/gdc.test/fail_compilation/fail224.d
  8f21001702995c4e796c601f972acd8d  gcc/testsuite/gdc.test/fail_compilation/fail22529.d
! 656e03bd856eb6e5af678c49d60888ad  gcc/testsuite/gdc.test/fail_compilation/fail22570.d
  31fb74dd9708f5d3461a97b5c69b8b7b  gcc/testsuite/gdc.test/fail_compilation/fail22634.d
  524d3aa06d43f7dc07b54abd5885156c  gcc/testsuite/gdc.test/fail_compilation/fail22749.d
  509e6c0eaf43ea955a41140f2c8d1eee  gcc/testsuite/gdc.test/fail_compilation/fail22780.d
*************** b870fb01a2c3232f3cff62cc0b90ac88  gcc/te
*** 76298,76311 ****
  048e20a40216cbded5b201acc227180b  gcc/testsuite/gdc.test/fail_compilation/fail231.d
  3ee0844b26847d9399784b8860d279d8  gcc/testsuite/gdc.test/fail_compilation/fail23108a.d
  c17288c946e2e756c11f41221c460dfb  gcc/testsuite/gdc.test/fail_compilation/fail23108b.d
! bcd0ba6565874947670527af56086e2f  gcc/testsuite/gdc.test/fail_compilation/fail23109.d
  e670a6f21877da59644ba71444695a18  gcc/testsuite/gdc.test/fail_compilation/fail23181.d
  2549171f6c1309bbbd88a2c8d62fdd92  gcc/testsuite/gdc.test/fail_compilation/fail232.d
! 9e8ce37e9e4473d8aba813cef9ed1dc4  gcc/testsuite/gdc.test/fail_compilation/fail233.d
  c4bd4d001cbafb82e00b9421cd9995f2  gcc/testsuite/gdc.test/fail_compilation/fail235.d
  a84e81839fc598f6bee18e8ba2811238  gcc/testsuite/gdc.test/fail_compilation/fail236.d
  f1eeba6eda398cae717fff38b79838b8  gcc/testsuite/gdc.test/fail_compilation/fail2361.d
  4a24025117f87834cb3038ffa2a63642  gcc/testsuite/gdc.test/fail_compilation/fail237.d
  ae65504ee5368439f87cba230c2fbb6c  gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d
  faf12ba22575387527878d9b8beb717a  gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d
  115789041b2ab94dc286976883caa1a5  gcc/testsuite/gdc.test/fail_compilation/fail239.d
--- 81446,81468 ----
  048e20a40216cbded5b201acc227180b  gcc/testsuite/gdc.test/fail_compilation/fail231.d
  3ee0844b26847d9399784b8860d279d8  gcc/testsuite/gdc.test/fail_compilation/fail23108a.d
  c17288c946e2e756c11f41221c460dfb  gcc/testsuite/gdc.test/fail_compilation/fail23108b.d
! 22626a4f7b86563bcd1d05b076b31a1e  gcc/testsuite/gdc.test/fail_compilation/fail23109.d
! 4bfaf1caa47ec51e3f310cd848ed8737  gcc/testsuite/gdc.test/fail_compilation/fail23135.d
! ed8c100dddbce2063a566b89b2a95a90  gcc/testsuite/gdc.test/fail_compilation/fail23151.d
  e670a6f21877da59644ba71444695a18  gcc/testsuite/gdc.test/fail_compilation/fail23181.d
  2549171f6c1309bbbd88a2c8d62fdd92  gcc/testsuite/gdc.test/fail_compilation/fail232.d
! 75e8bd002cad820145fda155dc230d5e  gcc/testsuite/gdc.test/fail_compilation/fail23406.d
! 25ca171756a24d6a546fee80980ae236  gcc/testsuite/gdc.test/fail_compilation/fail23439.d
  c4bd4d001cbafb82e00b9421cd9995f2  gcc/testsuite/gdc.test/fail_compilation/fail235.d
+ bce999b9720203f9099ef1b72855dfcc  gcc/testsuite/gdc.test/fail_compilation/fail23574.d
+ 32e3bda98a0a6039d7cd102fc87c52fa  gcc/testsuite/gdc.test/fail_compilation/fail23591.d
  a84e81839fc598f6bee18e8ba2811238  gcc/testsuite/gdc.test/fail_compilation/fail236.d
  f1eeba6eda398cae717fff38b79838b8  gcc/testsuite/gdc.test/fail_compilation/fail2361.d
+ c284e350d911c60d79f2a05b7a8f313a  gcc/testsuite/gdc.test/fail_compilation/fail23626a.d
+ c6fa7fa5de41cb8c47b38b08a5b1140b  gcc/testsuite/gdc.test/fail_compilation/fail23626b.d
  4a24025117f87834cb3038ffa2a63642  gcc/testsuite/gdc.test/fail_compilation/fail237.d
+ 670123e21d4fc050f0062448b5263f12  gcc/testsuite/gdc.test/fail_compilation/fail23745.d
+ 2a244612779b0550d045b21c333c9491  gcc/testsuite/gdc.test/fail_compilation/fail23760.d
  ae65504ee5368439f87cba230c2fbb6c  gcc/testsuite/gdc.test/fail_compilation/fail238_m32.d
  faf12ba22575387527878d9b8beb717a  gcc/testsuite/gdc.test/fail_compilation/fail238_m64.d
  115789041b2ab94dc286976883caa1a5  gcc/testsuite/gdc.test/fail_compilation/fail239.d
*************** ce3d4db7da44d83520245251d1c52b86  gcc/te
*** 76325,76337 ****
  2bf4699d3c946b16a0dc3115c28b16ec  gcc/testsuite/gdc.test/fail_compilation/fail250.d
  7f7109317bf0325c418014276e13cfe2  gcc/testsuite/gdc.test/fail_compilation/fail251.d
  c908fc323909d68ae82ac5769ced2b4e  gcc/testsuite/gdc.test/fail_compilation/fail252.d
! 664a657b9a61ca0e648f6ecb79a6be16  gcc/testsuite/gdc.test/fail_compilation/fail253.d
  5e6643c0dc6c2c1022307cf9f3f46d39  gcc/testsuite/gdc.test/fail_compilation/fail254.d
  89d8530932ddc62f1b5f756cc137cbd0  gcc/testsuite/gdc.test/fail_compilation/fail256.d
  f1243a2544274acdb7b8aa344b404728  gcc/testsuite/gdc.test/fail_compilation/fail257.d
  f53e57a9e89cd741a5c46961166a1f5a  gcc/testsuite/gdc.test/fail_compilation/fail258.d
  d138575c329ecfa57cf9cdef90d6a04a  gcc/testsuite/gdc.test/fail_compilation/fail259.d
! 46c85ec929df513240b935034ea0a78d  gcc/testsuite/gdc.test/fail_compilation/fail261.d
  ab516084e0ebe83389b0d25ed5ba9c2c  gcc/testsuite/gdc.test/fail_compilation/fail262.d
  285eb27e068cf4f9a4d13c7dcf47d379  gcc/testsuite/gdc.test/fail_compilation/fail263.d
  e3aaf70f1ee3ab9d4bdf647065681c97  gcc/testsuite/gdc.test/fail_compilation/fail264.d
--- 81482,81494 ----
  2bf4699d3c946b16a0dc3115c28b16ec  gcc/testsuite/gdc.test/fail_compilation/fail250.d
  7f7109317bf0325c418014276e13cfe2  gcc/testsuite/gdc.test/fail_compilation/fail251.d
  c908fc323909d68ae82ac5769ced2b4e  gcc/testsuite/gdc.test/fail_compilation/fail252.d
! 21d3cdb9539165d13b60bcddd829c709  gcc/testsuite/gdc.test/fail_compilation/fail253.d
  5e6643c0dc6c2c1022307cf9f3f46d39  gcc/testsuite/gdc.test/fail_compilation/fail254.d
  89d8530932ddc62f1b5f756cc137cbd0  gcc/testsuite/gdc.test/fail_compilation/fail256.d
  f1243a2544274acdb7b8aa344b404728  gcc/testsuite/gdc.test/fail_compilation/fail257.d
  f53e57a9e89cd741a5c46961166a1f5a  gcc/testsuite/gdc.test/fail_compilation/fail258.d
  d138575c329ecfa57cf9cdef90d6a04a  gcc/testsuite/gdc.test/fail_compilation/fail259.d
! 8bdf284f0442d1e350010cdeee56fe59  gcc/testsuite/gdc.test/fail_compilation/fail261.d
  ab516084e0ebe83389b0d25ed5ba9c2c  gcc/testsuite/gdc.test/fail_compilation/fail262.d
  285eb27e068cf4f9a4d13c7dcf47d379  gcc/testsuite/gdc.test/fail_compilation/fail263.d
  e3aaf70f1ee3ab9d4bdf647065681c97  gcc/testsuite/gdc.test/fail_compilation/fail264.d
*************** c0167ff7cfda345c489ee36ed532f9a5  gcc/te
*** 76362,76368 ****
  45ec37698b6441cbf5cd767bc9e6af4a  gcc/testsuite/gdc.test/fail_compilation/fail2962.d
  6d60e1b2bdb96cb17f638be9d15be002  gcc/testsuite/gdc.test/fail_compilation/fail297.d
  39598ace8538fb86a4a31cd07f3b73e6  gcc/testsuite/gdc.test/fail_compilation/fail298.d
! d7bdba8e69cfaf252d89c8107f67f90e  gcc/testsuite/gdc.test/fail_compilation/fail299.d
  0ed23be0c271e03f9f016cdd30ade45c  gcc/testsuite/gdc.test/fail_compilation/fail3.d
  92801dfbbc854e405224e747388284e4  gcc/testsuite/gdc.test/fail_compilation/fail301.d
  ccf07a8d9da2e18e2df9789595f228b8  gcc/testsuite/gdc.test/fail_compilation/fail302.d
--- 81519,81525 ----
  45ec37698b6441cbf5cd767bc9e6af4a  gcc/testsuite/gdc.test/fail_compilation/fail2962.d
  6d60e1b2bdb96cb17f638be9d15be002  gcc/testsuite/gdc.test/fail_compilation/fail297.d
  39598ace8538fb86a4a31cd07f3b73e6  gcc/testsuite/gdc.test/fail_compilation/fail298.d
! b206f94fcd91613bf06fad61e79f3c3d  gcc/testsuite/gdc.test/fail_compilation/fail299.d
  0ed23be0c271e03f9f016cdd30ade45c  gcc/testsuite/gdc.test/fail_compilation/fail3.d
  92801dfbbc854e405224e747388284e4  gcc/testsuite/gdc.test/fail_compilation/fail301.d
  ccf07a8d9da2e18e2df9789595f228b8  gcc/testsuite/gdc.test/fail_compilation/fail302.d
*************** ccf07a8d9da2e18e2df9789595f228b8  gcc/te
*** 76371,76377 ****
  a4476518c57fe9ca01a6fe8b42385325  gcc/testsuite/gdc.test/fail_compilation/fail305.d
  ef026933cf422af0367257bfe21bd10a  gcc/testsuite/gdc.test/fail_compilation/fail306.d
  c6bb6e98c1536367c7fff657247aeddc  gcc/testsuite/gdc.test/fail_compilation/fail307.d
! 39a9872d09a199054f81fd82b83909be  gcc/testsuite/gdc.test/fail_compilation/fail308.d
  2ae494ce7c1053d4b26ec4431836b93e  gcc/testsuite/gdc.test/fail_compilation/fail309.d
  968a8370713580cc337985d7cb95a842  gcc/testsuite/gdc.test/fail_compilation/fail310.d
  31b98637d06b5f1ae10bfeac4d9624f3  gcc/testsuite/gdc.test/fail_compilation/fail311.d
--- 81528,81534 ----
  a4476518c57fe9ca01a6fe8b42385325  gcc/testsuite/gdc.test/fail_compilation/fail305.d
  ef026933cf422af0367257bfe21bd10a  gcc/testsuite/gdc.test/fail_compilation/fail306.d
  c6bb6e98c1536367c7fff657247aeddc  gcc/testsuite/gdc.test/fail_compilation/fail307.d
! fcac9ad4babc1ce01a89dae4b91d6e7d  gcc/testsuite/gdc.test/fail_compilation/fail308.d
  2ae494ce7c1053d4b26ec4431836b93e  gcc/testsuite/gdc.test/fail_compilation/fail309.d
  968a8370713580cc337985d7cb95a842  gcc/testsuite/gdc.test/fail_compilation/fail310.d
  31b98637d06b5f1ae10bfeac4d9624f3  gcc/testsuite/gdc.test/fail_compilation/fail311.d
*************** c15e5757d1100c2530af5033ae938db6  gcc/te
*** 76384,76390 ****
  fa456fd33d0fb0d3aaa1cc87dd39be56  gcc/testsuite/gdc.test/fail_compilation/fail317.d
  27d4f79b4e38c969c16da4d302e16b4f  gcc/testsuite/gdc.test/fail_compilation/fail318_b.d
  7c31afe36ce80937dd4227f3230c1703  gcc/testsuite/gdc.test/fail_compilation/fail319.d
! 0630a32de5ce194553521eaf29f3df52  gcc/testsuite/gdc.test/fail_compilation/fail320.d
  268122abaab8e4180bc6e53ec75faf41  gcc/testsuite/gdc.test/fail_compilation/fail322.d
  79aa76311e496353aac9cd418beef1b0  gcc/testsuite/gdc.test/fail_compilation/fail325.d
  8a7c5b78049815ea1cfd798976afe397  gcc/testsuite/gdc.test/fail_compilation/fail328.d
--- 81541,81547 ----
  fa456fd33d0fb0d3aaa1cc87dd39be56  gcc/testsuite/gdc.test/fail_compilation/fail317.d
  27d4f79b4e38c969c16da4d302e16b4f  gcc/testsuite/gdc.test/fail_compilation/fail318_b.d
  7c31afe36ce80937dd4227f3230c1703  gcc/testsuite/gdc.test/fail_compilation/fail319.d
! 2ded6b24e430b4b3b1ab8d0e84718c53  gcc/testsuite/gdc.test/fail_compilation/fail320.d
  268122abaab8e4180bc6e53ec75faf41  gcc/testsuite/gdc.test/fail_compilation/fail322.d
  79aa76311e496353aac9cd418beef1b0  gcc/testsuite/gdc.test/fail_compilation/fail325.d
  8a7c5b78049815ea1cfd798976afe397  gcc/testsuite/gdc.test/fail_compilation/fail328.d
*************** ca1565a5e3c6d530f6ac211c98dbb3c9  gcc/te
*** 76403,76409 ****
  02a7f2063a30a848e9be70675ca30452  gcc/testsuite/gdc.test/fail_compilation/fail341.d
  d90da0a412ace4972eb22626cc976f94  gcc/testsuite/gdc.test/fail_compilation/fail343.d
  f332a94ead175c47a5de77a06e6410b4  gcc/testsuite/gdc.test/fail_compilation/fail344.d
! 31062280e32548b6537711787472a743  gcc/testsuite/gdc.test/fail_compilation/fail346.d
  f30dee3457a1832a9e743366a7621ba1  gcc/testsuite/gdc.test/fail_compilation/fail347.d
  ccd8ce4ed9822b5a21bb35bdb22746b4  gcc/testsuite/gdc.test/fail_compilation/fail349.d
  bede71f4316d3fc557a5414cd713fc15  gcc/testsuite/gdc.test/fail_compilation/fail35.d
--- 81560,81566 ----
  02a7f2063a30a848e9be70675ca30452  gcc/testsuite/gdc.test/fail_compilation/fail341.d
  d90da0a412ace4972eb22626cc976f94  gcc/testsuite/gdc.test/fail_compilation/fail343.d
  f332a94ead175c47a5de77a06e6410b4  gcc/testsuite/gdc.test/fail_compilation/fail344.d
! 4a746c443d2dbe861d85e6889c4bf53f  gcc/testsuite/gdc.test/fail_compilation/fail346.d
  f30dee3457a1832a9e743366a7621ba1  gcc/testsuite/gdc.test/fail_compilation/fail347.d
  ccd8ce4ed9822b5a21bb35bdb22746b4  gcc/testsuite/gdc.test/fail_compilation/fail349.d
  bede71f4316d3fc557a5414cd713fc15  gcc/testsuite/gdc.test/fail_compilation/fail35.d
*************** a3c52c49abd68bb9774eff98e08689bb  gcc/te
*** 76435,76441 ****
  2dd6f8c6cb1ecf6625d1650733ce0145  gcc/testsuite/gdc.test/fail_compilation/fail41.d
  9a5300a416e69f83924621c9653cffd1  gcc/testsuite/gdc.test/fail_compilation/fail42.d
  6df76bbb49a6a24e29515a2adaf498cd  gcc/testsuite/gdc.test/fail_compilation/fail4206.d
! 1c414f5ee36828f697c3fb53c8e9c780  gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
  9ba1cccc0e4d3d97b624134d3c515590  gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
  c4ab43e7f9f9156f14bc34890fdae39c  gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
  562a7b498cea26253db494302d3e7be7  gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
--- 81592,81598 ----
  2dd6f8c6cb1ecf6625d1650733ce0145  gcc/testsuite/gdc.test/fail_compilation/fail41.d
  9a5300a416e69f83924621c9653cffd1  gcc/testsuite/gdc.test/fail_compilation/fail42.d
  6df76bbb49a6a24e29515a2adaf498cd  gcc/testsuite/gdc.test/fail_compilation/fail4206.d
! 1c898e536a38e8e36a14c0f6dbef6fb5  gcc/testsuite/gdc.test/fail_compilation/fail4269a.d
  9ba1cccc0e4d3d97b624134d3c515590  gcc/testsuite/gdc.test/fail_compilation/fail4269b.d
  c4ab43e7f9f9156f14bc34890fdae39c  gcc/testsuite/gdc.test/fail_compilation/fail4269c.d
  562a7b498cea26253db494302d3e7be7  gcc/testsuite/gdc.test/fail_compilation/fail4269d.d
*************** cf42739e9846b83be93d1739561dcacd  gcc/te
*** 76485,76499 ****
  e886866695de1f510d706d9a43753164  gcc/testsuite/gdc.test/fail_compilation/fail5153.d
  14fd3593221a20b67cff3c4048c0a10a  gcc/testsuite/gdc.test/fail_compilation/fail52.d
  22e1ce68370a8ebbe3b4a289e2e902a0  gcc/testsuite/gdc.test/fail_compilation/fail53.d
! 1db7614724075a3f9fb159d763dfb680  gcc/testsuite/gdc.test/fail_compilation/fail54.d
  726fee55e204e2ae6f7096c796b293d4  gcc/testsuite/gdc.test/fail_compilation/fail5435.d
  ce0de773e6a50fd2386921c98d18d030  gcc/testsuite/gdc.test/fail_compilation/fail55.d
  6e81ace5c4651e1424f030312d47cffc  gcc/testsuite/gdc.test/fail_compilation/fail56.d
  cd3307a3394091a0065c50345d1d27c8  gcc/testsuite/gdc.test/fail_compilation/fail5634.d
  12f19bd2092f28fd800b72dfcccc6cd1  gcc/testsuite/gdc.test/fail_compilation/fail57.d
  240a3c909830bbc7f5edbb0a6ccb216c  gcc/testsuite/gdc.test/fail_compilation/fail5733.d
! a32e8d37f4d3c94002f94da8e97575d7  gcc/testsuite/gdc.test/fail_compilation/fail58.d
! f93769c76850f0b989d3a439f9819ef8  gcc/testsuite/gdc.test/fail_compilation/fail5851.d
  45b24679cc558f5c53c822e8b63c94db  gcc/testsuite/gdc.test/fail_compilation/fail59.d
  0fa8371b53286c121ee2f9322b175961  gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
  496d05e780a77d4ce554c8f3df532f36  gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
--- 81642,81655 ----
  e886866695de1f510d706d9a43753164  gcc/testsuite/gdc.test/fail_compilation/fail5153.d
  14fd3593221a20b67cff3c4048c0a10a  gcc/testsuite/gdc.test/fail_compilation/fail52.d
  22e1ce68370a8ebbe3b4a289e2e902a0  gcc/testsuite/gdc.test/fail_compilation/fail53.d
! 4e4a2f2916ed0a765560fd0dbd7697a7  gcc/testsuite/gdc.test/fail_compilation/fail54.d
  726fee55e204e2ae6f7096c796b293d4  gcc/testsuite/gdc.test/fail_compilation/fail5435.d
  ce0de773e6a50fd2386921c98d18d030  gcc/testsuite/gdc.test/fail_compilation/fail55.d
  6e81ace5c4651e1424f030312d47cffc  gcc/testsuite/gdc.test/fail_compilation/fail56.d
  cd3307a3394091a0065c50345d1d27c8  gcc/testsuite/gdc.test/fail_compilation/fail5634.d
  12f19bd2092f28fd800b72dfcccc6cd1  gcc/testsuite/gdc.test/fail_compilation/fail57.d
  240a3c909830bbc7f5edbb0a6ccb216c  gcc/testsuite/gdc.test/fail_compilation/fail5733.d
! f5f9c152d31bc729e5d003ca9c312a4c  gcc/testsuite/gdc.test/fail_compilation/fail58.d
  45b24679cc558f5c53c822e8b63c94db  gcc/testsuite/gdc.test/fail_compilation/fail59.d
  0fa8371b53286c121ee2f9322b175961  gcc/testsuite/gdc.test/fail_compilation/fail5953a1.d
  496d05e780a77d4ce554c8f3df532f36  gcc/testsuite/gdc.test/fail_compilation/fail5953a2.d
*************** f3669e435f1e14c84bb61ff5c428cb46  gcc/te
*** 76501,76507 ****
  dc1ca007f2c683eced50df7662e43e67  gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
  63963f11ac05d624f54576e265b04620  gcc/testsuite/gdc.test/fail_compilation/fail60.d
  42a1255944d9bddb16e627a61865d1bc  gcc/testsuite/gdc.test/fail_compilation/fail6029.d
! 355bea7c97460e5b60f518443fe0987c  gcc/testsuite/gdc.test/fail_compilation/fail61.d
  41e84d5491b9cd6499320b1f3de36186  gcc/testsuite/gdc.test/fail_compilation/fail6107.d
  0339b3d2f0c30e5e8b0165010f55c9da  gcc/testsuite/gdc.test/fail_compilation/fail62.d
  d49de1c497e66b2393f19e7ab4164fa3  gcc/testsuite/gdc.test/fail_compilation/fail6242.d
--- 81657,81663 ----
  dc1ca007f2c683eced50df7662e43e67  gcc/testsuite/gdc.test/fail_compilation/fail5953s2.d
  63963f11ac05d624f54576e265b04620  gcc/testsuite/gdc.test/fail_compilation/fail60.d
  42a1255944d9bddb16e627a61865d1bc  gcc/testsuite/gdc.test/fail_compilation/fail6029.d
! e37bcb66716d2bb34ac748eec5d33ad5  gcc/testsuite/gdc.test/fail_compilation/fail61.d
  41e84d5491b9cd6499320b1f3de36186  gcc/testsuite/gdc.test/fail_compilation/fail6107.d
  0339b3d2f0c30e5e8b0165010f55c9da  gcc/testsuite/gdc.test/fail_compilation/fail62.d
  d49de1c497e66b2393f19e7ab4164fa3  gcc/testsuite/gdc.test/fail_compilation/fail6242.d
*************** e410b8e25ef1e7165b073d41d98e072a  gcc/te
*** 76526,76531 ****
--- 81682,81688 ----
  6fe67f7e8ce2a7fbd43f408b6f338c68  gcc/testsuite/gdc.test/fail_compilation/fail73.d
  97078e5e2ec6fe52e9d6de59897f9a43  gcc/testsuite/gdc.test/fail_compilation/fail7352.d
  640f95b8642e2bbd701e15e7e91e7ef2  gcc/testsuite/gdc.test/fail_compilation/fail7369.d
+ 3889ccc61cb303ee5bffa4204fc39ee2  gcc/testsuite/gdc.test/fail_compilation/fail7372.d
  52f5ec52b1e7fed2889865f2f7f2e139  gcc/testsuite/gdc.test/fail_compilation/fail74.d
  a0982e24c691ef64752d4fc792f9a78b  gcc/testsuite/gdc.test/fail_compilation/fail7424b.d
  fe900fa07ca9a4a67e4995ba24a45f39  gcc/testsuite/gdc.test/fail_compilation/fail7424c.d
*************** d7723e17b36d09ef6c3adb1b595d1521  gcc/te
*** 76601,76643 ****
  4cc716e7729c65300b3c37f4297755e9  gcc/testsuite/gdc.test/fail_compilation/fail98.d
  18c814b6fb7b3ffc61e4f6b4977895c7  gcc/testsuite/gdc.test/fail_compilation/fail9891.d
  5f89108928a4b83bf03ae31c848575f0  gcc/testsuite/gdc.test/fail_compilation/fail9892.d
! 982ee0df3a1a6ace82dc36a404b8b9fa  gcc/testsuite/gdc.test/fail_compilation/fail99.d
  980a7ec30f9685063c0705dc226922a9  gcc/testsuite/gdc.test/fail_compilation/fail9936.d
  378c1bcd54af66fa3474a8ed2d6104fa  gcc/testsuite/gdc.test/fail_compilation/failCopyCtor.d
  c031c67712e76b12a4c85d293bcf3ffe  gcc/testsuite/gdc.test/fail_compilation/failCopyCtor2.d
  f4d497ea71041ea968e6cfffda0c12bb  gcc/testsuite/gdc.test/fail_compilation/fail_arrayexp.d
  ac90f256ed942b9c651f7c098cb27bb5  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop1.d
! b2bac4a42c2533c6f9a59c992805625f  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop2.d
  5392bd6d5086465088d720bec4e643b5  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop3a.d
  37929ba711bedc6a10601f65fc2ef9dc  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop3b.d
  76dc6e141fcacc42604f0bdf73497160  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop3c.d
  e0ad39470e050f43b666f0b33e02af1c  gcc/testsuite/gdc.test/fail_compilation/fail_casting.d
  d1920a0ad9ef7df56e67e67aed392ab6  gcc/testsuite/gdc.test/fail_compilation/fail_casting1.d
  5c15379ab3a21c0db67afc5a0536520a  gcc/testsuite/gdc.test/fail_compilation/fail_casting2.d
! a1a3513b72a19d20572d1dc4d7ac8cf1  gcc/testsuite/gdc.test/fail_compilation/fail_circular.d
  91ebca05271a9228a53b7e9db4999337  gcc/testsuite/gdc.test/fail_compilation/fail_circular2.d
! dab25fcf0ad32ca592f8412820627395  gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
  39d9ce96eb95361623099463c49b4659  gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d
  f0f98a24874397d29f4f6e59def95d45  gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d
  2681d65bc25b4e9924747b1bcb620627  gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d
  2ba3f1515a3ee5a14f9c4466fc8caef3  gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d
  695faa3012289c1132b755b3a4e17c6b  gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d
  5755182d428b39c519f6bab44078de81  gcc/testsuite/gdc.test/fail_compilation/fail_opover.d
! 9ce4881e9532c3e5653f8284a13e6d8d  gcc/testsuite/gdc.test/fail_compilation/fail_pretty_errors.d
! 1e79cc1b68b38a09053d0a26ec0e58bc  gcc/testsuite/gdc.test/fail_compilation/fail_scope.d
  6ab7e192a48919708488d70f02e8f28d  gcc/testsuite/gdc.test/fail_compilation/fail_typeof.d
! fce53aa021cbe4afc79cbd0973298f35  gcc/testsuite/gdc.test/fail_compilation/failattr.d
  b61f6ad629dba45d1085c76d3217f055  gcc/testsuite/gdc.test/fail_compilation/failcontracts.d
  350c72bc28ff713ca0e58d7af842d96d  gcc/testsuite/gdc.test/fail_compilation/faildeleteaa.d
! 2fd5ddfd7edbc76ff3142c0f4b33ddeb  gcc/testsuite/gdc.test/fail_compilation/faildottypeinfo.d
  acd4dc01e2f625f440ffb85c36b0bdd8  gcc/testsuite/gdc.test/fail_compilation/failescape.d
  572be48d5a0a5235990cd885758cfa21  gcc/testsuite/gdc.test/fail_compilation/failinout1.d
! c7f4961ddbeca8a36494b25667221785  gcc/testsuite/gdc.test/fail_compilation/failinout2.d
! 2ee5553bf2ef7df7520e5f560f81713a  gcc/testsuite/gdc.test/fail_compilation/failinout3748a.d
! 5bd66c2d163a5f011e1164fee8159067  gcc/testsuite/gdc.test/fail_compilation/failinout3748b.d
! 776e8b2bef99b80fb68e6a31efc99d77  gcc/testsuite/gdc.test/fail_compilation/failob1.d
! 7ab41036f289115bb8c919966bf7da8e  gcc/testsuite/gdc.test/fail_compilation/failob2.d
! d1a70868aec4a96f7a46d00fd7684d38  gcc/testsuite/gdc.test/fail_compilation/failoffset.d
  d5f5f9e3ec363ba8c6f1846ec95974e1  gcc/testsuite/gdc.test/fail_compilation/failsafea.d
  b103e7dea688095eeac13c4d83e09207  gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
  c8c5548edad867bb7b10e6a3658657d1  gcc/testsuite/gdc.test/fail_compilation/failsafec.d
--- 81758,81798 ----
  4cc716e7729c65300b3c37f4297755e9  gcc/testsuite/gdc.test/fail_compilation/fail98.d
  18c814b6fb7b3ffc61e4f6b4977895c7  gcc/testsuite/gdc.test/fail_compilation/fail9891.d
  5f89108928a4b83bf03ae31c848575f0  gcc/testsuite/gdc.test/fail_compilation/fail9892.d
! 05b54ab0227249cc954dbf6f7cfda253  gcc/testsuite/gdc.test/fail_compilation/fail99.d
  980a7ec30f9685063c0705dc226922a9  gcc/testsuite/gdc.test/fail_compilation/fail9936.d
  378c1bcd54af66fa3474a8ed2d6104fa  gcc/testsuite/gdc.test/fail_compilation/failCopyCtor.d
  c031c67712e76b12a4c85d293bcf3ffe  gcc/testsuite/gdc.test/fail_compilation/failCopyCtor2.d
  f4d497ea71041ea968e6cfffda0c12bb  gcc/testsuite/gdc.test/fail_compilation/fail_arrayexp.d
  ac90f256ed942b9c651f7c098cb27bb5  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop1.d
! 18657d3d1f22381fa1d130d04565cb88  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop2.d
  5392bd6d5086465088d720bec4e643b5  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop3a.d
  37929ba711bedc6a10601f65fc2ef9dc  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop3b.d
  76dc6e141fcacc42604f0bdf73497160  gcc/testsuite/gdc.test/fail_compilation/fail_arrayop3c.d
  e0ad39470e050f43b666f0b33e02af1c  gcc/testsuite/gdc.test/fail_compilation/fail_casting.d
  d1920a0ad9ef7df56e67e67aed392ab6  gcc/testsuite/gdc.test/fail_compilation/fail_casting1.d
  5c15379ab3a21c0db67afc5a0536520a  gcc/testsuite/gdc.test/fail_compilation/fail_casting2.d
! dafeada2c936583ac2c626e7223f0e51  gcc/testsuite/gdc.test/fail_compilation/fail_circular.d
  91ebca05271a9228a53b7e9db4999337  gcc/testsuite/gdc.test/fail_compilation/fail_circular2.d
! ee280540f5bf78152055fd5162141920  gcc/testsuite/gdc.test/fail_compilation/fail_compilation.exp
  39d9ce96eb95361623099463c49b4659  gcc/testsuite/gdc.test/fail_compilation/fail_contracts1.d
  f0f98a24874397d29f4f6e59def95d45  gcc/testsuite/gdc.test/fail_compilation/fail_contracts2.d
  2681d65bc25b4e9924747b1bcb620627  gcc/testsuite/gdc.test/fail_compilation/fail_contracts3.d
  2ba3f1515a3ee5a14f9c4466fc8caef3  gcc/testsuite/gdc.test/fail_compilation/fail_contracts4.d
  695faa3012289c1132b755b3a4e17c6b  gcc/testsuite/gdc.test/fail_compilation/fail_isZeroInit.d
  5755182d428b39c519f6bab44078de81  gcc/testsuite/gdc.test/fail_compilation/fail_opover.d
! 3abab4820b27a2c6f25c216bae9621ee  gcc/testsuite/gdc.test/fail_compilation/fail_pretty_errors.d
! fd4d485ec46afb2c29fb2bc7fbef2990  gcc/testsuite/gdc.test/fail_compilation/fail_scope.d
  6ab7e192a48919708488d70f02e8f28d  gcc/testsuite/gdc.test/fail_compilation/fail_typeof.d
! 1c155fc73fa20eef8b42028af054656e  gcc/testsuite/gdc.test/fail_compilation/failattr.d
  b61f6ad629dba45d1085c76d3217f055  gcc/testsuite/gdc.test/fail_compilation/failcontracts.d
  350c72bc28ff713ca0e58d7af842d96d  gcc/testsuite/gdc.test/fail_compilation/faildeleteaa.d
! b78ac40d6d61a403bcaef01e4a2670cf  gcc/testsuite/gdc.test/fail_compilation/faildottypeinfo.d
  acd4dc01e2f625f440ffb85c36b0bdd8  gcc/testsuite/gdc.test/fail_compilation/failescape.d
  572be48d5a0a5235990cd885758cfa21  gcc/testsuite/gdc.test/fail_compilation/failinout1.d
! d10e2cbb7d05c7fc6b72017ac15d0380  gcc/testsuite/gdc.test/fail_compilation/failinout2.d
! 903af167e01111a4b04e269bf83653a9  gcc/testsuite/gdc.test/fail_compilation/failob1.d
! 7aabafbb00a6931742b4a22c4aecb186  gcc/testsuite/gdc.test/fail_compilation/failob2.d
! 34eba8e0cca7811bb3433e1e8a85ac2b  gcc/testsuite/gdc.test/fail_compilation/failoffset.d
  d5f5f9e3ec363ba8c6f1846ec95974e1  gcc/testsuite/gdc.test/fail_compilation/failsafea.d
  b103e7dea688095eeac13c4d83e09207  gcc/testsuite/gdc.test/fail_compilation/failsafeb.d
  c8c5548edad867bb7b10e6a3658657d1  gcc/testsuite/gdc.test/fail_compilation/failsafec.d
*************** b1fa83e7e767b866edc1118f9d0f686f  gcc/te
*** 76647,76657 ****
  beb8c8bfc3f0f76ee64efc3806c61af0  gcc/testsuite/gdc.test/fail_compilation/fix19059.d
  70b0c808cb74e8359925dbd5e0749db7  gcc/testsuite/gdc.test/fail_compilation/fix19246.d
  0274ff4a725fd57aeec4d55356e37e66  gcc/testsuite/gdc.test/fail_compilation/fix21585.d
  93690a25ed6e19eb304f316a96d26179  gcc/testsuite/gdc.test/fail_compilation/fix350a.d
  d70aafa6b9062aa0a03de1dadb2afa0e  gcc/testsuite/gdc.test/fail_compilation/fix350b.d
  61222240dcc7ff94aa66a70ee70a2267  gcc/testsuite/gdc.test/fail_compilation/fix5212.d
! dd8fd3121094b29fedc923268b438cc5  gcc/testsuite/gdc.test/fail_compilation/fob1.d
! ab32bca2f053e6f211191b5a705090cd  gcc/testsuite/gdc.test/fail_compilation/fob2.d
  3b6b4690c46663771a12fac16287d948  gcc/testsuite/gdc.test/fail_compilation/foreach.d
  0f17ffd1ebe50b304fd0960b12313bb2  gcc/testsuite/gdc.test/fail_compilation/foreach2.d
  6564ec7f617e45a8fbc2200fe0aeda2f  gcc/testsuite/gdc.test/fail_compilation/format.d
--- 81802,81815 ----
  beb8c8bfc3f0f76ee64efc3806c61af0  gcc/testsuite/gdc.test/fail_compilation/fix19059.d
  70b0c808cb74e8359925dbd5e0749db7  gcc/testsuite/gdc.test/fail_compilation/fix19246.d
  0274ff4a725fd57aeec4d55356e37e66  gcc/testsuite/gdc.test/fail_compilation/fix21585.d
+ b7bce6203e2b735958ce506967d38f32  gcc/testsuite/gdc.test/fail_compilation/fix22108.d
+ 2ff267e1d3a9eba9b6a3dbdefbb8e0c4  gcc/testsuite/gdc.test/fail_compilation/fix23138.d
  93690a25ed6e19eb304f316a96d26179  gcc/testsuite/gdc.test/fail_compilation/fix350a.d
  d70aafa6b9062aa0a03de1dadb2afa0e  gcc/testsuite/gdc.test/fail_compilation/fix350b.d
  61222240dcc7ff94aa66a70ee70a2267  gcc/testsuite/gdc.test/fail_compilation/fix5212.d
! b9d25113c42d56581ae776a9baea96b2  gcc/testsuite/gdc.test/fail_compilation/fnconstraint.d
! 632cc2a388729fd7b375cab66f081eec  gcc/testsuite/gdc.test/fail_compilation/fob1.d
! 040176ff17f89531c80db27571dd516c  gcc/testsuite/gdc.test/fail_compilation/fob2.d
  3b6b4690c46663771a12fac16287d948  gcc/testsuite/gdc.test/fail_compilation/foreach.d
  0f17ffd1ebe50b304fd0960b12313bb2  gcc/testsuite/gdc.test/fail_compilation/foreach2.d
  6564ec7f617e45a8fbc2200fe0aeda2f  gcc/testsuite/gdc.test/fail_compilation/format.d
*************** f56ebc2eca71902974fca5bb8a136c4e  gcc/te
*** 76660,76666 ****
  f68d4c65c480dd21796992cb08232816  gcc/testsuite/gdc.test/fail_compilation/gag4269c.d
  749dbc75bce825328eabbeb85df3b8ca  gcc/testsuite/gdc.test/fail_compilation/gag4269d.d
  87a6211fb542430ff7af21389d799fda  gcc/testsuite/gdc.test/fail_compilation/gag4269e.d
! 853b5d645664bbaa8463be3ef92de6b6  gcc/testsuite/gdc.test/fail_compilation/gag4269f.d
  9cf3422f5ffafd5938cb92091c05e380  gcc/testsuite/gdc.test/fail_compilation/gag4269g.d
  9ce1ef30ce0032c5863af2b5db1a1096  gcc/testsuite/gdc.test/fail_compilation/goto1.d
  77e722036429f4fc42ec0ff061e860b0  gcc/testsuite/gdc.test/fail_compilation/goto2.d
--- 81818,81824 ----
  f68d4c65c480dd21796992cb08232816  gcc/testsuite/gdc.test/fail_compilation/gag4269c.d
  749dbc75bce825328eabbeb85df3b8ca  gcc/testsuite/gdc.test/fail_compilation/gag4269d.d
  87a6211fb542430ff7af21389d799fda  gcc/testsuite/gdc.test/fail_compilation/gag4269e.d
! 4008dbec0759997c5036536131c28c6a  gcc/testsuite/gdc.test/fail_compilation/gag4269f.d
  9cf3422f5ffafd5938cb92091c05e380  gcc/testsuite/gdc.test/fail_compilation/gag4269g.d
  9ce1ef30ce0032c5863af2b5db1a1096  gcc/testsuite/gdc.test/fail_compilation/goto1.d
  77e722036429f4fc42ec0ff061e860b0  gcc/testsuite/gdc.test/fail_compilation/goto2.d
*************** ec78599028c7b060201a8be7166419e0  gcc/te
*** 76683,76691 ****
  d6a1e1a4369bae1d4acb191b3cbf51ec  gcc/testsuite/gdc.test/fail_compilation/ice10713.d
  18ba13b8377cd5cd39ea2a7487e0f1a1  gcc/testsuite/gdc.test/fail_compilation/ice10727a.d
  0d0b86f60aaa3a19af66b2141f3af10f  gcc/testsuite/gdc.test/fail_compilation/ice10727b.d
! 10c6a422edc0ee74a716c895dd8147fe  gcc/testsuite/gdc.test/fail_compilation/ice10922.d
! 96a759c7713fde195d3f68e23b8d1bda  gcc/testsuite/gdc.test/fail_compilation/ice10938.d
! 348a7e605b5ee19f9a184eb5d63c537f  gcc/testsuite/gdc.test/fail_compilation/ice10949.d
  34d3870c0caaf04c607e50cf1a928eec  gcc/testsuite/gdc.test/fail_compilation/ice11086.d
  648c23d8d77c00d2e35dccf65fe72418  gcc/testsuite/gdc.test/fail_compilation/ice11136.d
  51064f5105da0930ea716a6625403b6e  gcc/testsuite/gdc.test/fail_compilation/ice11153.d
--- 81841,81849 ----
  d6a1e1a4369bae1d4acb191b3cbf51ec  gcc/testsuite/gdc.test/fail_compilation/ice10713.d
  18ba13b8377cd5cd39ea2a7487e0f1a1  gcc/testsuite/gdc.test/fail_compilation/ice10727a.d
  0d0b86f60aaa3a19af66b2141f3af10f  gcc/testsuite/gdc.test/fail_compilation/ice10727b.d
! c3d9a83a929c0efebe7f491b8f28ba9a  gcc/testsuite/gdc.test/fail_compilation/ice10922.d
! aa7e89365b0c870acebf83f4506f4939  gcc/testsuite/gdc.test/fail_compilation/ice10938.d
! 1461e66fd88ac9dc85648dc49a551864  gcc/testsuite/gdc.test/fail_compilation/ice10949.d
  34d3870c0caaf04c607e50cf1a928eec  gcc/testsuite/gdc.test/fail_compilation/ice11086.d
  648c23d8d77c00d2e35dccf65fe72418  gcc/testsuite/gdc.test/fail_compilation/ice11136.d
  51064f5105da0930ea716a6625403b6e  gcc/testsuite/gdc.test/fail_compilation/ice11153.d
*************** c3c4f85c56281537ca3ee9c4cf8b6a91  gcc/te
*** 76704,76710 ****
  7026d9811c4f8d0be77cedf33a89c5df  gcc/testsuite/gdc.test/fail_compilation/ice11849b.d
  56c7c64caed7981c7f9103c734734e0a  gcc/testsuite/gdc.test/fail_compilation/ice11850.d
  153e61db46622a2e4f240d23d23b7266  gcc/testsuite/gdc.test/fail_compilation/ice11856_0.d
! 1e3b8af1d67aec464acc322ab983310d  gcc/testsuite/gdc.test/fail_compilation/ice11856_1.d
  72832de41c6779e3f783a305e081fe30  gcc/testsuite/gdc.test/fail_compilation/ice11919.d
  861874f2b059070cff718bf324774753  gcc/testsuite/gdc.test/fail_compilation/ice11922.d
  c0767fee9a9a4f4f482ae2a5bc0348ab  gcc/testsuite/gdc.test/fail_compilation/ice11925.d
--- 81862,81868 ----
  7026d9811c4f8d0be77cedf33a89c5df  gcc/testsuite/gdc.test/fail_compilation/ice11849b.d
  56c7c64caed7981c7f9103c734734e0a  gcc/testsuite/gdc.test/fail_compilation/ice11850.d
  153e61db46622a2e4f240d23d23b7266  gcc/testsuite/gdc.test/fail_compilation/ice11856_0.d
! 6dd22204e33f32d3019d0f8b69f8195a  gcc/testsuite/gdc.test/fail_compilation/ice11856_1.d
  72832de41c6779e3f783a305e081fe30  gcc/testsuite/gdc.test/fail_compilation/ice11919.d
  861874f2b059070cff718bf324774753  gcc/testsuite/gdc.test/fail_compilation/ice11922.d
  c0767fee9a9a4f4f482ae2a5bc0348ab  gcc/testsuite/gdc.test/fail_compilation/ice11925.d
*************** b770417113d0cfab995e016c1a96463c  gcc/te
*** 76719,76725 ****
  52a2c69cb2543e948028d7a380bb12b3  gcc/testsuite/gdc.test/fail_compilation/ice11982.d
  739ae8c1e53ba0243c4cf2e783760a68  gcc/testsuite/gdc.test/fail_compilation/ice12040.d
  fdadb7e02cce30df2e604ba0c426de70  gcc/testsuite/gdc.test/fail_compilation/ice12158.d
! bdbdcdb4bf3772c89e4a0bf9c6af6eed  gcc/testsuite/gdc.test/fail_compilation/ice12174.d
  276ba3933846ea9c284d42485aac58ad  gcc/testsuite/gdc.test/fail_compilation/ice12235.d
  cd150c87ac92e61e8b5e7090ae58da2f  gcc/testsuite/gdc.test/fail_compilation/ice12350.d
  f4ef2195ff7d779b59f1b6dee9571fbb  gcc/testsuite/gdc.test/fail_compilation/ice12362.d
--- 81877,81883 ----
  52a2c69cb2543e948028d7a380bb12b3  gcc/testsuite/gdc.test/fail_compilation/ice11982.d
  739ae8c1e53ba0243c4cf2e783760a68  gcc/testsuite/gdc.test/fail_compilation/ice12040.d
  fdadb7e02cce30df2e604ba0c426de70  gcc/testsuite/gdc.test/fail_compilation/ice12158.d
! 977f7630f3a5789c9d3c4dea7202596e  gcc/testsuite/gdc.test/fail_compilation/ice12174.d
  276ba3933846ea9c284d42485aac58ad  gcc/testsuite/gdc.test/fail_compilation/ice12235.d
  cd150c87ac92e61e8b5e7090ae58da2f  gcc/testsuite/gdc.test/fail_compilation/ice12350.d
  f4ef2195ff7d779b59f1b6dee9571fbb  gcc/testsuite/gdc.test/fail_compilation/ice12362.d
*************** f4ef2195ff7d779b59f1b6dee9571fbb  gcc/te
*** 76727,76742 ****
  7cb92086b9ee1495589129f725e2a3c1  gcc/testsuite/gdc.test/fail_compilation/ice12501.d
  b715ba0a6a8a0570d030ad23cf911c9b  gcc/testsuite/gdc.test/fail_compilation/ice12534.d
  9faa539294380abc5984c23496c207b6  gcc/testsuite/gdc.test/fail_compilation/ice12539.d
! 3b64c5b56df13bd2c16827f4303a50b6  gcc/testsuite/gdc.test/fail_compilation/ice12574.d
  c5d83c46b1283b0dd2faab15724477e0  gcc/testsuite/gdc.test/fail_compilation/ice12581.d
  94cfd39ff841db3c06aa46f974ec9920  gcc/testsuite/gdc.test/fail_compilation/ice12673.d
! 6a52b2abb84921b63f5cff92834b5984  gcc/testsuite/gdc.test/fail_compilation/ice12727.d
  c36f3395f426470d991985d5dca3f939  gcc/testsuite/gdc.test/fail_compilation/ice12827.d
  a7ad99af969fb1ecb4ad94aca9468df7  gcc/testsuite/gdc.test/fail_compilation/ice12836.d
  3338ec526a2d9e2ab88908856caff232  gcc/testsuite/gdc.test/fail_compilation/ice12838.d
  7848b00ddd3abd0a003fe99c46bd17a8  gcc/testsuite/gdc.test/fail_compilation/ice12841.d
  a5897d2681c15118416b4f821cc74062  gcc/testsuite/gdc.test/fail_compilation/ice12850.d
! 3aaa51368b9512b56094dda74f050f88  gcc/testsuite/gdc.test/fail_compilation/ice12902.d
  9e9a8eac1a9f49f5c052a39cf734e59c  gcc/testsuite/gdc.test/fail_compilation/ice12907.d
  90856d9b40d500a6b3d38aaec0f8480c  gcc/testsuite/gdc.test/fail_compilation/ice13027.d
  3b5508a3a69ba76a27ed41a25566be79  gcc/testsuite/gdc.test/fail_compilation/ice13081.d
--- 81885,81900 ----
  7cb92086b9ee1495589129f725e2a3c1  gcc/testsuite/gdc.test/fail_compilation/ice12501.d
  b715ba0a6a8a0570d030ad23cf911c9b  gcc/testsuite/gdc.test/fail_compilation/ice12534.d
  9faa539294380abc5984c23496c207b6  gcc/testsuite/gdc.test/fail_compilation/ice12539.d
! 19d7266177b0e4818618703afff0ba3d  gcc/testsuite/gdc.test/fail_compilation/ice12574.d
  c5d83c46b1283b0dd2faab15724477e0  gcc/testsuite/gdc.test/fail_compilation/ice12581.d
  94cfd39ff841db3c06aa46f974ec9920  gcc/testsuite/gdc.test/fail_compilation/ice12673.d
! d0a727d83cace9f1fc1ffec7c8ca7b84  gcc/testsuite/gdc.test/fail_compilation/ice12727.d
  c36f3395f426470d991985d5dca3f939  gcc/testsuite/gdc.test/fail_compilation/ice12827.d
  a7ad99af969fb1ecb4ad94aca9468df7  gcc/testsuite/gdc.test/fail_compilation/ice12836.d
  3338ec526a2d9e2ab88908856caff232  gcc/testsuite/gdc.test/fail_compilation/ice12838.d
  7848b00ddd3abd0a003fe99c46bd17a8  gcc/testsuite/gdc.test/fail_compilation/ice12841.d
  a5897d2681c15118416b4f821cc74062  gcc/testsuite/gdc.test/fail_compilation/ice12850.d
! 08077572667654b2d42a65e6b00570b4  gcc/testsuite/gdc.test/fail_compilation/ice12902.d
  9e9a8eac1a9f49f5c052a39cf734e59c  gcc/testsuite/gdc.test/fail_compilation/ice12907.d
  90856d9b40d500a6b3d38aaec0f8480c  gcc/testsuite/gdc.test/fail_compilation/ice13027.d
  3b5508a3a69ba76a27ed41a25566be79  gcc/testsuite/gdc.test/fail_compilation/ice13081.d
*************** c1cd5c3fda15a812481eeb4a54119f47  gcc/te
*** 76748,76761 ****
  898cdb488015b425bb183d44306c64a6  gcc/testsuite/gdc.test/fail_compilation/ice13356.d
  664f9a91f4eeca7d9e63d50ac7044f09  gcc/testsuite/gdc.test/fail_compilation/ice13382.d
  1a4bbc169fd865e415f5735e2d02011f  gcc/testsuite/gdc.test/fail_compilation/ice13385.d
! 47de01e677f40cefb25ff8b3a4a36be8  gcc/testsuite/gdc.test/fail_compilation/ice13459.d
  7eb7d91873c6e88ec6fdb603c21e6fd5  gcc/testsuite/gdc.test/fail_compilation/ice13465a.d
  f4410cf62c66bd36b26cfd923568793c  gcc/testsuite/gdc.test/fail_compilation/ice13465b.d
  2758dd2a496a5538d3b0f220c968d7c2  gcc/testsuite/gdc.test/fail_compilation/ice13563.d
  e119a3d6ce481c2065b18f9d8e145b75  gcc/testsuite/gdc.test/fail_compilation/ice1358.d
  a2859dc4361a77e0eb5ace8ca45bc965  gcc/testsuite/gdc.test/fail_compilation/ice13644.d
! 94361f19c7c5190fc633d234f94c4c86  gcc/testsuite/gdc.test/fail_compilation/ice13788.d
! 7297285b2454d56fe084e452050f79e8  gcc/testsuite/gdc.test/fail_compilation/ice13816.d
  92a72287950ae5199eac2b586d1aab4a  gcc/testsuite/gdc.test/fail_compilation/ice13835.d
  536656bafa8e999ecd89a1eb9af4e1c9  gcc/testsuite/gdc.test/fail_compilation/ice13921.d
  5d31b3a96f1a0a36426b8a81115d82a7  gcc/testsuite/gdc.test/fail_compilation/ice13987.d
--- 81906,81919 ----
  898cdb488015b425bb183d44306c64a6  gcc/testsuite/gdc.test/fail_compilation/ice13356.d
  664f9a91f4eeca7d9e63d50ac7044f09  gcc/testsuite/gdc.test/fail_compilation/ice13382.d
  1a4bbc169fd865e415f5735e2d02011f  gcc/testsuite/gdc.test/fail_compilation/ice13385.d
! f6d8395e0a934fa46f874eef4c21d51a  gcc/testsuite/gdc.test/fail_compilation/ice13459.d
  7eb7d91873c6e88ec6fdb603c21e6fd5  gcc/testsuite/gdc.test/fail_compilation/ice13465a.d
  f4410cf62c66bd36b26cfd923568793c  gcc/testsuite/gdc.test/fail_compilation/ice13465b.d
  2758dd2a496a5538d3b0f220c968d7c2  gcc/testsuite/gdc.test/fail_compilation/ice13563.d
  e119a3d6ce481c2065b18f9d8e145b75  gcc/testsuite/gdc.test/fail_compilation/ice1358.d
  a2859dc4361a77e0eb5ace8ca45bc965  gcc/testsuite/gdc.test/fail_compilation/ice13644.d
! 0d9c63a4372887fa2c9ddfabef18be5e  gcc/testsuite/gdc.test/fail_compilation/ice13788.d
! 1d17aa4e231fc30eec7c34f0c354d3cc  gcc/testsuite/gdc.test/fail_compilation/ice13816.d
  92a72287950ae5199eac2b586d1aab4a  gcc/testsuite/gdc.test/fail_compilation/ice13835.d
  536656bafa8e999ecd89a1eb9af4e1c9  gcc/testsuite/gdc.test/fail_compilation/ice13921.d
  5d31b3a96f1a0a36426b8a81115d82a7  gcc/testsuite/gdc.test/fail_compilation/ice13987.d
*************** bea2ed593bafd20204dbbceeef5c98c7  gcc/te
*** 76770,76776 ****
  e9fc246503f24b01d7b54bf0e06fe251  gcc/testsuite/gdc.test/fail_compilation/ice14424.d
  a2a949ac7909f7551aaf96e706213eed  gcc/testsuite/gdc.test/fail_compilation/ice14621.d
  2bc303c1fcbcde60c2862ed14d39f7ce  gcc/testsuite/gdc.test/fail_compilation/ice14642.d
! 8a58c754ab9f43fa5b841c52de3c80b5  gcc/testsuite/gdc.test/fail_compilation/ice14844.d
  0b09db7aaa0a981639042be21669e8fc  gcc/testsuite/gdc.test/fail_compilation/ice14907.d
  61206c0be6afd5ad30b658069fbd81b2  gcc/testsuite/gdc.test/fail_compilation/ice14923.d
  0144be1b1ccbd02aa3727042eb326ea2  gcc/testsuite/gdc.test/fail_compilation/ice15002.d
--- 81928,81934 ----
  e9fc246503f24b01d7b54bf0e06fe251  gcc/testsuite/gdc.test/fail_compilation/ice14424.d
  a2a949ac7909f7551aaf96e706213eed  gcc/testsuite/gdc.test/fail_compilation/ice14621.d
  2bc303c1fcbcde60c2862ed14d39f7ce  gcc/testsuite/gdc.test/fail_compilation/ice14642.d
! 767e6d9d9798cb7c34afdc00fb232661  gcc/testsuite/gdc.test/fail_compilation/ice14844.d
  0b09db7aaa0a981639042be21669e8fc  gcc/testsuite/gdc.test/fail_compilation/ice14907.d
  61206c0be6afd5ad30b658069fbd81b2  gcc/testsuite/gdc.test/fail_compilation/ice14923.d
  0144be1b1ccbd02aa3727042eb326ea2  gcc/testsuite/gdc.test/fail_compilation/ice15002.d
*************** f22d97a4996c80fd574970a5f939405d  gcc/te
*** 76783,76801 ****
  c4808cceecd3aededb2f1143169919bd  gcc/testsuite/gdc.test/fail_compilation/ice15688.d
  5df2b52f25277c7c025698c08ecaf1ae  gcc/testsuite/gdc.test/fail_compilation/ice15788.d
  8a4b1bf6f02264c4208dec120d4ba224  gcc/testsuite/gdc.test/fail_compilation/ice15816.d
! 2c7865066426a00dd6119765793c2286  gcc/testsuite/gdc.test/fail_compilation/ice15855.d
  befd3225b64946485fb6114607b43b58  gcc/testsuite/gdc.test/fail_compilation/ice15922.d
  ae44bcfb44569651c4d9376e3191212a  gcc/testsuite/gdc.test/fail_compilation/ice16035.d
  0b4d444d80046b62ecd47f19968067a7  gcc/testsuite/gdc.test/fail_compilation/ice16657.d
  9c348b961889ec283b968746616b4dd5  gcc/testsuite/gdc.test/fail_compilation/ice17074.d
  7324203f77755460dfd2b206a19d914d  gcc/testsuite/gdc.test/fail_compilation/ice17690.d
  977e677c4e44b487c0fe7eb915e8215c  gcc/testsuite/gdc.test/fail_compilation/ice17831.d
! 5d56a3267e00a356cbafc5bcff1a83a2  gcc/testsuite/gdc.test/fail_compilation/ice18469.d
! 40f4b17523f8a8afb0858ffba3c80562  gcc/testsuite/gdc.test/fail_compilation/ice18753.d
  175f446c561c5cfe4761f731f185264d  gcc/testsuite/gdc.test/fail_compilation/ice18803a.d
  6a97098a32d555be1373c768d9a16d4d  gcc/testsuite/gdc.test/fail_compilation/ice18803b.d
! 0439c9cba9c8284f81b78e582643a1af  gcc/testsuite/gdc.test/fail_compilation/ice19295.d
! 5afb8639ebe47d4698369becc9aa681f  gcc/testsuite/gdc.test/fail_compilation/ice19755.d
  4a1f725170cfdbaecfe3396d4266c7f7  gcc/testsuite/gdc.test/fail_compilation/ice19762.d
  71aea9f843fbfe456c9a87e3a042ac0d  gcc/testsuite/gdc.test/fail_compilation/ice19887.d
  6bf925a0b5b868454c89afbac8b00888  gcc/testsuite/gdc.test/fail_compilation/ice19950.d
--- 81941,81958 ----
  c4808cceecd3aededb2f1143169919bd  gcc/testsuite/gdc.test/fail_compilation/ice15688.d
  5df2b52f25277c7c025698c08ecaf1ae  gcc/testsuite/gdc.test/fail_compilation/ice15788.d
  8a4b1bf6f02264c4208dec120d4ba224  gcc/testsuite/gdc.test/fail_compilation/ice15816.d
! aefdaf620724a6995807607fe3eb828e  gcc/testsuite/gdc.test/fail_compilation/ice15855.d
  befd3225b64946485fb6114607b43b58  gcc/testsuite/gdc.test/fail_compilation/ice15922.d
  ae44bcfb44569651c4d9376e3191212a  gcc/testsuite/gdc.test/fail_compilation/ice16035.d
  0b4d444d80046b62ecd47f19968067a7  gcc/testsuite/gdc.test/fail_compilation/ice16657.d
  9c348b961889ec283b968746616b4dd5  gcc/testsuite/gdc.test/fail_compilation/ice17074.d
  7324203f77755460dfd2b206a19d914d  gcc/testsuite/gdc.test/fail_compilation/ice17690.d
  977e677c4e44b487c0fe7eb915e8215c  gcc/testsuite/gdc.test/fail_compilation/ice17831.d
! cb3699bbacaa54f2e5ba747855d5ce6a  gcc/testsuite/gdc.test/fail_compilation/ice18469.d
! 83a94d1761f590591624eebfdaa39a1a  gcc/testsuite/gdc.test/fail_compilation/ice18753.d
  175f446c561c5cfe4761f731f185264d  gcc/testsuite/gdc.test/fail_compilation/ice18803a.d
  6a97098a32d555be1373c768d9a16d4d  gcc/testsuite/gdc.test/fail_compilation/ice18803b.d
! a4b0b8ec30a45276b6adabbc1fdef687  gcc/testsuite/gdc.test/fail_compilation/ice19755.d
  4a1f725170cfdbaecfe3396d4266c7f7  gcc/testsuite/gdc.test/fail_compilation/ice19762.d
  71aea9f843fbfe456c9a87e3a042ac0d  gcc/testsuite/gdc.test/fail_compilation/ice19887.d
  6bf925a0b5b868454c89afbac8b00888  gcc/testsuite/gdc.test/fail_compilation/ice19950.d
*************** ebda3059f679d68e2bdd1d9fe3e11b64  gcc/te
*** 76807,76815 ****
  dae5b57cc66ee7160f7c95b7b14c4e59  gcc/testsuite/gdc.test/fail_compilation/ice20709.d
  1ee2df9e731e72df6ec1774356fb21e5  gcc/testsuite/gdc.test/fail_compilation/ice21060.d
  40cfc62ac063a12983ebf0b7179dc795  gcc/testsuite/gdc.test/fail_compilation/ice21095.d
! fdf3168c18cba16f456283570dabf8b2  gcc/testsuite/gdc.test/fail_compilation/ice22377.d
  53849f1b76fa5b798b4ea5844160c304  gcc/testsuite/gdc.test/fail_compilation/ice22516.d
  a95b4b0d95ad129bddbc03bfc46ac807  gcc/testsuite/gdc.test/fail_compilation/ice23097.d
  6d3a822b9364a2575ac0b8aaf63c1e2a  gcc/testsuite/gdc.test/fail_compilation/ice2843.d
  e18518a6aec5268830a299e55c6f25cf  gcc/testsuite/gdc.test/fail_compilation/ice4094.d
  b39d129bd0b8de50d086197b89a483fb  gcc/testsuite/gdc.test/fail_compilation/ice4983.d
--- 81964,81975 ----
  dae5b57cc66ee7160f7c95b7b14c4e59  gcc/testsuite/gdc.test/fail_compilation/ice20709.d
  1ee2df9e731e72df6ec1774356fb21e5  gcc/testsuite/gdc.test/fail_compilation/ice21060.d
  40cfc62ac063a12983ebf0b7179dc795  gcc/testsuite/gdc.test/fail_compilation/ice21095.d
! 1c889102f6cb03a5abd14a55477bd9e0  gcc/testsuite/gdc.test/fail_compilation/ice22377.d
  53849f1b76fa5b798b4ea5844160c304  gcc/testsuite/gdc.test/fail_compilation/ice22516.d
  a95b4b0d95ad129bddbc03bfc46ac807  gcc/testsuite/gdc.test/fail_compilation/ice23097.d
+ ffd2b73db2375f964698b9462b32fd71  gcc/testsuite/gdc.test/fail_compilation/ice23564.d
+ 3a0467bdf1e7de5d4265ef4ec4e885e0  gcc/testsuite/gdc.test/fail_compilation/ice23569.d
+ f76434ad232d6834574476947c58a5a5  gcc/testsuite/gdc.test/fail_compilation/ice23781.d
  6d3a822b9364a2575ac0b8aaf63c1e2a  gcc/testsuite/gdc.test/fail_compilation/ice2843.d
  e18518a6aec5268830a299e55c6f25cf  gcc/testsuite/gdc.test/fail_compilation/ice4094.d
  b39d129bd0b8de50d086197b89a483fb  gcc/testsuite/gdc.test/fail_compilation/ice4983.d
*************** f1d18a3fe42974d8d7e5230df6193002  gcc/te
*** 76824,76844 ****
  a72d7818b33e56375506b6e64ac406c5  gcc/testsuite/gdc.test/fail_compilation/ice8630.d
  1599cbd4b0e9add398e1d1051109e7c7  gcc/testsuite/gdc.test/fail_compilation/ice8711.d
  f5ec039f130aa503ee1ebd140f2ceb58  gcc/testsuite/gdc.test/fail_compilation/ice8742.d
! dc55dbf68e67185df002352d70125d34  gcc/testsuite/gdc.test/fail_compilation/ice8795.d
  8f5543f8be1f11d20a7f6886ffbfbf3e  gcc/testsuite/gdc.test/fail_compilation/ice8795b.d
  d4e8397015cc5d6f1e004c0dbd64cd2a  gcc/testsuite/gdc.test/fail_compilation/ice9013.d
! 368d4d3cd6361ad59bac984b3217ed27  gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
! 89873c468c45408126f5cadc9059992d  gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
! a68e325bd72d815d7138dbcd033fa4d0  gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
  c0168cedd088e2e9a5a07f337acc63c3  gcc/testsuite/gdc.test/fail_compilation/ice9273a.d
  c0748d027ca80dcd3c1826ef09692f1e  gcc/testsuite/gdc.test/fail_compilation/ice9273b.d
  4ab4207341136f2c66f91d255c047732  gcc/testsuite/gdc.test/fail_compilation/ice9284.d
  5c1b7a696de91f0fac6d8de5c8e96d1d  gcc/testsuite/gdc.test/fail_compilation/ice9291.d
  8ee1a73207f2a559dc4eb4319ced5fd5  gcc/testsuite/gdc.test/fail_compilation/ice9338.d
  af5221c169864139df80561cf6490347  gcc/testsuite/gdc.test/fail_compilation/ice9406.d
! 46727c56ccf5d04c6731f5e10a41cc96  gcc/testsuite/gdc.test/fail_compilation/ice9439.d
  cdacde04da8f4e538ea5d87654ac8751  gcc/testsuite/gdc.test/fail_compilation/ice9494.d
! 2ae84a75391238221d95e8b1126b6e4e  gcc/testsuite/gdc.test/fail_compilation/ice9540.d
  e0d2808adb4bd406595bf16363d64560  gcc/testsuite/gdc.test/fail_compilation/ice9545.d
  a80826c048e9b023fb1e48c619781ee4  gcc/testsuite/gdc.test/fail_compilation/ice9759.d
  73cecf4fc16cfdf696ea6d651d1b445b  gcc/testsuite/gdc.test/fail_compilation/ice9806.d
--- 81984,82004 ----
  a72d7818b33e56375506b6e64ac406c5  gcc/testsuite/gdc.test/fail_compilation/ice8630.d
  1599cbd4b0e9add398e1d1051109e7c7  gcc/testsuite/gdc.test/fail_compilation/ice8711.d
  f5ec039f130aa503ee1ebd140f2ceb58  gcc/testsuite/gdc.test/fail_compilation/ice8742.d
! 131a7ca51aaa75f59aa01c47d064003a  gcc/testsuite/gdc.test/fail_compilation/ice8795.d
  8f5543f8be1f11d20a7f6886ffbfbf3e  gcc/testsuite/gdc.test/fail_compilation/ice8795b.d
  d4e8397015cc5d6f1e004c0dbd64cd2a  gcc/testsuite/gdc.test/fail_compilation/ice9013.d
! 76a05de4307636d40489d0bc2f3cda66  gcc/testsuite/gdc.test/fail_compilation/ice9254a.d
! 446455d0c6069f1e8102e7017c0dfd3a  gcc/testsuite/gdc.test/fail_compilation/ice9254b.d
! 223503f61ab56f07a89ea8848b5381e8  gcc/testsuite/gdc.test/fail_compilation/ice9254c.d
  c0168cedd088e2e9a5a07f337acc63c3  gcc/testsuite/gdc.test/fail_compilation/ice9273a.d
  c0748d027ca80dcd3c1826ef09692f1e  gcc/testsuite/gdc.test/fail_compilation/ice9273b.d
  4ab4207341136f2c66f91d255c047732  gcc/testsuite/gdc.test/fail_compilation/ice9284.d
  5c1b7a696de91f0fac6d8de5c8e96d1d  gcc/testsuite/gdc.test/fail_compilation/ice9291.d
  8ee1a73207f2a559dc4eb4319ced5fd5  gcc/testsuite/gdc.test/fail_compilation/ice9338.d
  af5221c169864139df80561cf6490347  gcc/testsuite/gdc.test/fail_compilation/ice9406.d
! ef88160070a6b49812fd6ef7a6061ed4  gcc/testsuite/gdc.test/fail_compilation/ice9439.d
  cdacde04da8f4e538ea5d87654ac8751  gcc/testsuite/gdc.test/fail_compilation/ice9494.d
! c65d13e97ef5cb53a53c31ae51abf7d9  gcc/testsuite/gdc.test/fail_compilation/ice9540.d
  e0d2808adb4bd406595bf16363d64560  gcc/testsuite/gdc.test/fail_compilation/ice9545.d
  a80826c048e9b023fb1e48c619781ee4  gcc/testsuite/gdc.test/fail_compilation/ice9759.d
  73cecf4fc16cfdf696ea6d651d1b445b  gcc/testsuite/gdc.test/fail_compilation/ice9806.d
*************** ec9b9fe7bca7c9541f241827fd8ad89f  gcc/te
*** 76908,76920 ****
  a9e5573273539822af9f48e0ccfb14f3  gcc/testsuite/gdc.test/fail_compilation/imports/fail21001b.d
  419fedfe2335a76585a8af3dd9d428c5  gcc/testsuite/gdc.test/fail_compilation/imports/fail21275a.d
  499b2bf2eca48658e6fbe3445325b9e1  gcc/testsuite/gdc.test/fail_compilation/imports/fail2962a.d
! 1dcba1afc06e2f95acb4da948dfc6f45  gcc/testsuite/gdc.test/fail_compilation/imports/fail320a.d
! aabcb329f3cf87535468cc2ead408136  gcc/testsuite/gdc.test/fail_compilation/imports/fail320b.d
  ff8e3add3c4375b04393f918dd87409f  gcc/testsuite/gdc.test/fail_compilation/imports/fail347a.d
  59f6096175f131f303282ccbefca47e2  gcc/testsuite/gdc.test/fail_compilation/imports/fail355.d
  c9b71f92e110161450c12dd3d39ef201  gcc/testsuite/gdc.test/fail_compilation/imports/fail356.d
  a5496d52f55546980cc281b7ea638859  gcc/testsuite/gdc.test/fail_compilation/imports/fail4479.d
  2b5b48518b494849e46abbdb4943f387  gcc/testsuite/gdc.test/fail_compilation/imports/fail5385.d
  32705ded4b1d98cefe1d05ba75ded723  gcc/testsuite/gdc.test/fail_compilation/imports/foo10727a.d
  a39b86e5f0b2e3c3a700dd9583af8dea  gcc/testsuite/gdc.test/fail_compilation/imports/foo10727b.d
  994b7aa58bf38db54b3985f62f422db7  gcc/testsuite/gdc.test/fail_compilation/imports/i20057.d
--- 82068,82081 ----
  a9e5573273539822af9f48e0ccfb14f3  gcc/testsuite/gdc.test/fail_compilation/imports/fail21001b.d
  419fedfe2335a76585a8af3dd9d428c5  gcc/testsuite/gdc.test/fail_compilation/imports/fail21275a.d
  499b2bf2eca48658e6fbe3445325b9e1  gcc/testsuite/gdc.test/fail_compilation/imports/fail2962a.d
! 1a308922e978f788f98d5aba3bf032e8  gcc/testsuite/gdc.test/fail_compilation/imports/fail320a.d
! 3cd5e4b04b63c2133c7e6de49e4e97a1  gcc/testsuite/gdc.test/fail_compilation/imports/fail320b.d
  ff8e3add3c4375b04393f918dd87409f  gcc/testsuite/gdc.test/fail_compilation/imports/fail347a.d
  59f6096175f131f303282ccbefca47e2  gcc/testsuite/gdc.test/fail_compilation/imports/fail355.d
  c9b71f92e110161450c12dd3d39ef201  gcc/testsuite/gdc.test/fail_compilation/imports/fail356.d
  a5496d52f55546980cc281b7ea638859  gcc/testsuite/gdc.test/fail_compilation/imports/fail4479.d
  2b5b48518b494849e46abbdb4943f387  gcc/testsuite/gdc.test/fail_compilation/imports/fail5385.d
+ 2dba8663710ea5ff13e79f1c190abbfe  gcc/testsuite/gdc.test/fail_compilation/imports/fail7372.d
  32705ded4b1d98cefe1d05ba75ded723  gcc/testsuite/gdc.test/fail_compilation/imports/foo10727a.d
  a39b86e5f0b2e3c3a700dd9583af8dea  gcc/testsuite/gdc.test/fail_compilation/imports/foo10727b.d
  994b7aa58bf38db54b3985f62f422db7  gcc/testsuite/gdc.test/fail_compilation/imports/i20057.d
*************** bcb928821f462337afe2f7bcc3727525  gcc/te
*** 76943,76948 ****
--- 82104,82110 ----
  c1d1d74046f5a2e29b3546ad753f2ff9  gcc/testsuite/gdc.test/fail_compilation/imports/imp21832.d
  026d5907622ea30bbf7ac6d24005ea60  gcc/testsuite/gdc.test/fail_compilation/imports/imp22329.d
  18f00970401f9324b0b917e5986e2c2a  gcc/testsuite/gdc.test/fail_compilation/imports/imp22749.c
+ 4af51f1564b143cbbefcdd992ae0134d  gcc/testsuite/gdc.test/fail_compilation/imports/import15525.d
  e088c9d3f927d47f3540962f20d13d70  gcc/testsuite/gdc.test/fail_compilation/imports/import21508.d
  6f7cfcaba1d8e75474105c4a6e6ef15f  gcc/testsuite/gdc.test/fail_compilation/imports/issue21295ast_node.d
  6c539ca4211f778c4ce881979c32423e  gcc/testsuite/gdc.test/fail_compilation/imports/issue21295astcodegen.d
*************** f23cb0fd3d8eec3ebf2e0c1922bc5dca  gcc/te
*** 77007,77035 ****
  e204ad88ee968daaed8e8d39426a553d  gcc/testsuite/gdc.test/fail_compilation/imports/test5412b.d
  4723b74a84cbce02c7ab73c3649dde70  gcc/testsuite/gdc.test/fail_compilation/imports/test64a.d
  6fa3d032ace51698c299d55e536e12df  gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d
  fce681bb0ca8dad5487bd5cf765fcdf5  gcc/testsuite/gdc.test/fail_compilation/issue15103.d
! 45280fe05b89003c24c2e4f21c6a83f7  gcc/testsuite/gdc.test/fail_compilation/issue16020.d
  2f9bc5d5c09e9359050941a93279ef33  gcc/testsuite/gdc.test/fail_compilation/issue20422.d
  c8588a8b31371e3131bc1cc2a02c19cd  gcc/testsuite/gdc.test/fail_compilation/issue20627.d
  a48495a89ed7124cc0f6e4236d722d04  gcc/testsuite/gdc.test/fail_compilation/issue20704.d
  228c0e856fef257f01690c217369e065  gcc/testsuite/gdc.test/fail_compilation/issue21203.d
  e5a789aee346b0176c7893f97233f1f3  gcc/testsuite/gdc.test/fail_compilation/issue21295.d
! f0bb81c2a0813354da08269232f62b6c  gcc/testsuite/gdc.test/fail_compilation/issue21378.d
  0acc4638d072c88a35d969c43eb7816a  gcc/testsuite/gdc.test/fail_compilation/issue21685_main.d
  05250fe726a80770dd7390818c7b0e6d  gcc/testsuite/gdc.test/fail_compilation/issue22820.d
  7361ba00652a7bb222f77b6d44a96921  gcc/testsuite/gdc.test/fail_compilation/issue22826.d
! 86ae9dad48ed8042c7af8aced8b378ca  gcc/testsuite/gdc.test/fail_compilation/issue3827.d
! e37a8c60187f92dfc590118ce4d6f292  gcc/testsuite/gdc.test/fail_compilation/lexer1.d
  4d4c303b3d4d2ad597f6da1321158dcb  gcc/testsuite/gdc.test/fail_compilation/lexer2.d
  1b0ba9e5ad50d6b299ef210908b26e3e  gcc/testsuite/gdc.test/fail_compilation/lexer3.d
  2db3bcb168136bf3c248709150bf76f5  gcc/testsuite/gdc.test/fail_compilation/lexer4.d
  33f5d6db48c660b840a5a69a56079500  gcc/testsuite/gdc.test/fail_compilation/lookup.d
  338c9d9e082bb433d33a8ce50efb3e33  gcc/testsuite/gdc.test/fail_compilation/mangle1.d
  be5e933601ad80e3e77222d915fcb11b  gcc/testsuite/gdc.test/fail_compilation/mangle2.d
! 256544650b0e9e213678a91a1c30c6a8  gcc/testsuite/gdc.test/fail_compilation/misc1.d
! 0abe66c23e307b7b338a39481c8c1a1f  gcc/testsuite/gdc.test/fail_compilation/misc_parser_err_cov1.d
  ecd7a73e2fa554a62e68917642aafebd  gcc/testsuite/gdc.test/fail_compilation/mixin.d
  f96c464b4446946a260985b08542d13f  gcc/testsuite/gdc.test/fail_compilation/mixin_gc.d
  9a9e855b3c4e43d0edad873da941ffd5  gcc/testsuite/gdc.test/fail_compilation/mixintype2.d
  fe4d6368a23906f4ace80748ad73d9aa  gcc/testsuite/gdc.test/fail_compilation/moduleundefuda.d
  4d0c974f54ebb51dd423d89afef1d40d  gcc/testsuite/gdc.test/fail_compilation/must_use.d
--- 82169,82201 ----
  e204ad88ee968daaed8e8d39426a553d  gcc/testsuite/gdc.test/fail_compilation/imports/test5412b.d
  4723b74a84cbce02c7ab73c3649dde70  gcc/testsuite/gdc.test/fail_compilation/imports/test64a.d
  6fa3d032ace51698c299d55e536e12df  gcc/testsuite/gdc.test/fail_compilation/isreturnonstack.d
+ 9242f94170262e7e055178f7946b2457  gcc/testsuite/gdc.test/fail_compilation/issue12652.d
  fce681bb0ca8dad5487bd5cf765fcdf5  gcc/testsuite/gdc.test/fail_compilation/issue15103.d
! c003026342dc2c4da0594ccb51341bd2  gcc/testsuite/gdc.test/fail_compilation/issue16020.d
  2f9bc5d5c09e9359050941a93279ef33  gcc/testsuite/gdc.test/fail_compilation/issue20422.d
  c8588a8b31371e3131bc1cc2a02c19cd  gcc/testsuite/gdc.test/fail_compilation/issue20627.d
  a48495a89ed7124cc0f6e4236d722d04  gcc/testsuite/gdc.test/fail_compilation/issue20704.d
  228c0e856fef257f01690c217369e065  gcc/testsuite/gdc.test/fail_compilation/issue21203.d
  e5a789aee346b0176c7893f97233f1f3  gcc/testsuite/gdc.test/fail_compilation/issue21295.d
! aaacbe0abd96d4ce739e14a25d356bbd  gcc/testsuite/gdc.test/fail_compilation/issue21378.d
  0acc4638d072c88a35d969c43eb7816a  gcc/testsuite/gdc.test/fail_compilation/issue21685_main.d
  05250fe726a80770dd7390818c7b0e6d  gcc/testsuite/gdc.test/fail_compilation/issue22820.d
  7361ba00652a7bb222f77b6d44a96921  gcc/testsuite/gdc.test/fail_compilation/issue22826.d
! 04d180b470676e31d8579754e2e55b77  gcc/testsuite/gdc.test/fail_compilation/issue3827.d
! e063db9dd78e2b2cc9abf4e797399c2c  gcc/testsuite/gdc.test/fail_compilation/lexer1.d
  4d4c303b3d4d2ad597f6da1321158dcb  gcc/testsuite/gdc.test/fail_compilation/lexer2.d
+ 4983c84ec37388c5dc781b0f173ac8c5  gcc/testsuite/gdc.test/fail_compilation/lexer23465.d
  1b0ba9e5ad50d6b299ef210908b26e3e  gcc/testsuite/gdc.test/fail_compilation/lexer3.d
  2db3bcb168136bf3c248709150bf76f5  gcc/testsuite/gdc.test/fail_compilation/lexer4.d
  33f5d6db48c660b840a5a69a56079500  gcc/testsuite/gdc.test/fail_compilation/lookup.d
  338c9d9e082bb433d33a8ce50efb3e33  gcc/testsuite/gdc.test/fail_compilation/mangle1.d
  be5e933601ad80e3e77222d915fcb11b  gcc/testsuite/gdc.test/fail_compilation/mangle2.d
! 5737030620413877d8b752cc8b00b537  gcc/testsuite/gdc.test/fail_compilation/misc1.d
! 4310dda0761465b6769607f814c960c5  gcc/testsuite/gdc.test/fail_compilation/misc_parser_err_cov1.d
  ecd7a73e2fa554a62e68917642aafebd  gcc/testsuite/gdc.test/fail_compilation/mixin.d
  f96c464b4446946a260985b08542d13f  gcc/testsuite/gdc.test/fail_compilation/mixin_gc.d
+ e989bc20ccc902b7b13e1fb834ef6d37  gcc/testsuite/gdc.test/fail_compilation/mixin_template.d
+ d50551164659b796b1cc9810a3144d7b  gcc/testsuite/gdc.test/fail_compilation/mixinprop.d
  9a9e855b3c4e43d0edad873da941ffd5  gcc/testsuite/gdc.test/fail_compilation/mixintype2.d
  fe4d6368a23906f4ace80748ad73d9aa  gcc/testsuite/gdc.test/fail_compilation/moduleundefuda.d
  4d0c974f54ebb51dd423d89afef1d40d  gcc/testsuite/gdc.test/fail_compilation/must_use.d
*************** fe4d6368a23906f4ace80748ad73d9aa  gcc/te
*** 77038,77053 ****
  15d90fcac6117dd6570d4a46b94403c8  gcc/testsuite/gdc.test/fail_compilation/must_use_reserved.d
  3b5523de4749c7d852011ec85e276c84  gcc/testsuite/gdc.test/fail_compilation/must_use_template.d
  58c5aee0e2a980b40b64d7c83f667cb6  gcc/testsuite/gdc.test/fail_compilation/must_use_union.d
  b47a909efceefac8899d962744b5b318  gcc/testsuite/gdc.test/fail_compilation/nestedtempl0.d
  00d364e25fcaf6b250d8958d34c226a5  gcc/testsuite/gdc.test/fail_compilation/nestedtempl1.d
  009ce5939a45dfaebc026fc5256f08fc  gcc/testsuite/gdc.test/fail_compilation/nestedtempl2.d
  e19e18fdbf14770d50e71cc08c1f3e79  gcc/testsuite/gdc.test/fail_compilation/nestedtempl3.d
! fdff8e41e2ca89123fe1f09faa34f99d  gcc/testsuite/gdc.test/fail_compilation/no_Throwable.d
  03d3eb72cf3b9da1f6f78b59f1503820  gcc/testsuite/gdc.test/fail_compilation/no_TypeInfo.d
  574b4fb906e7841e0b58f09b1448996b  gcc/testsuite/gdc.test/fail_compilation/nogc1.d
! d656975780f981c64bdaf92c40f83ab3  gcc/testsuite/gdc.test/fail_compilation/nogc2.d
! 8853f613c60846a9a57720a8eaa11595  gcc/testsuite/gdc.test/fail_compilation/nogc3.d
! 55f2896282e57e35608708cc85c30bbc  gcc/testsuite/gdc.test/fail_compilation/noreturn.d
  d8140f365a7b17fa364fd93df13595ea  gcc/testsuite/gdc.test/fail_compilation/noreturn2.d
  5f0e133c486a33c48c252858bcdd4604  gcc/testsuite/gdc.test/fail_compilation/notype.d
  066d50ff15946cfb273bb4728251cc04  gcc/testsuite/gdc.test/fail_compilation/objc_class2.d
--- 82204,82223 ----
  15d90fcac6117dd6570d4a46b94403c8  gcc/testsuite/gdc.test/fail_compilation/must_use_reserved.d
  3b5523de4749c7d852011ec85e276c84  gcc/testsuite/gdc.test/fail_compilation/must_use_template.d
  58c5aee0e2a980b40b64d7c83f667cb6  gcc/testsuite/gdc.test/fail_compilation/must_use_union.d
+ 53319f6bde8a56f7038ece78519f18ed  gcc/testsuite/gdc.test/fail_compilation/named_arguments_error.d
+ 43f2f6f1138b146d2f2aaa419c6bdf82  gcc/testsuite/gdc.test/fail_compilation/named_arguments_overload.d
+ 93a5883fd2e1d9f06ecc5d9ec212b59b  gcc/testsuite/gdc.test/fail_compilation/named_arguments_parse.d
  b47a909efceefac8899d962744b5b318  gcc/testsuite/gdc.test/fail_compilation/nestedtempl0.d
  00d364e25fcaf6b250d8958d34c226a5  gcc/testsuite/gdc.test/fail_compilation/nestedtempl1.d
  009ce5939a45dfaebc026fc5256f08fc  gcc/testsuite/gdc.test/fail_compilation/nestedtempl2.d
  e19e18fdbf14770d50e71cc08c1f3e79  gcc/testsuite/gdc.test/fail_compilation/nestedtempl3.d
! 7701dad5e0cc1f28e722505769536707  gcc/testsuite/gdc.test/fail_compilation/newaa.d
! ab6d443dc3b56b7483fbf6f157f18a25  gcc/testsuite/gdc.test/fail_compilation/no_Throwable.d
  03d3eb72cf3b9da1f6f78b59f1503820  gcc/testsuite/gdc.test/fail_compilation/no_TypeInfo.d
  574b4fb906e7841e0b58f09b1448996b  gcc/testsuite/gdc.test/fail_compilation/nogc1.d
! 67a29f7c0b0b41a44304a83df22fe69a  gcc/testsuite/gdc.test/fail_compilation/nogc2.d
! 6be4bf22c1f2071c9514459ea9e11180  gcc/testsuite/gdc.test/fail_compilation/nogc3.d
! 355b1c8dd53687b2e1a8eda4bf5839da  gcc/testsuite/gdc.test/fail_compilation/noreturn.d
  d8140f365a7b17fa364fd93df13595ea  gcc/testsuite/gdc.test/fail_compilation/noreturn2.d
  5f0e133c486a33c48c252858bcdd4604  gcc/testsuite/gdc.test/fail_compilation/notype.d
  066d50ff15946cfb273bb4728251cc04  gcc/testsuite/gdc.test/fail_compilation/objc_class2.d
*************** b776e292ca10ada1f22be845f91295f1  gcc/te
*** 77066,77074 ****
  a24e5adcec9c683ee389ab4bc66da146  gcc/testsuite/gdc.test/fail_compilation/parseStc3.d
  4585f217a5b7f8b8a09b84af0dbe2331  gcc/testsuite/gdc.test/fail_compilation/parseStc4.d
  d5b5218a5830b17dea35dac53b8ca8eb  gcc/testsuite/gdc.test/fail_compilation/parseStc5.d
! 8015ba3a9001818b52bd0ac3876401a7  gcc/testsuite/gdc.test/fail_compilation/pragmainline.d
! 6a300426bd41c403f16ef70ef4452bdd  gcc/testsuite/gdc.test/fail_compilation/pragmas.d
! 3b6c4b34df90d11af12eee73ffb3605a  gcc/testsuite/gdc.test/fail_compilation/previewin.d
  93e29273b61b90ecaf1f9b852538f7ca  gcc/testsuite/gdc.test/fail_compilation/protattr1.d
  39580b47e16e03fa696b3ed195381f0f  gcc/testsuite/gdc.test/fail_compilation/protattr2.d
  4807590bdc410e8cbce87fc3a1702bf7  gcc/testsuite/gdc.test/fail_compilation/protattr3.d
--- 82236,82245 ----
  a24e5adcec9c683ee389ab4bc66da146  gcc/testsuite/gdc.test/fail_compilation/parseStc3.d
  4585f217a5b7f8b8a09b84af0dbe2331  gcc/testsuite/gdc.test/fail_compilation/parseStc4.d
  d5b5218a5830b17dea35dac53b8ca8eb  gcc/testsuite/gdc.test/fail_compilation/parseStc5.d
! 43ab37c4d5efd97e06d285a38b720f23  gcc/testsuite/gdc.test/fail_compilation/pragmainline.d
! e49bfec7810167930a92f6d650f222f0  gcc/testsuite/gdc.test/fail_compilation/pragmas.d
! aa094233f53136c8619a243d78d56b1a  gcc/testsuite/gdc.test/fail_compilation/previewin.d
! e9591afbb23d08ca6fcc7528a818e61e  gcc/testsuite/gdc.test/fail_compilation/previewin2.d
  93e29273b61b90ecaf1f9b852538f7ca  gcc/testsuite/gdc.test/fail_compilation/protattr1.d
  39580b47e16e03fa696b3ed195381f0f  gcc/testsuite/gdc.test/fail_compilation/protattr2.d
  4807590bdc410e8cbce87fc3a1702bf7  gcc/testsuite/gdc.test/fail_compilation/protattr3.d
*************** f94f5f9027598b10a0c7aa36cd12574d  gcc/te
*** 77077,77247 ****
  9d01f4975a479fc715251f6173ce5c4c  gcc/testsuite/gdc.test/fail_compilation/protection/subpkg/test3.d
  aaf16b2b47d55960cd3ce0a1218b3ac3  gcc/testsuite/gdc.test/fail_compilation/pull12941.d
  3fd870b41855f158c759eee9a2348829  gcc/testsuite/gdc.test/fail_compilation/reg6769.d
! a171d38a0c66c39452315b4d5cfa6d7c  gcc/testsuite/gdc.test/fail_compilation/reserved_version.d
! d55e508e1bdcf1023100731dcd2325b0  gcc/testsuite/gdc.test/fail_compilation/reserved_version_switch.d
  79d64fe25139665f2fbbbde225eef007  gcc/testsuite/gdc.test/fail_compilation/retref2.d
! 317ccdf8cd1ee09f9a6aa3f2587c0e9a  gcc/testsuite/gdc.test/fail_compilation/retscope.d
! ebcb9b34559e1103c80f4a35e324e070  gcc/testsuite/gdc.test/fail_compilation/retscope2.d
  a2f171ad836e22fad2ea633dbe12b634  gcc/testsuite/gdc.test/fail_compilation/retscope3.d
  c6c07f896e1602e3555f770e5cb6de5e  gcc/testsuite/gdc.test/fail_compilation/retscope4.d
  e024cf081dccb576f3cc704719ad8a79  gcc/testsuite/gdc.test/fail_compilation/retscope5.d
! c6e349540dd9e84f2da6d7a52e5df12b  gcc/testsuite/gdc.test/fail_compilation/retscope6.d
  04ebc00459c94492ff1769f6fa7b05f7  gcc/testsuite/gdc.test/fail_compilation/scope_class.d
  7844f07f212a32fbdcd7af5fc71a02e9  gcc/testsuite/gdc.test/fail_compilation/scope_type.d
! 7512e9ce22afd564de5e40b0bfa82067  gcc/testsuite/gdc.test/fail_compilation/shared.d
  1f8678bdbd19a9e3e714df9f783053ce  gcc/testsuite/gdc.test/fail_compilation/skip.d
  b0deda56d15b9fb7160c198b0d3ea6d3  gcc/testsuite/gdc.test/fail_compilation/spell9644.d
  0ffae6cead9563b1a55aed6c6d6707cd  gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
  1fcc8aaa8f4d74a4f1abe57e47cfd353  gcc/testsuite/gdc.test/fail_compilation/staticforeach1.d
  69da8fec6e17cf06c0720278a97abb96  gcc/testsuite/gdc.test/fail_compilation/staticforeach2.d
  bb6598a0d52b49923b14222dee510692  gcc/testsuite/gdc.test/fail_compilation/staticforeach3.d
  5fc86afe292de65847c2d5b768bc361e  gcc/testsuite/gdc.test/fail_compilation/staticforeach4.d
  7cfd30303d9dda9af3a3d9738a04688d  gcc/testsuite/gdc.test/fail_compilation/switches.d
  82097814cc50105a55a7ef8ecc8b9a03  gcc/testsuite/gdc.test/fail_compilation/test1.d
  63f139f45a6e15e188c3b11fc538355b  gcc/testsuite/gdc.test/fail_compilation/test10.d
  305adce56f0df00c5b7b911cd52ea3fb  gcc/testsuite/gdc.test/fail_compilation/test1021.d
  29c1ebc101d5206922382dcc0a32676e  gcc/testsuite/gdc.test/fail_compilation/test11006.d
  6fea622afbaede137af90ea3be9d92da  gcc/testsuite/gdc.test/fail_compilation/test11047.d
  0c916e3262d1ea80afb9087dfb7836e9  gcc/testsuite/gdc.test/fail_compilation/test11176.d
! c4f92f7f1936ce720dc0b22cb66d46fd  gcc/testsuite/gdc.test/fail_compilation/test12228.d
  85d57b27608d5d1c328cc850a806d070  gcc/testsuite/gdc.test/fail_compilation/test12385.d
  01470bdf2abf34f431e989d0f125bcad  gcc/testsuite/gdc.test/fail_compilation/test12558.d
  d3a376056eec3d995dfadab9d07349eb  gcc/testsuite/gdc.test/fail_compilation/test12822.d
  65bf6828b6933ad9338fde788fa23308  gcc/testsuite/gdc.test/fail_compilation/test13152.d
! 5373d9986883a27078f4619d36b771ef  gcc/testsuite/gdc.test/fail_compilation/test13536.d
  6e5df77b9bbcf8f3f6aba086066048b2  gcc/testsuite/gdc.test/fail_compilation/test13537.d
  eb86a3dc5c2a6e231593c5b6568bbc49  gcc/testsuite/gdc.test/fail_compilation/test13667.d
! db592e9a6de841cf529b94507c878bfe  gcc/testsuite/gdc.test/fail_compilation/test13786.d
  dc5f6694b899c5b4017bfc9931164527  gcc/testsuite/gdc.test/fail_compilation/test13867.d
  2be07367077526f2bb6da860b9b81128  gcc/testsuite/gdc.test/fail_compilation/test14064.d
! 0c5411d57eb834f6d271bc3a05061295  gcc/testsuite/gdc.test/fail_compilation/test14238.d
  3fd9f21ffc0d2cd25d288f630210d963  gcc/testsuite/gdc.test/fail_compilation/test143.d
! efa4a736ea4b35b9e942d8f134f4f3d3  gcc/testsuite/gdc.test/fail_compilation/test14496.d
  94cf39bd34fa549c98adb3304ccf81cd  gcc/testsuite/gdc.test/fail_compilation/test14538.d
  0811c0a4dbd9bffec8230d6e2a5a6c01  gcc/testsuite/gdc.test/fail_compilation/test15177.d
! 057e53699344513de85f8bace19aa5d3  gcc/testsuite/gdc.test/fail_compilation/test15191.d
  6a905045175c0f489c5b3aeb041eabb6  gcc/testsuite/gdc.test/fail_compilation/test15306.d
! 90a7247f40457f86ba8fad930ce3509b  gcc/testsuite/gdc.test/fail_compilation/test15373.d
  bac5787c7029498c07f5076c5807bf2d  gcc/testsuite/gdc.test/fail_compilation/test15399.d
  729b6db37d0ce68b19199d351add21e2  gcc/testsuite/gdc.test/fail_compilation/test15544.d
! 0abfb2e299ff7ed2545bc70496d0c101  gcc/testsuite/gdc.test/fail_compilation/test15660.d
  94b6b52023f65f4ac04f78a28068dd29  gcc/testsuite/gdc.test/fail_compilation/test15672.d
  f2e9c5245c8a38d42dd78e38f8a5e42f  gcc/testsuite/gdc.test/fail_compilation/test15703.d
  977db354a89e574f7316667596a484dd  gcc/testsuite/gdc.test/fail_compilation/test15704.d
! a4b1ec106c1d62ef79687e151fcdf9b8  gcc/testsuite/gdc.test/fail_compilation/test15785.d
  d1333de570b9babff543dfaf034537b6  gcc/testsuite/gdc.test/fail_compilation/test15785b.d
! aab1c46fa1e6c2742d4f6074a0d483e7  gcc/testsuite/gdc.test/fail_compilation/test15897.d
  9abfc5bd4dee2b4e29f7125683c4cc06  gcc/testsuite/gdc.test/fail_compilation/test15925.d
  34f69908ea5a0909d9fb282d88f4e272  gcc/testsuite/gdc.test/fail_compilation/test15989.d
  d1adfc9174aa950f68215afdfe2e8b10  gcc/testsuite/gdc.test/fail_compilation/test16095.d
  66fc24a8ca5e79401240720959999b8a  gcc/testsuite/gdc.test/fail_compilation/test16116.d
! 9af64f23b23c59c9dd9c829a96ab20e1  gcc/testsuite/gdc.test/fail_compilation/test16188.d
! 90da4daa549886a11d3a56efa72133f5  gcc/testsuite/gdc.test/fail_compilation/test16193.d
  7e69c14bf5d6715448a1e70e55ff1e92  gcc/testsuite/gdc.test/fail_compilation/test16195.d
  e5b046140d8851a5d422294abc065485  gcc/testsuite/gdc.test/fail_compilation/test16228.d
  03f0d7df123861dc23fb282e1a4a844f  gcc/testsuite/gdc.test/fail_compilation/test16284.d
! 20d725218db0aa6db8e2e5e32edd0e65  gcc/testsuite/gdc.test/fail_compilation/test16365.d
  33933620d92be6e81861940d59ca3585  gcc/testsuite/gdc.test/fail_compilation/test16381.d
  e0a809992bf27ecb5271695352b3ac48  gcc/testsuite/gdc.test/fail_compilation/test16523.d
  2377981f9d46da4831624a8caf1db7d8  gcc/testsuite/gdc.test/fail_compilation/test16589.d
  86569ab8185a8567150068a8b7844fd6  gcc/testsuite/gdc.test/fail_compilation/test16694.d
! 8a1e1c8ebc97ba6532defbe55f9c4728  gcc/testsuite/gdc.test/fail_compilation/test17096.d
! 841cb043d71b59bcb34c8b42bf8098d1  gcc/testsuite/gdc.test/fail_compilation/test17284.d
  5a27a426fc0054795467c4c6257ec60a  gcc/testsuite/gdc.test/fail_compilation/test17307.d
  3b214d273aa841f50cc8a1e86597be18  gcc/testsuite/gdc.test/fail_compilation/test17380.d
! 88b8e301245a723dbb7d0aa24f6faedf  gcc/testsuite/gdc.test/fail_compilation/test17380spec.d
  f61bc9deb751473044d9409319fb74bb  gcc/testsuite/gdc.test/fail_compilation/test17422.d
! 8210959008933d901c312feabdc17f9f  gcc/testsuite/gdc.test/fail_compilation/test17423.d
  c0d67198dbf86e2d1c77c70a61959cda  gcc/testsuite/gdc.test/fail_compilation/test17425.d
! 5c7c062e852aaa7298e80d47c0383d78  gcc/testsuite/gdc.test/fail_compilation/test17450.d
! 393902c2443bef8d11f38f4f4b712490  gcc/testsuite/gdc.test/fail_compilation/test17451.d
  007e8f7be0caa67ef13dbf76d94596f3  gcc/testsuite/gdc.test/fail_compilation/test17586.d
  17574606dae13807ad0677b7e9eea048  gcc/testsuite/gdc.test/fail_compilation/test17868.d
! d6f82efc092fec926b48bc9ed90adf09  gcc/testsuite/gdc.test/fail_compilation/test17868b.d
  4092ca8954505900e27e406d1e0d039c  gcc/testsuite/gdc.test/fail_compilation/test17892.d
  47fc9c265bc4fd596a224fb51e63e09c  gcc/testsuite/gdc.test/fail_compilation/test17908a.d
  f79ff08f6a4f8c6756261d3e8abd2c0b  gcc/testsuite/gdc.test/fail_compilation/test17908b.d
  0c27222ad4d0c3be9c21c7c7b0ea7f3c  gcc/testsuite/gdc.test/fail_compilation/test17959.d
  990f65972e725824cce49c4bcb2fcc6b  gcc/testsuite/gdc.test/fail_compilation/test17977.d
! 680bf8a5e48eb1a37ba89976f91dd2b6  gcc/testsuite/gdc.test/fail_compilation/test18130.d
! 95c9b855be54d021d170fd8940157382  gcc/testsuite/gdc.test/fail_compilation/test18282.d
  a7a660644aa3a898b18641bb0128e405  gcc/testsuite/gdc.test/fail_compilation/test18312.d
  4d26a540c7d1043abe4bb6052d32b221  gcc/testsuite/gdc.test/fail_compilation/test18385.d
  b1e87e5ca0e90a2ae9b8cded872c77b0  gcc/testsuite/gdc.test/fail_compilation/test18385b.d
  eb13c0e63193ee8c64f5e8544473c951  gcc/testsuite/gdc.test/fail_compilation/test18480.d
! 305a3dc0101b29226096942f06ded414  gcc/testsuite/gdc.test/fail_compilation/test18484.d
  48c8c1dc147dd27ac280e47d2b545b6a  gcc/testsuite/gdc.test/fail_compilation/test18597.d
  37d894d9ec4b42c2dbf3166de0530bb3  gcc/testsuite/gdc.test/fail_compilation/test18607.d
  2e0bf259be5ba60d2c4f7362ea492122  gcc/testsuite/gdc.test/fail_compilation/test18644.d
  b082b2bf9129db74cd10287209671a96  gcc/testsuite/gdc.test/fail_compilation/test18708.d
  984b16fc115a2ec34207e0d4e75e25df  gcc/testsuite/gdc.test/fail_compilation/test18736.d
! 1240f333997e37011a3415bdbd937808  gcc/testsuite/gdc.test/fail_compilation/test19097.d
  70ca9d9c0e3946790cc48e57d110a810  gcc/testsuite/gdc.test/fail_compilation/test19107.d
  966a5125951332c08a39ca7ebbd05c02  gcc/testsuite/gdc.test/fail_compilation/test19112.d
  8fe10b91500fba0e91b654fe48dd3d51  gcc/testsuite/gdc.test/fail_compilation/test19176.d
  f97e2d15a019a647e1e8ce539445f818  gcc/testsuite/gdc.test/fail_compilation/test19193.d
  b10055535f91e5f4101a27318f808c5e  gcc/testsuite/gdc.test/fail_compilation/test19473.d
  67abd3b15509154f2ad168138e069892  gcc/testsuite/gdc.test/fail_compilation/test19608.d
! bbc36165fa0ba58a16c0c253c473058c  gcc/testsuite/gdc.test/fail_compilation/test19646.d
  606379c092762843ab10257254f91d9b  gcc/testsuite/gdc.test/fail_compilation/test19661.d
  34e81e64d83e9bfdbbdf48642119d09a  gcc/testsuite/gdc.test/fail_compilation/test19971.d
  38ecb4a91c2ce2571d77866385a588c9  gcc/testsuite/gdc.test/fail_compilation/test20023.d
  bdc93bd17024fd4d46de7909ff405a11  gcc/testsuite/gdc.test/fail_compilation/test20096.d
  989f382db1d361c966fe47d4b8205d23  gcc/testsuite/gdc.test/fail_compilation/test20149.d
! 9ab9fc4282f7938397da1b789edcd6e6  gcc/testsuite/gdc.test/fail_compilation/test20245.d
  710c352c31a4baca536f7bfad2a41d05  gcc/testsuite/gdc.test/fail_compilation/test20267.d
  d5c3623a103182544da82c93b4634f62  gcc/testsuite/gdc.test/fail_compilation/test20324.d
  67055ecd3df8ca389c004a12d2eb7d68  gcc/testsuite/gdc.test/fail_compilation/test20383.d
  384652f7c502f0235624ad7b7ea50a47  gcc/testsuite/gdc.test/fail_compilation/test20515.d
! 954aa3786c680600aeab789341c03fa8  gcc/testsuite/gdc.test/fail_compilation/test20549.d
  c20d2e44234601fb7a1e6695ac301613  gcc/testsuite/gdc.test/fail_compilation/test20565.d
! 0fb9e694e313e809c9f7de17b744b562  gcc/testsuite/gdc.test/fail_compilation/test20569.d
  4eafc9affda83afce6c0cc4694dd75d6  gcc/testsuite/gdc.test/fail_compilation/test20610.d
  4b52d7823af93d96b42262173304ca1a  gcc/testsuite/gdc.test/fail_compilation/test20626.d
  e39aff32106ef1915eaef833c26044c1  gcc/testsuite/gdc.test/fail_compilation/test20696.d
! 2f6c506e76aed89ac4c69810f1b7e4c2  gcc/testsuite/gdc.test/fail_compilation/test20719.d
! 8c40ecbab6983575b3c3b54433f279f0  gcc/testsuite/gdc.test/fail_compilation/test20881.d
  b63d81d149ced101cc0047fccfbfbff2  gcc/testsuite/gdc.test/fail_compilation/test20919.d
! 9ec228c5fa202331b64ccb7c400d37c0  gcc/testsuite/gdc.test/fail_compilation/test20998.d
! 939ec29c5a01d2c3cb2f90d09079cc05  gcc/testsuite/gdc.test/fail_compilation/test21008.d
  4aaee6ae450926eaa1c6fa5de9532424  gcc/testsuite/gdc.test/fail_compilation/test21093.d
! 785607e59e845151be7648564e7b233c  gcc/testsuite/gdc.test/fail_compilation/test21096.d
  a2dfda31aa6bb8862b349db8dd7c06f0  gcc/testsuite/gdc.test/fail_compilation/test21164.d
! 123409d89261a588091fd6d8aa06f4cb  gcc/testsuite/gdc.test/fail_compilation/test21198.d
! e66dfe85bdb196d3cba7a443b5e9b540  gcc/testsuite/gdc.test/fail_compilation/test21204.d
  f0d66ee58e1deca85dd1a5c6be72e0fe  gcc/testsuite/gdc.test/fail_compilation/test21246.d
  2fce247ddc6adc1e84f449d7761cc302  gcc/testsuite/gdc.test/fail_compilation/test21259.d
  0eab8d2a17e3211f93dc6c87bf3f5d8c  gcc/testsuite/gdc.test/fail_compilation/test21319.d
  51deaefc23e5419bce319caa9f692ca8  gcc/testsuite/gdc.test/fail_compilation/test21353.d
  a3522f54348a3c5f14028c34c44f5884  gcc/testsuite/gdc.test/fail_compilation/test21380.d
  ec3a327e60b99c4b5c8c64c7ec034e09  gcc/testsuite/gdc.test/fail_compilation/test21443.d
  d89c86b00de50c0eff1176ba2eac046a  gcc/testsuite/gdc.test/fail_compilation/test21518.d
  32963db1864d8e88864b2bc3b4a00399  gcc/testsuite/gdc.test/fail_compilation/test21546.d
  71e1aa25aaa777c4eef2e9d4c47f72c0  gcc/testsuite/gdc.test/fail_compilation/test21651.d
! e3dfb0cf3bf664c0f95e52252e4f3973  gcc/testsuite/gdc.test/fail_compilation/test21665.d
  135b6f0d46b59693d5057115b41c7d0b  gcc/testsuite/gdc.test/fail_compilation/test21807.d
! 39715dd42c347459f6efda8e8a58254e  gcc/testsuite/gdc.test/fail_compilation/test21912.d
  3d30a4f2bab190433f516628a982fbf6  gcc/testsuite/gdc.test/fail_compilation/test21927.d
  00c0a23be93838d8f2a86c097d340a13  gcc/testsuite/gdc.test/fail_compilation/test21930.d
! 9c01bfd7f813ce99b0db70312ff9f837  gcc/testsuite/gdc.test/fail_compilation/test21939.d
  7737d71c94d6416d1a8f6f5b58d44304  gcc/testsuite/gdc.test/fail_compilation/test22023.d
  7caa8b8c863029f2390235af67a58b67  gcc/testsuite/gdc.test/fail_compilation/test22048.d
! 957077322a5bbc117c991abac1d937fe  gcc/testsuite/gdc.test/fail_compilation/test22145.d
  b26bef555817a24ae4467d7dc0636c50  gcc/testsuite/gdc.test/fail_compilation/test22227.d
  72542ae3b6eec0b354faccf5f89e9e9b  gcc/testsuite/gdc.test/fail_compilation/test22298.d
  24d0c61c3bfc25b9e3354787b83bee35  gcc/testsuite/gdc.test/fail_compilation/test22329.d
  acdee90e75d19aa3146056d4a0ea124a  gcc/testsuite/gdc.test/fail_compilation/test22361.d
  7171ffb25dfbfb58138adc21ba50dc84  gcc/testsuite/gdc.test/fail_compilation/test22541.d
  cf139945245bb017eb805da3ff7c09a1  gcc/testsuite/gdc.test/fail_compilation/test22574.d
! 6c15aaa3103d9ba894f43b66f6188b10  gcc/testsuite/gdc.test/fail_compilation/test22593.d
  4ebd40967776126bdeadfab0dc0a7624  gcc/testsuite/gdc.test/fail_compilation/test22686.d
  90ed8b49735b9275543c712461c3827c  gcc/testsuite/gdc.test/fail_compilation/test22709.d
! 1bffd331c1de7611b9612bc951295dc8  gcc/testsuite/gdc.test/fail_compilation/test22818.d
  173ea5f46a0b9730ccb5a67253618146  gcc/testsuite/gdc.test/fail_compilation/test22840.d
  7f1d305e5b6a16823b10905c8acabf9e  gcc/testsuite/gdc.test/fail_compilation/test22910.d
  ae0cd305d2c663e0e5f1c5a00774996d  gcc/testsuite/gdc.test/fail_compilation/test22999.d
  f913115e93868e9a78c9fa781674f313  gcc/testsuite/gdc.test/fail_compilation/test23017.d
  085297059a3feacd1fe0e893b7abf682  gcc/testsuite/gdc.test/fail_compilation/test23170.d
  2dddb119548b8d219ecb2aed67590d4b  gcc/testsuite/gdc.test/fail_compilation/test314.d
  4917bf7731fa8cfa0e714e8761b5e241  gcc/testsuite/gdc.test/fail_compilation/test3818.d
  465b130426028cac7c9bb32cf2f4fdee  gcc/testsuite/gdc.test/fail_compilation/test4682.d
--- 82248,82447 ----
  9d01f4975a479fc715251f6173ce5c4c  gcc/testsuite/gdc.test/fail_compilation/protection/subpkg/test3.d
  aaf16b2b47d55960cd3ce0a1218b3ac3  gcc/testsuite/gdc.test/fail_compilation/pull12941.d
  3fd870b41855f158c759eee9a2348829  gcc/testsuite/gdc.test/fail_compilation/reg6769.d
! 4b46ee75ca4833c72c162b610a0f18cf  gcc/testsuite/gdc.test/fail_compilation/reserved_version.d
! dab8e6c05b2b1f7cf975a2624fadcc84  gcc/testsuite/gdc.test/fail_compilation/reserved_version_switch.d
  79d64fe25139665f2fbbbde225eef007  gcc/testsuite/gdc.test/fail_compilation/retref2.d
! f0ac4c4fe2c7a4a2b0279df278e8b6f5  gcc/testsuite/gdc.test/fail_compilation/retscope.d
! aef068d72f497a6bbacc7517c6a621ae  gcc/testsuite/gdc.test/fail_compilation/retscope2.d
  a2f171ad836e22fad2ea633dbe12b634  gcc/testsuite/gdc.test/fail_compilation/retscope3.d
  c6c07f896e1602e3555f770e5cb6de5e  gcc/testsuite/gdc.test/fail_compilation/retscope4.d
  e024cf081dccb576f3cc704719ad8a79  gcc/testsuite/gdc.test/fail_compilation/retscope5.d
! f8f6a29733e9e9bfe8bd9ca3c703af18  gcc/testsuite/gdc.test/fail_compilation/retscope6.d
! 4e079009624a3abec9e2109e4a5fd577  gcc/testsuite/gdc.test/fail_compilation/safe_gshared.d
! c9b733d0c8306e7d3e07eddfcfc9d5bd  gcc/testsuite/gdc.test/fail_compilation/safe_pointer_index.d
  04ebc00459c94492ff1769f6fa7b05f7  gcc/testsuite/gdc.test/fail_compilation/scope_class.d
  7844f07f212a32fbdcd7af5fc71a02e9  gcc/testsuite/gdc.test/fail_compilation/scope_type.d
! 9c1d5b1eb748599a7d3e3ed1a3af3f93  gcc/testsuite/gdc.test/fail_compilation/shared.d
  1f8678bdbd19a9e3e714df9f783053ce  gcc/testsuite/gdc.test/fail_compilation/skip.d
  b0deda56d15b9fb7160c198b0d3ea6d3  gcc/testsuite/gdc.test/fail_compilation/spell9644.d
  0ffae6cead9563b1a55aed6c6d6707cd  gcc/testsuite/gdc.test/fail_compilation/staticarrayoverflow.d
+ 90ac7d4678db81f3059a28545e140e33  gcc/testsuite/gdc.test/fail_compilation/staticassertargs.d
+ a5194f219d03f8a765cded6944640601  gcc/testsuite/gdc.test/fail_compilation/staticassertargsfail.d
  1fcc8aaa8f4d74a4f1abe57e47cfd353  gcc/testsuite/gdc.test/fail_compilation/staticforeach1.d
  69da8fec6e17cf06c0720278a97abb96  gcc/testsuite/gdc.test/fail_compilation/staticforeach2.d
  bb6598a0d52b49923b14222dee510692  gcc/testsuite/gdc.test/fail_compilation/staticforeach3.d
  5fc86afe292de65847c2d5b768bc361e  gcc/testsuite/gdc.test/fail_compilation/staticforeach4.d
  7cfd30303d9dda9af3a3d9738a04688d  gcc/testsuite/gdc.test/fail_compilation/switches.d
+ f90f5e987f56787a67ef43659503d463  gcc/testsuite/gdc.test/fail_compilation/systemvariables.d
+ 350798e3ce1bc508839f10ef59043167  gcc/testsuite/gdc.test/fail_compilation/systemvariables_deprecation.d
+ 665e393a379cb60efcf1c4fcbe37c287  gcc/testsuite/gdc.test/fail_compilation/systemvariables_struct.d
+ ce0a4f34849b64ff6cb0dd2b094de168  gcc/testsuite/gdc.test/fail_compilation/systemvariables_void_init.d
+ b7a63757f57fa7204f4b4be7f1ba3ee1  gcc/testsuite/gdc.test/fail_compilation/template_decl.d
+ 1db4effe1e14a05bdf23041766b88914  gcc/testsuite/gdc.test/fail_compilation/templateoverload.d
+ f0088c8e1a917d9db5a48111639380ae  gcc/testsuite/gdc.test/fail_compilation/templatethis.d
  82097814cc50105a55a7ef8ecc8b9a03  gcc/testsuite/gdc.test/fail_compilation/test1.d
  63f139f45a6e15e188c3b11fc538355b  gcc/testsuite/gdc.test/fail_compilation/test10.d
  305adce56f0df00c5b7b911cd52ea3fb  gcc/testsuite/gdc.test/fail_compilation/test1021.d
  29c1ebc101d5206922382dcc0a32676e  gcc/testsuite/gdc.test/fail_compilation/test11006.d
  6fea622afbaede137af90ea3be9d92da  gcc/testsuite/gdc.test/fail_compilation/test11047.d
  0c916e3262d1ea80afb9087dfb7836e9  gcc/testsuite/gdc.test/fail_compilation/test11176.d
! 83c2ed4d71d7f8bf4d1c85361d5d3c0c  gcc/testsuite/gdc.test/fail_compilation/test12228.d
  85d57b27608d5d1c328cc850a806d070  gcc/testsuite/gdc.test/fail_compilation/test12385.d
  01470bdf2abf34f431e989d0f125bcad  gcc/testsuite/gdc.test/fail_compilation/test12558.d
  d3a376056eec3d995dfadab9d07349eb  gcc/testsuite/gdc.test/fail_compilation/test12822.d
  65bf6828b6933ad9338fde788fa23308  gcc/testsuite/gdc.test/fail_compilation/test13152.d
! 1e5bd96f458853c5418b9855dd0f86f4  gcc/testsuite/gdc.test/fail_compilation/test13536.d
  6e5df77b9bbcf8f3f6aba086066048b2  gcc/testsuite/gdc.test/fail_compilation/test13537.d
  eb86a3dc5c2a6e231593c5b6568bbc49  gcc/testsuite/gdc.test/fail_compilation/test13667.d
! e303808b44a49a4ba15b549be2fce8a2  gcc/testsuite/gdc.test/fail_compilation/test13786.d
  dc5f6694b899c5b4017bfc9931164527  gcc/testsuite/gdc.test/fail_compilation/test13867.d
  2be07367077526f2bb6da860b9b81128  gcc/testsuite/gdc.test/fail_compilation/test14064.d
! efebff9e81094a893fb2d2aeb23f9a7e  gcc/testsuite/gdc.test/fail_compilation/test14238.d
  3fd9f21ffc0d2cd25d288f630210d963  gcc/testsuite/gdc.test/fail_compilation/test143.d
! 2dc8a10874a8f1d07b904f464c207731  gcc/testsuite/gdc.test/fail_compilation/test14496.d
  94cf39bd34fa549c98adb3304ccf81cd  gcc/testsuite/gdc.test/fail_compilation/test14538.d
  0811c0a4dbd9bffec8230d6e2a5a6c01  gcc/testsuite/gdc.test/fail_compilation/test15177.d
! 214690040cc2fb199c03bae9783ef099  gcc/testsuite/gdc.test/fail_compilation/test15191.d
  6a905045175c0f489c5b3aeb041eabb6  gcc/testsuite/gdc.test/fail_compilation/test15306.d
! 869648d421cf5208b57506e313ad99f3  gcc/testsuite/gdc.test/fail_compilation/test15368.d
! abba9160e3348512b9cfbe906f164025  gcc/testsuite/gdc.test/fail_compilation/test15373.d
  bac5787c7029498c07f5076c5807bf2d  gcc/testsuite/gdc.test/fail_compilation/test15399.d
+ 8a0a50d1cf0e2b5b79530444e6880a4b  gcc/testsuite/gdc.test/fail_compilation/test15525.d
  729b6db37d0ce68b19199d351add21e2  gcc/testsuite/gdc.test/fail_compilation/test15544.d
! ae21ef4b026c9303f3b6b7c5bb52701b  gcc/testsuite/gdc.test/fail_compilation/test15660.d
  94b6b52023f65f4ac04f78a28068dd29  gcc/testsuite/gdc.test/fail_compilation/test15672.d
  f2e9c5245c8a38d42dd78e38f8a5e42f  gcc/testsuite/gdc.test/fail_compilation/test15703.d
  977db354a89e574f7316667596a484dd  gcc/testsuite/gdc.test/fail_compilation/test15704.d
! e7cfaeae87373af4dc789c7dd690b6ff  gcc/testsuite/gdc.test/fail_compilation/test15785.d
  d1333de570b9babff543dfaf034537b6  gcc/testsuite/gdc.test/fail_compilation/test15785b.d
! 467f5a3369764765b585ebf7edcc64b0  gcc/testsuite/gdc.test/fail_compilation/test15897.d
  9abfc5bd4dee2b4e29f7125683c4cc06  gcc/testsuite/gdc.test/fail_compilation/test15925.d
  34f69908ea5a0909d9fb282d88f4e272  gcc/testsuite/gdc.test/fail_compilation/test15989.d
  d1adfc9174aa950f68215afdfe2e8b10  gcc/testsuite/gdc.test/fail_compilation/test16095.d
  66fc24a8ca5e79401240720959999b8a  gcc/testsuite/gdc.test/fail_compilation/test16116.d
! 8369916ba0127a10bc2f3b91ae78bbc3  gcc/testsuite/gdc.test/fail_compilation/test16188.d
! 6b54960b90a6482cb2d48c1367e3a759  gcc/testsuite/gdc.test/fail_compilation/test16193.d
  7e69c14bf5d6715448a1e70e55ff1e92  gcc/testsuite/gdc.test/fail_compilation/test16195.d
  e5b046140d8851a5d422294abc065485  gcc/testsuite/gdc.test/fail_compilation/test16228.d
  03f0d7df123861dc23fb282e1a4a844f  gcc/testsuite/gdc.test/fail_compilation/test16284.d
! 0fa170a8db5f3a0889e86eecc9b19663  gcc/testsuite/gdc.test/fail_compilation/test16365.d
  33933620d92be6e81861940d59ca3585  gcc/testsuite/gdc.test/fail_compilation/test16381.d
+ 1261efe556507f5455a6eb5481b36ef9  gcc/testsuite/gdc.test/fail_compilation/test16495.d
  e0a809992bf27ecb5271695352b3ac48  gcc/testsuite/gdc.test/fail_compilation/test16523.d
  2377981f9d46da4831624a8caf1db7d8  gcc/testsuite/gdc.test/fail_compilation/test16589.d
  86569ab8185a8567150068a8b7844fd6  gcc/testsuite/gdc.test/fail_compilation/test16694.d
! 98abfadab22f6825df1b455b2e0c527c  gcc/testsuite/gdc.test/fail_compilation/test17096.d
! e569dc531cdd60d593b14da3e13af16f  gcc/testsuite/gdc.test/fail_compilation/test17284.d
  5a27a426fc0054795467c4c6257ec60a  gcc/testsuite/gdc.test/fail_compilation/test17307.d
  3b214d273aa841f50cc8a1e86597be18  gcc/testsuite/gdc.test/fail_compilation/test17380.d
! efd0843b440873ba004a989cf895071f  gcc/testsuite/gdc.test/fail_compilation/test17380spec.d
  f61bc9deb751473044d9409319fb74bb  gcc/testsuite/gdc.test/fail_compilation/test17422.d
! d5d139381f270b1126ac7b1aacf81233  gcc/testsuite/gdc.test/fail_compilation/test17423.d
  c0d67198dbf86e2d1c77c70a61959cda  gcc/testsuite/gdc.test/fail_compilation/test17425.d
! a1525f8e9bf2892db99b8912657a4646  gcc/testsuite/gdc.test/fail_compilation/test17450.d
! 53d09ea97c3c7d7cbed07ab23fd326b9  gcc/testsuite/gdc.test/fail_compilation/test17451.d
  007e8f7be0caa67ef13dbf76d94596f3  gcc/testsuite/gdc.test/fail_compilation/test17586.d
+ 0d788325cbe9cc59c429052b764a0d54  gcc/testsuite/gdc.test/fail_compilation/test17764.d
  17574606dae13807ad0677b7e9eea048  gcc/testsuite/gdc.test/fail_compilation/test17868.d
! 5df0fbb85fa23077c6f9655993469dc9  gcc/testsuite/gdc.test/fail_compilation/test17868b.d
  4092ca8954505900e27e406d1e0d039c  gcc/testsuite/gdc.test/fail_compilation/test17892.d
  47fc9c265bc4fd596a224fb51e63e09c  gcc/testsuite/gdc.test/fail_compilation/test17908a.d
  f79ff08f6a4f8c6756261d3e8abd2c0b  gcc/testsuite/gdc.test/fail_compilation/test17908b.d
  0c27222ad4d0c3be9c21c7c7b0ea7f3c  gcc/testsuite/gdc.test/fail_compilation/test17959.d
  990f65972e725824cce49c4bcb2fcc6b  gcc/testsuite/gdc.test/fail_compilation/test17977.d
! 3dedce972ccebf636e59731359e082a2  gcc/testsuite/gdc.test/fail_compilation/test18130.d
! 998848aa62cf82501ad1f7bd28c9e67b  gcc/testsuite/gdc.test/fail_compilation/test18282.d
  a7a660644aa3a898b18641bb0128e405  gcc/testsuite/gdc.test/fail_compilation/test18312.d
  4d26a540c7d1043abe4bb6052d32b221  gcc/testsuite/gdc.test/fail_compilation/test18385.d
  b1e87e5ca0e90a2ae9b8cded872c77b0  gcc/testsuite/gdc.test/fail_compilation/test18385b.d
  eb13c0e63193ee8c64f5e8544473c951  gcc/testsuite/gdc.test/fail_compilation/test18480.d
! a320c4c03bb5aad9729c7905a574a8a2  gcc/testsuite/gdc.test/fail_compilation/test18484.d
  48c8c1dc147dd27ac280e47d2b545b6a  gcc/testsuite/gdc.test/fail_compilation/test18597.d
  37d894d9ec4b42c2dbf3166de0530bb3  gcc/testsuite/gdc.test/fail_compilation/test18607.d
  2e0bf259be5ba60d2c4f7362ea492122  gcc/testsuite/gdc.test/fail_compilation/test18644.d
  b082b2bf9129db74cd10287209671a96  gcc/testsuite/gdc.test/fail_compilation/test18708.d
  984b16fc115a2ec34207e0d4e75e25df  gcc/testsuite/gdc.test/fail_compilation/test18736.d
! c36393b838073c3c64f3025c22b45aea  gcc/testsuite/gdc.test/fail_compilation/test19097.d
  70ca9d9c0e3946790cc48e57d110a810  gcc/testsuite/gdc.test/fail_compilation/test19107.d
  966a5125951332c08a39ca7ebbd05c02  gcc/testsuite/gdc.test/fail_compilation/test19112.d
  8fe10b91500fba0e91b654fe48dd3d51  gcc/testsuite/gdc.test/fail_compilation/test19176.d
  f97e2d15a019a647e1e8ce539445f818  gcc/testsuite/gdc.test/fail_compilation/test19193.d
  b10055535f91e5f4101a27318f808c5e  gcc/testsuite/gdc.test/fail_compilation/test19473.d
  67abd3b15509154f2ad168138e069892  gcc/testsuite/gdc.test/fail_compilation/test19608.d
! 873afea393d5e93c44a340dc0235e641  gcc/testsuite/gdc.test/fail_compilation/test19646.d
  606379c092762843ab10257254f91d9b  gcc/testsuite/gdc.test/fail_compilation/test19661.d
  34e81e64d83e9bfdbbdf48642119d09a  gcc/testsuite/gdc.test/fail_compilation/test19971.d
  38ecb4a91c2ce2571d77866385a588c9  gcc/testsuite/gdc.test/fail_compilation/test20023.d
  bdc93bd17024fd4d46de7909ff405a11  gcc/testsuite/gdc.test/fail_compilation/test20096.d
  989f382db1d361c966fe47d4b8205d23  gcc/testsuite/gdc.test/fail_compilation/test20149.d
! c8528ec9e54c9996c5cd8c8a2de81905  gcc/testsuite/gdc.test/fail_compilation/test20245.d
  710c352c31a4baca536f7bfad2a41d05  gcc/testsuite/gdc.test/fail_compilation/test20267.d
  d5c3623a103182544da82c93b4634f62  gcc/testsuite/gdc.test/fail_compilation/test20324.d
  67055ecd3df8ca389c004a12d2eb7d68  gcc/testsuite/gdc.test/fail_compilation/test20383.d
  384652f7c502f0235624ad7b7ea50a47  gcc/testsuite/gdc.test/fail_compilation/test20515.d
! 48bcc8fd7476f9cac9ceb53d9556bc32  gcc/testsuite/gdc.test/fail_compilation/test20549.d
  c20d2e44234601fb7a1e6695ac301613  gcc/testsuite/gdc.test/fail_compilation/test20565.d
! 5238f996ed59dccb8410825f4ead764e  gcc/testsuite/gdc.test/fail_compilation/test20569.d
  4eafc9affda83afce6c0cc4694dd75d6  gcc/testsuite/gdc.test/fail_compilation/test20610.d
  4b52d7823af93d96b42262173304ca1a  gcc/testsuite/gdc.test/fail_compilation/test20626.d
  e39aff32106ef1915eaef833c26044c1  gcc/testsuite/gdc.test/fail_compilation/test20696.d
! 96dfa1442895d72adea2b502247d7cd7  gcc/testsuite/gdc.test/fail_compilation/test20719.d
! 691a5f683d3bf7ab67ca4fe2fd073b34  gcc/testsuite/gdc.test/fail_compilation/test20809.d
! 5f15336de0fc91767e8b405dade1fc2a  gcc/testsuite/gdc.test/fail_compilation/test20881.d
  b63d81d149ced101cc0047fccfbfbff2  gcc/testsuite/gdc.test/fail_compilation/test20919.d
! 0c8c75b5c031c7465027a71326076749  gcc/testsuite/gdc.test/fail_compilation/test20998.d
! 039a3a02f4d0f9e829989467c543961d  gcc/testsuite/gdc.test/fail_compilation/test21008.d
! ac25466748e602667eee66983bb3fcb5  gcc/testsuite/gdc.test/fail_compilation/test21062.d
  4aaee6ae450926eaa1c6fa5de9532424  gcc/testsuite/gdc.test/fail_compilation/test21093.d
! d8c21eba428e3edf7da0a7b88431229b  gcc/testsuite/gdc.test/fail_compilation/test21096.d
  a2dfda31aa6bb8862b349db8dd7c06f0  gcc/testsuite/gdc.test/fail_compilation/test21164.d
! 1bf038cf6f1ae7975e11d8f3ed7be20b  gcc/testsuite/gdc.test/fail_compilation/test21198.d
! 719ac706ce81cfaaa50815be2ec3e7c8  gcc/testsuite/gdc.test/fail_compilation/test21204.d
  f0d66ee58e1deca85dd1a5c6be72e0fe  gcc/testsuite/gdc.test/fail_compilation/test21246.d
  2fce247ddc6adc1e84f449d7761cc302  gcc/testsuite/gdc.test/fail_compilation/test21259.d
  0eab8d2a17e3211f93dc6c87bf3f5d8c  gcc/testsuite/gdc.test/fail_compilation/test21319.d
  51deaefc23e5419bce319caa9f692ca8  gcc/testsuite/gdc.test/fail_compilation/test21353.d
  a3522f54348a3c5f14028c34c44f5884  gcc/testsuite/gdc.test/fail_compilation/test21380.d
  ec3a327e60b99c4b5c8c64c7ec034e09  gcc/testsuite/gdc.test/fail_compilation/test21443.d
+ 6dabe8de5e4bd17a89063b4c1c944ca1  gcc/testsuite/gdc.test/fail_compilation/test21477.d
  d89c86b00de50c0eff1176ba2eac046a  gcc/testsuite/gdc.test/fail_compilation/test21518.d
  32963db1864d8e88864b2bc3b4a00399  gcc/testsuite/gdc.test/fail_compilation/test21546.d
  71e1aa25aaa777c4eef2e9d4c47f72c0  gcc/testsuite/gdc.test/fail_compilation/test21651.d
! 967e6942f456ba08f47523edd20fff22  gcc/testsuite/gdc.test/fail_compilation/test21665.d
  135b6f0d46b59693d5057115b41c7d0b  gcc/testsuite/gdc.test/fail_compilation/test21807.d
! e67685204074d91d1f6039910f11db87  gcc/testsuite/gdc.test/fail_compilation/test21912.d
  3d30a4f2bab190433f516628a982fbf6  gcc/testsuite/gdc.test/fail_compilation/test21927.d
  00c0a23be93838d8f2a86c097d340a13  gcc/testsuite/gdc.test/fail_compilation/test21930.d
! 2545aae5fda6db5d0b2a471741205137  gcc/testsuite/gdc.test/fail_compilation/test21939.d
  7737d71c94d6416d1a8f6f5b58d44304  gcc/testsuite/gdc.test/fail_compilation/test22023.d
  7caa8b8c863029f2390235af67a58b67  gcc/testsuite/gdc.test/fail_compilation/test22048.d
! c3299f61c19c19fa7d2fa91058e498c6  gcc/testsuite/gdc.test/fail_compilation/test22145.d
  b26bef555817a24ae4467d7dc0636c50  gcc/testsuite/gdc.test/fail_compilation/test22227.d
  72542ae3b6eec0b354faccf5f89e9e9b  gcc/testsuite/gdc.test/fail_compilation/test22298.d
  24d0c61c3bfc25b9e3354787b83bee35  gcc/testsuite/gdc.test/fail_compilation/test22329.d
  acdee90e75d19aa3146056d4a0ea124a  gcc/testsuite/gdc.test/fail_compilation/test22361.d
  7171ffb25dfbfb58138adc21ba50dc84  gcc/testsuite/gdc.test/fail_compilation/test22541.d
  cf139945245bb017eb805da3ff7c09a1  gcc/testsuite/gdc.test/fail_compilation/test22574.d
! 8c0b458ccca45ab987342e7767bd717c  gcc/testsuite/gdc.test/fail_compilation/test22680.d
  4ebd40967776126bdeadfab0dc0a7624  gcc/testsuite/gdc.test/fail_compilation/test22686.d
  90ed8b49735b9275543c712461c3827c  gcc/testsuite/gdc.test/fail_compilation/test22709.d
! 5b31f4891ab45a36610625f5c05faf80  gcc/testsuite/gdc.test/fail_compilation/test22818.d
  173ea5f46a0b9730ccb5a67253618146  gcc/testsuite/gdc.test/fail_compilation/test22840.d
  7f1d305e5b6a16823b10905c8acabf9e  gcc/testsuite/gdc.test/fail_compilation/test22910.d
  ae0cd305d2c663e0e5f1c5a00774996d  gcc/testsuite/gdc.test/fail_compilation/test22999.d
  f913115e93868e9a78c9fa781674f313  gcc/testsuite/gdc.test/fail_compilation/test23017.d
+ cc99e7ac187b614a799fc18a4f093fc5  gcc/testsuite/gdc.test/fail_compilation/test23022.d
+ 1a168a9cd9ae39f96117efa1c9774379  gcc/testsuite/gdc.test/fail_compilation/test23073.d
+ f7839bb32e158ead5541159187e80c62  gcc/testsuite/gdc.test/fail_compilation/test23112.d
+ 0ec75b327b00e3e5424c6dd33ada45ad  gcc/testsuite/gdc.test/fail_compilation/test23159.d
  085297059a3feacd1fe0e893b7abf682  gcc/testsuite/gdc.test/fail_compilation/test23170.d
+ d58332efc531ae33e2a3c63d48550216  gcc/testsuite/gdc.test/fail_compilation/test23216.d
+ c310fec3ac59c001bba83a0b01d7dab7  gcc/testsuite/gdc.test/fail_compilation/test23491.d
+ e010725215b2db70af4d945e37f73a50  gcc/testsuite/gdc.test/fail_compilation/test23536.d
+ 7fca868961c1d88268606a371d908245  gcc/testsuite/gdc.test/fail_compilation/test23552.d
+ 804d31f68030f5ac99db7e8484050952  gcc/testsuite/gdc.test/fail_compilation/test23607.d
+ ca88c6d83d577719b18fb9894af05c0a  gcc/testsuite/gdc.test/fail_compilation/test23674.d
+ e894966fad5273a970aa51420ce2b993  gcc/testsuite/gdc.test/fail_compilation/test23710.d
  2dddb119548b8d219ecb2aed67590d4b  gcc/testsuite/gdc.test/fail_compilation/test314.d
  4917bf7731fa8cfa0e714e8761b5e241  gcc/testsuite/gdc.test/fail_compilation/test3818.d
  465b130426028cac7c9bb32cf2f4fdee  gcc/testsuite/gdc.test/fail_compilation/test4682.d
*************** a09457a5389a6b79f583244a35add7aa  gcc/te
*** 77264,77281 ****
  72dfa3f018a5d4d774824c2ba1113dbc  gcc/testsuite/gdc.test/fail_compilation/testCols.d
  ffa6d1bb5e4d903cd4438a013f4d9c56  gcc/testsuite/gdc.test/fail_compilation/testInference.d
  fd0ecef833524850930d84c7d0e51cc1  gcc/testsuite/gdc.test/fail_compilation/testOpApply.d
! 06a2e5c0cb590706502127edcd1ef4c5  gcc/testsuite/gdc.test/fail_compilation/test_switch_error.d
  aa7f041aa8deebe034402316bdd46ac3  gcc/testsuite/gdc.test/fail_compilation/testpull1810.d
! 944dcaf308b2b3bd00d4ecb96954be5a  gcc/testsuite/gdc.test/fail_compilation/testscopestatic.d
  57c72c41fa070966229a8558b833873a  gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d
  3cd67c281e7569394eb1c1c3ebd7f1f9  gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d
! 29ec781ba741e6f2dec8143356c31deb  gcc/testsuite/gdc.test/fail_compilation/traits.d
  4bc4006892d5f8f77213130f3a99de63  gcc/testsuite/gdc.test/fail_compilation/traits_alone.d
  48edd3c9ac39fcd89bdb6d21b1e2ae3a  gcc/testsuite/gdc.test/fail_compilation/traits_child.d
  f4314476b27b3e9b55a576b20be59974  gcc/testsuite/gdc.test/fail_compilation/traits_initSymbol.d
  1c9eecd3fd98dda6bd34752b508a13f9  gcc/testsuite/gdc.test/fail_compilation/traits_parameters.d
! f6634ff06dea234ca95e31fb00a5f584  gcc/testsuite/gdc.test/fail_compilation/typeerrors.d
! ec15e095250e64dfc7cf74020eebd50c  gcc/testsuite/gdc.test/fail_compilation/udaparams.d
  67eb83542917456871c84000d16d3890  gcc/testsuite/gdc.test/fail_compilation/union_initialization.d
  5c3640f56239722f872b3e454d87b4a1  gcc/testsuite/gdc.test/fail_compilation/vararg2.d
  a5e1eb3ac7aaf3012f9d0340e4173761  gcc/testsuite/gdc.test/fail_compilation/varargsstc.d
--- 82464,82485 ----
  72dfa3f018a5d4d774824c2ba1113dbc  gcc/testsuite/gdc.test/fail_compilation/testCols.d
  ffa6d1bb5e4d903cd4438a013f4d9c56  gcc/testsuite/gdc.test/fail_compilation/testInference.d
  fd0ecef833524850930d84c7d0e51cc1  gcc/testsuite/gdc.test/fail_compilation/testOpApply.d
! 585cd3369b1d02b241f3a50fd0738734  gcc/testsuite/gdc.test/fail_compilation/test_switch_error.d
  aa7f041aa8deebe034402316bdd46ac3  gcc/testsuite/gdc.test/fail_compilation/testpull1810.d
! b4457e15210c604c830617156b0edeb9  gcc/testsuite/gdc.test/fail_compilation/testrvaluecpctor.d
! 9f45e8c9c9f3a0129841f68bfdab000d  gcc/testsuite/gdc.test/fail_compilation/testscopestatic.d
! 97ca7691202e4166c01b464dff82d800  gcc/testsuite/gdc.test/fail_compilation/testsemi.d
! 816faf898559acd08b5d122dfc17dd89  gcc/testsuite/gdc.test/fail_compilation/throwexp.d
  57c72c41fa070966229a8558b833873a  gcc/testsuite/gdc.test/fail_compilation/trait_loc_err.d
  3cd67c281e7569394eb1c1c3ebd7f1f9  gcc/testsuite/gdc.test/fail_compilation/trait_loc_ov_err.d
! 67aacd5eca9640d19610c73418a109e1  gcc/testsuite/gdc.test/fail_compilation/traits.d
  4bc4006892d5f8f77213130f3a99de63  gcc/testsuite/gdc.test/fail_compilation/traits_alone.d
  48edd3c9ac39fcd89bdb6d21b1e2ae3a  gcc/testsuite/gdc.test/fail_compilation/traits_child.d
  f4314476b27b3e9b55a576b20be59974  gcc/testsuite/gdc.test/fail_compilation/traits_initSymbol.d
  1c9eecd3fd98dda6bd34752b508a13f9  gcc/testsuite/gdc.test/fail_compilation/traits_parameters.d
! 4b7156e088cb5a3776ae1a45428b8388  gcc/testsuite/gdc.test/fail_compilation/typeerrors.d
! eabad4acc06c0b1eac63c93dc14af02a  gcc/testsuite/gdc.test/fail_compilation/udaparams.d
! de7caecb66362ee03a66fee21b75bcb7  gcc/testsuite/gdc.test/fail_compilation/udatypes.d
  67eb83542917456871c84000d16d3890  gcc/testsuite/gdc.test/fail_compilation/union_initialization.d
  5c3640f56239722f872b3e454d87b4a1  gcc/testsuite/gdc.test/fail_compilation/vararg2.d
  a5e1eb3ac7aaf3012f9d0340e4173761  gcc/testsuite/gdc.test/fail_compilation/varargsstc.d
*************** c01b8ab1ddcc5ec29c1654508ee12618  gcc/te
*** 77286,77291 ****
--- 82490,82496 ----
  2f5bd0e5051d939990f8abf297455f0a  gcc/testsuite/gdc.test/fail_compilation/warn13679.d
  a33a1bbd8f6bddfcc1f780250c789cc7  gcc/testsuite/gdc.test/fail_compilation/warn7444.d
  ba48bb410e12885cc62cfe4376b90e24  gcc/testsuite/gdc.test/fail_compilation/widechars.d
+ 841112e1863eea2302fe0d1e8203cccd  gcc/testsuite/gdc.test/fail_compilation/xmmslice.d
  4d086680d04f151f12470ff2df818c7d  gcc/testsuite/gdc.test/runnable/A16.d
  b3ea02141179894a95880a5b77e08f0a  gcc/testsuite/gdc.test/runnable/Same.d
  501e4a7b2936780b2296897940b47fb3  gcc/testsuite/gdc.test/runnable/a17.d
*************** f6631e1e1a3e934a040544d898e79e18  gcc/te
*** 77293,77301 ****
  7ab5a8b174d6dfc11178bbe5b91fc453  gcc/testsuite/gdc.test/runnable/a19.d
  134d96ee56c5082feabf729df7cd964e  gcc/testsuite/gdc.test/runnable/a21.d
  e615ecc1d7b37de2af54470f3338598c  gcc/testsuite/gdc.test/runnable/aliasassign.d
! bdd33dd9645eddf6b5b83f304fcff332  gcc/testsuite/gdc.test/runnable/aliasthis.d
  f3a2bbb7a464d93f63ab0326b83fa7ab  gcc/testsuite/gdc.test/runnable/arrayop.d
! 073672ac74fba180ae74d6c77ee0b665  gcc/testsuite/gdc.test/runnable/auto1.d
  3de44536ba2ca82e220dcd6a0a086dce  gcc/testsuite/gdc.test/runnable/b10562.d
  65c4da6831a7756860e462a8e30bc23e  gcc/testsuite/gdc.test/runnable/b16278.d
  de5dbaa120df255398848177bccef4ac  gcc/testsuite/gdc.test/runnable/b16360.d
--- 82498,82506 ----
  7ab5a8b174d6dfc11178bbe5b91fc453  gcc/testsuite/gdc.test/runnable/a19.d
  134d96ee56c5082feabf729df7cd964e  gcc/testsuite/gdc.test/runnable/a21.d
  e615ecc1d7b37de2af54470f3338598c  gcc/testsuite/gdc.test/runnable/aliasassign.d
! b00c6194395918097c4cb3c6a440d5ef  gcc/testsuite/gdc.test/runnable/aliasthis.d
  f3a2bbb7a464d93f63ab0326b83fa7ab  gcc/testsuite/gdc.test/runnable/arrayop.d
! 4fcc9ce7ecc0df34147cd85b65cb05da  gcc/testsuite/gdc.test/runnable/auto1.d
  3de44536ba2ca82e220dcd6a0a086dce  gcc/testsuite/gdc.test/runnable/b10562.d
  65c4da6831a7756860e462a8e30bc23e  gcc/testsuite/gdc.test/runnable/b16278.d
  de5dbaa120df255398848177bccef4ac  gcc/testsuite/gdc.test/runnable/b16360.d
*************** a420878da7fa335abc9583e4499d0666  gcc/te
*** 77310,77315 ****
--- 82515,82521 ----
  81eae29e5dcdce2710e97b024a39e9d5  gcc/testsuite/gdc.test/runnable/bench1.d
  fa1c08e7e7df11457ef289fb42989329  gcc/testsuite/gdc.test/runnable/betterc.d
  3d3cfce1b32d3c3367406afbb4f3a671  gcc/testsuite/gdc.test/runnable/bettercUnittest.d
+ 46a1099e38da8d7d5c8b44bda27616c8  gcc/testsuite/gdc.test/runnable/bit.d
  370e709a442934770ca5c055271aba94  gcc/testsuite/gdc.test/runnable/bitops.d
  5e171d0543cb3d1795498b099bcc4509  gcc/testsuite/gdc.test/runnable/bug11155.d
  57c36c5c550ccf929d7ef16b40d40d52  gcc/testsuite/gdc.test/runnable/bug12928.d
*************** d939e36fd09244321c35ddc5937a0203  gcc/te
*** 77321,77339 ****
  de570b5a920eaef8e0d57972f493e7ca  gcc/testsuite/gdc.test/runnable/builtin.d
  af2f95c5ef65b51539eef86ea15fa531  gcc/testsuite/gdc.test/runnable/c22.d
  01d3a2d553dcbd78448c6408c8ceee96  gcc/testsuite/gdc.test/runnable/casting.d
  1a404880fefc71429b66061fd57938df  gcc/testsuite/gdc.test/runnable/class_opCmp.d
! 5068a6a0f9625497fb9c8d675f89c437  gcc/testsuite/gdc.test/runnable/closure.d
  9ea48cae757dd16042cd7434aff94459  gcc/testsuite/gdc.test/runnable/complex.d
  ce7051ac19199f716966b7818a002c9b  gcc/testsuite/gdc.test/runnable/constfold.d
! 22d4c0207094ce3a414b0d1ca8250a18  gcc/testsuite/gdc.test/runnable/cppdtor.d
  2b92f65e8a84b3091a6b268e98f92815  gcc/testsuite/gdc.test/runnable/ctorpowtests.d
  02fa83518542867ea2e7418da0b1937a  gcc/testsuite/gdc.test/runnable/declaration.d
  d0a93167ec0c4b07094d766e9e071292  gcc/testsuite/gdc.test/runnable/delegate.d
! e16a173b033d44ac86490e5b91a9a2be  gcc/testsuite/gdc.test/runnable/e7804.d
  53f608a3800e7a114ef0c11e5c66686a  gcc/testsuite/gdc.test/runnable/eh.d
  5722a1733c880e8a632c938c12f40b9f  gcc/testsuite/gdc.test/runnable/eh2.d
  b26c0b2a01e9fdb64c30f43232af99e2  gcc/testsuite/gdc.test/runnable/entity1.d
! de327a41a46e97e01f8c39a238153fe5  gcc/testsuite/gdc.test/runnable/evalorder.d
  9ec0fa6475c0d6037fb02844653dfe3b  gcc/testsuite/gdc.test/runnable/extern1.d
  02ea8fe985b63cc406b916d3c6ba3484  gcc/testsuite/gdc.test/runnable/extra-files/alice30.txt
  6d37d9b9dbd0c7f4c9aac0ccf7a40ddf  gcc/testsuite/gdc.test/runnable/extra-files/foo37.txt
--- 82527,82547 ----
  de570b5a920eaef8e0d57972f493e7ca  gcc/testsuite/gdc.test/runnable/builtin.d
  af2f95c5ef65b51539eef86ea15fa531  gcc/testsuite/gdc.test/runnable/c22.d
  01d3a2d553dcbd78448c6408c8ceee96  gcc/testsuite/gdc.test/runnable/casting.d
+ 758ec98959b2e2a7360601dbda5e44bb  gcc/testsuite/gdc.test/runnable/cdcmp.d
  1a404880fefc71429b66061fd57938df  gcc/testsuite/gdc.test/runnable/class_opCmp.d
! e8ff6f3ea6dc635e21038617aaa22d6c  gcc/testsuite/gdc.test/runnable/closure.d
  9ea48cae757dd16042cd7434aff94459  gcc/testsuite/gdc.test/runnable/complex.d
  ce7051ac19199f716966b7818a002c9b  gcc/testsuite/gdc.test/runnable/constfold.d
! a080e4860261d16428bca6fb30d66159  gcc/testsuite/gdc.test/runnable/cppdtor.d
  2b92f65e8a84b3091a6b268e98f92815  gcc/testsuite/gdc.test/runnable/ctorpowtests.d
+ 93d715fb0b899985790233ea9bac5299  gcc/testsuite/gdc.test/runnable/dbitfields.d
  02fa83518542867ea2e7418da0b1937a  gcc/testsuite/gdc.test/runnable/declaration.d
  d0a93167ec0c4b07094d766e9e071292  gcc/testsuite/gdc.test/runnable/delegate.d
! b236e2967e62b1d2e91de78f8c967b0d  gcc/testsuite/gdc.test/runnable/e7804.d
  53f608a3800e7a114ef0c11e5c66686a  gcc/testsuite/gdc.test/runnable/eh.d
  5722a1733c880e8a632c938c12f40b9f  gcc/testsuite/gdc.test/runnable/eh2.d
  b26c0b2a01e9fdb64c30f43232af99e2  gcc/testsuite/gdc.test/runnable/entity1.d
! 32bee199c6b6671945aa340849742038  gcc/testsuite/gdc.test/runnable/evalorder.d
  9ec0fa6475c0d6037fb02844653dfe3b  gcc/testsuite/gdc.test/runnable/extern1.d
  02ea8fe985b63cc406b916d3c6ba3484  gcc/testsuite/gdc.test/runnable/extra-files/alice30.txt
  6d37d9b9dbd0c7f4c9aac0ccf7a40ddf  gcc/testsuite/gdc.test/runnable/extra-files/foo37.txt
*************** d873fde62be42dc6d7ebe69a8307e263  gcc/te
*** 77345,77350 ****
--- 82553,82559 ----
  d964a72afe8c1ec8814ea7b333fbc2f5  gcc/testsuite/gdc.test/runnable/extra-files/std14198/conv.d
  efe9afe1d7c82f88fcf975b64807b7c4  gcc/testsuite/gdc.test/runnable/extra-files/std14198/format.d
  98beb8db62d1031d4eaa5f8d60cfd128  gcc/testsuite/gdc.test/runnable/extra-files/std14198/uni.d
+ c59f89187f85f5918783ffabe9866574  gcc/testsuite/gdc.test/runnable/extra-files/test11051.d
  b641a96329906956e464851eb6e101c4  gcc/testsuite/gdc.test/runnable/extra-files/test13742.d
  4507b79a9ef31ed59c02d59700af4df6  gcc/testsuite/gdc.test/runnable/extra-files/test15.txt
  d1a345bbcd6c3027691c0839be38cd1c  gcc/testsuite/gdc.test/runnable/fix17429.d
*************** d8fb229e4130b79d115c02f142b30900  gcc/te
*** 77357,77369 ****
  040e4fa767a7fc2e188c99cbc64f3de7  gcc/testsuite/gdc.test/runnable/foreach3.d
  2b8527464d5784704510e2c0b53be4e1  gcc/testsuite/gdc.test/runnable/foreach4.d
  2eb363b5efaefe90b9b38cb9c89c7b03  gcc/testsuite/gdc.test/runnable/foreach5.d
! 1c477d55dafb5834a53ebb77dc0817cb  gcc/testsuite/gdc.test/runnable/funclit.d
  cc186d98b5221c7e2645debf5c0b95ec  gcc/testsuite/gdc.test/runnable/functype.d
  976a8be8b48b1d50d5b38d829a14e5c5  gcc/testsuite/gdc.test/runnable/future.d
  8ba368ec10a84a41af028179c76c4879  gcc/testsuite/gdc.test/runnable/hello.d
  a83062fb959aeeb5cf87796be147fa84  gcc/testsuite/gdc.test/runnable/helloUTF8.d
  92368d5b6d3c89f59b0e43d8dd40c626  gcc/testsuite/gdc.test/runnable/ice10086a.d
! 24beae18ca9f9cb8a07657669d33496b  gcc/testsuite/gdc.test/runnable/ice10086b.d
  e2c68cb85bc6e5c362db337fa60853dc  gcc/testsuite/gdc.test/runnable/ice10857.d
  213dce80c5b05af9122e50fc8aa1d736  gcc/testsuite/gdc.test/runnable/ice15030.d
  68dedff213dc0c26ebf12cf3d400db49  gcc/testsuite/gdc.test/runnable/ice15138.d
--- 82566,82578 ----
  040e4fa767a7fc2e188c99cbc64f3de7  gcc/testsuite/gdc.test/runnable/foreach3.d
  2b8527464d5784704510e2c0b53be4e1  gcc/testsuite/gdc.test/runnable/foreach4.d
  2eb363b5efaefe90b9b38cb9c89c7b03  gcc/testsuite/gdc.test/runnable/foreach5.d
! 7c708aaa3bf82fc8c23ae2835adb9acc  gcc/testsuite/gdc.test/runnable/funclit.d
  cc186d98b5221c7e2645debf5c0b95ec  gcc/testsuite/gdc.test/runnable/functype.d
  976a8be8b48b1d50d5b38d829a14e5c5  gcc/testsuite/gdc.test/runnable/future.d
  8ba368ec10a84a41af028179c76c4879  gcc/testsuite/gdc.test/runnable/hello.d
  a83062fb959aeeb5cf87796be147fa84  gcc/testsuite/gdc.test/runnable/helloUTF8.d
  92368d5b6d3c89f59b0e43d8dd40c626  gcc/testsuite/gdc.test/runnable/ice10086a.d
! c61bc71df8d1cdfb8e78e010b24dd96f  gcc/testsuite/gdc.test/runnable/ice10086b.d
  e2c68cb85bc6e5c362db337fa60853dc  gcc/testsuite/gdc.test/runnable/ice10857.d
  213dce80c5b05af9122e50fc8aa1d736  gcc/testsuite/gdc.test/runnable/ice15030.d
  68dedff213dc0c26ebf12cf3d400db49  gcc/testsuite/gdc.test/runnable/ice15138.d
*************** e2517bde830934f20af3c878e1ae2e2a  gcc/te
*** 77403,77408 ****
--- 82612,82618 ----
  7d490863dda67cc3884e44fc5b69ac2e  gcc/testsuite/gdc.test/runnable/imports/c22b.d
  e453ef25d3cb67e2414b4ad6550053ab  gcc/testsuite/gdc.test/runnable/imports/circularA.d
  9338d91093c57ec6d10e65408ac7fa06  gcc/testsuite/gdc.test/runnable/imports/extern1a.d
+ 4c34ac963a27bc290abbc62c86843a80  gcc/testsuite/gdc.test/runnable/imports/freer.i
  9c0befb5e86b864c8b026899443b7556  gcc/testsuite/gdc.test/runnable/imports/ice10086x.d
  111f044e495dcef07b1b835631a21e46  gcc/testsuite/gdc.test/runnable/imports/ice10086y.d
  df1da5396c86822f180ff3ca5b5d1981  gcc/testsuite/gdc.test/runnable/imports/ice10857a.d
*************** a9247d1c5ca1b8d76074cd64355b5804  gcc/te
*** 77448,77453 ****
--- 82658,82664 ----
  8708dbc2b62604591d2a6b42d0b44c51  gcc/testsuite/gdc.test/runnable/imports/m8668a.d
  8d88ddacf7255a87a42006fe3e430681  gcc/testsuite/gdc.test/runnable/imports/m8668b.d
  f9f5331f0cb4ef2237a257cc19972bce  gcc/testsuite/gdc.test/runnable/imports/m8668c.d
+ 1df1b0c046872f51daa34efbc94a78f6  gcc/testsuite/gdc.test/runnable/imports/maker.i
  01c0ae2d3d5a60cef03ad7ccb99b68d1  gcc/testsuite/gdc.test/runnable/imports/mangle10077.d
  cb452631c311ff185975ed99bde00241  gcc/testsuite/gdc.test/runnable/imports/mod2.d
  6448f2440740e1334549739876dd8af1  gcc/testsuite/gdc.test/runnable/imports/module_with_tests.d
*************** eca2528a4b2f620d2c38d1abb893652c  gcc/te
*** 77553,77570 ****
  6bc98429fb6b456e0a601db6162025c0  gcc/testsuite/gdc.test/runnable/inclusive_incontracts.d
  aaf6f341932e9b3a995159cd37bdc066  gcc/testsuite/gdc.test/runnable/inline.d
  f7d709d852581fa8afa0dd0d20f5b2a3  gcc/testsuite/gdc.test/runnable/inline14560.d
  d64b5e3f0b00940814668d067bf9aaea  gcc/testsuite/gdc.test/runnable/inline7625.d
  983143edb6966dadb405abd8072847f2  gcc/testsuite/gdc.test/runnable/inner.d
  48cfd849752443e6d9839e935e8143b7  gcc/testsuite/gdc.test/runnable/interface.d
  ca24fa67843e9b5f04f6e36b4156cd09  gcc/testsuite/gdc.test/runnable/interface1.d
  6484a385c41eddbf0257b15c48e86258  gcc/testsuite/gdc.test/runnable/interface2.d
  838e42ff2802438b38233da4a0551d36  gcc/testsuite/gdc.test/runnable/interface3.d
! 2ba2531c6082ea9370c31b3c4462c696  gcc/testsuite/gdc.test/runnable/interpret.d
  30066aead22b067c75e067db19484762  gcc/testsuite/gdc.test/runnable/interpret2.d
  34bbbe816cec89b7cf9ad1cf88a3c866  gcc/testsuite/gdc.test/runnable/issue16995.d
  e1eb800c5f1d023be3e43f4f5e34d2e2  gcc/testsuite/gdc.test/runnable/lazy.d
  39e7e24e679fa283298fb63c41528a27  gcc/testsuite/gdc.test/runnable/ldc_github_1677.d
! a247cbece5e65fc23960be4329b77e59  gcc/testsuite/gdc.test/runnable/lexer.d
  6f5cb20cd7be0b4736b08048125893ca  gcc/testsuite/gdc.test/runnable/link10425.d
  6f384d861e8f7b136caa11a726124bb8  gcc/testsuite/gdc.test/runnable/link10920.d
  94f5a6371aec5241226bf8b2eeb5748c  gcc/testsuite/gdc.test/runnable/link11069a.d
--- 82764,82783 ----
  6bc98429fb6b456e0a601db6162025c0  gcc/testsuite/gdc.test/runnable/inclusive_incontracts.d
  aaf6f341932e9b3a995159cd37bdc066  gcc/testsuite/gdc.test/runnable/inline.d
  f7d709d852581fa8afa0dd0d20f5b2a3  gcc/testsuite/gdc.test/runnable/inline14560.d
+ ee1705daa5f4bdf4268af3e439e38e22  gcc/testsuite/gdc.test/runnable/inline3.d
  d64b5e3f0b00940814668d067bf9aaea  gcc/testsuite/gdc.test/runnable/inline7625.d
  983143edb6966dadb405abd8072847f2  gcc/testsuite/gdc.test/runnable/inner.d
  48cfd849752443e6d9839e935e8143b7  gcc/testsuite/gdc.test/runnable/interface.d
  ca24fa67843e9b5f04f6e36b4156cd09  gcc/testsuite/gdc.test/runnable/interface1.d
  6484a385c41eddbf0257b15c48e86258  gcc/testsuite/gdc.test/runnable/interface2.d
  838e42ff2802438b38233da4a0551d36  gcc/testsuite/gdc.test/runnable/interface3.d
! 2f60ceff797bbe39d9257b3ed1dd1a2c  gcc/testsuite/gdc.test/runnable/interpret.d
  30066aead22b067c75e067db19484762  gcc/testsuite/gdc.test/runnable/interpret2.d
  34bbbe816cec89b7cf9ad1cf88a3c866  gcc/testsuite/gdc.test/runnable/issue16995.d
+ 22cd3fa4fa361ef6a17f82ff75cfbf34  gcc/testsuite/gdc.test/runnable/issue22854.d
  e1eb800c5f1d023be3e43f4f5e34d2e2  gcc/testsuite/gdc.test/runnable/lazy.d
  39e7e24e679fa283298fb63c41528a27  gcc/testsuite/gdc.test/runnable/ldc_github_1677.d
! f0cf9a68c1903b04bf5aadb7a1411722  gcc/testsuite/gdc.test/runnable/lexer.d
  6f5cb20cd7be0b4736b08048125893ca  gcc/testsuite/gdc.test/runnable/link10425.d
  6f384d861e8f7b136caa11a726124bb8  gcc/testsuite/gdc.test/runnable/link10920.d
  94f5a6371aec5241226bf8b2eeb5748c  gcc/testsuite/gdc.test/runnable/link11069a.d
*************** de49afc81619132c42da7397f97d9a60  gcc/te
*** 77604,77617 ****
  f937e0b38b1fcd4d891537f30945028b  gcc/testsuite/gdc.test/runnable/m1.d
  e9f9b0b614372eb03b080d1810c3f513  gcc/testsuite/gdc.test/runnable/manboy.d
  9d919fd56825c1ec7a780e06065e58b4  gcc/testsuite/gdc.test/runnable/mangle.d
! 0a84a838e32402d29d1cdb0c818b39a5  gcc/testsuite/gdc.test/runnable/mars1.d
  f5a8b23b5d0c5c59024767c78dcf9071  gcc/testsuite/gdc.test/runnable/minimal.d
  c00ebdf5e3409a5e0d41bc91f1bc7c13  gcc/testsuite/gdc.test/runnable/minimal2.d
  b8644719888d00737d3b529d8b3ebe1c  gcc/testsuite/gdc.test/runnable/mixin1.d
! 121e456ed4f010462dd418367c6864e4  gcc/testsuite/gdc.test/runnable/mixin2.d
  17668752a24808140dc9b4f2fe62174d  gcc/testsuite/gdc.test/runnable/mod1.d
  93837ff6a8edd395fed58c76349926d3  gcc/testsuite/gdc.test/runnable/nan.d
  ff83e87b097613a3fe18f1fab4e9685e  gcc/testsuite/gdc.test/runnable/nested.d
  ec4aa7081910ad016b0d017d00cccb65  gcc/testsuite/gdc.test/runnable/newdel.d
  569632f136656f3a207d3dad0dc53cfd  gcc/testsuite/gdc.test/runnable/nogc.d
  bc244cd860e0a19a225785138b807918  gcc/testsuite/gdc.test/runnable/noreturn1.d
--- 82817,82831 ----
  f937e0b38b1fcd4d891537f30945028b  gcc/testsuite/gdc.test/runnable/m1.d
  e9f9b0b614372eb03b080d1810c3f513  gcc/testsuite/gdc.test/runnable/manboy.d
  9d919fd56825c1ec7a780e06065e58b4  gcc/testsuite/gdc.test/runnable/mangle.d
! 4272be240b442708c014795acd72fa89  gcc/testsuite/gdc.test/runnable/mars1.d
  f5a8b23b5d0c5c59024767c78dcf9071  gcc/testsuite/gdc.test/runnable/minimal.d
  c00ebdf5e3409a5e0d41bc91f1bc7c13  gcc/testsuite/gdc.test/runnable/minimal2.d
  b8644719888d00737d3b529d8b3ebe1c  gcc/testsuite/gdc.test/runnable/mixin1.d
! abb06b3df362afe29e8eb361582e78d9  gcc/testsuite/gdc.test/runnable/mixin2.d
  17668752a24808140dc9b4f2fe62174d  gcc/testsuite/gdc.test/runnable/mod1.d
  93837ff6a8edd395fed58c76349926d3  gcc/testsuite/gdc.test/runnable/nan.d
  ff83e87b097613a3fe18f1fab4e9685e  gcc/testsuite/gdc.test/runnable/nested.d
+ b8f16b2144f8d28d3626e8fa9dafc16f  gcc/testsuite/gdc.test/runnable/newaa.d
  ec4aa7081910ad016b0d017d00cccb65  gcc/testsuite/gdc.test/runnable/newdel.d
  569632f136656f3a207d3dad0dc53cfd  gcc/testsuite/gdc.test/runnable/nogc.d
  bc244cd860e0a19a225785138b807918  gcc/testsuite/gdc.test/runnable/noreturn1.d
*************** e43ef772308df8da7da44ca398d5ec99  gcc/te
*** 77630,77641 ****
  0b3b6c33585693f7d9ec1f1c160c5eee  gcc/testsuite/gdc.test/runnable/property.d
  31fe12e44df9411731e4ef3d72fb4ba7  gcc/testsuite/gdc.test/runnable/property2.d
  4ad36392d16823994c6a7ca8d3899c50  gcc/testsuite/gdc.test/runnable/pubprivtmpl.d
! f75147b8db89a9daabcedb55f028d45e  gcc/testsuite/gdc.test/runnable/runnable.exp
  8323b83c1399a259f3d262fb199b2205  gcc/testsuite/gdc.test/runnable/s2ir.d
  96d633524d2f75b8d82fcd0a5331a249  gcc/testsuite/gdc.test/runnable/sctor.d
  05ce59877a082d3e22aff0132bfbe58a  gcc/testsuite/gdc.test/runnable/sctor2.d
  236c43311185d3651a6d025013b2f040  gcc/testsuite/gdc.test/runnable/sdtor.d
! 171900d6ce544bb242e22a8416e306ad  gcc/testsuite/gdc.test/runnable/staticforeach.d
  f73d5e95eed9a6db4b396ed99ff5b347  gcc/testsuite/gdc.test/runnable/statictor.d
  3b4fa0c8027d36ae9ebdc2e436b4ff04  gcc/testsuite/gdc.test/runnable/stress.d
  63d69507976c1d1d8944e81e01b7e5ed  gcc/testsuite/gdc.test/runnable/structlit.d
--- 82844,82855 ----
  0b3b6c33585693f7d9ec1f1c160c5eee  gcc/testsuite/gdc.test/runnable/property.d
  31fe12e44df9411731e4ef3d72fb4ba7  gcc/testsuite/gdc.test/runnable/property2.d
  4ad36392d16823994c6a7ca8d3899c50  gcc/testsuite/gdc.test/runnable/pubprivtmpl.d
! d4ce9b5e856c6bddc25628fd1138d4c1  gcc/testsuite/gdc.test/runnable/runnable.exp
  8323b83c1399a259f3d262fb199b2205  gcc/testsuite/gdc.test/runnable/s2ir.d
  96d633524d2f75b8d82fcd0a5331a249  gcc/testsuite/gdc.test/runnable/sctor.d
  05ce59877a082d3e22aff0132bfbe58a  gcc/testsuite/gdc.test/runnable/sctor2.d
  236c43311185d3651a6d025013b2f040  gcc/testsuite/gdc.test/runnable/sdtor.d
! 75cf9f0bc1b0762705a8a2b6eb89811e  gcc/testsuite/gdc.test/runnable/staticforeach.d
  f73d5e95eed9a6db4b396ed99ff5b347  gcc/testsuite/gdc.test/runnable/statictor.d
  3b4fa0c8027d36ae9ebdc2e436b4ff04  gcc/testsuite/gdc.test/runnable/stress.d
  63d69507976c1d1d8944e81e01b7e5ed  gcc/testsuite/gdc.test/runnable/structlit.d
*************** e18bc12e62affabc6544f2dbb5151592  gcc/te
*** 77654,77660 ****
  8e7ea5d0ec3fc33fe73cce78bc3f67f8  gcc/testsuite/gdc.test/runnable/test10619.d
  e4718969afdb09b1a5d8a84122c280ed  gcc/testsuite/gdc.test/runnable/test10736.d
  7ebc846e49389a0fb55bd1ff2363b35a  gcc/testsuite/gdc.test/runnable/test10942.d
! 52c4ca4a2e6fa2f436c8515d11fb981e  gcc/testsuite/gdc.test/runnable/test11.d
  38b8b79d3b1581c140830dc6915dddae  gcc/testsuite/gdc.test/runnable/test11039.d
  2ac400ca67fc13a82d014ad3fbe1d156  gcc/testsuite/gdc.test/runnable/test11239.d
  ac2a7417335f30bab8b3248c60cd52bc  gcc/testsuite/gdc.test/runnable/test11447a.d
--- 82868,82874 ----
  8e7ea5d0ec3fc33fe73cce78bc3f67f8  gcc/testsuite/gdc.test/runnable/test10619.d
  e4718969afdb09b1a5d8a84122c280ed  gcc/testsuite/gdc.test/runnable/test10736.d
  7ebc846e49389a0fb55bd1ff2363b35a  gcc/testsuite/gdc.test/runnable/test10942.d
! 6025138f77d1474d201a4f6056db6c08  gcc/testsuite/gdc.test/runnable/test11.d
  38b8b79d3b1581c140830dc6915dddae  gcc/testsuite/gdc.test/runnable/test11039.d
  2ac400ca67fc13a82d014ad3fbe1d156  gcc/testsuite/gdc.test/runnable/test11239.d
  ac2a7417335f30bab8b3248c60cd52bc  gcc/testsuite/gdc.test/runnable/test11447a.d
*************** a1d14de2b2f577f8dc953dac9a6643d9  gcc/te
*** 77681,77688 ****
--- 82895,82904 ----
  ae3d3c58af7ef6c64cdc93414ba57022  gcc/testsuite/gdc.test/runnable/test15568.d
  1bb951ff2eceb50018da2f36539a0729  gcc/testsuite/gdc.test/runnable/test15862.d
  bfd8e27d98f571b2264d7f7760bbd5c7  gcc/testsuite/gdc.test/runnable/test15913.d
+ 28da78944ce27d9dd7c2d4fca1b9998d  gcc/testsuite/gdc.test/runnable/test15985.d
  f66ffcddad16ea2ae49fd701993a5eaa  gcc/testsuite/gdc.test/runnable/test16.d
  1b0165a7daa35bc6ff8d022b64d00e9c  gcc/testsuite/gdc.test/runnable/test16047.d
+ 82bef9970b86aa3463017cf7de10c558  gcc/testsuite/gdc.test/runnable/test16098.d
  5e1308619144327f37f85bd340d6bf09  gcc/testsuite/gdc.test/runnable/test16115.d
  7370664411558cc8793d4d2026b55e31  gcc/testsuite/gdc.test/runnable/test16140.d
  6153cfb395c904a799c508b581931117  gcc/testsuite/gdc.test/runnable/test16555.d
*************** d6e1e5269dea90ebb80516ea92c9e793  gcc/te
*** 77698,77706 ****
  72abd9516be307601fc1f3e37554bd23  gcc/testsuite/gdc.test/runnable/test17337.d
  34fed78576a745da3357f20271550f18  gcc/testsuite/gdc.test/runnable/test17338.d
  e50e78709b67b0c2eaa1360860475c53  gcc/testsuite/gdc.test/runnable/test17559.d
! e5d2a1faae0312068b5e33dbb985b301  gcc/testsuite/gdc.test/runnable/test17684.d
  9c25e2ca51aa326febdf0d4f36e1c245  gcc/testsuite/gdc.test/runnable/test17868.d
! f62671c3fb649565bebd98b09b0b0194  gcc/testsuite/gdc.test/runnable/test17868b.d
  0e6077e1a2a30938d0b500ff8cc5b36b  gcc/testsuite/gdc.test/runnable/test17878.d
  fc0c1132b9c4990ecf1ba02ce096208f  gcc/testsuite/gdc.test/runnable/test17885.d
  7919f520330f5076e433490def0be384  gcc/testsuite/gdc.test/runnable/test17899.d
--- 82914,82922 ----
  72abd9516be307601fc1f3e37554bd23  gcc/testsuite/gdc.test/runnable/test17337.d
  34fed78576a745da3357f20271550f18  gcc/testsuite/gdc.test/runnable/test17338.d
  e50e78709b67b0c2eaa1360860475c53  gcc/testsuite/gdc.test/runnable/test17559.d
! 592712ab492f074084b7e17829b072ec  gcc/testsuite/gdc.test/runnable/test17684.d
  9c25e2ca51aa326febdf0d4f36e1c245  gcc/testsuite/gdc.test/runnable/test17868.d
! 61809efb0fcc1a93b897576650b9c5c1  gcc/testsuite/gdc.test/runnable/test17868b.d
  0e6077e1a2a30938d0b500ff8cc5b36b  gcc/testsuite/gdc.test/runnable/test17878.d
  fc0c1132b9c4990ecf1ba02ce096208f  gcc/testsuite/gdc.test/runnable/test17885.d
  7919f520330f5076e433490def0be384  gcc/testsuite/gdc.test/runnable/test17899.d
*************** d456ef642a6b4a01ec45fc81265b1d2a  gcc/te
*** 77710,77715 ****
--- 82926,82932 ----
  12c36884d487b0ed95f898c1502ce4ee  gcc/testsuite/gdc.test/runnable/test18054.d
  9cae3c0a6bfef1af04208c0b126502ac  gcc/testsuite/gdc.test/runnable/test18296.d
  647c2508055709a027b3ba6c4c31e2c3  gcc/testsuite/gdc.test/runnable/test18322.d
+ cabf9ba346fe31514bb876c0951ccead  gcc/testsuite/gdc.test/runnable/test18472.d
  cf6bb3e9f1c9c86ad42b1fcd4a9e6aa2  gcc/testsuite/gdc.test/runnable/test18534.d
  45f6352af25755f47517354f2a57c25c  gcc/testsuite/gdc.test/runnable/test18545.d
  78a7441dc87a16dce301e1a7efbaa0ad  gcc/testsuite/gdc.test/runnable/test18746.d
*************** a767b6f5b2f11844ad3eefab8ef4ec75  gcc/te
*** 77718,77724 ****
  6b9fd9120b926078b877b6819fbe42b4  gcc/testsuite/gdc.test/runnable/test18868_3.d
  777a71347d6977e510af62882ae5bf82  gcc/testsuite/gdc.test/runnable/test18880.d
  7b4286c4769f36ee7f44bba2ce4cf8d6  gcc/testsuite/gdc.test/runnable/test18916.d
! 780860fd581632b0eb01344c482f810e  gcc/testsuite/gdc.test/runnable/test19.d
  59dd98fa3a3a4e31603f6febee3ceca6  gcc/testsuite/gdc.test/runnable/test19086.d
  1948916b829a4357d04c98b757488f64  gcc/testsuite/gdc.test/runnable/test19122.d
  a1acded813bb656c7a71a323b7c12609  gcc/testsuite/gdc.test/runnable/test19185.d
--- 82935,82942 ----
  6b9fd9120b926078b877b6819fbe42b4  gcc/testsuite/gdc.test/runnable/test18868_3.d
  777a71347d6977e510af62882ae5bf82  gcc/testsuite/gdc.test/runnable/test18880.d
  7b4286c4769f36ee7f44bba2ce4cf8d6  gcc/testsuite/gdc.test/runnable/test18916.d
! be9480664230fce009c57f0ac063312c  gcc/testsuite/gdc.test/runnable/test18973.d
! 4ad192e8a7827586e9204fcaea15cd8a  gcc/testsuite/gdc.test/runnable/test19.d
  59dd98fa3a3a4e31603f6febee3ceca6  gcc/testsuite/gdc.test/runnable/test19086.d
  1948916b829a4357d04c98b757488f64  gcc/testsuite/gdc.test/runnable/test19122.d
  a1acded813bb656c7a71a323b7c12609  gcc/testsuite/gdc.test/runnable/test19185.d
*************** a4795a316a2baa0e71798b469d5c6930  gcc/te
*** 77739,77770 ****
  fcece22eca621fed0d8ba8a8f0a26b8c  gcc/testsuite/gdc.test/runnable/test19734.d
  d26b50fb85490a3cc4e2354e4f36ef67  gcc/testsuite/gdc.test/runnable/test19735.d
  9a70f093e61871491ceafa021b105249  gcc/testsuite/gdc.test/runnable/test19774.d
! f3d292c79f2f80b8f4c3d3800f49eaa8  gcc/testsuite/gdc.test/runnable/test19782.d
  183dd227c7d6d7b7bf544af3d6a5d802  gcc/testsuite/gdc.test/runnable/test19822.d
  a36968e264e2797808c37d2e955080ef  gcc/testsuite/gdc.test/runnable/test19825.d
  cff02d44bbc8c8bfe6c49cafa1a3e6d4  gcc/testsuite/gdc.test/runnable/test19891.d
  ba91a67739ef1d7c075257c209545bc2  gcc/testsuite/gdc.test/runnable/test20.d
  f8d0b21a1212e2dd2a2291217b19a6d4  gcc/testsuite/gdc.test/runnable/test20025.d
  afafe1c6791104a920ce60c8d9b7a1d7  gcc/testsuite/gdc.test/runnable/test20036.d
  00bcf9ef4601142dccb9c6258ec13a68  gcc/testsuite/gdc.test/runnable/test20130.d
  934611688c4128ebda7e15cb6381177e  gcc/testsuite/gdc.test/runnable/test20401.d
  c018162c45215d0fab46be18b8757454  gcc/testsuite/gdc.test/runnable/test20565.d
  c34a3bb33a8160038fa96df171e91f03  gcc/testsuite/gdc.test/runnable/test20603.d
  d4e305280749d6533574a6153288fa7c  gcc/testsuite/gdc.test/runnable/test20649.d
! 6ea435f2122d24914d2f7d7faffa00fd  gcc/testsuite/gdc.test/runnable/test20734.d
! 26791dc86f122eb249d2a259ac91e13b  gcc/testsuite/gdc.test/runnable/test20855.d
  df5295a7feb17c4c53da844e70aa21e3  gcc/testsuite/gdc.test/runnable/test20893.d
  4b3d63ce3f716d2619996a6ed10a0346  gcc/testsuite/gdc.test/runnable/test21.d
! 7b3442f146687dcc372c3394881b4702  gcc/testsuite/gdc.test/runnable/test21039.d
  93b706863e29cf772712909183dbfede  gcc/testsuite/gdc.test/runnable/test21040.d
  64d7b02bd6dc7a0cd12b0af9e8070e9c  gcc/testsuite/gdc.test/runnable/test21120.d
  1aacc352c636c82011d02d49ef884284  gcc/testsuite/gdc.test/runnable/test21357.d
  272f45daed92ef08fd3514c087b2b69c  gcc/testsuite/gdc.test/runnable/test21367.d
  43c17807177bc1eee7ed52b69cffa7e6  gcc/testsuite/gdc.test/runnable/test21403.d
  684fb8bd8d224295c0126d6852e6b871  gcc/testsuite/gdc.test/runnable/test21424.d
  39cc7f7ee06df8b588e510e65fc811d1  gcc/testsuite/gdc.test/runnable/test21479.d
  3958eb12c59cc6063b2604b011a74128  gcc/testsuite/gdc.test/runnable/test21515.d
  d941ec5e142e2721e810526ac3a6e649  gcc/testsuite/gdc.test/runnable/test21586.d
  0696ce7be75b98ed274e814bc15abdf9  gcc/testsuite/gdc.test/runnable/test21822.d
  6bdac6d28c5dd31504f6e1444284463a  gcc/testsuite/gdc.test/runnable/test21833.d
  8372dd352568da47d2662ffb3c04723c  gcc/testsuite/gdc.test/runnable/test22.d
--- 82957,82998 ----
  fcece22eca621fed0d8ba8a8f0a26b8c  gcc/testsuite/gdc.test/runnable/test19734.d
  d26b50fb85490a3cc4e2354e4f36ef67  gcc/testsuite/gdc.test/runnable/test19735.d
  9a70f093e61871491ceafa021b105249  gcc/testsuite/gdc.test/runnable/test19774.d
! 1c2ad6e4e2e2f57310f37b6daeb87f9e  gcc/testsuite/gdc.test/runnable/test19782.d
  183dd227c7d6d7b7bf544af3d6a5d802  gcc/testsuite/gdc.test/runnable/test19822.d
  a36968e264e2797808c37d2e955080ef  gcc/testsuite/gdc.test/runnable/test19825.d
  cff02d44bbc8c8bfe6c49cafa1a3e6d4  gcc/testsuite/gdc.test/runnable/test19891.d
+ 844d2a9446cd98243665a4dd8fecaec2  gcc/testsuite/gdc.test/runnable/test19946.d
  ba91a67739ef1d7c075257c209545bc2  gcc/testsuite/gdc.test/runnable/test20.d
  f8d0b21a1212e2dd2a2291217b19a6d4  gcc/testsuite/gdc.test/runnable/test20025.d
  afafe1c6791104a920ce60c8d9b7a1d7  gcc/testsuite/gdc.test/runnable/test20036.d
  00bcf9ef4601142dccb9c6258ec13a68  gcc/testsuite/gdc.test/runnable/test20130.d
+ a48fbfbafa74fe1264728e81e04e18c5  gcc/testsuite/gdc.test/runnable/test20365.d
  934611688c4128ebda7e15cb6381177e  gcc/testsuite/gdc.test/runnable/test20401.d
+ 4d700b55de424e2292361b6931802ab8  gcc/testsuite/gdc.test/runnable/test20520.d
  c018162c45215d0fab46be18b8757454  gcc/testsuite/gdc.test/runnable/test20565.d
  c34a3bb33a8160038fa96df171e91f03  gcc/testsuite/gdc.test/runnable/test20603.d
  d4e305280749d6533574a6153288fa7c  gcc/testsuite/gdc.test/runnable/test20649.d
! 0399ed9a88f43f412bb837122ec70685  gcc/testsuite/gdc.test/runnable/test20734.d
! 8c58a026ffe6663e0430a33ae429a2cb  gcc/testsuite/gdc.test/runnable/test20809.d
! e6dc6eaf864a06c95c44147f94d7b6e8  gcc/testsuite/gdc.test/runnable/test20811.d
! a1baf96919b413733cceceba4d005ad7  gcc/testsuite/gdc.test/runnable/test20855.d
  df5295a7feb17c4c53da844e70aa21e3  gcc/testsuite/gdc.test/runnable/test20893.d
  4b3d63ce3f716d2619996a6ed10a0346  gcc/testsuite/gdc.test/runnable/test21.d
! 8bdb09b21ee400f787fd7ea036c67aba  gcc/testsuite/gdc.test/runnable/test21039.d
  93b706863e29cf772712909183dbfede  gcc/testsuite/gdc.test/runnable/test21040.d
  64d7b02bd6dc7a0cd12b0af9e8070e9c  gcc/testsuite/gdc.test/runnable/test21120.d
+ 5b20d95ff645f7b662c082aa57b8c5e5  gcc/testsuite/gdc.test/runnable/test21301.d
  1aacc352c636c82011d02d49ef884284  gcc/testsuite/gdc.test/runnable/test21357.d
  272f45daed92ef08fd3514c087b2b69c  gcc/testsuite/gdc.test/runnable/test21367.d
  43c17807177bc1eee7ed52b69cffa7e6  gcc/testsuite/gdc.test/runnable/test21403.d
+ d65e02fb5c7cae086fa0bf2467a474a6  gcc/testsuite/gdc.test/runnable/test21416.d
  684fb8bd8d224295c0126d6852e6b871  gcc/testsuite/gdc.test/runnable/test21424.d
  39cc7f7ee06df8b588e510e65fc811d1  gcc/testsuite/gdc.test/runnable/test21479.d
+ 116b00b8fc3478f501974453de61c5f4  gcc/testsuite/gdc.test/runnable/test21506.d
  3958eb12c59cc6063b2604b011a74128  gcc/testsuite/gdc.test/runnable/test21515.d
  d941ec5e142e2721e810526ac3a6e649  gcc/testsuite/gdc.test/runnable/test21586.d
+ b294faec8f737c988ebc5c7803e537f6  gcc/testsuite/gdc.test/runnable/test21772.d
+ b891c5d6dc21bffa2578a6c34884d103  gcc/testsuite/gdc.test/runnable/test21821.d
  0696ce7be75b98ed274e814bc15abdf9  gcc/testsuite/gdc.test/runnable/test21822.d
  6bdac6d28c5dd31504f6e1444284463a  gcc/testsuite/gdc.test/runnable/test21833.d
  8372dd352568da47d2662ffb3c04723c  gcc/testsuite/gdc.test/runnable/test22.d
*************** d941ec5e142e2721e810526ac3a6e649  gcc/te
*** 77776,77785 ****
  a4f94c1d976d5924615a341b59c02cff  gcc/testsuite/gdc.test/runnable/test22278.d
  466e87133a4466011049e76fb568724a  gcc/testsuite/gdc.test/runnable/test22717.d
  4e7e9eefc89ca412abd98b785f5b0e5a  gcc/testsuite/gdc.test/runnable/test22945.d
! 421e41360f8c6fc2814a061416876856  gcc/testsuite/gdc.test/runnable/test23.d
  b760c0e7d084ffeb0648627187c08bb7  gcc/testsuite/gdc.test/runnable/test23083.d
  138e2256ce1c1f5109950477b38499c7  gcc/testsuite/gdc.test/runnable/test23181.d
! ed4925b273407fe3c1b1f148d9bb1dac  gcc/testsuite/gdc.test/runnable/test23234.d
  3d69f9a9a0381cb5e164fd3a019c94ae  gcc/testsuite/gdc.test/runnable/test24.d
  19afe194dcce9c253540c7831e8f23a2  gcc/testsuite/gdc.test/runnable/test27.d
  907370082d6caa9ac241999ae9143c37  gcc/testsuite/gdc.test/runnable/test28.d
--- 83004,83021 ----
  a4f94c1d976d5924615a341b59c02cff  gcc/testsuite/gdc.test/runnable/test22278.d
  466e87133a4466011049e76fb568724a  gcc/testsuite/gdc.test/runnable/test22717.d
  4e7e9eefc89ca412abd98b785f5b0e5a  gcc/testsuite/gdc.test/runnable/test22945.d
! 7b9b70b26722ff45da43cbea96c9804e  gcc/testsuite/gdc.test/runnable/test23.d
! a63f3b63c344065bc882c726d79ee3f1  gcc/testsuite/gdc.test/runnable/test23010.d
  b760c0e7d084ffeb0648627187c08bb7  gcc/testsuite/gdc.test/runnable/test23083.d
  138e2256ce1c1f5109950477b38499c7  gcc/testsuite/gdc.test/runnable/test23181.d
! f7b1337e9399c96a2dfc557835b34a33  gcc/testsuite/gdc.test/runnable/test23234.d
! fcd2732565e41785f8dcf891e9376197  gcc/testsuite/gdc.test/runnable/test23307.d
! ac0de3cd831fa9321b2ebae86fec2b7a  gcc/testsuite/gdc.test/runnable/test23337.d
! 725fa25201e68aa6b98b05a137d7b938  gcc/testsuite/gdc.test/runnable/test23387.d
! 320c8d02d889b47038ffa0c7a664676a  gcc/testsuite/gdc.test/runnable/test23514.d
! df806f23213b2694036b38addf890cbb  gcc/testsuite/gdc.test/runnable/test23618.d
! b3ebc400243b9885ee707960762bbfb8  gcc/testsuite/gdc.test/runnable/test23650.d
! 597d86763224d5b7f6426c4144960da6  gcc/testsuite/gdc.test/runnable/test23710.d
  3d69f9a9a0381cb5e164fd3a019c94ae  gcc/testsuite/gdc.test/runnable/test24.d
  19afe194dcce9c253540c7831e8f23a2  gcc/testsuite/gdc.test/runnable/test27.d
  907370082d6caa9ac241999ae9143c37  gcc/testsuite/gdc.test/runnable/test28.d
*************** acf377237fec892f5c1159809ac7709c  gcc/te
*** 77824,77830 ****
  3158ce3db0d67c0b94f8024d259ce775  gcc/testsuite/gdc.test/runnable/test7603.d
  1eabae1cd558093128de20e6d675d96d  gcc/testsuite/gdc.test/runnable/test7618.d
  ce6cf8164fad9df68b3ccc79b5e863f2  gcc/testsuite/gdc.test/runnable/test7932.d
! 8896a17754a7f91fe93763070362c7cd  gcc/testsuite/gdc.test/runnable/test8.d
  e1716e5ff142d969d9b796e919518753  gcc/testsuite/gdc.test/runnable/test809.d
  15901f42e795f075bc95b5748ecce8c3  gcc/testsuite/gdc.test/runnable/test8182.d
  19bfd17af52c21a9d8220c7098ad9015  gcc/testsuite/gdc.test/runnable/test8544.d
--- 83060,83066 ----
  3158ce3db0d67c0b94f8024d259ce775  gcc/testsuite/gdc.test/runnable/test7603.d
  1eabae1cd558093128de20e6d675d96d  gcc/testsuite/gdc.test/runnable/test7618.d
  ce6cf8164fad9df68b3ccc79b5e863f2  gcc/testsuite/gdc.test/runnable/test7932.d
! 6aea08be9ded3ba38bd1ee72bd9cee62  gcc/testsuite/gdc.test/runnable/test8.d
  e1716e5ff142d969d9b796e919518753  gcc/testsuite/gdc.test/runnable/test809.d
  15901f42e795f075bc95b5748ecce8c3  gcc/testsuite/gdc.test/runnable/test8182.d
  19bfd17af52c21a9d8220c7098ad9015  gcc/testsuite/gdc.test/runnable/test8544.d
*************** a36fae813a6f89e1190c485e88612051  gcc/te
*** 77840,77851 ****
  64823d97fc941d462f398d0b7bcbe896  gcc/testsuite/gdc.test/runnable/testaa.d
  892b49ea5dd4f0e53e0faadc8b0577fb  gcc/testsuite/gdc.test/runnable/testaa2.d
  ee3edf61584e85f05e7e74c7c7c5a8b3  gcc/testsuite/gdc.test/runnable/testaa3.d
! 3f7c65678e5e6729e1c6bc9fe1965999  gcc/testsuite/gdc.test/runnable/testaliascast.d
  eeb45913ea76b2a0c6255a669d3edb7e  gcc/testsuite/gdc.test/runnable/testappend.d
  8d2dd2e88a1daa40f5a0fe6f0bac44a7  gcc/testsuite/gdc.test/runnable/testarray.d
  728bb57b12620d5afb89fc3a275536d7  gcc/testsuite/gdc.test/runnable/testassert.d
  5c93e14bd7b6c858ef32800173172b43  gcc/testsuite/gdc.test/runnable/testassert_debug.d
! 09eb76e2cfb6138eeb8434cc263df70a  gcc/testsuite/gdc.test/runnable/testassign.d
  b68337b7fabe389fc57cd2fd733b78a9  gcc/testsuite/gdc.test/runnable/testbounds.d
  29912bc8a59c79356e5423ea4b009c91  gcc/testsuite/gdc.test/runnable/testbounds_off.d
  b5d03efe728963696491f3c036bc8f5c  gcc/testsuite/gdc.test/runnable/testbounds_on.d
--- 83076,83087 ----
  64823d97fc941d462f398d0b7bcbe896  gcc/testsuite/gdc.test/runnable/testaa.d
  892b49ea5dd4f0e53e0faadc8b0577fb  gcc/testsuite/gdc.test/runnable/testaa2.d
  ee3edf61584e85f05e7e74c7c7c5a8b3  gcc/testsuite/gdc.test/runnable/testaa3.d
! f2a86058bf293a0b9667ac032a150946  gcc/testsuite/gdc.test/runnable/testaliascast.d
  eeb45913ea76b2a0c6255a669d3edb7e  gcc/testsuite/gdc.test/runnable/testappend.d
  8d2dd2e88a1daa40f5a0fe6f0bac44a7  gcc/testsuite/gdc.test/runnable/testarray.d
  728bb57b12620d5afb89fc3a275536d7  gcc/testsuite/gdc.test/runnable/testassert.d
  5c93e14bd7b6c858ef32800173172b43  gcc/testsuite/gdc.test/runnable/testassert_debug.d
! 9f93564ac9fada565f6f43e0110998f6  gcc/testsuite/gdc.test/runnable/testassign.d
  b68337b7fabe389fc57cd2fd733b78a9  gcc/testsuite/gdc.test/runnable/testbounds.d
  29912bc8a59c79356e5423ea4b009c91  gcc/testsuite/gdc.test/runnable/testbounds_off.d
  b5d03efe728963696491f3c036bc8f5c  gcc/testsuite/gdc.test/runnable/testbounds_on.d
*************** b5d03efe728963696491f3c036bc8f5c  gcc/te
*** 77855,77863 ****
  f3a5c8190fa5a3106b4d549439f19057  gcc/testsuite/gdc.test/runnable/testclass.d
  74b8d7cc9e56ff982ab03a4c063c6602  gcc/testsuite/gdc.test/runnable/testconst.d
  ca19a464a9598a2c7376e8812c2a1115  gcc/testsuite/gdc.test/runnable/testconstsection.d
! 07be4c699b9d19be005e7f29de6b5533  gcc/testsuite/gdc.test/runnable/testcontracts.d
  04177eb403d124b27e25923e062b4968  gcc/testsuite/gdc.test/runnable/testdefault_after_variadic.d
! 9d45d3a5147e6e845980b67f31f51e8b  gcc/testsuite/gdc.test/runnable/testdstress.d
  188bce71e33ee82e4f8b06265b40fc29  gcc/testsuite/gdc.test/runnable/testdt.d
  dc17b590e0cb85107a4fde452455b4ec  gcc/testsuite/gdc.test/runnable/testenum.d
  d4b8fc507dc0ddd3ca7b3066a52e32e1  gcc/testsuite/gdc.test/runnable/testfloat.d
--- 83091,83099 ----
  f3a5c8190fa5a3106b4d549439f19057  gcc/testsuite/gdc.test/runnable/testclass.d
  74b8d7cc9e56ff982ab03a4c063c6602  gcc/testsuite/gdc.test/runnable/testconst.d
  ca19a464a9598a2c7376e8812c2a1115  gcc/testsuite/gdc.test/runnable/testconstsection.d
! 63be0bf283a5343ab2a42e70360a029c  gcc/testsuite/gdc.test/runnable/testcontracts.d
  04177eb403d124b27e25923e062b4968  gcc/testsuite/gdc.test/runnable/testdefault_after_variadic.d
! 6e21a05a6db0d18097b144b15f57a819  gcc/testsuite/gdc.test/runnable/testdstress.d
  188bce71e33ee82e4f8b06265b40fc29  gcc/testsuite/gdc.test/runnable/testdt.d
  dc17b590e0cb85107a4fde452455b4ec  gcc/testsuite/gdc.test/runnable/testenum.d
  d4b8fc507dc0ddd3ca7b3066a52e32e1  gcc/testsuite/gdc.test/runnable/testfloat.d
*************** ea65101462f5417751a3a6ac833a9453  gcc/te
*** 77887,77895 ****
  421ddca899cb4e423532976bd0a645f3  gcc/testsuite/gdc.test/runnable/testv.d
  a057534673f57c614b996fe87140df21  gcc/testsuite/gdc.test/runnable/tls.d
  49432260a0d57c2fe1811c568327d931  gcc/testsuite/gdc.test/runnable/tls_dup.d
! 0f0729eadb9240d0999a698ea5ab1b2e  gcc/testsuite/gdc.test/runnable/traits.d
  1aa7c9fb4ab4ad34ebee88d73d835029  gcc/testsuite/gdc.test/runnable/traits_child.d
! 9be15b72b386165ca16cdf973c293d24  gcc/testsuite/gdc.test/runnable/traits_getPointerBitmap.d
  7b5c0c588a5500319a2ccc41819e3b29  gcc/testsuite/gdc.test/runnable/traits_getUnitTests.d
  91642219e5787400e311db2dee1e8591  gcc/testsuite/gdc.test/runnable/traits_getVirtualIndex.d
  dea7fc25fd89a2df3918f62a896ba033  gcc/testsuite/gdc.test/runnable/traits_initSymbol.d
--- 83123,83131 ----
  421ddca899cb4e423532976bd0a645f3  gcc/testsuite/gdc.test/runnable/testv.d
  a057534673f57c614b996fe87140df21  gcc/testsuite/gdc.test/runnable/tls.d
  49432260a0d57c2fe1811c568327d931  gcc/testsuite/gdc.test/runnable/tls_dup.d
! 9fe0d61a2485062546fefc20ca20f72a  gcc/testsuite/gdc.test/runnable/traits.d
  1aa7c9fb4ab4ad34ebee88d73d835029  gcc/testsuite/gdc.test/runnable/traits_child.d
! 38f1b8f71336b87ceda6b477bb961904  gcc/testsuite/gdc.test/runnable/traits_getPointerBitmap.d
  7b5c0c588a5500319a2ccc41819e3b29  gcc/testsuite/gdc.test/runnable/traits_getUnitTests.d
  91642219e5787400e311db2dee1e8591  gcc/testsuite/gdc.test/runnable/traits_getVirtualIndex.d
  dea7fc25fd89a2df3918f62a896ba033  gcc/testsuite/gdc.test/runnable/traits_initSymbol.d
*************** f75e70758ecdcd92eb5f200d8337bb7e  gcc/te
*** 77899,77905 ****
  fad5d6afc8ee199fc52c3d0115ff4dc9  gcc/testsuite/gdc.test/runnable/uniformctor.d
  797041b16b4063f65751920488ee39ef  gcc/testsuite/gdc.test/runnable/unique_typeinfo_names.d
  7ed2f43979b0523e33aedd424104f7e9  gcc/testsuite/gdc.test/runnable/variadic.d
! 6d2139c61aa705b2bfaac77f2cb89892  gcc/testsuite/gdc.test/runnable/version.d
  3e234d45b8940cdd1392e921db8b08f4  gcc/testsuite/gdc.test/runnable/warning1.d
  c5d22add9745e52907bb2497b9bd620f  gcc/testsuite/gdc.test/runnable/wc.d
  c4ca938331c5dd4dfd6be89a399e767b  gcc/testsuite/gdc.test/runnable/wc2.d
--- 83135,83141 ----
  fad5d6afc8ee199fc52c3d0115ff4dc9  gcc/testsuite/gdc.test/runnable/uniformctor.d
  797041b16b4063f65751920488ee39ef  gcc/testsuite/gdc.test/runnable/unique_typeinfo_names.d
  7ed2f43979b0523e33aedd424104f7e9  gcc/testsuite/gdc.test/runnable/variadic.d
! dd6318894171d606a3a02985c9be449b  gcc/testsuite/gdc.test/runnable/version.d
  3e234d45b8940cdd1392e921db8b08f4  gcc/testsuite/gdc.test/runnable/warning1.d
  c5d22add9745e52907bb2497b9bd620f  gcc/testsuite/gdc.test/runnable/wc.d
  c4ca938331c5dd4dfd6be89a399e767b  gcc/testsuite/gdc.test/runnable/wc2.d
*************** c4ca938331c5dd4dfd6be89a399e767b  gcc/te
*** 77907,77923 ****
  f384c3fcd7c6ad7e5f4cfe528d33e3b1  gcc/testsuite/gdc.test/runnable/whetstone.d
  ec1a2733358dba834de7787de5e3abbc  gcc/testsuite/gdc.test/runnable/xdtor.d
  ac4d0456bb66403e420d8d538a3c7de5  gcc/testsuite/gdc.test/runnable/xpostblit.d
! 1b56664c727ddafa58dc21c3fc60790d  gcc/testsuite/gdc.test/runnable/xtest46.d
! f9004058e430b2d585cdbca7864c862a  gcc/testsuite/gdc.test/runnable/xtest46_gc.d
  bbea6b323197c3de8b8cdf62fd30dce6  gcc/testsuite/gdc.test/runnable/xtest47.d
  98579c4213cc9715e99b14cafe0236c5  gcc/testsuite/gdc.test/runnable/xtest55.d
  ec34b35e61134ea19d0acd6f4b952971  gcc/testsuite/gdc.test/runnable/xtestenum.d
  2caaa83870980d1acf5e5b9d4feab819  gcc/testsuite/gdc.test/runnable_cxx/abi_tags.d
  862550e1270f64e59387c6dca4c76318  gcc/testsuite/gdc.test/runnable_cxx/cabi1.d
  76cf7dafb9d89f93e706f474f20c8475  gcc/testsuite/gdc.test/runnable_cxx/cpp11.d
! c30d7b43c4b2e042e7463cccb16c0935  gcc/testsuite/gdc.test/runnable_cxx/cpp_abi_tests.d
  406b0b9b16752a001433b6aa5d8c96d6  gcc/testsuite/gdc.test/runnable_cxx/cpp_stdlib.d
! 244c74dc88e251825a7de60135acad4b  gcc/testsuite/gdc.test/runnable_cxx/cppa.d
  9dced816e07defbae5f35dfc7d48c5cb  gcc/testsuite/gdc.test/runnable_cxx/externmangle.d
  1be6bce873a4ba092357cd1925dffd04  gcc/testsuite/gdc.test/runnable_cxx/externmangle2.d
  d92b4eb3d1a1e7026ab3d6fdf0fb0bee  gcc/testsuite/gdc.test/runnable_cxx/extra-files/abi_tags.cpp
--- 83143,83159 ----
  f384c3fcd7c6ad7e5f4cfe528d33e3b1  gcc/testsuite/gdc.test/runnable/whetstone.d
  ec1a2733358dba834de7787de5e3abbc  gcc/testsuite/gdc.test/runnable/xdtor.d
  ac4d0456bb66403e420d8d538a3c7de5  gcc/testsuite/gdc.test/runnable/xpostblit.d
! 937bef91b63a99fec9980716f08f4107  gcc/testsuite/gdc.test/runnable/xtest46.d
! abc11a1dc1670ad91573318a25494650  gcc/testsuite/gdc.test/runnable/xtest46_gc.d
  bbea6b323197c3de8b8cdf62fd30dce6  gcc/testsuite/gdc.test/runnable/xtest47.d
  98579c4213cc9715e99b14cafe0236c5  gcc/testsuite/gdc.test/runnable/xtest55.d
  ec34b35e61134ea19d0acd6f4b952971  gcc/testsuite/gdc.test/runnable/xtestenum.d
  2caaa83870980d1acf5e5b9d4feab819  gcc/testsuite/gdc.test/runnable_cxx/abi_tags.d
  862550e1270f64e59387c6dca4c76318  gcc/testsuite/gdc.test/runnable_cxx/cabi1.d
  76cf7dafb9d89f93e706f474f20c8475  gcc/testsuite/gdc.test/runnable_cxx/cpp11.d
! a09f3be4ff0542b4c34878e0688a97f1  gcc/testsuite/gdc.test/runnable_cxx/cpp_abi_tests.d
  406b0b9b16752a001433b6aa5d8c96d6  gcc/testsuite/gdc.test/runnable_cxx/cpp_stdlib.d
! ed8fa9bdb0dfa3369fc5784f40e60d8c  gcc/testsuite/gdc.test/runnable_cxx/cppa.d
  9dced816e07defbae5f35dfc7d48c5cb  gcc/testsuite/gdc.test/runnable_cxx/externmangle.d
  1be6bce873a4ba092357cd1925dffd04  gcc/testsuite/gdc.test/runnable_cxx/externmangle2.d
  d92b4eb3d1a1e7026ab3d6fdf0fb0bee  gcc/testsuite/gdc.test/runnable_cxx/extra-files/abi_tags.cpp
*************** d92b4eb3d1a1e7026ab3d6fdf0fb0bee  gcc/te
*** 77927,77951 ****
  fa03ccbe3fa80bc6ccf3bf1aa8286b8e  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp19179.cpp
  4d5c8b47ea46a47e48ff90f9110bc640  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp22287.cpp
  0710790bc5c49e5e20e7c2527bd61def  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp7925.cpp
! a9d6a6a8f4c8875e6b33c7ad568ab722  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp_abi_tests.cpp
  be30c6bdcad8f20922e4267061ff1df8  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp_stdlib.cpp
! 7e487fe53227897317c9ddcb0150ced8  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cppb.cpp
  ec3097e9963784f4f941101db0814cca  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cppb.h
  4ba7406a72aad4c6da0a2bcdc9b572d7  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle.cpp
  2fc8bcf6bde9d9e7c0d26ec53c4b5a61  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle2.cpp
  c41aae5e245d02892d557de82a15ecbf  gcc/testsuite/gdc.test/runnable_cxx/extra-files/stdint.cpp
  c2435b8d682209f733e92b581466e05d  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test20652.cpp
  a114fddcb4038e1cc68206b0fc3d227e  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test21515.cpp
  4c95c06408fd6606dc2cc8f9ffbc3da2  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test22898.cpp
  19446c81468536fde60f727169a9064b  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test6716.cpp
! c024d2477d05e6a77f4738b1b470b185  gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
  831a07bc65fb593b01e13ba6917f1048  gcc/testsuite/gdc.test/runnable_cxx/stdint.d
  5e106cb14f0975a6502a3684154bda9c  gcc/testsuite/gdc.test/runnable_cxx/test14203.d
  6cff696d69683c392657211d903629c7  gcc/testsuite/gdc.test/runnable_cxx/test19179.d
  e3ed77e1de9813e110f4b46db5b15790  gcc/testsuite/gdc.test/runnable_cxx/test20652.d
  729140d31be3d3e72c4e84b2c6a85bcb  gcc/testsuite/gdc.test/runnable_cxx/test21515.d
  44ce0fdf5bb8a6023ffac138e4219a24  gcc/testsuite/gdc.test/runnable_cxx/test22287.d
! 3d5532e93ff5e00c68560376930c79ee  gcc/testsuite/gdc.test/runnable_cxx/test22898.d
  a8db2129ce64619adefe97016e2a537b  gcc/testsuite/gdc.test/runnable_cxx/test6716.d
  52117134088f2520ffadd1a3d471741a  gcc/testsuite/gdc.test/runnable_cxx/test7925.d
  38343e39577a1d093c40818070ea1d7b  gcc/testsuite/gfortran.dg/20181025-1.f
--- 83163,83191 ----
  fa03ccbe3fa80bc6ccf3bf1aa8286b8e  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp19179.cpp
  4d5c8b47ea46a47e48ff90f9110bc640  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp22287.cpp
  0710790bc5c49e5e20e7c2527bd61def  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp7925.cpp
! 72324383fac744a9ade1634ca1151b84  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp_abi_tests.cpp
  be30c6bdcad8f20922e4267061ff1df8  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cpp_stdlib.cpp
! fb8edf4f449d6b7c6ef046c2225732a8  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cppb.cpp
  ec3097e9963784f4f941101db0814cca  gcc/testsuite/gdc.test/runnable_cxx/extra-files/cppb.h
  4ba7406a72aad4c6da0a2bcdc9b572d7  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle.cpp
  2fc8bcf6bde9d9e7c0d26ec53c4b5a61  gcc/testsuite/gdc.test/runnable_cxx/extra-files/externmangle2.cpp
  c41aae5e245d02892d557de82a15ecbf  gcc/testsuite/gdc.test/runnable_cxx/extra-files/stdint.cpp
  c2435b8d682209f733e92b581466e05d  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test20652.cpp
  a114fddcb4038e1cc68206b0fc3d227e  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test21515.cpp
+ 18cf40cb7d52f6fc2c839a80d18ff053  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test22351.cpp
  4c95c06408fd6606dc2cc8f9ffbc3da2  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test22898.cpp
+ b87b34b2dab8f6f449a9d5ac854c90ec  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test23135.cpp
  19446c81468536fde60f727169a9064b  gcc/testsuite/gdc.test/runnable_cxx/extra-files/test6716.cpp
! 76fdad5a789cceae58a00bc6ffe1dbce  gcc/testsuite/gdc.test/runnable_cxx/runnable_cxx.exp
  831a07bc65fb593b01e13ba6917f1048  gcc/testsuite/gdc.test/runnable_cxx/stdint.d
  5e106cb14f0975a6502a3684154bda9c  gcc/testsuite/gdc.test/runnable_cxx/test14203.d
  6cff696d69683c392657211d903629c7  gcc/testsuite/gdc.test/runnable_cxx/test19179.d
  e3ed77e1de9813e110f4b46db5b15790  gcc/testsuite/gdc.test/runnable_cxx/test20652.d
  729140d31be3d3e72c4e84b2c6a85bcb  gcc/testsuite/gdc.test/runnable_cxx/test21515.d
  44ce0fdf5bb8a6023ffac138e4219a24  gcc/testsuite/gdc.test/runnable_cxx/test22287.d
! 0815627985d71579c23ccb865c3cb8d4  gcc/testsuite/gdc.test/runnable_cxx/test22351.d
! a8defbbc0b10eb2d64bca782c9c208e4  gcc/testsuite/gdc.test/runnable_cxx/test22898.d
! a2ef28185ce553046b671626eab2248e  gcc/testsuite/gdc.test/runnable_cxx/test23135.d
  a8db2129ce64619adefe97016e2a537b  gcc/testsuite/gdc.test/runnable_cxx/test6716.d
  52117134088f2520ffadd1a3d471741a  gcc/testsuite/gdc.test/runnable_cxx/test7925.d
  38343e39577a1d093c40818070ea1d7b  gcc/testsuite/gfortran.dg/20181025-1.f
*************** e6c3b86b3fa90a1a314b20a8a7f460c5  gcc/te
*** 77959,77971 ****
  0f997ee918539916d184f0f26ede39dc  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_12.f90
  6b0904352bf83bab2f0b90ac1682aeb2  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c
  1637107e7b04b625884037471be00510  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90
! 0590c7c6708c81cca9c50dcfbc485021  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90
  0e720a4c9b1fa88f58ae3201bea12302  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_15.c
  7ff0bc7079843cd79faa0a575e859e18  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_15.f90
  3fc3ab6be4a1d40fa912f79266310049  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.c
  deb2afc397aadbc83f8819a89dcb0863  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.f90
  493f148b6a7dd90fd225dc872efcaafc  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_17.c
! 0933e947935a3f7a4cf6100a6ae19e58  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_17.f90
  43e94ff57a77d249f5b5b157595602ca  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c
  7269f20d2d641bd0cfcb965e0c3f58c7  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f90
  62f2a2fe705fbcf105b9fa5657feb4f4  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_19.f90
--- 83199,83211 ----
  0f997ee918539916d184f0f26ede39dc  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_12.f90
  6b0904352bf83bab2f0b90ac1682aeb2  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.c
  1637107e7b04b625884037471be00510  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_13.f90
! bae6fbb9933e0823463f7462947dad25  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_14.f90
  0e720a4c9b1fa88f58ae3201bea12302  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_15.c
  7ff0bc7079843cd79faa0a575e859e18  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_15.f90
  3fc3ab6be4a1d40fa912f79266310049  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.c
  deb2afc397aadbc83f8819a89dcb0863  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_16.f90
  493f148b6a7dd90fd225dc872efcaafc  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_17.c
! 699d08d2d81b3261fa0225cedd053eb4  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_17.f90
  43e94ff57a77d249f5b5b157595602ca  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.c
  7269f20d2d641bd0cfcb965e0c3f58c7  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_18.f90
  62f2a2fe705fbcf105b9fa5657feb4f4  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_19.f90
*************** a1a08bbe61bc0e97db09c5713e17b815  gcc/te
*** 77982,77990 ****
--- 83222,83238 ----
  f1950e4b4b23dc2b32ca290715b1dd9c  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_8.f90
  817943e7fa8a72aedac6524e31d4088f  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_9.c
  131a58eb857fe3f727bc57d2b9f21e8f  gcc/testsuite/gfortran.dg/ISO_Fortran_binding_9.f90
+ 8039ff93d1683c85f89961a47ca07935  gcc/testsuite/gfortran.dg/PR100029.f90
+ 3a862d4d610ca334e395074243d0fe19  gcc/testsuite/gfortran.dg/PR100040.f90
  b57006fa0a1329365a93526a47af1b48  gcc/testsuite/gfortran.dg/PR100094.f90
+ 7d31691eac81b2cecc47db81ebb7f3e7  gcc/testsuite/gfortran.dg/PR100097.f90
+ 3a9f3e07df20211a1c48ab0f8f6eca97  gcc/testsuite/gfortran.dg/PR100098.f90
+ 6b907da58374732d5a8548dee94ca2c8  gcc/testsuite/gfortran.dg/PR100103.f90
  68cb0ab662ad4fc4eb4df34854771922  gcc/testsuite/gfortran.dg/PR100120.f90
+ 1bb9c8f2a91f52e7916455864ee6937a  gcc/testsuite/gfortran.dg/PR100132.f90
+ 6bb46c09071a440785e94a2327da031c  gcc/testsuite/gfortran.dg/PR100136.f90
  e4d3c523324e00f5ab10bffefb1a7961  gcc/testsuite/gfortran.dg/PR10018.f90
+ 6999a567af5689945feacbc26380e000  gcc/testsuite/gfortran.dg/PR100245.f90
  4d5838f10553515cce93c4e016158093  gcc/testsuite/gfortran.dg/PR100906.c
  d6e75fc08ee52f13c0de6ce3da087f1f  gcc/testsuite/gfortran.dg/PR100906.f90
  371d3195ffed521d08ec283c2ee1c592  gcc/testsuite/gfortran.dg/PR100911.c
*************** c85675a1a0e2101ed951b0621bb65472  gcc/te
*** 78007,78012 ****
--- 83255,83262 ----
  55740e7ff2c6e32e376766d3dddd8b4e  gcc/testsuite/gfortran.dg/PR93308.f90
  966a6f726c4b0b218a2932e2ca0c881e  gcc/testsuite/gfortran.dg/PR93963.f90
  c0a1896429d4819837949d22da25a4df  gcc/testsuite/gfortran.dg/PR94022.f90
+ 070215b2c221c8f6b0a90a0f5287a3c9  gcc/testsuite/gfortran.dg/PR94104a.f90
+ 18480be58a34b7e124505051dfc8fa04  gcc/testsuite/gfortran.dg/PR94104b.f90
  d26f25abad3640876a175e7d83b3913d  gcc/testsuite/gfortran.dg/PR94110.f90
  0f9e38e102733af4116f60c9e27b2e43  gcc/testsuite/gfortran.dg/PR94289.f90
  ec6c2627e248e7cd023630ebd5c579e6  gcc/testsuite/gfortran.dg/PR94327.c
*************** e1958079bf09a34c02c047726c40e9a8  gcc/te
*** 78047,78053 ****
  8623d03e13ca3d85dd70e529c1d74dee  gcc/testsuite/gfortran.dg/actual_array_constructor_3.f90
  ac3c78981b68dd7570fbf24a454c1f49  gcc/testsuite/gfortran.dg/actual_array_interface_1.f90
  aef95d16f07bbc2f2592af837c0f0108  gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
! ff73960e75fcb1d3eaad607176d379e4  gcc/testsuite/gfortran.dg/actual_array_offset_1.f90
  9b341000c34ce58fa97f33ace5dbf227  gcc/testsuite/gfortran.dg/actual_array_result_1.f90
  81f66fad745137fdc59d9f22263c998c  gcc/testsuite/gfortran.dg/actual_array_substr_1.f90
  88b6ef62ab16543451c11af1d3b04340  gcc/testsuite/gfortran.dg/actual_array_substr_2.f90
--- 83297,83303 ----
  8623d03e13ca3d85dd70e529c1d74dee  gcc/testsuite/gfortran.dg/actual_array_constructor_3.f90
  ac3c78981b68dd7570fbf24a454c1f49  gcc/testsuite/gfortran.dg/actual_array_interface_1.f90
  aef95d16f07bbc2f2592af837c0f0108  gcc/testsuite/gfortran.dg/actual_array_interface_2.f90
! d10dc24f807a9caca22b1c9623e9c39f  gcc/testsuite/gfortran.dg/actual_array_offset_1.f90
  9b341000c34ce58fa97f33ace5dbf227  gcc/testsuite/gfortran.dg/actual_array_result_1.f90
  81f66fad745137fdc59d9f22263c998c  gcc/testsuite/gfortran.dg/actual_array_substr_1.f90
  88b6ef62ab16543451c11af1d3b04340  gcc/testsuite/gfortran.dg/actual_array_substr_2.f90
*************** da5d5b7965daec91596c4c854f913229  gcc/te
*** 78174,78179 ****
--- 83424,83430 ----
  690e1952bbd8580233f07cf2ebf12bb6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_12.f90
  defe3a05f941a9b5c9f6a22338429ba8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_13.f90
  27f657b814cdc497725d00a0dfe1ece8  gcc/testsuite/gfortran.dg/allocate_alloc_opt_14.f90
+ b6c4702bf04caee25dc8228192964820  gcc/testsuite/gfortran.dg/allocate_alloc_opt_15.f90
  3c813b0a7d13f9aa20c4646947272369  gcc/testsuite/gfortran.dg/allocate_alloc_opt_2.f90
  45a53c48bd85b773185b35930db8dd81  gcc/testsuite/gfortran.dg/allocate_alloc_opt_3.f90
  99d5a861de70768d4b39b55425f3fbe6  gcc/testsuite/gfortran.dg/allocate_alloc_opt_4.f90
*************** bd4118fd768f3467307efc9602103e4c  gcc/te
*** 78231,78237 ****
  5bf2af08f2cfa8d41242dd6a637a7d09  gcc/testsuite/gfortran.dg/allocate_with_source_22.f03
  38cc9fdec67f82f032977fc8ad612b4c  gcc/testsuite/gfortran.dg/allocate_with_source_23.f03
  b1a373e9e419d53e737be3282523545d  gcc/testsuite/gfortran.dg/allocate_with_source_24.f90
! f0618b11a21d03826df78d5c6b9cb863  gcc/testsuite/gfortran.dg/allocate_with_source_25.f90
  f27e65cbaa74101ffeaa1c5d321f9f84  gcc/testsuite/gfortran.dg/allocate_with_source_26.f90
  8cd7bcf0efad3a6d0e1f5b5492a6cdf7  gcc/testsuite/gfortran.dg/allocate_with_source_3.f90
  6e6cc1fe5ed4f0f5c650bc8b6e0634b0  gcc/testsuite/gfortran.dg/allocate_with_source_4.f90
--- 83482,83488 ----
  5bf2af08f2cfa8d41242dd6a637a7d09  gcc/testsuite/gfortran.dg/allocate_with_source_22.f03
  38cc9fdec67f82f032977fc8ad612b4c  gcc/testsuite/gfortran.dg/allocate_with_source_23.f03
  b1a373e9e419d53e737be3282523545d  gcc/testsuite/gfortran.dg/allocate_with_source_24.f90
! 31836f6ed153d10e8afd2831a52015e7  gcc/testsuite/gfortran.dg/allocate_with_source_25.f90
  f27e65cbaa74101ffeaa1c5d321f9f84  gcc/testsuite/gfortran.dg/allocate_with_source_26.f90
  8cd7bcf0efad3a6d0e1f5b5492a6cdf7  gcc/testsuite/gfortran.dg/allocate_with_source_3.f90
  6e6cc1fe5ed4f0f5c650bc8b6e0634b0  gcc/testsuite/gfortran.dg/allocate_with_source_4.f90
*************** eae1c01e9cd07e06f5b2053c9c8e8d0c  gcc/te
*** 78269,78278 ****
  407349fe5dc0dd80df43de2e773a4cab  gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90
  4a2d243fa69596ed5111843ecb20b347  gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
  44a13c6b4d7ef49b6173c7e5be97aeba  gcc/testsuite/gfortran.dg/ambiguous_specific_2.f90
! ff4f7766adaeefb666883e2371774ac9  gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
  2f368a8d04f58e4d6d300980282f68ea  gcc/testsuite/gfortran.dg/analyzer/deferred_character_25.f90
  d73a0bb9f41cc644e39e6ef9cb47095f  gcc/testsuite/gfortran.dg/analyzer/malloc-example.f90
  456395eb94ed204b99bab7e77b4c01de  gcc/testsuite/gfortran.dg/analyzer/malloc.f90
  4f60657994000873c145d414229c0294  gcc/testsuite/gfortran.dg/analyzer/pr88304-2.f90
  b8f1e8c33e7b4915b87284464dc23538  gcc/testsuite/gfortran.dg/analyzer/pr93405.f90
  e1cea00268c9eb57abc50ee584fd93aa  gcc/testsuite/gfortran.dg/analyzer/pr93777.f90
--- 83520,83531 ----
  407349fe5dc0dd80df43de2e773a4cab  gcc/testsuite/gfortran.dg/ambiguous_reference_2.f90
  4a2d243fa69596ed5111843ecb20b347  gcc/testsuite/gfortran.dg/ambiguous_specific_1.f90
  44a13c6b4d7ef49b6173c7e5be97aeba  gcc/testsuite/gfortran.dg/ambiguous_specific_2.f90
! a571f9826c3751f6023a29733058e1c0  gcc/testsuite/gfortran.dg/analyzer/analyzer.exp
  2f368a8d04f58e4d6d300980282f68ea  gcc/testsuite/gfortran.dg/analyzer/deferred_character_25.f90
  d73a0bb9f41cc644e39e6ef9cb47095f  gcc/testsuite/gfortran.dg/analyzer/malloc-example.f90
  456395eb94ed204b99bab7e77b4c01de  gcc/testsuite/gfortran.dg/analyzer/malloc.f90
+ 665bfed2b62065455ce0b2493919099d  gcc/testsuite/gfortran.dg/analyzer/pr107210.f90
+ c14d32c4187ff035ab90a562824dce91  gcc/testsuite/gfortran.dg/analyzer/pr108065.f90
  4f60657994000873c145d414229c0294  gcc/testsuite/gfortran.dg/analyzer/pr88304-2.f90
  b8f1e8c33e7b4915b87284464dc23538  gcc/testsuite/gfortran.dg/analyzer/pr93405.f90
  e1cea00268c9eb57abc50ee584fd93aa  gcc/testsuite/gfortran.dg/analyzer/pr93777.f90
*************** c8e89c3bb1a8878396e32769b9a78d05  gcc/te
*** 78381,78386 ****
--- 83634,83641 ----
  2cd50431749fd2782a60804098abc805  gcc/testsuite/gfortran.dg/array_constructor_53.f90
  0f86c84a8fd0787aab2aa7e4dd6ac377  gcc/testsuite/gfortran.dg/array_constructor_54.f90
  fbcbf467a3284c5a09b9e5e8efc5e0c7  gcc/testsuite/gfortran.dg/array_constructor_55.f90
+ 051843c0c65fec8a2e1118f76be9d705  gcc/testsuite/gfortran.dg/array_constructor_56.f90
+ b9213dc9c7da43f7ac35cb2a5bf0c55b  gcc/testsuite/gfortran.dg/array_constructor_57.f90
  3c35c0aa8a8229010e90452ed87d7792  gcc/testsuite/gfortran.dg/array_constructor_6.f90
  d3bb011093e16f988efba6816262fb16  gcc/testsuite/gfortran.dg/array_constructor_7.f90
  ae5f56f53be9d3bbc6c562e48080a252  gcc/testsuite/gfortran.dg/array_constructor_8.f90
*************** f5353af0320c98076a2cef99b20b32d5  gcc/te
*** 78436,78442 ****
  8d40f37ca947eda247ef3465e6375e58  gcc/testsuite/gfortran.dg/array_simplify_3.f90
  9b6cc7f3255096169f14ac77758245e3  gcc/testsuite/gfortran.dg/array_simplify_4.f90
  eaa667329c0ac254f7386a2733317553  gcc/testsuite/gfortran.dg/array_temporaries_1.f90
! ef0448750b54bdfee0bf2b23c2eb77bf  gcc/testsuite/gfortran.dg/array_temporaries_2.f90
  58a1a563e62c42ecf81647ce0fff97a1  gcc/testsuite/gfortran.dg/array_temporaries_3.f90
  1a5fac20b3c5bae4bfab9480278e61ab  gcc/testsuite/gfortran.dg/array_temporaries_4.f90
  68a0ae099cf3a8e847033f25e7fc97e0  gcc/testsuite/gfortran.dg/array_temporaries_5.f90
--- 83691,83697 ----
  8d40f37ca947eda247ef3465e6375e58  gcc/testsuite/gfortran.dg/array_simplify_3.f90
  9b6cc7f3255096169f14ac77758245e3  gcc/testsuite/gfortran.dg/array_simplify_4.f90
  eaa667329c0ac254f7386a2733317553  gcc/testsuite/gfortran.dg/array_temporaries_1.f90
! e348c3d9ca693393738f3a521dcc0699  gcc/testsuite/gfortran.dg/array_temporaries_2.f90
  58a1a563e62c42ecf81647ce0fff97a1  gcc/testsuite/gfortran.dg/array_temporaries_3.f90
  1a5fac20b3c5bae4bfab9480278e61ab  gcc/testsuite/gfortran.dg/array_temporaries_4.f90
  68a0ae099cf3a8e847033f25e7fc97e0  gcc/testsuite/gfortran.dg/array_temporaries_5.f90
*************** ca5ed9b7a4b086d732df1a505d87813b  gcc/te
*** 78459,78465 ****
  d6fad859ae9f254219fe0b62c52472a0  gcc/testsuite/gfortran.dg/arrayio_9.f90
  a7a4d71734bf9559e09017fe4616e065  gcc/testsuite/gfortran.dg/arrayio_derived_1.f90
  2b2c726e08ba1c26507c7392e63e1029  gcc/testsuite/gfortran.dg/arrayio_derived_2.f90
! 71fed75604e326d0453d0854d6389cae  gcc/testsuite/gfortran.dg/asan/asan.exp
  3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan/associate_58.f90
  e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan/associate_59.f90
  66de6cb3bf07d14487491fac7d1ee72f  gcc/testsuite/gfortran.dg/asan/pointer_assign_16.f90
--- 83714,83720 ----
  d6fad859ae9f254219fe0b62c52472a0  gcc/testsuite/gfortran.dg/arrayio_9.f90
  a7a4d71734bf9559e09017fe4616e065  gcc/testsuite/gfortran.dg/arrayio_derived_1.f90
  2b2c726e08ba1c26507c7392e63e1029  gcc/testsuite/gfortran.dg/arrayio_derived_2.f90
! b2e6281180a54adeebe04844e3233ce6  gcc/testsuite/gfortran.dg/asan/asan.exp
  3b8425a2f59699b47aac6da29c11aba9  gcc/testsuite/gfortran.dg/asan/associate_58.f90
  e9f58df1de071d2b106b16b3af8f6764  gcc/testsuite/gfortran.dg/asan/associate_59.f90
  66de6cb3bf07d14487491fac7d1ee72f  gcc/testsuite/gfortran.dg/asan/pointer_assign_16.f90
*************** c066328da870ad9b313bf9491c5b72d6  gcc/te
*** 78498,78505 ****
  05946e57f721e0366862df1afae6f83d  gcc/testsuite/gfortran.dg/associate_22.f90
  5d332a5aaff5d6bc61608a0d58297202  gcc/testsuite/gfortran.dg/associate_23.f90
  7e01c786b8c72874d3ae753530cfb5cb  gcc/testsuite/gfortran.dg/associate_24.f90
! 55bfeb67bee60022ebbe2186b11826b6  gcc/testsuite/gfortran.dg/associate_25.f90
  c0997c9e951767642f9b109c7f40a532  gcc/testsuite/gfortran.dg/associate_26.f90
  aecd7da9302bacf7aeebde56d90a2445  gcc/testsuite/gfortran.dg/associate_27.f90
  366c019a469c1a5eac01c46514e12c86  gcc/testsuite/gfortran.dg/associate_28.f90
  9236179c94e8ef2f6258dcf917d9dee9  gcc/testsuite/gfortran.dg/associate_29.f90
--- 83753,83761 ----
  05946e57f721e0366862df1afae6f83d  gcc/testsuite/gfortran.dg/associate_22.f90
  5d332a5aaff5d6bc61608a0d58297202  gcc/testsuite/gfortran.dg/associate_23.f90
  7e01c786b8c72874d3ae753530cfb5cb  gcc/testsuite/gfortran.dg/associate_24.f90
! ae68328c5818805b0dcdeb500caafce5  gcc/testsuite/gfortran.dg/associate_25.f90
  c0997c9e951767642f9b109c7f40a532  gcc/testsuite/gfortran.dg/associate_26.f90
+ 000795c302b3191fa720282e0b5b71c8  gcc/testsuite/gfortran.dg/associate_26a.f90
  aecd7da9302bacf7aeebde56d90a2445  gcc/testsuite/gfortran.dg/associate_27.f90
  366c019a469c1a5eac01c46514e12c86  gcc/testsuite/gfortran.dg/associate_28.f90
  9236179c94e8ef2f6258dcf917d9dee9  gcc/testsuite/gfortran.dg/associate_29.f90
*************** bf4b33b033f4afc9c22972f4a83b0173  gcc/te
*** 78521,78540 ****
  9a37c444f19b419083ffbbdcc1e8eb59  gcc/testsuite/gfortran.dg/associate_44.f90
  7fad3b7f1aa2cb37c44fc3ed9200f295  gcc/testsuite/gfortran.dg/associate_45.f90
  6143ba2a228800dde0bd37f3665e0994  gcc/testsuite/gfortran.dg/associate_46.f90
! 9d5df5da202bebcf02ce0c435182480d  gcc/testsuite/gfortran.dg/associate_47.f90
  7f0d491f64378402b0b0490c368b1523  gcc/testsuite/gfortran.dg/associate_48.f90
  c73b6100086b4db74c5f70aa2b7a9af6  gcc/testsuite/gfortran.dg/associate_49.f90
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
  959ef371b303a2ac1ccc0114cb19ad3a  gcc/testsuite/gfortran.dg/associate_50.f90
! 72c822258582360198ac915c9b7de7d6  gcc/testsuite/gfortran.dg/associate_51.f90
  9227f9deb3946ff1f97accf4b6250ac7  gcc/testsuite/gfortran.dg/associate_52.f90
  c00a8dd4766b03f7af8034f983b17dae  gcc/testsuite/gfortran.dg/associate_53.f90
! 13a1be9babd60d4e08197194fd394d19  gcc/testsuite/gfortran.dg/associate_54.f90
  a33adc54f6651cbed7e49f420e779c05  gcc/testsuite/gfortran.dg/associate_55.f90
  e266ed6fc3d13470e97d022451deea4e  gcc/testsuite/gfortran.dg/associate_56.f90
  0dd4c19a8ee9b0815baed4922597d206  gcc/testsuite/gfortran.dg/associate_57.f90
  65dc8227452a184626d85e599ab1382d  gcc/testsuite/gfortran.dg/associate_58.f90
  fe80c25bfc4d1e630472420bac3dc836  gcc/testsuite/gfortran.dg/associate_6.f03
  ac2154aefe0a4ce981b3fa252235e2dd  gcc/testsuite/gfortran.dg/associate_7.f03
  3c2206420bb8717914aa447789b5f079  gcc/testsuite/gfortran.dg/associate_8.f03
  0406413659a92c10d44ed1f1576987b9  gcc/testsuite/gfortran.dg/associate_9.f03
--- 83777,83798 ----
  9a37c444f19b419083ffbbdcc1e8eb59  gcc/testsuite/gfortran.dg/associate_44.f90
  7fad3b7f1aa2cb37c44fc3ed9200f295  gcc/testsuite/gfortran.dg/associate_45.f90
  6143ba2a228800dde0bd37f3665e0994  gcc/testsuite/gfortran.dg/associate_46.f90
! 87deb2aface215fdbc9c1bd641d49e46  gcc/testsuite/gfortran.dg/associate_47.f90
  7f0d491f64378402b0b0490c368b1523  gcc/testsuite/gfortran.dg/associate_48.f90
  c73b6100086b4db74c5f70aa2b7a9af6  gcc/testsuite/gfortran.dg/associate_49.f90
  5dfaf5e9c3d8b8b8f835046ca42ccbf4  gcc/testsuite/gfortran.dg/associate_5.f03
  959ef371b303a2ac1ccc0114cb19ad3a  gcc/testsuite/gfortran.dg/associate_50.f90
! 0203f4cea50a77f1e902a5cab76071cc  gcc/testsuite/gfortran.dg/associate_51.f90
  9227f9deb3946ff1f97accf4b6250ac7  gcc/testsuite/gfortran.dg/associate_52.f90
  c00a8dd4766b03f7af8034f983b17dae  gcc/testsuite/gfortran.dg/associate_53.f90
! 1ef13794d19d5e1db5cd12f4d0d15e2b  gcc/testsuite/gfortran.dg/associate_54.f90
  a33adc54f6651cbed7e49f420e779c05  gcc/testsuite/gfortran.dg/associate_55.f90
  e266ed6fc3d13470e97d022451deea4e  gcc/testsuite/gfortran.dg/associate_56.f90
  0dd4c19a8ee9b0815baed4922597d206  gcc/testsuite/gfortran.dg/associate_57.f90
  65dc8227452a184626d85e599ab1382d  gcc/testsuite/gfortran.dg/associate_58.f90
+ 825eaf5925a60c0372e9123d34b7b9cf  gcc/testsuite/gfortran.dg/associate_59.f90
  fe80c25bfc4d1e630472420bac3dc836  gcc/testsuite/gfortran.dg/associate_6.f03
+ e9397925a65e83d2a17ebe43551198a1  gcc/testsuite/gfortran.dg/associate_60.f90
  ac2154aefe0a4ce981b3fa252235e2dd  gcc/testsuite/gfortran.dg/associate_7.f03
  3c2206420bb8717914aa447789b5f079  gcc/testsuite/gfortran.dg/associate_8.f03
  0406413659a92c10d44ed1f1576987b9  gcc/testsuite/gfortran.dg/associate_9.f03
*************** bd5ff6db107b9430b2910d499614a059  gcc/te
*** 78611,78617 ****
  f38416d17dca3a9330976fd24749e371  gcc/testsuite/gfortran.dg/assumed_size_2.f90
  cdbd174fba27a1cc2fe42d6e10b97afd  gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90
  84023ba758ead2b3e1f8613aa07f564c  gcc/testsuite/gfortran.dg/assumed_size_refs_1.f90
! 8a906da2dd57160bc40a533546e0e98c  gcc/testsuite/gfortran.dg/assumed_size_refs_2.f90
  8bf64bb3c49e7fe58c386a66c599504b  gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90
  3e96e44672f88b56bd72f233716f03cd  gcc/testsuite/gfortran.dg/assumed_size_refs_4.f90
  6637ca606075a490a8af76882f9b6797  gcc/testsuite/gfortran.dg/assumed_type_1.f90
--- 83869,83875 ----
  f38416d17dca3a9330976fd24749e371  gcc/testsuite/gfortran.dg/assumed_size_2.f90
  cdbd174fba27a1cc2fe42d6e10b97afd  gcc/testsuite/gfortran.dg/assumed_size_dt_dummy.f90
  84023ba758ead2b3e1f8613aa07f564c  gcc/testsuite/gfortran.dg/assumed_size_refs_1.f90
! c39f559443b43c38edca810fe8396be5  gcc/testsuite/gfortran.dg/assumed_size_refs_2.f90
  8bf64bb3c49e7fe58c386a66c599504b  gcc/testsuite/gfortran.dg/assumed_size_refs_3.f90
  3e96e44672f88b56bd72f233716f03cd  gcc/testsuite/gfortran.dg/assumed_size_refs_4.f90
  6637ca606075a490a8af76882f9b6797  gcc/testsuite/gfortran.dg/assumed_type_1.f90
*************** cdbd174fba27a1cc2fe42d6e10b97afd  gcc/te
*** 78621,78626 ****
--- 83879,83886 ----
  0095136d0d15572b5df206c55509eee2  gcc/testsuite/gfortran.dg/assumed_type_13.c
  aaa14d6b1495ceba3d81c88a0d4874c5  gcc/testsuite/gfortran.dg/assumed_type_13.f90
  6196ee8a3a5f8e7bc5fb5032beb824b8  gcc/testsuite/gfortran.dg/assumed_type_14.f90
+ 1e502a6ae56ba9a10c513dd1bb955b6f  gcc/testsuite/gfortran.dg/assumed_type_16.f90
+ 05cb5d7dd6f73991a107f383f8378940  gcc/testsuite/gfortran.dg/assumed_type_17.f90
  344877f098e4c4d5e54723572dcff5b8  gcc/testsuite/gfortran.dg/assumed_type_2.f90
  e7b3eba9964feebc5c27a78154c7b547  gcc/testsuite/gfortran.dg/assumed_type_2a.f90
  27b0b5ad82abb1d06990db9025f0c992  gcc/testsuite/gfortran.dg/assumed_type_3.f90
*************** a2b1720fb52e74e61ef6219cf15146ec  gcc/te
*** 78649,78655 ****
  6a1dd73192d8b7f3e1546ad2a85e62ce  gcc/testsuite/gfortran.dg/auto_char_len_4.f90
  3f5616dbda1b8114eac0331ac7ce68ea  gcc/testsuite/gfortran.dg/auto_char_pointer_array_result_1.f90
  26a74c02ca0f14bcd415e65e87c265de  gcc/testsuite/gfortran.dg/auto_dealloc_1.f90
! f7d3d9af465511a1a9ca5340ae336a78  gcc/testsuite/gfortran.dg/auto_dealloc_2.f90
  bf15104594bd1550a70335dc1cbe8a00  gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90
  62961280d2482066320022be58f5e75c  gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90
  476606a2f74cc701921dd605311d07b2  gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90
--- 83909,83915 ----
  6a1dd73192d8b7f3e1546ad2a85e62ce  gcc/testsuite/gfortran.dg/auto_char_len_4.f90
  3f5616dbda1b8114eac0331ac7ce68ea  gcc/testsuite/gfortran.dg/auto_char_pointer_array_result_1.f90
  26a74c02ca0f14bcd415e65e87c265de  gcc/testsuite/gfortran.dg/auto_dealloc_1.f90
! 86d93a95da9b2b5dbaa149440c999c16  gcc/testsuite/gfortran.dg/auto_dealloc_2.f90
  bf15104594bd1550a70335dc1cbe8a00  gcc/testsuite/gfortran.dg/auto_in_equiv_1.f90
  62961280d2482066320022be58f5e75c  gcc/testsuite/gfortran.dg/auto_in_equiv_2.f90
  476606a2f74cc701921dd605311d07b2  gcc/testsuite/gfortran.dg/auto_in_equiv_3.f90
*************** cd4aa7232c928332e81cd4789dde35b5  gcc/te
*** 78697,78714 ****
  9969185b5b657469b14a9f67f9a454ce  gcc/testsuite/gfortran.dg/besxy.f90
  93acf2e57d0045b0633aab0d87f61c61  gcc/testsuite/gfortran.dg/bind-c-char-descr.f90
  cd653804ae21bc8cf96d9dc3a7693eea  gcc/testsuite/gfortran.dg/bind-c-contiguous-1.c
! cb0f8ed7e8b8d5c059565cf119f18b02  gcc/testsuite/gfortran.dg/bind-c-contiguous-1.f90
  ca02676b41a4019beb27cc5105ed7d00  gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90
  ef79c4b04029319cd1bd66b624b9b837  gcc/testsuite/gfortran.dg/bind-c-contiguous-3.c
  9533d3411e1d317fc76ffaede5696abc  gcc/testsuite/gfortran.dg/bind-c-contiguous-3.f90
  da9a408376c305a48f33743a14d13fae  gcc/testsuite/gfortran.dg/bind-c-contiguous-4.c
! 40c40be8764f158bc0a518b711ddab83  gcc/testsuite/gfortran.dg/bind-c-contiguous-4.f90
  e7bca71ec4d6bce1a6fc47c9a7d91eac  gcc/testsuite/gfortran.dg/bind-c-contiguous-5.c
! c4c32fa7db37b42da6f9265579d610b4  gcc/testsuite/gfortran.dg/bind-c-contiguous-5.f90
  62e0dddc82e5528eb1851e887fcffbef  gcc/testsuite/gfortran.dg/bind-c-intent-out.f90
  1e97a2cc549ae76c480c160ef4a2470e  gcc/testsuite/gfortran.dg/bind_c_18.f90
  5057ed3328fade26b68ee446f3dbc8dc  gcc/testsuite/gfortran.dg/bind_c_array_params.f03
! a682c9a07b1430138223515c37de3c4c  gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
  f6b29bf5e92ef393f02569bb463be585  gcc/testsuite/gfortran.dg/bind_c_array_params_3.f90
  d41af4b478a07609969794a1185527aa  gcc/testsuite/gfortran.dg/bind_c_array_params_3_aux.c
  64b1da6deddc65df427e780f5980935a  gcc/testsuite/gfortran.dg/bind_c_bool_1.f90
--- 83957,83974 ----
  9969185b5b657469b14a9f67f9a454ce  gcc/testsuite/gfortran.dg/besxy.f90
  93acf2e57d0045b0633aab0d87f61c61  gcc/testsuite/gfortran.dg/bind-c-char-descr.f90
  cd653804ae21bc8cf96d9dc3a7693eea  gcc/testsuite/gfortran.dg/bind-c-contiguous-1.c
! d5402b14bd6a284012b304876e8a8258  gcc/testsuite/gfortran.dg/bind-c-contiguous-1.f90
  ca02676b41a4019beb27cc5105ed7d00  gcc/testsuite/gfortran.dg/bind-c-contiguous-2.f90
  ef79c4b04029319cd1bd66b624b9b837  gcc/testsuite/gfortran.dg/bind-c-contiguous-3.c
  9533d3411e1d317fc76ffaede5696abc  gcc/testsuite/gfortran.dg/bind-c-contiguous-3.f90
  da9a408376c305a48f33743a14d13fae  gcc/testsuite/gfortran.dg/bind-c-contiguous-4.c
! dd1f381d685f73af7f938a4e2b26c176  gcc/testsuite/gfortran.dg/bind-c-contiguous-4.f90
  e7bca71ec4d6bce1a6fc47c9a7d91eac  gcc/testsuite/gfortran.dg/bind-c-contiguous-5.c
! feec967a6460656dffcd67e2440eb28d  gcc/testsuite/gfortran.dg/bind-c-contiguous-5.f90
  62e0dddc82e5528eb1851e887fcffbef  gcc/testsuite/gfortran.dg/bind-c-intent-out.f90
  1e97a2cc549ae76c480c160ef4a2470e  gcc/testsuite/gfortran.dg/bind_c_18.f90
  5057ed3328fade26b68ee446f3dbc8dc  gcc/testsuite/gfortran.dg/bind_c_array_params.f03
! 7dbf0c5abf809608d8b393d1a373d0c2  gcc/testsuite/gfortran.dg/bind_c_array_params_2.f90
  f6b29bf5e92ef393f02569bb463be585  gcc/testsuite/gfortran.dg/bind_c_array_params_3.f90
  d41af4b478a07609969794a1185527aa  gcc/testsuite/gfortran.dg/bind_c_array_params_3_aux.c
  64b1da6deddc65df427e780f5980935a  gcc/testsuite/gfortran.dg/bind_c_bool_1.f90
*************** cb9ccf001da2d7d1cf77a7d2e9ebeed2  gcc/te
*** 78737,78742 ****
--- 83997,84003 ----
  fe8c5e542693077295c21e4aaab6c998  gcc/testsuite/gfortran.dg/bind_c_procs.f03
  55687585265263f1b2e68929e4c12de3  gcc/testsuite/gfortran.dg/bind_c_procs_2.f90
  67f38e9de2f12b98af2d4078c0fbac44  gcc/testsuite/gfortran.dg/bind_c_procs_3.f90
+ 78b1fc6968a79c7bb681dddb89a57e29  gcc/testsuite/gfortran.dg/bind_c_procs_4.f90
  2cc63ce957c741a528e61122b04f0d1e  gcc/testsuite/gfortran.dg/bind_c_usage_10.f03
  a36b44815629dbcd75c464bc0fa19b07  gcc/testsuite/gfortran.dg/bind_c_usage_10_c.c
  8dafefdc5a4061f2510ef215d2b663ff  gcc/testsuite/gfortran.dg/bind_c_usage_11.f03
*************** fd5aa0aeb583bf1c520647699c09098c  gcc/te
*** 78768,78773 ****
--- 84029,84035 ----
  1176bc1003bc9902e2cbbd0881833a6a  gcc/testsuite/gfortran.dg/bind_c_usage_32.f90
  487ac439b45d829bb00287edc9eb7e78  gcc/testsuite/gfortran.dg/bind_c_usage_33.f90
  5ba4c967cb57e47c3083d78e775e9474  gcc/testsuite/gfortran.dg/bind_c_usage_33_c.c
+ fe581e5151066f7aab1872a01eedd446  gcc/testsuite/gfortran.dg/bind_c_usage_34.f90
  d245d9e737fbf5c0213b3df7d060446c  gcc/testsuite/gfortran.dg/bind_c_usage_5.f03
  1b4c4194bd216642b83f69c705e997b9  gcc/testsuite/gfortran.dg/bind_c_usage_6.f03
  298c127c34080232f15365f9c6db6fc0  gcc/testsuite/gfortran.dg/bind_c_usage_7.f03
*************** a52fd98d7c45bd910c1ed53911315920  gcc/te
*** 78952,78958 ****
  eeb705b4f4aa28e01f56aacb185b94fc  gcc/testsuite/gfortran.dg/byte_4.f90
  3a776bedb32ad2b9573686d515d62149  gcc/testsuite/gfortran.dg/c-interop/allocatable-dummy-c.c
  870554cd81da0008c8ebd14ff9b81c7e  gcc/testsuite/gfortran.dg/c-interop/allocatable-dummy.f90
! 51ba199a6f152ff1140a6c164b3c0a58  gcc/testsuite/gfortran.dg/c-interop/allocatable-optional-pointer.f90
  7efc95be5c5106a9bf6039c07064a0e9  gcc/testsuite/gfortran.dg/c-interop/allocate-c.c
  9e8db9a70f750726f64c33febc6a16f7  gcc/testsuite/gfortran.dg/c-interop/allocate-errors-c.c
  5bea52eb5a1ddcb30cd03891814af5be  gcc/testsuite/gfortran.dg/c-interop/allocate-errors.f90
--- 84214,84220 ----
  eeb705b4f4aa28e01f56aacb185b94fc  gcc/testsuite/gfortran.dg/byte_4.f90
  3a776bedb32ad2b9573686d515d62149  gcc/testsuite/gfortran.dg/c-interop/allocatable-dummy-c.c
  870554cd81da0008c8ebd14ff9b81c7e  gcc/testsuite/gfortran.dg/c-interop/allocatable-dummy.f90
! 065d7ce5f8cd35fce5aa00bbb508d25c  gcc/testsuite/gfortran.dg/c-interop/allocatable-optional-pointer.f90
  7efc95be5c5106a9bf6039c07064a0e9  gcc/testsuite/gfortran.dg/c-interop/allocate-c.c
  9e8db9a70f750726f64c33febc6a16f7  gcc/testsuite/gfortran.dg/c-interop/allocate-errors-c.c
  5bea52eb5a1ddcb30cd03891814af5be  gcc/testsuite/gfortran.dg/c-interop/allocate-errors.f90
*************** fac1e0eef372f71d706c30f1311cf959  gcc/te
*** 78966,78989 ****
  47a7c8e0cbe96b57e059822a941e38ff  gcc/testsuite/gfortran.dg/c-interop/argument-association-assumed-rank-7.f90
  9a80266656ceb43a0a581916f7718edf  gcc/testsuite/gfortran.dg/c-interop/argument-association-assumed-rank-8.f90
  a4c3a5f902ab2517633f83862a2d36db  gcc/testsuite/gfortran.dg/c-interop/assumed-type-dummy.f90
! 98037624b2cec02ee1da9a3b07aa206c  gcc/testsuite/gfortran.dg/c-interop/c-interop.exp
  309302f256fed78b85c12bcd85ae1482  gcc/testsuite/gfortran.dg/c-interop/c1255-1.f90
  cd5b73b03b44373ae724b6b48dcfe263  gcc/testsuite/gfortran.dg/c-interop/c1255-2.f90
  b856ec2d6049479b49cfdb5d1ae43550  gcc/testsuite/gfortran.dg/c-interop/c1255a.f90
! f4ef2a2a44e97c4aef6d95ade5a23f73  gcc/testsuite/gfortran.dg/c-interop/c407a-1.f90
  a7d32d5fe5a2c8974b258035dfb1d7f6  gcc/testsuite/gfortran.dg/c-interop/c407a-2.f90
! 01a106ddd19f10a512f03d97779424a0  gcc/testsuite/gfortran.dg/c-interop/c407b-1.f90
! 27738d357ea7acdd79bc1f59e68c6c96  gcc/testsuite/gfortran.dg/c-interop/c407b-2.f90
! 944154928e02eeb59188f73eae6ea8a3  gcc/testsuite/gfortran.dg/c-interop/c407c-1.f90
  acc32b807a8cf30697ac24ce85728d0d  gcc/testsuite/gfortran.dg/c-interop/c516.f90
  edaab2c750f1a2a6f3a06ed229a72e2a  gcc/testsuite/gfortran.dg/c-interop/c524a.f90
! 3181db4347add0defee73cf12bed71fe  gcc/testsuite/gfortran.dg/c-interop/c535a-1.f90
! 5433f37f55a5330af302aac13d738db9  gcc/testsuite/gfortran.dg/c-interop/c535a-2.f90
! 6fcccef3ef322e74e6aa96ebccf81faf  gcc/testsuite/gfortran.dg/c-interop/c535b-1.f90
! babeafa4c37a6503cfba2934a69f6859  gcc/testsuite/gfortran.dg/c-interop/c535b-2.f90
! 210743c118c1b50d2c8779d9732c61f3  gcc/testsuite/gfortran.dg/c-interop/c535b-3.f90
! 646b8eb956509b9b9d2bbc38a96b0c26  gcc/testsuite/gfortran.dg/c-interop/c535c-1.f90
! c935e8d57d55abf6e69c6e38fcefed04  gcc/testsuite/gfortran.dg/c-interop/c535c-2.f90
  5f62a6689a58c84de17fc729577fe93f  gcc/testsuite/gfortran.dg/c-interop/c535c-3.f90
  b06de48d85160686b8ad6ba5ce5fd067  gcc/testsuite/gfortran.dg/c-interop/c535c-4.f90
  715c32b5232595131980a6c920635fe5  gcc/testsuite/gfortran.dg/c-interop/cf-descriptor-1-c.c
--- 84228,84251 ----
  47a7c8e0cbe96b57e059822a941e38ff  gcc/testsuite/gfortran.dg/c-interop/argument-association-assumed-rank-7.f90
  9a80266656ceb43a0a581916f7718edf  gcc/testsuite/gfortran.dg/c-interop/argument-association-assumed-rank-8.f90
  a4c3a5f902ab2517633f83862a2d36db  gcc/testsuite/gfortran.dg/c-interop/assumed-type-dummy.f90
! 73898eb457be0bc70ed0a1fce6646a40  gcc/testsuite/gfortran.dg/c-interop/c-interop.exp
  309302f256fed78b85c12bcd85ae1482  gcc/testsuite/gfortran.dg/c-interop/c1255-1.f90
  cd5b73b03b44373ae724b6b48dcfe263  gcc/testsuite/gfortran.dg/c-interop/c1255-2.f90
  b856ec2d6049479b49cfdb5d1ae43550  gcc/testsuite/gfortran.dg/c-interop/c1255a.f90
! ee20137154331a7dcd32ed8b19a76b69  gcc/testsuite/gfortran.dg/c-interop/c407a-1.f90
  a7d32d5fe5a2c8974b258035dfb1d7f6  gcc/testsuite/gfortran.dg/c-interop/c407a-2.f90
! 808729c33da719153df368c479f075e7  gcc/testsuite/gfortran.dg/c-interop/c407b-1.f90
! f71d849cf530ccd35a21d3feeee74cfc  gcc/testsuite/gfortran.dg/c-interop/c407b-2.f90
! 7e52a15dba06255f44f68e58d8d67aea  gcc/testsuite/gfortran.dg/c-interop/c407c-1.f90
  acc32b807a8cf30697ac24ce85728d0d  gcc/testsuite/gfortran.dg/c-interop/c516.f90
  edaab2c750f1a2a6f3a06ed229a72e2a  gcc/testsuite/gfortran.dg/c-interop/c524a.f90
! 9f82c13e409f84c4bada41d2d628ff11  gcc/testsuite/gfortran.dg/c-interop/c535a-1.f90
! 694baf5913b33a35d3d4957d7e789782  gcc/testsuite/gfortran.dg/c-interop/c535a-2.f90
! 6139dbae912b19b95cabc946abd19b7f  gcc/testsuite/gfortran.dg/c-interop/c535b-1.f90
! 62e8725aa061392325e4bd8ce8caf441  gcc/testsuite/gfortran.dg/c-interop/c535b-2.f90
! dae80a004a4226b757cd9a6c03d70b3b  gcc/testsuite/gfortran.dg/c-interop/c535b-3.f90
! 8b0a9a0e62febcf53ef7af4c36ef9ffb  gcc/testsuite/gfortran.dg/c-interop/c535c-1.f90
! 7a7853020691f0fc897ba42157d37083  gcc/testsuite/gfortran.dg/c-interop/c535c-2.f90
  5f62a6689a58c84de17fc729577fe93f  gcc/testsuite/gfortran.dg/c-interop/c535c-3.f90
  b06de48d85160686b8ad6ba5ce5fd067  gcc/testsuite/gfortran.dg/c-interop/c535c-4.f90
  715c32b5232595131980a6c920635fe5  gcc/testsuite/gfortran.dg/c-interop/cf-descriptor-1-c.c
*************** b7f1af97178bf5a82635203dc873a9de  gcc/te
*** 79020,79027 ****
  3eba2a660b69782b7134a7868c404312  gcc/testsuite/gfortran.dg/c-interop/contiguous-2.f90
  34c23abd9d1282ac1bdf34408ea25b85  gcc/testsuite/gfortran.dg/c-interop/contiguous-3-c.c
  e7845079fed9556e24e81cbef23553a5  gcc/testsuite/gfortran.dg/c-interop/contiguous-3.f90
! ec4d2738a934eca22d1e8e2dd9a2cdbf  gcc/testsuite/gfortran.dg/c-interop/deferred-character-1.f90
! abed1e13399fac5502c10d4110862f06  gcc/testsuite/gfortran.dg/c-interop/deferred-character-2.f90
  3af864783561e123ca5b39080203cb5a  gcc/testsuite/gfortran.dg/c-interop/dump-descriptors.c
  1f13fc559e846572e031858b1cf1b37b  gcc/testsuite/gfortran.dg/c-interop/dump-descriptors.h
  89d82b92bc4c2251ff33ce0597515857  gcc/testsuite/gfortran.dg/c-interop/establish-c.c
--- 84282,84289 ----
  3eba2a660b69782b7134a7868c404312  gcc/testsuite/gfortran.dg/c-interop/contiguous-2.f90
  34c23abd9d1282ac1bdf34408ea25b85  gcc/testsuite/gfortran.dg/c-interop/contiguous-3-c.c
  e7845079fed9556e24e81cbef23553a5  gcc/testsuite/gfortran.dg/c-interop/contiguous-3.f90
! 2019fa6324edb3cad1527131b7d6be30  gcc/testsuite/gfortran.dg/c-interop/deferred-character-1.f90
! 460114eed7d02aae9c494947277336e8  gcc/testsuite/gfortran.dg/c-interop/deferred-character-2.f90
  3af864783561e123ca5b39080203cb5a  gcc/testsuite/gfortran.dg/c-interop/dump-descriptors.c
  1f13fc559e846572e031858b1cf1b37b  gcc/testsuite/gfortran.dg/c-interop/dump-descriptors.h
  89d82b92bc4c2251ff33ce0597515857  gcc/testsuite/gfortran.dg/c-interop/establish-c.c
*************** b6e6eca13239ad74e39e7ae7364bdaf0  gcc/te
*** 79047,79052 ****
--- 84309,84315 ----
  a1f7a9bb337bc4b7ecda29eae2747766  gcc/testsuite/gfortran.dg/c-interop/fc-descriptor-8.f90
  31b399ee7d4333e2477fc8b53e61ba30  gcc/testsuite/gfortran.dg/c-interop/fc-descriptor-9-c.c
  437a8f020289de077d683f57f54c430a  gcc/testsuite/gfortran.dg/c-interop/fc-descriptor-9.f90
+ 0ddae0ff22be50b48ba41fa094edacf1  gcc/testsuite/gfortran.dg/c-interop/fc-descriptor-pr108621.f90
  86b609a9608684b0a78977110ecea0a2  gcc/testsuite/gfortran.dg/c-interop/fc-out-descriptor-1-c.c
  d91eac03acc180dcbb46b3798f66d90b  gcc/testsuite/gfortran.dg/c-interop/fc-out-descriptor-1.f90
  86b609a9608684b0a78977110ecea0a2  gcc/testsuite/gfortran.dg/c-interop/fc-out-descriptor-2-c.c
*************** bd423adafd725c2228e295920c0db510  gcc/te
*** 79086,79095 ****
  7a18ab512bbfa99610eab9a334ac7e3c  gcc/testsuite/gfortran.dg/c-interop/pr103390-9.f90
  018d95c070c83cb9218fee64ae6c8a08  gcc/testsuite/gfortran.dg/c-interop/rank-class.f90
  5d109d67e9b883cd251cc70baa52140c  gcc/testsuite/gfortran.dg/c-interop/rank.f90
! a2e3dba03abc75a290796e2afbf50a5d  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-1.f90
! e10747846439f9b042678f9ddac6b408  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-2.f90
  edfcf5aec211ccd87b0a306c622d1de1  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-3.f90
! de41f79499bda039f9e05a4e6693acde  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-4.f90
  31f3d18125be651559c5d3ae8c230edb  gcc/testsuite/gfortran.dg/c-interop/section-1-c.c
  bd6620f4b559bdbe921426016e5405ce  gcc/testsuite/gfortran.dg/c-interop/section-1.f90
  cae64a06d7a387fa5396e3e42f5ba520  gcc/testsuite/gfortran.dg/c-interop/section-1p.f90
--- 84349,84358 ----
  7a18ab512bbfa99610eab9a334ac7e3c  gcc/testsuite/gfortran.dg/c-interop/pr103390-9.f90
  018d95c070c83cb9218fee64ae6c8a08  gcc/testsuite/gfortran.dg/c-interop/rank-class.f90
  5d109d67e9b883cd251cc70baa52140c  gcc/testsuite/gfortran.dg/c-interop/rank.f90
! 62fad9ceb8076e8ceaf3276465cad430  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-1.f90
! 6e607ca64192019ceed1ed7e1012dcf3  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-2.f90
  edfcf5aec211ccd87b0a306c622d1de1  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-3.f90
! ee9ee3435386242f87004e16b94950e4  gcc/testsuite/gfortran.dg/c-interop/removed-restrictions-4.f90
  31f3d18125be651559c5d3ae8c230edb  gcc/testsuite/gfortran.dg/c-interop/section-1-c.c
  bd6620f4b559bdbe921426016e5405ce  gcc/testsuite/gfortran.dg/c-interop/section-1.f90
  cae64a06d7a387fa5396e3e42f5ba520  gcc/testsuite/gfortran.dg/c-interop/section-1p.f90
*************** a2145d17a7bb317f42be3ffbec146f11  gcc/te
*** 79117,79123 ****
  d8c7022a40e820f9c12569e3a18082c8  gcc/testsuite/gfortran.dg/c-interop/size-bindc.f90
  b118592d11ec7228ff5fdf9367fc2b68  gcc/testsuite/gfortran.dg/c-interop/size-poly.f90
  dfc055b1cbaede099edb5e220bdadfd2  gcc/testsuite/gfortran.dg/c-interop/size.f90
! 06422b4a5a28bfd7c69b133fede578d9  gcc/testsuite/gfortran.dg/c-interop/tkr.f90
  4c6d1d9a4c5aab8c6fa45ba4f89b0b8f  gcc/testsuite/gfortran.dg/c-interop/typecodes-array-basic-c.c
  528fec6076f11ac9cc155f2dae639713  gcc/testsuite/gfortran.dg/c-interop/typecodes-array-basic.f90
  f9354d49184dbe6abf1fcf46887e3427  gcc/testsuite/gfortran.dg/c-interop/typecodes-array-char-c.c
--- 84380,84386 ----
  d8c7022a40e820f9c12569e3a18082c8  gcc/testsuite/gfortran.dg/c-interop/size-bindc.f90
  b118592d11ec7228ff5fdf9367fc2b68  gcc/testsuite/gfortran.dg/c-interop/size-poly.f90
  dfc055b1cbaede099edb5e220bdadfd2  gcc/testsuite/gfortran.dg/c-interop/size.f90
! e4a296721e38dfdcfb33163b2a6c3486  gcc/testsuite/gfortran.dg/c-interop/tkr.f90
  4c6d1d9a4c5aab8c6fa45ba4f89b0b8f  gcc/testsuite/gfortran.dg/c-interop/typecodes-array-basic-c.c
  528fec6076f11ac9cc155f2dae639713  gcc/testsuite/gfortran.dg/c-interop/typecodes-array-basic.f90
  f9354d49184dbe6abf1fcf46887e3427  gcc/testsuite/gfortran.dg/c-interop/typecodes-array-char-c.c
*************** aa59a3baf7de5feb8be06ee05faaa11a  gcc/te
*** 79252,79257 ****
--- 84515,84522 ----
  674fcb118703afdce719a2584839b8ed  gcc/testsuite/gfortran.dg/c_sizeof_6.f90
  ae61c2dcc3bff5189d5648a6564b3745  gcc/testsuite/gfortran.dg/change_symbol_attributes_1.f90
  bb5cfe93aa3c0d2700259294558753b1  gcc/testsuite/gfortran.dg/char4-subscript.f90
+ d9c1c06d7cddb2c4bf6dfda8b7c61b5f  gcc/testsuite/gfortran.dg/char4_decl-2.f90
+ bbedb36161e043f3de06adeccadefd35  gcc/testsuite/gfortran.dg/char4_decl.f90
  9f1fda5b71467c689905000a78f63255  gcc/testsuite/gfortran.dg/char4_iunit_1.f03
  9f49208809309c20d0e319c95a978a21  gcc/testsuite/gfortran.dg/char4_iunit_2.f03
  70afd65d545cb796f1318f2fd9ad20a0  gcc/testsuite/gfortran.dg/char_allocation_1.f90
*************** b83b7e261a9a0e3827f879ddb426c6e0  gcc/te
*** 79383,79388 ****
--- 84648,84654 ----
  26128bb808634bb38e1ff5896d22922a  gcc/testsuite/gfortran.dg/charlen_18.f90
  edd7153d14cf45e9e7f8eefeebb2fd1e  gcc/testsuite/gfortran.dg/check_bits_1.f90
  f3e206f29ff215308e9a52e0149775d5  gcc/testsuite/gfortran.dg/check_bits_2.f90
+ 21b2cb9d0db4ba6b9b2b1938c4561de0  gcc/testsuite/gfortran.dg/check_bits_3.f90
  8611f395b5429bd54cab0aef125f4641  gcc/testsuite/gfortran.dg/chkbits.f90
  77e2ad72a4abbea742260307f4624bbf  gcc/testsuite/gfortran.dg/chmod_1.f90
  02dc07586e9f642b39a4739a224cdfac  gcc/testsuite/gfortran.dg/chmod_2.f90
*************** cd9759177f83fe4b6a6a007850b05c80  gcc/te
*** 79460,79465 ****
--- 84726,84733 ----
  77eb9432daba5a35f6be287dfec77ae3  gcc/testsuite/gfortran.dg/class_71.f90
  92c121dc110b05822b93da0d70bcd5bb  gcc/testsuite/gfortran.dg/class_72.f90
  a2da662ef1c6e78fb94337f5f919de4b  gcc/testsuite/gfortran.dg/class_73.f90
+ cd4d5e082f353ac50f6bb47405608c31  gcc/testsuite/gfortran.dg/class_74.f90
+ ff53ec3db7460648db5445441eaa7533  gcc/testsuite/gfortran.dg/class_75.f90
  765b5ae237d318aee8909def266c457e  gcc/testsuite/gfortran.dg/class_8.f03
  6ad3d2ed9f82c5534e18375c93ce8c03  gcc/testsuite/gfortran.dg/class_9.f03
  eff35de84f2c16f8b8abcbc407237414  gcc/testsuite/gfortran.dg/class_alias.f90
*************** e19eff957a152bb40ff83e3f1272b502  gcc/te
*** 79518,79523 ****
--- 84786,84792 ----
  5e140393b972a46e3ea39e2ef34f7a13  gcc/testsuite/gfortran.dg/class_defined_operator_1.f03
  ca12379c27a4fe30e7ee16db70126a08  gcc/testsuite/gfortran.dg/class_defined_operator_2.f03
  bffd58c6eb392174540e5effb5007d27  gcc/testsuite/gfortran.dg/class_dummy_1.f03
+ 87c8513199b2315d905a0403a0dc3153  gcc/testsuite/gfortran.dg/class_dummy_10.f90
  695856ffada7ab91f95f3d41b3079166  gcc/testsuite/gfortran.dg/class_dummy_2.f03
  dbc20d52e3c86639db916ad3c6392de8  gcc/testsuite/gfortran.dg/class_dummy_3.f03
  3c084c9f366d687c0a674b8d42c2ea01  gcc/testsuite/gfortran.dg/class_dummy_4.f03
*************** dbc20d52e3c86639db916ad3c6392de8  gcc/te
*** 79531,79544 ****
  9602d01ce3a47f3e2255aba5f234d1ae  gcc/testsuite/gfortran.dg/class_optional_1.f90
  cafb289bb10efdba4439c0cbc685ba93  gcc/testsuite/gfortran.dg/class_optional_2.f90
  7c2579227e2041f067b68fc6f25175f5  gcc/testsuite/gfortran.dg/class_result_1.f03
! d42da1549b6ff2441e109550518cf366  gcc/testsuite/gfortran.dg/class_result_10.f90
  3b8f230b7e31089a91042ffa36e727e5  gcc/testsuite/gfortran.dg/class_result_2.f90
  12a03293fb1e007e7adb6942bfd53336  gcc/testsuite/gfortran.dg/class_result_3.f90
! 6b5e22364a04ac278db525f084255294  gcc/testsuite/gfortran.dg/class_result_4.f90
  d2967a78daeef70e6778f7494eb7cb83  gcc/testsuite/gfortran.dg/class_result_5.f90
  4dbfe87c10ecf9d56e42900f3a95243c  gcc/testsuite/gfortran.dg/class_result_6.f90
  f758820ceb8b3dc83b306077bb651d94  gcc/testsuite/gfortran.dg/class_result_7.f90
! 924a40de23355d710492b8d4784f4cd6  gcc/testsuite/gfortran.dg/class_result_8.f90
  686d23c53c03f7332239df5e9d999680  gcc/testsuite/gfortran.dg/class_result_9.f90
  501549cb6b29ee1beb8fa58fee1e24f1  gcc/testsuite/gfortran.dg/class_to_type_1.f03
  fda1f206c2e1ff5cd9f550d75873293b  gcc/testsuite/gfortran.dg/class_to_type_2.f90
--- 84800,84813 ----
  9602d01ce3a47f3e2255aba5f234d1ae  gcc/testsuite/gfortran.dg/class_optional_1.f90
  cafb289bb10efdba4439c0cbc685ba93  gcc/testsuite/gfortran.dg/class_optional_2.f90
  7c2579227e2041f067b68fc6f25175f5  gcc/testsuite/gfortran.dg/class_result_1.f03
! bca95871e256e6c26e96f9549d63c0a4  gcc/testsuite/gfortran.dg/class_result_10.f90
  3b8f230b7e31089a91042ffa36e727e5  gcc/testsuite/gfortran.dg/class_result_2.f90
  12a03293fb1e007e7adb6942bfd53336  gcc/testsuite/gfortran.dg/class_result_3.f90
! a3a784144a019012a2cf8e7a755bdf38  gcc/testsuite/gfortran.dg/class_result_4.f90
  d2967a78daeef70e6778f7494eb7cb83  gcc/testsuite/gfortran.dg/class_result_5.f90
  4dbfe87c10ecf9d56e42900f3a95243c  gcc/testsuite/gfortran.dg/class_result_6.f90
  f758820ceb8b3dc83b306077bb651d94  gcc/testsuite/gfortran.dg/class_result_7.f90
! 0e6302a923a3fbaaa7658b3eb1e06a1b  gcc/testsuite/gfortran.dg/class_result_8.f90
  686d23c53c03f7332239df5e9d999680  gcc/testsuite/gfortran.dg/class_result_9.f90
  501549cb6b29ee1beb8fa58fee1e24f1  gcc/testsuite/gfortran.dg/class_to_type_1.f03
  fda1f206c2e1ff5cd9f550d75873293b  gcc/testsuite/gfortran.dg/class_to_type_2.f90
*************** ceda0022b0324d13515320cbc5635d79  gcc/te
*** 79557,79563 ****
  360f9437516a1e9e5cdfcc0773038d80  gcc/testsuite/gfortran.dg/coarray/array_temporary.f90
  21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
  0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! a5906a392ddc33b86a5fb40bf238d925  gcc/testsuite/gfortran.dg/coarray/caf.exp
  07112584e3674fe4fcd6065abdaec329  gcc/testsuite/gfortran.dg/coarray/coarray_allocated.f90
  a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
--- 84826,84832 ----
  360f9437516a1e9e5cdfcc0773038d80  gcc/testsuite/gfortran.dg/coarray/array_temporary.f90
  21f18575fa619cf0b7fba877cb8db97f  gcc/testsuite/gfortran.dg/coarray/atomic_1.f90
  0268d93e6cda40e43a982efb5b3db96a  gcc/testsuite/gfortran.dg/coarray/atomic_2.f90
! 966bbc92a60145bef8575c506f15e072  gcc/testsuite/gfortran.dg/coarray/caf.exp
  07112584e3674fe4fcd6065abdaec329  gcc/testsuite/gfortran.dg/coarray/coarray_allocated.f90
  a8535ad2a515ec0df0ef730df6f14831  gcc/testsuite/gfortran.dg/coarray/codimension.f90
  5458460c74c7764eb6fc6ca41f3520cb  gcc/testsuite/gfortran.dg/coarray/codimension_2.f90
*************** f53ac06d9bda6a69841a8fb389e20622  gcc/te
*** 79596,79601 ****
--- 84865,84871 ----
  9087fbbcf8b9fa18cd40d37049454317  gcc/testsuite/gfortran.dg/coarray/poly_run_1.f90
  33490e10cc884f2605a30c4142056c08  gcc/testsuite/gfortran.dg/coarray/poly_run_2.f90
  4a38a76fec0e874592a1f9fb9f16c668  gcc/testsuite/gfortran.dg/coarray/poly_run_3.f90
+ 4b0341b2a1bb1e5bdc699106788a0a18  gcc/testsuite/gfortran.dg/coarray/pr107441-caf.f90
  908a6caa4e0b07e2cb6a80b7284553a9  gcc/testsuite/gfortran.dg/coarray/pr93671.f90
  b324389289606e577a87ba1c672a3812  gcc/testsuite/gfortran.dg/coarray/ptr_comp_1.f08
  7f10b2e799cec0c22aaebfa60b26756a  gcc/testsuite/gfortran.dg/coarray/ptr_comp_2.f08
*************** bdfb211ff859c6346ab45b3805256ba0  gcc/te
*** 79661,79666 ****
--- 84931,84937 ----
  71dbc67a835765d79b82368a016a86e2  gcc/testsuite/gfortran.dg/coarray_48.f90
  c158873a9363ff1c59e6f85586024f23  gcc/testsuite/gfortran.dg/coarray_49.f90
  ef172e1d19584d7e55648b555dbf8fa3  gcc/testsuite/gfortran.dg/coarray_5.f90
+ 4d55736255408e9194fe072b21934cf9  gcc/testsuite/gfortran.dg/coarray_50.f90
  337935b709715398df39ee0eeaaec67b  gcc/testsuite/gfortran.dg/coarray_6.f90
  8c9859e53f0764f4cc3872bb5b76dd41  gcc/testsuite/gfortran.dg/coarray_7.f90
  8ee88d8049750d443475d7289d4c08f2  gcc/testsuite/gfortran.dg/coarray_8.f90
*************** f1da6751bbd1a6186b7f03b7f7e77113  gcc/te
*** 79792,79797 ****
--- 85063,85069 ----
  d3d62d1603bee1c8f8a03953e6eebba0  gcc/testsuite/gfortran.dg/common_24.f
  d5539b20ee7c35bfc0fcb236052a68ea  gcc/testsuite/gfortran.dg/common_25.f90
  70a95b679d7df7dca534b69660b7f48b  gcc/testsuite/gfortran.dg/common_26.f90
+ d92cf739756be07096c110006ed91771  gcc/testsuite/gfortran.dg/common_27.f90
  75ce44e9a564ff39f5a9738947fd61f0  gcc/testsuite/gfortran.dg/common_3.f90
  d682a44a03643151e3f0046fc043a5f0  gcc/testsuite/gfortran.dg/common_4.f90
  d2308c0b53d688aae1dcd0e309cb63c2  gcc/testsuite/gfortran.dg/common_5.f
*************** b3bd24f0c174a1694bc02107df47994b  gcc/te
*** 79847,79852 ****
--- 85119,85125 ----
  15d395123762efd5ca05e607a91f1572  gcc/testsuite/gfortran.dg/contiguous_1.f90
  d679116c9da43355228e413e4d728bf6  gcc/testsuite/gfortran.dg/contiguous_10.f90
  cb50185eaf87f5357dad5873642eec33  gcc/testsuite/gfortran.dg/contiguous_11.f90
+ 68eb9244ed2d584beb39fffd7e64f96d  gcc/testsuite/gfortran.dg/contiguous_12.f90
  9975df3f787a3eaea63dd5664ff235eb  gcc/testsuite/gfortran.dg/contiguous_2.f90
  a59d0430a52a3cf47c280856725dee23  gcc/testsuite/gfortran.dg/contiguous_3.f90
  b81d56e35fe81ed4c9f6f67cca8a0ab2  gcc/testsuite/gfortran.dg/contiguous_4.f90
*************** adf3e611b5d9dd41324a93faee4fe2c9  gcc/te
*** 79947,79955 ****
  88c4e7deca20be3e33e616092b99e017  gcc/testsuite/gfortran.dg/deallocate_error_4.f90
  70bd882ce015f7f82966397339ec0d16  gcc/testsuite/gfortran.dg/deallocate_stat.f90
  b2d4c30c54f17f05d0e6d3ae921a7be8  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
! bdc904a1bfcc31345e087bcfae616335  gcc/testsuite/gfortran.dg/debug/debug.exp
  c8fe955f02d446b949b45194c7d29caf  gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
- b39fe2f506d09f10d8bf08a208eeb72f  gcc/testsuite/gfortran.dg/debug/pr35154-stabs.f
  9afde2cd5a8b47b5c4a2b2438fcd4de6  gcc/testsuite/gfortran.dg/debug/pr37738.f
  788a70497a0a2ddba0abf97330a47c01  gcc/testsuite/gfortran.dg/debug/pr43166.f
  f49bca9d2dccbedebe34c595e7e099d0  gcc/testsuite/gfortran.dg/debug/pr46756.f
--- 85220,85227 ----
  88c4e7deca20be3e33e616092b99e017  gcc/testsuite/gfortran.dg/deallocate_error_4.f90
  70bd882ce015f7f82966397339ec0d16  gcc/testsuite/gfortran.dg/deallocate_stat.f90
  b2d4c30c54f17f05d0e6d3ae921a7be8  gcc/testsuite/gfortran.dg/deallocate_stat_2.f90
! 7a524962477066ff0fc186de8319d575  gcc/testsuite/gfortran.dg/debug/debug.exp
  c8fe955f02d446b949b45194c7d29caf  gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f
  9afde2cd5a8b47b5c4a2b2438fcd4de6  gcc/testsuite/gfortran.dg/debug/pr37738.f
  788a70497a0a2ddba0abf97330a47c01  gcc/testsuite/gfortran.dg/debug/pr43166.f
  f49bca9d2dccbedebe34c595e7e099d0  gcc/testsuite/gfortran.dg/debug/pr46756.f
*************** f83ad6bd054390e6c1c83e3617a0ca54  gcc/te
*** 80216,80226 ****
  4eb23dea6239510ff3d0398ca1d0c6db  gcc/testsuite/gfortran.dg/der_array_io_1.f90
  35332f10121eeab34a37f9cff36e5e29  gcc/testsuite/gfortran.dg/der_array_io_2.f90
  596af43c1b879328d134b0c2640f5e81  gcc/testsuite/gfortran.dg/der_array_io_3.f90
! d8550edab8d5e7f71c87159df4ae1257  gcc/testsuite/gfortran.dg/der_charlen_1.f90
  d30347beebb1d9ad9619d3200659db82  gcc/testsuite/gfortran.dg/der_io_1.f90
  07a8fe6cc42f3849a2fbc06a2603c2c6  gcc/testsuite/gfortran.dg/der_io_2.f90
  2e85868cbd9579e629a5873825f41d87  gcc/testsuite/gfortran.dg/der_io_3.f90
  849de7d23e1ac3f952f1cc43a94b9231  gcc/testsuite/gfortran.dg/der_io_4.f90
  2520b2121bba08e6b262ed618af815c5  gcc/testsuite/gfortran.dg/der_pointer_1.f90
  65a5bb94a6a9b5afe661e8824a26ef5b  gcc/testsuite/gfortran.dg/der_pointer_2.f90
  bf70cd429d2bb96e66108ecbde6782f6  gcc/testsuite/gfortran.dg/der_pointer_3.f90
--- 85488,85499 ----
  4eb23dea6239510ff3d0398ca1d0c6db  gcc/testsuite/gfortran.dg/der_array_io_1.f90
  35332f10121eeab34a37f9cff36e5e29  gcc/testsuite/gfortran.dg/der_array_io_2.f90
  596af43c1b879328d134b0c2640f5e81  gcc/testsuite/gfortran.dg/der_array_io_3.f90
! 52308d2ec7f5bae5e1cc76462b835983  gcc/testsuite/gfortran.dg/der_charlen_1.f90
  d30347beebb1d9ad9619d3200659db82  gcc/testsuite/gfortran.dg/der_io_1.f90
  07a8fe6cc42f3849a2fbc06a2603c2c6  gcc/testsuite/gfortran.dg/der_io_2.f90
  2e85868cbd9579e629a5873825f41d87  gcc/testsuite/gfortran.dg/der_io_3.f90
  849de7d23e1ac3f952f1cc43a94b9231  gcc/testsuite/gfortran.dg/der_io_4.f90
+ 28957fdef2123491ae32c7e3989a9c3e  gcc/testsuite/gfortran.dg/der_io_5.f90
  2520b2121bba08e6b262ed618af815c5  gcc/testsuite/gfortran.dg/der_pointer_1.f90
  65a5bb94a6a9b5afe661e8824a26ef5b  gcc/testsuite/gfortran.dg/der_pointer_2.f90
  bf70cd429d2bb96e66108ecbde6782f6  gcc/testsuite/gfortran.dg/der_pointer_3.f90
*************** cf5153f1f09bb80f5a964ce90c83a5dc  gcc/te
*** 80265,80271 ****
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! 7fdb5eba51fa57cb7495f8f9cd302009  gcc/testsuite/gfortran.dg/dg.exp
  d68e25016cad5b1f022cffbaa43b3e17  gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
  c653b2b6ebfb0bd4f9c9a3135d0e3a6f  gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
  35a875c0fd48160d34cd136be6468f7f  gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
--- 85538,85544 ----
  b522fadd1464db48d2fe8165d2a66e70  gcc/testsuite/gfortran.dg/derived_sub.f90
  652fa12d630d17b29894c33b10c6b1b8  gcc/testsuite/gfortran.dg/dev_null.F90
  94ce3208dac145ea14fc3f821f662788  gcc/testsuite/gfortran.dg/dfloat_1.f90
! 0c61e8166e596db5a018055bead48481  gcc/testsuite/gfortran.dg/dg.exp
  d68e25016cad5b1f022cffbaa43b3e17  gcc/testsuite/gfortran.dg/diagnostic-format-json-1.F90
  c653b2b6ebfb0bd4f9c9a3135d0e3a6f  gcc/testsuite/gfortran.dg/diagnostic-format-json-2.F90
  35a875c0fd48160d34cd136be6468f7f  gcc/testsuite/gfortran.dg/diagnostic-format-json-3.F90
*************** f10c4681bf625e46adae521a3de13a48  gcc/te
*** 80374,80380 ****
  32c2c08c7f3e58e80c57128aa1e2b13d  gcc/testsuite/gfortran.dg/dtio_32.f03
  c9bae3926493665cd6a3a6bca4b52e53  gcc/testsuite/gfortran.dg/dtio_33.f90
  5f453b52ee72bd864f1fc70730289b71  gcc/testsuite/gfortran.dg/dtio_34.f90
! 4080cbf2e2a79a93e3f83762be75e254  gcc/testsuite/gfortran.dg/dtio_35.f90
  a63c4c25b48888dec1fdd5c3312fe243  gcc/testsuite/gfortran.dg/dtio_36.f90
  98feff72bfe6f9469278b8b049519af2  gcc/testsuite/gfortran.dg/dtio_4.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
--- 85647,85653 ----
  32c2c08c7f3e58e80c57128aa1e2b13d  gcc/testsuite/gfortran.dg/dtio_32.f03
  c9bae3926493665cd6a3a6bca4b52e53  gcc/testsuite/gfortran.dg/dtio_33.f90
  5f453b52ee72bd864f1fc70730289b71  gcc/testsuite/gfortran.dg/dtio_34.f90
! 356cc9632fa969c2cee2d146f484043f  gcc/testsuite/gfortran.dg/dtio_35.f90
  a63c4c25b48888dec1fdd5c3312fe243  gcc/testsuite/gfortran.dg/dtio_36.f90
  98feff72bfe6f9469278b8b049519af2  gcc/testsuite/gfortran.dg/dtio_4.f90
  5c6704b3b1b7266ea126e709df28bebe  gcc/testsuite/gfortran.dg/dtio_6.f90
*************** c8e3da1f40192d7cdd52bdc76494e242  gcc/te
*** 80432,80437 ****
--- 85705,85711 ----
  5b8b37749569a53ab6703a9a55f6bdc2  gcc/testsuite/gfortran.dg/elemental_dependency_4.f90
  516b15948dcd1bfc6717152106f806c0  gcc/testsuite/gfortran.dg/elemental_dependency_5.f90
  da4a7c798f0408437da738727e347788  gcc/testsuite/gfortran.dg/elemental_dependency_6.f90
+ fc241ddaced2133b48290f7139747927  gcc/testsuite/gfortran.dg/elemental_dependency_7.f90
  4e458aeb8e0b923bab1f2dfc693d5a71  gcc/testsuite/gfortran.dg/elemental_function_1.f90
  2d23e66cae12f606c517f27ced38c44c  gcc/testsuite/gfortran.dg/elemental_function_2.f90
  af300e66cd2debe8da426f435e478ede  gcc/testsuite/gfortran.dg/elemental_function_3.f90
*************** df7fd6f7581d27330f0013f9a3246e99  gcc/te
*** 80497,80502 ****
--- 85771,85778 ----
  0db0be3b4ced16a50d8129fd0aa3d8fa  gcc/testsuite/gfortran.dg/entry_23.f
  736b641c8447236bf4ebf1806522d583  gcc/testsuite/gfortran.dg/entry_24.f90
  6b39a2792de2f424e5fca65e4dd34f47  gcc/testsuite/gfortran.dg/entry_25.f90
+ e58384fbdf9d19ad690ac1eae7664064  gcc/testsuite/gfortran.dg/entry_26.f90
+ 351674cfb110858472b88a949a5f0a99  gcc/testsuite/gfortran.dg/entry_27.f90
  0f79e5c423680a19e0f1ac49f4a91670  gcc/testsuite/gfortran.dg/entry_3.f90
  cb2b2f8ba1b744201c0fb2d15ac0d01b  gcc/testsuite/gfortran.dg/entry_4.f90
  d9c60fad31625139f9e0a67c69d59e59  gcc/testsuite/gfortran.dg/entry_5.f90
*************** bd779906b016bd335bbb19a449289c47  gcc/te
*** 80622,80627 ****
--- 85898,85904 ----
  e858d42afb6c6feb41d75f84594d0e1f  gcc/testsuite/gfortran.dg/external_procedures_1.f90
  ecf30036a6f1dd697da6f19c378c5e40  gcc/testsuite/gfortran.dg/external_procedures_2.f90
  2625befedf617cfcf62cbf2931fb6f60  gcc/testsuite/gfortran.dg/external_procedures_3.f90
+ 5a5bd6f5b91add51e728b7e09a1fd956  gcc/testsuite/gfortran.dg/external_procedures_4.f90
  3bfc75ac866e7a8d4f0c5461e72d3ef3  gcc/testsuite/gfortran.dg/extract_recip_1.f
  1a0985014a861cf2ebe5db90d794bc8f  gcc/testsuite/gfortran.dg/f2003_inquire_1.f03
  cfb14bc5bf59e51052c46e89fe7eb079  gcc/testsuite/gfortran.dg/f2003_io_1.f03
*************** d9520d95c876e1ae6b037f5ed029efce  gcc/te
*** 80681,80688 ****
--- 85958,85981 ----
  8a73305eb3c76b586a4aeaa5568c2141  gcc/testsuite/gfortran.dg/finalize_35.f90
  62a846c35f5cb5673b42af4d9466d4f3  gcc/testsuite/gfortran.dg/finalize_36.f90
  60b07a38d00e8fc7487b8796bb375fd8  gcc/testsuite/gfortran.dg/finalize_37.f90
+ 96c4f734e3e19a9c3ff8cb8a66664274  gcc/testsuite/gfortran.dg/finalize_38.f90
+ 217213daad5b48c8e5866bfd9731f97e  gcc/testsuite/gfortran.dg/finalize_38a.f90
+ 2ab22bce3d134ad2987aa4b4bb7ef3d9  gcc/testsuite/gfortran.dg/finalize_39.f90
  92b4ca27645d88cb11543d720382b004  gcc/testsuite/gfortran.dg/finalize_4.f03
+ 04509479979ad69da88ba4949fe669d1  gcc/testsuite/gfortran.dg/finalize_40.f90
+ 35b3313fd7e35e48447af1facb2ef319  gcc/testsuite/gfortran.dg/finalize_41.f90
+ 7c5f40981c7b2f7aea07e9a1920b8125  gcc/testsuite/gfortran.dg/finalize_42.f90
+ 60f36fd3703f619703febe17c8fbd53f  gcc/testsuite/gfortran.dg/finalize_43.f90
+ d8225fd5c08cf1591c294fcd62e73f47  gcc/testsuite/gfortran.dg/finalize_44.f90
+ 240aad7c595982a7e11225c30f47df9a  gcc/testsuite/gfortran.dg/finalize_45.f90
+ 494322dd57615668eae137f635199822  gcc/testsuite/gfortran.dg/finalize_46.f90
+ 0636d6dac4c60b104162743eee7658c9  gcc/testsuite/gfortran.dg/finalize_47.f90
+ e9e58e9c7740e50903c70ac250d73280  gcc/testsuite/gfortran.dg/finalize_48.f90
+ 728966f5583f62639ddfe015dee08339  gcc/testsuite/gfortran.dg/finalize_49.f90
  ce817f495edb0ac306d6ae1052014e67  gcc/testsuite/gfortran.dg/finalize_5.f03
+ 943565988d4c8c053eef9a3f493da851  gcc/testsuite/gfortran.dg/finalize_50.f90
+ 27c7e8db83d3d5fb88321d8d6a0376c8  gcc/testsuite/gfortran.dg/finalize_51.f90
+ 8c70f52870dfe9912aff6274fcff3e3d  gcc/testsuite/gfortran.dg/finalize_52.f90
  00394d3b18b9e094a6751225fef04a51  gcc/testsuite/gfortran.dg/finalize_6.f90
  520ae6cd723f43e02411aa72bb807bb5  gcc/testsuite/gfortran.dg/finalize_7.f03
  a1de3ecdc32a070009986504b0fcaf97  gcc/testsuite/gfortran.dg/finalize_8.f03
*************** b2ba93bac651f0f62538e07b87d7f60c  gcc/te
*** 80714,80721 ****
  4cc40888a17d146df1ece1cfbc9da885  gcc/testsuite/gfortran.dg/fmt_error_11.f03
  f0ca55042d3247d09d7bc304c059cc3a  gcc/testsuite/gfortran.dg/fmt_error_2.f90
  08714edf3b0ddedeaaa8832ea4399b48  gcc/testsuite/gfortran.dg/fmt_error_3.f90
! 35a9d07b2a835b77be43c1609a1c54b4  gcc/testsuite/gfortran.dg/fmt_error_4.f90
! c237984a5b096d8915d27ea8b8da7368  gcc/testsuite/gfortran.dg/fmt_error_5.f90
  c3e37177f04544909dafcce880927eae  gcc/testsuite/gfortran.dg/fmt_error_6.f90
  8034af34f7ac4599fb3e24e4da711a68  gcc/testsuite/gfortran.dg/fmt_error_7.f
  3202501db7e278e84ba2a8b94c5667f8  gcc/testsuite/gfortran.dg/fmt_error_8.f
--- 86007,86014 ----
  4cc40888a17d146df1ece1cfbc9da885  gcc/testsuite/gfortran.dg/fmt_error_11.f03
  f0ca55042d3247d09d7bc304c059cc3a  gcc/testsuite/gfortran.dg/fmt_error_2.f90
  08714edf3b0ddedeaaa8832ea4399b48  gcc/testsuite/gfortran.dg/fmt_error_3.f90
! 002e8e6c7d2cd9daf47d841cb45912d9  gcc/testsuite/gfortran.dg/fmt_error_4.f90
! 60bd7948d9a60dbea6d3d89f289e64d4  gcc/testsuite/gfortran.dg/fmt_error_5.f90
  c3e37177f04544909dafcce880927eae  gcc/testsuite/gfortran.dg/fmt_error_6.f90
  8034af34f7ac4599fb3e24e4da711a68  gcc/testsuite/gfortran.dg/fmt_error_7.f
  3202501db7e278e84ba2a8b94c5667f8  gcc/testsuite/gfortran.dg/fmt_error_8.f
*************** bf2de279dad52afa7b31dd6f72b1b0f7  gcc/te
*** 80728,80734 ****
  74ff69fe804071087813f31aa9bcfa9d  gcc/testsuite/gfortran.dg/fmt_f_default_field_width_1.f90
  c0b20819d1420f8c64bddebc48864d91  gcc/testsuite/gfortran.dg/fmt_f_default_field_width_2.f90
  d60199ee28e9732fb5fe50cf03404738  gcc/testsuite/gfortran.dg/fmt_f_default_field_width_3.f90
! fc5f0a711651b7257f0db9b771929dff  gcc/testsuite/gfortran.dg/fmt_float.f90
  f8ae667c3d38aaadda84633fe1ec2778  gcc/testsuite/gfortran.dg/fmt_fw_d.f90
  1beb844341a9398a931bf4ca7bb9f423  gcc/testsuite/gfortran.dg/fmt_g.f
  5dc0458b02b01e6d25132c6741011392  gcc/testsuite/gfortran.dg/fmt_g0_1.f08
--- 86021,86027 ----
  74ff69fe804071087813f31aa9bcfa9d  gcc/testsuite/gfortran.dg/fmt_f_default_field_width_1.f90
  c0b20819d1420f8c64bddebc48864d91  gcc/testsuite/gfortran.dg/fmt_f_default_field_width_2.f90
  d60199ee28e9732fb5fe50cf03404738  gcc/testsuite/gfortran.dg/fmt_f_default_field_width_3.f90
! 362abb422e7c2b15c9ba061d59902641  gcc/testsuite/gfortran.dg/fmt_float.f90
  f8ae667c3d38aaadda84633fe1ec2778  gcc/testsuite/gfortran.dg/fmt_fw_d.f90
  1beb844341a9398a931bf4ca7bb9f423  gcc/testsuite/gfortran.dg/fmt_g.f
  5dc0458b02b01e6d25132c6741011392  gcc/testsuite/gfortran.dg/fmt_g0_1.f08
*************** d216b76ed81c95ec2cbca83beb2a093d  gcc/te
*** 80747,80760 ****
  c30d2fe3452763608d57c87d6b4d843e  gcc/testsuite/gfortran.dg/fmt_i_default_field_width_2.f90
  3498b15fde6d4405f090b3d65c671e84  gcc/testsuite/gfortran.dg/fmt_i_default_field_width_3.f90
  62c1d21c2f21fe8dd61d62b21c2a2d65  gcc/testsuite/gfortran.dg/fmt_int_sign.f90
! a1b7a4945e4eb7284d29230afbeb1e45  gcc/testsuite/gfortran.dg/fmt_l.f90
  c47c18c7178c266b31739a4e4bc4f800  gcc/testsuite/gfortran.dg/fmt_l0.f90
  e726af97cf0538e28488d1302fdae71c  gcc/testsuite/gfortran.dg/fmt_label_1.f90
  c31057abbc67dd1afb06b5b8b376c2dc  gcc/testsuite/gfortran.dg/fmt_missing_period_1.f
  4f7042a2ba936a1c540556acd1e9e5c4  gcc/testsuite/gfortran.dg/fmt_missing_period_2.f
  aa83a10582b82026c0f1fd503885f217  gcc/testsuite/gfortran.dg/fmt_missing_period_3.f
  eedec4631f954cd9b6e777e72d5b3a82  gcc/testsuite/gfortran.dg/fmt_nonchar_1.f90
! 20f752890ee33c6d8b403a1a2483e5a4  gcc/testsuite/gfortran.dg/fmt_nonchar_2.f90
  bd467bed8a3379220c5d40be824a24ce  gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90
  d3d37d254644cdaff95d2388a5b7c0c5  gcc/testsuite/gfortran.dg/fmt_p_1.f90
  982630e8e12fd9d9ef6044fd455a1556  gcc/testsuite/gfortran.dg/fmt_pf.f90
--- 86040,86053 ----
  c30d2fe3452763608d57c87d6b4d843e  gcc/testsuite/gfortran.dg/fmt_i_default_field_width_2.f90
  3498b15fde6d4405f090b3d65c671e84  gcc/testsuite/gfortran.dg/fmt_i_default_field_width_3.f90
  62c1d21c2f21fe8dd61d62b21c2a2d65  gcc/testsuite/gfortran.dg/fmt_int_sign.f90
! 8aca18de5db0573f77bace09417f0f13  gcc/testsuite/gfortran.dg/fmt_l.f90
  c47c18c7178c266b31739a4e4bc4f800  gcc/testsuite/gfortran.dg/fmt_l0.f90
  e726af97cf0538e28488d1302fdae71c  gcc/testsuite/gfortran.dg/fmt_label_1.f90
  c31057abbc67dd1afb06b5b8b376c2dc  gcc/testsuite/gfortran.dg/fmt_missing_period_1.f
  4f7042a2ba936a1c540556acd1e9e5c4  gcc/testsuite/gfortran.dg/fmt_missing_period_2.f
  aa83a10582b82026c0f1fd503885f217  gcc/testsuite/gfortran.dg/fmt_missing_period_3.f
  eedec4631f954cd9b6e777e72d5b3a82  gcc/testsuite/gfortran.dg/fmt_nonchar_1.f90
! 5e98728b776276e17fff04cbeed110ba  gcc/testsuite/gfortran.dg/fmt_nonchar_2.f90
  bd467bed8a3379220c5d40be824a24ce  gcc/testsuite/gfortran.dg/fmt_nonchar_3.f90
  d3d37d254644cdaff95d2388a5b7c0c5  gcc/testsuite/gfortran.dg/fmt_p_1.f90
  982630e8e12fd9d9ef6044fd455a1556  gcc/testsuite/gfortran.dg/fmt_pf.f90
*************** afb11a602b566cba010f9624d3692084  gcc/te
*** 80781,80787 ****
  3741d7228a9abe59ccc090bf896b8b24  gcc/testsuite/gfortran.dg/fmt_with_extra.f
  701fade2a840cb9e3bf581edbedf810c  gcc/testsuite/gfortran.dg/fmt_zero_check.f90
  dc9ed2a13668303e52d0d4105a0e1f59  gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
! b1197d10275db9dfbbc44635670b9b1e  gcc/testsuite/gfortran.dg/fmt_zero_precision.f90
  e726baedb69caffaea12b6d40c53573c  gcc/testsuite/gfortran.dg/fmt_zero_width.f90
  93823024165c02ff6aafa96f78929937  gcc/testsuite/gfortran.dg/fold_nearest.f90
  75a4fd131c42b25fa39d55337b1c123a  gcc/testsuite/gfortran.dg/forall_1.f90
--- 86074,86080 ----
  3741d7228a9abe59ccc090bf896b8b24  gcc/testsuite/gfortran.dg/fmt_with_extra.f
  701fade2a840cb9e3bf581edbedf810c  gcc/testsuite/gfortran.dg/fmt_zero_check.f90
  dc9ed2a13668303e52d0d4105a0e1f59  gcc/testsuite/gfortran.dg/fmt_zero_digits.f90
! cfe6a6fc0d5896e149acf8cbc9e53b9a  gcc/testsuite/gfortran.dg/fmt_zero_precision.f90
  e726baedb69caffaea12b6d40c53573c  gcc/testsuite/gfortran.dg/fmt_zero_width.f90
  93823024165c02ff6aafa96f78929937  gcc/testsuite/gfortran.dg/fold_nearest.f90
  75a4fd131c42b25fa39d55337b1c123a  gcc/testsuite/gfortran.dg/forall_1.f90
*************** f87880c019d70b5c8e9649c7f81decb8  gcc/te
*** 80940,80946 ****
  5b8e4d3e937b6a6803378fc996daa1cc  gcc/testsuite/gfortran.dg/g77/980729-0.f
  2101f50ac159df80eeb505634cd4a578  gcc/testsuite/gfortran.dg/g77/981117-1.f
  6aa55ceeb1750d7c19158792b5f97400  gcc/testsuite/gfortran.dg/g77/990115-1.f
! 343622eee3d6987a3facd6f19edfba48  gcc/testsuite/gfortran.dg/g77/README
  4593fcff4c64feb2721eea31b88dfb95  gcc/testsuite/gfortran.dg/g77/alpha1.f
  76c5961f1cec6e4fad257f4d1f1fdf35  gcc/testsuite/gfortran.dg/g77/cabs.f
  bf9ae0c15a3a684d969e22501f10d69c  gcc/testsuite/gfortran.dg/g77/check0.f
--- 86233,86239 ----
  5b8e4d3e937b6a6803378fc996daa1cc  gcc/testsuite/gfortran.dg/g77/980729-0.f
  2101f50ac159df80eeb505634cd4a578  gcc/testsuite/gfortran.dg/g77/981117-1.f
  6aa55ceeb1750d7c19158792b5f97400  gcc/testsuite/gfortran.dg/g77/990115-1.f
! d5a788921fafd90515fd4f8069e51b82  gcc/testsuite/gfortran.dg/g77/README
  4593fcff4c64feb2721eea31b88dfb95  gcc/testsuite/gfortran.dg/g77/alpha1.f
  76c5961f1cec6e4fad257f4d1f1fdf35  gcc/testsuite/gfortran.dg/g77/cabs.f
  bf9ae0c15a3a684d969e22501f10d69c  gcc/testsuite/gfortran.dg/g77/check0.f
*************** f2d4fcb471aa8f0cf129964a1a121b8b  gcc/te
*** 80957,80972 ****
  6f1f5aa5dac19402d4771120d24997be  gcc/testsuite/gfortran.dg/g77/dcomplex.f
  3d229cbb1c3a081c26142e3c1d0cdb26  gcc/testsuite/gfortran.dg/g77/dnrm2.f
  6126cc749cf41955b761ed99cbbb94cb  gcc/testsuite/gfortran.dg/g77/erfc.f
! 5f07e6fafeed89aeef7c7bdcad5664c7  gcc/testsuite/gfortran.dg/g77/f77-edit-apostrophe-out.f
! 0d8a0ba8ae1d7da40a25931e3cfb1204  gcc/testsuite/gfortran.dg/g77/f77-edit-colon-out.f
! 1f6781d6cf004a145321247795101e47  gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f
  ef44a7fec70868f50311728cd2f1443e  gcc/testsuite/gfortran.dg/g77/f77-edit-i-in.f
! 8f39aa584914e46ad5898af506058a71  gcc/testsuite/gfortran.dg/g77/f77-edit-i-out.f
! 5e14c2d0a574c0d44495689dabaa9d6d  gcc/testsuite/gfortran.dg/g77/f77-edit-s-out.f
! 39e5bb2b521c5cc467963d1bde299b31  gcc/testsuite/gfortran.dg/g77/f77-edit-slash-out.f
  32479de579e3888726f7f547da56f9ea  gcc/testsuite/gfortran.dg/g77/f77-edit-t-in.f
! 6e30547b29631a8bb7c402e158253bc7  gcc/testsuite/gfortran.dg/g77/f77-edit-t-out.f
! 661074993731f037d9020533b120c364  gcc/testsuite/gfortran.dg/g77/f77-edit-x-out.f
  f102f6b3f117e1d429d467dd7060671d  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-bit.f
  c9f51fa26c0f0863989933fd1d01bf0b  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-mathematical.f
  37963d283a33f8defd75b40ec2e76306  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-numeric.f
--- 86250,86265 ----
  6f1f5aa5dac19402d4771120d24997be  gcc/testsuite/gfortran.dg/g77/dcomplex.f
  3d229cbb1c3a081c26142e3c1d0cdb26  gcc/testsuite/gfortran.dg/g77/dnrm2.f
  6126cc749cf41955b761ed99cbbb94cb  gcc/testsuite/gfortran.dg/g77/erfc.f
! 903343bf82f349e4b7516c4ea259d0ec  gcc/testsuite/gfortran.dg/g77/f77-edit-apostrophe-out.f
! da022bb5c0f5da33bb7bf90d63f48432  gcc/testsuite/gfortran.dg/g77/f77-edit-colon-out.f
! 849d82e6e0567c5951c54deecb3af6d1  gcc/testsuite/gfortran.dg/g77/f77-edit-h-out.f
  ef44a7fec70868f50311728cd2f1443e  gcc/testsuite/gfortran.dg/g77/f77-edit-i-in.f
! 68f1690859fa33b60eca874423346325  gcc/testsuite/gfortran.dg/g77/f77-edit-i-out.f
! f1d77276e2ca62dd595339541550c132  gcc/testsuite/gfortran.dg/g77/f77-edit-s-out.f
! 7d567a2d8aeab61c62777d716906da3b  gcc/testsuite/gfortran.dg/g77/f77-edit-slash-out.f
  32479de579e3888726f7f547da56f9ea  gcc/testsuite/gfortran.dg/g77/f77-edit-t-in.f
! 5b655890765cdfb06e030a7724cfe91a  gcc/testsuite/gfortran.dg/g77/f77-edit-t-out.f
! a6c4b2bec854cf2b1e63b754044a60d3  gcc/testsuite/gfortran.dg/g77/f77-edit-x-out.f
  f102f6b3f117e1d429d467dd7060671d  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-bit.f
  c9f51fa26c0f0863989933fd1d01bf0b  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-mathematical.f
  37963d283a33f8defd75b40ec2e76306  gcc/testsuite/gfortran.dg/g77/f90-intrinsic-numeric.f
*************** a1927f72df8d7dff60593a75c817fd91  gcc/te
*** 81050,81056 ****
  0cae422b963e880d73cfa54e885c1010  gcc/testsuite/gfortran.dg/goacc-gomp/depobj.f90
  cdbe16382c20ff02d5be2370ef235ffd  gcc/testsuite/gfortran.dg/goacc-gomp/fixed-1.f
  1a47a5d775b89e7ea35bb88b047004a6  gcc/testsuite/gfortran.dg/goacc-gomp/free-1.f90
! 91d656f9a6defa55fd0fd0a3596b4eb9  gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp
  66b451ac1ef6dc37e41acf5ef7d3a7f8  gcc/testsuite/gfortran.dg/goacc-gomp/mixed-1.f
  2f5688fd6d13ef335191539fb816b1e8  gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90
  623dd259c1089424ad39ce48ecf7872f  gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
--- 86343,86349 ----
  0cae422b963e880d73cfa54e885c1010  gcc/testsuite/gfortran.dg/goacc-gomp/depobj.f90
  cdbe16382c20ff02d5be2370ef235ffd  gcc/testsuite/gfortran.dg/goacc-gomp/fixed-1.f
  1a47a5d775b89e7ea35bb88b047004a6  gcc/testsuite/gfortran.dg/goacc-gomp/free-1.f90
! f832ce037c43b2c41921faf0b2d7b93e  gcc/testsuite/gfortran.dg/goacc-gomp/goacc-gomp.exp
  66b451ac1ef6dc37e41acf5ef7d3a7f8  gcc/testsuite/gfortran.dg/goacc-gomp/mixed-1.f
  2f5688fd6d13ef335191539fb816b1e8  gcc/testsuite/gfortran.dg/goacc-gomp/pr102330-1.f90
  623dd259c1089424ad39ce48ecf7872f  gcc/testsuite/gfortran.dg/goacc/acc_on_device-1.f95
*************** a2598ab12e851a8e120b6b107500d27b  gcc/te
*** 81059,81065 ****
  6efd4df3178f228cb542d2003c66b882  gcc/testsuite/gfortran.dg/goacc/array-reduction.f90
  08f00eb075a1b88f8ceb63d415a5b115  gcc/testsuite/gfortran.dg/goacc/array-with-dt-1.f90
  e979ced56b8199ac0afe2184287bbf2e  gcc/testsuite/gfortran.dg/goacc/array-with-dt-1a.f90
! fa8d6df3ad3d3534b6bd8cb112792922  gcc/testsuite/gfortran.dg/goacc/array-with-dt-2.f90
  0ef491118ad1cac7263ad53127fb0764  gcc/testsuite/gfortran.dg/goacc/array-with-dt-3.f90
  aeacd6ece8629c48eab42fcb658c8796  gcc/testsuite/gfortran.dg/goacc/array-with-dt-4.f90
  f3111ad444da282a0a5b4915ee85f5bf  gcc/testsuite/gfortran.dg/goacc/array-with-dt-5.f90
--- 86352,86358 ----
  6efd4df3178f228cb542d2003c66b882  gcc/testsuite/gfortran.dg/goacc/array-reduction.f90
  08f00eb075a1b88f8ceb63d415a5b115  gcc/testsuite/gfortran.dg/goacc/array-with-dt-1.f90
  e979ced56b8199ac0afe2184287bbf2e  gcc/testsuite/gfortran.dg/goacc/array-with-dt-1a.f90
! a59781ec856e293c7bd42548659793ec  gcc/testsuite/gfortran.dg/goacc/array-with-dt-2.f90
  0ef491118ad1cac7263ad53127fb0764  gcc/testsuite/gfortran.dg/goacc/array-with-dt-3.f90
  aeacd6ece8629c48eab42fcb658c8796  gcc/testsuite/gfortran.dg/goacc/array-with-dt-4.f90
  f3111ad444da282a0a5b4915ee85f5bf  gcc/testsuite/gfortran.dg/goacc/array-with-dt-5.f90
*************** fe2df2ce6e9b837974ec76c54da56c62  gcc/te
*** 81076,81089 ****
  b5ce38fdd599e1809965f838521def2e  gcc/testsuite/gfortran.dg/goacc/branch.f95
  109a3ecc87b1bc758772cc9eeee4d842  gcc/testsuite/gfortran.dg/goacc/cache-1.f95
  0770d02d65abc7014c30751880ebe628  gcc/testsuite/gfortran.dg/goacc/cache-2.f95
! c3059ce555fefba8dd9675d424492d4a  gcc/testsuite/gfortran.dg/goacc/classify-kernels-parloops.f95
! 68fcb8d28444b8c966f14bc0756b722b  gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized-parloops.f95
! e26861ab09a1428a065b40102b60f8f6  gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95
! a331a52131807a0a974ca90cde676520  gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95
! 4956956726757b883a255b67aa149090  gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95
  bb1d58f46b1e8af6fc5dabfddbe00b1e  gcc/testsuite/gfortran.dg/goacc/classify-routine-nohost.f95
  a51a9aa4ceca0d626c1c0773b5a8b28d  gcc/testsuite/gfortran.dg/goacc/classify-routine.f95
! 6f3909ad3a882b6575a68654b01acca1  gcc/testsuite/gfortran.dg/goacc/classify-serial.f95
  83d4a89dbb466047d65da89db7eebee2  gcc/testsuite/gfortran.dg/goacc/coarray.f95
  802487ba26d5909068b6a8fd851b3b28  gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
  fdee13d4adb6e84872f8e5e823a9e0eb  gcc/testsuite/gfortran.dg/goacc/coindexed-1.f90
--- 86369,86382 ----
  b5ce38fdd599e1809965f838521def2e  gcc/testsuite/gfortran.dg/goacc/branch.f95
  109a3ecc87b1bc758772cc9eeee4d842  gcc/testsuite/gfortran.dg/goacc/cache-1.f95
  0770d02d65abc7014c30751880ebe628  gcc/testsuite/gfortran.dg/goacc/cache-2.f95
! e446360e36be9fbd4276d9b53c7772d2  gcc/testsuite/gfortran.dg/goacc/classify-kernels-parloops.f95
! e6563162dcb66cbcc6fa3eaa3dda40a0  gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized-parloops.f95
! 736ef2fe02df004f593ec14f1bbc62f4  gcc/testsuite/gfortran.dg/goacc/classify-kernels-unparallelized.f95
! 54560854f18e203ed535850abaf6fee1  gcc/testsuite/gfortran.dg/goacc/classify-kernels.f95
! ccf30b0534f43784e9481e052bc603a0  gcc/testsuite/gfortran.dg/goacc/classify-parallel.f95
  bb1d58f46b1e8af6fc5dabfddbe00b1e  gcc/testsuite/gfortran.dg/goacc/classify-routine-nohost.f95
  a51a9aa4ceca0d626c1c0773b5a8b28d  gcc/testsuite/gfortran.dg/goacc/classify-routine.f95
! 6a2bec202d57d5fe1e54ffa19696799f  gcc/testsuite/gfortran.dg/goacc/classify-serial.f95
  83d4a89dbb466047d65da89db7eebee2  gcc/testsuite/gfortran.dg/goacc/coarray.f95
  802487ba26d5909068b6a8fd851b3b28  gcc/testsuite/gfortran.dg/goacc/coarray_2.f90
  fdee13d4adb6e84872f8e5e823a9e0eb  gcc/testsuite/gfortran.dg/goacc/coindexed-1.f90
*************** d4c2919d4f88b391fb32fcbe225f7214  gcc/te
*** 81126,81132 ****
  d6fc5ccccdf283b89871056a603002b0  gcc/testsuite/gfortran.dg/goacc/fixed-4.f
  848866b7618965ec43d4d0116c95112e  gcc/testsuite/gfortran.dg/goacc/fixed-5.f
  f47f079a6e8bea88ed65bfb0d0cdaa69  gcc/testsuite/gfortran.dg/goacc/gang-static.f95
! 325cc1231abf616ef468feb2de738bf2  gcc/testsuite/gfortran.dg/goacc/goacc.exp
  3e7c2fad068860f11c7aa15ab3ac054f  gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
  34983f0cd7cb82a92eb6540a1070a1c4  gcc/testsuite/gfortran.dg/goacc/if.f95
  601f00049a64dd37cde339f2f1f04f67  gcc/testsuite/gfortran.dg/goacc/kernels-alias-2.f95
--- 86419,86425 ----
  d6fc5ccccdf283b89871056a603002b0  gcc/testsuite/gfortran.dg/goacc/fixed-4.f
  848866b7618965ec43d4d0116c95112e  gcc/testsuite/gfortran.dg/goacc/fixed-5.f
  f47f079a6e8bea88ed65bfb0d0cdaa69  gcc/testsuite/gfortran.dg/goacc/gang-static.f95
! 35bcb2404a1e65d6163ec9f4d7dd0ae5  gcc/testsuite/gfortran.dg/goacc/goacc.exp
  3e7c2fad068860f11c7aa15ab3ac054f  gcc/testsuite/gfortran.dg/goacc/host_data-tree.f95
  34983f0cd7cb82a92eb6540a1070a1c4  gcc/testsuite/gfortran.dg/goacc/if.f95
  601f00049a64dd37cde339f2f1f04f67  gcc/testsuite/gfortran.dg/goacc/kernels-alias-2.f95
*************** d5dc508fa5f0c7f41320b204b50e6bc2  gcc/te
*** 81135,81151 ****
  8cd8dec04b1d03d31cfd54e3b68060d5  gcc/testsuite/gfortran.dg/goacc/kernels-alias.f95
  c6931affee0acf16926b327152c0c3fa  gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95
  f2eedd71f1b6ee777d453b8414e792b9  gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
! ed5910eefc8b90775d00506871c62da0  gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
! c738d7665d4b818459d58edaec7add90  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
! 03f40c0830316f28f502d3870e120ba7  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
! b6b177ba5911d45f74f61515ed3f5040  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
! 208ab598ef22d164e25a050527306386  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
! 83af0f4a7aabca2cd0811ae44d726201  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
  843e8da0facb9d2215c4c0d7d4c06669  gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95
! 4692a67cccb31eb006e60358813e7eaa  gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
! e623fc0a74695e7ea61e47184cda0228  gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
  12fccbb98b6c2bfc3ac90b38fc6e14af  gcc/testsuite/gfortran.dg/goacc/kernels-loops-adjacent.f95
! 19189ade05048abb4a25acd5d6b0ee85  gcc/testsuite/gfortran.dg/goacc/kernels-parallel-loop-data-enter-exit.f95
  1e83a45fe1d566dad6e23e336f8cab3c  gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
  377578f4d9c4ca1cc67ca167393fbec3  gcc/testsuite/gfortran.dg/goacc/list.f95
  e107d4e382d98141b6dc6d451603f328  gcc/testsuite/gfortran.dg/goacc/literal.f95
--- 86428,86444 ----
  8cd8dec04b1d03d31cfd54e3b68060d5  gcc/testsuite/gfortran.dg/goacc/kernels-alias.f95
  c6931affee0acf16926b327152c0c3fa  gcc/testsuite/gfortran.dg/goacc/kernels-decompose-1.f95
  f2eedd71f1b6ee777d453b8414e792b9  gcc/testsuite/gfortran.dg/goacc/kernels-decompose-2.f95
! f655a834a32f2f3f92edf8ab6337ff0c  gcc/testsuite/gfortran.dg/goacc/kernels-loop-2.f95
! 48229c47e054067618d06816bae41210  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-2.f95
! 50509ab11d24fcd3efb8ecdebe98793a  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit-2.f95
! ba83c4cabd9753c8e318fb705a075153  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-enter-exit.f95
! 85ddfcfd2ebf40a6c96facabefadec38  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data-update.f95
! 76b8b89a3e3150ca02607dc6e4980234  gcc/testsuite/gfortran.dg/goacc/kernels-loop-data.f95
  843e8da0facb9d2215c4c0d7d4c06669  gcc/testsuite/gfortran.dg/goacc/kernels-loop-inner.f95
! 0747bfc4f47a4f97eaa8290cd2e84833  gcc/testsuite/gfortran.dg/goacc/kernels-loop-n.f95
! 2f933e04fc8c512eddd9dcea1dea6f29  gcc/testsuite/gfortran.dg/goacc/kernels-loop.f95
  12fccbb98b6c2bfc3ac90b38fc6e14af  gcc/testsuite/gfortran.dg/goacc/kernels-loops-adjacent.f95
! dab862eef9e9b080b5d7fc7f0a4b7105  gcc/testsuite/gfortran.dg/goacc/kernels-parallel-loop-data-enter-exit.f95
  1e83a45fe1d566dad6e23e336f8cab3c  gcc/testsuite/gfortran.dg/goacc/kernels-tree.f95
  377578f4d9c4ca1cc67ca167393fbec3  gcc/testsuite/gfortran.dg/goacc/list.f95
  e107d4e382d98141b6dc6d451603f328  gcc/testsuite/gfortran.dg/goacc/literal.f95
*************** bd5d0215a2a83dbd4aca37cf558a1b08  gcc/te
*** 81167,81172 ****
--- 86460,86466 ----
  adfee0afb71772a6b0adbdf123e106fd  gcc/testsuite/gfortran.dg/goacc/mapping-tests-2.f90
  75e8f0ee0422db95232a0547e9afa596  gcc/testsuite/gfortran.dg/goacc/mapping-tests-3.f90
  c2fe35b0f03d0c0f369bb6ffb9c04af4  gcc/testsuite/gfortran.dg/goacc/mapping-tests-4.f90
+ 18d648f4b938c2943600df4867e7c1b7  gcc/testsuite/gfortran.dg/goacc/mapping-tests-5.f90
  35a9adc6412ef83977b281007c09b010  gcc/testsuite/gfortran.dg/goacc/modules.f95
  a7d01192484b5c937807678ca75537ad  gcc/testsuite/gfortran.dg/goacc/multi-clause.f90
  b0ba9ce1b772ddb893b56e9a234fa899  gcc/testsuite/gfortran.dg/goacc/nested-function-1.f90
*************** a63629c8c309d4d181aa7e4d163f30c1  gcc/te
*** 81220,81228 ****
  24873e7e4fa106bd0e00268afabcef24  gcc/testsuite/gfortran.dg/goacc/private-predetermined-kernels-1.f95
  ec077ad6bdea7dd131d1d252e41327ce  gcc/testsuite/gfortran.dg/goacc/private-predetermined-parallel-1.f95
  d1424a6aff56f84b8594efe4797586c7  gcc/testsuite/gfortran.dg/goacc/private-predetermined-routine-1.f95
! b949bc29146f9b5f6e2679ccc96b2aa1  gcc/testsuite/gfortran.dg/goacc/privatization-1-compute-loop.f90
  8b4b1130919434a7c3fbccb70cc02590  gcc/testsuite/gfortran.dg/goacc/privatization-1-compute.f90
! ec8b3ba5d1efc904ccce059f464357a0  gcc/testsuite/gfortran.dg/goacc/privatization-1-routine_gang-loop.f90
  0fdd4c53847a616925b1751ff204d898  gcc/testsuite/gfortran.dg/goacc/privatization-1-routine_gang.f90
  066700d763e7142e03d2c09ba0f79bde  gcc/testsuite/gfortran.dg/goacc/pure-elemental-procedures-2.f90
  62b5f5b00b9662a8b75727b0922b367d  gcc/testsuite/gfortran.dg/goacc/pure-elemental-procedures.f95
--- 86514,86522 ----
  24873e7e4fa106bd0e00268afabcef24  gcc/testsuite/gfortran.dg/goacc/private-predetermined-kernels-1.f95
  ec077ad6bdea7dd131d1d252e41327ce  gcc/testsuite/gfortran.dg/goacc/private-predetermined-parallel-1.f95
  d1424a6aff56f84b8594efe4797586c7  gcc/testsuite/gfortran.dg/goacc/private-predetermined-routine-1.f95
! 320cef06c8127188e5b8ef5a9e8030c7  gcc/testsuite/gfortran.dg/goacc/privatization-1-compute-loop.f90
  8b4b1130919434a7c3fbccb70cc02590  gcc/testsuite/gfortran.dg/goacc/privatization-1-compute.f90
! 595bd7cc7c337a52f658d66ccd739259  gcc/testsuite/gfortran.dg/goacc/privatization-1-routine_gang-loop.f90
  0fdd4c53847a616925b1751ff204d898  gcc/testsuite/gfortran.dg/goacc/privatization-1-routine_gang.f90
  066700d763e7142e03d2c09ba0f79bde  gcc/testsuite/gfortran.dg/goacc/pure-elemental-procedures-2.f90
  62b5f5b00b9662a8b75727b0922b367d  gcc/testsuite/gfortran.dg/goacc/pure-elemental-procedures.f95
*************** e9972505e1a87fdeda00b94d99cf711b  gcc/te
*** 81275,81291 ****
  d09b6d0bd3c55d3b99ebe64fe2ee3d04  gcc/testsuite/gfortran.dg/goacc/wait.f90
  e8a02da7f34b2a2a9f386eefa3b51bb0  gcc/testsuite/gfortran.dg/goacc/warn_truncated.f90
  911e262e498830097ca8c02694f76c13  gcc/testsuite/gfortran.dg/gomp/affinity-1.f90
! 4340040405330b6de1b9cbe51ac526b3  gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90
  3242eb8cd0e2489c3dcfa485f3b75d28  gcc/testsuite/gfortran.dg/gomp/affinity-clause-2.f90
  e417d854c53b75c2ba1bf99e780e44f9  gcc/testsuite/gfortran.dg/gomp/affinity-clause-3.f90
  b2a15eb44cc92a12d36531f8567b9335  gcc/testsuite/gfortran.dg/gomp/affinity-clause-4.f90
  6aa253bfcd4cd89edea599b383253700  gcc/testsuite/gfortran.dg/gomp/affinity-clause-5.f90
  584f6a934e529a7dfb8b7de87cfbf646  gcc/testsuite/gfortran.dg/gomp/affinity-clause-6.f90
  6f6328ba39e39f68a522d2a176a86cfc  gcc/testsuite/gfortran.dg/gomp/affinity-clause-7.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  d8f891883879b40925714053d72765b2  gcc/testsuite/gfortran.dg/gomp/allocate-1.f90
  b9fa7dddfdd19370c87587727ea3a52b  gcc/testsuite/gfortran.dg/gomp/allocate-2.f90
! f70bcc8c1abe849febbd615a88a92d42  gcc/testsuite/gfortran.dg/gomp/allocate-3.f90
  a2a78b9dfd24cc5b801a51ebf7713787  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.1.1.f90
  a939ad660a97fdd3a36058fbbed08e4e  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.1.f90
  be2dfd843076b56ef43acf3c66d28133  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.2.f90
--- 86569,86588 ----
  d09b6d0bd3c55d3b99ebe64fe2ee3d04  gcc/testsuite/gfortran.dg/goacc/wait.f90
  e8a02da7f34b2a2a9f386eefa3b51bb0  gcc/testsuite/gfortran.dg/goacc/warn_truncated.f90
  911e262e498830097ca8c02694f76c13  gcc/testsuite/gfortran.dg/gomp/affinity-1.f90
! aa2f129bf735477d206c1fc34f102b17  gcc/testsuite/gfortran.dg/gomp/affinity-clause-1.f90
  3242eb8cd0e2489c3dcfa485f3b75d28  gcc/testsuite/gfortran.dg/gomp/affinity-clause-2.f90
  e417d854c53b75c2ba1bf99e780e44f9  gcc/testsuite/gfortran.dg/gomp/affinity-clause-3.f90
  b2a15eb44cc92a12d36531f8567b9335  gcc/testsuite/gfortran.dg/gomp/affinity-clause-4.f90
  6aa253bfcd4cd89edea599b383253700  gcc/testsuite/gfortran.dg/gomp/affinity-clause-5.f90
  584f6a934e529a7dfb8b7de87cfbf646  gcc/testsuite/gfortran.dg/gomp/affinity-clause-6.f90
  6f6328ba39e39f68a522d2a176a86cfc  gcc/testsuite/gfortran.dg/gomp/affinity-clause-7.f90
+ 5779c75467d088f9015667a87ae3e5e0  gcc/testsuite/gfortran.dg/gomp/all-memory-1.f90
+ d1682241b0b1d37b06e65589cfa2336f  gcc/testsuite/gfortran.dg/gomp/all-memory-2.f90
+ 794c06e7ccb0401f5586d816e30cad08  gcc/testsuite/gfortran.dg/gomp/all-memory-3.f90
  5633756a662441452bd869456e985808  gcc/testsuite/gfortran.dg/gomp/allocatable_components_1.f90
  d8f891883879b40925714053d72765b2  gcc/testsuite/gfortran.dg/gomp/allocate-1.f90
  b9fa7dddfdd19370c87587727ea3a52b  gcc/testsuite/gfortran.dg/gomp/allocate-2.f90
! 16e9d68b7804e4ecd40f3bd6702cf3c5  gcc/testsuite/gfortran.dg/gomp/allocate-3.f90
  a2a78b9dfd24cc5b801a51ebf7713787  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.1.1.f90
  a939ad660a97fdd3a36058fbbed08e4e  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.1.f90
  be2dfd843076b56ef43acf3c66d28133  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.11.2.f90
*************** e2405fcffa82b9acf1b1076f87c4061a  gcc/te
*** 81342,81347 ****
--- 86639,86651 ----
  fc76de5411a6ea3d2ef0e979cd24294f  gcc/testsuite/gfortran.dg/gomp/appendix-a/a.9.1.f90
  9a03fab1b305d530442f88512d22ac27  gcc/testsuite/gfortran.dg/gomp/associate1.f90
  e1b308679ecb209975b7e9df6d561839  gcc/testsuite/gfortran.dg/gomp/associate2.f90
+ fb85bc94c558f82dd9e7f3b0bca465ef  gcc/testsuite/gfortran.dg/gomp/assume-1.f90
+ f1a766f8696c6d4c654b209e78e352ce  gcc/testsuite/gfortran.dg/gomp/assume-2.f90
+ 5e6389d0abcd7c2f90b6a1cd61ef9bc3  gcc/testsuite/gfortran.dg/gomp/assume-3.f90
+ 4bee16d209be417ce87c236f99f90dfb  gcc/testsuite/gfortran.dg/gomp/assume-4.f90
+ 0812a6a2cc0b6a44ec3668a36bd6b33b  gcc/testsuite/gfortran.dg/gomp/assume-5.f90
+ 3b3dfd23626e235883bd65611239768d  gcc/testsuite/gfortran.dg/gomp/assumes-1.f90
+ 936fb03e38773522433e16d265b4fee7  gcc/testsuite/gfortran.dg/gomp/assumes-2.f90
  35cd43e5e50dfb825738cd8d77ba5b24  gcc/testsuite/gfortran.dg/gomp/atomic-10.f90
  66c185ce06ff0acbc15f2a764d987902  gcc/testsuite/gfortran.dg/gomp/atomic-12.f90
  dbe2f40d97bc2b89c8b1256683958181  gcc/testsuite/gfortran.dg/gomp/atomic-15.f90
*************** bab96c8ce5beeb0e7d9e4dae2fd0ea5f  gcc/te
*** 81364,81377 ****
  6240d21497a94815867abd53e7fcfe68  gcc/testsuite/gfortran.dg/gomp/cancel-2.f90
  c2875e99b414fbced20c5c41d21b04c4  gcc/testsuite/gfortran.dg/gomp/cancel-3.f90
  08ea5c242fb3441982cd27d2f7c57be0  gcc/testsuite/gfortran.dg/gomp/cancel-4.f90
  24d9a671708eb4318e409fce39a7f2da  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-1.f90
  00da5110c651c599834b4c04bf8015d5  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-2.f90
  8dbac5414be8ed46decf2134d6ea91fc  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-3.f90
  a8f0294a171f1359d6f5abd04324e891  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-4.f90
  b04d01c8918c4b0e4cfbbca2ac07c3a9  gcc/testsuite/gfortran.dg/gomp/clauses-1.f90
! 96e03fc83d8d2d97e5e314cc6237a70f  gcc/testsuite/gfortran.dg/gomp/collapse1.f90
  0d28facbb96730c300fadf428745b605  gcc/testsuite/gfortran.dg/gomp/collapse2.f90
  36990c2a4b5e499e3cd93ef78508f038  gcc/testsuite/gfortran.dg/gomp/combined-if.f90
  5889f294d23bf018b629ca16a28a09c2  gcc/testsuite/gfortran.dg/gomp/crayptr1.f90
  4009d52a55ca8f5b28f926033fbbbabe  gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
  fa862d5202e8a9940ce10e5de251b964  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
--- 86668,86685 ----
  6240d21497a94815867abd53e7fcfe68  gcc/testsuite/gfortran.dg/gomp/cancel-2.f90
  c2875e99b414fbced20c5c41d21b04c4  gcc/testsuite/gfortran.dg/gomp/cancel-3.f90
  08ea5c242fb3441982cd27d2f7c57be0  gcc/testsuite/gfortran.dg/gomp/cancel-4.f90
+ 6b66fc1481a6f221ffe6678e53b8b9ec  gcc/testsuite/gfortran.dg/gomp/canonical-loop-1.f90
+ 9a5ba9432f6c8dd47138339ba92c66ee  gcc/testsuite/gfortran.dg/gomp/canonical-loop-2.f90
  24d9a671708eb4318e409fce39a7f2da  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-1.f90
  00da5110c651c599834b4c04bf8015d5  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-2.f90
  8dbac5414be8ed46decf2134d6ea91fc  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-3.f90
  a8f0294a171f1359d6f5abd04324e891  gcc/testsuite/gfortran.dg/gomp/class-firstprivate-4.f90
  b04d01c8918c4b0e4cfbbca2ac07c3a9  gcc/testsuite/gfortran.dg/gomp/clauses-1.f90
! da32477bda3a79b60559a28c1c899a20  gcc/testsuite/gfortran.dg/gomp/collapse1.f90
  0d28facbb96730c300fadf428745b605  gcc/testsuite/gfortran.dg/gomp/collapse2.f90
  36990c2a4b5e499e3cd93ef78508f038  gcc/testsuite/gfortran.dg/gomp/combined-if.f90
+ ab16bdb71b7351b88eb2848c3dac063a  gcc/testsuite/gfortran.dg/gomp/copyprivate-1.f90
+ 384b77d140293cc0185bfcfbe6ea5dcc  gcc/testsuite/gfortran.dg/gomp/copyprivate-2.f90
  5889f294d23bf018b629ca16a28a09c2  gcc/testsuite/gfortran.dg/gomp/crayptr1.f90
  4009d52a55ca8f5b28f926033fbbbabe  gcc/testsuite/gfortran.dg/gomp/crayptr2.f90
  fa862d5202e8a9940ce10e5de251b964  gcc/testsuite/gfortran.dg/gomp/crayptr3.f90
*************** fa862d5202e8a9940ce10e5de251b964  gcc/te
*** 81379,81393 ****
  4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
  f771e918155eed02d90e026b9c163449  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
  3db4bd90d0375549d4d03e0903825f7e  gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
  ea4104a68bdd94cb4c7afb9454a3e105  gcc/testsuite/gfortran.dg/gomp/declare-simd-coarray-lib.f90
  3efc7a1651bd3761d7b6f4bbc264313a  gcc/testsuite/gfortran.dg/gomp/declare-target-1.f90
! 212cd883d44a65487259e920b7082564  gcc/testsuite/gfortran.dg/gomp/declare-target-2.f90
! f2ade342ab737629096e1f8a8a9e6de0  gcc/testsuite/gfortran.dg/gomp/declare-target-4.f90
  cd36c1dc647fda3c47998959ae255f2e  gcc/testsuite/gfortran.dg/gomp/declare-target-5.f90
  ae9450408a560cd53a7d21f2f8cbad71  gcc/testsuite/gfortran.dg/gomp/declare-variant-1.f90
! d1585d6e61e98e4837375d613ce049da  gcc/testsuite/gfortran.dg/gomp/declare-variant-10.f90
! 44c17460b5e2ebc6cd8cc135d86b6537  gcc/testsuite/gfortran.dg/gomp/declare-variant-11.f90
! 586b8a09abee41070ecb00d08266c23d  gcc/testsuite/gfortran.dg/gomp/declare-variant-12.f90
  251bb4a50465105ccdbe67e3d804c0ec  gcc/testsuite/gfortran.dg/gomp/declare-variant-13.f90
  922992fe63cdcd3599323fabb9f91496  gcc/testsuite/gfortran.dg/gomp/declare-variant-14.f90
  bcff008fda796aaaa4aa0c808a1cf8da  gcc/testsuite/gfortran.dg/gomp/declare-variant-15.f90
--- 86687,86705 ----
  4a434ccf995f8c325ad483ae77b66d9f  gcc/testsuite/gfortran.dg/gomp/crayptr5.f90
  f771e918155eed02d90e026b9c163449  gcc/testsuite/gfortran.dg/gomp/declare-simd-1.f90
  3db4bd90d0375549d4d03e0903825f7e  gcc/testsuite/gfortran.dg/gomp/declare-simd-2.f90
+ 2a1d11803d89a25e412300a0b880260f  gcc/testsuite/gfortran.dg/gomp/declare-simd-3.f90
+ 28aceea38e0468eae02d0b21b6326b34  gcc/testsuite/gfortran.dg/gomp/declare-simd-4.f90
+ 7ad1e2a95d3e303d0d364e2ebe69c5c9  gcc/testsuite/gfortran.dg/gomp/declare-simd-5.f90
+ a10e905c3b5e37a46edf6f7918dd2815  gcc/testsuite/gfortran.dg/gomp/declare-simd-6.f90
  ea4104a68bdd94cb4c7afb9454a3e105  gcc/testsuite/gfortran.dg/gomp/declare-simd-coarray-lib.f90
  3efc7a1651bd3761d7b6f4bbc264313a  gcc/testsuite/gfortran.dg/gomp/declare-target-1.f90
! 28034efd191b59bb1825f666172304ea  gcc/testsuite/gfortran.dg/gomp/declare-target-2.f90
! be455031a2f461d0dfe46a95d12ee320  gcc/testsuite/gfortran.dg/gomp/declare-target-4.f90
  cd36c1dc647fda3c47998959ae255f2e  gcc/testsuite/gfortran.dg/gomp/declare-target-5.f90
  ae9450408a560cd53a7d21f2f8cbad71  gcc/testsuite/gfortran.dg/gomp/declare-variant-1.f90
! d709549d9e901876f985f2254c7ab8f2  gcc/testsuite/gfortran.dg/gomp/declare-variant-10.f90
! 7240e94b3579c5d611f271ac24d0dd41  gcc/testsuite/gfortran.dg/gomp/declare-variant-11.f90
! 78a224bc1d7f83575a6f10d74750fa55  gcc/testsuite/gfortran.dg/gomp/declare-variant-12.f90
  251bb4a50465105ccdbe67e3d804c0ec  gcc/testsuite/gfortran.dg/gomp/declare-variant-13.f90
  922992fe63cdcd3599323fabb9f91496  gcc/testsuite/gfortran.dg/gomp/declare-variant-14.f90
  bcff008fda796aaaa4aa0c808a1cf8da  gcc/testsuite/gfortran.dg/gomp/declare-variant-15.f90
*************** c8be345342a9412b0fcfce5b1ef75494  gcc/te
*** 81407,81426 ****
  8b017b80a8823fe935e58eac73673b61  gcc/testsuite/gfortran.dg/gomp/defaultmap-1.f90
  318f72b3af7c8052b99ae5eaf03d5eb9  gcc/testsuite/gfortran.dg/gomp/defaultmap-2.f90
  d638394ef6b5d3b81dd5d401e9384a8e  gcc/testsuite/gfortran.dg/gomp/defaultmap-3.f90
! 400507a238abeb48518833a88628598c  gcc/testsuite/gfortran.dg/gomp/defaultmap-4.f90
! 25ce25bddd9fc3d310ab402fa1f706e2  gcc/testsuite/gfortran.dg/gomp/defaultmap-5.f90
! e6cc091be856f2eebb0cecc58fb81c3d  gcc/testsuite/gfortran.dg/gomp/defaultmap-6.f90
  470d844fb0d7cccca9d9f7020f4c38a9  gcc/testsuite/gfortran.dg/gomp/defaultmap-7.f90
  fa41d6dd0ec4bc45beb3cbce04bf821d  gcc/testsuite/gfortran.dg/gomp/depend-1.f90
! 98e87e73609fd39aeb74c538ed0cecbc  gcc/testsuite/gfortran.dg/gomp/depend-4.f90
  c8d298cef2970ce3ead77751bfa3b24b  gcc/testsuite/gfortran.dg/gomp/depend-5.f90
! e42d645f40278d03b1c8942e0aaf81f3  gcc/testsuite/gfortran.dg/gomp/depend-6.f90
  fcda5a12452ac185d1c306d0e8222556  gcc/testsuite/gfortran.dg/gomp/depend-iterator-1.f90
! 9d5fb0bbe4acb6d59a56c4c09cc9b5fc  gcc/testsuite/gfortran.dg/gomp/depend-iterator-2.f90
  8559f178a456958c370535d4d838c9d7  gcc/testsuite/gfortran.dg/gomp/depend-iterator-3.f90
! 9ade98b653d57f5a7e391873c55aebb3  gcc/testsuite/gfortran.dg/gomp/depobj-1.f90
! 46f62c954f5ed0c548f97c8d9d30d8b7  gcc/testsuite/gfortran.dg/gomp/depobj-2.f90
  9757fd1aff0e97e5388764ec44be73fd  gcc/testsuite/gfortran.dg/gomp/do-1.f90
  aa1be4316dee2804f538b30041f7be95  gcc/testsuite/gfortran.dg/gomp/error-1.f90
  0d3656be08c9011e56a522c5e7cddebd  gcc/testsuite/gfortran.dg/gomp/error-2.f90
  79e1726bb3cc84913d21c0af63e764a6  gcc/testsuite/gfortran.dg/gomp/error-3.f90
--- 86719,86740 ----
  8b017b80a8823fe935e58eac73673b61  gcc/testsuite/gfortran.dg/gomp/defaultmap-1.f90
  318f72b3af7c8052b99ae5eaf03d5eb9  gcc/testsuite/gfortran.dg/gomp/defaultmap-2.f90
  d638394ef6b5d3b81dd5d401e9384a8e  gcc/testsuite/gfortran.dg/gomp/defaultmap-3.f90
! a28c1aee8075487b7ef5213d6c13ccaf  gcc/testsuite/gfortran.dg/gomp/defaultmap-4.f90
! 6299fd54a36cce77c6db4b9dc37a8e4d  gcc/testsuite/gfortran.dg/gomp/defaultmap-5.f90
! f79e65aa139717f2926fce5e5ae182c9  gcc/testsuite/gfortran.dg/gomp/defaultmap-6.f90
  470d844fb0d7cccca9d9f7020f4c38a9  gcc/testsuite/gfortran.dg/gomp/defaultmap-7.f90
  fa41d6dd0ec4bc45beb3cbce04bf821d  gcc/testsuite/gfortran.dg/gomp/depend-1.f90
! b925235365ea6a6930ecc74136916763  gcc/testsuite/gfortran.dg/gomp/depend-4.f90
  c8d298cef2970ce3ead77751bfa3b24b  gcc/testsuite/gfortran.dg/gomp/depend-5.f90
! 149b6cbd5ca01b24f687f2b432729419  gcc/testsuite/gfortran.dg/gomp/depend-6.f90
  fcda5a12452ac185d1c306d0e8222556  gcc/testsuite/gfortran.dg/gomp/depend-iterator-1.f90
! 55c61de7187ed22caab746d7474c5e93  gcc/testsuite/gfortran.dg/gomp/depend-iterator-2.f90
  8559f178a456958c370535d4d838c9d7  gcc/testsuite/gfortran.dg/gomp/depend-iterator-3.f90
! 1531f847e56d02d5d23beb0a2ff5cd9c  gcc/testsuite/gfortran.dg/gomp/depobj-1.f90
! 1db04c92916620d84c79364d4cc275b9  gcc/testsuite/gfortran.dg/gomp/depobj-2.f90
  9757fd1aff0e97e5388764ec44be73fd  gcc/testsuite/gfortran.dg/gomp/do-1.f90
+ 9b09f560c0be75a5e05b926194bcc40a  gcc/testsuite/gfortran.dg/gomp/doacross-5.f90
+ 688b415eed42adc6cb70cd626354a0be  gcc/testsuite/gfortran.dg/gomp/doacross-6.f90
  aa1be4316dee2804f538b30041f7be95  gcc/testsuite/gfortran.dg/gomp/error-1.f90
  0d3656be08c9011e56a522c5e7cddebd  gcc/testsuite/gfortran.dg/gomp/error-2.f90
  79e1726bb3cc84913d21c0af63e764a6  gcc/testsuite/gfortran.dg/gomp/error-3.f90
*************** d3b68a58adb3f5eb2533a30d870f100e  gcc/te
*** 81429,81454 ****
  afc521c98a39e0e1821f895f702c9cd1  gcc/testsuite/gfortran.dg/gomp/flush-2.f90
  14ab6dfa2149c533128a3f201531e525  gcc/testsuite/gfortran.dg/gomp/free-1.f90
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
! 515ed5264b0dee69a4f88bb8a0dbe04c  gcc/testsuite/gfortran.dg/gomp/gomp.exp
  c81f6e5f96d44ff4d4332116923c4ba7  gcc/testsuite/gfortran.dg/gomp/if-1.f90
  c20118617178c3c6359815c5134a798a  gcc/testsuite/gfortran.dg/gomp/implicit-save.f90
  336652c36c7d7ce2f34ced505acc64c9  gcc/testsuite/gfortran.dg/gomp/include_1.f
  1fe1ad5080374d9a506a842e10eb64cf  gcc/testsuite/gfortran.dg/gomp/include_1.inc
  c9c12b39090e7fc13f17ab5f3914978a  gcc/testsuite/gfortran.dg/gomp/include_2.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
! a0ddccf5319d7e26e8fdaf2827f3ea94  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-1.f90
! e6d7aaeafebe3f95771812903728dd74  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f90
! d70909ea0d48c8aaab65788c80372c88  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-3.f90
  4dd4181b247ac3f79a6523a11f774cdc  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-1.f90
  af04268cd1ba9085e47cbae173428261  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-2.f90
  8da702190ab885b30f172e950f2352c7  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-3.f90
  18ac4502ea33e5ec7eb9987e4f08464a  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-4.f90
  0324d1aeff2c9703006e512f071b9b0f  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-5.f90
  fcfec1b14709740892410ae1c647ba42  gcc/testsuite/gfortran.dg/gomp/linear-1.f90
  1bf1a25963d70f206f6b9615dd00b4a3  gcc/testsuite/gfortran.dg/gomp/loop-1.f90
! e69fe1632f91b2b00b5cc08a12bba5df  gcc/testsuite/gfortran.dg/gomp/loop-2.f90
  9fc7632ae864eb649dcb18b7f8cab32c  gcc/testsuite/gfortran.dg/gomp/loop-3.f90
  d9fb1de547303f6296a47031238a2a91  gcc/testsuite/gfortran.dg/gomp/loop-4.f90
  30f19939f66f9036dd94e47a44d71909  gcc/testsuite/gfortran.dg/gomp/loop-exit.f90
  dec560a080ae2757b0acb2325c3aafab  gcc/testsuite/gfortran.dg/gomp/map-1.f90
  43569bbc57024a10628df3c4be381f2a  gcc/testsuite/gfortran.dg/gomp/map-2.f90
--- 86743,86776 ----
  afc521c98a39e0e1821f895f702c9cd1  gcc/testsuite/gfortran.dg/gomp/flush-2.f90
  14ab6dfa2149c533128a3f201531e525  gcc/testsuite/gfortran.dg/gomp/free-1.f90
  b7bb651884d39c2e5dce7d57d46f40a5  gcc/testsuite/gfortran.dg/gomp/free-2.f90
! 5588b0b76b2bb1e60203b59af37e1005  gcc/testsuite/gfortran.dg/gomp/gomp.exp
  c81f6e5f96d44ff4d4332116923c4ba7  gcc/testsuite/gfortran.dg/gomp/if-1.f90
  c20118617178c3c6359815c5134a798a  gcc/testsuite/gfortran.dg/gomp/implicit-save.f90
  336652c36c7d7ce2f34ced505acc64c9  gcc/testsuite/gfortran.dg/gomp/include_1.f
  1fe1ad5080374d9a506a842e10eb64cf  gcc/testsuite/gfortran.dg/gomp/include_1.inc
  c9c12b39090e7fc13f17ab5f3914978a  gcc/testsuite/gfortran.dg/gomp/include_2.f90
  c6b23e36c3423a3454fb19b0ec6f0e01  gcc/testsuite/gfortran.dg/gomp/intentin1.f90
! 8c74ac45276055114e691c8cd534fc8a  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-1.f90
! 56ffb73ae6f2ea9f30c7d45ab815247c  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-2.f90
! 7063482a995ea63c55b568e5a94be6fa  gcc/testsuite/gfortran.dg/gomp/is_device_ptr-3.f90
  4dd4181b247ac3f79a6523a11f774cdc  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-1.f90
  af04268cd1ba9085e47cbae173428261  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-2.f90
  8da702190ab885b30f172e950f2352c7  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-3.f90
  18ac4502ea33e5ec7eb9987e4f08464a  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-4.f90
  0324d1aeff2c9703006e512f071b9b0f  gcc/testsuite/gfortran.dg/gomp/lastprivate-conditional-5.f90
  fcfec1b14709740892410ae1c647ba42  gcc/testsuite/gfortran.dg/gomp/linear-1.f90
+ 2a43afdc32ad31fdec07eb9f18d21968  gcc/testsuite/gfortran.dg/gomp/linear-2.f90
+ bfeddbad49017a5997209b1c1ce90c42  gcc/testsuite/gfortran.dg/gomp/linear-3.f90
+ 710df3527ce9a75d9c8e3893dc293417  gcc/testsuite/gfortran.dg/gomp/linear-4.f90
+ 7ac1c4413579cb25270f7dceaccbea46  gcc/testsuite/gfortran.dg/gomp/linear-5.f90
+ f2a3c11754d246dbe83f8e48b00ea061  gcc/testsuite/gfortran.dg/gomp/linear-6.f90
+ a4e7ef5926daf8429df01accd234ddc2  gcc/testsuite/gfortran.dg/gomp/linear-7.f90
+ 8b81f69306667f7ab92ce3e8cd7a31cf  gcc/testsuite/gfortran.dg/gomp/linear-8.f90
  1bf1a25963d70f206f6b9615dd00b4a3  gcc/testsuite/gfortran.dg/gomp/loop-1.f90
! d9c821fc34d75b5a1aab6f11450398b8  gcc/testsuite/gfortran.dg/gomp/loop-2.f90
  9fc7632ae864eb649dcb18b7f8cab32c  gcc/testsuite/gfortran.dg/gomp/loop-3.f90
  d9fb1de547303f6296a47031238a2a91  gcc/testsuite/gfortran.dg/gomp/loop-4.f90
+ f9ef443961a79bdf37522ed835fb9343  gcc/testsuite/gfortran.dg/gomp/loop-5.f90
  30f19939f66f9036dd94e47a44d71909  gcc/testsuite/gfortran.dg/gomp/loop-exit.f90
  dec560a080ae2757b0acb2325c3aafab  gcc/testsuite/gfortran.dg/gomp/map-1.f90
  43569bbc57024a10628df3c4be381f2a  gcc/testsuite/gfortran.dg/gomp/map-2.f90
*************** b76492fcf2fb1505fe0530d8302d7581  gcc/te
*** 81458,81463 ****
--- 86780,86786 ----
  d9692272c0b81e1742bb5a587d004640  gcc/testsuite/gfortran.dg/gomp/map-6.f90
  a15327fbebc52fb184d3971928dc264d  gcc/testsuite/gfortran.dg/gomp/map-7.f90
  7716dfe585f082cdb3180040c8094a78  gcc/testsuite/gfortran.dg/gomp/map-8.f90
+ da5739a175a99b959576ca5bd3277008  gcc/testsuite/gfortran.dg/gomp/map-9.f90
  dbafc5b94ae395cda5657628bc263b17  gcc/testsuite/gfortran.dg/gomp/map-alloc-comp-1.f90
  27a18505986bb3d15bf8fae66e56277d  gcc/testsuite/gfortran.dg/gomp/masked-1.f90
  3dcee7c8522ab62ae30bfb476d1ff838  gcc/testsuite/gfortran.dg/gomp/masked-2.f90
*************** dbafc5b94ae395cda5657628bc263b17  gcc/te
*** 81465,81480 ****
  cb24525724c32b45315c964136a5f1b9  gcc/testsuite/gfortran.dg/gomp/masked-combined-1.f90
  363b0dfc01dfa5ff05f2e7f9e5cb91dd  gcc/testsuite/gfortran.dg/gomp/masked-combined-2.f90
  4fc7de6f5648a0220d734c2d546f8dfc  gcc/testsuite/gfortran.dg/gomp/masked-taskloop.f90
  d8fab0c405f257ffcf3c0d31627f2355  gcc/testsuite/gfortran.dg/gomp/nesting-1.f90
! 463e44e3afba838504efe978ec7491ce  gcc/testsuite/gfortran.dg/gomp/nesting-2.f90
  d4bd33dd71cfc2687d89a40ce9aa0059  gcc/testsuite/gfortran.dg/gomp/nesting-3.f90
  5eb69ee32fb2e3a0ddb2b6d84e0e175c  gcc/testsuite/gfortran.dg/gomp/nontemporal-1.f90
  50c115c8124a5d89918f3466d7eab60a  gcc/testsuite/gfortran.dg/gomp/nontemporal-2.f90
  f9188ccb0e23b81607240441c3714df2  gcc/testsuite/gfortran.dg/gomp/nothing-1.f90
  10acc2278da37244f753a40297cd1e3a  gcc/testsuite/gfortran.dg/gomp/nothing-2.f90
  3cc8ac1a4c71ccef2cd14409d43c0c2f  gcc/testsuite/gfortran.dg/gomp/nowait-1.f90
! 3a9b654c9bb96ed19dbb03d68d640787  gcc/testsuite/gfortran.dg/gomp/nowait-2.f90
  490e293ad86c435fc0bcef164624d407  gcc/testsuite/gfortran.dg/gomp/nowait-3.f90
  6b3470b7485a2352af9dc1c1b94d0c10  gcc/testsuite/gfortran.dg/gomp/num-teams-1.f90
  d63391da91e43519d530db761b208cc9  gcc/testsuite/gfortran.dg/gomp/num-teams-2.f90
  52223211c34f4dbace5e033f8243ae1f  gcc/testsuite/gfortran.dg/gomp/omp_atomic1.f90
--- 86788,86810 ----
  cb24525724c32b45315c964136a5f1b9  gcc/testsuite/gfortran.dg/gomp/masked-combined-1.f90
  363b0dfc01dfa5ff05f2e7f9e5cb91dd  gcc/testsuite/gfortran.dg/gomp/masked-combined-2.f90
  4fc7de6f5648a0220d734c2d546f8dfc  gcc/testsuite/gfortran.dg/gomp/masked-taskloop.f90
+ 5089fa6a1404ef16d8501a2090e01711  gcc/testsuite/gfortran.dg/gomp/minmaxloc_1.f90
  d8fab0c405f257ffcf3c0d31627f2355  gcc/testsuite/gfortran.dg/gomp/nesting-1.f90
! 20369c0edadd588648f0e943f1fb0e7e  gcc/testsuite/gfortran.dg/gomp/nesting-2.f90
  d4bd33dd71cfc2687d89a40ce9aa0059  gcc/testsuite/gfortran.dg/gomp/nesting-3.f90
+ eab54daacd3e5d6012cfbac3a0c1cb18  gcc/testsuite/gfortran.dg/gomp/non-rectangular-loop.f90
  5eb69ee32fb2e3a0ddb2b6d84e0e175c  gcc/testsuite/gfortran.dg/gomp/nontemporal-1.f90
  50c115c8124a5d89918f3466d7eab60a  gcc/testsuite/gfortran.dg/gomp/nontemporal-2.f90
  f9188ccb0e23b81607240441c3714df2  gcc/testsuite/gfortran.dg/gomp/nothing-1.f90
  10acc2278da37244f753a40297cd1e3a  gcc/testsuite/gfortran.dg/gomp/nothing-2.f90
  3cc8ac1a4c71ccef2cd14409d43c0c2f  gcc/testsuite/gfortran.dg/gomp/nowait-1.f90
! cd03f8a0d20132fe216e0272244aea16  gcc/testsuite/gfortran.dg/gomp/nowait-2.f90
  490e293ad86c435fc0bcef164624d407  gcc/testsuite/gfortran.dg/gomp/nowait-3.f90
+ 25610cd5dd461e9fd48920a34199b821  gcc/testsuite/gfortran.dg/gomp/nowait-4.f90
+ cd03f8a0d20132fe216e0272244aea16  gcc/testsuite/gfortran.dg/gomp/nowait-5.f90
+ cfb5a1542d4d90f61e5067fcaac3be80  gcc/testsuite/gfortran.dg/gomp/nowait-6.f90
+ dd9162259e2bd075657e964692c7a68b  gcc/testsuite/gfortran.dg/gomp/nowait-7.f90
+ 2bdc0b4bf54d9d026d81bf850163570e  gcc/testsuite/gfortran.dg/gomp/nowait-8.f90
  6b3470b7485a2352af9dc1c1b94d0c10  gcc/testsuite/gfortran.dg/gomp/num-teams-1.f90
  d63391da91e43519d530db761b208cc9  gcc/testsuite/gfortran.dg/gomp/num-teams-2.f90
  52223211c34f4dbace5e033f8243ae1f  gcc/testsuite/gfortran.dg/gomp/omp_atomic1.f90
*************** c1f9abec8f22e154bb77201af2f18b23  gcc/te
*** 81487,81498 ****
--- 86817,86833 ----
  3940c2cd145907f9545b48f9cd30792d  gcc/testsuite/gfortran.dg/gomp/omp_parse2.f
  421900bf9ea5cfcbf2d2146fb3d77407  gcc/testsuite/gfortran.dg/gomp/omp_threadprivate1.f90
  bdca03c79b16b5f9c19e5c92941f5888  gcc/testsuite/gfortran.dg/gomp/omp_threadprivate2.f90
+ 1b5de3335a1112d7ec9c9b898e077530  gcc/testsuite/gfortran.dg/gomp/ompx-1.f90
+ fec41b5c6a0b000823f8815e41c46849  gcc/testsuite/gfortran.dg/gomp/omx-1.f
+ f4c867d57c42e9ff424e7bf8e63aca27  gcc/testsuite/gfortran.dg/gomp/omx-2.f
  31f5c4996a25be6d38e18faf28b150b4  gcc/testsuite/gfortran.dg/gomp/openmp-simd-1.f90
  2b03c97061d19eddde270a6c9dd3fc38  gcc/testsuite/gfortran.dg/gomp/openmp-simd-2.f90
  7b53af38ad214d98f0d0550bbb80b654  gcc/testsuite/gfortran.dg/gomp/openmp-simd-3.f90
  c86578519526f3523481033c61923ccb  gcc/testsuite/gfortran.dg/gomp/openmp-simd-4.f90
  962b3bb368923a3267954c83793c7d97  gcc/testsuite/gfortran.dg/gomp/openmp-simd-5.f90
  9ace4e530b40cdfe46ee82285a4c3007  gcc/testsuite/gfortran.dg/gomp/openmp-simd-6.f90
+ 727d8f8adf8d29e41a1fd2901fc06410  gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90
+ 0ad011db4bd5ba5d76c5d459ca3559de  gcc/testsuite/gfortran.dg/gomp/openmp-simd-8.f90
  ab6d18741860d8f9094676890b96e068  gcc/testsuite/gfortran.dg/gomp/order-1.f90
  618c952f5bbb7326c70d6e7a786f679d  gcc/testsuite/gfortran.dg/gomp/order-2.f90
  f5feeab5c486d27ccc1c9005dc112eff  gcc/testsuite/gfortran.dg/gomp/order-3.f90
*************** f523f11e31c8d7a378a90e54f4cc9a88  gcc/te
*** 81511,81516 ****
--- 86846,86859 ----
  8d0eb4ba7d5d6e2c9ffeb53bd0b900ec  gcc/testsuite/gfortran.dg/gomp/pr103695.f90
  b229abc8cb06bd3633deb0bb940ede08  gcc/testsuite/gfortran.dg/gomp/pr104131.f90
  39842b4010b4165bbe821ffc8a903991  gcc/testsuite/gfortran.dg/gomp/pr104757.f90
+ 02981b5d8f6403bdc6a2dfd0100dcc74  gcc/testsuite/gfortran.dg/gomp/pr107214-2.f90
+ aa1b85a34517ebec1f009bb653cba745  gcc/testsuite/gfortran.dg/gomp/pr107214-3.f90
+ 2e63593d3e34a9e40ad97ad973ca3a83  gcc/testsuite/gfortran.dg/gomp/pr107214-4.f90
+ 18ff1e9a70f7c58228a1509531b146db  gcc/testsuite/gfortran.dg/gomp/pr107214-5.f90
+ edeec1fe2488c7117f56e10734af03dc  gcc/testsuite/gfortran.dg/gomp/pr107214-6.f90
+ 697c52a53eea166cade44a3f935b8caf  gcc/testsuite/gfortran.dg/gomp/pr107214-7.f90
+ 1474c5a5881d7047f1212bc8cfb8ef92  gcc/testsuite/gfortran.dg/gomp/pr107214-8.f90
+ 3beded12a494129bebcc732d85089896  gcc/testsuite/gfortran.dg/gomp/pr107214.f90
  9a6817790a272cd8153d4303d324c00f  gcc/testsuite/gfortran.dg/gomp/pr26224.f
  d2c74a71f2bea0005d853821e6f0142c  gcc/testsuite/gfortran.dg/gomp/pr27573.f90
  a65c4577a606ba1bdab50e690b269b04  gcc/testsuite/gfortran.dg/gomp/pr29759.f90
*************** f5bcea31678114301e0da9c5d60bb564  gcc/te
*** 81583,81589 ****
  92640e276a3deabcb0817b450e3c007f  gcc/testsuite/gfortran.dg/gomp/pr82568.f90
  abcf243d41ab312c5b8bd135bf736ce3  gcc/testsuite/gfortran.dg/gomp/pr83977.f90
  28b8381f9a6407f3fbdf2a45fe796f66  gcc/testsuite/gfortran.dg/gomp/pr84116.f90
! 900e29bb957f49d5b8cee27818655396  gcc/testsuite/gfortran.dg/gomp/pr85313.f90
  793bc6a890f694516d4634a933a5cb43  gcc/testsuite/gfortran.dg/gomp/pr85703.f90
  f1aeef25976d8f618b959afecdad1bb1  gcc/testsuite/gfortran.dg/gomp/pr86470.f90
  a05658043d2f44626cadb5dc7a817898  gcc/testsuite/gfortran.dg/gomp/pr87752.f90
--- 86926,86932 ----
  92640e276a3deabcb0817b450e3c007f  gcc/testsuite/gfortran.dg/gomp/pr82568.f90
  abcf243d41ab312c5b8bd135bf736ce3  gcc/testsuite/gfortran.dg/gomp/pr83977.f90
  28b8381f9a6407f3fbdf2a45fe796f66  gcc/testsuite/gfortran.dg/gomp/pr84116.f90
! eaf9460f4ff975f6fc6dcd6a8c5f1500  gcc/testsuite/gfortran.dg/gomp/pr85313.f90
  793bc6a890f694516d4634a933a5cb43  gcc/testsuite/gfortran.dg/gomp/pr85703.f90
  f1aeef25976d8f618b959afecdad1bb1  gcc/testsuite/gfortran.dg/gomp/pr86470.f90
  a05658043d2f44626cadb5dc7a817898  gcc/testsuite/gfortran.dg/gomp/pr87752.f90
*************** a2addf1a691db784ba87841fe1cf8f23  gcc/te
*** 81622,81632 ****
  274262a532e8508d248c02dc12d359bc  gcc/testsuite/gfortran.dg/gomp/requires-1.f90
  140462f2e11c8432e775eb6957a8e7bb  gcc/testsuite/gfortran.dg/gomp/requires-2.f90
  c91352c09b91870936925c3ece3a6771  gcc/testsuite/gfortran.dg/gomp/requires-3.f90
! 42164d7a349583bbb618e2fc6d8461ce  gcc/testsuite/gfortran.dg/gomp/requires-4.f90
  63a2fe63c34ac01ee2bad940a096ad3d  gcc/testsuite/gfortran.dg/gomp/requires-5.f90
  46f083bb08dfc0edfbdb3af4353d7197  gcc/testsuite/gfortran.dg/gomp/requires-6.f90
  d47fb4d0166842f717efe23cd8e6548c  gcc/testsuite/gfortran.dg/gomp/requires-7.f90
! 46c9bc3a791f36e338365c7fe111e44f  gcc/testsuite/gfortran.dg/gomp/requires-8.f90
  db8328a4f748cc704f20335b7343890b  gcc/testsuite/gfortran.dg/gomp/requires-9.f90
  070f19e3148aa90d8d032efcc1e9de46  gcc/testsuite/gfortran.dg/gomp/scan-1.f90
  e69757621834c84c21fc0470637b86af  gcc/testsuite/gfortran.dg/gomp/scan-2.f90
--- 86965,86975 ----
  274262a532e8508d248c02dc12d359bc  gcc/testsuite/gfortran.dg/gomp/requires-1.f90
  140462f2e11c8432e775eb6957a8e7bb  gcc/testsuite/gfortran.dg/gomp/requires-2.f90
  c91352c09b91870936925c3ece3a6771  gcc/testsuite/gfortran.dg/gomp/requires-3.f90
! 75b81b2a8b98f4d1fddf460d4f91687c  gcc/testsuite/gfortran.dg/gomp/requires-4.f90
  63a2fe63c34ac01ee2bad940a096ad3d  gcc/testsuite/gfortran.dg/gomp/requires-5.f90
  46f083bb08dfc0edfbdb3af4353d7197  gcc/testsuite/gfortran.dg/gomp/requires-6.f90
  d47fb4d0166842f717efe23cd8e6548c  gcc/testsuite/gfortran.dg/gomp/requires-7.f90
! d653471d8f256659299160eeef0b3250  gcc/testsuite/gfortran.dg/gomp/requires-8.f90
  db8328a4f748cc704f20335b7343890b  gcc/testsuite/gfortran.dg/gomp/requires-9.f90
  070f19e3148aa90d8d032efcc1e9de46  gcc/testsuite/gfortran.dg/gomp/scan-1.f90
  e69757621834c84c21fc0470637b86af  gcc/testsuite/gfortran.dg/gomp/scan-2.f90
*************** c525cee40cfdc1d7f1dda5cf299fdde9  gcc/te
*** 81640,81645 ****
--- 86983,86990 ----
  97aefac9d65dc006ea6d5ce5ea111492  gcc/testsuite/gfortran.dg/gomp/schedule-modifiers-2.f90
  c7709e0ef8d893a3fa9d2e893d1cb1a7  gcc/testsuite/gfortran.dg/gomp/scope-1.f90
  6d5ecca1c74a442d5b324bc5e3b1524a  gcc/testsuite/gfortran.dg/gomp/scope-2.f90
+ c4ea98725e5c211b45cc9e83b4dca2be  gcc/testsuite/gfortran.dg/gomp/scope-5.f90
+ 70cbd3f99d5ec34e89e7f2fb12f0938e  gcc/testsuite/gfortran.dg/gomp/scope-6.f90
  79dfa2e9e4441b4f7baa74120274ac19  gcc/testsuite/gfortran.dg/gomp/sharing-1.f90
  9dd19a9e9dfc0e4a98f98e8a7fc69049  gcc/testsuite/gfortran.dg/gomp/sharing-2.f90
  61ab8721e9576883e27967dd80ebb199  gcc/testsuite/gfortran.dg/gomp/sharing-3.f90
*************** b3d1280c39c6cae9dddab498b1e1eeb4  gcc/te
*** 81647,81659 ****
  1be41e06c2542eaeda3f3dc714dd101a  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-1.f90
  d492a0ba11cd7662d12ae10d05c32cae  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-2.f90
  2645b64d7f38b00ac8056bed5284cfb5  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-3.f90
  8f8ce7f2adace9bd429d0fc54c872b4b  gcc/testsuite/gfortran.dg/gomp/substring.f90
  51d1ad071cccf767857c7b593370c5d6  gcc/testsuite/gfortran.dg/gomp/target-device-1.f90
  03a4a1f0909b76dbab9d9f97b69cf3ba  gcc/testsuite/gfortran.dg/gomp/target-device-2.f90
  66eb37044b76d70fbcbd6f40fe0ee49e  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-1.f90
! 9212658f0470ba1304850f88cd51764c  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-2.f90
! d8ca6e0affc86b0360834109ca801128  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-3.f90
! 29b80ba1b44ce24883d3e941c7d6303a  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-4.f90
  1270cfd451f11e2ba8a4b451bb9b51e3  gcc/testsuite/gfortran.dg/gomp/target-exit-data.f90
  255df1293a7e993064b5f2531dd1a039  gcc/testsuite/gfortran.dg/gomp/target-has-device-addr-1.f90
  533ad130fc9c9f6a430f9cdefc575831  gcc/testsuite/gfortran.dg/gomp/target-has-device-addr-2.f90
--- 86992,87010 ----
  1be41e06c2542eaeda3f3dc714dd101a  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-1.f90
  d492a0ba11cd7662d12ae10d05c32cae  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-2.f90
  2645b64d7f38b00ac8056bed5284cfb5  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-3.f90
+ 5aa2e0ee8670be7d60e95eb876e49faa  gcc/testsuite/gfortran.dg/gomp/strictly-structured-block-4.f90
  8f8ce7f2adace9bd429d0fc54c872b4b  gcc/testsuite/gfortran.dg/gomp/substring.f90
+ 53e2d4b63d9ca8815db53bc42f488e2f  gcc/testsuite/gfortran.dg/gomp/target-data-1.f90
+ 079f6173ec2dbebf8ed09d91f136f03d  gcc/testsuite/gfortran.dg/gomp/target-data-2.f90
  51d1ad071cccf767857c7b593370c5d6  gcc/testsuite/gfortran.dg/gomp/target-device-1.f90
  03a4a1f0909b76dbab9d9f97b69cf3ba  gcc/testsuite/gfortran.dg/gomp/target-device-2.f90
  66eb37044b76d70fbcbd6f40fe0ee49e  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-1.f90
! 94d6b2d107065b23a85f406c036f5d5e  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-2.f90
! 0ba1bfc1e0576ddd51e2545b3f207148  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-2a.f90
! 0c761bfe27a0854f4dc5b5d0d56f7802  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-3.f90
! 500a5f460107c8722e23208574b65d09  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-4.f90
! 7ec834f632faabec913cbd38f2862fb3  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-5.f90
! 1577072db3f937bbd080bc7c33395c3b  gcc/testsuite/gfortran.dg/gomp/target-device-ancestor-6.f90
  1270cfd451f11e2ba8a4b451bb9b51e3  gcc/testsuite/gfortran.dg/gomp/target-exit-data.f90
  255df1293a7e993064b5f2531dd1a039  gcc/testsuite/gfortran.dg/gomp/target-has-device-addr-1.f90
  533ad130fc9c9f6a430f9cdefc575831  gcc/testsuite/gfortran.dg/gomp/target-has-device-addr-2.f90
*************** b75e4a6eaec211becf176c75768a3f3d  gcc/te
*** 81663,81669 ****
  4a93baff2b168f10d86571d18de637ba  gcc/testsuite/gfortran.dg/gomp/target3.f90
  15b47b840694124950869755ba30ce6f  gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90
  6c1d12034e3ca377a04b7373ef678265  gcc/testsuite/gfortran.dg/gomp/taskloop-1.f90
! 1ad9501e99b64fda14fa1db2b4a11b19  gcc/testsuite/gfortran.dg/gomp/taskloop-2.f90
  1b22afe90e22c058fc805c2720b68de8  gcc/testsuite/gfortran.dg/gomp/taskwait.f90
  c3cfb4ba20d0cf306196d4a7cfcbd04d  gcc/testsuite/gfortran.dg/gomp/teams-3.f90
  0dd7189095b30c8c67757c8e75cf399e  gcc/testsuite/gfortran.dg/gomp/teams-4.f90
--- 87014,87021 ----
  4a93baff2b168f10d86571d18de637ba  gcc/testsuite/gfortran.dg/gomp/target3.f90
  15b47b840694124950869755ba30ce6f  gcc/testsuite/gfortran.dg/gomp/task-detach-1.f90
  6c1d12034e3ca377a04b7373ef678265  gcc/testsuite/gfortran.dg/gomp/taskloop-1.f90
! 46ef7c29d7255c472ff1de0f32d3890a  gcc/testsuite/gfortran.dg/gomp/taskloop-2.f90
! 694a3a8185e7fe47817679c2aeb886c8  gcc/testsuite/gfortran.dg/gomp/taskwait-depend-nowait-1.f90
  1b22afe90e22c058fc805c2720b68de8  gcc/testsuite/gfortran.dg/gomp/taskwait.f90
  c3cfb4ba20d0cf306196d4a7cfcbd04d  gcc/testsuite/gfortran.dg/gomp/teams-3.f90
  0dd7189095b30c8c67757c8e75cf399e  gcc/testsuite/gfortran.dg/gomp/teams-4.f90
*************** b668767cebd1d81ba2d2ca1138456cbe  gcc/te
*** 81758,81764 ****
  7f6a0bf732d7a49a9bd1a4598c67549a  gcc/testsuite/gfortran.dg/graphite/block-2.f
  b432d9423fac5506e5220aa6b34be410  gcc/testsuite/gfortran.dg/graphite/block-3.f90
  466df24c793ce10011458d00ea210bc9  gcc/testsuite/gfortran.dg/graphite/block-4.f90
! 3ef2cde01a076cfb44f3da99b657a175  gcc/testsuite/gfortran.dg/graphite/graphite.exp
  178815ec0b286d5b50214ae046b407fe  gcc/testsuite/gfortran.dg/graphite/id-1.f90
  df4c5d17c4fe35475b6ddff605a83c8f  gcc/testsuite/gfortran.dg/graphite/id-10.f90
  6fd035afd995bfd09cebafa89bb45211  gcc/testsuite/gfortran.dg/graphite/id-11.f
--- 87110,87116 ----
  7f6a0bf732d7a49a9bd1a4598c67549a  gcc/testsuite/gfortran.dg/graphite/block-2.f
  b432d9423fac5506e5220aa6b34be410  gcc/testsuite/gfortran.dg/graphite/block-3.f90
  466df24c793ce10011458d00ea210bc9  gcc/testsuite/gfortran.dg/graphite/block-4.f90
! 494b58b463df112fb93a15d74cd3b454  gcc/testsuite/gfortran.dg/graphite/graphite.exp
  178815ec0b286d5b50214ae046b407fe  gcc/testsuite/gfortran.dg/graphite/id-1.f90
  df4c5d17c4fe35475b6ddff605a83c8f  gcc/testsuite/gfortran.dg/graphite/id-10.f90
  6fd035afd995bfd09cebafa89bb45211  gcc/testsuite/gfortran.dg/graphite/id-11.f
*************** a694bd805dd3aeebdb0f7e0a7f45a745  gcc/te
*** 81797,81802 ****
--- 87149,87155 ----
  0240aae9686b369eab6446b045ecaa8c  gcc/testsuite/gfortran.dg/graphite/interchange-3.f90
  6453be1d74bfa124e43e80cd5a76bcea  gcc/testsuite/gfortran.dg/graphite/interchange-4.f
  87e0ced91004c7ae6983653155179e10  gcc/testsuite/gfortran.dg/graphite/interchange-5.f
+ 1f4660b67fad96a31c0671a992c30136  gcc/testsuite/gfortran.dg/graphite/pr107865.f90
  0e0032acf3995632e5da45c38bdb6512  gcc/testsuite/gfortran.dg/graphite/pr14741.f90
  f7134dbe0fa84d721d192cd67175ff61  gcc/testsuite/gfortran.dg/graphite/pr29290.f90
  b2341f4b53422560907f06b2d2c09962  gcc/testsuite/gfortran.dg/graphite/pr29581.f90
*************** daa1172ed1d5a6072057b20aaca3b1ec  gcc/te
*** 81860,81866 ****
  c6ccb0077483440bf572afc0c07cf295  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  7f4798472e54ab24309f0edab16c91d1  gcc/testsuite/gfortran.dg/graphite/vect-pr94043.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
! ffb510b687f0ea0845b8ed3e93ad308d  gcc/testsuite/gfortran.dg/guality/guality.exp
  9e2790792b04c03a1a0860c862a27b4b  gcc/testsuite/gfortran.dg/guality/pr41558.f90
  26d42c53448fb26d2b66a4b1d93693d3  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
--- 87213,87219 ----
  c6ccb0077483440bf572afc0c07cf295  gcc/testsuite/gfortran.dg/graphite/vect-pr40979.f90
  7f4798472e54ab24309f0edab16c91d1  gcc/testsuite/gfortran.dg/graphite/vect-pr94043.f90
  f9932e22f4bc6baa989154035dbac7c1  gcc/testsuite/gfortran.dg/guality/arg1.f90
! 05eb8da77a2443996d7fece3e1c4fce6  gcc/testsuite/gfortran.dg/guality/guality.exp
  9e2790792b04c03a1a0860c862a27b4b  gcc/testsuite/gfortran.dg/guality/pr41558.f90
  26d42c53448fb26d2b66a4b1d93693d3  gcc/testsuite/gfortran.dg/hollerith.f90
  855af7807ad9d75aef7ff85c2859a0c2  gcc/testsuite/gfortran.dg/hollerith2.f90
*************** f6a9f065bf39a878f022cf1db27088dd  gcc/te
*** 81906,81917 ****
  7c6d282fb7219ea8b6437744a0db709a  gcc/testsuite/gfortran.dg/ibclr_1.f90
  ec89660ed76fbd433f83eba57f853883  gcc/testsuite/gfortran.dg/ibits.f90
  e6c37a9def09433a6a2f8bc1d9220133  gcc/testsuite/gfortran.dg/ibits_1.f90
  9f3ccb4943f5f4737bc99acb427e11b0  gcc/testsuite/gfortran.dg/ibset_1.f90
  cc7201a9525a4793e8bf391d30c3653d  gcc/testsuite/gfortran.dg/ichar_1.f90
  8201f75f0deee5480134fc16f1113f0c  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
  5b6adfdb788db3a061d01bdf727a5a52  gcc/testsuite/gfortran.dg/ieee/dec_math_1.f90
! b46a7d204d3d38fcdf4d361e4a828f8e  gcc/testsuite/gfortran.dg/ieee/ieee.exp
  0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
  3d9e86cdd52561209aae0f0fcaf3590f  gcc/testsuite/gfortran.dg/ieee/ieee_10.f90
  6183b8dca51e7054ad280235aaba2999  gcc/testsuite/gfortran.dg/ieee/ieee_11.F90
--- 87259,87272 ----
  7c6d282fb7219ea8b6437744a0db709a  gcc/testsuite/gfortran.dg/ibclr_1.f90
  ec89660ed76fbd433f83eba57f853883  gcc/testsuite/gfortran.dg/ibits.f90
  e6c37a9def09433a6a2f8bc1d9220133  gcc/testsuite/gfortran.dg/ibits_1.f90
+ 9d771e73f5b650886f4c509ed7ba4557  gcc/testsuite/gfortran.dg/ibits_2.f90
  9f3ccb4943f5f4737bc99acb427e11b0  gcc/testsuite/gfortran.dg/ibset_1.f90
  cc7201a9525a4793e8bf391d30c3653d  gcc/testsuite/gfortran.dg/ichar_1.f90
  8201f75f0deee5480134fc16f1113f0c  gcc/testsuite/gfortran.dg/ichar_2.f90
  b614ce421f97fb4ab6fa10f1f1c47ab0  gcc/testsuite/gfortran.dg/ichar_3.f90
  5b6adfdb788db3a061d01bdf727a5a52  gcc/testsuite/gfortran.dg/ieee/dec_math_1.f90
! d85bd542d89b90d90d1e34aff7cbb3bb  gcc/testsuite/gfortran.dg/ieee/fma_1.f90
! a341ee70f454abc221893d3bdafd4f2d  gcc/testsuite/gfortran.dg/ieee/ieee.exp
  0099e59ef340f8e2088656dfac86c17f  gcc/testsuite/gfortran.dg/ieee/ieee_1.F90
  3d9e86cdd52561209aae0f0fcaf3590f  gcc/testsuite/gfortran.dg/ieee/ieee_10.f90
  6183b8dca51e7054ad280235aaba2999  gcc/testsuite/gfortran.dg/ieee/ieee_11.F90
*************** c0300fa958c7a5a9d045a2bc5b399370  gcc/te
*** 81930,81947 ****
--- 87285,87307 ----
  2c5ba4bfc5befe663ca1b7256103e585  gcc/testsuite/gfortran.dg/ieee/large_2.f90
  50a6484505ec970335e3f3ccb48b9a52  gcc/testsuite/gfortran.dg/ieee/large_3.F90
  31a7f3f0840cdd4377df7cd6605acc0b  gcc/testsuite/gfortran.dg/ieee/large_4.f90
+ 54f1a11c1d7136dd3d8d28a66d7e2a22  gcc/testsuite/gfortran.dg/ieee/modes_1.f90
  5b088816bf399445be998bb7b0f307bd  gcc/testsuite/gfortran.dg/ieee/pr77372.f90
  d19c8b732b5cf70aa6edcc4165fe30b3  gcc/testsuite/gfortran.dg/ieee/pr77507.f90
  26f7d10e3401a2366b42da4a4f97bd15  gcc/testsuite/gfortran.dg/ieee/rounding_1.f90
+ e421cb41762a0144b10de6f4d4b5f69a  gcc/testsuite/gfortran.dg/ieee/rounding_2.f90
+ 13859b0495add70e6c6b1c9c698d8bdb  gcc/testsuite/gfortran.dg/ieee/rounding_3.f90
  1353276aa715bc0205a75c72a213a1eb  gcc/testsuite/gfortran.dg/ieee/signaling_1.f90
  c25db16b2a941d64c3eb8500eb24b632  gcc/testsuite/gfortran.dg/ieee/signaling_1_c.c
  d965100517c103af6a1fba9f58286e1e  gcc/testsuite/gfortran.dg/ieee/signaling_2.f90
  3d50dd33d09a54da9ad7bbcf1243008f  gcc/testsuite/gfortran.dg/ieee/signaling_2_c.c
  566797f5458033022b688900d75cc5c1  gcc/testsuite/gfortran.dg/ieee/signaling_3.f90
+ 2ad2a507975f2c17ae87b80c69042863  gcc/testsuite/gfortran.dg/ieee/signbit_1.f90
  e8ea43c66fd6d11794019ae65955f295  gcc/testsuite/gfortran.dg/ieee/underflow_1.f90
  124ba3e9f6c8b5f20acc161515766cff  gcc/testsuite/gfortran.dg/illegal_boz_arg_1.f90
  4a93b827c3cbecf80132e133c9ffea76  gcc/testsuite/gfortran.dg/illegal_boz_arg_2.f90
  b8ee27c210d03cbdecd63b4186ae10dc  gcc/testsuite/gfortran.dg/illegal_boz_arg_3.f90
+ eb8442e24d68dcf7d000ba19c179291d  gcc/testsuite/gfortran.dg/illegal_boz_arg_4.f90
  ca72e2369ff19137157ceaaa2012b721  gcc/testsuite/gfortran.dg/illegal_char.f90
  d827b941652feab002a335b27a4dd9f2  gcc/testsuite/gfortran.dg/imag_1.f
  eaad0ac26fe911d75f0d0769ade8436c  gcc/testsuite/gfortran.dg/impl_do_var_data.f90
*************** ce503c26e91680933d6b2da36dae11d3  gcc/te
*** 82167,82180 ****
--- 87527,87548 ----
  05d602dc265060112a645567473b9a65  gcc/testsuite/gfortran.dg/integer_plus.f90
  ba84e533d9d999d5cafa2eeaa917daa3  gcc/testsuite/gfortran.dg/intent_decl_1.f90
  9a94a4b4c3991300273d3eff16279572  gcc/testsuite/gfortran.dg/intent_optimize_1.f90
+ 7bbab5a91b2699198db773733c4a13d4  gcc/testsuite/gfortran.dg/intent_optimize_10.f90
  22c1f90f08c40546088dde105474e28c  gcc/testsuite/gfortran.dg/intent_optimize_2.f90
  88021d562ad8f075c52113ab0ba9582c  gcc/testsuite/gfortran.dg/intent_optimize_3.f90
+ 91ea197b8dde98766b625414c120237d  gcc/testsuite/gfortran.dg/intent_optimize_4.f90
+ f504beb0ec3ae69ecdfa1c377ed4212c  gcc/testsuite/gfortran.dg/intent_optimize_5.f90
+ 5eb864ee3f8321c96394601b0fd39515  gcc/testsuite/gfortran.dg/intent_optimize_6.f90
+ dcb60bf733827f1aa738f5108c929081  gcc/testsuite/gfortran.dg/intent_optimize_7.f90
+ 2a8af6d0194c1fd65a7ec76162f9fa7b  gcc/testsuite/gfortran.dg/intent_optimize_8.f90
+ 1ef89b4e3adc48cec85d6e305e95e901  gcc/testsuite/gfortran.dg/intent_optimize_9.f90
  6ad3133cfe62e722e018d386dbfd3404  gcc/testsuite/gfortran.dg/intent_out_1.f90
  ba93579108c80828d584884c6d1a3d2a  gcc/testsuite/gfortran.dg/intent_out_10.f90
  7fb312ab28cce81b97498d8f3f4e4685  gcc/testsuite/gfortran.dg/intent_out_11.f90
  844229c9eb8a37075774f7aa5ffaec68  gcc/testsuite/gfortran.dg/intent_out_12.f90
  eaa197e83969427d3078aff95445bee7  gcc/testsuite/gfortran.dg/intent_out_13.f90
  43d0dd409d7c93807035f978a18ed5c5  gcc/testsuite/gfortran.dg/intent_out_14.f90
+ a82b141adaff542c8c03c6c2cbbb132f  gcc/testsuite/gfortran.dg/intent_out_15.f90
  633b564832f11b231ba2e100650127bb  gcc/testsuite/gfortran.dg/intent_out_2.f90
  88fc721c29050bdf0a2d0d7c4e316336  gcc/testsuite/gfortran.dg/intent_out_3.f90
  a4fb1377a7e3fd7d6f3a448f1c020623  gcc/testsuite/gfortran.dg/intent_out_4.f90
*************** fc2b293a2d13f23c8a72aa82b137a7b1  gcc/te
*** 82219,82225 ****
  6e3222282c29d4f4e30d8d92c1def6b3  gcc/testsuite/gfortran.dg/interface_39.f90
  dea9cddedab08869b79a4cb11ed9e211  gcc/testsuite/gfortran.dg/interface_4.f90
  5ab42c8a7778ca5986cbbfd73f2a5245  gcc/testsuite/gfortran.dg/interface_40.f90
! 7381840ff5e15738d4111258de81b4ee  gcc/testsuite/gfortran.dg/interface_41.f90
  814db28880f2fa8824181d729c78e704  gcc/testsuite/gfortran.dg/interface_42.f90
  ae1ac6fa9b32ceaa5c06695b6d03672f  gcc/testsuite/gfortran.dg/interface_43.f90
  2fbd77d82929b20a60b8841ee4cad933  gcc/testsuite/gfortran.dg/interface_44.f90
--- 87587,87593 ----
  6e3222282c29d4f4e30d8d92c1def6b3  gcc/testsuite/gfortran.dg/interface_39.f90
  dea9cddedab08869b79a4cb11ed9e211  gcc/testsuite/gfortran.dg/interface_4.f90
  5ab42c8a7778ca5986cbbfd73f2a5245  gcc/testsuite/gfortran.dg/interface_40.f90
! 576e66d04a110e6a63cb8e1f4a87eb1c  gcc/testsuite/gfortran.dg/interface_41.f90
  814db28880f2fa8824181d729c78e704  gcc/testsuite/gfortran.dg/interface_42.f90
  ae1ac6fa9b32ceaa5c06695b6d03672f  gcc/testsuite/gfortran.dg/interface_43.f90
  2fbd77d82929b20a60b8841ee4cad933  gcc/testsuite/gfortran.dg/interface_44.f90
*************** a09f8edd0f71c7e1df8b1268e1f3611c  gcc/te
*** 82227,82232 ****
--- 87595,87601 ----
  262d181ac8937fba0c5b14dbc801ec86  gcc/testsuite/gfortran.dg/interface_46.f90
  f33dc60c1fb7c60416c98e3b6fca20cc  gcc/testsuite/gfortran.dg/interface_47.f90
  3ca0d3f0897e634f2024ea5ac5a38f18  gcc/testsuite/gfortran.dg/interface_48.f90
+ 39e1b2ef6dcf0babdb2a75cba78dac6f  gcc/testsuite/gfortran.dg/interface_49.f90
  a954172d62f645dc77c1c91e1be92316  gcc/testsuite/gfortran.dg/interface_5.f90
  a63ff5460cdc25350f43a09d899581db  gcc/testsuite/gfortran.dg/interface_6.f90
  b4d472d28fc0ac004218dc87eb241306  gcc/testsuite/gfortran.dg/interface_7.f90
*************** bb1617d8ae6e0d580747f7d615fded96  gcc/te
*** 82397,82402 ****
--- 87766,87772 ----
  1ab416b16eeeaf5612e3c0656b73c4d5  gcc/testsuite/gfortran.dg/iostat_3.f90
  04a2d725b724b6a943b8e587f2d0d579  gcc/testsuite/gfortran.dg/iostat_4.f90
  1c2b96d304629f78345de8be9deaaed7  gcc/testsuite/gfortran.dg/iostat_5.f90
+ 6473719788ee5f66a80fed32ef73601b  gcc/testsuite/gfortran.dg/ipa-sra-1.f90
  ae3f6e29ad3108163b5c5c6a5f70ef7c  gcc/testsuite/gfortran.dg/ipcp-array-1.f90
  741a6cb683b51a7e531dcb1816ed25ec  gcc/testsuite/gfortran.dg/ipcp-array-2.f90
  65578194d2c2e1ef90aec0d448b2955a  gcc/testsuite/gfortran.dg/is_contiguous_1.f90
*************** ef11b4dad49dd1f386efcc34acc584dc  gcc/te
*** 82497,82502 ****
--- 87867,87874 ----
  96d8aac7a658fcecf923a5c08fdbdaeb  gcc/testsuite/gfortran.dg/literal_character_constant_1_x.F
  fe90073fb4e5cee39b74c1beaf9d4591  gcc/testsuite/gfortran.dg/literal_character_constant_1_y.F
  71ac5cc5c299b0f3aea39d501e48a633  gcc/testsuite/gfortran.dg/literal_character_constant_1_z.F
+ 4f9e63ffe7fa48144a2a1736de2d0529  gcc/testsuite/gfortran.dg/literal_constants.f
+ 4abeb696fc1ff42b90e057d532450170  gcc/testsuite/gfortran.dg/literal_constants.f90
  216d406d940fe0e645023a615aa3efa6  gcc/testsuite/gfortran.dg/loc_1.f90
  fe9cce4d0817f89d4e60de501adfaccb  gcc/testsuite/gfortran.dg/loc_2.f90
  9db6334e52b121d0e2608f5e942e19d4  gcc/testsuite/gfortran.dg/logical_1.f90
*************** eee4e4b1f7234702e72fe778c0d2621b  gcc/te
*** 82555,82561 ****
  ed6e00c5dc57055959583aa16ab493b8  gcc/testsuite/gfortran.dg/lto/bind_c-5_1.c
  ccbe22a34dbac49b2d95cd730bb61d7e  gcc/testsuite/gfortran.dg/lto/bind_c-6_0.f90
  6d93908070e9d39392e45f8f55d2d583  gcc/testsuite/gfortran.dg/lto/bind_c-6_1.c
! 2199a04613291f0fb7b065e94ac55b3b  gcc/testsuite/gfortran.dg/lto/lto.exp
  2e2f1d0362a3798b5cc0cdb704ae7876  gcc/testsuite/gfortran.dg/lto/pr40724_0.f
  b924c46f8e9c528e66113310bd822e92  gcc/testsuite/gfortran.dg/lto/pr40724_1.f
  b310c10bba59712483944d83a656d6cb  gcc/testsuite/gfortran.dg/lto/pr40725_0.f03
--- 87927,87933 ----
  ed6e00c5dc57055959583aa16ab493b8  gcc/testsuite/gfortran.dg/lto/bind_c-5_1.c
  ccbe22a34dbac49b2d95cd730bb61d7e  gcc/testsuite/gfortran.dg/lto/bind_c-6_0.f90
  6d93908070e9d39392e45f8f55d2d583  gcc/testsuite/gfortran.dg/lto/bind_c-6_1.c
! a342fc64463c44cb45ed63e753e931b0  gcc/testsuite/gfortran.dg/lto/lto.exp
  2e2f1d0362a3798b5cc0cdb704ae7876  gcc/testsuite/gfortran.dg/lto/pr40724_0.f
  b924c46f8e9c528e66113310bd822e92  gcc/testsuite/gfortran.dg/lto/pr40724_1.f
  b310c10bba59712483944d83a656d6cb  gcc/testsuite/gfortran.dg/lto/pr40725_0.f03
*************** d8787ced368ea2bc328514bda2bda4b9  gcc/te
*** 82661,82666 ****
--- 88033,88039 ----
  f3b8e8cbad1f135fa5c691b9358a507b  gcc/testsuite/gfortran.dg/maxval_maxloc_conformance_1.f90
  fcb4cc5427acbece895c0e13436e7bda  gcc/testsuite/gfortran.dg/maxval_parameter_1.f90
  b5a3f9d86771f9bc8c83e00f54cc8fda  gcc/testsuite/gfortran.dg/mclock.f90
+ ebefb29868b00ffc792420c2f3698590  gcc/testsuite/gfortran.dg/merge_1.f90
  aea99015fe78116b04337336205f4360  gcc/testsuite/gfortran.dg/merge_bits_1.F90
  25f819b4cc85efec00388ab069b0bdd8  gcc/testsuite/gfortran.dg/merge_bits_2.F90
  7963a9d06e9def09f2ec673acadac3b2  gcc/testsuite/gfortran.dg/merge_bits_3.f90
*************** ee322b8d6152e0c959f795cffc6f038e  gcc/te
*** 82670,82676 ****
  ab5a022b83d2491d59465942397cce40  gcc/testsuite/gfortran.dg/merge_char_3.f90
  eeec051d497127f1ede77e4c9b0a4d06  gcc/testsuite/gfortran.dg/merge_char_const.f90
  a69f0ecf96267c62f30fff01a3b40750  gcc/testsuite/gfortran.dg/merge_init_expr.f90
! 34b7dd5bb35790a8b688fa839e2524e6  gcc/testsuite/gfortran.dg/merge_init_expr_2.f90
  e3c0118bafb1a1659246494a171aeb3c  gcc/testsuite/gfortran.dg/min0_max0_1.f90
  de3ec173587621bde9660c27b22dd60a  gcc/testsuite/gfortran.dg/min0_max0_2.f90
  ffb27b4234a1d98bbd398da249a290e4  gcc/testsuite/gfortran.dg/min_expr.f90
--- 88043,88049 ----
  ab5a022b83d2491d59465942397cce40  gcc/testsuite/gfortran.dg/merge_char_3.f90
  eeec051d497127f1ede77e4c9b0a4d06  gcc/testsuite/gfortran.dg/merge_char_const.f90
  a69f0ecf96267c62f30fff01a3b40750  gcc/testsuite/gfortran.dg/merge_init_expr.f90
! a22d2225af990fe807aff408d1c1cbc7  gcc/testsuite/gfortran.dg/merge_init_expr_2.f90
  e3c0118bafb1a1659246494a171aeb3c  gcc/testsuite/gfortran.dg/min0_max0_1.f90
  de3ec173587621bde9660c27b22dd60a  gcc/testsuite/gfortran.dg/min0_max0_2.f90
  ffb27b4234a1d98bbd398da249a290e4  gcc/testsuite/gfortran.dg/min_expr.f90
*************** ea3c8aeb506b4c30f03aaff80bc6ee7a  gcc/te
*** 82841,82854 ****
  23a7eba590f0e92297cfe998826840ea  gcc/testsuite/gfortran.dg/namelist_38.f90
  692c5f326734d09e4cc39080826d1bf5  gcc/testsuite/gfortran.dg/namelist_39.f90
  cf65f0ee124f55cc70d09e61931263f9  gcc/testsuite/gfortran.dg/namelist_4.f90
! 2cda9deb8eef0ce04452629ebaab569e  gcc/testsuite/gfortran.dg/namelist_40.f90
  991c2beb9a4db0c3b864d7500049c6ea  gcc/testsuite/gfortran.dg/namelist_41.f90
  24af4bdf7b20059ba30b90301a3984f7  gcc/testsuite/gfortran.dg/namelist_42.f90
  5e7b167b9a0603fe9a01cd6368878ed2  gcc/testsuite/gfortran.dg/namelist_43.f90
  bef49328c049eb5d05139ee02a8dd4ea  gcc/testsuite/gfortran.dg/namelist_44.f90
  3323b03ab02322d6cafa6c30c26c25c5  gcc/testsuite/gfortran.dg/namelist_45.f90
  04714ed92ea63f10bc8f26d084d85ec1  gcc/testsuite/gfortran.dg/namelist_46.f90
! 89e13cb502386d255d8b427c67c19db7  gcc/testsuite/gfortran.dg/namelist_47.f90
  4ab84b333c8ddd566e220e003370696c  gcc/testsuite/gfortran.dg/namelist_48.f90
  9915c27f8789994659b2639ff2ecd7ae  gcc/testsuite/gfortran.dg/namelist_49.f90
  c55a3f1959ffd76433be0ad57f12b681  gcc/testsuite/gfortran.dg/namelist_5.f90
--- 88214,88227 ----
  23a7eba590f0e92297cfe998826840ea  gcc/testsuite/gfortran.dg/namelist_38.f90
  692c5f326734d09e4cc39080826d1bf5  gcc/testsuite/gfortran.dg/namelist_39.f90
  cf65f0ee124f55cc70d09e61931263f9  gcc/testsuite/gfortran.dg/namelist_4.f90
! c32970dca3c09d3218272754ac0e084d  gcc/testsuite/gfortran.dg/namelist_40.f90
  991c2beb9a4db0c3b864d7500049c6ea  gcc/testsuite/gfortran.dg/namelist_41.f90
  24af4bdf7b20059ba30b90301a3984f7  gcc/testsuite/gfortran.dg/namelist_42.f90
  5e7b167b9a0603fe9a01cd6368878ed2  gcc/testsuite/gfortran.dg/namelist_43.f90
  bef49328c049eb5d05139ee02a8dd4ea  gcc/testsuite/gfortran.dg/namelist_44.f90
  3323b03ab02322d6cafa6c30c26c25c5  gcc/testsuite/gfortran.dg/namelist_45.f90
  04714ed92ea63f10bc8f26d084d85ec1  gcc/testsuite/gfortran.dg/namelist_46.f90
! 41dc5937c29478f700e1dc9de0fc3c0b  gcc/testsuite/gfortran.dg/namelist_47.f90
  4ab84b333c8ddd566e220e003370696c  gcc/testsuite/gfortran.dg/namelist_48.f90
  9915c27f8789994659b2639ff2ecd7ae  gcc/testsuite/gfortran.dg/namelist_49.f90
  c55a3f1959ffd76433be0ad57f12b681  gcc/testsuite/gfortran.dg/namelist_5.f90
*************** b8f12d194aa9b2cfb5214297f897456c  gcc/te
*** 82908,82914 ****
  b4b317ef7f0e3b328cd2408c834c565e  gcc/testsuite/gfortran.dg/namelist_char_only.f90
  ab1962cc90efed9c77a456b69eee06b6  gcc/testsuite/gfortran.dg/namelist_empty.f90
  3de437b85d3797fcea6a80c3cdfa897d  gcc/testsuite/gfortran.dg/namelist_internal.f90
! d141d10a4cfc146257cc0abe77e2cdb4  gcc/testsuite/gfortran.dg/namelist_print_1.f
  c801fecff5102b3998fcefc3ac399fc3  gcc/testsuite/gfortran.dg/namelist_print_2.f
  f12a7e3f4bb9f0b7c933a8fbe97f6e5d  gcc/testsuite/gfortran.dg/namelist_use.f90
  090cefb6279f650c4a99ff5c4aa97298  gcc/testsuite/gfortran.dg/namelist_use_only.f90
--- 88281,88287 ----
  b4b317ef7f0e3b328cd2408c834c565e  gcc/testsuite/gfortran.dg/namelist_char_only.f90
  ab1962cc90efed9c77a456b69eee06b6  gcc/testsuite/gfortran.dg/namelist_empty.f90
  3de437b85d3797fcea6a80c3cdfa897d  gcc/testsuite/gfortran.dg/namelist_internal.f90
! 3776e5ec6224049e476a85f827a90b98  gcc/testsuite/gfortran.dg/namelist_print_1.f
  c801fecff5102b3998fcefc3ac399fc3  gcc/testsuite/gfortran.dg/namelist_print_2.f
  f12a7e3f4bb9f0b7c933a8fbe97f6e5d  gcc/testsuite/gfortran.dg/namelist_use.f90
  090cefb6279f650c4a99ff5c4aa97298  gcc/testsuite/gfortran.dg/namelist_use_only.f90
*************** c18b2575d6a9b63674756f658ca93389  gcc/te
*** 82925,82930 ****
--- 88298,88304 ----
  1ce8153704ce4cea80385ed72012931d  gcc/testsuite/gfortran.dg/nearest_3.f90
  07145278f20c5f56fba9fc10e9fbfba2  gcc/testsuite/gfortran.dg/nearest_4.f90
  e5f705447cfe3093ee85b04291d3f80c  gcc/testsuite/gfortran.dg/nearest_5.f90
+ a00cc61eb38cdddde8ae56513298e5bc  gcc/testsuite/gfortran.dg/nearest_6.f90
  5d4401879d53df84adcf50a08316a8f8  gcc/testsuite/gfortran.dg/negative-z-descriptor.f90
  d2f9406b4dddc3388ec13c7a6343827c  gcc/testsuite/gfortran.dg/negative_automatic_size.f90
  0600517361eae86819b9a91e0477c467  gcc/testsuite/gfortran.dg/negative_stride_1.f90
*************** d8d9fc1bd3990f780a4edabec5168b98  gcc/te
*** 82974,82981 ****
--- 88348,88361 ----
  4f50d83ed82b0a1f51c3f480459d3ae6  gcc/testsuite/gfortran.dg/no_range_check_3.f90
  af0220988dae78874b44c32c38151dba  gcc/testsuite/gfortran.dg/no_unit_error_1.f90
  744d0a7b2bbb9a92d07c6349adea50b1  gcc/testsuite/gfortran.dg/noadv_size.f90
+ c58d0becf9ff2fd332bb1bb3252ba243  gcc/testsuite/gfortran.dg/noinline.f90
  40fc0414c2765c255df26d0c34749b0e  gcc/testsuite/gfortran.dg/non_module_public.f90
  77360dec8f5c7897afaa0c9d1c0c4a0c  gcc/testsuite/gfortran.dg/nonreturning_statements.f90
+ 6a9f6b9442c4556d3016d04dfbecd983  gcc/testsuite/gfortran.dg/noreturn-1.f90
+ 0308ffea45e67b0783e4fb71420709b3  gcc/testsuite/gfortran.dg/noreturn-2.f90
+ 009764310464b3cbffde139b49f6d6c5  gcc/testsuite/gfortran.dg/noreturn-3.f90
+ 2d2c036ff5fbc1d889c703e814e135a0  gcc/testsuite/gfortran.dg/noreturn-4.f90
+ 4a623b234d2e1581a03046e091f7dd56  gcc/testsuite/gfortran.dg/noreturn-5.f90
  cb11950197497da935c41c80e512a950  gcc/testsuite/gfortran.dg/norm2_1.f90
  6f54fe79e2eb8cb9328952596d21ee2f  gcc/testsuite/gfortran.dg/norm2_2.f90
  97c6a80026965328c966132711943a56  gcc/testsuite/gfortran.dg/norm2_3.f90
*************** a268bf435ff3e542009031168b6619a0  gcc/te
*** 82998,83003 ****
--- 88378,88384 ----
  f1e3cfba25a768bf7f9073932a36c7db  gcc/testsuite/gfortran.dg/null_9.f90
  fb9d6abbd9b9049c00ee6e992d1a8859  gcc/testsuite/gfortran.dg/null_actual.f90
  c7884979306076731054566268cfb979  gcc/testsuite/gfortran.dg/null_actual_2.f90
+ 84b898ed35bd484e690bcec9cd9f1724  gcc/testsuite/gfortran.dg/null_actual_3.f90
  eb6af590881f3e995fc6b2c78089f277  gcc/testsuite/gfortran.dg/nullify_1.f
  f202e3843710f9492560538fa53c3847  gcc/testsuite/gfortran.dg/nullify_2.f90
  768d37ebff7930db8f8a99ac16b90d32  gcc/testsuite/gfortran.dg/nullify_3.f90
*************** ff989302c0eaa3dd486cbb3c28260163  gcc/te
*** 83045,83050 ****
--- 88426,88434 ----
  4550d5bd4f2bf82443d2fabda1853aa1  gcc/testsuite/gfortran.dg/optional_absent_3.f90
  7c0836bf69a838c108ff2372276a09d4  gcc/testsuite/gfortran.dg/optional_absent_4.f90
  dc830156fd059262dfdfc8f67c581256  gcc/testsuite/gfortran.dg/optional_absent_5.f90
+ 9cdffc8932a09a7432661f093fe5d75e  gcc/testsuite/gfortran.dg/optional_absent_6.f90
+ 6e2664a6e912b02f87dcc7d55643cf9a  gcc/testsuite/gfortran.dg/optional_absent_7.f90
+ 4d4efac7ff60202fca2de27386eab83f  gcc/testsuite/gfortran.dg/optional_absent_8.f90
  ba5fab0a3379b1d0cdf3afb12ac1dd20  gcc/testsuite/gfortran.dg/optional_assumed_charlen_1.f90
  565d3cf43ead99f60b2380c4b021a5b8  gcc/testsuite/gfortran.dg/optional_assumed_charlen_2.f90
  f676bdc486e460e9520582c3779a664a  gcc/testsuite/gfortran.dg/optional_class_1.f90
*************** ce01df6835a25865cf1b057eedd850d3  gcc/te
*** 83061,83066 ****
--- 88445,88451 ----
  0513597d3f649ecf246ba3da77d0e486  gcc/testsuite/gfortran.dg/pack_assign_1.f90
  804957c95450f8f92e8046cdde8da1fe  gcc/testsuite/gfortran.dg/pack_bounds_1.f90
  f4df3c0170a4515e50cb92f9b4808015  gcc/testsuite/gfortran.dg/pack_mask_1.f90
+ fd730b7d368f2e164c78bf65a3b02cb8  gcc/testsuite/gfortran.dg/pack_simplify_1.f90
  d880b124cb04a632ccbd4e865126efb9  gcc/testsuite/gfortran.dg/pack_vector_1.f90
  68c2ba7b60f8a149c807d828fa97f408  gcc/testsuite/gfortran.dg/pad_no.f90
  ee74b606115b464697c7845192af5510  gcc/testsuite/gfortran.dg/pad_source_1.f
*************** ee74b606115b464697c7845192af5510  gcc/te
*** 83068,83074 ****
  e898c04990a42f769ba042424ebffe9d  gcc/testsuite/gfortran.dg/pad_source_3.f
  c5a5f7a3306fe5487fbc90da05dd0ae4  gcc/testsuite/gfortran.dg/pad_source_4.f
  03cba69e8a42531bbb007be8df6fdffb  gcc/testsuite/gfortran.dg/pad_source_5.f
! 5909c9e69386d1e117a0dbbb835f5f4c  gcc/testsuite/gfortran.dg/parameter_array_dummy.f90
  cd4760f831dd70b9c3f1822781587ab6  gcc/testsuite/gfortran.dg/parameter_array_element_1.f90
  b68662454b8ca95445e7541d87a499ae  gcc/testsuite/gfortran.dg/parameter_array_element_2.f90
  7945e1eb7d2d448598703082cbd966a6  gcc/testsuite/gfortran.dg/parameter_array_element_3.f90
--- 88453,88459 ----
  e898c04990a42f769ba042424ebffe9d  gcc/testsuite/gfortran.dg/pad_source_3.f
  c5a5f7a3306fe5487fbc90da05dd0ae4  gcc/testsuite/gfortran.dg/pad_source_4.f
  03cba69e8a42531bbb007be8df6fdffb  gcc/testsuite/gfortran.dg/pad_source_5.f
! 4900a7272b485217a7d5f38145be5780  gcc/testsuite/gfortran.dg/parameter_array_dummy.f90
  cd4760f831dd70b9c3f1822781587ab6  gcc/testsuite/gfortran.dg/parameter_array_element_1.f90
  b68662454b8ca95445e7541d87a499ae  gcc/testsuite/gfortran.dg/parameter_array_element_2.f90
  7945e1eb7d2d448598703082cbd966a6  gcc/testsuite/gfortran.dg/parameter_array_element_3.f90
*************** d46e6ca33ad0c6569ce38b09a28782f5  gcc/te
*** 83087,83096 ****
  23dcadce604501908a5e668b385325f3  gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
  d190e02a8ae85f12d6539440b8df8892  gcc/testsuite/gfortran.dg/parameter_array_section_2.f90
  0cbe7ac4ea5db14062703e660fb047d8  gcc/testsuite/gfortran.dg/parameter_data.f90
  20f5555ad18fb82bbee124f3cd547f33  gcc/testsuite/gfortran.dg/parameter_save.f90
  2ab5a027814557bead333edd0da891a1  gcc/testsuite/gfortran.dg/parameter_unused.f90
  510e6ab845e1decc438e4fb90ee836d5  gcc/testsuite/gfortran.dg/parens_1.f90
! f0e895951aca1144ddd789aeb786353c  gcc/testsuite/gfortran.dg/parens_2.f90
  d5e778cc8b4329301684ca7c8c525f04  gcc/testsuite/gfortran.dg/parens_3.f90
  e105e31832fc448a5431c6aa3d02cf0c  gcc/testsuite/gfortran.dg/parens_4.f90
  d45068b4308c407424f3a4ce590ad5b1  gcc/testsuite/gfortran.dg/parens_5.f90
--- 88472,88482 ----
  23dcadce604501908a5e668b385325f3  gcc/testsuite/gfortran.dg/parameter_array_section_1.f90
  d190e02a8ae85f12d6539440b8df8892  gcc/testsuite/gfortran.dg/parameter_array_section_2.f90
  0cbe7ac4ea5db14062703e660fb047d8  gcc/testsuite/gfortran.dg/parameter_data.f90
+ 5440a6e50d3a7b88b07f2a29e059f5a3  gcc/testsuite/gfortran.dg/parameter_data0.f90
  20f5555ad18fb82bbee124f3cd547f33  gcc/testsuite/gfortran.dg/parameter_save.f90
  2ab5a027814557bead333edd0da891a1  gcc/testsuite/gfortran.dg/parameter_unused.f90
  510e6ab845e1decc438e4fb90ee836d5  gcc/testsuite/gfortran.dg/parens_1.f90
! db399c8838e4c2eea032bde384352cee  gcc/testsuite/gfortran.dg/parens_2.f90
  d5e778cc8b4329301684ca7c8c525f04  gcc/testsuite/gfortran.dg/parens_3.f90
  e105e31832fc448a5431c6aa3d02cf0c  gcc/testsuite/gfortran.dg/parens_4.f90
  d45068b4308c407424f3a4ce590ad5b1  gcc/testsuite/gfortran.dg/parens_5.f90
*************** bbf73734b60d2500381f37fc07248411  gcc/te
*** 83112,83118 ****
  5b6fb0609a7f95d075537b1822d331e5  gcc/testsuite/gfortran.dg/pdt_12.f03
  16ce3ce5e71f8bfbe9d40060544e2fa5  gcc/testsuite/gfortran.dg/pdt_13.f03
  c3e0cca0e4efe9383bafc33823f99ab9  gcc/testsuite/gfortran.dg/pdt_14.f03
! b534a7e1bba6d1c528631cb5f6594049  gcc/testsuite/gfortran.dg/pdt_15.f03
  af2c862644ef563e9b11a9acd3d9f20f  gcc/testsuite/gfortran.dg/pdt_16.f03
  4483aa08269048d225897572d0fe2d01  gcc/testsuite/gfortran.dg/pdt_17.f03
  be693b3847d0256fa77c5e6d96396c97  gcc/testsuite/gfortran.dg/pdt_18.f03
--- 88498,88504 ----
  5b6fb0609a7f95d075537b1822d331e5  gcc/testsuite/gfortran.dg/pdt_12.f03
  16ce3ce5e71f8bfbe9d40060544e2fa5  gcc/testsuite/gfortran.dg/pdt_13.f03
  c3e0cca0e4efe9383bafc33823f99ab9  gcc/testsuite/gfortran.dg/pdt_14.f03
! 5e6d6f4eb70dbb7b23751aa6e68d6fdd  gcc/testsuite/gfortran.dg/pdt_15.f03
  af2c862644ef563e9b11a9acd3d9f20f  gcc/testsuite/gfortran.dg/pdt_16.f03
  4483aa08269048d225897572d0fe2d01  gcc/testsuite/gfortran.dg/pdt_17.f03
  be693b3847d0256fa77c5e6d96396c97  gcc/testsuite/gfortran.dg/pdt_18.f03
*************** dfcbac44563ca824b08d9aae911c293a  gcc/te
*** 83148,83154 ****
  e66410e8ae96f4c35dedf12cea891e45  gcc/testsuite/gfortran.dg/pointer_array_5.f90
  cc40740a6c7a0f5e15dd8b8f59b62c11  gcc/testsuite/gfortran.dg/pointer_array_6.f90
  3c7df29f39ea744d60761fd3e9cabbe6  gcc/testsuite/gfortran.dg/pointer_array_7.f90
! 148f6dd0838ec2742961b23bb8f138bd  gcc/testsuite/gfortran.dg/pointer_array_8.f90
  e19e5bdc3f2f6cf4e2a6845cd7bc1fc2  gcc/testsuite/gfortran.dg/pointer_array_9.f90
  74571f8dd9a48c23721b716c453fdfb2  gcc/testsuite/gfortran.dg/pointer_array_component_1.f90
  21b4cf904bbb39838880a93197993cb7  gcc/testsuite/gfortran.dg/pointer_array_component_2.f90
--- 88534,88540 ----
  e66410e8ae96f4c35dedf12cea891e45  gcc/testsuite/gfortran.dg/pointer_array_5.f90
  cc40740a6c7a0f5e15dd8b8f59b62c11  gcc/testsuite/gfortran.dg/pointer_array_6.f90
  3c7df29f39ea744d60761fd3e9cabbe6  gcc/testsuite/gfortran.dg/pointer_array_7.f90
! 087f31758301194a51ac79c20e326f0c  gcc/testsuite/gfortran.dg/pointer_array_8.f90
  e19e5bdc3f2f6cf4e2a6845cd7bc1fc2  gcc/testsuite/gfortran.dg/pointer_array_9.f90
  74571f8dd9a48c23721b716c453fdfb2  gcc/testsuite/gfortran.dg/pointer_array_component_1.f90
  21b4cf904bbb39838880a93197993cb7  gcc/testsuite/gfortran.dg/pointer_array_component_2.f90
*************** fc0ae38e4fdc2d7761aba57181c97b51  gcc/te
*** 83247,83252 ****
--- 88633,88639 ----
  afe21b866be9162c6b654dc6771e6ead  gcc/testsuite/gfortran.dg/pr101514.f90
  07e5cf776d8ec123397377da02e784fb  gcc/testsuite/gfortran.dg/pr101536.f90
  43d1631cdea391ffd9bdb8fc395a7ae5  gcc/testsuite/gfortran.dg/pr101762.f90
+ 9689aaf0cb9d6642b812ab9cd61eff8a  gcc/testsuite/gfortran.dg/pr102180.f90
  75ccec9005d1d4a2d9ed0cea1bf10434  gcc/testsuite/gfortran.dg/pr102332.f90
  1dd53d463caf1e16e47d0fe9cbf2309f  gcc/testsuite/gfortran.dg/pr102366.f90
  fc5031b16be6a0dc4152f151793f4acb  gcc/testsuite/gfortran.dg/pr102458.f90
*************** d99cea26823109c0bb853b42df152999  gcc/te
*** 83257,83285 ****
  f28998ba16e7a78633a9de3d5eaf0667  gcc/testsuite/gfortran.dg/pr102816.f90
  cc6ac3aa934c104c85fad8e43ae6985d  gcc/testsuite/gfortran.dg/pr102817.f90
  c35066e873add73fe333d803e2854739  gcc/testsuite/gfortran.dg/pr102860.f90
! 0ab268c803f92d68c3d8dc955e088212  gcc/testsuite/gfortran.dg/pr103258.f90
  48782be659f3ec5c8d9cba03ca6cc43d  gcc/testsuite/gfortran.dg/pr103286.f90
  ab2e9f64b18aaf6df9600288ded6ce51  gcc/testsuite/gfortran.dg/pr103366.f90
  b624133cafd19857eb2915c507731455  gcc/testsuite/gfortran.dg/pr103504.f90
! a082b0c5fdbc266f00ae264494538e49  gcc/testsuite/gfortran.dg/pr103505.f90
  dc7a57f897711dfb7a3fba377198c10c  gcc/testsuite/gfortran.dg/pr103588.f90
  a27b232d198fc2463c04af17903b1b4c  gcc/testsuite/gfortran.dg/pr103606.f90
  ea7b00fcccc1df091b8087b16e502d92  gcc/testsuite/gfortran.dg/pr103607.f90
  e83cb447f532a018a571c0eb3b9813ac  gcc/testsuite/gfortran.dg/pr103609.f90
  529d8c5aafc7e0dd0a65860ed5f85bcf  gcc/testsuite/gfortran.dg/pr103691.f90
  448c7638e7741c015d95260e6491d8fa  gcc/testsuite/gfortran.dg/pr103692.f90
  3a28632a1496231fb208ccbe80ac9bc8  gcc/testsuite/gfortran.dg/pr103898.f90
  9c2a780c1ca6904bb5164e252d9e5455  gcc/testsuite/gfortran.dg/pr104210.f90
  73191330286eb3bf2c13130685c97c95  gcc/testsuite/gfortran.dg/pr104211.f90
  4d8d0ebddb3e8c68a7b0604135d30ec0  gcc/testsuite/gfortran.dg/pr104313.f
  d54a9a735e74cc7d08959a7e744ae292  gcc/testsuite/gfortran.dg/pr104466.f90
  20b528a5635e11a2c7db46289cab958c  gcc/testsuite/gfortran.dg/pr104528.f
  5c1153d4a81aef8918afa2d0f27d3085  gcc/testsuite/gfortran.dg/pr104571.f90
  0d8084e6020a7001ebdb9b59d688556e  gcc/testsuite/gfortran.dg/pr104716.f
  7a5b7a18d621b5e1b9d04b73e259ddd4  gcc/testsuite/gfortran.dg/pr104849.f90
  22283af469347d85bd1fe4dae42939a3  gcc/testsuite/gfortran.dg/pr105230.f90
  d4e9f09fafa1c1f5e009aedb22732715  gcc/testsuite/gfortran.dg/pr105954.f90
  8466016b4be322b136a27ed5b067e9d8  gcc/testsuite/gfortran.dg/pr106331.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
--- 88644,88730 ----
  f28998ba16e7a78633a9de3d5eaf0667  gcc/testsuite/gfortran.dg/pr102816.f90
  cc6ac3aa934c104c85fad8e43ae6985d  gcc/testsuite/gfortran.dg/pr102817.f90
  c35066e873add73fe333d803e2854739  gcc/testsuite/gfortran.dg/pr102860.f90
! 95206e73bd86fd997d85643e08c24a44  gcc/testsuite/gfortran.dg/pr103258.f90
! 4b404e5693e05cfd48ecd00e22ac323d  gcc/testsuite/gfortran.dg/pr103259.f90
  48782be659f3ec5c8d9cba03ca6cc43d  gcc/testsuite/gfortran.dg/pr103286.f90
  ab2e9f64b18aaf6df9600288ded6ce51  gcc/testsuite/gfortran.dg/pr103366.f90
+ 5403c8d36e959e2211ecc4f2a1db6e1c  gcc/testsuite/gfortran.dg/pr103475.f90
  b624133cafd19857eb2915c507731455  gcc/testsuite/gfortran.dg/pr103504.f90
! 0ca27f571c157feff083b371f4147538  gcc/testsuite/gfortran.dg/pr103505.f90
! bb48aa0d2e0434d5fff259663b128e23  gcc/testsuite/gfortran.dg/pr103506_1.f90
  dc7a57f897711dfb7a3fba377198c10c  gcc/testsuite/gfortran.dg/pr103588.f90
  a27b232d198fc2463c04af17903b1b4c  gcc/testsuite/gfortran.dg/pr103606.f90
  ea7b00fcccc1df091b8087b16e502d92  gcc/testsuite/gfortran.dg/pr103607.f90
+ a6f9d88a8d6d1064b6c75147b910352f  gcc/testsuite/gfortran.dg/pr103608.f90
  e83cb447f532a018a571c0eb3b9813ac  gcc/testsuite/gfortran.dg/pr103609.f90
+ 1917245fd23dbcb7a1714b670a46f77d  gcc/testsuite/gfortran.dg/pr103628.f90
  529d8c5aafc7e0dd0a65860ed5f85bcf  gcc/testsuite/gfortran.dg/pr103691.f90
  448c7638e7741c015d95260e6491d8fa  gcc/testsuite/gfortran.dg/pr103692.f90
+ 7880bd79a12dd5ee034f461bbaebed02  gcc/testsuite/gfortran.dg/pr103694.f90
+ b46bd97116489e6e683fb2b742d3b37e  gcc/testsuite/gfortran.dg/pr103779.f90
  3a28632a1496231fb208ccbe80ac9bc8  gcc/testsuite/gfortran.dg/pr103898.f90
  9c2a780c1ca6904bb5164e252d9e5455  gcc/testsuite/gfortran.dg/pr104210.f90
  73191330286eb3bf2c13130685c97c95  gcc/testsuite/gfortran.dg/pr104211.f90
  4d8d0ebddb3e8c68a7b0604135d30ec0  gcc/testsuite/gfortran.dg/pr104313.f
+ 91c8ea6ad8bf77406a4c4b4c07b386e3  gcc/testsuite/gfortran.dg/pr104314.f90
+ 0e7851ec2240cdd415a65847b3559661  gcc/testsuite/gfortran.dg/pr104330.f90
+ 7d09118ed5915e3ef92dba4a6d9cd54c  gcc/testsuite/gfortran.dg/pr104349.f90
  d54a9a735e74cc7d08959a7e744ae292  gcc/testsuite/gfortran.dg/pr104466.f90
  20b528a5635e11a2c7db46289cab958c  gcc/testsuite/gfortran.dg/pr104528.f
+ f2033aa803ce0a0763522fb821b7bdf6  gcc/testsuite/gfortran.dg/pr104554.f90
  5c1153d4a81aef8918afa2d0f27d3085  gcc/testsuite/gfortran.dg/pr104571.f90
+ 5583f00ff0e962663dc178214a50e6ad  gcc/testsuite/gfortran.dg/pr104572.f90
  0d8084e6020a7001ebdb9b59d688556e  gcc/testsuite/gfortran.dg/pr104716.f
  7a5b7a18d621b5e1b9d04b73e259ddd4  gcc/testsuite/gfortran.dg/pr104849.f90
+ ff052278fd65d5823600af4550f5eae7  gcc/testsuite/gfortran.dg/pr105205.f90
  22283af469347d85bd1fe4dae42939a3  gcc/testsuite/gfortran.dg/pr105230.f90
+ ace309aa44f1d37b7e1187c47c4975be  gcc/testsuite/gfortran.dg/pr105501.f90
+ 04437d9e5ce70eee9f187cabd7a3ae39  gcc/testsuite/gfortran.dg/pr105633.f90
  d4e9f09fafa1c1f5e009aedb22732715  gcc/testsuite/gfortran.dg/pr105954.f90
+ 088bf2cb06c9d1fbdf7cdf44f05322a7  gcc/testsuite/gfortran.dg/pr106209.f90
+ 3082cd51399bf74604f453a40ec6cf9b  gcc/testsuite/gfortran.dg/pr106226.f
  8466016b4be322b136a27ed5b067e9d8  gcc/testsuite/gfortran.dg/pr106331.f90
+ 8151d55a686ce73971a44da77f15a814  gcc/testsuite/gfortran.dg/pr106556.f90
+ 83d8efde4705e2c5391da8e9e9b171e7  gcc/testsuite/gfortran.dg/pr106557.f90
+ d4b65efea892e3a54acdb92a298fc582  gcc/testsuite/gfortran.dg/pr106731.f90
+ 667a7f6ee3d729bf7c1cce653b1cff1c  gcc/testsuite/gfortran.dg/pr106857.f90
+ 477d114153a73fd6184271b42859b221  gcc/testsuite/gfortran.dg/pr106911.f90
+ 0677f2dac82b1b95cde8edf69efd60a9  gcc/testsuite/gfortran.dg/pr106918.f90
+ 09719e2d59fe58682ef7a737cdf01620  gcc/testsuite/gfortran.dg/pr106934.f90
+ e1ccca85dc432ca649742c05520157d9  gcc/testsuite/gfortran.dg/pr106945.f90
+ a9c6ba4d14cec93cd2edec54fda6a916  gcc/testsuite/gfortran.dg/pr106985.f90
+ eb96b826eeaf84f157c8635706721d40  gcc/testsuite/gfortran.dg/pr106986.f90
+ 293833a63c0715043c2da0695b562529  gcc/testsuite/gfortran.dg/pr107000.f90
+ 11beaeea87162696e195837c5224fa2d  gcc/testsuite/gfortran.dg/pr107054.f90
+ c4d7488c55ed95fdd366e1d607735be4  gcc/testsuite/gfortran.dg/pr107215.f90
+ 0c85e934fee80db329fffa3cf0e140bd  gcc/testsuite/gfortran.dg/pr107217.f90
+ 80a2d8da8f29115c11882e70f115c5f5  gcc/testsuite/gfortran.dg/pr107272.f90
+ 4bf79fd79798c56c4dfc83d4cd395f09  gcc/testsuite/gfortran.dg/pr107397.f90
+ e45d8c5020d3980e1bbf2af1d8f09cb1  gcc/testsuite/gfortran.dg/pr107423.f90
+ d0708141a211387ec4b726fd1cc6fb1e  gcc/testsuite/gfortran.dg/pr107559.f90
+ 73d50a07b85e295eded116a82c6f2a41  gcc/testsuite/gfortran.dg/pr107577.f90
+ 151a99312d3d8d935f1bab15b6a9ad3d  gcc/testsuite/gfortran.dg/pr107679.f90
+ 546d0dd36da201dc2364304324877fbe  gcc/testsuite/gfortran.dg/pr107680.f90
+ 024fa5f55fe9c8d4c19d5877ad457646  gcc/testsuite/gfortran.dg/pr107681.f90
+ b16b21b735e9162700aeb128878a0f21  gcc/testsuite/gfortran.dg/pr107707.f90
+ ba47b0afdca4ac305945fe0fc5dcb1d2  gcc/testsuite/gfortran.dg/pr107872.f90
+ 6e930133e4b714785571b6fe20098d1d  gcc/testsuite/gfortran.dg/pr107899.f90
+ 39528658775da01af2332092303a48f3  gcc/testsuite/gfortran.dg/pr107995.f90
+ cbd5ae902fd5f6bd7cdb6f65c664ea22  gcc/testsuite/gfortran.dg/pr108010.f90
+ 51c1978cd57328dca2798eaa646a34b7  gcc/testsuite/gfortran.dg/pr108131.f90
+ d10ee488f163142e4a7a74b3c6a8e12f  gcc/testsuite/gfortran.dg/pr108193.f90
+ b1a3cfdc35d1fd73d94697f204666296  gcc/testsuite/gfortran.dg/pr108420.f90
+ ed294cde0b27b346f37fa7a32bf91ea7  gcc/testsuite/gfortran.dg/pr108421.f90
+ 5d2b3031d0f1033380d6de3cd4ed9482  gcc/testsuite/gfortran.dg/pr108434.f90
+ 28a670973e90363c78fb79b83bf40490  gcc/testsuite/gfortran.dg/pr108501.f90
+ 1836eed7a2cdfcdba4e590204735e288  gcc/testsuite/gfortran.dg/pr108502.f90
+ bb19038b0b7c42c6403475e34570ae3d  gcc/testsuite/gfortran.dg/pr108527.f90
+ 8b8ac245c1b5ca6609e3bfe4ea4a8eff  gcc/testsuite/gfortran.dg/pr108528.f90
+ a367beafff806aa88b45192d28091201  gcc/testsuite/gfortran.dg/pr108529.f90
+ 89000eec5be4848c1ee9f28782affc5d  gcc/testsuite/gfortran.dg/pr108544.f90
+ ff15b9a6b62e2f00e552b437eece42bf  gcc/testsuite/gfortran.dg/pr108592.f90
+ 8f9de055ba3027b7ae59405bcbee699f  gcc/testsuite/gfortran.dg/pr109209.f90
+ b7b6edb61862ad55069c70c4744ad157  gcc/testsuite/gfortran.dg/pr109265.f90
  984f8307f36d56a0b48b5acce2dd5eb5  gcc/testsuite/gfortran.dg/pr12884.f
  64075248b9d1bffd6f380bb4e2a6eae0  gcc/testsuite/gfortran.dg/pr15129.f90
  e9cbd51db4e16292fc5dd1fead2e5a49  gcc/testsuite/gfortran.dg/pr15140.f90
*************** dbb1bf91a8856be53abe8cd67ff0f627  gcc/te
*** 83454,83460 ****
  f3e2e80b3229e8fec07b3263f3453fed  gcc/testsuite/gfortran.dg/pr47757-2.f90
  9d5355ff4338853aec406e4f5edae9ea  gcc/testsuite/gfortran.dg/pr47757-3.f90
  2dfab2f8ab310f7d6eb590e8aa525637  gcc/testsuite/gfortran.dg/pr47878.f90
! c990799f48f87a3c6fc164699d2b1c87  gcc/testsuite/gfortran.dg/pr48636-2.f90
  5d28e84349b850c270a16ecd86cc82b2  gcc/testsuite/gfortran.dg/pr48636.f90
  4762590cbaf90296cf135774873215b8  gcc/testsuite/gfortran.dg/pr48757.f
  ea911c8827cc267711ebc2bc888f011a  gcc/testsuite/gfortran.dg/pr48958.f90
--- 88899,88905 ----
  f3e2e80b3229e8fec07b3263f3453fed  gcc/testsuite/gfortran.dg/pr47757-2.f90
  9d5355ff4338853aec406e4f5edae9ea  gcc/testsuite/gfortran.dg/pr47757-3.f90
  2dfab2f8ab310f7d6eb590e8aa525637  gcc/testsuite/gfortran.dg/pr47878.f90
! 527479224f8f2948a4528987674dfca4  gcc/testsuite/gfortran.dg/pr48636-2.f90
  5d28e84349b850c270a16ecd86cc82b2  gcc/testsuite/gfortran.dg/pr48636.f90
  4762590cbaf90296cf135774873215b8  gcc/testsuite/gfortran.dg/pr48757.f
  ea911c8827cc267711ebc2bc888f011a  gcc/testsuite/gfortran.dg/pr48958.f90
*************** fcdffb26a3d7f862eb7d9eaee5b49b49  gcc/te
*** 83510,83516 ****
  1ca63f28ae284979c3b2b1c01dc88abf  gcc/testsuite/gfortran.dg/pr58290.f90
  bc63d6ff9d523e63fa42eb148fceb4c6  gcc/testsuite/gfortran.dg/pr58484.f
  2892cc9f5f933b8f3110403ca2a7f315  gcc/testsuite/gfortran.dg/pr58968.f
! 38761fc6ca20bfa8a4d47530bb0173c3  gcc/testsuite/gfortran.dg/pr59107.f90
  54642dc29547df928c052d04531cae6f  gcc/testsuite/gfortran.dg/pr59440-1.f90
  29517347731146172a1733a27581daa9  gcc/testsuite/gfortran.dg/pr59440-2.f90
  f5878abe544570f500d4148c17a74cc4  gcc/testsuite/gfortran.dg/pr59440-3.f90
--- 88955,88961 ----
  1ca63f28ae284979c3b2b1c01dc88abf  gcc/testsuite/gfortran.dg/pr58290.f90
  bc63d6ff9d523e63fa42eb148fceb4c6  gcc/testsuite/gfortran.dg/pr58484.f
  2892cc9f5f933b8f3110403ca2a7f315  gcc/testsuite/gfortran.dg/pr58968.f
! ac3c65cc422e3b9a426261035fe93e40  gcc/testsuite/gfortran.dg/pr59107.f90
  54642dc29547df928c052d04531cae6f  gcc/testsuite/gfortran.dg/pr59440-1.f90
  29517347731146172a1733a27581daa9  gcc/testsuite/gfortran.dg/pr59440-2.f90
  f5878abe544570f500d4148c17a74cc4  gcc/testsuite/gfortran.dg/pr59440-3.f90
*************** b85cfd294e061b2ee8d25c44b7c4e1b5  gcc/te
*** 83755,83767 ****
  1bc0d862fdec041bd3263385555b08c2  gcc/testsuite/gfortran.dg/pr85687.f90
  7015fea37cfa3077dcf663f014a04889  gcc/testsuite/gfortran.dg/pr85779_1.f90
  cf956ba7ea568a1ec1e49d5d32949c70  gcc/testsuite/gfortran.dg/pr85779_2.f90
! bc3e0be49dbdfdfc634c8f0f2c908763  gcc/testsuite/gfortran.dg/pr85779_3.f90
  04843720e6ab4e0d5b8e62a79801f0bb  gcc/testsuite/gfortran.dg/pr85780.f90
  7e172a3cf8434a7c33b01add4617e601  gcc/testsuite/gfortran.dg/pr85786.f90
  b5430af005fc8cc1b6db9ceb57688fe3  gcc/testsuite/gfortran.dg/pr85796.f90
  725e595013765639d219c2012948cd9d  gcc/testsuite/gfortran.dg/pr85797.f90
  e85019fafc2465365ffe52752040d464  gcc/testsuite/gfortran.dg/pr85798.f90
  6de8b7c7567dcceb9bbbf46563935272  gcc/testsuite/gfortran.dg/pr85816.f90
  052b31eec86fd95fce096fa3b0045dd3  gcc/testsuite/gfortran.dg/pr85895.f90
  e74818417ee12b9bac513c2c5a86fdd1  gcc/testsuite/gfortran.dg/pr85938.f90
  97f1dd51f9cd45871f43a46b11736fb7  gcc/testsuite/gfortran.dg/pr85975.f90
--- 89200,89213 ----
  1bc0d862fdec041bd3263385555b08c2  gcc/testsuite/gfortran.dg/pr85687.f90
  7015fea37cfa3077dcf663f014a04889  gcc/testsuite/gfortran.dg/pr85779_1.f90
  cf956ba7ea568a1ec1e49d5d32949c70  gcc/testsuite/gfortran.dg/pr85779_2.f90
! 19222bb8b833a19f2518e08841ac0866  gcc/testsuite/gfortran.dg/pr85779_3.f90
  04843720e6ab4e0d5b8e62a79801f0bb  gcc/testsuite/gfortran.dg/pr85780.f90
  7e172a3cf8434a7c33b01add4617e601  gcc/testsuite/gfortran.dg/pr85786.f90
  b5430af005fc8cc1b6db9ceb57688fe3  gcc/testsuite/gfortran.dg/pr85796.f90
  725e595013765639d219c2012948cd9d  gcc/testsuite/gfortran.dg/pr85797.f90
  e85019fafc2465365ffe52752040d464  gcc/testsuite/gfortran.dg/pr85798.f90
  6de8b7c7567dcceb9bbbf46563935272  gcc/testsuite/gfortran.dg/pr85816.f90
+ 81b431dbb9eb76aee80a85f44bfec348  gcc/testsuite/gfortran.dg/pr85877.f90
  052b31eec86fd95fce096fa3b0045dd3  gcc/testsuite/gfortran.dg/pr85895.f90
  e74818417ee12b9bac513c2c5a86fdd1  gcc/testsuite/gfortran.dg/pr85938.f90
  97f1dd51f9cd45871f43a46b11736fb7  gcc/testsuite/gfortran.dg/pr85975.f90
*************** c842772198f401b528cb6ac0f65c4b5b  gcc/te
*** 83791,83797 ****
  1bbd8f79e620f6dc8314f507372e92b1  gcc/testsuite/gfortran.dg/pr87994_2.f90
  3a118bb4cf0e05ac1d34bf3d8b7a9364  gcc/testsuite/gfortran.dg/pr87994_3.f90
  c7ad205e6ae355ab8ed11e2933c01c0c  gcc/testsuite/gfortran.dg/pr88025.f90
! 87738ead717ba536de4c455534af755e  gcc/testsuite/gfortran.dg/pr88048.f90
  299cd4b3cd8f981657d37f9d6063d080  gcc/testsuite/gfortran.dg/pr88072.f90
  f2f69037301e6e901e6d032542873c68  gcc/testsuite/gfortran.dg/pr88116_1.f90
  99c41c8c4fc876568fd7e4f16f44a112  gcc/testsuite/gfortran.dg/pr88116_2.f90
--- 89237,89243 ----
  1bbd8f79e620f6dc8314f507372e92b1  gcc/testsuite/gfortran.dg/pr87994_2.f90
  3a118bb4cf0e05ac1d34bf3d8b7a9364  gcc/testsuite/gfortran.dg/pr87994_3.f90
  c7ad205e6ae355ab8ed11e2933c01c0c  gcc/testsuite/gfortran.dg/pr88025.f90
! ea36174db4fefe6bbe58d8c899d770f6  gcc/testsuite/gfortran.dg/pr88048.f90
  299cd4b3cd8f981657d37f9d6063d080  gcc/testsuite/gfortran.dg/pr88072.f90
  f2f69037301e6e901e6d032542873c68  gcc/testsuite/gfortran.dg/pr88116_1.f90
  99c41c8c4fc876568fd7e4f16f44a112  gcc/testsuite/gfortran.dg/pr88116_2.f90
*************** f9cd7fe0c8cb7be5b0846aa6c3eb0b93  gcc/te
*** 83938,83944 ****
  0636d4a049257c8e3f6c32b4b7309697  gcc/testsuite/gfortran.dg/pr93714_1.f90
  93b8b244bce4583a43c29d892e177744  gcc/testsuite/gfortran.dg/pr93714_2.f90
  4d2e245917c39b1bcaeea6010bcb6284  gcc/testsuite/gfortran.dg/pr93792.f90
! a5b6ce00cd18edc5606fea2eada6c169  gcc/testsuite/gfortran.dg/pr93835.f08
  6736173bcc319bca35f5453a7bca947b  gcc/testsuite/gfortran.dg/pr94030_1.f90
  b0f8acfae3746c459e5af7bcca222814  gcc/testsuite/gfortran.dg/pr94030_2.f90
  3fbf8e84b18aab42f89f48c0c8a9a41a  gcc/testsuite/gfortran.dg/pr94285.f90
--- 89384,89390 ----
  0636d4a049257c8e3f6c32b4b7309697  gcc/testsuite/gfortran.dg/pr93714_1.f90
  93b8b244bce4583a43c29d892e177744  gcc/testsuite/gfortran.dg/pr93714_2.f90
  4d2e245917c39b1bcaeea6010bcb6284  gcc/testsuite/gfortran.dg/pr93792.f90
! 8b7bf068692a6a31b63dd4963c050e98  gcc/testsuite/gfortran.dg/pr93835.f08
  6736173bcc319bca35f5453a7bca947b  gcc/testsuite/gfortran.dg/pr94030_1.f90
  b0f8acfae3746c459e5af7bcca222814  gcc/testsuite/gfortran.dg/pr94030_2.f90
  3fbf8e84b18aab42f89f48c0c8a9a41a  gcc/testsuite/gfortran.dg/pr94285.f90
*************** a14ff0a951de87e6e87ae4eba23ae32e  gcc/te
*** 83996,84007 ****
--- 89442,89456 ----
  d21234ae551d720040933254256c6861  gcc/testsuite/gfortran.dg/pr95980.f90
  ac524c67dbf5c0b6588328a02f46a124  gcc/testsuite/gfortran.dg/pr95980_2.f90
  18491a80af7ea815a2d1049a91942f07  gcc/testsuite/gfortran.dg/pr95981.f90
+ 46d582cee8b64dec9357e5dc86eb10c8  gcc/testsuite/gfortran.dg/pr96024.f90
+ 95f12b0fb52668b7e207c4e71746b5c6  gcc/testsuite/gfortran.dg/pr96025.f90
  4cd7e1edd1f016be3c9016b1817d703e  gcc/testsuite/gfortran.dg/pr96038.f90
  e6acc3eb976952fc47981d6ab4ed7205  gcc/testsuite/gfortran.dg/pr96085.f90
  45d800261f64da91bf2398a00691d7c4  gcc/testsuite/gfortran.dg/pr96086.f90
  07cb4ed26cdce5312951d4e23c0ede15  gcc/testsuite/gfortran.dg/pr96099_1.f90
  6ed2b45ec17b4aeb641142e2799cfd89  gcc/testsuite/gfortran.dg/pr96099_2.f90
  43b9b0a65aabf3911bc6a2d49e46f640  gcc/testsuite/gfortran.dg/pr96102.f90
+ 165309f0cdd46bad264a78bc08662670  gcc/testsuite/gfortran.dg/pr96102b.f90
  62ba5dd0303d84c214429cc5293a10ed  gcc/testsuite/gfortran.dg/pr96312.f90
  7607f1a87517f55c7ef37367d96d802e  gcc/testsuite/gfortran.dg/pr96319.f90
  d56be000adb4e5f4b724c408cb3ef497  gcc/testsuite/gfortran.dg/pr96325.f90
*************** bb672f4853167965dbd2fb64d85d3a06  gcc/te
*** 84015,84021 ****
  aee380fea7e3e2a16dae6bf8d81c92f5  gcc/testsuite/gfortran.dg/pr96436_7.f90
  1cb7ddf98a011abb0604916e9800bcd8  gcc/testsuite/gfortran.dg/pr96436_8.f90
  99fdd5ccc3fdcab5bddde35aff692ccb  gcc/testsuite/gfortran.dg/pr96436_9.f90
! 798f21a71e68a6aa67d9f50ef3f33865  gcc/testsuite/gfortran.dg/pr96486.f90
  8756ff45dbdf3f5fe25a965a3ca5d662  gcc/testsuite/gfortran.dg/pr96613.f90
  a056a75dc3c7830d385da1c0b9d587bc  gcc/testsuite/gfortran.dg/pr96711.f90
  a94ae73a3b6b9628990c54fb08f2950c  gcc/testsuite/gfortran.dg/pr96737.f90
--- 89464,89470 ----
  aee380fea7e3e2a16dae6bf8d81c92f5  gcc/testsuite/gfortran.dg/pr96436_7.f90
  1cb7ddf98a011abb0604916e9800bcd8  gcc/testsuite/gfortran.dg/pr96436_8.f90
  99fdd5ccc3fdcab5bddde35aff692ccb  gcc/testsuite/gfortran.dg/pr96436_9.f90
! c8c260dea52e24ac6be6641b8f123d9a  gcc/testsuite/gfortran.dg/pr96486.f90
  8756ff45dbdf3f5fe25a965a3ca5d662  gcc/testsuite/gfortran.dg/pr96613.f90
  a056a75dc3c7830d385da1c0b9d587bc  gcc/testsuite/gfortran.dg/pr96711.f90
  a94ae73a3b6b9628990c54fb08f2950c  gcc/testsuite/gfortran.dg/pr96737.f90
*************** a78afb0368bddc411548d63311098918  gcc/te
*** 84032,84043 ****
--- 89481,89495 ----
  0103f634279cccfe329c626d7b20e2fa  gcc/testsuite/gfortran.dg/pr98017.f90
  7c418d11e1a79fc471909c57b3caef42  gcc/testsuite/gfortran.dg/pr98076.f90
  30379f7e459be0df7dde3d8fe2ad8502  gcc/testsuite/gfortran.dg/pr98284.f90
+ baa4aca6702e7508dc07f87b66216ed4  gcc/testsuite/gfortran.dg/pr98408.f90
  8a48e2264b578c77fe953f48d587af4e  gcc/testsuite/gfortran.dg/pr98411.f90
  661afc7f73f5e470bae7d7efa0a06cbd  gcc/testsuite/gfortran.dg/pr98661.f90
  6f14584e7c3845718818a0eab4f992ff  gcc/testsuite/gfortran.dg/pr98974.F90
+ c308feb04384f4d499a6fd6368791b62  gcc/testsuite/gfortran.dg/pr99036.f90
  ab9d92c634833928d03c56d815ba4f69  gcc/testsuite/gfortran.dg/pr99060.f90
  c4cc8ded91592083a4019a67d9837e2c  gcc/testsuite/gfortran.dg/pr99112.f90
  2b316ebb5f0c34f4b1c5764c77c3e824  gcc/testsuite/gfortran.dg/pr99204.f90
+ fa725ab0822c092ba2f3733d9d76757d  gcc/testsuite/gfortran.dg/pr99349.f90
  c6196744dcddad274ab914969ad9e6d3  gcc/testsuite/gfortran.dg/pr99545.f90
  d2a694e27e64b57361e7aee533fcd3c3  gcc/testsuite/gfortran.dg/pr99602.f90
  59098d6503b66d802b3c688383398c89  gcc/testsuite/gfortran.dg/pr99602a.f90
*************** c273afb240dd8ee8117b49f657c81476  gcc/te
*** 84234,84240 ****
  56206d45c5f13e14b3a1fb529ebdfba0  gcc/testsuite/gfortran.dg/product_init_expr.f03
  8cfd22f83c53cada6279a70564dbbee0  gcc/testsuite/gfortran.dg/product_sum_bounds_1.f90
  1df3bb37479b20de5e1cd736cdffade5  gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03
! e2a943b577daadd0175161d0c30943d1  gcc/testsuite/gfortran.dg/prof/prof.exp
  ddf26540873573967a534a14385f92dd  gcc/testsuite/gfortran.dg/program_name_1.f90
  451cb2bde6f52f6e44db85652688fbea  gcc/testsuite/gfortran.dg/promotion.f90
  08bbf4464a0ed5e6cd9955f827a92afa  gcc/testsuite/gfortran.dg/promotion_2.f90
--- 89686,89692 ----
  56206d45c5f13e14b3a1fb529ebdfba0  gcc/testsuite/gfortran.dg/product_init_expr.f03
  8cfd22f83c53cada6279a70564dbbee0  gcc/testsuite/gfortran.dg/product_sum_bounds_1.f90
  1df3bb37479b20de5e1cd736cdffade5  gcc/testsuite/gfortran.dg/prof/dynamic_dispatch_6.f03
! bae7fbbf43d11e638d2446d021a9239d  gcc/testsuite/gfortran.dg/prof/prof.exp
  ddf26540873573967a534a14385f92dd  gcc/testsuite/gfortran.dg/program_name_1.f90
  451cb2bde6f52f6e44db85652688fbea  gcc/testsuite/gfortran.dg/promotion.f90
  08bbf4464a0ed5e6cd9955f827a92afa  gcc/testsuite/gfortran.dg/promotion_2.f90
*************** e8d03cbf38ab184b18d66a51289a4dbd  gcc/te
*** 84311,84317 ****
  c083c4a0e93e1c95d48abb3705f6fe74  gcc/testsuite/gfortran.dg/read_bang.f90
  a3a6c365306d40d8b7b200f0be37e284  gcc/testsuite/gfortran.dg/read_bang4.f90
  573d3687b74dc91147ca7ef04090292e  gcc/testsuite/gfortran.dg/read_comma.f
! cd7f5492a72c7101c8c192f344b089e0  gcc/testsuite/gfortran.dg/read_dir.f90
  01bec4189b55cdc5263e3a24643963ab  gcc/testsuite/gfortran.dg/read_empty_file.f
  c51abbd690f8bb36ef15755302cb1d31  gcc/testsuite/gfortran.dg/read_eof_1.f90
  6b1d8eb3a90152a0e3061edf81b1573e  gcc/testsuite/gfortran.dg/read_eof_2.f90
--- 89763,89770 ----
  c083c4a0e93e1c95d48abb3705f6fe74  gcc/testsuite/gfortran.dg/read_bang.f90
  a3a6c365306d40d8b7b200f0be37e284  gcc/testsuite/gfortran.dg/read_bang4.f90
  573d3687b74dc91147ca7ef04090292e  gcc/testsuite/gfortran.dg/read_comma.f
! 12da1ae8d2fc8e45999d44e20f2113bd  gcc/testsuite/gfortran.dg/read_dir-aux.c
! c3b45b57fca0da7fb70e73d4ad50f011  gcc/testsuite/gfortran.dg/read_dir.f90
  01bec4189b55cdc5263e3a24643963ab  gcc/testsuite/gfortran.dg/read_empty_file.f
  c51abbd690f8bb36ef15755302cb1d31  gcc/testsuite/gfortran.dg/read_eof_1.f90
  6b1d8eb3a90152a0e3061edf81b1573e  gcc/testsuite/gfortran.dg/read_eof_2.f90
*************** e6c7c7cbf695fec200c964f4e3b125ec  gcc/te
*** 84509,84514 ****
--- 89962,89968 ----
  eef9c4fb4632664f421c4067e9f7dd53  gcc/testsuite/gfortran.dg/save_4.f90
  9619c507201f560eff2135e49692d052  gcc/testsuite/gfortran.dg/save_5.f90
  bcec3240f40aa5093a05d7cd8024acf3  gcc/testsuite/gfortran.dg/save_6.f90
+ 751220763a6526f3644c983c901f1c25  gcc/testsuite/gfortran.dg/save_7.f90
  969e348eec71de0c469550da97db323d  gcc/testsuite/gfortran.dg/save_common.f90
  8077a483f690b8b2a62c945c63fa4b57  gcc/testsuite/gfortran.dg/save_parameter.f90
  1a1f478cd1af5c7ca0f1139bd3142853  gcc/testsuite/gfortran.dg/save_result.f90
*************** c6f31959a6f27a049ee01954f0a811f0  gcc/te
*** 84607,84612 ****
--- 90061,90067 ----
  768c7a5a7ac507eb3c4fef8d48f0a08b  gcc/testsuite/gfortran.dg/semicolon_free.f90
  c137ead9ed9a3cbd4ca5f75d50965b1c  gcc/testsuite/gfortran.dg/semicolon_free_2.f90
  e5ae2b5b89173ed8361161ef10e352e2  gcc/testsuite/gfortran.dg/sequence_types_1.f90
+ 600b9b73c8e3223409f781d7f1222630  gcc/testsuite/gfortran.dg/set_exponent_1.f90
  df7acd1342733a419754eb5cbcbc9a3f  gcc/testsuite/gfortran.dg/set_vm_limit.c
  8c21b488e7773e67f9472b6a064868b9  gcc/testsuite/gfortran.dg/shape_1.f90
  2a136a103d2e76c84d90569febf9b783  gcc/testsuite/gfortran.dg/shape_10.f90
*************** c8b716cee316206a2cc9482d0e553937  gcc/te
*** 84699,84704 ****
--- 90154,90160 ----
  6fd4f51de0ba02b7c11c54cc3d2847c3  gcc/testsuite/gfortran.dg/statement_function_1.f90
  5fc47d7780848b7c842c444d94dc4eca  gcc/testsuite/gfortran.dg/statement_function_2.f90
  dbb65e9cc1aa2d7834531d84c81cb2d0  gcc/testsuite/gfortran.dg/statement_function_3.f
+ efd81d9041f4aeee27fa3012b88b8802  gcc/testsuite/gfortran.dg/statement_function_4.f90
  8297205d0fd462057bf77c41569c1427  gcc/testsuite/gfortran.dg/static_linking_1.c
  fdcc241cfe92b58fca2cd6843c525442  gcc/testsuite/gfortran.dg/static_linking_1.f
  296d5384b485fdd46ff80cb7e9cf66fa  gcc/testsuite/gfortran.dg/stfunc_1.f90
*************** a9c38f145300eee1aaca2ccee4d418fd  gcc/te
*** 85061,85067 ****
  5fcbccbbe6f25c7610a63673951af1d0  gcc/testsuite/gfortran.dg/ubound_1.f90
  3487e8fcd11181a286e307cf481c7df0  gcc/testsuite/gfortran.dg/ubsan/bind-c-intent-out-2.f90
  ddea8e97d88b939147b22730616832d2  gcc/testsuite/gfortran.dg/ubsan/pr101624.f90
! f6c6c6bf490de0e2d77b0a4ab0ec5506  gcc/testsuite/gfortran.dg/ubsan/ubsan.exp
  1623cb39a42976237e7817a8a94f1a4a  gcc/testsuite/gfortran.dg/unary_operator.f90
  0e692a977ecc4ab86f2eddee444794b4  gcc/testsuite/gfortran.dg/uncommon_block_data_1.f90
  a3fe3d5aed286d45e58533ee6cd37dd9  gcc/testsuite/gfortran.dg/unconstrained_commons.f
--- 90517,90524 ----
  5fcbccbbe6f25c7610a63673951af1d0  gcc/testsuite/gfortran.dg/ubound_1.f90
  3487e8fcd11181a286e307cf481c7df0  gcc/testsuite/gfortran.dg/ubsan/bind-c-intent-out-2.f90
  ddea8e97d88b939147b22730616832d2  gcc/testsuite/gfortran.dg/ubsan/pr101624.f90
! e291127c769443ec31b3cab6dcce2f99  gcc/testsuite/gfortran.dg/ubsan/pr106062.f90
! 4d40bcc833ec02a5fae4fb72038e3f14  gcc/testsuite/gfortran.dg/ubsan/ubsan.exp
  1623cb39a42976237e7817a8a94f1a4a  gcc/testsuite/gfortran.dg/unary_operator.f90
  0e692a977ecc4ab86f2eddee444794b4  gcc/testsuite/gfortran.dg/uncommon_block_data_1.f90
  a3fe3d5aed286d45e58533ee6cd37dd9  gcc/testsuite/gfortran.dg/unconstrained_commons.f
*************** a4fe286ac5e85ed8eddf004026c98874  gcc/te
*** 85116,85126 ****
  f272bdc78ed6796b164ff55bff0c5aae  gcc/testsuite/gfortran.dg/unlimited_polymorphic_5.f90
  d6bbc583acbb38fcb393377492b06d29  gcc/testsuite/gfortran.dg/unlimited_polymorphic_6.f90
  864e8b4fb70aff246177d60b644b3d37  gcc/testsuite/gfortran.dg/unlimited_polymorphic_7.f90
! 22adecc4571a46be1344a63cf664a48e  gcc/testsuite/gfortran.dg/unlimited_polymorphic_8.f90
  dfedf49d73e274e5c02366ccc586a488  gcc/testsuite/gfortran.dg/unlimited_polymorphic_9.f90
  3bff9a1d96343d3cb782b868b52555a1  gcc/testsuite/gfortran.dg/unpack_bounds_1.f90
  7a5071f592965045cdd934ed6a30a8c2  gcc/testsuite/gfortran.dg/unpack_bounds_2.f90
  a38aec42f7e0058d56277b2bdbf39923  gcc/testsuite/gfortran.dg/unpack_bounds_3.f90
  a16cffa781475700beb86772ba80edef  gcc/testsuite/gfortran.dg/unpack_init_expr.f03
  77425eab660cd99123828c97f2657ca9  gcc/testsuite/gfortran.dg/unpack_mask_1.f90
  3f54f0cd1eb1eee8a11f6a750a442af4  gcc/testsuite/gfortran.dg/unpack_vector_1.f90
--- 90573,90584 ----
  f272bdc78ed6796b164ff55bff0c5aae  gcc/testsuite/gfortran.dg/unlimited_polymorphic_5.f90
  d6bbc583acbb38fcb393377492b06d29  gcc/testsuite/gfortran.dg/unlimited_polymorphic_6.f90
  864e8b4fb70aff246177d60b644b3d37  gcc/testsuite/gfortran.dg/unlimited_polymorphic_7.f90
! b7213ecb52459de02c322ce0e5ad7cf7  gcc/testsuite/gfortran.dg/unlimited_polymorphic_8.f90
  dfedf49d73e274e5c02366ccc586a488  gcc/testsuite/gfortran.dg/unlimited_polymorphic_9.f90
  3bff9a1d96343d3cb782b868b52555a1  gcc/testsuite/gfortran.dg/unpack_bounds_1.f90
  7a5071f592965045cdd934ed6a30a8c2  gcc/testsuite/gfortran.dg/unpack_bounds_2.f90
  a38aec42f7e0058d56277b2bdbf39923  gcc/testsuite/gfortran.dg/unpack_bounds_3.f90
+ ef7b4768bd7bde6d788c8d20c21634b9  gcc/testsuite/gfortran.dg/unpack_field_1.f90
  a16cffa781475700beb86772ba80edef  gcc/testsuite/gfortran.dg/unpack_init_expr.f03
  77425eab660cd99123828c97f2657ca9  gcc/testsuite/gfortran.dg/unpack_mask_1.f90
  3f54f0cd1eb1eee8a11f6a750a442af4  gcc/testsuite/gfortran.dg/unpack_vector_1.f90
*************** c4cdbb7826f698ed16a2354d36deafa1  gcc/te
*** 85259,85264 ****
--- 90717,90725 ----
  ca22fb0f028313d733f9f90efd6b98e6  gcc/testsuite/gfortran.dg/vect/no-vfa-pr32377.f90
  19e92e71600fa931dce3409e389d0482  gcc/testsuite/gfortran.dg/vect/no-vfa-pr32457.f90
  bba5c2c089f258e8640ba52dab163abe  gcc/testsuite/gfortran.dg/vect/pr100981-1.f90
+ ca55d89300492a406b4293654a75c058  gcc/testsuite/gfortran.dg/vect/pr106253.f
+ 151833a2475cd28c993b813d478c8b37  gcc/testsuite/gfortran.dg/vect/pr107254.f90
+ 777b852dc009b4634413ed078253b5e8  gcc/testsuite/gfortran.dg/vect/pr108979.f90
  a17cb1ab891a5af3471298da97331dda  gcc/testsuite/gfortran.dg/vect/pr19049.f90
  fdb4a5f5d5eff2fd75822f14875bd776  gcc/testsuite/gfortran.dg/vect/pr32377.f90
  bbb6998ea100c6c2039976c6446a0c10  gcc/testsuite/gfortran.dg/vect/pr32380.f
*************** f1cf2f0d910fe906e3f2830924f69531  gcc/te
*** 85313,85319 ****
  3a21d8125c0cd02a232eac625ca5cbf0  gcc/testsuite/gfortran.dg/vect/vect-alias-check-1.F90
  943be5f26b034cab4a8d80ed72f35e29  gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
  51d61a0ffbe2e176d92badb55eaf6889  gcc/testsuite/gfortran.dg/vect/vect-gems.f90
! d0daf49d33c6109ef81e2da9094db146  gcc/testsuite/gfortran.dg/vect/vect.exp
  5020f9773f3c21b86ac1fe3e513943a0  gcc/testsuite/gfortran.dg/vector_subscript_1.f90
  0833fb55cdacc085a113140aa1d94458  gcc/testsuite/gfortran.dg/vector_subscript_2.f90
  08ce83b9015973faf30ecdfdba12cbd9  gcc/testsuite/gfortran.dg/vector_subscript_3.f90
--- 90774,90780 ----
  3a21d8125c0cd02a232eac625ca5cbf0  gcc/testsuite/gfortran.dg/vect/vect-alias-check-1.F90
  943be5f26b034cab4a8d80ed72f35e29  gcc/testsuite/gfortran.dg/vect/vect-do-concurrent-1.f90
  51d61a0ffbe2e176d92badb55eaf6889  gcc/testsuite/gfortran.dg/vect/vect-gems.f90
! 388f4a2c8d9995a7ebcf7326f5977a54  gcc/testsuite/gfortran.dg/vect/vect.exp
  5020f9773f3c21b86ac1fe3e513943a0  gcc/testsuite/gfortran.dg/vector_subscript_1.f90
  0833fb55cdacc085a113140aa1d94458  gcc/testsuite/gfortran.dg/vector_subscript_2.f90
  08ce83b9015973faf30ecdfdba12cbd9  gcc/testsuite/gfortran.dg/vector_subscript_3.f90
*************** a45735500c2235050a81488691bd9b83  gcc/te
*** 85385,85390 ****
--- 90846,90854 ----
  d7e90d5ac1ba80ab977e039c5c23bdf1  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f
  7f1aaef28181e10129020752d16d1cf4  gcc/testsuite/gfortran.dg/warnings_are_errors_1.f90
  8f632367e477a017a8638d374f10d7fb  gcc/testsuite/gfortran.dg/wdate-time.F90
+ c57e0eefcfb3fa80b5dc76f7e0cf2596  gcc/testsuite/gfortran.dg/weak-1.f90
+ 19491593b49868aa4853566047368a31  gcc/testsuite/gfortran.dg/weak-2.f90
+ 48c0fec4da35223efa1d35cd97c2c855  gcc/testsuite/gfortran.dg/weak-3.f90
  2cc5aa8cdc10a24dfcac8454523cd16d  gcc/testsuite/gfortran.dg/wextra_1.f
  408e38c80c20c6b087de3cbea33a13a3  gcc/testsuite/gfortran.dg/where_1.f90
  e2dd8115622860575ce72139d603a847  gcc/testsuite/gfortran.dg/where_2.f90
*************** e9680d0bddb3a0bd17002430dbe75c8c  gcc/te
*** 85435,85440 ****
--- 90899,90905 ----
  459662cbd70163a6babccf21c428a96a  gcc/testsuite/gfortran.dg/whole_file_9.f90
  c21b79165d40a9a110e5edf0ea3b1838  gcc/testsuite/gfortran.dg/widechar_1.f90
  386beab2975c65320519d70721eda661  gcc/testsuite/gfortran.dg/widechar_10.f90
+ 5ae4f00ec6ac32b48d23a3b5ef4742b4  gcc/testsuite/gfortran.dg/widechar_11.f90
  fa3e083638bba59aed177b5ab216af21  gcc/testsuite/gfortran.dg/widechar_2.f90
  157586a450c3ac1908fbc6b6945d042d  gcc/testsuite/gfortran.dg/widechar_3.f90
  0bdb47136d6a611a6c7990a40922851c  gcc/testsuite/gfortran.dg/widechar_4.f90
*************** b60b1e83048adf872f1f5827680dc3ed  gcc/te
*** 85507,85513 ****
  82775aea043bb1c46d8cb089803279f4  gcc/testsuite/gfortran.fortran-torture/compile/ambig.f90
  1c29630fad991e385f1ac4b63afd3e59  gcc/testsuite/gfortran.fortran-torture/compile/arrayio.f90
  bb59bc612e4ff3905614ceeae7d89150  gcc/testsuite/gfortran.fortran-torture/compile/bergervoet2.f90
! 90c76c93df01cc585259da50c263ffc0  gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
  fc5b8a207174c37582b953f18f8271a5  gcc/testsuite/gfortran.fortran-torture/compile/complex_1.f90
  d34063f5c0cc449ee1e78199c2bc37d9  gcc/testsuite/gfortran.fortran-torture/compile/contained_1.f90
  beef214f45f74ba36c7a5a4a3952c926  gcc/testsuite/gfortran.fortran-torture/compile/contained_2.f90
--- 90972,90978 ----
  82775aea043bb1c46d8cb089803279f4  gcc/testsuite/gfortran.fortran-torture/compile/ambig.f90
  1c29630fad991e385f1ac4b63afd3e59  gcc/testsuite/gfortran.fortran-torture/compile/arrayio.f90
  bb59bc612e4ff3905614ceeae7d89150  gcc/testsuite/gfortran.fortran-torture/compile/bergervoet2.f90
! 33820d2e7d010213d5af88004306efc1  gcc/testsuite/gfortran.fortran-torture/compile/compile.exp
  fc5b8a207174c37582b953f18f8271a5  gcc/testsuite/gfortran.fortran-torture/compile/complex_1.f90
  d34063f5c0cc449ee1e78199c2bc37d9  gcc/testsuite/gfortran.fortran-torture/compile/contained_1.f90
  beef214f45f74ba36c7a5a4a3952c926  gcc/testsuite/gfortran.fortran-torture/compile/contained_2.f90
*************** b34b25b967cd77639e123317e2df451f  gcc/te
*** 85655,85661 ****
  746215f07864dfaf08683e1db2ac8960  gcc/testsuite/gfortran.fortran-torture/execute/equiv_4.f90
  39b975ad31741b72a1b9d129fa059ceb  gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f
  4cbdd3408a64145bd29410441a85f54c  gcc/testsuite/gfortran.fortran-torture/execute/equiv_init_1.f90
! 35ac15c8fb1bebd2480938d3dde38762  gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
  afd19f923c3c5e466e7fe619afc1d851  gcc/testsuite/gfortran.fortran-torture/execute/f2_edit_1.f90
  f144f87ad152dd4ece29d0f8c7a9ca87  gcc/testsuite/gfortran.fortran-torture/execute/forall.f90
  b48fbbc2cab88879e5ac6c732a077df4  gcc/testsuite/gfortran.fortran-torture/execute/forall_1.f90
--- 91120,91126 ----
  746215f07864dfaf08683e1db2ac8960  gcc/testsuite/gfortran.fortran-torture/execute/equiv_4.f90
  39b975ad31741b72a1b9d129fa059ceb  gcc/testsuite/gfortran.fortran-torture/execute/equiv_5.f
  4cbdd3408a64145bd29410441a85f54c  gcc/testsuite/gfortran.fortran-torture/execute/equiv_init_1.f90
! a4eebcbd286a75ce37d6f6e1e7c3b1a1  gcc/testsuite/gfortran.fortran-torture/execute/execute.exp
  afd19f923c3c5e466e7fe619afc1d851  gcc/testsuite/gfortran.fortran-torture/execute/f2_edit_1.f90
  f144f87ad152dd4ece29d0f8c7a9ca87  gcc/testsuite/gfortran.fortran-torture/execute/forall.f90
  b48fbbc2cab88879e5ac6c732a077df4  gcc/testsuite/gfortran.fortran-torture/execute/forall_1.f90
*************** b7777c6604106297693e31038efb5ae1  gcc/te
*** 85828,85837 ****
  adc7e9976dd3bb424c92c2d7d3df32ed  gcc/testsuite/gfortran.fortran-torture/execute/where_8.f90
  bc764eca2f460bc6fb657fb675420237  gcc/testsuite/gfortran.fortran-torture/execute/write_a_1.f90
  eabee42e1a561616023ffd1f4d1a64e2  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
  b052b4cb8b4a693220fe90fbb2e102a6  gcc/testsuite/gnat.dg/abe_pkg.adb
  47091f94a4de83eb5b2e62e6557bd1bf  gcc/testsuite/gnat.dg/abe_pkg.ads
! 683a49e44d3e676e614119b1a0681414  gcc/testsuite/gnat.dg/abstract1.adb
! 97e62e221b278ff05353a4d7b98ec6f8  gcc/testsuite/gnat.dg/abstract1.ads
  ad2a054aea75840d3ecf97c2faa0f183  gcc/testsuite/gnat.dg/abstract_state1.adb
  1406779a63f2f66b35098f98ca1b272a  gcc/testsuite/gnat.dg/abstract_state1.ads
  f8aa1b9b6d8605d6d8f8640d0af378d3  gcc/testsuite/gnat.dg/abstract_with_anonymous_result.adb
--- 91293,93016 ----
  adc7e9976dd3bb424c92c2d7d3df32ed  gcc/testsuite/gfortran.fortran-torture/execute/where_8.f90
  bc764eca2f460bc6fb657fb675420237  gcc/testsuite/gfortran.fortran-torture/execute/write_a_1.f90
  eabee42e1a561616023ffd1f4d1a64e2  gcc/testsuite/gfortran.fortran-torture/execute/write_logical.f90
+ 7588b35298f3665ddfd4976cedb36af8  gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/c.c
+ 670047449e486810d72535b7b42cfe5b  gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/c.def
+ 08edae530195e26b40c0d17ba1a5848c  gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/calling-c-datatypes-unbounded-run-pass.exp
+ fe67327073cd1abc9f69e5583cf64c78  gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/m.mod
+ 9fedbc50a9da9db3d22df8341aa2a671  gcc/testsuite/gm2/case/pass/case-pass.exp
+ 3d76cb794bc32b3b0b044e00783636c8  gcc/testsuite/gm2/case/pass/testcase1.mod
+ 1e58a66ba0015168962bdadd0de37017  gcc/testsuite/gm2/case/pass/testcase2.mod
+ 8bed30c973a862c60e8104463928e9ae  gcc/testsuite/gm2/case/pass/testcase3.mod
+ 81716f9ab941854bbabca389e2f70f90  gcc/testsuite/gm2/case/pass/testcase4.mod
+ e49a54c2b13999808b5d01311e9f9b15  gcc/testsuite/gm2/complex/fail/var1.mod
+ 3cb9e20db905fa1f6353d0b156d16ec2  gcc/testsuite/gm2/complex/pass/arith.mod
+ 996c9bc3f1e07f9daafc0bc310601c79  gcc/testsuite/gm2/complex/pass/arith2.mod
+ 4875d246c898190b953f579ee341e91e  gcc/testsuite/gm2/complex/pass/arith3.mod
+ cc95df1776134eba4ad71eb32843594a  gcc/testsuite/gm2/complex/pass/arith4.mod
+ c141ca31b357038eb6a4044b26998792  gcc/testsuite/gm2/complex/pass/arith5.mod
+ 7c255046cd47befaf8df0f28d083acd4  gcc/testsuite/gm2/complex/pass/arith6.mod
+ 4f67685907cdef9fa7747bb0c8a1475a  gcc/testsuite/gm2/complex/pass/complex-pass.exp
+ a1c7c008142367dc398c50c760a83614  gcc/testsuite/gm2/complex/pass/consts.mod
+ 14c4b0176192c164863494146b289fb0  gcc/testsuite/gm2/complex/pass/consts2.mod
+ 3ecc2c345e609c8e9cde330b6211d9a2  gcc/testsuite/gm2/complex/pass/consts3.mod
+ ede62fed0667f9add3669e357dba0e0b  gcc/testsuite/gm2/complex/pass/tinycabs.mod
+ a397246f5d47aa51386a4c77d07b1859  gcc/testsuite/gm2/complex/pass/var1.mod
+ 9aed9c95482ee1edd8dacb2619d1c57b  gcc/testsuite/gm2/complex/pass/var2.mod
+ 959fc853bae4218a320faed6a17dd7ff  gcc/testsuite/gm2/complex/pass/var3.mod
+ 1f0b5ada894f412897549c1d45040f2e  gcc/testsuite/gm2/complex/pass/var4.mod
+ 722e8284be796cd15a3f33546076a83e  gcc/testsuite/gm2/complex/pass/var5.mod
+ 4062770d97cbd23607ddeca326969906  gcc/testsuite/gm2/complex/pass/var6.mod
+ 842d1f9959cf4780c936654fb617d164  gcc/testsuite/gm2/complex/pass/var7.mod
+ e4d48ab2155b6e4b2224aade60ef5a45  gcc/testsuite/gm2/complex/pass/var8.mod
+ 5f8a36b020f291851c4269d5b51a4c41  gcc/testsuite/gm2/complex/run/pass/arith3.mod
+ 7862fcdc8b3aa802871a0a915c28a36b  gcc/testsuite/gm2/complex/run/pass/arith4.mod
+ dbc3dbd6b064e1c3403e27b14bb88e9d  gcc/testsuite/gm2/complex/run/pass/arith5.mod
+ 7c255046cd47befaf8df0f28d083acd4  gcc/testsuite/gm2/complex/run/pass/arith6.mod
+ cca4ea2150705794b6f66dc505e31741  gcc/testsuite/gm2/complex/run/pass/arith7.mod
+ 640a53d773d30ed6a165fc0ce89d3137  gcc/testsuite/gm2/complex/run/pass/arith8.mod
+ 8aa86335b08fba456ebe89411f73ce5b  gcc/testsuite/gm2/complex/run/pass/complex-run-pass.exp
+ 734e9b4651a0052a292b56644113bf74  gcc/testsuite/gm2/coroutines/pim/run/pass/coroutines-pim-run-pass.exp
+ 7ff877fbb045b88c74f5a99a6777a3de  gcc/testsuite/gm2/coroutines/pim/run/pass/testiotransfer.mod
+ 8bd9ea367942a49eaf640de32e64f0ee  gcc/testsuite/gm2/coroutines/pim/run/pass/testtransfer.mod
+ d6adcb8a3ecd322645053f435759b3e1  gcc/testsuite/gm2/cpp/fail/another.h
+ ad849e5f7ccb276b6be3b793da79a630  gcc/testsuite/gm2/cpp/fail/fail1.mod
+ 14633206acb34dffbebcd5db43dd7229  gcc/testsuite/gm2/cpp/longcard2.mod
+ 6ee77d1f3bced323a9c3a5ac371d3edb  gcc/testsuite/gm2/cpp/longstrimp.mod
+ cf65d09dda713bbf29dd8228b5d8f1ba  gcc/testsuite/gm2/cpp/pass/arrayhuge.mod
+ 0efa028fc951d0c2d739c5865ec67f50  gcc/testsuite/gm2/cpp/pass/arrayhuge2.mod
+ f3476479b358a088780f3d0d7ee603ac  gcc/testsuite/gm2/cpp/pass/cpp-pass.exp
+ 2bb9c5476b192255eac634cb22b4a2bf  gcc/testsuite/gm2/cpp/pass/cpp.mod
+ 34c3368e770f6ca0b338609750a869b0  gcc/testsuite/gm2/cpp/pass/cpph.mod
+ 92314d1e4981b1a5a30ee32e75e8ae45  gcc/testsuite/gm2/cpp/pass/subaddr.mod
+ e84ba33f27196931f4c9df8f91f8dcd8  gcc/testsuite/gm2/cpp/pass/testcpp.mod
+ 2c96c1eaaf3fbe7bdaddb1891456a34b  gcc/testsuite/gm2/cpp/pass/testcpp2.mod
+ c06281a00fcf9225eeab039d3bab8deb  gcc/testsuite/gm2/cpp/setchar2.mod
+ e46cfd304772efbdb8aaaa105735a0ce  gcc/testsuite/gm2/cpp/setchar6.mod
+ 6cd8f57a9095d9aca66006de08fa6748  gcc/testsuite/gm2/cse/fail/cse-fail.exp
+ 0b01e3d7bc6e315a8af5f12ba42e44bc  gcc/testsuite/gm2/cse/fail/testcse38.mod
+ d27045ec4ebfe4e741d38a2488fd1f0b  gcc/testsuite/gm2/cse/pass/cse-pass.exp
+ 1c74dc0e36dbbc5a6e89107500fe154b  gcc/testsuite/gm2/cse/pass/m2t.c
+ f6a0ca3f9c588ab94a33ea5c826b6db4  gcc/testsuite/gm2/cse/pass/testb.mod
+ a31ff6a17bcca1b06eb5e5e64c1f2697  gcc/testsuite/gm2/cse/pass/testbuiltin.def
+ 2a890abfe4e4089097ab4050a7bf76bd  gcc/testsuite/gm2/cse/pass/testbuiltin.mod
+ 4cf5b6ecdc3a6d6f8348bae8a435c4c4  gcc/testsuite/gm2/cse/pass/testcse.def
+ 6c5692d3d414c808b059de887160d931  gcc/testsuite/gm2/cse/pass/testcse.mod
+ 0ff84c21d24ef3262e4b3e1d8e575352  gcc/testsuite/gm2/cse/pass/testcse10.mod
+ 5208d1d005710a3b0ec25d33ef52ee77  gcc/testsuite/gm2/cse/pass/testcse11.mod
+ 3254d9b2b1b1bc72c7059ac9a1912332  gcc/testsuite/gm2/cse/pass/testcse12.mod
+ 70cc510f0f58f348d5f8572b4206bc0d  gcc/testsuite/gm2/cse/pass/testcse13.mod
+ d8241662810c02a758893b751ffaf8cf  gcc/testsuite/gm2/cse/pass/testcse14.mod
+ 23920da4ef0bc17fbc6991cc0ed4b61a  gcc/testsuite/gm2/cse/pass/testcse15.mod
+ 3412172e8a31f9da3045ed324ba84769  gcc/testsuite/gm2/cse/pass/testcse16.mod
+ 56903c1b7834ae4149f5c1dfc7bc7c77  gcc/testsuite/gm2/cse/pass/testcse17.mod
+ 42358a99ab75206355175ee7c078326a  gcc/testsuite/gm2/cse/pass/testcse18.mod
+ e5dc458068cc4751a4e6ecc535e30b96  gcc/testsuite/gm2/cse/pass/testcse19.mod
+ 002321707cdf75ffc1f0b229c512df64  gcc/testsuite/gm2/cse/pass/testcse2.mod
+ 47b78584ee632fd7bf5f087d163b846f  gcc/testsuite/gm2/cse/pass/testcse20.mod
+ 88365047c1b3c38e5fb01bb4465a53f1  gcc/testsuite/gm2/cse/pass/testcse21.mod
+ c4dd03b27aa76c23193e4488bdb0f6fe  gcc/testsuite/gm2/cse/pass/testcse22.mod
+ 1c7575783b9b680db567a5b51284576e  gcc/testsuite/gm2/cse/pass/testcse23.mod
+ f82e7527f13e0b57d4aed7cc551ded98  gcc/testsuite/gm2/cse/pass/testcse24.mod
+ d36a851b567d3c85418e7a5c9fe3a438  gcc/testsuite/gm2/cse/pass/testcse25.mod
+ 8f362c23f35b5aa262ca964cb768e901  gcc/testsuite/gm2/cse/pass/testcse26.mod
+ 8f97480e14f68a23389ca7fb93669f5e  gcc/testsuite/gm2/cse/pass/testcse27.mod
+ 02626e730bda7b863cc4fb0b4fd08836  gcc/testsuite/gm2/cse/pass/testcse28.mod
+ bb823c1e0dab6f945678f4263d4f2313  gcc/testsuite/gm2/cse/pass/testcse29.mod
+ 3e2d635478ae1451c5bc98a559d17ee6  gcc/testsuite/gm2/cse/pass/testcse3.mod
+ badba47d7068a455b19e34eba7c0535c  gcc/testsuite/gm2/cse/pass/testcse31.mod
+ d2f63c56144030fda757b2e0f4aad7d9  gcc/testsuite/gm2/cse/pass/testcse32.mod
+ 307dc943d470a453b45841597f8e0026  gcc/testsuite/gm2/cse/pass/testcse33.mod
+ 2d4f810aee6cbe20ac199019778b6d13  gcc/testsuite/gm2/cse/pass/testcse34.mod
+ 78fa0368edab1bbcf2554ad515f4eaee  gcc/testsuite/gm2/cse/pass/testcse35.mod
+ 757c2fbab5c0e9c55e5ba191e8b88456  gcc/testsuite/gm2/cse/pass/testcse36.mod
+ 880539699e717075ee91102a1b378eb5  gcc/testsuite/gm2/cse/pass/testcse37.mod
+ 86db5dcefda949bb1393203332431f94  gcc/testsuite/gm2/cse/pass/testcse39.mod
+ 75a3635dc77ae84eea1fdb503d234d32  gcc/testsuite/gm2/cse/pass/testcse4.c
+ a6f61a9bd07d35e8b162746a04f82205  gcc/testsuite/gm2/cse/pass/testcse4.mod
+ 5c5b10b5a21f5eb3c65400da2043aa95  gcc/testsuite/gm2/cse/pass/testcse40.mod
+ 4114734c15688a0aedba6501705c8fa2  gcc/testsuite/gm2/cse/pass/testcse41.mod
+ 44a7e95c017444429a416fa9b5011801  gcc/testsuite/gm2/cse/pass/testcse42.mod
+ 1413efc1be0694d6992aab742b9043bc  gcc/testsuite/gm2/cse/pass/testcse43.mod
+ 7735c2f12292369bd402bd784f2768b1  gcc/testsuite/gm2/cse/pass/testcse44.mod
+ d98627b48229cab4e8541d6eb7ca7c69  gcc/testsuite/gm2/cse/pass/testcse45.mod
+ 19076e365ed8581e13cbc02127dab4df  gcc/testsuite/gm2/cse/pass/testcse46.mod
+ 2fdc2943810266cffa03ccd532b4355a  gcc/testsuite/gm2/cse/pass/testcse47.mod
+ d126cf9f66b747111b852992e95d06c6  gcc/testsuite/gm2/cse/pass/testcse48.mod
+ b37a68e352a1ba44f56085db993e889e  gcc/testsuite/gm2/cse/pass/testcse49.mod
+ 18b2ed6c5d23cd40adba92138f147f2a  gcc/testsuite/gm2/cse/pass/testcse5.c
+ fcbe40c5a0ec515e75bf5de944218c14  gcc/testsuite/gm2/cse/pass/testcse5.mod
+ 602050dcf01c30833e747a405694cafe  gcc/testsuite/gm2/cse/pass/testcse50.def
+ 554574aac3e8e3b152685f5779a212d2  gcc/testsuite/gm2/cse/pass/testcse50.mod
+ 94447b3f9a412bef7c25a8e23c897b26  gcc/testsuite/gm2/cse/pass/testcse51.mod
+ 2103e5fc06f7d8a4a6bd416e8ec55031  gcc/testsuite/gm2/cse/pass/testcse52.def
+ e53ab184e1fbdc30838f0344eabeb02e  gcc/testsuite/gm2/cse/pass/testcse52.mod
+ 0c1aedddcb8126fea5316d60680c5a89  gcc/testsuite/gm2/cse/pass/testcse53.def
+ 2c8acb92e973007def32299593c3b110  gcc/testsuite/gm2/cse/pass/testcse53.mod
+ 857632b3fb00a38fbf4f3ebd6edd40fe  gcc/testsuite/gm2/cse/pass/testcse6.c
+ ab208f9b74a325c0b9c7e9c6d1ddd282  gcc/testsuite/gm2/cse/pass/testcse6.mod
+ d44a75df2a0cb7cc41e70a4e02010e8e  gcc/testsuite/gm2/cse/pass/testcse7.c
+ 50d592fab4fa75a88285e53ecc7285bf  gcc/testsuite/gm2/cse/pass/testcse7.mod
+ a1bc131f5d55e613c1f8bbbda43fe51e  gcc/testsuite/gm2/cse/pass/testcse8.c
+ 83bbbd8eccfd0ae96f34089564e20a02  gcc/testsuite/gm2/cse/pass/testcse8.mod
+ 3e451550ca1bd860854772690e42ac33  gcc/testsuite/gm2/cse/pass/testcse9.c
+ 432517d8243f4e378c79ed1e3ba18795  gcc/testsuite/gm2/cse/pass/testsize.mod
+ 0510433e35c0c6ead54c427e60a0608f  gcc/testsuite/gm2/dynamic/pass/add.mod
+ 7d5b64f984852e651626503ffb438111  gcc/testsuite/gm2/dynamic/pass/dynamic-pass.exp
+ bc934d035a84d131e8594035c39af71d  gcc/testsuite/gm2/dynamic/pass/prog21.mod
+ 0b9578b4d7a637e809221dcb02396e71  gcc/testsuite/gm2/dynamic/pass/testarray.mod
+ 6a569c608c5f3e86bd6abb40a6dd2f7c  gcc/testsuite/gm2/dynamic/pass/testarray2.mod
+ 47dd49c1d81c66aa98c2773337edabd2  gcc/testsuite/gm2/dynamic/pass/testarray3.mod
+ 0787741549aa557594bcb828ff84dcb0  gcc/testsuite/gm2/dynamic/pass/testarray4.mod
+ 092bd4ac5cb7a2eb60bf60ddfce28b7c  gcc/testsuite/gm2/dynamic/pass/testarray6.mod
+ 35f6a93f7bfd5272436e15570d30ac37  gcc/testsuite/gm2/dynamic/pass/testbec.mod
+ ec70f4196e162f4545eed9f632782727  gcc/testsuite/gm2/dynamic/pass/testbec10.mod
+ 09c7bf1f430c84c5abf9467623791acc  gcc/testsuite/gm2/dynamic/pass/testbec11.mod
+ 72ec043b7bd41e76971372035bfb8ec7  gcc/testsuite/gm2/dynamic/pass/testbec12.mod
+ 660df456946875f4271a251ede67695f  gcc/testsuite/gm2/dynamic/pass/testbec13.mod
+ 00b685cf14350252a5f3faed96a33dbe  gcc/testsuite/gm2/dynamic/pass/testbec14.mod
+ 120ff02fbb577b045d68e0572daea488  gcc/testsuite/gm2/dynamic/pass/testbec15.mod
+ 0e0120d93f3161217e1d057c49a2db1e  gcc/testsuite/gm2/dynamic/pass/testbec16.mod
+ 8f85b392d8f15f6b91b590ffcd571df2  gcc/testsuite/gm2/dynamic/pass/testbec17.mod
+ 007d6c8032aa445fdc0503f2af9c5c28  gcc/testsuite/gm2/dynamic/pass/testbec18.mod
+ 4ee5dff5f9b279fe9a318dd660e0843e  gcc/testsuite/gm2/dynamic/pass/testbec19.mod
+ 801306f2c746785c3da97c04742c46c8  gcc/testsuite/gm2/dynamic/pass/testbec2.mod
+ 522e362b7c5af4b1a2d7d608771e9ffb  gcc/testsuite/gm2/dynamic/pass/testbec20.mod
+ 4d20b56612084bb219efd6eb88459252  gcc/testsuite/gm2/dynamic/pass/testbec21.mod
+ 313f2746a3ac182a94258950b58a68e4  gcc/testsuite/gm2/dynamic/pass/testbec22.mod
+ 5dcfb0ca860d59e2308ff456b3c82810  gcc/testsuite/gm2/dynamic/pass/testbec23.mod
+ 807ce7fb96237e0db9be693e0d68545f  gcc/testsuite/gm2/dynamic/pass/testbec24.mod
+ 5b96b7d7209530f4766feb9ca204fa0e  gcc/testsuite/gm2/dynamic/pass/testbec25.mod
+ 05cd0da6293456403d619239440da13a  gcc/testsuite/gm2/dynamic/pass/testbec26.mod
+ ca324a2a13c07644989bd424695950ed  gcc/testsuite/gm2/dynamic/pass/testbec27.mod
+ 5fb7bd5c33129d25acb19f81f48f06b6  gcc/testsuite/gm2/dynamic/pass/testbec28.mod
+ 38e5447782904d0238777f3e40ab1ece  gcc/testsuite/gm2/dynamic/pass/testbec29.mod
+ 7b4deebf551d1c326792c58650784ab7  gcc/testsuite/gm2/dynamic/pass/testbec3.mod
+ 5a1da8decbd7df4349f9afb53a4d1607  gcc/testsuite/gm2/dynamic/pass/testbec30.mod
+ dc2ada48c6b1ff1f65eed1b68d2c8382  gcc/testsuite/gm2/dynamic/pass/testbec31.mod
+ 6d52274234a55fbd1e09a053d2effd72  gcc/testsuite/gm2/dynamic/pass/testbec32.mod
+ d8a9c33dd51b7a24cba8f3427da7c79c  gcc/testsuite/gm2/dynamic/pass/testbec33.mod
+ ed32b7435e6ad7d5a0ed7e554c99ccbe  gcc/testsuite/gm2/dynamic/pass/testbec34.mod
+ e0128eaf5af25dfb899afcdf8515ac1d  gcc/testsuite/gm2/dynamic/pass/testbec35.mod
+ d2ede44d1b0a97721c6ea057569955d4  gcc/testsuite/gm2/dynamic/pass/testbec36.mod
+ b05ad8ca5e63b7a917499aaa9bb78227  gcc/testsuite/gm2/dynamic/pass/testbec37.mod
+ 29a7f946766f1e874163613a0b959363  gcc/testsuite/gm2/dynamic/pass/testbec38.mod
+ e1658421af50513e083509c4d8e04052  gcc/testsuite/gm2/dynamic/pass/testbec39.mod
+ 35e1d2da1889a662af6aec56bcc0cd2c  gcc/testsuite/gm2/dynamic/pass/testbec4.mod
+ 0cd4c38451faebcd199a654f49b275f0  gcc/testsuite/gm2/dynamic/pass/testbec40.mod
+ e0ecf626977c162c14f62f8503bc1cd6  gcc/testsuite/gm2/dynamic/pass/testbec41.mod
+ 6708e92d76e93e179c00f880b4847090  gcc/testsuite/gm2/dynamic/pass/testbec42.mod
+ a7bdfe3982c051f3f48c12052c51bc42  gcc/testsuite/gm2/dynamic/pass/testbec43.mod
+ e28f434563ed288159e1a4d4b836002e  gcc/testsuite/gm2/dynamic/pass/testbec44.mod
+ c3b49630fb3896c78b2484ccf70634a1  gcc/testsuite/gm2/dynamic/pass/testbec45.mod
+ 59ebff35df33ddce657d577cf78b5468  gcc/testsuite/gm2/dynamic/pass/testbec5.mod
+ 1ed746ea9abe12e2f9e5ac2afc170801  gcc/testsuite/gm2/dynamic/pass/testbec6.mod
+ 8481f1a89179470aa76d7f8dd11788a6  gcc/testsuite/gm2/dynamic/pass/testbec7.mod
+ 829107f8517e8c42a0b7bc275d43a175  gcc/testsuite/gm2/dynamic/pass/testbec8.mod
+ 6de1d72c28f7bac5b5088b478f3e80d3  gcc/testsuite/gm2/dynamic/pass/testbec9.mod
+ 4b964a86ae726a1a1da3780feb3b8907  gcc/testsuite/gm2/dynamic/pass/testdavid.mod
+ e9074a173b5259d1b89e149a01589b5b  gcc/testsuite/gm2/dynamic/pass/testdiv.mod
+ e0bf5dc26be8a7ffe17f8711f9d0229a  gcc/testsuite/gm2/dynamic/pass/testexp.mod
+ 4db68a21e3725c67c7ac2d97f67ea1f8  gcc/testsuite/gm2/dynamic/pass/testfor.mod
+ 9a988da6a4116b7e12ffd22e352bc066  gcc/testsuite/gm2/dynamic/pass/testfor2.mod
+ 533999ed61af77e018164286b8774363  gcc/testsuite/gm2/dynamic/pass/testfunc.mod
+ 2b30a1cdc79342424bde44595269b965  gcc/testsuite/gm2/dynamic/pass/testfunc2.mod
+ 7e936ecd180148830381775044c31a7a  gcc/testsuite/gm2/dynamic/pass/testfunc3.mod
+ 8d767757cd16bdcd44f84cffc9a72f23  gcc/testsuite/gm2/dynamic/pass/testfunc4.mod
+ cddf7714e8b60078255afca83244e7a7  gcc/testsuite/gm2/dynamic/pass/testfunc5.mod
+ 8ebee317f045fbfe60f51846214bc054  gcc/testsuite/gm2/dynamic/pass/testfunc6.mod
+ ddf75d46db9fc05793bd08d8aa69d979  gcc/testsuite/gm2/dynamic/pass/testif.mod
+ 69c1df97bca805bfac341395d03ac3c1  gcc/testsuite/gm2/dynamic/pass/testit.mod
+ b5fce87611449924038294466967a89e  gcc/testsuite/gm2/dynamic/pass/testloop.mod
+ 0440be6db467df72d2244090711487a7  gcc/testsuite/gm2/dynamic/pass/testloop2.mod
+ b7c6cd212eb58226573e99638be09d00  gcc/testsuite/gm2/dynamic/pass/testloop3.mod
+ 6309e9e6d182b0b1a65ab7b90ca089d8  gcc/testsuite/gm2/dynamic/pass/testloop4.mod
+ 46126e85552e03c90957eb538d9f07cb  gcc/testsuite/gm2/dynamic/pass/testloop5.mod
+ b3d8f2f7be70e5095e5117add137c3d6  gcc/testsuite/gm2/dynamic/pass/testmin.mod
+ 409da4b78c0fc7d861a622e28e9035f1  gcc/testsuite/gm2/dynamic/pass/testnum4.mod
+ d43afca017b45e72be4ea8a800632a4a  gcc/testsuite/gm2/dynamic/pass/testord.mod
+ 0dfb03f4fdc7aa500919b1ce699a0c44  gcc/testsuite/gm2/dynamic/pass/testparam.mod
+ fd74cb161932e961aeee3f3424fc7dff  gcc/testsuite/gm2/dynamic/pass/testparam2.mod
+ 1f1adbd8785d1b11b5e5c6fd59878eaf  gcc/testsuite/gm2/dynamic/pass/testproc.mod
+ 916d253edf0216aa6a05a3013d95f80e  gcc/testsuite/gm2/dynamic/pass/testproc2.c
+ b48e246f82f8d4ea6d217db09efdd17c  gcc/testsuite/gm2/dynamic/pass/testproc2.def
+ a0ac250f3ddffe710e261842f3f12dd6  gcc/testsuite/gm2/dynamic/pass/testproc2.mod
+ 21a4a2c206414af553e98c022009eb2d  gcc/testsuite/gm2/dynamic/pass/testscn.mod
+ e40e4c2f2945b2615578dee16782098f  gcc/testsuite/gm2/dynamic/pass/testset.mod
+ e7da8e78e355513d05dc2e9142003cba  gcc/testsuite/gm2/dynamic/pass/testset2.mod
+ 33a5bdb5f9fd2b03c7e4fcc3194184ed  gcc/testsuite/gm2/dynamic/pass/testset3.mod
+ 3503fbfde7ad25b8a453d01ee04a0267  gcc/testsuite/gm2/dynamic/pass/teststr.c
+ 80ac9b0f914d334987701f5c4382f4c7  gcc/testsuite/gm2/dynamic/pass/teststr.mod
+ c253b4767f3b033edf55e83189021cb5  gcc/testsuite/gm2/dynamic/pass/teststr2.mod
+ 25db35f7e8fcdbd4e44a5e946f51528d  gcc/testsuite/gm2/dynamic/pass/teststring.mod
+ 9c5149754cd0fae51dbc7c7e5843700d  gcc/testsuite/gm2/dynamic/pass/testunbounded.mod
+ 3028b5ea514299b7b507faed98474ac4  gcc/testsuite/gm2/dynamic/pass/testwith.mod
+ 1d1918c66dc6092a319002631fb176bd  gcc/testsuite/gm2/dynamic/pass/testzero.mod
+ 8ca370572635d09208363a548175c222  gcc/testsuite/gm2/dynamic/pass/wc.mod
+ e89398b9451cbbf6acac8357112be31c  gcc/testsuite/gm2/embedded/pass/embedded-pass.exp
+ 267288255a37d2ed1aec5085cc95cc27  gcc/testsuite/gm2/embedded/pass/varataddress.mod
+ d6faec56a77a81badbef07619cac4623  gcc/testsuite/gm2/embedded/pass/varataddress1.mod
+ e9a2009d44fdbd3ac42d7b6cb091fe43  gcc/testsuite/gm2/embedded/pass/varataddress2.mod
+ 45d007240ca856abf7290af776bc5a3e  gcc/testsuite/gm2/embedded/pass/varataddress3.mod
+ 72cdcb20fb0bc304b6450b4687e2c716  gcc/testsuite/gm2/errors/fail/array1.mod
+ 4b934d4c7b65834470d0b4d42b1d55a4  gcc/testsuite/gm2/errors/fail/badexpr.mod
+ 604ba73cefe9cef918e32fc0a4222473  gcc/testsuite/gm2/errors/fail/badfor.mod
+ 5df468079bdaff39ae193d84b106a403  gcc/testsuite/gm2/errors/fail/badhigh.mod
+ fd20bd8f082cf7877272d5c38cf25db0  gcc/testsuite/gm2/errors/fail/badshift.mod
+ e9bb4f2b34ca31f67cf64ba38c53e4ed  gcc/testsuite/gm2/errors/fail/badsubexpradr.mod
+ 3bf3fdad7ac84acc08249c89282ea2a3  gcc/testsuite/gm2/errors/fail/binaryconst.mod
+ a1ff75d5b3074c746e2e507afe7cacb7  gcc/testsuite/gm2/errors/fail/binarygeneric.mod
+ daa7df11be2555fd40053e562964a10b  gcc/testsuite/gm2/errors/fail/binarygenericconst.mod
+ 5f0ba02dc58adc7420e4178eb32a14db  gcc/testsuite/gm2/errors/fail/end.mod
+ 40f95e2d9fec7a5a4aa83d76ac6b8469  gcc/testsuite/gm2/errors/fail/errors-fail.exp
+ 900098bebf32f55567a5c8080781e0a5  gcc/testsuite/gm2/errors/fail/mismatched.mod
+ 05f00bc56eeebe8fa0a738fa8185223a  gcc/testsuite/gm2/errors/fail/mismatchedproc.mod
+ fe33a7eb655943ceb5d7c7e0cd172516  gcc/testsuite/gm2/errors/fail/nestedproc4.mod
+ e9b453194e7e357ea22c184d815f4823  gcc/testsuite/gm2/errors/fail/nomodule.mod
+ 340423dda2b07e7b532ad7d532b38a60  gcc/testsuite/gm2/errors/fail/proctype.mod
+ 702a3b8f350dc83f3fb85e14c9911197  gcc/testsuite/gm2/errors/fail/prog110.mod
+ 15fb43b70a9a265589452c927d487979  gcc/testsuite/gm2/errors/fail/prog111.mod
+ c96b810859f2e6ef4edf5ff7dc529f4a  gcc/testsuite/gm2/errors/fail/prog113.mod
+ 249620d4807f8e0779564abdeeb7e621  gcc/testsuite/gm2/errors/fail/prog114.mod
+ 1c74513cb6b9e5a64bd9cee59f114c8b  gcc/testsuite/gm2/errors/fail/testaddress.mod
+ b216126a15c2f1df24c97bd8f2ad35ba  gcc/testsuite/gm2/errors/fail/testarray.mod
+ faa7a855b35a4e5dd95c265442dca3a7  gcc/testsuite/gm2/errors/fail/testbit.mod
+ c7227e5aef2e04956b54c83a17a5089b  gcc/testsuite/gm2/errors/fail/testbit2.mod
+ b2e683d47ba38167a78ab304d11a6bbc  gcc/testsuite/gm2/errors/fail/testcase.mod
+ c89b442f99164e238eac6613a62777a0  gcc/testsuite/gm2/errors/fail/testcomment.mod
+ 172c3ea670754d2deacc87441eefc3a4  gcc/testsuite/gm2/errors/fail/testcomment2.mod
+ 6c06517b56036f36e9ac120adf4a4fb4  gcc/testsuite/gm2/errors/fail/testcomment3.mod
+ a756dbf1dce68d4a94563f6f2ff02932  gcc/testsuite/gm2/errors/fail/testconst.mod
+ b001612dd8ae4dd67e6d56aa351ce60f  gcc/testsuite/gm2/errors/fail/testdyn.mod
+ c58772434c9305e0c5d1f186a52aaeb4  gcc/testsuite/gm2/errors/fail/testdyn2.mod
+ a6bc643db8b638307100a87e854fb7e3  gcc/testsuite/gm2/errors/fail/testdyn3.mod
+ 9e408a4d57d5234f441dcfcf5d115bc5  gcc/testsuite/gm2/errors/fail/testexp.mod
+ b316e865a35608a72c86519eed2c2b9b  gcc/testsuite/gm2/errors/fail/testfio.mod
+ 8b6650ef557295365b031a6e64c5517a  gcc/testsuite/gm2/errors/fail/testimport.mod
+ ea719b9ab573d62560575dc855573b99  gcc/testsuite/gm2/errors/fail/testimport2.def
+ ba6253c834bc64e8ff18c7f480c3366c  gcc/testsuite/gm2/errors/fail/testimport2.mod
+ 9c3a81391542664336e249daea04cc03  gcc/testsuite/gm2/errors/fail/testinit.mod
+ 5c2af1fbd1d7668c61d4310e32bc7213  gcc/testsuite/gm2/errors/fail/testmodule.mod
+ 9fcfc745b60957d441a78b04275b7261  gcc/testsuite/gm2/errors/fail/testnil.mod
+ c838a9cea450d138cff80456ec2d9796  gcc/testsuite/gm2/errors/fail/testnil2.mod
+ 6924c96a4a75c4f6d30bfc355ce8ca66  gcc/testsuite/gm2/errors/fail/testparam.mod
+ 9af6728c9c4450457a459d1f2518ce9e  gcc/testsuite/gm2/errors/fail/testproc.mod
+ 5921470be4ff91eb506c71899834dada  gcc/testsuite/gm2/errors/fail/testproc2.mod
+ ba33dfe4d30219d90500277015a714b1  gcc/testsuite/gm2/errors/fail/testsize.mod
+ 9a62196d25129195f0dc5dcddee75e3d  gcc/testsuite/gm2/errors/fail/teststring.mod
+ ce84b6e5956d2045cc4133c19b852f68  gcc/testsuite/gm2/errors/fail/testsub3.mod
+ 8894a7c0c8e52359751659e1e22f89af  gcc/testsuite/gm2/errors/fail/testsub4.mod
+ c92d89258ea4415f18d99a15d60924b5  gcc/testsuite/gm2/errors/fail/testtype.mod
+ d0543445bc9eac0320144c1748c699e2  gcc/testsuite/gm2/errors/fail/testvar.mod
+ da0709ccc3fd13b07d392d17de58ee7e  gcc/testsuite/gm2/errors/fail/testwith.mod
+ 0445d5d74ed2660686f27ea4947071c5  gcc/testsuite/gm2/errors/fail/testwrite.mod
+ f4786048f6d3d7fad5cf09b27b332f20  gcc/testsuite/gm2/errors/fail/type.mod
+ 37074459acfa9a68b4c6bc1d6ae259a4  gcc/testsuite/gm2/errors/fail/unarygeneric.mod
+ 68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/gm2/errors/mustfail
+ 7054cf0beb9a62521e9760c31dd7d529  gcc/testsuite/gm2/errors/options
+ f782465b24a5c28876d1e145d32d4e6d  gcc/testsuite/gm2/errors/testchar.mod
+ 4fcab4c7c6702b981524ecfe52bc63ea  gcc/testsuite/gm2/errors/testsub2.mod
+ 91337df885ce744116120bc5e9011586  gcc/testsuite/gm2/examples/callingC/pass/examples-callingC-pass.exp
+ 3585b7d87fd6e397d7595aaea07a819e  gcc/testsuite/gm2/examples/callingC/pass/hello.mod
+ 5c9f55a29388794be1501bba2fdfe929  gcc/testsuite/gm2/examples/callingC/pass/libprintf.def
+ 6e696af32835a08458b941ee9c14701d  gcc/testsuite/gm2/examples/callingC/run/pass/c.c
+ d8c7622d5e442f7f03150ba200854d4d  gcc/testsuite/gm2/examples/callingC/run/pass/c.def
+ 1e9f91663e47b19a91ca8a0a3a586951  gcc/testsuite/gm2/examples/callingC/run/pass/examples-callingC-run-pass.exp
+ 3585b7d87fd6e397d7595aaea07a819e  gcc/testsuite/gm2/examples/callingC/run/pass/hello.mod
+ 5c9f55a29388794be1501bba2fdfe929  gcc/testsuite/gm2/examples/callingC/run/pass/libprintf.def
+ 9b1ea64716f9741f93057ecf55e5651c  gcc/testsuite/gm2/examples/callingC/run/pass/m.mod
+ b8dbba1147e9f58ffb32bee2052ada46  gcc/testsuite/gm2/examples/cpp/pass/examples-cpp-pass.exp
+ c79f3fc8141103ba51b9920fbba67f2d  gcc/testsuite/gm2/examples/cpp/pass/hello.mod
+ ab49de0e8ddc7e0ab0477211d762e082  gcc/testsuite/gm2/examples/cppDef/pass/a.def
+ 366e2fe9e96671a8c08f36599adb0704  gcc/testsuite/gm2/examples/cppDef/pass/a.mod
+ 1cf0dd48d4f207bfc91ff4f54931c47b  gcc/testsuite/gm2/examples/cppDef/pass/b.mod
+ 3602fb0ba059e7d52aa10ae7309ecfdf  gcc/testsuite/gm2/examples/cppDef/pass/examples-cppDef-pass.exp
+ 5c9f55a29388794be1501bba2fdfe929  gcc/testsuite/gm2/examples/cppDef/pass/libprintf.def
+ 71b37f36a9159d29d52300b0494bae82  gcc/testsuite/gm2/examples/hello/pass/examples-hello-pass.exp
+ 005a4f8e755fd4bc126cc939a5219fb4  gcc/testsuite/gm2/examples/hello/pass/hello.mod
+ 81d3ea2e338afe8dceab45203db9622b  gcc/testsuite/gm2/examples/map/pass/AdvMap.def
+ ce5c06dd8ccd4257094b6d7fe0f6636f  gcc/testsuite/gm2/examples/map/pass/AdvMap.mod
+ 132183f754d393a1032979d5f4970193  gcc/testsuite/gm2/examples/map/pass/BoxMap.def
+ 7387b893fd77937cb206a439869baee0  gcc/testsuite/gm2/examples/map/pass/BoxMap.mod
+ 5d37d89391fba42f8b461bdf29f3f738  gcc/testsuite/gm2/examples/map/pass/Chance.def
+ 1897fd7e181b9490c5df1b90b27bde34  gcc/testsuite/gm2/examples/map/pass/Chance.mod
+ 4b0ddc0d958bf5d8eacfe1f4ee0f2624  gcc/testsuite/gm2/examples/map/pass/Find.def
+ 217f7bc3d46176754d27ca8de06253b9  gcc/testsuite/gm2/examples/map/pass/Find.mod
+ 7e63353986745a1d3892c26595e4faa7  gcc/testsuite/gm2/examples/map/pass/Geometry.def
+ bf7c8164c2fac2b572b4e67c2edb96e7  gcc/testsuite/gm2/examples/map/pass/Geometry.mod
+ ee003131be811a336fa65dc2fa8b5c2b  gcc/testsuite/gm2/examples/map/pass/MakeBoxes.def
+ 24844161485fcadd8e10b1e41c42e95b  gcc/testsuite/gm2/examples/map/pass/MakeBoxes.mod
+ cd717f331a7e946aa6f0e8f0eb78b2e8  gcc/testsuite/gm2/examples/map/pass/Map.mod
+ 7a15faf904896bf55f339ba4e53519b2  gcc/testsuite/gm2/examples/map/pass/RoomMap.def
+ dd78b0b91ea971eb655fa1c1c16f7291  gcc/testsuite/gm2/examples/map/pass/RoomMap.mod
+ 65336e80e9ce9fcffd4160b2650e2dfa  gcc/testsuite/gm2/examples/map/pass/Semantic.mod
+ da6ab92fd3dd620c63d62943c3a5812a  gcc/testsuite/gm2/examples/map/pass/StoreCoord.def
+ 623b87a418f18dba104d8f3f8415b70a  gcc/testsuite/gm2/examples/map/pass/StoreCoord.mod
+ da6ab92fd3dd620c63d62943c3a5812a  gcc/testsuite/gm2/examples/map/pass/StoreCoords.def
+ 0f3582d823dac9d70750d368064dd135  gcc/testsuite/gm2/examples/map/pass/StoreCoords.mod
+ 5faa42161d1564be2fbac0ac5107287f  gcc/testsuite/gm2/examples/map/pass/WriteMap.def
+ 984f2435f042117e1d11b236495373b5  gcc/testsuite/gm2/examples/map/pass/WriteMap.mod
+ bd874dae172d98b5dbb76c23c457deef  gcc/testsuite/gm2/examples/map/pass/examples-map-pass.exp
+ d9ff47dd8bc5f7a97c16830d1806dfba  gcc/testsuite/gm2/examples/map/pass/makemaps
+ e2aa9e881a9075b60e3169174fc95dc2  gcc/testsuite/gm2/examples/map/pass/testch2.mod
+ f976d784ff45c10d3377643aef37fd94  gcc/testsuite/gm2/examples/map/pass/testchan.mod
+ 4f1882f985c86c27fe597cb09425c95f  gcc/testsuite/gm2/examples/map/pass/testcoor.mod
+ 1903f0a502ca11b964d27261e5b3fa05  gcc/testsuite/gm2/examples/map/pass/testmaps
+ b47fc3bae5ff9546e05302b29c9f28b4  gcc/testsuite/gm2/exceptions/run/pass/cpp.cpp
+ 0d4c2240d44711287362bbfa2b9c58ba  gcc/testsuite/gm2/exceptions/run/pass/cpp.def
+ 162da730df28a6d67e3709da1fb797d8  gcc/testsuite/gm2/exceptions/run/pass/exceptions-run-pass.exp
+ 5dfbb5b9b594bdca8adb56dfdeeef1e0  gcc/testsuite/gm2/exceptions/run/pass/libexcept.mod
+ a0ccef882546315d1efff7d610ac9876  gcc/testsuite/gm2/exceptions/run/pass/m2test.def
+ 60f35975489507b9e88065f7c2133491  gcc/testsuite/gm2/exceptions/run/pass/m2test.mod
+ 9403a38fc40cf67492a5689d016409c1  gcc/testsuite/gm2/exceptions/run/pass/mycpp.cpp
+ e922016cce09163608fcd19b3f6574e5  gcc/testsuite/gm2/exceptions/run/pass/mycpp.def
+ a8136cdc04cc8b9ee85754bb8cb08606  gcc/testsuite/gm2/exceptions/run/pass/mym2.mod
+ 1d60661b2177000cd107e28eecf48a91  gcc/testsuite/gm2/exceptions/run/pass/mym2a.mod
+ a077c5772713ae8df581262f31eb41b6  gcc/testsuite/gm2/extensions/pass/align.mod
+ 96abb4f2cd136d007d8d37ecbbbee744  gcc/testsuite/gm2/extensions/pass/align2.mod
+ 00d60d08e77e65820b6a58dd0a771ce8  gcc/testsuite/gm2/extensions/pass/card16p.mod
+ 9491f86bae3539bf7aff50dbf150c453  gcc/testsuite/gm2/extensions/pass/card32p.mod
+ b06499ceaf68b189d8f06e4bc8f091b8  gcc/testsuite/gm2/extensions/pass/card64p.mod
+ 2f1c96969b039c40234d659c3df8f3b2  gcc/testsuite/gm2/extensions/pass/card8p.mod
+ 0118dec7aa9255411638430881c71af1  gcc/testsuite/gm2/extensions/pass/co.def
+ d159d4a216d3d0b11a27343572db5b4a  gcc/testsuite/gm2/extensions/pass/co.mod
+ 2cd98b49b9157043504f0cfab4defeff  gcc/testsuite/gm2/extensions/pass/extensions-pass.exp
+ b7f24156130b98e9254d039e04c3dce7  gcc/testsuite/gm2/extensions/pass/frame.mod
+ 2ba2a8a3162818fa4b3005cdc8c8c8ce  gcc/testsuite/gm2/extensions/pass/hello.mod
+ d94cf268405f6d781cf76011c4f44b8d  gcc/testsuite/gm2/extensions/pass/int16p.mod
+ 57eef0c4024ebf66e3d9b3fd5059668e  gcc/testsuite/gm2/extensions/pass/int32p.mod
+ 070718c3e8cedbfbf7de52f1844c5280  gcc/testsuite/gm2/extensions/pass/int64p.mod
+ 261fde70e790b820117f4ae44eb97471  gcc/testsuite/gm2/extensions/pass/int8p.mod
+ 15c237b555bd2fd8f5ba57d93e9d8f42  gcc/testsuite/gm2/extensions/pass/intsize8.mod
+ 0e28d95a61e7a4cfa672b7377c173e1b  gcc/testsuite/gm2/extensions/pass/jmp.mod
+ 776fbf9f96281bfef93d470a5414504a  gcc/testsuite/gm2/extensions/pass/libc.def
+ 70c7b761a63dc747727aa2798018b114  gcc/testsuite/gm2/extensions/pass/optparam.mod
+ 6f26b2905d1b0eb6eb2a7202002fc260  gcc/testsuite/gm2/extensions/pass/optparam2.mod
+ 489560c6e1607c7cee923238809668cf  gcc/testsuite/gm2/extensions/pass/return.mod
+ 377c012f670170d50a8f163bf721ffdd  gcc/testsuite/gm2/extensions/pass/set8.mod
+ 058986cbc2e8bccb371e06f4bb391970  gcc/testsuite/gm2/extensions/pass/set8a.mod
+ fc28f44846ac7d40a1fcd68808a61333  gcc/testsuite/gm2/extensions/pass/set8b.mod
+ e2b5c579814b64fc78fb6c6bcc07dc7d  gcc/testsuite/gm2/extensions/pass/testco.mod
+ 46596172e32b66cca818467a28251954  gcc/testsuite/gm2/extensions/run/fail/extensions-run-fail.exp
+ 9821650ee314cc2e367daa2d545cf9f2  gcc/testsuite/gm2/extensions/run/fail/intsize8.mod
+ 15008e06dae9d05871928b0212d55c06  gcc/testsuite/gm2/extensions/run/pass/align3.mod
+ 1dec57a2a2bdbe62a7eb9d8a6385e36e  gcc/testsuite/gm2/extensions/run/pass/align4.mod
+ 1fae7e2078bcc610e61b071f397c51f4  gcc/testsuite/gm2/extensions/run/pass/align5.mod
+ 43a2be3012bc591c4f66ed77c63cf48e  gcc/testsuite/gm2/extensions/run/pass/align6.mod
+ dd191008a327d4a4080fa4d7c1e49551  gcc/testsuite/gm2/extensions/run/pass/align7.mod
+ fa1057e0a274121fae53b8bf5c4b1c30  gcc/testsuite/gm2/extensions/run/pass/callingc.mod
+ 4a9182e3726ac393677870a0f1754d1d  gcc/testsuite/gm2/extensions/run/pass/card16p.mod
+ d987a6f00a5cd4182a087d99a48e5a95  gcc/testsuite/gm2/extensions/run/pass/card32p.mod
+ c358c7bf88ea586179fab8f69cf4163d  gcc/testsuite/gm2/extensions/run/pass/card64p.mod
+ adc26f7f9a7dcb3a14fddaf3f36958e1  gcc/testsuite/gm2/extensions/run/pass/card8p.mod
+ 43a099b052c9029ba649dd74ab85f56c  gcc/testsuite/gm2/extensions/run/pass/column.mod
+ 66842da4551c5e2094e0007be19255b4  gcc/testsuite/gm2/extensions/run/pass/cvararg.c
+ 798dae8a2322c8b68e4c14abc75b7087  gcc/testsuite/gm2/extensions/run/pass/cvararg.def
+ d976a27701627a4208c42d9409d2ae4e  gcc/testsuite/gm2/extensions/run/pass/extensions-run-pass.exp
+ d94cf268405f6d781cf76011c4f44b8d  gcc/testsuite/gm2/extensions/run/pass/int16p.mod
+ 57eef0c4024ebf66e3d9b3fd5059668e  gcc/testsuite/gm2/extensions/run/pass/int32p.mod
+ 070718c3e8cedbfbf7de52f1844c5280  gcc/testsuite/gm2/extensions/run/pass/int64p.mod
+ 7ca7be0fe1dbab96be62210e28523c44  gcc/testsuite/gm2/extensions/run/pass/int8field.mod
+ 261fde70e790b820117f4ae44eb97471  gcc/testsuite/gm2/extensions/run/pass/int8p.mod
+ 6aaab665b81cd7fadd524a196edfc064  gcc/testsuite/gm2/extensions/run/pass/packedrecord.mod
+ 887cf6b407754dcc0d2b76f7c06bcb50  gcc/testsuite/gm2/extensions/run/pass/packedrecord2.mod
+ 51bc21b8b2360b6ecb7fd21e4ef49158  gcc/testsuite/gm2/extensions/run/pass/real32.mod
+ 77fc65c01967a1eef55b9d65aad055a4  gcc/testsuite/gm2/extensions/run/pass/real32a.mod
+ 7a5bd62d8a41815f5eb09af3f33fa729  gcc/testsuite/gm2/extensions/run/pass/record.mod
+ d0d534462d39236a4854097918b02153  gcc/testsuite/gm2/extensions/run/pass/testopen.mod
+ d57d404053c6ef9d1aaa90cdc440ae24  gcc/testsuite/gm2/extensions/run/pass/vararg.mod
+ b0e857c488a0748f88965c8c5a784a79  gcc/testsuite/gm2/extensions/run/pass/vararg2.mod
+ 0e0d21632ac8fb41a3feab3ecd14b629  gcc/testsuite/gm2/extensions/run/pass/vararg3.mod
+ 3a5bea5d914d476c9a7a922b157ec8be  gcc/testsuite/gm2/fpu/pass/five.mod
+ 934cf47d4e98d6d7e59525459924c24d  gcc/testsuite/gm2/fpu/pass/fp.def
+ f421eb8626c024ae88d4db4325d7c4e5  gcc/testsuite/gm2/fpu/pass/fp.mod
+ a42244edbd91c6c007b19f4b61dc5b54  gcc/testsuite/gm2/fpu/pass/fpu-pass.exp
+ 1b9881eb40114bef9af8c751d9511564  gcc/testsuite/gm2/fpu/pass/one.mod
+ 8567fe0b3d8ab8ed7727a9c0ac0c9aad  gcc/testsuite/gm2/fpu/pass/r1.mod
+ 7b08cb9eda5c9dd6127fce04e999ae3a  gcc/testsuite/gm2/fpu/pass/realconst.mod
+ 4cc2d44904403466d4a76c00d2dcd1f7  gcc/testsuite/gm2/fpu/pass/testfp.mod
+ 28c2523b6f04f79033d83d278289e92c  gcc/testsuite/gm2/fpu/pass/testfp2.mod
+ dee54568f17413d8e57d550f0c4b83f8  gcc/testsuite/gm2/fpu/pass/testfpu1.mod
+ d96589c2c2844064714e9b438501b89f  gcc/testsuite/gm2/fpu/pass/testfpu2.mod
+ d08e0de57399712f8aa4cf7d257cf968  gcc/testsuite/gm2/fpu/pass/testfpu3.mod
+ 16c6c47aa8e76194eb5c0953f55f524c  gcc/testsuite/gm2/fpu/pass/testsin.mod
+ 97c343239f0900a1f6fd839fd3194b7b  gcc/testsuite/gm2/imports/run/pass/c.def
+ 8e6474927fa522c9ea64fd6594fd9e18  gcc/testsuite/gm2/imports/run/pass/c.mod
+ 48c0cf5ea49d03a552e19a6f02f8b86e  gcc/testsuite/gm2/imports/run/pass/imports-run-pass.exp
+ f4645b6089459f9007476e070d88845b  gcc/testsuite/gm2/imports/run/pass/innermods.mod
+ 2120b509216f2ca34896125e5617d5b2  gcc/testsuite/gm2/imports/run/pass/innermods2.mod
+ ab7792dc6d1aa671117c9b421280d6d9  gcc/testsuite/gm2/imports/run/pass/innermods3.mod
+ 8e84633caf8e5c825199e5905023fc0d  gcc/testsuite/gm2/imports/run/pass/innermods4.mod
+ 92be28abf3d11b72729375b0a65f2550  gcc/testsuite/gm2/imports/run/pass/innermods5.def
+ 3be04b3b76010112caa8cbdbb9565240  gcc/testsuite/gm2/imports/run/pass/innermods5.mod
+ c66145b0af0618ee84020843a22d9908  gcc/testsuite/gm2/imports/run/pass/innermods6.mod
+ 256dbba19f4ca30b6ff01288e2d9dd78  gcc/testsuite/gm2/integer/div.mod
+ cccbde1ebf75c02e69781b94808bfc22  gcc/testsuite/gm2/integer/expr.mod
+ 00e329fc870c25f01af1fd8446c10efc  gcc/testsuite/gm2/integer/mod.mod
+ 5ff2bc974bcddbecdb82c7deecd61e7c  gcc/testsuite/gm2/integer/mod2.mod
+ 0f1820e93fe79d0f99ea5b8bc017a823  gcc/testsuite/gm2/integer/one.mod
+ ca89c0aaa79731195df9b0950fd3d153  gcc/testsuite/gm2/integer/options
+ a6049d3d9ebcdf2ce4426a373493370d  gcc/testsuite/gm2/integer/zero.mod
+ be968abb5de1adcab9e44b065a2f04e9  gcc/testsuite/gm2/iso/analysis/fail/Makefile
+ c427119a3ef6aff5118dbc6c983c4af7  gcc/testsuite/gm2/iso/analysis/fail/arithoverflow.mod
+ c5ffb25c8903fd4c3270d742840ea480  gcc/testsuite/gm2/iso/analysis/fail/arithoverflow2.mod
+ 5041fec67f01eb19ebf09ad663233294  gcc/testsuite/gm2/iso/analysis/fail/arithsubcard.mod
+ 934cc7b4de10cad44f17768b0f7772aa  gcc/testsuite/gm2/iso/analysis/fail/arrayrange.mod
+ 6d5222844ccb3462f59a11dfc670b98a  gcc/testsuite/gm2/iso/analysis/fail/assignvalue.mod
+ 4432b24277705daae122530b239ef87c  gcc/testsuite/gm2/iso/analysis/fail/callassignment.mod
+ b9c93046ce48bd91ba676c9728ed96b4  gcc/testsuite/gm2/iso/analysis/fail/callassignment2.mod
+ 083698654edf015903ea0844c0beec30  gcc/testsuite/gm2/iso/analysis/fail/callassignment3.mod
+ c940ae09194a293bfb4ab9b2de81dade  gcc/testsuite/gm2/iso/analysis/fail/callassignment4.mod
+ 9c2642d2ee7cfabc2427c24d752d9034  gcc/testsuite/gm2/iso/analysis/fail/caserange.mod
+ b653bc6cb28996bf3bada6a912fcf38d  gcc/testsuite/gm2/iso/analysis/fail/decvalue.mod
+ e33c60fd3ac7a38f872e338f9a718f81  gcc/testsuite/gm2/iso/analysis/fail/forloop.mod
+ 696a9199f7222fe61ec2d3fc8ec625f2  gcc/testsuite/gm2/iso/analysis/fail/incvalue.mod
+ 720131914a8f408cc197baa879bb14f7  gcc/testsuite/gm2/iso/analysis/fail/iso-analysis-fail.exp
+ 2c2021fe25b158b9d6384aa1f94820be  gcc/testsuite/gm2/iso/analysis/fail/noreturn.mod
+ 5a3e9a4a9089931344916866a14fe3c6  gcc/testsuite/gm2/iso/analysis/fail/returnvalue.mod
+ 8e731a1c7867a36e9ee26de3938f03cf  gcc/testsuite/gm2/iso/analysis/fail/staticarray.mod
+ 2b66e42816724ad42f8f960914142c1a  gcc/testsuite/gm2/iso/check/fail/iso-check-fail.exp
+ 437990ba3723c0f4b1dbcdddb2cc37cc  gcc/testsuite/gm2/iso/check/fail/modulusoverflow.mod
+ 52d1a8cb2fc648e4f76b6d73d7270a57  gcc/testsuite/gm2/iso/extended-opaque/pass/iso-extended-opaque-pass.exp
+ b45afeaab70f1f8a13e0efe9b2520a3c  gcc/testsuite/gm2/iso/extended-opaque/pass/stressset.def
+ 5769b725a73103f0bfd47f99925f7b77  gcc/testsuite/gm2/iso/extended-opaque/pass/stressset.mod
+ 5f617579b6549693c5867d12168bd834  gcc/testsuite/gm2/iso/extended-opaque/pass/testset.mod
+ 2aeb1840a853d9bd6dd61d9278a7b6a1  gcc/testsuite/gm2/iso/fail/badarray.mod
+ 5d08cec83a9fd8cfa6b718baa93a2715  gcc/testsuite/gm2/iso/fail/badarray2.mod
+ a4434fc135822edf23c851e5f90882b2  gcc/testsuite/gm2/iso/fail/badipv4.mod
+ f593f212781741b8aa437f58c318720a  gcc/testsuite/gm2/iso/fail/bug10.mod
+ cbba0194d3c34b32af7b1bc671474c98  gcc/testsuite/gm2/iso/fail/bug8.mod
+ 84b83814bc8182b14296d50e0b2f705c  gcc/testsuite/gm2/iso/fail/bug9.mod
+ e4dede7c80ce403220be96de9128ce0c  gcc/testsuite/gm2/iso/fail/case.mod
+ dd08c955646490815b28161b833dccd3  gcc/testsuite/gm2/iso/fail/case2.mod
+ 09073ccb0cff3bcb4eb4162e8d8ed9d7  gcc/testsuite/gm2/iso/fail/case3.mod
+ 9d55e4ce4a92834a9afc2c8140c673a1  gcc/testsuite/gm2/iso/fail/const1.mod
+ c1980a81a6727427469b3726d5de433b  gcc/testsuite/gm2/iso/fail/constarray.mod
+ cffadd3bd945b8bb5a8bae2de8463c28  gcc/testsuite/gm2/iso/fail/constarray2.mod
+ 03d466354bd25c8254dca51a65cb9681  gcc/testsuite/gm2/iso/fail/constprocedure.mod
+ 3cb1bbfa1604b9e6cc1b43df60f866ad  gcc/testsuite/gm2/iso/fail/constrecord.mod
+ a8827661db356eb8fe3aae4bffb1deb7  gcc/testsuite/gm2/iso/fail/constrecord2.mod
+ 6e3ec3631df6599216792bf1991e0fbd  gcc/testsuite/gm2/iso/fail/constrecord3.mod
+ 3ffd37fed98f69e69af9d930e9a86876  gcc/testsuite/gm2/iso/fail/constsubrange.mod
+ 8cd75979edf8234541dc58c2f7704add  gcc/testsuite/gm2/iso/fail/constsubrange2.mod
+ 4e821bb67abc742b556822995a64ea5e  gcc/testsuite/gm2/iso/fail/constsubrange3.mod
+ ff4a487c9d5136bf523dc22714e1b20c  gcc/testsuite/gm2/iso/fail/defa.def
+ 4a1db953e98692055dccdc1c8fc43159  gcc/testsuite/gm2/iso/fail/defa.mod
+ d02d78bb93f0658a3d36c1485c37968a  gcc/testsuite/gm2/iso/fail/defb.def
+ 3c6b5115568c4d660aa89060b63544f8  gcc/testsuite/gm2/iso/fail/defb.mod
+ 66483d309fe3d367831e86c4a5dcd488  gcc/testsuite/gm2/iso/fail/defc.def
+ 3df68a547b9ef8e6eff176a40576d573  gcc/testsuite/gm2/iso/fail/defc.mod
+ da1fbaf8a9296190ba11825db23d9833  gcc/testsuite/gm2/iso/fail/except.mod
+ 6a210956056936ebaf10f352041bcedb  gcc/testsuite/gm2/iso/fail/except2.mod
+ 0f4bb16d13f6e60ff985c8c948544fad  gcc/testsuite/gm2/iso/fail/iso-fail.exp
+ d05962556fff96387eda28344ea5982c  gcc/testsuite/gm2/iso/fail/isoa.def
+ dd34b06f9745b0471d4dcdd1151794b8  gcc/testsuite/gm2/iso/fail/isoa.mod
+ f8f0e42d0cb5dd05e9e09532e59be906  gcc/testsuite/gm2/iso/fail/lengthsubexpr.mod
+ ed27c2d624cf61637162923e09064d02  gcc/testsuite/gm2/iso/fail/proc.mod
+ 6f32d7b5c03fc7e1f30b34bc9dc3b73e  gcc/testsuite/gm2/iso/fail/realbitscast.mod
+ cd05f4056e7fa080d31647f017a369f3  gcc/testsuite/gm2/iso/fail/varient.mod
+ ed6563e70916bce0539862ce8bf92344  gcc/testsuite/gm2/iso/fail/varient2.mod
+ a0958c3dc000796522d937a4dabacd02  gcc/testsuite/gm2/iso/future/builtinlj.mod
+ e273c20f84c8903127d8249e93f9bfac  gcc/testsuite/gm2/iso/pass/ChanConsts.def
+ b548e6cf07722a4141620bf090c7453a  gcc/testsuite/gm2/iso/pass/ChanConsts.mod
+ caf84488da0bce55089b2013cd24fe93  gcc/testsuite/gm2/iso/pass/ConvTypes.def
+ e39633acce4e1ece9cf66f5e55bfdc2b  gcc/testsuite/gm2/iso/pass/ConvTypes.mod
+ 3acbb7dfd228d2022ab81e451c0b0b30  gcc/testsuite/gm2/iso/pass/addadr1.mod
+ 05fb03679c613c4a87ec38cbabc4bd4a  gcc/testsuite/gm2/iso/pass/bits32c.mod
+ 80a933e785e7f01fd66919afb4d97dbc  gcc/testsuite/gm2/iso/pass/callwraptime.mod
+ 43aa28cf0a47f5280df351135f9b35a4  gcc/testsuite/gm2/iso/pass/caseiso.mod
+ 27c524f8df73458995bc9986e388d82f  gcc/testsuite/gm2/iso/pass/caseiso2.mod
+ 273b62683451c2fa93f6280ed105093c  gcc/testsuite/gm2/iso/pass/cast.mod
+ 11e82be89e73541cb8cfc7c0044222df  gcc/testsuite/gm2/iso/pass/cast3.mod
+ 27208d04b118ecde283f802d3e28fa44  gcc/testsuite/gm2/iso/pass/castiso.mod
+ dbe7015e51bbff81976034d4c406d2eb  gcc/testsuite/gm2/iso/pass/const1.mod
+ 870e7494b8c7657c19d2b33a8a0fd151  gcc/testsuite/gm2/iso/pass/constreal.mod
+ bed1839c38c5dcbe4e349be2506bd12b  gcc/testsuite/gm2/iso/pass/constructor1.mod
+ 68e0b43e3fd5752f8f9846e3b9db26a7  gcc/testsuite/gm2/iso/pass/constructor2.mod
+ dd860aba1682b0a72c1480ccf6adf17f  gcc/testsuite/gm2/iso/pass/constructor3.mod
+ 8d0fd285a7eab3abebc0f75835a0cc37  gcc/testsuite/gm2/iso/pass/constructor4.mod
+ 05f94c162c8834ea7d5e2195dfc91372  gcc/testsuite/gm2/iso/pass/constructor5.mod
+ ceb9263854583e4281eba6f4f243b08f  gcc/testsuite/gm2/iso/pass/constructor6.mod
+ b2886388ec602bee4d15ac4312db8e06  gcc/testsuite/gm2/iso/pass/constsize4.mod
+ 9e26320e98a2493f1d4c1d9a0ee486d4  gcc/testsuite/gm2/iso/pass/delim.mod
+ 14b1c8dfb0129ea08182a7e929acba7e  gcc/testsuite/gm2/iso/pass/delim2.mod
+ 06b0baf6718be827434fe1beb451da51  gcc/testsuite/gm2/iso/pass/enummodule.mod
+ ddc6aebab5f51939e8d3f7ff7f77c6e8  gcc/testsuite/gm2/iso/pass/except1.mod
+ c36139631daa5f71b97439df4c9d9968  gcc/testsuite/gm2/iso/pass/expproc.mod
+ 1af42c7c84e203d3875f8c6ddc86590f  gcc/testsuite/gm2/iso/pass/expproc2.mod
+ 3fe468860f7089969a8e565d4fb92120  gcc/testsuite/gm2/iso/pass/iso-pass.exp
+ c5438dbcad84d5d3f68ba0b2fa38ab85  gcc/testsuite/gm2/iso/pass/isob.def
+ 9d7f426376e9d6ffd2e838ec2f107007  gcc/testsuite/gm2/iso/pass/isob.mod
+ 1c8e0e2855304c5ab461a3df75482110  gcc/testsuite/gm2/iso/pass/isobitset.mod
+ bf612e7d4b783c9e3495dec78e22634f  gcc/testsuite/gm2/iso/pass/isobitset2.mod
+ 5098f5609c0fb8e2e4faf8952d01dbf5  gcc/testsuite/gm2/iso/pass/longm.mod
+ 7caed1298e8e2fbc90e6fd77362e42f6  gcc/testsuite/gm2/iso/pass/m.mod
+ 4aadbdc5a6663a31ae9d1d45a3ae1484  gcc/testsuite/gm2/iso/pass/proccast.mod
+ 8e92d1b76d700c108585fbcb6420ea2c  gcc/testsuite/gm2/iso/pass/realbitscast.mod
+ 238d44ce7ade63d31b039cc51513a564  gcc/testsuite/gm2/iso/pass/set12.mod
+ 744399262592238aa803f52f5c079be7  gcc/testsuite/gm2/iso/pass/stringchar.mod
+ 4673308df9fe8082809963a37af79361  gcc/testsuite/gm2/iso/pass/subassign.mod
+ de6f6670582027aff90b457bfa265df7  gcc/testsuite/gm2/iso/pass/testaddindr.mod
+ ba73c26b618cd4271ea39395fad7d108  gcc/testsuite/gm2/iso/pass/testconv.def
+ dfca0dd59c3c7312a6b41fa51e0b066b  gcc/testsuite/gm2/iso/pass/testconv.mod
+ ef8de4947ae4021eec580c95483a4201  gcc/testsuite/gm2/iso/pass/testconv2.def
+ b47a3b6539789604b78c3a59b12dbfd0  gcc/testsuite/gm2/iso/pass/testconv2.mod
+ 2484172d14af2f08507f0df169a71631  gcc/testsuite/gm2/iso/pass/testconv3.mod
+ 20629a1e5119de086d6c7394f703ff06  gcc/testsuite/gm2/iso/pass/testconv4.mod
+ 38d00810d35d4970781cae7fe630fad1  gcc/testsuite/gm2/iso/pass/testconv5.mod
+ 0f5d4acd281a7a5286ceda25e9be4f06  gcc/testsuite/gm2/iso/pass/testconv6.mod
+ d1f180c96da9d5e8cabd96c54e068e92  gcc/testsuite/gm2/iso/pass/testconv7.mod
+ 1ecfec0c1aa78d6b210c8362508307e7  gcc/testsuite/gm2/iso/pass/testconv8.mod
+ 631b2bb0545a3ce15efde81aabada79a  gcc/testsuite/gm2/iso/pass/testconv9.mod
+ c990097fac8bff10e590be24b46e0e9b  gcc/testsuite/gm2/iso/pass/testiso.mod
+ bc4977bf6cc7fd0f40da9e7aa12602fe  gcc/testsuite/gm2/iso/pass/testiso2.mod
+ ab2ebff36ce756677ac31a2944ca8a12  gcc/testsuite/gm2/iso/pass/testisosize.mod
+ 6750816be2827f05d367e13863c2488b  gcc/testsuite/gm2/iso/pass/testlength.mod
+ 1ff1ea507a181fc81b6f3880abfa35a2  gcc/testsuite/gm2/iso/pass/testlength2.mod
+ 226b0e662943c04cb38d0bca0bfc3091  gcc/testsuite/gm2/iso/pass/testlength3.mod
+ e9bd0ecc9dd48042c7ba73738af78def  gcc/testsuite/gm2/iso/pass/testlength4.mod
+ 38595f1720fe2e59181ecadb8f1bb6f4  gcc/testsuite/gm2/iso/pass/testlength5.mod
+ a8dfff8749defc38e520cb1cb7e81369  gcc/testsuite/gm2/iso/pass/unbounded.mod
+ e189208c21019fb1a7863f3962e87c90  gcc/testsuite/gm2/iso/pass/unbounded2.mod
+ d71a6ac0e0221fe50dc256107211dd31  gcc/testsuite/gm2/iso/run/pass/adraddress.mod
+ 68113bc0c0aa774be83e0af4a4e7ba12  gcc/testsuite/gm2/iso/run/pass/adrunbounded3.mod
+ 121d71fd48fd99bf056f3b7aea7e0e93  gcc/testsuite/gm2/iso/run/pass/baseimport.mod
+ 65d3849661c7903f9ca8189e50514102  gcc/testsuite/gm2/iso/run/pass/compsize.mod
+ b608ff9e7423b8fdeb8fd6a83709a0fd  gcc/testsuite/gm2/iso/run/pass/concurrentstore.mod
+ 78e887b8f24e014b6e6b34f71b91915f  gcc/testsuite/gm2/iso/run/pass/constprocedure.mod
+ ee63f51af90a190018b96e17aa2c2443  gcc/testsuite/gm2/iso/run/pass/constructor1.mod
+ 4196c0d5e4d26c006a27e937a231c7cb  gcc/testsuite/gm2/iso/run/pass/constructor2.mod
+ 7b2fcdc6261cbefe83d48f9a7e242eda  gcc/testsuite/gm2/iso/run/pass/conststrarray.mod
+ 47411b6568e03dac16a9864783269f5a  gcc/testsuite/gm2/iso/run/pass/contimer.mod
+ 242408544a85a41bde4331e2cdc43cbd  gcc/testsuite/gm2/iso/run/pass/except.c
+ 9aa061ffb83b605de1bedd862a17d511  gcc/testsuite/gm2/iso/run/pass/except2.mod
+ 9f23a8f311a1d0efa35ee25f237c7ea8  gcc/testsuite/gm2/iso/run/pass/except3.cpp
+ ba514aa29332bacc0035fe9edad9d4c4  gcc/testsuite/gm2/iso/run/pass/except4.mod
+ 85f01880a2418f7ec3d72ee3ab45ab44  gcc/testsuite/gm2/iso/run/pass/except5.cpp
+ 517736f3e4685a93515bb5ea51dd7019  gcc/testsuite/gm2/iso/run/pass/except5.mod
+ 4105cfa2e76a27e78f01e15babb55ee9  gcc/testsuite/gm2/iso/run/pass/except6.cpp
+ d8b017fce021a48a38acf23ef7022b6c  gcc/testsuite/gm2/iso/run/pass/except7.mod
+ 04ba215916e7b57b916c2e62ed91edb7  gcc/testsuite/gm2/iso/run/pass/except8.mod
+ 3a33d4ad03e135b09aa4cc11e6585e21  gcc/testsuite/gm2/iso/run/pass/fileio.def
+ 159695faf1dbe033f4bdae12a3c1cd48  gcc/testsuite/gm2/iso/run/pass/fileio.mod
+ 5b867827747aed9a1a9fb833804c50c3  gcc/testsuite/gm2/iso/run/pass/hello.mod
+ 6c43786a6103c10ca7df3fb5094e1ce7  gcc/testsuite/gm2/iso/run/pass/int8field.mod
+ bd84b85a4aea039cace1cdb2c47ad316  gcc/testsuite/gm2/iso/run/pass/iso-run-pass.exp
+ 78b19b6a53ad0f68a754cdbef5b02acc  gcc/testsuite/gm2/iso/run/pass/long.mod
+ 2368215508e35ca63735123b24dbd9ab  gcc/testsuite/gm2/iso/run/pass/long2.mod
+ 53e603c239ad4622684dde9c1e8421fb  gcc/testsuite/gm2/iso/run/pass/long3.mod
+ 3e9aea64035e591be34ca0f395c7db6e  gcc/testsuite/gm2/iso/run/pass/long4.c
+ a41aa2876a78259fcb150b4c9acea2bc  gcc/testsuite/gm2/iso/run/pass/long4.mod
+ eecc4d338e2a2a888d615b86ee87929e  gcc/testsuite/gm2/iso/run/pass/minmax.mod
+ e011dc8b55ca1eab0785cef2ccdbf70e  gcc/testsuite/gm2/iso/run/pass/modulus.mod
+ 65216817410e2be29939a9fa49eb5014  gcc/testsuite/gm2/iso/run/pass/nestediso.mod
+ 4c9638e17b4ef87de400affbf2e07b93  gcc/testsuite/gm2/iso/run/pass/nestedrecord.mod
+ 74bba631144f40fc8ab095efc0efc0c3  gcc/testsuite/gm2/iso/run/pass/onebyte.mod
+ e065a11aad8d3334009e6bf5cc07d763  gcc/testsuite/gm2/iso/run/pass/onebyte2.mod
+ fb11b2a9365b1717ae526deb38c41220  gcc/testsuite/gm2/iso/run/pass/onebyte3.mod
+ 25201faaf28b8a667bc48c5c05add5b6  gcc/testsuite/gm2/iso/run/pass/packed.mod
+ a392f2b779747b49f3bf8c1425b4f578  gcc/testsuite/gm2/iso/run/pass/proc.c
+ ae1b3c93233365bbbcb2f5542962646a  gcc/testsuite/gm2/iso/run/pass/proc.mod
+ 63a34382ce27483885e44450151679a1  gcc/testsuite/gm2/iso/run/pass/proc2.mod
+ 0e331f85f9cbbd156ac97565d33fda86  gcc/testsuite/gm2/iso/run/pass/returnrecord.mod
+ 8fedf77113d653a5d34a508088470225  gcc/testsuite/gm2/iso/run/pass/shift.mod
+ 3f14a46336d423e5cb9de1c089eea96a  gcc/testsuite/gm2/iso/run/pass/shift2.mod
+ e11beea7b7818fdfd024c43f20393bd9  gcc/testsuite/gm2/iso/run/pass/shift3.mod
+ ac46225adaf10940cda4fe816a959fae  gcc/testsuite/gm2/iso/run/pass/shift4.mod
+ 9e2ec46d1082af9566a6c5fa049fd312  gcc/testsuite/gm2/iso/run/pass/simple
+ 0fa8f6bac59d5b939cee67f911d96f9d  gcc/testsuite/gm2/iso/run/pass/simplelarge.mod
+ 9faeaea3c4d878cb86d98cb51b4ee431  gcc/testsuite/gm2/iso/run/pass/strcons.mod
+ 60a7bd468fc8261e7b7dc9630d14b2d9  gcc/testsuite/gm2/iso/run/pass/strcons2.mod
+ 1f9a23a64b9cea7c69a1b943d90754fd  gcc/testsuite/gm2/iso/run/pass/t.cpp
+ 16c27bfa440aa6625203fa682eb0abc2  gcc/testsuite/gm2/iso/run/pass/t1.cpp
+ 16aea3bbcc34c8fd20153cc663287042  gcc/testsuite/gm2/iso/run/pass/testLength.mod
+ 31f73a7b9921b81db0836fefb79b1a18  gcc/testsuite/gm2/iso/run/pass/testarray.mod
+ 7bf6b9debcb93e4d790de77b832f7e02  gcc/testsuite/gm2/iso/run/pass/testgeneric.mod
+ 2099fa3a5b7dcee8b0ecac40aba33545  gcc/testsuite/gm2/iso/run/pass/testlarge.mod
+ b0965c512d33d48ba22ab6ec0cbb43e1  gcc/testsuite/gm2/iso/run/pass/testsystem.mod
+ 55a2e1b2fa8f3546a13e3bc16789e644  gcc/testsuite/gm2/iso/run/pass/tinyconst.mod
+ 6b3c53dbe456b9b80f18c5392bcd61eb  gcc/testsuite/gm2/iso/run/pass/tinyconst2.mod
+ 26361435d9dff9b02335fdb966c2811a  gcc/testsuite/gm2/iso/run/pass/tinyconst3.mod
+ b24900febfdfad186382a5eef49415f0  gcc/testsuite/gm2/iso/run/pass/tinyconst4.mod
+ f4862c298d34a637affbb160bbca2bae  gcc/testsuite/gm2/iso/run/pass/tinyconst5.mod
+ 2e161d44b8e1c5d5ebd54620d9fa74d0  gcc/testsuite/gm2/iso/run/pass/tinytimer.mod
+ 12d014839fd944c18ab91237d00b9141  gcc/testsuite/gm2/iso/run/pass/trivialmodulus.mod
+ e6d7023449a87a619b39b0821577da48  gcc/testsuite/gm2/iso/run/pass/tsize.mod
+ b829f3ee3c40213eaaf864a21394c40a  gcc/testsuite/gm2/iso/run/pass/tsize2.mod
+ b8d96074465527e860a1ca7a78a446bc  gcc/testsuite/gm2/iso/run/pass/tstLength.mod
+ f4d5a12f3ce22b5805675fc896e69234  gcc/testsuite/gm2/iso/run/pass/unbounded.mod
+ c6cf20a6048313926b0b504f0fdad9bf  gcc/testsuite/gm2/iso/run/pass/unbounded2.mod
+ c58783000fdf657d736883de5f9c0e66  gcc/testsuite/gm2/iso/run/pass/unbounded3.mod
+ 0b62c6cb074f0f2d24e2a8cd6f237a22  gcc/testsuite/gm2/iso/run/pass/unbounded4.mod
+ 6ead12c66c8ef0e5b5baf78c0322a221  gcc/testsuite/gm2/iso/run/pass/unbounded5.mod
+ 551555d9f7289fa22a8cb37a9afee053  gcc/testsuite/gm2/iso/run/pass/unbounded6.mod
+ c858924bce721c82b81fe5971d941525  gcc/testsuite/gm2/iso/run/pass/unbounded7.mod
+ 921f10b539ea9de80e580a163c6a1592  gcc/testsuite/gm2/iso/run/pass/unbounded8.mod
+ 2953f3f6c049c7e320944ef21086898c  gcc/testsuite/gm2/isocoroutines/run/pass/coroutine.mod
+ c6c371c1694503977255f86cf5bf9a77  gcc/testsuite/gm2/isocoroutines/run/pass/isocoroutines-run-pass.exp
+ 5f42d4cb86819e23d09f17a63fe55119  gcc/testsuite/gm2/isolib/run/pass/arraycons.mod
+ 621b2a675979737e813f6e7921dd1f57  gcc/testsuite/gm2/isolib/run/pass/arraycons2.mod
+ 649d6c8370932f49c3c981cf1b5bd669  gcc/testsuite/gm2/isolib/run/pass/arraycons3.mod
+ 090eb44653c33d7a1d3377937d833878  gcc/testsuite/gm2/isolib/run/pass/arraycons5.mod
+ e69f9123c984a5f4de915dcb49c67992  gcc/testsuite/gm2/isolib/run/pass/arraycons6.mod
+ 718e89969390e3e7adeea14dfe963ed6  gcc/testsuite/gm2/isolib/run/pass/arraycons7.mod
+ 1e65295c2ffeb33de36245c4c2453cfb  gcc/testsuite/gm2/isolib/run/pass/arrayconst8.mod
+ 3947c18e6636302adab226a6d22e6184  gcc/testsuite/gm2/isolib/run/pass/exceptiontest.mod
+ 82e1e875df02390dde672cc092c6a52c  gcc/testsuite/gm2/isolib/run/pass/filepos.mod
+ 6bff3360ddd264152005b5075b864933  gcc/testsuite/gm2/isolib/run/pass/hello.mod
+ 0d5737786fade9dd892b24e28ec8a02e  gcc/testsuite/gm2/isolib/run/pass/insert.mod
+ e05c5d708e4a400c5fb8dc3bba5563ba  gcc/testsuite/gm2/isolib/run/pass/intconv.mod
+ 8b87db7905044a9f661c0a454fd656a7  gcc/testsuite/gm2/isolib/run/pass/isolib-run-pass.exp
+ fa2d96397ca227b193a0d90776b72945  gcc/testsuite/gm2/isolib/run/pass/longstr.mod
+ ee4f4587ab8a344c634f4734daca875f  gcc/testsuite/gm2/isolib/run/pass/openlibc.mod
+ 737c28bca38981081d331976893f69e5  gcc/testsuite/gm2/isolib/run/pass/raise.mod
+ 789764d859e119c65fb37d5f4c9331b5  gcc/testsuite/gm2/isolib/run/pass/raise2.mod
+ 4945d6c18abfb09ca6e1208608c34208  gcc/testsuite/gm2/isolib/run/pass/readreal.mod
+ 35e3a17374e826a28640d961e208ac7f  gcc/testsuite/gm2/isolib/run/pass/real1.mod
+ eede0c581979969aea0b76b074615eb7  gcc/testsuite/gm2/isolib/run/pass/real2.mod
+ 322de1411e78bc36fa2b78438fa38a9c  gcc/testsuite/gm2/isolib/run/pass/real3.mod
+ 68baefe452621d636165c7627f8fe3f1  gcc/testsuite/gm2/isolib/run/pass/realconv.mod
+ 7a82b793fe5bff4bdea68a1eff97b46d  gcc/testsuite/gm2/isolib/run/pass/realconv2.mod
+ ffe3859b8cbbed7ff7dedbdc8ba61bdf  gcc/testsuite/gm2/isolib/run/pass/realstr.mod
+ 443c40937dbf55c93e28bda7293d92f9  gcc/testsuite/gm2/isolib/run/pass/sigfig.mod
+ f9fbb418b92d420ebb3f6a854efc8622  gcc/testsuite/gm2/isolib/run/pass/stringreal2.mod
+ e98acdda8385726dbc5cb5a3390a50c8  gcc/testsuite/gm2/isolib/run/pass/termfile.mod-disabled
+ dc2a1d9cbb699aea2bb0228df7dc3bab  gcc/testsuite/gm2/isolib/run/pass/testappend.mod
+ 3c2b8785cd9a160a4d9c0557e6712778  gcc/testsuite/gm2/isolib/run/pass/testinput
+ c52fa331117eec4f92c2d39dc4aebd31  gcc/testsuite/gm2/isolib/run/pass/testio.mod
+ 440f50991d6576420a0c429b4325688c  gcc/testsuite/gm2/isolib/run/pass/testio2.mod
+ a0258029a47ea22b2a2b407eee876964  gcc/testsuite/gm2/isolib/run/pass/testmem.mod
+ b0db180b49d8a548d336623cfa95886b  gcc/testsuite/gm2/isolib/run/pass/testmem2.mod
+ 4cb5e85fdcafc58f3b09f42c156b108c  gcc/testsuite/gm2/isolib/run/pass/testnumber
+ 6c6edbd10f860aaf9371f352826b9106  gcc/testsuite/gm2/isolib/run/pass/tiny.mod
+ d090d3879801d41d7c6558ac9d7a72a7  gcc/testsuite/gm2/isolib/run/pass/tiny2.mod
+ 05532bafc054ae01df9117b40867ddab  gcc/testsuite/gm2/isolib/run/pass/tiny3.mod
+ 2a2cf97dffad96d62283f09f87ed0d96  gcc/testsuite/gm2/isolib/run/pass/tiny4.mod
+ 2af224884c7fd21f0af607da12e090cc  gcc/testsuite/gm2/isolib/run/pass/tiny5.mod
+ c09eee246d1722077e9740755ba921ad  gcc/testsuite/gm2/libs/a.def
+ 401be10a7c2b78bf15c555d81fbff436  gcc/testsuite/gm2/libs/a.mod
+ 79165fef28467755aebb3e76e2dcc345  gcc/testsuite/gm2/libs/b.def
+ 255c4433dfe3a4bd1e6aa54c906896df  gcc/testsuite/gm2/libs/b.mod
+ 1f14e5bf520dcaeeb7511d6145e105b5  gcc/testsuite/gm2/libs/testraw.mod
+ 2c439af31b3c4c4dce8526b98bc75c75  gcc/testsuite/gm2/link/externalscaffold/pass/hello.mod
+ e2961854e3bf16a45239706b5cbf6ac9  gcc/testsuite/gm2/link/externalscaffold/pass/link-externalscaffold-pass.exp
+ b47d7775c9533f93d244634db9c2af99  gcc/testsuite/gm2/link/externalscaffold/pass/scaffold.c
+ 9bc0efe4cc984e96610339654d2734f3  gcc/testsuite/gm2/link/min/pass/link-min-pass.exp
+ 3ccc25a86d469b340eb7c17d50759bdd  gcc/testsuite/gm2/link/min/pass/tiny.mod
+ ed8bf85772f77dfafb862d1ea45af84b  gcc/testsuite/gm2/link/nondefaultext/pass/hello.md
+ 8b7fd72f6b1125c4b22c0d196be84399  gcc/testsuite/gm2/link/nondefaultext/pass/liba.dm
+ ecb93dcfa825a2109fb5060ea6d89c3a  gcc/testsuite/gm2/link/nondefaultext/pass/liba.md
+ 68b229853344790f3b2485be0dcba53b  gcc/testsuite/gm2/link/nondefaultext/pass/link-nondefaultext-pass.exp
+ aa515547392bf65d8ff6de37572453f7  gcc/testsuite/gm2/link/pim/fail/import.mod
+ 7453a93e5b831794ae2da71d0227644f  gcc/testsuite/gm2/link/pim/fail/link-pim-fail.exp
+ e89398b9451cbbf6acac8357112be31c  gcc/testsuite/gm2/link/pim/pass/link-pim-pass.exp
+ 8a50d2a21ae4fff8f675a6613ac56bf8  gcc/testsuite/gm2/link/pimc/pass/README
+ 06561bc296754eea277f02834e0a0913  gcc/testsuite/gm2/link/pimc/pass/link-pimc-pass.exp
+ ac3ed15d12ee3e27a286169ba4da2ec7  gcc/testsuite/gm2/link/pimc/pass/testdtoa.mod
+ 748cc29901521f865e6a4e6ce06b05d5  gcc/testsuite/gm2/link/pimc/pass/testerrno.mod
+ 33b3f009f04c7dd34f235050e7c63342  gcc/testsuite/gm2/link/pimc/pass/testgetopt.mod
+ 09fbf767ee77b77e349fb264559dab57  gcc/testsuite/gm2/link/pimc/pass/testldtoa.mod
+ ec5b7da1a17cc617a6db2696a9f6ba7e  gcc/testsuite/gm2/link/pimc/pass/testlibc.mod
+ 5c106e186209787a9472100ea7a6f2c4  gcc/testsuite/gm2/link/pimc/pass/testlibc2.mod
+ 993547f127f1bd182130f144a145dcdd  gcc/testsuite/gm2/link/pimc/pass/testsckt.mod
+ 0573398c81876ecc7078d857c9289c74  gcc/testsuite/gm2/link/pimc/pass/testselective.mod
+ e30942aa3af4b958b6e82514e2c79319  gcc/testsuite/gm2/link/pimc/pass/testsysexceptions.mod
+ 8f9f0512919ed668d4bf930600338049  gcc/testsuite/gm2/link/pimc/pass/testtermios.mod
+ b2dbac8e94edbde7e2a350006308609d  gcc/testsuite/gm2/link/pimc/pass/testunixargs.mod
+ 7073078d3a767f64d74a7c6a946627dd  gcc/testsuite/gm2/link/pimc/pass/testwrapc.mod
+ 597ea84fb3ecf81fd258fdb6e08e23d0  gcc/testsuite/gm2/linking/libarchive/pass/c.c
+ 094c459aa4a4c2110e696178c3cfcf81  gcc/testsuite/gm2/linking/libarchive/pass/c.def
+ 2e48c3b8cc6d9d5c29a8164ab054a10c  gcc/testsuite/gm2/linking/libarchive/pass/d.def
+ 09a5224a483931f576f2fa39c0d522fb  gcc/testsuite/gm2/linking/libarchive/pass/e.def
+ 18acaf65202b92ca4288f5c0a3bdffe0  gcc/testsuite/gm2/linking/libarchive/pass/linking-libarchive-pass.exp
+ 5b02e5fe6d2b26e7cb50346d3ab00754  gcc/testsuite/gm2/linking/libarchive/pass/m.mod
+ 7819a0ba8fda65020ba1ae07ac6fce7b  gcc/testsuite/gm2/linking/verbose/pass/hello.mod
+ ba20dbe52b908facf31c003754a4c1bf  gcc/testsuite/gm2/linking/verbose/pass/linking-verbose-pass.exp
+ 7f1f780a9f09bc630acf35993e9ad143  gcc/testsuite/gm2/pim/fail/TestLong3.mod
+ 53c2be4129dfbffffa2e6020dad0d60a  gcc/testsuite/gm2/pim/fail/TestLong6.mod
+ bb62626d134fcc38e543796338d9e58a  gcc/testsuite/gm2/pim/fail/a.def
+ 0055acf9496be077a892c8cd68e2dad7  gcc/testsuite/gm2/pim/fail/assignbounds.mod
+ ae2a310af406298619df341180d04311  gcc/testsuite/gm2/pim/fail/assignsubrange.mod
+ 0ada22f99bc8301af1fee59f6539d4a4  gcc/testsuite/gm2/pim/fail/assignsubrange2.mod
+ 82073e6799f525d12cead346e8067ca8  gcc/testsuite/gm2/pim/fail/b.def
+ fe1101174e39d8126579814b8a12e7ab  gcc/testsuite/gm2/pim/fail/bad.def
+ db7436cc6948424e65700d7b6597862f  gcc/testsuite/gm2/pim/fail/badconst.mod
+ 89a7178511546bb8afdc764de0335c4a  gcc/testsuite/gm2/pim/fail/badfunc.mod
+ 8805471600280b26d1436d6cfcff4ac9  gcc/testsuite/gm2/pim/fail/badparam.mod
+ 06e24a2d59b14219f627f48df32c5901  gcc/testsuite/gm2/pim/fail/badparam2.mod
+ c0a1e7a398973481be6f30c11eee5bae  gcc/testsuite/gm2/pim/fail/badtype.mod
+ 3005117cf02eff524c88b0f70386ab9c  gcc/testsuite/gm2/pim/fail/badtypes.mod
+ 32a338cbfd9aab52ae0e22a277304859  gcc/testsuite/gm2/pim/fail/bits.mod
+ 2560330c2c220899292051f64787da55  gcc/testsuite/gm2/pim/fail/bits2.mod
+ 9ec960da3d55a2f6364f7233f5a8d76f  gcc/testsuite/gm2/pim/fail/bits3.mod
+ 2a0d897b8ff630474a1e480f2da67149  gcc/testsuite/gm2/pim/fail/bits4.mod
+ 0f93a194ec08ff05fa672cc0e701353d  gcc/testsuite/gm2/pim/fail/cardword.mod
+ 2f57387a25c5f2b1a94b2cbf043ee384  gcc/testsuite/gm2/pim/fail/constbec.mod
+ cc99f9e949c6dddafb584904b9be8f3c  gcc/testsuite/gm2/pim/fail/constsize3.mod
+ 8b50d0c15682d656c7047227936175ce  gcc/testsuite/gm2/pim/fail/constvar.mod
+ 54025100702ca0cb25f9ada45667ec17  gcc/testsuite/gm2/pim/fail/convert5.mod
+ 3f4c180de69d4c0b8298d9e6afdd1060  gcc/testsuite/gm2/pim/fail/dupconst.mod
+ 3c76b2c22335070f117f23a28bab42ec  gcc/testsuite/gm2/pim/fail/dupenum.mod
+ 4abe92933af7dafe1feaa8c7a215fb00  gcc/testsuite/gm2/pim/fail/dupfield.mod
+ 34c985d6bb536e7fca4e9f8561043322  gcc/testsuite/gm2/pim/fail/duptype.mod
+ b8a4b703630278841a4e9c5abedc18d4  gcc/testsuite/gm2/pim/fail/dupvar.mod
+ 68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/gm2/pim/fail/empty.mod
+ 4df60ae154b7faa7f6de3b7b7408bd61  gcc/testsuite/gm2/pim/fail/expression.mod
+ 69c2ed682fb94fb926da925d15f00d94  gcc/testsuite/gm2/pim/fail/expression2.mod
+ c08ed0a5562d22ab62d13213541fcf63  gcc/testsuite/gm2/pim/fail/expression3.mod
+ 5aa9ea61b8279a2548ef04550b219d9c  gcc/testsuite/gm2/pim/fail/func.mod
+ 3b65ab060215799682e0e1ee641110ab  gcc/testsuite/gm2/pim/fail/good.def
+ d923e158bb4304b26276fbaa8e50d9a4  gcc/testsuite/gm2/pim/fail/good.mod
+ d0fe89691db5ca3450f7ad712cc5ee70  gcc/testsuite/gm2/pim/fail/import.mod
+ a4172d6ddd591491bdf158fd3ba334ac  gcc/testsuite/gm2/pim/fail/inserttok.def
+ 00e66be53b6ccc6d6f2ff968655ce82a  gcc/testsuite/gm2/pim/fail/inserttok.mod
+ e4f3aa03a13772a61311e3a621c5815d  gcc/testsuite/gm2/pim/fail/integer.mod
+ 0a240b36d3db47443f0a95e22c855a93  gcc/testsuite/gm2/pim/fail/keyword.mod
+ 2a103d82e8ed64d00ca674e4f1a0b91f  gcc/testsuite/gm2/pim/fail/largeconst.mod
+ 854f0526c0528a9407b98defcad3ca6e  gcc/testsuite/gm2/pim/fail/longtypes2.mod
+ b427db0884d2f8b091058ee61533c919  gcc/testsuite/gm2/pim/fail/longtypes3.mod
+ 2d926c0f64b0b9703c54fb09f436ce2f  gcc/testsuite/gm2/pim/fail/multisetf.mod
+ 0542e1a427388e3c08141cc676209c01  gcc/testsuite/gm2/pim/fail/nested3.mod
+ 9ac4fcd1f17d553a94efa0253d01b65b  gcc/testsuite/gm2/pim/fail/opaque.mod
+ 0558acf54770c349f1d2896416c431cd  gcc/testsuite/gm2/pim/fail/opaque2.mod
+ dbc7f420f29d7f33702b0a087b13dfe5  gcc/testsuite/gm2/pim/fail/opasfail.mod
+ faec561d3f04b0e2ce0744d90d7cfc89  gcc/testsuite/gm2/pim/fail/opcpfail.mod
+ 31ab2ed318290ff5ae4b9b33e5f1daf8  gcc/testsuite/gm2/pim/fail/pim-fail.exp
+ 5616ced320271fc3aa4b9aabbf232be6  gcc/testsuite/gm2/pim/fail/procmod.mod
+ c3417d448fb9fb98d8dc4a12ef842bfe  gcc/testsuite/gm2/pim/fail/rotate.mod
+ 657c9c77d4fdc16a6981c1a9016b96bd  gcc/testsuite/gm2/pim/fail/rotate2.mod
+ 6c332129a02f912ea294ddcd6bb9adcd  gcc/testsuite/gm2/pim/fail/setbec.mod
+ 6e09d1e231941e0e014a15e6895661fa  gcc/testsuite/gm2/pim/fail/setequiv.mod
+ bbe032afb7144469b64701d7e625ebe2  gcc/testsuite/gm2/pim/fail/setsnulf.mod
+ 948129dc20f31dc19f386910f97533c0  gcc/testsuite/gm2/pim/fail/settype.mod
+ 1588330419efbad4d158c8a13e54191b  gcc/testsuite/gm2/pim/fail/setunknown.mod
+ 33460f69e106cb8c1ae8bed33c221cb4  gcc/testsuite/gm2/pim/fail/setunknown2.mod
+ b5d72ddf37fa215a8a2ba4553362cbfd  gcc/testsuite/gm2/pim/fail/shift.mod
+ db64b3313172b59590b6f9b32f53a1ce  gcc/testsuite/gm2/pim/fail/shift2.mod
+ 8aa2d8325556f352b6b882fd4cd11895  gcc/testsuite/gm2/pim/fail/subrange7.mod
+ 566ed8aac243c2ae03189af351fdb2f7  gcc/testsuite/gm2/pim/fail/unary.mod
+ 6b2aae15f03b3b527c6b65def68372e1  gcc/testsuite/gm2/pim/fail/undeclared.mod
+ 73b06c803daee19e6d765dda2acd92af  gcc/testsuite/gm2/pim/fail/val.mod
+ 867dfac1ab4a9272a16828f96f9e6a92  gcc/testsuite/gm2/pim/fail/val2.mod
+ 72e35287ef686c8b396c3bf22387eead  gcc/testsuite/gm2/pim/fail/wordconst.mod
+ 0b88c6a2cfbd995aaf3585fec521f5ec  gcc/testsuite/gm2/pim/no-options/run/pass/integer.mod
+ ad3d82b54ec27a4fb46a938ddfb4d021  gcc/testsuite/gm2/pim/no-options/run/pass/pim-no-options-run-pass.exp
+ 121645d120989117b58eed5131eeb2d3  gcc/testsuite/gm2/pim/options/bounds/fail/IdentifierBug.mod
+ edf11c7708bf1f2f260beebc6b22f82c  gcc/testsuite/gm2/pim/options/bounds/fail/pim-options-bounds-fail.exp
+ 591835ce2f763bad0a7f66e3d2fce60d  gcc/testsuite/gm2/pim/options/optimize/run/pass/addition.def
+ 838ec2d9113314f57cbcb8d3e784174a  gcc/testsuite/gm2/pim/options/optimize/run/pass/addition.mod
+ fbc17565218bf6416842770d3da67ef5  gcc/testsuite/gm2/pim/options/optimize/run/pass/concat.mod
+ 88472a454ba761c12d67df8d511cef2c  gcc/testsuite/gm2/pim/options/optimize/run/pass/pim-options-optimize-run-pass.exp
+ cee505de5fa1b51118f12fcc7bbed319  gcc/testsuite/gm2/pim/options/optimize/run/pass/testadd.mod
+ 9b4ff834f4fda732f403341ef20fcb41  gcc/testsuite/gm2/pim/pass/ABSBug.mod
+ 02d579d6f0f04dfec8a0b1ada93284f8  gcc/testsuite/gm2/pim/pass/TestLong4.mod
+ 30a108d56cb05733a64006648ee09503  gcc/testsuite/gm2/pim/pass/TestLong7.mod
+ 3ca903eb9c23ee2cc7ac89972a5900f1  gcc/testsuite/gm2/pim/pass/TestLong8.mod
+ 2f681ff0fdc3d06a35cab66714ffedad  gcc/testsuite/gm2/pim/pass/TestLong9.mod
+ e41ea5e4e05d1d6ff919805132450fdb  gcc/testsuite/gm2/pim/pass/another.mod
+ 4396ee17558776ba3841fe8a1b0b771d  gcc/testsuite/gm2/pim/pass/aochar.mod
+ 6e07c812fb11e8d41f4de237f9e6fcb7  gcc/testsuite/gm2/pim/pass/array.mod
+ cecc4cd84db67b472280859e186e5bc8  gcc/testsuite/gm2/pim/pass/array2.mod
+ 6e891f6d132b0281ef3a82c17513c4b3  gcc/testsuite/gm2/pim/pass/array3.mod
+ 567c7c6d9814c1f5944023e71e629656  gcc/testsuite/gm2/pim/pass/array4.mod
+ 87bbe3bacee5017be0cb8f24cd10aa0f  gcc/testsuite/gm2/pim/pass/array5.mod
+ 798e72472c64a5a2732d76f2bc23ffad  gcc/testsuite/gm2/pim/pass/array6.mod
+ cca73db5a687dca5ce557e5fbede98f0  gcc/testsuite/gm2/pim/pass/arraybool.mod
+ 5ff36c455b72bdd709ebb927a6504a2f  gcc/testsuite/gm2/pim/pass/arraychar.mod
+ a73579b5149928a24cee8404555b9447  gcc/testsuite/gm2/pim/pass/arraychar2.mod
+ ec6d0df94a441eb54a9efd9c1334d1ef  gcc/testsuite/gm2/pim/pass/arraychar3.mod
+ 4d9eeeee0edac200193c71d1a933be09  gcc/testsuite/gm2/pim/pass/arrayconst1.mod
+ f29af02bdae361a442c551577fdb0693  gcc/testsuite/gm2/pim/pass/arrayconst2.mod
+ 995617bcfc58829cdf27619409eacc31  gcc/testsuite/gm2/pim/pass/arrayconst3.mod
+ 56ad654fe2a47e5878a4203799cdf95e  gcc/testsuite/gm2/pim/pass/arraydecl.mod
+ 36af7f1c2312d9f9937a7f2de2189f34  gcc/testsuite/gm2/pim/pass/arraydim.mod
+ 6724482ea63a46085c03fc4f0d64a57b  gcc/testsuite/gm2/pim/pass/arraydyn.mod
+ e9caac3fa009d14c2b2e68c3f44e8ef0  gcc/testsuite/gm2/pim/pass/arrayeqiv.mod
+ 26d08df494244b008f1b728288f18209  gcc/testsuite/gm2/pim/pass/arrayfio.mod
+ dab592d4dd3949d92b6f1983fde51f8d  gcc/testsuite/gm2/pim/pass/arrayhuge.mod
+ 022c129bd98d32885a082d1603bea4a8  gcc/testsuite/gm2/pim/pass/arrayhuge2.mod
+ fb19d6424e588c4da3348ec372a30592  gcc/testsuite/gm2/pim/pass/arrayindex.mod
+ db5cdf9fca2352bb3aaff99310154bde  gcc/testsuite/gm2/pim/pass/arrayindirect.mod
+ ec191d5bec78dfc53ec1183232e56b2c  gcc/testsuite/gm2/pim/pass/arrayinproc.mod
+ fa838ada0adf9169439afeb9a8c6da8a  gcc/testsuite/gm2/pim/pass/arrayint.mod
+ afb411f57be7c83952ea7cbfc559617b  gcc/testsuite/gm2/pim/pass/arrayofbyte.mod
+ 8b864907f5ffa17741166cc4526040c5  gcc/testsuite/gm2/pim/pass/arrayofcard.mod
+ 4eede669b6f4e22d3691065bbb1aafaf  gcc/testsuite/gm2/pim/pass/arrayptr.mod
+ cebabd878fea07086bed0fcb4f5bfaa1  gcc/testsuite/gm2/pim/pass/arrayptr2.mod
+ b7e63ce580e65bcfcad109526cfc059d  gcc/testsuite/gm2/pim/pass/arrayptr3.mod
+ 305bc1bf5f67722fff23a4bc4b20c62d  gcc/testsuite/gm2/pim/pass/arrayptr4.mod
+ ca0cd8c37e2e36acf0e4cdad2e203e34  gcc/testsuite/gm2/pim/pass/arrayptr5.mod
+ b875fc337fa6a25c633cdc0fd7c51ad5  gcc/testsuite/gm2/pim/pass/arrayptr6.mod
+ 65523f9801913c739b34e51a023c7dfe  gcc/testsuite/gm2/pim/pass/arrayrecord.mod
+ ae4bfac0eff9154c0765e985b309e442  gcc/testsuite/gm2/pim/pass/arraytiny.c
+ dca4aa3c6a3576de7e10eedbeb313966  gcc/testsuite/gm2/pim/pass/arraytiny.mod
+ 901666f3c92d11f5cefac2d2aa006743  gcc/testsuite/gm2/pim/pass/arraytype.mod
+ c880ff974ae25f51a15b2a40d5700609  gcc/testsuite/gm2/pim/pass/arraytype2.mod
+ 930e24cf17fe620f9665864d473f86f0  gcc/testsuite/gm2/pim/pass/arraytype3.mod
+ 8ff91ec6d466fd6f4c62cd9e38993dba  gcc/testsuite/gm2/pim/pass/arraytype4.mod
+ 43a0895298201a8616d18a5f0a195371  gcc/testsuite/gm2/pim/pass/assignment.mod
+ 8a44dfdd2aa05ff471ccbeb30525d7e4  gcc/testsuite/gm2/pim/pass/assignment2.mod
+ 92f0a1750a5727d57578c68264b5def3  gcc/testsuite/gm2/pim/pass/assignment3.mod
+ 985baf679a37178096ce38f5b066e1c8  gcc/testsuite/gm2/pim/pass/assignment4.mod
+ a65219c98879b7453a7b11a7fef0d98e  gcc/testsuite/gm2/pim/pass/badpointer.mod
+ 434f3478cb761dba32de9b97543c58e8  gcc/testsuite/gm2/pim/pass/bits32.def
+ ffe0e0d501258e827ecfa9e1e1d13ee9  gcc/testsuite/gm2/pim/pass/bits32.mod
+ 488bd49020a738f28e5f0a981991166a  gcc/testsuite/gm2/pim/pass/bits32i.mod
+ e81f61ff93f1ed33729a6f702c840bff  gcc/testsuite/gm2/pim/pass/bitset.mod
+ b09b572c8aded2538bc58e24e156c0f4  gcc/testsuite/gm2/pim/pass/bitset2.mod
+ 898239d430044d32bf127ae346fa18eb  gcc/testsuite/gm2/pim/pass/bitset3.mod
+ cfe6e210bd41e1ce630c6a06b11ef0a1  gcc/testsuite/gm2/pim/pass/bitset4.mod
+ 2d5c081ca96e5fceaee3b113b7097089  gcc/testsuite/gm2/pim/pass/bitset5.mod
+ 77009e89e217696e6333e4f50b495de3  gcc/testsuite/gm2/pim/pass/bitsetfunc.mod
+ f514c8b223d38484bea5e885ef3d32e9  gcc/testsuite/gm2/pim/pass/block.mod
+ ca6e5474515e87eca56b65ebfae71927  gcc/testsuite/gm2/pim/pass/blockindirect.mod
+ de2d7eec01a2c241f3741f8f1844a2d2  gcc/testsuite/gm2/pim/pass/builtin.def
+ 680b22cdb8d54ac083375aa91fade29f  gcc/testsuite/gm2/pim/pass/builtin.mod
+ 7819e37d90c823daf7519d7cf3460a2e  gcc/testsuite/gm2/pim/pass/builtin2.mod
+ c2bdb639f247cb34f739a2f1a9938476  gcc/testsuite/gm2/pim/pass/builtinconst.mod
+ 17018d1cefbad728d4d1b05cdab51cfa  gcc/testsuite/gm2/pim/pass/bytearray.mod
+ 5a8df2517a4f80f493b44e707889a421  gcc/testsuite/gm2/pim/pass/card.mod
+ c896016d1bceb72ffe48a55586e2b9b0  gcc/testsuite/gm2/pim/pass/card2.mod
+ 83700671fedfc59204415a3104dcef3a  gcc/testsuite/gm2/pim/pass/char.mod
+ 9179acdbc127492f444ea9316ee9639b  gcc/testsuite/gm2/pim/pass/char2.mod
+ a001cffa28e8a83a6ee3c4c4f4923938  gcc/testsuite/gm2/pim/pass/charproc.mod
+ 09c34e333ce6e0fec99402ef3ec06cbd  gcc/testsuite/gm2/pim/pass/charset.mod
+ 8e07e59517c05396c84ba115c9e6b4dc  gcc/testsuite/gm2/pim/pass/charset2.mod
+ 01691912ad8fee8a7774966522a21b23  gcc/testsuite/gm2/pim/pass/charset3.mod
+ b6e0b83e673c1bb24708b8e382a6427a  gcc/testsuite/gm2/pim/pass/checkparm.def
+ 5941e60884963ce74e59619c35846091  gcc/testsuite/gm2/pim/pass/checkparm.mod
+ 721c031d59eeffce10505e9b16163231  gcc/testsuite/gm2/pim/pass/colour.mod
+ 84efdaa2fd55367d8262aaa808a635f8  gcc/testsuite/gm2/pim/pass/comment1.mod
+ 1881b3aab37b34fc9f6a6a227bc6a32b  gcc/testsuite/gm2/pim/pass/complexarray.mod
+ 10ca1eddf43a1533d836ad4a434f4946  gcc/testsuite/gm2/pim/pass/complextypes.mod
+ 4da004c8b4272694faf97ffc65880f3f  gcc/testsuite/gm2/pim/pass/constcast.mod
+ a5d50cc9a597b3c2cfa88775fa35f00f  gcc/testsuite/gm2/pim/pass/constmax.mod
+ 5b4fa44b1aa66f056f14fbb454d5a7c6  gcc/testsuite/gm2/pim/pass/constset.mod
+ ed630245c746ae2e24467b6c987372de  gcc/testsuite/gm2/pim/pass/constset2.mod
+ 41ad882728af9a78128f7ced5eb4c27b  gcc/testsuite/gm2/pim/pass/constset3.mod
+ da5c4a98aa9d8d3e32b509137288b3c5  gcc/testsuite/gm2/pim/pass/constsize.mod
+ 31ed1d26c5b8febc3b18a79d3caf1d3b  gcc/testsuite/gm2/pim/pass/constsize2.mod
+ 4db7c50807d1da1ad4dfc8fac80a6e9e  gcc/testsuite/gm2/pim/pass/convert.mod
+ 82095bf746390cb91e3297751d879691  gcc/testsuite/gm2/pim/pass/convert2.mod
+ 4d653dfa70d668596c153ec4b27e5d18  gcc/testsuite/gm2/pim/pass/convert3.mod
+ a9de62ee5fe3a819af9a0ebae89caba1  gcc/testsuite/gm2/pim/pass/convert4.mod
+ 388393520871e25e1926856dc63d7f8d  gcc/testsuite/gm2/pim/pass/danglingelse.mod
+ bad755973a944bcce292540176105bf9  gcc/testsuite/gm2/pim/pass/debug
+ 30466f7eb2d3df720c6099f622439989  gcc/testsuite/gm2/pim/pass/defset.def
+ fd44b2f7753ad91db900a8417da15c12  gcc/testsuite/gm2/pim/pass/defset.mod
+ b253c8e5175c4cb6983aece8bf60dd17  gcc/testsuite/gm2/pim/pass/deftype.mod
+ 48ec94954ca455ea9c47d430a44f763b  gcc/testsuite/gm2/pim/pass/divaddr.mod
+ 6ecfc74af4baeb802282ca34dc421f82  gcc/testsuite/gm2/pim/pass/enum.mod
+ 673c795df15b3ee9b81269a3092d4f75  gcc/testsuite/gm2/pim/pass/enum2.mod
+ fb28e17ada9ae4a37772d9a093fc9d6b  gcc/testsuite/gm2/pim/pass/enum3.mod
+ aabcce2ae6fcf461e4dc47ece6490255  gcc/testsuite/gm2/pim/pass/file.mod
+ 6ff4d5415dc6f9c665ed24a5806ebb8a  gcc/testsuite/gm2/pim/pass/filesystem.mod
+ 21e7254f8c3a907135e26aea9abad47f  gcc/testsuite/gm2/pim/pass/foo.mod
+ d1d27d2d63c6c5064aba34a58efe74b3  gcc/testsuite/gm2/pim/pass/foo2.mod
+ 56286f2c3e92e15a7825618ae140091a  gcc/testsuite/gm2/pim/pass/for1.mod
+ a1c6c93cfe8fff16854d0c7e5cc45fbf  gcc/testsuite/gm2/pim/pass/function.mod
+ ad0050bee37026a93c829a61da2f0938  gcc/testsuite/gm2/pim/pass/function2.mod
+ b25f2c4d1ce9f7cb7135d6259ca728ee  gcc/testsuite/gm2/pim/pass/gcd.def
+ a6f302cface0c9bfc31e9d707ec6031d  gcc/testsuite/gm2/pim/pass/gcd.mod
+ b5034ac1aeec90dc2d9a4b8e4e1db428  gcc/testsuite/gm2/pim/pass/getconst.mod
+ 45f32c78d6fe03bad619ad83eb7210f0  gcc/testsuite/gm2/pim/pass/hello.mod
+ f9cd141a6b4217bff724f01cca0dd4dd  gcc/testsuite/gm2/pim/pass/impa.mod
+ fe354a7ac0ff51dc16107d1c6cd377d2  gcc/testsuite/gm2/pim/pass/impb.def
+ 67e33a57d6237c7251dd814eedb08fab  gcc/testsuite/gm2/pim/pass/impb.mod
+ 21f6b523e384e5101a877a407952c9eb  gcc/testsuite/gm2/pim/pass/impc.def
+ e332ab4e2664a14ad36fe54036abfdad  gcc/testsuite/gm2/pim/pass/impc.mod
+ 9a34b3a6cbf1ebc596a2f7a3b404ed18  gcc/testsuite/gm2/pim/pass/impd.mod
+ fa811f35c4e3ac42ffc5083b7a32fc6f  gcc/testsuite/gm2/pim/pass/impe.mod
+ 2f7e9e9d57b167d59a7b234f1b33a514  gcc/testsuite/gm2/pim/pass/impf.mod
+ 10603e698906e8728291d542cf09e031  gcc/testsuite/gm2/pim/pass/impg.mod
+ d32b019199bf279e6565db6d5ee97854  gcc/testsuite/gm2/pim/pass/imph.mod
+ c8273b10df212dc9d0d403e0a61addb2  gcc/testsuite/gm2/pim/pass/impi.mod
+ a025a8fc705c2013cedd85c1b8b0b0b4  gcc/testsuite/gm2/pim/pass/impj.mod
+ 04c715e96ab247ecdcdb73c2d9081ff8  gcc/testsuite/gm2/pim/pass/impk.mod
+ 1a50d3515abda343ad2ebeffd8e0e05e  gcc/testsuite/gm2/pim/pass/impl.mod
+ e57ae096b6d3ce135039ecb411a3d678  gcc/testsuite/gm2/pim/pass/impm.mod
+ f09801565f3f4e7c7dbab27af6e6952e  gcc/testsuite/gm2/pim/pass/impn.def
+ 748147602b1ca4c6d4605f38f392b114  gcc/testsuite/gm2/pim/pass/impn.mod
+ 008eea6d4f17932455979f0f9e20a039  gcc/testsuite/gm2/pim/pass/impo.mod
+ 6012a05b0fa3ca6ae1f45d1aa433efb3  gcc/testsuite/gm2/pim/pass/imports.mod
+ efa5dcc95801c763b1ef0b74d167a454  gcc/testsuite/gm2/pim/pass/impp.def
+ b78b3932342406cf8f0fc91232816931  gcc/testsuite/gm2/pim/pass/impp.mod
+ 73eddbcf590cf62ae96c2ed7a747e86b  gcc/testsuite/gm2/pim/pass/impq.def
+ 3fe380de94ec2b09b3e77d5633da84c6  gcc/testsuite/gm2/pim/pass/impq.mod
+ e125e0826c7eaee305081b141f464a19  gcc/testsuite/gm2/pim/pass/incompsets.mod
+ 02ba4397a059292edb6d5f16d993ca2d  gcc/testsuite/gm2/pim/pass/index.mod
+ fd6fee364b3c8ef5ef8d384665bbe285  gcc/testsuite/gm2/pim/pass/index2.mod
+ 985f35d4688c3f8c1ad1a224a56f3f07  gcc/testsuite/gm2/pim/pass/indirect.mod
+ c36035a4a1f8064e193693b579db3024  gcc/testsuite/gm2/pim/pass/inner.mod
+ 7feb4def35568512cea84bc71c06753f  gcc/testsuite/gm2/pim/pass/inner2.mod
+ 54d13432b234829902e6086328c435d1  gcc/testsuite/gm2/pim/pass/int.mod
+ 9461bcf424418383093c651c1f3ddb97  gcc/testsuite/gm2/pim/pass/largeset.mod
+ 5aec54a04bab8ec53a77691c0e180b6b  gcc/testsuite/gm2/pim/pass/largeset1.mod
+ 554fb96c8ec9493eac90eb77667ecc04  gcc/testsuite/gm2/pim/pass/largeset2.mod
+ 892028fef457a6ff5439d0422ef2e546  gcc/testsuite/gm2/pim/pass/largeset3.mod
+ 885038615b546f45887d9acd6be1c80a  gcc/testsuite/gm2/pim/pass/largeset4.mod
+ 5c090a800e002ea6c339255f5755e1e3  gcc/testsuite/gm2/pim/pass/largeset5.mod
+ 277c536b20525cac063d21e0af38c6a6  gcc/testsuite/gm2/pim/pass/largeset6.mod
+ d2b299546c13a1851d840cfe5ec016bf  gcc/testsuite/gm2/pim/pass/largeset7.mod
+ 7da9ed6c7b53fa8ee4b624c75ad03591  gcc/testsuite/gm2/pim/pass/localmod.mod
+ 934fe8a99c80339ec4975656c6146ef9  gcc/testsuite/gm2/pim/pass/localproc.mod
+ 4dc56241c0674a3a29ef6b96703a1cfa  gcc/testsuite/gm2/pim/pass/localvar.mod
+ 0d865d5e5abfdfac6536061769280f0f  gcc/testsuite/gm2/pim/pass/log
+ 4a78f296fb893361ba58d6ee865ff84f  gcc/testsuite/gm2/pim/pass/longint.mod
+ b69a5c9f969d64c56b9f973fc8124a08  gcc/testsuite/gm2/pim/pass/longint2.mod
+ c11f6829dc3d44aa1cebb73286e05ac6  gcc/testsuite/gm2/pim/pass/longmm.mod
+ 900000e5a5791c54f25289e270dcc10a  gcc/testsuite/gm2/pim/pass/longreal.mod
+ c74a29885696aacae40fe7de7c6094b1  gcc/testsuite/gm2/pim/pass/longtypes.mod
+ 2b105caf62ff575ff7d605826b21840c  gcc/testsuite/gm2/pim/pass/longtypes3.mod
+ 0ede14bdf52df4a58d25ee6ee7fb57eb  gcc/testsuite/gm2/pim/pass/longtypes4.mod
+ e1f67aa0e0bf33155940e022e1b7abcf  gcc/testsuite/gm2/pim/pass/longtypes5.mod
+ d3afae700668b8045d03639013d68194  gcc/testsuite/gm2/pim/pass/longtypes6.mod
+ 376b3eed7973362f5a5197ad43ee07a5  gcc/testsuite/gm2/pim/pass/loopexit.mod
+ cc1bd832c651960cd3fff21210873768  gcc/testsuite/gm2/pim/pass/math.mod
+ b7ada71d9e7b4394f7021bbf71eaeeda  gcc/testsuite/gm2/pim/pass/maxlongint.mod
+ 89821a820a1ec4e4240c0793722097c3  gcc/testsuite/gm2/pim/pass/maxreal.mod
+ 053901541e388ad6c7cb19dca6769c96  gcc/testsuite/gm2/pim/pass/maxreal2.mod
+ 919cb84f1d06b06e8423042940ee3a3c  gcc/testsuite/gm2/pim/pass/minmaxconst.mod
+ e6891b2d8a9ac3128b4ffe0ab2c070fb  gcc/testsuite/gm2/pim/pass/minmaxconst2.mod
+ 281d61c1490184a71dd57bc1d9514574  gcc/testsuite/gm2/pim/pass/modaddr.mod
+ a01824e9392048cdee8e74897973abad  gcc/testsuite/gm2/pim/pass/multaddr.mod
+ 238b45a9809404f5deabcf8889b09ef6  gcc/testsuite/gm2/pim/pass/multiple.mod
+ b408764127983c912f0b8184f1c1283b  gcc/testsuite/gm2/pim/pass/multiset.mod
+ f1765eec0788d176a0b5bc918d962a3f  gcc/testsuite/gm2/pim/pass/multtypes.mod
+ 5eb7582865746ab83ab1f211e37a87bf  gcc/testsuite/gm2/pim/pass/mydef.def
+ 9d01de2db3a574593573d59eef637a3a  gcc/testsuite/gm2/pim/pass/negatives.def
+ 171263f6ef4cb87e243053b785bef481  gcc/testsuite/gm2/pim/pass/negatives.mod
+ 5a29fbd25cb9047738f1c605ed496aca  gcc/testsuite/gm2/pim/pass/nested.mod
+ 382a12a60e4e77c8fca18547e1fdf1ba  gcc/testsuite/gm2/pim/pass/nested2.mod
+ 2621c904dfe3a6b84844b8f12d4d3d9a  gcc/testsuite/gm2/pim/pass/nested3.mod
+ 1b721fe0e083b8ae36719c62a6dc64e3  gcc/testsuite/gm2/pim/pass/nested4.mod
+ f068c18f26c236895611e34915dfb15c  gcc/testsuite/gm2/pim/pass/nested5.mod
+ 938fe912ef13e061a56f59409a478b94  gcc/testsuite/gm2/pim/pass/nested6.mod
+ e3a72a27ab4d809b26255a90d6d93b7b  gcc/testsuite/gm2/pim/pass/nested7.mod
+ 716188df97e04820a8af6c607cef570c  gcc/testsuite/gm2/pim/pass/nestedfor.mod
+ d22e0d52679637cbf353b2a3ca805130  gcc/testsuite/gm2/pim/pass/nestedif.mod
+ b7e8089bc85513d14963311687c21a0b  gcc/testsuite/gm2/pim/pass/nestedset.mod
+ 23f18c1c8f0e5f5b526a360f7cd5695d  gcc/testsuite/gm2/pim/pass/onezero.mod
+ c5c4e7bdd314a61557e71cf2d9b2f4ce  gcc/testsuite/gm2/pim/pass/opaque.def
+ c6460639ba2522774d63b3bd4d00fe6a  gcc/testsuite/gm2/pim/pass/opaque.mod
+ 024b3dc7f39261f7cb26e3b9a4978904  gcc/testsuite/gm2/pim/pass/opaque2.mod
+ faacd5a9157d8420e728b38270b35875  gcc/testsuite/gm2/pim/pass/opaquetype.def
+ 8276cc5847d5e4575fd11a93a8bd75bd  gcc/testsuite/gm2/pim/pass/opaquetype.mod
+ 8c8832b3e89bc64fc68d7d46211eef77  gcc/testsuite/gm2/pim/pass/param.mod
+ ebc16acf9ed12b25472f8c773e7d842c  gcc/testsuite/gm2/pim/pass/param2.mod
+ bd475933f392bef7416e258b0eb945c6  gcc/testsuite/gm2/pim/pass/param3.mod
+ e7805668ec3d48efeba5e19ed7892066  gcc/testsuite/gm2/pim/pass/parambool.mod
+ 598b668b9337903f963ece4b7fa88033  gcc/testsuite/gm2/pim/pass/paramreal.mod
+ 4605364ae5169f9dbaa74d39ebd35b5e  gcc/testsuite/gm2/pim/pass/pim-pass.exp
+ 2aa04112382dc8e76a8bb26656b620c5  gcc/testsuite/gm2/pim/pass/pimimp.mod
+ 87d499098309e1d7ec71c407846e083b  gcc/testsuite/gm2/pim/pass/pointer.mod
+ 1200610c2ddef6cc0f4a93499a630bd5  gcc/testsuite/gm2/pim/pass/procadr.mod
+ fdc38c371954c1cb82b40dc75ed4fdc6  gcc/testsuite/gm2/pim/pass/procconv.mod
+ 36bbbf0e39376be778a524ff966bc90e  gcc/testsuite/gm2/pim/pass/procconv2.mod
+ 5d9b3e59fd3091a9b90a4b70d033f675  gcc/testsuite/gm2/pim/pass/procedure1.mod
+ 500de16ebdb59693e353797fc608b2a1  gcc/testsuite/gm2/pim/pass/procedure2.mod
+ 3331039ef7e3e52a97c8cc7415eb209e  gcc/testsuite/gm2/pim/pass/procindirect.mod
+ 3b711a323bfe6b265d95ba2d394c1e1b  gcc/testsuite/gm2/pim/pass/procmod.mod
+ b3be01e4da4f58be9d98d04cd0085cbc  gcc/testsuite/gm2/pim/pass/procmod2.mod
+ 4d72a64e1840c2d3c6ab1f103e619204  gcc/testsuite/gm2/pim/pass/procmod3.mod
+ a006deb2b0f2e97d9d9f794958383cd8  gcc/testsuite/gm2/pim/pass/procmod31.mod
+ 1e9f2ad44a7ac856a7ab2640e92afac8  gcc/testsuite/gm2/pim/pass/procmod4.mod
+ 7877ec402b339579d1fa9b7105c56adc  gcc/testsuite/gm2/pim/pass/procmod5.mod
+ c76d98e4d5bf392c4e312d2d888a9101  gcc/testsuite/gm2/pim/pass/procmod6.def
+ a52ca25defcaa06f6deff5d4726d312e  gcc/testsuite/gm2/pim/pass/procmod6.mod
+ 28f0bebaded1df0a074695b00219b8af  gcc/testsuite/gm2/pim/pass/procmod7.mod
+ d8ccc6406f37da7909455b2105ba730d  gcc/testsuite/gm2/pim/pass/procmod8.mod
+ 449c7bb2f966d6a21efe23725b977ba6  gcc/testsuite/gm2/pim/pass/procmod9.mod
+ eee2391736f958281bd80a26c06eaa1e  gcc/testsuite/gm2/pim/pass/proctype.mod
+ 12039deb2447c8ea7276f680d9c3cf8c  gcc/testsuite/gm2/pim/pass/proctype2.def
+ 4687686c1c7a8ec91eb97578d12ef6b8  gcc/testsuite/gm2/pim/pass/proctype3.mod
+ 7db4181faa89b7e33e59bac0d42c5f24  gcc/testsuite/gm2/pim/pass/proctype4.mod
+ 2764c22b17e3aed35cc1e1ad098d8948  gcc/testsuite/gm2/pim/pass/program.mod
+ 8425d8f3740cfa4a292981fd35acb509  gcc/testsuite/gm2/pim/pass/program2.mod
+ 0e9623407815284f4c06e29defecb203  gcc/testsuite/gm2/pim/pass/ptrarray.mod
+ 0304569045d8cb7150bff529f14fdb39  gcc/testsuite/gm2/pim/pass/ptrarray2.mod
+ 55ea4ffb039720c977f13f532dea66dd  gcc/testsuite/gm2/pim/pass/ptrarray3.mod
+ 47abed44bfdf839f3ca139cdb50753ea  gcc/testsuite/gm2/pim/pass/ptrcard.mod
+ add317411df0ae304c0d6d845347c978  gcc/testsuite/gm2/pim/pass/quads.def
+ 37bc64525628ee7ecb20ff1957d94218  gcc/testsuite/gm2/pim/pass/quads.mod
+ 0d83ca50ddb0c2cc0c0b13d64a1599d2  gcc/testsuite/gm2/pim/pass/real.mod
+ ad4ec1aec7890e9297f6a8337d7127f6  gcc/testsuite/gm2/pim/pass/real2.mod
+ 09ebbbec5900e93ac62c9c7e11365698  gcc/testsuite/gm2/pim/pass/real3.mod
+ 157d20151fd0709522f66fc5c19fc443  gcc/testsuite/gm2/pim/pass/realconst.mod
+ 49a8585987fd6ba0d2fd39e9ecc129bc  gcc/testsuite/gm2/pim/pass/realneg.mod
+ 77ebe6dbe8b733a5e06bdbc243a8e0bd  gcc/testsuite/gm2/pim/pass/realneg2.mod
+ 3bdc923e9f2912c73ff4904e6f8fd8cd  gcc/testsuite/gm2/pim/pass/realone.mod
+ 12c9be678b77b207979922d8a2badd2b  gcc/testsuite/gm2/pim/pass/realsize.mod
+ c5fa84af45085633d26e5b2aa981e9ec  gcc/testsuite/gm2/pim/pass/record1.mod
+ 972f20925d6449209e97da30c39855f7  gcc/testsuite/gm2/pim/pass/record10.mod
+ 810f2b56b9e944581f49b1ed39f6b196  gcc/testsuite/gm2/pim/pass/record11.mod
+ 83637cd6c46bf974f1dc2f06a6f42524  gcc/testsuite/gm2/pim/pass/record12.def
+ 23747b548774ecb17f15ef3b84499d28  gcc/testsuite/gm2/pim/pass/record13.def
+ 6a2330cc848ea4559b8cecdf8c8e8682  gcc/testsuite/gm2/pim/pass/record14.def
+ e14d4422c68bf0ff119bc41baf75a352  gcc/testsuite/gm2/pim/pass/record15.def
+ 9fa125e9a3956094e7a9c0c1a56f0632  gcc/testsuite/gm2/pim/pass/record16.def
+ 5096273474fcd79099dbb239305aaf28  gcc/testsuite/gm2/pim/pass/record2.mod
+ 3f9da29461462bc93acfbe4442d76a7f  gcc/testsuite/gm2/pim/pass/record3.mod
+ 489f0b8b3d648b38f6ea4fb1182474c9  gcc/testsuite/gm2/pim/pass/record4.mod
+ 27dfc03575866c7d760b1df417e03b0e  gcc/testsuite/gm2/pim/pass/record5.mod
+ 6e2a20b2e19986aae7749d989a057fa3  gcc/testsuite/gm2/pim/pass/record6.mod
+ 44d006626b4af61b0e9a9eedb4ac32eb  gcc/testsuite/gm2/pim/pass/record7.mod
+ 4e14a8b30c69ee6ecae52a0ad67e4699  gcc/testsuite/gm2/pim/pass/record8.mod
+ 0a807008c579bcf4014c389bdd458852  gcc/testsuite/gm2/pim/pass/record9.mod
+ 34fd0af4dfe40172b29aeea197b74e3a  gcc/testsuite/gm2/pim/pass/recordarray.c
+ d9be681d6ca4e5de347d0d197fd6e1a1  gcc/testsuite/gm2/pim/pass/recordarray.mod
+ 76cad0910073d24227d3f55e4771a3d1  gcc/testsuite/gm2/pim/pass/recordarray2.mod
+ acfdeaa19c6ac31f80f4ff4daf94f512  gcc/testsuite/gm2/pim/pass/redef.mod
+ 3bcee76a5a70a53fce55f8df3522cb34  gcc/testsuite/gm2/pim/pass/set10.mod
+ 5e6e974d67dce468207deeb4e4c8d55d  gcc/testsuite/gm2/pim/pass/set11.def
+ a36c0c76727bc2db3ae0f892733c520c  gcc/testsuite/gm2/pim/pass/set11.mod
+ db2d3c74d15d0066927cd473ad8689cb  gcc/testsuite/gm2/pim/pass/set12.mod
+ 73652663ffc74f2fea84f804607a6b96  gcc/testsuite/gm2/pim/pass/set4.mod
+ c1df22f97e3380dd2cc2ac545857e02d  gcc/testsuite/gm2/pim/pass/set5.mod
+ 923a6fd38bc562d9f86c305cb5d80c9c  gcc/testsuite/gm2/pim/pass/set6.mod
+ 1499386b3ac2624396ff3c5f0426bd71  gcc/testsuite/gm2/pim/pass/set7.mod
+ 3862ffc852d90810f7c7ae4f2eeb3ed9  gcc/testsuite/gm2/pim/pass/set8.mod
+ 6ba5237053a9e89c513465b170b07a70  gcc/testsuite/gm2/pim/pass/set9.mod
+ 52e0e42a0456e0fdb60076b56586cb7a  gcc/testsuite/gm2/pim/pass/setchar.mod
+ 4edd95f57a34b730fd49d4e42c5cff60  gcc/testsuite/gm2/pim/pass/setchar10.mod
+ 523080c839c3036f150d167239c6fc97  gcc/testsuite/gm2/pim/pass/setchar11.mod
+ 4150ff8229a45ff5b61a27c26aa19609  gcc/testsuite/gm2/pim/pass/setchar3.mod
+ bbf1f31ecc3abbdd2ff8f4cd922901bf  gcc/testsuite/gm2/pim/pass/setchar4.mod
+ e0cd3a74c53cc82afceabf4a03bc2be4  gcc/testsuite/gm2/pim/pass/setchar5.mod
+ 550e0d0323c68b4c11d8d9aeb153c718  gcc/testsuite/gm2/pim/pass/setchar7.mod
+ 26885081fe472114f28f5b33cffdffb0  gcc/testsuite/gm2/pim/pass/setchar8.mod
+ ac1ebb5c9ff9d96d10ac39e4bc5b7e70  gcc/testsuite/gm2/pim/pass/setchar9.mod
+ 0ec51dad94c904efaf32180ed6ad39fc  gcc/testsuite/gm2/pim/pass/setconst.mod
+ 69055f3c9402d220a38c8fdf393aee1b  gcc/testsuite/gm2/pim/pass/setconst2.mod
+ e639e1793aebfbd57261a8de5df95b4a  gcc/testsuite/gm2/pim/pass/setconst3.mod
+ 76271e35736a7ab5a33eef0b7ab04376  gcc/testsuite/gm2/pim/pass/setenum.mod
+ 36b3d7d53d45bd83ac91a8209f75b25e  gcc/testsuite/gm2/pim/pass/setimp.mod
+ 20cd84408a0455d96e38310bbfe647d3  gcc/testsuite/gm2/pim/pass/setimp2.mod
+ f86db7b819584619a7c4e0e561503af4  gcc/testsuite/gm2/pim/pass/setofchar.mod
+ 138ee0adef91f1563bcdec960bfb07de  gcc/testsuite/gm2/pim/pass/setoverflow.mod
+ 2d1de0c4af3b69c5ea83728889e7d327  gcc/testsuite/gm2/pim/pass/sets.mod
+ 36a4369e4d4cb2f91ca7b4c155ac6d80  gcc/testsuite/gm2/pim/pass/sets2.mod
+ 6ff7e2688d8f5eb7a38785cdfa2b8867  gcc/testsuite/gm2/pim/pass/sets3.mod
+ 954cd064a01dfa5dac43d07a65de8021  gcc/testsuite/gm2/pim/pass/sets4.mod
+ c164939a73b138d4dd13ebb76a419e45  gcc/testsuite/gm2/pim/pass/sets5.mod
+ 6068b646a569f590edfc0db396850bbf  gcc/testsuite/gm2/pim/pass/sets6.mod
+ 9ede49fc5625194928375624fa1178ba  gcc/testsuite/gm2/pim/pass/setsnul.mod
+ 940432c1fe66079e08b96f33e9f92de0  gcc/testsuite/gm2/pim/pass/settest1.mod
+ f6c511cb89bf9b5897274778b7a4739a  gcc/testsuite/gm2/pim/pass/settest2.mod
+ fcfffa45d38a9bcf8b3cac6930d365ea  gcc/testsuite/gm2/pim/pass/settest3.mod
+ 06ac3e6b62c4cc94c5c17c7e1a77db5d  gcc/testsuite/gm2/pim/pass/simpleproc.mod
+ 8f2101d0f85768455823970cd3046ce4  gcc/testsuite/gm2/pim/pass/sizes.mod
+ 02b8063fb9d9a6c7470941cad017f298  gcc/testsuite/gm2/pim/pass/sizetype.mod
+ 44dbf1b662ea2e31c9b2af5bac6faf68  gcc/testsuite/gm2/pim/pass/smallset1.mod
+ c8d0610feab0a653feb69e7ac7829bb7  gcc/testsuite/gm2/pim/pass/smallset2.mod
+ 28bf9350ecd72ef84c70d9efcd790926  gcc/testsuite/gm2/pim/pass/smallset3.mod
+ 5819a0816a9efd57274453f64883b844  gcc/testsuite/gm2/pim/pass/smallset4.mod
+ 2b9a99517252580d7f590a7769325831  gcc/testsuite/gm2/pim/pass/smallset5.mod
+ 1d40489b50d943b58ae893d11a0e4922  gcc/testsuite/gm2/pim/pass/smallset6.mod
+ bcf2cdc6bae7a2fa48cfb28c95cbdb32  gcc/testsuite/gm2/pim/pass/smallset7.mod
+ b9ea9be151aa0650f6c201b0e648c29f  gcc/testsuite/gm2/pim/pass/stabs.mod
+ d15918636ed75ff0f069eff3cf8ea949  gcc/testsuite/gm2/pim/pass/stdio.mod
+ 0e9ea944cdd56cb6eb939b11ad371a70  gcc/testsuite/gm2/pim/pass/str1.mod
+ 6858d0d189cb43fad742c77e08f82452  gcc/testsuite/gm2/pim/pass/str2.mod
+ 2a0bf658f1ec9df0794e893dcbe50dc6  gcc/testsuite/gm2/pim/pass/str3.mod
+ 85211bc3266cecfab6ef5af5ab47c2a8  gcc/testsuite/gm2/pim/pass/str4.mod
+ e82fbad0978538f729d25ee30164b833  gcc/testsuite/gm2/pim/pass/str5.mod
+ 8a7c19bdf27218cba87d3a09856652c2  gcc/testsuite/gm2/pim/pass/stressset.mod
+ bd93ed27bb4295dac0b15c0a6d42dbec  gcc/testsuite/gm2/pim/pass/stringassign.mod
+ 8fba0e3a8dd422f9aa165f6e89c6f2b8  gcc/testsuite/gm2/pim/pass/stringopaq.mod
+ c3b57326a6ac7273da7f438ea5ab5767  gcc/testsuite/gm2/pim/pass/strings.mod
+ 6ca3dbb0952ad4df170e9fb72ec9d1a3  gcc/testsuite/gm2/pim/pass/strparam.def
+ de47e30576839ab46e6eea6acf366d46  gcc/testsuite/gm2/pim/pass/strparam.mod
+ cbf4b94771bced34db5c9e92b6a74452  gcc/testsuite/gm2/pim/pass/subrange.mod
+ fb656fe6359dad713f876cf81f73d3ca  gcc/testsuite/gm2/pim/pass/subrange10.mod
+ 9dcabf784fe724b4cf38754fa0158c06  gcc/testsuite/gm2/pim/pass/subrange11.mod
+ bbe108537d97725900b6029d553aad3c  gcc/testsuite/gm2/pim/pass/subrange12.mod
+ 8fa897b975bb8d5b58268e121f9cc041  gcc/testsuite/gm2/pim/pass/subrange14.mod
+ 16ff983bb77649ced03da11ef51fb627  gcc/testsuite/gm2/pim/pass/subrange15.mod
+ 33e37e82b8a807f853336642db336402  gcc/testsuite/gm2/pim/pass/subrange16.mod
+ 423be1bc6c6c08618862fe9caefd7a6b  gcc/testsuite/gm2/pim/pass/subrange17.mod
+ ecb792f1ddaa9528ab5331633527cec5  gcc/testsuite/gm2/pim/pass/subrange2.mod
+ edde41154fa625531153be9d68a6151e  gcc/testsuite/gm2/pim/pass/subrange3.mod
+ 689b26fe3d7a31943816bed49121a6d4  gcc/testsuite/gm2/pim/pass/subrange4.mod
+ e917f1c1e3e35536c71ef7c963c6e58b  gcc/testsuite/gm2/pim/pass/subrange5.mod
+ 55cc825cf091aa768e88d4aaf0e60ec5  gcc/testsuite/gm2/pim/pass/subrange6.mod
+ b8373fd2b4cde5a8f30d123fe52e0e90  gcc/testsuite/gm2/pim/pass/subrange7.mod
+ 9ca27e5765fb4452d16ecb524393bf2d  gcc/testsuite/gm2/pim/pass/subrange8.mod
+ 8ba85150710915fb6745d7a82b498251  gcc/testsuite/gm2/pim/pass/subrange9.mod
+ 92f59236f6ab43152bdcad0ed509bf7a  gcc/testsuite/gm2/pim/pass/test2recursive.mod
+ 26d7e0e4b3821e91152bdb2b9da40427  gcc/testsuite/gm2/pim/pass/testabs.mod
+ 503ddf13b67f975bbd3d41f862af1375  gcc/testsuite/gm2/pim/pass/testbuiltin.mod
+ d6c99ba22b69a1079337e79ddbcff808  gcc/testsuite/gm2/pim/pass/testbuiltin2.mod
+ c95560a1837cb8a988f200da9a035cd0  gcc/testsuite/gm2/pim/pass/testbuiltstr.mod
+ 12bc2a8bff688d8b43daee8d26d586ac  gcc/testsuite/gm2/pim/pass/testcap.mod
+ c195ea5badf3ecd04a05dc31d2faa53f  gcc/testsuite/gm2/pim/pass/testcap2.mod
+ 066787118a5c0f7e02e79e0c197fbf2f  gcc/testsuite/gm2/pim/pass/testcard.mod
+ c0d4417ec327bb9c5f00518f6b2fbd39  gcc/testsuite/gm2/pim/pass/testcard2.mod
+ 0525175e47809ceb9453ce81c58d5988  gcc/testsuite/gm2/pim/pass/testcard3.mod
+ 988dea741a39897a72f9e871b2560f27  gcc/testsuite/gm2/pim/pass/testcard4.mod
+ 3d77eb8b78ac2fd917ea83621724dbff  gcc/testsuite/gm2/pim/pass/testcard5.mod
+ 7b3a5882166169703aefae711eb2f7f9  gcc/testsuite/gm2/pim/pass/testcase.mod
+ a9268720ce99de81f95d35ffac549caa  gcc/testsuite/gm2/pim/pass/testcase2.mod
+ daace0e6653263093cf365b039c15d7a  gcc/testsuite/gm2/pim/pass/testcase3.mod
+ 92e95b2f3216e860c2b11e88fb011e06  gcc/testsuite/gm2/pim/pass/testcase4.mod
+ 001e45e6e8d7d78763f2c87640956925  gcc/testsuite/gm2/pim/pass/testchar.mod
+ aee096a125f121c9ac0d29d85b2adbdc  gcc/testsuite/gm2/pim/pass/testfloat.mod
+ 256bdff7549350126fb175915a7b64a8  gcc/testsuite/gm2/pim/pass/testfloat2.mod
+ 96e2624e7a4859d479d8812d7c1d7d6e  gcc/testsuite/gm2/pim/pass/testfloat3.mod
+ bbcfaf1f9b8ab6b34dcba2c13ab0ef62  gcc/testsuite/gm2/pim/pass/testfloat4.mod
+ 5ecacf71ad44046a514ba4a698fc5dd9  gcc/testsuite/gm2/pim/pass/testfor.mod
+ d8c314b4b796b34f90204b12e260c272  gcc/testsuite/gm2/pim/pass/testimpvar.mod
+ bb046332dacf9dd6085c6bd3d97fc231  gcc/testsuite/gm2/pim/pass/testlong3.mod
+ 66668852cb867ba16c43c09c3ca488e2  gcc/testsuite/gm2/pim/pass/testmod.mod
+ 9a352afb98012cbc41ea4e923c608aa5  gcc/testsuite/gm2/pim/pass/testmod2.mod
+ 5107f89f72b8a043b8c0eead21eb2f06  gcc/testsuite/gm2/pim/pass/testodd.mod
+ f20eb58c2e6aa8a25d33d4f6a9392eca  gcc/testsuite/gm2/pim/pass/testopaque.mod
+ aed9f20f2eaefed1c2be4ac813e4fa28  gcc/testsuite/gm2/pim/pass/testopaque2.mod
+ 38e0b500ffce52e9d07f28e66f360a4f  gcc/testsuite/gm2/pim/pass/testopaque3.mod
+ 314bde7ffe8e87137116fc95c3f1ead6  gcc/testsuite/gm2/pim/pass/testord.mod
+ e84c7a4c930b091640eef3f841eab711  gcc/testsuite/gm2/pim/pass/testparam.mod
+ a1d9044d42bf5d2e656ddce7432f6928  gcc/testsuite/gm2/pim/pass/testparam2.mod
+ 554a454005daf4c40a260a606d378cd9  gcc/testsuite/gm2/pim/pass/testparam3.mod
+ d328942477ab4c4bbd5e7a038d58b452  gcc/testsuite/gm2/pim/pass/testpimsize.mod
+ 812c88c6cf86d5504c81464f100f64b8  gcc/testsuite/gm2/pim/pass/testrecursive.def
+ ab9a878f7ac62803a984cb6d5108710b  gcc/testsuite/gm2/pim/pass/testrecursive.mod
+ 2587999bdb2b16126896626222d52208  gcc/testsuite/gm2/pim/pass/testreturnstr.mod
+ e50d6f480499eca5f56f1cc33e401f68  gcc/testsuite/gm2/pim/pass/testset.mod
+ 2c62720d02c7843b313c1c581edc215c  gcc/testsuite/gm2/pim/pass/testshort.mod
+ 5cb9e39c6e81b7a2228873db32aeec5c  gcc/testsuite/gm2/pim/pass/testsinf.mod
+ cce3b11c80bfaa050f9fcd714bbfec6b  gcc/testsuite/gm2/pim/pass/testsinl.mod
+ 7035aa45374f59f37b971fa6b50da4f2  gcc/testsuite/gm2/pim/pass/testsize.mod
+ f4f9aa0135b313903e7725725c4385e1  gcc/testsuite/gm2/pim/pass/testvar.mod
+ 2766ea673865a5df26f15613124635c6  gcc/testsuite/gm2/pim/pass/testvarin.mod
+ a3c1301ea024074c9366c4c040c30c58  gcc/testsuite/gm2/pim/pass/timeio.mod
+ f9a69e63d5cd69eba1535f2774b2439b  gcc/testsuite/gm2/pim/pass/timeio2.mod
+ 15a371045a8d153776c3929053091f38  gcc/testsuite/gm2/pim/pass/timeio3.mod
+ ad9c0156d269cf37a5355b921112a9bc  gcc/testsuite/gm2/pim/pass/timeio4.mod
+ 62690bff3e0936fc77582389b3cf5403  gcc/testsuite/gm2/pim/pass/timeio5.mod
+ 020106f3753a1846ce282b0e6d20a306  gcc/testsuite/gm2/pim/pass/timeio6.mod
+ 3555b4dcb24e0835f706ff5100baca19  gcc/testsuite/gm2/pim/pass/timeio7.mod
+ d05cb028992367dd6620a4afa4f8a8c7  gcc/testsuite/gm2/pim/pass/timeio8.mod
+ f7817d4b4261f2dd4f1fdae54eac1823  gcc/testsuite/gm2/pim/pass/timeio9.mod
+ 4d7a8c28686c558024da07cfb6aa6fbe  gcc/testsuite/gm2/pim/pass/tinyalloc.mod
+ 70850e18e74666cbf1952e17f76bd592  gcc/testsuite/gm2/pim/pass/tinyarray.mod
+ 2f7548c2d165986e8180a30ec6a75677  gcc/testsuite/gm2/pim/pass/tinyarray2.mod
+ 4f76903fc5c7a182b998fbbfb86aa24d  gcc/testsuite/gm2/pim/pass/tinyarray3.mod
+ 12a6e0911bd7a3400d9526d11a2a6f08  gcc/testsuite/gm2/pim/pass/tinyarray4.mod
+ 24c6ffbb2f4a986b7fe5ee54eaafd5f8  gcc/testsuite/gm2/pim/pass/tinyarray5.mod
+ 9f61dc6c2b7c1d9c88f1365923e9996b  gcc/testsuite/gm2/pim/pass/tinyarray6.mod
+ abf6642565c400f0aa1c6b41c9525911  gcc/testsuite/gm2/pim/pass/tinyassign.def
+ a87107f946e1828820509fb41580273a  gcc/testsuite/gm2/pim/pass/tinyassign.mod
+ 2ede72d0548ae399fda81496c0a0e6e8  gcc/testsuite/gm2/pim/pass/tinyassign2.mod
+ 9ee7bbc6c829003a2a6398535172cdaf  gcc/testsuite/gm2/pim/pass/tinyassign3.mod
+ cfb4ed96cd129b271740693516afcf7d  gcc/testsuite/gm2/pim/pass/tinyassign4.mod
+ 744215bed8dd24319f689fea9082e23b  gcc/testsuite/gm2/pim/pass/tinyassign5.mod
+ cb176760f188d7e520f257124b24f691  gcc/testsuite/gm2/pim/pass/tinybitset.mod
+ 8ab8ab672ff0be74b76adcbd497e3c8b  gcc/testsuite/gm2/pim/pass/tinyelse.mod
+ 57423668350f2f9faa8a450642de6a93  gcc/testsuite/gm2/pim/pass/tinyenum.mod
+ b84290a2e678c200204a5b0fe566f51f  gcc/testsuite/gm2/pim/pass/tinyfor.mod
+ 721d41388034799f66a669a5af2403f7  gcc/testsuite/gm2/pim/pass/tinyfor2.mod
+ 82abdcb75c9364d20ace80b4ca177b17  gcc/testsuite/gm2/pim/pass/tinyfor3.mod
+ 03a0940203b517c49c1caec7a512ad1d  gcc/testsuite/gm2/pim/pass/tinyhalt.mod
+ 35e940ff3167f282c4881a5ce00e006d  gcc/testsuite/gm2/pim/pass/tinyhello.mod
+ 96de4f710674edfae6c6914b38880a62  gcc/testsuite/gm2/pim/pass/tinyif.mod
+ daa2e1378ae2229ebaa1b2e6eebe1d4e  gcc/testsuite/gm2/pim/pass/tinyif2.mod
+ ddf810afd7887b2fe2aae20a24be39fb  gcc/testsuite/gm2/pim/pass/tinyif3.mod
+ e1a5e93ae00d65eb33dbc2595e97c8e9  gcc/testsuite/gm2/pim/pass/tinyif4.mod
+ ab8655b87aeccab420058421d0058117  gcc/testsuite/gm2/pim/pass/tinyif5.mod
+ 8c570365dd7739d0ce10dc15e4b09a14  gcc/testsuite/gm2/pim/pass/tinyif6.mod
+ 473208c8cbfb1b7de707aff40d7c4625  gcc/testsuite/gm2/pim/pass/tinyif7.mod
+ 4556457bca6d8d91dd4750b0e138ca60  gcc/testsuite/gm2/pim/pass/tinyif8.mod
+ ce201b9636fa72be7eadc3c9fd6bae4f  gcc/testsuite/gm2/pim/pass/tinyimp.mod
+ 06f9d8ec2755e814b11774640d49ded3  gcc/testsuite/gm2/pim/pass/tinylit.mod
+ 889b73446a16a1ff8ad21ddd166abecd  gcc/testsuite/gm2/pim/pass/tinylit2.mod
+ 1aa50c02da8a3e6b78e4afe4027a7cc5  gcc/testsuite/gm2/pim/pass/tinymax.mod
+ dd4bb42a2da0e2beb2a7b85c4defb6fe  gcc/testsuite/gm2/pim/pass/tinymod.mod
+ 4e33ca6a61a1c7ab50c020f56b3e7f99  gcc/testsuite/gm2/pim/pass/tinynode.mod
+ 58d2fb0516a7c9cc187532719f49bf15  gcc/testsuite/gm2/pim/pass/tinyparam.mod
+ 22eb92ef98a2451ca5a62433b9a67ce3  gcc/testsuite/gm2/pim/pass/tinyparam2.mod
+ fb0eaaa783a6e0b612cf9870d03582b9  gcc/testsuite/gm2/pim/pass/tinyplus.mod
+ e7265f5f6ea67ac228964e7dd08cc19f  gcc/testsuite/gm2/pim/pass/tinyproc.mod
+ 60eaf21927a0a0dc22b14ba164dc61ee  gcc/testsuite/gm2/pim/pass/tinyproc2.mod
+ 1b633f62330cb93cbc17dc2b4c8b64eb  gcc/testsuite/gm2/pim/pass/tinyproc3.mod
+ 27cd1da095e159ef9e9baf2acdb1de0e  gcc/testsuite/gm2/pim/pass/tinyproc4.mod
+ c55e402ffa9e8ade45b0c8d84dae0c35  gcc/testsuite/gm2/pim/pass/tinyproc5.mod
+ 02d987d7fa5815f8d6970bf930f3a64b  gcc/testsuite/gm2/pim/pass/tinyproc6.mod
+ 9b66012bf90da0755d6985c5142c2008  gcc/testsuite/gm2/pim/pass/tinyptr.mod
+ 16cfa11d1d7d7cb0ca5287c3c85f896a  gcc/testsuite/gm2/pim/pass/tinyreal.mod
+ 5455c1987e7256a4741b8df8c4ba5b3c  gcc/testsuite/gm2/pim/pass/tinyrecord.mod
+ 20b6d04c898ccb62f61fc160cd403f5c  gcc/testsuite/gm2/pim/pass/tinyrepeat.mod
+ 9f4c7d0d91aa2f2dca6bdd4c532e52ee  gcc/testsuite/gm2/pim/pass/tinyset6.mod
+ 395314c56cd4515846b905de8e33183b  gcc/testsuite/gm2/pim/pass/tinyset7.mod
+ 5cacbc141f72c044eea9d232f86e400c  gcc/testsuite/gm2/pim/pass/tinystate.mod
+ 98507eb9e71383412c2c4d13cdc2b30b  gcc/testsuite/gm2/pim/pass/tinysub.def
+ 9ec0aa5aae18eceaeb85f24b6cac6218  gcc/testsuite/gm2/pim/pass/tinytest.mod
+ 3973957cd4023b7451ed10ae685b991d  gcc/testsuite/gm2/pim/pass/tinytrue.mod
+ 7e623bb56a9c92cfc8d69c689adc91f6  gcc/testsuite/gm2/pim/pass/tinyvar.mod
+ 226b482f49a55c0b831b61be64e89296  gcc/testsuite/gm2/pim/pass/tinyvar2.mod
+ 8a3e126a19dd04e4c9b42316e7702118  gcc/testsuite/gm2/pim/pass/tinyvar3.mod
+ 27209cb7408ec8bcaec001b4c8bf4ac7  gcc/testsuite/gm2/pim/pass/tinyvar4.mod
+ d87152d739e2438b9ae53e42dc0abbd6  gcc/testsuite/gm2/pim/pass/tinyvar5.mod
+ 0b84cfce0a2e43992b71613749e52a4d  gcc/testsuite/gm2/pim/pass/tinyvarient.mod
+ 29afe8976c40602a83fcb12b023cac5a  gcc/testsuite/gm2/pim/pass/tinyvarient2.mod
+ 81f6827c2f1744c986da4c9c4709aaa2  gcc/testsuite/gm2/pim/pass/tinyvarient3.def
+ 72c43d2e5e294b87203bed6bdd3774f1  gcc/testsuite/gm2/pim/pass/tinyvarient3.mod
+ b4d1549a61b94c0b32b8f0eb52df42e5  gcc/testsuite/gm2/pim/pass/tinyvarient4.mod
+ aa50524760d3ffe2a76706bcf49d1cc0  gcc/testsuite/gm2/pim/pass/tinyvarient5.mod
+ 9406a3324f7b51bf659436a1ad1c7680  gcc/testsuite/gm2/pim/pass/tinyvarient6.mod
+ 7c3c672512b03d23968ae7d12a326480  gcc/testsuite/gm2/pim/pass/tinywhile.mod
+ 8091334b11e77a2d17ba65d8ee994cc4  gcc/testsuite/gm2/pim/pass/tinywith.mod
+ e0f41581cb984c6d55087f1af972969e  gcc/testsuite/gm2/pim/pass/tinywith2.mod
+ 00834bf28fa676ddc52bed4a3e06e146  gcc/testsuite/gm2/pim/pass/tinywith3.mod
+ 67e82f97c007492572656a6ad93a4d95  gcc/testsuite/gm2/pim/pass/tinywith4.mod
+ 76c21c8cea07a5a153b6684bf8484c3e  gcc/testsuite/gm2/pim/pass/tinywith5.mod
+ f50e06ec9f678f9007b20fa5ec68a9df  gcc/testsuite/gm2/pim/pass/tinywith6.mod
+ d16408cac5fecde82827df06e17255e0  gcc/testsuite/gm2/pim/pass/trunc.mod
+ fdfe4fcdb5e855a21c73bb57edde296d  gcc/testsuite/gm2/pim/pass/try
+ 7b2287867c7b7651569ca17c83e16f74  gcc/testsuite/gm2/pim/pass/typeequiv.mod
+ 57af7c398eebd591dfb15094779f3160  gcc/testsuite/gm2/pim/pass/typeequiv2.mod
+ af5d853ccfa30d31fefd78b68595e83d  gcc/testsuite/gm2/pim/pass/typeequiv3.mod
+ d26e75fe688e238c91b21a5b6603d5f8  gcc/testsuite/gm2/pim/pass/typeonly.def
+ 9b03c2a182ad215fce279639f7ab63c6  gcc/testsuite/gm2/pim/pass/typeonly.mod
+ 7f6cae6f6af9d101dd497cdcd762449e  gcc/testsuite/gm2/pim/pass/typesize.mod
+ 18759a7011d006aee8db99820cc8faf0  gcc/testsuite/gm2/pim/pass/unbounded.mod
+ db93250b9882043af40d6e07c0f43fa0  gcc/testsuite/gm2/pim/pass/unbounded2.mod
+ 728885ccdcc67c6c07f952d050d2ccf1  gcc/testsuite/gm2/pim/pass/unbounded3.mod
+ 38093045555cd835b96184c512d73538  gcc/testsuite/gm2/pim/pass/v.def
+ b90fa67a9858435a142926a3b540b878  gcc/testsuite/gm2/pim/pass/varaddress.mod
+ 63775623e90143ce0ea607d958cd2253  gcc/testsuite/gm2/pim/pass/varaddress2.mod
+ 5d069a9f8002954ce8ccd8a3efda68ff  gcc/testsuite/gm2/pim/pass/varaddress3.mod
+ 1b142630001b9fdc32e5e50a9b138ba3  gcc/testsuite/gm2/pim/pass/varcard.mod
+ 4d28bff812f1af49e18c599265a47fc5  gcc/testsuite/gm2/pim/pass/variant9.mod
+ 2ed386fa42c29c66f3cad787c41a4d9e  gcc/testsuite/gm2/pim/pass/varient.mod
+ d59d65ffacbed542c275c7538039f5b6  gcc/testsuite/gm2/pim/pass/varient2.mod
+ b569de7c7baab964db5f31e71a4ac56a  gcc/testsuite/gm2/pim/pass/varient3.mod
+ e10696341abb193bc1c32d9d6ebe9cde  gcc/testsuite/gm2/pim/pass/varient4.mod
+ 04e83a24b94ef90c469a06bc518541e9  gcc/testsuite/gm2/pim/pass/varient5.mod
+ 3824e675327ed427d28e873ed0efdda4  gcc/testsuite/gm2/pim/pass/varient6.mod
+ 6710f36f07ea1a65aa8f9423649f1a8d  gcc/testsuite/gm2/pim/pass/varient7.mod
+ 622383e6e6007cea8b6bcf26b62650c4  gcc/testsuite/gm2/pim/pass/varient8.mod
+ 3a1e699a7f70960c0af2cc2bb4be69ef  gcc/testsuite/gm2/pim/pass/varin.def
+ 4f46b59994360b936438d27da0b1f9cd  gcc/testsuite/gm2/pim/pass/varin.mod
+ 827648d0584a5ce5bbbbb110ead8dc69  gcc/testsuite/gm2/pim/pass/varint.mod
+ e5ec8f741bf3890a308e757b87817d6f  gcc/testsuite/gm2/pim/pass/wincat.mod
+ d43f17e8e1c17b4cb6dd87d87fcc45c0  gcc/testsuite/gm2/pim/pass/with.mod
+ 78d8e8c4fe54512cfe7de8344e8c9c2c  gcc/testsuite/gm2/pim/pass/wordconst.mod
+ 38fc629f7fbe3d2562244d67dfd497f3  gcc/testsuite/gm2/pim/run/fail/case.mod
+ 0b4cd37dec2ac8233f355645ba4b0bcd  gcc/testsuite/gm2/pim/run/fail/nil.mod
+ 0d8c0c01c739b979eb96894bbcb0887f  gcc/testsuite/gm2/pim/run/fail/pim-run-fail.exp
+ 6174b2e1489669bd0373fae444f5162a  gcc/testsuite/gm2/pim/run/pass/Countdown.mod
+ 0a349d340d2808cfdb547269beddf0fd  gcc/testsuite/gm2/pim/run/pass/EndFor.def
+ 2f89bb797625b5193c6463a375ebd826  gcc/testsuite/gm2/pim/run/pass/EndFor.mod
+ ee2d5f0a9cbc9c80f46880706e57cd6a  gcc/testsuite/gm2/pim/run/pass/EnumTest.mod
+ 5752c77a932afac938cc61b7f0397134  gcc/testsuite/gm2/pim/run/pass/For1.mod
+ b05391215c3dc9dc361da754dba15352  gcc/testsuite/gm2/pim/run/pass/For10.mod
+ 86a4a933c30fac4bfeb2754b92f6aa69  gcc/testsuite/gm2/pim/run/pass/For11.mod
+ 6993ccc7cad8874966e167c0d256248f  gcc/testsuite/gm2/pim/run/pass/For12.mod
+ e7bdef0d52e12da4822dc44d4579e669  gcc/testsuite/gm2/pim/run/pass/For2.mod
+ a2fbc91ed4f02f1a20fa4bdd48df3865  gcc/testsuite/gm2/pim/run/pass/For3.mod
+ ba7633293f87e9a6804ad9d3e81b698d  gcc/testsuite/gm2/pim/run/pass/For4.mod
+ 757ae0bb4c97af02729380a9ef703325  gcc/testsuite/gm2/pim/run/pass/For5.mod
+ d9a4def1ccfcda9fbef0383ed9a3b0a3  gcc/testsuite/gm2/pim/run/pass/For6.mod
+ 0cbc37d7e762518b7f6d455ead438f80  gcc/testsuite/gm2/pim/run/pass/For7.mod
+ 04d57da643f54908625d1f724647e763  gcc/testsuite/gm2/pim/run/pass/For8.mod
+ fbe9a7212d06b46b726582400168a73f  gcc/testsuite/gm2/pim/run/pass/For9.mod
+ e2cb78c087de5624bde513f2686cd8fa  gcc/testsuite/gm2/pim/run/pass/FpuIOBug.mod
+ 83e11f28bc0633f791c5e4435fb753ba  gcc/testsuite/gm2/pim/run/pass/MaxReal.mod
+ 2572598f54cbc67cd25de7200d8a37fa  gcc/testsuite/gm2/pim/run/pass/MaxReal2.mod
+ 3c8f01301d8664128808287eec9318a5  gcc/testsuite/gm2/pim/run/pass/TestLong.mod
+ 9a232960b56152ada704500568ed7672  gcc/testsuite/gm2/pim/run/pass/TestLong2.mod
+ 17ad5e61910663fa3c2733b384663cf8  gcc/testsuite/gm2/pim/run/pass/TestLong4.mod
+ 7448f8e5f6981a40f4e8c431bbb28783  gcc/testsuite/gm2/pim/run/pass/TestLong5.mod
+ 09fcfa0f448e160e8365fb1a8b172c44  gcc/testsuite/gm2/pim/run/pass/addcharconst.mod
+ eedaba5ed60620132c2d794ccb87b825  gcc/testsuite/gm2/pim/run/pass/addrarray.mod
+ ff790e8f33afc6b8d93c99e37f14e010  gcc/testsuite/gm2/pim/run/pass/arraychar.mod
+ 9c8dd768e65d4ab760b24632ee2a1905  gcc/testsuite/gm2/pim/run/pass/arraychar2.mod
+ c15a785e62468945c7235d81cd9a4fc1  gcc/testsuite/gm2/pim/run/pass/arrayrecord.mod
+ 89660178e8dbea79e03ea2b4b61e0254  gcc/testsuite/gm2/pim/run/pass/bitsettest.def
+ abba6effeb29a02d88d0b004d2943439  gcc/testsuite/gm2/pim/run/pass/bitsettest.mod
+ 67ec7a7a2c8bf142408fb94b886bcb4b  gcc/testsuite/gm2/pim/run/pass/bytearray.mod
+ bcf3b9700ebb816feb0dcffcff74dcc6  gcc/testsuite/gm2/pim/run/pass/constdynstr.mod
+ daeeb87f8b14aaebb849dabfea9ff648  gcc/testsuite/gm2/pim/run/pass/conststr.mod
+ 763806baff36dcc7295f2df11f09dcea  gcc/testsuite/gm2/pim/run/pass/conststr2.mod
+ 199ec2b67b0445364db02e277a78b82e  gcc/testsuite/gm2/pim/run/pass/cycles.mod
+ 1622f782f23cd9f51ef818ad4217d78e  gcc/testsuite/gm2/pim/run/pass/dec.mod
+ 769a3770b8556984cb7dd5767fe495c4  gcc/testsuite/gm2/pim/run/pass/enums.mod
+ 2a1d41c511ebdf0b8eec1237f33882bc  gcc/testsuite/gm2/pim/run/pass/incsubrange.def
+ 8cc1599f3ba358d8eeb8188bd228a417  gcc/testsuite/gm2/pim/run/pass/incsubrange.mod
+ fb0f4ab006d1f132d650f6071fed6a67  gcc/testsuite/gm2/pim/run/pass/index3.mod
+ 3401966dd149042fddbedc57d62b9d06  gcc/testsuite/gm2/pim/run/pass/int16.mod
+ 76589f86f3f192bd5d66c08cae2e7065  gcc/testsuite/gm2/pim/run/pass/int32.mod
+ 01533992982457433a4acd5193dc9b32  gcc/testsuite/gm2/pim/run/pass/int8.mod
+ cb4edb21f112c9a41319c2e3fcff1551  gcc/testsuite/gm2/pim/run/pass/line.mod
+ d06152a9ca9b1fb43227d8f11693fbd4  gcc/testsuite/gm2/pim/run/pass/long.mod
+ 840fd61860b66d4e94fb12797014a1dc  gcc/testsuite/gm2/pim/run/pass/longfor.mod
+ 6edbb003d56b4c7730c6a584504491f4  gcc/testsuite/gm2/pim/run/pass/longtypes10.mod
+ 5cc33af60e585c30682aea72e771356f  gcc/testsuite/gm2/pim/run/pass/longtypes7.mod
+ a19238272ac55ac057474560fbfc9bf0  gcc/testsuite/gm2/pim/run/pass/longtypes8.mod
+ a6dd9768850faf2e8bc932bd78df1775  gcc/testsuite/gm2/pim/run/pass/longtypes9.mod
+ 202d78b816607a547e9bb3ec07dca43b  gcc/testsuite/gm2/pim/run/pass/math.mod
+ 1f448bd57f0f326248241ce4cf5b8ff0  gcc/testsuite/gm2/pim/run/pass/math2.mod
+ 53f4fa9844d20f075594e1a7a0a28b16  gcc/testsuite/gm2/pim/run/pass/mathconst.mod
+ 1e99cd635224bf803a07f99406e44edd  gcc/testsuite/gm2/pim/run/pass/minhello.mod
+ d5d68c940846ca69f1b74885607ec396  gcc/testsuite/gm2/pim/run/pass/minimal.mod
+ 7c19b7ef81536775f13d378cef4a4a67  gcc/testsuite/gm2/pim/run/pass/nestedproc.mod
+ 6d52f5b65bdd45fc3d56d9f8770ed39d  gcc/testsuite/gm2/pim/run/pass/nestedproc2.mod
+ 4487cf67b85c4ccc79445a189ac70fed  gcc/testsuite/gm2/pim/run/pass/nestedproc3.mod
+ 73586965faff8487f99e0afe5b921c74  gcc/testsuite/gm2/pim/run/pass/nestedproc4.mod
+ d083989b7afa0c7a9d6ca4c271ead534  gcc/testsuite/gm2/pim/run/pass/nestedproc5.mod
+ 8b48e5cc3d5700ca57b22e5db89f9e37  gcc/testsuite/gm2/pim/run/pass/nestedproc6.mod
+ a354604ff0a57790519a73ae758a4def  gcc/testsuite/gm2/pim/run/pass/nestedproc7.mod
+ 53c4f2a617b4be8d6e50f5bd4c53229e  gcc/testsuite/gm2/pim/run/pass/nestedwith.mod
+ 8c9d711a50f220f52d04836dd3f6c70b  gcc/testsuite/gm2/pim/run/pass/nestedwith2.mod
+ 09ff245bbb0c8265d2bf0fddccb18de1  gcc/testsuite/gm2/pim/run/pass/nestedwith3.mod
+ 51a5422c6de2ab8935b1a192f68c33bf  gcc/testsuite/gm2/pim/run/pass/nothing.mod
+ d543a0e3e34932a80b4643307cddf27e  gcc/testsuite/gm2/pim/run/pass/pim-run-pass.exp
+ 6520670a15bd426ddb9248bb66b28e70  gcc/testsuite/gm2/pim/run/pass/prog31ex.mod
+ 7ff19964979a5b55b4038c2bb770b4f4  gcc/testsuite/gm2/pim/run/pass/rts.mod
+ 6916c779dee4af845dad0adfecc0082c  gcc/testsuite/gm2/pim/run/pass/setcritical.mod
+ 7d9c2f4ac4b507c647649816ac375120  gcc/testsuite/gm2/pim/run/pass/setequiv.mod
+ 6cdfc14bc7ee63ca8da4013a71da87cd  gcc/testsuite/gm2/pim/run/pass/singlechar.mod
+ 772af1d52887633effa239759665d2d8  gcc/testsuite/gm2/pim/run/pass/str6.mod
+ 5d086db79153ca80a4e3146b2b21388c  gcc/testsuite/gm2/pim/run/pass/stringaddr.mod
+ 821d784f152c1e0d9269adf52667b903  gcc/testsuite/gm2/pim/run/pass/stringaddr2.def
+ ea05c07f44d4d4e654a93514bced9c1e  gcc/testsuite/gm2/pim/run/pass/stringaddr2.mod
+ 9b40d0ad6c7a669a092125fe6289671d  gcc/testsuite/gm2/pim/run/pass/stripped.mod
+ e99e6e01e108a8ea8bc10374ce75c00f  gcc/testsuite/gm2/pim/run/pass/sys.def
+ c505955d69348d8bea797b775d67141d  gcc/testsuite/gm2/pim/run/pass/sys.mod
+ dd2a8139b9755630c0a73730cfacbfd7  gcc/testsuite/gm2/pim/run/pass/t.def
+ a6b257b26db7094f690a0d63bd324a06  gcc/testsuite/gm2/pim/run/pass/testaddr.mod
+ 92dfc0fb7c39283328f103d39d013d38  gcc/testsuite/gm2/pim/run/pass/testaddr2.mod
+ f98a501b89414b479c23c311884fc57b  gcc/testsuite/gm2/pim/run/pass/testaddr3.mod
+ 04481dde8f96b7982e5341c00e042563  gcc/testsuite/gm2/pim/run/pass/testarray.mod
+ c196f7b8b9ddff4bc86ff84d47fcacb9  gcc/testsuite/gm2/pim/run/pass/testarray2.mod
+ bc4a6e33a4ecaae2c417b31cc8a8bf16  gcc/testsuite/gm2/pim/run/pass/testarray3.mod
+ c9b589a0e496ee1ec8abd7aac857cb77  gcc/testsuite/gm2/pim/run/pass/testarray4.mod
+ a6a912987dd69dc45e6ac1c7008c02cc  gcc/testsuite/gm2/pim/run/pass/testarray5.mod
+ f4d92d704297d6ac40734a514a93cfee  gcc/testsuite/gm2/pim/run/pass/testavail.mod
+ d24cd8ca7d27c2cc044ec77a77b80728  gcc/testsuite/gm2/pim/run/pass/testdiv.mod
+ 356c71c669af263079f04c1a50c0fb57  gcc/testsuite/gm2/pim/run/pass/testfpufunc.mod
+ d01b2e17646a295dc5ac99eace9e792c  gcc/testsuite/gm2/pim/run/pass/testfpufunc2.mod
+ c8b514b5b9718301c1cfb7bd82b0e9f0  gcc/testsuite/gm2/pim/run/pass/testlarge.mod
+ eb28384ede78f51ba82c8444fd6c8e78  gcc/testsuite/gm2/pim/run/pass/testlarge2.mod
+ 7a97129ca6271d4522895d2287ddb987  gcc/testsuite/gm2/pim/run/pass/testnextproc.mod
+ 715f70e614e531d112f6859d27c33a4b  gcc/testsuite/gm2/pim/run/pass/testparam.mod
+ cb16e2aca4a7a3f3be1460c680e660ae  gcc/testsuite/gm2/pim/run/pass/testreturnstr.mod
+ db013ad2ccc3c18537246e6f00174618  gcc/testsuite/gm2/pim/run/pass/testreturnstr2.mod
+ 8602158e171beb0f0daabd4368d99166  gcc/testsuite/gm2/pim/run/pass/testreturnstr3.def
+ 40b93959daea777e3642123fe6a2f349  gcc/testsuite/gm2/pim/run/pass/testreturnstr3.mod
+ cc3bbca460511dda4779c4bfec732a6d  gcc/testsuite/gm2/pim/run/pass/testsize.mod
+ ad124094663a263f87604c66c8bed248  gcc/testsuite/gm2/pim/run/pass/testsize2.mod
+ 5eac39bf3a7f2b4fc816d39f813db8a1  gcc/testsuite/gm2/pim/run/pass/testsize3.mod
+ 46fa9ea4c9b8c600c356e72e338c92bb  gcc/testsuite/gm2/pim/run/pass/testsize4.mod
+ e8b9b032f8bcfa621cfdc4f6d25e1b9a  gcc/testsuite/gm2/pim/run/pass/testtbitsize.mod
+ e248e66114ea6047d5c08d9991570922  gcc/testsuite/gm2/pim/run/pass/tinywith.mod
+ f4f8d23df0f1a9b99b0109a940ba8a4e  gcc/testsuite/gm2/pim/run/pass/unbounded.mod
+ 5d069a9f8002954ce8ccd8a3efda68ff  gcc/testsuite/gm2/pim/run/pass/varaddress3.mod
+ 8fb7f76c8b0b6fad17b3a9eea70d0dbb  gcc/testsuite/gm2/pim/run/pass/varparam2.mod
+ 39f33999082ad382fdc8c95e8dddbf74  gcc/testsuite/gm2/pim/run/pass/varparam3.mod
+ 1370c574b062eefc4bd9731446ccda0c  gcc/testsuite/gm2/pim/run/pass/varparm.mod
+ 16ef7b8c82da9cb2df39ca6c14380d96  gcc/testsuite/gm2/pim/run/pass/wr.mod
+ 82f55b7bc543645382f6aa7d85b9a5ec  gcc/testsuite/gm2/pimcoroutines/pass/imports.mod
+ 01e778d7ddc85428a5104010bc2f4b5d  gcc/testsuite/gm2/pimcoroutines/pass/imports2.mod
+ 876fad3f7388d0f1542e901fd3ede156  gcc/testsuite/gm2/pimcoroutines/pass/pimcoroutines-pass.exp
+ 7fe75afca721b703bf451e5ba1d44656  gcc/testsuite/gm2/pimcoroutines/run/pass/pimcoroutines-run-pass.exp
+ c953eb0b38fdc8c2f9526508f1594b00  gcc/testsuite/gm2/pimcoroutines/run/pass/testtime.mod
+ 941a3483c8a10137ae148130da144c48  gcc/testsuite/gm2/pimlib/base/run/pass/FIO.mod
+ 0de2a4029cfe9e1ca579c68f9596e248  gcc/testsuite/gm2/pimlib/base/run/pass/StrLib.mod
+ d67a566bf418897692395e9f893c4320  gcc/testsuite/gm2/pimlib/base/run/pass/pimlib-base-run-pass.exp
+ 0dcaef09d969b7670f7ae3450706ad2a  gcc/testsuite/gm2/pimlib/base/run/pass/testconvert.mod
+ 2f547e789a0c3fd17329d8092c3bd59f  gcc/testsuite/gm2/pimlib/coroutines/pass/pimlib-coroutines-pass.exp
+ 3679bb7285981f2bd6b8e9050de5e897  gcc/testsuite/gm2/pimlib/coroutines/pass/priority.mod
+ 26036b6dc8485eeb5158fc7e24c5a90c  gcc/testsuite/gm2/pimlib/coroutines/pass/priority2.mod
+ fbe43207fd53890d57192fcfdd758fa8  gcc/testsuite/gm2/pimlib/coroutines/pass/priority3.def
+ a9e267cb82ed2df230b3e58b4c907ddf  gcc/testsuite/gm2/pimlib/coroutines/pass/priority3.mod
+ 9ba26e57db6af1c3a3c5376c993933b9  gcc/testsuite/gm2/pimlib/logitech/pass/LogitechLong.mod
+ 5d1b40280ae1ffdc259d0bb704d872b5  gcc/testsuite/gm2/pimlib/logitech/pass/hello.mod
+ 516d32fd43a2c79c62a4cb937d784388  gcc/testsuite/gm2/pimlib/logitech/pass/pimlib-logitech-pass.exp
+ 2b75d46d6119bc0814d43be6f649392d  gcc/testsuite/gm2/pimlib/logitech/run/pass/bbits.mod
+ 5d1b40280ae1ffdc259d0bb704d872b5  gcc/testsuite/gm2/pimlib/logitech/run/pass/hello.mod
+ d7c77f2b9d5d381ef79361d07b23e4ce  gcc/testsuite/gm2/pimlib/logitech/run/pass/helloinout.mod
+ 9257fb3162b0afc1167d950bbe808001  gcc/testsuite/gm2/pimlib/logitech/run/pass/intb.mod
+ 7df889d2afddd18c06a4470a9d97ecc4  gcc/testsuite/gm2/pimlib/logitech/run/pass/pimlib-logitech-run-pass.exp
+ d40e552b6af151dc78a4c2501dd490b7  gcc/testsuite/gm2/pimlib/logitech/run/pass/realconv.mod
+ bc32d4230d22e40bfcb1e74bb392ab97  gcc/testsuite/gm2/pimlib/logitech/run/pass/realinput.mod
+ 48bea14426a2eb3497c75d91b28ead48  gcc/testsuite/gm2/pimlib/logitech/run/pass/realinput2.mod
+ 86bd87e23026ed6bf9dab38da47fd638  gcc/testsuite/gm2/pimlib/logitech/run/pass/realinput3.mod
+ 6de5e9c5a7b2bb68088a9983d496b0ef  gcc/testsuite/gm2/pimlib/logitech/run/pass/rename.mod
+ 00248d5f46033daa8b9856ff2869e3e5  gcc/testsuite/gm2/pimlib/logitech/run/pass/timedate.mod
+ cb7f18d9d8e9955ad964a25e931aacba  gcc/testsuite/gm2/pimlib/logitech/run/pass/writeoct.mod
+ 81eab37fb45a49d5f470a33f4e651c64  gcc/testsuite/gm2/pimlib/pass/pimlib-pass.exp
+ b434571f14dc637407f321e185093bce  gcc/testsuite/gm2/pimlib/run/pass/format.mod
+ 4c7f4f9d21d983dcdc9bdfa024e5f610  gcc/testsuite/gm2/pimlib/run/pass/limittests.c
+ 6054ee07cec468d62f9f85c2a854c050  gcc/testsuite/gm2/pimlib/run/pass/limittests.mod
+ 94e872e38c7828c388ce3c4a5cfd3ca3  gcc/testsuite/gm2/pimlib/run/pass/longreal.mod
+ 7df889d2afddd18c06a4470a9d97ecc4  gcc/testsuite/gm2/pimlib/run/pass/pimlib-run-pass.exp
+ 19fbabb90573435e066566857d602ff9  gcc/testsuite/gm2/pimlib/run/pass/test.c
+ 03835ac6724df96b735b599622c5ed72  gcc/testsuite/gm2/pimlib/run/pass/testreal.mod
+ 6cd4e8bb0e0f2f90962a1667f6d2c50f  gcc/testsuite/gm2/pimlib/run/pass/testreal2.mod
+ 15b6dac89ee25f9c41909c8cab7033a9  gcc/testsuite/gm2/pimlib/run/pass/testreal4.mod
+ d42665273dfdf6111268f44c425bef5a  gcc/testsuite/gm2/projects/README
+ 9a671ebc8f4bdad366a08a252439855c  gcc/testsuite/gm2/projects/iso/run/pass/halma/halma.mod
+ 3e8fc6d8d1060b59318e0bb94e248e5c  gcc/testsuite/gm2/projects/iso/run/pass/halma/projects-iso-run-pass-halma.exp
+ 663144335381bfcd7bfe7a46bf13191b  gcc/testsuite/gm2/projects/iso/run/pass/hello/hello.mod
+ 3e8fc6d8d1060b59318e0bb94e248e5c  gcc/testsuite/gm2/projects/iso/run/pass/hello/projects-iso-run-pass-hello.exp
+ c1a5f9c2c2d2d2b4ae34492728dc7169  gcc/testsuite/gm2/projects/iso/small/run/pass/iso-extended-opaque-run-pass.exp
+ b45afeaab70f1f8a13e0efe9b2520a3c  gcc/testsuite/gm2/projects/iso/small/run/pass/stressset.def
+ 5769b725a73103f0bfd47f99925f7b77  gcc/testsuite/gm2/projects/iso/small/run/pass/stressset.mod
+ bed0d51b88d635421ca42903e51c031a  gcc/testsuite/gm2/projects/iso/small/run/pass/test1.mod
+ e2fc89249d61235ed1058216be8d9ebd  gcc/testsuite/gm2/projects/iso/small/run/pass/testlib.def
+ 35b03c29a5246125d75887214885df57  gcc/testsuite/gm2/projects/iso/small/run/pass/testlib.mod
+ 5f617579b6549693c5867d12168bd834  gcc/testsuite/gm2/projects/iso/small/run/pass/testset.mod
+ 01f9ac978e666fe34aafe35e243d4ba0  gcc/testsuite/gm2/projects/log/run/pass/hello/hello.mod
+ 68601c5eec45b11ab5d6675bfe1605d5  gcc/testsuite/gm2/projects/log/run/pass/hello/projects-log-run-pass-hello.exp
+ 6d82c9c4ae47ee7aa725b73c98c9a0c3  gcc/testsuite/gm2/projects/pim/run/pass/hello/hello.mod
+ e09f575ae33c4b995778cecda661e9e6  gcc/testsuite/gm2/projects/pim/run/pass/hello/projects-pim-run-pass-hello.exp
+ f615be835b3b4ef5b2c8aff9f91f2fc9  gcc/testsuite/gm2/projects/pim/run/pass/random/AdvMap.def
+ f707e419c0eb663f20c80d0045e4869f  gcc/testsuite/gm2/projects/pim/run/pass/random/AdvMap.mod
+ bfa095d9472f9b907473f1790dee224a  gcc/testsuite/gm2/projects/pim/run/pass/random/BoxMap.def
+ 383d833f6efdf2909d176baf61335b2a  gcc/testsuite/gm2/projects/pim/run/pass/random/BoxMap.mod
+ 0435a11b55d89cbb733043c602cb5717  gcc/testsuite/gm2/projects/pim/run/pass/random/Chance.def
+ 4adb8779ff4e9c2c34ba6b1fa12effa7  gcc/testsuite/gm2/projects/pim/run/pass/random/Chance.mod
+ e28a25b135c5db1f4dae3988cfa0d080  gcc/testsuite/gm2/projects/pim/run/pass/random/Geometry.def
+ ab72bd0daafa0e8b0900a7f43ccd2f01  gcc/testsuite/gm2/projects/pim/run/pass/random/Geometry.mod
+ 190fbc9ed328e9dc4bfbd8144dfe2bf7  gcc/testsuite/gm2/projects/pim/run/pass/random/MakeBoxes.def
+ aa1f41a867ddc621c5773c381a11d871  gcc/testsuite/gm2/projects/pim/run/pass/random/MakeBoxes.mod
+ 96523f86bcdd7cdc98188567eb89f760  gcc/testsuite/gm2/projects/pim/run/pass/random/Map.mod
+ 36ec3774d6f7ea2390fe9c5e86aceac0  gcc/testsuite/gm2/projects/pim/run/pass/random/MapOptions.def
+ b2b160dcd71c2f413a7eed59b599fa32  gcc/testsuite/gm2/projects/pim/run/pass/random/MapOptions.mod
+ de4e13c8e29b93a46df68612f26fca68  gcc/testsuite/gm2/projects/pim/run/pass/random/Options.def
+ 103afaefb845239205ee2541954f0925  gcc/testsuite/gm2/projects/pim/run/pass/random/Options.mod
+ 76cc8aa2b922e02413458e134482c430  gcc/testsuite/gm2/projects/pim/run/pass/random/RoomMap.def
+ 819d3e9d2b079f4b97e31e6214e41c09  gcc/testsuite/gm2/projects/pim/run/pass/random/RoomMap.mod
+ 39c8ab7c8786b3e8e3b8b58ca5b8753a  gcc/testsuite/gm2/projects/pim/run/pass/random/StoreCoords.def
+ 5c8ec95ce0f78e147b663701cb731629  gcc/testsuite/gm2/projects/pim/run/pass/random/StoreCoords.mod
+ 92eea76dc436f91252e681ab9726a8a3  gcc/testsuite/gm2/projects/pim/run/pass/random/WriteMap.def
+ 308ee15c56c2918de6a28404214c0acb  gcc/testsuite/gm2/projects/pim/run/pass/random/WriteMap.mod
+ fa5e9d35060843b697e812cea2bb6fa9  gcc/testsuite/gm2/projects/pim/run/pass/random/projects-pim-run-pass-random.exp
+ eb5e0c08657ae9af904faf4eaee4f4a2  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvCmd.def
+ e312427ff6d7dc5f9ac1f5adfc0e2e6f  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvCmd.mod
+ 6fa73f2ccd7ce67da29162593943e550  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvIntroduction.def
+ 1c3a6366e81e2b3ea4fe8bf75ad2266f  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvIntroduction.mod
+ dfab360b15d5ed54b54f9b1aa20413c5  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvMap.def
+ 904e612365bd605be9ce220164e75239  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvMap.mod
+ a8c4d83b285dfcf2d27d5a385e341a5a  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvMath.def
+ f3bf47c9e6f632cf8997848aada27d8c  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvMath.mod
+ d6728264d8aeb427dca096cf9b07d873  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvParse.bnf
+ 94cf59c423138bcd5afb00458e8d1bd2  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvParse.def
+ 6daed72d1ff89bcb0e838dfed352989e  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvParse.mod
+ 28b5beebe59896a011469362236c48ca  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvSound.def
+ 5a18152094831f0e232e06047f7060d5  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvSound.mod
+ 089619fbdff6cb3fe8352bf58aa8e8b0  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvSystem.def
+ d27705922d3186f689e47811d51c4f5f  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvSystem.mod
+ 09e0cf70b50054e22ed8df5a1091526a  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvTreasure.def
+ 8a69b2a93bde357982ebe0c7d1a5fe71  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvTreasure.mod
+ f2d425acff50b1ff35715f735adb4893  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvUtil.def
+ 4c02fc1901efbba6869d3874bd614383  gcc/testsuite/gm2/projects/pim/run/pass/tower/AdvUtil.mod
+ 41b662764a079c362d380f509d488ed8  gcc/testsuite/gm2/projects/pim/run/pass/tower/DrawG.def
+ a12ef348aa13806a5ffabb2874844066  gcc/testsuite/gm2/projects/pim/run/pass/tower/DrawG.mod
+ f3b7a6cce6f758d04999550cf92798c9  gcc/testsuite/gm2/projects/pim/run/pass/tower/DrawL.def
+ ad016a6428ce641451e830763b675750  gcc/testsuite/gm2/projects/pim/run/pass/tower/DrawL.mod
+ f5861c43ff1edd32ab8d42cabc728760  gcc/testsuite/gm2/projects/pim/run/pass/tower/Dungeon.mod
+ 332997967f4b23a33b10c0c1bb65d6a0  gcc/testsuite/gm2/projects/pim/run/pass/tower/Lock.def
+ a2ba319d426baf36ae1da56789486971  gcc/testsuite/gm2/projects/pim/run/pass/tower/Lock.mod
+ 81bf5dd4d37d3d3f5eeee30eee0fdd32  gcc/testsuite/gm2/projects/pim/run/pass/tower/ProcArgs.def
+ 78c4beb742e7d26f13bcf143c36c4ebe  gcc/testsuite/gm2/projects/pim/run/pass/tower/ProcArgs.mod
+ f7d2606e7d1db4df81a4f5e310f7aae2  gcc/testsuite/gm2/projects/pim/run/pass/tower/Screen.def
+ 0d11d38ec3125df6c0c4ff9592526ae7  gcc/testsuite/gm2/projects/pim/run/pass/tower/Screen.mod
+ 93a2acd5b536e3a5b32ffb506b720cfa  gcc/testsuite/gm2/projects/pim/run/pass/tower/SocketControl.c
+ c8f239456ccc9c4fd9edb753640abc35  gcc/testsuite/gm2/projects/pim/run/pass/tower/SocketControl.def
+ f4b4c0b867c41208bebf0455f4366d99  gcc/testsuite/gm2/projects/pim/run/pass/tower/Window.def
+ 0f61dbbbcea4138e69598227dc906627  gcc/testsuite/gm2/projects/pim/run/pass/tower/Window.mod
+ 8365e75de6672d2aa355f3e868afe3b7  gcc/testsuite/gm2/projects/pim/run/pass/tower/adv.flex
+ d6e4aca189a6d0c78d4ef055fdab35d9  gcc/testsuite/gm2/projects/pim/run/pass/tower/advflex.c
+ 9b38ecfb8436c855f3ee5126e513b315  gcc/testsuite/gm2/projects/pim/run/pass/tower/advflex.def
+ b682b0eeb13f73acceb7dc8b00031834  gcc/testsuite/gm2/projects/pim/run/pass/tower/projects-pim-run-pass-tower.exp
+ 3e0d828453d6336d7123f2417d7bd570  gcc/testsuite/gm2/projects/pim/run/pass/tower/star
+ cd4b31a663c863e31375daaa812c3f68  gcc/testsuite/gm2/quads/run/pass/becomes.mod
+ 00f03972820bebc01d525280f94fec34  gcc/testsuite/gm2/quads/run/pass/param.mod
+ a9ca4cdb0b91701a711004b518a6c53e  gcc/testsuite/gm2/quads/run/pass/quads-run-pass.exp
+ ddcf079ea49e0ecb2f490c0e68fd697c  gcc/testsuite/gm2/quads/run/pass/return.mod
+ b1c86bac75dba8a54e32fa30f5815baa  gcc/testsuite/gm2/recover/pass/cannot-solve/begin.mod
+ 7d43717184e3b0019227e979d25c24ec  gcc/testsuite/gm2/recover/pass/cannot-solve/statementsemi.mod
+ d151c38b77ce8c99cc41d05bcf8f3559  gcc/testsuite/gm2/recover/pass/end2.mod
+ f63a9f1466200fc845420d1d2e59fa17  gcc/testsuite/gm2/recover/pass/of.mod
+ 92e9c8d700bf0a29d08690363f071268  gcc/testsuite/gm2/recover/pass/procsemi.mod
+ 81eab37fb45a49d5f470a33f4e651c64  gcc/testsuite/gm2/recover/pass/recover-pass.exp
+ 8ded13dd2d8c1f6547bfb3bba3551d86  gcc/testsuite/gm2/recover/pass/rrbra.mod
+ 7d8438e3ef1c6c5615f347a06c928dff  gcc/testsuite/gm2/recover/pass/rsbra.mod
+ dcf7dd91e5b76850ed3b7965e10d56c3  gcc/testsuite/gm2/recover/pass/semi.mod
+ ed05f6fac0a09136d9d9f27e6e7ed549  gcc/testsuite/gm2/run/fail/list.mod
+ 6b7331070aac0edc6d28e66cf49689e0  gcc/testsuite/gm2/run/fail/options
+ 19bde4ea432973a40e396461d0e0cc0b  gcc/testsuite/gm2/run/fail/testdec.mod
+ 79650fc36dfc767f85e58bce8c3ff83f  gcc/testsuite/gm2/run/fail/testfunc.mod
+ 199ec2b67b0445364db02e277a78b82e  gcc/testsuite/gm2/run/pass/cycles.mod
+ 0132fd2a850ef1730756488011b4afee  gcc/testsuite/gm2/run/pass/line.mod
+ 7c19b7ef81536775f13d378cef4a4a67  gcc/testsuite/gm2/run/pass/nestedproc.mod
+ 6d52f5b65bdd45fc3d56d9f8770ed39d  gcc/testsuite/gm2/run/pass/nestedproc2.mod
+ dd86e7d20642d0acd92c8c477cb4e865  gcc/testsuite/gm2/run/pass/nestedproc3.mod
+ 42490f092777f93afc6ed809e2521165  gcc/testsuite/gm2/run/pass/nestedproc5.mod
+ b7e8089bc85513d14963311687c21a0b  gcc/testsuite/gm2/run/pass/nestedset.mod
+ 51a5422c6de2ab8935b1a192f68c33bf  gcc/testsuite/gm2/run/pass/nothing.mod
+ 206108f1cbcf9bbd87c30e629a317af1  gcc/testsuite/gm2/run/pass/options
+ 6520670a15bd426ddb9248bb66b28e70  gcc/testsuite/gm2/run/pass/prog31ex.mod
+ 7ff19964979a5b55b4038c2bb770b4f4  gcc/testsuite/gm2/run/pass/rts.mod
+ 9b40d0ad6c7a669a092125fe6289671d  gcc/testsuite/gm2/run/pass/stripped.mod
+ f4d92d704297d6ac40734a514a93cfee  gcc/testsuite/gm2/run/pass/testavail.mod
+ 356c71c669af263079f04c1a50c0fb57  gcc/testsuite/gm2/run/pass/testfpufunc.mod
+ d01b2e17646a295dc5ac99eace9e792c  gcc/testsuite/gm2/run/pass/testfpufunc2.mod
+ 7a97129ca6271d4522895d2287ddb987  gcc/testsuite/gm2/run/pass/testnextproc.mod
+ 32b6647e015c44e4dc11a4a604bcd58c  gcc/testsuite/gm2/run/pass/testparam.mod
+ cc3bbca460511dda4779c4bfec732a6d  gcc/testsuite/gm2/run/pass/testsize.mod
+ ad124094663a263f87604c66c8bed248  gcc/testsuite/gm2/run/pass/testsize2.mod
+ 5eac39bf3a7f2b4fc816d39f813db8a1  gcc/testsuite/gm2/run/pass/testsize3.mod
+ a8207e849e4daaf6ca35472bca71613d  gcc/testsuite/gm2/run/pass/wr.mod
+ 5f6b5aa6482c83bdd7c800abdc1b84cf  gcc/testsuite/gm2/scripts/addit
+ 575b3d48fc20b68bc399ce1707bc5553  gcc/testsuite/gm2/scripts/comp
+ bc4fb8293716280f63a60e50901eb7d2  gcc/testsuite/gm2/scripts/compile
+ e7d9bb7e7ad61754347b81313738e570  gcc/testsuite/gm2/scripts/compileiso
+ b13575c29c8efcf38ced4721e335b1c1  gcc/testsuite/gm2/scripts/link
+ 802534054168a2eecc167ab47eb4114b  gcc/testsuite/gm2/scripts/regression
+ 81b11f42601b7a3d233f846f2432e87b  gcc/testsuite/gm2/scripts/subit
+ 68fdb56f93e47d3993557eec47deaebd  gcc/testsuite/gm2/sets/run/pass/multisetarith.mod
+ 338d6fa801c91b5f93206daa03f998ca  gcc/testsuite/gm2/sets/run/pass/multisetarith2.mod
+ c602f94c3d7d5500d4b79c08d187daae  gcc/testsuite/gm2/sets/run/pass/multisetarith3.mod
+ aa3c4815956d171d0e938e2782804b9e  gcc/testsuite/gm2/sets/run/pass/multisetarith4.mod
+ d8c359eaf5bfe17b72acf803597e7ca2  gcc/testsuite/gm2/sets/run/pass/multisetrotate.mod
+ 0c802e181b74348e0d7f9fd0773e4780  gcc/testsuite/gm2/sets/run/pass/multisetrotate2.mod
+ ab7e1398170dff65bd057db02e77b1c6  gcc/testsuite/gm2/sets/run/pass/multisetrotate3.mod
+ b53fc3968aac8216081bd1c5453da5a4  gcc/testsuite/gm2/sets/run/pass/multisetrotate4.mod
+ 4995eaf88b79a9912ec4eba14e86819b  gcc/testsuite/gm2/sets/run/pass/multisetshift.mod
+ a155fada107d87016bad68f7e11008a2  gcc/testsuite/gm2/sets/run/pass/multisetshift2.mod
+ 7ada01035fd7c7f1f579e0fa7723fc92  gcc/testsuite/gm2/sets/run/pass/multisimple.mod
+ b366d5d955b7445201e098132b1989c8  gcc/testsuite/gm2/sets/run/pass/multisimple2.mod
+ d9049dbbf584de46f7949283e8a3f192  gcc/testsuite/gm2/sets/run/pass/multisimple3.mod
+ 371cb6125c58f6e99540bccb851ce0ae  gcc/testsuite/gm2/sets/run/pass/multisimple4.mod
+ e3b8b2f95a8138a3f33aec58db37144c  gcc/testsuite/gm2/sets/run/pass/multisimple5.mod
+ 5279cc1e6b6eed61b10b7874dace5145  gcc/testsuite/gm2/sets/run/pass/multisimple6.mod
+ 902276f31ef936902b89776722e7e82d  gcc/testsuite/gm2/sets/run/pass/multisimple7.mod
+ 348dbf95df84ffe5a31952965d1a2b5e  gcc/testsuite/gm2/sets/run/pass/setarith.mod
+ 716e8f0148242eec6b616365ef63f876  gcc/testsuite/gm2/sets/run/pass/setarith2.mod
+ 2e8b6ab5db57096743916a62daa1e64c  gcc/testsuite/gm2/sets/run/pass/setarith3.mod
+ f6de503823ee276a69e70bc77f56435d  gcc/testsuite/gm2/sets/run/pass/setarith4.mod
+ 59a9282687d742828693ca1ab889fda1  gcc/testsuite/gm2/sets/run/pass/setrotate.mod
+ 6791c5b60c9acda2d0588a232e3e7252  gcc/testsuite/gm2/sets/run/pass/setrotate2.mod
+ e230bc90482d44ff967e7deef741765c  gcc/testsuite/gm2/sets/run/pass/setrotate3.mod
+ 5307a843169b8465e3cba302c8a27d19  gcc/testsuite/gm2/sets/run/pass/setrotate4.mod
+ b1a43a2294aef2cf099d99cc8cffefdb  gcc/testsuite/gm2/sets/run/pass/sets-run-pass.exp
+ 21ce638a759fcc83711516257ef094fd  gcc/testsuite/gm2/sets/run/pass/setshift.mod
+ 64c638d6714bdf042b377ba55d6a39b8  gcc/testsuite/gm2/sets/run/pass/setshift2.mod
+ fef7514015c435a016141edea74b252b  gcc/testsuite/gm2/sets/run/pass/simple.mod
+ 53bc53804ab2d73bbfc4ddb75c67cf40  gcc/testsuite/gm2/sets/run/pass/simple2.mod
+ 1b9c97e624a6f1f8abc7d7d5952a2135  gcc/testsuite/gm2/sets/run/pass/simple3.mod
+ 1561633945b732a7314867df183553fd  gcc/testsuite/gm2/sets/run/pass/simple4.mod
+ d93ffac451cd75883d648722d233fc4f  gcc/testsuite/gm2/sets/run/pass/simple5.mod
+ 594bd0e14f8f6503d309d3c360587994  gcc/testsuite/gm2/sets/run/pass/simple6.mod
+ 05150f7878189d0ba7f261bdc7948b19  gcc/testsuite/gm2/sets/run/pass/simple7.mod
+ dce4180a60c2b4ab273d16f07a59bf41  gcc/testsuite/gm2/switches/auto-init/fail/switches-auto-init-fail.exp
+ d089057a33f33fb7304bbbda81e00fd7  gcc/testsuite/gm2/switches/auto-init/fail/uninitptr.mod
+ f456a6791fc712e654ace802ea0ba82e  gcc/testsuite/gm2/switches/auto-init/fail/uninitptr2.mod
+ 6c2959b3a298ed63cf8087ab405d07e0  gcc/testsuite/gm2/switches/check-all/pim2/fail/overflow.mod
+ 65038913196bbd28bc621c8c346d2069  gcc/testsuite/gm2/switches/check-all/pim2/fail/overflow2.mod
+ 7b9c6c074a99b5f66a8cf38970c1e0f5  gcc/testsuite/gm2/switches/check-all/pim2/fail/overflowdiv1.mod
+ 8c6232343a9ebe712b7e73dee5792fb6  gcc/testsuite/gm2/switches/check-all/pim2/fail/switches-check-all-pim2-fail.exp
+ e332f2ba335c0a731b80079b2cf9ddf0  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/divceilposneg.mod
+ e283398d4a517282e0059697755a072d  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/divceilposneg2.mod
+ 834ecc488f96254c596246d22a138c0a  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/divceilposnegcall.mod
+ 305daebbfb0dcddc72fc7ed8369db950  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/divceilposnegcall2.mod
+ b717bcfde2bcfe90ea5ba8cdb1237f59  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/divfloornegpos.mod
+ 190cfdb6525cb056fb456816b0c036bc  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/divfloorpospos.mod
+ 09be0149a04322801741c914a98294fa  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/lowdiv.mod
+ d3c417401df59cc7b346c477d18889c4  gcc/testsuite/gm2/switches/check-all/plugin/iso/fail/switches-check-all-plugin-iso-fail.exp
+ b382803722a54461a8581f1bd2121d42  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/divceil.mod
+ 02092642b381dd16440e79664b464913  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/highdiv.mod
+ cd2288cf3e5b70a29fa839336dc110a6  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/modulus.mod
+ f30573c5fa1164614455cda6c961df83  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin1.mod
+ 7c8363a64d2d54c90533eb50c815e411  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin3.mod
+ a93930189474543f60685a6d7c9078d0  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin4.def
+ 67c1a6dab4f5a933639218de8073e9aa  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin4.mod
+ 064cd003a4492e8f0c1a9d5116789530  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin5.def
+ a989edc6b74e670ec7c89f213419e335  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin5.mod
+ 0194477ad35c05de4c28430d84103d60  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin6.def
+ afd5f57bb803a371d6b8000f8692d515  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin6.mod
+ 7f799313cea0900d24de3fa014e72c2e  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin7.def
+ 72762bbca9ba29b7baab4256d2d8306e  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin7.mod
+ da3036157616ae62f9409f17d4aa3258  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin8.def
+ fa0566c6a1309518349d4fb78760be47  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin8.mod
+ c2258f9fc9b3e7e051c16329751e2ecf  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/plugin9.mod
+ 3a5d0472b3952d0b2e727b6db8507559  gcc/testsuite/gm2/switches/check-all/plugin/pim2/fail/switches-check-all-plugin-pim2-fail.exp
+ a658c122170cf5c993cd4b05572890c6  gcc/testsuite/gm2/switches/check-all/run/fail/cardrange.mod
+ 796082576932e91c1bafd24e7b5c0322  gcc/testsuite/gm2/switches/check-all/run/fail/cardrange2.mod
+ bc4ce1cc7e196800ee185c42245e108e  gcc/testsuite/gm2/switches/check-all/run/fail/cardrange3.mod
+ 22cb05bb8bc0ea2da4bf347310edd5e1  gcc/testsuite/gm2/switches/check-all/run/fail/intrange.mod
+ 6065cd46b220cbc46242b21f6802e79d  gcc/testsuite/gm2/switches/check-all/run/fail/intrange2.mod
+ c53b2de4f2a35b539d3292d0d059eee7  gcc/testsuite/gm2/switches/check-all/run/fail/intrange3.mod
+ 8fd169206637bec5e9cdd70b2a734e16  gcc/testsuite/gm2/switches/check-all/run/fail/intrange4.mod
+ e65a2ee18af6367d04c317b4f945ee06  gcc/testsuite/gm2/switches/check-all/run/fail/intrange5.mod
+ 4e02add310c2c84e6168affc1f9ea4bf  gcc/testsuite/gm2/switches/check-all/run/fail/multint1.mod
+ 3a3c1972ad33ea38614d03983ae74692  gcc/testsuite/gm2/switches/check-all/run/fail/multint2.mod
+ 4a8024c59a1f6ea06a366e6eff75878d  gcc/testsuite/gm2/switches/check-all/run/fail/multint3.mod
+ dc48523e9c89a6a6349ff32b23e032e5  gcc/testsuite/gm2/switches/check-all/run/fail/rangesupport.def
+ b944653fbd71b4f84da3caa402f3cca8  gcc/testsuite/gm2/switches/check-all/run/fail/rangesupport.mod
+ 92fba1adf1580639ecc0ee77b132a3a1  gcc/testsuite/gm2/switches/check-all/run/fail/realrange.mod
+ 85dcc54a281e9f8dd3b249085ce7f7bc  gcc/testsuite/gm2/switches/check-all/run/fail/subrange.mod
+ 74256b42bf204ad69a0cfd0dc08d929e  gcc/testsuite/gm2/switches/check-all/run/fail/switches-check-all-run-fail.exp
+ 78f40fd53e001a978f262deab2dab4e9  gcc/testsuite/gm2/switches/check-all/run/fail/tinyrange.mod
+ b7e3381c5fbd47528de1310c1fbfb3c2  gcc/testsuite/gm2/switches/check-all/run/pass/cardrange.mod
+ 90f9b5be684c9907fd573aa19d30ad65  gcc/testsuite/gm2/switches/check-all/run/pass/forcheck.mod
+ 926925e5b015a37d2245311e08645c01  gcc/testsuite/gm2/switches/check-all/run/pass/subrange.mod
+ 120ccf25c7a3ff64aef5e4f5330cd54b  gcc/testsuite/gm2/switches/check-all/run/pass/switches-check-all-run-pass.exp
+ 46a24bd7fa5847a31a437b6d8f0713d2  gcc/testsuite/gm2/switches/extended-opaque/fail/a.def
+ b34821311a68dbc583de9ce160ff5d24  gcc/testsuite/gm2/switches/extended-opaque/fail/a.mod
+ 4eb42bae8f14e9d03520ad69768980d7  gcc/testsuite/gm2/switches/extended-opaque/fail/switches-extended-opaque-fail.exp
+ 46a24bd7fa5847a31a437b6d8f0713d2  gcc/testsuite/gm2/switches/extended-opaque/pass/a.def
+ b34821311a68dbc583de9ce160ff5d24  gcc/testsuite/gm2/switches/extended-opaque/pass/a.mod
+ 6945d30746143597c0e07b03cd2052fc  gcc/testsuite/gm2/switches/extended-opaque/pass/b.mod
+ 7386b1a0f8c037dfa88d8899a31e10cd  gcc/testsuite/gm2/switches/extended-opaque/pass/switches-extended-opaque-pass.exp
+ 08c4bfa50ae955c15bbda61a68064de4  gcc/testsuite/gm2/switches/iso/run/pass/modulus.mod
+ 256de4fca238da94ccd2da70b0cbb2f7  gcc/testsuite/gm2/switches/iso/run/pass/modulus4.mod
+ 64675d93edbf17a2b231b3c4c66785cf  gcc/testsuite/gm2/switches/iso/run/pass/switches-iso-run-pass.exp
+ a4058db5f94d5319ce7af7d24120d268  gcc/testsuite/gm2/switches/makeall/fail/switches-makeall-fail.exp
+ 61f86ac12627757e14d86029cd6af8fb  gcc/testsuite/gm2/switches/makeall/fail/test.def
+ ac70e24807181c5bade8e6869fca0000  gcc/testsuite/gm2/switches/makeall/fail/test.mod
+ 6b5d3f169202e713ba0486921c325363  gcc/testsuite/gm2/switches/makeall/pass/switches-makeall-pass.exp
+ e64523b7502cc4a326c69a5fb2bb632b  gcc/testsuite/gm2/switches/makeall/pass/test.def
+ 5005c3f41a18fef2b4c7c178890d77f3  gcc/testsuite/gm2/switches/makeall/pass/test.mod
+ 834c1a77c225b68117c929904ba2e3a8  gcc/testsuite/gm2/switches/none/run/pass/gm2-none.exp
+ 9e07fd151c648b57e14d2059c6e86911  gcc/testsuite/gm2/switches/none/run/pass/hello.mod
+ 7f4a9fd88d8c6bdacbe9bd3f609520c1  gcc/testsuite/gm2/switches/optimization/run/pass/fact.mod
+ a089facf385b2aee8931b68a8959a1d7  gcc/testsuite/gm2/switches/optimization/run/pass/switches-optimization-run-pass.exp
+ ce34facd47d92c096307d38372429b0d  gcc/testsuite/gm2/switches/pedantic-params/fail/a.def
+ d083f2149e966c7f4a3cf7a592213e6e  gcc/testsuite/gm2/switches/pedantic-params/fail/a.mod
+ 1b16690cbcb33bca568b20cd184487a8  gcc/testsuite/gm2/switches/pedantic-params/fail/switches-pedantic-params-fail.exp
+ 1abca3faf31619bb432fab1710aeb176  gcc/testsuite/gm2/switches/pedantic-params/pass/Strings.def
+ fd422a739cead1ddd9341f7ffef6c32a  gcc/testsuite/gm2/switches/pedantic-params/pass/Strings.mod
+ 2bd25d194320074f57db1202dec8ccd5  gcc/testsuite/gm2/switches/pedantic-params/pass/Strings2.def
+ 0bcc2d7b0cd1e82595b33fe9b803d2e1  gcc/testsuite/gm2/switches/pedantic-params/pass/Strings2.mod
+ 684588a4a4783ed7688b60d012ddd741  gcc/testsuite/gm2/switches/pedantic-params/pass/switches-pedantic-params-pass.exp
+ c6936819180ff9d4dfdae9824dd4a6c7  gcc/testsuite/gm2/switches/pedantic/fail/onlywrite.mod
+ 2202381eba33ede99f7975591edab10a  gcc/testsuite/gm2/switches/pedantic/fail/readb4.mod
+ 1ebd10545b002997fc2e8c2c86fe2559  gcc/testsuite/gm2/switches/pic/run/pass/func.c
+ 056ddeaf7cd706574ba41abb899b72be  gcc/testsuite/gm2/switches/pic/run/pass/func.mod
+ c858c354cae5af0cc80bad192125e919  gcc/testsuite/gm2/switches/pic/run/pass/func2.c
+ 2abff8e2fdd72e7a36004edaf4893abd  gcc/testsuite/gm2/switches/pic/run/pass/func2.mod
+ f3ee704de702189b339c6d4b77997bd0  gcc/testsuite/gm2/switches/pic/run/pass/switches-pic-run-pass.exp
+ 72595eba68a1caa34641927dc7b21d9b  gcc/testsuite/gm2/switches/pim2/run/pass/modulus.mod
+ 1015be7dff0fd836af445eff62902a5f  gcc/testsuite/gm2/switches/pim2/run/pass/switches-pim2-run-pass.exp
+ 113d1259345fa7dedde31514c400a268  gcc/testsuite/gm2/switches/pim3/run/pass/modulus.mod
+ e51b81b302469aec497712ee8e5f7f4b  gcc/testsuite/gm2/switches/pim3/run/pass/switches-pim3-run-pass.exp
+ c614f2bf36f76d40b66a85136a485450  gcc/testsuite/gm2/switches/pim4/run/pass/FpuIOBug.mod
+ 6fd9d7b88939abbde25a239c8d33ab51  gcc/testsuite/gm2/switches/pim4/run/pass/InOutBug.mod
+ 88027dcbd148b1ca4a96e8d4916ecd87  gcc/testsuite/gm2/switches/pim4/run/pass/NumberIOBug.mod
+ 3a517fef09b36f6af522a00f6bb54d70  gcc/testsuite/gm2/switches/pim4/run/pass/modulus.mod
+ b58ba2aab7402cfa77be0fa158531bd0  gcc/testsuite/gm2/switches/pim4/run/pass/modulus2.mod
+ 9854bd5fc10351531c5aabfea5b44684  gcc/testsuite/gm2/switches/pim4/run/pass/switches-pim4-run-pass.exp
+ 2c439af31b3c4c4dce8526b98bc75c75  gcc/testsuite/gm2/switches/whole-program/pass/run/hello.mod
+ a5577432f39738e430bd88cb60de19e3  gcc/testsuite/gm2/switches/whole-program/pass/run/hello2.mod
+ de7648d0bfa041d32e6aa7e8f430a178  gcc/testsuite/gm2/switches/whole-program/pass/run/switches-whole-program-pass-run.exp
+ d2257554df9979e0f81558414af765f5  gcc/testsuite/gm2/switches/whole-program/pass/run/tiny.mod
+ 0e2791268d29463c5e4fa5f11ae72d57  gcc/testsuite/gm2/switches/whole-program/pass/run/tiny2.mod
+ ff6285917ee200789e5238065c2f3882  gcc/testsuite/gm2/types/bitset.mod
+ 022d1cf463093141db8a598b3c44db56  gcc/testsuite/gm2/types/bitset2.mod
+ 43663d8d20bda31b0d6ed57e64677a5e  gcc/testsuite/gm2/types/bitset3.mod
+ c5e8f36d46ebaddf2c3766362672c885  gcc/testsuite/gm2/types/charset.mod
+ 6c500dd05da0149d4356655b7b9e8068  gcc/testsuite/gm2/types/const.mod
+ 1c8e292e685936cbc9fdbfb7128f734a  gcc/testsuite/gm2/types/prog35.mod
+ 8d689912b47842ee7f86fc04a2657097  gcc/testsuite/gm2/types/real.mod
+ 686ca26679509e30a5f211809900ac49  gcc/testsuite/gm2/types/run/pass/d.c
+ be87088d539730cc24dbc90a51ccc2bf  gcc/testsuite/gm2/types/run/pass/d.def
+ e9d4faf7bbaf07426d7915ca18ec917e  gcc/testsuite/gm2/types/run/pass/types-run-pass.exp
+ 74bc7ea69e1b9efe8e7250a12c6cb4f3  gcc/testsuite/gm2/types/run/pass/varient4.mod
+ 113959d79568af1b0c8f34e49f3e9a64  gcc/testsuite/gm2/types/run/pass/varient5.mod
+ e32b0522c9c90a7f0fca3ce728ff6a8c  gcc/testsuite/gm2/types/string.mod
+ f96e1401fa2ffaa7f9555b717c935d68  gcc/testsuite/gm2/types/type1.mod
+ 4d6304c47d78ac94d1d69b374f5cfb02  gcc/testsuite/gm2/types/type2.mod
+ 25ae2a3ebd5f79a266a9b5153f6ca4e2  gcc/testsuite/gm2/types/type3.mod
+ 767f35e2fe10661062bc2013ca978a22  gcc/testsuite/gm2/types/type4.mod
+ 9613c77c4b0cf18f1619ad8350c9c3b7  gcc/testsuite/gm2/types/varient.mod
+ 222c0b6352ac7db11b7ea622a1371af8  gcc/testsuite/gm2/types/word.mod
+ 40a0fbce8c4e9dfb2b8e06ac57c5750a  gcc/testsuite/gm2/ulmlib/pass/ulmlib-pass.exp
+ e147c5f56e1634fcb24f8c1db4453a81  gcc/testsuite/gm2/ulmlib/std/pass/ulmlib-std-pass.exp
+ 40a0fbce8c4e9dfb2b8e06ac57c5750a  gcc/testsuite/gm2/ulmlib/sys/pass/ulmlib-sys-pass.exp
+ 8abe9ef3450094aa1c3e3d69af88cd3c  gcc/testsuite/gm2/warnings/returntype/fail/badreturn.mod
+ cc77666ed46deda65f398e6ba80dc1c4  gcc/testsuite/gm2/warnings/returntype/fail/warnings-returntype-fail.exp
+ 977b0420916dd86f3d97d331b4f26ce2  gcc/testsuite/gm2/warnings/returntype/pass/Termbase.mod
+ ff010d02cfb97393f7dc903c786797b1  gcc/testsuite/gm2/warnings/returntype/pass/goodreturn.mod
+ 9887506124e271782b27cb7b09d31c9a  gcc/testsuite/gm2/warnings/returntype/pass/keypressedsimple.mod
+ 675f9caae23acaed8ce4b12d59e5d62d  gcc/testsuite/gm2/warnings/returntype/pass/warnings-returntype-pass.exp
+ 21ceb11eb92493844b53651eace4980f  gcc/testsuite/gm2/warnings/todo/nestedproc6.mod
+ 7054cf0beb9a62521e9760c31dd7d529  gcc/testsuite/gm2/warnings/todo/options
+ 34e6e04b35f94b9498a0c1809c555ea5  gcc/testsuite/gm2/warnings/todo/testfor.mod
+ e17b519918b9c9c2687c158fe547d012  gcc/testsuite/gm2/warnings/todo/testfor2.mod
+ 1f54a4a6e895150390d2ca903b2ea8b3  gcc/testsuite/gm2/warnings/todo/testfor3.mod
+ 482f222cbda26e92ae3f9be9e2617bad  gcc/testsuite/gm2/warnings/todo/testkeywords.mod
+ 0b45d2b2c3e51a74acf62dc1a29e2d7d  gcc/testsuite/gm2/warnings/todo/testloop.mod
+ e02b69149c40352643df25b83b71bf4d  gcc/testsuite/gm2/warnings/todo/testscope.mod
+ 34cec3bf542fc5dff8d53ade30a170fb  gcc/testsuite/gm2/warnings/todo/testscope2.mod
+ 9229f6bc780e2d88b2f0e8ea964e532d  gcc/testsuite/gm2/x86-asm/asm.mod
+ 3cd9dafcaf21f6bd197d11c6dc0cc1a7  gcc/testsuite/gm2/x86-asm/asm2.mod
  b052b4cb8b4a693220fe90fbb2e102a6  gcc/testsuite/gnat.dg/abe_pkg.adb
  47091f94a4de83eb5b2e62e6557bd1bf  gcc/testsuite/gnat.dg/abe_pkg.ads
! 97d48e215056d8888e4bc751bc18bdd4  gcc/testsuite/gnat.dg/abstract1.adb
! 001fa00db9ab7f5756d466dad38fe145  gcc/testsuite/gnat.dg/abstract1.ads
  ad2a054aea75840d3ecf97c2faa0f183  gcc/testsuite/gnat.dg/abstract_state1.adb
  1406779a63f2f66b35098f98ca1b272a  gcc/testsuite/gnat.dg/abstract_state1.ads
  f8aa1b9b6d8605d6d8f8640d0af378d3  gcc/testsuite/gnat.dg/abstract_with_anonymous_result.adb
*************** a7f8d001aae87201749d21ce47619ea7  gcc/te
*** 86058,86065 ****
  4a70c931234068ef2afba5910fcc720e  gcc/testsuite/gnat.dg/aspect1_horizontal.adb
  a67f0655a8efc79fa7a524f4cd2bbd9c  gcc/testsuite/gnat.dg/aspect1_horizontal.ads
  2190cd57a477a821b3327a8352102466  gcc/testsuite/gnat.dg/aspect1_vectors_2d.ads
- 809272c3bc190f2245ba67854be227a3  gcc/testsuite/gnat.dg/aspect2.adb
- 9ce7cb5154d6d19771f2f6e3f7c50445  gcc/testsuite/gnat.dg/aspect2.ads
  52657f6a50de3dd615f1839a7c6e5b3d  gcc/testsuite/gnat.dg/assert.ads
  1ea6fda5871054a824ca1544e7a47985  gcc/testsuite/gnat.dg/assert1.adb
  ba831c8e8dc16c9353beffc0629d43c8  gcc/testsuite/gnat.dg/assert2.adb
--- 93237,93242 ----
*************** c2a9c37d28c367751dc983961cdf3077  gcc/te
*** 86198,86205 ****
  1e8fc5e809cc52079a69599d76a132e4  gcc/testsuite/gnat.dg/cond_expr1.adb
  6bf0919f37bc57eb62cf0adbb6d3aed5  gcc/testsuite/gnat.dg/cond_expr2.adb
  480774e6dc12415e74150ad52fe66697  gcc/testsuite/gnat.dg/cond_expr2.ads
- 969a6d81ef3ad76d7249e80542d475bc  gcc/testsuite/gnat.dg/config_pragma1.adb
- c23d58e8cc588cbddf7bf68407790376  gcc/testsuite/gnat.dg/config_pragma1_pkg.ads
  9026d07ea019e3bc99d29956321aad85  gcc/testsuite/gnat.dg/constant1.adb
  c817ba1a8487d2a0a1a7c267535254e2  gcc/testsuite/gnat.dg/constant2.adb
  8ab5d31041490b23c8a880cc9c0098d3  gcc/testsuite/gnat.dg/constant2_pkg1.ads
--- 93375,93380 ----
*************** dc7b3ebaa7caa13b60d6eb8a552ad48d  gcc/te
*** 86308,86314 ****
  e0b9cf9f7a4c88212b3b340e33e89929  gcc/testsuite/gnat.dg/derived_type7.ads
  f5b545465e83981c80e3d7c01214b904  gcc/testsuite/gnat.dg/dflt_init_cond.adb
  2fbb62544d92c6af0d0b351a83112cd0  gcc/testsuite/gnat.dg/dflt_init_cond_pkg.ads
! 63dcae8ea289378b7c072c45dfa22358  gcc/testsuite/gnat.dg/dg.exp
  ca2670a9b24cc9d0cf8852e656a65373  gcc/testsuite/gnat.dg/dimensions.adb
  f28a5b105f7585427df0167f61bf7240  gcc/testsuite/gnat.dg/dimensions.ads
  40bad3acc354f2f19a9bb73c10fd1db8  gcc/testsuite/gnat.dg/dimensions2.adb
--- 93483,93489 ----
  e0b9cf9f7a4c88212b3b340e33e89929  gcc/testsuite/gnat.dg/derived_type7.ads
  f5b545465e83981c80e3d7c01214b904  gcc/testsuite/gnat.dg/dflt_init_cond.adb
  2fbb62544d92c6af0d0b351a83112cd0  gcc/testsuite/gnat.dg/dflt_init_cond_pkg.ads
! d8100bc7cbdb9c15675582e40bba01a4  gcc/testsuite/gnat.dg/dg.exp
  ca2670a9b24cc9d0cf8852e656a65373  gcc/testsuite/gnat.dg/dimensions.adb
  f28a5b105f7585427df0167f61bf7240  gcc/testsuite/gnat.dg/dimensions.ads
  40bad3acc354f2f19a9bb73c10fd1db8  gcc/testsuite/gnat.dg/dimensions2.adb
*************** be12d3fb109247c1aaf6b19f5a65234e  gcc/te
*** 86440,86446 ****
  27e284ecfab36dff4aeb5b0e7a760992  gcc/testsuite/gnat.dg/disp2_pkg.adb
  aade8ed441d181cc943e854b4195d970  gcc/testsuite/gnat.dg/disp2_pkg.ads
  3ff72ebe3cf496e89941efc9df26c8cf  gcc/testsuite/gnat.dg/div_no_warning.adb
! 051f7843091e24744b2ebdab76501566  gcc/testsuite/gnat.dg/div_zero.adb
  d65bcf76d480f439aab679b09d9c0371  gcc/testsuite/gnat.dg/dse_step.adb
  ad16edae9320a0014102921e32b92dab  gcc/testsuite/gnat.dg/dse_step.ads
  e00340d4362590ca4a58680aac404702  gcc/testsuite/gnat.dg/dynamic_bound.adb
--- 93615,93621 ----
  27e284ecfab36dff4aeb5b0e7a760992  gcc/testsuite/gnat.dg/disp2_pkg.adb
  aade8ed441d181cc943e854b4195d970  gcc/testsuite/gnat.dg/disp2_pkg.ads
  3ff72ebe3cf496e89941efc9df26c8cf  gcc/testsuite/gnat.dg/div_no_warning.adb
! 88a17fc96f66dd9c90806ca61be0dbed  gcc/testsuite/gnat.dg/div_zero.adb
  d65bcf76d480f439aab679b09d9c0371  gcc/testsuite/gnat.dg/dse_step.adb
  ad16edae9320a0014102921e32b92dab  gcc/testsuite/gnat.dg/dse_step.ads
  e00340d4362590ca4a58680aac404702  gcc/testsuite/gnat.dg/dynamic_bound.adb
*************** f0cda07cfcd7991f6869d2a43453a2db  gcc/te
*** 86524,86535 ****
  2fbdc4c95a0c529f82b45227b790d477  gcc/testsuite/gnat.dg/equal6.adb
  1f0714914e2e0a6117505cb6c8ee21fa  gcc/testsuite/gnat.dg/equal6_types.adb
  d8fe87c36ce99b084fa50777ed4b0b8e  gcc/testsuite/gnat.dg/equal6_types.ads
! 1351af916a0d5f05f72b6173a839d840  gcc/testsuite/gnat.dg/equal7.adb
  af22a1526e026c4e78de1cbe5a7aa312  gcc/testsuite/gnat.dg/equal7_pkg.adb
  28ff23f04b40bdb87a3cdeeae2dee06e  gcc/testsuite/gnat.dg/equal7_pkg.ads
- 290da1178fe849e0835cce8e4af9ac1d  gcc/testsuite/gnat.dg/equal8.adb
- 1952dd892bd7e1bbb5fe8db9d78ef370  gcc/testsuite/gnat.dg/equal8.ads
- 4e8a55d606538c2f2343cdfec3e38772  gcc/testsuite/gnat.dg/equal8_pkg.ads
  ad8bc85d3d3345fad804a575db45246b  gcc/testsuite/gnat.dg/equal9.adb
  ac078127defcf36b65f032b5ee27a98c  gcc/testsuite/gnat.dg/equal_access.adb
  466f184458438cf0457e3d982e89be21  gcc/testsuite/gnat.dg/exit1.adb
--- 93699,93707 ----
  2fbdc4c95a0c529f82b45227b790d477  gcc/testsuite/gnat.dg/equal6.adb
  1f0714914e2e0a6117505cb6c8ee21fa  gcc/testsuite/gnat.dg/equal6_types.adb
  d8fe87c36ce99b084fa50777ed4b0b8e  gcc/testsuite/gnat.dg/equal6_types.ads
! 29b88c1aa6ea99a94fb13defa4dd0301  gcc/testsuite/gnat.dg/equal7.adb
  af22a1526e026c4e78de1cbe5a7aa312  gcc/testsuite/gnat.dg/equal7_pkg.adb
  28ff23f04b40bdb87a3cdeeae2dee06e  gcc/testsuite/gnat.dg/equal7_pkg.ads
  ad8bc85d3d3345fad804a575db45246b  gcc/testsuite/gnat.dg/equal9.adb
  ac078127defcf36b65f032b5ee27a98c  gcc/testsuite/gnat.dg/equal_access.adb
  466f184458438cf0457e3d982e89be21  gcc/testsuite/gnat.dg/exit1.adb
*************** b60407cbb200050a36efbd223b3bfd78  gcc/te
*** 86571,86577 ****
  b3983c4a7477c0371488fe97163d0999  gcc/testsuite/gnat.dg/float_attributes_overflows.adb
  47d255d314f03fb2036e426bd678e88f  gcc/testsuite/gnat.dg/float_value1.adb
  def2d8beeab77be70d6cd41f74750e8e  gcc/testsuite/gnat.dg/float_value2.adb
- 6c560b855ebed9469764acf926c1afd3  gcc/testsuite/gnat.dg/formal_containers.adb
  07c827c1c798d5da11bdc0d1d9f65a5a  gcc/testsuite/gnat.dg/forward_anon.adb
  ea0d2d9dbbbc9c7d79f067fa40139669  gcc/testsuite/gnat.dg/forward_anon.ads
  89e72099b779566d88618d4a64407eec  gcc/testsuite/gnat.dg/forward_vla.adb
--- 93743,93748 ----
*************** cef4cbf18f95208dd8c0b2e5062761c5  gcc/te
*** 86588,86594 ****
  d0689d7d2df99b8a9bdfa7461addbca6  gcc/testsuite/gnat.dg/g_tables.adb
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  e0d843a3b7f190ee400816b919cc276e  gcc/testsuite/gnat.dg/gcov/check.adb
! 3f43dbf3a77187b8a571862b49318200  gcc/testsuite/gnat.dg/gcov/gcov.exp
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
  914ecd342404a7e78b567e0eeef3fbc8  gcc/testsuite/gnat.dg/gen_formal_pkg.adb
--- 93759,93765 ----
  d0689d7d2df99b8a9bdfa7461addbca6  gcc/testsuite/gnat.dg/g_tables.adb
  42a1a84a561d8513a3ddb03c1873df86  gcc/testsuite/gnat.dg/g_tables.ads
  e0d843a3b7f190ee400816b919cc276e  gcc/testsuite/gnat.dg/gcov/check.adb
! 6e74449adb495cd9dec7a5811696d7fa  gcc/testsuite/gnat.dg/gcov/gcov.exp
  98054bebce7ebc5df6d4a6a4178bf29c  gcc/testsuite/gnat.dg/gen_disp.adb
  8ce8ee3ebe319b0b6252b4307844d6c5  gcc/testsuite/gnat.dg/gen_disp.ads
  914ecd342404a7e78b567e0eeef3fbc8  gcc/testsuite/gnat.dg/gen_formal_pkg.adb
*************** cc4ebe6ac2f1c00b421a891817d2d911  gcc/te
*** 86681,86686 ****
--- 93852,93859 ----
  573f24396dcc43a2310438b1f02f212f  gcc/testsuite/gnat.dg/graphic.ads
  88dcdd2724cad49e7d26c2988f235dff  gcc/testsuite/gnat.dg/handle_and_return.adb
  38ab9c3d211d51b5c4444cf3869e2e08  gcc/testsuite/gnat.dg/handle_raise_from_pure.adb
+ 54fb4c89efc3d7d7ea427c30ba65f1cf  gcc/testsuite/gnat.dg/hardbool.adb
+ b51d6c1bc42982550b97d00a49b9ad38  gcc/testsuite/gnat.dg/hardbool.ads
  0e6a187c7406afa983efd54328e7a428  gcc/testsuite/gnat.dg/hyper_flat.adb
  714ad409e3a6cefc0efe88de1d77acfc  gcc/testsuite/gnat.dg/ice_type.adb
  2a21b6d5350d0f9ff8c2cf5d0e6f8f1f  gcc/testsuite/gnat.dg/ice_types.ads
*************** bbcd5e7a548532ed37b41d1e6d3fb070  gcc/te
*** 86833,86840 ****
  d3b979c5d57602fb7ae7f51440131145  gcc/testsuite/gnat.dg/invariant_index.adb
  a183291327899199de45c951a55d3e0f  gcc/testsuite/gnat.dg/invariant_index.ads
  38122f66cc66121e81d7c0236e646367  gcc/testsuite/gnat.dg/iprot_test.adb
- b3311fb0eafd78a320d17faa755538ad  gcc/testsuite/gnat.dg/iter1.adb
- 33c50d8662a7cbf7e9036fe3b6868c82  gcc/testsuite/gnat.dg/iter1.ads
  c14db43de670e3da22da35a6840712a8  gcc/testsuite/gnat.dg/iter2.adb
  1deb4a0a3032e68e86cd846d925e9b1b  gcc/testsuite/gnat.dg/iter2.ads
  ec09b316f95699b7f12d9bfa709c9e2a  gcc/testsuite/gnat.dg/iter3.adb
--- 94006,94011 ----
*************** d3d92ae7ca7f3a3c04916ae099bc5f83  gcc/te
*** 86967,86973 ****
  4c064e4f83f57bb64660513b44d5a8d4  gcc/testsuite/gnat.dg/loop_optimization9.ads
  9fd104a9351dd7f36e752216d0c319b1  gcc/testsuite/gnat.dg/loop_unchecked_conversion.adb
  6c4529bf84ba5199d79a95cf2d8df10a  gcc/testsuite/gnat.dg/loop_unchecked_conversion.ads
! 7b5a2b52f1e3f0fc39fb2e11fe6ab88f  gcc/testsuite/gnat.dg/loopvar.adb
  b5df289d9d135da4119c3e85014f469d  gcc/testsuite/gnat.dg/lto1.adb
  51d21433eb6a87b51685bd0f65a8ad30  gcc/testsuite/gnat.dg/lto10.adb
  199b23f096fa85cbc35b315e4dac5f32  gcc/testsuite/gnat.dg/lto10_pkg.ads
--- 94138,94144 ----
  4c064e4f83f57bb64660513b44d5a8d4  gcc/testsuite/gnat.dg/loop_optimization9.ads
  9fd104a9351dd7f36e752216d0c319b1  gcc/testsuite/gnat.dg/loop_unchecked_conversion.adb
  6c4529bf84ba5199d79a95cf2d8df10a  gcc/testsuite/gnat.dg/loop_unchecked_conversion.ads
! 441d4ce14721ca0233d974eae0521c9a  gcc/testsuite/gnat.dg/loopvar.adb
  b5df289d9d135da4119c3e85014f469d  gcc/testsuite/gnat.dg/lto1.adb
  51d21433eb6a87b51685bd0f65a8ad30  gcc/testsuite/gnat.dg/lto10.adb
  199b23f096fa85cbc35b315e4dac5f32  gcc/testsuite/gnat.dg/lto10_pkg.ads
*************** fa0a217ef7773f18e2100deca65155e8  gcc/te
*** 87012,87017 ****
--- 94183,94193 ----
  6cc6cb14bbcba172d4f4eeb357613237  gcc/testsuite/gnat.dg/lto24_pkg2.adb
  14d0b11f260b0d1752208a98b741658a  gcc/testsuite/gnat.dg/lto24_pkg2.ads
  ed33690892e43011718347ecca58daff  gcc/testsuite/gnat.dg/lto25.adb
+ 0e0eac12f27698200ee51c28cbf3f87f  gcc/testsuite/gnat.dg/lto26.adb
+ 9267732f41b4d01e697152031f516aea  gcc/testsuite/gnat.dg/lto26_pkg1.adb
+ 457ee12b0dd229b1b193d39fdafb8511  gcc/testsuite/gnat.dg/lto26_pkg1.ads
+ 654988756577bafafccb7865625040f7  gcc/testsuite/gnat.dg/lto26_pkg2.adb
+ 5f287af670c9bdcf463957cb04a9cd11  gcc/testsuite/gnat.dg/lto26_pkg2.ads
  2acb4cc31994f1569a3db6ac6613928d  gcc/testsuite/gnat.dg/lto4.adb
  9b38247c8e825c514f87e2965d931dad  gcc/testsuite/gnat.dg/lto4.ads
  959fb8bdf4cd1c34347ecfbab19ea60b  gcc/testsuite/gnat.dg/lto5.adb
*************** d08c54150d7f38b530209a35570b190e  gcc/te
*** 87031,87036 ****
--- 94207,94214 ----
  da098733ad0c559d77d5e016d5cc3120  gcc/testsuite/gnat.dg/lto9_pkg2.ads
  b0752d6fc68f640a84237fcef9762258  gcc/testsuite/gnat.dg/machine_attr1.adb
  2ae11fd4a1acf9b36a65534e58e92abb  gcc/testsuite/gnat.dg/machine_attr1.ads
+ 198e584cc0cef45ce405667052c23e05  gcc/testsuite/gnat.dg/machine_attr2.adb
+ a43575908eb1e17e2afdeb4ea7308f2a  gcc/testsuite/gnat.dg/machine_attr2.ads
  cc1ed6ae65ad5b0d5af3f2f3767e091e  gcc/testsuite/gnat.dg/machine_code1.adb
  ebbd44798662a03d43697c3bec8dc4b4  gcc/testsuite/gnat.dg/max_align.adb
  edfa22639b0fb30d009fbc732d8cecad  gcc/testsuite/gnat.dg/max_size.adb
*************** be5803453205216364ce8b4a9f0356a8  gcc/te
*** 87124,87129 ****
--- 94302,94310 ----
  02b04a1bcbc91f013644c665394a541a  gcc/testsuite/gnat.dg/opt1.adb
  c36f023977042ca971d3f58ec44a533a  gcc/testsuite/gnat.dg/opt1.ads
  f9299b514c5c25293c940907f5a4059d  gcc/testsuite/gnat.dg/opt10.adb
+ 96951bbcc111d51906e9a661916136fc  gcc/testsuite/gnat.dg/opt100.adb
+ 0ab0b8847dab59911bd57ae14b153fc9  gcc/testsuite/gnat.dg/opt100_pkg.adb
+ edbbd0b00edd7e8662b7c3b2dafa9ede  gcc/testsuite/gnat.dg/opt100_pkg.ads
  5d50fb38b1ab84c39760906cb103c522  gcc/testsuite/gnat.dg/opt10_pkg.ads
  603264d4afdd2fd2174ea9c4cf4653ed  gcc/testsuite/gnat.dg/opt11.adb
  53160585b3a5d820b653e1e0d5f14c75  gcc/testsuite/gnat.dg/opt11.ads
*************** b7ca4abc01a37a16fef857ccd27a5270  gcc/te
*** 87190,87196 ****
  cd1cd547ffd6a15fd43fea30ececc910  gcc/testsuite/gnat.dg/opt38.adb
  c7cef5a4232a339afa288abd7cb369dc  gcc/testsuite/gnat.dg/opt38_pkg.adb
  ba03504b0b64d5f70065d0214412516e  gcc/testsuite/gnat.dg/opt38_pkg.ads
! b68f7c21a43857201360263c12f05b62  gcc/testsuite/gnat.dg/opt39.adb
  65e20f998d483941d92a34b07b482d10  gcc/testsuite/gnat.dg/opt3_pkg.ads
  e98c04ac385dbd0581c1f5fa108caf6b  gcc/testsuite/gnat.dg/opt4.adb
  b01ea6b67501d6d62a0d6e7adb46db12  gcc/testsuite/gnat.dg/opt40.adb
--- 94371,94377 ----
  cd1cd547ffd6a15fd43fea30ececc910  gcc/testsuite/gnat.dg/opt38.adb
  c7cef5a4232a339afa288abd7cb369dc  gcc/testsuite/gnat.dg/opt38_pkg.adb
  ba03504b0b64d5f70065d0214412516e  gcc/testsuite/gnat.dg/opt38_pkg.ads
! 9cb1eebc7c1fa1b2f4e60463d44d506e  gcc/testsuite/gnat.dg/opt39.adb
  65e20f998d483941d92a34b07b482d10  gcc/testsuite/gnat.dg/opt3_pkg.ads
  e98c04ac385dbd0581c1f5fa108caf6b  gcc/testsuite/gnat.dg/opt4.adb
  b01ea6b67501d6d62a0d6e7adb46db12  gcc/testsuite/gnat.dg/opt40.adb
*************** cebcd76e2479c79677bbc78316b57186  gcc/te
*** 87329,87334 ****
--- 94510,94521 ----
  be4ae336c50882da5846142a7791cd3a  gcc/testsuite/gnat.dg/opt96_pkg.adb
  15c1a01fd2ed3d1a51b5d70bb800b81b  gcc/testsuite/gnat.dg/opt96_pkg.ads
  54d43e9be4aa549ec90480fc17f7a14e  gcc/testsuite/gnat.dg/opt97.adb
+ 328157ca07ef699ddd1a1154fb8f9566  gcc/testsuite/gnat.dg/opt98.adb
+ da863d7900e03874ef4d647c1f435f9b  gcc/testsuite/gnat.dg/opt98.ads
+ 98bbede57f573f4a759215419cb26366  gcc/testsuite/gnat.dg/opt99.adb
+ 5a7b2faacf185dcb0d549681fb261c3d  gcc/testsuite/gnat.dg/opt99_pkg1.adb
+ 270ad38b717c4d318e19c32599dd7fed  gcc/testsuite/gnat.dg/opt99_pkg1.ads
+ 6bd34debf3443a19d8e0cd9764e4138d  gcc/testsuite/gnat.dg/opt99_pkg2.ads
  feb376d91f5514b647b1ad61b025d828  gcc/testsuite/gnat.dg/opt9_pkg.ads
  0a9bf4dbd445ef99721501592f66cea2  gcc/testsuite/gnat.dg/others1.adb
  9f62042ad37161c5182cb92d70d0b24d  gcc/testsuite/gnat.dg/out_param.adb
*************** b41ce2938f97909d07c7e12fb8e4fbde  gcc/te
*** 87479,87485 ****
  eea1763b362d0ff23e2783bb97e336e6  gcc/testsuite/gnat.dg/prot5_pkg.ads
  44313f4b762c0f468238194c81b53cc2  gcc/testsuite/gnat.dg/prot6.adb
  bcf5df39180036c2c4260d1f953fbaeb  gcc/testsuite/gnat.dg/prot6.ads
! 307909b7c2a52412905321c391dde212  gcc/testsuite/gnat.dg/prot7.adb
  01a76f33aa3f463ed87a50dce9853d75  gcc/testsuite/gnat.dg/prot7.ads
  55fcbbde756aac641b523093a1993e0b  gcc/testsuite/gnat.dg/prot8.adb
  d6c5ec2f4582cab7e7e9a374281333b8  gcc/testsuite/gnat.dg/prot8.ads
--- 94666,94672 ----
  eea1763b362d0ff23e2783bb97e336e6  gcc/testsuite/gnat.dg/prot5_pkg.ads
  44313f4b762c0f468238194c81b53cc2  gcc/testsuite/gnat.dg/prot6.adb
  bcf5df39180036c2c4260d1f953fbaeb  gcc/testsuite/gnat.dg/prot6.ads
! 72c3e92bf1e114e685ece1dfdba6b38a  gcc/testsuite/gnat.dg/prot7.adb
  01a76f33aa3f463ed87a50dce9853d75  gcc/testsuite/gnat.dg/prot7.ads
  55fcbbde756aac641b523093a1993e0b  gcc/testsuite/gnat.dg/prot8.adb
  d6c5ec2f4582cab7e7e9a374281333b8  gcc/testsuite/gnat.dg/prot8.ads
*************** d1eb3c018998a0148ec38f5289953cb4  gcc/te
*** 87526,87533 ****
  46310c43df3885f35749ebe6cb66bbc8  gcc/testsuite/gnat.dg/remote_call_iface.ads
  11cb7b1571a2f321e08b0dc577cc61c3  gcc/testsuite/gnat.dg/remote_type.adb
  a69c0bfa5361221d9a3ccb55aba36f65  gcc/testsuite/gnat.dg/remote_type.ads
! 5a11b23912d6e1695fe7b02ca1ab1e79  gcc/testsuite/gnat.dg/renaming1.adb
! bd812535e6617c5f4dde6719c8748277  gcc/testsuite/gnat.dg/renaming1.ads
  95d7703afe25fd090863c05ffcded594  gcc/testsuite/gnat.dg/renaming10.adb
  404005db149a5434ece08f5fccea5a18  gcc/testsuite/gnat.dg/renaming10.ads
  a971011491985eeefb44143283e50a6e  gcc/testsuite/gnat.dg/renaming11.adb
--- 94713,94720 ----
  46310c43df3885f35749ebe6cb66bbc8  gcc/testsuite/gnat.dg/remote_call_iface.ads
  11cb7b1571a2f321e08b0dc577cc61c3  gcc/testsuite/gnat.dg/remote_type.adb
  a69c0bfa5361221d9a3ccb55aba36f65  gcc/testsuite/gnat.dg/remote_type.ads
! a3407fabc4d0c52e5a25c8c00aad5978  gcc/testsuite/gnat.dg/renaming1.adb
! 78ad4fb2671317825fc223986f266383  gcc/testsuite/gnat.dg/renaming1.ads
  95d7703afe25fd090863c05ffcded594  gcc/testsuite/gnat.dg/renaming10.adb
  404005db149a5434ece08f5fccea5a18  gcc/testsuite/gnat.dg/renaming10.ads
  a971011491985eeefb44143283e50a6e  gcc/testsuite/gnat.dg/renaming11.adb
*************** c2758eba5ff055c85080db805c5f9ad3  gcc/te
*** 87598,87603 ****
--- 94785,94791 ----
  f00eab7afc57f66659bba49ca66507fc  gcc/testsuite/gnat.dg/set_in_pproc.adb
  7524bfd6d1bb231661891ecbbe387abd  gcc/testsuite/gnat.dg/sets1.adb
  092dd86aeeb0b9fb8c0e85a23a64a5d3  gcc/testsuite/gnat.dg/shift1.adb
+ 9216343eac631096d35f2c9747b9c139  gcc/testsuite/gnat.dg/shift2.adb
  f436e9958bc39e5210d7c4f0686fcc84  gcc/testsuite/gnat.dg/show_deques_priority.adb
  5aedc0737da2c4b3c0b71c05e61d1ae4  gcc/testsuite/gnat.dg/sin_cos.adb
  2a8c679c8bc430cbeb10f30a4c8277a1  gcc/testsuite/gnat.dg/sin_cos.ads
*************** db54eaf7b9b23ba99c7b6f5e462815b0  gcc/te
*** 87685,87690 ****
--- 94873,94879 ----
  35e62ffa257f41034e151ee57cc28411  gcc/testsuite/gnat.dg/specs/controlled1_pkg.ads
  bc355828b1cdd85584d723d302e0dd02  gcc/testsuite/gnat.dg/specs/controller.ads
  beaf6f5b2469866c75e235d2ce97dfe1  gcc/testsuite/gnat.dg/specs/corr_discr.ads
+ 67d94af440f2dbfad36eb54a8943ef71  gcc/testsuite/gnat.dg/specs/coverage1.ads
  e63c264218dd1c2dc831e7d0283b1f18  gcc/testsuite/gnat.dg/specs/cpp1.ads
  4f542145776f195cdf433f034952c0c4  gcc/testsuite/gnat.dg/specs/cpp_assignment.ads
  5fb602bf45ccd969b56776971aeee02c  gcc/testsuite/gnat.dg/specs/debug1.ads
*************** e63c264218dd1c2dc831e7d0283b1f18  gcc/te
*** 87695,87701 ****
  8fe08303eae8308e89dc7719f9c21195  gcc/testsuite/gnat.dg/specs/discr3.ads
  3fbde7cf98bec667a6278f3dfb8ee585  gcc/testsuite/gnat.dg/specs/discr4.ads
  8d06d6a6c623a809cf89f3cd2fb5c5d2  gcc/testsuite/gnat.dg/specs/discr4_pkg.ads
! c3219a5dfca33df0b8516035b0841e7e  gcc/testsuite/gnat.dg/specs/discr5.ads
  e4392f7b06cad4011c1b8d6b8192bc34  gcc/testsuite/gnat.dg/specs/discr6.ads
  53c16b267b914c115c6ecaf74af068f2  gcc/testsuite/gnat.dg/specs/discr7.ads
  a78fb7cbf02009e1325caab8c3a179c2  gcc/testsuite/gnat.dg/specs/double_record_extension1.ads
--- 94884,94890 ----
  8fe08303eae8308e89dc7719f9c21195  gcc/testsuite/gnat.dg/specs/discr3.ads
  3fbde7cf98bec667a6278f3dfb8ee585  gcc/testsuite/gnat.dg/specs/discr4.ads
  8d06d6a6c623a809cf89f3cd2fb5c5d2  gcc/testsuite/gnat.dg/specs/discr4_pkg.ads
! 74bd24da39fc0a795240eaa56746b666  gcc/testsuite/gnat.dg/specs/discr5.ads
  e4392f7b06cad4011c1b8d6b8192bc34  gcc/testsuite/gnat.dg/specs/discr6.ads
  53c16b267b914c115c6ecaf74af068f2  gcc/testsuite/gnat.dg/specs/discr7.ads
  a78fb7cbf02009e1325caab8c3a179c2  gcc/testsuite/gnat.dg/specs/double_record_extension1.ads
*************** d08fc5bb90c077df2b13f07719bffddf  gcc/te
*** 87708,87714 ****
  73d3a6b37946040d43a716c11af2b46a  gcc/testsuite/gnat.dg/specs/elab4.ads
  b5e0e1586baf534e8a536780aa057957  gcc/testsuite/gnat.dg/specs/elab4_proc.adb
  a7bd734382497172aa271ae6f28c2872  gcc/testsuite/gnat.dg/specs/elab4_proc.ads
! 238f19d949648b10d2d8126f67615c6a  gcc/testsuite/gnat.dg/specs/empty_variants.ads
  4ee6f85529262f699db7820d6a2c74dc  gcc/testsuite/gnat.dg/specs/fe_inlining.ads
  757c6c1089f7521b4d88d3ea98faeac3  gcc/testsuite/gnat.dg/specs/fe_inlining_helper.adb
  bc790bd930f8c4f971b8268bdda83659  gcc/testsuite/gnat.dg/specs/fe_inlining_helper.ads
--- 94897,94903 ----
  73d3a6b37946040d43a716c11af2b46a  gcc/testsuite/gnat.dg/specs/elab4.ads
  b5e0e1586baf534e8a536780aa057957  gcc/testsuite/gnat.dg/specs/elab4_proc.adb
  a7bd734382497172aa271ae6f28c2872  gcc/testsuite/gnat.dg/specs/elab4_proc.ads
! 19d6ac9eb9ea7af60a070b74d395aa4c  gcc/testsuite/gnat.dg/specs/empty_variants.ads
  4ee6f85529262f699db7820d6a2c74dc  gcc/testsuite/gnat.dg/specs/fe_inlining.ads
  757c6c1089f7521b4d88d3ea98faeac3  gcc/testsuite/gnat.dg/specs/fe_inlining_helper.adb
  bc790bd930f8c4f971b8268bdda83659  gcc/testsuite/gnat.dg/specs/fe_inlining_helper.ads
*************** bc9e693a63b338619703ea41ddab830f  gcc/te
*** 87755,87767 ****
  d2c31258feee390ed4af80cdc8eacf9e  gcc/testsuite/gnat.dg/specs/opt4.ads
  4f688dab65d3a3dce65837fb7dc54961  gcc/testsuite/gnat.dg/specs/opt5.ads
  f156038848774963622d503fe89a172b  gcc/testsuite/gnat.dg/specs/opt5_pkg.ads
  a33d565d33da0c1fd4225f3e0005c81e  gcc/testsuite/gnat.dg/specs/oversize.ads
  c177b376a4a8546663a7caa87b66abb4  gcc/testsuite/gnat.dg/specs/pack10.ads
  aca39671a4d090d6d3c7a2abf4ee74a6  gcc/testsuite/gnat.dg/specs/pack10_pkg.adb
  c6de0f3aaa435081928e12029357b92d  gcc/testsuite/gnat.dg/specs/pack10_pkg.ads
  cd22645821177ce04fdc0598136a9c42  gcc/testsuite/gnat.dg/specs/pack11.ads
  aedd023a4b034ff0dff7215e64fe174a  gcc/testsuite/gnat.dg/specs/pack12.ads
! 392a7c87111d556506caa4797c157522  gcc/testsuite/gnat.dg/specs/pack13.ads
  b6d3470289ff1f9bba31adf32cdc40e8  gcc/testsuite/gnat.dg/specs/pack2.ads
  387f38475eb4b6a5a9545b44704157cb  gcc/testsuite/gnat.dg/specs/pack3.ads
  c7bb3d90300eedefe69c9d829c00add4  gcc/testsuite/gnat.dg/specs/pack33.ads
--- 94944,94957 ----
  d2c31258feee390ed4af80cdc8eacf9e  gcc/testsuite/gnat.dg/specs/opt4.ads
  4f688dab65d3a3dce65837fb7dc54961  gcc/testsuite/gnat.dg/specs/opt5.ads
  f156038848774963622d503fe89a172b  gcc/testsuite/gnat.dg/specs/opt5_pkg.ads
+ 3ea255ec02895b0a6def7cabd8242168  gcc/testsuite/gnat.dg/specs/opt6.ads
  a33d565d33da0c1fd4225f3e0005c81e  gcc/testsuite/gnat.dg/specs/oversize.ads
  c177b376a4a8546663a7caa87b66abb4  gcc/testsuite/gnat.dg/specs/pack10.ads
  aca39671a4d090d6d3c7a2abf4ee74a6  gcc/testsuite/gnat.dg/specs/pack10_pkg.adb
  c6de0f3aaa435081928e12029357b92d  gcc/testsuite/gnat.dg/specs/pack10_pkg.ads
  cd22645821177ce04fdc0598136a9c42  gcc/testsuite/gnat.dg/specs/pack11.ads
  aedd023a4b034ff0dff7215e64fe174a  gcc/testsuite/gnat.dg/specs/pack12.ads
! dc822da5a2a5aac1362784032156b55d  gcc/testsuite/gnat.dg/specs/pack13.ads
  b6d3470289ff1f9bba31adf32cdc40e8  gcc/testsuite/gnat.dg/specs/pack2.ads
  387f38475eb4b6a5a9545b44704157cb  gcc/testsuite/gnat.dg/specs/pack3.ads
  c7bb3d90300eedefe69c9d829c00add4  gcc/testsuite/gnat.dg/specs/pack33.ads
*************** dd11fa8c12b9ae6c22d0229f9abfe2d2  gcc/te
*** 87809,87815 ****
  03db4e24fa57d6ec6411373454c770fe  gcc/testsuite/gnat.dg/specs/size_clause4.ads
  4af0c027bf11e98fb8317a33690de3b7  gcc/testsuite/gnat.dg/specs/size_clause5.ads
  f381006ab319a77a628dc42fb91642d1  gcc/testsuite/gnat.dg/specs/small_alignment.ads
! 60a23a5c3234461fad37a66533711f9f  gcc/testsuite/gnat.dg/specs/specs.exp
  10d9cb2f95c3b869e5b5ba8979e4226d  gcc/testsuite/gnat.dg/specs/sso1.ads
  ee68f5075e2ac910d2768455326b877d  gcc/testsuite/gnat.dg/specs/sso2.ads
  a7458b24c06bfe4873fec60e537ee095  gcc/testsuite/gnat.dg/specs/static_initializer.ads
--- 94999,95005 ----
  03db4e24fa57d6ec6411373454c770fe  gcc/testsuite/gnat.dg/specs/size_clause4.ads
  4af0c027bf11e98fb8317a33690de3b7  gcc/testsuite/gnat.dg/specs/size_clause5.ads
  f381006ab319a77a628dc42fb91642d1  gcc/testsuite/gnat.dg/specs/small_alignment.ads
! e13bda6e37d2582309acbe2e48c499b9  gcc/testsuite/gnat.dg/specs/specs.exp
  10d9cb2f95c3b869e5b5ba8979e4226d  gcc/testsuite/gnat.dg/specs/sso1.ads
  ee68f5075e2ac910d2768455326b877d  gcc/testsuite/gnat.dg/specs/sso2.ads
  a7458b24c06bfe4873fec60e537ee095  gcc/testsuite/gnat.dg/specs/static_initializer.ads
*************** de366240409b1c3413cd274333487fb7  gcc/te
*** 87830,87836 ****
  a013922e8c147a09784a5aca21aa3a65  gcc/testsuite/gnat.dg/specs/unchecked_union1.ads
  fbc11dba24887c4af40c8660f7168a67  gcc/testsuite/gnat.dg/specs/unchecked_union2.ads
  c8cf8a4c8db78f809bd3550ca820e6a5  gcc/testsuite/gnat.dg/specs/universal_fixed.ads
! 48e24b1fe95b06b79e45c35b84db99be  gcc/testsuite/gnat.dg/specs/variant_part.ads
  12e2e0159b45a86a40c49bc020048d43  gcc/testsuite/gnat.dg/specs/varsize_return.ads
  8bea113f401f2dd5575f665633d17e57  gcc/testsuite/gnat.dg/specs/varsize_return2.ads
  4ce7745f29e9dcab891631269cd5653f  gcc/testsuite/gnat.dg/specs/varsize_return2_pkg.adb
--- 95020,95026 ----
  a013922e8c147a09784a5aca21aa3a65  gcc/testsuite/gnat.dg/specs/unchecked_union1.ads
  fbc11dba24887c4af40c8660f7168a67  gcc/testsuite/gnat.dg/specs/unchecked_union2.ads
  c8cf8a4c8db78f809bd3550ca820e6a5  gcc/testsuite/gnat.dg/specs/universal_fixed.ads
! 956da2e940d0e7706607f91ce39d70ad  gcc/testsuite/gnat.dg/specs/variant_part.ads
  12e2e0159b45a86a40c49bc020048d43  gcc/testsuite/gnat.dg/specs/varsize_return.ads
  8bea113f401f2dd5575f665633d17e57  gcc/testsuite/gnat.dg/specs/varsize_return2.ads
  4ce7745f29e9dcab891631269cd5653f  gcc/testsuite/gnat.dg/specs/varsize_return2_pkg.adb
*************** fafeaea1e6dc6430a977c194dcce2366  gcc/te
*** 87843,87849 ****
  2d6bea14f8e514f5f34e005d6b116ff9  gcc/testsuite/gnat.dg/specs/vfa2.ads
  de49d4de8670ae0823ffb5315870359c  gcc/testsuite/gnat.dg/specs/volatile1.ads
  3ab8359f200ce6638ca1a08c54293318  gcc/testsuite/gnat.dg/specs/warnstar.ads
! a189f968eaf4c4558d6078a8fdbdfe15  gcc/testsuite/gnat.dg/specs/weak1.ads
  fda542cb8479aae4bcabd1173368fde0  gcc/testsuite/gnat.dg/specs/with_containers.ads
  722565f40ddfaf6aec53ccd3be32064b  gcc/testsuite/gnat.dg/spipaterr.adb
  3a362b022ea47b7b4fba9e347e0a9d34  gcc/testsuite/gnat.dg/split_args.adb
--- 95033,95039 ----
  2d6bea14f8e514f5f34e005d6b116ff9  gcc/testsuite/gnat.dg/specs/vfa2.ads
  de49d4de8670ae0823ffb5315870359c  gcc/testsuite/gnat.dg/specs/volatile1.ads
  3ab8359f200ce6638ca1a08c54293318  gcc/testsuite/gnat.dg/specs/warnstar.ads
! 83ff35b3de15ad167604f5a3fec2f0f2  gcc/testsuite/gnat.dg/specs/weak1.ads
  fda542cb8479aae4bcabd1173368fde0  gcc/testsuite/gnat.dg/specs/with_containers.ads
  722565f40ddfaf6aec53ccd3be32064b  gcc/testsuite/gnat.dg/spipaterr.adb
  3a362b022ea47b7b4fba9e347e0a9d34  gcc/testsuite/gnat.dg/split_args.adb
*************** ee874e3a5ed130d124c36bc00620ecf7  gcc/te
*** 87904,87910 ****
  f98695363c137c382d6de62ada73bc3c  gcc/testsuite/gnat.dg/sso/s6.adb
  932dcf06c9a657de839f1236ad1ce3a7  gcc/testsuite/gnat.dg/sso/s7.adb
  f876cc05ea75ed91c3f5cfb97ed0a9ae  gcc/testsuite/gnat.dg/sso/s8.adb
! 9ddfa934095b65ffea844f78866192f7  gcc/testsuite/gnat.dg/sso/sso.exp
  4b8f6f3bf1259d1c79c730c0c243f725  gcc/testsuite/gnat.dg/sso/t1.adb
  d4a304e697934a32984599c6d5941f55  gcc/testsuite/gnat.dg/sso/t10.adb
  3cab6b52089b5bd99bb853fbdab1352c  gcc/testsuite/gnat.dg/sso/t11.adb
--- 95094,95100 ----
  f98695363c137c382d6de62ada73bc3c  gcc/testsuite/gnat.dg/sso/s6.adb
  932dcf06c9a657de839f1236ad1ce3a7  gcc/testsuite/gnat.dg/sso/s7.adb
  f876cc05ea75ed91c3f5cfb97ed0a9ae  gcc/testsuite/gnat.dg/sso/s8.adb
! 5ff695ba0aab3e2c7c8469ad901e230e  gcc/testsuite/gnat.dg/sso/sso.exp
  4b8f6f3bf1259d1c79c730c0c243f725  gcc/testsuite/gnat.dg/sso/t1.adb
  d4a304e697934a32984599c6d5941f55  gcc/testsuite/gnat.dg/sso/t10.adb
  3cab6b52089b5bd99bb853fbdab1352c  gcc/testsuite/gnat.dg/sso/t11.adb
*************** d5c146078d224d7491b0622d11647b77  gcc/te
*** 87930,87935 ****
--- 95120,95126 ----
  d0480aca937a9fe678328be80c523277  gcc/testsuite/gnat.dg/sso15.adb
  9a8b9c8338f7df1d565755ffc671257e  gcc/testsuite/gnat.dg/sso16.adb
  fd304d08c4ca43544588bd14358a9c0a  gcc/testsuite/gnat.dg/sso17.adb
+ 6c87692ce5565e68f354b3b1cb842c39  gcc/testsuite/gnat.dg/sso18.adb
  ff784f7bca69d0717e740273960b0387  gcc/testsuite/gnat.dg/sso2.adb
  ccf43eb5df39869bb23ff9110d3b93cb  gcc/testsuite/gnat.dg/sso2.ads
  6fe64945c0d0238672cdece04341c316  gcc/testsuite/gnat.dg/sso3.adb
*************** bb1207d00011fa510617f94b62a94456  gcc/te
*** 88132,88138 ****
  dabd5b43f529cc66c1c6b885a976833a  gcc/testsuite/gnat.dg/unchecked_convert7.adb
  e8e39c388c32e8e9b60efbb677b05921  gcc/testsuite/gnat.dg/unchecked_convert8.adb
  9a4ca22f9ae038016e6da1eac1faac8e  gcc/testsuite/gnat.dg/unchecked_convert8.ads
! 2983a9c179c53308e13fb9bc455ec77d  gcc/testsuite/gnat.dg/unchecked_convert9.adb
  f175b16d43d86bada669751e2223586b  gcc/testsuite/gnat.dg/unchecked_convert9.ads
  bb65c4fde027a30c686dc94b413d88df  gcc/testsuite/gnat.dg/unchecked_union1.adb
  1394b7d36fa61e7f3417caa6cf755de5  gcc/testsuite/gnat.dg/unchecked_union2.adb
--- 95323,95329 ----
  dabd5b43f529cc66c1c6b885a976833a  gcc/testsuite/gnat.dg/unchecked_convert7.adb
  e8e39c388c32e8e9b60efbb677b05921  gcc/testsuite/gnat.dg/unchecked_convert8.adb
  9a4ca22f9ae038016e6da1eac1faac8e  gcc/testsuite/gnat.dg/unchecked_convert8.ads
! 618a66a1357d567c384c2481611925c2  gcc/testsuite/gnat.dg/unchecked_convert9.adb
  f175b16d43d86bada669751e2223586b  gcc/testsuite/gnat.dg/unchecked_convert9.ads
  bb65c4fde027a30c686dc94b413d88df  gcc/testsuite/gnat.dg/unchecked_union1.adb
  1394b7d36fa61e7f3417caa6cf755de5  gcc/testsuite/gnat.dg/unchecked_union2.adb
*************** bc5c4f1f4e58180b0a24589c29711f23  gcc/te
*** 88278,88284 ****
  fcb1c68b871ab7fd95f9b175c192140e  gcc/testsuite/gnat.dg/warn27.adb
  9300d09afa2a1e60a62e3fb3eecbacba  gcc/testsuite/gnat.dg/warn28.adb
  236452a06378f6aef3276dd56a193a7b  gcc/testsuite/gnat.dg/warn28.ads
! db412f0035a498590ca6aa9f6df28385  gcc/testsuite/gnat.dg/warn29.adb
  060f18d6a091b4f3c80b167205c32c72  gcc/testsuite/gnat.dg/warn29.ads
  322f2bd4e376d2571dc108f92c498851  gcc/testsuite/gnat.dg/warn3.adb
  8b4c49598545ac1b0fe3151f9eaf1d06  gcc/testsuite/gnat.dg/warn30.adb
--- 95469,95475 ----
  fcb1c68b871ab7fd95f9b175c192140e  gcc/testsuite/gnat.dg/warn27.adb
  9300d09afa2a1e60a62e3fb3eecbacba  gcc/testsuite/gnat.dg/warn28.adb
  236452a06378f6aef3276dd56a193a7b  gcc/testsuite/gnat.dg/warn28.ads
! a60d5bd3c7d97738a821caa2b6320a63  gcc/testsuite/gnat.dg/warn29.adb
  060f18d6a091b4f3c80b167205c32c72  gcc/testsuite/gnat.dg/warn29.ads
  322f2bd4e376d2571dc108f92c498851  gcc/testsuite/gnat.dg/warn3.adb
  8b4c49598545ac1b0fe3151f9eaf1d06  gcc/testsuite/gnat.dg/warn30.adb
*************** dd1a1376bad078a4b0eda0ead4a2ea6a  gcc/te
*** 88308,88314 ****
  00f78e8b316dd9541a723b06890c4406  gcc/testsuite/go.dg/arrayclear.go
  ac8af654d131c62dc2127d399247a353  gcc/testsuite/go.dg/cmpstring.go
  47e6563411ed24d0afefc1878c094034  gcc/testsuite/go.dg/concatstring.go
! be4d1822c5d72bf0fa32609ccecb8c31  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
  f0f18b0d11f15d53150f63d507b4fe27  gcc/testsuite/go.dg/mapclear.go
--- 95499,95505 ----
  00f78e8b316dd9541a723b06890c4406  gcc/testsuite/go.dg/arrayclear.go
  ac8af654d131c62dc2127d399247a353  gcc/testsuite/go.dg/cmpstring.go
  47e6563411ed24d0afefc1878c094034  gcc/testsuite/go.dg/concatstring.go
! a4a6ee1ca1987bf3358175ab18335431  gcc/testsuite/go.dg/dg.exp
  df3ff5f9e0759960e0959e71a0d0583f  gcc/testsuite/go.dg/err-1.go
  ec0e3914d3f5df5bec3a4fd8dcf1c0af  gcc/testsuite/go.dg/goto-1.go
  f0f18b0d11f15d53150f63d507b4fe27  gcc/testsuite/go.dg/mapclear.go
*************** a06ac97125a90b106e6e0dfd7a0cd8cb  gcc/te
*** 88319,88325 ****
  17039a57c84f9e6feac3ac4966736a0a  gcc/testsuite/go.go-torture/execute/chan-1.go
  94342e6c8cd3f59c55238778fb232b4a  gcc/testsuite/go.go-torture/execute/const-1.go
  dac6eeae922725468eebc84b9a7d4875  gcc/testsuite/go.go-torture/execute/const-2.go
! 60c10574ae8eb05cf30d260a4e99553e  gcc/testsuite/go.go-torture/execute/execute.exp
  4a320c5186c74f3c69e7f51ba7a7ab90  gcc/testsuite/go.go-torture/execute/expr-1.go
  1a159bafbc3293455e900de2c4243d3c  gcc/testsuite/go.go-torture/execute/for-1.go
  c7464eac2b485f2580aee2f19f76477f  gcc/testsuite/go.go-torture/execute/for-2.go
--- 95510,95516 ----
  17039a57c84f9e6feac3ac4966736a0a  gcc/testsuite/go.go-torture/execute/chan-1.go
  94342e6c8cd3f59c55238778fb232b4a  gcc/testsuite/go.go-torture/execute/const-1.go
  dac6eeae922725468eebc84b9a7d4875  gcc/testsuite/go.go-torture/execute/const-2.go
! 9907a6e4f6dfc9ec94cc5cb0eb8b9f98  gcc/testsuite/go.go-torture/execute/execute.exp
  4a320c5186c74f3c69e7f51ba7a7ab90  gcc/testsuite/go.go-torture/execute/expr-1.go
  1a159bafbc3293455e900de2c4243d3c  gcc/testsuite/go.go-torture/execute/for-1.go
  c7464eac2b485f2580aee2f19f76477f  gcc/testsuite/go.go-torture/execute/for-2.go
*************** f37d4791cfa22e9a20848922ea5de498  gcc/te
*** 88347,88353 ****
  b760f8c4f0593565426879b84ab6787b  gcc/testsuite/go.go-torture/execute/var-1.go
  55c3fdb5eab9130c79b8548c994aa8d9  gcc/testsuite/go.go-torture/execute/var-2.go
  ac0017eb534302ec5987291f615d13ca  gcc/testsuite/go.go-torture/execute/var-3.go
! 8e325cb4fccf8d995226faec20c55fe7  gcc/testsuite/go.test/go-test.exp
  88c59e0bc9f2a79ed3a3e8f1409ed1d8  gcc/testsuite/go.test/test/235.go
  1a94dd86d2262280f883261800a13104  gcc/testsuite/go.test/test/64bit.go
  43e15a8d565d16ab908b7cf6db8e0bf9  gcc/testsuite/go.test/test/README.gcc
--- 95538,95544 ----
  b760f8c4f0593565426879b84ab6787b  gcc/testsuite/go.go-torture/execute/var-1.go
  55c3fdb5eab9130c79b8548c994aa8d9  gcc/testsuite/go.go-torture/execute/var-2.go
  ac0017eb534302ec5987291f615d13ca  gcc/testsuite/go.go-torture/execute/var-3.go
! f6da68fce4ac830fac5e50ccfca98947  gcc/testsuite/go.test/go-test.exp
  88c59e0bc9f2a79ed3a3e8f1409ed1d8  gcc/testsuite/go.test/test/235.go
  1a94dd86d2262280f883261800a13104  gcc/testsuite/go.test/test/64bit.go
  43e15a8d565d16ab908b7cf6db8e0bf9  gcc/testsuite/go.test/test/README.gcc
*************** d819c6d8e530b093b184a70ea1f5830c  gcc/te
*** 89530,89536 ****
  025630cfcf4cc020a86e04827eeefb78  gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go
  1d6202b7968819b5a4e8ba2c52bffc65  gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go
  d1e8ca134d7af84b725dab791221e3ab  gcc/testsuite/go.test/test/fixedbugs/issue27836.go
! ff7aadaf81b036c2f7c1f83c43f25790  gcc/testsuite/go.test/test/fixedbugs/issue27938.go
  a13227d12abe8dee23e407cb8da00f7a  gcc/testsuite/go.test/test/fixedbugs/issue27961.go
  660a6994843e05e43374491e31744208  gcc/testsuite/go.test/test/fixedbugs/issue28055.go
  113c8bc0a928029f41f14a83ddb2cced  gcc/testsuite/go.test/test/fixedbugs/issue28058.go
--- 96721,96727 ----
  025630cfcf4cc020a86e04827eeefb78  gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Äfoo.go
  1d6202b7968819b5a4e8ba2c52bffc65  gcc/testsuite/go.test/test/fixedbugs/issue27836.dir/Ämain.go
  d1e8ca134d7af84b725dab791221e3ab  gcc/testsuite/go.test/test/fixedbugs/issue27836.go
! 7ab1a68a935e5c688ca1394907d1ebd1  gcc/testsuite/go.test/test/fixedbugs/issue27938.go
  a13227d12abe8dee23e407cb8da00f7a  gcc/testsuite/go.test/test/fixedbugs/issue27961.go
  660a6994843e05e43374491e31744208  gcc/testsuite/go.test/test/fixedbugs/issue28055.go
  113c8bc0a928029f41f14a83ddb2cced  gcc/testsuite/go.test/test/fixedbugs/issue28058.go
*************** d19a0449bac1fb497429a88904f3d658  gcc/te
*** 90294,90300 ****
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
  38e97f454caf88626c8bd5c84285fb07  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
! 2b9047a87199ea43ffa67df9e0b7f6f2  gcc/testsuite/jit.dg/harness.h
  c3b5a87cb24b18d5a584f92e61d9cbab  gcc/testsuite/jit.dg/jit.exp
  3fd6900c9d1d0edd53191542d96ffcec  gcc/testsuite/jit.dg/test-accessing-bitfield.c
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
--- 97485,97491 ----
  340e08c9aef97a2da8f4cd4568d52675  gcc/testsuite/jit.dg/add-driver-options-testlib.c
  38e97f454caf88626c8bd5c84285fb07  gcc/testsuite/jit.dg/all-non-failing-tests.h
  7bc42e89ae77872c8fc581b4babf1832  gcc/testsuite/jit.dg/create-code-for-hello-world-executable.h
! 6599d673695ac45c69f897e7b9643cdb  gcc/testsuite/jit.dg/harness.h
  c3b5a87cb24b18d5a584f92e61d9cbab  gcc/testsuite/jit.dg/jit.exp
  3fd6900c9d1d0edd53191542d96ffcec  gcc/testsuite/jit.dg/test-accessing-bitfield.c
  790dcf4e4a5c3dce84639ef815265f21  gcc/testsuite/jit.dg/test-accessing-struct.c
*************** c9f821ccc1905c2cf6da3b515300cc71  gcc/te
*** 90306,90312 ****
  978312b6ef29d047612e4077b2776108  gcc/testsuite/jit.dg/test-array-as-pointer.c
  b6b657ddbcecefb50b21259cc5711010  gcc/testsuite/jit.dg/test-arrays.c
  56ce2077b85dacdbb546575eb90002b6  gcc/testsuite/jit.dg/test-asm.c
! ce4038aa80902d89e3050a7f93a7d94e  gcc/testsuite/jit.dg/test-asm.cc
  cc1b167a1d5eaf426dbf6721a80c93e7  gcc/testsuite/jit.dg/test-autovectorize.c
  3f5b0ae02ffd9c801777cd40eeb400a9  gcc/testsuite/jit.dg/test-benchmark.c
  3e0111bf71ea4a09db4266d20c9c2ff0  gcc/testsuite/jit.dg/test-bitcast.c
--- 97497,97503 ----
  978312b6ef29d047612e4077b2776108  gcc/testsuite/jit.dg/test-array-as-pointer.c
  b6b657ddbcecefb50b21259cc5711010  gcc/testsuite/jit.dg/test-arrays.c
  56ce2077b85dacdbb546575eb90002b6  gcc/testsuite/jit.dg/test-asm.c
! f73f1fd00c548879b2e9693e182a41a6  gcc/testsuite/jit.dg/test-asm.cc
  cc1b167a1d5eaf426dbf6721a80c93e7  gcc/testsuite/jit.dg/test-autovectorize.c
  3f5b0ae02ffd9c801777cd40eeb400a9  gcc/testsuite/jit.dg/test-benchmark.c
  3e0111bf71ea4a09db4266d20c9c2ff0  gcc/testsuite/jit.dg/test-bitcast.c
*************** cb8f0e0a8bd20f09f54d4fc96e7a13f9  gcc/te
*** 90329,90335 ****
  ee645b37b25f2a3eddfb21e8be20336d  gcc/testsuite/jit.dg/test-empty.c
  7e92c7a2ed10887fff56fcf4d7ef3c64  gcc/testsuite/jit.dg/test-error-adding-to-terminated-block.c
  6eef66aeae471d259e994ed25ea486f5  gcc/testsuite/jit.dg/test-error-array-as-pointer.c
! 479048b0021825ff0b37ee9d3990c216  gcc/testsuite/jit.dg/test-error-array-bounds.c
  d3cb545cb98c0633bfc443fcdebf1e86  gcc/testsuite/jit.dg/test-error-bad-assignment.c
  bc40f3b4e9fbd3cf736225c60f97b330  gcc/testsuite/jit.dg/test-error-bad-bitcast.c
  e06264f7598f9aad46edf170a0db2f4c  gcc/testsuite/jit.dg/test-error-bad-bitcast2.c
--- 97520,97526 ----
  ee645b37b25f2a3eddfb21e8be20336d  gcc/testsuite/jit.dg/test-empty.c
  7e92c7a2ed10887fff56fcf4d7ef3c64  gcc/testsuite/jit.dg/test-error-adding-to-terminated-block.c
  6eef66aeae471d259e994ed25ea486f5  gcc/testsuite/jit.dg/test-error-array-as-pointer.c
! b501163b23478ab847f9a8fc171c6713  gcc/testsuite/jit.dg/test-error-array-bounds.c
  d3cb545cb98c0633bfc443fcdebf1e86  gcc/testsuite/jit.dg/test-error-bad-assignment.c
  bc40f3b4e9fbd3cf736225c60f97b330  gcc/testsuite/jit.dg/test-error-bad-bitcast.c
  e06264f7598f9aad46edf170a0db2f4c  gcc/testsuite/jit.dg/test-error-bad-bitcast2.c
*************** d54d9ac81ba5a3c223a7638ade50667e  gcc/te
*** 90408,90414 ****
  136909b4e2c9dd4206e002a48198e9da  gcc/testsuite/jit.dg/test-error-unrecognized-dump.c
  f8978b292e5e62e13f742d863657bb61  gcc/testsuite/jit.dg/test-error-unterminated-block.c
  5b31d534f052cfc632c1a4b686c1e42b  gcc/testsuite/jit.dg/test-error-value-not-a-numeric-type.c
! 9aee961ee8fc5348be82be09d2c96007  gcc/testsuite/jit.dg/test-expressions.c
  44cf4655232716bc3eb5c9980e013f50  gcc/testsuite/jit.dg/test-extra-options.c
  508ef06cfdebd3bf557407d14af15f2b  gcc/testsuite/jit.dg/test-factorial-must-tail-call.c
  b02011c7edbcfca8dfb3bd46815567fc  gcc/testsuite/jit.dg/test-factorial.c
--- 97599,97605 ----
  136909b4e2c9dd4206e002a48198e9da  gcc/testsuite/jit.dg/test-error-unrecognized-dump.c
  f8978b292e5e62e13f742d863657bb61  gcc/testsuite/jit.dg/test-error-unterminated-block.c
  5b31d534f052cfc632c1a4b686c1e42b  gcc/testsuite/jit.dg/test-error-value-not-a-numeric-type.c
! 5be5a0e5a03af3100553d0b07aed16b4  gcc/testsuite/jit.dg/test-expressions.c
  44cf4655232716bc3eb5c9980e013f50  gcc/testsuite/jit.dg/test-extra-options.c
  508ef06cfdebd3bf557407d14af15f2b  gcc/testsuite/jit.dg/test-factorial-must-tail-call.c
  b02011c7edbcfca8dfb3bd46815567fc  gcc/testsuite/jit.dg/test-factorial.c
*************** c36d06171cf29aa67856b3136828352f  gcc/te
*** 90427,90432 ****
--- 97618,97624 ----
  e476b3e50d2451ccb2e83dcb94690dc6  gcc/testsuite/jit.dg/test-nested-loops.c
  3dd91ef7035565601d335ad5b9e073e4  gcc/testsuite/jit.dg/test-operator-overloading.cc
  e47372605dd57d3184d1a399a4dda2f3  gcc/testsuite/jit.dg/test-pr103562.c
+ 1c0ba4aa6b12ef4ca7882a1f7653e39a  gcc/testsuite/jit.dg/test-pr105812-bool-operations.c
  f23c8426b4779d93458122aa6f97231a  gcc/testsuite/jit.dg/test-pr66700-observing-write-through-ptr.c
  1e13f203827617338962b7f4bc0aef4d  gcc/testsuite/jit.dg/test-pr66779.c
  e1de260f2ea5cb4cf607c76292f03edc  gcc/testsuite/jit.dg/test-pr95306-builtin-types.c
*************** bca3f58a8fb9ee1db76c5883c6d533f3  gcc/te
*** 90445,90527 ****
  1dbd5675d95a6e7aa3ff419392d6dedd  gcc/testsuite/jit.dg/test-threads.c
  23fe4e6ebca22d47798698e1a9eed222  gcc/testsuite/jit.dg/test-tls.c
  af7112223f23a060486e371aaa393e98  gcc/testsuite/jit.dg/test-trap.c
! f49f8d2400c6a598353628e3f13b5b57  gcc/testsuite/jit.dg/test-types.c
  e309c53b14c724939a1564046c6a5df2  gcc/testsuite/jit.dg/test-using-global.c
  87b9d64f8250158521cb3cae842ff2cb  gcc/testsuite/jit.dg/test-validly-unreachable-block.c
  66bd443798448a3863f71885dbc59b0f  gcc/testsuite/jit.dg/test-vector-rvalues.cc
! 74559e5a55bad41637a4a91da18939fa  gcc/testsuite/jit.dg/test-vector-types.cc
  5542ebc8aa1b198ad40aeeee64259afb  gcc/testsuite/jit.dg/test-version.c
  96ac85af1dde837e4f4e2444d083cf22  gcc/testsuite/jit.dg/test-volatile.c
  6477c66fcebff4d502d26e2d247251ce  gcc/testsuite/jit.dg/verify-dynamic-library.c
! 0132cbdeead47d5ef02737caef9ea645  gcc/testsuite/lib/asan-dg.exp
! 7fbf7610c45d082d97b418d8a3c76e3e  gcc/testsuite/lib/atomic-dg.exp
! aaa60f5726d81a7eb785434e5a558e42  gcc/testsuite/lib/c-compat.exp
! 04f0113bfabbd07236d77a5c888a8c20  gcc/testsuite/lib/c-torture.exp
! d88f94169d1c83af95a7017aca73575b  gcc/testsuite/lib/clearcap.exp
! 2b9ddd27c59faf126583313856559528  gcc/testsuite/lib/compat.exp
! af8fe024eea4d2f1af8d146cf4701da2  gcc/testsuite/lib/copy-file.exp
! dce8ce4c27a02fa051707556a3a40cc2  gcc/testsuite/lib/dejapatches.exp
! f651546d4a46b62de5bcb950ffc3b391  gcc/testsuite/lib/dg-pch.exp
! 91240f6c8018233a224155c7a800bf1c  gcc/testsuite/lib/file-format.exp
! fad60d12c5131edf3a1d4c9c29661e58  gcc/testsuite/lib/fortran-modules.exp
! 5c8e6d9570869b491ba75c4bd0582bb5  gcc/testsuite/lib/fortran-torture.exp
! 44743565a5935ce47ebc4ff6c8d7718d  gcc/testsuite/lib/g++-dg.exp
! 7e78296a0e021c2815bc6610975d8e02  gcc/testsuite/lib/g++.exp
! 557e9c16a176b21b63c4467dc37601e3  gcc/testsuite/lib/gcc-defs.exp
! 2229f984a2fab374462c04d85e6dc5a6  gcc/testsuite/lib/gcc-dg.exp
! dbd745c65edf0459b6cad0d6c23e8e5c  gcc/testsuite/lib/gcc-gdb-test.exp
! 725242e8228e8126e624ad7e55885e1c  gcc/testsuite/lib/gcc-simulate-thread.exp
! 8e4b46f9667826dc23556dd13b33f05e  gcc/testsuite/lib/gcc.exp
! 6b85159acacab547b98308c4a872d3d3  gcc/testsuite/lib/gcov.exp
! 6bf97b2308d37a5add32985e5ab42f89  gcc/testsuite/lib/gdc-dg.exp
! 63075caeb20a05d1e467be2de6fc6cca  gcc/testsuite/lib/gdc-utils.exp
! 2d37b901961cda238520589f4befcd03  gcc/testsuite/lib/gdc.exp
! dd0b76a19373bb7f42910a1b7b22d2f9  gcc/testsuite/lib/gfortran-dg.exp
! 5e51cc72ea2e66e0fcb2b1cdcc64a84d  gcc/testsuite/lib/gfortran.exp
! b71a0638915a3f1020f3df9ff4dfa2a2  gcc/testsuite/lib/gnat-dg.exp
! fa0a8e7d667755dbd0a8ae05eec79841  gcc/testsuite/lib/gnat.exp
! 899cd13fe03f3fda96f39185832437c8  gcc/testsuite/lib/go-dg.exp
! 9e2856ff5c2de93b3037677196cc4b57  gcc/testsuite/lib/go-torture.exp
! 16fa58498e48a9de1a8b71d312b58ff2  gcc/testsuite/lib/go.exp
! 837530e56cf87fe813247bb072e77fdf  gcc/testsuite/lib/hwasan-dg.exp
! 07ff7e93d0a10c91b0f449fed7521aaf  gcc/testsuite/lib/lto.exp
! 5b37cafa792be03b2bdde91aabd15c7f  gcc/testsuite/lib/mike-g++.exp
! 2afae6628be89fdfc666b60fb624f15e  gcc/testsuite/lib/mike-gcc.exp
! 4343a2fd17fb9cc68537e79284d9f45c  gcc/testsuite/lib/multiline.exp
! f4e191ca453c5c638633d8c3dbabdbf3  gcc/testsuite/lib/obj-c++-dg.exp
! 5b378c4c32163f467dd70d1ea7f68a7a  gcc/testsuite/lib/obj-c++.exp
! 8991652d150942fa8973525f2a9ce45c  gcc/testsuite/lib/objc-dg.exp
! 33c7ae4ac944a895f89b1fd5551b1198  gcc/testsuite/lib/objc-torture.exp
! eabb3154a39a15b5df8e2547db2695f9  gcc/testsuite/lib/objc.exp
! cf33ce15c5dad2c527e5c879f973eead  gcc/testsuite/lib/options.exp
! eff75a6463d6f77c3720faccbc3b1e3e  gcc/testsuite/lib/plugin-support.exp
! 172b0043f23f6c3c5edc038b3fb6fb81  gcc/testsuite/lib/profopt.exp
! ba3d4948b3648a071c41abee4b96e93a  gcc/testsuite/lib/prune.exp
! db50c0bf125218d6f8efa531c064e569  gcc/testsuite/lib/scanasm.exp
! 412d406c6ea9adcd5ca63a8df15b26d4  gcc/testsuite/lib/scandump.exp
! d8069472e4cfbf55ba5d079447033370  gcc/testsuite/lib/scanipa.exp
! 20df45b8fad494ef7ec4e3863273f03b  gcc/testsuite/lib/scanlang.exp
! 258444f2aab43ad1d96379d11e375254  gcc/testsuite/lib/scanltranstree.exp
! a86c6da6b6cdae70445d820464d4dc35  gcc/testsuite/lib/scanoffload.exp
! d1bc4044e64d709ed2f0711d0510846c  gcc/testsuite/lib/scanoffloadrtl.exp
! 2bf78c040ec80bf145f70e1c4a4d69b9  gcc/testsuite/lib/scanoffloadtree.exp
! 59d5469623bfa92a2e80ada65a6d80a0  gcc/testsuite/lib/scanrtl.exp
! a3c51194521aeaec30746bcd09540ded  gcc/testsuite/lib/scantree.exp
! fe565ed92d0666a7a8344d516a0fc123  gcc/testsuite/lib/scanwpaipa.exp
! cbf733ca1a40fb4aabb15514b6bb6bd9  gcc/testsuite/lib/target-libpath.exp
! aa367b5d414f9485192ae52d35e25660  gcc/testsuite/lib/target-supports-dg.exp
! 27c317bbcaafefdb3fae731931ea1b08  gcc/testsuite/lib/target-supports.exp
! 3b5645e1702774baa233a5e5076a70ad  gcc/testsuite/lib/target-utils.exp
! 4632a9469eaaac6463c128b7895d3813  gcc/testsuite/lib/timeout-dg.exp
! 01d2447cc2594c0de781959c09d306fa  gcc/testsuite/lib/timeout.exp
! 61e72d1d598c78bdc3c7836890efb65d  gcc/testsuite/lib/torture-options.exp
! 4cf5e5aee2e15da695b54e420386c632  gcc/testsuite/lib/tsan-dg.exp
! 8b8f6046ef5bf26213d983a65bdde026  gcc/testsuite/lib/ubsan-dg.exp
! fcd62b1ecaf606122b1f42ad6075dfbd  gcc/testsuite/lib/wrapper.exp
  83447103f758c2c8ec2044c84069e212  gcc/testsuite/obj-c++.dg/SEL-typedef.mm
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/obj-c++.dg/Wimplicit-fallthrough-1.mm
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/obj-c++.dg/at-class-1.mm
! bc1037e1069c84876024d91039383c7d  gcc/testsuite/obj-c++.dg/attributes/attributes.exp
  3ae67bbd6c30272de285ecf52bbe29c4  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm
  bb7c92f88fdb2a6c371fe4b187f0cebd  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm
  ca1ca55dc3bc194afaeccb9c90623e9e  gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm
--- 97637,97728 ----
  1dbd5675d95a6e7aa3ff419392d6dedd  gcc/testsuite/jit.dg/test-threads.c
  23fe4e6ebca22d47798698e1a9eed222  gcc/testsuite/jit.dg/test-tls.c
  af7112223f23a060486e371aaa393e98  gcc/testsuite/jit.dg/test-trap.c
! b8adcd9731f0c23906afe161ca33aa6a  gcc/testsuite/jit.dg/test-types.c
  e309c53b14c724939a1564046c6a5df2  gcc/testsuite/jit.dg/test-using-global.c
  87b9d64f8250158521cb3cae842ff2cb  gcc/testsuite/jit.dg/test-validly-unreachable-block.c
  66bd443798448a3863f71885dbc59b0f  gcc/testsuite/jit.dg/test-vector-rvalues.cc
! 1fb99c80f8738ec43e1d8be3c7535acc  gcc/testsuite/jit.dg/test-vector-types.cc
  5542ebc8aa1b198ad40aeeee64259afb  gcc/testsuite/jit.dg/test-version.c
  96ac85af1dde837e4f4e2444d083cf22  gcc/testsuite/jit.dg/test-volatile.c
  6477c66fcebff4d502d26e2d247251ce  gcc/testsuite/jit.dg/verify-dynamic-library.c
! ca8bd0f71b753e7675f0633e92a8036b  gcc/testsuite/lib/asan-dg.exp
! deccefffaef1a9cf06cdb00b72438d60  gcc/testsuite/lib/atomic-dg.exp
! 5306158b9885dee2c6998a04343af247  gcc/testsuite/lib/c-compat.exp
! b89fec0aadc8e9a79fe440292f35b2e0  gcc/testsuite/lib/c-torture.exp
! bb19bde5ac42e2e20ed87388ef49184d  gcc/testsuite/lib/clearcap.exp
! 3d83cf985234f7150a99759e2c455d18  gcc/testsuite/lib/compat.exp
! 91c5b2d8a3b8ef766ae59c5a1ee0ac38  gcc/testsuite/lib/copy-file.exp
! 809b05fa6e3c328124ec9d57ac14f44d  gcc/testsuite/lib/dejapatches.exp
! 50e52f41265631ade54cb83648b48c3d  gcc/testsuite/lib/dg-pch.exp
! 6b1c4036977898cd29dcd77c4bd9fb6e  gcc/testsuite/lib/file-format.exp
! 579636740d2020dcc14e8c62acb4a484  gcc/testsuite/lib/fortran-modules.exp
! d77b22cf7a3bfaa8380b303905b4d6cd  gcc/testsuite/lib/fortran-torture.exp
! 793ec464f01bfb000837d4b305c50d7a  gcc/testsuite/lib/g++-dg.exp
! a71f2f090f2353463d8e208cbb47aafe  gcc/testsuite/lib/g++.exp
! 07f442c1d21ce775aa2ab0ba160f8fe9  gcc/testsuite/lib/gcc-defs.exp
! f51346dde5384b1bad3144a2aff38c66  gcc/testsuite/lib/gcc-dg.exp
! 84eb0ed1ece5d56c8af9172936500f54  gcc/testsuite/lib/gcc-gdb-test.exp
! 558a151d1be91062ba1f74f61d0beaee  gcc/testsuite/lib/gcc-simulate-thread.exp
! 6793af238b3dea7a7d23d3e64a656d9e  gcc/testsuite/lib/gcc.exp
! 64f59a7e7e158dc4de2124745f43385a  gcc/testsuite/lib/gcov.exp
! 8aa4c20291a20f318e485f5665086011  gcc/testsuite/lib/gdc-dg.exp
! 15ea874dff4a529a674354b349abdce4  gcc/testsuite/lib/gdc-utils.exp
! b6a8ae0202a26fe01cc3a48e7a0e31ab  gcc/testsuite/lib/gdc.exp
! ffc4e64bd1aeae29d31c1cd67c767f35  gcc/testsuite/lib/gfortran-dg.exp
! aa1a9744fe32138a966f03d5dfc22541  gcc/testsuite/lib/gfortran.exp
! 66192f2d835f72f9e0f50ce956d8f995  gcc/testsuite/lib/gm2-dg.exp
! 511af82e7784b79930a99ed264ee4c75  gcc/testsuite/lib/gm2-simple.exp
! 0fbcd8f9a1d131320112a60524ba11db  gcc/testsuite/lib/gm2-torture.exp
! 76cced7f2241cdf8adc6015a8832ff50  gcc/testsuite/lib/gm2.exp
! a77eb2ae0a7376bf33d355a4714553ea  gcc/testsuite/lib/gnat-dg.exp
! b4ae06eef6b4887b9ed689af978d27c3  gcc/testsuite/lib/gnat.exp
! 53bb5e228778a22ee832e582b423c29f  gcc/testsuite/lib/go-dg.exp
! dfe90e3e8ee193e050914ed19adcef15  gcc/testsuite/lib/go-torture.exp
! 98b18bc4d02a0dcf760cf74fff32b5da  gcc/testsuite/lib/go.exp
! 6f968754557e9731dcf79c719ac64887  gcc/testsuite/lib/hwasan-dg.exp
! 9acf7bc29364e8ee8fc4c28b27e8f6fc  gcc/testsuite/lib/lto.exp
! 3a5404afeb2a25b9128a466e80230c0e  gcc/testsuite/lib/mike-g++.exp
! 090d0fd3aa8a38a3cb03da40bb61c7fb  gcc/testsuite/lib/mike-gcc.exp
! 133f3398df43cb63a1377e277f365f1e  gcc/testsuite/lib/multiline.exp
! 65197ec2d78a9b0c43a393366a2f636f  gcc/testsuite/lib/obj-c++-dg.exp
! d5cee719c34d0a305dd268806e341ac0  gcc/testsuite/lib/obj-c++.exp
! be7706f747b7ddf10ed14ba6c80577d7  gcc/testsuite/lib/objc-dg.exp
! bf55d1034ce482b9991965b5b97def58  gcc/testsuite/lib/objc-torture.exp
! b173faab911079de7636712fa6aef3af  gcc/testsuite/lib/objc.exp
! 3a57ddc507e3ba9343dd148ca1f1dfec  gcc/testsuite/lib/options.exp
! 76c5fb60c85e67a30c2b9ce4b4210975  gcc/testsuite/lib/plugin-support.exp
! 709f8f1ac98b47b863b517bd04911cf1  gcc/testsuite/lib/profopt.exp
! a812279ddc01af416ccb4bad797c2737  gcc/testsuite/lib/prune.exp
! e740cf7195b15f39ede973547a395418  gcc/testsuite/lib/rust-dg.exp
! c3ddc19d509b9bead5b3f590fd9a1bfc  gcc/testsuite/lib/rust.exp
! 93d53913bf75d7b248a0f7e1b8898db1  gcc/testsuite/lib/scanasm.exp
! 8a6bb2d3745b087b445a3bef2e5926b0  gcc/testsuite/lib/scandump.exp
! 1746eb27a219e300da0a4b3b5238efc3  gcc/testsuite/lib/scanipa.exp
! d128c8d9bf00ffb595cc8db43a68f14e  gcc/testsuite/lib/scanlang.exp
! fd51dc0e80b9704081b17b14e5a54062  gcc/testsuite/lib/scanltranstree.exp
! cebdba6de36ced95b64c0cd372ae8927  gcc/testsuite/lib/scanoffload.exp
! 8b8f0cc3c929ee7e984c4c07e775141d  gcc/testsuite/lib/scanoffloadipa.exp
! 30338a6749daf5e2d28d283eb67098f1  gcc/testsuite/lib/scanoffloadrtl.exp
! 64aaaaf16ff0956b5ed6414d1415f08e  gcc/testsuite/lib/scanoffloadtree.exp
! e020b68426183241592d8d9e6fc099b4  gcc/testsuite/lib/scanrtl.exp
! 5b189cc74d967fb3ea45e0e7fce27710  gcc/testsuite/lib/scansarif.exp
! 8977266367472e4c6b20ef38f885cc76  gcc/testsuite/lib/scantree.exp
! b295a72c05b831c76c031b8e2eb4d3b2  gcc/testsuite/lib/scanwpaipa.exp
! 193dff75973e9817b77d076cd499f3fa  gcc/testsuite/lib/target-libpath.exp
! 3d3f2e71aead61b3117d14eb7bbd4a01  gcc/testsuite/lib/target-supports-dg.exp
! 92f589e16be0037a1d01f721526809ee  gcc/testsuite/lib/target-supports.exp
! 7e0169745cc1fb5c7a32430931fd5493  gcc/testsuite/lib/target-utils.exp
! 60311806ad83bff4ff32a9473e1b70f2  gcc/testsuite/lib/timeout-dg.exp
! b097a1276df72ba56dc546dc3859883c  gcc/testsuite/lib/timeout.exp
! d932e140fd4dcbf5c631aec29312bc3c  gcc/testsuite/lib/torture-options.exp
! b4fab3876b781f97ae7032a683dc1563  gcc/testsuite/lib/tsan-dg.exp
! eb8e9b99553469be3c0f852c2e6f7c2c  gcc/testsuite/lib/ubsan-dg.exp
! abf5053d8fe36a4d6aaee3b64de1525d  gcc/testsuite/lib/verify-sarif-file.py
! 42dd95b14c9825a5937b90cc556cc668  gcc/testsuite/lib/wrapper.exp
  83447103f758c2c8ec2044c84069e212  gcc/testsuite/obj-c++.dg/SEL-typedef.mm
  55160ccf08a9b1444b32deb900dac569  gcc/testsuite/obj-c++.dg/Wimplicit-fallthrough-1.mm
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/obj-c++.dg/at-class-1.mm
! 1631ca39c6a44be2778bf9a1bbced11b  gcc/testsuite/obj-c++.dg/attributes/attributes.exp
  3ae67bbd6c30272de285ecf52bbe29c4  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-1.mm
  bb7c92f88fdb2a6c371fe4b187f0cebd  gcc/testsuite/obj-c++.dg/attributes/categ-attribute-2.mm
  ca1ca55dc3bc194afaeccb9c90623e9e  gcc/testsuite/obj-c++.dg/attributes/class-attribute-1.mm
*************** e91047651063a1662428088ff7456f48  gcc/te
*** 90587,90593 ****
  e40d4b7e1e14ee92eea55e290a15be06  gcc/testsuite/obj-c++.dg/demangle-1.mm
  2b7cf81f9fd7c2f9558b6570f0835806  gcc/testsuite/obj-c++.dg/demangle-2.mm
  1894a992a842473ea3446c689c55dd1d  gcc/testsuite/obj-c++.dg/demangle-3.mm
! 85248368c7fd93ae1a4b9a4e9c2b3f0e  gcc/testsuite/obj-c++.dg/dg.exp
  df8e1651432977636bf9ca64823f6609  gcc/testsuite/obj-c++.dg/duplicate-class-1.mm
  74965fa22cbb6849912eabcb1f43b6e8  gcc/testsuite/obj-c++.dg/dwarf-2.mm
  ff09985655f304be699aaf3b8ac7d0c6  gcc/testsuite/obj-c++.dg/empty-private-1.mm
--- 97788,97794 ----
  e40d4b7e1e14ee92eea55e290a15be06  gcc/testsuite/obj-c++.dg/demangle-1.mm
  2b7cf81f9fd7c2f9558b6570f0835806  gcc/testsuite/obj-c++.dg/demangle-2.mm
  1894a992a842473ea3446c689c55dd1d  gcc/testsuite/obj-c++.dg/demangle-3.mm
! ce3edd1d8ca18f09d62660a883948ed2  gcc/testsuite/obj-c++.dg/dg.exp
  df8e1651432977636bf9ca64823f6609  gcc/testsuite/obj-c++.dg/duplicate-class-1.mm
  74965fa22cbb6849912eabcb1f43b6e8  gcc/testsuite/obj-c++.dg/dwarf-2.mm
  ff09985655f304be699aaf3b8ac7d0c6  gcc/testsuite/obj-c++.dg/empty-private-1.mm
*************** e2f09d3bd8c76cb2cc3877eabe1635a2  gcc/te
*** 90649,90655 ****
  e0ee2e0ef377f377a4b6c0f76eb28be4  gcc/testsuite/obj-c++.dg/local-decl-1.mm
  237edc221dc0cb73012b6f771c679099  gcc/testsuite/obj-c++.dg/lookup-1.mm
  a18e5d5b1c772fda466670d9a820b3af  gcc/testsuite/obj-c++.dg/lookup-2.mm
! 1f53b29efc467ec739bc1af3074d3ff6  gcc/testsuite/obj-c++.dg/lto/lto.exp
  ed2d21312e666f3bbed404bcac3dc94a  gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
  50dff087071e306c9a5b45faaf24d2e9  gcc/testsuite/obj-c++.dg/method-1.mm
  19f8317903ba8bee4bf9fa945f98478d  gcc/testsuite/obj-c++.dg/method-10.mm
--- 97850,97856 ----
  e0ee2e0ef377f377a4b6c0f76eb28be4  gcc/testsuite/obj-c++.dg/local-decl-1.mm
  237edc221dc0cb73012b6f771c679099  gcc/testsuite/obj-c++.dg/lookup-1.mm
  a18e5d5b1c772fda466670d9a820b3af  gcc/testsuite/obj-c++.dg/lookup-2.mm
! 9112dff76a736d160cb63da4391f1ce2  gcc/testsuite/obj-c++.dg/lto/lto.exp
  ed2d21312e666f3bbed404bcac3dc94a  gcc/testsuite/obj-c++.dg/lto/trivial-1_0.mm
  50dff087071e306c9a5b45faaf24d2e9  gcc/testsuite/obj-c++.dg/method-1.mm
  19f8317903ba8bee4bf9fa945f98478d  gcc/testsuite/obj-c++.dg/method-10.mm
*************** bb8ccf448c201adbf05356ac551899fb  gcc/te
*** 90690,90696 ****
  1c39d0d9e54d7c124e4e36d7ac5c8033  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
  e84cd2640f9e4f66e445c60cecc3bfd2  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
! b71cba2eacee645b8195fef34871f056  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
  a1ff757de40d44fb3868d406ed01c4eb  gcc/testsuite/obj-c++.dg/pr101666-0.mm
  339a76362d0703671d6ddc07066f2d95  gcc/testsuite/obj-c++.dg/pr101666-1.mm
  7b3270d7548d00c42ba59f5769932087  gcc/testsuite/obj-c++.dg/pr101666.inc
--- 97891,97897 ----
  1c39d0d9e54d7c124e4e36d7ac5c8033  gcc/testsuite/obj-c++.dg/objc-gc-3.mm
  bd3b42583db47ebcc7fac037f85f00ed  gcc/testsuite/obj-c++.dg/overload-1.mm
  e84cd2640f9e4f66e445c60cecc3bfd2  gcc/testsuite/obj-c++.dg/plugin/diagnostic-test-expressions-1.mm
! 6b8c639decae13d737ff683a8dc69e6d  gcc/testsuite/obj-c++.dg/plugin/plugin.exp
  a1ff757de40d44fb3868d406ed01c4eb  gcc/testsuite/obj-c++.dg/pr101666-0.mm
  339a76362d0703671d6ddc07066f2d95  gcc/testsuite/obj-c++.dg/pr101666-1.mm
  7b3270d7548d00c42ba59f5769932087  gcc/testsuite/obj-c++.dg/pr101666.inc
*************** a8c4b8171533defe44e443926dc705ce  gcc/te
*** 90782,90788 ****
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/obj-c++.dg/property/property-neg-5.mm
  2aabf1a0c895ae7fab2963b19790d1d1  gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
  b30232e7701d5769f0f353657f947392  gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
! 5232c5c4ee73381d1cfd23628dd03a69  gcc/testsuite/obj-c++.dg/property/property.exp
  810709bcc80423d41b2bda976147cc80  gcc/testsuite/obj-c++.dg/property/synthesize-1.mm
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/obj-c++.dg/property/synthesize-10.mm
  6603b6e3c23698004b66a8469e6c3ff6  gcc/testsuite/obj-c++.dg/property/synthesize-11.mm
--- 97983,97989 ----
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/obj-c++.dg/property/property-neg-5.mm
  2aabf1a0c895ae7fab2963b19790d1d1  gcc/testsuite/obj-c++.dg/property/property-neg-6.mm
  b30232e7701d5769f0f353657f947392  gcc/testsuite/obj-c++.dg/property/property-neg-7.mm
! 359918304d203bc902b008425e2335da  gcc/testsuite/obj-c++.dg/property/property.exp
  810709bcc80423d41b2bda976147cc80  gcc/testsuite/obj-c++.dg/property/synthesize-1.mm
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/obj-c++.dg/property/synthesize-10.mm
  6603b6e3c23698004b66a8469e6c3ff6  gcc/testsuite/obj-c++.dg/property/synthesize-11.mm
*************** cf6bf1a9bb03b4708b9ee74ec1da6dce  gcc/te
*** 90799,90805 ****
  da310ab9c53fd3ea3c3475ec00f0c573  gcc/testsuite/obj-c++.dg/proto-lossage-1.mm
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
  e9acacfeddf9f5b3fcc7bd49ae2063e8  gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
! 17d3166fd7cd81bb8f84245efb05861a  gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
  8dad0377c3588f9c61fede50a9d3e88b  gcc/testsuite/obj-c++.dg/proto-lossage-5.mm
  fd29bc4e26ebfbde2219d16bcd57ff44  gcc/testsuite/obj-c++.dg/proto-lossage-6.mm
  eae4cc9bd17a2b79453bdeeec666557b  gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
--- 98000,98006 ----
  da310ab9c53fd3ea3c3475ec00f0c573  gcc/testsuite/obj-c++.dg/proto-lossage-1.mm
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/obj-c++.dg/proto-lossage-2.mm
  e9acacfeddf9f5b3fcc7bd49ae2063e8  gcc/testsuite/obj-c++.dg/proto-lossage-3.mm
! f7592b5512a5b40082cc68fc9c6de510  gcc/testsuite/obj-c++.dg/proto-lossage-4.mm
  8dad0377c3588f9c61fede50a9d3e88b  gcc/testsuite/obj-c++.dg/proto-lossage-5.mm
  fd29bc4e26ebfbde2219d16bcd57ff44  gcc/testsuite/obj-c++.dg/proto-lossage-6.mm
  eae4cc9bd17a2b79453bdeeec666557b  gcc/testsuite/obj-c++.dg/proto-lossage-7.mm
*************** c2f326ebd57afc69cfee9d8f6b441323  gcc/te
*** 90831,90837 ****
  a9aabe53382bdf1de0612f8bcf7ef0eb  gcc/testsuite/obj-c++.dg/strings/const-str-6.mm
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/obj-c++.dg/strings/strings-1.mm
  acda44b06216ac119f6bf3a2e4b8cb98  gcc/testsuite/obj-c++.dg/strings/strings-2.mm
! e9eda3228ba2a29e6af8a6adab32ed02  gcc/testsuite/obj-c++.dg/strings/strings.exp
  bb80c284ddffba9dd33509364a06732a  gcc/testsuite/obj-c++.dg/stubify-1.mm
  76876177abcae99b177994a5bd643e22  gcc/testsuite/obj-c++.dg/stubify-2.mm
  0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
--- 98032,98038 ----
  a9aabe53382bdf1de0612f8bcf7ef0eb  gcc/testsuite/obj-c++.dg/strings/const-str-6.mm
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/obj-c++.dg/strings/strings-1.mm
  acda44b06216ac119f6bf3a2e4b8cb98  gcc/testsuite/obj-c++.dg/strings/strings-2.mm
! ae7685f116096035a38ef3c92e29f93c  gcc/testsuite/obj-c++.dg/strings/strings.exp
  bb80c284ddffba9dd33509364a06732a  gcc/testsuite/obj-c++.dg/stubify-1.mm
  76876177abcae99b177994a5bd643e22  gcc/testsuite/obj-c++.dg/stubify-2.mm
  0827dd859e38ad893f65d76bf7a5b5e1  gcc/testsuite/obj-c++.dg/super-class-1.mm
*************** d2c0463e1e05d168d9d004c74cec0610  gcc/te
*** 90883,90889 ****
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
  a826eb6d88698556688b1008a86574a6  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
! b90b805a701c0de9d80ea43ca321a7ff  gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm
  f1f7032c657f1d2102a3760375786139  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm
  913caebef1028795e3b0bac01c9a87c0  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm
--- 98084,98090 ----
  69c47926ef31db0bb79c5cd3cea4fa0b  gcc/testsuite/obj-c++.dg/torture/strings/const-str-8.mm
  a826eb6d88698556688b1008a86574a6  gcc/testsuite/obj-c++.dg/torture/strings/const-str-9.mm
  38bba22e495d1876db60c1ae29146fbe  gcc/testsuite/obj-c++.dg/torture/strings/string1.mm
! 4e922285831e95ee33616015f5da9be9  gcc/testsuite/obj-c++.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/obj-c++.dg/torture/tls/diag-1.mm
  f1f7032c657f1d2102a3760375786139  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-1.mm
  913caebef1028795e3b0bac01c9a87c0  gcc/testsuite/obj-c++.dg/torture/tls/thr-init-2.mm
*************** dc8c5ec7b9abe64c54eabc2d60a81066  gcc/te
*** 90949,90955 ****
  a08e081524ab6799e394768da76968d3  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
  ce8c053d2554352e55b35ae330cd5126  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
  79f58fc20c1f2dfd98bc097643134fed  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
! 5b2070646be3389422576d36d0cc4dd3  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
  ac76ddcf9ed6ab3c92c31559244da096  gcc/testsuite/objc-obj-c++-shared/next-abi.h
  f3501304cb4e501ca831a9c4069efbe3  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.h
  885a572c6cebc62b2c85d81b1dfdb205  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.m
--- 98150,98156 ----
  a08e081524ab6799e394768da76968d3  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSObject+GNUstepBase.h
  ce8c053d2554352e55b35ae330cd5126  gcc/testsuite/objc-obj-c++-shared/GNUStep/GNUstepBase/NSString+GNUstepBase.h
  79f58fc20c1f2dfd98bc097643134fed  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.h
! 40e18d3e20882cd94f1cc42c804f27d7  gcc/testsuite/objc-obj-c++-shared/TestsuiteObject.m
  ac76ddcf9ed6ab3c92c31559244da096  gcc/testsuite/objc-obj-c++-shared/next-abi.h
  f3501304cb4e501ca831a9c4069efbe3  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.h
  885a572c6cebc62b2c85d81b1dfdb205  gcc/testsuite/objc-obj-c++-shared/nsconstantstring-class-impl.m
*************** cb269bc755b2a67364f3313e8faf3f29  gcc/te
*** 90964,90970 ****
  3b8fd8c2ee22e0099d80e4fa89e2befc  gcc/testsuite/objc.dg/alias.m
  d1b6c3f1ea4ae2a41059c91bb5a2b852  gcc/testsuite/objc.dg/anon-1.m
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/objc.dg/at-class-1.m
! d82766f0b37f53691dd2a91414677247  gcc/testsuite/objc.dg/attributes/attributes.exp
  fd95a72920339d2253044c54f9ac9ea5  gcc/testsuite/objc.dg/attributes/categ-attribute-1.m
  56f3aac5dbec91275669f63a33cfbf9b  gcc/testsuite/objc.dg/attributes/categ-attribute-2.m
  aec01e9422e920606a28dcc46f3f42c4  gcc/testsuite/objc.dg/attributes/class-attribute-1.m
--- 98165,98171 ----
  3b8fd8c2ee22e0099d80e4fa89e2befc  gcc/testsuite/objc.dg/alias.m
  d1b6c3f1ea4ae2a41059c91bb5a2b852  gcc/testsuite/objc.dg/anon-1.m
  84caaa988ddff2a3ef9a3c9c9bfe6fbf  gcc/testsuite/objc.dg/at-class-1.m
! bd8d1d50857ed5171a5b8124d7d6118e  gcc/testsuite/objc.dg/attributes/attributes.exp
  fd95a72920339d2253044c54f9ac9ea5  gcc/testsuite/objc.dg/attributes/categ-attribute-1.m
  56f3aac5dbec91275669f63a33cfbf9b  gcc/testsuite/objc.dg/attributes/categ-attribute-2.m
  aec01e9422e920606a28dcc46f3f42c4  gcc/testsuite/objc.dg/attributes/class-attribute-1.m
*************** fcbd6d34fab967afc68044cbc6bebd90  gcc/te
*** 91031,91037 ****
  38a179920a287512b87250b596d328be  gcc/testsuite/objc.dg/demangle-1.m
  c0ab0e620febd282b5e9d035d15b3f89  gcc/testsuite/objc.dg/desig-init-1.m
  35496e95171f548a40cf930fea45d49f  gcc/testsuite/objc.dg/desig-init-2.m
! f417c3f2c5c463b979924a0055486cf5  gcc/testsuite/objc.dg/dg.exp
  142353bbb63675a2f47a3552a35e052f  gcc/testsuite/objc.dg/duplicate-class-1.m
  e93baeeda9bc4b65e5eea748a076d816  gcc/testsuite/objc.dg/dwarf-1.m
  0a836d2fda427c66107feaabe420bcf3  gcc/testsuite/objc.dg/dwarf-2.m
--- 98232,98238 ----
  38a179920a287512b87250b596d328be  gcc/testsuite/objc.dg/demangle-1.m
  c0ab0e620febd282b5e9d035d15b3f89  gcc/testsuite/objc.dg/desig-init-1.m
  35496e95171f548a40cf930fea45d49f  gcc/testsuite/objc.dg/desig-init-2.m
! c8e19318f1e4f9600de0fcd505249da6  gcc/testsuite/objc.dg/dg.exp
  142353bbb63675a2f47a3552a35e052f  gcc/testsuite/objc.dg/duplicate-class-1.m
  e93baeeda9bc4b65e5eea748a076d816  gcc/testsuite/objc.dg/dwarf-1.m
  0a836d2fda427c66107feaabe420bcf3  gcc/testsuite/objc.dg/dwarf-2.m
*************** af1f88eec3b11606777ae67c0f56c07b  gcc/te
*** 91095,91101 ****
  db6ac9c4cab360de1e62ae24781a65aa  gcc/testsuite/objc.dg/gnu-encoding/generate-random.c
  a3ac98dcec269f59ea0f7ebc9b8c3297  gcc/testsuite/objc.dg/gnu-encoding/generate-random.h
  73fd2a43073b565b250e87dcce3fb9b1  gcc/testsuite/objc.dg/gnu-encoding/generate-random_r.c
! 86fd9067ab41cdd251cba942e05f9944  gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
  c41a6661b12b159d108661dd40bac309  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1.h
  b602f2a3cc56cd39c738d2241938856f  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1_test.h
  a66ec90d801aba24f196746609a41d7c  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
--- 98296,98302 ----
  db6ac9c4cab360de1e62ae24781a65aa  gcc/testsuite/objc.dg/gnu-encoding/generate-random.c
  a3ac98dcec269f59ea0f7ebc9b8c3297  gcc/testsuite/objc.dg/gnu-encoding/generate-random.h
  73fd2a43073b565b250e87dcce3fb9b1  gcc/testsuite/objc.dg/gnu-encoding/generate-random_r.c
! 5b7e5e3c7bd202b4c44c200dc946d3b9  gcc/testsuite/objc.dg/gnu-encoding/gnu-encoding.exp
  c41a6661b12b159d108661dd40bac309  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1.h
  b602f2a3cc56cd39c738d2241938856f  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-1_test.h
  a66ec90d801aba24f196746609a41d7c  gcc/testsuite/objc.dg/gnu-encoding/struct-layout-encoding-1_generate.c
*************** f95bd6372c4bf77d12d57a628fc5bb39  gcc/te
*** 91132,91138 ****
  d770885e56a7430b48fc3465970fbda1  gcc/testsuite/objc.dg/local-decl-1.m
  1d93e9b716a93515c5ab71dc3394158e  gcc/testsuite/objc.dg/local-decl-2.m
  5f8d8d488322be4a5c33e704a91212ff  gcc/testsuite/objc.dg/lookup-1.m
! 1693261773775ef2050b74a82cc7e103  gcc/testsuite/objc.dg/lto/lto.exp
  a18c6d04d0759ee5d6c7e2b9e7fbe288  gcc/testsuite/objc.dg/lto/trivial-1_0.m
  b1a80cc8c0c5d5294699c5aeb20817a4  gcc/testsuite/objc.dg/member-1.m
  c1908e6ec96975ce2e11da3796fb69d6  gcc/testsuite/objc.dg/method-1.m
--- 98333,98339 ----
  d770885e56a7430b48fc3465970fbda1  gcc/testsuite/objc.dg/local-decl-1.m
  1d93e9b716a93515c5ab71dc3394158e  gcc/testsuite/objc.dg/local-decl-2.m
  5f8d8d488322be4a5c33e704a91212ff  gcc/testsuite/objc.dg/lookup-1.m
! 5a155f903f396be10e2b3454c858b3f2  gcc/testsuite/objc.dg/lto/lto.exp
  a18c6d04d0759ee5d6c7e2b9e7fbe288  gcc/testsuite/objc.dg/lto/trivial-1_0.m
  b1a80cc8c0c5d5294699c5aeb20817a4  gcc/testsuite/objc.dg/member-1.m
  c1908e6ec96975ce2e11da3796fb69d6  gcc/testsuite/objc.dg/method-1.m
*************** d6bb76e151385d5dcc0bccac5e79fa6e  gcc/te
*** 91185,91193 ****
  35fb6a51ab2ee402a296c57fae46dd84  gcc/testsuite/objc.dg/param-1.m
  8c15bc469e56fdb17a7b24540bf21491  gcc/testsuite/objc.dg/pch/interface-1.hs
  71da4e106e38b3671b4f4ae8a237e55f  gcc/testsuite/objc.dg/pch/interface-1.m
! 137b6f3e6885c513a1be42af62a8f4b7  gcc/testsuite/objc.dg/pch/pch.exp
  9d6541dc0a9955231b38937f98c5b78a  gcc/testsuite/objc.dg/plugin/diagnostic-test-expressions-1.m
! fda03ba30e5742e886b408502eaab89e  gcc/testsuite/objc.dg/plugin/plugin.exp
  a1ff757de40d44fb3868d406ed01c4eb  gcc/testsuite/objc.dg/pr101666-0.m
  339a76362d0703671d6ddc07066f2d95  gcc/testsuite/objc.dg/pr101666-1.m
  c963db6673c4b0358e639bc17180a2a0  gcc/testsuite/objc.dg/pr101666.inc
--- 98386,98394 ----
  35fb6a51ab2ee402a296c57fae46dd84  gcc/testsuite/objc.dg/param-1.m
  8c15bc469e56fdb17a7b24540bf21491  gcc/testsuite/objc.dg/pch/interface-1.hs
  71da4e106e38b3671b4f4ae8a237e55f  gcc/testsuite/objc.dg/pch/interface-1.m
! 11a34cbbbdf0e82a6f66068c7575203f  gcc/testsuite/objc.dg/pch/pch.exp
  9d6541dc0a9955231b38937f98c5b78a  gcc/testsuite/objc.dg/plugin/diagnostic-test-expressions-1.m
! 8ef5e07bf09eda6da75a11f7c256daa6  gcc/testsuite/objc.dg/plugin/plugin.exp
  a1ff757de40d44fb3868d406ed01c4eb  gcc/testsuite/objc.dg/pr101666-0.m
  339a76362d0703671d6ddc07066f2d95  gcc/testsuite/objc.dg/pr101666-1.m
  c963db6673c4b0358e639bc17180a2a0  gcc/testsuite/objc.dg/pr101666.inc
*************** baf9036868eba04aebdd06e708a665ec  gcc/te
*** 91284,91290 ****
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/objc.dg/property/property-neg-5.m
  ea4fb9865bd07122883de2bcf725a13f  gcc/testsuite/objc.dg/property/property-neg-6.m
  b30232e7701d5769f0f353657f947392  gcc/testsuite/objc.dg/property/property-neg-7.m
! 1b0ef8d9ff547c4b108317726f7e8785  gcc/testsuite/objc.dg/property/property.exp
  366ec4311c5e9d93dcfbbd560da544a7  gcc/testsuite/objc.dg/property/synthesize-1.m
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/objc.dg/property/synthesize-10.m
  23e9117b246f1a4889c17099f6ccf5bf  gcc/testsuite/objc.dg/property/synthesize-11.m
--- 98485,98491 ----
  46896a53d202d39ebcdefc0f78554362  gcc/testsuite/objc.dg/property/property-neg-5.m
  ea4fb9865bd07122883de2bcf725a13f  gcc/testsuite/objc.dg/property/property-neg-6.m
  b30232e7701d5769f0f353657f947392  gcc/testsuite/objc.dg/property/property-neg-7.m
! 82e4fb0a6f01657d2094917f74353f44  gcc/testsuite/objc.dg/property/property.exp
  366ec4311c5e9d93dcfbbd560da544a7  gcc/testsuite/objc.dg/property/synthesize-1.m
  aecddf447ec5f56ba7c209cb10a65ad6  gcc/testsuite/objc.dg/property/synthesize-10.m
  23e9117b246f1a4889c17099f6ccf5bf  gcc/testsuite/objc.dg/property/synthesize-11.m
*************** cf6bf1a9bb03b4708b9ee74ec1da6dce  gcc/te
*** 91302,91308 ****
  4bf24db3955ce289fd5a62e5d7262340  gcc/testsuite/objc.dg/proto-lossage-1.m
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/objc.dg/proto-lossage-2.m
  7816032946ba6eac43f0d60480655dc6  gcc/testsuite/objc.dg/proto-lossage-3.m
! d323135be6f4b0bce1d76b585d1be3be  gcc/testsuite/objc.dg/proto-lossage-4.m
  f4e77b70bfe7025381ee1438e69c5b18  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
  43743498fb7683ea796ffd482ace42c9  gcc/testsuite/objc.dg/proto-lossage-7.m
--- 98503,98509 ----
  4bf24db3955ce289fd5a62e5d7262340  gcc/testsuite/objc.dg/proto-lossage-1.m
  d165610dbbfad82f6af91eab9b66d300  gcc/testsuite/objc.dg/proto-lossage-2.m
  7816032946ba6eac43f0d60480655dc6  gcc/testsuite/objc.dg/proto-lossage-3.m
! fc20d542160972e31139d01de2189382  gcc/testsuite/objc.dg/proto-lossage-4.m
  f4e77b70bfe7025381ee1438e69c5b18  gcc/testsuite/objc.dg/proto-lossage-5.m
  d26b84bd4fece35e5ae1ec9a7c6d4f15  gcc/testsuite/objc.dg/proto-lossage-6.m
  43743498fb7683ea796ffd482ace42c9  gcc/testsuite/objc.dg/proto-lossage-7.m
*************** c531fbd47d6cd6f34fd4a1161fe41d36  gcc/te
*** 91333,91343 ****
  b5566392b676a4381c9fba425af46d22  gcc/testsuite/objc.dg/special/load-category-3.h
  531fa8066e9e519b7cc77fe0e99f2692  gcc/testsuite/objc.dg/special/load-category-3.m
  84e0d0ac9e785e6c7a2c3961f9fef351  gcc/testsuite/objc.dg/special/load-category-3a.m
! 9a48e40b83f17980362e1046413d7635  gcc/testsuite/objc.dg/special/special.exp
  a771ad2e4109d3b6d673ea6ae3dfaa4f  gcc/testsuite/objc.dg/special/unclaimed-category-1.h
  a3f5ac774c5045ab1807af23f8bafeb5  gcc/testsuite/objc.dg/special/unclaimed-category-1.m
  fd73b19f16303df474ad98a05e01cd6a  gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
- 61b6d331a882a68f813cae949de043c9  gcc/testsuite/objc.dg/stabs-1.m
  44c850eb724ab694c1eea579910821bd  gcc/testsuite/objc.dg/static-1.m
  911d824641cc5460f0bb8428edcd155b  gcc/testsuite/objc.dg/stret-1.m
  581f8e860f7f1e705a6b0235823fa173  gcc/testsuite/objc.dg/stret-2.m
--- 98534,98543 ----
  b5566392b676a4381c9fba425af46d22  gcc/testsuite/objc.dg/special/load-category-3.h
  531fa8066e9e519b7cc77fe0e99f2692  gcc/testsuite/objc.dg/special/load-category-3.m
  84e0d0ac9e785e6c7a2c3961f9fef351  gcc/testsuite/objc.dg/special/load-category-3a.m
! d4ee2ba4848ec74d0f8d2762dbeb5110  gcc/testsuite/objc.dg/special/special.exp
  a771ad2e4109d3b6d673ea6ae3dfaa4f  gcc/testsuite/objc.dg/special/unclaimed-category-1.h
  a3f5ac774c5045ab1807af23f8bafeb5  gcc/testsuite/objc.dg/special/unclaimed-category-1.m
  fd73b19f16303df474ad98a05e01cd6a  gcc/testsuite/objc.dg/special/unclaimed-category-1a.m
  44c850eb724ab694c1eea579910821bd  gcc/testsuite/objc.dg/static-1.m
  911d824641cc5460f0bb8428edcd155b  gcc/testsuite/objc.dg/stret-1.m
  581f8e860f7f1e705a6b0235823fa173  gcc/testsuite/objc.dg/stret-2.m
*************** d14e2bc0e149efd8ad9b13c9f1e48081  gcc/te
*** 91351,91357 ****
  1b52a4aa3cd0d5062e03b48964ddcb0b  gcc/testsuite/objc.dg/strings/const-str-6.m
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/objc.dg/strings/strings-1.m
  5406714e0710bd54d86b2186d1cb98fa  gcc/testsuite/objc.dg/strings/strings-2.m
! e33b4514065877a086803f152a49bf94  gcc/testsuite/objc.dg/strings/strings.exp
  08a5ae539a0108908d97abd54da7b150  gcc/testsuite/objc.dg/stubify-1.m
  e62d1c240e660f200afe1c83315d23c2  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
--- 98551,98557 ----
  1b52a4aa3cd0d5062e03b48964ddcb0b  gcc/testsuite/objc.dg/strings/const-str-6.m
  4a89061dc402adc311f94d3659a6eaa2  gcc/testsuite/objc.dg/strings/strings-1.m
  5406714e0710bd54d86b2186d1cb98fa  gcc/testsuite/objc.dg/strings/strings-2.m
! b75a88d122fd57b746f932471ad694fa  gcc/testsuite/objc.dg/strings/strings.exp
  08a5ae539a0108908d97abd54da7b150  gcc/testsuite/objc.dg/stubify-1.m
  e62d1c240e660f200afe1c83315d23c2  gcc/testsuite/objc.dg/stubify-2.m
  7e68d7fe39ddc6065769f26089764fd6  gcc/testsuite/objc.dg/super-class-1.m
*************** a8a9f4264b042cb130bb43f35157c620  gcc/te
*** 91389,91395 ****
  f559fec747b34a07335a33efaef1d635  gcc/testsuite/objc.dg/torture/strings/string2.m
  8d3378c509e4ec126b88298049f5b787  gcc/testsuite/objc.dg/torture/strings/string3.m
  5b27fadf5e692e2a9972369e31bf0ba1  gcc/testsuite/objc.dg/torture/strings/string4.m
! 94fa76ecb960a0ecf5700f3f35e7cee9  gcc/testsuite/objc.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/objc.dg/torture/tls/diag-1.m
  372cfaf699d0b2f15663aaae9b213546  gcc/testsuite/objc.dg/torture/tls/thr-init-2.m
  8affcfa2f40a88a07d936c0472352a61  gcc/testsuite/objc.dg/torture/tls/thr-init-3.m
--- 98589,98595 ----
  f559fec747b34a07335a33efaef1d635  gcc/testsuite/objc.dg/torture/strings/string2.m
  8d3378c509e4ec126b88298049f5b787  gcc/testsuite/objc.dg/torture/strings/string3.m
  5b27fadf5e692e2a9972369e31bf0ba1  gcc/testsuite/objc.dg/torture/strings/string4.m
! 862aaf7c4db02cfff8379f7d0368b2cb  gcc/testsuite/objc.dg/torture/strings/strings.exp
  6f6356dbcb53d22602416e8919a2b428  gcc/testsuite/objc.dg/torture/tls/diag-1.m
  372cfaf699d0b2f15663aaae9b213546  gcc/testsuite/objc.dg/torture/tls/thr-init-2.m
  8affcfa2f40a88a07d936c0472352a61  gcc/testsuite/objc.dg/torture/tls/thr-init-3.m
*************** f0a85fb06bc40a59b3b67e37b68bf8a9  gcc/te
*** 91424,91430 ****
  af0fd8f33da4a0b997aa6096000deff3  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
! 3f29c9cf0f0a2d60312a784fb0daca67  gcc/testsuite/objc/compile/compile.exp
  2144ecc4331915c2481c0a1f5701d0e2  gcc/testsuite/objc/compile/method-1.m
  41f9da1aa9876935f010f6e2b17679e6  gcc/testsuite/objc/compile/pr18406.m
  e206c4c7af6f1b10d643ca659d7ce5fb  gcc/testsuite/objc/compile/pr64668.m
--- 98624,98630 ----
  af0fd8f33da4a0b997aa6096000deff3  gcc/testsuite/objc.dg/zero-link-3.m
  0d71c48c831bf5882b80c4cd6ca9d9d8  gcc/testsuite/objc/compile/20011211-1.m
  9b70591be7f91f15d0a53c89bdc94bf4  gcc/testsuite/objc/compile/20060406-1.m
! 7640c4ea80b77fa397cfaea37b3fee98  gcc/testsuite/objc/compile/compile.exp
  2144ecc4331915c2481c0a1f5701d0e2  gcc/testsuite/objc/compile/method-1.m
  41f9da1aa9876935f010f6e2b17679e6  gcc/testsuite/objc/compile/pr18406.m
  e206c4c7af6f1b10d643ca659d7ce5fb  gcc/testsuite/objc/compile/pr64668.m
*************** bee60356c32af863f8417a00f203538f  gcc/te
*** 91482,91488 ****
  0dfc21e690c7625bdcd6ecd58b521009  gcc/testsuite/objc/execute/enumeration-1.m
  906ad68029b532a36a68c47b781f6f77  gcc/testsuite/objc/execute/enumeration-2.m
  0add90ae8cf075ffca747fd33e604e11  gcc/testsuite/objc/execute/exceptions/catchall-1.m
! 219dbd6dbd3389e74727e9486da7e286  gcc/testsuite/objc/execute/exceptions/exceptions.exp
  9cd4ece00a81d13b805c9ad514ef2cf8  gcc/testsuite/objc/execute/exceptions/finally-1.m
  0f41feff3df5bd47c204ee5d8044ea2a  gcc/testsuite/objc/execute/exceptions/foward-1.m
  e9b8822effadb281ff59150cc70ef17f  gcc/testsuite/objc/execute/exceptions/foward-1.x
--- 98682,98688 ----
  0dfc21e690c7625bdcd6ecd58b521009  gcc/testsuite/objc/execute/enumeration-1.m
  906ad68029b532a36a68c47b781f6f77  gcc/testsuite/objc/execute/enumeration-2.m
  0add90ae8cf075ffca747fd33e604e11  gcc/testsuite/objc/execute/exceptions/catchall-1.m
! 62ae614777e32e03559645be75688284  gcc/testsuite/objc/execute/exceptions/exceptions.exp
  9cd4ece00a81d13b805c9ad514ef2cf8  gcc/testsuite/objc/execute/exceptions/finally-1.m
  0f41feff3df5bd47c204ee5d8044ea2a  gcc/testsuite/objc/execute/exceptions/foward-1.m
  e9b8822effadb281ff59150cc70ef17f  gcc/testsuite/objc/execute/exceptions/foward-1.x
*************** bece99d6de6f0bd4152de59cd8f1d13c  gcc/te
*** 91492,91498 ****
  a70e5bfb678efb233f3a7e3aedf20e95  gcc/testsuite/objc/execute/exceptions/pr31281.m
  dfa856dff7b9f08e7146dc28cfca396d  gcc/testsuite/objc/execute/exceptions/throw-nil.m
  e2d7fb111f167f00bc00103220075df5  gcc/testsuite/objc/execute/exceptions/trivial.m
! 1a386ed081f8d821ca5a8786d64b0f9c  gcc/testsuite/objc/execute/execute.exp
  cad3b31ba4ec282f94aee3275ac9323e  gcc/testsuite/objc/execute/fdecl.m
  1a92e165604e454883c8a1a3e560c7a2  gcc/testsuite/objc/execute/formal_protocol-1.m
  fae68af182768d87f73efa38e36d5ba3  gcc/testsuite/objc/execute/formal_protocol-2.m
--- 98692,98698 ----
  a70e5bfb678efb233f3a7e3aedf20e95  gcc/testsuite/objc/execute/exceptions/pr31281.m
  dfa856dff7b9f08e7146dc28cfca396d  gcc/testsuite/objc/execute/exceptions/throw-nil.m
  e2d7fb111f167f00bc00103220075df5  gcc/testsuite/objc/execute/exceptions/trivial.m
! 10fb1900a5a1a7e2e6a42955b20ae986  gcc/testsuite/objc/execute/execute.exp
  cad3b31ba4ec282f94aee3275ac9323e  gcc/testsuite/objc/execute/fdecl.m
  1a92e165604e454883c8a1a3e560c7a2  gcc/testsuite/objc/execute/formal_protocol-1.m
  fae68af182768d87f73efa38e36d5ba3  gcc/testsuite/objc/execute/formal_protocol-2.m
*************** cc86f493e7e4e40194cc20d75e4ca8e9  gcc/te
*** 91533,91538 ****
--- 98733,99490 ----
  10d4ea2c47febed0bbc5688f380b3439  gcc/testsuite/objc/execute/static-2.m
  a57e521085412bbde60e78229ace4fd5  gcc/testsuite/objc/execute/trivial.m
  2d60a6650416d3bcd6a3f5f1fb61dece  gcc/testsuite/objc/execute/va_method.m
+ 8a4f7c35e5b0158c9e80de5206d33f94  gcc/testsuite/rust/bounds1.rs
+ 06ba0a13e79d045cec2c0e8e69249bfd  gcc/testsuite/rust/compile/abi-options1.rs
+ 901b9d713edac630ba6ea674c4450902  gcc/testsuite/rust/compile/array3.rs
+ ec15ff347aa69c536e7e791163bb9e73  gcc/testsuite/rust/compile/array_empty_list.rs
+ 4407f370fc8ef22a64295446039677f5  gcc/testsuite/rust/compile/arrays1.rs
+ c8b42d6dfd427f73e97eaef157428dba  gcc/testsuite/rust/compile/arrays2.rs
+ 6d43a3c855de9a784b5daf14d332bb2c  gcc/testsuite/rust/compile/attr-mismatch-crate-name.rs
+ e3c9ec33d7df70539fa80809be2ce0c9  gcc/testsuite/rust/compile/attr_cold.rs
+ d9be47bf725d64b4d76c4e5de43dd2da  gcc/testsuite/rust/compile/attr_deprecated.rs
+ 9279a73fb5d92e345916699f6a14ae9b  gcc/testsuite/rust/compile/attr_deprecated_2.rs
+ 7673a55108cb36ca1835b653cd9d9d0d  gcc/testsuite/rust/compile/bad-crate-name.rs
+ c7ba9642fee029930b93bde0be0044d4  gcc/testsuite/rust/compile/bad=file-name.rs
+ 22b7be0cee647bdbcf3f8fc9132a35de  gcc/testsuite/rust/compile/bad_as_bool_char.rs
+ 02b466f42629715260cc948eeaf75e56  gcc/testsuite/rust/compile/bad_file_name.txt.rs
+ 04332c2d6761079811e1a2e7df684f11  gcc/testsuite/rust/compile/bad_inner_doc.rs
+ 74fb16b6d0af58376b35940fe67c13ac  gcc/testsuite/rust/compile/bad_pub_enumitems.rs
+ 822aea03a6aa5bb6befd197718e43ddd  gcc/testsuite/rust/compile/bad_stmt_enums.rs
+ 9f8b43272318a741168b07f0e891701c  gcc/testsuite/rust/compile/bad_toplevel_enums.rs
+ 0d119d70ef8a831773de61a39d852ca9  gcc/testsuite/rust/compile/bad_tuple_index.rs
+ 3d2bf26b32e2669c0c35dfb77814e1fe  gcc/testsuite/rust/compile/bad_type1.rs
+ a8a8f11ee40a5eb313b2c52c1234f020  gcc/testsuite/rust/compile/bad_type2.rs
+ e42d99383a25c9730ef3d807441d0b0c  gcc/testsuite/rust/compile/bounds.rs
+ edbb5ba7614424915583840f41db92d5  gcc/testsuite/rust/compile/break1.rs
+ f41c573cbe90d2d9eec484f2ed219129  gcc/testsuite/rust/compile/break2.rs
+ 62f89c9f86ff9a57de1bddd42dbf1af2  gcc/testsuite/rust/compile/builtin_macro_compile_error.rs
+ 79b04d50881917d513214f82ea9ada5e  gcc/testsuite/rust/compile/builtin_macro_concat.rs
+ 39bb4764af42f2e3a02e6bd375155bd0  gcc/testsuite/rust/compile/builtin_macro_eager1.rs
+ 2813e592e81d073cfbfb3e1933cb2306  gcc/testsuite/rust/compile/builtin_macro_eager2.rs
+ a1f38f2481de0a8f62553c38ffbc44d4  gcc/testsuite/rust/compile/builtin_macro_env.rs
+ c5434e3f4ff4a16b6f8d9eda51f5926e  gcc/testsuite/rust/compile/builtin_macro_include_bytes.rs
+ 5b96a3e4443c2c31ff0ce45cd239aa88  gcc/testsuite/rust/compile/builtin_macro_include_str.rs
+ 91d3d08b41737d6757fb8f34757490d2  gcc/testsuite/rust/compile/builtin_macro_not_found.rs
+ 39e81c71b446080af08cc5d177733aa4  gcc/testsuite/rust/compile/builtin_macro_recurse2.rs
+ 34d772626e30520a51feaedc952b4677  gcc/testsuite/rust/compile/bytecharstring.rs
+ 183f67621b7f28edd620bcba0dce8219  gcc/testsuite/rust/compile/canonical_paths1.rs
+ 7bc504860f2dbe84d0a4cd0c1fd975fe  gcc/testsuite/rust/compile/cast1.rs
+ 2648512ce6f2397fa9b2b9b663774782  gcc/testsuite/rust/compile/cfg1.rs
+ d55a94558eebc55b2cf9fa6570d5593f  gcc/testsuite/rust/compile/cfg2.rs
+ c73d64b77895517ecd6f3c68791c8a69  gcc/testsuite/rust/compile/cfg3.rs
+ 56ded507756f2a2acbcd3e159441eb69  gcc/testsuite/rust/compile/cfg4.rs
+ 51f569c35a6280f5867ea405af7c5ff0  gcc/testsuite/rust/compile/cfg5.rs
+ 2bb5cf15b07de99923afb39cf1aca432  gcc/testsuite/rust/compile/closure_move_expr.rs
+ ed5d2cfa69a4e1a3e09e45ccc2af8887  gcc/testsuite/rust/compile/compile.exp
+ 26906781b85cc46264ef3e39029497f7  gcc/testsuite/rust/compile/complex-path1.rs
+ 66ad56c8b2e0051778862304f596a483  gcc/testsuite/rust/compile/const-issue1440.rs
+ 35b2389068cb824405eb2d9143bcbaf5  gcc/testsuite/rust/compile/const1.rs
+ 20a071af13cc659f510fa8e507de1155  gcc/testsuite/rust/compile/const10.rs
+ 7e8914522c5084bfdf3d535d03eceba9  gcc/testsuite/rust/compile/const2.rs
+ 855ac0599ce037105c7396a1d029191b  gcc/testsuite/rust/compile/const3.rs
+ dfa3b2217fe0156c62492956eee3bcf4  gcc/testsuite/rust/compile/const4.rs
+ 5add53f8414bc2b7767a350b5f3d3a02  gcc/testsuite/rust/compile/const5.rs
+ 6f09394721c26be6597f0ff04ead414b  gcc/testsuite/rust/compile/const6.rs
+ 2306998d870c3bc52160a7c4dfe66bbf  gcc/testsuite/rust/compile/const7.rs
+ f39e120a441c7e4182741b883f1ef05d  gcc/testsuite/rust/compile/const8.rs
+ dd04212a2e511e939aedac8b2ea59543  gcc/testsuite/rust/compile/const9.rs
+ e56dd8ee3365e34fcd40ed35d94e5766  gcc/testsuite/rust/compile/const_generics_1.rs
+ 843f362a8c63f610af0a4ac77f309065  gcc/testsuite/rust/compile/const_generics_2.rs
+ 1b7ae3ef807698bb9fe8fd73308a15ae  gcc/testsuite/rust/compile/const_generics_3.rs
+ e4dd0536b6005d40043e86649f6ac5b1  gcc/testsuite/rust/compile/const_generics_4.rs
+ 32c22537f2b30e574bc911f24aad926f  gcc/testsuite/rust/compile/const_generics_5.rs
+ 83e195452a7bdfc3d742e6d0250e7648  gcc/testsuite/rust/compile/const_generics_6.rs
+ b3a8bfc23456930eb0b89b6ed6633856  gcc/testsuite/rust/compile/const_generics_7.rs
+ 5603e1c09861737068ab6bbe9dd5d23f  gcc/testsuite/rust/compile/const_generics_8.rs
+ 440bc2cc02a6edf4d61e2e988ae0c80f  gcc/testsuite/rust/compile/continue1.rs
+ fec9e39c9ab66bd08e4c78c8394a1011  gcc/testsuite/rust/compile/deadcode_err1.rs
+ 21e70ceb188f4f2bd313ca67a85825fc  gcc/testsuite/rust/compile/deadcode_err2.rs
+ 5c62594c4ac22ce08e737301cfef1e14  gcc/testsuite/rust/compile/debug-diagnostics-default.rs
+ 3773ca6c54665e210cd154606f67acae  gcc/testsuite/rust/compile/debug-diagnostics-off.rs
+ 222c8f58dfc19b5378f44e80ecd5742b  gcc/testsuite/rust/compile/debug-diagnostics-on.rs
+ 3a2fbeb7503eda8a0196db052fcca359  gcc/testsuite/rust/compile/decl_macro1.rs
+ 7ec686f7ddc3ea3d3b8e03244c6d1b4f  gcc/testsuite/rust/compile/decl_macro2.rs
+ bbb07a308e077d8068c1a25e119fce9c  gcc/testsuite/rust/compile/decl_macro3.rs
+ 6efc94f19385c3060fca68fd09bac1cc  gcc/testsuite/rust/compile/decl_macro4.rs
+ 15fae62741d18e742ca7c0320a61cc95  gcc/testsuite/rust/compile/decl_macro5.rs
+ bc73b541d5043286cba7b09aa1d609e9  gcc/testsuite/rust/compile/decl_macro6.rs
+ d23eb70e5ff707e3d1a8c4ea21224d84  gcc/testsuite/rust/compile/decl_macro7.rs
+ 0ee7c26dcdc8fb1d25de4eee521bb29e  gcc/testsuite/rust/compile/diagnostic_underline.rs
+ 9f4c15c76e3e3e3dd4ebd6f61e8db065  gcc/testsuite/rust/compile/doc_isolated_cr_block_comment.rs
+ d4173b37d75e489fc580f69e4c6666c9  gcc/testsuite/rust/compile/doc_isolated_cr_inner_block_comment.rs
+ 358e8e1402a859578bdfde24b20c7884  gcc/testsuite/rust/compile/doc_isolated_cr_inner_line_comment.rs
+ 99b87dbe2c1c9c2d180582aab545078e  gcc/testsuite/rust/compile/doc_isolated_cr_line_comment.rs
+ a7d44d70b773e86164f36c0b0f0ed9ff  gcc/testsuite/rust/compile/dup_fields.rs
+ 68b329da9893e34099c7d8ad5cb9c940  gcc/testsuite/rust/compile/empty.in
+ aae545e94fb684c0ca246a357ee256e9  gcc/testsuite/rust/compile/empty_comment_before_match.rs
+ 3fa3fcf0d13e765eaa569e818d91bf2f  gcc/testsuite/rust/compile/expected_type_args2.rs
+ a19a06dd370718438a55ea3c3efb5d89  gcc/testsuite/rust/compile/expected_type_args3.rs
+ 281e4cf12da44b33cfb731781c93cb2b  gcc/testsuite/rust/compile/feature.rs
+ 855eac5ad5f6820cf81b38a46a7b9488  gcc/testsuite/rust/compile/feature_intrinsics.rs
+ 03ce7bc2c5e3478be586fcc302a8200f  gcc/testsuite/rust/compile/frust-compile-until.rs
+ f419aae15b8436a773c82aee9454e6b8  gcc/testsuite/rust/compile/func1.rs
+ 9e93bf946152b7ebed5157f7cd2ffda6  gcc/testsuite/rust/compile/func2.rs
+ b1dc181e1f4c39b9c637fae18ed9de79  gcc/testsuite/rust/compile/func3.rs
+ dd3eb21c3b99dbf5302feec3d73f0092  gcc/testsuite/rust/compile/func4.rs
+ 31ad264388a994ea763c9b787f7e2257  gcc/testsuite/rust/compile/func5.rs
+ 3d1c9dedffcc8d1773ae724738a090ae  gcc/testsuite/rust/compile/generic-default1.rs
+ 0cdfaf84ae8af6dd067ddd5ce4a1b236  gcc/testsuite/rust/compile/generics1.rs
+ 2ceca342124bd3b24b2f8b130b58d57b  gcc/testsuite/rust/compile/generics10.rs
+ 5ef84847a22b700ca66a9a29b8686efe  gcc/testsuite/rust/compile/generics11.rs
+ 02ed75052c1664808ad9d068779a3246  gcc/testsuite/rust/compile/generics12.rs
+ a723dab3a3cf288a602edf56485b3e4e  gcc/testsuite/rust/compile/generics13.rs
+ ea20d238fdbba739a11a12bd97285145  gcc/testsuite/rust/compile/generics2.rs
+ d39fbd03286620c0913247b364549c83  gcc/testsuite/rust/compile/generics3.rs
+ 1cafe12bd527a3362ef3be0d574b69cd  gcc/testsuite/rust/compile/generics4.rs
+ be971c6b2d18f3d7afade30adc9d5e64  gcc/testsuite/rust/compile/generics5.rs
+ 5efdd18d770ce55356ac3059fea9af16  gcc/testsuite/rust/compile/generics6.rs
+ 3a3e7a77e5f37805a362891278726d5b  gcc/testsuite/rust/compile/generics7.rs
+ 5b452544e9ef058ee246edc352e1826c  gcc/testsuite/rust/compile/generics8.rs
+ f00512e3d8f123c1c40d1ae102a1a710  gcc/testsuite/rust/compile/generics9.rs
+ a1b7f6445fe82c46736219dba38d3922  gcc/testsuite/rust/compile/implicit_returns_err1.rs
+ 81b9be2b2b8652ddb1df628cf315b8c4  gcc/testsuite/rust/compile/implicit_returns_err2.rs
+ 1fdde1131697407665df75f73825c628  gcc/testsuite/rust/compile/implicit_returns_err3.rs
+ 4df44ab51a59ecd54d915e1610d834be  gcc/testsuite/rust/compile/implicit_returns_err4.rs
+ f0b6b46f0eda0c11c04c32fe2e1752a3  gcc/testsuite/rust/compile/include_empty.rs
+ bdcf4ee0d9c01755816b4b4cfd686a81  gcc/testsuite/rust/compile/infer-crate-name.rs
+ d1c354b6a0b4fc8d599d65fd14e29373  gcc/testsuite/rust/compile/inline_1.rs
+ f55c26b5030120066ef7feab28714a67  gcc/testsuite/rust/compile/inline_2.rs
+ f78a56479ba7bd2a5ff6949cfe7a2d43  gcc/testsuite/rust/compile/invalid_utf8
+ f75a8a462b08fd111e6f344aa398686c  gcc/testsuite/rust/compile/issue-1005.rs
+ ca2c27602daf9dadcc9d976aa4131edc  gcc/testsuite/rust/compile/issue-1006.rs
+ ecabb441aac8d8047f9e5ced38bfb7c3  gcc/testsuite/rust/compile/issue-1019.rs
+ 8a6b6780af800c7792766eb1ad1c2bc2  gcc/testsuite/rust/compile/issue-1023.rs
+ 942107ed77efe926f69407aa1d4b02da  gcc/testsuite/rust/compile/issue-1031.rs
+ b0b1d86054d444e810fcd7259a4f97f3  gcc/testsuite/rust/compile/issue-1034.rs
+ 755da4cdeb7d21c007a7642f64d68f9f  gcc/testsuite/rust/compile/issue-1073.rs
+ 3170bfed67ee0e280928743013eff0bb  gcc/testsuite/rust/compile/issue-1089.rs
+ 48bc2b2e2ebaf99052864a1a5344af31  gcc/testsuite/rust/compile/issue-1128.rs
+ 215a61ae1ef8ce9d4340a872f9af817f  gcc/testsuite/rust/compile/issue-1129-1.rs
+ b66a12f8b901db5696056a3d7ad72534  gcc/testsuite/rust/compile/issue-1129-2.rs
+ 2df7e7bcd5c9fec43a3d15ebaa03692b  gcc/testsuite/rust/compile/issue-1130.rs
+ 8b93435e3864764ad9cc5906990637b3  gcc/testsuite/rust/compile/issue-1131.rs
+ 57ed8c0b75a3923a67ccaf64ad1d9531  gcc/testsuite/rust/compile/issue-1152.rs
+ 57b7cf491f8b6169fa43e54462113d37  gcc/testsuite/rust/compile/issue-1165.rs
+ e379b1bf4aa87ebb59fe5b229174e1e8  gcc/testsuite/rust/compile/issue-1173.rs
+ c83436fe2fc9fdb75d44d97cc581d491  gcc/testsuite/rust/compile/issue-1226.rs
+ 8917da2935c56ecd5715cb3db5ad71a3  gcc/testsuite/rust/compile/issue-1234.rs
+ 8190e63d879a11c5c27075b2b61bc96b  gcc/testsuite/rust/compile/issue-1235.rs
+ 3a4f22a445c8e65467b378a5fe8b104e  gcc/testsuite/rust/compile/issue-1237.rs
+ 17400e163df5334bbe8aac2038ec3043  gcc/testsuite/rust/compile/issue-1251.rs
+ 8dd9a76c7a3fcfb15bfffaac22520456  gcc/testsuite/rust/compile/issue-1271.rs
+ 526c2f3c9b8826f2087440064a08e246  gcc/testsuite/rust/compile/issue-1272.rs
+ bcc4c84a7c57b14fbd92ebbcd2046aa2  gcc/testsuite/rust/compile/issue-1289.rs
+ ab3c15cae592f9bf4cd733d3f1430996  gcc/testsuite/rust/compile/issue-1323-1.rs
+ fb1288c6929fb7277dde0d2cd35829d6  gcc/testsuite/rust/compile/issue-1323-2.rs
+ b8672e41b3df45a83b26554acb9ba9d1  gcc/testsuite/rust/compile/issue-1361.rs
+ 6f51594f78fb3d8223c93c41dddd94f4  gcc/testsuite/rust/compile/issue-1383.rs
+ ad1f8c80e2b6dd5a82e5d235b59e8e7d  gcc/testsuite/rust/compile/issue-1393.rs
+ 764b8d11c95b068c1b2a8af94b17fade  gcc/testsuite/rust/compile/issue-1422.rs
+ 33a93c66ca9ee7be4fad2fd4799bdf3c  gcc/testsuite/rust/compile/issue-1447.rs
+ fed851a9cf342c688d15549e609f3b49  gcc/testsuite/rust/compile/issue-1589.rs
+ c0ecca352002e8e2e96db57b006a6eac  gcc/testsuite/rust/compile/issue-1725-1.rs
+ 2aa5d3182bd7d5fdd055b273839f97d1  gcc/testsuite/rust/compile/issue-1725-2.rs
+ b93530b19b35e5299898f7e66c545676  gcc/testsuite/rust/compile/issue-1773.rs
+ 6170947edf064f0996b5771bc5789af6  gcc/testsuite/rust/compile/issue-1786.rs
+ da970e1712ad79a003b303cf70132961  gcc/testsuite/rust/compile/issue-1830_bytes.rs
+ f5ab12305f28f4ac541cec8222e84dcf  gcc/testsuite/rust/compile/issue-1830_str.rs
+ 15127b55b37731baa285de7d143e7276  gcc/testsuite/rust/compile/issue-407-2.rs
+ 938d9583f1b1bde120d57975810d7715  gcc/testsuite/rust/compile/issue-407.rs
+ 229b98c45f842adf4958f0a3abd8e500  gcc/testsuite/rust/compile/issue-557.rs
+ f8f243df4bb6d8ad64bad3b19771c416  gcc/testsuite/rust/compile/issue-635-1.rs
+ 4ebac20282b976fe52f1017d59feaccb  gcc/testsuite/rust/compile/issue-635-2.rs
+ 6ee372b1f76b6013f7f8cbe145021be3  gcc/testsuite/rust/compile/issue-867.rs
+ 9afdcde455c4f144c4385b9d67323cb3  gcc/testsuite/rust/compile/lookup_err1.rs
+ ab010cddb1155cc9e700ce547b463174  gcc/testsuite/rust/compile/macro-issue1053-2.rs
+ 5717e4e8d84c82f5af7bff4dc34a3be9  gcc/testsuite/rust/compile/macro-issue1053.rs
+ 1e7ae050ea3d88cb2f91abc4970eee95  gcc/testsuite/rust/compile/macro-issue1224.rs
+ 3717f6b791725345c890efbcdfb6a003  gcc/testsuite/rust/compile/macro-issue1233.rs
+ ebe435ba941202b6f3d66250b76957da  gcc/testsuite/rust/compile/macro-issue1395-2.rs
+ 216ccff25a69db7fdb37eeee23f44622  gcc/testsuite/rust/compile/macro-issue1395.rs
+ 8e0ff67d24d92aa094edb9b476e6d022  gcc/testsuite/rust/compile/macro-issue1400-2.rs
+ 87f49da602b30fb8dea6c0d972d1fe5e  gcc/testsuite/rust/compile/macro-issue1400.rs
+ bc850c4ba48b08af8788867050a975a6  gcc/testsuite/rust/compile/macro1.rs
+ ac95e4402432bd69656d1ee0d52210ab  gcc/testsuite/rust/compile/macro10.rs
+ 43306e2bad2235ff677beff538262cbb  gcc/testsuite/rust/compile/macro11.rs
+ d2da748616e3ef6e8fe631fc5484611b  gcc/testsuite/rust/compile/macro12.rs
+ 61b020bf51be5f389b73555f8990c669  gcc/testsuite/rust/compile/macro13.rs
+ 44cd3545b413600a9ce11ec14d928b52  gcc/testsuite/rust/compile/macro14.rs
+ 370c925d3aaf86013436d730818b128c  gcc/testsuite/rust/compile/macro15.rs
+ 23e1ea558d15c047bf9c7bc7ef17fde0  gcc/testsuite/rust/compile/macro16.rs
+ 0661de89079960b97bb1b047273576dc  gcc/testsuite/rust/compile/macro17.rs
+ 5af29d5155e1ad26afae51f6ba61d2c2  gcc/testsuite/rust/compile/macro18.rs
+ 16cbb0c310c9d3506217f27730134a71  gcc/testsuite/rust/compile/macro19.rs
+ 421a4aafc9c800aacad47cea9aee5769  gcc/testsuite/rust/compile/macro2.rs
+ 3b9b57bc8a658e96191e90f277349bc0  gcc/testsuite/rust/compile/macro20.rs
+ acf23d48c5e8907c94fc9ad9512b9f68  gcc/testsuite/rust/compile/macro21.rs
+ 94a6a460c6d078364f4e18d726d45ba7  gcc/testsuite/rust/compile/macro22.rs
+ d1eb9c5c76e6b11f6422734baa35a641  gcc/testsuite/rust/compile/macro23.rs
+ 2e2cfd6ad377b694fe8cb9717e6c4656  gcc/testsuite/rust/compile/macro25.rs
+ 2ebb4a653eb27be8e54475a3951619f1  gcc/testsuite/rust/compile/macro26.rs
+ d79f52ad12a10855d24dcc32089c3e64  gcc/testsuite/rust/compile/macro27.rs
+ 0f9ccae7ee77a387dc82996745302613  gcc/testsuite/rust/compile/macro28.rs
+ 7b08d09218e23d6cdbc2ac47b05dcdba  gcc/testsuite/rust/compile/macro29.rs
+ 123b1e11db692d44dd105aaa54e2d5c5  gcc/testsuite/rust/compile/macro3.rs
+ a04474d7ece12b1df5b48d74ed2ff9c1  gcc/testsuite/rust/compile/macro30.rs
+ 04691c787fc67ff15b07fe5621bbc6e7  gcc/testsuite/rust/compile/macro31.rs
+ 5d33d4ac14eb4de136975f9cfff42def  gcc/testsuite/rust/compile/macro32.rs
+ 7ef893755255482c25c2832cc2ecced9  gcc/testsuite/rust/compile/macro33.rs
+ 51d54ecf4fdf2c12007c4d39cea41fe5  gcc/testsuite/rust/compile/macro34.rs
+ 0a6fffcc17b9c4b184022244bf899990  gcc/testsuite/rust/compile/macro35.rs
+ a4c0145ebf6e0d1270d4b1b7d00fcf6d  gcc/testsuite/rust/compile/macro36.rs
+ d821668aa6dd7bcd7412de828c3800c8  gcc/testsuite/rust/compile/macro37.rs
+ 959c846fb4dcc18dab98e2f73485e3da  gcc/testsuite/rust/compile/macro38.rs
+ ec75483aa3888f5e6a15380b33895a40  gcc/testsuite/rust/compile/macro39.rs
+ 47935881e7414eacc5ee88b55b692cda  gcc/testsuite/rust/compile/macro4.rs
+ 70c5e19fb60255905387872decf8841a  gcc/testsuite/rust/compile/macro40.rs
+ 3b11e1cf2d0e9a7d2ad4f22731a32842  gcc/testsuite/rust/compile/macro41.rs
+ 626ba12f2346bb08aa457dfae9d12149  gcc/testsuite/rust/compile/macro42.rs
+ 6be48872c1bebeca26b0a0c3863b6816  gcc/testsuite/rust/compile/macro43.rs
+ a270542d574a49c94c806c3f521d259c  gcc/testsuite/rust/compile/macro44.rs
+ 0d4568d3df391c28384dcb6eda25085b  gcc/testsuite/rust/compile/macro45.rs
+ 8a9c7aa5f77919dfbd071ece74c1ddad  gcc/testsuite/rust/compile/macro46.rs
+ cea6b447d14844469e6a66daab2ef606  gcc/testsuite/rust/compile/macro5.rs
+ a826fd8e17270c6a418dd2d9230f3dfc  gcc/testsuite/rust/compile/macro6.rs
+ 7a6a66a55a39bce13a41f5f309d5c78a  gcc/testsuite/rust/compile/macro7.rs
+ 06bb53602d66838d4c8109b831eeb7db  gcc/testsuite/rust/compile/macro8.rs
+ 5ceb4a75d4b0622e359a0de43f36762b  gcc/testsuite/rust/compile/macro9.rs
+ 0e51610f4552bff322366234a94cbaee  gcc/testsuite/rust/compile/macro_export_1.rs
+ a57477ce9d60aea59edc946b7c399d07  gcc/testsuite/rust/compile/macro_return.rs
+ 72c0d2982b1ab36cffb0350603371eca  gcc/testsuite/rust/compile/match1.rs
+ 1b91ba46251a89048af8618b291df12e  gcc/testsuite/rust/compile/match2.rs
+ 28e5112c752d27c58ea4a15b7f2e415c  gcc/testsuite/rust/compile/match3.rs
+ b0b06692e5b15cadf2e51784532bca6c  gcc/testsuite/rust/compile/match4.rs
+ b0e4fe4aa3e67c3ed0b6404c4ec0dc57  gcc/testsuite/rust/compile/match5.rs
+ fc40a989e45e92ff36307dae69c7feba  gcc/testsuite/rust/compile/match6.rs
+ 787fdfa2348d255ae6a03213c05501f1  gcc/testsuite/rust/compile/match7.rs
+ 456b9dca3b19b6ca83421fc1379c539f  gcc/testsuite/rust/compile/method1.rs
+ c4554c31e215ae41498beabf0c78ad00  gcc/testsuite/rust/compile/method2.rs
+ 81fa68fc39cbeed3ddda23fc166d2f17  gcc/testsuite/rust/compile/mismatch-crate-name.rs
+ e231e538febe2b589a3f0eaacc8ed989  gcc/testsuite/rust/compile/missing_closing_paren.rs
+ 6847e46e8fb1faccc912a128920d7966  gcc/testsuite/rust/compile/missing_middle/both_path.rs
+ 5a19b08ad9c6d2b2a7206a0bac429af9  gcc/testsuite/rust/compile/missing_middle/explicit.not.rs
+ cd05644ed63556d4b86d76594e45c19b  gcc/testsuite/rust/compile/missing_middle/inner_path.rs
+ 0c698b207d7baa3852f8a068f236bac4  gcc/testsuite/rust/compile/missing_middle/other.rs
+ e423cd71d83e2ff468da6055234aac58  gcc/testsuite/rust/compile/missing_middle/outer_path.rs
+ e7e40a55fdf47f28c89ad061c6470378  gcc/testsuite/rust/compile/missing_middle/sub/mod.rs
+ 775854480777f26a721b17fa79300bac  gcc/testsuite/rust/compile/missing_return1.rs
+ 10758cae7fd6365c549142fec1eca417  gcc/testsuite/rust/compile/mod_missing_middle.rs
+ 8d7d946e590c2876825aeb5b33acbe76  gcc/testsuite/rust/compile/multi_reference_type.rs
+ 0e29d0825fda239bc7af83c9fccfaf89  gcc/testsuite/rust/compile/never_type1.rs
+ c93bf8c6889db7c880a5fbef8d112d1a  gcc/testsuite/rust/compile/parse_complex_generic_application.rs
+ 27a79bb9db55d976afe6191f7226c097  gcc/testsuite/rust/compile/parse_complex_generic_application2.rs
+ ac7d528f48d6a84b3e60f20a514d6cf7  gcc/testsuite/rust/compile/parse_empty_tuple_pattern.rs
+ 114e68344ffd8da36992cebba2f47a5f  gcc/testsuite/rust/compile/parse_range.rs
+ f9b9eba756232c960e223c8cecf948ab  gcc/testsuite/rust/compile/privacy1.rs
+ 4da8baa4cd281d900c7d76ef49e2094f  gcc/testsuite/rust/compile/privacy2.rs
+ 2d00fec9f54ad90dc17cb74ad742c7d9  gcc/testsuite/rust/compile/privacy3.rs
+ e418569b4527cc785cde1c70680fb739  gcc/testsuite/rust/compile/privacy4.rs
+ d08245a3ce13c8368b82bb2a56b7561c  gcc/testsuite/rust/compile/privacy5.rs
+ 5c4761fe9ae9999c291f64e919454d82  gcc/testsuite/rust/compile/privacy6.rs
+ b1b0e52c874721c0a325366a7bc0642e  gcc/testsuite/rust/compile/privacy7.rs
+ 90a3931a025c23dc07fbc9e12bc26144  gcc/testsuite/rust/compile/pub_restricted_1.rs
+ d741a0191dd04a79a7edaaf116ec4f12  gcc/testsuite/rust/compile/pub_restricted_2.rs
+ 6bd1b5dbdfe5f30de51ab30015c5be78  gcc/testsuite/rust/compile/pub_restricted_3.rs
+ 2489fea6f272449ac3fb59684962b103  gcc/testsuite/rust/compile/raw_identifiers_bad_keywords.rs
+ b9d738cbe9432ef9912a084d6d0017b5  gcc/testsuite/rust/compile/raw_identifiers_underscore.rs
+ 18866bec0bccb2a4700637c28efbeaac  gcc/testsuite/rust/compile/rawbytestring.rs
+ 5cb06528ebf797118c9a80af781285aa  gcc/testsuite/rust/compile/redef_error1.rs
+ 083bc9ffe9a05b8ba4f9021ebd33fc80  gcc/testsuite/rust/compile/redef_error2.rs
+ c08fe45d712fc35c9b06015771288ba8  gcc/testsuite/rust/compile/redef_error3.rs
+ 6fa963f7ee87e8cee969977bdc7c2a43  gcc/testsuite/rust/compile/redef_error4.rs
+ f02be21ac7383cdc26c4db0eeaa6c44d  gcc/testsuite/rust/compile/redef_error5.rs
+ bf3d52300c172b82f789437779b34217  gcc/testsuite/rust/compile/redef_error6.rs
+ df700fef96532515f8e5f0646193f9ad  gcc/testsuite/rust/compile/reference1.rs
+ 30f8fce22ebd2b045d3c572d987e757b  gcc/testsuite/rust/compile/rust-const-blog-issue.rs
+ 2cb7dfbccc813bbbcd257a0425122660  gcc/testsuite/rust/compile/rustc_attr1.rs
+ 2ef2e5399d947093c2b82f36e833a5bd  gcc/testsuite/rust/compile/self-path1.rs
+ 6dc3e1864ac0a6b51f4de1104a924147  gcc/testsuite/rust/compile/self-path2.rs
+ 089df76a428b6f2ea61f62e6fc175a1d  gcc/testsuite/rust/compile/shadow1.rs
+ c76cd68ebcf9bb89b67b55d54a10cee5  gcc/testsuite/rust/compile/specify-crate-name.rs
+ f0310c328b1fddc85d5bebedce0cf769  gcc/testsuite/rust/compile/static_var1.rs
+ 49191b19f63c7462776bf2f265a242b7  gcc/testsuite/rust/compile/stmt_with_block_err1.rs
+ 2bc6179d03b3e34e3ad83b5e4773cf8b  gcc/testsuite/rust/compile/struct_align1.rs
+ 9b4573b2cb3d14c981aa2a9b5ae8f5f1  gcc/testsuite/rust/compile/struct_align2.rs
+ 0089260781c87386353e1d68593622fd  gcc/testsuite/rust/compile/struct_init1.rs
+ 00e347708a104c565e0d029fd61f7e9d  gcc/testsuite/rust/compile/struct_pack1.rs
+ c2a21c19762e48d9fe8a2144950b1b4f  gcc/testsuite/rust/compile/struct_pack2.rs
+ b367b9437770c67d8d9059972bc1a3e8  gcc/testsuite/rust/compile/syntax-only.rs
+ fa137bc0614a02dafb820751293a47c7  gcc/testsuite/rust/compile/test_mod.rs
+ 156d3a4eb60d669211c1c31f6828f576  gcc/testsuite/rust/compile/torture/all_doc_comment_line_blocks.rs
+ fdf890b2027e28e726e5201eddef6b4f  gcc/testsuite/rust/compile/torture/all_doc_comment_line_blocks_crlf.rs
+ 9c037ed72d92be90dd811fb6f830c3a7  gcc/testsuite/rust/compile/torture/arithmetic_expressions1.rs
+ 700e78324e0228664e548115a92deb3c  gcc/testsuite/rust/compile/torture/array_const_fold_1.rs
+ 977eb70c73e224801b9274751d21f449  gcc/testsuite/rust/compile/torture/array_const_fold_2.rs
+ d08195bb155c58b625aaa9e394d06c4c  gcc/testsuite/rust/compile/torture/array_function.rs
+ c3e01a95d652e8c7c268b324a2911f80  gcc/testsuite/rust/compile/torture/array_type_infer.rs
+ 6eb6e6ff52af6e9b7afd0b827ed9cbec  gcc/testsuite/rust/compile/torture/array_zero_length.rs
+ d8dd161fac9318a0470043dfee8c0c20  gcc/testsuite/rust/compile/torture/arrays1.rs
+ f51aa4c941042d8c31ec23157e91d1da  gcc/testsuite/rust/compile/torture/arrays2.rs
+ 5ca1a0eacac6a0f825a32e310b4b4874  gcc/testsuite/rust/compile/torture/arrays3.rs
+ f13bc2644c23f9b77870bdffd7143d6c  gcc/testsuite/rust/compile/torture/arrays4.rs
+ 2866889ac005072b680cb19cc12aa0c1  gcc/testsuite/rust/compile/torture/arrays5.rs
+ d5d1af9be28084065ca5bb0e0d583b32  gcc/testsuite/rust/compile/torture/arrays6.rs
+ 7bf2f74b7a46f5ef883797b759f5a23a  gcc/testsuite/rust/compile/torture/arrays_index1.rs
+ f6ef7fea1ef5fc900269037059a043f9  gcc/testsuite/rust/compile/torture/arrays_index2.rs
+ b8c2c7b3c891bc3a263e763f2163c358  gcc/testsuite/rust/compile/torture/arrays_index3.rs
+ 92723e1529e3f0e7c0f3f8c66635a91f  gcc/testsuite/rust/compile/torture/as_bool_char.rs
+ 28a0f4d2764e34784b460796e30a52dd  gcc/testsuite/rust/compile/torture/associated_types1.rs
+ 0a97b462b38130103f86ca35421a3c6a  gcc/testsuite/rust/compile/torture/autoderef1.rs
+ 167fe74868ba7bded3851a9357f3b2dc  gcc/testsuite/rust/compile/torture/block_expr1.rs
+ a065c1c958a9fdc1a842ebdb363ccb6c  gcc/testsuite/rust/compile/torture/block_expr2.rs
+ 59314587deca275c222d9a32bb897ef1  gcc/testsuite/rust/compile/torture/block_expr3.rs
+ f0b47694ec4ba423955383a4cf821c5e  gcc/testsuite/rust/compile/torture/block_expr4.rs
+ d493591eb7774b7c3575597109cc0fb1  gcc/testsuite/rust/compile/torture/block_expr5.rs
+ ed716fa84a3690b39c0af91ffa28108e  gcc/testsuite/rust/compile/torture/block_expr_parser_bug.rs
+ 30f83d0f9026d598483f7bba93a46893  gcc/testsuite/rust/compile/torture/bom.rs
+ 152ab6386f68ecd72a8f1847206bab27  gcc/testsuite/rust/compile/torture/bom_comment.rs
+ 62b52bf276a440da57e4c858a447359e  gcc/testsuite/rust/compile/torture/bom_shebang.rs
+ becfe673b19d48d9d128de9bc9a949f9  gcc/testsuite/rust/compile/torture/bom_whitespace.rs
+ 6ca799beafae2ef48bf31ba40d4a8497  gcc/testsuite/rust/compile/torture/bools_eq.rs
+ cbdcc1458dd3b905587a473cc7f110e1  gcc/testsuite/rust/compile/torture/borrow1.rs
+ 48041d4df15544e16464dcba206f2a92  gcc/testsuite/rust/compile/torture/borrow_function.rs
+ ebf53f0ebfc6c6854e60f5b3b4326516  gcc/testsuite/rust/compile/torture/break_function.rs
+ 2b56ba354fbb2cc244d974d266e2983b  gcc/testsuite/rust/compile/torture/byte_char_str.rs
+ 0005d13ab30058ae7007910b10f9a902  gcc/testsuite/rust/compile/torture/byte_str.rs
+ ae3d551190c1a96fcc88e43e12f59035  gcc/testsuite/rust/compile/torture/cast1.rs
+ 72e2f506e45df556fa2b8d1216b47eb4  gcc/testsuite/rust/compile/torture/cast2.rs
+ 309e013725ea6fb5ffeb6d3177dcae27  gcc/testsuite/rust/compile/torture/cast3.rs
+ 0039b9e25398a0b3429e3eb29ff940a0  gcc/testsuite/rust/compile/torture/cfg_attr.rs
+ a6c52e49acead3e0c70ad1d2fb7b2c56  gcc/testsuite/rust/compile/torture/char1.rs
+ 787e82fbe52e29c6353ef02980e52abf  gcc/testsuite/rust/compile/torture/check-doc-attr-string.rs
+ 335ffa18cefc80ab0dd0187d81d5ae0c  gcc/testsuite/rust/compile/torture/coercion1.rs
+ f8f937f1acf2745e64c20616c3515f69  gcc/testsuite/rust/compile/torture/coercion2.rs
+ 44a820ec9fc1f76d7d84a0377b42d82b  gcc/testsuite/rust/compile/torture/comparison_expr1.rs
+ 9355c1d3351d72e1b9c6eaff5bbad44d  gcc/testsuite/rust/compile/torture/compile.exp
+ e2853f6adb4ff42b52de7bd5386a1b19  gcc/testsuite/rust/compile/torture/compound_assignment_expr1.rs
+ f22e92cee5cea1b44f8b9966a8027a12  gcc/testsuite/rust/compile/torture/conditional.rs
+ d78b6a0262085ca308a5a6b3653a3247  gcc/testsuite/rust/compile/torture/constant1.rs
+ a04178aea3ceec839354c3ffd84b69f3  gcc/testsuite/rust/compile/torture/constant2.rs
+ a85eef33b70b974480146ba0bdfe1b07  gcc/testsuite/rust/compile/torture/constant3.rs
+ bf13c513e09bfcead7789ecde8acfb5c  gcc/testsuite/rust/compile/torture/deadcode1.rs
+ d1a4004c5a6ded0d144af392d0cd79ed  gcc/testsuite/rust/compile/torture/deadcode2.rs
+ 868137a24ca97d6b622c7db394321f3a  gcc/testsuite/rust/compile/torture/deref1.rs
+ 76752387f75dbaba8935de0f308c3e83  gcc/testsuite/rust/compile/torture/deref_function.rs
+ 8999f29296027efbe4203ab972aabca2  gcc/testsuite/rust/compile/torture/doc_comment.rs
+ 9052e782c6bd21ebdeacd2ef37c971db  gcc/testsuite/rust/compile/torture/enum1.rs
+ 36c2a8fd2c29ef6fb5566c975128b2f4  gcc/testsuite/rust/compile/torture/extern_mod1.rs
+ 4c781d2c921d6401c22d96d426d243de  gcc/testsuite/rust/compile/torture/extern_mod2.rs
+ 1490d84b237737cb823c9217c7c951a1  gcc/testsuite/rust/compile/torture/float1.rs
+ 648d8471d92dd7e628efe64b7fe0cca3  gcc/testsuite/rust/compile/torture/float_types.rs
+ 785a9da1467d65ab0f9ceccec94af674  gcc/testsuite/rust/compile/torture/forward_decl_1.rs
+ 24d01e3069aeb01f7861e76a23500dcf  gcc/testsuite/rust/compile/torture/forward_decl_2.rs
+ d77e665974d88bd08a4471b05f5bff0a  gcc/testsuite/rust/compile/torture/forward_decl_3-unsafe.rs
+ 857a877b0ff7ff3ac0a864d41f3dadb7  gcc/testsuite/rust/compile/torture/forward_decl_3.rs
+ b3b1f6a81cb3ee39ad4729bfe15303db  gcc/testsuite/rust/compile/torture/forward_decl_4.rs
+ 4d6d206c9b73559c2e4c6b2459556ccf  gcc/testsuite/rust/compile/torture/forward_decl_5.rs
+ 2a14ed73eb56715fac47961c7ad1d224  gcc/testsuite/rust/compile/torture/func1.rs
+ 459ebd43954a1ec8ff304444907f2f6a  gcc/testsuite/rust/compile/torture/func2.rs
+ d1c0aa9304b5787c6af6b4adee81e1bf  gcc/testsuite/rust/compile/torture/function_reference1.rs
+ 7bda593163cfcc89e3e33a263bf1fea0  gcc/testsuite/rust/compile/torture/function_reference2.rs
+ 6dbc5c586e725ca1a1cc60af5f5be2f1  gcc/testsuite/rust/compile/torture/function_reference3.rs
+ 317e79768c71ad90371a40260f219cc9  gcc/testsuite/rust/compile/torture/function_reference4.rs
+ 31d271a46ccdec59fbb44ae1fb4a5a3c  gcc/testsuite/rust/compile/torture/generics1.rs
+ 403e15c444b6152ebdeb8368ea8bf20e  gcc/testsuite/rust/compile/torture/generics10.rs
+ 4591a35e0c731b0d0863610a6b1b1d91  gcc/testsuite/rust/compile/torture/generics11.rs
+ d4648465c2fc6d1afccbd652095cea7c  gcc/testsuite/rust/compile/torture/generics12.rs
+ a7763fec6e5da12509019fe04a7eaa75  gcc/testsuite/rust/compile/torture/generics13.rs
+ a1083dc6859c2823fe9d3f36afb98b45  gcc/testsuite/rust/compile/torture/generics14.rs
+ 85a770db8ca7ba7d595c49ebabe23aa1  gcc/testsuite/rust/compile/torture/generics15.rs
+ cc3eb5ac4c68bc58a1d92af16aff98cc  gcc/testsuite/rust/compile/torture/generics16.rs
+ 2cf3425ef62974727b0fb8f4f5699ca7  gcc/testsuite/rust/compile/torture/generics17.rs
+ a039822ddae45e2ee1a59389e3c47267  gcc/testsuite/rust/compile/torture/generics18.rs
+ 83173bf99a0cca8f0d26bbbeb5427897  gcc/testsuite/rust/compile/torture/generics19.rs
+ 9c5024bb8dd4a549767de612cd5651d9  gcc/testsuite/rust/compile/torture/generics2.rs
+ 65d07e5286011ec0091424fd60d7a702  gcc/testsuite/rust/compile/torture/generics20.rs
+ 33217cf3aef0d9c9909a55282cce801e  gcc/testsuite/rust/compile/torture/generics21.rs
+ 35e786419d8b443210aaa13aca7b44ac  gcc/testsuite/rust/compile/torture/generics22.rs
+ 6b3fbd204eb4b5c12fcbc69412271f08  gcc/testsuite/rust/compile/torture/generics23.rs
+ c3bea67ab0bf99806f79530e080e0893  gcc/testsuite/rust/compile/torture/generics24.rs
+ 444b9ca28d24ffcfef1d4420fc7df621  gcc/testsuite/rust/compile/torture/generics25.rs
+ 66d588ed03a0d5452ac4713042b61db1  gcc/testsuite/rust/compile/torture/generics26.rs
+ 6e9a5a9ec1095bd01a54a7a85874fabc  gcc/testsuite/rust/compile/torture/generics27.rs
+ 994efb04f1764595dcec4ae9cdab8271  gcc/testsuite/rust/compile/torture/generics28.rs
+ 531f7e92bd87f89410a4d77bf540292c  gcc/testsuite/rust/compile/torture/generics29.rs
+ ccdbd1a4ad003f7b6263f2ac4aa5bd67  gcc/testsuite/rust/compile/torture/generics3.rs
+ 16bb854e046d4ba9004d1225becca470  gcc/testsuite/rust/compile/torture/generics30.rs
+ 6582c174f00f7c5c4c743a77f12f7516  gcc/testsuite/rust/compile/torture/generics31.rs
+ a83c9d6f86b88779f596785fac5bb710  gcc/testsuite/rust/compile/torture/generics32.rs
+ f8497b95189d70d1af5c541a473d333b  gcc/testsuite/rust/compile/torture/generics4.rs
+ bb25c1f616bb4c3dc114fa7304947d72  gcc/testsuite/rust/compile/torture/generics5.rs
+ aff809ae6f1d98aeab3d1f381f73a464  gcc/testsuite/rust/compile/torture/generics6.rs
+ d3393609231bfe3609494fa3096f43d6  gcc/testsuite/rust/compile/torture/generics7.rs
+ 10005dfa8e8b120eda5aacfcc4045d72  gcc/testsuite/rust/compile/torture/generics8.rs
+ 5c9bea40d0bc96a36b253c60c4368f0f  gcc/testsuite/rust/compile/torture/generics9.rs
+ 395a45c2c8dc61003c5bf77fbf78f5b1  gcc/testsuite/rust/compile/torture/grouped_expr_function.rs
+ a1cb1c1a5db93b8b6b3577994b51c587  gcc/testsuite/rust/compile/torture/identifier-missing-impl-1.rs
+ 39138a8494b7da114c4f1a8cb2f7d120  gcc/testsuite/rust/compile/torture/if.rs
+ 79a1b73fa046294586bc0a47b730211e  gcc/testsuite/rust/compile/torture/if_elif.rs
+ e419012e6cd9fb814f13b07d15eb893d  gcc/testsuite/rust/compile/torture/if_elif_else_expr1.rs
+ ebe54baa12f0aa3ea41b6ea7d6a9d428  gcc/testsuite/rust/compile/torture/if_else.rs
+ 5a4fa3b5df30ae14697c9542b49aa6fb  gcc/testsuite/rust/compile/torture/ifunaryexpr.rs
+ 920a12b829b8f984526c871e31cbf212  gcc/testsuite/rust/compile/torture/impl_block1.rs
+ 3feb539a3f0b8e4e51fe4d0a3c63fdb4  gcc/testsuite/rust/compile/torture/impl_block2.rs
+ 77b149fb26a75cf6fa0484833034954c  gcc/testsuite/rust/compile/torture/impl_block3.rs
+ e6ca0f899f79ff3ab33db86267a4fa7d  gcc/testsuite/rust/compile/torture/impl_block_unused.rs
+ 05c689f230ac5a87f83bff028418698e  gcc/testsuite/rust/compile/torture/implicit_returns1.rs
+ 513b61c876729d12da26c3f39e7abd3a  gcc/testsuite/rust/compile/torture/infer_type1.rs
+ ee57cea6d4167d2f5a2c826ae72aa749  gcc/testsuite/rust/compile/torture/inner_attributes.rs
+ 5d4b318bf8adfb7808db0e4f3513deac  gcc/testsuite/rust/compile/torture/integer_inference_var1.rs
+ c38d658293c258583fcb0ad0d0aa7271  gcc/testsuite/rust/compile/torture/integer_inference_var2.rs
+ a41ad9d29fc8cc2864d3b3d1da781fe4  gcc/testsuite/rust/compile/torture/integer_inference_var3.rs
+ d98f733774408fbc7514e5b75b429cca  gcc/testsuite/rust/compile/torture/integer_inference_var4.rs
+ 31b1b4b7d065b79b397ca6e80713ceb3  gcc/testsuite/rust/compile/torture/integer_inference_var5.rs
+ f469e2f4fbffc501a3af510d57f34eee  gcc/testsuite/rust/compile/torture/integer_types.rs
+ 4ea992999de9a051b61c5a9af4cdd702  gcc/testsuite/rust/compile/torture/intrinsics-1.rs
+ 30e89a158af99bb3b5d42b05ad13e89c  gcc/testsuite/rust/compile/torture/intrinsics-2.rs
+ 77a42b7aee1ea40d6fa8d55afaeebb59  gcc/testsuite/rust/compile/torture/intrinsics-3.rs
+ 3c2af3c0ebb986329d44b44637340dc1  gcc/testsuite/rust/compile/torture/intrinsics-4.rs
+ d9650e65226dfeb372e6d4c9e5262d66  gcc/testsuite/rust/compile/torture/intrinsics-5.rs
+ 55535b69745c992b0d99d0a96d0b2fc4  gcc/testsuite/rust/compile/torture/intrinsics-6.rs
+ bd2e81016ae54884de88e10e7254d054  gcc/testsuite/rust/compile/torture/intrinsics-7.rs
+ 6b92e09e4549b614040c36900090982e  gcc/testsuite/rust/compile/torture/intrinsics-math.rs
+ a4adc24cf95b12fa0bbeb1910a8fc8c9  gcc/testsuite/rust/compile/torture/isolated_cr_block_comment.rs
+ f34eef566cf0283bb6dca5cc9b79de49  gcc/testsuite/rust/compile/torture/isolated_cr_line_comment.rs
+ 2ae10290abbd6faa598e2013d3df97e2  gcc/testsuite/rust/compile/torture/issue-1024.rs
+ f18f0d82ed829b701618c72a93dcebe8  gcc/testsuite/rust/compile/torture/issue-1075.rs
+ 6a02898fbc08f4156a191c8207c7a182  gcc/testsuite/rust/compile/torture/issue-1432.rs
+ 406d54681d65b703831615467b4b2080  gcc/testsuite/rust/compile/torture/issue-1434.rs
+ 0a94e4e590827340ac355febfaf48a28  gcc/testsuite/rust/compile/torture/issue-1506.rs
+ 59acd39ede81cdec4c64f0fc37eb51e9  gcc/testsuite/rust/compile/torture/issue-1555.rs
+ 1ed3627ddf78b5d9f717bb653be23a13  gcc/testsuite/rust/compile/torture/issue-368.rs
+ 8f27ef33fded6a3887ae5ef5fce09c39  gcc/testsuite/rust/compile/torture/issue-808.rs
+ cc8ba82632d8b6b9ebf5d61b388342d5  gcc/testsuite/rust/compile/torture/issue-862.rs
+ e83a1d5bc8ac13fa130c0b0b55a71887  gcc/testsuite/rust/compile/torture/issue-893-2.rs
+ 1469d3f311a4830b7fc2ba42a30703a9  gcc/testsuite/rust/compile/torture/issue-893.rs
+ 29595aa1cff98b0f7c31b0ed5c6aebdf  gcc/testsuite/rust/compile/torture/lazybooleanexpr_function.rs
+ c10b4099a456471bb802b8619bf1d0ce  gcc/testsuite/rust/compile/torture/lifetime1.rs
+ 6c4d9e27b81996de7d2fe38f1889e809  gcc/testsuite/rust/compile/torture/literals1.rs
+ 5436e5021544624f5d914c619ede242c  gcc/testsuite/rust/compile/torture/loop1.rs
+ 569683530539f1513d7dfd077d8655dd  gcc/testsuite/rust/compile/torture/loop2.rs
+ 92263c30af29bc34b45c066bd9540389  gcc/testsuite/rust/compile/torture/loop3.rs
+ a5ea45ff3f424b52045901564e91727b  gcc/testsuite/rust/compile/torture/loop4.rs
+ 2a731f676b729fbdbd60950b6c1d414e  gcc/testsuite/rust/compile/torture/loop5.rs
+ 0deba5a9492af06167afd85b5aae10f7  gcc/testsuite/rust/compile/torture/loop6.rs
+ a2f062effffd93b9d4d03f11cc887052  gcc/testsuite/rust/compile/torture/loop7.rs
+ ca9dd83628017851a8b3df880ee109e4  gcc/testsuite/rust/compile/torture/macro-issue1403.rs
+ 0fe7135c253e1779307b62895e7896f6  gcc/testsuite/rust/compile/torture/macro_as_expr.rs
+ c0bfaa09dece2bd9a9a8d9ccb1a8d74a  gcc/testsuite/rust/compile/torture/match1.rs
+ f18ca58ac8c829be8dded35e104f53db  gcc/testsuite/rust/compile/torture/methods1.rs
+ 823b6eff156f670d2aad9e053ba7875d  gcc/testsuite/rust/compile/torture/methods2.rs
+ 3a32b14d3786cd73a15f20a723dbf526  gcc/testsuite/rust/compile/torture/methods3.rs
+ 537d4d6c56d0b2442c41d69f77dd5725  gcc/testsuite/rust/compile/torture/mod-nameresolve.rs
+ 447aba16aa7e276048faea7ba27a7bea  gcc/testsuite/rust/compile/torture/mod1.rs
+ eae809c284afe8f3d4ca29d7b61dfeb2  gcc/testsuite/rust/compile/torture/mod2.rs
+ a23c36b851ab81323eb71eda6f576132  gcc/testsuite/rust/compile/torture/mod3.rs
+ 8278937d0cc6eda70c0ed9f40ea2d918  gcc/testsuite/rust/compile/torture/modules/mod.rs
+ d1e08ad9924d246f8402392cdfdcf5bc  gcc/testsuite/rust/compile/torture/modules/valid_path.rs
+ 5e2f80b4dea8a468b3c354b206e9a349  gcc/testsuite/rust/compile/torture/must_use1.rs
+ 92c4f626321b278e015dff1d713d2151  gcc/testsuite/rust/compile/torture/must_use2.rs
+ 1c8f90f487042a33bb8e0acf08090e60  gcc/testsuite/rust/compile/torture/name_resolve1.rs
+ 0d384f2eff5a12ea261d549e0115dd38  gcc/testsuite/rust/compile/torture/negation_function.rs
+ 072ec96cc0b4beeeaa8ff3e1732f82e4  gcc/testsuite/rust/compile/torture/nested_fn1.rs
+ 985cd7cc223b98e9e9dbc2882d466074  gcc/testsuite/rust/compile/torture/nested_fn2.rs
+ dfa972595ce960e7bcf241361e3dbbf7  gcc/testsuite/rust/compile/torture/nested_struct1.rs
+ 767b1f4d6e5547d33f8529d8b59b3513  gcc/testsuite/rust/compile/torture/never_type1.rs
+ 814385cb7dcdc27aede29309bce0c3cd  gcc/testsuite/rust/compile/torture/not_shebang.rs
+ f4a2aa66a4c4665f1875940b26eee985  gcc/testsuite/rust/compile/torture/not_shebang_block_comment.rs
+ 9fbc5a9fa9d3c08941827115e1fd4741  gcc/testsuite/rust/compile/torture/not_shebang_comment.rs
+ 1185529fd28001be1092c9fa202f9f1d  gcc/testsuite/rust/compile/torture/not_shebang_multiline_comment.rs
+ 37c3b775f772f4708128f6027e4814a4  gcc/testsuite/rust/compile/torture/not_shebang_spaces.rs
+ 7bb7007e218d70f518b100ce80dda102  gcc/testsuite/rust/compile/torture/parameter_usage1.rs
+ dded9e8144069d4e60ad55cc51f7de67  gcc/testsuite/rust/compile/torture/parens1.rs
+ a85e34847d1f749aebfaf0c981f63b5b  gcc/testsuite/rust/compile/torture/phantom_data.rs
+ d6398d24645efaf33f81b4a0ef4191db  gcc/testsuite/rust/compile/torture/pointer1.rs
+ f0959ff1bd276d250ccc42f37bc85bdc  gcc/testsuite/rust/compile/torture/primconsts.rs
+ 86bd151b079ea074d3f82107f256da13  gcc/testsuite/rust/compile/torture/prims_struct_eq.rs
+ 3df99a5afc6aa4a159cc37b197da1f57  gcc/testsuite/rust/compile/torture/range-lang-item1.rs
+ 2142c21127d1a896420c65ec947537c7  gcc/testsuite/rust/compile/torture/raw_identifiers.rs
+ f8a99c53051766f9e444d92c260fefc1  gcc/testsuite/rust/compile/torture/raw_identifiers_keywords.rs
+ b47fc558f700188bb4d2e500abbcdc80  gcc/testsuite/rust/compile/torture/recursive_fn1.rs
+ 385fe0e0389af5f147a93864f4ff403a  gcc/testsuite/rust/compile/torture/return_function.rs
+ 42eb8d3ecf2dbf38e572bb4467d2620c  gcc/testsuite/rust/compile/torture/scoping1.rs
+ 884af9078907e478ec37cc09ebee07c0  gcc/testsuite/rust/compile/torture/self_type1.rs
+ 214b4cb816cfa2765943b5abb1ca5b25  gcc/testsuite/rust/compile/torture/shadow1.rs
+ 7160f0834357ccab131fad8abb3f56a3  gcc/testsuite/rust/compile/torture/shadow2.rs
+ 60df959f51b786e01de5ae4a395febc0  gcc/testsuite/rust/compile/torture/shebang.rs
+ c69ed76a8220e239b633155dac6d42de  gcc/testsuite/rust/compile/torture/shebang_plus_attr.rs
+ 5338d7ab3bfddd125f08e26dd879ff83  gcc/testsuite/rust/compile/torture/shebang_plus_attr2.rs
+ b34ff12bc54ecc479386b13aae00e3e0  gcc/testsuite/rust/compile/torture/static_function.rs
+ a5acfed74ed9a3e1e49ae8edfbcc2358  gcc/testsuite/rust/compile/torture/static_var1.rs
+ 3364b7fcad92499312b0abc1451e31fd  gcc/testsuite/rust/compile/torture/stmt_with_block1.rs
+ d8d918da82d5e21f625668fc7ba949ec  gcc/testsuite/rust/compile/torture/str1.rs
+ 287e52ca3f72a2017abca46f03e69fa7  gcc/testsuite/rust/compile/torture/struct_access1.rs
+ ea8bfc82833f20ff34dcc6f6bc27445a  gcc/testsuite/rust/compile/torture/struct_base_init_1.rs
+ 6f3237cdeeb445f04937aca5a522bcd2  gcc/testsuite/rust/compile/torture/struct_decl.rs
+ 51c46aeb3e268e02cd296e9df9588d7d  gcc/testsuite/rust/compile/torture/struct_init.rs
+ 3b2b873fcdf89be79a3bfc603b6d060e  gcc/testsuite/rust/compile/torture/struct_init_10.rs
+ b2a3b370e68df47caf0800896c52d14d  gcc/testsuite/rust/compile/torture/struct_init_11.rs
+ 5944f7cd26a3e2a9fc4678d1b0f2f354  gcc/testsuite/rust/compile/torture/struct_init_2.rs
+ 3a9072e81232f373b7d2151f7b8f0534  gcc/testsuite/rust/compile/torture/struct_init_3.rs
+ ee7382b0f606db87f9c72e296c629917  gcc/testsuite/rust/compile/torture/struct_init_4.rs
+ 07826d147baa6c252be0edca8bf09e2d  gcc/testsuite/rust/compile/torture/struct_init_5.rs
+ 282583f0420a6552bb36304796342bac  gcc/testsuite/rust/compile/torture/struct_init_6.rs
+ 98289abf829d048df50a67c6babdffe5  gcc/testsuite/rust/compile/torture/struct_init_7.rs
+ 2ca1ceb27b8f20b6041cf81949f17264  gcc/testsuite/rust/compile/torture/struct_init_8.rs
+ a880259cc4562c6b06c0ff44af84c26e  gcc/testsuite/rust/compile/torture/struct_init_9.rs
+ bf6541107d91ebc0ef79cd469d3f4bee  gcc/testsuite/rust/compile/torture/top_attr.rs
+ 9dde0e932942e75b187d016c3dca769b  gcc/testsuite/rust/compile/torture/traits1.rs
+ 61886dbe934d68917b4abea481d0bd11  gcc/testsuite/rust/compile/torture/traits10.rs
+ 0e1d074590d2b9f2a4070df6ac25de28  gcc/testsuite/rust/compile/torture/traits11.rs
+ f148ce4b959481c576f408f608d687f7  gcc/testsuite/rust/compile/torture/traits12.rs
+ 6a3a66ef846a5c89d3e80d13d9fcc697  gcc/testsuite/rust/compile/torture/traits13.rs
+ 1adf31d9a3b76aca396add39f6d6e12f  gcc/testsuite/rust/compile/torture/traits14.rs
+ c325cdd110ec1d422415dda4567f251a  gcc/testsuite/rust/compile/torture/traits15.rs
+ efc570afb4b460491c3102f105a68931  gcc/testsuite/rust/compile/torture/traits16.rs
+ 1f0dd0ee2a799261b148bd6a45619362  gcc/testsuite/rust/compile/torture/traits17.rs
+ 75e5c2bacc65732626a01633b3e7b3a3  gcc/testsuite/rust/compile/torture/traits18.rs
+ a6812e87a9202503281307ce080d893d  gcc/testsuite/rust/compile/torture/traits19.rs
+ 02a30512b7b3a8d6a324aae8719cc7b5  gcc/testsuite/rust/compile/torture/traits2.rs
+ ee9caaa9c3d894d50defa1f88ceba4ca  gcc/testsuite/rust/compile/torture/traits3.rs
+ 9900ba21a1c453ddb90376bb8d7bde92  gcc/testsuite/rust/compile/torture/traits4.rs
+ 9d1294e45612a40121e20745e4ec735e  gcc/testsuite/rust/compile/torture/traits5.rs
+ 126358775decd06c2b069a49988a4bb6  gcc/testsuite/rust/compile/torture/traits6.rs
+ 64a5f89eaf4ab37e8bb6b27b3afed816  gcc/testsuite/rust/compile/torture/traits7.rs
+ 7258b304687397410cd9155ed0395098  gcc/testsuite/rust/compile/torture/traits8.rs
+ 5f7941c9e4d5e70e62d76b90ad9c0fa3  gcc/testsuite/rust/compile/torture/traits9.rs
+ 0c701362d19dae2a9ae6365ac8b0a3b2  gcc/testsuite/rust/compile/torture/transmute-size-check-1.rs
+ dccf1bb9ffafc1bd7b1b0bf1c7c7a61a  gcc/testsuite/rust/compile/torture/transmute1.rs
+ 856ba6b52cb97f89365a34dc844b2383  gcc/testsuite/rust/compile/torture/tuple1.rs
+ a32be8ab02d584ff702a43f23ad95934  gcc/testsuite/rust/compile/torture/tuple2.rs
+ d4d906776cca4aae5ee85d930cf4ef1c  gcc/testsuite/rust/compile/torture/tuple3.rs
+ 09cb66c0ec4c5093bd43e3dcb0a5fca7  gcc/testsuite/rust/compile/torture/tuple_enum_variants.rs
+ bae016c82821d665347de4f15da7e8c4  gcc/testsuite/rust/compile/torture/tuple_field_access.rs
+ f7b292d171cb3aa823c4cf623afee37e  gcc/testsuite/rust/compile/torture/tuple_function.rs
+ 5a8d212733102f4030263d401808799e  gcc/testsuite/rust/compile/torture/tuple_index.rs
+ ebe873609098fe274f6bfc9bcfee24f0  gcc/testsuite/rust/compile/torture/tuple_struct1.rs
+ 82b8dcf0ca459ffcb7c908865ec096ce  gcc/testsuite/rust/compile/torture/tuple_struct2.rs
+ c85b4725fd765fa8f11f621592503d4c  gcc/testsuite/rust/compile/torture/tuple_struct_unit.rs
+ 3e8efce6a9f5b4d962fc29080cc6d3ce  gcc/testsuite/rust/compile/torture/tuple_struct_unused.rs
+ 91653d43d26472196651c1eb02a9236c  gcc/testsuite/rust/compile/torture/type-alias1.rs
+ 1a3c0471582bf7ac4e909100ef47aeb9  gcc/testsuite/rust/compile/torture/type-alias2.rs
+ df45b6a3410d2f09b93837757f554415  gcc/testsuite/rust/compile/torture/type_infer1.rs
+ 5f4205c009b2ccf860b3ba17510c2fbc  gcc/testsuite/rust/compile/torture/type_infer2.rs
+ 49b75d1bb6dbc6bd60b0a47ec849da30  gcc/testsuite/rust/compile/torture/type_infer3.rs
+ ec86251919e467ab5186531cd6a92662  gcc/testsuite/rust/compile/torture/type_infer4.rs
+ 9413710487c9cd03848ff0631f1c45f2  gcc/testsuite/rust/compile/torture/type_infer5.rs
+ 9a1d3397cb0d4280760f707a3e3ec180  gcc/testsuite/rust/compile/torture/type_infer6.rs
+ 7eb873e0558dd7b8a986cc4f978dff4c  gcc/testsuite/rust/compile/torture/unary_operators.rs
+ a7106ab3e5a08e2b58b4f3d59f6c16bb  gcc/testsuite/rust/compile/torture/undended-string-1.rs
+ b681f040c3d1e80af3f41d1b267db483  gcc/testsuite/rust/compile/torture/undended-string-2.rs
+ 7496356346ddb12a707c608a7ca122d5  gcc/testsuite/rust/compile/torture/underscore_id.rs
+ 97a2905e8fd8b85c8fe64e4b83babb3e  gcc/testsuite/rust/compile/torture/union.rs
+ 103a196af16a2550139988edb7794ae8  gcc/testsuite/rust/compile/torture/union_union.rs
+ 22f979b621b23664c1a0c4a7920e6738  gcc/testsuite/rust/compile/torture/unit_type1.rs
+ c460107b92fbee448a060097a3202705  gcc/testsuite/rust/compile/torture/unit_type2.rs
+ aea52178c5e92e622fa835425e3334a9  gcc/testsuite/rust/compile/torture/unit_type3.rs
+ 84d674e0ec8bae6f18ac4d048b46ed04  gcc/testsuite/rust/compile/torture/unit_type4.rs
+ ad40fa8d55b548571a10a7820592e0d4  gcc/testsuite/rust/compile/torture/unit_type5.rs
+ 2a38063c216212d1b2623241cd8047a2  gcc/testsuite/rust/compile/torture/unsafe1.rs
+ bb916dc7383dfffe2bd083ac6d8b5520  gcc/testsuite/rust/compile/torture/unsafe2.rs
+ b5f9a01c4ceb113cef5f95a9be82a126  gcc/testsuite/rust/compile/torture/unsafe3.rs
+ 9601c13a3d8bb391d20b36ffee880e60  gcc/testsuite/rust/compile/torture/unsafe4.rs
+ 4da7a1cfccf50708481d6149ee3dc497  gcc/testsuite/rust/compile/torture/unused.rs
+ 36952c647d326deae7313e17cfa35c71  gcc/testsuite/rust/compile/torture/unused1.rs
+ 011e23a9b276286f198468298bc8fb7c  gcc/testsuite/rust/compile/torture/unused_struct.rs
+ 9fcdc00fb6fbe7500a819719c27a59e1  gcc/testsuite/rust/compile/torture/unused_struct_field.rs
+ e29cac3aeb678adaa01b17ac8e9018f8  gcc/testsuite/rust/compile/torture/usize1.rs
+ 086c8f2639392f24c1a8d60145c15f47  gcc/testsuite/rust/compile/torture/very-broken-attr-string.rs
+ ae85bb383c361b590f3be526db37809d  gcc/testsuite/rust/compile/torture/while_function.rs
+ 682c2e812a8eb6c2654636b2d9f5e708  gcc/testsuite/rust/compile/traits1.rs
+ 2f66e6e65684eec3b8f6e8d19bd89497  gcc/testsuite/rust/compile/traits10.rs
+ 57b48a7f9d82ae612b94f5fe2b64635d  gcc/testsuite/rust/compile/traits11.rs
+ 82fc68d99ebab045d9306b3befd1de3d  gcc/testsuite/rust/compile/traits12.rs
+ 3ec60cdc70087763f8a6b9f5491a7cba  gcc/testsuite/rust/compile/traits2.rs
+ 47109fa02c7934a2286e7b9afcd21b9b  gcc/testsuite/rust/compile/traits3.rs
+ 7b0ea26826a64260beaa6c066294cfbb  gcc/testsuite/rust/compile/traits4.rs
+ 5580c59d7a34116881155f5a40b2874f  gcc/testsuite/rust/compile/traits5.rs
+ 78afe0124df56d84c4424f16f0c03925  gcc/testsuite/rust/compile/traits6.rs
+ 1187e7931d9b8e96c01c0a199187d634  gcc/testsuite/rust/compile/traits7.rs
+ caca8ba49d38e8776ebeeb71ee717af8  gcc/testsuite/rust/compile/traits8.rs
+ c7aca508f6a3188934a567c032878571  gcc/testsuite/rust/compile/traits9.rs
+ d0dd22fa3a3a512431403c19da377d75  gcc/testsuite/rust/compile/tuple1.rs
+ a1ac7edeb898356a609ab5f448f8106d  gcc/testsuite/rust/compile/tuple_struct1.rs
+ 848b05e79ad9d73952777d93b3b97bfb  gcc/testsuite/rust/compile/tuple_struct2.rs
+ 9fca480c74067c91bbbc66040e8a7069  gcc/testsuite/rust/compile/tuple_struct3.rs
+ 146a99b5e95da275ac9f3aa327f5113f  gcc/testsuite/rust/compile/type-alias1.rs
+ 043a44c5e8202e9d719224052b7617f8  gcc/testsuite/rust/compile/type-bindings1.rs
+ c6a783e86d3f6445b3bc4e9a98aa9474  gcc/testsuite/rust/compile/unary_negation.rs
+ 9794246815a1ee0f8e2abdc5de009235  gcc/testsuite/rust/compile/unary_not.rs
+ 6557ffe6f5f3551bd723c9305f514ffb  gcc/testsuite/rust/compile/unconstrained_type_param.rs
+ 6895f64e4c1c706d09e540e4b97751d5  gcc/testsuite/rust/compile/unicode_escape.rs
+ c0f3b70f1f30585a1ddb81a01cd7784b  gcc/testsuite/rust/compile/unsafe1.rs
+ b776e58ebafd9fbfcc5c2009eb57aa05  gcc/testsuite/rust/compile/unsafe10.rs
+ ffd0086398c13dd461c60ab251dea96e  gcc/testsuite/rust/compile/unsafe11.rs
+ 5575f8e36d7f8fc301e84dfb3a182fa3  gcc/testsuite/rust/compile/unsafe2.rs
+ 40a486ea3c004b99b422ac2e7710de83  gcc/testsuite/rust/compile/unsafe3.rs
+ 4e9524c05d08f52841deb8cd1659ea8a  gcc/testsuite/rust/compile/unsafe4.rs
+ 45e71f540ac5e3c0f5540fe1226f5e64  gcc/testsuite/rust/compile/unsafe5.rs
+ dc6dd39f63dac8868fe265acb5c3a242  gcc/testsuite/rust/compile/unsafe6.rs
+ 9746952d340627b4fb744b9ec1cee076  gcc/testsuite/rust/compile/unsafe7.rs
+ f840f4287f5740ac4854b2f4195dbfbe  gcc/testsuite/rust/compile/unsafe8.rs
+ 75e5c1e5c0ca3975f202b6d2fcce3e87  gcc/testsuite/rust/compile/unsafe9.rs
+ 7c830dd0a2ec3525c6da4bc67b44f331  gcc/testsuite/rust/compile/unterminated_c_comment.rs
+ a96e29cf3f874eaf027ffb3caec83fcf  gcc/testsuite/rust/compile/use_1.rs
+ 0c7603391620df4575d36dd9569f4aa5  gcc/testsuite/rust/compile/usize1.rs
+ 8ddf83f70986301e8f5a30b5334c5325  gcc/testsuite/rust/compile/variadic.rs
+ c7d793e2850d119364ecbefff6f25e6a  gcc/testsuite/rust/compile/xfail/lifetime_param.rs
+ f219c902f8bbb7747064aa57b2247406  gcc/testsuite/rust/compile/xfail/struct_field_vis.rs
+ 5c79e5474e1afdd64e3534ebdf7e2f1a  gcc/testsuite/rust/compile/xfail/xfail.exp
+ cf84f07cfe0ecfb071b976dc80fea9b2  gcc/testsuite/rust/debug/chartype.rs
+ faa029c0320aae395036255789ed154c  gcc/testsuite/rust/debug/custom_link_section.rs
+ 8b78a47f46fe2e406d55798ac87c0f94  gcc/testsuite/rust/debug/debug.exp
+ 0f03e1c966bc34da8ffe7f4e31810852  gcc/testsuite/rust/debug/i8u8.rs
+ 19340915d91d271cd4752d446da432a3  gcc/testsuite/rust/debug/lang.rs
+ 6e59b3f6a3efdac0010ff67baf812cd3  gcc/testsuite/rust/debug/no_mangle.rs
+ 4f4406b9c3ea1e1d1fe142e73f7d81dc  gcc/testsuite/rust/debug/oldlang.rs
+ 533df5d9904c8efee02c94532338efc2  gcc/testsuite/rust/debug/tuple.rs
+ d5d8788f3a670487fb051714384ab2a1  gcc/testsuite/rust/debug/win64-abi.rs
+ 5c99e1c6fd7e0202ea7e1af65bc041c5  gcc/testsuite/rust/execute/torture/atomic_load.rs
+ 0e2d7b149a24c52ed94b7a4e96b541df  gcc/testsuite/rust/execute/torture/atomic_store.rs
+ 64ec49dcf61c1ec23016e5eb7627a5b7  gcc/testsuite/rust/execute/torture/block_expr1.rs
+ c800fbae67bc6ef12faa0ab8ea94f353  gcc/testsuite/rust/execute/torture/builtin_macro_cfg.rs
+ 63f96907cd26ccb3340ef0c2c878e9f8  gcc/testsuite/rust/execute/torture/builtin_macro_concat.rs
+ eadf2d96e16280adc2908c59779eeaea  gcc/testsuite/rust/execute/torture/builtin_macro_env.rs
+ 2d5fdfa23c867d8d56de8795dbaa27fb  gcc/testsuite/rust/execute/torture/builtin_macro_include_bytes.rs
+ 81eb686de739638a963a966564f3d504  gcc/testsuite/rust/execute/torture/builtin_macro_include_str.rs
+ 1740a6551be2debf690fb8b4d348dba6  gcc/testsuite/rust/execute/torture/builtin_macro_line.rs
+ f9c6aea5aadcba5881619872e5f36d2b  gcc/testsuite/rust/execute/torture/builtin_macros1.rs
+ d1720189c3cdc0692c05853f4bcdd396  gcc/testsuite/rust/execute/torture/builtin_macros3.rs
+ ccc2591f70377149f4aa4e23d900dba6  gcc/testsuite/rust/execute/torture/cfg1.rs
+ 976fd017b8b7b7382385b4f64820e968  gcc/testsuite/rust/execute/torture/cfg2.rs
+ 9783ede29592db2668bfdad04aa365bc  gcc/testsuite/rust/execute/torture/cfg3.rs
+ 7982b994d6eb88a809b882ab3b263b33  gcc/testsuite/rust/execute/torture/cfg4.rs
+ 8686a31954a6b1f67d910f849e9edc68  gcc/testsuite/rust/execute/torture/cfg5.rs
+ ed4185ceeee22123dfda5f08cb6faaac  gcc/testsuite/rust/execute/torture/closure1.rs
+ 891d371ce7307ed663dba83fe471c7ae  gcc/testsuite/rust/execute/torture/closure2.rs
+ ded7df1faf9f3ed6ecf4d0ee91e76c34  gcc/testsuite/rust/execute/torture/closure3.rs
+ 8026cbb3fd4dfd6bfc7bccab1ebc9eef  gcc/testsuite/rust/execute/torture/coercion1.rs
+ 083fbabc67425e06f66a5f2f1c9cb189  gcc/testsuite/rust/execute/torture/coercion2.rs
+ 16aaa17474f319d84939e58bd3191fe6  gcc/testsuite/rust/execute/torture/const_fold1.rs
+ 241a2be1d8747c41bb6696abef8fca56  gcc/testsuite/rust/execute/torture/const_fold2.rs
+ 3b560db225bda46247a4ef027ce9fa36  gcc/testsuite/rust/execute/torture/copy_nonoverlapping1.rs
+ 15aeecda0667a9b6fb7dc5fa85ca5d7d  gcc/testsuite/rust/execute/torture/decl_macro1.rs
+ 1d8ebbc049fb21f9609e1de2d2d094ac  gcc/testsuite/rust/execute/torture/decl_macro2.rs
+ 2ca84627b7b27d5e1c7889f6997d31c1  gcc/testsuite/rust/execute/torture/decl_macro3.rs
+ b9d5acfe96556f242a09a6982797cd8b  gcc/testsuite/rust/execute/torture/decl_macro4.rs
+ f3e8fb4d74a3a31041cfcb2286645769  gcc/testsuite/rust/execute/torture/empty_main.rs
+ a6af49602e22142e4505b8363f292958  gcc/testsuite/rust/execute/torture/execute.exp
+ c579ac738ba95f67c2c7d8a745f30d74  gcc/testsuite/rust/execute/torture/exit_error.rs
+ ab6af2afb853cd3748a8320e0f4d16f3  gcc/testsuite/rust/execute/torture/extern_mod4.rs
+ 51c98fe37862ab18dafa4be9e1fcc95e  gcc/testsuite/rust/execute/torture/func1.rs
+ fab98ca34ae058c9972166c501a700ec  gcc/testsuite/rust/execute/torture/helloworld1.rs
+ dd9d5a465f08d85c74f79bf57191b889  gcc/testsuite/rust/execute/torture/helloworld2.rs
+ d1bf4d03901b291d3115f4895ffb2fb7  gcc/testsuite/rust/execute/torture/include.txt
+ 91e0baf5b9bfa1785d93f2b0c40053ef  gcc/testsuite/rust/execute/torture/index1.rs
+ 4bd18d688c6f0d38d87ba0dac936a30c  gcc/testsuite/rust/execute/torture/issue-1120.rs
+ b212b1454a50fe174a4c304f4353b304  gcc/testsuite/rust/execute/torture/issue-1133.rs
+ 2b0238fe130e4a119d59dd9189fa33e3  gcc/testsuite/rust/execute/torture/issue-1198.rs
+ 205a284536c62257237cafba849510a6  gcc/testsuite/rust/execute/torture/issue-1231.rs
+ fc95f4646ecbb6b6e0f731c8b206b6cc  gcc/testsuite/rust/execute/torture/issue-1232.rs
+ 56fdf96a1ac2ac86014a925989a14467  gcc/testsuite/rust/execute/torture/issue-1249.rs
+ cfa8926587505f8af2111bcd3a191cb4  gcc/testsuite/rust/execute/torture/issue-1436.rs
+ 341edb65f410f5f6fff0dc53a5274b28  gcc/testsuite/rust/execute/torture/issue-1496.rs
+ 2d90fc699061177d598ee33b1156b4a1  gcc/testsuite/rust/execute/torture/issue-1720-2.rs
+ da0a43640c4b6dd0c4ceefe726530195  gcc/testsuite/rust/execute/torture/issue-1720.rs
+ d5dfb84c1b0e790f84f04a10115541f9  gcc/testsuite/rust/execute/torture/issue-647.rs
+ 95cef428e12c459cfe160fc0b8b328c6  gcc/testsuite/rust/execute/torture/issue-845.rs
+ 1ef2f7782407c899ddd0a8aa996df603  gcc/testsuite/rust/execute/torture/issue-851.rs
+ dae9050c4ff636de31bd021ef3130176  gcc/testsuite/rust/execute/torture/issue-858.rs
+ 449e42630eb5fd571755658ebbb341c4  gcc/testsuite/rust/execute/torture/issue-976.rs
+ a7f4a565f46d8c8589434308e7968386  gcc/testsuite/rust/execute/torture/issue-995.rs
+ e5d4fd47103c9b2ec08ec98416082eb9  gcc/testsuite/rust/execute/torture/let-pattern-1.rs
+ b9e7dd193296598753c75fbfaae447bd  gcc/testsuite/rust/execute/torture/loop-condition-eval.rs
+ d7e1088b7c9ae3714d6c9ac6aeb13b18  gcc/testsuite/rust/execute/torture/macro-issue1426.rs
+ fef7dfee1986a4975d9f025b245800a7  gcc/testsuite/rust/execute/torture/macros1.rs
+ 31d0eb8ff0aaf8e4812d0b436cb2d29f  gcc/testsuite/rust/execute/torture/macros10.rs
+ 9e148fef1f01dcaf28d627321fe8632f  gcc/testsuite/rust/execute/torture/macros11.rs
+ 6ddcf4beca028d3c8ab4ae7105875f48  gcc/testsuite/rust/execute/torture/macros12.rs
+ ae9e9ba30ebd0d0bfa3c86b0a22f0dde  gcc/testsuite/rust/execute/torture/macros13.rs
+ 406cd9f64ec3e5088ddbb7652f5ea817  gcc/testsuite/rust/execute/torture/macros14.rs
+ 8ad6983cf3ef2c54ae76580252f1297a  gcc/testsuite/rust/execute/torture/macros16.rs
+ da3cc94e0c8aa9565e49d1bd27995cf8  gcc/testsuite/rust/execute/torture/macros17.rs
+ 0d871981ac386df32d6bb372828f424c  gcc/testsuite/rust/execute/torture/macros18.rs
+ 6e3068ee92dcbcdee53be16df2a46590  gcc/testsuite/rust/execute/torture/macros19.rs
+ 9280e6a24c6a4499e7b669ed932e5d6f  gcc/testsuite/rust/execute/torture/macros2.rs
+ b281220ae153f399dd51618f42474958  gcc/testsuite/rust/execute/torture/macros20.rs
+ a21c287a31b6ae6ae179b1e5dfa2ac1e  gcc/testsuite/rust/execute/torture/macros21.rs
+ 4275d231e07ef7914d5814da80620035  gcc/testsuite/rust/execute/torture/macros22.rs
+ 81c410de742498faecf737bc8a246b60  gcc/testsuite/rust/execute/torture/macros23.rs
+ 67746d30dadbf3035d2d8852c7dbc69c  gcc/testsuite/rust/execute/torture/macros24.rs
+ eadfe7cba5cb9c5ec331deb7f77f0dbc  gcc/testsuite/rust/execute/torture/macros25.rs
+ 105c0886cf1eed36dc2251a200d0211b  gcc/testsuite/rust/execute/torture/macros26.rs
+ c3c01ded1bb615ed722fd3e375605462  gcc/testsuite/rust/execute/torture/macros27.rs
+ f9042508ff6bba2621114e851cbadb4e  gcc/testsuite/rust/execute/torture/macros28.rs
+ ad8252f2c0460ce642b47245e78b9f47  gcc/testsuite/rust/execute/torture/macros29.rs
+ c4ca94d1444b919b584963996a8b5c93  gcc/testsuite/rust/execute/torture/macros3.rs
+ b57385642c6295090e4958c5c061efdb  gcc/testsuite/rust/execute/torture/macros30.rs
+ 60878b670d061706ef2d05930fcec2bd  gcc/testsuite/rust/execute/torture/macros31.rs
+ 402b3c904e6681716d7e1f2a8ded8bc7  gcc/testsuite/rust/execute/torture/macros4.rs
+ f987c9a3d4082272d0fdffecda3a5982  gcc/testsuite/rust/execute/torture/macros5.rs
+ 20d3279749c0860156f1e8398eeffedb  gcc/testsuite/rust/execute/torture/macros6.rs
+ 52d5a486adcbb425f6b447d97cd3d1a2  gcc/testsuite/rust/execute/torture/macros7.rs
+ addb70cf1de08173fd0c2abd2b1b0aff  gcc/testsuite/rust/execute/torture/macros8.rs
+ a162d48d44f2ab3e7366e4fcd9aba1d3  gcc/testsuite/rust/execute/torture/macros9.rs
+ 14d4601e2d037806196aad97cb37c69f  gcc/testsuite/rust/execute/torture/match1.rs
+ bc6b669a3a8b1821d1dd4520934053ef  gcc/testsuite/rust/execute/torture/match2.rs
+ bb8cc04aaa6e095f9c9dab335699a42e  gcc/testsuite/rust/execute/torture/match3.rs
+ 70b31334899ba1dcef9558a5080a554d  gcc/testsuite/rust/execute/torture/match_bool1.rs
+ f16dcffd54381b1ed25a88227c4b5ad7  gcc/testsuite/rust/execute/torture/match_byte1.rs
+ 5da0a3231adcc1d108f37896717bf936  gcc/testsuite/rust/execute/torture/match_char1.rs
+ 05f39916392f58fb43d3649618db0a9d  gcc/testsuite/rust/execute/torture/match_int1.rs
+ 3951dec402422d29fa7c4826dc443f65  gcc/testsuite/rust/execute/torture/match_loop1.rs
+ 12404878b44abb6ea00fbaefc573cc2b  gcc/testsuite/rust/execute/torture/match_range1.rs
+ d53a9a5ff7302a95bec132cd6bba3962  gcc/testsuite/rust/execute/torture/match_range2.rs
+ b6c1253a40c7a21db9fac6062ae50a91  gcc/testsuite/rust/execute/torture/match_tuple1.rs
+ 7985e85176bb59d44b2aac56f2ca81c0  gcc/testsuite/rust/execute/torture/method1.rs
+ e794045453aa2eb5f21f42854f74be3e  gcc/testsuite/rust/execute/torture/method2.rs
+ 6b1ebe9e1b4d6b68c543339bea32b3bf  gcc/testsuite/rust/execute/torture/method3.rs
+ f82ae27de1147bc8bd0d837c9804bd37  gcc/testsuite/rust/execute/torture/method4.rs
+ 3f13ddef20c0f036bfffdb2d02bc5334  gcc/testsuite/rust/execute/torture/mod1.rs
+ deec28fbd0fd7d5a890d0905cbfa3d3a  gcc/testsuite/rust/execute/torture/modules/mod.rs
+ ecb232f559c79d5441b6163c26681cd0  gcc/testsuite/rust/execute/torture/operator_overload_1.rs
+ 3d5822b88b8630de592c33ef90111463  gcc/testsuite/rust/execute/torture/operator_overload_10.rs
+ 96008bcc4562b244fdb4ef04ab2bf753  gcc/testsuite/rust/execute/torture/operator_overload_11.rs
+ dc1c062dcf6dede5d67de1866ce79836  gcc/testsuite/rust/execute/torture/operator_overload_12.rs
+ d449ce540925e5526a7e27c15a3da283  gcc/testsuite/rust/execute/torture/operator_overload_2.rs
+ 05283be71e9d7983529b93e421d8c1b9  gcc/testsuite/rust/execute/torture/operator_overload_3.rs
+ de0b204acd76189fafd44d7cb68c841b  gcc/testsuite/rust/execute/torture/operator_overload_4.rs
+ fb4c16a7a5ab5247c2e5a05c355e21b3  gcc/testsuite/rust/execute/torture/operator_overload_5.rs
+ 3cfc9048679c832a39f8bc94ce282d44  gcc/testsuite/rust/execute/torture/operator_overload_6.rs
+ 9cee3c00e0ee366c710a1876d163fb8b  gcc/testsuite/rust/execute/torture/operator_overload_7.rs
+ c8d90610390a9e8290842955225f4e18  gcc/testsuite/rust/execute/torture/operator_overload_8.rs
+ 0977ef8530ad97b436a3142098c3783c  gcc/testsuite/rust/execute/torture/operator_overload_9.rs
+ b1bd8293d4d79d471bcee8c9628e98f8  gcc/testsuite/rust/execute/torture/overflow1.rs
+ 62c4c68d5875929f5e504abf70063451  gcc/testsuite/rust/execute/torture/prefetch_data.rs
+ 13009faeb38b2336b91d761d61b04d7b  gcc/testsuite/rust/execute/torture/slice-magic.rs
+ 3ba73c3441ab9a44e7c9ad620ef1964b  gcc/testsuite/rust/execute/torture/slice-magic2.rs
+ 99809d3ee18251feb0df53b877502bd8  gcc/testsuite/rust/execute/torture/slice1.rs
+ b36fb838590dd8ea3f845806f4e75c21  gcc/testsuite/rust/execute/torture/str-layout1.rs
+ d45464967a452ff175b27ff3b0890b31  gcc/testsuite/rust/execute/torture/str-zero.rs
+ 2fda52aaa37b9b006b6d424b02dfe404  gcc/testsuite/rust/execute/torture/trait1.rs
+ 1d768366902ffe5addfbb69b73dc0d30  gcc/testsuite/rust/execute/torture/trait10.rs
+ 3207164e7751c55823ac405a20939387  gcc/testsuite/rust/execute/torture/trait11.rs
+ 27774fa1b7ea73de620cd5def2d6b072  gcc/testsuite/rust/execute/torture/trait12.rs
+ 6aebe724a5238bb40165b3409b34e415  gcc/testsuite/rust/execute/torture/trait13.rs
+ 16b27397ce9d3347134ef2bc95ad106d  gcc/testsuite/rust/execute/torture/trait2.rs
+ 46649179f30403b0d2b779226c0bd7ad  gcc/testsuite/rust/execute/torture/trait3.rs
+ 775b4317d24bde14b7856401ea36e694  gcc/testsuite/rust/execute/torture/trait4.rs
+ 842ddbb8a5483e5672bd89ed4f8f91d3  gcc/testsuite/rust/execute/torture/trait5.rs
+ bcaf06f8bcd75ea28222070f211c2d67  gcc/testsuite/rust/execute/torture/trait6.rs
+ dfcdf6be2a8267bda652680fc80a6bd9  gcc/testsuite/rust/execute/torture/trait7.rs
+ 7594cc7770f142c4a252dd6dedac1764  gcc/testsuite/rust/execute/torture/trait8.rs
+ 5903779d64c41d251d6a0d5d0f6cbc61  gcc/testsuite/rust/execute/torture/trait9.rs
+ 41320ba64d17b64a8f623d6236beb1ff  gcc/testsuite/rust/execute/torture/transmute1.rs
+ ca0f8ca42068c9fdfd0646e6761950a1  gcc/testsuite/rust/execute/torture/wrapping_op1.rs
+ 317f91022744be5cf3fc96e19d1c1c00  gcc/testsuite/rust/execute/torture/wrapping_op2.rs
+ 8747cbe8301698563c21abf6609a6c44  gcc/testsuite/rust/execute/xfail/macro1.rs
+ ffa2bd6f2a9efb48af0e98e648eef6ac  gcc/testsuite/rust/link/generic_function_0.rs
+ 3fa6de3e1854add22494b3364b824cfc  gcc/testsuite/rust/link/generic_function_1.rs
+ 92cd980faacaf17a151a1a0158ad51d6  gcc/testsuite/rust/link/link.exp
+ e8f8000787067fbf63460ed56e1fd29e  gcc/testsuite/rust/link/simple_function_0.rs
+ 935c741fe66a7107d877188eb7365214  gcc/testsuite/rust/link/simple_function_1.rs
+ 06f68dc4a7ab6af5ed722d9ddcda10ff  gcc/testsuite/rust/link/trait_import_0.rs
+ b66e37c99da334fd847ffc841b7543ce  gcc/testsuite/rust/link/trait_import_1.rs
  58841d4b35f235992494de514b3a35c4  gcc/testsuite/selftests/aarch64/times-two.rtl
  2f493b012ca0548db4706319bb145b02  gcc/testsuite/selftests/asr_div1.rtl
  448882dffdd97db42881f626d9a955a5  gcc/testsuite/selftests/bb-index.rtl
*************** ef1dfa4fe7728165f3365de53d9c6177  gcc/te
*** 91548,91770 ****
  215297636661033a197dd0628d1dc044  gcc/testsuite/selftests/note-insn-deleted.rtl
  cd3354c77105e0720cfab6100803d9cf  gcc/testsuite/selftests/note_insn_basic_block.rtl
  c0b991692c06f34bf7f8673802e7b155  gcc/testsuite/selftests/repeat.rtl
  759df2498a0496873d40f6e066a84048  gcc/testsuite/selftests/simple-cse.rtl
  54b496abd7df06d1a8671978482ce8c9  gcc/testsuite/selftests/symbol-ref.rtl
  513d3d48c332f420096cf4860afd5f9c  gcc/testsuite/selftests/x86_64/call-insn.rtl
  5fb2390505ce446a223d21f02b332874  gcc/testsuite/selftests/x86_64/copy-hard-reg-into-frame.rtl
  e42076aeff1c5ac155a88db5b1993d38  gcc/testsuite/selftests/x86_64/times-two.rtl
  195d431640249dac1928ced4d93ecb76  gcc/testsuite/selftests/x86_64/unspec.rtl
! 26ab8b9abeba30ee380b241d856cf154  gcc/timevar.cc
! 6582a8a5ab155d40382c5a4b9da48f83  gcc/timevar.def
! 35c3e35eee6c3dd96a01cee259df20cb  gcc/timevar.h
! 5e23f8ce7afb4ed1e1009ed3219fa2b4  gcc/toplev.cc
! be4e48733451a10d0a26b631d65e05bf  gcc/toplev.h
! 246459c20938354e4cfe062884802c2c  gcc/tracer.cc
! 8ea65651a79372d2effa046b611dbde1  gcc/tracer.h
! a1093b7b82e90c0dd6456268aa31621d  gcc/trans-mem.cc
! cabad81a3b1ae37ee86359e588d98084  gcc/trans-mem.h
! b6cd8503e8e729887a888e71c4c83388  gcc/tree-affine.cc
! d706f275e815b64b84a5d17ace94dfe1  gcc/tree-affine.h
! e193da775481c3e0f0f53f8b068842f8  gcc/tree-call-cdce.cc
! ace1b134f184ac01d539ba647cb7a9fb  gcc/tree-cfg.cc
! 5e264bf7338d9355becf920736f480a0  gcc/tree-cfg.h
! 72f00c7f7591ce4a752bef21fe1956d3  gcc/tree-cfgcleanup.cc
! 807a86834fad748a2be8d13d39cde258  gcc/tree-cfgcleanup.h
! 45976a7b0f8b677cfc8aba8470270dc1  gcc/tree-chrec.cc
! a2daa87c3a6e418c66574ac39c4b15e0  gcc/tree-chrec.h
! 2be27b22e3169b45888e9b65dabe685b  gcc/tree-complex.cc
! df961ddd006ed4d7ac5a75e47f26773d  gcc/tree-core.h
! c626668ce1384f088e4e25a70aec8b9f  gcc/tree-data-ref.cc
! a949c26e25237c08b9ccd6fe9b8b9bc5  gcc/tree-data-ref.h
! 2b823bfa5d526de1e9c434480c0ec1a1  gcc/tree-dfa.cc
! 0b6bc9f4562b6d4d959636f818032072  gcc/tree-dfa.h
! 3ecf9627752c6e32c3696dd7553f1b9b  gcc/tree-diagnostic-path.cc
! 1c96d3d3bada289515c660e741856adf  gcc/tree-diagnostic.cc
! 2ff390cffec4ce4eef19e05125c9946f  gcc/tree-diagnostic.h
! 2e70e020a97c25728029c911e1919869  gcc/tree-dump.cc
! 25db3aa3376f8948cba551f5b4567cc1  gcc/tree-dump.h
! 8430fffa14b68eacf1bafde16d833508  gcc/tree-eh.cc
! e35c2d4712dafbb07acf21e1b9026b1f  gcc/tree-eh.h
! 34e742d0ff51ce5aad7049bb9eb7e26e  gcc/tree-emutls.cc
! 7c2944ef15a9a1f9fb4edc1838e43cd4  gcc/tree-hash-traits.h
! ebf44536d1655f7bc1689d20fee11feb  gcc/tree-hasher.h
! b1c3c943cbb8b32f2bb8f046e55e197f  gcc/tree-if-conv.cc
! 9e7278ba352bc75f64e06dbb302a4cbf  gcc/tree-if-conv.h
! 800e4a1e4ab280836827eed72c5bb25e  gcc/tree-inline.cc
! b51f97729f40e0ee84d73134f80560cc  gcc/tree-inline.h
! e67c34b3786af683b0dac4b3e0a1fb49  gcc/tree-into-ssa.cc
! 322b9d77ac824db5c790f3c3b67ace47  gcc/tree-into-ssa.h
! d9f8288dc44be70602329547ca0e049b  gcc/tree-iterator.cc
! 2b518733b893d8a6df3880d3907c179c  gcc/tree-iterator.h
! a70a43f9374ad4f182e7afa6691c1e93  gcc/tree-loop-distribution.cc
! 2da373fa90649698c25f8538094cfef0  gcc/tree-nested.cc
! 69c73b03308d3ca47af9e15c750ba7e8  gcc/tree-nested.h
! 242fbbf3b18e8eecaca863253b01cb78  gcc/tree-nrv.cc
! ea1460625838ff893a17e01853bd7402  gcc/tree-object-size.cc
! 87e69dd59b2c11c0dff9af95c58965c8  gcc/tree-object-size.h
! 1189f8c61dd50f371b6663918a7727d6  gcc/tree-outof-ssa.cc
! d961b07cd44eaf9cafbcfabb4369fd5e  gcc/tree-outof-ssa.h
! 750f43a2d2b05ab7bd248e17d113f9f4  gcc/tree-parloops.cc
! 85c483704aecd26d6c9dfb12a9b462aa  gcc/tree-parloops.h
! 68aae769d84ff73c87c434bc20c42a22  gcc/tree-pass.h
! 2a8f9d7cca091eb8ee2e92471ecbbd1f  gcc/tree-phinodes.cc
! a9e072251c9cd071080f867b429c833b  gcc/tree-phinodes.h
! c6c6d852e458b24f69c6ecb6788acb13  gcc/tree-predcom.cc
! 685a2a1bc806bfb60256953c02c0ba71  gcc/tree-pretty-print.cc
! bee23ec1af17a7d796af14ca70f8dc46  gcc/tree-pretty-print.h
! 4e8db3ed286087efc4275d75a8345f10  gcc/tree-profile.cc
! 2267c8a08be256094faf58eab483bb2e  gcc/tree-scalar-evolution.cc
! f5e09b2dd6f2fef9f16a58b4cd348400  gcc/tree-scalar-evolution.h
! d2c83e6be2947634cd78029958e43881  gcc/tree-sra.cc
! 22ad2a6946f74c4f2e7665952622d9d0  gcc/tree-sra.h
! a4f99ae3557e1161cd896d23217b56a4  gcc/tree-ssa-address.cc
! 4233bdbcb0d4183c9631eebafa6f4820  gcc/tree-ssa-address.h
! 5daf63c693503c3da59da196d885d1e6  gcc/tree-ssa-alias-compare.h
! b65283f49fde6c50f07bb302785f261e  gcc/tree-ssa-alias.cc
! 9693c083b57172a5de1c03311467b54f  gcc/tree-ssa-alias.h
! 36a4a2ae59fd23f04fbd98bf8e717a4c  gcc/tree-ssa-ccp.cc
! 038e40c57d9c925b2f2ab27ce65aec68  gcc/tree-ssa-ccp.h
! d0589077e360719205f673fa28e27473  gcc/tree-ssa-coalesce.cc
! 7df6905ad76540fc0ba6958ce894a5a4  gcc/tree-ssa-coalesce.h
! b5611be2889ac60f8358352f44be0eac  gcc/tree-ssa-copy.cc
! 6d9e46245ffc7bf9a87986a6bc527430  gcc/tree-ssa-dce.cc
! d9087990e3ccbe29be4cb2d6fbcd0d6b  gcc/tree-ssa-dce.h
! 934a150b7cf36679fb13fec66f74b87a  gcc/tree-ssa-dom.cc
! f163bc3e9903da9f8045d8369ae0a861  gcc/tree-ssa-dom.h
! 883f531ff80281910e2c838ee666a6f9  gcc/tree-ssa-dse.cc
! 195877f983e0a31af6302aed94fa678f  gcc/tree-ssa-dse.h
! d98671517e85014c48032b706855e40f  gcc/tree-ssa-forwprop.cc
! 01cb88691242bd822e285cee0991d29d  gcc/tree-ssa-ifcombine.cc
! 2583b0542c537376d7d4e52a3a3ce910  gcc/tree-ssa-live.cc
! 1d67651fbc8ab600f45126f148f4c12b  gcc/tree-ssa-live.h
! b584536fc99eb576420b3ef5e3780c49  gcc/tree-ssa-loop-ch.cc
! 0c5808e462de7a3be00a907b9f228e3f  gcc/tree-ssa-loop-im.cc
! 0e82db34e6245ef507793cd8894b447b  gcc/tree-ssa-loop-ivcanon.cc
! 044310c9245ea11a5773c2019a596a37  gcc/tree-ssa-loop-ivopts.cc
! 3f30c52cd6fd7f965316dafa58373681  gcc/tree-ssa-loop-ivopts.h
! ef807a1da16d0fd13015b7232cea5f9f  gcc/tree-ssa-loop-manip.cc
! d8ad877acd553ebd0bd25b5694a3faff  gcc/tree-ssa-loop-manip.h
! 72a7d42374665f52c37806d32faf1402  gcc/tree-ssa-loop-niter.cc
! 7846c6b4a5c247d1cbdae546020ad25f  gcc/tree-ssa-loop-niter.h
! 14595cbe718de0b8d598cc311c9b902f  gcc/tree-ssa-loop-prefetch.cc
! 198101719096331b28a4f1c06de3afff  gcc/tree-ssa-loop-split.cc
! f7436362de0b3fcd67ad43810db53479  gcc/tree-ssa-loop-unswitch.cc
! 5d9355772a32a02f9de8b8da727fe954  gcc/tree-ssa-loop.cc
! 16e3b759aa71fcd40fb9ac27f0b4552d  gcc/tree-ssa-loop.h
! f152809e819eb0986c6be0e8a5314c99  gcc/tree-ssa-math-opts.cc
! f0db024320e40ac1ac8d450e8be90f02  gcc/tree-ssa-math-opts.h
! 99fc0aa9825a52457c111c1df6c54358  gcc/tree-ssa-operands.cc
! 45c8305b030ec69139d01c326f9a1133  gcc/tree-ssa-operands.h
! 12a339da2cab99077e42c0ba8a0c0a1c  gcc/tree-ssa-phiopt.cc
! 35e3309df2c090d12494914f49fc1e1e  gcc/tree-ssa-phiprop.cc
! 7776557fcf614af82c2fb031c38a007f  gcc/tree-ssa-pre.cc
! 3a55ddfc911130111194d8f209761e03  gcc/tree-ssa-propagate.cc
! 7e14602488f8f1e7e754422dd9731b01  gcc/tree-ssa-propagate.h
! a3096ce8ef40d290c1f38cbf1490250b  gcc/tree-ssa-reassoc.cc
! a2d407f6fd4aa95d7eb7ad8a17b81af4  gcc/tree-ssa-reassoc.h
! c2c046221a82c73be3fef9acab2f3860  gcc/tree-ssa-sccvn.cc
! 9b971767e8b1b24cc98c426f1f399ed8  gcc/tree-ssa-sccvn.h
! 648524d5c619edb0acece29c53601b89  gcc/tree-ssa-scopedtables.cc
! 9da7a798aaf58ceb04c796be96a5bdc8  gcc/tree-ssa-scopedtables.h
! 1a01f1b2d173ce0bd6dc265a99316950  gcc/tree-ssa-sink.cc
! d57e2f3403bc72fc9d282e4436edb07b  gcc/tree-ssa-strlen.cc
! c3601488e1adeaebe82eec4348f3568d  gcc/tree-ssa-strlen.h
! 25d1c78b94974440c9fc85ab6aeec599  gcc/tree-ssa-structalias.cc
! 1331a83a0763d00ff819b24064392d12  gcc/tree-ssa-tail-merge.cc
! 7599bc99d54acc459659d85b787faee8  gcc/tree-ssa-ter.cc
! 08299e87c1517c92eb914373542d3cc8  gcc/tree-ssa-ter.h
! f74ec8bee7ed7504fbe5b21a035e2ec3  gcc/tree-ssa-threadbackward.cc
! 43375d61a193229718ba160c78763db6  gcc/tree-ssa-threadedge.cc
! 91efbe0596018132e9a44c2d111408e5  gcc/tree-ssa-threadedge.h
! 0b823bb64aa685e2fc041bab227798e5  gcc/tree-ssa-threadupdate.cc
! 5cbd06b4671b9d3a386ae0b3b1899ff0  gcc/tree-ssa-threadupdate.h
! 87d4c13c047088a0266b3ff765ee429e  gcc/tree-ssa-uncprop.cc
! 836fca81ea491c63a6c41a10bccabfc5  gcc/tree-ssa-uninit.cc
! f9481a229dc7350989d8bc914cd13efe  gcc/tree-ssa.cc
! 755b67c6f7a1821f6962ff15d72cc5dc  gcc/tree-ssa.h
! 1e5a5a5e038804c8ae08600e168b502d  gcc/tree-ssanames.cc
! 5f0afaa1eeaac0ca2f771408bdaf5c9d  gcc/tree-ssanames.h
! 2999f2f74e205dd3e3520e7ac6cc453b  gcc/tree-stdarg.cc
! 4d99f9b0e6fd197498afdb1cb077b61f  gcc/tree-stdarg.h
! f5d24542b57f5008c915eff9212b6d7c  gcc/tree-streamer-in.cc
! bf8925ce78dbd27dd95bd34765e1a0eb  gcc/tree-streamer-out.cc
! f727b27ed4e86d4316c9ccebf8ace408  gcc/tree-streamer.cc
! aafcaaf57b1b41ce694f51f37fe1dd93  gcc/tree-streamer.h
! 9fe812d705ac88f473d91d7ced8745df  gcc/tree-switch-conversion.cc
! f9949ff32a719d47d731381154dd534c  gcc/tree-switch-conversion.h
! 1a726f178c55eac3224071963ee9bb3a  gcc/tree-tailcall.cc
! 7d7706188840901f4314a0d687878959  gcc/tree-vect-data-refs.cc
! e57a7692974795fdef0c2cd62e3f07a9  gcc/tree-vect-generic.cc
! ddf8456ca0c7792c77c82ac7706664b6  gcc/tree-vect-loop-manip.cc
! 1203c32490bd1d4398f2a91ef888c5a1  gcc/tree-vect-loop.cc
! 96827aa9c45bb072a1f886eb1646e078  gcc/tree-vect-patterns.cc
! e63fe21f69147c7b92f914e60a8efcec  gcc/tree-vect-slp-patterns.cc
! 33a9ee764b95b1c8f0e0366bc2cd97b6  gcc/tree-vect-slp.cc
! 278c1ebfc88db7d06210f31ad46262a7  gcc/tree-vect-stmts.cc
! 17da0c4ee2c405d67d63509bd85f801c  gcc/tree-vector-builder.cc
! 81e7b3c9a18c29b53f3f017109c91f6f  gcc/tree-vector-builder.h
! 541c768983210e5d6b69b9ceeaf40e4b  gcc/tree-vectorizer.cc
! 5a1d9b1a4fd93a1dc9773d46eaa80403  gcc/tree-vectorizer.h
! 89443f1b171fee24a2d36f7d1af2b315  gcc/tree-vrp.cc
! 9cb72e4782bdb3fb2fb9a04498598bf1  gcc/tree-vrp.h
! ca275671eca73822f02071fed4dc85da  gcc/tree.cc
! 45808a76997a44962fa135c3a7de1ff8  gcc/tree.def
! dc44650b44ba563a79420acb9350ef88  gcc/tree.h
! 789a781bb4a16a840a4d12b33e5e41aa  gcc/treestruct.def
! 7176ab9942843346cd7a7e47f7b62463  gcc/tristate.cc
! 9b9356511a9a18b1a38ed98eb7a8d3e0  gcc/tristate.h
! beaaf57de01c41199e3b6a9eb24fb143  gcc/tsan.cc
! 20c3068b317a87ad36e2e439f2505566  gcc/tsan.h
! 114597ac7dc093c760e9fc3ea6b82138  gcc/tsystem.h
! 23d3ef3b350b5c0785589547a581b715  gcc/typeclass.h
! d38c58f87ee7ee53eb825a0444aea09b  gcc/typed-splay-tree.cc
! c8f92fd70553d3478d74451987ed8835  gcc/typed-splay-tree.h
! 6a8d8db3cf6d0d7de35a9c5f42e5c353  gcc/ubsan.cc
! e6a6b3805ac7207859f56a703a4cf905  gcc/ubsan.h
! b5748b6b0f57f1d91ae8016e87f5d411  gcc/valtrack.cc
! ad9b356abb114134e0ce58bf604c4a85  gcc/valtrack.h
! 1408b32cfec7495635634b9899a7d78f  gcc/value-pointer-equiv.cc
! 44e6a1bb37556d70ba9d6002c3d7eed5  gcc/value-pointer-equiv.h
! 9879ebb12be248532bb871efb1262695  gcc/value-prof.cc
! 69105a04a0bb6a23277ead5089fcaf5b  gcc/value-prof.h
! d338ccdbfad0f64ecbdd1b67c8277705  gcc/value-query.cc
! 36a906b07ce327d75362368644961a60  gcc/value-query.h
! bc26a3485cb0a269944b49b2427ca012  gcc/value-range-equiv.cc
! b6d9efd1a637bb7e7bb66614921055be  gcc/value-range-equiv.h
! 9ec3280a012fbd643f8fbbee8f79eeca  gcc/value-range.cc
! 473bc142d8c84cc76764637c005b943a  gcc/value-range.h
! 10e20613642a5a9dfe658f7b7bee260b  gcc/value-relation.cc
! 8e00a37814d00e977bd4878c88c6b9f0  gcc/value-relation.h
! 93e740653e6cec3f6c4610b2fdee225a  gcc/var-tracking.cc
! a0ba0feea37992cbeb00fa999e9d2568  gcc/varasm.cc
! 8d61ef065460d6dd2c76f09bed5abdfa  gcc/varasm.h
! fded5307f938c647643e0c2583d58779  gcc/varpool.cc
! b027979c03d820b6ac30b5ae30e840ff  gcc/vec-perm-indices.cc
! 281330db6c511f58f6edfeef4b80d4c7  gcc/vec-perm-indices.h
! 63ef6df7c629b34ab57e8b344d7e2fa0  gcc/vec.cc
! de055551b4e5311e2996a0809ffd488c  gcc/vec.h
! ae4bf7b2b66afe5a84e12e143519e1ae  gcc/vector-builder.h
! 2093e44561adbeb3f7d73766864fdea3  gcc/vmsdbg.h
! e82106b55a955245568b40bbaf0fe295  gcc/vmsdbgout.cc
! 3ea99674c9c17a549d9e11d8845482ae  gcc/vr-values.cc
! c569eea2f11765b9f2dd3470d3bbbf4b  gcc/vr-values.h
! 48a8d117b1ce29d21f823ffaa413daf6  gcc/vtable-verify.cc
! 5f6e9817c9f19114ebcadfe909fac18e  gcc/vtable-verify.h
! 7f09c23c7d4c7c50c1a4e90c16dc32a8  gcc/warning-control.cc
! 3b1ed3ef99aaa2674aeab0b110aa6965  gcc/web.cc
! 23d5a7e5548f4e13fc245d606c148f40  gcc/wide-int-bitmask.h
! 483f48114286da1c540e3b6a9ec3e6b6  gcc/wide-int-print.cc
! 09dba6185099df41595ab2939afa51a2  gcc/wide-int-print.h
! eee34cd0ae971df627b488114bed6b73  gcc/wide-int.cc
! e0eec42a4c843f3c3ea448e9f8e895f8  gcc/wide-int.h
! e82d97504c16e7a9d61318fafd536cac  gcc/xcoff.h
! fc8f6cd70740468b3d092d0a12d9c1b8  gcc/xcoffout.cc
! d675816050a9ff3c1178b9cdf507b9c2  gcc/xcoffout.h
! 71b1e6d048fd32b4080b9bce16794bbd  gnattools/ChangeLog
  3e149f46f7f39c4f49e3e3449af997a3  gnattools/Makefile.in
! 8385a4d775aa1b9949c1f88488491c86  gnattools/configure
! 1e063bb0b806e41cc0ed23d1b7047746  gnattools/configure.ac
! fc23f82036ccf318bb933ffd3fc5e8ed  gotools/ChangeLog
  5d56cc28c41dee982565dd2bb6835d75  gotools/Makefile.am
  1b3e301307fb3c8ef2e668e88e9da768  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
--- 99500,99726 ----
  215297636661033a197dd0628d1dc044  gcc/testsuite/selftests/note-insn-deleted.rtl
  cd3354c77105e0720cfab6100803d9cf  gcc/testsuite/selftests/note_insn_basic_block.rtl
  c0b991692c06f34bf7f8673802e7b155  gcc/testsuite/selftests/repeat.rtl
+ 8b251aa9a2fa89337ef04014c5c6b537  gcc/testsuite/selftests/riscv/empty-func.rtl
  759df2498a0496873d40f6e066a84048  gcc/testsuite/selftests/simple-cse.rtl
  54b496abd7df06d1a8671978482ce8c9  gcc/testsuite/selftests/symbol-ref.rtl
  513d3d48c332f420096cf4860afd5f9c  gcc/testsuite/selftests/x86_64/call-insn.rtl
  5fb2390505ce446a223d21f02b332874  gcc/testsuite/selftests/x86_64/copy-hard-reg-into-frame.rtl
  e42076aeff1c5ac155a88db5b1993d38  gcc/testsuite/selftests/x86_64/times-two.rtl
  195d431640249dac1928ced4d93ecb76  gcc/testsuite/selftests/x86_64/unspec.rtl
! 7b5ae87732b851947543a679d27a5fb3  gcc/timevar.cc
! c0d0ded25bef349cbc939387fd1c67b1  gcc/timevar.def
! cba5406970f4fb4e80232452b05c95b1  gcc/timevar.h
! 089b74fd0c31135da96b5499c9fa83d9  gcc/toplev.cc
! a661528cf07e076cca4056e693ad0d3d  gcc/toplev.h
! 7803b8d793f6737688010076577fcd6a  gcc/tracer.cc
! 97a1500e75b12216a540682db201b58d  gcc/tracer.h
! f94e7e93a949cf8bbb4daed6f2adcefe  gcc/trans-mem.cc
! 41f165f234cc64d36b07d87290ce6d0a  gcc/trans-mem.h
! 08f249c7fa2dbee7c097b1ee10aca886  gcc/tree-affine.cc
! af4dad4e7c08b9fb38895d9d5c6480a5  gcc/tree-affine.h
! 290b7c97096aeb17e6958b50e0b9f8ac  gcc/tree-call-cdce.cc
! 1390ccdba5548fdf75b296e764a5576f  gcc/tree-cfg.cc
! 2921805a6732bc91a8722618d4189584  gcc/tree-cfg.h
! 02211b0e40626f889cfc27d57f80db1e  gcc/tree-cfgcleanup.cc
! a027071bbc28b44a8697ab0a322059e7  gcc/tree-cfgcleanup.h
! cd9d9a63ed5b22b1082f8a0388f82674  gcc/tree-chrec.cc
! 36c8667090105100455277b131b1db62  gcc/tree-chrec.h
! 5d1fcefce8e08d4c308c542ec7e6597b  gcc/tree-complex.cc
! 9a5b72989d74c0d97cbb0289e27a677c  gcc/tree-core.h
! 77b663a3009eaacb6e3c4b1ca858bf02  gcc/tree-data-ref.cc
! bc11b118ba0b8bafdf4ce00928b10bc0  gcc/tree-data-ref.h
! 08f53ded2a5af061fef20cec84aad09f  gcc/tree-dfa.cc
! 25b2344a8a870f7c9c3a04df1cd70c27  gcc/tree-dfa.h
! d16a160b0b68fdd695ee06d0079d3794  gcc/tree-diagnostic-client-data-hooks.cc
! d60980db50f3098666d091a61b3fe65b  gcc/tree-diagnostic-path.cc
! beb28836faf3cbf46c223a78f4ed0f2f  gcc/tree-diagnostic.cc
! 497415d4f3c2631a2ed6b125e635cb4e  gcc/tree-diagnostic.h
! 1372af3bb41e349a9519f88746ea7770  gcc/tree-dump.cc
! ad4739e1ababa9fe99c700a409d4d39c  gcc/tree-dump.h
! ca4884c3aef6befeb84abe15b95ed221  gcc/tree-eh.cc
! 6393cd11119dc8ba74124d979d213cdb  gcc/tree-eh.h
! 27041cf11105e487781bc6230f204232  gcc/tree-emutls.cc
! 582c0d8e240fd276fd28bed9cfa593f3  gcc/tree-hash-traits.h
! 51a9944253ec880d2fcefce4f457fd81  gcc/tree-hasher.h
! e4a6ecae43de709ace9ae68810d1630b  gcc/tree-if-conv.cc
! d827a40245726bb17d7019eeb50733a5  gcc/tree-if-conv.h
! adcafe1ef96add79062e708012e9ed39  gcc/tree-inline.cc
! 05a54334040842ce3f2e8586d3d67b76  gcc/tree-inline.h
! 9cfa0b6fbd2cdc3d42b9a6a68ee42ef5  gcc/tree-into-ssa.cc
! f1fe226578aba70864fab526bf69c25b  gcc/tree-into-ssa.h
! 1efa282ccaf24744426163e7293a8067  gcc/tree-iterator.cc
! ccda522d2791061d143ed10d67ebb8ab  gcc/tree-iterator.h
! 478753fdfe072165d600af5c8bd4a83e  gcc/tree-logical-location.cc
! aa8406f5353334e06321a4bfde913f90  gcc/tree-logical-location.h
! 9b4f9bb5a6d88db3ec59b57d59d38677  gcc/tree-loop-distribution.cc
! 15295d542eb661859030da31bda0be01  gcc/tree-nested.cc
! 9bba957c6a1ab17bb89c93f7fe4f63df  gcc/tree-nested.h
! f08dc5d3e5c244c9f3d0921a13600db5  gcc/tree-nrv.cc
! 6ed38938ee1207f0caf0532ed48096db  gcc/tree-object-size.cc
! bfa736bad94c583d64422b6c456d417c  gcc/tree-object-size.h
! 3e0aa973134ed4274a15d14bb99f4705  gcc/tree-outof-ssa.cc
! 68b06a88c5e019fa02e2cc89cc51aae9  gcc/tree-outof-ssa.h
! 4b999ebb6915bde592d0914905da0d73  gcc/tree-parloops.cc
! 94e2a7b7b4ede5c0c6e9ddcc31887922  gcc/tree-parloops.h
! 0235b0de35a9a46d6154c88ddde7e696  gcc/tree-pass.h
! fd97119195b3960fa164a7f25fdf701c  gcc/tree-phinodes.cc
! a454429f57d8839090a7ec73abbfa772  gcc/tree-phinodes.h
! 0dcf744147072ec57b2a14224c27375e  gcc/tree-predcom.cc
! edd6c1f313befbbd0943aa5df67a8379  gcc/tree-pretty-print.cc
! feca017a2b8993f6879429c3b7fa9740  gcc/tree-pretty-print.h
! f8b70ab22f78140c8947312c3b354d03  gcc/tree-profile.cc
! 6371db7cba96b95db1eb58ce58886403  gcc/tree-scalar-evolution.cc
! b8223329488a4001552728350c5dbbef  gcc/tree-scalar-evolution.h
! c2df56d68ee41fda11029015f9ed8983  gcc/tree-sra.cc
! 6db24ca9af258c4e5e9e0d1ac2f3eab3  gcc/tree-sra.h
! 931fca6fc15298fa1f2021f8e4f2ed8d  gcc/tree-ssa-address.cc
! c37e139873f3e8da2fffefa09903ee42  gcc/tree-ssa-address.h
! a8390868d15220dfcd12e320402468a6  gcc/tree-ssa-alias-compare.h
! fe689632ccdff34f38f730468797abf5  gcc/tree-ssa-alias.cc
! ba44f6b9cdb34f227ce92ce6bbaaf35d  gcc/tree-ssa-alias.h
! 85276adbe4671927f535d2d56a1a3b5b  gcc/tree-ssa-ccp.cc
! cd2e4de6ee944facf2a1995f8743f8c2  gcc/tree-ssa-ccp.h
! da67de91badb3e7882b0f0f56a67670e  gcc/tree-ssa-coalesce.cc
! 96b67f0be71acb075f0ac5ac12c58664  gcc/tree-ssa-coalesce.h
! 224369f622af9776abe022853f1a0d00  gcc/tree-ssa-copy.cc
! 1bd17638abbe47cbb1458cbc3491baa4  gcc/tree-ssa-dce.cc
! e36c0da1e5dc257d4ccff9c24043d7fc  gcc/tree-ssa-dce.h
! 2064fb92d4753ce421275bb80258341c  gcc/tree-ssa-dom.cc
! aba207ac671bbe2380e556429ad21a00  gcc/tree-ssa-dom.h
! 13c07152f09d5ce2c73a9d34e7d72411  gcc/tree-ssa-dse.cc
! 9fe4418350cac32811c9ed2ed8de371f  gcc/tree-ssa-dse.h
! ae2446450a30a79444e06732def33edc  gcc/tree-ssa-forwprop.cc
! 6a9c9d4313564c6c6a15f75b70c1d3ed  gcc/tree-ssa-ifcombine.cc
! e5c556ba07b04f0f9890c0d4618c716e  gcc/tree-ssa-live.cc
! d68a110616d98e6c023567d2239e4e13  gcc/tree-ssa-live.h
! 286a1abc75a2657034c3ff16b07e46cb  gcc/tree-ssa-loop-ch.cc
! b102c7772d38f100630524793fdfff60  gcc/tree-ssa-loop-im.cc
! 2bba5498db8c181cdc8f877953b7c7e2  gcc/tree-ssa-loop-ivcanon.cc
! d96c0b137ff41eb3f2254d688ff296d9  gcc/tree-ssa-loop-ivopts.cc
! 370a3d6606f97b793ee8a94e17f8a1f5  gcc/tree-ssa-loop-ivopts.h
! aa498fcb0de83e00d2d79464ed4fa669  gcc/tree-ssa-loop-manip.cc
! c10dc1a11bed8461c36db2d370f534b6  gcc/tree-ssa-loop-manip.h
! 89f69f13c2626beeb6af6c07fe5412eb  gcc/tree-ssa-loop-niter.cc
! 63e23177ceb0e06f07092e962fb6ec1e  gcc/tree-ssa-loop-niter.h
! 7beaa815285383a0694609b5111001d4  gcc/tree-ssa-loop-prefetch.cc
! 8d00446e723fdc157e179d58c825952a  gcc/tree-ssa-loop-split.cc
! f4fc7da5dacf985f0c7680cbfc847ce4  gcc/tree-ssa-loop-unswitch.cc
! e2040b0e641b28b006e48fb2094500e2  gcc/tree-ssa-loop.cc
! 943d41105325f8de1cdae2b4faf2dd0a  gcc/tree-ssa-loop.h
! 0b112fd64e26a68450f15b1d2c5a83da  gcc/tree-ssa-math-opts.cc
! e9484a6f5b1f9056c6681cedce910ed4  gcc/tree-ssa-math-opts.h
! 918abd54b699b48204a42158c4379381  gcc/tree-ssa-operands.cc
! 0db421e827039fe3c4f796b4c7600c52  gcc/tree-ssa-operands.h
! a615d9179acd7a122b8931f9915246c6  gcc/tree-ssa-phiopt.cc
! 731542d52a45ac5f609554aee9faf6dd  gcc/tree-ssa-phiprop.cc
! b30381e43b6c724fda59ffe78db6ceec  gcc/tree-ssa-pre.cc
! 77bffb73ae67d967a61a09b2df054e8a  gcc/tree-ssa-propagate.cc
! 658e45ca3c1c387fbd4e8bf835de1acd  gcc/tree-ssa-propagate.h
! cca43e1e9a4d2e13640b918e451f740b  gcc/tree-ssa-reassoc.cc
! 3d6728ab6aa97921854f86b5d2116c3d  gcc/tree-ssa-reassoc.h
! a88bd8c53a3c02e6f5e4a90573fef512  gcc/tree-ssa-sccvn.cc
! 700d7aa95b7fd675d86a154973faabe8  gcc/tree-ssa-sccvn.h
! 0dd72fccd9280ac160f5ac770517ee10  gcc/tree-ssa-scopedtables.cc
! bdda02f8f5872266cc26122c45c7d248  gcc/tree-ssa-scopedtables.h
! c46fe59d6ead2c7ed06d10742f701799  gcc/tree-ssa-sink.cc
! a2d1c394e3122e9c8f85a5f127a036e5  gcc/tree-ssa-strlen.cc
! cae334e8d7f57adf439062af515c28ae  gcc/tree-ssa-strlen.h
! 45bff73942ba876b1c2907e643884563  gcc/tree-ssa-structalias.cc
! bb12f3921de429dcf0d7545d466b9717  gcc/tree-ssa-tail-merge.cc
! ef149bbc15f2173d0e0b9f2254c03eb5  gcc/tree-ssa-ter.cc
! ae3a1dc45c510377c6acedecbc823d32  gcc/tree-ssa-ter.h
! a199afc3c0cb77a15c36952ce742bcbb  gcc/tree-ssa-threadbackward.cc
! dca90803e2154a166a0a1b0eb2c2689c  gcc/tree-ssa-threadedge.cc
! ac4c7ef64fae79629a0ea0c741c25ba7  gcc/tree-ssa-threadedge.h
! d7e10a85f4b24d9190b4fb574fb503eb  gcc/tree-ssa-threadupdate.cc
! 52eb7df5e9ebd417f62e6b8d01ce878a  gcc/tree-ssa-threadupdate.h
! 17e2ec9603a80d2276f05853965d8d70  gcc/tree-ssa-uncprop.cc
! 4bf1c7bd14057182c8501448ef2d12e7  gcc/tree-ssa-uninit.cc
! 07a32c2c98deea1a165c9c205e09b410  gcc/tree-ssa.cc
! ed13c4549041c596b249948a9d4583a3  gcc/tree-ssa.h
! 4e799d8e730086c4d3788890d70f6cff  gcc/tree-ssanames.cc
! b238783d1764a95333811500c3144a7c  gcc/tree-ssanames.h
! ea18451dcbcb4446e5c1f87b9a0aeddc  gcc/tree-stdarg.cc
! 6a98188a4af79ee9fb79c2d93528ab27  gcc/tree-stdarg.h
! c09a192585c4c06d68ac3efacc09c3f6  gcc/tree-streamer-in.cc
! 1572a04c537b3b8115a7332aa535ac55  gcc/tree-streamer-out.cc
! ad22fabedd9c85512941d6537188dcdc  gcc/tree-streamer.cc
! 4e31a4ce5936cf46e49ed3fd6bc1c49d  gcc/tree-streamer.h
! 55b4d99428849459155be80d762f91a7  gcc/tree-switch-conversion.cc
! 7c63c2566792c75263e89aad9dbdd648  gcc/tree-switch-conversion.h
! a4918516d4e0d24a0f05be8cdde5d93f  gcc/tree-tailcall.cc
! 0c41122c60698e413f5b01fb42c9dd81  gcc/tree-vect-data-refs.cc
! 67081a9bd16abb8826b1d787edf80df7  gcc/tree-vect-generic.cc
! dcba5449e012c6f6941a8e2c48e46f75  gcc/tree-vect-loop-manip.cc
! ca9301114157bb96c72722661a2e1266  gcc/tree-vect-loop.cc
! ff5bbf4369b488d9b5c877cf0b46b119  gcc/tree-vect-patterns.cc
! b2d8890f59e3b9eaa4fce183bf5f75be  gcc/tree-vect-slp-patterns.cc
! 844e7585381b5098aa76041b4b4bf242  gcc/tree-vect-slp.cc
! 0f76236c09fd30c63cf86943f93231c9  gcc/tree-vect-stmts.cc
! 9ed16219bf6ab97b79539fb1bca89485  gcc/tree-vector-builder.cc
! 672861a6f3b4ede253a47c708e10856d  gcc/tree-vector-builder.h
! 6aa65afe715f0a1a0aeb28eec7a7931c  gcc/tree-vectorizer.cc
! 273e2d8b40a81cd971fbfbf62d964bfa  gcc/tree-vectorizer.h
! 77cb16f595a988710bcea28078cf75a3  gcc/tree-vrp.cc
! 1506b4121fe3a1f91b7dce7fd11903b1  gcc/tree-vrp.h
! 31f6a8fa956c3f7b2be63a455405007f  gcc/tree.cc
! 90cbee0521eed701cdda38cb80c79c9a  gcc/tree.def
! fe516d7c8d021430db52ce4066099c2c  gcc/tree.h
! 1bc8e733e733c31e894ea8e9911dc5c0  gcc/treestruct.def
! 0339b546acdb2e9ee921ff13c97646ce  gcc/tristate.cc
! bed18fb33b65339128107e69ef48793c  gcc/tristate.h
! b7d9721b32108aa7ecb230808c325092  gcc/tsan.cc
! 01c10e5628835da3fe84a5d0b35db703  gcc/tsan.h
! d583fab067d805f6faa3a0c843de7b9c  gcc/tsystem.h
! fcb65b893faa201083a06dbdeab0d943  gcc/typeclass.h
! 7bb7945cafc3b8f490163c395ae34a14  gcc/typed-splay-tree.cc
! 6b94f4f6cbec65970fd2b161eaddf0c6  gcc/typed-splay-tree.h
! f01b913f70418860ec8424779fc09d35  gcc/ubsan.cc
! 42de1b0b3ffabde0a54387be6e2b87b9  gcc/ubsan.h
! 13e4856f601fb192ec89efc7f04f9b21  gcc/valtrack.cc
! b9e4a4b10a8dd4e13e216336646d9cfe  gcc/valtrack.h
! 0d55042361c82cefb07df4d4fbc6e0fb  gcc/value-pointer-equiv.cc
! 1daf8ab2778fdbe2b361c03a360d09c9  gcc/value-pointer-equiv.h
! ddf0b04d0817018feef016e01d4a9a28  gcc/value-prof.cc
! eaf2f0aeb4ab13c534f4cab90292864c  gcc/value-prof.h
! 1221dc84794eeb93feec45cb7a58d99f  gcc/value-query.cc
! 4b55f5063a791bade30257a874003cd9  gcc/value-query.h
! 6d7424fd4f502efc4caa8d830af3cc8a  gcc/value-range-pretty-print.cc
! cc2c1890bdcf636e36bcdd23285dd304  gcc/value-range-pretty-print.h
! e6184a6abb9af9d66b052e39e9f5fa34  gcc/value-range-storage.cc
! 2e33407cfaf888fff0465c8bd2a4681c  gcc/value-range-storage.h
! a0a993372b1a01c0f54a4e54bd8cb53f  gcc/value-range.cc
! 3dc135ab3e996248c40770dba5f3fa54  gcc/value-range.h
! 2c8570b18ae8aed5c1c57271d6997641  gcc/value-relation.cc
! 94eb969fb3e3b7179a221cf59909c632  gcc/value-relation.h
! e31285175438a68675780b419cf964ec  gcc/var-tracking.cc
! 95cb2cdf812ccd8f2675b7efce4a7eaa  gcc/varasm.cc
! a801df1efea35850028f5ec3cc36b36d  gcc/varasm.h
! dc419bc01226f41334020c39be67d5cb  gcc/varpool.cc
! 05234e0f40aa8065b424e1ce1f6801fc  gcc/vec-perm-indices.cc
! 62f7d88ca9346db03da5c98fef955157  gcc/vec-perm-indices.h
! 56ebf2ea422740d25cb2d59ee9fdcb5d  gcc/vec.cc
! 66700302caecc89e2cc99d787765a563  gcc/vec.h
! bcafa6a45764f2086d9577f869904710  gcc/vector-builder.h
! 89d1d6fdd6c9d3840caaa4c079b5ea25  gcc/vmsdbg.h
! 89f5fc1abb99a2f9279a628f60667c1f  gcc/vmsdbgout.cc
! 309c4c082d03500ba03d8bc9257f18a8  gcc/vr-values.cc
! 3ec3f5b4c45bf6b1f4b696150ea2849b  gcc/vr-values.h
! 6f18fdebdd816668f7fc355e7102bc24  gcc/vtable-verify.cc
! 2cf786a34c31d5dd28a3262580186c40  gcc/vtable-verify.h
! 294c3b5f3cfde8bd5a0da94aa959c22f  gcc/warning-control.cc
! 13695ac133e2c970d6493e268512f655  gcc/web.cc
! 12ab43583253ecdcfbffb23b426e47af  gcc/wide-int-bitmask.h
! 673cb56356301f1b31bc9d03b62227dc  gcc/wide-int-print.cc
! ebc3498f02b086ce0e67eab6a6fece3f  gcc/wide-int-print.h
! fb5d0438ddef9eacc7e1c970042c1111  gcc/wide-int.cc
! 433e6d8523785225a447a0d3340ea84a  gcc/wide-int.h
! 83081f4aecfcb23b16fa34e4109aa61a  gcc/xcoff.h
! 48a38b3142e68deaa42903d70e4d3330  gnattools/ChangeLog
  3e149f46f7f39c4f49e3e3449af997a3  gnattools/Makefile.in
! b1e3c03cb2848dd4fd97b0fd0d4b090e  gnattools/configure
! bddf0fae1e9d3faae206ddab016440f7  gnattools/configure.ac
! b73400f4157d8810647d604fa30d40f6  gotools/ChangeLog
  5d56cc28c41dee982565dd2bb6835d75  gotools/Makefile.am
  1b3e301307fb3c8ef2e668e88e9da768  gotools/Makefile.in
  7e23031e2e274aaa07b61c1e8f18dc99  gotools/README
*************** c4e8176c1964a5ebe0a55900f2141299  gotool
*** 91775,91830 ****
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! 996cefb8cf299879be05ace6a7849b94  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
! 8afc0abb1ece39cc1f45718fa5c20ac0  include/ansidecl.h
! b19cbd95793ced15cf5fc91d16f60a3c  include/btf.h
! 6433fd2c808648016969a7959b32130f  include/ctf.h
! 14047cb3b9297e90e5f16b47e680a7db  include/cuda/cuda.h
! 0164d85908e3d62f0e5264af0cd128d0  include/demangle.h
! a437a43331f66d999b9c2a499f8dd9c7  include/dwarf2.def
! 322808794435176bb04013fc620bad49  include/dwarf2.h
! 1de9390f3a14515b90109f09d63bcf4f  include/dyn-string.h
! a5ac7a0b67870c998075996c0c746d94  include/environ.h
! 15d4de8e1dfd652f3495c2ee9c4d5bb2  include/fibheap.h
! f7149d4f9352e8c38701cf27956587c9  include/filenames.h
! 480dad9ce8ba7a444fd6a7d4c36ed359  include/floatformat.h
! 3fe6b6f7ff376a6aecf1e526329cd6cd  include/fnmatch.h
! a6d5a36cdb66fc11c570ec284a44fa5e  include/gcc-c-fe.def
! 9b93a14e4c04cff385fe6532270859b6  include/gcc-c-interface.h
! 7b09e9dafbe9af869abfdb7cc2b74bd7  include/gcc-cp-fe.def
! b9a30cb8fdb7e63e2f5a13d267bcee6d  include/gcc-cp-interface.h
! a75f73ea006809f65b2095bb24b95971  include/gcc-interface.h
! 1696c449e92ccdf82954175387660baf  include/gdb/gdb-index.h
! 38132f07bb81bdddd57ae53d72157992  include/getopt.h
! 2d8b24dbf3927afb847f621007c65fa9  include/gomp-constants.h
! bbcb6abc7c6c234117e78191779f56c4  include/hashtab.h
  18d01da8845d11d2091cf3787c4ad79e  include/hsa.h
  f9fafee2474590659930fb2d0db7be2e  include/hsa_ext_amd.h
  9df4701c7f8f25d502bdadccbc97581c  include/hsa_ext_image.h
! 00743e7abd2be563c2232a46d38cb089  include/leb128.h
! 04de0e35eada6531c445da0cc936921b  include/libiberty.h
! c510507eefce8394b6bd18ac9c9fdaef  include/longlong.h
! 5f7207402b6041b37472e4cdc5a84857  include/lto-symtab.h
! e0d9f29af623aa33c5962a8d963e91d6  include/md5.h
! 314e28ac2f5b1fb51d8144db2fba9cd5  include/objalloc.h
! dbbfd72ba9e93162d628f063fbc298c6  include/obstack.h
! 36e440d23b9263f0f80185724f1a2178  include/partition.h
! 1838afcb6b4ef161bb225cc95ea64227  include/plugin-api.h
! 2eb786103b6f9fb9649f4a86b1e30596  include/safe-ctype.h
! 8596df9bfb7e5930f652ec111b56870f  include/sha1.h
! c0900a9b89969fe7e0d12dde3059bd5a  include/simple-object.h
! 63774b34dce1d02e242e40173990773f  include/sort.h
! b296ae2d4eca11865727c8e197700476  include/splay-tree.h
! cd16ad55bbf01b3bb6996909eee91a31  include/symcat.h
! e5fc6abe4c74977e3d48a002393b8c83  include/timeval-utils.h
! 76fa1c1391a29fe28ab3daa0296a3141  include/vtv-change-permission.h
  53bdfdb5cd3c0c7831611602041cda52  include/xregex.h
! 2f974ad6ac4ec364faad976d15b7e291  include/xregex2.h
! 5a08b4d212a5560e6dad2d8fc20d7128  include/xtensa-config.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 30ebb25e20609993bfb0c419bdc3365f  intl/ChangeLog
  a5f61a727ebbc9d02c42160796629b91  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
--- 99731,99787 ----
  eb2aeb3a6cffe7b26a8f1c8a2da23dcd  gotools/gofmt.1
  59530bdf33659b29e73d4adb9f9f6552  include/COPYING
  d32239bcb673463ab874e80d47fae504  include/COPYING3
! fe2683cf0014e3738d622ac2acbb7946  include/ChangeLog
  4263432a72ff47ed8bf420208ee7eea5  include/ChangeLog-9103
  a43d76108493b20da790f953f829c6a5  include/ChangeLog.jit
! 0ff2b24587f14124d511aab046079147  include/ansidecl.h
! ddfd001de81b0225d9597b84db48cc23  include/btf.h
! b42aeaa131fc780da1b2872f01754d93  include/ctf.h
! 35cfcd2e56153c59bd1ad4a871fe2f4d  include/cuda/cuda.h
! 1094658099047a4c233d1fa6c252212e  include/demangle.h
! 23e6c4f275724aa0b38f38451de3b712  include/dwarf2.def
! 2609dce027dea168b1b9d11ce2b8fb10  include/dwarf2.h
! 8761fbbc5596031c242423c0afcec7b2  include/dyn-string.h
! 7a5fe8d1ca32f56490e46d583e726d61  include/environ.h
! 15e14a6da663c99f8ff76875644a0443  include/fibheap.h
! f9779a6d540c8c63c61d523b1d684404  include/filenames.h
! 0207c1a4a13638a53e1fd29c8cfb5f66  include/floatformat.h
! 28faf555a21ff1caff17e18830a9e1ba  include/fnmatch.h
! 5351349acfa0916c1f02d09a17d93e90  include/gcc-c-fe.def
! 20869d1fc55eb03f5389b21b0dc72a40  include/gcc-c-interface.h
! 015bad70227c24e9fa3d622ef6ac84e7  include/gcc-cp-fe.def
! 7ee5288532391e6296812013df727905  include/gcc-cp-interface.h
! 3eb89a9a70e3b118728a886f71407e13  include/gcc-interface.h
! d355ce23b2dacc49dcca587d1c142a68  include/gdb/gdb-index.h
! a4e4e1b10794b154b1f341cc87603b59  include/getopt.h
! da5e939a96bf22580a0b4acf109df69b  include/gomp-constants.h
! 45dedac747b13f7213a4fa7140ce1844  include/hashtab.h
  18d01da8845d11d2091cf3787c4ad79e  include/hsa.h
  f9fafee2474590659930fb2d0db7be2e  include/hsa_ext_amd.h
  9df4701c7f8f25d502bdadccbc97581c  include/hsa_ext_image.h
! e72a53cb02cb3b138d2e581ab5e1c80f  include/leb128.h
! a51d824d218ae447ac65c3ceb509144a  include/libiberty.h
! 78becd47c686b12745acc17de795e739  include/longlong.h
! cff0f0d0454b9eb1d0303ffc45370be3  include/lto-symtab.h
! c2309784dc5b0e78facc40ffd1d2c317  include/md5.h
! 8b725d16096daae5ae90866e7b83e188  include/objalloc.h
! abb08fad8bb7e224935202281eb1839d  include/obstack.h
! 39a0b8092fdde13245d7faabe5971c91  include/partition.h
! 82fa61abde9968b98397fb91cb87939d  include/plugin-api.h
! b6bc18ff7e3681049201bc69010936b9  include/safe-ctype.h
! 300038d29640f15cd9971bacd2f7bfc5  include/sha1.h
! 0cdbc5bf38d312991a92e6816c21cb9c  include/simple-object.h
! 142254129ea1ef93927b0885e4867476  include/sort.h
! 5763f96a28ee1fb6241004268ee0b8c4  include/splay-tree.h
! 9739cc8fd40f3a1e6bb84e0c16523bca  include/symcat.h
! 63bf675eedb0d220750f16ddd9698ac9  include/timeval-utils.h
! 5da103c1d5c09196f56a9a45fa881733  include/vtv-change-permission.h
  53bdfdb5cd3c0c7831611602041cda52  include/xregex.h
! 82bb127144a0a6e3fe7fe28b58d5ffcf  include/xregex2.h
! 5b7dc4eb0d130a5e69585036ec952a8b  include/xtensa-config.h
! 7c9ba9d93474d91c7467ed1f1ed2f088  include/xtensa-dynconfig.h
  361482dd6b5b5eb7090fff3986fba68a  install-sh
! 8f65925c146f7501945b3d06fe3059e0  intl/ChangeLog
  a5f61a727ebbc9d02c42160796629b91  intl/Makefile.in
  6ec998bb4716c744bf8185e607f69301  intl/README
  76ca170a525d5b84d90f0478fe788931  intl/VERSION
*************** ec38b8a64a735196854a8f7d76b79a78  intl/p
*** 91867,91938 ****
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 42b79a68aeb02f089da78a7e4d6d3b82  libada/ChangeLog
! 4a09495968cafbde4305e247d508584d  libada/Makefile.in
! c851e0f50ad5e334f1cdf3b8c0bae3e2  libada/configure
! 7eed03bb14fc3b93e0ca88cd5bdac93d  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 941f1a55c4ac0847eaf94ef86fa4e282  libatomic/ChangeLog
! 21f5e5567f586aa064e67dac9e843ed4  libatomic/Makefile.am
! 8f480fdd121c7e44c048fec76c598b1f  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
  d93a7644df6ecd2eda448dcb5b1baeb3  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
! cc43d3da3323ebb864e378192abf623b  libatomic/cas_n.c
! f2f0955b4b2e72c24386328305c9fd50  libatomic/config/arm/arm-config.h
! 6724325dcd24a0cc1eafb6f0da243043  libatomic/config/arm/exch_n.c
! 6b272347b6495b829ff036ddf4d65e93  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
! c5b190c52af75114686644e99c4b6506  libatomic/config/linux/aarch64/host-config.h
! d00903d83ee36612295da93aa67615f8  libatomic/config/linux/arm/host-config.h
! 4733746f5ab1d509a77b0eaeb6400e5c  libatomic/config/linux/arm/init.c
! ef4e81861bd67443d83d7191338a1ca9  libatomic/config/linux/arm/load_n.c
! d27e0c8119c16d2f8df89f1d92f8244c  libatomic/config/linux/arm/store_n.c
! cf49fce1f1deab0447bcc10681e0a5bf  libatomic/config/mingw/host-config.h
! f74a97c64676d9c70c8fa18bf098663a  libatomic/config/mingw/lock.c
! d625c1b7d1832a18fe30ffa767a439c6  libatomic/config/nvptx/host-config.h
! 14d98705c3c9646ace69bf0ece39df86  libatomic/config/nvptx/lock.c
! 872ed5850c2201837008ffaf58c8f5d6  libatomic/config/posix/host-config.h
! f55b04d5b2ae08487d085c85b72d8bf7  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
! 2685c416d9d43704346760a27582ebcc  libatomic/config/rtems/host-config.h
! ad2d20b998e3fcbbd3e3a20240b92690  libatomic/config/rtems/lock.c
! e37b2339ee0883954c051aa8a0c07e95  libatomic/config/s390/exch_n.c
  ed3d69739cb2f35407547229f0393f92  libatomic/config/t-aix
! 85d55cac5def9acaf8e0756bd88c8729  libatomic/config/x86/fenv.c
! 15896d8a75f9ebcabcdcae306a69b73c  libatomic/config/x86/host-config.h
! 05f622cf0d4c0835d0b1344823768127  libatomic/config/x86/init.c
! 2797d4d7172fb44898092068c981e7b8  libatomic/configure
! 1c45079ac9287898fbaa72bbcdd6aa88  libatomic/configure.ac
! daef96126cb6545af77cca015f70f444  libatomic/configure.tgt
! eb9949e6b55762d5ca8097d87a0ecde6  libatomic/exch_n.c
! aca506bce8170dc1a5611bba2713261c  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
! 281f1f39791d26a4b400e2248d8a38ae  libatomic/fence.c
! 900663bf922f0466524c7a0f0539ba70  libatomic/fenv.c
  2939db87e049993b583497188f079e6d  libatomic/fior_n.c
! 2b2007c79f24eaa19e04b256d28d3e3c  libatomic/flag.c
  b3ccae58518e27bb730ed84c99a2eb0c  libatomic/fnand_n.c
! 20d2f71ed22a322eea9e575a2ac2a6c5  libatomic/fop_n.c
  834a4e99e9b5231aaa54e4802aecb241  libatomic/fsub_n.c
  fb7579412eac2bf65459985ea4c7f320  libatomic/fxor_n.c
! 822e8b900dae38579b88b5b258dc757b  libatomic/gcas.c
! 0a615526a1375d5991e35f665b7d769b  libatomic/gexch.c
! 3104b550aa1ff9dbcf88ac0046664bf1  libatomic/glfree.c
! c508d202179577507775b3546137e9bc  libatomic/gload.c
! ff11e38e794f4b444608960e28408f54  libatomic/gstore.c
! e24ec62f319ac2ab4d59e16ae03bcbeb  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! f35f615cdadd769aaffec129d390f446  libatomic/libatomic_i.h
! 88d230edd23c5d152f266722c2014aa3  libatomic/load_n.c
! 4e18ed22cf21e8d8fe69119064afaee6  libatomic/store_n.c
! 78bc48d9aebef28e1b428def172cf7c1  libatomic/tas_n.c
  8772872393a7b4f226a2ff99cd0767b9  libatomic/testsuite/Makefile.am
! cf82f0c401eb889e2309404fa133f087  libatomic/testsuite/Makefile.in
! 88850c9ff315083f74a05c36039af35c  libatomic/testsuite/config/default.exp
  3e77a79fd1e00a1f4e5fbf507474e1e5  libatomic/testsuite/lib/libatomic-dg.exp
! 930ac630fd95841528d4df333d275f9a  libatomic/testsuite/lib/libatomic.exp
  97fdc33cc25788d4b9dc1db6aefed760  libatomic/testsuite/libatomic-site-extra.exp.in
  6b8763cc8b07ca01040138d742a984f0  libatomic/testsuite/libatomic.c/atomic-compare-exchange-1.c
  773f995ba0a3ab509251361826397852  libatomic/testsuite/libatomic.c/atomic-compare-exchange-2.c
--- 99824,99901 ----
  b4758a0194e3e41362b939911472ce62  intl/relocatable.c
  bedade7bcfc3bc5eb09a2c6844f637f3  intl/relocatable.h
  43f287d082528203fc85c1d2d81bf30d  intl/textdomain.c
! 5d73924c8d46ff1c8814af444a810559  libada/ChangeLog
! dca5ce4eb1363d83b4ad5b9a53945d40  libada/Makefile.in
! c84521662479d4955e33fae0dded80b9  libada/configure
! a7a500814e0b8f1c0566431969ec0b61  libada/configure.ac
  46d3fe6da7a771cc2d5420c4137a6861  libatomic/.gitignore
! 1acc2aeaac965ece69da863a81e8bce8  libatomic/ChangeLog
! 341eb3cfc5416fe2e8b441ba30b064d3  libatomic/Makefile.am
! 4b64390f7024f015eef3741123d570bd  libatomic/Makefile.in
  04a8eb275561484cf0d6f8c459a38177  libatomic/acinclude.m4
  d93a7644df6ecd2eda448dcb5b1baeb3  libatomic/aclocal.m4
  b741b38c451feebdcd9aedce6e37b702  libatomic/auto-config.h.in
! fcd290accdbd34e650bed8d58754c040  libatomic/cas_n.c
! 2e1365b4beaf7423d28a591c5c7544c2  libatomic/config/aarch64/aarch64-config.h
! c9cacfc64d3cf19e6879341cdf1f0b3e  libatomic/config/aarch64/host-config.h
! b795411336ea37fee2d2971597967313  libatomic/config/arm/arm-config.h
! 39746dec7d61a55262e77e966db03cf1  libatomic/config/arm/exch_n.c
! 03721fea5b66271f6af702a80b072f47  libatomic/config/arm/host-config.h
  db43cf5a187a91251ef3198570679f95  libatomic/config/ia64/host-config.h
! e2f83238e16cb0617635a51d858586c6  libatomic/config/linux/aarch64/atomic_16.S
! 7c74f198af4d2cffb41ca2aff3f3ba37  libatomic/config/linux/aarch64/host-config.h
! 1edc2f81c8bc3f0c2911e3af891a0a37  libatomic/config/linux/arm/host-config.h
! d8dd1496d0a47e0c36547274ddb129a2  libatomic/config/linux/arm/init.c
! 54dfed278e96c1c3d6019414564adf5d  libatomic/config/linux/arm/load_n.c
! b203dc97760ced0dd6b989ddc85de233  libatomic/config/linux/arm/store_n.c
! 499c9b858ab0b6a31b571f05e2f35da0  libatomic/config/mingw/host-config.h
! 62cbf2fa3900c584b4346bf2bf38d3bb  libatomic/config/mingw/lock.c
! 32947feebf3d4e7e09c04cb9ac2f9cc0  libatomic/config/nvptx/host-config.h
! d095a6f286a5cf65c278619ac9e3ebe9  libatomic/config/nvptx/lock.c
! 06a4055a895b52254dbd86a62a16cb0e  libatomic/config/posix/host-config.h
! c44a36cc8503d04241e63432ee3cbd4b  libatomic/config/posix/lock.c
  d04f86e742ddfedb71fb4a3d0ceede39  libatomic/config/powerpc/host-config.h
! ae056c7038d61ce6191ec149aee8f69b  libatomic/config/rtems/host-config.h
! 08b0225a8b5565ea77c2a80132653b12  libatomic/config/rtems/lock.c
! a8478ee8d2cd46e9a043499fcd5a5000  libatomic/config/s390/cas_n.c
! 30db11280d4589959f3718c574d2b676  libatomic/config/s390/exch_n.c
! a5662851f79984e0d6f62988fd02f2e1  libatomic/config/s390/load_n.c
! 49767832346a46e0dba239734437126c  libatomic/config/s390/store_n.c
  ed3d69739cb2f35407547229f0393f92  libatomic/config/t-aix
! 938ddd95f5b63412d99f921d636209d8  libatomic/config/x86/fenv.c
! 148d73b0ff94862385a29b3044d0054f  libatomic/config/x86/host-config.h
! 4e76c91998f550cd3ddf8b06c92c47a2  libatomic/config/x86/init.c
! 0b168d83751ca52c618ebe5aca62c342  libatomic/configure
! 1a51ae0be38da3cb4467e1e203de3282  libatomic/configure.ac
! 277afe7345c609e309faa0e88f3c2dac  libatomic/configure.tgt
! 2afbcee010fed235f0dab936cc58e7b5  libatomic/exch_n.c
! 95f82f5ca7be952f61f67c87eeb4b5eb  libatomic/fadd_n.c
  ee6f02fad9bd551a906477f16740578f  libatomic/fand_n.c
! 2d3cb75637658256daf925e57cd9a86e  libatomic/fence.c
! b16416cae34b6ca6c2f4dcdc59ddbd35  libatomic/fenv.c
  2939db87e049993b583497188f079e6d  libatomic/fior_n.c
! a8b82d22d4d9204105b490e2f83e324b  libatomic/flag.c
  b3ccae58518e27bb730ed84c99a2eb0c  libatomic/fnand_n.c
! 9c51b93a9313c06e28e9264028e8259e  libatomic/fop_n.c
  834a4e99e9b5231aaa54e4802aecb241  libatomic/fsub_n.c
  fb7579412eac2bf65459985ea4c7f320  libatomic/fxor_n.c
! f38ed674ed3b85c765da7079f385282b  libatomic/gcas.c
! 9098eb107c6ec522f97de811a7466f90  libatomic/gexch.c
! 1f89acf8ca5c2d06f052c589766792e0  libatomic/glfree.c
! d510810c48afa63f686e31053fba87db  libatomic/gload.c
! 8324d293fee4313ffe16cc2b82a60e43  libatomic/gstore.c
! 4c0435bfd509851f3155e5246bf9a49d  libatomic/host-config.h
  0e7ef9ed2b60ec1c9afc38701d815f6c  libatomic/init.c
  2fe463a1aa0855eab0961f927f300752  libatomic/libatomic.map
! 2d8e2e16c0c6f0810c6e4cf63f901ce2  libatomic/libatomic_i.h
! 01e002bf1ce1abcfc6f7e61288a74547  libatomic/load_n.c
! 72bd14598b0099d65cc5f165048f190f  libatomic/store_n.c
! a9328f7b9bf813b6544ac50e3284467e  libatomic/tas_n.c
  8772872393a7b4f226a2ff99cd0767b9  libatomic/testsuite/Makefile.am
! 83c9ad417b936ec359ac986a0c942b27  libatomic/testsuite/Makefile.in
! 59e5f26946889503f21fefa38349540e  libatomic/testsuite/config/default.exp
  3e77a79fd1e00a1f4e5fbf507474e1e5  libatomic/testsuite/lib/libatomic-dg.exp
! 3660fb5d59f1937a63ffb5477e5ea37f  libatomic/testsuite/lib/libatomic.exp
  97fdc33cc25788d4b9dc1db6aefed760  libatomic/testsuite/libatomic-site-extra.exp.in
  6b8763cc8b07ca01040138d742a984f0  libatomic/testsuite/libatomic.c/atomic-compare-exchange-1.c
  773f995ba0a3ab509251361826397852  libatomic/testsuite/libatomic.c/atomic-compare-exchange-2.c
*************** c03a072efac9b30f8f8429ac52fd246b  libato
*** 91962,92055 ****
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! 80b9ad64bc77b538c3e0ccabf8304c00  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
! 77c51b931c509c106006d48ecb7e30a2  libbacktrace/Makefile.am
! d0c41a95e9b6adcd3647ee458f392892  libbacktrace/Makefile.in
! 1987c0495aeee1bc47709f399772173b  libbacktrace/README
  9535fdd392305d7ecfe0d5a189cbd85b  libbacktrace/aclocal.m4
! d3f68b9f9fda74fd4795ad871ac611bf  libbacktrace/alloc.c
! 07f9781de4778201637c24be1ec093a9  libbacktrace/allocfail.c
! 8288951045fc90ec3b44fb6fffafc877  libbacktrace/allocfail.sh
! 5083206713c4e0a36c4bafd3d2f1b81e  libbacktrace/atomic.c
! 891056bfaefaf7f2c85d1ea58884c4e2  libbacktrace/backtrace-supported.h.in
! c3dd22be35f6839567ef314b2de6e0fe  libbacktrace/backtrace.c
! 885265981a77c08a412157716c6263ba  libbacktrace/backtrace.h
! bcb151ba9759753058f79a2ecdf8ae4e  libbacktrace/btest.c
! d80381bdd74336b121a4f087efc21dbb  libbacktrace/config.h.in
! 3ec75f7fc12e032e65203a5c07566450  libbacktrace/configure
! 13504e078ff0cc48b953f78869e13a5d  libbacktrace/configure.ac
! 181424f543177eb964cd269ae19d0a52  libbacktrace/dwarf.c
! 72f89437088c5bade5378ddf6b6a5aa8  libbacktrace/edtest.c
! 740c93fc7a3edd8993bc435d13fb819b  libbacktrace/edtest2.c
! fc2ff7336da303d175efdac0a6f46075  libbacktrace/elf.c
! d001c61d4c712f0175219876a79951cc  libbacktrace/fileline.c
  4fefdf2c043fdefb2736e03efee4b2c3  libbacktrace/filetype.awk
! 1b119c583c86f2bcd4fe07c0fde84a9a  libbacktrace/install-debuginfo-for-buildid.sh.in
! 64a8a7413867f8a0844248e523b9d3b2  libbacktrace/instrumented_alloc.c
! a68f98dfe4afb7b9a20502a6561286be  libbacktrace/internal.h
! 6cf29a76f9a05c90007e72579627989a  libbacktrace/macho.c
! d1e7d60fc7695adc7f56780e496f281c  libbacktrace/mmap.c
! 5cfa64b6c98605608a279c0605d47349  libbacktrace/mmapio.c
! 5fa19cde7c2b905cd1884f487ac1bd7c  libbacktrace/mtest.c
! e1373e20793eeaba39a2631aff7a1dd6  libbacktrace/nounwind.c
! 702034a7f92f10a9ca9ec100288f20de  libbacktrace/pecoff.c
! 4336bc8862faeff512309bb35980a799  libbacktrace/posix.c
! 247cdcbbcf5072634d3eeca4c0d6b58a  libbacktrace/print.c
! ffc9fc9884b1dec1a2b1d7b6e4d9eefd  libbacktrace/read.c
! cdf24c89f15d6e5b31a7c346ecc0d06e  libbacktrace/simple.c
! ab3b17364d1bc634c888b947a70e29fe  libbacktrace/sort.c
! 81e832e0838dcbe975a4e8cd36736387  libbacktrace/state.c
! 384ee0f93e9b83fe7a80fc5dd89f42c9  libbacktrace/stest.c
! 66624cb13bdcd12546026339d18f4068  libbacktrace/test_format.c
! 2701c15ce4cdb8fcb2082adbb2280a8f  libbacktrace/testlib.c
! 85bae130ed0b3ab515ded2cc9d98315e  libbacktrace/testlib.h
! fbe995bcdcf97bf120f47421e28797d7  libbacktrace/ttest.c
! ef82780a07b004c254451fc3a09250dd  libbacktrace/unittest.c
! 02d4e3daee0b1287ee78b1d122eb249f  libbacktrace/unknown.c
! 3c331b1a8a552d16255da8a5927b45a3  libbacktrace/xcoff.c
! cb6ac36c0dd658645079581b8ed02ab0  libbacktrace/xztest.c
! a8507bf3a9e7e68d9aa1a4154d7797ed  libbacktrace/ztest.c
! 46f970210959a05e5a698c7a5f76892e  libcc1/ChangeLog
! 745ddfe6eed3591d250a7d36011bcc81  libcc1/Makefile.am
  4c0714d9e0254b52de979d8acb09c146  libcc1/Makefile.in
  b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
! 41ff53908c894e13c66cadd5e4dcfd0a  libcc1/callbacks.cc
! a805778639ec8a3d107e9cc2bce18394  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! a29ed2716c7610b2acf1ad27949c803f  libcc1/compiler-name.hh
! 2c33f41d692f12bc5c9b6c616cf04ebb  libcc1/compiler.cc
! cdba566ca0809f7b369ef688205319cb  libcc1/compiler.hh
! 708cab96d5c060b108341f26412e7bd3  libcc1/configure
! 359a4143a87ad019fd32831deae070f6  libcc1/configure.ac
! c7708e3d0d226254d1d38736274344c5  libcc1/connection.cc
! dda0894e1865dfd5d96ddc585ad40b22  libcc1/connection.hh
! 8f0c3d783aee46b64bf8ccfbfa04e903  libcc1/context.cc
! 846b3d90b0136828e3ce0cc325a3d0ab  libcc1/context.hh
! 610dabfc22e0d40c6ed9de01fff9c616  libcc1/deleter.hh
! f09f79b0ab5a4bb38091f03d9e2eeb3e  libcc1/findcomp.cc
! dc912c004adc24445847b1ab9a5e3cfe  libcc1/findcomp.hh
! 3d6bd13fe6e7b16d5cdb484b69befcc0  libcc1/gdbctx.hh
! 15c340f9583b429a5f046a42a3459d80  libcc1/libcc1.cc
  99b3a25ce17ed584d9f0aa42b4713938  libcc1/libcc1.sym
! 47a4062c85b0de634c3a8546c8f4176b  libcc1/libcc1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcc1plugin.sym
! b529745bee556d9b313b6d95b0b4a86b  libcc1/libcp1.cc
! 8f52cc449d7a4c6b0a93aa0dfe122511  libcc1/libcp1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcp1plugin.sym
! e8e40807807aef0dfd3ba1f577779fc3  libcc1/marshall-cp.hh
! 66b3f0032468a289cdaf735dff4cd2b4  libcc1/marshall.cc
! aac6ed80ed928d1a88f39c38a5f63d3f  libcc1/marshall.hh
! 28623045d84c1d6b8e3d7829fb01e446  libcc1/names.cc
! 065c98255b3a9ee6ee9eada27e8dac15  libcc1/names.hh
! d4ee807c6a65de91a4e770fdbf7781b7  libcc1/rpc.hh
! b69641cecc09e16fc04d93dc2ad3be4d  libcc1/status.hh
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! d2ece5a49b715b5e3faac97cb7740782  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
! 078d1fd2b3c40db6c184e4c3833bc8e4  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
  99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
  69dd1db758b0ea369d20d7331d889ef5  libcody/client.cc
--- 99925,100019 ----
  8a7308fda7ed1543cb9e3be0f8e47bce  libatomic/testsuite/libatomic.c/atomic-store-5.c
  40618200985a15bcba64f871863da498  libatomic/testsuite/libatomic.c/c.exp
  97b0c9cdfcb733664bdf4efe0f5dc449  libatomic/testsuite/libatomic.c/generic-2.c
! fc24f1abb3f561b1cc549278a9e616e9  libbacktrace/ChangeLog
  eb3a88b53140eb234a99a4b3a55e56bf  libbacktrace/ChangeLog.jit
! 5431de88dcbaf345c8d41207e69831ed  libbacktrace/Makefile.am
! 8a9d07c55aa13be8dcb16f5cdfae20f0  libbacktrace/Makefile.in
! 944b848a3c4430ba86d5ef2eb1d7d153  libbacktrace/README
  9535fdd392305d7ecfe0d5a189cbd85b  libbacktrace/aclocal.m4
! b860d476d6b0c9ac744e72131d44efb5  libbacktrace/alloc.c
! 7cfd30e8c7ba4ba59f2e479e5147943a  libbacktrace/allocfail.c
! 508c96a919d7cdccef9c0c5935e179d6  libbacktrace/allocfail.sh
! 572db9cc0c537ad59aa5e83fe1efadac  libbacktrace/atomic.c
! bad7ca9451f51687b19756531cfc14cc  libbacktrace/backtrace-supported.h.in
! 91c25c4d7fae5c6ad6a7ea42a537392c  libbacktrace/backtrace.c
! 1697f81ace920c6aeb96559059809011  libbacktrace/backtrace.h
! 570e3d5eda4b1f1823a8813efe937976  libbacktrace/btest.c
! bec98ac9e726eba4eef812e6ec3fc2f0  libbacktrace/config.h.in
! fea573fa69b5efce82b338a534fe2f23  libbacktrace/configure
! ed356d8b30d0a6b891bb01aa42235285  libbacktrace/configure.ac
! 7f615149ed04dad316eceb4b4317318e  libbacktrace/dwarf.c
! 8777d01ad81d806757932fda2bd0ab53  libbacktrace/edtest.c
! b239bb9aff161d5af88a25c3f268cf41  libbacktrace/edtest2.c
! da5c524a395c4d8a1ed48905c15f6374  libbacktrace/elf.c
! 57c32d39ca99db65e96aa80b932c861e  libbacktrace/fileline.c
  4fefdf2c043fdefb2736e03efee4b2c3  libbacktrace/filetype.awk
! ef296e17d968346e1fbd63a3d6320d6a  libbacktrace/install-debuginfo-for-buildid.sh.in
! 4adfded26efac6aec6ee1ec1c0384be2  libbacktrace/instrumented_alloc.c
! a7ce67396f61ad55be6073994b0e77c3  libbacktrace/internal.h
! cbb0696c0a2c18c9ee9c8ab4b7fab2c9  libbacktrace/macho.c
! 07ed26e1652a87eacd2686fb067c860a  libbacktrace/mmap.c
! 590df2569eac0dbc1350fcc582694bde  libbacktrace/mmapio.c
! e331e05b6bfad97b8d297acf083a1bb4  libbacktrace/mtest.c
! eb45ebe3ac297173fc337d1449cb28d3  libbacktrace/nounwind.c
! 3624c9b9b5419e6c369114f19b22c627  libbacktrace/pecoff.c
! 520c3cd6d4894c5bbb2baceffc145542  libbacktrace/posix.c
! 8b1928ef151f1f8e1ad21c3c062a354f  libbacktrace/print.c
! 8e089c2b6e4062a337bf4316d494b8a2  libbacktrace/read.c
! 4d7a92053d889da8b524c9115ff77d6e  libbacktrace/simple.c
! f9d4d0ce5d45b701173f0a352ec710fa  libbacktrace/sort.c
! d90f23986871233914385396314c8135  libbacktrace/state.c
! 6c6ba18375555ba8a8da2b70b0f2d9a6  libbacktrace/stest.c
! 73089548d30554de35060518602a6f22  libbacktrace/test_format.c
! a90d6e421fd0c9f2e8982463491842ac  libbacktrace/testlib.c
! a37f48eb7af8f0adfd0a41fe23b724c9  libbacktrace/testlib.h
! 2456b82bc67ce14523bf51f067758b5c  libbacktrace/ttest.c
! 7b8f05951f6f534a7aa40e052e8bb611  libbacktrace/unittest.c
! 4424e7196573814ed5e4c457e50d8d1f  libbacktrace/unknown.c
! 76cdbe058a9c0696677a153471f234ab  libbacktrace/xcoff.c
! 7f1f78dcf5b2c12c7827ec55b61d90ac  libbacktrace/xztest.c
! b1d9a7864039f67c0ea043f66fc245a3  libbacktrace/zstdtest.c
! 586b56fbae916b5d8c89226d03eecbec  libbacktrace/ztest.c
! ef2d3a1ba908d90fd039e5f4768f6349  libcc1/ChangeLog
! d780af7af66b50fb66c1bcf6745b61e2  libcc1/Makefile.am
  4c0714d9e0254b52de979d8acb09c146  libcc1/Makefile.in
  b39668f1b706dbfe7203b3cfa277b792  libcc1/aclocal.m4
! 9c4fa07708506d4b2aff76ad7655ac01  libcc1/callbacks.cc
! 9e9fd938539b55d49a1761c6cc39ffa5  libcc1/callbacks.hh
  9d81ce1461f24e4af7c8639d94f06789  libcc1/cc1plugin-config.h.in
! 22a815723f6cda23930e214cf7f410da  libcc1/compiler-name.hh
! 3da72f1980b4445b9e223a3e2e6ac1cc  libcc1/compiler.cc
! ffb736d66f55a6d5ac37b3262f166941  libcc1/compiler.hh
! 5ac87fdf5f66f610c8b4ec6a9e2befd8  libcc1/configure
! 730c44909602654d047543da4674694f  libcc1/configure.ac
! fe3255e35221a66fd5a3267d5287be3f  libcc1/connection.cc
! 0e4a747b5350430a1c83053d5dc24c97  libcc1/connection.hh
! 0fdd8e7ab28dda8af05a913576fea8c5  libcc1/context.cc
! 8ddc0b790b307f34c5e8c3c8e02dfa94  libcc1/context.hh
! 1438d121dd197bd38db62a349103836c  libcc1/deleter.hh
! 082a8cbeb5e737562a9f1ada0d28906f  libcc1/findcomp.cc
! 5dde31522e4a812398a74f968031cb7c  libcc1/findcomp.hh
! 474b40d1a2337b3af30e4c614858b3a9  libcc1/gdbctx.hh
! 4ca29136d56d93b1cb0d1a8f3c93cb31  libcc1/libcc1.cc
  99b3a25ce17ed584d9f0aa42b4713938  libcc1/libcc1.sym
! d1c2ecdfdd74a6aa838e5d0ac1b1eaab  libcc1/libcc1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcc1plugin.sym
! 97c8659eb769a3c0ef10ce0aa9bf138c  libcc1/libcp1.cc
! 6552d1f347ddc1a41118a602ec339fd4  libcc1/libcp1plugin.cc
  75503db6a0981a95d9c29d9607b29380  libcc1/libcp1plugin.sym
! c5fbe5f178819ac678538def0b070f6e  libcc1/marshall-cp.hh
! 435466b41dd35ae53922063a863d20fa  libcc1/marshall.cc
! 5d801a05fdc9c4683695c673fceefb99  libcc1/marshall.hh
! 6107ae5f628c25898467691fa5f92fe4  libcc1/names.cc
! 37b30bae12a6514c3ab85117f563624b  libcc1/names.hh
! eb53703cb38b14f13a443c6946fde8be  libcc1/rpc.hh
! d0eb9eb0a1908e5adeca21c5333cca67  libcc1/status.hh
  8e32b4f309146e8842db7a077d77be28  libcody/CMakeLists.txt
  c96a56ec7f0400e30e99a9aa445e0425  libcody/CODING.md
  b5243c8c76fc965a409394a30679e613  libcody/CONTRIB.md
! a3f104c74045933fe34fbe182841f468  libcody/ChangeLog
  86d3f3a95c324c9479bd8986968f4327  libcody/LICENSE
! ba83ee39cdf97b35fb51d4f39880aa89  libcody/Makefile.in
  ca1c6fe3df5427016005ce753c73d454  libcody/README.md
  99ad81d536fef63b80b7f776f0dec53c  libcody/buffer.cc
  69dd1db758b0ea369d20d7331d889ef5  libcody/client.cc
*************** cffdeae41b78da05839b193e90188f55  libcod
*** 92066,92220 ****
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! 4ce5a41c0fbeb516ac06a0f1fb9d0f93  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
! 286a774a854575468546d8fce202733f  libcpp/Makefile.in
  9d15bb14e9ac1a74366e673ea260722e  libcpp/aclocal.m4
! 3d0ccb13dd34e87b038c4cac85bf9cc9  libcpp/charset.cc
! ad1fc7d0f136e5ac8c708195413ee0ef  libcpp/config.in
! 1764a1db771b71a802dc82b9150cdb5e  libcpp/configure
! 16b4cfeae466a8b2a409bbc537a4729f  libcpp/configure.ac
! 7d0aa433f29934552c1ac275e1547a41  libcpp/directives.cc
! 70a58341348ba9949c98cf4bb6125dbe  libcpp/errors.cc
! d098c1d7afbbe1618162985c263f8ce9  libcpp/expr.cc
! 226d5bfee0c65994a834c831a5d82b80  libcpp/files.cc
! d5218c1d5fc8cde726dc168fafef10a7  libcpp/generated_cpp_wcwidth.h
! e0818fa4239f8ba3958c995630136377  libcpp/identifiers.cc
! c0e59e6492ae26a616e59ad8e1bcbc29  libcpp/include/cpplib.h
! e0ecf491e0d75d9fb4a83d9812c8704b  libcpp/include/line-map.h
! 232954149f32cc32e54bbef19c0a4b57  libcpp/include/mkdeps.h
! a1a78400707f80a1a54a7d9b16810e5b  libcpp/include/symtab.h
! 7b423055aee45272063c65dc7317f67a  libcpp/init.cc
! 12339c1e6f2d40079702f5fa3ff9a749  libcpp/internal.h
! 72cfbc4875a217832f21210eef1ea63b  libcpp/lex.cc
! 4af47955f81f498c006099ecab0c5942  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! 4cd79d71d4084044415e110329fbef40  libcpp/macro.cc
! e6be2734d60fae9b46b4ed87f86d31b2  libcpp/makeucnid.cc
! af6c487ab06b1986efc158cb9976be08  libcpp/mkdeps.cc
! 7d48679b422952c0f759fec7d4706be1  libcpp/pch.cc
! 61f3575c1d069fcdf1f84577e4e9ec37  libcpp/po/ChangeLog
  768453cca0d8c0e2666a269e0aff862b  libcpp/po/be.gmo
! bf20994ad02b0e524091092e6fe86885  libcpp/po/be.po
  6d54c123e102174620d1738492df73d5  libcpp/po/ca.gmo
! 91d6c405d02690a1d0458b4620f655de  libcpp/po/ca.po
! 8dc4eb36d19d7a8f1e2e30867ac7606c  libcpp/po/cpplib.pot
  e5e81aa7ea0601dfcbd6a4d46269d803  libcpp/po/da.gmo
! 20f6947f5818e8b5c7dce467b3de01d5  libcpp/po/da.po
! c0c7bfef03d686878b845baa07cef45f  libcpp/po/de.gmo
! 33cf90be9f918ade12b05853e87dafd2  libcpp/po/de.po
  9d8037a85a1603875c62ac38b52bfe1d  libcpp/po/el.gmo
! cf2cd4b899d7861809eeb3a1a2c9a96b  libcpp/po/el.po
! 97bb64ea4aff35b50573ede294f1e02f  libcpp/po/eo.gmo
! 86c5cc5440e87990b8710f48b9e263da  libcpp/po/eo.po
! dd58be1d9edc8c959c689afcd18e5e05  libcpp/po/es.gmo
! d90d33c26c2401a102b5c0c5f84d1176  libcpp/po/es.po
  dd372f52d2bf706aa6f9d5ad42e18fc0  libcpp/po/fi.gmo
! f0ffe8749b6e7a62ce066896f0e674d1  libcpp/po/fi.po
! 1c19c4937b0627b23ea91e34b7e9a4ef  libcpp/po/fr.gmo
! 0898f476660020d04ed9a307b5bd6fb8  libcpp/po/fr.po
  1f25accfdceffa4f72251252a589b349  libcpp/po/id.gmo
! 276fa54a6992c84bcd60518a9e73242b  libcpp/po/id.po
  d16137a8e7e85bccf28abe5c4ad0a81f  libcpp/po/ja.gmo
! 97b9b50f1330eb7f7999622db5374aa7  libcpp/po/ja.po
  97f7d8c43b9396b6583aa19c89c94f63  libcpp/po/nl.gmo
! f6dc4fc4e6adcfa756445376076f93d8  libcpp/po/nl.po
  e832c298fe4b672833e11250da447dea  libcpp/po/pt_BR.gmo
! a7084af6bf435b6ad7d25e8af854f81f  libcpp/po/pt_BR.po
  464301757d509807dda637b49cd2c108  libcpp/po/ru.gmo
! 7619fbcbf52607c6cb1b5ad9c64095c8  libcpp/po/ru.po
! c9ae56c718fc9284230cc2ae3ede111b  libcpp/po/sr.gmo
! c5cde90bbf97b46dad9d9114fc33a01c  libcpp/po/sr.po
! a2762a01b70ae4780fc842e7a9d0b1a1  libcpp/po/sv.gmo
! f83530a3fff313d2abed76f57b681570  libcpp/po/sv.po
  f0d926b72cbbccfc7a082af283a14dc4  libcpp/po/tr.gmo
! cae0e78b7f59e67d2b80494ca795e312  libcpp/po/tr.po
! 756b66e9fb0a31a48497db2264fee931  libcpp/po/uk.gmo
! a995ea08db09ef86a6c6038b5de9b03f  libcpp/po/uk.po
  d7329d40de2565a890e0ad0f2376dc20  libcpp/po/vi.gmo
! 8f992998a9ec51ce5ccf0f3719d5cc8d  libcpp/po/vi.po
  0bdf646da4277d7ba4dd64ab87e18b91  libcpp/po/zh_CN.gmo
! 795e13951e9e74e0f2ce83005e5d4a54  libcpp/po/zh_CN.po
  b375e96c670c3f0dd283014bbc260422  libcpp/po/zh_TW.gmo
! af9ddfabc1dbfa36a743fc63a103ba63  libcpp/po/zh_TW.po
! c31c897eac8d6ae49fc1d381f67dca3f  libcpp/symtab.cc
! 05e232046ab4c21878efc2b5678a0155  libcpp/system.h
! 61fb8513c1c8cb1ab4e2600a9249f42b  libcpp/traditional.cc
! 304e436610cf39f2edaa1e8746827272  libcpp/ucnid.h
! 32535698d6e28c93288fdd4db1a5d6b0  libcpp/ucnid.tab
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 937709af5630e39098b95b9d2cda881d  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
! 0fea971da3ddcbb3bd8d3bfb4c347302  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
! fcd95e772441fd44d03b876599bac113  libdecnumber/bid/bid-dpd.h
! be283d009215bf515219b868e1d86bda  libdecnumber/bid/bid2dpd_dpd2bid.c
! ba4c5e2877d797a1bed3fa86c59fbd8d  libdecnumber/bid/bid2dpd_dpd2bid.h
! 83803ed7d3d1a06156fec9c6bec9991c  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
  f8df5b96d86c867ad233c6f0d3e2541f  libdecnumber/bid/decimal128Local.h
  eab7eeba10520ab4a805774d42b8f9dd  libdecnumber/bid/decimal128Symbols.h
! 30a4eeae3709378fad33a3f892b66969  libdecnumber/bid/decimal32.c
  43b6b2bd872ad984104804b1b20fb10c  libdecnumber/bid/decimal32.h
  c5864ab84549ca0f34188ce5b057bbee  libdecnumber/bid/decimal32Symbols.h
! d2eba0209bea1b129deac600f962c775  libdecnumber/bid/decimal64.c
  8c612aadae9886f1a72212f93d8651c0  libdecnumber/bid/decimal64.h
  9f903ba71afb574bfa3a0f3cd2f9fbc7  libdecnumber/bid/decimal64Symbols.h
! 0dadaf771db36bc33a8f3473b24ef134  libdecnumber/bid/host-ieee128.c
! 47f8901fdd4193a4d7e4a4a7aab2831b  libdecnumber/bid/host-ieee32.c
! 9a0f83ff2eb0e7723f5754599f307cd6  libdecnumber/bid/host-ieee64.c
  76d4afd0dd1c0f5e776cbc40cf2e91b3  libdecnumber/config.in
! 09c7c1f96e7cfb070fc82ecf1b0a75d7  libdecnumber/configure
! ab25cf7a23d1c8ce86aca2500bc05352  libdecnumber/configure.ac
! 7d4e773c2af35c605948373ae955587b  libdecnumber/dconfig.h
! c538e47f367dc009c9046aa621b5f6de  libdecnumber/decBasic.c
! 3559ee594a3a5749a9fe711597b4cb47  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 2302457d648f4611ae95d425a8229539  libdecnumber/decContext.c
! 18bbd8adf701fb1b08703ea946725f8f  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
! 8ddbf94e84a4594525ef48163ff775cc  libdecnumber/decDPD.h
  8f3ac08d4cc421cc89035e90c890bb09  libdecnumber/decDPDSymbols.h
! afc7b595265f20830317528ed21effb3  libdecnumber/decDouble.c
! 213cf62b1729437164283c8d4e1484de  libdecnumber/decDouble.h
  22e16083bf3d0b76c4736f7f6382cfb6  libdecnumber/decDoubleSymbols.h
! 2d95faa26b1e93a0b72d2cff03cdef42  libdecnumber/decExcept.c
! 8406e2d38f3be5bde508eb1b708edd41  libdecnumber/decExcept.h
! 9f95a080701b03590f3f80e56ae61956  libdecnumber/decLibrary.c
! 537d179b413a56c91525904136b9e3f8  libdecnumber/decNumber.c
! 8c4d2c0b29fdb7b49d67ec9beda0cc2b  libdecnumber/decNumber.h
! 72c443a4a8403bbe19664bb8614eba22  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
! 90e5a1aac06a33dbe9bfde2c274d143e  libdecnumber/decPacked.c
! 1cd2d1aacb4bc8508d6466353e2c7018  libdecnumber/decPacked.h
  287ad6ebf8b8179aa843368e9600a3fb  libdecnumber/decPackedSymbols.h
! 76d3c1b6bdcc8d3b0c56032e64afec1c  libdecnumber/decQuad.c
! 425ae2340edbcac21690eb045bd5ed0b  libdecnumber/decQuad.h
  3851bae03416db42a85be1c5610f438b  libdecnumber/decQuadSymbols.h
! d417760aae583fc16c37e11e72f51912  libdecnumber/decRound.c
! 606ac309f1bffe19caafd731c2c07016  libdecnumber/decRound.h
! 9fcd5a7df5ee0e42403611581ef1114d  libdecnumber/decSingle.c
! 1fadfd5ab1e2956f188346a456d01ee6  libdecnumber/decSingle.h
  8998c4f3e69ea3d218b574a2defb9a98  libdecnumber/decSingleSymbols.h
! 12ef60c7d1498fbfa39420df0c6fb562  libdecnumber/dpd/decimal128.c
! 97fb671442762e76477c3ed46b698181  libdecnumber/dpd/decimal128.h
! 4a13a3e4504eda1f106d64f0fa70f872  libdecnumber/dpd/decimal128Local.h
  2f6da07ba897ca626a4f6d283feeef93  libdecnumber/dpd/decimal128Symbols.h
! f7d70d30063211e70ce330b682d35f96  libdecnumber/dpd/decimal32.c
! 7f791ae665548875ed21f3ebcf17ee79  libdecnumber/dpd/decimal32.h
  a97c47969dfc92a7666dfe3c2e1e1448  libdecnumber/dpd/decimal32Symbols.h
! 951e809c064c5f829e88d0aef643a675  libdecnumber/dpd/decimal64.c
! 88e1e033d85211b860055f29fcaab357  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! 006c8798661028ff539659f79b333ca4  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
  cc4552d9286c17a905988bf55f96def7  libffi/HOWTO_MERGE
  679b5c9bdc79a2b93ee574e193e7a7bc  libffi/LICENSE
  631bc8750a749106cf625001c1d6efb0  libffi/LICENSE-BUILDTOOLS
! 72b91c10f5a27e7672d22ca123ac8f73  libffi/LOCAL_PATCHES
  c55286ffa9013e1bc9fe188894b39e1d  libffi/MERGE
  69b70919246d2502e7fc4e745f088c77  libffi/Makefile.am
  d9aab5e2fbe2d4790d0327abe73e49e4  libffi/Makefile.in
--- 100030,100190 ----
  6419dfc879387358e95288142e569914  libcody/packet.cc
  688ece05c8b9d378b3df186808162e76  libcody/resolver.cc
  b1f3850fc5ac62999d1e124aa6f76531  libcody/server.cc
! f82e0bc526cf3dd443bc7f9213df203a  libcpp/ChangeLog
  2bd831b17997584e38305782cebe6948  libcpp/ChangeLog.jit
! c0a6ef2c7117069e80a305c7adaf1650  libcpp/Makefile.in
  9d15bb14e9ac1a74366e673ea260722e  libcpp/aclocal.m4
! 72b234433d90f1a7680e078b0cf77b60  libcpp/charset.cc
! 264a183fef9cee6892fda5966750091b  libcpp/config.in
! ece481a9fcb69fc638d9146bd6088711  libcpp/configure
! 0787bea9ab22732f1d0e46c88771d461  libcpp/configure.ac
! b441038d72bbfe5d18a0535fe9862846  libcpp/directives.cc
! 3e4b49fd3a19b54de9921c80cfce0321  libcpp/errors.cc
! 56c15f4e909e8d9891d42926a5c5479c  libcpp/expr.cc
! af5a15f7fb14aee661358d76d317e81e  libcpp/files.cc
! a91fac880a6d16a6c8bbbe6c25e2d8ac  libcpp/generated_cpp_wcwidth.h
! 111fc904696e6294b16734dc26cf7cb1  libcpp/identifiers.cc
! b5b49aa3751b8f8af89e3cc0d0ce0815  libcpp/include/cpplib.h
! 87e8fe9078561ac2e3c82a93795be1b7  libcpp/include/line-map.h
! 2c6f3e0894ec1a970c2d175f674fb5cd  libcpp/include/mkdeps.h
! fdb620c15e6f934b317e2311ee26683e  libcpp/include/symtab.h
! 72502fd7910efaafd6e57090d597fb21  libcpp/init.cc
! 9b75a240393d9ded89f1f53f8bde743e  libcpp/internal.h
! 464cc416baf80a017099625c34edb795  libcpp/lex.cc
! 9069946f6da4520e2be3263aba1fc15b  libcpp/line-map.cc
  46a07100f95f5e354c7e25cd19d26884  libcpp/location-example.txt
! ff413cbf5d61faa394a5ab2ef711257d  libcpp/macro.cc
! ab776697d1c83f80b45ce82ce889ce27  libcpp/makeucnid.cc
! 8200bcdbc955945f7651606e2f838c81  libcpp/makeuname2c.cc
! 5db6ce86211354562c9ae6339d3716ea  libcpp/mkdeps.cc
! d127e0980eecd90c5bbb6bcad6d44d9d  libcpp/pch.cc
! 245ce53b2b500343810d24b73e471fcb  libcpp/po/ChangeLog
  768453cca0d8c0e2666a269e0aff862b  libcpp/po/be.gmo
! a2192a718d535196be1091cf9c6c2ff5  libcpp/po/be.po
  6d54c123e102174620d1738492df73d5  libcpp/po/ca.gmo
! 1261125217f973d8dbe7503c2d493333  libcpp/po/ca.po
! 4677e4c7a90c44f214b5700f49c4ecb5  libcpp/po/cpplib.pot
  e5e81aa7ea0601dfcbd6a4d46269d803  libcpp/po/da.gmo
! 498e008db7233fe5d4badac23691d05a  libcpp/po/da.po
! 55c482205082e1dd4eb78fe792744dd9  libcpp/po/de.gmo
! 0a71cb05a2c6b067c81d9b48505a8415  libcpp/po/de.po
  9d8037a85a1603875c62ac38b52bfe1d  libcpp/po/el.gmo
! 54f7163e6e1cf5141ab1b50160cfb01f  libcpp/po/el.po
! 464e7507ac048ac7cef20f8f26460f9d  libcpp/po/eo.gmo
! 02c479377b7fd3ef073d8cf147d26497  libcpp/po/eo.po
! 930ae5926382e8d66f8dad5200974f06  libcpp/po/es.gmo
! e11ae882708e0259be7885e42729f661  libcpp/po/es.po
  dd372f52d2bf706aa6f9d5ad42e18fc0  libcpp/po/fi.gmo
! 8ffbecde56c2ca22c582f5776233eb67  libcpp/po/fi.po
! 764a274c52e8eda81fcc2fae5745af29  libcpp/po/fr.gmo
! aafb3740cef0b63fcdc0b1f2b9d888f2  libcpp/po/fr.po
  1f25accfdceffa4f72251252a589b349  libcpp/po/id.gmo
! 7c78758201adf694f7c7b61f1ca134cd  libcpp/po/id.po
  d16137a8e7e85bccf28abe5c4ad0a81f  libcpp/po/ja.gmo
! b9580e522bd0c48fd49115fc19da95fc  libcpp/po/ja.po
! 0c9023719810e8dcb327d8192bd6e050  libcpp/po/ka.gmo
! 9c7223ce8f439aaf4199e036f30ce712  libcpp/po/ka.po
  97f7d8c43b9396b6583aa19c89c94f63  libcpp/po/nl.gmo
! fa21aa41b852655af402e39af974538d  libcpp/po/nl.po
  e832c298fe4b672833e11250da447dea  libcpp/po/pt_BR.gmo
! 88fd8b789680113135e69c11a59b02fb  libcpp/po/pt_BR.po
! e49484ee1b0ac8c8108111d1cb188bb7  libcpp/po/ro.gmo
! 377b2e8ce6e7e52b7e7ff24052682403  libcpp/po/ro.po
  464301757d509807dda637b49cd2c108  libcpp/po/ru.gmo
! e9b29d51febee94022760ac3722b0ce1  libcpp/po/ru.po
! c6058e6fa1f1e6b18e2fb66c4000bae8  libcpp/po/sr.gmo
! 78b4dd02b60f50852a4041e47c6d3096  libcpp/po/sr.po
! 21168214f5d1a5830b117e3d7f3be978  libcpp/po/sv.gmo
! f281c0fc9731488e0b28b50decdc7c11  libcpp/po/sv.po
  f0d926b72cbbccfc7a082af283a14dc4  libcpp/po/tr.gmo
! a105c5fcae34948c5756a38ba3a7043e  libcpp/po/tr.po
! 19398d72374c0dccbd778104823a5110  libcpp/po/uk.gmo
! d39b27cd81483dbd14698d04380bf4cf  libcpp/po/uk.po
  d7329d40de2565a890e0ad0f2376dc20  libcpp/po/vi.gmo
! f7a922f11598d3db6f895bf5ac5ec22e  libcpp/po/vi.po
  0bdf646da4277d7ba4dd64ab87e18b91  libcpp/po/zh_CN.gmo
! e265facd2ea64b5d6d3cc411cf6406a4  libcpp/po/zh_CN.po
  b375e96c670c3f0dd283014bbc260422  libcpp/po/zh_TW.gmo
! 2b266205a8a5e33de493825f9f0704ad  libcpp/po/zh_TW.po
! b9b1baa572d6c848e1c4655604023e51  libcpp/symtab.cc
! adb297f362ff62504435e9e521a19e86  libcpp/system.h
! 9570ff650fc73c61a8ced00677440e74  libcpp/traditional.cc
! d45cfd418abb46cfdbba624667399ae9  libcpp/ucnid.h
! 1bc7c82d10193a95f2d52ac65a96b194  libcpp/ucnid.tab
! ac39f0cc87f289263a76afc28c45d47b  libcpp/uname2c.h
  a6c2b3de06c7424706b16f4c206396a1  libdecnumber/.gitignore
! 980852c660dcb521df149a08f3dad227  libdecnumber/ChangeLog
  2bd831b17997584e38305782cebe6948  libdecnumber/ChangeLog.jit
! c940ed5e883906ebe7e673a41403f6a8  libdecnumber/Makefile.in
  2a70099a79e40a57a666d5430a5e2529  libdecnumber/aclocal.m4
! bbb563ad33192a9dd2851425dfa118ac  libdecnumber/bid/bid-dpd.h
! a4367853ec7600efe0e1300831a33f72  libdecnumber/bid/bid2dpd_dpd2bid.c
! 8efc7151368697306e1b57116e554979  libdecnumber/bid/bid2dpd_dpd2bid.h
! dd69488d13b29940ab6b2577a99b631c  libdecnumber/bid/decimal128.c
  47afd72790bc284aceb5a23597cc6146  libdecnumber/bid/decimal128.h
  f8df5b96d86c867ad233c6f0d3e2541f  libdecnumber/bid/decimal128Local.h
  eab7eeba10520ab4a805774d42b8f9dd  libdecnumber/bid/decimal128Symbols.h
! 8d1bcfe98adf00e2e7c1c7e7cd6bf0aa  libdecnumber/bid/decimal32.c
  43b6b2bd872ad984104804b1b20fb10c  libdecnumber/bid/decimal32.h
  c5864ab84549ca0f34188ce5b057bbee  libdecnumber/bid/decimal32Symbols.h
! 21bc639f10d56602c5e44724bf0904d7  libdecnumber/bid/decimal64.c
  8c612aadae9886f1a72212f93d8651c0  libdecnumber/bid/decimal64.h
  9f903ba71afb574bfa3a0f3cd2f9fbc7  libdecnumber/bid/decimal64Symbols.h
! 9abc4854aad18e703e4d907dad06f3ce  libdecnumber/bid/host-ieee128.c
! 75a1108b6e762adffc021888f2e8b0d9  libdecnumber/bid/host-ieee32.c
! 6fbd96e483aa091ce04c1e85f353f082  libdecnumber/bid/host-ieee64.c
  76d4afd0dd1c0f5e776cbc40cf2e91b3  libdecnumber/config.in
! 6b5d5297d90245cd7b864da08dba0252  libdecnumber/configure
! ed4f9dcbaa2046cca4eed53cacc6791e  libdecnumber/configure.ac
! 66012bde8ed60d67821c2adec7f7920f  libdecnumber/dconfig.h
! 114c8842b0276bc2173dcf57e04b2db3  libdecnumber/decBasic.c
! b1f77b6b1c68d54e9fce666cb34494a2  libdecnumber/decCommon.c
  2f89d012c7a8a2912e7dce02bd4a08dc  libdecnumber/decCommonSymbols.h
! 54c791751fe1c6b7f8d71895ed0fd717  libdecnumber/decContext.c
! 272f69ff71397e8ad17a3de5fb11a642  libdecnumber/decContext.h
  53b67627dab6d36fba960317d84c1487  libdecnumber/decContextSymbols.h
! 9b5c60f3de2b7825de3349805688b807  libdecnumber/decDPD.h
  8f3ac08d4cc421cc89035e90c890bb09  libdecnumber/decDPDSymbols.h
! 5a185306cab8d0d6ae47873397f0cc04  libdecnumber/decDouble.c
! bf94dc149007d800ed63a81bd99b766f  libdecnumber/decDouble.h
  22e16083bf3d0b76c4736f7f6382cfb6  libdecnumber/decDoubleSymbols.h
! eb50a84827e522dba737ecac30159612  libdecnumber/decExcept.c
! 5ac83cc5e02c48a3bc1122516627aafc  libdecnumber/decExcept.h
! ebc9ac4faa897cd4bf7eebdc04c5327c  libdecnumber/decLibrary.c
! da0f996c9317e5da265e2148c5c44897  libdecnumber/decNumber.c
! eb67f19a05675f692e28822f398e0fb7  libdecnumber/decNumber.h
! 9b53ff4d7ccf9b4e2583399d4d85205c  libdecnumber/decNumberLocal.h
  dd46d36cafe0d7dcb669ad059fbed9b6  libdecnumber/decNumberSymbols.h
! 826b7b1938bad8630818fccf1539449e  libdecnumber/decPacked.c
! 6389324d6cc1ee9be448c03945f6fb0b  libdecnumber/decPacked.h
  287ad6ebf8b8179aa843368e9600a3fb  libdecnumber/decPackedSymbols.h
! 907f6b047823b0668d38a558a73428d7  libdecnumber/decQuad.c
! e55583f0df17df645060cf415f4d12af  libdecnumber/decQuad.h
  3851bae03416db42a85be1c5610f438b  libdecnumber/decQuadSymbols.h
! cb6ba1fa5e011e6d17e581fcae9e1eaf  libdecnumber/decRound.c
! 9282243885556d42335795ad561909d7  libdecnumber/decRound.h
! 180b383fa5c6c387d094144dac23cb78  libdecnumber/decSingle.c
! 3e09e3422befab0607483f14884a751f  libdecnumber/decSingle.h
  8998c4f3e69ea3d218b574a2defb9a98  libdecnumber/decSingleSymbols.h
! 1fd3fb716ff582910b21513e677168f6  libdecnumber/dpd/decimal128.c
! 8e7bb21b6b38891f0755beff0ffcfca3  libdecnumber/dpd/decimal128.h
! 8c34e131a4787c49f4928cda2c74971b  libdecnumber/dpd/decimal128Local.h
  2f6da07ba897ca626a4f6d283feeef93  libdecnumber/dpd/decimal128Symbols.h
! 84c848e2fa1633b4fd26e1dac6ec24bf  libdecnumber/dpd/decimal32.c
! 7aed8e9ce2587125212272ab37fa4b2b  libdecnumber/dpd/decimal32.h
  a97c47969dfc92a7666dfe3c2e1e1448  libdecnumber/dpd/decimal32Symbols.h
! 7dd7d1fb7fedaf3d029afb5f358f3730  libdecnumber/dpd/decimal64.c
! 5c5101362d0b5ad6cce073da470594f8  libdecnumber/dpd/decimal64.h
  0f6db29710e7075c2fd62bc4478b3b8d  libdecnumber/dpd/decimal64Symbols.h
  055606b47e85369c5d003f6e3a1b657e  libffi/.gitattributes
! c0cc90b40b11c40db99e0ae6783060e8  libffi/ChangeLog
  0e38ead823643c45765e5fe55e7ab16b  libffi/ChangeLog.libffi
  fbbc216bc25d759a72ea3e6d734af56b  libffi/ChangeLog.libgcj
  d946d2b97454ad50a1dbfbf48923c5be  libffi/ChangeLog.v1
  cc4552d9286c17a905988bf55f96def7  libffi/HOWTO_MERGE
  679b5c9bdc79a2b93ee574e193e7a7bc  libffi/LICENSE
  631bc8750a749106cf625001c1d6efb0  libffi/LICENSE-BUILDTOOLS
! 835b22825bd53e411ac26c18666e1ae5  libffi/LOCAL_PATCHES
  c55286ffa9013e1bc9fe188894b39e1d  libffi/MERGE
  69b70919246d2502e7fc4e745f088c77  libffi/Makefile.am
  d9aab5e2fbe2d4790d0327abe73e49e4  libffi/Makefile.in
*************** d9aab5e2fbe2d4790d0327abe73e49e4  libffi
*** 92222,92228 ****
  c67252e8ff3150683a184a729911b219  libffi/acinclude.m4
  d591981dfeccb8df500213a4baa6bb7e  libffi/aclocal.m4
  aec59abbc470dda1bfe630dbb0bbd627  libffi/autogen.sh
! 1974c22f93c20d125431f3c042b01df9  libffi/configure
  dbd21d77c2acf20037c7e2e16de7a70c  libffi/configure.ac
  b2dbb88c38d08a37b89fc9ed08e79538  libffi/configure.host
  bad91ff01547ce79fe537211f4763ac0  libffi/doc/Makefile.am
--- 100192,100198 ----
  c67252e8ff3150683a184a729911b219  libffi/acinclude.m4
  d591981dfeccb8df500213a4baa6bb7e  libffi/aclocal.m4
  aec59abbc470dda1bfe630dbb0bbd627  libffi/autogen.sh
! b65906677faeb64d5b833fe9c2963544  libffi/configure
  dbd21d77c2acf20037c7e2e16de7a70c  libffi/configure.ac
  b2dbb88c38d08a37b89fc9ed08e79538  libffi/configure.host
  bad91ff01547ce79fe537211f4763ac0  libffi/doc/Makefile.am
*************** dd7b61f56e75a1d052dd10dc02ac4940  libffi
*** 92249,92255 ****
  00c15050127751bd8322e3a44f3a5e61  libffi/mdate-sh
  3c3ee1f7953ffe94a2a8e80ef34f2c83  libffi/merge.sh
  7487ea3d59873bb39dc4886eb3616d5c  libffi/msvcc.sh
! 61fb78015f96b02e435d90e99d1cb535  libffi/src/aarch64/ffi.c
  b42af3dfe2dfed31394770bd1bb0baa4  libffi/src/aarch64/ffitarget.h
  d259a7b185a1e3b9f9058899270fbbb1  libffi/src/aarch64/internal.h
  409570d506a6d52f51cdb50df9de56f6  libffi/src/aarch64/sysv.S
--- 100219,100225 ----
  00c15050127751bd8322e3a44f3a5e61  libffi/mdate-sh
  3c3ee1f7953ffe94a2a8e80ef34f2c83  libffi/merge.sh
  7487ea3d59873bb39dc4886eb3616d5c  libffi/msvcc.sh
! 9175551acbdd0ff98611d1daef987b47  libffi/src/aarch64/ffi.c
  b42af3dfe2dfed31394770bd1bb0baa4  libffi/src/aarch64/ffitarget.h
  d259a7b185a1e3b9f9058899270fbbb1  libffi/src/aarch64/internal.h
  409570d506a6d52f51cdb50df9de56f6  libffi/src/aarch64/sysv.S
*************** ed71bb67304551b763a02f7ddc8a869d  libffi
*** 92376,92382 ****
  db048864cd587d20c5396ddefbceda75  libffi/src/x86/ffiw64.c
  1037cfca8b55b81b29a72490869cb153  libffi/src/x86/internal.h
  e78cd40a51a894d54a7e2d2626613958  libffi/src/x86/internal64.h
! 071fc7b1d905344bdd6b871510a9c8aa  libffi/src/x86/sysv.S
  1b5e5e04568642438a80263e3e74d880  libffi/src/x86/sysv_intel.S
  e6a372c1ab34c8f1f71396d597076973  libffi/src/x86/unix64.S
  076f1dee01f3e0956ba88df96799b469  libffi/src/x86/win64.S
--- 100346,100352 ----
  db048864cd587d20c5396ddefbceda75  libffi/src/x86/ffiw64.c
  1037cfca8b55b81b29a72490869cb153  libffi/src/x86/internal.h
  e78cd40a51a894d54a7e2d2626613958  libffi/src/x86/internal64.h
! dae1263fa1771a70a616824f21464a05  libffi/src/x86/sysv.S
  1b5e5e04568642438a80263e3e74d880  libffi/src/x86/sysv_intel.S
  e6a372c1ab34c8f1f71396d597076973  libffi/src/x86/unix64.S
  076f1dee01f3e0956ba88df96799b469  libffi/src/x86/win64.S
*************** e6a372c1ab34c8f1f71396d597076973  libffi
*** 92388,92394 ****
  8e8befc990bd91505202466bad0815b2  libffi/testsuite/Makefile.am
  6e37c57ddaeb9a0f1194107d485d0b8d  libffi/testsuite/Makefile.in
  dce80ba7e038ca18591aabc6d3d2582c  libffi/testsuite/config/default.exp
! 3915b0c5fcb484c89800a172f94bfca9  libffi/testsuite/lib/libffi.exp
  88f888c66cee8d916e1ac91000ecc87a  libffi/testsuite/lib/target-libpath.exp
  68db067550882b3b091a82df87310fff  libffi/testsuite/lib/wrapper.exp
  38c126f0fb1a075c0bd7591eca1e0385  libffi/testsuite/libffi.bhaible/Makefile
--- 100358,100364 ----
  8e8befc990bd91505202466bad0815b2  libffi/testsuite/Makefile.am
  6e37c57ddaeb9a0f1194107d485d0b8d  libffi/testsuite/Makefile.in
  dce80ba7e038ca18591aabc6d3d2582c  libffi/testsuite/config/default.exp
! 375112ab2f3368a3990d660e0d91b5f6  libffi/testsuite/lib/libffi.exp
  88f888c66cee8d916e1ac91000ecc87a  libffi/testsuite/lib/target-libpath.exp
  68db067550882b3b091a82df87310fff  libffi/testsuite/lib/wrapper.exp
  38c126f0fb1a075c0bd7591eca1e0385  libffi/testsuite/libffi.bhaible/Makefile
*************** a3eb5dee2788fe0a6c42502ba658eddd  libffi
*** 92600,92711 ****
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! c734477ccf9ce62fa1ad4fd2a66bb26f  libgcc/ChangeLog
! e4f6419fde8efa2cce0df95a75d7ff0f  libgcc/Makefile.in
! 9dbca7c5391de8ac8b623dc5278ae0d5  libgcc/config.host
  312fccd8251056a36e26bad71f9cfaa2  libgcc/config.in
! 72a922a69d4ebc17df642dac3bba79c7  libgcc/config/aarch64/aarch64-unwind.h
! 63ef63f968be856e19a3ac335fb7c645  libgcc/config/aarch64/crtfastmath.c
! 3fd7657da85b837fdc45b6c9c722f28f  libgcc/config/aarch64/crti.S
! 09155a530de72f22b7958b119f19eb6e  libgcc/config/aarch64/crtn.S
! 4aad22f0df59faf784799270fa54e91c  libgcc/config/aarch64/freebsd-unwind.h
! 404c3f0d922422ba0743bb42b6b57b20  libgcc/config/aarch64/libgcc-softfp.ver
! e8996753809b6d7247519cd9920ba2b6  libgcc/config/aarch64/linux-unwind.h
! 5042ced7a59efa915022941a70c58b72  libgcc/config/aarch64/lse-init.c
! 7830fefb7754226424c9dd66191f691f  libgcc/config/aarch64/lse.S
! b1bb0cbcf929be5ac5976d205f9dd045  libgcc/config/aarch64/sfp-exceptions.c
! 037140247a490aba1a5d1cadb534a70e  libgcc/config/aarch64/sfp-machine.h
! 33b0c8e6863ba4b458cd20730c34d0fa  libgcc/config/aarch64/sync-cache.c
! 67337ad3c00f04230637265d946e827b  libgcc/config/aarch64/t-aarch64
! 600d1ffc6add29b58c708f10d2cff937  libgcc/config/aarch64/t-lse
! 2df62f8f58c3b33868deef587589dd2d  libgcc/config/aarch64/t-softfp
! d5beeb37c4319cd8dac2739af3372618  libgcc/config/aarch64/value-unwind.h
! f79c3bbf855715c0fb56bd6b7abe4baf  libgcc/config/alpha/crtfastmath.c
! 0a6f75cac7ca3d6b143924b53d6af7ab  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! 6365fac50d08835677c3bd8416a67922  libgcc/config/alpha/linux-unwind.h
! 824b060747b11fc8f545ba34b8a273e3  libgcc/config/alpha/qrnnd.S
  e06033e6f9902c9e703e237d511df6c4  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
  0ae5eceefb3934014e67594e67f44a5c  libgcc/config/alpha/t-linux
  600b5cfe4987de3985ad1ff7316166cc  libgcc/config/alpha/t-vms
! edef5422e1766f88fae7d57e25f1b73b  libgcc/config/alpha/vms-dwarf2.S
! d1d8d197941f0fe1f7331683fecfbd07  libgcc/config/alpha/vms-dwarf2eh.S
! fc4650c92d856c7e6def23e904dc9752  libgcc/config/alpha/vms-gcc_shell_handler.c
! 9b50d2990ac57d2474748bf54f0b4379  libgcc/config/alpha/vms-unwind.h
! cccc7a71c75cc52a5abb504d303e0077  libgcc/config/arc/asm.h
! d6b21ef7655274092853011eadabc2f7  libgcc/config/arc/crti.S
! b627ac4c4b7ad80a5a3fa1be52a1c003  libgcc/config/arc/crtn.S
! bcf307c73415dceed56e5384b01230f9  libgcc/config/arc/crttls.S
! 29b53e6560e1420c9f00334aa15ac945  libgcc/config/arc/divtab-arc700.c
! b245ad27475e3c19e414b41459a6a236  libgcc/config/arc/dp-hack.h
! 9a04954e0a70ac3542c3b5d8b6faf148  libgcc/config/arc/fp-hack.h
! bdf0d940b1842dd06cc87754d24ead5b  libgcc/config/arc/ieee-754/adddf3.S
! 426862030bedaa282bb9e652bec7f5b1  libgcc/config/arc/ieee-754/addsf3.S
! 78ee4e33745bd9191aff855c5ef9c385  libgcc/config/arc/ieee-754/arc-ieee-754.h
! c8302839bc0d6b07661a91bfe329bcfc  libgcc/config/arc/ieee-754/arc600-dsp/divdf3.S
! ca8bd30de68b44c9d346540f8b1fc62d  libgcc/config/arc/ieee-754/arc600-dsp/divsf3.S
! 28b8e684b36ec97b5a35c5c7ea57b4ee  libgcc/config/arc/ieee-754/arc600-dsp/muldf3.S
! ea5d2652b37320cdeae1a01332b26213  libgcc/config/arc/ieee-754/arc600-dsp/mulsf3.S
! 3ded465af5d4fa9f9f6241e0f734557a  libgcc/config/arc/ieee-754/arc600-mul64/divdf3.S
! 901111b34803efe822d8856571ae11b9  libgcc/config/arc/ieee-754/arc600-mul64/divsf3.S
! 37fcea4c318a5370f6fd9a018d1a893d  libgcc/config/arc/ieee-754/arc600-mul64/muldf3.S
! 898b5b4f632deb13d5f643ada3c0910a  libgcc/config/arc/ieee-754/arc600-mul64/mulsf3.S
! 2a5df7d45fb0ef79b30e81e59619b61d  libgcc/config/arc/ieee-754/arc600/divsf3.S
! 0b5e34d9f48d62000cab83c58b87d483  libgcc/config/arc/ieee-754/arc600/mulsf3.S
! dc060a4e7709322e48c39316e845cd0f  libgcc/config/arc/ieee-754/divdf3.S
! ba77e2878de72bdc57f48c361c3f2f46  libgcc/config/arc/ieee-754/divsf3-stdmul.S
! 274e999baebda8050e3a88fc1135b332  libgcc/config/arc/ieee-754/divsf3.S
! ce57b11eb9583ecebc13141a45c34b2c  libgcc/config/arc/ieee-754/divtab-arc-df.c
! 4bd9fc75a093b8d196d54511b408b669  libgcc/config/arc/ieee-754/divtab-arc-sf.c
! d2cc52b33ad8c3fab5861495c1aa4f1e  libgcc/config/arc/ieee-754/eqdf2.S
! 35a7d9836a265e4b80932e74e528c339  libgcc/config/arc/ieee-754/eqsf2.S
! 0bca4cf4357a77211d140977165c39a0  libgcc/config/arc/ieee-754/extendsfdf2.S
! 7c766cd2f8eae859a2b44b7ddf8dceb2  libgcc/config/arc/ieee-754/fixdfsi.S
! 46e9f5918a7328f3c3e63c7352ff907b  libgcc/config/arc/ieee-754/fixsfsi.S
! dabba279a0cd2f41a38716d4ff8c334d  libgcc/config/arc/ieee-754/fixunsdfsi.S
! 7aa2734e49796051911ac55061f65a34  libgcc/config/arc/ieee-754/floatsidf.S
! 3e272e629221e3ad14b9f69397939b62  libgcc/config/arc/ieee-754/floatsisf.S
! 48f41fb1ef44893bbfee3053e128bd08  libgcc/config/arc/ieee-754/floatunsidf.S
! a8a2ab86f110237e1e5244e1d13d122e  libgcc/config/arc/ieee-754/gedf2.S
! 30634ff5c18bfe0362a95064625a174a  libgcc/config/arc/ieee-754/gesf2.S
! c39f23b6f4b7c70f97bdcdc3c290018c  libgcc/config/arc/ieee-754/gtdf2.S
! ddf4e75deed44fc1daf8e99e1cc3c296  libgcc/config/arc/ieee-754/gtsf2.S
! 165c9aaeff1925dd273f00771ccbba9e  libgcc/config/arc/ieee-754/muldf3.S
! f1bf9d85a6942546b9d4643ffea6464f  libgcc/config/arc/ieee-754/mulsf3.S
! 2ad16c558b34569ae737e126d801bc90  libgcc/config/arc/ieee-754/orddf2.S
! 81739d225afe340364c36347acea6c06  libgcc/config/arc/ieee-754/ordsf2.S
! 8c2d262f3f7db35779111a58595682dc  libgcc/config/arc/ieee-754/truncdfsf2.S
! d1c8217982368d758cee5aa66a44dedf  libgcc/config/arc/ieee-754/uneqdf2.S
! 6536d05e13d6a476ba73238b144bf9f9  libgcc/config/arc/ieee-754/uneqsf2.S
! 8069fbcb9270c58ddc510fd0276cbbdc  libgcc/config/arc/initfini.c
! 95dc8e78f347fc0a0e251d216155c563  libgcc/config/arc/lib1funcs.S
! 4716ecdeae4a4808e143b581ff8d7e2b  libgcc/config/arc/lib2funcs.c
! b49e34cf7b8dce23c08801c5482c7ec2  libgcc/config/arc/libgcc-excl.ver
! 4b3f69ce95873958181b113426d232b0  libgcc/config/arc/linux-unwind-reg.def
! 04f5c99cbd4940064939224ec8fb85ac  libgcc/config/arc/linux-unwind.h
! 52a099da737efef67df0268356b72a0c  libgcc/config/arc/t-arc
! 4966ff4dbbc6a872b7d4ca22c8359fd0  libgcc/config/arc/t-arc-uClibc
! 57fcd76de2dfd0e6f1ad6b2a7ef5845d  libgcc/config/arm/bpabi-lib.h
! dd161f21a37a222399ef8b301518412a  libgcc/config/arm/bpabi-v6m.S
! 5c7332c4346d41f1ed4a9cbb2f7dd2d2  libgcc/config/arm/bpabi.S
! 7bedee93df51d719651d05a1a5fb9692  libgcc/config/arm/bpabi.c
! 86e6f8d59940d32bcdabd9a8d2721d50  libgcc/config/arm/cmse.c
! 286006bca8c96af68dfaa726140e86f6  libgcc/config/arm/cmse_nonsecure_call.S
! 559c90b8dc77f7ce5fe7f9202ffd2932  libgcc/config/arm/crtfastmath.c
! 146012a8864d1505564f83378601725c  libgcc/config/arm/crti.S
! c03f8d9271268dbfc352e80cdf2899f5  libgcc/config/arm/crtn.S
! 630921b284781c142f42f76cd46e8acc  libgcc/config/arm/fp16.c
! 9c82f88af0337c9f063a5ee69ff716ad  libgcc/config/arm/freebsd-atomic.c
! 484bd0876b40b8890f22ece65edde93f  libgcc/config/arm/ieee754-df.S
! 0e203035f4a1f814acf38d1c5b629030  libgcc/config/arm/ieee754-sf.S
! c09b494b41bd3e14d402003cf11ea415  libgcc/config/arm/lib1funcs.S
! eaab87342e962dc8ac20bf75e8910fa9  libgcc/config/arm/libgcc-bpabi.ver
! 841d71e1ff58ca48e7cad45c172a83f5  libgcc/config/arm/libunwind.S
! bb701e20f6b71f1ed5365b4a81c3c665  libgcc/config/arm/linux-atomic-64bit.c
! 25f427a74f87cccca049c742a2155416  libgcc/config/arm/linux-atomic.c
! 880c347234ac6052d91ad4c366ef3e03  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
! 5608cc112bf81040cf9052b318db03a5  libgcc/config/arm/symbian-lib.h
  8bcfdd455e9a830ab6b5da1e39fab4d1  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  be2d9c3da6e3f9aa4be1b2856a70de22  libgcc/config/arm/t-elf
--- 100570,100681 ----
  0f3c94e520870e194cf525de7ec404dc  libffi/testsuite/libffi.go/ffitest.h
  6cfb66c1c00023abb2c2276d85f16e77  libffi/testsuite/libffi.go/go.exp
  189dc193fd0e627a2d55b2e84871edc5  libffi/testsuite/libffi.go/static-chain.h
! bf3c83065a4229fbbd8a1862807f42ba  libgcc/ChangeLog
! dbe2f0a8ebc3b4337505e8aafc2e59e6  libgcc/Makefile.in
! 335e8c826d8ecd37dd13b8cf1cf5cc2a  libgcc/config.host
  312fccd8251056a36e26bad71f9cfaa2  libgcc/config.in
! 65f4c5be67642a2f7d2323a197380435  libgcc/config/aarch64/aarch64-unwind.h
! bb23301cb30f10c0745c9333199557ae  libgcc/config/aarch64/crtfastmath.c
! 376690763443c092382adcd73f3d181c  libgcc/config/aarch64/crti.S
! e11833b29913b8024d70966d662224a1  libgcc/config/aarch64/crtn.S
! cd09dac1486336f3fd98e35d7c3a6fd0  libgcc/config/aarch64/freebsd-unwind.h
! 2e5cffe9110fb95f509f5d526ee75f6d  libgcc/config/aarch64/libgcc-softfp.ver
! a39ea6be4b49970fbec2d55c758f6591  libgcc/config/aarch64/linux-unwind.h
! e9ef33be8f0192e804e5fef51dcab73f  libgcc/config/aarch64/lse-init.c
! a4f20f6aba50515e91cec85ca4986acc  libgcc/config/aarch64/lse.S
! d4d6a8fbb40748faeb3fee766960e9af  libgcc/config/aarch64/sfp-exceptions.c
! c2578839ae661d06eed96e105f63cf68  libgcc/config/aarch64/sfp-machine.h
! da8f4e44f04c6b31829412e98ce7ef8f  libgcc/config/aarch64/sync-cache.c
! 088bfec8e48cf4030017d1408585edca  libgcc/config/aarch64/t-aarch64
! 887138055644c6cb4bda07939c31f053  libgcc/config/aarch64/t-lse
! 5e1cf1a432042ab807aa0a3e13d969cd  libgcc/config/aarch64/t-softfp
! 1ee11c00da4860fde4c41b9eac4a43c7  libgcc/config/aarch64/value-unwind.h
! 7525280fc1f248cc6b63ff1185e818f4  libgcc/config/alpha/crtfastmath.c
! fce6dfe95c70f87b845cfd3148ffc9e6  libgcc/config/alpha/libgcc-alpha-ldbl.ver
! fa90d56464fd361838fb07affd937da7  libgcc/config/alpha/linux-unwind.h
! f080bb9930b09d4e1bf4ba5f40115798  libgcc/config/alpha/qrnnd.S
  e06033e6f9902c9e703e237d511df6c4  libgcc/config/alpha/t-alpha
  95db551210150c5b18529c72cfdaeabf  libgcc/config/alpha/t-ieee
  0ae5eceefb3934014e67594e67f44a5c  libgcc/config/alpha/t-linux
  600b5cfe4987de3985ad1ff7316166cc  libgcc/config/alpha/t-vms
! a67405daae272ceedf71d02b403e2b3c  libgcc/config/alpha/vms-dwarf2.S
! 8477610f20e39298199e16e302ed0428  libgcc/config/alpha/vms-dwarf2eh.S
! c1c2d467df7994434e8b9ee1a53d6aaf  libgcc/config/alpha/vms-gcc_shell_handler.c
! 005f8f892ecf95fbe1d6e76c65b19626  libgcc/config/alpha/vms-unwind.h
! 0313b84584f320d6df3d69f133f356af  libgcc/config/arc/asm.h
! 0a5b74675438ee3f62b747b0ae280eb4  libgcc/config/arc/crti.S
! 2a92533fa5a4ca423b007f08900cd9f0  libgcc/config/arc/crtn.S
! e79bb9032ee5e4520c19073cc13d3f7f  libgcc/config/arc/crttls.S
! 68629cc1b34de10c3467f872b78dd477  libgcc/config/arc/divtab-arc700.c
! 2f4e0024638c24180cbbf5d47fc85e5c  libgcc/config/arc/dp-hack.h
! 7154e75d5749383352fe5cebf8843faa  libgcc/config/arc/fp-hack.h
! 5d6601c7b25f612ccc9c4f2951020255  libgcc/config/arc/ieee-754/adddf3.S
! 82cf3d7573793500f1a07f05e36a10e6  libgcc/config/arc/ieee-754/addsf3.S
! 0847c8c4692e5a03b10c20ba08ddd6ee  libgcc/config/arc/ieee-754/arc-ieee-754.h
! 52f3588819a290db4a507bc669d216e4  libgcc/config/arc/ieee-754/arc600-dsp/divdf3.S
! 1d0b5a30772925d1351e90e445d3cda6  libgcc/config/arc/ieee-754/arc600-dsp/divsf3.S
! 55f95ea5bbc51a5e95b3ec816a7fa47d  libgcc/config/arc/ieee-754/arc600-dsp/muldf3.S
! b695022848dcb9885ebcdc58a85cda87  libgcc/config/arc/ieee-754/arc600-dsp/mulsf3.S
! d4827c76976f07e83a509e18ddd60b3a  libgcc/config/arc/ieee-754/arc600-mul64/divdf3.S
! 3d39f21fd12bbc330d31f20ade3192a3  libgcc/config/arc/ieee-754/arc600-mul64/divsf3.S
! bbd8db5b5f3e8724cebbbf585271c408  libgcc/config/arc/ieee-754/arc600-mul64/muldf3.S
! 3e0e1a9ca75cd41e5ba846e110720781  libgcc/config/arc/ieee-754/arc600-mul64/mulsf3.S
! 78f7db9212e0acf06620ee2ad7f1e6e2  libgcc/config/arc/ieee-754/arc600/divsf3.S
! 1d0a11a9147504361bfe4d3b20152342  libgcc/config/arc/ieee-754/arc600/mulsf3.S
! d2ad47e9867260a3b49f6082111cc306  libgcc/config/arc/ieee-754/divdf3.S
! e8c2e2bea61259b9cb00146b7d6325dd  libgcc/config/arc/ieee-754/divsf3-stdmul.S
! 7c25e69c495cdf27ca6c6e3ed3c48f04  libgcc/config/arc/ieee-754/divsf3.S
! 21a0c33ce25d13aedba615849ee3f5bd  libgcc/config/arc/ieee-754/divtab-arc-df.c
! 817af139cea3a9fe3a1d1cf527eca26d  libgcc/config/arc/ieee-754/divtab-arc-sf.c
! af6b8d34845511c7e7de6095142ffa5e  libgcc/config/arc/ieee-754/eqdf2.S
! bfc1cc03e605bc9d7c44f387dfbc3aaa  libgcc/config/arc/ieee-754/eqsf2.S
! de1a5c2f46d0f97cc5641be9b8c0cd03  libgcc/config/arc/ieee-754/extendsfdf2.S
! 8abc60617dad4aa2ab9264569bae9567  libgcc/config/arc/ieee-754/fixdfsi.S
! bbd198a617d8a0284464e4bd8b4c415e  libgcc/config/arc/ieee-754/fixsfsi.S
! 4d13414f837ee3d2843c53a8b634feca  libgcc/config/arc/ieee-754/fixunsdfsi.S
! 2f19fcbcef9abb1f1393ee42b6cdf03d  libgcc/config/arc/ieee-754/floatsidf.S
! e98c6ecae69b04298caa2742de701dde  libgcc/config/arc/ieee-754/floatsisf.S
! 7167d9e5a3ea1767d1054f715b889d1b  libgcc/config/arc/ieee-754/floatunsidf.S
! 69ea965a174544a119da13f7db54652c  libgcc/config/arc/ieee-754/gedf2.S
! 34877006f33cf1d89158bf6855abe5e0  libgcc/config/arc/ieee-754/gesf2.S
! 5bcab8a00c123d507acd1c2f808be742  libgcc/config/arc/ieee-754/gtdf2.S
! c3e84d478cafa704c112157f4451c9ad  libgcc/config/arc/ieee-754/gtsf2.S
! 3129b1d5a9012940d87f1e7f4354ed09  libgcc/config/arc/ieee-754/muldf3.S
! c596b823fd4b708eec418c96b4cb130f  libgcc/config/arc/ieee-754/mulsf3.S
! 6f55d05586731145513e958cf600ac66  libgcc/config/arc/ieee-754/orddf2.S
! c9032cf31f88f0e44f000bceb7cc1f3e  libgcc/config/arc/ieee-754/ordsf2.S
! ab63c820e01baeefa0d595850102c247  libgcc/config/arc/ieee-754/truncdfsf2.S
! 15e1f16447c071a3ec54ae36bd10000b  libgcc/config/arc/ieee-754/uneqdf2.S
! 6b2637ff8b3210e9fb328fd3ed3f78e5  libgcc/config/arc/ieee-754/uneqsf2.S
! 27e433d22b21585934d4b36b61280c3b  libgcc/config/arc/initfini.c
! 51cacdf1c9eafee8d262b15ae78e1d19  libgcc/config/arc/lib1funcs.S
! 50389ec280381ac2380b4fa9bb053363  libgcc/config/arc/lib2funcs.c
! 76ec7bfca56b2beee6dbdc212e047693  libgcc/config/arc/libgcc-excl.ver
! 34057cb243aadfe89f8c2760e40bd080  libgcc/config/arc/linux-unwind-reg.def
! 6d8ba8d769dfa11d909ca2a1fef45dbe  libgcc/config/arc/linux-unwind.h
! 066e6cc79173955472170cd955ae9fc5  libgcc/config/arc/t-arc
! 61631a74e844b8f0ed59d4d4c11054f4  libgcc/config/arc/t-arc-uClibc
! a5d8836e68a644d45577940b22fc4e9d  libgcc/config/arm/bpabi-lib.h
! e653acc82cec8a8d48b70a87c637b25e  libgcc/config/arm/bpabi-v6m.S
! b3675139f61a988317e855285d68c39c  libgcc/config/arm/bpabi.S
! 689b1eb6eeb7b0d0d40e509445aca4d5  libgcc/config/arm/bpabi.c
! 1811f328b8e791c4500486f1c4ce59a5  libgcc/config/arm/cmse.c
! fd93ba734717b35e7126f2bd7e95a8c6  libgcc/config/arm/cmse_nonsecure_call.S
! 54adcd7dd7f8ddd86b027fd2049d8659  libgcc/config/arm/crtfastmath.c
! 1d87a3635df0978917fe0df01b07e636  libgcc/config/arm/crti.S
! 88893d121300859529fbe270573faafc  libgcc/config/arm/crtn.S
! 776876b1d3984004d5716241aa7f1f42  libgcc/config/arm/fp16.c
! 3859e47a411ddb59742ef70fd58485b2  libgcc/config/arm/freebsd-atomic.c
! 40eeed9db4d0cfcb7c7188a7f93e874c  libgcc/config/arm/ieee754-df.S
! ccdc4cac8f3b21c658727c334aef59ed  libgcc/config/arm/ieee754-sf.S
! 49504ce3bb453a7c430ba4c4ad1346f9  libgcc/config/arm/lib1funcs.S
! df45db791d9e163ed782c61475aaee06  libgcc/config/arm/libgcc-bpabi.ver
! 506e64de25347ef9be203bcafc44bd5a  libgcc/config/arm/libunwind.S
! 3a32700997fa3d72ce93a380866ee76d  libgcc/config/arm/linux-atomic-64bit.c
! 5101456461193c7b32832c606f0b7915  libgcc/config/arm/linux-atomic.c
! 9f78d1093df577cc8c34febbb5ed3a14  libgcc/config/arm/pr-support.c
  131990bf9b0a8ab71c7abf0c49d4fbfa  libgcc/config/arm/sfp-machine.h
! e66d079e9eecb028f7aef61f6faae09e  libgcc/config/arm/symbian-lib.h
  8bcfdd455e9a830ab6b5da1e39fab4d1  libgcc/config/arm/t-arm
  95ccb8d9807e7229274f546d4664a038  libgcc/config/arm/t-bpabi
  be2d9c3da6e3f9aa4be1b2856a70de22  libgcc/config/arm/t-elf
*************** dd1ccf1641e646fd2c36d154c45a78f3  libgcc
*** 92719,92760 ****
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  49da02954caef0527c55b87af2bd1c4b  libgcc/config/arm/t-vxworks7
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
! 58c10693263de301d8775af563c4bb0a  libgcc/config/arm/unaligned-funcs.c
! 402035227e967b2b9c22212dc77db27b  libgcc/config/arm/unwind-arm-vxworks.c
! 1f00525acff65c10e2aa5e99db726ff4  libgcc/config/arm/unwind-arm.c
! 7b7f42f82eb2bbf50f8bab8dc8071aad  libgcc/config/arm/unwind-arm.h
! f7d079de49740a9b78907a3d673d7233  libgcc/config/avr/avr-lib.h
! 68cf7eaa50b13484c3bd2213aa3ca98c  libgcc/config/avr/lib1funcs-fixed.S
! 2e213af1dd13f68b1515d6340fcb540b  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
! 8d7abef73a8c40e4840ea410d4b4ac9b  libgcc/config/avr/lib2funcs.c
! 811bce2d44ac50b1364af90cc01b9eb0  libgcc/config/avr/libf7/ChangeLog
! a2d046f165da6bb14e927d322fc2d5f4  libgcc/config/avr/libf7/asm-defs.h
  0b54a2cbfebb93a4e1bddfa3600d6f0b  libgcc/config/avr/libf7/f7-renames.h
! 2effcc1c274d5f459695fb6d7d330053  libgcc/config/avr/libf7/f7-wraps.h
  c0d4a5a9b2844505ec941ff60cae008f  libgcc/config/avr/libf7/f7renames.sh
! 13df35ccde737868259a7ec9827d7327  libgcc/config/avr/libf7/f7wraps.sh
! 6632954a92737d796a4748e7e0dc6473  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! 3c5f3181584d606272b30d20668de959  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
  9e2660f882f79c124c85b8732a55464e  libgcc/config/avr/libf7/libf7-common.mk
! 89bdf85b85b7719b781bd239bbf53606  libgcc/config/avr/libf7/libf7-const.def
! 3cc1eb81c98c5373281b90186181f4f3  libgcc/config/avr/libf7/libf7-constdef.h
! 984130f6f824dc1ad11221397250acf9  libgcc/config/avr/libf7/libf7.c
! d08db7b445998cee32eb93b1f367c543  libgcc/config/avr/libf7/libf7.h
  d8d51231243f1139dbb6a828e2340c67  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
  70e4f62a264a98b6818c49fed71fa5bb  libgcc/config/avr/t-avr
  42e21fd8b00be58d09a62b8654a8ba20  libgcc/config/avr/t-avrlibc
  77d29be9a46b600293b32c93c09dacbf  libgcc/config/avr/t-copy-libgcc
! e904ded11a97474e1d85057ec4e51cf6  libgcc/config/bfin/crti.S
! e9022a54f5965df4e373a453b4391805  libgcc/config/bfin/crtlibid.S
! 8829a36a58a35e0c5683ecf52cff4149  libgcc/config/bfin/crtn.S
! 476374b7e31dfda9eb7ae4783f29a177  libgcc/config/bfin/lib1funcs.S
! 49d092034dca25a01ba7e65109b1bffa  libgcc/config/bfin/libgcc-glibc.ver
! 1b3a13ae38b33f4f5e339808712f97cd  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
--- 100689,100730 ----
  fc87e45e073829d21e9427a38f435e3b  libgcc/config/arm/t-symbian
  49da02954caef0527c55b87af2bd1c4b  libgcc/config/arm/t-vxworks7
  0b61332cccc4af9b144b6db99e213dcb  libgcc/config/arm/t-wince-pe
! 1023f1af4e6e47460392805490486b6a  libgcc/config/arm/unaligned-funcs.c
! b86ccb934794b991edb412e15733c313  libgcc/config/arm/unwind-arm-vxworks.c
! b4a7bc66f716e7b4e76aa9c12ce29fe9  libgcc/config/arm/unwind-arm.c
! ba477da614cd8ceb4bde4fd2a8b5f910  libgcc/config/arm/unwind-arm.h
! d3a9f35aa3368d1b42549e9f573b7f19  libgcc/config/avr/avr-lib.h
! 95b3824b310a6185dc0defac4bc9a2c9  libgcc/config/avr/lib1funcs-fixed.S
! dd58ff2d0a7950fec0f1fc713e67f536  libgcc/config/avr/lib1funcs.S
  622f81485f02d0eac2caaafa7d3a2fd1  libgcc/config/avr/lib2-object.mk
! 624dc6fc660cb976b810335b3730ec59  libgcc/config/avr/lib2funcs.c
! f626cbb0fa781594057c7cfb56cc7923  libgcc/config/avr/libf7/ChangeLog
! 7a907af2b419359eddacd21ef365b518  libgcc/config/avr/libf7/asm-defs.h
  0b54a2cbfebb93a4e1bddfa3600d6f0b  libgcc/config/avr/libf7/f7-renames.h
! ec0383052925c464decb1bfdeaa5c95c  libgcc/config/avr/libf7/f7-wraps.h
  c0d4a5a9b2844505ec941ff60cae008f  libgcc/config/avr/libf7/f7renames.sh
! 8df828b3d2faf7a35d58170a9bafa333  libgcc/config/avr/libf7/f7wraps.sh
! 929b89a7da7c3071631792a97bbda961  libgcc/config/avr/libf7/libf7-array.def
  5d9def53110ec07e8f29e66d593d758f  libgcc/config/avr/libf7/libf7-asm-object.mk
! fd505152bbef801d838c7d84e78dacfa  libgcc/config/avr/libf7/libf7-asm.sx
  6b4886ae302fca1fa733831066c5c830  libgcc/config/avr/libf7/libf7-c-object.mk
  9e2660f882f79c124c85b8732a55464e  libgcc/config/avr/libf7/libf7-common.mk
! 22a6654e1e46da63e602fe4dbfd05acd  libgcc/config/avr/libf7/libf7-const.def
! be57c709e03ea165307e79182d605104  libgcc/config/avr/libf7/libf7-constdef.h
! b74616c89546aca4cc33959d35b7e1ca  libgcc/config/avr/libf7/libf7.c
! fef9940191af160113b68abfe2800b5b  libgcc/config/avr/libf7/libf7.h
  d8d51231243f1139dbb6a828e2340c67  libgcc/config/avr/libf7/t-libf7
  bf9360cfc14e0b0129af5560893f374e  libgcc/config/avr/libf7/t-libf7-math
  761826027ebb1cfbb089d23904494606  libgcc/config/avr/libf7/t-libf7-math-symbols
  70e4f62a264a98b6818c49fed71fa5bb  libgcc/config/avr/t-avr
  42e21fd8b00be58d09a62b8654a8ba20  libgcc/config/avr/t-avrlibc
  77d29be9a46b600293b32c93c09dacbf  libgcc/config/avr/t-copy-libgcc
! 2becd20ac7b8f0594cc82604812b039f  libgcc/config/bfin/crti.S
! cab2df40f260bea89dc4e69d572d52b8  libgcc/config/bfin/crtlibid.S
! 571e5826cfb5dd86852b0cb896f36516  libgcc/config/bfin/crtn.S
! d8f8c7fb40438c8cbcd114cc36b369ad  libgcc/config/bfin/lib1funcs.S
! 9b0c87e4a32d9ae8d1cff9832f6e5015  libgcc/config/bfin/libgcc-glibc.ver
! 41045847a95a40207e58a23d68bbb92c  libgcc/config/bfin/linux-unwind.h
  4e54ca63fc628fdd56df2687a2bf457e  libgcc/config/bfin/t-bfin
  a5e909e203a6fbf202b2eaad6bff3601  libgcc/config/bfin/t-crtlibid
  17298642a82c8a2809260d1eb08f7e4e  libgcc/config/bfin/t-crtstuff
*************** a5e909e203a6fbf202b2eaad6bff3601  libgcc
*** 92762,92857 ****
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crti.S
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crtn.S
  8d4717fef859f166f4ef387b932a72f1  libgcc/config/bpf/t-bpf
! df41cbf48e2c585b7e2908c3952bc457  libgcc/config/c6x/c6x-abi.h
! e5f5b1b7e4fc3a72f253d21b4d1e8cc9  libgcc/config/c6x/crti.S
! ecd1a13c018e1a6fa10b30933505b687  libgcc/config/c6x/crtn.S
! 8fbc1d9438ac9d560556a628d9c8be58  libgcc/config/c6x/eqd.c
! 5198202865473c4036bbc691f3d924b2  libgcc/config/c6x/eqf.c
! 9a0a900aa034309d7b213992419d4236  libgcc/config/c6x/ged.c
! b0347e2ecfc8bcc3f12e6001c7206899  libgcc/config/c6x/gef.c
! aea556aa5c37965050bcca4a9326f27a  libgcc/config/c6x/gtd.c
! f1b33cedb87d7f09da7250a9449fa36a  libgcc/config/c6x/gtf.c
! 2d85bd8a37663af26281497bf8e1cd65  libgcc/config/c6x/led.c
! 35a83c79374ccbe5aea0876c1a808a43  libgcc/config/c6x/lef.c
! 6299d5cd50cf10cb3933901efcee10bf  libgcc/config/c6x/lib1funcs.S
! 6b38236a3e8587e745362a7a2d91c1e4  libgcc/config/c6x/libgcc-eabi.ver
  9068a836854af657b1b590da0c0659f1  libgcc/config/c6x/libunwind.S
! 61ef82173fc6c8150bbd81c7ad7aaf1c  libgcc/config/c6x/ltd.c
! afe21d2dbbe4f6798d69a24fe2f42f8a  libgcc/config/c6x/ltf.c
! 7b0c0860629f2a5e1303b038a980baff  libgcc/config/c6x/pr-support.c
! bcb8e803f1b070033509f0e0227883c7  libgcc/config/c6x/sfp-machine.h
  e001c742f33c68e3a33a709c345e0c3f  libgcc/config/c6x/t-elf
  7be94443a1640eded81b166ae8fe575f  libgcc/config/c6x/t-uclinux
! d8e16dd0dde463a7d196bdb80f8b0fce  libgcc/config/c6x/unwind-c6x.c
! cc9ed5886761c6fdd4ba6f8ec4e202f3  libgcc/config/c6x/unwind-c6x.h
! 2a9f558ceda3ef6453b8f3e83515a74d  libgcc/config/cr16/crti.S
! f4c82605a5a06e76ff6b214550aa7373  libgcc/config/cr16/crtlibid.S
! a7b18538619487ef001e8d9aac0db1a5  libgcc/config/cr16/crtn.S
! 7ee0616e910448fe4745500929bb6925  libgcc/config/cr16/divmodhi3.c
! 8a411abf6278f9ccbe552e6fcebd37a1  libgcc/config/cr16/lib1funcs.S
! b0acf9f22aa1201a5ecada0c84170f58  libgcc/config/cr16/t-cr16
! 15f588079c61b6795dac93a66392fef3  libgcc/config/cr16/t-crtlibid
! fb1ff1da2feef89237b976577ebe14a1  libgcc/config/cr16/unwind-cr16.c
! 697df1807167f7e5d79b14c5f2973df2  libgcc/config/cr16/unwind-dw2.h
! 7a42bddd71dcbc9ebf0d4122bd8ae96d  libgcc/config/cris/arit.c
! e9c86723f8e2a61a56d536580a00efd9  libgcc/config/cris/mulsi3.S
! 4a348dc7bc545bbea17fe04592a622cf  libgcc/config/cris/sfp-machine.h
  9a0bcef0779a9665ae5b963049e27ac8  libgcc/config/cris/t-cris
  b9dc89a49f32db0757703a40d18557af  libgcc/config/cris/t-elfmulti
! 912b3e08b1b4450d7b05e4a406dead01  libgcc/config/cris/umulsidi3.S
! 3cf215a9c0d94df0285b4efdfd992aed  libgcc/config/csky/crti.S
! 5309b14831a798b9cef743e89e637ae4  libgcc/config/csky/crtn.S
! e74c27cf4a4bc93f9666b54d3ab03d70  libgcc/config/csky/lib1funcs.S
! b0e00f64373801057a6d7b87c6957990  libgcc/config/csky/linux-atomic.c
! 16a3df9f64c46f25afaa1bbcf037c7c1  libgcc/config/csky/linux-unwind.h
! e668588cc851831006bc8c7ab7e09763  libgcc/config/csky/t-csky
! 43e76028ce3b1039d8a435a6c5335c0a  libgcc/config/csky/t-linux-csky
! fc27792f54d080ae69deec72044fe7c8  libgcc/config/darwin-64.c
! 05a6aa190fa5a29c3b31a8d2e646e8f2  libgcc/config/darwin-crt-tm.c
! cefdb2a6f42e6873331971739c0295c8  libgcc/config/darwin-crt3.c
  3d9ace1569f13aadc86ee3608541f634  libgcc/config/darwin-unwind.ver
  0a39ed05e14b91757915624896a5823f  libgcc/config/darwin10-unwind-find-enc-func.c
! 95057989325714d78a5d2e16a04d60d4  libgcc/config/epiphany/crti.S
! c4b57a67155b4224d979de1eb2184f34  libgcc/config/epiphany/crtint.S
! 406e2cfd54bb726f1f297592e6591d5c  libgcc/config/epiphany/crtm1reg-r43.S
! 6b6ce3e9b06e2d176fa8bce1c12ba913  libgcc/config/epiphany/crtm1reg-r63.S
! 566e37ecf34fa02f550af4eb23af49d1  libgcc/config/epiphany/crtn.S
! 44f880f21c61657079267083fe3dc332  libgcc/config/epiphany/crtrunc.S
! b00b85863b1ac5023cf65bfbca986676  libgcc/config/epiphany/divsi3-float.S
! d284617976623933db6dd9174160ecf2  libgcc/config/epiphany/divsi3.S
! 3d5b4841c338e6610dc409301097b4e4  libgcc/config/epiphany/divsi3.c
! 97eff3960788d4d51fd92fa444c9347b  libgcc/config/epiphany/epiphany-asm.h
! 4d9e74a41dd4ebdc8ae098fa7fabfc45  libgcc/config/epiphany/ieee-754/eqsf2.S
! b52bdab4965b5ab3b5dbc1919a328875  libgcc/config/epiphany/ieee-754/fast_div.S
! 3c7e723fd0ff443765daac85f1621c68  libgcc/config/epiphany/ieee-754/gtesf2.S
! 91bf147692f5993a144560fd2af54970  libgcc/config/epiphany/ieee-754/ordsf2.S
! 9cfc1a6ef52a4bf944c2973cd1a37aaa  libgcc/config/epiphany/ieee-754/uneqsf2.S
! 6937b43485304e158bfb176ba942be62  libgcc/config/epiphany/modsi3-float.S
! 7e8f67f0ef4fe45b7f0391353e9c0c2f  libgcc/config/epiphany/modsi3.S
! c9657d7b561b75444e0c6fbed9a2f6a9  libgcc/config/epiphany/modsi3.c
! 11cef774381a212413a995140b86bab9  libgcc/config/epiphany/mulsi3.c
  d76fc3e367e9f20ca1d6e4b8ef979bd9  libgcc/config/epiphany/t-custom-eqsf
! 7bca8ec9a3dedc2f028cb3476e6f9228  libgcc/config/epiphany/t-epiphany
! 0dec599d9776a4e013a38bf397416b43  libgcc/config/epiphany/udivsi3-float.S
! 3af934d09a7a10bc1bfb9fedb3640823  libgcc/config/epiphany/udivsi3-float.c
! 1f5d6cd6a94ea98e905a027f7cc6da59  libgcc/config/epiphany/udivsi3.S
! 5b045c94d8a3d671782a0140c1ab0716  libgcc/config/epiphany/udivsi3.c
! 8e45d6a294084862ddda6aeea1b22639  libgcc/config/epiphany/umodsi3-float.S
! 77e2e9a5d3f333edc6eb539283f5432a  libgcc/config/epiphany/umodsi3.S
! a8e95e37d3d47aa2ccd988c0bdf7fe15  libgcc/config/epiphany/umodsi3.c
! 94dce5349e7f89419650ca00b23690fb  libgcc/config/fr30/crti.S
! 34326bc78326dfc044c12b41a5ba72f9  libgcc/config/fr30/crtn.S
! 461c7d37cd4334ea8f77dc52c9aff3dc  libgcc/config/fr30/lib1funcs.S
  ee1781f6076fe4696c4710d29bcaa9f2  libgcc/config/fr30/t-fr30
! 43a142ec8416e55988cde59ecceb7cdc  libgcc/config/frv/cmovd.c
! 87413a23b76a6bdb77d3fee48b08f7ff  libgcc/config/frv/cmovh.c
! bfc771bd5f408aee216d85b3bc4d055e  libgcc/config/frv/cmovw.c
! 1d57d6f3df285d8bc32270c4f2af5b31  libgcc/config/frv/elf-lib.h
! c5537b9e2240af45a74f5d3184c694aa  libgcc/config/frv/frv-abi.h
! fcda09625b9b068e475c0a2f3b76aa08  libgcc/config/frv/frvbegin.c
! 41f6c743b19eab4feedac24ba02e7144  libgcc/config/frv/frvend.c
! a5daf99bb62e367bc0e3239c6840fba9  libgcc/config/frv/lib1funcs.S
! 558f1060299b36586825d40368547540  libgcc/config/frv/libgcc-glibc.ver
  519042a46e82243706e07f0df8d12e35  libgcc/config/frv/modi.c
  f7d4923f0512faafd07369fa6bccd718  libgcc/config/frv/t-frv
  edf3d4afc7174e81e4b47c0bb0de7522  libgcc/config/frv/t-linux
--- 100732,100818 ----
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crti.S
  d41d8cd98f00b204e9800998ecf8427e  libgcc/config/bpf/crtn.S
  8d4717fef859f166f4ef387b932a72f1  libgcc/config/bpf/t-bpf
! 061b825d230b9430471a58839937a27f  libgcc/config/c6x/c6x-abi.h
! 447f82920fe31ec7896b35b5a1325442  libgcc/config/c6x/crti.S
! 727bcaf149dd992c6e15845670b730e5  libgcc/config/c6x/crtn.S
! eed52513c0879a5576c33a1358e6488f  libgcc/config/c6x/eqd.c
! 143eb3a8355068ae705b69481a8b3012  libgcc/config/c6x/eqf.c
! 4c08510f5fcf8d9074d82d7a4368e268  libgcc/config/c6x/ged.c
! 9695bb47f97b40ef47a56b3cb071c39e  libgcc/config/c6x/gef.c
! 9fe57c454ffb963ac08040e6cc09ecb0  libgcc/config/c6x/gtd.c
! f9f2b202c58e120f44842e96d1954586  libgcc/config/c6x/gtf.c
! f91db4a766ac14382acdd84f7b441377  libgcc/config/c6x/led.c
! 8a522a508408a634e80f7101d7866fb9  libgcc/config/c6x/lef.c
! 4f37d0db96e0260190a13160ab980358  libgcc/config/c6x/lib1funcs.S
! a69a9947d7322fe3d5c142f5d4ee3a41  libgcc/config/c6x/libgcc-eabi.ver
  9068a836854af657b1b590da0c0659f1  libgcc/config/c6x/libunwind.S
! e5cefec375a29765fc3ed214c86f1c82  libgcc/config/c6x/ltd.c
! c6f40d7cc5cbf33a460ecd719a481c9a  libgcc/config/c6x/ltf.c
! a32f9d99b9d236f727ca279e153c013f  libgcc/config/c6x/pr-support.c
! 15443dd1502350c4824bb8451b85f8eb  libgcc/config/c6x/sfp-machine.h
  e001c742f33c68e3a33a709c345e0c3f  libgcc/config/c6x/t-elf
  7be94443a1640eded81b166ae8fe575f  libgcc/config/c6x/t-uclinux
! 52644fff324c604c7bf48173a7399d19  libgcc/config/c6x/unwind-c6x.c
! 833afe33b74a1eea4425c002741f2628  libgcc/config/c6x/unwind-c6x.h
! da69c532edf204218e8e234a079149c8  libgcc/config/cris/arit.c
! 8e42b4f01ec9096ecfbffd92e93c4644  libgcc/config/cris/mulsi3.S
! 6e7c900533f29c2dc596f9e6356695c0  libgcc/config/cris/sfp-machine.h
  9a0bcef0779a9665ae5b963049e27ac8  libgcc/config/cris/t-cris
  b9dc89a49f32db0757703a40d18557af  libgcc/config/cris/t-elfmulti
! c4f72749a9a635e2bf344e7a0ec865d6  libgcc/config/cris/umulsidi3.S
! d809820b7a338cd148aa45386ce98fe3  libgcc/config/csky/crti.S
! 41730a0eb0579daf0ff57e0fd334e1d3  libgcc/config/csky/crtn.S
! d441cd86b01581358047ecd8f5c0f92b  libgcc/config/csky/lib1funcs.S
! bfa5fff4186bfe92eeb2b29929c814d7  libgcc/config/csky/linux-atomic.c
! 14029f89033bac18a1d0c23a7758aedc  libgcc/config/csky/linux-unwind.h
! e908830e334ff162175505deaf27407f  libgcc/config/csky/t-csky
! 68fa3e98de2f0595c765d7fa73c5e1ae  libgcc/config/csky/t-linux-csky
! 52535c6e5d417ab8acca26e2950690f8  libgcc/config/darwin-64.c
! d9bea95f91e029f74b78639b3b3ce828  libgcc/config/darwin-crt-tm.c
! 5409cddddc78798c262d8f59c9ca4fbf  libgcc/config/darwin-crt3.c
  3d9ace1569f13aadc86ee3608541f634  libgcc/config/darwin-unwind.ver
  0a39ed05e14b91757915624896a5823f  libgcc/config/darwin10-unwind-find-enc-func.c
! 5c80416e5e24a9c8818a258688844dab  libgcc/config/epiphany/crti.S
! 4a07ee151099442aa1027935c4ae6b2c  libgcc/config/epiphany/crtint.S
! 2995cb964bb95d8f39a1b32475d60b9f  libgcc/config/epiphany/crtm1reg-r43.S
! 66954fe6a65c5236a30295134d7622a9  libgcc/config/epiphany/crtm1reg-r63.S
! f7b4e2ed2d7b1cacecc9ee9f89d88244  libgcc/config/epiphany/crtn.S
! 66ad6d102cfd31c589738cb7e1037d89  libgcc/config/epiphany/crtrunc.S
! ed2b61ecf5fa00602d7ff8b8293ec247  libgcc/config/epiphany/divsi3-float.S
! 15ea4d72a6b255a33955be8daf437946  libgcc/config/epiphany/divsi3.S
! c21a136a15123fc2a18b586638e39789  libgcc/config/epiphany/divsi3.c
! 0e472afe4ba6e51fb3effc61af66c33a  libgcc/config/epiphany/epiphany-asm.h
! c9adf912792a0ea9d74f1962ec7deb0b  libgcc/config/epiphany/ieee-754/eqsf2.S
! 2a31e99eb9a0feabc488434f70b96dba  libgcc/config/epiphany/ieee-754/fast_div.S
! a730974e08a4efe209b47a5224bbd7ba  libgcc/config/epiphany/ieee-754/gtesf2.S
! adcf5697a0adfb7c445d70deb97c922d  libgcc/config/epiphany/ieee-754/ordsf2.S
! 1d8e600c8996d58f16660fec2b35d590  libgcc/config/epiphany/ieee-754/uneqsf2.S
! 2f6c677638f559b75f3f24811867f9ba  libgcc/config/epiphany/modsi3-float.S
! fbc5c58e3a0c06b4bdd07a59cd2eb252  libgcc/config/epiphany/modsi3.S
! 95302b0ac4eb64510733dbefdd7cccfd  libgcc/config/epiphany/modsi3.c
! 0d77ae1547862c45426a4caf1735072e  libgcc/config/epiphany/mulsi3.c
  d76fc3e367e9f20ca1d6e4b8ef979bd9  libgcc/config/epiphany/t-custom-eqsf
! 17885c3db7580153895af54f436f2e5d  libgcc/config/epiphany/t-epiphany
! 465745fde621b9c88f3ce76b0c61caa2  libgcc/config/epiphany/udivsi3-float.S
! 405c31d6b06af69e8dd1a611177d4dd2  libgcc/config/epiphany/udivsi3-float.c
! b2a8b1fb95f74f8b75dd908b6d3f40a5  libgcc/config/epiphany/udivsi3.S
! d39eab17dedb3bed30abe5f04e24a7a6  libgcc/config/epiphany/udivsi3.c
! 354af99609f63d6a67c55fed7c18a60e  libgcc/config/epiphany/umodsi3-float.S
! 5c69f77d1be2332c97874e3fb2678e9d  libgcc/config/epiphany/umodsi3.S
! fc4bdcd2ff5f9dae25d38d391f37945a  libgcc/config/epiphany/umodsi3.c
! 11dc3b278bc6863ac7c4f1aae726b475  libgcc/config/fr30/crti.S
! 8403734da25bf6b363b932e81297def9  libgcc/config/fr30/crtn.S
! 447949c24a8b3102ed6b68da34072afa  libgcc/config/fr30/lib1funcs.S
  ee1781f6076fe4696c4710d29bcaa9f2  libgcc/config/fr30/t-fr30
! 3180e984b705ad1c587a4706bf56b2ab  libgcc/config/frv/cmovd.c
! 32c4bbf6fc56969fb4b863e9f5d6537b  libgcc/config/frv/cmovh.c
! 07f91c6e5db0550412d09b6c5294f2bb  libgcc/config/frv/cmovw.c
! b2915e18138b63abc8c00081910c388e  libgcc/config/frv/elf-lib.h
! 53c1362a846ebfa55120588d8ae32d32  libgcc/config/frv/frv-abi.h
! 272a30a4b0fe77a33b465177b3f07329  libgcc/config/frv/frvbegin.c
! 6b096ecd56eebdeedbf2cc6ec56cf845  libgcc/config/frv/frvend.c
! fd70f8b0d98f6f2034fdc8e11ce18eed  libgcc/config/frv/lib1funcs.S
! 4e17276351ba51815e7489fca19e1a1a  libgcc/config/frv/libgcc-glibc.ver
  519042a46e82243706e07f0df8d12e35  libgcc/config/frv/modi.c
  f7d4923f0512faafd07369fa6bccd718  libgcc/config/frv/t-frv
  edf3d4afc7174e81e4b47c0bb0de7522  libgcc/config/frv/t-linux
*************** c363a68408b30fe1ae97782cfb8a4ac1  libgcc
*** 92861,92916 ****
  8655cce7a18893493cc17391c6ce08d5  libgcc/config/frv/ulltof.c
  756aa4a0c6f33a0203e0ea6594c19e38  libgcc/config/frv/umodi.c
  63a86c0eba76d6ea5b13351162b69e89  libgcc/config/ft32/crti-hw.S
! 3b45437efdc770d99f156a9735fe9d17  libgcc/config/ft32/crti.S
! ae118af382e62fb54901ca9596e9b41a  libgcc/config/ft32/crtn.S
  4d440904c0919d8bade72af495ee932b  libgcc/config/ft32/epilog.S
! c5732d72272e5ef64dd163b6d91c88c1  libgcc/config/ft32/lib1funcs.S
  fd43d6ac7bf2546f0be1ff27b92cf494  libgcc/config/ft32/prolog.S
  7651ba55a7767a127d4d8d9e1798196d  libgcc/config/ft32/sfp-machine.h
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
! b5ebdc4520e56b3168dfb51ef914b6a4  libgcc/config/gcn/atomic.c
! 6493c642963d145c85066f5b324dfb12  libgcc/config/gcn/crt0.c
! d695edc6703cb29a46bf5cb0d2b3ea25  libgcc/config/gcn/gthr-gcn.h
! e5a09729e6224172863923925ce48623  libgcc/config/gcn/lib2-bswapti2.c
! de757c421f3c316011c4f44c21769837  libgcc/config/gcn/lib2-divmod-di.c
! b254957a881c2f71b530f67b607c301b  libgcc/config/gcn/lib2-divmod-hi.c
! 08bdeaddbcc9a1f59b8fd026acce394f  libgcc/config/gcn/lib2-divmod.c
! fd2aba22cada05e2fef8aa82f15406c3  libgcc/config/gcn/lib2-gcn.h
  c9b91505a24abd3bc6b11e0f094edee0  libgcc/config/gcn/sfp-machine.h
  07c8d881fd370075e4d269a82ef9238a  libgcc/config/gcn/t-amdgcn
! c9fca3b49f23edb27cff5c85b0ffad31  libgcc/config/gcn/unwind-gcn.c
! 645406d33084335d0321b1e7acdd38e5  libgcc/config/gthr-lynx.h
! bc1510a56045d2728232e13d1f8a7903  libgcc/config/gthr-rtems.h
! ccfe4121a8810427f6ad9dae38510e2b  libgcc/config/gthr-vxworks-cond.c
! 99d4f7243e383f4e07fb54a47a770acb  libgcc/config/gthr-vxworks-thread.c
! 6de24a75ad7e58708837c903576a346e  libgcc/config/gthr-vxworks-tls.c
! fd67dddd484ed185ac82ef9b987076f6  libgcc/config/gthr-vxworks.c
! 1604f8e2f360f6f55335afc37b51e299  libgcc/config/gthr-vxworks.h
! ca9cf547c3f83e233c88c43c9eaea98d  libgcc/config/h8300/clzhi2.c
! 52a27ee0de843384c7e2e36987034a86  libgcc/config/h8300/crti.S
! 3e2daa57698b8dbd175721b9a88bb85f  libgcc/config/h8300/crtn.S
! 66305937e145bc3ee4f3a1fd5a43da3f  libgcc/config/h8300/ctzhi2.c
! 93924cd4b917228d519bde738bebac90  libgcc/config/h8300/fixunssfsi.c
  378e602ed89f497e602776d99b46d7ad  libgcc/config/h8300/h8300-lib.h
! 2561f09d5e5379001ee7fdb7aee3dd5f  libgcc/config/h8300/lib1funcs.S
! 48bf013e96908d2a4dd66241adc15f62  libgcc/config/h8300/parityhi2.c
! 3961511deec4675d10c5bb114c88ea75  libgcc/config/h8300/popcounthi2.c
! d778d8f26219a6a4b717ed82a1dc5968  libgcc/config/h8300/sfp-machine.h
  e002eff640bc32723d0216927bc99406  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
! adb7572fca4e5399e61cd959a1d18356  libgcc/config/hardfp.c
! 6f9badee8050b5680dd64b2589d157b1  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
! c60603983e146cd13fa7c1e9a02d4468  libgcc/config/i386/32/tf-signs.c
  c823b0cff478388588a9aabedaa93068  libgcc/config/i386/64/_divtc3.c
  8f7ff4449be9588e09da2929b14b1647  libgcc/config/i386/64/_multc3.c
  6268512927fae19eb0e34459520beb28  libgcc/config/i386/64/_powitf2.c
  7d5aec02242115dca9fe0000c4ca32f0  libgcc/config/i386/64/eqtf2.c
  b2bcf8b944f937cb4f3799c02670dcee  libgcc/config/i386/64/getf2.c
  a92aa384cf96b81c0dbb642826200dd7  libgcc/config/i386/64/letf2.c
! f98524cd8d91de95097e75aab52a9f2a  libgcc/config/i386/64/sfp-machine.h
! aca2069799408883c3b5d9e5d52c64ed  libgcc/config/i386/64/t-softfp
  498bbaf506a5bbdaa793f66399ece491  libgcc/config/i386/64/t-softfp-compat
  878a76eff85376bb9a57f42484b5eadf  libgcc/config/i386/_divhc3.c
  17d5c1fb1d0c8e3f16a48b4d809ea213  libgcc/config/i386/_mulhc3.c
--- 100822,100877 ----
  8655cce7a18893493cc17391c6ce08d5  libgcc/config/frv/ulltof.c
  756aa4a0c6f33a0203e0ea6594c19e38  libgcc/config/frv/umodi.c
  63a86c0eba76d6ea5b13351162b69e89  libgcc/config/ft32/crti-hw.S
! b275b9e684d7fb26b53cce34ebf74da4  libgcc/config/ft32/crti.S
! 204f22f6650b67e1f30f1565d47ab0e5  libgcc/config/ft32/crtn.S
  4d440904c0919d8bade72af495ee932b  libgcc/config/ft32/epilog.S
! 0db7662d06fbb239f6dffd31d653c556  libgcc/config/ft32/lib1funcs.S
  fd43d6ac7bf2546f0be1ff27b92cf494  libgcc/config/ft32/prolog.S
  7651ba55a7767a127d4d8d9e1798196d  libgcc/config/ft32/sfp-machine.h
  de53de7ae179ee6c1472a52a63fffec9  libgcc/config/ft32/t-ft32
! 494274965550f0a2a42710779910d5e8  libgcc/config/gcn/atomic.c
! 35a0886a00917e0ccb78e9989b70ebad  libgcc/config/gcn/crt0.c
! 22a3ae6c002f71b5c973215cdbbb6f12  libgcc/config/gcn/gthr-gcn.h
! 1b4825c2625f49dd3b1dce293aaa8138  libgcc/config/gcn/lib2-bswapti2.c
! 529cff7b50ee5434ec2de6a1912f4cd5  libgcc/config/gcn/lib2-divmod-di.c
! 331d0794af424847fa5d013165cdbb3d  libgcc/config/gcn/lib2-divmod-hi.c
! 939e14d9809032f92f92d625f73adee1  libgcc/config/gcn/lib2-divmod.c
! 90971636e7d2d3229582017fd87474b5  libgcc/config/gcn/lib2-gcn.h
  c9b91505a24abd3bc6b11e0f094edee0  libgcc/config/gcn/sfp-machine.h
  07c8d881fd370075e4d269a82ef9238a  libgcc/config/gcn/t-amdgcn
! 9c50beeefeb4ab50a47e6419cbc2473e  libgcc/config/gcn/unwind-gcn.c
! 07a18f0e880ce13999ce082b74d71341  libgcc/config/gthr-lynx.h
! bad2d36f9b8ac4676d200999a586a9a4  libgcc/config/gthr-rtems.h
! 2cfca2bc0a5afe5bf5be60360b7df46c  libgcc/config/gthr-vxworks-cond.c
! 357c468eb0a812e9f4c12642de55aa46  libgcc/config/gthr-vxworks-thread.c
! 404e3203bf645abd8a0d60186e057306  libgcc/config/gthr-vxworks-tls.c
! 5bca06691569b3a9d3181f95881bb3bf  libgcc/config/gthr-vxworks.c
! 1138a50df2b4ac59b7c8d012a1d3d177  libgcc/config/gthr-vxworks.h
! ca5d05685e0b1b3931a0cb47931433f9  libgcc/config/h8300/clzhi2.c
! 336606769ad2ebe93baf3b039509d0d5  libgcc/config/h8300/crti.S
! 7fb9e8bf1d55627b4728c5371920a80d  libgcc/config/h8300/crtn.S
! 2dd3b94efb51b21b251dfaa003512625  libgcc/config/h8300/ctzhi2.c
! f9f799baf9d21b260f4a975618bd64e8  libgcc/config/h8300/fixunssfsi.c
  378e602ed89f497e602776d99b46d7ad  libgcc/config/h8300/h8300-lib.h
! 871f32fe678de2c0cad157365e301930  libgcc/config/h8300/lib1funcs.S
! f9f46b364a04c63ab303998f92f28584  libgcc/config/h8300/parityhi2.c
! 4bb83df73629c52f4b20274d18033bba  libgcc/config/h8300/popcounthi2.c
! caf9a527e8e631868bfb9a90240d2a70  libgcc/config/h8300/sfp-machine.h
  e002eff640bc32723d0216927bc99406  libgcc/config/h8300/t-h8300
  5e306047059c21ece876039122734094  libgcc/config/h8300/t-linux
! d83be243e3a0a9b8c6086f96c4d4f2f4  libgcc/config/hardfp.c
! 475eef8a468bce21734a4397bd19ae6d  libgcc/config/i386/32/sfp-machine.h
  33fdee54eed1c202a39234d129f2a7ae  libgcc/config/i386/32/t-iamcu
  8271562f1de2b3fa5b976454b83bfdc0  libgcc/config/i386/32/t-softfp
! 450c66baa4512fe791eb6286f4264685  libgcc/config/i386/32/tf-signs.c
  c823b0cff478388588a9aabedaa93068  libgcc/config/i386/64/_divtc3.c
  8f7ff4449be9588e09da2929b14b1647  libgcc/config/i386/64/_multc3.c
  6268512927fae19eb0e34459520beb28  libgcc/config/i386/64/_powitf2.c
  7d5aec02242115dca9fe0000c4ca32f0  libgcc/config/i386/64/eqtf2.c
  b2bcf8b944f937cb4f3799c02670dcee  libgcc/config/i386/64/getf2.c
  a92aa384cf96b81c0dbb642826200dd7  libgcc/config/i386/64/letf2.c
! c1b03023642d1f0a8b784b5503d980fa  libgcc/config/i386/64/sfp-machine.h
! 7a431fc49b9bf81df6b0bbdfe70e3c07  libgcc/config/i386/64/t-softfp
  498bbaf506a5bbdaa793f66399ece491  libgcc/config/i386/64/t-softfp-compat
  878a76eff85376bb9a57f42484b5eadf  libgcc/config/i386/_divhc3.c
  17d5c1fb1d0c8e3f16a48b4d809ea213  libgcc/config/i386/_mulhc3.c
*************** d4cd30e890b5d772946c79359704fc0b  libgcc
*** 92920,92960 ****
  0987e17186e8a33dbf7c39d7934d4861  libgcc/config/i386/avx_resms64x.S
  ef88ad808d3f1101d7e96fae5706660f  libgcc/config/i386/avx_savms64.S
  12b992c114b195cf886a7a218b0d1e54  libgcc/config/i386/avx_savms64f.S
! 7f089ca799619d5ba4738ce55cf7e0bf  libgcc/config/i386/cpuinfo.c
! 00ecea6fee1d3831c4c6f617bc29199a  libgcc/config/i386/crtfastmath.c
! 1739d1fdc0d771c0dba649d180c0b8b2  libgcc/config/i386/crti.S
! b28948d605803109f47f04dc3d45f615  libgcc/config/i386/crtn.S
! 3151dc2c7a53326f12cd4b556c0f561e  libgcc/config/i386/crtprec.c
! 99a17080e7fcaf954d05b8cf86f9b0de  libgcc/config/i386/cygming-crtbegin.c
! 983bbbff4f3334ee565140816ea39877  libgcc/config/i386/cygming-crtend.c
! e5cb53e50a42e400f384a3060d88c0e9  libgcc/config/i386/cygwin.S
! b33885d2cac10c5949c9e3df63a23c35  libgcc/config/i386/darwin-lib.h
! 17d913c65f1977716df0f0615a77ae68  libgcc/config/i386/dragonfly-unwind.h
! 37489451723bffaf04274fce81a6888c  libgcc/config/i386/elf-lib.h
! 3a372536ae5810e22d14b75b7f9454f2  libgcc/config/i386/enable-execute-stack-mingw32.c
! e29bbe443954432956056c4aae10b23d  libgcc/config/i386/freebsd-unwind.h
! 00e3544cfa3801707b50892a8b5fbd8d  libgcc/config/i386/gnu-unwind.h
! 3f4f1f071b12506eb1a04c573fa712e3  libgcc/config/i386/gthr-win32.c
! 7103af8c4e6dd376446ce2a08786f7b4  libgcc/config/i386/gthr-win32.h
! 7b351b269560a7638871b53799eaa3a9  libgcc/config/i386/i386-asm.h
! 13de1b79eb101102b36099ec6d254c8e  libgcc/config/i386/libgcc-bsd.ver
! 4b2513a93e65399118b742e3bbde1d6d  libgcc/config/i386/libgcc-cygming.ver
  4c417359a9e666cd606e8382b37ea72a  libgcc/config/i386/libgcc-darwin.ver
! 0584f2c0bd394c7803d4b8b2f12a64cd  libgcc/config/i386/libgcc-glibc.ver
! d28be35107df27f44c6673e211d514ae  libgcc/config/i386/libgcc-sol2.ver
! c14da64e04aa53e35b23648ff740e0e1  libgcc/config/i386/linux-unwind.h
! 18d4d0825e1b029adcef4c2483da823d  libgcc/config/i386/morestack.S
! 8324a4938b9ace155729f49a4bac3875  libgcc/config/i386/resms64.h
! ea5b77aff0d14343a93fa840c05d95eb  libgcc/config/i386/resms64f.h
! 49380de826c5c87334f57d22abeb05e5  libgcc/config/i386/resms64fx.h
! bb57929d23101015ce7844af8fc08500  libgcc/config/i386/resms64x.h
! e63b86bc914b5eead7dc28161c51a663  libgcc/config/i386/savms64.h
! ce11f30ac352c6f9955f245bf73abf89  libgcc/config/i386/savms64f.h
! 6b81839910d1f9eeedec3853422cd82e  libgcc/config/i386/sfp-exceptions.c
! b72304f8140103cb7ef03b12699bf31c  libgcc/config/i386/sfp-machine.h
! 21033df15d9e692ae5fddb58b62a5dee  libgcc/config/i386/shadow-stack-unwind.h
! 2d8d28e6f2f5b3374fb194f61469cdfd  libgcc/config/i386/sol2-c1.S
! 4cfc2c83faaaa3cac88a89c691b81d2b  libgcc/config/i386/sol2-unwind.h
  597d8ce804b1c2e917fdb1870e7ea0ac  libgcc/config/i386/sse_resms64.S
  bedbda9d38d546838a72b745204a631f  libgcc/config/i386/sse_resms64f.S
  34b800926e66c174903d05295a562acd  libgcc/config/i386/sse_resms64fx.S
--- 100881,100925 ----
  0987e17186e8a33dbf7c39d7934d4861  libgcc/config/i386/avx_resms64x.S
  ef88ad808d3f1101d7e96fae5706660f  libgcc/config/i386/avx_savms64.S
  12b992c114b195cf886a7a218b0d1e54  libgcc/config/i386/avx_savms64f.S
! b6c3347d9128016cb227506c6965ec7c  libgcc/config/i386/cpuinfo.c
! 504810feea9a0983b9ec952afa792474  libgcc/config/i386/crtfastmath.c
! 95eb655a14e2c76302cfd69f4ad69eeb  libgcc/config/i386/crti.S
! 6248bbbda0a19e195da5781221af7734  libgcc/config/i386/crtn.S
! 2ea5a9bb4f3a1b2462a61299c1b563f5  libgcc/config/i386/crtprec.c
! dc039c48b0a31b95ec6d1131bdd57964  libgcc/config/i386/cygming-crtbegin.c
! 9732d3792a933e4d3be18e0766c70329  libgcc/config/i386/cygming-crtend.c
! a8acc3eb4d0aa4a30cbc758887d79ce9  libgcc/config/i386/cygwin.S
! b2bae7d1485916fbd96e39ba1ae73348  libgcc/config/i386/darwin-lib.h
! 6e7f7c3714564781c1c8a5ccf1baa80f  libgcc/config/i386/dragonfly-unwind.h
! 0ed0930c39e32a2db75352bee920f1a3  libgcc/config/i386/elf-lib.h
! 3a0607606f73df6979b0f7d5c23ff76f  libgcc/config/i386/enable-execute-stack-mingw32.c
! bc4639dab4172a19295c61958b038fb4  libgcc/config/i386/freebsd-unwind.h
! 87086d5e96ad5e40148989bd426cf896  libgcc/config/i386/gnu-unwind.h
! 6bbf7495590f9d76c4af93d86f0c9f21  libgcc/config/i386/gthr-mcf.h
! 5bca575659d1e259a73d8fe225809fbc  libgcc/config/i386/gthr-win32-cond.c
! bdc92aace39e7e8abcb5663d3b4071a9  libgcc/config/i386/gthr-win32-thread.c
! fcb93c23c3d1e2f6554734a3eeca61d7  libgcc/config/i386/gthr-win32.c
! 02809995c4682d40a14aabf0ff07eea9  libgcc/config/i386/gthr-win32.h
! 4c99f02db72ea9232b04e653a40e2c25  libgcc/config/i386/i386-asm.h
! d50c8ac9e7e593d55979d2767abbc942  libgcc/config/i386/libgcc-bsd.ver
! 1e8505ed5d1c9ff3a07794abe0a518e1  libgcc/config/i386/libgcc-cygming.ver
  4c417359a9e666cd606e8382b37ea72a  libgcc/config/i386/libgcc-darwin.ver
! 46ad748436d7ca82128193d384153d37  libgcc/config/i386/libgcc-glibc.ver
! 01c88ab7073fc8c5b73c6a7b85483651  libgcc/config/i386/libgcc-mingw.ver
! 7fbf146bf8e6adff5777d465cf088428  libgcc/config/i386/libgcc-sol2.ver
! e59e1e091ea5a1225b34454ddce87def  libgcc/config/i386/linux-unwind.h
! da30276bc4e5935c4b38cf66428f33de  libgcc/config/i386/morestack.S
! cc5a562c6a03e9ed713e380396283037  libgcc/config/i386/resms64.h
! 8857d5484478fa33516774fb4cacc1b2  libgcc/config/i386/resms64f.h
! 171e5dd09a9ad948b913c9429f272169  libgcc/config/i386/resms64fx.h
! 3cd5503c774b8605fa43be14e4256995  libgcc/config/i386/resms64x.h
! 6f7f53ddf0cb7b31aab0e8fd31a87a74  libgcc/config/i386/savms64.h
! cb8421b9e33916cdb8064a08da0e3a8f  libgcc/config/i386/savms64f.h
! b5e19201100edb2094353650ff9c453b  libgcc/config/i386/sfp-exceptions.c
! d15ae0137ca61a07b6d128c923e73d53  libgcc/config/i386/sfp-machine.h
! 910deeb9f0056ffab7747ebca3d6087b  libgcc/config/i386/shadow-stack-unwind.h
! a094c314ffd11c662bb789986fc8ef2b  libgcc/config/i386/sol2-c1.S
! 67b58910533d03b1fb8f65aa2544b002  libgcc/config/i386/sol2-unwind.h
  597d8ce804b1c2e917fdb1870e7ea0ac  libgcc/config/i386/sse_resms64.S
  bedbda9d38d546838a72b745204a631f  libgcc/config/i386/sse_resms64f.S
  34b800926e66c174903d05295a562acd  libgcc/config/i386/sse_resms64fx.S
*************** ab24e8c90feb5a86f9ff59988a9bcc43  libgcc
*** 92974,93011 ****
  68adad1226ee1737a6a8d12b84a63297  libgcc/config/i386/t-dragonfly
  3bf8d762f9c0bcbc4bfd5fe36b97ae23  libgcc/config/i386/t-dw2-eh
  9d82d05d119f031c6327b2b2a6015871  libgcc/config/i386/t-freebsd
! e80484726d0a295b22e75d2a9f801304  libgcc/config/i386/t-gthr-win32
  411ab7f31d63e25ae8f98aef0132e384  libgcc/config/i386/t-linux
  80f832afb70afb11a4a1c2e403944b73  libgcc/config/i386/t-mingw-pthread
  226cdff862bdab3d98ad952ff21a40a8  libgcc/config/i386/t-mingw32
  5d85ed8e4ae93489c3433d591a68312c  libgcc/config/i386/t-msabi
  0c1d77cb54c2a81694d96a9ff5e8180c  libgcc/config/i386/t-nto
  12cdd13a4838418e9805277c7b2fcd92  libgcc/config/i386/t-seh-eh
  aae3ba90f7a9172b2dff6b8d61c25735  libgcc/config/i386/t-sjlj-eh
! e5387e909a3b29458cfdda0150e1f8f6  libgcc/config/i386/t-slibgcc-cygming
! cf370725d0044354d6a71c93776f0618  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! b9ed1b1c616624e7418c3072a296f713  libgcc/config/i386/value-unwind.h
! 8aa0d450ae904b5dd179b2b1706d0516  libgcc/config/i386/w32-unwind.h
  ffc8a68dc02aca1cf8703f6ff29109d3  libgcc/config/ia64/__divxf3.S
  c3b9941b44cdc74dfc42996f7d2d765b  libgcc/config/ia64/_fixtfdi.S
  e5d2feda0a6505570c0a64e52fcae703  libgcc/config/ia64/_fixunstfdi.S
  4a628b33bbcfbe6ace2c47d3e486ec14  libgcc/config/ia64/_floatditf.S
! ee293f374c0f496cd6875a1ff1e8a547  libgcc/config/ia64/crtbegin.S
! 9a07f92e31998215c82958e1b92b5af2  libgcc/config/ia64/crtend.S
! 0db7c65611bc9c3f105d6deedbaf3a9a  libgcc/config/ia64/crtfastmath.c
! bf419847220e476a88e7114bb1d09de4  libgcc/config/ia64/crti.S
! 1a9477c4aba95423fa68632f600b2472  libgcc/config/ia64/crtn.S
  09ae9898a8a15266c60b15a27f0b1ba4  libgcc/config/ia64/divtf3.c
! cd88650db6dae6d4048c9b2c4142e4c9  libgcc/config/ia64/fde-glibc.c
! 7a0e3b9dad015a3e8e69ed4df4d5da5f  libgcc/config/ia64/fde-vms.c
! 21eabf4a9556e34962f4f57368ea98d3  libgcc/config/ia64/lib1funcs.S
! f2bbf8a9ed4657c2867a898c945715a8  libgcc/config/ia64/libgcc-glibc.ver
! 8cd1064615b5cad26e2529b7a49f7b32  libgcc/config/ia64/libgcc-ia64.ver
! 16f5679e836a7f1264573cda505ae3d6  libgcc/config/ia64/linux-unwind.h
! 06937c650c627a0dd306eb744a740b8a  libgcc/config/ia64/quadlib.c
! ece87b4b52a6aefb1d75653282193395  libgcc/config/ia64/sfp-exceptions.c
  96123e16288e91bc9fcaeb243516c740  libgcc/config/ia64/sfp-machine.h
  0bb88f6d16035394a23c622ba320a824  libgcc/config/ia64/t-eh-ia64
  33399ed8e4f636769acf666b91d227c6  libgcc/config/ia64/t-hpux
--- 100939,100978 ----
  68adad1226ee1737a6a8d12b84a63297  libgcc/config/i386/t-dragonfly
  3bf8d762f9c0bcbc4bfd5fe36b97ae23  libgcc/config/i386/t-dw2-eh
  9d82d05d119f031c6327b2b2a6015871  libgcc/config/i386/t-freebsd
! 21a697b3742c466bc6b268a906529ab6  libgcc/config/i386/t-gthr-win32
  411ab7f31d63e25ae8f98aef0132e384  libgcc/config/i386/t-linux
+ 1bbab852ec95edb798886ed925c7e989  libgcc/config/i386/t-mingw-mcfgthread
  80f832afb70afb11a4a1c2e403944b73  libgcc/config/i386/t-mingw-pthread
  226cdff862bdab3d98ad952ff21a40a8  libgcc/config/i386/t-mingw32
  5d85ed8e4ae93489c3433d591a68312c  libgcc/config/i386/t-msabi
  0c1d77cb54c2a81694d96a9ff5e8180c  libgcc/config/i386/t-nto
  12cdd13a4838418e9805277c7b2fcd92  libgcc/config/i386/t-seh-eh
  aae3ba90f7a9172b2dff6b8d61c25735  libgcc/config/i386/t-sjlj-eh
! 641dd355005c77e8135f1c6482f1422b  libgcc/config/i386/t-slibgcc-cygming
! 97e2e74784f32597a8c5d88288a87562  libgcc/config/i386/t-slibgcc-mingw
! 9ed55f331a24307868211f3fe2f59893  libgcc/config/i386/t-softfp
  e3f37cf5fbd829324e763c71726907a2  libgcc/config/i386/t-sol2
  89444a8a78bd3aa7426e9525cdd7ce25  libgcc/config/i386/t-stack-i386
! 4f59708b8166146efe519bf19e06007d  libgcc/config/i386/value-unwind.h
! ac7e780b7f2a62ac2d54c938452ad663  libgcc/config/i386/w32-unwind.h
  ffc8a68dc02aca1cf8703f6ff29109d3  libgcc/config/ia64/__divxf3.S
  c3b9941b44cdc74dfc42996f7d2d765b  libgcc/config/ia64/_fixtfdi.S
  e5d2feda0a6505570c0a64e52fcae703  libgcc/config/ia64/_fixunstfdi.S
  4a628b33bbcfbe6ace2c47d3e486ec14  libgcc/config/ia64/_floatditf.S
! 3e9e60f327dffdd126b9385c6a99894f  libgcc/config/ia64/crtbegin.S
! 62b850e232a41d4d4b5c45bc5638a2b6  libgcc/config/ia64/crtend.S
! 901060bbe71b24fe05ff5c3f2cc288a3  libgcc/config/ia64/crtfastmath.c
! f8bc1528e8fa5f20aa4e8dbade41f3d6  libgcc/config/ia64/crti.S
! 0180e7ffb99956be5e263c597db1968e  libgcc/config/ia64/crtn.S
  09ae9898a8a15266c60b15a27f0b1ba4  libgcc/config/ia64/divtf3.c
! ea813887c186e38cfe58de2f3e601614  libgcc/config/ia64/fde-glibc.c
! efd55bd758a1e5c88aa19d0ed82ba824  libgcc/config/ia64/fde-vms.c
! 3f40d8c66d94c95667abe032cc5531a6  libgcc/config/ia64/lib1funcs.S
! eac10891adaed9eefe8a35932c398685  libgcc/config/ia64/libgcc-glibc.ver
! 503af0707e2ac3d50cd9cc5c6387cb28  libgcc/config/ia64/libgcc-ia64.ver
! d2ccca9e0ae224e8b950b1889c2c1a8d  libgcc/config/ia64/linux-unwind.h
! f652a165c99ab296fa8d03fd231c449c  libgcc/config/ia64/quadlib.c
! 0b997c3cffe946b7fd858cdcf4be033a  libgcc/config/ia64/sfp-exceptions.c
  96123e16288e91bc9fcaeb243516c740  libgcc/config/ia64/sfp-machine.h
  0bb88f6d16035394a23c622ba320a824  libgcc/config/ia64/t-eh-ia64
  33399ed8e4f636769acf666b91d227c6  libgcc/config/ia64/t-hpux
*************** bbd02bc575b39b813abb3651cde980d7  libgcc
*** 93017,93749 ****
  3cc3f3d4611f64c4d5fc225a72d8ccc4  libgcc/config/ia64/t-softfp
  7508d41329db54ddeccc7e86a6cafae5  libgcc/config/ia64/t-softfp-compat
  552ede49162d3a4fb9e1e113de11e8b5  libgcc/config/ia64/t-vms
! 4b07e08555b087072f585d4feea27f6c  libgcc/config/ia64/tf-signs.c
! fca32d4a18d608c9eb7344d9079d5ab7  libgcc/config/ia64/unwind-ia64.c
! f3d6a0816472fb3b2331400550b2fa0a  libgcc/config/ia64/unwind-ia64.h
! 9e16a68ea117652dba1dec3aecefb8a0  libgcc/config/ia64/vms-crtinit.S
! 96e319c5ee37de30bcf1bbc937780b96  libgcc/config/ia64/vms-unwind.h
! b35bb753a21134489709871dab9b0a6f  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! f306206c948cf17da64302b249d250e5  libgcc/config/libbid/ChangeLog
! 5a241922dcbbaeba60cf8f739acb4e6f  libgcc/config/libbid/_addsub_dd.c
! f6d2abf11a64e2d5b6d879d2ae33ca1a  libgcc/config/libbid/_addsub_sd.c
! 19fa7c129865063148897a4a8ef4b9f7  libgcc/config/libbid/_addsub_td.c
! 9dd8491a5e038281ee608a5c787f7ac1  libgcc/config/libbid/_dd_to_df.c
! ec8563db46b81d742d76e2c9a3c52dc0  libgcc/config/libbid/_dd_to_di.c
! be8b7ebd9443ae3bf0d2f8ac01950557  libgcc/config/libbid/_dd_to_sd.c
! d10edd59b0a7842e20c0c0beb9fcf504  libgcc/config/libbid/_dd_to_sf.c
! 4ba5cc49cd3aedb4db5c76bbb81f7fe4  libgcc/config/libbid/_dd_to_si.c
! a5789b255eaf29e1365e4691fabfcfb8  libgcc/config/libbid/_dd_to_td.c
! 1afaa5ca86a408aa562618c3668b367c  libgcc/config/libbid/_dd_to_tf.c
! 3ebfe48cdcb50c216e6a5a59c914eb0f  libgcc/config/libbid/_dd_to_udi.c
! 6c3f16c23aeb257c13aa4ba8d43709f0  libgcc/config/libbid/_dd_to_usi.c
! c31d0333eda3e44f56268468937bf627  libgcc/config/libbid/_dd_to_xf.c
! d9e2424bd10045eaf3fa2e2a8a95966c  libgcc/config/libbid/_df_to_dd.c
! 11049b225bb5975651700b2c30d1ff80  libgcc/config/libbid/_df_to_sd.c
! 64ff3e8bf17066a81cadaab399c235ea  libgcc/config/libbid/_df_to_td.c
! 1e49aaa4bc63930a016ed986d687951a  libgcc/config/libbid/_di_to_dd.c
! 1ca7505667d4b679d428a08708b39a32  libgcc/config/libbid/_di_to_sd.c
! c0fbc700eb3ff2e5b5100eee5400b4ea  libgcc/config/libbid/_di_to_td.c
! d773b47d525be2161d107facc8e9bd30  libgcc/config/libbid/_div_dd.c
! 52f7b7291a89e6a77ca1ef7dfd6fb241  libgcc/config/libbid/_div_sd.c
! fee7256b10dc1fdc17590b22d81bc6b0  libgcc/config/libbid/_div_td.c
! 799ab582c77ab502ca47e2ad662a29c8  libgcc/config/libbid/_eq_dd.c
! d9c5bfaea68ab6aa2593ea96c86f069a  libgcc/config/libbid/_eq_sd.c
! 8ff31d3b9ff2354e376a7829caf15381  libgcc/config/libbid/_eq_td.c
! 0736ca6dedcdaecda3dffb613380d33a  libgcc/config/libbid/_ge_dd.c
! 327d1d364e0bf7215c3a1041e6b1b71c  libgcc/config/libbid/_ge_sd.c
! 42d9e20e71d49f96e7911cccea0048f9  libgcc/config/libbid/_ge_td.c
! e359d0877d240dbf444a18b2fd118563  libgcc/config/libbid/_gt_dd.c
! e9dae0652df6b347a2728cfb1d1be293  libgcc/config/libbid/_gt_sd.c
! b25cfc91e3ccaf6db859e564143f06c7  libgcc/config/libbid/_gt_td.c
! e67dea5a29a0a351b7939dfc47656590  libgcc/config/libbid/_isinfd128.c
! 255ea6ad3a82cf1e10b7ce30d4732e1e  libgcc/config/libbid/_isinfd32.c
! 41c03475dd2fe56a222d0da6039f5fdb  libgcc/config/libbid/_isinfd64.c
! 0ac05d528dd736470d92de7094aad44a  libgcc/config/libbid/_le_dd.c
! cd7753921933d0e09d6940591316b0c9  libgcc/config/libbid/_le_sd.c
! 41710966a2422dd2c4c6e7b8841c95e0  libgcc/config/libbid/_le_td.c
! 57ada2430de72b3d343e5df28d49fd18  libgcc/config/libbid/_lt_dd.c
! e26abfaf354c5c3a484b7f7d3b40f9fc  libgcc/config/libbid/_lt_sd.c
! d27b0ec76bfcafc4ed84064c5597ba23  libgcc/config/libbid/_lt_td.c
! 5590bcccdd050160465ec0592c34ba1b  libgcc/config/libbid/_mul_dd.c
! 3233859036ab44992ac3bb1c2f544da8  libgcc/config/libbid/_mul_sd.c
! 886d3f5a48e1fa06d344dd07896efd19  libgcc/config/libbid/_mul_td.c
! 0286854c91905a92f4a429131cf0a9c1  libgcc/config/libbid/_ne_dd.c
! 8e27447bf8dd62ce7f3e3cb370cd5cad  libgcc/config/libbid/_ne_sd.c
! d7d9919a8a2e52a60bb1dd28d4340785  libgcc/config/libbid/_ne_td.c
! 8c579a9f203749e732d60314995cb669  libgcc/config/libbid/_sd_to_dd.c
! bc74face30956e19b103b29c71ee3881  libgcc/config/libbid/_sd_to_df.c
! 93c464b4e0d5d9daa20445ffa6a3531f  libgcc/config/libbid/_sd_to_di.c
! 688d8472e7bc7a82e7708c22713648e2  libgcc/config/libbid/_sd_to_sf.c
! 1193b9837464e5d94272caf485316b5c  libgcc/config/libbid/_sd_to_si.c
! 31c31b616e884d952b5f9ed92bb8661c  libgcc/config/libbid/_sd_to_td.c
! 8b55827f73744236cfb822cc1051692e  libgcc/config/libbid/_sd_to_tf.c
! 4a287310704947f3f26cb420d2311fff  libgcc/config/libbid/_sd_to_udi.c
! 2b834d4969b2928c6f8d25e99652dabf  libgcc/config/libbid/_sd_to_usi.c
! 85b54f9f59a2f291b308888bed3ce232  libgcc/config/libbid/_sd_to_xf.c
! 004568ccb2497564ab97317cf3e3a8c1  libgcc/config/libbid/_sf_to_dd.c
! afb6320190242ac804b8f099b3d1ed21  libgcc/config/libbid/_sf_to_sd.c
! a1f1885bd521ef17ab07c401fb72c577  libgcc/config/libbid/_sf_to_td.c
! 00d79b508170b45713b1c43af9cbcf9c  libgcc/config/libbid/_si_to_dd.c
! b9de2f3da7d3bd8451d01878732c8146  libgcc/config/libbid/_si_to_sd.c
! 6b0bd22a56c9a4ff4862a26b33322c5b  libgcc/config/libbid/_si_to_td.c
! 612dc0b616c2a39c2e0c46083b8aa7bb  libgcc/config/libbid/_td_to_dd.c
! fab00f1d35f6880cac097a375dfdefc1  libgcc/config/libbid/_td_to_df.c
! 3013173f85af4ef565d1e18b23963881  libgcc/config/libbid/_td_to_di.c
! 63ae71118df090851bd6385378aec293  libgcc/config/libbid/_td_to_sd.c
! 1c7751109e25d3514f6afac501bccd22  libgcc/config/libbid/_td_to_sf.c
! ca0f01cb02576aceef108116260fc07c  libgcc/config/libbid/_td_to_si.c
! 5dc7b852bbd49330b1dd3e692f3f4a8c  libgcc/config/libbid/_td_to_tf.c
! bbf22a39413f5a7a47c079287a30fc7c  libgcc/config/libbid/_td_to_udi.c
! fc883fecdeaf97359287cd2bcf7dd274  libgcc/config/libbid/_td_to_usi.c
! aa6f74d931e6f917d633b3b5b9e5c8e5  libgcc/config/libbid/_td_to_xf.c
! 141ef9dc125db7c2732f6356647f6476  libgcc/config/libbid/_tf_to_dd.c
! 7f499056496a3a0ea9b5cc69ce8f14b5  libgcc/config/libbid/_tf_to_sd.c
! 27c549593feed9f40e0a7fdea3c4897f  libgcc/config/libbid/_tf_to_td.c
! bb6638db6185ef8e05ab57d86e9c35c1  libgcc/config/libbid/_udi_to_dd.c
! c66bae8d75546b66e65dc6159dde8285  libgcc/config/libbid/_udi_to_sd.c
! 534bb173fa2bb2a0593fc3cbfa5c69de  libgcc/config/libbid/_udi_to_td.c
! 95de82ee7f775776f56e86723997156b  libgcc/config/libbid/_unord_dd.c
! 7da4b8788fb19ea4b8f40e1084ca49a0  libgcc/config/libbid/_unord_sd.c
! e6596a66338a5137eaf67a4e30b78926  libgcc/config/libbid/_unord_td.c
! 9438ade7871fa1faa65b876b31bda358  libgcc/config/libbid/_usi_to_dd.c
! f3816511902805d19f016aeefe22e2e0  libgcc/config/libbid/_usi_to_sd.c
! e3a9116c9f50f0958eea3f4a1bd09ec2  libgcc/config/libbid/_usi_to_td.c
! 1e5b2c652578ad9278092ed9bd2a48fc  libgcc/config/libbid/_xf_to_dd.c
! 4170033f119ca89f9f84a541e80804c2  libgcc/config/libbid/_xf_to_sd.c
! 1bd8fd183576a4150e58e9d5aadbe25c  libgcc/config/libbid/_xf_to_td.c
! e1e3ca091a11216cd0d1a75b40a1844f  libgcc/config/libbid/bid128.c
! 7078d50fe3682f15367c3a8e039c0916  libgcc/config/libbid/bid128_2_str.h
! 397b4f5b5dd481384565fe82e6f1efbe  libgcc/config/libbid/bid128_2_str_macros.h
! d9de07a9b0554d6ccc4b981d01a90b6b  libgcc/config/libbid/bid128_2_str_tables.c
! 33ecabaf9e7eae7ccbc644650cde8343  libgcc/config/libbid/bid128_add.c
! 9975e91b80bb2f53b435bc7750c7ff5f  libgcc/config/libbid/bid128_compare.c
! e8b2ad8f0c03e25d0ffc5d22d44b82e1  libgcc/config/libbid/bid128_div.c
! 1a7de6dda0e79d56f8c31f251dc0d06a  libgcc/config/libbid/bid128_fma.c
! 0984bf2e15f4173243813c00148374f3  libgcc/config/libbid/bid128_logb.c
! 635cf2c103f8f6a979920f0115de2006  libgcc/config/libbid/bid128_minmax.c
! c05b5e6191ce2c7022bf19ae71fc82aa  libgcc/config/libbid/bid128_mul.c
! e47ad5fbad97dbeef96db07ed0bb65e0  libgcc/config/libbid/bid128_next.c
! 64352a272ff5add687691c5b61deabb2  libgcc/config/libbid/bid128_noncomp.c
! 1f9ff5ea5f87e6b18c7312314b3cc9c5  libgcc/config/libbid/bid128_quantize.c
! 5fe262ec08ba2a36e8947949861428db  libgcc/config/libbid/bid128_rem.c
! e318d59f93b8501e885c9bf893ee2c49  libgcc/config/libbid/bid128_round_integral.c
! 5fac3f4c06f1a01fb1a3e221c18a1485  libgcc/config/libbid/bid128_scalb.c
! fa618d261cf77a12097e1235861e7e6d  libgcc/config/libbid/bid128_sqrt.c
! 7b8f9ce3cabd06ef4faa813450788d82  libgcc/config/libbid/bid128_string.c
! 7dcd74f2cf9353dc04288342caace538  libgcc/config/libbid/bid128_to_int16.c
! f800ad382a97740822097b0847326b2f  libgcc/config/libbid/bid128_to_int32.c
! a43a54709aa786e8a23b4abaff91a6b7  libgcc/config/libbid/bid128_to_int64.c
! d64fefa6400631e2900d5a8156ab3317  libgcc/config/libbid/bid128_to_int8.c
! fb4d6908eea34b2ca4ec96ec6e2eaf5f  libgcc/config/libbid/bid128_to_uint16.c
! 2280e3bd2d70840fd6007975ea988ac0  libgcc/config/libbid/bid128_to_uint32.c
! 316cb984655f3726744b60908e3bb21a  libgcc/config/libbid/bid128_to_uint64.c
! 23ef78371ddb0dcf2719d2c2c2fff8ce  libgcc/config/libbid/bid128_to_uint8.c
! c4ea4068df9aa021848fc6cbe7a35943  libgcc/config/libbid/bid32_to_bid128.c
! 150e1341ffb6eca1b8d4b81a9a2c8b9c  libgcc/config/libbid/bid32_to_bid64.c
! d98c67b11161ef000c5fc45bcd0e9536  libgcc/config/libbid/bid64_add.c
! 3a4f3d482c8306610d1f352a0b920272  libgcc/config/libbid/bid64_compare.c
! ff412e2dba6364adc2fcb9bdaef00d9f  libgcc/config/libbid/bid64_div.c
! f7ef08619904ef0638fb2550a83841d5  libgcc/config/libbid/bid64_fma.c
! 16968ea535b67d5e37a03f917945e78e  libgcc/config/libbid/bid64_logb.c
! 271b3c6c46549612364755ed12dea3f3  libgcc/config/libbid/bid64_minmax.c
! 03a45dabf901760c578ff3c60b5f75b0  libgcc/config/libbid/bid64_mul.c
! ef795ff9dd13ff098f2e4bc3ca4ad477  libgcc/config/libbid/bid64_next.c
! 0cd7859862a42de7221127d72a963581  libgcc/config/libbid/bid64_noncomp.c
! b0d7b43936bd546ae57ec7f6a66c26d3  libgcc/config/libbid/bid64_quantize.c
! 332fe5f782f338de4db2c351accf8492  libgcc/config/libbid/bid64_rem.c
! a4dacaad4ca5c68c8ebf3e2428bd1968  libgcc/config/libbid/bid64_round_integral.c
! 41472692c8a1e5138a6ae8f6c4a7b671  libgcc/config/libbid/bid64_scalb.c
! daa41f7c863f937b9ec573eef015ccf6  libgcc/config/libbid/bid64_sqrt.c
! 12d57cf6d4b15e598b1fe192f5476e1e  libgcc/config/libbid/bid64_string.c
! 4c068f2ba99f455be9cbc7588c885290  libgcc/config/libbid/bid64_to_bid128.c
! 24559e9d2938c12cc125fc9078063239  libgcc/config/libbid/bid64_to_int16.c
! 4b6036bafd24f10d31aceb9b7017dde4  libgcc/config/libbid/bid64_to_int32.c
! 5249155ea4ddb04a0a01b85b9ca112d0  libgcc/config/libbid/bid64_to_int64.c
! 3d927c60ca0b5e1d838fec0b9aece3d4  libgcc/config/libbid/bid64_to_int8.c
! fd638fafc4e0e5998145f6b5929f89fb  libgcc/config/libbid/bid64_to_uint16.c
! 9230d247028e2f18c89604cef0f50f49  libgcc/config/libbid/bid64_to_uint32.c
! 66bd4e7243fa061f38cacce45cbf5368  libgcc/config/libbid/bid64_to_uint64.c
! 9f941774b8d21553a03a3d5094067867  libgcc/config/libbid/bid64_to_uint8.c
! 3edab879ceac5c49502cc826771dd307  libgcc/config/libbid/bid_b2d.h
! 6abc39a8652566b043915056395b9bfb  libgcc/config/libbid/bid_binarydecimal.c
! d5151472c0e901f43078cb055eac91cc  libgcc/config/libbid/bid_conf.h
! 00003078fcf7f67c335cd7820a262021  libgcc/config/libbid/bid_convert_data.c
! 027796754f286ddf8184ddda1b6b4e3b  libgcc/config/libbid/bid_decimal_data.c
! 06dd373bb0f286305ac714c5f1572dad  libgcc/config/libbid/bid_decimal_globals.c
! 17f411ef193656da6a56e2624e2a70be  libgcc/config/libbid/bid_div_macros.h
! d461b9b304da1e5d85247a4f3fbafe10  libgcc/config/libbid/bid_dpd.c
! 2366a04419c5559021a57afe0374c236  libgcc/config/libbid/bid_flag_operations.c
! e243ed0cdeb830f48aac118d4c3fb054  libgcc/config/libbid/bid_from_int.c
! a658e97dbedd530bde79d7da3ac93dda  libgcc/config/libbid/bid_functions.h
! 3f8cc8f19768b64932ff239da835cd9e  libgcc/config/libbid/bid_gcc_intrinsics.h
! de4200991f30ddeae8184263ff59287a  libgcc/config/libbid/bid_inline_add.h
! a5b861634785c5e38d9531831542b354  libgcc/config/libbid/bid_internal.h
! db8c2d5cd6af2c36d7adeeb1d9ca8803  libgcc/config/libbid/bid_round.c
! ae5f956a504522be04511254608e5c16  libgcc/config/libbid/bid_sqrt_macros.h
! 3c9dd308fa97d5ecf167032f0767d605  libgcc/config/libgcc-glibc.ver
  a5b43383f528298ff2dc85061452e1e6  libgcc/config/libgcc-libsystem.ver
! 817952136b57484e1747bd501b08b4e4  libgcc/config/lm32/_ashlsi3.S
! e24874f6f802ddf4e8562695a7b5da2d  libgcc/config/lm32/_ashrsi3.S
! 6f3f19b45861618fc174047afeae3908  libgcc/config/lm32/_divsi3.c
! 7766749f9a29499db9872ed209685b39  libgcc/config/lm32/_lshrsi3.S
! 535380e482514b0cae7527dce38d141c  libgcc/config/lm32/_modsi3.c
! d50bac3085a7ba88c26871a2794c7802  libgcc/config/lm32/_mulsi3.c
! b21129eab182e776b160a65d027e0863  libgcc/config/lm32/_udivmodsi4.c
! f43841dc04caa09d29b47f01c943a5a7  libgcc/config/lm32/_udivsi3.c
! e4fe275288e01dc974d5d0f216a26b1a  libgcc/config/lm32/_umodsi3.c
! 405956e9956dd96a234f6e56c09ed36e  libgcc/config/lm32/crti.S
! 492b0282b3f172d7d9fe42361ec9c6d4  libgcc/config/lm32/crtn.S
! fc5304f992ebf240b0222cc712b2d70f  libgcc/config/lm32/libgcc_lm32.h
  813910d184e034c80a518f2ba3c4e1a5  libgcc/config/lm32/sfp-machine.h
  331dd855f33aa7a09d25fc757cedf2cf  libgcc/config/lm32/t-elf
  d6d4b530a7539331e6e553f26928de4e  libgcc/config/lm32/t-lm32
  df59d7c87fc0d2f761461ac4ba7ec440  libgcc/config/lm32/t-uclinux
! 45cff0d7791087ca20cf0bfa0feea2d0  libgcc/config/loongarch/crtfastmath.c
! 1b806083f2e3bda87fbed38c7561206c  libgcc/config/loongarch/linux-unwind.h
! cbf1de8d8b1c1ef36d122b35b0e1ecc9  libgcc/config/loongarch/sfp-machine.h
  6cd85196ae9a504ff938607f275f760e  libgcc/config/loongarch/t-crtstuff
  5b9c4ae086bab2fa0eb006a6223eb270  libgcc/config/loongarch/t-loongarch
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/loongarch/t-loongarch64
  011afb1a0cc0aae0a4c465e6aefcafda  libgcc/config/loongarch/t-softfp-tf
! db4b6d0353e7763cbd2e0c70067fdfee  libgcc/config/m32c/lib1funcs.S
! 546decb21d0478041a1bd0c32dea4b99  libgcc/config/m32c/lib2funcs.c
  9f1fc3a0f039273ded002a6713908bd3  libgcc/config/m32c/t-m32c
! 2daddd914f276eec13a1d49bc2212d76  libgcc/config/m32c/trapv.c
! 45300f7df1b3ae44bbcbf69019e7eda9  libgcc/config/m32r/initfini.c
  e252c161ec4eb09d3b5a62d902b3d00f  libgcc/config/m32r/t-m32r
! 603ddce85a633c1ea995ae97ef04c00c  libgcc/config/m68k/crti.S
! eaaa9bf10e2cf1db0b3462a173d8135f  libgcc/config/m68k/crtn.S
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
! d85560e8c84b12a34bba36b7299f6fc5  libgcc/config/m68k/lb1sf68.S
! faa1fde6c5de1f1e0072c644cb594761  libgcc/config/m68k/linux-atomic.c
! 6d1e44e15292b29170a093119998136b  libgcc/config/m68k/linux-unwind.h
  2e4fd3e401c9159da9f32d5965b5afa1  libgcc/config/m68k/t-floatlib
  de217c41c217f4341d6d546afa9a79f2  libgcc/config/m68k/t-linux
  4e281c631e54b8912258f84196fec9e6  libgcc/config/m68k/t-slibgcc-elf-ver
! 6ec44dd6c45e891cbf18cff20f8fc7af  libgcc/config/mcore/crti.S
! 8af3d8db98e71ecc83b23451db182b28  libgcc/config/mcore/crtn.S
! ba8fc62b95329bb4bedabe439ed72303  libgcc/config/mcore/lib1funcs.S
  ef74fd63202d842bfe7120864186128c  libgcc/config/mcore/t-mcore
! 69eab15e0d65fcee78782d16afc90938  libgcc/config/microblaze/crti.S
! e1290ff93e0b2d26b826091254a4446a  libgcc/config/microblaze/crtn.S
! 2e02189c460e5f74a75874b4bb111e71  libgcc/config/microblaze/divsi3.S
! 0eb45097ad1bbbf91a1d7316a5563775  libgcc/config/microblaze/divsi3_table.c
! e6adf5e459423713399e5ffdffa0b597  libgcc/config/microblaze/moddi3.S
! 2c2d84f97e279171d2a514564dd13070  libgcc/config/microblaze/modsi3.S
! cb172aa4883384cfacc43f75b251e1e3  libgcc/config/microblaze/muldi3_hard.S
! 163facc45008423a3e57bb08a4f13ec3  libgcc/config/microblaze/mulsi3.S
! 3f22b62eee8b186f2c745f932d4f547d  libgcc/config/microblaze/stack_overflow_exit.S
  702cd2045c2c31581ecd56232d96d5f5  libgcc/config/microblaze/t-microblaze
! a1bc526d302895859d32c478a5602cf7  libgcc/config/microblaze/udivsi3.S
! ca8c3894e38e10fc7738c78bcd03b694  libgcc/config/microblaze/umodsi3.S
! db80b09dd7fb12b38a731a2dedffd870  libgcc/config/mips/crtfastmath.c
! c5e7062db4d1338e464aebf0344ed4a4  libgcc/config/mips/crti.S
! f5620f68606f24b21ad842d42d311ece  libgcc/config/mips/crtn.S
  f69b446f168701e4fad37a3fa7bf7a2a  libgcc/config/mips/gnustack.h
! bbb150d31efb18007988341c9c9d3c61  libgcc/config/mips/gthr-mipssde.h
! 1ef28d805ec923da8d4dc7ebb7ee3307  libgcc/config/mips/lib2funcs.c
! 76a66b1d3c5a0b3c647546c8c5f12585  libgcc/config/mips/libgcc-mips16.ver
! c8be3e0993c3a7ff52727a87e73c65b5  libgcc/config/mips/linux-unwind.h
! 5095fe9cb1092b4d86220e696d952192  libgcc/config/mips/mips16.S
! b37ee16797a1ee1e41d88f2b949a903d  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
  33f2c96b7ccbbb062839ec1e7329e6bb  libgcc/config/mips/t-elf
  501be8fccb18eca4dbd8b404d7b4c9fa  libgcc/config/mips/t-mips
! 0cfc6bdb624544dc0516bf55abbb8efc  libgcc/config/mips/t-mips16
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/mips/t-mips64
  6403b3d85f0ed6751174f1088d074f62  libgcc/config/mips/t-sdemtk
  011afb1a0cc0aae0a4c465e6aefcafda  libgcc/config/mips/t-softfp-tf
  532a76f856d3755b780a19a91bdd1654  libgcc/config/mips/t-vr
! 7f3118bde5402efe4a1e9f8e91fcc1a1  libgcc/config/mips/vr4120-div.S
! c5504c3c42776261045e29ccc7e10de1  libgcc/config/mmix/crti.S
! fc2ecd25b4fcb9687edeaa23d7403e3a  libgcc/config/mmix/crtn.S
  41478efd1b19b3c7c9426d8e843f3b39  libgcc/config/mmix/t-mmix
! 3445ac23ba249799713563de33627ca4  libgcc/config/moxie/crti.S
! dad3bb83cff173fea639acd447c586e7  libgcc/config/moxie/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/moxie/sfp-machine.h
  9b7000ea173c226d39e6a6dc116fdaf1  libgcc/config/msp430/cmpd.c
! c2725d345143541c0f9e3e859d124861  libgcc/config/msp430/cmpsi2.S
! ad4506d4c0d1530c8d2e1b485306d366  libgcc/config/msp430/epilogue.S
  072a56de362c5e857510ca8401f30aa8  libgcc/config/msp430/floathidf.c
  07461b1abb61437fbc73d74801f6300b  libgcc/config/msp430/floathisf.c
  88792e557553f37a296bd8127a0dfc88  libgcc/config/msp430/floatunhidf.c
  754bbc793bc0e81b0a2168df9f47e1f3  libgcc/config/msp430/floatunhisf.c
! 4e296513505390246ddae4177b7761fa  libgcc/config/msp430/lib2bitcountHI.c
! 0673e04660c6f277c26c96ba75a3a3e2  libgcc/config/msp430/lib2divHI.c
! 6d5b794d5e3c55a03e07c954a5a9dddf  libgcc/config/msp430/lib2divQI.c
! d3646eeba8d076dcbbc52cde60e28fa6  libgcc/config/msp430/lib2divSI.c
! 079eab40210183400db334ba223893a9  libgcc/config/msp430/lib2hw_mul.S
! c0190cc0bbdf921fd7ed88ce75abfeae  libgcc/config/msp430/lib2mul.c
! d66d95d0d48946c0944df00943ea7d3c  libgcc/config/msp430/lib2shift.c
  585dda5cb05623da62e4f4aad3bdbbb6  libgcc/config/msp430/mpy.c
! 6bddd7ee6169224d8778fd8a13fa18bf  libgcc/config/msp430/msp430-divmod.h
! 7691258dfa14a2a06aa84effc77a3b15  libgcc/config/msp430/msp430-mul.h
! 55092e2fdc7cbbcf329822160d04d7b4  libgcc/config/msp430/slli.S
! 81ef6816294b19d5714d38fb3665984e  libgcc/config/msp430/srai.S
! b22da23441571c3b160cd1143b78210e  libgcc/config/msp430/srli.S
! af0d76b35494f40e4a6be3f06cc261ae  libgcc/config/msp430/t-msp430
! 296520abce359c884c80b532e9ff25c7  libgcc/config/nds32/crtzero.S
! 4170d0ba360345435ea741ecc9ca6aad  libgcc/config/nds32/initfini.c
! 62d88fb9e03fadd1e3b5eb80d2a20d80  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
! a9d30495ba3d81c0d0bc15ff9873732d  libgcc/config/nds32/isr-library/excp_isr.S
! 722af0af7e7445be05636d2e052b3ea2  libgcc/config/nds32/isr-library/excp_isr_4b.S
! 3724e878a97ed3c81f2f95758053d6aa  libgcc/config/nds32/isr-library/intr_isr.S
! 4251683c839594d9aaa81d4bf594a9c5  libgcc/config/nds32/isr-library/intr_isr_4b.S
! 40b7765bad6ab5dda37f791eebf72ab6  libgcc/config/nds32/isr-library/jmptbl_vid00.S
! e92a0053e6a3d8f773d03024ee7a8e06  libgcc/config/nds32/isr-library/jmptbl_vid01.S
! 767d1fb46b52366a6751fb970a403df3  libgcc/config/nds32/isr-library/jmptbl_vid02.S
! 59abd86886cdd7169c29811879bda815  libgcc/config/nds32/isr-library/jmptbl_vid03.S
! 916b7fd46286e9759fd3101d55015bfb  libgcc/config/nds32/isr-library/jmptbl_vid04.S
! 33a36071f857b1ff9c2d18c4a1807f03  libgcc/config/nds32/isr-library/jmptbl_vid05.S
! 996a0d7c7807640e273fe3317a792772  libgcc/config/nds32/isr-library/jmptbl_vid06.S
! ee5a7c82384dfa791135ef7292e252a3  libgcc/config/nds32/isr-library/jmptbl_vid07.S
! 79bca5272e37f1e8c3060470908d4bd9  libgcc/config/nds32/isr-library/jmptbl_vid08.S
! e4f2a132a5aa1bfb8e37b7f9c47496c5  libgcc/config/nds32/isr-library/jmptbl_vid09.S
! 7e95651f3a8e5a5f5d2084fb140390c2  libgcc/config/nds32/isr-library/jmptbl_vid10.S
! 8c02dcd10f6eb01822107994da7b08b8  libgcc/config/nds32/isr-library/jmptbl_vid11.S
! 7bd41028a589feb83add1900e07929d6  libgcc/config/nds32/isr-library/jmptbl_vid12.S
! d44bf3e26e244e4c61d4bd07f40b1bc4  libgcc/config/nds32/isr-library/jmptbl_vid13.S
! d6f5746d66c67ac390cc4e9db41ecae3  libgcc/config/nds32/isr-library/jmptbl_vid14.S
! 424fb59dbc389d1ac2d529eb8d9aa813  libgcc/config/nds32/isr-library/jmptbl_vid15.S
! 07b9bcb5b9c1d6622fdaae561c1aea15  libgcc/config/nds32/isr-library/jmptbl_vid16.S
! ad28f6f50ba1812db1c049864c189721  libgcc/config/nds32/isr-library/jmptbl_vid17.S
! 69a02770ce89cf4889cc8b1a84701ba1  libgcc/config/nds32/isr-library/jmptbl_vid18.S
! b22469e3451f84184377f28a69f4c0ab  libgcc/config/nds32/isr-library/jmptbl_vid19.S
! de430c4daa424909fa54aa81a4783d4e  libgcc/config/nds32/isr-library/jmptbl_vid20.S
! 4a9790f17b03a7fcd96b3a68c1ec951f  libgcc/config/nds32/isr-library/jmptbl_vid21.S
! b7313899bb353c33c3b7497b329bc35f  libgcc/config/nds32/isr-library/jmptbl_vid22.S
! 6306804b6ad9cacbaae78409bf4c7166  libgcc/config/nds32/isr-library/jmptbl_vid23.S
! dd75403df319452a200093fbb55697fb  libgcc/config/nds32/isr-library/jmptbl_vid24.S
! 446ee2b8b68f6bdedd416c95157474c4  libgcc/config/nds32/isr-library/jmptbl_vid25.S
! 74cb0e18e9ce6701e0fb8c2cb142d18b  libgcc/config/nds32/isr-library/jmptbl_vid26.S
! 34c12c2512465300e2779c1e926a67bf  libgcc/config/nds32/isr-library/jmptbl_vid27.S
! 4d1c667953bdd30065973381b662766d  libgcc/config/nds32/isr-library/jmptbl_vid28.S
! d0d788ab6de7ddef4ae0e8e1819e9dbd  libgcc/config/nds32/isr-library/jmptbl_vid29.S
! 7102471890872cf27d7a135cf32a0f04  libgcc/config/nds32/isr-library/jmptbl_vid30.S
! 37642eac195c0ba614c14ddc1adc5855  libgcc/config/nds32/isr-library/jmptbl_vid31.S
! 865f4901f32832bbe1a4bc471903fe12  libgcc/config/nds32/isr-library/jmptbl_vid32.S
! b61a88988940404da42d024261f32823  libgcc/config/nds32/isr-library/jmptbl_vid33.S
! 0531860510f26df8c2d92e3a6aedbb3e  libgcc/config/nds32/isr-library/jmptbl_vid34.S
! 295710fc4d91bf2aabf84785ddcd5f3c  libgcc/config/nds32/isr-library/jmptbl_vid35.S
! eb3bb66c6daf9649f15334a10b81ccf3  libgcc/config/nds32/isr-library/jmptbl_vid36.S
! 1f89132a51db37e9e79acf07ed4c964c  libgcc/config/nds32/isr-library/jmptbl_vid37.S
! 4101e5842fb07fa83b8997168a68b36b  libgcc/config/nds32/isr-library/jmptbl_vid38.S
! 55c985800205d9bcdd3a7d17b9966964  libgcc/config/nds32/isr-library/jmptbl_vid39.S
! 3f1a6e1968f826349d33824af91703d7  libgcc/config/nds32/isr-library/jmptbl_vid40.S
! 55399efbc426b2f577c42f812433bfb2  libgcc/config/nds32/isr-library/jmptbl_vid41.S
! e67cb7646c4dd178a41b854f0820b0fe  libgcc/config/nds32/isr-library/jmptbl_vid42.S
! 39b67054d8596736b84479ac08cfc7c3  libgcc/config/nds32/isr-library/jmptbl_vid43.S
! c55b8e55ff26896b069e5313f2a19211  libgcc/config/nds32/isr-library/jmptbl_vid44.S
! ca94cbf03b42a161a11aa215086a231b  libgcc/config/nds32/isr-library/jmptbl_vid45.S
! 6dd2dc22d800897a373b993d050c42ae  libgcc/config/nds32/isr-library/jmptbl_vid46.S
! 2c4e583dc092efb247827f5c555c5e39  libgcc/config/nds32/isr-library/jmptbl_vid47.S
! 03f07b2ce3f5cd4af863f35630997c59  libgcc/config/nds32/isr-library/jmptbl_vid48.S
! 632453320abf363cc7ca4f9dcf987e13  libgcc/config/nds32/isr-library/jmptbl_vid49.S
! 589399c0da362818951cb181176ad10e  libgcc/config/nds32/isr-library/jmptbl_vid50.S
! d84f324e8457b2ff038855ae64cfc4bb  libgcc/config/nds32/isr-library/jmptbl_vid51.S
! ba808f1a6c055c2acd4ac84bd3f8dacd  libgcc/config/nds32/isr-library/jmptbl_vid52.S
! 6c2657ddf6e2c1c65b4b93f1e0221a36  libgcc/config/nds32/isr-library/jmptbl_vid53.S
! 6a701ee17ef24775b809bedf7b354c1d  libgcc/config/nds32/isr-library/jmptbl_vid54.S
! 63cd1656f4084f41ec315ecd696eae78  libgcc/config/nds32/isr-library/jmptbl_vid55.S
! 019cee3bc772edc585bc80129981b93c  libgcc/config/nds32/isr-library/jmptbl_vid56.S
! ab2339c13f227d68f592f90c3006e77a  libgcc/config/nds32/isr-library/jmptbl_vid57.S
! 9d6cfc360c29a842eab1f91dde8334b2  libgcc/config/nds32/isr-library/jmptbl_vid58.S
! ce3521cb94bc6464c611aee1348f41b5  libgcc/config/nds32/isr-library/jmptbl_vid59.S
! 28f1711f1ccf970bf46b12b0291c2f38  libgcc/config/nds32/isr-library/jmptbl_vid60.S
! 17aa8f3d54b7b87cfb8616c5ccfc6e83  libgcc/config/nds32/isr-library/jmptbl_vid61.S
! 0529cfd2f38805af6a8ee9ac5f29d675  libgcc/config/nds32/isr-library/jmptbl_vid62.S
! b46253ef1632df477167589748264816  libgcc/config/nds32/isr-library/jmptbl_vid63.S
! c31fbcb7f0531b977d8e68696d8c7366  libgcc/config/nds32/isr-library/jmptbl_vid64.S
! 3512542eb01eaa249a48aecbf2e2bbe0  libgcc/config/nds32/isr-library/jmptbl_vid65.S
! 7633d74fffe079da269301aed315ebc3  libgcc/config/nds32/isr-library/jmptbl_vid66.S
! 1e5d2df7d8e9290ea6de3f8c0ec8920f  libgcc/config/nds32/isr-library/jmptbl_vid67.S
! 57a164383568ba32751cd9e870c0a927  libgcc/config/nds32/isr-library/jmptbl_vid68.S
! b942624ca790ae28cd6d36fe516da6b9  libgcc/config/nds32/isr-library/jmptbl_vid69.S
! 0b6a14869e4c086306888ce445bf19f3  libgcc/config/nds32/isr-library/jmptbl_vid70.S
! 990b6da9c2adf738a8ace29f400d7a06  libgcc/config/nds32/isr-library/jmptbl_vid71.S
! 34f4ab45178c087dda2090030c1ae09f  libgcc/config/nds32/isr-library/jmptbl_vid72.S
! 08fa60711e9af620a9d3e834cafd6e10  libgcc/config/nds32/isr-library/nmih.S
! 8bd2066f4f59eb81c536ab7f6871033e  libgcc/config/nds32/isr-library/reset.S
! f4117cd68836edab15f6f3e3e46fe6a0  libgcc/config/nds32/isr-library/reset_4b.S
! 3a1fe9fabd5a1cec76d5b2b9df7af4f1  libgcc/config/nds32/isr-library/restore_all.inc
! 0e303f240015c5a84c68f3cce958e1ca  libgcc/config/nds32/isr-library/restore_fpu_regs.inc
! 177eb98b945931e9e427305db7427d23  libgcc/config/nds32/isr-library/restore_fpu_regs_00.inc
! 099cbb9b9f563b480f456832cc53b719  libgcc/config/nds32/isr-library/restore_fpu_regs_01.inc
! 15135a36f6e81b59c0c24133cdd52c8e  libgcc/config/nds32/isr-library/restore_fpu_regs_02.inc
! 4e05d7214c25760e9e8551a5398f488b  libgcc/config/nds32/isr-library/restore_fpu_regs_03.inc
! 4be6ef8eacb1bacce901888635e4500a  libgcc/config/nds32/isr-library/restore_mac_regs.inc
! 4d6a9b6eb002551258a5c5a4cecadea6  libgcc/config/nds32/isr-library/restore_partial.inc
! 4425b9af9a05750e11e55766c3508c17  libgcc/config/nds32/isr-library/restore_usr_regs.inc
! 8fd8e18077fae58ff5e173f503cdc3e2  libgcc/config/nds32/isr-library/save_all.inc
! daef8143458537e2a88620f422227817  libgcc/config/nds32/isr-library/save_fpu_regs.inc
! 34b66b2dd2a678a8d7af1609c939da0d  libgcc/config/nds32/isr-library/save_fpu_regs_00.inc
! 7e395b76e12f6b284b710a9f0aa7b233  libgcc/config/nds32/isr-library/save_fpu_regs_01.inc
! 2758b5365b369b38903269d0bdb123da  libgcc/config/nds32/isr-library/save_fpu_regs_02.inc
! 682227024806100942e931e0a5625ca1  libgcc/config/nds32/isr-library/save_fpu_regs_03.inc
! 9f962076e38e2bc3c047e20d320ae30d  libgcc/config/nds32/isr-library/save_mac_regs.inc
! 884fd00208e6c1222d67b9d49c035934  libgcc/config/nds32/isr-library/save_partial.inc
! 9c1704c7b3c59c217a4629b9200e7893  libgcc/config/nds32/isr-library/save_usr_regs.inc
! 99bac74011d6e5b73fa6a1551009dd35  libgcc/config/nds32/isr-library/vec_vid00.S
! b800cf507ce6a7383323b3b5c7895831  libgcc/config/nds32/isr-library/vec_vid00_4b.S
! 7d8707468de7bc93bca4b0231abab7f5  libgcc/config/nds32/isr-library/vec_vid01.S
! f834721a6dc0494bc56f095429b27b53  libgcc/config/nds32/isr-library/vec_vid01_4b.S
! 9892d13385e8dc9306ed1f84e26e387b  libgcc/config/nds32/isr-library/vec_vid02.S
! 6b9a2531f5b1f1d8d6e7ac69717862f1  libgcc/config/nds32/isr-library/vec_vid02_4b.S
! 694be5a1ae21ff62f53bcd1b9e26c0f3  libgcc/config/nds32/isr-library/vec_vid03.S
! b7a7fc9854e9ac9dbea116b8f4facd0a  libgcc/config/nds32/isr-library/vec_vid03_4b.S
! 884c5601fa019787fef5dde512f25cad  libgcc/config/nds32/isr-library/vec_vid04.S
! a101da53b6f6962ad5306a5452b463ea  libgcc/config/nds32/isr-library/vec_vid04_4b.S
! b5ba8d7b9c4cd65ab0a8d4343442b1bd  libgcc/config/nds32/isr-library/vec_vid05.S
! 99b6ef04296739ad0de586c850a3db3a  libgcc/config/nds32/isr-library/vec_vid05_4b.S
! 1b055450c3a08083377ed69713bc259f  libgcc/config/nds32/isr-library/vec_vid06.S
! d9d1a02d84a05698e874d2f1eaa24ce6  libgcc/config/nds32/isr-library/vec_vid06_4b.S
! ccc495541159f37d4134ddcfd134ee80  libgcc/config/nds32/isr-library/vec_vid07.S
! 5482686a79a7d038b3c33e3b488ed45b  libgcc/config/nds32/isr-library/vec_vid07_4b.S
! 08f6518839b646f906886c31f13a7fc3  libgcc/config/nds32/isr-library/vec_vid08.S
! 4e6acdd1f3ded4bac4a89442a65c6dc4  libgcc/config/nds32/isr-library/vec_vid08_4b.S
! 1699b2e8721633cde53d6d2025d30726  libgcc/config/nds32/isr-library/vec_vid09.S
! d8fee436aa63052723620af181aed92a  libgcc/config/nds32/isr-library/vec_vid09_4b.S
! a85aaa2c10e59afa368ffc7f0f533a72  libgcc/config/nds32/isr-library/vec_vid10.S
! 55edf1f7b3b5cfa641d0a4334f6e4b5f  libgcc/config/nds32/isr-library/vec_vid10_4b.S
! 541dbf60c7b42c7c453a70afb2dbd7b5  libgcc/config/nds32/isr-library/vec_vid11.S
! 0c30cc7a5df232312fe0d059f9a7d631  libgcc/config/nds32/isr-library/vec_vid11_4b.S
! 99ae89aa6178d404786db98c0f1c7e99  libgcc/config/nds32/isr-library/vec_vid12.S
! 9584b21023323077494702f7d51cec36  libgcc/config/nds32/isr-library/vec_vid12_4b.S
! 1b65ad89744874b6bb9bbb679800bd89  libgcc/config/nds32/isr-library/vec_vid13.S
! 2669849d75fea5cbe28cb89cfa96ad10  libgcc/config/nds32/isr-library/vec_vid13_4b.S
! fb46206a233d4550afabd9cb74243e6b  libgcc/config/nds32/isr-library/vec_vid14.S
! 550e46de35c81c59812759a3abb5ddd1  libgcc/config/nds32/isr-library/vec_vid14_4b.S
! f5705dddca0f1e11c8941bdb81a53381  libgcc/config/nds32/isr-library/vec_vid15.S
! 882937bb5ef3de0541e38e31da066e52  libgcc/config/nds32/isr-library/vec_vid15_4b.S
! c9a79afa918284104ad0cfb89c413253  libgcc/config/nds32/isr-library/vec_vid16.S
! 1a08af0daa097614b4952ceb6b52cdf3  libgcc/config/nds32/isr-library/vec_vid16_4b.S
! 067cbe092b7e304a0f8882629c6ab251  libgcc/config/nds32/isr-library/vec_vid17.S
! dae2a98e930974fb3e2df8af10dc8e67  libgcc/config/nds32/isr-library/vec_vid17_4b.S
! cb9d710d76acffd69ba53118693df9a3  libgcc/config/nds32/isr-library/vec_vid18.S
! ce8a7d9a5906718fd809e98ed20ac734  libgcc/config/nds32/isr-library/vec_vid18_4b.S
! b2af67ec8699959093abdedeea5ab34e  libgcc/config/nds32/isr-library/vec_vid19.S
! 1701f4fdcc6ad4c3d1318c5c305321a8  libgcc/config/nds32/isr-library/vec_vid19_4b.S
! 28dcd82bfc3c3a38223de16973d0a6a5  libgcc/config/nds32/isr-library/vec_vid20.S
! afc30ddc13ad34a72f56103ad1759397  libgcc/config/nds32/isr-library/vec_vid20_4b.S
! c67069fef473702bdf9133837eb0c999  libgcc/config/nds32/isr-library/vec_vid21.S
! 3a24573896b6a37f4ad37167ef2ef2c5  libgcc/config/nds32/isr-library/vec_vid21_4b.S
! 38a5a71ad90a7257d399b2400bfc4409  libgcc/config/nds32/isr-library/vec_vid22.S
! c34e5052d7a877beef73321e6670ed53  libgcc/config/nds32/isr-library/vec_vid22_4b.S
! 4546d796b100ef91bedc14afe1a055c0  libgcc/config/nds32/isr-library/vec_vid23.S
! 62a130bda1d650b120df1c60532340c8  libgcc/config/nds32/isr-library/vec_vid23_4b.S
! 82c3eb687971f0c3e59c8f687ac2b23f  libgcc/config/nds32/isr-library/vec_vid24.S
! 1130cd5c6857eb4a98016cfc3decd420  libgcc/config/nds32/isr-library/vec_vid24_4b.S
! db2e4ae9f442f6bdc36eef6c8e651a1d  libgcc/config/nds32/isr-library/vec_vid25.S
! e3c71aabb10a4f3b5a2a8f4145066d8c  libgcc/config/nds32/isr-library/vec_vid25_4b.S
! 25adeb9eee6c7bacea5669f77e665860  libgcc/config/nds32/isr-library/vec_vid26.S
! 2adccc733b4c2bd0e36634737cd4729e  libgcc/config/nds32/isr-library/vec_vid26_4b.S
! dcf794e7f7d7544c31fae7d0004b75df  libgcc/config/nds32/isr-library/vec_vid27.S
! a03a56530dc58fb6eec66f20a74e1248  libgcc/config/nds32/isr-library/vec_vid27_4b.S
! b875b0cc2d114374221686d6591babb6  libgcc/config/nds32/isr-library/vec_vid28.S
! 477a94ad413eb454a3c0a0e87d2d2c72  libgcc/config/nds32/isr-library/vec_vid28_4b.S
! 8ab43c3bdd239593a46746cc9391b973  libgcc/config/nds32/isr-library/vec_vid29.S
! 400d13af4a0fc5ccdfdba59a6f2bc8d3  libgcc/config/nds32/isr-library/vec_vid29_4b.S
! 1b69431f5066d687f29af207901c2371  libgcc/config/nds32/isr-library/vec_vid30.S
! 2166dc321c7798b36d1741cb564a2590  libgcc/config/nds32/isr-library/vec_vid30_4b.S
! 0c4fc30a99c2e679f5978df11392eeaf  libgcc/config/nds32/isr-library/vec_vid31.S
! 6670dfadab03ab33ba33ae4f7c374c65  libgcc/config/nds32/isr-library/vec_vid31_4b.S
! 74663225912e85ce2303890c39052c6d  libgcc/config/nds32/isr-library/vec_vid32.S
! 66a485c553048b37c0e5717860cf76d6  libgcc/config/nds32/isr-library/vec_vid32_4b.S
! cb250621a36d1685a42aeef374ac655f  libgcc/config/nds32/isr-library/vec_vid33.S
! c3322f2a51a5605f0a37e28cc2d4f578  libgcc/config/nds32/isr-library/vec_vid33_4b.S
! 3f3a8ff7d0c41e2e37f2496b72d6448b  libgcc/config/nds32/isr-library/vec_vid34.S
! 6464e660e6108bf8d517e0c632acb33e  libgcc/config/nds32/isr-library/vec_vid34_4b.S
! c35eb9496330ede7ae14a1df5f7be824  libgcc/config/nds32/isr-library/vec_vid35.S
! 383f87da2b996d214b52630d8821bf28  libgcc/config/nds32/isr-library/vec_vid35_4b.S
! 8c113a0a71c559e56e3542457b6d63ee  libgcc/config/nds32/isr-library/vec_vid36.S
! e3cf4c5cf005138df1c8ec7baa0a93ae  libgcc/config/nds32/isr-library/vec_vid36_4b.S
! ae44851ea1e3335907472c4ffc36a200  libgcc/config/nds32/isr-library/vec_vid37.S
! d71f30d88433a2e5f8a210bc698ca7ba  libgcc/config/nds32/isr-library/vec_vid37_4b.S
! 1fa20103ca1772f29105fc7b6598f1a2  libgcc/config/nds32/isr-library/vec_vid38.S
! 388763b18fc2f3d210ba0ba729cd5666  libgcc/config/nds32/isr-library/vec_vid38_4b.S
! 1f17da99dac1b3ba43a4e872d075bde1  libgcc/config/nds32/isr-library/vec_vid39.S
! 67c2fb469e3d91bc3f1b998ed0d7b6d3  libgcc/config/nds32/isr-library/vec_vid39_4b.S
! dc974999a4125f6ddc1c200290e6e320  libgcc/config/nds32/isr-library/vec_vid40.S
! 54b3a849ddc1b91ddf8058c6c6ddaa69  libgcc/config/nds32/isr-library/vec_vid40_4b.S
! ca365981d13b18f385b082cf1e1b9ec4  libgcc/config/nds32/isr-library/vec_vid41.S
! e07819a1849e47b8c349d5c670ed81b0  libgcc/config/nds32/isr-library/vec_vid41_4b.S
! d94d4ceed51671617991eabae6d535bb  libgcc/config/nds32/isr-library/vec_vid42.S
! 38163878441dc225ee5d4223222dcd59  libgcc/config/nds32/isr-library/vec_vid42_4b.S
! 4f93ca372a26eb05ae1d94290be92f23  libgcc/config/nds32/isr-library/vec_vid43.S
! 6bba42a508c2441d8539c2ff00c36294  libgcc/config/nds32/isr-library/vec_vid43_4b.S
! 4c0211682566f9e5200348b98a2e6cff  libgcc/config/nds32/isr-library/vec_vid44.S
! dea4cae45dc98ca87076ddfa5cde4108  libgcc/config/nds32/isr-library/vec_vid44_4b.S
! 6bce06b99b44cb19e759f1656542f723  libgcc/config/nds32/isr-library/vec_vid45.S
! 413ed6b9ed403edf1751b4f04a3a72b7  libgcc/config/nds32/isr-library/vec_vid45_4b.S
! 193b4e476d4c02f99eb51d4a48ca67a2  libgcc/config/nds32/isr-library/vec_vid46.S
! d59ea7043b6271c3686739e590e06ea1  libgcc/config/nds32/isr-library/vec_vid46_4b.S
! 07ea1a6e8741b4e01b3d0160ed55a665  libgcc/config/nds32/isr-library/vec_vid47.S
! 9db9b416cbd727db17267b7746be5068  libgcc/config/nds32/isr-library/vec_vid47_4b.S
! 403ce63bd1ce3a6c4259f54f51c239e9  libgcc/config/nds32/isr-library/vec_vid48.S
! 7989556b1bfd46446643890953b919ad  libgcc/config/nds32/isr-library/vec_vid48_4b.S
! 53cc4cea4d7909d17349502ad49d4b07  libgcc/config/nds32/isr-library/vec_vid49.S
! 6a7265b1fd5538d62473f3851f45af5d  libgcc/config/nds32/isr-library/vec_vid49_4b.S
! 71cdf72f5f359bcdf6f1c5e490a3a914  libgcc/config/nds32/isr-library/vec_vid50.S
! cf382eb37fe71f78175d1df15af001d5  libgcc/config/nds32/isr-library/vec_vid50_4b.S
! 0197da907a0148e48a4c52caddb5c073  libgcc/config/nds32/isr-library/vec_vid51.S
! 9ca5d8a72cd3b3d6d0eb31daacbe9d91  libgcc/config/nds32/isr-library/vec_vid51_4b.S
! f055be0da7dfd42529e2955d53a14ae3  libgcc/config/nds32/isr-library/vec_vid52.S
! 4a2a7d783ad50ec35a0b29cfc2d5f734  libgcc/config/nds32/isr-library/vec_vid52_4b.S
! 2d3cf2f94166ef31d15de876a362d3ab  libgcc/config/nds32/isr-library/vec_vid53.S
! 6bb2a9fc3d1a573b9032466ebc5dc42b  libgcc/config/nds32/isr-library/vec_vid53_4b.S
! 39525f317ee1f4891a2396de8028bdec  libgcc/config/nds32/isr-library/vec_vid54.S
! fcdf8d82f5301bb33e7a7b311f0adef9  libgcc/config/nds32/isr-library/vec_vid54_4b.S
! 48596f5df5c7e10e94e251cdc2d90fea  libgcc/config/nds32/isr-library/vec_vid55.S
! bfd31a4e1459a097ec8307feac6d51b6  libgcc/config/nds32/isr-library/vec_vid55_4b.S
! e71460d591d45dbd465036479d035c0f  libgcc/config/nds32/isr-library/vec_vid56.S
! 931ac07139db3c5d02a9ca16c73381a5  libgcc/config/nds32/isr-library/vec_vid56_4b.S
! 2a9bd9af73e0818054e379d2c6b71ca9  libgcc/config/nds32/isr-library/vec_vid57.S
! 2a36a8508cbf7b4b120292dd5eb18ebe  libgcc/config/nds32/isr-library/vec_vid57_4b.S
! 24a2e78bc9ea173b94824b246934f80c  libgcc/config/nds32/isr-library/vec_vid58.S
! 654b7f58df2082eb55b5a78bf67aefdf  libgcc/config/nds32/isr-library/vec_vid58_4b.S
! ce1c2a7dd6fb5416422d2ba7f582a0d0  libgcc/config/nds32/isr-library/vec_vid59.S
! 3545c6fa7bb36774046592da501511eb  libgcc/config/nds32/isr-library/vec_vid59_4b.S
! c1a9b454197160e3d79adba35335caf8  libgcc/config/nds32/isr-library/vec_vid60.S
! d94186dea9391cd01fa222a5a0ed152a  libgcc/config/nds32/isr-library/vec_vid60_4b.S
! 42c96a087c1d3d5cd3542d9c408fa6d4  libgcc/config/nds32/isr-library/vec_vid61.S
! 2bd3ab15b97e06d5bd26aa9971d9f72a  libgcc/config/nds32/isr-library/vec_vid61_4b.S
! 667d7fc792391ddfad32c4de9e84237c  libgcc/config/nds32/isr-library/vec_vid62.S
! fb894d0b1dcb088769709af8c06905c3  libgcc/config/nds32/isr-library/vec_vid62_4b.S
! bda99061dd723dbafdf361aa66dda2bb  libgcc/config/nds32/isr-library/vec_vid63.S
! 86e979bd28ac7cf9e66a96d4a9ac9d4d  libgcc/config/nds32/isr-library/vec_vid63_4b.S
! 9e2550f1cee6299c52bba4b85aa2e3ba  libgcc/config/nds32/isr-library/vec_vid64.S
! 2f8ecee73e964c1e244f2d347c3547d5  libgcc/config/nds32/isr-library/vec_vid64_4b.S
! a7cee8f6c9eb6cd4d9997d8b9f87bbd4  libgcc/config/nds32/isr-library/vec_vid65.S
! 18cd50e774e2db4ae50b1c68dd77e6d3  libgcc/config/nds32/isr-library/vec_vid65_4b.S
! 42511fdc5cad629fef9579eb39a30598  libgcc/config/nds32/isr-library/vec_vid66.S
! c75bd6cf685a8ee587bc661707e704cc  libgcc/config/nds32/isr-library/vec_vid66_4b.S
! 9072ab4631ab9ac80fdbabb707d4b34f  libgcc/config/nds32/isr-library/vec_vid67.S
! 01bf1e1dbe0cb502754415958e82e1b4  libgcc/config/nds32/isr-library/vec_vid67_4b.S
! 38d57bed741272aabae2a0013a29f989  libgcc/config/nds32/isr-library/vec_vid68.S
! c406f8d89884ebf3b460d5f556f79303  libgcc/config/nds32/isr-library/vec_vid68_4b.S
! 8057a10b48734f6bb0dc384a26ad430c  libgcc/config/nds32/isr-library/vec_vid69.S
! 81bd0dbfbe46dbb20aea6783265ffd81  libgcc/config/nds32/isr-library/vec_vid69_4b.S
! 7a77132a509b73a46d01f5d509393865  libgcc/config/nds32/isr-library/vec_vid70.S
! 668fd881046176b47e775c64a7fa2c3b  libgcc/config/nds32/isr-library/vec_vid70_4b.S
! db25b51e03b1903f864c3b5d6624eaa3  libgcc/config/nds32/isr-library/vec_vid71.S
! 3a32af7055cef2da795247b985753c80  libgcc/config/nds32/isr-library/vec_vid71_4b.S
! 8d7e347665e1dc7f9c464a7e5f443662  libgcc/config/nds32/isr-library/vec_vid72.S
! 4f2ec6c89c3d792c0358c19adef0cea3  libgcc/config/nds32/isr-library/vec_vid72_4b.S
! 384a1fa5a0b402678c7cf9fa701add87  libgcc/config/nds32/isr-library/wrh.S
! 2d733f65d130b3a6dd6c6b0ee30e04ce  libgcc/config/nds32/lib1asmsrc-mculib.S
! 438ad4099fc96c4b309d1051916f0632  libgcc/config/nds32/lib1asmsrc-newlib.S
! 66ca8dcf30907c99c06a97437adde915  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
! 84622d1518c726d6724fa00f0e68161a  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! 5f7ad529b8b246958412d37a044c1900  libgcc/config/nds32/linux-atomic.c
! 578e4b863eca6553719a6389cf26cc8b  libgcc/config/nds32/linux-unwind.h
! 505940e0a6c0ba59eb45627466ecc3cd  libgcc/config/nds32/sfp-machine.h
! 0962eba811da0b3dc6ae3397122b98e0  libgcc/config/nds32/t-nds32
! dc0f6634fdfc74b0879394ab2d63422c  libgcc/config/nds32/t-nds32-glibc
! 9e34c921ed164b893390ed025e1cfe01  libgcc/config/nds32/t-nds32-isr
! fd4c95595b9049b7ab95e518a1f61c3e  libgcc/config/nds32/t-nds32-mculib
! 4e1d5dd816b5abc0b99a3b11ed3c3793  libgcc/config/nds32/t-nds32-newlib
! 9e85924475333790571ad7a0cfec7432  libgcc/config/nios2/crti.S
! f892bc2595ff7c2bba0c9307c2770f96  libgcc/config/nios2/crtn.S
! 9e130c91728f5182f4876d4eac4533c5  libgcc/config/nios2/elf-lib.h
! b8757b31c7c7d41d05bebbf87a744aa6  libgcc/config/nios2/lib2-divmod-hi.c
! cf9b2be2d560c7c9787f6e925a6814a7  libgcc/config/nios2/lib2-divmod.c
! 1c32821455841c55d9688ef01c8a058e  libgcc/config/nios2/lib2-divtable.c
! c0c38a47d5dbe70191ec7df55bb99833  libgcc/config/nios2/lib2-mul.c
! 347e5841af8d46ddfef67fef0741e0f3  libgcc/config/nios2/lib2-nios2.h
! f85924ed156e8bac31fb014f2b9581ba  libgcc/config/nios2/linux-atomic.c
! 682c7b101c27d6ccf31a2dd47cac06b0  libgcc/config/nios2/linux-unwind.h
! 815c94e9e5a37d23ba032282c1dd83ab  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
! a572dd65872e2bbaffac9f672732e90f  libgcc/config/nios2/tramp.c
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  b70010a8e3a6734ae04ba484992563c5  libgcc/config/no-unwind.h
! 9aa78e1032299d25d9ae392490ea64e8  libgcc/config/nvptx/atomic.c
! 5ad92bfa8168068f288ca2d3ff1b6a3c  libgcc/config/nvptx/crt0.c
! 4966c0c59f2802351ee31435409eb28b  libgcc/config/nvptx/mgomp.c
! a750175c59166c61628803983455c86a  libgcc/config/nvptx/nvptx-malloc.h
! f4325c0af3770b874b5e81db6d21285e  libgcc/config/nvptx/reduction.c
  a2f0aaba262ea7568fe97072e2e4e19f  libgcc/config/nvptx/t-nvptx
! 2f03013f15f34d83b76f8a8d99ef6aab  libgcc/config/or1k/lib1funcs.S
! d3cf68ddf23f5c235f1f2d22e1b1db00  libgcc/config/or1k/linux-unwind.h
! ef77ed64db7b4b9f49ee2c897fe592a9  libgcc/config/or1k/sfp-machine.h
  dc51b5d6e7fd35fa1156670d20c6464d  libgcc/config/or1k/t-crtstuff
! 934e2227548b58f221acfa68bbbbb747  libgcc/config/or1k/t-or1k
! 3f6f4741c6729723f95a9c4e455a3eff  libgcc/config/pa/fptr.c
! 2022e7bb360e55d6e11203f66a3125b3  libgcc/config/pa/gthr-dce.h
! 098ecd3af287a571ff968a291d31e40f  libgcc/config/pa/hpux-unwind.h
! 17d503a63a8799df340c579f764318ce  libgcc/config/pa/lib2funcs.S
! 3e9d9825570372c6e12178b132839c15  libgcc/config/pa/linux-atomic.c
! 32332c3e0f7fd7ae8e5260d192d0713e  libgcc/config/pa/linux-unwind.h
! 21d330b345a11aef708cdaeb1dd9ad7a  libgcc/config/pa/milli64.S
! d9b594bffa97757e315b763704349bbf  libgcc/config/pa/pa64-hpux-lib.h
! d242841b0be7af80e89d024231e52792  libgcc/config/pa/quadlib.c
! d33015aa7c3d01a4093f5ee649d7e257  libgcc/config/pa/sfp-exceptions.c
! 1386c934940ea45aa6556d9b79b988aa  libgcc/config/pa/sfp-machine.h
! 3a5ad241a9349589e8ebe5e0ab4b0283  libgcc/config/pa/stublib.c
  be1d29d3044d55ee3e60d3e74a9e98fe  libgcc/config/pa/t-dimode
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
  3e293a3e5a4bcd16fb9846c60502af9b  libgcc/config/pa/t-linux
  8b6e1d4848a895dd9e8e030f638c68bc  libgcc/config/pa/t-linux64
! 3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-netbsd
! 3a7526d23d38b3c358e838a89cf3ad94  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
  6b7616abedce76aaa866d73b08ea3a07  libgcc/config/pa/t-slibgcc-dwarf-ver
! a68e867d82ee25c5391202ac89bae365  libgcc/config/pa/t-slibgcc-hpux
  463a4121da251ad8e53013810a31914a  libgcc/config/pa/t-slibgcc-sjlj-ver
  ce4b287e3a507cf1707205fb5c6adfe3  libgcc/config/pa/t-softfp-sfdftf
  964be72d0cacc353ffda1509b63add90  libgcc/config/pa/t-stublib
  a2a61a2b6f3c9d3e3bd8cae0b0eb845b  libgcc/config/pdp11/t-pdp11
! 6afbc568efe83b476f646e7bef5b92d2  libgcc/config/pru/asri.c
! 505d6299161789c780bb622df16a44af  libgcc/config/pru/eqd.c
! 13330cdfbb399b7740d297d4304b1339  libgcc/config/pru/eqf.c
! 764e7aa679b1a7aac975f16627fbd9df  libgcc/config/pru/ged.c
! b4a8646976d6c3a1e94eedb8c0ff89a4  libgcc/config/pru/gef.c
! d702eda746575681f3012367815dfe93  libgcc/config/pru/gtd.c
! 65ac40dead20dca4b5f2759e02e8bf1e  libgcc/config/pru/gtf.c
! d65b19868de05dfca0a8609ca0ecd4b4  libgcc/config/pru/led.c
! 1359e8ffbeb474e912d743d097ba93f6  libgcc/config/pru/lef.c
! eb585d1d2b6787cec12e4fc45ea0ebba  libgcc/config/pru/lib2bitcountHI.c
! 3816530fb9ce916d1bb28dc9db7f5890  libgcc/config/pru/lib2divHI.c
! cbc33a035d8fa84bff765c17167aa02f  libgcc/config/pru/lib2divQI.c
! 88b35ff67cf132aeaf2ad16b0c73e36b  libgcc/config/pru/lib2divSI.c
! aeb060ec3d4b04e7c435e5ccf99e3ce1  libgcc/config/pru/libgcc-eabi.ver
! 5f9f4b6025133c16fba338d8b3f9544f  libgcc/config/pru/ltd.c
! 7d5ace9f7ad3ebf038bde8e4d22e6f8f  libgcc/config/pru/ltf.c
! 19875b4795055ed0130b22d8dca9cc8f  libgcc/config/pru/mpyll.S
! 8d7639ffa8360cb3a5c4bb73320d7478  libgcc/config/pru/pru-abi.h
! 805b63a320e9ea780cef3ac75383d7bf  libgcc/config/pru/pru-asm.h
! 63b1f81c43109bb4c39fd934560c9a85  libgcc/config/pru/pru-divmod.h
! 7452d5d7346731fc1626ba84109e3876  libgcc/config/pru/sfp-machine.h
! eab1e83d49cc06a4057fdeca016d6342  libgcc/config/pru/t-pru
! 74d61776f036a9754887c79f2adbe51d  libgcc/config/riscv/atomic.c
  d61879f5ed9372bd52bba7f21bb79dbc  libgcc/config/riscv/crti.S
  0485c6e233af87295472bb7a9f2767e0  libgcc/config/riscv/crtn.S
! aabdfb47c5aaf2010a2df101b57785e8  libgcc/config/riscv/div.S
! 9a43ee8758841c387dfb928d6a61dd05  libgcc/config/riscv/linux-unwind.h
! 4fb1711a269e925a0f5403ed8ee46379  libgcc/config/riscv/muldi3.S
! 67df5a16ddcae6efc751c32f9718809d  libgcc/config/riscv/multi3.c
! b0c45c1aa3b0b1b655324caa5b391fe9  libgcc/config/riscv/riscv-asm.h
! 5573105f1b62079e5d9c0e3fce52e4e6  libgcc/config/riscv/save-restore.S
! 244a8148f2af30d9ce418b282fb627b0  libgcc/config/riscv/sfp-machine.h
  c42f201dbf0dcdfa26d4e52583c32f53  libgcc/config/riscv/t-elf
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf32
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf64
! 1f7860fd81aff60052a039b06a850a67  libgcc/config/riscv/t-softfp32
! e96d0afc94e59431832f4cff3a794bd8  libgcc/config/riscv/t-softfp64
! a4d2bb4c38a5882304d8fe41b626a6fe  libgcc/config/rl78/adddi3.S
! d93546f0bbcc68e577a45bf4c1bd8deb  libgcc/config/rl78/anddi3.S
! 6fec750b254a2c08a12386274c4e67be  libgcc/config/rl78/bit-count.S
! f6696e942ddd57f4c80a482c2846d855  libgcc/config/rl78/cmpsi2.S
! 4dea5df09cbc13232feb379d6d1a28f6  libgcc/config/rl78/divmodhi.S
! 264e59c79265593fe53a096b919baa52  libgcc/config/rl78/divmodqi.S
! b530dc2e86a7deaf4541bf23dd9bc860  libgcc/config/rl78/divmodsi.S
  63e9b57af30110b61c3221ba465e2c5b  libgcc/config/rl78/fpbit-sf.S
  9099dff71d89768f77ed3ef7908d4265  libgcc/config/rl78/fpmath-sf.S
! 45d519bb03b87c3e0018d65b70b583c4  libgcc/config/rl78/lib2div.c
! dea1c308934fc0167e5b263d0dd84840  libgcc/config/rl78/lib2mul.c
! 6154cf4a0495824d405582ac662e0563  libgcc/config/rl78/lib2shift.c
! 4e52940630471aba92d817a4cb890030  libgcc/config/rl78/lshrsi3.S
! 18c767e27298455179a24d4479816ac9  libgcc/config/rl78/mulsi3.S
! 49667d0af4ad34835783c18e14b0c344  libgcc/config/rl78/rl78-divmod.h
! 7691258dfa14a2a06aa84effc77a3b15  libgcc/config/rl78/rl78-mul.h
! 805b310ad058cb303b25247a0278c401  libgcc/config/rl78/signbit.S
! a2cee0b961059afde2d3c49d5914b0e7  libgcc/config/rl78/smaxdi3.S
! 9748006459a4be0538ed40cfecf29084  libgcc/config/rl78/smindi3.S
! fc05e9040c8953033cbb3da864c61b8e  libgcc/config/rl78/subdi3.S
! e375fc3cbbc950fab1ce66ce4425e594  libgcc/config/rl78/t-rl78
! 6093aae18114af64b4a9cc3373045b7f  libgcc/config/rl78/trampoline.S
! c9ecf832f1c456790d5392a8ec008354  libgcc/config/rl78/umaxdi3.S
! bacf82e465e9a30fffe79c290f771269  libgcc/config/rl78/umindi3.S
  760912f22e59adbfe0317ee3df1b4849  libgcc/config/rl78/vregs.h
! 6081965dec7b4e8d1e4000a2a5ee4615  libgcc/config/rs6000/_dd_to_kf.c
! d85b7fcbe7a1f7f51e507b1818922f90  libgcc/config/rs6000/_divkc3.c
! d9a4a1164b94ef1eaedb4e4a4a189f89  libgcc/config/rs6000/_kf_to_dd.c
! 35240812d9d28fbeb29d323e3098bb36  libgcc/config/rs6000/_kf_to_sd.c
! 33150a9fb048d6ef6a812144fea11bba  libgcc/config/rs6000/_kf_to_td.c
! dfbd191f9cb249ebd0928b9e9f722fd6  libgcc/config/rs6000/_mulkc3.c
! fabbb3d714b91665156ad43bddc0ed19  libgcc/config/rs6000/_powikf2.c
! f2f16f9d9b3f04f36389a3e9ca428027  libgcc/config/rs6000/_sd_to_kf.c
! a57394ee35852aab2595eebc60ded9c1  libgcc/config/rs6000/_td_to_kf.c
! cd9d0d80c885d0a42bec78786547b05f  libgcc/config/rs6000/aix-unwind.h
  737841f917469789a5f925e6f08da1de  libgcc/config/rs6000/aixinitfini.c
! c5acc069fe69642abd5ed0fe9789b99e  libgcc/config/rs6000/atexit.c
! 75dd48c81c0cb4c7a97dad8116b3d4a8  libgcc/config/rs6000/crtcxa.c
! 68eebc9aa60a661c370ab520454c08da  libgcc/config/rs6000/crtdbase.S
! ca42109be008af6b858e9f6b901bb4c4  libgcc/config/rs6000/crtresfpr.S
! b348c6f15a996208246b02ba825f92e9  libgcc/config/rs6000/crtresgpr.S
! 50f72722327cad3781d3dfa3e2bf1c7c  libgcc/config/rs6000/crtrestvr.S
! 544dcb6c9efcd274052e2f38e583d14c  libgcc/config/rs6000/crtresxfpr.S
! 99c0ec086d7dbdf60831c7934da323d0  libgcc/config/rs6000/crtresxgpr.S
! 393db6af573ba615211e9e75bfce8d91  libgcc/config/rs6000/crtsavevr.S
! b9e068f03be2dbc7f9ccd33d7316f126  libgcc/config/rs6000/crtsavfpr.S
! 09e1ac483c8b6ff5e6b1beedb730d8b4  libgcc/config/rs6000/crtsavgpr.S
! 2a5f51b038758536e15d2ac8bbb73534  libgcc/config/rs6000/cxa_atexit.c
! 3ed20a1aeca01a03a3717da9ef7206b0  libgcc/config/rs6000/cxa_finalize.c
! 33a67c7013605c2c014a2912bfb7c864  libgcc/config/rs6000/darwin-asm.h
! 50f79d685421ca170486402028cccf9b  libgcc/config/rs6000/darwin-crt2.c
! 5d91a4f6f11e24e3ba5d4d09881c3089  libgcc/config/rs6000/darwin-fallback.c
! 32ba1f4a20ec57d3bdd01fe4dc25a4b5  libgcc/config/rs6000/darwin-fpsave.S
! 6ca0fe3df0f92b2fd66d74b894ea7443  libgcc/config/rs6000/darwin-gpsave.S
! e4784d8ceabc6adf2d8c33cacaab4a61  libgcc/config/rs6000/darwin-tramp.S
! 2941684b2faadeee97a6242b3cb6873f  libgcc/config/rs6000/darwin-unwind.h
! d0067727586ec50ac090b006e85c22ae  libgcc/config/rs6000/darwin-vecsave.S
! d57dc39d30a294924865990fed7e341c  libgcc/config/rs6000/darwin-world.S
! 2b9456c6cc7ff4ed587c2c273b44a0c3  libgcc/config/rs6000/e500crtres32gpr.S
! d2808b01c435359c9d247c7237bb2075  libgcc/config/rs6000/e500crtres64gpr.S
! 0991e1e95bad95f0825b98b8841efd9d  libgcc/config/rs6000/e500crtres64gprctr.S
! ea0ef09f18c0106bd4e249a4b748c560  libgcc/config/rs6000/e500crtrest32gpr.S
! ecddd20ac8f42df74191c3fa49dcdabe  libgcc/config/rs6000/e500crtrest64gpr.S
! fac274e84c46602b65a817e554141aa3  libgcc/config/rs6000/e500crtresx32gpr.S
! 94c1666cacf424498a44bdd59b6c668b  libgcc/config/rs6000/e500crtresx64gpr.S
! f0ba8ec652d01ed03cb20f66e18b5b46  libgcc/config/rs6000/e500crtsav32gpr.S
! 554faa9899f42031125484ae34ac0dab  libgcc/config/rs6000/e500crtsav64gpr.S
! db84a72852471ca78a97a94f5d68c4ba  libgcc/config/rs6000/e500crtsav64gprctr.S
! ed1b9550bc99affd2c4fe6f23a6e9fd9  libgcc/config/rs6000/e500crtsavg32gpr.S
! b8a34dc427ea433a03b8d43c266515f9  libgcc/config/rs6000/e500crtsavg64gpr.S
! 3d07244bff4150886b663e90412544df  libgcc/config/rs6000/e500crtsavg64gprctr.S
! 1efda17413c1424b74d7058e043c4c3d  libgcc/config/rs6000/eabi-ci.S
! bb239a155f84798e53dfbfc116d75d07  libgcc/config/rs6000/eabi-cn.S
! 279cd6b3c3282b466716a7e872cb398a  libgcc/config/rs6000/eabi.S
! c084326414591cbcb3d9c71af77ac7e0  libgcc/config/rs6000/exit.h
! e2140e6dffedac319aa1533785d1849f  libgcc/config/rs6000/extendkftf2-sw.c
! 788bf91bf61da130fb060fc79a687f84  libgcc/config/rs6000/fixkfti-sw.c
! 4d132ce456956b39dd8c488082b4547b  libgcc/config/rs6000/fixunskfti-sw.c
! 8e905cb054974c22ef2386a41aaebbed  libgcc/config/rs6000/float128-hw.c
! 562817f97650e041598d1a14286a8cd7  libgcc/config/rs6000/float128-ifunc.c
! 9e2efed535800a24dd8bba94ddebbd8f  libgcc/config/rs6000/float128-p10.c
  82156c171c8648f2863486505efc417a  libgcc/config/rs6000/float128-sed
  81d8bfdd9028f651e74357a59a1352c5  libgcc/config/rs6000/float128-sed-hw
! 4a0629f9d99d0ffc369702e52649795d  libgcc/config/rs6000/floattikf-sw.c
! 60a7fba690d1b51f3b153092503f285b  libgcc/config/rs6000/floatuntikf-sw.c
! 5f2bd1d083d6fe614c7ef1044564ad26  libgcc/config/rs6000/freebsd-unwind.h
! 0822c174de5f2495b53f1cadfd5236bf  libgcc/config/rs6000/gthr-aix.h
! 4a3f2ff8c67af07a1210b145a9fcc919  libgcc/config/rs6000/ibm-ldouble-format
! 309bf4aa8e9ba9d6c1a882d623388395  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
! 931f920e94caa6364804e8e9bbcc7dc3  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
! c5392ee4ac15a16b8d344af72af9d398  libgcc/config/rs6000/linux-unwind.h
! bed5d13ffe7cbcacf13e112e0b97de39  libgcc/config/rs6000/morestack.S
! 1b5e6f8b646cdd42695e27bf47b8240c  libgcc/config/rs6000/on_exit.c
! ef5f555272a97762f8c82ca5ded1309b  libgcc/config/rs6000/quad-float128.h
! 9b49c454051308bc097b8e93d7d57a92  libgcc/config/rs6000/sfp-exceptions.c
  41c3896f925900fa6b81c0215a60075f  libgcc/config/rs6000/sfp-machine.h
! 6669eab9501dd234b183d2ae10916945  libgcc/config/rs6000/sol-ci.S
! 4ff53a9503f56f5d317b07553260d3a7  libgcc/config/rs6000/sol-cn.S
  3fa6bf8673b3a7fa2278aeb2fe1824f4  libgcc/config/rs6000/t-aix-cxa
  0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
  b780b81d7bccdf7af090dbcd3e639dd1  libgcc/config/rs6000/t-darwin
  a8ea28c94f3264c3602a98b4728fed82  libgcc/config/rs6000/t-darwin-ehs
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-darwin64
! 0a9cfdafc9d4256f7917796fac8dd8a1  libgcc/config/rs6000/t-e500v1-fp
! e6e7a64e55d9d5f2efbd9cafd5bf111d  libgcc/config/rs6000/t-e500v2-fp
  d5fb4aa675487367c8320cc2a6b80485  libgcc/config/rs6000/t-float128
  ea267a427a7598d5070e338c8995363d  libgcc/config/rs6000/t-float128-hw
  0c3cb3b39ba2a4a769c8467eba008f64  libgcc/config/rs6000/t-float128-p10-hw
! 8e5c0e50d7a1bba1459ed238ee29a386  libgcc/config/rs6000/t-freebsd
  4976aac1da0b181cf133fe8ef7243000  libgcc/config/rs6000/t-freebsd64
  565e9d6288ad496063af26b57e5fa264  libgcc/config/rs6000/t-ibm-ldouble
  ecf2c7e327e9df4e94343352b59b9fd2  libgcc/config/rs6000/t-linux
--- 100984,101726 ----
  3cc3f3d4611f64c4d5fc225a72d8ccc4  libgcc/config/ia64/t-softfp
  7508d41329db54ddeccc7e86a6cafae5  libgcc/config/ia64/t-softfp-compat
  552ede49162d3a4fb9e1e113de11e8b5  libgcc/config/ia64/t-vms
! 612bb7e6b5874ae841c30605155b8f4e  libgcc/config/ia64/tf-signs.c
! 7a4a3d6c580fef1a79031fde00b2afbe  libgcc/config/ia64/unwind-ia64.c
! 5f25866680330a31e05e8c6c195887fb  libgcc/config/ia64/unwind-ia64.h
! b3c219e3fe7be0926b9c45521b07ca2a  libgcc/config/ia64/vms-crtinit.S
! d528fa6fb472c8cbd6b9df08a8d0a244  libgcc/config/ia64/vms-unwind.h
! f998607b97eeae6d2a3d1e10128c7cb1  libgcc/config/iq2000/lib2funcs.c
  102f7dad8ad6b54434a1b8313d1e42c4  libgcc/config/iq2000/t-iq2000
! cde78a395b16fc6deab2d253d12e500a  libgcc/config/libbid/ChangeLog
! e354955f92ec07ad37a62cd940b9001b  libgcc/config/libbid/_addsub_dd.c
! b89183791201be7d372019b758b007bb  libgcc/config/libbid/_addsub_sd.c
! a4d88b5941b22be078d1fb782e621350  libgcc/config/libbid/_addsub_td.c
! e88ccf6694050540c60455747df00d04  libgcc/config/libbid/_dd_to_df.c
! cc91048fc43d85181ed1878b39a0360f  libgcc/config/libbid/_dd_to_di.c
! fc0607d426d6ad4dd2303bcafc64168d  libgcc/config/libbid/_dd_to_hf.c
! e1097d9772ce609294490674b475c20d  libgcc/config/libbid/_dd_to_sd.c
! 6d4763bd9877c81df04dfc19cf04dc8e  libgcc/config/libbid/_dd_to_sf.c
! 9015461fd6ccfea3dff719400d599dae  libgcc/config/libbid/_dd_to_si.c
! a50480bca35aec6c9170f1aa821f1008  libgcc/config/libbid/_dd_to_td.c
! 998fc8abd9126ec9d81564a0c84fad5d  libgcc/config/libbid/_dd_to_tf.c
! 688e957971268594d2b6a0200fee8395  libgcc/config/libbid/_dd_to_udi.c
! 789f4a6d8c849d3710c01ee08384b997  libgcc/config/libbid/_dd_to_usi.c
! 86637f75a69d1d987864e4a4162fcccb  libgcc/config/libbid/_dd_to_xf.c
! b42c42c3eca4c0a5216893fbe44dde65  libgcc/config/libbid/_df_to_dd.c
! 5f81fa45871b8a4274512951ace85db2  libgcc/config/libbid/_df_to_sd.c
! 8b51b50347d5b5a9b422c1244e1f265c  libgcc/config/libbid/_df_to_td.c
! d4fb712a5a526373f29939e66c3a7476  libgcc/config/libbid/_di_to_dd.c
! 84465d856bc872bf2f81542732721064  libgcc/config/libbid/_di_to_sd.c
! 98a48b1855dfa55fe27a942f72393d86  libgcc/config/libbid/_di_to_td.c
! 061594189a2328138282b4e6cf954892  libgcc/config/libbid/_div_dd.c
! 7835e225ed647d519a77fe74d6cf4ad3  libgcc/config/libbid/_div_sd.c
! dfe2a78ccd3caae619fd1014ddeecb8e  libgcc/config/libbid/_div_td.c
! 50075b7feab531de432f565815b00439  libgcc/config/libbid/_eq_dd.c
! 004dedb4a7b7082368665b78131caa06  libgcc/config/libbid/_eq_sd.c
! 9d2e9fa1807ec079cd866f6fd63a135f  libgcc/config/libbid/_eq_td.c
! 2585fe312b541c97bdb2bbede6ab6a14  libgcc/config/libbid/_ge_dd.c
! b8ffbfcfb9ce57f96f64a7ba92ad090b  libgcc/config/libbid/_ge_sd.c
! dc6e412246160d88c44cb8fc9fb3437b  libgcc/config/libbid/_ge_td.c
! 20f71feec742ca97b0c766196fb77f95  libgcc/config/libbid/_gt_dd.c
! eb2fb6f71d291b748360a6cbb453055d  libgcc/config/libbid/_gt_sd.c
! af9633e8851e63df852f36d8189aa3ce  libgcc/config/libbid/_gt_td.c
! 5a6a31640c7459aa378172fcada03a8e  libgcc/config/libbid/_hf_to_dd.c
! 67ea34878991c183faa54371850f5bf8  libgcc/config/libbid/_hf_to_sd.c
! 82a6f8a819c6567ac0df35a1bd5e3b0a  libgcc/config/libbid/_hf_to_td.c
! 59388bf97a238e3655978f23b534094d  libgcc/config/libbid/_isinfd128.c
! 2e82238b9e19ed29852881a06292be08  libgcc/config/libbid/_isinfd32.c
! 139610c393deae3b473b8f4deb630c89  libgcc/config/libbid/_isinfd64.c
! 5974d8750b7de89038cde2b8779a68b5  libgcc/config/libbid/_le_dd.c
! aff0844ea090baa3e242b4ba5f46f727  libgcc/config/libbid/_le_sd.c
! 63bf2d6713f53f1fcf8d990cba699b24  libgcc/config/libbid/_le_td.c
! 15997eb6361797fac8a253385ecf7be5  libgcc/config/libbid/_lt_dd.c
! 97d01d204e10405144a4d8e1d3c9b3f1  libgcc/config/libbid/_lt_sd.c
! 348812951f2d66375aad00c5dbf624f8  libgcc/config/libbid/_lt_td.c
! a460efbaf5146933ba2629f5cbf20430  libgcc/config/libbid/_mul_dd.c
! 50af44a2bd01475b0c4db041c2b60349  libgcc/config/libbid/_mul_sd.c
! f4353425e1393eea74514bee8a15ca08  libgcc/config/libbid/_mul_td.c
! fab9b1183f10b27b54d1afc54a7d5cbb  libgcc/config/libbid/_ne_dd.c
! a7f01f1998dc68e33cec240757d46933  libgcc/config/libbid/_ne_sd.c
! dab31304493f9cd03058734d52d1cd99  libgcc/config/libbid/_ne_td.c
! 57834b98102b87ae0d235726ec13dca8  libgcc/config/libbid/_sd_to_dd.c
! fedb3bef21fb5eabf583c5980dc4b860  libgcc/config/libbid/_sd_to_df.c
! 6701b80f32e9685b6c4af7b0a2c51f08  libgcc/config/libbid/_sd_to_di.c
! 75a7c2ef815de046f10deb16401d5e0d  libgcc/config/libbid/_sd_to_hf.c
! a6af49717ae242f388eca3e3aedb491a  libgcc/config/libbid/_sd_to_sf.c
! 9025787901726be1393813e00eec4deb  libgcc/config/libbid/_sd_to_si.c
! 8553259c3697b6baf14288b6cf44c0ce  libgcc/config/libbid/_sd_to_td.c
! 9c6bf115728bf8b0e4748205505cc528  libgcc/config/libbid/_sd_to_tf.c
! 4b12a1cf33f9c5604ba0cb5029950237  libgcc/config/libbid/_sd_to_udi.c
! 56e2fe501cb4c28a20064674f0e6b094  libgcc/config/libbid/_sd_to_usi.c
! e2f34ca8bf254ecf40c5c706cfe9afa9  libgcc/config/libbid/_sd_to_xf.c
! b4842888ccafc86d41a4a2e8e54f15c8  libgcc/config/libbid/_sf_to_dd.c
! 52a9efb9740c87b0dbd10dd3dcf14afb  libgcc/config/libbid/_sf_to_sd.c
! ff0286e112a9e8aa9b6b6a9650752825  libgcc/config/libbid/_sf_to_td.c
! 67f0b484b55bc8a70142a35568750dcb  libgcc/config/libbid/_si_to_dd.c
! 97dc6b61247a10c3638de3e653c84d43  libgcc/config/libbid/_si_to_sd.c
! bbf2fd9c21d6e0541ef032209cb79763  libgcc/config/libbid/_si_to_td.c
! 6b619543b2d700f997c6353774c3232f  libgcc/config/libbid/_td_to_dd.c
! 2fa74dde1631658c668fe4bc576c9c26  libgcc/config/libbid/_td_to_df.c
! 3cabd379b0b25458f9fdb743696c7a92  libgcc/config/libbid/_td_to_di.c
! 9f76206a793c4b97883b7702bd417f6f  libgcc/config/libbid/_td_to_hf.c
! 5bce64b299f3dc7be860411475e23d38  libgcc/config/libbid/_td_to_sd.c
! 6c8e6f6d8eb545a49ff4d9bbae142251  libgcc/config/libbid/_td_to_sf.c
! e3012bcf5bd8983b24af818a574343e1  libgcc/config/libbid/_td_to_si.c
! dacf742f69e79f38f0cb8976cbcda7ea  libgcc/config/libbid/_td_to_tf.c
! 8b7f4aebfe4b958729cb767fc34ed2b2  libgcc/config/libbid/_td_to_udi.c
! db8eda1703ce8781b909ca706b160bf0  libgcc/config/libbid/_td_to_usi.c
! 5960919eff607b2db0c416a08b3182e3  libgcc/config/libbid/_td_to_xf.c
! 61ff6449ec9fd87d46af52cf9b1adaa6  libgcc/config/libbid/_tf_to_dd.c
! 169bb0e38e4d1edd65b5709a07343f93  libgcc/config/libbid/_tf_to_sd.c
! adabae286a6639541beff9b62eead162  libgcc/config/libbid/_tf_to_td.c
! 6967c39c40e27751608153d29a7ed13d  libgcc/config/libbid/_udi_to_dd.c
! 2fd3aa44591bbcbcc5ab89d1639f8bd5  libgcc/config/libbid/_udi_to_sd.c
! d9162a49de81d619451ed10b62f8b10e  libgcc/config/libbid/_udi_to_td.c
! c7c46fa07a59d6762a23c4db1d980d8e  libgcc/config/libbid/_unord_dd.c
! 4fb879732fe10fa7f20e896d08c8cdbb  libgcc/config/libbid/_unord_sd.c
! 3f8402ba0840bff80d303d89af2c067d  libgcc/config/libbid/_unord_td.c
! d3a0315e07c2ff4f718cb4d13c8171d7  libgcc/config/libbid/_usi_to_dd.c
! 03d2acbf951b9169da53ca9705d0c20a  libgcc/config/libbid/_usi_to_sd.c
! 7984b16d53be0e471cd2f26dae6070fe  libgcc/config/libbid/_usi_to_td.c
! 72e99cb02e7d31ff60e9d32bcd33d1f3  libgcc/config/libbid/_xf_to_dd.c
! b1c614ae55e8153382db3b48bd57669e  libgcc/config/libbid/_xf_to_sd.c
! b013d53ea4fb60a175165cac39c463de  libgcc/config/libbid/_xf_to_td.c
! 36f4e3ba4a56129b28dd9cc06f5d55b1  libgcc/config/libbid/bid128.c
! 7673abaeec7a2e325c1bbe8a16154d50  libgcc/config/libbid/bid128_2_str.h
! d7b0c085d07bd306bab61abc994ec329  libgcc/config/libbid/bid128_2_str_macros.h
! e62cf067aebe1dd3f8a6bce858b0314e  libgcc/config/libbid/bid128_2_str_tables.c
! e824611ba7ad556b5669517cc4bf14d4  libgcc/config/libbid/bid128_add.c
! 477783c26b5c50fef15ca71f3136950e  libgcc/config/libbid/bid128_compare.c
! 5d70fb61c76b0aa24c8a7f8d5382bc68  libgcc/config/libbid/bid128_div.c
! 061c9c1d3b533ed1fe98b50a51336371  libgcc/config/libbid/bid128_fma.c
! f079909bf243ec951945b445b4c47f3c  libgcc/config/libbid/bid128_logb.c
! 912d00116bf76030fe69bc93a473734d  libgcc/config/libbid/bid128_minmax.c
! 85a9681e5f92a6b597bd5a2537a547e5  libgcc/config/libbid/bid128_mul.c
! 864b51307bd3ea0bb01e88f915186538  libgcc/config/libbid/bid128_next.c
! 16ac9e73243df4e66a5bf7b0e10149bd  libgcc/config/libbid/bid128_noncomp.c
! 73bfae43987c7d03129ec3eb913232c1  libgcc/config/libbid/bid128_quantize.c
! 418b11c369edcfc6919e0fe98cbf1f1e  libgcc/config/libbid/bid128_rem.c
! 99ca778e54e3f3ae4fcd239292c5ea59  libgcc/config/libbid/bid128_round_integral.c
! e36526bbbaff7305959bafc4d60f4630  libgcc/config/libbid/bid128_scalb.c
! 9fdb7c152ab242b1120a2de26e28fde2  libgcc/config/libbid/bid128_sqrt.c
! f09b9025bc721eb8fd96d0dc25ad7e5a  libgcc/config/libbid/bid128_string.c
! 421c0e019df107f1d124fd48aeb301bc  libgcc/config/libbid/bid128_to_int16.c
! 7562e67671a8f77dc4512a5e8afab693  libgcc/config/libbid/bid128_to_int32.c
! 459f48a5aa50e7de16c23c59d6fb6c5a  libgcc/config/libbid/bid128_to_int64.c
! d74e0cd71b964cb144a21e56c004e79b  libgcc/config/libbid/bid128_to_int8.c
! 2dc1c7dc1333bf1fb188e47bcc83ed9a  libgcc/config/libbid/bid128_to_uint16.c
! f68e04bddd68aea3c0bb388cabdd2295  libgcc/config/libbid/bid128_to_uint32.c
! 9af9bed860b3b4ccc75926222d7730a8  libgcc/config/libbid/bid128_to_uint64.c
! 79dd5f5da0e49fa6ba81ddd570fb8399  libgcc/config/libbid/bid128_to_uint8.c
! 8183559db9b5eae116b8690349920fb2  libgcc/config/libbid/bid32_to_bid128.c
! a480eb79cad6191fb29418da4652a3e3  libgcc/config/libbid/bid32_to_bid64.c
! 870c1a913d6160d25855ecce8a59ddff  libgcc/config/libbid/bid64_add.c
! aca051d48bf8e527df77bf8d1eff00fc  libgcc/config/libbid/bid64_compare.c
! 4b90b21c061278bdf091d62bfdfea3b5  libgcc/config/libbid/bid64_div.c
! 0f61cc08242ef6e3c0d816bd2a8b081c  libgcc/config/libbid/bid64_fma.c
! fde6bffe7a0afac2f25e56c12b6c5e43  libgcc/config/libbid/bid64_logb.c
! 73f41580d16fcbef252b32843459463a  libgcc/config/libbid/bid64_minmax.c
! 3cfe86bedd1d12cedb0f3594b07f0e70  libgcc/config/libbid/bid64_mul.c
! a8e943594d54dd3c7e297a719492330b  libgcc/config/libbid/bid64_next.c
! ce9f7ed50600ac9b8be0fc8cde5856e8  libgcc/config/libbid/bid64_noncomp.c
! ad8c37f945b31686092c56cc6d5992dd  libgcc/config/libbid/bid64_quantize.c
! 7309dc6f3d1abf8459c4523b2b7de4d4  libgcc/config/libbid/bid64_rem.c
! 571236b8739c3a18eed428401d33904a  libgcc/config/libbid/bid64_round_integral.c
! d9f933b2fcad5b72a0aacaa97b2638b5  libgcc/config/libbid/bid64_scalb.c
! 74f0a489735d403e315ff76605db4bb4  libgcc/config/libbid/bid64_sqrt.c
! 9a4ab3ba6f060592765800df2df784db  libgcc/config/libbid/bid64_string.c
! 3987873f8975753562b5c3289f9240cb  libgcc/config/libbid/bid64_to_bid128.c
! b308fb6aeda4f5121fe0a2750e1c28d9  libgcc/config/libbid/bid64_to_int16.c
! a3d80ecfe909e2e29843d547f52e2f03  libgcc/config/libbid/bid64_to_int32.c
! 7f096cb5362b49a5de9c691f2d736efe  libgcc/config/libbid/bid64_to_int64.c
! 42b59aa43b85253b548eb60b029cc4bc  libgcc/config/libbid/bid64_to_int8.c
! 8d626c9669a4f809f8e3e778ef71ae1f  libgcc/config/libbid/bid64_to_uint16.c
! 8b216aac146bd44b0ff0329f064e8dc6  libgcc/config/libbid/bid64_to_uint32.c
! 5962c6a206e225f21046ea5688264b6c  libgcc/config/libbid/bid64_to_uint64.c
! 14ccc018f22d155168ea6c2e63403f0a  libgcc/config/libbid/bid64_to_uint8.c
! b8f86fc8cf1a2b2fa013ebeefe541c62  libgcc/config/libbid/bid_b2d.h
! d8038ace359d708083c53b9cadcadeac  libgcc/config/libbid/bid_binarydecimal.c
! ecca974aadea8b542d42cefe25d479fa  libgcc/config/libbid/bid_conf.h
! aa4da871b8d3534877024c3099685cc7  libgcc/config/libbid/bid_convert_data.c
! 91f6623c76f76acdc41c194c69ced2b6  libgcc/config/libbid/bid_decimal_data.c
! ba087d1f6e06b6a98e704c120d628e44  libgcc/config/libbid/bid_decimal_globals.c
! f464254c8d5ec5e5a8f8ea755c45b311  libgcc/config/libbid/bid_div_macros.h
! 62c8935c1a82ad3999fc6b01c3284fc1  libgcc/config/libbid/bid_dpd.c
! c76a71a3991c28b95b596b4346cc9e22  libgcc/config/libbid/bid_flag_operations.c
! 7e7dec64592f1b28a435cb3d2df06958  libgcc/config/libbid/bid_from_int.c
! e5c12346ada66c83fddcae57c32bd450  libgcc/config/libbid/bid_functions.h
! 5ca541c7a0a692f719ccf6784a8b0b0b  libgcc/config/libbid/bid_gcc_intrinsics.h
! 50734f467f1cbadebef7ac272c10bfc0  libgcc/config/libbid/bid_inline_add.h
! 698823ad5d3f7d1b2a48e56f10103c2b  libgcc/config/libbid/bid_internal.h
! 33ab8afacbd4eb2b25764f82ab706b58  libgcc/config/libbid/bid_round.c
! c7e6f490c055d242484ac4a28b7b82ed  libgcc/config/libbid/bid_sqrt_macros.h
! 5e88afef0f873954f367ecf862e49afc  libgcc/config/libgcc-glibc.ver
  a5b43383f528298ff2dc85061452e1e6  libgcc/config/libgcc-libsystem.ver
! 0b88d02ec2d6c9ecea69cdc925fb42ab  libgcc/config/lm32/_ashlsi3.S
! 5b466f77db0bb7a56002f39625efe197  libgcc/config/lm32/_ashrsi3.S
! b7dc0ec3fadfe8d977c976bd536e4114  libgcc/config/lm32/_divsi3.c
! 2e790315690d2f7855df18d8ad7430f3  libgcc/config/lm32/_lshrsi3.S
! 6de02ab0296e2d8fb87123d1961167ea  libgcc/config/lm32/_modsi3.c
! 51a81eb8ffec4dc365174863108b6322  libgcc/config/lm32/_mulsi3.c
! f70df1d1185e2be59d1a9252280180e9  libgcc/config/lm32/_udivmodsi4.c
! 93feb9de93d024aa7ecc5d3c800c0a84  libgcc/config/lm32/_udivsi3.c
! a17c400121496de814c390483670be7d  libgcc/config/lm32/_umodsi3.c
! 913cc06a665440a8fefd14cf4b5b4233  libgcc/config/lm32/crti.S
! 07f92e04307a198cf74b57f4a0845bb9  libgcc/config/lm32/crtn.S
! 5c1ca9adb6600c2d6e902a16def42200  libgcc/config/lm32/libgcc_lm32.h
  813910d184e034c80a518f2ba3c4e1a5  libgcc/config/lm32/sfp-machine.h
  331dd855f33aa7a09d25fc757cedf2cf  libgcc/config/lm32/t-elf
  d6d4b530a7539331e6e553f26928de4e  libgcc/config/lm32/t-lm32
  df59d7c87fc0d2f761461ac4ba7ec440  libgcc/config/lm32/t-uclinux
! 65970faf10c6a9ef18b050e76b6b2c1f  libgcc/config/loongarch/crtfastmath.c
! 0240b534c0dff6b8e5051deba9163ca7  libgcc/config/loongarch/linux-unwind.h
! 9e9bc846a23d47f9d808cc83c23c3c1f  libgcc/config/loongarch/sfp-machine.h
  6cd85196ae9a504ff938607f275f760e  libgcc/config/loongarch/t-crtstuff
  5b9c4ae086bab2fa0eb006a6223eb270  libgcc/config/loongarch/t-loongarch
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/loongarch/t-loongarch64
  011afb1a0cc0aae0a4c465e6aefcafda  libgcc/config/loongarch/t-softfp-tf
! 59ec0ea6fc5ae049ed69443e271d1ec2  libgcc/config/m32c/lib1funcs.S
! 5425a0b4fec973dfb4b80fc580cb08b7  libgcc/config/m32c/lib2funcs.c
  9f1fc3a0f039273ded002a6713908bd3  libgcc/config/m32c/t-m32c
! c67abc24ae3759b9125570ba983a452a  libgcc/config/m32c/trapv.c
! f5f747e7be00de427575c80462a4e495  libgcc/config/m32r/initfini.c
  e252c161ec4eb09d3b5a62d902b3d00f  libgcc/config/m32r/t-m32r
! df3c6fe8acc7d74ba91322b0037f5daf  libgcc/config/m68k/crti.S
! 3d9352c2713d87a27eb1ea4b153c01fa  libgcc/config/m68k/crtn.S
  c88d87907a20077db176016165428d4b  libgcc/config/m68k/fpgnulib.c
! fac2351f9af5c17f058ebcf90a2606aa  libgcc/config/m68k/lb1sf68.S
! e1561b108393d9c08713b8b0c41e8275  libgcc/config/m68k/linux-atomic.c
! 85ca23a53f34e44b4292ded58c4bcc70  libgcc/config/m68k/linux-unwind.h
  2e4fd3e401c9159da9f32d5965b5afa1  libgcc/config/m68k/t-floatlib
  de217c41c217f4341d6d546afa9a79f2  libgcc/config/m68k/t-linux
  4e281c631e54b8912258f84196fec9e6  libgcc/config/m68k/t-slibgcc-elf-ver
! d871332c71ca808d01f6560149e2e439  libgcc/config/mcore/crti.S
! ec9c355dd316399c0440063ee03749f1  libgcc/config/mcore/crtn.S
! be89f1699ba1e671fd0c01b4cd4932c2  libgcc/config/mcore/lib1funcs.S
  ef74fd63202d842bfe7120864186128c  libgcc/config/mcore/t-mcore
! 79b99108d8261c6ef0eaddc2b9ad0038  libgcc/config/microblaze/crti.S
! 3429802c171f171ee688560b197fc6a6  libgcc/config/microblaze/crtn.S
! 95b0eba21784e0691866983afe24f24b  libgcc/config/microblaze/divsi3.S
! 7d5047e0096aca2284c7c0cb2f26d7af  libgcc/config/microblaze/divsi3_table.c
! 71e659549ab0fdd46c3d6b7b86f9864f  libgcc/config/microblaze/moddi3.S
! ee992bef8058a28f58f14038c864462a  libgcc/config/microblaze/modsi3.S
! 7c7589572fc8ce75df0855a4a16071c8  libgcc/config/microblaze/muldi3_hard.S
! 48b713b6e9b7b2c59f9c4d820ba6d340  libgcc/config/microblaze/mulsi3.S
! 30d1484d321f8b51273d3fc1a21f34e4  libgcc/config/microblaze/stack_overflow_exit.S
  702cd2045c2c31581ecd56232d96d5f5  libgcc/config/microblaze/t-microblaze
! 4f75fc42643b276bbc6172eb8ff5b945  libgcc/config/microblaze/udivsi3.S
! a48f8f991b94eba1043cc9c7993b6322  libgcc/config/microblaze/umodsi3.S
! 59b40e1c42b9a3e1579634cad39eee9e  libgcc/config/mips/crtfastmath.c
! f03d719103d4078618f1e7fcd64a25c4  libgcc/config/mips/crti.S
! 513679c4c27411b5a984d42a3faf5194  libgcc/config/mips/crtn.S
  f69b446f168701e4fad37a3fa7bf7a2a  libgcc/config/mips/gnustack.h
! 404ab21f5c22cc55ecdaf9577e871f6a  libgcc/config/mips/gthr-mipssde.h
! 0d42a8a9a60644114240d947a6dcc90f  libgcc/config/mips/lib2funcs.c
! 485e024bbe421a89e63861f7b48c7287  libgcc/config/mips/libgcc-mips16.ver
! c26ae7569db955026ef1b97db4a82b5a  libgcc/config/mips/linux-unwind.h
! 51529690a087cf77a2ac08adee500012  libgcc/config/mips/mips16.S
! 196e18efacc51e9ae07277fa85e6d42b  libgcc/config/mips/sfp-machine.h
  5b43c15f4e003338742d215bcfdf5029  libgcc/config/mips/t-crtstuff
  33f2c96b7ccbbb062839ec1e7329e6bb  libgcc/config/mips/t-elf
  501be8fccb18eca4dbd8b404d7b4c9fa  libgcc/config/mips/t-mips
! efb10fd41a2261a7fff2e5ff2f035d19  libgcc/config/mips/t-mips16
  5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/mips/t-mips64
  6403b3d85f0ed6751174f1088d074f62  libgcc/config/mips/t-sdemtk
  011afb1a0cc0aae0a4c465e6aefcafda  libgcc/config/mips/t-softfp-tf
  532a76f856d3755b780a19a91bdd1654  libgcc/config/mips/t-vr
! dc03d1631f3d3e91ce92f98a4cb57048  libgcc/config/mips/vr4120-div.S
! 60877f4fa104109c6fbf759be98fae6f  libgcc/config/mmix/crti.S
! 0fb6b09f6429b35923827ea254eaecc6  libgcc/config/mmix/crtn.S
  41478efd1b19b3c7c9426d8e843f3b39  libgcc/config/mmix/t-mmix
! 29cc1ab4d562ea7e1c8e53755710301b  libgcc/config/moxie/crti.S
! cd3a69c904a590a9b27498a8487e9be5  libgcc/config/moxie/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/moxie/sfp-machine.h
  9b7000ea173c226d39e6a6dc116fdaf1  libgcc/config/msp430/cmpd.c
! 0562af95c8834a177434eb0eec62175e  libgcc/config/msp430/cmpsi2.S
! 26ef7b2a74983a3a4f80993cf3b11df0  libgcc/config/msp430/epilogue.S
  072a56de362c5e857510ca8401f30aa8  libgcc/config/msp430/floathidf.c
  07461b1abb61437fbc73d74801f6300b  libgcc/config/msp430/floathisf.c
  88792e557553f37a296bd8127a0dfc88  libgcc/config/msp430/floatunhidf.c
  754bbc793bc0e81b0a2168df9f47e1f3  libgcc/config/msp430/floatunhisf.c
! 6ed1cf7c6a696017f52b1da1a8e392b9  libgcc/config/msp430/lib2bitcountHI.c
! 0e6457831c5c5fab1354174e6102001e  libgcc/config/msp430/lib2divHI.c
! f7af56d05f6ba9794695c1eb841d2602  libgcc/config/msp430/lib2divQI.c
! f05d1d8b8b0fb8b489468867958a7b77  libgcc/config/msp430/lib2divSI.c
! 1835dc5005c1344dccc5565452b59673  libgcc/config/msp430/lib2hw_mul.S
! 5b39c8762f11f7c5f51a62857add420a  libgcc/config/msp430/lib2mul.c
! 9a4c03983f6a93c365bfab8ef968b7c6  libgcc/config/msp430/lib2shift.c
  585dda5cb05623da62e4f4aad3bdbbb6  libgcc/config/msp430/mpy.c
! 04d38c35f1a54f8e783a12e17f8e7283  libgcc/config/msp430/msp430-divmod.h
! 1634f71b1d498dd61df06ca962d72eee  libgcc/config/msp430/msp430-mul.h
! 39549907a6155827146e73a465da7677  libgcc/config/msp430/slli.S
! d80ba63395fded55379799afaf8e7663  libgcc/config/msp430/srai.S
! f5279a94d98c33ff4085f1dc4bd7d465  libgcc/config/msp430/srli.S
! ee9161685be2371a72abd223bcdb91fd  libgcc/config/msp430/t-msp430
! 869890e0f25bbbe04d20b47bbb444503  libgcc/config/nds32/crtzero.S
! 192415ae59c41e2145a4f2ec3a2c8ed6  libgcc/config/nds32/initfini.c
! 63ac35aaafd78cf964dd962af7f8c400  libgcc/config/nds32/isr-library/adj_intr_lvl.inc
! 569ca3aa12d86627188a41d8e89c7bec  libgcc/config/nds32/isr-library/excp_isr.S
! 0fba584092b72351feddd66e40eefae0  libgcc/config/nds32/isr-library/excp_isr_4b.S
! ebc3a6329513b8f0685ed5361d55b7a2  libgcc/config/nds32/isr-library/intr_isr.S
! 319e29b32a4dba4d2ec2fd976774112d  libgcc/config/nds32/isr-library/intr_isr_4b.S
! 842111a4b4aeca046b9de8ce2cc0047b  libgcc/config/nds32/isr-library/jmptbl_vid00.S
! d5bd1b276303148d728702dd08ad1e26  libgcc/config/nds32/isr-library/jmptbl_vid01.S
! d30d618ffaf9bbd72613acb1a28fb6e4  libgcc/config/nds32/isr-library/jmptbl_vid02.S
! 0787f451182bf8618619faf5c8fa36e6  libgcc/config/nds32/isr-library/jmptbl_vid03.S
! c6512a5cca71172b3807aae1ae976750  libgcc/config/nds32/isr-library/jmptbl_vid04.S
! a6037de3635978dac85a4302f735adeb  libgcc/config/nds32/isr-library/jmptbl_vid05.S
! b7ec590420fa5a86699414d3a1bd5e75  libgcc/config/nds32/isr-library/jmptbl_vid06.S
! edf3fcb7582dd52ed4d4beb0535965bc  libgcc/config/nds32/isr-library/jmptbl_vid07.S
! d4b32772405ea99e6783041ad4f64d23  libgcc/config/nds32/isr-library/jmptbl_vid08.S
! c3e30e5e78c36b2c17a561f00388ba64  libgcc/config/nds32/isr-library/jmptbl_vid09.S
! 306d216d887878b221192ce571cf65b6  libgcc/config/nds32/isr-library/jmptbl_vid10.S
! 611575e264ca7c5a427ebe13cabf7ff6  libgcc/config/nds32/isr-library/jmptbl_vid11.S
! 379fc8dedc276966aa1c781466033304  libgcc/config/nds32/isr-library/jmptbl_vid12.S
! 3ca708ca150dd078cb8cacbc93cd0956  libgcc/config/nds32/isr-library/jmptbl_vid13.S
! 8a30ecb7fff6e8fbb15b02c582279c50  libgcc/config/nds32/isr-library/jmptbl_vid14.S
! fc2dfce54661a523f4ab21159f92b4f8  libgcc/config/nds32/isr-library/jmptbl_vid15.S
! 7d5c24f80c8e78977d64f37fbe39de8e  libgcc/config/nds32/isr-library/jmptbl_vid16.S
! dd0e5a25602ecaa638edbda1c9c787bb  libgcc/config/nds32/isr-library/jmptbl_vid17.S
! 07be7bcaca8c74cb21a2c34841d71ac3  libgcc/config/nds32/isr-library/jmptbl_vid18.S
! 6bca72e02d08430faa792613ac5c1068  libgcc/config/nds32/isr-library/jmptbl_vid19.S
! b70815d69f4ca2723791ed3a9f1f5f8c  libgcc/config/nds32/isr-library/jmptbl_vid20.S
! c0bf89b45176eb5fd8d42f5a93e7a05e  libgcc/config/nds32/isr-library/jmptbl_vid21.S
! 181568b519551f4d48ce63dcb067ff73  libgcc/config/nds32/isr-library/jmptbl_vid22.S
! d62ea6acfc706123227764a5a33b7355  libgcc/config/nds32/isr-library/jmptbl_vid23.S
! a15e0023a71213455bd4f7a2a93ab2f9  libgcc/config/nds32/isr-library/jmptbl_vid24.S
! b368435c3bfcba3d54be7296321ddf19  libgcc/config/nds32/isr-library/jmptbl_vid25.S
! 5b7de2aba6192f31ad9318757b127d1f  libgcc/config/nds32/isr-library/jmptbl_vid26.S
! c8d302fa094e2d2564cdf7f4a57f61f7  libgcc/config/nds32/isr-library/jmptbl_vid27.S
! 6c2dd4d61722ab35ca233f2706f56de4  libgcc/config/nds32/isr-library/jmptbl_vid28.S
! e34f785a7d9f6f5b8e6056af74375904  libgcc/config/nds32/isr-library/jmptbl_vid29.S
! a9c411dffb93aa0ab8a4d79962f1c639  libgcc/config/nds32/isr-library/jmptbl_vid30.S
! 7bb826865acbba6cb33c289b0256e0aa  libgcc/config/nds32/isr-library/jmptbl_vid31.S
! a908f70969447957251a911457248510  libgcc/config/nds32/isr-library/jmptbl_vid32.S
! 199e6714031f957f39ee0f391a61ace1  libgcc/config/nds32/isr-library/jmptbl_vid33.S
! e877fc20e56c291718d0463125caa504  libgcc/config/nds32/isr-library/jmptbl_vid34.S
! e416cc4091694d9ca3893ba3205370da  libgcc/config/nds32/isr-library/jmptbl_vid35.S
! ec68c3f74db295a1989666886ab1d51c  libgcc/config/nds32/isr-library/jmptbl_vid36.S
! cdcfa785a896a8f95ef797f42478b42d  libgcc/config/nds32/isr-library/jmptbl_vid37.S
! 091d16aa4f4565b19c4f50fc1832996d  libgcc/config/nds32/isr-library/jmptbl_vid38.S
! c138baa23c09ce4eb1345ffcccedb6ab  libgcc/config/nds32/isr-library/jmptbl_vid39.S
! 8995cb762876025869453b0a86576cd5  libgcc/config/nds32/isr-library/jmptbl_vid40.S
! f12a8f7da69167abb781435c125baff1  libgcc/config/nds32/isr-library/jmptbl_vid41.S
! 3db935d9e848934373853d1aa249d086  libgcc/config/nds32/isr-library/jmptbl_vid42.S
! 4944b30c3fc4d2b5904bad8b17b3f4cf  libgcc/config/nds32/isr-library/jmptbl_vid43.S
! c20ab1d384be3397e5d0875c7fb816df  libgcc/config/nds32/isr-library/jmptbl_vid44.S
! 513ccd82db11492eea499029ce60d8a2  libgcc/config/nds32/isr-library/jmptbl_vid45.S
! 1e26cc6d142a05ae68b81ba1d67b6c0d  libgcc/config/nds32/isr-library/jmptbl_vid46.S
! d5371259566b5e8f4d2ff1a386a85bc3  libgcc/config/nds32/isr-library/jmptbl_vid47.S
! ab972e44324525e8059c4f4a5b193ba2  libgcc/config/nds32/isr-library/jmptbl_vid48.S
! 1d7cff9fbb072c409288e7646b5ea31d  libgcc/config/nds32/isr-library/jmptbl_vid49.S
! efb3afa3f4d39b4ebd9c1c29a2d9b655  libgcc/config/nds32/isr-library/jmptbl_vid50.S
! 102c796af59f82442866fd4d0d5eeebf  libgcc/config/nds32/isr-library/jmptbl_vid51.S
! 06b9f3c19f45d1fbb0570d9b497aa179  libgcc/config/nds32/isr-library/jmptbl_vid52.S
! 886b10f321e67debaaa40da1626c1ebe  libgcc/config/nds32/isr-library/jmptbl_vid53.S
! fdab9cfb6800baa6c0febac2896dbde2  libgcc/config/nds32/isr-library/jmptbl_vid54.S
! c5651280de3671a35772bce0ee5f29a0  libgcc/config/nds32/isr-library/jmptbl_vid55.S
! 646c4bdece88ec1d3f5cdac94903b279  libgcc/config/nds32/isr-library/jmptbl_vid56.S
! 5db1f1f8004d9ed87c6ee9340234860a  libgcc/config/nds32/isr-library/jmptbl_vid57.S
! 759104f5553c9b2dbfe1b0197629b6ef  libgcc/config/nds32/isr-library/jmptbl_vid58.S
! fc6f43bbc4604c087519d6c70a4b6eb3  libgcc/config/nds32/isr-library/jmptbl_vid59.S
! 5c689a059bfcb1bb2ceb5f225bfaa7e3  libgcc/config/nds32/isr-library/jmptbl_vid60.S
! 88bb532bd48225a54e1070aec2ce3612  libgcc/config/nds32/isr-library/jmptbl_vid61.S
! b8e50bac86c7a29d835976a07bf9b5ea  libgcc/config/nds32/isr-library/jmptbl_vid62.S
! 2945b75316b0ce26c8f651defbb87720  libgcc/config/nds32/isr-library/jmptbl_vid63.S
! 67d1c5dd653c55b98e01dee100f5eaad  libgcc/config/nds32/isr-library/jmptbl_vid64.S
! f299a69d0100bac8260a4089246d815b  libgcc/config/nds32/isr-library/jmptbl_vid65.S
! a649c31c5ee48ab53a9b7b1c06758f87  libgcc/config/nds32/isr-library/jmptbl_vid66.S
! 9a7748fc3db2af7ee6d224dc2f005a50  libgcc/config/nds32/isr-library/jmptbl_vid67.S
! e82dac0373e85956d51d7ef3e48dc564  libgcc/config/nds32/isr-library/jmptbl_vid68.S
! fe0ab95ccf8d86ab06d3471358c24c49  libgcc/config/nds32/isr-library/jmptbl_vid69.S
! 169f550e4b84bc6923305cb4170473ce  libgcc/config/nds32/isr-library/jmptbl_vid70.S
! bf49225ebc1b134114c78e689d3f0e7e  libgcc/config/nds32/isr-library/jmptbl_vid71.S
! b327dc16d637c6f26016b46a870f204c  libgcc/config/nds32/isr-library/jmptbl_vid72.S
! 502d33f2779bde4db8ee77551367c4c4  libgcc/config/nds32/isr-library/nmih.S
! 29e6d9ad3d81828e49ef1e4616f77473  libgcc/config/nds32/isr-library/reset.S
! dc54456d46455aedeb21c1239be4a8cf  libgcc/config/nds32/isr-library/reset_4b.S
! 527bcf956c7bcaf6d07501717795badb  libgcc/config/nds32/isr-library/restore_all.inc
! d112154e5c804aae59aac7da93045cfd  libgcc/config/nds32/isr-library/restore_fpu_regs.inc
! a213c1ec433ed0a02d16b5eb436db29a  libgcc/config/nds32/isr-library/restore_fpu_regs_00.inc
! 08ccfe2aeab3efda35a33ac9a657bf79  libgcc/config/nds32/isr-library/restore_fpu_regs_01.inc
! 41b27345f886e6f5ea0caabc150c6fa1  libgcc/config/nds32/isr-library/restore_fpu_regs_02.inc
! 98a13dda7be53b320081929adf29c6fd  libgcc/config/nds32/isr-library/restore_fpu_regs_03.inc
! ab0d485217a5b9b9873c3997ba27dd38  libgcc/config/nds32/isr-library/restore_mac_regs.inc
! 17b1d7bfb1c1ba819236b9326fe90ed6  libgcc/config/nds32/isr-library/restore_partial.inc
! c82458b21279b5fc60bf71eaa1eb4d3f  libgcc/config/nds32/isr-library/restore_usr_regs.inc
! b5fbcd709bf6588cfbd015f0619ae281  libgcc/config/nds32/isr-library/save_all.inc
! baa0913ae902de1b1cb552ba957d31a3  libgcc/config/nds32/isr-library/save_fpu_regs.inc
! ba731aca855fa9128db8380836d9768d  libgcc/config/nds32/isr-library/save_fpu_regs_00.inc
! 3a28e86e1bf3ee010eeeeda23a393eaa  libgcc/config/nds32/isr-library/save_fpu_regs_01.inc
! 179056b058fb2a07a0bf1ede1245129f  libgcc/config/nds32/isr-library/save_fpu_regs_02.inc
! 69bb11cf8ceae023fa4fb3765abefb20  libgcc/config/nds32/isr-library/save_fpu_regs_03.inc
! 8d6731fc9234911ef5df5c6a4f2bb694  libgcc/config/nds32/isr-library/save_mac_regs.inc
! eeb1cabe84a37885dd60e132aa9f3b41  libgcc/config/nds32/isr-library/save_partial.inc
! fc8810f01895cd7e8695b143d4bab983  libgcc/config/nds32/isr-library/save_usr_regs.inc
! 0bc77a89571d3cfed0fe0bd442785e8e  libgcc/config/nds32/isr-library/vec_vid00.S
! cef3260da36615024d5d7543f05211c2  libgcc/config/nds32/isr-library/vec_vid00_4b.S
! 8f517d6530d73529721de6a3f3eb11c9  libgcc/config/nds32/isr-library/vec_vid01.S
! 36e9ac43ac7f5392b706dced7d9a812f  libgcc/config/nds32/isr-library/vec_vid01_4b.S
! 7cdc56791356c2f5492dc9f97264cce0  libgcc/config/nds32/isr-library/vec_vid02.S
! 7376877d982b973870580ae367c75e63  libgcc/config/nds32/isr-library/vec_vid02_4b.S
! 01f4106c2422e5851b7bba79d1cfb1a9  libgcc/config/nds32/isr-library/vec_vid03.S
! d8a4a85e3b9a26acbda3ae6488ac8bb2  libgcc/config/nds32/isr-library/vec_vid03_4b.S
! 1f6b2c6c7bece7ef28468cd0ed701224  libgcc/config/nds32/isr-library/vec_vid04.S
! 2e7bccdc23dd8a3589b88627db687c38  libgcc/config/nds32/isr-library/vec_vid04_4b.S
! 3ca188afddba6cda582e0e61120f1e96  libgcc/config/nds32/isr-library/vec_vid05.S
! 3edb2d457fa37a102225e1cc7172b1a3  libgcc/config/nds32/isr-library/vec_vid05_4b.S
! da21abebd3b2b57739b277edbd6db887  libgcc/config/nds32/isr-library/vec_vid06.S
! 7f8ee375f7d2cce10aaa561b58e13487  libgcc/config/nds32/isr-library/vec_vid06_4b.S
! 3057a489cdcc6c909caa452d85b935f5  libgcc/config/nds32/isr-library/vec_vid07.S
! d3bff585be48ef0b494b5fc5452d6be3  libgcc/config/nds32/isr-library/vec_vid07_4b.S
! 8bbac0cc4cc5bf95f18a90a06e2b1df5  libgcc/config/nds32/isr-library/vec_vid08.S
! 3c85b8023603b8792aef8586d1512026  libgcc/config/nds32/isr-library/vec_vid08_4b.S
! d6aac04e59064f20eb942bc0d589f65d  libgcc/config/nds32/isr-library/vec_vid09.S
! 90ad8c206773eb1936f916a6118d6a11  libgcc/config/nds32/isr-library/vec_vid09_4b.S
! 1570d61a26aba3b3d685c0c9168c6706  libgcc/config/nds32/isr-library/vec_vid10.S
! d190510dd1e73e3611096d91b27d99de  libgcc/config/nds32/isr-library/vec_vid10_4b.S
! f338fd63eb9389686a533615a9cc3c96  libgcc/config/nds32/isr-library/vec_vid11.S
! a0df7584db158aeb69dfe30e010817bb  libgcc/config/nds32/isr-library/vec_vid11_4b.S
! f0a8ebe20eee4caf991b3c88ce504e01  libgcc/config/nds32/isr-library/vec_vid12.S
! 0162ac92abee34e19cf62262d35a940c  libgcc/config/nds32/isr-library/vec_vid12_4b.S
! 34abc4178d48ac2f73a252d0d103ef18  libgcc/config/nds32/isr-library/vec_vid13.S
! 027e755641171a1164b6d369a1c6c783  libgcc/config/nds32/isr-library/vec_vid13_4b.S
! c07927a6bad92aa124eb6be68c799880  libgcc/config/nds32/isr-library/vec_vid14.S
! da8f2de5a0a763eb7cb32ce8690ca997  libgcc/config/nds32/isr-library/vec_vid14_4b.S
! 61442d75eb50f5a8fd90cf80e72c3b61  libgcc/config/nds32/isr-library/vec_vid15.S
! e23000010939a7a58ff095721c582349  libgcc/config/nds32/isr-library/vec_vid15_4b.S
! d3449a7b816304ad97b4a72884ae6779  libgcc/config/nds32/isr-library/vec_vid16.S
! 7781af0b1a69dcd668212c9433b5b280  libgcc/config/nds32/isr-library/vec_vid16_4b.S
! 570502f792b2503818cd57e070e17035  libgcc/config/nds32/isr-library/vec_vid17.S
! d56fa2dac812727d47e03496862723b2  libgcc/config/nds32/isr-library/vec_vid17_4b.S
! 3bc350632a719a9a3ef9de6b959ea71f  libgcc/config/nds32/isr-library/vec_vid18.S
! 39e56d37299fb167929f9b15e2fa04de  libgcc/config/nds32/isr-library/vec_vid18_4b.S
! a1ea738d6b3de702abbf8d6248d996a6  libgcc/config/nds32/isr-library/vec_vid19.S
! d8501577134d72cd488cfdfb7c6dfcc9  libgcc/config/nds32/isr-library/vec_vid19_4b.S
! 7180c1833fc2412b48dbee19b9b599a9  libgcc/config/nds32/isr-library/vec_vid20.S
! f66cc55f5440dbe2a3adf93180fe0332  libgcc/config/nds32/isr-library/vec_vid20_4b.S
! a7ef229710fdcc0ac6d06cba30839268  libgcc/config/nds32/isr-library/vec_vid21.S
! 12edffedbb63f3efcdaac1a328145ed1  libgcc/config/nds32/isr-library/vec_vid21_4b.S
! dac9657586e27f83e215ab598c6227b7  libgcc/config/nds32/isr-library/vec_vid22.S
! ebbc5f641d7ad67433a00e93b2ec3e41  libgcc/config/nds32/isr-library/vec_vid22_4b.S
! 10c42170ce836707fa6385e63d11a3c8  libgcc/config/nds32/isr-library/vec_vid23.S
! b7b9f10efe19807f126c9125d7a47c66  libgcc/config/nds32/isr-library/vec_vid23_4b.S
! 92862efa825973a3cb89ced48dc09ede  libgcc/config/nds32/isr-library/vec_vid24.S
! b97f0f98d4b111ba0b6956b3ce2ea9f8  libgcc/config/nds32/isr-library/vec_vid24_4b.S
! 2e236b0f8b1d1ec4addab385307ad2c7  libgcc/config/nds32/isr-library/vec_vid25.S
! 1f9c5dcc954dc77f23e58d162367816f  libgcc/config/nds32/isr-library/vec_vid25_4b.S
! 76d9c49079e7521f5d5138792942c574  libgcc/config/nds32/isr-library/vec_vid26.S
! ed94fc4919e3da38f033220a8abf0257  libgcc/config/nds32/isr-library/vec_vid26_4b.S
! dc64e498b46468236a32e1370645d9bf  libgcc/config/nds32/isr-library/vec_vid27.S
! c3301bbff0b2e62c2bbdd25c9c25540a  libgcc/config/nds32/isr-library/vec_vid27_4b.S
! a3ccd11e0a454b1c65b818fac768729b  libgcc/config/nds32/isr-library/vec_vid28.S
! 9147d01748f16e75eb994c49013f9a91  libgcc/config/nds32/isr-library/vec_vid28_4b.S
! 00ec35515e6f601b3bd2441e1608c862  libgcc/config/nds32/isr-library/vec_vid29.S
! 320d0ce5f6bc91f0a7a21b4f58974fde  libgcc/config/nds32/isr-library/vec_vid29_4b.S
! ff810112fee9cd1ac140f099f0f252bf  libgcc/config/nds32/isr-library/vec_vid30.S
! 58b89a7c6d28e3f7c1cca45d6c4e28c4  libgcc/config/nds32/isr-library/vec_vid30_4b.S
! 340cb920294e8ef3c219309703f4ee9d  libgcc/config/nds32/isr-library/vec_vid31.S
! bf10d27aafaeccdd7339f4c4d3b8620d  libgcc/config/nds32/isr-library/vec_vid31_4b.S
! 7e524bdaf9802408909073877fb0b58e  libgcc/config/nds32/isr-library/vec_vid32.S
! 293d75a6d1e85c7c5a8a27ecbf28526f  libgcc/config/nds32/isr-library/vec_vid32_4b.S
! 3ffa8abe34136354ed226e0a32ca4cbb  libgcc/config/nds32/isr-library/vec_vid33.S
! 272e04e377c6ea6bd0ec707e298f2de0  libgcc/config/nds32/isr-library/vec_vid33_4b.S
! 373fac376a1b5794c0d5322930565a11  libgcc/config/nds32/isr-library/vec_vid34.S
! 4407b488e7485ba1d76143d79bbcce85  libgcc/config/nds32/isr-library/vec_vid34_4b.S
! f9327cbe59bd9e99ccca0be94583701d  libgcc/config/nds32/isr-library/vec_vid35.S
! 95c6b77f4f25a033947466a41c10398f  libgcc/config/nds32/isr-library/vec_vid35_4b.S
! 11591036ee831bd5331e6d8bf45ca488  libgcc/config/nds32/isr-library/vec_vid36.S
! 10ba25e74efd291e36e129bd985b8097  libgcc/config/nds32/isr-library/vec_vid36_4b.S
! 876d2b7e7ec31fc0d69196412d74f74c  libgcc/config/nds32/isr-library/vec_vid37.S
! ed2bf873371c894431d4bda54ace01a7  libgcc/config/nds32/isr-library/vec_vid37_4b.S
! 4cb34560455e9a2888c5edfa991269d7  libgcc/config/nds32/isr-library/vec_vid38.S
! 122a2cd1a2effc4eb2dafcee74567737  libgcc/config/nds32/isr-library/vec_vid38_4b.S
! 92a0e903e6c902a1bbb49b962aeb7799  libgcc/config/nds32/isr-library/vec_vid39.S
! eeec288b087e8a304049b022ee42a9b2  libgcc/config/nds32/isr-library/vec_vid39_4b.S
! c92158f0d436d5685acbb4862aafa343  libgcc/config/nds32/isr-library/vec_vid40.S
! f5848063e8ba7754febae95e4c88a31f  libgcc/config/nds32/isr-library/vec_vid40_4b.S
! 106de3174f18afdd47df6285d7f3449d  libgcc/config/nds32/isr-library/vec_vid41.S
! ee32581d1f1e2125dbd0966fba1387f1  libgcc/config/nds32/isr-library/vec_vid41_4b.S
! e9891ca17b7f0a1d255dccc531fc0ba4  libgcc/config/nds32/isr-library/vec_vid42.S
! 983d160d3d36e346bc471c3cec60e3aa  libgcc/config/nds32/isr-library/vec_vid42_4b.S
! c06214d122aea77300dbe976e12d1d20  libgcc/config/nds32/isr-library/vec_vid43.S
! 599aaf55c9c4b2e962be154daca6d42e  libgcc/config/nds32/isr-library/vec_vid43_4b.S
! 01a7d11ad1e7c939bff9e95d1d739c3c  libgcc/config/nds32/isr-library/vec_vid44.S
! 6a9fc82205992e65f64f601d7a7dbf05  libgcc/config/nds32/isr-library/vec_vid44_4b.S
! c9df690ed9412878d0e420b2e8df99c2  libgcc/config/nds32/isr-library/vec_vid45.S
! 1acb7d96163662eca0fa798feaccefa3  libgcc/config/nds32/isr-library/vec_vid45_4b.S
! 55b7432ca00a4d404ef7b5c084404361  libgcc/config/nds32/isr-library/vec_vid46.S
! b97efb3c213521f0d9e657facdafd59e  libgcc/config/nds32/isr-library/vec_vid46_4b.S
! 6c82d6991efe4ea694f3c70b9761b0ff  libgcc/config/nds32/isr-library/vec_vid47.S
! 4b35d3f6a052bb969c1867e8d8df58c2  libgcc/config/nds32/isr-library/vec_vid47_4b.S
! 23fe547addf696efedba2669094279dc  libgcc/config/nds32/isr-library/vec_vid48.S
! 5869bb856f5bf8d895e6e9774bc331c6  libgcc/config/nds32/isr-library/vec_vid48_4b.S
! 774db5e8c3ac07513ece074da08a2b81  libgcc/config/nds32/isr-library/vec_vid49.S
! 83beee611538391b6d84414c36522e85  libgcc/config/nds32/isr-library/vec_vid49_4b.S
! a74c2e07c799f4ba6c2051bb8f864d27  libgcc/config/nds32/isr-library/vec_vid50.S
! 4eb615c86704d7bdd90e53a908ef7be2  libgcc/config/nds32/isr-library/vec_vid50_4b.S
! 1d9467ba8bd9a94d87df94d7dd813e76  libgcc/config/nds32/isr-library/vec_vid51.S
! 61b80dbf1c33590c8e811cf20e5198a2  libgcc/config/nds32/isr-library/vec_vid51_4b.S
! 2e5c937f2ab88aa9a6f2d6a0c304e77f  libgcc/config/nds32/isr-library/vec_vid52.S
! 97f43540609dc8f2ed047515c06fda15  libgcc/config/nds32/isr-library/vec_vid52_4b.S
! 57079dc21c5bfbc5e1d78cfec13b8d3c  libgcc/config/nds32/isr-library/vec_vid53.S
! 89460b8c52e042d7bea076a1d344eb83  libgcc/config/nds32/isr-library/vec_vid53_4b.S
! f2c1da56e67e7344140c22ac44d8a72d  libgcc/config/nds32/isr-library/vec_vid54.S
! da3787f8efbf170a0f1fcf8ed080b7c6  libgcc/config/nds32/isr-library/vec_vid54_4b.S
! 224d4a73471d9e502f13533984d12c2e  libgcc/config/nds32/isr-library/vec_vid55.S
! 47c1bad462c1381aa4a81bf8952bd4c1  libgcc/config/nds32/isr-library/vec_vid55_4b.S
! 2e4909eda3d1670545a6869bae213c18  libgcc/config/nds32/isr-library/vec_vid56.S
! bfcb996fff8c864f075d3b35a66fa8d1  libgcc/config/nds32/isr-library/vec_vid56_4b.S
! 827b97253861d48d1c013b16ec73e190  libgcc/config/nds32/isr-library/vec_vid57.S
! f8d624b5dccb0bd3e72c4a77d09b8713  libgcc/config/nds32/isr-library/vec_vid57_4b.S
! dd8316ec3874c8a41a14c8437e0b0914  libgcc/config/nds32/isr-library/vec_vid58.S
! 513bdb5852017b260cf02485f30b0873  libgcc/config/nds32/isr-library/vec_vid58_4b.S
! 29d51760c702e8e8c18d8a0b15274f83  libgcc/config/nds32/isr-library/vec_vid59.S
! 5ed7dfeeea93d763de05e7225785b13a  libgcc/config/nds32/isr-library/vec_vid59_4b.S
! 15baffd504affd869f5926b4780ce653  libgcc/config/nds32/isr-library/vec_vid60.S
! 9c4ba0581a46c4ce1650b2b8a85ca98f  libgcc/config/nds32/isr-library/vec_vid60_4b.S
! 98f23a4ff6a013ea25a910b8ffa3c940  libgcc/config/nds32/isr-library/vec_vid61.S
! c8c9e5e746be72100c815dc07424dd57  libgcc/config/nds32/isr-library/vec_vid61_4b.S
! 2f44d39090c469f7f2ed7eab1d2b51fc  libgcc/config/nds32/isr-library/vec_vid62.S
! 97dace91da83200156edc2e0abd686fe  libgcc/config/nds32/isr-library/vec_vid62_4b.S
! 2a07d81f9a1dba825c5782a6ba522954  libgcc/config/nds32/isr-library/vec_vid63.S
! 80383691d6a2785dcc6ddac5185d1c59  libgcc/config/nds32/isr-library/vec_vid63_4b.S
! 81ab652c1f3d9f25f54d39579054d344  libgcc/config/nds32/isr-library/vec_vid64.S
! a4ce98b37406d90311d93b6f8576a994  libgcc/config/nds32/isr-library/vec_vid64_4b.S
! 8d5196838680bb0d75e42d085d1a9126  libgcc/config/nds32/isr-library/vec_vid65.S
! 548c7506dba6df8721ea65a3923c5b89  libgcc/config/nds32/isr-library/vec_vid65_4b.S
! 743f313d0ec200f06277f8f9a56470ef  libgcc/config/nds32/isr-library/vec_vid66.S
! d0a12d2760f028f7bc21389565d0c41c  libgcc/config/nds32/isr-library/vec_vid66_4b.S
! 3eafc43b8ac27edeb1dd42657cf3ba3a  libgcc/config/nds32/isr-library/vec_vid67.S
! ab88db60ac422c675b3680454c4baca7  libgcc/config/nds32/isr-library/vec_vid67_4b.S
! ebdfd0a2a3dc1285c7b652245613e945  libgcc/config/nds32/isr-library/vec_vid68.S
! e60e1d27ab8a8fd433393c26772a6ede  libgcc/config/nds32/isr-library/vec_vid68_4b.S
! 3d80dddcaabe941f2cd16d2179dd4c8c  libgcc/config/nds32/isr-library/vec_vid69.S
! 06c9af4d086369951b8e3c23ba7f405c  libgcc/config/nds32/isr-library/vec_vid69_4b.S
! 08c0ef4c377ded87d222fc45b96273e0  libgcc/config/nds32/isr-library/vec_vid70.S
! 963501e9cfd048cdf45bceed334b9df1  libgcc/config/nds32/isr-library/vec_vid70_4b.S
! 383eecf4ce5c612e588bf23d0172299e  libgcc/config/nds32/isr-library/vec_vid71.S
! 9e48388f21b0d24a9fbb7f3b607ce8e6  libgcc/config/nds32/isr-library/vec_vid71_4b.S
! 456a86c405a6f97366c81779f428a0b5  libgcc/config/nds32/isr-library/vec_vid72.S
! 44b8cd871bc68df4d02456e518a0c0dd  libgcc/config/nds32/isr-library/vec_vid72_4b.S
! 11b950a17c5e5b8c1b3e1d051519e232  libgcc/config/nds32/isr-library/wrh.S
! 0b24a39a6262b95a35de5770db17fa84  libgcc/config/nds32/lib1asmsrc-mculib.S
! 20fc3863d808523522811d7209fc0881  libgcc/config/nds32/lib1asmsrc-newlib.S
! 5a9c7d5045857cef007011114b8d507f  libgcc/config/nds32/lib2csrc-mculib/_clzdi2.c
! 5f1b9d46a72838c5681652dbe70b6172  libgcc/config/nds32/lib2csrc-mculib/_clzsi2.c
! 19720d1939a153feedc2246f0b135b42  libgcc/config/nds32/linux-atomic.c
! e4a87ed3cbe852841dc8d843e2a5c93b  libgcc/config/nds32/linux-unwind.h
! 0b30b0d932d708f5528dabeaf7d25100  libgcc/config/nds32/sfp-machine.h
! 64dbbf6244e346d71f5bc934f96b11fc  libgcc/config/nds32/t-nds32
! 739925128c19af277e91e40060c73f83  libgcc/config/nds32/t-nds32-glibc
! daaf70fc1d97027ce39f3f7f4be5c16f  libgcc/config/nds32/t-nds32-isr
! 130435cf8ca8395dad0b2b4137188c5c  libgcc/config/nds32/t-nds32-mculib
! 3086e7d74293896ad21450268eb5f784  libgcc/config/nds32/t-nds32-newlib
! e9ca5358f35b91ba64c9c3e0b3ba9632  libgcc/config/nios2/crti.S
! a472d3ba53060a2ee924d53ab94b1d79  libgcc/config/nios2/crtn.S
! b2a7dedbe63c0309711c481d9e15221a  libgcc/config/nios2/elf-lib.h
! 53abcef6203061c33de7c9338fc20db6  libgcc/config/nios2/lib2-divmod-hi.c
! 5943232173a001efce3bc4e564d441e3  libgcc/config/nios2/lib2-divmod.c
! 08c415665b6f80d7c100e21dcb9a2cb6  libgcc/config/nios2/lib2-divtable.c
! d119d70e778c246515c3b516611401df  libgcc/config/nios2/lib2-mul.c
! 2f96eacb9b4135ed9632bd311ae067eb  libgcc/config/nios2/lib2-nios2.h
! 60d7858f43f2632994d74d45a35ff989  libgcc/config/nios2/linux-atomic.c
! b2c5c3664e41e2b7dd02c81ba6352d86  libgcc/config/nios2/linux-unwind.h
! 6173f2f671747ea17b03ec7ed88e1e6d  libgcc/config/nios2/sfp-machine.h
  598bde069aeebadde9b08f8703ab2c77  libgcc/config/nios2/t-linux
  058cf7bee1e8fb40a62590a2558c7f76  libgcc/config/nios2/t-nios2
! 996b21a6705c48a1fe75954cb07cfb07  libgcc/config/nios2/tramp.c
  d554f3fc7ee3cecc697c448b8c5f61bb  libgcc/config/no-sfp-machine.h
  b70010a8e3a6734ae04ba484992563c5  libgcc/config/no-unwind.h
! a1edaf712cec3f0f23bc9a15ea786bf4  libgcc/config/nvptx/atomic.c
! 8d61020846abf90f0291920d3d84d8f0  libgcc/config/nvptx/crt0.c
! 3bf35123969620aa2e9bc0709e201f2f  libgcc/config/nvptx/mgomp.c
! a9a5cf7cc5cbeab26bd801c58dd80ddf  libgcc/config/nvptx/nvptx-malloc.h
! c3ca858f8ef9e7d83964a743834b6015  libgcc/config/nvptx/reduction.c
  a2f0aaba262ea7568fe97072e2e4e19f  libgcc/config/nvptx/t-nvptx
! aa4f2158b3f775ac31edb4c000670064  libgcc/config/or1k/lib1funcs.S
! 7ae7644ffa30bd87f48d1bb51d292ea8  libgcc/config/or1k/linux-unwind.h
! bb60ec15ea01e2d3f07f2b944b739c6d  libgcc/config/or1k/sfp-machine.h
  dc51b5d6e7fd35fa1156670d20c6464d  libgcc/config/or1k/t-crtstuff
! e5fc45357997f9e90478a586cddde24c  libgcc/config/or1k/t-or1k
! 008ed19642081b986e4b04f08084ea18  libgcc/config/pa/fptr.c
! 2028ecd7c15f2633fe7eb26c51eb8ec3  libgcc/config/pa/gthr-dce.h
! 6df3ac20eba95111e5cf1b1dbd7ef0f6  libgcc/config/pa/hpux-unwind.h
! 633e1362e97cd08000e056e3347eecf9  libgcc/config/pa/lib2funcs.S
! 7f98610dd0d5b2ef5f604e3f74fde15d  libgcc/config/pa/linux-atomic.c
! 34c0307191bec69746ded96ffaf93366  libgcc/config/pa/linux-unwind.h
! b6bc49e1eb516fac21f91ff799577ed0  libgcc/config/pa/milli64.S
! 16f5a73c8fe4ab583c28a12818b0e0be  libgcc/config/pa/pa64-hpux-lib.h
! 178c1fd14bd271df99f6e06d5a1eb074  libgcc/config/pa/quadlib.c
! 03e8f2b4053af6fc77d4cca1badf9d91  libgcc/config/pa/sfp-exceptions.c
! 90979b5ae36caa4447e315e723f4e315  libgcc/config/pa/sfp-machine.h
! 203fbc7b2984bc51702c9b960a45022d  libgcc/config/pa/stublib.c
! 0ccefa0e31c7242cd97a7d51a2849a2e  libgcc/config/pa/sync-libfuncs.c
  be1d29d3044d55ee3e60d3e74a9e98fe  libgcc/config/pa/t-dimode
  8a3964d4f1eddb14d9260a0a72a23493  libgcc/config/pa/t-hpux
  73420715a92f162a61d33bbfbe7c4dee  libgcc/config/pa/t-hpux10
  3e293a3e5a4bcd16fb9846c60502af9b  libgcc/config/pa/t-linux
  8b6e1d4848a895dd9e8e030f638c68bc  libgcc/config/pa/t-linux64
! 318bb534659ba63aed7c4990000381d1  libgcc/config/pa/t-netbsd
! 318bb534659ba63aed7c4990000381d1  libgcc/config/pa/t-openbsd
  4c55604fec5e632606f19c2f176f1a6c  libgcc/config/pa/t-pa64
+ cb3abad4947b17ef27c99d92fdcb14ae  libgcc/config/pa/t-pa64-hpux
+ 8b6e1d4848a895dd9e8e030f638c68bc  libgcc/config/pa/t-pa64-linux
  6b7616abedce76aaa866d73b08ea3a07  libgcc/config/pa/t-slibgcc-dwarf-ver
! 46ac8e98b8015706346770301c8fecbb  libgcc/config/pa/t-slibgcc-hpux
  463a4121da251ad8e53013810a31914a  libgcc/config/pa/t-slibgcc-sjlj-ver
  ce4b287e3a507cf1707205fb5c6adfe3  libgcc/config/pa/t-softfp-sfdftf
  964be72d0cacc353ffda1509b63add90  libgcc/config/pa/t-stublib
  a2a61a2b6f3c9d3e3bd8cae0b0eb845b  libgcc/config/pdp11/t-pdp11
! 8389680d5606e9f592171159a4f81867  libgcc/config/pru/asri.c
! 95b420c5e5251f0729d588e422d72151  libgcc/config/pru/eqd.c
! 3c4722088253b5421a5787896be027e2  libgcc/config/pru/eqf.c
! c2071f8359a79bafdff844da59a73c0e  libgcc/config/pru/ged.c
! 82018a7b31e28ca53681d02c042eed29  libgcc/config/pru/gef.c
! 2bfc19dccf2954f08cc0cff597d328de  libgcc/config/pru/gtd.c
! 0f8093d3a26feb6b0cda671e2ae5fd7b  libgcc/config/pru/gtf.c
! 3548fb77189a97a7952f1e86333d426d  libgcc/config/pru/led.c
! 25f4e4a2aecb8dfa13d34d250d721095  libgcc/config/pru/lef.c
! 751c50d702f528a6e3f067343541b991  libgcc/config/pru/lib2bitcountHI.c
! ac614b13dc622b56264890da76bbd6fa  libgcc/config/pru/lib2divHI.c
! f123ad4c2edc39368b70ae86afd7248b  libgcc/config/pru/lib2divQI.c
! 42551ecd91f2e610973729f17700a188  libgcc/config/pru/lib2divSI.c
! 8dbdc041a757e5147885d97dbbb6f132  libgcc/config/pru/libgcc-eabi.ver
! 0f0ef9a03a750ab34eae3d9a37fb6dab  libgcc/config/pru/ltd.c
! 6dcd34d5b7718cfdfac148038b3ae031  libgcc/config/pru/ltf.c
! 538b71090c6fcedfeda3d1bdc5b0d623  libgcc/config/pru/mpyll.S
! 3464df89296896f93e7241d55919d9f8  libgcc/config/pru/pru-abi.h
! 66aeebd24220fd1e7ccf2b24877a69a7  libgcc/config/pru/pru-asm.h
! 3ff9a33b0388d96bc738cbce6b20c9b7  libgcc/config/pru/pru-divmod.h
! 721dc9f555aa85a9282c1df17ec3be5c  libgcc/config/pru/sfp-machine.h
! 3596dec6c8a69f09a2011858f1b32d8f  libgcc/config/pru/t-pru
! e72a5c28c98a3f11a6f353ca6dc68965  libgcc/config/riscv/atomic.c
  d61879f5ed9372bd52bba7f21bb79dbc  libgcc/config/riscv/crti.S
  0485c6e233af87295472bb7a9f2767e0  libgcc/config/riscv/crtn.S
! aa8a969c2a30e16bab5df961caf743ba  libgcc/config/riscv/div.S
! c0dab54e2d2af5f841dce5130a27cf38  libgcc/config/riscv/linux-unwind.h
! 8c92a19af803520b9687fa7e307cb938  libgcc/config/riscv/muldi3.S
! f2ea71a36a0e8dbac0e3a473ed3ed2dd  libgcc/config/riscv/multi3.c
! 154fb9c32be5892ba5503866244aedb4  libgcc/config/riscv/riscv-asm.h
! 7daff6324247ddae40f21f08df3c1701  libgcc/config/riscv/save-restore.S
! ed808b1bb28de330127d99cb740ae36c  libgcc/config/riscv/sfp-machine.h
  c42f201dbf0dcdfa26d4e52583c32f53  libgcc/config/riscv/t-elf
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf32
  02fdd22ff5d39903f17ad235a8fe0f65  libgcc/config/riscv/t-elf64
! 57cceb9ccc7b54f50fc6c01ad8639147  libgcc/config/riscv/t-softfp32
! 494f987eb59c3f251a4a33bf3c6ce334  libgcc/config/riscv/t-softfp64
! e6dbff697fe6b503036ebaa3bccc31df  libgcc/config/riscv/value-unwind.h
! 1d5998d358ab3bb601018943d8708075  libgcc/config/rl78/adddi3.S
! b2ea1f66a684681c810f43062d13a1e7  libgcc/config/rl78/anddi3.S
! 0ab56bef0525b38eb6afb14191a71e9b  libgcc/config/rl78/bit-count.S
! 8ff2be085af8038ce84197f17480c894  libgcc/config/rl78/cmpsi2.S
! 0a2772169884887dea4c9a3085c644cc  libgcc/config/rl78/divmodhi.S
! 9f0eeb90c6c96ab63d941bd62381136c  libgcc/config/rl78/divmodqi.S
! 57fbc645ca740d2330f88f6a1ab9bc39  libgcc/config/rl78/divmodsi.S
  63e9b57af30110b61c3221ba465e2c5b  libgcc/config/rl78/fpbit-sf.S
  9099dff71d89768f77ed3ef7908d4265  libgcc/config/rl78/fpmath-sf.S
! 15f4355b88437c63a0101b2da8c42a57  libgcc/config/rl78/lib2div.c
! 7525210079dbc168ff65255d756f01b1  libgcc/config/rl78/lib2mul.c
! aa4e9e9bd4d0b372d685022be7cfd870  libgcc/config/rl78/lib2shift.c
! 1898a7654d49ebc6adb99506265a3844  libgcc/config/rl78/lshrsi3.S
! 663452649724bc5bdb2e5535a2468b80  libgcc/config/rl78/mulsi3.S
! 3f3cb71fc2a7a6b15e0e497f8c0cde03  libgcc/config/rl78/rl78-divmod.h
! 1634f71b1d498dd61df06ca962d72eee  libgcc/config/rl78/rl78-mul.h
! 65edc4958457497e8bfb6629d6616834  libgcc/config/rl78/signbit.S
! 5798247009a7da28dd0516deb892807e  libgcc/config/rl78/smaxdi3.S
! bd44fb671a52bd5955cde94a4af1ab9a  libgcc/config/rl78/smindi3.S
! 2e797b85015ccb2e8ca91158bfb76527  libgcc/config/rl78/subdi3.S
! 821bf29e1e12bdee7a0b9e1c16e43888  libgcc/config/rl78/t-rl78
! e215c2e2792686d619a3bcb05f272eb9  libgcc/config/rl78/trampoline.S
! 03010e91a87f96eabc4000998cf0d975  libgcc/config/rl78/umaxdi3.S
! 485bbfb4fc7c41eca5d0130ed79d7aa8  libgcc/config/rl78/umindi3.S
  760912f22e59adbfe0317ee3df1b4849  libgcc/config/rl78/vregs.h
! 0fac6412034eb67f356dd791e78a1c2c  libgcc/config/rs6000/_dd_to_kf.c
! 775dbf9c6986bcdbe67c8e6c8aac4fba  libgcc/config/rs6000/_divkc3.c
! 79624f5a72c8a3c6bc903d31e1692048  libgcc/config/rs6000/_kf_to_dd.c
! 22da7e5d59074dec008b2a16b8249ae5  libgcc/config/rs6000/_kf_to_sd.c
! 4f5a74f84274c59d46d197b73a65bd73  libgcc/config/rs6000/_kf_to_td.c
! 9a86d98c1caa7751b81fb0bc78f2b0d7  libgcc/config/rs6000/_mulkc3.c
! 7739c2698b7555f70a5a284086ec8f66  libgcc/config/rs6000/_powikf2.c
! bcb0cc8d42ec60296346c3af4d1aceab  libgcc/config/rs6000/_sd_to_kf.c
! 3a74fde299785b7397d1210d4ad98857  libgcc/config/rs6000/_td_to_kf.c
! 2841d94642949e446472f55cdec7bae7  libgcc/config/rs6000/aix-unwind.h
  737841f917469789a5f925e6f08da1de  libgcc/config/rs6000/aixinitfini.c
! c3821700c34a0bd277e5c26d2b5dfcc3  libgcc/config/rs6000/atexit.c
! c02a573c2a8e2e869dfa9a8bc8a73330  libgcc/config/rs6000/crtcxa.c
! 87597cf9633e9d5723028f22741c3ac6  libgcc/config/rs6000/crtdbase.S
! 94f30672ce606c41b59db402f24a6f2c  libgcc/config/rs6000/crtresfpr.S
! b66cc4c90c75a93bd946cdba76271f0d  libgcc/config/rs6000/crtresgpr.S
! 41196a63c5b11de01307b5dd5da33858  libgcc/config/rs6000/crtrestvr.S
! cbe3b65d8b4e7759350bdcf41b34818b  libgcc/config/rs6000/crtresxfpr.S
! e9e9bb74b6fe2b1a9ac50146bef36cd7  libgcc/config/rs6000/crtresxgpr.S
! 4143662b793f33323e8e05e0fba5d823  libgcc/config/rs6000/crtsavevr.S
! a3786e4556bd492bd5b7450810f2b066  libgcc/config/rs6000/crtsavfpr.S
! ddfe52717d7e23f46e0221b35a5d2104  libgcc/config/rs6000/crtsavgpr.S
! 8e861a839f8d019d1de6fbf0048656f2  libgcc/config/rs6000/cxa_atexit.c
! cbb01d0cd208561843ef4b19ac0b102e  libgcc/config/rs6000/cxa_finalize.c
! 871369895cf5d6db3c34784a683e3729  libgcc/config/rs6000/darwin-asm.h
! d1399322b7737771bda0e4887f351e7f  libgcc/config/rs6000/darwin-crt2.c
! 5d4a95fa8eaa662100a41e986890d88a  libgcc/config/rs6000/darwin-fallback.c
! f203ee8ab5c8e5bd55d941246a796fe3  libgcc/config/rs6000/darwin-fpsave.S
! e4ec429198f3065219c83c1ae78e5ea2  libgcc/config/rs6000/darwin-gpsave.S
! 6b6b758e7928c005e1081e887f70f642  libgcc/config/rs6000/darwin-tramp.S
! 578ff9af66a0e849c149ec929078568e  libgcc/config/rs6000/darwin-unwind.h
! 0e85d0418a60f2dc0019a990684885a2  libgcc/config/rs6000/darwin-vecsave.S
! 7d81607f6df337929806ac77495f4909  libgcc/config/rs6000/darwin-world.S
! afed487fe456e907988c405a591273b2  libgcc/config/rs6000/e500crtres32gpr.S
! 55cce5410d9a191027dfd99b1016f9cb  libgcc/config/rs6000/e500crtres64gpr.S
! 30ea3fefdbce73d1c3f574fbf3318b0f  libgcc/config/rs6000/e500crtres64gprctr.S
! ca3c60e8adcad17594b4b94159dbd790  libgcc/config/rs6000/e500crtrest32gpr.S
! 605d6f691201f7f6fd56d686a12126e1  libgcc/config/rs6000/e500crtrest64gpr.S
! c93d6b0f1a761f4f172b4e2d32677dd1  libgcc/config/rs6000/e500crtresx32gpr.S
! 189aff44ddd4acc29d6d3e5d946d6350  libgcc/config/rs6000/e500crtresx64gpr.S
! 8e52f6a22b8e85c86e0a38794000ede2  libgcc/config/rs6000/e500crtsav32gpr.S
! 574b237171431e7afe7b0e69a20dc299  libgcc/config/rs6000/e500crtsav64gpr.S
! aaa65b00dad887c2916f603a637a462e  libgcc/config/rs6000/e500crtsav64gprctr.S
! 34fba8d2635e014d0ef772342e94c2be  libgcc/config/rs6000/e500crtsavg32gpr.S
! ee84cb778b9821cb4b7adb7c69f8100d  libgcc/config/rs6000/e500crtsavg64gpr.S
! 5bfd4c38e1a7262ac66ebabe468552d0  libgcc/config/rs6000/e500crtsavg64gprctr.S
! a31c21d7315b24d58e6ce1834bc22f35  libgcc/config/rs6000/eabi-ci.S
! f0c2e0efe18fc6814ad09ff7fb831ed7  libgcc/config/rs6000/eabi-cn.S
! e1a670ad0c7d976b06af28c5b5b29c8a  libgcc/config/rs6000/eabi.S
! f70bc8368bc3cdced31ecdfff362016f  libgcc/config/rs6000/exit.h
! 2d67f727af0b1e555073471246eaf084  libgcc/config/rs6000/extendkftf2-sw.c
! 5fdd77ee6864dd5b3a857a7b6b398eb1  libgcc/config/rs6000/fixkfti-sw.c
! cdce747270ba9f70902ab791df285d5a  libgcc/config/rs6000/fixunskfti-sw.c
! 73bde4caba4f41f075d4bd8ae8f629e5  libgcc/config/rs6000/float128-hw.c
! e312d6723e3f266a3609e65ff36ba013  libgcc/config/rs6000/float128-ifunc.c
! 432584444d3de94506f6d0987590d1e0  libgcc/config/rs6000/float128-p10.c
  82156c171c8648f2863486505efc417a  libgcc/config/rs6000/float128-sed
  81d8bfdd9028f651e74357a59a1352c5  libgcc/config/rs6000/float128-sed-hw
! 7dff5851a2552468e4c76e23967b27ed  libgcc/config/rs6000/floattikf-sw.c
! efa0fdd0f2622febca59000d1dbceafc  libgcc/config/rs6000/floatuntikf-sw.c
! b1ad824f3841cf4406709cc784bcf1df  libgcc/config/rs6000/freebsd-unwind.h
! 2bff3b6f85cbfd276092255b72f7fd97  libgcc/config/rs6000/gthr-aix.h
! cc959fad27e59f7bd9bc4d58acd58be5  libgcc/config/rs6000/ibm-ldouble-format
! 803463ae0eb50d533ae114d8aac9a1f9  libgcc/config/rs6000/ibm-ldouble.c
  13bc252ed5254cf124822256760c6df0  libgcc/config/rs6000/libgcc-aix-cxa.ver
! f83d28e38dc7c78d2d455eaa9213c0f4  libgcc/config/rs6000/libgcc-glibc.ver
  7aa6f4e782960be3e2b43998ef395330  libgcc/config/rs6000/libgcc-ibm-ldouble.ver
! 51b17664f1d6f8eee852cccd0e605ac8  libgcc/config/rs6000/linux-unwind.h
! 6c6a90ef00087b1da4ba9edf16c9fca8  libgcc/config/rs6000/morestack.S
! dc5a6c34bc49057c45005c8d5cb31c73  libgcc/config/rs6000/on_exit.c
! 3c078fa3edb12bb5c4fa19e2ba936e2d  libgcc/config/rs6000/quad-float128.h
! d1b33e021d547f29de7264898f30b39e  libgcc/config/rs6000/sfp-exceptions.c
  41c3896f925900fa6b81c0215a60075f  libgcc/config/rs6000/sfp-machine.h
! 8fe1f8a9bc22d0eabbe6226c161dfd09  libgcc/config/rs6000/sol-ci.S
! db2d53d612d8d902893f509f83b8b708  libgcc/config/rs6000/sol-cn.S
  3fa6bf8673b3a7fa2278aeb2fe1824f4  libgcc/config/rs6000/t-aix-cxa
  0d6637a7e112c021e7ce371918c7659c  libgcc/config/rs6000/t-crtstuff
  b780b81d7bccdf7af090dbcd3e639dd1  libgcc/config/rs6000/t-darwin
  a8ea28c94f3264c3602a98b4728fed82  libgcc/config/rs6000/t-darwin-ehs
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-darwin64
! 01de3124b53eff3c5b115f34ba5434c1  libgcc/config/rs6000/t-e500v1-fp
! a669828a9589440e60982a1232c8042d  libgcc/config/rs6000/t-e500v2-fp
  d5fb4aa675487367c8320cc2a6b80485  libgcc/config/rs6000/t-float128
  ea267a427a7598d5070e338c8995363d  libgcc/config/rs6000/t-float128-hw
  0c3cb3b39ba2a4a769c8467eba008f64  libgcc/config/rs6000/t-float128-p10-hw
! 0e56d6c0078f4df9905d534a4d1fc961  libgcc/config/rs6000/t-freebsd
  4976aac1da0b181cf133fe8ef7243000  libgcc/config/rs6000/t-freebsd64
  565e9d6288ad496063af26b57e5fa264  libgcc/config/rs6000/t-ibm-ldouble
  ecf2c7e327e9df4e94343352b59b9fd2  libgcc/config/rs6000/t-linux
*************** ad6ae6684d4dec9ddd78efad67d1af4b  libgcc
*** 93752,93813 ****
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-ppc64-fp
  bd7ceb31787a37d9cb144c41d41acfb3  libgcc/config/rs6000/t-ppccomm
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
! a27c085bf6440bb217f3b9dc5719e390  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
  04581882e1764bcc2a4240b21f3eaa8a  libgcc/config/rs6000/t-vxworks
! 1fc924fd7abb499ef89cf1637ef18599  libgcc/config/rs6000/tramp.S
! 7d899fabef3bbcaab60044c158dcffab  libgcc/config/rs6000/trunctfkf2-sw.c
! 2d2e0dce48a7ae8394e5fb4a537ebb5c  libgcc/config/rx/rx-abi-functions.c
! 18a57c3fa0f02eeaa9bd042d3bbedea3  libgcc/config/rx/rx-abi.h
  da7bc70013c60be91cf9f085fed52f1a  libgcc/config/rx/rx-lib.h
! c3082721252219ad68555d3487077285  libgcc/config/rx/t-rx
! db1510b6d63dc86f8ae9b79f8294ad59  libgcc/config/s390/32/_fixdfdi.c
! 896db9ecc3aaf34d560e8eb1e2f39458  libgcc/config/s390/32/_fixsfdi.c
! e25e42627ebe9f2af8b70895565da1d0  libgcc/config/s390/32/_fixtfdi.c
! cfc6a66b898fd460164c53903c9ff5bf  libgcc/config/s390/32/_fixunsdfdi.c
! 7f3c82644ae7b623ebec152f50270642  libgcc/config/s390/32/_fixunssfdi.c
! 6d744a132a42a2d8b755141398708255  libgcc/config/s390/32/_fixunstfdi.c
  6101649604e2b3fdd6179e1aa53066bf  libgcc/config/s390/32/t-floattodi
! ca373e3e14b4e71435f767f70ff117b1  libgcc/config/s390/gthr-tpf.h
! 6257e2df30e680ac4e921a25074cfd02  libgcc/config/s390/libgcc-glibc.ver
! aca4617f36baeefe239cf99d461146ba  libgcc/config/s390/linux-unwind.h
! ae1eafc475702bae61d4f1472d436edc  libgcc/config/s390/morestack.S
  c150e28c734710584eba8e77d2ff5105  libgcc/config/s390/t-crtstuff
  35a77f8c50ecf16802e00e647ad94026  libgcc/config/s390/t-linux
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
  a5218871642ae69c55b0e826c41f3798  libgcc/config/s390/t-tpf
! 9dcad22ad12c29b5301535d7743af733  libgcc/config/s390/tpf-unwind.h
! fccc7561b4e5b1911b2dedeb5cf91620  libgcc/config/score/crti.S
! f020fd6cdb3d4a9b9e8eca070332d1ec  libgcc/config/score/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/score/sfp-machine.h
! a5aa71e79e899e4577b49095961d87d8  libgcc/config/sh/crt.h
! 38dca787c096c370ddfe971e47e3c6d7  libgcc/config/sh/crt1.S
! 057a6c744b0dfb642979dbf847f1e125  libgcc/config/sh/crti.S
! 6c25e661303458f78a27868b29fd1044  libgcc/config/sh/crtn.S
! c776a8746ccb31fd453977f4480a88f5  libgcc/config/sh/lib1funcs-4-300.S
! e33cda07de7dff1b904930f906bd9eed  libgcc/config/sh/lib1funcs-Os-4-200.S
! 05677fd4d4713a33d023a70fda8cb5c9  libgcc/config/sh/lib1funcs.S
! 462419a5c7860fcf3a39e00053991b28  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
! af599ee07841dd1a5e1b6f6c4706c51c  libgcc/config/sh/libgcc-glibc.ver
! 24a26eb132bd95142c3b2efef06b77d0  libgcc/config/sh/linux-atomic.c
! 674bf29fcc74b616375b71fc12ca50ce  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
! 5cb128ec4674fb9edfa7d50d30ab6f52  libgcc/config/sh/t-sh
  00d4a30e4ed4a68cd6ec53feb398914b  libgcc/config/sh/t-superh
! fde0487f850e7a9365a2103a426270d1  libgcc/config/sol2/crtp.c
! 08497f1b88e36297729091fdb1715d67  libgcc/config/sol2/crtpg.c
  5e87cfc189f02028b142950527a73c54  libgcc/config/sol2/gmon.c
! b461bdace3e6a8882a9efe076823f79d  libgcc/config/sol2/t-sol2
! a8a9da72d893f29eafc97716059f8c9c  libgcc/config/sparc/crtfastmath.c
! 3e59df61b6b2ea40c39bf3dc06fa2051  libgcc/config/sparc/crti.S
! dd350f4b63241811a1a6a5fd5349e4ed  libgcc/config/sparc/crtn.S
  b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
! 835d8c7ee68e183a711d5a5d3bab224e  libgcc/config/sparc/libgcc-glibc.ver
! e368411c4dd1a99d91abd035e040d188  libgcc/config/sparc/linux-unwind.h
! 16c4cbee11e79d7fc709e852b7050d0c  libgcc/config/sparc/sol2-c1.S
! 2ef470112f5bce76581f22bd74a203bb  libgcc/config/sparc/sol2-unwind.h
  ef153c3f92e3dee09716d833736683eb  libgcc/config/sparc/t-linux
  180e9bc0e471bafa1c561931dc073ebe  libgcc/config/sparc/t-linux64
  dccc96847305efc8c465f1dedc591c23  libgcc/config/sparc/t-softmul
--- 101729,101790 ----
  a0014912b4b08cfbe887d9945460e370  libgcc/config/rs6000/t-ppc64-fp
  bd7ceb31787a37d9cb144c41d41acfb3  libgcc/config/rs6000/t-ppccomm
  89dc5367808582c503f03a34193e467b  libgcc/config/rs6000/t-savresfgpr
! 7b50c6825eb7095ac6a82d42d2aff9d3  libgcc/config/rs6000/t-slibgcc-aix
  1d9dab8390b84ff0de504beefb72ce61  libgcc/config/rs6000/t-stack-rs6000
  04581882e1764bcc2a4240b21f3eaa8a  libgcc/config/rs6000/t-vxworks
! e243a96934eb54cf59977f187530acc9  libgcc/config/rs6000/tramp.S
! b3fa60f5c22cc3aea32fd30df1f7d0b7  libgcc/config/rs6000/trunctfkf2-sw.c
! 9a11c95c3cb91f346b89be706b0b145c  libgcc/config/rx/rx-abi-functions.c
! c9c28d82f238d80b402f3af2a75be4c3  libgcc/config/rx/rx-abi.h
  da7bc70013c60be91cf9f085fed52f1a  libgcc/config/rx/rx-lib.h
! fb672d3f9c7e2d1b9f7e853b05fdef2a  libgcc/config/rx/t-rx
! ce85cbcd56cd0ad8783ca3b8829532d5  libgcc/config/s390/32/_fixdfdi.c
! 336fa5252cff64554ee02972c85dae4f  libgcc/config/s390/32/_fixsfdi.c
! 795e8754543b84dc8e459eb572a13af4  libgcc/config/s390/32/_fixtfdi.c
! 6625e35e9e896e3aa9b6ee07c4b03187  libgcc/config/s390/32/_fixunsdfdi.c
! b658881dbbb51ab942e3c961f44a9e0e  libgcc/config/s390/32/_fixunssfdi.c
! f0c991f36a54a01829345ec2859beae8  libgcc/config/s390/32/_fixunstfdi.c
  6101649604e2b3fdd6179e1aa53066bf  libgcc/config/s390/32/t-floattodi
! 9212f006fce2ac9899f0d0c44cdd77f6  libgcc/config/s390/gthr-tpf.h
! 6dbb145810f54a267e3eda3decb36976  libgcc/config/s390/libgcc-glibc.ver
! 52f61358ebe49327846a5424df157010  libgcc/config/s390/linux-unwind.h
! 64866b29e402f26e1373e73e7cffd1ab  libgcc/config/s390/morestack.S
  c150e28c734710584eba8e77d2ff5105  libgcc/config/s390/t-crtstuff
  35a77f8c50ecf16802e00e647ad94026  libgcc/config/s390/t-linux
  26d353eea9229af01124cc46b2e0cebd  libgcc/config/s390/t-stack-s390
  a5218871642ae69c55b0e826c41f3798  libgcc/config/s390/t-tpf
! 64e8d741713d45dda5697699c2311136  libgcc/config/s390/tpf-unwind.h
! 4a371604a11b3d75b209e3fc43f3d1bf  libgcc/config/score/crti.S
! c370b8a6ea2d57aff8da23cc27eea4d5  libgcc/config/score/crtn.S
  5d570ff5cd40fc6fba8876bdebd59a6b  libgcc/config/score/sfp-machine.h
! 1073505d90f03abb5d1cb291ffe3dca6  libgcc/config/sh/crt.h
! e520d1d9ac01c5af4b8e85f7a82ca6d9  libgcc/config/sh/crt1.S
! 2cd053b3e2ad26d5374522d2bcaf449e  libgcc/config/sh/crti.S
! e137e0c2b84d68c47954356a5b26f0bd  libgcc/config/sh/crtn.S
! 2fef38f5b54df3b4d51d1cd705895f01  libgcc/config/sh/lib1funcs-4-300.S
! b28cb1bca078df1aaff232c48b76b2ed  libgcc/config/sh/lib1funcs-Os-4-200.S
! 44cde15740c0ebf7e237127ff5e3200f  libgcc/config/sh/lib1funcs.S
! 1c74f42cc3a4ffeafc6e137fe2ad51d1  libgcc/config/sh/lib1funcs.h
  68ddef94ef228a2e500c6f84ca5c5f73  libgcc/config/sh/libgcc-excl.ver
! 4a481e6dd6faaa9baa970cb470f554fd  libgcc/config/sh/libgcc-glibc.ver
! 44aeff9360ab876d6d71dc863b34beb0  libgcc/config/sh/linux-atomic.c
! e8f10f33a2b1213bf3c42090c936bcaa  libgcc/config/sh/linux-unwind.h
  d915cb58faa1ad2108733b662853057e  libgcc/config/sh/t-linux
  be1b06de574a22c34d2cf93d2d68a4f1  libgcc/config/sh/t-netbsd
! bcf5345d8e699a0843c63bf9e3d5dbe8  libgcc/config/sh/t-sh
  00d4a30e4ed4a68cd6ec53feb398914b  libgcc/config/sh/t-superh
! 6ca43940a867e709a4bbc934ffd42791  libgcc/config/sol2/crtp.c
! 26353cf4a6bdf6e874d2832efbbeeb3e  libgcc/config/sol2/crtpg.c
  5e87cfc189f02028b142950527a73c54  libgcc/config/sol2/gmon.c
! 7b5576922498ec670f8bdd006eb71460  libgcc/config/sol2/t-sol2
! f98bd84b3a49ca786fa2aa3136577efb  libgcc/config/sparc/crtfastmath.c
! aad11681a8d9b24ce87f5a3c72f406f4  libgcc/config/sparc/crti.S
! 51f7f2fd47475f4f672db5f288e014a4  libgcc/config/sparc/crtn.S
  b2a26791cd6002e4af29a7fa32510b3b  libgcc/config/sparc/lb1spc.S
! 1917d1bef82ea782eebc81b39f81ed57  libgcc/config/sparc/libgcc-glibc.ver
! 9d092d573510a827cb066026420f16f7  libgcc/config/sparc/linux-unwind.h
! e265e0fc274042b86af6bb2431288dac  libgcc/config/sparc/sol2-c1.S
! 9c56135173ca4789bfbd859b2d7a5b40  libgcc/config/sparc/sol2-unwind.h
  ef153c3f92e3dee09716d833736683eb  libgcc/config/sparc/t-linux
  180e9bc0e471bafa1c561931dc073ebe  libgcc/config/sparc/t-linux64
  dccc96847305efc8c465f1dedc591c23  libgcc/config/sparc/t-softmul
*************** efbaa48f2cdd756a3e953deca1bd19c9  libgcc
*** 93820,93831 ****
  6cb0675d48c7276d43aa201bcc2fd60c  libgcc/config/stormy16/ctzhi2.c
  5bc65cdd345cb629c202f3e96a0410dd  libgcc/config/stormy16/divsi3.c
  3e736ac64edb45dddbedbcc751674354  libgcc/config/stormy16/ffshi2.c
! 3a5156ffcad0203c2bc32439ce9a244d  libgcc/config/stormy16/lib2funcs.c
  5620256715f30f1eeeb4bdf614b346a6  libgcc/config/stormy16/lshrsi3.c
  27b26d13ffac636e5de0fccdcb2b4515  libgcc/config/stormy16/modsi3.c
  514e4e067379e1bef2b0baac58a21afc  libgcc/config/stormy16/parityhi2.c
  a071c36e5256dc1e154c400ef3055556  libgcc/config/stormy16/popcounthi2.c
! 9162ab6c0a9ae39a9677799d17f95879  libgcc/config/stormy16/t-stormy16
  ada9a39786da3b2e999f7440a17a1ed7  libgcc/config/stormy16/ucmpsi2.c
  0db895a315f3ea78e45253f9c2c8e7f8  libgcc/config/stormy16/udivmodsi4.c
  6dca6fc4737c716575c264f3934bb6d9  libgcc/config/stormy16/udivsi3.c
--- 101797,101808 ----
  6cb0675d48c7276d43aa201bcc2fd60c  libgcc/config/stormy16/ctzhi2.c
  5bc65cdd345cb629c202f3e96a0410dd  libgcc/config/stormy16/divsi3.c
  3e736ac64edb45dddbedbcc751674354  libgcc/config/stormy16/ffshi2.c
! 9e9249b3fb18e6305e9fc6f0ca27fe2b  libgcc/config/stormy16/lib2funcs.c
  5620256715f30f1eeeb4bdf614b346a6  libgcc/config/stormy16/lshrsi3.c
  27b26d13ffac636e5de0fccdcb2b4515  libgcc/config/stormy16/modsi3.c
  514e4e067379e1bef2b0baac58a21afc  libgcc/config/stormy16/parityhi2.c
  a071c36e5256dc1e154c400ef3055556  libgcc/config/stormy16/popcounthi2.c
! f3947230d4d727b7f27147ff50da99ae  libgcc/config/stormy16/t-stormy16
  ada9a39786da3b2e999f7440a17a1ed7  libgcc/config/stormy16/ucmpsi2.c
  0db895a315f3ea78e45253f9c2c8e7f8  libgcc/config/stormy16/udivmodsi4.c
  6dca6fc4737c716575c264f3934bb6d9  libgcc/config/stormy16/udivsi3.c
*************** e70c5d58ebf79fd5741ec98848df7f6f  libgcc
*** 93844,93869 ****
  a5670d0218ee8d5011882573b6bd224b  libgcc/config/t-gthr-noweak
  925527af5cc046b48ad621a96e896dd3  libgcc/config/t-gthr-vxworks
  37f29328813c5ec6c35276b87457f6b8  libgcc/config/t-gthr-vxworksae
! cb89221d47b4e6af3892aa5ae2110da8  libgcc/config/t-hardfp
! 0e606b523a21aba0a9cb9ff734790327  libgcc/config/t-hardfp-sfdf
  5b1981686da4ef8b1b62a20f10b3e715  libgcc/config/t-libgcc-pic
  5c40347f0b1274c8b5759d0ed9d1ccf8  libgcc/config/t-libunwind
! 07bcc98420956299d1938da6e7c0d6f3  libgcc/config/t-libunwind-elf
  397d06701a9c354f5606477c578c9efb  libgcc/config/t-linux
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
! ce563372d6864335705c0f2a39d1a4c2  libgcc/config/t-slibgcc
! 3ecc4173a1b262e4770c789455b2cfc9  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
! 3b575248c67823cee4cb9617c6e13d38  libgcc/config/t-slibgcc-fuchsia
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
  226b6f10bc32786901a79b070ed13468  libgcc/config/t-slibgcc-gld-nover
  429659ae1ff2531e3ba2fd0c676a320d  libgcc/config/t-slibgcc-hpux
! 0af3d34fdca80b4b4c8c152e99e7a68d  libgcc/config/t-slibgcc-libgcc
  b5d3fe85dff400a82befa6b901b438ec  libgcc/config/t-slibgcc-nolc-override
  bb217aa78bbf6b6a7c7844f73152110d  libgcc/config/t-slibgcc-sld
  ff76526856565673089b174b185fab45  libgcc/config/t-slibgcc-vms
! 63336afbd8b8a4bf1ace7a5acbb2496c  libgcc/config/t-softfp
  1ec9425eada0171d381f5f9b47b613a9  libgcc/config/t-softfp-compat
  72f41afb67b3c3c67809819763244452  libgcc/config/t-softfp-excl
  14ecf481060b3893ba43c6e09ff40eab  libgcc/config/t-softfp-sfdf
--- 101821,101846 ----
  a5670d0218ee8d5011882573b6bd224b  libgcc/config/t-gthr-noweak
  925527af5cc046b48ad621a96e896dd3  libgcc/config/t-gthr-vxworks
  37f29328813c5ec6c35276b87457f6b8  libgcc/config/t-gthr-vxworksae
! ccfc74ee42f9161add5f4ab8a29dc6df  libgcc/config/t-hardfp
! c5fbd425396a599df6767d649649a979  libgcc/config/t-hardfp-sfdf
  5b1981686da4ef8b1b62a20f10b3e715  libgcc/config/t-libgcc-pic
  5c40347f0b1274c8b5759d0ed9d1ccf8  libgcc/config/t-libunwind
! 7ae7d8abbb8d98673fba0cd5c877a4b8  libgcc/config/t-libunwind-elf
  397d06701a9c354f5606477c578c9efb  libgcc/config/t-linux
  eb3161bf886026cdcf8a78cea885fdd2  libgcc/config/t-openbsd-thread
  474d97884b393e08b0ce416dd09493bc  libgcc/config/t-rtems
! 107b56d549dbc275f8a4f3c2766f1dfd  libgcc/config/t-slibgcc
! 588d81383c65cf44cee60a4c7ff77fcb  libgcc/config/t-slibgcc-darwin
  57f27c60e5d8c572d2645821ec5935e0  libgcc/config/t-slibgcc-elf-ver
! a195b269bf31c04736e3bf051ac6211b  libgcc/config/t-slibgcc-fuchsia
  57e4154cb283fd7d9f323f5d85d534d9  libgcc/config/t-slibgcc-gld
  226b6f10bc32786901a79b070ed13468  libgcc/config/t-slibgcc-gld-nover
  429659ae1ff2531e3ba2fd0c676a320d  libgcc/config/t-slibgcc-hpux
! 5b664b89659678eef03b350c7b33f0fe  libgcc/config/t-slibgcc-libgcc
  b5d3fe85dff400a82befa6b901b438ec  libgcc/config/t-slibgcc-nolc-override
  bb217aa78bbf6b6a7c7844f73152110d  libgcc/config/t-slibgcc-sld
  ff76526856565673089b174b185fab45  libgcc/config/t-slibgcc-vms
! d042e7bb5a033e451a82095499a4fd79  libgcc/config/t-softfp
  1ec9425eada0171d381f5f9b47b613a9  libgcc/config/t-softfp-compat
  72f41afb67b3c3c67809819763244452  libgcc/config/t-softfp-excl
  14ecf481060b3893ba43c6e09ff40eab  libgcc/config/t-softfp-sfdf
*************** aa5fd95cba7a4d8329be007695e43d15  libgcc
*** 93873,94101 ****
  685f35f0db36731a13637c087658e7a9  libgcc/config/t-tls
  65e3c91d5593e159fdbf46e423144f41  libgcc/config/t-vxcrtstuff
  f630928b0fcf5102209d333a5d7acf85  libgcc/config/t-vxcrtstuffS
! 21fe8a733a3388b5cd715330c888f717  libgcc/config/t-vxworks
  5e8b7b7f8448bc376425f6f16054d9ff  libgcc/config/t-vxworksae
! 0e57ca5d22e3d1095f2c0cfebd41a073  libgcc/config/tilegx/sfp-machine.h
! 77fba27019d1cad2a0737fada3162555  libgcc/config/tilegx/sfp-machine32.h
! 6db84064a9c59eacc33fca015d1b35a3  libgcc/config/tilegx/sfp-machine64.h
! 16c22b80e53f817334a19c0b48ad554d  libgcc/config/tilegx/t-crtstuff
! 5e2260f13769a960c8e1f24b0c9847e4  libgcc/config/tilegx/t-softfp
! 94fecaba2fa3fca31d038d5739e45e51  libgcc/config/tilegx/t-tilegx
! 235ba33410709fb7a397ceabdefbf346  libgcc/config/tilepro/atomic.c
! 1d3080716c6256cd20a2f61d37b055f4  libgcc/config/tilepro/atomic.h
! 78d75d65a67ecc9252bf01616f48ac2a  libgcc/config/tilepro/linux-unwind.h
! c319c87cee2bc57b33cd850fb03731b5  libgcc/config/tilepro/sfp-machine.h
! eb18ee6c17014ec2e350afac4d54f888  libgcc/config/tilepro/softdivide.c
! dce24eff5008c67846c2e05b94c9f3d2  libgcc/config/tilepro/softmpy.S
! 4927dec2e58bebc9fec4d0405177eaea  libgcc/config/tilepro/t-crtstuff
! a6ca3e93e70a2a92d62823faefdc072f  libgcc/config/tilepro/t-tilepro
! 1951b039b3091e2901940b1317ee4b5a  libgcc/config/unwind-dw2-fde-darwin.c
! 8f036c8c1e0156776572d45e8e9793a3  libgcc/config/v850/lib1funcs.S
  015fdb6e6a2a23f553dc5105691f7a6a  libgcc/config/v850/t-v850
! 5920e2d170d61a184ed7fa9b7aecd515  libgcc/config/vax/lib1funcs.S
  c668e63cf08f878538a0db39860696dc  libgcc/config/vax/t-linux
! efa460d2e74a5ee662a5f1739403a9c1  libgcc/config/visium/crti.S
! 96196bd6fc5108d01a23bf0f7ba3d7f0  libgcc/config/visium/crtn.S
! f86c1945a6b944ecf57097a4f741c3df  libgcc/config/visium/divdi3.c
! a1eac57f5108c2bcad8b3a1d9137b86b  libgcc/config/visium/lib2funcs.c
! f17294a89994fe5e1b6722431d74bd11  libgcc/config/visium/memcpy.c
! ab9cf4e191ac2c047f7e0fa7aadbcc9f  libgcc/config/visium/memcpy.h
! ca793993db80af5034101a8d70be0aef  libgcc/config/visium/memset.c
! a799a19c63029b693d120566340b2c20  libgcc/config/visium/memset.h
! f8dfcb12df06c32e583d2a7b1ddcc5a3  libgcc/config/visium/moddi3.c
! 080014b86249280783abd8f469127474  libgcc/config/visium/set_trampoline_parity.c
! fb7010079cc952e9ba76c5e17d1dc6b9  libgcc/config/visium/t-visium
! d77c2165afaa74e10aad7ec998372377  libgcc/config/visium/udivdi3.c
! 4f513291d5b3c8ec2574ce7292f2d078  libgcc/config/visium/udivmoddi4.c
! 297c2415235a0798ca3499c1effb23ea  libgcc/config/visium/umoddi3.c
  9383115b20d4126cf07541b5d7bf6c2a  libgcc/config/vms/t-vms
! 901aac1155f6b87311ab09ab38a63a60  libgcc/config/vms/vms-ucrt0.c
! 68bfc7d026f54dd353684b86578cc3df  libgcc/config/vxcrtstuff.c
! 77f2a3aefdb30c2d801f1d95a5782faf  libgcc/config/xtensa/crti.S
! b477103c7595ef519bda4023c00e3018  libgcc/config/xtensa/crtn.S
! 915ed928337434aee81b1afed831af0e  libgcc/config/xtensa/ieee754-df.S
! 2a541e359721526f5707c18367f9d1ea  libgcc/config/xtensa/ieee754-sf.S
! 6c14053e7ccb111009257816a74b849f  libgcc/config/xtensa/lib1funcs.S
! 7ba5f1ec65b79f974fb4bf0705e7d5f0  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! 2bf06385d57acc865247defa034b9300  libgcc/config/xtensa/linux-unwind.h
  d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
  4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
  ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
! f44d679473da1cd24c9d82c368fc08b5  libgcc/config/xtensa/t-xtensa
! daee4113c01e3077b4faac7273b62eb6  libgcc/config/xtensa/unwind-dw2-xtensa.c
! a4dd22d7dff18395c3e250f8bbf40b6e  libgcc/config/xtensa/unwind-dw2-xtensa.h
! 662cdd1a425fde345c54351cdeedf139  libgcc/configure
  3bae93cb63568d459e477ed3d722064c  libgcc/configure.ac
! 98fe1b4ad54f59d65ff8ffdf3be62d6b  libgcc/crtstuff.c
! 3fd873af7453650f7ef507a9429ff532  libgcc/dfp-bit.c
! c4b5cfc93156a10134d7c07a3573b1d7  libgcc/dfp-bit.h
! cfb5a0e858e3759359f348663b6bd4c8  libgcc/divmod.c
! d7d4f4b8fb5c131f6026a04654098ffb  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
! defe4c63f45826eb2b10baecb83fc80e  libgcc/enable-execute-stack-mprotect.c
! 17e03bb5413491e6ce67e6c813db626e  libgcc/find-symver.awk
! e38956768d4ed941e45c551d6830f32e  libgcc/fixed-bit.c
! 486c2b706fca07d007352145333bd26d  libgcc/fixed-bit.h
  064f7220d5fd5127bd136e8e2a9d62e7  libgcc/fixed-obj.mk
  651caf13863ec6f313b467d1d8531cd4  libgcc/floatunsidf.c
  6ca2d25d30233e6c7c94aa94c266cb72  libgcc/floatunsisf.c
  faedd2248586a9d50451e03d502eb147  libgcc/floatunsitf.c
  56fa552ac2ef58f6b1563d9c11fd3548  libgcc/floatunsixf.c
! 1d9efc801e8d908f5a797dab6d8d8346  libgcc/fp-bit.c
! d199f3d425a69f12a6cddcb8acda4906  libgcc/fp-bit.h
! 23df832ca58372bb8af27263d83108c5  libgcc/gbl-ctors.h
! 6f21dc371d8c219325a6c4f45f071d96  libgcc/gcov.h
  c7b70dcc1f2024624fcba54a60ffcdda  libgcc/gen-fixed.sh
! 08df34a3b8e19b6ca266b90c9a7bf045  libgcc/generic-morestack-thread.c
! b81b2ae15eb3c481604b300be1595348  libgcc/generic-morestack.c
! a8b1b9413bf70e85cf09a483b915b81b  libgcc/generic-morestack.h
  971ff834e82a1a1964a019bfdac21c5c  libgcc/gstdint.h
! c9861fdee53779c35e456402fbb9998f  libgcc/gthr-posix.h
! 3ad65363a0d80a0c62ce1da572b4cf9d  libgcc/gthr-single.h
! e440c8e51ae0c86428101fa1a886307d  libgcc/gthr.h
! 1cc75dea68f2a28c5a5c95eb3e95ab07  libgcc/libgcc-std.ver.in
! b23d2fee891e9d5aa667c7794af2d233  libgcc/libgcc2.c
! 57d9c8b98de0397e7f978d562bd47df0  libgcc/libgcc2.h
! e8c9e4de72e89c1648710ef715da1016  libgcc/libgcov-driver-system.c
! 879ef07f4d304b55301b1adef909ac99  libgcc/libgcov-driver.c
! 7eddbeb4ae87295429a186310a5f9ab0  libgcc/libgcov-interface.c
! cb929a351b13861d073881f931ebbcbf  libgcc/libgcov-merge.c
! a3fef9ce25462eb11337bd18339820c9  libgcc/libgcov-profiler.c
! 5de189e0cf2ba7cadaf7b96552008ea9  libgcc/libgcov-util.c
! 5d6cbc314f17cada94d47b86003cf085  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
  135a2882c25ab6f90748b020a6cc2f02  libgcc/memmove.c
  eb54d3066646204ecc21ba5ecb67d572  libgcc/memset.c
! 703080278b6e29c86efe920210d47a44  libgcc/mkheader.sh
! 0fb9ada41e6ede6214b3d4b5f8a042f3  libgcc/mkmap-flat.awk
! 48e5da1bce1d8a96cb29040a53fc5e4d  libgcc/mkmap-symver.awk
! 1a39efc1442b5e7bf519fd6866a3b551  libgcc/offloadstuff.c
  0503a6ec2dc990ec5a02ea1d5ece9082  libgcc/shared-object.mk
  4320671e90e14eb5b9f91f106f923072  libgcc/siditi-object.mk
  5476b2a3295a19a0fb558d1db1aa17ae  libgcc/soft-fp/README
! 77e4d8fb605e41b192bf71ed70083682  libgcc/soft-fp/adddf3.c
! 7ffd99673be4776717f9d48459ed10be  libgcc/soft-fp/addsf3.c
! 7bdc6a20beb71dc87b74436dc578aebb  libgcc/soft-fp/addtf3.c
! 88ea7c7ca63c0f9bd2306a4ba1eebef6  libgcc/soft-fp/divdf3.c
! 1c0d156c17a1358117e5a415e3254329  libgcc/soft-fp/divsf3.c
! 3bdf685c9312248dd87d9bc4ae84edcc  libgcc/soft-fp/divtf3.c
! 99b5880280c6bbae529d95e9a9082464  libgcc/soft-fp/double.h
! c89a59a33ea71d2dc03774504a13aaff  libgcc/soft-fp/eqdf2.c
! 7fe515fcc84ad92db36a147d6dcc7b59  libgcc/soft-fp/eqhf2.c
! 2e4af363c73da9184e60015211cd1c7b  libgcc/soft-fp/eqsf2.c
! 2b3072ff6e13507af147a3cef6aa2b12  libgcc/soft-fp/eqtf2.c
! a81dee7cc59ebf10dcbef80f3e66508c  libgcc/soft-fp/extenddftf2.c
! 3f6d8f9fa7244adcb4d8a441e110101e  libgcc/soft-fp/extended.h
! b54c0923be0dd5d9420879166c93930d  libgcc/soft-fp/extendhfdf2.c
! 196dd58340a698697e696abdd80322ff  libgcc/soft-fp/extendhfsf2.c
! a7d53ae8206852c1d906971d7147b342  libgcc/soft-fp/extendhftf2.c
! dd688570d20d35f1598e0ba32440823e  libgcc/soft-fp/extendhfxf2.c
! cfb4ff09de7fa489ed37b0212b5b2df9  libgcc/soft-fp/extendsfdf2.c
! 7ba7d9c5edaf0cd9ff762291ef1015a0  libgcc/soft-fp/extendsftf2.c
! 133e513380ac191d62c8307921c7edc2  libgcc/soft-fp/extendxftf2.c
! a76e02a4b7a4f544ce90b8e4b6543a98  libgcc/soft-fp/fixdfdi.c
! bd710a359e942229a8e0ffc8dbd9dccf  libgcc/soft-fp/fixdfsi.c
! 92c209fa47f0a97ba7eb97448cc225e1  libgcc/soft-fp/fixdfti.c
! a1bfa00d17e89e8cf2af0cacf4461375  libgcc/soft-fp/fixhfti.c
! 63c89da3c3ee31e97e66d4918df302a5  libgcc/soft-fp/fixsfdi.c
! 2226778555d6761446e2b80318be48c5  libgcc/soft-fp/fixsfsi.c
! 30f5308c47c112af344063edaa32c361  libgcc/soft-fp/fixsfti.c
! a6e32724135b2047eea2b777e351f579  libgcc/soft-fp/fixtfdi.c
! 547916b40412e9584e33ca1301aa14e6  libgcc/soft-fp/fixtfsi.c
! 2c4bb3a70bb0b35e4ec33f13f4706edd  libgcc/soft-fp/fixtfti.c
! f1d94365a8c51a606cacc7c2f0a29b98  libgcc/soft-fp/fixunsdfdi.c
! 51eeb99a41fcb62aae00b588811aa2cd  libgcc/soft-fp/fixunsdfsi.c
! 0187f36e2f9d087a286fe31bdfe3e092  libgcc/soft-fp/fixunsdfti.c
! da73b62e48c42270e76161596364dde4  libgcc/soft-fp/fixunshfti.c
! 04384140d4ce1b7c04220e45e7484e6f  libgcc/soft-fp/fixunssfdi.c
! a98cd8272dac05c3a327deebc670112c  libgcc/soft-fp/fixunssfsi.c
! 3ff2c4e83cb41d54b87a46d108ffa991  libgcc/soft-fp/fixunssfti.c
! 60eb4fbd28ff8b6a80c812cc6f7e32d5  libgcc/soft-fp/fixunstfdi.c
! 7b2a880fc434d11ae6272248fdde44af  libgcc/soft-fp/fixunstfsi.c
! 9c8997a4e939c81771de9ab007e229b5  libgcc/soft-fp/fixunstfti.c
! 204a267e0325eff4295982bdd7e30dae  libgcc/soft-fp/floatdidf.c
! fddb11d8c9c979f94d72c58ce137dedf  libgcc/soft-fp/floatdisf.c
! e9d98d149ccccd8ec96a85b04407f4d0  libgcc/soft-fp/floatditf.c
! 800e65b82b3542eb8bf58c64821754b0  libgcc/soft-fp/floatsidf.c
! c3b2f9856cea982ca671ef7158a17a80  libgcc/soft-fp/floatsisf.c
! a5d652d772c3c82a3002dc4fe59ff487  libgcc/soft-fp/floatsitf.c
! 8ea8c51a2b6010cf1baa1313e32882bd  libgcc/soft-fp/floattidf.c
! 7534bed43d5b7c3c22ae639ef4da1f85  libgcc/soft-fp/floattihf.c
! d136f013d6cee7a0946a20ca89f3a432  libgcc/soft-fp/floattisf.c
! 25ec736e2077b9a93f8a402b7862b83b  libgcc/soft-fp/floattitf.c
! 956e04991b7a94e77840c97979d2d9f7  libgcc/soft-fp/floatundidf.c
! 3ddf249a089998b423d1cfde43bb9b30  libgcc/soft-fp/floatundisf.c
! c353ea9fc32f4e3013e9c6de159ccced  libgcc/soft-fp/floatunditf.c
! 9b1b9a8b7be4ea2355f2edcde52e368a  libgcc/soft-fp/floatunsidf.c
! 3d6c80588bd126df4c6cb782e3cefc04  libgcc/soft-fp/floatunsisf.c
! d7612ae5d9d0584f12987b9766f27ca9  libgcc/soft-fp/floatunsitf.c
! 970bab8fada2ad7c935b8b08b8014dd5  libgcc/soft-fp/floatuntidf.c
! fe61aa9e1a5e11745bb0cd4ff12702e0  libgcc/soft-fp/floatuntihf.c
! 121ba9757d46cd51b990a3eb84d38d0b  libgcc/soft-fp/floatuntisf.c
! 2f432e912a4280c1ec5e20910b1e47ff  libgcc/soft-fp/floatuntitf.c
! 6a280ff772a39d7102e84aa641a4b521  libgcc/soft-fp/gedf2.c
! a5f48e6a07058fb4dbdc3dd2861ccac7  libgcc/soft-fp/gesf2.c
! 92d7633a15363b5320b918074e56f609  libgcc/soft-fp/getf2.c
! fcf408739e31b8661faa88d088668fc8  libgcc/soft-fp/half.h
! 8ceccbb9dbbe3ee310142d51648844d7  libgcc/soft-fp/ledf2.c
! 83a34b7384bc9c59f3e5071bda25c739  libgcc/soft-fp/lesf2.c
! dfea4e9ade55f19364dd09508b0bcd27  libgcc/soft-fp/letf2.c
! 83910332c3990ae5b6bece5ff914fa86  libgcc/soft-fp/muldf3.c
! a0a1b71014a3e563cbdfaca9e72d3249  libgcc/soft-fp/mulsf3.c
! 2aa91b84abc0ea720c09dce3960c39b0  libgcc/soft-fp/multf3.c
! 15a0048e64df1d0aa2668ac4c8bf12eb  libgcc/soft-fp/negdf2.c
! 023439913711e552c2a3fea76f0e73cd  libgcc/soft-fp/negsf2.c
! c9e58fe7aae6942c9b10e49fb560bf66  libgcc/soft-fp/negtf2.c
! ae7a4d9ec236892b7c5b1018c6459c96  libgcc/soft-fp/op-1.h
! dcfdb05598a222b6a4af8283ab210109  libgcc/soft-fp/op-2.h
! 9b9bd0ae31d9969f6913a5579a51de07  libgcc/soft-fp/op-4.h
! 847f5cd35fcf4f9f404cfab7a64689fd  libgcc/soft-fp/op-8.h
! 27c04e7c4efeb0eb0045f101f5f14e74  libgcc/soft-fp/op-common.h
! eefc458bbc6eb87cb261595ce2becd57  libgcc/soft-fp/quad.h
! 9bd73ef55cb3a64cc37aa40339d0acf0  libgcc/soft-fp/single.h
! 5338f6adcc174a6b2eb69c59ee94b3da  libgcc/soft-fp/soft-fp.h
! 2f0da444d49fd7ba41e94a3bbafa7750  libgcc/soft-fp/subdf3.c
! dbad13d261c3dd1a91ea9ef90490b47d  libgcc/soft-fp/subsf3.c
! 051c74fb147e7e40022cfce5eca2315e  libgcc/soft-fp/subtf3.c
! f026f7a9fcb54b5b1b65b83cddcd4987  libgcc/soft-fp/truncdfhf2.c
! ce0cf0abbaa81ebaaf7521aa85c5d648  libgcc/soft-fp/truncdfsf2.c
! 3a19993346e5428e3be8be868563002b  libgcc/soft-fp/truncsfhf2.c
! 73b0453141e14f3e7db8cfa75cf3679f  libgcc/soft-fp/trunctfdf2.c
! ea6dcd1b477b905faa40a629a520a1d9  libgcc/soft-fp/trunctfhf2.c
! 6ffcd093e8da6dee1d35debf844361f5  libgcc/soft-fp/trunctfsf2.c
! 29af39926cbff6a41b01c02d82653fdb  libgcc/soft-fp/trunctfxf2.c
! 9200bbbf07a7c04976ec6dfe04e96a8a  libgcc/soft-fp/truncxfhf2.c
! 8a59a7e89d7a7d018966dc4fef57b87b  libgcc/soft-fp/unorddf2.c
! 013277b0e2d3150d848b9b14347df5ac  libgcc/soft-fp/unordsf2.c
! 4eb9235213d4c62a2fe0cf67c85ee242  libgcc/soft-fp/unordtf2.c
  8c64184cccab0ab994c69899c63f3260  libgcc/static-object.mk
! 99790f33f263e2570c50fd96e9b3e390  libgcc/sync.c
! 7be141a3e63f191c188cac7c8c5ba2df  libgcc/udivhi3.c
! ad0e5b6dc4da0e2a75058348063be38f  libgcc/udivmod.c
! 6257669222979992884ee10cdef945bc  libgcc/udivmodhi4.c
! dbad32184dec6995045433b08b379946  libgcc/udivmodsi4.c
! 13983b95fb20f42d632265336e81d413  libgcc/unwind-arm-common.inc
! af1786fe053390d764bd79e2c261822c  libgcc/unwind-c.c
! 3dd3bcd264e7c8c79212741acb2d09d2  libgcc/unwind-compat.c
! 507a92f167b02850f1358d2fdc39f764  libgcc/unwind-compat.h
! db6cd6c24e7e86e47264ca84422d02ef  libgcc/unwind-dw2-fde-compat.c
! 3b55297a45bdbbfd4cfcde725037bafc  libgcc/unwind-dw2-fde-dip.c
! 1b26d11b3ed1309ef9b8df4403b6de06  libgcc/unwind-dw2-fde.c
! 6669cec12a47ada53529ee9efa55ca01  libgcc/unwind-dw2-fde.h
! 7e6c41fa4bb6abdb62f1df9985cba7a9  libgcc/unwind-dw2.c
! 697df1807167f7e5d79b14c5f2973df2  libgcc/unwind-dw2.h
! 897af7f4696f2436715266bb22867766  libgcc/unwind-generic.h
! 53eef25a9165187fad7ba70504b64a46  libgcc/unwind-pe.h
! 76015bfd96a1a1d40809dc383044efc8  libgcc/unwind-seh.c
! b7b81f19c0545f1b28689a7689f60c6a  libgcc/unwind-sjlj.c
! e0219457dfae5e317f3870c978cf2334  libgcc/unwind.inc
! f25d8ab44bd78e25e4101be2782fdc8a  libgcc/vtv_end.c
! 86516254f518009cebca3f82cd990254  libgcc/vtv_end_preinit.c
! 351c41e966ff8e80444fb57c161e7957  libgcc/vtv_start.c
! 0ae6a250e17c98a856aae28baba71d88  libgcc/vtv_start_preinit.c
! e211c4fb8c1ca7b3ff7e2e3383f2100f  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
--- 101850,102087 ----
  685f35f0db36731a13637c087658e7a9  libgcc/config/t-tls
  65e3c91d5593e159fdbf46e423144f41  libgcc/config/t-vxcrtstuff
  f630928b0fcf5102209d333a5d7acf85  libgcc/config/t-vxcrtstuffS
! 68f88180382d2f50fb3d44f917509325  libgcc/config/t-vxworks
  5e8b7b7f8448bc376425f6f16054d9ff  libgcc/config/t-vxworksae
! e2f298734c5fb6ad4aa0c375ad974392  libgcc/config/unwind-dw2-fde-darwin.c
! 949d3d89b8d289bce8bc3555c7670e8c  libgcc/config/v850/lib1funcs.S
  015fdb6e6a2a23f553dc5105691f7a6a  libgcc/config/v850/t-v850
! 891268bfe11e0a0f2f38ba005e7191db  libgcc/config/vax/lib1funcs.S
  c668e63cf08f878538a0db39860696dc  libgcc/config/vax/t-linux
! d4e7149793625aadf613e7a938f3c111  libgcc/config/visium/crti.S
! 21969408d70b7bc0aa0bce73ff1a1b87  libgcc/config/visium/crtn.S
! 0f8dc6e8411a9594b134bc4f63e62500  libgcc/config/visium/divdi3.c
! db4dcf7ece651993bd63eb9977718306  libgcc/config/visium/lib2funcs.c
! 60d63b6836f7504ec015d577bacdfabb  libgcc/config/visium/memcpy.c
! db346e1043892f8426ccef77b91d88f0  libgcc/config/visium/memcpy.h
! a89d9fc964e821352a978e3da926645c  libgcc/config/visium/memset.c
! fcd75a8e0216b2b3c029717399a40941  libgcc/config/visium/memset.h
! 77950bf4c8c4614d3bfde37e275cd045  libgcc/config/visium/moddi3.c
! b137e851d209d79d7de24e8428d8d335  libgcc/config/visium/set_trampoline_parity.c
! 3ebc238c20d77977b8ec2bbf18197c2d  libgcc/config/visium/t-visium
! cf6cd23cc5da2a4ecbf67ccc21acb18f  libgcc/config/visium/udivdi3.c
! 3fc0feaadc05c7a34b09e6604c2f700b  libgcc/config/visium/udivmoddi4.c
! 83b27f6aed145ebbb6f526e68c5fe798  libgcc/config/visium/umoddi3.c
  9383115b20d4126cf07541b5d7bf6c2a  libgcc/config/vms/t-vms
! 839d45a2947520e58bd35a8a0b023419  libgcc/config/vms/vms-ucrt0.c
! c8736f8e5c25d07733d84079727197a4  libgcc/config/vxcrtstuff.c
! 3fc8deae2c70d09df3c482595121df24  libgcc/config/xtensa/crti.S
! ecda8c76ee6702b93afad201ef027a60  libgcc/config/xtensa/crtn.S
! de14016c72b22b286e0db26d5014ee9a  libgcc/config/xtensa/ieee754-df.S
! f001d3dd478bfc7630dce0f232b63172  libgcc/config/xtensa/ieee754-sf.S
! eb99b805e4dfe0bb696cf7fdc3f67cb8  libgcc/config/xtensa/lib1funcs.S
! 014fb7ba878eb70eaa6fe5724289bdf3  libgcc/config/xtensa/lib2funcs.S
  8074695f5eea7b961c59ee9608973dac  libgcc/config/xtensa/libgcc-glibc.ver
! cbd896c860b78a27c7aa6851b38e399a  libgcc/config/xtensa/linux-unwind.h
  d437dc5394da39dbe1ece64723e90a76  libgcc/config/xtensa/t-elf
  4f2c91d0f57a675cc91b287ce2ad76aa  libgcc/config/xtensa/t-linux
  ce614fa17d52c2d7121d7e2d6f80b02d  libgcc/config/xtensa/t-windowed
! 7d4f3d6a7f62649375059b5a7546195d  libgcc/config/xtensa/t-xtensa
! 4de11414b5e5c8dd05bf4d6a490ff0d6  libgcc/config/xtensa/unwind-dw2-xtensa.c
! eaf87d0dcafd4c719af17db5a4a85d3c  libgcc/config/xtensa/unwind-dw2-xtensa.h
! 3710ff24b7eb2b1d0224baa62702cd16  libgcc/config/xtensa/xtensa-config-builtin.h
! cb10902f1b81649a965ffaaf6cc9a6d5  libgcc/configure
  3bae93cb63568d459e477ed3d722064c  libgcc/configure.ac
! 3795eb4a1c52b73d220fc198e7cf2efb  libgcc/crtstuff.c
! 930e0cad0a904c049b19aa627c0432c4  libgcc/dfp-bit.c
! ece6e500d1649ab181b0ec473729606c  libgcc/dfp-bit.h
! aec48b4401b817f38e41c2c3098640dc  libgcc/divmod.c
! 3c3350ec68ff358392497d0f59749349  libgcc/emutls.c
  aa52a8f7cb881c00c125ed5fd04ed4df  libgcc/enable-execute-stack-empty.c
! fd70967879b80f603429e4fcb7b8b20a  libgcc/enable-execute-stack-mprotect.c
! ec2488650de274404f5101fef518b4a2  libgcc/find-symver.awk
! 993944e72e33889be6dd72e4e2e49421  libgcc/fixed-bit.c
! b7c9c0302236edaace5cdb166a590948  libgcc/fixed-bit.h
  064f7220d5fd5127bd136e8e2a9d62e7  libgcc/fixed-obj.mk
  651caf13863ec6f313b467d1d8531cd4  libgcc/floatunsidf.c
  6ca2d25d30233e6c7c94aa94c266cb72  libgcc/floatunsisf.c
  faedd2248586a9d50451e03d502eb147  libgcc/floatunsitf.c
  56fa552ac2ef58f6b1563d9c11fd3548  libgcc/floatunsixf.c
! 4f1b4e6882b0ee8fba38045fe22c448e  libgcc/fp-bit.c
! 1df53d7193a9dba1288db004ce5bbed8  libgcc/fp-bit.h
! b2a98b7c0da0b657c6a3fa9ac438a096  libgcc/gbl-ctors.h
! a32d4b5811e6c10386bcc098cbf1ccf0  libgcc/gcov.h
  c7b70dcc1f2024624fcba54a60ffcdda  libgcc/gen-fixed.sh
! 3c577d87749133f643cfad85f7544d7e  libgcc/generic-morestack-thread.c
! 467c69799d553c3149cbde0177a427b1  libgcc/generic-morestack.c
! a27b46552a94b091d0d5121e236765f8  libgcc/generic-morestack.h
  971ff834e82a1a1964a019bfdac21c5c  libgcc/gstdint.h
! 9ef63963222fef0d60eab624892985cd  libgcc/gthr-posix.h
! a32c735f5f63c35fd63bc899e1847370  libgcc/gthr-single.h
! a88d38bc6b447dccea893a26dddafd48  libgcc/gthr.h
! cbb9767191755e181dbee1457933c195  libgcc/libgcc-std.ver.in
! 0085747992a2cc30adf303d37eb76dfd  libgcc/libgcc2.c
! 0bef4421547a2533ebc8d44c42b11e1b  libgcc/libgcc2.h
! ce4cbd69dafd08260aa676dcb87d18bf  libgcc/libgcov-driver-system.c
! 346c94f397dc4cd9091f7bdb95711bbb  libgcc/libgcov-driver.c
! 1adc7c2fe8e79e5405d59aff8efe9862  libgcc/libgcov-interface.c
! 309dbaeb6025b31a92ff8fb69caef2cd  libgcc/libgcov-merge.c
! 26d6e3e3a0beff15029b221b641f338c  libgcc/libgcov-profiler.c
! 2c24f36a9d7699bad2ee614078a2a7ee  libgcc/libgcov-util.c
! 09750413beba87af843c82e6b93a83df  libgcc/libgcov.h
  06287f034722081687f831dcb61e986c  libgcc/memcmp.c
  dad9e98504e8f79e6e97aa29c6b49d96  libgcc/memcpy.c
  135a2882c25ab6f90748b020a6cc2f02  libgcc/memmove.c
  eb54d3066646204ecc21ba5ecb67d572  libgcc/memset.c
! c5770d27978e13d86d9af2a0c5ac9e73  libgcc/mkheader.sh
! ff8e3a5e79e2dfac89fab0161daa9e44  libgcc/mkmap-flat.awk
! 1f0bfb8eb28fecd3ad006702d67fa474  libgcc/mkmap-symver.awk
! 7f1e4123a58057776972095d45828c72  libgcc/offloadstuff.c
  0503a6ec2dc990ec5a02ea1d5ece9082  libgcc/shared-object.mk
  4320671e90e14eb5b9f91f106f923072  libgcc/siditi-object.mk
  5476b2a3295a19a0fb558d1db1aa17ae  libgcc/soft-fp/README
! b501abcd327c6d2c95f76d40d4266a4e  libgcc/soft-fp/adddf3.c
! 305a99dae8d1353c9137371842d1a94a  libgcc/soft-fp/addsf3.c
! fe381f26f76f7f8998160bba0429aa49  libgcc/soft-fp/addtf3.c
! 1b314340a7e13d053c2234216b9b01fe  libgcc/soft-fp/brain.h
! 2386952f10f05ef43a443fcc7227885f  libgcc/soft-fp/divdf3.c
! 7e9a32e3cc975b60a0786b9fe2e58ada  libgcc/soft-fp/divsf3.c
! b3bcf6e46808a82da8f5f719348782e2  libgcc/soft-fp/divtf3.c
! e8570e42e8325d43d5274d783924051e  libgcc/soft-fp/double.h
! ca6c331345edfc25aae189fb6c1edaac  libgcc/soft-fp/eqdf2.c
! 483362da60b8b6c42e32914342132e91  libgcc/soft-fp/eqhf2.c
! 69e9896c7fc6be4f95651218d8045d5b  libgcc/soft-fp/eqsf2.c
! 3a0d153bca6d9b1eea8abc70694efa05  libgcc/soft-fp/eqtf2.c
! c6421f23eca212c4a1fa1953d8199b81  libgcc/soft-fp/extendbfsf2.c
! a226000609aa0ba2c91a5c1514ddc19c  libgcc/soft-fp/extenddftf2.c
! 56c95e8547698ec71e18f77f85d3c657  libgcc/soft-fp/extended.h
! e6c08107b59aaca5e9df9f21405155f4  libgcc/soft-fp/extendhfdf2.c
! efe1642746afadab822e08839d276498  libgcc/soft-fp/extendhfsf2.c
! 3928552c19cac2858dabb6373729e0a5  libgcc/soft-fp/extendhftf2.c
! 939d3c9ebb611d71a2140dd54c8955e8  libgcc/soft-fp/extendhfxf2.c
! 66340c3328535b5f6e68ddc9db4efb09  libgcc/soft-fp/extendsfdf2.c
! 78f440be9e0f50b1f4162f5732b660e1  libgcc/soft-fp/extendsftf2.c
! 8374c48f9513f1ff2bed38a1563c9ade  libgcc/soft-fp/extendxftf2.c
! 1d66e1f4ca287eb6fccf875f0db91236  libgcc/soft-fp/fixdfdi.c
! e0442ba7e2c2f461c4a660a661c279d5  libgcc/soft-fp/fixdfsi.c
! 4d8f2a6a343e208b7d2f8ff14a60262d  libgcc/soft-fp/fixdfti.c
! be2495fa4c655c1d61addf11f714dd26  libgcc/soft-fp/fixhfdi.c
! 4884866175e9676bd6aa1210b20c5773  libgcc/soft-fp/fixhfsi.c
! f35c3d1edd76cb9ba029a92a1405338a  libgcc/soft-fp/fixhfti.c
! 440f8346f68db4efb08b00fe172edb50  libgcc/soft-fp/fixsfdi.c
! 767943fe3923c0a1766d923e07c8c334  libgcc/soft-fp/fixsfsi.c
! 244dace544760e31a58cb24edda75ab7  libgcc/soft-fp/fixsfti.c
! 405551d1a6fcc6aece0a6e16e5e244f9  libgcc/soft-fp/fixtfdi.c
! 6ab5656d92048e6656e2fe0de73e4c44  libgcc/soft-fp/fixtfsi.c
! 7082436c92df5b85ae94b9495ad464c1  libgcc/soft-fp/fixtfti.c
! 57898d3ff8cc90376db235567c29e948  libgcc/soft-fp/fixunsdfdi.c
! ada53bc7756387a8502e2507720b035f  libgcc/soft-fp/fixunsdfsi.c
! 3a8f37c1361812154996da1a5e9599f4  libgcc/soft-fp/fixunsdfti.c
! 21fe23f358f61a4e26d29b11e6d0f7e6  libgcc/soft-fp/fixunshfdi.c
! 9d9677c6da96142038aa3251ac82be71  libgcc/soft-fp/fixunshfsi.c
! ca7d48b7d45390b3df9e82c2f30f36dd  libgcc/soft-fp/fixunshfti.c
! f72d40f70dcd4ab269b0e2244932c2ea  libgcc/soft-fp/fixunssfdi.c
! 73b77e9508be3df7ef3dedca5eef5fb5  libgcc/soft-fp/fixunssfsi.c
! a8e89d494f10e00744b973ef74e03630  libgcc/soft-fp/fixunssfti.c
! 556a22ddec531aed905074a8ea139a68  libgcc/soft-fp/fixunstfdi.c
! c7baaf1dede8faef62bc97069e3a86dc  libgcc/soft-fp/fixunstfsi.c
! 64ec2ba422a53cee91738d36152761ff  libgcc/soft-fp/fixunstfti.c
! e1aba14c8b19b67e96db9f797148af40  libgcc/soft-fp/floatdibf.c
! 9f2debc3dfca812930e420e587f6b3ca  libgcc/soft-fp/floatdidf.c
! 8d00b76a5e987b91468aebc92364888f  libgcc/soft-fp/floatdihf.c
! 8101b8bd18bd5a883c49257253c57a66  libgcc/soft-fp/floatdisf.c
! 4ab49a239a8c03bd5bc5f5ee03f7afb6  libgcc/soft-fp/floatditf.c
! f85e25a797c23cce258273754ddec970  libgcc/soft-fp/floatsidf.c
! 42920c37d3ea2b90c0994cd4de2f4b80  libgcc/soft-fp/floatsihf.c
! 54b4c5443e79e51443d4fad220bc2efd  libgcc/soft-fp/floatsisf.c
! 8c77a60f0cb82b4a03aaa604111c3917  libgcc/soft-fp/floatsitf.c
! 2bae6ee688abda61b223fbf5b25717c1  libgcc/soft-fp/floattibf.c
! 5b4ee2ed81bcc63bd1d9e4bb9b67cf8a  libgcc/soft-fp/floattidf.c
! 06cdbcfb2194128912579a06c8f42382  libgcc/soft-fp/floattihf.c
! 6e719ab7cae6203215443826f176392d  libgcc/soft-fp/floattisf.c
! a9a45db6ebbb0bbf20a2f595b2ac714d  libgcc/soft-fp/floattitf.c
! be1a053bdfcb6c04a22e60ad1700a803  libgcc/soft-fp/floatundibf.c
! c8c37355af10b7e73d8dd055f5fec1d1  libgcc/soft-fp/floatundidf.c
! c542677f46dcf90232bd2bfa584f00cb  libgcc/soft-fp/floatundihf.c
! 37e794d54137162bc3508310c1e27957  libgcc/soft-fp/floatundisf.c
! c644c7fa122918424b557f6ef9e18094  libgcc/soft-fp/floatunditf.c
! 08d38ea8e5ef4b49a51589d5e7f3ce5e  libgcc/soft-fp/floatunsidf.c
! cc4e37dc543a3767b463816094f3c0b9  libgcc/soft-fp/floatunsihf.c
! a32ae0cec8bb9ac510eaf6f3c72fb19c  libgcc/soft-fp/floatunsisf.c
! 75f27d311c21a9e7d716bc4d3b4f4e3b  libgcc/soft-fp/floatunsitf.c
! a96996bf9295a924afc141cd5d6b0f6d  libgcc/soft-fp/floatuntibf.c
! c95a41904ff52abb3a4a89a598e7424d  libgcc/soft-fp/floatuntidf.c
! be697682ed2a5184039fc8ca04c59be7  libgcc/soft-fp/floatuntihf.c
! b0e6031ca3ec610e349ff2abc3d12622  libgcc/soft-fp/floatuntisf.c
! a73152ad84ccafda24237cacca1f4e2d  libgcc/soft-fp/floatuntitf.c
! 295099b34643dc167502a661f4a3739b  libgcc/soft-fp/gedf2.c
! a55cc715e80d85457942c40067b65a87  libgcc/soft-fp/gesf2.c
! c0f4bfdafed03891a879d39e4fb8ba74  libgcc/soft-fp/getf2.c
! c8a55ad882579927410351cef6443cf5  libgcc/soft-fp/half.h
! 6b7fa6b7f83f348dc6830bdf63a4b986  libgcc/soft-fp/ledf2.c
! 924f5024b78a44a00dd8485430d46bc3  libgcc/soft-fp/lesf2.c
! c39c5f9236e55ec335485d124ed33d27  libgcc/soft-fp/letf2.c
! 62a5446d7264d8ccb76c9dd1d0f4fdf2  libgcc/soft-fp/muldf3.c
! 9d061fb80f24c79661f0f6176c375d4d  libgcc/soft-fp/mulsf3.c
! 8a68dac32967b95d73c50d13f572a2b9  libgcc/soft-fp/multf3.c
! 0f67ee982d17623886211dc865165a68  libgcc/soft-fp/negdf2.c
! 45ae50a46f2d7fffdf3da59ce7a3231b  libgcc/soft-fp/negsf2.c
! d78da0fee037e1eac40088776b9e1836  libgcc/soft-fp/negtf2.c
! 7f27675a33a7b216a1169118f37a2bb8  libgcc/soft-fp/op-1.h
! 4756ce02cb999472294df1d5b48cf093  libgcc/soft-fp/op-2.h
! 66c953c828f4c7ca826e04ef2feb1034  libgcc/soft-fp/op-4.h
! ebdf07aac6a6f525e5ddd3c0971f4776  libgcc/soft-fp/op-8.h
! 8bfc9cd7eb4bf8e5464791ea8fb20c80  libgcc/soft-fp/op-common.h
! 33a73f18a924479ac23448b8e7da5f7a  libgcc/soft-fp/quad.h
! 135c7e5df89515090bb48e69e862a3d4  libgcc/soft-fp/single.h
! 2a2430bad0a4610d8e0a32405ab128df  libgcc/soft-fp/soft-fp.h
! 9436182854ab61975b1f8e345867c25c  libgcc/soft-fp/subdf3.c
! e96b4784382425bc7e5eb116d9a1cfab  libgcc/soft-fp/subsf3.c
! c9bd7e828223768bc1b6ffb3f2359305  libgcc/soft-fp/subtf3.c
! 582d1815a20a01350a867185954e4506  libgcc/soft-fp/truncbfhf2.c
! ff637187c1ccf24b7850d4ad5ee6b6a6  libgcc/soft-fp/truncdfbf2.c
! c4b62ad5196f31f9c38923ddb82c1653  libgcc/soft-fp/truncdfhf2.c
! 40e2eb1996d8d46b4f314c66a9e16503  libgcc/soft-fp/truncdfsf2.c
! 5766958d29599f53211bc3110535b2f0  libgcc/soft-fp/trunchfbf2.c
! e59b1d4c7a21da08ef3280196fbe8a73  libgcc/soft-fp/truncsfbf2.c
! 067215d51eb5c913e585c3c3b7848e74  libgcc/soft-fp/truncsfhf2.c
! ebe306eee058dbce14d01be6c9569214  libgcc/soft-fp/trunctfbf2.c
! dbd64b9f7f89f56274ab20a0a09c9be8  libgcc/soft-fp/trunctfdf2.c
! ec151c1348b3df6303438645b120525b  libgcc/soft-fp/trunctfhf2.c
! cdea605a1c6e0b8899308f33d622c5e4  libgcc/soft-fp/trunctfsf2.c
! 8207507b0ca8cbf0febd89c3e9cf69f0  libgcc/soft-fp/trunctfxf2.c
! c9396c9c1e7e143cd28e5df90da3cc2a  libgcc/soft-fp/truncxfbf2.c
! fff9d95d160cd075bf3dd5afb28988a4  libgcc/soft-fp/truncxfhf2.c
! 02cd32a9e556b17d090348c2ecd8753b  libgcc/soft-fp/unorddf2.c
! fbd2a4796cc1004ad95b2d302d55497a  libgcc/soft-fp/unordsf2.c
! 008beb46d9f23d4020ebdd5cbcb0fe3d  libgcc/soft-fp/unordtf2.c
  8c64184cccab0ab994c69899c63f3260  libgcc/static-object.mk
! e735f53afbb9c97ee82e3a036bcd062d  libgcc/sync.c
! 1e21d66bd8bbb1eef9086abe2e5deb6b  libgcc/udivhi3.c
! 06b896882f5112b1ec46ee4e77c05634  libgcc/udivmod.c
! 9cd1090609ed12c5443acaf63c50d688  libgcc/udivmodhi4.c
! fc142c65aad96b7d4719293477ca7a1b  libgcc/udivmodsi4.c
! cf3c5b6953d6faf993393bda407b4fc5  libgcc/unwind-arm-common.inc
! c52111328a177e0b1addfc9d6d294923  libgcc/unwind-c.c
! 46542b765754d0b49060c9f5e3ecd6b6  libgcc/unwind-compat.c
! 7044f5eb123a3753a5f52e5efe651fb3  libgcc/unwind-compat.h
! 31b15a852af79aea6a26219bbf10ae04  libgcc/unwind-dw2-btree.h
! 2cb9cc7b172c9e705a5ddcd8eb85b84a  libgcc/unwind-dw2-execute_cfa.h
! aca8a62f2fbdbe43c1346aee0c0a45d8  libgcc/unwind-dw2-fde-compat.c
! d1ef57905ae816c841be3da60d0598b4  libgcc/unwind-dw2-fde-dip.c
! 464dd2312d1a6815330fbd6fba24061f  libgcc/unwind-dw2-fde.c
! 2805dd79f7787bebf804068689732eca  libgcc/unwind-dw2-fde.h
! 1760739d02ea98fda2d071d0a4699a45  libgcc/unwind-dw2.c
! e15f35b4faa50d07cae1c696695455ef  libgcc/unwind-dw2.h
! 95a6f78058c9645b565fe7b446d04908  libgcc/unwind-generic.h
! bc0d3012b8b7835b6369ac8efc9b08a8  libgcc/unwind-pe.h
! 7618f9ffd05eb88c3f6314cb0be29c0e  libgcc/unwind-seh.c
! 17c97612233b735b4646d82b12e26585  libgcc/unwind-sjlj.c
! 76759d07e1121ab18b013c06aa402958  libgcc/unwind.inc
! 60245aef0d9b2bda2b45954021708451  libgcc/vtv_end.c
! afca86d4e2ebcbd002c0967889bca65c  libgcc/vtv_end_preinit.c
! 120570d3d00f2719ceb16accb59b9502  libgcc/vtv_start.c
! 0c268e8e6df76a1dc94c1bc709707a5a  libgcc/vtv_start_preinit.c
! 27d27defa6fc9233f01d3d0e2e1b34f6  libgfortran/ChangeLog
  9aca36338382e5b4b730e7779170b24d  libgfortran/ChangeLog-2002
  80d3edc880c2da0b7a2beec2e2c4f774  libgfortran/ChangeLog-2003
  9f0239429993a5e64ed793eb6c55a5c1  libgfortran/ChangeLog-2004
*************** e9051611daf30b5672939006d2ab936c  libgfo
*** 94116,94954 ****
  a25a190e02c8ba2caa2c3dee224eba51  libgfortran/ChangeLog-2019
  561d7b7050b65ea8eac91bc825d5a816  libgfortran/ChangeLog-2020
  14d3ee4271b29519e2e38d5f4214dcc3  libgfortran/ChangeLog-2021
! 85a2a86ebc531c92a58a44e24c713d01  libgfortran/ISO_Fortran_binding.h
! 5664eaea1f6c3857c0b54abcfc5a8531  libgfortran/Makefile.am
! 5335dd135636d1d69da30798d40a50b0  libgfortran/Makefile.in
! ca29f004198eb5d505c8eda5b685ba6a  libgfortran/acinclude.m4
  77dad7b87b2adfbfda676696055ef90f  libgfortran/aclocal.m4
! 22aed95bf8f49111299ca2ed4b666e8b  libgfortran/c99_protos.h
! 24cb7e4cc2442e5778a3459f43307372  libgfortran/caf/libcaf.h
! 637ee15620478b161f97acc863e69748  libgfortran/caf/mpi.c
! 45b080a37fad11526692e72d7363a7ec  libgfortran/caf/single.c
! e0caa8f020b379276d582ca19cd0aba8  libgfortran/config.h.in
! c8846b1296b476b5e94b54d7856a3e6b  libgfortran/config/fpu-387.h
! f30bd4ab784e2b8b47a0521e25b50f8e  libgfortran/config/fpu-aarch64.h
! c97c60c348b08040368919c6705acca1  libgfortran/config/fpu-aix.h
! c22139795095262b05205e7123a82007  libgfortran/config/fpu-generic.h
! 35d5495a8d95a8d065eb22ee659950d9  libgfortran/config/fpu-glibc.h
! 2e2820864061e3f9e49ab266a72a3511  libgfortran/config/fpu-sysv.h
  93375010faf12b59ff1618874a0beacd  libgfortran/config/t-aix
! 8b1d499d0ff2f4290f07537eafd9f048  libgfortran/configure
! e56fd010246d433fd05c8132d14c8735  libgfortran/configure.ac
  bbe45eeb78f252ad73cd1709edc231b2  libgfortran/configure.host
! 32b6e122cb7b8a06d83a34d5e3f4cf28  libgfortran/generated/_abs_c10.F90
! f53e20f6ba4067afb55a8a802bc6bfe5  libgfortran/generated/_abs_c16.F90
! 3dabd41f81f167ca620a72e39c9d3b8d  libgfortran/generated/_abs_c17.F90
! fb07964fe7647c40314056e83908c40c  libgfortran/generated/_abs_c4.F90
! 024d656637682486acf36f2bd9512824  libgfortran/generated/_abs_c8.F90
! 4b450da4fea1e602ed120f0c91aab37b  libgfortran/generated/_abs_i16.F90
! 8d2bb49c62ba0faef63d222ef6a198be  libgfortran/generated/_abs_i4.F90
! 805a41c3ca27d9f6d92d8d3cc91243f7  libgfortran/generated/_abs_i8.F90
! ab6dd3bf7f310aefe3f15620bb11a41f  libgfortran/generated/_abs_r10.F90
! 464b93c4c07158d7c9f95a2f51a5186a  libgfortran/generated/_abs_r16.F90
! 6e8b5b61330a60e6ed29c01f33434797  libgfortran/generated/_abs_r17.F90
! 98489fc5b8af6872f71a11d3bb98a532  libgfortran/generated/_abs_r4.F90
! bb04b2002601a039e5c03c9853b36e16  libgfortran/generated/_abs_r8.F90
! 86f03f8bea4e952c18f40f7423fa6f26  libgfortran/generated/_acos_r10.F90
! 6375911592740c2f44505d631e932b64  libgfortran/generated/_acos_r16.F90
! 60b6cb278b7c8e8f726897db0e058eae  libgfortran/generated/_acos_r17.F90
! 200f124cb75ea80bfaa1d625422b4d95  libgfortran/generated/_acos_r4.F90
! 427c0fbe177cc6f355a6a0d8141e6708  libgfortran/generated/_acos_r8.F90
! d0f9ca341d4dc124d4baf6bc1c2cb53d  libgfortran/generated/_acosh_r10.F90
! 712c0ed726e2074147cae2e80bc03d4d  libgfortran/generated/_acosh_r16.F90
! 5938b3ad8cc7dcc191b957eb03a199c2  libgfortran/generated/_acosh_r17.F90
! eaa5ce848f04feb70d839603e481ba81  libgfortran/generated/_acosh_r4.F90
! cd973675da5cc05445bb22e185564fb9  libgfortran/generated/_acosh_r8.F90
! 8d6a633c82fcacfff66a392f01d6e5da  libgfortran/generated/_aimag_c10.F90
! efe9801fe4607eaf8c49ff5a510cb1cc  libgfortran/generated/_aimag_c16.F90
! f9831fdf6faa527ca5908922eaef25e3  libgfortran/generated/_aimag_c17.F90
! 2635b5152d8bc57f71cab021d9ea7d2c  libgfortran/generated/_aimag_c4.F90
! e1851427cf9b582a6bdbf10822a01216  libgfortran/generated/_aimag_c8.F90
! 6e70ae4cad48fd0656be0bbea137d4d7  libgfortran/generated/_aint_r10.F90
! d3ac9ba10e78fc082825aaf3acfb3e56  libgfortran/generated/_aint_r16.F90
! 35214425b7c079c216bcae788a0a6c10  libgfortran/generated/_aint_r17.F90
! d8ee026305babc2d0330f114026453b6  libgfortran/generated/_aint_r4.F90
! a121942867900c57fe97b3bfcf2b1f0c  libgfortran/generated/_aint_r8.F90
! 96ea894b9bf4c8d5889561fa01f5b797  libgfortran/generated/_anint_r10.F90
! 90fd79c2710201dff0c7af8b8f3219f1  libgfortran/generated/_anint_r16.F90
! a4144831fb7ab5fc472eb6a47a4e3e7b  libgfortran/generated/_anint_r17.F90
! 1bb339c0e5901143fe77d3f0b3973f03  libgfortran/generated/_anint_r4.F90
! 5634ee3daa7f786a6223c9998ea4130a  libgfortran/generated/_anint_r8.F90
! de23b68178e3259070424be90ac0c992  libgfortran/generated/_asin_r10.F90
! 391d857fca8f80d3e9fee9736d02256c  libgfortran/generated/_asin_r16.F90
! a9ef1731660c75d40f1f6cc24ead6089  libgfortran/generated/_asin_r17.F90
! 44b5c1c9171ea212351fc095177a9e3c  libgfortran/generated/_asin_r4.F90
! e24e49b9b9fb57dddadc604f9aec2003  libgfortran/generated/_asin_r8.F90
! f89fb5eea2ea02c2c59abca55dece27f  libgfortran/generated/_asinh_r10.F90
! c62056fb9bd733643f4884b1ef860ef8  libgfortran/generated/_asinh_r16.F90
! ccc7d5ee7e50d065445760b0d0c16355  libgfortran/generated/_asinh_r17.F90
! fceae92883ae8eeca2c5454bfdeffead  libgfortran/generated/_asinh_r4.F90
! 36887eb67599e9921ffc20ae16f27c2c  libgfortran/generated/_asinh_r8.F90
! 3e780359852f21a1eb975868de9d4f01  libgfortran/generated/_atan2_r10.F90
! 45180fc215f9d65f94ca3f7bebafb2fc  libgfortran/generated/_atan2_r16.F90
! d7bdffcae04ef1836a4609e205ad0df4  libgfortran/generated/_atan2_r17.F90
! e96c30ac842d5278e0d7e08082a288aa  libgfortran/generated/_atan2_r4.F90
! 626f8967169eac6aa62d6a2b77b2aed3  libgfortran/generated/_atan2_r8.F90
! b1c9d7fa01758a89d9fcc4328288bad4  libgfortran/generated/_atan_r10.F90
! ff7922adcc3d583db03e65bb799b584f  libgfortran/generated/_atan_r16.F90
! efd99f53737905543d00c72e8ff06a8c  libgfortran/generated/_atan_r17.F90
! 5fc7ad6b664c2c3145fe26293c6b4757  libgfortran/generated/_atan_r4.F90
! 1197824401fa1a74d913f413d4cfc966  libgfortran/generated/_atan_r8.F90
! 4278bddde736e76c1abb11ada581e579  libgfortran/generated/_atanh_r10.F90
! 2b0ca7c82e16c2a8ec6ae558835c9ffa  libgfortran/generated/_atanh_r16.F90
! e8f0b0b7bdeef4e95706171f23604fb3  libgfortran/generated/_atanh_r17.F90
! a162e7daba1d10f6b797780b28fe6303  libgfortran/generated/_atanh_r4.F90
! dfbe874b8aa988d05260c0e980ced07d  libgfortran/generated/_atanh_r8.F90
! 5a6a575adf397388a67659c9ce2f0366  libgfortran/generated/_conjg_c10.F90
! 5e4b8648cb9838ae04c894370b19e5c9  libgfortran/generated/_conjg_c16.F90
! a1396e29e77f754e747b7b8a30c053cd  libgfortran/generated/_conjg_c17.F90
! c59b234c2da812ae59e5ab1c8bd74874  libgfortran/generated/_conjg_c4.F90
! 639127e8a030f0955304ea9a78d377e4  libgfortran/generated/_conjg_c8.F90
! df3a7f7c09c70906588c9eb0388e4db1  libgfortran/generated/_cos_c10.F90
! 258ad1a917fe88e09ccf3dc721b39aec  libgfortran/generated/_cos_c16.F90
! b9e8dfb42471ddf10d0aae738e56df77  libgfortran/generated/_cos_c17.F90
! d27e761352647366bd822117c56fe732  libgfortran/generated/_cos_c4.F90
! abf994c86da515eb392502b246a02d3c  libgfortran/generated/_cos_c8.F90
! cd9adbbf7f2744fa0c860aae1f957ffe  libgfortran/generated/_cos_r10.F90
! 3208f579f4f410fba74cf169dabde76a  libgfortran/generated/_cos_r16.F90
! ca543d91b3be88fb76a08b8f111831c7  libgfortran/generated/_cos_r17.F90
! 649f8ccadd20b37a4976268aa13a1832  libgfortran/generated/_cos_r4.F90
! 6089dc3c22eba6ef3e25a67db6f9ce29  libgfortran/generated/_cos_r8.F90
! db4c43f45ae1fb465856942afa460087  libgfortran/generated/_cosh_r10.F90
! 9fde7a39dd126898f5e11298ba74599e  libgfortran/generated/_cosh_r16.F90
! 46c0f40929260c1b4d60eb9338df6a9b  libgfortran/generated/_cosh_r17.F90
! 5944c740915d45855ba694b7b482c35e  libgfortran/generated/_cosh_r4.F90
! 4df4b381e9fc07f930a100977313759e  libgfortran/generated/_cosh_r8.F90
! aeb04624b3d50a7c8ca3b170dbfabff3  libgfortran/generated/_dim_i16.F90
! 5f0340bfa4b82e23bc6e22650c657045  libgfortran/generated/_dim_i4.F90
! 223eda9f222fdfe0bb553e8e95719a7c  libgfortran/generated/_dim_i8.F90
! 12b440dfe0a91775c521a72e38fd8882  libgfortran/generated/_dim_r10.F90
! d77349d995763715b32e5d5f8a94fa33  libgfortran/generated/_dim_r16.F90
! 33d9ef603901573b739ff8495223147b  libgfortran/generated/_dim_r17.F90
! 108c0f0d6f0ea1dc4adbf8610a6054d9  libgfortran/generated/_dim_r4.F90
! d280fd8d1bcf69e68674a2b1044eb59f  libgfortran/generated/_dim_r8.F90
! e694b462cb63569ece53154bc7d08da3  libgfortran/generated/_exp_c10.F90
! 943024975fe279f87fb034f8b4ca809f  libgfortran/generated/_exp_c16.F90
! bd0fe118d9646559b87b03086dba151b  libgfortran/generated/_exp_c17.F90
! 685520bc2e0acd10491ed376c502283d  libgfortran/generated/_exp_c4.F90
! 5727910b50a81d6c448c7546990d3efc  libgfortran/generated/_exp_c8.F90
! 3e38039c5e9e5c28e099605c2e070b4d  libgfortran/generated/_exp_r10.F90
! 794c44d5324f575a5beafd046b74259f  libgfortran/generated/_exp_r16.F90
! b325407cce4e2decb2df599512387953  libgfortran/generated/_exp_r17.F90
! adfff8ed62006da777d1075efa84a8bc  libgfortran/generated/_exp_r4.F90
! fb72123c1f2225c9e2af1af1882e4623  libgfortran/generated/_exp_r8.F90
! 71cbd23b2f595eb42969d85a42dd5645  libgfortran/generated/_log10_r10.F90
! 7149af6338948f9e88930baf8ee984a7  libgfortran/generated/_log10_r16.F90
! fd054d9403e728e7ca48ab31678ee6b8  libgfortran/generated/_log10_r17.F90
! e524f298b0f505e905b811ef76731d32  libgfortran/generated/_log10_r4.F90
! 96a61058826a3d7b672bde14ab9760a7  libgfortran/generated/_log10_r8.F90
! f145cee3b2da6f18696a77ee55f17c29  libgfortran/generated/_log_c10.F90
! 3ea78bb837cd7d9f2245293054db4c1f  libgfortran/generated/_log_c16.F90
! 4285f09a0e60f1b408822765877c746b  libgfortran/generated/_log_c17.F90
! 94c36b1d35a983cd651b89a8dcd44a07  libgfortran/generated/_log_c4.F90
! 59fcb45d646f454aa5d8ad2838e978d2  libgfortran/generated/_log_c8.F90
! 8f0063f668f86cc73a5af29d27a899b2  libgfortran/generated/_log_r10.F90
! e3e027d2e2244ba11d30d10ef15d6806  libgfortran/generated/_log_r16.F90
! d1f4e4ecd08a22fd09dd16115b4c4722  libgfortran/generated/_log_r17.F90
! 17a8a0128ac24c43e2e2f46d7938f0c3  libgfortran/generated/_log_r4.F90
! 9382efa3ee5a137b136ae4b69293fc55  libgfortran/generated/_log_r8.F90
! b46b88902b887352b321c87d318a5194  libgfortran/generated/_mod_i16.F90
! 0c811c0441f3d87d2b83bf94b9101f85  libgfortran/generated/_mod_i4.F90
! 34867a4fcf660510bcc67386932d2696  libgfortran/generated/_mod_i8.F90
! 69e1c9bc677fcf9ccffdfd8198c82b19  libgfortran/generated/_mod_r10.F90
! 7028bc253d066ad17155688848a9fb1f  libgfortran/generated/_mod_r16.F90
! 64115e6c87d3dddbcdf7b157266f77eb  libgfortran/generated/_mod_r17.F90
! 54f4d0212bd3455fc01698d0c9ec52a6  libgfortran/generated/_mod_r4.F90
! a8950da95b8ab2c720ee599befb70e99  libgfortran/generated/_mod_r8.F90
! 116e1eac029b4cf991dab4cdf1f7cd79  libgfortran/generated/_sign_i16.F90
! 240efa8b82c5442bbf04a52641bfec25  libgfortran/generated/_sign_i4.F90
! afcd326db3269dcb2373d17382eaf0d2  libgfortran/generated/_sign_i8.F90
! 26f2d20aeb4b1b0715cd257357892e1c  libgfortran/generated/_sign_r10.F90
! 5e8a3199a9e003954a4967ebcd89fad2  libgfortran/generated/_sign_r16.F90
! d4098cfca10f4502fb5c87ab64ef1efc  libgfortran/generated/_sign_r17.F90
! 5a21ae256b063773414112d12de58ece  libgfortran/generated/_sign_r4.F90
! 72c29bc832f80910d5228060516a59c1  libgfortran/generated/_sign_r8.F90
! b0de2c399d3bd856b6388eac65eac364  libgfortran/generated/_sin_c10.F90
! 2ddc7c22ecf5be7adfcf8d19b7259517  libgfortran/generated/_sin_c16.F90
! 0b9f37e3c48b7d1acb3709b7b5081b19  libgfortran/generated/_sin_c17.F90
! 828aa3137172b93b2ce2b70c3715618e  libgfortran/generated/_sin_c4.F90
! 3ce1cc313aa7dcd48a9b300e2849605e  libgfortran/generated/_sin_c8.F90
! f2fca5e0b41a6f8b54f9ebbe50c3c960  libgfortran/generated/_sin_r10.F90
! 7a8c13b54c2bacad6bbb8e631b599b69  libgfortran/generated/_sin_r16.F90
! 926b4682a7bf56d86d298bf55761e64c  libgfortran/generated/_sin_r17.F90
! 992f17d9e2ce564278e48f12f8e34980  libgfortran/generated/_sin_r4.F90
! 313a1de7fe545ebbdf2447ec1a831927  libgfortran/generated/_sin_r8.F90
! 26d1a048ee51e5d1d2a036cbb44184ae  libgfortran/generated/_sinh_r10.F90
! 50912c73d00bcc752af8cc004cdaa0d8  libgfortran/generated/_sinh_r16.F90
! 8f7a9954180315ff422d001a46eb7a5e  libgfortran/generated/_sinh_r17.F90
! 3cd77581127580fc155efcd90f0d99a8  libgfortran/generated/_sinh_r4.F90
! 3f2b22528611655838f4ba5bf3508403  libgfortran/generated/_sinh_r8.F90
! 83d00333ecc71c722f1ca5805bc678b0  libgfortran/generated/_sqrt_c10.F90
! 936906fbbdbdc75776858488fbffec1d  libgfortran/generated/_sqrt_c16.F90
! e59c894543e456cbd66bbeb060b46c76  libgfortran/generated/_sqrt_c17.F90
! 92c5df7af02fef35c5ed2162a7e19556  libgfortran/generated/_sqrt_c4.F90
! 13ee80da98f3a2bd932562b4d11c3dc0  libgfortran/generated/_sqrt_c8.F90
! a456d36c34c7d395bfe5f1ecc682d4d4  libgfortran/generated/_sqrt_r10.F90
! 81f088322073d3b569bff587b1719bd7  libgfortran/generated/_sqrt_r16.F90
! 276c51700aebd65964f5045105f478c0  libgfortran/generated/_sqrt_r17.F90
! 67f90c24840c90822cffa6dacd1d54cc  libgfortran/generated/_sqrt_r4.F90
! d54bdc1fd7599e99892d25e343b269ba  libgfortran/generated/_sqrt_r8.F90
! c2736ca6089197d74e87dc700997fbf6  libgfortran/generated/_tan_r10.F90
! 78db10e721bccb47825f2345e8a998c2  libgfortran/generated/_tan_r16.F90
! 40fe47688f60bb0ae4fd3faaf24aff23  libgfortran/generated/_tan_r17.F90
! bae2d13f4f0f8d5bfef8980d5d0b7928  libgfortran/generated/_tan_r4.F90
! 35ccee81c34160e8022a07f2e6b649b7  libgfortran/generated/_tan_r8.F90
! b2b4b4dbe6c7d5c10cc7b73b493e878a  libgfortran/generated/_tanh_r10.F90
! 0817d0ce3c05c4fefa568a261f77ac12  libgfortran/generated/_tanh_r16.F90
! 0bca871ecded8a17c51be14996755d5b  libgfortran/generated/_tanh_r17.F90
! ba080ae1459f3aa024843435afd24c15  libgfortran/generated/_tanh_r4.F90
! 1cb43674958ef3a119fe4750c8310b72  libgfortran/generated/_tanh_r8.F90
! 32b5eb1034cf2fc2024dfd6f9a436fb6  libgfortran/generated/all_l1.c
! 23a2b4923f342e7233e1e4c598e989a1  libgfortran/generated/all_l16.c
! fb118049a2172a4cb74f51e57a7cf81f  libgfortran/generated/all_l2.c
! ad32f73f700ccbb79a1c74088a1a79fe  libgfortran/generated/all_l4.c
! e7381c8ec0d414d7e1c518a4ecf0b560  libgfortran/generated/all_l8.c
! 6142fe98281aac63151f9b64ae525f9f  libgfortran/generated/any_l1.c
! 7edca7ea6c5941643af342c2d199bfb7  libgfortran/generated/any_l16.c
! bf31e9a45c33ca730e00d252558c2c85  libgfortran/generated/any_l2.c
! 3746c091f52741bd6a32a78f7e091a1f  libgfortran/generated/any_l4.c
! b66879681f5ad020a58843efbd962ca7  libgfortran/generated/any_l8.c
! a5e3c24af954a7f166c7e02110c7d6cb  libgfortran/generated/bessel_r10.c
! 51e732b830160ac4a15c7756f687a8cd  libgfortran/generated/bessel_r16.c
! 901282e485382e22d582d98dca924c1b  libgfortran/generated/bessel_r17.c
! eac9162cea0bc4fd22246892f8952e4b  libgfortran/generated/bessel_r4.c
! a87e5347f1b032f2fab4b93ec6fb9928  libgfortran/generated/bessel_r8.c
! f0f2ece7e5911f025664abc0ad26512d  libgfortran/generated/count_16_l.c
! 33a699f13f6c4ea47bf6b6c92087fad4  libgfortran/generated/count_1_l.c
! 7c13524bb0154d4cfe317fbb1186ff0d  libgfortran/generated/count_2_l.c
! 3ad482b90b2dead150a3fbb8002e7881  libgfortran/generated/count_4_l.c
! 3b70698b11b21f8db7f4e6c2b0cb7140  libgfortran/generated/count_8_l.c
! bff0dd0e89aef906771aed14f53e312e  libgfortran/generated/cshift0_c10.c
! 3fd5a1e473322157c7d5f99baad2dcdd  libgfortran/generated/cshift0_c16.c
! 7a8ba9c616574550a5732d35b502af5a  libgfortran/generated/cshift0_c17.c
! 57d01b3c49074c53f5ca8540ca6b5787  libgfortran/generated/cshift0_c4.c
! 7bef6b3d9954c46a8391f93f97f83e28  libgfortran/generated/cshift0_c8.c
! 606446a7be1957d288fdf6a575539068  libgfortran/generated/cshift0_i1.c
! 256d9d3aadffc40ab42dd5fecc75caf5  libgfortran/generated/cshift0_i16.c
! 473b1ca2fc7b5ebe7eeda09f66b9a611  libgfortran/generated/cshift0_i2.c
! 4e2c4bab79c0de44a2679f97d39a9414  libgfortran/generated/cshift0_i4.c
! 7c4cf411667106f253b02c9eac4b2e9f  libgfortran/generated/cshift0_i8.c
! c3fdc34817c2ae359bf4c8d9f7e57027  libgfortran/generated/cshift0_r10.c
! 0f456158b1dc1836171602a8ccdb553c  libgfortran/generated/cshift0_r16.c
! cf173b642f3239542a14b9bd156224a4  libgfortran/generated/cshift0_r17.c
! e24b149ba419ba47c5593aa46de4242c  libgfortran/generated/cshift0_r4.c
! f3a19649a1e72167cee95224a237c7ec  libgfortran/generated/cshift0_r8.c
! 7c003813da0184adf53367dcfb072016  libgfortran/generated/cshift1_16.c
! 49cdb759fa3c1feb93806fa77f33307a  libgfortran/generated/cshift1_16_c10.c
! a1ea9c0ee7f50c7959613cdb6d52181b  libgfortran/generated/cshift1_16_c16.c
! 774c2b8c8cd6458f98c71f1280fd69d1  libgfortran/generated/cshift1_16_c17.c
! 92040a246db026c29b1970f7b69561de  libgfortran/generated/cshift1_16_c4.c
! 90767e4246a40e2afaf8c829ec529da4  libgfortran/generated/cshift1_16_c8.c
! a0efcb43950e57bb4f60a1994e7f4f04  libgfortran/generated/cshift1_16_i1.c
! a35e23cd7df458bd0f518946fd1225ff  libgfortran/generated/cshift1_16_i16.c
! ef868b39cc91c533c8426d1fa8ac947f  libgfortran/generated/cshift1_16_i2.c
! b18e4937a6335680100dbf504d995435  libgfortran/generated/cshift1_16_i4.c
! 250b98a6b8882540a03e9ef48cddbc6d  libgfortran/generated/cshift1_16_i8.c
! b384ad39e92e050c2e5696dfb3721d2c  libgfortran/generated/cshift1_16_r10.c
! db9285f69b9dd90cb8d63be023de48f8  libgfortran/generated/cshift1_16_r16.c
! a43e2691d4e6134e3871244c6fb7ec52  libgfortran/generated/cshift1_16_r17.c
! 424415ba33dc861e0e63009110980c7b  libgfortran/generated/cshift1_16_r4.c
! 5c61de74d9780e13a9a736c85b3672ea  libgfortran/generated/cshift1_16_r8.c
! 0c982502db69a1a68f406dbd940cc245  libgfortran/generated/cshift1_4.c
! 7ff37adc25999d1b98dee227e3c18828  libgfortran/generated/cshift1_4_c10.c
! 6d4e823502887351eedd3c388a47d603  libgfortran/generated/cshift1_4_c16.c
! 65a91e5617fb3d57d00fb43404c69a50  libgfortran/generated/cshift1_4_c17.c
! 4c7302b48d9da14062338a9dc1a4f9f3  libgfortran/generated/cshift1_4_c4.c
! e19321142e12a5c41c3fd84818f20bb9  libgfortran/generated/cshift1_4_c8.c
! d023996170448e1bc1b265d3848babb6  libgfortran/generated/cshift1_4_i1.c
! 769b96d3c5e58ec89c65583a56f23985  libgfortran/generated/cshift1_4_i16.c
! 78d75abf3762b832f87382a1c49903d6  libgfortran/generated/cshift1_4_i2.c
! a0165d626d30d20249cd821822670870  libgfortran/generated/cshift1_4_i4.c
! dd88251a79ba20b41fb22c5ba7dc3407  libgfortran/generated/cshift1_4_i8.c
! 2e375d439e1ba746d99ad7be7e47f7e3  libgfortran/generated/cshift1_4_r10.c
! 2e00a9614fa2921066f837f18e092aaf  libgfortran/generated/cshift1_4_r16.c
! 556b8aacb9205405000d469b4ca2c5aa  libgfortran/generated/cshift1_4_r17.c
! 316e47658aa32ba97421095de17f698b  libgfortran/generated/cshift1_4_r4.c
! bec7899ef434e23a8c0ee5237cd77f04  libgfortran/generated/cshift1_4_r8.c
! 840b4b9bdbeca1c01991c6d2dcb4c28e  libgfortran/generated/cshift1_8.c
! 3f67ec6d7d0222e0694d029af76084d9  libgfortran/generated/cshift1_8_c10.c
! 1f52558374616d476d1d75892b01937f  libgfortran/generated/cshift1_8_c16.c
! 7dfc9a84197599101c9e5d1360ce15d1  libgfortran/generated/cshift1_8_c17.c
! bf603909213fb1c86065e34b94013590  libgfortran/generated/cshift1_8_c4.c
! e3e4bbf27385b7fbdc6245ffd6aaf582  libgfortran/generated/cshift1_8_c8.c
! 824baaf90aa9da4169ff8c29e3e0b31b  libgfortran/generated/cshift1_8_i1.c
! ac0246ff72bcc4e64b3a15d07dac6f2a  libgfortran/generated/cshift1_8_i16.c
! 799ef55d42730bd1e51fbabf632c090d  libgfortran/generated/cshift1_8_i2.c
! 6b36be119eb714490f2f64015c8c3dcc  libgfortran/generated/cshift1_8_i4.c
! 00b8313648459a11d3245c6cd6df4525  libgfortran/generated/cshift1_8_i8.c
! 4fbca8d65fdd37c28e732f5841a65d3f  libgfortran/generated/cshift1_8_r10.c
! 05ccb651921326c3d6c7add5363a8f4f  libgfortran/generated/cshift1_8_r16.c
! 595e04276a693c0d95382b285436ce39  libgfortran/generated/cshift1_8_r17.c
! a2e32acb8e86cf923051763afe0cfaa3  libgfortran/generated/cshift1_8_r4.c
! ba6174190068c5ecc812336588138139  libgfortran/generated/cshift1_8_r8.c
! 3be1baf97882ef5609ec61f7c73d5750  libgfortran/generated/eoshift1_16.c
! 3f0e28f3ed14e9445bbab1ead6bf8306  libgfortran/generated/eoshift1_4.c
! 2b7275ad3c1101300de474eb1dff7ea9  libgfortran/generated/eoshift1_8.c
! ba5c233b2b5fcf932e8cfdb6cd1fb127  libgfortran/generated/eoshift3_16.c
! 07f29ca7461786ac06facb7193947e65  libgfortran/generated/eoshift3_4.c
! b55e5b0efc1115529ce3bf1234061673  libgfortran/generated/eoshift3_8.c
! 099349bf86bda4346e37d56f1d904a43  libgfortran/generated/findloc0_c10.c
! ecea3ec6745cfd608506edfe1490defe  libgfortran/generated/findloc0_c16.c
! cb2d42cb369113fc11f75e86d27069f9  libgfortran/generated/findloc0_c17.c
! 0d3e7e842b640136fe37895bda4a1a96  libgfortran/generated/findloc0_c4.c
! ea7124327cebe65a84521747d4212218  libgfortran/generated/findloc0_c8.c
! 8aa449c658ca238ca79fb493e1b7046c  libgfortran/generated/findloc0_i1.c
! 7d117404398dbf4f86c3aa84b11ddf6c  libgfortran/generated/findloc0_i16.c
! e2587c2710828ef785414a68690bf672  libgfortran/generated/findloc0_i2.c
! c07536b905e41d108b6c4c0017ecdc3d  libgfortran/generated/findloc0_i4.c
! 7558ce976e29a9378cf65bf19fe20bf2  libgfortran/generated/findloc0_i8.c
! 4d1e2f5c723eb2c7ecec0d030babe5c3  libgfortran/generated/findloc0_r10.c
! 1caa5fe6d4b70e16c7d9691153f4d81f  libgfortran/generated/findloc0_r16.c
! f14d4966de33d8a53159b70f482bcc02  libgfortran/generated/findloc0_r17.c
! 14253d878bec011664621c857b60febe  libgfortran/generated/findloc0_r4.c
! 7ee42a0edaed4a704377fc5f5acdf0c2  libgfortran/generated/findloc0_r8.c
! 6cdd82cafd1b3da6911192e0c02acb6b  libgfortran/generated/findloc0_s1.c
! 1c363bfb9894abce09fdc66f8c2db9ea  libgfortran/generated/findloc0_s4.c
! f4a69bbb41ea75da244f0b1519974377  libgfortran/generated/findloc1_c10.c
! 43c6d7da5337f8f8907c6d3127aabab5  libgfortran/generated/findloc1_c16.c
! 6506adfa5e4531529a18a883f2c45c79  libgfortran/generated/findloc1_c17.c
! 309ad18d545a1f57ea737bdd8e9e0c86  libgfortran/generated/findloc1_c4.c
! 887ac6650c715496e8cbd0185678df29  libgfortran/generated/findloc1_c8.c
! 8a19d435324f76a32af7282fb1c96e89  libgfortran/generated/findloc1_i1.c
! c34121acb048f3349a95962475a651c8  libgfortran/generated/findloc1_i16.c
! 61c2237bc6dce818ab26670ba2a65d08  libgfortran/generated/findloc1_i2.c
! 553fc16792f258194d5983d49f8884e7  libgfortran/generated/findloc1_i4.c
! 22860b8596b7a5e6797e23931fd85a54  libgfortran/generated/findloc1_i8.c
! e84d13428b5ffde41dc3e50660454be0  libgfortran/generated/findloc1_r10.c
! 1b5ca2c7906b98feacd34d9b4b71689b  libgfortran/generated/findloc1_r16.c
! b81515ca91739291a29a3e757a3fc71d  libgfortran/generated/findloc1_r17.c
! b889e2825973f08b6ce755cd4325d33a  libgfortran/generated/findloc1_r4.c
! c3a569c7bca558f1eaa8116a2c98ba1a  libgfortran/generated/findloc1_r8.c
! 8f879c65798a0336c40196462b16ae36  libgfortran/generated/findloc1_s1.c
! ccb6f93fc94866ab2d1c206317631078  libgfortran/generated/findloc1_s4.c
! ee3ff4a793ca326fa5729c3c0a117527  libgfortran/generated/findloc2_s1.c
! 84d8665af288e783c8f6d2a28c0865e3  libgfortran/generated/findloc2_s4.c
! b175d994534b268fee0f8a58a53ea6d5  libgfortran/generated/iall_i1.c
! 40f3aa381214bffe8007abde8c591817  libgfortran/generated/iall_i16.c
! 4d424ffb433f699dfad7890811529bd9  libgfortran/generated/iall_i2.c
! 009621dbdabdf22b617307fc204c097b  libgfortran/generated/iall_i4.c
! c978a75ec212e0d8000dc0d10fedb276  libgfortran/generated/iall_i8.c
! 7da52ed297d7fb8faf2f04d6425632e7  libgfortran/generated/iany_i1.c
! bff569a6e95dfaa7c2d4d1f26c767593  libgfortran/generated/iany_i16.c
! b19e7307009190361e015b79e74fd32a  libgfortran/generated/iany_i2.c
! 5a424a01f10eccf8a54feef37db14d05  libgfortran/generated/iany_i4.c
! f8b845dba6aecb81dc9b0423aeb81501  libgfortran/generated/iany_i8.c
! c4db01ae65bb6e0374519adfd9386426  libgfortran/generated/in_pack_c10.c
! 95043a1c3b8a77cf768a23b45a0297e7  libgfortran/generated/in_pack_c16.c
! 4e073f2cdfdea22f6644d1d737192b73  libgfortran/generated/in_pack_c17.c
! adf07d683daa8609e8df1aa30caf6d7e  libgfortran/generated/in_pack_c4.c
! 41a4a1211a248709f7366974d8e9c3ef  libgfortran/generated/in_pack_c8.c
! 9c92da69fe8579ea0dd26ad5edee7b7e  libgfortran/generated/in_pack_i1.c
! 2b8ba418b3f162d1bb710a955e26e2c2  libgfortran/generated/in_pack_i16.c
! a4ad7c8a16f8cc848272b4b7c46fa111  libgfortran/generated/in_pack_i2.c
! a4aaa191c9c3f7e77ddcd608e618712f  libgfortran/generated/in_pack_i4.c
! 3abbe4df53ec2734d0db3128f20e5af4  libgfortran/generated/in_pack_i8.c
! 15169b01e589c659a35ecd7135b8f443  libgfortran/generated/in_pack_r10.c
! 3decb0e4378ee9b4d442aefef96b58c1  libgfortran/generated/in_pack_r16.c
! 26a2a6de9a46af0ca11a36b53537e399  libgfortran/generated/in_pack_r17.c
! fd204f912af61cd9f7838e56568551bf  libgfortran/generated/in_pack_r4.c
! af3d46f7471371607a78df3b00f0fd95  libgfortran/generated/in_pack_r8.c
! a8243b55ca2c4bf2330932b0da27a526  libgfortran/generated/in_unpack_c10.c
! 04090aa643de043c03f683573c04287e  libgfortran/generated/in_unpack_c16.c
! fc0712b48014e42c005fd71d1f88fd11  libgfortran/generated/in_unpack_c17.c
! 0990f032e51ab89406bcd52466db27d2  libgfortran/generated/in_unpack_c4.c
! 96f0cdba6cc3e7944daf4cb25f6d4603  libgfortran/generated/in_unpack_c8.c
! 0aa6675bf936a263f2f1332b55f96710  libgfortran/generated/in_unpack_i1.c
! 48d2e4f4d208f879745a56aff4f45565  libgfortran/generated/in_unpack_i16.c
! ef5e54756bde6e6268beaf93389c9bbd  libgfortran/generated/in_unpack_i2.c
! e85525e44b5c5087374ecd03ff58b4b6  libgfortran/generated/in_unpack_i4.c
! 60da2d6f462f583236f6fc785bb3a938  libgfortran/generated/in_unpack_i8.c
! 5958ab58dece4a5f81525952f1cbb256  libgfortran/generated/in_unpack_r10.c
! cfe59e86aacc271d6756a95b9372c8e2  libgfortran/generated/in_unpack_r16.c
! 5e4681e10876e4f9e7b4b795e480d736  libgfortran/generated/in_unpack_r17.c
! 58a42a1484000e0f0870c076a4369af1  libgfortran/generated/in_unpack_r4.c
! c49f113f217c4d342de8114e261d6e94  libgfortran/generated/in_unpack_r8.c
! 453d1136c52afc2b8e3eee843544ad96  libgfortran/generated/iparity_i1.c
! 36ba193d0a04d72927cf5450dcc28626  libgfortran/generated/iparity_i16.c
! 79a6f288397438482bbe1720959a1bcd  libgfortran/generated/iparity_i2.c
! b840f461d81e27f0d829d509d535ee8e  libgfortran/generated/iparity_i4.c
! bde1121670354ced7b6a5277ededee42  libgfortran/generated/iparity_i8.c
! 4b090c15e8980704636f8fda4fbda52b  libgfortran/generated/matmul_c10.c
! b6a53b966ffd3cc8981ef53324f3495b  libgfortran/generated/matmul_c16.c
! df0018a6201bf54cb414aeb8c13cfe3c  libgfortran/generated/matmul_c17.c
! 926a57579cbb5bd3bc0d8b5383e01db2  libgfortran/generated/matmul_c4.c
! 39923cc86f3b4eb3032625baa098e2ce  libgfortran/generated/matmul_c8.c
! 46f19caa372a323f4fd07a3fc91b8f82  libgfortran/generated/matmul_i1.c
! 621bd6cf01b9cc14050e67075b062320  libgfortran/generated/matmul_i16.c
! b3f05e0e73620344606c338a3e5e7913  libgfortran/generated/matmul_i2.c
! ff2061ee7f2f89854be5b61a2ec33138  libgfortran/generated/matmul_i4.c
! eb85155211ce27732a8285efff81b621  libgfortran/generated/matmul_i8.c
! da082b7a831c5d62deee980a79db7819  libgfortran/generated/matmul_l16.c
! 75040b7474e0d5e92711f6c3b0e37424  libgfortran/generated/matmul_l4.c
! 9514ce4019469e3316e24957e43ad3c4  libgfortran/generated/matmul_l8.c
! 70b5f73fae56e084355aca4942a9d2d5  libgfortran/generated/matmul_r10.c
! c5104dd1d60ec051a5ee5c0f5d808677  libgfortran/generated/matmul_r16.c
! 36faf5cc674c7d8c301b915fb8fe124a  libgfortran/generated/matmul_r17.c
! aec7bf946204f17956e76d8073aa3eb8  libgfortran/generated/matmul_r4.c
! 5a88d0d8546f941ff81ace106d3ec46e  libgfortran/generated/matmul_r8.c
! 99e7b32c66b2dede22d2572c667b3ff9  libgfortran/generated/matmulavx128_c10.c
! 8eefb38c50d06c3ba8a318a1894710a2  libgfortran/generated/matmulavx128_c16.c
! d26c1961428ab3a70368b91c9d17d0cc  libgfortran/generated/matmulavx128_c17.c
! 4f3279da1f5d3db02844762c52a2bc20  libgfortran/generated/matmulavx128_c4.c
! d5b7de177031b67ccac8c99ae4cdce2a  libgfortran/generated/matmulavx128_c8.c
! 91709d252fed3244a53225db7dfaa6cb  libgfortran/generated/matmulavx128_i1.c
! a7b9a2b9348e8a564761ffd97bf71c4f  libgfortran/generated/matmulavx128_i16.c
! 797e310e796b608f80329437585604b5  libgfortran/generated/matmulavx128_i2.c
! 2c3d86dca67f4c7330b938d2b1d3be17  libgfortran/generated/matmulavx128_i4.c
! df4d19e85d7f5f034a802ac94374cbc5  libgfortran/generated/matmulavx128_i8.c
! 8c9402a99df41df0cad84ef7b4c8c15b  libgfortran/generated/matmulavx128_r10.c
! c342f9ab9ca907f0a1d46121d5430a56  libgfortran/generated/matmulavx128_r16.c
! eb54ee8431b0ce993d82417d9f8fc459  libgfortran/generated/matmulavx128_r17.c
! 0b1b29daee6dfe284bb6a6d661a3c1d6  libgfortran/generated/matmulavx128_r4.c
! 31ff2aa6a7bdf3f3cda5dce4f8f2c9ef  libgfortran/generated/matmulavx128_r8.c
! 3fa747982a9e646b76f6c3dd9f6b1be6  libgfortran/generated/maxloc0_16_i1.c
! a8590d25e7e2efaba7271118121c4979  libgfortran/generated/maxloc0_16_i16.c
! 3dfa9c9a6039c695809bac1f8456e027  libgfortran/generated/maxloc0_16_i2.c
! 6e4c38fdc479f48210faf9dd6e032784  libgfortran/generated/maxloc0_16_i4.c
! 19733fbf7da89b0d117db9218eee592d  libgfortran/generated/maxloc0_16_i8.c
! 9cb13732306c0f19641b033bdae8a29f  libgfortran/generated/maxloc0_16_r10.c
! 587a4add5dfb8eca1d86997d54de1b56  libgfortran/generated/maxloc0_16_r16.c
! d4ec45745705e6720fb9edbce760e2b5  libgfortran/generated/maxloc0_16_r17.c
! 25602f175f285060ca4bc4926fbc0239  libgfortran/generated/maxloc0_16_r4.c
! c70def504734eb0f742cbf939dde649e  libgfortran/generated/maxloc0_16_r8.c
! 1bb993d07d8e103735c43868135aceef  libgfortran/generated/maxloc0_16_s1.c
! 2328e6cf50c426d104b654d15726f485  libgfortran/generated/maxloc0_16_s4.c
! e7082e0fd07011894998e73d953b0c48  libgfortran/generated/maxloc0_4_i1.c
! bc8a72abb78d936996e4c16359ce6a7a  libgfortran/generated/maxloc0_4_i16.c
! aef2f929451dac6869378402c4399d01  libgfortran/generated/maxloc0_4_i2.c
! 441bdc19f6e0bd35507501324c950bd5  libgfortran/generated/maxloc0_4_i4.c
! 500bf981e4d35896f3fe514be2206230  libgfortran/generated/maxloc0_4_i8.c
! e3e42470a824570bdbb688010c690fde  libgfortran/generated/maxloc0_4_r10.c
! 4a62185e0879cdd456ba79afd864c551  libgfortran/generated/maxloc0_4_r16.c
! 811451ee6f46af538a6df21689a627a6  libgfortran/generated/maxloc0_4_r17.c
! 01e73b837dc36dd045e84f8e9c3f4bd1  libgfortran/generated/maxloc0_4_r4.c
! 0fc5d0b6024d9315ea27ad6859bc5707  libgfortran/generated/maxloc0_4_r8.c
! 35e402e7177d1fe9d39e6b4e41e23227  libgfortran/generated/maxloc0_4_s1.c
! d62b63b2693c1b23bd094e2f0f276fd9  libgfortran/generated/maxloc0_4_s4.c
! 9e1ae940cee5e72564b804f54a1d37f5  libgfortran/generated/maxloc0_8_i1.c
! 0d8c5117474ab0e1aaf87cfdb6d3de40  libgfortran/generated/maxloc0_8_i16.c
! e9a17ac39c39c7364e68eff78e777315  libgfortran/generated/maxloc0_8_i2.c
! bdecfda418e9548858589078653fe4a5  libgfortran/generated/maxloc0_8_i4.c
! 62cc6f1b774e0e954a81efaa3a63aa80  libgfortran/generated/maxloc0_8_i8.c
! 3f1cd62c48d3aad9a75994c2d0a9c7fc  libgfortran/generated/maxloc0_8_r10.c
! c88176de7e709a0b31c8249082b583a3  libgfortran/generated/maxloc0_8_r16.c
! 5abc74dfc3750ea6783d92fbed56a3cd  libgfortran/generated/maxloc0_8_r17.c
! 182d958c45c4d30bb521776384f87baf  libgfortran/generated/maxloc0_8_r4.c
! 924781c55dd766a36fbb4a01303587e0  libgfortran/generated/maxloc0_8_r8.c
! b8112650eef0643754edcab41e2f828b  libgfortran/generated/maxloc0_8_s1.c
! 05ac426c7fb43ee1b3733455583bfd84  libgfortran/generated/maxloc0_8_s4.c
! 233bcdbf836ac57baee2e2b157a45fd3  libgfortran/generated/maxloc1_16_i1.c
! 90c0b60066951208ab867e121bdacdc1  libgfortran/generated/maxloc1_16_i16.c
! e35c69e21192c4be2374356451056f48  libgfortran/generated/maxloc1_16_i2.c
! 9f37d502938c2c93194eee922717ed7e  libgfortran/generated/maxloc1_16_i4.c
! ff581d5a57e9fa1aba38583558957a13  libgfortran/generated/maxloc1_16_i8.c
! 9fb1ab781753bb2a67daca7aef592252  libgfortran/generated/maxloc1_16_r10.c
! 3b4364a8a061608f09591841f5afa112  libgfortran/generated/maxloc1_16_r16.c
! b270ef642dc1f3a0b365bfd88b075a32  libgfortran/generated/maxloc1_16_r17.c
! 6265af287e28c1924adb51ca1a95872f  libgfortran/generated/maxloc1_16_r4.c
! 07da8412027513e6a42f8832b18907d7  libgfortran/generated/maxloc1_16_r8.c
! fc20a4eb8271fb80cd56cf5135c6b90b  libgfortran/generated/maxloc1_16_s1.c
! 7b16163b674874273332e9a89749b1cb  libgfortran/generated/maxloc1_16_s4.c
! 880dcb1b9a42d205dacb0dd0bf916e12  libgfortran/generated/maxloc1_4_i1.c
! e05d25f0074be2012161b02ccc8fdc57  libgfortran/generated/maxloc1_4_i16.c
! 4057de0edf4f1c508882b9def5056fbd  libgfortran/generated/maxloc1_4_i2.c
! a46971f93d3aa3a073579f79c6a68a14  libgfortran/generated/maxloc1_4_i4.c
! 449b9689a1a381657b6b59f729237506  libgfortran/generated/maxloc1_4_i8.c
! 1f3db60a8d66648a8bfa669f661bb406  libgfortran/generated/maxloc1_4_r10.c
! 03078a10b7ec8983c5e465cec06cf197  libgfortran/generated/maxloc1_4_r16.c
! 59a3d7d1239e8bc4a12dd3f60d8ea1ea  libgfortran/generated/maxloc1_4_r17.c
! 189f9d11a8aad07c835dcde01a03fe08  libgfortran/generated/maxloc1_4_r4.c
! f1f5bbf41ca3a0f12d75e08096fdbc2b  libgfortran/generated/maxloc1_4_r8.c
! 61556fa37040fe69291366631a401e92  libgfortran/generated/maxloc1_4_s1.c
! a4f267f117332845dd99c309c9f6a479  libgfortran/generated/maxloc1_4_s4.c
! 928fbaf793f3d91e88f173c56940fde2  libgfortran/generated/maxloc1_8_i1.c
! f66bb625d9676e71a9b09043aabb65c9  libgfortran/generated/maxloc1_8_i16.c
! 8e3a433837cf4dbe042b890668881823  libgfortran/generated/maxloc1_8_i2.c
! 7fa8e8854a7fef1db06c049e9d7b6e51  libgfortran/generated/maxloc1_8_i4.c
! 5efe4e8297ccedb26b613999a6222aea  libgfortran/generated/maxloc1_8_i8.c
! 5797ef2b0f4ba84fbfd01a41f21fab16  libgfortran/generated/maxloc1_8_r10.c
! 1dc6faae00d302a076a7535295c5c55b  libgfortran/generated/maxloc1_8_r16.c
! 9c76e2248512c1e8753c8a62276f103e  libgfortran/generated/maxloc1_8_r17.c
! 044a833c2095793536e8bbf5479b7836  libgfortran/generated/maxloc1_8_r4.c
! edba4f971fc680d16b1649a81c56a80f  libgfortran/generated/maxloc1_8_r8.c
! f3f0d61f79898773c50703bafe5af2de  libgfortran/generated/maxloc1_8_s1.c
! 240863dac6a589cecfe75a6784736a3c  libgfortran/generated/maxloc1_8_s4.c
! f5ddaa0d3c8d53f6f13e04405e994ecf  libgfortran/generated/maxloc2_16_s1.c
! 5e25dc3d8f28373dc2f64e4c0ec65c6a  libgfortran/generated/maxloc2_16_s4.c
! faf98c771f31dd6173a482b02cd412de  libgfortran/generated/maxloc2_4_s1.c
! c2ef85345d4e3d41e27a0f8b1f5e3052  libgfortran/generated/maxloc2_4_s4.c
! 377c0ca39a55561510c489dded3e32b4  libgfortran/generated/maxloc2_8_s1.c
! 1e59175eb6ae804b5c7b27bc8794d6cf  libgfortran/generated/maxloc2_8_s4.c
! bbab3934a3bd9ad75df531fa64b48e35  libgfortran/generated/maxval0_s1.c
! 3db68e9dd88046335b899e2fd42854a2  libgfortran/generated/maxval0_s4.c
! 8dc7a135da85fff6661edaa8212f3ac4  libgfortran/generated/maxval1_s1.c
! ed5dee155530fd505da8442d5f349cda  libgfortran/generated/maxval1_s4.c
! 27accc7ae0583c59dac6fe220b579b13  libgfortran/generated/maxval_i1.c
! 27cad9de454a6c138a33383c96de0017  libgfortran/generated/maxval_i16.c
! e1d35b45d936c3963c8189a4bab18bea  libgfortran/generated/maxval_i2.c
! c265d587bac3ff1574756aa3adb80b40  libgfortran/generated/maxval_i4.c
! bbdafed3e80186faef906d833eb60c92  libgfortran/generated/maxval_i8.c
! bb468bd9f5971751b4abc470244f7524  libgfortran/generated/maxval_r10.c
! fe7e71722c03a4df68ce37b8d6969aea  libgfortran/generated/maxval_r16.c
! acba8c243448bfcd925c1b6cb17993f2  libgfortran/generated/maxval_r17.c
! 3987b23df724a76cd27f73cb6d868a63  libgfortran/generated/maxval_r4.c
! e239382b566603f9d4c450c5f341b36e  libgfortran/generated/maxval_r8.c
! 7952874df6d939afd41cae4efc9f13de  libgfortran/generated/minloc0_16_i1.c
! 028c9f15b8bf376ed00fb34243c997af  libgfortran/generated/minloc0_16_i16.c
! 890cd9c864abe604c339c854d9678050  libgfortran/generated/minloc0_16_i2.c
! 9c56b3b406c498fd3860cb8a3c2551ad  libgfortran/generated/minloc0_16_i4.c
! 37d911b6aa119219049328024fcaac7f  libgfortran/generated/minloc0_16_i8.c
! db3f85b92e9f6c184bbc20f7b661b430  libgfortran/generated/minloc0_16_r10.c
! e3cd905840b6ff8218d83a033f9614f0  libgfortran/generated/minloc0_16_r16.c
! b09b42cf971b6278327d5eda5768a9c3  libgfortran/generated/minloc0_16_r17.c
! e14e68be4d8f64478e3bd5d07d660a28  libgfortran/generated/minloc0_16_r4.c
! f6a96f15869ecdaca9f93c1c74c7a547  libgfortran/generated/minloc0_16_r8.c
! 80e61c97fbfff51602fb6576f3273eb3  libgfortran/generated/minloc0_16_s1.c
! 98fa501649e976967c618eb68fbc8afa  libgfortran/generated/minloc0_16_s4.c
! 773dd3274adec0198c477f8b59963969  libgfortran/generated/minloc0_4_i1.c
! 812fb71d6d4fede1f7a94689af15b629  libgfortran/generated/minloc0_4_i16.c
! e4e6ed305885f18d70afcd0d85b33669  libgfortran/generated/minloc0_4_i2.c
! 32feeb4cbad405a4908756ffb7004e46  libgfortran/generated/minloc0_4_i4.c
! d2575fbe4fb5b5010965711b9b4ff398  libgfortran/generated/minloc0_4_i8.c
! 7908ceafc7a38e4584c26acb92c58b24  libgfortran/generated/minloc0_4_r10.c
! 8101fb3e498a4ecafa79dc11356af927  libgfortran/generated/minloc0_4_r16.c
! 1e9393767c52edd050bc80c2652f8159  libgfortran/generated/minloc0_4_r17.c
! c625fa09e9ffa999e2f77ed6409d41a2  libgfortran/generated/minloc0_4_r4.c
! 3b018270130a037f0897c2aa036c3fd4  libgfortran/generated/minloc0_4_r8.c
! 1b7b759ab28dd5f033fa1a10885875ad  libgfortran/generated/minloc0_4_s1.c
! b10a6a10b0817fab6eb527c7ac1750ee  libgfortran/generated/minloc0_4_s4.c
! c5e8ca7113d3199897d5c54892e7da2a  libgfortran/generated/minloc0_8_i1.c
! c61b20b39450cd9fb73dfe943dd4a7ef  libgfortran/generated/minloc0_8_i16.c
! 3db0dbbe12382916e853629f2c2c4ee4  libgfortran/generated/minloc0_8_i2.c
! b320ba4cc51c936ea008fb73a97a4b77  libgfortran/generated/minloc0_8_i4.c
! 6a86db28fb22c6c1d8053ffacb8f0f09  libgfortran/generated/minloc0_8_i8.c
! adb0bcdb869d8ef9b52ff77b7465b303  libgfortran/generated/minloc0_8_r10.c
! a0cb2dd43a315c028eda7a7bcf7b19cf  libgfortran/generated/minloc0_8_r16.c
! ac788c952b70d3c96599265e10ff44f6  libgfortran/generated/minloc0_8_r17.c
! 6b02003f411c1f6ebd1fff024a99e799  libgfortran/generated/minloc0_8_r4.c
! 6aa787a6e3cb26b9d283dc3a482a4669  libgfortran/generated/minloc0_8_r8.c
! e90ffa78cf9a2f6b1c09fa43826d0f0d  libgfortran/generated/minloc0_8_s1.c
! 1cadcf61a98238ad0bd9ef680ba8518b  libgfortran/generated/minloc0_8_s4.c
! 4d95aec018137c121d0ecb43ff33f092  libgfortran/generated/minloc1_16_i1.c
! c13bdde6bf3a3ee10223ed08d72c4c2a  libgfortran/generated/minloc1_16_i16.c
! 81b6a4d4ec0c94b5ed38ccc358731a7a  libgfortran/generated/minloc1_16_i2.c
! 785a6aef2f5a66d4ef9685e26bc054f7  libgfortran/generated/minloc1_16_i4.c
! b22201c1c02184e430f6cc63cdea7930  libgfortran/generated/minloc1_16_i8.c
! 27f478a94feebb9305542f1745d5b6f4  libgfortran/generated/minloc1_16_r10.c
! 17ad106d35231d2f89d4e82b96c12800  libgfortran/generated/minloc1_16_r16.c
! b998f4524053840b1511dd46b980460b  libgfortran/generated/minloc1_16_r17.c
! cfc3900e4407c1a6dbeb59457ccf9b26  libgfortran/generated/minloc1_16_r4.c
! 6fff87ff4ad484aaafb7a0b03820ae9a  libgfortran/generated/minloc1_16_r8.c
! f1507c403904a3006e396976c1f548e9  libgfortran/generated/minloc1_16_s1.c
! 1cc537e0737594bdacc0ebc026fd728f  libgfortran/generated/minloc1_16_s4.c
! af95a0741472502ccdf4b14eca650731  libgfortran/generated/minloc1_4_i1.c
! 581599880a5e18018df7096a48139382  libgfortran/generated/minloc1_4_i16.c
! 95c95c6f9e0fe402ed18e86957c67122  libgfortran/generated/minloc1_4_i2.c
! da62f3e9d5c3af09495c71bc57510ccd  libgfortran/generated/minloc1_4_i4.c
! ab8ec068ffaebdaf1f3b288d423b5346  libgfortran/generated/minloc1_4_i8.c
! 94fe64ddc5ce571ea4faee70acde2a99  libgfortran/generated/minloc1_4_r10.c
! dfb3426d440965537fa04f7aa01e98b5  libgfortran/generated/minloc1_4_r16.c
! 2a1c2a9ed28efbb8fcfbfb029dca760e  libgfortran/generated/minloc1_4_r17.c
! b270a875debcdd163bb085b62880aca5  libgfortran/generated/minloc1_4_r4.c
! 54e1d4b9176df78523ad908d887f59f4  libgfortran/generated/minloc1_4_r8.c
! b2663ccaff98ff0d7fe2281ca0b7dd87  libgfortran/generated/minloc1_4_s1.c
! 6de7e34163906ce22ccba2157c5b45fb  libgfortran/generated/minloc1_4_s4.c
! f03d419e3b14b99669f176bb5489e0ba  libgfortran/generated/minloc1_8_i1.c
! 2df54b1d5e6abf03ba6a9057b787adee  libgfortran/generated/minloc1_8_i16.c
! 57a1ebef875d7297f203230dc6a362f3  libgfortran/generated/minloc1_8_i2.c
! 568339fdb77c71c56408226a4ad68f96  libgfortran/generated/minloc1_8_i4.c
! e0f3b9d1e4595628fc767088c18ff678  libgfortran/generated/minloc1_8_i8.c
! 400740828cc970d673f97e6f8f75d188  libgfortran/generated/minloc1_8_r10.c
! 8db40a6d85225aee1d4412277874fb42  libgfortran/generated/minloc1_8_r16.c
! 1022bde09145492293a0f6d85691bed4  libgfortran/generated/minloc1_8_r17.c
! 097a1720c8ad5611e8007d8c2fe4f5f4  libgfortran/generated/minloc1_8_r4.c
! 724c3577ebbb6981ff52d5107070850c  libgfortran/generated/minloc1_8_r8.c
! 19d066969b1767551df155353497444e  libgfortran/generated/minloc1_8_s1.c
! 95f11ef80cbb94767365e5eb16000d0a  libgfortran/generated/minloc1_8_s4.c
! ec8e5eb3cbb1ec2e0f866b0cf98ca60d  libgfortran/generated/minloc2_16_s1.c
! c4262c4fb85df43e1da1d7d593b9f937  libgfortran/generated/minloc2_16_s4.c
! d35502f79efb0ca7a8c0c962aa8110b1  libgfortran/generated/minloc2_4_s1.c
! 9aa255208a799aea0104b31543f3abc6  libgfortran/generated/minloc2_4_s4.c
! 8e0e1599fd3613b25c96be39c402ebac  libgfortran/generated/minloc2_8_s1.c
! 718e7e26fd3b1bc3578daaae7b2cc6b6  libgfortran/generated/minloc2_8_s4.c
! bc1cd858c461d4b934ceaf97ce60113e  libgfortran/generated/minval0_s1.c
! 42bc79a21c2cc68116584f2e3fd38e55  libgfortran/generated/minval0_s4.c
! cbe49b64dd6a5c52f3d4f1ec0e38727c  libgfortran/generated/minval1_s1.c
! a189a1db32b865a2f1353ab9f38df6e7  libgfortran/generated/minval1_s4.c
! 81c7a04f34a56d156de8b3a2f52152f5  libgfortran/generated/minval_i1.c
! 899452c0064216e48953c0d3bda3d81f  libgfortran/generated/minval_i16.c
! c86f3ae90cc9963689812bcb6fdd3e72  libgfortran/generated/minval_i2.c
! b19eac07ae5b152afb5e52966619ef96  libgfortran/generated/minval_i4.c
! aaab9718d49c0eeb1dfb7163062cc6fc  libgfortran/generated/minval_i8.c
! 2861083e96fc1887c40f4ef971004b68  libgfortran/generated/minval_r10.c
! 08e2cf98bfc6c124292eef2a07780202  libgfortran/generated/minval_r16.c
! 9d15bf4b88a382ccaf240d32cbe26e97  libgfortran/generated/minval_r17.c
! 57054f2731e10ad49e9cfae9550f77f4  libgfortran/generated/minval_r4.c
! 63b4062603da946f7ce592900b1999b0  libgfortran/generated/minval_r8.c
! e62e322f009e327c3bfe6a84c9de1f5b  libgfortran/generated/misc_specifics.F90
! 3f7adf7b0dec9aeb758352a8c29a5285  libgfortran/generated/norm2_r10.c
! 8266459e27319f1b265e34e0b92cc3e1  libgfortran/generated/norm2_r16.c
! b56508da00a0c476421c85d2a15408cd  libgfortran/generated/norm2_r17.c
! c90618629cc3b4eeffc6a90e58ae7e0f  libgfortran/generated/norm2_r4.c
! 6fbfefd7c2214f636f7a560800b395f7  libgfortran/generated/norm2_r8.c
! cf1cc40743050c495f97f89fc6c8cf62  libgfortran/generated/pack_c10.c
! a4a0d3c5a3c9f808df00fcad143fa451  libgfortran/generated/pack_c16.c
! 3b78dbcb4a723c8e5d4abad5b3488acc  libgfortran/generated/pack_c17.c
! 1f17479779b28baa61ed37a2cddb5569  libgfortran/generated/pack_c4.c
! 14725af6dd0eadbb6a1e5c98453b2539  libgfortran/generated/pack_c8.c
! 42125b502ab2c3531f02d42d1fc8a6af  libgfortran/generated/pack_i1.c
! bba62bc8e1dcdd8bafdd4e1117ebf925  libgfortran/generated/pack_i16.c
! 61d90fb4ea8a916ff64505adf2ad032c  libgfortran/generated/pack_i2.c
! eaff75121826d8a2714760346a18ba81  libgfortran/generated/pack_i4.c
! 6d2381d82376d2eaa1910e4f36186a31  libgfortran/generated/pack_i8.c
! dcdb0f93107e95402bea55cfa98ae7b3  libgfortran/generated/pack_r10.c
! 66c9211ec496e1394c0c50f9257c5588  libgfortran/generated/pack_r16.c
! 525f990c865719f5656a01a6bd9391f9  libgfortran/generated/pack_r17.c
! edadf51d0359b7d9294c73146f4d5fe0  libgfortran/generated/pack_r4.c
! 7ed3f82654b81d14699327492f5b71a5  libgfortran/generated/pack_r8.c
! 8d68d57ffe23bd17ba1abb4abe0884d5  libgfortran/generated/parity_l1.c
! 06fcd790d17c25c85b4a851cb70d4011  libgfortran/generated/parity_l16.c
! 276e8a83e2ea6e2f8b6714ba46c38ef3  libgfortran/generated/parity_l2.c
! 369e1a520b7b1ed24a63dce7388243d1  libgfortran/generated/parity_l4.c
! 691bbfbfd90c8fbd1b1630967c9b394d  libgfortran/generated/parity_l8.c
! 586f8940e08c2b7fd05ac63a2f928c45  libgfortran/generated/pow_c10_i16.c
! a0878e55230ff3baf5ce733e6fa1dc38  libgfortran/generated/pow_c10_i4.c
! 5314b93b219cfc50759a5a0d92e225f0  libgfortran/generated/pow_c10_i8.c
! 47134368a46c463c4765910d315b1119  libgfortran/generated/pow_c16_i16.c
! a84feb2d3ac9692f94396683df690372  libgfortran/generated/pow_c16_i4.c
! c65436280eb372dce46993a2dd3806b9  libgfortran/generated/pow_c16_i8.c
! 08a0c261ad98c8d3f43649a0fc21e5ef  libgfortran/generated/pow_c17_i16.c
! 38fa6bd4b65ddb2f0667a85cc9f77560  libgfortran/generated/pow_c17_i4.c
! 16b539eef20b8f6d51b7492fbc32bd8b  libgfortran/generated/pow_c17_i8.c
! 2481a8e7d0aab0ee7d8f1f394764448a  libgfortran/generated/pow_c4_i16.c
! 5647d5adeaa4e6c123736924091a4c0b  libgfortran/generated/pow_c4_i4.c
! c7717ca762276a28df2ce18ee8430241  libgfortran/generated/pow_c4_i8.c
! 40f9600546d5e590a028850b37c963e5  libgfortran/generated/pow_c8_i16.c
! d3aeae6713733eb9f47a0b71808cef9b  libgfortran/generated/pow_c8_i4.c
! da7c73874a68b1ce33bfdfaf7ded86a7  libgfortran/generated/pow_c8_i8.c
! 36b830ef071d6e863203083661c79e0b  libgfortran/generated/pow_i16_i16.c
! ce676809de476d5611ca2dc9e06a7f11  libgfortran/generated/pow_i16_i4.c
! 61d182fa1c0c001d28c7e1d4d9ebd023  libgfortran/generated/pow_i16_i8.c
! 523c6bc9cd07c5a0f4eb4508ee45b7b7  libgfortran/generated/pow_i4_i16.c
! 3dac412743fa558f9f3ca45b8687d82a  libgfortran/generated/pow_i4_i4.c
! d7860dd1b641c6a0073afc9685ce299a  libgfortran/generated/pow_i4_i8.c
! 7ffa63ddcfd39cdaef9fec2b77c0e756  libgfortran/generated/pow_i8_i16.c
! 75a34a2ba4763461b2a28daab5f9c731  libgfortran/generated/pow_i8_i4.c
! d8db8d1546e98c0c7124922dbc3ae3e9  libgfortran/generated/pow_i8_i8.c
! 9716a724eb7816e9a494d4eb089aa019  libgfortran/generated/pow_r10_i16.c
! 79a36d87a4f3ef2afb614fae864bdcbd  libgfortran/generated/pow_r10_i8.c
! 02fa16fbef55826f23f6820aa3816ce3  libgfortran/generated/pow_r16_i16.c
! a9c73d30923fe052844dbe5014517b96  libgfortran/generated/pow_r16_i4.c
! 52b4d8e7a91044b1b278f1cc6e033ac0  libgfortran/generated/pow_r16_i8.c
! 29920452b31a63f8b310c2ad5e277850  libgfortran/generated/pow_r17_i16.c
! 62df542114f47d428c4add1550bb72eb  libgfortran/generated/pow_r17_i4.c
! 8f31f329754c54c0b5a3c43d74411c14  libgfortran/generated/pow_r17_i8.c
! dfbd1b38d90743b97b996e4e7ad83907  libgfortran/generated/pow_r4_i16.c
! a101651b182fc1dfc84b7ec139a0e3c8  libgfortran/generated/pow_r4_i8.c
! b1b35dcf5271a7e1dd2f7d632b37dffb  libgfortran/generated/pow_r8_i16.c
! cf343d3a8cf69a27a8800b0837af9db2  libgfortran/generated/pow_r8_i8.c
! 8be139621564963e4c9a23075585a0f3  libgfortran/generated/product_c10.c
! ed0b40f4ad9dfdc607ed0fc7ecb8c0c2  libgfortran/generated/product_c16.c
! f8ca964e1724b7e602fbb0a1ce48b542  libgfortran/generated/product_c17.c
! 69a6b51d250beb1e91953259c58b46b6  libgfortran/generated/product_c4.c
! be0a9d2668d32647676a692283082731  libgfortran/generated/product_c8.c
! 9a86b55f4c460a91adcfa984abf76db3  libgfortran/generated/product_i1.c
! ba26a38e68b22827cf8f9a9c6fbf1f05  libgfortran/generated/product_i16.c
! ffa9093389d0e6d427c663932ed7a70d  libgfortran/generated/product_i2.c
! ae97becae99a20eeb45302533b998ff4  libgfortran/generated/product_i4.c
! 37b7e27c92eaceda49f630e684edcece  libgfortran/generated/product_i8.c
! f01f2c2ade292726c1edd98a5fe70f27  libgfortran/generated/product_r10.c
! 3838be6b967b48fa8d64f9bb89c85a9e  libgfortran/generated/product_r16.c
! bdbd2c2b0aabf9a548394f891c425266  libgfortran/generated/product_r17.c
! 0571e81b43341a0d082394354d4da1e0  libgfortran/generated/product_r4.c
! 8a8a1396080dbb21c0c8a3983645f0d0  libgfortran/generated/product_r8.c
! 25c7cb04220db71866d2bd5f9eb32334  libgfortran/generated/reshape_c10.c
! 1023a48b3963f3040419b85740b16732  libgfortran/generated/reshape_c16.c
! c4b39e8164d6fa82be1550c4b0bf3f48  libgfortran/generated/reshape_c17.c
! 452ec5770e98516d3a3f2371f5de17d9  libgfortran/generated/reshape_c4.c
! c6b88fd0e2618bc74158d17d593a97e8  libgfortran/generated/reshape_c8.c
! 2cb3f9886004b0513c92116b51121918  libgfortran/generated/reshape_i16.c
! 2bd6bb4f9484c1042e1ebbba2b8b1581  libgfortran/generated/reshape_i4.c
! df9b1bcf9e7dedbeab8bfcb698c52aa8  libgfortran/generated/reshape_i8.c
! 7ca76b29755edd8dce80e7083f361cbc  libgfortran/generated/reshape_r10.c
! 57fe8c1de952c540e6cd8834f8b44e31  libgfortran/generated/reshape_r16.c
! 2ad7f5975c7da88717d0946939b5b3bd  libgfortran/generated/reshape_r17.c
! 3ab6bccea5a45d1d670a9f98aeabc836  libgfortran/generated/reshape_r4.c
! 198412e4d4acf0461a334b07aa42e258  libgfortran/generated/reshape_r8.c
! 9462581f2953a8d7f7814ddcd65e2f7a  libgfortran/generated/shape_i1.c
! 50704a2430763a518779cf02bcd6759f  libgfortran/generated/shape_i16.c
! 4f2f91e228c5a3dc316b4a6300af83ad  libgfortran/generated/shape_i2.c
! c989d3cdddbff395dc125bebbfca0dd3  libgfortran/generated/shape_i4.c
! e1d712e1880b048dc99086e59fe5f113  libgfortran/generated/shape_i8.c
! 4b23fa3db009c6a569bd775344c307c2  libgfortran/generated/spread_c10.c
! b3466aa7e2315839700291277f08573c  libgfortran/generated/spread_c16.c
! 3d6e9a55b9e24b079cc12b66e79f046a  libgfortran/generated/spread_c17.c
! 51f25e9c53a4769e835ffea204e3fd44  libgfortran/generated/spread_c4.c
! a05efb68383339f4721f4da4e7f2488b  libgfortran/generated/spread_c8.c
! 6be172b4905d8115a9ba986ff13bfaea  libgfortran/generated/spread_i1.c
! f98479f4d31f52ae7c18cd937b5dcf35  libgfortran/generated/spread_i16.c
! ade01c4ae20ceeb68fd2379f3bc29520  libgfortran/generated/spread_i2.c
! 7966085d7d39789dfd80a220eb07207a  libgfortran/generated/spread_i4.c
! e53b34b53cb1363ac091e0c92f6a09ec  libgfortran/generated/spread_i8.c
! b957ad55446afcf32b4087c6ad6cf961  libgfortran/generated/spread_r10.c
! d2b0f1221b091e1d0b32975e346e23a8  libgfortran/generated/spread_r16.c
! 1efb75d78f0c2dda870a91d0eb6f6752  libgfortran/generated/spread_r17.c
! 1d965a897e81b159bd5218c993786b8e  libgfortran/generated/spread_r4.c
! 9af970dc866cdf12b9933d3768823819  libgfortran/generated/spread_r8.c
! 87405832e0b7356581c3865c622b3dbf  libgfortran/generated/sum_c10.c
! 13e555dbeca657525aeb70b68d315c3e  libgfortran/generated/sum_c16.c
! 4eb8ae3a800e08c3578e1d0a1357683f  libgfortran/generated/sum_c17.c
! 3cb484ddb7bfa6333a1a903ac76c5402  libgfortran/generated/sum_c4.c
! 8bafa93d7af5d7e7b47c220dcfebcd46  libgfortran/generated/sum_c8.c
! db3a9d9123a55b029f5285c0b5dbf21d  libgfortran/generated/sum_i1.c
! eb123c323c71a8919cf782696b427914  libgfortran/generated/sum_i16.c
! 559da3b7219f6cc5a6c0908b32b277bd  libgfortran/generated/sum_i2.c
! b482504e1f9f9eaada274f6736ce2556  libgfortran/generated/sum_i4.c
! 8890be001481c4dcc36c8ddee6a8edde  libgfortran/generated/sum_i8.c
! 8209c3f248e49f2d1b76dd3724d0a9ae  libgfortran/generated/sum_r10.c
! 59e0f43d5fd87db80f30b972a10d81c3  libgfortran/generated/sum_r16.c
! 7b02552b7da6738429ac1e81eabd4fbf  libgfortran/generated/sum_r17.c
! 5f979d29293a26246d15a2306dae273f  libgfortran/generated/sum_r4.c
! 6bc215889e15935246d4526370e1bdce  libgfortran/generated/sum_r8.c
! 7f41a219d89fcb47def9180a15df6411  libgfortran/generated/unpack_c10.c
! 4acbacc761bc95db431f919ecf4070f6  libgfortran/generated/unpack_c16.c
! eae707272b5829d05cde2a0df1ec7583  libgfortran/generated/unpack_c17.c
! 53706a77da1c57035a3dd96bd834b212  libgfortran/generated/unpack_c4.c
! d7787ec953ddb4e233791c26cfb0a7b5  libgfortran/generated/unpack_c8.c
! d3982183e0963b64fd3db59c454ce3ec  libgfortran/generated/unpack_i1.c
! 2fdca7a046ba721faab27d4576cb0bc8  libgfortran/generated/unpack_i16.c
! 0e68cbc7ddc8184c20d06498480f1414  libgfortran/generated/unpack_i2.c
! 948742f43ae43b1e37de06ff73bca703  libgfortran/generated/unpack_i4.c
! 6aeb1a0ae5d0887436a686e680ee234b  libgfortran/generated/unpack_i8.c
! 951b6e383cc98171485758d1463b20b8  libgfortran/generated/unpack_r10.c
! d3aca4f8d1edfd1c9c2dfc6b4c9f4a2e  libgfortran/generated/unpack_r16.c
! 2eddeadd3aead196610b1b2dc56297ba  libgfortran/generated/unpack_r17.c
! 6dc0aebc68b42603e2b49d2feb61d5be  libgfortran/generated/unpack_r4.c
! af1e0feeab04d04e55e197d3bd630030  libgfortran/generated/unpack_r8.c
! abe776a2a8ff2f6c03f56d0f05fe3fde  libgfortran/gfortran.map
! 022ddb39b5dfb23e56f8c349dda234e2  libgfortran/ieee/ieee_arithmetic.F90
! 922de90c7aa879bc75ab02b6ee5a9af2  libgfortran/ieee/ieee_exceptions.F90
! 9b0cbc6a93c8410682bebcb499ca285b  libgfortran/ieee/ieee_features.F90
! 605161f750036d7f89924cbe3aacbc66  libgfortran/ieee/ieee_helper.c
! 0306a899783adfa4c2fce57279c33e6c  libgfortran/ieee/issignaling_fallback.h
! 098dbe8c67431dec1da38f2c90b14b3c  libgfortran/intrinsics/abort.c
! e4c78e724174f57c3d57ae8084e032aa  libgfortran/intrinsics/access.c
! 749e2a31b26acabaf76577b380d125b3  libgfortran/intrinsics/args.c
! e8a64408cd0747190e956c88fb19bb95  libgfortran/intrinsics/associated.c
! fba2c2566f2c90f92ff7258614a535e9  libgfortran/intrinsics/c99_functions.c
! d178159f4b7b9d52c890c3dfa81f5be1  libgfortran/intrinsics/chdir.c
! fe1b26289295fcefb093bb9694ceca1f  libgfortran/intrinsics/chmod.c
! e67e46af85ebac5bc0a736f906d4f3d6  libgfortran/intrinsics/clock.c
! 5945ccc51125c8d55772c091fb1c40ba  libgfortran/intrinsics/cpu_time.c
! af29276d31f4b0794efcbb20bc55e683  libgfortran/intrinsics/cshift0.c
! 1c70327e4ac66420c1f83dc20703dc09  libgfortran/intrinsics/ctime.c
! b96d06a2431b61fc672a12388aecd4f9  libgfortran/intrinsics/date_and_time.c
! f9c37acd66d311987aee77625d6d96a9  libgfortran/intrinsics/dprod_r8.f90
! 472bc612d1ae52cba9bd458e6f70ed63  libgfortran/intrinsics/dtime.c
! bfa572c97a2ea6c59de3b53b9af3b7a6  libgfortran/intrinsics/env.c
! 85ac554e7781fde0a65da63524701cec  libgfortran/intrinsics/eoshift0.c
! 9490caec9513caa7dc999055dc37d1c2  libgfortran/intrinsics/eoshift2.c
! 16267d04b264bcf3e882f0df4b2bcd56  libgfortran/intrinsics/erfc_scaled.c
! ab2c6db7b0a1e20a3e5f2568a2ea9f78  libgfortran/intrinsics/erfc_scaled_inc.c
! 02d59e173f36060c3ba4ec6404ada67a  libgfortran/intrinsics/etime.c
! c9c4f73b03c8f02aaf409965382c4904  libgfortran/intrinsics/execute_command_line.c
! 5146ee4a70325788ba31c789df67ae32  libgfortran/intrinsics/exit.c
! 46036114be296df98eed4c307b7e6601  libgfortran/intrinsics/extends_type_of.c
! a066286e5280d88822329a64cf96f66d  libgfortran/intrinsics/f2c_specifics.F90
! 89ee7181a8a78e8ef3ccb7a4129e924a  libgfortran/intrinsics/fnum.c
! d698b23840ca602acb025c5e2c8f3544  libgfortran/intrinsics/gerror.c
! 8299674a5df5a00940f03141911a8c91  libgfortran/intrinsics/getXid.c
! 788ce51a4471db37cb412fdd4d61846a  libgfortran/intrinsics/getcwd.c
! 4b2c35886aeb2c2e2df0d304e4bec76a  libgfortran/intrinsics/getlog.c
! 7211c33e1348afdc4a350cbc4b149d07  libgfortran/intrinsics/hostnm.c
! f8ec3804c49bfd9c1cae3c331119f603  libgfortran/intrinsics/ierrno.c
! 6730f04cb81d58b1c7f57dcdf9b03ab1  libgfortran/intrinsics/is_contiguous.c
! f99f17c7e73a4b35ce5ecac015e7eff8  libgfortran/intrinsics/ishftc.c
! d5cce4e9128a8a497b1006d07d308699  libgfortran/intrinsics/kill.c
! 8788a28944e462b598b5dae5aebd4e67  libgfortran/intrinsics/link.c
! 89e73ff54841bf638e5a44531fea9541  libgfortran/intrinsics/move_alloc.c
! ae7806fbc7736ef993908686b683031d  libgfortran/intrinsics/mvbits.c
! 905757aa129ba1d653050130c8cb43c3  libgfortran/intrinsics/pack_generic.c
! d8fe76c04d32b2e9060c44f82faef2c4  libgfortran/intrinsics/perror.c
! 6c34e3415bc1e17dfffe2d2c6ffb2836  libgfortran/intrinsics/rand.c
! 8d094c7bbb8283d1e49fd37fed7a7223  libgfortran/intrinsics/random.c
! ea3e9e669ec31e7d48aa37031c8edde1  libgfortran/intrinsics/random_init.f90
! e435c51b00d2d2d3ef16c832c55e663a  libgfortran/intrinsics/rename.c
! 0eddf1a7beb3c9db17e67e9eaa14ca23  libgfortran/intrinsics/reshape_generic.c
! cbcf8d2d5ba73af0dfb9ee08e047a6f8  libgfortran/intrinsics/reshape_packed.c
! a9c8cf9f8476442e0f8da23f5ac3d48d  libgfortran/intrinsics/selected_char_kind.c
! d59f581e29a5a2d753c5dc040c089faa  libgfortran/intrinsics/selected_int_kind.f90
! 5ecedd4ff82b0c04db94a8999ba06dbe  libgfortran/intrinsics/selected_real_kind.f90
! 2a767cc7dc06de4d5c7ff56907d2ce7a  libgfortran/intrinsics/signal.c
! e714edb7b6d98fefec00a02e1397b7be  libgfortran/intrinsics/size.c
! 31e578b4fbf1e0978beae8fbaeb5b58f  libgfortran/intrinsics/sleep.c
! 407d30ec2f558e86486acb03f7160705  libgfortran/intrinsics/spread_generic.c
! 2d6481a7f7a20345e33a725753f62cce  libgfortran/intrinsics/stat.c
! 2b16ff0bf376e52143b14e7486a6db3a  libgfortran/intrinsics/string_intrinsics.c
! 15be15c42527ba3ec418aa8761643057  libgfortran/intrinsics/string_intrinsics_inc.c
! 0ef3bd0347aa1b5f2a499c9d2ce9d034  libgfortran/intrinsics/symlnk.c
! 98e0916764ea7f9084e041db0470b862  libgfortran/intrinsics/system.c
! 24334ba74c9f879dd2e7928c829ce22b  libgfortran/intrinsics/system_clock.c
! b45142e736f65a2937ba7cb14de9bf55  libgfortran/intrinsics/time.c
! 08c87532319018dd1d103e9bab042cf5  libgfortran/intrinsics/time_1.h
! 2824de2b57cda4188a6b1e8c6f70b48c  libgfortran/intrinsics/trigd.c
! f3de0a89d5a1d57a0b8508351c7863a3  libgfortran/intrinsics/trigd.inc
! 0f70590a693f9211f6f9a3e8d3c10fcb  libgfortran/intrinsics/trigd_lib.inc
! 02b29eac6eca3b3c906a21e9391d37b7  libgfortran/intrinsics/umask.c
! dc5a158f5302465b3f2e59928d73d101  libgfortran/intrinsics/unlink.c
! dff13028e96ddc3c2d80a2840804e959  libgfortran/intrinsics/unpack_generic.c
! 1ec7f0ce3388fbcd3d20284727bdc7c6  libgfortran/io/async.c
! c417236572002305532e7cfa88a37440  libgfortran/io/async.h
! 0c7ff477b133f537b180889bfa83dd50  libgfortran/io/close.c
! b8815933feecce36a6c78d90808f93df  libgfortran/io/fbuf.c
! 73dd7e552edd651f8388277f429fa401  libgfortran/io/fbuf.h
! 63f4fcebeec9d1be5d77ca9077b844ad  libgfortran/io/file_pos.c
! 3cfce5ff02a77560eea8993333efe556  libgfortran/io/format.c
! be03b81f4cb15ad5b45e1f0b83d714ff  libgfortran/io/format.h
! 139bce575870e46f5866dc38e4ed9cc4  libgfortran/io/inquire.c
! 3323894eaf14b0bf4f9c0759601b4f45  libgfortran/io/intrinsics.c
! 89e51fc70e97b6d18f788a870fb2e131  libgfortran/io/io.h
! 7cde8ae696797a4bc1cc257ba7d8a653  libgfortran/io/list_read.c
! 389a5f70e7811be5c308de1069d51bf2  libgfortran/io/lock.c
! 98d6832225bb91387b70c7b93d717152  libgfortran/io/open.c
! 82a39b505357f1fef475eb6a133affa1  libgfortran/io/read.c
! 62d999264ba57d39ebca6da3226966eb  libgfortran/io/size_from_kind.c
! 338c22a00116a8b4aa658cf6866a1e3c  libgfortran/io/transfer.c
! 6804c05f31f07473283c24263101986b  libgfortran/io/transfer128.c
! c8d6fca00774525b7db4171a021d595f  libgfortran/io/unit.c
! dc52619e1cfa84b7166abda6759ec678  libgfortran/io/unix.c
! f53bf8a377fabf09b90ff9ac95232c65  libgfortran/io/unix.h
! 363eb7fd4102408ec69da64edac2ee58  libgfortran/io/write.c
! f273395f71a8bb633083e471fc1bbf14  libgfortran/io/write_float.def
! 6b4c3a7d1ef1470d52a6fb5bef0576eb  libgfortran/kinds-override.h
! 840561aa2cceac1389496086176a24b1  libgfortran/libgfortran.h
  0acddc63592eb50916263aa49d35efe9  libgfortran/libgfortran.spec.in
  dc1a87f5ed3520558b0fe9f43e4f5ba8  libgfortran/libtool-version
! 61e3cb51f0b281aef50dab1254b22b5f  libgfortran/m4/all.m4
! ab9bb61b04fe1dacd9460ca03ac1ee8d  libgfortran/m4/any.m4
! 6d169ee2bab60f4e1b066d92202b0e28  libgfortran/m4/bessel.m4
! a89a548262060c3e8f2c5300d41792b4  libgfortran/m4/count.m4
! 102045207b5c918699c7f8d2e32b6579  libgfortran/m4/cshift0.m4
! db64a050ad31b134a6c3d7a5be33a56c  libgfortran/m4/cshift1.m4
! 43589fa15b639d146691cfd16ad9fdc3  libgfortran/m4/cshift1a.m4
! eaca4cc43fbb4e1bf7bd286bc39d2329  libgfortran/m4/eoshift1.m4
! a4c1d6ad9343e8d17168e004e9ffaa9a  libgfortran/m4/eoshift3.m4
  a70290662a995bcc0ff8ac868b6eddda  libgfortran/m4/findloc0.m4
  22271fa12e82c61051f302c3a5072376  libgfortran/m4/findloc0s.m4
  111ea74dceb547cbf63c12832d73d5f4  libgfortran/m4/findloc1.m4
  be432b0e528c65667e6d736e1537515d  libgfortran/m4/findloc1s.m4
  62c4506b866cb09ea489c455e7c2e8bf  libgfortran/m4/findloc2s.m4
! c9d3acabcb2a3d7e0b3b1d593f94970e  libgfortran/m4/head.m4
! 595c9bd3babdb152a57dceb4d80071c8  libgfortran/m4/iall.m4
! 6168aaeac8454fc4554b6c3cd3b2544a  libgfortran/m4/iany.m4
! dc31c3dc230a3473d5aec5fc55dcee49  libgfortran/m4/ifindloc0.m4
! f68d50561c3fad876e6e9c1cd90cbd74  libgfortran/m4/ifindloc1.m4
! 2d09599f11ac5a7c824cafe2082ab158  libgfortran/m4/ifindloc2.m4
  143daeeed4d4e1baa17753b51ddd88be  libgfortran/m4/iforeach-s.m4
  ef77f0d18ce645146e5155d85730a2dc  libgfortran/m4/iforeach-s2.m4
  8bbbce69fc532a405b1b88c79c2ef47b  libgfortran/m4/iforeach.m4
--- 102102,102940 ----
  a25a190e02c8ba2caa2c3dee224eba51  libgfortran/ChangeLog-2019
  561d7b7050b65ea8eac91bc825d5a816  libgfortran/ChangeLog-2020
  14d3ee4271b29519e2e38d5f4214dcc3  libgfortran/ChangeLog-2021
! 04ba4326735f4e023c1e7b6eac76c6d1  libgfortran/ChangeLog-2022
! 3c828253c37d5c893c87c7a557ffa8d2  libgfortran/ISO_Fortran_binding.h
! 6384bf89e5eba5d300b458ab50a195b4  libgfortran/Makefile.am
! c0f0769db111cc17aaad729bbf29c64f  libgfortran/Makefile.in
! afcceb7777065b494d4e0d779ffb764d  libgfortran/acinclude.m4
  77dad7b87b2adfbfda676696055ef90f  libgfortran/aclocal.m4
! 7cd15a336e8d492c3fe9bfc74220a1f2  libgfortran/c99_protos.h
! b34a1449a6d4c316a3dc32fded687341  libgfortran/caf/libcaf.h
! a4a68ce0bc3c30620255a00b35aa803f  libgfortran/caf/mpi.c
! ff82d4152a436a08c5462cc72a218285  libgfortran/caf/single.c
! 8ae52aba7942d5b5531d2d61328be165  libgfortran/config.h.in
! d98febe19d45d5505fe51c368b2da6c9  libgfortran/config/fpu-387.h
! 38cc3f42e6944efb6d2c08d638505e9f  libgfortran/config/fpu-aarch64.h
! 09c1f8d4ef5c90cbef0c72d7661c4932  libgfortran/config/fpu-aix.h
! 3c43dbb5da627bd9695692a6405eb48b  libgfortran/config/fpu-generic.h
! eea0e0afec1c33107225e4e11b031135  libgfortran/config/fpu-glibc.h
! 1a9582b0dc743fc567e776d20261a9ee  libgfortran/config/fpu-sysv.h
  93375010faf12b59ff1618874a0beacd  libgfortran/config/t-aix
! dd9e60ea39d8c6442f3c24c6024aeea8  libgfortran/configure
! 92336f7c4a6eab703aadf15f1953df03  libgfortran/configure.ac
  bbe45eeb78f252ad73cd1709edc231b2  libgfortran/configure.host
! c20919dd6b05ff6a09ed907b720629ec  libgfortran/generated/_abs_c10.F90
! 5d633a0d5a140fa418a2438a61f72c23  libgfortran/generated/_abs_c16.F90
! 2ff18e3af836b0917b9461ec3ea850c7  libgfortran/generated/_abs_c17.F90
! 5e9389dfe3117cbd7b8e4631cd2d0f26  libgfortran/generated/_abs_c4.F90
! 934fcf3830c280e5b522629891433f47  libgfortran/generated/_abs_c8.F90
! c9227c6efef349eab3aa7ebebc8cfba1  libgfortran/generated/_abs_i16.F90
! 4ba0430077cf2c4c7110dbe3387e4637  libgfortran/generated/_abs_i4.F90
! 44b6aea5d7d4c134a8584e42b2aa4cac  libgfortran/generated/_abs_i8.F90
! 4c435be5cf5d482703f466207f22c700  libgfortran/generated/_abs_r10.F90
! b26245caf30a1120bbe8c77a69a650d3  libgfortran/generated/_abs_r16.F90
! a5efbb14fbe7f85bb87b9f8cd89ce1d5  libgfortran/generated/_abs_r17.F90
! e8a9d9f3d08743bbe173627ca76e13e5  libgfortran/generated/_abs_r4.F90
! fcf769acaa450971da7e4e83b34a434e  libgfortran/generated/_abs_r8.F90
! e93406b5643946ced10488ab31bb9a23  libgfortran/generated/_acos_r10.F90
! 0f2fbbbd23e22bb40120e296252fba9a  libgfortran/generated/_acos_r16.F90
! 1cbf40ca17cc7be5913827a8ac0d73a6  libgfortran/generated/_acos_r17.F90
! bc04a24416d6ae6bf9b834a89b6a0301  libgfortran/generated/_acos_r4.F90
! 3dbe99d7c1e5ba310d596a5d738f7726  libgfortran/generated/_acos_r8.F90
! 16932e67179a6cfb646872b6eb77d4dc  libgfortran/generated/_acosh_r10.F90
! 40690994baca5152e0e6f6d13d22458c  libgfortran/generated/_acosh_r16.F90
! fc28e60e4289ae6fd159420465d1eb1b  libgfortran/generated/_acosh_r17.F90
! 3fd633721d0c8f1e9f3dd943d71cd87b  libgfortran/generated/_acosh_r4.F90
! ecd067e421263855dad493eda0f3476a  libgfortran/generated/_acosh_r8.F90
! a891a27aeb3e65309ac938302f798631  libgfortran/generated/_aimag_c10.F90
! dab616d9258a85b441b03cf5658c3fca  libgfortran/generated/_aimag_c16.F90
! ad6ef455a1f7f86b55ae9cae438bde76  libgfortran/generated/_aimag_c17.F90
! df2d8c7dd1b12db7990c370240af3c99  libgfortran/generated/_aimag_c4.F90
! 51f5acdcc06d278f1317937e03a3db20  libgfortran/generated/_aimag_c8.F90
! 3bd8d8a33a463be5709c1f5593f1287d  libgfortran/generated/_aint_r10.F90
! 3a1627143768ce82e9ed8e7e25951cfe  libgfortran/generated/_aint_r16.F90
! 12eb2f722902d88d924ebcaaacf3979a  libgfortran/generated/_aint_r17.F90
! db4084776e0149bb767174013c82a433  libgfortran/generated/_aint_r4.F90
! 8aff07ceeec72449d0d96522168527ce  libgfortran/generated/_aint_r8.F90
! 0fa704459bde1b779523010cd1270fed  libgfortran/generated/_anint_r10.F90
! 4c97497f23ac6b30b9a0e852f85aaad0  libgfortran/generated/_anint_r16.F90
! 3fcf473671b4eb0ef11ebe77d92667eb  libgfortran/generated/_anint_r17.F90
! c6c2d91b1e9bb93ab8f766c0296868ab  libgfortran/generated/_anint_r4.F90
! 83be8b276154b39ec74b57949711de7a  libgfortran/generated/_anint_r8.F90
! 52ecb2ce89c58a18c21687a60dae7401  libgfortran/generated/_asin_r10.F90
! f0211875826d8457442e111a7366c358  libgfortran/generated/_asin_r16.F90
! 96afddaa3af83eee3cd3948c6e296e13  libgfortran/generated/_asin_r17.F90
! 20bbb6be255f7e84a8ddd2769aac3b45  libgfortran/generated/_asin_r4.F90
! a15cba79a2c493d004733938ddccdb5f  libgfortran/generated/_asin_r8.F90
! d922871427b473f28a2fd0fc9ce26d96  libgfortran/generated/_asinh_r10.F90
! 34fd1df46f13da3d0f309032da18b55d  libgfortran/generated/_asinh_r16.F90
! 6ae4b2902a8978cbf5defd5244495ab7  libgfortran/generated/_asinh_r17.F90
! 770505d47629ed7052733bc9eaa4e7b0  libgfortran/generated/_asinh_r4.F90
! ca237f187194ee46d40d1135710493d1  libgfortran/generated/_asinh_r8.F90
! 5a215b743a2b064a7904e66952edee62  libgfortran/generated/_atan2_r10.F90
! 7a5eba703a3e6676cf63df653144f99d  libgfortran/generated/_atan2_r16.F90
! 271c693c3d4b6aed8f5c9674f6f1819c  libgfortran/generated/_atan2_r17.F90
! 358e4b2f0433248f99fdcf94f6c269cd  libgfortran/generated/_atan2_r4.F90
! 745b0e24551e0d23fb76cf00e4bf14f6  libgfortran/generated/_atan2_r8.F90
! 90d09d7d648c971e23349a0a7d9df82d  libgfortran/generated/_atan_r10.F90
! 44390ed7e6628a8cb7e1b86416ee7dff  libgfortran/generated/_atan_r16.F90
! 0b1d1cca4ad462481cb0325376dbb516  libgfortran/generated/_atan_r17.F90
! 14e08c9b348bc584d9a7376a26f8bc64  libgfortran/generated/_atan_r4.F90
! 00e00049ea81a129aecfeca0ff7e9a74  libgfortran/generated/_atan_r8.F90
! a6b8bee6a64616e61a6588fe4e1bf419  libgfortran/generated/_atanh_r10.F90
! 43455b8d798853b2918a22d07b696f29  libgfortran/generated/_atanh_r16.F90
! 3001b69a54149e7a58cf04fa1ec864ff  libgfortran/generated/_atanh_r17.F90
! 9fc13b89304222946a9582ef1fbb54c0  libgfortran/generated/_atanh_r4.F90
! 7fc3682ccb35ae51fc134f040a856762  libgfortran/generated/_atanh_r8.F90
! 15e398379c7160aa2a42916177ef86a4  libgfortran/generated/_conjg_c10.F90
! 2ae8fbeeab6015b5da73ac0529d69534  libgfortran/generated/_conjg_c16.F90
! 075735c1e7e64538a13fd672b81547b7  libgfortran/generated/_conjg_c17.F90
! 3d19244b60125f7b36794463444a1416  libgfortran/generated/_conjg_c4.F90
! f49f0fb766157195a6a99f0d04610904  libgfortran/generated/_conjg_c8.F90
! 217cfcc548d40b7f1ff095bea0f546ef  libgfortran/generated/_cos_c10.F90
! 47d8b543d507ddd5a2445aea3e7c76b6  libgfortran/generated/_cos_c16.F90
! 9c63f3e999ea147902512b58e8865e87  libgfortran/generated/_cos_c17.F90
! 8e8e01b18c35d840e5998492b0335781  libgfortran/generated/_cos_c4.F90
! 02bd90e0c5b41e7cc4d66edcf0f0e693  libgfortran/generated/_cos_c8.F90
! 3ce085c814d91de4ac246ef136545a04  libgfortran/generated/_cos_r10.F90
! 0af0a8fadff9d079756975cb745eb31b  libgfortran/generated/_cos_r16.F90
! c10507249e67735e3a357d54568ba179  libgfortran/generated/_cos_r17.F90
! 5ace3c2f59e31bf83aa8e37dd4531b81  libgfortran/generated/_cos_r4.F90
! 4f7a6710ad785af056dbea5d5ff9c402  libgfortran/generated/_cos_r8.F90
! 2400849163c991e436762a8e994242b5  libgfortran/generated/_cosh_r10.F90
! 0ea200bb19dc0e56ae1fc7269f823b6d  libgfortran/generated/_cosh_r16.F90
! c05c50a2b411f53ac5b01cdf75dfa24b  libgfortran/generated/_cosh_r17.F90
! 0c3866f69ced287d7e8dc067f0fc8991  libgfortran/generated/_cosh_r4.F90
! 1a98feffefbb4f8cf70e3d35d319d0a8  libgfortran/generated/_cosh_r8.F90
! 9d60245faa18571a16b6664a45dba563  libgfortran/generated/_dim_i16.F90
! 526313e4dde46844acfc8db9c94798a2  libgfortran/generated/_dim_i4.F90
! ac9a046918969f4cb8c395acf94fab55  libgfortran/generated/_dim_i8.F90
! 6b3996301b4719d0a03b0428c0a451cd  libgfortran/generated/_dim_r10.F90
! ee435626996f680d97363142d1a1106d  libgfortran/generated/_dim_r16.F90
! e7f4bec9dab5a6970e37923efece2f2e  libgfortran/generated/_dim_r17.F90
! c9c2c8e0fd626db5a2388da479f4b790  libgfortran/generated/_dim_r4.F90
! 4e8c987249bb3f9f13a5201c6755af8b  libgfortran/generated/_dim_r8.F90
! 825d7ef77c86a411978e61eda2778ac0  libgfortran/generated/_exp_c10.F90
! c3df9d5485b896462f7edc681eece0ca  libgfortran/generated/_exp_c16.F90
! 169dcd67f11d0b74aef5d0326261faf0  libgfortran/generated/_exp_c17.F90
! 4a8a8aae2ef2e10d0b5f569716c5ac32  libgfortran/generated/_exp_c4.F90
! c60d160d1460aaee1e00218ffd22d68f  libgfortran/generated/_exp_c8.F90
! fdc36cfd3c5c1044e290c82163e6f921  libgfortran/generated/_exp_r10.F90
! f4983789598ff15432a7d76f5f08c015  libgfortran/generated/_exp_r16.F90
! bbb1093c18e2457dd9955c045e8c78d9  libgfortran/generated/_exp_r17.F90
! 63255490a0c6a80de1e3f30ced612aa7  libgfortran/generated/_exp_r4.F90
! e44a42da331bd9eafac8bda503ab934b  libgfortran/generated/_exp_r8.F90
! d2dce347e86e17cf4505408cb3e37e97  libgfortran/generated/_log10_r10.F90
! 89cf2ce71a68fe935c9125989fd6e3f7  libgfortran/generated/_log10_r16.F90
! d121a401b40a6467fb94dc4eac7512fd  libgfortran/generated/_log10_r17.F90
! 3306d8286d0840b92dd1781fc5b4eb53  libgfortran/generated/_log10_r4.F90
! 646cc0f21676374d798e8b35d74a35d4  libgfortran/generated/_log10_r8.F90
! f803686278253d5655537e4d3a55db47  libgfortran/generated/_log_c10.F90
! dfb23a8ce33fdd389ea0caf2e1edd31a  libgfortran/generated/_log_c16.F90
! 7846498dc8ced3991087d633de0ebde8  libgfortran/generated/_log_c17.F90
! b27fa4c04792728b0ac29c4031101b0e  libgfortran/generated/_log_c4.F90
! 480bb9383c5c0c07d3abff307b97b867  libgfortran/generated/_log_c8.F90
! 928a6af2fbfb161d080695eb7c48b98f  libgfortran/generated/_log_r10.F90
! 4d472f8dcb104e82f869ad6e8623c7e2  libgfortran/generated/_log_r16.F90
! 81e868aae6ec5e77410681ba68c4c091  libgfortran/generated/_log_r17.F90
! ecc040fa611976bf5e3140e0b6fc8ea3  libgfortran/generated/_log_r4.F90
! 21daaf40eabec8684ce71cfb014a0576  libgfortran/generated/_log_r8.F90
! 58d23fcab8c205ec8646583888c33b11  libgfortran/generated/_mod_i16.F90
! 28f1ac5c35290192b6e2eebd77b19571  libgfortran/generated/_mod_i4.F90
! db3fa7017b6efb8cfcb6c6fb845d2e1b  libgfortran/generated/_mod_i8.F90
! b471bd94d6419dba81752afdf7cd6388  libgfortran/generated/_mod_r10.F90
! 84392ba60ca270551caa801c3d070e66  libgfortran/generated/_mod_r16.F90
! 8dd9fa2580658b91486975f6760cdf23  libgfortran/generated/_mod_r17.F90
! e3b86859c8cf6d7b8f3046fe8a570f8c  libgfortran/generated/_mod_r4.F90
! 5f372b75237befa103f1b91aa032cdfe  libgfortran/generated/_mod_r8.F90
! 027cd6a09758daa3c799ae651bddebc1  libgfortran/generated/_sign_i16.F90
! 0fb6ca5463596a437f000ecd53c5592d  libgfortran/generated/_sign_i4.F90
! 424288751123861d6f5f93b9332bb648  libgfortran/generated/_sign_i8.F90
! f7e249fb616db3e1da03590973d991ca  libgfortran/generated/_sign_r10.F90
! d658cf98eb4fbd79c672550b79cc1776  libgfortran/generated/_sign_r16.F90
! 5ab04aff6f40aa89142d64db30713002  libgfortran/generated/_sign_r17.F90
! 2c21726ff921968a0180a997d496be9f  libgfortran/generated/_sign_r4.F90
! 9b469b89a51f39dba0fbec8c76a3f983  libgfortran/generated/_sign_r8.F90
! 8d0f740c6a34b27d0f94941e7d5bf1f0  libgfortran/generated/_sin_c10.F90
! 95dd267af936f21edd9d0e7f3360d6f7  libgfortran/generated/_sin_c16.F90
! bacbedd697b08d224f770c9455ec729e  libgfortran/generated/_sin_c17.F90
! 7f66cde64c5c6093107c3e03174210ef  libgfortran/generated/_sin_c4.F90
! 8477fa9d00e3fecf6e1971f8913e4e6c  libgfortran/generated/_sin_c8.F90
! b5385c1554ad30e38744bc1e19704b1d  libgfortran/generated/_sin_r10.F90
! d9ba4d8f9392d86529e6aad65ac38ce1  libgfortran/generated/_sin_r16.F90
! 167b2369eceebc5b42eea6b488aa2a2a  libgfortran/generated/_sin_r17.F90
! 4bf0c15b8d8d533d0ce798fb7e686b84  libgfortran/generated/_sin_r4.F90
! 7d728213b4151d70606400cdc5d33016  libgfortran/generated/_sin_r8.F90
! e93948f320c264dd40831fe47658ce1f  libgfortran/generated/_sinh_r10.F90
! e9802945a11275e66111c5795247c4b0  libgfortran/generated/_sinh_r16.F90
! 530fe38a3c11883c9cb9c919a76b0165  libgfortran/generated/_sinh_r17.F90
! 9969eed0d168525e901db7c0c201827d  libgfortran/generated/_sinh_r4.F90
! 25330d54a9a4baaaa5885aaf975b8725  libgfortran/generated/_sinh_r8.F90
! d7234c2a3b735abcc05879b3769924e5  libgfortran/generated/_sqrt_c10.F90
! 1093dcdf842f9d8e3ad7656df6433fc9  libgfortran/generated/_sqrt_c16.F90
! 3583028003176842321bf349c5552f9a  libgfortran/generated/_sqrt_c17.F90
! f06c118db051cbc62f2a79613aeff1fe  libgfortran/generated/_sqrt_c4.F90
! aafe526dcbd622a990fb501aea363d40  libgfortran/generated/_sqrt_c8.F90
! f90a583fcf26e0b249fc9a5900d04a26  libgfortran/generated/_sqrt_r10.F90
! b248301672e7047a56f599d6b06e05ca  libgfortran/generated/_sqrt_r16.F90
! 79a889e30f151ee2cf0da520f40050b0  libgfortran/generated/_sqrt_r17.F90
! 077e0df46bd66b1aabaa54abbc6f50cc  libgfortran/generated/_sqrt_r4.F90
! 7c24c068df8b1d76fabeae9162490637  libgfortran/generated/_sqrt_r8.F90
! b490798cd309953f2fe1c92fabb24aeb  libgfortran/generated/_tan_r10.F90
! d7f492d2596f5bbc89aecf9b3ccf448d  libgfortran/generated/_tan_r16.F90
! e495fa30a57aeda88e89959c27b072c1  libgfortran/generated/_tan_r17.F90
! 156e5da4c1646535da839421a55c3fc4  libgfortran/generated/_tan_r4.F90
! b5366456df46028ce18af7ef4d7fcb82  libgfortran/generated/_tan_r8.F90
! f94b99e6557e9ec3e52a14d2478d454d  libgfortran/generated/_tanh_r10.F90
! 13ee7f217d033a9f4abd458ffb4a8d3b  libgfortran/generated/_tanh_r16.F90
! 7c65a45b712d816b0093065654a90c26  libgfortran/generated/_tanh_r17.F90
! d0351524818cc0d65bf4fdbcadb7631c  libgfortran/generated/_tanh_r4.F90
! f794fcbc3ee8968ef85ccabff064366e  libgfortran/generated/_tanh_r8.F90
! 4e13558f64a0295885b668c2ce81e229  libgfortran/generated/all_l1.c
! d4f5c70f59384ed66d23ddf0fcb44a50  libgfortran/generated/all_l16.c
! 7fbea53620bb2ee763a8578e98dad00e  libgfortran/generated/all_l2.c
! 77dc4902e44ab9fad3b5aca79259e68c  libgfortran/generated/all_l4.c
! 326e97508b7f75573c62cd120a87d3e5  libgfortran/generated/all_l8.c
! c353e586fc132e2fa4801492b6869c0c  libgfortran/generated/any_l1.c
! 5c4808d2fab5c50fbbac47563792490b  libgfortran/generated/any_l16.c
! 673fb75f11d539c76b12526c84455a52  libgfortran/generated/any_l2.c
! 88e25d1d786af5f9a56f1c778a34d512  libgfortran/generated/any_l4.c
! 71d61ecc7622ed3f7185740f267338b7  libgfortran/generated/any_l8.c
! 8f555d93f6cb7eaa65eb4115d8f4deaa  libgfortran/generated/bessel_r10.c
! 86679b01d8cec4ecd0794a86ba5516dc  libgfortran/generated/bessel_r16.c
! 0133243497e3952aaa0281e899ade66d  libgfortran/generated/bessel_r17.c
! dd35e7517092508f947e74dcfd3b4148  libgfortran/generated/bessel_r4.c
! 794951ce83906671764b01e81f59ebf7  libgfortran/generated/bessel_r8.c
! 02b61a211cd9f56bd756ea3f30d24581  libgfortran/generated/count_16_l.c
! a49fee65389039ddc8fc95dfb5c4aef7  libgfortran/generated/count_1_l.c
! a7ba2174e3229a9d8e3dfec348236d7a  libgfortran/generated/count_2_l.c
! 4b5f3f14c812a1bd01e9ce80f51e0dcf  libgfortran/generated/count_4_l.c
! 5a567c742ac09a89e3fe08cbd1d61291  libgfortran/generated/count_8_l.c
! 172fab260fddd8a1f75fd54e23239862  libgfortran/generated/cshift0_c10.c
! 5ffa9ff524db3ec183591aa718fc8a5d  libgfortran/generated/cshift0_c16.c
! 8eca839657d127fa36867c3c3710d372  libgfortran/generated/cshift0_c17.c
! 58d157f65ef9f59a22ce9ed3e2ca68c4  libgfortran/generated/cshift0_c4.c
! 63f9de34264ba151b8ccccfba5ee9211  libgfortran/generated/cshift0_c8.c
! 0b41212d580fcce2d2c93ab7a991bef5  libgfortran/generated/cshift0_i1.c
! 8a62c39f3e6930524403ef9ba27865b9  libgfortran/generated/cshift0_i16.c
! b57fa3507a548d966c60063b4ce2490e  libgfortran/generated/cshift0_i2.c
! ed628cf1d3990c5329f52b181e51788c  libgfortran/generated/cshift0_i4.c
! 3a9c0f950fea149a47ea54c6e43b25ba  libgfortran/generated/cshift0_i8.c
! 61be3852052ff905076a8db977c6c5c3  libgfortran/generated/cshift0_r10.c
! dd409f6d9d5e731cdc7a8434f1d0b219  libgfortran/generated/cshift0_r16.c
! 54063de180cc0e1b4668dc73406c2607  libgfortran/generated/cshift0_r17.c
! f49a685fe63ad0b7fbfdd614ecf3b934  libgfortran/generated/cshift0_r4.c
! 10b6bf5f1dbdf9a7a10be9191ce322c3  libgfortran/generated/cshift0_r8.c
! b530b3ba7de4899785aff03f45050d92  libgfortran/generated/cshift1_16.c
! 73158ce361a398b708107a78653586a3  libgfortran/generated/cshift1_16_c10.c
! 74b7ab0fa9f13e500c8a10a33a6e8682  libgfortran/generated/cshift1_16_c16.c
! c50f99f10654378aaa688858b2dccc7e  libgfortran/generated/cshift1_16_c17.c
! 06520e5418aad85da2680ac24da5e25c  libgfortran/generated/cshift1_16_c4.c
! a1931388cc906c033c320578797d578e  libgfortran/generated/cshift1_16_c8.c
! 4fe17b344ca973a5d0ab8e92aeb70b0a  libgfortran/generated/cshift1_16_i1.c
! ba237c0a96e1bbe26646a7ef2e3ec57e  libgfortran/generated/cshift1_16_i16.c
! 548ddb75915565fe1216fc9ee2d796c2  libgfortran/generated/cshift1_16_i2.c
! e298d875aeb52bad38e080414299e79a  libgfortran/generated/cshift1_16_i4.c
! 171e37607173167213f77bc7996c36f7  libgfortran/generated/cshift1_16_i8.c
! 6f02e631551c0adbd456b39e3cfdc089  libgfortran/generated/cshift1_16_r10.c
! 59221bdbedc8295e7755308e191bd49b  libgfortran/generated/cshift1_16_r16.c
! 355e24f3c65142a8493dec63e4872234  libgfortran/generated/cshift1_16_r17.c
! d97787df567666acc6822d613a768f57  libgfortran/generated/cshift1_16_r4.c
! 5411fffcd2a88f13b4b90d86ca12cb6a  libgfortran/generated/cshift1_16_r8.c
! 8e3d942523875a2ad225b915dbf6897a  libgfortran/generated/cshift1_4.c
! 38e1041f0165c37b0e4ad7fa52da7f23  libgfortran/generated/cshift1_4_c10.c
! 3f481f6be6dd60524db171c5114e8a98  libgfortran/generated/cshift1_4_c16.c
! d25540b36d147d42fd685b0502030493  libgfortran/generated/cshift1_4_c17.c
! 94948e37cee03b3e0ad2661be574579b  libgfortran/generated/cshift1_4_c4.c
! a50706f3304fb39c1fb09c9232abf714  libgfortran/generated/cshift1_4_c8.c
! a3d9c15e2a0f7ea908c29da64f642860  libgfortran/generated/cshift1_4_i1.c
! 66df66e7ce19a3a16ff39bbd2f841524  libgfortran/generated/cshift1_4_i16.c
! 812d0c4b3e3a695edae35b546413b710  libgfortran/generated/cshift1_4_i2.c
! 645b961ab859f1ff389f3d1276a51584  libgfortran/generated/cshift1_4_i4.c
! 7febdb37abe95078a8d973ef39aeb160  libgfortran/generated/cshift1_4_i8.c
! 101d2e97b2ada127a342b1710a7000d3  libgfortran/generated/cshift1_4_r10.c
! c2fd504953f0fa19f6a7a1a0c53dd1fd  libgfortran/generated/cshift1_4_r16.c
! 59738c02937176d7458b7e606a00355f  libgfortran/generated/cshift1_4_r17.c
! a53b004050b87f3da0a71f6cb2b9b208  libgfortran/generated/cshift1_4_r4.c
! 2f3abf0648e35fb07ff6be37e6712ac5  libgfortran/generated/cshift1_4_r8.c
! dfb96b1932ff294fd441a463d56cd0a4  libgfortran/generated/cshift1_8.c
! 92c595727c0cac7fadba89abf191b6e0  libgfortran/generated/cshift1_8_c10.c
! 7e52f50035092c9f1d04f13961c5aed5  libgfortran/generated/cshift1_8_c16.c
! ab6a4b0c69ba966d5d6a1be449f0ea99  libgfortran/generated/cshift1_8_c17.c
! 114c87767a226a16f53d8818224ae271  libgfortran/generated/cshift1_8_c4.c
! 84c4ff5636449504bf2b10edcbafcf14  libgfortran/generated/cshift1_8_c8.c
! f9e5d9475c1f16075d84cae5a137baef  libgfortran/generated/cshift1_8_i1.c
! b3f3464f8138628a7928a1c9e07ea587  libgfortran/generated/cshift1_8_i16.c
! 9c470c4774f56fb183e5818b56b187df  libgfortran/generated/cshift1_8_i2.c
! 2964044acfae1c39644094890fd9b99c  libgfortran/generated/cshift1_8_i4.c
! 5d722247e99ab6d9e0578364e817bb3e  libgfortran/generated/cshift1_8_i8.c
! d59a6f2d3709a416f436267e86120a6a  libgfortran/generated/cshift1_8_r10.c
! d2108f85233e8023d1a91f2fdf9d0fd4  libgfortran/generated/cshift1_8_r16.c
! 879577d29fb820c486e0e4a5d789368a  libgfortran/generated/cshift1_8_r17.c
! 861d224e71b1999e1858cd427fd4fb35  libgfortran/generated/cshift1_8_r4.c
! 959eacbe778d5d9ad7cd19b70fd62683  libgfortran/generated/cshift1_8_r8.c
! f8bf0ced2f65433053ca605709adc45c  libgfortran/generated/eoshift1_16.c
! e2b464c509b7581464ddf19428912a5e  libgfortran/generated/eoshift1_4.c
! 3dcfc5c2589d8fdef47a2faa488189c4  libgfortran/generated/eoshift1_8.c
! 33a2f14625ae1687ab3e41c8d7baa110  libgfortran/generated/eoshift3_16.c
! 18aeb3c77dfad8d3e458ce69daf8e33d  libgfortran/generated/eoshift3_4.c
! b48e7df9e68af79cb1be75814c478e82  libgfortran/generated/eoshift3_8.c
! e31ecdf79c8e66e8c57ee6347b6c5394  libgfortran/generated/findloc0_c10.c
! 48afd5cbd9e29ca02b12f08689319f97  libgfortran/generated/findloc0_c16.c
! 235f507cc380a1e3c82225404e357d2b  libgfortran/generated/findloc0_c17.c
! b40048c5707a1d4b8240c642648ca3d3  libgfortran/generated/findloc0_c4.c
! b3f5ae5b85423f244664d625e947aa3c  libgfortran/generated/findloc0_c8.c
! 6218818e7666fa9c27be9b30b711d470  libgfortran/generated/findloc0_i1.c
! 42ae4471f07998f3121e6bb068b4baee  libgfortran/generated/findloc0_i16.c
! 181e7a0a34acd2eb153d9cabc4c37611  libgfortran/generated/findloc0_i2.c
! 1637b246a0245c1a0c3f636dbc9fcf61  libgfortran/generated/findloc0_i4.c
! eaa2fc187e4c725f33b29c9bf2e9a79e  libgfortran/generated/findloc0_i8.c
! 28c7055612b3b8594397b9bb03ab377c  libgfortran/generated/findloc0_r10.c
! 870f3b5971d12c8cd1aad65669208e6e  libgfortran/generated/findloc0_r16.c
! 5c7533fe9eef2959ad4542ee2cb2450f  libgfortran/generated/findloc0_r17.c
! e867326ef53553f3612c7f3f07476276  libgfortran/generated/findloc0_r4.c
! 13ac0cf68c577a10abe7cbdf6ebf6b0d  libgfortran/generated/findloc0_r8.c
! ace0b21bde2041122ef5b64bdd448f63  libgfortran/generated/findloc0_s1.c
! 15f949031095429539fb43a49defa227  libgfortran/generated/findloc0_s4.c
! 5cebfd817bfdc707c8956f38c9d4bf18  libgfortran/generated/findloc1_c10.c
! 0189fcb623895172f2a15ad72855338c  libgfortran/generated/findloc1_c16.c
! 6779309393c0837599a177e73589689a  libgfortran/generated/findloc1_c17.c
! 6f172ad4b6291b43785ca994978744a5  libgfortran/generated/findloc1_c4.c
! b27c48d2f976bac43e4a2a200f92c43f  libgfortran/generated/findloc1_c8.c
! 32f25a99560c65caee5968fad1c1598f  libgfortran/generated/findloc1_i1.c
! 4925cfca93a49c8942330b39f8686854  libgfortran/generated/findloc1_i16.c
! a6a6adee0568d26bcd3ba0128946331e  libgfortran/generated/findloc1_i2.c
! 483e7913cd43a494f5e7067ef21ebe5e  libgfortran/generated/findloc1_i4.c
! 77e1d4ecb045a883e8e10b29b511d371  libgfortran/generated/findloc1_i8.c
! fe6958ed8223a13557abb8d1ff41e2d9  libgfortran/generated/findloc1_r10.c
! a6419ed8e29a5fb1eb58e37e7c0f98aa  libgfortran/generated/findloc1_r16.c
! 8cd30d5e8bf5116e27c09bc1b8d83943  libgfortran/generated/findloc1_r17.c
! b17bec84859ecfc3e6361f3795750935  libgfortran/generated/findloc1_r4.c
! 9dc10294a79c01169b166619221e4888  libgfortran/generated/findloc1_r8.c
! 0c7973abab4cce435527dabb6f6a36b8  libgfortran/generated/findloc1_s1.c
! 39f26bb8daec1525d659ceb5dfb1ddee  libgfortran/generated/findloc1_s4.c
! 2ebf8ac4fe4f3a5d7faf3ee1e009d94f  libgfortran/generated/findloc2_s1.c
! cdeda0cf3d38dd5600e24d6c6ee38b50  libgfortran/generated/findloc2_s4.c
! f2c87a8fd888ec762983474a516b5b3e  libgfortran/generated/iall_i1.c
! 48bbbc3d75942a4a496d90c0a17b808b  libgfortran/generated/iall_i16.c
! fa94a0c0bae4eeb22b2c3614cc501eeb  libgfortran/generated/iall_i2.c
! dd87b9a3840fc797c8417ec4bb0a6668  libgfortran/generated/iall_i4.c
! 8258f56186ba9f7d84a5829ee0932baf  libgfortran/generated/iall_i8.c
! 087eb77b9b94c5de791cd28d47bb89e3  libgfortran/generated/iany_i1.c
! b745046aa31ffd6ffeb3af3a7a51036a  libgfortran/generated/iany_i16.c
! f73f25b489f1f62d328929d9118b96be  libgfortran/generated/iany_i2.c
! 2a0d4c75c47abaaa304dde34fc7ab8f1  libgfortran/generated/iany_i4.c
! b8fc58bb068f4c116261392d8460808c  libgfortran/generated/iany_i8.c
! f142c68360d92561a78c56c10d0d5437  libgfortran/generated/in_pack_c10.c
! 38f743b2cb9dc2e29a875c9c394c4d71  libgfortran/generated/in_pack_c16.c
! d01c901505ebcb4f4c6f7bf8ddfb1804  libgfortran/generated/in_pack_c17.c
! 608ad61d713b3b941b2b6fbdefb91b49  libgfortran/generated/in_pack_c4.c
! 44d94445753fd5a24a3ac3ba1e5150fa  libgfortran/generated/in_pack_c8.c
! bb318872e8438c71733710721d6becc0  libgfortran/generated/in_pack_i1.c
! 3bd87009f3d06c39e89cbf3606d1a2d9  libgfortran/generated/in_pack_i16.c
! 95411f2da754c55cc7075d2e3da661e7  libgfortran/generated/in_pack_i2.c
! 8a1e39f3f042e8414187c0d48ba9b787  libgfortran/generated/in_pack_i4.c
! 8e047f8973f090a4f1158faadedac30a  libgfortran/generated/in_pack_i8.c
! 3546f7e1fe90dfe764f2d200b2e9b472  libgfortran/generated/in_pack_r10.c
! 1c904db968a7afecbb7972188b55cc92  libgfortran/generated/in_pack_r16.c
! eb2da2fd4fd43d7035596e591c9851fe  libgfortran/generated/in_pack_r17.c
! 16c4873e2ee0f9e4bdb413f33108eade  libgfortran/generated/in_pack_r4.c
! d8f6d21bdf5403b2c3f3b313234a4ae3  libgfortran/generated/in_pack_r8.c
! 280330a4e2584abf7319fe2844d1b303  libgfortran/generated/in_unpack_c10.c
! 64a56ae975e2deddea0156c6ad3d9f3c  libgfortran/generated/in_unpack_c16.c
! 802ff1764e2827a997b20780cf8c22a7  libgfortran/generated/in_unpack_c17.c
! e8e2491603a005ebb9d66be7d810cba7  libgfortran/generated/in_unpack_c4.c
! 2a3b243a0bb79b5c4c7a673082d02d5a  libgfortran/generated/in_unpack_c8.c
! e619777f1f936bef8445eb377c76c876  libgfortran/generated/in_unpack_i1.c
! de11591ebbecc997c21f260b0a62d8fc  libgfortran/generated/in_unpack_i16.c
! 597af54730405a45c6b58dfa867b9ab2  libgfortran/generated/in_unpack_i2.c
! a7241431ca788b0ef1cd9c2cbe7019b8  libgfortran/generated/in_unpack_i4.c
! 8d61e1b339bea9afc5498575bcfefc15  libgfortran/generated/in_unpack_i8.c
! a7c37670969c0ee869ae0f9d52e5174b  libgfortran/generated/in_unpack_r10.c
! 55cdc4e96bbe8fb12c3ec3aefae33fac  libgfortran/generated/in_unpack_r16.c
! 76c553b8a094697f9dbf63492c2271ef  libgfortran/generated/in_unpack_r17.c
! f09e2325481bbf0914a87298226b9561  libgfortran/generated/in_unpack_r4.c
! d9ca80132d16f44125de7ef28b20892f  libgfortran/generated/in_unpack_r8.c
! 4a87860fb0f60a970e4bacca53e236d8  libgfortran/generated/iparity_i1.c
! 3cb2092ca9331b036feaa14331b4195b  libgfortran/generated/iparity_i16.c
! 1822303cf031424990e1bd2e657945c0  libgfortran/generated/iparity_i2.c
! 1fa68298e2f6c320ded29018022ad4b0  libgfortran/generated/iparity_i4.c
! 180d072c16fd8b61a91eff00a23ac3b4  libgfortran/generated/iparity_i8.c
! e2af07326201771d1a706d53b42d05fe  libgfortran/generated/matmul_c10.c
! 5b261853aa63ed86098a370ce3c4cee9  libgfortran/generated/matmul_c16.c
! d3554b53bee6b672093551a51b3a96af  libgfortran/generated/matmul_c17.c
! 251e43a1431cbf64284ce7191b011939  libgfortran/generated/matmul_c4.c
! 2c922f0b9f88f67b3a1de82fd24e4b0c  libgfortran/generated/matmul_c8.c
! 9fe74126e47af35a5f11d7e45f045aae  libgfortran/generated/matmul_i1.c
! 853823df2377dafbf78f3d3637420770  libgfortran/generated/matmul_i16.c
! 711f874c4a716fca65c1f271afc2e5d3  libgfortran/generated/matmul_i2.c
! ccfdb135e89f4d6cedbcd5bd75326a91  libgfortran/generated/matmul_i4.c
! 0a618c3488478f4a2a0925abfa4e1836  libgfortran/generated/matmul_i8.c
! 2cc77636e3bebd09f13933fd02ff4cf9  libgfortran/generated/matmul_l16.c
! 21b42b8018f489cf89b7227afc3999c7  libgfortran/generated/matmul_l4.c
! d13f517138a77b04a2d1162fd44c2dab  libgfortran/generated/matmul_l8.c
! b7e7d501d9c2e06de1affef804a769fb  libgfortran/generated/matmul_r10.c
! 70a31a3a137cb2d4543c61dda778bcfa  libgfortran/generated/matmul_r16.c
! b85913f98a9d6a3aef1e259e77780d80  libgfortran/generated/matmul_r17.c
! 7d07425c384749fe5d3787a281b75045  libgfortran/generated/matmul_r4.c
! 3721e9c39677a27071463d6ff7b97ee0  libgfortran/generated/matmul_r8.c
! 2ce92ed2912f8393d44a3faf22c403e1  libgfortran/generated/matmulavx128_c10.c
! b14601af846da2388b17678705e7c028  libgfortran/generated/matmulavx128_c16.c
! c869becea53f349314be501385e6dbb2  libgfortran/generated/matmulavx128_c17.c
! a58e3610478eafecf10866bd1cac8535  libgfortran/generated/matmulavx128_c4.c
! 5fb30c2d511885584eab80a08d06c61b  libgfortran/generated/matmulavx128_c8.c
! e66466657def85ec07ed0395643da5b0  libgfortran/generated/matmulavx128_i1.c
! ef42a13f2e7ced33422f84089fc9f2f4  libgfortran/generated/matmulavx128_i16.c
! 9f401793cbeefe5645d6145fc11104b9  libgfortran/generated/matmulavx128_i2.c
! b1cd0dbbf49ea072525eecaf40e44154  libgfortran/generated/matmulavx128_i4.c
! 72dac3af4f7e82f1ba915b66c84a84fa  libgfortran/generated/matmulavx128_i8.c
! 58c802caacef9b0359c6252fbbc07062  libgfortran/generated/matmulavx128_r10.c
! 4b07b3185393b61d8eb3722981500040  libgfortran/generated/matmulavx128_r16.c
! ac548c8e6bd5864b5ff0988bb95f51a2  libgfortran/generated/matmulavx128_r17.c
! 408d7cef86b4f4120593a3727d4a1778  libgfortran/generated/matmulavx128_r4.c
! b692ff73751d37ef6fdc97c0eb5d7d97  libgfortran/generated/matmulavx128_r8.c
! e7f612ea1a124989a77479d645e7e09a  libgfortran/generated/maxloc0_16_i1.c
! d73b6fdb7586b37577f83cc60a220a60  libgfortran/generated/maxloc0_16_i16.c
! 1915657fdedb01d35c03af868c5df5d2  libgfortran/generated/maxloc0_16_i2.c
! a2b9e2de4c6617254274c3f6cc2cb54d  libgfortran/generated/maxloc0_16_i4.c
! 233e9f6bb3ac73135e7a6e9281cb2e66  libgfortran/generated/maxloc0_16_i8.c
! cb3e5e9a6a6592dc7c7e2481f9ff8c3b  libgfortran/generated/maxloc0_16_r10.c
! 2ea5853fb3382f14cbde7d9f451869a1  libgfortran/generated/maxloc0_16_r16.c
! daf9fb698146d2ebf9201fcc9af7a049  libgfortran/generated/maxloc0_16_r17.c
! b769011705670adc8935b3a93ca388c2  libgfortran/generated/maxloc0_16_r4.c
! acbf1bdd38b127acb0c1dcadb2155bfd  libgfortran/generated/maxloc0_16_r8.c
! 15932b98c89385b9e777ba9b3110c356  libgfortran/generated/maxloc0_16_s1.c
! d0e9ae0a2609684d8dd7ee3e65d10b27  libgfortran/generated/maxloc0_16_s4.c
! d4c7d610cd11069450989dcdc3ec07fa  libgfortran/generated/maxloc0_4_i1.c
! 6db85db08b551671dd72a8f045fce476  libgfortran/generated/maxloc0_4_i16.c
! 2169988fe41ec487f061e3601b6b308d  libgfortran/generated/maxloc0_4_i2.c
! 1d1cd53e18cf825a37c888650966b4c7  libgfortran/generated/maxloc0_4_i4.c
! 0dfe82ee1fc0b931267e39efbb2f7067  libgfortran/generated/maxloc0_4_i8.c
! b2e99a6860cd033724e081117e0b14b7  libgfortran/generated/maxloc0_4_r10.c
! d697ef4d23bebf587f06eec6842515bd  libgfortran/generated/maxloc0_4_r16.c
! 45852b2779055989ceca1597f465251c  libgfortran/generated/maxloc0_4_r17.c
! d79de8d3d13e78be6f82e004da232537  libgfortran/generated/maxloc0_4_r4.c
! 8e83114ef3f1bb4cb82d7db4d5380aae  libgfortran/generated/maxloc0_4_r8.c
! fcf256be57c9ce14d7a35297ecdbaf34  libgfortran/generated/maxloc0_4_s1.c
! 65ad9a41af967752ebc18caf688e70c6  libgfortran/generated/maxloc0_4_s4.c
! cf90d361364cb07a41ed02e082422ce2  libgfortran/generated/maxloc0_8_i1.c
! 466ac8c4a6f74bf1ab0ff5e84281b9ce  libgfortran/generated/maxloc0_8_i16.c
! f217fa5048b59f2e16911f5907ed56a1  libgfortran/generated/maxloc0_8_i2.c
! cdfab15565915b0c2d4636fc56ea9ff6  libgfortran/generated/maxloc0_8_i4.c
! 80cf2b7ee0e8aefadec9f97d5fcecd3b  libgfortran/generated/maxloc0_8_i8.c
! 303931f06c0c9cb69f793d4714b5d806  libgfortran/generated/maxloc0_8_r10.c
! 20a34403c3d07902b2f7a6d7e0faa871  libgfortran/generated/maxloc0_8_r16.c
! 74ef593dafd3b76936efca4eccc0cb76  libgfortran/generated/maxloc0_8_r17.c
! 7e07d20e7840e27384860dbbc3c80d24  libgfortran/generated/maxloc0_8_r4.c
! 7d59903a423b9bfe84856adac4d5d509  libgfortran/generated/maxloc0_8_r8.c
! 87e4994f02092969fa0040aad3cb76dc  libgfortran/generated/maxloc0_8_s1.c
! 5dfcfa2a8d02a09b1f71461875a4bfad  libgfortran/generated/maxloc0_8_s4.c
! 6c2b207b8324ca8c0fa6621a39b9deda  libgfortran/generated/maxloc1_16_i1.c
! 5c504b6da19ecd73e550e8bc16dd1992  libgfortran/generated/maxloc1_16_i16.c
! a93e25b6fb924d88ef2f81f6e7441f77  libgfortran/generated/maxloc1_16_i2.c
! e0728768db2d1463689ff3e9fd3beb4e  libgfortran/generated/maxloc1_16_i4.c
! b890e4fef2f15223acd4100b7c68b672  libgfortran/generated/maxloc1_16_i8.c
! 62b971f4673bbdc8c4781f9f0a3c4704  libgfortran/generated/maxloc1_16_r10.c
! af8b1fcf0e5fb45ecb5a260c75c8d2db  libgfortran/generated/maxloc1_16_r16.c
! 05c9be3731f34eb49120c390a4c7cb13  libgfortran/generated/maxloc1_16_r17.c
! 021b61bee81b13679b8e9aedb57e2b89  libgfortran/generated/maxloc1_16_r4.c
! 28977f2fb2e6352955731dcfe8608a17  libgfortran/generated/maxloc1_16_r8.c
! fd64b52796c07636f28eac8f498f2878  libgfortran/generated/maxloc1_16_s1.c
! 39bdebdb23f92f8d18267d8b14453cc1  libgfortran/generated/maxloc1_16_s4.c
! 21944c5afaf8b0fd5a0d8934ff422fd7  libgfortran/generated/maxloc1_4_i1.c
! b3317239defd2308a3481c704c2912e0  libgfortran/generated/maxloc1_4_i16.c
! 4e32fafca96b9b37c24236457ffdc9d9  libgfortran/generated/maxloc1_4_i2.c
! 8a21cf9a840e0c7bdaacbcddf44b4b18  libgfortran/generated/maxloc1_4_i4.c
! f63d4c140affbd39578595fd7e3866a3  libgfortran/generated/maxloc1_4_i8.c
! e3511ed8efbcbabc153ba36f5d746dec  libgfortran/generated/maxloc1_4_r10.c
! 002bc8861089686e9bab2b0ca1e9e4ac  libgfortran/generated/maxloc1_4_r16.c
! e132f12f22498e6e1c7e3803c8b559a2  libgfortran/generated/maxloc1_4_r17.c
! 564eb2eff62a565351dd06e689d2ef24  libgfortran/generated/maxloc1_4_r4.c
! c77bdbc8c95d9eb99d9f80224ac8bbf2  libgfortran/generated/maxloc1_4_r8.c
! 20c3167bf09d430f9b515e4bbace81ff  libgfortran/generated/maxloc1_4_s1.c
! 33938b76fe5302306ebbedb8875d4460  libgfortran/generated/maxloc1_4_s4.c
! 2b4d8e914fe07cd9fc572ed9bf6cd517  libgfortran/generated/maxloc1_8_i1.c
! 5893625de37006fe4dddbadaaf5b3d32  libgfortran/generated/maxloc1_8_i16.c
! 3099bb099a36b29a7fa4306d0d648874  libgfortran/generated/maxloc1_8_i2.c
! 59e116af1c5dbfa89253915182fbf102  libgfortran/generated/maxloc1_8_i4.c
! fa7f02276f0f6063ba11fa750d0b1788  libgfortran/generated/maxloc1_8_i8.c
! 2276f52ce72d747720a861042222d437  libgfortran/generated/maxloc1_8_r10.c
! abf097816deff1be5afefde10ce29ae4  libgfortran/generated/maxloc1_8_r16.c
! 7df711d3ff7b66135e05f73a73f187ab  libgfortran/generated/maxloc1_8_r17.c
! e9437e99605734d36484747b502360f6  libgfortran/generated/maxloc1_8_r4.c
! 3126b1ac1e3976b7235dd8ff40fccb8f  libgfortran/generated/maxloc1_8_r8.c
! d5c7f0d3f1f0ec34200826416f1042d4  libgfortran/generated/maxloc1_8_s1.c
! 000f09a20ff21083bc750980ba8ba91b  libgfortran/generated/maxloc1_8_s4.c
! 0c8abb0fb05447a0b92d11d827246d90  libgfortran/generated/maxloc2_16_s1.c
! cd51ec9b12d060f3af99427f284b4dd9  libgfortran/generated/maxloc2_16_s4.c
! 0d4068e49e159e5c6cff51c5e01c2d27  libgfortran/generated/maxloc2_4_s1.c
! 836a5c96016d42e47bb9394ecd6c377f  libgfortran/generated/maxloc2_4_s4.c
! 63a3de8507ec3a35d76ec81e0e0355ec  libgfortran/generated/maxloc2_8_s1.c
! dd8c37353f332e3e3f852a24506f5814  libgfortran/generated/maxloc2_8_s4.c
! 888a839abf66f62f2e94d40bf6c64768  libgfortran/generated/maxval0_s1.c
! 2f58aec33f4f8ce2350807f0efbad310  libgfortran/generated/maxval0_s4.c
! 549184878780f448c93745f85c3923bd  libgfortran/generated/maxval1_s1.c
! 923ae4346aeba7c35988a28e0cacde22  libgfortran/generated/maxval1_s4.c
! 31404795b5caabc6de2d86cd104934e3  libgfortran/generated/maxval_i1.c
! 17e76dbcb92af5949d67908abd12468e  libgfortran/generated/maxval_i16.c
! 9f18a39c14052dd58c18119b651f754d  libgfortran/generated/maxval_i2.c
! ff22b359145ed4cf2e30e703e1cb0ecc  libgfortran/generated/maxval_i4.c
! 893a41929af5a3c7a127ecf925e7efe0  libgfortran/generated/maxval_i8.c
! 3cb72ff0b2cedbc080d4a63deb5bda41  libgfortran/generated/maxval_r10.c
! 8ce90b058301160141593dc6121cafc6  libgfortran/generated/maxval_r16.c
! 243daba97c5cb9e454485cf64ae26bf4  libgfortran/generated/maxval_r17.c
! 115e8485edfda59c355c97e2a17f4f76  libgfortran/generated/maxval_r4.c
! f5c6082c1e220ab6486e80920f84dfa1  libgfortran/generated/maxval_r8.c
! cae41b13f7b7eda650bfd7b64caa5094  libgfortran/generated/minloc0_16_i1.c
! 4065b83aade0bd032e5370c512700330  libgfortran/generated/minloc0_16_i16.c
! a034153d3af597f668048cfe2abc5be2  libgfortran/generated/minloc0_16_i2.c
! f403c1b7bc549c17b48188e74d66312c  libgfortran/generated/minloc0_16_i4.c
! 5a9b5d79135e498de947cdf748377527  libgfortran/generated/minloc0_16_i8.c
! 39af747c2160dae8e29354b3c83e9b9a  libgfortran/generated/minloc0_16_r10.c
! 64f685006d72c6f67710a542b443a750  libgfortran/generated/minloc0_16_r16.c
! 2161fffec60ec255d8cb33e7fc24f16d  libgfortran/generated/minloc0_16_r17.c
! 7627b700b8b3f24a635266e58f5ae63b  libgfortran/generated/minloc0_16_r4.c
! 825388761f227d0b5f4aa634e0b7a56e  libgfortran/generated/minloc0_16_r8.c
! 383f7b0b5e2b961770bba9f13f10efb1  libgfortran/generated/minloc0_16_s1.c
! af3471f75743453306e3e33614029885  libgfortran/generated/minloc0_16_s4.c
! 8a1a90fcf87cbe36e1e9bee1a4e5c5b2  libgfortran/generated/minloc0_4_i1.c
! 890773b9ca5beb5c4a9622add8326e75  libgfortran/generated/minloc0_4_i16.c
! 7a991c159fb8fd3389ed5cd6e888893d  libgfortran/generated/minloc0_4_i2.c
! 89405dd5a548c9a6c0304a715f3ab2f1  libgfortran/generated/minloc0_4_i4.c
! 390cbbd427df9fa9c692a84a68f5e50e  libgfortran/generated/minloc0_4_i8.c
! 9b3e50e057e399fefb12ecaf9fa6c661  libgfortran/generated/minloc0_4_r10.c
! af6518d8ae7f837a82c0d7ec74807ec4  libgfortran/generated/minloc0_4_r16.c
! a0b38b2d68c03b8e9f2244208ebee515  libgfortran/generated/minloc0_4_r17.c
! 6a83f7dc0c89304338a7a501f571fa41  libgfortran/generated/minloc0_4_r4.c
! dd1240868a7f782ac61fa670c6ad4a08  libgfortran/generated/minloc0_4_r8.c
! 69bf29429a1f2a07c3827f3e4bd099a2  libgfortran/generated/minloc0_4_s1.c
! 465cda61f3efbf255f076d6e11941974  libgfortran/generated/minloc0_4_s4.c
! b91df8b1bbbd0ae4397facd9bb42c87c  libgfortran/generated/minloc0_8_i1.c
! 71b3078e0dde38e7a2394a48be64c20f  libgfortran/generated/minloc0_8_i16.c
! 91b07a544ceb7e88ad1595bcc6599281  libgfortran/generated/minloc0_8_i2.c
! 5d91ff21ba78488076e9fe0c46fe38d1  libgfortran/generated/minloc0_8_i4.c
! 8085ac262f7b8ffa00bc8671683323ad  libgfortran/generated/minloc0_8_i8.c
! e1b555e49875a8df71b55b848024769a  libgfortran/generated/minloc0_8_r10.c
! 760a169721962ef677f7408bd668c41a  libgfortran/generated/minloc0_8_r16.c
! 5bd327c4e830a733b960de5d7eaa343c  libgfortran/generated/minloc0_8_r17.c
! 6278ed30874d808ab7dc49d962f73d27  libgfortran/generated/minloc0_8_r4.c
! 9cd7fbe0d06ab54398510e28c4f117e3  libgfortran/generated/minloc0_8_r8.c
! 06734b707dd3bd0cd14fda6393a673fe  libgfortran/generated/minloc0_8_s1.c
! 3f8c4930820c754ba0786872bdfc778f  libgfortran/generated/minloc0_8_s4.c
! 9cac71872e0a42bbe83a168db50879aa  libgfortran/generated/minloc1_16_i1.c
! d7c40c7789d47bfe6d9e0537e5c5e1a6  libgfortran/generated/minloc1_16_i16.c
! bbbda8ffa3cac542b28f21fb46a566d1  libgfortran/generated/minloc1_16_i2.c
! 5385dd0a483eb2b6ce3e6e5b2cba3760  libgfortran/generated/minloc1_16_i4.c
! 3d1a352d8e12ed07c126bd3e52d9bc39  libgfortran/generated/minloc1_16_i8.c
! c9fb11ec052ea2c8fd61cafd1b237212  libgfortran/generated/minloc1_16_r10.c
! 64c905e4946f5ab84ca2af11d9108a8d  libgfortran/generated/minloc1_16_r16.c
! dce014d809712c190ac967ab8b6e9c18  libgfortran/generated/minloc1_16_r17.c
! 4fc5cf276fc63eb0d9fed8291e5f1a2a  libgfortran/generated/minloc1_16_r4.c
! 2500c58ae5b6bbb4f607ce06203ce829  libgfortran/generated/minloc1_16_r8.c
! 56d351a8ad8acc9f87df6ce2a4d204c3  libgfortran/generated/minloc1_16_s1.c
! dce8a9b6ee41a5df12f014db141bc5c5  libgfortran/generated/minloc1_16_s4.c
! 10bccc05a67c476cf3e9f78a2dd0e925  libgfortran/generated/minloc1_4_i1.c
! 1ee06ea0623a3e012fb8d28566b379af  libgfortran/generated/minloc1_4_i16.c
! 058229ead5bfd94ce11097b14f793e15  libgfortran/generated/minloc1_4_i2.c
! b92e88416fa80c9cfc687025b6c95622  libgfortran/generated/minloc1_4_i4.c
! 789aa5e071c2de965988c8406c1b2969  libgfortran/generated/minloc1_4_i8.c
! f19b9bfb883d82efaad946e2bb02fbbb  libgfortran/generated/minloc1_4_r10.c
! c7cbe7b071bdff9131364a805b4d3d4b  libgfortran/generated/minloc1_4_r16.c
! 201c44330f3a1d2542b6d571c34bab83  libgfortran/generated/minloc1_4_r17.c
! 2c228529be8be60937599b049da110be  libgfortran/generated/minloc1_4_r4.c
! 23b471f0f0fe5f5d75022c6b20f2d274  libgfortran/generated/minloc1_4_r8.c
! 23b1849e5e02207be34fbdaea8a155b2  libgfortran/generated/minloc1_4_s1.c
! fbd75534a59b1a3dfd3486e467c3be91  libgfortran/generated/minloc1_4_s4.c
! b641ddb490394565d7a830c07f48f975  libgfortran/generated/minloc1_8_i1.c
! 4272f4c2b2091243f3ffd2aee54a70a2  libgfortran/generated/minloc1_8_i16.c
! 914a9536ec8d20599b0bb44d2f5fb99d  libgfortran/generated/minloc1_8_i2.c
! 0780a19d72e4b122575b4a3d11c6ad44  libgfortran/generated/minloc1_8_i4.c
! 99a58e1052c5eedf636467c154be2bc8  libgfortran/generated/minloc1_8_i8.c
! 70e4542440c3e5a2c3ec9d787b0f5aa8  libgfortran/generated/minloc1_8_r10.c
! e02bfc3b9609ddf8d82d22f8a6c570a8  libgfortran/generated/minloc1_8_r16.c
! 99eac5f7dcd17e2cd13149fadbeee8cf  libgfortran/generated/minloc1_8_r17.c
! 7342f1eddca71ac143e933007d702136  libgfortran/generated/minloc1_8_r4.c
! 6b85ef54d48ef114dc6090908b959168  libgfortran/generated/minloc1_8_r8.c
! c610bd030db897e607082d6fdc9aafb6  libgfortran/generated/minloc1_8_s1.c
! ff928f0ee754312e6503df160b8de4f1  libgfortran/generated/minloc1_8_s4.c
! 97d35d4ff6066478cba83a8bcc9b2237  libgfortran/generated/minloc2_16_s1.c
! 52b807d11f0f6fe902d330b4dd390dab  libgfortran/generated/minloc2_16_s4.c
! 0018c0cedc55aa5a53739307824f3d25  libgfortran/generated/minloc2_4_s1.c
! 1f053b21a2d0c113a582f5745421e68f  libgfortran/generated/minloc2_4_s4.c
! c2aab1f3b9081ac738fc358a7f60ca92  libgfortran/generated/minloc2_8_s1.c
! 8b6fb27160ce0e1c8bacf70f72a67628  libgfortran/generated/minloc2_8_s4.c
! 16a14bc6a38a49a3c12c6a701d138c1e  libgfortran/generated/minval0_s1.c
! c3397c9b8b0d2838b089d25169be38c2  libgfortran/generated/minval0_s4.c
! cc57bbd362f85fceb3887978981e1ac2  libgfortran/generated/minval1_s1.c
! 39766fa9ecf4747e16ece8343f7c1a89  libgfortran/generated/minval1_s4.c
! e53930472b7e29e6dcc86bb7294f2ee3  libgfortran/generated/minval_i1.c
! 799f20ca304559e1ed7de62a27f8900e  libgfortran/generated/minval_i16.c
! d9769073502d800080b8ce9931b69122  libgfortran/generated/minval_i2.c
! 42cbd26e6442c03671da86d87713db45  libgfortran/generated/minval_i4.c
! 0f837a66b736f39cba362ae1649bddbe  libgfortran/generated/minval_i8.c
! e743b10f23dad8cbb7a2c7bfb0ee9d10  libgfortran/generated/minval_r10.c
! f0c24e3cb48210c63d18190538a61dcb  libgfortran/generated/minval_r16.c
! 5bef61f5180609615bd25af0ff4b7e42  libgfortran/generated/minval_r17.c
! 36c605979debcc68691770b1dcb36249  libgfortran/generated/minval_r4.c
! ca0138fdc943103a17be1e74aab2a83f  libgfortran/generated/minval_r8.c
! 34bb35395929a1d3ad5281170efcc6d9  libgfortran/generated/misc_specifics.F90
! 4934ff76774a3e8383ebf82bbeab3266  libgfortran/generated/norm2_r10.c
! 9589965929e9dd2b1f5888d47b45cb2a  libgfortran/generated/norm2_r16.c
! e0723df260ec891fc06dff82cae307cf  libgfortran/generated/norm2_r17.c
! 54bc898729658347d4b6bd1a5db4d96b  libgfortran/generated/norm2_r4.c
! 3913d615cfb46bf13755531ccccee70b  libgfortran/generated/norm2_r8.c
! 5f57e1151cc06a1c0cc0ef2fb9921607  libgfortran/generated/pack_c10.c
! c877ad9c907d5a871b0a2523e30c8c9b  libgfortran/generated/pack_c16.c
! 25f04f69eb759712204a1dddd84c886a  libgfortran/generated/pack_c17.c
! 74089d92d6b6be271366fa5f43d001e4  libgfortran/generated/pack_c4.c
! 8b3fffe75c039483b4619ea55acfbe5e  libgfortran/generated/pack_c8.c
! d1ac4aa2f4d7f0c586cdcb5615319983  libgfortran/generated/pack_i1.c
! 19e27dcc05660c9cd08bbdfb332d1a52  libgfortran/generated/pack_i16.c
! 43ddfb07f6f919eef42208c14dbb7121  libgfortran/generated/pack_i2.c
! a28b55cbd61e172b5143860260936c42  libgfortran/generated/pack_i4.c
! 1580c3091d5a168e6db6b5db73cf0232  libgfortran/generated/pack_i8.c
! bbaf976a0508b3b281117dc6905a41aa  libgfortran/generated/pack_r10.c
! 453bd76dc4ae0944e13f49b18dd6a8d7  libgfortran/generated/pack_r16.c
! c27742c268586c3723db29d53641d14e  libgfortran/generated/pack_r17.c
! 4b8fcd467c84c77cdd1fb35d19f5253f  libgfortran/generated/pack_r4.c
! 0ef00e98ff22aec1751cb91563c9fcb1  libgfortran/generated/pack_r8.c
! bbb59c616b768763aa474ffe201e63c2  libgfortran/generated/parity_l1.c
! 18c5c04b3e21944a6d538c9cf9db5940  libgfortran/generated/parity_l16.c
! f84671367b01166b727ba879c4ef4ad9  libgfortran/generated/parity_l2.c
! 7e813155611826e0ed73b6de6dab8d82  libgfortran/generated/parity_l4.c
! d2ea870127c1bda0d64306ff49c12bcd  libgfortran/generated/parity_l8.c
! f60362cdb73b6806c8f4f2685006f016  libgfortran/generated/pow_c10_i16.c
! 85f56222ec38acd08975c57d3596cc5e  libgfortran/generated/pow_c10_i4.c
! 211c8de1a33b5c760cc54b8f47237dca  libgfortran/generated/pow_c10_i8.c
! 1d4ce73a65cf4729ed8107a79d700d41  libgfortran/generated/pow_c16_i16.c
! beb9db54802ca704646ce89772fee07d  libgfortran/generated/pow_c16_i4.c
! 00c4819848f8f0466eea3e6320829244  libgfortran/generated/pow_c16_i8.c
! 7552b16e2cb2d558b989d99fac80a141  libgfortran/generated/pow_c17_i16.c
! 5d110c533a9af62f6fe8f831d7d8187a  libgfortran/generated/pow_c17_i4.c
! 239eff037a5012956fbd84308388c18d  libgfortran/generated/pow_c17_i8.c
! a653f3719e9023866dca345b69eb04d6  libgfortran/generated/pow_c4_i16.c
! ec6c3fd1bb4079433b4590bf98629183  libgfortran/generated/pow_c4_i4.c
! 3e7e2a556e298c24d29f56749e127f88  libgfortran/generated/pow_c4_i8.c
! 080a690ed4270ac0282441fd83b1b3cb  libgfortran/generated/pow_c8_i16.c
! b6487fa12c7fea3b3a4e5cd4f5f1f087  libgfortran/generated/pow_c8_i4.c
! 49152958f65aed9b5f9a03009b9f394c  libgfortran/generated/pow_c8_i8.c
! e259a6b24018794e2990a42078531ae9  libgfortran/generated/pow_i16_i16.c
! 1e3fe7e1c4998e5533b71f844e8d5fd1  libgfortran/generated/pow_i16_i4.c
! f3ff8de3cd722620ef82ad02e324b9dc  libgfortran/generated/pow_i16_i8.c
! 040f778ab4d2e4a73f7a9a6364adaf2d  libgfortran/generated/pow_i4_i16.c
! b80190a66e4113b86c840a877bbf51d8  libgfortran/generated/pow_i4_i4.c
! 4c17ae1b58da3c264c66b97d7d04739e  libgfortran/generated/pow_i4_i8.c
! 068f653e9c9a6b3f080e6318fff01cd8  libgfortran/generated/pow_i8_i16.c
! 633ed6be6b4ee2f00117e0fc9685e3b7  libgfortran/generated/pow_i8_i4.c
! deccc2a13b86433e2fa80a50c1dd8e75  libgfortran/generated/pow_i8_i8.c
! e86da066acb88e2de86ea2c4740c474d  libgfortran/generated/pow_r10_i16.c
! cb5e9d36e1d444772ffb65e0c1850d1b  libgfortran/generated/pow_r10_i8.c
! 75b69267c0c8a2d59df5b84d6a27cbf8  libgfortran/generated/pow_r16_i16.c
! 4619d852312b09719fa32c0d9e291413  libgfortran/generated/pow_r16_i4.c
! b0eee7af6fde47b14a51a00e33968d14  libgfortran/generated/pow_r16_i8.c
! a28f9e2fceb454dad39e332fc76a4c68  libgfortran/generated/pow_r17_i16.c
! bb3771fd6a1aeb40ab1698342acc6e9b  libgfortran/generated/pow_r17_i4.c
! 4975c500d37d4f744571cb5116826154  libgfortran/generated/pow_r17_i8.c
! d0a982f91ad2e81fc953e03aec7378df  libgfortran/generated/pow_r4_i16.c
! 01812b8482177b32fdc6e086d5af0398  libgfortran/generated/pow_r4_i8.c
! 0e666bcd09bc57c94083af1a9609be83  libgfortran/generated/pow_r8_i16.c
! 3b2f86995c4e0cff14599dc994e4b50a  libgfortran/generated/pow_r8_i8.c
! a001374d66f1afea3aa1933f08b113b6  libgfortran/generated/product_c10.c
! 4835e25bf82fac509b28262ea3e50338  libgfortran/generated/product_c16.c
! 908ce1ec4a286c73beb492dadcf083e4  libgfortran/generated/product_c17.c
! c09c921d9833cc62d4dc0ba22fab2843  libgfortran/generated/product_c4.c
! 167e40d76b2f66d468c71240f31c620b  libgfortran/generated/product_c8.c
! 698055d083247a213165b7d8783bb4ad  libgfortran/generated/product_i1.c
! 3ee2dbbbc7ca905b04bc66a973da7cc5  libgfortran/generated/product_i16.c
! db65237fd3919e3771baf057b5c282e7  libgfortran/generated/product_i2.c
! 1be708593101074cb886606531433ebc  libgfortran/generated/product_i4.c
! c30dcb884713b048ba32fd5663ce0dd3  libgfortran/generated/product_i8.c
! ac63a25e302e8ed7494bca82655d3934  libgfortran/generated/product_r10.c
! 50e59deca0f25434f07dd691c5c651f1  libgfortran/generated/product_r16.c
! b99e8aacc4a4c442fa971899a29729fb  libgfortran/generated/product_r17.c
! 95ceff6e8cbc66b26784fd5781284d4e  libgfortran/generated/product_r4.c
! 9c0fed22552f84a9e86217ae48b243db  libgfortran/generated/product_r8.c
! eb61610c09763f6eed813632ed0387d1  libgfortran/generated/reshape_c10.c
! 6ce93fae40510025db89e1b37045b1b6  libgfortran/generated/reshape_c16.c
! 8d4515e0695d0add3c2c9386c1484563  libgfortran/generated/reshape_c17.c
! b5ee3e3f87f462b603d88861ce2e88af  libgfortran/generated/reshape_c4.c
! d234194421aa2ce073648243acfed978  libgfortran/generated/reshape_c8.c
! aac187a7ca44f9490a0a84891cd858eb  libgfortran/generated/reshape_i16.c
! 90465de7e9d8c44a3a2e875c385eb975  libgfortran/generated/reshape_i4.c
! f169f57d6673098e35a053218364ab81  libgfortran/generated/reshape_i8.c
! 0e57160e9347d21e44e3a189071428a1  libgfortran/generated/reshape_r10.c
! 36ff412049c87723b7f540d2bd88e5c7  libgfortran/generated/reshape_r16.c
! 175c008c0cb7a6c95c4ec7a69833d2c3  libgfortran/generated/reshape_r17.c
! f95979b0f91dbb650b8be63617a7230d  libgfortran/generated/reshape_r4.c
! 4887a5946db804641382aca911e4df1f  libgfortran/generated/reshape_r8.c
! ae334b4faa414701ee52adbd0901c3bb  libgfortran/generated/shape_i1.c
! 5dcd4c640635103f8723a9c09646359b  libgfortran/generated/shape_i16.c
! 48e5634b89a8f828e5b2720df5f83689  libgfortran/generated/shape_i2.c
! efb8edbfef79cc021fbc1ed19a3b66d1  libgfortran/generated/shape_i4.c
! 0f2fe10cf9120846d40293ac488377df  libgfortran/generated/shape_i8.c
! 4a10b82016b172a7806dd6a41eeee2a6  libgfortran/generated/spread_c10.c
! c42e9fd61a2bbbfff81ec84929f248b7  libgfortran/generated/spread_c16.c
! 417fcbda7c9e069967dd85b877d29609  libgfortran/generated/spread_c17.c
! 411c4efc44d5fecbe57bfeb4e42b237e  libgfortran/generated/spread_c4.c
! e22f1a0ccf12fe2fb88ba0cf89656724  libgfortran/generated/spread_c8.c
! e6bd7af9afe1591fe01d8758e16faec5  libgfortran/generated/spread_i1.c
! f1a41ade8e5994413cd9e8d240b9e697  libgfortran/generated/spread_i16.c
! fa1ef266f9abb9cf952cb20518cf8b1a  libgfortran/generated/spread_i2.c
! 51e78aff445775e271271e02e1e689ea  libgfortran/generated/spread_i4.c
! db4b34b01cbcab3a6401e63c3f2e437d  libgfortran/generated/spread_i8.c
! 3a77042edcd19aa55bbc7b97ead9f320  libgfortran/generated/spread_r10.c
! 2e7d0ab687d0fd6df48518939ed49189  libgfortran/generated/spread_r16.c
! 10a64951160e2668a0a9af6e20142ee4  libgfortran/generated/spread_r17.c
! b9b916a50e9ee08526429a3a7efc8cd0  libgfortran/generated/spread_r4.c
! b788d6665d942a565ac502d10c77bea8  libgfortran/generated/spread_r8.c
! 13dc89322820418a6e8c3740caf9cd40  libgfortran/generated/sum_c10.c
! b4cb59954f8720c7d1ff231475fcf691  libgfortran/generated/sum_c16.c
! 7e94d76638716b576ed8b19141ce9808  libgfortran/generated/sum_c17.c
! 645bd96a079130094ac8c13efe094000  libgfortran/generated/sum_c4.c
! 519892f886a6abf0edbfbaea20c15e8f  libgfortran/generated/sum_c8.c
! 9f39b40edf91ea4887adc97282be26ae  libgfortran/generated/sum_i1.c
! 31ce72c229ed8ac42853f5b640b832e2  libgfortran/generated/sum_i16.c
! a84ef37655bbde30e1199317bb0c8bde  libgfortran/generated/sum_i2.c
! 9e19e5748efa40e63b3930367db47957  libgfortran/generated/sum_i4.c
! 5f8f01c1fc8e4b1f02c489440251dbb9  libgfortran/generated/sum_i8.c
! 0d4a5bacc91409555ab6a6ebc850bb0f  libgfortran/generated/sum_r10.c
! b0d444d3f674df4dbe58c4a940da957d  libgfortran/generated/sum_r16.c
! 8fb10fd8c79b70308056739c871deda8  libgfortran/generated/sum_r17.c
! 3e1625de6eb63fb09902ae0f32187c01  libgfortran/generated/sum_r4.c
! 85db4e84fd789dd880457246240676ed  libgfortran/generated/sum_r8.c
! 626d9a58f4ad3bc855f23c980103c05b  libgfortran/generated/unpack_c10.c
! 356a54b7eb9df5234bf41b0b61ac617e  libgfortran/generated/unpack_c16.c
! a807d0a095e40bf59fb379f092ccf944  libgfortran/generated/unpack_c17.c
! b2eb3599d20a250e1dc5a4b0bfd299db  libgfortran/generated/unpack_c4.c
! 7513fd157ef0bc5ed7c083f1662ae8f0  libgfortran/generated/unpack_c8.c
! 1cbf1a2443bc7dad82af2105bc8ba839  libgfortran/generated/unpack_i1.c
! 251105415f40133ebb4d50ac9766bf95  libgfortran/generated/unpack_i16.c
! 805be936a9901a1a9985b3ee2b17f362  libgfortran/generated/unpack_i2.c
! 8d0dad9daa41ae12a180dc17fce1ea64  libgfortran/generated/unpack_i4.c
! 7a3b684d999a9b33522052ec53ac91d9  libgfortran/generated/unpack_i8.c
! cb92d084919e3cb7c66d6cc006a08c19  libgfortran/generated/unpack_r10.c
! c230093ada518a0a91af4f5b752d6654  libgfortran/generated/unpack_r16.c
! 2b640cc5798a8d2daedacb2ed4aa6422  libgfortran/generated/unpack_r17.c
! 6acf17784230e123d020cd47c99e007d  libgfortran/generated/unpack_r4.c
! 76a4eb2822b1fc944b90f1552b042762  libgfortran/generated/unpack_r8.c
! 6047b324cdf9582fa357ad03af8413d0  libgfortran/gfortran.map
! f8bd48e186e1ade72cd21eb782e66160  libgfortran/ieee/ieee_arithmetic.F90
! 4ab11a06fa77a134ed8b30d0b4023f70  libgfortran/ieee/ieee_exceptions.F90
! 1d66321588f7f5922c4d0764a5a3dceb  libgfortran/ieee/ieee_features.F90
! 5163afb2a136584a87e935a7758f392f  libgfortran/ieee/ieee_helper.c
! 83709f29e21f943dfd9d6336b7412454  libgfortran/intrinsics/abort.c
! 850e52efc37856b175b55a81d2e476d4  libgfortran/intrinsics/access.c
! 2d61369709579c2c80d76279786908c7  libgfortran/intrinsics/args.c
! d6a84ef77949cf8bb3af7879fcf0f2b8  libgfortran/intrinsics/associated.c
! 44833c6eabbed43178d34bff59a2f5ae  libgfortran/intrinsics/c99_functions.c
! 8d45cec1c6da840fc9fcd064dea837ab  libgfortran/intrinsics/chdir.c
! 5bc4f93a23efe9774b284cc6e336c311  libgfortran/intrinsics/chmod.c
! 72c1ab67d3f4d9d897da15271649047c  libgfortran/intrinsics/clock.c
! c4742b531fcc5aab072dac896eb241a0  libgfortran/intrinsics/cpu_time.c
! d5c6b13e2e0c206c677cc06215f0588a  libgfortran/intrinsics/cshift0.c
! b1af0590e5f50945f4dbacfff28b94f8  libgfortran/intrinsics/ctime.c
! 7adaefc1c71e18b3a86e6586df6edeb4  libgfortran/intrinsics/date_and_time.c
! 3a97c1b389c4ffd38ced63764095ef73  libgfortran/intrinsics/dprod_r8.f90
! a7054f0e21bd63f046f36993ea83bdff  libgfortran/intrinsics/dtime.c
! 8f89a8356d8e4bde6242eecc87f0899d  libgfortran/intrinsics/env.c
! 0f2dd7de0d770820e3f743e11b1d55f5  libgfortran/intrinsics/eoshift0.c
! 9396932533425f580c09a60e76ef5007  libgfortran/intrinsics/eoshift2.c
! 93499e4d1cddff70ace7f5ec8dd5939e  libgfortran/intrinsics/erfc_scaled.c
! ca538f853f642e668622214de9e50112  libgfortran/intrinsics/erfc_scaled_inc.c
! 1617a4cbed29e1cd3b6c1d4ad73b1328  libgfortran/intrinsics/etime.c
! 065ce35ba93d5cee6c86bf10f58a1ae7  libgfortran/intrinsics/execute_command_line.c
! 77747d3b3171efa1514d780d5296f6ec  libgfortran/intrinsics/exit.c
! 0d58759697bc71aea0dc9c02b28caa92  libgfortran/intrinsics/extends_type_of.c
! 2eeba104ce7c93620266333c839c3120  libgfortran/intrinsics/f2c_specifics.F90
! 42d7ead4d5d76e421ddeb798765269bd  libgfortran/intrinsics/fnum.c
! 71e708207011db4e6474dca8456de7f0  libgfortran/intrinsics/gerror.c
! 13c206c6ae19014d0830ac6b5aea8435  libgfortran/intrinsics/getXid.c
! bdf456f153ebbae1d27ab4a82e1bb05e  libgfortran/intrinsics/getcwd.c
! a52193451384c74071c89e882343aa0d  libgfortran/intrinsics/getlog.c
! e5b1b4a1cbd827b50714545a8f23f5fa  libgfortran/intrinsics/hostnm.c
! 6be613ddbff7c429d977f6d09ee06c80  libgfortran/intrinsics/ierrno.c
! d81b068d16848d5496a9898be4a710cf  libgfortran/intrinsics/is_contiguous.c
! adb60316d9569e5c1394895ac844a7aa  libgfortran/intrinsics/ishftc.c
! fcf1817414eec25a82e25406c3861a0d  libgfortran/intrinsics/kill.c
! 6d76030093da7c8c081c94aeddd5f1bd  libgfortran/intrinsics/link.c
! d88c687ecc571b4b86df7c9f9ab3c9f4  libgfortran/intrinsics/move_alloc.c
! 1f30150110e472429c84b401e46ba394  libgfortran/intrinsics/mvbits.c
! ffc50395b9919525256d5dfb100000e4  libgfortran/intrinsics/pack_generic.c
! 4cdd8d1534ec51b45924f253bdb4bf99  libgfortran/intrinsics/perror.c
! 6d5d09369f17d502330da2a2f8fcfa24  libgfortran/intrinsics/rand.c
! a52227bed7da7252ac69700f8747f2f3  libgfortran/intrinsics/random.c
! e3b930412a2e5ef23a02f15f329bd63f  libgfortran/intrinsics/random_init.f90
! 79f4e695221f941a3e1f8eb96a1c2035  libgfortran/intrinsics/rename.c
! 2304614773c1eeb62004e5687ae1b5df  libgfortran/intrinsics/reshape_generic.c
! e0f50ddb6dc03ead6f809a6efb3a21e4  libgfortran/intrinsics/reshape_packed.c
! a20bb64becd7f453db6583875486a4c4  libgfortran/intrinsics/selected_char_kind.c
! c43586fa93cdb34b8a412cc9bb3a1673  libgfortran/intrinsics/selected_int_kind.f90
! 27227f36aa69b6913da96e0ff43067c4  libgfortran/intrinsics/selected_real_kind.f90
! 9e442b5b593972212b4121cc09a8607c  libgfortran/intrinsics/signal.c
! f54bfe52a6a5614847cba4ecbce774f8  libgfortran/intrinsics/size.c
! 1b0dd39f30e94d26bacb66b9ae958606  libgfortran/intrinsics/sleep.c
! fe0f256862232ee1c27fa518c0a49581  libgfortran/intrinsics/spread_generic.c
! 379bbf9b2a3db6e9d990a2ae35ad4cb8  libgfortran/intrinsics/stat.c
! c1abb1666c24f185d879fee1051a4d52  libgfortran/intrinsics/string_intrinsics.c
! 020a25873ca73b72ee264c55e84d7e2c  libgfortran/intrinsics/string_intrinsics_inc.c
! e476783aa36ce1eac1d4a986b7172a36  libgfortran/intrinsics/symlnk.c
! c09db6dca0ad31f798613fd6c3eb7199  libgfortran/intrinsics/system.c
! 6b66e02eaadb9f0be41e627fcab580e7  libgfortran/intrinsics/system_clock.c
! a0835f3bfb8063a3eba2bd28a80c6290  libgfortran/intrinsics/time.c
! 68c6ef25c47b96fbb1699f53b38d1cf5  libgfortran/intrinsics/time_1.h
! 41118ce029d721bd195501c117ec643e  libgfortran/intrinsics/trigd.c
! 5d44f2d528c07d1781e327b180e7ddb8  libgfortran/intrinsics/trigd.inc
! 49183d14b9b350007c0b31ee658f0f68  libgfortran/intrinsics/trigd_lib.inc
! 12c305ce4de917ad912e6fae8ca2257b  libgfortran/intrinsics/umask.c
! 05f086aa8bb6858c20520fdf6c1edcf9  libgfortran/intrinsics/unlink.c
! 45adae36a247cddb3149e3055e316e5c  libgfortran/intrinsics/unpack_generic.c
! ad8b102099f5f45ee836866f9a742a5c  libgfortran/io/async.c
! 2ce176000756b8c78c1fb278a561b570  libgfortran/io/async.h
! 4df66a7d42234aaef53fdf9dc9cf996e  libgfortran/io/close.c
! 66964cb155034a9b124cc896a64cc195  libgfortran/io/fbuf.c
! e8a82519140086a4f34ce14b57b1ce90  libgfortran/io/fbuf.h
! 48d3df371c134dfb2f04efa7d5104c51  libgfortran/io/file_pos.c
! 16778be619d549705acb78758af2fd9b  libgfortran/io/format.c
! ee05f48372d74baceb1fb54b2b50c832  libgfortran/io/format.h
! a5541fce7a5e3f8a69bc0480d92c129b  libgfortran/io/inquire.c
! cd4169badc2339fe24a7465ca43d789d  libgfortran/io/intrinsics.c
! 808e3a1682657a86ca0d777fc2680768  libgfortran/io/io.h
! d98019f00b3643e63acac73bc2696ae9  libgfortran/io/list_read.c
! 83f3764bdb26963a0c41c9a668b47ac1  libgfortran/io/lock.c
! a6a41fb6ed430bb4daec3b2c6eae5311  libgfortran/io/open.c
! 429fe237654386e3d9642334699673eb  libgfortran/io/read.c
! 151028bef9920ae54d7041229d57a56b  libgfortran/io/size_from_kind.c
! 3dd8163bf57f72420976e2199daebb18  libgfortran/io/transfer.c
! 230abe73ca1541ce53b5a04141b10c6a  libgfortran/io/transfer128.c
! 7a913d3cb266981506ba0355e56bead4  libgfortran/io/unit.c
! e9904579373944fe08e9ac334b25196e  libgfortran/io/unix.c
! 159cdda10e2bebf81f0dbbffe6a63cdc  libgfortran/io/unix.h
! fbdd549ecbc64ec4308a96867f5a6b7d  libgfortran/io/write.c
! 52eab6322a32f50d2131f6defc809395  libgfortran/io/write_float.def
! cb353200a9c6bc5f14e02a6270aabb2a  libgfortran/kinds-override.h
! 5e0c3d0f15d82ea2ad36e268784c82bd  libgfortran/libgfortran.h
  0acddc63592eb50916263aa49d35efe9  libgfortran/libgfortran.spec.in
  dc1a87f5ed3520558b0fe9f43e4f5ba8  libgfortran/libtool-version
! 406df9adff3eb4f13893daddd1cee4e8  libgfortran/m4/all.m4
! 32c7ed205b580526e92f9560a02a71e5  libgfortran/m4/any.m4
! 92175dbb215f254b55734fc0419cefbc  libgfortran/m4/bessel.m4
! 9d13d2f6827e6b27ed27d8be8ecf23f0  libgfortran/m4/count.m4
! 3ed2cde9f32dc634b485fb976f046609  libgfortran/m4/cshift0.m4
! b70dff35aee1156c970f99546e94bb59  libgfortran/m4/cshift1.m4
! f7306910148f3d257a8c48eab21b33a8  libgfortran/m4/cshift1a.m4
! f1175feffd23ace37b03f755ab41aed3  libgfortran/m4/eoshift1.m4
! 51fc818b899cfcd73ccba44eeebd0bcc  libgfortran/m4/eoshift3.m4
  a70290662a995bcc0ff8ac868b6eddda  libgfortran/m4/findloc0.m4
  22271fa12e82c61051f302c3a5072376  libgfortran/m4/findloc0s.m4
  111ea74dceb547cbf63c12832d73d5f4  libgfortran/m4/findloc1.m4
  be432b0e528c65667e6d736e1537515d  libgfortran/m4/findloc1s.m4
  62c4506b866cb09ea489c455e7c2e8bf  libgfortran/m4/findloc2s.m4
! 37645fd79d024b00386fe83f51a28fe2  libgfortran/m4/head.m4
! c9d8247486900e2a58d4acd1506ca530  libgfortran/m4/iall.m4
! 5c584a4f4d1d101c847a9683896f816d  libgfortran/m4/iany.m4
! 12e65c85a7b1380da4a2b2626a3e28c8  libgfortran/m4/ifindloc0.m4
! 7c318bfedf88da606a14b334606eca73  libgfortran/m4/ifindloc1.m4
! a9b333e990ea3269022c5ca5dd2a5651  libgfortran/m4/ifindloc2.m4
  143daeeed4d4e1baa17753b51ddd88be  libgfortran/m4/iforeach-s.m4
  ef77f0d18ce645146e5155d85730a2dc  libgfortran/m4/iforeach-s2.m4
  8bbbce69fc532a405b1b88c79c2ef47b  libgfortran/m4/iforeach.m4
*************** d41d8cd98f00b204e9800998ecf8427e  libgfo
*** 94957,95033 ****
  1603b9dcffb8d8436da0598e622783a9  libgfortran/m4/ifunction-s2.m4
  3cbecd5d114cf344efea0d4754437c7a  libgfortran/m4/ifunction.m4
  86a682dafdbffea255a15ff37710c93a  libgfortran/m4/ifunction_logical.m4
! 387bc97c431ad1f2777d5b90a33e2d91  libgfortran/m4/in_pack.m4
! 00470ff43234442dcc2547f03b7b35ae  libgfortran/m4/in_unpack.m4
! 87f7fe240f0a47edd0b43ba0ced38554  libgfortran/m4/iparity.m4
  931d3e6134be8b18f8fd4b755b0f33cc  libgfortran/m4/iparm.m4
! 8fa415e6b47c79a32ded593d75eacfe8  libgfortran/m4/matmul.m4
  f90a0613ba9c7910fede3029a8db5527  libgfortran/m4/matmul_internal.m4
! 2e5af10a998fb33058b4c09f11d71bbc  libgfortran/m4/matmulavx128.m4
! 6a77468604f2282a6994d0828395ca0b  libgfortran/m4/matmull.m4
! e4a84727dfdbf2df5cdea47355d79d5b  libgfortran/m4/maxloc0.m4
! dfcc08f7c2feba73f8a326b85141632a  libgfortran/m4/maxloc0s.m4
! 6a16013e23ae0dd3816d6d43574e0699  libgfortran/m4/maxloc1.m4
! d0fa96ff91abe776e8e3c69178e2cbc5  libgfortran/m4/maxloc1s.m4
! 26edbaa33a08f4ee52adbe41516a4234  libgfortran/m4/maxloc2s.m4
! 8bd4079ef43eb701caae9c44b03b5326  libgfortran/m4/maxval.m4
! d436fa250176f0da93aa9856fc6fa7f6  libgfortran/m4/maxval0s.m4
! d2b5ef55b012352c861701270720c8fd  libgfortran/m4/maxval1s.m4
! c1ddf3b84bb52049490b00026554146c  libgfortran/m4/minloc0.m4
! 624f4ef8021ae8611de415ffc98aef57  libgfortran/m4/minloc0s.m4
! f429963a5772147d9a21c5e5b5a0b6b4  libgfortran/m4/minloc1.m4
! d2d1889874d22bf60328946074435d56  libgfortran/m4/minloc1s.m4
! 65975b2b3a5877f643008af268f821d3  libgfortran/m4/minloc2s.m4
! 352bcdfe8ebe3b30c46d6a94ec99ee8c  libgfortran/m4/minval.m4
! 34c3cfc84bcf7148f1f51aa62eaf2997  libgfortran/m4/minval0s.m4
! 8a3e03bd89763c569abccf7fc8322a18  libgfortran/m4/minval1s.m4
  6d8cbcd1d1489f643839e7ac2c00a736  libgfortran/m4/misc_specifics.m4
! 617892c7aa9d20832c57477f2255cf63  libgfortran/m4/mtype.m4
! 13e6401ba7f38454bc528a53ac62c662  libgfortran/m4/norm2.m4
! fa28013ea9f964ef32e0531d81a7e459  libgfortran/m4/pack.m4
! 57d9dc7f0a96d3130995586dcfd6a83b  libgfortran/m4/parity.m4
! becef773102de3d497481291fc144ffd  libgfortran/m4/pow.m4
! 402bd44044fd6d76d66c78683bc2e0b6  libgfortran/m4/product.m4
! 48b5ad8f5c4cd7b39d78f45d9dd07356  libgfortran/m4/reshape.m4
! 5fa7c412c5b7ffe6768c29ef87fcd7e7  libgfortran/m4/shape.m4
  2b8de82dc8d9a5bfe1aebe4edd8e2adc  libgfortran/m4/specific.m4
  fde11348d3f1f27d7e48fd646db7c9b0  libgfortran/m4/specific2.m4
! 0c94b7f2bea36c63109413899199d474  libgfortran/m4/spread.m4
! 9613148070bf43c5b103d0566beef08d  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
! 06a963e8fca563c68f71b76ca86fe6c6  libgfortran/m4/unpack.m4
! c5f600c8cc0ae5f16f2866cff071e3a7  libgfortran/mk-kinds-h.sh
  5cacd438c86553689eda2ce3d5623b45  libgfortran/mk-sik-inc.sh
  f8813ac773f6f6eb0ea6ecb287fb9250  libgfortran/mk-srk-inc.sh
! e838dcb32b0b396111855513bd1f667a  libgfortran/runtime/ISO_Fortran_binding.c
! f72e03d8a1fcc1517420eb124c251a46  libgfortran/runtime/backtrace.c
! 033a45c97f612d87d29d286d779ccd29  libgfortran/runtime/bounds.c
! a3e327b6e8ba2fed84089c7d1c92a250  libgfortran/runtime/compile_options.c
! 56b97f586fd00ef96625f5a0e747913b  libgfortran/runtime/convert_char.c
! 0e1d6a16baa3f41434bd5ceed391aad7  libgfortran/runtime/environ.c
! 86fbe145cd5a3736405ebae02b602833  libgfortran/runtime/error.c
! b71068475fa3bd57f5bcc425af970c05  libgfortran/runtime/fpu.c
! dbbd9294e38281c22423658a9d5cd8f9  libgfortran/runtime/in_pack_generic.c
! 434d52bcfca810c19370d0f0c4886787  libgfortran/runtime/in_unpack_generic.c
! 1fdd7662ff4fedb4b83a1557a96aa058  libgfortran/runtime/main.c
! 3bc571aa159ce7d070bc49b6181ba73c  libgfortran/runtime/memory.c
! ba55e489491a671df1db5d07ab1b08b9  libgfortran/runtime/minimal.c
! bbd0ca6d2a102f1d4e807d1f45c1d54c  libgfortran/runtime/pause.c
! 6541c9b21dcb26be9319bf3ddbf34206  libgfortran/runtime/select.c
! 503d8c7be69ce9c68270e11c67d91dde  libgfortran/runtime/select_inc.c
! d372c6ee28f589dfac9e56f5faea2629  libgfortran/runtime/stop.c
! 79ec8cc63043a525e906838fe1a16c64  libgfortran/runtime/string.c
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/LICENSE
  160ac38979ae9334894994a1e7b4bf3b  libgo/MERGE
! d06107d54c5e373da04a7a6d829b00aa  libgo/Makefile.am
! ff8c768aa5b945fd017a46574d4fa171  libgo/Makefile.in
  3a55d95595a6f9e37dee53826b4daff2  libgo/PATENTS
  d0952f0b499c9ebb887222764488a2fc  libgo/README
  492dd43b98c6602a8754328947942c40  libgo/README.gcc
  d4073ec54dd2cef02d0bfc29dd9f6c82  libgo/VERSION
  1a52cbc1db42a585461a5c4bcb398840  libgo/aclocal.m4
  8829a0d35f69d15ebf8b1c1f7af388b6  libgo/check-packages.txt
! 603eaa1869aebeeab6662a9bef739a41  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
  2b5fe3d1420b597cb702a642a065373a  libgo/config/libtool.m4
  eca2703a341e238c14205318df64dde8  libgo/config/ltmain.sh
--- 102943,103057 ----
  1603b9dcffb8d8436da0598e622783a9  libgfortran/m4/ifunction-s2.m4
  3cbecd5d114cf344efea0d4754437c7a  libgfortran/m4/ifunction.m4
  86a682dafdbffea255a15ff37710c93a  libgfortran/m4/ifunction_logical.m4
! 26dd01624305a0c0dab74cc3646c5b9f  libgfortran/m4/in_pack.m4
! de116712a0438756ab9088ceeeed57f5  libgfortran/m4/in_unpack.m4
! df69dc7cecab5da40f62784bcedf670c  libgfortran/m4/iparity.m4
  931d3e6134be8b18f8fd4b755b0f33cc  libgfortran/m4/iparm.m4
! 9dfefd9a2453d8ef511e89448679084e  libgfortran/m4/matmul.m4
  f90a0613ba9c7910fede3029a8db5527  libgfortran/m4/matmul_internal.m4
! 5b29f3b2de20855ffebd6f7970c5ed7e  libgfortran/m4/matmulavx128.m4
! aa00c963c5894aef260a2582577cf747  libgfortran/m4/matmull.m4
! 4a0383ce8a896dd1707238dee73259d2  libgfortran/m4/maxloc0.m4
! 704635440ffe3544a7b5ed071c194570  libgfortran/m4/maxloc0s.m4
! 7a48df838a08b5772894e7a7f35874c9  libgfortran/m4/maxloc1.m4
! ae3abcb1bc7b1bcea924833fc8612626  libgfortran/m4/maxloc1s.m4
! 4bdee60072825fb954e660f2b922e6ac  libgfortran/m4/maxloc2s.m4
! 303dccd351a5a4d21f7c8bf7776ad79f  libgfortran/m4/maxval.m4
! 953751aaf307be916b3f11df71c9097f  libgfortran/m4/maxval0s.m4
! 1430f30b8c6dc16c1db2794d350041b9  libgfortran/m4/maxval1s.m4
! 3e862971753c6a655cdbf96aad5ed588  libgfortran/m4/minloc0.m4
! 6c8927381ab3750edeea11e48405de0d  libgfortran/m4/minloc0s.m4
! e926e3ec307fe1069719faaf0bcdd0ef  libgfortran/m4/minloc1.m4
! a91a206179303b5355d846f04cd32fb1  libgfortran/m4/minloc1s.m4
! d8657549646e6319d0fa620f0a0a8a22  libgfortran/m4/minloc2s.m4
! 42996baf060828b41d899b18ffc5c0b7  libgfortran/m4/minval.m4
! 34cc5204d729114a55e478ca42e9b72b  libgfortran/m4/minval0s.m4
! 8b331bb2b8000fc9e3e74521fea84073  libgfortran/m4/minval1s.m4
  6d8cbcd1d1489f643839e7ac2c00a736  libgfortran/m4/misc_specifics.m4
! 70d9300a1cebaef5ef324dad027b2fc3  libgfortran/m4/mtype.m4
! d90afd34269b2fcbbd33a00a75e1931b  libgfortran/m4/norm2.m4
! 2d8d1e577fe0aa36b066478b6fec21c0  libgfortran/m4/pack.m4
! 85c80d06a9e0bcb21b48f54febfb6e9a  libgfortran/m4/parity.m4
! 50d2e1efae77d68fa3d0eed1e7288db1  libgfortran/m4/pow.m4
! a503553e59a409ec1b0204af38806cd0  libgfortran/m4/product.m4
! 5b441a86c43c91ea210f75be7090bde8  libgfortran/m4/reshape.m4
! cf055849304830f4f04ff10c46ba5ee6  libgfortran/m4/shape.m4
  2b8de82dc8d9a5bfe1aebe4edd8e2adc  libgfortran/m4/specific.m4
  fde11348d3f1f27d7e48fd646db7c9b0  libgfortran/m4/specific2.m4
! f944ee93251a2407993a56d95192bd34  libgfortran/m4/spread.m4
! 87125946eacf600853b3c34a9ceedb90  libgfortran/m4/sum.m4
  0ad0318f00c85db29d184dc3dff12276  libgfortran/m4/types.m4
! 2f0160429bbf3d09fcf8144fa9253163  libgfortran/m4/unpack.m4
! 1661b058a524a21873b501b1d9d972a6  libgfortran/mk-kinds-h.sh
  5cacd438c86553689eda2ce3d5623b45  libgfortran/mk-sik-inc.sh
  f8813ac773f6f6eb0ea6ecb287fb9250  libgfortran/mk-srk-inc.sh
! da92812c2c4db06c78344f15eaf795f8  libgfortran/runtime/ISO_Fortran_binding.c
! 1c9c59f07cfc5b2ed488e386948ef147  libgfortran/runtime/backtrace.c
! 10ae0c12f8ea623e90b824ada5813e21  libgfortran/runtime/bounds.c
! 67d3f0f3fd13729e0b4406c5095a3f23  libgfortran/runtime/compile_options.c
! bd3a8f9fbc5109c7ce61e3e7ffbbfd31  libgfortran/runtime/convert_char.c
! abc5f11de5874611d5c51eecc1b91490  libgfortran/runtime/environ.c
! 3c3f0f987f891a6cbec039887e9fac0a  libgfortran/runtime/error.c
! 6072cc83eaf0f68c9d848f50ac1c166e  libgfortran/runtime/fpu.c
! c2da0d42aeeb6b22537072b198c1e815  libgfortran/runtime/in_pack_generic.c
! 99cfb8bbd73be3b48e00f50360a7bdcd  libgfortran/runtime/in_unpack_generic.c
! 25f411d89f2c55649d32138604df9126  libgfortran/runtime/main.c
! f28fe1ab0bb0ba15e91445d6e791cdf6  libgfortran/runtime/memory.c
! 01dfbd2cd2d86d4153f13313bfffa2b8  libgfortran/runtime/minimal.c
! c87426032ff9745d21a72b2252600951  libgfortran/runtime/pause.c
! 340ffa4acbd81c691caa42464a1fe21f  libgfortran/runtime/select.c
! f8ec0c7cb3d2eabb48625cdc600708a9  libgfortran/runtime/select_inc.c
! 55fd2fd3b90bb8261a9398449ad6368d  libgfortran/runtime/stop.c
! 69ebfc81af9a19cab0a2e3014118803a  libgfortran/runtime/string.c
! 09f45f750cc23cf96d412dd62ab4cdb6  libgm2/ChangeLog
! a7d6d5660cf3de7315a5dae219dd9c05  libgm2/Makefile.am
! 0ab093c80452ab5662725adae9d4d6ae  libgm2/Makefile.in
! 6f403a61e058e0ec6bc551e0d8d28a77  libgm2/aclocal.m4
! fe1021d2d92d2ca54c64608107a4190f  libgm2/autogen.sh
! 60344c1b0c482e7f8038c1bfafe18c6e  libgm2/config.h.in
! e6cf1406f1932aa0604d29f6cb340c77  libgm2/configure
! 0608b1b0bf5c572556b8f1b7a25db6ae  libgm2/configure.ac
! 486fff39ba5311d5eec3de64121743de  libgm2/libm2cor/KeyBoardLEDs.cc
! 19e832e1d32e385da8de765925bd5aa3  libgm2/libm2cor/Makefile.am
! e755abfa98be79a28e0dfeebd5dec90e  libgm2/libm2cor/Makefile.in
! 256f893d9141ee50fb703d08f0c7ce3a  libgm2/libm2iso/ChanConsts.h
! 1f06a5aa78117852f125ffe8c8925116  libgm2/libm2iso/ErrnoCategory.cc
! ab69de129c1a3a00c59aa187d339152a  libgm2/libm2iso/Makefile.am
! 6df36b1669309684840594acc5526242  libgm2/libm2iso/Makefile.in
! 4b10df779974459cd3d6567e6f4bfd3e  libgm2/libm2iso/RTco.cc
! 60e20d4966763ff532153264c355ec8f  libgm2/libm2iso/m2rts.h
! e3037b97506181892bc760a12d9c5f69  libgm2/libm2iso/wrapsock.c
! 826933392e21b0d0df6a5a7cc4dce7b4  libgm2/libm2iso/wraptime.cc
! eb003ee7f1b2cf1972500be967c4d5eb  libgm2/libm2log/Break.c
! d425ed48b3a73f68f5025a40eb380896  libgm2/libm2log/Makefile.am
! 7d3b6e7f7ec330e68bb34e30db800b7e  libgm2/libm2log/Makefile.in
! c3fb6ebe6c37a7ea948911382aec8ad4  libgm2/libm2min/Makefile.am
! 9c966c38b65dae3438b0886830c29fc1  libgm2/libm2min/Makefile.in
! a9f05e5da997bab66d457b3be2773189  libgm2/libm2min/libc.c
! 4a64c5cf47510b11c444f7b639d9e505  libgm2/libm2pim/Makefile.am
! 6ad1311d7e1226b0fde15302aaf760da  libgm2/libm2pim/Makefile.in
! 944531ee3e0d441b1c7209ac2c2355eb  libgm2/libm2pim/Selective.cc
! 635915386732139700506c42de8b469d  libgm2/libm2pim/SysExceptions.cc
! 04512543e0711f8f6f6e1fb2a995330e  libgm2/libm2pim/UnixArgs.cc
! 0b25446807f766ae32f14b474c46fc14  libgm2/libm2pim/cgetopt.cc
! 2cb0d13b5db4dfe8d3608202b1f64c41  libgm2/libm2pim/dtoa.cc
! 9aa81c2dceff4dee4c02d1c0008e6e11  libgm2/libm2pim/errno.cc
! 7d5a1e88fae922929d5a80b2cc0eab61  libgm2/libm2pim/ldtoa.cc
! 77d56042a869f8af140d13302bf2a81b  libgm2/libm2pim/sckt.cc
! 44cc0efcc2bd43aa980512c2bbc30067  libgm2/libm2pim/target.c
! 22c07cb71fa1f60f5fa45ba985a4bf0f  libgm2/libm2pim/termios.cc
! 614aa09575d713d00e82fc58aa564645  libgm2/libm2pim/wrapc.cc
  5d4950ecb7b26d2c5e4e7b4e0dd74707  libgo/LICENSE
  160ac38979ae9334894994a1e7b4bf3b  libgo/MERGE
! 091d421c80b1dbc1e5701f7f015c5321  libgo/Makefile.am
! 967f8141555e644b2e716bb09f5c15a2  libgo/Makefile.in
  3a55d95595a6f9e37dee53826b4daff2  libgo/PATENTS
  d0952f0b499c9ebb887222764488a2fc  libgo/README
  492dd43b98c6602a8754328947942c40  libgo/README.gcc
  d4073ec54dd2cef02d0bfc29dd9f6c82  libgo/VERSION
  1a52cbc1db42a585461a5c4bcb398840  libgo/aclocal.m4
  8829a0d35f69d15ebf8b1c1f7af388b6  libgo/check-packages.txt
! 1adb128b0b7c235bb34f5dfe024c36f9  libgo/config.h.in
  ad1ce707d70b18d5d14bdbcfef82a9bb  libgo/config/README
  2b5fe3d1420b597cb702a642a065373a  libgo/config/libtool.m4
  eca2703a341e238c14205318df64dde8  libgo/config/ltmain.sh
*************** dee72a6a60e99528b0d17bf3ff9a1e15  libgo/
*** 95035,95042 ****
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! d1ef0544e1edc75cf4fa682072c7f36f  libgo/configure
! cab12e0bb1067003d29ecf70070880e8  libgo/configure.ac
  aac32f286f60f443762f017a205c38dc  libgo/go/archive/tar/common.go
  f7d12cedad0468bfe618b4d2f78e2389  libgo/go/archive/tar/format.go
  2bbe8478660c394e2178904d3b0fd954  libgo/go/archive/tar/fuzz_test.go
--- 103059,103066 ----
  bc2f6032c98896249eadb56177c7d357  libgo/config/ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  libgo/config/ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  libgo/config/lt~obsolete.m4
! 6717964e16be0ccf337a61a3246088f9  libgo/configure
! d05e940c6aa36647712ff5afa8b00f5b  libgo/configure.ac
  aac32f286f60f443762f017a205c38dc  libgo/go/archive/tar/common.go
  f7d12cedad0468bfe618b4d2f78e2389  libgo/go/archive/tar/format.go
  2bbe8478660c394e2178904d3b0fd954  libgo/go/archive/tar/fuzz_test.go
*************** d29680fb3b4bcf5e39fff57092d5a323  libgo/
*** 95153,95162 ****
  79e95f5125fc9fdd916c25f28fd9fd8f  libgo/go/cmd/cgo/ast_go1.go
  86db1b52668f98f708fe37fb11f6d63d  libgo/go/cmd/cgo/ast_go118.go
  deb3f35f9719736dc46ee9467b2601d3  libgo/go/cmd/cgo/doc.go
! 08eac5893e28901c02e8ee827621602a  libgo/go/cmd/cgo/gcc.go
  3f4f081f65c8360200a9ca291e9c72a8  libgo/go/cmd/cgo/godefs.go
! 33daac065b23c6ccb42aed6e533339b5  libgo/go/cmd/cgo/main.go
! a7d9479bfd768895db0ac8a57167f359  libgo/go/cmd/cgo/out.go
  149613e5586c59d8d7da138f6711f0c9  libgo/go/cmd/cgo/util.go
  beb844547551f643c2883091efeb64e0  libgo/go/cmd/go.mod
  fb2c0e6eade8aa44fa319a96324981ba  libgo/go/cmd/go/alldocs.go
--- 103177,103186 ----
  79e95f5125fc9fdd916c25f28fd9fd8f  libgo/go/cmd/cgo/ast_go1.go
  86db1b52668f98f708fe37fb11f6d63d  libgo/go/cmd/cgo/ast_go118.go
  deb3f35f9719736dc46ee9467b2601d3  libgo/go/cmd/cgo/doc.go
! fc126a76be37a409ee360cb7202a8885  libgo/go/cmd/cgo/gcc.go
  3f4f081f65c8360200a9ca291e9c72a8  libgo/go/cmd/cgo/godefs.go
! 94b35edbff78926b69ca1c5feec916a6  libgo/go/cmd/cgo/main.go
! 765441b21b5214f9d34379d00fc0d349  libgo/go/cmd/cgo/out.go
  149613e5586c59d8d7da138f6711f0c9  libgo/go/cmd/cgo/util.go
  beb844547551f643c2883091efeb64e0  libgo/go/cmd/go.mod
  fb2c0e6eade8aa44fa319a96324981ba  libgo/go/cmd/go/alldocs.go
*************** d3e07eab708035416dd6f507365e589d  libgo/
*** 95236,95242 ****
  d2faf44d06847c2bb95e3cf7e35ec54f  libgo/go/cmd/go/internal/load/flag.go
  94fca467c2106c7d6fe48cdb396c70ac  libgo/go/cmd/go/internal/load/flag_test.go
  4558f4acfca06853803287a80b960f2c  libgo/go/cmd/go/internal/load/path.go
! 903943234197dfe84647c81029b54bbe  libgo/go/cmd/go/internal/load/pkg.go
  26c78443549093a85cb7a33fe5903043  libgo/go/cmd/go/internal/load/pkg_test.go
  ccfb8d791ac8b57d233dcebe8a2c2fea  libgo/go/cmd/go/internal/load/search.go
  368f4b233b1f010424a6d6ee54c531c0  libgo/go/cmd/go/internal/load/test.go
--- 103260,103266 ----
  d2faf44d06847c2bb95e3cf7e35ec54f  libgo/go/cmd/go/internal/load/flag.go
  94fca467c2106c7d6fe48cdb396c70ac  libgo/go/cmd/go/internal/load/flag_test.go
  4558f4acfca06853803287a80b960f2c  libgo/go/cmd/go/internal/load/path.go
! bc269a357089fd8675fb620c7d975b93  libgo/go/cmd/go/internal/load/pkg.go
  26c78443549093a85cb7a33fe5903043  libgo/go/cmd/go/internal/load/pkg_test.go
  ccfb8d791ac8b57d233dcebe8a2c2fea  libgo/go/cmd/go/internal/load/search.go
  368f4b233b1f010424a6d6ee54c531c0  libgo/go/cmd/go/internal/load/test.go
*************** d7c2d693b83d74f542553f24afe3d013  libgo/
*** 98759,98767 ****
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_freebsd.go
  eaef28a4e56cbee96692095f999e83f8  libgo/go/mime/type_openbsd.go
  5decf13646968cfa0292bce1e80d78da  libgo/go/mime/type_plan9.go
! b2404ba91edcd277d3a8364c4fb803a3  libgo/go/mime/type_test.go
  c418623b9cca1129a770ea7edc727dc5  libgo/go/mime/type_unix.go
! 3d2021ccbc1bfe5381c6efcff907f28f  libgo/go/mime/type_unix_test.go
  3bdf5598271fa2c31d7b55137192c950  libgo/go/mime/type_windows.go
  22d80a82f2c8f2ce68d890aa1abf1cf7  libgo/go/net/addrselect.go
  3121239894eaeb205a08645935894636  libgo/go/net/addrselect_test.go
--- 106783,106791 ----
  38cd804ecac4484ac521d769afedbefb  libgo/go/mime/type_freebsd.go
  eaef28a4e56cbee96692095f999e83f8  libgo/go/mime/type_openbsd.go
  5decf13646968cfa0292bce1e80d78da  libgo/go/mime/type_plan9.go
! 91e2c65a5b1ec5990cfed04c5495573a  libgo/go/mime/type_test.go
  c418623b9cca1129a770ea7edc727dc5  libgo/go/mime/type_unix.go
! 17c491d16089b5ddf49f6a1e79d06724  libgo/go/mime/type_unix_test.go
  3bdf5598271fa2c31d7b55137192c950  libgo/go/mime/type_windows.go
  22d80a82f2c8f2ce68d890aa1abf1cf7  libgo/go/net/addrselect.go
  3121239894eaeb205a08645935894636  libgo/go/net/addrselect_test.go
*************** bed0f06dcf8f783133f0349c0ff725dd  libgo/
*** 99355,99360 ****
--- 107379,107385 ----
  620c42d6906acae7dd0f38723004acdc  libgo/go/runtime/atomic_pointer.go
  378753206f8b89cdf8507bd838cd752e  libgo/go/runtime/auxv_none.go
  7fe910f3c857427987a1be1f74b0ee1b  libgo/go/runtime/callers_test.go
+ 1c2103be7122c2cc26ad3b079233d79a  libgo/go/runtime/cgo/cgo.go
  b99c93066c865891540d1edd0f2139fe  libgo/go/runtime/cgo/handle.go
  70d3e4639f703bacb09e9c20ab62f4d3  libgo/go/runtime/cgo/handle_test.go
  2b4bf4503adf708178e74d03b7188e26  libgo/go/runtime/cgo_gccgo.go
*************** b7280d595c7c4418332d621c92079f22  libgo/
*** 99406,99416 ****
  aca541d0fcb9891e79eccabcfe613fe5  libgo/go/runtime/export_test.go
  f683c5a9297a201e2f353f2f66fc4a57  libgo/go/runtime/export_unix_test.go
  7c1728e2211bb9d7860ae60122b3e369  libgo/go/runtime/export_windows_test.go
! 0a6d740c0e4fed9e8ee44889f2b130fa  libgo/go/runtime/extern.go
  c320b7da530e4f0897ae4a0e5f245bdd  libgo/go/runtime/fastlog2.go
  98fa37aa2849cd0923db32ac978bfcea  libgo/go/runtime/fastlog2_test.go
  52d8d18843078e415ebd00a11c8f45f4  libgo/go/runtime/fastlog2table.go
! 37daeb0497dbbd2f1756c917528cac47  libgo/go/runtime/ffi.go
  f3e367be9f1303b808ba504b2992d9b0  libgo/go/runtime/float.go
  4f47c02b74b9ab497ef9ba0aade67121  libgo/go/runtime/float_test.go
  88f84f0373edbaf2cb8ab03286081540  libgo/go/runtime/gc_test.go
--- 107431,107441 ----
  aca541d0fcb9891e79eccabcfe613fe5  libgo/go/runtime/export_test.go
  f683c5a9297a201e2f353f2f66fc4a57  libgo/go/runtime/export_unix_test.go
  7c1728e2211bb9d7860ae60122b3e369  libgo/go/runtime/export_windows_test.go
! 96de583836c2ea8eb952dc2f6d785683  libgo/go/runtime/extern.go
  c320b7da530e4f0897ae4a0e5f245bdd  libgo/go/runtime/fastlog2.go
  98fa37aa2849cd0923db32ac978bfcea  libgo/go/runtime/fastlog2_test.go
  52d8d18843078e415ebd00a11c8f45f4  libgo/go/runtime/fastlog2table.go
! 82f76c726da5f625a6b1ed9028f9b717  libgo/go/runtime/ffi.go
  f3e367be9f1303b808ba504b2992d9b0  libgo/go/runtime/float.go
  4f47c02b74b9ab497ef9ba0aade67121  libgo/go/runtime/float_test.go
  88f84f0373edbaf2cb8ab03286081540  libgo/go/runtime/gc_test.go
*************** b362d673964224c7ad5b7c0fc0411c67  libgo/
*** 99467,99473 ****
  30b03e84c31573d3a3252f0e2519fd23  libgo/go/runtime/mcache.go
  1c086e4f02c68c5bdc7d5ae24909ebfd  libgo/go/runtime/mcentral.go
  fab5ed36c73ae27abf390309c40789d4  libgo/go/runtime/mcheckmark.go
! bd01a74e0a3f3e08aeec945100c329bc  libgo/go/runtime/mem_gccgo.go
  034df5e78566981cc4e6b61135fef43b  libgo/go/runtime/memmove_linux_amd64_test.go
  e295e76c8e913427333b9f518014abc6  libgo/go/runtime/memmove_test.go
  c21485376d776d06e1c850e5ae0f4c01  libgo/go/runtime/metrics.go
--- 107492,107498 ----
  30b03e84c31573d3a3252f0e2519fd23  libgo/go/runtime/mcache.go
  1c086e4f02c68c5bdc7d5ae24909ebfd  libgo/go/runtime/mcentral.go
  fab5ed36c73ae27abf390309c40789d4  libgo/go/runtime/mcheckmark.go
! b1fdad463d0bb0af702003086b92170a  libgo/go/runtime/mem_gccgo.go
  034df5e78566981cc4e6b61135fef43b  libgo/go/runtime/memmove_linux_amd64_test.go
  e295e76c8e913427333b9f518014abc6  libgo/go/runtime/memmove_test.go
  c21485376d776d06e1c850e5ae0f4c01  libgo/go/runtime/metrics.go
*************** ad7c3c5d83575cdcba8f7da7415398af  libgo/
*** 99538,99544 ****
  52bd070d327db7c2e9146a7c4afc9652  libgo/go/runtime/os_hurd.go
  e9438f316eb39bee387d1e010a69e0ca  libgo/go/runtime/os_illumos.go
  4eb91f7317f1c73cc7432c1e7e3e6354  libgo/go/runtime/os_js.go
! 4175790133e164af4eef573f293a0b70  libgo/go/runtime/os_linux.go
  bc2773acfbcd6d681d5355bd9d5179d2  libgo/go/runtime/os_linux_arm.go
  6c7f3b61dff535c19e812385685d0f9b  libgo/go/runtime/os_linux_arm64.go
  8140e1fcc824729cab8dc67bf420185c  libgo/go/runtime/os_linux_mips64x.go
--- 107563,107569 ----
  52bd070d327db7c2e9146a7c4afc9652  libgo/go/runtime/os_hurd.go
  e9438f316eb39bee387d1e010a69e0ca  libgo/go/runtime/os_illumos.go
  4eb91f7317f1c73cc7432c1e7e3e6354  libgo/go/runtime/os_js.go
! addeb522ee80b5fa5476287b761ecbd1  libgo/go/runtime/os_linux.go
  bc2773acfbcd6d681d5355bd9d5179d2  libgo/go/runtime/os_linux_arm.go
  6c7f3b61dff535c19e812385685d0f9b  libgo/go/runtime/os_linux_arm64.go
  8140e1fcc824729cab8dc67bf420185c  libgo/go/runtime/os_linux_mips64x.go
*************** d0aca74d8a926e6b9cb3e03e5cff2461  libgo/
*** 99837,99843 ****
  bcba9c41e717ecc5f9fadedc63b51631  libgo/go/syscall/clone_linux.c
  59298e712286f79b16fe86c28ab48fc8  libgo/go/syscall/const_plan9.go
  439bf440d06efe2c992cfe9ce2bdcafe  libgo/go/syscall/creds_test.go
! f3bc6044d11bfddc8ddee276c7c3c8a0  libgo/go/syscall/dir_plan9.go
  ae58568787af8b5f9e7ce205043f4e8c  libgo/go/syscall/dirent.go
  ee6aca5ccaf19ffcbdc8ad467542740a  libgo/go/syscall/dirent_test.go
  37aa0a73621184d81b793054e9dc9cf6  libgo/go/syscall/endian_big.go
--- 107862,107868 ----
  bcba9c41e717ecc5f9fadedc63b51631  libgo/go/syscall/clone_linux.c
  59298e712286f79b16fe86c28ab48fc8  libgo/go/syscall/const_plan9.go
  439bf440d06efe2c992cfe9ce2bdcafe  libgo/go/syscall/creds_test.go
! 42ab0fe2682084ba8383a9c11223258a  libgo/go/syscall/dir_plan9.go
  ae58568787af8b5f9e7ce205043f4e8c  libgo/go/syscall/dirent.go
  ee6aca5ccaf19ffcbdc8ad467542740a  libgo/go/syscall/dirent_test.go
  37aa0a73621184d81b793054e9dc9cf6  libgo/go/syscall/endian_big.go
*************** ee6aca5ccaf19ffcbdc8ad467542740a  libgo/
*** 99846,99860 ****
  191058c52e6b6cfb72ed323baa0e0f01  libgo/go/syscall/env_windows.go
  9d171a1ced6ead793607cd7bcb7f1d58  libgo/go/syscall/errno.c
  e997bae42fe4ba0d7865f88e9f039a9c  libgo/go/syscall/errors_plan9.go
! 246ad220feddf48c3796fabb035a8d6b  libgo/go/syscall/errstr.go
! b5fde02a7c01362d218b8e407438c7b8  libgo/go/syscall/errstr_glibc.go
! c8e33587824df5ac96cb9e414053fe92  libgo/go/syscall/exec_bsd.go
! b66cb02480461b9d6efd288dc56b17c3  libgo/go/syscall/exec_freebsd.go
! 82cc7488b0ac748f1fcb6201a906c65a  libgo/go/syscall/exec_hurd.go
! bef72360eeb73e9677535307552e35c7  libgo/go/syscall/exec_linux.go
  1aa26c22992ac9fe94148d3a93c8da27  libgo/go/syscall/exec_linux_test.go
  d8579c332f33abf500076a62b7f989fd  libgo/go/syscall/exec_pdeathsig_test.go
! ec30317b065747527fccbc8e4cc44f04  libgo/go/syscall/exec_stubs.go
  70d75a5cdbab1f264c2dae8fa3050a2c  libgo/go/syscall/exec_unix.go
  b29fc6f09590083773ef3e434debd595  libgo/go/syscall/exec_unix_test.go
  677541b208fb33bea51127dd892a7585  libgo/go/syscall/exec_windows.go
--- 107871,107884 ----
  191058c52e6b6cfb72ed323baa0e0f01  libgo/go/syscall/env_windows.go
  9d171a1ced6ead793607cd7bcb7f1d58  libgo/go/syscall/errno.c
  e997bae42fe4ba0d7865f88e9f039a9c  libgo/go/syscall/errors_plan9.go
! 44e14243128e2b9250d2f91fbbd343db  libgo/go/syscall/errstr.go
! 838c04d199b485852f963005b18735d5  libgo/go/syscall/exec_bsd.go
! cfe3647d1dcdea4f4fd8ee02baf2e0bf  libgo/go/syscall/exec_freebsd.go
! 61b1b6b5eddb505993106f0b02f7b4bb  libgo/go/syscall/exec_hurd.go
! 2f728387df6cc5f6a8bded7d6a0b1873  libgo/go/syscall/exec_linux.go
  1aa26c22992ac9fe94148d3a93c8da27  libgo/go/syscall/exec_linux_test.go
  d8579c332f33abf500076a62b7f989fd  libgo/go/syscall/exec_pdeathsig_test.go
! accb0bebcf9704ec21182c099c12c6da  libgo/go/syscall/exec_stubs.go
  70d75a5cdbab1f264c2dae8fa3050a2c  libgo/go/syscall/exec_unix.go
  b29fc6f09590083773ef3e434debd595  libgo/go/syscall/exec_unix_test.go
  677541b208fb33bea51127dd892a7585  libgo/go/syscall/exec_windows.go
*************** cbd945d6792b9f71c71024c0000547ed  libgo/
*** 99873,99908 ****
  c25d966535b904ca98e1ad6374ceac7b  libgo/go/syscall/js/func.go
  e42ae59cc28384fafa35f071d6968b2e  libgo/go/syscall/js/js.go
  4ffbb07223596d8b8015ecb7e0f51209  libgo/go/syscall/js/js_test.go
! 715c03693785f5172ce7ae5971015c28  libgo/go/syscall/libcall_aix.go
! fad34038f40ff23de2b9b3390008db34  libgo/go/syscall/libcall_bsd.go
! 8d3d53322b2783b898c415ba37a16dd9  libgo/go/syscall/libcall_bsd_largefile.go
! 0510facb65ec87fbb79c71e9b30b6499  libgo/go/syscall/libcall_bsd_regfile.go
! caf93ff057c135366a3fabf9c1992ad9  libgo/go/syscall/libcall_bsd_sendfile.go
! 70354b924cfe8f3ac607b0d5ae031044  libgo/go/syscall/libcall_glibc.go
  0b7cc30b317196a42882ace5a55527bd  libgo/go/syscall/libcall_hurd.go
  562e5aacf2778a3c9a00918069e43b2f  libgo/go/syscall/libcall_hurd_386.go
! ad4306c7d52c93cc9cdfbaa2415c8ad4  libgo/go/syscall/libcall_irix.go
! 2f1987db41335974b8c0d5af17cf3895  libgo/go/syscall/libcall_linux.go
  08d02e9ba31a2f132b6670d56e5f9a91  libgo/go/syscall/libcall_linux_386.go
  d0dfa8e45cee5defb536480f056ed447  libgo/go/syscall/libcall_linux_alpha.go
  0f110f6b4b28d847963c11d0307ebbfb  libgo/go/syscall/libcall_linux_amd64.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390x.go
! 219739732560d7d3b241f820bdf7463d  libgo/go/syscall/libcall_linux_utimesnano.go
! 78f9b733965f52ec037f340da4424679  libgo/go/syscall/libcall_posix.go
! be76e9be95722a9b93ae038a613eea57  libgo/go/syscall/libcall_posix_largefile.go
! 52330f2b01b7aed2a0559201d3b5fb0a  libgo/go/syscall/libcall_posix_nonhurd.go
! 9951e30a68e24311c6a58d8cbad5049c  libgo/go/syscall/libcall_posix_regfile.go
! b2fa41d1a19889e90c59fb16d47aa785  libgo/go/syscall/libcall_posix_utimesnano.go
  7f6b5fdb1828edd9f2110bb86bc8b899  libgo/go/syscall/libcall_solaris_386.go
  9402e49eb4623164b42fab1642e26326  libgo/go/syscall/libcall_solaris_amd64.go
! b55e11c58c083680acda683400c7317e  libgo/go/syscall/libcall_solaris_largefile.go
! 80d482a2123836bc92a7e3407140b4f2  libgo/go/syscall/libcall_solaris_regfile.go
  104e4f2b5dae1c3f7ea7824db3e26029  libgo/go/syscall/libcall_solaris_sparc.go
  9402e49eb4623164b42fab1642e26326  libgo/go/syscall/libcall_solaris_sparc64.go
  245890ded83cf01a69151e347f18bb8b  libgo/go/syscall/libcall_support.go
! 4a419aa6ee84d47246c4eee7e7e11188  libgo/go/syscall/libcall_uname.go
! 1f3faef7b5f08c81787d0faa2588cec3  libgo/go/syscall/libcall_wait4.go
  e6c0c1a73eb2b4304600563980dfa862  libgo/go/syscall/libcall_wait4_aix.go
  c69fafcb2bf056078c9afe6a81824c87  libgo/go/syscall/lsf_linux.go
  3d5b1b31ccfad426f85c0bf067b1322a  libgo/go/syscall/mkasm.go
--- 107897,107932 ----
  c25d966535b904ca98e1ad6374ceac7b  libgo/go/syscall/js/func.go
  e42ae59cc28384fafa35f071d6968b2e  libgo/go/syscall/js/js.go
  4ffbb07223596d8b8015ecb7e0f51209  libgo/go/syscall/js/js_test.go
! b92e2663c46f0629a313227e35588049  libgo/go/syscall/libcall_aix.go
! 18e2b45ad44f462f8bcf0a158f352267  libgo/go/syscall/libcall_bsd.go
! d4b0ee867d8a074b10e5b66f4f3c3d40  libgo/go/syscall/libcall_bsd_largefile.go
! 0358ceb313d2820f5a48d24a53e546fc  libgo/go/syscall/libcall_bsd_regfile.go
! 579cf9c1bf018a1297e448252ba14e1e  libgo/go/syscall/libcall_bsd_sendfile.go
! 38822a97d3da51d4bdfcbbc85b84651a  libgo/go/syscall/libcall_glibc.go
  0b7cc30b317196a42882ace5a55527bd  libgo/go/syscall/libcall_hurd.go
  562e5aacf2778a3c9a00918069e43b2f  libgo/go/syscall/libcall_hurd_386.go
! e3689e3e98f554ea33a77ae8b39788bb  libgo/go/syscall/libcall_irix.go
! 086b0d565419c3a6c9f2ccdf75cd99d0  libgo/go/syscall/libcall_linux.go
  08d02e9ba31a2f132b6670d56e5f9a91  libgo/go/syscall/libcall_linux_386.go
  d0dfa8e45cee5defb536480f056ed447  libgo/go/syscall/libcall_linux_alpha.go
  0f110f6b4b28d847963c11d0307ebbfb  libgo/go/syscall/libcall_linux_amd64.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390.go
  ce162a117004aefe7a22fb9acbb75fb6  libgo/go/syscall/libcall_linux_s390x.go
! 43ec8e81cba9318bda1b1383b1ba49b5  libgo/go/syscall/libcall_linux_utimesnano.go
! 30a2162d565ed5f06c9245134d6aed0d  libgo/go/syscall/libcall_posix.go
! 50a1960bc03caac352a596cad1cfc5a5  libgo/go/syscall/libcall_posix_largefile.go
! b879d199992926e3e1a9986f664eae4b  libgo/go/syscall/libcall_posix_nonhurd.go
! 97d0906117231e7a7f75812651b0937e  libgo/go/syscall/libcall_posix_regfile.go
! eee77ce14c76cebd4a73a73e5fa25fcf  libgo/go/syscall/libcall_posix_utimesnano.go
  7f6b5fdb1828edd9f2110bb86bc8b899  libgo/go/syscall/libcall_solaris_386.go
  9402e49eb4623164b42fab1642e26326  libgo/go/syscall/libcall_solaris_amd64.go
! 6ceb1cc4a71877b8b83770cdbbb3a06e  libgo/go/syscall/libcall_solaris_largefile.go
! 2ca7d08f15ec469240e5728427c1cd4f  libgo/go/syscall/libcall_solaris_regfile.go
  104e4f2b5dae1c3f7ea7824db3e26029  libgo/go/syscall/libcall_solaris_sparc.go
  9402e49eb4623164b42fab1642e26326  libgo/go/syscall/libcall_solaris_sparc64.go
  245890ded83cf01a69151e347f18bb8b  libgo/go/syscall/libcall_support.go
! 02e67c8d88d255780cf800a43bb584dd  libgo/go/syscall/libcall_uname.go
! e148fe3f823fc6c407987b1a9e0a60ab  libgo/go/syscall/libcall_wait4.go
  e6c0c1a73eb2b4304600563980dfa862  libgo/go/syscall/libcall_wait4_aix.go
  c69fafcb2bf056078c9afe6a81824c87  libgo/go/syscall/lsf_linux.go
  3d5b1b31ccfad426f85c0bf067b1322a  libgo/go/syscall/mkasm.go
*************** d13db977a1f8b505c859367325c65687  libgo/
*** 99925,99932 ****
  af192ae27cd59288bab393ba3b8791dc  libgo/go/syscall/setuidgid_32_linux.go
  542265dabc4335b878f72770909dfddf  libgo/go/syscall/setuidgid_linux.go
  c41963aff6f671a6df727e478deed0bc  libgo/go/syscall/signame.c
! f6198757bf750b2e86c9f7f4920828a9  libgo/go/syscall/sleep_rtems.go
! b30e4fd94e74d91b5252cfd8eccad3cf  libgo/go/syscall/sleep_select.go
  930ac3cd3c8a42dd414b1a24125658e8  libgo/go/syscall/sock_cloexec_linux.go
  1f16c7eba73e816c7cd9458eb1b017ea  libgo/go/syscall/sockcmsg_dragonfly.go
  ac6ea144ae2aa14415fe0681812fb135  libgo/go/syscall/sockcmsg_linux.go
--- 107949,107956 ----
  af192ae27cd59288bab393ba3b8791dc  libgo/go/syscall/setuidgid_32_linux.go
  542265dabc4335b878f72770909dfddf  libgo/go/syscall/setuidgid_linux.go
  c41963aff6f671a6df727e478deed0bc  libgo/go/syscall/signame.c
! 4d8be5d63ac3d5955ac8cbc53b8641fa  libgo/go/syscall/sleep_rtems.go
! 24552238573e3163ef99c7d7a4ab0a5c  libgo/go/syscall/sleep_select.go
  930ac3cd3c8a42dd414b1a24125658e8  libgo/go/syscall/sock_cloexec_linux.go
  1f16c7eba73e816c7cd9458eb1b017ea  libgo/go/syscall/sockcmsg_dragonfly.go
  ac6ea144ae2aa14415fe0681812fb135  libgo/go/syscall/sockcmsg_linux.go
*************** ac6ea144ae2aa14415fe0681812fb135  libgo/
*** 99934,99963 ****
  7c74f125a645c3bf5001b5920097d7f4  libgo/go/syscall/sockcmsg_unix_other.go
  8aa7392688e2db73ec8591d973d43431  libgo/go/syscall/socket.go
  c43e9f9fd83b7f82926c7fdab24fc53d  libgo/go/syscall/socket_aix.go
! ca7f79d8156a318a770247ee29c43a01  libgo/go/syscall/socket_bsd.go
! 4526ce2d51a10cff3f4c3edecdb2a584  libgo/go/syscall/socket_hurd.go
! 91b198a36357fdf64b728fcc898b62b0  libgo/go/syscall/socket_irix.go
  ed112d1c897af9d6ce0d5556eeeec5ca  libgo/go/syscall/socket_linux.go
! 2f5321278738955c743661d8db6dc172  libgo/go/syscall/socket_linux_ppc64x_type.go
! d222e9fb18b3dc0236f041a07a0e47ce  libgo/go/syscall/socket_linux_type.go
! a32c8f38aef86961c1bfd750e18d94a1  libgo/go/syscall/socket_posix.go
  57ed75694a025e8553fe2ba1de10d658  libgo/go/syscall/socket_solaris.go
! 167f36ad5355fe6ed983982996c02d69  libgo/go/syscall/socket_xnet.go
! ce4c501d2565a767d84060f75dc51366  libgo/go/syscall/syscall.go
  6f2b2e0979d3ed4fc77da45b0f4d3dd0  libgo/go/syscall/syscall_aix.go
  5c1be62bcdb0a752dce2f1dc35c1349e  libgo/go/syscall/syscall_aix_ppc.go
  0e142cfb436483c276aea628de798a86  libgo/go/syscall/syscall_aix_ppc64.go
  334a9b1171ada442a2f637071b4c5e48  libgo/go/syscall/syscall_darwin.go
  014c86a47872f817d09a4e7a69092051  libgo/go/syscall/syscall_dragonfly.go
! d46537cc7906d2e27e3dd0b20f59cdda  libgo/go/syscall/syscall_errno.go
  21c7b2d93dc14b6c353aa068a648ee4d  libgo/go/syscall/syscall_freebsd.go
  9272cf24534b777af3e85023778fcda9  libgo/go/syscall/syscall_freebsd_arm64.go
  b6eddac020ed41f656c3b76b772d01f1  libgo/go/syscall/syscall_freebsd_test.go
! cfc572e64bcc8691afa48ba2e4ae15b6  libgo/go/syscall/syscall_funcs.go
! d2d141db7a9d52927adc4a783fd1fb97  libgo/go/syscall/syscall_funcs_stubs.go
! f5d79416aee343137923856cdd7d2ded  libgo/go/syscall/syscall_glibc.go
! 558a0331e1c105b71208797e9d5166e1  libgo/go/syscall/syscall_js.go
! 714caa0736025bb89a456a46aecadc5f  libgo/go/syscall/syscall_linux.go
  a8a2bd6885ed8879cb91a5bd8e487f16  libgo/go/syscall/syscall_linux_386.go
  76aaef7313d5941f3fbacda3ce01b730  libgo/go/syscall/syscall_linux_alpha.go
  3e9b2f55c7ff79a34dc0b67bca3de753  libgo/go/syscall/syscall_linux_amd64.go
--- 107958,107987 ----
  7c74f125a645c3bf5001b5920097d7f4  libgo/go/syscall/sockcmsg_unix_other.go
  8aa7392688e2db73ec8591d973d43431  libgo/go/syscall/socket.go
  c43e9f9fd83b7f82926c7fdab24fc53d  libgo/go/syscall/socket_aix.go
! d46dd3af14169743c29228ef18c25a22  libgo/go/syscall/socket_bsd.go
! 52e504bdf85879c29fa203236bfb2981  libgo/go/syscall/socket_hurd.go
! 493024d68bad3038421c788d8ba10fb3  libgo/go/syscall/socket_irix.go
  ed112d1c897af9d6ce0d5556eeeec5ca  libgo/go/syscall/socket_linux.go
! b75da46f54924d1c8c72ec389103da56  libgo/go/syscall/socket_linux_ppc64x_type.go
! 289365183e8734b60feda9714427d2aa  libgo/go/syscall/socket_linux_type.go
! e2663fe7606ce74f4c52a0432e1cc57d  libgo/go/syscall/socket_posix.go
  57ed75694a025e8553fe2ba1de10d658  libgo/go/syscall/socket_solaris.go
! 632f6926fbe96bfe3f27f64ca7ac68b7  libgo/go/syscall/socket_xnet.go
! 2c0d03ac0f7f3141d428666bab6c5295  libgo/go/syscall/syscall.go
  6f2b2e0979d3ed4fc77da45b0f4d3dd0  libgo/go/syscall/syscall_aix.go
  5c1be62bcdb0a752dce2f1dc35c1349e  libgo/go/syscall/syscall_aix_ppc.go
  0e142cfb436483c276aea628de798a86  libgo/go/syscall/syscall_aix_ppc64.go
  334a9b1171ada442a2f637071b4c5e48  libgo/go/syscall/syscall_darwin.go
  014c86a47872f817d09a4e7a69092051  libgo/go/syscall/syscall_dragonfly.go
! 8531fdbb834a4a5bd494dabeca77bfe9  libgo/go/syscall/syscall_errno.go
  21c7b2d93dc14b6c353aa068a648ee4d  libgo/go/syscall/syscall_freebsd.go
  9272cf24534b777af3e85023778fcda9  libgo/go/syscall/syscall_freebsd_arm64.go
  b6eddac020ed41f656c3b76b772d01f1  libgo/go/syscall/syscall_freebsd_test.go
! c25bc1aaa92b4df7004224c61b788425  libgo/go/syscall/syscall_funcs.go
! df40b9d47c052f91f1588367cbf76968  libgo/go/syscall/syscall_funcs_stubs.go
! c5702582446869e621267d7447ae1ae3  libgo/go/syscall/syscall_glibc.go
! 43ed8fc077ec673bd235d2ab2c6054e0  libgo/go/syscall/syscall_js.go
! ac2e05c533b501753bd20e1de8901368  libgo/go/syscall/syscall_linux.go
  a8a2bd6885ed8879cb91a5bd8e487f16  libgo/go/syscall/syscall_linux_386.go
  76aaef7313d5941f3fbacda3ce01b730  libgo/go/syscall/syscall_linux_alpha.go
  3e9b2f55c7ff79a34dc0b67bca3de753  libgo/go/syscall/syscall_linux_amd64.go
*************** b34a692bd542de151dc73de26d16dd2e  libgo/
*** 100101,100107 ****
  59c854f27a495007f0fce591f2e9c5b3  libgo/gotool-packages.txt
  dc4d027ba4f9a8a47e74c9f718158a50  libgo/libgo-packages.txt
  b6c9aececc30fd32355c0415e1b547a5  libgo/libgo.imp
! 9393aa3833b118c9738c2829595bd59d  libgo/match.sh
  18182d0d932fda00e3e604b66ac4f96b  libgo/merge.sh
  ae7ca3094c2cc3888e7669918d9da48f  libgo/misc/cgo/errors/argposition_test.go
  2e379c3e4dd4a1a554f1ceb0a37bf125  libgo/misc/cgo/errors/badsym_test.go
--- 108125,108131 ----
  59c854f27a495007f0fce591f2e9c5b3  libgo/gotool-packages.txt
  dc4d027ba4f9a8a47e74c9f718158a50  libgo/libgo-packages.txt
  b6c9aececc30fd32355c0415e1b547a5  libgo/libgo.imp
! 5024ea341de0863c6d322ffaa8a9cc12  libgo/match.sh
  18182d0d932fda00e3e604b66ac4f96b  libgo/merge.sh
  ae7ca3094c2cc3888e7669918d9da48f  libgo/misc/cgo/errors/argposition_test.go
  2e379c3e4dd4a1a554f1ceb0a37bf125  libgo/misc/cgo/errors/badsym_test.go
*************** cf2ea695111955efb5ada96e3b469cf2  libgo/
*** 100461,100467 ****
  e8278f98a23aec9dfeb657bdfeeca029  libgo/mkrsysinfo.sh
  60a301871ca83fcda4708049294532d9  libgo/mkruntimeinc.sh
  54782b787517c5f40756ea576e6c2e3c  libgo/mksigtab.sh
! 6a1ca54f4f84b00f4d0308ff0a794d5f  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  828897ee2e9950dc2b36e98b3f4e1f77  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
--- 108485,108491 ----
  e8278f98a23aec9dfeb657bdfeeca029  libgo/mkrsysinfo.sh
  60a301871ca83fcda4708049294532d9  libgo/mkruntimeinc.sh
  54782b787517c5f40756ea576e6c2e3c  libgo/mksigtab.sh
! 894c65071056c36c8571941e6e0cd933  libgo/mksysinfo.sh
  9c66bb618ec9c46d7e7dcadd04faf52b  libgo/mvifdiff.sh
  828897ee2e9950dc2b36e98b3f4e1f77  libgo/runtime/aeshash.c
  06b0ddfbd036dbdfdf8c4c7efb8b746f  libgo/runtime/arch.h
*************** eceb042d837eb004e7367ac9a847a1b2  libgo/
*** 100471,100477 ****
  6fb6a5d0012113bed4ea45325d64a0ae  libgo/runtime/go-assert.c
  15f566278d64ff0b58823d3875194e29  libgo/runtime/go-assert.h
  3c653ff2663b804d086528eee3f7ae13  libgo/runtime/go-caller.c
! 726db52000a4399d47f0bf33d370e279  libgo/runtime/go-callers.c
  e4747f7482c2a2899139d6ee06867726  libgo/runtime/go-cgo.c
  9215f79b59788b463d9c5c3277110718  libgo/runtime/go-construct-map.c
  a3b5410fcc5b1287020bc1ed559acfb0  libgo/runtime/go-context.S
--- 108495,108501 ----
  6fb6a5d0012113bed4ea45325d64a0ae  libgo/runtime/go-assert.c
  15f566278d64ff0b58823d3875194e29  libgo/runtime/go-assert.h
  3c653ff2663b804d086528eee3f7ae13  libgo/runtime/go-caller.c
! 4c5ea2de0d314c5ef91be00b32bcdb62  libgo/runtime/go-callers.c
  e4747f7482c2a2899139d6ee06867726  libgo/runtime/go-cgo.c
  9215f79b59788b463d9c5c3277110718  libgo/runtime/go-construct-map.c
  a3b5410fcc5b1287020bc1ed559acfb0  libgo/runtime/go-context.S
*************** b532f1e01813112ca6cc108a5b8ffdf2  libgo/
*** 100488,100494 ****
  e232a63e4af4c71972324051f3fd1c86  libgo/runtime/go-now.c
  d9925cb56c2ba2bc269933fc5c2ca259  libgo/runtime/go-reflect-call.c
  b2f07b4235f5d3afea32439a6620995b  libgo/runtime/go-setenv.c
! def4931ff005a2b8b5475b335db1a558  libgo/runtime/go-signal.c
  6ade856ecb3d86b341bf182f31679cfe  libgo/runtime/go-string.h
  2b81afafd311c1c2b992982984c5e326  libgo/runtime/go-unsafe-pointer.c
  5d48d5cccc2ed2f80b567efbb0b71971  libgo/runtime/go-unsetenv.c
--- 108512,108519 ----
  e232a63e4af4c71972324051f3fd1c86  libgo/runtime/go-now.c
  d9925cb56c2ba2bc269933fc5c2ca259  libgo/runtime/go-reflect-call.c
  b2f07b4235f5d3afea32439a6620995b  libgo/runtime/go-setenv.c
! a418f2906ff832c7837140b6bf91492b  libgo/runtime/go-signal.c
! 703164d8cf7bb26aaee3bce1ac6382ac  libgo/runtime/go-strerror.c
  6ade856ecb3d86b341bf182f31679cfe  libgo/runtime/go-string.h
  2b81afafd311c1c2b992982984c5e326  libgo/runtime/go-unsafe-pointer.c
  5d48d5cccc2ed2f80b567efbb0b71971  libgo/runtime/go-unsetenv.c
*************** da8feb87689c14c2ade32638da912eac  libgo/
*** 100502,100701 ****
  5b900bdaaf4bbdf1139d11f6f0220757  libgo/runtime/runtime_c.c
  b0bef0d844dadebbe84ad9cf32c002bf  libgo/runtime/stack.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! bbdd09eff35db84aaca212e617f7a7a5  libgo/sysinfo.c
  64195708a46fb2d5225149f15a8e3991  libgo/testsuite/Makefile.am
  a88e7b262182c586e88c9684af1ccc29  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
! 52be5053fe7834d6025739fc840010d8  libgo/testsuite/gotest
  e3e86019491a40bd4f45424d7ce11037  libgo/testsuite/lib/libgo.exp
  c5574d106d35be5d94e80301b0855ada  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! 9d15a83749946031778d6adb6d1131fd  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
! 4c820cf0c4f1fd83f68890608487f44e  libgomp/Makefile.am
! 847da02774062ac70dfb906343587d08  libgomp/Makefile.in
! 4ba8f039959a7b81003ebc6326e8448f  libgomp/acc_prof.h
  d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
! 1d74fdf37d8ed0709a24eb6ab2cd4f8c  libgomp/affinity-fmt.c
! 7f4c6f72fa48dc139295b26e56af43da  libgomp/affinity.c
! 4721e5595feacb881c1c059afa919644  libgomp/alloc.c
! c67149458bf77cbdc54b363abe4d5fb0  libgomp/allocator.c
! 5e2212533b6989e85bcdf28060a63bf5  libgomp/atomic.c
! f0ad944f326f53f455ee4053c2ed45e6  libgomp/barrier.c
! 55ef83d31359a5fa6ce033804a69ee6a  libgomp/config.h.in
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/libgomp-plugin.c
! 305b1e877e9d4ab37a3bc29b30c8823c  libgomp/config/accel/lock.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/mutex.c
! b5cee017ed1ad849ba8b71c0d98761ed  libgomp/config/accel/mutex.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-async.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-cuda.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-host.c
! 02ff4c53df8ffe815f7adfe7be7ebb95  libgomp/config/accel/oacc-init.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-mem.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-plugin.c
  7973e447504d3a02e64bae101b909b1a  libgomp/config/accel/omp-lock.h
! 8192c22a8588a19e7c74750b7c3c667d  libgomp/config/accel/openacc.f90
! 15091d926ad2aeab9e1639b293e82e91  libgomp/config/accel/pool.h
! 6acbabaf8ce56985a492cbe2290ecc96  libgomp/config/accel/proc.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/ptrlock.c
! cfe54da42394475bdf7b664e4ae8df4a  libgomp/config/accel/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/sem.c
! 028235262ef0125a5d8172e342659e34  libgomp/config/accel/sem.h
! 3a5cba896b072e24e79c7eedfe1dc0c6  libgomp/config/accel/thread-stacksize.h
! 61566bc1af3ecb9e909cebdbda0d273a  libgomp/config/bsd/proc.c
! 26bb34ded740828c355d57aa359fc9c6  libgomp/config/darwin/plugin-suffix.h
! 066697225d1208cd7f9ea49564cfdf23  libgomp/config/darwin/thread-stacksize.h
! efceb66a6ca5a1a388c8f38d90e820a3  libgomp/config/gcn/affinity-fmt.c
! 8ff0c760b79af9d67145d367921515ab  libgomp/config/gcn/bar.c
! c35d5d93d17b6ff4185e398ab915b485  libgomp/config/gcn/bar.h
! 98deaf2ec1451f2aa46865cc35a4d79c  libgomp/config/gcn/doacross.h
! bb9ad3151c8f76d0005ec57bac3f4fdb  libgomp/config/gcn/icv-device.c
! 04014261890ad07218f5f5e1ed851155  libgomp/config/gcn/oacc-target.c
! 80e751ab3367c54fdc183693bc1d24e5  libgomp/config/gcn/simple-bar.h
! 247a89760a505c002ae15ece935d7646  libgomp/config/gcn/target.c
! c2400c48daf103c75e5e3fa4657f7985  libgomp/config/gcn/task.c
! 7b8b5972a035561d77d44a628be6dd96  libgomp/config/gcn/team.c
! f0c234b7f8b6e02d5715ee96f2d9183c  libgomp/config/gcn/teams.c
! 5c41d811d91579862cad89b97e979963  libgomp/config/gcn/time.c
! 0475090d191426d305ee0177d6d290cb  libgomp/config/hpux/plugin-suffix.h
! ffb77e95900df0e07660188d230974b3  libgomp/config/linux/affinity.c
! 55cc081b51a3b53bc797d4c7b772d7a0  libgomp/config/linux/alpha/futex.h
! da3535904f1f119cd4a537f818fc9042  libgomp/config/linux/bar.c
! 560e1782553002da3de623cda0a55e28  libgomp/config/linux/bar.h
! 2ef4bf060eebf71aca878e2e8cbe5505  libgomp/config/linux/doacross.h
! 00ad7bdf1a88c83d794811c052e7e482  libgomp/config/linux/futex.h
! 0ec9affac1c10ae580f67d399a3ae622  libgomp/config/linux/ia64/futex.h
! f429bdcce8355261ebb233f15b3e4d9f  libgomp/config/linux/lock.c
! 11ed3ad24743a30b39b79d457eb95dea  libgomp/config/linux/mips/futex.h
! 07e803a3ddd761a02e5a370071c8ea5e  libgomp/config/linux/mutex.c
! 7da48b66f14b1f69b47b25c10c09d2d2  libgomp/config/linux/mutex.h
  7973e447504d3a02e64bae101b909b1a  libgomp/config/linux/omp-lock.h
! 0e14482cae964c6a10132a09a8456228  libgomp/config/linux/powerpc/futex.h
! 84cddb5832284b1d5f0131a3ec8cf069  libgomp/config/linux/proc.c
! 9fe2bf78c1ce2943bd5453d0d80c967e  libgomp/config/linux/proc.h
! 73874e89feae443ab30e4b46775242c1  libgomp/config/linux/ptrlock.c
! 1480d012d2cfe7c58cb2df8100f14abf  libgomp/config/linux/ptrlock.h
! 3346583e16c81764e8440f0d7cd143f5  libgomp/config/linux/s390/futex.h
! b0c35369c274b56e0de49d46f6de50b2  libgomp/config/linux/sem.c
! b86534ea32e47d30acc41532c8a7381f  libgomp/config/linux/sem.h
! ed7ce2cf1cd8afbc71cfaa38c6911a2b  libgomp/config/linux/sparc/futex.h
! 58368f3df7e78dcff62a20912fe74ed4  libgomp/config/linux/tile/futex.h
! c53929530c2418fde2ea55d8b4993922  libgomp/config/linux/wait.h
! 7f55c18168174eac934e0d5d3d81e86d  libgomp/config/linux/x86/futex.h
! a506f04b3a588e451675135fc5ff863c  libgomp/config/mingw32/affinity-fmt.c
! 94366526333c4409647d561ca36f623d  libgomp/config/mingw32/proc.c
! b66586f2b086357279b5c3486ea2913b  libgomp/config/mingw32/time.c
! a3f5cd9b7862d62a3d22513395fec620  libgomp/config/nvptx/affinity-fmt.c
  6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
! c3a1e264a4c05383328f383eb0ed0b4b  libgomp/config/nvptx/bar.c
! 4005bf32cf67e63f3d3d9c3510ced9a2  libgomp/config/nvptx/bar.h
! f6c027a61026d99fdeecea242476f94c  libgomp/config/nvptx/doacross.h
! 21e60aba9b4e4bae327616256e21898e  libgomp/config/nvptx/error.c
! 8bc1329e3caa06daddccd99fb3ea9ba8  libgomp/config/nvptx/icv-device.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-parallel.c
! da6a0aaa2fd89eb48fc1c3360e24a0c3  libgomp/config/nvptx/simple-bar.h
! 9539f9ee3e82cdd3b73c1adffcffd6a6  libgomp/config/nvptx/target.c
! f1e3a4209781d5cf893b4d3a36a14991  libgomp/config/nvptx/task.c
! f340b0703c5b8d4e494d741d6f62c85d  libgomp/config/nvptx/team.c
! 55e5522fc782ac1c7b258c630bd67df8  libgomp/config/nvptx/teams.c
! 0ab5690dea9b024b60cc2ffbdddbda22  libgomp/config/nvptx/time.c
! bde0142646ef0ec7fbfa8c45dede3cd6  libgomp/config/posix/bar.c
! e873572edfcb0753ede9cc651bc06fe5  libgomp/config/posix/bar.h
! fa056523f4757e26eddf68f96dda402d  libgomp/config/posix/doacross.h
! 6de4023956fee61c78681912895c784a  libgomp/config/posix/lock.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/mutex.c
! b953ecf8e6a78ace16e4a4f4590aba3c  libgomp/config/posix/mutex.h
  e84e55894856b53abe34b30f6148b070  libgomp/config/posix/omp-lock.h
! 1557a6c219673308566970890e1307f4  libgomp/config/posix/plugin-suffix.h
! 0b896a4c556949d032477ed8bf56e8ca  libgomp/config/posix/pool.h
! 8f4f93af0ef35b89930f7a5b8d632007  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
! da83b762f0baba688459dd365ea394e6  libgomp/config/posix/ptrlock.h
! 6bda8b0a65ff4e544e2a35acfd0ed039  libgomp/config/posix/sem.c
! 2b3fd99ccfd6ec90002237cc79a52ef6  libgomp/config/posix/sem.h
! b7b96675b73c70d74e50df5fb6d88a83  libgomp/config/posix/simple-bar.h
! b8e14b6ff61b407bcd71b039f6075a7f  libgomp/config/posix/thread-stacksize.h
! e327453b67dede5b7a04faf5516ba01a  libgomp/config/posix/time.c
! b669e10d8604cff82046689762af022e  libgomp/config/rtems/affinity-fmt.c
! b7768538323ef2846d1ee822c4557c9e  libgomp/config/rtems/bar.c
! b62c2e44568385f6169df86f72d96535  libgomp/config/rtems/bar.h
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/mutex.c
! b164e6b3b504abe76c66769445fb8f59  libgomp/config/rtems/mutex.h
! 616c5a679bb1feff0a3c2ecaad28d683  libgomp/config/rtems/pool.h
! 4b5249411a9992f52d98e14be799788a  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
! 3803e246a7effac5f68defbc6467d18c  libgomp/config/rtems/sem.h
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! 173c78953071fc925160b16c41dd7912  libgomp/configure
  c148ac8aacb9f40379a65826a6941790  libgomp/configure.ac
  df326a12f33954a095cf171bc51c7067  libgomp/configure.tgt
! 961b136816f6a14d942d57a87dc80550  libgomp/critical.c
! a2846404f7e3b4d082df7d3bcf507ce8  libgomp/env.c
! a7bdb20af01f8fee6af4277cb0b69ed5  libgomp/error.c
! b4b3ff9a2527e499cebeb7b48c150ff6  libgomp/fortran.c
! 707d9d8bd1d758d003ccc65dd723f07d  libgomp/hashtab.h
! 38618483c21d26945b3abee84407b743  libgomp/icv-device.c
! 462d628d485745556ed5ef9d4ded68e2  libgomp/icv.c
! 9e2f358eb25070d50ce05f500e489583  libgomp/iter.c
! 3c6bb4f3cc4a2c7ba31b20461a395972  libgomp/iter_ull.c
! 8f1e6e4f0cf98dcffb1c147b18838798  libgomp/libgomp-plugin.c
! 335a7094586075334b6a9d0faa6ebe7d  libgomp/libgomp-plugin.h
! dcc9017cedae0d22507f9f4ce4f87621  libgomp/libgomp.h
! 2361532cff1cc143292e0871755e194f  libgomp/libgomp.info
! c767351b8d4fa4dfa3fbdb2b50c8ab3e  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 7bf864f0f019682ce6f3fa6ec4ab8550  libgomp/libgomp.texi
! 71e3b6cdcc4c79987e6ba8b7f946c99b  libgomp/libgomp_f.h.in
! 6a7706098d36920cb8ddba2cbd5f7593  libgomp/libgomp_g.h
! e6ef8c06acd3729a00656fd7f60fc8dd  libgomp/lock.c
! 498e428ed2d3f55d7e453384a27920b7  libgomp/loop.c
! 825a1e0c2481ef7e7f7615c8110f7617  libgomp/loop_ull.c
! e022a22a82b213700145bc066cb4b4f3  libgomp/oacc-async.c
! 84ed3b7f35793eefba6108be7b535e8a  libgomp/oacc-cuda.c
! 8ad22e5cecedbefc092fbbdba083b2fb  libgomp/oacc-host.c
! a032db1c061d47ebd6eb5036272b8f24  libgomp/oacc-init.c
! 269be54d64f061ccb9475597aca4bc94  libgomp/oacc-int.h
! dd4e61dca435161356b98aed48bd839d  libgomp/oacc-mem.c
! 2bc68c0b12aea4aa3d92bd265112420e  libgomp/oacc-parallel.c
! 77c456e4d318d5ab0c7a88151c99e2a9  libgomp/oacc-plugin.c
! b171cf87517ff27201369f7057c5b982  libgomp/oacc-plugin.h
! 71cea76c74deb5c90c7cf31a3f6bb668  libgomp/oacc-profiling.c
  6a2627e5d8a4e542cab7eddc96b53f37  libgomp/oacc-target.c
! 8e36c1f06584a8dc812474acd143bf7a  libgomp/omp.h.in
! 4f7af57bfc6daa9e17387b7a4b369119  libgomp/omp_lib.f90.in
! d0c05ef8cce07f52561cec2e9225f7a4  libgomp/omp_lib.h.in
! e0cb6a17790629f29f3c57a580a4114a  libgomp/openacc.f90
! 876caf5a166553d4ec3bbbf3fd1a754d  libgomp/openacc.h
! d4a8ec1af001375aafe7bfde975cab8f  libgomp/openacc_lib.h
! 40d07f087125faf8ae89afbffd230b03  libgomp/ordered.c
! 233aa37be9fef9647bf83b06a3f564cd  libgomp/parallel.c
! 6887a1d92e7fcecc3a468f138f7a8b56  libgomp/plugin/Makefrag.am
! 5aca13c8d717b3c03cce30586f583558  libgomp/plugin/configfrag.ac
! 7a3944d0ff7bc0b4cdbcaebc1228469b  libgomp/plugin/cuda-lib.def
! 35df8712a7f8cd2b5c6664f3a05b95c6  libgomp/plugin/plugin-gcn.c
! a74a5b617efd4f6e20f42992ebd898ea  libgomp/plugin/plugin-nvptx.c
! 34635a1638eba4f8b018600901257772  libgomp/priority_queue.c
! 58dc808c135c763ab8665bad880aa7a8  libgomp/priority_queue.h
! fc9cba87f56310fc46309faa5b4859ec  libgomp/scope.c
! 32b0d6b28a090467b2d009e8deb2ef79  libgomp/sections.c
! a8331c6aed90bc0e9160490a64dce03c  libgomp/secure_getenv.h
! f8dad6a2b2c22a35d0e0a04725a1a5cd  libgomp/single.c
! 0a3076c6a5743883d28bfbd711c7c33a  libgomp/splay-tree.c
! 8801980c8775527a11f77301862b0d2f  libgomp/splay-tree.h
! ad0208fd92cea053d709197a88006b6d  libgomp/target.c
! 98929b0aa6ee470d1d94f95d20fe52de  libgomp/task.c
! 5954576d4231b1ee2a73dbf601bf742e  libgomp/taskloop.c
! da4ddcafdbe90d447ac7ace610407732  libgomp/team.c
! efac562db57f45ea4ec34a672a09bc00  libgomp/teams.c
  e07f04fffd2f6276df2fbeca36cc3d91  libgomp/testsuite/Makefile.am
! 648be0a5f804ab0023a14d22cca4a3de  libgomp/testsuite/Makefile.in
! 01d3ae9b53e2b97f3dce55fcaed1a924  libgomp/testsuite/config/default.exp
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 4a9a22558b7ef794bed1f80d040e511f  libgomp/testsuite/lib/libgomp.exp
  97fdc33cc25788d4b9dc1db6aefed760  libgomp/testsuite/libgomp-site-extra.exp.in
! ed323f968c0e2d197ee36bf3b1f678e3  libgomp/testsuite/libgomp-test-support.exp.in
  75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
  196ffcd43fb2edf60795e6aabf50d259  libgomp/testsuite/libgomp.c++/allocate-1.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
--- 108527,108729 ----
  5b900bdaaf4bbdf1139d11f6f0220757  libgo/runtime/runtime_c.c
  b0bef0d844dadebbe84ad9cf32c002bf  libgo/runtime/stack.c
  f1f0917f45d626d15a5f129fef3d81e2  libgo/runtime/yield.c
! 00019600f80b0ce3d73e8655fc80d153  libgo/sysinfo.c
  64195708a46fb2d5225149f15a8e3991  libgo/testsuite/Makefile.am
  a88e7b262182c586e88c9684af1ccc29  libgo/testsuite/Makefile.in
  180c96a619276205ec9fc8e8217b67bd  libgo/testsuite/config/default.exp
! 37d26abac5eb54b1b75087b5fa138af2  libgo/testsuite/gotest
  e3e86019491a40bd4f45424d7ce11037  libgo/testsuite/lib/libgo.exp
  c5574d106d35be5d94e80301b0855ada  libgo/testsuite/libgo-test-support.exp.in
  bf162aa572f7b96b25dbd2b027845d32  libgo/testsuite/libgo.testmain/testmain.exp
  cc9d2a0e34e31ba866a8caf9f46f48f3  libgomp/.gitattributes
! a8e9f0d51272b347cdb80e03b009606a  libgomp/ChangeLog
  0d55aa862aee66efdc5f8d62c94ff8fb  libgomp/ChangeLog.graphite
! 8126886ecbd94666cc701e26bf9d7ec7  libgomp/Makefile.am
! c9438fe5f1faf22318b3f6be26ec3cfc  libgomp/Makefile.in
! ddb4b1d0aa58f609604577990350df9e  libgomp/acc_prof.h
  d45f3b20f1be5d95a6c06fb81bedafe9  libgomp/acinclude.m4
  30a64ccfecfa60e8b5098e9fe26ea707  libgomp/aclocal.m4
! 8b170dafe28e7fbad76d127519542347  libgomp/affinity-fmt.c
! 40719a43f32cd0bb4ae9c9e9199cf349  libgomp/affinity.c
! ebbb23a1a465e1ef266d0563f61aa38a  libgomp/alloc.c
! 4e024af5cd8d0f98a80d35fc66016317  libgomp/allocator.c
! d7155c29a491a04b6ba4ad15079d6fe9  libgomp/atomic.c
! b25dd6a8735393b575ed9cc2860d5d81  libgomp/barrier.c
! 037ba614230cf1e1886c5ef589cae6d0  libgomp/config.h.in
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/libgomp-plugin.c
! 791c603be4f75f0547fdc452e21b2dc3  libgomp/config/accel/lock.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/mutex.c
! 5292eac345824a07feb13a0796842632  libgomp/config/accel/mutex.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-async.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-cuda.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-host.c
! 9755382c2458b46747031aaafd4cd4b5  libgomp/config/accel/oacc-init.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-mem.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/oacc-plugin.c
  7973e447504d3a02e64bae101b909b1a  libgomp/config/accel/omp-lock.h
! 968ca739f18483dbadafdc57138cdf73  libgomp/config/accel/openacc.f90
! a976cc141d94a9096b251093c80a81f6  libgomp/config/accel/pool.h
! f42d213cbda5f41c32ad200c7d7edc56  libgomp/config/accel/proc.c
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/ptrlock.c
! ae558351eb3d9a9f92442400d7b83357  libgomp/config/accel/ptrlock.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/accel/sem.c
! 62ae35b60249d22ea6e325698992e356  libgomp/config/accel/sem.h
! b6f9d5b078ecb968eaa6061f5a675fca  libgomp/config/accel/thread-stacksize.h
! 5b6004c4741cbfb86de4c588d66d4845  libgomp/config/bsd/proc.c
! 9372a98ae8838ae307c90e756f1bfe9e  libgomp/config/darwin/plugin-suffix.h
! dcf1a47b664b29d02f5eff80b62790e4  libgomp/config/darwin/thread-stacksize.h
! 902cd9a7cad2b4393bc44a13e05d5d5e  libgomp/config/gcn/affinity-fmt.c
! 4efa1c8c9764b8c72acd99534f6dcbc2  libgomp/config/gcn/bar.c
! f96a938adb7c7743f6600b2a5736ff2d  libgomp/config/gcn/bar.h
! dc1254987c15425c83831110032ffeff  libgomp/config/gcn/doacross.h
! 3cd466202bab09bce4b95d955778a628  libgomp/config/gcn/icv-device.c
! 13c8e95bcb413c5e27ebc0534f37d2b4  libgomp/config/gcn/libgomp-gcn.h
! 52f84015f16a7480ffaaa5931a3ec31f  libgomp/config/gcn/oacc-target.c
! d9a1ce7301cebaf243cd3f4f6a0e06b9  libgomp/config/gcn/simple-bar.h
! 5c6f44d37e0bcb2866005d7f0b77fd4e  libgomp/config/gcn/target.c
! 62b43cc3f8a0e9080ea84295317b4a0c  libgomp/config/gcn/task.c
! 1bab4df539536a0872498347115beb3f  libgomp/config/gcn/team.c
! 5c73c812d6f00ccd9b46b3fe0292ef55  libgomp/config/gcn/teams.c
! 17e6e9358dc453caf6f6f852439e5350  libgomp/config/gcn/time.c
! ba13914fa2063cd08ea181dcf084edf6  libgomp/config/hpux/plugin-suffix.h
! ebf274432a574b7c69882906e7c99369  libgomp/config/linux/affinity.c
! 50fcaf9e74a709bc4df11a5e2658a961  libgomp/config/linux/allocator.c
! 5f58c463497cfded8a780e18a318c427  libgomp/config/linux/alpha/futex.h
! ff4916dff24e4c246f00b3a55c4fcaf9  libgomp/config/linux/bar.c
! f82d019285d9d4a0ec7c7c46eb49df11  libgomp/config/linux/bar.h
! 8d60e5305e053ff6226381d16cee6ee5  libgomp/config/linux/doacross.h
! 192a95e6d93ece5eae0be12d49847b4f  libgomp/config/linux/futex.h
! b0565f6fc444e220bae216760c0ef33e  libgomp/config/linux/ia64/futex.h
! 6f2e83aef6e2b6f83eb64b21f5f7ee76  libgomp/config/linux/lock.c
! f861d359b4fde72f0d595de47ea4e032  libgomp/config/linux/mips/futex.h
! c8c9995c43642e60fb1f3009096b3da0  libgomp/config/linux/mutex.c
! e87555fe1c998a615bba2d0b7f65120c  libgomp/config/linux/mutex.h
  7973e447504d3a02e64bae101b909b1a  libgomp/config/linux/omp-lock.h
! 5d576818775892746318f5ac1975d231  libgomp/config/linux/powerpc/futex.h
! 9686aedeb326791f8ba7d6a0a537a7db  libgomp/config/linux/proc.c
! 75617b28ce9065313fd1e477dd0e6067  libgomp/config/linux/proc.h
! ca46809704e42eb4b534fa29cef43ffb  libgomp/config/linux/ptrlock.c
! 45986a7a76038516e82cc87b975039a8  libgomp/config/linux/ptrlock.h
! d4fdec503da2ab5f34812f4eb928e59c  libgomp/config/linux/s390/futex.h
! 944e6826b44f14d60d84899bd6882da5  libgomp/config/linux/sem.c
! 469cbd7c52942e1cc3afe465ec05a2e1  libgomp/config/linux/sem.h
! fc57c346147ea2ea27020b3e783c0502  libgomp/config/linux/sparc/futex.h
! 1637ca53f5326b69ae5529886a9e71b1  libgomp/config/linux/tile/futex.h
! 8a4911ceb1f4d0f3bf53170405d887f8  libgomp/config/linux/wait.h
! 1f2d72033f36792bc7f3fd461c0bb7e5  libgomp/config/linux/x86/futex.h
! 0d660051d406ce976c161525b743a52b  libgomp/config/mingw32/affinity-fmt.c
! fbe002e86e4723d8f28c7b768b53d444  libgomp/config/mingw32/proc.c
! cafdfefbf9d37ce4d0be023858aaf601  libgomp/config/mingw32/time.c
! e4a35590eba04c519eb95639682fc338  libgomp/config/nvptx/affinity-fmt.c
  6bb7711f9ae2bc93662a9c5ece06f7ee  libgomp/config/nvptx/atomic.c
! f14e8f8192a1760b4f14437024746b37  libgomp/config/nvptx/bar.c
! 6f3c904d557d9071c8173e6afe877c7b  libgomp/config/nvptx/bar.h
! 729b26bd8882cf2d1790d982901e6012  libgomp/config/nvptx/doacross.h
! e673017f6807d98c800527e79b183e81  libgomp/config/nvptx/error.c
! 00d224defdae1179dc9f47602f1ac6a9  libgomp/config/nvptx/icv-device.c
! de9567fefd33db807471d1d8e444fcd1  libgomp/config/nvptx/libgomp-nvptx.h
  d41d8cd98f00b204e9800998ecf8427e  libgomp/config/nvptx/oacc-parallel.c
! a49929d8d97214d62082d90bf165df0d  libgomp/config/nvptx/simple-bar.h
! d6a6c40851714f26e7ddcc015f8f2012  libgomp/config/nvptx/target.c
! 4b12b7767e2c6f1e3ae442777b427bef  libgomp/config/nvptx/task.c
! 578781f67e9c811c9d372c006d9e8ded  libgomp/config/nvptx/team.c
! aeb120f045cc7f75b324f74dd4973bff  libgomp/config/nvptx/teams.c
! 8877ccadeffb542a5e3dd646783afa99  libgomp/config/nvptx/time.c
! 4ee9fb34ffc03779d50b97e8449dd328  libgomp/config/posix/bar.c
! 0a6f05b62ebbc3918c8ef676eac5d49b  libgomp/config/posix/bar.h
! 054f47ea56cd6d3341cdf0fd4c034388  libgomp/config/posix/doacross.h
! 113f44315ae6bf1ce63cb68e372c3403  libgomp/config/posix/lock.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/mutex.c
! 9ded34f9067f3ec28361ba29f31b919d  libgomp/config/posix/mutex.h
  e84e55894856b53abe34b30f6148b070  libgomp/config/posix/omp-lock.h
! 6c96b7a520333f64db850f5671b4e605  libgomp/config/posix/plugin-suffix.h
! d01d2c404ccc225834a725302731dd42  libgomp/config/posix/pool.h
! 8c4423195be82b1a6e27a8d785505281  libgomp/config/posix/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/posix/ptrlock.c
! bac3578fba244e2405c722501e481c9b  libgomp/config/posix/ptrlock.h
! 739997441376f18f394417c004ab2592  libgomp/config/posix/sem.c
! 951f5c3070d2264ad2827553f6055b0d  libgomp/config/posix/sem.h
! bf6b95e44e8ae3504afb615fcf190f47  libgomp/config/posix/simple-bar.h
! 1126ece8f43546bf841148510ddc8292  libgomp/config/posix/thread-stacksize.h
! 9dc33a307d1b7c722d9719ae8e9563f9  libgomp/config/posix/time.c
! b376a31f77e273e7491dfb81ca115023  libgomp/config/rtems/affinity-fmt.c
! 2900c7f7cfdeeb35f13ea4d5a877fa51  libgomp/config/rtems/bar.c
! 95a34a72b7c5c48d85bddc0ac4ef7c80  libgomp/config/rtems/bar.h
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/mutex.c
! d022c23735e7b7e4e746f2eb485a5065  libgomp/config/rtems/mutex.h
! a12f17fee1529934e1337f4082a25826  libgomp/config/rtems/pool.h
! 659d33119a0c464263dce193a6738444  libgomp/config/rtems/proc.c
  efc434763cbe71b67359f1858f6c9480  libgomp/config/rtems/sem.c
! dc0894d2543322b185ccacab808c54a2  libgomp/config/rtems/sem.h
  af41d1d04a4112345554ca8b8a072ed9  libgomp/config/t-aix
! feae18b7b987028f293b0e29c6f469e3  libgomp/configure
  c148ac8aacb9f40379a65826a6941790  libgomp/configure.ac
  df326a12f33954a095cf171bc51c7067  libgomp/configure.tgt
! d00073656a1133511cc3ebac2bfdd88f  libgomp/critical.c
! 4aa61eb42769de2a2a431240bbe7e4a5  libgomp/env.c
! f96307b472c52dd869d0f0a313d9b7a5  libgomp/error.c
! cd0e0c5429d3151ad5cc94cb76a9dd28  libgomp/fortran.c
! 6b3988d901dfbecfcadc0ac9ffb1cc27  libgomp/hashtab.h
! 37c02ed7ff525fc219847270628772a1  libgomp/icv-device.c
! 5f8196830285177febaa574de0b7cbaf  libgomp/icv.c
! 9ff4dffb2287b26930dbc463cd752628  libgomp/iter.c
! afec558551844f771b3aefe51131cecb  libgomp/iter_ull.c
! b57a27985ae45d7a6dd20996bd6552bd  libgomp/libgomp-plugin.c
! 68d34b49a2f832646487fdf463b7d497  libgomp/libgomp-plugin.h
! 597562f7bd3816b527464f3a2d586fd7  libgomp/libgomp.h
! 63737f7c291511d3a2938ffa7551bf07  libgomp/libgomp.info
! 816d5eb75954dad2681f7c36dd4b709c  libgomp/libgomp.map
  8b2aa50aecad82171348a6918309afd6  libgomp/libgomp.spec.in
! 478cf48537e336fddf9de759cb858270  libgomp/libgomp.texi
! 38a5c357bb93f00d2f6f98dfa5efdb47  libgomp/libgomp_f.h.in
! 963dcc0b6901a50371fb6d9b595647eb  libgomp/libgomp_g.h
! 064ef6a2e627b6ff7905d31049c7e916  libgomp/lock.c
! 5ff9f5efff73e654d7d95adefde30a93  libgomp/loop.c
! 005217443fe550500e460a2a0a661ebe  libgomp/loop_ull.c
! 8745c4daa40f49b9cee58b11a7624636  libgomp/oacc-async.c
! 4400125b98ec103acbde52ec1389fc15  libgomp/oacc-cuda.c
! 023dfb41b49484dfd46615118899b5a4  libgomp/oacc-host.c
! 861fb986d0712d542279e02b26d950c1  libgomp/oacc-init.c
! 829288a26405dac6c4178e00b0cf9424  libgomp/oacc-int.h
! 151f84e09eb3c68d43fe9a7cda6ae2b0  libgomp/oacc-mem.c
! 6d31376d2cad998dce12bca291c39a88  libgomp/oacc-parallel.c
! d16712f7b895fa5c34fe50c9e84a2cde  libgomp/oacc-plugin.c
! 674cd915cab868d62a48abfea4d3fafd  libgomp/oacc-plugin.h
! a75fcd7caa7c106093950fd61694462e  libgomp/oacc-profiling.c
  6a2627e5d8a4e542cab7eddc96b53f37  libgomp/oacc-target.c
! 0f5b58f4b73f0db676b858d6c0e498f1  libgomp/omp.h.in
! 403238791ef76d42e17b76c1dd0890f7  libgomp/omp_lib.f90.in
! 03ca3768ee3232e2ee50d75d03ff29e0  libgomp/omp_lib.h.in
! 384a6525d5f6243c1e912d6fd7e4c7db  libgomp/openacc.f90
! 3800fe22c6cce1fe357a6120e0b0e8ba  libgomp/openacc.h
! d0f74c49e16a7fb9f03ae11bc1e64cc3  libgomp/openacc_lib.h
! 14ea24b0df30803c238634c82622024e  libgomp/ordered.c
! 7da65cbdf3abecca7f3d1dd0c7101ae7  libgomp/parallel.c
! bb02fb2dfcdf0ca7cc43ec1b2ef011df  libgomp/plugin/Makefrag.am
! 5c1b500eff7a3a678622e16e25ebb655  libgomp/plugin/configfrag.ac
! d3fb956a603e0b3e8c080c258f3c535c  libgomp/plugin/cuda-lib.def
! 00ecac05a73741ca1d393f18e4ecf076  libgomp/plugin/plugin-gcn.c
! 1149d15cf0de1398889677db04f7b1a5  libgomp/plugin/plugin-nvptx.c
! 8988563da92b1dc761e074a66acc6b45  libgomp/priority_queue.c
! 8c0481cc0e84bb0b692c5386e60a59cc  libgomp/priority_queue.h
! ec437859c584b0b399558354e1320e83  libgomp/scope.c
! ce0e21d8401e80d8cac5b0a901005796  libgomp/sections.c
! 58407b340e3c6b7288fbf3396f4d2e18  libgomp/secure_getenv.h
! c4808c8cbdaada3cc6bab648069858f1  libgomp/single.c
! 762f9723be37ca8e9199ebfef1301258  libgomp/splay-tree.c
! 329ebdfc433423161e18ef9bf5e1cda6  libgomp/splay-tree.h
! d08632b90ab7b98b9780d19448055470  libgomp/target.c
! df81e768c6fc86cfbbaeb86ed86bf1ce  libgomp/task.c
! 9b0756f3a53d797b1dfb461860815985  libgomp/taskloop.c
! eb8489e29defd4c037de3bee31e479e0  libgomp/team.c
! e798463821df317ebc3e9dc7bbccb2d4  libgomp/teams.c
  e07f04fffd2f6276df2fbeca36cc3d91  libgomp/testsuite/Makefile.am
! 3fbf1ba2e2a739ff663e5147224d90ef  libgomp/testsuite/Makefile.in
! 3cd5a4a8529b74d1082da0af4e00bb99  libgomp/testsuite/config/default.exp
  6c859d1c520b245e51a29693632545d6  libgomp/testsuite/lib/libgomp-dg.exp
! 53c6d82252fa9083b85d58506ee03b0e  libgomp/testsuite/lib/libgomp.exp
  97fdc33cc25788d4b9dc1db6aefed760  libgomp/testsuite/libgomp-site-extra.exp.in
! 6d56ea402ff11fa0bd533c6d73e2ecde  libgomp/testsuite/libgomp-test-support.exp.in
  75cc672a1bf25974c5f4c5e3bc1a74b1  libgomp/testsuite/libgomp.c++/affinity-1.C
  196ffcd43fb2edf60795e6aabf50d259  libgomp/testsuite/libgomp.c++/allocate-1.C
  2c957d1d7acf181ac6aa27218cc24d76  libgomp/testsuite/libgomp.c++/atomic-1.C
*************** bddf1919febc77ab73283f66e954b61e  libgom
*** 100794,100799 ****
--- 108822,108829 ----
  3bbd0f0d348eb705be604978b2e32097  libgomp/testsuite/libgomp.c++/member-7.C
  1af322f02a0df2cf1f3c2c01d328da07  libgomp/testsuite/libgomp.c++/nested-1.C
  3f755c96f4b692988ea0d1ddeef1ca9b  libgomp/testsuite/libgomp.c++/parallel-1.C
+ 918bd233ad318b00f080ec4f186b4ee1  libgomp/testsuite/libgomp.c++/pr108180.C
+ 47f9fb4165180e335283fecf1a9cd061  libgomp/testsuite/libgomp.c++/pr108286.C
  c57d4e906a72b08e5f49bef40306b63f  libgomp/testsuite/libgomp.c++/pr24455-1.C
  e922df8c56b5c5885b9aa8d370725ea9  libgomp/testsuite/libgomp.c++/pr24455.C
  ebbf9a13ba035141ba01b3281fd27fea  libgomp/testsuite/libgomp.c++/pr26691.C
*************** e8abd1a92868914a2a5307268ef4b3d8  libgom
*** 100894,100899 ****
--- 108924,108932 ----
  c2ea975d3e14f144e2ade23a720b62bd  libgomp/testsuite/libgomp.c++/target-has-device-addr-4.C
  e259056e47b1dc505accadfe5b89d17a  libgomp/testsuite/libgomp.c++/target-has-device-addr-5.C
  e2dfff93f6318ffc237067f281108b05  libgomp/testsuite/libgomp.c++/target-has-device-addr-6.C
+ e6701a1305fd626c1f5d07b941421538  libgomp/testsuite/libgomp.c++/target-has-device-addr-7.C
+ 19df607ca0e83587c3295f274e8fc1bf  libgomp/testsuite/libgomp.c++/target-has-device-addr-8.C
+ 8d805913407543aaead455b01dc65b8d  libgomp/testsuite/libgomp.c++/target-has-device-addr-9.C
  97a638ec3a95eff4958b3eac3dfbfbaf  libgomp/testsuite/libgomp.c++/target-in-reduction-1.C
  0277e9ef051fe788c9b9cd37617bc8aa  libgomp/testsuite/libgomp.c++/target-in-reduction-2.C
  94715868a8f003ba6af5b900cca94745  libgomp/testsuite/libgomp.c++/target-lambda-1.C
*************** fd2369c7ae56d95d52913f986183913e  libgom
*** 100973,100981 ****
  13f9ffdf78c7c6460416acf1c9e28029  libgomp/testsuite/libgomp.c-c++-common/alloc-7.c
  958b22575f252e68c66b6c7a7f0da79a  libgomp/testsuite/libgomp.c-c++-common/alloc-8.c
  6a6bc24d15d026cca5b2ff5b6e30d6e2  libgomp/testsuite/libgomp.c-c++-common/alloc-9.c
! dd35f837ba3f36a2f937940516cd6df9  libgomp/testsuite/libgomp.c-c++-common/allocate-1.c
  c1c21337b0fec3c68ff32349fb0a4018  libgomp/testsuite/libgomp.c-c++-common/allocate-2.c
! aa6a105d9a9f8c8f7cd0e1025e2a0a53  libgomp/testsuite/libgomp.c-c++-common/allocate-3.c
  4dc4b112dfee5bd9786bd0c593398b1b  libgomp/testsuite/libgomp.c-c++-common/atomic-18.c
  0892e753aa240ae919dd5eca15841da2  libgomp/testsuite/libgomp.c-c++-common/atomic-19.c
  69c685c05133b4a16e0c8dac70b08f1c  libgomp/testsuite/libgomp.c-c++-common/atomic-20.c
--- 109006,109014 ----
  13f9ffdf78c7c6460416acf1c9e28029  libgomp/testsuite/libgomp.c-c++-common/alloc-7.c
  958b22575f252e68c66b6c7a7f0da79a  libgomp/testsuite/libgomp.c-c++-common/alloc-8.c
  6a6bc24d15d026cca5b2ff5b6e30d6e2  libgomp/testsuite/libgomp.c-c++-common/alloc-9.c
! 41e58903cfe25287db13d4e13157037d  libgomp/testsuite/libgomp.c-c++-common/allocate-1.c
  c1c21337b0fec3c68ff32349fb0a4018  libgomp/testsuite/libgomp.c-c++-common/allocate-2.c
! 345af687e5b4235bd0e1867f591217f5  libgomp/testsuite/libgomp.c-c++-common/allocate-3.c
  4dc4b112dfee5bd9786bd0c593398b1b  libgomp/testsuite/libgomp.c-c++-common/atomic-18.c
  0892e753aa240ae919dd5eca15841da2  libgomp/testsuite/libgomp.c-c++-common/atomic-19.c
  69c685c05133b4a16e0c8dac70b08f1c  libgomp/testsuite/libgomp.c-c++-common/atomic-20.c
*************** e84312e49f013526d73d8d431b003123  libgom
*** 100989,100994 ****
--- 109022,109031 ----
  a4ab197aeadddd54aec1345501b5ea69  libgomp/testsuite/libgomp.c-c++-common/critical-hint-2.c
  12e3ee01b70343537315551db476c391  libgomp/testsuite/libgomp.c-c++-common/declare_target-1.c
  59c8656b7740501a704831756762d395  libgomp/testsuite/libgomp.c-c++-common/default-1.c
+ a1a09ff547c6ff16fad80cd2261269ee  libgomp/testsuite/libgomp.c-c++-common/depend-1.c
+ 1cdb324b383818a853a928fc5fde4668  libgomp/testsuite/libgomp.c-c++-common/depend-2.c
+ 9f82353471029dda0e81fd17d53ada6a  libgomp/testsuite/libgomp.c-c++-common/depend-3.c
+ 276cc39e55e150ed968d02e05c73cbf2  libgomp/testsuite/libgomp.c-c++-common/depend-inoutset-1.c
  ffae923e01f64777614298d5256aa1e4  libgomp/testsuite/libgomp.c-c++-common/depend-iterator-1.c
  89f89f54b56b11293d8d7db027c1dc5b  libgomp/testsuite/libgomp.c-c++-common/depend-iterator-2.c
  1583f97cbaa7d0b05f4bc3415cf9a901  libgomp/testsuite/libgomp.c-c++-common/depend-mutexinout-1.c
*************** ee0115a370a5b6a9e6990b3d15bdd431  libgom
*** 101016,101023 ****
  81a985257cde0e49d560ae8aee85cf96  libgomp/testsuite/libgomp.c-c++-common/for-9.c
  38b84120e95c50bcbe995ff760fb2f46  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c
  45a948d47bf9a9580f0eaaa779cabe59  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded.c
  5064d7f7b54485f71e0e73966931c7e0  libgomp/testsuite/libgomp.c-c++-common/icv-3.c
! 0ff41f87bf85b96ed10a04878ee178b2  libgomp/testsuite/libgomp.c-c++-common/icv-4.c
  2db7225fd29d77c0461e025f76bb7fce  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-1.c
  4ea18b6b659c1a92c5928b282969d372  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-10.c
  14c015447b26dcc91408ffe46450e85f  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-2.c
--- 109053,109069 ----
  81a985257cde0e49d560ae8aee85cf96  libgomp/testsuite/libgomp.c-c++-common/for-9.c
  38b84120e95c50bcbe995ff760fb2f46  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded-aux.c
  45a948d47bf9a9580f0eaaa779cabe59  libgomp/testsuite/libgomp.c-c++-common/function-not-offloaded.c
+ 08db5cb3c8bda6f774ec6fca7adf3539  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-1.c
+ 082e4a8098a26fe0515142872ac3472f  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-2.c
+ c09232193f6376e5d0b4ebdc9096118e  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-3.c
+ 9456fb67e20f4201187c7399bc4d2316  libgomp/testsuite/libgomp.c-c++-common/get-mapped-ptr-4.c
  5064d7f7b54485f71e0e73966931c7e0  libgomp/testsuite/libgomp.c-c++-common/icv-3.c
! 05d4fb41ab408b4b440fc6c08cc5af65  libgomp/testsuite/libgomp.c-c++-common/icv-4.c
! 342d1628b11ff6d9c68f4135f9b176c1  libgomp/testsuite/libgomp.c-c++-common/icv-5.c
! 9926cb32d62ae0a89f7470c3e2c302ab  libgomp/testsuite/libgomp.c-c++-common/icv-6.c
! 4d6205636b7a7ee4172ae3682e8d45da  libgomp/testsuite/libgomp.c-c++-common/icv-7.c
! d41f9e5a7dfb9020f7fdc4083e485f06  libgomp/testsuite/libgomp.c-c++-common/icv-8.c
! 3d0e07ae722b636a89063bdf36a01c8e  libgomp/testsuite/libgomp.c-c++-common/icv-9.c
  2db7225fd29d77c0461e025f76bb7fce  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-1.c
  4ea18b6b659c1a92c5928b282969d372  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-10.c
  14c015447b26dcc91408ffe46450e85f  libgomp/testsuite/libgomp.c-c++-common/lastprivate-conditional-2.c
*************** cc6abf61b301e17286872d6d76d483c0  libgom
*** 101040,101052 ****
  d9c974865c1c03b48fac0231e028a7be  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-1.c
  214e7bba3d270a6822e2e6161f05981b  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-2.c
  857b86f8109e8843b901fc93bce4c8a8  libgomp/testsuite/libgomp.c-c++-common/nothing-1.c
! e3dab4fbc1c6803d5b9b05f69a4d5057  libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
  74baf3447a9a73a48cd8d205ea13026b  libgomp/testsuite/libgomp.c-c++-common/order-reproducible-1.c
  e2bc55eb4581cd421c13c8ce68663678  libgomp/testsuite/libgomp.c-c++-common/order-reproducible-2.c
  53fe13231ac841815b983b820fa61932  libgomp/testsuite/libgomp.c-c++-common/ordered-4.c
  35032e9e752cf0fddfcf3aa3df880c48  libgomp/testsuite/libgomp.c-c++-common/pause-1.c
  333f11e6a780e595ef92d101803745c9  libgomp/testsuite/libgomp.c-c++-common/pause-2.c
  5c7fd2f1e707d0e769a814bd91bb9ae8  libgomp/testsuite/libgomp.c-c++-common/pr106449.c
  67c38424bb3c5c571b180f7bdadaa4f8  libgomp/testsuite/libgomp.c-c++-common/pr45784.c
  68cf777b22e15a310c790cabde33a5f1  libgomp/testsuite/libgomp.c-c++-common/pr64824.c
  800ed634329eb97a562e7e84ebd4044b  libgomp/testsuite/libgomp.c-c++-common/pr64868.c
--- 109086,109103 ----
  d9c974865c1c03b48fac0231e028a7be  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-1.c
  214e7bba3d270a6822e2e6161f05981b  libgomp/testsuite/libgomp.c-c++-common/nonmonotonic-2.c
  857b86f8109e8843b901fc93bce4c8a8  libgomp/testsuite/libgomp.c-c++-common/nothing-1.c
! 7b82eb3ecdfe1a29b71573e9670b905e  libgomp/testsuite/libgomp.c-c++-common/omp-display-env-1.c
! b44227078d5fcd5acfde164f5bf5bcbe  libgomp/testsuite/libgomp.c-c++-common/omp-display-env-2.c
! ea669c503a0c8f82567ee811767d35be  libgomp/testsuite/libgomp.c-c++-common/on_device_arch.h
  74baf3447a9a73a48cd8d205ea13026b  libgomp/testsuite/libgomp.c-c++-common/order-reproducible-1.c
  e2bc55eb4581cd421c13c8ce68663678  libgomp/testsuite/libgomp.c-c++-common/order-reproducible-2.c
  53fe13231ac841815b983b820fa61932  libgomp/testsuite/libgomp.c-c++-common/ordered-4.c
  35032e9e752cf0fddfcf3aa3df880c48  libgomp/testsuite/libgomp.c-c++-common/pause-1.c
  333f11e6a780e595ef92d101803745c9  libgomp/testsuite/libgomp.c-c++-common/pause-2.c
+ f57660e58c4d1e1085d45c8590d31ff9  libgomp/testsuite/libgomp.c-c++-common/pr106449-2.c
  5c7fd2f1e707d0e769a814bd91bb9ae8  libgomp/testsuite/libgomp.c-c++-common/pr106449.c
+ 010e1c442bf8c18b7045c53d36e8346e  libgomp/testsuite/libgomp.c-c++-common/pr106981.c
+ 2f813609993cd155afe2c592b0f4f713  libgomp/testsuite/libgomp.c-c++-common/pr109062.c
  67c38424bb3c5c571b180f7bdadaa4f8  libgomp/testsuite/libgomp.c-c++-common/pr45784.c
  68cf777b22e15a310c790cabde33a5f1  libgomp/testsuite/libgomp.c-c++-common/pr64824.c
  800ed634329eb97a562e7e84ebd4044b  libgomp/testsuite/libgomp.c-c++-common/pr64868.c
*************** e453d108664fa547feb3b13c881be597  libgom
*** 101080,101086 ****
--- 109131,109155 ----
  b81001ea5b86a968c0d65cd22d5ac974  libgomp/testsuite/libgomp.c-c++-common/reduction-5.c
  fde44859b725290055507326964d562d  libgomp/testsuite/libgomp.c-c++-common/reduction-6.c
  ffe87889b4d3a046dbdc776f484123e8  libgomp/testsuite/libgomp.c-c++-common/refcount-1.c
+ 8a69c8483a5b57f5e10ebe6dc5c601c2  libgomp/testsuite/libgomp.c-c++-common/requires-1-aux.c
+ eca8a6233701250737409d5e0acdd0c1  libgomp/testsuite/libgomp.c-c++-common/requires-1.c
+ 2dc0502463fca130152fb7af108f5ed6  libgomp/testsuite/libgomp.c-c++-common/requires-2-aux.c
+ c0f14c17be7a8ee323ff263c601b1acc  libgomp/testsuite/libgomp.c-c++-common/requires-2.c
+ 8a69c8483a5b57f5e10ebe6dc5c601c2  libgomp/testsuite/libgomp.c-c++-common/requires-3-aux.c
+ 5d5e860b312fff5c34533d48ec0eb681  libgomp/testsuite/libgomp.c-c++-common/requires-3.c
+ d2d94dae77980713772e146283d1ebea  libgomp/testsuite/libgomp.c-c++-common/requires-4-aux.c
+ a731d728ccfe8555039538fe9dc4603f  libgomp/testsuite/libgomp.c-c++-common/requires-4.c
+ 2c3016633a066452667557249022671b  libgomp/testsuite/libgomp.c-c++-common/requires-4a.c
+ d9ee2c78e4856929794abece69334a40  libgomp/testsuite/libgomp.c-c++-common/requires-5-aux.c
+ 623abfaf9eea646fe7161a0f752e1e31  libgomp/testsuite/libgomp.c-c++-common/requires-5.c
+ fd32aa450f6085f94f173a50b28d3d25  libgomp/testsuite/libgomp.c-c++-common/requires-6.c
+ 195d6a61269c9033d8086247c91f77ee  libgomp/testsuite/libgomp.c-c++-common/requires-7-aux.c
+ 9d6c03006ea5f6c30ceda8760563f925  libgomp/testsuite/libgomp.c-c++-common/requires-7.c
+ 8e516448f286cde9aee98590f90f9b54  libgomp/testsuite/libgomp.c-c++-common/reverse-offload-1-aux.c
+ 03510135dd2e6c915f2ce8b2b3e096ed  libgomp/testsuite/libgomp.c-c++-common/reverse-offload-1.c
+ e1893e2e9ae8849b851fe85bf492a4bc  libgomp/testsuite/libgomp.c-c++-common/reverse-offload-2.c
  ee53be878dd906b2e18b5907cb4a4617  libgomp/testsuite/libgomp.c-c++-common/scope-1.c
+ 1133431dbdb45650629657f5914026c7  libgomp/testsuite/libgomp.c-c++-common/scope-2.c
  d66bb650f4953bee67dede99228fb94f  libgomp/testsuite/libgomp.c-c++-common/simd-1.c
  561437d7d3d7ef8ef34cb872b883ba18  libgomp/testsuite/libgomp.c-c++-common/simd-14.c
  cbc1c46aca10b5056dd653273e1b22d3  libgomp/testsuite/libgomp.c-c++-common/simd-15.c
*************** fa179f92bce747c523f38056959318ff  libgom
*** 101095,101109 ****
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c-c++-common/target-10.c
  52ce685862fa4549564c34c17e73ed24  libgomp/testsuite/libgomp.c-c++-common/target-13.c
  e590f10fae9bf053ed7123777b03bf32  libgomp/testsuite/libgomp.c-c++-common/target-2.c
! 5411abe8bc8fb16337ef59206b9a233a  libgomp/testsuite/libgomp.c-c++-common/target-40.c
  c1475af16cfcc82bec0d85875d542fdb  libgomp/testsuite/libgomp.c-c++-common/target-41.c
  d87524b525b7f424e584af640f4b038b  libgomp/testsuite/libgomp.c-c++-common/target-42.c
! 08b479cee4978918cedb9f5cd9453710  libgomp/testsuite/libgomp.c-c++-common/target-45.c
  1120f9e50460c0396d1ae405ffd3e780  libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c
  e73115d6a79251ae1cec9faf5147c7c8  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-1.c
  bf1a2d5b5e659178fb80138902374a56  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c
  c59c2b50b25e1cc94ef1440dd9e22f71  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
  e4ae276ba05cf2521872c73349458117  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
  400c5830e8dd2f17214d8d23477755de  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-a.c
  469b004815365e46140bcd8b826170ce  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-b.c
  b85430592a96b021a6f4ab81d5c35eb9  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1.c
--- 109164,109183 ----
  d01ee6246770101e0827d46c27fc4cc5  libgomp/testsuite/libgomp.c-c++-common/target-10.c
  52ce685862fa4549564c34c17e73ed24  libgomp/testsuite/libgomp.c-c++-common/target-13.c
  e590f10fae9bf053ed7123777b03bf32  libgomp/testsuite/libgomp.c-c++-common/target-2.c
! 783adf27dae6507cf1ecde4a04cdeaf7  libgomp/testsuite/libgomp.c-c++-common/target-40.c
  c1475af16cfcc82bec0d85875d542fdb  libgomp/testsuite/libgomp.c-c++-common/target-41.c
  d87524b525b7f424e584af640f4b038b  libgomp/testsuite/libgomp.c-c++-common/target-42.c
! ae24e1c7b9fc9100ef17c4595417ef54  libgomp/testsuite/libgomp.c-c++-common/target-45.c
  1120f9e50460c0396d1ae405ffd3e780  libgomp/testsuite/libgomp.c-c++-common/target-has-device-addr-1.c
  e73115d6a79251ae1cec9faf5147c7c8  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-1.c
  bf1a2d5b5e659178fb80138902374a56  libgomp/testsuite/libgomp.c-c++-common/target-implicit-map-2.c
  c59c2b50b25e1cc94ef1440dd9e22f71  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-1.c
  e4ae276ba05cf2521872c73349458117  libgomp/testsuite/libgomp.c-c++-common/target-in-reduction-2.c
+ 462413b33154db71951671a657737912  libgomp/testsuite/libgomp.c-c++-common/target-is-accessible-1.c
+ d989443106e2a262436792d18fb2f23b  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-async-1.c
+ 3737e3b4823c33573762510eb88c0f0f  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-async-2.c
+ b13870c9ccee080373d9f85e69613aa6  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-rect-async-1.c
+ acca011e007b14dd1357bebb2ff85642  libgomp/testsuite/libgomp.c-c++-common/target-memcpy-rect-async-2.c
  400c5830e8dd2f17214d8d23477755de  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-a.c
  469b004815365e46140bcd8b826170ce  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1-b.c
  b85430592a96b021a6f4ab81d5c35eb9  libgomp/testsuite/libgomp.c-c++-common/target-same-name-1.c
*************** b40007acfa7d6af27f51387ecc184dae  libgom
*** 101120,101125 ****
--- 109194,109202 ----
  30fa39cf4185a1d4467acb7da650aaa6  libgomp/testsuite/libgomp.c-c++-common/task-detach-7.c
  8e64db6e7526c10809c0a1d05a25f95b  libgomp/testsuite/libgomp.c-c++-common/task-detach-8.c
  d2cb6d4c0500a7f9ba372f1dbf3296c1  libgomp/testsuite/libgomp.c-c++-common/task-detach-9.c
+ 0a2a58bcca60802defd548b9405dcaf4  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-1.c
+ 2e7fff5fa6fdb480df07fd2e3f5b04cd  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-2.c
+ a1b3168ce30f47447336b170740ef26e  libgomp/testsuite/libgomp.c-c++-common/task-in-explicit-3.c
  106ee243910ede9a5511eec8792fcded  libgomp/testsuite/libgomp.c-c++-common/task-reduction-1.c
  564f092ddd87e8a1beaeda362953188d  libgomp/testsuite/libgomp.c-c++-common/task-reduction-11.c
  23584c2b5e72b0f66678ce4ada7296dd  libgomp/testsuite/libgomp.c-c++-common/task-reduction-12.c
*************** e4f419faa09d744436aad29d88eb43cf  libgom
*** 101127,101132 ****
--- 109204,109211 ----
  d284915ed4a4ac417bfb2b7632453bec  libgomp/testsuite/libgomp.c-c++-common/task-reduction-14.c
  9c603541ce46d78d4526034634edb381  libgomp/testsuite/libgomp.c-c++-common/task-reduction-15.c
  f60960e78fad9b2017aed57b39c1653a  libgomp/testsuite/libgomp.c-c++-common/task-reduction-16.c
+ e653bf8d31dab3838d4fca110a3ce845  libgomp/testsuite/libgomp.c-c++-common/task-reduction-17.c
+ 6fc6fff584c1f373ed1f3621bae88c86  libgomp/testsuite/libgomp.c-c++-common/task-reduction-18.c
  47acc8ff8c516165766737c2f13be4cf  libgomp/testsuite/libgomp.c-c++-common/task-reduction-2.c
  33b998ac8605f9aab9808c883f2e85eb  libgomp/testsuite/libgomp.c-c++-common/task-reduction-3.c
  5ab2e1d3a94c19b612a71f802938e9d8  libgomp/testsuite/libgomp.c-c++-common/task-reduction-4.c
*************** bf98adf4221cad6e7da7bfc5a26395d4  libgom
*** 101146,101151 ****
--- 109225,109232 ----
  2eba45c946c43172dafb32280f9b9085  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-3.c
  fb173d8d2f7d77807e2f94fea30c2a43  libgomp/testsuite/libgomp.c-c++-common/taskloop-reduction-4.c
  7766c9cddf6031ff22c64ce9e45948bc  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-1.c
+ 8bc6c55a37ac8b7cded66fd93df20596  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-nowait-1.c
+ b33f1965a6b9dacd7167fd0324c38e22  libgomp/testsuite/libgomp.c-c++-common/taskwait-depend-nowait-2.c
  e8fd73b729dbcad088c01b1d0f31a2ff  libgomp/testsuite/libgomp.c-c++-common/teams-1.c
  7df126bb12429498f7ff59725539584a  libgomp/testsuite/libgomp.c-c++-common/teams-2.c
  7bf43ffa356123b83df7b2f06cb4ad94  libgomp/testsuite/libgomp.c-c++-common/thread-limit-1.c
*************** e8fd73b729dbcad088c01b1d0f31a2ff  libgom
*** 101153,101159 ****
  448f5dd482b6ef3000923aaa33bb3bfb  libgomp/testsuite/libgomp.c-c++-common/unmap-infinity-2.c
  b2587cfb605c9af09f5b45e95cdb2437  libgomp/testsuite/libgomp.c-c++-common/variable-not-offloaded.c
  9827d700d634869b090c7636cc855819  libgomp/testsuite/libgomp.c/address-space-1.c
! 1859f4268fdf64646f382513441ebf0b  libgomp/testsuite/libgomp.c/affinity-1.c
  fe6e22f8c0d2e289ecbd5ea26c9ed1bc  libgomp/testsuite/libgomp.c/affinity-2.c
  1f6a1f1c31286073320fc1d55660da23  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
--- 109234,109240 ----
  448f5dd482b6ef3000923aaa33bb3bfb  libgomp/testsuite/libgomp.c-c++-common/unmap-infinity-2.c
  b2587cfb605c9af09f5b45e95cdb2437  libgomp/testsuite/libgomp.c-c++-common/variable-not-offloaded.c
  9827d700d634869b090c7636cc855819  libgomp/testsuite/libgomp.c/address-space-1.c
! 1c71a5c862fbcfd6558613f36676ee74  libgomp/testsuite/libgomp.c/affinity-1.c
  fe6e22f8c0d2e289ecbd5ea26c9ed1bc  libgomp/testsuite/libgomp.c/affinity-2.c
  1f6a1f1c31286073320fc1d55660da23  libgomp/testsuite/libgomp.c/appendix-a/a.15.1.c
  16dafd2aadb62eb39423e7b2deb46cc1  libgomp/testsuite/libgomp.c/appendix-a/a.16.1.c
*************** b1d3fe36737490aef180f46d7da6e87d  libgom
*** 101218,101223 ****
--- 109299,109311 ----
  0be08e10481456dea34aa3c77469bb95  libgomp/testsuite/libgomp.c/declare-variant-3-sm75.c
  521294738537591a7c348c6cf22ab183  libgomp/testsuite/libgomp.c/declare-variant-3-sm80.c
  7b6aaf409418914c7e9fbc501eda6c9b  libgomp/testsuite/libgomp.c/declare-variant-3.h
+ 6fa7c7dd7da3a8cbd3f168446a7726eb  libgomp/testsuite/libgomp.c/declare-variant-4-fiji.c
+ 67b80d5fdc86561d3004263a11d46861  libgomp/testsuite/libgomp.c/declare-variant-4-gfx803.c
+ 3e14f40ce7cd526a2309fa4a7246c955  libgomp/testsuite/libgomp.c/declare-variant-4-gfx900.c
+ 05bf6949e9fac738e03b7b49f3591c61  libgomp/testsuite/libgomp.c/declare-variant-4-gfx906.c
+ 5b22d70e3cee06637f3356158d67c05b  libgomp/testsuite/libgomp.c/declare-variant-4-gfx908.c
+ 8821d470d676668a587b992f18df5562  libgomp/testsuite/libgomp.c/declare-variant-4-gfx90a.c
+ ffd13e867ae45c7a2fb477cc204679de  libgomp/testsuite/libgomp.c/declare-variant-4.h
  de26bcca8c4e027a5ce130d6ff6fc370  libgomp/testsuite/libgomp.c/depend-1.c
  f064386a2df301c3135834944af37de9  libgomp/testsuite/libgomp.c/depend-10.c
  e46784f3cdfb38c461a2af6e0d9094a0  libgomp/testsuite/libgomp.c/depend-2.c
*************** ec897cbb2003f55279c80e8a2f700f48  libgom
*** 101231,101236 ****
--- 109319,109328 ----
  e5b7c99f7690e7d5a01b632a8bbf6c3a  libgomp/testsuite/libgomp.c/doacross-1.c
  3664b043d881889fef3f1a55197c60ab  libgomp/testsuite/libgomp.c/doacross-2.c
  60e6c95d8f6e038252d5ffaead6d3549  libgomp/testsuite/libgomp.c/doacross-3.c
+ 3760ae74c8f812679e9ee9ec7f1a9e69  libgomp/testsuite/libgomp.c/doacross-4.c
+ 06d29ccb303726b81f0699bef121edff  libgomp/testsuite/libgomp.c/doacross-5.c
+ da453be173ad92979620c14fc3d651f4  libgomp/testsuite/libgomp.c/doacross-6.c
+ 6e7c4419d5e13365138b21fd45594989  libgomp/testsuite/libgomp.c/doacross-7.c
  39fea640f2c9adb1a5a7efe5f6d370b8  libgomp/testsuite/libgomp.c/examples-4/array_sections-3.c
  9d4709594c05148c0ee2d3ba822d433d  libgomp/testsuite/libgomp.c/examples-4/array_sections-4.c
  8afb8b38a1fe85028237e930148d4464  libgomp/testsuite/libgomp.c/examples-4/async_target-1.c
*************** ae4ee25a98b96a2f6bbcd9bc817b5b90  libgom
*** 101278,101283 ****
--- 109370,109376 ----
  60295e2f73526594a93b118333ca7ff3  libgomp/testsuite/libgomp.c/lib-1.c
  af9d852282ae3da623a0727f1df789ab  libgomp/testsuite/libgomp.c/lib-2.c
  954e001a86eca6e39424518360cc7b36  libgomp/testsuite/libgomp.c/linear-1.c
+ 790464caa9172f448964fa91bbff5813  libgomp/testsuite/libgomp.c/linear-2.c
  8df4ee07267cae79bbb8fd9ce8e3d054  libgomp/testsuite/libgomp.c/lock-1.c
  8038f70c8492fa39f553051073970a59  libgomp/testsuite/libgomp.c/lock-2.c
  67836c9bd506679b3ff58659414d6877  libgomp/testsuite/libgomp.c/lock-3.c
*************** b39893ba213997fb0f30060685879d54  libgom
*** 101361,101366 ****
--- 109454,109460 ----
  9783950bd82dd3de38f343049b240ea9  libgomp/testsuite/libgomp.c/pr104783.c
  90c233f1c51f5ec4e94b2c31c4dc28bb  libgomp/testsuite/libgomp.c/pr104952-1.c
  aa4bf5c713a6787268e4b1415f31402c  libgomp/testsuite/libgomp.c/pr104952-2.c
+ 37f576b8026bd1367998c4594550703d  libgomp/testsuite/libgomp.c/pr108459.c
  c522146f1617da47efbc34dedb563f61  libgomp/testsuite/libgomp.c/pr24455-1.c
  4d9e31cef64ff399334db6c29e3a07db  libgomp/testsuite/libgomp.c/pr24455.c
  5f9c41745fbf27e0d2ca8e182c9ff34f  libgomp/testsuite/libgomp.c/pr26171.c
*************** bec2e246a29d581f6ebc16d2674347cb  libgom
*** 101448,101453 ****
--- 109542,109548 ----
  bbb535f9235265a2e36ddfe0bbef8c2c  libgomp/testsuite/libgomp.c/reduction-7.c
  0aa03d9573a13424169870e45c92f25e  libgomp/testsuite/libgomp.c/reduction-8.c
  29b921d3bf00dc1d10a72d9c11fb30e0  libgomp/testsuite/libgomp.c/reduction-9.c
+ 3a9dadf356a32b3316f3383d34504cd5  libgomp/testsuite/libgomp.c/reverse-offload-sm30.c
  2a48c2338a305c91e5edef024dabd0e0  libgomp/testsuite/libgomp.c/scan-1.c
  272440d8849c18c1c589238ce278b172  libgomp/testsuite/libgomp.c/scan-10.c
  18e18b13854e025eeb9efa1ba0628f49  libgomp/testsuite/libgomp.c/scan-11.c
*************** bd3f22b14448e145e631770c4c149aa6  libgom
*** 101488,101496 ****
  a2fe1187196581f584947961e875b325  libgomp/testsuite/libgomp.c/simd-7.c
  9b2a6663d5b7f13bff28cf479db0f888  libgomp/testsuite/libgomp.c/simd-8.c
  e770a162e63a8ef14578c664c60a1609  libgomp/testsuite/libgomp.c/simd-9.c
  21b382f164a90f3510cb97d72b5288b0  libgomp/testsuite/libgomp.c/single-1.c
  f96d46491425528d3d7b30c80c64952a  libgomp/testsuite/libgomp.c/single-2.c
! 0079230a2bd5b5c5b2df0a8093bf2928  libgomp/testsuite/libgomp.c/sort-1.c
  fe7fdb3688e9cc0090e8bf29500cd119  libgomp/testsuite/libgomp.c/static-chunk-size-one.c
  b100c329df163acfa97656a24a5c1bb9  libgomp/testsuite/libgomp.c/switch-conversion-2.c
  7c841b55fe2c0baa3b9aa8b2656a1d60  libgomp/testsuite/libgomp.c/switch-conversion.c
--- 109583,109592 ----
  a2fe1187196581f584947961e875b325  libgomp/testsuite/libgomp.c/simd-7.c
  9b2a6663d5b7f13bff28cf479db0f888  libgomp/testsuite/libgomp.c/simd-8.c
  e770a162e63a8ef14578c664c60a1609  libgomp/testsuite/libgomp.c/simd-9.c
+ 5e9fa474e77a9d621f989db3190f2cf2  libgomp/testsuite/libgomp.c/simd-math-1.c
  21b382f164a90f3510cb97d72b5288b0  libgomp/testsuite/libgomp.c/single-1.c
  f96d46491425528d3d7b30c80c64952a  libgomp/testsuite/libgomp.c/single-2.c
! fe2961985ec89e5321221ce54375db97  libgomp/testsuite/libgomp.c/sort-1.c
  fe7fdb3688e9cc0090e8bf29500cd119  libgomp/testsuite/libgomp.c/static-chunk-size-one.c
  b100c329df163acfa97656a24a5c1bb9  libgomp/testsuite/libgomp.c/switch-conversion-2.c
  7c841b55fe2c0baa3b9aa8b2656a1d60  libgomp/testsuite/libgomp.c/switch-conversion.c
*************** afd63367e7cb3f8df5a7702805b4f9d2  libgom
*** 101525,101534 ****
  30443acc8daefd5d19442cdbebdf89c9  libgomp/testsuite/libgomp.c/target-39.c
  2976dbc7a685197058903e4113919f62  libgomp/testsuite/libgomp.c/target-4.c
  8709eb7110674b1efddc628092eb42bc  libgomp/testsuite/libgomp.c/target-40.c
! c9e80fc96a8f99538398f336cf472679  libgomp/testsuite/libgomp.c/target-41.c
  d067438963387572140642a66e0fc4e4  libgomp/testsuite/libgomp.c/target-42.c
  184b0eef2e27bd122e3088e8c97aa90f  libgomp/testsuite/libgomp.c/target-43.c
  f3838b24aa67138bc997d68ceb604183  libgomp/testsuite/libgomp.c/target-44.c
  338aba7cb587117b870b6de02f7c8592  libgomp/testsuite/libgomp.c/target-5.c
  ae27a3336844047d494b72607cf843fc  libgomp/testsuite/libgomp.c/target-6.c
  a9b2ad991bd60cd4cd6ef4a68071bee6  libgomp/testsuite/libgomp.c/target-7.c
--- 109621,109633 ----
  30443acc8daefd5d19442cdbebdf89c9  libgomp/testsuite/libgomp.c/target-39.c
  2976dbc7a685197058903e4113919f62  libgomp/testsuite/libgomp.c/target-4.c
  8709eb7110674b1efddc628092eb42bc  libgomp/testsuite/libgomp.c/target-40.c
! 53964eae69f62a1e1e6ccd73dfd29af4  libgomp/testsuite/libgomp.c/target-41.c
  d067438963387572140642a66e0fc4e4  libgomp/testsuite/libgomp.c/target-42.c
  184b0eef2e27bd122e3088e8c97aa90f  libgomp/testsuite/libgomp.c/target-43.c
  f3838b24aa67138bc997d68ceb604183  libgomp/testsuite/libgomp.c/target-44.c
+ d24a7aaa8b4bd6cb37cf981f3918b13c  libgomp/testsuite/libgomp.c/target-45.c
+ 1ebd2ea38f64b733930f25320995ba5c  libgomp/testsuite/libgomp.c/target-46.c
+ 25f51441790c518ad6b22d941e91de3a  libgomp/testsuite/libgomp.c/target-47.c
  338aba7cb587117b870b6de02f7c8592  libgomp/testsuite/libgomp.c/target-5.c
  ae27a3336844047d494b72607cf843fc  libgomp/testsuite/libgomp.c/target-6.c
  a9b2ad991bd60cd4cd6ef4a68071bee6  libgomp/testsuite/libgomp.c/target-7.c
*************** a9b2ad991bd60cd4cd6ef4a68071bee6  libgom
*** 101538,101543 ****
--- 109637,109645 ----
  d7cbe25f5829f4d664a461d6ef7327f5  libgomp/testsuite/libgomp.c/target-has-device-addr-3.c
  2c67f32f623ae7d4b5ad5c7688a6acb1  libgomp/testsuite/libgomp.c/target-link-1.c
  7d9530ec8677e1a90e6b3d38859fc1b2  libgomp/testsuite/libgomp.c/target-print-1.c
+ 324dbde481dcd788f8563d7b0ba2ff76  libgomp/testsuite/libgomp.c/target-simd-clone-1.c
+ 52a2341bbf664fa63b9fc12287e06858  libgomp/testsuite/libgomp.c/target-simd-clone-2.c
+ 12344243db54a5699c691bfc455c62e9  libgomp/testsuite/libgomp.c/target-simd-clone-3.c
  3ec1f30520e033764f5322b77b9ccb08  libgomp/testsuite/libgomp.c/target-teams-1.c
  199474ddc91715f45996e095a9f4298a  libgomp/testsuite/libgomp.c/task-1.c
  b07f3ce8ad8f8edece7624d18f5d154d  libgomp/testsuite/libgomp.c/task-2.c
*************** f7ff00e5f2a30832f7f427c91fa1f61b  libgom
*** 101545,101550 ****
--- 109647,109654 ----
  d3e7c403248ba696f161f0c29c1f87a6  libgomp/testsuite/libgomp.c/task-4.c
  d4661425a651c88d20ba240b4b095d25  libgomp/testsuite/libgomp.c/task-5.c
  44bdb32169338741ef61362037413b94  libgomp/testsuite/libgomp.c/task-6.c
+ be9ace9f504e4b04cbe60d9c44b6ec06  libgomp/testsuite/libgomp.c/task-7.c
+ fa0452ae69f7810be8c0d18767e0b973  libgomp/testsuite/libgomp.c/task-8.c
  38213b90919e07d4d9f35aca2fd48cdd  libgomp/testsuite/libgomp.c/task-reduction-1.c
  ccf79f1a3cd3d9897f6ea88c19bfbdc8  libgomp/testsuite/libgomp.c/task-reduction-2.c
  e25fde9ed6b03c3c743ea8cf6c8eaa3e  libgomp/testsuite/libgomp.c/task-reduction-3.c
*************** bc4cd825c8ad15fbafb7f2c60e6cab7c  libgom
*** 101568,101575 ****
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
  b4e8ed1ab4338f0ccdabc2598d2e0973  libgomp/testsuite/libgomp.fortran/aligned1.f03
  74fecba59a6fa206dab72abe50117a50  libgomp/testsuite/libgomp.fortran/alloc-1.F90
! 110389787fbadb387faf33ca981ab2b6  libgomp/testsuite/libgomp.fortran/alloc-10.f90
! 9f6a24a5a95f3f5d7ed129143b034230  libgomp/testsuite/libgomp.fortran/alloc-11.f90
  051205d0ca7ee1afc858e7d1a14aa619  libgomp/testsuite/libgomp.fortran/alloc-12.f90
  cd56a1c8c06023889e5801d472bfd513  libgomp/testsuite/libgomp.fortran/alloc-2.F90
  7b4c534af5b5bc27d14a0f407856cdef  libgomp/testsuite/libgomp.fortran/alloc-3.F
--- 109672,109679 ----
  a7ba1c005e2c0979fffc63313c6c2d42  libgomp/testsuite/libgomp.fortran/affinity2.f90
  b4e8ed1ab4338f0ccdabc2598d2e0973  libgomp/testsuite/libgomp.fortran/aligned1.f03
  74fecba59a6fa206dab72abe50117a50  libgomp/testsuite/libgomp.fortran/alloc-1.F90
! 20991a1696321aac4fa63f4bf9bde535  libgomp/testsuite/libgomp.fortran/alloc-10.f90
! d5da2b0a845f75c868ed74916d291b75  libgomp/testsuite/libgomp.fortran/alloc-11.f90
  051205d0ca7ee1afc858e7d1a14aa619  libgomp/testsuite/libgomp.fortran/alloc-12.f90
  cd56a1c8c06023889e5801d472bfd513  libgomp/testsuite/libgomp.fortran/alloc-2.F90
  7b4c534af5b5bc27d14a0f407856cdef  libgomp/testsuite/libgomp.fortran/alloc-3.F
*************** cd56a1c8c06023889e5801d472bfd513  libgom
*** 101577,101585 ****
  6426f3a0ec331dd77abdb2bb4f3f2150  libgomp/testsuite/libgomp.fortran/alloc-5.f90
  a8dd8b50efc1eed90947fc4b0fea959c  libgomp/testsuite/libgomp.fortran/alloc-6.f90
  1354954216886966384fc22561bbcada  libgomp/testsuite/libgomp.fortran/alloc-7.c
! 8c8000e76a1e2454cb1e9bab199dadaf  libgomp/testsuite/libgomp.fortran/alloc-7.f90
  ea7af72aa36d2712b7aaf2af97a4368c  libgomp/testsuite/libgomp.fortran/alloc-8.f90
! d5aca734d4d8053399b0ca448bae77f3  libgomp/testsuite/libgomp.fortran/alloc-9.f90
  20b043532a006fde073387f9a23e4054  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  678b373acad56382f04e66e2b24bc6c2  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
--- 109681,109689 ----
  6426f3a0ec331dd77abdb2bb4f3f2150  libgomp/testsuite/libgomp.fortran/alloc-5.f90
  a8dd8b50efc1eed90947fc4b0fea959c  libgomp/testsuite/libgomp.fortran/alloc-6.f90
  1354954216886966384fc22561bbcada  libgomp/testsuite/libgomp.fortran/alloc-7.c
! 3370bba7b66ca913a756ea6ec75dd825  libgomp/testsuite/libgomp.fortran/alloc-7.f90
  ea7af72aa36d2712b7aaf2af97a4368c  libgomp/testsuite/libgomp.fortran/alloc-8.f90
! cbc8d1928586e24499210f2cd9438551  libgomp/testsuite/libgomp.fortran/alloc-9.f90
  20b043532a006fde073387f9a23e4054  libgomp/testsuite/libgomp.fortran/alloc-comp-1.f90
  21463b128d951cea6b4ea41176379b5c  libgomp/testsuite/libgomp.fortran/alloc-comp-2.f90
  678b373acad56382f04e66e2b24bc6c2  libgomp/testsuite/libgomp.fortran/alloc-comp-3.f90
*************** f483f8ef7a141b36266f9b8a5c59546d  libgom
*** 101596,101602 ****
  57a1e28c47f5a462deab48ffd84c3a6b  libgomp/testsuite/libgomp.fortran/allocatable8.f90
  4a681bd0d9720d19f48c680c2107b2c5  libgomp/testsuite/libgomp.fortran/allocatable9.f90
  0c2f965d6624e70619036c05ca63542f  libgomp/testsuite/libgomp.fortran/allocate-1.c
! 09de6529e507e5d55e6c9cc8ededc154  libgomp/testsuite/libgomp.fortran/allocate-1.f90
  d69ebafdf43e748e354c0c05228cdd0c  libgomp/testsuite/libgomp.fortran/appendix-a/a.15.1.f90
  3f53f7b5eb9ab9c8cb9eb0edfeedad91  libgomp/testsuite/libgomp.fortran/appendix-a/a.16.1.f90
  7998d91139611d36ffbdf8865cace3da  libgomp/testsuite/libgomp.fortran/appendix-a/a.18.1.f90
--- 109700,109709 ----
  57a1e28c47f5a462deab48ffd84c3a6b  libgomp/testsuite/libgomp.fortran/allocatable8.f90
  4a681bd0d9720d19f48c680c2107b2c5  libgomp/testsuite/libgomp.fortran/allocatable9.f90
  0c2f965d6624e70619036c05ca63542f  libgomp/testsuite/libgomp.fortran/allocate-1.c
! dbdaf2cfd129bf37a677afe53e354e29  libgomp/testsuite/libgomp.fortran/allocate-1.f90
! 9349da9af0ef5763494eb1e0a9834f82  libgomp/testsuite/libgomp.fortran/allocate-2.f90
! 932f2cec4e655b4d9c5dd84614074c55  libgomp/testsuite/libgomp.fortran/allocate-3.f90
! 3946659cdda4f8e813439a160a7b2520  libgomp/testsuite/libgomp.fortran/allocate-4.f90
  d69ebafdf43e748e354c0c05228cdd0c  libgomp/testsuite/libgomp.fortran/appendix-a/a.15.1.f90
  3f53f7b5eb9ab9c8cb9eb0edfeedad91  libgomp/testsuite/libgomp.fortran/appendix-a/a.16.1.f90
  7998d91139611d36ffbdf8865cace3da  libgomp/testsuite/libgomp.fortran/appendix-a/a.18.1.f90
*************** f010e4e57b08360b6784834bc418f08c  libgom
*** 101652,101657 ****
--- 109759,109765 ----
  90b4363d4abd073634838ef99f6e5a0a  libgomp/testsuite/libgomp.fortran/collapse2.f90
  32578bd42a3d18a3d1d31913c512c35f  libgomp/testsuite/libgomp.fortran/collapse3.f90
  53363af9a89370618f53eccaa3b29469  libgomp/testsuite/libgomp.fortran/collapse4.f90
+ 34ed4d232da31ad036343b1cbfd67e10  libgomp/testsuite/libgomp.fortran/combined-directive-splitting-1.f90
  a8a1d4819e69f862a14301cb3ed192c9  libgomp/testsuite/libgomp.fortran/condinc1.f
  2f1fffd33e5b79debd286ea4d1c6668b  libgomp/testsuite/libgomp.fortran/condinc1.inc
  5c117e1d74f2b4f253e83682b499c979  libgomp/testsuite/libgomp.fortran/condinc2.f
*************** f83e1497def5d9050edf0d194ed99cab  libgom
*** 101666,101680 ****
  c0ebd55529e9baf82532c7b2f51f3fe4  libgomp/testsuite/libgomp.fortran/declare-simd-2.f90
  8ca22b63783876ef9de275258422a06a  libgomp/testsuite/libgomp.fortran/declare-simd-3.f90
  4aa1fe4701d5e31226d8165c2fb26718  libgomp/testsuite/libgomp.fortran/declare-simd-4.f90
! 764201860dc811d06aced27b2b1a3637  libgomp/testsuite/libgomp.fortran/declare-target-1.f90
! b7af5ebe63291dc93c626e43d6f57175  libgomp/testsuite/libgomp.fortran/declare-target-2.f90
  49813561cddcf22ee10c7f9de89f62c3  libgomp/testsuite/libgomp.fortran/declare-target-3.f90
  6f5fe664dff676bc9cc04b850f98d046  libgomp/testsuite/libgomp.fortran/declare-variant-1.f90
  645acb6b48e623ae2033047eff79d0d5  libgomp/testsuite/libgomp.fortran/defaultmap-8.f90
  085b168af19aac8a6dd4f31eda256d5c  libgomp/testsuite/libgomp.fortran/depend-1.f90
  f528c60f59b52a75c434ced5c9a53e30  libgomp/testsuite/libgomp.fortran/depend-2.f90
  7ebb6e3f3faa4674c639dfcc079e08dc  libgomp/testsuite/libgomp.fortran/depend-3.f90
! ebdf8db73d2d54c1902aff5e6421fb14  libgomp/testsuite/libgomp.fortran/depend-4.f90
  555a9404bb8537a4e77d4f6182bc9e1a  libgomp/testsuite/libgomp.fortran/depend-iterator-2.f90
  31e5e093c62472c7dd338fd5cb6f0a15  libgomp/testsuite/libgomp.fortran/depobj-1.f90
  927ba26a384b46f208146dc741c0d464  libgomp/testsuite/libgomp.fortran/display-affinity-1.f90
--- 109774,109792 ----
  c0ebd55529e9baf82532c7b2f51f3fe4  libgomp/testsuite/libgomp.fortran/declare-simd-2.f90
  8ca22b63783876ef9de275258422a06a  libgomp/testsuite/libgomp.fortran/declare-simd-3.f90
  4aa1fe4701d5e31226d8165c2fb26718  libgomp/testsuite/libgomp.fortran/declare-simd-4.f90
! 41c4fec6db885d55d5e3922d68598eac  libgomp/testsuite/libgomp.fortran/declare-target-1.f90
! df7199b063fe5d0c60dfe901e72b07d4  libgomp/testsuite/libgomp.fortran/declare-target-2.f90
  49813561cddcf22ee10c7f9de89f62c3  libgomp/testsuite/libgomp.fortran/declare-target-3.f90
  6f5fe664dff676bc9cc04b850f98d046  libgomp/testsuite/libgomp.fortran/declare-variant-1.f90
  645acb6b48e623ae2033047eff79d0d5  libgomp/testsuite/libgomp.fortran/defaultmap-8.f90
  085b168af19aac8a6dd4f31eda256d5c  libgomp/testsuite/libgomp.fortran/depend-1.f90
  f528c60f59b52a75c434ced5c9a53e30  libgomp/testsuite/libgomp.fortran/depend-2.f90
  7ebb6e3f3faa4674c639dfcc079e08dc  libgomp/testsuite/libgomp.fortran/depend-3.f90
! 60d49c7b7f1b15faa2b40aa1a07edddf  libgomp/testsuite/libgomp.fortran/depend-4.f90
! 879aee67d74ed13428685bf48a63fe82  libgomp/testsuite/libgomp.fortran/depend-5.f90
! dbefb5b9dae6eea372fe12a983f2bbd5  libgomp/testsuite/libgomp.fortran/depend-6.f90
! 1f4919d3bf99ff54886fa58d5d0b9ffa  libgomp/testsuite/libgomp.fortran/depend-7.f90
! 0cfa1d2bc7945a8885b5261d221ac3fd  libgomp/testsuite/libgomp.fortran/depend-inoutset-1.f90
  555a9404bb8537a4e77d4f6182bc9e1a  libgomp/testsuite/libgomp.fortran/depend-iterator-2.f90
  31e5e093c62472c7dd338fd5cb6f0a15  libgomp/testsuite/libgomp.fortran/depobj-1.f90
  927ba26a384b46f208146dc741c0d464  libgomp/testsuite/libgomp.fortran/display-affinity-1.f90
*************** e169bdb39b192bb0ba2d9a077ad5ae8c  libgom
*** 101690,101697 ****
  1e5bcb6ccfd3ea2f2a295cd8c630278c  libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90
  8a72bb2fd12ec5cceecab8ac17e825a9  libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90
  f89804c676b502687612d8ca7000ed99  libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90
! 9368d34e0bb2e5f9af0c850113adaaed  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90
! 0cd54428a58212635e7b72f7eea6666c  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90
  cb66ef79e6c7f88b9a591a9cc6d3389c  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90
  8ac7d08d2e6d890bd01e78c7110050a6  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90
  78e2667aa17651cda72b69d7dd97fe16  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90
--- 109802,109809 ----
  1e5bcb6ccfd3ea2f2a295cd8c630278c  libgomp/testsuite/libgomp.fortran/examples-4/array_sections-4.f90
  8a72bb2fd12ec5cceecab8ac17e825a9  libgomp/testsuite/libgomp.fortran/examples-4/async_target-1.f90
  f89804c676b502687612d8ca7000ed99  libgomp/testsuite/libgomp.fortran/examples-4/async_target-2.f90
! d128182a4c81d0e18d5611f04de2b932  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-1.f90
! c9914356e1f426a9d8be86455ad500fc  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-2.f90
  cb66ef79e6c7f88b9a591a9cc6d3389c  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-3.f90
  8ac7d08d2e6d890bd01e78c7110050a6  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-4.f90
  78e2667aa17651cda72b69d7dd97fe16  libgomp/testsuite/libgomp.fortran/examples-4/declare_target-5.f90
*************** a0fea6593244c117295ec1c75e63b64f  libgom
*** 101731,101740 ****
--- 109843,109861 ----
  02624408febf6ba2958380cf587a6f5f  libgomp/testsuite/libgomp.fortran/examples-4/teams-5.f90
  e3121f156cff11c333c32e13f4f02f1c  libgomp/testsuite/libgomp.fortran/examples-4/teams-6.f90
  f221242394d1d1eed14fbd76d9a03c2f  libgomp/testsuite/libgomp.fortran/fortran.exp
+ fb9368b98109517ddb26d546887b9aac  libgomp/testsuite/libgomp.fortran/get-mapped-ptr-1.f90
+ 59681f1526deaa72f324d5b09ec00037  libgomp/testsuite/libgomp.fortran/get-mapped-ptr-2.f90
+ 79b569df0b523b1e1a1abdbb6fa23c80  libgomp/testsuite/libgomp.fortran/get-mapped-ptr-3.f90
+ 214e5c1014665b90bf23c493992692ba  libgomp/testsuite/libgomp.fortran/get-mapped-ptr-4.f90
+ e7790d5b8d8196c4fec93af270c96df1  libgomp/testsuite/libgomp.fortran/has_device_addr.f90
  0ae624aa05c8819f276790b584877c30  libgomp/testsuite/libgomp.fortran/icv-3.f90
  26eb6b7434134ddb541ef3c1b84cd77c  libgomp/testsuite/libgomp.fortran/icv-4.f90
+ 03f9137d69f93eb7b929ff28a55f7a3b  libgomp/testsuite/libgomp.fortran/icv-5.f90
+ f000e2dd72f2da9ab0cc0d3c7dfbe4fc  libgomp/testsuite/libgomp.fortran/icv-6.f90
  6b05d305be8a6a014f76bf8c1b289fec  libgomp/testsuite/libgomp.fortran/icv-8.f90
  1d7f490f3aa22662cdd277712b26a462  libgomp/testsuite/libgomp.fortran/is_device_ptr-1.f90
+ e917c7e025fcc6df71315792522da77e  libgomp/testsuite/libgomp.fortran/is_device_ptr-2.f90
+ 2382b518f8fa444fc94c1e6cf51b5280  libgomp/testsuite/libgomp.fortran/is_device_ptr-3.f90
  c25692d207e679ebce7864339e12a85f  libgomp/testsuite/libgomp.fortran/jacobi.f
  de6f55a3f86dc416877253cfdf1ab448  libgomp/testsuite/libgomp.fortran/lastprivate-conditional-10.f90
  ae72f9bef5c27e6ae84ab0ff6ee16399  libgomp/testsuite/libgomp.fortran/lastprivate1.f90
*************** d85fd25e4c208bee65d5780465935a3c  libgom
*** 101755,101760 ****
--- 109876,109887 ----
  13f8ef8330f5457c54434b768f4ed844  libgomp/testsuite/libgomp.fortran/nestedfn3.f90
  94a488ca94b0126b225912d2e19a0e1b  libgomp/testsuite/libgomp.fortran/nestedfn4.f90
  c04375d2920e5f45ba6f18d65887372d  libgomp/testsuite/libgomp.fortran/nestedfn5.f90
+ a20b90104ce5e1877603ddbb0b20ec8c  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-1.f90
+ bee750c1e316aed6760101e239671a1d  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-1a.f90
+ 7729bc0c895000f124598235e849d475  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-2.f90
+ 3d478d99c252f0f0fb435d6a21b42f02  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-3.f90
+ bc67f38e5b5b1d2e0bceb6481561db59  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-4.f90
+ 3abfab7221eabe3a8f2a81744005584b  libgomp/testsuite/libgomp.fortran/non-rectangular-loop-5.f90
  642bd7c41f7948130aa5f8f42b8f21ac  libgomp/testsuite/libgomp.fortran/omp_atomic1.f90
  ac3048471613e2f1f1ee806355b65040  libgomp/testsuite/libgomp.fortran/omp_atomic2.f90
  edf8151c5b785d7f10272dd95dbad260  libgomp/testsuite/libgomp.fortran/omp_atomic3.f90
*************** c910dfe57b9f53b8992d397c3571fd09  libgom
*** 101778,101785 ****
  652c29cde1daaffead2dae0cc54aa9a7  libgomp/testsuite/libgomp.fortran/openmp_version-2.f90
  b12d43efd39917600c23bdbe6e67c348  libgomp/testsuite/libgomp.fortran/optional-bind-c.f90
  57b1c325fdc9d4288e335bb56037d1c3  libgomp/testsuite/libgomp.fortran/optional-map.f90
! a48363ff5c5386125ca1682709e2407e  libgomp/testsuite/libgomp.fortran/order-reproducible-1.f90
! 678634fe2094e6d71d4d8dc3b1c1206f  libgomp/testsuite/libgomp.fortran/order-reproducible-2.f90
  84abc52abece939c2fa04b3d3d942da7  libgomp/testsuite/libgomp.fortran/parallel-master.f90
  18632f821c4d20cc8ddfb8b182ae7d87  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95
  b018601a4e35da4037b1e04dfdb00b98  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95
--- 109905,109912 ----
  652c29cde1daaffead2dae0cc54aa9a7  libgomp/testsuite/libgomp.fortran/openmp_version-2.f90
  b12d43efd39917600c23bdbe6e67c348  libgomp/testsuite/libgomp.fortran/optional-bind-c.f90
  57b1c325fdc9d4288e335bb56037d1c3  libgomp/testsuite/libgomp.fortran/optional-map.f90
! c3a66da5face2583306f5e661ecdeaa5  libgomp/testsuite/libgomp.fortran/order-reproducible-1.f90
! f00176bd156a14c71188a3e90d24e3f3  libgomp/testsuite/libgomp.fortran/order-reproducible-2.f90
  84abc52abece939c2fa04b3d3d942da7  libgomp/testsuite/libgomp.fortran/parallel-master.f90
  18632f821c4d20cc8ddfb8b182ae7d87  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt-2.f95
  b018601a4e35da4037b1e04dfdb00b98  libgomp/testsuite/libgomp.fortran/parloops-exit-first-loop-alt.f95
*************** cb3013075cd476e0aa06ce0539ce8956  libgom
*** 101842,101851 ****
--- 109969,109989 ----
  304da9196843372885093e5cacce568e  libgomp/testsuite/libgomp.fortran/refcount-1.f90
  ad73f3cdfa6093602117e056e552a92e  libgomp/testsuite/libgomp.fortran/reference1.f90
  50d442710afd759c4aa50c0567fff8cb  libgomp/testsuite/libgomp.fortran/reference2.f90
+ 49f4bd2dd039a534a3d4921d5a6b407e  libgomp/testsuite/libgomp.fortran/requires-1-aux.f90
+ a10b5a485db8c1ba515b62ee7e81f5e0  libgomp/testsuite/libgomp.fortran/requires-1.f90
  87ff32e5b6410cb8d684b7aa6daa7822  libgomp/testsuite/libgomp.fortran/retval1.f90
  fcd96d03b20dba6577d8b95c225c2827  libgomp/testsuite/libgomp.fortran/retval2.f90
+ d69a0d3ec788879551633d16f785947f  libgomp/testsuite/libgomp.fortran/reverse-offload-1-aux.f90
+ 1987b470b4ebd97a06646275e2f5b620  libgomp/testsuite/libgomp.fortran/reverse-offload-1.f90
+ ea8a677ba9830505808a5ba39355add7  libgomp/testsuite/libgomp.fortran/reverse-offload-2.f90
+ 1e98bd6219d2697a634e459e9391e33e  libgomp/testsuite/libgomp.fortran/reverse-offload-3.f90
+ 4e9e930d6ca8fba51d1246488bdc33a6  libgomp/testsuite/libgomp.fortran/reverse-offload-4.f90
+ 10ef752092b9072272d1de6f1d2a9b57  libgomp/testsuite/libgomp.fortran/reverse-offload-5.f90
+ c9a3f32099e9cef2e6827a644ce50760  libgomp/testsuite/libgomp.fortran/reverse-offload-5a.f90
+ c32a02ca19d34daa5c3a20afb148c142  libgomp/testsuite/libgomp.fortran/reverse-offload-6.f90
  f94173449f0106660c3c83b7da6eb1b2  libgomp/testsuite/libgomp.fortran/scan-1.f90
  fbdab6e5a5617405737d6de640e5197a  libgomp/testsuite/libgomp.fortran/scope-1.f90
+ d5c0f2d60e8a68a314e661ccc5e4d638  libgomp/testsuite/libgomp.fortran/scope-2.f90
  e4cf951d5826f38fd2445b2bd21a6f3b  libgomp/testsuite/libgomp.fortran/sharing1.f90
  fb3e4ec0015a50f8ddd3f6a1306e2627  libgomp/testsuite/libgomp.fortran/sharing2.f90
  4b323aab0234bc26e21f874065725efd  libgomp/testsuite/libgomp.fortran/simd1.f90
*************** c404adfb5e1e175f034e3ec64a2d8553  libgom
*** 101860,101883 ****
  b0c4d7d8991d26105163a63641eb9f46  libgomp/testsuite/libgomp.fortran/struct-elem-map-1.f90
  662ace7f2e660ef85ab05666191e4606  libgomp/testsuite/libgomp.fortran/tabs1.f90
  6bdb484b10f4cf6e378b081ae20083f6  libgomp/testsuite/libgomp.fortran/tabs2.f
  279ecf43b0faaaf75e9e77dd8d9db7df  libgomp/testsuite/libgomp.fortran/target-12.f90
  063a24dc5c19b2adb2c5fcb0b05a58a4  libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
  89c53be6c76a8902941180b26848ae9b  libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
  f3e9642d4302feea21de2d2b9f5ca654  libgomp/testsuite/libgomp.fortran/target-enter-data-1.f90
  10cc37e35fda6c7ed2cff8cf2f9f8371  libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90
  6069ee87a3235563ba19c231c5d6c1e5  libgomp/testsuite/libgomp.fortran/target-has-device-addr-1.f90
  59c61dfb9aba411df68fdeed8f3c5659  libgomp/testsuite/libgomp.fortran/target-has-device-addr-2.f90
  9ddb3d9bf13556db631c8e466cc523cc  libgomp/testsuite/libgomp.fortran/target-has-device-addr-3.f90
  9ae0f32be5dff9e05029e020cf6af7de  libgomp/testsuite/libgomp.fortran/target-has-device-addr-4.f90
  49908b2e3663c182a2478e5f28929c6d  libgomp/testsuite/libgomp.fortran/target-in-reduction-1.f90
  c604509b615d707812822a4f9559faca  libgomp/testsuite/libgomp.fortran/target-in-reduction-2.f90
  c8674726b7e6d033a64557c340289db9  libgomp/testsuite/libgomp.fortran/target-map-1.f90
  7e2f3e496520976a37df3ba992f7f69a  libgomp/testsuite/libgomp.fortran/target-print-1-nvptx.f90
  bc18d7dcb406b7660308046e178bba0d  libgomp/testsuite/libgomp.fortran/target-print-1.f90
  b7c20b004458fd9909db3090ddfcd1d8  libgomp/testsuite/libgomp.fortran/target-simd.f90
  06e3ddc01cecc71c2af49a64f38f6a88  libgomp/testsuite/libgomp.fortran/target-var.f90
  1db1fe2cc8dbdf1b311a5f49a4004ed7  libgomp/testsuite/libgomp.fortran/target1.f90
! 374411f76e4795c5d814b344336afd31  libgomp/testsuite/libgomp.fortran/target10.f90
  cd35897c72fe52157d20924875a4168f  libgomp/testsuite/libgomp.fortran/target2.f90
  b49956429e82860e59f365f5e6797a44  libgomp/testsuite/libgomp.fortran/target3.f90
  efb13688b8f5b12df4f386ca40cc687d  libgomp/testsuite/libgomp.fortran/target4.f90
--- 109998,110033 ----
  b0c4d7d8991d26105163a63641eb9f46  libgomp/testsuite/libgomp.fortran/struct-elem-map-1.f90
  662ace7f2e660ef85ab05666191e4606  libgomp/testsuite/libgomp.fortran/tabs1.f90
  6bdb484b10f4cf6e378b081ae20083f6  libgomp/testsuite/libgomp.fortran/tabs2.f
+ d83d2615373561e22bd33085adbc3c8e  libgomp/testsuite/libgomp.fortran/target-11.f90
  279ecf43b0faaaf75e9e77dd8d9db7df  libgomp/testsuite/libgomp.fortran/target-12.f90
+ 6088668eebebdee2e363a3d9c13c815f  libgomp/testsuite/libgomp.fortran/target-13.f90
  063a24dc5c19b2adb2c5fcb0b05a58a4  libgomp/testsuite/libgomp.fortran/target-allocatable-1-1.f90
  89c53be6c76a8902941180b26848ae9b  libgomp/testsuite/libgomp.fortran/target-allocatable-1-2.f90
  f3e9642d4302feea21de2d2b9f5ca654  libgomp/testsuite/libgomp.fortran/target-enter-data-1.f90
  10cc37e35fda6c7ed2cff8cf2f9f8371  libgomp/testsuite/libgomp.fortran/target-enter-data-2.F90
+ e1daa327a7c1d32b874d6a14ce667b12  libgomp/testsuite/libgomp.fortran/target-enter-data-3.f90
+ 4b32e60df4d9f68e1aefdd38f541c157  libgomp/testsuite/libgomp.fortran/target-firstprivate-1.f90
+ 1f145e3be28990a374e7117e351fb917  libgomp/testsuite/libgomp.fortran/target-firstprivate-2.f90
+ 92d67d046a52b255c5a4e9d08fe3f118  libgomp/testsuite/libgomp.fortran/target-firstprivate-3.f90
  6069ee87a3235563ba19c231c5d6c1e5  libgomp/testsuite/libgomp.fortran/target-has-device-addr-1.f90
  59c61dfb9aba411df68fdeed8f3c5659  libgomp/testsuite/libgomp.fortran/target-has-device-addr-2.f90
  9ddb3d9bf13556db631c8e466cc523cc  libgomp/testsuite/libgomp.fortran/target-has-device-addr-3.f90
  9ae0f32be5dff9e05029e020cf6af7de  libgomp/testsuite/libgomp.fortran/target-has-device-addr-4.f90
  49908b2e3663c182a2478e5f28929c6d  libgomp/testsuite/libgomp.fortran/target-in-reduction-1.f90
  c604509b615d707812822a4f9559faca  libgomp/testsuite/libgomp.fortran/target-in-reduction-2.f90
+ dbe3bc360ddea6525088228f741db5dd  libgomp/testsuite/libgomp.fortran/target-is-accessible-1.f90
  c8674726b7e6d033a64557c340289db9  libgomp/testsuite/libgomp.fortran/target-map-1.f90
+ 01e2ad7b20b3a43df8961f12a00e15c3  libgomp/testsuite/libgomp.fortran/target-memcpy-async-1.f90
+ df2f6664e447efa046e484854a127809  libgomp/testsuite/libgomp.fortran/target-memcpy-async-2.f90
+ 2091f2ab8064a010253fb962f417a898  libgomp/testsuite/libgomp.fortran/target-memcpy-rect-async-1.f90
+ 548ed09f85e9ea7b135e720c2e102444  libgomp/testsuite/libgomp.fortran/target-memcpy-rect-async-2.f90
+ fa86dfefc4898bd33879aef257ad3fc1  libgomp/testsuite/libgomp.fortran/target-nowait-array-section.f90
  7e2f3e496520976a37df3ba992f7f69a  libgomp/testsuite/libgomp.fortran/target-print-1-nvptx.f90
  bc18d7dcb406b7660308046e178bba0d  libgomp/testsuite/libgomp.fortran/target-print-1.f90
  b7c20b004458fd9909db3090ddfcd1d8  libgomp/testsuite/libgomp.fortran/target-simd.f90
  06e3ddc01cecc71c2af49a64f38f6a88  libgomp/testsuite/libgomp.fortran/target-var.f90
  1db1fe2cc8dbdf1b311a5f49a4004ed7  libgomp/testsuite/libgomp.fortran/target1.f90
! 5ead11a014d23aa66989fb7c241a75a2  libgomp/testsuite/libgomp.fortran/target10.f90
  cd35897c72fe52157d20924875a4168f  libgomp/testsuite/libgomp.fortran/target2.f90
  b49956429e82860e59f365f5e6797a44  libgomp/testsuite/libgomp.fortran/target3.f90
  efb13688b8f5b12df4f386ca40cc687d  libgomp/testsuite/libgomp.fortran/target4.f90
*************** c7cbb1fd57ef2663e3293bb979181399  libgom
*** 101886,101891 ****
--- 110036,110043 ----
  b1889638e28c31a67ab996e01c764b45  libgomp/testsuite/libgomp.fortran/target7.f90
  675782568bedb5bd5daef132e71aac8c  libgomp/testsuite/libgomp.fortran/target8.f90
  dcfe27eb9dec5095293470aaba48e94a  libgomp/testsuite/libgomp.fortran/target9.f90
+ 6ba906766b927837b669526edc80e1df  libgomp/testsuite/libgomp.fortran/task-7.f90
+ 9c0790499c6c651f2b06950352cd7d10  libgomp/testsuite/libgomp.fortran/task-8.f90
  93803cea6999dc2ffa26c3d175258645  libgomp/testsuite/libgomp.fortran/task-detach-1.f90
  1eae3488d7432161fa4f226b22586c85  libgomp/testsuite/libgomp.fortran/task-detach-10.f90
  2113abfbdfd00b964b78ee5b3d807d29  libgomp/testsuite/libgomp.fortran/task-detach-11.f90
*************** dcfe27eb9dec5095293470aaba48e94a  libgom
*** 101894,101904 ****
  2684d47a634cb6a69da9f20d4837c35c  libgomp/testsuite/libgomp.fortran/task-detach-3.f90
  034c0352697e1a21933626072ccb4d81  libgomp/testsuite/libgomp.fortran/task-detach-4.f90
  247136c819572f09a1c2db8e5f41ed1d  libgomp/testsuite/libgomp.fortran/task-detach-5.f90
! 70f3f40c381cf40831b26a1a2340cd02  libgomp/testsuite/libgomp.fortran/task-detach-6.f90
  590b516f04de7ece4ed42eb82e4c487f  libgomp/testsuite/libgomp.fortran/task-detach-7.f90
  a46ae26255d516b8ed937dff6c28ec1d  libgomp/testsuite/libgomp.fortran/task-detach-8.f90
  f2450ae8387ba84e68f4b97807a8092e  libgomp/testsuite/libgomp.fortran/task-detach-9.f90
  bae89551c4694717d5718528c9850482  libgomp/testsuite/libgomp.fortran/task-reduction-16.f90
  113de27610157d8cdd9794598566ad24  libgomp/testsuite/libgomp.fortran/task1.f90
  2675d60a88dcd376d85a3b69e41997be  libgomp/testsuite/libgomp.fortran/task2.f90
  d0a3dcc41da194a892e1d5818a58e3fb  libgomp/testsuite/libgomp.fortran/task3.f90
--- 110046,110061 ----
  2684d47a634cb6a69da9f20d4837c35c  libgomp/testsuite/libgomp.fortran/task-detach-3.f90
  034c0352697e1a21933626072ccb4d81  libgomp/testsuite/libgomp.fortran/task-detach-4.f90
  247136c819572f09a1c2db8e5f41ed1d  libgomp/testsuite/libgomp.fortran/task-detach-5.f90
! c2a33332ac38a4783d18960400bd4e55  libgomp/testsuite/libgomp.fortran/task-detach-6.f90
  590b516f04de7ece4ed42eb82e4c487f  libgomp/testsuite/libgomp.fortran/task-detach-7.f90
  a46ae26255d516b8ed937dff6c28ec1d  libgomp/testsuite/libgomp.fortran/task-detach-8.f90
  f2450ae8387ba84e68f4b97807a8092e  libgomp/testsuite/libgomp.fortran/task-detach-9.f90
+ 4327a6f154bf54e3f7aa491c8fd12535  libgomp/testsuite/libgomp.fortran/task-in-explicit-1.f90
+ 48ad766415a220d0c15007061b3ef80e  libgomp/testsuite/libgomp.fortran/task-in-explicit-2.f90
+ ec4fa86ef854d420820e5c6ea887b88c  libgomp/testsuite/libgomp.fortran/task-in-explicit-3.f90
  bae89551c4694717d5718528c9850482  libgomp/testsuite/libgomp.fortran/task-reduction-16.f90
+ 1d2528ff85eb21072f9c7ff641495977  libgomp/testsuite/libgomp.fortran/task-reduction-17.f90
+ 83c9f5c68c444b50837cf322f3aa700a  libgomp/testsuite/libgomp.fortran/task-reduction-18.f90
  113de27610157d8cdd9794598566ad24  libgomp/testsuite/libgomp.fortran/task1.f90
  2675d60a88dcd376d85a3b69e41997be  libgomp/testsuite/libgomp.fortran/task2.f90
  d0a3dcc41da194a892e1d5818a58e3fb  libgomp/testsuite/libgomp.fortran/task3.f90
*************** e51a40daef7d1ce1e50dfdd1b278cad2  libgom
*** 101912,101917 ****
--- 110069,110075 ----
  98a35e139eeb4252f32bce147d6909a7  libgomp/testsuite/libgomp.fortran/taskloop2.f90
  beee9d3f7311fb5afea95ed2904ade4d  libgomp/testsuite/libgomp.fortran/taskloop3.f90
  5abe0f692be4e8a434110d635cdfc8ad  libgomp/testsuite/libgomp.fortran/taskloop4.f90
+ 607de5a4cae7c8892128240988ccc2d1  libgomp/testsuite/libgomp.fortran/taskwait-depend-nowait-1.f90
  b13aebac7e571badd867d06964d3a1e1  libgomp/testsuite/libgomp.fortran/teams-1.f90
  0021d93b0355ac35973e30744eb38ede  libgomp/testsuite/libgomp.fortran/teams1.f90
  271e42e9ae5699ce11bdb626da4f303e  libgomp/testsuite/libgomp.fortran/teams2.f90
*************** b7bd8336394b70d4872d7295b8dbb7c1  libgom
*** 101939,101950 ****
--- 110097,110110 ----
  b1f5d4bd212151ec10ee5fcb2e86e8a9  libgomp/testsuite/libgomp.fortran/use_device_addr-2.f90
  9161a2c67f2086d26842275e652c2d09  libgomp/testsuite/libgomp.fortran/use_device_addr-3.f90
  0f0739055024a52f6c6062614fefcd20  libgomp/testsuite/libgomp.fortran/use_device_addr-4.f90
+ d88ab0fbf766c009a5fcca0379d79fe6  libgomp/testsuite/libgomp.fortran/use_device_addr-5.f90
  27c3a980a8e94305bd6a957c7ea5dbd8  libgomp/testsuite/libgomp.fortran/use_device_ptr-1.f90
  d58b22d6389008961e84f8a1b3d9a8f9  libgomp/testsuite/libgomp.fortran/use_device_ptr-3.f90
  421b0a816a39ae625f4e8f4f91b3671d  libgomp/testsuite/libgomp.fortran/use_device_ptr-4.f90
  5b0545422a5d32741adf1b28e189108a  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-1.f90
  95257bb64bc7b70916e7cf5e4c13ac0a  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-2.f90
  2b347c1c7f2cbe98905e1b48f453f08c  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-3.f90
+ dc1df4b97d0fa5209eb509523fa08bfc  libgomp/testsuite/libgomp.fortran/use_device_ptr-optional-4.f90
  fd6becb20369d6ac5a1bacfc014b31a3  libgomp/testsuite/libgomp.fortran/use_intrinsic_1.f90
  fecda9fc3e70ac57c13ecf7a85196138  libgomp/testsuite/libgomp.fortran/vla1.f90
  4bd76ef74f55ed2027a8be5f22222133  libgomp/testsuite/libgomp.fortran/vla2.f90
*************** bc89329871a4063322c6c6a75033c327  libgom
*** 101966,101972 ****
  c7c454ddd0e7815a3bcc65d728543f0c  libgomp/testsuite/libgomp.graphite/force-parallel-7.c
  ef7b761ee578290c488dcfb7c28a0b66  libgomp/testsuite/libgomp.graphite/force-parallel-8.c
  afbfc00298798c7c56e3095384ac408a  libgomp/testsuite/libgomp.graphite/force-parallel-9.c
! f7f04705cef0b98de36866c93b875ee6  libgomp/testsuite/libgomp.graphite/graphite.exp
  b274f32716465c48bfe021ad40ae5184  libgomp/testsuite/libgomp.graphite/pr41118.c
  a8440c7128038abbec4c5b0b8e057565  libgomp/testsuite/libgomp.oacc-c++/c++.exp
  453e6f1d9f502042e4ee6b8e52564c6a  libgomp/testsuite/libgomp.oacc-c++/cache-1.C
--- 110126,110132 ----
  c7c454ddd0e7815a3bcc65d728543f0c  libgomp/testsuite/libgomp.graphite/force-parallel-7.c
  ef7b761ee578290c488dcfb7c28a0b66  libgomp/testsuite/libgomp.graphite/force-parallel-8.c
  afbfc00298798c7c56e3095384ac408a  libgomp/testsuite/libgomp.graphite/force-parallel-9.c
! 8729eb879f187d2f9e0864995e5f0ae8  libgomp/testsuite/libgomp.graphite/graphite.exp
  b274f32716465c48bfe021ad40ae5184  libgomp/testsuite/libgomp.graphite/pr41118.c
  a8440c7128038abbec4c5b0b8e057565  libgomp/testsuite/libgomp.oacc-c++/c++.exp
  453e6f1d9f502042e4ee6b8e52564c6a  libgomp/testsuite/libgomp.oacc-c++/cache-1.C
*************** a8440c7128038abbec4c5b0b8e057565  libgom
*** 101974,101979 ****
--- 110134,110140 ----
  d4976186c6059f98d3a33b36f5c4d896  libgomp/testsuite/libgomp.oacc-c++/declare-pr94120.C
  d0be357251fa9b81f47dc517c6dcf8d4  libgomp/testsuite/libgomp.oacc-c++/deep-copy-12.C
  a924aab65a7c7201de2adf4968e8e2e6  libgomp/testsuite/libgomp.oacc-c++/deep-copy-13.C
+ 121dfc93f39c716edacdd5ec8cff3ceb  libgomp/testsuite/libgomp.oacc-c++/deep-copy-17.C
  15c29e5b997581e16ab18ae5944430d9  libgomp/testsuite/libgomp.oacc-c++/firstprivate-mappings-1.C
  a336b372fbba053cbc1902f7a2bf87d7  libgomp/testsuite/libgomp.oacc-c++/non-scalar-data.C
  8c2a8c355da4844ae1d1a8608c1274f3  libgomp/testsuite/libgomp.oacc-c++/pr71959-aux.cc
*************** d36c56b9b161368fbce8efe09449dbf6  libgom
*** 102017,102023 ****
  c20cad710294b1d13c0dc2b1460754f2  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-init-1.c
  f6d412d14f2b49d85657fb6dc68aa171  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-init-2.c
  b2386b6e82a8615256cb0f88cec84c98  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
! 11879bc5a4a630c37b6a1aaddf423be4  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-parallel-1.c
  4c138d368db7fdb266456704e2b0ce53  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-valid_bytes-1.c
  adc5b169933ec8730cb4f35d90e4f00e  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-version-1.c
  e9972d1ff25595900bd2b8672f16f20e  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_set_cuda_stream-1.c
--- 110178,110184 ----
  c20cad710294b1d13c0dc2b1460754f2  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-init-1.c
  f6d412d14f2b49d85657fb6dc68aa171  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-init-2.c
  b2386b6e82a8615256cb0f88cec84c98  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-kernels-1.c
! f6164513c7f132625b0205f38751f656  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-parallel-1.c
  4c138d368db7fdb266456704e2b0ce53  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-valid_bytes-1.c
  adc5b169933ec8730cb4f35d90e4f00e  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_prof-version-1.c
  e9972d1ff25595900bd2b8672f16f20e  libgomp/testsuite/libgomp.oacc-c-c++-common/acc_set_cuda_stream-1.c
*************** e86facfc6fa8df609d9a6cd8bda4558b  libgom
*** 102053,102059 ****
  c826235c3b755ef2376b379ef9b17203  libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
  7e1e83302151387dcf74e27731218cf5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
  da21f3624167531fae9d51550d12335d  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
! a0826470352b3d00ca5ad532634a1535  libgomp/testsuite/libgomp.oacc-c-c++-common/data-3.c
  fb17c028fd87af5b26b4238fa2c2e796  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels-ipa-pta.c
  9b6dd5748b288e6ce971d52df9236ac5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels.c
  9a24345e45933088769dead5ed98b52c  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-parallel-ipa-pta.c
--- 110214,110220 ----
  c826235c3b755ef2376b379ef9b17203  libgomp/testsuite/libgomp.oacc-c-c++-common/data-1.c
  7e1e83302151387dcf74e27731218cf5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2-lib.c
  da21f3624167531fae9d51550d12335d  libgomp/testsuite/libgomp.oacc-c-c++-common/data-2.c
! ea745e1c937cf1c8c4d8936cb15be168  libgomp/testsuite/libgomp.oacc-c-c++-common/data-3.c
  fb17c028fd87af5b26b4238fa2c2e796  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels-ipa-pta.c
  9b6dd5748b288e6ce971d52df9236ac5  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-kernels.c
  9a24345e45933088769dead5ed98b52c  libgomp/testsuite/libgomp.oacc-c-c++-common/data-clauses-parallel-ipa-pta.c
*************** ebb8f3adc650c08eeaf1e77a9b7084d4  libgom
*** 102070,102075 ****
--- 110231,110238 ----
  4fa07035c293b9ed9e4dc0c2e01511da  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-10.c
  0b25a866f5d087c91925337a99617ee2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-11.c
  54a6fa54d0ae478acf5f8fdc6fc64ff9  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-14.c
+ 447a90dbee57bb28bd50565c32983aa4  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-15.c
+ 46b34b68c1cf393ceaf5eaa0c55f1b66  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-16.c
  9c7e1e3debd75360f4656123dcc91d5a  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-2.c
  75bed8cf1fc38f3bf473a64c15d806c2  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-3.c
  2cd98ca3b7863b36c45dee4a3287e219  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-4.c
*************** ebb8f3adc650c08eeaf1e77a9b7084d4  libgom
*** 102078,102083 ****
--- 110241,110247 ----
  4aabddd036776023f9c2c3d6ed05828d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c
  43c4b0ed1cfe04cc6cc7b1239ae4831d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c
  d4b69294a211a96b70ae02bd130cfd8d  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-9.c
+ 35633f4e282f736fd241f078bea8466f  libgomp/testsuite/libgomp.oacc-c-c++-common/deep-copy-arrayofstruct.c
  86912a4f5e145ea29f7c45d935bec143  libgomp/testsuite/libgomp.oacc-c-c++-common/default-1.c
  aa6b36c4a8b02af8803293f68c209f30  libgomp/testsuite/libgomp.oacc-c-c++-common/deviceptr-1.c
  a3486bacd7b29c9e93ee1df6beada30b  libgomp/testsuite/libgomp.oacc-c-c++-common/enter-data.c
*************** adcdf604914cbb48debe799674b5db8e  libgom
*** 102254,102266 ****
  e6a5f83e468db1c48a248853d4c14399  libgomp/testsuite/libgomp.oacc-c-c++-common/mode-transitions.c
  4ad5cc05b3074b790b7e68a28556ae0f  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-1.c
  968a8b86f9a11317a5a9c9b8d1d372af  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-2.c
! e45ac1ff3f93693f35f0a97222dcb90d  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-1.c
! c537911ddc20da42e99bf59575d14bd8  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-2.c
  47ebdea7613a16fab1b423997dbd1a7e  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-3.c
  df7ad53344eda7fbf137bede9881f937  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-4.c
  664dc29bfd79e7bf5f2b979cc0970b96  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-5.c
  91f26b68a420115e4c64c6438df22173  libgomp/testsuite/libgomp.oacc-c-c++-common/nvptx-merged-loop.c
! 12249124e26b0942cdd83443f2f0180c  libgomp/testsuite/libgomp.oacc-c-c++-common/nvptx-sese-1.c
  8483df68b361c43ee27c5db6c8b6ddf1  libgomp/testsuite/libgomp.oacc-c-c++-common/offset-1.c
  121c1851eca6741da8d5dcdf01682174  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c
  dad64eeb3afa870b5cc1e483a491834a  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c
--- 110418,110430 ----
  e6a5f83e468db1c48a248853d4c14399  libgomp/testsuite/libgomp.oacc-c-c++-common/mode-transitions.c
  4ad5cc05b3074b790b7e68a28556ae0f  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-1.c
  968a8b86f9a11317a5a9c9b8d1d372af  libgomp/testsuite/libgomp.oacc-c-c++-common/nested-2.c
! fe9f2e2847192a02584175867ee5b7aa  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-1.c
! 04429c953775e5039274f7d23949113a  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-2.c
  47ebdea7613a16fab1b423997dbd1a7e  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-3.c
  df7ad53344eda7fbf137bede9881f937  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-4.c
  664dc29bfd79e7bf5f2b979cc0970b96  libgomp/testsuite/libgomp.oacc-c-c++-common/no_create-5.c
  91f26b68a420115e4c64c6438df22173  libgomp/testsuite/libgomp.oacc-c-c++-common/nvptx-merged-loop.c
! ca7653ad01619790444810cadeb3e734  libgomp/testsuite/libgomp.oacc-c-c++-common/nvptx-sese-1.c
  8483df68b361c43ee27c5db6c8b6ddf1  libgomp/testsuite/libgomp.oacc-c-c++-common/offset-1.c
  121c1851eca6741da8d5dcdf01682174  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c
  dad64eeb3afa870b5cc1e483a491834a  libgomp/testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c
*************** ee14c246a4b0621d735a59d30ac0299a  libgom
*** 102316,102327 ****
  b3824216ed6541363eaab687c61bb584  libgomp/testsuite/libgomp.oacc-c-c++-common/present-2.c
  92f1c6a9ab211f9c69a79ea2f24d7b7a  libgomp/testsuite/libgomp.oacc-c-c++-common/private-atomic-1-gang.c
  88d7cb06b9f0d1b5d3b7f0028babd6f1  libgomp/testsuite/libgomp.oacc-c-c++-common/private-atomic-1.c
  ac8c119cd16886f2edb81026351b50fc  libgomp/testsuite/libgomp.oacc-c-c++-common/private-variables.c
  860979ab58747c7040ee3c4c38302735  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c
  3c1cee7992dfcf6b730b69a0efb2614c  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c
  875ee1222c17fd07d573f26a124f0939  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c
  fd94b5ec6470f1113cc5a38c6db4cbfc  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
! 893947f0be604d2f8a6938a11aa866fd  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
  09f6f75a650d1fb022faca9e867c6556  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c
  8c6a544366a7f9ff690cfda71e40fabb  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
  0fc354f8d8f049474bcdaa855dac08e8  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-8.c
--- 110480,110492 ----
  b3824216ed6541363eaab687c61bb584  libgomp/testsuite/libgomp.oacc-c-c++-common/present-2.c
  92f1c6a9ab211f9c69a79ea2f24d7b7a  libgomp/testsuite/libgomp.oacc-c-c++-common/private-atomic-1-gang.c
  88d7cb06b9f0d1b5d3b7f0028babd6f1  libgomp/testsuite/libgomp.oacc-c-c++-common/private-atomic-1.c
+ 6fd61bdb51a93c9a793bd466d098f221  libgomp/testsuite/libgomp.oacc-c-c++-common/private-big-1.c
  ac8c119cd16886f2edb81026351b50fc  libgomp/testsuite/libgomp.oacc-c-c++-common/private-variables.c
  860979ab58747c7040ee3c4c38302735  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-1.c
  3c1cee7992dfcf6b730b69a0efb2614c  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-2.c
  875ee1222c17fd07d573f26a124f0939  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-3.c
  fd94b5ec6470f1113cc5a38c6db4cbfc  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-4.c
! 041e2e98d49ce5520103e7106e14dff4  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-5.c
  09f6f75a650d1fb022faca9e867c6556  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-6.c
  8c6a544366a7f9ff690cfda71e40fabb  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-7.c
  0fc354f8d8f049474bcdaa855dac08e8  libgomp/testsuite/libgomp.oacc-c-c++-common/reduction-8.c
*************** df530ba0c841e743894417cbc02d170c  libgom
*** 102338,102344 ****
  32669ea61f7666f9191edab5d51c15fb  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-g-1.c
  d1608fbfd50247044238123c32b70625  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c
  8a5b1095be7c201a02d6b3092af1ae7e  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-nohost-1.c
! 2ce2170865d76ca5d35bb4ba1a0f53df  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-nohost-2.c
  e761f4dca6250611ff0792b1d8cacfbc  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-nohost-2_2.c
  2bca4d84754ff7276b96cc402823cbc6  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-v-1.c
  d56fcc986a0bc959a99533bf679f67ff  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-w-1.c
--- 110503,110509 ----
  32669ea61f7666f9191edab5d51c15fb  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-g-1.c
  d1608fbfd50247044238123c32b70625  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-gwv-1.c
  8a5b1095be7c201a02d6b3092af1ae7e  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-nohost-1.c
! 3fae469eae0dd8389d6f1028e1015d6a  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-nohost-2.c
  e761f4dca6250611ff0792b1d8cacfbc  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-nohost-2_2.c
  2bca4d84754ff7276b96cc402823cbc6  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-v-1.c
  d56fcc986a0bc959a99533bf679f67ff  libgomp/testsuite/libgomp.oacc-c-c++-common/routine-w-1.c
*************** e291fb4985f02fc7782cabd92b7fffae  libgom
*** 102445,102455 ****
  817ea5e4070011bdb1552c03b52d8816  libgomp/testsuite/libgomp.oacc-fortran/data-4-2.f90
  2fe7f6b41e02df794fab057986082f62  libgomp/testsuite/libgomp.oacc-fortran/data-4.f90
  3bb8da25116226b8ffde6e4c2d09cefd  libgomp/testsuite/libgomp.oacc-fortran/data-5.f90
! 437b0678dace3ccb57b54cc512e04c0f  libgomp/testsuite/libgomp.oacc-fortran/declare-1.f90
  83b2b6a7d90554fc77a6a4266b037818  libgomp/testsuite/libgomp.oacc-fortran/declare-2.f90
  ae41f5db2035d1b0ded7399cbf7135b4  libgomp/testsuite/libgomp.oacc-fortran/declare-3.f90
  28eddc3ff93ba0dcfa58b6e5aa8315bc  libgomp/testsuite/libgomp.oacc-fortran/declare-4.f90
  91954267381c2cc6b4889ae005a0567f  libgomp/testsuite/libgomp.oacc-fortran/declare-5.f90
  e7a3c51b8d35c1cdddbc27fff479cd33  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-1.f90
  4b09f26772b90e8ca03fb868985251f7  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-3.f90
  56ffa40df7356420fd446e1241dbe693  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-4.f90
--- 110610,110625 ----
  817ea5e4070011bdb1552c03b52d8816  libgomp/testsuite/libgomp.oacc-fortran/data-4-2.f90
  2fe7f6b41e02df794fab057986082f62  libgomp/testsuite/libgomp.oacc-fortran/data-4.f90
  3bb8da25116226b8ffde6e4c2d09cefd  libgomp/testsuite/libgomp.oacc-fortran/data-5.f90
! bd37aa41212a39f03ec156374edd4bad  libgomp/testsuite/libgomp.oacc-fortran/declare-1.f90
  83b2b6a7d90554fc77a6a4266b037818  libgomp/testsuite/libgomp.oacc-fortran/declare-2.f90
  ae41f5db2035d1b0ded7399cbf7135b4  libgomp/testsuite/libgomp.oacc-fortran/declare-3.f90
  28eddc3ff93ba0dcfa58b6e5aa8315bc  libgomp/testsuite/libgomp.oacc-fortran/declare-4.f90
  91954267381c2cc6b4889ae005a0567f  libgomp/testsuite/libgomp.oacc-fortran/declare-5.f90
+ 02f75e441f6421179dbd78a782e72d3e  libgomp/testsuite/libgomp.oacc-fortran/declare-allocatable-1-directive.f90
+ e239e002aff472f314d83e497c247c6b  libgomp/testsuite/libgomp.oacc-fortran/declare-allocatable-1-runtime.f90
+ 009c0034f30f86114e5e7be0a6e426a5  libgomp/testsuite/libgomp.oacc-fortran/declare-allocatable-1.f90
+ e8d452c75465c4ac9a56103b7deb6399  libgomp/testsuite/libgomp.oacc-fortran/declare-allocatable-array_descriptor-1-directive.f90
+ ab390d9cf90cde3bea9b6e06761a7a41  libgomp/testsuite/libgomp.oacc-fortran/declare-allocatable-array_descriptor-1-runtime.f90
  e7a3c51b8d35c1cdddbc27fff479cd33  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-1.f90
  4b09f26772b90e8ca03fb868985251f7  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-3.f90
  56ffa40df7356420fd446e1241dbe693  libgomp/testsuite/libgomp.oacc-fortran/deep-copy-4.f90
*************** e79bc2530648a870e2f0ff4c36e184f2  libgom
*** 102478,102485 ****
  7ec12a5b107bbcc52d745bea79a48720  libgomp/testsuite/libgomp.oacc-fortran/host_data-2.f90
  cf2a27da59d3b7856348e6c1707bc944  libgomp/testsuite/libgomp.oacc-fortran/host_data-3.f
  63d16960cfabb69ecf97cf86440e8178  libgomp/testsuite/libgomp.oacc-fortran/host_data-4.f90
! ff0dfe860a767859da163b00d4de4479  libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90
! d09b7a0a0fcbb38c1c35b5a9899e3a09  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
  9e79f04def374125ca7e12df1aa42e17  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
  916dd1d0624fc62083348884a09e0cf8  libgomp/testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction-2.f90
  7c709c6d864edc4962556c34495e8b24  libgomp/testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction.f90
--- 110648,110655 ----
  7ec12a5b107bbcc52d745bea79a48720  libgomp/testsuite/libgomp.oacc-fortran/host_data-2.f90
  cf2a27da59d3b7856348e6c1707bc944  libgomp/testsuite/libgomp.oacc-fortran/host_data-3.f
  63d16960cfabb69ecf97cf86440e8178  libgomp/testsuite/libgomp.oacc-fortran/host_data-4.f90
! e206d5fdc2a6366ff1ccbf7d55ab2b7d  libgomp/testsuite/libgomp.oacc-fortran/host_data-5.F90
! a5b81c66ce33d424a9fdf7b532217697  libgomp/testsuite/libgomp.oacc-fortran/if-1.f90
  9e79f04def374125ca7e12df1aa42e17  libgomp/testsuite/libgomp.oacc-fortran/implicit-firstprivate-ref.f90
  916dd1d0624fc62083348884a09e0cf8  libgomp/testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction-2.f90
  7c709c6d864edc4962556c34495e8b24  libgomp/testsuite/libgomp.oacc-fortran/kernels-acc-loop-reduction.f90
*************** ee9f4b7a6a45307457967dd800b60194  libgom
*** 102562,102571 ****
  a402f798a57907e7674086319cffb22a  libgomp/testsuite/libgomp.oacc-fortran/par-reduction-2-1.f
  e454fc34a070199f0efc5d93f4b2f680  libgomp/testsuite/libgomp.oacc-fortran/par-reduction-2-2.f
  afd3ef6ee5d490af92f835aae7deb0c0  libgomp/testsuite/libgomp.oacc-fortran/parallel-dims-aux.c
! 3cbc2ceb34c812be6e5994f28cb55d56  libgomp/testsuite/libgomp.oacc-fortran/parallel-dims.f90
  80c95fdc50d30ca6b6e9a656a3dee888  libgomp/testsuite/libgomp.oacc-fortran/parallel-loop-1.f90
  4f567e851fc41037bc345363da01face  libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90
  d9e4b9d5b65e13485be9e4fccd4825fd  libgomp/testsuite/libgomp.oacc-fortran/pointer-align-1.f90
  080a98cbed388ca018c933fd53e1e88d  libgomp/testsuite/libgomp.oacc-fortran/pr68813.f90
  ba279397e9aceb22ea58f656fd6bcd9f  libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
  df66384433cd85d840c96ce3afcb8a18  libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
--- 110732,110742 ----
  a402f798a57907e7674086319cffb22a  libgomp/testsuite/libgomp.oacc-fortran/par-reduction-2-1.f
  e454fc34a070199f0efc5d93f4b2f680  libgomp/testsuite/libgomp.oacc-fortran/par-reduction-2-2.f
  afd3ef6ee5d490af92f835aae7deb0c0  libgomp/testsuite/libgomp.oacc-fortran/parallel-dims-aux.c
! 7b7ca6e1aebdb69d5fac63281ce29385  libgomp/testsuite/libgomp.oacc-fortran/parallel-dims.f90
  80c95fdc50d30ca6b6e9a656a3dee888  libgomp/testsuite/libgomp.oacc-fortran/parallel-loop-1.f90
  4f567e851fc41037bc345363da01face  libgomp/testsuite/libgomp.oacc-fortran/parallel-reduction.f90
  d9e4b9d5b65e13485be9e4fccd4825fd  libgomp/testsuite/libgomp.oacc-fortran/pointer-align-1.f90
+ 44f8a509f2fd0cfeb29b0f1d20ae798a  libgomp/testsuite/libgomp.oacc-fortran/pr106643-1.f90
  080a98cbed388ca018c933fd53e1e88d  libgomp/testsuite/libgomp.oacc-fortran/pr68813.f90
  ba279397e9aceb22ea58f656fd6bcd9f  libgomp/testsuite/libgomp.oacc-fortran/pr70289.f90
  df66384433cd85d840c96ce3afcb8a18  libgomp/testsuite/libgomp.oacc-fortran/pr70643.f90
*************** ab1bef1451508c50b6d75e5790e61c2e  libgom
*** 102578,102590 ****
  57178f0c49f9adc4befee9c7b93d77af  libgomp/testsuite/libgomp.oacc-fortran/pr96628-part1.f90
  0713d6f197e69942e0bf3ce291d92c25  libgomp/testsuite/libgomp.oacc-fortran/pr96628-part2.f90
  b67bfba76f88f8ae8281c1e2e381706a  libgomp/testsuite/libgomp.oacc-fortran/print-1-nvptx.f90
! 0d158804782b227527d9331c06d5cac4  libgomp/testsuite/libgomp.oacc-fortran/print-1.f90
  ac9e80c7d1eb2f0ec65ce5a9226fb1d2  libgomp/testsuite/libgomp.oacc-fortran/private-atomic-1-gang.f90
  8d0523f7afaa77909cc566ebb2000f86  libgomp/testsuite/libgomp.oacc-fortran/private-atomic-1-vector.f90
  1c3ea6cf8b3fdbaaca48eede6a78b377  libgomp/testsuite/libgomp.oacc-fortran/private-atomic-1-worker.f90
  a2a630debffe26086dcf2269428bc680  libgomp/testsuite/libgomp.oacc-fortran/private-variables.f90
  08b06d21055c0ae650695af3186e447b  libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-1.f95
! 7676ae962c437a7b2e5a714c64aeb736  libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90
  c8960b2d870263545f61c78baeb03c7b  libgomp/testsuite/libgomp.oacc-fortran/pset-1.f90
  0094f0ea35e805d38b98b9fc1df88e12  libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
  97e65050d6226da060e95c2fb1985e9d  libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
--- 110749,110761 ----
  57178f0c49f9adc4befee9c7b93d77af  libgomp/testsuite/libgomp.oacc-fortran/pr96628-part1.f90
  0713d6f197e69942e0bf3ce291d92c25  libgomp/testsuite/libgomp.oacc-fortran/pr96628-part2.f90
  b67bfba76f88f8ae8281c1e2e381706a  libgomp/testsuite/libgomp.oacc-fortran/print-1-nvptx.f90
! d09acc02b3ee700aec282c0904706dde  libgomp/testsuite/libgomp.oacc-fortran/print-1.f90
  ac9e80c7d1eb2f0ec65ce5a9226fb1d2  libgomp/testsuite/libgomp.oacc-fortran/private-atomic-1-gang.f90
  8d0523f7afaa77909cc566ebb2000f86  libgomp/testsuite/libgomp.oacc-fortran/private-atomic-1-vector.f90
  1c3ea6cf8b3fdbaaca48eede6a78b377  libgomp/testsuite/libgomp.oacc-fortran/private-atomic-1-worker.f90
  a2a630debffe26086dcf2269428bc680  libgomp/testsuite/libgomp.oacc-fortran/private-variables.f90
  08b06d21055c0ae650695af3186e447b  libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-1.f95
! 952cf19c9f437fe5bca60825d6e099a0  libgomp/testsuite/libgomp.oacc-fortran/privatized-ref-2.f90
  c8960b2d870263545f61c78baeb03c7b  libgomp/testsuite/libgomp.oacc-fortran/pset-1.f90
  0094f0ea35e805d38b98b9fc1df88e12  libgomp/testsuite/libgomp.oacc-fortran/reduction-1.f90
  97e65050d6226da060e95c2fb1985e9d  libgomp/testsuite/libgomp.oacc-fortran/reduction-2.f90
*************** e8a3245c095430c8ef2413afe2ee4c48  libgom
*** 102613,102631 ****
  1ee538b1d8c3361fa5c71fc8cac2aa7a  libgomp/testsuite/libgomp.oacc-fortran/update-2.f90
  1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
! 6093e9d697987434cc9d843eba99b2f5  libgomp/work.c
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! 706d5d5cbb45de74765cb33dd44a47e2  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
! 73876271d63c0a1714fd605cb5898efa  libiberty/Makefile.in
! c68dbf7834af4281ebd84caa3fd54680  libiberty/README
! 6775ab372c166a5b526d8a6478564f62  libiberty/_doprnt.c
! 9b3892c9c637349b5fb1317991969b58  libiberty/acinclude.m4
  d1955a5319e9f2bf4d714152f8da1d1a  libiberty/aclocal.m4
! e60c2e7c5dcdd19510066c13f1a527d3  libiberty/alloca.c
! 17c8aa894195eee0ae35de1c1fc462c1  libiberty/argv.c
! 096af09ad0e47000226805186409e780  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
--- 110784,110802 ----
  1ee538b1d8c3361fa5c71fc8cac2aa7a  libgomp/testsuite/libgomp.oacc-fortran/update-2.f90
  1d2e2e1ab9f0d92351625f2c5661dbb8  libgomp/testsuite/libgomp.oacc-fortran/update-dt-array.f90
  989e6535f20045be32e9e91643a0b08f  libgomp/testsuite/libgomp.oacc-fortran/vector-routine.f90
! b409f1646a05495747142fadf3690e0c  libgomp/work.c
  99c2e5e712b990ee07be10f53e41f3fb  libiberty/.gitignore
  a916467b91076e631dd8edb7424769c7  libiberty/COPYING.LIB
! ad10efcdfd376073def5a886de73c32f  libiberty/ChangeLog
  347c31392973de6a4872d540c1718dc1  libiberty/ChangeLog.jit
! fa93bac944903a228f11c248e20425c1  libiberty/Makefile.in
! 8b93d0e0369daed24e2260ccfd102eb3  libiberty/README
! 2e7e6912ce00d3b1be48f76244ccba17  libiberty/_doprnt.c
! 90dda4428f9bd64a6f128320155f072a  libiberty/acinclude.m4
  d1955a5319e9f2bf4d714152f8da1d1a  libiberty/aclocal.m4
! 44755c536efb9b79a3ebdfe6b0da5904  libiberty/alloca.c
! 0719d1feaeba74c59dba7effd3ce40af  libiberty/argv.c
! 71349af8f7e4bbc4105b5866c767f82d  libiberty/asprintf.c
  a16ea056b95fd70c21333db132da14ff  libiberty/at-file.texi
  c34119797a13e71989722851c14b711b  libiberty/atexit.c
  ab8d4cd68aa4892e2318d2c71864cc56  libiberty/basename.c
*************** a707d2e5daa09d204d4441e8713048ca  libibe
*** 102634,102643 ****
  12b384d6fbe8db3b1da132f566043423  libiberty/bsearch.c
  0ce04768d60b33d4951e6542d1bcbdac  libiberty/bsearch_r.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
! 5bd055836a440051d7c561a9f591ecbb  libiberty/calloc.c
! 2b8a5f1ac12ba949e9ab36ffa80d19c4  libiberty/choose-temp.c
! 27c6e6c8f9aec70615c9a83d7bd10a3a  libiberty/clock.c
! 1ce244a479c8df2d95d0265eb5aa36f0  libiberty/concat.c
  83565a31c7f296b3013daf383cd03ee9  libiberty/config.h-vms
  c490c2d0e84347da40a272a019f71dd4  libiberty/config.in
  4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
--- 110805,110814 ----
  12b384d6fbe8db3b1da132f566043423  libiberty/bsearch.c
  0ce04768d60b33d4951e6542d1bcbdac  libiberty/bsearch_r.c
  4a0acb9356a52f3bcfd67efa26997b58  libiberty/bzero.c
! 4334ddc8cd0c2303bd7b4d61a8dd0e62  libiberty/calloc.c
! d6d5251c128531e3e89cf7d3e7bd6d67  libiberty/choose-temp.c
! 31b4ef80fdaaf75415a5a11ae2cf2b01  libiberty/clock.c
! 4ee9e1c0eb98e5478ae7b70f7840afba  libiberty/concat.c
  83565a31c7f296b3013daf383cd03ee9  libiberty/config.h-vms
  c490c2d0e84347da40a272a019f71dd4  libiberty/config.in
  4004fdcde347fda58406b4b84a995c66  libiberty/config/mh-aix
*************** c490c2d0e84347da40a272a019f71dd4  libibe
*** 102645,102864 ****
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! a770c7ae68d8072d46889a4c563e27a6  libiberty/configure
! b34fd9b24ccc56cf3cf9e7f7e0e738c8  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
! ec178f616a88f78dd09043a6f541a9d5  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! 837a0199be34f75b293d2a502ee140e9  libiberty/cp-demangle.c
! e82b2e4799197a4dd07efcf7f0068a7b  libiberty/cp-demangle.h
! 557275f8e42135634db2d3816f23e0ea  libiberty/cp-demint.c
! 0126c6f796b98d46ae35493b8afcbc0d  libiberty/cplus-dem.c
! 0564248d12a746627bb1f0fcb8233955  libiberty/crc32.c
! b640f603e24f034a130edab72d66120c  libiberty/d-demangle.c
! 74a4cf267739f54e9bd7b151eed8c7f5  libiberty/dwarfnames.c
! 365f29b05c3b5d2c2e4a7be512c5d28c  libiberty/dyn-string.c
! 9e1b42716a2eeffb2a7bba67ad018098  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
! 7ca7abd4925e4a3168280190693ef7e2  libiberty/fibheap.c
! 31ff352e16bb8b9e4dd1d83729530cc1  libiberty/filedescriptor.c
! cceb69354c78965a2ad474554fb140ad  libiberty/filename_cmp.c
! afb8683d18c3db8e96c78969af5d4f00  libiberty/floatformat.c
! d50dc6a32388527811552eb6cd47c3bc  libiberty/fnmatch.c
  145debe2f28f470878f95b1255f5537c  libiberty/fnmatch.txh
! ee2460d535f3823804b37ac6b205ca01  libiberty/fopen_unlocked.c
! cd2f41c11d564ff1394a2bc8e0d39bd9  libiberty/functions.texi
! c3425bc405194034269d6dfff0b476c7  libiberty/gather-docs
  754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
! 264cc93c3a7a678d6eb94bb21066b28b  libiberty/getopt.c
! 5b94367e9dc54f4ad7697f7dfaa60c8b  libiberty/getopt1.c
  bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
  5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
! 31504633fe71392974417954436ae3f7  libiberty/getruntime.c
  0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
! dd22cf8c0971caed5212fee0e22a7fed  libiberty/hashtab.c
! 5f27e67265fa97fadf8c012d6b7ed5b1  libiberty/hex.c
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
! 56e586a35ad1cf5193d77dda05fd87c1  libiberty/lbasename.c
! d190cc08ed81c07f25658d29e7cf6a16  libiberty/libiberty.texi
! 4ba2bddf4490b0b50ae4dc8cf44619da  libiberty/lrealpath.c
! 47df04004b36f9b2058215f466adbcac  libiberty/maint-tool
! 7d9e677f5e8379749867382f212ec9ae  libiberty/make-relative-prefix.c
! f18138afdb89eb95c4aa7258af4bdefd  libiberty/make-temp-file.c
  80367d734a974bd32e9ebc370dedd2e7  libiberty/makefile.vms
! a1a2c1a59a9f0e91476ebd3df4bf8f63  libiberty/md5.c
! de9bd20436bf2cb64d8c374c110ce315  libiberty/memchr.c
! 33320d312ab390ca0eb5c43c9e349d57  libiberty/memcmp.c
! c90c2f09bdcbd65b4732a4be25a56d12  libiberty/memcpy.c
! ca5114f2170ca0be79a0bad1dfebf7d0  libiberty/memmem.c
! 99bfeaeb76e8e725dd8766f33810ccb1  libiberty/memmove.c
! d40c9e55ba2af2ae1ef02932bf72ae10  libiberty/mempcpy.c
! c44adc5ac09bdc782a8e13086ffa9367  libiberty/memset.c
! 67cbee8f1f378be1e8993dbb75a92c65  libiberty/mkstemps.c
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
! db43b0518a5e0ef863edd06940486b6f  libiberty/objalloc.c
! f631c697f6c13033f9ae6df0045a3205  libiberty/obstack.c
! 26ef02d458c958c1599de12b02c559dc  libiberty/obstacks.texi
! dd4a8f32bdb93b45740af9cdc2a93413  libiberty/partition.c
! 79e9480511026e3180e145c60261f140  libiberty/pex-common.c
! 2f012e9a378f78cdbffe37d04bc43fd5  libiberty/pex-common.h
! aaf2eb83659034359f15a5b644377e9d  libiberty/pex-djgpp.c
! f896e1354485c7becf671197d8cd5cb0  libiberty/pex-msdos.c
! 306c8b838744d5f9222d3fc158d9d3ce  libiberty/pex-one.c
! c29772ec41e7e8ab4a8cc541a68792c4  libiberty/pex-unix.c
! 68a448b9a9a49911751193e9120455cc  libiberty/pex-win32.c
! e8b700224dfe162a5e3f449db6f18526  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
! 651c794393082f9a8fda27efa35484c6  libiberty/physmem.c
! db3f1c9a897172a5eb09f900f77c8854  libiberty/putenv.c
! 94f22680349b4ae73ad658495d2eb542  libiberty/random.c
! b3f964eb854e29420c5eec3c098a9e3f  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
! 324131745b683306791ac4909aee6434  libiberty/rust-demangle.c
! ed24fd55759858859e8feb2a33bdc7c7  libiberty/safe-ctype.c
! 39034db758acb200b85b163dd9471fe8  libiberty/setenv.c
! 0ae73a22ffd14e6bf4b2fa0952138c48  libiberty/setproctitle.c
! 692733a917263fbe6020abcbcd794c23  libiberty/sha1.c
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
! 11cc73d71970e5461632e45ff27a3e5e  libiberty/simple-object-coff.c
! 3d357f010f0064e322ba47b4a0f19ccd  libiberty/simple-object-common.h
! a2473ab822d5d4c9e6b8deec974adf92  libiberty/simple-object-elf.c
! 08f858c0c13698d2ed88970324c062b3  libiberty/simple-object-mach-o.c
! 6d35a3a532f8174e879592ff4f5fa2e7  libiberty/simple-object-xcoff.c
! e383eb44fa28c6bed26aac5759bdf336  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
! 1674eb5b497afcf625132485adc69c57  libiberty/snprintf.c
! 16f06ed9225a198796939548c217de81  libiberty/sort.c
! 94f6aa7fa517f83124427fbc73c70b6a  libiberty/spaces.c
! 7b4ba30e3f86fb756cbec0a13a1be8d7  libiberty/splay-tree.c
! 5321e2c17db86abac5635b9f397c8266  libiberty/stack-limit.c
! 1ddeff770a27d04310664882d7ac8348  libiberty/stpcpy.c
! 6ae648abc5ed47faf4a39ba693956b4b  libiberty/stpncpy.c
  0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
  13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
! 9f681e91439ac44c9df8e1b1deef33b5  libiberty/strdup.c
! ccad70af73664dbb198eb66bbea8659a  libiberty/strerror.c
  2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
  cc534c2ea00ea0b5e49ba8f61c6e467d  libiberty/strncmp.c
! c571844e422b5235f01be355b52930d6  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
! f214096086d1747033efa505022dd89c  libiberty/strsignal.c
! 4f7ee7afbc48687f2bb8436658acff27  libiberty/strstr.c
! d49a67b65f88c81556a66cb2096e0881  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
  9968bbb75dc08ce768389912954f4348  libiberty/strtoll.c
  26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
! a49af5847793a95c3ed330eaf3100e9f  libiberty/strverscmp.c
! c403240df8eb2f15dcb54e1fbda1800e  libiberty/testsuite/Makefile.in
  cd08c8fa8cc7f327c16a8eaab09fa56b  libiberty/testsuite/d-demangle-expected
! 20fb76e95e5a06b30afb92c55476736a  libiberty/testsuite/demangle-expected
! 4c4a58a1943dc8879139a1f6a7f544b2  libiberty/testsuite/demangler-fuzzer.c
  3a9dd86d23e50ad55b3af57e17c41a44  libiberty/testsuite/rust-demangle-expected
! 43f8852fec273efda3822f78a58ec725  libiberty/testsuite/test-demangle.c
! 3307d8bfa563dda02b555c6677c84b65  libiberty/testsuite/test-expandargv.c
! ffd3e827beeb422102b236f215f50a5f  libiberty/testsuite/test-pexecute.c
! 01f34496c6129300ad166783cb0702ab  libiberty/testsuite/test-strtol.c
! 9296d2cafd1406fd13772cd9408a91d0  libiberty/timeval-utils.c
  6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
! 7e25426ada2988c06731a8d72c381048  libiberty/unlink-if-ordinary.c
! 2af5d944ce8b9b5c1a83524c6f25c5cf  libiberty/vasprintf.c
  8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
! 122f580d85a41e1680302a0c29628ce8  libiberty/vfprintf.c
! 128dec0a471ee05d31364c3928c88704  libiberty/vprintf-support.c
! cc3e05f697f34851d2fc646d1ae95b59  libiberty/vprintf-support.h
  28af0a1bf222ed2a5a87d9e170ef4a46  libiberty/vprintf.c
! a62af7c5cdbabe844e927da6014c7ef8  libiberty/vsnprintf.c
! 9e5bb4e526d2a56e6e2683ae92cd7ce3  libiberty/vsprintf.c
  3b03f409fd38f9d543870f21e6d7f5c8  libiberty/waitpid.c
! 075c0e235ca817e651d8f02a5afcb400  libiberty/xasprintf.c
! f32b581d10bcc500277b6f4b4f923a4e  libiberty/xatexit.c
! ff0d19b0532b36b2f5c4d111e22b43ff  libiberty/xexit.c
! 43cb7999265798c60bd0b50a50a9732a  libiberty/xmalloc.c
! b2c289eb14e9197dcad172f3acba12b7  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
! 212d4847bfdeadb110f63393e845a968  libiberty/xstrndup.c
! 51f9ff1eae01d3f75924518629c63c82  libiberty/xvasprintf.c
! 2b4d3301e55123036ec40d2c182b1920  libitm/ChangeLog
  a9df0726c501bf71a46f426068e8fc9f  libitm/Makefile.am
  06bb67375770bbbe550b5708624ed9d8  libitm/Makefile.in
! e73ee635a6e93e055b58fc08cecf2d48  libitm/aatree.cc
! c0bb3c9b51e85e0b2a886dad6a2062b9  libitm/aatree.h
  724846b555020a9e223c8322082e775a  libitm/acinclude.m4
  c98774b09e6486e6a0818631af2fd088  libitm/aclocal.m4
! 621135254eff51b7c1001d9e0d67506f  libitm/alloc.cc
! eda3a6b8555a6eb63d893eef15d19087  libitm/alloc_c.cc
! ce08e810436f7fe31d5663d437a9b35f  libitm/alloc_cpp.cc
! bc255794bc42bec523873230eb601b3e  libitm/barrier.cc
! c022fcd83e59219b4aefb79bbe0b3f91  libitm/beginend.cc
! 16dcf09e3bd3060966a254d7054b2bc9  libitm/clone.cc
! ec0f28789019c28c15cc50e2da4754fc  libitm/common.h
  05ea82fd12c7b4a030b6310b862ff47d  libitm/config.h.in
! db5db45057f499b476053110101bbd11  libitm/config/aarch64/sjlj.S
! 5e19922856a766111a2163b5a083644a  libitm/config/aarch64/target.h
! 2da58be55c3745af53384b617cc0698c  libitm/config/alpha/sjlj.S
! 20890f1ab6cce432340fd918848c8890  libitm/config/alpha/target.h
! 96534d2babdc8ba4b8d803cd5daed912  libitm/config/arm/hwcap.cc
! 5c2e8e6e4a7c03a3fe7d993d56d2683c  libitm/config/arm/hwcap.h
! f9a5e16570e967102033b9002459ad90  libitm/config/arm/sjlj.S
! a85dcc6f0194bf162a8f01a8e122b4cb  libitm/config/arm/target.h
! 2daabd5a6b2be12fcbafb3d1093bf9ac  libitm/config/generic/asmcfi.h
! a6c473abc50a036880bec27c566d36b8  libitm/config/generic/tls.cc
! e3add69e8455cfd0ee5c33092581dfcd  libitm/config/generic/tls.h
! 84d1b2cb8bb880938c7b888a61966abf  libitm/config/linux/alpha/futex_bits.h
! 17a0901312b9f3edeae96df0fa31d19e  libitm/config/linux/futex.cc
! a5c49954069e32a0660ef41e129df252  libitm/config/linux/futex.h
! 176b50688b8d388a9593d6e6078b53f0  libitm/config/linux/futex_bits.h
! ac2d6dde96ef71792443bd2ebfb4547c  libitm/config/linux/powerpc/futex_bits.h
! c3339f6274521b04d10e1def9231b115  libitm/config/linux/rwlock.cc
! 6a3effc01798ac06e0ab1361d07c8d75  libitm/config/linux/rwlock.h
! f03645bec31d81133cb6bda311a474dc  libitm/config/linux/sh/futex_bits.h
! 7df76aab36f3c8d816b1a0556f1eae87  libitm/config/linux/sparc/futex_bits.h
! 679c9341ba325009bf37e2f6b486de09  libitm/config/linux/x86/futex_bits.h
! be3944a5172dd9631ef683192326beda  libitm/config/linux/x86/tls.h
! 1fe611710586b1dc5f1c42c23368fb8a  libitm/config/posix/rwlock.cc
! 714288c8703d7273474e8fbe0a662a20  libitm/config/posix/rwlock.h
! 95abcc7d0756291dcccc099937ad7a8e  libitm/config/powerpc/sjlj.S
! 53d532b0c510e95d1fc760f565ccc564  libitm/config/powerpc/target.h
! e156596b3261f3fbf134e9974e8c2301  libitm/config/s390/sjlj.S
! 9c0385b0c6f56403e7855386ab37bd1f  libitm/config/s390/target.h
! fcf2c1ea1ba9b49728d748819499baf4  libitm/config/sh/sjlj.S
! 514c67c2b5024fca3e57832b1095469d  libitm/config/sh/target.h
! 3c22eff1daa0e3ce3b1949384d11dfea  libitm/config/sparc/sjlj.S
! a9e4824b547baa3d04889a43c598ae28  libitm/config/sparc/target.h
! d76ecb405e4863bda26db7d427f8e995  libitm/config/x86/sjlj.S
! 69924bb1f68cc529836876444c354290  libitm/config/x86/target.h
! 71753a31a5acfdfd11ed6244d84f4e7c  libitm/config/x86/x86_avx.cc
! 5354c1dcccbc3e6cae425f96dc2b315b  libitm/config/x86/x86_sse.cc
! 70a394c42a190dcc937e1898cda6357f  libitm/configure
! 2b5c2ef23f3931ae16e19bae7b9810d1  libitm/configure.ac
! caa8ffd24eea056dabeaac91e8d1ba8c  libitm/configure.tgt
! fd380f0eaa4841b1f8185e3d4f8b1ff1  libitm/containers.h
! 01980d1244f27e09b91b774c38e34bf0  libitm/dispatch.h
! 6191540cdd3efc4f19822744c765842c  libitm/eh_cpp.cc
! b9157df74e562da678e0ad3e8eb5d1dc  libitm/libitm.h
! d3032fc198e2100f4f07a0e0715c52eb  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
! 88925f6e4d09e1e09839f2b5b5ae1bf6  libitm/libitm.texi
! 7f163721921f4c8bd804d6e5836e11af  libitm/libitm_i.h
! 42a035b35cc2c9dd5a4edb50ad8bc88e  libitm/local.cc
! b58dc2ffc03fc5ea09407524ad91891e  libitm/local_atomic
! dbdecee02bbf06b38ac7439afac12baf  libitm/method-gl.cc
! 4c8e97caf3c2d67396bb16487707c9ad  libitm/method-ml.cc
! a703879e30fbb0a837adac2155bdb287  libitm/method-serial.cc
! 7985e1dfce83fce43249c20f90cc5c56  libitm/query.cc
! 4d9e176aa48264a9841b32d07177a771  libitm/retry.cc
  4835ec70e1fbcd9acd3c280c0060afa4  libitm/testsuite/Makefile.am
  d4d9b9513817c7a7ed3b32f016b07c90  libitm/testsuite/Makefile.in
! 88850c9ff315083f74a05c36039af35c  libitm/testsuite/config/default.exp
  9ab92f2310c96121666b692e1660d24f  libitm/testsuite/lib/libitm-dg.exp
! dc74f9049c1c5e5ba706ccd9a852f0f0  libitm/testsuite/lib/libitm.exp
! 43bb97d36e4de4225a3ca877a76e95e4  libitm/testsuite/libitm.c++/c++.exp
  11785412cb94b04ecc293453486ad223  libitm/testsuite/libitm.c++/dropref.C
  d806946f2845368f69a6513f60b085d2  libitm/testsuite/libitm.c++/eh-1.C
  4d185e0f675cc4954831fb956401121c  libitm/testsuite/libitm.c++/eh-2.C
--- 110816,111041 ----
  044204f5b4bcac5eae2face0602129ae  libiberty/config/mh-fbsd21
  904bdcd9daf97fa55a9ca8901ffe7435  libiberty/config/mh-openedition
  38e76da568ab25260754fdb9d5080513  libiberty/config/mh-windows
! 93e606949801616e6b04a7dd21b1e078  libiberty/configure
! f4d2cab55eac7f25873746d178a3723f  libiberty/configure.ac
  5824bd0f9be9f4fa74bb3bdc7fd9431c  libiberty/configure.com
! 39e3cd5bcdfdcacf41ece5dcaeaffd3d  libiberty/copying-lib.texi
  fe053283d3559af3ec5cac45f8ead009  libiberty/copysign.c
! ad436677a85294f25c0972c609780705  libiberty/cp-demangle.c
! 845b47bee5b134105fe78243e64f8238  libiberty/cp-demangle.h
! 2ff589643a49c5f3328c3bc5e5e999f0  libiberty/cp-demint.c
! 5f0415b8708bf14622dd3485857bb4ad  libiberty/cplus-dem.c
! 8001912504a55a68e26de71abbe57f1f  libiberty/crc32.c
! a5f990c014737c78c93a12c002522a84  libiberty/d-demangle.c
! f1988e114a1db6d4b030c569023491d5  libiberty/dwarfnames.c
! 043f7d9118e54724d86a7cc47f28bc86  libiberty/dyn-string.c
! 6eee7971d98f57101bf8c29943bf96cd  libiberty/fdmatch.c
  0c2635175b975823b40980974dfc2110  libiberty/ffs.c
! 16696589fa7896619837f522393e13cb  libiberty/fibheap.c
! c77db806859dec521d5c35ee35b98317  libiberty/filedescriptor.c
! 4532c51f0b40ce572925c21e489a8682  libiberty/filename_cmp.c
! 2b8372952e717d670aed49365a098c76  libiberty/floatformat.c
! 2eea8bf4771250437ed62d5b618b6d61  libiberty/fnmatch.c
  145debe2f28f470878f95b1255f5537c  libiberty/fnmatch.txh
! 18055db8cf11eff88a6d0aaeaf3cd0e7  libiberty/fopen_unlocked.c
! 75ed047e84b4ed7b2d4c9fcb6cd2c955  libiberty/functions.texi
! 251a0a4415cc6be079eeb381b7bc7cc4  libiberty/gather-docs
  754c5ef42440c5d1b62146174a6636e4  libiberty/getcwd.c
! d83c487af1b9bf2cf01dc35bb32c3d5e  libiberty/getopt.c
! 0545bc74ed4f518580fd483387b939bb  libiberty/getopt1.c
  bb0043d92c716691cc17b80c845c336b  libiberty/getpagesize.c
  5e520e600636a692f52e62dcfb01921c  libiberty/getpwd.c
! 04836585c6d16e93cf0cb16f1f283c2d  libiberty/getruntime.c
  0c70ad1e35bb090b52ed593865025741  libiberty/gettimeofday.c
! 7f634440f37379d2607d166f8529ab44  libiberty/hashtab.c
! 4136f30b6dd85c6a35ba943c05ab0247  libiberty/hex.c
  4d485e7735be430b22aea0abb4938e26  libiberty/index.c
  9d0471286f21d9027bbf1b7c67b87856  libiberty/insque.c
! 5b670a3fe03f92d1cd9b620d26e60df8  libiberty/lbasename.c
! c2214d5029ebe9a199f5da09322b8b83  libiberty/libiberty.texi
! 0b0a104ef589eafd7739503ad20d6c89  libiberty/lrealpath.c
! 1edcc0269c1d820e125147269153ed9b  libiberty/maint-tool
! 32ba19f659818e81de84daee4df7df33  libiberty/make-relative-prefix.c
! ee01c98526649b3e9cc0a5c90bb87ec9  libiberty/make-temp-file.c
  80367d734a974bd32e9ebc370dedd2e7  libiberty/makefile.vms
! 0a0d7b46e25ebf6c0a497c7c40bfc5a1  libiberty/md5.c
! 5b9d8d3532e276e22b798481bdcb3ec3  libiberty/memchr.c
! d2f8420243d7223cc896b7a6308fd19a  libiberty/memcmp.c
! 873c437999202225c99e2039eb9896ce  libiberty/memcpy.c
! 1d5bf272af5562f594c032be1c233c54  libiberty/memmem.c
! 0d7465662f3756716c6dcdd1988940e5  libiberty/memmove.c
! 436f8c2b0f281596e35a0c2251885c6b  libiberty/mempcpy.c
! 5f0eb20e9ed4d7e6c2eb9d1baf4d9dc9  libiberty/memset.c
! 7fb70ed4b9e11ed126ad206dc7546b21  libiberty/mkstemps.c
  7897e43bedd2def4beb6eb73003efa68  libiberty/msdos.c
! 7d0c64a87e285fba6e50f953a3c766e6  libiberty/objalloc.c
! 22969a431ebe7d8651b6d9109b43eac0  libiberty/obstack.c
! 60e853e97e156d94dfb6374f701b99ab  libiberty/obstacks.texi
! 40f4b6b6b3151b7647375c19a25b576d  libiberty/partition.c
! cdac5bfcf617fc3b61e4746c15e44348  libiberty/pex-common.c
! 6441b2339d105da726bbaee401e3eca1  libiberty/pex-common.h
! 54d145106bee4bb054c9c469d58e92e3  libiberty/pex-djgpp.c
! bfc6e9cdf8c1c0e603edc944665b7e38  libiberty/pex-msdos.c
! 2213c4ccd8295d22c686b4a3ceed1985  libiberty/pex-one.c
! c60c56338c18f411a016acca2994fb3c  libiberty/pex-unix.c
! 86454c68c4555c3d83b2bc4aa34ed6b7  libiberty/pex-win32.c
! 15eaaf340d513e83299ee6e1f47290e9  libiberty/pexecute.c
  a6b1581efa83a4072727b38d6fef4230  libiberty/pexecute.txh
! f5c226c84382553801ca826a037f1bfe  libiberty/physmem.c
! 14985109a79e6bbb8476562c839c9b1d  libiberty/putenv.c
! e0e831dfd1e39695597e9f5c6951be8e  libiberty/random.c
! 35f0987ce9d1b57e37888a999d86c33e  libiberty/regex.c
  24eab3d83825c3be13549dc62b6d63d6  libiberty/rename.c
  74850488731148a9c9f410042144f37d  libiberty/rindex.c
! 2ac66d7c89518c894b81dcc44cfcc80f  libiberty/rust-demangle.c
! b1391987464ec90bd524e3986d0f49f5  libiberty/safe-ctype.c
! e7ff11c4ae7f1858d4cda405eadc20db  libiberty/setenv.c
! 27ce006e748b1de1aa3c3dba45ba2454  libiberty/setproctitle.c
! 964e58ab59b76450246e59f9e5f3e75a  libiberty/sha1.c
  284bb7a096480b355b75c337086220a2  libiberty/sigsetmask.c
! 920e1afa7ad8988735b7221db8ab709d  libiberty/simple-object-coff.c
! 3f5d339eff2073f4a2437949a3797dee  libiberty/simple-object-common.h
! 5e8924f926aca119e02158b8eb4d4b3e  libiberty/simple-object-elf.c
! a60ce9470fc2a0d124b0931b858b3265  libiberty/simple-object-mach-o.c
! 085b4b2948c994fb2b65894a77756e60  libiberty/simple-object-xcoff.c
! ace1a8709791ca05541a70dca2614837  libiberty/simple-object.c
  4863a11e04a2021af582edf86f156954  libiberty/simple-object.txh
! 842fc5284a9f4ae10e07a32837db3a4e  libiberty/snprintf.c
! c74c68e14f2a52e22ec6f46986bf9735  libiberty/sort.c
! b8c9aec2b4f999f85dac8e179177eeb9  libiberty/spaces.c
! 926744ab7902793a321ca898665a1ca1  libiberty/splay-tree.c
! c57c9f2741ba9c6a7bc9b3f0953c65c2  libiberty/stack-limit.c
! a11b33a8686db3f5ccd37c6a4bd08760  libiberty/stpcpy.c
! 6d82b6f5a775d5862296278a0bb40957  libiberty/stpncpy.c
  0c900e9180d750a26ac0ddb237151832  libiberty/strcasecmp.c
  13cce636dd9882e42c9fc5d607351f4f  libiberty/strchr.c
! 1be85270d5b20a93992f377f79fb68f0  libiberty/strdup.c
! 6b3173ebb186ea3f9110addc7af3cf28  libiberty/strerror.c
  2d414e20c053293f373a5306192db8f5  libiberty/strncasecmp.c
  cc534c2ea00ea0b5e49ba8f61c6e467d  libiberty/strncmp.c
! dc09da903ba2fbf8542eb20cfb975d3c  libiberty/strndup.c
  fd1435a5be24d2ed84909540998dd5d7  libiberty/strnlen.c
  5b0eb0000c746fc4c1854f00bb80b53d  libiberty/strrchr.c
! 35b19177b9109e894fcfae29a3a52778  libiberty/strsignal.c
! 118932d11e6b27c7319a4397c2b933f7  libiberty/strstr.c
! 1acfbd447cfacba2d9897d02c4a85df1  libiberty/strtod.c
  c9bd3841bbde6d8ae680f62523f00ab0  libiberty/strtol.c
  9968bbb75dc08ce768389912954f4348  libiberty/strtoll.c
  26196a9a92fae743a06d65f0e081084b  libiberty/strtoul.c
  d132d24f15fe05fe3614e69d6dbc65aa  libiberty/strtoull.c
! 77f00e471d911b2fabb259b4836f3b26  libiberty/strverscmp.c
! bf0bf4d60f2e19f5c44d270cb4e2efcc  libiberty/testsuite/Makefile.in
  cd08c8fa8cc7f327c16a8eaab09fa56b  libiberty/testsuite/d-demangle-expected
! 7fc6b942119d45c4948ac23d8605757d  libiberty/testsuite/demangle-expected
! 0be77adcf0ef7568788e6f022ce313a7  libiberty/testsuite/demangler-fuzzer.c
  3a9dd86d23e50ad55b3af57e17c41a44  libiberty/testsuite/rust-demangle-expected
! 3b5f35dfcce31e615b81396c0eaf60a0  libiberty/testsuite/test-demangle.c
! 1f62601e509eddb8449a07cda9549272  libiberty/testsuite/test-expandargv.c
! a0ba25cd5ef513f276fec55c2d8cb3dd  libiberty/testsuite/test-pexecute.c
! b920aebf9ff6c085da76433819e5622e  libiberty/testsuite/test-strtol.c
! 21eff4868466f1d159a0367f746cde9e  libiberty/timeval-utils.c
  6b513119d8c36af928821e8ec24265d7  libiberty/tmpnam.c
! 7e222259a8c92ec7c1e54e31c41c6a95  libiberty/unlink-if-ordinary.c
! 228f443632f68c94b2dd0f46bc12a52f  libiberty/vasprintf.c
  8e71982d77e91c0e3c57ca86c8a1b548  libiberty/vfork.c
! e87e91d13bd1464bc8cfcfaa7d34f860  libiberty/vfprintf.c
! 21878ca191d7acb8c2500a3c38ae0a01  libiberty/vprintf-support.c
! 7b472325136afdcbe5f98bfd27a8eca1  libiberty/vprintf-support.h
  28af0a1bf222ed2a5a87d9e170ef4a46  libiberty/vprintf.c
! 86983d6e70304b44becdec5e04c5c45c  libiberty/vsnprintf.c
! 47a5eb4a2d23666a1ce3a3c49cf081a4  libiberty/vsprintf.c
  3b03f409fd38f9d543870f21e6d7f5c8  libiberty/waitpid.c
! cac6a12c5b116c45c233df6b6f5db726  libiberty/xasprintf.c
! d4edda6072abc54e79d734250756816e  libiberty/xatexit.c
! 29c95fb38b676cb6913dd3a8e74794e9  libiberty/xexit.c
! cd1e88fd8c75b9aeaa5cce97a346e787  libiberty/xmalloc.c
! e52d95644dc6f186070f349a5903ca72  libiberty/xmemdup.c
  4746095b1b67693ab6e78ed72ead1235  libiberty/xstrdup.c
  6f774a92661ca4a067f1691a7925524b  libiberty/xstrerror.c
! 23f92e212cd9d0aa705c4291d15b1b1d  libiberty/xstrndup.c
! 3d5f811c995181239208230e3fb986c9  libiberty/xvasprintf.c
! dc067355701a6e793bbe1a57a9c422e0  libitm/ChangeLog
  a9df0726c501bf71a46f426068e8fc9f  libitm/Makefile.am
  06bb67375770bbbe550b5708624ed9d8  libitm/Makefile.in
! b0ef0123257ddf33dc8877750e9d701f  libitm/aatree.cc
! e7c6587f6f3621688ecc0d09a222a4f1  libitm/aatree.h
  724846b555020a9e223c8322082e775a  libitm/acinclude.m4
  c98774b09e6486e6a0818631af2fd088  libitm/aclocal.m4
! 4c4fccebd2492c4ccf90d003224a1a1c  libitm/alloc.cc
! 3e67b9cdbee184d14f792dacf6913dba  libitm/alloc_c.cc
! dd4adf2f3d418c54f5d17e59b0d8402f  libitm/alloc_cpp.cc
! 2c0934867d14e4b88584e8fc998a6dc1  libitm/barrier.cc
! 9a005a848aa4adebc70db312f6d2d2d4  libitm/beginend.cc
! 5ebb98566a5728d0ff291b3ae890770c  libitm/clone.cc
! 1ecaf6f44e84a5d3d76ca0e68618a5c0  libitm/common.h
  05ea82fd12c7b4a030b6310b862ff47d  libitm/config.h.in
! ab83f473ce5aee02735be9e4d6efd8d1  libitm/config/aarch64/sjlj.S
! 99762829f18169d04e89e31247700bc3  libitm/config/aarch64/target.h
! 722d50c584dee106e8caa681564e5eb6  libitm/config/alpha/sjlj.S
! 141b591a8c71a57136873688d086891c  libitm/config/alpha/target.h
! e0b1869a0c5ccf5236ade678219824d7  libitm/config/arm/hwcap.cc
! d32d6da20f795355b9d60218e8e974e8  libitm/config/arm/hwcap.h
! 6d072fefde7242d055aaeb92cf44146f  libitm/config/arm/sjlj.S
! 14ecd36c0f5a75fd21804270f6b46e0f  libitm/config/arm/target.h
! 6de2a8581387244f1c9d046841c2f965  libitm/config/generic/asmcfi.h
! 55ea9e2eeb45cc565d32d3eb4b814302  libitm/config/generic/tls.cc
! 52886d8b0cf1c2cda7f8d75aa693d2e4  libitm/config/generic/tls.h
! 10389ce2ed48d96a7cc8701e762c040e  libitm/config/linux/alpha/futex_bits.h
! da51f540e8247c8649b45167e3785d50  libitm/config/linux/futex.cc
! 4c044d8588d2ce46571a8b05e30b472b  libitm/config/linux/futex.h
! 44072eb66ff518d7e1707cabb99ae01b  libitm/config/linux/futex_bits.h
! e465fe4062d51e4e0713f924ac109bde  libitm/config/linux/powerpc/futex_bits.h
! cb8ea69dff54d4d939534aed508f5936  libitm/config/linux/rwlock.cc
! 96f6fdfc30910256e14ebcb2e985e23c  libitm/config/linux/rwlock.h
! 53127275c67eafcf232e5c8659352c9b  libitm/config/linux/sh/futex_bits.h
! 5b911ffbd4b321c339070e9bd539be4a  libitm/config/linux/sparc/futex_bits.h
! 36bfee2cb34d3906f5707f8647239ad7  libitm/config/linux/x86/futex_bits.h
! 3a7e1bd9787df0340a0ffbc158ee825f  libitm/config/linux/x86/tls.h
! 07041554ab3ac5ba5b556c9bc888ae0f  libitm/config/loongarch/asm.h
! 125215d4702f13415466a53ddcbed633  libitm/config/loongarch/sjlj.S
! 98fb590fb7ceaa8f57b671124f4a756f  libitm/config/loongarch/target.h
! bc3bc271fec65b1e93db3a845de388ba  libitm/config/posix/rwlock.cc
! f0094e662e7d8dd4090d2b3e85747d89  libitm/config/posix/rwlock.h
! 2555bb56ad54ce9740025d4cf5053fc6  libitm/config/powerpc/sjlj.S
! 751e666e3f333795261f27243992c642  libitm/config/powerpc/target.h
! e93096089071e865cf76d34e11a9ad5a  libitm/config/riscv/asm.h
! 6c191f27b626fe92459d2e3c1b73a06d  libitm/config/riscv/sjlj.S
! fc277cab789ba99ad5c6f883fc58b628  libitm/config/riscv/target.h
! 32f84567d81c709e6abafcc590211622  libitm/config/s390/sjlj.S
! 82db624747bbae28107fddae6e0a8cc6  libitm/config/s390/target.h
! 6e89c007fc715b69fe9e2ecb713d922e  libitm/config/sh/sjlj.S
! 2aa295ebf48d4ae6ddf88234787dbf68  libitm/config/sh/target.h
! da5634919bf40f7d69e6f37bb820f114  libitm/config/sparc/sjlj.S
! ad2d1c7d9df265e286acc99fe25c09ed  libitm/config/sparc/target.h
! 73a82c38f125d813015a668f1b040fd4  libitm/config/x86/sjlj.S
! 9bce82fd790d4633d1e4c1bc339b8031  libitm/config/x86/target.h
! 7e40c179f3ca8710391937c22df8dea3  libitm/config/x86/x86_avx.cc
! af40bf949d10b32e3905b5697fc638df  libitm/config/x86/x86_sse.cc
! b2af682e57859b8edd77f5ed16668bae  libitm/configure
! a4b514f0ad47cd5410f30099c73a2c18  libitm/configure.ac
! bca0c2e199a55f226407a834d8d03890  libitm/configure.tgt
! d3c04038acc1a42be3f3ead86551e0e1  libitm/containers.h
! 68025c5c42c305b8b7d2f4b08f7910f1  libitm/dispatch.h
! 5da5b705758c793173f8bee058aee611  libitm/eh_cpp.cc
! 8932f57735cf74b619c31912006a8974  libitm/libitm.h
! 8dd1a8aa042fa12b383946aa4ec1ec9c  libitm/libitm.info
  0c43820b921ecdbe9d98f068100e716a  libitm/libitm.map
  ea467d7117853d139bb288ab75261139  libitm/libitm.spec.in
! 71434a0441eb61041d10daf560a5219d  libitm/libitm.texi
! 12aff78d046758b25355156992eedc3e  libitm/libitm_i.h
! d862dd144f0ffe8e5ef5a8db2c5a8161  libitm/local.cc
! 207b70ed7239a24d8e6d16a0c1948172  libitm/local_atomic
! 2a955ec5327c8c844134a536966ed9b4  libitm/method-gl.cc
! f5a8f1f9eee47f55c5f1afca9fd4ef9d  libitm/method-ml.cc
! 5e0fe2bfeaae1ca844e4b3ac84f801cc  libitm/method-serial.cc
! 7a65ec798b533b49849e728709c4ac8f  libitm/query.cc
! 7bfa76de326bb983edd9fb51bbf2696d  libitm/retry.cc
  4835ec70e1fbcd9acd3c280c0060afa4  libitm/testsuite/Makefile.am
  d4d9b9513817c7a7ed3b32f016b07c90  libitm/testsuite/Makefile.in
! 59e5f26946889503f21fefa38349540e  libitm/testsuite/config/default.exp
  9ab92f2310c96121666b692e1660d24f  libitm/testsuite/lib/libitm-dg.exp
! 359b7dc62e4bd9e1ac9237f105da0611  libitm/testsuite/lib/libitm.exp
! 6e3415344d5dcb032bd568365bf9b7d1  libitm/testsuite/libitm.c++/c++.exp
  11785412cb94b04ecc293453486ad223  libitm/testsuite/libitm.c++/dropref.C
  d806946f2845368f69a6513f60b085d2  libitm/testsuite/libitm.c++/eh-1.C
  4d185e0f675cc4954831fb956401121c  libitm/testsuite/libitm.c++/eh-2.C
*************** b4e503ecfdccc9f13da8f73eeb6f23a9  libitm
*** 102885,103086 ****
  838bdb8846eac9161e3ffbe553049f2f  libitm/testsuite/libitm.c/simple-2.c
  7ecc8e520a5c494d159cb7571cca7cdc  libitm/testsuite/libitm.c/stackundo.c
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
! 827aae314af0cb1a41856a4973e45158  libitm/useraction.cc
! b6007e57947202cf48fe0c24317b69fd  libitm/util.cc
! 2efc406f8f39bd2c53ebfa0076deb281  libobjc/ChangeLog
! 890899e673f4a4b9936a49fd705523d7  libobjc/Makefile.in
! 81848b4e1479af80c64f39e3c24666aa  libobjc/NXConstStr.m
! 24647c970f57dc764e7822e326b18bfc  libobjc/Object.m
! 5a64fa8039ff9485f6ecd6dd44b93de4  libobjc/Protocol.m
  d5edaeee0d84e4305368367019952ba7  libobjc/README
  dbf36fc59f8e048201543aead57eb206  libobjc/THREADS
! 52e6eb0b55a660f30c6002c10276a273  libobjc/accessors.m
! 5337a24e08b947db760824604ed1364f  libobjc/acinclude.m4
  005cfc1ff705e51549970f72513c195a  libobjc/aclocal.m4
! d8a45922d6bdcde1424bafe7a76f2dfb  libobjc/class.c
  a9245d99d9418e18cecf891d7a93d664  libobjc/config.h.in
! 2665537bab5737c5050d2ee2916707a9  libobjc/configure
! d755bc9f0fec85f832122a131609ed69  libobjc/configure.ac
! a0dcbce9f557c39637b5821197acb444  libobjc/encoding.c
! 5bb2986d367f29dc504cb700d068ab4e  libobjc/error.c
! 62bee6ff7dc1553be131713ae31bde89  libobjc/exception.c
! 1775c9863e42845405a395f263416b36  libobjc/gc.c
! 99dfe1fccc910f972aff77f1d3d7e48e  libobjc/hash.c
! 3022730ca0c39b7870531771905d601e  libobjc/init.c
! 5fe0328ec98ca494d75928719acad37e  libobjc/ivars.c
! 74b90e821293affe3e14dfb76bec7791  libobjc/libobjc.def
! a3a5d6c66d0cd3dbf37d51be2e9c1d6b  libobjc/linking.m
! 518961e8236c89e291668b07133700f2  libobjc/memory.c
! cc4677cd9c00e4da8a21628767fa4455  libobjc/methods.c
! 2a50c00e186696d75656474f19248a96  libobjc/nil_method.c
! db0f2cf91b19514268f82185551d8071  libobjc/objc-foreach.c
  4758c47369f62786c0dcdf45f3397ff7  libobjc/objc-private/README
! 5c9a63d66ac1ba1e86cc17535c8d6258  libobjc/objc-private/accessors.h
! 7f223cd8c4826a01c2c00fc7e3c1db33  libobjc/objc-private/common.h
! 62b8a56932776f3e69b738594ba8e4b9  libobjc/objc-private/error.h
! 04c840acbf3b752248d9a6ee138f41b6  libobjc/objc-private/hash.h
! e57563e6d2f8e20ae85b4d569439de2a  libobjc/objc-private/module-abi-8.h
! 08570e829a9b4071ceb1fe8daa1c83c0  libobjc/objc-private/objc-list.h
! 9d0d8672bcf6387abcfd985469d50ec9  libobjc/objc-private/objc-sync.h
! 2c45018adc6158bf20cf3457da7a91a6  libobjc/objc-private/protocols.h
! 01519fe0bc2b684ff5718b245757d486  libobjc/objc-private/runtime.h
! 8ba6137c5bfe1790d9ae95407b8c7c44  libobjc/objc-private/sarray.h
! 1297f509435fe91b9c1cd5f84e0dbd23  libobjc/objc-private/selector.h
! 2bf191286747fda4ad638dee8591c405  libobjc/objc-sync.c
! ae49839b51e2779fb2325ee27ff2f119  libobjc/objc/NXConstStr.h
! 6c7e24c97b6b968f5d1c0874961c49ac  libobjc/objc/Object.h
! 8ff04bed32fc4ba6a20108a96c7167c1  libobjc/objc/Protocol.h
  6a0d7c25fa8ddefde53bbaf36eea5bdf  libobjc/objc/README
! ebe82af9326a8c9f872355834bf7ca20  libobjc/objc/message.h
! deb372178d10b50c7310a2df29f37c18  libobjc/objc/objc-decls.h
! 499d1adfb5b73e0051fa877b52502e72  libobjc/objc/objc-exception.h
! 92adde799ef8f733d86704d139d520b6  libobjc/objc/objc-sync.h
! a447fe9ac9b70dcea419963424756f7b  libobjc/objc/objc.h
! ee97fbe6079f13100b28b341b0420224  libobjc/objc/runtime.h
! de687fd31db43c6f9674aa43e0973ea1  libobjc/objc/thr.h
! a88a04db1a9eaec72b0a4dc56998acbc  libobjc/objects.c
! b53fe55892233fb1cfe23d0122a5ed1c  libobjc/protocols.c
! a30af7ca948eb564a2533132489a22b2  libobjc/sarray.c
! 6460e0de9fc2cf12b5f11a9e8c1c1f70  libobjc/selector.c
! 069f2fe8a2ae9b7e7187303013e644a1  libobjc/sendmsg.c
! 5e1cf5e279c3c84fddb5afd6ec6f7741  libobjc/thr.c
! b3e085411a6ffbbaa9c2a3ddfb2c5cf6  liboffloadmic/ChangeLog
! 99e2b0817f42c602b520261f7dee183b  liboffloadmic/Makefile.am
! a64a74f82774f355013471ad4dbe5014  liboffloadmic/Makefile.in
! ab5ae12a0dda7edadc0bd2be40ccff6a  liboffloadmic/aclocal.m4
! 7ec3176bc702ef637f22cbd5c6a47a94  liboffloadmic/configure
! 4284b81c40ea406b9b4fc868669f4710  liboffloadmic/configure.ac
! 278b4d0003cfa80aa2ea86bca2645fff  liboffloadmic/configure.tgt
! 1a7d44cf3f018d8ece62ac06721d8f36  liboffloadmic/doc/doxygen/config
! 52dfda67dd33b26088a9f109f60f448c  liboffloadmic/doc/doxygen/header.tex
! d9f2f4c553094b3d80fa440df8b98345  liboffloadmic/include/coi/common/COIEngine_common.h
! 983111852b0d74e6173bebd4e8e3ed73  liboffloadmic/include/coi/common/COIEvent_common.h
! 5a1ba864dc6e324db63f88aa9c436282  liboffloadmic/include/coi/common/COIMacros_common.h
! 76302b5fe50a1d0312267f2d306281b8  liboffloadmic/include/coi/common/COIPerf_common.h
! 509e76109df2f715b8291bfacede3390  liboffloadmic/include/coi/common/COIResult_common.h
! 01f69221561e11e471a7406e7511bbb4  liboffloadmic/include/coi/common/COISysInfo_common.h
! f8003f0c73440d3d906f35df97da31af  liboffloadmic/include/coi/common/COITypes_common.h
! ab8a94519bfb382c40efaf24609f813a  liboffloadmic/include/coi/sink/COIBuffer_sink.h
! 1ecfe0d1eac2996b0d3306be28fa009e  liboffloadmic/include/coi/sink/COIPipeline_sink.h
! 3de9a8b53d9be52c74d5f9386d54c5da  liboffloadmic/include/coi/sink/COIProcess_sink.h
! af5852624ff9358ad03d1c71905a6cc9  liboffloadmic/include/coi/source/COIBuffer_source.h
! 3816de330b73947b797b4ab1769ca44b  liboffloadmic/include/coi/source/COIEngine_source.h
! 626c413cf8098eaa5d0de38524c425aa  liboffloadmic/include/coi/source/COIEvent_source.h
! 4a7610d58e6b8f2c1d82c5d4d89e14d3  liboffloadmic/include/coi/source/COIPipeline_source.h
! 3869c12be2687416838fed3aa2bd6216  liboffloadmic/include/coi/source/COIProcess_source.h
! 60443b8e81e79ce6a6335de75c3883b0  liboffloadmic/liboffloadmic_host.spec.in
! e759e3e99ff36a77562aabb91987e4bc  liboffloadmic/liboffloadmic_target.spec.in
! 2a933cb97504d0bc9c94c6b15fddbb94  liboffloadmic/plugin/Makefile.am
! 80e060db44b3356edce963a710253d48  liboffloadmic/plugin/Makefile.in
! d6fc27745b253dfa53972e2439ec9b4e  liboffloadmic/plugin/aclocal.m4
! ee81558864da953f14c0b773e514ca89  liboffloadmic/plugin/configure
! 440adfb52f4fc1522fbe88184ffc9aeb  liboffloadmic/plugin/configure.ac
! 0eeb692b98b3a90b6fdb915a78005eae  liboffloadmic/plugin/libgomp-plugin-intelmic.cpp
! 6b20eaf07b897ce0ffb3eca79c0783a4  liboffloadmic/plugin/offload_target_main.cpp
! 8106ed87e330720a4c5f9669227db199  liboffloadmic/runtime/cean_util.cpp
! f5f99ccabfaf18fa13aeceaa077afbba  liboffloadmic/runtime/cean_util.h
! 14d46ee6fe1f4e7b4449b1384c5a39f5  liboffloadmic/runtime/coi/coi_client.cpp
! 54048d8fc3df22585d6411d1cce16612  liboffloadmic/runtime/coi/coi_client.h
! c1b77950d5fa8c7aee6283a446bf8807  liboffloadmic/runtime/coi/coi_server.cpp
! 3f564f62bbf1af7b9b07880edf8a1128  liboffloadmic/runtime/coi/coi_server.h
! 527d09662cff5a7a3c6730eca7c7ce50  liboffloadmic/runtime/compiler_if_host.cpp
! 6bc19892e5658452268c8a2d3d778524  liboffloadmic/runtime/compiler_if_host.h
! fb019e98f8e2aa829ce24598bba6705b  liboffloadmic/runtime/compiler_if_target.cpp
! 9776aeef3edb772d21b549e52d72647c  liboffloadmic/runtime/compiler_if_target.h
! 0f7fdfcd0314266617d6fc54639501c8  liboffloadmic/runtime/dv_util.cpp
! 6e6512778da3a47925335e7b54d32cd6  liboffloadmic/runtime/dv_util.h
! 31854b0eba7e80469dd7eb7296e63c0b  liboffloadmic/runtime/emulator/coi_common.h
! e24a056266e2e5fbbcbdf7aea8e312bb  liboffloadmic/runtime/emulator/coi_device.cpp
! 28261ddca2b0b716c91993bcd357a9fb  liboffloadmic/runtime/emulator/coi_device.h
! 65eac137d1a3313ed20e89bedea1576a  liboffloadmic/runtime/emulator/coi_host.cpp
! 7cd802419f2f676bb69340919fc29a62  liboffloadmic/runtime/emulator/coi_host.h
! 8513eefe3e9489ec2754ea5d8b962982  liboffloadmic/runtime/emulator/coi_version_asm.h
! 7fa44c0ac2fc39ea1d4c8b217165b35c  liboffloadmic/runtime/emulator/coi_version_linker_script.map
! 13b863a3765226b6f8ca2441a25a03d2  liboffloadmic/runtime/liboffload_error.c
! a7a59734ab8d747319313c6b4ceb0611  liboffloadmic/runtime/liboffload_error_codes.h
! 9f4dc8ae298f4047cf438dd919a29901  liboffloadmic/runtime/liboffload_msg.c
! da6e54e0ab5c440b63064191a4a372f3  liboffloadmic/runtime/liboffload_msg.h
! 181cc8c0d882d8cb87a19dfa1186b5b8  liboffloadmic/runtime/mic_lib.f90
! 115bbf0972772c8794da886ae6934828  liboffloadmic/runtime/offload.h
! 39c6745633d3171341a63aed90bef51c  liboffloadmic/runtime/offload_common.cpp
! 0c546f42f0a0f2d98e3c1ebc01a1a641  liboffloadmic/runtime/offload_common.h
! 24079dcac1cb39768e368cfbad24e103  liboffloadmic/runtime/offload_engine.cpp
! 532edff115ebe1ca59bf28ab92dfbc07  liboffloadmic/runtime/offload_engine.h
! b24d7882c416644f4a243d086918d1c7  liboffloadmic/runtime/offload_env.cpp
! c65292e01cf2f785f13a4ec23f413c47  liboffloadmic/runtime/offload_env.h
! 53f32be51e88a0ac4bb74df84ac43535  liboffloadmic/runtime/offload_host.cpp
! b3424fa61df62f72d758a68e11fb2ae3  liboffloadmic/runtime/offload_host.h
! c88ba19afb4721875071dbe27efe6a6f  liboffloadmic/runtime/offload_iterator.h
! a2a1ed886d0bbb767414132196e823f4  liboffloadmic/runtime/offload_omp_host.cpp
! 6d7233739dc2fa400c8eb8b751d86dba  liboffloadmic/runtime/offload_omp_target.cpp
! 8996115e2f5cfdd4edf741569287b6cd  liboffloadmic/runtime/offload_orsl.cpp
! 243929a2c17cf413f38d78a1ada9a864  liboffloadmic/runtime/offload_orsl.h
! a38d78d9969ba2e4583f776ade7fc3b3  liboffloadmic/runtime/offload_table.cpp
! 4b806ed0a17ec6754be29402f25da563  liboffloadmic/runtime/offload_table.h
! eed7cf7567fc263c1e9c9d345110ad6e  liboffloadmic/runtime/offload_target.cpp
! e23d462291b697cf0a5216944e7cc6df  liboffloadmic/runtime/offload_target.h
! c5ed2cdd43714c6e1503825dcc4f1870  liboffloadmic/runtime/offload_target_main.cpp
! 3d28bddc0edbd3880352c2589cb1d1b8  liboffloadmic/runtime/offload_timer.h
! fab98b9eccccc864d8b3689ab7336541  liboffloadmic/runtime/offload_timer_host.cpp
! 18b25c0c38681e024b5ca2716dfbf111  liboffloadmic/runtime/offload_timer_target.cpp
! 8fdd088e8fa51a72a13b4784c13676f3  liboffloadmic/runtime/offload_trace.cpp
! ad83fa206349daeb2c1c692daece636f  liboffloadmic/runtime/offload_trace.h
! 3219dc39d6e31986ccd206aa2cdcacbd  liboffloadmic/runtime/offload_util.cpp
! 1dabac6cd98af0068e424f94d0047eaf  liboffloadmic/runtime/offload_util.h
! 63ff766fdb27f8174259905724849523  liboffloadmic/runtime/ofldbegin.cpp
! b1def68202639bd452fb59aea3371fe4  liboffloadmic/runtime/ofldend.cpp
! 4659326a13bd5fed47bb680ddb6f5dc3  liboffloadmic/runtime/orsl-lite/include/orsl-lite.h
! cc603cdf253cc686bfcee192bb7630df  liboffloadmic/runtime/orsl-lite/lib/orsl-lite.c
! dff5c8575c49d6aa71e549b0fa021479  liboffloadmic/runtime/orsl-lite/version.txt
! bc069d6c276841c527df12dde0f85315  libphobos/ChangeLog
! 340ec558e25dd7225f7130cbf438ffc4  libphobos/Makefile.am
! 76f8b53761f8cbc5794e4a5fb5736588  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
! 89eed9dd40105abf4e48a97711bbe12c  libphobos/acinclude.m4
  fbb3c30724cb241010afacb0505c53e7  libphobos/aclocal.m4
  4923b1152206303a26c7dfb87f5de315  libphobos/config.h.in
! 887a4943e7312bf370be5a00158d366f  libphobos/configure
! 05a5341e706c429fee8fa722908db394  libphobos/configure.ac
! 112929974da1fdaa8a96be23952f9a7b  libphobos/configure.tgt
! fb19f2254dad8fbcb5691d673899ddd6  libphobos/d_rules.am
  e4224ccaecb14d942c71d31bef20d78c  libphobos/libdruntime/LICENSE.txt
! 7b327ed3d03305451c4c79b5644c2e23  libphobos/libdruntime/MERGE
! 1f8c50ca38419685dbaa1ea5d22dc94f  libphobos/libdruntime/Makefile.am
! ad4b92509e67eebe63ae781fca53d6f0  libphobos/libdruntime/Makefile.in
! 273a917f05ae8df29c05cbfc1c4d69ac  libphobos/libdruntime/__builtins.di
! 73f5944083fb2b783e407a16260ff96a  libphobos/libdruntime/__main.di
! 85278b38e80d7f52c753c02f7e6ba99b  libphobos/libdruntime/config/aarch64/switchcontext.S
! de86fcf832aacafe6e17352f85cc0a0c  libphobos/libdruntime/config/arm/switchcontext.S
! d17adee7a0b1e6259e9e97ba40803b09  libphobos/libdruntime/config/common/threadasm.S
! d5b5e965ba999dfb7a7f0ffac8904f98  libphobos/libdruntime/config/mingw/msvc.c
! cb4171209ec1903502ed2be8de07fd03  libphobos/libdruntime/config/mingw/switchcontext.S
! ef4cf4be418739530e1cab8aa97dc1f4  libphobos/libdruntime/config/mips/switchcontext.S
! f6b6d7e26ef02e095ac4f7899931eecb  libphobos/libdruntime/config/powerpc/switchcontext.S
! a0883a51636d07264d1a6ebb9fec16b6  libphobos/libdruntime/config/s390/get_tls_offset.S
! 40f06b6bb0c30deb71d67b43e0c6448e  libphobos/libdruntime/config/systemz/get_tls_offset.S
! b11b71e0ad87c1b0e8f53c2841b00f1f  libphobos/libdruntime/config/x86/switchcontext.S
  215298202cf9f846b9926177e2797aa7  libphobos/libdruntime/core/atomic.d
! 58b3b16c2cfc400fc8bcae6adf0b01ef  libphobos/libdruntime/core/attribute.d
  49d61e2bb179d74c692b97a61a0bd2ff  libphobos/libdruntime/core/bitop.d
  4a82ffb16f497f908bf37f14173450ca  libphobos/libdruntime/core/builtins.d
  46c8a565a874deb70d23572b5b8f97bf  libphobos/libdruntime/core/checkedint.d
! e78005e94abbe57989cebd7c9a7c745f  libphobos/libdruntime/core/cpuid.d
! 6df09f0b0ff14518ab41347884ff95fd  libphobos/libdruntime/core/demangle.d
! e07710eec83b5ac9590ee99967db86b7  libphobos/libdruntime/core/exception.d
  29b15a06fa6567c6eb960bb8f47b97d0  libphobos/libdruntime/core/gc/config.d
  4ef58a3ac2165a7f0cbf25236599b610  libphobos/libdruntime/core/gc/gcinterface.d
  9473dda5fca28fa3b7f32a14603fd3c7  libphobos/libdruntime/core/gc/registry.d
! 44470e31bc74da550f506133a03b62c1  libphobos/libdruntime/core/int128.d
  ed27a92c7d3ec4b856b3fa14ff3aee14  libphobos/libdruntime/core/internal/abort.d
! 169148668a694a7f2dae4de36603584b  libphobos/libdruntime/core/internal/array/appending.d
! e2863acaf9bd9eb4425a6f850d4f0cff  libphobos/libdruntime/core/internal/array/capacity.d
  38e927f0c952ad679e5cb6c1cde2c6a9  libphobos/libdruntime/core/internal/array/casting.d
  356e41b628757d5487dd4703fb0b61a8  libphobos/libdruntime/core/internal/array/comparison.d
! c5f295cc7a72d48bf07b83d6a9ff03c7  libphobos/libdruntime/core/internal/array/concatenation.d
  e814a0d2c4ed6fadbdd5e5d6e99f58d6  libphobos/libdruntime/core/internal/array/construction.d
! aa7423a5ca996ce499c5ad2f7592e330  libphobos/libdruntime/core/internal/array/equality.d
  3db7ad624aea7c6f2d6581bed9c0040a  libphobos/libdruntime/core/internal/array/operations.d
! e2c019d004d60cb9d0b935bb3492d007  libphobos/libdruntime/core/internal/array/utils.d
  be79c443a83dd0e1f0ba76076ed48b65  libphobos/libdruntime/core/internal/atomic.d
  87f5099304bb6fa7f4723eb1c7b3aa7d  libphobos/libdruntime/core/internal/attributes.d
  a9542934a22ca3085232cc43feecd6a4  libphobos/libdruntime/core/internal/container/array.d
--- 111062,111178 ----
  838bdb8846eac9161e3ffbe553049f2f  libitm/testsuite/libitm.c/simple-2.c
  7ecc8e520a5c494d159cb7571cca7cdc  libitm/testsuite/libitm.c/stackundo.c
  ef24198422c19f99b0c41be6a16f7081  libitm/testsuite/libitm.c/txrelease.c
! a197d6f8af1f2c34ee3acbd225b506dc  libitm/useraction.cc
! 18405e5244b1dc4579b93b5ac7e2fd64  libitm/util.cc
! 2b8d85cbbc983b9fdb83401409a62df8  libobjc/ChangeLog
! 0f2cc07c6f5697c9ea864715931006d2  libobjc/Makefile.in
! dacc3eacefeae25b7b2440b3744216c3  libobjc/NXConstStr.m
! 1ce3e10a7cd87c690040cc7e049c4771  libobjc/Object.m
! 6e800e223dfd208960949a0932780176  libobjc/Protocol.m
  d5edaeee0d84e4305368367019952ba7  libobjc/README
  dbf36fc59f8e048201543aead57eb206  libobjc/THREADS
! 2820f15dadc208eac5ca987d39c079e5  libobjc/accessors.m
! 8cda34f9ec2da7535bed3d1a70506bc5  libobjc/acinclude.m4
  005cfc1ff705e51549970f72513c195a  libobjc/aclocal.m4
! 11471f8919277abb393490167b00e4b6  libobjc/class.c
  a9245d99d9418e18cecf891d7a93d664  libobjc/config.h.in
! 7df0ab81c3dbc5ba1803ca783e3595d9  libobjc/configure
! 21ac3bfd0456c64e609c9f201410c017  libobjc/configure.ac
! ab95691ed4fd155be76317752d26e9f9  libobjc/encoding.c
! b8e71f9b766125bc67c053612a1f867a  libobjc/error.c
! e7cdbec2b3929f3f55ed150a81946c17  libobjc/exception.c
! fafe89aaebef5cc76d7a9108b43c0fac  libobjc/gc.c
! 6e5425335634e801695fbb1c9ee278e7  libobjc/hash.c
! 788ae8790a98e636d14368367d059c9c  libobjc/init.c
! a02f980b7f69f412860096a857324d79  libobjc/ivars.c
! fa211265b85fcd7d741c65574e202e31  libobjc/libobjc.def
! 4d7702935ee053c3099722bbf9193f21  libobjc/linking.m
! c6060170877201e9687bf514c36d2b50  libobjc/memory.c
! 363af3555dce9effb9996ff779fffadf  libobjc/methods.c
! 8f8554f0b91483434bf3e840123213d0  libobjc/nil_method.c
! d92d61b720eb5e7a220fc954ab31b689  libobjc/objc-foreach.c
  4758c47369f62786c0dcdf45f3397ff7  libobjc/objc-private/README
! f4541f9cde20429c671fe876d2cd247a  libobjc/objc-private/accessors.h
! 395366f228d0f6ed533d74bf3339a67f  libobjc/objc-private/common.h
! bf2a03791dd22ee1ac3d54f635932a49  libobjc/objc-private/error.h
! 453a228657c2b455186f374a468eb8a1  libobjc/objc-private/hash.h
! 99dfca597cfa5c23e701c4635b4b32d2  libobjc/objc-private/module-abi-8.h
! 2d25e6060338ffccd7e2a162e4f388ea  libobjc/objc-private/objc-list.h
! b98cd14377bcc5e5d3a5b5dbe76559bd  libobjc/objc-private/objc-sync.h
! ae55b666b63f7044afc54c9d0afa071f  libobjc/objc-private/protocols.h
! 6554e1cb241856d77a631fea6733293c  libobjc/objc-private/runtime.h
! 2dc6355c44aceb4baf06118b164215a2  libobjc/objc-private/sarray.h
! 63bd5e2316f7dcfcaced34fc1844b026  libobjc/objc-private/selector.h
! 2f53638c34de8275f2d59ab4378775f7  libobjc/objc-sync.c
! 1e1c6714fb26985e8a685bfcfa8052ea  libobjc/objc/NXConstStr.h
! 225be02bef285a289449c066cbb8771c  libobjc/objc/Object.h
! 747a78ef90367a45944956095969bc98  libobjc/objc/Protocol.h
  6a0d7c25fa8ddefde53bbaf36eea5bdf  libobjc/objc/README
! 81a6bf3f766368abfbe672443d3d0596  libobjc/objc/message.h
! f73dc5b4bd6ccb056fedbcc20afbb42e  libobjc/objc/objc-decls.h
! 7ded6d9c3f165db0066984028289b9e4  libobjc/objc/objc-exception.h
! 8e05359d339d716d4144ae85cb58b9b6  libobjc/objc/objc-sync.h
! 61b946a13c79b9f877fb7a0254bf828c  libobjc/objc/objc.h
! 129aa26943257fc1d9f13fc06ee82ad3  libobjc/objc/runtime.h
! 9a649e07b4834d74abf38e15aabde42d  libobjc/objc/thr.h
! 577c23bf78a9b955f7072aae7ef6afcc  libobjc/objects.c
! 66b3776166593fcdae43835864568e05  libobjc/protocols.c
! 92a3b2b27e075a5838a3239374a3e7d0  libobjc/sarray.c
! 4315de5775daa14dcb27acf8981e900b  libobjc/selector.c
! 76858dbd60cea84725adf102503b0caf  libobjc/sendmsg.c
! 07a2d7242871d2ccd937ab58211f029a  libobjc/thr.c
! dd42778e3d699665d06bfa83b2f8e930  libphobos/ChangeLog
! 94c5ad2e83438058486ba0c7c2fba0ab  libphobos/Makefile.am
! 138fba343eb20a167ee2f5240bb53f27  libphobos/Makefile.in
  ee88c20a7744a2305503e1670f3b7889  libphobos/README.gcc
! f7cfe5a66246284479824917d84e56a9  libphobos/acinclude.m4
  fbb3c30724cb241010afacb0505c53e7  libphobos/aclocal.m4
  4923b1152206303a26c7dfb87f5de315  libphobos/config.h.in
! 2a7da53393c7ac4e7d7b120f939f4abb  libphobos/configure
! c8692ecfddc51256a49f22096c2c2335  libphobos/configure.ac
! 11ef678118fa0743c5f73d089dfb558b  libphobos/configure.tgt
! 04bef1902aef470aee5ea39c14c9529d  libphobos/d_rules.am
  e4224ccaecb14d942c71d31bef20d78c  libphobos/libdruntime/LICENSE.txt
! 902321e349c55ddcd175c0d69029f28d  libphobos/libdruntime/MERGE
! 81254fb5ae7b143457d008326bd17121  libphobos/libdruntime/Makefile.am
! bd3b673a493041e446122a43e4e4e79d  libphobos/libdruntime/Makefile.in
! 941f40ec43bf28481f06d1b7d7cbebbd  libphobos/libdruntime/__builtins.di
! 1cc41d352c8743dfb6adda9d3d48ac3a  libphobos/libdruntime/__main.di
! f062bd68af059724888b7f449959ec11  libphobos/libdruntime/config/aarch64/switchcontext.S
! 7458cf4a71185c6de8afdb09a715b7a4  libphobos/libdruntime/config/arm/switchcontext.S
! c86682aa98adf7983cd8615d4cdd01cd  libphobos/libdruntime/config/common/threadasm.S
! c984bfc62b47640d97e06d9ac9271d7b  libphobos/libdruntime/config/mingw/msvc.c
! bfee7b77c0478e424746dadca9cd01e1  libphobos/libdruntime/config/mingw/switchcontext.S
! 0460790a5cc1fb89e20bff93925bccac  libphobos/libdruntime/config/mips/switchcontext.S
! 2d850358f56938eeaab4f62b8c2da2a6  libphobos/libdruntime/config/powerpc/switchcontext.S
! fab363b330a28f021ddcf724bc24eec3  libphobos/libdruntime/config/s390/get_tls_offset.S
! 3ad6908850983ef2276e9eb3415727b6  libphobos/libdruntime/config/systemz/get_tls_offset.S
! 4f396132568f8a5f83fa9e06654941b3  libphobos/libdruntime/config/x86/switchcontext.S
  215298202cf9f846b9926177e2797aa7  libphobos/libdruntime/core/atomic.d
! bba877e4f056859d54de1b796d3f8906  libphobos/libdruntime/core/attribute.d
  49d61e2bb179d74c692b97a61a0bd2ff  libphobos/libdruntime/core/bitop.d
  4a82ffb16f497f908bf37f14173450ca  libphobos/libdruntime/core/builtins.d
  46c8a565a874deb70d23572b5b8f97bf  libphobos/libdruntime/core/checkedint.d
! 65888ef4aad1d54fb695240315ae2472  libphobos/libdruntime/core/cpuid.d
! c67e61b22e0cca97ca3f28f74342ccac  libphobos/libdruntime/core/demangle.d
! 068107d7afe04f5cae199f72ac22c830  libphobos/libdruntime/core/exception.d
! 456fa1344c86d322f867cb4b1736b33a  libphobos/libdruntime/core/factory.d
  29b15a06fa6567c6eb960bb8f47b97d0  libphobos/libdruntime/core/gc/config.d
  4ef58a3ac2165a7f0cbf25236599b610  libphobos/libdruntime/core/gc/gcinterface.d
  9473dda5fca28fa3b7f32a14603fd3c7  libphobos/libdruntime/core/gc/registry.d
! 83e32709186f3be3aed2df2481ebbf15  libphobos/libdruntime/core/int128.d
  ed27a92c7d3ec4b856b3fa14ff3aee14  libphobos/libdruntime/core/internal/abort.d
! 972eff88ddfab783639d88d07e659067  libphobos/libdruntime/core/internal/array/appending.d
! a787ab6da1f42aa7148e9dd03c831b29  libphobos/libdruntime/core/internal/array/arrayassign.d
! 5cab084624a30629cdb1e9515710e744  libphobos/libdruntime/core/internal/array/capacity.d
  38e927f0c952ad679e5cb6c1cde2c6a9  libphobos/libdruntime/core/internal/array/casting.d
  356e41b628757d5487dd4703fb0b61a8  libphobos/libdruntime/core/internal/array/comparison.d
! 9d2878e0360c8692490d518ae65aead5  libphobos/libdruntime/core/internal/array/concatenation.d
  e814a0d2c4ed6fadbdd5e5d6e99f58d6  libphobos/libdruntime/core/internal/array/construction.d
! f6d7a276635a19deabc6e577b76d350e  libphobos/libdruntime/core/internal/array/duplication.d
! f8f7c1514ef75305b82a937a1be23449  libphobos/libdruntime/core/internal/array/equality.d
  3db7ad624aea7c6f2d6581bed9c0040a  libphobos/libdruntime/core/internal/array/operations.d
! 6d09daf95416c263821c0ad310261afe  libphobos/libdruntime/core/internal/array/utils.d
  be79c443a83dd0e1f0ba76076ed48b65  libphobos/libdruntime/core/internal/atomic.d
  87f5099304bb6fa7f4723eb1c7b3aa7d  libphobos/libdruntime/core/internal/attributes.d
  a9542934a22ca3085232cc43feecd6a4  libphobos/libdruntime/core/internal/container/array.d
*************** a9542934a22ca3085232cc43feecd6a4  libpho
*** 103088,103143 ****
  651bcf61fd888da86b453d8a72d84069  libphobos/libdruntime/core/internal/container/hashtab.d
  f70666bdd80bfb970a17a9ed9be599ba  libphobos/libdruntime/core/internal/container/treap.d
  0306fb8236a992e8cd0fd3c0eb09aea7  libphobos/libdruntime/core/internal/convert.d
! 5af8c61e8d1169c0eb82b2f2a076c213  libphobos/libdruntime/core/internal/dassert.d
  963ea5f13b1323723157e4819d600aa2  libphobos/libdruntime/core/internal/destruction.d
  b7a158acc86998b63150c8e8767fff46  libphobos/libdruntime/core/internal/entrypoint.d
  5de3efdd6ac2925e257c2085f3122dce  libphobos/libdruntime/core/internal/gc/bits.d
! eb76f72bcdf2014e0088a8877efd501d  libphobos/libdruntime/core/internal/gc/impl/conservative/gc.d
! d6e0b069b896b4d8086027d80e5c83c0  libphobos/libdruntime/core/internal/gc/impl/manual/gc.d
  1df48c32d9a821406ea635dc10cd8540  libphobos/libdruntime/core/internal/gc/impl/proto/gc.d
! 2cb095b0d446a4de7ca7f088a709b87b  libphobos/libdruntime/core/internal/gc/os.d
  8725bd40d9847f863beaa7d8376edea3  libphobos/libdruntime/core/internal/gc/pooltable.d
  2a6f2821592777625ec740c2521223c7  libphobos/libdruntime/core/internal/gc/proxy.d
  57faa146e23e87068997584d8e1944c9  libphobos/libdruntime/core/internal/hash.d
  299e680f03c3ddc13696fd52fc8354c4  libphobos/libdruntime/core/internal/lifetime.d
  37bd48ea66ddb05259c7995f66a87815  libphobos/libdruntime/core/internal/moving.d
! 51162a434d5064c9f911220e178fc4f3  libphobos/libdruntime/core/internal/parseoptions.d
  0ebbb014070d4b7532bfc5ced87a65b9  libphobos/libdruntime/core/internal/postblit.d
  96f934300549e463061f98ce882e48b1  libphobos/libdruntime/core/internal/qsort.d
  7ed2adffd54bf24394f997436dbe1420  libphobos/libdruntime/core/internal/spinlock.d
  1bca667c9be060cf8d91bc2a89d261e1  libphobos/libdruntime/core/internal/string.d
  0e954400ebc20e538cb0df0607daaeca  libphobos/libdruntime/core/internal/switch_.d
! 6b539bb09c49520794c30306581df6da  libphobos/libdruntime/core/internal/traits.d
! 67c15a55cfdff433aab90090fc9340e7  libphobos/libdruntime/core/internal/utf.d
  22fe055f41451524e12f35c4d7b2c3bb  libphobos/libdruntime/core/internal/util/array.d
  233370fbd6246580432384701cb2742a  libphobos/libdruntime/core/internal/util/math.d
! 793a33d93b61cca5a1e41316e67f6dd1  libphobos/libdruntime/core/lifetime.d
  bd9dd2b1b7a3d5e29673d463a4c8bc71  libphobos/libdruntime/core/math.d
! d3dea94cb11a6efc06a1d586f2067733  libphobos/libdruntime/core/memory.d
! 7b3e5b1fc656fd7d2d70c6ffdbe334d4  libphobos/libdruntime/core/runtime.d
! 94c90e0497c4a86a91cb75801ba3d8fc  libphobos/libdruntime/core/simd.d
  f276ebf85ef328a41c5ca86da694d73f  libphobos/libdruntime/core/stdc/assert_.d
  027bd40faf09b13abf5dc94da4aaa176  libphobos/libdruntime/core/stdc/complex.d
! 3613d1329557413a0d692ad85eeb029c  libphobos/libdruntime/core/stdc/config.d
  e73e1e0aaf48227fef16ff41037ecbdd  libphobos/libdruntime/core/stdc/ctype.d
! b0bed8bde9d9aa6689fee207f4ae06e0  libphobos/libdruntime/core/stdc/errno.d
  e91ed8a068db9723b27deb61078c2a0e  libphobos/libdruntime/core/stdc/errno_.c
! f91734b04d780ee0be567172b74049b5  libphobos/libdruntime/core/stdc/fenv.d
  627bd812c57c65e72ca9360911ec5e37  libphobos/libdruntime/core/stdc/float_.d
  7b0fbc4eebf5b3364fd3541f51608b9a  libphobos/libdruntime/core/stdc/inttypes.d
  1a30fd546325cb5ed6fe746ef0c6f995  libphobos/libdruntime/core/stdc/limits.d
  b51a1082520c7feae033856d8ff7feaf  libphobos/libdruntime/core/stdc/locale.d
! 33f56d98255ef50ccac83c1e1241929b  libphobos/libdruntime/core/stdc/math.d
! 94c1f25ee3344d05581afb7715c36fd8  libphobos/libdruntime/core/stdc/signal.d
! 637ca0b5e651c59698ec62ce8235a651  libphobos/libdruntime/core/stdc/stdarg.d
! ec9f863d9c7addf6af7a13d803894041  libphobos/libdruntime/core/stdc/stddef.d
! 63fb4f32732e7af998851bc69918ebff  libphobos/libdruntime/core/stdc/stdint.d
! e3d549833deb867eacca648b789687d9  libphobos/libdruntime/core/stdc/stdio.d
! 67f86e850583ab1ffcaabe52d2779757  libphobos/libdruntime/core/stdc/stdlib.d
! 4205e02c15ae138bcafb04d28f877484  libphobos/libdruntime/core/stdc/string.d
  b1b452c04a088565feada1af815d3ea2  libphobos/libdruntime/core/stdc/tgmath.d
! 5b4d2f8d4b10356845cfded43243cbeb  libphobos/libdruntime/core/stdc/time.d
! 0aef12c394614bbe079f1793a5c37435  libphobos/libdruntime/core/stdc/wchar_.d
  b1663e1953112eee39a60ee083f81988  libphobos/libdruntime/core/stdc/wctype.d
  a343caf6e115a78beda4a590a00c124b  libphobos/libdruntime/core/stdcpp/allocator.d
  83a1cef26175a49cf10768716683fede  libphobos/libdruntime/core/stdcpp/array.d
--- 111180,111235 ----
  651bcf61fd888da86b453d8a72d84069  libphobos/libdruntime/core/internal/container/hashtab.d
  f70666bdd80bfb970a17a9ed9be599ba  libphobos/libdruntime/core/internal/container/treap.d
  0306fb8236a992e8cd0fd3c0eb09aea7  libphobos/libdruntime/core/internal/convert.d
! fc76afe4810c22b8642cb217c8135d7b  libphobos/libdruntime/core/internal/dassert.d
  963ea5f13b1323723157e4819d600aa2  libphobos/libdruntime/core/internal/destruction.d
  b7a158acc86998b63150c8e8767fff46  libphobos/libdruntime/core/internal/entrypoint.d
  5de3efdd6ac2925e257c2085f3122dce  libphobos/libdruntime/core/internal/gc/bits.d
! 764fc9723caec80af2f38025ff15410d  libphobos/libdruntime/core/internal/gc/impl/conservative/gc.d
! 3668f914328046ad5e3f625a95f172ab  libphobos/libdruntime/core/internal/gc/impl/manual/gc.d
  1df48c32d9a821406ea635dc10cd8540  libphobos/libdruntime/core/internal/gc/impl/proto/gc.d
! 888e40f3b75aef6ff9b05c0d7f899cb7  libphobos/libdruntime/core/internal/gc/os.d
  8725bd40d9847f863beaa7d8376edea3  libphobos/libdruntime/core/internal/gc/pooltable.d
  2a6f2821592777625ec740c2521223c7  libphobos/libdruntime/core/internal/gc/proxy.d
  57faa146e23e87068997584d8e1944c9  libphobos/libdruntime/core/internal/hash.d
  299e680f03c3ddc13696fd52fc8354c4  libphobos/libdruntime/core/internal/lifetime.d
  37bd48ea66ddb05259c7995f66a87815  libphobos/libdruntime/core/internal/moving.d
! 2f8a9315866964d58842725f62ab38e2  libphobos/libdruntime/core/internal/parseoptions.d
  0ebbb014070d4b7532bfc5ced87a65b9  libphobos/libdruntime/core/internal/postblit.d
  96f934300549e463061f98ce882e48b1  libphobos/libdruntime/core/internal/qsort.d
  7ed2adffd54bf24394f997436dbe1420  libphobos/libdruntime/core/internal/spinlock.d
  1bca667c9be060cf8d91bc2a89d261e1  libphobos/libdruntime/core/internal/string.d
  0e954400ebc20e538cb0df0607daaeca  libphobos/libdruntime/core/internal/switch_.d
! f82a725ae85af45e626df37a4c024966  libphobos/libdruntime/core/internal/traits.d
! 8ba91f8fbc8ff1ce39558b645f33f5ef  libphobos/libdruntime/core/internal/utf.d
  22fe055f41451524e12f35c4d7b2c3bb  libphobos/libdruntime/core/internal/util/array.d
  233370fbd6246580432384701cb2742a  libphobos/libdruntime/core/internal/util/math.d
! d76346e01745208d79420e04ad5ff4e4  libphobos/libdruntime/core/lifetime.d
  bd9dd2b1b7a3d5e29673d463a4c8bc71  libphobos/libdruntime/core/math.d
! cbe8b9e804b321c5888e2c50da9da539  libphobos/libdruntime/core/memory.d
! b6b591257431321f7ee553c9dc818d76  libphobos/libdruntime/core/runtime.d
! 94caf334d4b82b52b161e23aec46505d  libphobos/libdruntime/core/simd.d
  f276ebf85ef328a41c5ca86da694d73f  libphobos/libdruntime/core/stdc/assert_.d
  027bd40faf09b13abf5dc94da4aaa176  libphobos/libdruntime/core/stdc/complex.d
! 33eeb5bcdb742fc4553a3ca00c5e36ba  libphobos/libdruntime/core/stdc/config.d
  e73e1e0aaf48227fef16ff41037ecbdd  libphobos/libdruntime/core/stdc/ctype.d
! 03adbd217ce84d91f8f71d674d0395af  libphobos/libdruntime/core/stdc/errno.d
  e91ed8a068db9723b27deb61078c2a0e  libphobos/libdruntime/core/stdc/errno_.c
! b5b0b83e0f4f215341933f213077fe6b  libphobos/libdruntime/core/stdc/fenv.d
  627bd812c57c65e72ca9360911ec5e37  libphobos/libdruntime/core/stdc/float_.d
  7b0fbc4eebf5b3364fd3541f51608b9a  libphobos/libdruntime/core/stdc/inttypes.d
  1a30fd546325cb5ed6fe746ef0c6f995  libphobos/libdruntime/core/stdc/limits.d
  b51a1082520c7feae033856d8ff7feaf  libphobos/libdruntime/core/stdc/locale.d
! f029ce6a586161fe5737356813c7a772  libphobos/libdruntime/core/stdc/math.d
! 0527cc19df281c6561cb089ae3887c88  libphobos/libdruntime/core/stdc/signal.d
! bbb95e6e2271306a1ef53794a38b06db  libphobos/libdruntime/core/stdc/stdarg.d
! bf552e1cf2ceeb05e2231ba9b15a4317  libphobos/libdruntime/core/stdc/stddef.d
! aa417eb2941ce05fcee7aecb46b52ef9  libphobos/libdruntime/core/stdc/stdint.d
! 9552a9ae2746248abe46b09ac7c21bd2  libphobos/libdruntime/core/stdc/stdio.d
! 523afc9f8050a3e2804b75c319c8737f  libphobos/libdruntime/core/stdc/stdlib.d
! c2bbd0b7f66068f274cce225f38aa23f  libphobos/libdruntime/core/stdc/string.d
  b1b452c04a088565feada1af815d3ea2  libphobos/libdruntime/core/stdc/tgmath.d
! 3f44e53505593c836ad3980244975710  libphobos/libdruntime/core/stdc/time.d
! aba60f3dd813ecdfd13c507b6732cb77  libphobos/libdruntime/core/stdc/wchar_.d
  b1663e1953112eee39a60ee083f81988  libphobos/libdruntime/core/stdc/wctype.d
  a343caf6e115a78beda4a590a00c124b  libphobos/libdruntime/core/stdcpp/allocator.d
  83a1cef26175a49cf10768716683fede  libphobos/libdruntime/core/stdcpp/array.d
*************** c42237e1c2e0d5a73f83bca2d569be95  libpho
*** 103150,103162 ****
  0569b3425bd101daae472163154e504d  libphobos/libdruntime/core/stdcpp/typeinfo.d
  06dd797b544244f3a183b5a9e384cd06  libphobos/libdruntime/core/stdcpp/utility.d
  f6303bba4269a36c93ec5592d2096be9  libphobos/libdruntime/core/stdcpp/vector.d
! b364863ebff89d65fec7b99b28297890  libphobos/libdruntime/core/stdcpp/xutility.d
  fbde46456ccf791794e8a05ff5e2514e  libphobos/libdruntime/core/sync/barrier.d
! ea1dd922e030afb9aa4af69a16f32aa1  libphobos/libdruntime/core/sync/condition.d
  32e65cd032b692a0bc7ef837d9b288e8  libphobos/libdruntime/core/sync/config.d
  b0b7816a914ef20ee57eb6e87494489e  libphobos/libdruntime/core/sync/event.d
  639f1741cd8b67f88b45de6877ebaf28  libphobos/libdruntime/core/sync/exception.d
! 2cc688a01dce8657a69c57effda6158f  libphobos/libdruntime/core/sync/mutex.d
  51c9e98d49f72c5db1eb7260656f678d  libphobos/libdruntime/core/sync/rwmutex.d
  2f67770ee754b7013cdcc2bd45ada38d  libphobos/libdruntime/core/sync/semaphore.d
  50fe5e30b4d51364e814298406f553f8  libphobos/libdruntime/core/sys/bionic/err.d
--- 111242,111255 ----
  0569b3425bd101daae472163154e504d  libphobos/libdruntime/core/stdcpp/typeinfo.d
  06dd797b544244f3a183b5a9e384cd06  libphobos/libdruntime/core/stdcpp/utility.d
  f6303bba4269a36c93ec5592d2096be9  libphobos/libdruntime/core/stdcpp/vector.d
! bf7620793265072a86a264afc1aa5e71  libphobos/libdruntime/core/stdcpp/xutility.d
  fbde46456ccf791794e8a05ff5e2514e  libphobos/libdruntime/core/sync/barrier.d
! ce0724b2cd3ab5547b6347f4ec84c860  libphobos/libdruntime/core/sync/condition.d
  32e65cd032b692a0bc7ef837d9b288e8  libphobos/libdruntime/core/sync/config.d
  b0b7816a914ef20ee57eb6e87494489e  libphobos/libdruntime/core/sync/event.d
  639f1741cd8b67f88b45de6877ebaf28  libphobos/libdruntime/core/sync/exception.d
! d8d35215eb69a255e73ec913bc1d1daa  libphobos/libdruntime/core/sync/mutex.d
! 9d0c31c030496644e123ff3169d29034  libphobos/libdruntime/core/sync/package.d
  51c9e98d49f72c5db1eb7260656f678d  libphobos/libdruntime/core/sync/rwmutex.d
  2f67770ee754b7013cdcc2bd45ada38d  libphobos/libdruntime/core/sync/semaphore.d
  50fe5e30b4d51364e814298406f553f8  libphobos/libdruntime/core/sys/bionic/err.d
*************** e1a0c2ace7ce019d9507ff2e36d9046c  libpho
*** 103169,103180 ****
  0eda72e3cac9805cc23af8959075decb  libphobos/libdruntime/core/sys/darwin/dlfcn.d
  a3c540146008694cd55b9331f0ea3c00  libphobos/libdruntime/core/sys/darwin/err.d
  57ead34bc2c10609cee697697c7109d9  libphobos/libdruntime/core/sys/darwin/execinfo.d
! 0060659b909387b22689025cf7610aa1  libphobos/libdruntime/core/sys/darwin/fcntl.d
! 58b8dee3b90f7fa64a82c894643b2027  libphobos/libdruntime/core/sys/darwin/ifaddrs.d
  cdd965e1bc4060658a5783cea01da633  libphobos/libdruntime/core/sys/darwin/mach/dyld.d
! 1977f7f9305576784856f478fc34637e  libphobos/libdruntime/core/sys/darwin/mach/getsect.d
  0ff5ed83f084635f094a9003ce83e2e3  libphobos/libdruntime/core/sys/darwin/mach/kern_return.d
! 322a2c3bf9ff78db7beed5f673f08f84  libphobos/libdruntime/core/sys/darwin/mach/loader.d
  b494cd41558ecb995c4333baf8fc06e5  libphobos/libdruntime/core/sys/darwin/mach/nlist.d
  27705f6828a0cd3d2ed10b37956cb52d  libphobos/libdruntime/core/sys/darwin/mach/port.d
  11f245cf78f453eec2ce6ab6ab994489  libphobos/libdruntime/core/sys/darwin/mach/semaphore.d
--- 111262,111273 ----
  0eda72e3cac9805cc23af8959075decb  libphobos/libdruntime/core/sys/darwin/dlfcn.d
  a3c540146008694cd55b9331f0ea3c00  libphobos/libdruntime/core/sys/darwin/err.d
  57ead34bc2c10609cee697697c7109d9  libphobos/libdruntime/core/sys/darwin/execinfo.d
! 67367ec1a9080206e76e5985a626b96f  libphobos/libdruntime/core/sys/darwin/fcntl.d
! b371cc55752f276343a5a951da246a8f  libphobos/libdruntime/core/sys/darwin/ifaddrs.d
  cdd965e1bc4060658a5783cea01da633  libphobos/libdruntime/core/sys/darwin/mach/dyld.d
! 4d28b7f25b6ec44ee33f9aa364026ee2  libphobos/libdruntime/core/sys/darwin/mach/getsect.d
  0ff5ed83f084635f094a9003ce83e2e3  libphobos/libdruntime/core/sys/darwin/mach/kern_return.d
! 32cd36bd496d40cce0ba3cc4e2c28b2a  libphobos/libdruntime/core/sys/darwin/mach/loader.d
  b494cd41558ecb995c4333baf8fc06e5  libphobos/libdruntime/core/sys/darwin/mach/nlist.d
  27705f6828a0cd3d2ed10b37956cb52d  libphobos/libdruntime/core/sys/darwin/mach/port.d
  11f245cf78f453eec2ce6ab6ab994489  libphobos/libdruntime/core/sys/darwin/mach/semaphore.d
*************** a638835645b7f6f237988cde82cdc023  libpho
*** 103186,103192 ****
  b23e9db102d21fdfaae26d64270c36b4  libphobos/libdruntime/core/sys/darwin/string.d
  1822982f807a2d0bf4f414d7508f14b9  libphobos/libdruntime/core/sys/darwin/sys/attr.d
  f313052d67738ea2ef7ecb6a841d8e8a  libphobos/libdruntime/core/sys/darwin/sys/cdefs.d
! 0a9f455c4909b18d235716e2e990b036  libphobos/libdruntime/core/sys/darwin/sys/event.d
  d45630fa4eae2334c1017e90da6181b4  libphobos/libdruntime/core/sys/darwin/sys/mman.d
  ee768f1e1a87f6a51cceb812e431b845  libphobos/libdruntime/core/sys/darwin/sys/sysctl.d
  6c97885f83797ff4aebb198ca52c218a  libphobos/libdruntime/core/sys/dragonflybsd/dlfcn.d
--- 111279,111285 ----
  b23e9db102d21fdfaae26d64270c36b4  libphobos/libdruntime/core/sys/darwin/string.d
  1822982f807a2d0bf4f414d7508f14b9  libphobos/libdruntime/core/sys/darwin/sys/attr.d
  f313052d67738ea2ef7ecb6a841d8e8a  libphobos/libdruntime/core/sys/darwin/sys/cdefs.d
! 360c5926a42d6162839c384ccb749fc2  libphobos/libdruntime/core/sys/darwin/sys/event.d
  d45630fa4eae2334c1017e90da6181b4  libphobos/libdruntime/core/sys/darwin/sys/mman.d
  ee768f1e1a87f6a51cceb812e431b845  libphobos/libdruntime/core/sys/darwin/sys/sysctl.d
  6c97885f83797ff4aebb198ca52c218a  libphobos/libdruntime/core/sys/dragonflybsd/dlfcn.d
*************** acf1e3bd64ab277991c64333d3e0579b  libpho
*** 103195,103215 ****
  a6a8f14bd00ff97c7e0951489f562ad8  libphobos/libdruntime/core/sys/dragonflybsd/netinet/in_.d
  c86f640d53951aff6dc85f8a55a95b29  libphobos/libdruntime/core/sys/dragonflybsd/pthread_np.d
  ca5f75ae9c3430ffa168de837fbdacce  libphobos/libdruntime/core/sys/dragonflybsd/stdlib.d
! 6cfdddbb5f50d6707b5ef87de9122759  libphobos/libdruntime/core/sys/dragonflybsd/string.d
  aebec2abbff9264fe5fb8fe7f0742f3e  libphobos/libdruntime/core/sys/dragonflybsd/sys/_bitset.d
  5ab9878143773ab170060d0052e88be1  libphobos/libdruntime/core/sys/dragonflybsd/sys/_cpuset.d
  9e2c4a7a7c64e5ecccf60e6ecc2bca8d  libphobos/libdruntime/core/sys/dragonflybsd/sys/cdefs.d
  7fa74bda026e2e5ef3bedefc21399d5b  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf.d
! afda28e4fafda81abea4e57b2ce769ca  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d
! 71faf49f5b6f9744d6dc2f1fd2f94d79  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
! 99207929e21166c3d01746e683da783f  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
  c4670d2d6c9210cd8b63dd16ea2d4c7e  libphobos/libdruntime/core/sys/dragonflybsd/sys/event.d
  94cb059685b222a5be21171cd4e5ae38  libphobos/libdruntime/core/sys/dragonflybsd/sys/link_elf.d
  3fe6b99d2ece571b1ae5c5515edd2f1c  libphobos/libdruntime/core/sys/dragonflybsd/sys/mman.d
  894ff2238ebbebe3242c4209a893c05b  libphobos/libdruntime/core/sys/dragonflybsd/sys/socket.d
  1edd21f71df6ed90f611f5f352b3166c  libphobos/libdruntime/core/sys/dragonflybsd/sys/sysctl.d
  f14294df112fde328fa8d60fe9777a4c  libphobos/libdruntime/core/sys/dragonflybsd/time.d
! b4c58f5c2b484f52e2677a5f6efaf183  libphobos/libdruntime/core/sys/freebsd/config.d
  fdbaf03147cfe71d5470a4e029044a7c  libphobos/libdruntime/core/sys/freebsd/dlfcn.d
  af280329e0c803d82636283b14c46642  libphobos/libdruntime/core/sys/freebsd/err.d
  380100960f334f1ed62e46fcde0154f3  libphobos/libdruntime/core/sys/freebsd/execinfo.d
--- 111288,111309 ----
  a6a8f14bd00ff97c7e0951489f562ad8  libphobos/libdruntime/core/sys/dragonflybsd/netinet/in_.d
  c86f640d53951aff6dc85f8a55a95b29  libphobos/libdruntime/core/sys/dragonflybsd/pthread_np.d
  ca5f75ae9c3430ffa168de837fbdacce  libphobos/libdruntime/core/sys/dragonflybsd/stdlib.d
! 3ad6a87a26922e823d47a8e0deff95a9  libphobos/libdruntime/core/sys/dragonflybsd/string.d
  aebec2abbff9264fe5fb8fe7f0742f3e  libphobos/libdruntime/core/sys/dragonflybsd/sys/_bitset.d
  5ab9878143773ab170060d0052e88be1  libphobos/libdruntime/core/sys/dragonflybsd/sys/_cpuset.d
  9e2c4a7a7c64e5ecccf60e6ecc2bca8d  libphobos/libdruntime/core/sys/dragonflybsd/sys/cdefs.d
  7fa74bda026e2e5ef3bedefc21399d5b  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf.d
! 6a8124e3776f24c9d5d08b67fa527d5c  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf32.d
! 93b13a6451e90737c29bd54c4673ba2a  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf64.d
! 292139e3905c52bfe5553778dfa459af  libphobos/libdruntime/core/sys/dragonflybsd/sys/elf_common.d
  c4670d2d6c9210cd8b63dd16ea2d4c7e  libphobos/libdruntime/core/sys/dragonflybsd/sys/event.d
  94cb059685b222a5be21171cd4e5ae38  libphobos/libdruntime/core/sys/dragonflybsd/sys/link_elf.d
  3fe6b99d2ece571b1ae5c5515edd2f1c  libphobos/libdruntime/core/sys/dragonflybsd/sys/mman.d
  894ff2238ebbebe3242c4209a893c05b  libphobos/libdruntime/core/sys/dragonflybsd/sys/socket.d
  1edd21f71df6ed90f611f5f352b3166c  libphobos/libdruntime/core/sys/dragonflybsd/sys/sysctl.d
  f14294df112fde328fa8d60fe9777a4c  libphobos/libdruntime/core/sys/dragonflybsd/time.d
! a9f7b4611236521de8cc25b6dc127f1a  libphobos/libdruntime/core/sys/elf/package.d
! bd301144c6d0d322af4d639445a1ea4d  libphobos/libdruntime/core/sys/freebsd/config.d
  fdbaf03147cfe71d5470a4e029044a7c  libphobos/libdruntime/core/sys/freebsd/dlfcn.d
  af280329e0c803d82636283b14c46642  libphobos/libdruntime/core/sys/freebsd/err.d
  380100960f334f1ed62e46fcde0154f3  libphobos/libdruntime/core/sys/freebsd/execinfo.d
*************** ef7226f644352e61dd81ad370cf837fc  libpho
*** 103221,103229 ****
  55344b2716c3a4c2b4dae60cf7c69ca8  libphobos/libdruntime/core/sys/freebsd/sys/_cpuset.d
  7935160b9fb1677ccd85bb239deaa975  libphobos/libdruntime/core/sys/freebsd/sys/cdefs.d
  2d62ba1bf8ce4b7da48af344a8251ad0  libphobos/libdruntime/core/sys/freebsd/sys/elf.d
! f499b9b3eb2d85f5a6721d4dd0189422  libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
! 06e0e73a93363a0e6758e99fdfcc82c1  libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
! f505ef077a2c3986ca4055d98decc56a  libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
  d2880e9391595d51528eb24f44a12446  libphobos/libdruntime/core/sys/freebsd/sys/event.d
  3438f02ecb73e3e9a85756b150a51b74  libphobos/libdruntime/core/sys/freebsd/sys/link_elf.d
  b5482e757cf68b7cab783fb27ff7e8dc  libphobos/libdruntime/core/sys/freebsd/sys/mman.d
--- 111315,111323 ----
  55344b2716c3a4c2b4dae60cf7c69ca8  libphobos/libdruntime/core/sys/freebsd/sys/_cpuset.d
  7935160b9fb1677ccd85bb239deaa975  libphobos/libdruntime/core/sys/freebsd/sys/cdefs.d
  2d62ba1bf8ce4b7da48af344a8251ad0  libphobos/libdruntime/core/sys/freebsd/sys/elf.d
! 980343ad3f62fcc53e90161463f4efa1  libphobos/libdruntime/core/sys/freebsd/sys/elf32.d
! ee5b78ea9e270000dc26b2ff9196073b  libphobos/libdruntime/core/sys/freebsd/sys/elf64.d
! a9f3884a36dabb53caa929d982caeda6  libphobos/libdruntime/core/sys/freebsd/sys/elf_common.d
  d2880e9391595d51528eb24f44a12446  libphobos/libdruntime/core/sys/freebsd/sys/event.d
  3438f02ecb73e3e9a85756b150a51b74  libphobos/libdruntime/core/sys/freebsd/sys/link_elf.d
  b5482e757cf68b7cab783fb27ff7e8dc  libphobos/libdruntime/core/sys/freebsd/sys/mman.d
*************** b5482e757cf68b7cab783fb27ff7e8dc  libpho
*** 103232,103280 ****
  7580b3a7ee4945c8401ff9ad2b1eb5d8  libphobos/libdruntime/core/sys/freebsd/time.d
  58ce9c60b279b1d219d3f44f0c062f3e  libphobos/libdruntime/core/sys/freebsd/unistd.d
  2e58042b40b06181daf7cb32b0d0b3d6  libphobos/libdruntime/core/sys/linux/config.d
! ae73e7f5b20594fe59ce2008d9e82d37  libphobos/libdruntime/core/sys/linux/dlfcn.d
! 9d78ad97e048f35f166e93fc8a257d3b  libphobos/libdruntime/core/sys/linux/elf.d
! 45b78c71b74d9b20049dbdc6489ea85a  libphobos/libdruntime/core/sys/linux/epoll.d
! e191c06f87919f4adec9c982feb29aec  libphobos/libdruntime/core/sys/linux/err.d
! feeb11886796e75ce1e5383c6e146f8b  libphobos/libdruntime/core/sys/linux/errno.d
! 5acfff22872b45dea57ec75e92889abc  libphobos/libdruntime/core/sys/linux/execinfo.d
! 935ea2ae6772bc751d347bb55641b584  libphobos/libdruntime/core/sys/linux/fcntl.d
! deba09f2c7c1081d0da4335caf995f7e  libphobos/libdruntime/core/sys/linux/fs.d
! 74e924a11837d0902cd064af18ae0456  libphobos/libdruntime/core/sys/linux/ifaddrs.d
! 261910adb953dff0955f8e3cfe51a215  libphobos/libdruntime/core/sys/linux/io_uring.d
! 4f38545861ca7fa7efb84e0a5fcd6b3c  libphobos/libdruntime/core/sys/linux/link.d
  12fb5b8d3834b7b9da4b7c2158d39f82  libphobos/libdruntime/core/sys/linux/netinet/in_.d
  ef4ca38842cf7000f36294af3547a28a  libphobos/libdruntime/core/sys/linux/netinet/tcp.d
! 4ac5e691f31abb410e14b5944c97461c  libphobos/libdruntime/core/sys/linux/perf_event.d
! ab74a4f64ae574524cf66da00ed59381  libphobos/libdruntime/core/sys/linux/sched.d
! 8a4825fd9f24f4d8eb8b82ab454851c3  libphobos/libdruntime/core/sys/linux/stdio.d
! 782a789c9c3999e5dc4d3089df64c870  libphobos/libdruntime/core/sys/linux/string.d
  28da6eda5c615291a6aac7a619f20f78  libphobos/libdruntime/core/sys/linux/sys/auxv.d
! 7ea96b49471b6289eb8299fbe418c31a  libphobos/libdruntime/core/sys/linux/sys/eventfd.d
  d24094280e490194dedf87b353ff18bb  libphobos/libdruntime/core/sys/linux/sys/file.d
! d0516e4d4ab55a2503c79620d4864d62  libphobos/libdruntime/core/sys/linux/sys/inotify.d
! 770fb85d79a8cc772cdda0769c205d44  libphobos/libdruntime/core/sys/linux/sys/mman.d
! 760b3a3ba87ef1ea457197d20ffd7bb8  libphobos/libdruntime/core/sys/linux/sys/prctl.d
  f80d0aef18c502a635390c78983541dd  libphobos/libdruntime/core/sys/linux/sys/procfs.d
! 8dd5be002434c8031e503c306e4400f9  libphobos/libdruntime/core/sys/linux/sys/signalfd.d
  00be1093b809dc09200b03f711033c00  libphobos/libdruntime/core/sys/linux/sys/socket.d
! 9467d51c62741df44e30900beee30259  libphobos/libdruntime/core/sys/linux/sys/sysinfo.d
! ef42e08f89c82f6a904ab70a22e52ad9  libphobos/libdruntime/core/sys/linux/sys/time.d
! e0d6349243f4628102df05cc8aecb721  libphobos/libdruntime/core/sys/linux/sys/xattr.d
  0b804d571d1307b84e7e1f15b4c3d019  libphobos/libdruntime/core/sys/linux/termios.d
  51b5b6cdb4decd39c003dd6fcd9216ce  libphobos/libdruntime/core/sys/linux/time.d
! 911e6b52f63b86bf643effb3bc490d48  libphobos/libdruntime/core/sys/linux/timerfd.d
! 36b60a4130cd1488549946ab47892020  libphobos/libdruntime/core/sys/linux/tipc.d
! 147de99dcf03eef5b45d3c774b64b677  libphobos/libdruntime/core/sys/linux/unistd.d
  1b582b30d3653f119276cadc05ee72d8  libphobos/libdruntime/core/sys/netbsd/dlfcn.d
  dfd28b5ab076802f136129647195c782  libphobos/libdruntime/core/sys/netbsd/err.d
  16687f12d9b35a350c3415c52d038cd0  libphobos/libdruntime/core/sys/netbsd/execinfo.d
  f03137d862ce397c6fb8ef85bcefab73  libphobos/libdruntime/core/sys/netbsd/stdlib.d
  7b0f236b427b427e01e8fa52532b2c3c  libphobos/libdruntime/core/sys/netbsd/string.d
  e739d3dae4d70fa6737b4ce09c43994d  libphobos/libdruntime/core/sys/netbsd/sys/elf.d
! c3b5c9b222123c7d9b1842e8f8ad8db4  libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
! 2a7a314b6654849148db9a5ee7f8a8b0  libphobos/libdruntime/core/sys/netbsd/sys/elf64.d
! 62f3e35fa3023872887390d5132421ce  libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
  3b9b03a58246b1ff0add7bf8623db546  libphobos/libdruntime/core/sys/netbsd/sys/event.d
  b7d30227519e88528d6f108a0b716317  libphobos/libdruntime/core/sys/netbsd/sys/featuretest.d
  90e9b823006c634cf0ea0fc288e628f2  libphobos/libdruntime/core/sys/netbsd/sys/link_elf.d
--- 111326,111374 ----
  7580b3a7ee4945c8401ff9ad2b1eb5d8  libphobos/libdruntime/core/sys/freebsd/time.d
  58ce9c60b279b1d219d3f44f0c062f3e  libphobos/libdruntime/core/sys/freebsd/unistd.d
  2e58042b40b06181daf7cb32b0d0b3d6  libphobos/libdruntime/core/sys/linux/config.d
! 9cd15158b80291c8b120e314a27f4099  libphobos/libdruntime/core/sys/linux/dlfcn.d
! 9772302af1ce910f5d9341c067908b67  libphobos/libdruntime/core/sys/linux/elf.d
! 699aabd903b41f2a73bee2c26d91d753  libphobos/libdruntime/core/sys/linux/epoll.d
! d43645ebdb4cb7038c7eadc1216f334d  libphobos/libdruntime/core/sys/linux/err.d
! 91d5d2c96df93f0773d9d91c761f449d  libphobos/libdruntime/core/sys/linux/errno.d
! a56839efe74c71ab60c49ebf16ca7b69  libphobos/libdruntime/core/sys/linux/execinfo.d
! 3e71c86a817e8dbe949840fc092ca007  libphobos/libdruntime/core/sys/linux/fcntl.d
! 4bac52a5767aca36f84a842fe4c8e497  libphobos/libdruntime/core/sys/linux/fs.d
! 014a38921348f494fc0e1f1f0abd50dd  libphobos/libdruntime/core/sys/linux/ifaddrs.d
! 46564c790cc7d63f5336608262fe45b7  libphobos/libdruntime/core/sys/linux/io_uring.d
! 1a86ebde280651186aaa2563cd9ff437  libphobos/libdruntime/core/sys/linux/link.d
  12fb5b8d3834b7b9da4b7c2158d39f82  libphobos/libdruntime/core/sys/linux/netinet/in_.d
  ef4ca38842cf7000f36294af3547a28a  libphobos/libdruntime/core/sys/linux/netinet/tcp.d
! fba37e5bedd8f3c142a0d89f67c5e54a  libphobos/libdruntime/core/sys/linux/perf_event.d
! 0099ef95503090008310f7cfe82dad3a  libphobos/libdruntime/core/sys/linux/sched.d
! 7931aab43c1ac5e2755373b67d411863  libphobos/libdruntime/core/sys/linux/stdio.d
! 5865ee9cfca7ce97fb6444080e379440  libphobos/libdruntime/core/sys/linux/string.d
  28da6eda5c615291a6aac7a619f20f78  libphobos/libdruntime/core/sys/linux/sys/auxv.d
! 56737321bee30fadc9a6b5c154d55009  libphobos/libdruntime/core/sys/linux/sys/eventfd.d
  d24094280e490194dedf87b353ff18bb  libphobos/libdruntime/core/sys/linux/sys/file.d
! 35ce0fd84a9863a4f16f3bb357ee8f84  libphobos/libdruntime/core/sys/linux/sys/inotify.d
! d8d6558e086283db24e5b4149733aeb0  libphobos/libdruntime/core/sys/linux/sys/mman.d
! a4bc2500eb1954b8041afbfdf0c1c624  libphobos/libdruntime/core/sys/linux/sys/prctl.d
  f80d0aef18c502a635390c78983541dd  libphobos/libdruntime/core/sys/linux/sys/procfs.d
! be8020cc22c39cfb05963e86a584d8c6  libphobos/libdruntime/core/sys/linux/sys/signalfd.d
  00be1093b809dc09200b03f711033c00  libphobos/libdruntime/core/sys/linux/sys/socket.d
! 86a89527d97460eaf8460e185ad3f275  libphobos/libdruntime/core/sys/linux/sys/sysinfo.d
! 7a54339243710cbfd79bde1f56a32e73  libphobos/libdruntime/core/sys/linux/sys/time.d
! 3050f0352c0814a99d50b30404d55e4a  libphobos/libdruntime/core/sys/linux/sys/xattr.d
  0b804d571d1307b84e7e1f15b4c3d019  libphobos/libdruntime/core/sys/linux/termios.d
  51b5b6cdb4decd39c003dd6fcd9216ce  libphobos/libdruntime/core/sys/linux/time.d
! 3cc075f55b6c637e3edb96ab0b0dd212  libphobos/libdruntime/core/sys/linux/timerfd.d
! 8b7729333b2e7c137f3d4a1e07783823  libphobos/libdruntime/core/sys/linux/tipc.d
! 8f1a360b4a393855fca0731772e2fbee  libphobos/libdruntime/core/sys/linux/unistd.d
  1b582b30d3653f119276cadc05ee72d8  libphobos/libdruntime/core/sys/netbsd/dlfcn.d
  dfd28b5ab076802f136129647195c782  libphobos/libdruntime/core/sys/netbsd/err.d
  16687f12d9b35a350c3415c52d038cd0  libphobos/libdruntime/core/sys/netbsd/execinfo.d
  f03137d862ce397c6fb8ef85bcefab73  libphobos/libdruntime/core/sys/netbsd/stdlib.d
  7b0f236b427b427e01e8fa52532b2c3c  libphobos/libdruntime/core/sys/netbsd/string.d
  e739d3dae4d70fa6737b4ce09c43994d  libphobos/libdruntime/core/sys/netbsd/sys/elf.d
! a138f936cbb80a12577ce380e01d6e58  libphobos/libdruntime/core/sys/netbsd/sys/elf32.d
! a1b5e465ae156df5e5813b732e9d8082  libphobos/libdruntime/core/sys/netbsd/sys/elf64.d
! 313798ae65cfc16a242f6e0b4cf2f315  libphobos/libdruntime/core/sys/netbsd/sys/elf_common.d
  3b9b03a58246b1ff0add7bf8623db546  libphobos/libdruntime/core/sys/netbsd/sys/event.d
  b7d30227519e88528d6f108a0b716317  libphobos/libdruntime/core/sys/netbsd/sys/featuretest.d
  90e9b823006c634cf0ea0fc288e628f2  libphobos/libdruntime/core/sys/netbsd/sys/link_elf.d
*************** e44c1bb0475bad210df34a6ac2f2b7c5  libpho
*** 103290,103357 ****
  a9eb1c1eaf5c0383b7eda373805c48a1  libphobos/libdruntime/core/sys/openbsd/string.d
  61119274dbe0da19bb7862b1d8e3be88  libphobos/libdruntime/core/sys/openbsd/sys/cdefs.d
  4f2b043926b16e1b37a2e25509085736  libphobos/libdruntime/core/sys/openbsd/sys/elf.d
! 0b71a0b7809a12e17f334ce2ae8c6732  libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
! 44de53e0c71e5ab94373d783f7c62315  libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
! dadfb12aa3ebcaf98bc06d53bec3b016  libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
  ed254802fe236c52abe7ec9ebf7f8f79  libphobos/libdruntime/core/sys/openbsd/sys/link_elf.d
! c3908fc79870408909773bdacf209951  libphobos/libdruntime/core/sys/openbsd/sys/mman.d
  b4bd052f0e8e57db0716f807263ad759  libphobos/libdruntime/core/sys/openbsd/sys/sysctl.d
  26fdce9d3769cf37bf38b5ada08836f3  libphobos/libdruntime/core/sys/openbsd/time.d
  475e7db371c2520012c6b29906055ad7  libphobos/libdruntime/core/sys/openbsd/unistd.d
! dff5b3d448d47bc61be7e61d4c4c6535  libphobos/libdruntime/core/sys/posix/aio.d
  d2d580de88e21c5ff2e144828e88cc50  libphobos/libdruntime/core/sys/posix/arpa/inet.d
! fd11d976ba366a9c5e161cb2d5db8542  libphobos/libdruntime/core/sys/posix/config.d
! 98202cc896b9c40be409de7346d39098  libphobos/libdruntime/core/sys/posix/dirent.d
! cfcdef0b23bffbf52f445b7aa2a56bdb  libphobos/libdruntime/core/sys/posix/dlfcn.d
! 47fb0b45a6e5ea74342ab5924b8709a6  libphobos/libdruntime/core/sys/posix/fcntl.d
! 7c2ed4684f1e1236c753e224d3861bc6  libphobos/libdruntime/core/sys/posix/grp.d
! 78097ad54d7e30233bc2096505d9381f  libphobos/libdruntime/core/sys/posix/iconv.d
! 5fde0ea877bd02237ae4c8bad758af1e  libphobos/libdruntime/core/sys/posix/inttypes.d
! c582dcc48c9dbc511dcbb250b6e8e0ff  libphobos/libdruntime/core/sys/posix/libgen.d
! 4e12dcddcaf5253ab081ea5e60bb61a7  libphobos/libdruntime/core/sys/posix/locale.d
! 5cdd1d83f9dd28b654c12a503f0721bd  libphobos/libdruntime/core/sys/posix/mqueue.d
  c52e1b57a6c9a7e6c61030140d29fb1e  libphobos/libdruntime/core/sys/posix/net/if_.d
! 7fd6481e2a0bdbc488efad18f24a064d  libphobos/libdruntime/core/sys/posix/netdb.d
! 352e112b95d9f5b485e02df80a159271  libphobos/libdruntime/core/sys/posix/netinet/in_.d
  e2bed0b739fc017fa2c967cab3adf1ab  libphobos/libdruntime/core/sys/posix/netinet/tcp.d
! 5f9fe4dab895abc901288461ba26bd92  libphobos/libdruntime/core/sys/posix/poll.d
! f018b3052e24a1c26e41901675990102  libphobos/libdruntime/core/sys/posix/pthread.d
! 453c6c187ee2dc82d0fa5abc3504c0b1  libphobos/libdruntime/core/sys/posix/pwd.d
! d109055bc2aa13898d6b0589ce1b8400  libphobos/libdruntime/core/sys/posix/sched.d
! 71b41751c94288d45fe9230b3a7438c0  libphobos/libdruntime/core/sys/posix/semaphore.d
! 978a05563785ce5c3b38034e7d63cfb1  libphobos/libdruntime/core/sys/posix/setjmp.d
! fe74987b3fc4ddeca857ab247952efa8  libphobos/libdruntime/core/sys/posix/signal.d
! d0284e214eaee28922cafcf759ec0fbd  libphobos/libdruntime/core/sys/posix/spawn.d
  ce6e14eeb25bb2f98124ca8fa6cb3663  libphobos/libdruntime/core/sys/posix/stdc/time.d
! 7541cf235ea7c9276be6e22584b53ee1  libphobos/libdruntime/core/sys/posix/stdio.d
! 11edef1239c75ff58562b90313319a04  libphobos/libdruntime/core/sys/posix/stdlib.d
! 0313c7a312035edfb406e3dabd37d3ac  libphobos/libdruntime/core/sys/posix/string.d
! cfe01b190b878b0e95fb9347033971dc  libphobos/libdruntime/core/sys/posix/strings.d
! 98f89d25671784d5f8e95eb21185d303  libphobos/libdruntime/core/sys/posix/sys/filio.d
! a044bc098ab89980bb29d43e3d3b4ca3  libphobos/libdruntime/core/sys/posix/sys/ioccom.d
! 09d67cdb713be00af1591c570fadca49  libphobos/libdruntime/core/sys/posix/sys/ioctl.d
! 6ffa72d6e8368d03ff701d7eadc671fb  libphobos/libdruntime/core/sys/posix/sys/ipc.d
! bf103db23a410d8acfcd3b309d5e658e  libphobos/libdruntime/core/sys/posix/sys/mman.d
! 71e2800fd8795ce5238be51d015f215d  libphobos/libdruntime/core/sys/posix/sys/msg.d
! e1a4dc12c0e46333f1167039cc174b3e  libphobos/libdruntime/core/sys/posix/sys/resource.d
! 920e611edb76252a28fadbc6f1f7290c  libphobos/libdruntime/core/sys/posix/sys/select.d
! 665dd7ab8abc0cb410ee83d10a7af54d  libphobos/libdruntime/core/sys/posix/sys/shm.d
! c5839f9a7e1deb9fe43675915f460a28  libphobos/libdruntime/core/sys/posix/sys/socket.d
! be0501a5e64e34bfd6eb23bb96e59480  libphobos/libdruntime/core/sys/posix/sys/stat.d
! 0cb4396498587e559fd547cf368a5018  libphobos/libdruntime/core/sys/posix/sys/statvfs.d
! f71ae7f996ce3771b140c9a921b5aeb9  libphobos/libdruntime/core/sys/posix/sys/time.d
! 470b765b77b45968b1ebd355690ea493  libphobos/libdruntime/core/sys/posix/sys/ttycom.d
! 8c4f06016383b4b17081fb199684e212  libphobos/libdruntime/core/sys/posix/sys/types.d
! 2d6bebed89a89ff7ab8a98164586e3f8  libphobos/libdruntime/core/sys/posix/sys/uio.d
! 052e161c5cb19aa20eb6573d04d35678  libphobos/libdruntime/core/sys/posix/sys/un.d
! 9d80c5eb1f9e3c226152f4b1a775ade7  libphobos/libdruntime/core/sys/posix/sys/utsname.d
! 91ffccb094044117e85b3e0ec40bc3d1  libphobos/libdruntime/core/sys/posix/sys/wait.d
! 8437ee40fa6b6f2f44bf7c68f5009ab3  libphobos/libdruntime/core/sys/posix/syslog.d
! 47e71f6392a58c71d9ccf1f2d8ce57ad  libphobos/libdruntime/core/sys/posix/termios.d
! 2b8fd3f5475ffbbbc0099e30b4500536  libphobos/libdruntime/core/sys/posix/time.d
! f5075a7451b8553ec5fdbc2307469cf8  libphobos/libdruntime/core/sys/posix/ucontext.d
! b170c2fa65d62140895035c27f858ff0  libphobos/libdruntime/core/sys/posix/unistd.d
! 2df1796dfe2516e39808045b21b3ff8c  libphobos/libdruntime/core/sys/posix/utime.d
  30a7c865e2541fe983de69db93f37601  libphobos/libdruntime/core/sys/solaris/dlfcn.d
  e24762f124741eb7164ac6d35f819119  libphobos/libdruntime/core/sys/solaris/elf.d
  6609181d8ebdbb548ac7d475d0b53e25  libphobos/libdruntime/core/sys/solaris/err.d
--- 111384,111451 ----
  a9eb1c1eaf5c0383b7eda373805c48a1  libphobos/libdruntime/core/sys/openbsd/string.d
  61119274dbe0da19bb7862b1d8e3be88  libphobos/libdruntime/core/sys/openbsd/sys/cdefs.d
  4f2b043926b16e1b37a2e25509085736  libphobos/libdruntime/core/sys/openbsd/sys/elf.d
! d4381103053302df0ba8c97d46d8b62b  libphobos/libdruntime/core/sys/openbsd/sys/elf32.d
! fb3a147c098fe6a3160cdc63b6339189  libphobos/libdruntime/core/sys/openbsd/sys/elf64.d
! b0c04337726104f4eb4ab41ed3f6ba47  libphobos/libdruntime/core/sys/openbsd/sys/elf_common.d
  ed254802fe236c52abe7ec9ebf7f8f79  libphobos/libdruntime/core/sys/openbsd/sys/link_elf.d
! 9ef4589d2a7508496db59af7ba4641ab  libphobos/libdruntime/core/sys/openbsd/sys/mman.d
  b4bd052f0e8e57db0716f807263ad759  libphobos/libdruntime/core/sys/openbsd/sys/sysctl.d
  26fdce9d3769cf37bf38b5ada08836f3  libphobos/libdruntime/core/sys/openbsd/time.d
  475e7db371c2520012c6b29906055ad7  libphobos/libdruntime/core/sys/openbsd/unistd.d
! c19da98e25834b2fc1c764a437973bf8  libphobos/libdruntime/core/sys/posix/aio.d
  d2d580de88e21c5ff2e144828e88cc50  libphobos/libdruntime/core/sys/posix/arpa/inet.d
! 753c44210c9c47befaf944347649165f  libphobos/libdruntime/core/sys/posix/config.d
! 77222df1174ce1bf824da174dea45def  libphobos/libdruntime/core/sys/posix/dirent.d
! ed8af9667c4240a9d3242905b226f02d  libphobos/libdruntime/core/sys/posix/dlfcn.d
! 15b8eb105467400bffb18e23687a1f97  libphobos/libdruntime/core/sys/posix/fcntl.d
! 702d6944ce1feced53f524d8c6410bae  libphobos/libdruntime/core/sys/posix/grp.d
! 3b65fc6ea1e8b95dbe86c5d20e65f522  libphobos/libdruntime/core/sys/posix/iconv.d
! 67f194a897054ed6b4b0ec07e3764a5e  libphobos/libdruntime/core/sys/posix/inttypes.d
! 81dd20c53642e5d32550aab3d366f157  libphobos/libdruntime/core/sys/posix/libgen.d
! f872163f7db8d6c4044ed0ec34497240  libphobos/libdruntime/core/sys/posix/locale.d
! 41f755d1e19890c74530b6acc9c193eb  libphobos/libdruntime/core/sys/posix/mqueue.d
  c52e1b57a6c9a7e6c61030140d29fb1e  libphobos/libdruntime/core/sys/posix/net/if_.d
! 13b8dae9bab5062136d53ccebd082d85  libphobos/libdruntime/core/sys/posix/netdb.d
! c7dcd36f9e6a7e0c43c734446334ad92  libphobos/libdruntime/core/sys/posix/netinet/in_.d
  e2bed0b739fc017fa2c967cab3adf1ab  libphobos/libdruntime/core/sys/posix/netinet/tcp.d
! 5510e426fa4a2a90b0a79841d319e8f4  libphobos/libdruntime/core/sys/posix/poll.d
! dc2efa5751c64d98f883ba967ccdf64d  libphobos/libdruntime/core/sys/posix/pthread.d
! a228203a75c388b65c27a7059185e352  libphobos/libdruntime/core/sys/posix/pwd.d
! dca2ed8976351f808aaaaf8bfaa2ca34  libphobos/libdruntime/core/sys/posix/sched.d
! 0d3f923f59a85545956c41021acd5c5b  libphobos/libdruntime/core/sys/posix/semaphore.d
! c7e11e9d4e2dc837c4623d225811983e  libphobos/libdruntime/core/sys/posix/setjmp.d
! ef6a79897fcfc1a0ee5f1434b606d4bd  libphobos/libdruntime/core/sys/posix/signal.d
! e61bb22c1e4f3f67e5a4b10f660d6bc0  libphobos/libdruntime/core/sys/posix/spawn.d
  ce6e14eeb25bb2f98124ca8fa6cb3663  libphobos/libdruntime/core/sys/posix/stdc/time.d
! fbb04909de62a4a4f4a95cfff272c7a3  libphobos/libdruntime/core/sys/posix/stdio.d
! 1dacf73803bc7f397074b38943d014f2  libphobos/libdruntime/core/sys/posix/stdlib.d
! 31250e25bf1f561eaa4964f60a8df6fb  libphobos/libdruntime/core/sys/posix/string.d
! 0a83f207b25c02c481a61faf3207cb6c  libphobos/libdruntime/core/sys/posix/strings.d
! 4b07be0d0a605b5a855496178e995b95  libphobos/libdruntime/core/sys/posix/sys/filio.d
! b02e329aa6c0d9275bc5c2570f426a80  libphobos/libdruntime/core/sys/posix/sys/ioccom.d
! 9bd99416560c21132ad3baf480413d7d  libphobos/libdruntime/core/sys/posix/sys/ioctl.d
! b925ee7e2e3334ef78aa53486af14a6a  libphobos/libdruntime/core/sys/posix/sys/ipc.d
! 62d832bae803f661ee71cc9ef368cb1c  libphobos/libdruntime/core/sys/posix/sys/mman.d
! 3cf85477813d91c95edf6e56478e2b9f  libphobos/libdruntime/core/sys/posix/sys/msg.d
! 60b8650f67cea20d09485c4497e0abec  libphobos/libdruntime/core/sys/posix/sys/resource.d
! 7f592fbb252f6f17bdd94ab6a4bce5a9  libphobos/libdruntime/core/sys/posix/sys/select.d
! 81d15dd9b6a8d1f517857d304968b834  libphobos/libdruntime/core/sys/posix/sys/shm.d
! 1ef4e9bdfe7ab8b811f908d042565194  libphobos/libdruntime/core/sys/posix/sys/socket.d
! 591967e602450509d00015fc6e756b93  libphobos/libdruntime/core/sys/posix/sys/stat.d
! 0f34a241c1111f17546e0563ebf91972  libphobos/libdruntime/core/sys/posix/sys/statvfs.d
! ab3f7338ce7949e238728e6631e10e7b  libphobos/libdruntime/core/sys/posix/sys/time.d
! 7c741b07659843e1e0332e784c324e3f  libphobos/libdruntime/core/sys/posix/sys/ttycom.d
! f43b449fa2b3db82f85bddfb9e41f86c  libphobos/libdruntime/core/sys/posix/sys/types.d
! 571b12f57fc1cf1ed69c5fcce8b89de4  libphobos/libdruntime/core/sys/posix/sys/uio.d
! 51f7afe07c50617af673fc2dbdf3cf40  libphobos/libdruntime/core/sys/posix/sys/un.d
! cac398e14e045ed42244544f84db5c9a  libphobos/libdruntime/core/sys/posix/sys/utsname.d
! 373a749fe86c1b74bb6fa2483c3acc63  libphobos/libdruntime/core/sys/posix/sys/wait.d
! 63c078cb4f123c4469cc1b2af384767d  libphobos/libdruntime/core/sys/posix/syslog.d
! 7f8c41dea7291b93e10e0697c5c192bb  libphobos/libdruntime/core/sys/posix/termios.d
! 5d1c0ca3d818900f2bfffc4a19b3b57a  libphobos/libdruntime/core/sys/posix/time.d
! f7310d52de341d6828959d0d35d35cfa  libphobos/libdruntime/core/sys/posix/ucontext.d
! 2ec14e511b540a619450501226cae004  libphobos/libdruntime/core/sys/posix/unistd.d
! 9414f9f2c6d77b7a1e93b61a9916681c  libphobos/libdruntime/core/sys/posix/utime.d
  30a7c865e2541fe983de69db93f37601  libphobos/libdruntime/core/sys/solaris/dlfcn.d
  e24762f124741eb7164ac6d35f819119  libphobos/libdruntime/core/sys/solaris/elf.d
  6609181d8ebdbb548ac7d475d0b53e25  libphobos/libdruntime/core/sys/solaris/err.d
*************** d821485cf4fb84fc3a4823d17496c304  libpho
*** 103359,103593 ****
  13168aebf00d1f79d79f7aa9a14ee45e  libphobos/libdruntime/core/sys/solaris/libelf.d
  b80defc2ca94dd32d65995270ef8aed4  libphobos/libdruntime/core/sys/solaris/link.d
  9ab55da380bb23d8586ee2d0026f2d88  libphobos/libdruntime/core/sys/solaris/stdlib.d
! c3db7c4e95d93801f0cd1cf84355bb35  libphobos/libdruntime/core/sys/solaris/sys/elf.d
  5d49ba8540337b3091779630f6322638  libphobos/libdruntime/core/sys/solaris/sys/elf_386.d
  546d1db9dd4a4d870ec967cc605fc9e7  libphobos/libdruntime/core/sys/solaris/sys/elf_SPARC.d
  c3b9387d319e17b1825a2b306d1b524d  libphobos/libdruntime/core/sys/solaris/sys/elf_amd64.d
  0884e0943c7a980f29212b1293b12dba  libphobos/libdruntime/core/sys/solaris/sys/elf_notes.d
! eeffc8caf2a16c5f95ba55a3c48f70f1  libphobos/libdruntime/core/sys/solaris/sys/elftypes.d
! b9faed4c0872089959f3d536c5ef4859  libphobos/libdruntime/core/sys/solaris/sys/link.d
! 09a2230de7a96352a53b3f009e51e1aa  libphobos/libdruntime/core/sys/solaris/sys/priocntl.d
! ee0171b87244b69c4c653ae92f3ecdc3  libphobos/libdruntime/core/sys/solaris/sys/procset.d
  62c2f92b9a740d50758085899522502d  libphobos/libdruntime/core/sys/solaris/sys/types.d
  f3220636fa9a34351a43f51401f4186d  libphobos/libdruntime/core/sys/solaris/time.d
  808bc3a894b23f128a067e177eb6ca6c  libphobos/libdruntime/core/sys/windows/accctrl.d
! 151e5ba9d91712b72628d18e54c9998d  libphobos/libdruntime/core/sys/windows/aclapi.d
! 29e20fb5eeaa05b57ed29baea8781346  libphobos/libdruntime/core/sys/windows/aclui.d
! 146ed1ee14179ec5cf0c726c82125998  libphobos/libdruntime/core/sys/windows/basetsd.d
! 4c02d659cd57f85f360517e218a6c914  libphobos/libdruntime/core/sys/windows/basetyps.d
  f66a616c8baaf64c29936cd3048d19e6  libphobos/libdruntime/core/sys/windows/cderr.d
! 12902fe04a0fa0ff16f1b161d543b8a1  libphobos/libdruntime/core/sys/windows/cguid.d
! 76bef2951a092c3c8357d154f511f7d6  libphobos/libdruntime/core/sys/windows/com.d
! 00498300c262c4ceadf89d0935b8a938  libphobos/libdruntime/core/sys/windows/comcat.d
! 622a690fb04316d2a3f4f8d86994ce88  libphobos/libdruntime/core/sys/windows/commctrl.d
! 83c5d2a3950691d3654234e46f1162e7  libphobos/libdruntime/core/sys/windows/commdlg.d
  bf3823be2764fc604e8c83099bd0aa17  libphobos/libdruntime/core/sys/windows/core.d
! df17db5eb7c80b7490d6a14fb9f80cb3  libphobos/libdruntime/core/sys/windows/cpl.d
! 6b3f1d204af577016f8b018b87e05240  libphobos/libdruntime/core/sys/windows/cplext.d
! 617edb3cf4c35f1055c617b872227108  libphobos/libdruntime/core/sys/windows/custcntl.d
! 2fefa13da27ec9e41a963fae8978afa9  libphobos/libdruntime/core/sys/windows/dbghelp.d
! 8cba1e0d4f91578ef2364a4888827226  libphobos/libdruntime/core/sys/windows/dbghelp_types.d
! e7f7e42fdee549a56be94902151e47d6  libphobos/libdruntime/core/sys/windows/dbt.d
! 37a1fb068305a62b9c66df98781218f4  libphobos/libdruntime/core/sys/windows/dde.d
! fe15c852c0c7a10ea6d2833505584b67  libphobos/libdruntime/core/sys/windows/ddeml.d
! 70746c5e5b147656e175f05355c7982b  libphobos/libdruntime/core/sys/windows/dhcpcsdk.d
! 6506f0b30bb19c98c056a0c62697fdb6  libphobos/libdruntime/core/sys/windows/dlgs.d
! 404f647595bc029816b13355c127c38b  libphobos/libdruntime/core/sys/windows/dll.d
! a13bdf38ebe3de9554aee2155ae12616  libphobos/libdruntime/core/sys/windows/docobj.d
! 9bca48c59fb5b059d2996d1126ee8464  libphobos/libdruntime/core/sys/windows/errorrep.d
! f44f2732a8930a345732ff9a0b1493b0  libphobos/libdruntime/core/sys/windows/exdisp.d
  21344ae84f3cfdcad624405fd4f21b8b  libphobos/libdruntime/core/sys/windows/exdispid.d
! 122bbb052c73613abea20b303f8b6ceb  libphobos/libdruntime/core/sys/windows/httpext.d
  7753f59cbc132e8a4800c4fc3741ec02  libphobos/libdruntime/core/sys/windows/idispids.d
! d4560e2819944dd4c5a60c02cdc08ba5  libphobos/libdruntime/core/sys/windows/imagehlp.d
! 3ed036c15c08b64145ca5a8ccc7fb0d4  libphobos/libdruntime/core/sys/windows/imm.d
! c2639eba9c9089ceb381771790e7bf26  libphobos/libdruntime/core/sys/windows/intshcut.d
! ac534f781dcf76e028ad27f1528cf89a  libphobos/libdruntime/core/sys/windows/ipexport.d
! dc802d3452377a6b88993766ef9776d4  libphobos/libdruntime/core/sys/windows/iphlpapi.d
  4a361a77b16ca812d5966b8fe5263c1d  libphobos/libdruntime/core/sys/windows/ipifcons.d
! 78b566b86a7049c78670bab480910a5a  libphobos/libdruntime/core/sys/windows/iprtrmib.d
! d059a7e960da041f5ebb2ec690a7e7e2  libphobos/libdruntime/core/sys/windows/iptypes.d
  3cb08ac571b1a256214aabdbc13d2652  libphobos/libdruntime/core/sys/windows/isguids.d
! 922979b5f58c38b51bc0d5c2ecd24938  libphobos/libdruntime/core/sys/windows/lm.d
! 0b104b3847649e322fdb9fe0ba559e57  libphobos/libdruntime/core/sys/windows/lmaccess.d
! 7439bc81efd9941de0ab33db3d2294cc  libphobos/libdruntime/core/sys/windows/lmalert.d
  0dd23d8078b94a75924984e1e5768732  libphobos/libdruntime/core/sys/windows/lmapibuf.d
! a5d612f7bc3df0b78b45a67c18eaca93  libphobos/libdruntime/core/sys/windows/lmat.d
! 8435d939538280707ad01a653f53dd3e  libphobos/libdruntime/core/sys/windows/lmaudit.d
! b602f201f692e96e95fe540a0fc27255  libphobos/libdruntime/core/sys/windows/lmbrowsr.d
! 937408cb87fc7f5b696adffb1196f4ca  libphobos/libdruntime/core/sys/windows/lmchdev.d
! ebf86bf2bb28a864f110cdc3a1bbe73f  libphobos/libdruntime/core/sys/windows/lmconfig.d
! 4d2f5b0f1d449079f9fee12c3d16e922  libphobos/libdruntime/core/sys/windows/lmcons.d
! 2fb03122a07ee35724f35d7be802b5b2  libphobos/libdruntime/core/sys/windows/lmerr.d
! ff2eb004806cc98d2df8099e1ce27755  libphobos/libdruntime/core/sys/windows/lmerrlog.d
! 46c567cdd1c12be842c23546c955c212  libphobos/libdruntime/core/sys/windows/lmmsg.d
! bdf0b485c83f3731455b4eabac272899  libphobos/libdruntime/core/sys/windows/lmremutl.d
! cf42c487ec64f310c4ac5b7f17e2177e  libphobos/libdruntime/core/sys/windows/lmrepl.d
! 8c09698cf9ca3bdaff13f4caefd6e15f  libphobos/libdruntime/core/sys/windows/lmserver.d
! 88cc920e9a2f1fefa06c75d8246b0583  libphobos/libdruntime/core/sys/windows/lmshare.d
! d027c4af37e8c12d04a1715366ccdc83  libphobos/libdruntime/core/sys/windows/lmsname.d
! 412f6c37b95f96955edf8c914f55e96e  libphobos/libdruntime/core/sys/windows/lmstats.d
! b20537a3ea8fcdc8964054cd4d873943  libphobos/libdruntime/core/sys/windows/lmsvc.d
! d50c55420d146dcadf38831b4fa927ab  libphobos/libdruntime/core/sys/windows/lmuse.d
  3e13960adb39f79707752dc97f60561c  libphobos/libdruntime/core/sys/windows/lmuseflg.d
! e9f010e929ed07ba22d2e81b961cb390  libphobos/libdruntime/core/sys/windows/lmwksta.d
! 6de49c0025143388de940c9e9fa1ae57  libphobos/libdruntime/core/sys/windows/lzexpand.d
! 83f824c5d5fa123dbc34469a730fe902  libphobos/libdruntime/core/sys/windows/mapi.d
! 5d46c44f541d116eaa7c93fc80e133df  libphobos/libdruntime/core/sys/windows/mciavi.d
! 4a8ea97fc482228f528f6dcf9c377a21  libphobos/libdruntime/core/sys/windows/mcx.d
! 7fe9440c7a284de9254ad73e70f763a3  libphobos/libdruntime/core/sys/windows/mgmtapi.d
! 559684c9014d05477bde270c5d2bf0ef  libphobos/libdruntime/core/sys/windows/mmsystem.d
! ff901131d405bbadc1b0fea91e7e1cd1  libphobos/libdruntime/core/sys/windows/msacm.d
! a2da78a3535fa3f6cfb6b16b6c125c8b  libphobos/libdruntime/core/sys/windows/mshtml.d
! 98dbded17063660a927ad1a6ae925ebc  libphobos/libdruntime/core/sys/windows/mswsock.d
! b58bdb461f981df50552c0296f6f6404  libphobos/libdruntime/core/sys/windows/nb30.d
! 6ff0c83f83b987d58d87451ed0e341a9  libphobos/libdruntime/core/sys/windows/nddeapi.d
! 5b555c3e204031838e566cb84cd88279  libphobos/libdruntime/core/sys/windows/nspapi.d
! 980b97100d5c5ee55701daeb50eab3cd  libphobos/libdruntime/core/sys/windows/ntdef.d
! 8f8e68fe1f6387e97f28b1158fc0b37e  libphobos/libdruntime/core/sys/windows/ntdll.d
! 2732aaced270a5a97c0e2e05d75d7c34  libphobos/libdruntime/core/sys/windows/ntldap.d
! 02e288fb55334b235c205f171841d15b  libphobos/libdruntime/core/sys/windows/ntsecapi.d
! c5701a15c9a2cd17576f2c6e3d62cc1c  libphobos/libdruntime/core/sys/windows/ntsecpkg.d
! 8070357184723d2c4d1a8875eae99318  libphobos/libdruntime/core/sys/windows/oaidl.d
! 0697d08221761dcaa1a7086abb320407  libphobos/libdruntime/core/sys/windows/objbase.d
! 4267fab7b1ca86bae18c9c90b5a6b197  libphobos/libdruntime/core/sys/windows/objfwd.d
! 845d75362906da6811abbc54f3b5d027  libphobos/libdruntime/core/sys/windows/objidl.d
! f4fc33b1f8b5cd6f06addbf307cf2ff4  libphobos/libdruntime/core/sys/windows/objsafe.d
! 198604924bdda3ff81e0729c0bf3ac15  libphobos/libdruntime/core/sys/windows/ocidl.d
! 9b9a26858a4fd880490432c245c690fb  libphobos/libdruntime/core/sys/windows/odbcinst.d
! 575706a85de3aec2342a34b8868e613c  libphobos/libdruntime/core/sys/windows/ole.d
! 5734631476d9df969aad11f6103edb31  libphobos/libdruntime/core/sys/windows/ole2.d
  314785a8f31488c44e22711f37b32e61  libphobos/libdruntime/core/sys/windows/ole2ver.d
! 896628c955c05512204ace6daa906826  libphobos/libdruntime/core/sys/windows/oleacc.d
! 31a233e2bec447d79df3b2b79d3c086b  libphobos/libdruntime/core/sys/windows/oleauto.d
! 309ccba932d6d38cb0d30fa3be1a3a49  libphobos/libdruntime/core/sys/windows/olectl.d
! bcfcb5e089cf2722c3645d9de6b80cee  libphobos/libdruntime/core/sys/windows/olectlid.d
! 06986de3f9ef2d22f5e28b160b4fac84  libphobos/libdruntime/core/sys/windows/oledlg.d
! 91d8b3eb219b474645037c973d132ece  libphobos/libdruntime/core/sys/windows/oleidl.d
! 23ac24afbecb650eae083d9cf8e1fc2a  libphobos/libdruntime/core/sys/windows/pbt.d
! facc59b9efb9529c6f83982948201022  libphobos/libdruntime/core/sys/windows/powrprof.d
! e5032dbd97f773bfb25561e44cf7c6d3  libphobos/libdruntime/core/sys/windows/prsht.d
! c02fb8478d7f18e5628358fe9faf628c  libphobos/libdruntime/core/sys/windows/psapi.d
! 7b85b9970ef810a987a52f0dc47440c8  libphobos/libdruntime/core/sys/windows/rapi.d
! a399a9ef556c6dfb985cfb9b38721506  libphobos/libdruntime/core/sys/windows/ras.d
! 865844dfab4cca39800c73125dc30b29  libphobos/libdruntime/core/sys/windows/rasdlg.d
! 06627529abcd0f6e279452d4a7d666cd  libphobos/libdruntime/core/sys/windows/raserror.d
! 4ed0efae8172578fd8c0679e6290050a  libphobos/libdruntime/core/sys/windows/rassapi.d
! 9a443c0cca7de43a2859ebce16a8cb1a  libphobos/libdruntime/core/sys/windows/reason.d
! 15539dc5a802e7919743b8b2b38c3f4e  libphobos/libdruntime/core/sys/windows/regstr.d
! 974903a5c908898eb13395f7af19f800  libphobos/libdruntime/core/sys/windows/richedit.d
! 5e89af43fc43cd921f66fa94761f0db9  libphobos/libdruntime/core/sys/windows/richole.d
! b5d353f75afbe10c4cc16428b8cede58  libphobos/libdruntime/core/sys/windows/rpc.d
! 70d87685e382f424fd27a814bbc1511d  libphobos/libdruntime/core/sys/windows/rpcdce.d
! baf4c16ad6af324e1a8dc46e2eb7b174  libphobos/libdruntime/core/sys/windows/rpcdce2.d
! 71db721c4533482c664b5a8c77e60166  libphobos/libdruntime/core/sys/windows/rpcdcep.d
! 4dabfa6de0b0862bcefea7216ef5466e  libphobos/libdruntime/core/sys/windows/rpcndr.d
! 9b6f247e39479dc6caca4594ad103071  libphobos/libdruntime/core/sys/windows/rpcnsi.d
! 82dbf3bc1821c352871cef7cad538ded  libphobos/libdruntime/core/sys/windows/rpcnsip.d
! 0e1b07ddd360edef714715e4ca46f361  libphobos/libdruntime/core/sys/windows/rpcnterr.d
! 9a7e69a3857a1b4fac20cd72f0cb8541  libphobos/libdruntime/core/sys/windows/schannel.d
! cfa3380c0e66aaa12066e31e4d6630be  libphobos/libdruntime/core/sys/windows/sdkddkver.d
! 5d16a207e9dc066fe434aec578a3c604  libphobos/libdruntime/core/sys/windows/secext.d
! aba2c3ed010703a24b3eaa314c7dba77  libphobos/libdruntime/core/sys/windows/security.d
! 03bb6b9eaf7e0693781e8af3b75708ab  libphobos/libdruntime/core/sys/windows/servprov.d
! 10f889f1c8a589330633e9ec58d97910  libphobos/libdruntime/core/sys/windows/setupapi.d
! 5c66c853dea7d0fbd72ac8b78621d0e8  libphobos/libdruntime/core/sys/windows/shellapi.d
! a432c5e0781edcc3cef8d95bfe24ad08  libphobos/libdruntime/core/sys/windows/shldisp.d
! bdaaf613b56d24a3c3af405eb9a46626  libphobos/libdruntime/core/sys/windows/shlguid.d
! 76225ade83dfcc518ba4e607e95d38f9  libphobos/libdruntime/core/sys/windows/shlobj.d
! c78ae3ed78254f32c759570cb1d63d2e  libphobos/libdruntime/core/sys/windows/shlwapi.d
! e2dcb8e3afc4f00f435c6259685ff2a2  libphobos/libdruntime/core/sys/windows/snmp.d
! 97c0084e489fb243944088f1fb87ce07  libphobos/libdruntime/core/sys/windows/sql.d
! 16234ad84092905079116811d6c036b4  libphobos/libdruntime/core/sys/windows/sqlext.d
! 18d212dea8889cee60ef40a478928578  libphobos/libdruntime/core/sys/windows/sqltypes.d
! 7dcb4c6605f0fe5957d3ce91edfd9a15  libphobos/libdruntime/core/sys/windows/sqlucode.d
! 49e6c2e84a7af5842c1fe4a2e36d4272  libphobos/libdruntime/core/sys/windows/sspi.d
! fe2b1b324ddc31d4721bf8f161a1ce05  libphobos/libdruntime/core/sys/windows/stacktrace.d
! 138ada52a6bb558470c32fc96b1b63ea  libphobos/libdruntime/core/sys/windows/stat.d
! 982f10eb707bc52e123da86bb6f9aa2d  libphobos/libdruntime/core/sys/windows/stdc/malloc.d
  33fcc28066c3bb9129080337483b0f97  libphobos/libdruntime/core/sys/windows/stdc/time.d
! 82d937074fe877870140063446034882  libphobos/libdruntime/core/sys/windows/subauth.d
! e7e393070a6f9ebc51696a32de60f6b9  libphobos/libdruntime/core/sys/windows/threadaux.d
! 1f7972a97e739307650b2de2f6b6b804  libphobos/libdruntime/core/sys/windows/tlhelp32.d
! 1aea628954553309f097770c83968050  libphobos/libdruntime/core/sys/windows/tmschema.d
! 972272bd882f6fcd626f033322fc7d51  libphobos/libdruntime/core/sys/windows/unknwn.d
! ce81808a97b10b192404ef60d9c75dbe  libphobos/libdruntime/core/sys/windows/uuid.d
! bbda9656dc96dc445df85d544e737fb4  libphobos/libdruntime/core/sys/windows/vfw.d
! 648e271a7583f8d496bf6f71fa45ed07  libphobos/libdruntime/core/sys/windows/w32api.d
! f7195e29b9ea24e5fcec89a185d9d94d  libphobos/libdruntime/core/sys/windows/winbase.d
! f4cbeab1ae700532603665052a1fbd0a  libphobos/libdruntime/core/sys/windows/winber.d
! 8de74d2b2d896f082fefd7d01860e185  libphobos/libdruntime/core/sys/windows/wincon.d
! 55a67f2369a07dcb366599f84826d85c  libphobos/libdruntime/core/sys/windows/wincrypt.d
! 496b1ef7b5e110d849d7f3176286a782  libphobos/libdruntime/core/sys/windows/windef.d
! cf151ed8a277c0eb333946bed00e7ff4  libphobos/libdruntime/core/sys/windows/windows.d
! c2c89dcd50f4bc8d193dfb43e01f9ae5  libphobos/libdruntime/core/sys/windows/winerror.d
! 6ebd0c6d0a3b05b7f04d01e159932391  libphobos/libdruntime/core/sys/windows/wingdi.d
! d059136d9dc00ac4186ccdfc97d18c0b  libphobos/libdruntime/core/sys/windows/winhttp.d
! f6bd0d2401a53d557545afb545c7e40b  libphobos/libdruntime/core/sys/windows/wininet.d
! a5db320dd8926e255a554ccb836bdf47  libphobos/libdruntime/core/sys/windows/winioctl.d
! 5c6c241e9881e6c0aa0f01e4a26d3d85  libphobos/libdruntime/core/sys/windows/winldap.d
! 26a591867e39731685d8d2b721958d0d  libphobos/libdruntime/core/sys/windows/winnetwk.d
! 8b79166be23b6b752655e083e2e19810  libphobos/libdruntime/core/sys/windows/winnls.d
! 6f319fb9cfc3eb27daca7dcd1e2c0497  libphobos/libdruntime/core/sys/windows/winnt.d
! 6a2b53e6d523cdf0fa15861a8a2130e2  libphobos/libdruntime/core/sys/windows/winperf.d
! b66e5153bab0f07eba03e7d5cb7b949d  libphobos/libdruntime/core/sys/windows/winreg.d
! 58898fbc427949691097ea2bc559e461  libphobos/libdruntime/core/sys/windows/winsock2.d
! e12c4833ab1f1373921cc9d2f260ea37  libphobos/libdruntime/core/sys/windows/winspool.d
! 776c9177c1bac43deebc4dda460bfebe  libphobos/libdruntime/core/sys/windows/winsvc.d
! dc199811f0290ee8468f34bc187c8de2  libphobos/libdruntime/core/sys/windows/winuser.d
! 2a4f3e05bc9c401da3f050ff6cadd070  libphobos/libdruntime/core/sys/windows/winver.d
! d54adc4971007736dd7835c28aa54599  libphobos/libdruntime/core/sys/windows/wtsapi32.d
! 0e4381cfce5a20c4c7c4c40dc48a0f77  libphobos/libdruntime/core/sys/windows/wtypes.d
  9094c28b1e25c7802bae1054ff893274  libphobos/libdruntime/core/thread/context.d
! f68c376a5b9520a30c12634c4adce53f  libphobos/libdruntime/core/thread/fiber.d
! 521c5c83eaf237ec400d8219e0628cce  libphobos/libdruntime/core/thread/osthread.d
  9b6ee3a7c47a4d264ce79b0c16495747  libphobos/libdruntime/core/thread/package.d
! 65b55cf17fa4d056e58a6b20592c8f03  libphobos/libdruntime/core/thread/threadbase.d
  c1ed5b58527141cfd45c44e71ae05ec8  libphobos/libdruntime/core/thread/threadgroup.d
! 12e24b84e408496a6d50f1b25ac7faed  libphobos/libdruntime/core/thread/types.d
! 01a8282e7aeb5ac349967ba8d24048b8  libphobos/libdruntime/core/time.d
! ba840dec340cd1fed28cbc0a57224321  libphobos/libdruntime/core/vararg.d
  4cf99596b90593fec63debe10874dfdb  libphobos/libdruntime/core/volatile.d
! deebefba0b6c32a2d8d47c8f9617b3c5  libphobos/libdruntime/gcc/attribute.d
! f53c4bd589f04b8fa61e409abb4efcf9  libphobos/libdruntime/gcc/attributes.d
! 4b65b7ba63d28167ae0c27a1105dc8ec  libphobos/libdruntime/gcc/backtrace.d
! 736619eabfb82dff8a9c85ca405cd3a8  libphobos/libdruntime/gcc/builtins.d
! f019bb4efd5dd1040cda211f04e5a293  libphobos/libdruntime/gcc/config.d.in
! f6f562bf67c85f659608158ab22113bd  libphobos/libdruntime/gcc/deh.d
! ee6922c9cc81503907572a1a415a0df1  libphobos/libdruntime/gcc/drtstuff.c
! bb4c5bcb2c1ee8f5dbe465c4aa9282f8  libphobos/libdruntime/gcc/emutls.d
! ebd6b867b96875ce699a8531b0a1407f  libphobos/libdruntime/gcc/gthread.d
! dd60dd69730681269ba31b21bfbe290d  libphobos/libdruntime/gcc/libbacktrace.d.in
! 297f49a1ddb40ed1dd21a441ab51262a  libphobos/libdruntime/gcc/sections/common.d
! 6c5e21b164e4c4720695e24255ef37ae  libphobos/libdruntime/gcc/sections/elf.d
! 6a581b483b45c01f9ade77f382dfd472  libphobos/libdruntime/gcc/sections/macho.d
! a3345fbce1c2166b7e2c352666b1db99  libphobos/libdruntime/gcc/sections/package.d
! 88f56bf3980baf51d44a5b7d3bfc5128  libphobos/libdruntime/gcc/sections/pecoff.d
! 7bf88f5bb33176fabb1430b3c4b67581  libphobos/libdruntime/gcc/unwind/arm.d
! 426331331e95b80fc6b4e3e0c098db5c  libphobos/libdruntime/gcc/unwind/arm_common.d
! e4ced11e3a1a8d4f122b9861f77fbd97  libphobos/libdruntime/gcc/unwind/c6x.d
! e740d3a1108b5c71bc7afa00fa91c71f  libphobos/libdruntime/gcc/unwind/generic.d
! 8e746dca72078bccb916afb79713f5bd  libphobos/libdruntime/gcc/unwind/package.d
! c538806fe61dd1559955501227f6b649  libphobos/libdruntime/gcc/unwind/pe.d
! 365bcfbdd4b8be9c912a1580acda00f6  libphobos/libdruntime/object.d
! 26d2e0e3b3a41e505f88520718918a8b  libphobos/libdruntime/rt/aApply.d
! 011efd978fd56e81e312bf1575d79d40  libphobos/libdruntime/rt/aApplyR.d
! 13541412aa8cecd56d7787bcb22dec09  libphobos/libdruntime/rt/aaA.d
  c50bbbb450796967c2c51cf3fef9da14  libphobos/libdruntime/rt/adi.d
- 7fd38486c3e675cc117a5a8a488fb6ab  libphobos/libdruntime/rt/arrayassign.d
  8d7590e2d80123970d6ffadec3b61738  libphobos/libdruntime/rt/arraycat.d
  c77f95b637563a0cfa639db5e1702145  libphobos/libdruntime/rt/cast_.d
  e356126947e7110fb24ae47490f6dde1  libphobos/libdruntime/rt/config.d
! c25c7722f38f79cec022a1fa60e1bf1c  libphobos/libdruntime/rt/critical_.d
! 69d6ca3eca1d939909bbb1575e2e957c  libphobos/libdruntime/rt/deh.d
! e2b07c5412b917379e9ec1d750d858d2  libphobos/libdruntime/rt/dmain2.d
! 1d633137c4f1501ea0ad70dabff55ce5  libphobos/libdruntime/rt/dylib_fixes.c
! 9c6b80bda130cfa4691d6c3e91e916dc  libphobos/libdruntime/rt/ehalloc.d
  558c02062a26469537c962127a6722db  libphobos/libdruntime/rt/invariant.d
! 11af16adde9a49f1089cd85f7de66dcc  libphobos/libdruntime/rt/lifetime.d
  3256fa529b5c773a7af9a6a8a2e989cb  libphobos/libdruntime/rt/memory.d
! 5f1ab316616c37588dacbfcbf1023270  libphobos/libdruntime/rt/minfo.d
! ae09fcbab0db0e0d41790bf453925601  libphobos/libdruntime/rt/monitor_.d
  008975c2c08f12ee0d0dd8c682932dfc  libphobos/libdruntime/rt/profilegc.d
  d5fb28a0b82b9570223e40df91e38cb4  libphobos/libdruntime/rt/sections.d
  c7a6041a6bac5ecaf2e2688bf5eea41b  libphobos/libdruntime/rt/tlsgc.d
--- 111453,111687 ----
  13168aebf00d1f79d79f7aa9a14ee45e  libphobos/libdruntime/core/sys/solaris/libelf.d
  b80defc2ca94dd32d65995270ef8aed4  libphobos/libdruntime/core/sys/solaris/link.d
  9ab55da380bb23d8586ee2d0026f2d88  libphobos/libdruntime/core/sys/solaris/stdlib.d
! 9fb6ca59babfdba67d5bb0f0694e6ca5  libphobos/libdruntime/core/sys/solaris/sys/elf.d
  5d49ba8540337b3091779630f6322638  libphobos/libdruntime/core/sys/solaris/sys/elf_386.d
  546d1db9dd4a4d870ec967cc605fc9e7  libphobos/libdruntime/core/sys/solaris/sys/elf_SPARC.d
  c3b9387d319e17b1825a2b306d1b524d  libphobos/libdruntime/core/sys/solaris/sys/elf_amd64.d
  0884e0943c7a980f29212b1293b12dba  libphobos/libdruntime/core/sys/solaris/sys/elf_notes.d
! f1f35972178ce37f816175ba4676fc2f  libphobos/libdruntime/core/sys/solaris/sys/elftypes.d
! cf08432132370b23ab8de6e57326066c  libphobos/libdruntime/core/sys/solaris/sys/link.d
! 01ad44a798d3a6cacf0f6e4e13d2989c  libphobos/libdruntime/core/sys/solaris/sys/priocntl.d
! 67eaa20b824ef3dbe41dfa081f40d971  libphobos/libdruntime/core/sys/solaris/sys/procset.d
  62c2f92b9a740d50758085899522502d  libphobos/libdruntime/core/sys/solaris/sys/types.d
  f3220636fa9a34351a43f51401f4186d  libphobos/libdruntime/core/sys/solaris/time.d
  808bc3a894b23f128a067e177eb6ca6c  libphobos/libdruntime/core/sys/windows/accctrl.d
! 1d1dd386ba54d185582671453bd8ed5c  libphobos/libdruntime/core/sys/windows/aclapi.d
! 8fed00b7b5c95e5b94d866c430b877c0  libphobos/libdruntime/core/sys/windows/aclui.d
! a19062828476a64c97ca16dc7a218417  libphobos/libdruntime/core/sys/windows/basetsd.d
! da757341fa2bf63b89a77fc158634cd0  libphobos/libdruntime/core/sys/windows/basetyps.d
  f66a616c8baaf64c29936cd3048d19e6  libphobos/libdruntime/core/sys/windows/cderr.d
! 40cf12972559ab3d59832fa5372fb9fd  libphobos/libdruntime/core/sys/windows/cguid.d
! 629b11b6597684f0a7fc2fe4f7903f68  libphobos/libdruntime/core/sys/windows/com.d
! 55640e2c23753bb0bba7db96a69a7df2  libphobos/libdruntime/core/sys/windows/comcat.d
! 6c625de2a3d71043890e2aa32667c3d0  libphobos/libdruntime/core/sys/windows/commctrl.d
! 5fcc424ba57cfc222dbc3c99baa12384  libphobos/libdruntime/core/sys/windows/commdlg.d
  bf3823be2764fc604e8c83099bd0aa17  libphobos/libdruntime/core/sys/windows/core.d
! 080a37029d0af10fff081dcb013c4520  libphobos/libdruntime/core/sys/windows/cpl.d
! 82463589a4bed21f6f5bb3c590d3b4ac  libphobos/libdruntime/core/sys/windows/cplext.d
! 9f449f4c7f6621894c31f2e351bb0e3b  libphobos/libdruntime/core/sys/windows/custcntl.d
! 1ad43393b13b612872251604214436a9  libphobos/libdruntime/core/sys/windows/dbghelp.d
! 5d026ec2e43ebbbe3f06a24f39348ee9  libphobos/libdruntime/core/sys/windows/dbghelp_types.d
! 94f7cb8b5aabbcd911308efc2d9cccc0  libphobos/libdruntime/core/sys/windows/dbt.d
! f09eefe2d979ffa1e25e9954a2a4d3e4  libphobos/libdruntime/core/sys/windows/dde.d
! 6c264c40e83995c420dc756931128b66  libphobos/libdruntime/core/sys/windows/ddeml.d
! e1eb8890b4898774e2a3602882517bd6  libphobos/libdruntime/core/sys/windows/dhcpcsdk.d
! 8bb836897d3d7f5aa12f841f5b353fd9  libphobos/libdruntime/core/sys/windows/dlgs.d
! 6dea9dc59bf72a9cfa5fd28a6fb63ea7  libphobos/libdruntime/core/sys/windows/dll.d
! fc9f643ad5f4f8758f50dffad0f61578  libphobos/libdruntime/core/sys/windows/docobj.d
! 40d733fb80d2a5315e64353b464bb510  libphobos/libdruntime/core/sys/windows/errorrep.d
! a70075fe066cb624c031847f005428a6  libphobos/libdruntime/core/sys/windows/exdisp.d
  21344ae84f3cfdcad624405fd4f21b8b  libphobos/libdruntime/core/sys/windows/exdispid.d
! d0d33d40c4a490718a0fc7a726d25758  libphobos/libdruntime/core/sys/windows/httpext.d
  7753f59cbc132e8a4800c4fc3741ec02  libphobos/libdruntime/core/sys/windows/idispids.d
! ebf945c9084531f7f2b322fd91444283  libphobos/libdruntime/core/sys/windows/imagehlp.d
! 4006bbd3a4b88dd0ec26602e87021b31  libphobos/libdruntime/core/sys/windows/imm.d
! 7224c7dcec6f991a4868c2c133df6172  libphobos/libdruntime/core/sys/windows/intshcut.d
! b649cd51a6d23be2250bd9cffda6db3c  libphobos/libdruntime/core/sys/windows/ipexport.d
! ea6cbf3f9e1b5ae6b153ce71a4aecca5  libphobos/libdruntime/core/sys/windows/iphlpapi.d
  4a361a77b16ca812d5966b8fe5263c1d  libphobos/libdruntime/core/sys/windows/ipifcons.d
! 6bd8814cd825d325d4dfd873f999e986  libphobos/libdruntime/core/sys/windows/iprtrmib.d
! 4210abb1e6e2a60be3d8e9cff6740fb7  libphobos/libdruntime/core/sys/windows/iptypes.d
  3cb08ac571b1a256214aabdbc13d2652  libphobos/libdruntime/core/sys/windows/isguids.d
! 303f181285839cd91eae9077757b3f88  libphobos/libdruntime/core/sys/windows/lm.d
! d68382039b7b47aa10311b22b27dc038  libphobos/libdruntime/core/sys/windows/lmaccess.d
! 5df5325d1954c8e3009fab269b40bc3b  libphobos/libdruntime/core/sys/windows/lmalert.d
  0dd23d8078b94a75924984e1e5768732  libphobos/libdruntime/core/sys/windows/lmapibuf.d
! edbd314f51428551deb33441a1a66004  libphobos/libdruntime/core/sys/windows/lmat.d
! 50e043616a79130a667683040a885200  libphobos/libdruntime/core/sys/windows/lmaudit.d
! 326512870a51c87757f0be386078a7f4  libphobos/libdruntime/core/sys/windows/lmbrowsr.d
! 3b74ab1f64092270ee918e535b465ec3  libphobos/libdruntime/core/sys/windows/lmchdev.d
! 17fae8435d41dae50cb858e235817c16  libphobos/libdruntime/core/sys/windows/lmconfig.d
! f4871197701e5701ba12881da95f7962  libphobos/libdruntime/core/sys/windows/lmcons.d
! 8e033a663d74c385b5589a23daa1d56c  libphobos/libdruntime/core/sys/windows/lmerr.d
! fad30be9ea33f5b2a646a01fc8cc5728  libphobos/libdruntime/core/sys/windows/lmerrlog.d
! b4425738dc9960b34c7439a5f3888b93  libphobos/libdruntime/core/sys/windows/lmmsg.d
! 137b61d5a938168b84e112b515a85256  libphobos/libdruntime/core/sys/windows/lmremutl.d
! d4b15887e244e3f2784a45eb1a0d52a8  libphobos/libdruntime/core/sys/windows/lmrepl.d
! 1f8649e89b072dc415c0b0cfa1d4dd79  libphobos/libdruntime/core/sys/windows/lmserver.d
! ffe00fcc2d018da3926d14ad9bd42d06  libphobos/libdruntime/core/sys/windows/lmshare.d
! c69c0296cad2a95a19d24b2eaf19fcac  libphobos/libdruntime/core/sys/windows/lmsname.d
! d21d34e971eedb2f20908b5fad8b22dd  libphobos/libdruntime/core/sys/windows/lmstats.d
! 1f60121836d98424b866b38e29f37f2e  libphobos/libdruntime/core/sys/windows/lmsvc.d
! f15343ede37ec86dcc75816d9d02868a  libphobos/libdruntime/core/sys/windows/lmuse.d
  3e13960adb39f79707752dc97f60561c  libphobos/libdruntime/core/sys/windows/lmuseflg.d
! 4080fb9cc3981b43bc5ac9f4df6dbb10  libphobos/libdruntime/core/sys/windows/lmwksta.d
! 5af22687bc52cbcb244cf60cc21c52ba  libphobos/libdruntime/core/sys/windows/lzexpand.d
! 2f7672e2bb6fa7af6b39e8bd5cd348e4  libphobos/libdruntime/core/sys/windows/mapi.d
! 40944b56ee73c24d3046fc9d313639d0  libphobos/libdruntime/core/sys/windows/mciavi.d
! de0387ad10e69b94fa784ddce6bf5b52  libphobos/libdruntime/core/sys/windows/mcx.d
! fc96c46a0d401798fd635da28105ab12  libphobos/libdruntime/core/sys/windows/mgmtapi.d
! ca010ba204c3217b8ba97cd14ace0c95  libphobos/libdruntime/core/sys/windows/mmsystem.d
! 2882ee396413cb2df1e6ec15809a3e75  libphobos/libdruntime/core/sys/windows/msacm.d
! cb09a9571f48cb8da6c47240ab32a69c  libphobos/libdruntime/core/sys/windows/mshtml.d
! 1165bc4ee8dd5fddab6697f2ddda7abe  libphobos/libdruntime/core/sys/windows/mswsock.d
! ea0a8ea5da9f6d375ee3e7b415586a7b  libphobos/libdruntime/core/sys/windows/nb30.d
! 0d5ebf7ff5907a657c784cf45edc6a2b  libphobos/libdruntime/core/sys/windows/nddeapi.d
! a36e1c22cb0cd979eaeebff6b6cb786e  libphobos/libdruntime/core/sys/windows/nspapi.d
! e115a67e03a4c225fbf7096cdf91810b  libphobos/libdruntime/core/sys/windows/ntdef.d
! 46930e67c5829d102ce6737bacffaf3d  libphobos/libdruntime/core/sys/windows/ntdll.d
! e853cd965a604797654d7dd7b7fb3cc1  libphobos/libdruntime/core/sys/windows/ntldap.d
! bd1b2498f07983443c7303897c2c830b  libphobos/libdruntime/core/sys/windows/ntsecapi.d
! cf14f024351e812f037a15e61e035b16  libphobos/libdruntime/core/sys/windows/ntsecpkg.d
! eec5257ed84683b9c6c8341222562d8c  libphobos/libdruntime/core/sys/windows/oaidl.d
! dc55a541ce748e353ed098be618b4dbe  libphobos/libdruntime/core/sys/windows/objbase.d
! 7f9d12c75743ce395c8b303201bb285c  libphobos/libdruntime/core/sys/windows/objfwd.d
! 731da7d8328359d6198b42c745d9e78c  libphobos/libdruntime/core/sys/windows/objidl.d
! f74418c84313c701feb487e6505c0fff  libphobos/libdruntime/core/sys/windows/objsafe.d
! 9bf8790b0a0d7407f091278334f4b537  libphobos/libdruntime/core/sys/windows/ocidl.d
! bc7b2c02d0149b6a56b6911f3106030b  libphobos/libdruntime/core/sys/windows/odbcinst.d
! 2d731302e2b4052264d63e6df719a39e  libphobos/libdruntime/core/sys/windows/ole.d
! 6dff17cb347a4f98eed5e4371d1be39a  libphobos/libdruntime/core/sys/windows/ole2.d
  314785a8f31488c44e22711f37b32e61  libphobos/libdruntime/core/sys/windows/ole2ver.d
! d80fb0403ed1d2b06e89fb72f25dd33c  libphobos/libdruntime/core/sys/windows/oleacc.d
! d1e1fc6d635d7ff3bfebe3d25072b3b5  libphobos/libdruntime/core/sys/windows/oleauto.d
! 316de02bf25358124fc47d7d055b8889  libphobos/libdruntime/core/sys/windows/olectl.d
! 8a2f4906efa1c72b408e26de16392c75  libphobos/libdruntime/core/sys/windows/olectlid.d
! 39fe62003b8ef18324507a455d852fbc  libphobos/libdruntime/core/sys/windows/oledlg.d
! 733e9097a56d8b385408997cce3e814d  libphobos/libdruntime/core/sys/windows/oleidl.d
! de6fbc31298db523e7fca07ce18130f8  libphobos/libdruntime/core/sys/windows/pbt.d
! ca8c227a5d0a0aeb0a40b0e9c6433c90  libphobos/libdruntime/core/sys/windows/powrprof.d
! 9aa68a9237922f7e8a82b9544ebab11b  libphobos/libdruntime/core/sys/windows/prsht.d
! 16e4952dbe783d693c52b69a7a7f9773  libphobos/libdruntime/core/sys/windows/psapi.d
! c26b93da9ae25d60374c9b0d0c0a357f  libphobos/libdruntime/core/sys/windows/rapi.d
! b8c3a2393b8841a0bee92f5f62d603b5  libphobos/libdruntime/core/sys/windows/ras.d
! e1dbe738e4eceed9d0aba99688c99916  libphobos/libdruntime/core/sys/windows/rasdlg.d
! 1ba9651d7bfe8d66848a51645e404512  libphobos/libdruntime/core/sys/windows/raserror.d
! d40036d2cab0345df2a1d1039ebf859c  libphobos/libdruntime/core/sys/windows/rassapi.d
! 3e8de16498adf94d5d1cbaea643cf6d6  libphobos/libdruntime/core/sys/windows/reason.d
! 26142f5545d440a281af1f7218d7800a  libphobos/libdruntime/core/sys/windows/regstr.d
! 8eec1097df061f6abc3c57933dfa9e18  libphobos/libdruntime/core/sys/windows/richedit.d
! e51846439234046f614d8d784f1f0c81  libphobos/libdruntime/core/sys/windows/richole.d
! e2c499859218569638d16d102c505aed  libphobos/libdruntime/core/sys/windows/rpc.d
! 827c1f6f4f2920cd9986b62e44b54a44  libphobos/libdruntime/core/sys/windows/rpcdce.d
! e23fe37d1fd42638696b51f435080017  libphobos/libdruntime/core/sys/windows/rpcdce2.d
! f2dbf8d8684aec0a96fc98944b2e98ef  libphobos/libdruntime/core/sys/windows/rpcdcep.d
! 7a4ad3776a54ea1f7e07af6829ca900a  libphobos/libdruntime/core/sys/windows/rpcndr.d
! ade7fdbf3fea3e35f31b2f5226e9a8a2  libphobos/libdruntime/core/sys/windows/rpcnsi.d
! 016d551012bc74ebd1b6db7d5e6f13d3  libphobos/libdruntime/core/sys/windows/rpcnsip.d
! c9fe813be1a12a243c975de9532ddc4f  libphobos/libdruntime/core/sys/windows/rpcnterr.d
! 8c9c47bf6dc6160f2e0de47e1d43caa5  libphobos/libdruntime/core/sys/windows/schannel.d
! 707165ada70d625822daeaad2ed6e17b  libphobos/libdruntime/core/sys/windows/sdkddkver.d
! 340c7b814e84fbeccda4a1bdee34d820  libphobos/libdruntime/core/sys/windows/secext.d
! c6327aff5cddc390305a2db5b5e3b56c  libphobos/libdruntime/core/sys/windows/security.d
! f45b998596c1b10efbcaaa154e3824a1  libphobos/libdruntime/core/sys/windows/servprov.d
! 95e799ae65813be98f1fa9bef2e73523  libphobos/libdruntime/core/sys/windows/setupapi.d
! bf4819a7b0a5d740216ebc4a78b17a71  libphobos/libdruntime/core/sys/windows/shellapi.d
! 0f9117458e2adccc8d6ce4ae0682b41f  libphobos/libdruntime/core/sys/windows/shldisp.d
! 3ad5f1d120a46d1fab8f904f2c9e4c22  libphobos/libdruntime/core/sys/windows/shlguid.d
! c2126d4b550176dbad6b6615ad24e912  libphobos/libdruntime/core/sys/windows/shlobj.d
! 58809c1a71dad4960a77a95013e950fe  libphobos/libdruntime/core/sys/windows/shlwapi.d
! b8e34210efaf228e2501f59f73077072  libphobos/libdruntime/core/sys/windows/snmp.d
! 5f941b211907aec2c403e8ee0306099a  libphobos/libdruntime/core/sys/windows/sql.d
! 75ef1c0316372603ba9bea9403d3891f  libphobos/libdruntime/core/sys/windows/sqlext.d
! 094d56f221113dc7d1202bab90b7f6a6  libphobos/libdruntime/core/sys/windows/sqltypes.d
! 309c779b90aa024f1b36e7ca9050f164  libphobos/libdruntime/core/sys/windows/sqlucode.d
! 1186df0a3e354e09f8574725247b1c3b  libphobos/libdruntime/core/sys/windows/sspi.d
! adf693ddcfda0f31972b44dbddaeb859  libphobos/libdruntime/core/sys/windows/stacktrace.d
! 78f2425fa9d20c8f30923da75c392c02  libphobos/libdruntime/core/sys/windows/stat.d
! 504474997e9ec2d7b220c5798cbd0639  libphobos/libdruntime/core/sys/windows/stdc/malloc.d
  33fcc28066c3bb9129080337483b0f97  libphobos/libdruntime/core/sys/windows/stdc/time.d
! 3500499cf4fb6f9f14e0558a8b8e364d  libphobos/libdruntime/core/sys/windows/subauth.d
! b89d21c2730d93dc7f157d4ae24795fe  libphobos/libdruntime/core/sys/windows/threadaux.d
! 1c03170e8729fdd1bd3c2afd3155ad1e  libphobos/libdruntime/core/sys/windows/tlhelp32.d
! 66bd241f4835318c2108f0125b4bad5f  libphobos/libdruntime/core/sys/windows/tmschema.d
! cc11561706a7991b9feb77841b680282  libphobos/libdruntime/core/sys/windows/unknwn.d
! cb98ff926684a18df476f1124b5354d9  libphobos/libdruntime/core/sys/windows/uuid.d
! 1f999cbcb374db981120536fb9263c9e  libphobos/libdruntime/core/sys/windows/vfw.d
! 000a8b7395a3605236ec2f4de717e7eb  libphobos/libdruntime/core/sys/windows/w32api.d
! 03029dae22370805da2b687b3ec95fca  libphobos/libdruntime/core/sys/windows/winbase.d
! 36702b0a76945e3420222c08908bcae8  libphobos/libdruntime/core/sys/windows/winber.d
! 2903bfe8992d2cb2bfaefea1db4dc184  libphobos/libdruntime/core/sys/windows/wincon.d
! 6d69b260397c77dc2c3dae8bb21692e6  libphobos/libdruntime/core/sys/windows/wincrypt.d
! babd98a9842134a5d084d187892ee647  libphobos/libdruntime/core/sys/windows/windef.d
! 293f507b533fce5d73e47c24264d26ff  libphobos/libdruntime/core/sys/windows/windows.d
! b58950289b0dfb2d9e2ef2a62b697df3  libphobos/libdruntime/core/sys/windows/winerror.d
! c91666a1bbb7ff1cacbc523cd0c36feb  libphobos/libdruntime/core/sys/windows/wingdi.d
! 7606e7e9a8fd92b793475c40ef20ea4e  libphobos/libdruntime/core/sys/windows/winhttp.d
! 9344c686df5c67c8632156e82a92072c  libphobos/libdruntime/core/sys/windows/wininet.d
! 4ef49e596f406ad40b00780fe71c6313  libphobos/libdruntime/core/sys/windows/winioctl.d
! 2fdae639c1094bb99ec4feab5c961471  libphobos/libdruntime/core/sys/windows/winldap.d
! 48abe9a63d3da4031eb0b48b9539830c  libphobos/libdruntime/core/sys/windows/winnetwk.d
! ce637be2829c4171626233b1baaee3b2  libphobos/libdruntime/core/sys/windows/winnls.d
! 15b41e392cef10231f041321a646eb13  libphobos/libdruntime/core/sys/windows/winnt.d
! aec0a54384dea87ba5f95eef663b8cc9  libphobos/libdruntime/core/sys/windows/winperf.d
! 4bb0b47e114ccad718982a27943cfb7b  libphobos/libdruntime/core/sys/windows/winreg.d
! fe106920a5b1c11c8cc331880eb4b66c  libphobos/libdruntime/core/sys/windows/winsock2.d
! 3fca7b46a6f195293e8bb548f25f4bf4  libphobos/libdruntime/core/sys/windows/winspool.d
! 6420d9ed50693be198c684ceda254d12  libphobos/libdruntime/core/sys/windows/winsvc.d
! f59ab2821279917fe50d1e6e1e4899da  libphobos/libdruntime/core/sys/windows/winuser.d
! 528e0d1a97b30643ff52942e64da30dd  libphobos/libdruntime/core/sys/windows/winver.d
! 8a696576926989a12147948a41f20685  libphobos/libdruntime/core/sys/windows/wtsapi32.d
! 190afa43bb4914fe09f99395f97808d3  libphobos/libdruntime/core/sys/windows/wtypes.d
  9094c28b1e25c7802bae1054ff893274  libphobos/libdruntime/core/thread/context.d
! 64bf8dc674102baa75430041ae2bb1a4  libphobos/libdruntime/core/thread/fiber.d
! d57dfc512ea18cd10c246ba39711869a  libphobos/libdruntime/core/thread/osthread.d
  9b6ee3a7c47a4d264ce79b0c16495747  libphobos/libdruntime/core/thread/package.d
! b6b7d02ac0c2f823fc20e9f2804c3a7e  libphobos/libdruntime/core/thread/threadbase.d
  c1ed5b58527141cfd45c44e71ae05ec8  libphobos/libdruntime/core/thread/threadgroup.d
! 80e5adc60289059627760a15ad6535ae  libphobos/libdruntime/core/thread/types.d
! 7efc19b8c27e754adebd3339199884e5  libphobos/libdruntime/core/time.d
! 6324e4fa0592c928db7ddd7f2f952a13  libphobos/libdruntime/core/vararg.d
  4cf99596b90593fec63debe10874dfdb  libphobos/libdruntime/core/volatile.d
! e1eec708b7c4c5f87d9a74a59d1270cc  libphobos/libdruntime/gcc/attribute.d
! 7bbde94b722f050215e4e0df5b6be407  libphobos/libdruntime/gcc/attributes.d
! 5f99905ada07d3a0625d2ee9ad397bd1  libphobos/libdruntime/gcc/backtrace.d
! c4743b6733c753d0f6936531ef66fd6d  libphobos/libdruntime/gcc/builtins.d
! f9c0aec25f68e6115f61975cd31b8e8e  libphobos/libdruntime/gcc/config.d.in
! 15f4df9f996a036da2e1dc8144f689fa  libphobos/libdruntime/gcc/deh.d
! 136822561571486076a0a43732a02001  libphobos/libdruntime/gcc/drtstuff.c
! d7523a7267ce4cb5ecabe72c296ba87a  libphobos/libdruntime/gcc/emutls.d
! e35c0b396846b74a3d96d639c549d655  libphobos/libdruntime/gcc/gthread.d
! af04e66f4bbc7994402ceb5ad2c20eb5  libphobos/libdruntime/gcc/libbacktrace.d.in
! f5abfe7292278fdcea59ee0b381c6a68  libphobos/libdruntime/gcc/sections/common.d
! ab494d29c96f6c65928e4732b9bcb019  libphobos/libdruntime/gcc/sections/elf.d
! 2739c3c723bfec1b40260cc9d6270abc  libphobos/libdruntime/gcc/sections/macho.d
! 78afedb6a3e6155045b5a0a60769b376  libphobos/libdruntime/gcc/sections/package.d
! d221eb769449e8f6184564f2799f506a  libphobos/libdruntime/gcc/sections/pecoff.d
! 15a8adb885b766048ed3e59a7ce095b2  libphobos/libdruntime/gcc/simd.d
! 08e3e9882e6f9cc95a7b49b9cda2d5a7  libphobos/libdruntime/gcc/unwind/arm.d
! dd2e842abb31f630db5cee013d4234cb  libphobos/libdruntime/gcc/unwind/arm_common.d
! d2c0e128eafb9c59cedf6c9349d26ace  libphobos/libdruntime/gcc/unwind/c6x.d
! 082c540ed997c08367ec3067b1918a12  libphobos/libdruntime/gcc/unwind/generic.d
! 62c62b6e2c59a01d8228a5926b6f5135  libphobos/libdruntime/gcc/unwind/package.d
! 4aa3c49a1c1fb694424e0cdbd2d25c43  libphobos/libdruntime/gcc/unwind/pe.d
! 796ba488761896b14a4835f5e21d1be3  libphobos/libdruntime/object.d
! 89fa3e572c7454b805657cb5bad21515  libphobos/libdruntime/rt/aApply.d
! e0e05a636da7608f1d87dc4c7b7665ef  libphobos/libdruntime/rt/aApplyR.d
! 515a26124b1b06efec70ab0c1f177a0c  libphobos/libdruntime/rt/aaA.d
  c50bbbb450796967c2c51cf3fef9da14  libphobos/libdruntime/rt/adi.d
  8d7590e2d80123970d6ffadec3b61738  libphobos/libdruntime/rt/arraycat.d
  c77f95b637563a0cfa639db5e1702145  libphobos/libdruntime/rt/cast_.d
  e356126947e7110fb24ae47490f6dde1  libphobos/libdruntime/rt/config.d
! a0ed14f9f9820952df01a04539a0f23d  libphobos/libdruntime/rt/critical_.d
! 684277cb344c29190c7bb579c79a0d94  libphobos/libdruntime/rt/deh.d
! 28875034d3bee574d874c5e8b3ba3f56  libphobos/libdruntime/rt/dmain2.d
! 94d63a76cd37f837fa8e39cf416590e6  libphobos/libdruntime/rt/dylib_fixes.c
! f3312264e684dc66345bcb692aaa1a2c  libphobos/libdruntime/rt/ehalloc.d
  558c02062a26469537c962127a6722db  libphobos/libdruntime/rt/invariant.d
! 32ee5b9b4c0972191790adc5b7ae60f7  libphobos/libdruntime/rt/lifetime.d
  3256fa529b5c773a7af9a6a8a2e989cb  libphobos/libdruntime/rt/memory.d
! ca1adff55cb3d2c9c1dddc05c488d0ec  libphobos/libdruntime/rt/minfo.d
! c86d80a9087e08b9d7e8efbcd38bd4b8  libphobos/libdruntime/rt/monitor_.d
  008975c2c08f12ee0d0dd8c682932dfc  libphobos/libdruntime/rt/profilegc.d
  d5fb28a0b82b9570223e40df91e38cb4  libphobos/libdruntime/rt/sections.d
  c7a6041a6bac5ecaf2e2688bf5eea41b  libphobos/libdruntime/rt/tlsgc.d
*************** be2340569194e9c072c40fc94eab3483  libpho
*** 103602,103787 ****
  c49ab40607849fa623787878420e7207  libphobos/m4/gdc.m4
  458abf211dc60540bf28a9257d4bd4e5  libphobos/m4/libtool.m4
  e4224ccaecb14d942c71d31bef20d78c  libphobos/src/LICENSE_1_0.txt
! bf75d8204f8b8dc3f58b5d49af9bae18  libphobos/src/MERGE
! 7551c0d5a6b83f8147986e95ed723971  libphobos/src/Makefile.am
! 250255bfc33ebb151181231740d0b48b  libphobos/src/Makefile.in
  ff30fe7275b03f69e2a7796e47d142e8  libphobos/src/drtstuff.spec
! c5411b49cf07ba1337d42bf34ba95eca  libphobos/src/etc/c/curl.d
  8c80b7845f5279d405fa59c9bca95483  libphobos/src/etc/c/zlib.d
! 6ef689bb347e3c81e28cb2dc4cfce218  libphobos/src/index.dd
  3a1ad66c3c47609c90c1f4d9cf8ddca2  libphobos/src/libgphobos.spec.in
! e649d24f8122127a8030f4d31ad2fde2  libphobos/src/std/algorithm/comparison.d
  694c41f4d2a56ffa1cea9387144617a7  libphobos/src/std/algorithm/internal.d
! 3d1da33665fd4cee17eb37a69ba2dd24  libphobos/src/std/algorithm/iteration.d
! 2e8ad031484fc4476ed3123e32d4a479  libphobos/src/std/algorithm/mutation.d
! 9dfb48a88dd21220dab0842da7e9069c  libphobos/src/std/algorithm/package.d
! 90358578e042f9188105fa5be3f28d96  libphobos/src/std/algorithm/searching.d
  77167ad7cf4c80bb39eeaf62f0ed0772  libphobos/src/std/algorithm/setops.d
! c77dc0dc960b70a46336f5ad8dc9ef23  libphobos/src/std/algorithm/sorting.d
! 080203bad4c4d98accf157b43ae4fff2  libphobos/src/std/array.d
! ce89b519f17e4e9ab7a90eae953b6899  libphobos/src/std/ascii.d
! e6adb636b6c97580a557d2c2fb435c8a  libphobos/src/std/base64.d
! f8a5c94dee5cb1354434c5e0c17d991e  libphobos/src/std/bigint.d
! 67a6c72eeb99eaa907b0b4a4be357843  libphobos/src/std/bitmanip.d
! d7e0be2558cfd762beb23a58be6fc33d  libphobos/src/std/checkedint.d
! 757c8eb1d1c8a51cb52672afd0ad6523  libphobos/src/std/compiler.d
! 7d70b27133c5d68900d3722282927e68  libphobos/src/std/complex.d
! 9d843077700d2f4ce86837f6c490bb1e  libphobos/src/std/concurrency.d
! 004ac7014a2a3eb7d0ec935350093163  libphobos/src/std/container/array.d
! fbf4cee1f26069434cc434da66c2d9a0  libphobos/src/std/container/binaryheap.d
! d4cbd0e5494bb1e212e809ceba1f3787  libphobos/src/std/container/dlist.d
  df3f67c15b5b7b1af94bf29d9744f005  libphobos/src/std/container/package.d
! 0cb7396703bc5779518aaa30e6c9ada7  libphobos/src/std/container/rbtree.d
  4a327ea86a45ce1f67fa44aa634bfd06  libphobos/src/std/container/slist.d
  c8590ffcd747e9da50e3afc8e4c69111  libphobos/src/std/container/util.d
! 3f93bb1571fbc26869b34c299971d3ae  libphobos/src/std/conv.d
  6aef79b4677f6bb259b947c1c3176dfe  libphobos/src/std/csv.d
  e9d818e994a694951a607a1aaa99c921  libphobos/src/std/datetime/date.d
  8940289b80bf4d65f426f9625a18a7cc  libphobos/src/std/datetime/interval.d
  bbd9f262fce997eefac78b6ed54e3d41  libphobos/src/std/datetime/package.d
! d225a622b0c7c7087ba9fa025dbd7f68  libphobos/src/std/datetime/stopwatch.d
! 61870506f04ab08e474ff919fd40b4be  libphobos/src/std/datetime/systime.d
! 8cfadc94124fad7d25f7bbed42f9601d  libphobos/src/std/datetime/timezone.d
  221da1b10eb5da893eb97e28d5de3171  libphobos/src/std/demangle.d
! 9495d76a00c8e254cb9432a0edd39057  libphobos/src/std/digest/crc.d
! b96726916ca7dce077d6ccc5a139744b  libphobos/src/std/digest/digest.d
! 329fdb1951a5cad44dfcce2351d25fb0  libphobos/src/std/digest/hmac.d
  d1c0606553ccbfef18e98e16c0dafce2  libphobos/src/std/digest/md.d
! 507eab746199f8e9e5616142fcada09c  libphobos/src/std/digest/murmurhash.d
  a35cbabb8aa77d8451c285063c5c8211  libphobos/src/std/digest/package.d
  4a611bd9d6b92c30cfac32edfd614b54  libphobos/src/std/digest/ripemd.d
  e298410eaf608ba40ad57abaee6be1d7  libphobos/src/std/digest/sha.d
  cdc3d0431aa2e54b40e0570c9a848b27  libphobos/src/std/encoding.d
! 5001d96ff4a2f01e38faa96c21af08b4  libphobos/src/std/exception.d
! fe6f3a5b36768d08dda63bc5b0a3cf24  libphobos/src/std/experimental/allocator/building_blocks/affix_allocator.d
! fcaff08a46f987574badac3b62aa9bce  libphobos/src/std/experimental/allocator/building_blocks/aligned_block_list.d
! 3f22509f0c1d415e5a802316b26e2eec  libphobos/src/std/experimental/allocator/building_blocks/allocator_list.d
  54937f37e3907116b80036449560c873  libphobos/src/std/experimental/allocator/building_blocks/ascending_page_allocator.d
  81c04e6daf295821dbdc8654dbcb970e  libphobos/src/std/experimental/allocator/building_blocks/bitmapped_block.d
  aaab7cd4d84a361d433bb44d4301c0af  libphobos/src/std/experimental/allocator/building_blocks/bucketizer.d
! 0e5ef4f86a7c6af7d71c1d6e91642916  libphobos/src/std/experimental/allocator/building_blocks/fallback_allocator.d
! 61b4fd73afee369348ca5b20011cf3b0  libphobos/src/std/experimental/allocator/building_blocks/free_list.d
! e2b3853391f7f8a209cbb8a919361f64  libphobos/src/std/experimental/allocator/building_blocks/free_tree.d
  6fbed4b6e7e24d876ce37c64f5bb3775  libphobos/src/std/experimental/allocator/building_blocks/kernighan_ritchie.d
  52b04093760e06f9eae5cf5a73ae094c  libphobos/src/std/experimental/allocator/building_blocks/null_allocator.d
! 38d76c4904a8c59d8d1fbb5a6c0b26f2  libphobos/src/std/experimental/allocator/building_blocks/package.d
! 8e504c19721caea78593a2a7995527f8  libphobos/src/std/experimental/allocator/building_blocks/quantizer.d
! 88afc3845d2183907bb426fcf1384d15  libphobos/src/std/experimental/allocator/building_blocks/region.d
! 45bdd898911a65e7ceb907a847c5485d  libphobos/src/std/experimental/allocator/building_blocks/scoped_allocator.d
! 92e2fa4e7ea0742441c1c5294b811731  libphobos/src/std/experimental/allocator/building_blocks/segregator.d
! 6a8a75ceef26c6c95c21b6bad334aa76  libphobos/src/std/experimental/allocator/building_blocks/stats_collector.d
! 8e5b61f07763ec295dfc02cf6a33ea6c  libphobos/src/std/experimental/allocator/common.d
  f39a9f5fa9bfdc9d8679091918adb41a  libphobos/src/std/experimental/allocator/gc_allocator.d
  f3900ee7c6222e36e06fa70fe9989cf3  libphobos/src/std/experimental/allocator/mallocator.d
  1f302837e4f8c4355c52fcababcc23a1  libphobos/src/std/experimental/allocator/mmap_allocator.d
! ac0ba4200b54066b5907aad4747ca4cf  libphobos/src/std/experimental/allocator/package.d
  95d3cda8eeb16d5098af629850dc17a2  libphobos/src/std/experimental/allocator/showcase.d
  d4a442037642d3549358dcee57652703  libphobos/src/std/experimental/allocator/typed.d
! 2dbacb9d606f437e4997e0466434586c  libphobos/src/std/experimental/checkedint.d
! 7d370afce7376ed7ec7ed4e5ccb2a60e  libphobos/src/std/experimental/logger/core.d
! 4d886ee182c154e07e575537d4877a35  libphobos/src/std/experimental/logger/filelogger.d
! f01f925c111b0932c1ac8eef82d9f48a  libphobos/src/std/experimental/logger/multilogger.d
! 822eb2329e13be4c4c0fb6aa785732ec  libphobos/src/std/experimental/logger/nulllogger.d
! 6d06515a54ad097d39cdeb8c5be0d836  libphobos/src/std/experimental/logger/package.d
  768b30d13593aba9e2715a7d868d763e  libphobos/src/std/experimental/note.md
! 06c9eb40c5c9d9d8126c3a754ab5734d  libphobos/src/std/experimental/typecons.d
! abbf8ebaf8eeccee51fcb6543765b620  libphobos/src/std/file.d
  72a246e914744d16160f1137787e0e8c  libphobos/src/std/format/internal/floats.d
  2d56c99084de17c03489845dd80ed3e8  libphobos/src/std/format/internal/read.d
! 181298d84cad357547ed66d5de9ff602  libphobos/src/std/format/internal/write.d
! e3b44cf5c01ce3089688e0a51954a7f1  libphobos/src/std/format/package.d
! 244499abf77f4022cf4181e4aaee3427  libphobos/src/std/format/read.d
  354de99a99f6a44d81c3e6a59d9ab694  libphobos/src/std/format/spec.d
! 8e38679bc9b8fb3b7132b5dd30f972a7  libphobos/src/std/format/write.d
  408e0a63a00b341c107f7942ecbbcbea  libphobos/src/std/functional.d
! 68fd491d993e905f36f35eff3a1ecfd8  libphobos/src/std/getopt.d
  aeaa7be710d3a020515ed52e4dd2bf60  libphobos/src/std/int128.d
  8bc9fa8deafb0e80277b86268d55fa53  libphobos/src/std/internal/attributes.d
  4fc3dee264a23e6b241d6b1e77fc8a4c  libphobos/src/std/internal/cstring.d
  def4283a7fd5328efa5c796fe3d08687  libphobos/src/std/internal/math/biguintcore.d
  d3a41b19b71afaad9507ea2b7e63baa1  libphobos/src/std/internal/math/biguintnoasm.d
  8163acdb919296a99cd241f472263b56  libphobos/src/std/internal/math/errorfunction.d
! d409b729d144772803160119159f9ada  libphobos/src/std/internal/math/gammafunction.d
  f25b12bd0896d34a7a63eeccbb71ddd1  libphobos/src/std/internal/memory.d
  b8a0549fa22a82b03b350b02592236a5  libphobos/src/std/internal/scopebuffer.d
  0e5cac523b09a65e2fca9738dc08194d  libphobos/src/std/internal/test/dummyrange.d
  8c74ab50895aaf9b04b114888ade41d8  libphobos/src/std/internal/test/range.d
  9d403089f5dfdab0c5fd3b765e0e5e07  libphobos/src/std/internal/test/uda.d
! 687424bb0829cde118f2ccf009041cb6  libphobos/src/std/internal/unicode_comp.d
! 38b86be5844c4d9b004b82318c74735b  libphobos/src/std/internal/unicode_decomp.d
! 53ecada21dfa2607ae217405eff608b9  libphobos/src/std/internal/unicode_grapheme.d
! 3c2fba9e8502aa68faf30f97f5b571fc  libphobos/src/std/internal/unicode_norm.d
! e6a08fb4d7276775840f8fde15eb008e  libphobos/src/std/internal/unicode_tables.d
! 45087463db98822e8c5121d00d783e28  libphobos/src/std/internal/windows/advapi32.d
! ff098a8e6d203a5b822bf93bd6e0605c  libphobos/src/std/json.d
! 78fa808fea55910a072c7c5de2c7ce25  libphobos/src/std/math/algebraic.d
  3cee3970cfe6bcde0d4b6c640b9aae04  libphobos/src/std/math/constants.d
! 0f65af40d75f61407d4a877161fdcecb  libphobos/src/std/math/exponential.d
! af3a6f3c0633b36813cccbcb45cd02e0  libphobos/src/std/math/hardware.d
! 2bd137ace1ef5ead9356f66cd6860015  libphobos/src/std/math/operations.d
! 4838003d42a801c32236eb898c6354e5  libphobos/src/std/math/package.d
  88694133c2ab2068b6250dbc41d3cb48  libphobos/src/std/math/remainder.d
! 35f0b8962df2c67d8d595957cd2fd6a3  libphobos/src/std/math/rounding.d
  e8bd9e50e4db07d1a28a96f8bef435c6  libphobos/src/std/math/traits.d
! 55ca736fc24cd43f2cbdf17dc56f8464  libphobos/src/std/math/trigonometry.d
  7fa986b6825d8e7e1d7602c9fae96379  libphobos/src/std/mathspecial.d
! cab725491843dffe529d75799116997c  libphobos/src/std/meta.d
! 219b276950687ac0f45a709c41071910  libphobos/src/std/mmfile.d
! 472d46fd602a43a52dc94e6db1b2b0f4  libphobos/src/std/net/curl.d
  c8b18b34f9ff72e666e93c31469c4e16  libphobos/src/std/net/isemail.d
! 2d2e8fddc0a84131b9aedfde795785d3  libphobos/src/std/numeric.d
! 1c4cf1055ad2af321798d32796bdbe63  libphobos/src/std/outbuffer.d
! 1670d32f41ebee6dcca7be11d7b8e571  libphobos/src/std/package.d
! 2563cd40c065bc220cdc6324cf785334  libphobos/src/std/parallelism.d
! 8a0c51dc07b8af1e21dee3aab4abfb82  libphobos/src/std/path.d
! f3c4a1dedd7c006d3d6e27c799395092  libphobos/src/std/process.d
! 610399b87ff898840defd6917de060e9  libphobos/src/std/random.d
  c5cd4fcc3bcab89448fcfebb69227b4d  libphobos/src/std/range/interfaces.d
! 471179ea6d4e9e6825e0395a1393e979  libphobos/src/std/range/package.d
! b13333dc7b9cff802e232ce18d3faca1  libphobos/src/std/range/primitives.d
  5a09afc95efa24ecdcec9b5f358e4c9d  libphobos/src/std/regex/internal/backtracking.d
  44883eb43e246b6b244c1ff51ebf2822  libphobos/src/std/regex/internal/generator.d
  01c86d99e9f6ec573a51963bd681e3b1  libphobos/src/std/regex/internal/ir.d
  12c8dadaebb3d1657fa4dce91b6111d4  libphobos/src/std/regex/internal/kickstart.d
! 14af6103fec5f984956cc414e1352bdf  libphobos/src/std/regex/internal/parser.d
  ac0a9a606c95c4c1632599630d77cac4  libphobos/src/std/regex/internal/tests.d
  25f5ce0273dbf7fcc617aeb2137a0e7d  libphobos/src/std/regex/internal/tests2.d
  aeaabeccb20b26b961df5a92a0216c53  libphobos/src/std/regex/internal/thompson.d
! caad90c0a9ca6ba1192ea203e58e4b90  libphobos/src/std/regex/package.d
  ece83ca6b8d7d3df554ca657bdcc387d  libphobos/src/std/signals.d
! 2e18604e17b573b0c1152d628dcac702  libphobos/src/std/socket.d
  65fa3f6f1125566206c3a4ac3e8adfe3  libphobos/src/std/stdint.d
! f0b9ea54af663ee59d75f104c5271003  libphobos/src/std/stdio.d
! 25fc7625a3d6db6461604c7d9a2b61c9  libphobos/src/std/string.d
! f0a368222f2eb4ba986cce7bb91802ce  libphobos/src/std/sumtype.d
  743fc73fb5b932ab501e2690fb60f287  libphobos/src/std/system.d
! 16bee9a601a5394901ad560af671980b  libphobos/src/std/traits.d
! cad380d728c4715a4d8f53e6cbee63e9  libphobos/src/std/typecons.d
  8592c7afe7a1de32c25d04e3fa0f2bca  libphobos/src/std/typetuple.d
! 745692defd8651a1789b4bfc936271a1  libphobos/src/std/uni/package.d
  c2ff190df1f5298cbcc40494150b1d48  libphobos/src/std/uri.d
! 360afd8c5a7d003999e25d9f306b2aaa  libphobos/src/std/utf.d
  3a666d69aed573579bcbef378706e687  libphobos/src/std/uuid.d
  06feadc915c94a6adc156e6db485e105  libphobos/src/std/variant.d
  fb2675bdcc716cb272a59ab642e3b40b  libphobos/src/std/windows/charset.d
! c5a7166449af8fb4862d571e041de6f2  libphobos/src/std/windows/registry.d
  2d02a363c97346a106c63e9894a52b65  libphobos/src/std/windows/syserror.d
- 7838ae96af62a266c6a826c9797cb5f6  libphobos/src/std/xml.d
  87f26ae34d849b4750d292a331ff26aa  libphobos/src/std/zip.d
  4e04d19560e31a1b8b799dd43fcd51f8  libphobos/src/std/zlib.d
! afc465514015e7585c73dca64c6730f1  libphobos/testsuite/Makefile.am
  a13be93a99fb4f3ac1cd895ac34c9305  libphobos/testsuite/Makefile.in
! 1ad916826d76bc238dc08d94e88e9bae  libphobos/testsuite/config/default.exp
! e30cd73053f5f8c54f14b50750017438  libphobos/testsuite/lib/libphobos-dg.exp
! feefacfdebf14310890cecebab127e07  libphobos/testsuite/lib/libphobos.exp
! f5872102569ae6573ee1d84cec7ac9fe  libphobos/testsuite/libphobos.aa/aa.exp
  f242f91c78645f5850aa6ef68c87ebab  libphobos/testsuite/libphobos.aa/test_aa.d
  d86b969dda21cc9af1483872e4a3dcc8  libphobos/testsuite/libphobos.allocations/alloc_from_assert.d
! 0ad611065de7b103ec02d24117f344ff  libphobos/testsuite/libphobos.allocations/allocations.exp
  7dfee0831ce08cfd971056dee5ce8519  libphobos/testsuite/libphobos.allocations/overflow_from_existing.d
  39b50d25dc11230fd4d61a9d7c8cf7a0  libphobos/testsuite/libphobos.allocations/overflow_from_zero.d
  94c17250a195da16fb246ef8e28d3477  libphobos/testsuite/libphobos.allocations/tls_gc_integration.d
! e78e9cd09e4f036e64735a40b81a84b0  libphobos/testsuite/libphobos.betterc/betterc.exp
  62bfbf82ba7ca2ce9c06e31251b5f47c  libphobos/testsuite/libphobos.betterc/test18828.d
  2ffa89e25b800dccc9be63ee4390ba9c  libphobos/testsuite/libphobos.betterc/test19416.d
  30aa08f7286c05e97e1c42ab62639574  libphobos/testsuite/libphobos.betterc/test19421.d
--- 111696,111883 ----
  c49ab40607849fa623787878420e7207  libphobos/m4/gdc.m4
  458abf211dc60540bf28a9257d4bd4e5  libphobos/m4/libtool.m4
  e4224ccaecb14d942c71d31bef20d78c  libphobos/src/LICENSE_1_0.txt
! a13b95f955b1fed794167c653b823e93  libphobos/src/MERGE
! 783c213a13cc02c37ee9a7153a929178  libphobos/src/Makefile.am
! a45f3d297c32c670982e6f8ef0c0c6e4  libphobos/src/Makefile.in
  ff30fe7275b03f69e2a7796e47d142e8  libphobos/src/drtstuff.spec
! 880a3b4c0174fd0b918810b24dfe9acb  libphobos/src/etc/c/curl.d
  8c80b7845f5279d405fa59c9bca95483  libphobos/src/etc/c/zlib.d
! a39d2aad74f3f5fe083a190052cd9c31  libphobos/src/index.dd
  3a1ad66c3c47609c90c1f4d9cf8ddca2  libphobos/src/libgphobos.spec.in
! b75073e1e8f16420a9c94bd6727a192d  libphobos/src/std/algorithm/comparison.d
  694c41f4d2a56ffa1cea9387144617a7  libphobos/src/std/algorithm/internal.d
! b7c4b6f38bf5047ef1b30d4a46cddb29  libphobos/src/std/algorithm/iteration.d
! 8bcde6969aa0302af0836a445e3a56cd  libphobos/src/std/algorithm/mutation.d
! 3f649d64367da82fd22630117d39a560  libphobos/src/std/algorithm/package.d
! 44ea5c240b100f0cb7c531cff927504e  libphobos/src/std/algorithm/searching.d
  77167ad7cf4c80bb39eeaf62f0ed0772  libphobos/src/std/algorithm/setops.d
! 8a821ea7d88ec0da604d3486e9329073  libphobos/src/std/algorithm/sorting.d
! 12e61269a8be4698f61a731b4a3551a7  libphobos/src/std/array.d
! 48d84292d39b7ff9bc2e13b8fa55c40c  libphobos/src/std/ascii.d
! 7ea96abed440e23fc8c05ec2ad71e051  libphobos/src/std/base64.d
! 438913c4568f452cc2cc6aa5aebc95fb  libphobos/src/std/bigint.d
! ac1604c63efeede76a4d5354ebc24aae  libphobos/src/std/bitmanip.d
! 89648e17ad75ca0b52cb38e35ad65982  libphobos/src/std/checkedint.d
! 5c954cc53846cbfcfdab57ef4fcb6abc  libphobos/src/std/compiler.d
! 34b9eccb48c8df017d0922ddc269a31d  libphobos/src/std/complex.d
! 425771808b8768f2cc4fa03288109af5  libphobos/src/std/concurrency.d
! 5cc33ee5a2a37188db60fb5a6d2bb695  libphobos/src/std/container/array.d
! b2899537b7218e7ff3c84509f244f1e3  libphobos/src/std/container/binaryheap.d
! 938fcda1f55e278417a1a17872afbce8  libphobos/src/std/container/dlist.d
  df3f67c15b5b7b1af94bf29d9744f005  libphobos/src/std/container/package.d
! 30f546db255833e0004dd1c9f0dfa883  libphobos/src/std/container/rbtree.d
  4a327ea86a45ce1f67fa44aa634bfd06  libphobos/src/std/container/slist.d
  c8590ffcd747e9da50e3afc8e4c69111  libphobos/src/std/container/util.d
! e192aa3e65bdca14301dcc4b7fbb0a4b  libphobos/src/std/conv.d
  6aef79b4677f6bb259b947c1c3176dfe  libphobos/src/std/csv.d
  e9d818e994a694951a607a1aaa99c921  libphobos/src/std/datetime/date.d
  8940289b80bf4d65f426f9625a18a7cc  libphobos/src/std/datetime/interval.d
  bbd9f262fce997eefac78b6ed54e3d41  libphobos/src/std/datetime/package.d
! 60a547458b0f105a74a4ec79271e034a  libphobos/src/std/datetime/stopwatch.d
! 6d7b100c21f4c570beff77e3fbf2da75  libphobos/src/std/datetime/systime.d
! 4ae8ed05d6aeaee8d8fe5a89c422d5cd  libphobos/src/std/datetime/timezone.d
  221da1b10eb5da893eb97e28d5de3171  libphobos/src/std/demangle.d
! 9074ecdf1c11c2074e412fd65bc86e53  libphobos/src/std/digest/crc.d
! d6b59ab3bb8a093b58e1c0dfb19b800e  libphobos/src/std/digest/hmac.d
  d1c0606553ccbfef18e98e16c0dafce2  libphobos/src/std/digest/md.d
! 9aeb4b406d2d1f4056548c297e4e2f94  libphobos/src/std/digest/murmurhash.d
  a35cbabb8aa77d8451c285063c5c8211  libphobos/src/std/digest/package.d
  4a611bd9d6b92c30cfac32edfd614b54  libphobos/src/std/digest/ripemd.d
  e298410eaf608ba40ad57abaee6be1d7  libphobos/src/std/digest/sha.d
  cdc3d0431aa2e54b40e0570c9a848b27  libphobos/src/std/encoding.d
! 17033903454d8535d3e1241d268a85f3  libphobos/src/std/exception.d
! c6b20fb62f7a0f07789137e4e07c65e6  libphobos/src/std/experimental/allocator/building_blocks/affix_allocator.d
! f5a9a6e6207580b72ba6df2195748c52  libphobos/src/std/experimental/allocator/building_blocks/aligned_block_list.d
! 283cb27edad5144242d015a95280ff86  libphobos/src/std/experimental/allocator/building_blocks/allocator_list.d
  54937f37e3907116b80036449560c873  libphobos/src/std/experimental/allocator/building_blocks/ascending_page_allocator.d
  81c04e6daf295821dbdc8654dbcb970e  libphobos/src/std/experimental/allocator/building_blocks/bitmapped_block.d
  aaab7cd4d84a361d433bb44d4301c0af  libphobos/src/std/experimental/allocator/building_blocks/bucketizer.d
! 5d22e6ee907f6a7a397f942e6fd276f0  libphobos/src/std/experimental/allocator/building_blocks/fallback_allocator.d
! dec0d094addeefa439e83569f2c74cce  libphobos/src/std/experimental/allocator/building_blocks/free_list.d
! 0d50c008cf3de079b8e5ef089f66b3b9  libphobos/src/std/experimental/allocator/building_blocks/free_tree.d
  6fbed4b6e7e24d876ce37c64f5bb3775  libphobos/src/std/experimental/allocator/building_blocks/kernighan_ritchie.d
  52b04093760e06f9eae5cf5a73ae094c  libphobos/src/std/experimental/allocator/building_blocks/null_allocator.d
! 31812fc04ba5290600354280c2e1b276  libphobos/src/std/experimental/allocator/building_blocks/package.d
! e1f1ef2268cab16fb9a11654338cbb3c  libphobos/src/std/experimental/allocator/building_blocks/quantizer.d
! f01ad876c9576e5f9dc84fdae8f0f355  libphobos/src/std/experimental/allocator/building_blocks/region.d
! b746c292389ecbe3217b416ec621331f  libphobos/src/std/experimental/allocator/building_blocks/scoped_allocator.d
! 6fe076faf1a642577ab57e35a170846c  libphobos/src/std/experimental/allocator/building_blocks/segregator.d
! 72893e0bcb4753e434e315fbc37a8f96  libphobos/src/std/experimental/allocator/building_blocks/stats_collector.d
! e1443558a43a07fd0c77eca1c96a57b3  libphobos/src/std/experimental/allocator/common.d
  f39a9f5fa9bfdc9d8679091918adb41a  libphobos/src/std/experimental/allocator/gc_allocator.d
  f3900ee7c6222e36e06fa70fe9989cf3  libphobos/src/std/experimental/allocator/mallocator.d
  1f302837e4f8c4355c52fcababcc23a1  libphobos/src/std/experimental/allocator/mmap_allocator.d
! 234f5924ff3da5c9ec2bc4b030399795  libphobos/src/std/experimental/allocator/package.d
  95d3cda8eeb16d5098af629850dc17a2  libphobos/src/std/experimental/allocator/showcase.d
  d4a442037642d3549358dcee57652703  libphobos/src/std/experimental/allocator/typed.d
! 542e8c013ecd174de121cd8ea35d84f2  libphobos/src/std/experimental/checkedint.d
! 5eda7f8aabf790d911e09d801d5c9b46  libphobos/src/std/experimental/logger/core.d
! 217be11e260f9c36db2b55fde17ee6ec  libphobos/src/std/experimental/logger/filelogger.d
! f5600abfe1adcb27ff69f41acaab893b  libphobos/src/std/experimental/logger/multilogger.d
! a6638776c1ae6dbc988632be56630654  libphobos/src/std/experimental/logger/nulllogger.d
! 1d604e68182f77dfbe797dc01e78c297  libphobos/src/std/experimental/logger/package.d
  768b30d13593aba9e2715a7d868d763e  libphobos/src/std/experimental/note.md
! 1fbe3080c9ee9d0b26321f2bab210bd9  libphobos/src/std/file.d
  72a246e914744d16160f1137787e0e8c  libphobos/src/std/format/internal/floats.d
  2d56c99084de17c03489845dd80ed3e8  libphobos/src/std/format/internal/read.d
! f95eed89aefc197994a571019a851c30  libphobos/src/std/format/internal/write.d
! 847801358d0ec1715dff5e3322f5f2a0  libphobos/src/std/format/package.d
! 073c9c82a5b5d074c708278ae3fbc051  libphobos/src/std/format/read.d
  354de99a99f6a44d81c3e6a59d9ab694  libphobos/src/std/format/spec.d
! 178d675ce3c764789f9e8df0b7d2e27b  libphobos/src/std/format/write.d
  408e0a63a00b341c107f7942ecbbcbea  libphobos/src/std/functional.d
! bd397a58bfc9c4deea39d004769e913d  libphobos/src/std/getopt.d
  aeaa7be710d3a020515ed52e4dd2bf60  libphobos/src/std/int128.d
  8bc9fa8deafb0e80277b86268d55fa53  libphobos/src/std/internal/attributes.d
  4fc3dee264a23e6b241d6b1e77fc8a4c  libphobos/src/std/internal/cstring.d
  def4283a7fd5328efa5c796fe3d08687  libphobos/src/std/internal/math/biguintcore.d
  d3a41b19b71afaad9507ea2b7e63baa1  libphobos/src/std/internal/math/biguintnoasm.d
  8163acdb919296a99cd241f472263b56  libphobos/src/std/internal/math/errorfunction.d
! c85341045951a020b04a441a621bdfc3  libphobos/src/std/internal/math/gammafunction.d
  f25b12bd0896d34a7a63eeccbb71ddd1  libphobos/src/std/internal/memory.d
  b8a0549fa22a82b03b350b02592236a5  libphobos/src/std/internal/scopebuffer.d
  0e5cac523b09a65e2fca9738dc08194d  libphobos/src/std/internal/test/dummyrange.d
  8c74ab50895aaf9b04b114888ade41d8  libphobos/src/std/internal/test/range.d
  9d403089f5dfdab0c5fd3b765e0e5e07  libphobos/src/std/internal/test/uda.d
! 95e79bcdbf59393804589ee45a5cc2d6  libphobos/src/std/internal/unicode_comp.d
! 6885e6e7d49885d3806c6935ce818eec  libphobos/src/std/internal/unicode_decomp.d
! 45d6ee45aedffd3e47d7df2bbef3c388  libphobos/src/std/internal/unicode_grapheme.d
! 1906db95f7b7c758ae1d417f5071ca33  libphobos/src/std/internal/unicode_norm.d
! 5bc00bb2b55328f9191be244f34c67f7  libphobos/src/std/internal/unicode_tables.d
! 1032174c14b8ed750d026d9e33c0f28d  libphobos/src/std/internal/windows/advapi32.d
! 0f2a7ec10da98bc5ba19763c109c5721  libphobos/src/std/json.d
! 780d576c658cd16c7975be52861dc2e3  libphobos/src/std/logger/core.d
! b0d9cdbf5d70f64ddded4a5121c713ec  libphobos/src/std/logger/filelogger.d
! 23505f8d8333bbaab46e684fa3fb3e96  libphobos/src/std/logger/multilogger.d
! 9c02c2498ffb731d11c25464e692a100  libphobos/src/std/logger/nulllogger.d
! 46036c98d2114ec3a2ecab14712e6020  libphobos/src/std/logger/package.d
! 54abc783aa886d972dd7a75e79ffa633  libphobos/src/std/math/algebraic.d
  3cee3970cfe6bcde0d4b6c640b9aae04  libphobos/src/std/math/constants.d
! ec08f52ee045da547c5f95954eace6f8  libphobos/src/std/math/exponential.d
! ec82ea77cc19ed347a1a6c7fd1a25379  libphobos/src/std/math/hardware.d
! baf8525a2cf99e09cae1e5773e76e76f  libphobos/src/std/math/operations.d
! c853e56e1277ff475fc9250fa6f2d36a  libphobos/src/std/math/package.d
  88694133c2ab2068b6250dbc41d3cb48  libphobos/src/std/math/remainder.d
! 6faabbbc04af40d60b9b43699f9f516b  libphobos/src/std/math/rounding.d
  e8bd9e50e4db07d1a28a96f8bef435c6  libphobos/src/std/math/traits.d
! 4fc92c75a10fe82c72b2ccd784d7c30c  libphobos/src/std/math/trigonometry.d
  7fa986b6825d8e7e1d7602c9fae96379  libphobos/src/std/mathspecial.d
! 3fcc7e62612171e7a4e18b8c0053b366  libphobos/src/std/meta.d
! 147b77e1ee842c8ac29b217e5159b2e6  libphobos/src/std/mmfile.d
! 08b2db988f8716ba402dc44bd0192e0f  libphobos/src/std/net/curl.d
  c8b18b34f9ff72e666e93c31469c4e16  libphobos/src/std/net/isemail.d
! c208ca0e4a58c2a3affa9af9f75babb4  libphobos/src/std/numeric.d
! eac913027614b686f9bf7fb8438c2e21  libphobos/src/std/outbuffer.d
! f0acf0010f4a57e539c9ce4e9d0f5755  libphobos/src/std/package.d
! 5bf993de89e695e93f43bbb645414e0a  libphobos/src/std/parallelism.d
! 5e962a3f11ceafeb59e6ce7c0fab7a3b  libphobos/src/std/path.d
! 6db47952f7cb0b7744925e62b37222ba  libphobos/src/std/process.d
! 49af2902e43591a4bd0f68d8a44783f9  libphobos/src/std/random.d
  c5cd4fcc3bcab89448fcfebb69227b4d  libphobos/src/std/range/interfaces.d
! 8fea1860fc7ff48e56b4ec259a5f705a  libphobos/src/std/range/package.d
! 764140340b8332c7449e9c3b367d756e  libphobos/src/std/range/primitives.d
  5a09afc95efa24ecdcec9b5f358e4c9d  libphobos/src/std/regex/internal/backtracking.d
  44883eb43e246b6b244c1ff51ebf2822  libphobos/src/std/regex/internal/generator.d
  01c86d99e9f6ec573a51963bd681e3b1  libphobos/src/std/regex/internal/ir.d
  12c8dadaebb3d1657fa4dce91b6111d4  libphobos/src/std/regex/internal/kickstart.d
! 3e005a024d66ef29d04fc0abfdf36ec4  libphobos/src/std/regex/internal/parser.d
  ac0a9a606c95c4c1632599630d77cac4  libphobos/src/std/regex/internal/tests.d
  25f5ce0273dbf7fcc617aeb2137a0e7d  libphobos/src/std/regex/internal/tests2.d
  aeaabeccb20b26b961df5a92a0216c53  libphobos/src/std/regex/internal/thompson.d
! 47cd81b1a0dc2adfe8e9da5a8ef5b63d  libphobos/src/std/regex/package.d
  ece83ca6b8d7d3df554ca657bdcc387d  libphobos/src/std/signals.d
! ae83b0beccef7d87c61258923ddc17b4  libphobos/src/std/socket.d
  65fa3f6f1125566206c3a4ac3e8adfe3  libphobos/src/std/stdint.d
! 4280b9a9ad5478179961f8735de142a7  libphobos/src/std/stdio.d
! 20ad4ee155f1e170f3b9ecab06bad676  libphobos/src/std/string.d
! ac6e9374fad99b8c7b2915f5fb6352a7  libphobos/src/std/sumtype.d
  743fc73fb5b932ab501e2690fb60f287  libphobos/src/std/system.d
! 6411ab55aba8ea835fd5bbb2597aee3e  libphobos/src/std/traits.d
! c8f144d14b62bd4a13595cfc5882ff61  libphobos/src/std/typecons.d
  8592c7afe7a1de32c25d04e3fa0f2bca  libphobos/src/std/typetuple.d
! 4593b802a089d694b21b9a19ece97db5  libphobos/src/std/uni/package.d
  c2ff190df1f5298cbcc40494150b1d48  libphobos/src/std/uri.d
! 02e3af15d679c4ea40489186f14e9889  libphobos/src/std/utf.d
  3a666d69aed573579bcbef378706e687  libphobos/src/std/uuid.d
  06feadc915c94a6adc156e6db485e105  libphobos/src/std/variant.d
  fb2675bdcc716cb272a59ab642e3b40b  libphobos/src/std/windows/charset.d
! dd46a2873cda836b4a607e35ac2a3835  libphobos/src/std/windows/registry.d
  2d02a363c97346a106c63e9894a52b65  libphobos/src/std/windows/syserror.d
  87f26ae34d849b4750d292a331ff26aa  libphobos/src/std/zip.d
  4e04d19560e31a1b8b799dd43fcd51f8  libphobos/src/std/zlib.d
! 51f8fa93891dd6867b9da9f06059ab13  libphobos/testsuite/Makefile.am
  a13be93a99fb4f3ac1cd895ac34c9305  libphobos/testsuite/Makefile.in
! a8d26f543d3393bcb27983e0b5b633ac  libphobos/testsuite/config/default.exp
! e2e6ee5954aaef0018256f2e68120125  libphobos/testsuite/lib/libphobos-dg.exp
! 5cc2d02560dd9b826df0d93e75333a6e  libphobos/testsuite/lib/libphobos.exp
! 30f70bc08e80927893153082649fe4b9  libphobos/testsuite/libphobos.aa/aa.exp
  f242f91c78645f5850aa6ef68c87ebab  libphobos/testsuite/libphobos.aa/test_aa.d
  d86b969dda21cc9af1483872e4a3dcc8  libphobos/testsuite/libphobos.allocations/alloc_from_assert.d
! 2536d9c16179e1ea2562f422c293c1ef  libphobos/testsuite/libphobos.allocations/allocations.exp
  7dfee0831ce08cfd971056dee5ce8519  libphobos/testsuite/libphobos.allocations/overflow_from_existing.d
  39b50d25dc11230fd4d61a9d7c8cf7a0  libphobos/testsuite/libphobos.allocations/overflow_from_zero.d
  94c17250a195da16fb246ef8e28d3477  libphobos/testsuite/libphobos.allocations/tls_gc_integration.d
! dec139219bc2572d79655208f1eba1c5  libphobos/testsuite/libphobos.betterc/betterc.exp
  62bfbf82ba7ca2ce9c06e31251b5f47c  libphobos/testsuite/libphobos.betterc/test18828.d
  2ffa89e25b800dccc9be63ee4390ba9c  libphobos/testsuite/libphobos.betterc/test19416.d
  30aa08f7286c05e97e1c42ab62639574  libphobos/testsuite/libphobos.betterc/test19421.d
*************** dff431eaf273342c672aaf2c74ab92a6  libpho
*** 103791,103816 ****
  ac1556b23f971f5009959fb07f8166bf  libphobos/testsuite/libphobos.betterc/test20088.d
  3589455e03e693d6f583052b791e5f4f  libphobos/testsuite/libphobos.betterc/test20613.d
  a3cb48ed7c054296fe69ea02aaa283ef  libphobos/testsuite/libphobos.betterc/test22336.d
! 252f8c0979c71ceb86fcfc6acb6420ad  libphobos/testsuite/libphobos.config/config.exp
  0e3c934dac31e4a869413c3f3969211e  libphobos/testsuite/libphobos.config/test19433.d
  4c5e592032e7cbd4c033dc9af9201db0  libphobos/testsuite/libphobos.config/test20459.d
  4cda878bfbdcad844a4124b36664f4a8  libphobos/testsuite/libphobos.config/test22523.d
! 088997f6a40befa87a66e2a71738f7bf  libphobos/testsuite/libphobos.cycles/cycles.exp
  1d8fc1ccfee07e211685dad723c7c5ef  libphobos/testsuite/libphobos.cycles/mod1.d
  504ac65b81c5b13426dbccb387e5ea96  libphobos/testsuite/libphobos.cycles/mod2.d
  8fd2e066de9b173803c23766ec268bc6  libphobos/testsuite/libphobos.cycles/mod3.d
! 203bcc2119bc9af43db3f0e5b09d6948  libphobos/testsuite/libphobos.druntime/druntime.exp
! 37912e90d87534d65427108bfb6512a8  libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
  1b0ad49679c9a06598cfe65b1f98773d  libphobos/testsuite/libphobos.exceptions/assert_fail.d
  0853067452a85c65ff3629b907628f4d  libphobos/testsuite/libphobos.exceptions/catch_in_finally.d
  53adf2e14495ca10a85a32022b69fa86  libphobos/testsuite/libphobos.exceptions/chain.d
! 0ad611065de7b103ec02d24117f344ff  libphobos/testsuite/libphobos.exceptions/exceptions.exp
  d595be7092b8db6d94bfdad2f3582157  libphobos/testsuite/libphobos.exceptions/future_message.d
  17d3680e349b715f2c8ae4cd23ab5dc5  libphobos/testsuite/libphobos.exceptions/invalid_memory_operation.d
  f20a3bb9bc82bda410377ab87e9dfa75  libphobos/testsuite/libphobos.exceptions/line_trace.d
  5204c2c6007dd17d2eef187695f8c022  libphobos/testsuite/libphobos.exceptions/long_backtrace_trunc.d
  70b76ebf678e92adfb039cba075728ee  libphobos/testsuite/libphobos.exceptions/message_with_null.d
! fd11b15c92352dad4e470062d7148517  libphobos/testsuite/libphobos.exceptions/refcounted.d
  debfe4beaf54e77109e0c996fbdc45a7  libphobos/testsuite/libphobos.exceptions/rt_trap_exceptions.d
  d0b0d163e054a715940a0b8c19fc84a2  libphobos/testsuite/libphobos.exceptions/rt_trap_exceptions_drt.d
  bf5b834c84dce34c411728d08e740501  libphobos/testsuite/libphobos.exceptions/static_dtor.d
--- 111887,111912 ----
  ac1556b23f971f5009959fb07f8166bf  libphobos/testsuite/libphobos.betterc/test20088.d
  3589455e03e693d6f583052b791e5f4f  libphobos/testsuite/libphobos.betterc/test20613.d
  a3cb48ed7c054296fe69ea02aaa283ef  libphobos/testsuite/libphobos.betterc/test22336.d
! df51905f51c68a5595a452c8f28502f1  libphobos/testsuite/libphobos.config/config.exp
  0e3c934dac31e4a869413c3f3969211e  libphobos/testsuite/libphobos.config/test19433.d
  4c5e592032e7cbd4c033dc9af9201db0  libphobos/testsuite/libphobos.config/test20459.d
  4cda878bfbdcad844a4124b36664f4a8  libphobos/testsuite/libphobos.config/test22523.d
! fff6c66856948e0bf98e183bd02c5e5d  libphobos/testsuite/libphobos.cycles/cycles.exp
  1d8fc1ccfee07e211685dad723c7c5ef  libphobos/testsuite/libphobos.cycles/mod1.d
  504ac65b81c5b13426dbccb387e5ea96  libphobos/testsuite/libphobos.cycles/mod2.d
  8fd2e066de9b173803c23766ec268bc6  libphobos/testsuite/libphobos.cycles/mod3.d
! b0307ec2470c07e402252afc2a9e61f6  libphobos/testsuite/libphobos.druntime/druntime.exp
! f805ca8e2ebdb0e1bacf88147e661795  libphobos/testsuite/libphobos.druntime_shared/druntime_shared.exp
  1b0ad49679c9a06598cfe65b1f98773d  libphobos/testsuite/libphobos.exceptions/assert_fail.d
  0853067452a85c65ff3629b907628f4d  libphobos/testsuite/libphobos.exceptions/catch_in_finally.d
  53adf2e14495ca10a85a32022b69fa86  libphobos/testsuite/libphobos.exceptions/chain.d
! 2536d9c16179e1ea2562f422c293c1ef  libphobos/testsuite/libphobos.exceptions/exceptions.exp
  d595be7092b8db6d94bfdad2f3582157  libphobos/testsuite/libphobos.exceptions/future_message.d
  17d3680e349b715f2c8ae4cd23ab5dc5  libphobos/testsuite/libphobos.exceptions/invalid_memory_operation.d
  f20a3bb9bc82bda410377ab87e9dfa75  libphobos/testsuite/libphobos.exceptions/line_trace.d
  5204c2c6007dd17d2eef187695f8c022  libphobos/testsuite/libphobos.exceptions/long_backtrace_trunc.d
  70b76ebf678e92adfb039cba075728ee  libphobos/testsuite/libphobos.exceptions/message_with_null.d
! fb328b5f9662d2fd858f69079b72370b  libphobos/testsuite/libphobos.exceptions/refcounted.d
  debfe4beaf54e77109e0c996fbdc45a7  libphobos/testsuite/libphobos.exceptions/rt_trap_exceptions.d
  d0b0d163e054a715940a0b8c19fc84a2  libphobos/testsuite/libphobos.exceptions/rt_trap_exceptions_drt.d
  bf5b834c84dce34c411728d08e740501  libphobos/testsuite/libphobos.exceptions/static_dtor.d
*************** bf5b834c84dce34c411728d08e740501  libpho
*** 103820,103844 ****
  b6ebfcdaf3a8630eae6d2fea0200d718  libphobos/testsuite/libphobos.gc/attributes.d
  5becf076c0fa4681b6900d0d305d77c1  libphobos/testsuite/libphobos.gc/forkgc.d
  8af09af86fcec343cb88000da6cfb030  libphobos/testsuite/libphobos.gc/forkgc2.d
! 774f5323f130348fc511b3351208502e  libphobos/testsuite/libphobos.gc/gc.exp
! 2edada512091a3b4061f7667900f9563  libphobos/testsuite/libphobos.gc/nocollect.d
  96e067519bb8d41abce482b6595333aa  libphobos/testsuite/libphobos.gc/precisegc.d
  84728e02159c56717e2c7bbd57b0b7ea  libphobos/testsuite/libphobos.gc/recoverfree.d
  72c768e90bab4bb63d0d95c0f1d95f23  libphobos/testsuite/libphobos.gc/sigmaskgc.d
  1c1428f89e3640506d3d1b88c74aa9cd  libphobos/testsuite/libphobos.gc/startbackgc.d
! f5872102569ae6573ee1d84cec7ac9fe  libphobos/testsuite/libphobos.hash/hash.exp
! 09b51557521e7370eafd85d775bc966a  libphobos/testsuite/libphobos.hash/test_hash.d
  d132751bd41e111dc5e97a83ea5cfe55  libphobos/testsuite/libphobos.imports/bug18193.d
! 5cdb4be813171fbb60ca58574db9efc0  libphobos/testsuite/libphobos.imports/imports.exp
! b418376d78eb3705708a6bc984fa2b81  libphobos/testsuite/libphobos.init_fini/custom_gc.d
! ea54c346265b64ff5d368d8a2197b96b  libphobos/testsuite/libphobos.init_fini/init_fini.exp
  b6bbf47234f6bdb61c628cae44fb04f9  libphobos/testsuite/libphobos.init_fini/runtime_args.d
  6e0f2e6611c4974eb8f6ad893e3243c9  libphobos/testsuite/libphobos.init_fini/test18996.d
  6cf643d2e05d4806362cf62c56562e5e  libphobos/testsuite/libphobos.init_fini/thread_join.d
  f237366ab4e39b3e3dcfc8bafcde881e  libphobos/testsuite/libphobos.lifetime/large_aggregate_destroy_21097.d
! 774f5323f130348fc511b3351208502e  libphobos/testsuite/libphobos.lifetime/lifetime.exp
! fe0aaf2a9d16a6e33b12d3bb749eb865  libphobos/testsuite/libphobos.phobos/phobos.exp
! 8cb9e1202957667ec0d675940e1df7d0  libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp
  dc9924675718952b484eadd2d458553a  libphobos/testsuite/libphobos.shared/finalize.d
  a0025a5aec846b3bd54d13311de970b6  libphobos/testsuite/libphobos.shared/host.c
  568552f233800fa4522238fe4c907fb7  libphobos/testsuite/libphobos.shared/lib.d
--- 111916,111941 ----
  b6ebfcdaf3a8630eae6d2fea0200d718  libphobos/testsuite/libphobos.gc/attributes.d
  5becf076c0fa4681b6900d0d305d77c1  libphobos/testsuite/libphobos.gc/forkgc.d
  8af09af86fcec343cb88000da6cfb030  libphobos/testsuite/libphobos.gc/forkgc2.d
! b90746106e4bf3a87298f841b4766549  libphobos/testsuite/libphobos.gc/gc.exp
! 3c24ec9d3e8f2608213d6879c1ee28bd  libphobos/testsuite/libphobos.gc/issue22843.d
! 0cf45bd3741c0d5bed6c685e04bca300  libphobos/testsuite/libphobos.gc/nocollect.d
  96e067519bb8d41abce482b6595333aa  libphobos/testsuite/libphobos.gc/precisegc.d
  84728e02159c56717e2c7bbd57b0b7ea  libphobos/testsuite/libphobos.gc/recoverfree.d
  72c768e90bab4bb63d0d95c0f1d95f23  libphobos/testsuite/libphobos.gc/sigmaskgc.d
  1c1428f89e3640506d3d1b88c74aa9cd  libphobos/testsuite/libphobos.gc/startbackgc.d
! 30f70bc08e80927893153082649fe4b9  libphobos/testsuite/libphobos.hash/hash.exp
! a3869323d9fd8f14f58062c273a96f94  libphobos/testsuite/libphobos.hash/test_hash.d
  d132751bd41e111dc5e97a83ea5cfe55  libphobos/testsuite/libphobos.imports/bug18193.d
! eddf200040764afe5fb223c30c734db1  libphobos/testsuite/libphobos.imports/imports.exp
! 153b71c5896b0bfb4056c4c457d01283  libphobos/testsuite/libphobos.init_fini/custom_gc.d
! a22059ee33ae8a95ba33ea163e5a2b92  libphobos/testsuite/libphobos.init_fini/init_fini.exp
  b6bbf47234f6bdb61c628cae44fb04f9  libphobos/testsuite/libphobos.init_fini/runtime_args.d
  6e0f2e6611c4974eb8f6ad893e3243c9  libphobos/testsuite/libphobos.init_fini/test18996.d
  6cf643d2e05d4806362cf62c56562e5e  libphobos/testsuite/libphobos.init_fini/thread_join.d
  f237366ab4e39b3e3dcfc8bafcde881e  libphobos/testsuite/libphobos.lifetime/large_aggregate_destroy_21097.d
! b90746106e4bf3a87298f841b4766549  libphobos/testsuite/libphobos.lifetime/lifetime.exp
! 20b8bc6f7b0292d8212c7158f441ca69  libphobos/testsuite/libphobos.phobos/phobos.exp
! 71784d44ac1245cbc04271da3d614c10  libphobos/testsuite/libphobos.phobos_shared/phobos_shared.exp
  dc9924675718952b484eadd2d458553a  libphobos/testsuite/libphobos.shared/finalize.d
  a0025a5aec846b3bd54d13311de970b6  libphobos/testsuite/libphobos.shared/host.c
  568552f233800fa4522238fe4c907fb7  libphobos/testsuite/libphobos.shared/lib.d
*************** df4c464d966dbbdce054e9d59018c866  libpho
*** 103856,103890 ****
  153e2bfb582dbfcdbcdcea85ff915dc9  libphobos/testsuite/libphobos.shared/load_linkdep.d
  d3c9a66f75a4c0e9517bb616aa64dbf0  libphobos/testsuite/libphobos.shared/load_loaddep.d
  7208bfcc87f14bf3c973fd0046246456  libphobos/testsuite/libphobos.shared/plugin.d
! b833b7968232fbbab07fd74de1cff2c2  libphobos/testsuite/libphobos.shared/shared.exp
  d76a16e148ca6be28bb070949f541b19  libphobos/testsuite/libphobos.thread/external_threads.d
  2d54a30ddb78b9f0a38814a319846450  libphobos/testsuite/libphobos.thread/fiber_guard_page.d
  3e309c288aff9749089ac68af091756f  libphobos/testsuite/libphobos.thread/join_detach.d
  42d85aa4daa1f572a3dd573c6b4a7b79  libphobos/testsuite/libphobos.thread/test_import.d
! 0ad611065de7b103ec02d24117f344ff  libphobos/testsuite/libphobos.thread/thread.exp
  d57071e219935d7e85956a6a6cffdee8  libphobos/testsuite/libphobos.thread/tlsgc_sections.d
  2ae1787b8a29d9e252614d3d8c1c2e1e  libphobos/testsuite/libphobos.thread/tlsstack.d
  78f60a158455ee76966df72c07eb01b2  libphobos/testsuite/libphobos.traits/all_satisfy.d
! 774f5323f130348fc511b3351208502e  libphobos/testsuite/libphobos.traits/traits.exp
  78729aa84444a843eaada3c2e3a17e43  libphobos/testsuite/libphobos.typeinfo/comparison.d
  022137c81bdd2f5b3a98cba92fdad9a7  libphobos/testsuite/libphobos.typeinfo/enum_.d
  42891afbce3f3a03e17ba0e0e4b6dadd  libphobos/testsuite/libphobos.typeinfo/isbaseof.d
  f0442e8b8974938ded0d17389f8b0608  libphobos/testsuite/libphobos.typeinfo/struct-align.d
! ea54c346265b64ff5d368d8a2197b96b  libphobos/testsuite/libphobos.typeinfo/typeinfo.exp
  d3ca33295a3a7d8dce98defab11dd626  libphobos/testsuite/libphobos.unittest/customhandler.d
! 0a20e31851bfeb7af5c833abe63b3ba1  libphobos/testsuite/libphobos.unittest/unittest.exp
  bf9a9859c3d5e0581c756501aefba7b9  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 6e79c10f78047523875b20b6f32e2a78  libquadmath/ChangeLog
  4696eddf264dd090e144b4849b0a6d91  libquadmath/Makefile.am
  644a78a01d94abe28b364eaa21142d82  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
  1a1d1b5a61d685d544d98ec2e4b86d5a  libquadmath/aclocal.m4
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
! 29f1dc1d4d1b2c2dde209fe86503326b  libquadmath/configure
  06e51379889d00dc467f2a2d496fa0a7  libquadmath/configure.ac
! ad2f49008e837f007286d54545656dcc  libquadmath/libquadmath.info
! b19dc24b5767bb9f3e4d7b3bb50f9f47  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
  c4c7d5ffedb33360fdfb16dc037faf46  libquadmath/math/acosq.c
--- 111953,111987 ----
  153e2bfb582dbfcdbcdcea85ff915dc9  libphobos/testsuite/libphobos.shared/load_linkdep.d
  d3c9a66f75a4c0e9517bb616aa64dbf0  libphobos/testsuite/libphobos.shared/load_loaddep.d
  7208bfcc87f14bf3c973fd0046246456  libphobos/testsuite/libphobos.shared/plugin.d
! 6de6b8c69574a860611a6bcf62aa5263  libphobos/testsuite/libphobos.shared/shared.exp
  d76a16e148ca6be28bb070949f541b19  libphobos/testsuite/libphobos.thread/external_threads.d
  2d54a30ddb78b9f0a38814a319846450  libphobos/testsuite/libphobos.thread/fiber_guard_page.d
  3e309c288aff9749089ac68af091756f  libphobos/testsuite/libphobos.thread/join_detach.d
  42d85aa4daa1f572a3dd573c6b4a7b79  libphobos/testsuite/libphobos.thread/test_import.d
! 2536d9c16179e1ea2562f422c293c1ef  libphobos/testsuite/libphobos.thread/thread.exp
  d57071e219935d7e85956a6a6cffdee8  libphobos/testsuite/libphobos.thread/tlsgc_sections.d
  2ae1787b8a29d9e252614d3d8c1c2e1e  libphobos/testsuite/libphobos.thread/tlsstack.d
  78f60a158455ee76966df72c07eb01b2  libphobos/testsuite/libphobos.traits/all_satisfy.d
! b90746106e4bf3a87298f841b4766549  libphobos/testsuite/libphobos.traits/traits.exp
  78729aa84444a843eaada3c2e3a17e43  libphobos/testsuite/libphobos.typeinfo/comparison.d
  022137c81bdd2f5b3a98cba92fdad9a7  libphobos/testsuite/libphobos.typeinfo/enum_.d
  42891afbce3f3a03e17ba0e0e4b6dadd  libphobos/testsuite/libphobos.typeinfo/isbaseof.d
  f0442e8b8974938ded0d17389f8b0608  libphobos/testsuite/libphobos.typeinfo/struct-align.d
! a22059ee33ae8a95ba33ea163e5a2b92  libphobos/testsuite/libphobos.typeinfo/typeinfo.exp
  d3ca33295a3a7d8dce98defab11dd626  libphobos/testsuite/libphobos.unittest/customhandler.d
! 020279de8eacb878931ae40833bd6508  libphobos/testsuite/libphobos.unittest/unittest.exp
  bf9a9859c3d5e0581c756501aefba7b9  libphobos/testsuite/testsuite_flags.in
  a916467b91076e631dd8edb7424769c7  libquadmath/COPYING.LIB
! 3c1776aed78a52c8552befb27865f1d4  libquadmath/ChangeLog
  4696eddf264dd090e144b4849b0a6d91  libquadmath/Makefile.am
  644a78a01d94abe28b364eaa21142d82  libquadmath/Makefile.in
  d9afbc1f1e04c7e461265ff9323cc6f4  libquadmath/acinclude.m4
  1a1d1b5a61d685d544d98ec2e4b86d5a  libquadmath/aclocal.m4
  cf5a7864ff15ab4dd1604e0f6fe4e501  libquadmath/config.h.in
! 035eb12396ed54eabc107d50a6093049  libquadmath/configure
  06e51379889d00dc467f2a2d496fa0a7  libquadmath/configure.ac
! 70f6009f2a5b2ed91b92a70a33e73c0c  libquadmath/libquadmath.info
! a385ffa67608997e98aa725913cf5169  libquadmath/libquadmath.texi
  77280bb7ee423875e03d9c0d34527df6  libquadmath/libtool-version
  452fee0ef153d65eb7413a5103c63a23  libquadmath/math/acoshq.c
  c4c7d5ffedb33360fdfb16dc037faf46  libquadmath/math/acosq.c
*************** f845f38cb4881746998a6efcc94bbb81  libqua
*** 103992,103998 ****
  9d27ac1d9a027dbe00e9679b7adba64c  libquadmath/printf/flt1282mpn.c
  259213d6d81cc752653ad9fc57f02194  libquadmath/printf/fpioconst.c
  d8a11a64ba7f3914e2eeaaaf9a274f75  libquadmath/printf/fpioconst.h
! b67a007c23999dda365051cda023edbf  libquadmath/printf/gmp-impl.h
  5b9229a164e299bcff62c7696af4df94  libquadmath/printf/lshift.c
  dccfb932e7a4ec8c89731a6c7a7a9b82  libquadmath/printf/mul.c
  1cfc3bffd2c94cb06e55b49841dc8f7f  libquadmath/printf/mul_1.c
--- 112089,112095 ----
  9d27ac1d9a027dbe00e9679b7adba64c  libquadmath/printf/flt1282mpn.c
  259213d6d81cc752653ad9fc57f02194  libquadmath/printf/fpioconst.c
  d8a11a64ba7f3914e2eeaaaf9a274f75  libquadmath/printf/fpioconst.h
! f82ab3e76785fdb6583fcc500defddc5  libquadmath/printf/gmp-impl.h
  5b9229a164e299bcff62c7696af4df94  libquadmath/printf/lshift.c
  dccfb932e7a4ec8c89731a6c7a7a9b82  libquadmath/printf/mul.c
  1cfc3bffd2c94cb06e55b49841dc8f7f  libquadmath/printf/mul_1.c
*************** cd139c8f7066ccd99c46052b7b67b2cb  libqua
*** 104011,104078 ****
  a21481cfd0382ef41901608376f2161c  libquadmath/quadmath_weak.h
  e766022f8615b72cbc38335d262e9d3d  libquadmath/strtod/grouping.h
  a73fdec6746eaad8ccdc8e8403aac562  libquadmath/strtod/mpn2flt128.c
! a81cc82679e80c86cfbd5575867450d0  libquadmath/strtod/strtod_l.c
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 35644b3d1f8e9af776b75c00d0b07487  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
! eb7d5a3897193a0675d10dd982bfae23  libsanitizer/LOCAL_PATCHES
! d31f7857c9103d4efd56a5160bd7cf55  libsanitizer/MERGE
  843b9a7b22b34445ab6cc181f7afd30b  libsanitizer/Makefile.am
! 665697c55c3e2c6b0f0ff618a6c54112  libsanitizer/Makefile.in
  af677523339d9108ea25d6905226bf0a  libsanitizer/README.gcc
  9fefac8c0974bfaa97f7bd2eba2ecb55  libsanitizer/acinclude.m4
  9157157843ddc468aad53af489d0645c  libsanitizer/aclocal.m4
  a17c4fac84d617d97a39525f0f8d4ba7  libsanitizer/asan/Makefile.am
! c3d2f18219c51f82f98f69f703a0a7f1  libsanitizer/asan/Makefile.in
! 95fe7ddd3619047b1789dacbf0905dba  libsanitizer/asan/asan_activation.cpp
  49679f380cb38cd6671d4d18b3c103e2  libsanitizer/asan/asan_activation.h
  acd6633a0710d8be6454db6d024d7aa9  libsanitizer/asan/asan_activation_flags.inc
! 257883e851687416ad99606b20115bf4  libsanitizer/asan/asan_allocator.cpp
! 906603fd273bfab66c616ec5615f9f47  libsanitizer/asan/asan_allocator.h
! a23132af27a098da6aa946be3c784d92  libsanitizer/asan/asan_debugging.cpp
! bd111df4b0a5bd83d07d25db03525706  libsanitizer/asan/asan_descriptions.cpp
  7b358db7fce5735bf54b9bd9ee5fea48  libsanitizer/asan/asan_descriptions.h
! ae3127346e2b634b1895df3d42d42d3a  libsanitizer/asan/asan_errors.cpp
! 1d5de746827142d7ea1943556d298756  libsanitizer/asan/asan_errors.h
! e9ab848c34717c09758b2f66f3a4d122  libsanitizer/asan/asan_fake_stack.cpp
  a15f0895968debeada4576d3f50cd49f  libsanitizer/asan/asan_fake_stack.h
! d2fb98699ae8122864970332e38e2f44  libsanitizer/asan/asan_flags.cpp
  62bf4dd74e13c5de98bece330fca0dae  libsanitizer/asan/asan_flags.h
! c91953640148508c60ec898f284e5dcd  libsanitizer/asan/asan_flags.inc
! 73583f3f9f815fc5114ff82531c58399  libsanitizer/asan/asan_fuchsia.cpp
! b41b7686f508d11bbe8e7de0b71e9117  libsanitizer/asan/asan_globals.cpp
  6f0a3e5b544abc4a7e05109d94bc01f6  libsanitizer/asan/asan_globals_win.cpp
  70bdc70f05ca1bf6f615ea7609e3bf8c  libsanitizer/asan/asan_init_version.h
! 838c3698966bd06680179429b228f2c2  libsanitizer/asan/asan_interceptors.cpp
! dfc3478e79bdf3291e96c78fbc32d020  libsanitizer/asan/asan_interceptors.h
  5cbebdef2336f3a275011ccd0c2c0c62  libsanitizer/asan/asan_interceptors_memintrinsics.cpp
! 74aac85222c7e2a49a37c5d6d6eef525  libsanitizer/asan/asan_interceptors_memintrinsics.h
! 0a948195ce48643ed8bf2a408f34139f  libsanitizer/asan/asan_interceptors_vfork.S
! 0ce06d4681f6d7ee274d714005a1e548  libsanitizer/asan/asan_interface.inc
! 0ef4a03be11df9ef0907f857904612cd  libsanitizer/asan/asan_interface_internal.h
! ce9007db6a8966eb09faf0813ec360d2  libsanitizer/asan/asan_internal.h
! 7f3143a5fe1de60053e5999e38a4cbc2  libsanitizer/asan/asan_linux.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/asan/asan_lock.h
! 0982c46c224d6935989e45d1745fab1e  libsanitizer/asan/asan_mac.cpp
  6781e5f75e4e6ac39e557aabd9cb9b2f  libsanitizer/asan/asan_malloc_linux.cpp
! 2bb6ed3c14824117e69719ed5be917f4  libsanitizer/asan/asan_malloc_mac.cpp
  ad791013449cae9daa0b4ec69efa1ab8  libsanitizer/asan/asan_malloc_win.cpp
! 97b4820bed8d819013e86ada4eb8593d  libsanitizer/asan/asan_mapping.h
! 02919456959330f6eb64ef743f43f0c9  libsanitizer/asan/asan_mapping_sparc64.h
  1d6e119ce3ae5fb54b0de58087c07392  libsanitizer/asan/asan_memory_profile.cpp
! d079b449d7d80af78598e8ed838b9cfc  libsanitizer/asan/asan_new_delete.cpp
! 426b71a0ac53e3a893d525880b1c39f3  libsanitizer/asan/asan_poisoning.cpp
! 0128d0a616a5156b124abdc1b59074b5  libsanitizer/asan/asan_poisoning.h
! 75893e223daa67d0c01b512f4ea31681  libsanitizer/asan/asan_posix.cpp
  72bdf1b7e38d574b81f7eda5e24a7341  libsanitizer/asan/asan_preinit.cpp
! dafabda2dd9c06fc4a26b5dd8bf4717b  libsanitizer/asan/asan_premap_shadow.cpp
  a116a301835f4803dda6ba547a4efb13  libsanitizer/asan/asan_premap_shadow.h
! 3ba734872f1c4378af2f15dfeed2789f  libsanitizer/asan/asan_report.cpp
  446fa0a0c19f36c3e72a9b18c5aacc2d  libsanitizer/asan/asan_report.h
! 2f5f469f58c4551c627f5de30bae8a35  libsanitizer/asan/asan_rtl.cpp
  7a66ee99b1b671c738ca237415ef25b8  libsanitizer/asan/asan_scariness_score.h
  8072d65a81c5968f332de2a2db8778f5  libsanitizer/asan/asan_shadow_setup.cpp
  aedac321d57b5a958de5489055d10e24  libsanitizer/asan/asan_stack.cpp
--- 112108,112177 ----
  a21481cfd0382ef41901608376f2161c  libquadmath/quadmath_weak.h
  e766022f8615b72cbc38335d262e9d3d  libquadmath/strtod/grouping.h
  a73fdec6746eaad8ccdc8e8403aac562  libquadmath/strtod/mpn2flt128.c
! e0bd9b8669e44ec6010f92da1d5188ad  libquadmath/strtod/strtod_l.c
  af84fa5118f4adec8393614994e1c4d6  libquadmath/strtod/strtoflt128.c
  d15a18f7c46ba2add6148edc5b7563c0  libquadmath/strtod/tens_in_limb.c
  12c73a846f7668d29de720bd79502bef  libquadmath/update-quadmath.py
! 717802f9ed6d096f7b4c7f7beae9fe40  libsanitizer/ChangeLog
  63916ba64a3cfa7ce2809fb46ab38597  libsanitizer/HOWTO_MERGE
  0249c37748936faf5b1efd5789587909  libsanitizer/LICENSE.TXT
! 29e193ebd43391db91cd7be26d8cd169  libsanitizer/LOCAL_PATCHES
! 9d8beb62349012600255eaaf479cb595  libsanitizer/MERGE
  843b9a7b22b34445ab6cc181f7afd30b  libsanitizer/Makefile.am
! ffe31b8699180006bfdaadd8f9c34bbe  libsanitizer/Makefile.in
  af677523339d9108ea25d6905226bf0a  libsanitizer/README.gcc
  9fefac8c0974bfaa97f7bd2eba2ecb55  libsanitizer/acinclude.m4
  9157157843ddc468aad53af489d0645c  libsanitizer/aclocal.m4
  a17c4fac84d617d97a39525f0f8d4ba7  libsanitizer/asan/Makefile.am
! 9eee12b9beb864b246f96cc1f33f0c1e  libsanitizer/asan/Makefile.in
! d07e95f3fda97a66cd02b78623fb2c53  libsanitizer/asan/asan_activation.cpp
  49679f380cb38cd6671d4d18b3c103e2  libsanitizer/asan/asan_activation.h
  acd6633a0710d8be6454db6d024d7aa9  libsanitizer/asan/asan_activation_flags.inc
! d3796fde2b29e51b88a60bdbeb1ab2e3  libsanitizer/asan/asan_allocator.cpp
! bf6a80b2d13b6db9134b3e4b8c7e9f47  libsanitizer/asan/asan_allocator.h
! 67d7800157dbc7b40cc249055cc0b614  libsanitizer/asan/asan_debugging.cpp
! 06ac8a06d73042d8aad7ef4ff796173f  libsanitizer/asan/asan_descriptions.cpp
  7b358db7fce5735bf54b9bd9ee5fea48  libsanitizer/asan/asan_descriptions.h
! 1498ee8f39d827a27132de48837df5ba  libsanitizer/asan/asan_errors.cpp
! 0326a61101a98a3b9f90930943582781  libsanitizer/asan/asan_errors.h
! fa5fea8b35c165c9e87e0305fb6b819c  libsanitizer/asan/asan_fake_stack.cpp
  a15f0895968debeada4576d3f50cd49f  libsanitizer/asan/asan_fake_stack.h
! 9aaecaf4a2d8dc7ab105857316357556  libsanitizer/asan/asan_flags.cpp
  62bf4dd74e13c5de98bece330fca0dae  libsanitizer/asan/asan_flags.h
! 37604152159e9b0a148b7f9488ff5b51  libsanitizer/asan/asan_flags.inc
! ec768daab10de71351888f3fab66b944  libsanitizer/asan/asan_fuchsia.cpp
! b7d7ebf100599d93461dbfb7c2ddd6ba  libsanitizer/asan/asan_globals.cpp
  6f0a3e5b544abc4a7e05109d94bc01f6  libsanitizer/asan/asan_globals_win.cpp
  70bdc70f05ca1bf6f615ea7609e3bf8c  libsanitizer/asan/asan_init_version.h
! b76d2afb5f75527c5e5599462d2bfac6  libsanitizer/asan/asan_interceptors.cpp
! d9b413d7efd6c6fc584832760322b34c  libsanitizer/asan/asan_interceptors.h
  5cbebdef2336f3a275011ccd0c2c0c62  libsanitizer/asan/asan_interceptors_memintrinsics.cpp
! 9da99fc4ea705f7e1c8f8d2d8f486774  libsanitizer/asan/asan_interceptors_memintrinsics.h
! 47d1026d8b2923487aef9553f134bfe8  libsanitizer/asan/asan_interceptors_vfork.S
! 1e7d255fa2c1933020b98cfd75b1d1e6  libsanitizer/asan/asan_interface.inc
! 08eb391a8b97f054ee0255e42f76dd82  libsanitizer/asan/asan_interface_internal.h
! bba608339744a09ee5fb6640d1fbb550  libsanitizer/asan/asan_internal.h
! 67135126e86fd131925a6f7135a84a71  libsanitizer/asan/asan_linux.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/asan/asan_lock.h
! 17a81b78e69cbe9a9dac996916157f56  libsanitizer/asan/asan_mac.cpp
  6781e5f75e4e6ac39e557aabd9cb9b2f  libsanitizer/asan/asan_malloc_linux.cpp
! 6207aae9ff3ccc0784ab63ebe4eab1fd  libsanitizer/asan/asan_malloc_mac.cpp
  ad791013449cae9daa0b4ec69efa1ab8  libsanitizer/asan/asan_malloc_win.cpp
! a3678c55a5b125584de0621e272ad188  libsanitizer/asan/asan_mapping.h
! 30b2997bea78189e8a56bd135ede2a34  libsanitizer/asan/asan_mapping_sparc64.h
  1d6e119ce3ae5fb54b0de58087c07392  libsanitizer/asan/asan_memory_profile.cpp
! 0d0525aab44f125726588781faac86b7  libsanitizer/asan/asan_new_delete.cpp
! dcc8a798f001ecff9d25e5dd3a64086e  libsanitizer/asan/asan_poisoning.cpp
! 694cb52b66fd0f6d3f41d67429bfa1ba  libsanitizer/asan/asan_poisoning.h
! 83ba60cb7ae46709cc8c9d7590dfb8ae  libsanitizer/asan/asan_posix.cpp
  72bdf1b7e38d574b81f7eda5e24a7341  libsanitizer/asan/asan_preinit.cpp
! 23f7337a787748e05b16643ac1acebdf  libsanitizer/asan/asan_premap_shadow.cpp
  a116a301835f4803dda6ba547a4efb13  libsanitizer/asan/asan_premap_shadow.h
! 60bdbbda49ec4d4b0d3fe76f2ca1225c  libsanitizer/asan/asan_report.cpp
  446fa0a0c19f36c3e72a9b18c5aacc2d  libsanitizer/asan/asan_report.h
! 7dfb1cd284528528079464201bcf012c  libsanitizer/asan/asan_rtl.cpp
! d28b754f660d002fcb71421b13dc895c  libsanitizer/asan/asan_rtl_static.cpp
! 9a2b034b8159b112fd62676ffc84d15f  libsanitizer/asan/asan_rtl_x86_64.S
  7a66ee99b1b671c738ca237415ef25b8  libsanitizer/asan/asan_scariness_score.h
  8072d65a81c5968f332de2a2db8778f5  libsanitizer/asan/asan_shadow_setup.cpp
  aedac321d57b5a958de5489055d10e24  libsanitizer/asan/asan_stack.cpp
*************** ef2378d5d211f663586a3171848d1a25  libsan
*** 104081,104129 ****
  89151303b3f73f562ecdcb3835396dee  libsanitizer/asan/asan_stats.h
  a2311345c440ff8eb171ae9fa30980b6  libsanitizer/asan/asan_suppressions.cpp
  8ab11db904fc944b69ba16601317c1c7  libsanitizer/asan/asan_suppressions.h
! 208d91edc7ba57d8e29f5d21ec899b47  libsanitizer/asan/asan_thread.cpp
  652a05c118cd1b46774248730849bfb3  libsanitizer/asan/asan_thread.h
! d9f330cfc73dcdf38ae149ae5ba719ac  libsanitizer/asan/asan_win.cpp
! 04f1f4ed8494f257b85b04acb5ba1429  libsanitizer/asan/asan_win_dll_thunk.cpp
  c38c4aad80d927b2557c5e1699d5ad04  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp
  92464876ef7c58cb739f8dbb05e2f3a9  libsanitizer/asan/asan_win_weak_interception.cpp
  faf2a6ac3826446f8109f955fc331f15  libsanitizer/asan/libtool-version
! c50a89dac6948f41e92cfe2a810a13f8  libsanitizer/builtins/assembly.h
  4d6948c4912be5da16e30aac001b87d7  libsanitizer/config.h.in
! b6607b100de9062bd564f1643d34f4b1  libsanitizer/configure
! 2919fdc146a50db5046087746856bd0f  libsanitizer/configure.ac
! 60b96644243456152e202b3863d62262  libsanitizer/configure.tgt
! 67b34ddb7e381b476beabd5723cad66a  libsanitizer/hwasan/Makefile.am
! 86ee1b4ab68f16b6a2d0b2ed9efc94d4  libsanitizer/hwasan/Makefile.in
! cee328f472ec30601c33b88db78e99e9  libsanitizer/hwasan/hwasan.cpp
! da1b462113446b935a990b1e9564ade0  libsanitizer/hwasan/hwasan.h
  0ad763c8a54a04f00c452466414ab5ad  libsanitizer/hwasan/hwasan_allocation_functions.cpp
! e5d104e172e7a48a92af01a8b8a75b2a  libsanitizer/hwasan/hwasan_allocator.cpp
! 3577e68fdedb30a2b018a8ad98a11f7e  libsanitizer/hwasan/hwasan_allocator.h
! c954372edba4d4ebf0f109fda4ca2862  libsanitizer/hwasan/hwasan_checks.h
  4cf3a55f32e00047bdea18be105fee25  libsanitizer/hwasan/hwasan_dynamic_shadow.cpp
  d2c53fada53bfee78b11f99e297aed7b  libsanitizer/hwasan/hwasan_dynamic_shadow.h
! c2d26ecd91028632f638e416d9baa771  libsanitizer/hwasan/hwasan_exceptions.cpp
  9750f099c8028db1b9c972cc7157280a  libsanitizer/hwasan/hwasan_flags.h
! 14db0e2504d76966ad8a11ffea633759  libsanitizer/hwasan/hwasan_flags.inc
! 54a7e02c883e4b024d1318fd9ba33369  libsanitizer/hwasan/hwasan_fuchsia.cpp
  8b0d27d2990e7a5abefa41c4b95a0b6f  libsanitizer/hwasan/hwasan_globals.cpp
  7050574c89f5706695578f62a6ead34e  libsanitizer/hwasan/hwasan_globals.h
! 978af06d0dc26b058530175059feb637  libsanitizer/hwasan/hwasan_interceptors.cpp
  0ff1272e9d2ece4e771dfba1ecb0d538  libsanitizer/hwasan/hwasan_interceptors_vfork.S
! 0b5e158a5b163494b8bc1a952452eb34  libsanitizer/hwasan/hwasan_interface_internal.h
! ccf313429f143504a7dbde91539cbf80  libsanitizer/hwasan/hwasan_linux.cpp
  2ee3ae16d29b69720e9f2512908a45b5  libsanitizer/hwasan/hwasan_malloc_bisect.h
  4390a795bf11c5cb596462234bb81e09  libsanitizer/hwasan/hwasan_mapping.h
! 9174b1c62030d599c546bc185df1cdd0  libsanitizer/hwasan/hwasan_memintrinsics.cpp
! 956b57e6395172a411be52bb9d1d4992  libsanitizer/hwasan/hwasan_new_delete.cpp
  1a7f73da0601ac3a2513cdd5c3cc5127  libsanitizer/hwasan/hwasan_poisoning.cpp
  dbbf5a6219c3628eace17cf1d008c47a  libsanitizer/hwasan/hwasan_poisoning.h
! fcdf5d4ce26e89e8aba8613a526946f4  libsanitizer/hwasan/hwasan_report.cpp
  b654d3bf43a1885c15c7c532f2b80593  libsanitizer/hwasan/hwasan_report.h
  be6af72ba704df21216bd7b113e6c4a3  libsanitizer/hwasan/hwasan_setjmp_aarch64.S
! dcf47771e29a64885d5f4dbabb199b8a  libsanitizer/hwasan/hwasan_setjmp_x86_64.S
  e8316f0fda60b4f54b0b0e58cb239615  libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S
  21cded2cd661c60ca2d08990f7ee68c0  libsanitizer/hwasan/hwasan_thread.cpp
  1bf767f64cb604e1341cee21a7443a4d  libsanitizer/hwasan/hwasan_thread.h
  fcf1e6e0b38d0f6bfea54329fbf30801  libsanitizer/hwasan/hwasan_thread_list.cpp
--- 112180,112231 ----
  89151303b3f73f562ecdcb3835396dee  libsanitizer/asan/asan_stats.h
  a2311345c440ff8eb171ae9fa30980b6  libsanitizer/asan/asan_suppressions.cpp
  8ab11db904fc944b69ba16601317c1c7  libsanitizer/asan/asan_suppressions.h
! d6174ce97b31531a753ccfa0fed5d36b  libsanitizer/asan/asan_thread.cpp
  652a05c118cd1b46774248730849bfb3  libsanitizer/asan/asan_thread.h
! eb63f48be4758043b23f7fe684b70df4  libsanitizer/asan/asan_win.cpp
! 3ca30720aa304be94b3da9b9229a00cb  libsanitizer/asan/asan_win_dll_thunk.cpp
  c38c4aad80d927b2557c5e1699d5ad04  libsanitizer/asan/asan_win_dynamic_runtime_thunk.cpp
  92464876ef7c58cb739f8dbb05e2f3a9  libsanitizer/asan/asan_win_weak_interception.cpp
  faf2a6ac3826446f8109f955fc331f15  libsanitizer/asan/libtool-version
! 2d1a152776155afb7e7035ecdb57a64c  libsanitizer/builtins/assembly.h
  4d6948c4912be5da16e30aac001b87d7  libsanitizer/config.h.in
! d6e68cb3a51e9a0dd93330229cc5ca88  libsanitizer/configure
! f421c49834bf09c52411421cc6405d5f  libsanitizer/configure.ac
! 883f92fc094be6aa29d3b72e1a863a26  libsanitizer/configure.tgt
! 8eee91edc666386f35fddb6c267a641d  libsanitizer/hwasan/Makefile.am
! a6952b8b8e54cd7af57921b3638dddea  libsanitizer/hwasan/Makefile.in
! 3eda9625082749e88bf642b760590c12  libsanitizer/hwasan/hwasan.cpp
! e28db9d1e895b4e45c0c953e3d81e49e  libsanitizer/hwasan/hwasan.h
  0ad763c8a54a04f00c452466414ab5ad  libsanitizer/hwasan/hwasan_allocation_functions.cpp
! a5a8871d78aa5c523a72eac89cac99eb  libsanitizer/hwasan/hwasan_allocator.cpp
! e9891674586d0aa2f9593e46d738bd41  libsanitizer/hwasan/hwasan_allocator.h
! dbcbcdcb6924796129c3436e7e003f7e  libsanitizer/hwasan/hwasan_checks.h
  4cf3a55f32e00047bdea18be105fee25  libsanitizer/hwasan/hwasan_dynamic_shadow.cpp
  d2c53fada53bfee78b11f99e297aed7b  libsanitizer/hwasan/hwasan_dynamic_shadow.h
! d21ec6ca7be0f0ada7a5bf47c3b52a76  libsanitizer/hwasan/hwasan_exceptions.cpp
  9750f099c8028db1b9c972cc7157280a  libsanitizer/hwasan/hwasan_flags.h
! caa3a64be59f22cdf75711aa473efe55  libsanitizer/hwasan/hwasan_flags.inc
! 2ab4a77bf2f0cf3891fa14503e2af092  libsanitizer/hwasan/hwasan_fuchsia.cpp
  8b0d27d2990e7a5abefa41c4b95a0b6f  libsanitizer/hwasan/hwasan_globals.cpp
  7050574c89f5706695578f62a6ead34e  libsanitizer/hwasan/hwasan_globals.h
! 728a36b9af7dae183e5d87d8126c27c2  libsanitizer/hwasan/hwasan_interceptors.cpp
  0ff1272e9d2ece4e771dfba1ecb0d538  libsanitizer/hwasan/hwasan_interceptors_vfork.S
! dae28c91f7155b0ed445d9f4fb0b320f  libsanitizer/hwasan/hwasan_interface_internal.h
! 32fa17d98508d80fc5f7051687bb9927  libsanitizer/hwasan/hwasan_linux.cpp
  2ee3ae16d29b69720e9f2512908a45b5  libsanitizer/hwasan/hwasan_malloc_bisect.h
  4390a795bf11c5cb596462234bb81e09  libsanitizer/hwasan/hwasan_mapping.h
! 2d06c5db89598a40af784209b054ff3f  libsanitizer/hwasan/hwasan_memintrinsics.cpp
! 4f2f87e111623aa3c37399ce2c29e11a  libsanitizer/hwasan/hwasan_new_delete.cpp
  1a7f73da0601ac3a2513cdd5c3cc5127  libsanitizer/hwasan/hwasan_poisoning.cpp
  dbbf5a6219c3628eace17cf1d008c47a  libsanitizer/hwasan/hwasan_poisoning.h
! a88f7c232a1a8e9337d73f11b2d1f2a6  libsanitizer/hwasan/hwasan_preinit.cpp
! 46cbdf5b296992c68eaaa1eaa3c7d2c9  libsanitizer/hwasan/hwasan_report.cpp
  b654d3bf43a1885c15c7c532f2b80593  libsanitizer/hwasan/hwasan_report.h
  be6af72ba704df21216bd7b113e6c4a3  libsanitizer/hwasan/hwasan_setjmp_aarch64.S
! 9d08d96aeef0a5c0af51bf986af59d39  libsanitizer/hwasan/hwasan_setjmp_riscv64.S
! cf15b596879fcc35ae489d813955ed21  libsanitizer/hwasan/hwasan_setjmp_x86_64.S
  e8316f0fda60b4f54b0b0e58cb239615  libsanitizer/hwasan/hwasan_tag_mismatch_aarch64.S
+ 2de869754f30f0e4fc56ea5e883d2957  libsanitizer/hwasan/hwasan_tag_mismatch_riscv64.S
  21cded2cd661c60ca2d08990f7ee68c0  libsanitizer/hwasan/hwasan_thread.cpp
  1bf767f64cb604e1341cee21a7443a4d  libsanitizer/hwasan/hwasan_thread.h
  fcf1e6e0b38d0f6bfea54329fbf30801  libsanitizer/hwasan/hwasan_thread_list.cpp
*************** fcf1e6e0b38d0f6bfea54329fbf30801  libsan
*** 104132,104145 ****
  c2d591f0e8a0a7d8a274ee310042f00c  libsanitizer/hwasan/libtool-version
  62164e6387eaa4f03566444e00018275  libsanitizer/include/sanitizer/allocator_interface.h
  cb6ab278769580386fbea1eebef0c212  libsanitizer/include/sanitizer/asan_interface.h
! 97a8f6da2dc1086b9b8a8eb168ac6d7f  libsanitizer/include/sanitizer/common_interface_defs.h
  2473b60a7a21e100e8373bfe0d6b6aef  libsanitizer/include/sanitizer/coverage_interface.h
! 0660d3ac4a2c1a982572577e93ce35b2  libsanitizer/include/sanitizer/dfsan_interface.h
  ac959f76745580707a6571ddb3b4892b  libsanitizer/include/sanitizer/hwasan_interface.h
  4f395991a27a989d213dfa0c300a74c2  libsanitizer/include/sanitizer/linux_syscall_hooks.h
  12eef8384005b7381e07c3fadcabbe1d  libsanitizer/include/sanitizer/lsan_interface.h
  8132b09a1d1fc1d4c9e18245d41a1da3  libsanitizer/include/sanitizer/memprof_interface.h
! 3a84e0f703152591b105e71397ff5b61  libsanitizer/include/sanitizer/msan_interface.h
  8cfb31c202da51942d071d62333feafa  libsanitizer/include/sanitizer/netbsd_syscall_hooks.h
  0cd62c0e877b3674d128dc7d69440b19  libsanitizer/include/sanitizer/scudo_interface.h
  2da2d961ae6336db717588ce48d4f785  libsanitizer/include/sanitizer/tsan_interface.h
--- 112234,112247 ----
  c2d591f0e8a0a7d8a274ee310042f00c  libsanitizer/hwasan/libtool-version
  62164e6387eaa4f03566444e00018275  libsanitizer/include/sanitizer/allocator_interface.h
  cb6ab278769580386fbea1eebef0c212  libsanitizer/include/sanitizer/asan_interface.h
! db54f0fa5be7163d2052aeab0d14c777  libsanitizer/include/sanitizer/common_interface_defs.h
  2473b60a7a21e100e8373bfe0d6b6aef  libsanitizer/include/sanitizer/coverage_interface.h
! e6eed686df8d12d0a75b4172eb7e1770  libsanitizer/include/sanitizer/dfsan_interface.h
  ac959f76745580707a6571ddb3b4892b  libsanitizer/include/sanitizer/hwasan_interface.h
  4f395991a27a989d213dfa0c300a74c2  libsanitizer/include/sanitizer/linux_syscall_hooks.h
  12eef8384005b7381e07c3fadcabbe1d  libsanitizer/include/sanitizer/lsan_interface.h
  8132b09a1d1fc1d4c9e18245d41a1da3  libsanitizer/include/sanitizer/memprof_interface.h
! e2234e53b5e24a13f171fcb3896ca2a1  libsanitizer/include/sanitizer/msan_interface.h
  8cfb31c202da51942d071d62333feafa  libsanitizer/include/sanitizer/netbsd_syscall_hooks.h
  0cd62c0e877b3674d128dc7d69440b19  libsanitizer/include/sanitizer/scudo_interface.h
  2da2d961ae6336db717588ce48d4f785  libsanitizer/include/sanitizer/tsan_interface.h
*************** e0f26bb761d75b6aac187f2c8d755c0b  libsan
*** 104153,104250 ****
  3de6060b4f9ff628820f60672dee5958  libsanitizer/include/system/linux/types.h
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
  40db3b02f9746026f830c315351258a5  libsanitizer/interception/Makefile.am
! cb37180177f08c96d13d128ad904e7f8  libsanitizer/interception/Makefile.in
! 95767bf2aa5a40d9860be7ebb844bfac  libsanitizer/interception/interception.h
  795142e90608656433667c3105773995  libsanitizer/interception/interception_linux.cpp
  3156a529b5f86c321caebcb94682a513  libsanitizer/interception/interception_linux.h
! eb28a680879815dcce016978cbf38c79  libsanitizer/interception/interception_mac.cpp
! fece49ff778064e81bdfc6ad6b84b2b4  libsanitizer/interception/interception_mac.h
! ee840b8af091f87e1b1712cf360ddb50  libsanitizer/interception/interception_type_test.cpp
! 56ace876b8189738cc8ee3929c427dbc  libsanitizer/interception/interception_win.cpp
  d2397720fce56dc1634db6efb7d0eb22  libsanitizer/interception/interception_win.h
  cfd38bf924773ba7ef25458c574394bd  libsanitizer/libbacktrace/Makefile.am
! 1a2b5796179e934de9ec34d701ccc94c  libsanitizer/libbacktrace/Makefile.in
! a998136ffc66ed3a32f65097fb86ec05  libsanitizer/libbacktrace/backtrace-rename.h
  ea35b83ff2eb2bff286f2781693b0cc7  libsanitizer/libbacktrace/backtrace-supported.h.in
  35b2978dd28dbb4048032ad8db998f5c  libsanitizer/libbacktrace/bridge.cc
  afbb83670aebea5034bc386604a01397  libsanitizer/libsanitizer.spec.in
  6b33d1a041ee8709633d99deee5a977e  libsanitizer/lsan/Makefile.am
! 7ed481f2f0f7dea4415d5c4d19f1fb93  libsanitizer/lsan/Makefile.in
  f2f51c768041ab63c956646fa5f7af5b  libsanitizer/lsan/libtool-version
! ded76775f06b7bd0172a9257db34901a  libsanitizer/lsan/lsan.cpp
! 57ec7ec9a0cc945ab4171610d016f526  libsanitizer/lsan/lsan.h
! 54e4a9890bc2ce19badb5c9becb968ac  libsanitizer/lsan/lsan_allocator.cpp
! 5ea4265cf36f219971fe0347abf5a432  libsanitizer/lsan/lsan_allocator.h
! dd5c01fdb061281b111b687567acb80b  libsanitizer/lsan/lsan_common.cpp
! e6715544f967755a28853f78603fbdac  libsanitizer/lsan/lsan_common.h
! 9e74acecca898b3bba0998a082bd9675  libsanitizer/lsan/lsan_common_fuchsia.cpp
! 9b73d8a46a2371dd701e44646d18b37f  libsanitizer/lsan/lsan_common_linux.cpp
! 6bc5cc3c336c7f587d962682a87dd92a  libsanitizer/lsan/lsan_common_mac.cpp
  6af587085d16319361de6f118714b293  libsanitizer/lsan/lsan_flags.inc
! e6a6122aacae53ce58e1e1580dafd6ff  libsanitizer/lsan/lsan_fuchsia.cpp
  0a42ef558db22ea416707423b4ee5313  libsanitizer/lsan/lsan_fuchsia.h
! 6c4f5c489721c8bee001efc44852fbc8  libsanitizer/lsan/lsan_interceptors.cpp
  112de5191cba37114a27b3c851b03637  libsanitizer/lsan/lsan_linux.cpp
! b02d5934dd8074a40824a4f503348bdc  libsanitizer/lsan/lsan_mac.cpp
! dfff917b961891644801b0380ed93384  libsanitizer/lsan/lsan_malloc_mac.cpp
! 410ac851384225606e1d07d4631c2af0  libsanitizer/lsan/lsan_posix.cpp
  2d218702383904dd6ba0cbb97b0bfd82  libsanitizer/lsan/lsan_posix.h
  7d7a28d8f42ca368b3ffa1b674377b25  libsanitizer/lsan/lsan_preinit.cpp
! b870c2253a19a4f5283ee8366e869413  libsanitizer/lsan/lsan_thread.cpp
! 2552ec2134fe8c89a703e18b6216eaa2  libsanitizer/lsan/lsan_thread.h
! 2f9987fde4c23efc1b95546e481fff85  libsanitizer/merge.sh
! 876b8564ceb2db414236979ec46b9596  libsanitizer/sanitizer_common/Makefile.am
! 9d2b1657b0b39b541196f0ea9a00fe1b  libsanitizer/sanitizer_common/Makefile.in
  d68aa097ee532430d26f11ec81234ed5  libsanitizer/sanitizer_common/sancov_flags.cpp
  1cee185b14a59f3bfc596ac9bf851f89  libsanitizer/sanitizer_common/sancov_flags.h
  72bcafc00c57c1ae00e19cb2b2a48f9c  libsanitizer/sanitizer_common/sancov_flags.inc
! 1219e8927251e414f191a2dec4b292ef  libsanitizer/sanitizer_common/sanitizer_addrhashmap.h
! ca475798790624509c2b59d894f92621  libsanitizer/sanitizer_common/sanitizer_allocator.cpp
! be87fa113fc4b98aaa55d8234371048d  libsanitizer/sanitizer_common/sanitizer_allocator.h
  58afe7ee0a8301bc2ee5e0495a5c3720  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp
  4ee074df007bb212ba0e23ec75009eca  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
! 074de014cca445d56e6643eac4f12606  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
  96cb3d54c892bac183e5eea23d61a499  libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h
  742b8a455904e57e1dc253cd94af8343  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
! 239b2e57109dcb876b1522fa7d561e05  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
  077de40d6eda25e0f6b7713f2e9763f4  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
! 31a38a7dd7a1b2e8823f44bd81b9519e  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! 83c8f5a7b796f0f792d10bea4ac3d867  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
! 1f6d1b3f6f13be09e010540c91a420ff  libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp
  5fca989318db3c792dfeea2a7a028c24  libsanitizer/sanitizer_common/sanitizer_allocator_report.h
! 24f8d9025bea087bef3143d03f435f23  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
  68dd334ff39cff58dd4c6138bc1b725f  libsanitizer/sanitizer_common/sanitizer_allocator_size_class_map.h
  a21ea81dbfc52981e1c446285eaf2981  libsanitizer/sanitizer_common/sanitizer_allocator_stats.h
  281b37403fe2b407bcba79b06e897077  libsanitizer/sanitizer_common/sanitizer_asm.h
  998bded7a554ef1499c0f9da7137fc8a  libsanitizer/sanitizer_common/sanitizer_atomic.h
! ea2166d25ad4e67e595972eb414744a6  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
  4628d0f9ff0c1cf2623aaa1a643234cb  libsanitizer/sanitizer_common/sanitizer_atomic_clang_mips.h
  3686782bec0fb0a981c075ff25565e74  libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h
  53ca180c9d422d41817722cfdb7f6264  libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h
  a086d2b579c91b2576f9c35c798b8b04  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  f652b6a1b7460128cccd6c016c4828c6  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  2c60255aaee6514e73b7c326d2edbc51  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
! 968bcfcbeb933088bf4aae5112f0adbe  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.cpp
! f28cca27d520ead3efa11e05b7f07f3e  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.h
! 6dc8077deef78639222f0484ed271d1d  libsanitizer/sanitizer_common/sanitizer_common.cpp
! def41444ae429c8c5564f014a7eba3ca  libsanitizer/sanitizer_common/sanitizer_common.h
! 586d4ad4c1db17eaf4e6c6f808aed302  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
  873ecc8932cb8410c4e2b06ea4fd99ff  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
! 719df652c7fdab229eb324b721bde18c  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  c664d5fb1514c978d28a6a62b2040b53  libsanitizer/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc
  fda3dee294d9edce69f269af077bbd80  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
  b4b4ed1f1a36cce44031fd0b4a1a141f  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S
  4c7f0914b7dceaf1fe7b50d0ebcf30e4  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
  558231bbaa4fc2b256a4cf0851a6bd0b  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S
  86445cfc93ff99267195b206bbfc5540  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
  df6c386b90d87972e769849f88bef68e  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
! 71dfbac2abdf5add380080b29aaf84c2  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
! baa8246febba912659397e4e0b80a051  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp
! 3920b5e07b66c71bd65884a64631d698  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp
  1bcdb88c4731758cbfd6a8333dee0cc4  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
! bea7ca535b878bbd243b1e23ddf91f86  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp
! fa4ab1b80686df69edafddefaf9111f2  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
! f4486fff123931849e64ecb538efab1e  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
  f64c402c63e4fdccc3b91f46fa008563  libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp
  b23b66463d261a32c3e71eb67bdce1ea  libsanitizer/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp
  3f3a487b0f415ffaf2022c06c7e71af4  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp
--- 112255,112353 ----
  3de6060b4f9ff628820f60672dee5958  libsanitizer/include/system/linux/types.h
  177782c011eb97e4adc68bd2c39b6f84  libsanitizer/include/system/sys/ptrace.h
  40db3b02f9746026f830c315351258a5  libsanitizer/interception/Makefile.am
! 91bf91c617265517710c9dddcc31ad8d  libsanitizer/interception/Makefile.in
! 7f1249aa2381212035b836582114534a  libsanitizer/interception/interception.h
  795142e90608656433667c3105773995  libsanitizer/interception/interception_linux.cpp
  3156a529b5f86c321caebcb94682a513  libsanitizer/interception/interception_linux.h
! 0e693fb7fe561dbbff408f6493c081d7  libsanitizer/interception/interception_mac.cpp
! 0123641b0fbd5589d3819e5a27205e34  libsanitizer/interception/interception_mac.h
! 053bd5af68e1f654b0e68986ff6ced24  libsanitizer/interception/interception_type_test.cpp
! 0dc05c98894330dca9558d3538e32790  libsanitizer/interception/interception_win.cpp
  d2397720fce56dc1634db6efb7d0eb22  libsanitizer/interception/interception_win.h
  cfd38bf924773ba7ef25458c574394bd  libsanitizer/libbacktrace/Makefile.am
! fc2df81acfe33b4342659c64136a5f78  libsanitizer/libbacktrace/Makefile.in
! 3ac69d9fb43e338ecc043296461ef01e  libsanitizer/libbacktrace/backtrace-rename.h
  ea35b83ff2eb2bff286f2781693b0cc7  libsanitizer/libbacktrace/backtrace-supported.h.in
  35b2978dd28dbb4048032ad8db998f5c  libsanitizer/libbacktrace/bridge.cc
  afbb83670aebea5034bc386604a01397  libsanitizer/libsanitizer.spec.in
  6b33d1a041ee8709633d99deee5a977e  libsanitizer/lsan/Makefile.am
! c7c0f9cffe344efc277f9f39df515b0e  libsanitizer/lsan/Makefile.in
  f2f51c768041ab63c956646fa5f7af5b  libsanitizer/lsan/libtool-version
! 5ee07c01098e7b4a8931ff8e1a3a7dcf  libsanitizer/lsan/lsan.cpp
! 5919aaf4c4300d5eabf9449b33a2a9a4  libsanitizer/lsan/lsan.h
! ed712d25ac8bf6488ad71df80572ca10  libsanitizer/lsan/lsan_allocator.cpp
! 4f92ebec3fdbaafb19fd30f3585a20e9  libsanitizer/lsan/lsan_allocator.h
! 98796c397398fd5c70bbc00bcf60dc66  libsanitizer/lsan/lsan_common.cpp
! 08947fd9ebe477f2bf76b57ed8a6e3e6  libsanitizer/lsan/lsan_common.h
! c8b3335c7ccaf82f3bedc4132da1a07b  libsanitizer/lsan/lsan_common_fuchsia.cpp
! ff4505a3cb4b0026259542955e0f6b08  libsanitizer/lsan/lsan_common_linux.cpp
! 342174238a29f96f993a6ade502a88dc  libsanitizer/lsan/lsan_common_mac.cpp
  6af587085d16319361de6f118714b293  libsanitizer/lsan/lsan_flags.inc
! 9e33f532b4d595c933aa3a908c4b8c53  libsanitizer/lsan/lsan_fuchsia.cpp
  0a42ef558db22ea416707423b4ee5313  libsanitizer/lsan/lsan_fuchsia.h
! 431f2d5596c29ff4ed451ef94c2d1a5b  libsanitizer/lsan/lsan_interceptors.cpp
  112de5191cba37114a27b3c851b03637  libsanitizer/lsan/lsan_linux.cpp
! fc901e2a9005034a72d20474ade882c6  libsanitizer/lsan/lsan_mac.cpp
! 94e1495e5dfa6d86df31bfed27d4bb1a  libsanitizer/lsan/lsan_malloc_mac.cpp
! eac6834f3e0815427573e15990b8e83e  libsanitizer/lsan/lsan_posix.cpp
  2d218702383904dd6ba0cbb97b0bfd82  libsanitizer/lsan/lsan_posix.h
  7d7a28d8f42ca368b3ffa1b674377b25  libsanitizer/lsan/lsan_preinit.cpp
! 8e82f5ea8334224eaf9967c2891b59bd  libsanitizer/lsan/lsan_thread.cpp
! 7f6bc585ad900c216d003a22359efb0c  libsanitizer/lsan/lsan_thread.h
! 30e8a1a43b912457b629922cb03ef1cf  libsanitizer/merge.sh
! 4fd705dd5d99b0bf6bb0e4a45eaf8d19  libsanitizer/sanitizer_common/Makefile.am
! 70ded0717bbd07fdc3b335ac7f74b53e  libsanitizer/sanitizer_common/Makefile.in
  d68aa097ee532430d26f11ec81234ed5  libsanitizer/sanitizer_common/sancov_flags.cpp
  1cee185b14a59f3bfc596ac9bf851f89  libsanitizer/sanitizer_common/sancov_flags.h
  72bcafc00c57c1ae00e19cb2b2a48f9c  libsanitizer/sanitizer_common/sancov_flags.inc
! affc5cdd93ea24c9d38ffeae121b992b  libsanitizer/sanitizer_common/sanitizer_addrhashmap.h
! 17d513e1034dc40927ca8afb13615e8e  libsanitizer/sanitizer_common/sanitizer_allocator.cpp
! 3c696135f4d7222f1f01a9289b5697c9  libsanitizer/sanitizer_common/sanitizer_allocator.h
  58afe7ee0a8301bc2ee5e0495a5c3720  libsanitizer/sanitizer_common/sanitizer_allocator_checks.cpp
  4ee074df007bb212ba0e23ec75009eca  libsanitizer/sanitizer_common/sanitizer_allocator_checks.h
! 24c4536f56531c4cfdf2e1e7c8477591  libsanitizer/sanitizer_common/sanitizer_allocator_combined.h
  96cb3d54c892bac183e5eea23d61a499  libsanitizer/sanitizer_common/sanitizer_allocator_dlsym.h
  742b8a455904e57e1dc253cd94af8343  libsanitizer/sanitizer_common/sanitizer_allocator_interface.h
! 268551b6f0cea44ed422ba32ad5c220f  libsanitizer/sanitizer_common/sanitizer_allocator_internal.h
  077de40d6eda25e0f6b7713f2e9763f4  libsanitizer/sanitizer_common/sanitizer_allocator_local_cache.h
! 33d6d6f10d189f8150fd62fa46e88295  libsanitizer/sanitizer_common/sanitizer_allocator_primary32.h
! c1dff11fcd082b8190717afe774d3354  libsanitizer/sanitizer_common/sanitizer_allocator_primary64.h
! ff41eeb2a6f776ce3d9f5a913f70fa5c  libsanitizer/sanitizer_common/sanitizer_allocator_report.cpp
  5fca989318db3c792dfeea2a7a028c24  libsanitizer/sanitizer_common/sanitizer_allocator_report.h
! 763760c64796c59d7405b5785c7bd1e9  libsanitizer/sanitizer_common/sanitizer_allocator_secondary.h
  68dd334ff39cff58dd4c6138bc1b725f  libsanitizer/sanitizer_common/sanitizer_allocator_size_class_map.h
  a21ea81dbfc52981e1c446285eaf2981  libsanitizer/sanitizer_common/sanitizer_allocator_stats.h
  281b37403fe2b407bcba79b06e897077  libsanitizer/sanitizer_common/sanitizer_asm.h
  998bded7a554ef1499c0f9da7137fc8a  libsanitizer/sanitizer_common/sanitizer_atomic.h
! 94f3ed5236b7fdac7cb333faff3b5431  libsanitizer/sanitizer_common/sanitizer_atomic_clang.h
  4628d0f9ff0c1cf2623aaa1a643234cb  libsanitizer/sanitizer_common/sanitizer_atomic_clang_mips.h
  3686782bec0fb0a981c075ff25565e74  libsanitizer/sanitizer_common/sanitizer_atomic_clang_other.h
  53ca180c9d422d41817722cfdb7f6264  libsanitizer/sanitizer_common/sanitizer_atomic_clang_x86.h
  a086d2b579c91b2576f9c35c798b8b04  libsanitizer/sanitizer_common/sanitizer_atomic_msvc.h
  f652b6a1b7460128cccd6c016c4828c6  libsanitizer/sanitizer_common/sanitizer_bitvector.h
  2c60255aaee6514e73b7c326d2edbc51  libsanitizer/sanitizer_common/sanitizer_bvgraph.h
! a32b38d2eae806bfe95f3e089a711f7a  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.cpp
! 6c98887c832c51853baba6c78b422e70  libsanitizer/sanitizer_common/sanitizer_chained_origin_depot.h
! 1c92f40d094c2472e708a3a3ee057add  libsanitizer/sanitizer_common/sanitizer_common.cpp
! 6e3ba9b2a5302ee4e0b833e4cc174db2  libsanitizer/sanitizer_common/sanitizer_common.h
! 820bd5f9d0b610aeee0ddc864394a83f  libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc
  873ecc8932cb8410c4e2b06ea4fd99ff  libsanitizer/sanitizer_common/sanitizer_common_interceptors_format.inc
! aa961fb0d47d9369601c5aa4bd24ea02  libsanitizer/sanitizer_common/sanitizer_common_interceptors_ioctl.inc
  c664d5fb1514c978d28a6a62b2040b53  libsanitizer/sanitizer_common/sanitizer_common_interceptors_netbsd_compat.inc
  fda3dee294d9edce69f269af077bbd80  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_aarch64.inc.S
  b4b4ed1f1a36cce44031fd0b4a1a141f  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_arm.inc.S
  4c7f0914b7dceaf1fe7b50d0ebcf30e4  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_i386.inc.S
+ 7923b63729183aa3676f19bbb5f919df  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_loongarch64.inc.S
  558231bbaa4fc2b256a4cf0851a6bd0b  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_riscv64.inc.S
  86445cfc93ff99267195b206bbfc5540  libsanitizer/sanitizer_common/sanitizer_common_interceptors_vfork_x86_64.inc.S
  df6c386b90d87972e769849f88bef68e  libsanitizer/sanitizer_common/sanitizer_common_interface.inc
! 8317dc9bb7cfc58636d12327277bd69c  libsanitizer/sanitizer_common/sanitizer_common_interface_posix.inc
! af6a3a62826a2b1332c274c2c12735bb  libsanitizer/sanitizer_common/sanitizer_common_libcdep.cpp
! 5da4d94a361ae04b45948a2d230f9c68  libsanitizer/sanitizer_common/sanitizer_common_nolibc.cpp
  1bcdb88c4731758cbfd6a8333dee0cc4  libsanitizer/sanitizer_common/sanitizer_common_syscalls.inc
! eddc7e8805ed848ea5725c8e56f8061d  libsanitizer/sanitizer_common/sanitizer_coverage_fuchsia.cpp
! c1a02c896ece2bae19c87b561049f73b  libsanitizer/sanitizer_common/sanitizer_coverage_interface.inc
! bbdf039ba2e342debd6c3e46637faf89  libsanitizer/sanitizer_common/sanitizer_coverage_libcdep_new.cpp
  f64c402c63e4fdccc3b91f46fa008563  libsanitizer/sanitizer_common/sanitizer_coverage_win_dll_thunk.cpp
  b23b66463d261a32c3e71eb67bdce1ea  libsanitizer/sanitizer_common/sanitizer_coverage_win_dynamic_runtime_thunk.cpp
  3f3a487b0f415ffaf2022c06c7e71af4  libsanitizer/sanitizer_common/sanitizer_coverage_win_sections.cpp
*************** c24845d0d3c29b56170aa71091426359  libsan
*** 104254,104379 ****
  60b82132d1e67e37257799273c024824  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp
  21a5fbc7da336c033aaaff3bf8de5f61  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp
  714375c2f0080364d3f9636fb365cb50  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
  dd71222889a46d09229b51c9a128a5aa  libsanitizer/sanitizer_common/sanitizer_errno.cpp
! 83e5b23f25dc561b296ff5d57c9f2966  libsanitizer/sanitizer_common/sanitizer_errno.h
  569eef7f7a96f68658eb85aec7bd4bef  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
! b031dd8a887c762d1b4c0598e956673f  libsanitizer/sanitizer_common/sanitizer_file.cpp
! f78633cce8bb070b9327be0907434ac0  libsanitizer/sanitizer_common/sanitizer_file.h
  603de04d166f3a49fa913a548ec80c21  libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp
  63e4e5a37078fa05cf9d854166d7f328  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
  132bd807dd8a0e8e2e84d52add1570f5  libsanitizer/sanitizer_common/sanitizer_flags.cpp
  50b07ed067f181e6df763aa0940acec1  libsanitizer/sanitizer_common/sanitizer_flags.h
! e2f3987c800e4668b87b73395fa8de05  libsanitizer/sanitizer_common/sanitizer_flags.inc
  45792c1d5e035392c0f4d002ad22921d  libsanitizer/sanitizer_common/sanitizer_flat_map.h
  3f779f66885b3027cad2a2af88a8a2f5  libsanitizer/sanitizer_common/sanitizer_freebsd.h
! 43cb8733c2f00dc736269f01a5b88030  libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
  286b7995698dbe20223e1a3c05933d6d  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
  1d8e62bbd8a595f6e44228e1dc7cbcd8  libsanitizer/sanitizer_common/sanitizer_getauxval.h
  f06be5c69a658d7ac5ebea616ebb001a  libsanitizer/sanitizer_common/sanitizer_glibc_version.h
  0106ca8c2ac52a690196a29c2fd63de6  libsanitizer/sanitizer_common/sanitizer_hash.h
  6d41f95489dbae2330fd89aeaee5eedc  libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
! bc4124593bb0bdb91e15f9ac514d5481  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! 76fe2e1eef9139c5085a061332fb6ffa  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
  5da7cbe05015b8a52342cd8a74fb0ad2  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  21de654ed7481dd33c2ed7ab1a29c2b7  libsanitizer/sanitizer_common/sanitizer_libc.cpp
  cce68947dc278b1a388eb87186550085  libsanitizer/sanitizer_common/sanitizer_libc.h
! a22a007306d53a02b901a2c5f8acb20a  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  43841a8fb2414dc7836e2d07d6197776  libsanitizer/sanitizer_common/sanitizer_libignore.h
! 9464683364ae4a40dfb7cda6ea24e3df  libsanitizer/sanitizer_common/sanitizer_linux.cpp
! ec1b77dd7525604c1f84f6e3b8c0e312  libsanitizer/sanitizer_common/sanitizer_linux.h
! 447d6ff0f633be9ddebd60dbb0df3576  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
! 4c8636023e3eed320e3692dda7e88e1d  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  15f5a30dda04b6f3bc49cb5206d92e7b  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
! 3b432e341bb0a24d3c087089f7f67ef7  libsanitizer/sanitizer_common/sanitizer_mac.cpp
! c7dd1a51daebb1f6729f7934ac723eef  libsanitizer/sanitizer_common/sanitizer_mac.h
! 9195d6bb30ce9845c5ecc617d3ccf7a2  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cpp
! 8d5539e23030557718b6406d22e7501b  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
  231790ca3e16e72faa2f393344107c51  libsanitizer/sanitizer_common/sanitizer_mutex.cpp
! ed2f8a37eb20d4fcceaa6d34098764d4  libsanitizer/sanitizer_common/sanitizer_mutex.h
  3ec767742997468be9817fb2a5fe4c1f  libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
- d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_openbsd.cpp
- 2f453e635e82524cb4091701e3e277cd  libsanitizer/sanitizer_common/sanitizer_persistent_allocator.h
  b9966b23ae76d3ec9290c4a5e8c3d94c  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! c038885b30546e90c83646d8f5a3c174  libsanitizer/sanitizer_common/sanitizer_platform.h
! edcf4c8eb66f6768bae3b5879ab6ae99  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
! 2485cad1bdc3396e0c2682f69efd62c9  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
! aa5e20b1c9b2a3c49eb257a0e00f05c6  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
! f0a17a663404f1bd05e9d84470e79dfd  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
! 11c0b5aadbb62e89480f919221bfeeb2  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
! 35d946cca7573e504ff717a32c559c34  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.h
! b8d1556c4c517ec48f6a6763ffe80e5c  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! e8e9c3031b88e29339cb0881f517b85b  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! e3cadbfae9442c1ecf66a526cd625ce7  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
! 849fc4ac5671b43efe4e3f11f87f00fb  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
! 58e59a903f88f4a9f72f94073f268db8  libsanitizer/sanitizer_common/sanitizer_posix.cpp
  bc6ef1dfee4fa2ff2d761568e9b19ed0  libsanitizer/sanitizer_common/sanitizer_posix.h
! 2a29ff39266dbc10385298e35c6d8f2f  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
! cbe5b35a053bfa34f03cd77b9b556840  libsanitizer/sanitizer_common/sanitizer_printf.cpp
! 0068f44f90a6e6bb080501d01505b9f5  libsanitizer/sanitizer_common/sanitizer_procmaps.h
  9f49c09176556fe4c5863604acaa373e  libsanitizer/sanitizer_common/sanitizer_procmaps_bsd.cpp
  4258109dfa024898ae2e8991e5268c59  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cpp
  359d6e04536b11f84ee64fcc65fceff5  libsanitizer/sanitizer_common/sanitizer_procmaps_fuchsia.cpp
  cac752f7b42df7a26fc91e0aadc8aa36  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cpp
! 14699b621ce7a302d8a945b4c4a25778  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
! 852097c2e7396030af8f19d04bf9d0a9  libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
  f35117287ec4a6a6d785ad92db83acd9  libsanitizer/sanitizer_common/sanitizer_ptrauth.h
! 27a2df90370f56197ada6ffec3ed78c2  libsanitizer/sanitizer_common/sanitizer_quarantine.h
  790117d4c85c98c499151ad830f99a49  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
! b83c750f7315e3e874aea656d760be62  libsanitizer/sanitizer_common/sanitizer_ring_buffer.h
  92eeb5433884af335db94ffb01770c2f  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
  d81628c1f3c14142bf5218228d6bdcc6  libsanitizer/sanitizer_common/sanitizer_solaris.cpp
! 1484463da0cb65279c641b7bd33511e4  libsanitizer/sanitizer_common/sanitizer_stackdepot.cpp
! ab69c994964518854d3c852549e7d968  libsanitizer/sanitizer_common/sanitizer_stackdepot.h
  2e9c77f595e59b5fd833e23184556a92  libsanitizer/sanitizer_common/sanitizer_stackdepotbase.h
! fc9024bc0daedd3ddc2281cbb77c06eb  libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
! 4fa43f47ee802c3305e1665115e4f415  libsanitizer/sanitizer_common/sanitizer_stacktrace.h
! 00e5e0a40eb7c110e9c236cfe95b46ca  libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cpp
! 6a033576503618378bed56d0bf3c17e7  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cpp
  48a3ae33d0047b239ce6108de3b21f01  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  3f54427e1b0f2a4b31b739360733f3e9  libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cpp
  76324ac84f5eb512c3e2351dbfd9ce24  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
  c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
  60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
  c1c11c9d3bd683239d37937574d5e21d  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
! 2ef561190d53b373c3fbcbc354775b87  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
  c037ff7568ea4e12399926fdbde8a8c1  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
  a4af335f21aab3f4c9445d6b7c4713ba  libsanitizer/sanitizer_common/sanitizer_suppressions.cpp
  6dc05d23b94fb4783618dcd3cd4b1c9f  libsanitizer/sanitizer_common/sanitizer_suppressions.h
! cec284352a6e1650f96d4e6ed4c72ec3  libsanitizer/sanitizer_common/sanitizer_symbolizer.cpp
! ed4528bc579161401556f6773d820d43  libsanitizer/sanitizer_common/sanitizer_symbolizer.h
  12fcc306e0ffc32a224b785eaec125a8  libsanitizer/sanitizer_common/sanitizer_symbolizer_fuchsia.h
! 6b3c2ba7295a71f74855a27974e6b06d  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
  bb131db68f565eae8a9dc5516f29326e  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
  57fad0f520b4b3e56bb19ce40a50676a  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! fe9ad16b3e285a44de8f67d0a62fd893  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
! 31a79296e19ed6dfe94376a3a726bf14  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cpp
! e3003592669953bc272f2de5f3e2dbbf  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
! f1a8419f9b0f3c2dfa95e3b516bc3144  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.cpp
! a2b01b70e7bc645bd7d878ef7867c572  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
! e8a4b56872029fe09b37459d6e628bdf  libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cpp
! de478f939a3869ab532059067601e675  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cpp
! 034628d52b5ccccaeb8ab2d857599538  libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc
  9546e0a896837e1fc30d0f1421f2b220  libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
  0711f1c23e48efd357f77c0be4ab551c  libsanitizer/sanitizer_common/sanitizer_syscall_linux_arm.inc
  6c6126aaba0563b4707f41f195586beb  libsanitizer/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
  a14b05d5a122d962a0d8d477334c65e1  libsanitizer/sanitizer_common/sanitizer_syscall_linux_riscv64.inc
  e5a40190912f9655e972ed0025bf35f3  libsanitizer/sanitizer_common/sanitizer_syscall_linux_x86_64.inc
! eb5c24ff6468763e083b23c4491451f2  libsanitizer/sanitizer_common/sanitizer_syscalls_netbsd.inc
  dd3c422b6984d35ca7d0c2b990a064f7  libsanitizer/sanitizer_common/sanitizer_termination.cpp
! bc7f76b99c1609aaec6602bee904069b  libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
! c9391f87b7ff1b850063a5b714828a1d  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
! 399b5db1f547968cc9fe8296bfda0fcb  libsanitizer/sanitizer_common/sanitizer_thread_safety.h
  8af60b5c0568e3d3e9e590b73ec10db3  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cpp
  067a90198acd4ef92494bee073c0e1bc  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
  daf0a3ec50a14c09b41741865f11e807  libsanitizer/sanitizer_common/sanitizer_type_traits.cpp
! a951fc08e5b53c0d76a6a477883ad964  libsanitizer/sanitizer_common/sanitizer_type_traits.h
! e3cbe959db25a033713c3bba86c68b9e  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
! 4441344743596144549e3f13c767510d  libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
! 8d76e69157ad8d7f8c665105cb1b9358  libsanitizer/sanitizer_common/sanitizer_vector.h
! f95944d7399b5fc95eb910a6633d0458  libsanitizer/sanitizer_common/sanitizer_win.cpp
  ca31c361d0d8cc286a9c2a79da57a3ed  libsanitizer/sanitizer_common/sanitizer_win.h
  3a867f4ebec3e726e51526c82c85c978  libsanitizer/sanitizer_common/sanitizer_win_defs.h
  192408cb784e2738287506aefa3d586d  libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.cpp
--- 112357,112489 ----
  60b82132d1e67e37257799273c024824  libsanitizer/sanitizer_common/sanitizer_deadlock_detector1.cpp
  21a5fbc7da336c033aaaff3bf8de5f61  libsanitizer/sanitizer_common/sanitizer_deadlock_detector2.cpp
  714375c2f0080364d3f9636fb365cb50  libsanitizer/sanitizer_common/sanitizer_deadlock_detector_interface.h
+ 237e8b48d89526cd936a719703f16f97  libsanitizer/sanitizer_common/sanitizer_dense_map.h
+ 2416325b5cdf8be42ab7069b88ad4a2d  libsanitizer/sanitizer_common/sanitizer_dense_map_info.h
  dd71222889a46d09229b51c9a128a5aa  libsanitizer/sanitizer_common/sanitizer_errno.cpp
! b751f665e23f9c48eeffdb8ab7973e35  libsanitizer/sanitizer_common/sanitizer_errno.h
  569eef7f7a96f68658eb85aec7bd4bef  libsanitizer/sanitizer_common/sanitizer_errno_codes.h
! ad56586f1276455526fe2f5e5cd53cae  libsanitizer/sanitizer_common/sanitizer_file.cpp
! 03c06a7c283fbae72f3b2228e74ed6a2  libsanitizer/sanitizer_common/sanitizer_file.h
  603de04d166f3a49fa913a548ec80c21  libsanitizer/sanitizer_common/sanitizer_flag_parser.cpp
  63e4e5a37078fa05cf9d854166d7f328  libsanitizer/sanitizer_common/sanitizer_flag_parser.h
  132bd807dd8a0e8e2e84d52add1570f5  libsanitizer/sanitizer_common/sanitizer_flags.cpp
  50b07ed067f181e6df763aa0940acec1  libsanitizer/sanitizer_common/sanitizer_flags.h
! fa70359652f17eec2c20d07a199100d2  libsanitizer/sanitizer_common/sanitizer_flags.inc
  45792c1d5e035392c0f4d002ad22921d  libsanitizer/sanitizer_common/sanitizer_flat_map.h
  3f779f66885b3027cad2a2af88a8a2f5  libsanitizer/sanitizer_common/sanitizer_freebsd.h
! a84d95ccc7e53dff8b43eecfba6a60bb  libsanitizer/sanitizer_common/sanitizer_fuchsia.cpp
  286b7995698dbe20223e1a3c05933d6d  libsanitizer/sanitizer_common/sanitizer_fuchsia.h
  1d8e62bbd8a595f6e44228e1dc7cbcd8  libsanitizer/sanitizer_common/sanitizer_getauxval.h
  f06be5c69a658d7ac5ebea616ebb001a  libsanitizer/sanitizer_common/sanitizer_glibc_version.h
  0106ca8c2ac52a690196a29c2fd63de6  libsanitizer/sanitizer_common/sanitizer_hash.h
  6d41f95489dbae2330fd89aeaee5eedc  libsanitizer/sanitizer_common/sanitizer_interceptors_ioctl_netbsd.inc
! 9e44cc6ac52777ef30d65ecdd64e0dd3  libsanitizer/sanitizer_common/sanitizer_interface_internal.h
! b566a3c27633722e1ef8ad016381c182  libsanitizer/sanitizer_common/sanitizer_internal_defs.h
! 45de936b7d4065758483844c920f2ba4  libsanitizer/sanitizer_common/sanitizer_leb128.h
  5da7cbe05015b8a52342cd8a74fb0ad2  libsanitizer/sanitizer_common/sanitizer_lfstack.h
  21de654ed7481dd33c2ed7ab1a29c2b7  libsanitizer/sanitizer_common/sanitizer_libc.cpp
  cce68947dc278b1a388eb87186550085  libsanitizer/sanitizer_common/sanitizer_libc.h
! 537dd9a212b82bf6f062b47c5df57c86  libsanitizer/sanitizer_common/sanitizer_libignore.cpp
  43841a8fb2414dc7836e2d07d6197776  libsanitizer/sanitizer_common/sanitizer_libignore.h
! d0043cb6d680e8e96f0cc86589d7dcb8  libsanitizer/sanitizer_common/sanitizer_linux.cpp
! 557b29bb8b6973765643e43829014541  libsanitizer/sanitizer_common/sanitizer_linux.h
! ce32d0c779cbd3b52b2f4d4b4e54b51b  libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp
! 9ce22ccd9943bda9795a2efeccec7f16  libsanitizer/sanitizer_common/sanitizer_linux_s390.cpp
  51d4c37472c1c2c6010e5d1eb5bf340f  libsanitizer/sanitizer_common/sanitizer_list.h
  15f5a30dda04b6f3bc49cb5206d92e7b  libsanitizer/sanitizer_common/sanitizer_local_address_space_view.h
! b819992c5da123bc4d79e61fa5154215  libsanitizer/sanitizer_common/sanitizer_lzw.h
! f69d421f753bf51dfba92519a80c2281  libsanitizer/sanitizer_common/sanitizer_mac.cpp
! 4a2287c1e441c3abcc5c9ee7aee2754d  libsanitizer/sanitizer_common/sanitizer_mac.h
! 3c8a29762c7ecf7082ea5a28335716f6  libsanitizer/sanitizer_common/sanitizer_mac_libcdep.cpp
! 5f5dd34c995b03d8def198676ee4f8f0  libsanitizer/sanitizer_common/sanitizer_malloc_mac.inc
  231790ca3e16e72faa2f393344107c51  libsanitizer/sanitizer_common/sanitizer_mutex.cpp
! 7dc346968361491c8e35254fcd12ca5c  libsanitizer/sanitizer_common/sanitizer_mutex.h
  3ec767742997468be9817fb2a5fe4c1f  libsanitizer/sanitizer_common/sanitizer_netbsd.cpp
  b9966b23ae76d3ec9290c4a5e8c3d94c  libsanitizer/sanitizer_common/sanitizer_placement_new.h
! 69bfd5cbcf0336c6b2532ba8c750f2bd  libsanitizer/sanitizer_common/sanitizer_platform.h
! f94261e1f788f0a9cdaf5bdc238e7b33  libsanitizer/sanitizer_common/sanitizer_platform_interceptors.h
! 6733998fcb226a37dad08c6cf3eded45  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.cpp
! 3abfe3c33f34d0280a2259105502c184  libsanitizer/sanitizer_common/sanitizer_platform_limits_freebsd.h
! b582d1c8ad1dfab45211cbb7c25cf5f6  libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cpp
! 23c53fdfc24f69956737a502c801d70d  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.cpp
! 363c19d7d7061beabfcc5393b85ef479  libsanitizer/sanitizer_common/sanitizer_platform_limits_netbsd.h
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.cpp
  d41d8cd98f00b204e9800998ecf8427e  libsanitizer/sanitizer_common/sanitizer_platform_limits_openbsd.h
! f59aa2137df87f1dd3e7564e8ca41b55  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cpp
! ce8a0aaa4129f14a6b70fe701a4aee99  libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
! 711b54008ada7faff939a95e325b185b  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.cpp
! ab1ad414331f77e459da9a32b756cbac  libsanitizer/sanitizer_common/sanitizer_platform_limits_solaris.h
! 1019f8f3de270256a0b3ed857645dec8  libsanitizer/sanitizer_common/sanitizer_posix.cpp
  bc6ef1dfee4fa2ff2d761568e9b19ed0  libsanitizer/sanitizer_common/sanitizer_posix.h
! 65842772410d925d1ad25680f6845d90  libsanitizer/sanitizer_common/sanitizer_posix_libcdep.cpp
! ebd332f4b6fe1032fc1265ec420f180f  libsanitizer/sanitizer_common/sanitizer_printf.cpp
! f3f1d3ebbb5c99ca4c2922783a8428a1  libsanitizer/sanitizer_common/sanitizer_procmaps.h
  9f49c09176556fe4c5863604acaa373e  libsanitizer/sanitizer_common/sanitizer_procmaps_bsd.cpp
  4258109dfa024898ae2e8991e5268c59  libsanitizer/sanitizer_common/sanitizer_procmaps_common.cpp
  359d6e04536b11f84ee64fcc65fceff5  libsanitizer/sanitizer_common/sanitizer_procmaps_fuchsia.cpp
  cac752f7b42df7a26fc91e0aadc8aa36  libsanitizer/sanitizer_common/sanitizer_procmaps_linux.cpp
! 1302027d6f438a333195cd76fca561c5  libsanitizer/sanitizer_common/sanitizer_procmaps_mac.cpp
! f873c2c0855223fd5d10002c1fde8b1e  libsanitizer/sanitizer_common/sanitizer_procmaps_solaris.cpp
  f35117287ec4a6a6d785ad92db83acd9  libsanitizer/sanitizer_common/sanitizer_ptrauth.h
! 2e9e7f59c748f67818b45ce5d5a969b4  libsanitizer/sanitizer_common/sanitizer_quarantine.h
  790117d4c85c98c499151ad830f99a49  libsanitizer/sanitizer_common/sanitizer_report_decorator.h
! 9c59673ac7686d5b6466472282b484c2  libsanitizer/sanitizer_common/sanitizer_ring_buffer.h
  92eeb5433884af335db94ffb01770c2f  libsanitizer/sanitizer_common/sanitizer_signal_interceptors.inc
  d81628c1f3c14142bf5218228d6bdcc6  libsanitizer/sanitizer_common/sanitizer_solaris.cpp
! 379f4e42b7a717d642000a85a853e264  libsanitizer/sanitizer_common/sanitizer_solaris.h
! 44cf531f3ea724c10e12db0e154da4d0  libsanitizer/sanitizer_common/sanitizer_stack_store.cpp
! 864eccc6e382e83b07083140ea11def8  libsanitizer/sanitizer_common/sanitizer_stack_store.h
! bf15e54f8c49d6dbf0b70f17a2bbab18  libsanitizer/sanitizer_common/sanitizer_stackdepot.cpp
! 7d9a7e41e6697230497277a7e15f2e70  libsanitizer/sanitizer_common/sanitizer_stackdepot.h
  2e9c77f595e59b5fd833e23184556a92  libsanitizer/sanitizer_common/sanitizer_stackdepotbase.h
! 7fab594cee994193cd21982e73ace63e  libsanitizer/sanitizer_common/sanitizer_stacktrace.cpp
! 5c66d0ec7cc35d1e223a096b2a462b21  libsanitizer/sanitizer_common/sanitizer_stacktrace.h
! e03880b98c21fda906a2dd64018acd29  libsanitizer/sanitizer_common/sanitizer_stacktrace_libcdep.cpp
! 1f45e6f9f3928ddb98146ab114a09d9c  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.cpp
  48a3ae33d0047b239ce6108de3b21f01  libsanitizer/sanitizer_common/sanitizer_stacktrace_printer.h
  3f54427e1b0f2a4b31b739360733f3e9  libsanitizer/sanitizer_common/sanitizer_stacktrace_sparc.cpp
  76324ac84f5eb512c3e2351dbfd9ce24  libsanitizer/sanitizer_common/sanitizer_stoptheworld.h
  c1faa837dd50d9ad2162751a200fa58b  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.cpp
  60c0888eff94b59773f87548c52f756a  libsanitizer/sanitizer_common/sanitizer_stoptheworld_fuchsia.h
  c1c11c9d3bd683239d37937574d5e21d  libsanitizer/sanitizer_common/sanitizer_stoptheworld_linux_libcdep.cpp
! d68bf77d0819cb8ab66129dbe013e4a1  libsanitizer/sanitizer_common/sanitizer_stoptheworld_mac.cpp
  c037ff7568ea4e12399926fdbde8a8c1  libsanitizer/sanitizer_common/sanitizer_stoptheworld_netbsd_libcdep.cpp
+ bdb416b455b14acf317962318eb84924  libsanitizer/sanitizer_common/sanitizer_stoptheworld_win.cpp
  a4af335f21aab3f4c9445d6b7c4713ba  libsanitizer/sanitizer_common/sanitizer_suppressions.cpp
  6dc05d23b94fb4783618dcd3cd4b1c9f  libsanitizer/sanitizer_common/sanitizer_suppressions.h
! bcbd3243edad543e0e1659d2c29008be  libsanitizer/sanitizer_common/sanitizer_symbolizer.cpp
! 31a95d92c37f137ec0b7c89bfb786d2d  libsanitizer/sanitizer_common/sanitizer_symbolizer.h
  12fcc306e0ffc32a224b785eaec125a8  libsanitizer/sanitizer_common/sanitizer_symbolizer_fuchsia.h
! c377dcab75ef9e27f6ba69c01168c723  libsanitizer/sanitizer_common/sanitizer_symbolizer_internal.h
  bb131db68f565eae8a9dc5516f29326e  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.cpp
  57fad0f520b4b3e56bb19ce40a50676a  libsanitizer/sanitizer_common/sanitizer_symbolizer_libbacktrace.h
! 4dd31db6379878df8683f93dd5db0e1c  libsanitizer/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
! 5c9513817469deda9988ef16457e7060  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.cpp
! cf53e533bc415a2a97e702de211878f1  libsanitizer/sanitizer_common/sanitizer_symbolizer_mac.h
! 361c94e532f46caa8e6f4a19b3ae5283  libsanitizer/sanitizer_common/sanitizer_symbolizer_markup.cpp
! f277617b5c2014cc47e53907447583d4  libsanitizer/sanitizer_common/sanitizer_symbolizer_posix_libcdep.cpp
! 48021d5990737692bf78dd48f2dfc34a  libsanitizer/sanitizer_common/sanitizer_symbolizer_report.cpp
! 3940b7253b67fa161aea555e68159565  libsanitizer/sanitizer_common/sanitizer_symbolizer_win.cpp
! 10bef8250d15b767f78688de7350a2a0  libsanitizer/sanitizer_common/sanitizer_syscall_generic.inc
  9546e0a896837e1fc30d0f1421f2b220  libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc
  0711f1c23e48efd357f77c0be4ab551c  libsanitizer/sanitizer_common/sanitizer_syscall_linux_arm.inc
  6c6126aaba0563b4707f41f195586beb  libsanitizer/sanitizer_common/sanitizer_syscall_linux_hexagon.inc
+ 5115a9640e482c8d0d87c9ab871c9654  libsanitizer/sanitizer_common/sanitizer_syscall_linux_loongarch64.inc
  a14b05d5a122d962a0d8d477334c65e1  libsanitizer/sanitizer_common/sanitizer_syscall_linux_riscv64.inc
  e5a40190912f9655e972ed0025bf35f3  libsanitizer/sanitizer_common/sanitizer_syscall_linux_x86_64.inc
! d8a9b7fa2b04f6a9489b693d2827c76a  libsanitizer/sanitizer_common/sanitizer_syscalls_netbsd.inc
  dd3c422b6984d35ca7d0c2b990a064f7  libsanitizer/sanitizer_common/sanitizer_termination.cpp
! dc739667f6672bb9178e9b59aac58af3  libsanitizer/sanitizer_common/sanitizer_thread_registry.cpp
! d00617e0240d20e556ffe9e9a03b177b  libsanitizer/sanitizer_common/sanitizer_thread_registry.h
! f337f2c9c679c772ddff2564c1e814e5  libsanitizer/sanitizer_common/sanitizer_thread_safety.h
  8af60b5c0568e3d3e9e590b73ec10db3  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.cpp
  067a90198acd4ef92494bee073c0e1bc  libsanitizer/sanitizer_common/sanitizer_tls_get_addr.h
  daf0a3ec50a14c09b41741865f11e807  libsanitizer/sanitizer_common/sanitizer_type_traits.cpp
! c7100b0c25734fc3c76d5416db5be325  libsanitizer/sanitizer_common/sanitizer_type_traits.h
! 3d9b2d310c6cd51902430a2eca4a3928  libsanitizer/sanitizer_common/sanitizer_unwind_linux_libcdep.cpp
! c81b4e41a8e4b42c37701357d1273b78  libsanitizer/sanitizer_common/sanitizer_unwind_win.cpp
! c6626ead5ce5eff397b6675bbf291cde  libsanitizer/sanitizer_common/sanitizer_vector.h
! b940992ba798c2ba2e2c2e09e5593eac  libsanitizer/sanitizer_common/sanitizer_win.cpp
  ca31c361d0d8cc286a9c2a79da57a3ed  libsanitizer/sanitizer_common/sanitizer_win.h
  3a867f4ebec3e726e51526c82c85c978  libsanitizer/sanitizer_common/sanitizer_win_defs.h
  192408cb784e2738287506aefa3d586d  libsanitizer/sanitizer_common/sanitizer_win_dll_thunk.cpp
*************** ca31c361d0d8cc286a9c2a79da57a3ed  libsan
*** 104381,104473 ****
  c8748a0184d2e5e1b50d9c106e5a45f1  libsanitizer/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp
  61159becd1bfb41004e8fef8a36ccc1c  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.cpp
  eb330b64a368e29af662c65273f49815  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.h
! b744403680f307828b8d68329076c5d6  libsanitizer/tsan/Makefile.am
! c955dbb554992c6d7012775198115606  libsanitizer/tsan/Makefile.in
  4993c3783465efe7eb63dd3ae6611678  libsanitizer/tsan/libtool-version
! 2bb0ad1c40d55f9e4809469d6322ffac  libsanitizer/tsan/tsan_clock.cpp
! 37c59cfebad78055d9025674025971f3  libsanitizer/tsan/tsan_clock.h
! 4017a9425508acf7ccbfe981df1a1695  libsanitizer/tsan/tsan_debugging.cpp
! 4c19c4735ddd497ca7a0a9bcebbdeae5  libsanitizer/tsan/tsan_defs.h
! a8aea7639bdd4e9c42e6d224c247bd05  libsanitizer/tsan/tsan_dense_alloc.h
! 9a994c7cd167ddbaea5df65cb0e6e051  libsanitizer/tsan/tsan_dispatch_defs.h
  137a34ad34b3cad10e3d9c1f0f4d3c8f  libsanitizer/tsan/tsan_external.cpp
! 8e81c675ad9ffc8f59de9fa06dbc1c8a  libsanitizer/tsan/tsan_fd.cpp
! 71d9cec080517690b0361e105e633dd3  libsanitizer/tsan/tsan_fd.h
! 1995b12b15a33e2ba95075154d82c206  libsanitizer/tsan/tsan_flags.cpp
  9fcbcc17ace4216572d132c7f19980dd  libsanitizer/tsan/tsan_flags.h
! 0268d6b02d2c8dbb93b57958d601c3cf  libsanitizer/tsan/tsan_flags.inc
  60bfaa19bc1c038d806e759abd03e869  libsanitizer/tsan/tsan_ignoreset.cpp
  d419772368c76a807ff66bafd0683028  libsanitizer/tsan/tsan_ignoreset.h
  45bd7ec3e79167e3101e35f5ba81d51b  libsanitizer/tsan/tsan_ilist.h
! 9cf336e17de58829256556c845d8a9e6  libsanitizer/tsan/tsan_interceptors.h
! 1b4ec7c176ae05e65095a6d2cdb0365c  libsanitizer/tsan/tsan_interceptors_libdispatch.cpp
! c8c7ab298129a9b512bcffce5cf17a1e  libsanitizer/tsan/tsan_interceptors_mac.cpp
  a83781c196d253d2f7538367873b4d65  libsanitizer/tsan/tsan_interceptors_mach_vm.cpp
! 7b47007e056d453067b46edcf39ba8a2  libsanitizer/tsan/tsan_interceptors_posix.cpp
! 9b7596940a24e22d58f840c8cde93add  libsanitizer/tsan/tsan_interface.cpp
! 07c438c76cb97e62fd20d38ea4cea264  libsanitizer/tsan/tsan_interface.h
! 9aaf965a64e65f2f6406a6d7042e54e8  libsanitizer/tsan/tsan_interface.inc
  dceedb94557d32f3adb2b1096f4759b6  libsanitizer/tsan/tsan_interface_ann.cpp
  85e02689af55fa1cc3f98b5cfe3043a1  libsanitizer/tsan/tsan_interface_ann.h
! 713d37bf38816f6398271686c70c584c  libsanitizer/tsan/tsan_interface_atomic.cpp
! 6059f955430c33ec37c4d0bc27a3bfdc  libsanitizer/tsan/tsan_interface_java.cpp
  b6f28fd4519c6bc2e8cd9cdb820f72a8  libsanitizer/tsan/tsan_interface_java.h
! d4742ed564ebb24495bdd7764fb8eec9  libsanitizer/tsan/tsan_malloc_mac.cpp
  2ce89d665869a9e29509f68c3b093511  libsanitizer/tsan/tsan_md5.cpp
! 24864979417b8cfc234226bea749f79a  libsanitizer/tsan/tsan_mman.cpp
! 43373dc2feda687e1f82646e040edddc  libsanitizer/tsan/tsan_mman.h
! e8f774b306c8449dc32ca14bb8bb2698  libsanitizer/tsan/tsan_mutexset.cpp
! a9a268e0f4ad3f8fd0a463675d721dc0  libsanitizer/tsan/tsan_mutexset.h
  abb77573543b4ca2e18a84ae834d8ff7  libsanitizer/tsan/tsan_new_delete.cpp
! 800374e3e4e162b535722101ae727d19  libsanitizer/tsan/tsan_platform.h
! 986fcd74513bc17028ee7f4329dc5900  libsanitizer/tsan/tsan_platform_linux.cpp
! 64748ceb81e58ba7fbacd6650bd142d1  libsanitizer/tsan/tsan_platform_mac.cpp
! 968b5e935beb2152415c67966a394dbd  libsanitizer/tsan/tsan_platform_posix.cpp
! 5af49aca7c8dc5df835388823a538642  libsanitizer/tsan/tsan_platform_windows.cpp
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  26e9eb9d1219608d4a3f8b5de755e6c7  libsanitizer/tsan/tsan_preinit.cpp
! 6140b19f32b4bcdd84abaacbc88c6211  libsanitizer/tsan/tsan_report.cpp
! 9c4ad53e86548b8b48e70950c506d44a  libsanitizer/tsan/tsan_report.h
! 90a8d73adc9445756ed90d5f8247ee30  libsanitizer/tsan/tsan_rtl.cpp
! 2954ab0754d754d75b531adefd279cfa  libsanitizer/tsan/tsan_rtl.h
  b07a5d2489d36192b3df5324b8591748  libsanitizer/tsan/tsan_rtl_aarch64.S
! e6c022b18dac5c3f36280710418a07b4  libsanitizer/tsan/tsan_rtl_access.cpp
! 6963ea78ffa74fc0b6288520196767ad  libsanitizer/tsan/tsan_rtl_amd64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! 6955bbfe44558e86db6598ef0dc82f35  libsanitizer/tsan/tsan_rtl_mutex.cpp
  d771c907949512e86f6221398475c2c1  libsanitizer/tsan/tsan_rtl_ppc64.S
! 90a9b217381a5220aa59007a40614de1  libsanitizer/tsan/tsan_rtl_proc.cpp
! 592ed56d957efa1d438cfc66230bcfd0  libsanitizer/tsan/tsan_rtl_report.cpp
  28f4e3484ccd9079551dd4c92a0c47f2  libsanitizer/tsan/tsan_rtl_s390x.S
! 41af8feb29d9a79aba4facc451e3777c  libsanitizer/tsan/tsan_rtl_thread.cpp
! 447c44310b9bce5b1f47e0f52761ba22  libsanitizer/tsan/tsan_shadow.h
  d927f16e28e5fd7b5a8c718f575d7a09  libsanitizer/tsan/tsan_stack_trace.cpp
  fcdf88c4922b4bf531859f5e19f37f19  libsanitizer/tsan/tsan_stack_trace.h
  69f20cee78a054f26a59decf38be934b  libsanitizer/tsan/tsan_suppressions.cpp
  2158aca0f3a2d54057e8cd7895ef496c  libsanitizer/tsan/tsan_suppressions.h
  44bcdcf638df13751840900e2eb82315  libsanitizer/tsan/tsan_symbolize.cpp
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
! 08d2b82bc2a67ce4976e41e7452047dc  libsanitizer/tsan/tsan_sync.cpp
! 61f55c4b81c9e28005a772ca753d11c1  libsanitizer/tsan/tsan_sync.h
! d8079a801d1d7b29367f65fe0f6ed961  libsanitizer/tsan/tsan_trace.h
! 7fc4e39b835542b58a5475f7e15129bb  libsanitizer/tsan/tsan_update_shadow_word.inc
  7043f9d2d6d55a4a9dad3179e81ac578  libsanitizer/tsan/tsan_vector_clock.cpp
  5f66ec32201aa975081f4ec4905d1343  libsanitizer/tsan/tsan_vector_clock.h
  f6d1a5a4cab859262269889366adae69  libsanitizer/ubsan/Makefile.am
! 63724809de1c923e49642e14312087f0  libsanitizer/ubsan/Makefile.in
  db0727716bbb494b5221fcab5517db23  libsanitizer/ubsan/libtool-version
  09adf5cec3b2e75084c18928b377c4f3  libsanitizer/ubsan/ubsan_checks.inc
! d4f5e238e7bd3c6ed6c6bde4b8adf123  libsanitizer/ubsan/ubsan_diag.cpp
  78ecfd51a2b4b88d4595bb54c66abc8a  libsanitizer/ubsan/ubsan_diag.h
  e5abe4d439045c7ad13bf70bc237033f  libsanitizer/ubsan/ubsan_diag_standalone.cpp
  e3592cc9006c6b039a3cec6a3bf25efb  libsanitizer/ubsan/ubsan_flags.cpp
  c6447e64133bd56b1aa97dde6c16675f  libsanitizer/ubsan/ubsan_flags.h
  b27e02f11f51c44900f55d9f84490952  libsanitizer/ubsan/ubsan_flags.inc
! a457f4b0060070f9e92b5432f6629610  libsanitizer/ubsan/ubsan_handlers.cpp
  f6fe1e866e950cd3658102fc9405e469  libsanitizer/ubsan/ubsan_handlers.h
! 43ef0529b23d1faac6f1d00a3bb99c48  libsanitizer/ubsan/ubsan_handlers_cxx.cpp
! 2d856feaefc2fa81a63e9be3a41ecc34  libsanitizer/ubsan/ubsan_handlers_cxx.h
! b756c37595ed7a9b77e4103648b5bdd4  libsanitizer/ubsan/ubsan_init.cpp
  6e2f838f2a1a00942ff6a510da152fac  libsanitizer/ubsan/ubsan_init.h
  6709b25bace5613d327e12057227eefc  libsanitizer/ubsan/ubsan_init_standalone.cpp
  8b7c4cd2bd1ad8759b5d13c230fffb54  libsanitizer/ubsan/ubsan_init_standalone_preinit.cpp
--- 112491,112580 ----
  c8748a0184d2e5e1b50d9c106e5a45f1  libsanitizer/sanitizer_common/sanitizer_win_dynamic_runtime_thunk.cpp
  61159becd1bfb41004e8fef8a36ccc1c  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.cpp
  eb330b64a368e29af662c65273f49815  libsanitizer/sanitizer_common/sanitizer_win_weak_interception.h
! 1da1dc15e8a99a17e3cd3c451a4ed384  libsanitizer/tsan/Makefile.am
! 467c97ab351500d44ac46ae6bd84a1b6  libsanitizer/tsan/Makefile.in
  4993c3783465efe7eb63dd3ae6611678  libsanitizer/tsan/libtool-version
! 667d38de68db9301dd9eb4ff9ed26207  libsanitizer/tsan/tsan_debugging.cpp
! 3cb402cb2391c0a09d0d90ea374ab9b7  libsanitizer/tsan/tsan_defs.h
! 2b8f57d3e2eee47095d7d41f44964f41  libsanitizer/tsan/tsan_dense_alloc.h
! 3104498336ec8a608c8338ecf1048b03  libsanitizer/tsan/tsan_dispatch_defs.h
  137a34ad34b3cad10e3d9c1f0f4d3c8f  libsanitizer/tsan/tsan_external.cpp
! 3d494f806f28e53275870211565852ef  libsanitizer/tsan/tsan_fd.cpp
! 84644dcbcc7cf34528393f9790a85897  libsanitizer/tsan/tsan_fd.h
! 2199cbc089e8a77c24c9e214f1962dcb  libsanitizer/tsan/tsan_flags.cpp
  9fcbcc17ace4216572d132c7f19980dd  libsanitizer/tsan/tsan_flags.h
! 03e8ef6fd65a0666d2072c12853e6950  libsanitizer/tsan/tsan_flags.inc
  60bfaa19bc1c038d806e759abd03e869  libsanitizer/tsan/tsan_ignoreset.cpp
  d419772368c76a807ff66bafd0683028  libsanitizer/tsan/tsan_ignoreset.h
  45bd7ec3e79167e3101e35f5ba81d51b  libsanitizer/tsan/tsan_ilist.h
! 8c4b7231da92776ad1620cff3c159c95  libsanitizer/tsan/tsan_interceptors.h
! d3941629145742dae4a218e73d7a9191  libsanitizer/tsan/tsan_interceptors_libdispatch.cpp
! c5829ae368a70166df8d91afdb1aab12  libsanitizer/tsan/tsan_interceptors_mac.cpp
  a83781c196d253d2f7538367873b4d65  libsanitizer/tsan/tsan_interceptors_mach_vm.cpp
! 391d84ceea84d6fabec4124519cdf778  libsanitizer/tsan/tsan_interceptors_posix.cpp
! 44e87b9222e50e4ce561458989a58e85  libsanitizer/tsan/tsan_interface.cpp
! f7a2540a23a1d6e129fcbd7c9083df72  libsanitizer/tsan/tsan_interface.h
! 12c2d0a710c7eb00a61b269e3a5e2444  libsanitizer/tsan/tsan_interface.inc
  dceedb94557d32f3adb2b1096f4759b6  libsanitizer/tsan/tsan_interface_ann.cpp
  85e02689af55fa1cc3f98b5cfe3043a1  libsanitizer/tsan/tsan_interface_ann.h
! 8f3d230871696109b09150ad2a324579  libsanitizer/tsan/tsan_interface_atomic.cpp
! fa41f071fdf51b20a993550241165dfd  libsanitizer/tsan/tsan_interface_java.cpp
  b6f28fd4519c6bc2e8cd9cdb820f72a8  libsanitizer/tsan/tsan_interface_java.h
! 14d0516fcf2e935b95a0680ea8b08505  libsanitizer/tsan/tsan_malloc_mac.cpp
  2ce89d665869a9e29509f68c3b093511  libsanitizer/tsan/tsan_md5.cpp
! fb884e452ba81cdcbf0cafe7b0de354f  libsanitizer/tsan/tsan_mman.cpp
! 4d1f89b863af5a63e195ef894d03ec41  libsanitizer/tsan/tsan_mman.h
! fce523833cd619da90b4bb9efe7126aa  libsanitizer/tsan/tsan_mutexset.cpp
! 5c2fffc76ce06a684d8c9fe407d8d735  libsanitizer/tsan/tsan_mutexset.h
  abb77573543b4ca2e18a84ae834d8ff7  libsanitizer/tsan/tsan_new_delete.cpp
! 11b46f67d7630345c4dd302567472fbd  libsanitizer/tsan/tsan_platform.h
! a6cf35b1e4e6f3dc3622b57325a3244b  libsanitizer/tsan/tsan_platform_linux.cpp
! 78d132b697c82d459c129afb535ff70a  libsanitizer/tsan/tsan_platform_mac.cpp
! e51e78fd7a3bf5e7908f7ca4521cedca  libsanitizer/tsan/tsan_platform_posix.cpp
! 3988e672409da51d77f562f3c17ad309  libsanitizer/tsan/tsan_platform_windows.cpp
  52a08181bf0cebd537f6ff681e4201d2  libsanitizer/tsan/tsan_ppc_regs.h
  26e9eb9d1219608d4a3f8b5de755e6c7  libsanitizer/tsan/tsan_preinit.cpp
! 90a165389fea896672e7069ef9b0bf67  libsanitizer/tsan/tsan_report.cpp
! 8ce569f2cacd5ec6081419ecb490fb42  libsanitizer/tsan/tsan_report.h
! 4b3afa07d87cc25d7cfe5cc74f0eba9b  libsanitizer/tsan/tsan_rtl.cpp
! a94ce163f6dab8bd7026b6f34850ab2b  libsanitizer/tsan/tsan_rtl.h
  b07a5d2489d36192b3df5324b8591748  libsanitizer/tsan/tsan_rtl_aarch64.S
! a162c81534f415464750599a907f5adc  libsanitizer/tsan/tsan_rtl_access.cpp
! 21a51361f4b9d69ba544bd2b24129994  libsanitizer/tsan/tsan_rtl_amd64.S
  2e223da4b198b7996aa993b62da9470c  libsanitizer/tsan/tsan_rtl_mips64.S
! 6377ac5d4eaf7ca164273ec46eac6d26  libsanitizer/tsan/tsan_rtl_mutex.cpp
  d771c907949512e86f6221398475c2c1  libsanitizer/tsan/tsan_rtl_ppc64.S
! d23feb95e5ade35c9d1fa0203dfc64bb  libsanitizer/tsan/tsan_rtl_proc.cpp
! d8b5eaae82e3e95c15e1d7f6fe58ead1  libsanitizer/tsan/tsan_rtl_report.cpp
  28f4e3484ccd9079551dd4c92a0c47f2  libsanitizer/tsan/tsan_rtl_s390x.S
! fc56488c2329a1f25fd4f02e96bd2888  libsanitizer/tsan/tsan_rtl_thread.cpp
! a10771eef091e41d3529a27da63b2c73  libsanitizer/tsan/tsan_shadow.h
  d927f16e28e5fd7b5a8c718f575d7a09  libsanitizer/tsan/tsan_stack_trace.cpp
  fcdf88c4922b4bf531859f5e19f37f19  libsanitizer/tsan/tsan_stack_trace.h
  69f20cee78a054f26a59decf38be934b  libsanitizer/tsan/tsan_suppressions.cpp
  2158aca0f3a2d54057e8cd7895ef496c  libsanitizer/tsan/tsan_suppressions.h
  44bcdcf638df13751840900e2eb82315  libsanitizer/tsan/tsan_symbolize.cpp
  339793c91cce47c39da05aab388a1d91  libsanitizer/tsan/tsan_symbolize.h
! ac99e2a1604f10691ceb3d4a4600d0ed  libsanitizer/tsan/tsan_sync.cpp
! 6f7b135e2c27d09f0db426a5f7427966  libsanitizer/tsan/tsan_sync.h
! 8ca6a9e7f5c97b2069ca2eb034d7b61f  libsanitizer/tsan/tsan_trace.h
  7043f9d2d6d55a4a9dad3179e81ac578  libsanitizer/tsan/tsan_vector_clock.cpp
  5f66ec32201aa975081f4ec4905d1343  libsanitizer/tsan/tsan_vector_clock.h
  f6d1a5a4cab859262269889366adae69  libsanitizer/ubsan/Makefile.am
! 757a33aaa45309e3ead517d72933a999  libsanitizer/ubsan/Makefile.in
  db0727716bbb494b5221fcab5517db23  libsanitizer/ubsan/libtool-version
  09adf5cec3b2e75084c18928b377c4f3  libsanitizer/ubsan/ubsan_checks.inc
! 2a3a1953c98a67df25005f08f8cb9af2  libsanitizer/ubsan/ubsan_diag.cpp
  78ecfd51a2b4b88d4595bb54c66abc8a  libsanitizer/ubsan/ubsan_diag.h
  e5abe4d439045c7ad13bf70bc237033f  libsanitizer/ubsan/ubsan_diag_standalone.cpp
  e3592cc9006c6b039a3cec6a3bf25efb  libsanitizer/ubsan/ubsan_flags.cpp
  c6447e64133bd56b1aa97dde6c16675f  libsanitizer/ubsan/ubsan_flags.h
  b27e02f11f51c44900f55d9f84490952  libsanitizer/ubsan/ubsan_flags.inc
! 6e35854a1c6f7bc6e7f91bc512416315  libsanitizer/ubsan/ubsan_handlers.cpp
  f6fe1e866e950cd3658102fc9405e469  libsanitizer/ubsan/ubsan_handlers.h
! 0b47c9e3d0dd3bca13d9aabbfd1435aa  libsanitizer/ubsan/ubsan_handlers_cxx.cpp
! e851b66a919376dac8b5a6ce69d20236  libsanitizer/ubsan/ubsan_handlers_cxx.h
! f9ec1b0c9f332b087aa8f2d61ec0337b  libsanitizer/ubsan/ubsan_init.cpp
  6e2f838f2a1a00942ff6a510da152fac  libsanitizer/ubsan/ubsan_init.h
  6709b25bace5613d327e12057227eefc  libsanitizer/ubsan/ubsan_init_standalone.cpp
  8b7c4cd2bd1ad8759b5d13c230fffb54  libsanitizer/ubsan/ubsan_init_standalone_preinit.cpp
*************** c334521cda7aa18f71d0584166e5ed32  libsan
*** 104481,104521 ****
  cc7b9d72793a57ce775ed182634de360  libsanitizer/ubsan/ubsan_type_hash.h
  c8d0621aeb94135587684a01c4289095  libsanitizer/ubsan/ubsan_type_hash_itanium.cpp
  07c0334c044295c3fef2cabbb9973477  libsanitizer/ubsan/ubsan_type_hash_win.cpp
! a87890bd420fc4f2759fbb6d5a239a8b  libsanitizer/ubsan/ubsan_value.cpp
  bd58abd803667b3373381b6bb1b68f1b  libsanitizer/ubsan/ubsan_value.h
  545e91fffb8d4987ca5d1c0054aadd11  libsanitizer/ubsan/ubsan_win_dll_thunk.cpp
  e9c85349d92ab1a6b66d0872077acd3b  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cpp
  72f297f487b6bb9db917cce361192c28  libsanitizer/ubsan/ubsan_win_weak_interception.cpp
! d255807893e6580a0370e558f89b6900  libssp/ChangeLog
! 6a01d14c2cd27212838caea837dc03f3  libssp/Makefile.am
  b56958cdc5828ca811c35bbf479b3a09  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! 68e956231b19fc09cf5925e781fbf02c  libssp/configure
  add86bdb9a39ea186a4120d7e7b32438  libssp/configure.ac
! 587b0d00594a1a26ed0ec96d2a14a5a4  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
! a48934d0ce773f2ca00520ee09d91641  libssp/memcpy-chk.c
! 11d4ae778e22481f29935cd6f722edb8  libssp/memmove-chk.c
! 0c169ad946b66045428bf8af95723eab  libssp/mempcpy-chk.c
! 08de3803455b5f91a7cc232c38a7b592  libssp/memset-chk.c
! 6d69477e31134e7880f0fcfd641e0425  libssp/snprintf-chk.c
! b5d80d9efd5f41a5dac406f93998850f  libssp/sprintf-chk.c
! 363794c41f70e27967d805bb695efbf0  libssp/ssp-local.c
! d41d8710d8cefc388a7b712fe5cf046c  libssp/ssp.c
  a45e2fbfb70a8e0d68d726bb31ffe4cd  libssp/ssp.map
! 99bdda48f1ccf264e374a28eabbe2269  libssp/ssp/ssp.h.in
! 3259a26261f80403e836b6efb9af7bde  libssp/ssp/stdio.h
! f03664b0ca5384dd6f80bd05eb58b488  libssp/ssp/string.h
! 63b10b79751d845d35620b22dd4fed79  libssp/ssp/unistd.h
! 82d14d119725919af9e9f313f980827f  libssp/stpcpy-chk.c
! cafe7854da876a2d8a0236845e77873f  libssp/strcat-chk.c
! b7cf7ac9dd30a51c9de8919a232874a4  libssp/strcpy-chk.c
! 1293ccf0a91009d9392d212bc6e511cd  libssp/strncat-chk.c
! b81de192dda77932887ae66cf31cdd9e  libssp/strncpy-chk.c
! 5c71217c6b2a9d406fbc27d0fc6e8042  libssp/vsnprintf-chk.c
! caf814994c08b81abae4688b582bcaf4  libssp/vsprintf-chk.c
! da7db744142a9f0c02c19f77c737975b  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
--- 112588,112628 ----
  cc7b9d72793a57ce775ed182634de360  libsanitizer/ubsan/ubsan_type_hash.h
  c8d0621aeb94135587684a01c4289095  libsanitizer/ubsan/ubsan_type_hash_itanium.cpp
  07c0334c044295c3fef2cabbb9973477  libsanitizer/ubsan/ubsan_type_hash_win.cpp
! da9dc2f23d9a9051a9539f05e372fcc5  libsanitizer/ubsan/ubsan_value.cpp
  bd58abd803667b3373381b6bb1b68f1b  libsanitizer/ubsan/ubsan_value.h
  545e91fffb8d4987ca5d1c0054aadd11  libsanitizer/ubsan/ubsan_win_dll_thunk.cpp
  e9c85349d92ab1a6b66d0872077acd3b  libsanitizer/ubsan/ubsan_win_dynamic_runtime_thunk.cpp
  72f297f487b6bb9db917cce361192c28  libsanitizer/ubsan/ubsan_win_weak_interception.cpp
! fa311b9f9dc96161c7e59a169ba1fb2f  libssp/ChangeLog
! e2f3818fe9d994ce13d0ce070a7d329b  libssp/Makefile.am
  b56958cdc5828ca811c35bbf479b3a09  libssp/Makefile.in
  f6f6c804e40e3a3ef407d3d13fafb6c0  libssp/aclocal.m4
  f4886e6dd0590caba717fd1bc96a6f50  libssp/config.h.in
! d8119317762c5b1679ac5058bc791ee5  libssp/configure
  add86bdb9a39ea186a4120d7e7b32438  libssp/configure.ac
! d76d3b0912f1933fe8a8dcf209440354  libssp/gets-chk.c
  0ac32b60459d1fdec670990324d7bdc6  libssp/libtool-version
! bedb32ba6fa4bf2d29ca389305556eed  libssp/memcpy-chk.c
! e1d6c4601f758cdc731802431bf74301  libssp/memmove-chk.c
! 38630731750f501e4ab3345680e86ee3  libssp/mempcpy-chk.c
! 5d050634c37bc72a86d66e78b8dd25a9  libssp/memset-chk.c
! 64f3ddaa5810605f3e6b1f6f8c2094da  libssp/snprintf-chk.c
! c080dbfff1ecee67c591c60d06f58f7a  libssp/sprintf-chk.c
! 96749aa078964a1a2c7985697998ebbf  libssp/ssp-local.c
! 2069b285c035a766df6765ddaf9f3d5d  libssp/ssp.c
  a45e2fbfb70a8e0d68d726bb31ffe4cd  libssp/ssp.map
! a8263bc3cfcc668711a0c277c4e4ade7  libssp/ssp/ssp.h.in
! 46980e0df608e11181ec2626ae8ed4b2  libssp/ssp/stdio.h
! 8ce32b42d89af88d3caa2460824869f9  libssp/ssp/string.h
! 143f398fe17ad4e0eb27558276918bf7  libssp/ssp/unistd.h
! 59eefc7728c4f30d4a346d718fe1a807  libssp/stpcpy-chk.c
! cac1566c4a6baf87d3371b36de5dc35d  libssp/strcat-chk.c
! c2a4b4ea7cc062cb165ffaac991d7ccb  libssp/strcpy-chk.c
! c265574887f4390ecccd1073ee5c0190  libssp/strncat-chk.c
! 02470b541ab713bd1bfb8e6787e65f2c  libssp/strncpy-chk.c
! 8a7a0719ef45cb3ae0041192eac8d550  libssp/vsnprintf-chk.c
! d662ba7536e1bd06226d47b1a7f1f4e2  libssp/vsprintf-chk.c
! a4c5199b6341524f9a59527ba32ad47e  libstdc++-v3/ChangeLog
  7aa6c40440a44fcf5ec94c066160c2f8  libstdc++-v3/ChangeLog-1998
  7aff86600b6a1ed3fa87305075a92db0  libstdc++-v3/ChangeLog-1999
  a6f28e8fc9bb07696a9e068b439a3a87  libstdc++-v3/ChangeLog-2000
*************** ced62eb7e4ae82690abb361aefcea876  libstd
*** 104540,104755 ****
  a8f4290dba5b481ad426148a03c75dd0  libstdc++-v3/ChangeLog-2019
  0f81783bc492458ec96cea677852a49c  libstdc++-v3/ChangeLog-2020
  80dfa9a5544b6411fbf1fb50c37abdaa  libstdc++-v3/ChangeLog-2021
! 6a380413ccbbfc2fdf8d8bc0138fbbd9  libstdc++-v3/Makefile.am
! 19c8cb7684c2596811789c770fbe79fc  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! bdac0e52187c657657c86906514e918f  libstdc++-v3/acinclude.m4
! 734c1cbc8791fbceb09b49c5d07d6966  libstdc++-v3/aclocal.m4
! 4d6b9664edbfbcffc7321a2d0843b55e  libstdc++-v3/config.h.in
! b321f08c525a980d5443810305bb4463  libstdc++-v3/config/abi/compatibility.h
! 1e503159ee7333dd5a3f9df292325d11  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  730569c0ef38f6e6322b3c4ac65253ce  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
! ad5f7ad17c209326dd45364406b5a992  libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
  3564a8198041594b04f35e13701fdb53  libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
! f896eb5b97c15fc2c2822ebc5ed295e9  libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
! a7b2a557cedd7844f4f9e74bce54ad58  libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
! 34afe226d3b0ee9863254b19f64c31a0  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
  01500b319bb297b4059106c465b92567  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
! 145f9897a5e2606b2eefcbdde501b065  libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
  61308215d393f11169ace76935f2b034  libstdc++-v3/config/abi/post/mips-linux-gnu/baseline_symbols.txt
  725325d7b24195d1e6374ce4e24afdb0  libstdc++-v3/config/abi/post/mips64-linux-gnu/32/baseline_symbols.txt
  907face03890009654193fc67fa4e427  libstdc++-v3/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt
  1a34bda2bb4c3a576335343c0a4a9377  libstdc++-v3/config/abi/post/mips64-linux-gnu/baseline_symbols.txt
  0fe1ef0ffda9bb3ad933875c2afb1354  libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
  0fe1ef0ffda9bb3ad933875c2afb1354  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
! 4eb853cd9faf4418cfd210d93d297c2b  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
! 104287e40f1276a2b123d0a86f37d9b4  libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt
! 2a9e7feffeee4d4d5be854c15a44e416  libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
  cc65678819ec7ff06eaeed8b1a5455eb  libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
! c8187db064d0536a9faf78019b01cdf4  libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
! cfbb215e4868f599080e4ba0acad37c0  libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
  ebf1c408e326c18c0c1f337bc5108fae  libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
  c224a11f9b7b76848462bffd472b20c2  libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
! 34afe226d3b0ee9863254b19f64c31a0  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
! 3558c96501c17b8ca30a6aa1c9fd9bb3  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
  483a11b93ae0da31d1f2f6470d4e7578  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! 66642d9e77eacb7c94cf969cf2b4812b  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! a14a1de5a21e02313f592ce822d03729  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
! 5b1437b6511efce579bf1da38fbf09e4  libstdc++-v3/config/allocator/malloc_allocator_base.h
! 3c43333b0e1372330d7f702387d162e2  libstdc++-v3/config/allocator/new_allocator_base.h
! dfce7276b58a154b2bc5e32da0857f53  libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h
! ad78f8ccc8fa9d36e3fc3263e3339664  libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h
! 350ddc20b89951f58a8a3d3fdf5c81eb  libstdc++-v3/config/cpu/arm/cpu_defines.h
! f9af62f198176a5d26a4a86a0e193513  libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
! 266ad51a6746ccb33911a163130edc52  libstdc++-v3/config/cpu/cris/atomic_word.h
! 560006eb211b98d6e94638154c910b5e  libstdc++-v3/config/cpu/cris/atomicity.h
! 88c7abdbdfccd2c772c6a74529ed5e1a  libstdc++-v3/config/cpu/generic/atomic_word.h
! aeede4f24738ec48045ebdc1e6a3c376  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! d57572b2813ca200b0446e18114c930c  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
! 4514282bedbc22196d1aaee061e6500c  libstdc++-v3/config/cpu/generic/cpu_defines.h
! 76d9ffdcc3f68973d1cd559ad4cf848e  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
! fca90bac6c48ea9e6c561fc93fa7aee9  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
! 8eed2cf1cf6c0807fdbcd11dd9483944  libstdc++-v3/config/cpu/generic/opt/ext/opt_random.h
! dc921efb4ef4ecc542a99fd9d527291c  libstdc++-v3/config/cpu/hppa/atomicity.h
! 931f8c1cbcad18bc14f13abb08939983  libstdc++-v3/config/cpu/i386/atomicity.h
! fcc15ae77a67ff213eba4cd4621e0b20  libstdc++-v3/config/cpu/i486/atomicity.h
! 926ba4b8455c31d3be5ce75d240029d9  libstdc++-v3/config/cpu/i486/opt/bits/opt_random.h
! a780b5a0bfe17f4d8aa7f1e93758516e  libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
! a3c2eb1ba564b0d6216d7cedf0485645  libstdc++-v3/config/cpu/m68k/atomicity.h
! 92434f0f934aa4721185120ece27a79b  libstdc++-v3/config/cpu/microblaze/cpu_defines.h
! a26caf1cbae7ec64ae4fbb6f805c0a43  libstdc++-v3/config/cpu/powerpc/cpu_defines.h
! c975e13735ebb9be1461f2ad8ac4410d  libstdc++-v3/config/cpu/sh/atomicity.h
! ef2abdb7456c30a1284e9c584aa6c997  libstdc++-v3/config/cpu/sparc/atomic_word.h
! ad343c746c7e744633b4f289946e24e2  libstdc++-v3/config/cpu/sparc/atomicity.h
! cc22c8b1fb2381085637d59007445f35  libstdc++-v3/config/io/basic_file_stdio.cc
! 6cf1e4b1e947dc35dd4afd51c59dd19f  libstdc++-v3/config/io/basic_file_stdio.h
! a318b6ec50abc4d7950c4833d5b47e87  libstdc++-v3/config/io/c_io_stdio.h
! f56c983e3b553cbca607693455c506dc  libstdc++-v3/config/locale/darwin/ctype_members.cc
! ff103ad952be401b9119e3080f1aa8f4  libstdc++-v3/config/locale/dragonfly/c_locale.cc
! 08bc55fbed0a62158dc9f7a3eec86f18  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 579a370aa0a9c02a97101e49dde3a5b1  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
! 948716d5c473223894b07a2cd1b46b55  libstdc++-v3/config/locale/dragonfly/collate_members.cc
! 294940c239188675f5812456391082d4  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
! 3066cd64307439b89bca48a9ad0fcbd7  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
! 758a8207907077dc47894deef87bb41b  libstdc++-v3/config/locale/dragonfly/numeric_members.cc
! 3afff48143d4d5328f25ce8d1a7be320  libstdc++-v3/config/locale/dragonfly/time_members.cc
! 532cdb9cdaa32b062e0b0fdc59048264  libstdc++-v3/config/locale/dragonfly/time_members.h
! 41b732bd6e956b75f4e72178083d51fc  libstdc++-v3/config/locale/generic/c++locale_internal.h
! 43be7b051ef90a4830367e8b09d5f30c  libstdc++-v3/config/locale/generic/c_locale.cc
! b17a3a851ba329b83b7df22d590e6d9e  libstdc++-v3/config/locale/generic/c_locale.h
! c64efe58391d29c315255303f31c5ae5  libstdc++-v3/config/locale/generic/codecvt_members.cc
! 0c0e50a388187a181297a9fc2271cfc8  libstdc++-v3/config/locale/generic/collate_members.cc
! 0e92b92eb7a6f0c1a5dfa7adc4c9efad  libstdc++-v3/config/locale/generic/ctype_members.cc
! 85891feda5d3efedfc0da27b06598d3a  libstdc++-v3/config/locale/generic/messages_members.cc
! 3f6721709652773dfe6df1221603bf1e  libstdc++-v3/config/locale/generic/messages_members.h
! 7a64055b1d4f7b942008c56aec778d49  libstdc++-v3/config/locale/generic/monetary_members.cc
! 25a008f8e619d330378f62bfda8a9b28  libstdc++-v3/config/locale/generic/numeric_members.cc
! 3fe34f21b478c5cb895bc5f59d660013  libstdc++-v3/config/locale/generic/time_members.cc
! fc8f0475018b2fe296a7151498b08f84  libstdc++-v3/config/locale/generic/time_members.h
! d649efaa1d67b6a32482457084340da4  libstdc++-v3/config/locale/gnu/c++locale_internal.h
! 63f7610e6ba3d0cb333f394ef10058b2  libstdc++-v3/config/locale/gnu/c_locale.cc
! 8b19e8b7a27abe174b4aa7000ff1d65f  libstdc++-v3/config/locale/gnu/c_locale.h
! e245187a00e704e402208137455fa34a  libstdc++-v3/config/locale/gnu/codecvt_members.cc
! 17be4220eb5be44fee029c648895c18b  libstdc++-v3/config/locale/gnu/collate_members.cc
! cd728212fe99943e83d5c1267b610102  libstdc++-v3/config/locale/gnu/ctype_members.cc
! e03478ba72077ae0708808cf00c3fdec  libstdc++-v3/config/locale/gnu/messages_members.cc
! 44ecc01a03f1a74193d533ea14c053dd  libstdc++-v3/config/locale/gnu/messages_members.h
! 0c5b03b4294e5571b920734130b4f562  libstdc++-v3/config/locale/gnu/monetary_members.cc
! c337c884eb47205c3757d258f47f41c8  libstdc++-v3/config/locale/gnu/numeric_members.cc
! f9081edfe6a524e64c43555fb9e81bac  libstdc++-v3/config/locale/gnu/time_members.cc
! 357a2e1c362c553bd778461ee19367f9  libstdc++-v3/config/locale/gnu/time_members.h
! 6a8fe8f970490b8e0ca6888b1ad9d754  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
! fcc1bd52d74d86c3f7dbff31f6bfc2b7  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
! ad55696982153ce28c07b21e27720b80  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
! ae6ec26a8de3105b870d388295ee19fd  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
! 618156d9e8f2fde151ce0786850be8c7  libstdc++-v3/config/locale/newlib/ctype_members.cc
! 5ac41324402c5781ad0ca304a1cc8ca8  libstdc++-v3/config/locale/vxworks/ctype_members.cc
! 52a674c71fdd1ed36c899e9e9662e339  libstdc++-v3/config/os/aix/ctype_base.h
! 98b61494bb0364dd62a284430d82b6f8  libstdc++-v3/config/os/aix/ctype_configure_char.cc
! 8af581c9ce59d1b8fe0bf21500723678  libstdc++-v3/config/os/aix/ctype_inline.h
! e5a34ef5217bac48e0b5e7414d7bb963  libstdc++-v3/config/os/aix/os_defines.h
  7d1373c31caa4fdc44bcb11af08b4ab3  libstdc++-v3/config/os/aix/t-aix
! 49e197f6c179a7ff24aa3b5d29f43af3  libstdc++-v3/config/os/bionic/ctype_base.h
! fb55b97b9c8b6664584b41cafc01014c  libstdc++-v3/config/os/bionic/ctype_configure_char.cc
! dc513f5198c5ffc2f13331b207a27767  libstdc++-v3/config/os/bionic/ctype_inline.h
! cf2c568c51de05c8c9ea4fc73cc4a7d1  libstdc++-v3/config/os/bionic/os_defines.h
! 4dba8f5fff21b944bc6c09b7476a0cbe  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
! 98b61494bb0364dd62a284430d82b6f8  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
! bea58f0b1462adb4715391585424c2f4  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 89a3b806f2477b51ebadc834cacf5569  libstdc++-v3/config/os/bsd/darwin/os_defines.h
  9e91dfcb11e4c78744df0e1e0cf69b5b  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
! 0ce4b7914f00fd6af304f11efd7cfd30  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
! eec583ae69a4a2889d741f1943ff6d81  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
! 13f254bb29960388cffae291a38ccf14  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
! 42f4856c71af72d24a2e65811918b310  libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
! 52734718ac4b3f8c66060137b2b5816d  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
! eec583ae69a4a2889d741f1943ff6d81  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
! bea58f0b1462adb4715391585424c2f4  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! 32f1874bd6f58a3696ffaf7e58af025a  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
! c704a60fd34e71754a9e9247a2bfbf7f  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
! 78f7b96a098cd1794f44a1dca6c44c84  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
! 59d399725a409c40e829249c0e2d2c1c  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
! 4c62671d3a3f99695a7e859d8c497e95  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! 15864face6a8885cf9973392677f50ac  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
! 64d678a41c0944584cc0702afdc290e9  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
! dc513f5198c5ffc2f13331b207a27767  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
! 5b072d2d8fa54f60a8ba2704d77498d2  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
! 998f13bd9217479f2b86a698716e4777  libstdc++-v3/config/os/djgpp/ctype_base.h
! 9475228f7f6e914a6f91b77d23392276  libstdc++-v3/config/os/djgpp/ctype_configure_char.cc
! 82a918d1548686f50665aab5fdb8be44  libstdc++-v3/config/os/djgpp/ctype_inline.h
! 472d5fa7cff0ab8ff16fb9bd2ceceb21  libstdc++-v3/config/os/djgpp/error_constants.h
! b53dc94450a6b15d945267fe1865110c  libstdc++-v3/config/os/djgpp/os_defines.h
! 816da92c709e934d0a9075cde98334d5  libstdc++-v3/config/os/generic/ctype_base.h
! 98b61494bb0364dd62a284430d82b6f8  libstdc++-v3/config/os/generic/ctype_configure_char.cc
! 1c805f2af6496182d0750fd53950deb3  libstdc++-v3/config/os/generic/ctype_inline.h
! 544690df535b8525ae1af3be66f624c3  libstdc++-v3/config/os/generic/error_constants.h
! f4e89b9b5c5711b2f1284c214cc37e0a  libstdc++-v3/config/os/generic/os_defines.h
  5b9a724ca8744a0e193a82f2ea8e9f5b  libstdc++-v3/config/os/gnu-linux/arm-eabi-extra.ver
! e32cb69000468d313fed385dac17c01f  libstdc++-v3/config/os/gnu-linux/ctype_base.h
! 3f263597a19976e44efd34d676a68297  libstdc++-v3/config/os/gnu-linux/ctype_configure_char.cc
! f7f2a9066ec503446c350e59c7bacc6d  libstdc++-v3/config/os/gnu-linux/ctype_inline.h
! df7b0a76ea127cef7009bec82b53dcee  libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
! 172922859edc03edad69fc4bb48bd146  libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver
! 5d333ac3003c8be693a0f476335cae73  libstdc++-v3/config/os/gnu-linux/os_defines.h
! 6e1c8b6cb2de657d6e522c87825a9b62  libstdc++-v3/config/os/hpux/ctype_base.h
! 4c1c47b02937dd9780d2b9fbdc52daa2  libstdc++-v3/config/os/hpux/ctype_configure_char.cc
! f7f2a9066ec503446c350e59c7bacc6d  libstdc++-v3/config/os/hpux/ctype_inline.h
! 70a5d6b94e7e7be148f08122f979fc9d  libstdc++-v3/config/os/hpux/os_defines.h
! c9b3012b8b854342d757aa1ec1752120  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
! 3686fb4a40ba6dfe23cfbcc66eaf8748  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
! efc8d6a9c6e8833c23d11fafead73511  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! 9230b325aa823b2076d54053f472452a  libstdc++-v3/config/os/mingw32-w64/error_constants.h
! e1550f5d98b931bf358c796310003ef6  libstdc++-v3/config/os/mingw32-w64/os_defines.h
! c9b3012b8b854342d757aa1ec1752120  libstdc++-v3/config/os/mingw32/ctype_base.h
! 3686fb4a40ba6dfe23cfbcc66eaf8748  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
! efc8d6a9c6e8833c23d11fafead73511  libstdc++-v3/config/os/mingw32/ctype_inline.h
! 7d900463c44da7c0c01137a8c1392e1a  libstdc++-v3/config/os/mingw32/error_constants.h
! 279a16a8e97e72e5459c7dc45b955a46  libstdc++-v3/config/os/mingw32/os_defines.h
! cbc720fee3827788670b34ca5ee92af3  libstdc++-v3/config/os/newlib/ctype_base.h
! fb55b97b9c8b6664584b41cafc01014c  libstdc++-v3/config/os/newlib/ctype_configure_char.cc
! 1406fa63200b24031de77a0c5f752e54  libstdc++-v3/config/os/newlib/ctype_inline.h
! 2639d75fd3f8783a8e4fab238eca828c  libstdc++-v3/config/os/newlib/os_defines.h
! 37ddeb234613955c204a3381aa2a84fb  libstdc++-v3/config/os/qnx/qnx6.1/ctype_base.h
! dfb87ea53334b1d7b9751357ae5316b7  libstdc++-v3/config/os/qnx/qnx6.1/ctype_configure_char.cc
! ffc4ab91c485148808642f377ba5646c  libstdc++-v3/config/os/qnx/qnx6.1/ctype_inline.h
! f2664f68de636d8495797f645280c7bf  libstdc++-v3/config/os/qnx/qnx6.1/os_defines.h
! b39d90e3910dccf806db8fec4af5e98f  libstdc++-v3/config/os/solaris/ctype_base.h
! 6086f2ede06dc20d1c394acc5c7d6ba8  libstdc++-v3/config/os/solaris/ctype_configure_char.cc
! f7f2a9066ec503446c350e59c7bacc6d  libstdc++-v3/config/os/solaris/ctype_inline.h
! cf5b2c02adae407d7d05649198521974  libstdc++-v3/config/os/solaris/os_defines.h
! 1d48e86f0b8850c3cc2b4271250efd12  libstdc++-v3/config/os/tpf/ctype_base.h
! b4ac47d60af5e25c38d30270d0cd3943  libstdc++-v3/config/os/tpf/ctype_configure_char.cc
! 822f8e264142155aa1904225f05ff622  libstdc++-v3/config/os/tpf/ctype_inline.h
! d523cf05d2f866be3c82592e2570bd1e  libstdc++-v3/config/os/tpf/os_defines.h
! a49a68237544acb2c4b1f90a77482399  libstdc++-v3/config/os/uclibc/ctype_base.h
! 83b20fba707307731799c7796ad6946f  libstdc++-v3/config/os/uclibc/ctype_configure_char.cc
! f7f2a9066ec503446c350e59c7bacc6d  libstdc++-v3/config/os/uclibc/ctype_inline.h
! bf07a890aa6d276f0880e3e25ba8c7e2  libstdc++-v3/config/os/uclibc/os_defines.h
! b32b29daa3ac6240ae38f37366b0d4da  libstdc++-v3/config/os/vxworks/ctype_base.h
! 78d15556a78885c1221dbb429fd77a08  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
! 11c759cf4b750f149bca3052e251404d  libstdc++-v3/config/os/vxworks/ctype_inline.h
! a58306525e8e9363101bf5738db96b46  libstdc++-v3/config/os/vxworks/os_defines.h
! 478ab6959cedc82a24d7c7fe24d8b101  libstdc++-v3/configure
! 66ce87efbc534ee0cded86eba4d48aeb  libstdc++-v3/configure.ac
  6f48d91af78c16e62f258e7bedec5125  libstdc++-v3/configure.host
! 584164974df7c169b96d93356371b4a7  libstdc++-v3/crossconfig.m4
! 894b6a88368e88c0d19c47645d774272  libstdc++-v3/doc/Makefile.am
! 7537e7f1f6147c676f1bdf9a3a3998c6  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! c37369d9fe7e0c00db096144ce0a40ac  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  f298475c719652bf6b563563d90f327a  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
! b9e8e99e73cb66ebaed809352a24bc1f  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
  c68ff21babfa14f20b98e36a2c808418  libstdc++-v3/doc/html/api.html
! fd168dc2b2d0c12b1e17b40ffec96390  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! a75d614dcfc1b2374bccc626e2464c94  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
--- 112647,112863 ----
  a8f4290dba5b481ad426148a03c75dd0  libstdc++-v3/ChangeLog-2019
  0f81783bc492458ec96cea677852a49c  libstdc++-v3/ChangeLog-2020
  80dfa9a5544b6411fbf1fb50c37abdaa  libstdc++-v3/ChangeLog-2021
! 69469ccef96be33069fcee2e2e019c04  libstdc++-v3/ChangeLog-2022
! 8f935bcf0a7cef1820d590f10ba666e0  libstdc++-v3/Makefile.am
! 48e09ad461c04a859ea424488ccf5f25  libstdc++-v3/Makefile.in
  f372af73db4ac0ad88e43199e1f29e08  libstdc++-v3/README
! 099839003e7fde2f2b4c24d96cede328  libstdc++-v3/acinclude.m4
! 13f29ef95664bfe876c83f7743ca504d  libstdc++-v3/aclocal.m4
! c167b1b34dc36921a2db3e845a46349c  libstdc++-v3/config.h.in
! dbe719d2ffb42b6b243512fe87e49072  libstdc++-v3/config/abi/compatibility.h
! 6b42ea538661b7fe9809bf406b12233b  libstdc++-v3/config/abi/post/aarch64-linux-gnu/baseline_symbols.txt
  730569c0ef38f6e6322b3c4ac65253ce  libstdc++-v3/config/abi/post/alpha-linux-gnu/baseline_symbols.txt
! 0b13b889ce8ed4728a7ff2f2eba7f27e  libstdc++-v3/config/abi/post/hppa-linux-gnu/baseline_symbols.txt
  3564a8198041594b04f35e13701fdb53  libstdc++-v3/config/abi/post/i386-linux-gnu/baseline_symbols.txt
! a6e819eb7418e2cbe4a9b17c9b1c2635  libstdc++-v3/config/abi/post/i386-solaris/amd64/baseline_symbols.txt
! 46afe8d5679c5a75d0e9d14855e769bc  libstdc++-v3/config/abi/post/i386-solaris/baseline_symbols.txt
! 114784d5753dc1b6b03cafb2868b64bf  libstdc++-v3/config/abi/post/i486-linux-gnu/baseline_symbols.txt
  01500b319bb297b4059106c465b92567  libstdc++-v3/config/abi/post/ia64-linux-gnu/baseline_symbols.txt
! 654c42ee1982bbb3b32b319d7eefbee0  libstdc++-v3/config/abi/post/m68k-linux-gnu/baseline_symbols.txt
  61308215d393f11169ace76935f2b034  libstdc++-v3/config/abi/post/mips-linux-gnu/baseline_symbols.txt
  725325d7b24195d1e6374ce4e24afdb0  libstdc++-v3/config/abi/post/mips64-linux-gnu/32/baseline_symbols.txt
  907face03890009654193fc67fa4e427  libstdc++-v3/config/abi/post/mips64-linux-gnu/64/baseline_symbols.txt
  1a34bda2bb4c3a576335343c0a4a9377  libstdc++-v3/config/abi/post/mips64-linux-gnu/baseline_symbols.txt
  0fe1ef0ffda9bb3ad933875c2afb1354  libstdc++-v3/config/abi/post/powerpc-linux-gnu/baseline_symbols.txt
  0fe1ef0ffda9bb3ad933875c2afb1354  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/32/baseline_symbols.txt
! 047aec4f0a2b8ae816cea3120cc3a8d8  libstdc++-v3/config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt
! 1d3d8f8afc0c259d72739684f41816b1  libstdc++-v3/config/abi/post/riscv64-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390-linux-gnu/baseline_symbols.txt
  3ec228e0d9301df0938cba4a7fb94374  libstdc++-v3/config/abi/post/s390x-linux-gnu/32/baseline_symbols.txt
! 32ab21e2c33114d2db8dd88fd908f77d  libstdc++-v3/config/abi/post/s390x-linux-gnu/baseline_symbols.txt
  cc65678819ec7ff06eaeed8b1a5455eb  libstdc++-v3/config/abi/post/sparc-linux-gnu/baseline_symbols.txt
! e03d818332a5d182e33a11b3697a9962  libstdc++-v3/config/abi/post/sparc-solaris/baseline_symbols.txt
! 328b307c950426e3a15f05dfa3565a25  libstdc++-v3/config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt
  ebf1c408e326c18c0c1f337bc5108fae  libstdc++-v3/config/abi/post/sparc64-linux-gnu/32/baseline_symbols.txt
  c224a11f9b7b76848462bffd472b20c2  libstdc++-v3/config/abi/post/sparc64-linux-gnu/baseline_symbols.txt
! 114784d5753dc1b6b03cafb2868b64bf  libstdc++-v3/config/abi/post/x86_64-linux-gnu/32/baseline_symbols.txt
! 943680c6c1bafe37231e647c6ad503bb  libstdc++-v3/config/abi/post/x86_64-linux-gnu/baseline_symbols.txt
  483a11b93ae0da31d1f2f6470d4e7578  libstdc++-v3/config/abi/post/x86_64-linux-gnu/x32/baseline_symbols.txt
  5c4c38aeca254313c616b84337c937c3  libstdc++-v3/config/abi/pre/float128.ver
! 2963416ded826008141b34874eb2486e  libstdc++-v3/config/abi/pre/gnu-versioned-namespace.ver
! 1b62f3eeecbba515361c7b8aba6d68ab  libstdc++-v3/config/abi/pre/gnu.ver
  b01f8da8f4373070847fe317fe8a546e  libstdc++-v3/config/abi/pre/none.ver
! de1009b57da80b0c8a0e9cb3c2650440  libstdc++-v3/config/allocator/malloc_allocator_base.h
! f56d3b48d132e35738b60e08703928ec  libstdc++-v3/config/allocator/new_allocator_base.h
! 6dbae0e1d3939ce8cfdfdfb59f98acd3  libstdc++-v3/config/cpu/aarch64/opt/bits/opt_random.h
! 856579dc0753a6c75df9820146ca4e6a  libstdc++-v3/config/cpu/aarch64/opt/ext/opt_random.h
! 02c0f8180905eadeb5dec2ef410f1522  libstdc++-v3/config/cpu/arm/cpu_defines.h
! 8e2f45e49b7aca79fffff6191ecdf532  libstdc++-v3/config/cpu/arm/cxxabi_tweaks.h
! 87a80a225b66fea2e5ae71ff6e7650ea  libstdc++-v3/config/cpu/cris/atomic_word.h
! 91dab093a5f70aed25514200c64a53d1  libstdc++-v3/config/cpu/cris/atomicity.h
! a57b0e58df4838e6bdf466cbd75ee448  libstdc++-v3/config/cpu/generic/atomic_word.h
! 2c4b796586ab709496607c6d760ff700  libstdc++-v3/config/cpu/generic/atomicity_builtins/atomicity.h
! 3753dceea8d494ec1e159f7b75075ed1  libstdc++-v3/config/cpu/generic/atomicity_mutex/atomicity.h
! b7ba890a08e3aaabc4319eb5857389f3  libstdc++-v3/config/cpu/generic/cpu_defines.h
! 090dadd79f911e25a5824afc74325612  libstdc++-v3/config/cpu/generic/cxxabi_tweaks.h
! 7072ff4839bc204cef522be07506fcc0  libstdc++-v3/config/cpu/generic/opt/bits/opt_random.h
! 08e16292df0e428237c2f5a3136436c6  libstdc++-v3/config/cpu/generic/opt/ext/opt_random.h
! b098d581016d75297e50710c32ae79da  libstdc++-v3/config/cpu/hppa/atomicity.h
! 0ea7a8b5a407fc5d43cb70bf14ff1b8e  libstdc++-v3/config/cpu/i386/atomicity.h
! adcea90b4e1088e2e86276002047930d  libstdc++-v3/config/cpu/i486/atomicity.h
! 4525c517bb9575ecaaae8c3fa20987b0  libstdc++-v3/config/cpu/i486/opt/bits/opt_random.h
! ea3147f843171e066481409c662cbbed  libstdc++-v3/config/cpu/i486/opt/ext/opt_random.h
! 3aa3ed8ee6fd04d9308fcde43d292665  libstdc++-v3/config/cpu/m68k/atomicity.h
! 7233b706a3c2c7b310f1f42332f973f0  libstdc++-v3/config/cpu/microblaze/cpu_defines.h
! 37c2c5d6e3b3be67576ea4e238b25fdc  libstdc++-v3/config/cpu/powerpc/cpu_defines.h
! b9781348efbb56e34bbcbae0c133c4c8  libstdc++-v3/config/cpu/sh/atomicity.h
! f0d558aa9a20f3e1cb155d4bf7338f1a  libstdc++-v3/config/cpu/sparc/atomic_word.h
! 9cb5258fc5ee28e47bb10eb3a5b9993e  libstdc++-v3/config/cpu/sparc/atomicity.h
! 15909d726f423fad9aeac84fe0329f2c  libstdc++-v3/config/io/basic_file_stdio.cc
! 667751272c2634e9ca84aafbf5899453  libstdc++-v3/config/io/basic_file_stdio.h
! a0d5f7157fc4b3fc206d8bf4497dd924  libstdc++-v3/config/io/c_io_stdio.h
! 8d8376bd496628e6daff6e43c6a00f43  libstdc++-v3/config/locale/darwin/ctype_members.cc
! f093a64957701e345212de01e53fea28  libstdc++-v3/config/locale/dragonfly/c_locale.cc
! 214f9d51d4d1ecb13b2b070b96648e19  libstdc++-v3/config/locale/dragonfly/c_locale.h
! 99930a8b6fc64a818f7ff183ec3b26dc  libstdc++-v3/config/locale/dragonfly/codecvt_members.cc
! 4a5699f8b5de77b6cb0185f837bac4f0  libstdc++-v3/config/locale/dragonfly/collate_members.cc
! a1463943efae57b930a3a778e2596408  libstdc++-v3/config/locale/dragonfly/ctype_members.cc
! e82371f75a7f131a45c51112632b00b4  libstdc++-v3/config/locale/dragonfly/monetary_members.cc
! c83126a29fa2ea4cc4232659b79d6bff  libstdc++-v3/config/locale/dragonfly/numeric_members.cc
! e9c61ccdf8ef54d372d54d0c699bda74  libstdc++-v3/config/locale/dragonfly/time_members.cc
! babdea4ccb54a63bdff1489b18e8becc  libstdc++-v3/config/locale/dragonfly/time_members.h
! 9f74bddaf0a254d96f13d40d9173727d  libstdc++-v3/config/locale/generic/c++locale_internal.h
! 26ae3157f22fb32d7f4745f54982978f  libstdc++-v3/config/locale/generic/c_locale.cc
! 5899c841fe18510407b36089b6541573  libstdc++-v3/config/locale/generic/c_locale.h
! d87f0b8e3ea51b5a9326ec26a89a98d4  libstdc++-v3/config/locale/generic/codecvt_members.cc
! 69547c3ce958d9914903521b96c61731  libstdc++-v3/config/locale/generic/collate_members.cc
! 3a924dff4089e80f6cacd3998d139cbf  libstdc++-v3/config/locale/generic/ctype_members.cc
! f849d2d4eb8c20f1c5d2e16fbea97539  libstdc++-v3/config/locale/generic/messages_members.cc
! fd5c1983dd99f637e17b4fb4f4c91d6f  libstdc++-v3/config/locale/generic/messages_members.h
! c32dbd91f9ad1b71f5c737eacc134517  libstdc++-v3/config/locale/generic/monetary_members.cc
! d960100fae5380030303b7afb281c98f  libstdc++-v3/config/locale/generic/numeric_members.cc
! b80202e65ad971ad4e9427b8012b68da  libstdc++-v3/config/locale/generic/time_members.cc
! 53d6a9be38a5811a359af970e56b023d  libstdc++-v3/config/locale/generic/time_members.h
! 942cafcd7b13ed006a05b9b3cba3416b  libstdc++-v3/config/locale/gnu/c++locale_internal.h
! adc14174bf7d5246d2139f20e418378e  libstdc++-v3/config/locale/gnu/c_locale.cc
! b61cea41d386450b82fdf27639b4874d  libstdc++-v3/config/locale/gnu/c_locale.h
! a78cc28e1751d8d73b9efa685484a413  libstdc++-v3/config/locale/gnu/codecvt_members.cc
! 1395acff5a39083f5231094df4befc63  libstdc++-v3/config/locale/gnu/collate_members.cc
! de202fda56a19eec7e45a1e10aed9752  libstdc++-v3/config/locale/gnu/ctype_members.cc
! 327af32905ecdcce8bdaadc497871495  libstdc++-v3/config/locale/gnu/messages_members.cc
! 245444437b5ad5def5b0cb67ff923f90  libstdc++-v3/config/locale/gnu/messages_members.h
! 57719128b782d9adf6ea00944ad4edaa  libstdc++-v3/config/locale/gnu/monetary_members.cc
! e9a0ad292580556a800c1c8f76c7cdf3  libstdc++-v3/config/locale/gnu/numeric_members.cc
! 26b0c2046bc28c36bca194378d820618  libstdc++-v3/config/locale/gnu/time_members.cc
! ce947e3179d47efaba19fc99a9f13a33  libstdc++-v3/config/locale/gnu/time_members.h
! aeee8c086899ce09c367f69061bf00a0  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.cc
! 92d1f30fdee980064ce519618da0483d  libstdc++-v3/config/locale/ieee_1003.1-2001/c_locale.h
! 6793b1973b526749fb96b9c5193cf84a  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.cc
! 37af6b2becfaf7ee45725639fb547cd9  libstdc++-v3/config/locale/ieee_1003.1-2001/messages_members.h
! 20218f62917bd3fae94987f72b306430  libstdc++-v3/config/locale/newlib/ctype_members.cc
! b2f2f00709f702bb039fdec0ae9ee24b  libstdc++-v3/config/locale/vxworks/ctype_members.cc
! 2053e3ccce4f06c5d00177a90edcf22d  libstdc++-v3/config/os/aix/ctype_base.h
! bff3f0f5f7fae007b47106e4cd2aedd8  libstdc++-v3/config/os/aix/ctype_configure_char.cc
! 9012c11b9728e7975936b209fd835011  libstdc++-v3/config/os/aix/ctype_inline.h
! 12db23803b99e3fc04fedd54c6b61c7f  libstdc++-v3/config/os/aix/os_defines.h
  7d1373c31caa4fdc44bcb11af08b4ab3  libstdc++-v3/config/os/aix/t-aix
! f33a801cfe6a7c772850024ffed72657  libstdc++-v3/config/os/bionic/ctype_base.h
! 8cc39813101e43c3370fb42e499a5952  libstdc++-v3/config/os/bionic/ctype_configure_char.cc
! bf556dc6840d7dadbb3b6275d1a0246f  libstdc++-v3/config/os/bionic/ctype_inline.h
! 5c483a922901af35b8a4eda52a5cb6ad  libstdc++-v3/config/os/bionic/os_defines.h
! f0f692d4993106f00dc73fffe8481a5a  libstdc++-v3/config/os/bsd/darwin/ctype_base.h
! bff3f0f5f7fae007b47106e4cd2aedd8  libstdc++-v3/config/os/bsd/darwin/ctype_configure_char.cc
! b3726c7385b8a8c7b6ae336f5eef90a8  libstdc++-v3/config/os/bsd/darwin/ctype_inline.h
! 36e4c8ce8504c11324759a1cdc69c4b2  libstdc++-v3/config/os/bsd/darwin/os_defines.h
  9e91dfcb11e4c78744df0e1e0cf69b5b  libstdc++-v3/config/os/bsd/darwin/ppc-extra.ver
! d05e9e7b17b7b8b3d1a862ceda60c106  libstdc++-v3/config/os/bsd/dragonfly/ctype_base.h
! 7e7ffc1a0dbe201efefbdbc801c4cfaf  libstdc++-v3/config/os/bsd/dragonfly/ctype_configure_char.cc
! 1f62a0fb0f2438085d3fb80e37f08370  libstdc++-v3/config/os/bsd/dragonfly/ctype_inline.h
! 4b36907cd40e02069b9fe729e7c962ad  libstdc++-v3/config/os/bsd/dragonfly/os_defines.h
! 70b706514677753f53f175644c6d1c3c  libstdc++-v3/config/os/bsd/freebsd/ctype_base.h
! 7e7ffc1a0dbe201efefbdbc801c4cfaf  libstdc++-v3/config/os/bsd/freebsd/ctype_configure_char.cc
! b3726c7385b8a8c7b6ae336f5eef90a8  libstdc++-v3/config/os/bsd/freebsd/ctype_inline.h
! efcb0a7d47a741c72b91843ad95c5242  libstdc++-v3/config/os/bsd/freebsd/os_defines.h
! 88f0caf3f3b225d015f8768e496ebd4a  libstdc++-v3/config/os/bsd/netbsd/ctype_base.h
! 37c0176086b51b82cdf41777685ce449  libstdc++-v3/config/os/bsd/netbsd/ctype_configure_char.cc
! b0500c41fc08ce01a06b84e41fa43c31  libstdc++-v3/config/os/bsd/netbsd/ctype_inline.h
! 6437ba3d9f4c6b8487e60eb0a275dadf  libstdc++-v3/config/os/bsd/netbsd/os_defines.h
! 218ace0948dfcc4fb858cfc694372815  libstdc++-v3/config/os/bsd/openbsd/ctype_base.h
! 0d673fedc4d294b06506123a7cc9c82b  libstdc++-v3/config/os/bsd/openbsd/ctype_configure_char.cc
! bf556dc6840d7dadbb3b6275d1a0246f  libstdc++-v3/config/os/bsd/openbsd/ctype_inline.h
! a49e15947aa83a9f6d3926fac67d6977  libstdc++-v3/config/os/bsd/openbsd/os_defines.h
! 9641b981ae097274b9e3555cdbc97119  libstdc++-v3/config/os/djgpp/ctype_base.h
! aa3e09ce651561e3596f8037e5937c2c  libstdc++-v3/config/os/djgpp/ctype_configure_char.cc
! 0bf27175e7eee2c830532d550ffcae19  libstdc++-v3/config/os/djgpp/ctype_inline.h
! 7b2ad91e52074b366452152579e2e991  libstdc++-v3/config/os/djgpp/error_constants.h
! bf4237a65fa3a78ba49859fed65b3db2  libstdc++-v3/config/os/djgpp/os_defines.h
! 2f15fc9518d9b4f8bbea2c68bdbccc82  libstdc++-v3/config/os/generic/ctype_base.h
! bff3f0f5f7fae007b47106e4cd2aedd8  libstdc++-v3/config/os/generic/ctype_configure_char.cc
! cd3307bf0e9e4116d28e315641786493  libstdc++-v3/config/os/generic/ctype_inline.h
! 88348030d79509b71651147eec5c3940  libstdc++-v3/config/os/generic/error_constants.h
! dce5c2f133fe8db98c3365bbae116056  libstdc++-v3/config/os/generic/os_defines.h
  5b9a724ca8744a0e193a82f2ea8e9f5b  libstdc++-v3/config/os/gnu-linux/arm-eabi-extra.ver
! 2fb76dd54fc3a7291209ac831da3304d  libstdc++-v3/config/os/gnu-linux/ctype_base.h
! c04fad4afcf1c65417132b2e9735af15  libstdc++-v3/config/os/gnu-linux/ctype_configure_char.cc
! a80dc6f5270e812e4be93e795b05f9d6  libstdc++-v3/config/os/gnu-linux/ctype_inline.h
! 88403d88bac5d855fb07dee81eb8409e  libstdc++-v3/config/os/gnu-linux/ldbl-extra.ver
! ecafd9167cd304fae16637b488367a1b  libstdc++-v3/config/os/gnu-linux/ldbl-ieee128-extra.ver
! 84b168f84b44ad56d95c40b98d16d9d6  libstdc++-v3/config/os/gnu-linux/os_defines.h
! 34414afbef15afc7786a055e797aaf7b  libstdc++-v3/config/os/hpux/ctype_base.h
! 158ef0909d94d940bbc2348a9132840d  libstdc++-v3/config/os/hpux/ctype_configure_char.cc
! a80dc6f5270e812e4be93e795b05f9d6  libstdc++-v3/config/os/hpux/ctype_inline.h
! a70314743d8bb07ee81e34a6632def5e  libstdc++-v3/config/os/hpux/os_defines.h
! 122ab6924a0d535ce8030b86bb147b69  libstdc++-v3/config/os/mingw32-w64/ctype_base.h
! 6710565cbcb1ee86f3cfb3cb9ed31b6f  libstdc++-v3/config/os/mingw32-w64/ctype_configure_char.cc
! 5c59a73c3336447a9ef2dbf2fa1b8bd8  libstdc++-v3/config/os/mingw32-w64/ctype_inline.h
! 4066a0987af2e42f8c111ceeff5e0886  libstdc++-v3/config/os/mingw32-w64/error_constants.h
! 4fce00c898ade7e51134c3e6007e33ca  libstdc++-v3/config/os/mingw32-w64/os_defines.h
! 122ab6924a0d535ce8030b86bb147b69  libstdc++-v3/config/os/mingw32/ctype_base.h
! 6710565cbcb1ee86f3cfb3cb9ed31b6f  libstdc++-v3/config/os/mingw32/ctype_configure_char.cc
! 5c59a73c3336447a9ef2dbf2fa1b8bd8  libstdc++-v3/config/os/mingw32/ctype_inline.h
! de30bde4cc11775af238bcc170753384  libstdc++-v3/config/os/mingw32/error_constants.h
! 5d34c76281ba7752e3b56d760fb743ae  libstdc++-v3/config/os/mingw32/os_defines.h
! 47251cb1eb618288f712c20fc7d4b5f4  libstdc++-v3/config/os/newlib/ctype_base.h
! 8cc39813101e43c3370fb42e499a5952  libstdc++-v3/config/os/newlib/ctype_configure_char.cc
! 7477eefff2c9b0a94832c9d7ebd58335  libstdc++-v3/config/os/newlib/ctype_inline.h
! 618671d6c57231c96ba3bdbaec5c7ee6  libstdc++-v3/config/os/newlib/os_defines.h
! 51fe958a4c2b0e462f5198c99784515c  libstdc++-v3/config/os/qnx/qnx6.1/ctype_base.h
! 32e209c79ccf1454c5d0e5fd544015ac  libstdc++-v3/config/os/qnx/qnx6.1/ctype_configure_char.cc
! 8a9383499ab9fc0b45314f7f61f8580c  libstdc++-v3/config/os/qnx/qnx6.1/ctype_inline.h
! d6be3b193bb0fe940f00224e47a17b48  libstdc++-v3/config/os/qnx/qnx6.1/os_defines.h
! 090245ddf4ef096dad7d06afbfa11626  libstdc++-v3/config/os/solaris/ctype_base.h
! 1ddf05bd2bba01674114572f9e0dd6e8  libstdc++-v3/config/os/solaris/ctype_configure_char.cc
! a80dc6f5270e812e4be93e795b05f9d6  libstdc++-v3/config/os/solaris/ctype_inline.h
! cd4aa317e3353448acac1509e9c14ba5  libstdc++-v3/config/os/solaris/os_defines.h
! 7d12d876706644a85c17f47c0f9e245e  libstdc++-v3/config/os/tpf/ctype_base.h
! 3fd0055d91afde9b93e6f472e190644d  libstdc++-v3/config/os/tpf/ctype_configure_char.cc
! 0a131cd58f6360e86bb3c954c14be2b0  libstdc++-v3/config/os/tpf/ctype_inline.h
! 5698807c3d70cf12dea6506951214630  libstdc++-v3/config/os/tpf/os_defines.h
! 4bf8ffe4dea1e23a7ef6c0f20758df10  libstdc++-v3/config/os/uclibc/ctype_base.h
! edc7775116acb850cdfb1d16c3aa6ac2  libstdc++-v3/config/os/uclibc/ctype_configure_char.cc
! a80dc6f5270e812e4be93e795b05f9d6  libstdc++-v3/config/os/uclibc/ctype_inline.h
! c164c601e952178705c49357c46929b1  libstdc++-v3/config/os/uclibc/os_defines.h
! 14b179e992db5eb6be3f5934ae7d6f8e  libstdc++-v3/config/os/vxworks/ctype_base.h
! 88829ac417697de6fbc89e7077167668  libstdc++-v3/config/os/vxworks/ctype_configure_char.cc
! 2e42197ec5d9567a84a1069dc2a1bab3  libstdc++-v3/config/os/vxworks/ctype_inline.h
! fcfb034722a9543debf35ed340716876  libstdc++-v3/config/os/vxworks/os_defines.h
! 0c0b8fb17fa8a287ffb559a8aef10b8e  libstdc++-v3/configure
! afd3542840f88b3693c8a7c78a8e6a12  libstdc++-v3/configure.ac
  6f48d91af78c16e62f258e7bedec5125  libstdc++-v3/configure.host
! 450cc52f6f6f0abf59940662504c450e  libstdc++-v3/crossconfig.m4
! aedbb1de1dc942434f2d23b8971c0b6f  libstdc++-v3/doc/Makefile.am
! f2586e13ea278d1f5cb3ffccc9efc110  libstdc++-v3/doc/Makefile.in
  3f7ff07f68cc7610addc1921bc125548  libstdc++-v3/doc/doxygen/Intro.3
! 8cd134670f5092cbc6540d6789acc229  libstdc++-v3/doc/doxygen/doxygroups.cc
  520db39aef0e2a59418132af88b897ed  libstdc++-v3/doc/doxygen/mainpage.html
  f298475c719652bf6b563563d90f327a  libstdc++-v3/doc/doxygen/stdheader.cc
  1273764cd133c402d2d3f22cf2913af5  libstdc++-v3/doc/doxygen/tables.html
! 0f9fb05f8d743e0b6eb891e1200574e5  libstdc++-v3/doc/doxygen/user.cfg.in
  66e139590a163a3e9d632f33fbe1d1b3  libstdc++-v3/doc/html/README
  c68ff21babfa14f20b98e36a2c808418  libstdc++-v3/doc/html/api.html
! 08920438eea18325b4bfdf979379ff66  libstdc++-v3/doc/html/bk02.html
  47886ba7da131bf3cbf81a27cada5f6f  libstdc++-v3/doc/html/bk03.html
! 4fa64b0e3aa46e2dff08dec622544941  libstdc++-v3/doc/html/faq.html
  1ae70f0bf94464b036515d333fff8ab2  libstdc++-v3/doc/html/images/confdeps.png
  d7f63b43e9f4c39cf71de7585de522ee  libstdc++-v3/doc/html/images/pbds_balls_and_bins.png
  22eedc841676a98f8ae8b95131ac4d7e  libstdc++-v3/doc/html/images/pbds_binary_priority_queue_int_push.png
*************** d7249eb4d31bd107d0b09ea3c80cb723  libstd
*** 104829,104862 ****
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 0abbf1fe5f3d6f6f18c461729c001310  libstdc++-v3/doc/html/index.html
! a209ef6bf8db1505797bd1dc63bd3b61  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! f733cdb9b83f2f9d3cb2218dd6c95ec9  libstdc++-v3/doc/html/manual/api.html
! 397d795e4bc3a6ce5274efcf5484209e  libstdc++-v3/doc/html/manual/appendix.html
! 9fecd7dab1bd0d46e97d36cded231ebe  libstdc++-v3/doc/html/manual/appendix_contributing.html
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 0a2d7fa79ca1803ba675257d54f5cdf2  libstdc++-v3/doc/html/manual/appendix_porting.html
! 88601e29445579d77cd6a3a88c8df909  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
  d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! 2741fd04fa6be9e2916e02d218111692  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! 3216f881771cf6846b27f28144bb32d9  libstdc++-v3/doc/html/manual/configure.html
  af4e79b9e55fd023eeb0459df34a4a82  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
! f71d3ed5d8c1753572ba02518e3744a9  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  90b457b0d4240ee5b826a815bcd90912  libstdc++-v3/doc/html/manual/debug_mode_design.html
  397ce9357678670b7c451c92eab7cb57  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
! f94c6123cd922b92f4f2b6a80705ec16  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7f6c5a9eb000f65ee1888d459beb9dd5  libstdc++-v3/doc/html/manual/diagnostics.html
! f1cca6d534c470a60343b0c88f4b5c4a  libstdc++-v3/doc/html/manual/documentation_hacking.html
  44375d933be3e667b4c31334c041decb  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
--- 112937,112970 ----
  1d86b338a316806c80b250eb132ac6dd  libstdc++-v3/doc/html/images/pbds_tree_text_lor_find.png
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/html/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/html/images/pbds_update_seq_diagram.png
! 4bb8af3ced69d53e356f904b6e6be4ff  libstdc++-v3/doc/html/index.html
! f3f88657a3904cb7e0c5ae4189581856  libstdc++-v3/doc/html/manual/abi.html
  4ce10e27356ac31a5b7962aecbeb3638  libstdc++-v3/doc/html/manual/algorithms.html
! 183f181dd18f0089f247f9e5188adbe4  libstdc++-v3/doc/html/manual/api.html
! 7313e97fae5e735a3cb50b92bf3f7785  libstdc++-v3/doc/html/manual/appendix.html
! 2b187a5e453d470d2cd19fb657d91539  libstdc++-v3/doc/html/manual/appendix_contributing.html
  23038a3eb57967596dd7dc4f944e55e6  libstdc++-v3/doc/html/manual/appendix_free.html
  7bedd2c8f6a4683546db552dc3e8261f  libstdc++-v3/doc/html/manual/appendix_gfdl.html
  502f9b7267830b21cb88745d060faacf  libstdc++-v3/doc/html/manual/appendix_gpl.html
! 52cc877635ca261941c7f9c120e8d5d8  libstdc++-v3/doc/html/manual/appendix_porting.html
! ac3612f72ad76b3796526d161b19db59  libstdc++-v3/doc/html/manual/associative.html
  b8ac9fc2f2cfcaed0450c79e2fb01569  libstdc++-v3/doc/html/manual/atomics.html
  d30e8a474595941b24a6493ad08f78d9  libstdc++-v3/doc/html/manual/backwards.html
  c60c6ae778d5dedae24ac21abf948bdb  libstdc++-v3/doc/html/manual/bitmap_allocator.html
  3a3d01d1d9478286b8c505d1449531d4  libstdc++-v3/doc/html/manual/bitmap_allocator_impl.html
! 6095fbb12cc581b2614870b42ad0e8b0  libstdc++-v3/doc/html/manual/bugs.html
  cc3700f2fde50987f186f23abf98a7b1  libstdc++-v3/doc/html/manual/concept_checking.html
  f3a54a6315d716742603d33f454f2c19  libstdc++-v3/doc/html/manual/concurrency.html
! e4cdd4e1a1effbde9592f2647c93192b  libstdc++-v3/doc/html/manual/configure.html
  af4e79b9e55fd023eeb0459df34a4a82  libstdc++-v3/doc/html/manual/containers.html
  c7e40c1085e414b3b4d5896db4013205  libstdc++-v3/doc/html/manual/containers_and_c.html
! 2b78750eb3e29b38e12b7ed1ba8ee8b8  libstdc++-v3/doc/html/manual/debug.html
  1bd34529d162b6f3a08d5f2ea4943c6a  libstdc++-v3/doc/html/manual/debug_mode.html
  90b457b0d4240ee5b826a815bcd90912  libstdc++-v3/doc/html/manual/debug_mode_design.html
  397ce9357678670b7c451c92eab7cb57  libstdc++-v3/doc/html/manual/debug_mode_semantics.html
! 733f7a54643a02aed52d3287c0aab4b6  libstdc++-v3/doc/html/manual/debug_mode_using.html
  7f6c5a9eb000f65ee1888d459beb9dd5  libstdc++-v3/doc/html/manual/diagnostics.html
! 872fd1cdab6839a9e0003d2b6c4de908  libstdc++-v3/doc/html/manual/documentation_hacking.html
  44375d933be3e667b4c31334c041decb  libstdc++-v3/doc/html/manual/dynamic_memory.html
  55666dfa05ec7aae2596d6968f6fdb38  libstdc++-v3/doc/html/manual/errno.html
  e47e050922ad8c8f67f42be36ea507c4  libstdc++-v3/doc/html/manual/ext_algorithms.html
*************** afcc2751dae09e088abc1e3175cb94cc  libstd
*** 104865,104891 ****
  6ff2323d07ed91e8dec5a072df16f901  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  9eae121ff2ad3f2dd5a2748f87f9f530  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
  0597d03ff215b7f17e0240178c030166  libstdc++-v3/doc/html/manual/ext_containers.html
! 2388a381a3fca44bacf99a523f6e2bba  libstdc++-v3/doc/html/manual/ext_demangling.html
  05003e71d54cfdfd4c8291489f8ffa07  libstdc++-v3/doc/html/manual/ext_io.html
  44f8ef8b093904d418755d0e32d700b7  libstdc++-v3/doc/html/manual/ext_iterators.html
  8f3bd86e04d263ad87cc258c289aae6d  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
  5632eb8ef681cd35b41be7eb7a3d7a98  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
! 5c3d4b1da33055adb0a5fc9742fdbe19  libstdc++-v3/doc/html/manual/extensions.html
! 792387063cb26c7711919085d56706c2  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! 8e850cc861ea55b84a2722c696ee184a  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! 6201c72ac50b989374f36bd1c9bd65ba  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
  ae9b2e57903953c857a0a2314010036c  libstdc++-v3/doc/html/manual/license.html
  945f5ecd78f495a46c64b58665a37d69  libstdc++-v3/doc/html/manual/localization.html
  9d7282a3a92209b987a91b15973414af  libstdc++-v3/doc/html/manual/make.html
! 79ce8b8c8a55f8294be3f213331e0f5e  libstdc++-v3/doc/html/manual/memory.html
  c40a00e2cba07156a6bd77b14cccc2e4  libstdc++-v3/doc/html/manual/mt_allocator.html
  4934caabf7eef9ff3618e9ac17acba49  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  bdbb1ff20830123a43576a05081312f9  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
--- 112973,112999 ----
  6ff2323d07ed91e8dec5a072df16f901  libstdc++-v3/doc/html/manual/ext_concurrency_impl.html
  9eae121ff2ad3f2dd5a2748f87f9f530  libstdc++-v3/doc/html/manual/ext_concurrency_use.html
  0597d03ff215b7f17e0240178c030166  libstdc++-v3/doc/html/manual/ext_containers.html
! 3946985aede4994e9743b0f8d71b41ba  libstdc++-v3/doc/html/manual/ext_demangling.html
  05003e71d54cfdfd4c8291489f8ffa07  libstdc++-v3/doc/html/manual/ext_io.html
  44f8ef8b093904d418755d0e32d700b7  libstdc++-v3/doc/html/manual/ext_iterators.html
  8f3bd86e04d263ad87cc258c289aae6d  libstdc++-v3/doc/html/manual/ext_numerics.html
  6d380acac52eb8c888a54068e44b16ac  libstdc++-v3/doc/html/manual/ext_preface.html
  5632eb8ef681cd35b41be7eb7a3d7a98  libstdc++-v3/doc/html/manual/ext_sgi.html
  9b34310c7cb7faa4373ee6683678c457  libstdc++-v3/doc/html/manual/ext_utilities.html
! 9e255046a8ef2903114374ed06403045  libstdc++-v3/doc/html/manual/extensions.html
! 76cac108e21e304b7607196fb5245e00  libstdc++-v3/doc/html/manual/facets.html
  9b06f8b16b4ba69e1269f98bb22377f2  libstdc++-v3/doc/html/manual/fstreams.html
  b404abb1e78a27e8a8980eb14ec27bab  libstdc++-v3/doc/html/manual/generalized_numeric_operations.html
! a3858d043af99a73689f6db83b66ed57  libstdc++-v3/doc/html/manual/index.html
  8687facb6d19ccc2a663efbc50e745a1  libstdc++-v3/doc/html/manual/internals.html
! b1c1fa7bf6c8cbf798960537e735cf07  libstdc++-v3/doc/html/manual/intro.html
  46de5aefef02b8c599fc816bea53ae67  libstdc++-v3/doc/html/manual/io.html
  89dd67b210011f646675fa2ede886305  libstdc++-v3/doc/html/manual/io_and_c.html
  32f6d6929349f8f96de44fbdd842ed48  libstdc++-v3/doc/html/manual/iterators.html
  ae9b2e57903953c857a0a2314010036c  libstdc++-v3/doc/html/manual/license.html
  945f5ecd78f495a46c64b58665a37d69  libstdc++-v3/doc/html/manual/localization.html
  9d7282a3a92209b987a91b15973414af  libstdc++-v3/doc/html/manual/make.html
! 8b2787265d975e2eab0f3b9ca5f0dd65  libstdc++-v3/doc/html/manual/memory.html
  c40a00e2cba07156a6bd77b14cccc2e4  libstdc++-v3/doc/html/manual/mt_allocator.html
  4934caabf7eef9ff3618e9ac17acba49  libstdc++-v3/doc/html/manual/mt_allocator_design.html
  bdbb1ff20830123a43576a05081312f9  libstdc++-v3/doc/html/manual/mt_allocator_ex_multi.html
*************** ecf6c505a75fa3dff283b1fefdda671b  libstd
*** 104900,104906 ****
  e2c97bcb68cbed2f84d4599f561c91d0  libstdc++-v3/doc/html/manual/parallel_mode_test.html
  935f34a82f6ef3b0dc60b8d3a06563ae  libstdc++-v3/doc/html/manual/parallel_mode_using.html
  9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
! 10761aeffaaab6e15c4e734c9f3f5332  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
  d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
--- 113008,113014 ----
  e2c97bcb68cbed2f84d4599f561c91d0  libstdc++-v3/doc/html/manual/parallel_mode_test.html
  935f34a82f6ef3b0dc60b8d3a06563ae  libstdc++-v3/doc/html/manual/parallel_mode_using.html
  9979d7cb4d5cf7e6587881acebf84a4d  libstdc++-v3/doc/html/manual/policy_based_data_structures_test.html
! 6e9d39694dfe3eb4d8ac9ff0d499d99a  libstdc++-v3/doc/html/manual/policy_data_structures.html
  84c9bc8c54a3de8b4d90dfe3b438bc43  libstdc++-v3/doc/html/manual/policy_data_structures_ack.html
  d973b7693c2b6c717784b81d549c61e5  libstdc++-v3/doc/html/manual/policy_data_structures_design.html
  9acf818681732e9c264224c86b5ffdb3  libstdc++-v3/doc/html/manual/policy_data_structures_using.html
*************** ffceba0f3c20f451f9753c101c0fa634  libstd
*** 104915,104945 ****
  f82628740b7b95e95da49ce234a05bca  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! 0567c4560dd73b63ee30617758a1be5e  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  47e6a6ef4752e7c7e3ecb2a4948a7514  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
  52f0c68b15c7a2b6e098bcfb8da0094b  libstdc++-v3/doc/html/manual/support.html
  fcdceeabf3a95117ea22e93a0354e564  libstdc++-v3/doc/html/manual/termination.html
! e19e711d0b369090f4782ac1fc0792bd  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
! fc95274c2a36efc3d0f39217d38a914b  libstdc++-v3/doc/html/manual/using.html
  a98d94ba8ccfb620e98ebfe01192e61e  libstdc++-v3/doc/html/manual/using_concurrency.html
  79fb9de4a4c89a913a76e1828500499d  libstdc++-v3/doc/html/manual/using_dual_abi.html
! 4868e3591133577974ca85a537dbd8a0  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! b9abf80a75c223a9423b212d20240602  libstdc++-v3/doc/html/manual/using_exceptions.html
  8fc6625206a4feba33ced5fa38ab3af8  libstdc++-v3/doc/html/manual/using_headers.html
! 2286b8839a9804d12b64eba818f0269c  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  d881fcffb799c09a28d8174ccb1326a2  libstdc++-v3/doc/html/manual/utilities.html
  ccbc0492a648982f2dc225595bdbc567  libstdc++-v3/doc/xml/api.xml
! 61748d51ede56b338ef61ce9232c23e0  libstdc++-v3/doc/xml/authors.xml
  5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
  44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
  011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! 4e6a47132fecfe86bbc1dd045cbbd42b  libstdc++-v3/doc/xml/faq.xml
  ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
--- 113023,113053 ----
  f82628740b7b95e95da49ce234a05bca  libstdc++-v3/doc/html/manual/source_code_style.html
  f875f3f4cddfe4fee6aff2308ccb4563  libstdc++-v3/doc/html/manual/source_design_notes.html
  391422dd4f4cdbd4d764a952a0f345e6  libstdc++-v3/doc/html/manual/source_organization.html
! 768a1bb6b726c39f73a860785d5a4d89  libstdc++-v3/doc/html/manual/status.html
  ea0c531c09fa230f346f8ba700961e4a  libstdc++-v3/doc/html/manual/std_contents.html
  dbb5f81a9e8864374fbb835eaa4e8b0d  libstdc++-v3/doc/html/manual/streambufs.html
  47e6a6ef4752e7c7e3ecb2a4948a7514  libstdc++-v3/doc/html/manual/strings.html
  4fceea62121ba1fe214414a7506d385e  libstdc++-v3/doc/html/manual/stringstreams.html
  52f0c68b15c7a2b6e098bcfb8da0094b  libstdc++-v3/doc/html/manual/support.html
  fcdceeabf3a95117ea22e93a0354e564  libstdc++-v3/doc/html/manual/termination.html
! e83103446a003be8efeaba99fcd84194  libstdc++-v3/doc/html/manual/test.html
  c39b927efcec5ac84139c1490c8ef320  libstdc++-v3/doc/html/manual/traits.html
  530b96535baacfe35df2e65f9dfe7efc  libstdc++-v3/doc/html/manual/unordered_associative.html
! 22ac593adaa2927f35783feea96a1677  libstdc++-v3/doc/html/manual/using.html
  a98d94ba8ccfb620e98ebfe01192e61e  libstdc++-v3/doc/html/manual/using_concurrency.html
  79fb9de4a4c89a913a76e1828500499d  libstdc++-v3/doc/html/manual/using_dual_abi.html
! 6b216fcce25cefeab611e43ed77fd12e  libstdc++-v3/doc/html/manual/using_dynamic_or_shared.html
! 90f1ace0e51461f3caa15a913228c521  libstdc++-v3/doc/html/manual/using_exceptions.html
  8fc6625206a4feba33ced5fa38ab3af8  libstdc++-v3/doc/html/manual/using_headers.html
! c1e8d8c0d84363807d41edeb82e9dbfc  libstdc++-v3/doc/html/manual/using_macros.html
  ccc3b1a320ccc49a977c80546610195b  libstdc++-v3/doc/html/manual/using_namespaces.html
  d881fcffb799c09a28d8174ccb1326a2  libstdc++-v3/doc/html/manual/utilities.html
  ccbc0492a648982f2dc225595bdbc567  libstdc++-v3/doc/xml/api.xml
! 8059eb81f5540dc3ae678ac09e1f3159  libstdc++-v3/doc/xml/authors.xml
  5906074c27c57c65b220c35bbcb2c5ec  libstdc++-v3/doc/xml/book.txml
  44d3a92b83abfb18efac80519c79b44c  libstdc++-v3/doc/xml/chapter.txml
  011b8e6a5442e4dc08f02e7295b644a3  libstdc++-v3/doc/xml/class.txml
! 3dd8e992a5c3e037b8c5d81ab8d2dd47  libstdc++-v3/doc/xml/faq.xml
  ea77580f7e81e2c49aea3f425c01ee2b  libstdc++-v3/doc/xml/gnu/fdl-1.3.xml
  56bb32e9ab9358834c5f8eca2cd0e969  libstdc++-v3/doc/xml/gnu/gpl-3.0.xml
  18a6390297702ec8fd75cbcc525d2005  libstdc++-v3/doc/xml/images/confdeps.dot
*************** cc132f90a00a3ca05f64b578f9e332aa  libstd
*** 105119,105128 ****
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! d26e1f333b8bcda0e09acbed5b3475bf  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
  14c656cb14d8e0a60b8817d8934d7766  libstdc++-v3/doc/xml/manual/allocator.xml
! 955fe25d6d9b0ad80a7234695a81a794  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
  0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
--- 113227,113236 ----
  f63bfdc03ba2b82c74864f02206d7c52  libstdc++-v3/doc/xml/images/pbds_tree_text_lor_find.svg
  33bc39e8f2d47f3d490d7ca7d4832b43  libstdc++-v3/doc/xml/images/pbds_trie_node_updator_policy_cd.png
  df705f3839120dcb896e9839cf3404d0  libstdc++-v3/doc/xml/images/pbds_update_seq_diagram.png
! 89ae3aa464ea42b580c5daf47b65a485  libstdc++-v3/doc/xml/manual/abi.xml
  c1d775ba87be90b85044162eab59a66c  libstdc++-v3/doc/xml/manual/algorithms.xml
  14c656cb14d8e0a60b8817d8934d7766  libstdc++-v3/doc/xml/manual/allocator.xml
! 90fdf7df16449b79819bf6e3219cc5d2  libstdc++-v3/doc/xml/manual/appendix_contributing.xml
  11e0fd62db5b93db462f3c54750904ec  libstdc++-v3/doc/xml/manual/appendix_free.xml
  0e37b1b056c89ad8cd7ef98f9924284c  libstdc++-v3/doc/xml/manual/appendix_porting.xml
  5139cfc8fdaabd93b5aa7362de789702  libstdc++-v3/doc/xml/manual/atomics.xml
*************** e184d827d7fb559037041e81118936cb  libstd
*** 105133,105149 ****
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  86f27306f8b76aebd69ea92641fd2c94  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! d46239fa5428398e5f3b540396f51e6b  libstdc++-v3/doc/xml/manual/configure.xml
! b7a892b2e432f52274c482549c3264a2  libstdc++-v3/doc/xml/manual/containers.xml
! 18a1ebf5d656fe7bf648dd0489546d33  libstdc++-v3/doc/xml/manual/ctype.xml
! 1ef2d3bb759e6f6de762e1c79ff08030  libstdc++-v3/doc/xml/manual/debug.xml
! c7064e3c477845a150f6e575e6babf6e  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
! 561ce4bba87e35c92c47d95599ca9d9b  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! 7bcbf687f787f136ad31dd3f1982077d  libstdc++-v3/doc/xml/manual/evolution.xml
! 14742e66a2ac01343ef60e87d06d05ff  libstdc++-v3/doc/xml/manual/extensions.xml
  7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
! c7c48dc77f77e828f4b63b691a978e4c  libstdc++-v3/doc/xml/manual/intro.xml
  93c3158fe28bdfbbf03dd039cc4e79a2  libstdc++-v3/doc/xml/manual/io.xml
  5ac71d67674ea22bcf1e54043bf8e99d  libstdc++-v3/doc/xml/manual/iterators.xml
  b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
--- 113241,113257 ----
  8f13cae7ea80bc018b87b4ff8de7e3cf  libstdc++-v3/doc/xml/manual/codecvt.xml
  af3361d0d0af961859ec0346c38ac8c8  libstdc++-v3/doc/xml/manual/concurrency.xml
  86f27306f8b76aebd69ea92641fd2c94  libstdc++-v3/doc/xml/manual/concurrency_extensions.xml
! eba3281220cf916eb5f545e0453971f5  libstdc++-v3/doc/xml/manual/configure.xml
! 0af07cc2460e288292186ea8149169ee  libstdc++-v3/doc/xml/manual/containers.xml
! d08c687d9520b2f9d8dd6d973cca9e6a  libstdc++-v3/doc/xml/manual/ctype.xml
! abf083b50c6a5992ed45fd74c564ce42  libstdc++-v3/doc/xml/manual/debug.xml
! c38bf467401b65722356772cdf4d064b  libstdc++-v3/doc/xml/manual/debug_mode.xml
  f320f25003678cca910f09ba54c923fc  libstdc++-v3/doc/xml/manual/diagnostics.xml
! c7467f13981c47fc740c948b16a42a53  libstdc++-v3/doc/xml/manual/documentation_hacking.xml
! 7278785ac3d55d864db8169d6b75c8d6  libstdc++-v3/doc/xml/manual/evolution.xml
! 137276d6eb0bbaf6563b8319770dc747  libstdc++-v3/doc/xml/manual/extensions.xml
  7f1864c7f3c3b2bfde84b7086be97ca7  libstdc++-v3/doc/xml/manual/internals.xml
! 7dd90360d3e28e9f8aa299d81e4234c7  libstdc++-v3/doc/xml/manual/intro.xml
  93c3158fe28bdfbbf03dd039cc4e79a2  libstdc++-v3/doc/xml/manual/io.xml
  5ac71d67674ea22bcf1e54043bf8e99d  libstdc++-v3/doc/xml/manual/iterators.xml
  b9c8759ff9b60e09bd2875420a55cd31  libstdc++-v3/doc/xml/manual/locale.xml
*************** b00f98f125f6186c369ce588d795f978  libstd
*** 105152,106210 ****
  cd6d12f87a30d3b85d80833476c19995  libstdc++-v3/doc/xml/manual/mt_allocator.xml
  42b8355117a7bd9aa755048290e70d2c  libstdc++-v3/doc/xml/manual/numerics.xml
  7edd591e15a0bbc76d58e9edcb7c28d1  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! b4f22a512ad29af70c76d4e459bdf2a8  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
! d766137e6e226eaf2c354f95fd9c7274  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  f25986e96331b9ee671b4fe62ab33a1c  libstdc++-v3/doc/xml/manual/prerequisites.xml
! cec5c5415c371a664adb0490e2571c3c  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! 9a8f1a85034e6fe72b02302051aa7af9  libstdc++-v3/doc/xml/manual/spine.xml
! 3a11d8e8ab3c584eff4a1db8c89ebb6c  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! 6ee153ca7e427e35886ef886036025a1  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! 25b84ee8640ad2ff1c31a6404175c003  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! 1d6d1225c31632fe76540e978d0ec065  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! e5396ebd0700ccc6890689e6653ca20e  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! 0c81b681c42b9213a5b7b6368df3e5f3  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! 7ab71114868b2646704eea5f5e7b1006  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! f12dd94d3ab272a7ed475798c7ce8a2d  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  49334f70b9df9a3f9b81e04a418e8066  libstdc++-v3/doc/xml/manual/strings.xml
  2b80feb1b53a8d0895a292620ec430b2  libstdc++-v3/doc/xml/manual/support.xml
! 5a89da07906610f85971c9faa717428e  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! 4755176d95bef79bf9412c63b1cdf395  libstdc++-v3/doc/xml/manual/using.xml
! 30ec356feba73e85c6cef4c27dbb372e  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  74a5acaa32b3d223bd413c1bb5b69ac6  libstdc++-v3/doc/xml/manual/utilities.xml
! bea338f191a4667e20c7800cc6e08c93  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! d7fa4da355c34d2a2d21cff4143b926f  libstdc++-v3/include/Makefile.am
! f405d265bf2ae2b1dc65804f90517ae6  libstdc++-v3/include/Makefile.in
! 890ccb6d9c249c324d5544704ac517fe  libstdc++-v3/include/backward/auto_ptr.h
! 7888a26e5e4a344cb3aee10fe9742d67  libstdc++-v3/include/backward/backward_warning.h
! 6b1e3f2a153145ca36e79c175901ed4a  libstdc++-v3/include/backward/binders.h
! 11289cccffdd5941fbc099dfde3bf5e7  libstdc++-v3/include/backward/hash_fun.h
! 48211d63fa9f0356563dddd234cc46f9  libstdc++-v3/include/backward/hash_map
! c182ef70f8140930d68b4febf211cd38  libstdc++-v3/include/backward/hash_set
! 0786c5fabbdc02e1b5d7f5941b1036f0  libstdc++-v3/include/backward/hashtable.h
! e87dd399a9a3274bd93b51404f64d0bf  libstdc++-v3/include/backward/strstream
! dd3f7f524033a844f5bb1056a873b4ff  libstdc++-v3/include/bits/algorithmfwd.h
! 7217663cbd5e0a5e2111f3fec04713c8  libstdc++-v3/include/bits/align.h
! fd441eaab0a8965f7012f98a3edcbb86  libstdc++-v3/include/bits/alloc_traits.h
! 6c08ea97cd0ca641b7c6a4e7a687cd0e  libstdc++-v3/include/bits/allocated_ptr.h
! 6fa856a93062ce2b39cf0c9a3a6a3468  libstdc++-v3/include/bits/allocator.h
! a1f49462067f381335c5712907aac440  libstdc++-v3/include/bits/atomic_base.h
! 7d8c351bca946a7fab5426d823e9989f  libstdc++-v3/include/bits/atomic_futex.h
! 2bc333d129d557e353930e14487d1089  libstdc++-v3/include/bits/atomic_timed_wait.h
! 489fd4d49037e35166e985b284c2978e  libstdc++-v3/include/bits/atomic_wait.h
! 1e7a7ec7b70380fec2fae7859f444a62  libstdc++-v3/include/bits/basic_ios.h
! 5138e57b1c4bb47b788cf001a00d5e83  libstdc++-v3/include/bits/basic_ios.tcc
! 7d93658c6f3de21a1aec0f646798f8f1  libstdc++-v3/include/bits/basic_string.h
! 55116d4c1948fa70cbdfabfbe6155c2a  libstdc++-v3/include/bits/basic_string.tcc
! 29b717115b885d97e144509c7987d132  libstdc++-v3/include/bits/boost_concept_check.h
! b812f02d862ef0991e7444eeb075e24b  libstdc++-v3/include/bits/c++0x_warning.h
! 730a9760f569df98df8fd3fd78961745  libstdc++-v3/include/bits/c++config
! 4252edd3eb888fe8d8bdc2933cf1705a  libstdc++-v3/include/bits/char_traits.h
! 1e60fddeaaeb6880b640941bee6ce9ea  libstdc++-v3/include/bits/charconv.h
! 18c63235e04915c5a2d69229494f960e  libstdc++-v3/include/bits/chrono.h
! 3e9cf75ed9ed37659eac8d4ff38d8f97  libstdc++-v3/include/bits/codecvt.h
! 07d6e1893b90a983d593ee7fb21310ed  libstdc++-v3/include/bits/concept_check.h
! ae014e94b9e9dc6a49da575f36fc584c  libstdc++-v3/include/bits/cow_string.h
! 834baaab8c868bfccd5bf4fd671ff55b  libstdc++-v3/include/bits/cpp_type_traits.h
! eedc4c8df05c6edc00d2429148559730  libstdc++-v3/include/bits/deque.tcc
! e2975f99f1320ed7aea974ab28e63548  libstdc++-v3/include/bits/enable_special_members.h
! 788dea7a6d93979a85a19851eabfdd18  libstdc++-v3/include/bits/erase_if.h
! d8fee3f5100fd27cac74eb8d143c125e  libstdc++-v3/include/bits/forward_list.h
! 6a9e63a5a5b9d8d66230e7498a13a8ac  libstdc++-v3/include/bits/forward_list.tcc
! 4228869b139d4cd463c5d2e53aa84cb4  libstdc++-v3/include/bits/fs_dir.h
! c754907ea8fca8ebfbbd704b0a111dd0  libstdc++-v3/include/bits/fs_fwd.h
! cfd0f2b837bcd99a02d5c7582c18aca4  libstdc++-v3/include/bits/fs_ops.h
! b7f5a333df9e2418d926faf3df6009cb  libstdc++-v3/include/bits/fs_path.h
! 7907281755e6b0faa1dfdce636aaa01f  libstdc++-v3/include/bits/fstream.tcc
! a363406ed41198146320f1e077ba3f30  libstdc++-v3/include/bits/functexcept.h
! 69623b8458c64a8fc398295e296f4d44  libstdc++-v3/include/bits/functional_hash.h
! 3461cc1f731e7f5eab3dfae226db37ea  libstdc++-v3/include/bits/gslice.h
! 60fe073f9f69ebd21323b1be1c45bbda  libstdc++-v3/include/bits/gslice_array.h
! da17bc523256518623e8ec71acb3886d  libstdc++-v3/include/bits/hashtable.h
! a6fcc0732f7e61f215e9ca88f9c795f6  libstdc++-v3/include/bits/hashtable_policy.h
! 84d05ba81a32deefa8dacfc3c9e0166f  libstdc++-v3/include/bits/indirect_array.h
! 36f0ed82567fccf4c612b30c6fb08084  libstdc++-v3/include/bits/invoke.h
! a45e2b42f8a406e1926e26b6fa5116e0  libstdc++-v3/include/bits/ios_base.h
! f03c1a2c2fc0e1da425a2caed830e87f  libstdc++-v3/include/bits/istream.tcc
! 8e327d21f3bca1c90376c5b4fd9de3dc  libstdc++-v3/include/bits/iterator_concepts.h
! b4bd40923ef5db1adecc4c8cae565963  libstdc++-v3/include/bits/list.tcc
! a9565f66bcc3c46bbc030e0ef2ab1ed9  libstdc++-v3/include/bits/locale_classes.h
! 1bfd7e25c7d7f41c84a0c4b01b46e8a4  libstdc++-v3/include/bits/locale_classes.tcc
! 33034d2531967431e8e609ac63cd3573  libstdc++-v3/include/bits/locale_conv.h
! 369a81d30cd25cbb7659a9ec6d177e9f  libstdc++-v3/include/bits/locale_facets.h
! e93c291bfe4f08977cfa027347fc8b2b  libstdc++-v3/include/bits/locale_facets.tcc
! f1d8719a6bb6812811f48336b5ce7dd0  libstdc++-v3/include/bits/locale_facets_nonio.h
! 5478e278655cccf670a80d41a552244e  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! 2ad3f645715b697f9f022b09b5fe7ede  libstdc++-v3/include/bits/localefwd.h
! 80f3e9f5844d45af4e2bf115e4bb5b7a  libstdc++-v3/include/bits/mask_array.h
! 1276100cbeda9fc3ee6dc1417c40a8db  libstdc++-v3/include/bits/max_size_type.h
! e7ba553e9ab184f5bd68cc7606d816d2  libstdc++-v3/include/bits/memoryfwd.h
! 4adb1ef84c4d419df94f87a6e42222cc  libstdc++-v3/include/bits/mofunc_impl.h
! 0c3876f398d8dc449bea393734a87ee1  libstdc++-v3/include/bits/move.h
! 6c3144ba196d4dbb3fabe7a3235678a8  libstdc++-v3/include/bits/move_only_function.h
! 6b069d101319ece6de3732b658fb1d77  libstdc++-v3/include/bits/new_allocator.h
! 27c968d51ee063ecd3245faa3a6a77b4  libstdc++-v3/include/bits/node_handle.h
! 5abcc928d2998fbddbfd8a2b8cd5da37  libstdc++-v3/include/bits/ostream.tcc
! 02068878ffa064cf4d81d74fcfa8706a  libstdc++-v3/include/bits/ostream_insert.h
! 0dd1b9e9caf16df51df5b5d72c3c5a88  libstdc++-v3/include/bits/parse_numbers.h
! 093924672c05904d8e0e1ca87cd021b0  libstdc++-v3/include/bits/postypes.h
! a42f8fd86dfe94e0818cf65d60c0c495  libstdc++-v3/include/bits/predefined_ops.h
! 9b5bf297da766c3f1b9b4657c4f62700  libstdc++-v3/include/bits/ptr_traits.h
! 0db2d39069ef28c3a38688814e808f30  libstdc++-v3/include/bits/quoted_string.h
! 2bc19f6eddd64dbdec7b425c2c54f1d7  libstdc++-v3/include/bits/random.h
! a23433deaf6738d4f62908ffa414c4fa  libstdc++-v3/include/bits/random.tcc
! 1127c7558c4cba717dab561411781868  libstdc++-v3/include/bits/range_access.h
! a93916f72be5983f50e58dcf45bebc66  libstdc++-v3/include/bits/ranges_algo.h
! a07b56506a975fec3f54c795674825c6  libstdc++-v3/include/bits/ranges_algobase.h
! a45a0035a2ea36833ccd76f01c3674ca  libstdc++-v3/include/bits/ranges_base.h
! 82c550495df206d72b5fd7655144052f  libstdc++-v3/include/bits/ranges_cmp.h
! 154dfd0c70357290b292fa1de3b6b20d  libstdc++-v3/include/bits/ranges_uninitialized.h
! f64c8eee99550f162748196f92025465  libstdc++-v3/include/bits/ranges_util.h
! 45e14a741a7e9397f265a760cdd23240  libstdc++-v3/include/bits/refwrap.h
! 9ff8207cfeb01f595d69b4b91433743c  libstdc++-v3/include/bits/regex.h
! afdda3aa1dbf0e29afa3e1195f5b261f  libstdc++-v3/include/bits/regex.tcc
! ec2225300635dd05dcd43d4029bc15aa  libstdc++-v3/include/bits/regex_automaton.h
! 56f4b806c3e207e0d4d03ff274e75416  libstdc++-v3/include/bits/regex_automaton.tcc
! abc4868fa7fa69f1ec4bfe9357086f37  libstdc++-v3/include/bits/regex_compiler.h
! 77aa8cec8aa069c99dfafcdc3b0dd2db  libstdc++-v3/include/bits/regex_compiler.tcc
! 3adc887953dc0fe5a5bea29e5a6c58d0  libstdc++-v3/include/bits/regex_constants.h
! 6588fbd23b987a356107a822db1186a2  libstdc++-v3/include/bits/regex_error.h
! 9e790bedbc4477ba162c19583cac5d44  libstdc++-v3/include/bits/regex_executor.h
! fa2cbcf47f72200af80a8827b2ec5216  libstdc++-v3/include/bits/regex_executor.tcc
! aba82e3133a961d21651b1e236e83955  libstdc++-v3/include/bits/regex_scanner.h
! 84c97e63ca73478752f1837edd8be39e  libstdc++-v3/include/bits/regex_scanner.tcc
! 56efa2d600a18ebb013d6683df7d5139  libstdc++-v3/include/bits/semaphore_base.h
! 88e13dbb751546443834154ec05bc922  libstdc++-v3/include/bits/shared_ptr.h
! 0055e71b0787dcaf933281ad3214e716  libstdc++-v3/include/bits/shared_ptr_atomic.h
! e2b63a5b49d3c553c17b8b8d80272b6f  libstdc++-v3/include/bits/shared_ptr_base.h
! b830e239906baa21efc71bb6449baa83  libstdc++-v3/include/bits/slice_array.h
! ba8703462210c53c0fea444a0d04e75f  libstdc++-v3/include/bits/specfun.h
! a4f0ee46114c7eb871e66f07be86d815  libstdc++-v3/include/bits/sstream.tcc
! f9d284276be9b9f792be818fe5ee534e  libstdc++-v3/include/bits/std_abs.h
! 031acde85a8896c1ea19c4da889cae8c  libstdc++-v3/include/bits/std_function.h
! 0c1631ea9c6b77a42132f78e7028b526  libstdc++-v3/include/bits/std_mutex.h
! 00e5ff3818ba0c95af2ad1be864fe0fc  libstdc++-v3/include/bits/std_thread.h
! 1f80f17ff9e3b6ed9cc1dacee5649bef  libstdc++-v3/include/bits/stl_algo.h
! 1a6791fdba310103ceb325f334cf0b22  libstdc++-v3/include/bits/stl_algobase.h
! 7659d664f0aa080aa638ffb1531778da  libstdc++-v3/include/bits/stl_bvector.h
! ceba413818ae9b0f6742666be9b2ed67  libstdc++-v3/include/bits/stl_construct.h
! 3dc1cd32df14abc94da494258ef5ae60  libstdc++-v3/include/bits/stl_deque.h
! 63fc7573f04ccb8f515906b34e2fa890  libstdc++-v3/include/bits/stl_function.h
! 6af963f90d2b295e1816b415f43c6e38  libstdc++-v3/include/bits/stl_heap.h
! bea55f548d6c981fe14b47f481b3c513  libstdc++-v3/include/bits/stl_iterator.h
! 38b2a8b62aa295bca5f77a15903f4deb  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! bce36b604a747a8f3a8ce8c38a7ac225  libstdc++-v3/include/bits/stl_iterator_base_types.h
! 73516b0fa035db1e298f5594effbdd24  libstdc++-v3/include/bits/stl_list.h
! f18c995445c8115b28fe5595fc6ef3fd  libstdc++-v3/include/bits/stl_map.h
! 77aa4b615a1562873ee78d8dd6ebcd56  libstdc++-v3/include/bits/stl_multimap.h
! 84946df670c054babd87fa8079a34db7  libstdc++-v3/include/bits/stl_multiset.h
! 36db7ae47394e395415a70ef7cf15fa3  libstdc++-v3/include/bits/stl_numeric.h
! f2351ea411e0407b28929ea2397f6e3f  libstdc++-v3/include/bits/stl_pair.h
! 7e6a9bfd3a1772b29829e5f721cfd888  libstdc++-v3/include/bits/stl_queue.h
! ca3e0abe0e9c127479cabae81f09acc0  libstdc++-v3/include/bits/stl_raw_storage_iter.h
! 0ec171924cece31342e93ace4c4449fa  libstdc++-v3/include/bits/stl_relops.h
! 4935a22000c5af7a654163249f54cba9  libstdc++-v3/include/bits/stl_set.h
! fe9061931e58eb13610622c957ad8bfe  libstdc++-v3/include/bits/stl_stack.h
! 469a3342893403dff08e484a26d87835  libstdc++-v3/include/bits/stl_tempbuf.h
! 5f5a8828bbc35607378dd2ff4fc2fcb0  libstdc++-v3/include/bits/stl_tree.h
! 76b804c7705a952d454f754eea890c01  libstdc++-v3/include/bits/stl_uninitialized.h
! 8db44c3d22440641ac1ba040d9370a58  libstdc++-v3/include/bits/stl_vector.h
! a04724c39d37f5ef63faf8eb2f98eb63  libstdc++-v3/include/bits/stream_iterator.h
! b0fcb882a7290e08ca43e14029ec35de  libstdc++-v3/include/bits/streambuf.tcc
! 0bc57a4d1e53acce822697a7a2af289e  libstdc++-v3/include/bits/streambuf_iterator.h
! 4b309c48dd81f69fe08fb04bf101abca  libstdc++-v3/include/bits/string_view.tcc
! 26f486326c4d6cb8b037baaec6a47af8  libstdc++-v3/include/bits/stringfwd.h
! 2a83d892a641f4d5d627db796cc45fe5  libstdc++-v3/include/bits/this_thread_sleep.h
! 1aa49350032bcc3a2864897c5791200a  libstdc++-v3/include/bits/uniform_int_dist.h
! fcb492cbf26ebf3de0d70188eeb44113  libstdc++-v3/include/bits/unique_lock.h
! 5afa5b43c03beeacf055d44cdc4bb0e6  libstdc++-v3/include/bits/unique_ptr.h
! 66681adabd3b1d78b8c1598cf4ef6582  libstdc++-v3/include/bits/unordered_map.h
! 2d0f973ffc37cccad521ff7eb0b346d0  libstdc++-v3/include/bits/unordered_set.h
! 8fb0bb8a0e08dbc54c6967e43841de9b  libstdc++-v3/include/bits/uses_allocator.h
! 60c259a954da69ce68d06a15ba7b2edb  libstdc++-v3/include/bits/uses_allocator_args.h
! 3f505dbdde1dde722e40ea133f643c4f  libstdc++-v3/include/bits/utility.h
! 092d0d9f5c5948cb4e5d52b7a5f06923  libstdc++-v3/include/bits/valarray_after.h
! d1794ea86712506af9ad861dfbec9f9b  libstdc++-v3/include/bits/valarray_array.h
! 39a6066d7b092ff20a6731264df6ca7e  libstdc++-v3/include/bits/valarray_array.tcc
! 8c5f5a94b6e365602535c6de12c20595  libstdc++-v3/include/bits/valarray_before.h
! 702d153ab458d0b16d6f5b626a017649  libstdc++-v3/include/bits/vector.tcc
! 0775201d7ebadd93516a35c9004f0c37  libstdc++-v3/include/c/cassert
! 58cfd36e35d71475b967d7abe4ab0866  libstdc++-v3/include/c/cctype
! 2d0cb93589c640886a6d6df21d26cfc1  libstdc++-v3/include/c/cerrno
! 69553619fac907e21da92214bf22b3fc  libstdc++-v3/include/c/cfloat
! 8d6d33240ebdbe614286faf694359b48  libstdc++-v3/include/c/ciso646
! 8880b3aa727ea05e2d7445a7a30250a1  libstdc++-v3/include/c/climits
! ad3f65846920699d230f27104923146c  libstdc++-v3/include/c/clocale
! 072608f185270c81749ea86b1ac7b103  libstdc++-v3/include/c/cmath
! 0b2c50197e5998007759027669226a1f  libstdc++-v3/include/c/csetjmp
! 48c27720d9ce19c87a0816fd9dc36a1b  libstdc++-v3/include/c/csignal
! c3c2446be72aca91dd95206968b86194  libstdc++-v3/include/c/cstdarg
! f417f42efb251387f46d04a6fd5188b8  libstdc++-v3/include/c/cstddef
! 42b6c73ca7ac663c881a4b73a7df55d9  libstdc++-v3/include/c/cstdio
! ac61ddc96ea97476f50dbd43ce7a018e  libstdc++-v3/include/c/cstdlib
! c3a7d9f6edd7bcad1c8be1c22c340516  libstdc++-v3/include/c/cstring
! 433d7b96007ecfd25e8638e8bcffe06f  libstdc++-v3/include/c/ctime
! f1d671711824965bc344bcbb278f09f3  libstdc++-v3/include/c/cuchar
! c72a4fc592bcdc82b34d2778f84da595  libstdc++-v3/include/c/cwchar
! de48d970c9554f6e82878a48ff2ae3c3  libstdc++-v3/include/c/cwctype
! 7bdf8e15f2921f8b8331a6cffade64a6  libstdc++-v3/include/c_compatibility/assert.h
! de1af684b9abd7702eaeaca91206386f  libstdc++-v3/include/c_compatibility/complex.h
! 43c1f502541c256766c8e219be89885c  libstdc++-v3/include/c_compatibility/ctype.h
! b6bdf713874de65f1be356c63ba11be6  libstdc++-v3/include/c_compatibility/errno.h
! 72f0b29f8da560d60809fa72177261f5  libstdc++-v3/include/c_compatibility/fenv.h
! 873799eb92f60b0ea9b508afe831cd3a  libstdc++-v3/include/c_compatibility/float.h
! fb636bafa0f3f813553400c9aa71c727  libstdc++-v3/include/c_compatibility/inttypes.h
! 94dc2481c3cec21425eb73d339685a78  libstdc++-v3/include/c_compatibility/iso646.h
! 151c552e4c606155398fccbd8e351261  libstdc++-v3/include/c_compatibility/limits.h
! fc3d7e2f21d1ba56d5475ef36619c8c0  libstdc++-v3/include/c_compatibility/locale.h
! a14c9b34103c0dfcabf33d32bb27cfd4  libstdc++-v3/include/c_compatibility/math.h
! c24f5dfa5117af877db1109b2083979c  libstdc++-v3/include/c_compatibility/setjmp.h
! 0a9406c30f2d22947ee03ade629eaddf  libstdc++-v3/include/c_compatibility/signal.h
! 3a3cdac09cc64f488a51501161aae762  libstdc++-v3/include/c_compatibility/stdarg.h
! 63e0aaaa92ab093af3bc3d0c573fd44a  libstdc++-v3/include/c_compatibility/stdatomic.h
! 61825ec1880611b0c5247f84841de162  libstdc++-v3/include/c_compatibility/stdbool.h
! a43c73a6fc0b41ad32a1911efbfa66c0  libstdc++-v3/include/c_compatibility/stddef.h
! 4c9867ae5cab639decffabb4628c28f8  libstdc++-v3/include/c_compatibility/stdint.h
! 88c2d42b8436bb6eb763280204ec3932  libstdc++-v3/include/c_compatibility/stdio.h
! ce88caced6ed945413de73c65016f4c2  libstdc++-v3/include/c_compatibility/stdlib.h
! bddebd08d54b74aaa7faa8108eac010f  libstdc++-v3/include/c_compatibility/string.h
! 834d8bdd446cc36a35c9c8dc497cdef3  libstdc++-v3/include/c_compatibility/tgmath.h
! 1a30ac71e3922fc09f238e37250b0197  libstdc++-v3/include/c_compatibility/time.h
! ec31e9d74ebe1c8d9ff45db7f2692a7a  libstdc++-v3/include/c_compatibility/uchar.h
! 72ace9817f1db9c811e4826d328b5df3  libstdc++-v3/include/c_compatibility/wchar.h
! d3e5245863eda91e980c96b8879a7b35  libstdc++-v3/include/c_compatibility/wctype.h
! 3b4c45bef98f5afd47191ec6c1a8d440  libstdc++-v3/include/c_global/cassert
! d6496324dd78494caa39c268ad918b21  libstdc++-v3/include/c_global/ccomplex
! 710bd707b32af553a8f8b549b614b3df  libstdc++-v3/include/c_global/cctype
! 0c7919c7414a0ec5a4accafadc96375a  libstdc++-v3/include/c_global/cerrno
! 1a4c433c959ee64ce0392303ab53493f  libstdc++-v3/include/c_global/cfenv
! fb0b909c1f768ba82ee0041599f1a392  libstdc++-v3/include/c_global/cfloat
! bca0d438701497efb9ef31e7f3830434  libstdc++-v3/include/c_global/cinttypes
! 2235766cb2455d9058509b0a48bbb9aa  libstdc++-v3/include/c_global/ciso646
! 5db743a3aef6b76d5b093909ba55053a  libstdc++-v3/include/c_global/climits
! fc7e69f068d1ce8ef27dd06b139dcb1c  libstdc++-v3/include/c_global/clocale
! e2a6d0abf081874968eacbb632704d54  libstdc++-v3/include/c_global/cmath
! f137e449595902c3085bb4a36c348821  libstdc++-v3/include/c_global/csetjmp
! 5f88c7cbb404300324b310c752d0acc9  libstdc++-v3/include/c_global/csignal
! 493acbb7a891d3b9d1b1f0241b24e2c0  libstdc++-v3/include/c_global/cstdalign
! a139fbe6f91df6efa25aa994dba03fe6  libstdc++-v3/include/c_global/cstdarg
! f1e0234ea552da5fffc447097ac22c8f  libstdc++-v3/include/c_global/cstdbool
! b27b75676d5dab17dbe3e9b84dcd7de2  libstdc++-v3/include/c_global/cstddef
! 71b0a63580cffe7011c84df725cfbde5  libstdc++-v3/include/c_global/cstdint
! 20e2cc745bf3a085ad28291744beea78  libstdc++-v3/include/c_global/cstdio
! f9dd7451036bb23d465a69fad5d0d727  libstdc++-v3/include/c_global/cstdlib
! 116d7a7624cccfcc478f36e6851e4e57  libstdc++-v3/include/c_global/cstring
! c1a97d382288d0f782db3ecad0ed02f7  libstdc++-v3/include/c_global/ctgmath
! 99242ba84491c866d07eef83c33a5df6  libstdc++-v3/include/c_global/ctime
! 4f9dc4a0592c99f23670f43bf6eb831e  libstdc++-v3/include/c_global/cuchar
! 71f269a60adf0bff2473825da121953d  libstdc++-v3/include/c_global/cwchar
! b039fc1e057cdbe184c87a62b94ed7dd  libstdc++-v3/include/c_global/cwctype
! 94a6fbdfed4396199d8b11d76f81d945  libstdc++-v3/include/c_std/cassert
! 2cf89b8b5d9e695c0407c0e4049fc9c4  libstdc++-v3/include/c_std/cctype
! 4e7e4ed8ffa6c147420a0d7c036b3b8b  libstdc++-v3/include/c_std/cerrno
! 6fd3774feebc94445f66c93fd55de380  libstdc++-v3/include/c_std/cfloat
! 2bb6a7d9bddd559758543b80f82a7915  libstdc++-v3/include/c_std/ciso646
! 43479be04df3dfdb82bf3b1232bdb813  libstdc++-v3/include/c_std/climits
! c22b2207f6e50a7eea40dd414d2ded9d  libstdc++-v3/include/c_std/clocale
! bf9f29f9033bf47031ad15b394302d91  libstdc++-v3/include/c_std/cmath
! 8a5f4e9fdc5983c75d1bc15d6f1c378c  libstdc++-v3/include/c_std/csetjmp
! c1297a8d042d51ac9a9af0fc948eeeef  libstdc++-v3/include/c_std/csignal
! aacb2f6dcdcdebff1cb0ab7d1bd40aa8  libstdc++-v3/include/c_std/cstdarg
! 5b0e7b0fb98d227dcd3611b383937850  libstdc++-v3/include/c_std/cstddef
! 3a84449ac0187aab92a368b8dcd94302  libstdc++-v3/include/c_std/cstdio
! 79046e70334e056948378b5e5d2ccc13  libstdc++-v3/include/c_std/cstdlib
! c56a781951a6c809b688bcb81f2f395d  libstdc++-v3/include/c_std/cstring
! d5923cd604a1bcf708b50bc3510067ce  libstdc++-v3/include/c_std/ctime
! 9439556bb98eaaec365c5e3b15fd36ad  libstdc++-v3/include/c_std/cuchar
! 6d6f17f6cf57ce777025a9cbc67a3176  libstdc++-v3/include/c_std/cwchar
! 2fccc509c020c7f4d03d80181256933f  libstdc++-v3/include/c_std/cwctype
! 0e2e0b3615b9483f29329ad86d045235  libstdc++-v3/include/debug/array
! 72c36cebaf5b5288d1b74da291eee033  libstdc++-v3/include/debug/assertions.h
! 1a38737673becc8facf42786c35806cd  libstdc++-v3/include/debug/bitset
! 09fce61e0085ea92b4bd81d6cd4dcc16  libstdc++-v3/include/debug/debug.h
! 8243afb35d593488198b8c47cdd56211  libstdc++-v3/include/debug/deque
! 891f4b03a9d40c2b16d756043e4fcc6a  libstdc++-v3/include/debug/formatter.h
! 0917dd7d63843863fcf7c020c87fe90d  libstdc++-v3/include/debug/forward_list
! 53abc1b1108b12f79878f6a922b2cbfa  libstdc++-v3/include/debug/functions.h
! 9ff1feece89554410c0cedc20b16e12c  libstdc++-v3/include/debug/helper_functions.h
! f7885b345d1b9850b5398dfe5edb52af  libstdc++-v3/include/debug/list
! 8b86fb24b26db0419f2fab1b10923c1d  libstdc++-v3/include/debug/macros.h
! 7ec475183d161c06ce935b463882aa8e  libstdc++-v3/include/debug/map
! fbcb331a9250c6fcd73e9bd7c4380eca  libstdc++-v3/include/debug/map.h
! b347b9cf3d9486d07f0fbc31ca634888  libstdc++-v3/include/debug/multimap.h
! 571e91c31ea534607d788773c16571c4  libstdc++-v3/include/debug/multiset.h
! b81684e17e08d801471aa0eadb252736  libstdc++-v3/include/debug/safe_base.h
! e279803931b65da3b303504f9d84882b  libstdc++-v3/include/debug/safe_container.h
! 149b57b3bfbdae34d38de71cc35b9014  libstdc++-v3/include/debug/safe_iterator.h
! 36e986d237d1b3afb61b16f531979968  libstdc++-v3/include/debug/safe_iterator.tcc
! 657fb5bdd8edb1baf07fc4fa5d408b01  libstdc++-v3/include/debug/safe_local_iterator.h
! 725afcf267463fa0d138e72036b2910b  libstdc++-v3/include/debug/safe_local_iterator.tcc
! 164ee610eea89a7181654e5633eac41e  libstdc++-v3/include/debug/safe_sequence.h
! ef0e262ff10e6a4bedf2d570ad8a3cef  libstdc++-v3/include/debug/safe_sequence.tcc
! 4ac507024e2c381d0958cdae06d2ae59  libstdc++-v3/include/debug/safe_unordered_base.h
! 78b7df66590dbcbe3bfb2e991e904469  libstdc++-v3/include/debug/safe_unordered_container.h
! c0dd0aced7abb48cd221b984fed44596  libstdc++-v3/include/debug/safe_unordered_container.tcc
! ebd0bcc33de6a40385a8f73a48b74d09  libstdc++-v3/include/debug/set
! 98fe15aabb1ec82d88e7604b86b73144  libstdc++-v3/include/debug/set.h
! 0871838e070fbfdf4643d3b85606ec48  libstdc++-v3/include/debug/stl_iterator.h
! 8a9e91cfc73c80c31374169ca3035a09  libstdc++-v3/include/debug/string
! 4c5eff01566eef2ed88b2a221fef413f  libstdc++-v3/include/debug/unordered_map
! e2bf126743585e439df95a90462c6784  libstdc++-v3/include/debug/unordered_set
! b568a4a27c1d101ce47448c6cdccfd3d  libstdc++-v3/include/debug/vector
! dbe8455f94d8d7d08faca0de489d70f5  libstdc++-v3/include/decimal/decimal
! a76f8506a05bb00c10bff03eb4206cc8  libstdc++-v3/include/decimal/decimal.h
! 709cf440bacc06a3020dfbdc997986ab  libstdc++-v3/include/experimental/algorithm
! 1d40ed8b7aa0d5224a90695a698193ca  libstdc++-v3/include/experimental/any
! d1c85ab843e7786260a3593e711622d5  libstdc++-v3/include/experimental/array
! ce4d9d942c78c7a71a2f983bbd9a37d4  libstdc++-v3/include/experimental/bits/fs_dir.h
! 92829844a42af6748ed988249b7c2557  libstdc++-v3/include/experimental/bits/fs_fwd.h
! cfd46a6ba8b7e92c26323aa2041931ae  libstdc++-v3/include/experimental/bits/fs_ops.h
! f32d7540b3b373c3e199c32804d3aedd  libstdc++-v3/include/experimental/bits/fs_path.h
! f79062269672eb2b6195fcad7034e18b  libstdc++-v3/include/experimental/bits/lfts_config.h
! 85b50cb8925a5dcaa808980b5cb0d8f7  libstdc++-v3/include/experimental/bits/net.h
! 1c99b46217fbeb7cfcb4fe9fd60a5ac8  libstdc++-v3/include/experimental/bits/numeric_traits.h
! 1d457f0e71c47e01d107c0ca8609019c  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 3fd6fac487540fd65bdd4c7c5b6ec62c  libstdc++-v3/include/experimental/bits/simd.h
! bc3aaddff61234a8610b1ee193ef62ef  libstdc++-v3/include/experimental/bits/simd_builtin.h
! 893b969b5ded9ce2840356ae752d5063  libstdc++-v3/include/experimental/bits/simd_converter.h
! d6cdb6154029924e8256bb98913843ac  libstdc++-v3/include/experimental/bits/simd_detail.h
! 2f6dec5e93e6387b98ba68b2ed06426b  libstdc++-v3/include/experimental/bits/simd_fixed_size.h
! a8b1da7d2a6af4b90429628616a0a66e  libstdc++-v3/include/experimental/bits/simd_math.h
! e861ebcbafc444ea9eb01ac9c5b99979  libstdc++-v3/include/experimental/bits/simd_neon.h
! 9d8c9201675f2559be4096f8d152c694  libstdc++-v3/include/experimental/bits/simd_ppc.h
! 0f52ac4c09d5b301f2ea36edd4b54508  libstdc++-v3/include/experimental/bits/simd_scalar.h
! a9d554501f4c205a808e95ccaa069881  libstdc++-v3/include/experimental/bits/simd_x86.h
! 50722f04d8752d1fa4618f77cc80ed2f  libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
! e1be8e54aaec8a34e1f682da217a9550  libstdc++-v3/include/experimental/bits/string_view.tcc
! b17463914bf45d86c8b27f74d4738c10  libstdc++-v3/include/experimental/buffer
! a94d9106d1f001915671ad4d626b21ff  libstdc++-v3/include/experimental/chrono
! 04a69db7b0ac197fc9a3f6ccb4e67f64  libstdc++-v3/include/experimental/deque
! f4f8da16d8133bfcb69eef49d797a1b3  libstdc++-v3/include/experimental/executor
! 174c0fa7105d71925dc0c7ab3376f07c  libstdc++-v3/include/experimental/filesystem
! 4cfd0865400c74397b111980a5b8f3ea  libstdc++-v3/include/experimental/forward_list
! ee6ba0e2ca753c4c038a9ebfb0805c4f  libstdc++-v3/include/experimental/functional
! dab5202bb88779e945a419918ae33338  libstdc++-v3/include/experimental/internet
! 2766d0b421163f93012e31499fd68480  libstdc++-v3/include/experimental/io_context
! abc318d32456e26882cc3fa419abe900  libstdc++-v3/include/experimental/iterator
! 89cd7b8a6b8c8fc54f2f5404abadc032  libstdc++-v3/include/experimental/list
! 2c1d62f69a866cdf10ffacad27b340c9  libstdc++-v3/include/experimental/map
! 7ac714ec4a36a7cf8d2732c4db113d4a  libstdc++-v3/include/experimental/memory
! c55914d74e73e58a605588e321105d3b  libstdc++-v3/include/experimental/memory_resource
! 50ae842a707510221c966a5e66dedae3  libstdc++-v3/include/experimental/net
! ed1d16c3daf011c46f5493c4d9ab0aa9  libstdc++-v3/include/experimental/netfwd
! 085ccf55de19d6cefa89ba252f7736a0  libstdc++-v3/include/experimental/numeric
! 0b0aaaf33950ba64dd1c1ecd1440b071  libstdc++-v3/include/experimental/optional
! bc2b4daaa723b3d473234d83440e9184  libstdc++-v3/include/experimental/propagate_const
! 88deaa9bdbe1b37df6d9f1144ed140be  libstdc++-v3/include/experimental/random
! 0b49835ec315341fd40734dd199b3503  libstdc++-v3/include/experimental/ratio
! c8f2f4338129bb3d96c858c4ff42ea78  libstdc++-v3/include/experimental/regex
! 494e820bbbf810ae050299afd21b1f99  libstdc++-v3/include/experimental/set
! 05b55d9baafb18b02adcbb9fd18128df  libstdc++-v3/include/experimental/simd
! 96e50234a1e46a83c9d7e5eda7e9c827  libstdc++-v3/include/experimental/socket
! 70f4b0294f6e231e4010df68933744e9  libstdc++-v3/include/experimental/source_location
! 24e32b1f8dc16cba6959a8746bd7d75b  libstdc++-v3/include/experimental/string
! dafac68817c8f9475fc3bde566ed8902  libstdc++-v3/include/experimental/string_view
! 75b66c367e172042a1afedda1fab27e1  libstdc++-v3/include/experimental/system_error
! 5f1266d4d8133f022b78f98f0cdefbbf  libstdc++-v3/include/experimental/timer
! 718aeb28b4405dec4492366cf0eca27d  libstdc++-v3/include/experimental/tuple
! 84501e2955d71ce01f40c4b8ac8c97b2  libstdc++-v3/include/experimental/type_traits
! 399943e5b90e5b0f7717f60fcca4574f  libstdc++-v3/include/experimental/unordered_map
! 756cf4ca97ebd88baabd894c9acae92e  libstdc++-v3/include/experimental/unordered_set
! 18cdbc7f9c4eac37a520ae985047e727  libstdc++-v3/include/experimental/utility
! f919b31a9006febcd072bf64bd03c776  libstdc++-v3/include/experimental/vector
! 39c06b7dda7ed5df40293a04eea5bd8d  libstdc++-v3/include/ext/algorithm
! 438d1c06d8b2a2432599c77df78c4d66  libstdc++-v3/include/ext/aligned_buffer.h
! 31f7d0a2a02f50c83a5e79fe6db5fca2  libstdc++-v3/include/ext/alloc_traits.h
! 7a4eb583a7c8a21b5a7ba38118be2629  libstdc++-v3/include/ext/atomicity.h
! a77deacc890015a2572e4e21e3a9bf6b  libstdc++-v3/include/ext/bitmap_allocator.h
! 2e7c85a31e85111e67c8a03012d3c9ce  libstdc++-v3/include/ext/cast.h
! 22ac1681a153f502e005337134e553a3  libstdc++-v3/include/ext/cmath
! d6b4de322e3214124548bbd55aeb5088  libstdc++-v3/include/ext/codecvt_specializations.h
! e03c736a82a7640b89ddbcd41fc4df88  libstdc++-v3/include/ext/concurrence.h
! ebe0e740b47791e8a0d5fa704ca6db70  libstdc++-v3/include/ext/debug_allocator.h
! f6eb6b846fc6a602340bb94d9d462688  libstdc++-v3/include/ext/enc_filebuf.h
! a991657867364dcaf16d19671aaf643c  libstdc++-v3/include/ext/extptr_allocator.h
! 43c3089edbabbc7eae00a5c6facf7daa  libstdc++-v3/include/ext/functional
! 48f390fcfbb6a44e248facdb0ec14988  libstdc++-v3/include/ext/iterator
! d373ed650ddc96c5e431650c65be6e68  libstdc++-v3/include/ext/malloc_allocator.h
! 008b2229637eab3f9bc87596aa035239  libstdc++-v3/include/ext/memory
! 5a173e66ab05ee5c37fa416596420100  libstdc++-v3/include/ext/mt_allocator.h
! e1998e6fc2a8d3eb451025d3c021ceb3  libstdc++-v3/include/ext/new_allocator.h
! 9ae1e878156f72db62d7d94772f7dcb6  libstdc++-v3/include/ext/numeric
! 8bcaa226ce57469a87ed94febd6082f9  libstdc++-v3/include/ext/numeric_traits.h
! bd496b3b9a1ecb478f97715addaffe67  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
! 616478dd560c2735acf4515715147280  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
! 4c0fd7142e69ccbd463218fc78aff92a  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
! 883c994a6609cd03d8e21ce0f11008d4  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
! ed04a236e6d29645e2c983814ed215d8  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
! ba5ddbe6187e70f6f7b7e025ceb9c88b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
! fedb6253996cb664fe5ff3a1b97eba21  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
! a8072560192510b82a65affe16baccd9  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
! 7c1e64fd6513f32f34af29b5ddd71726  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
! c7af808b5393bb6e5b41960cd7190a41  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
! ec9a91467835248948b2f3148644124b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
! 00285f98ec0f692112bcb4a56ad2b1e8  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
! fffab1dcae5f088865bc513522001787  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
! f322c919bbbcc1970364630d0ea1874b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
! 611e305fe17b066316fb4a1aeb566c4d  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
! 1110c274e8d06dc50e7b07ce212e4cf2  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! 04651284b3378070550481969decb342  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
! 6f3c7af617654077c7e568df3b82c463  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
! a3b08e3cc3a5491b125df5bbed3cb276  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
! 3d7fe507dcc81fbf4e5acd5e996f7293  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
! 2399dfc557e3d9b1c1fedcae8f9018f8  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
! e10c220d17dcafd54025c4905c85b3c0  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
! 3bb2477147299dc922a73eeb66e28128  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
! 68da43ff3ca4473546c9005cfdf31106  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
! 08bcbaf4751f6e6f3fd279618b2b5294  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! bcf39ef397661a8285a9aa80bb0884b5  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
! 5b2e010b13fa5c5b26efc37045a1d347  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
! e271089c78adf910840b73285928e109  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
! cfd24584fa42fc174791f2611ffe1ab6  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
! ca1e302e87ad7df291b8774deb3c6f72  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
! 6f3de6b17dda3ca070bf8dd857d514ef  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
! df5886af5e2b066a797cc9cf81a4886f  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
! be8de9f0863812a79026e5ba677606fd  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
! 4a175e7e574ed6db1321cc6655f4d6cc  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
! 5a083f783ca3ab9eb51cb2ff2b5ae8ed  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
! 29c544c899e4d4758d16d54e27cf7334  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
! d574c19d8f1f3984ff475e6526321c2d  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
! 6be38912d9bf5afe5762f147a776348d  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
! d4bd3e0c8084e2a84a74da6e48584775  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
! 15df91b73524283e7f171c1f57971e38  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
! 3baaea52388bbaacdf63c0b51be73a8f  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
! aa1b9c235197b06abb3aed54b25f6c0b  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
! bcd28ae25b711ef285dc06f5f336766b  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
! 4e37e8becea01021f987b5d5f8daecd2  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
! a784c31143f739a5f89f9d1893be6882  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
! 97d810946533d74e64e5eb3d2271c1ca  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
! 92deb0ff30e5795ef856ad9ccba528c9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
! 5bd5c2443d1b2b315f53b98a1d7d31d9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
! df2b3e4ed86de7db3c99b26d0196844a  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
! 098a652d22b5a6601dfe329f0d30d746  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! cd20414bc18f2ed5e3a5aa87c28d2c34  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! d618f15033c63f442211088649d2c381  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
! 94bf82394d2290193c725e73c1358f39  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! dfa558e0d81e783f262320b53f47a79f  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
! 8e68b8a93efe2e9152b04dbd03fcaa15  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
! 6e010becfe2be74092b452636190e218  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
! 57f1bed9ee3420e6e166f559b35b6032  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! 1fac33a0026b44a568926a0e374fe41d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
! e7f7fdb9657455ab1008da1c74b1ad34  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
! cb2a90f1403d4b0e76224158ee250892  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
! ad46f3f1b1aa9e4653520d013b3800af  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
! 271cc042f6d6d06d6b0bc1beeb5053c8  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
! a3d29f6c0500a2190af9e77816f08ba6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! e59914c97cc5cb4ffc770a73c834dc62  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
! ef868cde117974a29fe5d220e1197cab  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
! d270a2966ad5732afc8917fa540ff592  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
! 6eb67b106b7e8b5fa9eff44e2ad34ad2  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
! 189664f493e9291aa856ae8dd8ce014d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 432dd1aeb91f3890d4e54af6f0b49942  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
! 8f9fe24b6d1144045912493c66d4a905  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
! 0383182a50d19d4e2144a9148224efef  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
! e0899469b27ec0f0576a346838072e4c  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! fba85a8ebf453f418cc2c0eb9f65ed4d  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
! 516fe11dfd9c9cae2d1bbaccd9d9e6c5  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
! ee84e7c45998561204ae2022207c0266  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
! a7d453f421bfd98bc05a8b21dc9e0ef7  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
! e51ad404e5b63dfa5401f71d54faef97  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
! 777e2022e2b9fbe500e65d1f620f5018  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! 30c52d3eebc393c1afaa90f3d974fffd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 1e26622d3ac3550c96825275c6986e79  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
! 2e1a21757a007efb7919042e84a4a0d3  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! 447ab2a333dbed8ebcda2b6f6c57a5ef  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
! db249b32fe9b3f8aa89bb1b3a92e2024  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
! 7119758171d8962e92c751b190d613b7  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! e1a24667871d0f9dc16fbd93f6768e55  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
! 7f34391a4d23d8b22f17611d096b2514  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! e9627501f98432da74190ffef39463db  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
! ead6709632b27f04a2fad9f85514265a  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
! 8b9d33dcef9be7c712c559a129280ace  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
! 43ce1631fbf480de716c9b43462bc4a0  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
! 4a72141d8de9d33f86a2835b62df4239  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
! bf752e2f2ac29155dfe5e665d217b8f5  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! bc9fbd1a6466c82c73bb7fe4729ca6d3  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
! b25e543eb1cbf2fcae0cdd264fe0f29d  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
! 68300b53037db4659c560ecc14526a48  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
! a6a7add7dd08331a5d67d2aa3f00d227  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
! c9158887a462e3bf079166db77326ee2  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 925a121b7b69555d6f4c075bc77baa16  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
! 2301a6529614172bf3a862b6c8100f8c  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
! b690b6c74be456e8c6486eaf0cf01537  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
! c117eaa9652719d492120b291f3b2f25  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
! 3ac06c7fa8d00bf86372cde47c007a0c  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
! 060f0826fad70dad7b744f75a709c780  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
! f9cc7bc6a839375c428514fd9c652baf  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
! 63124ef98766c7d0213d7afd02b19cdd  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
! 73596568c5f4c4fe047649bad07c77de  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
! 934dafbc464002d93e542eb3bb5a8bd9  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
! f2ed33483743ee8c516d35a52a2af83a  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
! 41efaf35e8ef7079f348e3bb2476c70a  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
! fdde46aba4e90fbaa62b05febdf36302  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
! 827d1882b67a9afaa7fa94ae26890681  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
! 99ab79c808d9fbc77abdaf43b2f4a886  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
! d961f2e8b8aaea638aed005d645f11f1  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
! 5fda01052914f4b920cc7c3a873daf5f  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
! 619028d8fb52ccaf204ba66691847b63  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
! a9619aacf6b86b30bf22c7eb110a61ec  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
! b45672b29bebd2cf365aedbb333f725f  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
! d3abdf478caa7560625d2255330b6aab  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
! e3b60de3bd709ec34575374a0fd720f0  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
! 2173b419c56b3a56b48386b2265478c5  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
! 6b480f6e9bd546db0ef8520a4edb1d71  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
! 16454cccadbf1a32f259349421f06556  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
! e31b411138f1d35c9aafa60f01e9c256  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
! c28aaa0d15d4d6ea0b7c8a0a56d094b9  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
! cbb8e85c8b37a07cad26760567be1fe0  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
! 01f4fbf4f2eaaadae3d5574b2d857ba3  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
! 027959360712336789ef48c4821d711a  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
! 40eb2bc43b592f704e1f255272671298  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
! ccea809620900a1e617f0d545cf528b3  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
! bddc8da2bd078ead2c1f90441c776cc3  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
! 2ff70de653fc91b6b3c1b3eee1f82c10  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
! 5861b31f348644674731f91b3f3700c4  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
! b994e35ff462b28ca70243a13aedb42d  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
! 2cd7c890328f83ad84c0e5bec5ebc9e1  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
! 8480c8bfc4ba96a83f12307213bc9502  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! 7a87fae8d4328c67079e7baa4f76a728  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
! f739565fc3f7777898c34b8bac9f901c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
! 22ea472c60b7f6dfe29b75cf77dd3b3b  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
! 966ea6806bb3bf53d6ca4202ba371119  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
! 53a8109d9e30b5265dad4e0acd31a4b0  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
! a502b1871fe4dd25e6fc6759a455ac62  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
! 1b492977c1c2325d49c60a2d9085c7c3  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
! c4d4b344f536ff70d2bddaade57127cc  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
! 56e7a32cc898ee904810819a4e48d469  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
! 0420c5b82cdef8cf3df01b00ada79a8c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
! 2954f174449e5d38c79e32462b4f7b03  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
! 93f76792e69cb021b7bc70478bcfceea  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
! 0ec6818ed36bc4318721f004fc4c0f4c  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
! 0c4d07111b4ad6463b412401c53ce0a6  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
! 6e6c205b282480aa5f05a994fcbc4827  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
! a8fb156cc2fa0635dfe05629793bd992  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
! 89b7acdbc58658222aceccf623335fbf  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
! 439c5810f6f938d0bd634330939df240  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
! de6729afeda69c69cf0fd2ac4e66c5d2  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
! 559639e4eb1a175e4f30147ce54c657c  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
! ec8029f93e18868a3e1a0c68cb22a7e1  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
! 1fa8809acece90d3de1e495689921476  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
! 0e823c70c8ef782138e98ef807120a85  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
! a87eb0b41b192114994d38468a48fd9d  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
! 746529ca584df45d32b45d4b353b5f83  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
! 61e2bff655868af70396e5b4f9109325  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
! 9dda078a18acdae6977bfbb61b9c7a51  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
! 7031d653c93a44947c51de3c6aa31518  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
! 5cd1f5832ff2b870bf9a0819bedf45ed  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
! edd99c7893d4711c0f9a178b0780ce29  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
! 517c983402feafcc6f7b2f191df0db8d  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
! b07cd755d40b09f0e32a9acc4a46678f  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
! 053d2feb3da6e928d4ef66d69dc19031  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
! 171b47f33e0d5d72d9543abece49c030  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
! a5f0c83905dab041c8faa0c624f0343a  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
! 1cdf9d8994cb9c7304ff287319563765  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
! 79395865b7681fd517db9fc14a7c90e0  libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
! 2478b7557adc37d0251e755e78fd6d57  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
! be6975e35de4c9f78f918601abe3ada0  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
! fa2ad74bd7c843567e068fe5e6e8c6d1  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
! 1a55f39fc5a6d3c34affe8549c208c8a  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
! fb1368449dfc26b3032a7a04c5e86bf7  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
! 88b2f1461a65080ac9d06d16f339f5ca  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
! 0dea620761c102a38b04c679e6f84297  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
! 6140f1029bba4e1e4acddac9be8dba52  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
! 78cdc19f2d54b038d435a51dea86b1ba  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
! 1a9f8c896502af2e1f3fc3fcae79baef  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
! fea676d8740bbec59c32924cdee2f9c3  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
! 6906a05bb1309d2aa64cbe20fd1b944f  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
! 214704764a8cf1855a9c859e94868635  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
! 149ffc3e31bfbf30898509f2642f8370  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
! 55fff1dd1a04a3ebfcbc211b96f45116  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
! 85ddb7c2aee866834e17d923dc1ae42b  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
! 7b5cc2f132e71ecb9eaf0c0aa77d5764  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
! fbf404d35ea210a7c4e1ea0aed9a323c  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
! d03a10379e152c57b7a11aa468575223  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
! 5b11b9567bbb9d6cfe5e119a32c3a22b  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
! a43ca3600c1b0f67afb405e8ab58eeaa  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
! 88929dc45a59099399f81439f6160858  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
! 2337946c56a9be28335fd6ab47b26bdf  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
! 84c04e9901f14d9c39ddbe77349dc3cb  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
! 06f9cd3489d3ca38cb49983a8473f12d  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
! 23b7ef07c45cc35a667e17885424ee22  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
! 994da32283ecc1b7b0978e992f737427  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
! 8825419cb0bbc9f78a6906a5e7f04b3e  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
! 30c1c9022f80688b958c875d383c19b7  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
! b4e1eb4466c204697389ba9dc132c80b  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
! 9f5a6826133fbd16da24182bf86d5622  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
! 400ad50ca36f6fe390a3e23f6ceea3dd  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
! 40c707e351b7c3500f40f113fb5318c0  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
! bcc4420f6b61c3b348c8d4d0a288730c  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
! 6791ef4fa324647520060ef51c401e3c  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
! 52e131ab6e5fd9d5044aab1396158794  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
! e4a7e81fe9f59cb57c3e69ed184568c7  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
! d2302f0e3478fa93e01166236da6019d  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
! b029c57e6ed2120d4b5781ee7f2d5041  libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
! 6fca0557dea2515441b7024151760901  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
! 25c8fdd41bbecd0727b8eaef3365f0a0  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
! 9727a18023609e217c05f9c00b3e8684  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
! 4625aa8689fbf6a1a8ddf23608e0cb77  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
! 48def8145b1617e96dd09017de8fca0d  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
! c09e5cba09ed6b994e6476f9cace3772  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
! 456c77671d6fc2b719a50d4256185ee3  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
! 70ebe6ebdd7a84044ab233bd8a5984ca  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
! 858ca5239372b57ec4c6e082ccb4322f  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
! 730ed47e10b89ec00c3c116450b7230c  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! dff0b296230671ab40e56cffd107c981  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
! 9d280e3627d089baa63004557b93bace  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
! 8139d900dcdc5b55486a85d9c49cae6d  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
! b6754a9627e9d5a9c6cc9afa85914dfc  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
! f33b1f1b03a645f78ce51b569f08df52  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
! 0cab85d77ea6e0cf6de01011a4981202  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! 1225880fd2e472217fecc7a2d499dbfa  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
! 664d73deb23cc47161c6bd741ffbfccc  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
! c3ee5b94c2c89400c3e0a7ecf870a169  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
! 4268b92e369a757236cb5f528476006b  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
! 52d68a7bd601cf1108d46f5dbbc0f27a  libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
! a0cdd8abefc67da87265ba0f49e2840d  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
! 846bc4f45212513c313e01005b2bad6e  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
! 9072955d9388e04b25b147ab831eb496  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
! 4e2de3ea4bbb2e396ac9af806343da71  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
! 0a076de96fabaafcd5138ae1bd5b9ec2  libstdc++-v3/include/ext/pb_ds/exception.hpp
! e2244598d93911cc5493618b395d79cc  libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
! 38891cc3ab82235ceca31de7d2d0e74d  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
! 796cf15d999e29743d8d84b1d535b06c  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! 9e0a8a8385e60619e404308bcbf71ee0  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! 26d150aa543391eece36add521309c8f  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! 6cfc52e940a41985b8c58b0059e621ea  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
! 2ec876120ea6841bf1985953bef04f29  libstdc++-v3/include/ext/pod_char_traits.h
! fa68d52358cbde1fc3dbc11f12406f65  libstdc++-v3/include/ext/pointer.h
! 2ea20e4049f0c17f7b7233012f88f789  libstdc++-v3/include/ext/pool_allocator.h
! 132eab8ef2048c429db6e0f426a8fc81  libstdc++-v3/include/ext/random
! 652ddf332170715fe1b553e21ad46e8f  libstdc++-v3/include/ext/random.tcc
! 3838558247b3915f71481a41747ccd7d  libstdc++-v3/include/ext/rb_tree
! 79ea1b7beb81dcf5dbd85d028761329f  libstdc++-v3/include/ext/rc_string_base.h
! 6f1fc8490d5c57067bbafa22a2aeaebf  libstdc++-v3/include/ext/rope
! 893611345d4bf3ef695d46122b622760  libstdc++-v3/include/ext/ropeimpl.h
! 9e669067b061253e032bc964420f1469  libstdc++-v3/include/ext/slist
! c49510b2e5e3bf82711eb4aba5ac8365  libstdc++-v3/include/ext/sso_string_base.h
! 177a45ba78eb9c3a0cb8e04c5d9124cb  libstdc++-v3/include/ext/stdio_filebuf.h
! f1ce74fcce7def3588a5d0e513779256  libstdc++-v3/include/ext/stdio_sync_filebuf.h
! 3b9e318bace7aced89d0899e97058cb9  libstdc++-v3/include/ext/string_conversions.h
! d79f5a97e97f1256a93216718c519334  libstdc++-v3/include/ext/throw_allocator.h
! 6044b9b06a16062aefb7106e5893598e  libstdc++-v3/include/ext/type_traits.h
! eeaf5b958c0668c8e15861bb2b4084ad  libstdc++-v3/include/ext/typelist.h
! 85737d1f3cc5c48116ba6d98ca4d592d  libstdc++-v3/include/ext/vstring.h
! 3b55a0e7304d58913ff7e4fcb6eca903  libstdc++-v3/include/ext/vstring.tcc
! bbcf6681c888eb025306326d3d1d612f  libstdc++-v3/include/ext/vstring_fwd.h
! fb066d175984ca51531eb92fdb43cb77  libstdc++-v3/include/ext/vstring_util.h
! 012563ba886dd7cc4063ab1de2348eb1  libstdc++-v3/include/parallel/algo.h
! de3279f93ddac20035e4b8bf5f7533c3  libstdc++-v3/include/parallel/algobase.h
! 33662c0283e0e0f0df4a44326a4c68dc  libstdc++-v3/include/parallel/algorithm
! 95a519529727b142b7a961bcb54e2794  libstdc++-v3/include/parallel/algorithmfwd.h
! cbe8fb0fea01538c0132b8e8a06911f2  libstdc++-v3/include/parallel/balanced_quicksort.h
! 7d7097761796267477511973e27a615d  libstdc++-v3/include/parallel/base.h
! 488c4cc93df8eb214c7a237e6ad8e42d  libstdc++-v3/include/parallel/basic_iterator.h
! 977655d7d233ea4d8b098cf88eca7b62  libstdc++-v3/include/parallel/checkers.h
! 03fb4625eca08b0290ecbd1ef76fa558  libstdc++-v3/include/parallel/compatibility.h
! 072b29c77efdb0be079dcb1820ff2f21  libstdc++-v3/include/parallel/compiletime_settings.h
! 87efb570a33993293d7e65df38f69e81  libstdc++-v3/include/parallel/equally_split.h
! 010ed786fabfb21da1dbe8d6d8acff0b  libstdc++-v3/include/parallel/features.h
! 5c5efc4cb5e85f393a37126974bdf36f  libstdc++-v3/include/parallel/find.h
! 1fdc9df7e8154ee5674a58579ef7ed11  libstdc++-v3/include/parallel/find_selectors.h
! 16a5c534fa71267b9bf05d9c0c22802e  libstdc++-v3/include/parallel/for_each.h
! c6e981c1f6579229f4f20f668c7452ea  libstdc++-v3/include/parallel/for_each_selectors.h
! 1f2dd777efce7778375290314bc646f6  libstdc++-v3/include/parallel/iterator.h
! 931cfa824e7de258a102899bdf93810e  libstdc++-v3/include/parallel/list_partition.h
! f2b6a0a3d2325eaa004b4f8774ade795  libstdc++-v3/include/parallel/losertree.h
! e98e062996f2bced816b10d264f10a74  libstdc++-v3/include/parallel/merge.h
! 3c47e48733f85aa5e3e8f614abe3de55  libstdc++-v3/include/parallel/multiseq_selection.h
! cabfa18ef07d47be9d8d5842a35ddf36  libstdc++-v3/include/parallel/multiway_merge.h
! d448268bff37c2dbc67c1bf1d7b36e1c  libstdc++-v3/include/parallel/multiway_mergesort.h
! c5f9829ad037a04283e2c66e4eb32101  libstdc++-v3/include/parallel/numeric
! f948538b72944763c8e14cb272531b0d  libstdc++-v3/include/parallel/numericfwd.h
! 0b018645b677516150ef5777583ec408  libstdc++-v3/include/parallel/omp_loop.h
! a73dd6d436be4d7d312ebc16190304ae  libstdc++-v3/include/parallel/omp_loop_static.h
! f79a2c8cca59a4c7fb2a5f8cf104058d  libstdc++-v3/include/parallel/par_loop.h
! 5cf48a6015b5b671ab294319b148a54e  libstdc++-v3/include/parallel/parallel.h
! 85b40456a17f7cb1ed24c149367cf3e1  libstdc++-v3/include/parallel/partial_sum.h
! 023971863590103ccccea2cda3b9a1c0  libstdc++-v3/include/parallel/partition.h
! 2ced73aca79eb566fe14533aefbf66bb  libstdc++-v3/include/parallel/queue.h
! 4d7d0154b42d3d41739ebeb90a55af46  libstdc++-v3/include/parallel/quicksort.h
! f2a01555b7ae5ad014f50680fb3878e2  libstdc++-v3/include/parallel/random_number.h
! 1f53883f57f34c0a68f8d077b6ce55cb  libstdc++-v3/include/parallel/random_shuffle.h
! fe603105badc87ea5215e8a9c76dae10  libstdc++-v3/include/parallel/search.h
! de7223e37e7ac081c3e42870142eb713  libstdc++-v3/include/parallel/set_operations.h
! 22539cd88aca17cf57d7c8f963154e18  libstdc++-v3/include/parallel/settings.h
! 82b58a365706e8eae6b9fe4ae4cf913b  libstdc++-v3/include/parallel/sort.h
! 78f2dacb455fbe3cab453200618eb5d6  libstdc++-v3/include/parallel/tags.h
! a55c4f4b05e7c063634b505449e9a310  libstdc++-v3/include/parallel/types.h
! 68178c93946e2787119bc3120060e001  libstdc++-v3/include/parallel/unique_copy.h
! ec083732e16ec4bd32dacdd3927991cf  libstdc++-v3/include/parallel/workstealing.h
! a43330266edd6671ed829ec9f7b829e8  libstdc++-v3/include/precompiled/extc++.h
! 552161a8a4fff86504324104afcca834  libstdc++-v3/include/precompiled/stdc++.h
! ac43294dffea100aa3cde8621f05f254  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
! 12b7134f312d65f84a117c18a456d271  libstdc++-v3/include/pstl/algorithm_fwd.h
! 74a0358aaa3f639ff58b225e142f615b  libstdc++-v3/include/pstl/algorithm_impl.h
! f6334ffc99f69354798bfc8024dc39f0  libstdc++-v3/include/pstl/execution_defs.h
! 69ed2403525edbee720eaac531dfa979  libstdc++-v3/include/pstl/execution_impl.h
  87b0d132d9a180f96cdd7cbbf15a9f57  libstdc++-v3/include/pstl/glue_algorithm_defs.h
! afd65b5eade8cb9bde229048ab072fad  libstdc++-v3/include/pstl/glue_algorithm_impl.h
  dd6e851bc473b9ff23e81df89abe4fc7  libstdc++-v3/include/pstl/glue_execution_defs.h
  0b0a3983fbed012140824669c804e50a  libstdc++-v3/include/pstl/glue_memory_defs.h
  e5017e0d8d380d892163a4a110331fb0  libstdc++-v3/include/pstl/glue_memory_impl.h
! 13bca58c5aa152304554b44e5ce89845  libstdc++-v3/include/pstl/glue_numeric_defs.h
  95509c3eea99d2f277912479e94c6449  libstdc++-v3/include/pstl/glue_numeric_impl.h
  d654c6a3cf5ee1bab1e7bc476cbb7f37  libstdc++-v3/include/pstl/memory_impl.h
  b692aa95f9f120acbe330c2893c3ce6e  libstdc++-v3/include/pstl/numeric_fwd.h
! 5ce6f567dcefec1acb4954df2ff6e4e3  libstdc++-v3/include/pstl/numeric_impl.h
  f0154f75dafee0c95cfc13f091939f93  libstdc++-v3/include/pstl/parallel_backend.h
  e972bfc42cfac92bfde04a35e915514e  libstdc++-v3/include/pstl/parallel_backend_serial.h
! 063d0a82ae5aba59786edcabc4932e96  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  d3d2812c60e828c1e822801f148c7630  libstdc++-v3/include/pstl/parallel_impl.h
  64e9a3bc96d1e3015387cb95106544cf  libstdc++-v3/include/pstl/pstl_config.h
! b156f0d597a2edae1a06e54aba071e41  libstdc++-v3/include/pstl/unseq_backend_simd.h
  16ecbf48b313f47955487be8fe668037  libstdc++-v3/include/pstl/utils.h
! 072481f1e7d96b55385089405f535dd4  libstdc++-v3/include/std/algorithm
! 570dea393806af64e854327a07eae25a  libstdc++-v3/include/std/any
! 88906e37f833d2f5a22c5438677c71cf  libstdc++-v3/include/std/array
! d8d087b3993001c0677279f294e3193c  libstdc++-v3/include/std/atomic
! 40a6f3b28cf45fedc0a741ed20598930  libstdc++-v3/include/std/barrier
! 6c4a00cca741ccc69d90f2c62c4bed21  libstdc++-v3/include/std/bit
! 1c7178da5eda9defcdff4edc4a890999  libstdc++-v3/include/std/bitset
! 2ee22b6a48915ac5bb3f7e44089980c6  libstdc++-v3/include/std/charconv
! fb50f7f4caccb54720761030bc390207  libstdc++-v3/include/std/chrono
! ef0864942910987e7d7dc0c185bfe8a4  libstdc++-v3/include/std/codecvt
! be6c12b098d82e85b07d3672abe54bfe  libstdc++-v3/include/std/complex
! 16439135249b21db1105ff810c791cf3  libstdc++-v3/include/std/concepts
! 5f9d3f1270677d2a503aa58b9ea24b5d  libstdc++-v3/include/std/condition_variable
! 556e1e1bf1f273632cafe51f162826a4  libstdc++-v3/include/std/coroutine
! 6b89200406cc1ab389e7796857584f28  libstdc++-v3/include/std/deque
! b7b3e00d632ce3d8dab091194900a119  libstdc++-v3/include/std/execution
! fa42dc670748a6aab9818f12cfae0a5c  libstdc++-v3/include/std/expected
! 2591b4b2dfa65f0fae8dd4fdb5c06398  libstdc++-v3/include/std/filesystem
! a9c719562e9e02bb827652856f5a0411  libstdc++-v3/include/std/forward_list
! aad9a7ff99d2eb9e0ba45475cf6c9001  libstdc++-v3/include/std/fstream
! e41d5e167d29be8fbb3a62ec01220428  libstdc++-v3/include/std/functional
! a54d64940eda350561f4ba0beebde6e7  libstdc++-v3/include/std/future
! d7e54ce63c756d943e981b79ad7b87b1  libstdc++-v3/include/std/iomanip
! 913326f95f00b67976b511c89ddf1668  libstdc++-v3/include/std/ios
! 1fa07fb54e534480c0163b8ede1e6416  libstdc++-v3/include/std/iosfwd
! 7d4512e3f3a1b2cce6ebeeadfc5eb944  libstdc++-v3/include/std/iostream
! 4237d61083038a112c4cf589d28a6cea  libstdc++-v3/include/std/istream
! d479c2c4f8009e121aec493d8b7ad36c  libstdc++-v3/include/std/iterator
! f6ccddf1e1d578eb6fe2b88c0d075040  libstdc++-v3/include/std/latch
! 6d03119fea141da6a85fd88481c923e1  libstdc++-v3/include/std/limits
! beb24c4055c34e1ca99669e732635eee  libstdc++-v3/include/std/list
! 0bfc184d3b61dd64372a51e3cec60045  libstdc++-v3/include/std/locale
! 3767a3595bdb50196b1ed2602c682a2d  libstdc++-v3/include/std/map
! 95160e90ba1e5991ad20ca031bda61c9  libstdc++-v3/include/std/memory
! d3321cd7ff9137a40be2b19a77b4a668  libstdc++-v3/include/std/memory_resource
! 6185fa777de9d0ffd588b3b4f694533a  libstdc++-v3/include/std/mutex
! 258094736c1a9827ac9b532d460fea3c  libstdc++-v3/include/std/numbers
! db7224ff7ecff429fbbb5705e8c9cd88  libstdc++-v3/include/std/numeric
! 0afe2c9e17818aafdf3bc07991995e14  libstdc++-v3/include/std/optional
! e21684775dfcf87b9059ad483189890c  libstdc++-v3/include/std/ostream
! 678ed5570fa228987b1bd4c3b2ab38a9  libstdc++-v3/include/std/queue
! ad0c4543d69f42e0e141d6c961148a3c  libstdc++-v3/include/std/random
! 06a6bced334803f14bfbb171e02c1a74  libstdc++-v3/include/std/ranges
! 83fe6e62c45e5cbeb03e474f78fb84dd  libstdc++-v3/include/std/ratio
! 3ad3827bf7257834ed886bfc875792f6  libstdc++-v3/include/std/regex
! a36ee050c2d5e66519638b914997e074  libstdc++-v3/include/std/scoped_allocator
! 4afcdb7beade1642d1f3b27ba5e2bfa3  libstdc++-v3/include/std/semaphore
! 532b334aa304488bba0306ceae791981  libstdc++-v3/include/std/set
! 6f5c8b5ac435bdf64613896b8cc6908a  libstdc++-v3/include/std/shared_mutex
! 88a3179695d69d9d5efe8967df5bb8c1  libstdc++-v3/include/std/source_location
! 692e0b2c06c5d19ac5338d286eb7e5d7  libstdc++-v3/include/std/span
! e086a98622e688a0f02c701b33ae1b75  libstdc++-v3/include/std/spanstream
! 275b137855ae240ad345fcea64ce43d6  libstdc++-v3/include/std/sstream
! ddbf2edbc47249f513d1ec2ef82db9b7  libstdc++-v3/include/std/stack
! 2b7a02483347906531c65d675aca4296  libstdc++-v3/include/std/stacktrace
! 9a484d3a8b869e29b314e81780995cea  libstdc++-v3/include/std/stdexcept
! f609fb95e3bb7dc792c160642e325745  libstdc++-v3/include/std/stop_token
! 41d10501d4e6f65d267f4b3f86edf933  libstdc++-v3/include/std/streambuf
! 2050db70d23bce24c0db23f72bb7a5a4  libstdc++-v3/include/std/string
! 418a36401dfa5a9966f3e2e9c1c7836f  libstdc++-v3/include/std/string_view
! 6b175fdd1e71aabe6e03e47e736cb301  libstdc++-v3/include/std/syncstream
! 5188da0659a253f7b9e43730cb950d43  libstdc++-v3/include/std/system_error
! 24eb77922c50d9b3b619bfc8385085b2  libstdc++-v3/include/std/thread
! ba850143aaf393fbbaec14b91f50a098  libstdc++-v3/include/std/tuple
! c38f612b4a612e05a89996bc4800c747  libstdc++-v3/include/std/type_traits
! 405de94a2049d47cf0dcc1e507c130c2  libstdc++-v3/include/std/typeindex
! e0d09909dcd7c11289f99688cf4d10ea  libstdc++-v3/include/std/unordered_map
! 5459f248f78edae0347566854a6618a0  libstdc++-v3/include/std/unordered_set
! fd851f22b27e7743e814a5b580b5bb9b  libstdc++-v3/include/std/utility
! 149c26b1435920f1d1b70abd61c6c8c0  libstdc++-v3/include/std/valarray
! c419fc1830efc966db8128b8a6396ea1  libstdc++-v3/include/std/variant
! 3a32d802d4e23e09e723dfe0459079e5  libstdc++-v3/include/std/vector
! 601010d991d21f746d624614089f8e8e  libstdc++-v3/include/std/version
! 315a0c0dcb63f40cf8755bfeedce3f87  libstdc++-v3/include/tr1/array
! 139db14b8081c7badfbcd583df0ebeba  libstdc++-v3/include/tr1/bessel_function.tcc
! 3814625b72a63d974b4e152ce95a3100  libstdc++-v3/include/tr1/beta_function.tcc
! 650f965e10924a1710492d8236170a05  libstdc++-v3/include/tr1/ccomplex
! 88ceaeaccbd8481c7e2e175164240ee4  libstdc++-v3/include/tr1/cctype
! 0a5899c64e5fc704ec2d0c09d289db4d  libstdc++-v3/include/tr1/cfenv
! 1ca726d8789e1bd9da38b21503f75472  libstdc++-v3/include/tr1/cfloat
! a298af309d68732eab1a15da63c3f13f  libstdc++-v3/include/tr1/cinttypes
! 3494e8975f5a0ce2a4ff85d68ea1b68b  libstdc++-v3/include/tr1/climits
! 2cd91066447ad1fef79401fa718e8cfa  libstdc++-v3/include/tr1/cmath
! a39f95af7efa57f210cff2c2db6d1efa  libstdc++-v3/include/tr1/complex
! d5e9065a7517536e90301ba4e2cab91b  libstdc++-v3/include/tr1/complex.h
! 264a64aa0a03b4952408b75a56e01a60  libstdc++-v3/include/tr1/cstdarg
! ef9eb61ae80fd902df3041a146fa33da  libstdc++-v3/include/tr1/cstdbool
! 622698bc5a673f0bd15f9e36aff0b506  libstdc++-v3/include/tr1/cstdint
! 9774c1b9def0cfaeec80c9e9125bb5db  libstdc++-v3/include/tr1/cstdio
! 11611b5e80560071ae27cf7c60b3174e  libstdc++-v3/include/tr1/cstdlib
! af92a72bc2fc9bed8cc93d549e22de12  libstdc++-v3/include/tr1/ctgmath
! 064a2d87aec13d0c39ab53a27f8ad294  libstdc++-v3/include/tr1/ctime
! 05a26dec27ab4ddcb3db77e550ebeaf1  libstdc++-v3/include/tr1/ctype.h
! b261ef6aa59f3e5c693f9472b2a72fff  libstdc++-v3/include/tr1/cwchar
! 6de8080c153a3cef1f244decf5a4a1b5  libstdc++-v3/include/tr1/cwctype
! a50397713722d94f072e7e3543b3373a  libstdc++-v3/include/tr1/ell_integral.tcc
! 089355d058f95be4256b522be5de9e87  libstdc++-v3/include/tr1/exp_integral.tcc
! 7accd6675f01364bc4e7409041150968  libstdc++-v3/include/tr1/fenv.h
! 940fa62fcb26ace3d20b2d7e6e32a4df  libstdc++-v3/include/tr1/float.h
! fdba68af94a74366212fd084e7c7ddfa  libstdc++-v3/include/tr1/functional
! ba04ad61f5148ce1c76b5aaf239ce676  libstdc++-v3/include/tr1/functional_hash.h
! 33e4ea299d36ac46616535879605621f  libstdc++-v3/include/tr1/gamma.tcc
! f2180c33049fe10aef73cebedcaad3b7  libstdc++-v3/include/tr1/hashtable.h
! d71713308a795f46639f0f9e242936bd  libstdc++-v3/include/tr1/hashtable_policy.h
! ffa8ed275317754f07747730b1cfdac5  libstdc++-v3/include/tr1/hypergeometric.tcc
! dcc5ffc62531b57374f558509bfb63de  libstdc++-v3/include/tr1/inttypes.h
! ea6288fcbcc3648ffdca5a84beb29d99  libstdc++-v3/include/tr1/legendre_function.tcc
! 26f3aa82f228b84f57f23bf5962263c1  libstdc++-v3/include/tr1/limits.h
! 99840472637301bdbffc4f74cbe7ac77  libstdc++-v3/include/tr1/math.h
! 6cad79106d40dbe1ce33b2b390f24227  libstdc++-v3/include/tr1/memory
! c2b82f1ec26449e706bf42dbc423cce3  libstdc++-v3/include/tr1/modified_bessel_func.tcc
! 9e7fb24c26b7dc610d52b15fc8d962b0  libstdc++-v3/include/tr1/poly_hermite.tcc
! 3c7e16759b4b31a9fd9ab515fd534ba3  libstdc++-v3/include/tr1/poly_laguerre.tcc
! 5e30ae96813cfbec9bd48b56c3dfbc4f  libstdc++-v3/include/tr1/random
! e5543bf60423432951d5677d8927538c  libstdc++-v3/include/tr1/random.h
! 5cbe1c47667aabc8ad562a20251da4eb  libstdc++-v3/include/tr1/random.tcc
! 9c9c80d80e18bde4c10a70f604aa84ac  libstdc++-v3/include/tr1/regex
! b9e0b5ba8f9e359551ab9e576bb0c6f2  libstdc++-v3/include/tr1/riemann_zeta.tcc
! b94f798b5b544fdba86b8aa0b8738475  libstdc++-v3/include/tr1/shared_ptr.h
! 390bba75958dc6f086672901b3fa3972  libstdc++-v3/include/tr1/special_function_util.h
! efa507808063e166feef7139da7ced44  libstdc++-v3/include/tr1/stdarg.h
! 16784b4494d07cfbcf24f28748731a1c  libstdc++-v3/include/tr1/stdbool.h
! dc24d9387a29f5dc04e1e82265085b5b  libstdc++-v3/include/tr1/stdint.h
! da593b988cdf9c386b1413375904eab0  libstdc++-v3/include/tr1/stdio.h
! cbc403212a326838fcd58106c8cdd29a  libstdc++-v3/include/tr1/stdlib.h
! 55312ac976a5f619988a484d504ed0f1  libstdc++-v3/include/tr1/tgmath.h
! 07633ccdb2c37ee4a7c9355561d82ebd  libstdc++-v3/include/tr1/tuple
! c9d09147d012170310b67af0c6acc907  libstdc++-v3/include/tr1/type_traits
! bad1085cdb2d29c1f5c994a81c6b9caf  libstdc++-v3/include/tr1/unordered_map
! c930d4036922201099619257d25a2245  libstdc++-v3/include/tr1/unordered_map.h
! 0248969086d7c4e1fec393298cdd8851  libstdc++-v3/include/tr1/unordered_set
! 278c948bd86010862886d15bb523d196  libstdc++-v3/include/tr1/unordered_set.h
! 215d346485e8c9503987817648f81c02  libstdc++-v3/include/tr1/utility
! 64b3ee63e50594590c0634e40ed5f0a2  libstdc++-v3/include/tr1/wchar.h
! 064789c496f0f70ebb4edbc0b7e4a666  libstdc++-v3/include/tr1/wctype.h
! 27d05cea5b02463850117b8476f2ec42  libstdc++-v3/include/tr2/bool_set
! 917d83e0b0ee35850a1a637a3eee75c9  libstdc++-v3/include/tr2/bool_set.tcc
! 6170b319c367c15cc44b854b464396c2  libstdc++-v3/include/tr2/dynamic_bitset
! 4384700c62cb70a7774717710cac4c07  libstdc++-v3/include/tr2/dynamic_bitset.tcc
! 88ca2da6dd5700f0e05d5f58e8fa62ef  libstdc++-v3/include/tr2/ratio
! 632570c5614f68ebbbf25e6b74a12da2  libstdc++-v3/include/tr2/type_traits
! 4daa7113f4ebba675c4ef23b11602d2e  libstdc++-v3/libsupc++/Makefile.am
! ad30d9aa6fbfa82c6dcb69892d10681b  libstdc++-v3/libsupc++/Makefile.in
! 96d5d64fad06961ea529f30e07345f14  libstdc++-v3/libsupc++/array_type_info.cc
! dce6f8e3d6b965cd0fd40f034b78a74d  libstdc++-v3/libsupc++/atexit_arm.cc
! 64a51042a2c5073bdb6689e6239ef0ed  libstdc++-v3/libsupc++/atexit_thread.cc
! 777b08d4b2d3316b999e2d084b08be32  libstdc++-v3/libsupc++/atomic_lockfree_defines.h
! 11e2034b1a09f23263659e709d239a07  libstdc++-v3/libsupc++/bad_alloc.cc
! 71fb317aaa7b88832c691b2cfef56a68  libstdc++-v3/libsupc++/bad_array_length.cc
! a397502b691bf0d7a9c7b63f63454f98  libstdc++-v3/libsupc++/bad_array_new.cc
! 9621209250aecea504557e963c18f934  libstdc++-v3/libsupc++/bad_cast.cc
! 188845aff865b6e18ffa32ad7980fc9d  libstdc++-v3/libsupc++/bad_typeid.cc
! 906126d53d76811a79332da443119279  libstdc++-v3/libsupc++/class_type_info.cc
! 31f5ffc107b8635ae5c3c63e619e7c52  libstdc++-v3/libsupc++/compare
! a8ca959615041ec3243af356f4ecc624  libstdc++-v3/libsupc++/cxxabi.h
! ab128a36728911fa441f71f19397c91f  libstdc++-v3/libsupc++/cxxabi_forced.h
! c0c7802c5e0096ab182755f808164e5a  libstdc++-v3/libsupc++/cxxabi_init_exception.h
! 60bb4069fc06de12df9cb43ad21c79ae  libstdc++-v3/libsupc++/del_op.cc
! 7f855cd5f1f241ffab0d9ca14d2c3c5d  libstdc++-v3/libsupc++/del_opa.cc
! 8ef5bb06ac7b1dc1a42948ad7e78cdf9  libstdc++-v3/libsupc++/del_opant.cc
! 53eed11da7f2827888c25a3650a4b10e  libstdc++-v3/libsupc++/del_opnt.cc
! 0227c90ce95a0619a0edb2973679699b  libstdc++-v3/libsupc++/del_ops.cc
! 2fb1c76149deed5fcb79265cbad8d2a5  libstdc++-v3/libsupc++/del_opsa.cc
! b32cc935747c3f297faeb3662c022d45  libstdc++-v3/libsupc++/del_opv.cc
! 72a323dcbcc2ba323bc1b438d6a09849  libstdc++-v3/libsupc++/del_opva.cc
! 7c0ba418c387b7a41197971d819adc68  libstdc++-v3/libsupc++/del_opvant.cc
! d1fc9881a3db090a0f325f1c4a2798ea  libstdc++-v3/libsupc++/del_opvnt.cc
! a6523b87702e9a279ea3535cc67d1913  libstdc++-v3/libsupc++/del_opvs.cc
! 4553a5840fdaf44f797c75626357aa0d  libstdc++-v3/libsupc++/del_opvsa.cc
! 697bb5f4b6a7a8c00c03537caa5743d5  libstdc++-v3/libsupc++/dyncast.cc
! 76711f46ceb1893d1a6dc4b6b6c8334a  libstdc++-v3/libsupc++/eh_alloc.cc
! 60fbc2c9e1391ecd8b9c1dcad75beb25  libstdc++-v3/libsupc++/eh_arm.cc
! d9fad0164214a24429310b8e7c123505  libstdc++-v3/libsupc++/eh_atomics.h
! 892dd70e6e7efdbaab2ca082a7b4486f  libstdc++-v3/libsupc++/eh_aux_runtime.cc
! 2826e5c2de48542ba3ce264b3320d192  libstdc++-v3/libsupc++/eh_call.cc
! f9a2b6ce76ea27f40df988fb955d2de1  libstdc++-v3/libsupc++/eh_catch.cc
! 3da7f2c6cfa1995c8968405d9ee450b6  libstdc++-v3/libsupc++/eh_exception.cc
! b91c3965d326a06d2e4441cc30fe7731  libstdc++-v3/libsupc++/eh_globals.cc
! 7ccbc99cfaa5318038f64dbee140946b  libstdc++-v3/libsupc++/eh_personality.cc
! 1c54e24b64de6b013027e51c6377a701  libstdc++-v3/libsupc++/eh_ptr.cc
! d385138666c69cff7ca02656c9f9ed79  libstdc++-v3/libsupc++/eh_term_handler.cc
! 543912749d5213a6907d1bafadb3a0f3  libstdc++-v3/libsupc++/eh_term_handler.h
! 911784a6bbd6d231874a1951d1e67ae1  libstdc++-v3/libsupc++/eh_terminate.cc
! 0b5a95607cdc3334d0f81bd87dead1ed  libstdc++-v3/libsupc++/eh_throw.cc
! b5f52a829dccae720c13a2b8d74dbbf2  libstdc++-v3/libsupc++/eh_tm.cc
! 079841166bad124af7a0aa883becc30c  libstdc++-v3/libsupc++/eh_type.cc
! 0d94cfa31dfadf2483b422504b090d4b  libstdc++-v3/libsupc++/eh_unex_handler.cc
! dd79628835db55b2e3ac0f19e6d67f4b  libstdc++-v3/libsupc++/enum_type_info.cc
! 6b7e04711d0d81627261d8d8d19988de  libstdc++-v3/libsupc++/exception
! c63781c44ea62d41d540e3dc9df083ad  libstdc++-v3/libsupc++/exception.h
! 7831f52e348280d54cdefd954a8125ae  libstdc++-v3/libsupc++/exception_defines.h
! e8a32dcadc5d06d341e371fb480b7b44  libstdc++-v3/libsupc++/exception_ptr.h
! e9526cde45ad82aac1bdad78e48b77d9  libstdc++-v3/libsupc++/function_type_info.cc
! 19738f26bfd633c091434c2b3a705170  libstdc++-v3/libsupc++/fundamental_type_info.cc
! 2a200bb5c53b0893bf37016eaa025581  libstdc++-v3/libsupc++/guard.cc
! 06a221e91b546671efa1f24b49ccfe3c  libstdc++-v3/libsupc++/guard_error.cc
! 5e7a1898ab075ba01f71e5642c58fe6d  libstdc++-v3/libsupc++/hash_bytes.cc
! da625ab4397a07b2b30e11330b510592  libstdc++-v3/libsupc++/hash_bytes.h
! c94b94493253b00efeca143731e6bfbd  libstdc++-v3/libsupc++/initializer_list
! b736a3e0c3130311d7283d2e42b337ae  libstdc++-v3/libsupc++/nested_exception.cc
! 6755474390a686b5c656c90169fe7622  libstdc++-v3/libsupc++/nested_exception.h
! 008264d01c4067464408c9777e292ee3  libstdc++-v3/libsupc++/new
! 87c7167973517867f1dce7e6537f5493  libstdc++-v3/libsupc++/new_handler.cc
! a0242b24fe3d20508b195a569e213580  libstdc++-v3/libsupc++/new_op.cc
! 9147256faba7ae3d5c4e9400ed523a35  libstdc++-v3/libsupc++/new_opa.cc
! db5414821a05e8baefb055b0be852385  libstdc++-v3/libsupc++/new_opant.cc
! fd977844781418fe90162ecd1a5bdcbe  libstdc++-v3/libsupc++/new_opnt.cc
! 5bc9c32dd691fa3053c50c840c28112d  libstdc++-v3/libsupc++/new_opv.cc
! ce975f471cbdb866fe634e46032451c2  libstdc++-v3/libsupc++/new_opva.cc
! 7c2d8b04ea28b81f746a1ae9162821cd  libstdc++-v3/libsupc++/new_opvant.cc
! 136973bc814fe0676d13253d21a6ce15  libstdc++-v3/libsupc++/new_opvnt.cc
! 0f98af332a5a67ef6244234aed3b0034  libstdc++-v3/libsupc++/pbase_type_info.cc
! 48b73bc57692e0bc4fb9d2c4c5002374  libstdc++-v3/libsupc++/pmem_type_info.cc
! 04e00d54d3db15807429587a0114cd35  libstdc++-v3/libsupc++/pointer_type_info.cc
! ec14578ac4f5572b981b4350fe944edb  libstdc++-v3/libsupc++/pure.cc
! 0979a6148b92e59039718d6ff472e5d9  libstdc++-v3/libsupc++/si_class_type_info.cc
! 9ec42d9cdfccfc70832cc59949bcc663  libstdc++-v3/libsupc++/tinfo.cc
! 2454dc69bbe74c344cb484af1679cbb6  libstdc++-v3/libsupc++/tinfo.h
! 82146bc426a54e3b998490ee6a488e6e  libstdc++-v3/libsupc++/tinfo2.cc
! c8df4840cd2ad7a09e3698e0ef09336b  libstdc++-v3/libsupc++/typeinfo
! 1df8b124dae04bd0ff38bec0e131403d  libstdc++-v3/libsupc++/unwind-cxx.h
! a14ef77a81fadfd54e408d6498a9efc7  libstdc++-v3/libsupc++/vec.cc
! b44bc936a5d2b8d071a7aa6cdf382ae8  libstdc++-v3/libsupc++/vmi_class_type_info.cc
! 7b3ad23245ee78de0393c6605b3f6034  libstdc++-v3/libsupc++/vterminate.cc
! f9461feacc2d371610b57973002b4d61  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
! 28d5d034cce163e814a577c4d5818e26  libstdc++-v3/po/Makefile.am
! 3be54961a3a3bbee9a88b4feec088d61  libstdc++-v3/po/Makefile.in
! a81684dce7540023c47bfe8af99fb4b1  libstdc++-v3/po/POTFILES.in
! 54d4e9197fb238458c8f08864c5b7e03  libstdc++-v3/po/de.po
! 8a705eb0cb1a3a35f0b97a5e0926513d  libstdc++-v3/po/fr.po
! 448166b6f30d75c39a5066be7c7045fe  libstdc++-v3/po/libstdc++.pot
! 8d45ec90fdb2b621a6e2d44ea3fde31a  libstdc++-v3/po/string_literals.cc
! c8cbca9ae8196cdff7586f9cd8784702  libstdc++-v3/python/Makefile.am
! 7dac9d0e9688e515fddb09dd28e478e6  libstdc++-v3/python/Makefile.in
! 99337a5a9c6351ae321ba8645b3981f0  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
! 9b4aa298a5559f01a31b4252b2ca34c7  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 51dc070f3c393db97de3424daef0400e  libstdc++-v3/python/libstdcxx/v6/printers.py
! 715a28ac117c1e22d8fa5710c31fb527  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  a4c1d51bba293cee2307fc7f9dd090f7  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
  40f8ee10a4683f6c7f555f9450fcaa12  libstdc++-v3/scripts/create_testsuite_files
! 03e2e969a118c4640e7ce5e696d6c36a  libstdc++-v3/scripts/extract_symvers.in
! e5254f12410a36e94ee38b08c1d35033  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
  85378fa65bc3dc46ffe255374b304560  libstdc++-v3/scripts/gen_includers.pl
  f1a84a17158780aaa37927191db4463a  libstdc++-v3/scripts/gen_includers2.pl
  c3455b8d87dcefd65c7fdcd24e4ce3a4  libstdc++-v3/scripts/make_exports.pl
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
! 5ff227cd3c32bd4bc544e3cf53d77ccd  libstdc++-v3/scripts/run_doxygen
  b5c90557075248abb064905101257dda  libstdc++-v3/scripts/testsuite_flags.in
! 2800ac0fcda73864d0a7c766563eff44  libstdc++-v3/src/Makefile.am
! 29f868c8cffdab36350b47e3a9c36917  libstdc++-v3/src/Makefile.in
! a8ffe2ad24249db68c5a7ced143fe7f2  libstdc++-v3/src/c++11/Makefile.am
! 44f21e2ab368caf32eb97e02b83eb91d  libstdc++-v3/src/c++11/Makefile.in
! 1bac4c8b59f3d07015bc54141666c8dd  libstdc++-v3/src/c++11/chrono.cc
! ce82126cc7bbe2c763c5eff99de9a963  libstdc++-v3/src/c++11/codecvt.cc
! 6f4d4569f8ec67d46c6dcf972c0d8937  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
! 9653bdd9c763b1e15e1a47bd5d1e7402  libstdc++-v3/src/c++11/compatibility-c++0x.cc
! 822301c830c65bb2a495049efd0e0501  libstdc++-v3/src/c++11/compatibility-chrono.cc
! c55256a2404a751a9d0e91efa132e1c3  libstdc++-v3/src/c++11/compatibility-condvar.cc
! 706be41734f65fd49abdd4588859dea1  libstdc++-v3/src/c++11/compatibility-ldbl-alt128-cxx11.cc
! ba35560b9593674f94b8e5cc2fa5c6a6  libstdc++-v3/src/c++11/compatibility-ldbl-alt128.cc
! 8d462d7c234a7824f70c654a77fd0343  libstdc++-v3/src/c++11/compatibility-ldbl-facets-aliases.h
! 47fa47dc9800c7194df096036a780a5a  libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
! 936c3c006efff078161dc4ea908eff51  libstdc++-v3/src/c++11/condition_variable.cc
! 0a2f98e6dce0f4843b63c6f18fed049b  libstdc++-v3/src/c++11/cow-fstream-inst.cc
! 8ef14c27c500b1c2ae8c88191aa07f4f  libstdc++-v3/src/c++11/cow-locale_init.cc
! 028e981121bf18b66ccca15805106043  libstdc++-v3/src/c++11/cow-shim_facets.cc
! 31472dd1bfdf8957e53874aed4f1dafb  libstdc++-v3/src/c++11/cow-sstream-inst.cc
! 1b3ae4c34ebbbfffc2251d4e64d0c361  libstdc++-v3/src/c++11/cow-stdexcept.cc
! c0ce22782698f527aa23c86081579318  libstdc++-v3/src/c++11/cow-string-inst.cc
! 154ddceb8ca986c0dc366a0812ef8ef3  libstdc++-v3/src/c++11/cow-string-io-inst.cc
! 11e79d32ca45f730b2fcf087bf707f27  libstdc++-v3/src/c++11/cow-wstring-inst.cc
! 34013ac6f0c009bdc4fc5d4d23116907  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
! 0ffe33e0294c73de4e1a1df88f8df7c0  libstdc++-v3/src/c++11/ctype.cc
! 48454e445176805f4a07c59b1c3c864a  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 5d07dfc71617ceedad624070f03c33ce  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
! 83d245a049fa447bae2f2142800cf390  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! 1873f8363e67f6beac3a8f0cb4ea8b08  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
! 077ed5dbaeb50d017644c6a26b19acf5  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
! d13ab90d7b02d7fa901c3b5c1ec93519  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
! 6f95f475b9b606e7e6585cfa7b4fb01e  libstdc++-v3/src/c++11/debug.cc
! ccc01b37e3b2bb8b326ea8036a900a13  libstdc++-v3/src/c++11/ext11-inst.cc
! 3a70dd8395391521505453d2cf8b6304  libstdc++-v3/src/c++11/fstream-inst.cc
! 809f713df54dbe4ce5d5840f7bf50c53  libstdc++-v3/src/c++11/functexcept.cc
! 2033bac48002d45217b1c077212a647e  libstdc++-v3/src/c++11/functional.cc
! d873396e67fe09a8445f0a77fd7ccace  libstdc++-v3/src/c++11/futex.cc
! 3a2d8455301f1d874223a36b2fbd4174  libstdc++-v3/src/c++11/future.cc
! 5d36b6e54dbcf6cdce5b1dc770358504  libstdc++-v3/src/c++11/hash_c++0x.cc
! a1c900a66bb1227423f75518c8dcc072  libstdc++-v3/src/c++11/hashtable_c++0x.cc
! 06f5ac68c59fec54e3165c27ce3b6359  libstdc++-v3/src/c++11/ios-inst.cc
! addfb1a881b92c043a73fea0c4d96d01  libstdc++-v3/src/c++11/ios.cc
! 2f05b820df2ee0450c5f389d39dffa14  libstdc++-v3/src/c++11/iostream-inst.cc
! b3031e98791762c5d41011e809a99ef4  libstdc++-v3/src/c++11/istream-inst.cc
! 6fbecc08d6d967423ef03c2b73ff91ff  libstdc++-v3/src/c++11/limits.cc
! e4833f512f645af1dbddd845514961ba  libstdc++-v3/src/c++11/locale-inst-monetary.h
! e5997c16440b356fb9bafa6b6b32d267  libstdc++-v3/src/c++11/locale-inst-numeric.h
! 0d082726ea4c799c9106352de89fa707  libstdc++-v3/src/c++11/locale-inst.cc
! 41f35b2b03d66226af80e09b20d45f21  libstdc++-v3/src/c++11/mutex.cc
! be6aa69410374ac46ce4ec6dbcb492d2  libstdc++-v3/src/c++11/mutex_pool.h
! 8d85eefdef153bc5d68edcabf4ea62e3  libstdc++-v3/src/c++11/ostream-inst.cc
! 52e628d1b81450210983ae64874e17cb  libstdc++-v3/src/c++11/placeholders.cc
! 7fa2db7f70b6057063f400f071505931  libstdc++-v3/src/c++11/random.cc
! d50a4fa18b606f7368ff64878f408362  libstdc++-v3/src/c++11/regex.cc
! 47755eae50647f183ee9af570473fcc1  libstdc++-v3/src/c++11/shared_ptr.cc
! 4c597de4f39e5d17dc60f245508e1d84  libstdc++-v3/src/c++11/snprintf_lite.cc
! ec9c72a5ee0ff6169c89816cd997fc7f  libstdc++-v3/src/c++11/sso_string.cc
! 4880fa9beb169f181fae91996b00b42b  libstdc++-v3/src/c++11/sstream-inst.cc
! 62d68a338d9d558342a64e3812f42370  libstdc++-v3/src/c++11/streambuf-inst.cc
! 3f5be41744a83869e79685eee51be75b  libstdc++-v3/src/c++11/string-inst.cc
! bfd5afa319b8c484af4d2d6a9c51d6cd  libstdc++-v3/src/c++11/string-io-inst.cc
! 717b2a0cb6ad2cc5a04c8d7488b8bf50  libstdc++-v3/src/c++11/system_error.cc
! e224dbd54286756dd3434a53e714ba2f  libstdc++-v3/src/c++11/thread.cc
! cfb4d4117b273737a07a71762eae15d1  libstdc++-v3/src/c++11/wlocale-inst.cc
! ef307f9cecfa67b64519d3c87e2d7cbf  libstdc++-v3/src/c++11/wstring-inst.cc
! 94cd38eec1560b83e468c502c5120b83  libstdc++-v3/src/c++11/wstring-io-inst.cc
! 48c443de8335aa0a19ad7c9e42d0e9ed  libstdc++-v3/src/c++17/Makefile.am
! 21cee0931b715ab952afbb0c00d47854  libstdc++-v3/src/c++17/Makefile.in
! ff90cd750b1d470087100e4c71bc23af  libstdc++-v3/src/c++17/cow-fs_dir.cc
! f5687fbe038eb77175fa205cf20d2cdf  libstdc++-v3/src/c++17/cow-fs_ops.cc
! fc4fa3c7ade9a0b45821c3daa9c158a0  libstdc++-v3/src/c++17/cow-fs_path.cc
! 21a327dfa8f9d7a81a99ca69aa3173f5  libstdc++-v3/src/c++17/cow-string-inst.cc
  21e22ff1ddec6a91c7b379d6f6398649  libstdc++-v3/src/c++17/default_resource.h
! 16094af6c43bdd857d998558fb1c3fae  libstdc++-v3/src/c++17/fast_float/LOCAL_PATCHES
! bccfdaafbb95c858e37317d0863bce04  libstdc++-v3/src/c++17/fast_float/MERGE
! 3729955dbdfb8c863ff576d8d2d1f92f  libstdc++-v3/src/c++17/fast_float/README.md
! 612ba04cddc690a17391308c09e57504  libstdc++-v3/src/c++17/fast_float/fast_float.h
! 099e290dd722b0920d14e94401e0bb16  libstdc++-v3/src/c++17/floating_from_chars.cc
! 73812a0c249f1a107c6747054f47134b  libstdc++-v3/src/c++17/floating_to_chars.cc
! bb0739a0b76ea0dfca5442362e727905  libstdc++-v3/src/c++17/fs_dir.cc
! f18914c2d87f1a345633186481c19e16  libstdc++-v3/src/c++17/fs_ops.cc
! 812bd82e07a364a666c3339a6a598e1b  libstdc++-v3/src/c++17/fs_path.cc
! 73c96fa75ba071e3d41297c549483c3f  libstdc++-v3/src/c++17/memory_resource.cc
! f986a48e2efed103402262a2315d1784  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
  e225c39ccc4c6adc72a744687977d59d  libstdc++-v3/src/c++17/ryu/MERGE
  5c512389f4cbe0ea37ce2a8da0f070d6  libstdc++-v3/src/c++17/ryu/common.h
--- 113260,114328 ----
  cd6d12f87a30d3b85d80833476c19995  libstdc++-v3/doc/xml/manual/mt_allocator.xml
  42b8355117a7bd9aa755048290e70d2c  libstdc++-v3/doc/xml/manual/numerics.xml
  7edd591e15a0bbc76d58e9edcb7c28d1  libstdc++-v3/doc/xml/manual/parallel_mode.xml
! 7c390b245068bcc2f3f52590bdf8526f  libstdc++-v3/doc/xml/manual/policy_data_structures.xml
! 26c588a0ffa7f8fc5b3e09d398c52a3f  libstdc++-v3/doc/xml/manual/policy_data_structures_biblio.xml
  f25986e96331b9ee671b4fe62ab33a1c  libstdc++-v3/doc/xml/manual/prerequisites.xml
! ab6d91afc9a36e19a6524c6ca834170a  libstdc++-v3/doc/xml/manual/shared_ptr.xml
! d7f222c42325cd44eadad2c59eef7e6f  libstdc++-v3/doc/xml/manual/spine.xml
! 21b4ad60404b59dfe18632c7f5a6d317  libstdc++-v3/doc/xml/manual/status_cxx1998.xml
! dd1868c982334898ded3dfccd6630034  libstdc++-v3/doc/xml/manual/status_cxx2011.xml
! bc1b095a202e3144ab26eccfbe5c7d5b  libstdc++-v3/doc/xml/manual/status_cxx2014.xml
! 3db9528acbf4618028bf64cec00ff113  libstdc++-v3/doc/xml/manual/status_cxx2017.xml
! c80ba44d96cd938ff376c426453aab8b  libstdc++-v3/doc/xml/manual/status_cxx2020.xml
! 51214bfe6323bf5943402eaed924c87e  libstdc++-v3/doc/xml/manual/status_cxx2023.xml
  e12241b98a6c1e835b7b1d1bb31761ca  libstdc++-v3/doc/xml/manual/status_cxxis29124.xml
! b68740adf6b2050af454bcd3fceb6fd5  libstdc++-v3/doc/xml/manual/status_cxxtr1.xml
! 0b3c686ccfbe056f383714351bf5c272  libstdc++-v3/doc/xml/manual/status_cxxtr24733.xml
  49334f70b9df9a3f9b81e04a418e8066  libstdc++-v3/doc/xml/manual/strings.xml
  2b80feb1b53a8d0895a292620ec430b2  libstdc++-v3/doc/xml/manual/support.xml
! 5d2ddc339bb3f30f471747bc41795b38  libstdc++-v3/doc/xml/manual/test.xml
  e2e099be3dd6a4b7a940a7232635ee2c  libstdc++-v3/doc/xml/manual/test_policy_data_structures.xml
! a7afe1028c10edb92120d0955c908cdd  libstdc++-v3/doc/xml/manual/using.xml
! 8b2ecaf4e0a66bc6db1724038373671a  libstdc++-v3/doc/xml/manual/using_exceptions.xml
  74a5acaa32b3d223bd413c1bb5b69ac6  libstdc++-v3/doc/xml/manual/utilities.xml
! 0c8bbf7c330217f862dd4871a5ba88d0  libstdc++-v3/doc/xml/spine.xml
  bd966b4a0df6f2a84f9770525581d45c  libstdc++-v3/doc/xsl/customization.xsl.in
  42d14268f2b16c54a6bc2f71538a838c  libstdc++-v3/fragment.am
! ec4742ec79289d8610d3b623024bfc65  libstdc++-v3/include/Makefile.am
! e87263502efcb2ae872c9697b0b289f2  libstdc++-v3/include/Makefile.in
! 635fa963aca5bb732d67d0a6cf123d49  libstdc++-v3/include/backward/auto_ptr.h
! 3891b4a9a440e23e9dbeb63ad4a574a8  libstdc++-v3/include/backward/backward_warning.h
! e02493032a8d5d253583cbe07c20929d  libstdc++-v3/include/backward/binders.h
! 55ac991b3eb665d64d44e0b594c1a9cc  libstdc++-v3/include/backward/hash_fun.h
! 2f2af3d2ec0fb40b8df8ff765a022c5a  libstdc++-v3/include/backward/hash_map
! f2a02916dfbcc5c872e82dee57cc995e  libstdc++-v3/include/backward/hash_set
! cce6f84ea2420e7014deec8f87d193d3  libstdc++-v3/include/backward/hashtable.h
! b02f5606f63dce8874cb7b42b6fffd42  libstdc++-v3/include/backward/strstream
! b9130337fad9e31ee542b0c97f3ed728  libstdc++-v3/include/bits/algorithmfwd.h
! 0e756c493e3d685fa91b69d63d8b7d9c  libstdc++-v3/include/bits/align.h
! 03a5dacef4a19384abf9bee5e839c757  libstdc++-v3/include/bits/alloc_traits.h
! b7a02d402cc5dc3b5900e144b1443bb7  libstdc++-v3/include/bits/allocated_ptr.h
! 9139beb5391dac1421727b85e114b3d4  libstdc++-v3/include/bits/allocator.h
! c5174ab6282ecbeced42a602ef71aa54  libstdc++-v3/include/bits/atomic_base.h
! 32bb2eb4f10336b3a7bbcbcb3e7b2697  libstdc++-v3/include/bits/atomic_futex.h
! 10c6f59884b2d39c8bfaeb46e55b914d  libstdc++-v3/include/bits/atomic_timed_wait.h
! 38c23d13fc3665d7eee0a9afcf8bc17d  libstdc++-v3/include/bits/atomic_wait.h
! 7a572f1436f9b069a82a366cd364af5c  libstdc++-v3/include/bits/basic_ios.h
! f72ffffc3ea2a2cb85b705217a116e9e  libstdc++-v3/include/bits/basic_ios.tcc
! 443d63ff1f1c99d89f9f60a4b75e8b36  libstdc++-v3/include/bits/basic_string.h
! a30e22fed723da9717a28975ca73e326  libstdc++-v3/include/bits/basic_string.tcc
! 12d210ea7f6b7aff57c126940f016d55  libstdc++-v3/include/bits/boost_concept_check.h
! 588d77b5caf0f9ab703289024f7faf88  libstdc++-v3/include/bits/c++0x_warning.h
! 0db914ce3afb935ae5ae23a1f37308c8  libstdc++-v3/include/bits/c++config
! 2baac6346fbf3360f5a1e579226373f9  libstdc++-v3/include/bits/char_traits.h
! 0a14bf55d3849f91b6f272370226f0b8  libstdc++-v3/include/bits/charconv.h
! 4ac4d19930df81feee96a015879eb626  libstdc++-v3/include/bits/chrono.h
! 336606d5376d498361aa5024ea8bb29e  libstdc++-v3/include/bits/chrono_io.h
! 99228a8561efb5af08fdf896e792dbd3  libstdc++-v3/include/bits/codecvt.h
! 02b297f22d933704022d62bb998083b6  libstdc++-v3/include/bits/concept_check.h
! 28c5284421b9e58348f428bc1eaf4bbf  libstdc++-v3/include/bits/cow_string.h
! d954ef085b8f02d0a654ba85e5171161  libstdc++-v3/include/bits/cpp_type_traits.h
! dd2d6ad4ef742a835282ef7c20df17d0  libstdc++-v3/include/bits/deque.tcc
! 144af56eb1fdcfa071b31d4e35716372  libstdc++-v3/include/bits/enable_special_members.h
! 9fbde52831f934ca63d09c817fe5f7b3  libstdc++-v3/include/bits/erase_if.h
! 3c0e0adad5c623199ae392900139f2bf  libstdc++-v3/include/bits/forward_list.h
! fc266b1bf548f2445b990be5c7f574c1  libstdc++-v3/include/bits/forward_list.tcc
! 3c9ce9142cb749cb8e47a7e446a7c750  libstdc++-v3/include/bits/fs_dir.h
! 01a4d96f29ae6ac0bb84541df306c3f5  libstdc++-v3/include/bits/fs_fwd.h
! 254fcd2d0a399cb31596c75aa676ce58  libstdc++-v3/include/bits/fs_ops.h
! 65ede47fa8bcf53e1aafdd90bd1f43fb  libstdc++-v3/include/bits/fs_path.h
! 7b28ba490fc5d3284644c6dbfd0eeb23  libstdc++-v3/include/bits/fstream.tcc
! 12eb9c8c9b5988c55937238fdc884ac3  libstdc++-v3/include/bits/functexcept.h
! fed35fb4e12ff04f01f0125e66325dd6  libstdc++-v3/include/bits/functional_hash.h
! fd5665870d6f833cfe3af7154f1e95a7  libstdc++-v3/include/bits/gslice.h
! cd3089d6e3bc34fe88ee488b5fa95f7c  libstdc++-v3/include/bits/gslice_array.h
! 7a1aea0765c5d3eda38245a20aa5ebc1  libstdc++-v3/include/bits/hashtable.h
! b6c1da481fe1c72cbec1f18e66f2bb2c  libstdc++-v3/include/bits/hashtable_policy.h
! 5d58aad0caa3e662650d4f9210a2e7b6  libstdc++-v3/include/bits/indirect_array.h
! 5c9dfe0c12f9c609716ed80b27ea7473  libstdc++-v3/include/bits/invoke.h
! 9f9c18891605c48f576cee879c306254  libstdc++-v3/include/bits/ios_base.h
! 0177f2702bc5b9d1cdc7b9049c8fdd12  libstdc++-v3/include/bits/istream.tcc
! 66af73c9ac7450bc197d74383bd35963  libstdc++-v3/include/bits/iterator_concepts.h
! d91ae1b601584d4c765d50f9d9b86877  libstdc++-v3/include/bits/list.tcc
! 56f636f54833b560098a6de5754d02b7  libstdc++-v3/include/bits/locale_classes.h
! 70c5eedadda89f7d8c0b0c6507df55cc  libstdc++-v3/include/bits/locale_classes.tcc
! 76da2539cfe743d42345c63e0e514a00  libstdc++-v3/include/bits/locale_conv.h
! 430651eae09aa9aab33723552132e6b1  libstdc++-v3/include/bits/locale_facets.h
! 1513b4b84e748e62522421d3d82fc18e  libstdc++-v3/include/bits/locale_facets.tcc
! 771fef7ddd10f5b7bc49075f5053bacb  libstdc++-v3/include/bits/locale_facets_nonio.h
! 59faf9f9f9abed543b2edad1f0b2964f  libstdc++-v3/include/bits/locale_facets_nonio.tcc
! e7037c9f7bba915cc571698cb6ce6ea9  libstdc++-v3/include/bits/localefwd.h
! 7f8a6ca1f8261c7d16092f2edd0a3bd8  libstdc++-v3/include/bits/mask_array.h
! e83cf611b0fc809b8d009a8de11ecd25  libstdc++-v3/include/bits/max_size_type.h
! 4800015cf21174b48859a189045845af  libstdc++-v3/include/bits/memory_resource.h
! f91bfefc8ffc8275f1860208a7ce4598  libstdc++-v3/include/bits/memoryfwd.h
! 84cddbff6b1351c412e83480e1a4739f  libstdc++-v3/include/bits/mofunc_impl.h
! 39f008907f2a7d7f6732963f4d2291b1  libstdc++-v3/include/bits/move.h
! 12f5ad319cadf9071cacd4f73057d844  libstdc++-v3/include/bits/move_only_function.h
! 4921ed78c50fb48b72f1f3cf83ff21b4  libstdc++-v3/include/bits/new_allocator.h
! c45efc1e3d5bde191ce4d0e6a41a4d76  libstdc++-v3/include/bits/node_handle.h
! 805d48778212d7bcf6e4201f891f03ca  libstdc++-v3/include/bits/ostream.tcc
! acc3c5b842d22ae52e5f0a6713275fef  libstdc++-v3/include/bits/ostream_insert.h
! ea9f3638ad1b48ca29f5994d80c71708  libstdc++-v3/include/bits/parse_numbers.h
! 300f427b788956b5dea03120b6635392  libstdc++-v3/include/bits/postypes.h
! 63ce3bdc6aaf8184d3aa92c8b6ce525f  libstdc++-v3/include/bits/predefined_ops.h
! 36ff2fd79ae09b6c831df559a05ae8eb  libstdc++-v3/include/bits/ptr_traits.h
! 6f8748cd857c9c56c92d71c2eb33d013  libstdc++-v3/include/bits/quoted_string.h
! 8eb4242469cc7145af27cc65b46e2115  libstdc++-v3/include/bits/random.h
! 222630b6321850e2882d0ff38972aa5c  libstdc++-v3/include/bits/random.tcc
! 473f8f1ef247a71477d517401689f0c9  libstdc++-v3/include/bits/range_access.h
! 77d322c823055aabe8ffa990d70b0c26  libstdc++-v3/include/bits/ranges_algo.h
! 0456f04c77137db2972b340487b1fdea  libstdc++-v3/include/bits/ranges_algobase.h
! 12a76c1b7d1a0d2fa1d155693458e373  libstdc++-v3/include/bits/ranges_base.h
! 130f0e54de161dc32742e62f03e44704  libstdc++-v3/include/bits/ranges_cmp.h
! 0169a884ede559c4f97d0f92430da167  libstdc++-v3/include/bits/ranges_uninitialized.h
! 34444684a042aadccb63e64d0fa438b2  libstdc++-v3/include/bits/ranges_util.h
! 5f28e5a597b4b84858ca077d118b7655  libstdc++-v3/include/bits/refwrap.h
! 6578fe4f222b797a9819bac2fff076aa  libstdc++-v3/include/bits/regex.h
! 63e9936bea1714cfe53cbeb20e2261ba  libstdc++-v3/include/bits/regex.tcc
! 093a9e6cddf80585a28f72f3b3919114  libstdc++-v3/include/bits/regex_automaton.h
! 431d58faa74d17aed8a543d406a6cff6  libstdc++-v3/include/bits/regex_automaton.tcc
! d0185a0935bbce160f36ba8d07fd7679  libstdc++-v3/include/bits/regex_compiler.h
! 3165a3840032b820376dc39675396cd4  libstdc++-v3/include/bits/regex_compiler.tcc
! 41be9061647eafed77fbf93815faa644  libstdc++-v3/include/bits/regex_constants.h
! bab03b51484604b9075a12c146b15eb9  libstdc++-v3/include/bits/regex_error.h
! 75b4257f33f37b2ac04f26c53d930a26  libstdc++-v3/include/bits/regex_executor.h
! 14dbdcdaec3890108fba3aef355789df  libstdc++-v3/include/bits/regex_executor.tcc
! b77e7d0e1af22b4c76f3a1b1a9445393  libstdc++-v3/include/bits/regex_scanner.h
! c63271fac886a0347ae54d09ec615a70  libstdc++-v3/include/bits/regex_scanner.tcc
! 22a9676313472917eaaccc27ddfb10f4  libstdc++-v3/include/bits/requires_hosted.h
! d4ab3a218dd86e5f987bcd411be99642  libstdc++-v3/include/bits/semaphore_base.h
! aa7b516414d2b32705387e26d6fa52da  libstdc++-v3/include/bits/shared_ptr.h
! 30e67fe91731f9a6c511f791766c768a  libstdc++-v3/include/bits/shared_ptr_atomic.h
! 398b697f034a380e2062e59e71a6eec9  libstdc++-v3/include/bits/shared_ptr_base.h
! 8f3345533242a41045c0917ca04c62d0  libstdc++-v3/include/bits/slice_array.h
! 19fe23e6a7a34cff22e75da635190a85  libstdc++-v3/include/bits/specfun.h
! f5db8c25a45bb53faa4affdc482ec0ae  libstdc++-v3/include/bits/sstream.tcc
! 8515d114a9b0e2105c64d73181d34cee  libstdc++-v3/include/bits/std_abs.h
! 80c90a384e0540ce68e8451a654f1d10  libstdc++-v3/include/bits/std_function.h
! 770389d971a766c2fdea04f25b48103f  libstdc++-v3/include/bits/std_mutex.h
! f7dbdb00cb5664fe06868cb519c18fbf  libstdc++-v3/include/bits/std_thread.h
! 4008687bfe5dfc31a7ae3d57fd975993  libstdc++-v3/include/bits/stl_algo.h
! a9bee4b1f5b494c37859c53ca0446881  libstdc++-v3/include/bits/stl_algobase.h
! 44d466cbcab63d06f211834010ea17e2  libstdc++-v3/include/bits/stl_bvector.h
! d8c38438871764f58e4a882dd7fbb0c7  libstdc++-v3/include/bits/stl_construct.h
! e4d39faab9dc5e3419435581d6869651  libstdc++-v3/include/bits/stl_deque.h
! 60507e6d5f3434ae5ce86363f622a178  libstdc++-v3/include/bits/stl_function.h
! f1a151d37c2259f38ae9f3bb60c184cc  libstdc++-v3/include/bits/stl_heap.h
! 5062fe07d9dcd501f4b20e56129c7f5f  libstdc++-v3/include/bits/stl_iterator.h
! a98431c50c8cf6faa3d9b03f2ae47efb  libstdc++-v3/include/bits/stl_iterator_base_funcs.h
! d99cab7e3480e3ba45cbc780e43d1a90  libstdc++-v3/include/bits/stl_iterator_base_types.h
! fb63f540eb43cc83f3b74a25a0038a07  libstdc++-v3/include/bits/stl_list.h
! 05c5537a02e25e43dd477dd76aff4ed2  libstdc++-v3/include/bits/stl_map.h
! 7e90d251b20863b6585ba0dc2231a8d6  libstdc++-v3/include/bits/stl_multimap.h
! a437a2b04cec24247b94e03e1fe43f4a  libstdc++-v3/include/bits/stl_multiset.h
! a160d3a1010219c7f0a400e068b1b39c  libstdc++-v3/include/bits/stl_numeric.h
! 73730f2e40d95437864180754ecd0b92  libstdc++-v3/include/bits/stl_pair.h
! 420d5465635ca7fcbba4bc1a1f702222  libstdc++-v3/include/bits/stl_queue.h
! d12837792d22543fb74e959b8671dc45  libstdc++-v3/include/bits/stl_raw_storage_iter.h
! 04b280c2aae349e2e28e67c88e0500c3  libstdc++-v3/include/bits/stl_relops.h
! 33e56b2edd9d7a250ae0cd1bdbdc5928  libstdc++-v3/include/bits/stl_set.h
! c3445e498460fdc279feccd5ae8fbb86  libstdc++-v3/include/bits/stl_stack.h
! f7c3cbbbff1984288eafd88b89681a07  libstdc++-v3/include/bits/stl_tempbuf.h
! db78116edcfb2d22ef58666e019fd12d  libstdc++-v3/include/bits/stl_tree.h
! c120ed3d5ad3a1aa6ed031999567eb1b  libstdc++-v3/include/bits/stl_uninitialized.h
! 3314aba6831a0dc1052cf0a06ad0a7c8  libstdc++-v3/include/bits/stl_vector.h
! 8b9076ee3d87752c4e3d5cdafa8b9461  libstdc++-v3/include/bits/stream_iterator.h
! 9210c3666e5e698bc555d7335c97696d  libstdc++-v3/include/bits/streambuf.tcc
! 0e7cfd352ca580b8a6313d4692b0b0d4  libstdc++-v3/include/bits/streambuf_iterator.h
! e1891b851f96ef49825e35f413b8f569  libstdc++-v3/include/bits/string_view.tcc
! 31d218bc11f10975127e1954ba6fb661  libstdc++-v3/include/bits/stringfwd.h
! ce17f393b63c6930a43f794183c15f0c  libstdc++-v3/include/bits/this_thread_sleep.h
! 0c0b4258a96531aac900ee4afad53be8  libstdc++-v3/include/bits/uniform_int_dist.h
! 7e525e2f25e874a4ef5128ff37ab8092  libstdc++-v3/include/bits/unique_lock.h
! b1c5f017599d59426bf764ae91a55ae0  libstdc++-v3/include/bits/unique_ptr.h
! 0bec15fdcc5b8e0b2a98e0cf5a2ea0e6  libstdc++-v3/include/bits/unordered_map.h
! 1943e2ba8145a11b72f92933ac344f46  libstdc++-v3/include/bits/unordered_set.h
! a60e81b7c998dc904836f01ea56cc93f  libstdc++-v3/include/bits/uses_allocator.h
! 746fbc1bd7a1d8d880c8a8ed2ebed9a3  libstdc++-v3/include/bits/uses_allocator_args.h
! 41ba97b1080e538af252feadf8c82f52  libstdc++-v3/include/bits/utility.h
! a6cc9d4b57dc76ee00dc459b9aa9aa4b  libstdc++-v3/include/bits/valarray_after.h
! 322814b36de24720a8d60f70da5e3f19  libstdc++-v3/include/bits/valarray_array.h
! d0dc224b4535c28e743c20c95a58c09e  libstdc++-v3/include/bits/valarray_array.tcc
! 497da4999eb1bda92fc3d86d2d395554  libstdc++-v3/include/bits/valarray_before.h
! 7a9b0c21f3a78e011e36d631a0620623  libstdc++-v3/include/bits/vector.tcc
! 51aca95b9c0bb2ebdb0394442ba41eb5  libstdc++-v3/include/c/cassert
! a92920f183eb4d2e23e70f36bdd58854  libstdc++-v3/include/c/cctype
! d81a9516b0313de19e213978a64ec2e6  libstdc++-v3/include/c/cerrno
! 64aa20cab09b5326db7ae6beb56bc5e2  libstdc++-v3/include/c/cfloat
! 2d4b6d3fa3b97261a7bb52354edf653a  libstdc++-v3/include/c/ciso646
! 489b7549fcbf43464dfad5b4caf6d9c4  libstdc++-v3/include/c/climits
! 96dcf802a316fa7fb13519719426065c  libstdc++-v3/include/c/clocale
! 1d26e58c819e861a4754626a0bc70c58  libstdc++-v3/include/c/cmath
! a8c89767ab651296037ca85330a3c714  libstdc++-v3/include/c/csetjmp
! 0bd8c082360fd6a93447c6ded9609c11  libstdc++-v3/include/c/csignal
! 5bf207713093e58722196ecb659f5ff3  libstdc++-v3/include/c/cstdarg
! 256b3d7a3fc9984f8ddf291e15cbcd00  libstdc++-v3/include/c/cstddef
! 87594d6812c391c789335d8c0546ea79  libstdc++-v3/include/c/cstdio
! 259b2d04f090d31f51728ea64828d00f  libstdc++-v3/include/c/cstdlib
! 757b5131802c9d5fbcd2d0ebec9d1719  libstdc++-v3/include/c/cstring
! e06be9cee8abf70187f25a06c6938c36  libstdc++-v3/include/c/ctime
! fb721b269119d4332f838739763f7653  libstdc++-v3/include/c/cuchar
! eb764f5a84bbc6e863792f76fd2d5a8b  libstdc++-v3/include/c/cwchar
! 4639fab2932352c06515218400ab20f1  libstdc++-v3/include/c/cwctype
! 5495a5ddbf9bbefcee8c29a7d52ebb4d  libstdc++-v3/include/c_compatibility/assert.h
! f2d623f5247e7dbae4ef501bc4f8ec3e  libstdc++-v3/include/c_compatibility/complex.h
! da5df899197dcc6a7928737e056f9516  libstdc++-v3/include/c_compatibility/ctype.h
! 83ade47a74067c948f4952c795c74198  libstdc++-v3/include/c_compatibility/errno.h
! 7cf57c823ff6126aa473c2a791cb5c72  libstdc++-v3/include/c_compatibility/fenv.h
! 1d67aca203837cc45584a7408dc0163b  libstdc++-v3/include/c_compatibility/float.h
! bcd8fc121a2dba8b9f21be91f1fa250e  libstdc++-v3/include/c_compatibility/inttypes.h
! 6ccf67371ed7a1f223a653d404ac8fa1  libstdc++-v3/include/c_compatibility/iso646.h
! 165ba57a30ea0236c09cda34331b3d18  libstdc++-v3/include/c_compatibility/limits.h
! a4e5f13bc165084fabdaafe185f95628  libstdc++-v3/include/c_compatibility/locale.h
! f34e6ddbb19306e7d9f8c42d51dc6ee3  libstdc++-v3/include/c_compatibility/math.h
! 7c28e4e3982f6e96077ec15bed4383ca  libstdc++-v3/include/c_compatibility/setjmp.h
! a86ce75f9dd847b36b3103cbfd0e09e9  libstdc++-v3/include/c_compatibility/signal.h
! 1a5903d050b8c3869307031770f14305  libstdc++-v3/include/c_compatibility/stdarg.h
! 0357bf0f700fc5d113d9b75e44ef7f50  libstdc++-v3/include/c_compatibility/stdatomic.h
! b5100d87f77cb4c61636b48f0c141322  libstdc++-v3/include/c_compatibility/stdbool.h
! daab9fb674dcda63c383435afd5fa8c2  libstdc++-v3/include/c_compatibility/stddef.h
! 284efb34492927d9c1440f8ec8aaac9d  libstdc++-v3/include/c_compatibility/stdint.h
! d93605e8bc2872a916d988ac532c1727  libstdc++-v3/include/c_compatibility/stdio.h
! 3f24ff2a8eef595875da96e5466bd4aa  libstdc++-v3/include/c_compatibility/stdlib.h
! 1e2706da9d67dbad2236ca27f4d526d9  libstdc++-v3/include/c_compatibility/string.h
! a297d781859b90de25e1287a1e1e9f3d  libstdc++-v3/include/c_compatibility/tgmath.h
! 1ae01060c05944ad812948e7f016229e  libstdc++-v3/include/c_compatibility/time.h
! 1a50e986a02891ec28014013f5e37cd1  libstdc++-v3/include/c_compatibility/uchar.h
! 79d193ccff637a123ac7cb41a4c68be9  libstdc++-v3/include/c_compatibility/wchar.h
! d0568453f1300b9009aea91583960ff4  libstdc++-v3/include/c_compatibility/wctype.h
! d566fc9fe8ac94592d887d2bd0223e17  libstdc++-v3/include/c_global/cassert
! d97d8fefe3fe881cafe4587e879130f2  libstdc++-v3/include/c_global/ccomplex
! 004f2b245f22a6e36da04de5f4b5289e  libstdc++-v3/include/c_global/cctype
! fa9d96a06168dde9d21af84bb08683f9  libstdc++-v3/include/c_global/cerrno
! 715ccd876f40879803ac2d715e510d8e  libstdc++-v3/include/c_global/cfenv
! 71ef2d7a1d8420f8e738e888011b2ea9  libstdc++-v3/include/c_global/cfloat
! bedeabf12edce197ed12dcd0316fb014  libstdc++-v3/include/c_global/cinttypes
! e056e894d561a617e8a5fbe43b91fe5c  libstdc++-v3/include/c_global/ciso646
! 6630f0421a36b3f446414bf99ca60dd8  libstdc++-v3/include/c_global/climits
! e4c7c2d232b07c4cd56e5e8f767283f8  libstdc++-v3/include/c_global/clocale
! 34d0966969cb03faff151495381dbe37  libstdc++-v3/include/c_global/cmath
! 999c263b7a2d246d1187abd6a13e8c28  libstdc++-v3/include/c_global/csetjmp
! 9829a810311d8c8e3e1dd51b6db1980a  libstdc++-v3/include/c_global/csignal
! f4048bb0abba66f92a6c162d91e03840  libstdc++-v3/include/c_global/cstdalign
! b750b028571982a49c0967d540734912  libstdc++-v3/include/c_global/cstdarg
! 0c4339ed0bd0421391b86f5011786a39  libstdc++-v3/include/c_global/cstdbool
! 42d081e36f48908b1b5d85905a27c5e6  libstdc++-v3/include/c_global/cstddef
! ae2e5fcda32c32b967b166815ea6583f  libstdc++-v3/include/c_global/cstdint
! b06e5528a69c64d89fa0c962508e7adb  libstdc++-v3/include/c_global/cstdio
! 250e2e1c737808d5a698f4d3e1120b70  libstdc++-v3/include/c_global/cstdlib
! 5ca2a4570a98ead77112bcdcc5e85bb1  libstdc++-v3/include/c_global/cstring
! 305071847a71f9eb4dabe7ce0b48d112  libstdc++-v3/include/c_global/ctgmath
! 34d760a846c8b888075e20d7e788e483  libstdc++-v3/include/c_global/ctime
! 28775d3c925ad65e1642fbba8ce7b9e6  libstdc++-v3/include/c_global/cuchar
! 563be8405ac1fff3cdc14d0bccfe42bf  libstdc++-v3/include/c_global/cwchar
! 94ed2281ad68e4752f07e4ac252852f5  libstdc++-v3/include/c_global/cwctype
! 47b30042f2d9f9c825864e9dbde24f13  libstdc++-v3/include/c_std/cassert
! 0c343c96c32cf5cdc9753cce5b15c1ee  libstdc++-v3/include/c_std/cctype
! 621cce042f4c15557f29d0fb740509d0  libstdc++-v3/include/c_std/cerrno
! 35538de3306d93e4b6ca1eeeeed868ac  libstdc++-v3/include/c_std/cfloat
! 5d3a04b8530231d3331f3ff9aa869c0f  libstdc++-v3/include/c_std/ciso646
! 77230f83d34c311e7914de213e472760  libstdc++-v3/include/c_std/climits
! a7609c55f3ee797f812909a960530dd0  libstdc++-v3/include/c_std/clocale
! b26eb62f5204e1535b6fcee85ff79236  libstdc++-v3/include/c_std/cmath
! 040bfa0884dbba8ecf5f0f90e711f838  libstdc++-v3/include/c_std/csetjmp
! 05b2d678cbe69b78228131164d144f35  libstdc++-v3/include/c_std/csignal
! 2d3cd5c062751bfb95d0fd7df35fb51f  libstdc++-v3/include/c_std/cstdarg
! b6c5bbe72ed43f8a5d12c995ed68ec0f  libstdc++-v3/include/c_std/cstddef
! f74661f832d82760d16babfe6d31359c  libstdc++-v3/include/c_std/cstdio
! a786104d8a96f1e6a58f7141dbcad393  libstdc++-v3/include/c_std/cstdlib
! a09e4c5aff5b0619eda0abb963298665  libstdc++-v3/include/c_std/cstring
! fc06a2a86253661a10a45d1aa6add290  libstdc++-v3/include/c_std/ctime
! c59c1677bb21443d118a20d6f52fc3be  libstdc++-v3/include/c_std/cuchar
! 97d3ef1fea728ee3215e4ba63bb224f7  libstdc++-v3/include/c_std/cwchar
! d0ed6882ae59669b56e0c3cfc70f6cdd  libstdc++-v3/include/c_std/cwctype
! 9664215a7bc70f4a67205596f83a90e4  libstdc++-v3/include/debug/array
! 09280bd73a4d727d1d29eabb39c7fee1  libstdc++-v3/include/debug/assertions.h
! ce79efddea89cd0400284453b6c47c08  libstdc++-v3/include/debug/bitset
! 752210a319f5f5d356cc29cd1ce3cdc7  libstdc++-v3/include/debug/debug.h
! d723cddadad626e4147ae555a795d3ac  libstdc++-v3/include/debug/deque
! 92c5ac3f7e20f86e3d86f1342849f7dd  libstdc++-v3/include/debug/formatter.h
! eb3ad55c903b7d6432e96f2f61e61420  libstdc++-v3/include/debug/forward_list
! 8fcdb38b4006678d506e0e223988824a  libstdc++-v3/include/debug/functions.h
! c1a242dbc456773fc4bb6f96e55d221d  libstdc++-v3/include/debug/helper_functions.h
! 3e1868550108da7987015b77b3629fad  libstdc++-v3/include/debug/list
! c845fd12d717810528aaf5733a4658e4  libstdc++-v3/include/debug/macros.h
! 72ee22202e97490f4d8c37281e830aa4  libstdc++-v3/include/debug/map
! d5844aa5092f35f6cdf39396dce97604  libstdc++-v3/include/debug/map.h
! 8d4679fa6a8e970942dbe3b756ae5bc2  libstdc++-v3/include/debug/multimap.h
! d443675b9794922fdb6c461970f46f25  libstdc++-v3/include/debug/multiset.h
! 575884fb576324c807e0a94cca2eff7c  libstdc++-v3/include/debug/safe_base.h
! 44f2fc7d6d27fe3a96e1738e5c822061  libstdc++-v3/include/debug/safe_container.h
! 3ad930cc0c68c1430017b76ccd9c0d6b  libstdc++-v3/include/debug/safe_iterator.h
! 23da7c7cc3096b71b55fa198d22a92cb  libstdc++-v3/include/debug/safe_iterator.tcc
! baea6cfe653fa2e5b6b58ab54a9f9d4d  libstdc++-v3/include/debug/safe_local_iterator.h
! 8e3030a09accb7b306ee8870fad49226  libstdc++-v3/include/debug/safe_local_iterator.tcc
! 7b12318b15a3faefa838000015443fbc  libstdc++-v3/include/debug/safe_sequence.h
! bbdb8b7e4b650f074b25ff87c1ab088a  libstdc++-v3/include/debug/safe_sequence.tcc
! a177539c40917d45f52176f93a31a886  libstdc++-v3/include/debug/safe_unordered_base.h
! fef27558f9cb31d89f17911f9091732c  libstdc++-v3/include/debug/safe_unordered_container.h
! bc1b8f823ee669382df0aa37d0a726de  libstdc++-v3/include/debug/safe_unordered_container.tcc
! 2bdcd9b980b741db1ca4d59373ffe529  libstdc++-v3/include/debug/set
! 95990efcc5a75c70d2ee2a4967563b48  libstdc++-v3/include/debug/set.h
! f98b297a4efe585eb7874f38d1b32139  libstdc++-v3/include/debug/stl_iterator.h
! 0a0ed08176f4ebe2b80f8677df11a0e3  libstdc++-v3/include/debug/string
! 9e8f38b257585b3ddc23834eb2cd2643  libstdc++-v3/include/debug/unordered_map
! a1e7cd885333d6f9b9bf82eee39843e4  libstdc++-v3/include/debug/unordered_set
! affcbf27d1705bd03ac3e7f0bc6fb0e9  libstdc++-v3/include/debug/vector
! f9838218b1ad0fc9cdad73fcc5e60e14  libstdc++-v3/include/decimal/decimal
! bc0a74bf0366eede0f575894300639d8  libstdc++-v3/include/decimal/decimal.h
! ff788f0aa47f420266aae704daa722e4  libstdc++-v3/include/experimental/algorithm
! a99e25ecc203dcd30981cbe40e13dd8c  libstdc++-v3/include/experimental/any
! d52e8b488fcf0c0276e7f0fb61e40321  libstdc++-v3/include/experimental/array
! 953040a33a48143bfaa3e393312ef7ad  libstdc++-v3/include/experimental/bits/fs_dir.h
! 5e14cdd2562ac12d385ddcbe169161e9  libstdc++-v3/include/experimental/bits/fs_fwd.h
! 5e019392507a97e44a2f6e82ad35f6ee  libstdc++-v3/include/experimental/bits/fs_ops.h
! 7df14f3066e051b7a8fbb885e52815e7  libstdc++-v3/include/experimental/bits/fs_path.h
! 924741d86a6ef29d3622e3c6246c94d7  libstdc++-v3/include/experimental/bits/lfts_config.h
! 7830abbb146efd29a73d7fd1fe3db78b  libstdc++-v3/include/experimental/bits/net.h
! cf54bc3b121d24c17f08a57dd0426941  libstdc++-v3/include/experimental/bits/numeric_traits.h
! 3774e633795d511398c269b801a8a7ea  libstdc++-v3/include/experimental/bits/shared_ptr.h
! 6d6e3b19e8a33a929bb35d0f3d5b105f  libstdc++-v3/include/experimental/bits/simd.h
! f6404a1addc5dd789381d0eb5f50e076  libstdc++-v3/include/experimental/bits/simd_builtin.h
! acd3f967f14a179045b2bb2c58c8677f  libstdc++-v3/include/experimental/bits/simd_converter.h
! fd6a017b7e2e7951d6cf7997942705c7  libstdc++-v3/include/experimental/bits/simd_detail.h
! 0683ac97e20ec466a621500ef6f0aedf  libstdc++-v3/include/experimental/bits/simd_fixed_size.h
! 716234e07f419b61b873aa9055be4170  libstdc++-v3/include/experimental/bits/simd_math.h
! e39836ccebfbf5952450945b5e17955d  libstdc++-v3/include/experimental/bits/simd_neon.h
! b8fa773deaee3b3938ea4836b2afbfd7  libstdc++-v3/include/experimental/bits/simd_ppc.h
! bb90b048786d0f03699ec3b93725ad86  libstdc++-v3/include/experimental/bits/simd_scalar.h
! b489b9edc045404516110a7a4734fded  libstdc++-v3/include/experimental/bits/simd_x86.h
! 286fb694a932e5841d01656193387a08  libstdc++-v3/include/experimental/bits/simd_x86_conversions.h
! fa90a6b6457c0d6ae32b629f779d25ac  libstdc++-v3/include/experimental/bits/string_view.tcc
! 8c4c2beba9f9b4c59585fc0068db4869  libstdc++-v3/include/experimental/buffer
! 87d090e4d15420430af5b6a2c27d26ec  libstdc++-v3/include/experimental/chrono
! 2a7d80b87c30ddf854ee1ef3d930d144  libstdc++-v3/include/experimental/contract
! 94526557793422c1d347faa1d079e56a  libstdc++-v3/include/experimental/deque
! 0ed89473393473eabe1b3c5d05b285d4  libstdc++-v3/include/experimental/executor
! 3b102c247e2f79d0221c4b6d3f8eeb18  libstdc++-v3/include/experimental/filesystem
! cee443670c8a3d3a61b8f8eb94206b3e  libstdc++-v3/include/experimental/forward_list
! 5fba410dd029b9608992b29997cc604a  libstdc++-v3/include/experimental/functional
! 330c30fe4ec59d13e733bd2215758968  libstdc++-v3/include/experimental/internet
! 676246f5e54771f00f130181183ab2fc  libstdc++-v3/include/experimental/io_context
! 377c8c18245a9d3f0fd4ebd9cb7c3be4  libstdc++-v3/include/experimental/iterator
! 1c0fe82065eec955754830e71c18efc4  libstdc++-v3/include/experimental/list
! 1b71aa2662d4959d542811cf1540aa44  libstdc++-v3/include/experimental/map
! 27abe5e55a6ec79ae9506eae9e2770f7  libstdc++-v3/include/experimental/memory
! 3b291fbf1ea095e9e45eb0fd1945b908  libstdc++-v3/include/experimental/memory_resource
! d0330139b1f73fa0c9b6cd319cf2f585  libstdc++-v3/include/experimental/net
! 221b5bdba334fdf64eae463374c86f19  libstdc++-v3/include/experimental/netfwd
! 1382a7e990a70adfce32b8feceb44ef1  libstdc++-v3/include/experimental/numeric
! dc3da87c593382a3e74bd9bd7d6a45cf  libstdc++-v3/include/experimental/optional
! bb8e96f2e46f26393d50c8703d3b56d5  libstdc++-v3/include/experimental/propagate_const
! 9caddd3848a2aa676f8bed27b8d19b3a  libstdc++-v3/include/experimental/random
! 9a3312e053b9638ac4324e316cc0a5c4  libstdc++-v3/include/experimental/ratio
! 2710a18cf625c9dc1f0f7f108221f4a1  libstdc++-v3/include/experimental/regex
! 88d5a7beab379c75a49e0d43c023869d  libstdc++-v3/include/experimental/scope
! 6927f4a7e1b9fe45449f018cf3fd4891  libstdc++-v3/include/experimental/set
! c3334b635e593c9c923efa5e5d85314e  libstdc++-v3/include/experimental/simd
! 9cd3e4e283f4b907d4283df25c534cf3  libstdc++-v3/include/experimental/socket
! 1cf91d33654ada93d801c3f3d63093cf  libstdc++-v3/include/experimental/source_location
! b5e967974119b67b51912b999055e1ea  libstdc++-v3/include/experimental/string
! a22768cfa191a83a88d4eeaf132eec2f  libstdc++-v3/include/experimental/string_view
! bde9aafc0ea69c3a16afd39f5eb2e5db  libstdc++-v3/include/experimental/synchronized_value
! e8bbd122c3b7a083a437a1cb8ce400d1  libstdc++-v3/include/experimental/system_error
! 1ac0d04c944a75a9cf6056a8db390646  libstdc++-v3/include/experimental/timer
! 9cfe7630764c34da6341f8b24842c886  libstdc++-v3/include/experimental/tuple
! d8fa82f81f07fc6c21f3be09d201fb2a  libstdc++-v3/include/experimental/type_traits
! 2a8910f3586710237ee9fd744b103f4b  libstdc++-v3/include/experimental/unordered_map
! 6445cd0162084474edabd6410a7dba24  libstdc++-v3/include/experimental/unordered_set
! 35f7b9b8f27b79cf978591aa03943f10  libstdc++-v3/include/experimental/utility
! aa9abe4f758cd69110c3486701e74c5b  libstdc++-v3/include/experimental/vector
! d6f5ecf98e51ea071ec1fd44c8fd115e  libstdc++-v3/include/ext/algorithm
! abec9f625ca91c38369762f6368bffac  libstdc++-v3/include/ext/aligned_buffer.h
! c3bd7eb4301800345e9e13630c9c2302  libstdc++-v3/include/ext/alloc_traits.h
! 87d86b344e138ba9274c585c9243bbba  libstdc++-v3/include/ext/atomicity.h
! 80981d56cd0311e9211b897adb136e51  libstdc++-v3/include/ext/bitmap_allocator.h
! 1bb491ac6f482e93fb0c506dad0cc942  libstdc++-v3/include/ext/cast.h
! 86d62b01b4a4c3e919ad644a5faec72b  libstdc++-v3/include/ext/cmath
! 94c05fa20599993783f1f094ae70fa94  libstdc++-v3/include/ext/codecvt_specializations.h
! 06022bc3e3a9c14c08bec88f9da82b4a  libstdc++-v3/include/ext/concurrence.h
! c33947951ce4ff17413dbb63a058a642  libstdc++-v3/include/ext/debug_allocator.h
! 16af09664982eb53776facedef3b65d9  libstdc++-v3/include/ext/enc_filebuf.h
! f2d14e4762dc99e1875cd1c27a20d39d  libstdc++-v3/include/ext/extptr_allocator.h
! ba58c58ff35e16aeaed5b3998fd4e105  libstdc++-v3/include/ext/functional
! 6cf714cd2195e10929c3f27cf54bf0ba  libstdc++-v3/include/ext/iterator
! 057f6f980678a9a58af2992fa5166c8a  libstdc++-v3/include/ext/malloc_allocator.h
! 8dc69bfb93216f9a42f74b158ee1e35b  libstdc++-v3/include/ext/memory
! 5e86747d1aa7509a2e7602931db4d6bc  libstdc++-v3/include/ext/mt_allocator.h
! a78402670a6ed5815c8460eb28e80b98  libstdc++-v3/include/ext/new_allocator.h
! 021496ad8a8b42ca36e301637da06c02  libstdc++-v3/include/ext/numeric
! 8771efb8ee9ad8cbaff1ee04f8b9eff0  libstdc++-v3/include/ext/numeric_traits.h
! 7db88a0312cc7f112fb5338d209e5fd0  libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
! a37a521d2fd084461f9b4d01feccc290  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
! a48ab7d63a19ca122db45d4506571dac  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
! ff96fa5e05f0c2a42ebda4709a7edede  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
! e84dee308dfaee6d754551c70c44cb8b  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
! 326aaf42c66e071599ccefb688d75fb2  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
! 07e76c2af6218ca85081443d98ba1f4c  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
! e308b438568ae14196904b8999e185ad  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
! 86497f724c2d93ea142f16afed70b4ff  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
! 853a5ab056a6f1b70372c9877eb1cb51  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
! 48e0c01271348cab20465feb2ebfb9cb  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
! 3e6dd51ddfe4d3969fd95fbad3d159b4  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
! fb1da3f4ff0e164b99192b163a50c9fc  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
! fa9506c64bea04d7d08ca5437af2f822  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
! e75e1a00d8e561447e04d57126c54870  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
! 979dc2c290a3932fafb95ef1422f909c  libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
! 983a434fb10a97e64426fa9f5b659bad  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
! a0b4597abb799bc002da8376fe557b0a  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
! 3b0d811aacaea0cd626d28273229e821  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
! e68608eb835c82c2a09a236d022e28d1  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
! 4b080eb45c44d76c8a5b2750ae6ed6f9  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
! 16721b72685836040f7c178f3155cde1  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
! 187a9c7b80fc676496b86fbc108c62e7  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
! 98a57413e516d2ea300c69d84aa187ff  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
! 6b0ed0708183658bc152bfa57877ed24  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
! fded2148056262fb247d33fea2a60524  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
! c09ed3ef4a25394cecbd9a223bd8c539  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
! 9be2a0edd030fc81610d72cb73508ce8  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/point_const_iterator.hpp
! 4760fc4c2697a9d0b91b59b26f698fb7  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
! 5ede6ae9cb746ebb86c6808b8c4e96e4  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
! 542db2558eecba6d8cab5fd3a9ff18aa  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
! 07413535a8300ac91b8516a91f1b53fa  libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
! 5b5253ab642cf3974c9f530591027610  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
! 652d9e02a3f589a4ef038d6685a34eef  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
! af0c9949395ebb5369fb1d72c07fb6fd  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
! bd9247fe74bdd287e0dbebdb2f1cc970  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
! 85282ab51b564f2adb53f8ffc16ee6c2  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
! 593748f015767b06562554be6c145347  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
! b8cb49082f9336f9facde54a12246737  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
! 431d3ef740e549b9bb072140e7587bb9  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
! d5b6d1b24d874886bc763132e5b10a1a  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
! 327e69184a5e208724fdca13977687a9  libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
! 93a1278c18b80b16210acdba59a54232  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/branch_policy.hpp
! 9405655218c67f25a67dbd18e823b6cb  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/null_node_metadata.hpp
! 0245f687160fac2c9d15a484dcb99e7e  libstdc++-v3/include/ext/pb_ds/detail/branch_policy/traits.hpp
! 385628d46f5c30ab6f261ae592551054  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
! 954bcd8d690a734eba11c0c1cf0d2eb9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
! 10cf1234031a2be81c5fd10456380020  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
! 89662b6410c2bb4382e26262ab77ced7  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
! 28d30e0039159746cf786af5fb62a252  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! 05c474d83a3b93fef5641490e4692750  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! bdf2e8d9d00a7f1ac77845a9e9643be0  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
! 77d8c0b1da5f3e9c2225257db27c06f6  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! f58c72d8ca9ee41a604fcd88229545e4  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
! 25eeaa732110dd79d5d295959a933252  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
! e47d9ada8bb138c985fb54a23fa64d78  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
! 959d9b96411999813fc1cbac5e30d068  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! 7fb4f544e8c841c9c2871ad12faedaee  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
! 96e843bb5a31ffe3eaa9ac27811e7307  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
! fdb2c964abfc522c038c712997d25358  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
! 99f2d546e362b4d15f2534b8b67e4981  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
! 958e10a9124f0894b60f7443a0a466be  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
! 957724fe1e8329571fd89421a1710d80  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! 8f9e1c902cad102072ca500dd4ff0ea8  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
! c519267d56f2735219b62203c585d952  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
! 26ef3bce63f6111fff5e1f7e37fd42a9  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
! e33540ef04f8974d00ad85843fe9cd7d  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
! 8b9b97c08cc899ad057b50abd2380159  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! fc30b7135bddfc3eccf0d29bb447a539  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
! ebcc38ae656ea22ebb3a1991335fa532  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
! 9c4451537d7876f715ab05367d4805bf  libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
! f14589cbf385e626d9746e22973ff6db  libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
! 61ec334046d8b83623745488d2db807d  libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
! 79bcc2e6666c7c882511b31f30e28df0  libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
! 465c8ef624b1bef7aabf40840950ea24  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
! 5995f1946d5de0ab7b634f22653c90c6  libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
! 4840f7623aeae4903c8eb16abd033c76  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
! 58d43e3b30121c850bf6d3dfbc4673ef  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
! a11ba12c4f101bb3a4b709f803604653  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
! 17d16711ba7af44ad351ce32ef720e81  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
! 4243109e1aa8351653672097a8a5298f  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
! d04928116a7a04d2135af5cf48808653  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
! 67434424efa37ff4a59c6f8b1b66a940  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
! 15330decf1ccbeb3f8cb5deca2d526f5  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
! 0f6505b65b25fbb898effe6d47a53b29  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
! 3c2b27724b8134cf6e9df049ce767601  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
! e459428f36b43132e85e3115be7b12bd  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
! 2380a5119d2a7a715272dbd2c3f99c55  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
! 102ed8caaf0b2d48dada37be2ccf1e05  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
! f041a0ba3ea9e751d2e4cbd625a910de  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
! f10138c8b0fe8818b8dca4ba76efce4d  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
! 0eded30244c6db6fe0bafa06787d2cca  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
! b24877272989938fab03286e27fb9115  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
! cc17a697b40bc83137ec11f086848881  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
! 3c2668a9b87e1b18205c3ffab13b298c  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
! bca74c2d8f3c023da3d4497c0de0e6ec  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
! cd9dee56d11776519c731dcc48a1f830  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
! 3e8630b40ebf01e858fa8aa3561ce426  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
! de4aa914e501862ae4e7e273ffe52bc2  libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
! ad9257619000bb042e0ad473a83ae5cb  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
! b7c6000bbe1acc2685b37e91479d06d6  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
! 3065dede05b7a66d240810986bd31bb0  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
! 22e211609bc99700e356aba4b7ad167b  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
! 7d8fc976c53a3bbd129d453eb706e178  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
! 12d085b96ef0c84e1b86690a155d8561  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
! dd60c8d056ab5f8560d049f97912b7ca  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
! 90e512fdfe71eb211555480e32c95057  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
! 866235f2f8628afdf444616bdd2a0f18  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
! 698341218c60c39c94caedcf48e6107e  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
! 415d678749a875b3c99a0affe4f24c3c  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
! f59f643f904dac5616f48e23063bedca  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
! d48fa0f722fab283df0aefecc0111292  libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
! fc200df1fcd8ca699dd0cbf1576cc129  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
! 75100380b85aca123757968910c22717  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
! 8578a1081a5ddb5a70093e1f355d2405  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
! 214868578194891fef662830e78185b8  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
! 43b1ba1d21b425aa373bf192c11b44a3  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
! 8da822982454773ccfe8b35f0aba392c  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
! bf58203f5e93b029e502972313e42583  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
! 5764e3b48d44caf7d8a3bcb8f16f3038  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
! 533fedc3375f68145a1ff0f9f424aff8  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
! b1a0dd0368421a57bea2aa8cc9a397fc  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/point_const_iterator.hpp
! 33512daf072e72711e9ff5544fe7359c  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
! a1e8a56d48def446ef2f6294b760ebfe  libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
! 6329254d105c2b5044cbd825c91bdf28  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
! c95604a05dffe081cd289a7def1f5755  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
! aba7c4b9b3dcc4eac588963785c6da1f  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
! 08220ae5693a5453e147e656bc825c4b  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
! e0c31be9a927709dd0a51a850ac2a9a2  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
! 04a97e137acf225979489189eec3dac4  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
! 08844d11f2ee8ec3fb9416017869d843  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
! 402f630edce4c2f4e2d739c957b53c5b  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
! 41fca5ae598ee9644892fd04a79acf75  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
! 9c5b657d718b870aaeb3d4e631056990  libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
! 5aeb8cdbd2fc4d44def1fa4e6c8f88a6  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/lu_counter_metadata.hpp
! ad5b91aeae00aa3fc25c03f610801bab  libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
! 2aa5d06355514049efbf976e62c69b33  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
! 59e2fbaf9366c1d831e0ded942424988  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
! 4d546fa83ebd99fa1eb6196ce68234b5  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
! 01fa42c00c855b7d0f3ee072c0d2335e  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
! 0f456f012e56a6f730f40f45f78537d4  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
! ee2c78ba33ed460f77753f8964ab2e18  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
! 18d139886f805aa29cdc03aac41e964c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
! e10a7d5e71a0fcbb2b1ff12125b8d67c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
! 5ced08674f728b7de57c6a8a3e091489  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
! 9cfd12348874e4a511af86e00adf544c  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
! 883fcb2b087a8fe5e8fc545a967709cf  libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
! ffa5581fe954d98df4c1c01c8336ceb7  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
! 7842f5c573bb7b3e308bb3eb15547d74  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
! 3502f83874bb6a1ffaa8321413949b4c  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
! d58b050f24cb4a77c1cc62c0963453e6  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
! 9d6a75d140ba9f24de2ab44d584c1f69  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
! 55cba0d444a851bd819ef5ec80a5b735  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
! 66a4f7ad6eb442e457bc0a6d07b32ba5  libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
! 384e987e0237deaa5aafbf54699415ed  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
! 2a6992804673d0fa132f2964d964c8cd  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
! 958a72d8c4a6780cb935501b352cde65  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
! 9a1fe188b8d35615096ce8032779788e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
! 37510a335461868f6e5df39afa8e776c  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
! b1ef26c6d48e1d738e2fbaa0630a30d8  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
! ec21813d835fd2d15a758bcc71e49058  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
! 20b5421533a3cc583ee0cb29d293db92  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
! 8b25e99d5669b0b6cc5d6376636abe06  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_base.hpp
! c9f16e2e14796373752feeaa75cb0afe  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
! 314318a8c7e28196f0e68808a96206cb  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
! e57994bae9fa1e578c56e68050357990  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
! 2e173c28c106977481b617a54241bf98  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
! e8578d223e497ea12283dccd1c21b2f0  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_access_traits.hpp
! bfe113309eadabfb1b1ea0ba7023600e  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
! 520c3c9b97630c6668e63523f8feb351  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
! 2fb6884310e7b88a0470da82b448a370  libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
! d68c14522fae73c1d6cfaa89cbccb8c8  libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
! bbd8af750e7b45c8986b4c8d1e6ea25e  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
! cfa82ffa5d0f7786a2cbb95bfaff75a9  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
! 017907ecb0afccba4df40378d2301bf3  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
! 0519a598263b4e94f4c63699dbd033e2  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
! cad402f85c65f8ffd3f26e0588a81537  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
! 78e5117a763158bb819847f4279d6384  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
! 2cd0112bfe019f9ae1b8fe1e97569aaa  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
! ab37557dea1984e4d1b7c02ec667bd57  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
! 9b23978d8a217b482dd05a8cf7146d83  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
! 3f57cf91cd2aceec6a7a373cc354185d  libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
! 84f7afd0a3fb244cca662edcb0554f87  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
! 5f1cfd2af59e13801f7b7cf0f112f5de  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
! 9765d6a4537e8f1d50d42022069e6449  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
! 9e2a9014c976a2cc6555075326d9139e  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
! bd28800814f742ba1bd46fc02da82a16  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
! e332ca50246f8e3d7cdbb777ac1026bd  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
! 6f89776cf59cd79cf261afe761a86b08  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
! a05c1114bbafed8aee58999055bd6860  libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
! b741d771e8b893022b719642472a016c  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
! 1891940f6fb77a24928ef2468d30576b  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
! 66a5b664d92e0a16b704d7ce77b2ceae  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
! 4ac7d36283e57762a6918e840a09072a  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
! 0c8cf2b755b0bcdb042c6c33e1f61f3a  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
! b4aec507779f46e2d0897a733cfd3d8f  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
! 49dfe77b3797bf4f5364340e8ddd30b2  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
! 64e606697f935446b383d7c98a2314e3  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
! 1f0f11374e51c069d53a1ade2303da58  libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
! 31d2597f68738abb4b66833fd6ef5b18  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
! 6d59abc644f5131de85ac7b0704651bf  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
! dea130a04dc620cc0d7c67b749c4e343  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
! 734c7982f62a3af498cbd3da67fe62eb  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
! 71d60012d8494c09f1c30cad2b0d3dd3  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
! 2d4ec0a49e36d416eafe9262783d3345  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
! 9557b68285318583844374e1e80d0b5b  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
! 3e67c64e49e4d6f9053cae6157ba2527  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
! f0f8b3b137f6e57abea5150c53e4a745  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
! 4391690a5d1cf9e1c250023411d4feb0  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
! 22bbd2fde8e6d2e190adfca2abe69f15  libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
! ea2c7b023b431f15a548f88980430587  libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
! c01b8ff6f9e52178bb1ad7cf033fa257  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
! 079011340c43832826fa85840389f599  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
! b3eaf58f59bd3c841c0babdb83ab09a3  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
! 6e1a32b57c1b156a02ce10c4d5791cd5  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
! 67dfc2033272ec1ebc3702c0f0edfd98  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
! 56ccc714236275a017a3ec6fb7400f54  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
! 659a5073e98af37826db6367d7be181f  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
! 34c9ea9595f99d7a6cdf8bc07e1015c3  libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
! 0c8deb6ba83af955c4e4e0c895b17642  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
! c5eab442f391589bae3cc473e127fb0a  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
! 8dc6e0f1ff6bbe15488dc537377d72b8  libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
! 4097e12bd3020e8de98ab866877a7197  libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
! bd4511388ecb52f99ac8f189c8885408  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
! fd79ede44423eb756d1e0b9ae982c051  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
! 9e4cde9e4fc1cec078d30b8501a65ea7  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
! 0fd6d12e68fff1c9b54ed3c2e3ad5df9  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_access_traits.hpp
! 443ffe3e7e57c0fe204f24e992460df7  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
! dee15591a08825edda29a050ca01058e  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
! 1fbb1208eaa177c4aa1f884d3d210c4f  libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_string_access_traits_imp.hpp
! efb729d6a409b9adb4f9386167eed9a0  libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
! 4de7853ab241a20057ad547e0ac0674c  libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
! 8df90c08f84d7ccc562e709005a56f4b  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
! 09cfafb59dac02565294083e1999021e  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
! d5da805a5e446b5353549ce5cde99766  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp
! 9a651ab857084702e39272b96b80ed1c  libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
! c22f65005f2421b780051198c4dbaa1d  libstdc++-v3/include/ext/pb_ds/exception.hpp
! a71f1dd732989c548e6fb3cd90bfcc75  libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
! 0b1de8e8578dd4d5ce0629d17f3fe491  libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
! 6199dde3ffb53e96204979ba1a5204bb  libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
! 154fcad4e977de3b59452a35a005b8b1  libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
! 6a9b1e88e1ec57acf528ceb9b5e779b8  libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
! e7b68ea74dbc4486f304d6445d5772a5  libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
! caadfacabfe85328d467de9b1a25d397  libstdc++-v3/include/ext/pod_char_traits.h
! 20ee1e20f41dc68c730b2c9db8475c3c  libstdc++-v3/include/ext/pointer.h
! d281468ceb3c4beb04f6da63ab463dfa  libstdc++-v3/include/ext/pool_allocator.h
! 7955d1b4c96e31649813e1ada0e5811b  libstdc++-v3/include/ext/random
! bcda42405934b29e401f272851d5bfaf  libstdc++-v3/include/ext/random.tcc
! 474a1ed09128969a0c560e03266bc56f  libstdc++-v3/include/ext/rb_tree
! be5748c6196b5f0ef8b184bd2c770674  libstdc++-v3/include/ext/rc_string_base.h
! e2145f9bacae1d7a4768cc1a310b647c  libstdc++-v3/include/ext/rope
! 95a27d843b9345ee883550f914bb2c7e  libstdc++-v3/include/ext/ropeimpl.h
! 3b5e9bc4fe48a3ece77254ec982835a5  libstdc++-v3/include/ext/slist
! bd442490857939a5b9d5f1d9a74db95d  libstdc++-v3/include/ext/sso_string_base.h
! 439335dfb61ccb6dc74cd3f8e485dcde  libstdc++-v3/include/ext/stdio_filebuf.h
! 6aeb7dd3bc46b6d9573a44b522acd849  libstdc++-v3/include/ext/stdio_sync_filebuf.h
! d062596425f8bc89394c936aaed898bf  libstdc++-v3/include/ext/string_conversions.h
! 25f4d72412219edc5d0acf936d258613  libstdc++-v3/include/ext/throw_allocator.h
! 92e9181d40382ba10a6f536870092789  libstdc++-v3/include/ext/type_traits.h
! d84fad540b049cf386d423c4e4f0eb2f  libstdc++-v3/include/ext/typelist.h
! c29d89987a941240f8d6d13b18c2e642  libstdc++-v3/include/ext/vstring.h
! 78019c6738443d0ccbd87283557bf19f  libstdc++-v3/include/ext/vstring.tcc
! 9a265251f98742f226435d4001863192  libstdc++-v3/include/ext/vstring_fwd.h
! 00abccc1b0a7a602fc2815b4a621ed48  libstdc++-v3/include/ext/vstring_util.h
! 97b67db909759910e250f33fd199e2f7  libstdc++-v3/include/parallel/algo.h
! 04b5e68c8a0f5ff666e64d2d35a7c913  libstdc++-v3/include/parallel/algobase.h
! 42081a6be0ec5a9cf85ad24a1bce549a  libstdc++-v3/include/parallel/algorithm
! f8406c6b11a539bbd6bb2abb45cfd145  libstdc++-v3/include/parallel/algorithmfwd.h
! 951c601b8e2fc3fc7219145709e87807  libstdc++-v3/include/parallel/balanced_quicksort.h
! eb7510a341556ba14989a91eae8aa085  libstdc++-v3/include/parallel/base.h
! 640472b265d529b7430364b087684cce  libstdc++-v3/include/parallel/basic_iterator.h
! fe4f23005ea915c1edb53ecb581fcc90  libstdc++-v3/include/parallel/checkers.h
! 03366710d3eaa010b093b2c7058148aa  libstdc++-v3/include/parallel/compatibility.h
! 436e6deb3fedd3821f4396ea981da5f7  libstdc++-v3/include/parallel/compiletime_settings.h
! 299f7ac7f13385268dc681fff658b995  libstdc++-v3/include/parallel/equally_split.h
! eb8226418c0827ae3dcd7002ab9095f8  libstdc++-v3/include/parallel/features.h
! 093fb3ee3be81fbe19882f18750e1551  libstdc++-v3/include/parallel/find.h
! aa5b52326987c8581fff53b3900d3e42  libstdc++-v3/include/parallel/find_selectors.h
! b4ad8f0bbe0d177375bc621016712a88  libstdc++-v3/include/parallel/for_each.h
! 535c82bc5a97bb96fa2a09059dfd76aa  libstdc++-v3/include/parallel/for_each_selectors.h
! d1d387355ef5993d2488b320ce89ab2b  libstdc++-v3/include/parallel/iterator.h
! 77a2de0704e4b4e5c747937f94faabb6  libstdc++-v3/include/parallel/list_partition.h
! eb3c8be83ab212a99d664da53fc48dd3  libstdc++-v3/include/parallel/losertree.h
! d7028f6b44352853092c40031a41861d  libstdc++-v3/include/parallel/merge.h
! e49381d800a47a47a38cb0cc2ef466be  libstdc++-v3/include/parallel/multiseq_selection.h
! 611cf60d5b90a3fed1acb461ef43eeda  libstdc++-v3/include/parallel/multiway_merge.h
! 5afd4b35d93eefc032d059e33dd4f2c0  libstdc++-v3/include/parallel/multiway_mergesort.h
! 12a3c9581aed117f6123e0fa03981774  libstdc++-v3/include/parallel/numeric
! a43bdc4edbcd554e2b740504c1e09c52  libstdc++-v3/include/parallel/numericfwd.h
! 35cb43488d400a7726347ad453b3c4b5  libstdc++-v3/include/parallel/omp_loop.h
! 11d74d2215c0286e5f1935d888328a67  libstdc++-v3/include/parallel/omp_loop_static.h
! 0f0dbbad07751a542a6639f13684bfa0  libstdc++-v3/include/parallel/par_loop.h
! 4c9e2190283d7aedfad92d32c839e7e1  libstdc++-v3/include/parallel/parallel.h
! 77273ace28f16c41196123e835f6d89b  libstdc++-v3/include/parallel/partial_sum.h
! 6cdcc5e068b5566bbc1c11e98c7ed5df  libstdc++-v3/include/parallel/partition.h
! 4fbf5a11063dc3425a2b2840cd30f761  libstdc++-v3/include/parallel/queue.h
! b2220d49cf60efce303ff6e64bac520e  libstdc++-v3/include/parallel/quicksort.h
! 68253c0c8d417c7741c3d9d9e91fd805  libstdc++-v3/include/parallel/random_number.h
! 9a1588f1419efbede93220549356f127  libstdc++-v3/include/parallel/random_shuffle.h
! f98a7da671b9686b71b6a61ff48d0538  libstdc++-v3/include/parallel/search.h
! 08647d50bdc6db6ce76facae709bf41c  libstdc++-v3/include/parallel/set_operations.h
! 9b6626460802d976aabad0c8fd6e38ba  libstdc++-v3/include/parallel/settings.h
! 4403bce1af5ae08facd4703e9b4b2de1  libstdc++-v3/include/parallel/sort.h
! 52a6a4129846cceaf7e7124ce5a6d1c2  libstdc++-v3/include/parallel/tags.h
! 085e36e6e77e7679b5f2f5cd5fd93931  libstdc++-v3/include/parallel/types.h
! ee876d1419f189568c9dd7ed916f35d5  libstdc++-v3/include/parallel/unique_copy.h
! 025ff1d1cd81f4b5551024effaad0749  libstdc++-v3/include/parallel/workstealing.h
! ac6f3952b9775da8d2d822fb28883525  libstdc++-v3/include/precompiled/extc++.h
! 88de13548af2742f88d9e3dca38ccdb3  libstdc++-v3/include/precompiled/stdc++.h
! 60623194aa23fd2879dab07a37497288  libstdc++-v3/include/precompiled/stdtr1c++.h
  75cfb36aeb3ed8672bb4e2957272203c  libstdc++-v3/include/pstl/LICENSE.txt
! 7714f4d23024191c673a00d97ec3eb63  libstdc++-v3/include/pstl/algorithm_fwd.h
! f7997fdd1d4d0aa2b44955b6ecccaaf2  libstdc++-v3/include/pstl/algorithm_impl.h
! 3185ac970824daf25aa11bdf91bb3b93  libstdc++-v3/include/pstl/execution_defs.h
! 5a7ffb366bc207ad3bf7f1179eef3237  libstdc++-v3/include/pstl/execution_impl.h
  87b0d132d9a180f96cdd7cbbf15a9f57  libstdc++-v3/include/pstl/glue_algorithm_defs.h
! f7bb8687dbcd6bde91830528c90f2ad3  libstdc++-v3/include/pstl/glue_algorithm_impl.h
  dd6e851bc473b9ff23e81df89abe4fc7  libstdc++-v3/include/pstl/glue_execution_defs.h
  0b0a3983fbed012140824669c804e50a  libstdc++-v3/include/pstl/glue_memory_defs.h
  e5017e0d8d380d892163a4a110331fb0  libstdc++-v3/include/pstl/glue_memory_impl.h
! 9470d07762f86ba4655154491929a328  libstdc++-v3/include/pstl/glue_numeric_defs.h
  95509c3eea99d2f277912479e94c6449  libstdc++-v3/include/pstl/glue_numeric_impl.h
  d654c6a3cf5ee1bab1e7bc476cbb7f37  libstdc++-v3/include/pstl/memory_impl.h
  b692aa95f9f120acbe330c2893c3ce6e  libstdc++-v3/include/pstl/numeric_fwd.h
! 33218e2d937214ece57cd4bb425788e6  libstdc++-v3/include/pstl/numeric_impl.h
  f0154f75dafee0c95cfc13f091939f93  libstdc++-v3/include/pstl/parallel_backend.h
  e972bfc42cfac92bfde04a35e915514e  libstdc++-v3/include/pstl/parallel_backend_serial.h
! c7205056b7b327c57e1b8ab09cebb91d  libstdc++-v3/include/pstl/parallel_backend_tbb.h
  e128e525f970f3948feec2f4750919a8  libstdc++-v3/include/pstl/parallel_backend_utils.h
  d3d2812c60e828c1e822801f148c7630  libstdc++-v3/include/pstl/parallel_impl.h
  64e9a3bc96d1e3015387cb95106544cf  libstdc++-v3/include/pstl/pstl_config.h
! c236e001d2914387b789ce13408d7224  libstdc++-v3/include/pstl/unseq_backend_simd.h
  16ecbf48b313f47955487be8fe668037  libstdc++-v3/include/pstl/utils.h
! 685f5bca7582106082732b3aa4facb12  libstdc++-v3/include/std/algorithm
! fc9b21dd5374fb6eb8ae18d329975612  libstdc++-v3/include/std/any
! 4faa65318e774c512dc09204082151da  libstdc++-v3/include/std/array
! 0919c06365948d659b248b825a7d0146  libstdc++-v3/include/std/atomic
! 9f99ade7dd4b9b396effd0996ee55664  libstdc++-v3/include/std/barrier
! 1d2abe1b0e1c7d79fd3535156daa2880  libstdc++-v3/include/std/bit
! 06852873ecbf5b23ff53ea0b1952d3d8  libstdc++-v3/include/std/bitset
! 9a14b4a100a53947a8d1eff0048f6708  libstdc++-v3/include/std/charconv
! bbb9e8f110041e7b63f61076405a9f3d  libstdc++-v3/include/std/chrono
! bbf20db5408848d929deed7c0ba28df3  libstdc++-v3/include/std/codecvt
! 78b49533730f7911eed523a771160738  libstdc++-v3/include/std/complex
! 933005cab15e64abf8af0d4e0972908f  libstdc++-v3/include/std/concepts
! 845dbf5fd0370e00a14b67a3ac8e13d8  libstdc++-v3/include/std/condition_variable
! 947c6ec5853e7cb5329670b65d3e407a  libstdc++-v3/include/std/coroutine
! d4f9ad7eed03fb685a74447a8cd6ef66  libstdc++-v3/include/std/deque
! eea32f3270e190607c59e827a3854ace  libstdc++-v3/include/std/execution
! 1c7c64ed049fef47a387e3d61ead6bea  libstdc++-v3/include/std/expected
! 90e737ba6669d60bf339713688137e54  libstdc++-v3/include/std/filesystem
! 9ff8507290bd567b5585a89d2efb1b63  libstdc++-v3/include/std/format
! f613bffa0644f4de7e6e3bafb4867437  libstdc++-v3/include/std/forward_list
! 7aba15a067efc51b46fe83c639a9b4d4  libstdc++-v3/include/std/fstream
! 3cd9b1e9b37be162511c33419612df91  libstdc++-v3/include/std/functional
! 04293427f46f07515bd70dd7ba2af325  libstdc++-v3/include/std/future
! 78ffc46c16b9a997d6dec2769b74afc3  libstdc++-v3/include/std/iomanip
! ef4ef6905a058db64662fe609f829159  libstdc++-v3/include/std/ios
! 88e07accc8448f64667acd6ae768c4ab  libstdc++-v3/include/std/iosfwd
! cd9788479a1be1452b93338f2ac244d4  libstdc++-v3/include/std/iostream
! ea6795f6774a79557597d2fd2d000712  libstdc++-v3/include/std/istream
! 9fc5c0460bfa5d3c29872b66f4f34048  libstdc++-v3/include/std/iterator
! 0e5d279cbe89540e3f36a092a3beb896  libstdc++-v3/include/std/latch
! ae3312c33853f8a52ee7443cbe05a3f5  libstdc++-v3/include/std/limits
! f045775244230f66d1844314954ac80d  libstdc++-v3/include/std/list
! 456031d64ca4a2578e3d5507f328753d  libstdc++-v3/include/std/locale
! 5dc3e17ba9e05d4af5bbd28d13d7c43b  libstdc++-v3/include/std/map
! f78d1595423575bfc922448e67e52239  libstdc++-v3/include/std/memory
! 2f6ac8b75356690da639747c2e347c19  libstdc++-v3/include/std/memory_resource
! 6294ee905a70436875640f1d15627c30  libstdc++-v3/include/std/mutex
! 4cd64ec66707d7763837ea4a9dc99258  libstdc++-v3/include/std/numbers
! 3e6c45e4ef81035a43294dda759c6a00  libstdc++-v3/include/std/numeric
! 9a1e2dba1b06ee6cf101010c8182b7aa  libstdc++-v3/include/std/optional
! d80e37105837d110af793b72a4094525  libstdc++-v3/include/std/ostream
! 243b863f64a8568d74b7e83bfa7fe62d  libstdc++-v3/include/std/queue
! 5f64c48b6b92533c0dfdcd5b2f349ba0  libstdc++-v3/include/std/random
! 79e2e6c7860a8f4f6064d5f3626d55a9  libstdc++-v3/include/std/ranges
! da7a31f14e6e88cc992906c846b64721  libstdc++-v3/include/std/ratio
! dbf94a876bc82510f36ab506bfc09d2a  libstdc++-v3/include/std/regex
! 37862880def91088dfcc58a2d2f4867c  libstdc++-v3/include/std/scoped_allocator
! 0b4f77ab06fb190976feaa892d6bbc75  libstdc++-v3/include/std/semaphore
! d03063a4bedb845e2ff7fba28b7ecb1d  libstdc++-v3/include/std/set
! f3ac8bd95a6c2eb2e7d83679006be2c5  libstdc++-v3/include/std/shared_mutex
! d379c79a4b4ed0a78190d8f4a9da9aa2  libstdc++-v3/include/std/source_location
! 27031b3568f421d16ba2bf656a17e774  libstdc++-v3/include/std/span
! d85e5f395906ee64d169f731e153854e  libstdc++-v3/include/std/spanstream
! a75470ffd4afdfac6eca39a7b36542d2  libstdc++-v3/include/std/sstream
! 91e5fdbed2e8180adc1417ecfceba477  libstdc++-v3/include/std/stack
! 826f3f88540bec7bf44fb9407783bf98  libstdc++-v3/include/std/stacktrace
! 91c2dec920e37dc2bdfcd57f2ee1917c  libstdc++-v3/include/std/stdexcept
! 59e3dae4ebf67b9eb46705e56e8541af  libstdc++-v3/include/std/stdfloat
! 7fd4f7aceafc9e47af067236ba39094f  libstdc++-v3/include/std/stop_token
! 2b9390e43d36e97d4ea240c08afeeba5  libstdc++-v3/include/std/streambuf
! d4462abdac571d8d61a236930c8cfc4b  libstdc++-v3/include/std/string
! f576ee0f6523233bb3c5959e6593ddcb  libstdc++-v3/include/std/string_view
! c895ee7fd9901dd0db4d02868db684ed  libstdc++-v3/include/std/syncstream
! 3024f97bb54f08e9e739c9dbf71cfa07  libstdc++-v3/include/std/system_error
! f247d2ab92c9235549e795b99206b5e7  libstdc++-v3/include/std/thread
! 952b0c86a58de25b4b6f419af4a7e15c  libstdc++-v3/include/std/tuple
! 6042db6032893b4410b45b072da2a870  libstdc++-v3/include/std/type_traits
! 5a950e25b3e5d469314bc0a340057eaa  libstdc++-v3/include/std/typeindex
! b3721b1a59dccec76d19cdcd7d20c684  libstdc++-v3/include/std/unordered_map
! 2af236cf7fc416569643f603c509e022  libstdc++-v3/include/std/unordered_set
! 04c0b9a01a6866ec69b756ee26367232  libstdc++-v3/include/std/utility
! b175b3d95ea794c94fbd1f8147fca3e0  libstdc++-v3/include/std/valarray
! 90cbfb43f78efabb2c885711a449f3f8  libstdc++-v3/include/std/variant
! 347610187149e687c9f04f346f8398b6  libstdc++-v3/include/std/vector
! 0b62628823a59717fe8f0e4aa4731bce  libstdc++-v3/include/std/version
! 3aa50c1dd58b008e63662874a93f6614  libstdc++-v3/include/tr1/array
! 98b97b662591af51ce88a917962a9c2e  libstdc++-v3/include/tr1/bessel_function.tcc
! feca7de6d090c997fdee966b7ad6b001  libstdc++-v3/include/tr1/beta_function.tcc
! 3126a9ef9aa7d05b99f3f7e5b5a20e7d  libstdc++-v3/include/tr1/ccomplex
! dd48f3940b1b6960392b54a6443cc680  libstdc++-v3/include/tr1/cctype
! 207f9ce12192a4f7ff50c0a34df46f8e  libstdc++-v3/include/tr1/cfenv
! 569204d9cdaa8e015309aeb3f82e1485  libstdc++-v3/include/tr1/cfloat
! 18311534ed883a560a7c7bcc3968ab17  libstdc++-v3/include/tr1/cinttypes
! 0c82c25bd4d3af486d70ae099ab633d9  libstdc++-v3/include/tr1/climits
! 9370704275818e7e74d846432adb58ff  libstdc++-v3/include/tr1/cmath
! b74fabf7da5df4112409c6a36070df48  libstdc++-v3/include/tr1/complex
! b10e9df8c5c36f06ea43027cddb24e0d  libstdc++-v3/include/tr1/complex.h
! 214779779c74a1ea67ddcee1199a3e14  libstdc++-v3/include/tr1/cstdarg
! 650512e90f23079440bfc41197cbadfa  libstdc++-v3/include/tr1/cstdbool
! 3021b4557cedf6d6c910a044421380b1  libstdc++-v3/include/tr1/cstdint
! 5c54458f106a80092fcd76928b1bf18e  libstdc++-v3/include/tr1/cstdio
! 392b291add8db784a0d81dcdb7b1531e  libstdc++-v3/include/tr1/cstdlib
! f17ceff91821467f425b0251f8965b7a  libstdc++-v3/include/tr1/ctgmath
! 3bd13991654656240eab94c5310f56dd  libstdc++-v3/include/tr1/ctime
! eb6c1c87040538d45822e170ed1987b1  libstdc++-v3/include/tr1/ctype.h
! e74a043e27ca7a27fb1aacd3cd9c55d6  libstdc++-v3/include/tr1/cwchar
! 96c9aff747aa862bf306c177a8e42573  libstdc++-v3/include/tr1/cwctype
! 1775b79e7ac2319fdd3ac14df13ac028  libstdc++-v3/include/tr1/ell_integral.tcc
! 7934f4cb02f070a855291203768ffbb5  libstdc++-v3/include/tr1/exp_integral.tcc
! 656359d37f4fc97484356ea0a1f5a7a1  libstdc++-v3/include/tr1/fenv.h
! 17a4cc259d98f53053a7c8af8e3a1dab  libstdc++-v3/include/tr1/float.h
! e5cbce6ed4da7a7e0b7e0846bdfdce6e  libstdc++-v3/include/tr1/functional
! 25f0defb3c0b80f6fcbefe7d8911a9dd  libstdc++-v3/include/tr1/functional_hash.h
! f38d47c221bf5944dc421817575429ff  libstdc++-v3/include/tr1/gamma.tcc
! ef28819ef02e59a3805bc705ff319d17  libstdc++-v3/include/tr1/hashtable.h
! 4525aeb25e739be619a3a5b16df1c744  libstdc++-v3/include/tr1/hashtable_policy.h
! 309ec9bee208369280d0b13842e6939d  libstdc++-v3/include/tr1/hypergeometric.tcc
! 961c863e21d565c4bf74707b672d1e57  libstdc++-v3/include/tr1/inttypes.h
! 5d2bdba33f630868da2d399efcdf8405  libstdc++-v3/include/tr1/legendre_function.tcc
! cd4a82bcdc6c26660311cf36ccfa610c  libstdc++-v3/include/tr1/limits.h
! 0d9eee6c83736c76e270e0569b903f29  libstdc++-v3/include/tr1/math.h
! 75416c3b3f20a9747cdb67d4c7ede118  libstdc++-v3/include/tr1/memory
! ba584c917787e300907a23b2541ed150  libstdc++-v3/include/tr1/modified_bessel_func.tcc
! f6830e0537e604e3464e039b3daa7095  libstdc++-v3/include/tr1/poly_hermite.tcc
! 656a76445091f31c3abbf5f3f460d3bb  libstdc++-v3/include/tr1/poly_laguerre.tcc
! 2a2270abd9ed50fbb6c822038e853d25  libstdc++-v3/include/tr1/random
! 0673eac52e6fdf1da3226bea00a6c780  libstdc++-v3/include/tr1/random.h
! 28b905cb32a113ef838fd2dcf8d90644  libstdc++-v3/include/tr1/random.tcc
! 2eecf76fccaabb2c5b9f8cbe584d6151  libstdc++-v3/include/tr1/regex
! 03b178b938f323e1df1f92a1a6df36a6  libstdc++-v3/include/tr1/riemann_zeta.tcc
! f9ee8a726e1677cffe9ce15f7c6f2d09  libstdc++-v3/include/tr1/shared_ptr.h
! cbe13e809fa2aab617ea7c2e54a58c1b  libstdc++-v3/include/tr1/special_function_util.h
! 6d0aede632efa6a6aa372e1a192b40cc  libstdc++-v3/include/tr1/stdarg.h
! 92e031307c50e861d965e358fe7b4e81  libstdc++-v3/include/tr1/stdbool.h
! a1c75fb1d1b9e96048b8c634fd3a444e  libstdc++-v3/include/tr1/stdint.h
! 4c4a4f3d4ab0a9e87e741f7b57f92d97  libstdc++-v3/include/tr1/stdio.h
! 0b5879b6ff705b878848ae1efdff6f7c  libstdc++-v3/include/tr1/stdlib.h
! 6e88c545d3be6f3a07b54f2ec3cbb744  libstdc++-v3/include/tr1/tgmath.h
! caa7922ddcf6e2401744d62f959518ce  libstdc++-v3/include/tr1/tuple
! 6d63fa4a16ddac089c68ebfd46af31bc  libstdc++-v3/include/tr1/type_traits
! 669e18413431123b94a850f207fe5da5  libstdc++-v3/include/tr1/unordered_map
! 836559bceb305d36f108157ca7bfbef3  libstdc++-v3/include/tr1/unordered_map.h
! 7f6986fa762d7df2b129cb44b4ff600f  libstdc++-v3/include/tr1/unordered_set
! e3f34f2c8325e33d3fa3c1052982d594  libstdc++-v3/include/tr1/unordered_set.h
! 790b23c4f662b952bcc82090cd473613  libstdc++-v3/include/tr1/utility
! 0f4366d431d9248ae65004a4d6f0f0b6  libstdc++-v3/include/tr1/wchar.h
! e978819ab1cdd7dd69926a891b85b537  libstdc++-v3/include/tr1/wctype.h
! 7a2f4509b3ff8ea1e8fc5f10ba537bf8  libstdc++-v3/include/tr2/bool_set
! 491a252c5a2320cd573a7031abfb77e4  libstdc++-v3/include/tr2/bool_set.tcc
! c2b966d3dd9753e5f80880930b6b4160  libstdc++-v3/include/tr2/dynamic_bitset
! 3801b9b5eda8d271c741ba96d0082827  libstdc++-v3/include/tr2/dynamic_bitset.tcc
! 69455a5f73dd1eea720b68b11f2cee1e  libstdc++-v3/include/tr2/ratio
! 74a0067a1e4aeae044a369a2156dc2fe  libstdc++-v3/include/tr2/type_traits
! 5e8aa672a36039b5f77f12901aebb846  libstdc++-v3/libsupc++/Makefile.am
! 339c67d7031fc43d7b74fdcf288be3be  libstdc++-v3/libsupc++/Makefile.in
! 068cac167ea3df37fc0e54fc152281e3  libstdc++-v3/libsupc++/array_type_info.cc
! f90b514962a10a93907b8a6d89370763  libstdc++-v3/libsupc++/atexit_arm.cc
! ff404b9f6127c4b34ef7883e3d7476c3  libstdc++-v3/libsupc++/atexit_thread.cc
! e26fdb426ae44b3d2371f71f4f84cd20  libstdc++-v3/libsupc++/atomic_lockfree_defines.h
! c814c3d0e442f9e1afae185a5914fb78  libstdc++-v3/libsupc++/bad_alloc.cc
! adb5bad359a25eeaea8a8ccd818b28e2  libstdc++-v3/libsupc++/bad_array_length.cc
! c24da65e09203cc24f9ec26428c15db4  libstdc++-v3/libsupc++/bad_array_new.cc
! 3a83bf7b1cf425f41578b50a77bbc80f  libstdc++-v3/libsupc++/bad_cast.cc
! cc9c389b9c88d2a0d4f2350c9f1fd217  libstdc++-v3/libsupc++/bad_typeid.cc
! 32fd972c978959d92cecec3359a30280  libstdc++-v3/libsupc++/class_type_info.cc
! a40eb114be75c2e15f9b94456ec58a35  libstdc++-v3/libsupc++/compare
! 21a33dcaa8bb79f7e7c58b3623d2ee69  libstdc++-v3/libsupc++/cxxabi.h
! 088f76c359b59a48b5827182539f1899  libstdc++-v3/libsupc++/cxxabi_forced.h
! 751e06e6ce352b307233fa98ad163148  libstdc++-v3/libsupc++/cxxabi_init_exception.h
! c0a134e62cce461b345e73de0f4a91b3  libstdc++-v3/libsupc++/del_op.cc
! 28ef555406cd9c8f233f21faa1b08e7e  libstdc++-v3/libsupc++/del_opa.cc
! 7622514d64c1b906f10206be188a823d  libstdc++-v3/libsupc++/del_opant.cc
! dfa4967963dd2744171b2a36d10a8d30  libstdc++-v3/libsupc++/del_opnt.cc
! 7571e96d6415d9e4d105ff991f8cfc03  libstdc++-v3/libsupc++/del_ops.cc
! 2e9a6efc4441d3ba485bfa54e21c0bbe  libstdc++-v3/libsupc++/del_opsa.cc
! b4e56408af9bd1d777bbbb797dbaf77e  libstdc++-v3/libsupc++/del_opv.cc
! a7f3442a7475e21e1e845e058966ce7f  libstdc++-v3/libsupc++/del_opva.cc
! 593e66feafb3762d7d8b92a8ff8843a1  libstdc++-v3/libsupc++/del_opvant.cc
! 4a3035d50e0ab0792268187d63b9b591  libstdc++-v3/libsupc++/del_opvnt.cc
! 87f07044545f2caaff1b72ebc010a20e  libstdc++-v3/libsupc++/del_opvs.cc
! 507479a4c9afe642c5195516c02c03b7  libstdc++-v3/libsupc++/del_opvsa.cc
! fb719b1a4c5574dddb27b77cf80545a8  libstdc++-v3/libsupc++/dyncast.cc
! 27e412aba523a6fe7d170aff75b81320  libstdc++-v3/libsupc++/eh_alloc.cc
! 7482b51ebd29043fa667ea27ba5e5d57  libstdc++-v3/libsupc++/eh_arm.cc
! d37f73ab271f3660de5bf589b33b6329  libstdc++-v3/libsupc++/eh_atomics.h
! 4a585b2044bfdb86cf3d12279c0b059a  libstdc++-v3/libsupc++/eh_aux_runtime.cc
! 7bdd87ec828970d2ef251e67493bd13f  libstdc++-v3/libsupc++/eh_call.cc
! 703a71f07356d0b4abe5d551c66d7896  libstdc++-v3/libsupc++/eh_catch.cc
! 460e14b1e52a84159a0a3208ed208fe2  libstdc++-v3/libsupc++/eh_exception.cc
! dacee6c8dc24ce1401d629a140b922eb  libstdc++-v3/libsupc++/eh_globals.cc
! a243bbcab67576bb8386560da7bdb284  libstdc++-v3/libsupc++/eh_personality.cc
! b308df4f9882cefd3d85b0b20af0a165  libstdc++-v3/libsupc++/eh_ptr.cc
! 0ba3b1fce1abb4b8799dc243a894b8f6  libstdc++-v3/libsupc++/eh_term_handler.cc
! 03e5156580a43d630d3fa12f35db8dd2  libstdc++-v3/libsupc++/eh_term_handler.h
! 24bda1fc252c208715168a93a277a499  libstdc++-v3/libsupc++/eh_terminate.cc
! e8b2d9eaadb9ce08f723ba0229bd65da  libstdc++-v3/libsupc++/eh_throw.cc
! 011dd8200007359225676fa5d839ba3a  libstdc++-v3/libsupc++/eh_tm.cc
! 3d75885de1514f3c73facfa5c4dea9c0  libstdc++-v3/libsupc++/eh_type.cc
! f127a96d485490508664b60d52d96eaa  libstdc++-v3/libsupc++/eh_unex_handler.cc
! 838fc313f0a6e8930fde5426a0d2d41b  libstdc++-v3/libsupc++/enum_type_info.cc
! 133cbb0af36789cb35f4a40d70cb699f  libstdc++-v3/libsupc++/exception
! 5cd3703bfc6fe8687fc73b47395fb764  libstdc++-v3/libsupc++/exception.h
! a035b4dae3b2c081d8c7f5186d09d602  libstdc++-v3/libsupc++/exception_defines.h
! 314ad14748ccb9ff85c65d17ebb0828b  libstdc++-v3/libsupc++/exception_ptr.h
! c64a545d5c646a5538993c23e17aee98  libstdc++-v3/libsupc++/function_type_info.cc
! 4a3b7f5a30ac297a461e71888f2ba9c3  libstdc++-v3/libsupc++/fundamental_type_info.cc
! d9be9f5772273085f9bc3f4b403ac7e6  libstdc++-v3/libsupc++/guard.cc
! 9047126521e1cfe8dcfbcf2352463f79  libstdc++-v3/libsupc++/guard_error.cc
! ea7eb5497094b7c9acff6dc908df2bfa  libstdc++-v3/libsupc++/hash_bytes.cc
! 747349fa8997cb211d2d6b9f5db4eaf5  libstdc++-v3/libsupc++/hash_bytes.h
! b6c672b5641a6e6d7cfa16a0f06069e7  libstdc++-v3/libsupc++/initializer_list
! 2e881dbfacdd1cd248bead4d995d0a3d  libstdc++-v3/libsupc++/nested_exception.cc
! a1cffdff3f1336cd9faeea4f99884f6d  libstdc++-v3/libsupc++/nested_exception.h
! d9c6a94d55db87a407605e7b41ee9900  libstdc++-v3/libsupc++/new
! 67067ac20b20cdf4d4d92587b6aeb70d  libstdc++-v3/libsupc++/new_handler.cc
! 308d128661043bfc1b2b821fbb4567a4  libstdc++-v3/libsupc++/new_op.cc
! 80efbd25c8f484d3b58235b1edf1e389  libstdc++-v3/libsupc++/new_opa.cc
! 482fdfa9782c2c1f28f418b0ceceb209  libstdc++-v3/libsupc++/new_opant.cc
! 87353ff702d0a5b439354d92519d806f  libstdc++-v3/libsupc++/new_opnt.cc
! 0502b836a4f288f4da6e73a11e624501  libstdc++-v3/libsupc++/new_opv.cc
! 4d52acaa990924c5bf4097402addffad  libstdc++-v3/libsupc++/new_opva.cc
! 8aeae7373868078b4f00f0911d7b9af7  libstdc++-v3/libsupc++/new_opvant.cc
! e1cc009463df1dd9458ed4a5caec5e13  libstdc++-v3/libsupc++/new_opvnt.cc
! f6190c2d9668ce05131af2c7d14dc789  libstdc++-v3/libsupc++/pbase_type_info.cc
! 5fdee0908fce6c6c5e8c36a0d9b61510  libstdc++-v3/libsupc++/pmem_type_info.cc
! df8e31e8a73e21b8e5ddedfc9d2edcec  libstdc++-v3/libsupc++/pointer_type_info.cc
! 8a11a1a9edee0fe8c9ee6db113a6b5b9  libstdc++-v3/libsupc++/pure.cc
! adf7456201b02be3ffc7d2b063935188  libstdc++-v3/libsupc++/si_class_type_info.cc
! e95267ed39111c61bc286c4b0765f07f  libstdc++-v3/libsupc++/tinfo.cc
! e36d3b6eb74fee5cdd3be76d8364bf4b  libstdc++-v3/libsupc++/tinfo.h
! 2298d1802d08ee88038e0e1a851a28c2  libstdc++-v3/libsupc++/tinfo2.cc
! 2fcdb16f2ddcce24a5467ca402608774  libstdc++-v3/libsupc++/typeinfo
! c92166014ad88ce1c59607a6ac709fad  libstdc++-v3/libsupc++/unwind-cxx.h
! c4c66429fc19d3748c1253168b26b9d0  libstdc++-v3/libsupc++/vec.cc
! 63559d7141f0d6b71f03b61f9bbbd2ab  libstdc++-v3/libsupc++/vmi_class_type_info.cc
! 7b3ffa706962e11dd7dc35d3a02bde59  libstdc++-v3/libsupc++/vterminate.cc
! 369e758d65403447c43f5d325562b0ea  libstdc++-v3/libsupc++/vtv_stubs.cc
  6e1809e9ac8f237378ab1ebc1b99fb6a  libstdc++-v3/linkage.m4
! c60ac0cafa1d08d9d42c1a0973254c32  libstdc++-v3/po/Makefile.am
! a5457e41b18fa84291efc712d8c7db06  libstdc++-v3/po/Makefile.in
! fc63fe2107b25fc86f7177e9a59fd1bc  libstdc++-v3/po/POTFILES.in
! 049f9ba797ed1c205b8e5580f9d1886e  libstdc++-v3/po/de.po
! dc7cc5099afbf0b183ba4b7a1b17a4fe  libstdc++-v3/po/fr.po
! a9b07084694678e7af4132fbd34e81c9  libstdc++-v3/po/libstdc++.pot
! 5cb1231dcdf70f2bf70459bbce45898c  libstdc++-v3/po/string_literals.cc
! 206c6785774ce7238c26a17b32ef57f9  libstdc++-v3/python/Makefile.am
! c94ad903b4e7baf364cdc3ef5e9f58a8  libstdc++-v3/python/Makefile.in
! e4724aea7b38f8f2110f154ac4a2df43  libstdc++-v3/python/hook.in
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/python/libstdcxx/__init__.py
! 44ec7158da785f9f917e8209b8e2c880  libstdc++-v3/python/libstdcxx/v6/__init__.py
! 008579d7a01490f9f7b79c78685eee36  libstdc++-v3/python/libstdcxx/v6/printers.py
! 99694b2a9e2f8490f68e0fdc6d8de82e  libstdc++-v3/python/libstdcxx/v6/xmethods.py
  cdac7363b91e7d57b85f7b560f62f033  libstdc++-v3/scripts/check_compile
  a4c1d51bba293cee2307fc7f9dd090f7  libstdc++-v3/scripts/check_performance
  128d0fbc24e1d43d9ff93d14bd521aa6  libstdc++-v3/scripts/check_simd
  40f8ee10a4683f6c7f555f9450fcaa12  libstdc++-v3/scripts/create_testsuite_files
! bc9baab1a0376f2e247cd31815cbeab1  libstdc++-v3/scripts/extract_symvers.in
! 1baa00201a640f09bd8d2188b4802e95  libstdc++-v3/scripts/extract_symvers.pl
  755b77f929d926f07f3257df2e802f2e  libstdc++-v3/scripts/gen_bind_includers.pl
  85378fa65bc3dc46ffe255374b304560  libstdc++-v3/scripts/gen_includers.pl
  f1a84a17158780aaa37927191db4463a  libstdc++-v3/scripts/gen_includers2.pl
  c3455b8d87dcefd65c7fdcd24e4ce3a4  libstdc++-v3/scripts/make_exports.pl
  80b6ff44b325c6b6d113435d8eea4b76  libstdc++-v3/scripts/make_graph.py
! 2e523f6d6b0f8851adcef285faf8a454  libstdc++-v3/scripts/run_doxygen
  b5c90557075248abb064905101257dda  libstdc++-v3/scripts/testsuite_flags.in
! 24b1804d44132e8a1c9e33072badcb16  libstdc++-v3/src/Makefile.am
! d183489efa48c4d78ff3dbd68b24a207  libstdc++-v3/src/Makefile.in
! cc6940bf3798f08ccb14969552851c93  libstdc++-v3/src/c++11/Makefile.am
! 3eb5c5c986c09fc4579723757119adde  libstdc++-v3/src/c++11/Makefile.in
! 85081a7300398dcaa490d1027f2165b6  libstdc++-v3/src/c++11/chrono.cc
! b9d9e87481311acb2931f3cec60f25fa  libstdc++-v3/src/c++11/codecvt.cc
! d1f2d13073a3e57e01ede9898b5eed46  libstdc++-v3/src/c++11/compatibility-atomic-c++0x.cc
! de9c3ba43495072dd85a4e6e96e1ea62  libstdc++-v3/src/c++11/compatibility-c++0x.cc
! 9f57a171f75b71e3df9afbc529cf2779  libstdc++-v3/src/c++11/compatibility-chrono.cc
! 9d547796cec55cd7cdee2274b6fefed1  libstdc++-v3/src/c++11/compatibility-condvar.cc
! fbd510d1a3ca3b355c0a314bf2416b3e  libstdc++-v3/src/c++11/compatibility-ldbl-alt128-cxx11.cc
! f5f6465203bb0ca03df7e8ab4cb0f637  libstdc++-v3/src/c++11/compatibility-ldbl-alt128.cc
! 598fe36a18ac2267e53e9a14a73a88d0  libstdc++-v3/src/c++11/compatibility-ldbl-facets-aliases.h
! 3569deff0e356b5ada1fc3647d5c4cc4  libstdc++-v3/src/c++11/compatibility-thread-c++0x.cc
! a310efe14c9061c5d3258bc7d723ab19  libstdc++-v3/src/c++11/condition_variable.cc
! 70f3fa690f7b88e0d0c8588da1f9adab  libstdc++-v3/src/c++11/cow-fstream-inst.cc
! e080252c8275368f6ec96d830c01c45a  libstdc++-v3/src/c++11/cow-locale_init.cc
! 3582aafde2133939aac1ffce408c50ce  libstdc++-v3/src/c++11/cow-shim_facets.cc
! 9ec68c1dbbdde07d1aea8d15feb47298  libstdc++-v3/src/c++11/cow-sstream-inst.cc
! b83245172fc53af1877e70b90739a838  libstdc++-v3/src/c++11/cow-stdexcept.cc
! 0ea9c169a85742ff79ad82bbae929ab9  libstdc++-v3/src/c++11/cow-string-inst.cc
! a2d69e033e79e897205a54896734b75a  libstdc++-v3/src/c++11/cow-string-io-inst.cc
! d895c4f9e004ab4f4108ba1ef95c44c3  libstdc++-v3/src/c++11/cow-wstring-inst.cc
! 70aeaf4ebfb25b18f1d297c61559a58e  libstdc++-v3/src/c++11/cow-wstring-io-inst.cc
! ef4478d6bf409c2ce238ccfe7354338d  libstdc++-v3/src/c++11/ctype.cc
! ccadf49a9df54223b2037e8081505ac2  libstdc++-v3/src/c++11/cxx11-hash_tr1.cc
! 004a59076cf1c620606fe1912a250434  libstdc++-v3/src/c++11/cxx11-ios_failure.cc
! b6dd10b941b009bea22b75d0d398cc33  libstdc++-v3/src/c++11/cxx11-locale-inst.cc
! 92cdc1755e8b65ffafeed34de091ab9d  libstdc++-v3/src/c++11/cxx11-shim_facets.cc
! 997160475d88dc29b61b269efff8032f  libstdc++-v3/src/c++11/cxx11-stdexcept.cc
! 3796bac05ff7df965a9757f18127f645  libstdc++-v3/src/c++11/cxx11-wlocale-inst.cc
! edf762f44252010c99eac2e0a4ac4fc2  libstdc++-v3/src/c++11/debug.cc
! a4a908cdeeaa8c6ce003faea76195bfb  libstdc++-v3/src/c++11/ext11-inst.cc
! ba1e398802c7793fc33131cddac099d5  libstdc++-v3/src/c++11/facet_inst_macros.h
! 9289636c5342b21635582d8c595b61df  libstdc++-v3/src/c++11/fstream-inst.cc
! 33ecc52466d9288b45d383a46dc140dd  libstdc++-v3/src/c++11/functexcept.cc
! 3c12964a3ab2a922a90ec8927ab8dd88  libstdc++-v3/src/c++11/functional.cc
! 7d3d4758c370f9823c9bad4ca0d006b7  libstdc++-v3/src/c++11/futex.cc
! 382270f3469ceff6145375b027db83e6  libstdc++-v3/src/c++11/future.cc
! 78431bb3ab4d07b6db3befcbdcc4b544  libstdc++-v3/src/c++11/hash_c++0x.cc
! 59d3894c8a066bda1b6b65aa8799ad50  libstdc++-v3/src/c++11/hashtable_c++0x.cc
! 2b98f3c21b830bcae40bd0fb1ba2f5d8  libstdc++-v3/src/c++11/ios-inst.cc
! d1d5852a9856d9ca8eed9b50c24ef5ac  libstdc++-v3/src/c++11/ios.cc
! 52ebd036357a43af0d322c5c6fd24f1d  libstdc++-v3/src/c++11/ios_errcat.cc
! a481731dfb50ee220e185c5cbff3fc45  libstdc++-v3/src/c++11/iostream-inst.cc
! 5b35611a73fed7302c6fa6556c81ad16  libstdc++-v3/src/c++11/istream-inst.cc
! 7d153b8460b4c948f1ef17de2b7b60cd  libstdc++-v3/src/c++11/limits.cc
! a39a776917c8a9c201d8bccdb6281b05  libstdc++-v3/src/c++11/locale-inst-monetary.h
! afc0ed0b8be39eb78155599b5d871c5e  libstdc++-v3/src/c++11/locale-inst-numeric.h
! 69da45be524860055ff1c8a47c538381  libstdc++-v3/src/c++11/locale-inst.cc
! 6ef30e425a63b638c4cc2605b9a713c5  libstdc++-v3/src/c++11/mutex.cc
! 7b362b5e2578e83b0a60ed1e035698a0  libstdc++-v3/src/c++11/mutex_pool.h
! 37fce26862accf92bb93a388d13e754e  libstdc++-v3/src/c++11/ostream-inst.cc
! 9ea8a34e69d6b036710a5303e464a8cf  libstdc++-v3/src/c++11/placeholders.cc
! 199aa4eb94d626a1b3bc60eda117293b  libstdc++-v3/src/c++11/random.cc
! 5eda20858ccca7a4b902b803c722eee5  libstdc++-v3/src/c++11/regex.cc
! 626ee9d2155a9736e0d11e5254a97467  libstdc++-v3/src/c++11/shared_ptr.cc
! 14d8d5ea45e6c05cb04b8b37038e8590  libstdc++-v3/src/c++11/snprintf_lite.cc
! 4b7e62ecd7541ae137cbe363c742828c  libstdc++-v3/src/c++11/sso_string.cc
! 05222eb79b33f538a985cdae3bb43a18  libstdc++-v3/src/c++11/sstream-inst.cc
! dd8dcbfe0acfc3cc011c29d1ed45acd0  libstdc++-v3/src/c++11/streambuf-inst.cc
! ef67bdbe0c2027c6445346ab2acb76c6  libstdc++-v3/src/c++11/string-inst.cc
! 530f1c52bdd3db41f33320d6c5112f39  libstdc++-v3/src/c++11/string-io-inst.cc
! f9cb5a25b74bdeb0bd4361500ff27c6e  libstdc++-v3/src/c++11/system_error.cc
! 124e658a39d24501e83862a90bf15e54  libstdc++-v3/src/c++11/thread.cc
! ef9e5ee5d5bd1f5195945fc14fc07e56  libstdc++-v3/src/c++11/wlocale-inst.cc
! 289d934e470a7004214834d14cdbbd4a  libstdc++-v3/src/c++11/wstring-inst.cc
! 7eb1247c79992f020b1dc9990c38e25b  libstdc++-v3/src/c++11/wstring-io-inst.cc
! 8e7436242dc2f614d8d563a0c634a3f6  libstdc++-v3/src/c++17/Makefile.am
! 1fab41448c9ad9ce8c3f32fe49551fa8  libstdc++-v3/src/c++17/Makefile.in
! 09a10fcfd4adf03b04c1080e27df1067  libstdc++-v3/src/c++17/cow-fs_dir.cc
! b0cc06d76d3956b4419a3afd3e559d14  libstdc++-v3/src/c++17/cow-fs_ops.cc
! 267455d4fe64b791b2684201458fae13  libstdc++-v3/src/c++17/cow-fs_path.cc
! 3bac8350988c1a672e34960b650d1b99  libstdc++-v3/src/c++17/cow-string-inst.cc
  21e22ff1ddec6a91c7b379d6f6398649  libstdc++-v3/src/c++17/default_resource.h
! c347ef2c3ab2982bb980afb943891a83  libstdc++-v3/src/c++17/fast_float/LOCAL_PATCHES
! cdf9c54ab7ea85aa42bbf32b2e749913  libstdc++-v3/src/c++17/fast_float/MERGE
! 88af13a4cebd3e9f44449b09304147d9  libstdc++-v3/src/c++17/fast_float/README.md
! 093cc2d73328b5328c46320d9fb0ad05  libstdc++-v3/src/c++17/fast_float/fast_float.h
! c1f9be061d6741576888a9b4d6acf060  libstdc++-v3/src/c++17/floating_from_chars.cc
! 30b7f5aefb597dadcaad0780a1ca79a2  libstdc++-v3/src/c++17/floating_to_chars.cc
! 56791bd9a91b72bbb0632e8468cf9459  libstdc++-v3/src/c++17/fs_dir.cc
! 542d3411aa720b9b4ab921f85ba47b71  libstdc++-v3/src/c++17/fs_ops.cc
! b4f7efe606a4becbbce5f5bf4e68501d  libstdc++-v3/src/c++17/fs_path.cc
! 115b4116584b81ff091cc1c8a434be2b  libstdc++-v3/src/c++17/memory_resource.cc
! 2e23492a9bdff13463ee6d01c4b7cc20  libstdc++-v3/src/c++17/ostream-inst.cc
  f7696e2f5518e5e873ced4beacb8d107  libstdc++-v3/src/c++17/ryu/LOCAL_PATCHES
  e225c39ccc4c6adc72a744687977d59d  libstdc++-v3/src/c++17/ryu/MERGE
  5c512389f4cbe0ea37ce2a8da0f070d6  libstdc++-v3/src/c++17/ryu/common.h
*************** cdfce2fa1d76af09cfdf0989501826ca  libstd
*** 106219,111121 ****
  74bc36f5cffd7626c78090061e4416a9  libstdc++-v3/src/c++17/ryu/generic_128.c
  fbb127f006c65ae37d591c627cc6235c  libstdc++-v3/src/c++17/ryu/generic_128.h
  85b9d2e407dc7113a97234b2c23e96dc  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
! c645b4526ffc084d20f1eca900f28d38  libstdc++-v3/src/c++17/string-inst.cc
! 191e711bd91d0823733583d0b49ddbee  libstdc++-v3/src/c++17/uint128_t.h
! ecd4d3340ce895b35cd15a00b48c0fa1  libstdc++-v3/src/c++20/Makefile.am
! 2033b325a511608dc1827e9b510eefe9  libstdc++-v3/src/c++20/Makefile.in
! 065be3f5fe1dcd6457f9b3a90652a5ca  libstdc++-v3/src/c++20/sstream-inst.cc
! a41eff0c0341a8ce9444319328df7c98  libstdc++-v3/src/c++98/Makefile.am
! 7abb3156a9e4cc11d009f9851281517b  libstdc++-v3/src/c++98/Makefile.in
! f20f891f15263a00ec44a6f0af72271a  libstdc++-v3/src/c++98/allocator-inst.cc
! d2b98514098452d051a51d0e9d7a4bbf  libstdc++-v3/src/c++98/bitmap_allocator.cc
! 6973db22f1c691c50329c18ca92f4c56  libstdc++-v3/src/c++98/codecvt.cc
! cac5f9cc31d81a5b178f751a420015c0  libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
! 41a29b72ca29817eeabb24fb91c6058f  libstdc++-v3/src/c++98/compatibility-debug_list.cc
! 4ade19dfd769389abd31ea40b3babdc9  libstdc++-v3/src/c++98/compatibility-ldbl.cc
! 1cebd42cd88fa7064d63c1c35446d22f  libstdc++-v3/src/c++98/compatibility.cc
! ac641d5608529c2cd6be6fb96366f94f  libstdc++-v3/src/c++98/complex_io.cc
! 5537feb456c14cc70601a1e38ea7ff3f  libstdc++-v3/src/c++98/concept-inst.cc
! ab012206ac098fa74570935c94639f3d  libstdc++-v3/src/c++98/cow-istream-string.cc
! 20e1b729cb2df7d01848b45b5bb10f26  libstdc++-v3/src/c++98/ext-inst.cc
! 08b77625cf1b34e1f1a3e78018aa4303  libstdc++-v3/src/c++98/globals_io.cc
! 8a97eeffcd13d24231cd940639fcb598  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
! c829300d08f7d2c634a4496a70adb0db  libstdc++-v3/src/c++98/hash_tr1.cc
! 6ef4219a1ef8e7d3861feab8e0db4f0d  libstdc++-v3/src/c++98/hashtable_tr1.cc
! 619ac7fcd1b6ab8f610d5b15ac7589f4  libstdc++-v3/src/c++98/ios_failure.cc
! f4cb33993065f30cebe657441e1ba98b  libstdc++-v3/src/c++98/ios_init.cc
! 1bdea41f382e85b0d5631deac79b2ea6  libstdc++-v3/src/c++98/ios_locale.cc
! 67cdf2af2758b592e8a50d7355c92338  libstdc++-v3/src/c++98/istream-string.cc
! ea1d3cba52f54695f9a41bed98515c50  libstdc++-v3/src/c++98/istream.cc
! de3a3d0c5c9a6c342709a687fcbcab02  libstdc++-v3/src/c++98/list-aux-2.cc
! 139acef23be0650b05bc4081d1b23af0  libstdc++-v3/src/c++98/list-aux.cc
! 6a672c8f7a1968b710a0fa2cbdd99c2d  libstdc++-v3/src/c++98/list.cc
! 002f604a68a21a5ea5c29d35d2208780  libstdc++-v3/src/c++98/list_associated-2.cc
! f8e9b1b30aa85adff4df24aca0a6a1f9  libstdc++-v3/src/c++98/list_associated.cc
! 0ad199e77e44ee3bd5d6b5d820c86a7a  libstdc++-v3/src/c++98/locale.cc
! a83aec10dba6ae5c0cfe84dec785c70d  libstdc++-v3/src/c++98/locale_facets.cc
! 2c315180d786cebd4dbceedec94e21c6  libstdc++-v3/src/c++98/locale_init.cc
! 5f5c5bfc4adf2a48a4eea2e07d90c310  libstdc++-v3/src/c++98/localename.cc
! 6290413104cec287baa59248b768c01d  libstdc++-v3/src/c++98/math_stubs_float.cc
! cb12828e6043770cc9ccccefed0f6704  libstdc++-v3/src/c++98/math_stubs_long_double.cc
! fc271ec1b45cdd32584963da1033ad6f  libstdc++-v3/src/c++98/misc-inst.cc
! c0dd2a11be340e204f18b3efa8471698  libstdc++-v3/src/c++98/mt_allocator.cc
! 580f3abe7873fcced28ee397adedd0c9  libstdc++-v3/src/c++98/parallel_settings.cc
! 4cb4558b34b1bcd5c5603b9e05ad1419  libstdc++-v3/src/c++98/pool_allocator.cc
! be357672c5d62b69704f42e657c803af  libstdc++-v3/src/c++98/stdexcept.cc
! 215f19755044f0a5e1a04d9c5b579660  libstdc++-v3/src/c++98/streambuf.cc
! 74b18bdf7aea819d66224a06e44d7331  libstdc++-v3/src/c++98/strstream.cc
! 02e90781f86cc133d4ef654f8392a24e  libstdc++-v3/src/c++98/tree.cc
! 24e70b3195cb534238447376bf6ec526  libstdc++-v3/src/c++98/valarray.cc
! 5dddddb3d6e6a00e059e6b3c1eecadff  libstdc++-v3/src/filesystem/Makefile.am
! 17a3c04f609bc38c6deed71c73d6ff75  libstdc++-v3/src/filesystem/Makefile.in
! ce5be71e7e8cd53b30c2f5098afdf2f3  libstdc++-v3/src/filesystem/cow-dir.cc
! 29b3e93d216028819a4e3afc430e5273  libstdc++-v3/src/filesystem/cow-ops.cc
! c9755a27253724e51dc118d2832eec1c  libstdc++-v3/src/filesystem/cow-path.cc
! 5b0a766e4b7be57dc339424afd722b26  libstdc++-v3/src/filesystem/dir-common.h
! b8fde319e2db86a39680ddcb52522fef  libstdc++-v3/src/filesystem/dir.cc
! b9b6ffad8359d41703179cc825363690  libstdc++-v3/src/filesystem/ops-common.h
! a287374bc3d519a3e459736e90573f72  libstdc++-v3/src/filesystem/ops.cc
! 339d6d3eeddb51bb668748f19203420f  libstdc++-v3/src/filesystem/path.cc
! 363b12ab3b2dd386adec7aee648e7dd6  libstdc++-v3/src/libbacktrace/Makefile.am
! 775bfe992c7c40d0700e4fa9f00c9d83  libstdc++-v3/src/libbacktrace/Makefile.in
! ce4e38332339194e4192eb2ba07fcd41  libstdc++-v3/src/libbacktrace/backtrace-rename.h
! f1f9f4df2a1a6c954c5a09ac3f6238e8  libstdc++-v3/src/libbacktrace/backtrace-supported.h.in
  d80381bdd74336b121a4f087efc21dbb  libstdc++-v3/src/libbacktrace/config.h.in
! 2149b0702ec5ba25f34f15320f7193aa  libstdc++-v3/src/shared/hashtable-aux.cc
! 6b40c6a3a43f23ab00e64be34d341a9c  libstdc++-v3/testsuite/17_intro/badnames.cc
! 86965508e6ff66abe5479ba8457e5e19  libstdc++-v3/testsuite/17_intro/freestanding.cc
  d5df5ddc3b7c5dba2e687798eaa28551  libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc
! 2c59f7c6df5154b1cc918b4a7b08f374  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
! 90fbd0d2ef93c24fe0458849ed288646  libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc
! 02c8b56f96e9590e4d86c7516573f667  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
! 46f2590b5b7bb9c2f36cf2eaadf40cee  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc
! 336c6bfe5511a7a50e74b265779f52db  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc
! ca1dd638ac8970e0aa4460c00f01e4b1  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
! 8ce60e38c9a3fe2126dc7eeeb3fad948  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++1998/charset.cc
! b313580b4a19990c1827d5c70dcc734b  libstdc++-v3/testsuite/17_intro/headers/c++1998/complex.cc
! 287e047fe6c89f875288affd008c0291  libstdc++-v3/testsuite/17_intro/headers/c++1998/operator_names.cc
! a20cd13773325e7df91e7386ab4d1774  libstdc++-v3/testsuite/17_intro/headers/c++1998/profile_mode.cc
! a6c8cd1fa536f2ecd02fc2ef199e379d  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
! 7b2ab7680e7bd949a6698fcddde94212  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
! fd2459aa7afe821d76b821a26c5a47fc  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
! 585f0cf8e0d24955bec36fc1d82cacda  libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc
! 6b3d4880efc0d0fa6c8bb5462c7c392b  libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc
! 7de8fa5e4e372d4b461e71b92fcead60  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
! 7c93abc09d62ddb6bdb52c1a3d5627e3  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc
! 7e6bb12e85292beec25b95d004c2553b  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc
! fcbd0dd536fd82d494006c1adc330d58  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2011/charset.cc
! 0d0e91eac473f2808fac51fdc91f259d  libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
! 69bc3b3a598dde5c67f9bcfbb99d3b75  libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc
! 7aa68916c94dc6c87e7f2369b4319ed4  libstdc++-v3/testsuite/17_intro/headers/c++2011/parallel_mode.cc
! dd6ca0f34926ae5e6f89c9ae1f8c30cf  libstdc++-v3/testsuite/17_intro/headers/c++2011/profile_mode.cc
! e8549de82db01dfe8e3a0355d8f2b33a  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
! 5f9caa472a09014f73817189d4ae4dfd  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
! 5cd28cdfdde8c56480504850ffaa21e9  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
! da55ecc7cef99b36ef03364eae522033  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc
! 1684bcf54e6008c5021355e654ed8a46  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc
! b03962e230b030ffcf62a1488e011f30  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2014/charset.cc
! 228830cb92f261cd82ca3aa23c776c66  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
! 84ca67545dffa7203620e34732eb7593  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
! ae65032b38f314fef62f6f364d6c7157  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
! 12a07aae6fa90bedb555c124d0f66120  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! 6e7b3b8c7ffe8cdbd1c49616a0be2bb9  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
! c992084d535a90d896e5cb35807b8a00  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_exceptions.cc
! c01792fffe6a147dc425ac224d13f816  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_rtti.cc
! 5bd6e9913080aba9614ef52af4965754  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2017/charset.cc
! 7aadf32cc1b68607223614fa5eca019c  libstdc++-v3/testsuite/17_intro/headers/c++2017/operator_names.cc
! cd5dffbc3aba8c16f85e02e70d552682  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 7451602e14460df22d4dd28b103fe93c  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++.cc
! 126070dc034554894eabc4f7089e4cab  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc
! 948fe796bf7402369a51bd5702e4a02b  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_attributes.cc
! d7a8d028db8fb32358e31f86016abb31  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_exceptions.cc
! 01bcc54f6c296e8c69ef6d25a2067338  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_rtti.cc
! 0dfaf32dbbdb356309bdfa030a6c4bda  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2020/charset.cc
! 64f755290372eba3d8235278d6f5b8b7  libstdc++-v3/testsuite/17_intro/headers/c++2020/operator_names.cc
! 652e2a337bf38b3e3ca0c49c2bcdcca6  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++.cc
! 9df22201175c827bee60b62e621e537b  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc
! f11164ff458b5a76ab402a7f1bfb3783  libstdc++-v3/testsuite/17_intro/names.cc
! 44aea4dc1700d437c73f660156e02461  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
! ef83f2fe6df689b8cf96f8504ae113db  libstdc++-v3/testsuite/17_intro/static.cc
! dab68cc9b569ccb6c01e3bd633cc366b  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
! 9906e3e6a3de09c92b7340611b01d59b  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
! f42116f51934d50c2e0d3652835c214b  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
! a4a5bd862fc6ca9e6d1b346402317c95  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
! 7f028883a5cf77646f05ece226964c5b  libstdc++-v3/testsuite/18_support/50594.cc
! e2ab3ad5697eb22ff7c1fcd290afafe5  libstdc++-v3/testsuite/18_support/51333.cc
! 3ca78eb3b8e646fee2a81e66c8a294c8  libstdc++-v3/testsuite/18_support/96817.cc
! bd7bc0f2185898e63ff6157a9140875c  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
! 41864497964e5c8c8c48c4058cc44ac3  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
! 0bf052f40015bcc6b36dfe45b35cee10  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
! b25fe194d4118b2e9eec2b5934ee97ef  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
! cea1012feaa338d86d01b74d4f82b3b6  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 9bed123847e8d5e214106e5acb26132c  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
! 958cdfa3627fd5014764524cba346ac5  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
! 9eec143f76fd0d4461a3c4bb32bcf815  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
! 26328a0d2c0965d50d626129fb28d639  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
! 661056c805cabfb091f4d02744479308  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
! 063c5ad559b990fa8885dbeba31336e8  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
! aee49984324ed3aab221b619ac4291c9  libstdc++-v3/testsuite/18_support/byte/81076.cc
! 1c2f7cf58532fd7b3323e682f3b4754a  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
! 1f889c9e5de5660c8829baa2a1ee95d3  libstdc++-v3/testsuite/18_support/byte/ops.cc
! 381028d43987418cbde5ccbe8dbd1a1e  libstdc++-v3/testsuite/18_support/byte/requirements.cc
! b4c65970a3b96295ca66e5a7376e3d19  libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.cc
! dc5634272f232f8b37646ae019421def  libstdc++-v3/testsuite/18_support/comparisons/algorithms/partial_order.cc
! 06d343004bb1c9141375fc7d841ac01b  libstdc++-v3/testsuite/18_support/comparisons/algorithms/strong_order.cc
  f4f086f988cf867097fb97b97bd5ca29  libstdc++-v3/testsuite/18_support/comparisons/algorithms/strong_order_floats.cc
! 498ad9e8f10412e2cfbfef37919b0224  libstdc++-v3/testsuite/18_support/comparisons/algorithms/weak_order.cc
! 5332e0ff583c86ceecd76e5cc16b16ba  libstdc++-v3/testsuite/18_support/comparisons/categories/94565.cc
! 3ff421d3ff11df1df886f4b7b70c4b19  libstdc++-v3/testsuite/18_support/comparisons/categories/partialord.cc
! 70e06816e437cdbc95f857a55e400e9e  libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
! 669effa4fe904ac8106e38f0d8d4937e  libstdc++-v3/testsuite/18_support/comparisons/categories/weakord.cc
! 7b3f559c2867ca6eb56004ce6f553e8e  libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc
! 01e8757cc0cf2594f9450c1e11b995df  libstdc++-v3/testsuite/18_support/comparisons/common/1.cc
! 72a86799316f962cab45748795efd934  libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc
! e6f0f32eb33f7116fe438c8f2902657b  libstdc++-v3/testsuite/18_support/comparisons/object/lwg3530.cc
! b3c02997c9f58784c7b7a1e2c24f479b  libstdc++-v3/testsuite/18_support/coroutines/95917.cc
! 655714524866e35bfd2069e26ddc8e92  libstdc++-v3/testsuite/18_support/coroutines/lwg3460.cc
! b8b157b42eb0f130d851ba69b2bed24b  libstdc++-v3/testsuite/18_support/cxa_vec.cc
! bf6c678b562c6747f18837c3f9664d05  libstdc++-v3/testsuite/18_support/destroying_delete.cc
! 6b20ad58a7469e773f51897adca1b1ba  libstdc++-v3/testsuite/18_support/exception/38732.cc
! 6dd717147717bd93f5e6bf34c266f52a  libstdc++-v3/testsuite/18_support/exception/what.cc
  8a3e4fc86620d59634749ffecd317237  libstdc++-v3/testsuite/18_support/exception_ptr/103630.cc
! 4ae6c9ff1173f8de07952e2c3033dbdc  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
! c5d876ed3e039e83035364d2184dcb7d  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
! 6dbe4af2151aa65119ef9df30e145d56  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! e387e28de36895c01c664d10277bb0fc  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
! e7eb5041cee86bc2bce203b1e422ed7e  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
! 36fd9261c3859430f9ba3cac537bb7a8  libstdc++-v3/testsuite/18_support/exception_ptr/90295.cc
  8907da30a344e71f1227eec1fae72f2b  libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc
! 3ba3ed11aea6aeaac34e5250048fc5b1  libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
! 65bcfe2d5500b5f5c5a323c6ead411ae  libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
! 45992fac20fc7b9ecae588e6d1790281  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
! c5df8c7fc2568a8bb0152b73777056ed  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
! 4f19c1ceff56336bedaff133db341553  libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
! 3926df346622c6861a7af169b68a2f4d  libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
! 37b5b9a0ef543d38de704ccda2f56605  libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
! 69c02ee2b0d71204648f57914242be1a  libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
! 8408fe0a0376b3636c797c3e6b1deb07  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
! 2d82a7cfa520da35181a392a0e115ffa  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
! ca5c0c5d110560a910cae9a0b914959e  libstdc++-v3/testsuite/18_support/headers/cfloat/values_c++17.cc
! 4b214afd2993d28bc787489a23546014  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
! c027e75bdc5cd57d743e65e326b12b8a  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
! 6bcc201e82c5abaf969dc4778c8622c0  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
! 5d66c10fbc4ea64e3eada882899b95ce  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
! 1774532592e947becfdb66c7a8ebc34d  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! 8a5f0a5c42130b41ae1df8c93222b02e  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
! 120d4976a57c74f1a381241fe614da5b  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
! e29a610d3a731e8999fba7a298d44a6a  libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc
! 8e585c05c9aa78c867e5813c9a30669a  libstdc++-v3/testsuite/18_support/headers/cstdarg/macros.cc
! 177052e17ea5a6d3d739bb7e614451d2  libstdc++-v3/testsuite/18_support/headers/cstdarg/types_std.cc
! 1706a7692cc2e72df59a9d8e4b4197d3  libstdc++-v3/testsuite/18_support/headers/cstdbool/macros.cc
! efd58a07884a1a2bea4feadbbf7920c5  libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
! 9b20bef74f416918a0cf7da6b1c2bf31  libstdc++-v3/testsuite/18_support/headers/cstddef/macros.cc
! c403fc3994a109210d74ddd7d3d3d029  libstdc++-v3/testsuite/18_support/headers/cstddef/types_std.cc
! 55ce21b67991cbcd75097ce22008375c  libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
! f9bf2e94ee206df4afbf529823344233  libstdc++-v3/testsuite/18_support/headers/cstdint/types_std_c++0x.cc
! 4c2623bf6127742dad79fd15a99bce4e  libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
! 1de6359684783ed2df05ae153b9a9078  libstdc++-v3/testsuite/18_support/headers/cstdlib/macros.cc
! 8971e837c391d8e638027093c8a1769d  libstdc++-v3/testsuite/18_support/headers/ctime/functions_std.cc
! 9c1cd8f966d646dd3fe7d1d7f3123485  libstdc++-v3/testsuite/18_support/headers/ctime/macros.cc
! b565e98e9f12d54fafee18f658f59e1c  libstdc++-v3/testsuite/18_support/headers/ctime/types_std.cc
! 109e9213aff428f29ce8cdae0714c265  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
! bd22edef1cc4ecd23571f22a641e14c5  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
! 1d3e04d64ea5f02e65df071e37aacfb9  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! dc4b65b1dfdef10f19cb46327175339b  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! c923cbf30dc4b9c0df6d60baac7a7916  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
! 1a611f26745deca541d2233fab0a17a8  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
! 6eaac8b6193528e89c42c90811e089b2  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
! f3b2f89326708a81202b451e210f8086  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
! bee7eebc169b60ec5f8498407975efae  libstdc++-v3/testsuite/18_support/headers/version/macros.cc
! e6611aa7c917222fe80743b01886d8e7  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! a16298b97b68e9472d173a60c51fa0c6  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! 93598ab7a68a759b7bed9823de7f739c  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
! 0c308c7c7fbc2edb8559c9db16a0f373  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
! f624e33bdc02c77fb5778cb82d562e26  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
! d9494ebf763aaa427dff0cb1bad3c3ee  libstdc++-v3/testsuite/18_support/launder/1.cc
! 498a5c9e1f2f8ce0527d80b07a3df3e3  libstdc++-v3/testsuite/18_support/launder/nodiscard.cc
! a15834ba9d01e286f034b2ad489a3f40  libstdc++-v3/testsuite/18_support/launder/requirements.cc
! 354627543c4d847ee11cc89077346be9  libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
! 5db337751458aa1774af1adcd8d77c89  libstdc++-v3/testsuite/18_support/max_align_t/requirements/1.cc
! 3e38e5e8c5c62f78bb6f2b03ce86e149  libstdc++-v3/testsuite/18_support/max_align_t/requirements/2.cc
! dc40df5591308832205daabef2aa99f0  libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
! a382f504e941a23d0797af2cf8f75988  libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
! 698f8813963adb085ff38f9905be3dd9  libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
! d5eced8168b2128d24bf93c3c0601b13  libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
! 6b4b378c83a1a50e16f9747591e740f7  libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
! 0995bc89d856dfbee4fdef032bf5be4b  libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
! b9fd24dabd45aeb58f49d163159969e0  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
! 824fa0cb158a489b7c1be6376696e2ec  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
! 2ee56d99dbf0b1f1b90014a948892eea  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
! eb0e3ec00478dd3f996bc89b1923586c  libstdc++-v3/testsuite/18_support/new_aligned.cc
! a48edfb14d283df63c79641898aa4146  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
! 183f355142a2ebc660affd473c5471ab  libstdc++-v3/testsuite/18_support/new_handler.cc
! 2f1b95f9cf7dea1e3d5c5afef956866c  libstdc++-v3/testsuite/18_support/new_nothrow.cc
! 59ad3909f307e0747eab47ead4637928  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
! 7ff8875ccb67e3edeb333989b1302c49  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
! 792e5796ce23ed7ae896f901fe8e21e2  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
! 755184e846ce6df66e9a08a3ff904ce6  libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
! 8fb305ba4a0ce2d2083008fbeded939f  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
! b94d5d0ebd7d963ba90c5c1f87005389  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
! 9e76e2aaad403df910351476b2d1ce67  libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
! 2ba889501f14225cf0f9b1c646ccff07  libstdc++-v3/testsuite/18_support/numeric_limits/digits10.cc
! 74e18b8325b886d7d5d0d9bba27b91eb  libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
! 363ceac27a0b5112aee20a9a9341373d  libstdc++-v3/testsuite/18_support/numeric_limits/epsilon.cc
! 534be28dbb4565126db60b9c982ab4f3  libstdc++-v3/testsuite/18_support/numeric_limits/infinity.cc
! 5ba14a1ae08c88837310032209eff956  libstdc++-v3/testsuite/18_support/numeric_limits/is_iec559.cc
! 58766bff78d16b47a523b238c0dad5f2  libstdc++-v3/testsuite/18_support/numeric_limits/is_signed.cc
! cc54e89e8c8d8ce4bdc106ff7cd06ad2  libstdc++-v3/testsuite/18_support/numeric_limits/lowest.cc
! 8ea155ecdeb17b8b99b84ba8e4c309e1  libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
! 2cc640da7d8cc494dd4c158dcc74ef28  libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc
! 9941ac0b81ca36701fc5913e848921c7  libstdc++-v3/testsuite/18_support/numeric_limits/primary.cc
! 8310c189ace14efa52d708a76e1da3e5  libstdc++-v3/testsuite/18_support/numeric_limits/quiet_NaN.cc
! 9287de812553d2308bc380dc72802fa9  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
! 40e2542275aa390275afcacf2a9fd220  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
! e29e9f4eb348028999b4e3c020770efd  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc
! ff9150a9e00693c510bd868057bb3425  libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
! 79c9da03c1d0f3940ab3d6e53eeaaf91  libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
! 8366fdc02f41d4c76e181903324da02d  libstdc++-v3/testsuite/18_support/pthread_guard.cc
! dd16b1d84319e38131e7507354897c76  libstdc++-v3/testsuite/18_support/quick_exit/quick_exit.cc
! 5fe07f8bf4e87340b7ffcf1376687e19  libstdc++-v3/testsuite/18_support/set_terminate.cc
! a099ed8465c2104c512f83439b4a5829  libstdc++-v3/testsuite/18_support/set_unexpected.cc
! e83ab6fcbea4f002d1b09461c1cb502c  libstdc++-v3/testsuite/18_support/source_location/1.cc
! 1b56a1c9e93efc536606b4a4626e8823  libstdc++-v3/testsuite/18_support/source_location/consteval.cc
! a9d8f7acb6e7be028dcaaace665beba3  libstdc++-v3/testsuite/18_support/source_location/srcloc.h
! 6d07e08104d920d70d081261d478cc07  libstdc++-v3/testsuite/18_support/source_location/version.cc
! e99074e35242ec6648381247f776f9a7  libstdc++-v3/testsuite/18_support/terminate_handler.cc
! a4ea00becc0e698345c65728494c0afe  libstdc++-v3/testsuite/18_support/type_info/103240.cc
! 6c2a3b66005913a1dc28fc600e569e41  libstdc++-v3/testsuite/18_support/type_info/52562.cc
  7cc0fa5a242dc51c7245f1c2fc52e0a7  libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
! 6ed1dc9ece8d4b1a6d4091f7cc9d5c2d  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
! 95486fdff7794f622f6bc62cae3db00f  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! b4827c2ef0ad79890f3e7c66888fff3d  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
! 198ecbc46c52e5800b6607de94d5b7ed  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
! 0e36a7cd5dc718d1cf090b296c4ae08f  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
  e76078fa52225514dc89f9b1116c07ff  libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc
! 8e44f76952bcbb5cdc1c0a7cabe08b8e  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
! 907b9f6b78daf93f9905216bf3e6a151  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
! 5a980808013e81ba89f44977716b05d2  libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc
  0a66d8bbf6fa03d3f76f4e2fdde4daf7  libstdc++-v3/testsuite/19_diagnostics/error_category/noexcept.cc
! 5de2967bc4784fcbb31f74be03611b3c  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
! e02a4609c356f585bb83fa7d5848fee5  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/less.cc
! 0b398a64b97525c4bc0743d9cd913270  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
! 92942d91124cce305b24b5388af050f5  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/three_way.cc
! 4c92c827b47823e8bbf90db105d5956a  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
! e8a86f7e9babfdaa4f57b3e02a368e52  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
! dbf3d1ded9e69273cc36d09366a230a2  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
! 3757f17027560275424dfa2e7cab6d75  libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc
! 0a8a4ca6e2525f1d8259d28ad9570b83  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
! 32b2e6d58d0bde6332960cd11770eb6d  libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
! 39e572b1724d58c70d2676bd179885a0  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
! 3837a63b47cf00bc9ade0c02803a8eab  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
! f756971547470b6b0c4e64eda86642dd  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
! d743aef406da8090931f00e68749819f  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/less.cc
! 0f3ae68dc883fdc3d04dc8c66f48760c  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
! 600a71610d6a36bc1ff25fc0e149e9f2  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/three_way.cc
! 3766cb7420ed93c1b40dfe0c1c008199  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/1.cc
! 6acb0a1e3f9c3b5c525fad53ac8ade8c  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
! 02df04885e6d7db301ab42479cc5e12f  libstdc++-v3/testsuite/19_diagnostics/error_condition/hash.cc
! dfdbfd77693b69904ee1fc5dd622757f  libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
! 83e154153521b2ab1021289ebf35437e  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool.cc
! 6e7bf394af5a3f7d3e93764629163d64  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
! 917f474190a2a8b0f27e3d462b806f9c  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/equal.cc
! cea0964fcfd078de581fd5180620f3c2  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/less.cc
! a0113274a42da0cdfbdafcd49f96ec7f  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/not_equal.cc
! 75bc8a8324a61f75264fdf3106900844  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/three_way.cc
! 2620cb6b03652a1f224a0e8a2cf24ac0  libstdc++-v3/testsuite/19_diagnostics/headers/cassert/macros.cc
! c29d3848edb1ba3bbe7dd5a27bf96d50  libstdc++-v3/testsuite/19_diagnostics/headers/cerrno/macros.cc
! 9ea5c5ac8a537f547d30cdff757cacb5  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
! 030ad4e2c537fcd78eee3325449ad4f2  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
! 5a10d2f58d228e796967e53fb1a8e1ab  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! 68155f8b66725f4d9c525f77e08cb913  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/93151.cc
! 0ad31d97c2d07686d6c08776dc7abe59  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
! a08fc5ed0e922a671d330cf507f29a65  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
! d3a549ebca10f7818f422a3ee10cb663  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
! 8bd1ecc46b3ede2ff836a6cd183c9fa8  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
! 7e55389300c1aaab0b0e20b8822d39e8  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc
! 07c0847a1c903c2aa394272a5c891230  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc
! 1101436d94a0406f3c083793af698bc1  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
! 64860bff9ab2fb5f9e9c4aa11aab800a  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
! 61ec58ea3248a0349e8f1c3b7b89f9ef  libstdc++-v3/testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc
! c3be12d3ac585ad842285653ae25415c  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc
! caa4b4f4c683b1157677b400d96e5628  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc
! c06cd3372e5d237f3d664d174e69b38d  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
! a6dcf6cbaf916e3c7f40ba4b651d42f3  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
  a3f875cb81845cea6552ad2be474733b  libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc
  bcbe8956841ad8748b7d53b018a0f23b  libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc
  489c2f3ec1b126c0f5cab03ec75198b5  libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc
! 5389798b2a4cec9e64b784cd036fa384  libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc
  663e3dcea433a03255e7eed74d7d7f2f  libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc
! 9ac8c5839182eed08ec20702277e2b20  libstdc++-v3/testsuite/19_diagnostics/stdexcept.cc
! 89321f4ec6dc6b4250f7fea9e24692a4  libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
! 900854eeb0ddc478e3f0ec2f47445de1  libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
! cd76bc8f6708934096b45e294e1a60a5  libstdc++-v3/testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc
  b8fd5b3cc781e4351fcba88c19391352  libstdc++-v3/testsuite/19_diagnostics/system_error/noexcept.cc
! d937bb145e38369d7ca25eff4815af69  libstdc++-v3/testsuite/19_diagnostics/system_error/what-1.cc
! acde8e1d6fef7f7d7667d9bddde520f1  libstdc++-v3/testsuite/19_diagnostics/system_error/what-2.cc
! 9efa087b69730398229dbde2a0dc4254  libstdc++-v3/testsuite/19_diagnostics/system_error/what-3.cc
! bcb5c724a50db36818bd3704402d6771  libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
! e665668368611ac526a717dc5199ad92  libstdc++-v3/testsuite/19_diagnostics/system_error/what-big.cc
! 2c8a59abd5cb06be9bb1e4ff7cefa04f  libstdc++-v3/testsuite/20_util/add_const/requirements/alias_decl.cc
! 0507fa70a962d2c91bc91e88af0e388f  libstdc++-v3/testsuite/20_util/add_const/requirements/explicit_instantiation.cc
! ee9ffd069ce97f4dc0348342e0d64b04  libstdc++-v3/testsuite/20_util/add_const/value.cc
! 09898d6fb64e1d7a2565f76fea73f583  libstdc++-v3/testsuite/20_util/add_cv/requirements/alias_decl.cc
! 331c2502a7ad934ff8d558e11ffe51a5  libstdc++-v3/testsuite/20_util/add_cv/requirements/explicit_instantiation.cc
! 805465673d8f9ada1eb17622ec153672  libstdc++-v3/testsuite/20_util/add_cv/value.cc
! f14a59e4fed0d8e7dcef5363e1fdf846  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/alias_decl.cc
! f13a56b4ddb140bc3ac0f3bab4290e35  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc
! ee9f96417795fa7be9db694bd5bea92c  libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc
! d51408ff7f29ccfe71f1393929433009  libstdc++-v3/testsuite/20_util/add_pointer/requirements/alias_decl.cc
! 069accf68bcfbc4f54a934da4b80709c  libstdc++-v3/testsuite/20_util/add_pointer/requirements/explicit_instantiation.cc
! f5d2cd33866f94db46a448d8e79f2968  libstdc++-v3/testsuite/20_util/add_pointer/value.cc
! d90be29d2b6cc081e57f87ec516d5dff  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc
! 7e8deb4987b63ecf63c8f043a8179611  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc
! 694112e8cea1a83cf9d653701b1ee84c  libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc
! b34e25f5ba7cdd9b98ed5cb4e85d7260  libstdc++-v3/testsuite/20_util/add_volatile/requirements/alias_decl.cc
! 1020c0e34f97b3c7ad2f3a6588338c2f  libstdc++-v3/testsuite/20_util/add_volatile/requirements/explicit_instantiation.cc
! 1ea38fbdc36585106b547cd49bd54115  libstdc++-v3/testsuite/20_util/add_volatile/value.cc
! fef1c5699ab3eab52a15c568fc63b420  libstdc++-v3/testsuite/20_util/addressof/1.cc
! 436c62872a6d21da72eea8608fafc6e3  libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
! 0a44dbeb85562fbd27212f2257171a2a  libstdc++-v3/testsuite/20_util/addressof/requirements/explicit_instantiation.cc
! c197757f9e9a85ae832c47fc748f36bc  libstdc++-v3/testsuite/20_util/align/1.cc
! 0573087515fdac2ca4816b3d7f3d56bc  libstdc++-v3/testsuite/20_util/align/2.cc
! ac3a7e2817e394cfde3e9569b54b4299  libstdc++-v3/testsuite/20_util/align/3.cc
! 8a71c8801bc2b6bf1d3e8b62f255885c  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc
! b187f7a0203f6ed554d8df052b66e3e1  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc
! bd25d04111dcc2ff97e24ce4bfe2372c  libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
! 1d662241a21d232edcf761e23f982a25  libstdc++-v3/testsuite/20_util/aligned_union/1.cc
! b2ecbcee611664e7ff376187c0a6d0ea  libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc
! 762e7015eaad553b3a2febee4548046d  libstdc++-v3/testsuite/20_util/alignment_of/requirements/explicit_instantiation.cc
! 091c44f2711c01b2758ae4182fb6bd7f  libstdc++-v3/testsuite/20_util/alignment_of/requirements/typedefs.cc
! 239411449419001e95ada86653301fb9  libstdc++-v3/testsuite/20_util/alignment_of/value.cc
! fd81eb930c1e63611dca1ed3e61bc3b5  libstdc++-v3/testsuite/20_util/allocator/1.cc
! d9ab0918c293e0ffd979e8429780bbc2  libstdc++-v3/testsuite/20_util/allocator/10378.cc
! 3c8abd13b679ce6b1ed4de7e39ce03fa  libstdc++-v3/testsuite/20_util/allocator/105975.cc
! cd1f3bc2900d0b1bf30a1a3b9b18981e  libstdc++-v3/testsuite/20_util/allocator/14176.cc
! df9fb752dd9cfca61bfb9cc4d5461c80  libstdc++-v3/testsuite/20_util/allocator/33807.cc
! 2a9480a8b9d6971528dbda03d3ace413  libstdc++-v3/testsuite/20_util/allocator/64135.cc
! 7206a88ede685e5ca4341c6b38862d9e  libstdc++-v3/testsuite/20_util/allocator/8230.cc
! ccfbcaa0db63936cedfc789440098404  libstdc++-v3/testsuite/20_util/allocator/89510.cc
! a468102be841368c9834794069e8c54e  libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
! 9aab9c25407a6dd599e6a63544f5f5b9  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
! 51e9cc513255c75bb370e5e512a524ef  libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
! 362b205afb20916ae0e35644e332f05d  libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
! 207a368d70be4a6dfa51829affd5c102  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
! 865f0887c796e2894b68be59039e40ab  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
! ae9dd6b6bafa5716598d2226800964f7  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
! 703b9adda5f34f677512ceb29ce12169  libstdc++-v3/testsuite/20_util/allocator/void.cc
! 61a50e5a02cbf4ffd75ebd22f64455c8  libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
! f9a36f30908b6e5d72f62fefd66afc25  libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
! 62fbe886b445d4548001a499a09812bd  libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
! 4861149514426929b475f27852bb204a  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! 8e4cafdf720a4d34fb37595bb9721998  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
! 299c5d3f693c2ed79694c7555898e71b  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
! 1e4ec3afdbaad9a81154c2b79f91efc8  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
! 3c2c4f0d085eabcdd33f6743c8dbbfd7  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
! d4108635fc8c04398c907f867d9cd8a3  libstdc++-v3/testsuite/20_util/allocator_traits/members/max_size.cc
! f6a01d9c9399b6dc528dd503cecee261  libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
! db55532d731e8b6b5fd1ae92379d2dc6  libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
! b38561a6935164feaa80598b6986b260  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
! e7cddef42fffa182ee5eb11cf0c12410  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
! 652f2615f40be279a5cd24adc41ef4e4  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
! 244659a117632263c8d872a4e519e2ab  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
  53d95c7e7934ce41b96d0a86033b6a99  libstdc++-v3/testsuite/20_util/any/102894.cc
! e2fca5e789f98d5dfef44ccc95bc9f76  libstdc++-v3/testsuite/20_util/any/assign/1.cc
! d01ba038607a0be8c0ebcbc0afc0fe04  libstdc++-v3/testsuite/20_util/any/assign/2.cc
! 79f02a03c4a640d650107f5c4258e0d0  libstdc++-v3/testsuite/20_util/any/assign/92878_92947.cc
! 7fcb19cf8dcd853d3c58c226441ffec0  libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
! 37f258ee406070871e45127a8ca5a28d  libstdc++-v3/testsuite/20_util/any/assign/exception.cc
! 31fc37c63f7c75bbbcc37c27f024f79b  libstdc++-v3/testsuite/20_util/any/assign/self.cc
! 321f229028fd59b607c53f2d26d2eafd  libstdc++-v3/testsuite/20_util/any/cons/1.cc
  097d518046e23537949952c936ddfa1c  libstdc++-v3/testsuite/20_util/any/cons/101034.cc
  335e5502fad2ac140247bdc170504f8f  libstdc++-v3/testsuite/20_util/any/cons/104242.cc
! 855e75aa8462203b5f87a24541db1952  libstdc++-v3/testsuite/20_util/any/cons/2.cc
! 826f185dc51f69a0ab8d1f2335986459  libstdc++-v3/testsuite/20_util/any/cons/90415.cc
! 5539553886e8ad6b2ba83893f0b569bd  libstdc++-v3/testsuite/20_util/any/cons/92156.cc
! cb739269f63b936a136e916b9d839d5f  libstdc++-v3/testsuite/20_util/any/cons/92878_92947.cc
! 1a0d7537907092a26f448a5c16ecf941  libstdc++-v3/testsuite/20_util/any/cons/aligned.cc
! c90b9951e6429a4b4ad2ef035e3cc857  libstdc++-v3/testsuite/20_util/any/cons/explicit.cc
! 684a586ea5463b5503da10c73259e437  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
! b22ee32c9747097bac566c9e1b138118  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
! eefd5cbd76e04f936c11d5b1df93489f  libstdc++-v3/testsuite/20_util/any/make_any.cc
! 1a0699fdec1384cee6e939332dfb0a74  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! 174b8cb46297a8c96c3df0f6397a83c7  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
! a04eac60519c81e4fdef0d442c07af11  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
! 70a36e128b355c8a699ecd49ffdd7b3e  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
! da19833eaea81e776688f755b0c0d7c6  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
! ffd841383afd9ceee535b6029825102a  libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
! 0b178f58fe2dc648c5ceadbb3843ace8  libstdc++-v3/testsuite/20_util/any/modifiers/92156.cc
! 8cf003e1ff241a7b0df478196794d384  libstdc++-v3/testsuite/20_util/any/observers/type.cc
! b965df8cef8c2d5831514ae10feef71d  libstdc++-v3/testsuite/20_util/any/requirements.cc
! ca32a2a3ed352918a9edce8c1128a596  libstdc++-v3/testsuite/20_util/any/typedefs.cc
! bc2b36c3203fe1eb61c3ec31161dedf1  libstdc++-v3/testsuite/20_util/as_const/1.cc
! 1ba0782c58c2eef88e8ca5a5c216a577  libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
! c9facc3ae52748d536b062531c637f52  libstdc++-v3/testsuite/20_util/assume_aligned/1.cc
! 4d4b3d3b7659f27e035248d3249bb113  libstdc++-v3/testsuite/20_util/assume_aligned/2_neg.cc
! d2baae4be9498c15e8a8379a7417edbe  libstdc++-v3/testsuite/20_util/assume_aligned/3.cc
! 381ea24ef8d842b8460f500b3911bed8  libstdc++-v3/testsuite/20_util/assume_aligned/97132.cc
! bfbab697da26fe72c0b40997e2388698  libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
! bc9d199fff295e5f455e5463a62ce2d3  libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
! 001e287f9d8f6ff39447cf216a5dbfe8  libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
! e48dcad34a60e873fb2393185ed5fb82  libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
! fa1f746097ccf2e7dd917c61dda3ff2f  libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
! 1cd6fc21fa252f387e8add9e0213f9be  libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
! f23516450cb677e05d6d20e392c0eb7f  libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
! 560486527bd972db8113145a746b5925  libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
! a1b2c93a15d32de5e5db92e2b9e2ef61  libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
! 01957d6a2dc97bb8c0c25b0766853cb6  libstdc++-v3/testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc
! c9d1c43af0768ca80c485c95a0cab95a  libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
! 17f352775596ef66d45c7b8bf5cc06db  libstdc++-v3/testsuite/20_util/bad_function_call/what.cc
! a6f1be7521c8c442803dfbf49940d5a0  libstdc++-v3/testsuite/20_util/bind/35569.cc
! 3753f515b80ec4a1485be8bf9e0e6727  libstdc++-v3/testsuite/20_util/bind/38889.cc
! a09fc8a4733d5649164015961a03ebf7  libstdc++-v3/testsuite/20_util/bind/42593.cc
! 38308d68e39c03461cae35ffd713d9d8  libstdc++-v3/testsuite/20_util/bind/45924.cc
! 093d1b9015cf3e7df1ab5f247438bdc3  libstdc++-v3/testsuite/20_util/bind/48698.cc
! 9e44ee8bffc0a0e0fda33f6adcf506af  libstdc++-v3/testsuite/20_util/bind/49058_1.cc
! f1fb1efd29ec407af3b40f12793da1d3  libstdc++-v3/testsuite/20_util/bind/49058_2.cc
! 1cdf789053971f11becd3ca41a49c580  libstdc++-v3/testsuite/20_util/bind/57899.cc
! eff9120bf4de07ef404b0214e169f9e3  libstdc++-v3/testsuite/20_util/bind/60497.cc
! 904ae554d84349a4aadedd3d6d4890eb  libstdc++-v3/testsuite/20_util/bind/68912.cc
! 6c17a377eeaf41755da7c7878585d6d2  libstdc++-v3/testsuite/20_util/bind/79798.cc
! 95e16aad1530581c1fe1838f1a5f63b8  libstdc++-v3/testsuite/20_util/bind/83427.cc
! 6d995700f65c5e7d105d5a4c5752ebbd  libstdc++-v3/testsuite/20_util/bind/91371.cc
! cd13eacefd0c62fb06c9a7a181b13746  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
! 7ef889f9336fa4a278afca18697048c9  libstdc++-v3/testsuite/20_util/bind/constexpr.cc
! 2985d1a85a8548fc4bcac1e71e7054d3  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
! f59f7c3f78518468975a9a0e4fcf90c0  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! af3f3388c48655d385c6b243e928cabb  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
! a75956ff0ff66666e9b2375a3cf61007  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! f7bc18618409e06e51dcd75094d89423  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
! caa173d7eac2cdedf421a7e772771e7d  libstdc++-v3/testsuite/20_util/bind/move.cc
! 4bced4e9bd9c0fdbc5177b8f85a17417  libstdc++-v3/testsuite/20_util/bind/nested.cc
! 987621c6d63e976a5c265607f04b9fec  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
! 2c74b90a9f5e7317309ff6deeb893c54  libstdc++-v3/testsuite/20_util/bind/ref.cc
! 07afc63f295d47db5a77d6e9ba97d424  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 11d099bc0b60ea7c478967161d50ef95  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
! 823bac204ecbc9d3c86971cbc0f7d319  libstdc++-v3/testsuite/20_util/bind/refqual.cc
! 07e47dde59d6c47f923b7e958fafe1d1  libstdc++-v3/testsuite/20_util/bind/socket.cc
! 6624f492729c70f083dfd591505ced89  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
  7b45f3d65401a77e7c8feec605d0e13f  libstdc++-v3/testsuite/20_util/common_reference/100894.cc
! 204688249edc2f6623540e9d07029eab  libstdc++-v3/testsuite/20_util/common_reference/requirements/alias_decl.cc
! 87863e944e3b758eead75332333c3d70  libstdc++-v3/testsuite/20_util/common_reference/requirements/explicit_instantiation.cc
! 3275b1d74753eb4a08cd86066e9ee1da  libstdc++-v3/testsuite/20_util/common_reference/requirements/typedefs.cc
! 42cb067efc51b8fd2203eaefc8ffb740  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! a9b88ad64ad472811625085b2fbaac66  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! 770223b7f0d40fd673bcc73df5732608  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! 843f2c2771d898d6d896ad0688910841  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
! 566edcf38566e960b2ea57006cfd68d7  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
! 196bcd9392463652f4552bd915f3d070  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
! 9dfb9510aff77b45d5a4b6e16b0ad86b  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
! f4ba705398b46a0a05fd8cc2b0441eea  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
! b6ef2b3ba6969cb60137145644fae054  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! ddbdce46e2087b45c3aea6bfc6304cd5  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
! 6f8b59ae21485b93ec71e0a14660a1a3  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
! a38ea2fa32cc4818228bb597203e3fe5  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
! 8076711f0e9d518de899121da7bf6637  libstdc++-v3/testsuite/20_util/declval/requirements/1.cc
! 8795c34c783c151467f9d8c090c4a066  libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
! 510094f2352e00bc3c98d72c6e2d291a  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
! 9a7515be77eedd837ee73f5e0c54ead4  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
! 77aabc6b885a5e747f6090c1f8dd29e2  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! b3415c59024254394b532b647bc497f6  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
! e4b514e6ace9ea3f45a5559e581e68ac  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
! 27fb0edde4e6b353a82bda16d421e3b0  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
! e96ae609834beabc0a724fbfff9019b8  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr.cc
! 9a00bc7347bdf8d62296ce61ba43d4d1  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
! ab685d6a71ab218e854e85267a0e0eb4  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr2020.cc
! cb2eb591ce5115bc92d9daf1e1a04a65  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr3050.cc
! 906b30014a4883e217e3f5de2e3f2779  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-1.cc
! e078a67b4f69ad6bf18f1676223f8b78  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-2.cc
! 434549d638824b15d16b46d44b1c1191  libstdc++-v3/testsuite/20_util/duration/comparison_operators/1.cc
! 7ae3c6ddc60595d3ac4855dcd07104e2  libstdc++-v3/testsuite/20_util/duration/comparison_operators/constexpr.cc
! d4df9605d6b67a702dbfdc83cdedac79  libstdc++-v3/testsuite/20_util/duration/comparison_operators/three_way.cc
! 9d0e3eca69ffc718ca67dc21e54b609c  libstdc++-v3/testsuite/20_util/duration/cons/1.cc
! b0c75b10f9c2bece657cfb947d410f3a  libstdc++-v3/testsuite/20_util/duration/cons/1_neg.cc
! a34c418eab7804b72b7ce02998b7c0a9  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
! e34387b51089af246134e4592795910b  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
! fe64651719646b81a298da29f023120d  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
! b15cf3491a369ffb693fc876145b1f54  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
! 0d5ada53cba38741dbc5fa9d3a6315c0  libstdc++-v3/testsuite/20_util/duration/cons/dr2094.cc
! 638be4374c50c12cc249e8e4309b4475  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
! 12202fde9d6029d8f8bcc0046da5de0e  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! 96a643f862f8810f956e524eede56834  libstdc++-v3/testsuite/20_util/duration/io.cc
! 1a0cbf338ddd5754783a33ab72a0ef0c  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
! 9ebbf395327b35cfc2d5b4ee87109ec8  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
! 6851d96534703e0dd1d9875c4dc73fbe  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! 1923a47e9df6e2fb73eff37ffc9e91a4  libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc
! 338bcdc1547240d38da803b51eaaca25  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
! 46d164454a774aedf0c8b668dbc9efd8  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
! e80cdba765ebc45f35f3465225e219a8  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
! 06a0571f4509ae7527aa6bb8c2a8b7c1  libstdc++-v3/testsuite/20_util/duration/requirements/explicit_instantiation/explicit_instantiation.cc
! 0f23ae49fc63fbe5008e040c25bc3c82  libstdc++-v3/testsuite/20_util/duration/requirements/noexcept.cc
! 8c1b26686b749cf5ad365ff9d05a5737  libstdc++-v3/testsuite/20_util/duration/requirements/reduced_period.cc
! a972cfee7b783b7695dc85eba704d4b7  libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc
! d32f2eb40ce86eb35d99e7d5df9e0b62  libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
! b2e9238e5e4a5968dd04050cc7997254  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
! 25c9e12b261f6af449879ac690f3c996  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
! e71581e883eae422b1878ffd5c272074  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
! d0208aa17f417e0adb70258de9ddfdb5  libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
! f6f5a1d78824477356777d8d15b93c22  libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
! b2f11b793b229d0d5f50a090d5add2ba  libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc
! 8f98b6aec82741012086933093bd53b3  libstdc++-v3/testsuite/20_util/enable_if/requirements/alias_decl.cc
! 5e4cc041daa5e49955588d536203b730  libstdc++-v3/testsuite/20_util/enable_if/requirements/explicit_instantiation.cc
! cc0c1ca4c01e58d35700df5d95f8b313  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc
! c7c0ae0904103b8cd5185834e6874f0a  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc
! 5356942a393ff4ed5fd90e64c89f2dbf  libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
! 4bef796ce6e6eadb09adae222674b5a9  libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
! 3df956489f09459f27713bcc1fbced09  libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
! cae60a49d4d65b2deeb5d63ece94ae57  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
! 0678b62218924a23e3e58f919dee7a94  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
! 0f3c9ad7b3c377e8a3d25e8781c00895  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
! e97254ce4fd08fa50a505c35d5316111  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
! 72288a1f7e75afaa7f130333f81d1d98  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
! 6d65efb6f7e1e04dad4717a415d9674f  libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
! 409664681669399d3364b74f0eb3146e  libstdc++-v3/testsuite/20_util/exchange/1.cc
! 0f5354206a79465581c921cc3f2cba78  libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
  5abbf6d20cd589946f4bdfcb28f02dd4  libstdc++-v3/testsuite/20_util/exchange/noexcept.cc
  da3718fa1e22fa960e90da076e9180db  libstdc++-v3/testsuite/20_util/expected/assign.cc
  786012815e4d290200d001a0341260c1  libstdc++-v3/testsuite/20_util/expected/bad.cc
  8187c0547d89a14b970b66cbef0b0194  libstdc++-v3/testsuite/20_util/expected/cons.cc
! d8e15a2aa05fc2310ec4008c41b7bf70  libstdc++-v3/testsuite/20_util/expected/illformed_neg.cc
! a85e37ee919658ed2c883de3ea791b5a  libstdc++-v3/testsuite/20_util/expected/observers.cc
  c58d809da0c46bd85f9a6e61760da9cc  libstdc++-v3/testsuite/20_util/expected/requirements.cc
! 18f96370d32ff9b5066cea57f854f30c  libstdc++-v3/testsuite/20_util/expected/swap.cc
! ea203bbde7de83fd892eae08fdf4d5ae  libstdc++-v3/testsuite/20_util/expected/synopsis.cc
! 2b4b5dfed3ca4c9e84d6937142de427d  libstdc++-v3/testsuite/20_util/expected/unexpected.cc
! 07922e9cc87ce93c2fe23ed181246df7  libstdc++-v3/testsuite/20_util/expected/version.cc
! d639cf26846d9bed4ed3455121ea5257  libstdc++-v3/testsuite/20_util/extent/requirements/explicit_instantiation.cc
! 938aca78950111b1e90937c38d7312ae  libstdc++-v3/testsuite/20_util/extent/requirements/typedefs.cc
! ff8cb3210daa0d48008dc738de0531f3  libstdc++-v3/testsuite/20_util/extent/value.cc
! 06f675ea3dc85784e1860402ae3f6b5a  libstdc++-v3/testsuite/20_util/forward/1.cc
! 700dce4152a94a58fb0223f67bfe3d54  libstdc++-v3/testsuite/20_util/forward/1_neg.cc
! b994bdcdd6b8a5844d369fff8715f5ef  libstdc++-v3/testsuite/20_util/forward/a.cc
! 40a87271bdd2a98f030f132f0d78cf38  libstdc++-v3/testsuite/20_util/forward/b.cc
! 2d565ee50b18c0f27f4244c51fc20d94  libstdc++-v3/testsuite/20_util/forward/c_neg.cc
! eb8a157d51aa9bec816a0c2041c71cc9  libstdc++-v3/testsuite/20_util/forward/d.cc
! 91068589391a9988c654bb427f5bcbba  libstdc++-v3/testsuite/20_util/forward/e.cc
! facca306a74fc06aa2cdfbc5acc80d3a  libstdc++-v3/testsuite/20_util/forward/f_neg.cc
! 4834cbd1c36ad3c44df892848eb8c773  libstdc++-v3/testsuite/20_util/forward/requirements/explicit_instantiation.cc
! f6f74dcbe5a117b1b9f3e5f47e0398ee  libstdc++-v3/testsuite/20_util/from_chars/1.cc
! a7024278402f6bfa44a39f55f6161294  libstdc++-v3/testsuite/20_util/from_chars/1_c++20_neg.cc
! 5e4098df3da50ef73e46d8ffdd46b39a  libstdc++-v3/testsuite/20_util/from_chars/1_neg.cc
! 527af2bc58c919e71583749ebf9cce55  libstdc++-v3/testsuite/20_util/from_chars/2.cc
! 4c743055fc43cb29857c73ad99c7c811  libstdc++-v3/testsuite/20_util/from_chars/3.cc
! 25b059603915bc19f9024edb2361e09a  libstdc++-v3/testsuite/20_util/from_chars/4.cc
! afc5f2fb411348dbe627137f0be5c20f  libstdc++-v3/testsuite/20_util/from_chars/5.cc
! 173967c637a04148bcc75da2fef53af7  libstdc++-v3/testsuite/20_util/from_chars/6.cc
  33cb1fba3bfa8508f23e78bc210ae25d  libstdc++-v3/testsuite/20_util/from_chars/7.cc
! 06b29b0491d578c305bd7e12e16144df  libstdc++-v3/testsuite/20_util/from_chars/compare.cc
  6772f8cd93ed8ce0eff86720c075a1f3  libstdc++-v3/testsuite/20_util/from_chars/pr105324.cc
! 361d5dd41f4fcbf1f77f6de9802f9c2d  libstdc++-v3/testsuite/20_util/from_chars/requirements.cc
! 8b1e3084622c79534f8709130f6f4f18  libstdc++-v3/testsuite/20_util/function/1.cc
! 945e69686a507c07f58ac25ccfe59398  libstdc++-v3/testsuite/20_util/function/10.cc
! 3d1b0f2151d188e3a64a8430be6ed2b3  libstdc++-v3/testsuite/20_util/function/2.cc
! 078f903f2b879a2daad9b286f3e85648  libstdc++-v3/testsuite/20_util/function/3.cc
! c3b8a3dbadf6f82d713ee66550ba9a31  libstdc++-v3/testsuite/20_util/function/4.cc
! 2253018e50fe84e400ea97e1bc2ca342  libstdc++-v3/testsuite/20_util/function/43397.cc
! d2eaace242f7af16166a66adff07fe93  libstdc++-v3/testsuite/20_util/function/48541.cc
! 6f27588a7f58f1072549f0c68e1103fe  libstdc++-v3/testsuite/20_util/function/5.cc
! af5fa57b128be482b848f22fea54be61  libstdc++-v3/testsuite/20_util/function/58569.cc
! 4876ebbb59516792e0ada98df2ea88c1  libstdc++-v3/testsuite/20_util/function/6.cc
! b8c50a292865ad8de3e50d92095b15ee  libstdc++-v3/testsuite/20_util/function/60594.cc
! 2fa3e1260e10dc99da03446c80b0bf43  libstdc++-v3/testsuite/20_util/function/63840.cc
! 7807ebf55aff4a2c72b2ab1d0938a165  libstdc++-v3/testsuite/20_util/function/65760.cc
! 3edbdc8926798ae3f4191057659f77a9  libstdc++-v3/testsuite/20_util/function/68995.cc
! 703f20e5a49bf5eebbe5e192f1c28499  libstdc++-v3/testsuite/20_util/function/69222.cc
! be11a86422e1176d91870dad01d85dfc  libstdc++-v3/testsuite/20_util/function/7.cc
! c116ac03b2d51da01acff8e69fdcfa2b  libstdc++-v3/testsuite/20_util/function/77322.cc
! c2f147463674aa2efb390e93ffadc664  libstdc++-v3/testsuite/20_util/function/8.cc
! ed6a2a427de928cd611cfd30b3cfa591  libstdc++-v3/testsuite/20_util/function/9.cc
! 408cb1cd710a4ebb46633ada869c717f  libstdc++-v3/testsuite/20_util/function/91456.cc
! cfe529e02c182c7b885a02859d9dab26  libstdc++-v3/testsuite/20_util/function/assign/move.cc
! 5b2266057a814b2904440870d37bc09a  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
! 40e091f12bbb6212756387146e1158cc  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
! 84a990fa090bf2bacce76b3a17e3f204  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! c5f31150463a0cfae248849267a53d3f  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! f8f15577bb33e4549ba8f8e9e0b407a2  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
! 348a7be910a8463a438916359203d99d  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
! c93810f90733a4f3875b98b0e79c1895  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! cea45ce4ddc511da2012ef698edab102  libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
! 7e9deedb255c7113221019d32e10c6ab  libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc
! 7f2d96fda18066570fcc1b56f3362d35  libstdc++-v3/testsuite/20_util/function/cons/move.cc
! 219fc1d6f8d23807a37efbe70be60283  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
! cc7847b76d24c16f35c869b3bb80868e  libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc
! 30038748f86e6741b7dcb4c0ba500410  libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
! 49d2dcc1fc7c949936ca3b7d12016d69  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
! f696de5326f0e3380b153de80ee41e83  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
! 1706b43632b3955c99ad8e54600c8d6a  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
! 057c55440f9ce93bcec644e66bcfade0  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
! 664382c87b6ec17fc4e62d4d403fd030  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
! c6f975f3ef8f0e515119df57ff6403ba  libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
! d5f1d2987ee873d8126c17537bd1f26d  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! 2fca65086f81abce4ed74beefcca483f  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
! d298b8e48c81ad5cf2d8c607e477af3d  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
! a5ab1e8100c0b895cd83b902b7e1b30d  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
! c8806c62da96c47e88e2ceee82f7b8f1  libstdc++-v3/testsuite/20_util/function_objects/bind_front/constexpr.cc
! 981a306a18038881e960fb408e9d3c9c  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
! 58df573948c4d852a7d009a6ad6c6e4f  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
! 5d5452d593130615f1dc4754c98b25c8  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
! 738255bc3769c7899a769bb60b7fcda2  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
! 48b443aee0a80ff0cf5982d1e205ed97  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
! a0ea6ae3b83e671fff8688dedf0a823d  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
! 441ca68f7e8d895c16ce9991d2dd235c  libstdc++-v3/testsuite/20_util/function_objects/constexpr_searcher.cc
! fd119b155e00754403e26ef3ae259c71  libstdc++-v3/testsuite/20_util/function_objects/dr660.cc
! d1f502008e35a39486514fdb10ab2f3a  libstdc++-v3/testsuite/20_util/function_objects/identity/1.cc
! 213b41e4dcf581f5d2722867e938084f  libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
! 92dcaacbebc51fcc028f4744ef2bdf1c  libstdc++-v3/testsuite/20_util/function_objects/invoke/2.cc
! ea5d14d74f226a26d674df22ff54a8c8  libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
  fd3b33760fbfa3ebd233ea8a3ebd0372  libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc
! 74fceb806cd0917a74aa4b83ae5f0cf9  libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
! b67d3dd4357d4a9a3aefea203d79e90b  libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
! 4caad9b1aab36b62f12e38ad512bba31  libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
  c41a9b86fb8d5060d3191e4ba30b6151  libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc
! 626caf3759b9d65650bb1ae76909a933  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc
! c752b65cdf406fb7ab6797069ad49b8d  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55908.cc
! 7b5e76b666745a88fada1ec687fbcd90  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/68982.cc
! 24f90cced4e7b7e78764bcfe38490144  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
! b0b580d1c87fa9d93dbbf7117dfed0b6  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
! 66826d268859e08c52fedce5f60f0077  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/constexpr.cc
! 4c43c5ead83f410eafac0d94b98a0429  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
! a1df16ec7efd2dad0fc4048355d720b7  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
! bf1467c60343d439953e988af622c860  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! aeffd439bc16dae774b309a40308fab0  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
! 3f19d51df8cd841a58b0e84203bf06ee  libstdc++-v3/testsuite/20_util/function_objects/not_fn/constexpr.cc
! 1e94565006d23f5a05b4281a76de598d  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/equal_to.cc
! 79920cd9d3d67c94ea426ff64003284a  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater.cc
! 5b78f926ef8cf996d47b5ecdb41dffbc  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater_equal.cc
! 14a710665d8ab65ed4ac1ce074f49f50  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less.cc
! ff1e0c5a0d89e5008c592cd7ecfa30f0  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less_equal.cc
! 8f9c77272cc1eb1af1259c3b88304462  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/lwg3530.cc
! f04c5654ee10415318aa980110ca1c42  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/not_equal_to.cc
! 633a60bd46008d8359e370c852e7f414  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
! 0bdaa5438b3fa1ee98a917193427caed  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
! c9d9bf809b76da6287430ab5c26e87e3  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! 7e928000c242aafbcfd2a381e718bbea  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
! 28e696b7f8976443f0198d07165408fc  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
! ae35f507d8fab901339f02475036ab7f  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
! 20d7ecc07f9be692de728d8e01141c33  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
! a86f53ea71624fbbb1f5e67b0fc4c480  libstdc++-v3/testsuite/20_util/hash/52931.cc
! 74b71b853aedc651f73ce7933ecc03cf  libstdc++-v3/testsuite/20_util/hash/60970.cc
! 7b16b114f33ee5d10c79c72037cc692d  libstdc++-v3/testsuite/20_util/hash/84998.cc
! 3d60f5b827fbf0f7b8384c781c5f3f3f  libstdc++-v3/testsuite/20_util/hash/89629.cc
! eb1875c8925e81e0d2850e4b1ce4fd7e  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
! ac4299ecf5727aa612db0b33136c4bd7  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
! 1ddc27703bc4173ac44ab68c8137d155  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
! 6ec2e8a04e21c7bbb0a55fd5774bb7c6  libstdc++-v3/testsuite/20_util/hash/chi2_q_numeric_pattern_set.cc
! e7cc1536a77ef2d34e3356e98c839e9a  libstdc++-v3/testsuite/20_util/hash/chi2_q_uniform_random.cc
! 473bd1b4086fcaa7e43a73bf91462f1a  libstdc++-v3/testsuite/20_util/hash/chi2_quality.h
! 62122d48dfda9de8680e5dc4e65f59bc  libstdc++-v3/testsuite/20_util/hash/nullptr.cc
! 761805ce5c50493bc641e3dc2b71afe6  libstdc++-v3/testsuite/20_util/hash/operators/size_t.cc
! 08c7829fc5f68ab05f716d88e5eaa2c2  libstdc++-v3/testsuite/20_util/hash/quality.cc
! fecf07315a289923572653d6ef30b1c5  libstdc++-v3/testsuite/20_util/hash/requirements/explicit_instantiation.cc
! c39c2e91350339bd976750d0d47703ae  libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
! 6e7730a085e508cdda3508b1bd0917ce  libstdc++-v3/testsuite/20_util/headers/cstring/functions_std.cc
! 522a0b73ef1f58635f5ed975743f1913  libstdc++-v3/testsuite/20_util/headers/cstring/macros.cc
! 69b9227089a73c5292f236ffe75764b0  libstdc++-v3/testsuite/20_util/headers/cstring/types_std.cc
! 2b1fe70d5cd39cdbfd8cbb2b024fe3d7  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
! 130e25d2a0c23c6d8b122221f302179e  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
! fe9469f3df706448a4da3b435459235c  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! f458ef6e28dd60e84def3afb83add43f  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
! b638d5a1436ae1ef82d64e143096673c  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
! e5037351f89d0c490f773de5e8663921  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
! 1ce043d1bf57756c331e317e1b9e515a  libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
! f25a24c9881b0423d62f56322f00e192  libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
! 029aa6a284914b0a9b1933208ee6d909  libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
! 8158b6cba3b9e34ee67ac99fb5984678  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x.cc
! 39739136da77afd274c11e9d04b8b8c3  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
! 71d0d9a3b1352f30bed8b3bceba0af7a  libstdc++-v3/testsuite/20_util/headers/utility/synopsis.cc
! 1da159f583cea854b7fcb92067fc12e6  libstdc++-v3/testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc
! 93248ca4fc4906833e0d5a1359696198  libstdc++-v3/testsuite/20_util/in_place/requirements.cc
! e6ed7f04cc9bd22bb4e912d0a93420af  libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
! d8e043cd3d086b9c49863b44a0c2288a  libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
! d3e237e62e64e75f69ad2fd8c0c62efd  libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
! cff204fedb508acd88251e570815bd1e  libstdc++-v3/testsuite/20_util/integer_comparisons/equal_neg.cc
  c6250601e3e7183f7bd3726fdd8c1203  libstdc++-v3/testsuite/20_util/integer_comparisons/greater.cc
! c4c99d3079e12c0d250e763f16b35cc8  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
! adb18721b68b6c8c2076f25dc497b756  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal_neg.cc
! e4385750b44b9c9b15f0bcbbff7ff555  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_neg.cc
! ae78d4e1f061aaf6556908dc649baabd  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range.cc
! 1ac2424798886a2449d60656aef0f66d  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range_neg.cc
! 8aab27fbd75a9d4fb1618d5c508f8c59  libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
! 76d73b729a2e310b6506fd91d652821b  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
! 2e37b95e83c3d734bea364016830e3ab  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal_neg.cc
! 1ef204a969d3f470c0de434d5a42dd20  libstdc++-v3/testsuite/20_util/integer_comparisons/less_neg.cc
! d40d281f67bbddfd8ee3afa09db84194  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
! cff204fedb508acd88251e570815bd1e  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal_neg.cc
! 77217a1a0be9e8752b771ab62615174e  libstdc++-v3/testsuite/20_util/integer_sequence/intseq.cc
! 159d3fde83605a05000ed1adee3483a5  libstdc++-v3/testsuite/20_util/integer_sequence/requirements/typedefs.cc
! d83f2a7f8162634068865ab00d86a66a  libstdc++-v3/testsuite/20_util/integral_constant/call_operator.cc
! 2447082448aab79905ba32b3aa79c2aa  libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc
! c4c851612615f62affcf7ffc94e37024  libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc
! f1722d0a0a03721d1bb1845e9e22ee98  libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc
! 975da464ce5cb71c6a75cf9f0e916d90  libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc
! 44b5401d04ad651dcb211f16b9831eff  libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc
! fb6e7693ac8ca4674d21d7f024f14de1  libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc
! c5783300148d21b9724a10c8ac026725  libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc
! e0a44054e7c886c83059bd408a2b9042  libstdc++-v3/testsuite/20_util/invoke_result/incomplete_args_neg.cc
! 428c5205a079b8d3e849875a022aff08  libstdc++-v3/testsuite/20_util/invoke_result/incomplete_neg.cc
! 5b9ebeaab235e53f228d33b52831073a  libstdc++-v3/testsuite/20_util/is_abstract/incomplete_neg.cc
! c7f6b9c06dbceb4accdedf7ddee02211  libstdc++-v3/testsuite/20_util/is_abstract/requirements/explicit_instantiation.cc
! d9cba83f0861dbcc4efd91edba92db76  libstdc++-v3/testsuite/20_util/is_abstract/requirements/typedefs.cc
! f523d0a74481bb9c9b60918916782425  libstdc++-v3/testsuite/20_util/is_abstract/value.cc
! 1e412af4e87293854fe24db5460a88b5  libstdc++-v3/testsuite/20_util/is_aggregate/incomplete_neg.cc
! a15958335d3a6409dc89fad9e9616861  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
! de853e83c4d216d4ecc1c640b988a100  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
! 6408732e397a4b019fd0535f078f4739  libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
! a090ea808504b3754fdb36e12980655c  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/explicit_instantiation.cc
! e31208438e789c80c4b34c27a59b051a  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/typedefs.cc
! 075ba9cfa6ccc00c73756a9e13e69f2b  libstdc++-v3/testsuite/20_util/is_arithmetic/value.cc
! 7dbfd03ab3d13fff771e4b5a616df1b6  libstdc++-v3/testsuite/20_util/is_array/requirements/explicit_instantiation.cc
! f3cd24fe2e7ca4777569e2a5c80359ce  libstdc++-v3/testsuite/20_util/is_array/requirements/typedefs.cc
! 3c09cfd2a34cc313655df1fe903012fc  libstdc++-v3/testsuite/20_util/is_array/value.cc
! eacb6e0e42d2316bb92fc9a0d17e18cd  libstdc++-v3/testsuite/20_util/is_assignable/requirements/explicit_instantiation.cc
! 4ce9887374c927faea34cf2081bbcc98  libstdc++-v3/testsuite/20_util/is_assignable/requirements/typedefs.cc
! 459bd854c92beb096b314ce7e4cc664e  libstdc++-v3/testsuite/20_util/is_assignable/value.cc
! a649b8fea3b53df8684c375729f4b8ed  libstdc++-v3/testsuite/20_util/is_base_of/requirements/explicit_instantiation.cc
! 3ae3e14ebd63bc01e30f12283e16562f  libstdc++-v3/testsuite/20_util/is_base_of/requirements/typedefs.cc
! 0ac71e577dbb7223bfca4a5f888807d6  libstdc++-v3/testsuite/20_util/is_base_of/value.cc
! 48cf785d51a0ea2127d318c56b2d881c  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/explicit_instantiation.cc
! 5c9d284c19e76340f3ed491fc46785e0  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/typedefs.cc
! 93f802c67e051bef55a09ec870d27845  libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
! a57b0e9eab0f6cf3c91b8ee03bd0fda4  libstdc++-v3/testsuite/20_util/is_class/requirements/explicit_instantiation.cc
! 8d841599f87a5e9ad43232fb33946066  libstdc++-v3/testsuite/20_util/is_class/requirements/typedefs.cc
! bc200612e026af407939606df1c74e73  libstdc++-v3/testsuite/20_util/is_class/value.cc
! fb9e6f6cbe8373ca6f5a8ad586120531  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization.cc
! f4ae202b080c020e7770de64ed0759dc  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc
! 4844fefc5ae421db3a3ba58f508dd198  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/value.cc
! b130d5790fee37bea0d44b284fde73ef  libstdc++-v3/testsuite/20_util/is_compound/requirements/explicit_instantiation.cc
! c7758aa0a55d6f0c93789dc567154315  libstdc++-v3/testsuite/20_util/is_compound/requirements/typedefs.cc
! 7a6778f385bc0356431ca5d71fc77fe1  libstdc++-v3/testsuite/20_util/is_compound/value.cc
! 4e85bb93dd4090e8129edb0a142830fa  libstdc++-v3/testsuite/20_util/is_const/requirements/explicit_instantiation.cc
! 082451d06369bed55aed1ffe5ea36b4e  libstdc++-v3/testsuite/20_util/is_const/requirements/typedefs.cc
! c08b6522fc326795c72c43cb47add6da  libstdc++-v3/testsuite/20_util/is_const/value.cc
! 47840c6487779e6e90258bbba90bcbde  libstdc++-v3/testsuite/20_util/is_constant_evaluated/1.cc
! ffba54ed1714839db62974c88d145e32  libstdc++-v3/testsuite/20_util/is_constant_evaluated/noexcept.cc
! a8e81c847e2d1454c25875a3331e6031  libstdc++-v3/testsuite/20_util/is_constructible/51185.cc
  a5e184714ddd867798fa94c2ebe2c9fe  libstdc++-v3/testsuite/20_util/is_constructible/68430.cc
! 8923f7e3b68edc0f8e8f9e54fc1f8a52  libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
! 28cbf965efa6ecd0a97fb6750167c18f  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
! 9f294247d12ba147426dbf684f53b31e  libstdc++-v3/testsuite/20_util/is_constructible/92878_92947.cc
! ab00d28f829182375ae56b8b038c53a1  libstdc++-v3/testsuite/20_util/is_constructible/94003.cc
! 5220d66553a42df1357ea42e481c2ce2  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
! 20b3bac908805a6f83445d000dcdc7fe  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! f87932cd03b8ebc454f362e185d4e06c  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! 0040ea92d4aa9c05ec4d10c6277a3908  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
! 212fe83dd442d83e3db12893bb23ae6a  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
! b46482eac85dc8802cded9e3154fe75b  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
! 7614abee2a7554b75ce916fa9f8191a9  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
! 8a8af107b6bdb3633b0516153fcbdda9  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/explicit_instantiation.cc
! 05f84862ef9a1dd074defb1470fc3c24  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/typedefs.cc
! 11b9d5e0910484bae2435feab72d1754  libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc
! 1f61f47ef403238cc71ea6cc27663149  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/explicit_instantiation.cc
! 9e98c0794477f14eeb3d2a24a66d216c  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/typedefs.cc
! 5e90fc9c37bd7810e04fb3e47a51cc26  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
! 38b51e9f8aa164617ee4292f0a1773b1  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
! 819be2d7872cf694bbc64b7f2a6c78f7  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 151ece9b9a8b886377ad5d0fb6febc43  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
! bbe8268ac509e5051d0d46d64cf6d6b4  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
! ed0e95624061f6bb83a3d426879ad5e2  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! f57a27fbebb83e898fa57480ec8232d8  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
! ca07a8f2d29ef100202e6d562c78cc92  libstdc++-v3/testsuite/20_util/is_empty/incomplete_neg.cc
! f336e5081e30fa05335f13990c6f7316  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
! 91a2c68e605b153d5da04f5e727f4942  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
! 8cfa432deb76c469411b2d6627e63c0c  libstdc++-v3/testsuite/20_util/is_empty/value.cc
! fa355f1d36cd85de05ef31d06ee7230b  libstdc++-v3/testsuite/20_util/is_enum/requirements/explicit_instantiation.cc
! 8f02c235e79d1811eb1e116ef4095ded  libstdc++-v3/testsuite/20_util/is_enum/requirements/typedefs.cc
! bc492cf12be3305f9fcad29941957820  libstdc++-v3/testsuite/20_util/is_enum/value.cc
! 7f7120c698ae2b5d902e5f53dd0fce4a  libstdc++-v3/testsuite/20_util/is_final/incomplete_neg.cc
! 17b1d2e94c364d0e278aa4af430b0474  libstdc++-v3/testsuite/20_util/is_final/requirements/explicit_instantiation.cc
! 8f6784e127bed4d67c7ea7b32c33b48a  libstdc++-v3/testsuite/20_util/is_final/requirements/typedefs.cc
! 433602359ba15958ba624f3a950e73af  libstdc++-v3/testsuite/20_util/is_final/value.cc
! 70e2d6013db6a203129c857c9d2c7a3f  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/explicit_instantiation.cc
! e2748eac21078e6a2cbdca2a968bcf09  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/typedefs.cc
! fe41f5f2ca31f29099dc3e8cfb437d84  libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
! 22d988d651b8a92c6a7326202a590c66  libstdc++-v3/testsuite/20_util/is_function/24808.cc
! 3c2d7df80743813993f1afe627640492  libstdc++-v3/testsuite/20_util/is_function/35637.cc
! a825e2236375927b0fd55d1b9b5f65e5  libstdc++-v3/testsuite/20_util/is_function/91371.cc
! 4224757a24fab365493ec169bf93b13f  libstdc++-v3/testsuite/20_util/is_function/requirements/explicit_instantiation.cc
! d624b733f0e1010c39aa46a69346eee1  libstdc++-v3/testsuite/20_util/is_function/requirements/typedefs.cc
! 0d72b649dd7a7ead7ebc9da568e458c8  libstdc++-v3/testsuite/20_util/is_function/value.cc
! c69c0cadb258c507b277e334d0227df3  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/explicit_instantiation.cc
! d0622bd669ef2d3921ac3ba1787fc775  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/typedefs.cc
! 06f1f96779bef06199be4ed312458bc3  libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
! 22b705c3a827bc4b615fd6374a0dfd02  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc
! c9ab100f5522cc06516b8a59fff19e5d  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc
! 2b10a3ec0af648dbd55f9cbf6e16436f  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/value.cc
! 593bbfe441ffdac985c6d5a9cde1b4fc  libstdc++-v3/testsuite/20_util/is_integral/requirements/explicit_instantiation.cc
! 6faca9b89a5a78fb07538b2888c10d29  libstdc++-v3/testsuite/20_util/is_integral/requirements/typedefs.cc
! 2b94b240bab0b31b87383b19cc4acb74  libstdc++-v3/testsuite/20_util/is_integral/value.cc
! f48a2421f595fe09073ce0a17b97ede2  libstdc++-v3/testsuite/20_util/is_invocable/83395.cc
! 3f8734118b9905b899e7e53ab4436315  libstdc++-v3/testsuite/20_util/is_invocable/91456.cc
! 3758281612e168a6f0e3d4d8fc0e015d  libstdc++-v3/testsuite/20_util/is_invocable/incomplete_args_neg.cc
! 974d670d8692abbd044e0106e0df518f  libstdc++-v3/testsuite/20_util/is_invocable/incomplete_neg.cc
! c930d9399db071cefaac2528f9bb685b  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc
! 4515fa84c0e05c39f3f8fd487dc10c85  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation_ext.cc
! e85264e65c6bcd388fab9716cfde1779  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs.cc
! 27d623203ec21cf9a43de46cc69390d4  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs_ext.cc
! 6e50880744eb855d4c83fa88f1bfcebd  libstdc++-v3/testsuite/20_util/is_invocable/value.cc
! 06fd6a6d2ec1cd34698516323394ee4f  libstdc++-v3/testsuite/20_util/is_invocable/value_ext.cc
  843b0fa9f5021ba82bde4802ddebc754  libstdc++-v3/testsuite/20_util/is_layout_compatible/is_corresponding_member.cc
  ce6b607369dfd0496ef93c6da8cc6775  libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
  ea3697d742d06b8a6935bb79b5249f62  libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
! de7e26d89684a7be7dc7e649e4875b8b  libstdc++-v3/testsuite/20_util/is_literal_type/deprecated-1z.cc
! 17abf7c5347ea5379657d942b13da592  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! 7b3ae85413b4699eb96f56fd6a5840b3  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! 64c8d5954a04941a9fcf7828840490bc  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
! 0a61dcb7a1774de1028fa0fb692de502  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
! 207216c6d20c378228ed85150d0c6267  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
! 17a58284fd34c5d5b48596da317d46db  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
! bbd659e74d5c953dd660c599c61edd1f  libstdc++-v3/testsuite/20_util/is_member_function_pointer/91371.cc
! ac8fee79024a214762e4f3f3687116ca  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/explicit_instantiation.cc
! 0f4e08ff300cace62b51b113a2a606af  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/typedefs.cc
! 3df8ccd46ccbba4c0ae6e614f695d294  libstdc++-v3/testsuite/20_util/is_member_function_pointer/value.cc
! da0f01cdada56ddb2c03d66c9caa7a7f  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/explicit_instantiation.cc
! a01817c351886a19aae7776bf7d32e2a  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/typedefs.cc
! 20431d0ade43e5f7ca7bb8050f13276d  libstdc++-v3/testsuite/20_util/is_member_object_pointer/value.cc
! 27fb862374facca84bbf25ed26bdd735  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/explicit_instantiation.cc
! f0c906e4264fe2d9f4d1e5d2c7adfe6c  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/typedefs.cc
! e91ad3ea0ff758fde3c83c1cc551c2c0  libstdc++-v3/testsuite/20_util/is_member_pointer/value.cc
! bb4936c64c877d7914bc6cb36cba5769  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/explicit_instantiation.cc
! 4369e9094d3dffc388ea306ab57f9ba4  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/typedefs.cc
! 1f221e1a85626e0d1eb0193363cff1e4  libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc
! 73bec22a3df4214e9b56d1c13ca2674f  libstdc++-v3/testsuite/20_util/is_move_constructible/incomplete_neg.cc
! 4559970f2b471ffd71267aadd89c70a6  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/explicit_instantiation.cc
! d3036f6936afe0d00b287a2cc94ded3e  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/typedefs.cc
! be8434f8c87fdcb8c619052c946586f0  libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc
! f79fca8be086a3f5423fab8e48263f86  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/explicit_instantiation.cc
! a5778f715175d566d096c17c81b7021e  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc
! f0f1bde379c80faabc1f245b243d8b36  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/value.cc
! e0143ea2c0499df6866cceb147e7de3c  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc
! 7a42adc6da59883e360591382d2ca8ba  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/explicit_instantiation.cc
! 5483212b409daa6d878f2fe923596f3e  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/typedefs.cc
! 6fc9ab2c9eaf002feaa99659378aa55e  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value.cc
! 2275a301c82fbba46853d3b623127e1f  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value_c++20.cc
! 6da09fdb0e88c78ba76cd9e7eef8e56d  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/explicit_instantiation.cc
! 6cb6437227f3e3ddb450f5874e37f162  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc
! 293a05ec5348abdf4ef2b1c3dd302e73  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value.cc
! 55436f1b8d5a7f12371c044aad594290  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value_ext.cc
! 560265c41ac1728ed851c2cd16f2697a  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/explicit_instantiation.cc
! 093781bcddd7498c4706c370a4a10c67  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/typedefs.cc
! 5d7696d584225a4acc43efd192437015  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc
! 6d4168b089bbd3106914880079391e23  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/explicit_instantiation.cc
! 956bb98bb6f58005f5034d7ae94d53a2  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/typedefs.cc
! d163edae24923553ac1215010d518818  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc
! cbe0ecb458ba4897b545a6441278972e  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/explicit_instantiation.cc
! 0c5b8079f3e2f50fb4f79d8fac7e0929  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/typedefs.cc
! e7183c8437e2bffe9052bf3bbb930221  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
! 269915b3862ea559f00507c8b43957e1  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
! 573665818fc8cc2bcba1dd448d50c321  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! 0a642a6637ff99d817cd5a4ce39c9d06  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
! d761a67ad233c2b42f2aaef2c5100ed1  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
! a75b57e38ce51c8d65bffedaccc19048  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc
! 8a81f2e2fe8108661ef9aec6ae3ef947  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc
! 02677e6c15a0f6d2af647f908367989c  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc
! 2e5cffa93f27b1721031d1552f64e85b  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
! b28833572d6c86cbd0198f3f29ca580e  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
! 7aa877b0ab8caa720f2863f534e6340e  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! 0121c51335cf9f8c4b09b5f611fabf58  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
! c3ae5a9e16214cd346e34841e137cd43  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
! 7929bd26643f3b856f769adf6fdd636d  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc
! fdf35d35fd4819651088377b45bacb97  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
! 818d5dd5bbe02fbbbb911de5afa7e08d  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
! b2e79e908b2091ac019351ec5746e495  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc
! e09195d61f1f26a40f2e585efee9d35b  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/explicit_instantiation.cc
! 7557ab03fecce7b8dc9abdc6cb697d67  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/typedefs.cc
! e922adcd22b0e8f7360f5d44dded8450  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc
! e7e45ea43aff3ab8843a36176d60a7b9  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc
! b44471cde468706b7633e8c7c4293d3c  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
! e25f18776520ada5602dbf8f1d28eab8  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation_ext.cc
! 28efe634d2370bf6ef21615a3dc53435  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
! 85ce78cf1cc25ffac5692899afd059b0  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs_ext.cc
! 16be3da4521cfa34e4e8ebaf91ee1b51  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
! 0f5c9549043c9cc10628daa905ce3986  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
! c6c594162cf96cf67a2a190f081438e5  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value_ext.cc
! 6fe2d129bb04cf6e5eeab9a245a7ab9e  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc
! 750fd17c523d2f88c677df6715796d69  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
! cfcd4a9c338dcec9144cfee595c818fa  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
! 334f25db5e685eec83094cd1a8e10ee2  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
! 6a59e41acbebc5deb4c51b10906fe6a3  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/explicit_instantiation.cc
! 98c70e445ef28a7b2ff37b59b99edb22  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/typedefs.cc
! 414676443c7ac728d1c4fa0ec0e606dc  libstdc++-v3/testsuite/20_util/is_null_pointer/value.cc
! af5a37b81ff206bf3fadf24961ad930d  libstdc++-v3/testsuite/20_util/is_object/24808.cc
! a4a209f6ade49079c92c2f1186a4ee83  libstdc++-v3/testsuite/20_util/is_object/91371.cc
! ea17e22dcb55f04f6954180ed4690b6c  libstdc++-v3/testsuite/20_util/is_object/requirements/explicit_instantiation.cc
! f480d1f76654c1bcf0dfe98f68ba0392  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
! f38e2fc01acd0e4f0ed10765d038c061  libstdc++-v3/testsuite/20_util/is_object/value.cc
! c1fb6997e68818e8ef93b7751f67beef  libstdc++-v3/testsuite/20_util/is_pod/deprecated-2a.cc
! f29a6270188f879d49afef59fbe97a28  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! e950d7006c5a5378125bffef1883188f  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 406de326440e9881e5f3b9629d3255f7  libstdc++-v3/testsuite/20_util/is_pod/value.cc
! 479794e44db7e80b212ba825ce36f8f6  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
! fdf789198d3081f7ee2975e738bf765b  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
  1311eb3e79c008b4f5aefa55f0640c39  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
  d22a6be6a4a98d7bc8d0c9825a73698f  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/version.cc
  ffdb77710f31b58e88ff6a2dac113bd0  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/with_class.cc
! ede9095caab5577ae4737ce559bea518  libstdc++-v3/testsuite/20_util/is_polymorphic/incomplete_neg.cc
! 0cdcd6a33b73a5ad89595f03ffd3f85f  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/explicit_instantiation.cc
! 360a2e9209ef2bb8583da28f0f48cb13  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/typedefs.cc
! 6580f14f2b40ddae46fd8651098a0f5a  libstdc++-v3/testsuite/20_util/is_polymorphic/value.cc
! 3a790735325d55f9d4f0b619cc672e2e  libstdc++-v3/testsuite/20_util/is_reference/requirements/explicit_instantiation.cc
! 963610d737498ec03a97e207b49dadcc  libstdc++-v3/testsuite/20_util/is_reference/requirements/typedefs.cc
! e466fe952d2234f59db92e6366f5be7b  libstdc++-v3/testsuite/20_util/is_reference/value.cc
! 535156d9ee7a904f8840d5d0afdc14ab  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc
! c5eb365cffbaef822ce50f912c386644  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc
! bad0a64d7bc37c7019cbab926b8bb85e  libstdc++-v3/testsuite/20_util/is_rvalue_reference/value.cc
! fdbd576383ceb915399f6d74c31dd238  libstdc++-v3/testsuite/20_util/is_same/requirements/explicit_instantiation.cc
! 12b727f19012786b85ba308e1d584f56  libstdc++-v3/testsuite/20_util/is_same/requirements/typedefs.cc
! b362b6dda4760b7ff01c3d022139514c  libstdc++-v3/testsuite/20_util/is_same/value.cc
! c22b052b8629e802e54dda0d4cf9eb65  libstdc++-v3/testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc
! 13acde82dc74df92542789723569faa9  libstdc++-v3/testsuite/20_util/is_scalar/requirements/typedefs.cc
! b5f0ba119e2306178251b692942b7914  libstdc++-v3/testsuite/20_util/is_scalar/value.cc
! 8b7e14bdc68f2a32781e83900ef65408  libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc
! 23b4feb6205c73849bf906e18a97f3ea  libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc
! 5847bc4854d1c3a9f759fe2e87136b1a  libstdc++-v3/testsuite/20_util/is_signed/requirements/explicit_instantiation.cc
! 0fd9cabc47e6cac47eb3a747fa1b1cbc  libstdc++-v3/testsuite/20_util/is_signed/requirements/typedefs.cc
! ae4e70f9c75cdfaf4f10d5fe447e4b98  libstdc++-v3/testsuite/20_util/is_signed/value.cc
! da7357fe254dc53898356253df9a2824  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/explicit_instantiation.cc
! 1eb4c6688bf7b975040eb4876a6bef3e  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/typedefs.cc
! 133396f1f0baadd9a66af3644d821800  libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc
! b2835619ef273aac4629d82967524a19  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
! 375a1a75fc04c143b5783e20a5047800  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation_ext.cc
! 411535a1613705c68cc7fb082dd4a39e  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
! 1503756d59a5934228c094bd1aa4e33f  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs_ext.cc
! b5bb9f2031b1cdb2c248013c88f4e816  libstdc++-v3/testsuite/20_util/is_swappable/value.cc
! 4da4fe8506a122420ba602fa9955e28f  libstdc++-v3/testsuite/20_util/is_swappable/value.h
! 695e4aca539857b06bfb6a5f2e732c20  libstdc++-v3/testsuite/20_util/is_swappable/value_ext.cc
! 9348758baf039f388538f7e8a2f65837  libstdc++-v3/testsuite/20_util/is_swappable_with/incomplete_neg.cc
! 47ef2f63b179dd3c488e995549556c71  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
! 555964425383d0f6510c83b3920d0a27  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
! 392248af9100531978427b860be075ce  libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
! ca3aba0ee15c21c052214c3b9bd6b524  libstdc++-v3/testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc
! 8bc72b719bafcd56eaabc4a99dc29112  libstdc++-v3/testsuite/20_util/is_trivial/requirements/typedefs.cc
! 29edcb69d110f569724232975e8b8eeb  libstdc++-v3/testsuite/20_util/is_trivial/value.cc
! 2377d75b875c584afab0a333cb089ffd  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/explicit_instantiation.cc
! 4b1a97987cbec65237832cd4e04516cc  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/typedefs.cc
! 39d66d3c6c9a9afa99d0acfcc9719fd8  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
! be999b6905f64af7ab3bc593cb34d054  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
! 2b5519fde10c606eecd01e1e52bd9c80  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! 56d7675e777ea240736ce28f830eb1c3  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
! 991dd187aebdc425ca6870c7595d093c  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
! 50d631a1d9b8d546495259d58a4f66f4  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
! 7b1f28f448c9dc593f7ec6db0ecdd772  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
! 3719887f7ff4cad3f416410793403d3e  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/explicit_instantiation.cc
! a3960a0b4a6ce3f077ef4d6b00756b9a  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/typedefs.cc
! cf0bb414106cdd1805001fde02f84ef2  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
! 08b24005ce7f390fdac74495b03e2a66  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/explicit_instantiation.cc
! ab60a8e29f646454df1391a0811ea0cb  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/typedefs.cc
! 1083308915e25fe950e39da8538b6233  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
! c4f77811f2c3ecdcd13cb509fccf6771  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
! 2060471164cceaa7c90d6e6100987944  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! bd81e8945a8f1b4fb8f68274b9b4d00e  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
! 85d1986f8374d1d98cc11641b0e27284  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
! 7fe2cefae5afcb3e056e44c26ddcab21  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
! b03220f9d59e10c0bb91b4bdc9c545fe  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
! 1ac35fc0a5989c570d4587f6fab3e4ea  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/explicit_instantiation.cc
! 53cb7a45bb5f91a5e7a72488d2c0200f  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/typedefs.cc
! 9edff8333cb090394d9652ca60d13665  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
! f21f32c73ee0ec299927dd16c83b013c  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/explicit_instantiation.cc
! acf97f17773695989981639580f77979  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/typedefs.cc
! 321f2327158cd1bd559b6407766c150b  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
! d74b5beb5f84edbffca920ba6fe85cda  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/explicit_instantiation.cc
! 5c9d284c19e76340f3ed491fc46785e0  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/typedefs.cc
! 8d06c9dc64d6747123cf03be4ab1da54  libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
! 6b74dec68fbf0fd4fb13ac3577917788  libstdc++-v3/testsuite/20_util/is_union/requirements/explicit_instantiation.cc
! 4ddaf473cc033f4b7ca919bccda9f69b  libstdc++-v3/testsuite/20_util/is_union/requirements/typedefs.cc
! 86e4705766154fccc39f0d0117d31371  libstdc++-v3/testsuite/20_util/is_union/value.cc
! ace8248cb4a3d0397d8133e78d4762b2  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc
! 521d523b209fb04cd431520901010808  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/typedefs.cc
! 23ff58f1791c5a05103ee35ec24e784e  libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
! ffb7daab45910f0c8dc26f26a7170aef  libstdc++-v3/testsuite/20_util/is_void/requirements/explicit_instantiation.cc
! 7b1f75968662d8813e59c3d6d942a3dc  libstdc++-v3/testsuite/20_util/is_void/requirements/typedefs.cc
! ed9047510c3fe4358120d5d29650f261  libstdc++-v3/testsuite/20_util/is_void/value.cc
! d9698f02436443fe403fb41d8b76a623  libstdc++-v3/testsuite/20_util/is_volatile/requirements/explicit_instantiation.cc
! 8d9221cd9d3ba9be6801d131ba10cfde  libstdc++-v3/testsuite/20_util/is_volatile/requirements/typedefs.cc
! 51118fa016220f69d989b33135a15e23  libstdc++-v3/testsuite/20_util/is_volatile/value.cc
! d71d3c7cb4aa95341622247e74cf1fac  libstdc++-v3/testsuite/20_util/logical_traits/83134.cc
! 0ea3a982570c3fa5e4811fb87f2b0235  libstdc++-v3/testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc
! 2044305223aa0727cdbe67c76db8912b  libstdc++-v3/testsuite/20_util/logical_traits/requirements/typedefs.cc
! 91f4171e4deaf8c51b47dadce27927d3  libstdc++-v3/testsuite/20_util/logical_traits/value.cc
! f64a041d5749d3f355e5baa2dc26da62  libstdc++-v3/testsuite/20_util/make_signed/requirements/alias_decl.cc
! 91752b2f0f23ba43dfdcec5d4d989e76  libstdc++-v3/testsuite/20_util/make_signed/requirements/explicit_instantiation.cc
! 2415e4c6c6df4648752486384b56ac23  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
! a8dfa81f948125af08c7fee3361a6200  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
! a648c27d159a29e89a5ea4bfccefb4dc  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc
! 85f8d6edde7d336f95ad4dc865bec40d  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-4.cc
! 4e62d3eedbb97fbacfd968c41ced57eb  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
! 9e5a3fa7291d25d0ea12711fe92b5927  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/alias_decl.cc
! 1b922096f38657533bc0db9f2a4e53c0  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc
! e0ee476cf2aa9d6d3878bbfbe3e5d88d  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
! 56cd5c22360302d486534af78e683df4  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
! 1f041e4ec3d65375ba246a7fd6f1f091  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc
! e3183440b59cb858e543fc8a041cbdc0  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
! bc483b6a27ccfde162cfc6554a96f850  libstdc++-v3/testsuite/20_util/memory_resource/1.cc
! c9a2d526afa2dc4e3f5bb830a216842a  libstdc++-v3/testsuite/20_util/memory_resource/2.cc
! d90517a5ca4ac53563222710207b6600  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/1.cc
! b0f5805f7bb18ac3252a1d3392f34683  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/93208.cc
! 4f7c2f7ba9a14a610bff818ee1ae3be7  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/allocate.cc
! c5c33134bf734a0c71098c741a3e1ca8  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/deallocate.cc
! 5eb8dea4d4492553bfcf356fbe0ede1b  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
! 1958777111b9a051e4839a894965ae53  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc
! bf74b76009dc032b1f1039ab9d4573ba  libstdc++-v3/testsuite/20_util/move/1.cc
! e168dac360aa86fe2af18df3567e7b4e  libstdc++-v3/testsuite/20_util/move/requirements/explicit_instantiation.cc
! 33805dcdcf0832c3bff017ee2fee613e  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
! 5fb242f36fb033e11d3419cabd7bb239  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
! d775606c8fffd7ebcbd5cec6b1902825  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! e8c325f8e5f2eaf9f3c8c7cd2ab0812a  libstdc++-v3/testsuite/20_util/move_only_function/call.cc
! 48ee413c8f8eaee2afdfd3f2bf403469  libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
! edd1af8bf683f6ccd07080569f74b3d7  libstdc++-v3/testsuite/20_util/move_only_function/move.cc
! 2c300060ea30eb01cb457aed1c7eb241  libstdc++-v3/testsuite/20_util/move_only_function/version.cc
! 5a06b4a7b08ace6aa7b04e9cbb67f82d  libstdc++-v3/testsuite/20_util/nonesuch/nonesuch.cc
! 5528f5e783c0d2948fb698b4a380117b  libstdc++-v3/testsuite/20_util/optional/77288.cc
  f669af40876c317318f47db8330b7058  libstdc++-v3/testsuite/20_util/optional/84601.cc
! e00c31137938963c2822b6d4d17c4103  libstdc++-v3/testsuite/20_util/optional/assignment/1.cc
  5f2a36dc053d6d68a81135df84e7f4cb  libstdc++-v3/testsuite/20_util/optional/assignment/100982.cc
! 3377cf3a33bf8a8bf34ef596af15a4c3  libstdc++-v3/testsuite/20_util/optional/assignment/2.cc
! 9bc72e34bf895432addb23ad7d3db9de  libstdc++-v3/testsuite/20_util/optional/assignment/3.cc
! cfffd43eb1c20b648e30710a39b82c89  libstdc++-v3/testsuite/20_util/optional/assignment/4.cc
! 417e6e7f46f62e93712b5793b603c6ef  libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
! aa3f29932f8f02ae835f141f584742b9  libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
! b4b10a6797710925c10da17b96caa9db  libstdc++-v3/testsuite/20_util/optional/assignment/7.cc
! 73114c2d139195da0e87c1fb9acb27d1  libstdc++-v3/testsuite/20_util/optional/assignment/8.cc
! 9306a08ce9e035993bb0da3e9c453169  libstdc++-v3/testsuite/20_util/optional/assignment/9.cc
! 004b48e3714c9ecd70221f23b1341493  libstdc++-v3/testsuite/20_util/optional/assignment/92878_92947.cc
! 4921fb1eaac4d84642a31a8c9b68d7a3  libstdc++-v3/testsuite/20_util/optional/assignment/noexcept.cc
! db1c02b27ac65edc1840163c15afa0ff  libstdc++-v3/testsuite/20_util/optional/bad_access.cc
! ffef18331eba2bb2e0d0b3a04889e98f  libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
! f518ca18908f3b7f2c9d85000b72e8d6  libstdc++-v3/testsuite/20_util/optional/cons/85642.cc
! 9277981254b4f4e621e549274adeaf16  libstdc++-v3/testsuite/20_util/optional/cons/92878_92947.cc
! 9dec16e5ed38f0874552864772f00cf8  libstdc++-v3/testsuite/20_util/optional/cons/copy.cc
! 7f6483d39bb2f3c8e3fb7bb844dd0b7b  libstdc++-v3/testsuite/20_util/optional/cons/deduction.cc
! d482c6195340f43e84ac356bffbe110a  libstdc++-v3/testsuite/20_util/optional/cons/default.cc
! 45cc5553e183cb167e4ced5f96d668a6  libstdc++-v3/testsuite/20_util/optional/cons/move.cc
! db240d21c6d84400671ab0bf0ac6f791  libstdc++-v3/testsuite/20_util/optional/cons/noexcept.cc
! 8e573fccb757f8def8df541260f6ac2b  libstdc++-v3/testsuite/20_util/optional/cons/trivial.cc
! fd22981b7bf5355ee1cfa5feda624b7b  libstdc++-v3/testsuite/20_util/optional/cons/value.cc
! ed770dd92c445ad02fcee92380d91e3d  libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
  205153857e4103d66c67fae379d14a86  libstdc++-v3/testsuite/20_util/optional/constexpr/assign.cc
  52debc915496e85a8c7135a5baffe7b1  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/conv.cc
! 75c9ee134662535c683051c48b5d5e18  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/default.cc
! ff53094abe8d53f484a05f08803a3e2a  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/value.cc
! ac6169669eb2aaf50d2ba7722c468f66  libstdc++-v3/testsuite/20_util/optional/constexpr/in_place.cc
! c4fdd6c8a0b01239422b4408e56e3854  libstdc++-v3/testsuite/20_util/optional/constexpr/make_optional.cc
  1bd13d53c43f256f47a5c535cc903df1  libstdc++-v3/testsuite/20_util/optional/constexpr/modifiers.cc
! 2b51fa3e2f9ee1b798d46d5e6762b2fc  libstdc++-v3/testsuite/20_util/optional/constexpr/nullopt.cc
! 5f667634bcbab35a92cef9d2d3274d62  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
! 84d8509bb476b3da1f4956a2b548382a  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
! 62ff8d01b8c15726062a68fa378c639f  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! 19be70962dfa35d87c8a3fdc855dd986  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
! 8924062f291729816fd9063cbe84c688  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
! 9d72d00b6446455d0ac64c5fdfa00ca7  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
! 386550c57735cfcea12c25411144c972  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
! 66b4886b4d7aa0ebfdf3915be79a3d24  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/3.cc
! 2a00e771d355c284c19dd28c805d9728  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/4.cc
! 8f45fb78bbbd66c23510e6849c2a13f9  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/5.cc
! 52228f81819360d8cd81f10731b84283  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/6.cc
  1a6e6bdd2186983f8eb3e55976f3af73  libstdc++-v3/testsuite/20_util/optional/constexpr/swap.cc
! 133f4caac995b9fb8fd21f444b1ee4a7  libstdc++-v3/testsuite/20_util/optional/hash.cc
! 3fcc899310372872d012514cf03a782c  libstdc++-v3/testsuite/20_util/optional/in_place.cc
! 0cb796cf5a410e12c6ecd7e1acb04070  libstdc++-v3/testsuite/20_util/optional/make_optional-2.cc
! 8779ff484841f29f3bf8db9f3a7bfe5f  libstdc++-v3/testsuite/20_util/optional/make_optional.cc
  5b939997ab0b925554c67ff456486490  libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc
  1fb80e2a52e88cb6b62919fce0976800  libstdc++-v3/testsuite/20_util/optional/monadic/or_else.cc
  79388e9c0a6e088bd396e51da861fa47  libstdc++-v3/testsuite/20_util/optional/monadic/or_else_neg.cc
  e73fd70677c9d505f949cef47d3131d8  libstdc++-v3/testsuite/20_util/optional/monadic/transform.cc
! 5fa3bb7eaf2cba4b834ac9c7120752fe  libstdc++-v3/testsuite/20_util/optional/nullopt.cc
! f266cd6919175ef85fb8723ecd34023c  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
! 1374b724b434803cb695b3244d57b154  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
! fdac64c9706de2fb27617b4f51f20594  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! bc10c4f4661301bda86688f88fa4779f  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
! eb9bfe0027ea25f86df479187f2e2b51  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
! 2e7aead929c8a20b8f4de6346cd95db7  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  d8af3640e7aabc8dd1960265b3ca5a27  libstdc++-v3/testsuite/20_util/optional/observers/lwg2762.cc
! 7c9d417a4b0745e80dc5d920811dd7c1  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
! e7375870ac149e6fd0b61a1ce5c07e22  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
! b82e5c7c2c813fea4e4e3c1e22106f9a  libstdc++-v3/testsuite/20_util/optional/relops/3.cc
! 3ac691fa9feebe1a9124e9dfe774cae8  libstdc++-v3/testsuite/20_util/optional/relops/4.cc
! c9aa9f9e406aba3a09851095aba45048  libstdc++-v3/testsuite/20_util/optional/relops/5.cc
! 71784fea48bffed48da31910f4e5d870  libstdc++-v3/testsuite/20_util/optional/relops/6.cc
! 6c68fe8f2cdc22b4eb85dad9d95582e9  libstdc++-v3/testsuite/20_util/optional/relops/7.cc
! c6f84d09fa0962de9171290c8ce708fb  libstdc++-v3/testsuite/20_util/optional/relops/96269.cc
! 30a0340ce1a71e672cca39f0080109f9  libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc
! 9c52d59fe2419c436cc70b7a9998d6c5  libstdc++-v3/testsuite/20_util/optional/requirements.cc
! de2e63ee112921235a6d2e4f53691752  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
! 1803a83df49d39134507ff5842b8da2d  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
! f7200d2262962d5bf38ed7d75be225e5  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
  027c1d0d48df3e1ffe45b2c618f329e5  libstdc++-v3/testsuite/20_util/optional/version.cc
! cda02a0d71942a759d9f094568ffb3a6  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
! 089fec0bcef6668c3aa6423b12d015ca  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
! ba95f642ccaf36e690be4d4c8df98b31  libstdc++-v3/testsuite/20_util/owner_less/void.cc
! f1ab4027c3e1e4280bfc736bc734544d  libstdc++-v3/testsuite/20_util/pair/1.cc
! 06bd7312a60884516160d523099fd60e  libstdc++-v3/testsuite/20_util/pair/2.cc
! f49b5d3ea98583309e042f0d3a7b4f4c  libstdc++-v3/testsuite/20_util/pair/3.cc
! f936bb950b39c520dd3c1b212ba389e5  libstdc++-v3/testsuite/20_util/pair/4.cc
! 63941851052bff9a98fcea5eafdfb4a9  libstdc++-v3/testsuite/20_util/pair/40925.cc
! f87db4771f77305f4347b141abafdfae  libstdc++-v3/testsuite/20_util/pair/44487.cc
! 42f1b4189ccf2d339694316ae926c836  libstdc++-v3/testsuite/20_util/pair/70437.cc
! fc0e451ac8fb347bced1bc025756e3e1  libstdc++-v3/testsuite/20_util/pair/79141.cc
! 8d79addc1b867357abf9121d717cd759  libstdc++-v3/testsuite/20_util/pair/86751.cc
! 0bf847c73ddad31dc81b1edc7513b621  libstdc++-v3/testsuite/20_util/pair/87822.cc
! 8d5e6a3b0760dce088360c5741261c31  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
! 19fa5c063efd41fdf23861a60d273ed8  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
! 777f4add94ec31b0abaa941465c23776  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
! 517c2277d79c47aca4f3087f6fb89f69  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
! f971d9b59f621eaa1ffea94b69394afa  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! c6ac610caf8bb08b9e6a7d4b922dc4e1  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
! 8c64be57a8e97ab19fd7c0af66267e70  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
! 9a0f924a06b54c420edfdeed90fcfc36  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
! e1533578a95c98b91d2ba6e19811ff74  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
! 13c0f8e2566fdb759442caa59520c56c  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc
! 4cf2dd4fa6860a5d18a8822709f51d19  libstdc++-v3/testsuite/20_util/pair/cons/92878_92947.cc
  c5964cf74c99c86ce570bfdb15835bb8  libstdc++-v3/testsuite/20_util/pair/cons/99957.cc
! 70307d39ba4d8a999c8eb5b2e631a68a  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
! 44131e1a303ec19a2e633863c2e0e78a  libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
! 50bde0c6fe22b31c6b401d963cd9619b  libstdc++-v3/testsuite/20_util/pair/cons/explicit_construct.cc
! ff3cf176b809fc8dcbaa2d4c00cb3d83  libstdc++-v3/testsuite/20_util/pair/cons/noexcept_move_construct.cc
! 59078b4e1551add86e61a8575735df1a  libstdc++-v3/testsuite/20_util/pair/constexpr_assign.cc
! 8046c2c8fb9c1b530eed055c34ad4334  libstdc++-v3/testsuite/20_util/pair/constexpr_get.cc
! 50587765c0369578f80df0e46d5f4aea  libstdc++-v3/testsuite/20_util/pair/constexpr_swap.cc
! bda45620ccf8e34ee9c88417e78a1fbc  libstdc++-v3/testsuite/20_util/pair/make_pair/constexpr.cc
! 9bf43f9667f8af152e8ab7a1f1066b99  libstdc++-v3/testsuite/20_util/pair/moveable.cc
! 5f9ebee71fc6390267351c0cfbd49f97  libstdc++-v3/testsuite/20_util/pair/noexcept_move_assign.cc
! eb53fe3e89bcf14ae7603d18d72462ef  libstdc++-v3/testsuite/20_util/pair/noexcept_swap.cc
! 8108b06e98a499e2520af133aa11c5d8  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
! 53efdac56958ff7a07286b13a167c92c  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
! f07c22f55b4672946cf788481eafb071  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
! e2a3ea63bdc2bab1dc7ce12e92fedf95  libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
! 98c472c662693d2a51f995ca93a93c91  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
! b3d5b6926128a21aa20e9917f3fcc8d9  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
! bf6fd13633b8f8fbe6c7034e65ca6bdc  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
  8099b36c756fc41e3bc9ee5b66294a57  libstdc++-v3/testsuite/20_util/pair/requirements/structural.cc
! f63763611d2f39c6364f5717ce8aabe0  libstdc++-v3/testsuite/20_util/pair/swap.cc
! 5caef850610155be9b6c2033eeeb4d30  libstdc++-v3/testsuite/20_util/pair/swap_cxx17.cc
! c5d2ad990f812ed47a8b071884c2320f  libstdc++-v3/testsuite/20_util/pair/traits.cc
! 4db5230edc60daf04deb5d886b7682e4  libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
! 137193e221b043692c29a575c84f55f7  libstdc++-v3/testsuite/20_util/pointer_traits/lwg3545.cc
! 2975cb430bb44eb904c416b203f8ae5c  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to.cc
! f860bff45e1170370ba6fc13aea4b94f  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
! 72a6d074e60a1b3b35cd824784faa89f  libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
! c44bd5f14599888ffb9262ce326045b2  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/explicit_instantiation.cc
! 9af182d53fd8e17cf8a716ec8b64e828  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
! 6e3495d9ace1d3d42b636bbc7030fb6b  libstdc++-v3/testsuite/20_util/polymorphic_allocator/1.cc
! 9d4fb5022bcc07630ad3680822f46f84  libstdc++-v3/testsuite/20_util/polymorphic_allocator/allocate_object.cc
! 3ebbee604a2ea3a4f09dc4224c3692c3  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_c++2a.cc
! d66f820a394001e342a4867b537cfd14  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_pair.cc
! a15946667caafc7f0f0f6bc3fb588b62  libstdc++-v3/testsuite/20_util/polymorphic_allocator/lwg3237.cc
  918078cc6c6d9bc5d48247416402bca6  libstdc++-v3/testsuite/20_util/polymorphic_allocator/lwg3683.cc
! 00f10cd8196f73646dfde826c1465b85  libstdc++-v3/testsuite/20_util/polymorphic_allocator/resource.cc
! 12ea8c4ca025f9025b3608da838b88c5  libstdc++-v3/testsuite/20_util/polymorphic_allocator/select.cc
! 00306a0dc0e3bcd38f687a536e881364  libstdc++-v3/testsuite/20_util/rank/requirements/explicit_instantiation.cc
! e87d11194d2182c3d0e852c7c88cf3c1  libstdc++-v3/testsuite/20_util/rank/requirements/typedefs.cc
! b7b716b3b95ad413531c0e75c636319e  libstdc++-v3/testsuite/20_util/rank/value.cc
! 9b0639db634a64f5a35b29ab2e384121  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp1.cc
! 43b1ffeabb16200d4bee181e54528121  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp2.cc
! ee06c841bb23b4293304a23ddb3e1b97  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp3.cc
! 4ae7b4ac10ef9b54d85f5ca782a76fb2  libstdc++-v3/testsuite/20_util/ratio/cons/cons1.cc
! 84beaa42992b347288b7734bb520f0b7  libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
! 1bc0033e665efdad5cf91d42f7731351  libstdc++-v3/testsuite/20_util/ratio/operations/45866.cc
! 613fbc4c42dce9ee800659a810bfb610  libstdc++-v3/testsuite/20_util/ratio/operations/47913.cc
! 3d0e376ed4e47d239867792b74e85904  libstdc++-v3/testsuite/20_util/ratio/operations/53840.cc
! 99e7fa9323c77ab442eaa31e3560d690  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
! 0525fae93abd4c9bb97c5a138db3c647  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
! 87c05b0407166fe339fe4e75cbdf652a  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 388c1b29064b2df244e9e89f3d18ae98  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
! 6785d8ad8eab79be32eb8a1acab31957  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
! fb3427c994513620f40b5feb9d0ca9bb  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
! adb5d68178006afea0a210c3b6d00b75  libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
! 349d560eb6fa81f631f92d67b31e6a52  libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
! d9bd349f9dd045de18c630078b82944e  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
! 656a9f81905b713bd19fb81f0450e8f5  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
! 5d4f998f083490953e728b5935531447  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
! 1785ece6533a1e90e7c15dd95f788847  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
! 4200b2c12893211f42ca6fdb2feae655  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! 64453bd3020b78077710cd20a540ea9d  libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
! 002763f0887ddffec74d94fcff2454be  libstdc++-v3/testsuite/20_util/reference_wrapper/83427.cc
! 368e1b6a6ec682258c3948fd7dd04a5f  libstdc++-v3/testsuite/20_util/reference_wrapper/constexpr.cc
! f68cd229bd1c5364248f5081ad2e4161  libstdc++-v3/testsuite/20_util/reference_wrapper/deduction.cc
! 0223c9c8c582840ac6d3588e80b26b2a  libstdc++-v3/testsuite/20_util/reference_wrapper/incomplete.cc
! 25ee41a6ffaf213df84af8cddd97eb03  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
! ee97fc4a8b92d8f39543faba8c91644e  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 64ec45f53b44489e83d61c97020d00de  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
! d35070ec2d5de79d74fb8a3c8d7b4295  libstdc++-v3/testsuite/20_util/reference_wrapper/lwg2993.cc
! 41afa1f94c0458ce9dac85913663bbc1  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
! 67d5e69e8376a4507e0599a043d8b859  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
! 6214196416b45706afc8858ccc286378  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
! 65b7604a7eeffa15b2b4eb88d7c551d2  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-2.cc
! 104e97b9ebeec5b986a732664330259d  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc
! c1c79796cfde7b41fc3380f3dc16b705  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
! e536cac83093358e8c95534b5356dc5b  libstdc++-v3/testsuite/20_util/rel_ops.cc
! 767977dc72ac52f7f63c951f3f52a5cd  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/alias_decl.cc
! 5e201f958b92dbc8b10dc81c2366109b  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/explicit_instantiation.cc
! 37cb65273c50f48fdfa35f468a58d463  libstdc++-v3/testsuite/20_util/remove_all_extents/value.cc
! 3177278a28ce9320cb2c9b544e358816  libstdc++-v3/testsuite/20_util/remove_const/requirements/alias_decl.cc
! c41f7a07a75aa07b4f2025494a74ecd4  libstdc++-v3/testsuite/20_util/remove_const/requirements/explicit_instantiation.cc
! eb52c1f168b5290e639ae1991c050325  libstdc++-v3/testsuite/20_util/remove_const/value.cc
! acd172ad86e7991d701815c6c5fddde5  libstdc++-v3/testsuite/20_util/remove_cv/requirements/alias_decl.cc
! 7c084225021106c113541c2d59eb2794  libstdc++-v3/testsuite/20_util/remove_cv/requirements/explicit_instantiation.cc
! e9f17854c8e14cb46d27cfefb55c89ad  libstdc++-v3/testsuite/20_util/remove_cv/value.cc
! f3b67c8418a79873f8150a30e8188429  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/alias_decl.cc
! e6fad2ef8a6359e531d8f47e9e95be09  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc
! df5acada3ae361a7b2eae337890a0b33  libstdc++-v3/testsuite/20_util/remove_cvref/value.cc
! ac8a2359e4a819ceed8497c3840468b5  libstdc++-v3/testsuite/20_util/remove_cvref/value_ext.cc
! 393cc2b3bbe36dda92f29dd9ecb79a48  libstdc++-v3/testsuite/20_util/remove_extent/requirements/alias_decl.cc
! 48a7e84d78f3e58f11154318ad7ec38b  libstdc++-v3/testsuite/20_util/remove_extent/requirements/explicit_instantiation.cc
! efc10a92da1a4440ca4c3433d83de15d  libstdc++-v3/testsuite/20_util/remove_extent/value.cc
! d171d9323c6f53a360db4873aafbf36c  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/alias_decl.cc
! 5589710812f59951b4bd58207b9c46ea  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/explicit_instantiation.cc
! cc3c6cd6373449eefe7fde37cf760acf  libstdc++-v3/testsuite/20_util/remove_pointer/value.cc
! c9fb933ba47a18d0b4368307d4bcded7  libstdc++-v3/testsuite/20_util/remove_reference/requirements/alias_decl.cc
! 4b8d755b8a90a3508a43503a8f41e94b  libstdc++-v3/testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc
! 06f441fd05977895279dac0f25201673  libstdc++-v3/testsuite/20_util/remove_reference/value.cc
! a3410b2e839be9757e2c56d39c0ceff5  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/alias_decl.cc
! db8593f2b58c72484eaa473729d1ca6f  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/explicit_instantiation.cc
! 8acfd01ce8b56e14164416c852adb65d  libstdc++-v3/testsuite/20_util/remove_volatile/value.cc
! 0c4a4e02021904ceb0f4447e5d9f5b36  libstdc++-v3/testsuite/20_util/result_of/1.cc
! 5e854909ff16416043a1c30966b8fe2d  libstdc++-v3/testsuite/20_util/result_of/2.cc
! 893120d3cf21f0614f1929947ef2e6c1  libstdc++-v3/testsuite/20_util/result_of/requirements/alias_decl.cc
! 3355472d715d4c9fcc82fa12ccdb8386  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_1.cc
! fff354d95e6d074952bae6d497ce5c6a  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
! 000a77e1e66ecb7e51bb42c9d99a131d  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
! 404e273b73d3c121b16cd1d99170a4ab  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
! 4e2fa4c316dd48d50f87147ac122d0c6  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
! e8fc3d33e2ddcb2b25c4659e68369f26  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
! a3e2460d6bfae92a75109fe32407b41e  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! 93dcd4e9440cbc4fc328bdef60a4c577  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
! 9cc69f57d4e8b0f5602b4ebbd25be92b  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
! 0ae95cda47e71f65e553871b84de1398  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc
! da4d65552940e65aa9d1b59f671421ca  libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
! 2ca4dc91545f4fa74b0b77f0d54e2ff2  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
! cf2b68a4f2e80d3601f099fa53008067  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
! 11406f1cab3a7c7fd3f2a496454cc2ba  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
! 84d3332cc1461cc546605eed842103b9  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
! 06aa6595475cfb15d7f201a2b84bb178  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! 16ddc99928bab565fef29e42be8d3e0b  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! 3dbaca4ca7113776710df0c735739c27  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! e0d496a64e15a0ea50e1ab57d13e28b0  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
! 2f4f1d2adb88ee3c441b870ee2e42f24  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
! b98408ed5a7825b8656b7f446ecd1c91  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
! 042d1ac7d0e16c79dacea8a6d5adc850  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
! ae2a3d33af23785e7a915857cb90be15  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
! 1f85e3f197c45aae2e3109e4b3dc6406  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
! d5be8a8aed1f64036a574b9a028df13f  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
! 0ab6bd480bae45923e2703bea49111cb  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! 10534c5beec61a2a88629e9c792143d1  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! 0e313c17fa65127b40907cfc134dd414  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! 0439cbeb52689dd32da3a9bea0990506  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
! 431dd74159fc1fc3b6a15c112063c3d1  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
! 4d5e6fd7e7388e4297202e27a77f9920  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
! 198bd3b7c2cffecdb02bbc67b0abf968  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
! 54e7ed03ddb9cab8656635f2f9fa580e  libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
! bb01670fab6e769ee452d3e79d003f01  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
! dd4ae81d862f45ce94f6d3fba6d5c863  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
! 0b83c47610d299a865377b6e79c902e6  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
! 337eeab89188b163a00725b2dc3a1478  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
! cbba45875c2f7ce2404269f6e3c9ff00  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
! 55bdf4ce5453e40a9fe18660a9d979ab  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
! ba7bb90314b7ea9d517dbcbf2224f1cb  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! bf6e7652453c33f3d0b990cd9cea9f87  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
! b96b1f31e6a4e8b67f61e90ef68ae391  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
! 404fc3391b64c129dacc054fd47675c4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
! 50d33a3b1c2c0699e986ba27ff91498d  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
! 26cf0376f5fcaf33f3cdabede300a6d0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
! 4a623f357a1cabe8017f3f062ced458c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
! 726246f5badd1f194db00b657f568608  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
! db9c05130650a12b6b553a5a771c808c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
! c27f47696db9b6a46b69aa85085eec0e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
! ba1f9a37361d387a90709b10feb1d1b0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
! cc707812e11e2143579be78259edabe4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
! f5b5764475170abb4f8a83b804c65b98  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
! a00416073b74aff974ead6e07291a713  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
! 69eda6d15d7060c19afb10cd4ce8af35  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
! c7a5c0549d9390bad20765abe41cafe5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! 8c756895dc26b75286292a89202b3a84  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! c33393045f6f992f03073e8833f89e71  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
! 451cd273e5de7ad412cbbee40129aa49  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
! b66fbd996efced3347ff61e40b48f2c9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
! aab7bf051c877d9ec11a91cf6cd674b7  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
! 4e67a6f734a9c0c8ee64079ab63726d8  libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
! 15f1245c85be06c8b5748413e9c585d1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
! 6ee836f3d8446334ad0856f8f79f7c0c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc
! 9a4cbfa0d770b4056fdfd1bbebb4ddfe  libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
! 3b096a263c1eb5bd6025a68faee8ae26  libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
! 8898f20777e684711da4b24fe4f8c2e8  libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
! 6bc6acb2070193596d1f18df61bcc1bd  libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
! 981df342aa447f268fbc876a811c36c4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
! e229d21ad28b17cf86e6023bb17532b6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
! 007b71d08790ecde4ddd5b9fe9cf0e3b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
! 54c06b1286f303cf4fd6c5ec441153d8  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
! f33d1878b4dbc41ec42803e9f34d9eb5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
! 64521dae3f2aa23bd5aec6d59bc85edb  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
! 7eaa4e5e65923584e56643495f1b5bce  libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
! a528a67a2796e98f560c2ad59405ac7b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
! e447654b7496b7e56ebe484e788d4d77  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc
! 0ac7da30cf3e24d402140edd73403a98  libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
! 5bb6b51de77f1dbea165ff55d843e200  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
! d0a6f09bd1e3d3a74dcc45cbae043766  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
! cc30e8e38c28b29c7c07abed33c7660b  libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
! 7eeb6f44ba22545976c8b9dcad2a0bca  libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
! 28538935b0036fb55b635f62c6c47373  libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc
! acd4abe6aeabd351d546ee67ca545dd2  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc.cc
! 8ba639e230346f51b269d350fa166efc  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
! 881f89da684fdd9ef282cd0ef7aac779  libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
! b69f4723582a7029804feb79fb8364fe  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! 87eb5e915373459b68195ffe4c8b9616  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
! fd2605721c53a1b221ea23888af937e9  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
! 494b49cd0f3c7bc8f766d51567d69652  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
! 6b74df2972bf0e4b473cc1c1090afd3d  libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
! 05091a9f7c09a07e7c150947ae64af28  libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
! 82bf03f59e21954a35c7b4f43409f3ae  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
! e44541db5bcb7da8bb3d3b1ed54fd1f9  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
! df243b1da02a9503c1a5e25f59707e99  libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
! cd68ee741cf9f15c27f043395881cb34  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
! b0dc40f050dd02cb46f9f7bcec08b900  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
! 4c1484c3e33222d54790756cfd850dbb  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
! 86f05bc3f7e553654b576e2f313e8371  libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
! 2df86cf76472e11d4d6c1ed6901128f7  libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
! 9aeaf0034e3c4a63a7ffd8077b8b2344  libstdc++-v3/testsuite/20_util/shared_ptr/misc/io.cc
! 968bcfe4ea6ef24f1d450795b9399a26  libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
! ce540cc09f70e210be3ff64ac1fa85b0  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/24805.cc
! 9350f0cbf6d0b69a271d1372e13144c8  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
! 68efe9c22a2b63c496580efd643eed27  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc
! 3a61b44fdcab4827d0cfc371e20b5414  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
! f5bca709b463193edbdc430f415bcfa2  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
! 917ffa2262abae872a32f514f0375272  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
! e96734eff5d52097d61cfc1c46e022d8  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
! 76768246e2bfaeb861c0b053a56e1c43  libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
! b01220698369198294f04ccb7113a20b  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
! 12dba3e031588fc33e2abb1a517e93c3  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 4d24b4b1ce00ab044a3115beac4bc8d8  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
! 843d3ad412fc271389d2f5ecaad75645  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
! 1342880433ea22d6841d44c959e05568  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
! 1db700ac187cc931037d7759881a71ea  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
! 681ef75c1dc056c20fa44739ea290425  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
! e09a08adb33faf39b264c68b35a8ade9  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
! e393b8866fabfde4b24adaf54905a741  libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
! d0bad30411cafe4997a915d551685585  libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
! f0d75bfc4dff23dc8e10083273cfab6b  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/1.cc
! 3463c3651f8d3f45d9b73f49eb65c1c0  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc
! aa879cddb4f4bf2a3ca80ad8db4fbb79  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
! 2e0f464c8f366a7cb2d7f7a37f4b4736  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
! 6f06304cfa36cc58ba9310c3194cea40  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 0c5c17f41cf45b43b4782d8e2805accc  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  7e2d819342973c849d87437556e29d5c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  681f3ec9c3b800b4e5258afc87a95231  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  7377989805a8e1aa7f8896037d2eefae  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
! 7fe4c4bfe777a8740f04451bfc26d5af  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc
  efb0b570168ffe84d6e2f37ece809386  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/102064.cc
! 8d8612d50934e41092baee49a31ad576  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/58982.cc
! 1b0d02cd9c3718f2c9f9d7d27899606d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc
! 6b507a51c89955f03a51d67d700fe79b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
! dfcd688638ddf02453a711f4639e2548  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
! a1be99e56cdb10f46debce9224771753  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc
! 6e5da6b7318842e69609e8ef45558ea1  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc
! 72b98511ac386746135915f8f6d26ae8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
  9b3e4f319f44ee77ea0c657fdf58b9fc  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/102064.cc
! 01f5e9983a40038e759ea004472c37f6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/58982.cc
! f141521515c23f91081f1e024a49f170  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc
! 37d0cc06ed935620e421fbc3beaf202e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
! 49c3863e3152ecb5e406eff251628860  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc
! 0455832f89d199d22410d01d2a6b69f7  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc
! 0f62eb07e1e55614948a118c701cea6e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc
! beb0df06e972fe7d032af189fe7f40cf  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc
  b3a76cdacc3eabc45c217e3d5a8738a6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc
! db1a02556cc3ccdd9652cfc0a90ef18e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
! a907d5e9ea850b064ee850ef2b86b856  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
! ba186b403d72918fa06399e95cc01e39  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc
! d459afeaec3488ee3a113090c88b35c6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc
! 501cca7a23363349ff64ea661fa4af26  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc
  2b8079d02ae431daa7c5a8e3743eb7a6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/102064.cc
! 914534b4015de0a54f9d0a8bf73beefc  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc
! 62aadc758af0080804572a5c029bf1c8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/58982.cc
! f03427b9fd617f0a4ccc5e310c2d68c2  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc
! 88541bc4fe1864b7ffbadda6a0f023e2  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc
! 2f6fb2feb79895cad4f2780d63afbd48  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/dr1339.cc
! ddb944d483d0eeeec879693dc1d2aea8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc
! 7213f7ea297a491de2b852fbe452be78  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc
! 713532442e2809030d364918b95439e0  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc
! 58fa9c37d37dc672f536f2781a81e0e4  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc
! cc0a4702b72316765f59e36eda025c41  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc
! 374f05ffe4253d79c04f83e29f8cefa4  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc
! f394e5903515c6d7fccd9a447f6c666b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc
! 1c4e53e93afb5eed33bf22511582dabe  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
! ecda38dcbf2e1117917507283ba92165  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate.cc
! 8d1e08c1b944f41c3ceed1df5644cd8f  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate_single.cc
! 0900e469069ed035063a06ce1c1620b1  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons.cc
! efcb87653765d8dbd6461299cae29b13  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons_single.cc
! 2d8f17c651f770bf9bf3158a36e3574c  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/is_equal.cc
! 964b4b2bd413abc8dd20206422cb42e0  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/multithreaded.cc
! dcf10d9e855e20e92e46d88ca040e36d  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/options.cc
! c7473dbb10cdab8a93de0d093bb119f7  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release.cc
! aa35850cde8fcc4bedc08728c6612f5e  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release_single.cc
! 422a35f8718904e2992ed392e4f4bd8f  libstdc++-v3/testsuite/20_util/system_clock/1.cc
! c814424b516f2825477da064e56a56d4  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
! cf43ed6314eed0ae331439c216f6fbfb  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
! 0d8a874b4f75bd08eb0ffda0e2a22243  libstdc++-v3/testsuite/20_util/time_point/1.cc
! dbf2559b2c395e42a906a8d409a73449  libstdc++-v3/testsuite/20_util/time_point/2.cc
! 9aebaa7e35009b9d13e4b2075aa9dbe9  libstdc++-v3/testsuite/20_util/time_point/3.cc
! 125a861dd6f2de0d14a011653282eecb  libstdc++-v3/testsuite/20_util/time_point/4.cc
! b81b48c064e787b43438bbfee0917bc7  libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
! c172a31a31058fa0b8a0a6679a2c71f7  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
! 054fa5e28822ecfce32cae1cecdf0e3e  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/three_way.cc
! cd5032636afaa185f298c0d14ab9b695  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
! 015b522fd8dc414305f9b69c4dc88f43  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
! 4d8e94213b262e19f3ae4757e0b09201  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
! d96074ef96b66cd6f4fb703bc891cb43  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
! 26c7721f197b8c2afaed51654e10eec2  libstdc++-v3/testsuite/20_util/time_point/requirements/duration_neg.cc
! 0151c508b696548cb8bbe5b2ede24d32  libstdc++-v3/testsuite/20_util/time_point/requirements/explicit_instantiation/explicit_instantiation.cc
! 064d35984d27a1638d46e2bade74bc3a  libstdc++-v3/testsuite/20_util/time_point/requirements/noexcept.cc
! c0e7040561cbf3e0cc653c05e4b739d8  libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
! 539cc0bfa91a27018ba1156ded50f142  libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
! 681b5a13c6a30d24fd0be6b62372a312  libstdc++-v3/testsuite/20_util/to_address/1.cc
! 5feb415690e12679f24685477a5a8ab0  libstdc++-v3/testsuite/20_util/to_address/1_neg.cc
! ebaa363c4ca730805aaf340c04e50314  libstdc++-v3/testsuite/20_util/to_address/debug.cc
  85bcd20ed1477c234831a1e857e38995  libstdc++-v3/testsuite/20_util/to_address/lwg3545.cc
! 5ad0dab0a987b897ae41cfb8e9b06ee9  libstdc++-v3/testsuite/20_util/to_chars/1.cc
  cf4f3947ea6ae8a691cad8b85ffb82b7  libstdc++-v3/testsuite/20_util/to_chars/103955.cc
! c70afbef43573b4aa7bc68320ec718e2  libstdc++-v3/testsuite/20_util/to_chars/2.cc
! 58331add5b8cc70928dd8afcbc39be32  libstdc++-v3/testsuite/20_util/to_chars/3.cc
! 8142705676dc09fbf3fe1231d49bbfb8  libstdc++-v3/testsuite/20_util/to_chars/4.cc
! 3ec9c5b1afb32d4f0cc995fae90c983d  libstdc++-v3/testsuite/20_util/to_chars/95851.cc
! a7b9f2532325aa2dbcb244a2b8858e6d  libstdc++-v3/testsuite/20_util/to_chars/chars_format.cc
! 224c36f900afc5ec2ad272b606f5f8d6  libstdc++-v3/testsuite/20_util/to_chars/compare.cc
! 5023f6c1a2d374e90adee1ec171efa98  libstdc++-v3/testsuite/20_util/to_chars/double.cc
! 23ac211304a3685d878056005dca6369  libstdc++-v3/testsuite/20_util/to_chars/float.cc
! 5d2a72f0b0bb14657b7d750212e5d8b2  libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
! b7f24939aa37c4de46e365ee2377af7f  libstdc++-v3/testsuite/20_util/to_chars/lwg3266.cc
! c750e67c3f3c2a58166a927c07e4c2bc  libstdc++-v3/testsuite/20_util/to_chars/requirements.cc
! 05340145a7552fa3d7b9ef3667d9d88d  libstdc++-v3/testsuite/20_util/to_underlying/1.cc
! 8a6cf6cc7757121b079b650a3b016df3  libstdc++-v3/testsuite/20_util/to_underlying/version.cc
! 470bb4edb0de57381e37197d42b381db  libstdc++-v3/testsuite/20_util/tuple/48476.cc
! 433b29458e4b064aaa198a552f245980  libstdc++-v3/testsuite/20_util/tuple/51365.cc
! ae0e83622abe25be7c0242dfb4fff752  libstdc++-v3/testsuite/20_util/tuple/53648.cc
! 2fb20d2ac2dc29086b406744e2f3cc2a  libstdc++-v3/testsuite/20_util/tuple/56785.cc
! 700319cbe244a2d05f160411bcc79fb3  libstdc++-v3/testsuite/20_util/tuple/60497.cc
! 3f8824514dbf05c77032315ed14e1a7c  libstdc++-v3/testsuite/20_util/tuple/61947.cc
! e77fef6e8b1c8905e7301249bb7ccaa3  libstdc++-v3/testsuite/20_util/tuple/67844.cc
! ed174af4d547bd9f5f06969c43b1da89  libstdc++-v3/testsuite/20_util/tuple/77395.cc
! 1ba7cab641e6b5f71182b1ec351ae20b  libstdc++-v3/testsuite/20_util/tuple/77802.cc
! 5d9bf4a1e7bb1f0503cefde94eccbf0c  libstdc++-v3/testsuite/20_util/tuple/78939.cc
! 6b237cc033525a7d5f237d43c8bc8c32  libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
! 46270ffa7fc71b2a7b0e2f2b77037365  libstdc++-v3/testsuite/20_util/tuple/apply/2.cc
! 2d00b67b184de7df9b3da08243fdd1b6  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
! 50f5ef6c83ccab9c9b4a4eb19206f880  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/93147.cc
! b83ca0ac40ea70f2dca7e0fe2efae3d2  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
! 521142005a79761e332c80f3eb3fe143  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
! cbbdfb59b20fecf9c36e7976a7e7b591  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
! 43fd64b5ffaf960180292a2677ec2229  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded2.cc
! b63b11f3e0b7691716b7b97386098c37  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/three_way.cc
  d23b1a747046dfeaadefce18d2c02b12  libstdc++-v3/testsuite/20_util/tuple/cons/101960.cc
  32c154912a091023741fdaa263538a86  libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc
! d61a2574bb2f78ba189fb3d3d976b60f  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
! f73a0d86bc346a26b596c982337a6ee4  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
! 9a6caf96eceee35edd4509647bec7df7  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
! 59c8f6d9ac2d9e7b653400a69b9f58b3  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
! 04d5b016a951e64132e76e4a53fa0f53  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
! 28aff53694501d8943a554469c0b332b  libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
! 4ff7f49ba2ee6d5f3dd695308cec0999  libstdc++-v3/testsuite/20_util/tuple/cons/96592.cc
! 261c55e5dc576d8ad689484da0a9d863  libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
! 14fe883a146f3fd0abbf504599bbd22c  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! e6068e02f821093821d4daf922dd4ff6  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
! e544ad28b09aeb12792f38cd8c5eee52  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
! b3402961306a57281a98418d723ef711  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
! f913085369c5eeefb8ae3648ed8221a4  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
! 91c8726d89cadcee70b46ee392763094  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-3.cc
! fe962ff68bf371fcbb4d4f563bfc97fd  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
! 19952d50a4aaf44626ca88697ab7d1d3  libstdc++-v3/testsuite/20_util/tuple/cons/constructor.cc
! eac2d4ef130b7db0eab037fe551fdb88  libstdc++-v3/testsuite/20_util/tuple/cons/converting.cc
! b1461e51a6e430651ac50d64fe40c6b8  libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
! e38c1e9ef994a0f5c8d5acfc3e8d5208  libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
! d7b2d467887c68acee74905c316e663c  libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
! 32aa03a9c1d3f1ded80ae5e5bdf0c5f5  libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
! 6259b7eb006784010e9bd6ca88e2d535  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_move_construct.cc
! 54a66fe8959f2b96e6008d7e5c80966f  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc
! 3823e2aa692a12fc88b600aab3a1411c  libstdc++-v3/testsuite/20_util/tuple/constexpr_swap.cc
! fb54fffd18d84328cf1560404e2ccc79  libstdc++-v3/testsuite/20_util/tuple/creation_functions/23978.cc
! 011e5b1558ac469a02d16aff21588e4b  libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc
! f02ca8e26606d6f4245a4dabfef306ee  libstdc++-v3/testsuite/20_util/tuple/creation_functions/55713.cc
! d69eb1003efac8161a03c5388b97fb57  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
! 6cf18437b6450e4358e7d2f39304a5e9  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc
! 49beda12b9229169771c953ae006198b  libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc
! abb597a70c4148d699835c7f40995e76  libstdc++-v3/testsuite/20_util/tuple/creation_functions/make_tuple.cc
! 9712f49d4709f6a440fe2ce8c711dc07  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie.cc
! 42e4d2703a02f5e9d381ad1dcb7dfe67  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie2.cc
! e246d9cc15bcf0808f855860d7f005df  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc
! 316e6f0e8bce43e2d4ed1fb0cbcdebaf  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_element.cc
! 8a3cc761c59c3a86b92278068ebd6051  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size.cc
! 3610794909d9946e62b52f94944529a2  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size_neg.cc
! 3eb70caa37d96b8708ec8904b1a035f2  libstdc++-v3/testsuite/20_util/tuple/dr2729.cc
  5c4d5220d3eb9f735e8817b5ea562b55  libstdc++-v3/testsuite/20_util/tuple/element_access/101427.cc
! aa06387b458d4cc1dd54112ad6892b98  libstdc++-v3/testsuite/20_util/tuple/element_access/71096.cc
! cb66a80b71f2c78042468e798771a89a  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
! d78ce84b54aa4bd6e282e65f47a99741  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get_by_type.cc
! e4aad9834f08809112c2ba742ffc971e  libstdc++-v3/testsuite/20_util/tuple/element_access/get.cc
! 081e511d4129fb8b1e58ce2f0dd33dcb  libstdc++-v3/testsuite/20_util/tuple/element_access/get2.cc
! ebde24bf3b9f4ba3f05ae96413105c36  libstdc++-v3/testsuite/20_util/tuple/element_access/get2_by_type.cc
! d7ca445e92703459bbcb11b55acf5324  libstdc++-v3/testsuite/20_util/tuple/element_access/get_by_type.cc
! 335bd8d9f86eb1d35d370a966045686c  libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
! 24158d5818cbb361e7bd8ce9d1d2e34c  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
! b329a37e010bc6675740bf08f6ed332c  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/2.cc
! 8594ab7307ff0802bbb3f5b5f8c73b1b  libstdc++-v3/testsuite/20_util/tuple/moveable.cc
! cd983bb6220427fabb7de5a1eeeece1c  libstdc++-v3/testsuite/20_util/tuple/moveable2.cc
! 92cbe52b62db9d73d0b3130db91045aa  libstdc++-v3/testsuite/20_util/tuple/noexcept_move_assign.cc
! bc297c5da29f1bfe43915435b8651f1c  libstdc++-v3/testsuite/20_util/tuple/noexcept_swap.cc
! 80565b1ee0a27fa84bd404d712012f6a  libstdc++-v3/testsuite/20_util/tuple/requirements/dr2367.cc
! 443956df49e2060e568fb024dbd017b3  libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
! a054e6411cce1b09883b334052d9d073  libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
! f63048a3c0d95229c0513a7dd3cde1c0  libstdc++-v3/testsuite/20_util/tuple/swap.cc
! e8b454e1d8b9b3f32998506b0ff9a8ea  libstdc++-v3/testsuite/20_util/tuple/swap_cxx17.cc
! b14c7d73e219263189c2926d38d532b8  libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
! 2cec4255d8c728daa7b53e140ff98578  libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
! 4292080e35ce15a3291344cc421ba375  libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
! 958e6308082a42c0f790e17efba3155f  libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
! 2e8903d01c81e655d5388c7200491a9a  libstdc++-v3/testsuite/20_util/type_identity/requirements/alias_decl.cc
! 4548b17aeb30a659a51de691056512f4  libstdc++-v3/testsuite/20_util/type_identity/requirements/explicit_instantiation.cc
! d598b03175a1c40eb9fd20bc806aa765  libstdc++-v3/testsuite/20_util/type_identity/requirements/typedefs.cc
! ee48df09b9bf73835d8699dc68c865d7  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
! 1fd0c557d72c7b2f4f0582c02591cb42  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators_c++20.cc
! f039c8401d1c507fcd2d194bdac9bd23  libstdc++-v3/testsuite/20_util/typeindex/hash.cc
! 4da071a4344d6e0c2b9c11b333c4dc1a  libstdc++-v3/testsuite/20_util/typeindex/hash_code.cc
! 6b22bb0562426e795902efaa31f97538  libstdc++-v3/testsuite/20_util/typeindex/name.cc
! 028bb8243b4178ee02f35dfc9a30d6c0  libstdc++-v3/testsuite/20_util/underlying_type/requirements/alias_decl.cc
! 101b8b957f45b12722b505ac77a14aaa  libstdc++-v3/testsuite/20_util/underlying_type/requirements/explicit_instantiation.cc
! d9972e8bc8d5738448716c060deedcba  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-1.cc
! 0827c4c84a626b47f655256f40297c9a  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
! 68e22403c5975585222254a6c39d7c58  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-3.cc
  270e7f9293f9dc29e06013f0194d2249  libstdc++-v3/testsuite/20_util/unique_ptr/101236.cc
! 6bc7dba37ecd36339c1e567ed62b6463  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
! 4e787faeee2f609bedeae1763729c5c1  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! 7a4c0a86e73df7563a489363aa32bbcb  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! 018b969247a1b09fc3578bb5e6e4a426  libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc
! 7f03cbcb5b1f45bf1c1aad0a4d2d8acf  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
  a766d0d5f6dc6dc464e72270fa1f0a04  libstdc++-v3/testsuite/20_util/unique_ptr/assign/constexpr.cc
! 0169cdcfce67720c223c59f41f4718e8  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
! 252b24c05c48df8e6e004fc99eca8f07  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
! d67369175da2a068d99e8c656a0b2ab2  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move_array.cc
! 1a0a127ced54b6d06b993641ecf145e2  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
! 464ceb6af8688e2fac4b41f341ab9a55  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
! 2af04f12a4a487cf1f6a50252b26e8bc  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare.cc
! 8ba1845bea13ccf9b5fc4ccbb20e42de  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare_c++20.cc
  1b1aed9aa07f27577b5d897361aaef38  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/constexpr.cc
! 5d2827b41f7ed03180a814973fba80e8  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
! 6c100262767e0952ca38d432a350a56d  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
! ff2f38c84f1c7b714401d77b7e9a7338  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! 39f7f911420cce0f55eb628f6b3de6d6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! 1fc27654c466a15fbed1087aa7f85ee1  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
! a81b5543d2edc514215ee89d8355a64c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
  4a51fb5c91ad1f904f7ddd98e262afd8  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
! 78e8aa88acf1289d3aa0c836c9525bfe  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
! 3da35b766e62c11d7fd77de7b21e3ae5  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 2afa460a3b6c67ea1e106f98867c9737  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
! 3b608b485d8bac2daf15d01a3d7047dd  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
! bd81031e8a80e98c13d5ff40c1c4f579  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
! 826424a90d3b6b66a1717eb82f4a9995  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
! 2f9e6963ad5f99d6aa3c62baa92a2923  libstdc++-v3/testsuite/20_util/unique_ptr/cons/lwg2905.cc
! fe1c947c4dbe13a05bb97e1c94d8c42a  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
! 757c288b883bdc41c79ad7851554ddfd  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
! 0f34fd4c60357b1f0fc97bdcd3bd8126  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
! d9807d459cf6750402c8e90310cf7fed  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array.cc
! a94c9ec97482f156169a1ed66d8a1620  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc
! c0008301de9e135c5a0359614d2c9f6a  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter.cc
! bbb7e8d91361816c5b935b7d6be7171f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
! 278c3c79ece2f91dafcb61e18fd3f60f  libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
! c1cd4a3f6b5b59a88032dbf805303d25  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
! 826674ffd67673c076a869791f2541b6  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
! 2792ef777902e600585d3d371995f27e  libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc
! 118eaf245c4bfe5b8fe9ec33499a7905  libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
! 1c0ba278f2dc6c12ee8e5ba060feac89  libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc
! d8442bac5982eadab8ea3614c54314f1  libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
! 885f41e25fd52834ab5f4aaedab6120b  libstdc++-v3/testsuite/20_util/unique_ptr/dr2228.cc
! b5023caf2a5da686f113537d42e19c69  libstdc++-v3/testsuite/20_util/unique_ptr/dr2899.cc
! 4a51a2afe3fff601821577bb600fbb90  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
! 34bef987ca7e4c2f69a9cd3ec7f69167  libstdc++-v3/testsuite/20_util/unique_ptr/hash/90388.cc
! da040bcd94e2c6125d9e7b041ee54b18  libstdc++-v3/testsuite/20_util/unique_ptr/io/lwg2948.cc
  bb40414adb587ca6cdd1ffd17960c9e2  libstdc++-v3/testsuite/20_util/unique_ptr/lwg2762.cc
! fa6a27ab7bba08baca6207599d27f2ca  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
! 617b7ddcde0f36471cb4e84b4324042d  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
! 4dfd93299f9dfeaa11103cb4626a0f8f  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
  1d95a3f0a6c651e10e0eb4266405addb  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/constexpr.cc
! b5e85ce0c4eff30a4ee2d92e633aacc7  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
! c8dc85a918bde635a25685212aff73da  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
! 4772838d28da45fc107bf413e4b9f03d  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation/explicit_instantiation.cc
! 648991d8d63af3bffd430a4fc1976cd1  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/incomplete.cc
! e1414f2d12874f7ffc1c2869d63e8906  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
! 2fb681090c9e77e65cc56de98f3634bd  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc
! 7a413d6d252d61d90fcc9593aba77188  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc
! 4f10d307c459e6245f73d7a674968358  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
  b06d4bee43487cb46ceadf7135cb4db5  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc
! 3aab85161c9aab2000fef947948cee02  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
! d4ee3d30ecf13f15512459f02094111c  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
  79ae7324ed01aba2f0a26aa803be147c  libstdc++-v3/testsuite/20_util/unreachable/1.cc
  39e33d60fe45843188bb85ba28c7f355  libstdc++-v3/testsuite/20_util/unreachable/version.cc
! 187ca6fe7c7bc034fe9081d96150a7ec  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc
! 623875c968424602a5fb63d93cfeaddf  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate.cc
! dfc431dde26376b1eb60039108b42198  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/cons.cc
! e6f04400b3dcb9267e0453dceade4443  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/is_equal.cc
! 5d28597d775c6525efc2d69a580866c9  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/options.cc
! b70e59f18a9d804442c7be8db192a582  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/release.cc
! f16cf73bd1b7068fe9da70a67229399b  libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
! f817ae5488841d0bc1b6905fdcc3e3b7  libstdc++-v3/testsuite/20_util/unwrap_reference/2.cc
! 0a8b0b79a3b40f18cc2732ff0b283a61  libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
! 83fb98fc13878319afd7ecb4d708feb5  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! 9e22ffdf845bf79d45e01d1dc22fcd22  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! b8b591b77ad686a588f294580f37722e  libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
! fa36025aa6492e4a8dc51e3cd991170a  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
! 6774df652f9a7d59acb37890ae0069e3  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
! 9ba22b64c06352261b4f4002bc4887e0  libstdc++-v3/testsuite/20_util/uses_allocator/make_obj.cc
! 00835a64d50ffbc9e1dd35e2581c3c1c  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
! e7662366f5175c46e9442d12e7fa01b8  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
! 6a7531ce1e2343cefa6c3d7a6794d8e8  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
! 841aff3ec9a5aa97b1e1e2e16d64dfb0  libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
! 8fa97f122a73373cf13f5a4e5f6ff32c  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! 08b4d4bb66cb636f628a57f6fea1190e  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
  b9698b5e78dcefad507d6737875a6a1d  libstdc++-v3/testsuite/20_util/variant/100384.cc
  5ef3d7df10dd90d995e4c63bc62c39de  libstdc++-v3/testsuite/20_util/variant/102912.cc
  909e769606f79e2311fe65f425279584  libstdc++-v3/testsuite/20_util/variant/80165.cc
! b4f3f88d2333d5af30d68926c53f10fe  libstdc++-v3/testsuite/20_util/variant/85183.cc
! e8feff0797737119dfbf7d9172fdcd9e  libstdc++-v3/testsuite/20_util/variant/86874.cc
! 8d2430e8413dad0e593dafae334e9347  libstdc++-v3/testsuite/20_util/variant/87431.cc
! 0afcef90ac2011c17d4deec8be6fde5f  libstdc++-v3/testsuite/20_util/variant/87619.cc
! 375ba2c7d8b7cee53d83e9017cb12b88  libstdc++-v3/testsuite/20_util/variant/91807.cc
! 6e73de8c6e6f102c365e047b32405327  libstdc++-v3/testsuite/20_util/variant/92878_92947.cc
! f107341f5e4815050cb12ad177e014ce  libstdc++-v3/testsuite/20_util/variant/95915.cc
! 4476c93202425082f03e7478ef88099d  libstdc++-v3/testsuite/20_util/variant/any.cc
! d7776c3f15568804fa01b0080c382a37  libstdc++-v3/testsuite/20_util/variant/compile.cc
  16902993e27490cf98e6e66c866b8de0  libstdc++-v3/testsuite/20_util/variant/constexpr.cc
! 10ab4f8f3fc093c7021a82bc5e3c46f3  libstdc++-v3/testsuite/20_util/variant/deduction.cc
! e136e17b927db6c3bda039c9aa164e1e  libstdc++-v3/testsuite/20_util/variant/exception_safety.cc
! 5624bdd9943b2ad0ae4d76c685809b63  libstdc++-v3/testsuite/20_util/variant/hash.cc
! 493865b6fc9ab944a00c6932c26ed6e5  libstdc++-v3/testsuite/20_util/variant/index_type.cc
! 4bbabcf0f2f9e5feb35bdd6e6b9c0d4e  libstdc++-v3/testsuite/20_util/variant/relops/89851.cc
! eaab82e4419226a60819aef32a14e661  libstdc++-v3/testsuite/20_util/variant/relops/90008.cc
! 05ff11aeaee8e9f4f47cf440827bbea2  libstdc++-v3/testsuite/20_util/variant/relops/three_way.cc
! a79b06c62712cbf135ba52345a1d3d7c  libstdc++-v3/testsuite/20_util/variant/run.cc
  b53ced7be024099d627a420130ddfae8  libstdc++-v3/testsuite/20_util/variant/version.cc
! a1b41e120f647f01b82b58b3a06161bb  libstdc++-v3/testsuite/20_util/variant/visit.cc
  271b1d4fa7c258bc0cfd32dff3784bd9  libstdc++-v3/testsuite/20_util/variant/visit_inherited.cc
! 29070ac324311538acd34bb4f5632260  libstdc++-v3/testsuite/20_util/variant/visit_neg.cc
! 94f929674b9aa5c0e7b7f96585b4b2e1  libstdc++-v3/testsuite/20_util/variant/visit_r.cc
! 8d9b6ac60824c56b6d0ed09346c3833d  libstdc++-v3/testsuite/20_util/void_t/1.cc
  7b0d83ebbf92b543b6da8bb8354c8d7f  libstdc++-v3/testsuite/20_util/weak_ptr/atomic_weak_ptr.cc
! b2b0c6b9f86b1efcb39de1f46c135626  libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
! 062912af6cc2812770b9f3df078e2f9d  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
! a5b18b777dd65ca7630d04aa157ff6b4  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
! 9b3fa66b4a5dc6f5f4f197cd9b003692  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
! d6cb1337e6bbd1947766ec249aac7c21  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 7d2e31f83947b9d059327be6985803ac  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
! 4ae446b5eec864c6117df0020c33be5f  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
! b7e19f90b8f12244a1a69e4a464ed93e  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
! 1853adc2a4cbfc16a08921ed39eaf00e  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
! 69bf974154f0966b52cb5f54aa8f45fc  libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
! f60a4e9a0c842a326ed685b20dc20d06  libstdc++-v3/testsuite/21_strings/basic_string/79162.cc
! 9e066b35185191ac526612a564b6490e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/71964.cc
! 144f0c8d5b2378811a85bf9b8a201878  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
! d22c0140436e7ce7f30ea817d5f56cef  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
! 190c0fbfca7e8f946e06aff1388d9cba  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/lwg2788.cc
! f7587b47c43e466ccbe81f9b51a19b56  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
! 0e868d69482da712aea5bad24a5e11dd  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
! cf4f7a524ae1ce0df238fabf3703ee3b  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
! a07664a63002511db6a14429e0b40599  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
! 30671f125bcdb09bcafe31145a4c34fb  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/operator_plus.cc
! 17db85ad6ab04713edf7479ce1438bc8  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
! 13afd8d5e7389d7307beb6c066e365da  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
! 995087fcd2a2d47cf76fe34c142156a0  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
! 03dca6d50c6589ff2251f142d6afd9c4  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc
! f718ca412a91d25d587881264af205e3  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
! e02580471158751fca6a695ad1b697a9  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
! 0ff7a5440d3efbc1251a9ad7e9007256  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
! 5c9df4344cce95de3ecf0ebbba676150  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
! 6ed9d253981202296319941405618584  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc
! 0188b0e7f1e3b6eb13720bca14b562f9  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
! f7d0f9129e0b14e1c3df4a90394eaa38  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
! 47a30bf063796d65f2bb5f1e0d3bc7ac  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
! e4b279a4f3b9abde058d6cb00a5c89ba  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
! f9a91331593aabe548c2fc0e48acb792  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/2.cc
! f3ba4193abdc2fa4d0bd35a950966823  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc
! 21a08162c432ecd45acdcf71514da2a5  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
! 6f776af274307bd76d3595e2bdead30e  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
! 710c93966d68c68a3e2b4606a1cd55ed  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
! 5511ce6451d8fc11cd2177e28e767cdf  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
! 33fbb68611c0d2796a632eb756426ff8  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
! bc8bf776e5ee41c9814d26072b74f552  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/1.cc
! 408950d5673e5a28433457ba820da161  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/103919.cc
  be058c3faf15d6649e949b8b50bc53fb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/105995.cc
! 7cbb90b06fb23bfb46f181effd3fb1d1  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/2.cc
! c3f6121645f290dc77eaea7e494552e3  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/3.cc
! b55f5202d25f64999f504ec867819f59  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/4.cc
! 08ea83445747fc86833f1cf6cab44bb8  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc
! 5f8c656638015bcbfa0db738e2f4cf5b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/5.cc
! a37726f50548abd99a1a88cbfeb01368  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
! 40712c1c92a5b6d8f0534814b60f6290  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/64657.cc
! e4e7eaba277df260cd63a10a5ccbd505  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/65085.cc
! 9dc47c4268c505108daeee75577db436  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
! ee8374f6ed4dff5562ce825d595134e8  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
! 5e8c13b99c8e4f81d78e7bec3e7d7978  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
! d3765ecd368e4d4a7150782aca33c98b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
! 9923a4f6bff7ce03babefc5481d70c25  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
! fe701bf7e6db6090eb7a8d42c80cb7ad  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
  199b6e66970aa8aeb06608fc2f1749bb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
! d8a8ae988f8dd15fd5cefbcc3ed939cb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
! 7edb18d383923cad26f0180d295cf52e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
! cfe046ef0b14b2a250992f636129a827  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
! cae96777ebcd9a16b4366e9b75766ae2  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
! 37acb0c9e0cbe022d140ff213f30ebf5  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc
  ca9ae628b034a9ec99cd3e60951cfecc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/nullptr.cc
! 521f89e6188716a6c476b8b53f486dcf  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/self_move.cc
! 48091b7b4822411279079316eb39f5e8  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/1.cc
! 08db2ffd68da7771e1b8eca01b74e844  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/2.cc
! 70a19b3d0aca713fae3eb4bda3f4cf4a  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/3.cc
! 0e61409fc897d7eec9fb27e10ad480bb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/4.cc
! 056bdad291de458c53c8c5825168c1d9  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc
! 00ea99a667f36d599258b381c19dd8f7  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/5.cc
! ca8ef9354f805bc5ef2f22c03ae07839  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
! 8396fe750fc430e9b40ed0e456a31dd8  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
! 5e8c13b99c8e4f81d78e7bec3e7d7978  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
! 6e782f62f20ff1205d5a50bd26ea2d07  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
! 2e611fd9e0a0fbaba62214065506ef08  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
! ccbcffc367ad1001ee745757ea3e7f58  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
  09bcd6e3dcb9e2010d343ede95760d66  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
! bab1fb1147866a9580a5c497d4ecb129  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
! f34383d9f137c7f91086e8ca7b33b53f  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
! 8824c21b868f81c6ab0b8e60cf3a4e8d  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
! 3568e15bc4fc7cc3919a756b746adc9a  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
! e5d11a84955cbbd2a41d252e94728cbb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
! fe8df34e7e956966d4ab05215898b7fa  libstdc++-v3/testsuite/21_strings/basic_string/debug/1_neg.cc
! 7d7db963d208ac9dbf82c8d4a060c8b7  libstdc++-v3/testsuite/21_strings/basic_string/debug/2_neg.cc
! 2efcfae48d0c739b1110d978a52c6825  libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc
! 48ec9c825af99e060847c5dad5484f93  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
! 96342f06da20e07fa8c3a9f73a07e977  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
! ec8af0546d04583db5b75c277b869622  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
! af5daa2183799aa244ad36c2f908d013  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/3.cc
! 9364367ae3f9951b1bb9b1d6404c4bf4  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
! 27ec88443ee29db96d2fc3d06a7467a0  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/58163.cc
! 1dfa704fcc30764c6cf102cd1e2d5140  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/empty.cc
! d13f007709dc7920a88bb522336ca93e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/front_back.cc
! 7737d9357c44892ea004873e29c2a33c  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/1.cc
! 9b4b0ef2467240eaacfe9d4e48d1719a  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/2.cc
! 3e86106b4a24386a6ac33f7b93199d06  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc
! 708358ca090eadb380cc8830663b2e1c  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/3.cc
! 739a344c53e36ba180d7776aa941e8be  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
! 47e38805802a5604279026532ef8bd0c  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
! 9dea7f9ca1cb7e7a7860d9f287809709  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
! 9eb288fcaa8efe8e0315e8747420edfe  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! 31a3ef960061ea1e91824c44f67a5234  libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
! 4deab1ecac0627f68a6c0ba1b87ffb0b  libstdc++-v3/testsuite/21_strings/basic_string/hash/debug.cc
! 7678de463e421250b97195a8b36e7612  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash.cc
! 888022820b59a245fa242f989468256b  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash_char8_t.cc
! 652c80cc7747728245ab2bf57bc4b785  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
! 257fd28eeadc295699c3963cbfe8816d  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
! 8570b487ec9eed0bfdb3b94b24d66732  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
! d0a79f83ddc13b6663b8b1ca6ddb12d6  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
! 42379973127e95ddea9ebe309164f35e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/12.cc
! 3b0c2483649d4f12e723de5508a73b12  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc
! 18b9c31d5409afac4513835e31089b42  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
! 1f5e4c6d586e2556838b31082958cd1f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc
! ab0301091aa34e122345ffdd88b5587c  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc
! 3a6e8f531fe8925439bc86bb8927a2a1  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc
! 8ae370e4dae12f54b9d6bd3a007f8f81  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc
! 0176efc9a47663fe9617d06b3fd35391  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc
! c485ddd2a1a5c416f5169e750a204589  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc
! a6f1f8c2a6e79c741b288b5b3e444840  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc
! 2327c19657753c58e10eba9f9cd97d5d  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc
! 18927d02a4431a9c3395c099b5a79cef  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc
! d1e23be6050b3eb9a5366f7480fc8762  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc
! 5d709916a8c151b9535caf9477ecfd13  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc
! e94075b098a1b8052ecab633ae36cd48  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc
! 5451d5d8b986b4c7ec823a616822aa9f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc
! 5b5e377395d9070ce692f452c9b49682  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc
! d9b7049d0bc281d4d6b997bcfb0cbd6c  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc
! 811a9ca93201a7db98c79d660f12e838  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc
! 690aaf3be0ff8193236a5d76daa9d8fe  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc
! 88bc9ff474bfbdbd0119c0f760cfe28f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc
! 1d940d48a9d114ba40b01614d02a86ce  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc
! 15e349127cfe6c92904da29aafe8872b  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc
  29bc247b1aec33f010caa020c32d9c38  libstdc++-v3/testsuite/21_strings/basic_string/literals/constexpr.cc
! 440491af6df958599b0438cfd2262b3f  libstdc++-v3/testsuite/21_strings/basic_string/literals/types-char8_t.cc
! 818415665064f593c3b1ab257d5fb5d3  libstdc++-v3/testsuite/21_strings/basic_string/literals/types.cc
! 6e6e0b2897a9bb9dfdea0ffb1216899a  libstdc++-v3/testsuite/21_strings/basic_string/literals/values-char8_t.cc
! d1a6a0b3a6fdee2aa9509f877d5bf031  libstdc++-v3/testsuite/21_strings/basic_string/literals/values.cc
! 15e186e3bbb322d635a1c649a2ffc012  libstdc++-v3/testsuite/21_strings/basic_string/lwg2758.cc
! 79f6040a05e12b7c011b9a67e7b66fa7  libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc
! ceac8fa55f42c38d927b80db87cdf018  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
! df8f64945b2195621d764881a7389053  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc
! 29deea3c7e88998abe5911ec5b68ed65  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc
! 197a8514f068b7b027e0284afe30a749  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc
! 168e80ca47b4986c0bd509003faf7c72  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
! d7b639f98887f00296ff87e5fed31ba5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
! c58cbaf6f5033eef2e45aff2005f3c83  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc
! 515c32e545c0b3e6fcfb65cfdf829bff  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc
! 3d9a3bf0e81c8f0f6787c485c12459e1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
! ec93b90cc192af029c2c2aa9e5d013e2  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc
! efd612f944f5d8fa79683e5cb05e2f29  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc
! 721d97b0f157fedfcd221494341e68c4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
! 655baae64b87b6b61008669159d590af  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
! 788efaae41e1882343d442828b84c33a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
! ffd31ead883604d578c676dd52ab7d1c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc
! c2678d6e84c962fe7a53f818b92a2f44  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
! 197214ed7a2b7d134466dd89d56ab689  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc
! 2ef009b65ae256665f3efd1cee7bcbab  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
! 44786e377044232201b3666ef0ed4e98  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
! fb3d1413cb1ecbf1e5fc271b91ceaf00  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
! 1ae370ef8943fffef4a82aceb5234a80  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
! 450446de8a41ecac0ec61fd2599f96f8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc
! ea9dbc97c326f3e2b99d4041d3ded4e7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
! e1421466000f40f3ad850ffe0dc218ec  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc
  ab5b8c708d26d53aaa55a1f2cabf99f7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/constexpr.cc
! 9f5a3388207ebd75d04a0165d783e697  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
! 8a8bf083277102fbb42ea6e931358cc1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
! 4e8f83a176ae80baa522dfd5bac67360  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
! b228545ece908981c9ee2eaab981840c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc
! 2d5d1d68a49aa998fada002fad732da3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc
! aa88106eaa31a4b62d8f93c2d91c538c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc
! cce4cc5a6a439b40a2b0665fb09a973e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
! f68f70f8d6a345a5da0812e170824deb  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc
! 3ed1c5b36a88299edef5724de02ed161  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char/1.cc
! 124103f2d3f3554c4b9f9dd9cb9ea783  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t/1.cc
! 85f63f92c5b0de8b63db9f469b1632e5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc
! 965616e15bfe4c1fdf8b1369ec8aef11  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc
! 527f1d0787919bc638ba9768d257c764  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc
! 184d9ea427df8ac2c7505755ae11ae9e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc
! 94e7428b977f064121b544c1cb162cec  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc
! 163c810e23015c0bd2161f53c5edc388  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc
! 5b81180b3c4a8bd6e04e8e56259fc2dd  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
! 298fc4a44910bd07742447f1654bed0a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc
! 18d48c8befa9f02412d075e12e993d62  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc
! 108f27edab92972ef94b956421405d7f  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc
! 97895e8f21ab7db82e76ac48b793bb43  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc
! 87eb648260b89b7f8481b97a141a13b8  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc
! acdbbfbc23c50bde42d62e9047973e36  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc
! 8c03ba13f21aa989a64300bf1d1c87c2  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
! b6f0bc9dc3c3a1742183008805d55c76  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/swap/char/constexpr.cc
! 99d550ee8bc0db1851ce8b0c5391ea1e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/swap/wchar_t/constexpr.cc
! 2ba5e152137db3d56048f0b0d1bbae56  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc
! 2699185f38ede5070566dc2404139ee3  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
! 14e5c7978143e3398eb1338a05eb90c4  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
! e3aced2bbf202d6c8e121279cd7a6005  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! cb0e4f4a92f6ffe89e501c58e39486f0  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! 6ad0336e457cfc99e2132f24e67423ea  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
! bd37cc774d901f5aa4f552f4914d7b7b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! da1fe661f16d4691b9afa761b56d6056  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 71298b41c3c7aab6738bc70d06057a60  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! 2c273ce5a2f3f423ff17315760034c3b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
! 2c1cd09114dc9d2f752e5ec365243e64  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
! 3e91a39035b77b8684f936b086c3bcda  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
! a82c502e83331535417090ee3ff2c0eb  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
! 96682c3cebdac07a3ac0979262952753  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
! adde10c79adcf1c86ebdd380ad21a456  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! 4b691e8451df8d3d5827eb3c49354ff0  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! 9bb138c761bf008bdfab43973e094898  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
! fffcadb54cbf278db02d51ae9aa31b4e  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! df8be2644772937400026314302d7922  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! f6f3d94bcd9c6bd9ca7ec921539f0f5a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! 551c1bb19a94b6ed80a0c433b21e2809  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
! c25a5c2fbfe6b8cb7af3b1e8bd71cd1a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
! 0359112c4f4fd84f6f4d17fa9f4d8fbc  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
! fda51f980a2a2be7b062244360e316d4  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
! 44ec2afd9242e4396b77ee367dd5996a  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
! d8ef5a311108ec7546ce37e40357afaa  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
! 35d30f57622efd1f4e37da516881dc0b  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
! 58e3a6654a370f369ef326ea87e2d069  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
! 3ef1d98d026bbad63eebd9a4c834bf9f  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/char/1.cc
! 4037ffffa4864b64545a27dc8f1cf9b6  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/wchar_t/1.cc
! da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/1.cc
  9ccbc06738d22d9f941b8f2b369c7915  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
  fabf5d00ed38687c6c74b03d67132fac  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc
! ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/1.cc
  ebeb1bb794a93823182dc633b65b1594  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
! a54e339e340369ad1d09ca0228ce9b2e  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/char/1.cc
! 0163c21435bda1295a8b12edafa6f84e  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/wchar_t/1.cc
! 5c96a72f4498b236d96862b9036b44cf  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
! 2f29aaa3f859e223e8146892c952fb63  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/2.cc
! 79b10aede950115fc9e2a9a84c72621e  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/3.cc
! b30398dd69d12fed6e8cc67a1b479651  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/4.cc
! ecb0354451bbb45b783a1d51625ce0de  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
! c037b18f1dbb40dd926580060e494be7  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/6.cc
! 9274f916ca29cf27ccf5ab4da78bbe99  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc
! f428710447d9e9990d6828f774cb9b40  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
! 64e800f452ac6d9cad2939d04b35433b  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc
! 0517a2ce1d8656b9c5fa02997b40561d  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc
! 94a2aca719103cebd758e2147e28076e  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
! cba7c61eef9d30a6f1e447bf52df570f  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc
! 97116681fb38a6f0a1a98adad8ecbc53  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/1.cc
! 5f7548827ddce09b999bfb77f44b3ffc  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/2.cc
! 3ff3679fabe9252b47b8a9a0d26428f2  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/3.cc
! 5b2f9168206daa34505b141a7fbfd411  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/1.cc
! 73ed9667363a49a2c1f8444899ff4ca3  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/2.cc
! 895d6225183244ba267190dfed9c360d  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/3.cc
! 0e7a8462d6f9f62da1dc647b8efa1532  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/char/1.cc
! ff81f1c744506e0bd414e6ae0b02d93e  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/wchar_t/1.cc
! cae5a283faf11838b8f853af07ee45fe  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char/1.cc
! a7324bc2626c675bfdd12f2728dba6db  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t/1.cc
! 32ff9b5c160a4d161932ffceedd2ea4f  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
! 8939ad37542016d826054a5448ae681d  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
! e26367425e460155dd06ad710bb01a48  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
! fa039fe93bd5eccdf744381a010921ab  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/4.cc
! a6457c97b314a04d6b4bbf026acb73c5  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
! 3313eff773debdab08ac090187cb6d55  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/65630.cc
! a8ca973c7eb07d7caeb7bf4adfc3cf0e  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc
! 3e95f5f5d8cc2e5f1c2a21908d915afd  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/1.cc
! 08c445d3aac87030039a0b892ed10c4d  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/2.cc
! 148b7e58c71baea70c91bd6c5dbb82b8  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/3.cc
! 34073c0684bc8bbd11df67f81b47c06d  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/4.cc
! 42b51ec1c71ae9332435141ed6150e61  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
! 6223ce4f6248b4e18fab4394984478a7  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/65630.cc
! 0fa640bb9cfa8f863ec030621d458c28  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc
! 47ecddce081db7735cbe7355a00a707b  libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
! 31815062a7e578e2e1e58ddc91ec9bc2  libstdc++-v3/testsuite/21_strings/basic_string/pthread33394.cc
! 4184598d7ae173c45e7b3d24f81c77da  libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc
! 437c8bb19d15275ae12032e36490c469  libstdc++-v3/testsuite/21_strings/basic_string/range_access/char/1.cc
! 2176a23234a3e630a03b436fa12fdaae  libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t/1.cc
! 8df949bdf9e6838e84f38f22ee079d33  libstdc++-v3/testsuite/21_strings/basic_string/requirements/citerators.cc
! 242d46da5d22699131166292ef6ec3e5  libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
! 2b30eb52663f6613f2daab834b0e62ac  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/basic.cc
! 149b6e902b093e426707dc3def7e0b5b  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc
! b9639eceaebc9bf59f2dc965b72dc70e  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc
! bb1aca407f28d0993775103ffbf7d8a5  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/1.cc
! 0653078acd27a89f055bd66481825b27  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char/1.cc
! 501badc7f9022d4c9f9ee9354f152eae  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t/1.cc
! c9128e106c70899ba2e7a7c9df11cab6  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t/1.cc
! 0c6aed5877c9e47a18e7a1c9e52da8c3  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t/1.cc
! 494aba950f130a1f3dcaf434fbacf926  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc
! b96b3fc8e1b19c7c580b46d4fe07c3a4  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t/1.cc
! f034eca3ab9c13630d58814a21812a92  libstdc++-v3/testsuite/21_strings/basic_string/requirements/typedefs.cc
! 5130831e9e9477478ce842311f00e362  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
! 9c434bb6875f4d87dc8d689b79d59712  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
! 170f992b703a68763bb2f006e16cb444  libstdc++-v3/testsuite/21_strings/basic_string/types/pmr_typedefs.cc
! 6f3523453ba64bcabcd98a4202a8d007  libstdc++-v3/testsuite/21_strings/basic_string/version.cc
! 9b15e2b31c1e1ba1f7fd03d39c018b54  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
! e828c8674c0b07c502cde16c19c50db4  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
! b11d0df57f224d847aa3d0cb18f8f4bb  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
! 56ac7b0da9aa71ae7cb950b3bb4d7095  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
! 3be6aa269cbd95b653b6ea8205b19c8d  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
! 8a5aedc5a351256b6af8b9d145c6def8  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/nonnull.cc
! 0b6a2443178aa75da3ceb62696d49e66  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range.cc
! dd73b87ff09b692a47a9f72f5fdfbea7  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc
! eb0cd7f4dc47b332e4b989164dbf3596  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
! 19abc9659deed856b266404089b4a97f  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
! 40bb94b540026ddf7f8657de7554ab2d  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
! e26edf9d921a7ba6d7d719a5e60bd472  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc
! 70c18cee988dbc78964b72ba9c7b52a1  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc
! 33a72c1b879b7f225bab2d6798ba53df  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
! 82d6917465a3bdbb78d67ae494174910  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
! f51217ab4eda42699b30463d9c64760f  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc
! b517e81b8090c5572f5b8dd1a95d9ab5  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc
! 317524c6a4a2898b6dbce03e4fef9c91  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc
! 9a54200fd4208822f512da55b7edb9c3  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
! e0dd1418620154b48b2e1bbed292186d  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
! f127cc9f0a496fd404233e1ce688ebf7  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc
! 29385b5d159503396f56cab63ecc528d  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc
! 0a5b3fca71349b4ec5d4abf930366874  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
! 50c1a8d4dd434adab29c8647c29779e4  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
! 909b88f10e95e1e80f1f18ae29d1d7be  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc
! 088c6fa94474d219bf23b9b5c0745cef  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc
! 5231d74ab051cc151021737e52358d27  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc
! 79d89b8f209d699cbb8e81ec408f72c0  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
! ef565e4ac8c1439340119c77f194ba70  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
! b1974d7d29ec1f1f547839b1560a523e  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc
! 3816f75e5778de7bd67bc28f84eac803  libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
! b297f009b4cf7be2796f9e4e390b8186  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/94051.cc
! f45cf4cc3b763769aa5d9fb134db8ba4  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
! 3170f7d21ee0aff7aa8dcfb67545b651  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
! 66f50382b90e9b1792d53274b802a53d  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
! e897e7c292a13ba34b11356824f812d1  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
! 2b5c84ce6f19614762b0e00c102b664e  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
! 8a9b9b1b865dfa1b8c59100a06a67850  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
! de6a49060931c8fa2263121e5ea048aa  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
! eb8cc4151dbb7c20fa8049925aa4c35c  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types-char8_t.cc
! cc2f020563c3847b68e798d098126ab4  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types.cc
! c49dc63272bc485aa7a87cfc078d3242  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values-char8_t.cc
! 7e6023e76cf2d41e8d67c2521c34f0b1  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values.cc
! ce32a948987ee0257f6c1c20759ae9ba  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char/1.cc
! 64971260c3c99f4bf03ef94b5547589b  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t/1.cc
! e83ee45f270b4b9df21249b1f4d6d528  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char/1.cc
! 6b382b94f0a3a85d2b7a04ebb5c95d80  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t/1.cc
! 29069c42f8ea2f8510d54827fb9ea605  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char/1.cc
! c212a698edf0c7104ba92da18834aece  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t/1.cc
! 7b5d61eb13b32cb5ad6886786f1ecd7b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
! 3de12cf3ce843746022b71cbeb7b84eb  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
! 0d8c4eeaba71e98d7b38b0f525845d3d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
! f6f4fafe472ae846013760a73beccf13  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
! 05e3d836f29a74307d2fc7e53ae94aab  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc
! 7d2222ddf58a01ddfe30133bd1bf1878  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
! 7d0ea0220922dd654f56906bb1b3e55b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
! e3ccb8d06404b0889aea92cdc6ddb89a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
! dbca2e557dd4a2159221e1e56ea665b1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/1.cc
! 30643050aafc25d86907d926f84424fe  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
! 495bc351071e2a6ccabe5436fd74a6d2  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/wchar_t/1.cc
! d3e0108353457d8918577d830f4dd803  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
! 129485da60e5f466cfa2a7d45872c670  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/2.cc
! 857a6e3a8d037686d78b7c10d2382ca3  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
! e9761e551064b1c12503db442864d619  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
! cf13e61193a59f8f171e40395b496a84  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc
! 8849343a2f59180abaff8e0b1a764813  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/constexpr.cc
! 49684812d0e6e538d983a81cc02ea19b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char/1.cc
! 3aca8654c80e2a1ffcc111b84f41adec  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t/1.cc
! e7fb613952549d5d2c1fa46b70cb0750  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/char/1.cc
! 1f54fa5ce2ce97ac32379540789ab1c0  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t/1.cc
! 5bfeb4d47b713e40434e1d011dddf696  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
! d8b589f412d99162c5a23fc9009352f1  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
! b0b945b2e49fbd837e43141457f8528b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
! 0acf05c8df4abf359237c460babba2f0  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
! 2cd44b28f266baddfe96323df48e9b61  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc
! 7c1c57544bbf28253150def354d9e9b4  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
! 28a8eaba5797e15a1643b5088f1a36c9  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
! 1c8427310124c8f52b67ad6a3979ab75  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
! 00c200887482bdf57602b76f81751def  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
! af62296c05403a3cd9e6eec634834ec4  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
! b5cffa7e647feddaa29af405aa61f632  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
! 534c9b067caed180aecdb852c15bc29a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
! cf2271c72872f5c468d708e08b0161c6  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc
! ab61ebbcee455a63dd6ec2c0736614dc  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
! 16ae39b4b27870918e13f4e6ef11396e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
! 8decfb9b02bd633330d6331819bf77a7  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
! 2c8a6e49c656a44ee95e754e5f037c91  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/char/1.cc
! ae44b4fc126f804b9d4cd5806bd4cbc4  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t/1.cc
! e2430948464141d96e14ad2c6691a360  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
! e849cbd4574e32b8c229d4a5d5659f18  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/1.cc
! 456f60559e52b6096108678ade4617f0  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc
! 236fb4260be73e1542d3b6bfa4f5ddf3  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/1.cc
! 6a0e82eeb22e26930b8c8a76f089e84b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc
! 42472cb1b8e9e26b3269bd168b3e6e96  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
! 8113071695893466c9b1ceb54c8dd0ba  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
! 333d574b7c44681a162416268b67c42b  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc
! 6f30a3b02c0959156fae18d5fee78dc6  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
! 632ba42f0e4b46ffbe281f8bb8757c62  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc
! cbe8dd34cb38d056b20592fe96d50940  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc
! 87b091d917d49fa6803a86332978503b  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char/1.cc
! 59613cfff730ecff9fbe648806724a52  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t/1.cc
! 5488c0e01e7a8f718c28c80e78fc8bc9  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc
! 472109e766809cf9917850d6a3215919  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/1.cc
! 9f15745891255540ddaa15d6166b9c46  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char/1.cc
! 0456267d6b8864d4a72e8f239cb5299c  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t/1.cc
! 0c976497a58b07bf5c4b38892b163dec  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t/1.cc
! 59f6a4af8028bc2c6c8092042f482af3  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t/1.cc
! 9330ff7fb30c5dcd7f34ad6c9af9720d  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t/1.cc
! 315e59bf71624bfddd1704955e8f5026  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/traits_neg.cc
  58947d8735c23b82574427ce2851e965  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc
! aa743a3bf573499c0785c35cd42e85fb  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
! 847f86350f5eac76fe17cd432a64f4a5  libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
! 2d9e8d751d3e458bf070d211d6afef49  libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
! b5684c275c956cee9f797a9f3ad5626a  libstdc++-v3/testsuite/21_strings/c_strings/char/1.cc
! f9218ebcfbd2487131e1696c75a12702  libstdc++-v3/testsuite/21_strings/c_strings/char/2.cc
! 8067ff693da58ea31b058b369ade3b79  libstdc++-v3/testsuite/21_strings/c_strings/char/3_neg.cc
! b585a1bbf03dd84e79127526e05b6b7a  libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
! 247d397b669dbfeac318a02fab07a57e  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/1.cc
! f93ec43aa4dd8a420a7ece2440e0666b  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/2.cc
! 22bfc5ed265e4143ba00dd09c45ce88e  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
! 2ec63f6752702d324bcea6556ae1bfe5  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/3_neg.cc
! 2b5c3fe3f4e29007d663c0c64a31ec6b  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/1.cc
! 6ba9605ad5b8901d814b619f3e486a3c  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/57704.cc
! 6ca3d966dbea1443e11d0455e8b8a6bd  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/65049.cc
! d9a168e90676d0cf9626ee87f9a83e00  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc
! c95d8c8f73d096e8657eeaaf04eb9c43  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/typedefs.cc
! c0a0569fc3317b91b7c10a997192eeca  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/65049.cc
! d6291a760efeb181f4f018219363c895  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/eof.cc
! f7038044d6a5d36dab2f976e0a4102b0  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc
! f0ba13df2f1066eef5307b68cb343f00  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/65049.cc
! 5db911ad0a6f3ca2cf7adabf363f391a  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc
! 4084d5fb14ba0623e26679ae2e48d1e0  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/65049.cc
! dd8639279f9d4318034a734e8c0574ea  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/typedefs.cc
! 4213c3edd1aeeef53c98db1425196f76  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
! 278c18947d9dd6b63507eca2b33d2e27  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! b78e512bdd889931d125be01d93dfe44  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
! 5cac6494aa866450642cb1dc96351ea0  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char/1.cc
! 114cb82e16446ce03c6f3043c618f762  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t/1.cc
! 24e2a23e1d1129cb8b843c8bbfbe0db9  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t/1.cc
! ebaba349c41358bb17d61c75cd449410  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t/1.cc
! c9253140e8550fd9921cc4ebd90925e0  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/short/1.cc
! f51015e2d81d0c89d1f531b8210f5efb  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t/1.cc
! 7d86a29a874dbf68020f4247207b352e  libstdc++-v3/testsuite/21_strings/char_traits/requirements/short/1.cc
! 5eb7812f69f414ef3a35a89be9d4dc1f  libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
! 0c6573642fd3e80d05adf2ae8916cb7d  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
! cb534eeeeda4b08843416f81c4acd36c  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc
! da9596c9e98fb88bdb3ba69e6a5c59e7  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc
! 112defed60f1bbbca79e45090188e99d  libstdc++-v3/testsuite/21_strings/debug/shrink_to_fit.cc
! c2a11f02580776a6d9dee8d49892b719  libstdc++-v3/testsuite/21_strings/headers/cctype/functions_std.cc
! d23c60a2def8443a46a1f7d76ed9ca40  libstdc++-v3/testsuite/21_strings/headers/cstdlib/functions_std.cc
! 522a0b73ef1f58635f5ed975743f1913  libstdc++-v3/testsuite/21_strings/headers/cstdlib/macros.cc
! e1fabffa25a764659d7ee8a6a7419f68  libstdc++-v3/testsuite/21_strings/headers/cstring/functions_std.cc
! 522a0b73ef1f58635f5ed975743f1913  libstdc++-v3/testsuite/21_strings/headers/cstring/macros.cc
! 69b9227089a73c5292f236ffe75764b0  libstdc++-v3/testsuite/21_strings/headers/cstring/types_std.cc
  1c6d34d6c23ccae8874ab2004b5561cd  libstdc++-v3/testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc
  bf5af2094c9ef74f8a08d7d077043065  libstdc++-v3/testsuite/21_strings/headers/cuchar/functions_std_fchar8_t.cc
! 0b5dc2e5f44cf92225c2253f0a390b03  libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
! e3e3e47f2371c0345b295cf43164f392  libstdc++-v3/testsuite/21_strings/headers/cwchar/macros.cc
! dee88ef34c4a38e8151f828a44e859b9  libstdc++-v3/testsuite/21_strings/headers/cwchar/types_std.cc
! 0b68791b35c4994d6d0367aa85963293  libstdc++-v3/testsuite/21_strings/headers/cwctype/functions_std.cc
! d7d85aa9c02b9847e0abcf763327b206  libstdc++-v3/testsuite/21_strings/headers/cwctype/macros.cc
! 221f9f1b91bb17b2134076a18cd11397  libstdc++-v3/testsuite/21_strings/headers/cwctype/types_std.cc
! ee27fe4db9a08e2dd5674bb647c54361  libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
! a9b3a7c45fd18a38bc7a5801f3c9ee87  libstdc++-v3/testsuite/21_strings/headers/string/types_std.cc
! ea8b0f17dbe83d0cea3b8873c0e54f49  libstdc++-v3/testsuite/21_strings/headers/string/types_std_c++0x.cc
! 6a761f12ec0c1a6b3d4df14401fc952e  libstdc++-v3/testsuite/22_locale/classification/isblank.cc
! b9401d45e8f0e60a0631fbfea8bd56b2  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc
! 476ab925d0730e56c1bc3b83e51dc7a4  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc
! 7f6382d8024e826ccbc9834173b014cd  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc
! 6e8e231531ac5cc0e2143a01b10f537d  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc
! 3ab3220fd22df074097100ddea5a4ad6  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! a8e6b7213cb563f803aabba9861cd5c1  libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
! d852212d2ead3d526429dcef2df15959  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
! 2178238c43cb9063edb4480912809fdb  libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
! 03932ee68bfe475d06d1cf860be50b52  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
! 176b52905d389a9d85a771637808db33  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
! 18d58fc402135cc84f5023d5b9344936  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
! e604ead22a0915a67aca53d9e6c88142  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
! 7267469d4d80c1fd5bf98e0d9b5ff286  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
! ae24aca6aeb744d1e4ce432f902e9819  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
! a3ad58f9bb677cd4a3bd9441a3bb47ba  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! e30b886584effa51289d0713da5df7bc  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
! fd60f055ec6550449ee1baa3334e1560  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
! 5fe72a028d04d236dde761b6227c7c1b  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
! f0c5f67a904ed9bbcc959f54c306316a  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
! 1b1a4328cda9fa902108a0136eb14b19  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc
! d7157a6a5b0c08c300b76152de8e73ed  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
! bda6624cd62d7e0367293094350e86d6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
! ffca930465fa2d25e2d19aef4fe7fa14  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
! de984936a9f0ddacf30dc1a18ecd4959  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
! ed8959b016f091cfd79836ac45f74fdf  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc
! d10394434a33f070cf6e3bf3c3c7961b  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/1.cc
! 674bf98ff92ba96abd4d7bcff0885c52  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/2.cc
! 81894fbec3cd4fc18649518f4c25a260  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/3.cc
! 828ecee7ea2430e608f1c1b12cce2ca3  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/4.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc
! 5550131f5877b5d657a0cb744df35cf6  libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_locale.cc
! 4d46bdb87825e0d2e53e190f310089f9  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/1.cc
! 441e33a0dbd96e96bc1a9f30f3a4add3  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/2.cc
! 76d62d95264e5dce1920466e912e753d  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/3.cc
! 7d1593ae618c21eed2aee9e0e3e65612  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/4.cc
! 5773a63c88eeb9330cfe3057409ae8e6  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/5.cc
! 5af67aa2ba35914f540179b6143e9ebe  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/6.cc
! 5bbd7d598c99156e9eaa2bfad1d56a1e  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/7.cc
! 207ea7001e9d675b96c3f5049b4b9e1f  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/8.cc
! 0bbb007c1e2bdfadc6d5abc66a76f677  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/9.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc
! be890a46331f0aed104126af6918d78e  libstdc++-v3/testsuite/22_locale/codecvt/length/char/1.cc
! e247c32008d5c8df449404dd51c35bc9  libstdc++-v3/testsuite/22_locale/codecvt/length/char/2.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
! 78ae7a251f87ad398d4b298e94c14e9c  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
! 6f347ec5b175f6a846233c6c1c6cf818  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
! 06ff829affd5dfc8b6e58bb128fbdcbe  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
! 80ff02c46a5e00e68197c2bcecda8f1a  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
! 74f87378b85c496c05a5a10cdcf98451  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/5.cc
! 5b7969fa61a13bef8ace1e79a5c30cb0  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/6.cc
! 0c887d294ce57bd8953ff1201d023e73  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/7.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc
! 1a28942f6f712c12bcc992cfaf3b495e  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc
! 6babdebad70be6e1a4feb7c896a76906  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/1.cc
! ad2d98deb348608d070dcc5a26ec7169  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/2.cc
! 49468d8cbf7ba2c563556f1172136326  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/3.cc
! 8fe294b517cbe1be26a24baec932ab73  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/4.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc
! e1fab64483201a88ed8ef3fc2353e5bc  libstdc++-v3/testsuite/22_locale/codecvt/out/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_locale.cc
! 520e6663815f6d95391c18dd5269562b  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/1.cc
! 535ae2a0a19a1afa98afbc2192455385  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/2.cc
! 04025bfb59c13df60ee809822a8c2bef  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/3.cc
! 7ba36d346746180ec58e4b8a9039a9da  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/4.cc
! 8b18d82af89c85f58df5bae65daaa829  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/5.cc
! 4859622fa39a944541a40c8402030b69  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/6.cc
! 504dde61cc8aff02060267d96a3a5421  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/7.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc
! 9baea5c162ff63c345b252efc3a98e3e  libstdc++-v3/testsuite/22_locale/codecvt/requirements/base_classes.cc
! f5ceb4a6d3f8b75ebb58efe28c556d41  libstdc++-v3/testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc
! 22a33f05cc758f6dfd59d280a2a6dfdc  libstdc++-v3/testsuite/22_locale/codecvt/requirements/typedefs.cc
! 3facffc940484923159e61a62930d2b1  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc
! b430822362fe6b634a6e00c81c469b6f  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/1.cc
! d540d5a6a7f1b77e6f2366354e1f3bed  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/2.cc
! f4adac336be3c7ed6d141eff0e9dcb58  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/3.cc
! 5710258169683d13da6bf27e70c9fb2f  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/4.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc
! 1d9c8f44736fa579a2a551d7cda70427  libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
! 7225769842e907099146c3233919e623  libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
! e46cf2527d67aa73ae6420a8cb6b7040  libstdc++-v3/testsuite/22_locale/codecvt_byname/1.cc
! 675d68282c7bca3c48d0d6d45bd1ee30  libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
! f275911c457f25117eb3e5b28d87dfa9  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/base_classes.cc
! f223f962bb169b1ddcc3d9228761c1a8  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc
! 02963b0376286dc331313421fdcc4c35  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/typedefs.cc
! 600911b573b9296e4d0826f70bf7e8e8  libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc
! b81034fed22d9d7bc150b67280947a52  libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc
! 48d3fee81ebae936fe41880e32229bf6  libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc
! d6573f896eff528a03b9046854a31e27  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_env.cc
! 69a5be4b4ea00dbfea3482426eef24fb  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_locale.cc
! 0e09d20e51720a18d00f3f9350d84ea4  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/1.cc
! dff4316bcba62c51344eb84d4599c529  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
! 8c15d1bb1f1e4d472e46dd4040e46a4b  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/3.cc
! eb10add37cfa03256e8e9cf789b0c7c3  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
! 496350be4ffeb33f40f89fff11c29350  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
! 1dd19947012c9853207c9ca9478c0665  libstdc++-v3/testsuite/22_locale/collate/hash/char/1.cc
! f8f35f81db4a86208dc813f7109598e9  libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc
! 5a562c4921ab5f6a2892cfc0e1332453  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_env.cc
! e24530e7f50ff1fcdf8b2b112d000137  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_locale.cc
! b011c7ce566f36de6b442346416a4006  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/1.cc
! 4dfc346ae41eb6cfa49fe1a8bf00ff3b  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
! eb10add37cfa03256e8e9cf789b0c7c3  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
! 496350be4ffeb33f40f89fff11c29350  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
! 5236def18f6f60548ad1da0a05868c06  libstdc++-v3/testsuite/22_locale/collate/requirements/base_classes.cc
! 86f5838df082ef0c6ec0877f44a2e935  libstdc++-v3/testsuite/22_locale/collate/requirements/explicit_instantiation.cc
! c437e6002dc66dfaf94966652d65acd1  libstdc++-v3/testsuite/22_locale/collate/requirements/typedefs.cc
! 5cc99f15663a791bf85b881beb67f12c  libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc
! 4750f44dd3dbb5c5d3ea0fc8c828ff30  libstdc++-v3/testsuite/22_locale/collate/transform/char/28277.cc
! 96e5d86112008d5028c1a440f4ad59e4  libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc
! 9814d411417d330e699963e1a531380e  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_env.cc
! dee3690efb9083a6ef6d9cca4c9b9ced  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_locale.cc
! 162aa0f31ed3bee5105afdde39117eb4  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
! 488763add112227f27f79bca002bcf6a  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/28277.cc
! 870de7fc158721e1b109b9f3c65bb5ce  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/3.cc
! 35ea5745a9cf34866d1777b2d99f7ce3  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
! decbc9218858d5eb9ad47c6f8a01e85c  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
! cc0bfff0d45f9c5615e95f28fe0a0ef6  libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
! 760eee3b8ce7948122913dfcd0ba7a3e  libstdc++-v3/testsuite/22_locale/collate_byname/88681.cc
! 052d4702f8fbb10c3e198655f230fd78  libstdc++-v3/testsuite/22_locale/collate_byname/named_equivalence.cc
! 819cda3e955d38a16cdd840f6dffc8bc  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/base_classes.cc
! 85b0921dbaca55d0b7c39459a4643bee  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
! f8e3fd5138a59dccbdcd6405a17d931b  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
! 6930668bb273391d486c2296c7134b15  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
! 20c1ac439a88ce817c39dfcbdc0997a5  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
! 6b320f87313d3d4be744e3151238838d  libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
! ad1e62feb33ebe3395ab3601aed08f4e  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
! 2c2fe15109c163ebcd15c6d1ce8dc979  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
! 402575cf0697a901d8cf050147ab973e  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
! 3c8ec4188f84f6692bc34e09d929f3e4  libstdc++-v3/testsuite/22_locale/conversions/string/3.cc
! dc4662bc838b884c7d70865019c62298  libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc
! 788bf04059ce661a1a4d3737e7727cb8  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc
! 4197002af0233917d6af629f44d03f71  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc
! efa0a12f7d93d6727a348883b0e6ceff  libstdc++-v3/testsuite/22_locale/ctype/2.cc
! a5f09a5fc9ce3f2ce45b9d15239803ef  libstdc++-v3/testsuite/22_locale/ctype/cons/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_locale.cc
! e1b531467bc85a411cea54868cce7442  libstdc++-v3/testsuite/22_locale/ctype/dr695.cc
! 6fbf0caffd38c5db3756c27c23773a97  libstdc++-v3/testsuite/22_locale/ctype/is/char/1.cc
! 9e44d15860a9dd74a5256daacce82593  libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
! 8afc440be5c71d6015d780643e33c1c3  libstdc++-v3/testsuite/22_locale/ctype/is/char/3.cc
! 54e3381e681b980897f715f814dba2e1  libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
! a416c5a2ce6092deb8c849884b8d8cf3  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_env.cc
! efbf9ace4fa3808506dfafbd0655ff2e  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_locale.cc
! 31402df4d378d3910b2c20c6512ed9b5  libstdc++-v3/testsuite/22_locale/ctype/is/string/89728_neg.cc
! 30d7f3900500e3c6ac73128df613ec42  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/1.cc
! ff9831ce7ac029725f8e8e759bf161e1  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/11740.cc
! 102e32dd0265deae5bb51faeac325924  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/2.cc
! eb7eac42b56515d52af21c285f6ddffa  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc
! 6f084c185b912326f8fa50512f328e8b  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc
! 23fb645e2cf9b13e75c06575936c5c03  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/1.cc
! b992bf053579c6bd6930dcf2c0a77812  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
! 09035469e50c380a43249377886994be  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/2.cc
! eb7eac42b56515d52af21c285f6ddffa  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_env.cc
! 56ac25f8233ba0db6c2d8df5f0a3a491  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc
! c669a11853c03937420903e5fc039e86  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/1.cc
! 9dfa1776ab843c48464d990a5ac7fc8f  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/2.cc
! 9a0209ef31aa38c0daad3cde2908c149  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/3.cc
! eb7eac42b56515d52af21c285f6ddffa  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc
! 56ac25f8233ba0db6c2d8df5f0a3a491  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc
! a3e9baac27bed282659582a477761498  libstdc++-v3/testsuite/22_locale/ctype/requirements/base_classes.cc
! a3bb5626eff4fac09f379614b61309a8  libstdc++-v3/testsuite/22_locale/ctype/requirements/explicit_instantiation.cc
! 0857124b04b5135ec5c699d24de15ae4  libstdc++-v3/testsuite/22_locale/ctype/requirements/typedefs.cc
! 6b3dd0dc3c957fa09fa1b55e5d1cfc12  libstdc++-v3/testsuite/22_locale/ctype/scan/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_locale.cc
! 35d6e31eaa631dfaa7d015cc0e3ba92c  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc
! 11bd96b72fb7da1d0e28f77a496280a0  libstdc++-v3/testsuite/22_locale/ctype/to/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_locale.cc
! 29af4fbc13e23d164eaaae43db49f0da  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc
! 769c4e091762261f7b837641b5163bea  libstdc++-v3/testsuite/22_locale/ctype/widen/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_locale.cc
! 17d470a624126c5d2840db6ddc073304  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/1.cc
! 6990ac35acd4817d6e10a5a3ad62d6ec  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/2.cc
! ca3a8c717fbfe0fe82a2ef3c68434a26  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/3.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc
! bbc42c74215cb1c6f801b7a80a11d476  libstdc++-v3/testsuite/22_locale/ctype_base/11844.cc
! e05b061ab7aef9a87a65e21f75aaf155  libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
! 3100764712f663671741b91ed557128c  libstdc++-v3/testsuite/22_locale/ctype_base/blank.cc
! 0fc8a3850b686836303e6b0fbb63988f  libstdc++-v3/testsuite/22_locale/ctype_base/mask.cc
! ef3cb35e69090816a0455de122c4832f  libstdc++-v3/testsuite/22_locale/ctype_byname/1.cc
! e54f9700fb85bd0df80c317d408a6641  libstdc++-v3/testsuite/22_locale/ctype_byname/2.cc
! 0a36ce4f8f12d531acd52402e1e894fc  libstdc++-v3/testsuite/22_locale/facet/1.cc
! 746be1526ce7938627513526ac0c8718  libstdc++-v3/testsuite/22_locale/facet/2.cc
! 699c5db87a0ebcce364b486dbaf3b0ca  libstdc++-v3/testsuite/22_locale/facet/25421.cc
! d23dfb74a5b1e866e219ee6d2db5b1a4  libstdc++-v3/testsuite/22_locale/global_templates/1.cc
! 23c011a952ee8284321220967475ab15  libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc
! af90959c37f18694badfd53060c9940a  libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc
! 9afb1b28999aaeb52a42d7f898a475bb  libstdc++-v3/testsuite/22_locale/headers/clocale/functions_std.cc
! 5b71c5784244c5acca32a00896e31359  libstdc++-v3/testsuite/22_locale/headers/clocale/macros.cc
! 218110d4c28857c4b3fd67c61e5264da  libstdc++-v3/testsuite/22_locale/headers/clocale/types_std.cc
! e8d66671b61fe8bfb26ca81324b8b956  libstdc++-v3/testsuite/22_locale/headers/locale/synopsis.cc
! d481b716a5d4b3c4803cf753ba156f92  libstdc++-v3/testsuite/22_locale/headers/locale/types_std.cc
! c23eb97748831e2d0e7009956e5a102e  libstdc++-v3/testsuite/22_locale/locale/13630.cc
! 922fac814bcf2bcd9772ca014489f390  libstdc++-v3/testsuite/22_locale/locale/cons/1.cc
! b74fecb0de001e375303b675c5dfe67a  libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
! 78c2429db7a87d25a520dd8200d80523  libstdc++-v3/testsuite/22_locale/locale/cons/12438.cc
! 4627ec989526e9b3bf3f009f6ed1c460  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-1.cc
! 3d67bc941105510a2870526bbad45eae  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-2.cc
! 351fe4d728d0249c086bf2226f532238  libstdc++-v3/testsuite/22_locale/locale/cons/2.cc
! ab53d88dbeb5170e7e245f9d77636c9a  libstdc++-v3/testsuite/22_locale/locale/cons/29217.cc
! 214b4d62f0704228ad023b8e17b7bf64  libstdc++-v3/testsuite/22_locale/locale/cons/38365.cc
! 96bdd64f08fddbca7ac269a765f1b182  libstdc++-v3/testsuite/22_locale/locale/cons/38368.cc
! b3061b9df6c88bd2c155f2d0dd4df7c4  libstdc++-v3/testsuite/22_locale/locale/cons/4.cc
! 9140857bfbbd043fb3e76f55fb204e0c  libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc
! 783536f75df3667ea2e0a0360c0c7034  libstdc++-v3/testsuite/22_locale/locale/cons/5.cc
! 512968d04b713f4d3b69f3b44ccfc09b  libstdc++-v3/testsuite/22_locale/locale/cons/6.cc
! 1cab779c8a876b1599ef8ac552d50426  libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
! 9f4ec108c54abbd9c93334ee81611bef  libstdc++-v3/testsuite/22_locale/locale/cons/7222-c.cc
! fb29da815d360e27e10c07aecf6e6b4d  libstdc++-v3/testsuite/22_locale/locale/cons/7222-env.cc
! 904ab84e00d4923090475d2f39600876  libstdc++-v3/testsuite/22_locale/locale/cons/8.cc
! 1116a3aa240568bff3d431323bcf62ac  libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
! 3576c4a8575e7ee06f80be4290dbf229  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/1.cc
! cc244514f927ab9b54e1b1480b487595  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
! e43f5f9b24d534fa36959333ab7c27e8  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/2.cc
! c0681676f4639ea0285d1dda76d00a83  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/3.cc
! 3acee708386ff3e0f79ef4519a9f8bb9  libstdc++-v3/testsuite/22_locale/locale/operations/1.cc
! d392432876a02d6202f6a4cc6fbbfe09  libstdc++-v3/testsuite/22_locale/locale/operations/2.cc
! 4ff01f6f15d0a57625642c43a849fb1b  libstdc++-v3/testsuite/22_locale/messages/13631.cc
! 0c159c1451d4705cc0d1939aaf07f7a8  libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc
! 1ac35a4452a887b34001b610737234ab  libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc
! d19ffe3eae39e6c3ef13dabf71a170fd  libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc
! 7e5c4f7906a640d71ca0b53ec547fb0a  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_env.cc
! 26650a853dc614906db7dd4237352095  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_locale.cc
! bd0a47bb882200113e499db2ec24a689  libstdc++-v3/testsuite/22_locale/messages/requirements/base_classes.cc
! d1c545504495dde3a7f8e0a1138c9bb9  libstdc++-v3/testsuite/22_locale/messages/requirements/explicit_instantiation.cc
! bfe8f10f59cd975d9f566e8fa09c9cae  libstdc++-v3/testsuite/22_locale/messages/requirements/typedefs.cc
! cb2a98705d42d1b0bc7adfd0d7ff2a89  libstdc++-v3/testsuite/22_locale/messages_byname/1.cc
! 826d8865de05c24769a386be5834822c  libstdc++-v3/testsuite/22_locale/messages_byname/named_equivalence.cc
! 7dbe3fe821c5d349bfb2715d3312c359  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/base_classes.cc
! 356a1dbf205f5886d9920a065d503892  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc
! b309f01839d73e6aa79e59edcd6ef2b0  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/typedefs.cc
! 31c8d9ca4c6cadf5da5f4122e6cfc36a  libstdc++-v3/testsuite/22_locale/money_get/cons/3.cc
! c6fdaf67e2bfacccbdef5a0dacddcc98  libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
! f394c6a3d5562ce5a3fc939fb19fbfa4  libstdc++-v3/testsuite/22_locale/money_get/get/char/10.cc
! 49fd2cd80c283166341f0ac8b651d358  libstdc++-v3/testsuite/22_locale/money_get/get/char/11.cc
! dda9d44e95f0dc7e8b8e3ed5ade4b015  libstdc++-v3/testsuite/22_locale/money_get/get/char/11528.cc
! ce706a44196912952edaedc40881d357  libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
! a918a98e848b690a44c3f783235ebaf4  libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
! ea79bd808007e9cfc000b4a0c8c0fc17  libstdc++-v3/testsuite/22_locale/money_get/get/char/14.cc
! dfe5ca8b54f1f698cc488cc61d1f9c6c  libstdc++-v3/testsuite/22_locale/money_get/get/char/15.cc
! d7b918753beb83e67ee5d697a38141f0  libstdc++-v3/testsuite/22_locale/money_get/get/char/16.cc
! b5b8559c4c410650e2ff1eed0a5ee6b2  libstdc++-v3/testsuite/22_locale/money_get/get/char/17.cc
! 2f659ccddd593cf041f01ebf2698e10f  libstdc++-v3/testsuite/22_locale/money_get/get/char/18.cc
! 50a04a58f54acd1321e2b012c3a21f97  libstdc++-v3/testsuite/22_locale/money_get/get/char/19.cc
! c6cb5317ebb9de1d4da6bf971df32f40  libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
! eb34fbb61846df04a623b4313843f980  libstdc++-v3/testsuite/22_locale/money_get/get/char/22131.cc
! 1f08e8cf999ea1b951f3f02e44596971  libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
! 1077b5265b8436e8b8a3a785dcee626f  libstdc++-v3/testsuite/22_locale/money_get/get/char/38399.cc
! 8bea4329ef595c69898315c257c450bf  libstdc++-v3/testsuite/22_locale/money_get/get/char/39168.cc
! 7026ab5e24e68af2433a2b04a1d25b02  libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
! 2cb1df8883129f8b61893ebe573fe647  libstdc++-v3/testsuite/22_locale/money_get/get/char/5.cc
! d423c2e8280421b38b739ffafecf7be6  libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
! 26f1ad12e46f36c9abfa242b7a229d40  libstdc++-v3/testsuite/22_locale/money_get/get/char/7.cc
! 72950fb95a5316a908c04adf1e7496c9  libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
! 288910e1981187c9bb1fc00b1e15d95f  libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
! 3d36a87f0c668302b327ebab611bd3fa  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_env.cc
! dadcfb2e86ba922a72ecddc8b4aef146  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_locale.cc
! 06935958b206c69242cc8dd5c1dfd932  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
! b9c0974295c53da1418ed5784e603fc5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/10.cc
! 3b28394494d3b12096cc065e80810aa5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11.cc
! fc202e978c8a68fa3c490366ee0b8fd5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11528.cc
! 8f867a390c3873fc03c0d4bc29f4774d  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
! ae0c99205fe62d6ea98bb090d868dfa2  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
! c4377f91956a1eef1378c896aa86a4df  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/14.cc
! 87c95cfd2eef5c7f08f055deec2de294  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/15.cc
! 95e03f7b693521ee3cfd3163cdd520c7  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/16.cc
! 4457a6b81adbecd64e9fea86ac258712  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/17.cc
! 66cf0ba16131206c2a8513650e93383f  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/18.cc
! 383bcf7153713dd2d02360529ee47c59  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/19.cc
! ba3ebec7c004848c196f9a1408b4128b  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
! a6c331cb0981b32acca0f7421f15b73f  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/22131.cc
! 42a4996cb4e61ada1fd4b36d5dd56c73  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
! dbe5941902fed67359448daed9a0c362  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/38399.cc
! 6147d75ae2c7659f9ba13a8e8e365319  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/39168.cc
! 35f5ef6414f3fc8154424ec5000d6586  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
! b2edb121ebf02503eec8206c95a8a6bb  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/5.cc
! 37035db58434b1b9b67d7985c7ee0d86  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
! 9928071a352363fabec0bc57f9ee17da  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/7.cc
! 418aba03a4c6c3bb718b81488eaa914e  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
! 2063f5f2c8b3e2f41a303978bdd13ca2  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
! 3d36a87f0c668302b327ebab611bd3fa  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc
! dadcfb2e86ba922a72ecddc8b4aef146  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc
! 226baf42db4a319200d852b9b2c4c044  libstdc++-v3/testsuite/22_locale/money_get/requirements/base_classes.cc
! 114c4b15e56c4f121e14d4b7b272e86a  libstdc++-v3/testsuite/22_locale/money_get/requirements/explicit_instantiation.cc
! c703d657922205d14fab6c90e6e72d30  libstdc++-v3/testsuite/22_locale/money_get/requirements/typedefs.cc
! 5ca34f8e6a751830dc25b4f6afd51b9b  libstdc++-v3/testsuite/22_locale/money_put/cons/3.cc
! 0e57eed19524df4c61ad5fa25b0f6b2b  libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc
! 2015b4f4460968df1beb2b119bc3a57c  libstdc++-v3/testsuite/22_locale/money_put/put/char/12971.cc
! b34462784b4a948c3d3c46d888681912  libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc
! 118f802ac4b8ef24d209129da3d189f1  libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc
! 0c43bce74085978194eed3cb26ac1cbb  libstdc++-v3/testsuite/22_locale/money_put/put/char/39168.cc
! eae32e9f97c36849155b5085de521a05  libstdc++-v3/testsuite/22_locale/money_put/put/char/4.cc
! 881c9a86c3bc0b18971f0f25b54d8b7e  libstdc++-v3/testsuite/22_locale/money_put/put/char/5.cc
! e1777ac48349e3e20fa8a3456a1e1889  libstdc++-v3/testsuite/22_locale/money_put/put/char/6.cc
! 9f095742529cb00f1406faad9218e0ae  libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
! 2c9ea7d047fa6bcf2a0b8795cddf5c3c  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_env.cc
! 04fac6c481ed00005a94afe1e42d3803  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_locale.cc
! f480b5469854e6f66abcefc52e2563ea  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/1.cc
! 239a5e57d5715ec99bd3c0eccf51e043  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/12971.cc
! 274f142c2e18aed3033197f310778403  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/2.cc
! a5d115f5cd78e1d5f06c28603f9daad7  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/3.cc
! e1492bdae536f03a8884d1040467790c  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/39168.cc
! cd3acb900f5fee79882b3eed0618acf4  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/4.cc
! e58679690d805ca34b8158608401e70d  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/5.cc
! 0ce205dd3cbc5fda3daddc6e1aab97e7  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/6.cc
! 2c9ea7d047fa6bcf2a0b8795cddf5c3c  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc
! 04fac6c481ed00005a94afe1e42d3803  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc
! 839bc966bb5c8fc67413f823b138d279  libstdc++-v3/testsuite/22_locale/money_put/requirements/base_classes.cc
! 4127b1f66f6bb28cfcb1f74720602481  libstdc++-v3/testsuite/22_locale/money_put/requirements/explicit_instantiation.cc
! 2a207057a155c69d3c38f5fc1cd7815d  libstdc++-v3/testsuite/22_locale/money_put/requirements/typedefs.cc
! c5fc44623c4fb2c6bbc93e8f10d0c1a6  libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
! 3093f795be1a4b4b1fafdb85368e1688  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/1.cc
! 97d864d9a6d4f96e9f1c8d86d27be476  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc
! eb7eac42b56515d52af21c285f6ddffa  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_env.cc
! e6bd112a8263a7869f0264ad3ddf34d0  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc
! de54180c765da4ecb4b4f5ba888633bc  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/1.cc
! 684280c1c9e8da1351f7327751f3d67d  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/2.cc
! eb7eac42b56515d52af21c285f6ddffa  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc
! 6f084c185b912326f8fa50512f328e8b  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc
! 734cce37a65990f323a62b20c324594f  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/base_classes.cc
! 3008a4199e4be151ca0905e6f4b575a8  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc
! 673392899927182682529b42dcc0a616  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/intl.cc
! 600f4f2f86ea0b95e2c7ef1fa36afc18  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/typedefs.cc
! d0783a1c92b194c152048a940e9edfd8  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/base_classes.cc
! dd170e70afa611c68646e0b1552df4e6  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc
! f3028799eb4e482634485c816470fac8  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/intl.cc
! 87a512e69165259b5cba1b2722fa9e6d  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/typedefs.cc
! d84f09e568d0519f2077dc7620c57f65  libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc
! b45aa97d86e7d7b674786c59d5dc5d7b  libstdc++-v3/testsuite/22_locale/moneypunct_byname/named_equivalence.cc
! b542d84d31757d330ddc6fefcd11f24e  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc
! a27e173e43e59b297d1988526bb6742c  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
! a1ec5dfc92dd6cddbe24bef8c5f010e3  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc
! 001c95cee57d7ca5125eada9388f232e  libstdc++-v3/testsuite/22_locale/num_get/cons/3.cc
! cce9e126d72a55ac035ed93df2e2445a  libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
! c65cfb812aaf14647b0dd6883a14b9d8  libstdc++-v3/testsuite/22_locale/num_get/get/char/10.cc
! bbcf9b847fe3899afaab0ce39e1458b9  libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc
! c1e5fa3c639cdcf9e5dc761cb67754d4  libstdc++-v3/testsuite/22_locale/num_get/get/char/12.cc
! 7654ed629b1bac63cb019e9ec1e18c0a  libstdc++-v3/testsuite/22_locale/num_get/get/char/13.cc
! dfbe8ee4afe8962101198d47f685c7d8  libstdc++-v3/testsuite/22_locale/num_get/get/char/14.cc
! 3102c035dbe2893a39e78e858cca69de  libstdc++-v3/testsuite/22_locale/num_get/get/char/15.cc
! 28197d89e09ad485c0aa1ca8a39f43d2  libstdc++-v3/testsuite/22_locale/num_get/get/char/16.cc
! 54d06b00ff007322acdb85812341b95a  libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
! 7df4f19c899dd7b9b4522f834b4cd74c  libstdc++-v3/testsuite/22_locale/num_get/get/char/22131.cc
! cd269d23c513a6ea52447e491a61987c  libstdc++-v3/testsuite/22_locale/num_get/get/char/23953.cc
! 10f4f002c1ca89c7fe41e405db2fcfbe  libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc
! 46d73977f0ee9b1b807fba1e79275c19  libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc
! 9db754760f68ce94dd4970e83e5909de  libstdc++-v3/testsuite/22_locale/num_get/get/char/39168.cc
! 7d2c6305ffc7a968a5431b83c64cf140  libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
! 5b8d2890d91551727dc6d6748e85104e  libstdc++-v3/testsuite/22_locale/num_get/get/char/4.cc
! dc3a4b0c5cfd6d39bc0ef64d2e1dcb42  libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc
! e31331fa1a5326d326b2a69b52b5c89c  libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc
! 0083cb7b4f2818b06a44a229e6ac3fff  libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc
! 7f8119c844e6cce5b8e5b19a9046ce23  libstdc++-v3/testsuite/22_locale/num_get/get/char/8.cc
! 9be76e76e73221a48a72e979fbacc68c  libstdc++-v3/testsuite/22_locale/num_get/get/char/9.cc
! 3a7c185544541302fc3966238aefdb06  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_env.cc
! 04fac6c481ed00005a94afe1e42d3803  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_locale.cc
! 414839a4882b7d45d5c747deeaeeac17  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
! e240f0b1f6c758fac2e8c94fb633561b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/10.cc
! fbe83740977de5ee991d1d4c7a3fea97  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/11.cc
! c0608a72e53b667b6838c9654d08ddbc  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/12.cc
! 99944bc6df3cfa643586e1c60b876e3f  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/13.cc
! c51d8d477fc9a373cd99c4b631a05961  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/14.cc
! 4cdfdd07ae8915eeed126710b75fea7b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/15.cc
! 5f19d496f5ce4aac605400f00c98a0df  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/16.cc
! 6f6eb15188a280cb54f3509468f06a3a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
! 006776dfaf7d918354c8f7c6519342cf  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/22131.cc
! d75115269db13f05840bd69cd5a523a3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/23953.cc
! 4c70b65888f351a7e51f063d65137b89  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/3.cc
! af434a533c8bee67392bcff48fa2bf81  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc
! 69673b0bc07f0d15c16f709e9919fcfd  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39168.cc
! 03b2073b2d3ead958d0900067550dd8b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
! a765e55283b4739ffb7d5feb4eb3d5ce  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/4.cc
! 2e7aaee36bacff9ebc7cf37c77dae7d1  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/5.cc
! 309cd5731c646b56633eb531705c56db  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/6.cc
! a2ef03afe4477acef84e0f7a5ad47fbd  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc
! 5330e004ad7186409c15cfc8e5a4e30e  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/8.cc
! da528e239b7553010631bfb2976b0835  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/9.cc
! 3a7c185544541302fc3966238aefdb06  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc
! 04fac6c481ed00005a94afe1e42d3803  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc
! b87ba08d5e951962ec3c3d68c4d6b68c  libstdc++-v3/testsuite/22_locale/num_get/requirements/base_classes.cc
! 9bc3e965af376729201fd22555163745  libstdc++-v3/testsuite/22_locale/num_get/requirements/explicit_instantiation.cc
! 86aa8c2baa8218bf2649070ea9bc046d  libstdc++-v3/testsuite/22_locale/num_get/requirements/typedefs.cc
! 8ac8031a745cdc8aefcd50b25bc40b65  libstdc++-v3/testsuite/22_locale/num_put/cons/3.cc
! 36fc093edaaf9afa7da84902915d2b48  libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
! 48bda09b7a90c733b9585703554b0f81  libstdc++-v3/testsuite/22_locale/num_put/put/char/10.cc
! f3b10933a558f27908357b00dcc308a9  libstdc++-v3/testsuite/22_locale/num_put/put/char/11.cc
! 54e983b481a027da56eee0f430e1187f  libstdc++-v3/testsuite/22_locale/num_put/put/char/12.cc
! 45c5e5cdc56c10373d11e17cf29eac93  libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
! 4a795509cab44278d674074bf999172e  libstdc++-v3/testsuite/22_locale/num_put/put/char/15565.cc
! 39c349a79ce71d940e3abb2b6f09a23e  libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc
! 1d41c090baeaab1334405395d20e2c24  libstdc++-v3/testsuite/22_locale/num_put/put/char/20909.cc
! feb39fa5e2cf8d9340ecdb669280e716  libstdc++-v3/testsuite/22_locale/num_put/put/char/20914.cc
! a0715189adfc8c9436e42ab7dd734e83  libstdc++-v3/testsuite/22_locale/num_put/put/char/23953.cc
! c0ee0b17957f8d3fb60eb58677567dc7  libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc
! 82bdf2b1cc870112e95e65d1d860bc2a  libstdc++-v3/testsuite/22_locale/num_put/put/char/38196.cc
! 62af987b5acfde444257eb0d7c9aa497  libstdc++-v3/testsuite/22_locale/num_put/put/char/38210.cc
! 85debb4df1402c74af208078ce24fc0f  libstdc++-v3/testsuite/22_locale/num_put/put/char/4.cc
! 69dd462d0a896ffb5d15d8301a230703  libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc
! f6779a6b7fd93f2bb16ad4589df0c06b  libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
! 4020efbf0ec143f7b179014db9bdd457  libstdc++-v3/testsuite/22_locale/num_put/put/char/7.cc
! e8c79cee6eec882fcbc3018f45500ac2  libstdc++-v3/testsuite/22_locale/num_put/put/char/8.cc
! f10c15a36b4e4b7e926f8bd27f6e9c5a  libstdc++-v3/testsuite/22_locale/num_put/put/char/9.cc
! 782ddc8308e4691f21b2329bdfb24810  libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
! e0fb0ab2eaab8b6d4f0ffaaac09a4d33  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_env.cc
! 28bcd5478ec375c2a1fd8b561079935d  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_locale.cc
! 1facf90676560ee9078cf25de9e03656  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
! 28b5a1e2f50516a4f2f98b823a739de3  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/10.cc
! 5f2a45ec8bcc592304d7b656752ef8af  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/11.cc
! 2b666ba84a2f8c9202fc2d52318f3aa7  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/12.cc
! 805a8b38cd0b89d520c426ff8ce42e84  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
! 312b40a3e59991a3072e91c6e2f2b028  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/15565.cc
! 9bc526064ab751474c3e35f1f233fd74  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/2.cc
! 26fb6aa69cfe821c47ac69d756012591  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20909.cc
! de1f40c62d3db373c9db8d933d48849e  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20914.cc
! 88b0660b2427bd2979af6ea9d860ceae  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/23953.cc
! e2c32cf166caacc7f8829977460c25d3  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/3.cc
! 949ce3c528e41dd418aa69d57a94827c  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38196.cc
! a5b1f88b58584f6de0897c488d2f0b00  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38210.cc
! 76aef251c5804ae2ff8b3923ef794b17  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/4.cc
! a67e4f9feb5e50f0f42f93b8d4684c86  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/5.cc
! c9ea49cf6bb7e107da29b82138cdc954  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
! 3c94a3e25f772edbe4185a2c2217447a  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/7.cc
! d528adbd8ae5f9be32f69bba2a2ffff9  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/8.cc
! fb91a0f20d1970152374c3ee89bc4a8c  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/9.cc
! 58cd7a50ecd8b77a45603e70b4429b6d  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc
! 81dffbde7f2ae461ca617fb9f3476559  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc
! 8494aa7ed220d6566480fc552ed57dd5  libstdc++-v3/testsuite/22_locale/num_put/requirements/base_classes.cc
! 501cf7cbdbc509e1c992138d48fbdf3b  libstdc++-v3/testsuite/22_locale/num_put/requirements/explicit_instantiation.cc
! cc95ae97ea51eac6811b42ed194f128b  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
! e47a3432d40b931f9a9b331771fc9e57  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
! cc4ba5409724c18a215e37f97f2a2cde  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! abd7f83b9c97f97ed857f92f4786544e  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
! 0a46f5134506addc649cfec9befcc237  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
! 1e280e1fc073055f2156ad809d6d1b2f  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
! 295e272d25d70ec70247f40a888e8f49  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
! af696c492a03228bbec9bb4b2d40a50b  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_locale.cc
! c9042db265534c4ff87e09ba0c025743  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/1.cc
! 83925f0f3ceb1c9582bd22c58c382dd9  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
! b7577ca36922bf64a11624f2d7950523  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/1.cc
! ac84329bf31d5da70279a435ec9f7fb2  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
! e85f482a2388b1da7854346cd585db36  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc
! 552d82830ab8926bfd7668ce6df46610  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc
! 295e272d25d70ec70247f40a888e8f49  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc
! af696c492a03228bbec9bb4b2d40a50b  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc
! 68446f420625aaff822c3977aeac7443  libstdc++-v3/testsuite/22_locale/numpunct/requirements/base_classes.cc
! 12902f7787d90fc29aeedab4e5451d79  libstdc++-v3/testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc
! 8c76351126c11f9795701e06a07313b3  libstdc++-v3/testsuite/22_locale/numpunct/requirements/typedefs.cc
! 337b00e60795fcc94ddf816c028ab8c0  libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc
! 03990b2658a136fc973202954d492b46  libstdc++-v3/testsuite/22_locale/numpunct_byname/named_equivalence.cc
! 2f56d8d975185d3b810d84e6266f9bf3  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/base_classes.cc
! b2154a86aeaf9f06e060f85701502186  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc
! 649b1ab1cebceb8308c8fa1fbf027893  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/typedefs.cc
! c24152a2ecf331e6feff78e216f9bd47  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc
! 8d32103334d1e8756116eaffb52097e2  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/1.cc
! 5a249060cbe15c4cbd017b92c8427f33  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc
! d081940f9f2f2b97a88be0e7cd709e5a  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc
! eaa7123eaeb7c1d5889943ce74e5e446  libstdc++-v3/testsuite/22_locale/time_get/get/char/1.cc
! f0451c7a2eef1f97343452cd03b0b79f  libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
! 0b0535c659ff67d1dee335f3e6f1fe38  libstdc++-v3/testsuite/22_locale/time_get/get/char/3.cc
! c74a933a3a6d6e010fcff2b84e6c5fa2  libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc
! 4e6f7d38d22ba95665782217ae6b7761  libstdc++-v3/testsuite/22_locale/time_get/get/char/71367.cc
! 180ffeba368c586ff632adf67428b187  libstdc++-v3/testsuite/22_locale/time_get/get/char/71557.cc
! 6b23034b4daea415bb316cc543b09de6  libstdc++-v3/testsuite/22_locale/time_get/get/char/88681.cc
! 80aea362d2b2a8fb0ff2453216427480  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/1.cc
! e4d68bf5e63fc6a06275ea0e5f4c8f8e  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
! 13a3ae7dc4b5858e240db8cf1092c0b7  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc
! caa4f5b024375c137dd5b167729e51d0  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/4.cc
! 1182dea03a1822e14c19a8d1905aeb9e  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71367.cc
! b079252432253d81fab92c5459f437e8  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71557.cc
! c809646caa6265dec17a09ad001e39b0  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/88681.cc
! 205a99840a9eb591ca7c0f29b31cb390  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc
! ca4fee184c1d17632706e28e411dfd61  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc
! 69e175e80f9ad7ed7f31f384c3577ad2  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
! 6f99571a4abfa3341dc2e0080f6dc104  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc
! 9c735eaacc983bdeef67c4ce78a1c639  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc
! 12d07fe97cd18543b20d90ea2568b18d  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/3.cc
! 2365039b838b7febdb7d6315908f4563  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/5.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc
! 74f4646add71455693f0f3235f41db23  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/1.cc
! 9c2d6cc7b6f209b4c505a08eb31d394d  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc
! ba1c60fd33e152ce0867e7a7432a93ba  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
! 3370860381487285fbb57f058e10f593  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/2.cc
! 196622b5e5c7bb27d8755cafc8007580  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc
! 3f27fcbe85b5746eec68e97fe56dd43d  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/3.cc
! 49b1b40c6564deaa5b02e5c8976f2160  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc
! 4db0bc471b6084e59a0558aa26786929  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/5.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc
! b876406753310d57a526de0baeabfed4  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc
! 909223a3f877dc2bb0b4897baff281d9  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc
! 53ca79921c17c746dee40188c9e6c42f  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/3.cc
! 668ea4865ac03680a13a3e0aacb3e3bf  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc
! cfaeb6c4e5bdbc3c02b5441437df6398  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/5.cc
! 0bfb845b5f6e0cd92e34303de75bf22e  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/6.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc
! c5b3119d45804b8d11689a2fa9ac5d9d  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc
! aa22d7d717b8f135b77f1593edce85eb  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc
! 6242d1ff16808353d6c15dd9ed02722f  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc
! 033c3359683e7d5a03502b89c03638ae  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc
! b306e333b2766420f12763fdff98e189  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc
! ba097af5f60b5e04ded39599e8a40533  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc
! c330e06b7fa9b72a510977c5c7524617  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc
! 249c9b5faeb15bd32ecb40ce1c84b724  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
! 8b52a36a01244032c2ebda49a7e7b155  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/3.cc
! ed5ad04aaa93845053f31f773de5a58a  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/4.cc
! 83c959025657a03df291a183ac7d09a8  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/5.cc
! c9f2b81a7c466b13f9214d0706cf3282  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/6.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc
! 6150623052ea3672c5d34e8c2e7b064c  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/1.cc
! 2ebe12f8edba6a0800ea4acbab7108fe  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
! e164f817966f521c6bed2af63b5e829f  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/3.cc
! 0b888bdae44b02bf4a688607e5836561  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/4.cc
! 2e421c238d27d6dc5f36e55f46743210  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/5.cc
! a60f3e765c193317486efcc85b7873e3  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/6.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc
! c4b7fe050e5bfe256f351774ea55e540  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
! a7eb7da69ff756ce9896614a6e69815a  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
! 9f52b51a7e830a94f02a48dcfc2a4907  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
! 5b9fae0fd5e573d8ab58aca85750487b  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
! b6fd39ff6b64af2fa81d801925d94ba4  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
! 7c44c2201c1b34c814f707837f963e9c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
! fee86623505f74f046dfb1fbac55c942  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
! 6219d3c7ed027359b2e3f8cd8d6a3ad2  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
! f495fd4fe4e1ff568688635a33d38147  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc
! 7066fab2355fd1ff0ced47ae4d8358e9  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc
! 7b3b45aec28416322abbee17caf8f248  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc
! 260f93d07884d5a921de057dd9c4f178  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc
! 2b9ea441301e1256b0bc75731919ba33  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc
! 153f30b706f2045747987fda08e05626  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc
! 2ae887cc7fc16ee2c7b1fa122a81abfd  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc
! 8ab98eacb1135a1f5a2f0a597897be2e  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc
! fd073f26afa8ea7df8c381b7aebc6f2b  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
! c27b61071c56708105f64063b74acc91  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/3.cc
! acbeeead5c1f208182e97a128a2a11f5  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/5.cc
! a6897bfa7ee9b82212f1532a02723455  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/6.cc
! f814451499d44c0df15744785d06623a  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_env.cc
! ebcde17a4efd0c2efc5b2a43190f0121  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc
! 2afe1391d59216d4dc8d6143a3389943  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
! b397bb3546a10f03b0480e0225726b12  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/3.cc
! ec99b1ecd80e3a3476e01f8287e6f7a9  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/5.cc
! d9794efbf3cd2f71f42ae5b5be8646f4  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/6.cc
! f814451499d44c0df15744785d06623a  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc
! ebcde17a4efd0c2efc5b2a43190f0121  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc
! c7c56e4d67bbc34bf0160332064cbe5d  libstdc++-v3/testsuite/22_locale/time_get/requirements/base_classes.cc
! fc91368834e8f00d2639ff1222b15dfa  libstdc++-v3/testsuite/22_locale/time_get/requirements/explicit_instantiation.cc
! ee91569a5c6ad4d73115bfdc0b453a97  libstdc++-v3/testsuite/22_locale/time_get/requirements/typedefs.cc
! d0e5cbc83f32ceec464dd3f3d64be84e  libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc
! a7f195f5b9aa4733277d7af5c1325301  libstdc++-v3/testsuite/22_locale/time_put/put/char/10.cc
! d79b6ea5a9a96d8c379400cd732e39e9  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
! 17245bf6e2f0f4348890967a0ba5dbd6  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
! f8ecdf6efe98823fe38dee867942e328  libstdc++-v3/testsuite/22_locale/time_put/put/char/17038.cc
! e610fd34eace1d8d3475564e93eadccf  libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc
! e1b8b7d57356a4d5f3353636ea777873  libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc
! ea57652c5d8c1e4957ee1d1099d82321  libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
! 7fcb34ab03e2e5b3f00b2abe67c38966  libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc
! 9c6761693f52c43fe3c307536aed843c  libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc
! ad9bbecd0a5dfa8885b89b58082a4488  libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc
! 7a349e911397100e1ee8c3d3935047b8  libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc
! d552052891475a844a5002cdec8d8c21  libstdc++-v3/testsuite/22_locale/time_put/put/char/9.cc
! fd6d494721be311f156ffcf064a531cc  libstdc++-v3/testsuite/22_locale/time_put/put/char/9780-1.cc
! bce1a77db8a2fd9e262d4eca3f2016a8  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_env.cc
! 8be92efb88cef990c08f5c0c9f3a6fef  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_locale.cc
! b735d426e3fa42c730ffbb507df91a0e  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/1.cc
! 701d30fded7153124847584f143876be  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/10.cc
! ea2e47ea45cd92a0567fa54d1110c6b0  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
! 23cde4cdce317c1de3feeb6d0a3d1556  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_2.cc
! 7d19e5f2e6e013e2b8abd06501f57816  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
! 1ce9951884706b64566802cc0380e2f6  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/17038.cc
! ce42bdb07069647230619b2ec537dad5  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/2.cc
! fe158b5f94ef9f54d7061f737511b9b1  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/3.cc
! 43dcebccdbfd5149101338eed5efbe77  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
! cb4bc92d794ccd5c36e444925ee50089  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/5.cc
! c12bb1cb43dd38d2c476dafa1f45b3e1  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/6.cc
! ad513ca0a2a23370a09e1b187c8a0e94  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/7.cc
! 5873cd498fb4430deb14980abff12573  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/8.cc
! 66a4769fcb664944fa7809d22c4e6894  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/9.cc
! bce1a77db8a2fd9e262d4eca3f2016a8  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc
! 477b51bbd1b398420c3f121aec1e9852  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc
! 129d9ab60505168157b16a83bbdd1264  libstdc++-v3/testsuite/22_locale/time_put/requirements/base_classes.cc
! f724468861a772e87c74f0ddacebee25  libstdc++-v3/testsuite/22_locale/time_put/requirements/explicit_instantiation.cc
! 9039eabffbffca70b36ee3a48afe8dc3  libstdc++-v3/testsuite/22_locale/time_put/requirements/typedefs.cc
! 702f50f8ecc74c33aef525a7dcacbba9  libstdc++-v3/testsuite/23_containers/array/capacity/constexpr_functions.cc
! 6ac7672f30751a081ffd4422b6a2f0ad  libstdc++-v3/testsuite/23_containers/array/capacity/empty.cc
! d3b8ae48846783b68b0c7b15bb586428  libstdc++-v3/testsuite/23_containers/array/capacity/max_size.cc
! 2694b0aaee0471f587239599be5ee088  libstdc++-v3/testsuite/23_containers/array/capacity/size.cc
! decf036187e6c677bddc30f9564e05b8  libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc
! 65932f4ec195f18eda1ea4235219ed57  libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
! 2440c8a5bc138688b549692220a7e202  libstdc++-v3/testsuite/23_containers/array/comparison_operators/equal.cc
! 8825bc1cd71d3588aa1766c781555bf5  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater.cc
! bd280f3ea3e5d9abf50dd2d5c3c1ea42  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater_or_equal.cc
! 221ebd973cb7cb80989e379791b5dbfe  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less.cc
! 9d64c2f471629193f1be64077ce1dedd  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less_or_equal.cc
! 05e3034c9d899a7205538a24c30e42a7  libstdc++-v3/testsuite/23_containers/array/comparison_operators/not_equal.cc
! 43acf2ecf2c61c21d36b7ebcb5745b81  libstdc++-v3/testsuite/23_containers/array/cons/53361.cc
! 891d03bc1650e5d9d3ad430f874d86cc  libstdc++-v3/testsuite/23_containers/array/cons/aggregate_initialization.cc
! 32ac54909221492a28e633b359888c7c  libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
! e7020060d3f451aafff35f4f5f1c45ed  libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
! a0a4fd0ebb58bd078933f95239938034  libstdc++-v3/testsuite/23_containers/array/creation/1.cc
! aa17ba9d9b09772b44a183382127ba06  libstdc++-v3/testsuite/23_containers/array/creation/2.cc
! 3c3b42932a234b65502e903d67e8f2d8  libstdc++-v3/testsuite/23_containers/array/creation/3_neg.cc
! fe745a295fadf30b545b3d8d16e52a34  libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc
! cc9596399588f73656970e95dc585197  libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc
! 19fec4e51c58f209ef0667e2aabdc611  libstdc++-v3/testsuite/23_containers/array/debug/constexpr_c++11.cc
! f12045a59fc10fbaab29f19982545c3e  libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc
! c11219166193857de0722d1594585132  libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc
! 70ec43e71e9825629e7857075d2481a4  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc
! 073dbb87b02f3716cc64b3a5ed42e82c  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc
! dc37bcad141e13308b8d04d1b4083413  libstdc++-v3/testsuite/23_containers/array/element_access/54388.cc
! f8bdf910e5cb549e8992c06901ef5af0  libstdc++-v3/testsuite/23_containers/array/element_access/60497.cc
! c058716cf1e9ec5299e803f6dc3169ee  libstdc++-v3/testsuite/23_containers/array/element_access/at_neg.cc
! af1e5b36ba419d2855e4d845e70c715b  libstdc++-v3/testsuite/23_containers/array/element_access/at_out_of_range.cc
! 46626195308dd08226ae0da9b0b386ce  libstdc++-v3/testsuite/23_containers/array/element_access/back.cc
! 2ef557c13908a7ca654dc95d8db8bee9  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
! e287954e91e8dd6bf5220e35a995f855  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_element_access.cc
! 71ae1eaf20f465af3bec796d1bcc83a7  libstdc++-v3/testsuite/23_containers/array/element_access/data.cc
! cf08e9189f35d205fdd0791191c6c6e4  libstdc++-v3/testsuite/23_containers/array/element_access/front.cc
  6a70864d40e873666241bcb5b4a33a61  libstdc++-v3/testsuite/23_containers/array/iterators/begin_end.cc
! 298ca5a34eefaa04aa4b50e4c67fa15e  libstdc++-v3/testsuite/23_containers/array/iterators/end_is_one_past.cc
! db3451be50364838bd45eec5bd08c3eb  libstdc++-v3/testsuite/23_containers/array/range_access.cc
! 546f8d9226878781bc095e79372d968c  libstdc++-v3/testsuite/23_containers/array/requirements/citerators.cc
! 767d80957b82ab802edf87c6be4448af  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
! 6f97b81e56fe43fbec010590eb272f43  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
! 62c26b769412d10648dfae30cb2ba29a  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_swap.cc
! 1ae02ae62661559b73ede19a72943d4b  libstdc++-v3/testsuite/23_containers/array/requirements/contiguous.cc
! 139b961822231d399f30be6baffc4a7e  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/1.cc
! 19dacdf60171df50bffb4a8277968c08  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/2.cc
! 64a3114ee5eb049e9d7147af7dea5113  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/3.cc
! ac614056f8e18412992414ba790d2253  libstdc++-v3/testsuite/23_containers/array/requirements/fill.cc
! 15c11a58bbabf5d398b0e676e9181a97  libstdc++-v3/testsuite/23_containers/array/requirements/member_swap.cc
! 572435ec4ee219fca4a103596df75b02  libstdc++-v3/testsuite/23_containers/array/requirements/non_default_constructible.cc
! 094a65740d93db3b51c5241ce75c7743  libstdc++-v3/testsuite/23_containers/array/requirements/typedefs.cc
! 9e3452ae9516fa0efb427f472f0e26cc  libstdc++-v3/testsuite/23_containers/array/requirements/zero_sized_arrays.cc
! 503ad9607e2b616c51cbc8a59c6b7f81  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap.cc
! dcadb86dda331dee0cd7b179ebfc1d89  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
! 69bd643913fee3e46c28dd059dfd58e5  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
! fc2aeb3a5d38ef75d7424710d94519e2  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! c75f5ec66b897f7a80ad5b3058adad79  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
! c5c4d364e1723386d33a0690480c0312  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
! 07d523f2bd4c66015b6cb22ea7f14042  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
! 0c3ee048f57543ff15c087b49215aa83  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
! 2397713fa067b289ac436abb2e5aa66c  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
! cf7f4708c999a77d8e12a3c91190c759  libstdc++-v3/testsuite/23_containers/bitset/18604.cc
! a98ebbb8ac186b07d1ba9f0372b7079c  libstdc++-v3/testsuite/23_containers/bitset/45713.cc
! 25a383a36b736bf303e2de6d24fde999  libstdc++-v3/testsuite/23_containers/bitset/all/1.cc
! 813dfbdfb344f692ee62dd3c0d6ea4da  libstdc++-v3/testsuite/23_containers/bitset/cons/1.cc
! 8652c7106a2c6be12c53fb5e8111cc4a  libstdc++-v3/testsuite/23_containers/bitset/cons/16020.cc
! a1b487b491b16078b36c852a60a8548c  libstdc++-v3/testsuite/23_containers/bitset/cons/2.cc
! 0a662519369e2cc2bbd470ccd81be047  libstdc++-v3/testsuite/23_containers/bitset/cons/3.cc
! 3e26ec0dde94bc3e6f5dc53271253203  libstdc++-v3/testsuite/23_containers/bitset/cons/38244.cc
! 4020903576be1c78de1bc4246c8c6e0b  libstdc++-v3/testsuite/23_containers/bitset/cons/50268.cc
! a4f90245e1f561ada128b9899fd096c1  libstdc++-v3/testsuite/23_containers/bitset/cons/6282.cc
! 05fcf9cfa11cbad445540595a4d24258  libstdc++-v3/testsuite/23_containers/bitset/cons/constexpr.cc
! 850a5e341898226e800c2170429b572b  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-1.cc
! dfdbbcc8924bef19aacdb83465c7ec4f  libstdc++-v3/testsuite/23_containers/bitset/cons/dr1325-2.cc
! 316fcc5ece1712eeb15dc55a3164a394  libstdc++-v3/testsuite/23_containers/bitset/cons/dr396.cc
! 63a91ac4fab2539103aff182ed7f2f7d  libstdc++-v3/testsuite/23_containers/bitset/count/6124.cc
! 344f35b49531b4281cef1b0561d832cb  libstdc++-v3/testsuite/23_containers/bitset/debug/invalidation/1.cc
! 3e7b9611f98c49749f547d1a138db337  libstdc++-v3/testsuite/23_containers/bitset/ext/15361.cc
! 5ee1cc233eba593ee1b703061f2e904e  libstdc++-v3/testsuite/23_containers/bitset/hash/1.cc
! 20266a82d03bd8730f5de6217c6d99d6  libstdc++-v3/testsuite/23_containers/bitset/input/1.cc
! 4d9f9f0027ec81f93e18f6968b29cfa7  libstdc++-v3/testsuite/23_containers/bitset/operations/1.cc
! 9e3336aca541b14fd33317b7b4ec137c  libstdc++-v3/testsuite/23_containers/bitset/operations/13838.cc
! f7cd9dd4e0a9eda138728ce60df7f324  libstdc++-v3/testsuite/23_containers/bitset/operations/2.cc
! e7a18e3ee2e629fa3605bfbc82e88404  libstdc++-v3/testsuite/23_containers/bitset/operations/96303.cc
! e6a428e0ff25d8808c82849aaf042386  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr-2.cc
! ee72cba9caf8bcacf5544a62f709c1c5  libstdc++-v3/testsuite/23_containers/bitset/operations/constexpr.cc
! 7d089279c86de67244a6e445b8367c09  libstdc++-v3/testsuite/23_containers/bitset/requirements/constexpr_functions.cc
! 3b252a71d44ed84b68f8db6055dd1566  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1.cc
! 8bccb89954d09066b2def1abe3d7dd39  libstdc++-v3/testsuite/23_containers/bitset/requirements/explicit_instantiation/1_c++0x.cc
! e2dbcf554c85ff7509feda50f28ae4c6  libstdc++-v3/testsuite/23_containers/bitset/test/1.cc
! f61e9a8f588f813168ddeedfd9a9b13f  libstdc++-v3/testsuite/23_containers/bitset/to_string/1.cc
! 2d12191038012350aed4506446ea182b  libstdc++-v3/testsuite/23_containers/bitset/to_string/dr396.cc
! 41dcdc4e513bf59036318e4e9ac17291  libstdc++-v3/testsuite/23_containers/bitset/to_ullong/1.cc
! 968b43e6ff9344ee2627c3e63d0e6b01  libstdc++-v3/testsuite/23_containers/bitset/to_ulong/1.cc
  ddf767067d4b89b063a9cdaf9a38233c  libstdc++-v3/testsuite/23_containers/deque/100516.cc
! c0f385297b6a227b31a29a10a1d425b2  libstdc++-v3/testsuite/23_containers/deque/14340.cc
! dae721fc8687a905f4d7b913ba2ebed4  libstdc++-v3/testsuite/23_containers/deque/18604.cc
! aeb67ff1a150b531eef1eb160f6691f1  libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
! 0fb17d83036073d81a5259b6343c2ac4  libstdc++-v3/testsuite/23_containers/deque/48101-3_neg.cc
! 55f443b9733fa7940a7da9f94b015f2d  libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
! 5e75e4775bfeb6d33fe8bd9a247fe5b2  libstdc++-v3/testsuite/23_containers/deque/58764.cc
! 83ce2e900976931ba3ccba9258cbf523  libstdc++-v3/testsuite/23_containers/deque/70303.cc
! 5687ff85e46bfffba094d1fd9a44ee17  libstdc++-v3/testsuite/23_containers/deque/92124.cc
! 4c514bb13a581f4d698d099f0c2060e8  libstdc++-v3/testsuite/23_containers/deque/allocator/copy.cc
! a8527880a679ab11508ce8a74a9484da  libstdc++-v3/testsuite/23_containers/deque/allocator/copy_assign.cc
! b4104af88a55ee68df7d10935de16eb3  libstdc++-v3/testsuite/23_containers/deque/allocator/default_init.cc
! dc22ac304263f33f9797a624e0a7d248  libstdc++-v3/testsuite/23_containers/deque/allocator/ext_ptr.cc
! 45deb92801c35644adb5df9353a5a324  libstdc++-v3/testsuite/23_containers/deque/allocator/minimal.cc
! cea479c33cc52ff1f019cce73a9edbf2  libstdc++-v3/testsuite/23_containers/deque/allocator/move-2.cc
! 12a9e319b16bf94dfdfd3a540bc98a8c  libstdc++-v3/testsuite/23_containers/deque/allocator/move.cc
! c7926229b9e2ac45cdcab7fa0119971f  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign-2.cc
! f33d849acfa6a4d5fb0c02bfbff71869  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign.cc
! 253d8aa19f05b11e46d5bd5e547dcd37  libstdc++-v3/testsuite/23_containers/deque/allocator/noexcept.cc
! 9c97ccf3399afe4dd5491764d880aa05  libstdc++-v3/testsuite/23_containers/deque/allocator/swap.cc
! 3a63a657801415d45cc306e224545c20  libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
! 6bd16a2c2f924a6abe2dabdcb963784e  libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
! c603229af6ad867145a5b73afe786e51  libstdc++-v3/testsuite/23_containers/deque/capacity/max_size.cc
! 276db1e12db093453f4c8c6bd2b4587b  libstdc++-v3/testsuite/23_containers/deque/capacity/moveable.cc
! cf90786afd28001d3e46533bb3445e7b  libstdc++-v3/testsuite/23_containers/deque/capacity/resize_size.cc
! 671f97d5ff41ff3bf803b15d0894e9ed  libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
! 35f48bd566ca0f52be51373f32b8a48e  libstdc++-v3/testsuite/23_containers/deque/check_construct_destroy.cc
! 490a3b84d03fcc8dc38df227d4082bc1  libstdc++-v3/testsuite/23_containers/deque/cons/1.cc
! 08ad7b63c0e50bb4355b7b23614b439d  libstdc++-v3/testsuite/23_containers/deque/cons/2.cc
! 31a1e942f6f1362f125e9d15d3e4f905  libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc
! 89b8071a464810d27c08fc1cf246def4  libstdc++-v3/testsuite/23_containers/deque/cons/assign/1.cc
! 862deb24f1107f8d5e93731572bac60a  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
! 105149464e50b48eef69ae2ef570750c  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
! 152213e9eff690b06a4feb7b37d65108  libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
! ab44631bec01e0d604e67a7282122ea8  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
! a4039b93ec4fee3e8cc8970056537419  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
! ce8923dfa0fa9a5ad62e4b5ef5f23af2  libstdc++-v3/testsuite/23_containers/deque/cons/self_move.cc
! 9cf26ea9bb8cb8e0017d4877f80b27ae  libstdc++-v3/testsuite/23_containers/deque/debug/90102.cc
! 3b8322e60f81d388ffb558f0220f68ab  libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
! 69eab977ac917bb3a4fa074e09133aad  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
! edd3735fb1e849c2f526261c2b58b36d  libstdc++-v3/testsuite/23_containers/deque/debug/assign2_neg.cc
! 39585abac429d61fc7814987459b99ef  libstdc++-v3/testsuite/23_containers/deque/debug/assign3_neg.cc
! ae7aa3fcaa91d6573b57ec64ce313b0c  libstdc++-v3/testsuite/23_containers/deque/debug/assign4_neg.cc
! 6577c255116c841b3b014ddcd0f49577  libstdc++-v3/testsuite/23_containers/deque/debug/construct1_neg.cc
! f677c4f1ac4f7219663454a9e2bdf6ad  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
! 9d9b4d63e007fa9fbf43bd9100cf9db5  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
! 7351e7e586a9d0eef79e881f9b6949de  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
! 4f943c3e46b55d774240b37db9dd755a  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
! e33ad2ffffa75bebc3cb85eb79a3acbe  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
! 390e246b3b66539dbf3c2ba4eab245a2  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
! 94cfc1a69110c3af66adf2abde0572d5  libstdc++-v3/testsuite/23_containers/deque/debug/insert4_neg.cc
! dbf02c6265ccbaa35c5136d591d0cb27  libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc
! 0959bb5e3e027a9a9108e76c17b08c1c  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/1.cc
! 6a2f1f69be11fe4214ad4b36a965496f  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
! 18aea1fedd0660a48cc17ab1ce862dd5  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
! e8114d1769d117c368830eb0c7e39b1e  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
! 5db4ee39c1e4539358cd55457a411626  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
! ae8b2280d05e29df06d36c98cdb105da  libstdc++-v3/testsuite/23_containers/deque/erasure.cc
! 49570c8f2526d4bcac96113389bcbe2f  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
! 9d5278f518894accc9b8e1dc3c4dbbd2  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/1.cc
! 0034f5fd400c9cbb1bb7d78b34c39420  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
! 1aa01e2edef2f76f4833d0c90ecd0014  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc
! 06aba31d0af36c463b4d0a9939af86fc  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc
! f3045ecf6b8921fc4cdc9c92900777f3  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
! 2c76f139cc33a06edc7644f522965188  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/1.cc
! 6b3511627daf465cc60fc8d69615cd04  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/2.cc
! 6aabb3dfcd5c0201d15df1de3dab75fd  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
! 9cb03b2c2a58dc50adc5127073eff022  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
! 7016dc32ffe50486f2bd365aa940d99f  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/54577.cc
! 4870658537a3453d3831b00d7527d5d0  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/moveable.cc
! 6ae31c27e5908cfa2d1f4c740096099b  libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc
! 3b9aa5a32bf67ab0042008fa6d8cc68d  libstdc++-v3/testsuite/23_containers/deque/modifiers/moveable.cc
! e8e166780f9b869b522a72016eef838a  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_back/49836.cc
! 10a2fb5fc4d7c5b6c3e29018f4e726ea  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_front/49836.cc
! e3982a48f666d986900b7ef58473d776  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
! 2be557b31c48032bb73d84af23814fb7  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/2.cc
! ed1c3a8ee9fe0aef72793c50440bb0f8  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/3.cc
! 7623f70145468d29173070a7687b9316  libstdc++-v3/testsuite/23_containers/deque/operators/1.cc
! d4e0efd9ad0b35919ebd0be9463d4339  libstdc++-v3/testsuite/23_containers/deque/operators/2.cc
! ee1633bbd5b928968597493245d0672f  libstdc++-v3/testsuite/23_containers/deque/operators/cmp_c++20.cc
! 87414158c292729105522edb452d1b5f  libstdc++-v3/testsuite/23_containers/deque/range_access.cc
! effb08ed8e9a2b2646dffc71c80521d5  libstdc++-v3/testsuite/23_containers/deque/requirements/citerators.cc
! be9cf483fd89aa390778e544553e49ab  libstdc++-v3/testsuite/23_containers/deque/requirements/do_the_right_thing.cc
! c34f5e741fa199bafaa97ee322250827  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
! fc9c7e2498ca05585e373d44a93fe549  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor.cc
! 3f4cf43c41db47fe73ba8243413ac1f0  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
! 2f5c18ad34e95908d637523fc8fe4109  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
! ed2892f318d485995e96e8430dba8a36  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
! 994ff5e02af9cb9534164748ff5ac63d  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/basic.cc
! 75ed2ba14d19d47f8776942ef0e5f48a  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/generation_prohibited.cc
! 624e01eed5f661813aa1aecb11d852cf  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/propagation_consistent.cc
! 01802a6138819f3ecd7ca6a4014afc54  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc
! 958709f16c6258da98fe66f88833cdbd  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc
! f60ae2ee7d5f7ce57b0fa9f61c71f982  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc
! 0ed21dd901635afb7098bd3c9d02946e  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/4.cc
! c6eaf3afab891176b15d7592396d1b8a  libstdc++-v3/testsuite/23_containers/deque/requirements/partial_specialization/1.cc
! 7260a23cd7b3d786001010bc48de141a  libstdc++-v3/testsuite/23_containers/deque/requirements/typedefs.cc
! 2c422bbd0d4db129ceaa03936746c77d  libstdc++-v3/testsuite/23_containers/deque/types/1.cc
! f14be0eb982dbd998afbfc45b16bd619  libstdc++-v3/testsuite/23_containers/deque/types/92267.cc
! 865f3b7edb053f5d69c104e37898ca36  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
! 549ba2fdb27a614b894e430150575397  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
! 9c97288bb681746812d32849b0425d90  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
! d6e50e65756d9cf4a141e60f875be74e  libstdc++-v3/testsuite/23_containers/forward_list/48101-3_neg.cc
! 99457123e20a74c7241de132be18cc01  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
! 9e8a4d977b62fc97e0b23ffc49758df3  libstdc++-v3/testsuite/23_containers/forward_list/92124.cc
! 8f826a12d68f1dfecbb878fe6f2bcfe9  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy.cc
! b8a4c6be7736e950bac8955b0acfef7e  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy_assign.cc
! 148750d55b1ee66feb47de2a4f92ca05  libstdc++-v3/testsuite/23_containers/forward_list/allocator/default_init.cc
! 018bc6cd1c86b7c8ee41433116f28499  libstdc++-v3/testsuite/23_containers/forward_list/allocator/ext_ptr.cc
! 416704d953187c08b8bf874307c57267  libstdc++-v3/testsuite/23_containers/forward_list/allocator/minimal.cc
! ad554d74f93166bddb7648ac20f0a8fb  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move.cc
! 7de18852dbb2a583032ac29439856cb4  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move_assign.cc
! cb94c5bd7a9570fa0bc104fc9ef8111f  libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc
! a4c9f302306bb7adcffe4650769b24a5  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
! c7b86712312e13b827cb6a11f6cc2278  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
! 5f91b7eb6c579f209ba1141a92cb02ea  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! cdefa225674e23a83258abb493afad01  libstdc++-v3/testsuite/23_containers/forward_list/cmp_c++20.cc
! 35d688e9abc24058a71f974ec4c2e0ba  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
! 1c9aaaf9ea62b6dd2c9e0236ccb3e531  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
! 60b3286c9f5fb91ae105e6c81dc9242b  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
! 226b0ee4aa45783134b35d070ec0c3f5  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
! 31544f546d8e7b6bef82a140300f8f45  libstdc++-v3/testsuite/23_containers/forward_list/cons/12.cc
! 3ad69cd64361f5c4be297876a8566849  libstdc++-v3/testsuite/23_containers/forward_list/cons/13.cc
! 9907a0c86b638ce3cec30c90738ff027  libstdc++-v3/testsuite/23_containers/forward_list/cons/14.cc
! e1ff70c70ed0494d4022a1c66ee32e62  libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
! 66d243bc36679d4404b927c10c06dea0  libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
! b7ce9708bda0174a2e3086b49944b0de  libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
! f02debc11136deb4cb6f5c9dd6892c19  libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
! 1af71c109acf1b96130a1520025f2d43  libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
! 855c5d41d7a373852d0111b2f08cdf24  libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
! be574e6c076603a0e38ef53e496deda6  libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
! 0eba769951bc6194cca298688ad0f0ef  libstdc++-v3/testsuite/23_containers/forward_list/cons/87809.cc
! c551825e77fa2f212cd0a860cb7999bc  libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
! 5492a6d753fda045422bc11eb0e2e0b4  libstdc++-v3/testsuite/23_containers/forward_list/cons/cons_size.cc
! f3c2992cdb559f7274edcdeff9a989f0  libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
! a6a7e24c2165d4946985c9fe34c5169f  libstdc++-v3/testsuite/23_containers/forward_list/cons/moveable.cc
! 8dd1b5878ba86acc336fe2677a9056b1  libstdc++-v3/testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc
! ecd5c63849fdf42735c1122ad8beac0d  libstdc++-v3/testsuite/23_containers/forward_list/cons/self_move.cc
! 5f33de8aaa8ad2bf2c9f9cde442d9dd9  libstdc++-v3/testsuite/23_containers/forward_list/debug/60499.cc
! f5d4297b5fcb50641e2c3592b6804341  libstdc++-v3/testsuite/23_containers/forward_list/debug/90102.cc
! dd47598b72b6d0b82b2c2faa5f229721  libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
! 7e2365068cdc62df0f425f78fd56166f  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct1_neg.cc
! ee783c1f5e660e7a7b51e522ce6676c2  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct2_neg.cc
! 9045cea2423d58d36827ab799b6cb2af  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct3_neg.cc
! d0632f06bac2bae8c892e076f6fae009  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct4_neg.cc
! 9171f1e800a9a2d9dab61763dd356405  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
! 503ed9448b5d67661df43998032293d7  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
! 803d2bf06c25663890f06e70af6cd7ac  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
! 9e8b84fef928b8182c6ce0b0d005e9b4  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
! e9289d48de4ec866e9bb7f01f36330aa  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
! 444961006cc6eaa6137893c1417af3b1  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
! 056e6a11483ac34b157c1f0be9bef5df  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
! 6944eac3f3e697e587ee21eea4070afb  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
! f9fd38cf5b1a73ef70240611755bb6eb  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
! 7f3ddf3bad5508aa0ccb2c3da5153c23  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
! 878d29fc3b162503fad4982d53819b3c  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
! 36239112d39323d50028f4cc43849812  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
! 4bad329b6d98bb528ab1b4eb982fb7c8  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc
! 62a70645b2ff8b0dd17de9d69de8501b  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_assign_neg.cc
! 604254f15303a364c676a87b2b9c8c07  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
! 1a79b52a986c86628e73c5e4505aac39  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_neg.cc
! 4826ed3efdd5b66507ddc3de149b19a7  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
! 4b133927c316ed7d4743bf4103fe255b  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
! 0c598184b05a5ddd8891ccb8840061cc  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
! f7b9c6a39aca6568ad5ce041c157ab2b  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
! 9580a843ecc1f775b54874d8d9865ef1  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
! 4050d1f3bc05ff205f5459201a26a3e3  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after5_neg.cc
! 740a7525de2b196f07ace45ffc0a2ec2  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after6_neg.cc
! c519b88c7d7a3ffbb3e6bb9e99bd030b  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after7_neg.cc
! 9d4f734a134b2f544954eb3cae45dc8e  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
! e9f8fbd88bdb1cd95aba59362c5b0651  libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
! 9f26bffb0409b248dcb46e1c76088bb5  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
! f579e86f8e81f8fd3eba16a2f55608ac  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
! 47c9b8c4118756f34c8c215b1d6025a7  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
! 7334605697124e080853fc92cb1761e1  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
! 378d8581d79cd961384b3bc9381af218  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
! 9d189187ef6a3506c3efdf574e2549b8  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc
! 5d69fbb2d7726766939bb106b73f6892  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/92878_92947.cc
! 861fe8f118d704f0696739e40dd33995  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/addressof.cc
! 2afe466002cdfb6820c9b9018537e27c  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
! 613dfaa2ae6b7157962e7c6ff357c351  libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
! 347699af3ee67c8a99494b09db452765  libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
! cf9366ce344a2b6248b3cf07ebed7947  libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
! f3b8ef9f67afcf87d37d5144cf41100e  libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
! 9c843db56bda900af4fec1eb5a1f82f4  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
! 79d38412b065121a13e31702db82103d  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
! e1e05f978b11c6f38cf1e9f135c80571  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
! 230cd321cd5dee402a4c98ac171f0291  libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
! 33914a8313fc69bab4eaf86cd6ff9275  libstdc++-v3/testsuite/23_containers/forward_list/operations/91620.cc
  7a189e8b9d2375d727e2175b911806df  libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.cc
! 7a0b2f5833b3d1419fd858ff4624d381  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_cxx20_return.cc
! a4e2d644c24de875a4d5eced18e247b7  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
! 20b8ab702dc299a2102af64e9414984c  libstdc++-v3/testsuite/23_containers/forward_list/operations/unique_cxx20_return.cc
! 0da72059dbe86f82893746da05cc7632  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs.cc
! 8f56e11c41500350dfc81e67c64d946a  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs_debug.cc
! 15e80a6298a3ff4da9e6705b846d56d3  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
! e90b1308bf7af05d2e385d8e48912322  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
! 4fb31fd370671d00fa576aadcb0eaed0  libstdc++-v3/testsuite/23_containers/forward_list/requirements/do_the_right_thing.cc
! 292c61fe45e4543780cc5e82bf7ed832  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
! 0870c2bb2e46ee90b3377d1c61c107cf  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor.cc
! 3bb51a69ceb59abe7a363256de9601a9  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
! 9b288ea290b49ae74c6709e740d70644  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
! 6ccc884e6463e572f9d6d6b0a258d515  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
! 4d881e1c9c7c1afee3ac7f5cb39d20c5  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/basic.cc
! 13fa91f88f38de3db52e2eeee9c162fc  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/generation_prohibited.cc
! 48935e0fe58e9b7d8fc52db66d161eaa  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/propagation_consistent.cc
! 974d52890613dca130a3cb17b6e73f78  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc
! aae9eec28dcc33b59b6d21812d6e766e  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc
! 7008b1858c9fdbbbf55bfb80b7828616  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/4.cc
! 170318a3e3c5c548460b1d4d42396bac  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/5.cc
! e0c3cfdd1643a6946265ae894f3dd68f  libstdc++-v3/testsuite/23_containers/forward_list/requirements/typedefs.cc
! 63b1256690d5bb10ec348c47aa289501  libstdc++-v3/testsuite/23_containers/forward_list/types/1.cc
! 4a85216ad77b019c87c27daf52614787  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! 81a9e48c3360681b84f1da69bbb26b06  libstdc++-v3/testsuite/23_containers/headers/bitset/synopsis.cc
! a16e54083f57025fac9c0b1dcc36ad23  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
! 599104caee3623e02248c5278c3a16d2  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
! 6725d1e4c8421954a07fea87b399bbb0  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
! cc77d4d6e6eb72580b3643b57e4dbe81  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 679f3fe1cd350d8a4ba8a0b38760117f  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
! f2849d8273dc958145302df2a0c3a51a  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! ee186d2c807289491bbe5ac69e246ef9  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
! e39c4cdebadea8544734531321bb2bb9  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
! 02817372bd23f9b9b9ef9b374d80239c  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
! 7d3f3f8045da989578748f1df41194d4  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
! 55b3d250779f180e49ef3c1b1e25002d  libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
! c44f91621f9b7c1173bec22ba8778b28  libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
! 930f81f7a3add60320c1f2ccad383dd9  libstdc++-v3/testsuite/23_containers/list/14340.cc
! 40d9dd1a73eb43734cb8c68b44575ec8  libstdc++-v3/testsuite/23_containers/list/18604.cc
! b1accacea8a31aa330786bbcb251d6ba  libstdc++-v3/testsuite/23_containers/list/23781_neg.cc
! deb1e0d7d24baac41910aba58673bd47  libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
! 42bc7f487be8829457c44359acac1311  libstdc++-v3/testsuite/23_containers/list/48101-3_neg.cc
! 66ddda20457d1468de1507e7e6130562  libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
! ac8e8f5e48de1ad8e0d3ff7d33aefb30  libstdc++-v3/testsuite/23_containers/list/58764.cc
! ff2d9f3965c6ece512ad291104386fed  libstdc++-v3/testsuite/23_containers/list/61347.cc
! 23a415988a2a869d17431bc98aa5f920  libstdc++-v3/testsuite/23_containers/list/68222_neg.cc
! 71f201410ca7f149decfdd2dc84a3699  libstdc++-v3/testsuite/23_containers/list/92124.cc
! 9fc1eba631145dbd3460a5222e6e6c13  libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
! 9f39e6f83a64a9695d9dadffa0f7ba1f  libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
! 78a9842caa0dd073ae39cb2f6956d12d  libstdc++-v3/testsuite/23_containers/list/allocator/default_init.cc
! 6b1338119642db11edc5d4d92cac18df  libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
! a775bd3fbdfc7008cbcd8f9bd077b12d  libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
! 1ccc54565e7fa600930e018113904ef6  libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
! 94e9d9157ba1a23f49217120bcc90bf0  libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
! f381b66cce77cede1d4558638c8cae08  libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
! 338144f378f464ed9378532d3b2d9879  libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
! 40ca7ab81c84587353aa984c02ab9fbd  libstdc++-v3/testsuite/23_containers/list/capacity/1.h
! c4845203061c1985a84c4e6ef330fe83  libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
! 7978bbe8e8fc448b558d835ba7742dd5  libstdc++-v3/testsuite/23_containers/list/capacity/resize_size.cc
! 80310223d3c0daf3c4430bb295b14e4f  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.cc
! 5cdcf331744824b77fc2a5c5a70e357b  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.h
! f247819a1fb57cb43eb25e26759f316c  libstdc++-v3/testsuite/23_containers/list/cmp_c++20.cc
! 008a83ca279382cf6d1bbf53b758e56c  libstdc++-v3/testsuite/23_containers/list/cons/1.cc
! afa640ad8a026078264b431c87b8cf16  libstdc++-v3/testsuite/23_containers/list/cons/1.h
! 99eec7f94ed9c0f4ec3bc855158a0a83  libstdc++-v3/testsuite/23_containers/list/cons/2.cc
! 8c53747beda1997e5f4d7744a8db5681  libstdc++-v3/testsuite/23_containers/list/cons/2.h
! d0d467d835f25127dd16c03090303fa3  libstdc++-v3/testsuite/23_containers/list/cons/3.cc
! b1f3fcea61fae2cab17c00a2efb01c3d  libstdc++-v3/testsuite/23_containers/list/cons/3.h
! d6888e24c06bf88ae603b603a99d3544  libstdc++-v3/testsuite/23_containers/list/cons/4.cc
! 64d1cc962060e5eecc8e2475dbb9821c  libstdc++-v3/testsuite/23_containers/list/cons/4.h
! 345748012a3baa53a6f1884d7a24f80a  libstdc++-v3/testsuite/23_containers/list/cons/5.cc
! 66878add39196cd53e576211ce86ee69  libstdc++-v3/testsuite/23_containers/list/cons/5.h
! 5de1f733d01213ef8a05d4c60dbde961  libstdc++-v3/testsuite/23_containers/list/cons/55979.cc
! 5c92a318d67a9e823ef3fee9a0a64814  libstdc++-v3/testsuite/23_containers/list/cons/6.cc
! a3f034eeb286f2dcc42cf01669477cc5  libstdc++-v3/testsuite/23_containers/list/cons/6.h
! e84eba8f374b43bf73f466f2756a82dc  libstdc++-v3/testsuite/23_containers/list/cons/7.cc
! efe43b46bd1f2824edf2cb85bb144568  libstdc++-v3/testsuite/23_containers/list/cons/7.h
! 7f88545e96577216408111798e904cb3  libstdc++-v3/testsuite/23_containers/list/cons/8.cc
! 84033eb3e31946e99700f4175a033d60  libstdc++-v3/testsuite/23_containers/list/cons/8.h
! 5b3d760983585a77ad84bb24f6316f4a  libstdc++-v3/testsuite/23_containers/list/cons/87809.cc
! 0bbd3da14f6c46682406e530dce7f03b  libstdc++-v3/testsuite/23_containers/list/cons/9.cc
! 542519a4be042001da5c4010edce1f07  libstdc++-v3/testsuite/23_containers/list/cons/9.h
! 818f7e18e50c808abb4190cdc4fbea48  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
! 0eed1b9aff1dbdfdd30315ac997018fb  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.h
! f1b3f8cdc293c3931547a697503be10f  libstdc++-v3/testsuite/23_containers/list/cons/cons_size.cc
! cfa3a7441919eed344dba7f1e608fd24  libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
! 286b0ac2e582ad3581463da47dff9b6b  libstdc++-v3/testsuite/23_containers/list/cons/moveable.cc
! 49d90c175805b3a116f629784ef2435a  libstdc++-v3/testsuite/23_containers/list/cons/moveable.h
! cee25eaa15b30dff1221d6ca0ad378e3  libstdc++-v3/testsuite/23_containers/list/cons/noexcept_move_construct.cc
! bcc3ab2831190390d4d0323eefd4147e  libstdc++-v3/testsuite/23_containers/list/cons/self_move.cc
! 0f769592494bbc54f4be4d7396b2e517  libstdc++-v3/testsuite/23_containers/list/debug/90102.cc
! 45705bcb0bd05362ca804a8929f3d720  libstdc++-v3/testsuite/23_containers/list/debug/assign1_neg.cc
! 7cfb16b43e87f8d9ea61d4a11a010a54  libstdc++-v3/testsuite/23_containers/list/debug/assign2_neg.cc
! 328910c01b1d3e150b62e8e074687cd2  libstdc++-v3/testsuite/23_containers/list/debug/assign3_neg.cc
! b246ff5f3e828e1f7072a412f0c7a820  libstdc++-v3/testsuite/23_containers/list/debug/assign4_neg.cc
! cabb48f55bc3341a81cd4f3ca09688c3  libstdc++-v3/testsuite/23_containers/list/debug/construct1_neg.cc
! 8e02557592376391d421a583ef42f68a  libstdc++-v3/testsuite/23_containers/list/debug/construct2_neg.cc
! 8b2efa4088c8caad653fe673fbb9f2e1  libstdc++-v3/testsuite/23_containers/list/debug/construct3_neg.cc
! 5d7e58f9c8188cf213b36f0bc10c75db  libstdc++-v3/testsuite/23_containers/list/debug/construct4_neg.cc
! b7e17c264c79dc89b739005172bc5e1d  libstdc++-v3/testsuite/23_containers/list/debug/insert1_neg.cc
! ef8b6ab72f0fde983f0ba8c27da1b655  libstdc++-v3/testsuite/23_containers/list/debug/insert2_neg.cc
! d707f71fe439301bce1a901c045b9cde  libstdc++-v3/testsuite/23_containers/list/debug/insert3_neg.cc
! 4b29e60f7b05f4e7e20979d34cce6516  libstdc++-v3/testsuite/23_containers/list/debug/insert4_neg.cc
! c735636f00813e98d797d3855bcd0ac5  libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc
! 25724b0f92290bc6c47a0d8c69544e4c  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/1.cc
! b49d5839c92ded7599a59fd79440452e  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/2.cc
! a85668685dbc7276e21dadae742ea76e  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/3.cc
! fdb4eb4456c64c27835173a59e984d6f  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/4.cc
! 9da390b7a623858a8f787b6c4e6d75f4  libstdc++-v3/testsuite/23_containers/list/erasure.cc
! d6d30d09d07170a6eb520dedc46c0d6b  libstdc++-v3/testsuite/23_containers/list/init-list.cc
! 6c051c03f20331f97bcaf3b6f4cd64a1  libstdc++-v3/testsuite/23_containers/list/init-list.h
! 35b83e15d872853cd57f5f39bf70d244  libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
! d71acc9fb4c70a3d2e4a6b65aa0f8300  libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
! 07e143811930eb5c77f594aff8b933d4  libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
! 03c15f89033fd3956a005929cd956042  libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
! 3de3b3e6d18f637761d05af9bfd1d852  libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
! 4293ff0d1ce829326504f03301d921e9  libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
! d25b6635b03255d71ed5c110eb9027b7  libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
! 8afee581c66a68b2f94906125016a858  libstdc++-v3/testsuite/23_containers/list/modifiers/addressof.cc
! 92e3a603af90854c437499ef9b831a26  libstdc++-v3/testsuite/23_containers/list/modifiers/assign/1.cc
! 40e1a1753586a34c905bfb2d8eb0eb82  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
! 12c057db25765d5edb053a225d78c40f  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/92878_92947.cc
! 81639ee17c309ead699ddcc9cdb22b14  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc
! 7152d3ca1891e71f501363f1b22e014b  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
! 13115fde4dfda8892f0fa9a8fb8ba354  libstdc++-v3/testsuite/23_containers/list/modifiers/erase/54577.cc
! df75c73238ff2c8a2da1f50a46746bda  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
! 9ec8e653b9006564d13a1540118dcd00  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
! 176aeef724ca0203e15e6bb801b42316  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc
! 3015f2aa4fa79a21f65376aafa638df3  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
! 13bf69fe1b4fc091ff8a0d30b88b7718  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.h
! 48b56bd1afeb69e42d30bc0a940003d5  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.cc
! f36651dacc79c981b4c2411dc8426d00  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.h
! c12432bc6aafca134ea94748704264ec  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.cc
! dc8684dce75c872eeea2b965630d197c  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.h
! ad7783503dcff3d387db3a367e6050a7  libstdc++-v3/testsuite/23_containers/list/operations/1.cc
! e8c8be29275c80df058e01fb2f675a53  libstdc++-v3/testsuite/23_containers/list/operations/1.h
! 62df4e077b37b2bee98cd3f396df5ffb  libstdc++-v3/testsuite/23_containers/list/operations/2.cc
! ed795bfdac5f702636e6fac9b6b51a56  libstdc++-v3/testsuite/23_containers/list/operations/2.h
! ed8ef745bf93534fb3850230be5d961f  libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
! 3c9c338dbeb53fe487244a601ca0f1f5  libstdc++-v3/testsuite/23_containers/list/operations/3.cc
! 9d0d9ba2db22b91c34653bfbec618f5a  libstdc++-v3/testsuite/23_containers/list/operations/3.h
! 5a53af622dd64c6f4e892b3d318acf4f  libstdc++-v3/testsuite/23_containers/list/operations/35969.cc
! b476816ed492ab00c8ea931b407ae8fb  libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
! 4f1ef28897a8f7e8fb3d3bbcbdb7e4f6  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
! 1d23535fd5a2e969c7bef09545c28cf0  libstdc++-v3/testsuite/23_containers/list/operations/4.h
! 26502030bed54e414b572ee64ad6b313  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
  e9b09b08be9f79aee16cdfe50434376c  libstdc++-v3/testsuite/23_containers/list/operations/66742.cc
! 2585b4364860f9190843c33818d5007e  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
! 0fa45a87eb2cf2ffffe15ba7934094e0  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
! d7c154e77c0ff95e1991026a0d80e54d  libstdc++-v3/testsuite/23_containers/list/operations/91620.cc
! a3715d586683c1a293eebcb5c5fdb47a  libstdc++-v3/testsuite/23_containers/list/operations/remove_cxx20_return.cc
! d19f543dec5c766652365379dec094cd  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
! 3d65cecbab6364e3886dac6d02eb6a1c  libstdc++-v3/testsuite/23_containers/list/operations/unique_cxx20_return.cc
! 358d517d11c9818c013cf86a1feeb00b  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs.cc
! c94cc33339ad0a54b650c11f59f0f5b7  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs_debug.cc
! 505b55bd763c783edbceb7d97dec9d1d  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
! 12e485990fdc9243f341ba47be725c45  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
! 761c95f925a818e2119a49748bde15a4  libstdc++-v3/testsuite/23_containers/list/range_access.cc
! a66cc0c4b3a336a6b1a631b8a19cbc0f  libstdc++-v3/testsuite/23_containers/list/requirements/citerators.cc
! 6e8fd052ba24fa53a561392864999bbf  libstdc++-v3/testsuite/23_containers/list/requirements/do_the_right_thing.cc
! a2c843a22f5766c619561b83b1dba969  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
! 65b66ca50dea8e336f4c305d01d3efab  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor.cc
! 2e0a0d954a8a32b39859f32bb77944f9  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
! ce2840f08707ef3568e19d14f6d74000  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
! 4d8bd0f3616ade2c0d87f433412b6b6e  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
! 9a2b9604cb0a25f9a16847cf6badb827  libstdc++-v3/testsuite/23_containers/list/requirements/exception/basic.cc
! cf4e58f2e1ff637485536ccf5b8e1bba  libstdc++-v3/testsuite/23_containers/list/requirements/exception/generation_prohibited.cc
! 5c014f80d351464110bb9a2f2cfab7dd  libstdc++-v3/testsuite/23_containers/list/requirements/exception/propagation_consistent.cc
! a23439ba2dfe1fdf592a3740b9514efa  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1.cc
! e1e791b81105f4808779ec8b6267c2d8  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/2.cc
! eac0849f6d006d8c06554899953ddd3a  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/3.cc
! e903b44a5d2f25d79b9b7888aeb02f68  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/4.cc
! c64fd10ea645190498b7f2862b9db541  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5.cc
! 6223474f8257cbe7266063327fa42939  libstdc++-v3/testsuite/23_containers/list/requirements/partial_specialization/1.cc
! a76e6eb3c5955a052d651224c45da376  libstdc++-v3/testsuite/23_containers/list/requirements/typedefs.cc
! 6401d6147abecef7e5cd678e979c4a86  libstdc++-v3/testsuite/23_containers/list/types/1.cc
! 494fe2e357fead0d178620b3abd64eeb  libstdc++-v3/testsuite/23_containers/map/14340.cc
! 00501f2dd0c5bb9f5ba34690517bbf2f  libstdc++-v3/testsuite/23_containers/map/18604.cc
! 125853779db7cffe56f5aa14cd5baf0e  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
! 9cb34ca7d43a314960de2f1be54e7646  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! cd47a2e09b1644b9a48217b6a3c8fc94  libstdc++-v3/testsuite/23_containers/map/48101-3_neg.cc
! ee8e8aa914816b09714c1177d16ef53a  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
! 81bc9872e681e9fc5accc7fc88a7594c  libstdc++-v3/testsuite/23_containers/map/56613.cc
! 8457bb5e8495e7d6aa2e97f5219b9166  libstdc++-v3/testsuite/23_containers/map/58764.cc
! 00379d4039376c2f0dff6c028fd1a385  libstdc++-v3/testsuite/23_containers/map/59872.cc
! ecb46854afdbffad8e5c9c9ad9a470ae  libstdc++-v3/testsuite/23_containers/map/77334.cc
! 3d16409612d6612f011c5f90260ada03  libstdc++-v3/testsuite/23_containers/map/92124.cc
! 5f50e2babefa527492191e293fc29c2e  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
! ecafee5e05ad95e83c3a47d581d759b1  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
! 71eee9de0f67e92dc48eaef089940432  libstdc++-v3/testsuite/23_containers/map/allocator/default_init.cc
! 4d5e930e0fb4a5a89cc07b12b1a6f866  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
! 6d70d19d8933261b92aa8fc7435df9c6  libstdc++-v3/testsuite/23_containers/map/allocator/minimal.cc
! edc498ba6c92b4569a07a1cc364f18b5  libstdc++-v3/testsuite/23_containers/map/allocator/move.cc
! 72e5bd953e1911568882ad17eec9b3ff  libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc
! 022bf20c3bf343d07d7069ee4d0cd2de  libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc
! 135a0c7f49a72cfde1495db063244dd1  libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc
! 1cccd65c79dac9d1adb7662e15b5663b  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
! fe9ef0ee8f048f928cad19414e89c601  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  16c187179e9e1a4ff16cf122fb20804e  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! 1d6eaa25aec7a44b8fa5d32f771013e7  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
! 1ed2b7972c8b95b1b139b0ee9dde88e4  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
! d2a2427d8ef34121545944fd21f151bb  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
! 556a51320ee1552e14705e7e4ecbb30c  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
! 64d3e1513485be7f8ab86c36632257ba  libstdc++-v3/testsuite/23_containers/map/debug/90102.cc
! 81c350c460847817abd9f2a165bda769  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
! d9fd3c65d63018c0d34f41faf6acf886  libstdc++-v3/testsuite/23_containers/map/debug/construct2_neg.cc
! 0b1214350205b4b5977e9fc28f3b08d1  libstdc++-v3/testsuite/23_containers/map/debug/construct3_neg.cc
! 61e47b8df304a171d909415448834fc0  libstdc++-v3/testsuite/23_containers/map/debug/construct4_neg.cc
! 8ab5e6ad3d4b0be250478ee5eed52a1c  libstdc++-v3/testsuite/23_containers/map/debug/construct5_neg.cc
! 6ad75542318ef84c4bcf62b713471bd0  libstdc++-v3/testsuite/23_containers/map/debug/insert1_neg.cc
! dafefb5d46e1977d9478380bdf146731  libstdc++-v3/testsuite/23_containers/map/debug/insert2_neg.cc
! aa3c81661cc5ffc42b490968753fe698  libstdc++-v3/testsuite/23_containers/map/debug/insert3_neg.cc
! 04d7c6b7fb6d0423ac4e0b3d282ff2e7  libstdc++-v3/testsuite/23_containers/map/debug/insert4_neg.cc
! 6dc1128bd2ea1015a82bbceb2fea2101  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/1.cc
! f2cc2ca154a00b7221106bdacb59b974  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/2.cc
! 932494b0d3c4f0fe9f6355c18e41df81  libstdc++-v3/testsuite/23_containers/map/debug/move_assign_neg.cc
! 17d6ea66c7b717f29682d85e29e5bc83  libstdc++-v3/testsuite/23_containers/map/debug/move_neg.cc
! 7a925328616259734d78a7a6c22e462d  libstdc++-v3/testsuite/23_containers/map/element_access/1.cc
! 2f07173af80daa806e12f3d2c893f30e  libstdc++-v3/testsuite/23_containers/map/element_access/2.cc
! 532ce445f79f205d04cbe593739b2b14  libstdc++-v3/testsuite/23_containers/map/element_access/39901.cc
! 3eb3aad27303280f76af3f03be7a40d3  libstdc++-v3/testsuite/23_containers/map/element_access/46148.cc
! 638e20728169750461f99f0007f7f08c  libstdc++-v3/testsuite/23_containers/map/erasure.cc
! 12c9e54bdb8b7bc3c2c6afea7d0d1724  libstdc++-v3/testsuite/23_containers/map/init-list.cc
! a2fa5a1d057fba63d0586996fd4e5f8b  libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
! 190ea7e44e5f498d530d5f384460db60  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
! 65c93864ca531a2dafefb20331b9de6e  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/92300.cc
! 31f967a5bb275aefe7af35363b1a2390  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/92878_92947.cc
! 10c03d16c56c505b0d533a0231f9e320  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/47628.cc
! 0abbd71a92f9993b46c8436b5fd00e90  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
! 1ee6c8863af5b68d7f5032cd8b4ca73e  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
! e4db5ac0791dd82fdcc342c56f52f2c4  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
! fe8fcc15776949f8e68e1373fac8fdd5  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
! 837bcba71c4e37be32f962e54dbfafb6  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
! c9eebe1a85f17f814dc8ce039bb54f10  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
! 87bb4a3177212a8443cebe0463e45ac7  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
! 95024265afd7d3ccf55340bd4ddedc5c  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
! 697d918ba611c04422572788be79c875  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
! bce5590dc4177d3794bcbc8141dc49c1  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
! 76c7140eb2588c716dc82ae817237b2f  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
! 16ee8a55b9ef14176dff7dd15960bce5  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc
! c423b3f9feda6d2258e89ab2d974ead8  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
! 08d4c52d7b974928c7bf742b835f3474  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/87194.cc
! 0c90bbb89e71d8600d1700a29a8e6b52  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/92300.cc
! d9943e9761bc07a076f479c9b32f9c3b  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
! d97a111c9e7b7487c26b2157acbaeaa9  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
! eebc3dd165121b6a55acfd197e30b097  libstdc++-v3/testsuite/23_containers/map/modifiers/merge.cc
! 78d23c96e677100bc1ee44f5fa3613f8  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
! 6aa4f6cd7be1b45deeedc1ddda286d11  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
! fcfbdea21a25d24c300857719bda00c5  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
! a96fb2e589e24ddd67769d0cad14d278  libstdc++-v3/testsuite/23_containers/map/modifiers/try_emplace/1.cc
! 1778bf43bddefc44ffb69f73f7a387ad  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! a3e602637bc43439d7e1786726b05300  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
! 52dafdb23671c48dea9c216e8dd54209  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
! 8bc10c1154d321a07fe57685e5a5e5c0  libstdc++-v3/testsuite/23_containers/map/operations/contains.cc
! 4b07d386dc6e62ed2d4429ac0ac8b56f  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
! 53e300fc73e4feec385f9d517324982a  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
! c0a4d0249d05bf95361554028761852d  libstdc++-v3/testsuite/23_containers/map/operators/1_neg.cc
! c039c64bb8ed4b47947c12cd1126e4c1  libstdc++-v3/testsuite/23_containers/map/operators/2.cc
! 3d3ed296f5d7819433840097dd3a6a25  libstdc++-v3/testsuite/23_containers/map/operators/cmp_c++20.cc
! cdcfbf00bd8f4629b1a65e476800953f  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs.cc
! f7f6eb2b8a1845658972adca0a53e043  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs_debug.cc
! d64d0f7052213c148ca270854ca2884e  libstdc++-v3/testsuite/23_containers/map/pthread6.cc
! db4593e3b9936b354716e6c01dbdc970  libstdc++-v3/testsuite/23_containers/map/range_access.cc
! e561e7afed26b4cdd161c1d6bafc7fb3  libstdc++-v3/testsuite/23_containers/map/requirements/citerators.cc
! 49fcbc383d8e526c519e5182bb7c5da6  libstdc++-v3/testsuite/23_containers/map/requirements/exception/basic.cc
! 30c4b25ffee7b8b68cf159cb9efef8af  libstdc++-v3/testsuite/23_containers/map/requirements/exception/generation_prohibited.cc
! f866932d4c269fea6756762214279665  libstdc++-v3/testsuite/23_containers/map/requirements/exception/propagation_consistent.cc
! 6a67617ff445957c8ebe3dba2dd54ea1  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1.cc
! 067e2a358f4b21c7c2610e758c182b86  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/2.cc
! 6541824f7a141fcabbdfd410d7f253ca  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/3.cc
! 4876d975cbe5d572e93874cfdc5bcc1b  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/4.cc
! 291f02e94d5ecd3b10f8cbe8a091ee63  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
! e3cbe40c29eb00c19c150bcfcb597f0e  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
! 3fed3e0e965496462294ee7c37bcb0c7  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
! 6efbd2a4eaeb3f85a01195f40ac2d315  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
! f1972ddfd4947459abcd287f5159f78d  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
! 9623213fd1acdfa67c836a1ade9c0150  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! 28c6d15851100bdfd49db4f78a6ccad7  libstdc++-v3/testsuite/23_containers/multimap/48101-3_neg.cc
! 775dcac567e5bf8bae1a0f871b910ea8  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
! b981d1079b882dc9d379e79c71f577d6  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
! 934ae0d93257e30785c03318c7f44ba7  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
! dfb688360bfafbc842db5a4258fea5b7  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
! aa85bd6a2141fda4960e00cfc5edb546  libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc
! 1eeaf39ae0c6328aec3d27e4255d5d5f  libstdc++-v3/testsuite/23_containers/multimap/allocator/minimal.cc
! b717175fd28cb2c9f27673012f328449  libstdc++-v3/testsuite/23_containers/multimap/allocator/move.cc
! 54c9ef971c5ae90a336d2b62453107e1  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc
! d7d638387c8e3ca35bec33964c7588cd  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc
! 09c233cdf8164ae39b11e674163b9723  libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc
! c6979664ae7e0cb3b74008bc2fce993b  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
! 6658ecd46790001e6eb545dec6bffd4e  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  9fc3989fb543a9b01e92a0c23926622f  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! 565a3e22b1af662140874162290c1150  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
! dec1687cd332d1b5d0135cb8177511b0  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
! 98498ab73b09b27368b105abd99f1b9b  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
! ba8aca209aae5110729cd7b19d2effb8  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
! ca87378172a7cc075172a66db7a4015a  libstdc++-v3/testsuite/23_containers/multimap/debug/90102.cc
! 5c2eaf4517295d52ff083035a53e0469  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
! 20440a3d1b778652748c34f1f7864855  libstdc++-v3/testsuite/23_containers/multimap/debug/construct2_neg.cc
! 2edd8220a0ef3906e316a3c2e04710eb  libstdc++-v3/testsuite/23_containers/multimap/debug/construct3_neg.cc
! e35aec733968a64cd25899e6850d2559  libstdc++-v3/testsuite/23_containers/multimap/debug/construct4_neg.cc
! 697ab2fcce57f0ba58b9ea34d388ce36  libstdc++-v3/testsuite/23_containers/multimap/debug/construct5_neg.cc
! 9c0ecf4b74561e1463c5d5e393edbf83  libstdc++-v3/testsuite/23_containers/multimap/debug/insert1_neg.cc
! a704549bcc2a578aa78182b43f14f901  libstdc++-v3/testsuite/23_containers/multimap/debug/insert2_neg.cc
! 5508f65cb7d8cc30761c76c85fa1dd4e  libstdc++-v3/testsuite/23_containers/multimap/debug/insert3_neg.cc
! 5f6f55b2a05a696bd94bdfe32b65538e  libstdc++-v3/testsuite/23_containers/multimap/debug/insert4_neg.cc
! 3d89c7806064795f797c4245a6af7f29  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/1.cc
! ccf6c1863135b0c7e8fea049ab0297e8  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/2.cc
! 1bc4a768df95e56649b10b8e5e0dbd03  libstdc++-v3/testsuite/23_containers/multimap/debug/move_assign_neg.cc
! 3ed00f352114cd4646fc2d22b9360eb1  libstdc++-v3/testsuite/23_containers/multimap/debug/move_neg.cc
! 6c52c32ab22a589ef609bca48105672e  libstdc++-v3/testsuite/23_containers/multimap/init-list.cc
! b8c001335fb5eecf4a8a1aa612731129  libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
! 99b3e2020442ba04541a19fd70f3c11e  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
! a8228808f4b41a0a11192645f77678d5  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc
! e5c14c8b333c4c8eb5ea2257286418eb  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/47628.cc
! 7c4c8ee228450ba7b98dafc4e09aacac  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
! 86ca22d9393f26fe30ad1927aac5a4f8  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
! 25660b652ba6941b24a889d8e94896c3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
! 7d338674b5c14a281c73c6c222d96b40  libstdc++-v3/testsuite/23_containers/multimap/modifiers/extract.cc
! 3e9869dd73b07e859afc5131701d7c3d  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/1.cc
! ce6c4a1807e5cbe3d08af01f5df45dbd  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/2.cc
! d92bcc2460784fd040eba9728c6a7539  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
! 6f6a983f9e5393f1d3c0fa6f304fe4be  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
! f7e008bfd1b68a0c5bae1c24ce9ac5ae  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
! 82e19096681fc9efdec8df794a42aaf6  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc
! 6065ce930083f4dbfb6265d855131d87  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/87194.cc
! 273d5698aa368f273cce3dab9068b897  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
! 174c4d60e5d8ef73788a3700e4b56f05  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
! b1b7bb0c4664e2e4c55db7252dcecd90  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
! 23e4447d97882141eeb51640b8178367  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
! 9b369a94561557e97e4a1960bd9774d6  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
! 55c269a1a883b8c74a41abe62622138d  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! c9433a77f3e5721f54e5628bdb1762b9  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
! 1d2833ce9925f1f3d860c066ec1d1145  libstdc++-v3/testsuite/23_containers/multimap/operations/contains.cc
! 124889795e0daf969557756acf70ff4c  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
! b4af03f00186000865db0c6e3d332a03  libstdc++-v3/testsuite/23_containers/multimap/operators/cmp_c++20.cc
! 340359a392d8968028a806825a94dc7a  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
! de9070d834d7e882dee6d7aae32d0a3d  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs_debug.cc
! 415433b4edb21d1c5e798823ef12c3a7  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
! 5eae4969f1d238fc5184105a1941bf59  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
! 977467e11a16e1993cbc10a6c23a4faf  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/basic.cc
! 77bd385a66228251c67b361ca9b51bde  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/generation_prohibited.cc
! a1ed4bf6f475f37362df4c913bce071e  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/propagation_consistent.cc
! 7a68c93765c540a6bc69b40b0b71f602  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc
! b5027b550f8b8d3f56d5a33bb1808bc7  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc
! 75ab90b204a296e9cb0956d56edb5edb  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc
! 36253aba32bbc34adb453479021ce32d  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/4.cc
! 4b1ebb3042956dfb7c885bb4a728f6a7  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc
! 8a1a48abfd3212b8a477d978d9f98e17  libstdc++-v3/testsuite/23_containers/multimap/requirements/partial_specialization/1.cc
! 836aa73eedc584d61725aa9888524545  libstdc++-v3/testsuite/23_containers/multimap/requirements/typedefs.cc
! 75c9a2bd180e2ac64e3da7d53f5089c0  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
! 5a403affa80a0cad781b064d6e90766e  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
! 369eab0a9ffc9726cf252f1f2a3b5d9f  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! db60aa8daaf4ce7d0313056fc4ce2182  libstdc++-v3/testsuite/23_containers/multiset/48101-3_neg.cc
! 9f400468bd4ff07bc37130e40b4f61f6  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
! 6dffede4803e08576e34bb538d6cf059  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
  c599e48655ea2e75c592ab5a1cf5ae3c  libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.cc
! 9ffe491dee3d1dce5fe4bb22d83247c1  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
! da8a0576f428ebf5238a9bd91f0ff890  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
! 1ccfa28e5145323020b613ddd52569d1  libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc
! f74287f6216b7c5597ce4f23d6dde1da  libstdc++-v3/testsuite/23_containers/multiset/allocator/minimal.cc
! a8a47918010954d3c72029deb163b6ca  libstdc++-v3/testsuite/23_containers/multiset/allocator/move.cc
! 1977973f4986962201a6a0d2729c35d4  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc
! a4e939e31401b1bac53bc2fa007ebe66  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc
! 916fcf5554ca884175d5a8c1bad6bc88  libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc
! 4067258f678948ff3f959e7e7301235b  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
! 86bac0a1d0574b964a682a9b54508e87  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  bbb896871fd7c7c3f4be6d45db152294  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 4c82c06c2ec2e26e18f6a33546fc7eff  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
! 92811a4d0a2fe53dc530b101432e17c1  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
! a04e7a0f3aa0f5cd21edd967b84fed96  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
! fd30b20ddde91d1eb5adea9ce6fa2e1b  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
! cc500aa3a1786879d19a1e14896e3977  libstdc++-v3/testsuite/23_containers/multiset/debug/90102.cc
! 3a24e567146257062e47442dbe9b37d3  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
! 7cac63844bc3240c3d23449ab3a4bd8f  libstdc++-v3/testsuite/23_containers/multiset/debug/construct2_neg.cc
! 15ec2f3372fa2f6b84d1e72e4cc507b2  libstdc++-v3/testsuite/23_containers/multiset/debug/construct3_neg.cc
! 720192b3717a6a16cc333b78a285ce9f  libstdc++-v3/testsuite/23_containers/multiset/debug/construct4_neg.cc
! 2096c65158f1c0bb54c2dd277700768b  libstdc++-v3/testsuite/23_containers/multiset/debug/construct5_neg.cc
! a4e18d095c769ee8faa90342e9c807a3  libstdc++-v3/testsuite/23_containers/multiset/debug/insert1_neg.cc
! 249248c5e18e59207995c91d8ab709d0  libstdc++-v3/testsuite/23_containers/multiset/debug/insert2_neg.cc
! 178597ab84d3745e5d83c685fb86ed7c  libstdc++-v3/testsuite/23_containers/multiset/debug/insert3_neg.cc
! cf66d34b553d92499f465e4b20a68307  libstdc++-v3/testsuite/23_containers/multiset/debug/insert4_neg.cc
! b90033bf134172fa5857680599d4fb43  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/1.cc
! 619536bf04cd33ef5e21b47d06d42f05  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/2.cc
! 1f2057626117ba0f2fef313ab9121fa9  libstdc++-v3/testsuite/23_containers/multiset/debug/move_assign_neg.cc
! 8c45857d459b7057a803a299991cac30  libstdc++-v3/testsuite/23_containers/multiset/debug/move_neg.cc
! 1bdeadc0b50cc91e2151afcdb2371adf  libstdc++-v3/testsuite/23_containers/multiset/init-list.cc
! 4c36e202d6abd8306550ce348e12b0cd  libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
! cea6cf805e4009657d1c4634153f8ce3  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
! 04dd6410ae9c4467847c20d2676d0459  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc
! 6cf6417fbaa74c1aedf488f0217ccd92  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
! edf55d4a874db3c57e79e2ea7378c34f  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
! 9a37b801ba4cbb3bc5568ec8203a9342  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
! 2c42a401dce06c4cb767ebba319c0a42  libstdc++-v3/testsuite/23_containers/multiset/modifiers/extract.cc
! 349776cb07cded000e47a5d33cca8761  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/1.cc
! 3bf7a5872b33c09c0cdce05a7b45bb5f  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/2.cc
! b96383198f4a6376f0987f38125f33c6  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/22102.cc
! c63a9cae80fdb9e99bd9162b7aa02d55  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/3.cc
! fdc18e98042667064b5d0292ad77ec10  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/4.cc
! f34268a376ec6e97b98994d334efe8d7  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/87194.cc
! f21db464ef0c4c0675896ff98d9036c7  libstdc++-v3/testsuite/23_containers/multiset/modifiers/merge.cc
! 7a36a1366e8dce01719d3663aaa01c47  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
! d9d5a2676f2445884fb8b25f03df72a5  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
! ed9f0d05687daaabb207ef4785a28373  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
! 84f00a75bcd517d8d2713a7fc47b1bf4  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 8be44dff1b02440e523eebdf69ebcf09  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
! d98f280ea6a8854f780c80fe450997ce  libstdc++-v3/testsuite/23_containers/multiset/operations/contains.cc
! 65abbcbb0f7a9799a949ac0eba9eb3ff  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
! 53f61ca3014c535b371ec0003be08a72  libstdc++-v3/testsuite/23_containers/multiset/operators/cmp_c++20.cc
! 5029dd460eca1b7bb3cec79a7153dcb4  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs.cc
! 518695ff7e7f8940351d37e1209c9355  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs_debug.cc
! 47748d9c811fb4cbc84778f2dff1bd76  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
! 281b4779e9a9a7cf895314c2ca705b84  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
! e9d3a58716eff963c2194f858bee9661  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/basic.cc
! dfff517accc762ef737bfec237587c20  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/generation_prohibited.cc
! d30c56e3bb91f40c89b68c3d617a53ad  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/propagation_consistent.cc
! 35433fecc647a2c8879e244f42575f2a  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc
! 87a2903f2679ed14ad9367bfbd6d5857  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1_c++0x.cc
! c6fa183e0a4e72232ed33735de49c51e  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc
! 85ffdffd6e43c6106b799652ffea71b5  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc
! 49a756c6b6a9a0c8d65a6a8145d0d990  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/4.cc
! 59ec91045f74da6ae2395186939e0de0  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
! 575033997250687214cbd42e31afabbe  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
! 51bc9e25c22f05d9257766c8e4e231d7  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
! 4c7a5e78fc3ca1fb7cc5abe957ab0852  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
! 5ef6644387d8d7992e528ad0fa7cdeee  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
! 53d0d778dbf801f3ed5438c04100e95e  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
! 312751999b9ec770146dc234a76afdc2  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
! b58eb98c3e69effa35a5d8d7d066fbc1  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
! 28d0fa9892d646aac8d9787234f3b3a3  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
  d28290e2547d3a24b7652041265d30c0  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3506.cc
  1b78335293495d23cdfab47884650bc1  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3522.cc
  a0bec79150ce876cf8e27c12caf9e151  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3529.cc
! 20888f2e028bfbc0a48c88035fcaed72  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
! c7e0f8a4afacf0d22ca0254f1b4c5df7  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
! 4c165d6966a737c39c8e6f886adac197  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
! 805d5c52cfec20b4b02f24cd28f0cb7f  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc
! 4b526b02e2f291d075101128c676155b  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc
! c27bbd874b0c9adc1c08da96a51362f8  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/typedefs.cc
! 07722d3d571442d492d923d0673eab3b  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/uses_allocator.cc
! 49c2c33cd6ae9cf720b669298e0b04a0  libstdc++-v3/testsuite/23_containers/queue/77528.cc
! 1dac54f07d4c4c2f883dba1ff2ff2b0d  libstdc++-v3/testsuite/23_containers/queue/92878_92947.cc
! 9691fd542503499d1f7e9f041587cd5b  libstdc++-v3/testsuite/23_containers/queue/cmp_c++20.cc
! 636a9701d7b852e2fe759bb9418e24ee  libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc
! 088e77eb0d6f6338362e617e125236cc  libstdc++-v3/testsuite/23_containers/queue/deduction.cc
! e3b6e5147cdfa1f86db2cb6d8a500331  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
! a19bb4c1d7d5e1f94114811f36107416  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
! e9ff8403bf68a662df70f8f04711aea5  libstdc++-v3/testsuite/23_containers/queue/moveable.cc
! 6ec90a84064d067812126c68016bd8e5  libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc
! ce7f9d5a80890311cde59ebc5c2d968a  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc
! de3acd0879efa9bfc1507891bc2c3594  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc
! d37ced4e057711b82c5fa37aad071bfd  libstdc++-v3/testsuite/23_containers/queue/requirements/typedefs.cc
! 0512179f15bf56a5998a4509038d1880  libstdc++-v3/testsuite/23_containers/queue/requirements/uses_allocator.cc
! 22e8a76964f4085c923a2dc34ffaf1db  libstdc++-v3/testsuite/23_containers/set/14340.cc
! 82542a4d9914b47ffdf044ab0abfd482  libstdc++-v3/testsuite/23_containers/set/18604.cc
! e46001bc2bada14a2bc4ccf81da51b64  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
! aff828ba204169f5b6fac3bb81583a66  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! 7cc2721dd9f8b9055a47fb4887462d13  libstdc++-v3/testsuite/23_containers/set/48101-3_neg.cc
! a4ae070b4b757202682fc8994b61029d  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
! 6311cfb06c258e3e0d59b68a03d8ffc9  libstdc++-v3/testsuite/23_containers/set/58764.cc
! 5658264318ee000b1bcab05ea88f4f35  libstdc++-v3/testsuite/23_containers/set/85965.cc
! 1555a7367285c5b1d6d1ca81c7d3b6dd  libstdc++-v3/testsuite/23_containers/set/92124.cc
  4934612c2b7203e0e300739be2067260  libstdc++-v3/testsuite/23_containers/set/allocator/103501.cc
! c677579d2b170768faafda6e67265d40  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
! 200a3ec4f8ab1607385d325dd17c58de  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
! db378957b377adce16d990444a55af7a  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
! 1698217b3a17b1feb905d0cf14464c03  libstdc++-v3/testsuite/23_containers/set/allocator/default_init.cc
! 848371f746b2fc8f386ba9c5a82a8031  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
! e15d5d2e18bbd1967f3eeaa04ded3bf7  libstdc++-v3/testsuite/23_containers/set/allocator/minimal.cc
! 0740c1899b416a8ba0db940e83c03db7  libstdc++-v3/testsuite/23_containers/set/allocator/move.cc
! 06d72faf7664c98fab73ba16b388c4fb  libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc
! a49935fb238f5b7a78c10248cd5720b0  libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc
! dd4ce99aa3f9c961ed4d6061d32552e9  libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc
! 2990a4780cbbede7c4d465576e9e8e3d  libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
! 7e050b43e2bbf164d904cfcd4bd4ac03  libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
! 895545eba9cafc20af99165f6759bf65  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
! 5ea4a827bffbc972e19d7f9246fc55ff  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  481e4d5cd05c18aecc038aaa29dea042  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! de01351e7ab138ea2c833a03f34ebd8f  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
! 2103836a1624ae56da522dd6904a82ed  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
! 114cf068345b516b50d28afd936c6da7  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
! 7fe972374e7fffaf967aebd200fc3655  libstdc++-v3/testsuite/23_containers/set/cons/self_move.cc
! 6186975b9eeb309a4b60c4ff15e2f9f9  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
! 6db14899579486ad5d31096337a4b9e6  libstdc++-v3/testsuite/23_containers/set/debug/90102.cc
! f9f2fa10085d459bdac16030cf2bf33c  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
! 99ad87ac484ef5f950b5ba1894b1e351  libstdc++-v3/testsuite/23_containers/set/debug/construct2_neg.cc
! 77d9445a105ebf72bb0319b968972509  libstdc++-v3/testsuite/23_containers/set/debug/construct3_neg.cc
! 1e25d87f296932f858c08adfc8d2f87c  libstdc++-v3/testsuite/23_containers/set/debug/construct4_neg.cc
! 35db01b165e00f7b99c6189916416477  libstdc++-v3/testsuite/23_containers/set/debug/construct5_neg.cc
! 055fe509d93f0683084981809e2d5b4e  libstdc++-v3/testsuite/23_containers/set/debug/insert1_neg.cc
! ac18099ff293e0ad5ddff785aa42ad2c  libstdc++-v3/testsuite/23_containers/set/debug/insert2_neg.cc
! 8d3960d3c895af35bba7cb478ecc98f4  libstdc++-v3/testsuite/23_containers/set/debug/insert3_neg.cc
! 73e2a2bd262d12356c1b51bb5380a82e  libstdc++-v3/testsuite/23_containers/set/debug/insert4_neg.cc
! a97381ea5bd9d71f1b2acb4fac3c8d3a  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/1.cc
! 10d10c07c44421ef68c5bd8c2b4a2302  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/2.cc
! 79b094c197eb2c4eb556ab442eedf5e0  libstdc++-v3/testsuite/23_containers/set/debug/move_assign_neg.cc
! eec660a30623e93c2c265aa52e826178  libstdc++-v3/testsuite/23_containers/set/debug/move_neg.cc
! 59200844b85aee3bc4abee6c07f31c7e  libstdc++-v3/testsuite/23_containers/set/erasure.cc
! 4378e383c4836188ab85292183733169  libstdc++-v3/testsuite/23_containers/set/init-list.cc
! ca83c2cd9ba50771210d79b9e9e26a9b  libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
! 56efde33fea333b0aafe8a6d145a9d1a  libstdc++-v3/testsuite/23_containers/set/modifiers/17948.cc
! 9bf1d5e6b5c7ccdbe887e1aa22a6188d  libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
! 3766e702e05a1f872585924ed0fdcc80  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.cc
! 69a1a669fc493025f3825f3be61f714c  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/92878_92947.cc
! 5f75b5bd07e065984aa94f3c3538920e  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
! d381d4bdcb84fab98eb3147b812a9b40  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
! 8a9f0a9ecab138a5d7fccfc92df56070  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
! 31568341d3849d60ba302625b84947da  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
! 548a702b8144c97b061c44874c86d0f2  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
! 599b345e793e3ea3c8045f8acc961644  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
! f6f826f43a7cd9d863f377e1622fbc5f  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
! ef4a3c8268c369e2d7007fc94ff6f043  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/87194.cc
! 7cb24c43334e439162f41e68b81d4a80  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
! f3125a81a2cade36503d845c5a143cf5  libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc
! bed5c55781fb945ccd60e15fee8bdbbe  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
! bd025158dd72ce8a1a3a768fcb931063  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
! 3294a4c45be4d807cbb334d45c604548  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
! 5bbe38e856607107b45c18a40672de62  libstdc++-v3/testsuite/23_containers/set/move_comparison.cc
! df63c0274d4dfa5820257ae12a458e21  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! ff104ca544f9a400383ea3f5cc7aaba4  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
! 0b9ee1c22ce239c31584a6897a5c2e8c  libstdc++-v3/testsuite/23_containers/set/operations/contains.cc
! 54c9350e8677f40859ca2349625c5e07  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
! 8f9aa9261333422c02358269d3d9ed38  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
! 41558c5f85d79681ddc3148a1c8811b0  libstdc++-v3/testsuite/23_containers/set/operators/cmp_c++20.cc
! 93bae918875d775f8d5b633796f0519b  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs.cc
! 391484995372b353c98a01f5ab728c2a  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs_debug.cc
! eeb05c6d39e9bf3d513697da44cd3f7b  libstdc++-v3/testsuite/23_containers/set/range_access.cc
! 332dc27211ed6e16164e24a94ba266fc  libstdc++-v3/testsuite/23_containers/set/requirements/citerators.cc
! 6d20779bfcc2e21172300965b202d53c  libstdc++-v3/testsuite/23_containers/set/requirements/exception/basic.cc
! a82fe29e417f269fdd13e754f5696625  libstdc++-v3/testsuite/23_containers/set/requirements/exception/generation_prohibited.cc
! 3378622a2ddc4ba4588241b1822a8109  libstdc++-v3/testsuite/23_containers/set/requirements/exception/propagation_consistent.cc
! d1a69df3ff5af44b4fc379a35eed68f4  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1.cc
! 0b6a8639881c04184f436814d953d6a2  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/2.cc
! 15ccc00db108869f02351fe598a83be5  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/3.cc
! bf862897203f922e23e6e6f7c34eb488  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/4.cc
! 4cffa661fb701c676f2c948482d8d0b0  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
! 5afd6557aa4e94aeafbccac635513312  libstdc++-v3/testsuite/23_containers/set/requirements/partial_specialization/1.cc
! d37b503527aad4f5ca7893f408e04af0  libstdc++-v3/testsuite/23_containers/set/requirements/typedefs.cc
! f14c16459ad476e5964d3cef75748e25  libstdc++-v3/testsuite/23_containers/span/1.cc
  62d71e263b54ca463af9228fd31a5f0f  libstdc++-v3/testsuite/23_containers/span/101411.cc
! 75cfae1e2074f67939bd49cbd8b223f6  libstdc++-v3/testsuite/23_containers/span/2.cc
! cd56d2fbbac10823b34a63ab0afe0ae1  libstdc++-v3/testsuite/23_containers/span/back_assert_neg.cc
! 1715719f54d0cc8f96ee1d973758a9e0  libstdc++-v3/testsuite/23_containers/span/back_neg.cc
  06a45501dcaec8e13d6ae1e6ee40d1b7  libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc
  b500468357c8536c575705ba4a6c389f  libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc
! 82ff24ba854ff591a9683eee8c73620e  libstdc++-v3/testsuite/23_containers/span/contiguous_range_neg.cc
! 5b5d9aa1517fa244f6d69b9b813da667  libstdc++-v3/testsuite/23_containers/span/deduction.cc
! 1f4dac686d5d8b9cfe46d8a772954bb0  libstdc++-v3/testsuite/23_containers/span/everything.cc
! bc2074d437170093c73e9d473f5630a6  libstdc++-v3/testsuite/23_containers/span/explicit.cc
! 187585a5d2a2fec327e2004d794bcb4e  libstdc++-v3/testsuite/23_containers/span/first_2_assert_neg.cc
! 584c35be17f35242bc572fa2875df9a0  libstdc++-v3/testsuite/23_containers/span/first_assert_neg.cc
! e9ea80b420cf2fd67a41ba992d0444ba  libstdc++-v3/testsuite/23_containers/span/first_neg.cc
! 484856060a9da84e29b90e6d11bc482b  libstdc++-v3/testsuite/23_containers/span/front_assert_neg.cc
! 4d8381e3d6317423d9cb17d5a2188be2  libstdc++-v3/testsuite/23_containers/span/front_neg.cc
! 61c6bf4195462886063df5e0dcfb51b9  libstdc++-v3/testsuite/23_containers/span/index_op_assert_neg.cc
! ccd7c561ee656bc1ec975ed71de93d7e  libstdc++-v3/testsuite/23_containers/span/index_op_neg.cc
! 195b150e813a21fe7fbd40fecb3c0538  libstdc++-v3/testsuite/23_containers/span/last_2_assert_neg.cc
! 29542f518cdc1e6ae000dc39f39a96d9  libstdc++-v3/testsuite/23_containers/span/last_assert_neg.cc
! 94ba8093aff6de9eaecd36e5a15c9923  libstdc++-v3/testsuite/23_containers/span/last_neg.cc
! 055d1579166b694ba6f295dbb79abb20  libstdc++-v3/testsuite/23_containers/span/layout_compat.cc
! be264dec031af8977eb90af0c2a20da7  libstdc++-v3/testsuite/23_containers/span/lwg3255.cc
! e3b4fa7a646feb71f54687d5342d0083  libstdc++-v3/testsuite/23_containers/span/nothrow_cons.cc
! 81f88380790fc35a3bf062dd25574499  libstdc++-v3/testsuite/23_containers/span/subspan_2_assert_neg.cc
! eabb40ad7d4726f222d93dbce6eca01b  libstdc++-v3/testsuite/23_containers/span/subspan_3_assert_neg.cc
! d189681a5a19f4e590a217b0bb7079ee  libstdc++-v3/testsuite/23_containers/span/subspan_4_assert_neg.cc
! 89750abc0cbad04ddc294b819ee205c6  libstdc++-v3/testsuite/23_containers/span/subspan_5_assert_neg.cc
! c8923f5c17751805f7fd8007c81fa469  libstdc++-v3/testsuite/23_containers/span/subspan_6_assert_neg.cc
! 0d35f1610fb1676b14fcdb30919fca8a  libstdc++-v3/testsuite/23_containers/span/subspan_assert_neg.cc
! 781b6089219ff83f209d57fb1c5f9b80  libstdc++-v3/testsuite/23_containers/span/subspan_neg.cc
  d19a170b5f7ab02157733005cb76fef1  libstdc++-v3/testsuite/23_containers/span/trivially_copyable.cc
! 2882beb77aaf2f14a9b9d6504e3ab935  libstdc++-v3/testsuite/23_containers/stack/77528.cc
! 4aac612dc9eb65bf6d77a7b4b89922ee  libstdc++-v3/testsuite/23_containers/stack/92878_92947.cc
! 2babe9cecb26524afedb537784236adc  libstdc++-v3/testsuite/23_containers/stack/cmp_c++20.cc
! 21d2ff38f040f85a916fb18deec098ee  libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc
! a09100a85ffcb4b082b6599350f413f3  libstdc++-v3/testsuite/23_containers/stack/deduction.cc
! 7f4a4b24940a4283db62042462a06ca1  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
! b836ee7dbaca69d874bff8f6e5aa6949  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
! 4b9fbc29472fe32bc64de2c5c344a426  libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc
! b67bc31023d9643e4fbf5f93d061dc6e  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc
! 645699a297d28ff7d55437af736cd23c  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc
! 2b378072bc4f4196769298bd203ded4b  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
! 63f281bfad99e183bef12d3f9f4f6226  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
  8095490ebaf0100077d254e713821ec0  libstdc++-v3/testsuite/23_containers/unordered_map/104174.cc
! 11fdb4f2310891c3f8e057f1918c0ba0  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! 7d0e548912c2355c1c67637648acf0c5  libstdc++-v3/testsuite/23_containers/unordered_map/48101-3_neg.cc
! 4f43cf757e1493c5ca4327b5746d9a19  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
! 514922f740ddce4b0aab4e7747bbb9a0  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
! f69c62ff84fe9bfbe7c626e485444cfe  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
! de14e2cb771b997aa14cda312541c014  libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc
! 2fdd8df717b4168aab14ac6536f7f7ff  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
! bfc946af98468822c57baa626927817d  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy_assign.cc
! 4ffefe7a6df078a897b74a9729c6ef48  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc
! 88a2d93347832850cc533bf82eaba1be  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/minimal.cc
! 9563181990fb6995d6a1b61cb4176f14  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move.cc
! 2e220ef8ce7953def55f6efba403f7fa  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move_assign.cc
! c37144b0c6218455be531538cc7eb98b  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc
! d7faf770e50c28fea4d589bcf71f67c7  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
! 3453c440659cee9d02618d4267f9125b  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
! 133360941144ca167aec6c37079b7f3d  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
! 46a2b0558e3e9882d0ed62f4715e993f  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  85260b346a96810f495c68331eefcc0e  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
  85f9f0cfc8a07ac716292470ac0bda11  libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc
! ff57b6f277adf2f454862b11cd06ae33  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
! ca66e91ff80dd78674c7632b39fc49af  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
! 242367af907a344fa1c7e0b789fde113  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc
! 3cc3cf5d8bb08a2a03e27862b07401c5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
! 25a3a5d044cd813453c78483fc91b441  libstdc++-v3/testsuite/23_containers/unordered_map/debug/90102.cc
! 50d03cfa42f60cda78cdcbef2a720895  libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc
! 9a0f06b3deb7f04037da8973956a819c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
! 101634282b6287470c6370a25f7d3309  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
! 169216024adf7ba20cc11940342fcd47  libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
! f3af5bec21cf32b7a8118f524a4068a5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
! 1fc897feda0e4f3bf416ee055c34a1de  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
! 219c89a0b12ccae9d6374ff909f16b7b  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct1_neg.cc
! 4f452716c7549f778b4fda8310898bed  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct2_neg.cc
! 1d2dfa144ff4e49c851958e092d88d34  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct3_neg.cc
! d5a77d96cfa740dc65151d107e9253ac  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct4_neg.cc
! 9990a64f9beda15aeb9f8f6c0032ecc6  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct5_neg.cc
! 84ddaa397e561d91887468443e145325  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
! b48ff7668cc24ac4191742d2feb249c9  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
! 700d94fe53b84a9941d5ff1f253114e1  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert1_neg.cc
! 6b0f915bc9ea2d2c4a9ab1f8de9b5fce  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert2_neg.cc
! 1661e81456d31e8b71156fdfe24a6573  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert3_neg.cc
! 0142b4cbfc991ea924a6ffd66ae21d6a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert4_neg.cc
! 5959facebff9a795d3c1908e3ebfd01c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_compare_neg.cc
! 17ac19ceda556666007e745d2205cf3a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_range_neg.cc
! 13e5bfd87c90a8f300e4a0c4c4103b84  libstdc++-v3/testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc
  ec5f25200eab229dcb114c539335f057  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge1_neg.cc
  1b50fcbac0e81550e3f02766b2163b1e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge2_neg.cc
  d54806c3c63e301a8ace90147e276428  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge3_neg.cc
  a6d92cb4a8083799e28f1557ec3dc5ea  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge4_neg.cc
! 4fe8f88af48577fe12e4a7a6f40afc2a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_assign_neg.cc
! e81af9ab942e864263f6e7db9ff41dea  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_neg.cc
! 40485582e3b754dea23a81ee807149e5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_erased_local_iterator_neg.cc
! e6a1e5b7ed8d50518fe256117c15285a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_iterator_neg.cc
! a3b9674078c9e3f4a869930210c38084  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_local_iterator_neg.cc
! 141a07312a2a5b52019fc0a2ea2e8a3b  libstdc++-v3/testsuite/23_containers/unordered_map/dr761.cc
! c1cfe50c8d58cff8f021c705bb98c978  libstdc++-v3/testsuite/23_containers/unordered_map/dup_types.cc
! dd8fce973fba602171feef9cafee1de9  libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
! fed7825ec70acdc779f555408dbf7245  libstdc++-v3/testsuite/23_containers/unordered_map/erase/24061-map.cc
! 1e9e8f88390f91596cd89702ea804557  libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
! 4e8103f919468f73cfcdc871a58dd24b  libstdc++-v3/testsuite/23_containers/unordered_map/erase/54276.cc
! f2ae44578a456fba8969027229d2054a  libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
! 45d039b3add879a20c912c6d45ab6515  libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
! 049afcdb1774c7f633f0bde462705e6b  libstdc++-v3/testsuite/23_containers/unordered_map/hash_policy/dr1189.cc
! 699bb48edf4637b47d545709b346838a  libstdc++-v3/testsuite/23_containers/unordered_map/init-list.cc
! 4d032a46e41f68aa097d71fd210767eb  libstdc++-v3/testsuite/23_containers/unordered_map/insert/24061-map.cc
! 8ff645d22d9ef3d597f8618823a86603  libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.cc
! b2dfcfaba91315116eb8d2c255879aa3  libstdc++-v3/testsuite/23_containers/unordered_map/insert/83709.cc
! d9528b07ada66a85b0018d924c1be9f5  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax.cc
! f599f0b32ee2b1f152a964875701d81e  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax_move.cc
! 8cafbfa92b97f1f84d86a41e00d02a81  libstdc++-v3/testsuite/23_containers/unordered_map/insert/dr2354.cc
! 68608d08059a1228558011244e2b6b98  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_range.cc
! f0399d7fd5903ed8043fb32c149bd594  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single.cc
! ece79065f23f578994072c6dc8f62ab2  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
! bb1e7bd4f05b7384300cd8d7bd794c0b  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
! 06ff89c259cd10752f45e5be2694743a  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
! 02c31b8fce6c27afd518872a24a814f7  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc
! f4993e60c966cbd7b7c00a8a0fa6a17b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/92878_92947.cc
! 1e14e83ef4746bb9169430b1d5bd9a5a  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
! b827d771e02de1a1f930ec7e5c7b6765  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
! 5c0c1ad89698c2805855fb0b70d10e6b  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
! cab517ef1ca869f351a0cdd1cca03942  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
! c9846991c4ca0ce97b56c75dcce0fe88  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc
! c31ead35490503b9cd3ca60543467c49  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
! 5510fa6dbcd62dde70eb4fd314d91179  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/try_emplace.cc
! 816f8540eb7d663172e123ee7133638b  libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
! 6416174e8079c8901aef10b43d3554d0  libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
! a58c339e9e2cef10c4b15d7f87530a27  libstdc++-v3/testsuite/23_containers/unordered_map/operations/contains.cc
! ba9a8e637660ebfafc0118756b6ffe49  libstdc++-v3/testsuite/23_containers/unordered_map/operations/count.cc
! 59125382be2dc7ad0e7176032c126176  libstdc++-v3/testsuite/23_containers/unordered_map/operators/1.cc
! e5d70e391585952693604b192aa1fd64  libstdc++-v3/testsuite/23_containers/unordered_map/operators/2.cc
! 37878b197b905b8672effb4c6912d00e  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs.cc
! f4ee57d0642f8b9e2115e04c7087d250  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc
  45f46b4cea5268d1bf8f903d79e3c350  libstdc++-v3/testsuite/23_containers/unordered_map/profile/hash_map.cc
  6bcaac31a8700749f12b90fa8913629b  libstdc++-v3/testsuite/23_containers/unordered_map/profile/unordered.cc
! 09d7f800bccc83d9f60b6fa43777cd69  libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
! a4b236b2339109c418a1be9074cd6056  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc
! 12f511a1138f541d7dba45b448b74a7f  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc
! 9244e85d44ea7dae1aac7e8cd2a7e4e6  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
! 2b00a8d23ce25540b6874ef10d9e807a  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/citerators.cc
! 3f5a3a77c7d4cdacf35914a829f13736  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/cliterators.cc
! 6e598fad4cbc1021d3f6ff076fc3fcb5  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
! 31aad2c33a2f0ee664ce634988e1da66  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_mode.cc
! d3ca5dc634fdb43e1576ec34f0f034c9  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/basic.cc
! 897d2784f6914ff49bc0b18ada087ed6  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/generation_prohibited.cc
! eb95b3909207502092af4aff286b24a8  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/propagation_consistent.cc
! ab0a7d4f0c0a9c532b4e2dd1bb36b44d  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/1.cc
! bea3f6eff9b980227fb1b4270d88bc05  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/2.cc
! 14e1584e52df0faebf662a78da3ac4db  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
! 114999c6813aa623e60b99052cb8ff6c  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/4.cc
! 0fd039dcf92fe559ef428a50eae8fc53  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
! 9fd83d63085bc1a9c5d0a4aeee85d776  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
! 88035a99bb06dd8511df0521e37e649f  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! 4b564070c6bb9f5649391ab8917e0ffa  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-3_neg.cc
! 12f07af2311c4e440077fbf1fd7c68ef  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
! d6dbb5c9ce758d0ef931f4b0c0b361cd  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
! 16751efb4d7a855adef573c4da602977  libstdc++-v3/testsuite/23_containers/unordered_multimap/96088.cc
! 296c150355874c513cd6347d592ceaf0  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
! 78990714ae190367ad40f3612ebbcebe  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
! 939aa922c4ae165f3f8895eba079a69c  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/minimal.cc
! a453b5ad7f4b9c3509d58339c5d71697  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move.cc
! 72d8d4a8f406a90d09e5575f66089dbe  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
! 31d9999e1da391a41ca4fd575b8bab6d  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
! 0302a975fa2685e221f84653cbb80433  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
! e6d681fdd33676d6059db9e645cb634f  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
  1339c52ecafcfc46a0f64547b8873082  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! f8fbb369d9ad3cbf32d561ea6c1b3d95  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
! 9f3a2617f5f36e39a16a8d820af59e11  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
! c639ba054500cac98951b66aa5600450  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc
! b5a64feb6bc93b47a83183ad434917a0  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/60499.cc
! f84e006a53c099da11fb01e645ffb861  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/90102.cc
! 372dc6d45eae7e98d25cd5934c9c6b5a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
! 101634282b6287470c6370a25f7d3309  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
! 169216024adf7ba20cc11940342fcd47  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
! f3af5bec21cf32b7a8118f524a4068a5  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
! 1fc897feda0e4f3bf416ee055c34a1de  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
! dace01b9e7a62b57f98bc07860138564  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc
! bf6318151d0df7517ed3ef2b2a8a7403  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc
! 510e552a79a004fe2e916d4a59eb020d  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc
! dab03366fb9bc0f05b359c3f418e992a  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc
! fdb8cf1a33f7289ad16333ec1f1ab72c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc
! 84ddaa397e561d91887468443e145325  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
! b48ff7668cc24ac4191742d2feb249c9  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
! b710d14086812e251a80f1f633840db7  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc
! 6ba542f3d0957127ee7ba609ddafc381  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc
! ae6505d8a1b4a7024ce2155d169a5bbe  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc
! b6a772fad6831099fff2e9a16b5131c0  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc
! efe9220de02d7f67132a17ba980f6f3c  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_compare_neg.cc
! 71a7d9238608c34302a905ca4f709da0  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_range_neg.cc
! 5daf433ff5cec29f232e73db9bab9908  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc
  4590d5159c6810e053d83e37afdfdccc  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge1_neg.cc
  10748ae08ea59767c0dec11efeda3ecf  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge2_neg.cc
  5711a56e85b25164885d87e3528b0d4e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge3_neg.cc
  f30bce9979bec5403e8d4079e23bd752  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge4_neg.cc
! 809d552da851e75f3006ec1188373945  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc
! 1646cf2034df9cdd908a51834e591546  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_neg.cc
! a89a3d2b2b3a9ef3590bfb373ff767fb  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_erased_local_iterator_neg.cc
! 0f080a4ab13c97f5407630215f0555c8  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_iterator_neg.cc
! fa008e5572385f29e97e5b4ca72feb96  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_local_iterator_neg.cc
! bc1ee1d83c151890698eb0f2e6118523  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/1.cc
! 762c5249e65b4dc31b3f966948039bcd  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/2.cc
! 0db5cc5c6fbf9002933009bd32402ea4  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/24061-multimap.cc
! 14e8cee9c64dec600647d72db086c2a4  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
! 96f644636f29d06a985dd3a152fe3854  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51845-multimap.cc
! 61c7c71dbdb43eaae2b48d92fa9952e8  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/54276.cc
! cd4fcbefab18a291824b1fe0dca3eaff  libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
! 219195d9571b21435c10a0a213fab151  libstdc++-v3/testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc
! 212be24c69c5b056e2526a09c94e89ec  libstdc++-v3/testsuite/23_containers/unordered_multimap/init-list.cc
! c047d882812987f8ef6511e28ca1bad2  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
! c30e5e518a3bad3da937cd6f10c8e65c  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/51866.cc
! e03280f2126a4b831abee78e7d08bafc  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc
! ebba5ea536f17ec0fc3d871592bf6b14  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc
! 5e146021490b8b2cdc35ea02899b6d57  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/55028-debug.cc
! 02588a553373997661ca83e3808fdb16  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.cc
! 96419b2717c6e96bb29fb4416650d2ad  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/dr2354.cc
! bb7037c75592b4e315d0072ee0dd723a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/hint.cc
! 6c67f7eb6c2839f62727045f401e83cc  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_range.cc
! 1ba361b0d3a19e12bb748f150bdca582  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
! e9ea7a07d3cdd2a0bda5e28e1fc8347c  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
! 4729df9dcd0d73a5af012e904f2d0064  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
! 2b350cfb9d71848a9f0bad156163cd58  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc
! ea0696443f7cff215ace4161ef2e4d75  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc
! 89fd8f9511d4f3eabe773b4f2d7fc6f5  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
! d1614b908fa2de25da49ed98c3635013  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
! f75622587e00fa848de2e1c0c1bab491  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
! 1807fbb26d32585cfef4017d192143f3  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
! d2faea1f63ccfec343b6737abc4c06b4  libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
! c7d4deef6c79fa90f4334049a584d3e3  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/1.cc
! 3eb1e3317696520a4b61b78a9d33a236  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/contains.cc
! 1520d5c57f3f424589a14454c7a28845  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/count.cc
! 3b5d73afffaf211605142a41e536a2ad  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/1.cc
! 1af59491e9dec2cb2636f7f146be9a48  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/2.cc
! abc85726e6ea41160a66f2e596def257  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs.cc
! 7cec0329e32a9de54a48e841df724b46  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc
! b367164af85bb08a83a4a938d99ef3f6  libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
! d9b64801293da09e724633f74d193e18  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
! d3d2219e8bda916e498972dc9cddbb88  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/citerators.cc
! 0cf68745b4876e92b0cb2523fb4e14db  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/cliterators.cc
! fb148d6bcfbf13d3399a573d8b447d3d  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
! 075af99a950a7c1adb0012620ec89a20  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/basic.cc
! 0a9dfdbd54c0d7ccf5c8b85c229f9a54  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/generation_prohibited.cc
! fc1831cc3f8832bb09d04665b7698f62  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
! 7f016b1c12024851587010189c67cead  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/1.cc
! 0ec1e1a595772ea73e2a6a4f5b17a22f  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/2.cc
! 63b3d395c75b62466de5c190dca5ffcd  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
! fd72dba46881468d6f58a090f10ae567  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/4.cc
! 1f6f480ba5d7fcd50b3c6d6e565c628a  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
! 04ebf45751f670bba301ec5fdc8283b7  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
! 60f1df39cb88b5e32cf434accacae754  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! 4cc4b53a21fe2b44a507e8fa8b97b2f7  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-3_neg.cc
! d50a9c2739b12898213e044a03e2e78b  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
! a6330059204412036e828449b11ccec4  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
! b55025538cfc818dedde6c08f59d36c4  libstdc++-v3/testsuite/23_containers/unordered_multiset/96088.cc
! cacc3eee6ee816f0c07598ae81d54a46  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
! 091e94b82c25f5479de13364bd7ce758  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
! a33682137e2c923907e38156947cc496  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/minimal.cc
! 2f0dc714e2709a5975c87770c8cb9a54  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move.cc
! f04a3f189b49b00a5245af151fa0d79d  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
! d219e87e5b73b664d7e806948ce8015f  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
! a9528613d6005f3a77892b0b453552ec  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/swap.cc
! 9fa74b4b0764e2c1c5f8ca51714533f3  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
! a0a90666f700537b1f6bf31e795cd3d2  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
  23f594bcb112a45f141a57ae69a39c30  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! baa02e34d312187a873168814bd512aa  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
! 3945348b7dadcc3a2265c55dbe5d913d  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
! 7f3b3a9e08849d61b1f47bb05c5fddc5  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc
! a7140efa5724383d90a61a417adad358  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/60499.cc
! 0995effb9743fa4423c34a438183c228  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/90102.cc
! ed62ba009f767578f847f86e08f1ed84  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
! bf4ae0740613f8b97aca95a51ada2f63  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
! 1f17aa0e6bc70e79a8933460653657ff  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
! 0e441a1433d1f3458c381b13d752ee09  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
! 952270f6abfca8e5b350044dd9c006e7  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
! 9f69b4c5b646d2f7555c020211012c35  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc
! e793f24394fae8d4f5df5963dc3eac36  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc
! 040d299a2366e86f772e09cda7def1a4  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc
! a71e46a52a803c9d67775582d2b6fdca  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc
! 58fe12426cfe7630df60916250e6042c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc
! 5d2e0e1022383c59740decef43eb2352  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
! f2b0d6ef2d59f8ef8eb32f1dad7753c1  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
! 99bf3f8585b6224f95b6aa1e9924ae67  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc
! 559d6b58f4edf1de2cef7433e8be3280  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc
! 9de513d3abc1f0e3013e4eb2604edd12  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc
! 582bf70d477d475c86a4ba4e3a3b62d3  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc
! ed33a9f340e3f067b371c8e10a8ec595  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_compare_neg.cc
! 5aad150cc67516c93f3f9d7cea12c32f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_range_neg.cc
! abb768609ba3e6943341c1e0183cac05  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/max_load_factor_neg.cc
  57b376626504f59753991e34bc78237c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge1_neg.cc
  4780603df65da907f59b5dc2271c7d4b  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge2_neg.cc
  d1a56802059f8869425e49137d01db11  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge3_neg.cc
  ced06789a8924ce0bc694421897b8fc2  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge4_neg.cc
! 633c40898f209e587f3a66bb243bb1ef  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc
! e87e67f5e3bebfa13f9dc3363efeae60  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_neg.cc
! df6bb779d57443c430058fddafd0f166  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_erased_local_iterator_neg.cc
! 6d95e748f2e0e13a2f7d88e8a0552ff0  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_iterator_neg.cc
! e282cafc2d02f05083f93720a7d98a39  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_local_iterator_neg.cc
! bdc8543745cd064b039d0665ae0bc9d5  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/1.cc
! 969896438a77169cf30c4990b253a4f0  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/2.cc
! 0f6ffbcc5bfaaddfaacf6ecf1ff33f48  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/24061-multiset.cc
! 14fc8d37cdcbe3ef7095c9776dcef429  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
! 98cc84a84d1c42aa68964fa24dd2f439  libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
! 5020d5164dedb2665f4d89543bb637b9  libstdc++-v3/testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc
! f492bf69b1e298379d8f4ce49e70522b  libstdc++-v3/testsuite/23_containers/unordered_multiset/init-list.cc
! 00be40db9962d120781902186f5b83f5  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
! 538b092803be19683ccb80ab2f274ed3  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/51866.cc
! e4f8f761815549c9655a1afa85c84621  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc
! 1a21b3111b3b11ae7d9c641f50d02473  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc
! 89033de94b10e37b54b03d06c9f04ecc  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/hash_policy.cc
! 2cbb0afd915083a5cabafa50f998d5c8  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_range.cc
! 25f6641c9b65591cfe0b8858e7b910b5  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single.cc
! c35b057960b073e57577f894c93abd5c  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single_move.cc
! 1031b470e6127a252d2adced81d5dede  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc
! 1d40b8f180c16337816a13e75181ed5e  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
! 6f1ad8e9a94be3b78fe3ef0ae9684c3d  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
! cd7d4abf4ce41d307e6974346da5cf21  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
! 66c113df7a16a8975feee03b3771cc8a  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
! c2ffd52238b34d2ceadd020d3179f161  libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
! 443d9c8a3e59df26a0df1521dbd90a45  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/1.cc
! 0c3fcf81056064d793986f1fa5c5b181  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/contains.cc
! 63a4268f8d7cf972e8f3025184f880cf  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/count.cc
! fbe4d8f36f4df7a459af93bb37620eca  libstdc++-v3/testsuite/23_containers/unordered_multiset/operators/1.cc
! 7b45eff31f02cce7e3dc14b02d802755  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs.cc
! 390498e79a614204395688ce09528dcd  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc
! 1355ee45d88e20a75a6493c28e0cd4ed  libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
! 9fa9baa60fff046077b56f22a7ddcf7b  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/citerators.cc
! a7756bf13ec9cfec0ad68c65a7a4efa5  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/cliterators.cc
! 6e30f1af88aa962c05f6b4e52828fa5e  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
! f24d3c630f58fd9f3c27ab6eca3cfbca  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/basic.cc
! 85a44ba4593be50735f5605f4fd25551  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/generation_prohibited.cc
! d2d9eed2b0306494dc0e80ced0bda5db  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
! fb58d0683c99c8e7b36bc053071b9dc3  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/1.cc
! fbd1bc1f491915cceb4377f62a4b0203  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/2.cc
! f1c49f65ee3355580378937224d637cb  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
! 399d3c1504946dc663792b53664f2004  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/4.cc
! 865e2fcc45c5d3b1b123b128a10bdb06  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
! 69652343ddb5c37a4110f50b336bd94d  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
! db12a1ee358d37495eeff40a72c65299  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! 1801d8580381c4f6b56d0a59629a1a14  libstdc++-v3/testsuite/23_containers/unordered_set/48101-3_neg.cc
! 42f45c4e7f7d02a96d62e9c56dee164d  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
! 240dd92e23b0ac55e4a99c044e2210a2  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
! dc13721ae125ca02e2d0ece4134f6e02  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
! 06c0ab77dfb9a02e4a912745caada948  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
! 4523c42985f295b107e09dbc095b876d  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
! b949603cc90ac7e1c891d4761410e053  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
! a0282cdeaa692c94ac22e06b99caedcb  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
! fa5d4317715635a08972c99407780d33  libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc
! 1cee7ad397a587f302fe7af9307d5f07  libstdc++-v3/testsuite/23_containers/unordered_set/92124.cc
! 84073967fec818c1f7c37b57db7acf8d  libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc
! 1c8c3d69a2ce24485b1afe4c94f0bdbb  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
! 7bd699f962fc8886bb0309ee9c622ade  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
! c9bb3394afc512f681e23ff6f0d237e6  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc
! d1788d8bb3dc78d409ad984c4f52a5d4  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
! 9b616c454a53592adfe53355e43bf6ca  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
! d1be24d97ab9f3ca1c6a39886b1d11d4  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! db95a68adc1cc675cb46860495a6780e  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
! 97bdda0b5c934e8f35895d28306011c6  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
! 376d44fc8bd99cd901978d99467c8e32  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
! 3d589d0945e45ad80268ac68dfba9a30  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
! 541a90e28d25b27e700adf41be4d1288  libstdc++-v3/testsuite/23_containers/unordered_set/cons/66055.cc
! 3a438eed881a74b35c309c24c11c004d  libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc
! 98da1d199de4b42bab7acca7fa038089  libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
  50d3a4852641ffb5d38114a701a2047e  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
  247af40f0de6e07e87bdde64812f8659  libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc
! fdaf633d17a161bc656be6bb957031a2  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
! a69b12ef88cc0380414cdddc3665cae3  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
! 594f3fdc00041c8d57a4b5cb29ae92d9  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc
! b087df70a5e248f594f3d4cee983339f  libstdc++-v3/testsuite/23_containers/unordered_set/cons/self_move.cc
! 339e95023b2c79a28b80cf8baefa891c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/60499.cc
! e9f2fcda8249c73a3fb8be9ee384c627  libstdc++-v3/testsuite/23_containers/unordered_set/debug/89608_neg.cc
! 298a0a52920fbd9c32325200c1c672b6  libstdc++-v3/testsuite/23_containers/unordered_set/debug/90102.cc
! b050d01c36449da3f207b893a21e4188  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
! a70c9d45c2897694ccf88ed327e01acc  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
! 2a87ff5fc25f8f333ba6d80dfcc7091d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
! f30aef3a70c699c3be3dd5beeadd8bde  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
! 5acf6af55704e95228ca39e559c009fb  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
! 222921b00757f2071ba700c2eed24f70  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct1_neg.cc
! 4a6bb46258ea572c0df9ed3c7813f2c7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct2_neg.cc
! 8bf72ba0680fec022f403760a1eb2584  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct3_neg.cc
! ecf3a19f36df3ea1574873022322d3ff  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct4_neg.cc
! af0c5851a5af93b91c53585d42f47343  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct5_neg.cc
! 8a9acef0a1562d0d23cf94937cba371c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/debug_functions.cc
! 2e3538a47740cb132bb11a8d9093c6ff  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
! 3cd08f05e73bb5e82dbe10af200689f7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
! fd094c64826a3e831af3562c47fbde0d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert1_neg.cc
! fd83cb46467d34d25cde9f6a4f09d0c2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert2_neg.cc
! ac5a4ba9184632896768e9175b4acc42  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert3_neg.cc
! 368ac9bbb405f1d9bcc5d3be0c9a91d5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert4_neg.cc
! 6c2a666d3cf02b3b48aabfbfe9cbf08a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_compare_neg.cc
! 6a910edf8de6ea6d05f441b1145e8d2b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_range_neg.cc
! 9c305c474b9954b27cf7d2676be34356  libstdc++-v3/testsuite/23_containers/unordered_set/debug/max_load_factor_neg.cc
  8121fd537a86b2d9c88f3a74d9dfd917  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge1_neg.cc
  8abc555d1b878f2729647a5a9b417280  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge2_neg.cc
  fb91af2ae75ed5745c8773ed8318a311  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge3_neg.cc
  00a3aa9959b3b6aa3847806d2fcccfb2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge4_neg.cc
! e00b4a381bfd8d9df3b5465442f60c95  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_assign_neg.cc
! 6b7d7de7abd2df489d8ae5d887e38c44  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_neg.cc
! 505db138ad51729241fad52072baa659  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_erased_local_iterator_neg.cc
! c28a135a0f9533c92b88640b5ceb0de0  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_iterator_neg.cc
! 174880a0a72f94cb801c68377dd69499  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_local_iterator_neg.cc
! 6b4479622dafb36b13219f3df6829af9  libstdc++-v3/testsuite/23_containers/unordered_set/erase/1.cc
! 9de7dc4053744549757385f9669b342b  libstdc++-v3/testsuite/23_containers/unordered_set/erase/24061-set.cc
! fbf01acfce9b3026c6b4581d8efb584f  libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
! a4517c8facd8d4bbd982a085a617ca2b  libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
! 90c8bd4ec719faf7c9b79f52797f4407  libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
! eeaff13bb556a026f26fd69417bd5ed3  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/26132.cc
! 889818d16bddeb8a7916854f346b8971  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
! 62cd499a31337c4c59e0262ea17172c6  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/dr1189.cc
! 8c50f3bd11a1c95b4b1ede5567666e43  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/load_factor.cc
! 2c09b5a2f51b9379f4889f4ec5ef7489  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc
! 94ce4d7d3e8ebbd82e7619a2c151c435  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc
! f00184f0b75407c26cabf6bd58ebb3c3  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/rehash.cc
! 21e4300d8725268c311c3532900c4cc3  libstdc++-v3/testsuite/23_containers/unordered_set/init-list.cc
! b88fde42a97551fb09e2d43d3a821494  libstdc++-v3/testsuite/23_containers/unordered_set/insert/24061-set.cc
! 537dfac0add8be4562b88ee872a7b33a  libstdc++-v3/testsuite/23_containers/unordered_set/insert/83709.cc
! 9ff2e77fc264cd6cbdea2568b96f3f8a  libstdc++-v3/testsuite/23_containers/unordered_set/insert/hash_policy.cc
! 867a3cbc7dad2f586611a3fc0ab0093f  libstdc++-v3/testsuite/23_containers/unordered_set/insert/move_range.cc
! e0ca5e830e5b0abcf4f1b25b0e3cbeb1  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_range.cc
! 167f11aa1aabf785f58554b0f67b0615  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single.cc
! 1a609ba18ef8455b0e135d1b507af9db  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single_move.cc
! fc3c05a0cfa119fb13c4bf775be7275b  libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
! 6b84d3217cde41a522d1df444f814a43  libstdc++-v3/testsuite/23_containers/unordered_set/max_load_factor/robustness.cc
! f672c3621e6e83f276d79caf6b626a78  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/92878_92947.cc
! 5ac8bb8d2bd7f9f285567564f37af02a  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
! 53d7181bce16ac21267b0b21427167b3  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
! d7cccf5adb732f2799ddb844e77f3d5e  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
! 827ba5b60e701aab79c2dde3fe7568c1  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
! 0fab3e10c2997aa8597906a79a2704ef  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
! e0f890574e071da178978f027ee69430  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
! 55f0c944912c0f390c68fb80ebc678c8  libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
! d96b5be7e348719d1b6cddd7c9f2523d  libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
! 35839004f26ded9912b30e3c5cb28865  libstdc++-v3/testsuite/23_containers/unordered_set/operations/contains.cc
! 17f6e3b12cb6c4c4737f75444b747e9c  libstdc++-v3/testsuite/23_containers/unordered_set/operations/count.cc
! 8721e1cfe6750c9bd65f6b62b1054734  libstdc++-v3/testsuite/23_containers/unordered_set/operators/1.cc
! a5375cdb0b473c5ea745af62959ee58f  libstdc++-v3/testsuite/23_containers/unordered_set/operators/52309.cc
! cebb99d7d3a8c715f09f198f1112c970  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs.cc
! 5fc106f3056b6abc2ea774e536db914f  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc
! 454a0219329e8710eb48d9ffdc77f84a  libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
! ae82a93fe6523a92fedf60ccdfca5f55  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc
! db6da1c8fe4dceace4affa7026dfea4c  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc
! 937b2f3f1d0c1ca18c9b2762ca857250  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/citerators.cc
! ff2362741e57c843262bc1107cf9fafe  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/cliterators.cc
! 70e86fb96b67693a79c8995182ae3770  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
! 6d49ea018e9645a1027ae496edff9fe9  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_mode.cc
! f689055d4095c9d294a36033599ce4f9  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/basic.cc
! 4dab55ee9fffd79243c540677112cfce  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/generation_prohibited.cc
! 122861514f4e6914221a3044d14f3410  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/propagation_consistent.cc
! 96dab8bc314ddc55c70fafaf9767c654  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/1.cc
! 42c9d3a266f976c830fab98713c3ea11  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/2.cc
! 1715097572ae7d5e1b9293a2b48fe366  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc
! 74d10eaf0660c5686ae307c99f007fa6  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/4.cc
! e37dad4a7908cacf6d05e49d2ce6c785  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/5.cc
! 3bfbc85f9967ba3bcb44d33489c4ebd5  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/typedefs.cc
! 89711a3acde397e41cbf39ccc8a1378b  libstdc++-v3/testsuite/23_containers/vector/14340.cc
! 80d09ba801f2e30278cda5f8237931d1  libstdc++-v3/testsuite/23_containers/vector/15523.cc
! c8e9473bdb7dc205695a6f490568cde7  libstdc++-v3/testsuite/23_containers/vector/18604.cc
! 0d63938d539611be0d8cf86d0f9bcc78  libstdc++-v3/testsuite/23_containers/vector/26412-1.cc
! 744de9f8ec9929d92006fe6bd3584e63  libstdc++-v3/testsuite/23_containers/vector/26412-2.cc
! b4c059670040bcef1b5027a1271026d8  libstdc++-v3/testsuite/23_containers/vector/40192.cc
! 0983257b1e413965848d942fbf67a5bc  libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
! c5bf586081af6f65bd443e1ebe57a419  libstdc++-v3/testsuite/23_containers/vector/48101-3_neg.cc
! a1fd9061c9299a6b6cdc1b48ebaa2a1c  libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
! ef2559bebf8f7689646f7ebdd75717c7  libstdc++-v3/testsuite/23_containers/vector/52591.cc
! 73be32b027ad66867abe213a4c4aa9e7  libstdc++-v3/testsuite/23_containers/vector/58764.cc
! 9206d17898e2681447c5eee810963cfa  libstdc++-v3/testsuite/23_containers/vector/59829.cc
! 3929ca993f3e1bf3db9fd45e3ff60dd0  libstdc++-v3/testsuite/23_containers/vector/63500.cc
! 0f5fb9879de187052d8e2f639a8d308c  libstdc++-v3/testsuite/23_containers/vector/70303.cc
! cd6a5525bd502620e12440546ca7a6e6  libstdc++-v3/testsuite/23_containers/vector/92124.cc
! 809a859460c621be961f28c74d2221f7  libstdc++-v3/testsuite/23_containers/vector/allocator/construction.cc
! 2aa0c6e16bfd2e48fb7a406059efb16a  libstdc++-v3/testsuite/23_containers/vector/allocator/copy.cc
! 7cc4d8fe165404de52157e198bb0b632  libstdc++-v3/testsuite/23_containers/vector/allocator/copy_assign.cc
! 270929290d6817b90c91aed80ea229da  libstdc++-v3/testsuite/23_containers/vector/allocator/default_init.cc
! 0c90e3ba13c2bf11120871c329a38a14  libstdc++-v3/testsuite/23_containers/vector/allocator/ext_ptr.cc
! a752df8dfc4f4c2191375689517d93c4  libstdc++-v3/testsuite/23_containers/vector/allocator/minimal.cc
! 566ea9684552ee2b82d2c14a777af205  libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
! 0b86777fc4d7d827f90debf4eed4bb58  libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
! a85b735ad41862af78848cbbc73dc7c5  libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc
! f7c5f73877a56bb8ae64939c75b6f468  libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc
! ad87a2ba2792acb13efee0252b4d6dda  libstdc++-v3/testsuite/23_containers/vector/bool/1.cc
! 203adc26c7908e21423fd1c0dbe75c17  libstdc++-v3/testsuite/23_containers/vector/bool/21244.cc
! 14a4b492022b5ecc2134d842edee65e2  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
! ebdbfb93b5449c7b54a9a2a4b23f4b7d  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
! 105b353a30d681faafcf42f172acf5d7  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
! 99c2ce95af959825748b0ff9f8ac92ea  libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
! 5fa512e122bd8fabfc9cff0b607a6104  libstdc++-v3/testsuite/23_containers/vector/bool/82558.cc
! 2a79dc435b2d8b72ed25787cc54efe5c  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
! 6650893f588fccbfc5469b7fc5fca16a  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
! 19f9377f17945e1bb54c039e2a91ab3a  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/default_init.cc
! 5ac3d2c5813bd83d7e673500c39d40f1  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
! 1313e63e96b72940b242788a679ef263  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/minimal.cc
! 574918103f22251a22ca6750b6254948  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move.cc
! ca19f087405c235664ca86cda2305d4d  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move_assign.cc
! 6f8469e729d813c1a2ab6c4216bb08e9  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/noexcept.cc
! e3e711d54da0bcf51a1fe1002f20150f  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
! 4bc38211783849c81419e396569f9724  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/1.cc
! b8a657c1d74e7cf01aa40a735eff1c38  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
  f3a53ae538351a02f5ec621190a341fc  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/constexpr.cc
! 6597cecdd83b59a1741c10af422f5438  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc
! 32e622e00e7c2835c3b0f7fc3c9b4c85  libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
! a03c1b68573b251cf136f022ae47327c  libstdc++-v3/testsuite/23_containers/vector/bool/cmp_c++20.cc
! e0351d5f32c7a1f7d57157b17b3aa875  libstdc++-v3/testsuite/23_containers/vector/bool/cons/1.cc
! 3b3379c2c31bdea22f73555d54440f96  libstdc++-v3/testsuite/23_containers/vector/bool/cons/2.cc
! bfacbc308cbc3c96784d0b61ca0635ee  libstdc++-v3/testsuite/23_containers/vector/bool/cons/87809.cc
  abb8e684b5198d2f43e773d47fbc26e7  libstdc++-v3/testsuite/23_containers/vector/bool/cons/constexpr.cc
! 1fa2fbd13ebc37a91ab50f754268fe88  libstdc++-v3/testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc
  35e0cd4f42eda824bbba54df3a2bb017  libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc
! 764e8c7844007e7073b8c5bb6c108991  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
! c763541bd89c0b1bc084d76b621240a9  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
! c76409510f695572235c6c0914bb8116  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
! 12e68c15a5f4bf87cead57d625bc3c9d  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
! 67b104ae3368abb6e9547a6c88c33a91  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
  198e24e4b0447ebd1f59ee566c4f9ad6  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/constexpr.cc
  da7f433cb57b9828232873e5f792cde2  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/constexpr.cc
! 74fb6b3cec9413f8435170b790b89a64  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/1.cc
! e5527ddbe1c9258d22a14643f25359f9  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/54577.cc
! ca7ccbc01f9c69bd8235a89af0332b96  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/1.cc
  8411c535ec979be02e85103a2ce6a933  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/104559.cc
! 163da287fb57ee57c84ddf584c5f0605  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
! 4a1f064c7b1aee5273403a6807c7f44b  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc
! 0aaa5f3186eaa9c1af3627bf8425d5bb  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/1.cc
! d63621ad13581451a3eeacbebd2886ee  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/2.cc
  1611763e1d27a3886a180174309278ae  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc
! e119b07fa1d360d5e48db258e09577b2  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/citerators.cc
! 38ec1ad2ef867b0ef703a25843a3c5dd  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/dr438/constructor.cc
! ee79a05ce8d7c5377876bfa3e5817059  libstdc++-v3/testsuite/23_containers/vector/bool/swap.cc
! e5562b6f546d071e48f497e02b938e7f  libstdc++-v3/testsuite/23_containers/vector/capacity/1.cc
! c8c8a49250851394b47191538f116ca9  libstdc++-v3/testsuite/23_containers/vector/capacity/2.cc
! d8f93ed6f8ae914c08c0ad73bc9ad78e  libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
! 5646baf35182f7e4a8892e74a7bd42b4  libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
! e40a3cf0a4b5813248c48825120a2e1b  libstdc++-v3/testsuite/23_containers/vector/capacity/44190.cc
! 1319800735a9fa2dd3460203ff32c432  libstdc++-v3/testsuite/23_containers/vector/capacity/8230.cc
! f73769ce30d379f3bfd8e42bd4a4e606  libstdc++-v3/testsuite/23_containers/vector/capacity/87544.cc
  402ee0d2c16c5d03df6155b7cc99187d  libstdc++-v3/testsuite/23_containers/vector/capacity/constexpr.cc
! d36af7aedc5972d4f8e55c899d8f9d8a  libstdc++-v3/testsuite/23_containers/vector/capacity/max_size.cc
! 57720a91e173ae18c6298ba22946ab45  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable.cc
! 8c378cd6532a184d389c2226a8f9dfef  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable2.cc
! 30f9981b62fe9cc4900f8c4abd7c9c90  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/1.cc
! 65a32d8a622a4b398c33e14bcfd97e86  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
! 0e8525c3bbba46409b678f62c126b357  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
! 785fd76779970edad5e8fc4dbc43d2cf  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
! fa0188ace09393aaf5e0e78a604fa88c  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
! fdf2860728bdfafc6c12e77d7fc34792  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
! c5326c872629b70a6cac112d7191eaaa  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
! e6b13a470d7dc09b7377ba8490051b14  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
! 254e5ffa57a194c950dae265767fb789  libstdc++-v3/testsuite/23_containers/vector/cmp_c++20.cc
! 85bdfc0576269a0e5205993301109c71  libstdc++-v3/testsuite/23_containers/vector/cons/1.cc
! 0a4c77f92fc3554026c38402a8698d27  libstdc++-v3/testsuite/23_containers/vector/cons/2.cc
! c66f9d033f7bdf121d5453fe8cdd24be  libstdc++-v3/testsuite/23_containers/vector/cons/3.cc
! f4b56cf638525a4ae9b58fb23cdcd034  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
! fddfcde7ec79ae045588b9be4480f533  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
! 28c6851274bfe5c87f427fe41955f079  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
! e51689d6f32e1f57b717ddee58bc76c3  libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc
! 0be4693921b391e03192235cb5820dd3  libstdc++-v3/testsuite/23_containers/vector/cons/87809.cc
! dfe2de37d0eba6b6347817eb81355e84  libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc
! 7febc12be2af7cc1de19414aaafc3353  libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc
! 239f1bf167406b3f90bfa6ff36006fa0  libstdc++-v3/testsuite/23_containers/vector/cons/94540.cc
! f7e44bc5605d8dbaecbe9449d6f1ab65  libstdc++-v3/testsuite/23_containers/vector/cons/94831.cc
! 549cf9a1e8f8bc3ef61a519299e4e76f  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
! 539f8a7a20b33d9116aa9937776fc40f  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
  1ce2272844a9da337ee743c345bec85b  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
! 3bd45daa102290f1176d8405d7221143  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
! aba23da2c50408d320fee5821caad013  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! 19f1c44c76dfb817df55800d837fa674  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
! 55550ae8dde510aa5f780945c50e0dc9  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
! 76386102cae76d7f42b2b530988f9e0e  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
! 256b18edd7b9d475d74867762585474c  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
! d06942a7df7fdbc8ad5ba368be44df54  libstdc++-v3/testsuite/23_containers/vector/cons/self_move.cc
! 1572ad51ac4cdf7ce97680d7ba95ca30  libstdc++-v3/testsuite/23_containers/vector/data_access/1.cc
  2da738c5f0181f4d71a28da3da5b55cf  libstdc++-v3/testsuite/23_containers/vector/data_access/constexpr.cc
! 1d6cf04182a247f82924198d9a107bed  libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
! d1f01c5e431ee8149b76c79b6afc4492  libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
! 7a2b12d4e2411815cb8f203303cd1150  libstdc++-v3/testsuite/23_containers/vector/debug/60499.cc
! ab2c01702735b7eadb3f19ebc5bed7d2  libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
! dcd468b8f7c02e1fc711c2f8a4d93b73  libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
! b61e17c3f3a3d0683631d9e9c7a7bfe2  libstdc++-v3/testsuite/23_containers/vector/debug/90102.cc
! aa8e83decc1f23487289cd8bd489b396  libstdc++-v3/testsuite/23_containers/vector/debug/alloc_prop.cc
! 2ad3b0ef36dd96c6984af4993cedd6c0  libstdc++-v3/testsuite/23_containers/vector/debug/assign1_neg.cc
! 19470451c86b44cc0305bdf6ee7b6760  libstdc++-v3/testsuite/23_containers/vector/debug/assign2_neg.cc
! a5209b79fda626a126a43a1e8b9dd736  libstdc++-v3/testsuite/23_containers/vector/debug/assign3_neg.cc
! e9eafb1f1c5a455c80bf4e0bfe8b3e0a  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc
! fee6f6c849253532cc42b248473c91c7  libstdc++-v3/testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc
! a67caaf78aab4389dd327d0f1a8a1729  libstdc++-v3/testsuite/23_containers/vector/debug/construct1_neg.cc
! bbc444c398c8fa0a3ce573af2064d8fe  libstdc++-v3/testsuite/23_containers/vector/debug/construct2_neg.cc
! ab6ca28539f4a2d8580bd5effd897082  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
! c4da53b2261abfcb0f41cbce222cd6db  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
! e5de92f622f6dca0f665797b75716b1e  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
! f15a4fba42a92dbb0c55879f7e5c24eb  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
! 49c1c9152b3d1e9f2d8363cb23f3125f  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
! ed952a35d3d77626de775e012a2debaf  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
! 8b37699c4dea0812cfcc3d62113036dd  libstdc++-v3/testsuite/23_containers/vector/debug/insert4_neg.cc
! 225c60034b4ac1a70469dfe4476a0272  libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc
! 183bfc7e70f08accd0da3915d25555a9  libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
! da0101d780a767da07cb8e9da15862e8  libstdc++-v3/testsuite/23_containers/vector/debug/insert7_neg.cc
! 9ae82203c86881d09248ca255edb1a3d  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/1.cc
! 4ff42222f4e43d1d81caf84fefc86e89  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
! a1673ae15e81315cff0036f533bb0325  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
! 591445bc7057560fcd11333475838175  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
! 8aeaf423399677358ab423ec900e51ae  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
! 9f3fdbf318866a8b752287fe9ef8d902  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
! 826d228396218bab7b5bead1e9b0f49c  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
! 1e929a7440c835404b6f15dc245c5730  libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc
! 810b8b648b8da44e4b505ee59af3c95d  libstdc++-v3/testsuite/23_containers/vector/debug/shrink_to_fit.cc
! 7ccf5c4b6ebfe9f5492cc74b2420ce16  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc
! 030b76e905584ff835ef16199f07822b  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc
! 86dba5110dee7a48997e7755fd387710  libstdc++-v3/testsuite/23_containers/vector/element_access/1.cc
  16aff27648691adf15bfc9b67a08656c  libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc
! 348e9bd7c2c0a2c3d4635f4511c67858  libstdc++-v3/testsuite/23_containers/vector/erasure.cc
! ebaef97a01190a8daefed90ee416a10b  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/citerators.cc
! 1ad9a459f7e4a8adea29a06013a74028  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/data_access.cc
! 2da5187fd01aca244e3b620341a41b66  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc
! 781125c24c3957c26e504b6ddd82c7c5  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc
! 74e0732a7f53013f857dab5f62b26506  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/element.cc
! 0edfce8372b7549d0afa7af1fae30c1d  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc
! 39e3a6ff06f0c6d76adb31edf4051b7a  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc
! 87e013b534acd71fbac5c72d8d1afc88  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
! 769690aaf3335ffef31373b54c7b3404  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/1.cc
! 155c2c5c58fed1b592b1f665d3880849  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/2.cc
! 8e4b07093021bcbc31cea1aa58d7ab0a  libstdc++-v3/testsuite/23_containers/vector/init-list.cc
! 1519cc19e7eadfc4fef8f575d964ee11  libstdc++-v3/testsuite/23_containers/vector/modifiers/1.cc
! eb2f20a71817b36711028ec1d3cb0cbb  libstdc++-v3/testsuite/23_containers/vector/modifiers/2.cc
! bd11fcf10b79647f8bc55f1d9471d13b  libstdc++-v3/testsuite/23_containers/vector/modifiers/assign/1.cc
  3922aaba2a433c66301ae0e55030a827  libstdc++-v3/testsuite/23_containers/vector/modifiers/assign/constexpr.cc
  79f9958e484b07409ba222ba2faa32b4  libstdc++-v3/testsuite/23_containers/vector/modifiers/constexpr.cc
! f0aa5bc2e6c7fda928a4a6e20b362e14  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
! 75a5828dd1b791afd1e1e337538dde58  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc
! 7ebe0a00c3c6232cfa8e3d1d2c4d17fb  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc
! 2fd4bdf2964fcd6ec69e53c3ca4904ec  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
! 265d83f0b170d2bdd58bbdf30702028f  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
! 0e0e6bf0f542ece2df9f9251623e336d  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/1.cc
! e85db7b279acdaac26a1dae23871747d  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
! d3e8515cac11f17d145d9d537da55aa4  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/54577.cc
! 31fc16343e678883cb12ad2b313c0847  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/moveable.cc
! 5c0108d280236dc6d7131c2da10e469b  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/1.cc
! 4ba5b22123f0fd1701b6ece1a1f834ed  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
! 81831c18183d31a96836cb1f31a0c9b5  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
! 85200afbea4686707963cab8e5a5abe8  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! 8ff9ac0d267e9584b17e115f7d60e802  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! b10e6b436296b8e4302bcacb0523455e  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
! 81f48fa654d8fe3f2e6934b59b97bb88  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
! 047e21a6daf2aabe38c92b64939035d9  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
! 4864613ca0a378fa9ef87ec99b054743  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
! 1bdd93b38ca657bd899e0de1c377f7ab  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
! eb9fd459b37a8b3db4900833fcc6fb33  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
! 42c8871e85efb908dbe9115c4b97d0d2  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
! 0a76871a37d86f32772b1964a841fcab  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
! 710f0b80f22c66f92b1f7e895f355ebc  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
  60880bfb14632a4fa03a825957bdfead  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/constexpr.cc
! 8784bde3ecc820f3119d5bec460bdfc5  libstdc++-v3/testsuite/23_containers/vector/pmr_typedefs.cc
  33db2bb591e55ad911ea124e372841ca  libstdc++-v3/testsuite/23_containers/vector/profile/vector.cc
! 1e51076d5de5af5d3cd0c3153f3dc174  libstdc++-v3/testsuite/23_containers/vector/range_access.cc
! 91e2c7fa1039701114208754dc22d19c  libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
! fa0f4defffe531843efe3fe207464457  libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
! 092c7d5e0103164a92538c4f9fad7b7a  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
! 0efacf32969a03705b9f2f4dd9549fcf  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
! f3d13efb590d3d7a454431649caaf9d1  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
! f3504b506a4b5a47b5d2e6425927c891  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
! e34e3fe9c1eb0d898f2832a65866f12a  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
! 337ba5e55875e48f97ae18dc2857ae1d  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
! e61f82c2dd072fa55e9ad84002b9bf7b  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
! 82a7d5e58e0ecd624d216e1e553371e9  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
! d3b1bb3f30141e8025dda63b2a0af67c  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc
! 0c02c34e63f8ea7e30a0b3a60996ed01  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1_c++0x.cc
! 8970bdd1ec5e7004803c0ca69f0b3ffb  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc
! 56be03ab31fe4a164614a6361bd3b9d0  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc
! 8859b26c15b97cd2c1c92919c2604125  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/4.cc
! 64d0bac668fb3285b9fa5172bcca023d  libstdc++-v3/testsuite/23_containers/vector/requirements/partial_specialization/1.cc
! e239e46d786cf5ecb880b21cde8ca8c3  libstdc++-v3/testsuite/23_containers/vector/requirements/typedefs.cc
! f6cad31d84b1847b98d87c952a149cae  libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
! 0cf78be8ae3544690e26c1d1bd9fa1ee  libstdc++-v3/testsuite/23_containers/vector/types/1.cc
! 01c110a914b62b33cb9aa89da47c749e  libstdc++-v3/testsuite/23_containers/vector/types/23767.cc
! 31f7f24f6064edc1f7c0b4b095df6dd2  libstdc++-v3/testsuite/23_containers/vector/types/pmr_typedefs_debug.cc
! c1cdbbdf1a51400ab55728b7febfb7a6  libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
! a97f6533d638836c8c739780ee3e989d  libstdc++-v3/testsuite/24_iterators/aliases.cc
! 88d481a664a1a1738c747c84e72d429c  libstdc++-v3/testsuite/24_iterators/associated_types/incrementable.traits.cc
! a143d04b198714ae7fe649e33efd11df  libstdc++-v3/testsuite/24_iterators/associated_types/iterator.traits.cc
! f979be40aae684d1e4c8d35c0ccd9d02  libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc
! a0fcd914846eb3e2c4731580c33f3ac8  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/2.cc
! 202e6b8cef2a98fe069a72735d92eb96  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/constexpr.cc
! 580bc6f8c951102c79b134a24acecf57  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/pr93884.cc
! f34c2ec2db7492da903c62aa0b26c9f0  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
! 63d8ab92f8edc66e9599dcb351771468  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/container.cc
! 0842b72525b296056bbe8d544437418e  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc
! 3601dcb55f71d8d3035417dd1ca98db7  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc
! 095860a8fa15182674b189dbd0b97836  libstdc++-v3/testsuite/24_iterators/bidirectional/concept.cc
! ca1b45449fedd09c71729f49cef94e1d  libstdc++-v3/testsuite/24_iterators/bidirectional/tag.cc
! b4b856158508ca50337a7b53b3dc9f79  libstdc++-v3/testsuite/24_iterators/common_iterator/1.cc
! fb111ce7bbedeceab984ff4e60e07c4f  libstdc++-v3/testsuite/24_iterators/common_iterator/100823.cc
! 6af04a093cd4743a3b35ca59a125b54a  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! c528c0f00ffa28ae4f7abd0c70249d38  libstdc++-v3/testsuite/24_iterators/container_access.cc
! ba3437bf3b9a475b041b6f7ec501a429  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
! 6070baf70924df52fe6764a2a1cdb59f  libstdc++-v3/testsuite/24_iterators/contiguous/tag.cc
! 8d5e705289624811662731658790b5d1  libstdc++-v3/testsuite/24_iterators/counted_iterator/1.cc
! 15e34e0add55b37257d995280fd518b8  libstdc++-v3/testsuite/24_iterators/counted_iterator/lwg3389.cc
  564e115ff4a93acb59630b87fa2920f9  libstdc++-v3/testsuite/24_iterators/counted_iterator/lwg3643.cc
! c1b3a7eb43a2aa86a3d5f962f76ac10b  libstdc++-v3/testsuite/24_iterators/customization_points/92894.cc
! 8b1b29b56d45c910c25ab1b66755416b  libstdc++-v3/testsuite/24_iterators/customization_points/iter_move.cc
! 37f18ede45e6e80fd24757df4ff8af87  libstdc++-v3/testsuite/24_iterators/customization_points/iter_swap.cc
! 946f335877ebbf9c953de443153a3b0c  libstdc++-v3/testsuite/24_iterators/customization_points/lwg3420.cc
! e0a166fd912eea9810b5854fadae7de3  libstdc++-v3/testsuite/24_iterators/forward/concept.cc
! 6053519af87005c1bbc4ea9e06847142  libstdc++-v3/testsuite/24_iterators/forward/tag.cc
! ac95878c4452746ba4ac767824bd5d79  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/2.cc
! 75564261b178970910cd262ce136e427  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/constexpr.cc
! 63bf581d5784cfd4423ac6c4d607088d  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/pr93884.cc
! d84b529a40c757abd3524ccd17747a1f  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
! 055fe071dfe8afc4f0581e1704f688fe  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/container.cc
! a8e15dd63097f29796c8e6d35e4fb176  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc
! 1daa51ed33cd59caf57ef78ccc1e5f89  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc
! b35864c07a0d2473c948d6b42631346b  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++11.cc
! 8f9dccdcc7e1170d21beb50e5c614c11  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++14.cc
! 03ae70d18cc77b5d803349deef0eee0a  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
! b7f81759f38c65b81a7106df73b052e6  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis.cc
! 437f58978002d1f6b31ac5fba75c9f23  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++11.cc
! f58ea44951638f75d41550335c618cd3  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++14.cc
! afbf134e563d12a5fdee23b5ba7b39d3  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
! 01d084dbad05a1a482e18cecd2d4debd  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
! 1dcb96ff6a51bd7f0490d0c5d9732d4c  libstdc++-v3/testsuite/24_iterators/headers/iterator/types_std.cc
! f254b1c37f106eebc5bc55470ab224a9  libstdc++-v3/testsuite/24_iterators/indirect_callable/92894.cc
! a4e27d523d01f0ad52fccda597bb1d05  libstdc++-v3/testsuite/24_iterators/indirect_callable/projected.cc
! a2e77fb2cdc3c2ea904787cd683ae6a1  libstdc++-v3/testsuite/24_iterators/input/concept.cc
! 8bdd4ba8221b12e6ff2107b4d22dea1c  libstdc++-v3/testsuite/24_iterators/input/tag.cc
! 92f521eca0a01695317b2a7acb0d5ea3  libstdc++-v3/testsuite/24_iterators/insert_iterator/2.cc
! bf4e40be5733cd492919cee461a8dd1b  libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
! 65e7775f33be9a04bf41f18eddc2fdce  libstdc++-v3/testsuite/24_iterators/insert_iterator/dr561.cc
! 11b43bf958fdf8f2f6690ecb3f983f6b  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
! af2c49fb60582cd57a41359251d0f228  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/container.cc
! e2776c4264f0886c90f5b2c3f53468b5  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc
! 63acb59c0c018d45f312a378b1dbf19d  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/typedefs.cc
! b279b61963a1d2e6eec75dbce52bd7b3  libstdc++-v3/testsuite/24_iterators/istream_iterator/1.cc
! c62bf745fc97788888e1f31ef115a26f  libstdc++-v3/testsuite/24_iterators/istream_iterator/2.cc
! eaa85a1f451f792d507caed4f5c6b298  libstdc++-v3/testsuite/24_iterators/istream_iterator/70766.cc
! 9e4c847bd9730f86a57df5ea430391e8  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
! 8f4d1f0e10990bba5c4f9cbaeac79d02  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/sentinel.cc
! bb76c4afa6ebba73115fae68df6ed0e7  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
! b6791eb89d7b366b6e8afc9da446020c  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
! 5e930a6c11b3f178458e4a6643e81931  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
! 92f4aed72d0b100191089f5875614d60  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
! ad45ca3bf59c215a14c1052d222787f0  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
! ebef1ad7b69f09dcab28796d3ab02ffd  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
! 0d6c142f5d52c9db23e05d52a85b7c3e  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
! b74357f86f7afdd8b2f77e06fc09d6d2  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
! f74c8347113eb2e0f434c0d3ba9b56d0  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
! 0c7c8eb7861b142cd37a53e3ad3f58bf  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc
! 0358039954e49d4c1b3c5e7bf7aa9013  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc
! 8d4887717254cdae2f79d25e02b7c19f  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
! d9b70955c2745f79161adbe3dfaec7be  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
! 4779e2c526cfb83dc519465b13b4e81e  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc
! f1d17450b4f81ab09a3882a88e70f9e6  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
! 9191b8a5225c61b243b832b5c3a2de0c  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/sentinel.cc
! 9996cfe04de8964c0ec140ed409da8f4  libstdc++-v3/testsuite/24_iterators/move_iterator/cust.cc
! 3ea055c458a84874be1a7cfcfed21c8f  libstdc++-v3/testsuite/24_iterators/move_iterator/debug_neg.cc
! c5fa8c68cf1c4262ce44d30cc07ba32a  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2061.cc
! 47a9e5d54d8823b402c4700ad36982b5  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2106.cc
! 43326f9550f18957a2c23579d4cc7dbf  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3265.cc
! bdf3295f6c66b5c49adc5a95d416ce43  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3435.cc
! bf573abd4c405eefa9505bf4b62f8e90  libstdc++-v3/testsuite/24_iterators/move_iterator/greedy_ops.cc
! 52901cbcedd4ef40a871a6dc2ebb67a0  libstdc++-v3/testsuite/24_iterators/move_iterator/input_iterator.cc
! baaa1bcb430e3ccb9640b3f1b0d826e6  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3390.cc
! 6c53301bf1243bf6ad110feba548e85d  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc
! ff641ab002d07a9f0b9a43f9c70cf93a  libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc
! 8a513df7ba82ad77cfd26c0adf5e4619  libstdc++-v3/testsuite/24_iterators/move_iterator/rel_ops_c++20.cc
! 7d9386e1e095a159011718fdf87b11e4  libstdc++-v3/testsuite/24_iterators/move_iterator/sentinel.cc
! fdf23f6931bf604d32a6f97319225760  libstdc++-v3/testsuite/24_iterators/normal_iterator/58403.cc
! d333cdfb79b1f92b5d1139adfd5d1edb  libstdc++-v3/testsuite/24_iterators/normal_iterator/cmp_c++20.cc
! 9fef6f40c987a710cff89a6c50cd6155  libstdc++-v3/testsuite/24_iterators/normal_iterator/debug_neg.cc
! a4687decd5f4a938833508f8451f9aaa  libstdc++-v3/testsuite/24_iterators/normal_iterator/greedy_ops.cc
  4ff5db259d95f86dab8a3a9b2f91f78c  libstdc++-v3/testsuite/24_iterators/normal_iterator/to_address.cc
! 659cfa256e2941588923db423f6df485  libstdc++-v3/testsuite/24_iterators/operations/26020.cc
! b04a6c8059b9caebd2508da42fc983ec  libstdc++-v3/testsuite/24_iterators/operations/40497.cc
  631af97d6c75b598ecf8901dc62067b2  libstdc++-v3/testsuite/24_iterators/operations/lwg2353.cc
! 063eb0ed156d603d12ba6c66ea1f97a6  libstdc++-v3/testsuite/24_iterators/operations/next.cc
! 3eaa9d90218b9841dad634c8789145df  libstdc++-v3/testsuite/24_iterators/operations/prev.cc
! cf905e7311f0cc08836f1d37801501f5  libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc
! 11f5ce00e9def47e28eeff9532dd7cbe  libstdc++-v3/testsuite/24_iterators/ostream_iterator/1.cc
! 700c290583c97e30db861e5308b48616  libstdc++-v3/testsuite/24_iterators/ostream_iterator/70766.cc
! 02a499a97e10a5da9d4f56c728698d5f  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
! dd09c6f645a9ec91ef93858ff72900ff  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
! cccfed289324ef54b95446564ff1d5b6  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc
! b8013d34adb1af20c15c8cca482a38c7  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/2.cc
! ed4f6b4c64c6e0362d7634e835953545  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
! 3337bde4b106c059878fb28e007d8931  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc
! 2e9b147c691370bd24960767ccb5f04d  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
! 60f3ec8641a312a5db378b63e5917539  libstdc++-v3/testsuite/24_iterators/output/concept.cc
! 2a4b4beafbc4f7d9c5f905008904f07e  libstdc++-v3/testsuite/24_iterators/output/tag.cc
! bdea9a431f0294da7de0d3636f12bcdc  libstdc++-v3/testsuite/24_iterators/random_access/concept.cc
! e9990ad62e250ca51845e687c57161b3  libstdc++-v3/testsuite/24_iterators/random_access/string_vector_iterators.cc
! 9dd9b265d45d3e37512d4a2a27a2281f  libstdc++-v3/testsuite/24_iterators/random_access/tag.cc
! b9523a2d7aa91cb822efface44bf1a43  libstdc++-v3/testsuite/24_iterators/range_access/range_access.cc
! 09926d30afcffa8a74ca64b5f17338c9  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp14.cc
! d5694960d1ad2526b07fb783f7e5d600  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17.cc
! 57a2a73e19a3503c9aaabcd5d16e3f5d  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17_neg.cc
! 2a3bf4d8cf4c400a2d9c0859074c9fec  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20.cc
! 90b5cab05718d53c555f40345ec02f5b  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20_neg.cc
! 31b664b2f73a70c179679648f2a849a8  libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
! fa4584b00964b0e173edaee95e223660  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
! 11c18aa6cbc9ae026f4897986da946c6  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
  5dcff108eb2f62baa60bfa3a74d92304  libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc
! 7ae6fd4e37dc783a9299a008699cb023  libstdc++-v3/testsuite/24_iterators/range_operations/distance.cc
  3851ab6d95bc78163ba5186545dd9eb7  libstdc++-v3/testsuite/24_iterators/range_operations/lwg3392.cc
! 06879e8f0c036a6888ff075534a654b0  libstdc++-v3/testsuite/24_iterators/range_operations/next.cc
! cf6722fdbcd96fc9a88aa2e4b8ae0a81  libstdc++-v3/testsuite/24_iterators/range_operations/prev.cc
! 1cc7a2ce4fbd1378b403594b5255c701  libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc
! 04b8601a2a4c58bdf37e786b192babdb  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! cc1079f7b7a173518b57403ed41156d9  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
! ca785e2462c45e27ed61d6f252822d77  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
! 2c66f7fe628a324cdac67a17a8ce8349  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
! 4c557c2f5ba38905c67721dbc6f2c9c3  libstdc++-v3/testsuite/24_iterators/reverse_iterator/cust.cc
! 6a0fa1374f52203c0c12258e659f1a59  libstdc++-v3/testsuite/24_iterators/reverse_iterator/debug_neg.cc
! c7501ac0591bc43aa99863e42892f648  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr1052.cc
! 4370eae629813606cece1c4a4798f35c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc
! 9756f17706f29fadbedfd64568f54b47  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr3435.cc
! 9064a47e1432a498062b3b5d9e2c1b0e  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
! 940b096e31623931f87604b5a83c82a3  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
  b0c0208d50f550375365900191253233  libstdc++-v3/testsuite/24_iterators/reverse_iterator/noexcept.cc
! 364a404c9c75076b4c9cf26e22d0d643  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops.cc
! 3aefa019ec5b7c6de8c7c8f3e569913a  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc
! fb2b2b974299e8158c417aed7fccddd5  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
! 1a208c9448695cd923030796401c1726  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
! 457c0cc2aa85d1350420c2f9476ea267  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
! c63c4a887570255ecac25db719936703  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
! b35ee5ce3255b3730f130c00dc910f44  libstdc++-v3/testsuite/25_algorithms/adjacent_find/1.cc
! d0b1138b0c858f931121918c2a2da759  libstdc++-v3/testsuite/25_algorithms/adjacent_find/check_type.cc
! d5483c49cd8493d93336be3239619c9d  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constexpr.cc
! 84f02101a2523b8064aeeea57faf75e7  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constrained.cc
! 56a3e28b28351479663ff4932646609f  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc
! 6f64f4ffc555cd8a41fa0286408816b1  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc
! 805ec9054fba7214aa58e0083db7ff7a  libstdc++-v3/testsuite/25_algorithms/adjacent_find/vectorbool.cc
! 3b458656936a26fa087d5dace01ed09f  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc
! 841904acb7122eccc6444f99c7480cc8  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc
! d649bdf1720bca8431b461f16ad1a272  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc
! 974cace6de43d6070d1ff54b316d0d5a  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc
! 37d24f0edd6ed6bdbd7caca8ff3f444d  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc
! 50cab7c03bb3ae564f4ee82f7a27f169  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc
! 13284688b582f5616675e3c1ee79a84c  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc
! a767a44133a485fb10cf2e697e2eeea6  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc
! f78be8d9cc83616a4c742d345eb11793  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc
! 25badbf7278154728ee8b7c46f9e3fe9  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc
! 8399be0b9b951c0265d31106c9fc9240  libstdc++-v3/testsuite/25_algorithms/all_of/1.cc
! e7989cf4a8230fce22c98eccce4d41b4  libstdc++-v3/testsuite/25_algorithms/all_of/check_type.cc
! 72e7c4cb2edea157c0ed4f9090714e09  libstdc++-v3/testsuite/25_algorithms/all_of/constexpr.cc
! 386f1b60096e8f9f492b711328645e8a  libstdc++-v3/testsuite/25_algorithms/all_of/constrained.cc
! f081371265342e5035e3c145f1915b9d  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
! c6d367b084ab25b71977a0a974e0a7ea  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
! d849539b7bfcce332ca2eaded0091d13  libstdc++-v3/testsuite/25_algorithms/any_of/1.cc
! 473a333dac4ff889f2e0213cbabf7ce8  libstdc++-v3/testsuite/25_algorithms/any_of/check_type.cc
! 93911a12c7d8d5a39dec460a47efa100  libstdc++-v3/testsuite/25_algorithms/any_of/constexpr.cc
! 82c5a5b390d7cfee4d5c6a956b4a7490  libstdc++-v3/testsuite/25_algorithms/any_of/constrained.cc
! e5eef66d17b81af047b55eab09a15496  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
! a637da7810f8d700a771778a43ffcc1e  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
! d04868cffaa2fff511136d82f80801fa  libstdc++-v3/testsuite/25_algorithms/binary_search/1.cc
! 9718a01f5b8f88db57177a92ed3ac74f  libstdc++-v3/testsuite/25_algorithms/binary_search/2.cc
! a8285a3f8c2a3a9ca0420a09a23b62d1  libstdc++-v3/testsuite/25_algorithms/binary_search/check_type.cc
! 588e749af4034bbc6f07502d1273c494  libstdc++-v3/testsuite/25_algorithms/binary_search/constexpr.cc
! 9753f87c84fac3bef103af7417374751  libstdc++-v3/testsuite/25_algorithms/binary_search/constrained.cc
! 1835fbddc6e22a8a89d1fae757e9f4b7  libstdc++-v3/testsuite/25_algorithms/binary_search/partitioned.cc
! 3bf43fd6cd7b909edc4461eab1735a01  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc
! f325e296de2f5acdf84de83fe4141405  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc
! d7237434fd10f1bb199af09b602bf3a5  libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
! e2784cb03091f8b8d64effbfc7a1d169  libstdc++-v3/testsuite/25_algorithms/clamp/2.cc
! 98988535003e8b1d6eeb1a5748a7f9c5  libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
! e2367337bb98389a3471640f1b6e863d  libstdc++-v3/testsuite/25_algorithms/clamp/constrained.cc
! 32260cc33973fa0849d6c81fa00e6389  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
! 62f31809d63048366621060ff715781f  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc
! b3550a8684d4888ff5c2e243087f628d  libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
! 177cabfe6b30523bd1d1463d013f00b1  libstdc++-v3/testsuite/25_algorithms/copy/1.cc
! 01e966f44ac05073030b3ec0f2b362fa  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
! 8bf89af26b056de869043ec9426b2d40  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
! 841b22dcfcbdba02c358cf74d8bbb302  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
! 1e980173653871ab06a4c63955a79cde  libstdc++-v3/testsuite/25_algorithms/copy/4.cc
! 66fab69d5a133acc3f5e59ab0205d1a0  libstdc++-v3/testsuite/25_algorithms/copy/58982.cc
! e761431df8c0c7d88b0859d47688fa26  libstdc++-v3/testsuite/25_algorithms/copy/86658.cc
! c891424537b1c0ebcadf351402d045ff  libstdc++-v3/testsuite/25_algorithms/copy/94013.cc
! 72d1d72f3423105462a1e4c5744a1944  libstdc++-v3/testsuite/25_algorithms/copy/95578.cc
! 612d5107e38e2fd4d8addfe51a5c55b3  libstdc++-v3/testsuite/25_algorithms/copy/constexpr.cc
! 5e09099309189d9220bb8806540d6d43  libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc
! 60b084323aca54b8b8fd5424ef0461ea  libstdc++-v3/testsuite/25_algorithms/copy/debug/1_neg.cc
! fe50ce88926e9d161ebbc0212fb0e78c  libstdc++-v3/testsuite/25_algorithms/copy/debug/2_neg.cc
! b2c7284211879325adb91cf51a36cd43  libstdc++-v3/testsuite/25_algorithms/copy/debug/95289.cc
! 0056b64df4361d9973ef4f09d518b7b4  libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc
! 420fe390c4814697194e43caf4c15625  libstdc++-v3/testsuite/25_algorithms/copy/debug/constexpr_neg.cc
  a4e3b919e921272cb082f7fa810f39d2  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
! a759ab5fe2234b1136659bf7a39187d5  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/2.cc
! bed428097249f8d19321154a00cd6570  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/31.cc
! 3f9d1f87d4696ea8390648b5ddc5f349  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/32.cc
! 8c7278d1f5c219cee132f279120e0e25  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/33.cc
! d5cc0151de40142dd0cc5e23f01bb9a6  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/41.cc
! 629867bf1aad2dc32ff57224cf05ee4a  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/42.cc
! 2889edd6b7d41873e3b1b334bfeb2116  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/43.cc
! 4d7d1402823ab95ed69c8612ba5aac03  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
! 1033821660a7d352867f6f6cab940335  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/69478.cc
! 55edd56af0215cdaa50d585ff4dca30b  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc
! 9c0b6e18973013f3cf913f79092c18c1  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc
! 11d62f1b98a85fd2da71d11c66e85e87  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
! 8bc3d57cdb306c1642cd5a5d69efee6b  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
! df74350ddfbaa0af672780fe0a2cfb63  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
! 8fc6a39514bd81a66ec54bb24b471c42  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
! 28e273878e9a040265cfe302962d9b05  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc
! d7ee23f823ccdda9564597c9865cb166  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
! aa156cf9079c8e62d301d2af1dbf197b  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
! c70aabf1b3087a6a7ed829d3143674d9  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
! 8b592f8727d345917b4612cd259d628b  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
! cee1930285898de61a4be2751f2aeb4f  libstdc++-v3/testsuite/25_algorithms/copy_backward/94013.cc
! 1ab4159ef3b8b8cb55039235bdaa1e78  libstdc++-v3/testsuite/25_algorithms/copy_backward/95578.cc
! e03dbfa91278f6ec6f1557e001b7b025  libstdc++-v3/testsuite/25_algorithms/copy_backward/constexpr.cc
! 79368dea58eaf8096f58083469b409b0  libstdc++-v3/testsuite/25_algorithms/copy_backward/constrained.cc
! bcf8482b0557b6e2cce9fd1dc4e720cc  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/1_neg.cc
! 15dd7110587b380d80dfe8d3a88e5150  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/2_neg.cc
! 5977d56fc3cb1b6a9323510b9226f0b7  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/3_neg.cc
! 74508b71a223c7418646d4bc676d7a2d  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc
  da1fb78d5a3cd469ddf537052865be96  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
! 03cc3dc56feec672a1b3723533137cc5  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/2.cc
! 08547362e731a33dc3c8440e95798475  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
! 0f81c254915b007e006c9907c905ef00  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
! 39c4e068278b7050496d417c1d893c71  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc
! e5bed8e20df3fad20f903e7537508e3a  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc
! 4512e7e12cb2c8ea9ae35d7ed7a3f4f5  libstdc++-v3/testsuite/25_algorithms/copy_if/check_type.cc
! 215b8599d0cce3edfe617cf7b3db015d  libstdc++-v3/testsuite/25_algorithms/copy_if/constexpr.cc
! 9bd8c33478c91f607726ce596ad99e0a  libstdc++-v3/testsuite/25_algorithms/copy_if/constrained.cc
! 3349ddaea4c2f3defa34e3ee7e617bbd  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
! 95589e4d187aff3fd4e2dbc6bf632a2b  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
! a3e7222df69ad45f94c26a42c43f2335  libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
! 60133f910aec11850b64fdbb10c453bd  libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
! 0911dc705b29d38aea911a8c45926855  libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
! bca0b6a846c7a12d3a8a06eb7cee0a11  libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
! 087b08b3379d3f196099965bfc86db51  libstdc++-v3/testsuite/25_algorithms/copy_n/5.cc
! 63a4da9f47b50135ab63f45596f1d81a  libstdc++-v3/testsuite/25_algorithms/copy_n/50119.cc
! 0fe1a6d4fd025d4f35912a8634857183  libstdc++-v3/testsuite/25_algorithms/copy_n/58982.cc
! 560f00e8eedd3bc2774a2d1577f13a2d  libstdc++-v3/testsuite/25_algorithms/copy_n/constexpr.cc
! e772a2896896c2f4ff3bc59807e1dfba  libstdc++-v3/testsuite/25_algorithms/copy_n/constrained.cc
! 5cd374dd281daaa1a93ceb3a76f4308e  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/1_neg.cc
! f0eaa78b3c00bbb26206a15798fc1ddd  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/2_neg.cc
! 85b31e9ae49af915e0a7b04bf240e257  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc
! b181356ea2071380e344216f253ce759  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc
! 4a97012187c61bdf3c3fca9cb9eb505d  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc
! 75d4ab96b8046b9199c412ae7e7db878  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc
! 84735b58cedad11e9bad78b99dc2febe  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc
! b1d4a7c9e979d41f918d8c8811dbbb98  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc
! 02b47faba8fdbd31c49d0010a19e2c93  libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
! b22122efe242fb4402bdf30a6039da89  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc
! dee2d7aa66bac9479b368cf813e746f6  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc
! 3230810f09462d12b4a9f8eed966ce55  libstdc++-v3/testsuite/25_algorithms/count/1.cc
! 8cf3f70029425876487a241a5859fd02  libstdc++-v3/testsuite/25_algorithms/count/check_type.cc
! 0f7b34bdd46bd19aab68e03ac4509883  libstdc++-v3/testsuite/25_algorithms/count/constexpr.cc
! 74e7f78a1ba33106b1314b079a68abdd  libstdc++-v3/testsuite/25_algorithms/count/constrained.cc
! efcf2bf88da2bf7b11217502efe79092  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc
! 92d8fb3984120317b8f0d6f67b5269a5  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc
! 369068b2b511063c3c2ba2626b9df863  libstdc++-v3/testsuite/25_algorithms/count_if/1.cc
! 6763afe72aa9ec7c67ed183fee506d6f  libstdc++-v3/testsuite/25_algorithms/count_if/check_type.cc
! 5c7d9c6154476093f88885acf9d16d82  libstdc++-v3/testsuite/25_algorithms/count_if/constexpr.cc
! 1804350e1737ba988a8f015cea0f07a3  libstdc++-v3/testsuite/25_algorithms/count_if/constrained.cc
! 5a29512ae869c4583b3188c750e22e9d  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
! 6280e57768fb0a1c32182acb8948bd6b  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
! e67c8c0d3a22d4acd86942968d668fc3  libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
! ac54fc39121eaead364a3542ad099e7c  libstdc++-v3/testsuite/25_algorithms/equal/1.cc
! ecb95e887e08c690440aac3ea0aa7636  libstdc++-v3/testsuite/25_algorithms/equal/2.cc
! ed1eb16618fbe25b4887431e524816d6  libstdc++-v3/testsuite/25_algorithms/equal/94013.cc
! 5225b7b04b647f86ad57e0d823b7e94e  libstdc++-v3/testsuite/25_algorithms/equal/95578.cc
! e1060fbc973f9bfc655cc5f72c082709  libstdc++-v3/testsuite/25_algorithms/equal/check_type.cc
! ee3f509b48de1d6b21a95d0ab12af3ef  libstdc++-v3/testsuite/25_algorithms/equal/check_type2.cc
! 203aa0ede55da5b4af8c064ceffb33b1  libstdc++-v3/testsuite/25_algorithms/equal/constexpr.cc
! c2b7e18066fe524e1d3944595e555001  libstdc++-v3/testsuite/25_algorithms/equal/constexpr_neg.cc
! 2586de7804150ae767ef20c02f71abec  libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
! 0a63ea68265bee3405770075ac49a979  libstdc++-v3/testsuite/25_algorithms/equal/debug/1_neg.cc
! 31aba990c9b170bf02854415b4a92290  libstdc++-v3/testsuite/25_algorithms/equal/debug/2_neg.cc
! c65302052bd4059300003ff14d4b2e48  libstdc++-v3/testsuite/25_algorithms/equal/debug/3_neg.cc
! 43eee8f8785c557398cf0699c3e47664  libstdc++-v3/testsuite/25_algorithms/equal/debug/constexpr_neg.cc
! afd2f0bbfb1cf8527222f46b2a38cc9a  libstdc++-v3/testsuite/25_algorithms/equal/deque_iterators/1.cc
! bd31692c50df0792a6736e766f38b07e  libstdc++-v3/testsuite/25_algorithms/equal/no_operator_ne.cc
! 006717a207abc4b54e2a91ae4fc05290  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc
! 9130a9791d352e9895a4c4b6ef52a4a6  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc
! a8bf1e440a3fdf728d0a169decc9bbfc  libstdc++-v3/testsuite/25_algorithms/equal_range/1.cc
! cc8ddc76892af02131f2542e11455341  libstdc++-v3/testsuite/25_algorithms/equal_range/2.cc
! be152ce0f675fea87010eddc4f1a8f01  libstdc++-v3/testsuite/25_algorithms/equal_range/check_type.cc
! 9837ce762a6da1302e98b5012c5b4550  libstdc++-v3/testsuite/25_algorithms/equal_range/constexpr.cc
! f9f23b3bc49005f21e89523af2c2fdd8  libstdc++-v3/testsuite/25_algorithms/equal_range/constrained.cc
! e062a619865343d5bb0a385ffe0ffe07  libstdc++-v3/testsuite/25_algorithms/equal_range/partitioned.cc
! 33f9aa1a8de323450a8e4cb079aa1d99  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc
! 41169ac305038ae02eea0872f2988ea9  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc
! 188cc596b37525a251abe3742f2d91f8  libstdc++-v3/testsuite/25_algorithms/fill/1.cc
! 622f9647e2e83e6ba879b4ea8730d7c5  libstdc++-v3/testsuite/25_algorithms/fill/2.cc
! 37d1fff128cb02764ed8ef9312b51aca  libstdc++-v3/testsuite/25_algorithms/fill/3.cc
! 4ebfa9ea0b34480b34488e7ea20caaff  libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
! 534e9b4593000a841aa964abdd6ad586  libstdc++-v3/testsuite/25_algorithms/fill/4.cc
! 513078934b15c96c422e36b8d45b6d60  libstdc++-v3/testsuite/25_algorithms/fill/94013.cc
! a65a9017aad93064f061a4185096925c  libstdc++-v3/testsuite/25_algorithms/fill/94017.cc
! 8a8352e9eb1982e76252b24a9a156969  libstdc++-v3/testsuite/25_algorithms/fill/bvector/1.cc
! d199d80bcce23caa7e53b5b96dba9600  libstdc++-v3/testsuite/25_algorithms/fill/constexpr.cc
! 12e5359a5906878ec3ee05b462d86e09  libstdc++-v3/testsuite/25_algorithms/fill/constrained.cc
! 7d4a05114fb1c5d5f77bab10a4659cb7  libstdc++-v3/testsuite/25_algorithms/fill/deque_iterators/1.cc
! 1786191429b3d7ab3f78554996902163  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
! 0c817d7ef666f5eacdfa23bfb2e374fc  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
! 08e8f51a6791b3ae021c135769f1e0db  libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
! 5378b080b481f0e7e7fb8fa9c5523ede  libstdc++-v3/testsuite/25_algorithms/fill_n/2.cc
! 66f1fb3a703897862b06d576fe7e1447  libstdc++-v3/testsuite/25_algorithms/fill_n/25306.cc
! dd4a7f1410642a835815632776ff746b  libstdc++-v3/testsuite/25_algorithms/fill_n/35725.cc
! f88595f13f04ef164c1e177bda52e024  libstdc++-v3/testsuite/25_algorithms/fill_n/87982.cc
! 4a332faf98c7b0377538e42ee3fdf4fc  libstdc++-v3/testsuite/25_algorithms/fill_n/87982_neg.cc
! 1ded870067b1c1e99517c657efe50ac5  libstdc++-v3/testsuite/25_algorithms/fill_n/94017.cc
! 251965c810329154ac499c6dd5bb4f40  libstdc++-v3/testsuite/25_algorithms/fill_n/constexpr.cc
! 3bbf0f160d987d34657918144fe8aaaf  libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc
! 8c24a606409aa0e3a205e2784aea835d  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/1_neg.cc
! 1a15392e14a60f1f3c2af68c96e56c78  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/2_neg.cc
! 3853066fca0f032e0bcb983c012d33d8  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/3_neg.cc
! 6ed9eab8f35dd1d619025cb8b2d1e966  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/4_neg.cc
! 4f5184dddda094fe84b04bc195ec4853  libstdc++-v3/testsuite/25_algorithms/fill_n/dr426.cc
! 006717a207abc4b54e2a91ae4fc05290  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
! 9130a9791d352e9895a4c4b6ef52a4a6  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
! a61ecb48e5c62054dc667ebf4c260fd1  libstdc++-v3/testsuite/25_algorithms/find/1.cc
! 18f4d191488660bb42c9b4cbf10d5aa3  libstdc++-v3/testsuite/25_algorithms/find/17441.cc
! 6a625e05156bcc6a4b9998d27890a4ea  libstdc++-v3/testsuite/25_algorithms/find/39546.cc
! a0a07beee540707d038360a181db402e  libstdc++-v3/testsuite/25_algorithms/find/check_type.cc
! 30f5e4993435ccc22a950bb4640005d4  libstdc++-v3/testsuite/25_algorithms/find/constexpr.cc
! 4e7fa7ee7d8a84900d6dbb0ff7ba00c6  libstdc++-v3/testsuite/25_algorithms/find/constrained.cc
! 64de9308a6eee5303eec42607cb013d0  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
! 2b005c6012a82116bf22bb3727eaf5b5  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
! 10349e16939e1622caed7d76b17f53af  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
! aeadaed7257f31b28b45768884878640  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
! 5054cfb8ad9143f3495ef273555d122c  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc
! 233da1ac56901c73e437ccdd1e63ffc4  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc
! 8b6b580cecf7c7914bddd5bf2a6075a6  libstdc++-v3/testsuite/25_algorithms/find/vectorbool.cc
! 66eb986c23539f8c18fd158c54cbce96  libstdc++-v3/testsuite/25_algorithms/find_end/1.cc
! 3ff1af40bdccc86d0deee0ee37ff4539  libstdc++-v3/testsuite/25_algorithms/find_end/check_type.cc
! f2e5e602ead243b1326dd56b2d0f990f  libstdc++-v3/testsuite/25_algorithms/find_end/constexpr.cc
! be7d7d9ec0b7adb1e54b618d55f58ff6  libstdc++-v3/testsuite/25_algorithms/find_end/constrained.cc
! d73c96632dcce7e7305483a5bb8d5fdf  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
! b5c708d2a90b2f5cee0d99dc04060542  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
! c04e3810b7101d41b4192d209c2c182d  libstdc++-v3/testsuite/25_algorithms/find_end/vectorbool.cc
! 807b1ce74925fdf0f1508f040ec0ddf1  libstdc++-v3/testsuite/25_algorithms/find_first_of/1.cc
! f192237a2f5274128e68a8d328815f6d  libstdc++-v3/testsuite/25_algorithms/find_first_of/check_type.cc
! 1bf534428cf8a17ab4df70e9d3c14c6b  libstdc++-v3/testsuite/25_algorithms/find_first_of/concept_check_1.cc
! 6bc9e7d1384ac2019c3ea5ea655d0798  libstdc++-v3/testsuite/25_algorithms/find_first_of/constexpr.cc
! b5c25fc04bcff4fd42c2ea1932ea66f2  libstdc++-v3/testsuite/25_algorithms/find_first_of/constrained.cc
! 7984c87acf51fb374db5526a0640c5f7  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
! a7cbd613f27add2b809bd3a3704225c7  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
! 7b325985357a91b1a51bcdd82c3b0a92  libstdc++-v3/testsuite/25_algorithms/find_first_of/vectorbool.cc
! 4f34d495965a1d71f2a0b165f07f1f70  libstdc++-v3/testsuite/25_algorithms/find_if/1.cc
! 4e8ac68d6a27e0b62271c01370c2f7ca  libstdc++-v3/testsuite/25_algorithms/find_if/check_type.cc
! f8c6df837828d63c659464c84b089d8d  libstdc++-v3/testsuite/25_algorithms/find_if/constexpr.cc
! b7362a18a3460b8e7b892d70a8a7feed  libstdc++-v3/testsuite/25_algorithms/find_if/constrained.cc
! b1ce5b537a9335a3386de031bbdde09f  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
! e0dd8669bf3276369c6292db39b69e1a  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
! 8b6b580cecf7c7914bddd5bf2a6075a6  libstdc++-v3/testsuite/25_algorithms/find_if/vectorbool.cc
! 328c5663ef3cd7aa9d4a288a260e8b67  libstdc++-v3/testsuite/25_algorithms/find_if_not/1.cc
! 1b94ef04bf187a5937a40de581eba7a3  libstdc++-v3/testsuite/25_algorithms/find_if_not/check_type.cc
! 626fad3038e74866738867fe6d5307d0  libstdc++-v3/testsuite/25_algorithms/find_if_not/constexpr.cc
! 3841862d06722e446a8b66f69c784353  libstdc++-v3/testsuite/25_algorithms/find_if_not/constrained.cc
! be121df10cae73f7d101a14acc9d88f4  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
! 77921b43e402f4202df07f8a9beb4a9d  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
! 28811c5679956ad4c2ce1e2d2788f32b  libstdc++-v3/testsuite/25_algorithms/find_if_not/vectorbool.cc
! 534fc6b315d4064e76aff67b8c4c154e  libstdc++-v3/testsuite/25_algorithms/for_each/1.cc
! 7d09df220a9e9862490d0fc7ba49d1e9  libstdc++-v3/testsuite/25_algorithms/for_each/constexpr.cc
! d1f63920f6ed6c1ca19711c477f4f582  libstdc++-v3/testsuite/25_algorithms/for_each/constrained.cc
! 97677ae9634e0d8b19675faa9d89471f  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc
! 80065d4ed9e5d028988a84b2d6c15b92  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n_debug.cc
! a1aacdfeb3e0d19bc959fba547afd443  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
! 0a06c19118ca46a80bb74b7b71bed330  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
! 6b1cf2e97dbeee0a90043f1abe9044ef  libstdc++-v3/testsuite/25_algorithms/generate/constexpr.cc
! a81fc16e7f5ea2cd2aba2bfe960fe2d4  libstdc++-v3/testsuite/25_algorithms/generate/constrained.cc
! 92790b72bc011d70efcde33859597331  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc
! 71e39e0ca445653e9476c9a22b68e95e  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc
! 452585d3164abe6036fd88aae0f20fa1  libstdc++-v3/testsuite/25_algorithms/generate_n/1.cc
! c17534ff872482e59b589ed0d79d84c7  libstdc++-v3/testsuite/25_algorithms/generate_n/25306.cc
! 98996018f2ba4d8c77c3c4de4ce4f8fa  libstdc++-v3/testsuite/25_algorithms/generate_n/87982.cc
! a02463b1f0f71b256c51d62221ce3af1  libstdc++-v3/testsuite/25_algorithms/generate_n/87982_neg.cc
! a691998610b25d1b8091ecffd6b44fb6  libstdc++-v3/testsuite/25_algorithms/generate_n/constexpr.cc
! 52d5e02cbce2f0922f2a60f2d6733c11  libstdc++-v3/testsuite/25_algorithms/generate_n/constrained.cc
! 65219fd4a42be05efdfe48001488ea84  libstdc++-v3/testsuite/25_algorithms/generate_n/dr426.cc
! ef03e229e954dfc69d96ba999753ca4f  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc
! 1d91da3a245dc28b198c4f6cfc7a7f77  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc
! d2ae6c0cbb166f34ac109bd5281a7a84  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc
! d8ad4b823c26e79c817b5702a418e9b6  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc
! 97bad822fb30d2159aaf2f038dea0d27  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert.cc
! 0886faadbae53d0b2f6609abc0700913  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert2.cc
! c8d3d51e6c415e269bc326f5de3f0e1c  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
! 76746a93f45ba71536413614997e62b3  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
! 340a26df20669f90b4f690810b1f58c1  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
! 776b44dd53f4fe0b3f701aacd6eecac1  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
! 20c79f2e299a221eab20f57c14d053d5  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! 7b38e486700c491fe1fdb50697c14145  libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
! 5bd7d9ed6db030dd361b92898f1587a5  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
! 185584434cc43cdd57f64e461e99e1af  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
! 50cfc1b50f3c1fcb732d9829e5a4de94  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
! b02d3711878fd27b7ce10e9f0341a43f  libstdc++-v3/testsuite/25_algorithms/includes/1.cc
! f5b6f3d5bbeb9d9af1370cb5e50db6ce  libstdc++-v3/testsuite/25_algorithms/includes/check_type.cc
! 586f89c797aee03d1a2e5b826564e496  libstdc++-v3/testsuite/25_algorithms/includes/constrained.cc
! f71b8d2812db1a69e4758b82becd1e48  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc
! 0d3430a25b8d9a7d02cc16c09293bd30  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc
! 4328b648bddec1c2376e5ed53e6a0864  libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
! 7e975debb46baa3b7ac95b824b0cb776  libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
! 102f7ab06f784172194eb20f98ba48e3  libstdc++-v3/testsuite/25_algorithms/inplace_merge/check_type.cc
! 26d74a0821ea0c5cc06c223c9ff2147a  libstdc++-v3/testsuite/25_algorithms/inplace_merge/constrained.cc
! 0541e2c6251b27dd383597b02d9a1d60  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
! ad98c980d34d5489a508707e209f1d2a  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
! 6a9ce3b99198ed9630011d394023fca8  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc
! 9734bce8ae4bd37a2c0b3138b8c0efd6  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc
! e62f5b11cde6142229be391133d9c4e8  libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
! 1f2e749f666afb4b55690840ec100860  libstdc++-v3/testsuite/25_algorithms/is_heap/constexpr.cc
! e168a93af4175cb89b7d59bd22650510  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc
! 637703aef65ca9386f672acba41c9aad  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc
! 0175f1fdc73b04ce1c70f8912ecd0e9d  libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
! 1318f10ef6712befb98af078f9c41e3f  libstdc++-v3/testsuite/25_algorithms/is_heap_until/constexpr.cc
! 5730c765e92e3fffcd60a97e9a3ae8d3  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc
! 6383661f6c25db9a4a541ae38677ec4b  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc
! 756f0f7c662b6da4c45d51b839ec3a7c  libstdc++-v3/testsuite/25_algorithms/is_partitioned/1.cc
! 8b45b0c4c4eeef6669768d36753adf61  libstdc++-v3/testsuite/25_algorithms/is_partitioned/2.cc
! 571c619ca85b6cfac6ee2e4f6ee15a4e  libstdc++-v3/testsuite/25_algorithms/is_partitioned/check_type.cc
! 8dddfa6e6f5ea3fd331356f5e1ec12af  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constexpr.cc
! 6b1bc04346f26ec08028b9404fb1b725  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constrained.cc
! cead898242e364bd0e53ddde43420b7f  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
! 18d4eaf0b50d06d3f70a17b58809b4f8  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
! f853bd5855273e665fccd2974c87ebf3  libstdc++-v3/testsuite/25_algorithms/is_permutation/1.cc
! b84420825ebb670bb83c79a29453368c  libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
! 54f161aa7d8a3b9ade7b964f32863e66  libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc
! a90f60857b6bb884fc8740dacd282edc  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type.cc
! 4ff7f4e4df2227499533122946e4ab2f  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type2.cc
! b56f5399bcb446b686dee9754d0a8b6b  libstdc++-v3/testsuite/25_algorithms/is_permutation/constexpr.cc
! 34926fd54429a2c66a21a85de54ddc72  libstdc++-v3/testsuite/25_algorithms/is_permutation/constrained.cc
! d52b4d3944d90632f8f1db9fab0ddead  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
! 1352e526cd60eda6be8f6c01ea487da0  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
! ffdf26cb11b4d11078fa1b3d09279b4d  libstdc++-v3/testsuite/25_algorithms/is_permutation/vectorbool.cc
! 6b12f012b28ce5d07702f93982ee1ee4  libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
! ed3d4deaa7497c7a1263de5c43d0d4d7  libstdc++-v3/testsuite/25_algorithms/is_sorted/constexpr.cc
! 9ba02d4d460ecb25753f22c4ad2e47a6  libstdc++-v3/testsuite/25_algorithms/is_sorted/constrained.cc
! a4dae77f37c1cb17073c4a9f52b66be4  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc
! b0c196d5159b5b10db2cfe3dd7e75bec  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc
! dfa25fb2226c3d6c61ac7fc5dab4be96  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
! 7ce1f2d7f1075110a8ae9eb202225da4  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constexpr.cc
! 4fe9d8c546a413edb4f314afd1052e9c  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constrained.cc
! 13d22c9fee3fba751c45498ca50a8426  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc
! b212623315d498a48a03733281b7c437  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc
! 4e32a028bf871c652aae0c248cf491ea  libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
! a5d6b456486e8d8f3ae7aeb0b5a74891  libstdc++-v3/testsuite/25_algorithms/iter_swap/constexpr.cc
! 25546a32a3f4bbebf7087c8de9bd2fd8  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc
! ebee547455f1b5fb887e30911427ce7f  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc
! b745356593134f6587ce5c7a944ad05a  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/1.cc
! e9930b44233507ccddf2b50440579c55  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/71545.cc
! 84ddb5844741b29a85de3773ee6635de  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/93972.cc
! 0d2ea14687d058a9ba2ce28223a331ba  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/94013.cc
! 0c635234519858490b65711430a65714  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/95578.cc
! 61ef1cc5ec537b5cb112379718925c6b  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/check_type.cc
! 5c2654b41f0f0f32852df1ed90d521f3  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constexpr.cc
! 8b899e964b9c667bb98e84a23c3ecb4b  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
! 9a6736a7d02bef2c48a7d37c06194f4f  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc
! 0760bb9f4bb7bf3e13995f9adbdb9934  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
! 0340568de491299dc209b19d24097878  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
! b84123300f318db795b4127821d5ceef  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/uchar.cc
! 2bfaa67426aa29acae3e6aef04e0478e  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/1.cc
! b581325610de818749534c0d46aa3ce1  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/constexpr.cc
! d8ab00fb36581eefbd51c9ce173c1dc2  libstdc++-v3/testsuite/25_algorithms/lower_bound/1.cc
! 3a4f9b5436955304a5ea1cf3d186618f  libstdc++-v3/testsuite/25_algorithms/lower_bound/2.cc
! 1a10f378cf1c09f273ec6c1e4bf407b4  libstdc++-v3/testsuite/25_algorithms/lower_bound/33613.cc
! eb6ff42ac983ee16f29d6407dbcb143b  libstdc++-v3/testsuite/25_algorithms/lower_bound/check_type.cc
! 0c6d0ccc797d66b10f246448bbebdd32  libstdc++-v3/testsuite/25_algorithms/lower_bound/constexpr.cc
! f13778027f1998932ba520a5858aa798  libstdc++-v3/testsuite/25_algorithms/lower_bound/constrained.cc
! 3dbd1359b799b7d60307417f9410ad16  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc
! a69ff69dbdde1cebad272f7ac09f6ce5  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc
! a6f47360731e36e2ae7a6f22dd45636d  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc
! 5c9d1d92e03bd802c6928e504eaca8e6  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
! 6e5d535c6b2a56d5189d2d79f4e2cfdb  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc
! b642139a1d4361caf43610e0bb42a5e5  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc
! 8f3034c7012d4e347a69ab4fd6d6f58d  libstdc++-v3/testsuite/25_algorithms/lower_bound/no_operator_ne.cc
! 5931c51ef6430c18f6674524f2e1c320  libstdc++-v3/testsuite/25_algorithms/lower_bound/partitioned.cc
! f02097b752043da330fc8e2f79e91228  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc
! 03ee3c1577ef60e21562aacb5ddffdee  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc
! 3349b685462b370e3d9b60460b1ba1e3  libstdc++-v3/testsuite/25_algorithms/make_heap/80064.cc
! 0b4853b09cdf744a806a12a7d3f1246e  libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
! e41805aa0e4e7f91d663d350e60bfd15  libstdc++-v3/testsuite/25_algorithms/make_heap/constexpr.cc
! 197566030df8a7af5526d2b8ee6a77da  libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
! cd7eeda49394d9f84ec038b8797af4b2  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc
! 7e0105a5288e25e8ead13bf89f3687eb  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc
! aa9eb8f15d34d4ba17bbf51196822538  libstdc++-v3/testsuite/25_algorithms/max/1.cc
! 4c02cfaa500887fe079aaa49d6d0f777  libstdc++-v3/testsuite/25_algorithms/max/2.cc
! 51b458ca86e215ce57c385b30bf8faf3  libstdc++-v3/testsuite/25_algorithms/max/3.cc
! aa2965f7d90d1c3f751b6c0e200c1dab  libstdc++-v3/testsuite/25_algorithms/max/37547.cc
! 83bad99c36e5835cdc9453d53c9525af  libstdc++-v3/testsuite/25_algorithms/max/4.cc
! 5cfdab3839ce01954f7db81ce23534fe  libstdc++-v3/testsuite/25_algorithms/max/constexpr.cc
! 408e444d664f3bae373c33f22e12cfd8  libstdc++-v3/testsuite/25_algorithms/max/constrained.cc
! 19f1564ed0d678c69d71a01489dec7e5  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc
! f3b552112f56dec793a31c7fd2fda9b6  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc
! 8ad7a265e983c0b1dc5fca3129eafedd  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc
! 0ba7d6cb678adc20915f45fdfeeb0c10  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc
! 157d348c9601dd4be5583d6ca744a982  libstdc++-v3/testsuite/25_algorithms/max_element/1.cc
! bd2dca22270e8de2b072c1ac5b72e837  libstdc++-v3/testsuite/25_algorithms/max_element/check_type.cc
! 681c1b6f1de64a2b5bd2ce3248896af5  libstdc++-v3/testsuite/25_algorithms/max_element/constexpr.cc
! 08686c16787e7f0c9bdb8b49be8c416a  libstdc++-v3/testsuite/25_algorithms/max_element/constrained.cc
! f4e938fc14396cbff648e5ad2f5962cc  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc
! b2aef2cdd46d24e2421d04d1c1553cd0  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc
! d345914000499741d6f5e910815bb834  libstdc++-v3/testsuite/25_algorithms/merge/1.cc
! 93bfdaedbff61c4011cd6cb80e0c5aa4  libstdc++-v3/testsuite/25_algorithms/merge/check_type.cc
! 507af7f21af4b7c77f4058fb64924e63  libstdc++-v3/testsuite/25_algorithms/merge/constexpr.cc
! e435139b772664bfa0d4f657ef7deadf  libstdc++-v3/testsuite/25_algorithms/merge/constrained.cc
! 7344aff1aa537f8e7bb5a61e16455872  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc
! 7f04c84a4c5983a47ad573c2aeab19a7  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc
! dd21faf67e01e9cad091a21e15c4b33f  libstdc++-v3/testsuite/25_algorithms/min/1.cc
! bf7044d2c51006bda6e065d6c60dd0db  libstdc++-v3/testsuite/25_algorithms/min/2.cc
! ceb70a133dcd97382e52b70410c6270a  libstdc++-v3/testsuite/25_algorithms/min/3.cc
! 959abce4b193b2daf9590dc4dcd43ffb  libstdc++-v3/testsuite/25_algorithms/min/37547.cc
! 7541c1c1ec6be648ee66e002e594b044  libstdc++-v3/testsuite/25_algorithms/min/4.cc
! fa6cc4336b47811895396eb9e2e968d6  libstdc++-v3/testsuite/25_algorithms/min/concept_checks.cc
! 66e87461e286f7b1aafc94328428b360  libstdc++-v3/testsuite/25_algorithms/min/constexpr.cc
! adf4ec835bb0ed39a3c242ff85b2241f  libstdc++-v3/testsuite/25_algorithms/min/constrained.cc
! 38d3d8f4ec18c2ead80eca298f3ed38f  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc
! 70517d81916bbf06a7df638b1671bb55  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc
! fb7837c7f0e1804f01867b5c18331469  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc
! c3f299886e96b1e490a05ef1fcf32791  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc
! c9780182ab56c28775e35722331fc274  libstdc++-v3/testsuite/25_algorithms/min_element/1.cc
! e14b34e2f72a00e2bd323a78c54847d0  libstdc++-v3/testsuite/25_algorithms/min_element/check_type.cc
! b92cd829cad5955200c9f28c8d2734f9  libstdc++-v3/testsuite/25_algorithms/min_element/constexpr.cc
! 067ecaf41f4892000a3f52f74dc5f598  libstdc++-v3/testsuite/25_algorithms/min_element/constrained.cc
! 2513c085caf20a5de9e75f1db9aebbc7  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc
! a590aaef5546e84589096bd432ae9f53  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc
! 5b3d430f44f27e6dbaee438a53d27877  libstdc++-v3/testsuite/25_algorithms/minmax/1.cc
! b0a0c72605df29dad3ae4ee1b92a3d60  libstdc++-v3/testsuite/25_algorithms/minmax/2.cc
! 86f87e2f65724df948c1de5e1c25e266  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
! 12cc5e9884aa40f11a9eeec37090b803  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
! 478845b243123d9294d81eb993c99009  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! 9e1252831e625ed13064ebe544348c91  libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
! 7831aeaf9cc63397a6e465e5f593726a  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
! f3dd1323e1f0230f93b685ca44908f93  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
! 595fc8fbd01d1134761e5f89228ad06f  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
! a82917748484c9cabae27b767b3e4f81  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc
! 59f9fc0c2156438c36dc8148e1a9eb78  libstdc++-v3/testsuite/25_algorithms/minmax_element/1.cc
! f4c93701666305471b6f68ec7e5bbb29  libstdc++-v3/testsuite/25_algorithms/minmax_element/check_type.cc
! 9b0e64cd8da48150b142071cca42071c  libstdc++-v3/testsuite/25_algorithms/minmax_element/constexpr.cc
! 53d8c2ae7e48e3bdcfa55ecdbc800aec  libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc
! 9911b769cc1df11dd491677bbeee6b63  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc
! 666c4160b2fed4438205947a346f9b6d  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc
! 99db25aa1f1b5770209aa9fed4550793  libstdc++-v3/testsuite/25_algorithms/mismatch/1.cc
! 19daae3d0cf4ac572fadd2390ccaff29  libstdc++-v3/testsuite/25_algorithms/mismatch/2.cc
! e3353433ba9e10f9f12ef9f1a56a2233  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type.cc
! 394c527ceee181a048e6c6e1f0237f5f  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type2.cc
! 905fa5a20f2f6d4cd5968d4412484769  libstdc++-v3/testsuite/25_algorithms/mismatch/constexpr.cc
! 559baff14ba095ad0c40317946ecdef6  libstdc++-v3/testsuite/25_algorithms/mismatch/constrained.cc
! 3947a31b1187dd211ddfcfb8ec9afa9f  libstdc++-v3/testsuite/25_algorithms/move/1.cc
! 216d61467a92f257d9bb6c8b6e483530  libstdc++-v3/testsuite/25_algorithms/move/69478.cc
! 77435b71473117ed98d79dc854e89466  libstdc++-v3/testsuite/25_algorithms/move/93872.cc
! c29e4b7047b8296e74cbaf898bc2b7f5  libstdc++-v3/testsuite/25_algorithms/move/94013.cc
! 7f385f8560c11b150505d8e31858479a  libstdc++-v3/testsuite/25_algorithms/move/95578.cc
  8a39c328d588445253bbfbd913a4260b  libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc
! aa769949bf07054b6b1bdfcb0abbc9a9  libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
  c41fedc68e3cee79d652221a1c6b2c9a  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
! 3d0700a426822e6c9a78ff7814c980e8  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/2.cc
! a96504c7196ca10e6855d5546f616be9  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc
! cb5598cc3525c0016ef88275fcfebd94  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc
! f087fba1f5a0577853286db5171184a0  libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
! bd16770e040d8a0701e9fc2eca39c128  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
! d3b5eda6d7350468190f595c7c53c70c  libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc
! 278933c4e7ec97cbf8e0c09b50ced266  libstdc++-v3/testsuite/25_algorithms/move_backward/94013.cc
! a4dcf1bcc6c44a5fd32aeb76b957e346  libstdc++-v3/testsuite/25_algorithms/move_backward/95578.cc
! e1eea9015565d7b6a3ae656d2c0ed8f8  libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
  d798b4d62b339492aca582244b60767f  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
! a3bf9be8880c0e8b032dd36b4ca100f1  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/2.cc
! 7e697011afa677481c1072e4ae105833  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc
! 583683280b5605324d7ca201f7c76dda  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc
! 0e3325b665302938c8dffcd807af5cb9  libstdc++-v3/testsuite/25_algorithms/next_permutation/1.cc
! 5dd78cb6d171e2263552b569d2e28d92  libstdc++-v3/testsuite/25_algorithms/next_permutation/check_type.cc
! d6856ae5e26e6a2561ddc53ea524267b  libstdc++-v3/testsuite/25_algorithms/next_permutation/constexpr.cc
! 113a710e9b90205ea1544e2f4b58c117  libstdc++-v3/testsuite/25_algorithms/next_permutation/constrained.cc
! 1c2742d61b520d3817182d96df0d12f9  libstdc++-v3/testsuite/25_algorithms/next_permutation/moveable.cc
! 5d0974fb6d8c788cbc9181b4fa5d9bbd  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc
! 4a3859e204d628d9ecc823761ee841f5  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc
! 5bc0adcb9b3b59f1fc07dd78a27ebcd4  libstdc++-v3/testsuite/25_algorithms/none_of/1.cc
! c4561f09efda9b5af35c305e7aa5e234  libstdc++-v3/testsuite/25_algorithms/none_of/check_type.cc
! b9b6fe1f5fb32fe9ebaf3066e6e4392d  libstdc++-v3/testsuite/25_algorithms/none_of/constexpr.cc
! a0359680cb49849b0609f73748f5d398  libstdc++-v3/testsuite/25_algorithms/none_of/constrained.cc
! eafdb81d5fda219dde0ebc06e24b7d24  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
! 200b85b077bf88e979c7758079a60a5f  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
! 81833f7a098c1d8c09b847a765b07ec0  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
! 9b727d4c468f54022e9034d12f31bde8  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
! c9ad29d9270a0d08347844ec490ff808  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! e162d71c17aba05d479ce09028dc0c9b  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
! 4a106e2315c22ae0126bd10cbcad71fc  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
! f8dd399a2440acbd534fe7ed8206ca19  libstdc++-v3/testsuite/25_algorithms/nth_element/constexpr.cc
! 9b8024d4fbbf38ed44a9e87f44239a0b  libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
! 5d2a687a2c5c211965417d95923bb4c0  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! cd829855a919bdf0775d13eed176fc23  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
! 884087ff690fc8973071012a53568c0d  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
! 7f7424de33147f6d555a01a8b850aeb2  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
! 64bf76855ad1bce24e1f5764525c4720  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
! 2ae3b3e56d57f6e2279d10f29f08f5d4  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! f0a0dd0c5d15928efcfade1fe303b34f  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
! 251c3cd69c4bac720898a40503b6ce8f  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
! 347a3e1bddfff3fed96dc9b18b3c5837  libstdc++-v3/testsuite/25_algorithms/partial_sort/constexpr.cc
! ae70adbb1ffcfd08f04fef9654167cf3  libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
! 8d938f3147c2ccd1d941fa101e7e4e65  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! d3db238117dd189b7441318391a99071  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
! 13b861ad9da956b81da9f2e75fbcd49b  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
! 6e2a6f31217108159189603a5d5d07d4  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
! e7aa711d6b6ebff125c81c7f953be14b  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
! 74171ea79076427c0a474cf9a0257475  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
! 01404c5e73722b75d26cdfad23a3d96d  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
! 97e1b0ad7cf25f4a9e7d880f064352a1  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constexpr.cc
! 15bc1b77f1fdb984de89d3d7e47ccf6b  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
! c12fb82066411b4f267402ba8d038d3a  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! 27d2446aa03e114fd1805f6439daff74  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
! bb53783e46d9a09e4ec504e267ac470b  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
! 195902131a858d86803de00820827a48  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
! 4ab833053bff7469a4e4f4fcf12f65e9  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
! 8ff54ecf87a81ca03d727b742daa0d95  libstdc++-v3/testsuite/25_algorithms/partition/constexpr.cc
! 937e2cc0cde62d83382e83a41710efc0  libstdc++-v3/testsuite/25_algorithms/partition/constrained.cc
! f9fc7b4d1ea9185138ed265d2ff417f3  libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
! d6217ab98510fd121ecb19dc19a0e2f3  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
! cffab7b9b8bede4f2ab34e293be0c5c8  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
! c37a9d21e10aeebdcfef41ad8369c809  libstdc++-v3/testsuite/25_algorithms/partition_copy/1.cc
! 86fe25dfc39b7366869ae25a27f5a637  libstdc++-v3/testsuite/25_algorithms/partition_copy/check_type.cc
! a0747ee6f3f26ff89701d6c1e38b6617  libstdc++-v3/testsuite/25_algorithms/partition_copy/constexpr.cc
! feee51d44921cc06683a6bf6ee08ed22  libstdc++-v3/testsuite/25_algorithms/partition_copy/constrained.cc
! 36a2c00801c7359d529fabb4ac0326bb  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
! bce0e93ed9d0917874d6725331466e58  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
! f12c360eea3edd1db0c121381476e142  libstdc++-v3/testsuite/25_algorithms/partition_point/1.cc
! a3f001fa2b5af89afcc5d6cba45995f5  libstdc++-v3/testsuite/25_algorithms/partition_point/check_type.cc
! c8dca2016a07b7d4d2763e10a89b9951  libstdc++-v3/testsuite/25_algorithms/partition_point/constexpr.cc
! 6a8b87aac2b308d04880ebff34f6a334  libstdc++-v3/testsuite/25_algorithms/partition_point/constrained.cc
! e3793ba9e5a0df640385543a9a1dee07  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
! 381d2a2c85ec81dae5fc98dd6e8277df  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
! 0e46241451bd05a65d976f04a9b5c567  libstdc++-v3/testsuite/25_algorithms/pop_heap/57010.cc
! a1b8838cd14d29aaef4c7aa2733f4890  libstdc++-v3/testsuite/25_algorithms/pop_heap/complexity.cc
! 3afaf696c97573d55c19d215690ee7db  libstdc++-v3/testsuite/25_algorithms/pop_heap/constexpr.cc
! 939d96a7871e86b140c4684130635434  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty2_neg.cc
! 90fa1b3f4a6fee8c406fad36314eeaae  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty_neg.cc
! 558ccb789496ccec391544e4c57749d6  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc
! 7b1fc88ef975979431e7f98185c6455d  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc
! 8b1aceb429a76205a69522d234f5cbc1  libstdc++-v3/testsuite/25_algorithms/prev_permutation/1.cc
! 23336d6bbd04b84efb2b6da1902f7af2  libstdc++-v3/testsuite/25_algorithms/prev_permutation/check_type.cc
! 85cd45899c90a29ae9ea295200699f5f  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constexpr.cc
! c2633610ab87c942a5ac138dbd5a639b  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constrained.cc
! 7ee1d4255f1edeaac2a20e30aa890d2d  libstdc++-v3/testsuite/25_algorithms/prev_permutation/moveable.cc
! 62a3b88a41df8c006cd3f2874c181b14  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc
! dac35da9b9fa5ed8aba3cb5434c9eeb0  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc
  98051b5d40a1c205d048db33e038c794  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc
  f73cdaa5ddf9a31b66aeb2163e20a984  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/merge.cc
  905d47f4c72eacaf53a95bd14da1a0be  libstdc++-v3/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc
--- 114337,119343 ----
  74bc36f5cffd7626c78090061e4416a9  libstdc++-v3/src/c++17/ryu/generic_128.c
  fbb127f006c65ae37d591c627cc6235c  libstdc++-v3/src/c++17/ryu/generic_128.h
  85b9d2e407dc7113a97234b2c23e96dc  libstdc++-v3/src/c++17/ryu/ryu_generic_128.h
! 293ec552c19b22f2144faa322d6e68ce  libstdc++-v3/src/c++17/string-inst.cc
! 832a87ed88a18d4d453433ac0eb31fa5  libstdc++-v3/src/c++17/uint128_t.h
! 3406c687b407e21fe6138fafb471f3ea  libstdc++-v3/src/c++20/Makefile.am
! e1839283173315435666ef3eda4d7c03  libstdc++-v3/src/c++20/Makefile.in
! b914ff6670ac6160405a2435443a4a06  libstdc++-v3/src/c++20/sstream-inst.cc
! ed987f656282557754b33737218a1539  libstdc++-v3/src/c++20/tzdata.zi
! db63a961dcbc258bfb71f823cd7b6b51  libstdc++-v3/src/c++20/tzdb.cc
! 45134a761e2989110bf92106ea6dca4e  libstdc++-v3/src/c++98/Makefile.am
! 9b27a44fa8ef5adb147c45f43b150e95  libstdc++-v3/src/c++98/Makefile.in
! 0da013c21616235a62a7ce091c9e8ab8  libstdc++-v3/src/c++98/allocator-inst.cc
! 9308c0f06fe107d489fe1c65f4cb2f90  libstdc++-v3/src/c++98/bitmap_allocator.cc
! e4d7a013dabfb6c8af6fe297c83b992c  libstdc++-v3/src/c++98/codecvt.cc
! 9e051512bbe663bce6cc4f22711f1b80  libstdc++-v3/src/c++98/compatibility-debug_list-2.cc
! fb4cc6db70ecd33506635b2332edbbbe  libstdc++-v3/src/c++98/compatibility-debug_list.cc
! 1471aae7be26b12d07102fa5fd4d5611  libstdc++-v3/src/c++98/compatibility-ldbl.cc
! 78bb0f52ba46d296308abed7191bba1b  libstdc++-v3/src/c++98/compatibility.cc
! 5c32c2172581a83630ba142670d159a8  libstdc++-v3/src/c++98/complex_io.cc
! 8b52163f7a3d16e508861d975844c712  libstdc++-v3/src/c++98/concept-inst.cc
! a7d588d67d0dd0afa93c1b407df8a9b5  libstdc++-v3/src/c++98/cow-istream-string.cc
! 2cb4b23fd7de62fcf516bc00765cf9be  libstdc++-v3/src/c++98/ext-inst.cc
! e128fff76f8fcb6845e94954c45e975a  libstdc++-v3/src/c++98/globals_io.cc
! f77cc3c0403421af27349e9e6fb6c97e  libstdc++-v3/src/c++98/hash-long-double-tr1-aux.cc
! a37fb02c9bdb7a51452f82ae098f9d7b  libstdc++-v3/src/c++98/hash_tr1.cc
! 520585f8dd866f454e8da5d1de9dc0ca  libstdc++-v3/src/c++98/hashtable_tr1.cc
! 93bb7b2a23d83b5086bda8170c2cd96a  libstdc++-v3/src/c++98/ios_base_init.h
! c78ee649f99eb3503ab9d0e15f608506  libstdc++-v3/src/c++98/ios_failure.cc
! 04d75099469ee5c210be4476bf65ee78  libstdc++-v3/src/c++98/ios_init.cc
! ba1f93f929b27a459e6e8e0769d66cd8  libstdc++-v3/src/c++98/ios_locale.cc
! ad2e27d47bf85592bedfae6839a87f59  libstdc++-v3/src/c++98/istream-string.cc
! b7947c00cafe4b3c4e91f79029684310  libstdc++-v3/src/c++98/istream.cc
! 7adae83e0dd9ed6f0485e15dbb421a53  libstdc++-v3/src/c++98/list-aux-2.cc
! abe234bc845d7a759221c1caad48a1ee  libstdc++-v3/src/c++98/list-aux.cc
! 4bc338a372195ca235399072b8b7ad26  libstdc++-v3/src/c++98/list.cc
! 0db0d35ab11b29b5b2828cf0160e1ac8  libstdc++-v3/src/c++98/list_associated-2.cc
! fc33ed0acf80ceef9187dbb7eda62679  libstdc++-v3/src/c++98/list_associated.cc
! 6dfbe005b2933c84ce33101c06330f40  libstdc++-v3/src/c++98/locale.cc
! 4bae27438a526fd00a6a0ce6a862c2dd  libstdc++-v3/src/c++98/locale_facets.cc
! 92d21c2f9a1dd3532d9a20cf930839c8  libstdc++-v3/src/c++98/locale_init.cc
! f6f314bd5c74acee3b35f5da15a70a09  libstdc++-v3/src/c++98/localename.cc
! b2a00f73540beb80de2b11ff20e417f3  libstdc++-v3/src/c++98/math_stubs_float.cc
! 0a3a901271d8555d410d16844229bc18  libstdc++-v3/src/c++98/math_stubs_long_double.cc
! b000970167e6b72a0d9a65e57c445307  libstdc++-v3/src/c++98/misc-inst.cc
! 2718999cac8c65ea4ce98bcb8fc54c00  libstdc++-v3/src/c++98/mt_allocator.cc
! 2a4339cffbe037b18f335ae15ad8c0b9  libstdc++-v3/src/c++98/parallel_settings.cc
! be3e4199ecc240f898f559fde53349c1  libstdc++-v3/src/c++98/pool_allocator.cc
! 4edf6b5eb0114b8b8c9ed694c77e0753  libstdc++-v3/src/c++98/stdexcept.cc
! 6dfdb3db7d3ac9703fba95094b9a23fd  libstdc++-v3/src/c++98/streambuf.cc
! 9a6dd673f36236a2032bb66d31069b48  libstdc++-v3/src/c++98/strstream.cc
! 5ea65de08a665fc13dfe59376b5fbc92  libstdc++-v3/src/c++98/tree.cc
! 588ac7f69592b54bbe68ca1cafbc7a6e  libstdc++-v3/src/c++98/valarray.cc
! b4e60acfca987e556578f4a226c833c5  libstdc++-v3/src/experimental/Makefile.am
! f7e1df11d40cd866571fa66f619a3d3e  libstdc++-v3/src/experimental/Makefile.in
! 6846334ee8d270e0b42ec1f18f3e6cf6  libstdc++-v3/src/experimental/contract.cc
! 0c264537ce86e51b0c57eeef8ffadf49  libstdc++-v3/src/filesystem/Makefile.am
! bfe56c32c2629a3381ec6f10756f5c31  libstdc++-v3/src/filesystem/Makefile.in
! 884e909aa0801235b1d6b67156bea696  libstdc++-v3/src/filesystem/cow-dir.cc
! 9b53c364d753fa693cce1d68727a1982  libstdc++-v3/src/filesystem/cow-ops.cc
! 3985b8fca46c60e27ba47d4d73565f04  libstdc++-v3/src/filesystem/cow-path.cc
! a9e784beb869d9bc7d37934ce0a952f9  libstdc++-v3/src/filesystem/dir-common.h
! d45c23b8e35edb3a14e4d3400daeb1ed  libstdc++-v3/src/filesystem/dir.cc
! 5d50d09ab44483829154e7ba8ad027e6  libstdc++-v3/src/filesystem/ops-common.h
! f57d3b802f2c945a9fb27fec782676af  libstdc++-v3/src/filesystem/ops.cc
! 5c775f8681613058346febc5ec6dec92  libstdc++-v3/src/filesystem/path.cc
! eca2ea83a945773b5de8d23f7c99aaa5  libstdc++-v3/src/libbacktrace/Makefile.am
! a09a9f90214407e61a6687c92551317b  libstdc++-v3/src/libbacktrace/Makefile.in
! ad7d8ce6072a5a6ebe5a27824b57cb45  libstdc++-v3/src/libbacktrace/backtrace-rename.h
! e81b2ae90488bdb0ce9dbe763304ff3c  libstdc++-v3/src/libbacktrace/backtrace-supported.h.in
  d80381bdd74336b121a4f087efc21dbb  libstdc++-v3/src/libbacktrace/config.h.in
! 768cca8a1b8867af6a8d173d5097cb73  libstdc++-v3/src/shared/hashtable-aux.cc
! a2e0792470b988eee9f99138a16fab5a  libstdc++-v3/testsuite/17_intro/badnames.cc
! 1d3a9cc09f7ca2934fc6ed79399d1b45  libstdc++-v3/testsuite/17_intro/freestanding.cc
  d5df5ddc3b7c5dba2e687798eaa28551  libstdc++-v3/testsuite/17_intro/headers/c++1998/103650.cc
! 661e182031451147b0a6c3e1e08ecd94  libstdc++-v3/testsuite/17_intro/headers/c++1998/49745.cc
! 85d5908bd04a8ee824039dba1d692814  libstdc++-v3/testsuite/17_intro/headers/c++1998/all.cc
! 3bbf67d1230b6846a03dd68cda1ffd2c  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_attributes.cc
! cb4b0e2b8fb55afe51ec1f2d94ba41f9  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_c++200x_compatibility.cc
! 8a8a0688393d5cd9c11c118d9100d5c8  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_exceptions.cc
! 71c64f90af2006e2b409babd88765bbd  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_no_rtti.cc
! b1558b126b6e4763dc4c11f14f0204f3  libstdc++-v3/testsuite/17_intro/headers/c++1998/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++1998/charset.cc
! 2205f887ec7ae20ba8ed1304554ec569  libstdc++-v3/testsuite/17_intro/headers/c++1998/complex.cc
! 358f574c9c559788f7a052338697948a  libstdc++-v3/testsuite/17_intro/headers/c++1998/operator_names.cc
! 528c50bf9c26cc941ce20fce7288ed00  libstdc++-v3/testsuite/17_intro/headers/c++1998/profile_mode.cc
! edb15317f3fc4c5b11c4ce1b5db72793  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++.cc
! 6aa440e2d655eed515358509717c8f3b  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_assert_neg.cc
! b86f9727945a4ea41e9937b60ec3bba2  libstdc++-v3/testsuite/17_intro/headers/c++1998/stdc++_multiple_inclusion.cc
! 336f6819acc677502f9137d2b60ba5cd  libstdc++-v3/testsuite/17_intro/headers/c++2011/42319.cc
! 8d362d5dd041e0818c8ad7d504808377  libstdc++-v3/testsuite/17_intro/headers/c++2011/67309.cc
! 416be19f3443850ec41a5dfb3a6633b1  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_attributes.cc
! d4c61f0c82f9f71cc484aaa782d187ca  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_exceptions.cc
! 5af79384af6abc7c3e51f24e1cf1d9ee  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_no_rtti.cc
! eae12cc50ecfebc0bef935c4683404ec  libstdc++-v3/testsuite/17_intro/headers/c++2011/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2011/charset.cc
! 8551445e195b63c5bc4dbe7ed52ecce5  libstdc++-v3/testsuite/17_intro/headers/c++2011/linkage.cc
! 814605b3f2bffbc37fd9ae2371003409  libstdc++-v3/testsuite/17_intro/headers/c++2011/operator_names.cc
! babbdd6eab38d6d7f22e8566f7196eac  libstdc++-v3/testsuite/17_intro/headers/c++2011/parallel_mode.cc
! f89b9e41b784f57d5ab7a58c1f79a534  libstdc++-v3/testsuite/17_intro/headers/c++2011/profile_mode.cc
! 584eea9c194c849e7c74d84d59dae1d5  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++.cc
! 01e397695beb1eefb90366a12c4d8395  libstdc++-v3/testsuite/17_intro/headers/c++2011/stdc++_multiple_inclusion.cc
! 41729ebf89ee97cba8733e001b1f9258  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_attributes.cc
! 12a8b22467404234ee7a22821c02cce0  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_exceptions.cc
! e1f9a5de90f262c6631311a33fcbd700  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_no_rtti.cc
! 3986ee52163ac663428b4e604e746db6  libstdc++-v3/testsuite/17_intro/headers/c++2014/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2014/charset.cc
! f721def1cdb79d9784526c633f6a5ae8  libstdc++-v3/testsuite/17_intro/headers/c++2014/operator_names.cc
! 37c5c65a620032d67c0fb02dfb4fe92e  libstdc++-v3/testsuite/17_intro/headers/c++2014/parallel_mode.cc
! 01086e34338c5773c1e8597d2b9820c6  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++.cc
! 1976712d16a3c268dd42c758947676ce  libstdc++-v3/testsuite/17_intro/headers/c++2014/stdc++_multiple_inclusion.cc
! 6bfc94afec2ef5ee3d6ec172ed54d194  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_attributes.cc
! 7ba7a3347cf631bf654a7a5ff31da037  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_exceptions.cc
! fc5c25c9a2268b5d8e42d61352d2c44a  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_no_rtti.cc
! 22185a0065bb4bf0b27a239cff35dcb0  libstdc++-v3/testsuite/17_intro/headers/c++2017/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2017/charset.cc
! 4cac7a2ecd79627a569d2a5a7748d5ba  libstdc++-v3/testsuite/17_intro/headers/c++2017/operator_names.cc
! 00763b9699b39135fda457e687295b4b  libstdc++-v3/testsuite/17_intro/headers/c++2017/parallel_mode.cc
! 774759ed410f8423d2dd6e3d16243b43  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++.cc
! ad6842716dd04d2bf316293218db4a12  libstdc++-v3/testsuite/17_intro/headers/c++2017/stdc++_multiple_inclusion.cc
! 5187b9217c61a430a8c676154853fc1c  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_attributes.cc
! 7e1cb18ec86168bdc905dbc92734a677  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_exceptions.cc
! 27d76abc452348432ec9c8195f0b946f  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_no_rtti.cc
! b95ee861163a4569d4fadcf6534484bb  libstdc++-v3/testsuite/17_intro/headers/c++2020/all_pedantic_errors.cc
  b8a53b2b8da32d102d69cbedea3d2216  libstdc++-v3/testsuite/17_intro/headers/c++2020/charset.cc
! 87c7733236320e31ca6bf506b77b98d6  libstdc++-v3/testsuite/17_intro/headers/c++2020/operator_names.cc
! 63f0e684ae33ff5970309759eeaf2ba5  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++.cc
! 9294278b7daa21bfd4ce42da363eaad0  libstdc++-v3/testsuite/17_intro/headers/c++2020/stdc++_multiple_inclusion.cc
! 27956f7064f968d92d07606636d60b75  libstdc++-v3/testsuite/17_intro/names.cc
! 047ad714f0a1ac010ab86a084dfbeee7  libstdc++-v3/testsuite/17_intro/names_pstl.cc
! 007efc2146fdda22fd1b14eaf4ea9b10  libstdc++-v3/testsuite/17_intro/shared_with_static_deps.cc
! 1693d92844259e69b8c6b8f258a91f17  libstdc++-v3/testsuite/17_intro/static.cc
! c90254a85d39b05da74079011eeb4c60  libstdc++-v3/testsuite/17_intro/tag_type_explicit_ctor.cc
! 79d569e9137430f066cca2b9a6e9e69b  libstdc++-v3/testsuite/17_intro/using_namespace_std.cc
! 04c3f4710debea98f60d8c28ce36ae20  libstdc++-v3/testsuite/17_intro/using_namespace_std_exp_neg.cc
! d49c908f34e357e045d0a72ba470ad59  libstdc++-v3/testsuite/17_intro/using_namespace_std_tr1_neg.cc
! 8257c823b655a89013a0a1e788a69506  libstdc++-v3/testsuite/17_intro/versionconflict.cc
! 165cb0e7c28903f02a4b4e2d0a08e544  libstdc++-v3/testsuite/18_support/105387.cc
! ed159a9e459da3e25bbcb9da82b17b38  libstdc++-v3/testsuite/18_support/105387_memptr.cc
! 900caf68dd1734d5e3d3d37e5cc57951  libstdc++-v3/testsuite/18_support/50594.cc
! 6e6f18a0e65358dea063c626d5b2b0ea  libstdc++-v3/testsuite/18_support/51333.cc
! 8f7ee895f30bc13efba5c3daaa32df63  libstdc++-v3/testsuite/18_support/96817.cc
! 4a065456a76854638ce5897e94b78a3a  libstdc++-v3/testsuite/18_support/aligned_alloc/aligned_alloc.cc
! 2289b360fcf1ce87af467c68b5080d57  libstdc++-v3/testsuite/18_support/bad_alloc/cons_virtual_derivation.cc
! b47307f040609a42119a718c519f65d7  libstdc++-v3/testsuite/18_support/bad_alloc/what.cc
! 224b1214c02d0347427be5dacee92b28  libstdc++-v3/testsuite/18_support/bad_cast/cons_virtual_derivation.cc
! 929cf9edd9766e67aa06116883afa597  libstdc++-v3/testsuite/18_support/bad_cast/what.cc
! 73c77b190a7559f936ac8af0032f7b69  libstdc++-v3/testsuite/18_support/bad_exception/23591_thread-1.c
! 3f06fbaebb1edc3f4a5232c6f2a1450f  libstdc++-v3/testsuite/18_support/bad_exception/59392.cc
! a4588c4c1b6dabda341bb47f8f731077  libstdc++-v3/testsuite/18_support/bad_exception/cons_virtual_derivation.cc
! 36018bfcede3e4496d7d32c48381b2be  libstdc++-v3/testsuite/18_support/bad_exception/what.cc
! e24f91fd5946397a3492843849d56206  libstdc++-v3/testsuite/18_support/bad_typeid/cons_virtual_derivation.cc
! 00a8a1326137a02beb52d4bf0fcde3b1  libstdc++-v3/testsuite/18_support/bad_typeid/what.cc
! f1b7157409725a1fcae31b3ad71711b8  libstdc++-v3/testsuite/18_support/byte/81076.cc
! 9420c7274ed069895de2c8862e90b3f5  libstdc++-v3/testsuite/18_support/byte/global_neg.cc
! 7c3ea09440fb98afeffa0e63728d2667  libstdc++-v3/testsuite/18_support/byte/ops.cc
! def7435aaa638954caa307f0b8a078df  libstdc++-v3/testsuite/18_support/byte/requirements.cc
! 33dcb22fce9617bd88dd6f5b4c1e56eb  libstdc++-v3/testsuite/18_support/comparisons/algorithms/fallback.cc
! daef18883c5da5e75090ef22b988f42f  libstdc++-v3/testsuite/18_support/comparisons/algorithms/partial_order.cc
! 0d5480876d5ef55856b97e120e2f3b0b  libstdc++-v3/testsuite/18_support/comparisons/algorithms/strong_order.cc
  f4f086f988cf867097fb97b97bd5ca29  libstdc++-v3/testsuite/18_support/comparisons/algorithms/strong_order_floats.cc
! 5ae42d9aa24a6e35881ccd98bc09453c  libstdc++-v3/testsuite/18_support/comparisons/algorithms/weak_order.cc
! 9dcc86a3c83150701c22be13eb967709  libstdc++-v3/testsuite/18_support/comparisons/categories/94565.cc
! fd7493488695ad011e1987266075b29b  libstdc++-v3/testsuite/18_support/comparisons/categories/partialord.cc
! 8ea7c7b868be03c195bdf58ef2fe7b9c  libstdc++-v3/testsuite/18_support/comparisons/categories/strongord.cc
! 96f4ebf4b93d44e3b25706144b68aec0  libstdc++-v3/testsuite/18_support/comparisons/categories/weakord.cc
! 8134d7ad30fb40facf382b25ac8bcac7  libstdc++-v3/testsuite/18_support/comparisons/categories/zero_neg.cc
! 89b3aac706387c53424b28807653d906  libstdc++-v3/testsuite/18_support/comparisons/common/1.cc
! 089c5bdfd195fe88fa8a1b366a3725a7  libstdc++-v3/testsuite/18_support/comparisons/object/93479.cc
! 247d4da1c79d9d2bf80390d0a881a073  libstdc++-v3/testsuite/18_support/comparisons/object/lwg3530.cc
! 9e9295053d595946649af33823facd2d  libstdc++-v3/testsuite/18_support/coroutines/95917.cc
! 0495b55127228b6a88823deaef1aa6b5  libstdc++-v3/testsuite/18_support/coroutines/hash.cc
! 66a4ec71c64d6d35fd9739f2c64e9ba4  libstdc++-v3/testsuite/18_support/coroutines/lwg3460.cc
! f765cdacbb3bcf3dc13e4012f336f322  libstdc++-v3/testsuite/18_support/cxa_vec.cc
! 63fe70289ca684d5de413716eef5745d  libstdc++-v3/testsuite/18_support/destroying_delete.cc
! 0472896ed933e1a02b3cb304ec1b5c68  libstdc++-v3/testsuite/18_support/exception/38732.cc
! e0505d3ef1eb583e04fea0fbfcaca162  libstdc++-v3/testsuite/18_support/exception/what.cc
  8a3e4fc86620d59634749ffecd317237  libstdc++-v3/testsuite/18_support/exception_ptr/103630.cc
! e86b8e23a0011b142e7e7399e9a152b2  libstdc++-v3/testsuite/18_support/exception_ptr/40296.cc
! f166a9ba782fa5ed6f94cad10104f29c  libstdc++-v3/testsuite/18_support/exception_ptr/60612-terminate.cc
! 90b1267d879fe1ca7a49589f9e2a0892  libstdc++-v3/testsuite/18_support/exception_ptr/60612-unexpected.cc
! c01b87868f56efcdccee837476b1a075  libstdc++-v3/testsuite/18_support/exception_ptr/62258.cc
! 7de5001bd619594d44a85ea6078e63b3  libstdc++-v3/testsuite/18_support/exception_ptr/64241.cc
! 66118cfac6c9edcbef19a27073076619  libstdc++-v3/testsuite/18_support/exception_ptr/90295.cc
  8907da30a344e71f1227eec1fae72f2b  libstdc++-v3/testsuite/18_support/exception_ptr/96657.cc
! f07e1c7afa9d9329c63dae76e160c490  libstdc++-v3/testsuite/18_support/exception_ptr/current_exception.cc
! 961ef19b9d9bfeae8a0f4ca41eb58949  libstdc++-v3/testsuite/18_support/exception_ptr/lifespan.cc
! 4a0b03ca92e8886f4b72f82919f26d43  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr.cc
! 2859f73bd58a9a4e675e9197f219063e  libstdc++-v3/testsuite/18_support/exception_ptr/make_exception_ptr_2.cc
! 692ddf2e653e0a53539d06886a1b3c3c  libstdc++-v3/testsuite/18_support/exception_ptr/move.cc
! 5900bb081d64bdcecda4fa1e6fc91618  libstdc++-v3/testsuite/18_support/exception_ptr/requirements.cc
! 47af6185b7318e2425dd2e3ad6adcce2  libstdc++-v3/testsuite/18_support/exception_ptr/requirements_neg.cc
! 10f8cdd10f3d80d2b19a9305731a5884  libstdc++-v3/testsuite/18_support/exception_ptr/rethrow_exception.cc
! 301a829406df47c26da2b1e148d3d4eb  libstdc++-v3/testsuite/18_support/free_eh_pool.cc
! c8959c13fff60afb53b5cc697eb6948d  libstdc++-v3/testsuite/18_support/headers/cfloat/values.cc
! ae19b2a5f3a6b884cb6649064c828730  libstdc++-v3/testsuite/18_support/headers/cfloat/values_c++17.cc
! 1697548b2d1b756b7dee24d0cdf617c0  libstdc++-v3/testsuite/18_support/headers/climits/values.cc
! 548e71fd4c4ec275e436ffc3ddb92fa6  libstdc++-v3/testsuite/18_support/headers/csetjmp/functions_std.cc
! 0aa7f46a09bc0647c6332bf24d4150b0  libstdc++-v3/testsuite/18_support/headers/csetjmp/macros.cc
! 9efb4a1ffb26f6114d6e4e7e5c87f4b8  libstdc++-v3/testsuite/18_support/headers/csetjmp/types_std.cc
! 889a32a89e15b24860cc5353ed1f30a4  libstdc++-v3/testsuite/18_support/headers/csignal/functions_std.cc
! 4477e78baf9fd58e4d45b70566c31955  libstdc++-v3/testsuite/18_support/headers/csignal/macros.cc
! d16e3160ef69cf9973a86404bbad3a6d  libstdc++-v3/testsuite/18_support/headers/csignal/types_std.cc
! 3f884d9e877c57a4299dcaf8b5d0d99f  libstdc++-v3/testsuite/18_support/headers/cstdalign/std_c++0x_neg.cc
! 0d26bf6a1660eb7de3933142126c1796  libstdc++-v3/testsuite/18_support/headers/cstdarg/macros.cc
! d5b5f6eebf3a00e3a75175402e43ff02  libstdc++-v3/testsuite/18_support/headers/cstdarg/types_std.cc
! e28a9f5ffc8f7e772be43562128495a7  libstdc++-v3/testsuite/18_support/headers/cstdbool/macros.cc
! 160b60671219d49844cce60590c9f699  libstdc++-v3/testsuite/18_support/headers/cstdbool/std_c++0x_neg.cc
! 968e5d944a4d262925245dfad7e53ef6  libstdc++-v3/testsuite/18_support/headers/cstddef/macros.cc
! b5d1ee9a8e7072ca886332aa5ce4f7d7  libstdc++-v3/testsuite/18_support/headers/cstddef/types_std.cc
! 93aa4bf8ba6beb5614f9f09071332cb8  libstdc++-v3/testsuite/18_support/headers/cstdint/std_c++0x_neg.cc
! 82f2c5f50b99cbe2749c1e97b7aa0b8a  libstdc++-v3/testsuite/18_support/headers/cstdint/types_std_c++0x.cc
! 9bdf1bfbe7f06c412735e05e09421adc  libstdc++-v3/testsuite/18_support/headers/cstdlib/functions_std.cc
! 40e3d1800b583610813633bd4c3b3faf  libstdc++-v3/testsuite/18_support/headers/cstdlib/macros.cc
! 918b5cb4e9b3670502bdbf559b716aaa  libstdc++-v3/testsuite/18_support/headers/ctime/functions_std.cc
! a1ff71c1ec8451875865d4ed712db797  libstdc++-v3/testsuite/18_support/headers/ctime/macros.cc
! 3bf14c786f40296cf1ece00870bcde72  libstdc++-v3/testsuite/18_support/headers/ctime/types_std.cc
! f8189e0e6a0fc9ddd50e2ad861172753  libstdc++-v3/testsuite/18_support/headers/exception/synopsis.cc
! f4b3556a882c8bc3c1f07f899a7a976f  libstdc++-v3/testsuite/18_support/headers/exception/types_std.cc
! 7b93b10b0f8b28fa58e740a88cc18956  libstdc++-v3/testsuite/18_support/headers/limits/synopsis.cc
! 49f503a7c74cf396c39269325ab34706  libstdc++-v3/testsuite/18_support/headers/limits/synopsis_cxx23.cc
! 489be19a9a33995339daa18962badcfc  libstdc++-v3/testsuite/18_support/headers/new/synopsis.cc
! 363146d715c0963fa2bcd6f10c34836c  libstdc++-v3/testsuite/18_support/headers/new/synopsis_cxx98.cc
! 4457874f81b01df5d15661bf7a3e30c1  libstdc++-v3/testsuite/18_support/headers/new/types_std.cc
! e7044fdaefd2a24678729969bb339689  libstdc++-v3/testsuite/18_support/headers/stdfloat/types_std.cc
! 085562e59ae5047878031f0090a5b8af  libstdc++-v3/testsuite/18_support/headers/typeinfo/synopsis.cc
! 3f9cd4d825770f47877b9bd51983f666  libstdc++-v3/testsuite/18_support/headers/typeinfo/types_std.cc
! a665a5fb16107c56893bf0ac6dc6f04f  libstdc++-v3/testsuite/18_support/headers/version/macros.cc
! 2d3cc5accca5a38ec570e21cef4d126b  libstdc++-v3/testsuite/18_support/initializer_list/constexpr.cc
! 28173714fcd732070115880a836da21c  libstdc++-v3/testsuite/18_support/initializer_list/range_access.cc
! 2b3dd172d386d5163591c5ef91cfce06  libstdc++-v3/testsuite/18_support/initializer_list/requirements/constexpr_functions.cc
! 2da5cbf9158761f5a34dff856832cf0b  libstdc++-v3/testsuite/18_support/initializer_list/requirements/explicit_instantiation.cc
! cfd1bc376fa3b1594855e38e302b50db  libstdc++-v3/testsuite/18_support/initializer_list/requirements/typedefs.cc
! 8be49fcb6a9a5bedd2781d53666b8733  libstdc++-v3/testsuite/18_support/launder/1.cc
! 8a33f355e8bd131cd05bb8cef1da23e3  libstdc++-v3/testsuite/18_support/launder/nodiscard.cc
! 5fcc5b02cc9ef55cb5b82f62316c71b6  libstdc++-v3/testsuite/18_support/launder/requirements.cc
! 0018dc7ac7b3071ea858b54d38b84140  libstdc++-v3/testsuite/18_support/launder/requirements_neg.cc
! 36fa56190e1ea681bb89ca30e0646f33  libstdc++-v3/testsuite/18_support/max_align_t/requirements/1.cc
! a91697082cebbdc1cf6cea616c0e3dcb  libstdc++-v3/testsuite/18_support/max_align_t/requirements/2.cc
! c1f2923dfae7c116a64c420be1b0525d  libstdc++-v3/testsuite/18_support/nested_exception/51438.cc
! 0400edb565e3861762f8125afd7ce8ab  libstdc++-v3/testsuite/18_support/nested_exception/62154.cc
! 0a0f928d65e6a290c66bd58283fe69bf  libstdc++-v3/testsuite/18_support/nested_exception/68139.cc
! 36c1fd11b4c2a405dfc93f3f7b64a871  libstdc++-v3/testsuite/18_support/nested_exception/79114.cc
! 6be1df0d4c4dc5a39f649d686276fe26  libstdc++-v3/testsuite/18_support/nested_exception/cons.cc
! 5b269fc7430e480725f5da39943b7b1c  libstdc++-v3/testsuite/18_support/nested_exception/nested_ptr.cc
! c912fe6956299e96f48a374fecd1316a  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested-term.cc
! b75154e4847f03181aa2c7370d706ef2  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_if_nested.cc
! 203549aec4798650df155724cb3e78cc  libstdc++-v3/testsuite/18_support/nested_exception/rethrow_nested.cc
! cec0c10f56e3f41069b5edf5d2366e87  libstdc++-v3/testsuite/18_support/nested_exception/throw_with_nested.cc
! 2ada0937f1fe1a60f70aa4eeb32abf1a  libstdc++-v3/testsuite/18_support/new_aligned.cc
! 9d73292fa9c66bd286b7a218f431700e  libstdc++-v3/testsuite/18_support/new_delete_placement.cc
! f055c78e8747fc4f4b5a710da7dd09a5  libstdc++-v3/testsuite/18_support/new_handler.cc
! 8cc4aa2108f45619ab3b34fa4a9615d4  libstdc++-v3/testsuite/18_support/new_nothrow.cc
! 1652cf8915d96c86b7c42ec22540880f  libstdc++-v3/testsuite/18_support/numeric_limits/29989.cc
! 88741ebae8872d3a3bd26a921c852b77  libstdc++-v3/testsuite/18_support/numeric_limits/40856.cc
! 37e7a375424dc5b6bf1e47809f84c9eb  libstdc++-v3/testsuite/18_support/numeric_limits/char16_32_t.cc
! 0db5ecacd0b9ab1b2399801aedaab83a  libstdc++-v3/testsuite/18_support/numeric_limits/char8_t.cc
! 4726eebd3318f872150607f56999da8a  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default.cc
! 14317b9c23ab197a298d28b4c013bbe5  libstdc++-v3/testsuite/18_support/numeric_limits/cons/default_c++0x.cc
! 5ff43ba697b222482dd7c585a9dca7b2  libstdc++-v3/testsuite/18_support/numeric_limits/denorm_min.cc
! 66c3e828e8464fa42dc1907d6c140457  libstdc++-v3/testsuite/18_support/numeric_limits/digits10.cc
! 18bc9250e98c9aacc1305bc4834b282b  libstdc++-v3/testsuite/18_support/numeric_limits/dr559.cc
! 15cf9ab625f5bb78bdafc8b23a811300  libstdc++-v3/testsuite/18_support/numeric_limits/epsilon.cc
! 8940b213fde2ddf981e235d9fc7fc9d4  libstdc++-v3/testsuite/18_support/numeric_limits/infinity.cc
! 0bad8949ac9ff757c17cf4beba57369b  libstdc++-v3/testsuite/18_support/numeric_limits/is_iec559.cc
! 5e4958c212fb66812beca5494effffe3  libstdc++-v3/testsuite/18_support/numeric_limits/is_signed.cc
! 6bd9927ed550f5daf539a90fa76952d2  libstdc++-v3/testsuite/18_support/numeric_limits/lowest.cc
! 163b27b8b5a58f5eb12b571ed74c3f9a  libstdc++-v3/testsuite/18_support/numeric_limits/max_digits10.cc
! 605514c27e1a94389a071545ba5fb8c9  libstdc++-v3/testsuite/18_support/numeric_limits/min_max.cc
! 82e44fb415265e9f1f44d74b9e75c206  libstdc++-v3/testsuite/18_support/numeric_limits/primary.cc
! 266382aa7f8039f96b71ddda6afc2b80  libstdc++-v3/testsuite/18_support/numeric_limits/quiet_NaN.cc
! 5c2b8c46ed8fbdfc65e86a4236b88723  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_data.cc
! 1e6a108fd979e33cb149de569e281631  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/constexpr_functions.cc
! 24d6fa4ccb4f432c3b8e366828851b67  libstdc++-v3/testsuite/18_support/numeric_limits/requirements/explicit_instantiation/1.cc
! a906925b10e0436080d570a389a6daef  libstdc++-v3/testsuite/18_support/numeric_limits/specialization_default_values.cc
! 01ebe853c947ebb5e621174d6aeb4553  libstdc++-v3/testsuite/18_support/numeric_limits/traps.cc
! 4e3ea06d904d52667f565825f1e4e919  libstdc++-v3/testsuite/18_support/pthread_guard.cc
! 80d3f7823484c223d65241febf462975  libstdc++-v3/testsuite/18_support/quick_exit/quick_exit.cc
! ab48a1f1389afd0fcfb7b41a3d573e7f  libstdc++-v3/testsuite/18_support/set_terminate.cc
! a1dc688371fb75b584530a0b31ef3371  libstdc++-v3/testsuite/18_support/set_unexpected.cc
! 357ab35fc5b0286c9e30a3282eb5985a  libstdc++-v3/testsuite/18_support/source_location/1.cc
! eb2280df342a2363a744f554e99a0b03  libstdc++-v3/testsuite/18_support/source_location/consteval.cc
! 3ea05c07286e20de228dcc994da912de  libstdc++-v3/testsuite/18_support/source_location/srcloc.h
! 87ffd7af1e82306764d6f6556030cd3f  libstdc++-v3/testsuite/18_support/source_location/version.cc
! 26e1ca77d1b1b531dac39c32f4098861  libstdc++-v3/testsuite/18_support/terminate_handler.cc
! 0ba910b833dd281cbb0614829d4c21d0  libstdc++-v3/testsuite/18_support/type_info/103240.cc
! 9a24c3156b308b0bdc449e7d1e6e11bd  libstdc++-v3/testsuite/18_support/type_info/52562.cc
  7cc0fa5a242dc51c7245f1c2fc52e0a7  libstdc++-v3/testsuite/18_support/type_info/constexpr.cc
! 10b49b90c00cd62f61115cb9b2531186  libstdc++-v3/testsuite/18_support/type_info/fundamental.cc
! 8d6e574e2ca95775b2edb92c340217ef  libstdc++-v3/testsuite/18_support/type_info/hash_code.cc
! 17aafb05a41a47bc422bef81be29f6b6  libstdc++-v3/testsuite/18_support/uncaught_exception/14026.cc
! 1da73ce9e08b9676c7fb993e027600e8  libstdc++-v3/testsuite/18_support/uncaught_exceptions/uncaught_exceptions.cc
! f2dd2e6bcdea542c5007c4f4a681c683  libstdc++-v3/testsuite/18_support/unexpected_handler.cc
  e76078fa52225514dc89f9b1116c07ff  libstdc++-v3/testsuite/19_diagnostics/error_category/102425.cc
! 74ac8234489c43383d1fa6e5ba07f11e  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/copy_neg.cc
! c34ccb2aa0a507449d259f6f4c42375b  libstdc++-v3/testsuite/19_diagnostics/error_category/cons/default.cc
! c21c2b15abd6aca7af6303cd81b3eb51  libstdc++-v3/testsuite/19_diagnostics/error_category/generic_category.cc
  0a66d8bbf6fa03d3f76f4e2fdde4daf7  libstdc++-v3/testsuite/19_diagnostics/error_category/noexcept.cc
! a4494fe4695037580fe1549dbf6f08da  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/equal.cc
! ffa9b4f7fb8594d309616bb090d0f9b2  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/less.cc
! a8c3fa39fc7ee01b278dbf9a30c31c04  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/not_equal.cc
! 5576d9f56ce33b769ff452c516d5b132  libstdc++-v3/testsuite/19_diagnostics/error_category/operators/three_way.cc
! c1ee1f22c4c449ddcf132ff728885d75  libstdc++-v3/testsuite/19_diagnostics/error_category/system_category.cc
! 944d471bf6d796ae7bfabc6817e2fdaa  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/1.cc
! 3e764412900bc7a965cb4616e033e7ff  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/39882.cc
! 81f9725b7658563bbe88b3ba6c3c1852  libstdc++-v3/testsuite/19_diagnostics/error_code/cons/lwg3629.cc
! 012911e440ed59e44516ddb96b5ce06a  libstdc++-v3/testsuite/19_diagnostics/error_code/hash.cc
! 6a50fa3756e7b75608d49cc56b41b125  libstdc++-v3/testsuite/19_diagnostics/error_code/is_error_code_v.cc
! ee241706c0c88a43c14ca494f261b448  libstdc++-v3/testsuite/19_diagnostics/error_code/modifiers/39882.cc
! 28efc8baa03b78b2303c026cc87ab5a6  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool.cc
! 7695daada431abae92faf513048e7cbe  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/bool_neg.cc
! 498e52ca5e24c09f298d8c6435335000  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/equal.cc
! 59bc88769cf51703574077bd5710f31c  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/less.cc
! b74cfd5ca1d085d956e0f185fcc714b9  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/not_equal.cc
! eeda1e5d85665c4c8d5eafef7588be47  libstdc++-v3/testsuite/19_diagnostics/error_code/operators/three_way.cc
! 127106ca75a51350a13aa8340f6f8ce9  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/1.cc
! 14f0075bdad16d8cfc06b883cd4e4a30  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/39881.cc
! 0c9bc80a7caee067ec088b66373dcca8  libstdc++-v3/testsuite/19_diagnostics/error_condition/cons/lwg3629.cc
! faaa94284ea722c7414bdc5ea355c9c2  libstdc++-v3/testsuite/19_diagnostics/error_condition/hash.cc
! 99feffbbf3be99529199d23f0e2d9bd7  libstdc++-v3/testsuite/19_diagnostics/error_condition/modifiers/39881.cc
! fdf4de152b0d9d4b70714a820c1d1fdd  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool.cc
! ec7909cc28bb631aeecd7fc4d076edbb  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/bool_neg.cc
! 2eceec6bb380dacfab94831105431de4  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/equal.cc
! 6eea9e8a8155bf335679cfc963fc18f1  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/less.cc
! c467d3c891e76c0a7609eab1457337d1  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/not_equal.cc
! f5e76a55d4b4bae31bb03cd56c12e3b7  libstdc++-v3/testsuite/19_diagnostics/error_condition/operators/three_way.cc
! 6d0b4a9e2b92ae07e0c09c1a77ff7280  libstdc++-v3/testsuite/19_diagnostics/headers/cassert/macros.cc
! 55ce06306db464b6fe6e296fa1cf0412  libstdc++-v3/testsuite/19_diagnostics/headers/cerrno/macros.cc
! e6cff57213343d938737c12b9bed9041  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/synopsis.cc
! 722edcbec916760727d8a0576539fc91  libstdc++-v3/testsuite/19_diagnostics/headers/stdexcept/types_std.cc
! d91ac6d523f6b1944399bf0efc522878  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/34538.cc
! c076d11c7c3d30dd64c4c97ff88f6dc8  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/93151.cc
! 34b0e39de1352e0d5712b0129ea9c748  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/errc_std_c++0x.cc
! 673782a58ee730d847efd6d658d72097  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/std_c++0x_neg.cc
! d21e9613676a62fd5797bd48ce685819  libstdc++-v3/testsuite/19_diagnostics/headers/system_error/types_std_c++0x.cc
! ae3d1062e6093057588b1ca45a12bd21  libstdc++-v3/testsuite/19_diagnostics/logic_error/cons_virtual_derivation.cc
! ac9de1c42c132bf614c1665920cbd1ab  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc
! 05508b202174577692dc92de2d293c64  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc
! 30d4a3e264bb7b10238920655ead17b9  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-3.cc
! 4fcce997860ff76bb75413cc8b7b3960  libstdc++-v3/testsuite/19_diagnostics/logic_error/what-big.cc
! b81c5c8c227a9a71e5efdc513a3b1a4d  libstdc++-v3/testsuite/19_diagnostics/runtime_error/cons_virtual_derivation.cc
! 7bffdebfc0db0aa1a33ff6947b1b95d4  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc
! 643fb69aa51d409e269bfd7077a736c1  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc
! b19ff1d2f7a35f456f900bbd20bffd32  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc
! 670eda46fbfa7789251c32b2ebbd9c15  libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-big.cc
  a3f875cb81845cea6552ad2be474733b  libstdc++-v3/testsuite/19_diagnostics/stacktrace/current.cc
  bcbe8956841ad8748b7d53b018a0f23b  libstdc++-v3/testsuite/19_diagnostics/stacktrace/entry.cc
  489c2f3ec1b126c0f5cab03ec75198b5  libstdc++-v3/testsuite/19_diagnostics/stacktrace/stacktrace.cc
! 1a16038fc4f582a0976f9f59a252d7cb  libstdc++-v3/testsuite/19_diagnostics/stacktrace/synopsis.cc
  663e3dcea433a03255e7eed74d7d7f2f  libstdc++-v3/testsuite/19_diagnostics/stacktrace/version.cc
! ea274be46bbf3f9fb04b2ff6ef7a2cfd  libstdc++-v3/testsuite/19_diagnostics/stdexcept.cc
! 6b070c06d56cd63e4f31ba7a7d84afe2  libstdc++-v3/testsuite/19_diagnostics/system_error/39880.cc
! fbe539dd143b3bde8fedbcfdda81797d  libstdc++-v3/testsuite/19_diagnostics/system_error/cons-1.cc
! 8b6c2bc9034df48a14a4045ba2f7f8c8  libstdc++-v3/testsuite/19_diagnostics/system_error/cons_virtual_derivation.cc
  b8fd5b3cc781e4351fcba88c19391352  libstdc++-v3/testsuite/19_diagnostics/system_error/noexcept.cc
! 5d8e9d87141374c9b821851752a21a47  libstdc++-v3/testsuite/19_diagnostics/system_error/what-1.cc
! 7463e2cc3ac14f7112cdb75ad6106561  libstdc++-v3/testsuite/19_diagnostics/system_error/what-2.cc
! 7edb6994ed31df10d0fe23752ed3fa1d  libstdc++-v3/testsuite/19_diagnostics/system_error/what-3.cc
! 0e37d8e4f83f4ede412343dc343046a5  libstdc++-v3/testsuite/19_diagnostics/system_error/what-4.cc
! 71b528937a5ee7efbe5708f7d801614c  libstdc++-v3/testsuite/19_diagnostics/system_error/what-big.cc
! 240350ab558027ec58998650b2a2c041  libstdc++-v3/testsuite/20_util/add_const/requirements/alias_decl.cc
! 4d62fe7943961a619b0ec1002da18291  libstdc++-v3/testsuite/20_util/add_const/requirements/explicit_instantiation.cc
! 47a0ada99d5913bbab75415d03ffcece  libstdc++-v3/testsuite/20_util/add_const/value.cc
! 725fd84a4951fe1b8e720ca6daf1e923  libstdc++-v3/testsuite/20_util/add_cv/requirements/alias_decl.cc
! 743c7a2bf03d647dbdea09f27fb51c7e  libstdc++-v3/testsuite/20_util/add_cv/requirements/explicit_instantiation.cc
! 870e5b48ef3728ab7e049fa5d6df6141  libstdc++-v3/testsuite/20_util/add_cv/value.cc
! 03cac62b20d6e449a01f490aa2c2b6a4  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/alias_decl.cc
! 27126fc944b4d24fa49c68b74ba76df9  libstdc++-v3/testsuite/20_util/add_lvalue_reference/requirements/explicit_instantiation.cc
! b60c3066b762b2d2ba1b57e52f94276a  libstdc++-v3/testsuite/20_util/add_lvalue_reference/value.cc
! 509cd2cbfc8beaea6e6063b6c56d8926  libstdc++-v3/testsuite/20_util/add_pointer/requirements/alias_decl.cc
! 64833a71386d7b2f3ecf88559f14cfcb  libstdc++-v3/testsuite/20_util/add_pointer/requirements/explicit_instantiation.cc
! 891fcb6df80d02e17dfe7e5e832bf2bc  libstdc++-v3/testsuite/20_util/add_pointer/value.cc
! da511e9677d158b789bc5b15628eafb3  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/alias_decl.cc
! bacbd00af5ace13660a90c1d3f292d72  libstdc++-v3/testsuite/20_util/add_rvalue_reference/requirements/explicit_instantiation.cc
! 5dc286c989516775f1d196d82b93c81b  libstdc++-v3/testsuite/20_util/add_rvalue_reference/value.cc
! d0b6760e1a8a194fd74529c0f5aee577  libstdc++-v3/testsuite/20_util/add_volatile/requirements/alias_decl.cc
! 49b6388449ff689a6078b86d56e39f5b  libstdc++-v3/testsuite/20_util/add_volatile/requirements/explicit_instantiation.cc
! 7444975b04980783c98f82395925ad12  libstdc++-v3/testsuite/20_util/add_volatile/value.cc
! 8ca260c9a8f4d5357bbc23e83d1f1afb  libstdc++-v3/testsuite/20_util/addressof/1.cc
! a9d51b40afbe0f483b30281cf92f8ae2  libstdc++-v3/testsuite/20_util/addressof/requirements/constexpr.cc
! 5e852d206ee03aa7cd85e2aba87049d4  libstdc++-v3/testsuite/20_util/addressof/requirements/explicit_instantiation.cc
! 5bb96ab7b0b949dc6d278825b55fc67d  libstdc++-v3/testsuite/20_util/align/1.cc
! 131138f70912e480dd840633413c4691  libstdc++-v3/testsuite/20_util/align/2.cc
! bfdefe28adbf4bc9c0d81ac6d06d9f8e  libstdc++-v3/testsuite/20_util/align/3.cc
! cb35abadc7188420a699135747c7afe7  libstdc++-v3/testsuite/20_util/aligned_storage/deprecated-2b.cc
! 8bfd75d4a3f45208bf3cd06405c4cbd5  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/alias_decl.cc
! 1bdf00372c96b835ec9114f7d9c83c83  libstdc++-v3/testsuite/20_util/aligned_storage/requirements/explicit_instantiation.cc
! de33db71a9e91ec6912a7ef971223ed0  libstdc++-v3/testsuite/20_util/aligned_storage/value.cc
! c99ed469780336f65a213a74757b3979  libstdc++-v3/testsuite/20_util/aligned_union/1.cc
! 187dba3d012b48c031418b8a2ec0f329  libstdc++-v3/testsuite/20_util/aligned_union/deprecated-2b.cc
! 66764b1e771f2559f4796fccff84286f  libstdc++-v3/testsuite/20_util/aligned_union/requirements/alias_decl.cc
! d9292eea1fe7111312300286fa202e65  libstdc++-v3/testsuite/20_util/alignment_of/requirements/explicit_instantiation.cc
! d6fd4fd7b33a01ed98f7f67ecd75c5d3  libstdc++-v3/testsuite/20_util/alignment_of/requirements/typedefs.cc
! 00b0ca4ed4fe5132e71680b593d65977  libstdc++-v3/testsuite/20_util/alignment_of/value.cc
! 80c2ac709253113665a9aa3000617054  libstdc++-v3/testsuite/20_util/allocator/1.cc
! 6a285445f33dfd377092d80bde6c950a  libstdc++-v3/testsuite/20_util/allocator/10378.cc
! d9c5bf9dc41e5e13c6a75112c006b117  libstdc++-v3/testsuite/20_util/allocator/105975.cc
! 5fa918472f095597252df2ec333e432f  libstdc++-v3/testsuite/20_util/allocator/14176.cc
! 10f147f01c096755e20bab5447e5b705  libstdc++-v3/testsuite/20_util/allocator/33807.cc
! ae49058091ac2f31814de6246e958d6a  libstdc++-v3/testsuite/20_util/allocator/64135.cc
! 1ebbd1b584bf1d6acb6c067c313edaa9  libstdc++-v3/testsuite/20_util/allocator/8230.cc
! 42e7ce73eab09500cc3d423059905a70  libstdc++-v3/testsuite/20_util/allocator/89510.cc
! 7a68c72aabe495b3ce2c739fdf7aee79  libstdc++-v3/testsuite/20_util/allocator/lwg3190.cc
! b71a95664dc355bfe333833e811dd6be  libstdc++-v3/testsuite/20_util/allocator/overaligned.cc
! 59e31a2330e693f3ad59fe15e77cb3b8  libstdc++-v3/testsuite/20_util/allocator/rebind_c++20.cc
! 1493cc975097f0fb5ff62334ad86a654  libstdc++-v3/testsuite/20_util/allocator/requirements/constexpr.cc
! e4496bdeacfe147772ae9ddff8e42168  libstdc++-v3/testsuite/20_util/allocator/requirements/explicit_instantiation/1.cc
! 89c50793f82e06e2f798311d93c7fdcf  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs.cc
! 2e749a2edb5d2e138b6f778cada4a7ca  libstdc++-v3/testsuite/20_util/allocator/requirements/typedefs_c++20.cc
! 85e9d232b615cc4749ffaef8b7a6d6ee  libstdc++-v3/testsuite/20_util/allocator/void.cc
! cd4f8aa7e809c1f61710c202de45c08a  libstdc++-v3/testsuite/20_util/allocator_traits/header-2.cc
! 6bd8e984c9f51c1fa9bc618100628ed1  libstdc++-v3/testsuite/20_util/allocator_traits/header.cc
! 803e877a7873c9281167bc02c45c1d83  libstdc++-v3/testsuite/20_util/allocator_traits/members/92878_92947.cc
! a7f0e1c700dc5a70bc60c58bd15084de  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint.cc
! a863cf5675199587b72d724a3853ac83  libstdc++-v3/testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc
! ca676933762319a1d61d8d2956e71133  libstdc++-v3/testsuite/20_util/allocator_traits/members/construct.cc
! 0d1e96b63ea2b17d2da3bb674568713e  libstdc++-v3/testsuite/20_util/allocator_traits/members/destroy.cc
! e017889d16319fe6a9855e5c1f07778f  libstdc++-v3/testsuite/20_util/allocator_traits/members/is_always_equal.cc
! 5eefd877b8c473d5356ce6cd18bd6ef7  libstdc++-v3/testsuite/20_util/allocator_traits/members/max_size.cc
! fce6aceb9e97e73eeb66cc2bd2234c24  libstdc++-v3/testsuite/20_util/allocator_traits/members/pointers.cc
! 06e74339cf950c72baf00a24234b751d  libstdc++-v3/testsuite/20_util/allocator_traits/members/rebind_alloc.cc
! 29b6e54af654d0612605da78714097b7  libstdc++-v3/testsuite/20_util/allocator_traits/members/select.cc
! 965bf8bbfb5c510c95c35f6dbd28fd8d  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/explicit_instantiation.cc
! bef0ecc9b87819710fa15591c4f27204  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/rebind_neg.cc
! 6ad909338633fddcd8c01114488b453d  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs.cc
! 195573c931acc4fefe174b41e4e1581c  libstdc++-v3/testsuite/20_util/allocator_traits/requirements/typedefs2.cc
  53d95c7e7934ce41b96d0a86033b6a99  libstdc++-v3/testsuite/20_util/any/102894.cc
! d0d06a58b3fc2dc795244575608eee9a  libstdc++-v3/testsuite/20_util/any/assign/1.cc
! ee2fe0f60807956e4aadbc5c212bbac5  libstdc++-v3/testsuite/20_util/any/assign/2.cc
! 0d6400a81dc500edfa2b9c3b453e7e6e  libstdc++-v3/testsuite/20_util/any/assign/92878_92947.cc
! dfccaf7e7a8edb05c2cb20b5428a00cc  libstdc++-v3/testsuite/20_util/any/assign/emplace.cc
! 26100b0d1054ddbe7a6929c0938580c9  libstdc++-v3/testsuite/20_util/any/assign/exception.cc
! 0e032a4e6a3a130c055a6ed694265994  libstdc++-v3/testsuite/20_util/any/assign/self.cc
! 30c38541426f8c0dbf3a91884078e3ac  libstdc++-v3/testsuite/20_util/any/cons/1.cc
  097d518046e23537949952c936ddfa1c  libstdc++-v3/testsuite/20_util/any/cons/101034.cc
  335e5502fad2ac140247bdc170504f8f  libstdc++-v3/testsuite/20_util/any/cons/104242.cc
! 05c87f655dfa70e5eee1e3005528dd73  libstdc++-v3/testsuite/20_util/any/cons/2.cc
! 922a1d1eecb4b3e2695bfc5905eb08f3  libstdc++-v3/testsuite/20_util/any/cons/90415.cc
! 8172f07260610946b66c9dec12adef3b  libstdc++-v3/testsuite/20_util/any/cons/92156.cc
! 1616255858aecfe08c61921b1b23a257  libstdc++-v3/testsuite/20_util/any/cons/92878_92947.cc
! 9b676ab5b73fc45398c1cc1dca0ba93a  libstdc++-v3/testsuite/20_util/any/cons/aligned.cc
! 67be89943449af2b403586337a844e13  libstdc++-v3/testsuite/20_util/any/cons/explicit.cc
! ff193074a8458a2e074973c71219eb6b  libstdc++-v3/testsuite/20_util/any/cons/in_place.cc
! 5ed048d17ac016e75f4724c5c67d08f4  libstdc++-v3/testsuite/20_util/any/cons/nontrivial.cc
! 283af6cf2be9e2e390a16e984fa9887d  libstdc++-v3/testsuite/20_util/any/make_any.cc
! 3d391318968960ef81337edd765c1f4a  libstdc++-v3/testsuite/20_util/any/misc/any_cast.cc
! ff9efb006ed640c7ec67c5098b79f34d  libstdc++-v3/testsuite/20_util/any/misc/any_cast_neg.cc
! cad434b9df7e235bf9061a3b408c9438  libstdc++-v3/testsuite/20_util/any/misc/any_cast_no_rtti.cc
! 180571c727b8c748345f1c500a2668bf  libstdc++-v3/testsuite/20_util/any/misc/swap.cc
! 82fd0d666c2fd3edb0de8b203835359f  libstdc++-v3/testsuite/20_util/any/modifiers/1.cc
! fa6a19b30c1071b999c338c03e2cb4bb  libstdc++-v3/testsuite/20_util/any/modifiers/83658.cc
! 9c0760905d53f1cf125664b6f73191fc  libstdc++-v3/testsuite/20_util/any/modifiers/92156.cc
! f28104df73ecec358c910960aaa72b19  libstdc++-v3/testsuite/20_util/any/observers/type.cc
! b95061cfc8c1b4218c23197ef6535dc8  libstdc++-v3/testsuite/20_util/any/requirements.cc
! ef6414a49b693fb6e8d8f8aea5b209b2  libstdc++-v3/testsuite/20_util/any/typedefs.cc
! f9a2bd5e824353e5bec80112acf896ae  libstdc++-v3/testsuite/20_util/as_const/1.cc
! 994bfcf43d14c8e96c59924099abc883  libstdc++-v3/testsuite/20_util/as_const/rvalue_neg.cc
! 2b5df8d4b01fb55a6ab9ba8521b7c075  libstdc++-v3/testsuite/20_util/assume_aligned/1.cc
! f8a588e32821f9ba70aed45c186b4b82  libstdc++-v3/testsuite/20_util/assume_aligned/2_neg.cc
! dc9b06d697ca668b470056f1e5e1f1f5  libstdc++-v3/testsuite/20_util/assume_aligned/3.cc
! 5ceba7a15a15ef235e6ea21c41140b51  libstdc++-v3/testsuite/20_util/assume_aligned/97132.cc
! b579b2b5c5e405bb03ab8572cae9fcbd  libstdc++-v3/testsuite/20_util/auto_ptr/1.cc
! 227e6e3b031dc3ad94187c581e090b5d  libstdc++-v3/testsuite/20_util/auto_ptr/2.cc
! f34b36fa4344433e72f94da293b80cb1  libstdc++-v3/testsuite/20_util/auto_ptr/3.cc
! 2ab4ca36b6f24d599ed343ff405a8e6c  libstdc++-v3/testsuite/20_util/auto_ptr/3946.cc
! 02bff8a3031a259629db28905d0bf38a  libstdc++-v3/testsuite/20_util/auto_ptr/4.cc
! a446dc426432da5e709b83077405338b  libstdc++-v3/testsuite/20_util/auto_ptr/5.cc
! 79cd9495318d46c536f1fdebb56d0923  libstdc++-v3/testsuite/20_util/auto_ptr/6.cc
! 09b8fe0f383ef2279a3d9ed82f5afbf0  libstdc++-v3/testsuite/20_util/auto_ptr/7.cc
! 0aa73ebb9bd0d442d8bc333152d45bf8  libstdc++-v3/testsuite/20_util/auto_ptr/assign_neg.cc
! 6b79dcdf58ccfc3fa1c4626617a385e4  libstdc++-v3/testsuite/20_util/auto_ptr/requirements/explicit_instantiation/1.cc
! b60207b01d1087d149e0623075e8d531  libstdc++-v3/testsuite/20_util/bad_function_call/cons_virtual_derivation.cc
! 30e77c71ea27b4641c489bb62171ba5e  libstdc++-v3/testsuite/20_util/bad_function_call/what.cc
! 23db7569e5050e20827dade4dd30b713  libstdc++-v3/testsuite/20_util/bind/35569.cc
! ebc317f73829237b40782c29a4b6ca4c  libstdc++-v3/testsuite/20_util/bind/38889.cc
! d1feac5a6ae893a2f3ecb7a2c6a76928  libstdc++-v3/testsuite/20_util/bind/42593.cc
! 47196c0b00b704a9bd2265716c8d7ba1  libstdc++-v3/testsuite/20_util/bind/45924.cc
! d5fb0b8148fff311e629fedf73eab2c9  libstdc++-v3/testsuite/20_util/bind/48698.cc
! 00860253d8c6a749838738d4ad8c6283  libstdc++-v3/testsuite/20_util/bind/49058_1.cc
! 518351a8a6c77e0f42ec7dba14b9d9fb  libstdc++-v3/testsuite/20_util/bind/49058_2.cc
! 2aee90034926239c34aed7c59e0b68f8  libstdc++-v3/testsuite/20_util/bind/57899.cc
! a1bc9c024c2fcce8aa916f91664fc6f7  libstdc++-v3/testsuite/20_util/bind/60497.cc
! 25aaa8561d10c16748dfa58a7f9d4cb0  libstdc++-v3/testsuite/20_util/bind/68912.cc
! 7e88bea3c30ef3de58ed5152eea5758b  libstdc++-v3/testsuite/20_util/bind/79798.cc
! ad222a7662818952150ff1e896fa3d3f  libstdc++-v3/testsuite/20_util/bind/83427.cc
! 1947b789d50cf54137cede3298812fff  libstdc++-v3/testsuite/20_util/bind/91371.cc
! ef80378abadb9425c6b43212ee3a40b2  libstdc++-v3/testsuite/20_util/bind/all_bound.cc
! 7664ea84c72f010f69f9062b2abf9805  libstdc++-v3/testsuite/20_util/bind/constexpr.cc
! 79a3f55fc4927ec664517bf0651c62da  libstdc++-v3/testsuite/20_util/bind/conv_result.cc
! 7d66333f1d0fb37a1c585728a088f21e  libstdc++-v3/testsuite/20_util/bind/cv_quals.cc
! d1bcb20c9df7d3093d253212d2b3abd9  libstdc++-v3/testsuite/20_util/bind/cv_quals_2.cc
! 66eb68f8795a0447b45848bcc1ef5025  libstdc++-v3/testsuite/20_util/bind/cv_quals_3.cc
! ac8e93d4882e1ff9282d9a8a2b291031  libstdc++-v3/testsuite/20_util/bind/dangling_ref.cc
! f5054078475268ad09875ec7b4e5daa1  libstdc++-v3/testsuite/20_util/bind/is_placeholder_v.cc
! ec62fef561a1089bfaf166057a0bf97f  libstdc++-v3/testsuite/20_util/bind/move.cc
! 60ce1f18234be0aa8b7a15aec1d1bf12  libstdc++-v3/testsuite/20_util/bind/nested.cc
! f7835b12ebc78dfbfd92e7ea0009129e  libstdc++-v3/testsuite/20_util/bind/placeholders.cc
! 54111bea275d92306634b466007bf41c  libstdc++-v3/testsuite/20_util/bind/ref.cc
! 472ef7d8e6bc573e0fbdef41c148ab73  libstdc++-v3/testsuite/20_util/bind/ref2.cc
! 7efbafe3ff4ce6578ae62c14d4dd1276  libstdc++-v3/testsuite/20_util/bind/ref_neg.cc
! 74dd9f024a0fd7328cd0bbc7a5a9a350  libstdc++-v3/testsuite/20_util/bind/refqual.cc
! 5b2714416c46b4e95667b1d81e33c6fa  libstdc++-v3/testsuite/20_util/bind/socket.cc
! 22b315cd786be549e08a0d3d60a69756  libstdc++-v3/testsuite/20_util/bitset/107037.cc
! d9ee4f6e2ec24574e43361cf5118aa76  libstdc++-v3/testsuite/20_util/bitset/18604.cc
! 08714b98288c62707f79ec54dae11de0  libstdc++-v3/testsuite/20_util/bitset/45713.cc
! e35574797464337128921945ec6781a1  libstdc++-v3/testsuite/20_util/bitset/access/constexpr.cc
! 59cac10057eb2790d1a548c997207a9a  libstdc++-v3/testsuite/20_util/bitset/access/dr396.cc
! 3591ce6686f2c642cff8d2424971bcf6  libstdc++-v3/testsuite/20_util/bitset/access/to_string.cc
! 14776ceac5447adc0dbe855f8b1e1601  libstdc++-v3/testsuite/20_util/bitset/access/to_ullong.cc
! 506e022cedb0b02be0502ef7dda63982  libstdc++-v3/testsuite/20_util/bitset/access/to_ulong.cc
! c6de06997d6158f01166a16997e00cc0  libstdc++-v3/testsuite/20_util/bitset/cons/1.cc
! 3c78d1686414bf15e4656ac87e58f909  libstdc++-v3/testsuite/20_util/bitset/cons/16020.cc
! 84e1083387f3ff0a1dd5c9f7d08915fa  libstdc++-v3/testsuite/20_util/bitset/cons/2.cc
! 9bb42dcf7c65c932b81ce71b339d9c91  libstdc++-v3/testsuite/20_util/bitset/cons/3.cc
! e9efacab7f64fc9867c41dff1a6bd6a1  libstdc++-v3/testsuite/20_util/bitset/cons/38244.cc
! b27eb5ce75db5b95b84c79b8c2b7adc4  libstdc++-v3/testsuite/20_util/bitset/cons/50268.cc
! be07a3604de6920ec90efce95856133e  libstdc++-v3/testsuite/20_util/bitset/cons/6282.cc
! e6e6dcb07a466ee40b6293d847cc812d  libstdc++-v3/testsuite/20_util/bitset/cons/constexpr.cc
! d3b985bd24bdf87df163f0197d272cb9  libstdc++-v3/testsuite/20_util/bitset/cons/constexpr_c++23.cc
! 001da5f809a10bd21d5ec2d936b08a7d  libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-1.cc
! 25aeba0a7d5d6d0e6a3cd637b6de8514  libstdc++-v3/testsuite/20_util/bitset/cons/dr1325-2.cc
! 8f5a88d9079f79f85483f8216d077f38  libstdc++-v3/testsuite/20_util/bitset/cons/dr396.cc
! 7e5517b6c4a32f412609393c7c36c533  libstdc++-v3/testsuite/20_util/bitset/count/constexpr.cc
! adb24a284375074f57f0d79edf69f304  libstdc++-v3/testsuite/20_util/bitset/debug/invalidation/1.cc
! 1b52d058855d1d316ec2a829deeb86d9  libstdc++-v3/testsuite/20_util/bitset/ext/15361.cc
! 9876d32d3bf7f92712a425f0f4ad9778  libstdc++-v3/testsuite/20_util/bitset/ext/constexpr.cc
! 1b5ab2c267e8f812533164952b99ae50  libstdc++-v3/testsuite/20_util/bitset/hash/1.cc
! 8b2907e0bb1e21df0d67b963bcff84ee  libstdc++-v3/testsuite/20_util/bitset/io/input.cc
! 08336c599d6081cfb32b134935b8216a  libstdc++-v3/testsuite/20_util/bitset/observers/6124.cc
! 141a779a429aeca8e133058fa4d93b3b  libstdc++-v3/testsuite/20_util/bitset/observers/all.cc
! 549223dd9bad3c2424964b62e1959f98  libstdc++-v3/testsuite/20_util/bitset/observers/test.cc
! b7bf34395127d525cc0b1f5f1385f252  libstdc++-v3/testsuite/20_util/bitset/operations/1.cc
! 0663b44ff78292568aadb66178acaf2f  libstdc++-v3/testsuite/20_util/bitset/operations/13838.cc
! 9d4d5cff2cb4e278f2d631b7ce889718  libstdc++-v3/testsuite/20_util/bitset/operations/2.cc
! b6c49e2294dfd5037f65fb886af6568f  libstdc++-v3/testsuite/20_util/bitset/operations/96303.cc
! 9465879898d96c700038f0fa4174b524  libstdc++-v3/testsuite/20_util/bitset/operations/constexpr-2.cc
! 43bfea314720fc3986dc9df93ae70331  libstdc++-v3/testsuite/20_util/bitset/operations/constexpr.cc
! 9a3a693f7e09c8be7d7ed2be88e7d315  libstdc++-v3/testsuite/20_util/bitset/operations/constexpr_c++23.cc
! ec441593fa14ea28f117784c1b351bc5  libstdc++-v3/testsuite/20_util/bitset/requirements/constexpr_functions.cc
! 136ee9a416283f6bbb3f1b3ec4657743  libstdc++-v3/testsuite/20_util/bitset/requirements/explicit_instantiation/1.cc
! 94d1436b518a220817928c8e51d1b521  libstdc++-v3/testsuite/20_util/bitset/requirements/explicit_instantiation/1_c++0x.cc
! 27ae3a4a5b911a05dc593e0798d0f350  libstdc++-v3/testsuite/20_util/bitset/version.cc
! 94f1f342972a39eb091f891860f51353  libstdc++-v3/testsuite/20_util/bool_constant/requirements.cc
  7b45f3d65401a77e7c8feec605d0e13f  libstdc++-v3/testsuite/20_util/common_reference/100894.cc
! 9a0d7d5498703a4e88fb5a1aaba6a486  libstdc++-v3/testsuite/20_util/common_reference/requirements/alias_decl.cc
! 54d83dc72a955526b4c59091d4b6a975  libstdc++-v3/testsuite/20_util/common_reference/requirements/explicit_instantiation.cc
! 7052813ffacdd91fe1cef2639d255c94  libstdc++-v3/testsuite/20_util/common_reference/requirements/typedefs.cc
! 5df469148adb157ebfaff0da0bab29ae  libstdc++-v3/testsuite/20_util/common_type/requirements/alias_decl.cc
! 594433cc1f153fd913a38f326838b922  libstdc++-v3/testsuite/20_util/common_type/requirements/explicit_instantiation.cc
! 7e7179cdb6db910f59b991d27a715149  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_1.cc
! a92fed4c75c06ba8891bcca109d5e58a  libstdc++-v3/testsuite/20_util/common_type/requirements/sfinae_friendly_2.cc
! 604fc40ef75e4a8233ea5caaabd6399b  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-1.cc
! e1ffd74ce53948eb4746aa0118adfe04  libstdc++-v3/testsuite/20_util/common_type/requirements/typedefs-2.cc
! d2bf60207664438bb79e8cfee840cf4b  libstdc++-v3/testsuite/20_util/conditional/requirements/alias_decl.cc
! 64f6c4a8649593be5c6f5d31bd9c6698  libstdc++-v3/testsuite/20_util/conditional/requirements/explicit_instantiation.cc
! baf522a802f4062deb4573182d780bc3  libstdc++-v3/testsuite/20_util/conditional/requirements/typedefs.cc
! 32100ca95d2c98a35f4d719910b1d1b2  libstdc++-v3/testsuite/20_util/decay/requirements/alias_decl.cc
! ab2e4d0fb520f387da8b1fe896a7bc54  libstdc++-v3/testsuite/20_util/decay/requirements/explicit_instantiation.cc
! 9d6074cde66f9baa1bd1405dfb040c67  libstdc++-v3/testsuite/20_util/decay/requirements/typedefs.cc
! 4ab6bf8c57be9e7706deebdddb19928e  libstdc++-v3/testsuite/20_util/declval/requirements/1.cc
! fa05b9d751ef1aff768cb0437bd4ea69  libstdc++-v3/testsuite/20_util/declval/requirements/1_neg.cc
! 4bdd3bce35b20aa9a4474b875a7bf371  libstdc++-v3/testsuite/20_util/default_delete/48631_neg.cc
! 363a9d906d50395fe2d39e6cf4a71abc  libstdc++-v3/testsuite/20_util/default_delete/cons/constexpr.cc
! 4ca95d7d3c5da2a2119a2bf2eb34887f  libstdc++-v3/testsuite/20_util/default_delete/void_neg.cc
! 2cc04afdbb7bdb31aae6c8f04d67c225  libstdc++-v3/testsuite/20_util/duration/arithmetic/1.cc
! edc8f4d89acbd6814f52775cb8eabdd9  libstdc++-v3/testsuite/20_util/duration/arithmetic/2.cc
! 30c9ca07c179b4113f3963904cfb44a4  libstdc++-v3/testsuite/20_util/duration/arithmetic/58850.cc
! c1c59d76f99d6df119269e328a06e3a0  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr.cc
! 1d7de797772b173c148560638030ad99  libstdc++-v3/testsuite/20_util/duration/arithmetic/constexpr_c++17.cc
! 63a7843c76a480e032ea3b4e554322ad  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr2020.cc
! c06f415f6f0924f878a898566eb03674  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr3050.cc
! a4a9f4761425d4965ae9a91d8a0eca9d  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-1.cc
! c310a191a975be714675bb6ff9ab5168  libstdc++-v3/testsuite/20_util/duration/arithmetic/dr934-2.cc
! fb1598924c8f9eb697450267a611f1b0  libstdc++-v3/testsuite/20_util/duration/arithmetic/overflow_c++20.cc
! 4537589c008d71f6364b9b47b572de4f  libstdc++-v3/testsuite/20_util/duration/comparison_operators/1.cc
! 3de0054c6561df68954dcbd8ce79e7f5  libstdc++-v3/testsuite/20_util/duration/comparison_operators/constexpr.cc
! 49f523f9e056d5b60d49565d0ed9e949  libstdc++-v3/testsuite/20_util/duration/comparison_operators/three_way.cc
! 7984ac11209a19f1b214039012d83d03  libstdc++-v3/testsuite/20_util/duration/cons/1.cc
! 95a9b5386bce7212fcb9662e230cda00  libstdc++-v3/testsuite/20_util/duration/cons/1_neg.cc
! ff77adc5b63dc85f229d5af64dd3c336  libstdc++-v3/testsuite/20_util/duration/cons/2.cc
! 4717677f14bc380cbdac877882fd44ec  libstdc++-v3/testsuite/20_util/duration/cons/54025.cc
! 3f620083f81c2f719b970e46f6ad39f4  libstdc++-v3/testsuite/20_util/duration/cons/constexpr.cc
! ac5fc86cab4f651a7009b5e1a04bcc86  libstdc++-v3/testsuite/20_util/duration/cons/dr1177.cc
! 9c60e231bb78dba8a918d00c8b3648a3  libstdc++-v3/testsuite/20_util/duration/cons/dr2094.cc
! b8359368c2247b52886827271163885e  libstdc++-v3/testsuite/20_util/duration/cons/dr3050.cc
! a0774b99c18fd2bc252c8cd6edb7cf08  libstdc++-v3/testsuite/20_util/duration/cons/dr974_neg.cc
! 3e1bf741f760f7f2ae7049ff93b8afe5  libstdc++-v3/testsuite/20_util/duration/io.cc
! 36bc50f45d98b5197379c425a2a7555f  libstdc++-v3/testsuite/20_util/duration/literals/61166.cc
! 4ad88bdc966146f6ec3c7264a2a6e138  libstdc++-v3/testsuite/20_util/duration/literals/65499.cc
! 6b548b7ad2bc536c9d4fc09f6d07ae8a  libstdc++-v3/testsuite/20_util/duration/literals/84671.cc
  f11b5a7d64db419bf2305c0f433c638b  libstdc++-v3/testsuite/20_util/duration/literals/ns_detail.cc
! 4d1aea9ba676adc23a92fca91b1edc92  libstdc++-v3/testsuite/20_util/duration/literals/range_neg.cc
! 5ed3a5692cfd4e9166a3fbe58351ea23  libstdc++-v3/testsuite/20_util/duration/literals/types.cc
! ba908b74c329867c6ebc1cfb4a119b84  libstdc++-v3/testsuite/20_util/duration/literals/values.cc
! 1991d192adecad75affc6ea866e8a71f  libstdc++-v3/testsuite/20_util/duration/requirements/constexpr_functions.cc
! 1fa580e66f63604c77bda879a8353822  libstdc++-v3/testsuite/20_util/duration/requirements/explicit_instantiation.cc
! ca9cdcdac885b92fdfd3ac1be4827b75  libstdc++-v3/testsuite/20_util/duration/requirements/noexcept.cc
! 75f50fa7d9297a46f82c43c34b672897  libstdc++-v3/testsuite/20_util/duration/requirements/reduced_period.cc
! af949eb57bcae1e1f75c354921c0c6cb  libstdc++-v3/testsuite/20_util/duration/requirements/sfinae_friendly_1.cc
! 0c6df77958632b85b0810363f8f7904d  libstdc++-v3/testsuite/20_util/duration/requirements/treat_as_floating_point_v.cc
! be96a3c44b5f145a63e2e089f75e1ad1  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg1.cc
! 23f72ab2bc15e148e22d0ce7bd2a8313  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg2.cc
! 99f36240fccfc4a2cc1e63016d776786  libstdc++-v3/testsuite/20_util/duration/requirements/typedefs_neg3.cc
! 0fb370ddffd9094bbd351a26b7b21074  libstdc++-v3/testsuite/20_util/duration_cast/constexpr.cc
! 3c401e02699bbf431e8d5f337b32252e  libstdc++-v3/testsuite/20_util/duration_cast/rounding.cc
! 6767d21d0db0390fd4f5de831f0538a8  libstdc++-v3/testsuite/20_util/duration_cast/rounding_c++11.cc
! efb3fdb91730fd5667f440b01ce10557  libstdc++-v3/testsuite/20_util/enable_if/requirements/alias_decl.cc
! bfa545ad7902bfa0eeda4786c8d1a9f9  libstdc++-v3/testsuite/20_util/enable_if/requirements/explicit_instantiation.cc
! abae34feca5262e552eb46cd987a5cb3  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs.cc
! 3c905bb27a2cfbcecb4dd1c565d27592  libstdc++-v3/testsuite/20_util/enable_if/requirements/typedefs_neg.cc
! 888afccab70c54ff62b0654b1c8978e5  libstdc++-v3/testsuite/20_util/enable_shared_from_this/56383.cc
! 9bcc64a3fbc02136034db2a19d67aac0  libstdc++-v3/testsuite/20_util/enable_shared_from_this/89303.cc
! 6ceb46fab3bfb3981631cf8a153b24f0  libstdc++-v3/testsuite/20_util/enable_shared_from_this/cons/constexpr.cc
! e75c146474bac3083837af05766f27b9  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/assign.cc
! e53b98357ddbc5981890ce5611a774fa  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/const.cc
! 17e90736fcd325bc627488a97bcce3c7  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/reinit.cc
! 908875e401b5f870df97fb9fdb32c9af  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/unique_ptr.cc
! a5d5af2688e2e4b6f0d2eff3dffb7d07  libstdc++-v3/testsuite/20_util/enable_shared_from_this/members/weak_from_this.cc
! 8fa7b6dadfffdf1e5bb27df16e9e08cf  libstdc++-v3/testsuite/20_util/enable_shared_from_this/requirements/explicit_instantiation.cc
! ee7c6318f9bca610a19f15120c1271fc  libstdc++-v3/testsuite/20_util/exchange/1.cc
! 4bab261c4762e2c5ae00f8b270aefbfd  libstdc++-v3/testsuite/20_util/exchange/constexpr.cc
  5abbf6d20cd589946f4bdfcb28f02dd4  libstdc++-v3/testsuite/20_util/exchange/noexcept.cc
  da3718fa1e22fa960e90da076e9180db  libstdc++-v3/testsuite/20_util/expected/assign.cc
  786012815e4d290200d001a0341260c1  libstdc++-v3/testsuite/20_util/expected/bad.cc
  8187c0547d89a14b970b66cbef0b0194  libstdc++-v3/testsuite/20_util/expected/cons.cc
! 223f2ab268eb9baa5ce364f45b161df0  libstdc++-v3/testsuite/20_util/expected/equality.cc
! 8544093bb91b2f31a179c9134e8dc6d8  libstdc++-v3/testsuite/20_util/expected/illformed_neg.cc
! d05b7631917fa6bbb8699721642255f1  libstdc++-v3/testsuite/20_util/expected/monadic.cc
! b10b7e83e3f902f13531dc0465a038d7  libstdc++-v3/testsuite/20_util/expected/observers.cc
  c58d809da0c46bd85f9a6e61760da9cc  libstdc++-v3/testsuite/20_util/expected/requirements.cc
! cc692c857056ee7f19a3f55a6a36bf26  libstdc++-v3/testsuite/20_util/expected/swap.cc
! 4a4a8170e32f17382fc7cc08f2c0a2b2  libstdc++-v3/testsuite/20_util/expected/synopsis.cc
! a1d57e83054134a91172b48f8cfe27d5  libstdc++-v3/testsuite/20_util/expected/unexpected.cc
! 5e85c37b80209f80ca385f025977fd0f  libstdc++-v3/testsuite/20_util/expected/version.cc
! 75e34824d1d2591206ff267c0fa1a212  libstdc++-v3/testsuite/20_util/extent/requirements/explicit_instantiation.cc
! eecad26369690cb279fa7348ce90bcde  libstdc++-v3/testsuite/20_util/extent/requirements/typedefs.cc
! 0268325176e39423bc4c3c57af6d7b92  libstdc++-v3/testsuite/20_util/extent/value.cc
! b4b46565ef2dd8f89def7e436b0914b4  libstdc++-v3/testsuite/20_util/forward/1.cc
! 76b89de474153fa7ece89efa404cab93  libstdc++-v3/testsuite/20_util/forward/1_neg.cc
! d03bd034c1329835caca59048f391de0  libstdc++-v3/testsuite/20_util/forward/a.cc
! f40d3274f3d5a2af5b4d04c8ee4830cd  libstdc++-v3/testsuite/20_util/forward/b.cc
! 171d5924c5e02034415c26f70b90e13a  libstdc++-v3/testsuite/20_util/forward/c_neg.cc
! fac9c77d891f2fd7e308dbd0f16a566c  libstdc++-v3/testsuite/20_util/forward/d.cc
! 029a7fbcaa3f07585782166a00af60bb  libstdc++-v3/testsuite/20_util/forward/e.cc
! e87c0a456e90bbef2ccb5dc5e9f1f811  libstdc++-v3/testsuite/20_util/forward/f_neg.cc
! 2aed9b54307ec66aca090120d2633456  libstdc++-v3/testsuite/20_util/forward/requirements/explicit_instantiation.cc
! af0f13620a659f571b4d956d371b6054  libstdc++-v3/testsuite/20_util/from_chars/1.cc
! 19ad9149a46197c6382a99d9a79d98b5  libstdc++-v3/testsuite/20_util/from_chars/1_c++20_neg.cc
! 8247bbb801dfc265428bb3bc267ab00f  libstdc++-v3/testsuite/20_util/from_chars/1_neg.cc
! 89c49517e2b28f3a15790e540b8ad81d  libstdc++-v3/testsuite/20_util/from_chars/2.cc
! 626d7df150b769920cf966d6d69fb4e2  libstdc++-v3/testsuite/20_util/from_chars/3.cc
! 76b8077f55212eb3744c6248e114e9e5  libstdc++-v3/testsuite/20_util/from_chars/4.cc
! cbfd63da3c3eea0d8760cc9a4d2abf02  libstdc++-v3/testsuite/20_util/from_chars/5.cc
! edc476598ef12584a60afa414dcaf273  libstdc++-v3/testsuite/20_util/from_chars/6.cc
  33cb1fba3bfa8508f23e78bc210ae25d  libstdc++-v3/testsuite/20_util/from_chars/7.cc
! 25d279c2c1ee1d3053606f875308f673  libstdc++-v3/testsuite/20_util/from_chars/8.cc
! aef7361eefd7f6eadcb5cab24441258b  libstdc++-v3/testsuite/20_util/from_chars/compare.cc
! bfedf35f43b9f56a0166dd57b6ee536b  libstdc++-v3/testsuite/20_util/from_chars/constexpr.cc
  6772f8cd93ed8ce0eff86720c075a1f3  libstdc++-v3/testsuite/20_util/from_chars/pr105324.cc
! 386268d5d53a11f4d35cbc5ae2361e1a  libstdc++-v3/testsuite/20_util/from_chars/pr107468.cc
! 5307d74181d10d9fc0af1fee2d34c483  libstdc++-v3/testsuite/20_util/from_chars/requirements.cc
! c1b2984a640c5814929feff15ce314a9  libstdc++-v3/testsuite/20_util/function/1.cc
! e161bcd7c3a7f871922130b2766de6a6  libstdc++-v3/testsuite/20_util/function/10.cc
! ecfc29eb7bab1dd03ae79d27cb60687e  libstdc++-v3/testsuite/20_util/function/2.cc
! 3707e9e1921c407dc83f419c608b94b8  libstdc++-v3/testsuite/20_util/function/3.cc
! 3ff9fdb5ac245647d671d766c7dddf5d  libstdc++-v3/testsuite/20_util/function/4.cc
! e30a4cc308b1e0cf4fcdba4df86830c6  libstdc++-v3/testsuite/20_util/function/43397.cc
! b1f57d524d904b6b271aa81c2ee07d1d  libstdc++-v3/testsuite/20_util/function/48541.cc
! 02d9dae205bd1f49f3adce8ef9245eff  libstdc++-v3/testsuite/20_util/function/5.cc
! ea9823893c074bb0273c78f7f72f7378  libstdc++-v3/testsuite/20_util/function/58569.cc
! 99d9255dffd8bd46c09e285bca4befe8  libstdc++-v3/testsuite/20_util/function/6.cc
! ebf1882dba47920d36d7686c9569c22e  libstdc++-v3/testsuite/20_util/function/60594.cc
! 1e21def13fd80c2a1a6895db1e8fe4c9  libstdc++-v3/testsuite/20_util/function/63840.cc
! 1f1f3c146abe6ef6e7aa42d8f23ac531  libstdc++-v3/testsuite/20_util/function/65760.cc
! 8595401ffc790175a3ffeecfb8f83437  libstdc++-v3/testsuite/20_util/function/68995.cc
! c2287df1582ef5fde729ead9cfcfe599  libstdc++-v3/testsuite/20_util/function/69222.cc
! 6657ba48eab20394899e25847c65f92d  libstdc++-v3/testsuite/20_util/function/7.cc
! 75532f475336ce1f3027ea18851ba260  libstdc++-v3/testsuite/20_util/function/77322.cc
! c9671f90f6d48526ce6eb2ea28fb3cd9  libstdc++-v3/testsuite/20_util/function/8.cc
! f6542a9215ae091df3364561540729dd  libstdc++-v3/testsuite/20_util/function/9.cc
! a5afd0360fd51d602cb00d2d6f39125a  libstdc++-v3/testsuite/20_util/function/91456.cc
! 355100886558af76cd5f7904ba579a69  libstdc++-v3/testsuite/20_util/function/assign/move.cc
! 553716348b43ba9a3e76b13ec5a54128  libstdc++-v3/testsuite/20_util/function/assign/move_target.cc
! 91b233cc72ce5add691252270097f64a  libstdc++-v3/testsuite/20_util/function/cmp/cmp_neg.cc
! 58125c1e356020155d231b2639793696  libstdc++-v3/testsuite/20_util/function/cons/55320.cc
! 486b7e51390c040cda33825f6908056d  libstdc++-v3/testsuite/20_util/function/cons/57465.cc
! ca608fcc60b0b1c480c8cea18bc2d21e  libstdc++-v3/testsuite/20_util/function/cons/70692.cc
! 78fc04bb61c4bf2c39ea9d30dde291e5  libstdc++-v3/testsuite/20_util/function/cons/72820.cc
! 495b951e5b068916da471370e1c28368  libstdc++-v3/testsuite/20_util/function/cons/addressof.cc
! 01c1cd5a51b28f0e705aa57464f61ca7  libstdc++-v3/testsuite/20_util/function/cons/callable.cc
! 1ceeb4d5fb780542d9e393b1fce76423  libstdc++-v3/testsuite/20_util/function/cons/deduction.cc
! 9097d21ae1de9a3ac63479d631300163  libstdc++-v3/testsuite/20_util/function/cons/deduction_c++23.cc
! 4b7e7e2f146d54b30a53e58d7a111cf0  libstdc++-v3/testsuite/20_util/function/cons/lwg2774.cc
! 53d0571d6736c7bf6239446d80d48625  libstdc++-v3/testsuite/20_util/function/cons/move.cc
! d7c84f1e3a77109ca29a6987742c65cf  libstdc++-v3/testsuite/20_util/function/cons/move_target.cc
! d2a67a46055d71f856a2cdceb8f3c448  libstdc++-v3/testsuite/20_util/function/cons/noexcept.cc
! 45da90271b3a49e33d5a1ba250eaf3d5  libstdc++-v3/testsuite/20_util/function/cons/non_copyconstructible.cc
! 6d1f8ae87216a7a31a236b84c7a5fa0a  libstdc++-v3/testsuite/20_util/function/cons/refqual.cc
! 0b45880c71145e9376ed9ca3c07ea758  libstdc++-v3/testsuite/20_util/function/invoke/forwarding.cc
! 3bc9bbd9450a5196860e458043769fb5  libstdc++-v3/testsuite/20_util/function/invoke/move_only.cc
! 5092431e2563212d16e0972581f1cae4  libstdc++-v3/testsuite/20_util/function/null_pointer_comparisons.cc
! 82572170167e396f98c9287bdc439901  libstdc++-v3/testsuite/20_util/function/requirements/explicit_instantiation.cc
! 67281ab7b02a4768834d1b51ce65392a  libstdc++-v3/testsuite/20_util/function/target_no_rtti.cc
! 89a0088733449bcd64a4262d98cabb9d  libstdc++-v3/testsuite/20_util/function_objects/83607.cc
! 0bed0fcb04d786dfde39a14bfb059386  libstdc++-v3/testsuite/20_util/function_objects/bind_front/1.cc
! da4ac145d3208e2842a1d7f17f06bb78  libstdc++-v3/testsuite/20_util/function_objects/bind_front/107784.cc
! 2a56f50fd81e52865f63c2730372b3ff  libstdc++-v3/testsuite/20_util/function_objects/bind_front/2.cc
! 1302503df70ed7e15232148ec4443481  libstdc++-v3/testsuite/20_util/function_objects/bind_front/97101.cc
! f5ea450a3cb8223e5ecdd506fb8f42f6  libstdc++-v3/testsuite/20_util/function_objects/bind_front/constexpr.cc
! 7defcd8c1dec1188193098cc09a16396  libstdc++-v3/testsuite/20_util/function_objects/binders/1.cc
! 46d9a90a2f73a75c1a95c028f5d75325  libstdc++-v3/testsuite/20_util/function_objects/binders/3113.cc
! d25750eaf713546fd312b19cbb5f5c53  libstdc++-v3/testsuite/20_util/function_objects/comparisons.cc
! f4c5fc4ca63cbaed5af034552f0e07f6  libstdc++-v3/testsuite/20_util/function_objects/comparisons_pointer.cc
! d4028e3fa77b15d9c0df931af47118ed  libstdc++-v3/testsuite/20_util/function_objects/comparisons_void.cc
! fcd1bb2da17643a12a0fed0eb991ddf2  libstdc++-v3/testsuite/20_util/function_objects/constexpr.cc
! 568a2259d6e3f9af592ba62d94e3041b  libstdc++-v3/testsuite/20_util/function_objects/constexpr_searcher.cc
! 83f5069e60ec0a53d36cc15008d2cf3a  libstdc++-v3/testsuite/20_util/function_objects/dr660.cc
! 0b19eace0a9daef6c83f5f1b95294eff  libstdc++-v3/testsuite/20_util/function_objects/identity/1.cc
! 2472cb1d5054a26796e9f1fa1b9282b7  libstdc++-v3/testsuite/20_util/function_objects/invoke/1.cc
! 64866170b4b8119475e184f4adf12b33  libstdc++-v3/testsuite/20_util/function_objects/invoke/2.cc
! 6d99c39931d9349f79cb0852b7fdd7eb  libstdc++-v3/testsuite/20_util/function_objects/invoke/3.cc
  fd3b33760fbfa3ebd233ea8a3ebd0372  libstdc++-v3/testsuite/20_util/function_objects/invoke/4.cc
! 92050b302c3a7c9945231cec7d4b026a  libstdc++-v3/testsuite/20_util/function_objects/invoke/59768.cc
! 2ecbbbf1beb1488a6cf68631e0fcc115  libstdc++-v3/testsuite/20_util/function_objects/invoke/constexpr.cc
! d06faf4cbacd44cedd87f9241f6fe07c  libstdc++-v3/testsuite/20_util/function_objects/invoke/dangling_ref.cc
! a5d0bb8e9e498420baea1fb09f46bdf4  libstdc++-v3/testsuite/20_util/function_objects/invoke/ref_ext.cc
  c41a9b86fb8d5060d3191e4ba30b6151  libstdc++-v3/testsuite/20_util/function_objects/invoke/version.cc
! 779295b5f5a2047b60156d0b35a44dd3  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55463.cc
! c4f121cbc14344909c19dc20170e40a9  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/55908.cc
! 2b4699b3c41a95b06f41e64d14973274  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/68982.cc
! 22a4a7d03d9f1088c75a80c040410669  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/80478.cc
! 5bf35303e6c89388013c2372b8ca3283  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/adl.cc
! 71af0abbbccbb048b12d7c5a00441d6c  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/constexpr.cc
! cdfd0e81a7aa8390c2b9eb3d61eb9fc8  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/forward.cc
! 614274dc48e1e60fdb27091d7dd4072c  libstdc++-v3/testsuite/20_util/function_objects/mem_fn/refqual.cc
! 483734186a53cd02b8e3b6a5ea10b405  libstdc++-v3/testsuite/20_util/function_objects/not_fn/1.cc
! a33cbe3a0ede126910ff3fa324786d73  libstdc++-v3/testsuite/20_util/function_objects/not_fn/87538.cc
! 71e03cdfc220b85e14f7063890ad732a  libstdc++-v3/testsuite/20_util/function_objects/not_fn/constexpr.cc
! 7a36a7875dbd33eb8a1227fc27d973a4  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/equal_to.cc
! b2edc05b7773239cf962034fa53c7497  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater.cc
! 7b069ee7d2492feaef84fbf5b1e1e530  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/greater_equal.cc
! 000c3a493ee614acec4ea515a140b102  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less.cc
! cc88073bf0bfaab208f6bf09d0b4e94b  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/less_equal.cc
! 3c3d026f2abec94b0b1fb7c8c5fea831  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/lwg3530.cc
! 8073ca3a0fd1c9567714585a07e7abd4  libstdc++-v3/testsuite/20_util/function_objects/range.cmp/not_equal_to.cc
! dbd61b01e999b2bf1b3c85f1e33a094c  libstdc++-v3/testsuite/20_util/function_objects/searchers.cc
! 1664f2ca65d10acee881e92a6049a91f  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/explicit_instantiation.cc
! 2cd4f725118118d527742ea2408b5ce4  libstdc++-v3/testsuite/20_util/has_unique_object_representations/requirements/typedefs.cc
! 81ff8d53e0f76c039701d67be227af78  libstdc++-v3/testsuite/20_util/has_unique_object_representations/value.cc
! 71a7e310c4d54a5f1029b5925b6d3cb5  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/explicit_instantiation.cc
! 39b99331904babbeb52ecb3f7d7609a3  libstdc++-v3/testsuite/20_util/has_virtual_destructor/requirements/typedefs.cc
! 6d83554d602cc67e8e95042959602c86  libstdc++-v3/testsuite/20_util/has_virtual_destructor/value.cc
! 0d6b2d0ffcda6428d6b60f3b02244fb5  libstdc++-v3/testsuite/20_util/hash/52931.cc
! 018c197ceb478ca91bda4408f964b702  libstdc++-v3/testsuite/20_util/hash/60970.cc
! 403c714080badaf9e2b0bc3efb4baccd  libstdc++-v3/testsuite/20_util/hash/84998.cc
! 691fba30446e84baae9fbc2d39ce9a99  libstdc++-v3/testsuite/20_util/hash/89629.cc
! 2512ba8e50e58b5fb11504693059bd11  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_flip_set.cc
! 373e89d0c46aa6d5800e64088ac7023e  libstdc++-v3/testsuite/20_util/hash/chi2_q_bit_string_set.cc
! fdeb5bf2dbdb7880e8de2361104e3647  libstdc++-v3/testsuite/20_util/hash/chi2_q_document_words.cc
! 6484bb1bdf23f984a63fec556d3c13e4  libstdc++-v3/testsuite/20_util/hash/chi2_q_numeric_pattern_set.cc
! 23d7bb6f30cc19c169c58b7dcfdf8fc7  libstdc++-v3/testsuite/20_util/hash/chi2_q_uniform_random.cc
! c04a217654f374ad40d0ac3dae2adc8f  libstdc++-v3/testsuite/20_util/hash/chi2_quality.h
! 096666cd0160334182a0648bb7a33422  libstdc++-v3/testsuite/20_util/hash/nullptr.cc
! 68dd95b42f29da02f91142fcb037893b  libstdc++-v3/testsuite/20_util/hash/operators/size_t.cc
! 33267240d643c2a634e7b05678a087f7  libstdc++-v3/testsuite/20_util/hash/quality.cc
! 42eb3780518af7032cf59cf629f42249  libstdc++-v3/testsuite/20_util/hash/requirements/explicit_instantiation.cc
! ea1f1f006045d1d2d4e556d532ba838c  libstdc++-v3/testsuite/20_util/headers/bitset/synopsis.cc
! 7a79eb9bf902ae31a43f3c3544f03e4b  libstdc++-v3/testsuite/20_util/headers/cstdlib/functions_std.cc
! f53d33b60b018df03fe6f781dc860ac8  libstdc++-v3/testsuite/20_util/headers/cstring/functions_std.cc
! 74d8f2d219c4dea19223dbb900699dc2  libstdc++-v3/testsuite/20_util/headers/cstring/macros.cc
! c44581afe212aa940b02d06ef08ec2f0  libstdc++-v3/testsuite/20_util/headers/cstring/types_std.cc
! b53e8e6ed0483231a827260a31ae9e27  libstdc++-v3/testsuite/20_util/headers/ctime/functions_std.cc
! 25d548728ca65f9850dd5907753f24bb  libstdc++-v3/testsuite/20_util/headers/ctime/macros.cc
! 41f5ebbd1847785e350b23e0b597921d  libstdc++-v3/testsuite/20_util/headers/ctime/types_std.cc
! 5e294d6a2ff17e12baa56fe097bd6a3a  libstdc++-v3/testsuite/20_util/headers/functional/synopsis.cc
! b5b6e8f8f0bdec19eeca50ce36ae020c  libstdc++-v3/testsuite/20_util/headers/functional/types_std_c++0x.cc
! 7a4278794fc267a9589b370b9e10b762  libstdc++-v3/testsuite/20_util/headers/functional/using_namespace_std_placeholders.cc
! e6a14279abe337806ac3640ae177db82  libstdc++-v3/testsuite/20_util/headers/memory/synopsis.cc
! de3538c8c3bc98ec6871e5f9c37bb633  libstdc++-v3/testsuite/20_util/headers/memory/types_std_c++0x.cc
! db4b53dd17ea903ad08b1284a9061d27  libstdc++-v3/testsuite/20_util/headers/type_traits/std_c++0x_neg.cc
! 6fc1290c009d383c295c6240155384da  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x.cc
! cd6c0de49d8ba74a398aeedc2df5c8ff  libstdc++-v3/testsuite/20_util/headers/type_traits/types_std_c++0x_neg.cc
! 12a4162efa1e1a8738db43e42ed91b47  libstdc++-v3/testsuite/20_util/headers/utility/synopsis.cc
! 93094dabe69d9374e3e25af5a0c374a7  libstdc++-v3/testsuite/20_util/headers/utility/using_namespace_std_rel_ops.cc
! de56be54abbea81a2941b950ae4aa324  libstdc++-v3/testsuite/20_util/in_place/requirements.cc
! c43ace53082e261fbc72a7d00ba2c14d  libstdc++-v3/testsuite/20_util/integer_comparisons/1.cc
! 2ed8cd7e741d224c28f7528ac994d3db  libstdc++-v3/testsuite/20_util/integer_comparisons/2.cc
! 7e2c865d9cca8de2096a50700451fdc6  libstdc++-v3/testsuite/20_util/integer_comparisons/equal.cc
! 12c317569e4d8b79c0b4e9513495def4  libstdc++-v3/testsuite/20_util/integer_comparisons/equal_neg.cc
  c6250601e3e7183f7bd3726fdd8c1203  libstdc++-v3/testsuite/20_util/integer_comparisons/greater.cc
! 572e7baf8317cd33034bf7dc0a3645dc  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal.cc
! e024be3ff61e1a643f07e3bd102e85f3  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_equal_neg.cc
! 2a993560b63a87d9b7c9d9a20a8b163c  libstdc++-v3/testsuite/20_util/integer_comparisons/greater_neg.cc
! d35e9f6661359af026ef00ec97b97764  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range.cc
! eda2db9b9d9e52c573f0b0a9c5ccbcd5  libstdc++-v3/testsuite/20_util/integer_comparisons/in_range_neg.cc
! c33347def885b09b147478c2a2276cc1  libstdc++-v3/testsuite/20_util/integer_comparisons/less.cc
! 27a8a53039a0dd121de149386a8e87fe  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal.cc
! a592eb6fd816aac034c9922ae4d29f69  libstdc++-v3/testsuite/20_util/integer_comparisons/less_equal_neg.cc
! 3ae8ca41b35eac2d1f1517093d72db3b  libstdc++-v3/testsuite/20_util/integer_comparisons/less_neg.cc
! b99be92eb0e0d8698ca6bdc364542e6b  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal.cc
! 12c317569e4d8b79c0b4e9513495def4  libstdc++-v3/testsuite/20_util/integer_comparisons/not_equal_neg.cc
! b24e47328645bea855bab51280f4457d  libstdc++-v3/testsuite/20_util/integer_sequence/intseq.cc
! e58ed11f85b333351ada2f2c5246f90c  libstdc++-v3/testsuite/20_util/integer_sequence/requirements/typedefs.cc
! d81fb9bda70e69d23a8ab9fcdcc24d06  libstdc++-v3/testsuite/20_util/integral_constant/call_operator.cc
! a5ab59681cb18d4d742bdd134ba04fd6  libstdc++-v3/testsuite/20_util/integral_constant/operator_value_type.cc
! f0db9cb720b53ae3713016a1fef424ac  libstdc++-v3/testsuite/20_util/integral_constant/requirements/constexpr_data.cc
! 57e737e3e7aa84e93003c51c5d8ff053  libstdc++-v3/testsuite/20_util/integral_constant/requirements/explicit_instantiation.cc
! b6cb05fd5e59720f7c197baab0713a28  libstdc++-v3/testsuite/20_util/integral_constant/requirements/typedefs.cc
! ca48a811b0853b8c662ec84c3f79e446  libstdc++-v3/testsuite/20_util/integral_constant/static_definition.cc
! 9f353cd0f901aff1ac4d0bd0e1e4b39a  libstdc++-v3/testsuite/20_util/integral_constant/true_false_type_typedefs.cc
! 77789753386a7a8d656410988db95f2b  libstdc++-v3/testsuite/20_util/integral_constant/true_false_value.cc
! 4013876e5a95df1e18bf4c18e0f8eb97  libstdc++-v3/testsuite/20_util/invoke_result/incomplete_args_neg.cc
! 0c6513353141f76bdf241d136f759c01  libstdc++-v3/testsuite/20_util/invoke_result/incomplete_neg.cc
! d5710c0ce92f39c9313191b86ae0ded0  libstdc++-v3/testsuite/20_util/is_abstract/incomplete_neg.cc
! 61ca0de2acb94e154784ecdc28ec79ca  libstdc++-v3/testsuite/20_util/is_abstract/requirements/explicit_instantiation.cc
! 00ecf068a962d663426a5380bc6f1fa3  libstdc++-v3/testsuite/20_util/is_abstract/requirements/typedefs.cc
! bc42b9b9bbc4c44f09bdacc3dfc540aa  libstdc++-v3/testsuite/20_util/is_abstract/value.cc
! d52035a9d27c7e73b6d47f88ca9168a8  libstdc++-v3/testsuite/20_util/is_aggregate/incomplete_neg.cc
! ad4b9cd9a46d3104c468a994a1926f12  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/explicit_instantiation.cc
! 7195010bb5a090210d1a8bf7293d3800  libstdc++-v3/testsuite/20_util/is_aggregate/requirements/typedefs.cc
! 10ad80a9fd17edbc46622feefea074fc  libstdc++-v3/testsuite/20_util/is_aggregate/value.cc
! 655258c3118b7b32643bae01a3480ac0  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/explicit_instantiation.cc
! c832af35645412927a3123f88001c472  libstdc++-v3/testsuite/20_util/is_arithmetic/requirements/typedefs.cc
! 7a3d76a4ee9ab43cae5ce8a64a138d3d  libstdc++-v3/testsuite/20_util/is_arithmetic/value.cc
! 0a21ba163a7c2504230e20fa47512746  libstdc++-v3/testsuite/20_util/is_array/requirements/explicit_instantiation.cc
! 2d3ff099768dc91e5b49c21b5b287d04  libstdc++-v3/testsuite/20_util/is_array/requirements/typedefs.cc
! 38a97fa6834b918af3942358e2553bfa  libstdc++-v3/testsuite/20_util/is_array/value.cc
! 6768b922ca72460fc141a677fddef045  libstdc++-v3/testsuite/20_util/is_assignable/requirements/access.cc
! 26c1c9cf38ba10e1c854f1a3a2fd44d3  libstdc++-v3/testsuite/20_util/is_assignable/requirements/explicit_instantiation.cc
! 9a7c0058d019244e6f2b7df279015213  libstdc++-v3/testsuite/20_util/is_assignable/requirements/typedefs.cc
! e70e6f7ddf1b27b91128ee3e5f5abebd  libstdc++-v3/testsuite/20_util/is_assignable/value.cc
! 09bbec0810c466347f5be21b11bd9d22  libstdc++-v3/testsuite/20_util/is_base_of/requirements/explicit_instantiation.cc
! a91315ac30a6edac6efcc2c283528170  libstdc++-v3/testsuite/20_util/is_base_of/requirements/typedefs.cc
! 5e72b1e472e3e8b6792401743fad5442  libstdc++-v3/testsuite/20_util/is_base_of/value.cc
! 673e98cad63398091d6f36ab884def69  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/explicit_instantiation.cc
! b8f745f995abdef40ba0d7b5b171cfd9  libstdc++-v3/testsuite/20_util/is_bounded_array/requirements/typedefs.cc
! 8fd896aa98b6261cc00d76f1d024a39f  libstdc++-v3/testsuite/20_util/is_bounded_array/value.cc
! 65c630374da71facbd16b42f29b665b2  libstdc++-v3/testsuite/20_util/is_class/requirements/explicit_instantiation.cc
! 1747369417e0769c76bd40236ac86e97  libstdc++-v3/testsuite/20_util/is_class/requirements/typedefs.cc
! 396922298d01e8f5d70f816c7a3906e0  libstdc++-v3/testsuite/20_util/is_class/value.cc
! 0e12d2337e86b6f7c1545e18f8b50f07  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization.cc
! dd26f72bcfdcb6201784f89e533e6fbd  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/memoization_neg.cc
! 56de0a29724ee7d93d58039e72d942c3  libstdc++-v3/testsuite/20_util/is_complete_or_unbounded/value.cc
! b2ae652019add5e383a02f218057e5af  libstdc++-v3/testsuite/20_util/is_compound/requirements/explicit_instantiation.cc
! 9e6c58eb7456ff93807979b83f534ed6  libstdc++-v3/testsuite/20_util/is_compound/requirements/typedefs.cc
! 1ef9f79489993cc450f4c53ecdcc5f35  libstdc++-v3/testsuite/20_util/is_compound/value.cc
! f9ba553565164d5d74cd3aa38a3b0fd8  libstdc++-v3/testsuite/20_util/is_const/requirements/explicit_instantiation.cc
! 8d93b6a376d23d47a9eec71c90b06478  libstdc++-v3/testsuite/20_util/is_const/requirements/typedefs.cc
! 81e66b78704e5d69ecbab4d7964cfd60  libstdc++-v3/testsuite/20_util/is_const/value.cc
! 4f4c055b24736d9a22e82f53064958c5  libstdc++-v3/testsuite/20_util/is_constant_evaluated/1.cc
! 696f3f220020047ed0899419a434387e  libstdc++-v3/testsuite/20_util/is_constant_evaluated/noexcept.cc
! adfc24df227966addf9b725b6f19029e  libstdc++-v3/testsuite/20_util/is_constructible/51185.cc
  a5e184714ddd867798fa94c2ebe2c9fe  libstdc++-v3/testsuite/20_util/is_constructible/68430.cc
! 5a9be4ddcdd1f0d30038865b82b10636  libstdc++-v3/testsuite/20_util/is_constructible/77395.cc
! 6bb1b320bd6891352b2b65809cccd480  libstdc++-v3/testsuite/20_util/is_constructible/80812.cc
! 796789d20f92917ca4ec32df35ddfcec  libstdc++-v3/testsuite/20_util/is_constructible/92878_92947.cc
! b8a67902d1bcac72a6104e09ce8dd459  libstdc++-v3/testsuite/20_util/is_constructible/94003.cc
! f5d03e12f4aa0199d4e28c2c95c2bd67  libstdc++-v3/testsuite/20_util/is_constructible/requirements/explicit_instantiation.cc
! 3c8a1a21f8212a66155f3de9e8867841  libstdc++-v3/testsuite/20_util/is_constructible/requirements/typedefs.cc
! 4662d161cd06e7dbb224bebd0b589be3  libstdc++-v3/testsuite/20_util/is_constructible/value-2.cc
! 30a16b099c46cb89a5bfcdffe1aa8745  libstdc++-v3/testsuite/20_util/is_constructible/value.cc
! 09d897b8e5e8f52ce748db0bdf75aa0e  libstdc++-v3/testsuite/20_util/is_convertible/requirements/access.cc
! 882335020441320bd49212849ac36a31  libstdc++-v3/testsuite/20_util/is_convertible/requirements/explicit_instantiation.cc
! f602ea3907ba6ef705e8861e67a720ad  libstdc++-v3/testsuite/20_util/is_convertible/requirements/typedefs.cc
! 36b9817db6cf8e80b6c4a6562274c59c  libstdc++-v3/testsuite/20_util/is_convertible/value.cc
! 3dd9a28d0df1669d136cfd822b43a870  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/explicit_instantiation.cc
! 4dab049c028259e79abe65bb49c2e8ae  libstdc++-v3/testsuite/20_util/is_copy_assignable/requirements/typedefs.cc
! ed025d63c68cfea61621d5691599754b  libstdc++-v3/testsuite/20_util/is_copy_assignable/value.cc
! 1bd38ef44c7de54bdde5eabd920ec8b8  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/explicit_instantiation.cc
! d4b22bbba5931138e30581f578213fa8  libstdc++-v3/testsuite/20_util/is_copy_constructible/requirements/typedefs.cc
! c4ffcacf182a1d7a816ae817ac7adcdf  libstdc++-v3/testsuite/20_util/is_copy_constructible/value.cc
! 05b51c2a10e7467de52b6d7e6333809b  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/explicit_instantiation.cc
! 4d21eaff3c95a2e5216fbe84649e8032  libstdc++-v3/testsuite/20_util/is_default_constructible/requirements/typedefs.cc
! 3fdc38cbe09030e596b459084fe180ee  libstdc++-v3/testsuite/20_util/is_default_constructible/value.cc
! dd843a61ef8998c1ecb3f2567d9137af  libstdc++-v3/testsuite/20_util/is_destructible/requirements/explicit_instantiation.cc
! a692a42fe857cf15c9c594003965094b  libstdc++-v3/testsuite/20_util/is_destructible/requirements/typedefs.cc
! b6ac913bb1dc60af2e9b7b323975747c  libstdc++-v3/testsuite/20_util/is_destructible/value.cc
! 877e71e837c26d255e720374358c0103  libstdc++-v3/testsuite/20_util/is_empty/incomplete_neg.cc
! f5e88388a2aaeffed2679574a8fa2743  libstdc++-v3/testsuite/20_util/is_empty/requirements/explicit_instantiation.cc
! a4fefe52206391120a98b1c5d36a1282  libstdc++-v3/testsuite/20_util/is_empty/requirements/typedefs.cc
! 309331954e1aeeee50f7c23ec284d3f5  libstdc++-v3/testsuite/20_util/is_empty/value.cc
! 70c80b636ee2afb4a80277397dc3d1ea  libstdc++-v3/testsuite/20_util/is_enum/requirements/explicit_instantiation.cc
! 9b2d67c5b12222aed8a2efbe1c17447c  libstdc++-v3/testsuite/20_util/is_enum/requirements/typedefs.cc
! 7ed1e1e76cbf3c298f5a9b25e150a40d  libstdc++-v3/testsuite/20_util/is_enum/value.cc
! 7a5967f5ec44b8ab2a649d0ee214f9fb  libstdc++-v3/testsuite/20_util/is_final/incomplete_neg.cc
! f69107141eb0243c03b13cb9bb800810  libstdc++-v3/testsuite/20_util/is_final/requirements/explicit_instantiation.cc
! d5ecce4a6ebc0781fe75a0606b051ac5  libstdc++-v3/testsuite/20_util/is_final/requirements/typedefs.cc
! 80953f943bfef6e33dda7b5e78623c86  libstdc++-v3/testsuite/20_util/is_final/value.cc
! f156d332b420feed4f8127f4378c511f  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/explicit_instantiation.cc
! bfa2e3d570f8ae6ad27768329e045411  libstdc++-v3/testsuite/20_util/is_floating_point/requirements/typedefs.cc
! 0fc6e00cdddacab0c6a04a930afafbf2  libstdc++-v3/testsuite/20_util/is_floating_point/value.cc
! 506cabc4627c1864d662aed972ced18d  libstdc++-v3/testsuite/20_util/is_function/24808.cc
! e0ceea8f42efef357074e97eac68138b  libstdc++-v3/testsuite/20_util/is_function/35637.cc
! fa669058f52b9f29944af57e0b480d77  libstdc++-v3/testsuite/20_util/is_function/91371.cc
! 731c13058f12a38df33555301bfa6cb3  libstdc++-v3/testsuite/20_util/is_function/requirements/explicit_instantiation.cc
! a1f4f327730ce340b028f912be7de785  libstdc++-v3/testsuite/20_util/is_function/requirements/typedefs.cc
! 3f1d167a1ae1ddfa8f17ac462319422b  libstdc++-v3/testsuite/20_util/is_function/value.cc
! e7a30597807ea9a3aff47ed42b365481  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/explicit_instantiation.cc
! 4ce68978b980cb2d9d45ee15eca402a9  libstdc++-v3/testsuite/20_util/is_fundamental/requirements/typedefs.cc
! 39e22f5b2fb281ee27f193674c139d20  libstdc++-v3/testsuite/20_util/is_fundamental/value.cc
! dbef74088600e43a4afb9f97e78d9953  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/explicit_instantiation.cc
! ccfd958919f089b59432dccd3b8dcd30  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/requirements/typedefs.cc
! 9d38c733384d805fcf3950c88788491e  libstdc++-v3/testsuite/20_util/is_implicitly_default_constructible/value.cc
! 3476dc7546aeb388af8dc855043907ae  libstdc++-v3/testsuite/20_util/is_integral/requirements/explicit_instantiation.cc
! 7c57d31fc4d386644e79032219c2e86e  libstdc++-v3/testsuite/20_util/is_integral/requirements/typedefs.cc
! 024099d96303f94bcf1f32e59d4ed941  libstdc++-v3/testsuite/20_util/is_integral/value.cc
! 29c45f45a8ba964015eb09da4098fca2  libstdc++-v3/testsuite/20_util/is_invocable/83395.cc
! 5eb514e695addd88550019ee56cd53db  libstdc++-v3/testsuite/20_util/is_invocable/91456.cc
! 15e39483dc403920d82c01777fcbfd43  libstdc++-v3/testsuite/20_util/is_invocable/dangling_ref.cc
! a3e5d5b6a48db9a2ed3a9f4566ac8563  libstdc++-v3/testsuite/20_util/is_invocable/incomplete_args_neg.cc
! 531498f2564ae10234811d3d356dbd69  libstdc++-v3/testsuite/20_util/is_invocable/incomplete_neg.cc
! 6ee9abebc23beeec6b0f4ec0fb5b22b0  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation.cc
! 266aab9e39ae6e6897246847e721ddce  libstdc++-v3/testsuite/20_util/is_invocable/requirements/explicit_instantiation_ext.cc
! fb71e6c06283024d0140678619adf171  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs.cc
! 288be130da9d715fc6f8239177d25067  libstdc++-v3/testsuite/20_util/is_invocable/requirements/typedefs_ext.cc
! e781eae02373e2f268bb3d6da14dd487  libstdc++-v3/testsuite/20_util/is_invocable/value.cc
! c79fd0836f59e3e77da92401bc665276  libstdc++-v3/testsuite/20_util/is_invocable/value_ext.cc
  843b0fa9f5021ba82bde4802ddebc754  libstdc++-v3/testsuite/20_util/is_layout_compatible/is_corresponding_member.cc
  ce6b607369dfd0496ef93c6da8cc6775  libstdc++-v3/testsuite/20_util/is_layout_compatible/value.cc
  ea3697d742d06b8a6935bb79b5249f62  libstdc++-v3/testsuite/20_util/is_layout_compatible/version.cc
! ac9e9b0f4f35b831eb3e76bb0f61aa40  libstdc++-v3/testsuite/20_util/is_literal_type/deprecated-1z.cc
! f2573f23a951473e158bd2284a0bea83  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/explicit_instantiation.cc
! 5f3a8da09b81f493f47736395854f09c  libstdc++-v3/testsuite/20_util/is_literal_type/requirements/typedefs.cc
! 127777538f1a6e73846e8c0425cea0d6  libstdc++-v3/testsuite/20_util/is_literal_type/value.cc
! 5e22c0a8c626e98010dcba3b3963b318  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/explicit_instantiation.cc
! 61409d85d68ef62b00c136cdca04406c  libstdc++-v3/testsuite/20_util/is_lvalue_reference/requirements/typedefs.cc
! 8f06febc61f96118dd4338646867939d  libstdc++-v3/testsuite/20_util/is_lvalue_reference/value.cc
! 04fd1d498c86efc67ac719ed91dba400  libstdc++-v3/testsuite/20_util/is_member_function_pointer/91371.cc
! 7102a6c83e9e346a80e8ae40b6b9595f  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/explicit_instantiation.cc
! 50e82f95b925f071426c41c186b00fbb  libstdc++-v3/testsuite/20_util/is_member_function_pointer/requirements/typedefs.cc
! 5e681b961c420e9d4a374c6d3d748537  libstdc++-v3/testsuite/20_util/is_member_function_pointer/value.cc
! 998ce86e4dfd57af0e58e9d08b546e6b  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/explicit_instantiation.cc
! 056d2b541423bf0be5959780e4ff8b25  libstdc++-v3/testsuite/20_util/is_member_object_pointer/requirements/typedefs.cc
! 262c01d8a8f3a2f41ec0d2170f6fd42e  libstdc++-v3/testsuite/20_util/is_member_object_pointer/value.cc
! 34267ba4db9f33790f26f8560750af16  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/explicit_instantiation.cc
! 0a30d234ae1ca121a4046a9f9478a713  libstdc++-v3/testsuite/20_util/is_member_pointer/requirements/typedefs.cc
! 56b013fdc3962b0a1cc5b033f0396bbd  libstdc++-v3/testsuite/20_util/is_member_pointer/value.cc
! f2c9cd33419d5329eaae71911c09cde1  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/explicit_instantiation.cc
! 4cabb1274437cf44cea85eaaf433d6d2  libstdc++-v3/testsuite/20_util/is_move_assignable/requirements/typedefs.cc
! a8dc0d0b9c028850da00672b36f44140  libstdc++-v3/testsuite/20_util/is_move_assignable/value.cc
! a3d3d1c53ac84d278757b407e8f53836  libstdc++-v3/testsuite/20_util/is_move_constructible/incomplete_neg.cc
! 222ce45f53268923d4bc8c6cabf9c291  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/explicit_instantiation.cc
! f016bcc874c3edb3b1404f3b5bbf9459  libstdc++-v3/testsuite/20_util/is_move_constructible/requirements/typedefs.cc
! 4bea63701d3f5df1feb80ab79136bd02  libstdc++-v3/testsuite/20_util/is_move_constructible/value.cc
! 713caabdfe6d6fe77c7cec6c468249a3  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/explicit_instantiation.cc
! 3a8bfed48ffd62078ee8042b076ee3e1  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/requirements/typedefs.cc
! 1b75479d1b0a7dc9be8af95e89355b8b  libstdc++-v3/testsuite/20_util/is_nothrow_assignable/value.cc
! 20e329931a29c37bff619b8d45c06dd7  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/94003.cc
! 73fc16615e2d3b5033b5fcd778610159  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/explicit_instantiation.cc
! 724bfe58157298405686d51f085645c5  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/requirements/typedefs.cc
! 3cf595636b646f3d3b366be2de888d58  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value.cc
! c3c2a57129ed693f47752239b080b0c0  libstdc++-v3/testsuite/20_util/is_nothrow_constructible/value_c++20.cc
! b2662970815bfedce1b260073fed72f2  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/explicit_instantiation.cc
! 1565ffce6f5e17ddb890c7dfb42d5cec  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/requirements/typedefs.cc
! 4cb86dc73ad0056bd93ff7ddfa084989  libstdc++-v3/testsuite/20_util/is_nothrow_convertible/value.cc
! 89b13db935862cf7453cac55a4905d2b  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/explicit_instantiation.cc
! 662ebb68ae3b4a4b4b1ae3c57df294b6  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/requirements/typedefs.cc
! d1503e54d12df770bdd2f2183f57c4d3  libstdc++-v3/testsuite/20_util/is_nothrow_copy_assignable/value.cc
! 5d98ca76e67b8408b3ede4caf7b2bd32  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/explicit_instantiation.cc
! fe3fd3788a458690ff4a2b44c0b57eb5  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/requirements/typedefs.cc
! 18ddce98625e9788e35dd69ac464f567  libstdc++-v3/testsuite/20_util/is_nothrow_copy_constructible/value.cc
! 84ba6ae1e5709c63ac484e5b7fa4f0f2  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/explicit_instantiation.cc
! e68d8396ea96985a27404f1beba132af  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/requirements/typedefs.cc
! 222fad9ebd2749eef70e7087c17bdd65  libstdc++-v3/testsuite/20_util/is_nothrow_default_constructible/value.cc
! e51f386cf057b24798409b36467a6ba6  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/explicit_instantiation.cc
! 6e3117738de60d864ba1981eb1e435da  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/requirements/typedefs.cc
! cdc02e6a7a48f38b0681ddf6cca2572c  libstdc++-v3/testsuite/20_util/is_nothrow_destructible/value.cc
! e046b70ccdedbfd243ee693d22ac51ad  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/83395.cc
! cd692f9bdf1291a75e1c483453d7c526  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/91456.cc
! 08c3b9a6cf6b71af01a92c3b11340ae8  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_args_neg.cc
! bcba15bb7fb152816fc33a51ff5ca84b  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/incomplete_neg.cc
! d2e7c1af468c3352bc872bb10158f572  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation.cc
! 7a83cd846e70ff4a43d4efc17a99f5ff  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/explicit_instantiation_ext.cc
! 42cefd119acf5a13252074aedf8e7f50  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs.cc
! 4276a5df89b2a1fc499d30f815cfeb3d  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/requirements/typedefs_ext.cc
! db1721c39565ae05dc2989a5a795eec5  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value.cc
! 56cf923ee4c97d2a501931e70933239a  libstdc++-v3/testsuite/20_util/is_nothrow_invocable/value_ext.cc
! 1d6ddd91802af2c557dbb1d5e8860873  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/incomplete_neg.cc
! 08c50663c383e323a3c66b4810fa7df0  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/explicit_instantiation.cc
! 870d5fa1940fabfc3c3fab8c9fa4670f  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/requirements/typedefs.cc
! ecb2d251a785a4fcd7c46e61b2636e4b  libstdc++-v3/testsuite/20_util/is_nothrow_move_assignable/value.cc
! e414fb6ffd8dc7c95d0d40caae2efe49  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/explicit_instantiation.cc
! 029ffb065ad88357480c6b8f76ccfafd  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/requirements/typedefs.cc
! 2d858e7d95ce97932c39bb7f7d432426  libstdc++-v3/testsuite/20_util/is_nothrow_move_constructible/value.cc
! e18c6918293d39b413c666444282e407  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/incomplete_neg.cc
! 4563869ac5eab4e7ee4b5e6b39ecaa03  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation.cc
! 6f2a487d8bf41dc53c844f2757aa964a  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/explicit_instantiation_ext.cc
! bc9d499fab1e59f4601a152210610519  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs.cc
! 7aeeb73b0388a6fb841f1bdc958ab094  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/requirements/typedefs_ext.cc
! 95fccfc3103f125fbfd7a3da7ad42fe9  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.cc
! e99af67f2585abb67a6baa5688bac870  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value.h
! 42a8d21ede3ba71d37533c9e17b21855  libstdc++-v3/testsuite/20_util/is_nothrow_swappable/value_ext.cc
! c1a234ff9d635275c3055f2aeea1668e  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/incomplete_neg.cc
! 17aecd3c83182a0f6fdc7f566b0ec83d  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/explicit_instantiation.cc
! 2e49d5d88ccb26d69680704463b7c4ab  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/requirements/typedefs.cc
! c6a2af24a1ea3e8d28ec54c991bac24f  libstdc++-v3/testsuite/20_util/is_nothrow_swappable_with/value.cc
! c887ad59d62d27af58602000ad5a5a0f  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/explicit_instantiation.cc
! 833fd4c6c6bb1837dfef545718c18eaa  libstdc++-v3/testsuite/20_util/is_null_pointer/requirements/typedefs.cc
! 40e1c26a003f0aafe98a64e933b7d801  libstdc++-v3/testsuite/20_util/is_null_pointer/value.cc
! 0b92586271f2bd6e84a65c0f2eaa9f08  libstdc++-v3/testsuite/20_util/is_object/24808.cc
! b0dd2378afc15117f72206266d46f4ce  libstdc++-v3/testsuite/20_util/is_object/91371.cc
! 962bcbd1518291c7367652bd7d797870  libstdc++-v3/testsuite/20_util/is_object/requirements/explicit_instantiation.cc
! 51804ef71469db7420e41bcdade32233  libstdc++-v3/testsuite/20_util/is_object/requirements/typedefs.cc
! c900ee83aa5abaf24ba6ffdf481c891c  libstdc++-v3/testsuite/20_util/is_object/value.cc
! 2c52a736562b2f9143ab2a386708b7be  libstdc++-v3/testsuite/20_util/is_pod/deprecated-2a.cc
! 1e59acb08d73f5f414db0c62f14733d2  libstdc++-v3/testsuite/20_util/is_pod/requirements/explicit_instantiation.cc
! 8a9109f4e27d17ff2af7339c817bd920  libstdc++-v3/testsuite/20_util/is_pod/requirements/typedefs.cc
! 2a3e13dbd8e96d656bfcce7ab6577cd6  libstdc++-v3/testsuite/20_util/is_pod/value.cc
! f89066cd7ffb9e917f1700bbd8d97b52  libstdc++-v3/testsuite/20_util/is_pointer/requirements/explicit_instantiation.cc
! 755402e202bebd81cc9ba1c197a6b671  libstdc++-v3/testsuite/20_util/is_pointer/value.cc
  1311eb3e79c008b4f5aefa55f0640c39  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/value.cc
  d22a6be6a4a98d7bc8d0c9825a73698f  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/version.cc
  ffdb77710f31b58e88ff6a2dac113bd0  libstdc++-v3/testsuite/20_util/is_pointer_interconvertible/with_class.cc
! 9afbdeb701bc38465a3cb1566545735b  libstdc++-v3/testsuite/20_util/is_polymorphic/incomplete_neg.cc
! 28e01287fe5a83b4f0e69927f4538764  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/explicit_instantiation.cc
! d63b2d73c5baf76addda504b458459fc  libstdc++-v3/testsuite/20_util/is_polymorphic/requirements/typedefs.cc
! 8b6e93a519a41cd315cb17a5e9227b60  libstdc++-v3/testsuite/20_util/is_polymorphic/value.cc
! 904f91603fff9a87a641b8225268bef7  libstdc++-v3/testsuite/20_util/is_reference/requirements/explicit_instantiation.cc
! 731233ccd54059ccbf9a8fa8511a6151  libstdc++-v3/testsuite/20_util/is_reference/requirements/typedefs.cc
! 047e2f38f6060cbc2f73b7fd49f5825c  libstdc++-v3/testsuite/20_util/is_reference/value.cc
! 6b4e773b86707cbb3a2f9da55aa820e9  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/explicit_instantiation.cc
! bb9c50cf73dd213ca26a8ac5b93e69a2  libstdc++-v3/testsuite/20_util/is_rvalue_reference/requirements/typedefs.cc
! a1667dce2472f0070942cd9b7fb79b86  libstdc++-v3/testsuite/20_util/is_rvalue_reference/value.cc
! 7ee3dcf656c8a2b4fd89209bec7826a3  libstdc++-v3/testsuite/20_util/is_same/requirements/explicit_instantiation.cc
! dc6b9f1e6099e7518cb5eec423825f7f  libstdc++-v3/testsuite/20_util/is_same/requirements/typedefs.cc
! 64ce3aa97054e997ea822c50e57d15b8  libstdc++-v3/testsuite/20_util/is_same/value.cc
! b930671c942e661f3ff2612e1b54c116  libstdc++-v3/testsuite/20_util/is_scalar/requirements/explicit_instantiation.cc
! 581c96fd91268dc215231bf4b8aeeb8b  libstdc++-v3/testsuite/20_util/is_scalar/requirements/typedefs.cc
! c37ef7407b4b449b0ce605a3e9a9edaf  libstdc++-v3/testsuite/20_util/is_scalar/value.cc
! a43f7c1fe7ff651e9c8696af66ffa7c2  libstdc++-v3/testsuite/20_util/is_scoped_enum/value.cc
! 9faa70923da835c24c8ea2d0250d9bb5  libstdc++-v3/testsuite/20_util/is_scoped_enum/version.cc
! 4f5e1b593ecd0d16ce0b12af4735110d  libstdc++-v3/testsuite/20_util/is_signed/requirements/explicit_instantiation.cc
! a6cce005ea982901d7c4cecf22aa02c0  libstdc++-v3/testsuite/20_util/is_signed/requirements/typedefs.cc
! bb8f23df914d6857678cd09bc0079e7b  libstdc++-v3/testsuite/20_util/is_signed/value.cc
! 2d7f08254f75f4ef2e5e7d50ec783715  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/explicit_instantiation.cc
! 9867a521f3034d137b6d94af22c449ae  libstdc++-v3/testsuite/20_util/is_standard_layout/requiremenents/typedefs.cc
! b37ee951162b2bf58cc3e58748be05a8  libstdc++-v3/testsuite/20_util/is_standard_layout/value.cc
! 49b765f0297be027f15a8e8c9b46e23b  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation.cc
! 8f7ac6bd83dfc42a321d4656dbbe1679  libstdc++-v3/testsuite/20_util/is_swappable/requirements/explicit_instantiation_ext.cc
! 685e713d359e206e14ff56c77f7b630c  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs.cc
! af1021a9b5d3cc16166754d63c333059  libstdc++-v3/testsuite/20_util/is_swappable/requirements/typedefs_ext.cc
! 8854c484d00c9ee12d7dd178fa83911d  libstdc++-v3/testsuite/20_util/is_swappable/value.cc
! ec990c0e5307ab37128ed579616bd1d4  libstdc++-v3/testsuite/20_util/is_swappable/value.h
! 449fcc5ca0388adbc2d53f747f61eb38  libstdc++-v3/testsuite/20_util/is_swappable/value_ext.cc
! f90ba09b2e7c7a164079b0dd6515a175  libstdc++-v3/testsuite/20_util/is_swappable_with/incomplete_neg.cc
! b9a5e78ab7614f548f80a0b769c64a7d  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/explicit_instantiation.cc
! 5e428466e616e469835bdf2131a507da  libstdc++-v3/testsuite/20_util/is_swappable_with/requirements/typedefs.cc
! 5b2545905f2f18481622a5f4ab0a4d34  libstdc++-v3/testsuite/20_util/is_swappable_with/value.cc
! 5b087fd84d4a642dfb8cea5e7add703e  libstdc++-v3/testsuite/20_util/is_trivial/requirements/explicit_instantiation.cc
! b44ac30bd9809d3c12579dfea7b5346a  libstdc++-v3/testsuite/20_util/is_trivial/requirements/typedefs.cc
! a8feb56508a71d7328129be1e0f3e512  libstdc++-v3/testsuite/20_util/is_trivial/value.cc
! 032503a3fff66ed0382c5c78e06b5eb3  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/explicit_instantiation.cc
! ed18ff42dce40d503e2286979f5bfb56  libstdc++-v3/testsuite/20_util/is_trivially_assignable/requirements/typedefs.cc
! f18737d7abd754239121a052f2c29628  libstdc++-v3/testsuite/20_util/is_trivially_assignable/value.cc
! bc070241ea78e312297cbd3352bd8160  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/explicit_instantiation.cc
! e6ca1e5b916b29a275d01a8ca5ed9551  libstdc++-v3/testsuite/20_util/is_trivially_constructible/requirements/typedefs.cc
! 918bece53e1cfddb7e5c604154dcda5b  libstdc++-v3/testsuite/20_util/is_trivially_constructible/value.cc
! 6a4a685c33e67a3783572a96982f7c21  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/explicit_instantiation.cc
! 88a90c8c09f0cff1ecdcba33d15495e7  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/requirements/typedefs.cc
! 5d8602f84a5bcf8aef68110bfdb3a8a3  libstdc++-v3/testsuite/20_util/is_trivially_copy_assignable/value.cc
! 7e6b37c73dadb5c01f6983aa0895fa2e  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/explicit_instantiation.cc
! e1c376ed926077d70d093d637a52bb38  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/requirements/typedefs.cc
! 7b9875961249c0c9e88b381a39a53974  libstdc++-v3/testsuite/20_util/is_trivially_copy_constructible/value.cc
! a438621fef11b7b387e0e23cef00d530  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/explicit_instantiation.cc
! b0773b2797b8cd94cd872066875de333  libstdc++-v3/testsuite/20_util/is_trivially_copyable/requirements/typedefs.cc
! 55a7b89a4741273e7f7f813b663e63eb  libstdc++-v3/testsuite/20_util/is_trivially_copyable/value.cc
! c32af46825ec7ba351b4e3cb721307e9  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/explicit_instantiation.cc
! e402ba801441988e11b4767b3e65ff1b  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/requirements/typedefs.cc
! 1845c97ef64779568582d5746d6af514  libstdc++-v3/testsuite/20_util/is_trivially_default_constructible/value.cc
! e5307516d4167e27321535ab021851cf  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/explicit_instantiation.cc
! 49040006c4ced197b219335b179e5aeb  libstdc++-v3/testsuite/20_util/is_trivially_destructible/requirements/typedefs.cc
! 86f30ace42213f0a0f04e0b152dfe536  libstdc++-v3/testsuite/20_util/is_trivially_destructible/value.cc
! 22b3d5c19cf146ea58b3e6865cfe67df  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/explicit_instantiation.cc
! 5343f5a711e06c8892cc858cf70cfd13  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/requirements/typedefs.cc
! 865aba6960a9bd3dea5c9feb6e713e6b  libstdc++-v3/testsuite/20_util/is_trivially_move_assignable/value.cc
! 805597debb13def51c09d4c2102ffe61  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/explicit_instantiation.cc
! a1cbcb4c14120fdcc7951f370248da0f  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/requirements/typedefs.cc
! 1585e94bc033160feb9c52ca19d93025  libstdc++-v3/testsuite/20_util/is_trivially_move_constructible/value.cc
! ab7c9bf7a359e95c165f37a0fe24641c  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/explicit_instantiation.cc
! b8f745f995abdef40ba0d7b5b171cfd9  libstdc++-v3/testsuite/20_util/is_unbounded_array/requirements/typedefs.cc
! 36400484122bb9d340c6b604f17309e3  libstdc++-v3/testsuite/20_util/is_unbounded_array/value.cc
! ca6b6368e5258a2a8810509445ec3ab7  libstdc++-v3/testsuite/20_util/is_union/requirements/explicit_instantiation.cc
! 7c0feb1d8c092333cbca5ad9e1fc0ce2  libstdc++-v3/testsuite/20_util/is_union/requirements/typedefs.cc
! 73e66922cfb777f6b0c2b1279380dcd0  libstdc++-v3/testsuite/20_util/is_union/value.cc
! 942c65dd36314b9ed83834ac44e87cbd  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/explicit_instantiation.cc
! 7473cdee5da6be200c92d469c4872461  libstdc++-v3/testsuite/20_util/is_unsigned/requirements/typedefs.cc
! 35bb35a39b5be5155e565b14d0e711de  libstdc++-v3/testsuite/20_util/is_unsigned/value.cc
! 2ba3b71fc926b735b19179449982965f  libstdc++-v3/testsuite/20_util/is_void/requirements/explicit_instantiation.cc
! 859c88de83a713ba853cc27fd3ef1def  libstdc++-v3/testsuite/20_util/is_void/requirements/typedefs.cc
! 2ac334d899b67089f95bad3fa1abbfd6  libstdc++-v3/testsuite/20_util/is_void/value.cc
! a32ffcdc310fe613f0254d9569e243de  libstdc++-v3/testsuite/20_util/is_volatile/requirements/explicit_instantiation.cc
! 72e8782846f61370c51bd22169b0adc8  libstdc++-v3/testsuite/20_util/is_volatile/requirements/typedefs.cc
! d01e019cf7b38466349f31c0f6b2aa86  libstdc++-v3/testsuite/20_util/is_volatile/value.cc
! bbcb0551dcfa57678ca7b7830bcb54d6  libstdc++-v3/testsuite/20_util/logical_traits/83134.cc
! 6f771d4e7b8b937d187f18a61f28fd4a  libstdc++-v3/testsuite/20_util/logical_traits/requirements/base_classes.cc
! 228e247fa9232f95e8195b727983b1ad  libstdc++-v3/testsuite/20_util/logical_traits/requirements/explicit_instantiation.cc
! 119b399190409df0e8ccdcf9b10c3e35  libstdc++-v3/testsuite/20_util/logical_traits/requirements/short_circuit.cc
! d0d245d3b8eb6653dfba1f5c7fd9867a  libstdc++-v3/testsuite/20_util/logical_traits/requirements/typedefs.cc
! a434424f0b210cd01a6bdc5986d18216  libstdc++-v3/testsuite/20_util/logical_traits/value.cc
! c293ca4f1296ddc96b0a01d57e0a3d99  libstdc++-v3/testsuite/20_util/make_signed/requirements/alias_decl.cc
! 10f34ffdb8a3e667fccc7f4cbc37dbc2  libstdc++-v3/testsuite/20_util/make_signed/requirements/explicit_instantiation.cc
! 9a56824efc7cca5e4975f1802ff7905d  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-1.cc
! f5032c9433652cb5722a356ce34ce29d  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-2.cc
! 2bcc5594830c8bbad65190b8765213e1  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-3.cc
! a1d7f3c9f5b504ff5274fa0a7e0c98f1  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs-4.cc
! c0d826b2894f482f2e5af1dc96d1494c  libstdc++-v3/testsuite/20_util/make_signed/requirements/typedefs_neg.cc
! 8f0db74dad9a1b305718ac6e066eedf2  libstdc++-v3/testsuite/20_util/make_signed/requirements/uninstantiated.cc
! f920dfa3617e2104216dcaf09a3304cd  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/alias_decl.cc
! ac016ec6162511499a49b549645834ca  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/explicit_instantiation.cc
! 28b8817d610269f4a89d1d6efc1f1595  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-1.cc
! e933cfb446ba32c2675232b91b36e602  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-2.cc
! 8080c9861ba6148693b6286381ed0a53  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs-3.cc
! ddb7cf7831fab931b6554962c4377755  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/typedefs_neg.cc
! a8e73ef02c8dd2e09fa65d0cba094035  libstdc++-v3/testsuite/20_util/make_unsigned/requirements/uninstantiated.cc
! 89bce63ae339dee3dccfa3980fe06ab1  libstdc++-v3/testsuite/20_util/memory_resource/1.cc
! cc085eaedbc70ae6368df0302c23c49d  libstdc++-v3/testsuite/20_util/memory_resource/2.cc
! b93c91954e8fb21b2e2bcc9bfef05673  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/1.cc
! 95e23a157d5f569d38ea7e536b02c780  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/93208.cc
! 98e50f12dfaa82dce5c8fba299758092  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/allocate.cc
! c15600a21fa843a5a6c9f690510d2863  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/deallocate.cc
! 3c1f4462ea2adbd0fbc74b99331f33e5  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/release.cc
! fa78df06bab619d8d25a03f417309cac  libstdc++-v3/testsuite/20_util/monotonic_buffer_resource/upstream_resource.cc
! 80ccbc9c2d26a870f02828906e41c929  libstdc++-v3/testsuite/20_util/move/1.cc
! 75d0bc318f89664fe31268986ee05e45  libstdc++-v3/testsuite/20_util/move/requirements/explicit_instantiation.cc
! f61d7a897d81dfcb17694f112a79a09f  libstdc++-v3/testsuite/20_util/move_if_noexcept/1.cc
! c4ed2246fd2924e6641fa20e55f7b9fe  libstdc++-v3/testsuite/20_util/move_if_noexcept/constexpr.cc
! 29ebb398259c05e3f2e090de8b772d77  libstdc++-v3/testsuite/20_util/move_if_noexcept/requirements/explicit_instantiation.cc
! 0e72a1d5992e7d812b558b14e8d58c36  libstdc++-v3/testsuite/20_util/move_only_function/call.cc
! 2e0dbc6d04a6b5866af283b9f8b5ad37  libstdc++-v3/testsuite/20_util/move_only_function/cons.cc
! 63fd70cd06fee042415b610d373d938b  libstdc++-v3/testsuite/20_util/move_only_function/move.cc
! ad5c04994549745a1219c6fae61aba7f  libstdc++-v3/testsuite/20_util/move_only_function/version.cc
! 3f57596357d794cac9e18678efde2470  libstdc++-v3/testsuite/20_util/nonesuch/nonesuch.cc
! 64cbecefa85e273dfc84993b590ca809  libstdc++-v3/testsuite/20_util/optional/77288.cc
  f669af40876c317318f47db8330b7058  libstdc++-v3/testsuite/20_util/optional/84601.cc
! 334172140046d78b82a7d727b9d3dcec  libstdc++-v3/testsuite/20_util/optional/assignment/1.cc
  5f2a36dc053d6d68a81135df84e7f4cb  libstdc++-v3/testsuite/20_util/optional/assignment/100982.cc
! 9be33c1890244938a3f5ada1d1008258  libstdc++-v3/testsuite/20_util/optional/assignment/2.cc
! 081e6842ed53525f1a1ff67e6189a543  libstdc++-v3/testsuite/20_util/optional/assignment/3.cc
! d1708261a8f90fbdaacce288dc47e495  libstdc++-v3/testsuite/20_util/optional/assignment/4.cc
! 5f91c1d18604c1c308c8dd00a50bcb22  libstdc++-v3/testsuite/20_util/optional/assignment/5.cc
! 7ab0dfd9d1a150128838cb0df5ce278d  libstdc++-v3/testsuite/20_util/optional/assignment/6.cc
! 6ae4f964964286194efc59dc83b2cd77  libstdc++-v3/testsuite/20_util/optional/assignment/7.cc
! 33122a8475eb604a8bddd7a73df3101a  libstdc++-v3/testsuite/20_util/optional/assignment/8.cc
! ca382bd347802f5d4061a84ca662abc7  libstdc++-v3/testsuite/20_util/optional/assignment/9.cc
! 998ba8d4ef69dd974c12070c23bc39bb  libstdc++-v3/testsuite/20_util/optional/assignment/92878_92947.cc
! 48d7dee17cbcc81ad1bed90c1297dd21  libstdc++-v3/testsuite/20_util/optional/assignment/noexcept.cc
! 4ac7ae4a371b2063a86f6c3f04695a68  libstdc++-v3/testsuite/20_util/optional/bad_access.cc
! 6ad562d63175d78f2f2826b42478abda  libstdc++-v3/testsuite/20_util/optional/cons/77727.cc
! 2c1aabe6d42a2b66794cdbfcc973d5df  libstdc++-v3/testsuite/20_util/optional/cons/85642.cc
! 81f2617d953541fdf0aa98ccde8d5440  libstdc++-v3/testsuite/20_util/optional/cons/92878_92947.cc
! d537a4a246e9bd33ec9cd7372acc525a  libstdc++-v3/testsuite/20_util/optional/cons/copy.cc
! 12e9f93109cc4c3972cf35d73b8458d5  libstdc++-v3/testsuite/20_util/optional/cons/deduction.cc
! 9d6da4b2632fe0ddf3634084c20b760f  libstdc++-v3/testsuite/20_util/optional/cons/default.cc
! 90e527aafd909074b29855f8d55d60c1  libstdc++-v3/testsuite/20_util/optional/cons/move.cc
! cbed26bbe1f8b7d6e033987614c72ffe  libstdc++-v3/testsuite/20_util/optional/cons/noexcept.cc
! 3b2271894dd762cdd35259853408bef6  libstdc++-v3/testsuite/20_util/optional/cons/trivial.cc
! 908a806d0f558b2505e83f828365034b  libstdc++-v3/testsuite/20_util/optional/cons/value.cc
! 1ffb3d5aad4f661e9da36cc9168b5b2d  libstdc++-v3/testsuite/20_util/optional/cons/value_neg.cc
  205153857e4103d66c67fae379d14a86  libstdc++-v3/testsuite/20_util/optional/constexpr/assign.cc
  52debc915496e85a8c7135a5baffe7b1  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/conv.cc
! 91140058b85f1682c0877ddf992324b9  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/default.cc
! f1bbdf7cd3490bf38951104286ca906d  libstdc++-v3/testsuite/20_util/optional/constexpr/cons/value.cc
! 5eeb3d47238f87f3c17636a316eaf3dc  libstdc++-v3/testsuite/20_util/optional/constexpr/in_place.cc
! 3c3fdefa1ac26cb8c6071364d8019849  libstdc++-v3/testsuite/20_util/optional/constexpr/make_optional.cc
  1bd13d53c43f256f47a5c535cc903df1  libstdc++-v3/testsuite/20_util/optional/constexpr/modifiers.cc
! f123d0ebaa0e1ad0140ffe56328b71bb  libstdc++-v3/testsuite/20_util/optional/constexpr/nullopt.cc
! ebb337ee1d416b0e1b3df196856ef9d3  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/1.cc
! 3f27c1e35f5404a3aeea0ad66808973e  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/2.cc
! 84dd0dc4e4189eb983164d6e320a4713  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/3.cc
! 19178f2d32a9c2d2d66cd87d7252076b  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/4.cc
! f61b813c0fdfcc562c0bb0e17b0bcbed  libstdc++-v3/testsuite/20_util/optional/constexpr/observers/5.cc
! f52c456741b857f76a55f3e4a4db6611  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/1.cc
! ca34b974d03bfe4421ed99af9bc2d2bd  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/2.cc
! ae1b853cd6d2953896a6620ab4d4fabd  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/3.cc
! 22d3bd003e9bac3b9445377978e8c942  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/4.cc
! d45bf743bb1accdb492791d68ee4edea  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/5.cc
! 1809bbbec3512ce6aa5c2723071bd6fc  libstdc++-v3/testsuite/20_util/optional/constexpr/relops/6.cc
  1a6e6bdd2186983f8eb3e55976f3af73  libstdc++-v3/testsuite/20_util/optional/constexpr/swap.cc
! 53392fa4d239b4ccd4ce7924369aaf1d  libstdc++-v3/testsuite/20_util/optional/hash.cc
! 4bf31d6ddd9eaf4bcd2a7387518312e9  libstdc++-v3/testsuite/20_util/optional/in_place.cc
! a0184a084c3c58ce02e224565d2e1e19  libstdc++-v3/testsuite/20_util/optional/make_optional-2.cc
! 6561aba5488e4e1704b7e1b69827a06f  libstdc++-v3/testsuite/20_util/optional/make_optional.cc
  5b939997ab0b925554c67ff456486490  libstdc++-v3/testsuite/20_util/optional/monadic/and_then.cc
  1fb80e2a52e88cb6b62919fce0976800  libstdc++-v3/testsuite/20_util/optional/monadic/or_else.cc
  79388e9c0a6e088bd396e51da861fa47  libstdc++-v3/testsuite/20_util/optional/monadic/or_else_neg.cc
+ 658147c042bf51f6c27e883496ca3a7f  libstdc++-v3/testsuite/20_util/optional/monadic/pr109242.cc
  e73fd70677c9d505f949cef47d3131d8  libstdc++-v3/testsuite/20_util/optional/monadic/transform.cc
! 1a7042490d2aa865994573a8d38628d4  libstdc++-v3/testsuite/20_util/optional/nullopt.cc
! 2d426c7e89332a56036a825bbd2f3a7c  libstdc++-v3/testsuite/20_util/optional/observers/1.cc
! 8e8ea7fc590ab973842882aec4a6a19b  libstdc++-v3/testsuite/20_util/optional/observers/2.cc
! f6cb62d3636a4b01e4552c6e8fe25d08  libstdc++-v3/testsuite/20_util/optional/observers/3.cc
! daf23e0df03a7bd37380c271295d2f26  libstdc++-v3/testsuite/20_util/optional/observers/4.cc
! 5c2c86b640e53bfdcf939da8c3df3ae2  libstdc++-v3/testsuite/20_util/optional/observers/5.cc
! 69a21b5ad7d8ad23b70b305e19e9d27e  libstdc++-v3/testsuite/20_util/optional/observers/6.cc
  d8af3640e7aabc8dd1960265b3ca5a27  libstdc++-v3/testsuite/20_util/optional/observers/lwg2762.cc
! 991d636d53d2f7acb341d14aa803d94c  libstdc++-v3/testsuite/20_util/optional/relops/1.cc
! 89a5ec5e6030e4f174a4d512fd8b65f1  libstdc++-v3/testsuite/20_util/optional/relops/2.cc
! 6a3814cb3ee5ee4899bb2d9652f87ec1  libstdc++-v3/testsuite/20_util/optional/relops/3.cc
! dcc8540166b215b6c3f7d20209d2e82f  libstdc++-v3/testsuite/20_util/optional/relops/4.cc
! 86a54a5f48dbd8831be09454e96cf0df  libstdc++-v3/testsuite/20_util/optional/relops/5.cc
! 2c5909b1e72d98134330f1041903cb7a  libstdc++-v3/testsuite/20_util/optional/relops/6.cc
! 31f3905822ee28ee286560526ada7d49  libstdc++-v3/testsuite/20_util/optional/relops/7.cc
! a70f8ba4cc35c26d316eabc1b5a3d589  libstdc++-v3/testsuite/20_util/optional/relops/96269.cc
! ee96fd765f9b3969a8affbd8f2953ead  libstdc++-v3/testsuite/20_util/optional/relops/three_way.cc
! ead8aa4cba40828551f81c6ddaddbaf1  libstdc++-v3/testsuite/20_util/optional/requirements.cc
! dbea899b3c675ff68a2a4b74a3b78bca  libstdc++-v3/testsuite/20_util/optional/requirements_neg.cc
! 5ab6fe094dd0b4eab5cc0bb86615cb91  libstdc++-v3/testsuite/20_util/optional/swap/1.cc
! 9fa5dd103813f35fe539e810a3f789dd  libstdc++-v3/testsuite/20_util/optional/swap/2.cc
! 2f2c364f33e993b131556c9483cd6851  libstdc++-v3/testsuite/20_util/optional/typedefs.cc
  027c1d0d48df3e1ffe45b2c618f329e5  libstdc++-v3/testsuite/20_util/optional/version.cc
! ff375f5649e1c7fe7cab858c459baa6d  libstdc++-v3/testsuite/20_util/owner_less/cmp.cc
! 545f86f81d83fb81118295c1943a5275  libstdc++-v3/testsuite/20_util/owner_less/noexcept.cc
! be8f99c93f1ed21490ad431cd2496fc5  libstdc++-v3/testsuite/20_util/owner_less/void.cc
! 7486a0a91203f1fdae0fe06450d87aea  libstdc++-v3/testsuite/20_util/pair/1.cc
! 565c48bc72f5b0739e592823fa575b8b  libstdc++-v3/testsuite/20_util/pair/2.cc
! 2c2ad0426c1fc32f241247d0e0007982  libstdc++-v3/testsuite/20_util/pair/3.cc
! fec24fe707b753cc28fddec9b170a2e1  libstdc++-v3/testsuite/20_util/pair/4.cc
! 4c9e86bc0bf72f883a08a63e7ccc14d2  libstdc++-v3/testsuite/20_util/pair/40925.cc
! 35621839e1db04d77fe928893c036bdb  libstdc++-v3/testsuite/20_util/pair/44487.cc
! 48f59c7427a9629a365a3963f6be2277  libstdc++-v3/testsuite/20_util/pair/70437.cc
! 6fb6e3435efbe26e6b3fcf056d6399f7  libstdc++-v3/testsuite/20_util/pair/79141.cc
! baf47d7e746b01676e2c8e06d9fc08c1  libstdc++-v3/testsuite/20_util/pair/86751.cc
! 80791d8d966ebfa92ad8b9722e71bb27  libstdc++-v3/testsuite/20_util/pair/87822.cc
! a7827f35ecc74565cabd7b9c086fc81d  libstdc++-v3/testsuite/20_util/pair/astuple/astuple.cc
! dba153ead4480d6ffc83a3861e70bd0a  libstdc++-v3/testsuite/20_util/pair/astuple/astuple_cpp14.cc
! f85ce0eb8f8613b9ca3c5eaee59ae62e  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get.cc
! 36b67ad86ea801dc337f0d54fe42b2ac  libstdc++-v3/testsuite/20_util/pair/astuple/constexpr_get_by_type.cc
! f2f2b91309730f195c55679493733944  libstdc++-v3/testsuite/20_util/pair/astuple/get-2.cc
! 82db2025a4d299eba41e5c05e9db4754  libstdc++-v3/testsuite/20_util/pair/astuple/get.cc
! 44cb72be0132169cc67167c6f46d3121  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type.cc
! 00b514e9ef49c58e9e95575a0ea7f4b9  libstdc++-v3/testsuite/20_util/pair/astuple/get_by_type_neg.cc
! 48940b90d447509433832bad389182bf  libstdc++-v3/testsuite/20_util/pair/astuple/get_neg.cc
! ec618870c1f0079db86b80616f28ce73  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr.cc
! 28c1f9f768fed1fd3801d2bd6b7e363a  libstdc++-v3/testsuite/20_util/pair/comparison_operators/constexpr_c++20.cc
! 3f110cfd7485de1ab2b675c801318cf6  libstdc++-v3/testsuite/20_util/pair/cons/92878_92947.cc
  c5964cf74c99c86ce570bfdb15835bb8  libstdc++-v3/testsuite/20_util/pair/cons/99957.cc
! 1dc6da744a411e2a03d603b4b5f085d3  libstdc++-v3/testsuite/20_util/pair/cons/constexpr.cc
! d7a7b98c2d3b75636ba5715c3a4606f5  libstdc++-v3/testsuite/20_util/pair/cons/deduction.cc
! 86c743b33f73224890f1045945d6bae0  libstdc++-v3/testsuite/20_util/pair/cons/explicit_construct.cc
! dcbe0756dcfb595b5579becf64f9c626  libstdc++-v3/testsuite/20_util/pair/cons/noexcept_move_construct.cc
! cc1ddc18d1d6ca3446100aaa17f85d82  libstdc++-v3/testsuite/20_util/pair/constexpr_assign.cc
! 94e490e9b5a130ddb250fd605e7ab95b  libstdc++-v3/testsuite/20_util/pair/constexpr_get.cc
! feb016732a2bd2e97a989066666a6f4c  libstdc++-v3/testsuite/20_util/pair/constexpr_swap.cc
! 685e1dd4b4554f1332bf28bb4f5552f4  libstdc++-v3/testsuite/20_util/pair/dangling_ref.cc
! 8899266adb9c49e27db015e2bd5624b0  libstdc++-v3/testsuite/20_util/pair/make_pair/constexpr.cc
! d91dccd61f564af387b55798a0a2ae1e  libstdc++-v3/testsuite/20_util/pair/moveable.cc
! 3ec0a64cdc81472c0511b6da9e666527  libstdc++-v3/testsuite/20_util/pair/noexcept_move_assign.cc
! 574d80ee5f7b3b399fa2a342a69db0b4  libstdc++-v3/testsuite/20_util/pair/noexcept_swap.cc
! f65545584e5d8365ad02888edd585046  libstdc++-v3/testsuite/20_util/pair/noncopyable.cc
! ff6c06b88f79c5545b94106c9fccabc4  libstdc++-v3/testsuite/20_util/pair/p2321r2.cc
! 16a77f054ddd36767eb768b93d8cc69d  libstdc++-v3/testsuite/20_util/pair/piecewise.cc
! 17f1422f9612d4089a43c310c4355e95  libstdc++-v3/testsuite/20_util/pair/piecewise2.cc
! 471cd644147f68521bb7fb672c25ea6c  libstdc++-v3/testsuite/20_util/pair/ref_assign.cc
! 5287961488967bbaa0eb6a4efe7ead28  libstdc++-v3/testsuite/20_util/pair/requirements/dr2367.cc
! f622f337dad33fa2e16ee353f49e4246  libstdc++-v3/testsuite/20_util/pair/requirements/dr801.cc
! 3e6a6c6b7f33c664601c968d40686b1c  libstdc++-v3/testsuite/20_util/pair/requirements/explicit_instantiation/1.cc
  8099b36c756fc41e3bc9ee5b66294a57  libstdc++-v3/testsuite/20_util/pair/requirements/structural.cc
! 9543011fea4740ed178a3cead6b5cced  libstdc++-v3/testsuite/20_util/pair/swap.cc
! 366dce40844c0f9f75bf4ca655ea851b  libstdc++-v3/testsuite/20_util/pair/swap_cxx17.cc
! d601ec70a1b6adf9007c3534aff34392  libstdc++-v3/testsuite/20_util/pair/traits.cc
! d04803a95f00517aa240f3572d5be6e8  libstdc++-v3/testsuite/20_util/pointer_safety/1.cc
! 4ea61b01821ef91d050e7dc8bc19448b  libstdc++-v3/testsuite/20_util/pointer_traits/lwg3545.cc
! d53c0ae2fcdec06af2640733b22f3e45  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to.cc
! 76afe50176de553d645320f66aee5e12  libstdc++-v3/testsuite/20_util/pointer_traits/pointer_to_constexpr.cc
! e67918651e7b77b88fc9c165a6a1aca3  libstdc++-v3/testsuite/20_util/pointer_traits/rebind.cc
! 371a177af6ef75fc4b7646e8454a24cf  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/explicit_instantiation.cc
! 17efd31fe0edb9917787e9076d54c352  libstdc++-v3/testsuite/20_util/pointer_traits/requirements/typedefs.cc
! 34ba6c106f61558c00ce979764704f19  libstdc++-v3/testsuite/20_util/polymorphic_allocator/1.cc
! fab511f0303293793e5db5c2aaafddd6  libstdc++-v3/testsuite/20_util/polymorphic_allocator/allocate_object.cc
! cc91d78fc4f84c561ae9b2934503853c  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_c++2a.cc
! 29f50d88f0916627ce252d391dd4d524  libstdc++-v3/testsuite/20_util/polymorphic_allocator/construct_pair.cc
! f1077ac34eec196d1de18c6323e05a63  libstdc++-v3/testsuite/20_util/polymorphic_allocator/lwg3237.cc
  918078cc6c6d9bc5d48247416402bca6  libstdc++-v3/testsuite/20_util/polymorphic_allocator/lwg3683.cc
! 5c78197869d803426c8b5169eb481d54  libstdc++-v3/testsuite/20_util/polymorphic_allocator/resource.cc
! 976b98c303bf8f7375bdbf5f9c80f72f  libstdc++-v3/testsuite/20_util/polymorphic_allocator/select.cc
! 93537fb22da56feec39acd8e5150be3a  libstdc++-v3/testsuite/20_util/rank/requirements/explicit_instantiation.cc
! 23793535db204809ddbdcee68a1f73ca  libstdc++-v3/testsuite/20_util/rank/requirements/typedefs.cc
! 7f1556972e2a14c5a58aa1944f884510  libstdc++-v3/testsuite/20_util/rank/value.cc
! ee3532718bd6880afefaa8b1600c242f  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp1.cc
! 264ce05788c2f205c4908db32fe0bd36  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp2.cc
! 1338e4cca544079d649d0f23006ee027  libstdc++-v3/testsuite/20_util/ratio/comparisons/comp3.cc
! ff7cce6d39536aed98507ecaeecc4893  libstdc++-v3/testsuite/20_util/ratio/cons/cons1.cc
! 8158dbb53f3df11095aa1a90f487e37f  libstdc++-v3/testsuite/20_util/ratio/cons/cons_overflow_neg.cc
! 1f54f0e86c4cf0081bca91cec1395351  libstdc++-v3/testsuite/20_util/ratio/operations/45866.cc
! aecdaaebb46ed630161b34295983a571  libstdc++-v3/testsuite/20_util/ratio/operations/47913.cc
! 44a8cce9764046fb522192587b9def1c  libstdc++-v3/testsuite/20_util/ratio/operations/53840.cc
! 23bf4f470706b3e2b3d2cc072304c458  libstdc++-v3/testsuite/20_util/ratio/operations/ops1.cc
! 3d5026d3942ebf255cb4776e9164943c  libstdc++-v3/testsuite/20_util/ratio/operations/ops2.cc
! e3a64ba12b35e4aca09046576d52bff4  libstdc++-v3/testsuite/20_util/ratio/operations/ops3.cc
! 836ded60efa4bdf3d5d6683aaaa3ec98  libstdc++-v3/testsuite/20_util/ratio/operations/ops_overflow_neg.cc
! 65e751b6e39058f2220bc1b3bf523d7c  libstdc++-v3/testsuite/20_util/ratio/requirements/constexpr_data.cc
! 8fadef9c07657382182385a1515c98da  libstdc++-v3/testsuite/20_util/ratio/requirements/ratio_equal_v.cc
! df867c9e6b65da0022414ff9c12e1579  libstdc++-v3/testsuite/20_util/raw_storage_iterator/base.cc
! 978a3bd82d79476d2496813c2d1e8bc2  libstdc++-v3/testsuite/20_util/raw_storage_iterator/dr2127.cc
! 20b679022dcbb813a227adabf7adf3b9  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/base_classes.cc
! a8ca84d4dada2233d8ad92312c614705  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/explicit_instantiation/1.cc
! e36a892688cd95cf86b2cce9215208db  libstdc++-v3/testsuite/20_util/raw_storage_iterator/requirements/typedefs.cc
! 5fa8f2eec894c9a0658e9bd544f842fd  libstdc++-v3/testsuite/20_util/reference_from_temporary/value.cc
! 698b0cfb0695135fc49f4724cb233817  libstdc++-v3/testsuite/20_util/reference_from_temporary/value2.cc
! 2108bed966c1e4464bc55e17ec26fd72  libstdc++-v3/testsuite/20_util/reference_from_temporary/version.cc
! f5f7a53d5e3b8d777fbd74c97bb61855  libstdc++-v3/testsuite/20_util/reference_wrapper/24803.cc
! f4ae99ef34e5cb65ebad76b7cede617e  libstdc++-v3/testsuite/20_util/reference_wrapper/41792.cc
! 7b05aaadf8c4875e104faf5a8f8146b0  libstdc++-v3/testsuite/20_util/reference_wrapper/80504.cc
! ed64d1b43824fe9c96574c0cc11b3b56  libstdc++-v3/testsuite/20_util/reference_wrapper/83427.cc
! e71bde043b81802b8969eddd57426842  libstdc++-v3/testsuite/20_util/reference_wrapper/constexpr.cc
! 6930f41a8f12e278ec01de4c289f0bf1  libstdc++-v3/testsuite/20_util/reference_wrapper/deduction.cc
! ead8f3bdbf4d5b384f8ddc26562489ef  libstdc++-v3/testsuite/20_util/reference_wrapper/incomplete.cc
! 4547767a7a0c0f2d7fd5eda70d1563a3  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-2.cc
! 7da3a62c526b20b108ba1ddc4dd0d462  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-3.cc
! 3a4e290fbbefce397c537f6f76360292  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke-noexcept.cc
! 01f90e55c7d94ee951bc41a37da6ba6d  libstdc++-v3/testsuite/20_util/reference_wrapper/invoke.cc
! 538a57ddf58b87dcc7b3d6cc23e2a164  libstdc++-v3/testsuite/20_util/reference_wrapper/lwg2993.cc
! 22373cd6834e77a0a83aa3c3137a7f38  libstdc++-v3/testsuite/20_util/reference_wrapper/ref_neg.cc
! 365aff6c5af180ad29aa07a948f46831  libstdc++-v3/testsuite/20_util/reference_wrapper/requirements.cc
! 1b4cd00f72f9eb311d68a60a03d67734  libstdc++-v3/testsuite/20_util/reference_wrapper/result_type.cc
! 0a0b85f59dcf3e5275281179fcb63fd9  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-2.cc
! b8ea41e56a063fe13c469ababfe3c1c1  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs-3.cc
! aefd342cc0168a768d50a94b221fb9ae  libstdc++-v3/testsuite/20_util/reference_wrapper/typedefs.cc
! 75c9b9a69361d9e5788ef7b44b51d487  libstdc++-v3/testsuite/20_util/rel_ops.cc
! 10036d0dbbc516fa369da0d463e6abb6  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/alias_decl.cc
! a2958836dac3fbcedb9ebef5da3f0339  libstdc++-v3/testsuite/20_util/remove_all_extents/requirements/explicit_instantiation.cc
! 6725499eaed68cb474073c0dbf58c8e2  libstdc++-v3/testsuite/20_util/remove_all_extents/value.cc
! d1a15e6616b7919716b27c4ca8ca1cb0  libstdc++-v3/testsuite/20_util/remove_const/requirements/alias_decl.cc
! ebecffeb16a60e5f502d39507c4bb0ed  libstdc++-v3/testsuite/20_util/remove_const/requirements/explicit_instantiation.cc
! d5cb2edafa9e3e678374d9466543e3ef  libstdc++-v3/testsuite/20_util/remove_const/value.cc
! d1813aff2fe5557e96bc04913e74c016  libstdc++-v3/testsuite/20_util/remove_cv/requirements/alias_decl.cc
! 57bf721f59c4423c53838d3a48e9f285  libstdc++-v3/testsuite/20_util/remove_cv/requirements/explicit_instantiation.cc
! f2f1e46533ca82fc1a8add447fb436b4  libstdc++-v3/testsuite/20_util/remove_cv/value.cc
! 057a9842fbd0e4eeddefb5a547224b3c  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/alias_decl.cc
! 74f5fddf85338c3440f02e31a89bda12  libstdc++-v3/testsuite/20_util/remove_cvref/requirements/explicit_instantiation.cc
! d3d328ea1478df94d4cf943551caf2e5  libstdc++-v3/testsuite/20_util/remove_cvref/value.cc
! f5432fb40127a759f8d85347e5565e43  libstdc++-v3/testsuite/20_util/remove_cvref/value_ext.cc
! 4ca4f9be8c13fe8c67192551bed14636  libstdc++-v3/testsuite/20_util/remove_extent/requirements/alias_decl.cc
! 0288bda3e07c0c06a813bdbddae95a70  libstdc++-v3/testsuite/20_util/remove_extent/requirements/explicit_instantiation.cc
! 13fea077dae8bdff3d774e8c8f3f5a11  libstdc++-v3/testsuite/20_util/remove_extent/value.cc
! 60185833c47a4e1e729b78e2a9144c65  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/alias_decl.cc
! 04adceb338f1dcdc65a516c89d08bb83  libstdc++-v3/testsuite/20_util/remove_pointer/requirements/explicit_instantiation.cc
! 126e9395e234c1731862c749cc787c90  libstdc++-v3/testsuite/20_util/remove_pointer/value.cc
! bc3228da6de2b341071cf10fa2daae31  libstdc++-v3/testsuite/20_util/remove_reference/requirements/alias_decl.cc
! a4363d746855bdac81de766c741bdb41  libstdc++-v3/testsuite/20_util/remove_reference/requirements/explicit_instantiation.cc
! f63a0ac2842142a3126d2ecb7aefdb0a  libstdc++-v3/testsuite/20_util/remove_reference/value.cc
! 649ae8b5c5be28bb8004fa8ad371dada  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/alias_decl.cc
! f32a774434c16affb4ed8f8da7ad9863  libstdc++-v3/testsuite/20_util/remove_volatile/requirements/explicit_instantiation.cc
! abaa04259fadc7751be3a935a9f1964e  libstdc++-v3/testsuite/20_util/remove_volatile/value.cc
! f6184c45e4c302ae6f4fa5e0d9d063cc  libstdc++-v3/testsuite/20_util/result_of/1.cc
! aac27546cc3c86716656efb767edde39  libstdc++-v3/testsuite/20_util/result_of/2.cc
! 8fd2be0ff5f49bf810d4cf022d98195c  libstdc++-v3/testsuite/20_util/result_of/requirements/alias_decl.cc
! e2078640473e614b6ac281128abe6bd0  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_1.cc
! ebcd4ea070a6c365356388c26610563f  libstdc++-v3/testsuite/20_util/result_of/sfinae_friendly_2.cc
! 70412240786e3f99061ce4dac7ffe5d5  libstdc++-v3/testsuite/20_util/scoped_allocator/1.cc
! da8b1f9f56123156faf50b7277670b45  libstdc++-v3/testsuite/20_util/scoped_allocator/108952.cc
! bdce5c2d51de0e36fce341eaed81fca1  libstdc++-v3/testsuite/20_util/scoped_allocator/2.cc
! 87fbc4649a0e89a9a71adf98ee6cc1d7  libstdc++-v3/testsuite/20_util/scoped_allocator/3.cc
! 407a97a706100e9f099e4af3b6e85650  libstdc++-v3/testsuite/20_util/scoped_allocator/65279.cc
! 64fb1644922ed79c45233fb95f79ce9d  libstdc++-v3/testsuite/20_util/scoped_allocator/69114.cc
! ed383ec28485f421ee462e45e9ef0250  libstdc++-v3/testsuite/20_util/scoped_allocator/69293_neg.cc
! a6a7544f68a2c8339420eeb81a861827  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair.cc
! a002819caabbf2f56afcbcc6a4bf301a  libstdc++-v3/testsuite/20_util/scoped_allocator/construct_pair_c++2a.cc
! f70a0df2895133874d14ae3e7f6b708a  libstdc++-v3/testsuite/20_util/scoped_allocator/dr2586.cc
! cd03cf0d9a71d401845aaca08a9cf4b3  libstdc++-v3/testsuite/20_util/scoped_allocator/outermost.cc
! 2bb2bd5d66b3fd17ba6a7885d7e6caae  libstdc++-v3/testsuite/20_util/scoped_allocator/propagation.cc
! 63b54978af587ba9b770d1292820ad36  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/explicit_instantiation.cc
! b621941ae78a5e7e5280c88468475122  libstdc++-v3/testsuite/20_util/scoped_allocator/requirements/typedefs.cc
! b5301b81835f8562c900fa30201b75aa  libstdc++-v3/testsuite/20_util/shared_ptr/assign/assign.cc
! 93925730f82fe11758771f7b105fb197  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr.cc
! 20c24b24d32f4a60dca959dc3068c393  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_neg.cc
! 016de758c4e8cc8197c3758a0921db27  libstdc++-v3/testsuite/20_util/shared_ptr/assign/auto_ptr_rvalue.cc
! 178554f5b4158f3c4a0772193f126eee  libstdc++-v3/testsuite/20_util/shared_ptr/assign/dr541.cc
! 553edc7d74163ac20ecc99e92b414af3  libstdc++-v3/testsuite/20_util/shared_ptr/assign/move.cc
! 610070aadb000a2451044e21fc3b220a  libstdc++-v3/testsuite/20_util/shared_ptr/assign/sfinae.cc
! 92fd9d4f54835c08331684663a26aaa9  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr.cc
! 58d03d4bbb7b9c8ff8482db697af818a  libstdc++-v3/testsuite/20_util/shared_ptr/assign/shared_ptr_neg.cc
! c32c750711f1bccd599898c06ba803c5  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_lvalue_neg.cc
! 5670baf2aee10623c24c8c65dc190303  libstdc++-v3/testsuite/20_util/shared_ptr/assign/unique_ptr_rvalue.cc
! a5b8e50811a4a457444c223bda26acc2  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/1.cc
! c99635b761ab56e51025eb57d7d1000b  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/2.cc
! 27d63de0fba90eaef8d8b8ffb57eda5f  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/3.cc
! bf39cd1cf503e318e210d5f1b9ea4a7d  libstdc++-v3/testsuite/20_util/shared_ptr/atomic/atomic_shared_ptr.cc
! 0df566dc41b79c603ba93d6ee5800712  libstdc++-v3/testsuite/20_util/shared_ptr/casts/1.cc
! 65c02f7946d442afec2481afec892067  libstdc++-v3/testsuite/20_util/shared_ptr/casts/reinterpret.cc
! e1d6e797d0ba7198e1e1808ed92c4b60  libstdc++-v3/testsuite/20_util/shared_ptr/casts/rval.cc
! 1455f864780d5c844a1ef69a6a4cc3c2  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/42925.cc
! b3370ef76c76e7fabc1ff6a467f97dca  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/86537.cc
! 62165d5984dc254e32892a202562d84a  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp.cc
! 7fecd503fa0b1cc154a62c9ef53f7b89  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/cmp_c++20.cc
! 7066d4dd45a80c4d968aa55de8adb2b4  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/dr1401.cc
! 44c5ffde1cabd049de1925a0055ef34b  libstdc++-v3/testsuite/20_util/shared_ptr/comparison/less.cc
! deef9c6883a20941f50c5567c01a4de3  libstdc++-v3/testsuite/20_util/shared_ptr/cons/39405.cc
! 12ae2f91273c33b6c8585aad275852e5  libstdc++-v3/testsuite/20_util/shared_ptr/cons/43820_neg.cc
! d7dd8af7a662e35d4ba306b4090a9e8c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/46910.cc
! 4aba6fc080fd44c3b2de2115b61c1a15  libstdc++-v3/testsuite/20_util/shared_ptr/cons/51365.cc
! 3200c46c2e66f4321964ee10cba32dc0  libstdc++-v3/testsuite/20_util/shared_ptr/cons/52924.cc
! d86ff14225614e2f5dcaeca18ca69f26  libstdc++-v3/testsuite/20_util/shared_ptr/cons/55123.cc
! a914b4e5ee1a83224c2bf6e0bdfff1b9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58659.cc
! 2e8f893e227d3830a9732f21f26ee43b  libstdc++-v3/testsuite/20_util/shared_ptr/cons/58839.cc
! 6db2017759e0229fc3210b325be22261  libstdc++-v3/testsuite/20_util/shared_ptr/cons/61036.cc
! 699d40505877fb5fea7bd8742fe09bf7  libstdc++-v3/testsuite/20_util/shared_ptr/cons/79467.cc
! a0b6822b24d8b7405391a418f5e2bfa2  libstdc++-v3/testsuite/20_util/shared_ptr/cons/80229.cc
! bcb4793ed4505897d2b84e8ef0cfc27e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias-rval.cc
! 1a9107393591ee46a136808764e14374  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alias.cc
! 6246c27278780f9c8c7808e0e7547b79  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc.cc
! 12c23f1c39696fecaf36a33767a3d92d  libstdc++-v3/testsuite/20_util/shared_ptr/cons/alloc_min.cc
! 0fdb695ed895812eb874628e8a4bed3c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/array.cc
! 9ee8b3d4e8fe42053c9cecd12678489c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr.cc
! d0d864acbef72f02f5b24cae9032dbd1  libstdc++-v3/testsuite/20_util/shared_ptr/cons/auto_ptr_neg.cc
! e5e4fbbcaf217254847a3ac83857dad9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/constexpr.cc
! 7ad9bc15da5b08ce0313157eb402210c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/copy.cc
! 090aa73fa1eb133fa5b7b6314782dd93  libstdc++-v3/testsuite/20_util/shared_ptr/cons/deduction.cc
! 45bcfb1de0f2defed74460bf3511927f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/default.cc
! 555d33761bfebbd1a232adccfd2cc7a6  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg2802.cc
! 23dbae4c540e8990b44404c82f23bc80  libstdc++-v3/testsuite/20_util/shared_ptr/cons/lwg3548.cc
! 01f7c669019166ddf4e0c748fa08ee58  libstdc++-v3/testsuite/20_util/shared_ptr/cons/move.cc
! 02f2529b8bc55c3c8b2f18e420e70e8e  libstdc++-v3/testsuite/20_util/shared_ptr/cons/noexcept_move_construct.cc
! 4b6d080530b48e3dca9f5439bd76058f  libstdc++-v3/testsuite/20_util/shared_ptr/cons/nullptr.cc
! 4b0b8371e3d12adc3de7ab5d21dcf129  libstdc++-v3/testsuite/20_util/shared_ptr/cons/pointer.cc
! 5ed59431d2fc29ba345cdb201c58b718  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr.cc
! 7f2203af8de5dc02ed0f8ceb7c3ab9b4  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_array.cc
! 1bb6b0b43dd422a37f99daba313c0387  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter.cc
! cd498223577553a0b3867fdcdc69634c  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_1.cc
! bc52243f0adebf9356ad1cc199247ec9  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_deleter_ref_2.cc
! 37a911656dbc0e552a1d3cdbf8efb13a  libstdc++-v3/testsuite/20_util/shared_ptr/cons/unique_ptr_neg.cc
! 08c49a2ab09d65899d4a8921db683496  libstdc++-v3/testsuite/20_util/shared_ptr/cons/void_neg.cc
! 000da3496dabd9dce74b843dde10a524  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr.cc
! fe119ce4d9b94b0b7b4cef698e32f307  libstdc++-v3/testsuite/20_util/shared_ptr/cons/weak_ptr_expired.cc
! e773b7e0d890a570869d386e365bb0b3  libstdc++-v3/testsuite/20_util/shared_ptr/creation/36949.cc
! eb7dacf8c7cadd632acd08cafacd9d0d  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594-no-rtti.cc
! 256044bd9e82e30807df8d6d9c119c5b  libstdc++-v3/testsuite/20_util/shared_ptr/creation/58594.cc
! 5bb98f40ef0b788d6a4e18834c1979d7  libstdc++-v3/testsuite/20_util/shared_ptr/creation/87278.cc
! baf913b48eb45dc879ea3d988f88da7f  libstdc++-v3/testsuite/20_util/shared_ptr/creation/92878_92947.cc
! 81f7fb60e4aacbe92da9a1eab6fd4f82  libstdc++-v3/testsuite/20_util/shared_ptr/creation/99006.cc
! 12cb4e5617962aa94d25999e44bd0055  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc.cc
! 2731e1f6438ca1eacc343adc9e8618ab  libstdc++-v3/testsuite/20_util/shared_ptr/creation/alloc_min.cc
! 76484e864073c24bfc898fc0c8e91728  libstdc++-v3/testsuite/20_util/shared_ptr/creation/array.cc
! 77fd92eb08daf02b9b30d2b2cdfed05f  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr402.cc
! 6adfdfbb7dd8007e53f723d7a8507295  libstdc++-v3/testsuite/20_util/shared_ptr/creation/dr925.cc
! ed4d5b6236ad8c27c977201d79ed3c14  libstdc++-v3/testsuite/20_util/shared_ptr/creation/make.cc
! 467093b5113c21423d4410ca2b6dbdc8  libstdc++-v3/testsuite/20_util/shared_ptr/creation/no_rtti.cc
! 854fb7241fdf385c57b005e319ee11b4  libstdc++-v3/testsuite/20_util/shared_ptr/creation/overwrite.cc
! 506c47b71e18418c71b403c8bc195d2f  libstdc++-v3/testsuite/20_util/shared_ptr/creation/private.cc
! 56b8ea94c23325b515e177cd89261c3a  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation.cc
! 1e34d6072d1fd6625dcccc979084125a  libstdc++-v3/testsuite/20_util/shared_ptr/creation/single_allocation_no_rtti.cc
! 0151f13bb3f4922112375cd2a72c3f2e  libstdc++-v3/testsuite/20_util/shared_ptr/creation/version.cc
! 0733615ffe3796fc9ea1c5751c47dcac  libstdc++-v3/testsuite/20_util/shared_ptr/dest/dest.cc
! 050c7bdcb59cbd94d89403646768cd8b  libstdc++-v3/testsuite/20_util/shared_ptr/hash/1.cc
! 3bce7ea4d77cd7b503074e4b022b042e  libstdc++-v3/testsuite/20_util/shared_ptr/misc/24595.cc
! ee67b5b11fa7370bc3c049098409c2c9  libstdc++-v3/testsuite/20_util/shared_ptr/misc/42019.cc
! 04c6d1434a84805a2284fac0542b3f9c  libstdc++-v3/testsuite/20_util/shared_ptr/misc/get_deleter.cc
! a96a44d82e4c79fb4c966d9ea49aced4  libstdc++-v3/testsuite/20_util/shared_ptr/misc/io.cc
! 62644bc9cf50e22f67266c729935a278  libstdc++-v3/testsuite/20_util/shared_ptr/misc/swap.cc
! bcf4938d037798d36352bfb8b38073d9  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/24805.cc
! 96abfc62605f16c4e46b8a68e20a8f29  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset.cc
! a3ff0789a7e3e594ae4926cf3fda4c68  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_alloc.cc
! 70a17d880fe78c6bc02dfa9d1208beb3  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_neg.cc
! bbcde87b506b65215ea54e96389bd263  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/reset_sfinae.cc
! 565b5b6847a31ef6e4f44d293cce2c11  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap.cc
! 7bef7a5f669f91c48532ddc1264e52fb  libstdc++-v3/testsuite/20_util/shared_ptr/modifiers/swap_neg.cc
! 5aecfdf24f2b308b411df7e055f5d261  libstdc++-v3/testsuite/20_util/shared_ptr/observers/array.cc
! 537c24354d6dad88787623cd2b1707a9  libstdc++-v3/testsuite/20_util/shared_ptr/observers/bool_conv.cc
! a54664d62954ab2649e6aa8c09a2a87c  libstdc++-v3/testsuite/20_util/shared_ptr/observers/get.cc
! 8918180e68742cf67fb91de83bdeda09  libstdc++-v3/testsuite/20_util/shared_ptr/observers/owner_before.cc
! d8b105856e6a3f411dcde3c993534970  libstdc++-v3/testsuite/20_util/shared_ptr/observers/unique.cc
! 028cce135beddf6da08f9db75918ea20  libstdc++-v3/testsuite/20_util/shared_ptr/observers/use_count.cc
! 565b34e5163e6a1e5b24a81b53e3ad9d  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/1.cc
! 5b56506b9bd6c8a882702360efaa172b  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/explicit_instantiation/2.cc
! 5df2437456d5a6883be7e5f3d8b89ea5  libstdc++-v3/testsuite/20_util/shared_ptr/requirements/weak_type.cc
! f977c7ffc1890ee3239a73e5a016d36d  libstdc++-v3/testsuite/20_util/shared_ptr/thread/default_weaktoshared.cc
! 16a0cb533dc557b22d7d544e6e5afa84  libstdc++-v3/testsuite/20_util/shared_ptr/thread/mutex_weaktoshared.cc
! d689e00967b57d0a7c7fca24ba2f6cea  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/1.cc
! d6bc384ca66ff3fdd05e0b2371122457  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/92878_92947.cc
! 227931069351de891d63e6a0ce09cf3a  libstdc++-v3/testsuite/20_util/specialized_algorithms/construct_at/95788.cc
! 13432f208160f26ba0e05a30f46f88f0  libstdc++-v3/testsuite/20_util/specialized_algorithms/destroy/constrained.cc
! 307ed30ab86d3f9f310f22ef029e832e  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/1.cc
! 0695e76e14d0d1b7c0729b84e8e85149  libstdc++-v3/testsuite/20_util/specialized_algorithms/memory_management_tools/destroy_neg.cc
  7e2d819342973c849d87437556e29d5c  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_construct.cc
  681f3ec9c3b800b4e5258afc87a95231  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_copy_move.cc
  7377989805a8e1aa7f8896037d2eefae  libstdc++-v3/testsuite/20_util/specialized_algorithms/pstl/uninitialized_fill_destroy.cc
! 5b704732406181ac1971ce9132630dc3  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/1.cc
  efb0b570168ffe84d6e2f37ece809386  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/102064.cc
! 648754579ac9bbb88ce396e49ffc5f20  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/58982.cc
! 03f4f5c390091fc6e8d0e3f977968784  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/64476.cc
! 38f5fbeb35345e4d64d18256a78ba515  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590-cxx11.cc
! eae64f29ccdbfcdee6063dc34aadfbc8  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/808590.cc
! 643fec3aad33540f16c15ac8700662f5  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/89164.cc
! 48c076e50b07e3f7a7ea7026a7e0f5f6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/constrained.cc
! 8949b41536e4ffb28df4c101423f875f  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy/move_iterators/1.cc
  9b3e4f319f44ee77ea0c657fdf58b9fc  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/102064.cc
! 6b726c26a8fedc476b6d05db04708cd0  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/58982.cc
! fe20093c549382ead754efc1396162fd  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/89164.cc
! 22d90576bfce92133731247ce45dff2e  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_copy_n/move_iterators/1.cc
! b143c0415a62fcea0fee40d2c11b19f1  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default/94540.cc
! bd22e0b4f788f52c08f61a0f6f26f4fc  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_construct/constrained.cc
! ac71997ec3283a1f08b0afbbb4736186  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/94540.cc
! 742cf913c966c409fa6711d3e4401937  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_default_n/sizes.cc
  b3a76cdacc3eabc45c217e3d5a8738a6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/102064.cc
! 1de641cd6a6076702c4d892b61bc4128  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/32158.cc
! b6d68f3dc73bcc005ce1b74e9b3ef06b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/58982.cc
! 472c35f618578e2322d56e74635be70d  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/89164.cc
! 70a110aa67690aa2fcef4239ea19a947  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/94017.cc
! f43520c8500e12c4d4cd0dd9a8c89d53  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill/constrained.cc
  2b8079d02ae431daa7c5a8e3743eb7a6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/102064.cc
! 4dff6ee6019ca0186ed7ca807859f5d0  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/16505.cc
! 6613d4b4ee869ed428ea1a83082e2b4f  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/58982.cc
! 38799e6696243203321f11e81f0a6288  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/89164.cc
! dd6ca9bbbc3ccd376989fd7088e7fa48  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/94017.cc
! 134934699c21eecdbe0eaac97cdfa0f6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/dr1339.cc
! 955d8659a65af878d72c899c14451bb6  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_fill_n/sizes.cc
! b18fa5cb153e18bec22ffb1e08619094  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_move/constrained.cc
! cd26b65b16e380bbb132809e2ae32dd1  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94540.cc
! c66f2a4b305f52142ba4933f4a3283bf  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/94831.cc
! fced6aef1c90b8200f7966d8fc0d1e2b  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct/constrained.cc
! 23c56fdbc29d5022809523814c5efbb7  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/94540.cc
! 14b31098d096d0fc451958711491a982  libstdc++-v3/testsuite/20_util/specialized_algorithms/uninitialized_value_construct_n/sizes.cc
! a7c2ab37c69a57274f01d9c1c0925d2b  libstdc++-v3/testsuite/20_util/steady_clock/constexpr_data.cc
! e01bbbdabdcc05d3ec7cd1288920cb0b  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate.cc
! 8cb654edf02f6707a3f06925f75baeaf  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/allocate_single.cc
! 3ec8a2fc64cb64aa1082ab02188507a8  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons.cc
! 8c1c8d846e1d972a03eda250e0a914ca  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/cons_single.cc
! 21c579f55fd040010d547d2bc0dd3fbb  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/is_equal.cc
! bd7b1df14e0242e5cc6bb963a8caf000  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/multithreaded.cc
! 62880ccf1590b873deb5425810f2be4e  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/options.cc
! 7c4cbea59e0d8fa4d2479c9e8494c9ff  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release.cc
! 12bde2861fe41d383cbc8aa9c4cac9fd  libstdc++-v3/testsuite/20_util/synchronized_pool_resource/release_single.cc
! 5307895572f0fc61ec27f7a5d657f483  libstdc++-v3/testsuite/20_util/system_clock/1.cc
! 6292b64c03c25ef42b661d0c57d13bdd  libstdc++-v3/testsuite/20_util/system_clock/constexpr_data.cc
! 32bc098b843d29bdcae3ff1441d6e005  libstdc++-v3/testsuite/20_util/temporary_buffer.cc
! c1c191bc9337a174e6159bb8834f26a7  libstdc++-v3/testsuite/20_util/time_point/1.cc
! 3cc2d9004ae64716a036260e3c4af747  libstdc++-v3/testsuite/20_util/time_point/2.cc
! 53e994288c084ac38d571db2fd2c561c  libstdc++-v3/testsuite/20_util/time_point/3.cc
! 1051ac5013b484e2bf2462dac386ddbb  libstdc++-v3/testsuite/20_util/time_point/4.cc
! dd2dd723c40a8c8a4c61bb9b705873b1  libstdc++-v3/testsuite/20_util/time_point/arithmetic/constexpr.cc
! b76a2f4bc001580af5ca4ca599cbcefc  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/constexpr.cc
! 8f9710cd87908b4e81693efc33562d13  libstdc++-v3/testsuite/20_util/time_point/comparison_operators/three_way.cc
! 44be47f53369f7140030ade154f1abe6  libstdc++-v3/testsuite/20_util/time_point/cons/81468.cc
! a0b9c69630bfb790c8aa6fc7f0a89ec2  libstdc++-v3/testsuite/20_util/time_point/cons/constexpr.cc
! fbdf616e9d0f08e949faf835d1c7868d  libstdc++-v3/testsuite/20_util/time_point/nonmember/constexpr.cc
! 41f21006514da0604136c187c5db159e  libstdc++-v3/testsuite/20_util/time_point/requirements/constexpr_functions.cc
! cdaa44625011b769a7532fcc89257107  libstdc++-v3/testsuite/20_util/time_point/requirements/duration_neg.cc
! ce1b1eb444e51942d7d45fae51ab49d5  libstdc++-v3/testsuite/20_util/time_point/requirements/explicit_instantiation.cc
! 85a2fe35c76cf4617c2c697ba5c73b25  libstdc++-v3/testsuite/20_util/time_point/requirements/noexcept.cc
! 87a2ace519d6c40aeb6a9e029e73a632  libstdc++-v3/testsuite/20_util/time_point_cast/constexpr.cc
! b7025cd3de1fc01eb6b331de814608b4  libstdc++-v3/testsuite/20_util/time_point_cast/rounding.cc
! 7fde5112d4dd68c45372ab91ab24d835  libstdc++-v3/testsuite/20_util/to_address/1.cc
! 4590295010c2b72ab77a35ac527fd5d9  libstdc++-v3/testsuite/20_util/to_address/1_neg.cc
! b4b37e9d7c7612e9fde9ca12b5a884af  libstdc++-v3/testsuite/20_util/to_address/debug.cc
  85bcd20ed1477c234831a1e857e38995  libstdc++-v3/testsuite/20_util/to_address/lwg3545.cc
! aebf47acc5552d57cadc7bfbcb23fa72  libstdc++-v3/testsuite/20_util/to_chars/1.cc
  cf4f3947ea6ae8a691cad8b85ffb82b7  libstdc++-v3/testsuite/20_util/to_chars/103955.cc
! c025ed347bbc2e45fb5bc70d4fd3bc97  libstdc++-v3/testsuite/20_util/to_chars/2.cc
! 2f5ac8272b24534b8352ea8b8622e952  libstdc++-v3/testsuite/20_util/to_chars/3.cc
! ce5f9bb354e3717e8634fa5fd68177aa  libstdc++-v3/testsuite/20_util/to_chars/4.cc
! 514b9e30382ae5a3578b46445a7bff46  libstdc++-v3/testsuite/20_util/to_chars/95851.cc
! ee1796ad2d1ce8f81b40469ebf0be3cf  libstdc++-v3/testsuite/20_util/to_chars/chars_format.cc
! e26fecff9d7611fb46fe8d07a7553246  libstdc++-v3/testsuite/20_util/to_chars/compare.cc
! a88c84146097594756bec23da5700f78  libstdc++-v3/testsuite/20_util/to_chars/constexpr.cc
! eabdcb2c857fd5844248dcc3170d6b89  libstdc++-v3/testsuite/20_util/to_chars/double.cc
! 77b9817d9f7a5e3dca39a0a2eea53935  libstdc++-v3/testsuite/20_util/to_chars/float.cc
! 5b0bda0e6546a96a522585ec530a5b50  libstdc++-v3/testsuite/20_util/to_chars/float128_c++23.cc
! 86687ab20313201a982001aaf11c6c02  libstdc++-v3/testsuite/20_util/to_chars/float16_c++23.cc
! 7c0d6b379f60313fac2e43e214760144  libstdc++-v3/testsuite/20_util/to_chars/long_double.cc
! 262d80cdb68e0f5d77877b5139c706f7  libstdc++-v3/testsuite/20_util/to_chars/lwg3266.cc
! 1991cbcf30c99ea3151c5358f2180b60  libstdc++-v3/testsuite/20_util/to_chars/requirements.cc
! 48c49dfe9e370c1dc7f3d1276c4c42ff  libstdc++-v3/testsuite/20_util/to_chars/version.cc
! 4794c73580e80403703c84451cf7150a  libstdc++-v3/testsuite/20_util/to_underlying/1.cc
! dfa5c1cb69850e3592c4195539a29edf  libstdc++-v3/testsuite/20_util/to_underlying/version.cc
! c7d393c1fd44023102309b7341b4cddb  libstdc++-v3/testsuite/20_util/tuple/48476.cc
! 93589c5fe756744bdde0c64195fbc264  libstdc++-v3/testsuite/20_util/tuple/51365.cc
! e75a6ec3104658e2399e9676b96a5599  libstdc++-v3/testsuite/20_util/tuple/53648.cc
! 1c6bc2627e8e881cb7bfb121f1228842  libstdc++-v3/testsuite/20_util/tuple/56785.cc
! b20c08db3bfb2b22e07494e9ca048671  libstdc++-v3/testsuite/20_util/tuple/60497.cc
! 8da124ba77245a2b27f8204ab4d941a9  libstdc++-v3/testsuite/20_util/tuple/61947.cc
! 6fe3a29530c33fd7fa5a0461b5dc4fb2  libstdc++-v3/testsuite/20_util/tuple/67844.cc
! 308cf726419b384c7d7464e7a3d64786  libstdc++-v3/testsuite/20_util/tuple/77395.cc
! 6c370df9e5c84c6cd85a6e3019ce562b  libstdc++-v3/testsuite/20_util/tuple/77802.cc
! bc53da1129099aa6f3e3ccfab041527e  libstdc++-v3/testsuite/20_util/tuple/78939.cc
! d4fb4c97200b74e65f3838f6478d9d3b  libstdc++-v3/testsuite/20_util/tuple/apply/1.cc
! d8cbc2bcdbabfbb1d20497a17fb42f0d  libstdc++-v3/testsuite/20_util/tuple/apply/2.cc
! 928ac4afe96f4b3f9c0c0139e6a52433  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/35480_neg.cc
! bf1aeea050b92657198d3f65861feef1  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/93147.cc
! 7ebd42e4e51256d63e3bfd60e7584859  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/comparisons.cc
! 8da6e07c854a3c7a554ac92aba962f39  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/constexpr.cc
! d18e915c18080a672bb8e6d46589ecc5  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded.cc
! ccb35fb7a62300af936085819483975c  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/overloaded2.cc
! 570e52f8bdb71cbed03256f61e7b3a72  libstdc++-v3/testsuite/20_util/tuple/comparison_operators/three_way.cc
  d23b1a747046dfeaadefce18d2c02b12  libstdc++-v3/testsuite/20_util/tuple/cons/101960.cc
  32c154912a091023741fdaa263538a86  libstdc++-v3/testsuite/20_util/tuple/cons/102270.cc
! f27dfd667d19d5a586e2805084cc1c5a  libstdc++-v3/testsuite/20_util/tuple/cons/41530.cc
! c5d05d77429ce4ba3914543541b3764e  libstdc++-v3/testsuite/20_util/tuple/cons/44487.cc
! 45938586f3445d3925b645ab2e912816  libstdc++-v3/testsuite/20_util/tuple/cons/45228.cc
! 109deb3be52815eeaa0a66b0101552ca  libstdc++-v3/testsuite/20_util/tuple/cons/48476.cc
! c8202f4f712981e0cc5de7b30d1ae4e1  libstdc++-v3/testsuite/20_util/tuple/cons/66338.cc
! 1202eba436ee970260beb31a1e34e029  libstdc++-v3/testsuite/20_util/tuple/cons/90700.cc
! f523ee86cb78052db5c1c252418f8235  libstdc++-v3/testsuite/20_util/tuple/cons/96592.cc
! b50b2d52c7c308c4cc8d103d3f535fc5  libstdc++-v3/testsuite/20_util/tuple/cons/96803.cc
! 84bc6d7243cef1f3885f2936bbdc8ace  libstdc++-v3/testsuite/20_util/tuple/cons/allocator_with_any.cc
! 76123eadc371c6d1013055f8da63a7cd  libstdc++-v3/testsuite/20_util/tuple/cons/allocators.cc
! b5c705f03f9895fa36ac3f5ec231ab4a  libstdc++-v3/testsuite/20_util/tuple/cons/assignment.cc
! fafc2d7c1a4a6185219e33fcc5700efa  libstdc++-v3/testsuite/20_util/tuple/cons/big_tuples.cc
! e8ba095e757e5938823886212593e412  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-2.cc
! c4d390a568361229548df30f3697c633  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr-3.cc
! 96169de2004871b5f4c4ba38f362701d  libstdc++-v3/testsuite/20_util/tuple/cons/constexpr_allocator_arg_t.cc
! 1ca997ddff8373aafb46a082cfc7fbd9  libstdc++-v3/testsuite/20_util/tuple/cons/constructor.cc
! 0fb0787c73a22855ef60665935f2ebe0  libstdc++-v3/testsuite/20_util/tuple/cons/converting.cc
! 7cc6d1ed75b874b05adb8f99cee84748  libstdc++-v3/testsuite/20_util/tuple/cons/deduction.cc
! 2417b2e32d27359fd4b4e6a7f077ae2d  libstdc++-v3/testsuite/20_util/tuple/cons/element_accepts_anything_byval.cc
! 731ef4a0b7b94d558fb0d7940be2523c  libstdc++-v3/testsuite/20_util/tuple/cons/explicit_construct.cc
! ecc8d6e4ec193114b3b0d5ebbd3f2916  libstdc++-v3/testsuite/20_util/tuple/cons/nested_tuple_construct.cc
! c0e3de4c687dffccdfb744ddb1b70221  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_move_construct.cc
! 3c15ddc064221d85d53c5512e9007c30  libstdc++-v3/testsuite/20_util/tuple/cons/noexcept_specs.cc
! 436d3b1a5875a815009dac18a9e6a2ef  libstdc++-v3/testsuite/20_util/tuple/constexpr_swap.cc
! 5cb65f51f368859d18edb715de89ceab  libstdc++-v3/testsuite/20_util/tuple/creation_functions/23978.cc
! c507194a0bc7d2300d4f214f19148bbc  libstdc++-v3/testsuite/20_util/tuple/creation_functions/48476.cc
! f3da6a178e6d9ef077f03f6aa543bbcd  libstdc++-v3/testsuite/20_util/tuple/creation_functions/55713.cc
! 6670c62216b6f8c30fe3f135348923ee  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr.cc
! 7ac5afe2f55e9e6235d9a4c9da98e885  libstdc++-v3/testsuite/20_util/tuple/creation_functions/constexpr_cpp14.cc
! 302e8c98aaada45790ee6b93e322972b  libstdc++-v3/testsuite/20_util/tuple/creation_functions/forward_as_tuple.cc
! b04142a6bbfef81e2388fd1a061099bf  libstdc++-v3/testsuite/20_util/tuple/creation_functions/make_tuple.cc
! 2a917b8f32534e5af1c0de78cd7c39c1  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie.cc
! ba3b8b7ad67eb17818240fa8c3bdf38f  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tie2.cc
! 53eadff5596e55c37a8c484baff3b79f  libstdc++-v3/testsuite/20_util/tuple/creation_functions/tuple_cat.cc
! 9286c1b88b53626d4d15b6c7a1cdc95a  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_element.cc
! 650e033f32dc57e09b5a3fc0d98d9fff  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size.cc
! 2d9e86e224dbc5cee638cc70820e5031  libstdc++-v3/testsuite/20_util/tuple/cv_tuple_size_neg.cc
! 31ea314dc1f1166ce362b0fb3bea23ab  libstdc++-v3/testsuite/20_util/tuple/dr2729.cc
  5c4d5220d3eb9f735e8817b5ea562b55  libstdc++-v3/testsuite/20_util/tuple/element_access/101427.cc
! 7c4e4e1915efa6c5764ed1dcf9e14fec  libstdc++-v3/testsuite/20_util/tuple/element_access/71096.cc
! df3e176bb5ab8d35a0ec1b07c3e97f57  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get.cc
! 3d575d45521cf5771c4d377b6a9a549f  libstdc++-v3/testsuite/20_util/tuple/element_access/constexpr_get_by_type.cc
! 598ead5ba326cadfa2f3ab494d1d5fc2  libstdc++-v3/testsuite/20_util/tuple/element_access/get.cc
! 09e74e56451ca33baf4ce05e708fde23  libstdc++-v3/testsuite/20_util/tuple/element_access/get2.cc
! c8340e97f4a1c2bba4453890087ff441  libstdc++-v3/testsuite/20_util/tuple/element_access/get2_by_type.cc
! 44176010f8b9374c7c9e9b74b6128a87  libstdc++-v3/testsuite/20_util/tuple/element_access/get_by_type.cc
! 247cdc50db4c0d5b683c6a86a13f61be  libstdc++-v3/testsuite/20_util/tuple/element_access/get_neg.cc
! 2f0b2528605be2569d21391426cee440  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/1.cc
! 32af8d6c473ea8d7e47f95a72541b28d  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/2.cc
! 32b91df88869bacd821f449c4ff9ea1c  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/dangling_ref.cc
! 5f205a0115c4b3b8b249446d156f2d7c  libstdc++-v3/testsuite/20_util/tuple/make_from_tuple/tuple_like.cc
! af8237364bc78c864ee75469217a3ba4  libstdc++-v3/testsuite/20_util/tuple/moveable.cc
! 4c7bbc15d76d9a50e79eaa18b185d9e0  libstdc++-v3/testsuite/20_util/tuple/moveable2.cc
! 637f4225c3cb345e1b95005dc8d090d7  libstdc++-v3/testsuite/20_util/tuple/noexcept_move_assign.cc
! 004f0d506c0cbb19eb36647aadb8f6ed  libstdc++-v3/testsuite/20_util/tuple/noexcept_swap.cc
! 90ac6ad16d820d13046e9ef6feee0225  libstdc++-v3/testsuite/20_util/tuple/p2321r2.cc
! 6c1a7d773c7bd38754b94f3b7e6f5ae5  libstdc++-v3/testsuite/20_util/tuple/requirements/dr2367.cc
! 29fa110dc9b379f8785e8ae69ed06289  libstdc++-v3/testsuite/20_util/tuple/requirements/dr801.cc
! 60af8faaf2b49c5a177629b29f5c42bc  libstdc++-v3/testsuite/20_util/tuple/requirements/explicit_instantiation.cc
! 4b17a3ea2494f7874925c5a21ca446e7  libstdc++-v3/testsuite/20_util/tuple/swap.cc
! af0be26d523360c77c1d31d200ee67bd  libstdc++-v3/testsuite/20_util/tuple/swap_cxx17.cc
! e76c61713925fc31767261cf05cd86ea  libstdc++-v3/testsuite/20_util/tuple/tuple_element.cc
! f5a3225bc75080e895910b89fdac9c0a  libstdc++-v3/testsuite/20_util/tuple/tuple_element_t.cc
! 3e47c97621fa4f18d6dbc51dbe940788  libstdc++-v3/testsuite/20_util/tuple/tuple_size.cc
! aaa272b31594b23962bf57eeebe425b8  libstdc++-v3/testsuite/20_util/tuple/tuple_size_v.cc
! 8ed4753f19320c90d891bc65b60f5221  libstdc++-v3/testsuite/20_util/type_identity/requirements/alias_decl.cc
! c9116ea575f8e8a73ccfebaffdc7f204  libstdc++-v3/testsuite/20_util/type_identity/requirements/explicit_instantiation.cc
! e8f5ffed07fae10b3e03632af4d9982c  libstdc++-v3/testsuite/20_util/type_identity/requirements/typedefs.cc
! cd55eac45df9f5eb2ada7e8b3a2b90aa  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators.cc
! c82939a5ee3024a0c6db5eabd0e2ba5f  libstdc++-v3/testsuite/20_util/typeindex/comparison_operators_c++20.cc
! f31c2725fe0ce212c155503283f09373  libstdc++-v3/testsuite/20_util/typeindex/hash.cc
! 12b6ff1f8c12d381c3a30b4a4cbb9472  libstdc++-v3/testsuite/20_util/typeindex/hash_code.cc
! c3f74135d2093cf33839a9b961b56475  libstdc++-v3/testsuite/20_util/typeindex/name.cc
! 976a5b4d34606e96492a9708ff518493  libstdc++-v3/testsuite/20_util/underlying_type/requirements/alias_decl.cc
! f586c6f4c36064d602be755de702129a  libstdc++-v3/testsuite/20_util/underlying_type/requirements/explicit_instantiation.cc
! 78e8d75ea6846dfb63c604896398c170  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-1.cc
! d036d421447f5db80e41c25f210904c2  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-2.cc
! d8afefc911d91851885222fbf05dfaef  libstdc++-v3/testsuite/20_util/underlying_type/requirements/typedefs-3.cc
  270e7f9293f9dc29e06013f0194d2249  libstdc++-v3/testsuite/20_util/unique_ptr/101236.cc
! 4359c578d11b426c19158d13fe20da22  libstdc++-v3/testsuite/20_util/unique_ptr/54351.cc
! 15457a23568f454ae6fe7c3c828c41d6  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635.cc
! 0ac132c2a9872e3d25306960993576e9  libstdc++-v3/testsuite/20_util/unique_ptr/assign/48635_neg.cc
! a2e244539081e1f4b53d90d84cd691fa  libstdc++-v3/testsuite/20_util/unique_ptr/assign/91308.cc
! da0123c8d5e33209be6fecbca4fc0da3  libstdc++-v3/testsuite/20_util/unique_ptr/assign/assign_neg.cc
  a766d0d5f6dc6dc464e72270fa1f0a04  libstdc++-v3/testsuite/20_util/unique_ptr/assign/constexpr.cc
! 22a16e153425ea83c789d9ecf201b7b2  libstdc++-v3/testsuite/20_util/unique_ptr/assign/cv_qual.cc
! e8f18853c661c2c5eee06df188416f32  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move.cc
! ff850bfd192b22075d44d4a1bf1b3adb  libstdc++-v3/testsuite/20_util/unique_ptr/assign/move_array.cc
! c412c14b9a33e205a2cb1b819352358b  libstdc++-v3/testsuite/20_util/unique_ptr/assign/nullptr.cc
! c40070111e957b060a514481d5c22498  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/42925.cc
! 1946ba8d7f7e830e1a271ebf23b0a021  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare.cc
! 662ed8a3467b7ec1d468b506f1deeab4  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/compare_c++20.cc
  1b1aed9aa07f27577b5d897361aaef38  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/constexpr.cc
! 58230b75ff20bbb06847f70e8a046a63  libstdc++-v3/testsuite/20_util/unique_ptr/comparison/dr1401.cc
! 16eb1ae9fc3fdc9bdedd0d91891deff1  libstdc++-v3/testsuite/20_util/unique_ptr/cons/77990.cc
! f25c75643d7d49ce8648294a0cda0339  libstdc++-v3/testsuite/20_util/unique_ptr/cons/array_convertible_neg.cc
! a2c0a813a53bd1e336282a44626ea442  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr.cc
! 42d32c19aaccfe370422cfb9bfdd1dba  libstdc++-v3/testsuite/20_util/unique_ptr/cons/auto_ptr_neg.cc
! 9e8784b51a82e2712c441eb49b625a8f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr.cc
  4a51fb5c91ad1f904f7ddd98e262afd8  libstdc++-v3/testsuite/20_util/unique_ptr/cons/constexpr_c++20.cc
! f0c9ef81bbba762bb091e30f4bcef32f  libstdc++-v3/testsuite/20_util/unique_ptr/cons/convertible_neg.cc
! 63e88df6ba46eadfe9cde294bb211a70  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual.cc
! 14bbafa94bffea1722e6c4694fcc1ecd  libstdc++-v3/testsuite/20_util/unique_ptr/cons/cv_qual_neg.cc
! e39de11dd2bcc0392cc2d35939bb946c  libstdc++-v3/testsuite/20_util/unique_ptr/cons/deduction_neg.cc
! 16ccf33a19b06c0cfa51222588bd73d8  libstdc++-v3/testsuite/20_util/unique_ptr/cons/default.cc
! 22daaa70305b3051bf6ef738d85be9d5  libstdc++-v3/testsuite/20_util/unique_ptr/cons/incomplete.cc
! d0249b85d602d4861ebe85ec355b2d8e  libstdc++-v3/testsuite/20_util/unique_ptr/cons/lwg2905.cc
! 4603018cd05568df667044283b949cd2  libstdc++-v3/testsuite/20_util/unique_ptr/cons/noexcept_move_construct.cc
! cef9f41d86e9f6c04298c291fa3ac2f6  libstdc++-v3/testsuite/20_util/unique_ptr/cons/nullptr.cc
! e663ff00cdddaebd485050f54ba74a3b  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer.cc
! df12d166ba059fbb46fbb6a253ca222b  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array.cc
! 3a3f3b01b19d47d26e6286c1d8470768  libstdc++-v3/testsuite/20_util/unique_ptr/cons/pointer_array_convertible_neg.cc
! c1acc8b0edab7405c526ee06c2ae0ce5  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter.cc
! 9289454afc5e2ba90ef1d94f21661d84  libstdc++-v3/testsuite/20_util/unique_ptr/cons/ptr_deleter_neg.cc
! 48daaaf4a065a3f591034a4038fc359f  libstdc++-v3/testsuite/20_util/unique_ptr/creation/92878_92947.cc
! 23416695c01e5e5f6e370ba641fa90fd  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array.cc
! f27dc4d88e3df5cce06a0c942f6f0ffb  libstdc++-v3/testsuite/20_util/unique_ptr/creation/array_neg.cc
! 5099d9278206e8cab8d3f8446c36c8c7  libstdc++-v3/testsuite/20_util/unique_ptr/creation/constexpr.cc
! b1dc9b39a405173dcd774a1e8eb3ac6d  libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite.cc
! 39808a584aa86db945c45d086830a009  libstdc++-v3/testsuite/20_util/unique_ptr/creation/for_overwrite__neg.cc
! 632c9b552e0b0f807308dae2c1cf6f6c  libstdc++-v3/testsuite/20_util/unique_ptr/creation/single.cc
! c8b71a17fbce5646119ec1644a5c22df  libstdc++-v3/testsuite/20_util/unique_ptr/dr2228.cc
! 00c7a565216fb351b76b1ed0c31c90cd  libstdc++-v3/testsuite/20_util/unique_ptr/dr2899.cc
! 35e1d40d6f3238cc6bb258c197ce724a  libstdc++-v3/testsuite/20_util/unique_ptr/hash/1.cc
! d8a9b06b3c2d8af519ca62c3414f9d92  libstdc++-v3/testsuite/20_util/unique_ptr/hash/90388.cc
! 1ecfc78894f2d5e5f68dcdb77586a048  libstdc++-v3/testsuite/20_util/unique_ptr/io/lwg2948.cc
  bb40414adb587ca6cdd1ffd17960c9e2  libstdc++-v3/testsuite/20_util/unique_ptr/lwg2762.cc
! 685bd7f4efc814464287765277276f34  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/43183.cc
! da7523ea62e2e8709bfec3065b66dce6  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/48398.cc
! 995bd3fe3427756ff9f5f8d5c3851cde  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/93562.cc
  1d95a3f0a6c651e10e0eb4266405addb  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/constexpr.cc
! e97be2061ce1ccf7a00520b435bd1622  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/cv_qual.cc
! b59a682e9ca6d65ebe5eb65f14645b98  libstdc++-v3/testsuite/20_util/unique_ptr/modifiers/reset_neg.cc
! ace522ca8ab1811b66f5ae42d93a8ad3  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/explicit_instantiation.cc
! af2931f348dfac369ae4103ece58606b  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/incomplete.cc
! 741b7f7b7705412fb5c97dcc6e3a2a2a  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type.cc
! 629e0bbdcbb96f06b7c56fe25c4e5012  libstdc++-v3/testsuite/20_util/unique_ptr/requirements/pointer_type_array.cc
! 0b61085f7594e8b1f34675c2bcd9e453  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons.cc
! 6fba6e46399de76ce7881db4d4a70b80  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/comparisons_array.cc
  b06d4bee43487cb46ceadf7135cb4db5  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/constexpr.cc
! 819e1b1c82d557abebf06cf21696c963  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap.cc
! fc63665747e3ea8f7fba3bd2b8231ddb  libstdc++-v3/testsuite/20_util/unique_ptr/specialized_algorithms/swap_cxx17.cc
  79ae7324ed01aba2f0a26aa803be147c  libstdc++-v3/testsuite/20_util/unreachable/1.cc
  39e33d60fe45843188bb85ba28c7f355  libstdc++-v3/testsuite/20_util/unreachable/version.cc
! 6cdad804e564520c37e1afc56cab7f5b  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate-max-chunks.cc
! 304b459dc12bebfddf1f302c0d20acf8  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/allocate.cc
! e146873cfa2a56eb95438a7e5f8ae879  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/cons.cc
! bfee4a3349a74ba63c6ece54ad2b0031  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/is_equal.cc
! 9b9261c690dc7ed4e078dbfa2ed553cb  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/options.cc
! c33475d72523bddcf443c6af7274bd12  libstdc++-v3/testsuite/20_util/unsynchronized_pool_resource/release.cc
! 9cd37f48a66ccd6065833bf60972995d  libstdc++-v3/testsuite/20_util/unwrap_reference/1.cc
! fa6e542010d2aae2af51de31d5b81a44  libstdc++-v3/testsuite/20_util/unwrap_reference/2.cc
! babd9d79794a03d3a97c5cf49423ed5f  libstdc++-v3/testsuite/20_util/unwrap_reference/3.cc
! dadf59cd86148ea8518a2d4f9b32308b  libstdc++-v3/testsuite/20_util/uses_allocator/69114.cc
! be0257737533bf2e9f572dd790c5388d  libstdc++-v3/testsuite/20_util/uses_allocator/69293_neg.cc
! beeca5f4bb163fcc48b38c8197e1c563  libstdc++-v3/testsuite/20_util/uses_allocator/92878_92947.cc
! dde90009bc93758b6c7c6a057827648f  libstdc++-v3/testsuite/20_util/uses_allocator/cons_neg.cc
! c3f97d6a17fc64611166b17edfe49449  libstdc++-v3/testsuite/20_util/uses_allocator/construction.cc
! c0994b759f4ddb76ff5725fcc27e8b5f  libstdc++-v3/testsuite/20_util/uses_allocator/lwg3527.cc
! 2ec041b87fc00ec34cab810dee74f532  libstdc++-v3/testsuite/20_util/uses_allocator/lwg3677.cc
! 4923d3c0443a3b28bbd168af6de891df  libstdc++-v3/testsuite/20_util/uses_allocator/make_obj.cc
! ac2a817cb8c2699ed9ff1423eda8f368  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/explicit_instantiation.cc
! 81cfc564c7fb5376965a0a8ac95da1c5  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/typedefs.cc
! 215152346ffb0a6ebf15f748ae859cb8  libstdc++-v3/testsuite/20_util/uses_allocator/requirements/uses_allocator_v.cc
! fb7e6eef6b7fd2f7a653df988346c4bc  libstdc++-v3/testsuite/20_util/uses_allocator/uninitialized_construct.cc
! d3c3f4458e577669514f58e5bff422cc  libstdc++-v3/testsuite/20_util/uses_allocator/value.cc
! f8fb3d96a12ba0b9980d6129c80eeb20  libstdc++-v3/testsuite/20_util/variable_templates_for_traits.cc
  b9698b5e78dcefad507d6737875a6a1d  libstdc++-v3/testsuite/20_util/variant/100384.cc
  5ef3d7df10dd90d995e4c63bc62c39de  libstdc++-v3/testsuite/20_util/variant/102912.cc
  909e769606f79e2311fe65f425279584  libstdc++-v3/testsuite/20_util/variant/80165.cc
! 96f36026504971497597425ccde3e47c  libstdc++-v3/testsuite/20_util/variant/85183.cc
! df2b8d19cd2d92c1131c4d2386e91e5a  libstdc++-v3/testsuite/20_util/variant/86874.cc
! 073286e7eb95c31bc56aafc2886d24ee  libstdc++-v3/testsuite/20_util/variant/87431.cc
! dae1890bce8bb0da6ab5a5c50fd20417  libstdc++-v3/testsuite/20_util/variant/87619.cc
! 88a1c9c2ed487b2b55511ea21da976a6  libstdc++-v3/testsuite/20_util/variant/91807.cc
! c738372ce31ab92d308c890f48701b7f  libstdc++-v3/testsuite/20_util/variant/92878_92947.cc
! 4f18efaba1da6e8927c420a95a5722de  libstdc++-v3/testsuite/20_util/variant/95915.cc
! a3791a89fb805aa7a08933d7ae83bd18  libstdc++-v3/testsuite/20_util/variant/any.cc
! fac325ef678717bd994f8dd7a0c90b02  libstdc++-v3/testsuite/20_util/variant/compile.cc
  16902993e27490cf98e6e66c866b8de0  libstdc++-v3/testsuite/20_util/variant/constexpr.cc
! 007db2eec55c492538805c988e2136a8  libstdc++-v3/testsuite/20_util/variant/deduction.cc
! ed603e04d4570dbb3da9a37ca9ee370e  libstdc++-v3/testsuite/20_util/variant/exception_safety.cc
! 7a6bf05e5ce53946d6160996f422bcdc  libstdc++-v3/testsuite/20_util/variant/hash.cc
! 31aff0af26213c212205617f02518002  libstdc++-v3/testsuite/20_util/variant/index_type.cc
! e56cd950ff384e81521ce2616669bfa4  libstdc++-v3/testsuite/20_util/variant/lwg3585.cc
! bf272271052565f420238f8cd56f2088  libstdc++-v3/testsuite/20_util/variant/relops/89851.cc
! e686ef7065f5a1e9ebf20772126b4de3  libstdc++-v3/testsuite/20_util/variant/relops/90008.cc
! 66f9d96849ffc49b7c9677d949dd3451  libstdc++-v3/testsuite/20_util/variant/relops/three_way.cc
! 13d9cecaee4e47883ec008fa24764c93  libstdc++-v3/testsuite/20_util/variant/run.cc
  b53ced7be024099d627a420130ddfae8  libstdc++-v3/testsuite/20_util/variant/version.cc
! 1bf24751e4dca8b72aef2f74721c7934  libstdc++-v3/testsuite/20_util/variant/visit.cc
  271b1d4fa7c258bc0cfd32dff3784bd9  libstdc++-v3/testsuite/20_util/variant/visit_inherited.cc
! 44642531a7802b3458f17513ddd331fd  libstdc++-v3/testsuite/20_util/variant/visit_neg.cc
! 1f34b9e2f7fe9d1451836d5ae81120ef  libstdc++-v3/testsuite/20_util/variant/visit_r.cc
! 3ce61d7d571de5a14334aae90dd94fa6  libstdc++-v3/testsuite/20_util/void_t/1.cc
  7b0d83ebbf92b543b6da8bb8354c8d7f  libstdc++-v3/testsuite/20_util/weak_ptr/atomic_weak_ptr.cc
! 6f8e0db62583cf557616f34fce04b40f  libstdc++-v3/testsuite/20_util/weak_ptr/comparison/cmp_neg.cc
! 4c99f31089f99647018e5b377ca620d4  libstdc++-v3/testsuite/20_util/weak_ptr/cons/constexpr.cc
! 26c43ad3e7e4ded4687654bf42dca057  libstdc++-v3/testsuite/20_util/weak_ptr/cons/deduction.cc
! 195362dcdbaa55c8a419486fd9a15309  libstdc++-v3/testsuite/20_util/weak_ptr/cons/noexcept_move_construct.cc
! 6b897d033cb55ff130e351833c656265  libstdc++-v3/testsuite/20_util/weak_ptr/cons/self_move.cc
! b246d8f6e64c2116455b4dd4f1f8d8a5  libstdc++-v3/testsuite/20_util/weak_ptr/lock/1.cc
! 717e4469de743d17c7df0a72edddf518  libstdc++-v3/testsuite/20_util/weak_ptr/observers/owner_before.cc
! e3fe5ffa6e73649a9f21bc27604fa67e  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/1.cc
! 54d858067f0b4d5586a96694db21335d  libstdc++-v3/testsuite/20_util/weak_ptr/requirements/explicit_instantiation/2.cc
! 5a245092d50fbff80c427ac99d035c64  libstdc++-v3/testsuite/21_strings/basic_string/40160.cc
! b6e891619cb7e448b49abc63a8ea5d5e  libstdc++-v3/testsuite/21_strings/basic_string/56166.cc
! 554d42fbd2ede47fc8cb890a469cce49  libstdc++-v3/testsuite/21_strings/basic_string/79162.cc
! 9b15e2d1b69151c37ee69650fd30973c  libstdc++-v3/testsuite/21_strings/basic_string/allocator/71964.cc
! 44d87f9dd9e3eb7dec99c16028aad28a  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy.cc
! 26e8ad0e792657638a1bfdf00ae39b29  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/copy_assign.cc
! 8a1be185b8e779bf5e112483a0744840  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/lwg2788.cc
! f0699863497f4c06d89253c1544bca1a  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/minimal.cc
! 07a52b1fee82aa7cc683c7c489f4acf4  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move.cc
! 0641a7951ec53a2165c6e11da6eeab75  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/move_assign.cc
! 58012f97f6b4097f81d0f16cf462b393  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/noexcept.cc
! 4d243df64e10d2705dc0cc562f692356  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/operator_plus.cc
! cfbc0346628db269b889cad5c2b7abf7  libstdc++-v3/testsuite/21_strings/basic_string/allocator/char/swap.cc
! a8ca0e3fd51c20b327b9df0d9d7805ff  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy.cc
! d6f86bae1959a049756301310525c3b3  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc
! ed53a05614fe44ac9c3bb88d17566c9e  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/lwg2788.cc
! 3f73de009cc826d0a7b0d9ffc8fc4a17  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/minimal.cc
! 21d00ff02c814720fc46a3cc35dd0f47  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move.cc
! e4df0110487f94269a45c032c95e9630  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/move_assign.cc
! 291f8a6a4ddf8fc71d1d26817b4d6028  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/noexcept.cc
! e7121c7452da145e5d99f10a3fe8b35b  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/operator_plus.cc
! a34127999742d492271ae36db909a1f7  libstdc++-v3/testsuite/21_strings/basic_string/allocator/wchar_t/swap.cc
! e3229b9274c6ee53c4e7c8668c6810ba  libstdc++-v3/testsuite/21_strings/basic_string/capacity/1.cc
! 0f99ab597b0eb84d038c42be3cbee8a3  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/1.cc
! cc34e276871f3e24fbb3558c20ed371f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/18654.cc
! eb390690e93e5b1f2baa3b2e67d83576  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/2.cc
! e146911708d15911e077fa1ce7e04fc6  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/resize_and_overwrite.cc
! 8b278bc4f5c42ca1bc344edde13c8edd  libstdc++-v3/testsuite/21_strings/basic_string/capacity/char/shrink_to_fit.cc
! 153be87377c43ae32711924524a73a5f  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/1.cc
! 31f104684d3a8d09f7b16b238e1238cb  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/18654.cc
! 1c01fee09a5fa48f2fce7ce8c7a6fc20  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/2.cc
! 04970f1caa0a0469e8a17c22591b8bb1  libstdc++-v3/testsuite/21_strings/basic_string/capacity/wchar_t/shrink_to_fit.cc
! 7a52e5c34e5b042d29b9257ba617d755  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/1.cc
! 122070b73ab61f4cd7f3bf7dca05ad4c  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/103919.cc
  be058c3faf15d6649e949b8b50bc53fb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/105995.cc
! f86684f72cbec5daa260463434301533  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/2.cc
! b4a064b202abf4e89169340e921b6e88  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/3.cc
! 2472adc0bd3e13d5639ffa113c8cfd6e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/4.cc
! ad36fd0269136c6f85737337041a9716  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/42261.cc
! 450f5d7a43e48d92f78a5b444cbf98fb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/5.cc
! ac6c939656944bdd76e643d36b050120  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/6.cc
! 4b4edd5dac0d37a16893f0071b69b32a  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/64657.cc
! 68202636a79feceb3fbd19c951eae13e  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/65085.cc
! 5aec5e34a93b96081ef43d76001e2082  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/69092.cc
! a187a721e90c93cb29461897e80af0cb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/7.cc
! bf09af189d87df1b0da5b538c20e1ef1  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/79162.cc
! f3e0adbfaee9cbd2563a78b20dbc4cea  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/8.cc
! f54ff57c109e4121eb7a9718449145f3  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/86138.cc
! b4c00d929b80d9a0ba776f33eb8748df  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/9.cc
  199b6e66970aa8aeb06608fc2f1749bb  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/constexpr.cc
! 19e905de040e462595e14ad45744ae82  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/deduction.cc
! 5140752dbcd24f43ee8882554b6c4d0f  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable.cc
! 58752c7adb617de9f3cdffc102ed2f5b  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2.cc
! d95f65d021bcffddeeb3da0342066e0a  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/moveable2_c++17.cc
! 5a7664e91f10c56de60d450503b3ae63  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/noexcept_move_construct.cc
  ca9ae628b034a9ec99cd3e60951cfecc  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/nullptr.cc
! 3ddb2d2a8958b5b6adf12e63bfab4986  libstdc++-v3/testsuite/21_strings/basic_string/cons/char/self_move.cc
! 829d0925b5afbf67c928a3eb5799936c  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/1.cc
! 14cf8abb05f620469b0d7b2a476358af  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/2.cc
! 18710c36e53bdd653d0988aa699e6acd  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/3.cc
! ff1d9f9929c8a9b58eaf8b5ee954b20b  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/4.cc
! 15a7c57f8fd02f1b3e2bf5ecb1c5d191  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/42261.cc
! 06f1226c519a8994e06d64de224197f3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/5.cc
! 150b4614068f291a7b5d7794e5ca38d3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/6.cc
! f4efe16dbc86dac3c630cdfbaa229abb  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/7.cc
! bf09af189d87df1b0da5b538c20e1ef1  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/79162.cc
! 2df2c811552a94c7390ec9a7dcd42886  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/8.cc
! c136f7b84c69e6b0b5b3d1b489bde131  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/86138.cc
! d88b1469cd73aa63fa12383060dae433  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/9.cc
  09bcd6e3dcb9e2010d343ede95760d66  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/constexpr.cc
! 087b92699751886d22e778a058a0756b  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc
! 7db21209b1c32ee5208209172720cca1  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable.cc
! 6d3502a10d3aed2ef02a586b356735f3  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2.cc
! 801aed1a64c228d9495829ca38fc26e0  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/moveable2_c++17.cc
! 0fa8fec9b48f0d0885e4e58b4fdbf0b9  libstdc++-v3/testsuite/21_strings/basic_string/cons/wchar_t/noexcept_move_construct.cc
! 1cc2656931dcd70d176ce260330cb051  libstdc++-v3/testsuite/21_strings/basic_string/debug/1_neg.cc
! a659facbad1d3462954ff1731c00dcef  libstdc++-v3/testsuite/21_strings/basic_string/debug/2_neg.cc
! 985175a53a3d28a0516111f8bd2c2480  libstdc++-v3/testsuite/21_strings/basic_string/debug/find1_neg.cc
! 3eff8630b8c658a4f4991dff3ab464a6  libstdc++-v3/testsuite/21_strings/basic_string/debug/find2_neg.cc
! 2a437e26101f7a8c2a6649ec91a24402  libstdc++-v3/testsuite/21_strings/basic_string/dr2268.cc
! ad2735510cd81dedb6c0fdd062a2ba51  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/1.cc
! 583d31f6b17d8cea7d42d00ea2ab80d3  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/2.cc
! c5832a777e0175103daf8dfa184580d3  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/21674.cc
! a69d7ef29eef84e7f9e28b815f041447  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/3.cc
! 696c985a7e0ade77ad1bbf397c97498e  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/4.cc
! ac40e00a1c0e0d9cbfa9cb5a686b10f3  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/58163.cc
! fa27560b820c72dfdfb99ccf0cf7573c  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/empty.cc
! ac7098dc88928a508942e52c005061c3  libstdc++-v3/testsuite/21_strings/basic_string/element_access/char/front_back.cc
! d9ae82a1e3f4db0b38b9c35182c60b43  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/1.cc
! 37f793dd1592351e0e40cc26bcbea989  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/2.cc
! 6e6c66d8e49f2f628c1363e191a9c5d9  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/21674.cc
! 3971c003304c402c25725bcbc32f22a6  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/3.cc
! 49e79b14c2420a3698cf9c9a71fb9f4a  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/4.cc
! 80af551b111fe8fa6a7a095e4ab5e6f9  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/58163.cc
! 041d386edff40b6ae20069febefef9a5  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/empty.cc
! 3e41a5ddc9ff60be1b44a951057b54c7  libstdc++-v3/testsuite/21_strings/basic_string/element_access/wchar_t/front_back.cc
! ed4ea29df0224d7582b6382be768248e  libstdc++-v3/testsuite/21_strings/basic_string/erasure.cc
! 450ccc61ac9176f1f82b504c8d7c8d41  libstdc++-v3/testsuite/21_strings/basic_string/hash/debug.cc
! e74ae7ab972e57bcdc40fa068f22db05  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash.cc
! 2af124df0ab67d73064aeb9b9a270ccf  libstdc++-v3/testsuite/21_strings/basic_string/hash/hash_char8_t.cc
! 726740bb4db7c15e530f86f2c1ef18dc  libstdc++-v3/testsuite/21_strings/basic_string/init-list.cc
! c7339082b1d6f172c892f2aa4ba42cda  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/1.cc
! 58dd1171a9b6e2e9333029fdbc41d1ec  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/10.cc
! cb355c7b937bd60f7fb2b61c4db953e3  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/11.cc
! 737ec49b717d8365818f46866054c732  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/12.cc
! 7ee159e54cee875d905b8825606f80ff  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/13.cc
! 596da2cea70b835e4df2d8476ca031f4  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/28277.cc
! ed6765312bfec4fe43967c23bb9c3a79  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/4.cc
! a27772a3e51f8d0b99a6b817847bc164  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/5.cc
! 0e2909c0d074cd0e2e6978f41e8b3cd0  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/6.cc
! 5fabbb2b3127ce0e889456694527d5a8  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/7.cc
! 653d30e149930e79ce36047337c3abec  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/8.cc
! fe03c0ffa41f766a47289eead71a3f20  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/char/9.cc
! e158b36bff67626182f252d154b766f3  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-in.cc
! 86a3b91b187422b904da61d656f85adb  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/pod/10081-out.cc
! 12527ec9e962c449058e9d5014409921  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/1.cc
! 5f7a619421d32ad98fab64cd65be2ea4  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/10.cc
! 42b5837468db200570a1b9bd99ff8f3e  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/11.cc
! 4d6d17c034277d5d256e4c681f3285c1  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/12.cc
! 70d6be250efc409928cffe509a667fd2  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/13.cc
! 5ea7868273a58cf006552cb49cbedbe9  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/28277.cc
! 7109efe1ae23898daf85d60759817449  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/4.cc
! f1a47426f908f8c0f9e6b00d6e0be117  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/5.cc
! ee710f2b1ec4848b82571ac01bfb15dd  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/6.cc
! ed372437cf619336529477f74fd58e05  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/7.cc
! 7a673365834fa4c08853b6966df2051f  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/8.cc
! d0326a003154e3873e627bbb5a9a7d91  libstdc++-v3/testsuite/21_strings/basic_string/inserters_extractors/wchar_t/9.cc
  29bc247b1aec33f010caa020c32d9c38  libstdc++-v3/testsuite/21_strings/basic_string/literals/constexpr.cc
! dc3a9efea0377e1a7a76d5525c9738e3  libstdc++-v3/testsuite/21_strings/basic_string/literals/types-char8_t.cc
! f97c831398d5494b573d8ca8789812d0  libstdc++-v3/testsuite/21_strings/basic_string/literals/types.cc
! bc3f6d08c98bc2961b3543ec6115ea51  libstdc++-v3/testsuite/21_strings/basic_string/literals/values-char8_t.cc
! 9e12be9dd7e55ee599c35ada8256812b  libstdc++-v3/testsuite/21_strings/basic_string/literals/values.cc
! d82863227c557a85e0f2dda21c3148f1  libstdc++-v3/testsuite/21_strings/basic_string/lwg2758.cc
! a6bbde84f441acbf8908f61d6ba836a1  libstdc++-v3/testsuite/21_strings/basic_string/lwg2946.cc
! e9ef402254730233e6618a34f6558487  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/64422.cc
! 7ceee673dd0f6cbf50bc48e9e7b6df0b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/1.cc
! be7f0706bb4bb5271691d86e483c0f00  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/2.cc
! 482acb53d5bd3b0fb5773e3d845c7f73  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/3.cc
! b108d5e94067978b65cce8ce032b58ae  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/char/4.cc
! e4ed3159265733052bf4432f45406407  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/1.cc
! c70fc206ec65474c5419075b86da1101  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/2.cc
! e8f9a0f15d5873532148bbf63f33598e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/3.cc
! 2134b17ea04e4f6d2b81b2004b99caad  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/append/wchar_t/4.cc
! 07f13b74a2cc62d905b60608718de114  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/1.cc
! d8e3f4bc2a3e475869c259e1114f8101  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/2.cc
! 7c011037be73c0b7d99cbc12e5a27815  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/3.cc
! b382aff5d4c7fad9e9a29d4fd40a99d5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/4.cc
! a5c231ac6adabca74cb2324a842be490  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/64657.cc
! 30389951377b39b028edfe6bc396eff3  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/87749.cc
! b0306fb79036319b69284403f4dfa0ae  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign.cc
! 2a2e224ed144ae40705e19652886b672  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/char/move_assign_optim.cc
! 97b12d4620ca8878611d584a52c01a62  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/1.cc
! fc312ff7b3c6db7143fa632c19d5ee67  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/2.cc
! d7cd60c4896f346a26a3b7f212bf17ca  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/3.cc
! 6313d8502183d3b9d906729510e0123b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/4.cc
! 034e5362947424246143807d8efa73fa  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/87749.cc
! bbd9e35db57e1a4766862cbe90f71c33  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign.cc
! 4da7a91d3ed0a6059528969584917348  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/assign/wchar_t/move_assign_optim.cc
  ab5b8c708d26d53aaa55a1f2cabf99f7  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/constexpr.cc
! 0b3af09a611c157c70ff5157289b06af  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/1.cc
! d15808ef9fa73b43cd671f6087922fc9  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/2.cc
! 5c7bfd9f42c1b6197c3dfab4e8e84bb1  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/3.cc
! 9e8e5c49b4ffcd7e01c65d46909d18cd  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/char/83328.cc
! 035185e776f665f48bf783905eed8803  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/1.cc
! 4c80e3b836b3a713766d616330662791  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/2.cc
! 8a063da74ce0c1e04f0ca21e9745f64b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/3.cc
! a7c45fe36d131ce93a412723aa1f6027  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/insert/wchar_t/83328.cc
! 8f74625e2bfc67dcb0034eec0b3f39f6  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/char.cc
! e15d1527baf138bde3d8c249b153b1a0  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/pop_back/wchar_t.cc
! d40d1b19deb18ef12f5138149bfe0f42  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/1.cc
! 8af2de950f98fed509062543eddb136d  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/2.cc
! 9d343e78d8401d29c699540a3092ee81  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/3.cc
! 273afb5b4c94181c4f74f6ed1840a9c5  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/4.cc
! 9cd2e1ef7a4bd3a1ad6c0d93f82d9621  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/5.cc
! 2192a7a13f7999e99f7d437b04f9883b  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/6.cc
! 3b6b9a23bc51c522be262fad1b229e46  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/char/7.cc
! 82aadb7a650de743ab9f706fcc890cf4  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/1.cc
! db857d2b2355b40303ff875a1bcc6dba  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/2.cc
! 3d34fc013b0350de36b9d2983f109d94  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/3.cc
! 3a7089df1ad76e46bce072b817c6a94c  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/4.cc
! 368ff3697b96b1622356ad51cf4cdd1a  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/5.cc
! 240bb0aac21276d01bb7cbeba92b4d38  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/6.cc
! 8d78a36d54efdd4360bea06385a453da  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/replace/wchar_t/7.cc
! 99d550ee8bc0db1851ce8b0c5391ea1e  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/swap/constexpr-wchar_t.cc
! b6f0bc9dc3c3a1742183008805d55c76  libstdc++-v3/testsuite/21_strings/basic_string/modifiers/swap/constexpr.cc
! d3004023fd26c1276005d007c803e999  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/dr1261.cc
! 3d1afd797d10d841e7a822bee29a936c  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/errno.cc
! 2f247fc719067b6f27d0c6f2b30973fe  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stod.cc
! f19e9c31ad17a74b90374fa6ddd786e9  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stof.cc
! 875ed62cd11cf921135c3b65b74aab12  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoi.cc
! 3f53e602ea0805a1faceba535eb31f42  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stol.cc
! 7885d6be62ea9e42d8728a5eeedbadc5  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stold.cc
! ddcb04ee44357cdc22ee680d78a23322  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoll.cc
! 0bf475d025c3537fcaa74e6d28d5c3b5  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoul.cc
! a000fdbe66adfcc3fa75e0a853b93f13  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/stoull.cc
! f00acf70a087e8c3c5fe9a4db27fbc85  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string.cc
! 768a05d098fbd18c59084d04b7aeac4b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/char/to_string_int.cc
! b73c6221ce1ee7ae8658326a950d999a  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/dr1261.cc
! 4ba547476d425ef40526f9387e9bb1e6  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stod.cc
! 414a97aea974e1b09930c7c1dae87869  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stof.cc
! fbc6650336935a3df653043ccd1f83a2  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoi.cc
! 1606993ac2a4e1404bbee94054ac50c7  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stol.cc
! 75327ed7bdc8a60a5ef7c6a94fd63545  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stold.cc
! 1442064e7db5397e5ef05233215edd4b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoll.cc
! 2a5c98966224c33a95c577b109362e1b  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoul.cc
! a246493248782db6f36668ae289a3451  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/stoull.cc
! baf8c9f546b7737cdb576bce7b283486  libstdc++-v3/testsuite/21_strings/basic_string/numeric_conversions/wchar_t/to_wstring.cc
! 0c824132f07dd1ab74199f3b2d01ac67  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/1.cc
! 5411d35d28c144d53fad3bfecd4d78eb  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/13650.cc
! a3e06e8d0e373199c662ae08b6a473c6  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/2.cc
! bd5d27b6c1da7f4be96a036ee98cfdc7  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/char/3.cc
! 52cf6d72521f757bfd4e167ebcaa9702  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/1.cc
! b342297140022db104d8a7e9314eaba7  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/13650.cc
! ba9327af72c6d0e0d7bd3784fd5f2a8e  libstdc++-v3/testsuite/21_strings/basic_string/operations/compare/wchar_t/2.cc
! 93f87f1a0b3ba768472cc8db84a95184  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/char.cc
! 664c197366efb542e491a78b2daa057c  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/nonnull.cc
! bf67abc2af0e02fca7b45b2fe058a762  libstdc++-v3/testsuite/21_strings/basic_string/operations/contains/wchar_t.cc
! da3f700a53d22cd029a604673e059e11  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char.cc
  9ccbc06738d22d9f941b8f2b369c7915  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/2.cc
  fabf5d00ed38687c6c74b03d67132fac  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/char/86169.cc
! ca74682c72cb547cf309e380caad822d  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t.cc
  ebeb1bb794a93823182dc633b65b1594  libstdc++-v3/testsuite/21_strings/basic_string/operations/data/wchar_t/2.cc
! d2d0c0c0426ba17ee7ca595b93758943  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/char.cc
! d2eb7e00f51e147b53e269ee5a54016b  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/nonnull.cc
! d9692856e73df0221987fda7f78155a2  libstdc++-v3/testsuite/21_strings/basic_string/operations/ends_with/wchar_t.cc
! 444b64548d23704e4a303ac9b8e02e08  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/1.cc
! 8f4d02af8ac16a22c104bb1b0f049ba5  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/2.cc
! 1914ac106913189cc7d46f627c374450  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/3.cc
! 495262d51482585157e2aabdbec9562a  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/4.cc
! 8bdaad7a4f65d65736d6791065765587  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/5.cc
! 8e0f36a9ba8381fcad2b2b0e379fc43c  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/char/6.cc
! a87a3410af73b08fb6268563121adcf4  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/1.cc
! 01fe2d7a1f08515e7829279446542468  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/2.cc
! ac2a76809895bc30517a3d98d5e9c542  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/3.cc
! cacc3939b95d716129bccc5e9ee2bb31  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/4.cc
! df57bf5bddbe681d47dea1c00f1615b4  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/5.cc
! 93037cc673bc2d4406362aad7a5f1ff2  libstdc++-v3/testsuite/21_strings/basic_string/operations/find/wchar_t/6.cc
! 0929b68af76f2868c47af9fdfb902dd0  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/1.cc
! 3a209c0176656b87cb674198eb90b4dc  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/2.cc
! cce14431bf0692211b55df9c7e334e2f  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/char/3.cc
! f458d6f207b5a5fd8c044d4867032ca1  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/1.cc
! 37c8413f7678fc7d5021d8ba77bbd947  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/2.cc
! e1379b8f02ac0c59fe21155211fe2be3  libstdc++-v3/testsuite/21_strings/basic_string/operations/rfind/wchar_t/3.cc
! 009796081b5221cb3926bdf16a869553  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/char.cc
! d8228831ba87109cd7686050d436f3d7  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/nonnull.cc
! db04f247e911ebc06065a1a7820a0e1d  libstdc++-v3/testsuite/21_strings/basic_string/operations/starts_with/wchar_t.cc
! 0efa410a44788b37b971e20b00239a7d  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/char.cc
! d309d585c472f4258a9df5a31d196126  libstdc++-v3/testsuite/21_strings/basic_string/operations/substr/wchar_t.cc
! 0eaa80908e3e8a3bedbec91d8534aa55  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/1.cc
! 2530d45d2b37eb5d37130125251b3026  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/2.cc
! 08f8f123b3c66e6c68d3a793ea486543  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/3.cc
! d5ac23158c5224f83b3426ae770481bd  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/4.cc
! 2e91e91b0f7367672ca4f838f95f16fd  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/5.cc
! a3d819359bca2735a13dd37e7f42385a  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/65630.cc
! cd03608ba8df2b79ad10c10853412c2f  libstdc++-v3/testsuite/21_strings/basic_string/operators/char/cmp_c++20.cc
! 2184b75db62a5e06f148dfe3fec4dd13  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/1.cc
! a9163488086cd53320abd5681319044c  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/2.cc
! bcdba3717895e3214d63c82972aa792f  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/3.cc
! bba5b2f2825f0f268c89efa534fe720f  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/4.cc
! 76c21389fd89c2b87095d2e22a6f46c5  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/5.cc
! 07ac0f6003e7a06f95a2cfe8d441bb11  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/65630.cc
! 2feb4f58fcd1a86cd94fd0f78cf25abe  libstdc++-v3/testsuite/21_strings/basic_string/operators/wchar_t/cmp_c++20.cc
! 1c89a536189c8da59c5435d906bc413a  libstdc++-v3/testsuite/21_strings/basic_string/pthread18185.cc
! d0ab9f00c3cf2988d68c36ab472c377d  libstdc++-v3/testsuite/21_strings/basic_string/pthread33394.cc
! 1d368360ea164162cf9d58b08865a520  libstdc++-v3/testsuite/21_strings/basic_string/pthread4.cc
! e00f31c62b50e18a7c4a46864a91b8dc  libstdc++-v3/testsuite/21_strings/basic_string/range_access/char.cc
! 34c5001b8e07cbc48e11283e199026a6  libstdc++-v3/testsuite/21_strings/basic_string/range_access/wchar_t.cc
! 565c5ec680db2e0e3b35d0f839dff8aa  libstdc++-v3/testsuite/21_strings/basic_string/requirements/citerators.cc
! aaf18fb0a9d5edc271ba41792431d6b0  libstdc++-v3/testsuite/21_strings/basic_string/requirements/dr438/constructor.cc
! fd66d883ab327f5322f80eb3a04e445c  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/basic.cc
! 54dee2908541ce4a28d02f4e878b5aa8  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/generation_prohibited.cc
! a6b869b45b05e3e7eea7ddd0791fe817  libstdc++-v3/testsuite/21_strings/basic_string/requirements/exception/propagation_consistent.cc
! e4b1a2da6b288803a3e3a7d6f237ae1a  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char.cc
! f87f96901eefbbea385a1ad0fbdf9760  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char16_t.cc
! 93a16ab695177f00a24a66e11b32408d  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char32_t.cc
! 1448f73ea4ca4f7245aedfa599502af0  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/char8_t.cc
! 167802bfd4d9158c1612f8f5f35c635a  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/debug.cc
! 38a5b626be9beda3fc57399c9de44115  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/int.cc
! 3f89d2b06a48d2e618fd1e7a813cede0  libstdc++-v3/testsuite/21_strings/basic_string/requirements/explicit_instantiation/wchar_t.cc
! 548f5b4933cd5dff9e1bab22d6593fc2  libstdc++-v3/testsuite/21_strings/basic_string/requirements/typedefs.cc
! 835097c2172db9f22ccab934fde4c5e4  libstdc++-v3/testsuite/21_strings/basic_string/types/1.cc
! 41bfe29b649cf173193fb301d1d66846  libstdc++-v3/testsuite/21_strings/basic_string/types/23767.cc
! eb941b2ddb084362ec25469836094143  libstdc++-v3/testsuite/21_strings/basic_string/types/pmr_typedefs.cc
! 6a5f5f548c638bef1db20b0decc6b9c0  libstdc++-v3/testsuite/21_strings/basic_string/version.cc
! 25b666935abfdcfacd9402175b925a46  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/1.cc
! bd2fcf012f22bca17f71938654e7e311  libstdc++-v3/testsuite/21_strings/basic_string_view/capacity/empty_neg.cc
! 6f5744941bda0900f23005eec84b3be6  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/1.cc
! 449849247be69fe6bf8da5608a2b940a  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/2.cc
! 2d06ffe71e83aa708ba5ef26f438fe97  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/3.cc
! 0359b3b9c24cef1c8868cb49b36d5e54  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/nonnull.cc
! f75b007cbb4d96d46be0e477d2ea40fe  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range.cc
! 9fcf7c317fc64c00d2a1ce31a8e02f8f  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/char/range_c++20.cc
! 4857e3ecc12e42d04cc68d970112d4fd  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/1.cc
! cbd7b8ec95766de539cddeb236e1ac1d  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/2.cc
! 5f76a9247b7f158188c45a960b6d7ad1  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/3.cc
! c853f3b5cbb364138334aafe3e6d0996  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc
! 2047c3fa698c40011c232ea9272f76c2  libstdc++-v3/testsuite/21_strings/basic_string_view/cons/wchar_t/range_c++20.cc
! 189772ee8c9cb947540e0fcc2468c0b9  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/1.cc
! 2f1d01939d4756397fdb3626884d77ec  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/2.cc
! 97375dbf28bddc3b2d15dd48c6d3c301  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/back_constexpr_neg.cc
! 24f912da9ea0a1967f1922e8a5e58deb  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/constexpr.cc
! 982c39178042ea06a31ece5633e8ea23  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/constexpr_neg.cc
! 83061dbc3d6709caf3f84d7dfae6e192  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/empty.cc
! a84afcca25a601f62e2325d452f0832c  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back.cc
! 8015f89246b5ca90ef4ba4f5145a9dfd  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_back_constexpr.cc
! 179ced9577ca1d5b065756a378857403  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/char/front_constexpr_neg.cc
! a2820f71f69b6af1c4e31ebd1ec3c18a  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/1.cc
! 809ea50fb745d94d86f93488e1237442  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/2.cc
! a9086673784016ab36e483d8adad7ef0  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/back_constexpr_neg.cc
! d5a4052beb9d03faf2437cf9f22804d8  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr.cc
! 542feb883e2b6573481768712d82c924  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/constexpr_neg.cc
! 300b2a08336154fc76b49f0bd3a37513  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/empty.cc
! 50b141f2a74cfd101047cb98c8797342  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_back.cc
! 758775c4b7c4b3fae483a34a47d97f61  libstdc++-v3/testsuite/21_strings/basic_string_view/element_access/wchar_t/front_constexpr_neg.cc
! ddf9de4116327775c1dad6d02a204c25  libstdc++-v3/testsuite/21_strings/basic_string_view/include.cc
! 56b76a72c310399f2c690dec4f539a98  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/94051.cc
! 05b9ac08f93a3e0fcce4456defc3753b  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/1.cc
! 2da7913db1af2a5aac333dbf9f64750e  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/2.cc
! f0f5036db68cde0561a116880c91b737  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/char/3.cc
! 86b6afda429d13a98fe9bca60e7533d1  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/pod/10081-out.cc
! bca1ff3771c249fb961641c4e2a81ccf  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/1.cc
! 867d72f1642ad0b9e538eda3a3ac94e3  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/2.cc
! be1ce3f7d1a0546d3ea7386ddabf69fe  libstdc++-v3/testsuite/21_strings/basic_string_view/inserters/wchar_t/3.cc
! 51c953ac9cde5639aaea6b74176e29a3  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types-char8_t.cc
! fad93e46b52efaaf848d338f729ec103  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/types.cc
! 9ba97b2790fc994a31cb8944ba1bda73  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values-char8_t.cc
! b575c3deed677b77af68ed1a3db6fbf4  libstdc++-v3/testsuite/21_strings/basic_string_view/literals/values.cc
! 479b3ea2e3af2099a1d20aaeebd3fa93  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/char.cc
! 28aa7f45113ce1b5daf61bf3d8b031a2  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_prefix/wchar_t.cc
! a53318c2edf633986af97c1f6d5c9e49  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/char.cc
! 911fc588d058d168a334700d76a1c837  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/remove_suffix/wchar_t.cc
! bbe147a22a02595e2b068826931e9faf  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/char.cc
! 7b2270cf2bc8a89823e295b39d3a3ec0  libstdc++-v3/testsuite/21_strings/basic_string_view/modifiers/swap/wchar_t.cc
! a873a124ea427925129b184670154eca  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/1.cc
! 6b7da94ede012777427d091b186a340e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/13650.cc
! 2b562b0ea3a3b633d59ccf59b680b364  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/2.cc
! c9061e3b2b1f325b3e8a2c50d61bf193  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/70483.cc
! 6d3663017df5ef45618436976cea784a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc
! 28c3c4ee90868ccdef12835874a98f33  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/1.cc
! e6ecae222a5c177ababebd5d293abfd4  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/13650.cc
! e169552662d7feae3667242bfa40432f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/compare/wchar_t/2.cc
! 5f61f2291d11bba3ffb7966b29fc2864  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char.cc
! 78ba57cf104d67c493b6c143d337f836  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/char/2.cc
! d35002a24e47e7e4f1b505f4ad023614  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/nonnull.cc
! 8a5bba775b58f5e7e063fdf8634cbf8a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/contains/wchar_t.cc
! 2a8511379ecd61b2df0682d25879a66e  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/1.cc
! 332d8f03e1a6d60fdc59a71d9ef99184  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/2.cc
! 69b48bf22e7514a1b2b2dc9c8976202c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/char/constexpr.cc
! 94b427f939d71afa5996f1d7ba5ad801  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/1.cc
! b1e82bd18c74150d76e15674613fdb75  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/2.cc
! 1109fd0433b547b9e045394e4677f57a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/copy/wchar_t/constexpr.cc
! 49684812d0e6e538d983a81cc02ea19b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/char.cc
! 3aca8654c80e2a1ffcc111b84f41adec  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/data/wchar_t.cc
! 80af7ff898991ad6a9ad95e43635b507  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/char.cc
! 6da1cef6c9e572f35cb8c24104383276  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/nonnull.cc
! f01a88be82996da674b44f4160b4aa2b  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/ends_with/wchar_t.cc
! 925ba3eed527f99001845ce2d13ed503  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/1.cc
! eadbb734992022df61a04a6795402023  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/2.cc
! 83fc25587a75a2aeb2fe03fce0c79051  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/3.cc
! acfb5bcc1184a958969cb88261cf4b8c  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/4.cc
! a27ab762d98de00afd2aa9c38ff90398  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc
! aaf7ac10dba5bfadd4b9f01a47e44890  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/1.cc
! fbb3a630c5ecf39b36297b468a73d18d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/2.cc
! ae13693e2d836764e3b5eb874d4dbc43  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/3.cc
! adb5afe410ec24d8b1e2d078197322e6  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/find/wchar_t/4.cc
! 87a2ca6d4669a662337f59e8f5a46334  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/1.cc
! e39cc268670f8f8a36192724e8143f1d  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/2.cc
! 315aff0f577e7f6e2bf2c930ee57b403  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/3.cc
! 3f70ee0223b99deb0bf4374d1bc42d0f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc
! a5fbd83c49a79910e7b95b22af3bf1df  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/1.cc
! c912fa14e1a1bdd1dd5b804d67691104  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/2.cc
! 7384e22c0dd695956cf7f1ec5e210669  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/rfind/wchar_t/3.cc
! a1bc341126f95e40b88583fab882a728  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/char.cc
! 30ff5701187b7b3b2bde652a252c24bd  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/nonnull.cc
! 5530148abc9ecd92f905bdeeafcad564  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/starts_with/wchar_t.cc
! b967af2b8222ca60f0e34e1546fffc7a  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/string_conversion/1.cc
! d892a5acce6d4d5a054236cb13bb5dcd  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char.cc
! eeac98fcf8cb03bafabd06856eb2b8f8  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/char/83511.cc
! e02aec243e4625f91d78b284b412b00f  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t.cc
! c90586da42f114afacaf6471404f6957  libstdc++-v3/testsuite/21_strings/basic_string_view/operations/substr/wchar_t/83511.cc
! ff8a222034beb0c0fa72632c32407f2a  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/2.cc
! a3f8c90a59a458c6b5492f1f627d8183  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/89446.cc
! e37687b29f1b21a642d7497e66b3a333  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/char/cmp_c++20.cc
! eceac8920a6291281b2fad38d61284de  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/2.cc
! e78bc74dd3059b2d3c4dbb19220aefe4  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/89446.cc
! 67cd36dd0a2971d936d46451d4b23d06  libstdc++-v3/testsuite/21_strings/basic_string_view/operators/wchar_t/cmp_c++20.cc
! 54748ee7591ac471bef4a4e62428a4a7  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/char.cc
! 840edecf8b9169dea0eb50a6c9172172  libstdc++-v3/testsuite/21_strings/basic_string_view/range_access/wchar_t.cc
! 2c4705134e2bd0cac1c8e760bfa715db  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/constexpr_iter.cc
! ccd3ee58131bbc9cbb2bdcb5a9e36f46  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char.cc
! 7875becdebc696ea3375ceab5fc561dc  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char16_t.cc
! fc8e1665781b8c8b1420e99e45de3f34  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char32_t.cc
! 4d409f886c410e071297d18bac442ff5  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/char8_t.cc
! 609472d53ad24c2d7185fedb2ad7605b  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/int.cc
! 5c6891f92d8c93382114ce0abb37eed0  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/explicit_instantiation/wchar_t.cc
! 317fbb7a1035c9d445ab944435b397f4  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/traits_neg.cc
  58947d8735c23b82574427ce2851e965  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/trivially_copyable.cc
! 42cfd034e3b79733923e02f381ec5557  libstdc++-v3/testsuite/21_strings/basic_string_view/requirements/typedefs.cc
! 2b8b42c4752279a29c3d7d7506650525  libstdc++-v3/testsuite/21_strings/basic_string_view/typedefs.cc
! fc65f8eb5e2c83f8567b930da581261b  libstdc++-v3/testsuite/21_strings/basic_string_view/types/1.cc
! a628213b78ad8cb87b82803c5c205c4e  libstdc++-v3/testsuite/21_strings/c_strings/char/1.cc
! a048b7bf56b0f411f37f5fc5140bea4c  libstdc++-v3/testsuite/21_strings/c_strings/char/2.cc
! 1551dd9fa0fe2b6b04842e4a0d5333fa  libstdc++-v3/testsuite/21_strings/c_strings/char/3_neg.cc
! a5d43073d77e6a82fc19d777ecf8d46d  libstdc++-v3/testsuite/21_strings/c_strings/char/69626.cc
! 4dfd578243aeada191cf34fd6dcfdc73  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/1.cc
! a832a3b960eb348c9173631d099625c3  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/2.cc
! 4c17567bb37dac4f130cf7027ac16d1c  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/24559.cc
! 6d3a63038ce6c57d5c627c929b6f6e5d  libstdc++-v3/testsuite/21_strings/c_strings/wchar_t/3_neg.cc
! 6b5a2a7c9ce21f32df0f07815bb0efbf  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/1.cc
! f0db6b54329d88264f75aa5376489f1b  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/57704.cc
! fc10e558e5f0aee7e00e78d125372b52  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/65049.cc
! efa54d1e2c4a146ab8d06a00a38bbdda  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/99181.cc
! a69bb92d9f0f2bcaa12e2aec20890f78  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char/typedefs.cc
! 132f710a1ae736bc4b3338248e680501  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/65049.cc
! aef6c0c2eebd1498f4102e8db40413ab  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/eof.cc
! f2c6c42a828851eb37d9148fcefe3e06  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char16_t/typedefs.cc
! 483a3a84e32e9c9ca684db9e4f8fb046  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/65049.cc
! 5fd4bebc9501aeb094d9e17067387c22  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char32_t/typedefs.cc
! 07e029003eb11094bca1b387945a53b5  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/65049.cc
! 7a0d0fe61505afee600f1cb350b756e7  libstdc++-v3/testsuite/21_strings/char_traits/requirements/char8_t/typedefs.cc
! 96e6ace878d64aa0787ee025456f45b0  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions.cc
! b2754088a4965336937e1c9b767da08e  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++17.cc
! ae7c2934821e4045acb5fa8a6277df96  libstdc++-v3/testsuite/21_strings/char_traits/requirements/constexpr_functions_c++20.cc
! 601aeb96e61803fb8096e966218ff6f3  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char.cc
! c02c3ae15df9123b2d04fdae2eb59b29  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char16_t.cc
! fa5c44437e5ecd3f2008a100ae5e2316  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char32_t.cc
! 77b04ef47665e228c801a2f17760e283  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/char8_t.cc
! 4311d564224d14cab63316326788747c  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/short.cc
! a0764c47b95aac741a1128599f86c9d4  libstdc++-v3/testsuite/21_strings/char_traits/requirements/explicit_instantiation/wchar_t.cc
! 99577f5ff45876691722dc4e5131b1fa  libstdc++-v3/testsuite/21_strings/char_traits/requirements/short/1.cc
! b1ec4b6e389f98222cf9955ace4c9676  libstdc++-v3/testsuite/21_strings/char_traits/requirements/version.cc
! 87cf9e6a8c10cad9deb44d9513136428  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/1.cc
! 79d68a3dff628328c4288f28e9a8b8d7  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/65049.cc
! 94651ce8ae498577f4401db7961c7ca3  libstdc++-v3/testsuite/21_strings/char_traits/requirements/wchar_t/typedefs.cc
! 487c06a30ca0d6c9bc95754f69b8373d  libstdc++-v3/testsuite/21_strings/debug/shrink_to_fit.cc
! b0dd8a27316f1e2e0dbd3733a00ea1b3  libstdc++-v3/testsuite/21_strings/headers/cctype/functions_std.cc
! e51c267eaf1b599da67a9687f5f02016  libstdc++-v3/testsuite/21_strings/headers/cstdlib/functions_std.cc
! 74d8f2d219c4dea19223dbb900699dc2  libstdc++-v3/testsuite/21_strings/headers/cstdlib/macros.cc
! 57a3fef1508771ef1604b876a04514bb  libstdc++-v3/testsuite/21_strings/headers/cstring/functions_std.cc
! 74d8f2d219c4dea19223dbb900699dc2  libstdc++-v3/testsuite/21_strings/headers/cstring/macros.cc
! c44581afe212aa940b02d06ef08ec2f0  libstdc++-v3/testsuite/21_strings/headers/cstring/types_std.cc
  1c6d34d6c23ccae8874ab2004b5561cd  libstdc++-v3/testsuite/21_strings/headers/cuchar/functions_std_cxx20.cc
  bf5af2094c9ef74f8a08d7d077043065  libstdc++-v3/testsuite/21_strings/headers/cuchar/functions_std_fchar8_t.cc
! ac6e154f2010c1a25a2e3e5e0a498b33  libstdc++-v3/testsuite/21_strings/headers/cwchar/functions_std.cc
! e261711669880000f2e48529ebe0d144  libstdc++-v3/testsuite/21_strings/headers/cwchar/macros.cc
! 7e8f1e3bfe8786cf5195e5ea98d42d97  libstdc++-v3/testsuite/21_strings/headers/cwchar/types_std.cc
! fdf1a422d56cd773d4c6bb42114d6eae  libstdc++-v3/testsuite/21_strings/headers/cwctype/functions_std.cc
! e269ca3a4f741cf69fc9ad8d634dbd7c  libstdc++-v3/testsuite/21_strings/headers/cwctype/macros.cc
! 6fd8f7f4c52dd74ecac879ede01189de  libstdc++-v3/testsuite/21_strings/headers/cwctype/types_std.cc
! c6b993d6061255adfb629d6a7065b65b  libstdc++-v3/testsuite/21_strings/headers/string/synopsis.cc
! 5db96f4b33031626f430a526409342a7  libstdc++-v3/testsuite/21_strings/headers/string/types_std.cc
! f1696a0e1020201e7457b55869bd55c8  libstdc++-v3/testsuite/21_strings/headers/string/types_std_c++0x.cc
! 38c71a6ec06ba0be9ca0d5e7552a77f3  libstdc++-v3/testsuite/22_locale/classification/isblank.cc
! eaf5cb5b1c5445d7062bcabc4b59c1b6  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/char/wrapped_locale.cc
! 705d6507191f5082ebd86ebae00c4715  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc
! ae261a42d79d4be397afceac4c3ac79e  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc
! 067e1dd1eb6a0efdb3b465885b9c6a39  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc
! e2d45ee5f8e1e6ca0ebd75d1a3eaf0bb  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/always_noconv/wchar_t/wrapped_locale.cc
! fd01b31b169942eecab854f246bc52e2  libstdc++-v3/testsuite/22_locale/codecvt/char16_t-char8_t.cc
! 01b1dd4508f18cb388f882127de06e5b  libstdc++-v3/testsuite/22_locale/codecvt/char16_t.cc
! bd333062b7b6faf3b89b05fcdf075c73  libstdc++-v3/testsuite/22_locale/codecvt/char32_t-char8_t.cc
! 0a854aa822b999e314f3fd2f27e43efd  libstdc++-v3/testsuite/22_locale/codecvt/char32_t.cc
! ef0d7ab133458c0e4fdcf24623b8b3d6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_unicode.cc
! c6356589ddb2f76da9726a03bce7be0e  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_unicode.h
! 4586afaccef10b14e5cccbaf448d95c6  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_unicode_wchar_t.cc
! 750e8d83b8e45b141befcbeca8c9d9d0  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/66417.cc
! 622ff2c6b116c7d3c82b128e5342029d  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/79980.cc
! 8f88813744024d0f74dae7d2052ca424  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/80041.cc
! 9298c94c14de146f6de9b9ba6e0eeb11  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/members.cc
! 0e71f450fcb7bf37738b522479fe9df0  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/misaligned.cc
! 1faaa353f8f7b1363a580963407f671f  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf16/requirements/1.cc
! f0e0b8b7aa2f0ac96542bd8ee2825fc8  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/69703.cc
! 57cf489de4bf4fc2854a6a97fae53bd7  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/79980.cc
! 30419e2f85794d51e4ebaa9af72ba8f7  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/members.cc
! 0e7ad6df2255fd2a2c4578f322eeab64  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/requirements/1.cc
! 871695de7d205d3e553290f2244faca2  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8/wchar_t/1.cc
! da54cd1782fc142170311a8a5dbe0b01  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/66855.cc
! bfec7548b2fee30e0cfc4549383442fa  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/79511.cc
! 9a99bb7b23e551430c76ccbb42e7486c  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/members.cc
! da99d6a758b85537b3da93b440098665  libstdc++-v3/testsuite/22_locale/codecvt/codecvt_utf8_utf16/requirements/1.cc
! ae1311fdb66ed197cd662a2e232ecc05  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/encoding/char/wrapped_locale.cc
! 006119b24e4ba69eb713383eb0f246e0  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/1.cc
! 34ccd12aa40ddb73607f6b5defaee330  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/2.cc
! 7f1d710f265893942c7cb455179221ae  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/3.cc
! 31418c8b3d779d63176da7cf7e452e5d  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/4.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/encoding/wchar_t/wrapped_locale.cc
! 645327a16ccba526025363329c6bb7bc  libstdc++-v3/testsuite/22_locale/codecvt/in/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/in/char/wrapped_locale.cc
! bfa2622d4535cbaf069cbac3f1e5cfd2  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/1.cc
! d244061dc87e4f80cb6b70ed3237301c  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/2.cc
! 32b5bf699d403067ae8b0a3e16b542f6  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/3.cc
! 9710b8aab643027a5b7249cb4ddb8888  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/4.cc
! 5ce8e00bbb74de82abbe64e43d440aa8  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/5.cc
! 02574a1175c2ba4e4823ab0e66b1242c  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/6.cc
! 2a0cba2c8adaf9d54de16f286839207a  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/7.cc
! 09e00aa94d531a7bf6575cd6998b0dc6  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/8.cc
! 7778408a7815a634e8115db003ebd5ad  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/9.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/in/wchar_t/wrapped_locale.cc
! 64c11daf6f1631070afbdc8d52ddfe35  libstdc++-v3/testsuite/22_locale/codecvt/length/char/1.cc
! 7043ded648ae3b234af124c7062df94f  libstdc++-v3/testsuite/22_locale/codecvt/length/char/2.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/length/char/wrapped_locale.cc
! cc133e010fcec429e0ed8c3d45381ea1  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/1.cc
! db5451522f9a1cbddbd048f0a329642e  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/2.cc
! a17dff2c0511c57be6c2b17558a024a5  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/3.cc
! c913eb5a9f6543f72a184aee236f7fdc  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/4.cc
! aa39cf16e76031e0b4f39922fb161b00  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/5.cc
! 8205cd44c270c6606c9aa70c72969d0a  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/6.cc
! 8b0540f102ea7b7520f56d1ff791a3ae  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/7.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/length/wchar_t/wrapped_locale.cc
! 913fa70a1ce87e06604bac84e142dad4  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/max_length/char/wrapped_locale.cc
! 2690b93aaa137a8c87c7880c7d9235d1  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/1.cc
! 08871e19ec4b51838173e5eb251a254c  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/2.cc
! d9d5c9df2752a5c542d08f925337fe8f  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/3.cc
! 0413ac7d437882bcf978d88446d26549  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/4.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/max_length/wchar_t/wrapped_locale.cc
! 870a6bac055c89a3a4a9ca23f5a611b1  libstdc++-v3/testsuite/22_locale/codecvt/out/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/out/char/wrapped_locale.cc
! 8c452e917fb516a9b23c72f76b3f3cb7  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/1.cc
! 007f7c3fe99c4924c9402dae6a68322f  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/2.cc
! 3480b75f50fde3ba3b378a3a13d51ae2  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/3.cc
! 3e991a0bd313714838a86033374eb794  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/4.cc
! 3eff2cc50fb427267439988122954ad6  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/5.cc
! c16ecf65ff3bcc1c91c43cf219c1f177  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/6.cc
! 9d580d38c8a6541de311b3384bde07cd  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/7.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/out/wchar_t/wrapped_locale.cc
! 511895868b31987905363ba465e81b8d  libstdc++-v3/testsuite/22_locale/codecvt/requirements/base_classes.cc
! 6e0c3365805bb083e03a3eb9b7635303  libstdc++-v3/testsuite/22_locale/codecvt/requirements/explicit_instantiation.cc
! fe8d51a8f8e59e24fd2085f5b42f97bb  libstdc++-v3/testsuite/22_locale/codecvt/requirements/typedefs.cc
! fa662865db83cfbf2ff68981f4f4cacb  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/unshift/char/wrapped_locale.cc
! 1bea4b94f6a18497f35cb465ed0dae12  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/1.cc
! f6042e08b5fa4f0736abb479d0e5f1ec  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/2.cc
! 3d86eedea533ea25a54cc677f1c80b0e  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/3.cc
! d972083ee10eedbcf5f770de8d4c4be3  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/4.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/codecvt/unshift/wchar_t/wrapped_locale.cc
! bc15edf57ecdce4156f0f909e5afc102  libstdc++-v3/testsuite/22_locale/codecvt/utf8-char8_t.cc
! 97f91623bb77cabfe81fe71f99224495  libstdc++-v3/testsuite/22_locale/codecvt/utf8.cc
! 01792ce9d66b315ff14b405cbb16443d  libstdc++-v3/testsuite/22_locale/codecvt_byname/1.cc
! 7d8fcfbf79ebf47945df3b59b4549a09  libstdc++-v3/testsuite/22_locale/codecvt_byname/50714.cc
! 75a46db58749c5cf208ec45f3c18cba9  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/base_classes.cc
! 42293373f3a4d35296dc4838c24a7656  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/explicit_instantiation.cc
! 02bcbd3a9b14be27456620755f063526  libstdc++-v3/testsuite/22_locale/codecvt_byname/requirements/typedefs.cc
! b0c06624603b6e242f837e20e18f565f  libstdc++-v3/testsuite/22_locale/collate/compare/char/1.cc
! 3ecb922667f03e109023dee78b40d219  libstdc++-v3/testsuite/22_locale/collate/compare/char/2.cc
! 6b43d09b748a8aef808f442bba94fbfd  libstdc++-v3/testsuite/22_locale/collate/compare/char/3.cc
! 03a5b39a58447cc011f08c09ebc4b42e  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_env.cc
! 8603ffcecbc9f0b0560e8a2e892fe5c9  libstdc++-v3/testsuite/22_locale/collate/compare/char/wrapped_locale.cc
! dd7dd048bb0c6cd426009c1e9c6f4fa3  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/1.cc
! 53b80edd5ce0392e13afdd146dc7067b  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/2.cc
! c6c2e135cbfb43acb69b7edbca20fb81  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/3.cc
! a8645490571a31691da8b6dc0e356b79  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_env.cc
! aef6fcfc0afdc72dea7864bfe836b8d9  libstdc++-v3/testsuite/22_locale/collate/compare/wchar_t/wrapped_locale.cc
! 8d08235c5f6e154214f7de328a3d6eb1  libstdc++-v3/testsuite/22_locale/collate/hash/char/1.cc
! 0a140ff792c6deba85660adb398c9c4c  libstdc++-v3/testsuite/22_locale/collate/hash/char/2.cc
! 2cc00815eac507db670a506dc95ddeb6  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_env.cc
! 64003f6c3a8025425f6a6edee95e8a4f  libstdc++-v3/testsuite/22_locale/collate/hash/char/wrapped_locale.cc
! a303f28138d0f91c447d6d3e471adfc9  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/1.cc
! 0efc4fe31b31f2857e7da3d1acdaba53  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/2.cc
! a8645490571a31691da8b6dc0e356b79  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_env.cc
! aef6fcfc0afdc72dea7864bfe836b8d9  libstdc++-v3/testsuite/22_locale/collate/hash/wchar_t/wrapped_locale.cc
! e7ed8e7642bb2da89c591d7fa4b775fa  libstdc++-v3/testsuite/22_locale/collate/requirements/base_classes.cc
! 5d77f6f99e29af4a1157db7df2208a0e  libstdc++-v3/testsuite/22_locale/collate/requirements/explicit_instantiation.cc
! 4d907ec5c769e063d0e8b2c421f52900  libstdc++-v3/testsuite/22_locale/collate/requirements/typedefs.cc
! f90b5b471c80cf99136a5ce653758ee8  libstdc++-v3/testsuite/22_locale/collate/transform/char/2.cc
! 07e443ac99d4099568e20556e8acfe05  libstdc++-v3/testsuite/22_locale/collate/transform/char/28277.cc
! 6f1e55d52e5452a49ff98103c4e3b6ef  libstdc++-v3/testsuite/22_locale/collate/transform/char/3.cc
! 4505f95f52d3e8d0212a3ee48f550d03  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_env.cc
! 738077726235ffa1d4f6a058980e69ac  libstdc++-v3/testsuite/22_locale/collate/transform/char/wrapped_locale.cc
! 2dcf152cbff00d629e1d2e234be50ae3  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/2.cc
! 4f80ed548cbb9777bb85c3ecb314972a  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/28277.cc
! 02f2bfa391d11285b9e695d19819180b  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/3.cc
! 76af008f026b27dd270187f146c03c00  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_env.cc
! 9099bb95a40ea26a49e96472e101015a  libstdc++-v3/testsuite/22_locale/collate/transform/wchar_t/wrapped_locale.cc
! 803bad5db6205e5346a27b137c560b3e  libstdc++-v3/testsuite/22_locale/collate_byname/1.cc
! 014dc7d6a6d0a4d90fc86055aaeb6ff8  libstdc++-v3/testsuite/22_locale/collate_byname/88681.cc
! 268c61e376edf99cde249974029d0c57  libstdc++-v3/testsuite/22_locale/collate_byname/named_equivalence.cc
! ea0effc12f29caedaeb60236fcf5b24d  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/base_classes.cc
! ceecf2e10d609f0c1684f720eea6d961  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/explicit_instantiation.cc
! 2fb565d97673d699901405daecb68aa0  libstdc++-v3/testsuite/22_locale/collate_byname/requirements/typedefs.cc
! abedb0c5ea42a34d7bb36d7d7185e270  libstdc++-v3/testsuite/22_locale/conversions/buffer/1.cc
! b5bdf4055b914313c63699a30867b2a7  libstdc++-v3/testsuite/22_locale/conversions/buffer/2.cc
! 6d0508822edcb4d8a89acc2d1ebb8083  libstdc++-v3/testsuite/22_locale/conversions/buffer/3.cc
! 4e86d3067c9c413e6459b9f20000514f  libstdc++-v3/testsuite/22_locale/conversions/buffer/requirements/typedefs.cc
! aff67744150b05475ec52417aaf2eb51  libstdc++-v3/testsuite/22_locale/conversions/string/1.cc
! 173011b75f81e90be30e1f530edbb543  libstdc++-v3/testsuite/22_locale/conversions/string/2.cc
! f3eb891548b235320b2a3eee595ace98  libstdc++-v3/testsuite/22_locale/conversions/string/3.cc
! 6d8cdeb88d0de12eb7ea68301234b894  libstdc++-v3/testsuite/22_locale/conversions/string/66441.cc
! 1e212cba566408d9fd80890d66277c50  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs-2.cc
! e3ba62e3dd934b669c3c2e0672f71c97  libstdc++-v3/testsuite/22_locale/conversions/string/requirements/typedefs.cc
! 36c5b9587f20586758065fc0d13a9fe9  libstdc++-v3/testsuite/22_locale/ctype/2.cc
! d320d700d152083ca83af1d4c8750fcf  libstdc++-v3/testsuite/22_locale/ctype/cons/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/cons/char/wrapped_locale.cc
! 47211ecb93479d9cb8f4251027a318e3  libstdc++-v3/testsuite/22_locale/ctype/dr695.cc
! 877c08cbbcd2dbeac2c49b1136651af5  libstdc++-v3/testsuite/22_locale/ctype/is/char/1.cc
! 07d1a4a6a0c0d5eaf92b7c86cd5a127a  libstdc++-v3/testsuite/22_locale/ctype/is/char/2.cc
! 07a40b11a45b223ea2f5885deee09d29  libstdc++-v3/testsuite/22_locale/ctype/is/char/3.cc
! 79d9c428bb88f4fc4eeb2d8f7851d203  libstdc++-v3/testsuite/22_locale/ctype/is/char/9858.cc
! 4d260e75eba03e05fa4e14f23b0ff28c  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_env.cc
! d8cd83179dc27caa55bc5cd6b1424b7e  libstdc++-v3/testsuite/22_locale/ctype/is/char/wrapped_locale.cc
! a7691a69907eb638b82e921111aa9ba8  libstdc++-v3/testsuite/22_locale/ctype/is/string/89728_neg.cc
! 861e84b1e6ecb7a22e0ff3832c0b2f59  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/1.cc
! 2c7480cffe9f63e66a6fc685e5edb7e2  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/11740.cc
! abbad76ed148ef85ebb7c3f338e00fa6  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/2.cc
! 3fe40478142758a5c009b1643ce80abb  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_env.cc
! 0f7edaebd024a20c520eb5a0047e9202  libstdc++-v3/testsuite/22_locale/ctype/is/wchar_t/wrapped_locale.cc
! df81b17ab0258dfaa2effafd9584a692  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/1.cc
! d7c3696d4acfb007e5d8ea95f0a0a4bd  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/19955.cc
! e232a6080c1a069bd7b69a33966033f6  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/2.cc
! 3fe40478142758a5c009b1643ce80abb  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_env.cc
! 96bd8acefa909730010c24105f57937d  libstdc++-v3/testsuite/22_locale/ctype/narrow/char/wrapped_locale.cc
! 10369e9f1e130bba17f937260b0390ef  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/1.cc
! 09a76c804c4598751154b5eb99ffe4cc  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/2.cc
! 783bb7d4e5b50e41e040bb82edf47afd  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/3.cc
! 3fe40478142758a5c009b1643ce80abb  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_env.cc
! 96bd8acefa909730010c24105f57937d  libstdc++-v3/testsuite/22_locale/ctype/narrow/wchar_t/wrapped_locale.cc
! fdc080858771ec1195345a1315a69446  libstdc++-v3/testsuite/22_locale/ctype/requirements/base_classes.cc
! 4cbea2671e1aaef2dd1aa6790929be2a  libstdc++-v3/testsuite/22_locale/ctype/requirements/explicit_instantiation.cc
! 5b12fa9f3f11e6ce0dfb7d2ddfdf1282  libstdc++-v3/testsuite/22_locale/ctype/requirements/typedefs.cc
! 06e5bcf579e2e9e3b0f81bae3c43acc3  libstdc++-v3/testsuite/22_locale/ctype/scan/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/scan/char/wrapped_locale.cc
! 59152a5d7e480b1d6906c1a69411e1f1  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/scan/wchar_t/wrapped_locale.cc
! d900bc0a9118f095cbcfdecd93080742  libstdc++-v3/testsuite/22_locale/ctype/to/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/to/char/wrapped_locale.cc
! eca0e910b4394227551d5a0fd6f500ae  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/to/wchar_t/wrapped_locale.cc
! 78666d1462b3850cc012a35785f1a54f  libstdc++-v3/testsuite/22_locale/ctype/widen/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/widen/char/wrapped_locale.cc
! 7a9140e1a53ea6d9c60c1b03bec62253  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/1.cc
! 295e355e0d5f4415a327286cef78d4a6  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/2.cc
! 9af50bf8097e8d26ca87ca0911c9e849  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/3.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/ctype/widen/wchar_t/wrapped_locale.cc
! 84a47de1802d2497e8482191d5b2ab4a  libstdc++-v3/testsuite/22_locale/ctype_base/11844.cc
! 06771a5ec5fc3a9ddf61a7baa149b618  libstdc++-v3/testsuite/22_locale/ctype_base/53678.cc
! 76fda4da0f7416956781525f3eacde63  libstdc++-v3/testsuite/22_locale/ctype_base/blank.cc
! 64e51f31d9ea69f507d95469c443558b  libstdc++-v3/testsuite/22_locale/ctype_base/mask.cc
! 1921bace7c6cf2ffc55f2ad15e0811ac  libstdc++-v3/testsuite/22_locale/ctype_byname/1.cc
! bf17f879ab80f90a48c2ad0b416a02c3  libstdc++-v3/testsuite/22_locale/ctype_byname/2.cc
! 4c396357430150123240aac7a00ccde4  libstdc++-v3/testsuite/22_locale/facet/1.cc
! be51178b9dcab5bb3a1acee313152442  libstdc++-v3/testsuite/22_locale/facet/2.cc
! 5aa24cf724bcc727b3bd3fbb2a949f49  libstdc++-v3/testsuite/22_locale/facet/25421.cc
! 1b4b3d979463bd1e61fd72ae6b32f516  libstdc++-v3/testsuite/22_locale/global_templates/1.cc
! de6abfefdb0444970a6d2602dbe47c67  libstdc++-v3/testsuite/22_locale/global_templates/standard_facet_hierarchies.cc
! 4d0d3acb099c9ee4db5adb687a09f42f  libstdc++-v3/testsuite/22_locale/global_templates/user_facet_hierarchies.cc
! b650cdbccba00842777db6b13e0f4e83  libstdc++-v3/testsuite/22_locale/headers/clocale/functions_std.cc
! 02212a3050cee1008f49ce4cc97af3c3  libstdc++-v3/testsuite/22_locale/headers/clocale/macros.cc
! 58c8af6ac8a05aed18f800f2fd781ead  libstdc++-v3/testsuite/22_locale/headers/clocale/types_std.cc
! dfe375aeb99d852234b62f22edde07b2  libstdc++-v3/testsuite/22_locale/headers/locale/synopsis.cc
! c219dd0356a878b395b8749c405371c7  libstdc++-v3/testsuite/22_locale/headers/locale/types_std.cc
! 901e3252f343a1ab1b9a676ce59d46b6  libstdc++-v3/testsuite/22_locale/locale/13630.cc
! b5443198980d35addcb3f2f39a795518  libstdc++-v3/testsuite/22_locale/locale/cons/1.cc
! 90085538cda9dc4460995ebd36d300e9  libstdc++-v3/testsuite/22_locale/locale/cons/12352.cc
! 94a5e842e0dc9e2aa615fe66511bcf45  libstdc++-v3/testsuite/22_locale/locale/cons/12438.cc
! 332e412c12d1e02d114294038ef92396  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-1.cc
! e1765f1c8b0d1e029654d0a10c6025e7  libstdc++-v3/testsuite/22_locale/locale/cons/12658_thread-2.cc
! 1f8c42c9c54cbc1307c3b05be112691f  libstdc++-v3/testsuite/22_locale/locale/cons/2.cc
! 017b5c422731ccb0e3b8322ebb49ca4b  libstdc++-v3/testsuite/22_locale/locale/cons/29217.cc
! 288d7ccb93bdd31318fceae08528ce9b  libstdc++-v3/testsuite/22_locale/locale/cons/38365.cc
! 18d7000cbc8a7d91626f497b4ec5f412  libstdc++-v3/testsuite/22_locale/locale/cons/38368.cc
! 05a799e055698b2e887d9516dd2d29a0  libstdc++-v3/testsuite/22_locale/locale/cons/4.cc
! 3c4f4666016ce48799b24d2ad8529890  libstdc++-v3/testsuite/22_locale/locale/cons/40184.cc
! 78222f3d867bfa53c7e4c45c23206715  libstdc++-v3/testsuite/22_locale/locale/cons/5.cc
! 1e06922446d91d9705b1fb7df9b3c3fe  libstdc++-v3/testsuite/22_locale/locale/cons/6.cc
! 266f41bef44e0a71f28aee8e214d4c4a  libstdc++-v3/testsuite/22_locale/locale/cons/7.cc
! 30d131c01843da261186772c6d2a3ca5  libstdc++-v3/testsuite/22_locale/locale/cons/7222-c.cc
! d03cd1c9314265b0d41699c74077b7f2  libstdc++-v3/testsuite/22_locale/locale/cons/7222-env.cc
! 541cc16dcf2a015fdadf5fa008193822  libstdc++-v3/testsuite/22_locale/locale/cons/8.cc
! d76dc6b099c96202d65db7c0f68c3c6f  libstdc++-v3/testsuite/22_locale/locale/cons/unicode.cc
! db54cb228356c77f680dc793b9df5f57  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/1.cc
! ecca6491533bf700a30087c20096d2c6  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/14071.cc
! d1e3f47589a9f0715e07dcae5f911f88  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/2.cc
! ddc8b404d6ef4c0cd38cfa43ab7d4ccf  libstdc++-v3/testsuite/22_locale/locale/global_locale_objects/3.cc
! 7d0b55a741e00c0ed1bc28e1e79a4deb  libstdc++-v3/testsuite/22_locale/locale/operations/1.cc
! 60328c62ad20ad9a034b7ab3354a772b  libstdc++-v3/testsuite/22_locale/locale/operations/2.cc
! 472c54bf90b228237ca251f3b87d2bf6  libstdc++-v3/testsuite/22_locale/messages/13631.cc
! f4e8508bc34067c55addfde6aace81e2  libstdc++-v3/testsuite/22_locale/messages/members/char/1.cc
! 5a9aa03eb44eceacd7088cded52bacf4  libstdc++-v3/testsuite/22_locale/messages/members/char/2.cc
! 75ef555b433fa33db0f1d2210a1b5efb  libstdc++-v3/testsuite/22_locale/messages/members/char/3.cc
! 34f5d4e132dddf881674c02df0a1760e  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_env.cc
! b73182ef5f4eb4eeb1cbf6d597ad2b76  libstdc++-v3/testsuite/22_locale/messages/members/char/wrapped_locale.cc
! 5c4818f83a9236e57e7b08be55f6791c  libstdc++-v3/testsuite/22_locale/messages/requirements/base_classes.cc
! eb1326057a39973503b67f32cb6e574a  libstdc++-v3/testsuite/22_locale/messages/requirements/explicit_instantiation.cc
! fab2c705d14af0d18521fc5500e75a0f  libstdc++-v3/testsuite/22_locale/messages/requirements/typedefs.cc
! 3d60a3e9dd5cc732802f61e6b71fd713  libstdc++-v3/testsuite/22_locale/messages_byname/1.cc
! fb48fc7caeeb28560b24a47a2bf7ee11  libstdc++-v3/testsuite/22_locale/messages_byname/named_equivalence.cc
! 886f466c304899cae94b11e46a77f567  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/base_classes.cc
! c6881e486f2c6a7b8ec0067cdbbac02c  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/explicit_instantiation.cc
! c645ca7dc82534e0039d57decb60238b  libstdc++-v3/testsuite/22_locale/messages_byname/requirements/typedefs.cc
! c62a33bb8526571a35138ca93e1b0eb5  libstdc++-v3/testsuite/22_locale/money_get/cons/3.cc
! 0352c944a8616c0699942be94b71416f  libstdc++-v3/testsuite/22_locale/money_get/get/char/1.cc
! 18f45a8c68cebfd5d482f616d247239e  libstdc++-v3/testsuite/22_locale/money_get/get/char/10.cc
! e5d0f1417711c4cf409add0d410b8f11  libstdc++-v3/testsuite/22_locale/money_get/get/char/11.cc
! e4818a703adfb825e54b7d3ab65e9ed4  libstdc++-v3/testsuite/22_locale/money_get/get/char/11528.cc
! 5c29cd1b3fcdae38b85189a91736331b  libstdc++-v3/testsuite/22_locale/money_get/get/char/12.cc
! 7e5c905a27802c02688d85236529969a  libstdc++-v3/testsuite/22_locale/money_get/get/char/13.cc
! 4ad8d250e7932b3abfcc223f1b55d378  libstdc++-v3/testsuite/22_locale/money_get/get/char/14.cc
! 19f5c1f6f41145f9f1f59bafa952e454  libstdc++-v3/testsuite/22_locale/money_get/get/char/15.cc
! 59f7eb6b45d2e7b971407e60564eb5d5  libstdc++-v3/testsuite/22_locale/money_get/get/char/16.cc
! 4c9123c3d7d99bacc554576f60841543  libstdc++-v3/testsuite/22_locale/money_get/get/char/17.cc
! effaaa1412704c39470c77aaf95b7013  libstdc++-v3/testsuite/22_locale/money_get/get/char/18.cc
! 9268b2d458bff56f02d3a60b30bb2830  libstdc++-v3/testsuite/22_locale/money_get/get/char/19.cc
! 7c567ea731df044aad96a954bc7ed30b  libstdc++-v3/testsuite/22_locale/money_get/get/char/2.cc
! eaf9045cf8979adba5c4da6ffe1937c9  libstdc++-v3/testsuite/22_locale/money_get/get/char/22131.cc
! 7c2400524555692ca35d27be81d975f8  libstdc++-v3/testsuite/22_locale/money_get/get/char/3.cc
! 08c562bde9b802a8dfb300209d8c3864  libstdc++-v3/testsuite/22_locale/money_get/get/char/38399.cc
! 0b9f4e56bc9eb06eae319b69fb3c241a  libstdc++-v3/testsuite/22_locale/money_get/get/char/39168.cc
! 0bc02f150fca1ec61a074bb6bab48919  libstdc++-v3/testsuite/22_locale/money_get/get/char/4.cc
! 2e7053953472acaf05bae0ebc1fbb42d  libstdc++-v3/testsuite/22_locale/money_get/get/char/5.cc
! f5d656d1faa12df651367308310c1397  libstdc++-v3/testsuite/22_locale/money_get/get/char/6.cc
! 499d0160de2b6cf5d519d1cfa5987d49  libstdc++-v3/testsuite/22_locale/money_get/get/char/7.cc
! c1e69b7de33df1c94e09aeaad08297b1  libstdc++-v3/testsuite/22_locale/money_get/get/char/8.cc
! aeb5a254d0d846156d22d670307f6030  libstdc++-v3/testsuite/22_locale/money_get/get/char/9.cc
! 4a27c1b633a2a6cf67b3b1dcb510b4b6  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_env.cc
! 2673930d6c9b8b7840c10eeb5a43897c  libstdc++-v3/testsuite/22_locale/money_get/get/char/wrapped_locale.cc
! 4789d320f6764d42c9512245e4f3d9fa  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/1.cc
! 113bafe02a5fcc8cd25808698d1cd00a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/10.cc
! b53b3478d9ac39b27f3af1a9a1702b87  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11.cc
! ba50dc1996f6fb75657d0f128f49afa8  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/11528.cc
! cdfe2f84cc480de64e8d848eb045840a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/12.cc
! 676aa40dbd0ef5aee9deae7a6f80589b  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/13.cc
! bed42ea747a7203c8a1ce144d4528cbd  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/14.cc
! 55ae61a024b6932aed02b51b72164b71  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/15.cc
! 679b3b649235edb842f5d16176cf577a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/16.cc
! 5d7dd995b97d0e55f6dfe37d02a04dab  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/17.cc
! 9590059a1f2a5ffc13ad1ddafd8ba8c4  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/18.cc
! 94c0d0c7637713c10a33be0d2e4d368f  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/19.cc
! 5f9874c5e4ab7c2c801efa6eb8160b97  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/2.cc
! 10f96cd7d0503a81962074f6222f6d6a  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/22131.cc
! f5d5f969b30b21023e13fcbc4adcd7e5  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/3.cc
! 7ddf52355f7ea58f660705d782d15b40  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/38399.cc
! ca4b3565bc32b5beabf0931aaded6270  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/39168.cc
! ebd180eccceb1fefe3e46630f8be3f31  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/4.cc
! ce7d6005fa954a07402bc46517f7b2b2  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/5.cc
! 73c9b359363f7868a9d2b391205a49f3  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/6.cc
! 237c207ebbb3384763b31f676ff9fd69  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/7.cc
! 898ac5199809b711ab32675ada5e20f1  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/8.cc
! 79f1e8302de8ba29f1daea62f4a67038  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/9.cc
! 4a27c1b633a2a6cf67b3b1dcb510b4b6  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_env.cc
! 2673930d6c9b8b7840c10eeb5a43897c  libstdc++-v3/testsuite/22_locale/money_get/get/wchar_t/wrapped_locale.cc
! f52f950706462af8377ced9344ec3666  libstdc++-v3/testsuite/22_locale/money_get/requirements/base_classes.cc
! 10d13ee6a37e01116db5360b4de70366  libstdc++-v3/testsuite/22_locale/money_get/requirements/explicit_instantiation.cc
! 8916d9c1ad3636ff28f43e93a6ce5601  libstdc++-v3/testsuite/22_locale/money_get/requirements/typedefs.cc
! bf0660eb1d285ea22023d43535b85404  libstdc++-v3/testsuite/22_locale/money_put/cons/3.cc
! 62cb858df697a49cc3ca672d0421f621  libstdc++-v3/testsuite/22_locale/money_put/put/char/1.cc
! 944dd76f11c88b49277a1c28f36dc198  libstdc++-v3/testsuite/22_locale/money_put/put/char/12971.cc
! b21215f72d95edf9da805d2b0f7087c2  libstdc++-v3/testsuite/22_locale/money_put/put/char/2.cc
! b2925dfd49568f471ec4a075cd4f8b55  libstdc++-v3/testsuite/22_locale/money_put/put/char/3.cc
! 59e800b4460d4c215710baaf29b876c5  libstdc++-v3/testsuite/22_locale/money_put/put/char/39168.cc
! 4ac222724a8bae7cf8b773a14dfd4944  libstdc++-v3/testsuite/22_locale/money_put/put/char/4.cc
! cd44589593f995cf11168f128b4a034a  libstdc++-v3/testsuite/22_locale/money_put/put/char/5.cc
! 8f6f45a478ca9f6ac4436091b04ab8b3  libstdc++-v3/testsuite/22_locale/money_put/put/char/6.cc
! 90b364487fafcd797b48c71e60ed15a3  libstdc++-v3/testsuite/22_locale/money_put/put/char/9780-3.cc
! 374e7b18c38c75f80da92bf4fda83f1b  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_env.cc
! f2d02c09b4c1a83bcf9eb4a39573db28  libstdc++-v3/testsuite/22_locale/money_put/put/char/wrapped_locale.cc
! b9ebde1c54581d68683349227cf4eb30  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/1.cc
! e03f2033025e56fe09c0421bdd5fbbbf  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/12971.cc
! 481f5a432a7b99e7bf53f266f160794a  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/2.cc
! 86d9f21c5528366231324bb75b7b2e72  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/3.cc
! 5ea1c8d3aa837d8c6a1670d6d881930e  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/39168.cc
! 6dabf19e10f271600356b782fb473d43  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/4.cc
! 5c640fc02710089a36990a0b12ca9e8f  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/5.cc
! 36e70af45aaa0fd429d1c59637b80210  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/6.cc
! 374e7b18c38c75f80da92bf4fda83f1b  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_env.cc
! f2d02c09b4c1a83bcf9eb4a39573db28  libstdc++-v3/testsuite/22_locale/money_put/put/wchar_t/wrapped_locale.cc
! b3726805dc38eaf5c4828657ae9ae70e  libstdc++-v3/testsuite/22_locale/money_put/requirements/base_classes.cc
! 4d6520e43305745aac6ce161b31fe98d  libstdc++-v3/testsuite/22_locale/money_put/requirements/explicit_instantiation.cc
! e25d324a23e0a21f5237dfc2c5ea45d7  libstdc++-v3/testsuite/22_locale/money_put/requirements/typedefs.cc
! f725d6e30f56572d110eb07ce64badc7  libstdc++-v3/testsuite/22_locale/moneypunct/40712.cc
! e609c19109da5eba2fd28406c328d53d  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/1.cc
! e29b34b6c97791712b11650d13c077e5  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/2.cc
! 3fe40478142758a5c009b1643ce80abb  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_env.cc
! c2049e4c17d6755a6320685031db2e82  libstdc++-v3/testsuite/22_locale/moneypunct/members/char/wrapped_locale.cc
! a37cbb50033aeba9b7b1b700e015e125  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/1.cc
! 08cd766547e4c1a6d9bb2a04815c6edd  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/2.cc
! 3fe40478142758a5c009b1643ce80abb  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_env.cc
! 0f7edaebd024a20c520eb5a0047e9202  libstdc++-v3/testsuite/22_locale/moneypunct/members/wchar_t/wrapped_locale.cc
! 5aa16d6efd9b58cb52427af94c759425  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/base_classes.cc
! 674e5b52869a6061bd9171bf90cb9e86  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/explicit_instantiation.cc
! d622b98b82c4c841f0c6064b870924d2  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/intl.cc
! cbdf991bc069784acf9f3eb849e10e60  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/false/typedefs.cc
! 3e3b37d2bb228faf1fab7f5a78480c7b  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/base_classes.cc
! a6f3e6b27077563ae29554f7dee0c993  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/explicit_instantiation.cc
! 4cdc53efd94e31c3d0d4f51704ce079e  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/intl.cc
! c33b82a66021888188f7f434647bcafb  libstdc++-v3/testsuite/22_locale/moneypunct/requirements/true/typedefs.cc
! 4a3cc7cf35e7e4b0c70ea65f4797a424  libstdc++-v3/testsuite/22_locale/moneypunct_byname/1.cc
! 37dc1f221923a2de7717af51f8623a45  libstdc++-v3/testsuite/22_locale/moneypunct_byname/named_equivalence.cc
! 028558405f89ffebc35b094391443260  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/base_classes.cc
! f3ccc6ba19502c9e33aea9faf06d78d4  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/explicit_instantiation.cc
! dec4743796f4ae41bcaf6800d2d74dc0  libstdc++-v3/testsuite/22_locale/moneypunct_byname/requirements/typedefs.cc
! f4140f255f98e29f00628da08c027dd2  libstdc++-v3/testsuite/22_locale/num_get/cons/3.cc
! f4194473cec9a50cb4237edd948381cb  libstdc++-v3/testsuite/22_locale/num_get/get/char/1.cc
! 21a78cfdd133c6f508fe32a3feca0074  libstdc++-v3/testsuite/22_locale/num_get/get/char/10.cc
! 517d2922852244c248c14964cc9dfbc8  libstdc++-v3/testsuite/22_locale/num_get/get/char/11.cc
! 6efbbefe680d565b66ecbd5ec6751bc0  libstdc++-v3/testsuite/22_locale/num_get/get/char/12.cc
! 1fe4f3b1dbefe801c4a04f8d33af9a90  libstdc++-v3/testsuite/22_locale/num_get/get/char/13.cc
! 94652e5106dee8f36a073a893f0583f1  libstdc++-v3/testsuite/22_locale/num_get/get/char/14.cc
! 02f494066bb5667ec02c2f784d246879  libstdc++-v3/testsuite/22_locale/num_get/get/char/15.cc
! 6bbc9b1814b7428c401ebc97d7e89524  libstdc++-v3/testsuite/22_locale/num_get/get/char/16.cc
! b8f5a396203957f71b2c285df31cc6bf  libstdc++-v3/testsuite/22_locale/num_get/get/char/2.cc
! a35e610f4ab030ad83a8400ba86d74af  libstdc++-v3/testsuite/22_locale/num_get/get/char/22131.cc
! 7dcbea5c2ede67b4f8000bddb7b9904c  libstdc++-v3/testsuite/22_locale/num_get/get/char/23953.cc
! f706cc38269e78d310b264b8bc0d04b7  libstdc++-v3/testsuite/22_locale/num_get/get/char/3.cc
! 08538d31d83d4fcc0d81ba444e8bfa27  libstdc++-v3/testsuite/22_locale/num_get/get/char/37958.cc
! f196476100cc42c85eea6be98a173ffe  libstdc++-v3/testsuite/22_locale/num_get/get/char/39168.cc
! adfe750ad0b63fb471bd7623fc4f77f5  libstdc++-v3/testsuite/22_locale/num_get/get/char/39802.cc
! b9741721416eae6ad82e96e1975822d4  libstdc++-v3/testsuite/22_locale/num_get/get/char/4.cc
! b4579f60a5b09353bb019c280f16b78a  libstdc++-v3/testsuite/22_locale/num_get/get/char/5.cc
! 124c15ebd503ef0fb1173eaaefe07a7b  libstdc++-v3/testsuite/22_locale/num_get/get/char/6.cc
! 7241961a6507c57425e3fd49c8373d1a  libstdc++-v3/testsuite/22_locale/num_get/get/char/7.cc
! dbd9e0f549d5ca4e0b7094cf1bd43f9f  libstdc++-v3/testsuite/22_locale/num_get/get/char/8.cc
! 4fb7235e81eda7a6313e23eed3733fdd  libstdc++-v3/testsuite/22_locale/num_get/get/char/9.cc
! 84bf625c0dfb01614348f37f9169dde9  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_env.cc
! f2d02c09b4c1a83bcf9eb4a39573db28  libstdc++-v3/testsuite/22_locale/num_get/get/char/wrapped_locale.cc
! 583e3f6698de20c3f519872fba1ff46b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/1.cc
! fdaa783371542bfad1c63f7ec3b84cbb  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/10.cc
! 571e6dfe632306cbb3f163416278a4b3  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/11.cc
! 09ff32106a4e3fab0c46b27f46b9aa0b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/12.cc
! 7099ba2466377bb2be22b73e7cbb338b  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/13.cc
! 0890e9952d047e923d9e6ebbefb02aad  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/14.cc
! cd69b40bc53550dde0e55268f897ab76  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/15.cc
! 2a195796762cc324a2a13ee46c1e548c  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/16.cc
! 6589c3fe4fd0d42ea57f5976f064c0cc  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/2.cc
! 0163a78bbb8a7d12b20a73b124b4be6f  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/22131.cc
! 5945e3ea3b55e4f8a0c7becf84daa733  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/23953.cc
! bd943b42f401f13ff5fdf5dfd111c008  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/3.cc
! f2e068b8facbef799f2ee40f6946759a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/37958.cc
! 4518902c8869aa01a82b3cb84fb50a4c  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39168.cc
! 2cd7776fee0bef96b0a68b3805be438e  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/39802.cc
! 3d4e04b68774ccf26fa053a583fdda61  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/4.cc
! 03d9c655dbbaeba635168ca27f459937  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/5.cc
! 69c2448ebfce454497c08a872c0a5f5e  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/6.cc
! ab9c105f741dd0c74f9a4b2f0979d70c  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/7.cc
! 3e17ac4bb6a280e9df020c1fb528d9b5  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/8.cc
! bf4c2d63ffa9814a2e5fbb2be4227a8a  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/9.cc
! 84bf625c0dfb01614348f37f9169dde9  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_env.cc
! f2d02c09b4c1a83bcf9eb4a39573db28  libstdc++-v3/testsuite/22_locale/num_get/get/wchar_t/wrapped_locale.cc
! dca59d4e0045ddb962cc1d7dffb28ab8  libstdc++-v3/testsuite/22_locale/num_get/requirements/base_classes.cc
! ba63ba690f31f0e4120a338d2c164a4f  libstdc++-v3/testsuite/22_locale/num_get/requirements/explicit_instantiation.cc
! 2f03f026fdf2ce53c4c66486f29b8e23  libstdc++-v3/testsuite/22_locale/num_get/requirements/typedefs.cc
! 990a53f735bdc4a6c98dc650a9a556f7  libstdc++-v3/testsuite/22_locale/num_put/cons/3.cc
! 283b0b5e69c320acabb90e6e4f04f2a7  libstdc++-v3/testsuite/22_locale/num_put/put/char/1.cc
! f8d384b85ee1a10e9a2183ade4dc20d2  libstdc++-v3/testsuite/22_locale/num_put/put/char/10.cc
! 8b672823361ad0f5aa74afd18bf341a9  libstdc++-v3/testsuite/22_locale/num_put/put/char/11.cc
! ed382458eee7976b3e30dfce74fe5a4d  libstdc++-v3/testsuite/22_locale/num_put/put/char/12.cc
! d90d6c4e272925e55b6a43c762b78124  libstdc++-v3/testsuite/22_locale/num_put/put/char/14220.cc
! 0a1262b092bca0a3538a295cc5b95264  libstdc++-v3/testsuite/22_locale/num_put/put/char/15565.cc
! 74195989d7e8fd80c7b4699ad06d0ec0  libstdc++-v3/testsuite/22_locale/num_put/put/char/2.cc
! 5f88adf2b05558736fb9793e4996a16c  libstdc++-v3/testsuite/22_locale/num_put/put/char/20909.cc
! e1fcf5bf991f9138f3e6829db77d5373  libstdc++-v3/testsuite/22_locale/num_put/put/char/20914.cc
! 91de11d9ead67848be71bc9e2988e1b5  libstdc++-v3/testsuite/22_locale/num_put/put/char/23953.cc
! 61a48f36286e95b39eb30e6bc7d6afd4  libstdc++-v3/testsuite/22_locale/num_put/put/char/3.cc
! fb852523e9f084582d7d2d82d1ca65d8  libstdc++-v3/testsuite/22_locale/num_put/put/char/38196.cc
! d7e4b8d4e76bd930bb0dc500a195c440  libstdc++-v3/testsuite/22_locale/num_put/put/char/38210.cc
! 9c11aff1bb8446f8709e66d058459c5f  libstdc++-v3/testsuite/22_locale/num_put/put/char/4.cc
! 4d6d8f2a0fc9d5c485e74f42a79f46e0  libstdc++-v3/testsuite/22_locale/num_put/put/char/5.cc
! d892af71510a3eabfcb426c45e5a451d  libstdc++-v3/testsuite/22_locale/num_put/put/char/6.cc
! d0b856991f9f94f7277dea22561d2ff8  libstdc++-v3/testsuite/22_locale/num_put/put/char/7.cc
! 9101b7e660e96f92bc9521b8bd5cc532  libstdc++-v3/testsuite/22_locale/num_put/put/char/8.cc
! 76746c1dda2f3989a1f1a8411a830b6e  libstdc++-v3/testsuite/22_locale/num_put/put/char/9.cc
! be28404a225aa4a64a9a3205afb7107a  libstdc++-v3/testsuite/22_locale/num_put/put/char/9780-2.cc
! 0607eabfbd292d095d6a9f6c22ae7b29  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_env.cc
! 8134b5a9716b089ca254fa89f0465c1a  libstdc++-v3/testsuite/22_locale/num_put/put/char/wrapped_locale.cc
! 9ec4c2984e733ae12c95db5060c949ed  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/1.cc
! 35c4781c0e67212e7248c288985f2cc7  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/10.cc
! a08f023c61517e755b5b2770810cd813  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/11.cc
! a5f22568e67402c0cc259ef269399524  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/12.cc
! 1f8be1f884a8d7d19e62f36cc917c0de  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/14220.cc
! 6545250c3a37178368c84acd5a96adb4  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/15565.cc
! df981d00751a1bc5b40e5763e485b667  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/2.cc
! c1e5d49e52f56f31d71d3d697611ad26  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20909.cc
! dba677e83129f6a372a2bd1ecf2ff3cf  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/20914.cc
! 6a0695c8958d70c5d71543b97c018d70  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/23953.cc
! 92c05a062eefff7d21dd9dd861a866a0  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/3.cc
! 7eb0172b6358db45530d4e555c72d779  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38196.cc
! aec433294dee05c43112ce98403cd469  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/38210.cc
! 3aefad7bad186e14f86399d8cbcecb24  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/4.cc
! 0ddba9e95258bc6cfd92fa3efc9c4e81  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/5.cc
! 2bfd94fc206c5a5c5dfcc2a223b48963  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/6.cc
! 93ef64cd3278400fc0cf7c70acd434c4  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/7.cc
! 2e66d1d249426dd93ae758a11f677fa1  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/8.cc
! 89177a7389c0a7e5dd5dbbe2d2acf798  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/9.cc
! 908cb0e1085ed5bac9409832ea50befc  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_env.cc
! c2ce89d88d327adfc4a2fca2ca6d2bf5  libstdc++-v3/testsuite/22_locale/num_put/put/wchar_t/wrapped_locale.cc
! 884a656ce2d0bf57f50e4c7e0b20509f  libstdc++-v3/testsuite/22_locale/num_put/requirements/base_classes.cc
! 4ae0e02ed8ee89bcf262a996d3443e02  libstdc++-v3/testsuite/22_locale/num_put/requirements/explicit_instantiation.cc
! dfdb4ca3a84508da0a3fccd5a7f51cf7  libstdc++-v3/testsuite/22_locale/num_put/requirements/typedefs.cc
! ce13d351561f3351d3ca932578d244a7  libstdc++-v3/testsuite/22_locale/numpunct/members/char/1.cc
! f651da7847870fefd19fb73ea2f01a97  libstdc++-v3/testsuite/22_locale/numpunct/members/char/2.cc
! 26b96c8240ece80e6e3f0c3112d1a000  libstdc++-v3/testsuite/22_locale/numpunct/members/char/3.cc
! 7485a649ee4ae543358515d6916f5667  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_1.cc
! e46e293c6136bfed547f528b7b38feb2  libstdc++-v3/testsuite/22_locale/numpunct/members/char/cache_2.cc
! 180e8b609980204d1f70e067c7b25759  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_env.cc
! a776028832789c2612f74c4c121f8040  libstdc++-v3/testsuite/22_locale/numpunct/members/char/wrapped_locale.cc
! a676a9a8f7f6614a921e3c8cc9c1ba1b  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/1.cc
! b2f5b85bdfe8ee2cf9f5c99f601d34f8  libstdc++-v3/testsuite/22_locale/numpunct/members/pod/2.cc
! be4dde77efd38ab8f7ece22c833aa50b  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/1.cc
! f8287dc3d85f8bf8b8ef9e3f7b26fb2a  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/2.cc
! 3923e96fe3af4921e85771a9433b3fb4  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_1.cc
! 360607668aaf79bfd1f44df0f7aa9076  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/cache_2.cc
! 180e8b609980204d1f70e067c7b25759  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_env.cc
! a776028832789c2612f74c4c121f8040  libstdc++-v3/testsuite/22_locale/numpunct/members/wchar_t/wrapped_locale.cc
! ad059ef4c5af8a2df19b4161edfd3df6  libstdc++-v3/testsuite/22_locale/numpunct/requirements/base_classes.cc
! 86038796a0e97e06a587b5f4684841ff  libstdc++-v3/testsuite/22_locale/numpunct/requirements/explicit_instantiation.cc
! 67f4780ef005d041fe3131d3f8883651  libstdc++-v3/testsuite/22_locale/numpunct/requirements/typedefs.cc
! 8fa197dcd909d36d399a862acac24d10  libstdc++-v3/testsuite/22_locale/numpunct_byname/1.cc
! a97275eeb48fb4b581c465a1a8f9da08  libstdc++-v3/testsuite/22_locale/numpunct_byname/named_equivalence.cc
! 0035f93daec99bc5589cfa8e2a694938  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/base_classes.cc
! 85e5bf1edfe38c63a4c74c16d34b95d1  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/explicit_instantiation.cc
! 775243a6a6da6fc821880c9e361cf568  libstdc++-v3/testsuite/22_locale/numpunct_byname/requirements/typedefs.cc
! 60420e9eb52da8aea9c9a5ac8439464f  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/time_get/date_order/char/wrapped_locale.cc
! 448246aa9677c8dcec433101dc01dfef  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/1.cc
! 4395d337731f3acdedd84cecc15c82b5  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_env.cc
! c0e3faee3730a602e20eb2371cab4609  libstdc++-v3/testsuite/22_locale/time_get/date_order/wchar_t/wrapped_locale.cc
! ceb82f9c3296cb91c772fbaed4221733  libstdc++-v3/testsuite/22_locale/time_get/get/char/1.cc
! 9a5d5453b707db4ec789cf0cb5a97b67  libstdc++-v3/testsuite/22_locale/time_get/get/char/2.cc
! 0bf1b4fd315bbb7bd66dfc9666e0e5e6  libstdc++-v3/testsuite/22_locale/time_get/get/char/3.cc
! c7d31005652249477e0646ec2cd23fa9  libstdc++-v3/testsuite/22_locale/time_get/get/char/4.cc
! 3b97c35b6f37ac43ebdc34362fb5bb27  libstdc++-v3/testsuite/22_locale/time_get/get/char/71367.cc
! 20d958c3a84f4a43c906a4983e1512f8  libstdc++-v3/testsuite/22_locale/time_get/get/char/71557.cc
! dea983530302f4a9ad9004fc650cba6f  libstdc++-v3/testsuite/22_locale/time_get/get/char/88681.cc
! 5ae22b4ea7e0426d28fa17377e69b95e  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/1.cc
! 0fa31317657a8dc3aadb34c1c334abd1  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/2.cc
! 6062ff92984041ca6eb46a705033d625  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/3.cc
! 7615d7c3d0ffc9373cce7ea37d2818c5  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/4.cc
! 060925d7d586495f246e9e4251ad7f97  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71367.cc
! 6179effc9fc467cc2a0629756e434dea  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/71557.cc
! 11e3eaf8650d9500d35a64c21bccf971  libstdc++-v3/testsuite/22_locale/time_get/get/wchar_t/88681.cc
! 539d39b191fed58ba7105dd899662278  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/1.cc
! f80a7d5c2d43e5d55a2636168f8a6bae  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12750.cc
! 7f2db36f5f254fda4d00ac4fed8e0758  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/12791.cc
! 505e6f185682d8bcf7c2d99c26040352  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/2.cc
! 44ceb18d3859fb963b7e297aed823009  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/26701.cc
! cd9c53d0c99a9b8f86893367b9782d84  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/3.cc
! e63102e85f61b9d121597d3a283b7cad  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/5.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_date/char/wrapped_locale.cc
! 77357e189b6daa2db9a365ed9e3e5f10  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/1.cc
! ed88e8b994dcc500b48acaf7073fb1bc  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12750.cc
! eb5182ee23a797ba265859964127254e  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/12791.cc
! e4b738031b3b979e51a326bb95e8b9d3  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/2.cc
! 2bd05879abccb8868f3dc16a25e8b1f9  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/26701.cc
! cec0780c2dfa9c3b25f0f72f338b5d0c  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/3.cc
! 160125ea1ac9485e7696a17a37d3e4fb  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/4.cc
! 5c714c678dfa165f6de0bf4876d89e65  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/5.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_date/wchar_t/wrapped_locale.cc
! e10123eab5627493a9b93986c46e17eb  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/1.cc
! 74c250cb4b061dfa450af42bfff3109a  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/2.cc
! b46b018132ff414c69ff4e8b8bc0f586  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/3.cc
! fbd7a1eeca20ff8a4439c1c070e36407  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/4.cc
! 0c4dc3743bda5a26682d7946259286e1  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/5.cc
! 6a913ef4acfb9ec0d120191b16da2287  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/6.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/char/wrapped_locale.cc
! 5f43a684b8a8735821be95d5050496d6  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc
! f622b326171cce4e8b104fabc30f4d80  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc
! 0a3d8ae8c4d22976ea2d99ba7a6486b1  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/3.cc
! ce42f61381b7cbd95d6085b5c9af1e7c  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc
! 1d2acca73dfc6c5dfbe045deb36dc4a7  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/5.cc
! 96b938c8bda8d246e618006ecc0294eb  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/6.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_monthname/wchar_t/wrapped_locale.cc
! 8aa51b5872f89a736948bf8b882110ed  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/1.cc
! 7ac4ddca20622646b8a1d04f63e8f41e  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/2.cc
! 197841d494ee66932e1e5f63ba2a26c8  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/3.cc
! 2d4b6b3d503b3140f9d4c56114cf75f7  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/4.cc
! 972699e26a3b23c393e2b986c32ea443  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/5.cc
! fa0b354639d86ae0e4993527b0e2610a  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/6.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_time/char/wrapped_locale.cc
! e48c9726f1db55a32efb83ba46a6fee6  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/1.cc
! 9297b11237f88fe8c61ef18dca982c1e  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/2.cc
! fb41ba9cb5ad1eecd08ff3607b9c6d1f  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/3.cc
! 7051f99013461ab0b2df633769204033  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/4.cc
! cc339e3d70fc1681cb6c9c1e04759a0d  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/5.cc
! d3dd456260399159a11f0be2abd5a2f1  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/6.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_time/wchar_t/wrapped_locale.cc
! 4c9512191d2983eb2377c9aa002383d2  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/1.cc
! 91caa7eefb45a221cc7b41d8055baa66  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/2.cc
! 55636bf6b135735da5ff8c364e261035  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/3.cc
! fc1e6875276b7f52e37acc3b5f7a89f9  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-1.cc
! ec447eb73516bbdb4874161cfba272ed  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/38081-2.cc
! 604080bf49b78299899e60fbf53aba2f  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/5.cc
! 0a3afd46be1c3efaff735ab8229c1cb8  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/6.cc
! b66c1685743507f8e94c99d3e1a0dee8  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_env.cc
! 998d66b3f2ff0b97e2fde333d0da43f1  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/char/wrapped_locale.cc
! 6acd07d9584c77b53921a3b49d5f8f8b  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc
! ab65c6dfe9e072087d4957b4890d833c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc
! c14d6305e5d75cb9524e19034ad4942c  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/3.cc
! d915d93dd70df40dd5633d6aeb2a2264  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/5.cc
! 35d3e2f4acb6e517170e5259b0b3e96f  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/6.cc
! 1dcd4af5e2c6428240d924ff8ccbd007  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_env.cc
! e3f6e7c2eedfd6056d1ebf13838a8079  libstdc++-v3/testsuite/22_locale/time_get/get_weekday/wchar_t/wrapped_locale.cc
! 9e77e5610d87dfd344995a4d745f9b83  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/1.cc
! 7a8bb36e1ef042f56e3d4f82c623baa6  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/3.cc
! 49d19ec687ba39c5fa7251037f37913a  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/5.cc
! a9aed5e545704e31a44e17aab679599a  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/6.cc
! a52fc097c1bb0e4c8d71402f0558d042  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_env.cc
! 348ab124f58f9247fe01df7a10c4fcde  libstdc++-v3/testsuite/22_locale/time_get/get_year/char/wrapped_locale.cc
! b1691823447875a5999b57a38eb9bdb8  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/1.cc
! b9133b9e73a1b8aec17cdf6936170b75  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/3.cc
! 95387d2afa307fab31b51c08203d3431  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/5.cc
! fec1933645e468d072700ecc3384d6b5  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/6.cc
! a52fc097c1bb0e4c8d71402f0558d042  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_env.cc
! 348ab124f58f9247fe01df7a10c4fcde  libstdc++-v3/testsuite/22_locale/time_get/get_year/wchar_t/wrapped_locale.cc
! 903eaa0d95399f3b5d13b8adb14090e1  libstdc++-v3/testsuite/22_locale/time_get/requirements/base_classes.cc
! a5d0676b53d18d618d108ae7ba0fb08c  libstdc++-v3/testsuite/22_locale/time_get/requirements/explicit_instantiation.cc
! 0e68dadd4f6daaa8fe409d93d283c051  libstdc++-v3/testsuite/22_locale/time_get/requirements/typedefs.cc
! 6f2315027a73448b34711da35d14c8c1  libstdc++-v3/testsuite/22_locale/time_put/put/char/1.cc
! bf75c023ac4a8da931cd610d1c513b90  libstdc++-v3/testsuite/22_locale/time_put/put/char/10.cc
! 902a7c8475c65145f036a5299a710f10  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_1.cc
! 8ea118464b3028724f7208b0703b5541  libstdc++-v3/testsuite/22_locale/time_put/put/char/12439_3.cc
! 5b960e4042b867a1791515b34fcd9c2f  libstdc++-v3/testsuite/22_locale/time_put/put/char/17038.cc
! 6ebb3347a61ded829f5b63768accbb45  libstdc++-v3/testsuite/22_locale/time_put/put/char/2.cc
! ac132eb9e2d333c9fe3e6eec244148f5  libstdc++-v3/testsuite/22_locale/time_put/put/char/3.cc
! 9540e3d55482f0f9f047617af6e90602  libstdc++-v3/testsuite/22_locale/time_put/put/char/4.cc
! 54e336a1fa99f652deb6778300b2e1c9  libstdc++-v3/testsuite/22_locale/time_put/put/char/5.cc
! 12e0cd29b54581d131b6d53789a66c1e  libstdc++-v3/testsuite/22_locale/time_put/put/char/6.cc
! a675c204dddb089aab149ade3651e11c  libstdc++-v3/testsuite/22_locale/time_put/put/char/7.cc
! 7830825661662c1cbf4862e74abcfd80  libstdc++-v3/testsuite/22_locale/time_put/put/char/8.cc
! ececfe72d5f0f3d3ca2bbb323e500785  libstdc++-v3/testsuite/22_locale/time_put/put/char/9.cc
! b1a38e184c20db94b9d1764f1ad83cbe  libstdc++-v3/testsuite/22_locale/time_put/put/char/9780-1.cc
! de71812f3c532c11192feac62da08e3a  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_env.cc
! daa23a73f19f9193426f97e35af2d789  libstdc++-v3/testsuite/22_locale/time_put/put/char/wrapped_locale.cc
! 2cbb48ab119fea4d319aed2fa2a5b485  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/1.cc
! cb8f67de436e2c8f4cad0eb29a1926cb  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/10.cc
! 106325833906e9cfecc5cf9216630045  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_1.cc
! ba31a33c197608d7c92dc088246d6897  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_2.cc
! 0ace3daab3ff310ca1822a1f1d14d6cb  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/12439_3.cc
! a103303bd91b99a182fa40306aa28f65  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/17038.cc
! f1a50b98320c03896fd67c7390ef6aea  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/2.cc
! baaf33fc680283157a32cc77ef4f38db  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/3.cc
! 6c251bb2dce9f8e933a07f22cfb40cca  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/4.cc
! ba6ef0280ff3c8373a0d7675a959814a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/5.cc
! 16ee805c162695ac1c53198d7f4891d4  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/6.cc
! 4fb503e3bcd9106ed2ab5d1fba26c8a8  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/7.cc
! 8aa0b8a4730448a57a83099120a1c410  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/8.cc
! e80877eee2ec130d4268292cc555bdb8  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/9.cc
! de71812f3c532c11192feac62da08e3a  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_env.cc
! 1cbd8e79dca9917912a729bee6bb39e9  libstdc++-v3/testsuite/22_locale/time_put/put/wchar_t/wrapped_locale.cc
! 5f5978d9fa3668d451c8b752cee2d194  libstdc++-v3/testsuite/22_locale/time_put/requirements/base_classes.cc
! 4901d3edb669fb0c9ebfede1aa534432  libstdc++-v3/testsuite/22_locale/time_put/requirements/explicit_instantiation.cc
! 401ec21b7210484333256d2aacf07caa  libstdc++-v3/testsuite/22_locale/time_put/requirements/typedefs.cc
! fd41d82a175006535bf3fbc41edfdc02  libstdc++-v3/testsuite/23_containers/array/capacity/constexpr_functions.cc
! 800d98c4ed801c2762ce2b63d1fc2b5d  libstdc++-v3/testsuite/23_containers/array/capacity/empty.cc
! 2de7c8abb11aece9cd75117399640545  libstdc++-v3/testsuite/23_containers/array/capacity/max_size.cc
! a99f5e5e0120fb575c308a5f7e16570a  libstdc++-v3/testsuite/23_containers/array/capacity/size.cc
! 0f1599760c1ba53517bb0408a4ce7d5a  libstdc++-v3/testsuite/23_containers/array/comparison_operators/96851.cc
! 70a7002a1d1ebe17d0e2fb5440609490  libstdc++-v3/testsuite/23_containers/array/comparison_operators/constexpr.cc
! 5c9463c3dc19638249b62d90647a8779  libstdc++-v3/testsuite/23_containers/array/comparison_operators/equal.cc
! 9671664b6dff8fd845f7b7d287a30149  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater.cc
! b2a148c1735f90d1b1b05abb9d403627  libstdc++-v3/testsuite/23_containers/array/comparison_operators/greater_or_equal.cc
! bf1f13e454399b74a668563a9dc57a88  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less.cc
! 486f78790b3e3d0391309f02a073d37a  libstdc++-v3/testsuite/23_containers/array/comparison_operators/less_or_equal.cc
! d0fcc7be2b4a4571f502dd867fa6bf44  libstdc++-v3/testsuite/23_containers/array/comparison_operators/not_equal.cc
! b3513ed5ffa499cca3181c7fd14dcf43  libstdc++-v3/testsuite/23_containers/array/cons/53361.cc
! 5e014c6fdd9a0d99bf8bc80ff778fa48  libstdc++-v3/testsuite/23_containers/array/cons/aggregate_initialization.cc
! 88e72311920d13f12ac3a62be01a4097  libstdc++-v3/testsuite/23_containers/array/cons/deduction.cc
! 5e63e129d6ee14bd8735a98b99e071e9  libstdc++-v3/testsuite/23_containers/array/cons/deduction_neg.cc
! 93661bce5f3afebe28cac67fcb071b4f  libstdc++-v3/testsuite/23_containers/array/creation/1.cc
! bad60bb55072f7831f210bb5cf8c0cbc  libstdc++-v3/testsuite/23_containers/array/creation/2.cc
! 69458a6af51c0639515b7d48201e0bf7  libstdc++-v3/testsuite/23_containers/array/creation/3_neg.cc
! a49a7352cef5176add32c3a8e0e3e034  libstdc++-v3/testsuite/23_containers/array/debug/back1_neg.cc
! a64169b1b151943e185fd56265c2ffd2  libstdc++-v3/testsuite/23_containers/array/debug/back2_neg.cc
! 4f1c0d4c44335e0f816f16ebc94ec68e  libstdc++-v3/testsuite/23_containers/array/debug/constexpr_c++11.cc
! 046f908825a06fa3a9612a822d100ce8  libstdc++-v3/testsuite/23_containers/array/debug/front1_neg.cc
! e961a772c2345a1e9d4adf110388f077  libstdc++-v3/testsuite/23_containers/array/debug/front2_neg.cc
! 328012c5d1fe452f2845f743cb24d8ad  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator1_neg.cc
! 99074e355f9274bd42f4718088fd29cd  libstdc++-v3/testsuite/23_containers/array/debug/square_brackets_operator2_neg.cc
! 44362191d1e5cc2a5579cd612b72ec67  libstdc++-v3/testsuite/23_containers/array/element_access/54388.cc
! 923695f1b694f744b50ef81e6267d5ee  libstdc++-v3/testsuite/23_containers/array/element_access/60497.cc
! 9edb341e6498055015364c403095d03a  libstdc++-v3/testsuite/23_containers/array/element_access/at_neg.cc
! 9a9f6190d3d423d560b693fb9e74d0a1  libstdc++-v3/testsuite/23_containers/array/element_access/at_out_of_range.cc
! 0f27a4cdce0fe6a9213b4672cc67fd15  libstdc++-v3/testsuite/23_containers/array/element_access/back.cc
! e323c63c2945664fa03337ccde9547ec  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_c++17.cc
! 6a5bfcabc2d13e986b4e479a3f3bb0a0  libstdc++-v3/testsuite/23_containers/array/element_access/constexpr_element_access.cc
! 727c76788a7cd56669ea26e2621186d5  libstdc++-v3/testsuite/23_containers/array/element_access/data.cc
! 764e14e63cd2f3795a03fcde77b81bd9  libstdc++-v3/testsuite/23_containers/array/element_access/front.cc
  6a70864d40e873666241bcb5b4a33a61  libstdc++-v3/testsuite/23_containers/array/iterators/begin_end.cc
! 83341caaf7a55d1e1056a9a19e7711b6  libstdc++-v3/testsuite/23_containers/array/iterators/end_is_one_past.cc
! 04bd3ce82e19fa7b7958c65788066e5e  libstdc++-v3/testsuite/23_containers/array/range_access.cc
! e95828ee76ea7574b1872b3b8111269c  libstdc++-v3/testsuite/23_containers/array/requirements/citerators.cc
! f8ef14ab52fdd03c00eda14528fd50e2  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_fill.cc
! e5f6a72f51e320a3077d832084356984  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_iter.cc
! 12385a055dd12964bc457605e425b431  libstdc++-v3/testsuite/23_containers/array/requirements/constexpr_swap.cc
! 1e9a5095191a30ff3a09ed3aeced9bd0  libstdc++-v3/testsuite/23_containers/array/requirements/contiguous.cc
! 38274decbda0c3701431e0a1b6aadf1e  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/1.cc
! a92132be9b37f820ece2fbdd8ee631eb  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/2.cc
! 2ce242ca76b4d36825baf8507db5fb84  libstdc++-v3/testsuite/23_containers/array/requirements/explicit_instantiation/3.cc
! 320c90968d74c3ae04527459090b66d0  libstdc++-v3/testsuite/23_containers/array/requirements/fill.cc
! 25566b30fa009c5f521d0a97d3429bba  libstdc++-v3/testsuite/23_containers/array/requirements/member_swap.cc
! 8bbbf3d725ec61a5765be3b2e6407dd8  libstdc++-v3/testsuite/23_containers/array/requirements/non_default_constructible.cc
! fa5feeecd5a1e93a43a4f75e7c48e6d3  libstdc++-v3/testsuite/23_containers/array/requirements/typedefs.cc
! 27333051b7ece0af945f5023a83b100a  libstdc++-v3/testsuite/23_containers/array/requirements/zero_sized_arrays.cc
! 69f50de97bd22cddeb29b10ab109a9cb  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap.cc
! 224c2cc954758bb3965dbf0473bc567c  libstdc++-v3/testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc
! 4b97d0be761dbee50e7f38dde5af8148  libstdc++-v3/testsuite/23_containers/array/tuple_interface/constexpr_get.cc
! 095b8ab13bb91267bf7027c21bf6e5e8  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get.cc
! 862b2d489f4fc63f293220f4385ce214  libstdc++-v3/testsuite/23_containers/array/tuple_interface/get_neg.cc
! 748b2e25ee701285830d64467b8b9696  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element.cc
! dac8636aeb408623e399b1d48ef960dc  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_cpp14.cc
! 8c8b39157c8c30e8bdedd46372c9fac4  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_element_neg.cc
! 94c4fc29f5f74e0a215a44ebe13eb5f5  libstdc++-v3/testsuite/23_containers/array/tuple_interface/tuple_size.cc
  ddf767067d4b89b063a9cdaf9a38233c  libstdc++-v3/testsuite/23_containers/deque/100516.cc
! 607f5dbc0ed7fe44faec37ab0fef488a  libstdc++-v3/testsuite/23_containers/deque/14340.cc
! 528ff3d5f5243904e8a23b4caf36da69  libstdc++-v3/testsuite/23_containers/deque/18604.cc
! 784a59651be81b6a85f1f3ada77ac6de  libstdc++-v3/testsuite/23_containers/deque/48101-2_neg.cc
! 53235524d28b0ab86d88a5147db33309  libstdc++-v3/testsuite/23_containers/deque/48101-3_neg.cc
! 36c9d46192ba67c0b0fe465b21fa5953  libstdc++-v3/testsuite/23_containers/deque/48101_neg.cc
! e5ceb6253387586d64cf49cd2fcfd2b1  libstdc++-v3/testsuite/23_containers/deque/58764.cc
! f9de4f0f9d049a4841692a1fb21f452f  libstdc++-v3/testsuite/23_containers/deque/70303.cc
! 094675efbcafd47eae95b66bc8f57381  libstdc++-v3/testsuite/23_containers/deque/92124.cc
! 280bd529ac1ce63da894e9e4140c3ada  libstdc++-v3/testsuite/23_containers/deque/allocator/copy.cc
! 5a9bd0a9b72cd7f54f3ded0656139580  libstdc++-v3/testsuite/23_containers/deque/allocator/copy_assign.cc
! 665cf3268b1829e3175240ee36a33764  libstdc++-v3/testsuite/23_containers/deque/allocator/default_init.cc
! 7b36780d69cb3245fdbd454c109022df  libstdc++-v3/testsuite/23_containers/deque/allocator/ext_ptr.cc
! 09e23041259f6c22fbf4c8ce69752b39  libstdc++-v3/testsuite/23_containers/deque/allocator/minimal.cc
! e16234336c02621e63fa1408650c5d91  libstdc++-v3/testsuite/23_containers/deque/allocator/move-2.cc
! 0195e637bcab4f50376d7fe1a8d0c4c8  libstdc++-v3/testsuite/23_containers/deque/allocator/move.cc
! e7c6e2d92b4327b5afa15135aaad5d8d  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign-2.cc
! 512e792c936c098a9633183eb44ca88c  libstdc++-v3/testsuite/23_containers/deque/allocator/move_assign.cc
! f782fb4116058f647785d8b29f2539ec  libstdc++-v3/testsuite/23_containers/deque/allocator/noexcept.cc
! 078a1ea2af704b7757d78b74c3a87d83  libstdc++-v3/testsuite/23_containers/deque/allocator/swap.cc
! ac816260a2cc152c96e9706b2c59e049  libstdc++-v3/testsuite/23_containers/deque/capacity/29134-2.cc
! d3a01040bb6115fc4888c3228fb8e67b  libstdc++-v3/testsuite/23_containers/deque/capacity/29134.cc
! 1dfe984696e95c8e5525b39a173aaf98  libstdc++-v3/testsuite/23_containers/deque/capacity/max_size.cc
! 7a1ef44aa28d72ac4a0484b1471da872  libstdc++-v3/testsuite/23_containers/deque/capacity/moveable.cc
! 5d865e8e9670df620f3207cacb8e382a  libstdc++-v3/testsuite/23_containers/deque/capacity/resize_size.cc
! 2015ca5f2b433e420c6c226bcbb44ecd  libstdc++-v3/testsuite/23_containers/deque/capacity/shrink_to_fit.cc
! 98443cca50d6dd68b123228469986c94  libstdc++-v3/testsuite/23_containers/deque/check_construct_destroy.cc
! 3276a84edbc725a929f72e1d73f73043  libstdc++-v3/testsuite/23_containers/deque/cons/1.cc
! f07fc9774840dc8189364e981e91fd0a  libstdc++-v3/testsuite/23_containers/deque/cons/2.cc
! 904ca740520e9603bece542347d294da  libstdc++-v3/testsuite/23_containers/deque/cons/55977.cc
! 9968d4f5d127136e5a1580f2c523562c  libstdc++-v3/testsuite/23_containers/deque/cons/assign/1.cc
! ce10c005a27b820e7e5ed7696e393b06  libstdc++-v3/testsuite/23_containers/deque/cons/clear_allocator.cc
! bdc57dd24a317881dba08bd1520e86b8  libstdc++-v3/testsuite/23_containers/deque/cons/cons_size.cc
! 8c382a9e74d74349db4c3e4123224250  libstdc++-v3/testsuite/23_containers/deque/cons/deduction.cc
! 66404cedef7dc507ac3ec77e4b3fee95  libstdc++-v3/testsuite/23_containers/deque/cons/moveable.cc
! b5571f7ed70ec78a8be583d546500444  libstdc++-v3/testsuite/23_containers/deque/cons/moveable2.cc
! 4ba232bf7ba7a5e36beea65e671c2601  libstdc++-v3/testsuite/23_containers/deque/cons/self_move.cc
! bdebacd09cc47a10ab330ed2dd064a5c  libstdc++-v3/testsuite/23_containers/deque/debug/90102.cc
! c8ce9070564ff18e96594fc1d56f9385  libstdc++-v3/testsuite/23_containers/deque/debug/98466.cc
! 9569c8f782a17a68e443604e314ee8f2  libstdc++-v3/testsuite/23_containers/deque/debug/assign1_neg.cc
! de78ef07deb33b4e9bce34f5c06b7348  libstdc++-v3/testsuite/23_containers/deque/debug/assign2_neg.cc
! 26d6996a9ad2863ce6ff3c9d66de15e3  libstdc++-v3/testsuite/23_containers/deque/debug/assign3_neg.cc
! da6726d92e12c3468983aa8aff8ce77e  libstdc++-v3/testsuite/23_containers/deque/debug/assign4_neg.cc
! 9c487185eb0e8702ea6f5550ea83d8a6  libstdc++-v3/testsuite/23_containers/deque/debug/construct1_neg.cc
! 0001519ee7454aa8144e2e2c0ef19ea8  libstdc++-v3/testsuite/23_containers/deque/debug/construct2_neg.cc
! 3272ea5ff2cfcf25334f2aad93843026  libstdc++-v3/testsuite/23_containers/deque/debug/construct3_neg.cc
! af9c09dd08aceeb6e42d00f56b86e760  libstdc++-v3/testsuite/23_containers/deque/debug/construct4_neg.cc
! ea3a9dc235f0acd9e275b5b959b07af3  libstdc++-v3/testsuite/23_containers/deque/debug/insert1_neg.cc
! 9d0b6c2a97f82bfd3e58944a2dc5e0e7  libstdc++-v3/testsuite/23_containers/deque/debug/insert2_neg.cc
! 8a289fd9e65693e4ff3c2b39f68b2a1d  libstdc++-v3/testsuite/23_containers/deque/debug/insert3_neg.cc
! 363937044acc14e0b27a491a96c3c81a  libstdc++-v3/testsuite/23_containers/deque/debug/insert4_neg.cc
! 15f87969686f57c66c12a9125da6d0d5  libstdc++-v3/testsuite/23_containers/deque/debug/insert5_neg.cc
! 4b088b59e092229749852356e28f3a7d  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/1.cc
! df98237bf133fe9d208a2c62efbd06dc  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/2.cc
! 0a80a1a6838cf8c7353ca7d2529a3dc9  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/3.cc
! 82352fb6719a7b14b8657bfcc16ff530  libstdc++-v3/testsuite/23_containers/deque/debug/invalidation/4.cc
! c8948b1a3f845509aea2f0c5829e5f44  libstdc++-v3/testsuite/23_containers/deque/debug/iterator1_neg.cc
! f12eb7c1ffc2cdfe6c1fa47d5f31b477  libstdc++-v3/testsuite/23_containers/deque/debug/iterator2_neg.cc
! e8f40717cf7f07014de3b64af375dd5c  libstdc++-v3/testsuite/23_containers/deque/debug/shrink_to_fit.cc
! e66b484200a9bdecd71e4541bed6b93e  libstdc++-v3/testsuite/23_containers/deque/erasure.cc
! 21665584bf5430f125db35d91bb8b5e6  libstdc++-v3/testsuite/23_containers/deque/init-list.cc
! 3b8b76830e28c2e8787678503c757a5d  libstdc++-v3/testsuite/23_containers/deque/modifiers/assign/1.cc
! 986245fdc85451dfc8217e51f19e3a42  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/52799.cc
! cb5f4a07ac39deee08d7f147b104a300  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/92878_92947.cc
! f523435184f212164f4ef3428369500a  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/const_iterator.cc
! f4824b00e1312af5ab44145ea82783d5  libstdc++-v3/testsuite/23_containers/deque/modifiers/emplace/cxx17_return.cc
! 54cef924a6d78a5bfc6986a5ac342f47  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/1.cc
! 816fc5f4d0310622016dc565b136953c  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/2.cc
! dcd4a7b6693f87bdac13ef4262b82a2f  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/3.cc
! c6c0dc3e44ffa40cdc219bded3accc96  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/50529.cc
! 29ef987dee2c9746931a908206197655  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/54577.cc
! db640db25c8533c189ce5fae5802edc6  libstdc++-v3/testsuite/23_containers/deque/modifiers/erase/moveable.cc
! 2443fab002ea381df0a112392ac37be8  libstdc++-v3/testsuite/23_containers/deque/modifiers/insert/const_iterator.cc
! 81d0536967077833f0df8d222b39c532  libstdc++-v3/testsuite/23_containers/deque/modifiers/moveable.cc
! 79f5f829ea12055e9218d50ebefb35ed  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_back/49836.cc
! 3d5b8fd1348e0271ee9bd83191f1552f  libstdc++-v3/testsuite/23_containers/deque/modifiers/push_front/49836.cc
! 7f4c31680f23a34e312682e60d73bda5  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/1.cc
! 76acfaddce80c3208c4d0fb4b70e50e9  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/2.cc
! 207add28548d59bd1d0936d6478d6a8d  libstdc++-v3/testsuite/23_containers/deque/modifiers/swap/3.cc
! 373b0948067fc6d577927565b6bd645f  libstdc++-v3/testsuite/23_containers/deque/operators/1.cc
! 980c852407cd1fc5763a11c1c1268363  libstdc++-v3/testsuite/23_containers/deque/operators/2.cc
! 46c48ab304b85a978ba705330fd6ae00  libstdc++-v3/testsuite/23_containers/deque/operators/cmp_c++20.cc
! 315469d9a9986d6e14fbfcb3e7ae742f  libstdc++-v3/testsuite/23_containers/deque/range_access.cc
! 85cdf7edc6f8f9a9acc86393254697fb  libstdc++-v3/testsuite/23_containers/deque/requirements/citerators.cc
! 6db3e3cd6bdd63630052708dab02b82c  libstdc++-v3/testsuite/23_containers/deque/requirements/do_the_right_thing.cc
! 46ab32c8109f99775e07d0c7c76f7b23  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/assign_neg.cc
! c5abfa77e54cb7f3c28f94b91b026c49  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor.cc
! ac27e0058b77263ea2661eeb73d3b2d6  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_1_neg.cc
! 870540066c4c9cad3120d1f3317c4745  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/constructor_2_neg.cc
! fe3a4242370aaf6153df7331ccf30749  libstdc++-v3/testsuite/23_containers/deque/requirements/dr438/insert_neg.cc
! 4691857119c9d7bd267602b30133b7f0  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/basic.cc
! be475cd312ec7bff18d38ba4e6fec88e  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/generation_prohibited.cc
! a7622a3e79946a57c4d9a34ba4a8a5e7  libstdc++-v3/testsuite/23_containers/deque/requirements/exception/propagation_consistent.cc
! a0acf28c44a5876800cd8e56d6833a52  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/1.cc
! d3d593a9c6c6daea377feb09cdeccc2d  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/2.cc
! a3479c37acd8d1ff38f1e14a99a22c99  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/3.cc
! 83cf28ed9714b223629d9ffdb8fb87c8  libstdc++-v3/testsuite/23_containers/deque/requirements/explicit_instantiation/4.cc
! 49802e02d484835bcd9757b7f7d15071  libstdc++-v3/testsuite/23_containers/deque/requirements/partial_specialization/1.cc
! 00298cb92e769db47ab1e418fba35038  libstdc++-v3/testsuite/23_containers/deque/requirements/typedefs.cc
! 80e76981b77d16541f6418476b592392  libstdc++-v3/testsuite/23_containers/deque/types/1.cc
! 9508269077aafafdb52f352ae0821630  libstdc++-v3/testsuite/23_containers/deque/types/92267.cc
! 0093bf9be3e74f61c48abff9640b436e  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs.cc
! 5ed7a664eb055f31dd95d34d4a1e242e  libstdc++-v3/testsuite/23_containers/deque/types/pmr_typedefs_debug.cc
! 5697e41759f598ba83889cf908e9536c  libstdc++-v3/testsuite/23_containers/forward_list/48101-2_neg.cc
! dc2eab38fc516920cb4fa4cb1171a2fb  libstdc++-v3/testsuite/23_containers/forward_list/48101-3_neg.cc
! ba6785936089ef8676ad139fc54f0f49  libstdc++-v3/testsuite/23_containers/forward_list/48101_neg.cc
! 490d6d30f6ce0a5ba48b6b87aa770460  libstdc++-v3/testsuite/23_containers/forward_list/92124.cc
! f39deed302aba8aedf27e180dcc491b0  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy.cc
! 7ae8d446313e99bdf132f8fcbdfa123f  libstdc++-v3/testsuite/23_containers/forward_list/allocator/copy_assign.cc
! 7ea12c48542d88d929e59186c1cb07ef  libstdc++-v3/testsuite/23_containers/forward_list/allocator/default_init.cc
! 4f0c63964f9af95f810acf4d118cdb50  libstdc++-v3/testsuite/23_containers/forward_list/allocator/ext_ptr.cc
! e61efcd2a4cb3c5831cf38d033fbd4b4  libstdc++-v3/testsuite/23_containers/forward_list/allocator/minimal.cc
! 4b50af5ff1b47aae3d6c8a546092aa5c  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move.cc
! a7b947ca6739f1b1b8059a3cec9a69b0  libstdc++-v3/testsuite/23_containers/forward_list/allocator/move_assign.cc
! 28aac0a44f4dcd00203fcd53f58f69cd  libstdc++-v3/testsuite/23_containers/forward_list/allocator/noexcept.cc
! 6691a9ec9c9171347216ac8ee5a567d5  libstdc++-v3/testsuite/23_containers/forward_list/allocator/swap.cc
! c85ad4c5adf2f00d7270b96bfe4b1614  libstdc++-v3/testsuite/23_containers/forward_list/capacity/1.cc
! 9e9c3ffd2eabcae37fe65846c8cfea66  libstdc++-v3/testsuite/23_containers/forward_list/capacity/resize_size.cc
! 435b5632a72f30d55e563b94b71e3a76  libstdc++-v3/testsuite/23_containers/forward_list/cmp_c++20.cc
! 0a2a6c5a519bd61d6b6f1f53d138fad5  libstdc++-v3/testsuite/23_containers/forward_list/comparable.cc
! f5ad931807d605d6f0de04167af47ace  libstdc++-v3/testsuite/23_containers/forward_list/cons/1.cc
! bf24128ba81105ca2ace580cb0e3002b  libstdc++-v3/testsuite/23_containers/forward_list/cons/10.cc
! 077a38cdb117a05d2da12d0e334c7202  libstdc++-v3/testsuite/23_containers/forward_list/cons/11.cc
! 60f532b8b3ac34a98ba76334729d27c8  libstdc++-v3/testsuite/23_containers/forward_list/cons/12.cc
! 3e90a46322142e2fa8b2b9ffb2380621  libstdc++-v3/testsuite/23_containers/forward_list/cons/13.cc
! 0af7d4c5684f67abb776cad337fb9a16  libstdc++-v3/testsuite/23_containers/forward_list/cons/14.cc
! d3770921f709416b0e06ba5a91b63048  libstdc++-v3/testsuite/23_containers/forward_list/cons/2.cc
! 4bdabc44bbd0bbda5b6b39d9046431e0  libstdc++-v3/testsuite/23_containers/forward_list/cons/3.cc
! e24678fb1ce9c5e3f661c5e02a4dee7a  libstdc++-v3/testsuite/23_containers/forward_list/cons/4.cc
! ee21879e452b6092a72a23f33877ac9a  libstdc++-v3/testsuite/23_containers/forward_list/cons/5.cc
! 8201a7e62e21b12100d9dedd7bb83169  libstdc++-v3/testsuite/23_containers/forward_list/cons/6.cc
! e4318d82344d5595c21650d6b5bb5b69  libstdc++-v3/testsuite/23_containers/forward_list/cons/7.cc
! 2128247dcf138b0d77daef58e9690c13  libstdc++-v3/testsuite/23_containers/forward_list/cons/8.cc
! f69b741965f489d7b632effd29098a29  libstdc++-v3/testsuite/23_containers/forward_list/cons/87809.cc
! eebc957682120e0c8e5401b971936fcd  libstdc++-v3/testsuite/23_containers/forward_list/cons/9.cc
! 19d17e1e2b28dda0739144db0598ec1d  libstdc++-v3/testsuite/23_containers/forward_list/cons/cons_size.cc
! 3d4f53c1be91268a56ce84a70f6b6540  libstdc++-v3/testsuite/23_containers/forward_list/cons/deduction.cc
! 3d61cb35a8d019ab648766ada4869e39  libstdc++-v3/testsuite/23_containers/forward_list/cons/moveable.cc
! 399b5600123961c63e15eb1f6d154445  libstdc++-v3/testsuite/23_containers/forward_list/cons/noexcept_move_construct.cc
! 942ef297790a4d06637996260eaf0917  libstdc++-v3/testsuite/23_containers/forward_list/cons/self_move.cc
! 4a60513459c9f462907c16afcf6f27d5  libstdc++-v3/testsuite/23_containers/forward_list/debug/60499.cc
! 58fcba952f5e1a8a08038261d8bc34ce  libstdc++-v3/testsuite/23_containers/forward_list/debug/90102.cc
! 73f8bc69d487e7a01695e891afc3ce86  libstdc++-v3/testsuite/23_containers/forward_list/debug/clear.cc
! 5a541adbdc00807051952fe66e234d90  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct1_neg.cc
! 61ef56d08f9b83935ea8469da9257fe3  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct2_neg.cc
! 22082dde8c53d4e265a80b11b6d0e525  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct3_neg.cc
! d2566526cc87f9000f34136831a9858f  libstdc++-v3/testsuite/23_containers/forward_list/debug/construct4_neg.cc
! 5bd23dd4d843d5c626106b9610acce58  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after1_neg.cc
! 646a42fc945a0566d99696a95fc1e081  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after2_neg.cc
! 7d2e79516593491d06fe38f99b7e6fec  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after3_neg.cc
! c1b495056722d0af41402a7259302e20  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after4_neg.cc
! 2f88b2630ec9a034ee95ab90c6d2a7db  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after5_neg.cc
! 25e7dd400516e90ac7e44f4cf262d940  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after6_neg.cc
! a3a68a2eb831169e5ee55410aed0ffa3  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after7_neg.cc
! 0864e746b724afe77d09e2fd0369df63  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after8_neg.cc
! ceaee1a227e05f0f105d3e773ded3cee  libstdc++-v3/testsuite/23_containers/forward_list/debug/erase_after9_neg.cc
! 100966255f86c0bb0209bf75cf6300d9  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after1_neg.cc
! 30f1bf5b0c3a9a28db61485320d9f24b  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after2_neg.cc
! 8e2edd2b32a2b8684967abc1e6718142  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after3_neg.cc
! 41408b1790a122ebb261a99fa71c1312  libstdc++-v3/testsuite/23_containers/forward_list/debug/insert_after4_neg.cc
! 293bfa5baa961e771a1096c05070b83f  libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator1_neg.cc
! 2645f917e59e3a5ea8d77086adfcd855  libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator2_neg.cc
! 684d0ad308c972af9ae426d2ef60cc3a  libstdc++-v3/testsuite/23_containers/forward_list/debug/iterator3_neg.cc
! 0d168b36cba572532143197478caabc4  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_assign_neg.cc
! 57af252954290d2ac089ba2a364d0ae4  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_constructor.cc
! db4cd2b8c8cb54cd491bf1daac52d710  libstdc++-v3/testsuite/23_containers/forward_list/debug/move_neg.cc
! 86123882ca4733a2a231b6d27f9982be  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after.cc
! 334134731ecb94853c0fbd9d53ce5e47  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after1_neg.cc
! 982a4f14cee8d0d7ffae7dc290a40e43  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after2_neg.cc
! 334604225e31c7323b7dfca468069610  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after3_neg.cc
! fc1d3c50c6c0585ebedb36d995a646bd  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after4_neg.cc
! c1c67b7f0cdd8a4e08ccb5f1c47684d4  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after5_neg.cc
! 4872030e67caf4c33440c2864041e24e  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after6_neg.cc
! 5213fe2cb3990f2cba5e56a0bb714c88  libstdc++-v3/testsuite/23_containers/forward_list/debug/splice_after7_neg.cc
! 9f32ca6f0a5bc2f373d834b141e33c11  libstdc++-v3/testsuite/23_containers/forward_list/debug/swap.cc
! fe049265fc2753bafa43c99f25313580  libstdc++-v3/testsuite/23_containers/forward_list/erasure.cc
! 3d729b39a39f38eeb3bb2e0215082778  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/1.cc
! 53165a1f8a0bc90aa9a98a98f6c3fce1  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/2.cc
! 921bfaa93cd79b819d72430ef8eaf8ad  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/3.cc
! 4801ba53c46f4f392e9b499134be960f  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/4.cc
! 5255d9b391411ca267c5193891c77f48  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/5.cc
! 23dea320af3fdf2af3a2565d4ead8b3c  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/6.cc
! ab33e69024029139044b065ae6682b35  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/92878_92947.cc
! a3cdd807fddd39b762dded5b7422d926  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/addressof.cc
! cf2b5335aec626dbee24c6cf6cbdeef8  libstdc++-v3/testsuite/23_containers/forward_list/modifiers/emplace_cxx17_return.cc
! f87795e0e07b9a8739b0fb6f48ff373d  libstdc++-v3/testsuite/23_containers/forward_list/operations/1.cc
! a56db0f99308864fbbe895972c9fdc66  libstdc++-v3/testsuite/23_containers/forward_list/operations/2.cc
! a353879731e38ad9c63f5a7e1a0c5f1a  libstdc++-v3/testsuite/23_containers/forward_list/operations/3.cc
! ec617c800bfe0817e754a6ed51f72b9c  libstdc++-v3/testsuite/23_containers/forward_list/operations/4.cc
! 7f73b62ca79bd591f55bc16ba639d2b3  libstdc++-v3/testsuite/23_containers/forward_list/operations/5.cc
! 7997a41a7c481582b28e1174cbd76393  libstdc++-v3/testsuite/23_containers/forward_list/operations/6.cc
! 34ab90c0d3a4c60eeb0233c1c2fd92f8  libstdc++-v3/testsuite/23_containers/forward_list/operations/7.cc
! bdec7279a93a43b875e77fbafb604082  libstdc++-v3/testsuite/23_containers/forward_list/operations/90105.cc
! 508d7d8173c2a90f9a7d2dfd0beb8ae6  libstdc++-v3/testsuite/23_containers/forward_list/operations/91620.cc
  7a189e8b9d2375d727e2175b911806df  libstdc++-v3/testsuite/23_containers/forward_list/operations/merge.cc
! d47737b58beb3de6a18c216f4c036d4c  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_cxx20_return.cc
! 1a5b9fc8c515fb5f9b17f2b10aee7633  libstdc++-v3/testsuite/23_containers/forward_list/operations/remove_freed.cc
! 6f8c51dd9346c366acfb5d5488ff664d  libstdc++-v3/testsuite/23_containers/forward_list/operations/unique_cxx20_return.cc
! d031f2f5d10ca8175148e49b34f493b6  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs.cc
! da9e31b15876bf020ef12a50a1b51f4a  libstdc++-v3/testsuite/23_containers/forward_list/pmr_typedefs_debug.cc
! 7b8b1a17e5f4fb5b82dc21751faf6a4d  libstdc++-v3/testsuite/23_containers/forward_list/range_access.cc
! 0f380ee68dc472346863fd1c7c3310fa  libstdc++-v3/testsuite/23_containers/forward_list/requirements/citerators.cc
! 35bb463be7c68c3029ad946a9721262b  libstdc++-v3/testsuite/23_containers/forward_list/requirements/do_the_right_thing.cc
! f7dcb0a28d8a1802483131247825b716  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/assign_neg.cc
! 44a5b5a1eeb9f401972b9fe5f239bdd0  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor.cc
! 6a8e4527cfe82c12b023f4bbe26f3227  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_1_neg.cc
! e8119ca4720547f3f7e4bbea9f0ad9db  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/constructor_2_neg.cc
! 261f3728e2678d04c4382838940ca39c  libstdc++-v3/testsuite/23_containers/forward_list/requirements/dr438/insert_neg.cc
! c972355e8bb2310cf8542ed5bec1bad5  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/basic.cc
! 799f1aa952f7a3017a507396c4bbb2c1  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/generation_prohibited.cc
! 8dc220e79062da221b6ca9c661280423  libstdc++-v3/testsuite/23_containers/forward_list/requirements/exception/propagation_consistent.cc
! 17844de18403707695c74af44f07c7b2  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/1.cc
! 5686298ae244c22a3d377d2bd9299534  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/3.cc
! 73ba411f0ff20b15d5c1a46699b212d1  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/4.cc
! 61100d74ed5f417d3a87f2fb229ef14d  libstdc++-v3/testsuite/23_containers/forward_list/requirements/explicit_instantiation/5.cc
! f09c7e0a68a358b5060b9c3bb04b4e04  libstdc++-v3/testsuite/23_containers/forward_list/requirements/typedefs.cc
! 75f925a5b892dd9a5e0b9abdee56acd7  libstdc++-v3/testsuite/23_containers/forward_list/types/1.cc
! cb4578045f72628c72bd85ed48b5844b  libstdc++-v3/testsuite/23_containers/headers/array/std_c++0x_neg.cc
! accc7da2a8ac10a020d8f17b61b53080  libstdc++-v3/testsuite/23_containers/headers/deque/synopsis.cc
! d6533a14af093105e91e6874c002696f  libstdc++-v3/testsuite/23_containers/headers/forward_list/synopsis.cc
! 7713b1b13ac0124141a88f623bffc45d  libstdc++-v3/testsuite/23_containers/headers/list/synopsis.cc
! 065b652f0d078a5449d437280d7ca0d5  libstdc++-v3/testsuite/23_containers/headers/map/synopsis.cc
! 0149986e0c64bac60e79292ac09245b5  libstdc++-v3/testsuite/23_containers/headers/queue/synopsis.cc
! a7e8c4e5eb958b3b76cedd2224cd3792  libstdc++-v3/testsuite/23_containers/headers/set/synopsis.cc
! d572203ec90f763e7862cd7f1f0d4ae8  libstdc++-v3/testsuite/23_containers/headers/stack/synopsis.cc
! f69ccb93d7c47aac6c6a083dc40a9ed3  libstdc++-v3/testsuite/23_containers/headers/tuple/std_c++0x_neg.cc
! 0bd8ea266c43f5e1504761b5637fa893  libstdc++-v3/testsuite/23_containers/headers/tuple/types_std_c++0x.cc
! a52967352ecc029d4dcfcdee1570eed7  libstdc++-v3/testsuite/23_containers/headers/unordered_map/std_c++0x_neg.cc
! 6d009e5910cd1b15da976322548dd175  libstdc++-v3/testsuite/23_containers/headers/unordered_set/std_c++0x_neg.cc
! baae7d2fa10fd30f9ba17649e4fcc5c0  libstdc++-v3/testsuite/23_containers/headers/vector/synopsis.cc
! 1a7b8563cf236ba3f60b4f3311ffe3ca  libstdc++-v3/testsuite/23_containers/list/14340.cc
! 42fe7bab72ae7e7f2e4af39ff0c933c2  libstdc++-v3/testsuite/23_containers/list/18604.cc
! 4ca30b250553f5d91121b91acad10827  libstdc++-v3/testsuite/23_containers/list/23781_neg.cc
! 6ced667cf39efa2e7376a208b95f85ec  libstdc++-v3/testsuite/23_containers/list/48101-2_neg.cc
! 6c30a2b5ac634983353c49b682823fc2  libstdc++-v3/testsuite/23_containers/list/48101-3_neg.cc
! bcd1a2187dab09177d38895c25339bbc  libstdc++-v3/testsuite/23_containers/list/48101_neg.cc
! 5428c13d1024334c32ab1a8d485b1cf9  libstdc++-v3/testsuite/23_containers/list/58764.cc
! 99ad720560efb873651afa95ec7cb4ff  libstdc++-v3/testsuite/23_containers/list/61347.cc
! a1bb0f6d66c18fb6fc7fe20d35a1e9da  libstdc++-v3/testsuite/23_containers/list/68222_neg.cc
! e1bb03a97abb7980d628b161d1aab500  libstdc++-v3/testsuite/23_containers/list/92124.cc
! 999623cf15eabc1ff1a094576f2086a8  libstdc++-v3/testsuite/23_containers/list/allocator/copy.cc
! 3462507e96067497f8bf9539e82a52d3  libstdc++-v3/testsuite/23_containers/list/allocator/copy_assign.cc
! aa1be5ac6a4c87226f5cce0eb6fecabb  libstdc++-v3/testsuite/23_containers/list/allocator/default_init.cc
! 596c07b0c1e211a757ab8ace9c71bccc  libstdc++-v3/testsuite/23_containers/list/allocator/minimal.cc
! 6f0d2abb7cf92dc1efc416fdc3c33b09  libstdc++-v3/testsuite/23_containers/list/allocator/move.cc
! c4fa25aa71310ff5d69075f14ad2eb3a  libstdc++-v3/testsuite/23_containers/list/allocator/move_assign.cc
! 7d36af9d3cf3c85c42e862c661e403b7  libstdc++-v3/testsuite/23_containers/list/allocator/noexcept.cc
! 1afa70f8781eee72efff451914d6a076  libstdc++-v3/testsuite/23_containers/list/allocator/swap.cc
! 271aced412d4a2f5672bf4c4ceb4655a  libstdc++-v3/testsuite/23_containers/list/capacity/1.cc
! ddc15f2573e5626bdb41c732ec494040  libstdc++-v3/testsuite/23_containers/list/capacity/1.h
! 9895f5bd5aabfa11dbf3cea4556c4290  libstdc++-v3/testsuite/23_containers/list/capacity/29134.cc
! 7aaf4711bb90ef52562f5b213e01ec28  libstdc++-v3/testsuite/23_containers/list/capacity/resize_size.cc
! 880df971739211acd78c9d0941b26076  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.cc
! 6b86f5b56f6b3c0af27be428212ad545  libstdc++-v3/testsuite/23_containers/list/check_construct_destroy.h
! e7aa66e68a493b8e490dfd067a0d6770  libstdc++-v3/testsuite/23_containers/list/cmp_c++20.cc
! a0cd3658afdfaa6a9152db033497ae4f  libstdc++-v3/testsuite/23_containers/list/cons/1.cc
! 5b8173643821051929b414e105ab1b18  libstdc++-v3/testsuite/23_containers/list/cons/1.h
! fcde62220d43d3c6dff9bf244c1435ac  libstdc++-v3/testsuite/23_containers/list/cons/2.cc
! 1ae6ef02bd9825bdda55f9fac54bd80b  libstdc++-v3/testsuite/23_containers/list/cons/2.h
! 72721718398d3d4d581d2d0288588d0f  libstdc++-v3/testsuite/23_containers/list/cons/3.cc
! 9fde010ee15ac468434a31fc017d7e0f  libstdc++-v3/testsuite/23_containers/list/cons/3.h
! 5f8488b4839adb36497b3507d7251e3f  libstdc++-v3/testsuite/23_containers/list/cons/4.cc
! 41d901d8285fb5f51180ecbb32977885  libstdc++-v3/testsuite/23_containers/list/cons/4.h
! 44e5a38a430a90e4e4c71dca348c7893  libstdc++-v3/testsuite/23_containers/list/cons/5.cc
! 941f89030518a0e2d7256ccc5452e300  libstdc++-v3/testsuite/23_containers/list/cons/5.h
! b0564fb6f0f1394a2834f2db154a2f8d  libstdc++-v3/testsuite/23_containers/list/cons/55979.cc
! 64df118c89224e3d2d1dc098d5305ee3  libstdc++-v3/testsuite/23_containers/list/cons/6.cc
! 9cb66cbee87426fc85cf1498906bed32  libstdc++-v3/testsuite/23_containers/list/cons/6.h
! 162f3ca86839813c2e9551ea23ec7f76  libstdc++-v3/testsuite/23_containers/list/cons/7.cc
! be26cb3b18808eb84a9282cb447e7a10  libstdc++-v3/testsuite/23_containers/list/cons/7.h
! 5093baa2efcdfde8be14a8a254eea703  libstdc++-v3/testsuite/23_containers/list/cons/8.cc
! bce9cf88227d535875834335bf77a4c6  libstdc++-v3/testsuite/23_containers/list/cons/8.h
! 3509d382b54e87fbbf4332552c92cb7d  libstdc++-v3/testsuite/23_containers/list/cons/87809.cc
! c151f7a3626b59f53d9e902ea07c4110  libstdc++-v3/testsuite/23_containers/list/cons/9.cc
! b172d2242b5070636413acbfb37737ba  libstdc++-v3/testsuite/23_containers/list/cons/9.h
! b3a928185f57191abbcd3f01ad72d555  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.cc
! fc5616fcf5ddb03648c70241086a536f  libstdc++-v3/testsuite/23_containers/list/cons/clear_allocator.h
! 187cdea62ba6bd2268ddf8ba0f290a5e  libstdc++-v3/testsuite/23_containers/list/cons/cons_size.cc
! 6507676e2a8b49119f504635e69b85db  libstdc++-v3/testsuite/23_containers/list/cons/deduction.cc
! 352b8ee867497518a0fdd5f44af6a504  libstdc++-v3/testsuite/23_containers/list/cons/moveable.cc
! 30992b4d8f4b142cb0bd47850e963b19  libstdc++-v3/testsuite/23_containers/list/cons/moveable.h
! 29065ac565aa9e96c0a349954c8a565b  libstdc++-v3/testsuite/23_containers/list/cons/noexcept_move_construct.cc
! 150df1cc094914055b5fc7fa589a5d00  libstdc++-v3/testsuite/23_containers/list/cons/self_move.cc
! 06f5620fcb0bd4c918639dcb1e7091e8  libstdc++-v3/testsuite/23_containers/list/debug/90102.cc
! 6022cbde1554deb26b25fd434b220d5a  libstdc++-v3/testsuite/23_containers/list/debug/assign1_neg.cc
! a635a78f10c4dae0088ccfdcab7509f1  libstdc++-v3/testsuite/23_containers/list/debug/assign2_neg.cc
! 6be5891c461382dc538cec3fe0b1ecb2  libstdc++-v3/testsuite/23_containers/list/debug/assign3_neg.cc
! 164e08339fb0e3eda8e414a4ee16c7de  libstdc++-v3/testsuite/23_containers/list/debug/assign4_neg.cc
! 8d7fe21a3a2923abfe0c1c1c58326973  libstdc++-v3/testsuite/23_containers/list/debug/construct1_neg.cc
! 92dcfb01d892afa78241d7a0ac010a4d  libstdc++-v3/testsuite/23_containers/list/debug/construct2_neg.cc
! 299bb6b2401c0a131af9c7aac77cd226  libstdc++-v3/testsuite/23_containers/list/debug/construct3_neg.cc
! 52cc2b7b1a40466373aa6199fa723ad6  libstdc++-v3/testsuite/23_containers/list/debug/construct4_neg.cc
! cd52d7dbd25f30c6404879e62328926f  libstdc++-v3/testsuite/23_containers/list/debug/insert1_neg.cc
! e8398a78ffd6d5026600b64dd2737cf0  libstdc++-v3/testsuite/23_containers/list/debug/insert2_neg.cc
! 102eeda1c28d658e28e129f143eb900f  libstdc++-v3/testsuite/23_containers/list/debug/insert3_neg.cc
! 6566c2413fd644e191b226360bfaa322  libstdc++-v3/testsuite/23_containers/list/debug/insert4_neg.cc
! 455d82eb2284655d48dfb0e98f4a1ca5  libstdc++-v3/testsuite/23_containers/list/debug/insert5_neg.cc
! d7718e3fce4457460dfbe2d8534dac84  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/1.cc
! 6cec8f507b3cef9c3309367d2cd146f5  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/2.cc
! 9c839bb0680313331b28a0c0c4b6c729  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/3.cc
! 46f0395f612d951d6c25a76797893d3d  libstdc++-v3/testsuite/23_containers/list/debug/invalidation/4.cc
! efa0bb3c4d9dd9f43e5ce456fb9f679b  libstdc++-v3/testsuite/23_containers/list/erasure.cc
! ee6de5b462e30789f10533fc8263f580  libstdc++-v3/testsuite/23_containers/list/init-list.cc
! 013d2ce9cc9ebe10a5990775e72712b4  libstdc++-v3/testsuite/23_containers/list/init-list.h
! 5f3c0b34393300a8039b6ef101b0e33a  libstdc++-v3/testsuite/23_containers/list/modifiers/1.cc
! 337bafd97fea59bc597aef759482fb53  libstdc++-v3/testsuite/23_containers/list/modifiers/1.h
! 7dfd3be4b8fc25ab059c47ee75191ea0  libstdc++-v3/testsuite/23_containers/list/modifiers/1_c++0x.cc
! cb93fdbb78149d35182c57d51794cd40  libstdc++-v3/testsuite/23_containers/list/modifiers/2.cc
! f0e2be1b278865bf1eabc5151fc79c1a  libstdc++-v3/testsuite/23_containers/list/modifiers/2.h
! b3047ce91e124271f04ae40573a72864  libstdc++-v3/testsuite/23_containers/list/modifiers/3.cc
! b0bd4e31729acec36826038c3e7824f1  libstdc++-v3/testsuite/23_containers/list/modifiers/3.h
! ff0c24b8100eb6079c411117db29193b  libstdc++-v3/testsuite/23_containers/list/modifiers/addressof.cc
! ea58990a3d5bbe9506a0c5b957be40d8  libstdc++-v3/testsuite/23_containers/list/modifiers/assign/1.cc
! daec2fc549cc67bc70484603ac610038  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/52799.cc
! 71eab78062eef1631ff242072196b39c  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/92878_92947.cc
! b5f68b0485e83506d175448bf2fde835  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/const_iterator.cc
! f833c3fe4ec916128c95d65cb86aeea6  libstdc++-v3/testsuite/23_containers/list/modifiers/emplace/cxx17_return.cc
! cf6bcd5085abe35b861a09525484d15e  libstdc++-v3/testsuite/23_containers/list/modifiers/erase/54577.cc
! bfd5da75d6c497c434503c239484e94d  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.cc
! f8120b2ae8a0d104347203f37c76b7d4  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/25288.h
! 01a6f67d8e25460a31d5b1e4315555a6  libstdc++-v3/testsuite/23_containers/list/modifiers/insert/const_iterator.cc
! ac958ace3af79f16988463584b30835c  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.cc
! 5e6f8e735180a946771ed25cc83fbd32  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/1.h
! 99a65f432b523c72eb9536a4552cc558  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.cc
! 594b34a97a6c769957aaf3aceae59a0f  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/2.h
! cf008b921a9a1e9d1fe254eedef318fb  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.cc
! fc8d428e00c438b25a1a9766d057f91a  libstdc++-v3/testsuite/23_containers/list/modifiers/swap/3.h
! b2a9b79955942ffc18f782d983a3efd1  libstdc++-v3/testsuite/23_containers/list/operations/1.cc
! 577065496201fda54ee8200487148650  libstdc++-v3/testsuite/23_containers/list/operations/1.h
! 07a7b18ef71fc13415c70d0a1f1095dd  libstdc++-v3/testsuite/23_containers/list/operations/2.cc
! 12ab627dd14a3f6b40f26ef5e35ffb75  libstdc++-v3/testsuite/23_containers/list/operations/2.h
! f1cba1de1b399f401c922437e5e1ac62  libstdc++-v3/testsuite/23_containers/list/operations/2_c++0x.cc
! 79c9de6b4e4e73f081e48cf79d59c493  libstdc++-v3/testsuite/23_containers/list/operations/3.cc
! 660c25bbfd436365d0ad3ba9c6d65330  libstdc++-v3/testsuite/23_containers/list/operations/3.h
! 4013154f5a00283f09426122d54642fd  libstdc++-v3/testsuite/23_containers/list/operations/35969.cc
! 687f7f90378444bd55bee3a5605cc7a9  libstdc++-v3/testsuite/23_containers/list/operations/3_c++0x.cc
! 6f5d266a460ff2227b8a2acbb77309d3  libstdc++-v3/testsuite/23_containers/list/operations/4.cc
! 5a5271062bf51b911e00bcf197877ef1  libstdc++-v3/testsuite/23_containers/list/operations/4.h
! ab8a85f3f9d0b056361140fce382c7a2  libstdc++-v3/testsuite/23_containers/list/operations/42352.cc
  e9b09b08be9f79aee16cdfe50434376c  libstdc++-v3/testsuite/23_containers/list/operations/66742.cc
! 5d0b2fc6e6e3729e9c788bfcee057a87  libstdc++-v3/testsuite/23_containers/list/operations/78389.cc
! 46a618a62db2eb4dfbcc8a3237a53ebd  libstdc++-v3/testsuite/23_containers/list/operations/80034.cc
! f60ed9d0260a0c8c149a0bf5d428c4af  libstdc++-v3/testsuite/23_containers/list/operations/91620.cc
! 8a3b907969502b17a3ef98ac43ace5d6  libstdc++-v3/testsuite/23_containers/list/operations/remove_cxx20_return.cc
! e250c2fdb371ced7777a68a02b96bcb0  libstdc++-v3/testsuite/23_containers/list/operations/splice/const_iterator.cc
! f28e916e27a23a5267dbd7a60c269859  libstdc++-v3/testsuite/23_containers/list/operations/unique_cxx20_return.cc
! 3fb18d25d7da3592b9e1de95d7853efa  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs.cc
! 73c0980af473f936a2fda6a75b0afe21  libstdc++-v3/testsuite/23_containers/list/pmr_typedefs_debug.cc
! dcfc50ddb8391e001dc7cf867da01ca4  libstdc++-v3/testsuite/23_containers/list/pthread1.cc
! 8b4f86f87d7eafb82a2d0fc36dfe58ad  libstdc++-v3/testsuite/23_containers/list/pthread5.cc
! 49a97b98fc3578ac110e0e2625216810  libstdc++-v3/testsuite/23_containers/list/range_access.cc
! 7b89850cf7ac76e4696c11fc60872436  libstdc++-v3/testsuite/23_containers/list/requirements/citerators.cc
! edad86694b9808b0339f658243ceb321  libstdc++-v3/testsuite/23_containers/list/requirements/do_the_right_thing.cc
! aae5617f259da10ae6b04c29ad6e68d8  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/assign_neg.cc
! 6f7074a0f0d3607b2160a6b2be8cb398  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor.cc
! 13012f5bd30c50180bba988d1f8f5005  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_1_neg.cc
! 366bd7925c4bfc9d32aa04901df33a0b  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/constructor_2_neg.cc
! 0cd59b25f747580f819d39e41f50c036  libstdc++-v3/testsuite/23_containers/list/requirements/dr438/insert_neg.cc
! da649b02c69844695ef671ec49b0f7b7  libstdc++-v3/testsuite/23_containers/list/requirements/exception/basic.cc
! d218d1f94462b8facbff153c91ef7843  libstdc++-v3/testsuite/23_containers/list/requirements/exception/generation_prohibited.cc
! fe0d313f4d38437494e2983909e19a45  libstdc++-v3/testsuite/23_containers/list/requirements/exception/propagation_consistent.cc
! 7bcbf46e786d8acce21f5da379b3d472  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/1.cc
! 5a7b35fe31b2056bf9e51f1df2e3b207  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/2.cc
! 7cc6548df881f0b18283025b72535351  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/3.cc
! 2b104b195b5b5bcb453549f84671dde4  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/4.cc
! cf98fd54a751452a1dd01a1dfb16e052  libstdc++-v3/testsuite/23_containers/list/requirements/explicit_instantiation/5.cc
! 14faf3382de5d52fca459c12dbb097a4  libstdc++-v3/testsuite/23_containers/list/requirements/partial_specialization/1.cc
! 9ed1f65c2a6bf8168cf32666ea29fe61  libstdc++-v3/testsuite/23_containers/list/requirements/typedefs.cc
! 36d44d9e75118d75713bef62c570c8fe  libstdc++-v3/testsuite/23_containers/list/types/1.cc
! fc5c97ae597f7605eea88b3a0b518e4d  libstdc++-v3/testsuite/23_containers/map/14340.cc
! 107bd8d22f83efdea15a727f5ed1428e  libstdc++-v3/testsuite/23_containers/map/18604.cc
! df4c567e18d284001696e8ee96d60993  libstdc++-v3/testsuite/23_containers/map/23781_neg.cc
! 30d89497ebfd6d4aecd3be9c56069eb8  libstdc++-v3/testsuite/23_containers/map/48101-2_neg.cc
! 989022136aaa79ecbf9e35e97444ced4  libstdc++-v3/testsuite/23_containers/map/48101-3_neg.cc
! f81dfb2a78a92da02240cc105c077266  libstdc++-v3/testsuite/23_containers/map/48101_neg.cc
! 0280628618f6be1645b99fd01d8023c4  libstdc++-v3/testsuite/23_containers/map/56613.cc
! b216760b3a10b3c500e5cbafb2ee7bf6  libstdc++-v3/testsuite/23_containers/map/58764.cc
! 24dc2e5f8feff7f60e5f450dfff7eb9f  libstdc++-v3/testsuite/23_containers/map/59872.cc
! 8087d404df1315ec2e9493a69b60f0e1  libstdc++-v3/testsuite/23_containers/map/77334.cc
! 4e2efd9253b5ba200eb22fe81d28164f  libstdc++-v3/testsuite/23_containers/map/92124.cc
! cbd106988c840a71bfc064f152f1a057  libstdc++-v3/testsuite/23_containers/map/allocator/copy.cc
! 563fe71d12efd5c914b334e1787954a0  libstdc++-v3/testsuite/23_containers/map/allocator/copy_assign.cc
! 9214d8bd88b055467edfdac00adc7164  libstdc++-v3/testsuite/23_containers/map/allocator/default_init.cc
! 7afd6e64cb984d7f6ee6803d372c153a  libstdc++-v3/testsuite/23_containers/map/allocator/init-list.cc
! 02562545054502fb8bbb00b595bd850d  libstdc++-v3/testsuite/23_containers/map/allocator/minimal.cc
! 246e5b47c872da5047fd0c9c47e05e51  libstdc++-v3/testsuite/23_containers/map/allocator/move.cc
! ed893d56d9aacc6814d82bba8235fe0b  libstdc++-v3/testsuite/23_containers/map/allocator/move_assign.cc
! 512722a369b59161c51f728cccf2f92e  libstdc++-v3/testsuite/23_containers/map/allocator/move_cons.cc
! 275d41fbe0b3deb06cc76b7aeeab936e  libstdc++-v3/testsuite/23_containers/map/allocator/noexcept.cc
! 74e31cea851efce39520f3c7315d4b59  libstdc++-v3/testsuite/23_containers/map/allocator/swap.cc
! 1d383ce9b2cf14c574c08b4c4dc6077e  libstdc++-v3/testsuite/23_containers/map/capacity/29134.cc
  16c187179e9e1a4ff16cf122fb20804e  libstdc++-v3/testsuite/23_containers/map/cons/deduction.cc
! 818b6950824acaa152fad4e691a86905  libstdc++-v3/testsuite/23_containers/map/cons/moveable.cc
! e7bf159cc8b74103ed17af50458a363b  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_default_construct.cc
! 9881bc0137cf43528b5a7f1a20d0e951  libstdc++-v3/testsuite/23_containers/map/cons/noexcept_move_construct.cc
! 00d79f254114578a072178ec56634d36  libstdc++-v3/testsuite/23_containers/map/debug/60499.cc
! ea58ca872b465852cf64023ba611582d  libstdc++-v3/testsuite/23_containers/map/debug/90102.cc
! 090a58ac357accf39ca2e7027c4d40c5  libstdc++-v3/testsuite/23_containers/map/debug/construct1_neg.cc
! 3f9962c36b2a92cca865fe24969e4ada  libstdc++-v3/testsuite/23_containers/map/debug/construct2_neg.cc
! 6353e101903db952fb8b1cb85b7dd08e  libstdc++-v3/testsuite/23_containers/map/debug/construct3_neg.cc
! a6b4d203cf571f4dd8cbecf576bf26b4  libstdc++-v3/testsuite/23_containers/map/debug/construct4_neg.cc
! 59e9bb1aba6a7545c5528b4c9051c7a0  libstdc++-v3/testsuite/23_containers/map/debug/construct5_neg.cc
! 2c280192e3034e4b0b042d63cac84169  libstdc++-v3/testsuite/23_containers/map/debug/insert1_neg.cc
! 7d6158fb4037bcaa6c43268ccd652f75  libstdc++-v3/testsuite/23_containers/map/debug/insert2_neg.cc
! f8be6eb70dc856dad609960a2bdbf922  libstdc++-v3/testsuite/23_containers/map/debug/insert3_neg.cc
! 1bb91a3d75797e77c0a0e1aaa4d57971  libstdc++-v3/testsuite/23_containers/map/debug/insert4_neg.cc
! 866183c2c5992c4514e8259122edfad6  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/1.cc
! 2b98f84bb6d6099d109fe9c1eb33cb26  libstdc++-v3/testsuite/23_containers/map/debug/invalidation/2.cc
! c94fa2936aab290c3d3d051e6e319621  libstdc++-v3/testsuite/23_containers/map/debug/move_assign_neg.cc
! 184a68f9415b70cb27bfc93314f6ccd2  libstdc++-v3/testsuite/23_containers/map/debug/move_neg.cc
! 1a09f5c817c1739c323cbe31c275e9cc  libstdc++-v3/testsuite/23_containers/map/element_access/1.cc
! 2d46033e4d479699fa4eac7a3ff26b1b  libstdc++-v3/testsuite/23_containers/map/element_access/2.cc
! d7d41ac4c9038af917e62c13ae12fdf4  libstdc++-v3/testsuite/23_containers/map/element_access/39901.cc
! 56c28e7d89fa1e71bc7fac82fa531581  libstdc++-v3/testsuite/23_containers/map/element_access/46148.cc
! c0436c56d81afdaba0f86559b964eed9  libstdc++-v3/testsuite/23_containers/map/erasure.cc
! 5a53cb253cc7d077a95ebbcc047f5ee6  libstdc++-v3/testsuite/23_containers/map/init-list.cc
! 8642b25c59832140c46994b559a3d1a8  libstdc++-v3/testsuite/23_containers/map/modifiers/108554.cc
! e6e1eedc944b3840feb958d49b207281  libstdc++-v3/testsuite/23_containers/map/modifiers/dr130.cc
! 22f4cbd6e988157f90abeab2d4592406  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/1.cc
! 205086c15a257b2b3847ce68833198f5  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/92300.cc
! cea5b93735c90b2fffb66c35d41fc300  libstdc++-v3/testsuite/23_containers/map/modifiers/emplace/92878_92947.cc
! 6b5850be3c7f970b5b40f844768e01cb  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/47628.cc
! 3529ba298617b5621a7e73a616b8d776  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/51142.cc
! 56eab73fe131f44f32ea1a2d93867835  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/abi_tag.cc
! 82db5a1fbc17bf4e504f93d9ddd2b94b  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/dr130-linkage-check.cc
! 3151414ea87401f9954dca81195a52e0  libstdc++-v3/testsuite/23_containers/map/modifiers/erase/end_neg.cc
! 575bf6d916c7bd808cb78f219f3c61d2  libstdc++-v3/testsuite/23_containers/map/modifiers/extract.cc
! e13d4929e8ef2177e580a0a72726ba41  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/1.cc
! 4fe8ee1dc3cb0435e98dc8d1e05a044f  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/16813.cc
! 3e6679fc3a44d3be4b15a605d1a01959  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/2.cc
! b984f3b18db9ae462048c198b07c44a0  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/3.cc
! 42f35a324ae8db3bf8034d29d5dde113  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/4.cc
! 232573042873001e37712e312ceec9e2  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/5.cc
! d075218b327729746b4951c655b40aef  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/78595.cc
! c088fb16ecad829b82611c6531427358  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/83226.cc
! cc46cb7faeaa3d5fc479e99977a1bda0  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/87194.cc
! bf1079f7dbecd612e1c7ff8cc0558abc  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/92300.cc
! 1986fb5643af6a8cd1929f1eb4b461f7  libstdc++-v3/testsuite/23_containers/map/modifiers/insert/dr2354.cc
! 13ecb383b92d81432fcafdbf02766e8d  libstdc++-v3/testsuite/23_containers/map/modifiers/insert_or_assign/1.cc
! 00e040f9e3c8b736fff811d23a6aca36  libstdc++-v3/testsuite/23_containers/map/modifiers/merge.cc
! fb16345d89bc834f16e822cd89dec6a6  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/1.cc
! 9ae2e9983c5692c61593f22c1a173e0f  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/2.cc
! dad797ecf8681c7f08a03ec10e9a2909  libstdc++-v3/testsuite/23_containers/map/modifiers/swap/3.cc
! 0e9e69abb3ad72074493018247aa4722  libstdc++-v3/testsuite/23_containers/map/modifiers/try_emplace/1.cc
! 67423d3bc9b1e996ec1e2cf9a89d47ae  libstdc++-v3/testsuite/23_containers/map/operations/1.cc
! 8a274f1e661d4a3c484d5f73b8a2b55c  libstdc++-v3/testsuite/23_containers/map/operations/2.cc
! e33fefe81db7950220c20c44065bec58  libstdc++-v3/testsuite/23_containers/map/operations/31440.cc
! fdb5f9b34184eddbcff2a0af4acac02b  libstdc++-v3/testsuite/23_containers/map/operations/contains.cc
! f97fee7e608f98025e5f296c5bbb3327  libstdc++-v3/testsuite/23_containers/map/operations/count.cc
! a60b4bd791392ae8426f161f66546467  libstdc++-v3/testsuite/23_containers/map/operators/1.cc
! 3aced3acc7848b2ac3972e08fd23af0d  libstdc++-v3/testsuite/23_containers/map/operators/1_neg.cc
! 9142aac52b49568f3dd0193675643499  libstdc++-v3/testsuite/23_containers/map/operators/2.cc
! 670e581455679b46f2742a4381d45ebb  libstdc++-v3/testsuite/23_containers/map/operators/cmp_c++20.cc
! 89054aabf03f37391891e4a5cd1e6bcc  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs.cc
! 359695a8638695b0e0966a5f55ec135b  libstdc++-v3/testsuite/23_containers/map/pmr_typedefs_debug.cc
! d5cb8091561c8b2ff46d6ce7d99b233b  libstdc++-v3/testsuite/23_containers/map/pthread6.cc
! 6960dea4d24aec3e6ec7bc8c8dd7566b  libstdc++-v3/testsuite/23_containers/map/range_access.cc
! 2e4e5dbc63f2732ba6e2d89d8778e9c1  libstdc++-v3/testsuite/23_containers/map/requirements/citerators.cc
! 0147dbb095a5584972df43795d3f0f5d  libstdc++-v3/testsuite/23_containers/map/requirements/exception/basic.cc
! 0c761c34c07fac1dc390f1c9ffadcd5d  libstdc++-v3/testsuite/23_containers/map/requirements/exception/generation_prohibited.cc
! 5db8b379727753ff928b91881f9f6a92  libstdc++-v3/testsuite/23_containers/map/requirements/exception/propagation_consistent.cc
! 5ee57bda9c7ec7a6a112aa762caec2e7  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/1.cc
! ac30ac620804297abd71a168eb1a79d1  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/2.cc
! 83880b8ecd7ad41937c9256da434644c  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/3.cc
! 8b9d376ef58d93c6d8acde047bf503f7  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/4.cc
! 551b0bbe16940f77af3c0589e3637d50  libstdc++-v3/testsuite/23_containers/map/requirements/explicit_instantiation/5.cc
! 798610fd9496068ca6c1bbe4ac8b65b9  libstdc++-v3/testsuite/23_containers/map/requirements/partial_specialization/1.cc
! e11181efac014fce44e52d0409998c06  libstdc++-v3/testsuite/23_containers/map/requirements/typedefs.cc
! e3e348ec6adb36346b0a9817fae152f5  libstdc++-v3/testsuite/23_containers/multimap/14340.cc
! 7387cf754c1a9a27ea5551227f9c0055  libstdc++-v3/testsuite/23_containers/multimap/23781_neg.cc
! 68e5299071ec104390aeba35b06513f9  libstdc++-v3/testsuite/23_containers/multimap/48101-2_neg.cc
! 13147b8a789048b1e6c048f6cf9d9ab1  libstdc++-v3/testsuite/23_containers/multimap/48101-3_neg.cc
! 79c9c2f3c9e1306f41044c9974d0e3a7  libstdc++-v3/testsuite/23_containers/multimap/48101_neg.cc
! 8c201dfdd74a8cf91181279b42749d8a  libstdc++-v3/testsuite/23_containers/multimap/58764.cc
! 1a6f0534379fdbdc2fef7e40b553790d  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy.cc
! ea5d61673f56d3b36c9b418d2096374b  libstdc++-v3/testsuite/23_containers/multimap/allocator/copy_assign.cc
! 6943d37f4f32fe1409bb7bf98bd78d65  libstdc++-v3/testsuite/23_containers/multimap/allocator/init-list.cc
! 000ccad0ba32b5e9d0c16541350efb58  libstdc++-v3/testsuite/23_containers/multimap/allocator/minimal.cc
! f688207911ead1b7b5906ebd79bb2605  libstdc++-v3/testsuite/23_containers/multimap/allocator/move.cc
! 19b7f0180e859828db925be958f1b175  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_assign.cc
! b9cbbb0f368349ddc8a97ba1d9c63cab  libstdc++-v3/testsuite/23_containers/multimap/allocator/move_cons.cc
! 746261e87c480d7d3887f5b138590c49  libstdc++-v3/testsuite/23_containers/multimap/allocator/noexcept.cc
! 8d3f26fbddc59e013c091752fadd98bf  libstdc++-v3/testsuite/23_containers/multimap/allocator/swap.cc
! 164f2d44187bf46313e79e822805c4ea  libstdc++-v3/testsuite/23_containers/multimap/capacity/29134.cc
  9fc3989fb543a9b01e92a0c23926622f  libstdc++-v3/testsuite/23_containers/multimap/cons/deduction.cc
! 19cc908c6e5a485003942c81370b0329  libstdc++-v3/testsuite/23_containers/multimap/cons/moveable.cc
! 1217ff6484f09fc5fc1676a8399662f9  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_default_construct.cc
! a7315f831a92981c6e7c1d903fdf8c0b  libstdc++-v3/testsuite/23_containers/multimap/cons/noexcept_move_construct.cc
! 42813b247741507aa195e4983dfd832f  libstdc++-v3/testsuite/23_containers/multimap/debug/60499.cc
! 4e51b0c8ffa9e8b89ccbfb6b07f0d76b  libstdc++-v3/testsuite/23_containers/multimap/debug/90102.cc
! 8545cb90d0168036b46948691e770079  libstdc++-v3/testsuite/23_containers/multimap/debug/construct1_neg.cc
! e1b9742e794cd7aad997521fce1174de  libstdc++-v3/testsuite/23_containers/multimap/debug/construct2_neg.cc
! 57d81b57cd83512dd4cb796f3f1007a5  libstdc++-v3/testsuite/23_containers/multimap/debug/construct3_neg.cc
! 5a4ee650ddd6d2d2a3dd12388fde2f89  libstdc++-v3/testsuite/23_containers/multimap/debug/construct4_neg.cc
! bed3bbe18d2075908ede4a9841488c24  libstdc++-v3/testsuite/23_containers/multimap/debug/construct5_neg.cc
! 936fa52db0e040b6aab1b5292f8193b1  libstdc++-v3/testsuite/23_containers/multimap/debug/insert1_neg.cc
! a3286a402664941f6bcadb8768ef60f4  libstdc++-v3/testsuite/23_containers/multimap/debug/insert2_neg.cc
! b2f949877c82611f29d7d2c01ed93512  libstdc++-v3/testsuite/23_containers/multimap/debug/insert3_neg.cc
! 6859104d16d9332e486b71db36269866  libstdc++-v3/testsuite/23_containers/multimap/debug/insert4_neg.cc
! 67c12046adf0cacb1be6d9bd727a5d3e  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/1.cc
! 8cb717c82e368f150ddf605bb1fa94a8  libstdc++-v3/testsuite/23_containers/multimap/debug/invalidation/2.cc
! e25927e2233e81464f16fdf7e718c336  libstdc++-v3/testsuite/23_containers/multimap/debug/move_assign_neg.cc
! d52570e607a4ef29d18958a2fb86eae0  libstdc++-v3/testsuite/23_containers/multimap/debug/move_neg.cc
! f49624ed723d064ea98565d7d25cb10d  libstdc++-v3/testsuite/23_containers/multimap/init-list.cc
! c3d2ff109481cfb314a3f07d9273ebe3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/dr130.cc
! 763ff483e766eb9b46875c1f32b690bf  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/1.cc
! 9e0376b4b7dd3aee8e9e2d74623aa987  libstdc++-v3/testsuite/23_containers/multimap/modifiers/emplace/92878_92947.cc
! f3ce44e8ddb718dd06a712a9f3fccbac  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/47628.cc
! b48a9927f8e36f6607467140573407a8  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/51142.cc
! 4b195f33fc15c8a6936b58d616d724ea  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/abi_tag.cc
! 3de5be09946b2a2c639cee9c6c59427e  libstdc++-v3/testsuite/23_containers/multimap/modifiers/erase/dr130-linkage-check.cc
! 1889f20f0f017a020930e64e2a2e8ffe  libstdc++-v3/testsuite/23_containers/multimap/modifiers/extract.cc
! 68caece496876806348aba1f49b2a329  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/1.cc
! 4f07617005b3d2223936cf665e7fccc7  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/2.cc
! 58cc3e83b9ad85f0745df136cd999820  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/22102.cc
! ef3592309cf453f726523845bd85d73b  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/3.cc
! 2c93baa34effd48aa940545a3bc74c06  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/4.cc
! bbbabf07127e0a241b3b59c812350ce3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/78595.cc
! a9b8608419a7a4d0a7e9d90ea62522c7  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/87194.cc
! 9dcb6f8af7caf59d526d328fa48bcda4  libstdc++-v3/testsuite/23_containers/multimap/modifiers/insert/dr2354.cc
! 9be24b2b92583bc5ba1e02590596b3a3  libstdc++-v3/testsuite/23_containers/multimap/modifiers/merge.cc
! ff20551e80a18c4e810c18e40b8c18b9  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/1.cc
! afa51b245543550e3fc2e4242c8729b4  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/2.cc
! 4fef498b210ecb753cb0d6134eb0cc59  libstdc++-v3/testsuite/23_containers/multimap/modifiers/swap/3.cc
! 39aa3ee8e04151b12d81ef4ecb47416b  libstdc++-v3/testsuite/23_containers/multimap/operations/1.cc
! 04c29c8e43bdb863f9d2af2322342fe3  libstdc++-v3/testsuite/23_containers/multimap/operations/2.cc
! a152d30c00d3bcadbb67d15eba178d18  libstdc++-v3/testsuite/23_containers/multimap/operations/contains.cc
! 902f66626b2cbe72b077a0bb624d7749  libstdc++-v3/testsuite/23_containers/multimap/operations/count.cc
! 45866ff08cf7a37c8cd026d6482828bf  libstdc++-v3/testsuite/23_containers/multimap/operators/cmp_c++20.cc
! 85258f6c8535ba3b525452fa365f59e6  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs.cc
! b8aa66b2910207bcafdc15c599eedbe2  libstdc++-v3/testsuite/23_containers/multimap/pmr_typedefs_debug.cc
! 5d131b9523bf6b28a302281151f12838  libstdc++-v3/testsuite/23_containers/multimap/range_access.cc
! 4e744d3b6ebe302bdb012c36922a3676  libstdc++-v3/testsuite/23_containers/multimap/requirements/citerators.cc
! 8242ae2bd519b16e3ecd14074408ce74  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/basic.cc
! dac3f061e48507ba07e58ef048f18efb  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/generation_prohibited.cc
! bd362f59e662d9cd8c13a9e9029cbb21  libstdc++-v3/testsuite/23_containers/multimap/requirements/exception/propagation_consistent.cc
! 5c68d407efa65a801a86e491683a087e  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/1.cc
! 7af463f0a088aebd7ef0064e4a7f21cd  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/2.cc
! a9112fab7cbbd34fddcd3ad5b9b9e6b1  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/3.cc
! 56e622e9d83b1a6ac2b63a74d75ba9d5  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/4.cc
! b60dfcb299172986cabc3fb12ff19fb2  libstdc++-v3/testsuite/23_containers/multimap/requirements/explicit_instantiation/5.cc
! 6ec5030c346757374fae552c2a094f2e  libstdc++-v3/testsuite/23_containers/multimap/requirements/partial_specialization/1.cc
! d6caf0e496f8331eea26e72a92ee9f3e  libstdc++-v3/testsuite/23_containers/multimap/requirements/typedefs.cc
! 5f7e8938d5ba89893aa8c49d50810b4d  libstdc++-v3/testsuite/23_containers/multiset/14340.cc
! dba17088c5aeaba72b9428623700b611  libstdc++-v3/testsuite/23_containers/multiset/23781_neg.cc
! 56ada9569e752b355d85e2511df38862  libstdc++-v3/testsuite/23_containers/multiset/48101-2_neg.cc
! bef793e1921d0656aa14e16811e3dee3  libstdc++-v3/testsuite/23_containers/multiset/48101-3_neg.cc
! 9bd28f46f2dea22ce07daf0a5c4f4c1c  libstdc++-v3/testsuite/23_containers/multiset/48101_neg.cc
! 86668f0e59f2f31112b2683b4f0433e0  libstdc++-v3/testsuite/23_containers/multiset/58764.cc
  c599e48655ea2e75c592ab5a1cf5ae3c  libstdc++-v3/testsuite/23_containers/multiset/allocator/103501.cc
! 12c8afbdc852b270df0017036d8d18a6  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy.cc
! 87048da8652e23c9a84be183c321e6fc  libstdc++-v3/testsuite/23_containers/multiset/allocator/copy_assign.cc
! 1015981c13b90494475100adf62047f0  libstdc++-v3/testsuite/23_containers/multiset/allocator/init-list.cc
! 9fdc59f21fe7d3b80024f50edf01733e  libstdc++-v3/testsuite/23_containers/multiset/allocator/minimal.cc
! 0cbb0a1d2303a4829ad26241f01af1dd  libstdc++-v3/testsuite/23_containers/multiset/allocator/move.cc
! f701935554c52ba10f53a0474fd5ced0  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_assign.cc
! 2288d0012c79916b365f559b4b68bb00  libstdc++-v3/testsuite/23_containers/multiset/allocator/move_cons.cc
! bb774681172b49e79f934c9a3c27040b  libstdc++-v3/testsuite/23_containers/multiset/allocator/noexcept.cc
! e526b9d53a215daa4e3cfb075c3b14f1  libstdc++-v3/testsuite/23_containers/multiset/allocator/swap.cc
! ef95ed63e393af4577e6cfae3fed086b  libstdc++-v3/testsuite/23_containers/multiset/capacity/29134.cc
  bbb896871fd7c7c3f4be6d45db152294  libstdc++-v3/testsuite/23_containers/multiset/cons/deduction.cc
! 3fc929b5445276663704982990df62e8  libstdc++-v3/testsuite/23_containers/multiset/cons/moveable.cc
! 1ab699f18a3cbfe68e659364f6b2cb38  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_default_construct.cc
! 834a2bbf4d806dc3fbb40f8b0295c70c  libstdc++-v3/testsuite/23_containers/multiset/cons/noexcept_move_construct.cc
! 83768413a4f92f0d426c68f0ce03d4ba  libstdc++-v3/testsuite/23_containers/multiset/debug/60499.cc
! 207f9ff9c15e0f28377573f8a5fdd2e3  libstdc++-v3/testsuite/23_containers/multiset/debug/90102.cc
! 347fd0d5dbf3f534a993e1c895b32f7e  libstdc++-v3/testsuite/23_containers/multiset/debug/construct1_neg.cc
! 23ccbf84752f85d69676a19732e0f0b6  libstdc++-v3/testsuite/23_containers/multiset/debug/construct2_neg.cc
! f23c0ef8e749c7ad2cc90e2677a71ffd  libstdc++-v3/testsuite/23_containers/multiset/debug/construct3_neg.cc
! ee21eb33a430e21672bce38a398d5a98  libstdc++-v3/testsuite/23_containers/multiset/debug/construct4_neg.cc
! 97d6a1c9272395860b202bafd9717952  libstdc++-v3/testsuite/23_containers/multiset/debug/construct5_neg.cc
! c96be14e8574f92ee681994f8156c2e2  libstdc++-v3/testsuite/23_containers/multiset/debug/insert1_neg.cc
! e9204682a053f9dcfcdf9776aef9938d  libstdc++-v3/testsuite/23_containers/multiset/debug/insert2_neg.cc
! 12ca38831d9fc920118e02188ca0ee37  libstdc++-v3/testsuite/23_containers/multiset/debug/insert3_neg.cc
! 3b8aa15f64f4998de79ba643fc5d0ea5  libstdc++-v3/testsuite/23_containers/multiset/debug/insert4_neg.cc
! 718218eed1145f0ec91b8085ec223249  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/1.cc
! b51069936070d218f8a013d93879430c  libstdc++-v3/testsuite/23_containers/multiset/debug/invalidation/2.cc
! 8014fb73c4c65a958b06674acf54f5e5  libstdc++-v3/testsuite/23_containers/multiset/debug/move_assign_neg.cc
! 091280d32ef91c586f1b525f40349a28  libstdc++-v3/testsuite/23_containers/multiset/debug/move_neg.cc
! 92335f3b1a8ef2331b8bba401dcf90a2  libstdc++-v3/testsuite/23_containers/multiset/init-list.cc
! 4c16e1f236d17c0b5dc229b38b39186e  libstdc++-v3/testsuite/23_containers/multiset/modifiers/dr130.cc
! 742c346973c3c658a1e99ed77c8f8519  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/1.cc
! dd27850edb189b8d2ebd6f0682bbc309  libstdc++-v3/testsuite/23_containers/multiset/modifiers/emplace/92878_92947.cc
! af0a04c703a05aab0da1a5d5e392ac84  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/51142.cc
! babb68b5a48fe9c9e846e234587454a5  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/abi_tag.cc
! a8398a2106b46eda49bb81344251e463  libstdc++-v3/testsuite/23_containers/multiset/modifiers/erase/dr130-linkage-check.cc
! 37c6d9e9ffb5ad6929807c4912283e5a  libstdc++-v3/testsuite/23_containers/multiset/modifiers/extract.cc
! efd45aca620e8f65f08e83027b58ff46  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/1.cc
! 21cfb132ee23a33b0dddd2d5ec22413e  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/2.cc
! c0e93492d761cab96b87ae51a7b5ba71  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/22102.cc
! 5add44deb5e80798f50560ed8b3c6d05  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/3.cc
! 7f736066879495ad90e77229e51bc8ca  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/4.cc
! 3e91681a178ce2f78923a8e19a7ca81c  libstdc++-v3/testsuite/23_containers/multiset/modifiers/insert/87194.cc
! 7a6ea3372b2b5af9f0f81c8124708fdd  libstdc++-v3/testsuite/23_containers/multiset/modifiers/merge.cc
! 6cd957bfa2e10edd78a85a967469c4db  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/1.cc
! 186c26a7abcd68698f754e9b8e898762  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/2.cc
! 1dd9f9406aa602379a28b75787b1ebd6  libstdc++-v3/testsuite/23_containers/multiset/modifiers/swap/3.cc
! cbe55acaec6480e384d32482f846d07e  libstdc++-v3/testsuite/23_containers/multiset/operations/1.cc
! 52429983bd416f2550cfe8b6cbeab6fc  libstdc++-v3/testsuite/23_containers/multiset/operations/2.cc
! 398de99c48baa49488c8692e1dc85221  libstdc++-v3/testsuite/23_containers/multiset/operations/contains.cc
! 738e775ce3cd8e02dc91019623b2ed74  libstdc++-v3/testsuite/23_containers/multiset/operations/count.cc
! aa20d0cad26a9a8281254f83bd944f9e  libstdc++-v3/testsuite/23_containers/multiset/operators/cmp_c++20.cc
! e100f3d2ff8f3c7d65918fcf1e2f829d  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs.cc
! b9b33247e60f5d048d844cc0f1bfbee3  libstdc++-v3/testsuite/23_containers/multiset/pmr_typedefs_debug.cc
! d70687a1c6ec8d853ebff034ed4104db  libstdc++-v3/testsuite/23_containers/multiset/range_access.cc
! db04f600cc86372c6a5e06af3b242a51  libstdc++-v3/testsuite/23_containers/multiset/requirements/citerators.cc
! 34778f8db0de4182989d3575951386b4  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/basic.cc
! dc30b16a6dbb6b7864ff5ae7adf41044  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/generation_prohibited.cc
! 3e4dfda5dce89023c1bbcfd54a4d7871  libstdc++-v3/testsuite/23_containers/multiset/requirements/exception/propagation_consistent.cc
! 9fb973b16360bf36faa73b39d6978ce1  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1.cc
! 39bba372cc9f13c1e2e5838690138675  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/1_c++0x.cc
! 2e8e87684e35b03d0c665e57b64fde67  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/2.cc
! 305f437138304f1f6b78984e5677592d  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/3.cc
! f750de8f7a7b9f522f1d20e2d7b1c24b  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/4.cc
! 83fbed2c29ae3d0412c684b7c70a428c  libstdc++-v3/testsuite/23_containers/multiset/requirements/explicit_instantiation/5.cc
! dda5d6f1c5182a1b581a45ec2d4bc71c  libstdc++-v3/testsuite/23_containers/multiset/requirements/partial_specialization/1.cc
! 95eade5bc721f08b1dd1d74efb06e211  libstdc++-v3/testsuite/23_containers/multiset/requirements/typedefs.cc
! 67f73d3809efd5946ecf4de7a8538042  libstdc++-v3/testsuite/23_containers/priority_queue/67085.cc
! 55e1b3aaddbbda2b023958a8dc2ddcb4  libstdc++-v3/testsuite/23_containers/priority_queue/77528.cc
! 95f7ba6a7e6c8dace2c3383d38968f2a  libstdc++-v3/testsuite/23_containers/priority_queue/92878_92947.cc
! d956ee4a38db91077a66f0de3eba1c27  libstdc++-v3/testsuite/23_containers/priority_queue/allocator.cc
! 2668a59894c0562df284bf8902b11eb0  libstdc++-v3/testsuite/23_containers/priority_queue/deduction.cc
! e1449b45b664eee7008bdee02e2fbc1e  libstdc++-v3/testsuite/23_containers/priority_queue/dr2537.cc
  d28290e2547d3a24b7652041265d30c0  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3506.cc
  1b78335293495d23cdfab47884650bc1  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3522.cc
  a0bec79150ce876cf8e27c12caf9e151  libstdc++-v3/testsuite/23_containers/priority_queue/lwg3529.cc
! f83fb074d4e085ce9bbabc21b1525a9f  libstdc++-v3/testsuite/23_containers/priority_queue/members/7161.cc
! c4a9b042e89772cae4c21476d5ed84f0  libstdc++-v3/testsuite/23_containers/priority_queue/moveable.cc
! e79a98949b555aea490f99be745f0428  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/constructible.cc
! abb7aa509af89d4d01a7f858aae7325c  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1.cc
! 854313e977289af11f5bb66551a082d7  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/explicit_instantiation/1_c++98.cc
! bb742eb7009ac27c043462005083167c  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/typedefs.cc
! 1697d6d7476772ea095dadf92dbf905d  libstdc++-v3/testsuite/23_containers/priority_queue/requirements/uses_allocator.cc
! b58e1c7ce5c99fcb6934dd744d73dfb8  libstdc++-v3/testsuite/23_containers/queue/77528.cc
! bc481ecdd61a94b8838357ed158dae56  libstdc++-v3/testsuite/23_containers/queue/92878_92947.cc
! 159d278abe72ffb8403720199c9244e0  libstdc++-v3/testsuite/23_containers/queue/cmp_c++20.cc
! a9263785e1f99b0cc95e89672abf16f8  libstdc++-v3/testsuite/23_containers/queue/cons_from_iters.cc
! 7754843142137674e25e18645ffbbc1f  libstdc++-v3/testsuite/23_containers/queue/deduction.cc
! 722518974bd78c846cf55d2d503f1aef  libstdc++-v3/testsuite/23_containers/queue/members/7157.cc
! d72a4fbe9daf0b9de2c95ada271becdb  libstdc++-v3/testsuite/23_containers/queue/members/emplace_cxx17_return.cc
! bd63e50d6d7640632c0a5b36f3218b6b  libstdc++-v3/testsuite/23_containers/queue/moveable.cc
! d15e859cb2dc89346926d6105a0e70b5  libstdc++-v3/testsuite/23_containers/queue/requirements/constructible.cc
! a6cd1048a9a2bf53e888cc651c9c2eb9  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1.cc
! 77d4e3b858830d58d3e494c14fdf3077  libstdc++-v3/testsuite/23_containers/queue/requirements/explicit_instantiation/1_c++98.cc
! 70245cfa4a5b0d8e24d00177676f9890  libstdc++-v3/testsuite/23_containers/queue/requirements/typedefs.cc
! d10f316ddcf527c13f2cb6699530b918  libstdc++-v3/testsuite/23_containers/queue/requirements/uses_allocator.cc
! 742347fda8cae66418548b53b227e08d  libstdc++-v3/testsuite/23_containers/set/14340.cc
! bed494fcc74bdf232016793d09a7ba6c  libstdc++-v3/testsuite/23_containers/set/18604.cc
! 95b876c94eac85a514a7ace771a50c21  libstdc++-v3/testsuite/23_containers/set/23781_neg.cc
! 37e15055bee995dbf4b73797253a7a98  libstdc++-v3/testsuite/23_containers/set/48101-2_neg.cc
! 5f33213ff007259b0d5bebe4098d7b82  libstdc++-v3/testsuite/23_containers/set/48101-3_neg.cc
! d1a7c21d603728038b823edb0fe82006  libstdc++-v3/testsuite/23_containers/set/48101_neg.cc
! 479b8499ba57e15518460fc39ac382b6  libstdc++-v3/testsuite/23_containers/set/58764.cc
! af5edd75237c3655bb91c8b595f9e117  libstdc++-v3/testsuite/23_containers/set/85965.cc
! cf835d32da3cb1277483866f22e10c59  libstdc++-v3/testsuite/23_containers/set/92124.cc
  4934612c2b7203e0e300739be2067260  libstdc++-v3/testsuite/23_containers/set/allocator/103501.cc
! 4acaddde3f80cfc48b4ff4ce8159af18  libstdc++-v3/testsuite/23_containers/set/allocator/71964.cc
! 723394b2ace41974c180a3c2cae4ad84  libstdc++-v3/testsuite/23_containers/set/allocator/copy.cc
! 9f16ae7fc75b73a6cdab3afac30684dd  libstdc++-v3/testsuite/23_containers/set/allocator/copy_assign.cc
! 903dc150222bcb1cba9f1d9c5d8ab180  libstdc++-v3/testsuite/23_containers/set/allocator/default_init.cc
! c830230ab5b74021a08d5e01808ef657  libstdc++-v3/testsuite/23_containers/set/allocator/init-list.cc
! 7ba48217db473a41a1e9a2b8fadac3c3  libstdc++-v3/testsuite/23_containers/set/allocator/minimal.cc
! 4bb610e60b70d7332d77b02525d9909f  libstdc++-v3/testsuite/23_containers/set/allocator/move.cc
! d2f7b0d6d5b1f486d7ce962e18b890e5  libstdc++-v3/testsuite/23_containers/set/allocator/move_assign.cc
! cb6c1f05271dab4847aac78dcd7be20b  libstdc++-v3/testsuite/23_containers/set/allocator/move_cons.cc
! 902ed3fb0c9597a1ec1ec54d956181aa  libstdc++-v3/testsuite/23_containers/set/allocator/noexcept.cc
! 50ec9d6c112c39127c47a8aec80598f9  libstdc++-v3/testsuite/23_containers/set/allocator/swap.cc
! a0cc6a2f3ee8853308ea0c501bb48ac5  libstdc++-v3/testsuite/23_containers/set/capacity/29134.cc
! 46ecd7ba7238cf2f614e13b0f775f4f3  libstdc++-v3/testsuite/23_containers/set/check_construct_destroy.cc
! ea88a29a7cda4eb36d76ac55340ea40b  libstdc++-v3/testsuite/23_containers/set/cons/61023.cc
  481e4d5cd05c18aecc038aaa29dea042  libstdc++-v3/testsuite/23_containers/set/cons/deduction.cc
! 4ac029440349cde148c40e4c4530ba25  libstdc++-v3/testsuite/23_containers/set/cons/moveable.cc
! b8cb47011456b68ca066c2986c0c3b06  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_default_construct.cc
! 89d1728b4889acfeecae0785b4c8a8c7  libstdc++-v3/testsuite/23_containers/set/cons/noexcept_move_construct.cc
! 83f470c08a9e704d3d17953e95fd37eb  libstdc++-v3/testsuite/23_containers/set/cons/self_move.cc
! ae08886e978c618ac60b6c3f253f0c0d  libstdc++-v3/testsuite/23_containers/set/debug/60499.cc
! 2484bc35fba82855e9a37cf1b21aaa80  libstdc++-v3/testsuite/23_containers/set/debug/90102.cc
! dab9b194b75d8b8d714f2745a05ad01f  libstdc++-v3/testsuite/23_containers/set/debug/construct1_neg.cc
! fff8a002f852ddeaac6b6b79d6ba55f6  libstdc++-v3/testsuite/23_containers/set/debug/construct2_neg.cc
! 97982d5cb9933d0243c9cad7de3f6100  libstdc++-v3/testsuite/23_containers/set/debug/construct3_neg.cc
! f4a39767ad2c148fa0a99c12f37fbfc4  libstdc++-v3/testsuite/23_containers/set/debug/construct4_neg.cc
! 2adf6e4d85826ca9a54dde9a75086716  libstdc++-v3/testsuite/23_containers/set/debug/construct5_neg.cc
! 6c64d02b9ac425ebeb7e774c5722519e  libstdc++-v3/testsuite/23_containers/set/debug/insert1_neg.cc
! 130813e487008a15fcec303c60f794a9  libstdc++-v3/testsuite/23_containers/set/debug/insert2_neg.cc
! 4ddef83a304705d368c1e13fe75eedd5  libstdc++-v3/testsuite/23_containers/set/debug/insert3_neg.cc
! 2173b0159b7e703dabd774d6f7554bd3  libstdc++-v3/testsuite/23_containers/set/debug/insert4_neg.cc
! 08a777c63134bb670f6e4f98838b65fb  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/1.cc
! 669cfe293501ea5bb83a5e3c11a445fe  libstdc++-v3/testsuite/23_containers/set/debug/invalidation/2.cc
! 1608dd2bf9d8e674ffad858ca3283409  libstdc++-v3/testsuite/23_containers/set/debug/move_assign_neg.cc
! 78fd1112cd7e7bfdae434c311f94a5ae  libstdc++-v3/testsuite/23_containers/set/debug/move_neg.cc
! e0a3b1912adb8176371ebe6fc1dbaa96  libstdc++-v3/testsuite/23_containers/set/erasure.cc
! c087d26b3de856b86b94ed002f09ec6b  libstdc++-v3/testsuite/23_containers/set/init-list.cc
! 12ff4dace24d58b5bea1adb68745ddfe  libstdc++-v3/testsuite/23_containers/set/modifiers/16728.cc
! ce17c384c58b5aa10549a90e45ed730e  libstdc++-v3/testsuite/23_containers/set/modifiers/17948.cc
! 6f506a8f8a45c4ba549fcff32eadcea0  libstdc++-v3/testsuite/23_containers/set/modifiers/dr130.cc
! 9a91f96b82cb913cd43b8264af6320d1  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/1.cc
! 6c441c97e3202d149c3e564958422c34  libstdc++-v3/testsuite/23_containers/set/modifiers/emplace/92878_92947.cc
! af3b85727a5fcd627137b112f6aa620c  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/51142.cc
! 80ae1e9895055cf0c80d7eedfb9de667  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/abi_tag.cc
! c5996ceed1ae0525ca3f9898f300079f  libstdc++-v3/testsuite/23_containers/set/modifiers/erase/dr130-linkage-check.cc
! f97a3c5bfff50b33d1786985c158bb3a  libstdc++-v3/testsuite/23_containers/set/modifiers/extract.cc
! 080d0c3347984f7a5a2f1f5216f3c3ba  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/1.cc
! 464e98c9f05eb39dc8989ecb66cedd1d  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/2.cc
! b990c4793d1ab8629627b2335754af1c  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/3.cc
! 222e2c2df362d7da8047cda47d06bfb1  libstdc++-v3/testsuite/23_containers/set/modifiers/insert/87194.cc
! cef33858ad90510d35b5cc27d20f3d1b  libstdc++-v3/testsuite/23_containers/set/modifiers/merge.cc
! 610d63dbb66cfc73cbad9a763be688c8  libstdc++-v3/testsuite/23_containers/set/modifiers/node_swap.cc
! 9bd78581ef084f12e1f944dc8e3edca5  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/1.cc
! 3fcac3eb63082cc3d53561a8c58477ae  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/2.cc
! 6d844386e7d9199758637f745c3975d0  libstdc++-v3/testsuite/23_containers/set/modifiers/swap/3.cc
! 70e78bbf5ab673ef05977e0958213af1  libstdc++-v3/testsuite/23_containers/set/move_comparison.cc
! 087d1b9cdef9e5c9658576ee0f028bd0  libstdc++-v3/testsuite/23_containers/set/operations/1.cc
! 619650eb42fcbbc9335c079223e66ed5  libstdc++-v3/testsuite/23_containers/set/operations/2.cc
! f602b2667da7e273166daf01a9f6b0d3  libstdc++-v3/testsuite/23_containers/set/operations/contains.cc
! 1523e8dfe55aeba69b715596a5a31836  libstdc++-v3/testsuite/23_containers/set/operations/count.cc
! a463383b5c0b9dcb5f10f0c82e0a6cb0  libstdc++-v3/testsuite/23_containers/set/operators/1_neg.cc
! f9cfa02b919d66e3efaf8c274cd71b12  libstdc++-v3/testsuite/23_containers/set/operators/cmp_c++20.cc
! 8cceaae6a751f2ed9a3163b87e46b673  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs.cc
! 122562da95dfa02e2c580a9163333441  libstdc++-v3/testsuite/23_containers/set/pmr_typedefs_debug.cc
! f2820bb14594c5c70522bed8bf9b4b9d  libstdc++-v3/testsuite/23_containers/set/range_access.cc
! f723a2637f73fbaa2c9965eae6df95b9  libstdc++-v3/testsuite/23_containers/set/requirements/citerators.cc
! becdcc625e607c383d91740cad8862af  libstdc++-v3/testsuite/23_containers/set/requirements/exception/basic.cc
! 846b9f8eac778190cc2de04b36f0f951  libstdc++-v3/testsuite/23_containers/set/requirements/exception/generation_prohibited.cc
! be5f14eb7d25478e1ad2b78bd100f17a  libstdc++-v3/testsuite/23_containers/set/requirements/exception/propagation_consistent.cc
! 771b7bda33ff89d3592cfbf7c3826bd2  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/1.cc
! f4cc805475fe4eb6e298f4a6f06fc466  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/2.cc
! 353ae825b0c1f976e3c82afdf44ff8b4  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/3.cc
! 6477fb92e1098b3352d24bb3b7bb9557  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/4.cc
! 96eb247b0015ebc25a4bf9c5a2429f79  libstdc++-v3/testsuite/23_containers/set/requirements/explicit_instantiation/5.cc
! 72706a47b6675d723d14db6db40466ce  libstdc++-v3/testsuite/23_containers/set/requirements/partial_specialization/1.cc
! 9eb510e023d1354dc13a7ca6b55e1b35  libstdc++-v3/testsuite/23_containers/set/requirements/typedefs.cc
! 24be6a251d10ec91a71a6cbf08e52ce6  libstdc++-v3/testsuite/23_containers/span/1.cc
  62d71e263b54ca463af9228fd31a5f0f  libstdc++-v3/testsuite/23_containers/span/101411.cc
! a41a95237005cc1253becbc65d0e579a  libstdc++-v3/testsuite/23_containers/span/2.cc
! fe455bdf536bf1645aa34f386beb6ffc  libstdc++-v3/testsuite/23_containers/span/back_assert_neg.cc
! 4646871fbc49a8667f0f4cc6f84648ce  libstdc++-v3/testsuite/23_containers/span/back_neg.cc
  06a45501dcaec8e13d6ae1e6ee40d1b7  libstdc++-v3/testsuite/23_containers/span/cons_1_assert_neg.cc
  b500468357c8536c575705ba4a6c389f  libstdc++-v3/testsuite/23_containers/span/cons_2_assert_neg.cc
! 4f2858e4b71aaba1da53b7dccdd70dcb  libstdc++-v3/testsuite/23_containers/span/contiguous_range_neg.cc
! 13de2b944b3e345b71c8a9607c7a3e70  libstdc++-v3/testsuite/23_containers/span/deduction.cc
! 5298b419f9c836495e1833514f5cb15f  libstdc++-v3/testsuite/23_containers/span/everything.cc
! 19441bc0f80dc57aa9d56b345b4683b0  libstdc++-v3/testsuite/23_containers/span/explicit.cc
! f2a645274bc71d00d9de0300de9193f8  libstdc++-v3/testsuite/23_containers/span/first_2_assert_neg.cc
! 1a9149c8244aed302ac2152e59a46577  libstdc++-v3/testsuite/23_containers/span/first_assert_neg.cc
! 63112880f3cd80c6a1c630b1a1afa9ac  libstdc++-v3/testsuite/23_containers/span/first_neg.cc
! e2ba48768a2eded317fd6809c2892927  libstdc++-v3/testsuite/23_containers/span/front_assert_neg.cc
! eaf0e2f767eab42b0f97c32436b14bed  libstdc++-v3/testsuite/23_containers/span/front_neg.cc
! 426abcd39eb1dd403af83050cf5f5e01  libstdc++-v3/testsuite/23_containers/span/index_op_assert_neg.cc
! 6949254731dd518e434be8867703c2e3  libstdc++-v3/testsuite/23_containers/span/index_op_neg.cc
! 4f598d73804805fba02357e5c79183b6  libstdc++-v3/testsuite/23_containers/span/last_2_assert_neg.cc
! 88f915cb502a4fcad916c1add1d912d0  libstdc++-v3/testsuite/23_containers/span/last_assert_neg.cc
! 4e7dd8cfebff783ac97ab4cc11389e6e  libstdc++-v3/testsuite/23_containers/span/last_neg.cc
! 64e1b8875fd0c928889c5831cd7e709c  libstdc++-v3/testsuite/23_containers/span/layout_compat.cc
! be1f50b1146968c150d08a2efb45f08a  libstdc++-v3/testsuite/23_containers/span/lwg3255.cc
! 253debc3012d6998190de8476a1af448  libstdc++-v3/testsuite/23_containers/span/nothrow_cons.cc
! 8863f6163a711d1cba1a2826fee3344b  libstdc++-v3/testsuite/23_containers/span/subspan_2_assert_neg.cc
! 3fb3315e3658a0b3a50ab031b8366b2e  libstdc++-v3/testsuite/23_containers/span/subspan_3_assert_neg.cc
! 5d4f9b1e1e5c435be42ae17386510345  libstdc++-v3/testsuite/23_containers/span/subspan_4_assert_neg.cc
! 5bb21b29c963eab6d9bd049818491a65  libstdc++-v3/testsuite/23_containers/span/subspan_5_assert_neg.cc
! 3140f0be92da0c061531b403f7ed991d  libstdc++-v3/testsuite/23_containers/span/subspan_6_assert_neg.cc
! cab2d87171c9910186845502319f9249  libstdc++-v3/testsuite/23_containers/span/subspan_assert_neg.cc
! bf3f3fc49ef7e8132533b07c3c53a5c3  libstdc++-v3/testsuite/23_containers/span/subspan_neg.cc
  d19a170b5f7ab02157733005cb76fef1  libstdc++-v3/testsuite/23_containers/span/trivially_copyable.cc
! 6667a26fb8e5052a0f736b8ae3605735  libstdc++-v3/testsuite/23_containers/stack/77528.cc
! f80392885ac3739ed820b9a4d9ecbb48  libstdc++-v3/testsuite/23_containers/stack/92878_92947.cc
! 47389a783b2d7f9a2f88fe765d107c5c  libstdc++-v3/testsuite/23_containers/stack/cmp_c++20.cc
! 33737da0cce1a723bf9379276aebf5fa  libstdc++-v3/testsuite/23_containers/stack/cons_from_iters.cc
! b6a33e0669dbceff20c3d1185f614505  libstdc++-v3/testsuite/23_containers/stack/deduction.cc
! 6d9d3d6027a7a3cc71e2b1fee4350aa2  libstdc++-v3/testsuite/23_containers/stack/members/7158.cc
! 15dddd96d29837ac6a9ad5c066ebab69  libstdc++-v3/testsuite/23_containers/stack/members/emplace_cxx17_return.cc
! 37dda611285812dd4abe6bdb36c2e1c5  libstdc++-v3/testsuite/23_containers/stack/requirements/constructible.cc
! e2d3682101d8dced1db52fa37cdd4e01  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1.cc
! be782028d8a622557bc9ecc58e824ba4  libstdc++-v3/testsuite/23_containers/stack/requirements/explicit_instantiation/1_c++98.cc
! 1874ac8a3941c0777554a8808bffc5cc  libstdc++-v3/testsuite/23_containers/stack/requirements/typedefs.cc
! 772c3b802f1b2f89d4116b4cada695b7  libstdc++-v3/testsuite/23_containers/stack/requirements/uses_allocator.cc
  8095490ebaf0100077d254e713821ec0  libstdc++-v3/testsuite/23_containers/unordered_map/104174.cc
! 9112700c9b754de72dba304feaf77ab2  libstdc++-v3/testsuite/23_containers/unordered_map/48101-2_neg.cc
! 931145fe5db75761370fbca00abbcff6  libstdc++-v3/testsuite/23_containers/unordered_map/48101-3_neg.cc
! 07877847818536a8c957300cd4944afe  libstdc++-v3/testsuite/23_containers/unordered_map/48101_neg.cc
! e5fc5aa1aedc264ad8f231169ecdd209  libstdc++-v3/testsuite/23_containers/unordered_map/55043.cc
! dbb458896016f0ee1b72428be16bdb28  libstdc++-v3/testsuite/23_containers/unordered_map/59548.cc
! a053a0021bce1a51156d4478dd485132  libstdc++-v3/testsuite/23_containers/unordered_map/96088.cc
! a2f2c9dcdf86247eb2d68b357fc32968  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy.cc
! 833d8c1a5871ba394f9875a719b18223  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/copy_assign.cc
! 1744aefadcddec724723648665f5ccad  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/default_init.cc
! 8aaffae4c2f612e83914c46cdaa87b61  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/minimal.cc
! 015a50b2c5a441749aa24b4f22738dbe  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move.cc
! e454a0ba63c2919a8734ba207b032746  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/move_assign.cc
! e9ceb369468169e75d2fc9e77425cfe2  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/noexcept.cc
! 90203c8e785758e2d972486a0779dee3  libstdc++-v3/testsuite/23_containers/unordered_map/allocator/swap.cc
! 1aa13dad6c0b026746b128ed80364494  libstdc++-v3/testsuite/23_containers/unordered_map/cons/56112.cc
! 2d90aace526c58ed28f11f5021461900  libstdc++-v3/testsuite/23_containers/unordered_map/cons/66055.cc
! 9ab14a76528721e2fd4dba84fbce3c04  libstdc++-v3/testsuite/23_containers/unordered_map/cons/81891.cc
  85260b346a96810f495c68331eefcc0e  libstdc++-v3/testsuite/23_containers/unordered_map/cons/deduction.cc
  85f9f0cfc8a07ac716292470ac0bda11  libstdc++-v3/testsuite/23_containers/unordered_map/cons/default.cc
! 38ca88deb52a7ba89f11a627971226ca  libstdc++-v3/testsuite/23_containers/unordered_map/cons/moveable.cc
! ff5fe601ad1bd5b14e27ce0cfef45ffb  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc
! a5b57a7d0f47057a8ba96575728b7b5e  libstdc++-v3/testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc
! 7998a15f5e0969b080d21de3e0482066  libstdc++-v3/testsuite/23_containers/unordered_map/debug/60499.cc
! ca9eb283823dabe5dd9cf6b60287baad  libstdc++-v3/testsuite/23_containers/unordered_map/debug/90102.cc
! ad6bdab6786c388d68bfe5aa479a4904  libstdc++-v3/testsuite/23_containers/unordered_map/debug/98466.cc
! def373aac05a4524ebf26ee5aa430a77  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin1_neg.cc
! 98b8109cb06c73e48e8818c7720b9882  libstdc++-v3/testsuite/23_containers/unordered_map/debug/begin2_neg.cc
! 8c783fcafb6929a3f415f6014cd40f98  libstdc++-v3/testsuite/23_containers/unordered_map/debug/bucket_size_neg.cc
! b7e6ea331f7e43c03c1d5d01af59dd1f  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cbegin_neg.cc
! a46514c8d6dd7325733680f8d5c8c707  libstdc++-v3/testsuite/23_containers/unordered_map/debug/cend_neg.cc
! 5cf09ba075327fd5738b5dcb1e54f288  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct1_neg.cc
! 2f6e191789c65cb596165b221e089f61  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct2_neg.cc
! 6432e8201f216a6940bfc12bd0e7cbfd  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct3_neg.cc
! 893cf0dff8cbc9788c8c63ab6c1aeea9  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct4_neg.cc
! d616404e1a531ad37b1250bf3d9570c5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/construct5_neg.cc
! 03d5728629d70933af9a3dead5ff2143  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end1_neg.cc
! 33bf4ab78a2c7324f82e8e10f6fc8dbb  libstdc++-v3/testsuite/23_containers/unordered_map/debug/end2_neg.cc
! d766208fd73ea06d891e5bc3df593b8b  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert1_neg.cc
! 0782fbd2fb74f7972faf7ed926bb11a5  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert2_neg.cc
! 5056629cbdb7adbe6b50719d5058a275  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert3_neg.cc
! 680cc281a01b8af1e02c444e7e7bf68a  libstdc++-v3/testsuite/23_containers/unordered_map/debug/insert4_neg.cc
! 749879970ff10dbaeb8cf983fbf121c3  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_compare_neg.cc
! 1edf6281b3ca9799ae88148d55d8050c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_post_increment_neg.cc
! 6a98e53837af8954af5380d0b48b0baf  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_pre_increment_neg.cc
! c78693d4f024cbe3b22f7af5813d39bf  libstdc++-v3/testsuite/23_containers/unordered_map/debug/invalid_local_iterator_range_neg.cc
! c480236fc6009f734b3539604988849c  libstdc++-v3/testsuite/23_containers/unordered_map/debug/max_load_factor_neg.cc
  ec5f25200eab229dcb114c539335f057  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge1_neg.cc
  1b50fcbac0e81550e3f02766b2163b1e  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge2_neg.cc
  d54806c3c63e301a8ace90147e276428  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge3_neg.cc
  a6d92cb4a8083799e28f1557ec3dc5ea  libstdc++-v3/testsuite/23_containers/unordered_map/debug/merge4_neg.cc
! fa6c5e5b761eb1234b02ef0f8620b4d2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_assign_neg.cc
! 9b67d9250a1f0397c36a2f30b48452f2  libstdc++-v3/testsuite/23_containers/unordered_map/debug/move_neg.cc
! 8973c3e6731eb54097f7a9032ce8af88  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_erased_local_iterator_neg.cc
! 43b6f15f96bee191be8534d6926bc466  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_iterator_neg.cc
! 93e043703a7fcc04dad11166e028f7e8  libstdc++-v3/testsuite/23_containers/unordered_map/debug/use_invalid_local_iterator_neg.cc
! a65526bdb5b2d3bc59b0ecf4ca95d542  libstdc++-v3/testsuite/23_containers/unordered_map/dr761.cc
! 9e94998be6cf7c0f9e80d35b19c24902  libstdc++-v3/testsuite/23_containers/unordered_map/dup_types.cc
! 03361585e0ac31a1db5e71683b496c5c  libstdc++-v3/testsuite/23_containers/unordered_map/erase/1.cc
! 29d005097c326a4f9b6861a15b53f0ad  libstdc++-v3/testsuite/23_containers/unordered_map/erase/24061-map.cc
! b5f16090bf73a50e3cfae6a6b65f0625  libstdc++-v3/testsuite/23_containers/unordered_map/erase/51142.cc
! 01d453a2b6ee3eb1048ea080b67d0063  libstdc++-v3/testsuite/23_containers/unordered_map/erase/54276.cc
! e15de1a6290be1af7884913771880cb8  libstdc++-v3/testsuite/23_containers/unordered_map/erasure.cc
! 6b76c63394b420bb30ee00910ded192d  libstdc++-v3/testsuite/23_containers/unordered_map/final_hash.cc
! 8d1378d93c9c17836ddd888aa84df894  libstdc++-v3/testsuite/23_containers/unordered_map/hash_policy/dr1189.cc
! 67172ef4f96dc9cc29dd30bcfecb8e3f  libstdc++-v3/testsuite/23_containers/unordered_map/init-list.cc
! 5ed00413d6dc58991765cd93cd3d88d1  libstdc++-v3/testsuite/23_containers/unordered_map/insert/105717.cc
! 74720f6fafe0bd23fa7b3534ace3d087  libstdc++-v3/testsuite/23_containers/unordered_map/insert/24061-map.cc
! f026143e0e4551dbfe0b47734716a1fc  libstdc++-v3/testsuite/23_containers/unordered_map/insert/57619.cc
! 8fa4ad432c0049d6c7e468b55308e4d8  libstdc++-v3/testsuite/23_containers/unordered_map/insert/83709.cc
! 1384201e8db0ca56f2a28cccafa8583e  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax.cc
! 1889053a8158d8a733220983406b393c  libstdc++-v3/testsuite/23_containers/unordered_map/insert/array_syntax_move.cc
! 1f0e9b6ca91fd68a5393cfbfd84060ea  libstdc++-v3/testsuite/23_containers/unordered_map/insert/dr2354.cc
! c2f540bba764c12bff807967c9280237  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_range.cc
! 56cdbcecd35a09125f9cffbe4e48fd67  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single.cc
! 83f5c9d9e15520ee8932a66b63c97eb1  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-1.cc
! 7ed1436aa8a00a2009137f5edebbeac9  libstdc++-v3/testsuite/23_containers/unordered_map/insert/map_single_move-2.cc
! 4aa38697ff76b9afcea7f1c3a43dad27  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/61667.cc
! 33a9042c4e98170a9d3d1fb88a14d432  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/78595.cc
! 7f8f2442901ea41d77e0ebc890107d74  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/92878_92947.cc
! 03fac90b219d18144af655af896d7954  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/emplace.cc
! a14df605fbb76ef3e178c19c31db79fd  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/extract.cc
! dc3059ffcfc5b5f617b283152ee2eac6  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/insert_or_assign.cc
! 0a2b0a1af64854d1bebc4232540cf6c1  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/merge.cc
! ec4950b74e8b9cd59ab4bfa8e94055ba  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/move_assign.cc
! 6e4b6b77735acab35c8d3c1aac451c66  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/reserve.cc
! c119f8968e7c2cd51b39f47edca3c2c7  libstdc++-v3/testsuite/23_containers/unordered_map/modifiers/try_emplace.cc
! 01f47a485e639e40d954a8c2b5835501  libstdc++-v3/testsuite/23_containers/unordered_map/observers.cc
! 25ffaa5db7ada99a686798c7cc1a3680  libstdc++-v3/testsuite/23_containers/unordered_map/operations/1.cc
! b7dc3ee566e9b5ef56cf1b6cec567c90  libstdc++-v3/testsuite/23_containers/unordered_map/operations/contains.cc
! fecc9906df269635aa2da8c1c1d94bb7  libstdc++-v3/testsuite/23_containers/unordered_map/operations/count.cc
! 206e5b31312cb3e00a049c4b502c0982  libstdc++-v3/testsuite/23_containers/unordered_map/operators/1.cc
! 8eb2d7f66d4bfe8553e355239c680fda  libstdc++-v3/testsuite/23_containers/unordered_map/operators/2.cc
! 6348b9dd4635c9b4f0606be650fa6b7a  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs.cc
! c5b9f6f7568efbf018cf623bfeb82e72  libstdc++-v3/testsuite/23_containers/unordered_map/pmr_typedefs_debug.cc
  45f46b4cea5268d1bf8f903d79e3c350  libstdc++-v3/testsuite/23_containers/unordered_map/profile/hash_map.cc
  6bcaac31a8700749f12b90fa8913629b  libstdc++-v3/testsuite/23_containers/unordered_map/profile/unordered.cc
! 21838acfee7779482e569c0640adc044  libstdc++-v3/testsuite/23_containers/unordered_map/range_access.cc
! 981c0846e92d9a173d6fc0b80620df8a  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/52942.cc
! 651f88d196f680df0996421a58702b7b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53067.cc
! 9dfd6279d0df27a78e522b996b5e4270  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/53339.cc
! 0e05ff637d50426f217af575c2b4d91d  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/citerators.cc
! 90e003c82ab520f686f1d3aff2bbd7b2  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/cliterators.cc
! 8e936727fe9d7b65ed23b0b28b408eca  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_container.cc
! dae109d897a780aa098366f4861fe772  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/debug_mode.cc
! 25440fc55b1bb0aac1ef8dbeadd89bdb  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/basic.cc
! 77263dce50c6165c2b620d657c22bcc8  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/generation_prohibited.cc
! 21d7dc7437ec25d8beae2b21f9f815fa  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/exception/propagation_consistent.cc
! be9ceac3b17c321b0fb1d11b7bbe2b15  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/1.cc
! 864dfbcbf59a573ebf444ab9f3e1140b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/2.cc
! d9d8d51b58ba65c3490df04fa1e9abe6  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/3.cc
! f66d52b5d9003c5ecf0d78c924683f2c  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/4.cc
! 0be7e39597e48985cb29e0391a99e76b  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/explicit_instantiation/5.cc
! 9f2bae17eb0936366915b85bf58b9d48  libstdc++-v3/testsuite/23_containers/unordered_map/requirements/typedefs.cc
! a45ec2d1e5dc69ebe5bc1759d3f6ba83  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-2_neg.cc
! 7c514818354b401cef20fd743e3c208d  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101-3_neg.cc
! acfb34d2c38569cf33c6e0faf95af115  libstdc++-v3/testsuite/23_containers/unordered_multimap/48101_neg.cc
! b3972c957450e2c58f651020e235eb64  libstdc++-v3/testsuite/23_containers/unordered_multimap/55043.cc
! 73d04fbb75d621e260af3055c4f1d298  libstdc++-v3/testsuite/23_containers/unordered_multimap/96088.cc
! 4fb29bcfef0b45a292c1f164c829207c  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy.cc
! bb55b2be3c1cc79f705414da59d27ea6  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/copy_assign.cc
! fc2f9809cc0e2e8f96dbf89efdad8b87  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/minimal.cc
! cb2e9f36f23f6d86f8a204d219c49eaf  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move.cc
! 2591d6f848944c0bd2265660697af578  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/move_assign.cc
! b2dc7c7d9bdbb22d17e488d97db681d4  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/noexcept.cc
! 1663547b95f815603c87035886ffe59c  libstdc++-v3/testsuite/23_containers/unordered_multimap/allocator/swap.cc
! b26f5d7f620cdeab49e75d8560906ce9  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/66055.cc
  1339c52ecafcfc46a0f64547b8873082  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/deduction.cc
! 3ee76e22edb00b194d6fc06b8a58e488  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/moveable.cc
! fbda85a4c66dc35b3184a467cf0fbfac  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc
! f95018931f3769fb019db24b8b8d2b20  libstdc++-v3/testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc
! 7b2222a5e79a7f5d7cec0a86fed2ebdd  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/60499.cc
! 082178907ee8c1559122a98631bc8617  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/90102.cc
! 89d646aea09716ec3067d2878049b04b  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin1_neg.cc
! 98b8109cb06c73e48e8818c7720b9882  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/begin2_neg.cc
! 8c783fcafb6929a3f415f6014cd40f98  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/bucket_size_neg.cc
! b7e6ea331f7e43c03c1d5d01af59dd1f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cbegin_neg.cc
! a46514c8d6dd7325733680f8d5c8c707  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/cend_neg.cc
! 8ba46352c51ec021ad080a60c86ee8f3  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct1_neg.cc
! f4c2ddd878923c76e8c9b458b50bac9e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct2_neg.cc
! be5fdeed0d742ab3bde28e60350b65a8  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct3_neg.cc
! d5ce5be448e6476b547a6e2806735719  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct4_neg.cc
! 17fcdef55bf36acdddd37968d8290a3f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/construct5_neg.cc
! 03d5728629d70933af9a3dead5ff2143  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end1_neg.cc
! 33bf4ab78a2c7324f82e8e10f6fc8dbb  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/end2_neg.cc
! c5d7a61a8aafc4d351e407414228b9b4  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert1_neg.cc
! c878ab0c178c08fc813f0175636cd665  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert2_neg.cc
! 9e0df4fc2b3b30ce1de9806ac192dc88  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert3_neg.cc
! 979469d27aa35c29ad18ed6569ec086d  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/insert4_neg.cc
! 6a4cf01bebf47520a9abb3f239da3c97  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_compare_neg.cc
! ce062b99d761dfe0084b64abf02f3eac  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/invalid_local_iterator_range_neg.cc
! 7d9f68e753933a5bd21229d0ec68f8ae  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/max_load_factor_neg.cc
  4590d5159c6810e053d83e37afdfdccc  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge1_neg.cc
  10748ae08ea59767c0dec11efeda3ecf  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge2_neg.cc
  5711a56e85b25164885d87e3528b0d4e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge3_neg.cc
  f30bce9979bec5403e8d4079e23bd752  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/merge4_neg.cc
! 54934c1dc259fa72ce386e5ed7346185  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_assign_neg.cc
! 66e1b09023a5d22e2ae92398a4ace44d  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/move_neg.cc
! ad7d1004474139625ab0ceea9baba7a1  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_erased_local_iterator_neg.cc
! 3b822ad4d35c18d263227c9f142d024e  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_iterator_neg.cc
! 4fe63b4593989e9805e1ed53eb83db6f  libstdc++-v3/testsuite/23_containers/unordered_multimap/debug/use_invalid_local_iterator_neg.cc
! 48977ad75067da60b8f0baaa8acd0ab9  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/1.cc
! 92e6d236522f93394266e6dfe59c9054  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/2.cc
! 249840ce7012a4890941c2921bdaff6d  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/24061-multimap.cc
! 0964f7cd821aeaea665c2be6014c9637  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51142.cc
! b7c63839c2b2fe1095a72c1078706546  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/51845-multimap.cc
! 12f488d23d441282be194910a45d80a8  libstdc++-v3/testsuite/23_containers/unordered_multimap/erase/54276.cc
! 3ec5114d9d41baca000f25d956bb12ba  libstdc++-v3/testsuite/23_containers/unordered_multimap/final_hash.cc
! d6b8e135532c50a5c1fb36e2dac8e1e6  libstdc++-v3/testsuite/23_containers/unordered_multimap/hash_policy/dr1189.cc
! 78e804ca0711e45fc9563078eac373d0  libstdc++-v3/testsuite/23_containers/unordered_multimap/init-list.cc
! c4a4f7cf9de84d2e2767ef85642c9cdf  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/24061-multimap.cc
! 231d2d1a1e5bfd23f89a243834ef0112  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/51866.cc
! 48f797f07d1deb1d9351084944ecff38  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/52476.cc
! bee0110573a8bdd328211344680e62a6  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/53115.cc
! 4447c0812f90706403729beba8471608  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/55028-debug.cc
! c32043d6833e09024e13a5395ff4a07a  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/57619.cc
! 0c0e78bd985ccd2992beb5d96a743501  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/dr2354.cc
! b705b535e80476f8dc5210feb46d5158  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/hint.cc
! cd0653909d856b7fb68f1b22a4115ce7  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_range.cc
! 8426ff7c8b976c96287a62067083868b  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single.cc
! 1cebc37fa1e9df5b9371eab8d7b56a38  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-1.cc
! e69e8c007d1ae59c6ae04784d631dbac  libstdc++-v3/testsuite/23_containers/unordered_multimap/insert/multimap_single_move-2.cc
! 90ae5cbb09395365c6a3aa6a8d3c7242  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/78595.cc
! 4b0deaf64ed73aa453cd228321e5c5a9  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/92878_92947.cc
! 9d1823faf5b592dd5330439137482aa3  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/emplace.cc
! ce423b7fe134947b12bb3bcadc06e8ef  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/extract.cc
! df0920fa518b2245aeff636e8e13c931  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/merge.cc
! 87351e56e94d8dfc647b1bc4490f02dc  libstdc++-v3/testsuite/23_containers/unordered_multimap/modifiers/reserve.cc
! 5bf8153b21982b0bb6b9a10f31b6f498  libstdc++-v3/testsuite/23_containers/unordered_multimap/observers.cc
! 96f0719f04a025939a9c26b2be86bd56  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/1.cc
! 647c755134d4c9566b6980673aeccd68  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/contains.cc
! bb32f1920bdb2be82d85310bb2ca2bff  libstdc++-v3/testsuite/23_containers/unordered_multimap/operations/count.cc
! 2e7014d6c4a0314d3fd102e4a202e6bb  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/1.cc
! 13249629b48edf98170953caf9744d99  libstdc++-v3/testsuite/23_containers/unordered_multimap/operators/2.cc
! 951e58aeb08e98d4cdfab7b4c1662261  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs.cc
! 971837bcc50be882f38045be8b97d7fd  libstdc++-v3/testsuite/23_containers/unordered_multimap/pmr_typedefs_debug.cc
! ffe6d2cc4a34bcb17f2d6d62d36608e9  libstdc++-v3/testsuite/23_containers/unordered_multimap/range_access.cc
! f8dcb4b2f1bac347ec0267ff6b66ba18  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/53339.cc
! 7cc33a13f2dade3a6bc6fcb3f465f5ad  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/citerators.cc
! 7215d47c0d79658f60bb1a9784cfb237  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/cliterators.cc
! 9bd3ea05571689710118e4a7d104fd62  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/debug.cc
! ab84d028aedc03ac3b07942160f97f71  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/basic.cc
! 080c548c6ed0b380f1d899646ccafa06  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/generation_prohibited.cc
! 96f8bee0cd88c32a93be96bc58a7ae45  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/exception/propagation_consistent.cc
! 484a78c5a4d984f01ae583076dcc982b  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/1.cc
! e5ff659dabf61b440aa44aa3d89dbab1  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/2.cc
! 824ebf70fd542ca29d8b697a11643482  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/3.cc
! 63db2cf3efa31b2bad03382af3b44510  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/4.cc
! abc62704bf87262a7655760f78293008  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/explicit_instantiation/5.cc
! bf3dc3d8461195de0223a72b88208108  libstdc++-v3/testsuite/23_containers/unordered_multimap/requirements/typedefs.cc
! e75a57c1f0a2be2700885a78823ceb2b  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-2_neg.cc
! f27f84d54d94b5d5400db5473c8bc3a4  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101-3_neg.cc
! b8e51f1337e35859e58bddd14619c57a  libstdc++-v3/testsuite/23_containers/unordered_multiset/48101_neg.cc
! 4787de13b61ca885ba539f74c20bf169  libstdc++-v3/testsuite/23_containers/unordered_multiset/55043.cc
! db863926557d2d5111e807d45faf9908  libstdc++-v3/testsuite/23_containers/unordered_multiset/96088.cc
! a00fb5834f80853919f570fe4d1252c8  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy.cc
! e0760f04c8556fffc8e723c260c08c1d  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/copy_assign.cc
! 13af51068ef9da51a5638058005b8f58  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/minimal.cc
! 78af6e50704e49638de09329cdd85e78  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move.cc
! 29f1c365f2c0df67c903055d8e27c5d7  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/move_assign.cc
! 820f45c11707990ca74c9e22573bc781  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/noexcept.cc
! ac81a2bf8725445753ea0f99c96afa03  libstdc++-v3/testsuite/23_containers/unordered_multiset/allocator/swap.cc
! 7eb01e6887ff7bb57f4f7a6912efa068  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/66055.cc
! 606b24d66bfb25792c71b785ca21c2db  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/copy.cc
  23f594bcb112a45f141a57ae69a39c30  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/deduction.cc
! 341d74db3823a61c213ff202846baed1  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/moveable.cc
! 787a67c64a9dbaec142ff659ecbcbb1a  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc
! 0f4fa15352c9a29c0dd1fd4d64af9d6d  libstdc++-v3/testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc
! 4d9d0a3228399c457776362abcf6b4a2  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/60499.cc
! 25a7e2115649a4e133666f324b139aea  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/90102.cc
! 15e82064877f5af0e99733a7dd39d674  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin1_neg.cc
! 8f714bd2ce386738974dda440c19459b  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/begin2_neg.cc
! 043a03d9307edc971ab9d0ca5ae69f22  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/bucket_size_neg.cc
! 0c660c4ed8cadc9940eec70137b73003  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cbegin_neg.cc
! 86f60c54b02626c943602f49980b7084  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/cend_neg.cc
! 3a59a2829f39e0bf540b373be93cb866  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct1_neg.cc
! 0c937ba7575bfda63c16ba1b0035d160  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct2_neg.cc
! 7390a63e2ee9777cf1833f1bafb7113d  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct3_neg.cc
! 7d342b39ded2b59047bc224892f59d59  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct4_neg.cc
! 7d780ad3f9019df85cd7db20ea83e554  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/construct5_neg.cc
! 211b56655815017863a322af6951a893  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end1_neg.cc
! 783756607da9d2fb18b5e346f2dbf4c7  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/end2_neg.cc
! 03dd241f63ed8acb34349cb7a8817c79  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert1_neg.cc
! 5fdf56821a90a949d62e4c6e1e5e3d63  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert2_neg.cc
! 574705b7399a91a4c955b3cfb1ad3338  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert3_neg.cc
! fb9c8375c855a189030192215db7d059  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/insert4_neg.cc
! 85cf3505a5d35811857642cf2ed54d28  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_compare_neg.cc
! 156210e52563af580b1e11c25a03ac89  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/invalid_local_iterator_range_neg.cc
! 488b3e67c05c5f7d44dc77013cd722f5  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/max_load_factor_neg.cc
  57b376626504f59753991e34bc78237c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge1_neg.cc
  4780603df65da907f59b5dc2271c7d4b  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge2_neg.cc
  d1a56802059f8869425e49137d01db11  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge3_neg.cc
  ced06789a8924ce0bc694421897b8fc2  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/merge4_neg.cc
! d00076b79489ea8e09f9adac0fbaeca0  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_assign_neg.cc
! 5104135670f313d46e697b806df3559f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/move_neg.cc
! 09992766e05700eeefdcdc85461c2f3f  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_erased_local_iterator_neg.cc
! f93d9755c0abc78c05e0baeeebe4046c  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_iterator_neg.cc
! 88efbbc6e9aa10840cfa0d01026159da  libstdc++-v3/testsuite/23_containers/unordered_multiset/debug/use_invalid_local_iterator_neg.cc
! 360185314dd818c535e98b1f7cae95a7  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/1.cc
! 6cf8f8910b603059c8921186c3e7c042  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/2.cc
! 7ee4d1c1785b6f429818ece0a2d1a53a  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/24061-multiset.cc
! d909d9ae2803c22c7bd063e9501684ed  libstdc++-v3/testsuite/23_containers/unordered_multiset/erase/51142.cc
! 9e1478751ec28cde69e8fab7c526988c  libstdc++-v3/testsuite/23_containers/unordered_multiset/final_hash.cc
! 81c83120f045467a81baeb285d8a5262  libstdc++-v3/testsuite/23_containers/unordered_multiset/hash_policy/dr1189.cc
! 35fb183b183b0eb0c4653fd6d362673d  libstdc++-v3/testsuite/23_containers/unordered_multiset/init-list.cc
! 547dcbbd79d992efe614e24bd360b51d  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/24061-multiset.cc
! e24d2a846868689f5f7d0fb6eb8b8e8c  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/51866.cc
! 48718bd999d7ad38826d862f993a75ce  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/52476.cc
! 68d19b74907e253c25f6e07379570493  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/53115.cc
! c3752a38e2c1d19f72b6d75bba98eda4  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/hash_policy.cc
! 33060ae3884aeb43105d9ef4b80cedaa  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_range.cc
! 979959d02f973dad1e744522fb447b09  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single.cc
! 973ca1df06a62a1dab30c8cbba6d8222  libstdc++-v3/testsuite/23_containers/unordered_multiset/insert/multiset_single_move.cc
! 934b535a4ded49b80dd2de6d3f07ca61  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/92878_92947.cc
! c8741641be72710956b2c2bade946f37  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/emplace.cc
! 1bae3c52c14e2257852a5564d63fe255  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/extract.cc
! 39801841ed2c7f34a0eb7458f14ed2d0  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/merge.cc
! b98b953e511d4ae9551d046145d4825e  libstdc++-v3/testsuite/23_containers/unordered_multiset/modifiers/reserve.cc
! 43fb59d331433c49bae72afd4d26a21f  libstdc++-v3/testsuite/23_containers/unordered_multiset/observers.cc
! e1239d6b7b7b78416495c0be144819a7  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/1.cc
! b666ad6aebe56ae26abd6ee3c0d85dc7  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/contains.cc
! cd7e053fc67c7a3aa92c2e520cbbcd31  libstdc++-v3/testsuite/23_containers/unordered_multiset/operations/count.cc
! accd24778cca6578ff49b5e21efc7041  libstdc++-v3/testsuite/23_containers/unordered_multiset/operators/1.cc
! 3c2479fa680ad82a25b7d25080e36205  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs.cc
! fc2672535648c1265048f13c41f880b5  libstdc++-v3/testsuite/23_containers/unordered_multiset/pmr_typedefs_debug.cc
! b118559bed92025073374fe261a69681  libstdc++-v3/testsuite/23_containers/unordered_multiset/range_access.cc
! e3543fa83b40cc6b2c9c95084b5e3251  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/citerators.cc
! c4b123ec1b853e57aee8473a46dee3bf  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/cliterators.cc
! 053fed3b4a22759cdcd6f492ef711968  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/debug.cc
! 4b04e76ef28d28410c2d1c22b0ecc294  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/basic.cc
! 63715c0a58b6c14b87fd694d677683f6  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/generation_prohibited.cc
! 06b612af25bf4a1dc76dbe803f5f5816  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/exception/propagation_consistent.cc
! e716ae07798070975613f64e8e368f9b  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/1.cc
! 00f352ecd4e7f21262ee2309099f88fa  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/2.cc
! fe3c1bae844aa980ff45f92de4ee98d3  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/3.cc
! d17605830706c27d1146da1a934c32e6  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/4.cc
! 260b82ac29348882d44fb97bd4545521  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/explicit_instantiation/5.cc
! aa7b66ff87865b3b8421d48f7f545d49  libstdc++-v3/testsuite/23_containers/unordered_multiset/requirements/typedefs.cc
! 71283986aa84cf78e58ffe546b330abd  libstdc++-v3/testsuite/23_containers/unordered_set/48101-2_neg.cc
! 38fef70587ec8784be988eeb762fa265  libstdc++-v3/testsuite/23_containers/unordered_set/48101-3_neg.cc
! 2f2864395e4bbb080d3816d9e66c5a30  libstdc++-v3/testsuite/23_containers/unordered_set/48101_neg.cc
! 5bb4f13ac1eb0781f4fb827abd192510  libstdc++-v3/testsuite/23_containers/unordered_set/55043.cc
! 826d40b065b77b2463b2a23c58ef1559  libstdc++-v3/testsuite/23_containers/unordered_set/56267-2.cc
! 7d4078cffad68c7e018398f013e710c1  libstdc++-v3/testsuite/23_containers/unordered_set/56267.cc
! bcdc2a5d164f9c531bf8ab930f9edbbc  libstdc++-v3/testsuite/23_containers/unordered_set/56278.cc
! 819278868402e60b804312e08167dc12  libstdc++-v3/testsuite/23_containers/unordered_set/61143.cc
! 481cfab68586036d13fe3dcf922f739b  libstdc++-v3/testsuite/23_containers/unordered_set/63456.cc
! 2b978f485848020c1774ccbaa43b631a  libstdc++-v3/testsuite/23_containers/unordered_set/85965.cc
! 69954da68812f12c548012f76de60691  libstdc++-v3/testsuite/23_containers/unordered_set/92124.cc
! ee6d30a81859e77336d98507ea961c71  libstdc++-v3/testsuite/23_containers/unordered_set/96088.cc
! 5f41b753c36c7b7bd8bb16ad20c3ed4c  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy.cc
! 702d1c86724eb8fca8923ec16968154e  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/copy_assign.cc
! 51faecfc2b7469f73aa3edcd03c21293  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/default_init.cc
! 9b68e42eed40632cd58c68bf6454c1c7  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/ext_ptr.cc
! 5da2fd9161a4b75ef12db101d6d13819  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/minimal.cc
! 7c9815b427816ac358ba7b12e18e3536  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move.cc
! c1479a3693bd9b3f31a02d5532a8cab1  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/move_assign.cc
! bf83eca103e748010b5e0b27d092b233  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/noexcept.cc
! 6b0ccd7c28b70b0d450b359affed9475  libstdc++-v3/testsuite/23_containers/unordered_set/allocator/swap.cc
! 37c0e62395be67da7a74a7de4af2df59  libstdc++-v3/testsuite/23_containers/unordered_set/buckets/swap.cc
! fc1585878230607f29cb3452abf0bb65  libstdc++-v3/testsuite/23_containers/unordered_set/cons/66055.cc
! 73270c53d0f1b7115671d9a3f38a3965  libstdc++-v3/testsuite/23_containers/unordered_set/cons/99985.cc
! 0747615d91c536c9817d63b95e793a25  libstdc++-v3/testsuite/23_containers/unordered_set/cons/bucket_hint.cc
  50d3a4852641ffb5d38114a701a2047e  libstdc++-v3/testsuite/23_containers/unordered_set/cons/deduction.cc
  247af40f0de6e07e87bdde64812f8659  libstdc++-v3/testsuite/23_containers/unordered_set/cons/default.cc
! 18385d579d2597f13bfafd90e5cd42f4  libstdc++-v3/testsuite/23_containers/unordered_set/cons/moveable.cc
! 6dfb5fcf619c7a3c70b97f0ad85b3783  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc
! ff678e2708f3fae6ea5d0a7f6e93d914  libstdc++-v3/testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc
! 8720b26f59788b0b50e380829bd3a510  libstdc++-v3/testsuite/23_containers/unordered_set/cons/self_move.cc
! d01f4ace87c8df84fd3dde34ba9cb8fe  libstdc++-v3/testsuite/23_containers/unordered_set/debug/60499.cc
! 7fe56c16a56eb09203f1e4d69cc82a30  libstdc++-v3/testsuite/23_containers/unordered_set/debug/89608_neg.cc
! 8b7f4f03f08aee624f4c9b6dc4457074  libstdc++-v3/testsuite/23_containers/unordered_set/debug/90102.cc
! 1a7161ab0c7abffedae879d019ce9efe  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin1_neg.cc
! 50d79fa8fe534ab9a00e0a7d177c95b6  libstdc++-v3/testsuite/23_containers/unordered_set/debug/begin2_neg.cc
! ca8b70a5f8e0699da789009e21c71f9d  libstdc++-v3/testsuite/23_containers/unordered_set/debug/bucket_size_neg.cc
! 87c0e59eebcdc125c1906e4e70a0f92a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cbegin_neg.cc
! c0c6f9eb42060b2ae9b02b912bc24aba  libstdc++-v3/testsuite/23_containers/unordered_set/debug/cend_neg.cc
! af53a7b52bbf326a7ed00248c354f3b7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct1_neg.cc
! 14e90373147557949d3346d859955556  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct2_neg.cc
! 8ce89b09bbe12e739f771a7c85871e48  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct3_neg.cc
! 134ceb019039df1c2ecf2d2de4f835a5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct4_neg.cc
! 59f9a80244e07d79110df35c0fc6b46a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/construct5_neg.cc
! d18d7efc6c7e076507153026e32d1085  libstdc++-v3/testsuite/23_containers/unordered_set/debug/debug_functions.cc
! 1fe38ae0666b6165be4835ba58466772  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end1_neg.cc
! 0403c3ba4831c740f4c174e8e9ea94c7  libstdc++-v3/testsuite/23_containers/unordered_set/debug/end2_neg.cc
! 8d3857763af8249a832781c7e4afd86b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert1_neg.cc
! aaabe5fa343df9a9764aeb9ee8274cf4  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert2_neg.cc
! 4d05cada2ae0e5a03cc4e833c3179d34  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert3_neg.cc
! 0197aaf64c95622e4c6979734d80d132  libstdc++-v3/testsuite/23_containers/unordered_set/debug/insert4_neg.cc
! ce9fccfa0dd338884e40956b3ae6e57b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_compare_neg.cc
! d0560b708a47105b9015f66081face11  libstdc++-v3/testsuite/23_containers/unordered_set/debug/invalid_local_iterator_range_neg.cc
! 9c6aa7d8c3f1b7a76aff50b12b89f3f2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/max_load_factor_neg.cc
  8121fd537a86b2d9c88f3a74d9dfd917  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge1_neg.cc
  8abc555d1b878f2729647a5a9b417280  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge2_neg.cc
  fb91af2ae75ed5745c8773ed8318a311  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge3_neg.cc
  00a3aa9959b3b6aa3847806d2fcccfb2  libstdc++-v3/testsuite/23_containers/unordered_set/debug/merge4_neg.cc
! 280a6dfae11346cc8e36c17ef1fd3a3c  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_assign_neg.cc
! b08cbc391d7ae07f9a5248f7ac36047b  libstdc++-v3/testsuite/23_containers/unordered_set/debug/move_neg.cc
! 4ff563684ca4f5d947dd2528399c506a  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_erased_local_iterator_neg.cc
! 4d2cf63c1dd54d9548c09e6647df71c5  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_iterator_neg.cc
! e440eb054c7ea1ff1017f07ee7cc702f  libstdc++-v3/testsuite/23_containers/unordered_set/debug/use_invalid_local_iterator_neg.cc
! 945f11b8070df2adf721d80f0099f5ce  libstdc++-v3/testsuite/23_containers/unordered_set/erase/1.cc
! cb1d2cc50e404929a274cb624148a567  libstdc++-v3/testsuite/23_containers/unordered_set/erase/24061-set.cc
! 20101e431f8e59726628f824ed47e03e  libstdc++-v3/testsuite/23_containers/unordered_set/erase/51142.cc
! 6326f729e3759e0ebb1ad0f2433c5b89  libstdc++-v3/testsuite/23_containers/unordered_set/erasure.cc
! 3c808b77f30d195ca721457ecd43f79a  libstdc++-v3/testsuite/23_containers/unordered_set/final_hash.cc
! eb6ea37767eecd9bccde7206892e5dca  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/26132.cc
! 3d371f38d1b5fd00aad6bf702e615baa  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/71181.cc
! 0cc6720280f484c4aab3b24552f50577  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/dr1189.cc
! f2d82905b1f370b27c43c553ca416809  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/load_factor.cc
! f1a7ba176e2e2f51faeff7d53e986508  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/power2_rehash.cc
! c6d712aba8852423fa780e63648e6033  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/prime_rehash.cc
! 9694b159452b26aba8bce6e6c9ff21b4  libstdc++-v3/testsuite/23_containers/unordered_set/hash_policy/rehash.cc
! f73fa58431e458ab472862b5de307c37  libstdc++-v3/testsuite/23_containers/unordered_set/init-list.cc
! 87778fbbb924c62e59591555153a9d4c  libstdc++-v3/testsuite/23_containers/unordered_set/insert/105717.cc
! 3ef448dfa3917017bdf1004a4540aa7b  libstdc++-v3/testsuite/23_containers/unordered_set/insert/24061-set.cc
! b32e78457f04c0fbfe87be7540bf2a9d  libstdc++-v3/testsuite/23_containers/unordered_set/insert/83709.cc
! 376252732812f7a58592af78de82eb5d  libstdc++-v3/testsuite/23_containers/unordered_set/insert/hash_policy.cc
! b85904ff658701b6edb35c0e6ea8a977  libstdc++-v3/testsuite/23_containers/unordered_set/insert/move_range.cc
! b7c5b2aff07878404b7416a880d002af  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_range.cc
! b3d6a1cf872a144cec41c7e757253322  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single.cc
! ea2d05769ddaef56e8e0cb21ee2aaceb  libstdc++-v3/testsuite/23_containers/unordered_set/insert/set_single_move.cc
! f896ce71a0459739b069787016227a8c  libstdc++-v3/testsuite/23_containers/unordered_set/instantiation_neg.cc
! 9f2b334599f77cdada6aeedbca98b184  libstdc++-v3/testsuite/23_containers/unordered_set/max_load_factor/robustness.cc
! 778ed19a9126db5e0894273c22dafb77  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/92878_92947.cc
! 304f35b8cbf7542b2d0f10b2c8b73484  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/emplace.cc
! b3d707d0ef8647e1593120aea2ce52d4  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/extract.cc
! 2808b3b2e379e7cbc4188d8e7316b856  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/insert.cc
! 411fa11f2956d229b10761e8fd6297aa  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/merge.cc
! 1e2f1a4a999acb88003f9efdd65bb74a  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/reserve.cc
! bf91c0c253d7803afc34c6f22f45fcdc  libstdc++-v3/testsuite/23_containers/unordered_set/modifiers/swap.cc
! e4c4250f9b8ecd5990778f4b52fbd379  libstdc++-v3/testsuite/23_containers/unordered_set/observers.cc
! c8f7c57b382cbc817f18c1f3683eb3dd  libstdc++-v3/testsuite/23_containers/unordered_set/operations/1.cc
! 612ae3ce559481a2014e8548effeebfb  libstdc++-v3/testsuite/23_containers/unordered_set/operations/contains.cc
! fe193b426a721b9cb01d176b5d9cec4d  libstdc++-v3/testsuite/23_containers/unordered_set/operations/count.cc
! fc1b10bed91a4cbe34ddb022dd8629b8  libstdc++-v3/testsuite/23_containers/unordered_set/operators/1.cc
! 8304e4d3cf140fa704198f7714fb3dbe  libstdc++-v3/testsuite/23_containers/unordered_set/operators/52309.cc
! 893c1db36a202385f3a2c9bb578cd3a5  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs.cc
! 64e4d3804523e1c998b549e40343b0e8  libstdc++-v3/testsuite/23_containers/unordered_set/pmr_typedefs_debug.cc
! ca13e13aca7c8d49c1b6f6c642cc72d1  libstdc++-v3/testsuite/23_containers/unordered_set/range_access.cc
! 9401a9b3f96e33ffb0d4e36fe8aa5ecf  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/52942.cc
! 018532cae4e45b7995a4c6a1ae6fecba  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/53067.cc
! 377fe85190b79a7db291f71b34a7e068  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/citerators.cc
! 2d0f0f549ca4c949682c94d04fc11827  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/cliterators.cc
! 598f0eb01eecdd71464964ad9d9147f5  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_container.cc
! 46c65c762d8e02ba2b0003feb7680f74  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/debug_mode.cc
! b39d0dbabe51ca45dc64a8fe6d1639a9  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/basic.cc
! 908359bc0860871de012187649b42930  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/generation_prohibited.cc
! f2bac9f883372b1203072424de62f6c3  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/exception/propagation_consistent.cc
! 899ac9c99ab8c936432f2cb04ba83443  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/1.cc
! 309401cdff58483d86fdbfa04da866be  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/2.cc
! 3e2ff7e594518ec67ee89c2757c1ee05  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/3.cc
! 65298056d874b406b135999415cbce1e  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/4.cc
! cfaedc9d91f3d9dbdfb5fb2fc39cbcac  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/explicit_instantiation/5.cc
! d8a39d0e94c7eac91b042414d2f05334  libstdc++-v3/testsuite/23_containers/unordered_set/requirements/typedefs.cc
! 9d3cbdf133dcf8143b2c380ca2ed1990  libstdc++-v3/testsuite/23_containers/vector/14340.cc
! 2f0fba96f975830a808db93e70e8113e  libstdc++-v3/testsuite/23_containers/vector/15523.cc
! c24fac0765c03b256a5d0aeed72523ab  libstdc++-v3/testsuite/23_containers/vector/18604.cc
! baa787f682d1145e4869f762afe7c17d  libstdc++-v3/testsuite/23_containers/vector/26412-1.cc
! ba8c57942b45e6962bd513ec0332defb  libstdc++-v3/testsuite/23_containers/vector/26412-2.cc
! a07a06abbeffefd20cbf78bceb23ab31  libstdc++-v3/testsuite/23_containers/vector/40192.cc
! 79e6ac02de978088cfafe31aea84940b  libstdc++-v3/testsuite/23_containers/vector/48101-2_neg.cc
! 32f3ca38bb65f0291a2ac0e1bd61e5de  libstdc++-v3/testsuite/23_containers/vector/48101-3_neg.cc
! 3f8768b110eb6dcb4f6e6db3e265a35c  libstdc++-v3/testsuite/23_containers/vector/48101_neg.cc
! a5e6700a2a84fc0b1f002e05017a83c0  libstdc++-v3/testsuite/23_containers/vector/52591.cc
! 98b078c16067b302488ad9af9959443e  libstdc++-v3/testsuite/23_containers/vector/58764.cc
! 6fe02ff854f16c5fd56f6be6cd5ede08  libstdc++-v3/testsuite/23_containers/vector/59829.cc
! 5621b32ddf6633edc0ebd4980dafce1c  libstdc++-v3/testsuite/23_containers/vector/63500.cc
! 8136b652fd3b368de1b902d69ceead52  libstdc++-v3/testsuite/23_containers/vector/70303.cc
! 66d0f776d2c31e8e454e78933220d9b2  libstdc++-v3/testsuite/23_containers/vector/92124.cc
! 147baba18244a4f051ef7d0475b48a96  libstdc++-v3/testsuite/23_containers/vector/allocator/construction.cc
! 7e47a884971671bfda28ba6023d8689c  libstdc++-v3/testsuite/23_containers/vector/allocator/copy.cc
! b42f676183465738e18df1b4bfcb64da  libstdc++-v3/testsuite/23_containers/vector/allocator/copy_assign.cc
! 0785cb53d907337c0408f661f850b257  libstdc++-v3/testsuite/23_containers/vector/allocator/default_init.cc
! 27539917e90bad3081ef5f334b0a1444  libstdc++-v3/testsuite/23_containers/vector/allocator/ext_ptr.cc
! b41648d8d4cd01cfe5624af037fb2423  libstdc++-v3/testsuite/23_containers/vector/allocator/minimal.cc
! 000d50bae1d8e8ca3ab804efab094897  libstdc++-v3/testsuite/23_containers/vector/allocator/move.cc
! f773c108033cd139b93bc33d562df472  libstdc++-v3/testsuite/23_containers/vector/allocator/move_assign.cc
! b18f4fd4e99fb5afb4a07e80e90c7fd3  libstdc++-v3/testsuite/23_containers/vector/allocator/noexcept.cc
! d180494eb6e097c78578d1b9a3e910f0  libstdc++-v3/testsuite/23_containers/vector/allocator/swap.cc
! 6548323a73fee97190ce031a908c7fcd  libstdc++-v3/testsuite/23_containers/vector/bool/1.cc
! 00547507c5a45b6f85c00e5fdbccff4c  libstdc++-v3/testsuite/23_containers/vector/bool/21244.cc
! a830cc0e83dd9df546274fdba18aa9fc  libstdc++-v3/testsuite/23_containers/vector/bool/23632.cc
! 600c54836a5dbe96bb9a78a26fcb77ba  libstdc++-v3/testsuite/23_containers/vector/bool/6886.cc
! db3000bea2e5400e6fa098f5f2045e51  libstdc++-v3/testsuite/23_containers/vector/bool/72847.cc
! b5c49d8dad38eff83740e30632ee2b28  libstdc++-v3/testsuite/23_containers/vector/bool/80893.cc
! f4230443a3feda858c8939974edb01bb  libstdc++-v3/testsuite/23_containers/vector/bool/82558.cc
! a5e9cc044dca5419b0dd551dd690acaa  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy.cc
! 48be012d82a222e324550392414e1efe  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/copy_assign.cc
! 2638890341a017542203b1fb4987a7fe  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/default_init.cc
! 55bd15fec70a94668487cb5c8ded0df2  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/ext_ptr.cc
! ddce1d839be1ae13b82e9a0c421350fc  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/minimal.cc
! 2fb24058575c263d6f17fbd21eac34ab  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move.cc
! 2ffe3066c5d0f89f917dccad02fdee90  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/move_assign.cc
! 21241dc725e9f60afec074ded60948d7  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/noexcept.cc
! 367f27adc1f8771787d15e7888fad23b  libstdc++-v3/testsuite/23_containers/vector/bool/allocator/swap.cc
! 207ff9cc2bd7e9f620e7ce0d5283a76b  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/1.cc
! e769cfd5846d2ec62fa83df607879554  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/29134.cc
  f3a53ae538351a02f5ec621190a341fc  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/constexpr.cc
! f672646095d11205cf50faf1509941ce  libstdc++-v3/testsuite/23_containers/vector/bool/capacity/shrink_to_fit.cc
! b219fb31276e2ec1288a331f246da73e  libstdc++-v3/testsuite/23_containers/vector/bool/clear_allocator.cc
! b614452daa5ff7698d76d86640c06504  libstdc++-v3/testsuite/23_containers/vector/bool/cmp_c++20.cc
! b884f61a65f4e8ddad1bc99f8bba4a4c  libstdc++-v3/testsuite/23_containers/vector/bool/cons/1.cc
! fb0c2958e4a376caf92e000fc21e6496  libstdc++-v3/testsuite/23_containers/vector/bool/cons/2.cc
! ef689945361dfbb1517a278a13f3b17c  libstdc++-v3/testsuite/23_containers/vector/bool/cons/87809.cc
  abb8e684b5198d2f43e773d47fbc26e7  libstdc++-v3/testsuite/23_containers/vector/bool/cons/constexpr.cc
! 1a1855c5f482910b48be9328ed9e0271  libstdc++-v3/testsuite/23_containers/vector/bool/cons/noexcept_move_construct.cc
! bd1112e48ed191a945eed483d8fcb137  libstdc++-v3/testsuite/23_containers/vector/bool/element_access/1.cc
  35e0cd4f42eda824bbba54df3a2bb017  libstdc++-v3/testsuite/23_containers/vector/bool/element_access/constexpr.cc
! d1114cc2d510dae7a9bf1b8326a487d5  libstdc++-v3/testsuite/23_containers/vector/bool/emplace.cc
! 708465ee83ee8d2cedd6178588b80861  libstdc++-v3/testsuite/23_containers/vector/bool/emplace_cxx17_return.cc
! cd96e65058ebe814656e826478326fee  libstdc++-v3/testsuite/23_containers/vector/bool/hash/1.cc
! bb235d56a0913b726dcbcf78e6e2d6ff  libstdc++-v3/testsuite/23_containers/vector/bool/iterator_c++20.cc
! 527c1ee736303057226c1aff439f6619  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/1.cc
  198e24e4b0447ebd1f59ee566c4f9ad6  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/assign/constexpr.cc
  da7f433cb57b9828232873e5f792cde2  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/constexpr.cc
! 37dcb4779fd0a3c45aed7b30badd1644  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/1.cc
! 84283a00aec2f1a36dbd34b44f3c3459  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/erase/54577.cc
! f64d6afad224bdf7a9d243eb4368df65  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/1.cc
  8411c535ec979be02e85103a2ce6a933  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/104559.cc
! 4ff0ed1496b819e4e66002ad9a157bbe  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/31370.cc
! 1b131fd70a2f159ac1c301ca84c0655c  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/insert/const_iterator.cc
! fe4e48c7cd28dbb61b3c6bfb2d49b000  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/1.cc
! 32a18dddf07352216e744c9b7c9e5623  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/2.cc
  1611763e1d27a3886a180174309278ae  libstdc++-v3/testsuite/23_containers/vector/bool/modifiers/swap/constexpr.cc
! b8fd09a7b5c03343acbe3b681adc8644  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/citerators.cc
! 65bfa8ec5c6325be689882039c4734c0  libstdc++-v3/testsuite/23_containers/vector/bool/requirements/dr438/constructor.cc
! cbdab8cfa0c2b9e6149b5ec7ea74a87d  libstdc++-v3/testsuite/23_containers/vector/bool/swap.cc
! af4d87023873dcb428ec56a1333b29b8  libstdc++-v3/testsuite/23_containers/vector/capacity/1.cc
! 9aac56e2173edb2f2546657fffd78ca0  libstdc++-v3/testsuite/23_containers/vector/capacity/2.cc
! aa1fa46c968458b311c83677aedff5eb  libstdc++-v3/testsuite/23_containers/vector/capacity/29134-2.cc
! 1880ccda490e8991825473c1793e4ede  libstdc++-v3/testsuite/23_containers/vector/capacity/29134.cc
! 66498e449203b25e221d9b3dc4b611bb  libstdc++-v3/testsuite/23_containers/vector/capacity/44190.cc
! e8762042ca184671dfc7db1c7f5e4793  libstdc++-v3/testsuite/23_containers/vector/capacity/8230.cc
! 15ba7dcbb029eeb5f5c19f196bf072bc  libstdc++-v3/testsuite/23_containers/vector/capacity/87544.cc
  402ee0d2c16c5d03df6155b7cc99187d  libstdc++-v3/testsuite/23_containers/vector/capacity/constexpr.cc
! 4af09c1e453c4cb58db7ab34c1570b88  libstdc++-v3/testsuite/23_containers/vector/capacity/max_size.cc
! 47d6441f2f7cea7914c2efbdb9dcc289  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable.cc
! 0611c9a533ccb44a44a08d1493ee9afa  libstdc++-v3/testsuite/23_containers/vector/capacity/reserve/moveable2.cc
! 4714a7466646152aa844669c5f0d0542  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/1.cc
! 6a5dc049003d24a1f8c3d58ffb7a180d  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable.cc
! 7669e0de58e824e1b4f7d68a64adcb41  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/moveable2.cc
! 4851d5a509d22261fbe19c0f44ce6eb5  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/resize_size.cc
! 47b2c95f0fe2b9757fa5ef7226866118  libstdc++-v3/testsuite/23_containers/vector/capacity/resize/strong_guarantee.cc
! 0f2bf884b434734c3fbabc0f1190512a  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit.cc
! e5ce6172cf6fcdb926ab9b03f3e76ade  libstdc++-v3/testsuite/23_containers/vector/capacity/shrink_to_fit2.cc
! 031e5adf8a70e8ab5f1a41371962e7ac  libstdc++-v3/testsuite/23_containers/vector/check_construct_destroy.cc
! 9320329243f60de2ac1ddcfb8440d0e2  libstdc++-v3/testsuite/23_containers/vector/cmp_c++20.cc
! fa4a6541280ab8fbe2cc5ac8b589b4be  libstdc++-v3/testsuite/23_containers/vector/cons/1.cc
! c7f03648598ef0cab3092f51b3f00744  libstdc++-v3/testsuite/23_containers/vector/cons/2.cc
! c664a685c6f3a9f8c19d7c9e275a8a93  libstdc++-v3/testsuite/23_containers/vector/cons/3.cc
! 6c1d7fcf8dd6d3449ee74f6719a389a8  libstdc++-v3/testsuite/23_containers/vector/cons/4.cc
! 42a7a5d7188d303db0a05da1913ba7b8  libstdc++-v3/testsuite/23_containers/vector/cons/55977.cc
! e4478edb9ea0ec01c635d2e8d0567559  libstdc++-v3/testsuite/23_containers/vector/cons/6513.cc
! c3326bb59158b0a0e517056de4144bd0  libstdc++-v3/testsuite/23_containers/vector/cons/86292.cc
! fe9448e3fdc4f2957dd16c460afb8f8c  libstdc++-v3/testsuite/23_containers/vector/cons/87809.cc
! 535e10423c3d7112f1d14a7807def0b0  libstdc++-v3/testsuite/23_containers/vector/cons/89164.cc
! d8bfee2d42c04b3232610c2675915b92  libstdc++-v3/testsuite/23_containers/vector/cons/89164_c++17.cc
! d384328eb6ac82a009863ab30d2b995b  libstdc++-v3/testsuite/23_containers/vector/cons/94540.cc
! a6306b96109e4ac88fec3e48390ea520  libstdc++-v3/testsuite/23_containers/vector/cons/94831.cc
! 4b4cfc5dac0acd4c5d6e169b9a991815  libstdc++-v3/testsuite/23_containers/vector/cons/clear_allocator.cc
! 19919a2a45d9a0cbe1362ca9c181aa9f  libstdc++-v3/testsuite/23_containers/vector/cons/cons_size.cc
  1ce2272844a9da337ee743c345bec85b  libstdc++-v3/testsuite/23_containers/vector/cons/constexpr.cc
! 46f0c2a0b0960e4576e3270d26769808  libstdc++-v3/testsuite/23_containers/vector/cons/deduction.cc
! dac5f3f9aadcf745fb603c739588aaa2  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_debug_neg.cc
! f7bab4eab1d2bc6e522c4cb05878163e  libstdc++-v3/testsuite/23_containers/vector/cons/destructible_neg.cc
! 5893577535f0a3d5bb18f37b6f785f5f  libstdc++-v3/testsuite/23_containers/vector/cons/moveable.cc
! b59054fb1d00091880d5605b974fa84c  libstdc++-v3/testsuite/23_containers/vector/cons/moveable2.cc
! 43e21483e0953a254bd6139216fbe169  libstdc++-v3/testsuite/23_containers/vector/cons/noexcept_move_construct.cc
! d606b36336a2dadf791e67b979e4339f  libstdc++-v3/testsuite/23_containers/vector/cons/self_move.cc
! 24f492a04ed1cc923756df1bae071b06  libstdc++-v3/testsuite/23_containers/vector/data_access/1.cc
  2da738c5f0181f4d71a28da3da5b55cf  libstdc++-v3/testsuite/23_containers/vector/data_access/constexpr.cc
! 74e559d168191ac8aab8ee18bb874277  libstdc++-v3/testsuite/23_containers/vector/debug/52433.cc
! 785b48251b32d9a10715191b6b3f232b  libstdc++-v3/testsuite/23_containers/vector/debug/57779_neg.cc
! bb0d9a5fe268b68027c7489b19b3402b  libstdc++-v3/testsuite/23_containers/vector/debug/60499.cc
! e8125ed070e0cf2264709645a20b9832  libstdc++-v3/testsuite/23_containers/vector/debug/60587.cc
! 7248a9d540a766baafdcb036fad35a38  libstdc++-v3/testsuite/23_containers/vector/debug/60587_neg.cc
! 47b5cee992e61344c11e078a6652bab2  libstdc++-v3/testsuite/23_containers/vector/debug/90102.cc
! f64533f104fcd7b3c712a603fae7f687  libstdc++-v3/testsuite/23_containers/vector/debug/alloc_prop.cc
! 593e09eaadee5f8080c425ea40c03816  libstdc++-v3/testsuite/23_containers/vector/debug/assign1_neg.cc
! a26e9bf54d2b71f27e159577a2afadce  libstdc++-v3/testsuite/23_containers/vector/debug/assign2_neg.cc
! bdf27fc4d63fa2169f932a13bdf4bc6f  libstdc++-v3/testsuite/23_containers/vector/debug/assign3_neg.cc
! 64aa1b917c51466698efc561f039f2a6  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_backtrace_neg.cc
! f6db38c243ffc226aad9a0f7df262d93  libstdc++-v3/testsuite/23_containers/vector/debug/assign4_neg.cc
! 1338a1cd93c971ec517e023b6d60c936  libstdc++-v3/testsuite/23_containers/vector/debug/bool/shrink_to_fit.cc
! 70e68d1757c17b1591477a13b2a96070  libstdc++-v3/testsuite/23_containers/vector/debug/construct1_neg.cc
! ca46bfd29389f22b89a10f6c3ac31f6f  libstdc++-v3/testsuite/23_containers/vector/debug/construct2_neg.cc
! 13c64d92c3418fde603c50b560510676  libstdc++-v3/testsuite/23_containers/vector/debug/construct3_neg.cc
! 564c77a5158d94bec0846e4bae593c42  libstdc++-v3/testsuite/23_containers/vector/debug/construct4_neg.cc
! b902a34628892e385d916335c357f558  libstdc++-v3/testsuite/23_containers/vector/debug/debug_functions.cc
! 074d3c5e89586d0eeb00dc22a70f73b0  libstdc++-v3/testsuite/23_containers/vector/debug/insert1_neg.cc
! 7d732e06c7fa22be9023047ce5888e93  libstdc++-v3/testsuite/23_containers/vector/debug/insert2_neg.cc
! 61066fbf7f85da4346ee6117852fdfcf  libstdc++-v3/testsuite/23_containers/vector/debug/insert3_neg.cc
! d5621b02b7bab64b58ea5a3606adbc11  libstdc++-v3/testsuite/23_containers/vector/debug/insert4_neg.cc
! 495f57b6edd7e945224617032bf677c1  libstdc++-v3/testsuite/23_containers/vector/debug/insert5_neg.cc
! c6f3aad96fdd59088472fef9f82e0f5f  libstdc++-v3/testsuite/23_containers/vector/debug/insert6_neg.cc
! a5826736d68383ea77d4fc8ee1ea8a38  libstdc++-v3/testsuite/23_containers/vector/debug/insert7_neg.cc
! e284f8819d696ca78f7f913a1d511f94  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/1.cc
! 10ad7ce9bba57deed580c7a037720997  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/2.cc
! a3fa6ac892c03af3e9ac5480223c052b  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/3.cc
! 130f93fb2f94bee544657cdad0aa87b1  libstdc++-v3/testsuite/23_containers/vector/debug/invalidation/4.cc
! 964343d488920297210d56ae15eeefa0  libstdc++-v3/testsuite/23_containers/vector/debug/move_assign_neg.cc
! 4a87196e9403a624790ca9432dd45cca  libstdc++-v3/testsuite/23_containers/vector/debug/move_neg.cc
! c5e5cee7fe624866df9bbe1b9e4f8469  libstdc++-v3/testsuite/23_containers/vector/debug/multithreaded_swap.cc
! 0c398477953df3fbea54c9ecf0e01053  libstdc++-v3/testsuite/23_containers/vector/debug/mutex_association.cc
! db632134bef944d86d86bae8a2aec09c  libstdc++-v3/testsuite/23_containers/vector/debug/shrink_to_fit.cc
! 96f74905ea39392fcf31c306d93cab39  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-1.cc
! ba528ca2ec0e773184bd12bfcd212821  libstdc++-v3/testsuite/23_containers/vector/debug_mode_requires_reallocation-2.cc
! 376ccfdceb584610d894c16e25d05b4b  libstdc++-v3/testsuite/23_containers/vector/element_access/1.cc
  16aff27648691adf15bfc9b67a08656c  libstdc++-v3/testsuite/23_containers/vector/element_access/constexpr.cc
! df1c7c232f21b147a67e7e7f9e0ccb8e  libstdc++-v3/testsuite/23_containers/vector/erasure.cc
! 5823165ec3749736e00bc471ea039fd5  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/citerators.cc
! 41041111a99d4ddb09acf87da4ba6b5f  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/data_access.cc
! feaf22a04bd82ad0f624ca18cc762133  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/1.cc
! 67cddfe7f8693436b99e179a5d3f6928  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/explicit_instantiation/3.cc
! 1f568cba50fcc6924c874a88479051c0  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/element.cc
! 5e87fe07de7222b3e116a94fad1f7759  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/erase.cc
! 5c7fdf339c962a4af125aaff85ee3c36  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/modifiers/insert.cc
! f15ae949759d6c219516785e5d2553a6  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/resize.cc
! 3bd6d5ac9ffae953cd37f558ca334f93  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/1.cc
! 01f352c1cd607ea4db11d71b20246f5a  libstdc++-v3/testsuite/23_containers/vector/ext_pointer/types/2.cc
! 687080e9736d13038efd6e392e23b0a4  libstdc++-v3/testsuite/23_containers/vector/init-list.cc
! aac0edb6e9fbe80b1a089339f5f6eb55  libstdc++-v3/testsuite/23_containers/vector/modifiers/1.cc
! e2aa94381f27ef33dd75870cb737488f  libstdc++-v3/testsuite/23_containers/vector/modifiers/2.cc
! 039811c696bfdd7db2a5ee01ec510320  libstdc++-v3/testsuite/23_containers/vector/modifiers/assign/1.cc
  3922aaba2a433c66301ae0e55030a827  libstdc++-v3/testsuite/23_containers/vector/modifiers/assign/constexpr.cc
  79f9958e484b07409ba222ba2faa32b4  libstdc++-v3/testsuite/23_containers/vector/modifiers/constexpr.cc
! d015e4c6df17c1854ede2ab369aa2b28  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/52799.cc
! ddfeaf19254437c28ec94e8dfe8fabb3  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/92878_92947.cc
! 2a2b34915b71b5cf6d1e5962e157582b  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/const_iterator.cc
! 7475bbb09e06fd58e75ad4a22dea481a  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/cxx17_return.cc
! aa8694e9581cca7d2c7cde97479399d9  libstdc++-v3/testsuite/23_containers/vector/modifiers/emplace/self_emplace.cc
! 5cff574f0670245a51f2d1e6004c249e  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/1.cc
! fd16d373b8a28303b6943e6339972258  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/50529.cc
! b4ff6f2b7d6d5964dcf90b3d262e02d6  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/54577.cc
! 6342fad60af43c688fae7b5d17f2d0d7  libstdc++-v3/testsuite/23_containers/vector/modifiers/erase/moveable.cc
! bd380b2e874bfa2f8d63461b8f4a8add  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/1.cc
! 0a5fb821e9a92434f958f65b5fc083c7  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/58148.cc
! 6ab51574ca3c277f756fe3df91890541  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/aliasing.cc
! e237c5e34318ddc293afe0b0a6b36839  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/const_iterator.cc
! 6e313c2420fa6f17886b2f672615f35f  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert/self_insert.cc
  8fb5c601f412e71f5977219b7d89f18d  libstdc++-v3/testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc
! fb16ee13d327a03c0452886cb723080d  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable.cc
! 2f94f2f6c98e2efb2516ee180e3c55cb  libstdc++-v3/testsuite/23_containers/vector/modifiers/moveable2.cc
! f2b0284e80897ac080e298ee2edcc668  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/49836.cc
! f13928764ad3413456ecdcac841cb955  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89130.cc
! 5eb0636a0c51ba2e30c2f690ac8a27a4  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/89416.cc
! 22c8466b6a562e32f263f77f51560a72  libstdc++-v3/testsuite/23_containers/vector/modifiers/push_back/strong_guarantee.cc
! ceb73179b5ae4a668be768d817a05306  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/1.cc
! 99b732b3220a41435951237657f89f63  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/2.cc
! 8c650c34bec586db18c252282a5b2f72  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/3.cc
  60880bfb14632a4fa03a825957bdfead  libstdc++-v3/testsuite/23_containers/vector/modifiers/swap/constexpr.cc
! 1d09568cd24b6e2ecd1cd425644cacca  libstdc++-v3/testsuite/23_containers/vector/pmr_typedefs.cc
  33db2bb591e55ad911ea124e372841ca  libstdc++-v3/testsuite/23_containers/vector/profile/vector.cc
! 9f178f5622577bb6628406d075d64bb5  libstdc++-v3/testsuite/23_containers/vector/range_access.cc
! d6b18fe4e87e4171860b2b7ba32cc33d  libstdc++-v3/testsuite/23_containers/vector/requirements/citerators.cc
! d30fdb96e9b9a8d2377dd238c5525b38  libstdc++-v3/testsuite/23_containers/vector/requirements/do_the_right_thing.cc
! 2c33b692a0135746385c632d6c4d3e55  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/assign_neg.cc
! 2a186309affc0781fb1a11264f6d6578  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor.cc
! 607d0877b4bca49162bff8ff413db365  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_1_neg.cc
! fb96c75f546a90cbbbec162e92b36302  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/constructor_2_neg.cc
! 408e7ab7ee893afc09e01e5d88bd8d37  libstdc++-v3/testsuite/23_containers/vector/requirements/dr438/insert_neg.cc
! f5808b845e0f800981174faf2911341c  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/basic.cc
! d3ef4dac1a30e959f72f7c69f206a871  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/generation_prohibited.cc
! cb24b32c4187bb67cd912a5901b2c06a  libstdc++-v3/testsuite/23_containers/vector/requirements/exception/propagation_consistent.cc
! 5655bd4385f12dcf4c6d0d2eadb7b764  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1.cc
! e703a073188aba7737417d1810f19a9c  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/1_c++0x.cc
! 864b962306d1c82770068184041265f9  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/2.cc
! e3d88df389fcd0b726a3bc4c93264067  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/3.cc
! cef786997d07f1b03d5ac9ca0b7dc97c  libstdc++-v3/testsuite/23_containers/vector/requirements/explicit_instantiation/4.cc
! 0285413cad9a913b35205b14a226f2b0  libstdc++-v3/testsuite/23_containers/vector/requirements/partial_specialization/1.cc
! f76e0c8c8e4a3759145265dc49b2c284  libstdc++-v3/testsuite/23_containers/vector/requirements/typedefs.cc
! 2a52fdd1bf4ff731c72f0336607d475c  libstdc++-v3/testsuite/23_containers/vector/requirements/version.cc
! 32f78dfb77e714f75ef6b8488e80d933  libstdc++-v3/testsuite/23_containers/vector/types/1.cc
! 1f67d01c546574d6339de0f88059f4f9  libstdc++-v3/testsuite/23_containers/vector/types/23767.cc
! 85f7e3bc6c754c99321e9c58bf82bd58  libstdc++-v3/testsuite/23_containers/vector/types/pmr_typedefs_debug.cc
! 71c8f9b60c7cbdc449b247214114d700  libstdc++-v3/testsuite/23_containers/vector/zero_sized_allocations.cc
! a093113957c91d1cf1a166144de5b26f  libstdc++-v3/testsuite/24_iterators/aliases.cc
! 5327edf021e1c1e05ee3b132f7dae6f0  libstdc++-v3/testsuite/24_iterators/associated_types/incrementable.traits.cc
! 0fa4310639c268bbfcdc9ca336d78629  libstdc++-v3/testsuite/24_iterators/associated_types/iterator.traits.cc
! 50870d295c25e53d39ee17ad5c5688f5  libstdc++-v3/testsuite/24_iterators/associated_types/readable.traits.cc
! 2057740b67943f00bc7308c7c6cad782  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/2.cc
! d7297a501d19ede93d10c2e4424c8f54  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/constexpr.cc
! 32da4c453e7c72cf78d088430b1ae5d5  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/pr93884.cc
! 9349076c194ac1e5f64d96b9fa72665a  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/base_classes.cc
! b39bb7078bd682d8538839e95818ea1a  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/container.cc
! 834e5194faf2e35dce7a44eaf726d413  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/explicit_instantiation.cc
! ae8505ef374dd9974845cff7aeaa5d37  libstdc++-v3/testsuite/24_iterators/back_insert_iterator/requirements/typedefs.cc
! 8d13a2561e41e20480b76ba37c046ca5  libstdc++-v3/testsuite/24_iterators/bidirectional/concept.cc
! debb68c68dd5189b867e83a0950968c4  libstdc++-v3/testsuite/24_iterators/bidirectional/tag.cc
! 6f53257e08db7bf79198e821fba81d8c  libstdc++-v3/testsuite/24_iterators/common_iterator/1.cc
! a827335620d308b35c53b3ee1c9877b9  libstdc++-v3/testsuite/24_iterators/common_iterator/100823.cc
! 19962f4a948ee8a811eb1d167bc7885d  libstdc++-v3/testsuite/24_iterators/common_iterator/2.cc
! e0a48c815909ee67a38f78eeb920db89  libstdc++-v3/testsuite/24_iterators/const_iterator/1.cc
! 3941f812a2cc88107aa50d5fa67d2cce  libstdc++-v3/testsuite/24_iterators/container_access.cc
! ff373ccb63010db03d4b9fc644be36cb  libstdc++-v3/testsuite/24_iterators/contiguous/concept.cc
! 355ec131f5c874467d4e57e6f83aa348  libstdc++-v3/testsuite/24_iterators/contiguous/tag.cc
! c4578e9138804397582ab09fb8ae0be9  libstdc++-v3/testsuite/24_iterators/counted_iterator/1.cc
! 7b5e5aa4292ba9e356f2d182d1e498a2  libstdc++-v3/testsuite/24_iterators/counted_iterator/lwg3389.cc
  564e115ff4a93acb59630b87fa2920f9  libstdc++-v3/testsuite/24_iterators/counted_iterator/lwg3643.cc
! 129fb7a708505b7658a965e4734efa23  libstdc++-v3/testsuite/24_iterators/customization_points/92894.cc
! 4628b9edaabe057bd16fa80f66fa98ef  libstdc++-v3/testsuite/24_iterators/customization_points/iter_move.cc
! aae04855d68526603b64dfac6700c76d  libstdc++-v3/testsuite/24_iterators/customization_points/iter_swap.cc
! aefa346a1ce0c8098fbcc79cf583de94  libstdc++-v3/testsuite/24_iterators/customization_points/lwg3420.cc
! c2ab2ac172f6cfa5558835ba26066369  libstdc++-v3/testsuite/24_iterators/forward/concept.cc
! 57925b1ba0c08743628a5b81747ce22f  libstdc++-v3/testsuite/24_iterators/forward/tag.cc
! 49e3573c2718f8d27a8714548095d47f  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/2.cc
! 8fcbec54738d4db2c3717c1be57770a2  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/constexpr.cc
! 37f840633717412e38825f5a90993bbb  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/pr93884.cc
! 548806f339905366f3129d4b1ac1448d  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/base_classes.cc
! 85ad977cdcd84f052e6533fcca4f076e  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/container.cc
! 69eac4c3e7faf647b372f4cc4ff70508  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/explicit_instantiation.cc
! a2dbc2e704ec8c9b6500c1cad2a6d305  libstdc++-v3/testsuite/24_iterators/front_insert_iterator/requirements/typedefs.cc
! 930bbcbf3b864bbc7d3625ad6cd311ab  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++11.cc
! 9fbc34bd558ee4746c2b288a07528115  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++14.cc
! 895c88ee67ede81603cc0fd32475a2ca  libstdc++-v3/testsuite/24_iterators/headers/iterator/range_access_c++17.cc
! 2d97264a6e38de76cd68b8b4380efb9c  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis.cc
! ee3ebda78e45b4955e4d7d07e90b0f68  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++11.cc
! 55b5dd511029c34f8c8fb55fcded3661  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++14.cc
! 78dfbcd3b5231b6c9dd1d3542ebae50a  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++17.cc
! 51acd3bec06fd86f2a5d0a81a5f3a0fd  libstdc++-v3/testsuite/24_iterators/headers/iterator/synopsis_c++20.cc
! e400a0fbf5c09bc488927656f847823f  libstdc++-v3/testsuite/24_iterators/headers/iterator/types_std.cc
! 271bc7e21fbc557ddd69f5ca6e90a167  libstdc++-v3/testsuite/24_iterators/indirect_callable/92894.cc
! 67984a81dea43899ffbfbccee41529bb  libstdc++-v3/testsuite/24_iterators/indirect_callable/projected.cc
! 8dae4fb6c5bc3c777a6070e15aac28e3  libstdc++-v3/testsuite/24_iterators/input/concept.cc
! f5d7b55af0b21732d941894a392c5486  libstdc++-v3/testsuite/24_iterators/input/tag.cc
! 680c705c3bfd80b03e711b899789983f  libstdc++-v3/testsuite/24_iterators/insert_iterator/2.cc
! 890dd55c149d17a984d4956e1d7b859c  libstdc++-v3/testsuite/24_iterators/insert_iterator/constexpr.cc
! d1caa1f2bf3ec9dd16c47b12f1b2b7a5  libstdc++-v3/testsuite/24_iterators/insert_iterator/dr561.cc
! 97549020d727c3f83ad008bb679cd780  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/base_classes.cc
! ca3d13778c0c80311acf61cc6b32be60  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/container.cc
! 8ba5488ff96beb476922d28d4e21b196  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/explicit_instantiation.cc
! 2439f145f677dc2ea6993fd21cc64e12  libstdc++-v3/testsuite/24_iterators/insert_iterator/requirements/typedefs.cc
! ed715a19eb62e470d1e8f47b0582b91e  libstdc++-v3/testsuite/24_iterators/istream_iterator/1.cc
! 2f86bac49ea5d5f0281ea6f519b3d4b2  libstdc++-v3/testsuite/24_iterators/istream_iterator/2.cc
! 4884f936954520f0e1d6dab2a3d30c73  libstdc++-v3/testsuite/24_iterators/istream_iterator/70766.cc
! 387e134c979fe11ebb72e782dffb6632  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/constexpr.cc
! 5a2345bc7bf41973c99847b32be5e98b  libstdc++-v3/testsuite/24_iterators/istream_iterator/cons/sentinel.cc
! 5fc959e530af60fc374dda8cc7302547  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/base_classes.cc
! 722fba5f66f393206764e6edb77ae51c  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/explicit_instantiation.cc
! 2d00e7f6ff4ba9e992b66a109d3209d2  libstdc++-v3/testsuite/24_iterators/istream_iterator/requirements/typedefs.cc
! 82c2d1d6580a4b91c73034088080b212  libstdc++-v3/testsuite/24_iterators/istream_iterator/sentinel.cc
! 7d12f077ff566bf32795441b77385f39  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2.cc
! 62b6026aea56196b31df1c4191fa355f  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/2627.cc
! d11769fe782ae211668b3927ebbc8271  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/92285.cc
! 14cd0b933a307be0607eee9eb3639e4b  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/constexpr.cc
! 23cf81cf8faea73ae4e6147c0d36e85a  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/cons/sentinel.cc
! ec8c0404c262d8376788bdaf8b8a9558  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/1_neg.cc
! d33886a11147c426ef2cc8b3fade594a  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/debug/2_neg.cc
! 759a9f07182882763f4a748d7869bb12  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/base_classes.cc
! ed6bee16284ef79c7348e4bc0e971d34  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/dr445.cc
! 8a6414ea5db9aa1c341ee7f3793b84af  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/explicit_instantiation.cc
! 62bfa1439609613e10b082d75afc47ce  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/requirements/typedefs.cc
! e80b0b8d79e44d1adab755e4bf37dc6b  libstdc++-v3/testsuite/24_iterators/istreambuf_iterator/sentinel.cc
! cab100c51cefa4f6fc6826870009ffee  libstdc++-v3/testsuite/24_iterators/move_iterator/cust.cc
! e994514992fdebd36bd2a0ae2580c19c  libstdc++-v3/testsuite/24_iterators/move_iterator/debug_neg.cc
! afb2c8d910e711b7d1feaaa3c13032af  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2061.cc
! 86d065151bec948ce6c799c143bf6099  libstdc++-v3/testsuite/24_iterators/move_iterator/dr2106.cc
! 2da36d9975a1210939982d36b767285a  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3265.cc
! c2028d3caaf006894db2b969966f02da  libstdc++-v3/testsuite/24_iterators/move_iterator/dr3435.cc
! dfc826bcfdcc73ea48c29bc164a8cc63  libstdc++-v3/testsuite/24_iterators/move_iterator/greedy_ops.cc
! a33efb91b787bf40c3d4736fff85e4fd  libstdc++-v3/testsuite/24_iterators/move_iterator/input_iterator.cc
! b71c164c19f41e605bbd1c5406034051  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3390.cc
! a8e3e1f3fb1408d1056247dd051b75c7  libstdc++-v3/testsuite/24_iterators/move_iterator/lwg3391.cc
! 73cc87e3970927d6d0a2da1edf59953d  libstdc++-v3/testsuite/24_iterators/move_iterator/move_only.cc
! 73d58e3cbae9543e1eeb43f9d31428f7  libstdc++-v3/testsuite/24_iterators/move_iterator/p2520r0.cc
! 9b9fad43f1df4f5a1f9882976e56735c  libstdc++-v3/testsuite/24_iterators/move_iterator/rel_ops_c++20.cc
! 90deb52d353436af1d0ac667e877a9f8  libstdc++-v3/testsuite/24_iterators/move_iterator/sentinel.cc
! bc688d904bce917c2f66ab4bb619fc40  libstdc++-v3/testsuite/24_iterators/normal_iterator/58403.cc
! ebe18fc0e7b2e2c74bd59ee0815c30ae  libstdc++-v3/testsuite/24_iterators/normal_iterator/cmp_c++20.cc
! 6106a5c9649677af7873b7937b568810  libstdc++-v3/testsuite/24_iterators/normal_iterator/debug_neg.cc
! 5a55f4f2a0b0fdae5bfc8823fae563af  libstdc++-v3/testsuite/24_iterators/normal_iterator/greedy_ops.cc
  4ff5db259d95f86dab8a3a9b2f91f78c  libstdc++-v3/testsuite/24_iterators/normal_iterator/to_address.cc
! e72e1dd0c33370657f87fa0967b55551  libstdc++-v3/testsuite/24_iterators/operations/26020.cc
! 77477b91ea06f12c4d38d549d7892e59  libstdc++-v3/testsuite/24_iterators/operations/40497.cc
  631af97d6c75b598ecf8901dc62067b2  libstdc++-v3/testsuite/24_iterators/operations/lwg2353.cc
! 25fd4fb2047b2d0d1562584ff084c5b1  libstdc++-v3/testsuite/24_iterators/operations/next.cc
! 1f2651cc97311013d55d2a0d741d4042  libstdc++-v3/testsuite/24_iterators/operations/prev.cc
! 0d150b8d0ebab5645922337ac724e703  libstdc++-v3/testsuite/24_iterators/operations/prev_neg.cc
! 6f17aa498d0e5df3e473962527d97dd4  libstdc++-v3/testsuite/24_iterators/ostream_iterator/1.cc
! c6fe60706489b65f84447467a405627f  libstdc++-v3/testsuite/24_iterators/ostream_iterator/70766.cc
! f0d42dde02367e015eeb0c315477e4e6  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/base_classes.cc
! 75b6cedeab9821e9eb8718bd22c6a6da  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/explicit_instantiation.cc
! e656375ce391074f599dd1418284c42b  libstdc++-v3/testsuite/24_iterators/ostream_iterator/requirements/typedefs.cc
! eece6013f04be4391abb3b8654cf7cf2  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/2.cc
! 1ec06e63b9b1b91be5efcf66b96fed70  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/base_classes.cc
! 4773c93779136a52ad9f520489e05778  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/explicit_instantiation.cc
! e0b95eb8f185a228a0282f31aa012449  libstdc++-v3/testsuite/24_iterators/ostreambuf_iterator/requirements/typedefs.cc
! e2df25a9381e57270407dde4520776b5  libstdc++-v3/testsuite/24_iterators/output/concept.cc
! 2c506d4a38adbaa1e8fc5c3566173d52  libstdc++-v3/testsuite/24_iterators/output/tag.cc
! 935bc3e43ac43eb9a5b8db8b87d13086  libstdc++-v3/testsuite/24_iterators/random_access/concept.cc
! fa507c8df8f32770307c86584711d7cc  libstdc++-v3/testsuite/24_iterators/random_access/string_vector_iterators.cc
! 5a6cbc9f14a1d16b8d2ee61b154b514d  libstdc++-v3/testsuite/24_iterators/random_access/tag.cc
! a94f613ccc7e72ebfe32810bec47d954  libstdc++-v3/testsuite/24_iterators/range_access/range_access.cc
! aa9930f1ed9f06f2d99c91ddab8802af  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp14.cc
! 230cbeb867349abbb207591cbf77fcde  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17.cc
! 0e9302d447be12087af10710a44dd6c6  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp17_neg.cc
! 009c13941879824940a440f0226a915e  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20.cc
! 8e42a964f4fcae70f2482af7a8528d1a  libstdc++-v3/testsuite/24_iterators/range_access/range_access_cpp20_neg.cc
! 0309edfa4bb6cffbef5ea77f1c932601  libstdc++-v3/testsuite/24_iterators/range_operations/100768.cc
! 71ec18369f3a12952163565985f0b100  libstdc++-v3/testsuite/24_iterators/range_operations/advance.cc
! 6d7eb0347f53ca13b926d9f9b99c9a2f  libstdc++-v3/testsuite/24_iterators/range_operations/advance_debug_neg.cc
  5dcff108eb2f62baa60bfa3a74d92304  libstdc++-v3/testsuite/24_iterators/range_operations/advance_overflow.cc
! 88a53a38be47a524b07722f68deb33be  libstdc++-v3/testsuite/24_iterators/range_operations/distance.cc
  3851ab6d95bc78163ba5186545dd9eb7  libstdc++-v3/testsuite/24_iterators/range_operations/lwg3392.cc
! 719157d78f9921ad711b728fc354eac9  libstdc++-v3/testsuite/24_iterators/range_operations/next.cc
! 614701f7ea3bfad828c724f514f9002f  libstdc++-v3/testsuite/24_iterators/range_operations/prev.cc
! f8bbf55fd33c78caf8bdf0eade4a5a52  libstdc++-v3/testsuite/24_iterators/reverse_iterator/100639.cc
! 9ae06bd6a5746e3222ade58cdd913bed  libstdc++-v3/testsuite/24_iterators/reverse_iterator/11729.cc
! ce58b5ae2cead025afa927d2f6c1dee4  libstdc++-v3/testsuite/24_iterators/reverse_iterator/2.cc
! a1e0d62c6ab5f7ce185c2032046d344e  libstdc++-v3/testsuite/24_iterators/reverse_iterator/3.cc
! bb42aa9101805267e625d12941717a8c  libstdc++-v3/testsuite/24_iterators/reverse_iterator/71771.cc
! 5bdb4fd1d364d01e0e7711874fb828a7  libstdc++-v3/testsuite/24_iterators/reverse_iterator/cust.cc
! 760b1aa94d8e195391e5079d4bd2d457  libstdc++-v3/testsuite/24_iterators/reverse_iterator/debug_neg.cc
! 920a670a396b2bb097c1dd5f517c6ea8  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr1052.cc
! 6a39f8d41169e1200b4786f6dd631e70  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr2188.cc
! 1f98259b3bf8796d6ffd27d62334c4e4  libstdc++-v3/testsuite/24_iterators/reverse_iterator/dr3435.cc
! 1c36bbb89a6c726213052cd705d26b8e  libstdc++-v3/testsuite/24_iterators/reverse_iterator/greedy_ops.cc
! 03e554cdf5761bf9ff46ebb0c7f6ee79  libstdc++-v3/testsuite/24_iterators/reverse_iterator/make.cc
  b0c0208d50f550375365900191253233  libstdc++-v3/testsuite/24_iterators/reverse_iterator/noexcept.cc
! 492ea1c876acf144a05be64860f450f9  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops.cc
! 9c9baba2f023c757e66a47444465b154  libstdc++-v3/testsuite/24_iterators/reverse_iterator/rel_ops_c++20.cc
! edfa376e8a45990d6b411b09ea5b6ff1  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/base_classes.cc
! 58c0f91e827f907f8a87d00c3601d43a  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/current.cc
! 931461afe5297a9d413e7f617ce46994  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/explicit_instantiation.cc
! 7be8c6994e6a4a8b5cc50d23317a605b  libstdc++-v3/testsuite/24_iterators/reverse_iterator/requirements/typedefs.cc
! 5733f38d29a2735dbbdc854a18e704c7  libstdc++-v3/testsuite/25_algorithms/adjacent_find/1.cc
! 34ff14ef85063c7e30b078a7b4b129c9  libstdc++-v3/testsuite/25_algorithms/adjacent_find/check_type.cc
! 40bdb42340b8c6c7003477f49b614653  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constexpr.cc
! 0091f614ec037f5c453155e3fe3dfd22  libstdc++-v3/testsuite/25_algorithms/adjacent_find/constrained.cc
! d20e66992d9de479fde71e09a8ac9de9  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/2.cc
! 2c6ae45a1292c1c482c8bacb1a58bbb9  libstdc++-v3/testsuite/25_algorithms/adjacent_find/requirements/explicit_instantiation/pod.cc
! 7cf02120de27e774efc1c2db4018d97e  libstdc++-v3/testsuite/25_algorithms/adjacent_find/vectorbool.cc
! f568e4053ed95788f2bec0126641b871  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1.cc
! 503445c6225d72ed7facaf353e497d30  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/1_neg.cc
! c5df4996660e78f9e2b03c23ca2e43f2  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2.cc
! a74bea6a4e99c34eb2fc0a8c9660315d  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/2_neg.cc
! 8f71b80e952e1d775c131431c41976cc  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/char/3_neg.cc
! 1980b119273e54833b2e51fd039eb3fe  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1.cc
! 0c81e2613e2981da402d5fef413a5c24  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/1_neg.cc
! 3492975db6cc27b4030209cf4ac92673  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2.cc
! cb893900a8a46c21b6cb24d5c64899e3  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/2_neg.cc
! 1b0a7ba76f3db322c973091cad785ce8  libstdc++-v3/testsuite/25_algorithms/advance/istreambuf_iterators/wchar_t/3_neg.cc
! 6e7a6d113d4b24e1e84a0cb48ceeb17b  libstdc++-v3/testsuite/25_algorithms/all_of/1.cc
! 8e1f9186314be653a5fe9aacf214ec08  libstdc++-v3/testsuite/25_algorithms/all_of/check_type.cc
! 751bacf805f9f9cecdaa95a5ab399e03  libstdc++-v3/testsuite/25_algorithms/all_of/constexpr.cc
! d8ad0fbb3fb124abd3bb7cfff00b0233  libstdc++-v3/testsuite/25_algorithms/all_of/constrained.cc
! 1b9de7a9090e11335c79222a57316013  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/2.cc
! b911a8da63d6133b4262b190c0086ec4  libstdc++-v3/testsuite/25_algorithms/all_of/requirements/explicit_instantiation/pod.cc
! 98c242cec6745c79cfc381d147f3dc99  libstdc++-v3/testsuite/25_algorithms/any_of/1.cc
! 24e5c3db1fc858e6da4c24fd6a1d87de  libstdc++-v3/testsuite/25_algorithms/any_of/check_type.cc
! 65501a206ffff139be1d7efc184c40a4  libstdc++-v3/testsuite/25_algorithms/any_of/constexpr.cc
! 182170434621f4336add53977be143a9  libstdc++-v3/testsuite/25_algorithms/any_of/constrained.cc
! 760e3f3177c19b74c6c5f032cc315ddd  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/2.cc
! 1e264c9f5404112e87dc1cbb63a7f610  libstdc++-v3/testsuite/25_algorithms/any_of/requirements/explicit_instantiation/pod.cc
! 61637b196b0b5097608ce53635f0d223  libstdc++-v3/testsuite/25_algorithms/binary_search/1.cc
! 35dc5e07dfb7bf7321d96361cf757850  libstdc++-v3/testsuite/25_algorithms/binary_search/2.cc
! 31fdef7375b03db4b54c84c84c2e3ad0  libstdc++-v3/testsuite/25_algorithms/binary_search/check_type.cc
! 901b5a057fa1ca518bc84c47c062bab4  libstdc++-v3/testsuite/25_algorithms/binary_search/constexpr.cc
! 78c42d74ec08a27ab8239d0c307a4317  libstdc++-v3/testsuite/25_algorithms/binary_search/constrained.cc
! d483bfcf9976c4243b5dab201622c037  libstdc++-v3/testsuite/25_algorithms/binary_search/partitioned.cc
! 408b6cd53b54d3dc09303ff3cde69857  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/2.cc
! 563a4f03c459a263c20024757cf0c6a0  libstdc++-v3/testsuite/25_algorithms/binary_search/requirements/explicit_instantiation/pod.cc
! ebd2888189f51e2e99fda7817e8b5b04  libstdc++-v3/testsuite/25_algorithms/clamp/1.cc
! 1aa26d633b0421ca4981c4b9f2ca018c  libstdc++-v3/testsuite/25_algorithms/clamp/2.cc
! 75faf704873f59feaa367b12d63c21a9  libstdc++-v3/testsuite/25_algorithms/clamp/constexpr.cc
! cbeaae1582a4aea8aec524b578bba8b7  libstdc++-v3/testsuite/25_algorithms/clamp/constrained.cc
! 0e3544496d27d9600076b10eb0a695dc  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/1.cc
! 2a9c070cbc2013f09aebb1ad0c5f7a28  libstdc++-v3/testsuite/25_algorithms/clamp/requirements/explicit_instantiation/pod.cc
! c629fb829445d4fe899403deb3f1e8b1  libstdc++-v3/testsuite/25_algorithms/constexpr_macro.cc
! efaf386a62222b506e2e629523f82be6  libstdc++-v3/testsuite/25_algorithms/contains/1.cc
! 0719c4dc9fc16425ac3f7ec38de3dbfe  libstdc++-v3/testsuite/25_algorithms/contains_subrange/1.cc
! 6c4217e480602bd852cc85e482e32892  libstdc++-v3/testsuite/25_algorithms/copy/1.cc
! ab3dc855e72ee51df3a966a7fda86fc5  libstdc++-v3/testsuite/25_algorithms/copy/108846.cc
! c377d7bddae0527d5517e24864a915a5  libstdc++-v3/testsuite/25_algorithms/copy/2.cc
! 1ac739298af8b4ff67a2aeecedf7dded  libstdc++-v3/testsuite/25_algorithms/copy/3.cc
! fffa59230f2109ca541558d92faa5399  libstdc++-v3/testsuite/25_algorithms/copy/34595.cc
! 5ef5d8546dfd978a642e4d247b42e9a1  libstdc++-v3/testsuite/25_algorithms/copy/4.cc
! 33e187a7f17d1379f7966686d3fc3db1  libstdc++-v3/testsuite/25_algorithms/copy/58982.cc
! ddfa5015a3523b9f06cc7f2d109c68e9  libstdc++-v3/testsuite/25_algorithms/copy/86658.cc
! d14c55b470967499d686e00bb5d5ac58  libstdc++-v3/testsuite/25_algorithms/copy/94013.cc
! 1459049fbd5e175a24315f6ad217fe2c  libstdc++-v3/testsuite/25_algorithms/copy/95578.cc
! 873e7ac8cd923941a658d1ce102463ed  libstdc++-v3/testsuite/25_algorithms/copy/constexpr.cc
! dee497a29b482353f3e3e3203617e599  libstdc++-v3/testsuite/25_algorithms/copy/constrained.cc
! 5880beae40d4d6e90049b2e79d552f55  libstdc++-v3/testsuite/25_algorithms/copy/debug/1_neg.cc
! b72875aba66de113105d03cb2edb5923  libstdc++-v3/testsuite/25_algorithms/copy/debug/2_neg.cc
! bcbf9f69f5df2ad3d6482888a62b7d88  libstdc++-v3/testsuite/25_algorithms/copy/debug/95289.cc
! 3d47a846867f5dc8cb4991f48cf2e212  libstdc++-v3/testsuite/25_algorithms/copy/debug/99402.cc
! bc0238f37097d2e2a14668d4f7085354  libstdc++-v3/testsuite/25_algorithms/copy/debug/constexpr_neg.cc
  a4e3b919e921272cb082f7fa810f39d2  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/1.cc
! d7ffa27c515e1edf3d77be2891294900  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/2.cc
! fed554deec0465a39d90ba17321ebb36  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/31.cc
! fed9a921f087002adf3fe9282d190b59  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/32.cc
! 1c38f80ffa04bc23df987f332872deef  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/33.cc
! 496976b522467cbb6b83cb7437174c44  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/41.cc
! 58299837a9b7285bd56ef6fd448be124  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/42.cc
! c3e37356e786ab6fc5455a3fbbd1c8ce  libstdc++-v3/testsuite/25_algorithms/copy/deque_iterators/43.cc
! a75101249e160257299728c5d864c1d0  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/1.cc
! b7b18c70d7def7ed257489f3308213f8  libstdc++-v3/testsuite/25_algorithms/copy/move_iterators/69478.cc
! 7876a5ea65e4cffa1b21b0ab4b571245  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/2.cc
! 0b1c1fafce83b23d23ff6a538f10e004  libstdc++-v3/testsuite/25_algorithms/copy/requirements/explicit_instantiation/pod.cc
! 9e09f8576de12422b43dec35f04ef282  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/1.cc
! 83159560b3304d5b5d849b83d7eafe92  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/2.cc
! 4de3a6ba13146fd22fd98ad6c76f700b  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/3.cc
! e64d102047a62234a5b214614317d2f3  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
! 98f40c89aa1b5298d24ed9c5cbf099fa  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc
! 58e7e57dbd88b7c2d22192fe67440013  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/1.cc
! 1bcd6f83f98c852a519aeea534df0f81  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/2.cc
! 6de08c1e8d8947ca7d4522f65f6d684a  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/3.cc
! 88c10c08bff86e78d9ade328bfa3c0b1  libstdc++-v3/testsuite/25_algorithms/copy/streambuf_iterators/wchar_t/4.cc
! bb0e824b90574124bc4bf32ff7dc510b  libstdc++-v3/testsuite/25_algorithms/copy_backward/108846.cc
! 607bcd1792800b43bb61b9097afc3b18  libstdc++-v3/testsuite/25_algorithms/copy_backward/94013.cc
! d67bf0088f3d346d94fe6b96005fa647  libstdc++-v3/testsuite/25_algorithms/copy_backward/95578.cc
! ac7977f6977a4dd984db73a74728c68c  libstdc++-v3/testsuite/25_algorithms/copy_backward/constexpr.cc
! 7e6014b51ffd75b6b7e27b2370beba60  libstdc++-v3/testsuite/25_algorithms/copy_backward/constrained.cc
! 84606f8a62a57e1b44a37bee4675e24e  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/1_neg.cc
! 7a90aaf154a1c4f4c5c295b675410e6b  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/2_neg.cc
! f4b28995254189059be604536bea048e  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/3_neg.cc
! 81eadcf4a674d2ac26e20b52265f9c8b  libstdc++-v3/testsuite/25_algorithms/copy_backward/debug/constexpr_neg.cc
  da1fb78d5a3cd469ddf537052865be96  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/1.cc
! 60677d66257961b6619b191899603737  libstdc++-v3/testsuite/25_algorithms/copy_backward/deque_iterators/2.cc
! 710a9c029fe08c1c2b495f71b6925c43  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/1.cc
! c6c263ed017c007f4b09476453b46097  libstdc++-v3/testsuite/25_algorithms/copy_backward/move_iterators/69478.cc
! 21ed23ae0ceadc3f0197f30c8cb1f343  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/2.cc
! bab78fb497f5333fdf085b11009e760e  libstdc++-v3/testsuite/25_algorithms/copy_backward/requirements/explicit_instantiation/pod.cc
! 6d4f161c32f4a674782056ea8cca1121  libstdc++-v3/testsuite/25_algorithms/copy_if/check_type.cc
! 1ba3806effa6106ef9b613778bedbb55  libstdc++-v3/testsuite/25_algorithms/copy_if/constexpr.cc
! 1efcb6ee0a2470bc38b33502afd1b4c8  libstdc++-v3/testsuite/25_algorithms/copy_if/constrained.cc
! fda414818df4fbd72024f365a90e6653  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/2.cc
! 15a1f11beb9c93d485dd418844e8d0f5  libstdc++-v3/testsuite/25_algorithms/copy_if/requirements/explicit_instantiation/pod.cc
! 321ce325e49187b9dd7f15f20e1954df  libstdc++-v3/testsuite/25_algorithms/copy_n/1.cc
! 1e20df47bf8b9c2d7325fca62a0f583e  libstdc++-v3/testsuite/25_algorithms/copy_n/108846.cc
! 2ba0f7ac8dc951dd09ad9e2ad235643c  libstdc++-v3/testsuite/25_algorithms/copy_n/2.cc
! ff2b074cd18ad6d9466ec7f7320d3c6b  libstdc++-v3/testsuite/25_algorithms/copy_n/3.cc
! 8b43157079b91b2cc1ee9b2a5ac51ff3  libstdc++-v3/testsuite/25_algorithms/copy_n/4.cc
! 2ce4aa716502ba17399341f0b2ca4460  libstdc++-v3/testsuite/25_algorithms/copy_n/5.cc
! a149f612764e68a45cf8a82773b762b8  libstdc++-v3/testsuite/25_algorithms/copy_n/50119.cc
! 0e2b584ca1a9ca2c7d8be2566857b836  libstdc++-v3/testsuite/25_algorithms/copy_n/58982.cc
! 5c3fe024848d83a49536c72a04987337  libstdc++-v3/testsuite/25_algorithms/copy_n/constexpr.cc
! 64af9d856176b7e765b99e05a28ff7d6  libstdc++-v3/testsuite/25_algorithms/copy_n/constrained.cc
! f7d5ea4170cc7836afd48032ec6771f5  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/1_neg.cc
! b3df5eb9acaa49b4a6e176cdf40a2ad1  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/2_neg.cc
! cda07f842ea1df47e78536906c55f47d  libstdc++-v3/testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc
! 7df484fe723efdc42430645cb04ceb64  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1.cc
! 450029cf8c058941b118c51e52509e88  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/1_neg.cc
! 46f386c4ccb4af9c20e1dad9da3f8ffc  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc
! 426e5b3abb7b123d9ea7fab8196ee358  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/2_neg.cc
! e5fb2ff97e2625a914f11291ede9db4a  libstdc++-v3/testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc
! 25a77bb25850190bad89258da1be6b61  libstdc++-v3/testsuite/25_algorithms/copy_n/move_iterators/1.cc
! a84c1b712df691b9d9d0368a9209cc24  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/2.cc
! 48435ccea44e96e9aeadd9b23a250de4  libstdc++-v3/testsuite/25_algorithms/copy_n/requirements/explicit_instantiation/pod.cc
! 5021b1bd25eb22f3f7fb1e61a09befee  libstdc++-v3/testsuite/25_algorithms/count/1.cc
! a2558e9f862e23d1abc158ed7854c91f  libstdc++-v3/testsuite/25_algorithms/count/check_type.cc
! 70d9a367ba13a9681e1e0b1a23677629  libstdc++-v3/testsuite/25_algorithms/count/constexpr.cc
! 4f9a46a8aa62ac057a16ef3eb269db35  libstdc++-v3/testsuite/25_algorithms/count/constrained.cc
! 19c1b9442e7a086313e51c6f9fee9e45  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/2.cc
! f534bb741b1b8a7d5f98b892f4721398  libstdc++-v3/testsuite/25_algorithms/count/requirements/explicit_instantiation/pod.cc
! 6619d5db38eeacb2057cc12ecf91ba79  libstdc++-v3/testsuite/25_algorithms/count_if/1.cc
! b8a39eca088458b6314b7e863c1d2f68  libstdc++-v3/testsuite/25_algorithms/count_if/check_type.cc
! be9385917e5cb22e9c36f74182546b3d  libstdc++-v3/testsuite/25_algorithms/count_if/constexpr.cc
! f7f7d8fd0c305c11ef55623878026325  libstdc++-v3/testsuite/25_algorithms/count_if/constrained.cc
! d7ef544ee490092cbe946b3325d62b19  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/2.cc
! 63948be3677ba1e64bc295ff63f7599e  libstdc++-v3/testsuite/25_algorithms/count_if/requirements/explicit_instantiation/pod.cc
! 24c48ac13e3753ef9da5e891a16295eb  libstdc++-v3/testsuite/25_algorithms/cpp_lib_constexpr.cc
! 56d6507f8813af3b85c1682a3ebb20db  libstdc++-v3/testsuite/25_algorithms/equal/1.cc
! 51f8a255fdefe513efd8aa9a6d055a88  libstdc++-v3/testsuite/25_algorithms/equal/2.cc
! dbf192b6084f3c6758a66669cd55435b  libstdc++-v3/testsuite/25_algorithms/equal/94013.cc
! 7b00949b29696ba5c8a0f228ea4b562b  libstdc++-v3/testsuite/25_algorithms/equal/95578.cc
! ddd77cb41624702ecfdf8874125ad35b  libstdc++-v3/testsuite/25_algorithms/equal/check_type.cc
! 880fb738e2b9482b713670c047caaffe  libstdc++-v3/testsuite/25_algorithms/equal/check_type2.cc
! 9a1542b02f36369b423f496f2c1bc18a  libstdc++-v3/testsuite/25_algorithms/equal/constexpr.cc
! b4c4f62636b0f48934c6ef630fb28d2d  libstdc++-v3/testsuite/25_algorithms/equal/constexpr_neg.cc
! 9b532f9418fd268674ea8af8b932b2a5  libstdc++-v3/testsuite/25_algorithms/equal/constrained.cc
! 62b831f0f27217afdf9d210011aa451d  libstdc++-v3/testsuite/25_algorithms/equal/debug/1_neg.cc
! a2d00c3f8a3ebb8d1769ab17d8ab20e0  libstdc++-v3/testsuite/25_algorithms/equal/debug/2_neg.cc
! 67b47ff551d17b0d7089f849d31c3682  libstdc++-v3/testsuite/25_algorithms/equal/debug/3_neg.cc
! a57d8c05070aac261cc79468adffac9d  libstdc++-v3/testsuite/25_algorithms/equal/debug/constexpr_neg.cc
! 97706b0fc7f60e2fea89255c119b9bcd  libstdc++-v3/testsuite/25_algorithms/equal/deque_iterators/1.cc
! 09176356f02d9fa49c45915537829cc2  libstdc++-v3/testsuite/25_algorithms/equal/no_operator_ne.cc
! 7566a357315b6dd702845d925dbc68d7  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/2.cc
! 67844e09bda48f11cc64c964c75f1851  libstdc++-v3/testsuite/25_algorithms/equal/requirements/explicit_instantiation/pod.cc
! 0684fcaed0bda93cfa15eb826586e243  libstdc++-v3/testsuite/25_algorithms/equal_range/1.cc
! 2ff8242f63e6ce0670a9e2bc36e85fcd  libstdc++-v3/testsuite/25_algorithms/equal_range/2.cc
! 59affbbbcc9aaaf94df5cbd4f56fd02e  libstdc++-v3/testsuite/25_algorithms/equal_range/check_type.cc
! 6a0e6161d8f7ed19ab1a9db09a817e4f  libstdc++-v3/testsuite/25_algorithms/equal_range/constexpr.cc
! c7624f12b9610d542440a99b9ba20dcd  libstdc++-v3/testsuite/25_algorithms/equal_range/constrained.cc
! 74b704e2768b5fdb4ca7acc2918b24a6  libstdc++-v3/testsuite/25_algorithms/equal_range/partitioned.cc
! d6241916d02ab47b710ed17301f67ce7  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/2.cc
! 697a62f4c29e8e905f850fafe26c28f2  libstdc++-v3/testsuite/25_algorithms/equal_range/requirements/explicit_instantiation/pod.cc
! 515a7d3d5cc4823b69b5b05673627e2c  libstdc++-v3/testsuite/25_algorithms/fill/1.cc
! 5d9d8943f03de5a2c1afa8cbc9f112f9  libstdc++-v3/testsuite/25_algorithms/fill/2.cc
! 03905004cee3ae41f8c50ea1ed6fcd1e  libstdc++-v3/testsuite/25_algorithms/fill/3.cc
! 5ee3e5525813af7152ff5ff077ca1da2  libstdc++-v3/testsuite/25_algorithms/fill/35725.cc
! c8cc941191e5a18adb248a4971c9b8ba  libstdc++-v3/testsuite/25_algorithms/fill/4.cc
! 0d4e03550e7a07a621ab11020a0b472e  libstdc++-v3/testsuite/25_algorithms/fill/94013.cc
! 47540909917f3eeed92abdd17833a267  libstdc++-v3/testsuite/25_algorithms/fill/94017.cc
! 2f23041c665defe07b4fa2b89067ea48  libstdc++-v3/testsuite/25_algorithms/fill/bvector/1.cc
! 1c3267c9337e98dde2ee7398da5f7807  libstdc++-v3/testsuite/25_algorithms/fill/constexpr.cc
! 7959e3354ecd49081a5bef27394c71c9  libstdc++-v3/testsuite/25_algorithms/fill/constrained.cc
! ee9e5114226c9e4b93fd76ec9c23aef6  libstdc++-v3/testsuite/25_algorithms/fill/deque_iterators/1.cc
! f10b41f2922157b993e10752b8a2c7f1  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/2.cc
! 0b05cf2b83108c5508793b50ffcd9223  libstdc++-v3/testsuite/25_algorithms/fill/requirements/explicit_instantiation/pod.cc
! 095b644c0cc1845245ab2ff065554605  libstdc++-v3/testsuite/25_algorithms/fill_n/1.cc
! 155729cf66b78a6eff2a73b48854d982  libstdc++-v3/testsuite/25_algorithms/fill_n/2.cc
! fd5d7841d8f5f7f664aaba6ba672e20e  libstdc++-v3/testsuite/25_algorithms/fill_n/25306.cc
! 233fcf76cfe481fb7c2ee84b838982f0  libstdc++-v3/testsuite/25_algorithms/fill_n/35725.cc
! 3be2fecbf736fd621086573dca4d4c85  libstdc++-v3/testsuite/25_algorithms/fill_n/87982.cc
! 4951ae9ba3832b3ba4f1b4d61b12eb8c  libstdc++-v3/testsuite/25_algorithms/fill_n/87982_neg.cc
! 9e184bcda2eb2df18e2fe717dfe06505  libstdc++-v3/testsuite/25_algorithms/fill_n/94017.cc
! ebf7dd43329c8dd3f6e498f23bd45d05  libstdc++-v3/testsuite/25_algorithms/fill_n/constexpr.cc
! acdbfc2f23eab5b3188bebd9916496f0  libstdc++-v3/testsuite/25_algorithms/fill_n/constrained.cc
! 8cce1769dfa3bb4824f6e7e462ed404d  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/1_neg.cc
! d1b38e4fd1c2bc7a4e41898ada7d8189  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/2_neg.cc
! c456b8f5972a9d27447f6cea3b4f84ef  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/3_neg.cc
! 331e4b0a712900e80421a91cd078d1a2  libstdc++-v3/testsuite/25_algorithms/fill_n/debug/4_neg.cc
! eb27410736334c7ba96a84943545ed63  libstdc++-v3/testsuite/25_algorithms/fill_n/dr426.cc
! 7566a357315b6dd702845d925dbc68d7  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/2.cc
! 67844e09bda48f11cc64c964c75f1851  libstdc++-v3/testsuite/25_algorithms/fill_n/requirements/explicit_instantiation/pod.cc
! b2cffa0a46422f9dada830204bf3af30  libstdc++-v3/testsuite/25_algorithms/find/1.cc
! 6f623130659598b5b8e967dbee186ff7  libstdc++-v3/testsuite/25_algorithms/find/17441.cc
! ce8fc8854b8ee4af09aa72623e20341e  libstdc++-v3/testsuite/25_algorithms/find/39546.cc
! 98b2f3bf2de85eecd77edc301241238c  libstdc++-v3/testsuite/25_algorithms/find/check_type.cc
! 30119536ff5bbb39dd1e648860417d5f  libstdc++-v3/testsuite/25_algorithms/find/constexpr.cc
! 39ad39b091226cb8530f17d476110293  libstdc++-v3/testsuite/25_algorithms/find/constrained.cc
! 55bb274f39c1acc1a7b8d9ede3b6babe  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/1.cc
! 6bc99562f4e3e6c3095a5b02cd409722  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/char/2.cc
! 2f6aeabbf0e68768bba7a137989affb6  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/1.cc
! 4e3b709e20389771542fd06b2710eb14  libstdc++-v3/testsuite/25_algorithms/find/istreambuf_iterators/wchar_t/2.cc
! cef5228a988b2e781b97635cfeacb698  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/2.cc
! 8656f526cd39f342e9ca7abe56693557  libstdc++-v3/testsuite/25_algorithms/find/requirements/explicit_instantiation/pod.cc
! 7f8b96bb482bcdf159a0a92837ad99f0  libstdc++-v3/testsuite/25_algorithms/find/vectorbool.cc
! 60fdb060f764617d043621b56062c58d  libstdc++-v3/testsuite/25_algorithms/find_end/1.cc
! 54acb47f7447a966f694b009f59684bd  libstdc++-v3/testsuite/25_algorithms/find_end/check_type.cc
! 1c8c1790aaf8dd50c0a99782c10343c2  libstdc++-v3/testsuite/25_algorithms/find_end/constexpr.cc
! 0d02822ac72b23cfe0260d46edcd4bfd  libstdc++-v3/testsuite/25_algorithms/find_end/constrained.cc
! cfe2fab92091e3b823ba4de099ead40b  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/2.cc
! f4c00820fde6172d181037c934fbf494  libstdc++-v3/testsuite/25_algorithms/find_end/requirements/explicit_instantiation/pod.cc
! 85bb7cb22834abd8e0ecde83662d21cc  libstdc++-v3/testsuite/25_algorithms/find_end/vectorbool.cc
! 939736b84f14fae05b76371e353a2eef  libstdc++-v3/testsuite/25_algorithms/find_first_of/1.cc
! a1c0039da7936955ee8f379714404710  libstdc++-v3/testsuite/25_algorithms/find_first_of/check_type.cc
! 14474bc937ad50149d6897e4127276ab  libstdc++-v3/testsuite/25_algorithms/find_first_of/concept_check_1.cc
! 3f4b3b873592f2b506bff6d2c88b8f0a  libstdc++-v3/testsuite/25_algorithms/find_first_of/constexpr.cc
! deb47bf76c9dbb9d10dac0c29a9c112d  libstdc++-v3/testsuite/25_algorithms/find_first_of/constrained.cc
! fe46f1081fb943f2b52600e9623c0a6e  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/2.cc
! b38567b7e4cc5dfaff8615dff37f4757  libstdc++-v3/testsuite/25_algorithms/find_first_of/requirements/explicit_instantiation/pod.cc
! 48452f2f932e98bbbec3295cd239c071  libstdc++-v3/testsuite/25_algorithms/find_first_of/vectorbool.cc
! 2467cd32f3d478c9b814855337b1d3a2  libstdc++-v3/testsuite/25_algorithms/find_if/1.cc
! 93af67ff8dc73a70112414ffffc46ac9  libstdc++-v3/testsuite/25_algorithms/find_if/check_type.cc
! 20c4eb6a9890ebdc309235ee7b6d19ad  libstdc++-v3/testsuite/25_algorithms/find_if/constexpr.cc
! e727f24836acd327844258dd4f5cac57  libstdc++-v3/testsuite/25_algorithms/find_if/constrained.cc
! 2f28cf53ad4eaecd7fc7f4aaead476f1  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/2.cc
! f370722976d87324bf4136e6b1a2d4ca  libstdc++-v3/testsuite/25_algorithms/find_if/requirements/explicit_instantiation/pod.cc
! 7f8b96bb482bcdf159a0a92837ad99f0  libstdc++-v3/testsuite/25_algorithms/find_if/vectorbool.cc
! 699064079e10c24d3c568e5e0a5479ee  libstdc++-v3/testsuite/25_algorithms/find_if_not/1.cc
! 42b63ad7689dabb2fc3e28c09e4b8c9f  libstdc++-v3/testsuite/25_algorithms/find_if_not/check_type.cc
! 18f75c8efd662fd6f619ac883de6164f  libstdc++-v3/testsuite/25_algorithms/find_if_not/constexpr.cc
! 04294dc8b8a5ffef3ae8f089a40e0d24  libstdc++-v3/testsuite/25_algorithms/find_if_not/constrained.cc
! 7cc04e6fb475b4d0af1527044848f1e9  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/2.cc
! 5dfa21e396c4d7868bbe22a747b3400b  libstdc++-v3/testsuite/25_algorithms/find_if_not/requirements/explicit_instantiation/pod.cc
! e9925c94a012fa06b8ee9201d7e2d6f1  libstdc++-v3/testsuite/25_algorithms/find_if_not/vectorbool.cc
! 7e0c6af4883e655224ad7d89d991365e  libstdc++-v3/testsuite/25_algorithms/find_last/1.cc
! d46e270d7c1b32f7e50877f41614ca95  libstdc++-v3/testsuite/25_algorithms/find_last_if/1.cc
! 7cdb4c46a36afb9b5b7d7d44bed9f688  libstdc++-v3/testsuite/25_algorithms/find_last_if_not/1.cc
! 3c6ba0a4dfa90922d7d8788b0fcadddf  libstdc++-v3/testsuite/25_algorithms/fold_left/1.cc
! e35a15f727c0e375a2c4f012aca48b36  libstdc++-v3/testsuite/25_algorithms/fold_right/1.cc
! 2d98f1cc5b73de05dc64cb33090deee5  libstdc++-v3/testsuite/25_algorithms/for_each/1.cc
! 3666dc721f3c7ec7c3a136a776ff8ba5  libstdc++-v3/testsuite/25_algorithms/for_each/constexpr.cc
! f8fa499d12bb7b47bdce86c3c1c70811  libstdc++-v3/testsuite/25_algorithms/for_each/constrained.cc
! f999e4c50e92ca57d4adc6b8b9e3a97f  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n.cc
! 803c645b37d18ccec57f96363bad96ac  libstdc++-v3/testsuite/25_algorithms/for_each/for_each_n_debug.cc
! c310ada008a15efd1574ffb681dc72c6  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/2.cc
! ca3bb645d7de3c119b8a61646edebd6b  libstdc++-v3/testsuite/25_algorithms/for_each/requirements/explicit_instantiation/pod.cc
! 16d78d3f76318f510a21dd0785f1a669  libstdc++-v3/testsuite/25_algorithms/generate/constexpr.cc
! 0f7914a88fc98ddc8c5802b53319bdc8  libstdc++-v3/testsuite/25_algorithms/generate/constrained.cc
! 68235c0f54e7e3729a39fa35896d199a  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/2.cc
! ee63f4ed0d18602f40d8a0573095a8c5  libstdc++-v3/testsuite/25_algorithms/generate/requirements/explicit_instantiation/pod.cc
! 112bbc9ee412356f2e2968491fa4afe9  libstdc++-v3/testsuite/25_algorithms/generate_n/1.cc
! 6b16e9d672eaa680898cb8690e7d5500  libstdc++-v3/testsuite/25_algorithms/generate_n/25306.cc
! 101901f24f018ae14f4876645f972950  libstdc++-v3/testsuite/25_algorithms/generate_n/87982.cc
! 2eecbb7935d8dc12aba9cfb09b6caa98  libstdc++-v3/testsuite/25_algorithms/generate_n/87982_neg.cc
! 37d92f0c900d0d38c00534af99c9040c  libstdc++-v3/testsuite/25_algorithms/generate_n/constexpr.cc
! de5498cfb432c83e7d182cbc06fbf419  libstdc++-v3/testsuite/25_algorithms/generate_n/constrained.cc
! adc1da1c57ae7870897b8e65307eddd0  libstdc++-v3/testsuite/25_algorithms/generate_n/dr426.cc
! f48daf2593e974b73d3022703ba22826  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/2.cc
! aa6a0a429fccac87973dbdd1ccf49fc9  libstdc++-v3/testsuite/25_algorithms/generate_n/requirements/explicit_instantiation/pod.cc
! f6f925af162b1b802a5f816092c5bd05  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/algorithm_parallel_mode.cc
! 041ce8e148abd7fa56a5a4dc79bcfce0  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm.cc
! a49ffbbf60b04f585328796ffcbd21e2  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert.cc
! 5ad2adccedf8438775c81a62bf18ec59  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_assert2.cc
! bd88399164f274490bdde61546e3767e  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed1.cc
! 6b27a824db21bfe483a3b2df93c564d3  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/parallel_algorithm_mixed2.cc
! ba653746c69f93062d06e71a8a5f4fa2  libstdc++-v3/testsuite/25_algorithms/headers/algorithm/synopsis.cc
! f2e526b09bbf7c052e9f13cb02ac4961  libstdc++-v3/testsuite/25_algorithms/headers/cstdlib/functions_std.cc
! 97d1142bb2d80e070ec6f326bb6acd4d  libstdc++-v3/testsuite/25_algorithms/heap/1.cc
! 4ec8e98bf8c090caae540c916c83194f  libstdc++-v3/testsuite/25_algorithms/heap/constrained.cc
! f148ef12c908fa135dcab3156c81b89d  libstdc++-v3/testsuite/25_algorithms/heap/moveable.cc
! f5e2327b827e165bca69b775821d576d  libstdc++-v3/testsuite/25_algorithms/heap/moveable2.cc
! 2b58867e236e8f1ba11954a00049d08d  libstdc++-v3/testsuite/25_algorithms/heap/vectorbool.cc
! 4ad5779deaf232c2cfb2d538088a01aa  libstdc++-v3/testsuite/25_algorithms/includes/1.cc
! ba5103b41af64d3a19d65e6f5dbcce46  libstdc++-v3/testsuite/25_algorithms/includes/check_type.cc
! a74c3a05f8a7918f8b90c683cc2602c6  libstdc++-v3/testsuite/25_algorithms/includes/constrained.cc
! 4061cbb3590f51ae0734f16f335d6a1d  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/2.cc
! ddfbebedbd906092d46263893ffc8ef7  libstdc++-v3/testsuite/25_algorithms/includes/requirements/explicit_instantiation/pod.cc
! 7c130e82fd5b393794f37aa37e28cb2a  libstdc++-v3/testsuite/25_algorithms/inplace_merge/1.cc
! 2b5ecd46bee7db56ef8f473437ddd63b  libstdc++-v3/testsuite/25_algorithms/inplace_merge/49559.cc
! 6ee4a0fbac1b6af28aab8e0b843d92c1  libstdc++-v3/testsuite/25_algorithms/inplace_merge/check_type.cc
! 2cc579a16cd9b66d314566c90540dd3c  libstdc++-v3/testsuite/25_algorithms/inplace_merge/constrained.cc
! a85cd34fdcb5e54a541d3be4b3b4b041  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable.cc
! 2d46fad13a235de09f8ea7fa0f475b52  libstdc++-v3/testsuite/25_algorithms/inplace_merge/moveable2.cc
! 755c3750d744f825e72b097f92678317  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/2.cc
! 2023fa634065356f6ea0968abe064c7f  libstdc++-v3/testsuite/25_algorithms/inplace_merge/requirements/explicit_instantiation/pod.cc
! d18d6a10bee851ae4d1c75594365580f  libstdc++-v3/testsuite/25_algorithms/iota/1.cc
! a28ebcf5b90dd46567c9b38582c8a4bf  libstdc++-v3/testsuite/25_algorithms/is_heap/1.cc
! d8b91176a6344b7fa5cdaccd31cb0c02  libstdc++-v3/testsuite/25_algorithms/is_heap/constexpr.cc
! 8eb8f901643fb00613b7930a67521307  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/2.cc
! 8f9f4f3b424b458dcccc551eccd142cb  libstdc++-v3/testsuite/25_algorithms/is_heap/requirements/explicit_instantiation/pod.cc
! 20833529b56c65c978b09c1bdf505fcc  libstdc++-v3/testsuite/25_algorithms/is_heap_until/1.cc
! 1e1ae42ddd96a2f785fd30aceb95ac84  libstdc++-v3/testsuite/25_algorithms/is_heap_until/constexpr.cc
! 4f3e381a68db26050c8336fcc563e166  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/2.cc
! 56155ffcb04e4beae963ebe49e6573c0  libstdc++-v3/testsuite/25_algorithms/is_heap_until/requirements/explicit_instantiation/pod.cc
! 67d455467dbb5b7f5b2050facc42837e  libstdc++-v3/testsuite/25_algorithms/is_partitioned/1.cc
! 48c27236a6c3f1b7b88f7122c3956653  libstdc++-v3/testsuite/25_algorithms/is_partitioned/2.cc
! 26568e09ce079e96523b7d14cf91ea6e  libstdc++-v3/testsuite/25_algorithms/is_partitioned/check_type.cc
! 457da58dd4665126ee38c731777ffbfc  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constexpr.cc
! 1bb61a83fc59287aa69a43597d9d7724  libstdc++-v3/testsuite/25_algorithms/is_partitioned/constrained.cc
! 0f54e12384bc657a2da1d32ec59ed9a2  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/2.cc
! be9aad5457af948ea60a8ad4e4b3b152  libstdc++-v3/testsuite/25_algorithms/is_partitioned/requirements/explicit_instantiation/pod.cc
! fa24f7699d54865dec7259a08c7e4662  libstdc++-v3/testsuite/25_algorithms/is_permutation/1.cc
! 5b13a9734f1738d6dabdc144616e836c  libstdc++-v3/testsuite/25_algorithms/is_permutation/2.cc
! 8b8d99827127fdc251593cad57925eec  libstdc++-v3/testsuite/25_algorithms/is_permutation/64646.cc
! acd5a7a2a15e0073569cdcc1245a020a  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type.cc
! 94407288af818238e1963bfcf113c01a  libstdc++-v3/testsuite/25_algorithms/is_permutation/check_type2.cc
! bf0457e064b412e5321cb7abdedce454  libstdc++-v3/testsuite/25_algorithms/is_permutation/constexpr.cc
! b3df349844f402ddf2da56ca74458ba0  libstdc++-v3/testsuite/25_algorithms/is_permutation/constrained.cc
! 9f05872e16a9f4efd4f8c5fbd07d562e  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/2.cc
! 510e0094c5b2a140bae991c8303d8105  libstdc++-v3/testsuite/25_algorithms/is_permutation/requirements/explicit_instantiation/pod.cc
! 169c1bd417ce688fdcd66fb419b3f9ab  libstdc++-v3/testsuite/25_algorithms/is_permutation/vectorbool.cc
! 95dbed838462a54cbf2803a84b4b452d  libstdc++-v3/testsuite/25_algorithms/is_sorted/1.cc
! 807d113a3a02c9d10a8725e623ff4047  libstdc++-v3/testsuite/25_algorithms/is_sorted/constexpr.cc
! f8f439fd73522f4c9c389e78427cf43e  libstdc++-v3/testsuite/25_algorithms/is_sorted/constrained.cc
! ac5f0d81e45d51154046fc5f45748dc9  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/2.cc
! b91ea6cd3ec9dc41374a9b34dc29dcd3  libstdc++-v3/testsuite/25_algorithms/is_sorted/requirements/explicit_instantiation/pod.cc
! 8a3941a0f2d78ea9237a7428ce9c3da1  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/1.cc
! 7e2706377dbdef920df825934b21f3a2  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constexpr.cc
! 93be7cbee3bca85d34753ebb2e9c763c  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/constrained.cc
! 064af6185513822c5254ef4ccb44fd54  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/2.cc
! f0047294bd58a783016eca817742570b  libstdc++-v3/testsuite/25_algorithms/is_sorted_until/requirements/explicit_instantiation/pod.cc
! 08402dee39730bb38d2012cabaae5639  libstdc++-v3/testsuite/25_algorithms/iter_swap/20577.cc
! a31d0c87bc6bf54af30079d61d593d3f  libstdc++-v3/testsuite/25_algorithms/iter_swap/constexpr.cc
! 76e8d6386022b23c9ab185b09c6aa98c  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/2.cc
! de198867296e341cdf773d85ac12337e  libstdc++-v3/testsuite/25_algorithms/iter_swap/requirements/explicit_instantiation/pod.cc
! 3f8f97b4d302d50783d2620af4a96b79  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/1.cc
! 022e5d2577a18b158c30cb478bad47ef  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/71545.cc
! c7d22ef7c07a69c92066179260beb221  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/93972.cc
! f7b0be51aafae45bebd0e358c21bc360  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/94013.cc
! 9679032dfdab7c4a361f20190dada333  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/95578.cc
! 63c369c92e118ca49dea381f29b1c5a2  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/check_type.cc
! 7b4ce5f917b99dc0e025cc0115c08a67  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constexpr.cc
! 0f87ae3285f35dbf4cb2e46d96744a6f  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/constrained.cc
! 58f9a182378e6da1c08026617249d6cd  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/deque_iterators/1.cc
! b1a449ccb32a0a264d841cb7be77e70f  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/2.cc
! 690cb7765bed6fe88df169bf79ff4be7  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/requirements/explicit_instantiation/pod.cc
! f0b5cac939d18d126824dc4b64355130  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare/uchar.cc
! 06256947d7de04257118d42ce1585812  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/1.cc
! 937c47c9ebbb5f0ea137b5120adeff12  libstdc++-v3/testsuite/25_algorithms/lexicographical_compare_three_way/constexpr.cc
! 39bfd6a3194043d02813679ddc10fc58  libstdc++-v3/testsuite/25_algorithms/lower_bound/1.cc
! b3a5c4d22b09bb16074d8c3103e3be23  libstdc++-v3/testsuite/25_algorithms/lower_bound/2.cc
! 574b652160125c30f300f9f666799e53  libstdc++-v3/testsuite/25_algorithms/lower_bound/33613.cc
! b9bba14d514ea252a21f155c6d1ce457  libstdc++-v3/testsuite/25_algorithms/lower_bound/check_type.cc
! 68b6766f293f88ef71c37ab63294c200  libstdc++-v3/testsuite/25_algorithms/lower_bound/constexpr.cc
! 7ccf9f55296950fa4d2b295ca2ef1005  libstdc++-v3/testsuite/25_algorithms/lower_bound/constrained.cc
! 652b4aa294d92ba827aface3df8b58fb  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_neg.cc
! 1b556ae4448f0c3cdae20df15f6332c0  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_partitioned_pred_neg.cc
! 7bc43364d7ea2d6daef600721250d743  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/constexpr_valid_range_neg.cc
! 5ae0fd585c2909329bdcb25b753544e5  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/irreflexive.cc
! dccef73592398f6d33c233765de1ff16  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/partitioned_neg.cc
! 9255c1586f7b4b3bfece73a8971fb057  libstdc++-v3/testsuite/25_algorithms/lower_bound/debug/partitioned_pred_neg.cc
! 6a6de0c1a9ece3b5311d89f3fdc43f96  libstdc++-v3/testsuite/25_algorithms/lower_bound/no_operator_ne.cc
! 944308db803f69e48c887691461ec381  libstdc++-v3/testsuite/25_algorithms/lower_bound/partitioned.cc
! 3ae5d655268ad23c93fee787c5c3cb5a  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/2.cc
! c3f51d5c78676c64ceb2d504fb04cff5  libstdc++-v3/testsuite/25_algorithms/lower_bound/requirements/explicit_instantiation/pod.cc
! a4718db63d7807e4752725cd41cb419b  libstdc++-v3/testsuite/25_algorithms/make_heap/80064.cc
! bba0b5908249faa89996a2f6d448bf9c  libstdc++-v3/testsuite/25_algorithms/make_heap/complexity.cc
! 90d5ede629067e7b4493246dc3572edd  libstdc++-v3/testsuite/25_algorithms/make_heap/constexpr.cc
! 5c12b37de73d73c7b255573daa486946  libstdc++-v3/testsuite/25_algorithms/make_heap/movable.cc
! dc83c059b796d65843698cf93bffaa38  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/2.cc
! 60a3380dcd1ecedc164815936dc16c6e  libstdc++-v3/testsuite/25_algorithms/make_heap/requirements/explicit_instantiation/pod.cc
! d5549d277af403e895991271b86e2acf  libstdc++-v3/testsuite/25_algorithms/max/1.cc
! 7b5df0f24f1e831f14126c159abb6b08  libstdc++-v3/testsuite/25_algorithms/max/2.cc
! 208628c7f62c1894409c8194cf049db6  libstdc++-v3/testsuite/25_algorithms/max/3.cc
! ba824dd80ed6d4d80f374797a2e5ff30  libstdc++-v3/testsuite/25_algorithms/max/37547.cc
! 9ebe93e88cc07047b94b286639a36b75  libstdc++-v3/testsuite/25_algorithms/max/4.cc
! 73e9f4be8c8c252c7022ea1872548d56  libstdc++-v3/testsuite/25_algorithms/max/constexpr.cc
! 83ce11fa779fbb22771ec3f8d7472722  libstdc++-v3/testsuite/25_algorithms/max/constrained.cc
! a269633a12df8d87537d5a4b75765bfa  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/2.cc
! 7e7526e251d4ff89d74a05d1e0302680  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/3.cc
! 05cb60a50dfc2321cf3038d9d9cee532  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod.cc
! 98359ea4bba65ce127f7680f51f2dbfd  libstdc++-v3/testsuite/25_algorithms/max/requirements/explicit_instantiation/pod2.cc
! 57fe027d0c345d37fcb6eed7a4fb31cd  libstdc++-v3/testsuite/25_algorithms/max_element/1.cc
! cc349b23eebee97ffbdb760fa2910a58  libstdc++-v3/testsuite/25_algorithms/max_element/check_type.cc
! 2f8e45cc6891afb508842d31702536c3  libstdc++-v3/testsuite/25_algorithms/max_element/constexpr.cc
! 684c9bdd01a4c9927e72f8520d9a9a81  libstdc++-v3/testsuite/25_algorithms/max_element/constrained.cc
! 4e463fe3bbb49e96e6f4563422f8bed5  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/2.cc
! 7370804c79f2b2296228de7b98922e3e  libstdc++-v3/testsuite/25_algorithms/max_element/requirements/explicit_instantiation/pod.cc
! 94b7e600f9839b5d02f9f6ecf5dcf1f5  libstdc++-v3/testsuite/25_algorithms/merge/1.cc
! 4db7bc8c2fe039bc1bd6a053090710ec  libstdc++-v3/testsuite/25_algorithms/merge/check_type.cc
! 4f01955e3121688b1f124b62a8898936  libstdc++-v3/testsuite/25_algorithms/merge/constexpr.cc
! 46e0bc7611c9f9de5840822a0e3a0ba3  libstdc++-v3/testsuite/25_algorithms/merge/constrained.cc
! bd164139b9589d3c3e63603dba351c68  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/2.cc
! e759b9726257aa276bed74902989854e  libstdc++-v3/testsuite/25_algorithms/merge/requirements/explicit_instantiation/pod.cc
! c4a8104330546a3e537026c362bc8886  libstdc++-v3/testsuite/25_algorithms/min/1.cc
! 7cdbc97be6c8db7d54aa5f4451cce695  libstdc++-v3/testsuite/25_algorithms/min/2.cc
! 6c620bbb9c395dc2d9caaab3bfec4fb0  libstdc++-v3/testsuite/25_algorithms/min/3.cc
! 5b4244d590f5a9dcab329d172b9c3f49  libstdc++-v3/testsuite/25_algorithms/min/37547.cc
! 92db225ea4c7e62292117f26ff2f5578  libstdc++-v3/testsuite/25_algorithms/min/4.cc
! 04158badcd0320eea212421b1fa8bd2b  libstdc++-v3/testsuite/25_algorithms/min/concept_checks.cc
! 9b4825deaa6394dcdfe31adb27706c28  libstdc++-v3/testsuite/25_algorithms/min/constexpr.cc
! 6013af6fe2ce798bbcc02f614314a5ee  libstdc++-v3/testsuite/25_algorithms/min/constrained.cc
! 12f3a0c433f5b6f86ad6233ca21588a9  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/2.cc
! 75959fa8f83b0e3dd73172d4ab46b7f5  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/3.cc
! d87cf2d9a4f8705e0d329992600de5ee  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod.cc
! 3e15857f71a6f125a18345ef89040922  libstdc++-v3/testsuite/25_algorithms/min/requirements/explicit_instantiation/pod2.cc
! 5a9e3fcf15073aa1748a475789eec8aa  libstdc++-v3/testsuite/25_algorithms/min_element/1.cc
! ffdca9d8b8888d6d1386e6cfad94934b  libstdc++-v3/testsuite/25_algorithms/min_element/check_type.cc
! 67dc2c81f73dc2f304d51ed524370cdc  libstdc++-v3/testsuite/25_algorithms/min_element/constexpr.cc
! f20e8deb688bf193d30c4200e94eb484  libstdc++-v3/testsuite/25_algorithms/min_element/constrained.cc
! e51d5dcacd24dd2b96b86356a38e3197  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/2.cc
! 9f14f29d32bafedaa205737c3d757188  libstdc++-v3/testsuite/25_algorithms/min_element/requirements/explicit_instantiation/pod.cc
! 505e0e4549cc449d250eaabeebbf74b0  libstdc++-v3/testsuite/25_algorithms/minmax/1.cc
! 03c82a7ab50dece1d3718add156a3afb  libstdc++-v3/testsuite/25_algorithms/minmax/2.cc
! 2608627cc9163a40f4abaf9e6482a6ff  libstdc++-v3/testsuite/25_algorithms/minmax/3.cc
! 9f80e5d1e4a9983388b423a66029b874  libstdc++-v3/testsuite/25_algorithms/minmax/37547.cc
! b3b1d01d63fe24240a9f0f85c00e9dfd  libstdc++-v3/testsuite/25_algorithms/minmax/constexpr.cc
! 5e5bc52055810c45cb50b595c2f043f2  libstdc++-v3/testsuite/25_algorithms/minmax/constrained.cc
! 32eae5f7e5af167edb6b71792c5940fc  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/2.cc
! 306ded10a4c9dd8e4732567bad00d630  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/3.cc
! fa22215e6858e3659207b707d4f68b96  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod.cc
! 5bc295c55cd7a997cea058c14c10b095  libstdc++-v3/testsuite/25_algorithms/minmax/requirements/explicit_instantiation/pod2.cc
! 3c9f4d7591a5bfbb20b18f0cfe2445f6  libstdc++-v3/testsuite/25_algorithms/minmax_element/1.cc
! c45a2964c045a5db1396f4a0b5a3ff9d  libstdc++-v3/testsuite/25_algorithms/minmax_element/check_type.cc
! 011a062cb56fee0157f7d8b29bfd1aee  libstdc++-v3/testsuite/25_algorithms/minmax_element/constexpr.cc
! 6c0ee5ecb0dac0857418311b61de8617  libstdc++-v3/testsuite/25_algorithms/minmax_element/constrained.cc
! 54e18027b57b83450b37c34bcfebf023  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/2.cc
! af94646668ea4fa0c70d588d0715795c  libstdc++-v3/testsuite/25_algorithms/minmax_element/requirements/explicit_instantiation/pod.cc
! 38695b28c55aba030a9ebb921783dbee  libstdc++-v3/testsuite/25_algorithms/mismatch/1.cc
! b7bb0c051c39b4489a53a72ac7df5cdc  libstdc++-v3/testsuite/25_algorithms/mismatch/2.cc
! ba6fc08d76f0cfd27beb79b445cedfc1  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type.cc
! 15a1eb6af65f4499883e75942dd10c10  libstdc++-v3/testsuite/25_algorithms/mismatch/check_type2.cc
! 53496db09c56f7403b8edf8b7704c0c1  libstdc++-v3/testsuite/25_algorithms/mismatch/constexpr.cc
! 5708439e1733b5e8b3cc9ca67743b973  libstdc++-v3/testsuite/25_algorithms/mismatch/constrained.cc
! 40e8a45fd7ccef3c1363b88f59ff2460  libstdc++-v3/testsuite/25_algorithms/move/1.cc
! 4ae907818586f505a2d4d108b85aff1d  libstdc++-v3/testsuite/25_algorithms/move/108846.cc
! 1313c446b963da853508f219ea47cd4d  libstdc++-v3/testsuite/25_algorithms/move/69478.cc
! c1b10c439f8cfb8c7c09b01a66ca5ada  libstdc++-v3/testsuite/25_algorithms/move/93872.cc
! 9dd80d084c2a760183a852943d0b3bd6  libstdc++-v3/testsuite/25_algorithms/move/94013.cc
! 5b1fe6053dc70ae9a0996364e3f7d378  libstdc++-v3/testsuite/25_algorithms/move/95578.cc
  8a39c328d588445253bbfbd913a4260b  libstdc++-v3/testsuite/25_algorithms/move/constexpr.cc
! 1c607179988db8681bb6be0ff1d16cf0  libstdc++-v3/testsuite/25_algorithms/move/constrained.cc
  c41fedc68e3cee79d652221a1c6b2c9a  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/1.cc
! a417fe30d1623862ee00bba233ef5e94  libstdc++-v3/testsuite/25_algorithms/move/deque_iterators/2.cc
! 5ee4b06194077e736017cc9f10b004c4  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/2.cc
! 5a0293674ce442702a6ad1c6a8a16492  libstdc++-v3/testsuite/25_algorithms/move/requirements/explicit_instantiation/pod.cc
! 20f3efba2c15d8ab2139954b1a58e619  libstdc++-v3/testsuite/25_algorithms/move_backward/1.cc
! ad56a2e5738139bc09cd67e855d44a07  libstdc++-v3/testsuite/25_algorithms/move_backward/108846.cc
! 24606d02bd1f9ae398448705e0c24295  libstdc++-v3/testsuite/25_algorithms/move_backward/69478.cc
! 3c661187d0b5dc7fdf6e6b4f0fc73ba5  libstdc++-v3/testsuite/25_algorithms/move_backward/93872.cc
! f0ce7931212718242daa71b848cc4704  libstdc++-v3/testsuite/25_algorithms/move_backward/94013.cc
! 2c1f214bbcd18909d14dab7e3756d5c2  libstdc++-v3/testsuite/25_algorithms/move_backward/95578.cc
! d1f4afbe91e122031d04e6b422d8a90e  libstdc++-v3/testsuite/25_algorithms/move_backward/constrained.cc
  d798b4d62b339492aca582244b60767f  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/1.cc
! e158b8cd4536920792f94be152249ba5  libstdc++-v3/testsuite/25_algorithms/move_backward/deque_iterators/2.cc
! f6025503a9e582f1bb0dd35004b4df2c  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/2.cc
! c6736a375b5e90b0cd769d18ad0ec080  libstdc++-v3/testsuite/25_algorithms/move_backward/requirements/explicit_instantiation/pod.cc
! 10ff8861949fe33ca8ac4f4375697739  libstdc++-v3/testsuite/25_algorithms/next_permutation/1.cc
! a2782cd2067995f7f496516860963d33  libstdc++-v3/testsuite/25_algorithms/next_permutation/check_type.cc
! 0f6d14d65c572323a59e764dd8a89571  libstdc++-v3/testsuite/25_algorithms/next_permutation/constexpr.cc
! 02de96ac64696b2c844efaee5894be98  libstdc++-v3/testsuite/25_algorithms/next_permutation/constrained.cc
! fa14afa99026f6925a83eb0f3a46ac9a  libstdc++-v3/testsuite/25_algorithms/next_permutation/moveable.cc
! 7f9fd2cd45db9ef46e79e292583f4383  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/2.cc
! 9603bd3c4fb56f265fe02222ee54fdc7  libstdc++-v3/testsuite/25_algorithms/next_permutation/requirements/explicit_instantiation/pod.cc
! 85fbd2a14fb60aeb78a555ed600f3f62  libstdc++-v3/testsuite/25_algorithms/none_of/1.cc
! 0c9bf5706653991f9a5c0b637c55e013  libstdc++-v3/testsuite/25_algorithms/none_of/check_type.cc
! a60c1cbcd0d322dba9351ea05eb8ef5d  libstdc++-v3/testsuite/25_algorithms/none_of/constexpr.cc
! b9e5349ec99e102d2540471a29945390  libstdc++-v3/testsuite/25_algorithms/none_of/constrained.cc
! a102b9363c6cec9ef6e244d34f2cb09f  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/2.cc
! 1c0f6565847ae0a8a6818f013c492fdb  libstdc++-v3/testsuite/25_algorithms/none_of/requirements/explicit_instantiation/pod.cc
! 97958262e516638e0804441311842e2d  libstdc++-v3/testsuite/25_algorithms/nth_element/1.cc
! 59d146e840935695bd4cec554828d1bf  libstdc++-v3/testsuite/25_algorithms/nth_element/2.cc
! 55c6468c9d6b36622b3d93cfe35d0474  libstdc++-v3/testsuite/25_algorithms/nth_element/3.cc
! 58a996edd0317e1c4cab124ab3f21972  libstdc++-v3/testsuite/25_algorithms/nth_element/58800.cc
! 4b7c51ca775af4754807be686aa943c0  libstdc++-v3/testsuite/25_algorithms/nth_element/check_type.cc
! 117e2e420363ebf8108b35177f9478fd  libstdc++-v3/testsuite/25_algorithms/nth_element/constexpr.cc
! f7d16b21a29602a438ddbcaf498376b0  libstdc++-v3/testsuite/25_algorithms/nth_element/constrained.cc
! 79ac6f4fd39b91e343bf7c5c91ed135d  libstdc++-v3/testsuite/25_algorithms/nth_element/moveable.cc
! 704828754ce149d9c42959115b067999  libstdc++-v3/testsuite/25_algorithms/nth_element/random_test.cc
! 59bf65b8ba4c018ca14646812a42e729  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/2.cc
! 7e815cceae7dcdc8bd30b7689c71ea00  libstdc++-v3/testsuite/25_algorithms/nth_element/requirements/explicit_instantiation/pod.cc
! 58cbf40f78cea4d38006385409973eba  libstdc++-v3/testsuite/25_algorithms/partial_sort/1.cc
! f1755a17f22ab0d8b36170afcd859954  libstdc++-v3/testsuite/25_algorithms/partial_sort/2.cc
! 0fd29be76fd58fcfaf8de46fb3808ec8  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_compare_by_value.cc
! 1076f61f1827e714e7b8a6b0f0d3cf4d  libstdc++-v3/testsuite/25_algorithms/partial_sort/check_type.cc
! 76d68e3c06c7e9282362c0e94cfd73c9  libstdc++-v3/testsuite/25_algorithms/partial_sort/constexpr.cc
! 0b0b271e7449612216f86a9b2c061930  libstdc++-v3/testsuite/25_algorithms/partial_sort/constrained.cc
! 46f4a1509e17aa20942df3f78d7ef85f  libstdc++-v3/testsuite/25_algorithms/partial_sort/moveable.cc
! ce32f21f8de82eff5fe0e0a1ccb8cd5c  libstdc++-v3/testsuite/25_algorithms/partial_sort/random_test.cc
! aff0ca4a6bde391d0a7e7971ff0d48bc  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/2.cc
! c8edf74b0d6124b1eba56b4d9417d1a4  libstdc++-v3/testsuite/25_algorithms/partial_sort/requirements/explicit_instantiation/pod.cc
! 9491388c5ef849045a17f706c3b92060  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/1.cc
! 4dd88f61d1110d26040f8e3c68221770  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/2.cc
! 43b4e188887e00451062fe8a49ef4251  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/check_type.cc
! 15c992fcdfd85306e916a79acb53d7e8  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constexpr.cc
! 006e4761f63a41d63939e1f94373af6a  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/constrained.cc
! 65bdd65c7f938fdaadd0352270ca6015  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/debug/irreflexive_neg.cc
! c378fcbb85ad1ea7b96c4006a589adf6  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/random_test.cc
! c7c8f20e500cf3c1f09eedaec24279bf  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/2.cc
! 05ea86f5ba6cedf44f0715838efecc47  libstdc++-v3/testsuite/25_algorithms/partial_sort_copy/requirements/explicit_instantiation/pod.cc
! 13c1afd996307e2836ef7d6980257623  libstdc++-v3/testsuite/25_algorithms/partition/1.cc
! 11377208a19966997473b881019c9b9a  libstdc++-v3/testsuite/25_algorithms/partition/constexpr.cc
! 78a4d5f6d4f28cd6c2fccaeb5d7898be  libstdc++-v3/testsuite/25_algorithms/partition/constrained.cc
! 16449b68f0bb8525016ece312bf4b3ef  libstdc++-v3/testsuite/25_algorithms/partition/moveable.cc
! 7677225f407d32594a69dd38486b98df  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/2.cc
! 66db6dd93e2ae84a2296f0601dbcad2b  libstdc++-v3/testsuite/25_algorithms/partition/requirements/explicit_instantiation/pod.cc
! 1b747d25ab3e0dfb2d5b0b4ee7af4d8c  libstdc++-v3/testsuite/25_algorithms/partition_copy/1.cc
! a4db87cead88e14f13fae1123e86ff25  libstdc++-v3/testsuite/25_algorithms/partition_copy/check_type.cc
! 0dd6ab810c9f87b8336ec65c586d0c74  libstdc++-v3/testsuite/25_algorithms/partition_copy/constexpr.cc
! efbc1c090c2752b71b06cb269660205c  libstdc++-v3/testsuite/25_algorithms/partition_copy/constrained.cc
! 399501a0c4ef5f7424da09e4a4044f1a  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/2.cc
! 42989a0c511383945105fb2f698fa332  libstdc++-v3/testsuite/25_algorithms/partition_copy/requirements/explicit_instantiation/pod.cc
! 727e166f7009ac267bc7531edc83de0c  libstdc++-v3/testsuite/25_algorithms/partition_point/1.cc
! 15e7b96102b39e510f11b80129346585  libstdc++-v3/testsuite/25_algorithms/partition_point/check_type.cc
! 7581b413ac52445d78a4ff5b0745a563  libstdc++-v3/testsuite/25_algorithms/partition_point/constexpr.cc
! a7b35b29acc62b51c9163c90fabbba75  libstdc++-v3/testsuite/25_algorithms/partition_point/constrained.cc
! a34ef1f43993b678fb6fb449cd14e3ce  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/2.cc
! e76bff8b6ff400ed58e4d2cc77d23671  libstdc++-v3/testsuite/25_algorithms/partition_point/requirements/explicit_instantiation/pod.cc
! 4d8c00179113c481423fa2453f6b4671  libstdc++-v3/testsuite/25_algorithms/pop_heap/57010.cc
! 6ec4a29dcf4fa0db8988e414ac1cf8b5  libstdc++-v3/testsuite/25_algorithms/pop_heap/complexity.cc
! 77c93563049a0f18af2b0b9796944aec  libstdc++-v3/testsuite/25_algorithms/pop_heap/constexpr.cc
! 27ef09238392e39762713051d0bed224  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty2_neg.cc
! 79a5c7f0683ecb20f7ed0048a0f5275e  libstdc++-v3/testsuite/25_algorithms/pop_heap/empty_neg.cc
! dc1562adafd140c0a0f0902131e97761  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/2.cc
! 1b3a91f7859bcdd5c14d4ebab398905b  libstdc++-v3/testsuite/25_algorithms/pop_heap/requirements/explicit_instantiation/pod.cc
! 9a32dec253f017c8c24bd6a50290ba61  libstdc++-v3/testsuite/25_algorithms/prev_permutation/1.cc
! d2702f3aff5a385ae8b270700e65ac4e  libstdc++-v3/testsuite/25_algorithms/prev_permutation/check_type.cc
! d348a49755f6bc9531f56418670e1ee5  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constexpr.cc
! b93fa488859d466f4b67452de6f1bfa5  libstdc++-v3/testsuite/25_algorithms/prev_permutation/constrained.cc
! 16ef477417b20bc513152f6fb9fb4dbd  libstdc++-v3/testsuite/25_algorithms/prev_permutation/moveable.cc
! 2be66ea3748469735018870cb468b821  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/2.cc
! f223323c10204bdad985a1591a68fcbe  libstdc++-v3/testsuite/25_algorithms/prev_permutation/requirements/explicit_instantiation/pod.cc
  98051b5d40a1c205d048db33e038c794  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/inplace_merge.cc
  f73cdaa5ddf9a31b66aeb2163e20a984  libstdc++-v3/testsuite/25_algorithms/pstl/alg_merge/merge.cc
  905d47f4c72eacaf53a95bd14da1a0be  libstdc++-v3/testsuite/25_algorithms/pstl/alg_modifying_operations/copy_if.cc
*************** ec07921cf1d219cc2dc3de14726143af  libstd
*** 111161,113728 ****
  e2baf706b6b8f858b41c7d0a9e5b08a9  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc
  8af38b36f1e40e204ae2c21c405731a9  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/set.cc
  f0ac087e7a77dd84d45a6199d1b9a455  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/sort.cc
! 4c98d907db869747ace508e3249aa14a  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
! 16dc26c58f13df49b17afab4612e716a  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
! c8be0946566e983a0236d229704a1523  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
! be60fe758d82386ccaa966aafc76bb06  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
! 437c38c10b675bb24c5d9174bb9ffafd  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
! 3eaecc84fa74fda7681ac9d5fa60ab80  libstdc++-v3/testsuite/25_algorithms/push_heap/complexity.cc
! 16ce09da94a728b6a6598b781fc5aa07  libstdc++-v3/testsuite/25_algorithms/push_heap/constexpr.cc
! 6c5db64e22a6d556f551d03092eafaa8  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc
! 7b69dcdc35a76d124f79a50e8d897f18  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc
! e17f187a7d22403b9e51acc5d6560948  libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
! 95389f17583382590872e839f615c669  libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc
! 68eb66dda45ef787caf505cc37897414  libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
! 457bbbfb3a832042d307ad45f3813698  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
! e15292ccec7214c4903cf1450cb593ab  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
! ae8319d0e7b82102015821d7b3ab7bb9  libstdc++-v3/testsuite/25_algorithms/remove/1.cc
! 855e2af98eeafa2e6aba7d41466bd8b2  libstdc++-v3/testsuite/25_algorithms/remove/check_type.cc
! d03a9a33e08aeacdc3a9840a5e7b2442  libstdc++-v3/testsuite/25_algorithms/remove/constexpr.cc
! 7e8b67fd687769fc12c8c768e48be6eb  libstdc++-v3/testsuite/25_algorithms/remove/constrained.cc
! 31fef993d0ae80cf1075438cf7f7b3ab  libstdc++-v3/testsuite/25_algorithms/remove/moveable.cc
! 2273c10c1834a03c489cace4c0d40702  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc
! 799573ee63f643e193c0aee32dca55b1  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc
! 26b23a6228c61e17d1c8109c7de1a73f  libstdc++-v3/testsuite/25_algorithms/remove_copy/constexpr.cc
! c7ca33eb711e54ab80a88772e476327d  libstdc++-v3/testsuite/25_algorithms/remove_copy/constrained.cc
! 960db6ef31e8425bfbe9125633d77013  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc
! 22005e59a25504587b9bc00c57db2f74  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc
! 37451a837e38200093816c8378bfd88a  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/check_type.cc
! a0d7830d5297850b1468470c4dce2ed0  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constexpr.cc
! 6343db4bc30c416c8b4c2807f9aa970d  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constrained.cc
! ae8b07e1e8b37edb60f89852ec3cac2b  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
! 22e8d84ec3926253c2b937271eba87fb  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
! 186744c79e2e473156fa29b9ff2d1ffa  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
! d1739f12b365bceed63a82ef1eacbbaf  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
! 358b2d573ee390e751b2252a4847ac9f  libstdc++-v3/testsuite/25_algorithms/remove_if/constexpr.cc
! e650c1bd99ec954d9e947acafc6656f5  libstdc++-v3/testsuite/25_algorithms/remove_if/constrained.cc
! 43256d0b0f4d01bd6c12bb30f92a5aa4  libstdc++-v3/testsuite/25_algorithms/remove_if/moveable.cc
! 986fec6a24d6f5560886efd788ed03ea  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
! 971560ef4f4483f2b0f54f1e7838b962  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
! f849b55fa71445cd6887837b16a77afa  libstdc++-v3/testsuite/25_algorithms/replace/1.cc
! 6769e5eb30539783a1f3a18788dc558a  libstdc++-v3/testsuite/25_algorithms/replace/check_type.cc
! e5607202c18824b8a0526b2f99850138  libstdc++-v3/testsuite/25_algorithms/replace/constrained.cc
! 6287e50678cd6fe1d7f8e5b01eaa426b  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc
! 9d05e2210225f57501be310ceec851dd  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc
! 7295f94a8cf734d98c39b19fd781a511  libstdc++-v3/testsuite/25_algorithms/replace_copy/1.cc
! c98324ec7c80ebdff381d476e63d5634  libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
! 091f8c7fe4668007241f54aefd3e9a5d  libstdc++-v3/testsuite/25_algorithms/replace_copy/constexpr.cc
! ab528fb56c89f5a1b15564c2858607ea  libstdc++-v3/testsuite/25_algorithms/replace_copy/constrained.cc
! 843f4fb80b9ca6db1c41d191d0d6e4bd  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc
! 6f440ec581ec99dcec6c109f156fb29d  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc
! ee0449f86ffe8b1f8bd5e8c31fa0cbd0  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/1.cc
! f0f3aa6469bbc612f8d8d492fae23ea6  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
! bcfff11a08133684267bbe092929be0b  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constexpr.cc
! cc516084e2bbd1b283faa26184c44c92  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constrained.cc
! c8b36e56da7434be0f770b1dce995944  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
! 57ee5885020aaf5020208782a05cbe5b  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
! aea9ade262fe804c456b3afc0259790a  libstdc++-v3/testsuite/25_algorithms/replace_if/1.cc
! a2aca85817193b0b02e6de86a807593d  libstdc++-v3/testsuite/25_algorithms/replace_if/check_type.cc
! 3aa2abb753acebd66320bab444939440  libstdc++-v3/testsuite/25_algorithms/replace_if/constexpr.cc
! 8bfe1ba58f19e48e83cdbaa06adc21f7  libstdc++-v3/testsuite/25_algorithms/replace_if/constrained.cc
! 73ef936f37d0b4f13e7d6b75f29f235b  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
! 8977bce78d80b88ac5b4ecb71e2aecd4  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
  36f40bd4fda4eb8bb7b8c7178baddcb8  libstdc++-v3/testsuite/25_algorithms/reverse/constexpr.cc
! 94a81650bee5b243080a8b98d2e11e1e  libstdc++-v3/testsuite/25_algorithms/reverse/constrained.cc
! ab33202768fd6f2ab69613203f9a0ca7  libstdc++-v3/testsuite/25_algorithms/reverse/moveable.cc
! 89641cdab3d47245b85a2027081b5c0f  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc
! bb339d8466f5dac3b83e6689fd236b04  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc
! 61c1bea18ff33d8294b457ac3adc3923  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constexpr.cc
! 92e9c3e3367a9e6111915a9bf0e3e8c5  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constrained.cc
! dc6fe18d401ff3bbb30502b948e213c4  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
! 8576c4db92f8d5367bf37a4e39b26721  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
! af3bc354dccee8f2681bd9865e162008  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
! 47054952e142b5b82bfddfefb4f1c5c3  libstdc++-v3/testsuite/25_algorithms/rotate/90920.cc
! 4bccfbd5015fe8d9f792e0ddd015d078  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
  6e81a6e87bcee591a45269b5ef7edde0  libstdc++-v3/testsuite/25_algorithms/rotate/constexpr.cc
! 8d50780e6d19883a6958516a7bf2f0f0  libstdc++-v3/testsuite/25_algorithms/rotate/constrained.cc
! f88f381dcbe2ef09c89e025a24ab331b  libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
! 7bf0b1b4eb9555c805b1a99e9cba0361  libstdc++-v3/testsuite/25_algorithms/rotate/moveable.cc
! a1d9792a11a1085021d0309dd530c562  libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
! 5121d18003f6ba2274684928f58bc295  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc
! eb261529973b0098c13cae0f7d88ce4a  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc
! d96475bafc14929133ef20b894c942ef  libstdc++-v3/testsuite/25_algorithms/rotate/rotate.cc
! bf3d0fef2c5ccbddfc79a709b9d4dbe1  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constexpr.cc
! 5e12b37d61cc0caf1a8e7cb338c0cb24  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constrained.cc
! 7a4e9d93c8e6f0e22852382527715c86  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
! 0d2ac97cdc9c7291c5d4c8f25ce079ea  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
! c287e04a147bc96f6455816bca2f1937  libstdc++-v3/testsuite/25_algorithms/sample/1.cc
! 79b9836193ff6671c78740b16b6974d6  libstdc++-v3/testsuite/25_algorithms/sample/2.cc
! 7bac2155f5eff701907ae632557e24c7  libstdc++-v3/testsuite/25_algorithms/sample/3.cc
! d9f3cf509d1ab20e284b8e41d429a62c  libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
! f2f28d97bf1f5e654b619c0ccf64bf6e  libstdc++-v3/testsuite/25_algorithms/sample/constrained.cc
! 13a75b97ef710d30c1c16fc75a525164  libstdc++-v3/testsuite/25_algorithms/search/1.cc
! 96b32a8a5655a1c430b08d7de3b47cfa  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
! 00b6a89b1f33a886518d3c4c5e73b9db  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
! 983512c01033f2b6f5cfaa7aa1d67ef5  libstdc++-v3/testsuite/25_algorithms/search/constexpr.cc
! ce98f109a2d711276200d89ef9a4e249  libstdc++-v3/testsuite/25_algorithms/search/constrained.cc
! 65698f0df96c603b020b79098b7fb9f0  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
! 5c23badb26eb781d0ff8894cb83e88fa  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
! 58bc38bfdbf2ae5038450f312a783cf2  libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
! e181a1497392826e519c55f351e04891  libstdc++-v3/testsuite/25_algorithms/search_n/11400.cc
! 04835f032f77cd9c855361aafb55a537  libstdc++-v3/testsuite/25_algorithms/search_n/58358.cc
! cd25dc0c7d1671458502fd6eeec0d0d5  libstdc++-v3/testsuite/25_algorithms/search_n/97828.cc
! 787ac590b6d82c91a5d3148e5fb849ec  libstdc++-v3/testsuite/25_algorithms/search_n/check_type.cc
! 8d77f5b267ceed85eb833aeedf6b87af  libstdc++-v3/testsuite/25_algorithms/search_n/constexpr.cc
! 2752a51c8a77c8828398a0c4ff165ec2  libstdc++-v3/testsuite/25_algorithms/search_n/constrained.cc
! 1ca7c4ff26ec62be51b1b048e0bc055e  libstdc++-v3/testsuite/25_algorithms/search_n/iterator.cc
! b59078b17120279105c0c21e5fa1770b  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
! 6816e0877b18fabeebeebfef3505e886  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
! 431085ae88699f4f426b0845ce13934f  libstdc++-v3/testsuite/25_algorithms/set_difference/1.cc
! bdca662a9cf9a3b9804d7640fb45beb2  libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
! 827e1beccee39269aedcbbc34a967a84  libstdc++-v3/testsuite/25_algorithms/set_difference/check_type.cc
! c3fd3713de04f459ee16120859882ce1  libstdc++-v3/testsuite/25_algorithms/set_difference/constexpr.cc
! dfad33995987f753d42f29a8b69bde14  libstdc++-v3/testsuite/25_algorithms/set_difference/constrained.cc
! 97a30d18ed9f4bb08821df3c725c4600  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc
! 44eab1e42d83a08014ff50f94633e799  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc
! 4650275b408fb5dbddf9fd4f060bc2b6  libstdc++-v3/testsuite/25_algorithms/set_intersection/1.cc
! ffb04478770e1b03c93e91fcd6f9cc26  libstdc++-v3/testsuite/25_algorithms/set_intersection/34730.cc
! d4832c2d52dfbd22c6f3c5953faf5101  libstdc++-v3/testsuite/25_algorithms/set_intersection/check_type.cc
! c85e44413cd0a58467697e67bd9fffff  libstdc++-v3/testsuite/25_algorithms/set_intersection/constexpr.cc
! 98af89bf2e471034f2e1ca0d4708b66c  libstdc++-v3/testsuite/25_algorithms/set_intersection/constrained.cc
! 37598011f13383e733c7a30cf806f78d  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc
! bdca4cde5250e136ebf40f249521b360  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc
! 605ae0dfc0cb9bf310bc8fa656b61b00  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/1.cc
! f709cbe0db8909622af547339e03be31  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/check_type.cc
! 59bb12a3c90fcf6a69e4d610879f6823  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constexpr.cc
! 719b2d529b3e3b5017789740199e4ddf  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constrained.cc
! 6b5ced96da1736a8b41ea60a392ea0d4  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc
! d320de99a307e04a4692611ce4e62bd3  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc
! 753640ab9852c5f0954e10442ea388be  libstdc++-v3/testsuite/25_algorithms/set_union/1.cc
! 2eaa11193a691a3e9e46b61abc05ca29  libstdc++-v3/testsuite/25_algorithms/set_union/check_type.cc
! 9c8a5e4418dbc4b0b82f3dcf498d9384  libstdc++-v3/testsuite/25_algorithms/set_union/constexpr.cc
! b369c75bfc313dd46ecbf7012a84b9a5  libstdc++-v3/testsuite/25_algorithms/set_union/constrained.cc
! 44a5b5832723c19e207496da09f3ac0c  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc
! 11c04554dbe1ecbd9008fec5ad31f6cf  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc
! 63e567d29addc2eea535750f51dcfeed  libstdc++-v3/testsuite/25_algorithms/shift_left/1.cc
! 7edfcebc514fa09cdb7ff24fe1e8ef21  libstdc++-v3/testsuite/25_algorithms/shift_right/1.cc
! 3dced834074b53159a37c1fc67cfbfef  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! 09a165472d7a6616851dbaefb87e88dc  libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
! 77cce96e1f29be3ecb148d35fa836e28  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
! 1273bcad4f7c8f78183b37c25976b91c  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
! 489056a2543a47cefb03b23eb39507c4  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
! 522aa222f7ec7088529793b2995d9e45  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
! 04710fcf83cb01edd6c1292ae0a7aab6  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
! b266ff3fbd0c06dd642e19507c0f3610  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
! 392a1b4ee77b8d75792152818ef41f6e  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
! e0b622c2b13c5ab4f69522e477e67b61  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
! c50b0329fed84585d65fbfff137074db  libstdc++-v3/testsuite/25_algorithms/sort/constexpr.cc
! 7b36035abdab3d972ba94a3d0a6d8bcc  libstdc++-v3/testsuite/25_algorithms/sort/constrained.cc
! 7590fb5812d8440966242ece4784c7dc  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
! 7ddcb97c490f585f5e9a95b6165e6994  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
! 4bc8250f999e612df23a73bd5914ffc5  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc
! 1c61a0f8460c714ea216d31f216f7235  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc
! 2f26d24550c219b9a148c1fdb178c500  libstdc++-v3/testsuite/25_algorithms/sort/vectorbool.cc
! 4341946dbe5b33766f74dd637c42cfd3  libstdc++-v3/testsuite/25_algorithms/sort_heap/check_compare_by_value.cc
! 1c161bee79318a8a8390ab9940126f9b  libstdc++-v3/testsuite/25_algorithms/sort_heap/complexity.cc
! fe3c586739762fad3021d5973da79f89  libstdc++-v3/testsuite/25_algorithms/sort_heap/constexpr.cc
! 8c81ddd13e87d3e62402ad10502164e8  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc
! 8cc77d78b4137b09ada1ac6f1dcd2d45  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc
! 734989569cf41cec587aa1c5c885c912  libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
! 21054989d8583d49547af268e639f05c  libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
! 5d7b32b441fa7f315b35789db7ee56c2  libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
! 89e4a636ebcd32cf92fe655251f4a822  libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
! b9e1c1fb064c2b0a69498d03b48e8242  libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
! 1e3f3dc33d2c5a07326547fa8a05a283  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
! 637f5c18daa47fabc605b0b471c82db3  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
! 426edb31d0d30177871bf274a7b9a82b  libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
! a40c1fd2c27ecb06f891fe85ef2e10c6  libstdc++-v3/testsuite/25_algorithms/stable_sort/2.cc
! eb6515bc820112a6921c46a85ea77634  libstdc++-v3/testsuite/25_algorithms/stable_sort/3.cc
! 2a0a614d21046e8d44fc4fd831ae4314  libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
! a43623d9c73c02dd17da3025d03e02d4  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_compare_by_value.cc
! ab6bb215254ac520f1537c54c02a4655  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_type.cc
! 84b8d2a3ef6c6d84d821505ac327e578  libstdc++-v3/testsuite/25_algorithms/stable_sort/constrained.cc
! 5827f55a30409d61bc0afad36d488e8c  libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc
! 96bd8dd5e6bd4c29b1d5fea8036a63b4  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable.cc
! 341984adac2014c711d8a64ca3d46d81  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable2.cc
! e541183a6ea265e0eebfc75e4dbe8331  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc
! 13ee0f46ff5300fd7434cda36c2683a7  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc
! f1dc82dab6603ae8f7f6fe6eb586334d  libstdc++-v3/testsuite/25_algorithms/swap/68877.cc
! 0376a4924eadc175574a449dfe38fd11  libstdc++-v3/testsuite/25_algorithms/swap/constexpr.cc
! 659e707feaa8aded77f9b9da0a6ccc4e  libstdc++-v3/testsuite/25_algorithms/swap/dr809.cc
! 716ac89421e8d95ed50fae79487981b5  libstdc++-v3/testsuite/25_algorithms/swap/noexcept.cc
! 8269670e8c3e8043db77542f25027f89  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc
! 05e1543b737bae38bf8d1978452bb70c  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc
! d8a01c5a02300ed84711867b3f7d489f  libstdc++-v3/testsuite/25_algorithms/swap_ranges/1.cc
! f78d8dae4118a63486794e50f78b49be  libstdc++-v3/testsuite/25_algorithms/swap_ranges/check_type.cc
! deb6b96ddeb0cf81ed07e9e5719e0cf3  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constexpr.cc
! 9dc3c742798466b53bf44ac151bb86dc  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constrained.cc
! af53c53bf387165acf939860f3c65d4d  libstdc++-v3/testsuite/25_algorithms/swap_ranges/moveable.cc
! a37f7c96fd3fe23376645bf45f65fa42  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc
! 69c90eed21052ae3f48d9c3ed9d0408d  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc
! 0ba789502311df3ce33cc061217652d0  libstdc++-v3/testsuite/25_algorithms/transform/constexpr.cc
! 98b96de2aca71662ffb47affa47fb109  libstdc++-v3/testsuite/25_algorithms/transform/constrained.cc
! ff76b2152c4cd0b1d4b06874f164bec4  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
! e559bb518032186ccee5548bc6f05c1d  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
! c259994b35401046b2e9b654ce85906b  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
! c71784f8189a89590c43bc7d8fef45c5  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
! 3e7bc9b74cc63e1cb6bf1bfb2fa763bb  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
! 909b8d56e9fc4a56b4b6dbfaf7403c0d  libstdc++-v3/testsuite/25_algorithms/unique/constexpr.cc
! 73585eaf84054ddf9fdb06f13ce53237  libstdc++-v3/testsuite/25_algorithms/unique/constrained.cc
! d9c8820f92a77103e615f70f27e5b90d  libstdc++-v3/testsuite/25_algorithms/unique/moveable.cc
! 307410771063e8a92e6e1518b1b9be8c  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
! 2237a3f6225dc6ac1a54aed7820d1974  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
! 4d66c670087c19a5dc403f4eb308fe2a  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
! ca2f0595824f45388564cb2bbe26610d  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
! 868c4cd0a8564879443ddc0e2f9f8278  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
! 991504b3e0da45301b5703f3402f672d  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
! 48f8c9e4897d57959c89971ae8cf2779  libstdc++-v3/testsuite/25_algorithms/unique_copy/constexpr.cc
! de4bddd14275d7386232ef7b3832702b  libstdc++-v3/testsuite/25_algorithms/unique_copy/constrained.cc
! d0af0d454e7e36794f9664e395f1e894  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
! 9557ed3d952b3e08023ae999d115e419  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
! 4ef521999be7c7e4332c19bd549f86d9  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
! bd693c10f6b44e105e417aaa38cd3d9e  libstdc++-v3/testsuite/25_algorithms/upper_bound/2.cc
! 359d9a605f32ee619e23d9c3b1e80f72  libstdc++-v3/testsuite/25_algorithms/upper_bound/33613.cc
! 39c093193d42667c692032cb753418b6  libstdc++-v3/testsuite/25_algorithms/upper_bound/check_type.cc
! c330e7512de7deb352251858a4d67f47  libstdc++-v3/testsuite/25_algorithms/upper_bound/constexpr.cc
! be7fa17b458901d2f5a6e009a6c14e58  libstdc++-v3/testsuite/25_algorithms/upper_bound/constrained.cc
! 599f2ec3134196e21e2ae5f2ed73047f  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc
! 8909e1e7a10dd67a60386c4e4b6e4bf6  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc
! a287e4246866f174a4670e66c680bb49  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc
! 8829d38e91cbbed013aa904b59460824  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc
! b0e46ed3342611a40f5a86f27c6eceea  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc
! d4ce3ae9768fd0643c9d82dba0713e17  libstdc++-v3/testsuite/25_algorithms/upper_bound/partitioned.cc
! e0cc020fa772f9adeec70b420037a1f6  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc
! 54a78de1587310092bde1b2faa21cead  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc
! 386b5b7d2d5f65c31f13b2342b835342  libstdc++-v3/testsuite/26_numerics/accumulate/1.cc
! 357d2b31800349a0a367015a7024ef18  libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc
! 9c44befb20b25e5dc49b30c8664be374  libstdc++-v3/testsuite/26_numerics/accumulate/constexpr.cc
! c657965c617b82730b5f0fa1814f3751  libstdc++-v3/testsuite/26_numerics/accumulate/lwg2055.cc
! ccbf2e5cc23c2aa5f0d4d63a17820e35  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc
! 13650a564d61858100e81855d71161e0  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc
! bd565e675e343fc3a7a050835c85232a  libstdc++-v3/testsuite/26_numerics/adjacent_difference/1.cc
! 9fb97983f736fac6b2bdb878bb42e4a9  libstdc++-v3/testsuite/26_numerics/adjacent_difference/constexpr.cc
! a3e6a999d687b8bb9f070f634c2ae01f  libstdc++-v3/testsuite/26_numerics/adjacent_difference/lwg2055.cc
! b80572101bfa4b1fd0cd3e67cc5f47d0  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc
! eb4dd2d78e72fda37b3cf25f9bc378c8  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc
! 7c5ec3accdf008dd52a098a858e5d9cb  libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/byteswap.cc
! 272e494053910a3abb574594eb316854  libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/version.cc
  874b969b1c6b476310e9a3d96f5b948c  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/105027.cc
! 36862c5948af15f954b8811846e256cf  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc
! df2e03347fe8b5674d95768c9be2c687  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc
! 158ce0c93e626851bd6f545573e3ca9d  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_one.cc
! b96eaac2ab96e0042d825e612e5c26f1  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_zero.cc
! 9a8b9ed67e66ea6e51c078e5451739d7  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_one.cc
! f12f3f1aec1443265c55de2e9a37bd20  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_zero.cc
! 42d969cfde890299518811955d0ae6ec  libstdc++-v3/testsuite/26_numerics/bit/bit.count/popcount.cc
! a9b559a81a1dcaf9c7691ff59966c666  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc
! 16609bcf3ebc847efc82355b5616fd9d  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc
! 7ca1b3d015d5f4c3e2b3e02134dacd1a  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc
! 0031f6d14d837ca76aa02490cab6d076  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_width.cc
! 249347481c7c62ad919c1672144d0b92  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc
! 08db6f1c252a96e34a6cf93c5aa2bb6b  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotl.cc
! e0500aa93da098589b21b84938353532  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotr.cc
! 0029a12251f0dc321754225aaae1bdee  libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
! ab24341d27c3b6a76aa235a813b13e74  libstdc++-v3/testsuite/26_numerics/bit/header.cc
! dbf9e215ffc2fa593a80722718b119ce  libstdc++-v3/testsuite/26_numerics/complex/1.cc
! 1bf8dcd6d3b5f20e15e148ffc801fc45  libstdc++-v3/testsuite/26_numerics/complex/13450.cc
! 7adb22aa22e5eea0e35a0a7fad582597  libstdc++-v3/testsuite/26_numerics/complex/2.cc
! 0475c47ecc35f17fcf095dfba241c696  libstdc++-v3/testsuite/26_numerics/complex/50880.cc
! 01360db2a5ea66ee7c45467a9114b072  libstdc++-v3/testsuite/26_numerics/complex/51083.cc
! 30ca921f38f39bb7b602932745de223e  libstdc++-v3/testsuite/26_numerics/complex/56111.cc
  af7877b96aa74cdfc7f025c671e3d6c2  libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc
! 2e75ec5ddaf046bd93a5432893751e94  libstdc++-v3/testsuite/26_numerics/complex/buggy_complex.cc
! 7294d9309ea6f19c98563294fe4d726d  libstdc++-v3/testsuite/26_numerics/complex/c99.cc
! 578e5efdaeef1134072f8c491182f970  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/constexpr.cc
! 933be520472b5d6bdfba8aacd2410941  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/more_constexpr.cc
! 3ee175acfa6138b5ec35cbc8fede2ccc  libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc
! c3a640eb4a8e8c4738fe11f70c774fb1  libstdc++-v3/testsuite/26_numerics/complex/cons/48760_c++0x.cc
! 17a97ab6f29dd0cd7c2b620abfa6ba22  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
! a0c73a37bb821b24aa7aa0338e12fdf6  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr_primary.cc
! a2e7e3d757e87c3565db6d85edd0b357  libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
! 446978363b218104f09bee9626cbc0f0  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
! cbee9dd99196127ae76d0425199e0241  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
! be396c2e02fb6394b04c0a0756b89a14  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
! 537f6dc95dfc99dd358c51597fe3695e  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc
! 2e1540dbaec62582d484f8055db67633  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
! 828e81cc55b3b8de5d7b140680c9ac73  libstdc++-v3/testsuite/26_numerics/complex/literals/types.cc
! 7e99a430f22f68827ee7e94a91253509  libstdc++-v3/testsuite/26_numerics/complex/literals/values.cc
! 282bf5cda5c68831f706d6ace601bd91  libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
  906619ecf0877a7ff5302dd409c34714  libstdc++-v3/testsuite/26_numerics/complex/pow.cc
! bfd1c0a4378d1502e85445386ac57348  libstdc++-v3/testsuite/26_numerics/complex/proj.cc
! 1ca900790222f1ab2ab5e3e9cb090380  libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
! f482433172bb26401e3e536b842c6174  libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
! c47ec3d1b7ec8c1b381b4a7f491fbe3e  libstdc++-v3/testsuite/26_numerics/complex/value_operations/1.cc
! 50261b91bce5a66099d3c269353bf33e  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr.cc
! 8c6eaecb6330c6664895043095e4cb0c  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc
! f502830eb979ad1638527290e002288c  libstdc++-v3/testsuite/26_numerics/complex/value_operations/dr387.cc
! cac2245cc8a6a89193003e3beec0866c  libstdc++-v3/testsuite/26_numerics/complex/value_operations/more_constexpr.cc
! baacc096079cb44331f4698912382da7  libstdc++-v3/testsuite/26_numerics/complex/value_operations/pr88341.cc
! 2675b5fd7b9bf6d893670e71ccbeb3d9  libstdc++-v3/testsuite/26_numerics/endian/1.cc
! 6a73b94307051b67394a74bdfbd1d3b0  libstdc++-v3/testsuite/26_numerics/endian/2.cc
! 047b929def8fa83abf5345aeb0d613a0  libstdc++-v3/testsuite/26_numerics/endian/3.cc
! d1b8bae261145f62ffa342475580a444  libstdc++-v3/testsuite/26_numerics/endian/4.cc
! 9fda068ec70c8d2089af90da3c51844c  libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc
! cbaee11a2e976e9ff643fea0dd71394b  libstdc++-v3/testsuite/26_numerics/exclusive_scan/constexpr.cc
! c8c798942fd53ca258f383828adca8b2  libstdc++-v3/testsuite/26_numerics/gcd/1.cc
  50d80887b49e18b929dd57c20f038646  libstdc++-v3/testsuite/26_numerics/gcd/105844.cc
! 20f3774ba1aaf6e7a4b66b57040a4715  libstdc++-v3/testsuite/26_numerics/gcd/2.cc
! a0c745f1c47af2a2ec7553fcf4bda762  libstdc++-v3/testsuite/26_numerics/gcd/92978.cc
! 179763fd6e8afb48ba892638a15f9b43  libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
! 8e56e75f786ab9ab2b33aa9fcf9ca243  libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
! 87bce82be6d927c520d1e63ad8201d35  libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
! 0b98f8f9c557d52570ae7d3bd942e73d  libstdc++-v3/testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc
! f53a33be373104096efc8d1ca2ecb454  libstdc++-v3/testsuite/26_numerics/headers/cmath/14608.cc
! 71eabdcab36bca2d627d3d4c095a9332  libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc
! 7285381b30b10361b3c8acaf5850d5c0  libstdc++-v3/testsuite/26_numerics/headers/cmath/25913.cc
! da72600ab18109af51e953c960487975  libstdc++-v3/testsuite/26_numerics/headers/cmath/37582.cc
! cec2b8fb3753911b97a9f092753d2254  libstdc++-v3/testsuite/26_numerics/headers/cmath/48891.cc
! c0f369fa299114b391833bbe4d98726b  libstdc++-v3/testsuite/26_numerics/headers/cmath/51083.cc
! 8662602f0c9d798d7145836a37452f6f  libstdc++-v3/testsuite/26_numerics/headers/cmath/53503.cc
! 4952f3269f85c2cf16e33126543c008c  libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc
! 9e6c9a11b754ad50d167bbd0d4dd18c0  libstdc++-v3/testsuite/26_numerics/headers/cmath/60637.cc
! 6e844330259f4b614fab136b5c0fa07f  libstdc++-v3/testsuite/26_numerics/headers/cmath/82644.cc
! e333c356f55f8a7bb1479053f01bbb41  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
! 245612e2d7ebc1471ed9f23b7e5b0282  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
! 5517b274251d87eabb8bd589c68803cb  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
! dd5d287d01314347250823d1342b3989  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math.cc
! d3ba05dcbfa6fd68204c6437c4bb4c47  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math_dynamic.cc
! 797b44e5c81659cdd1457ac3bf4d72ac  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192.cc
! 9ea933f9b646fd8ca3bc8527288be769  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192_neg.cc
! d77d7a9ff7bbac4afa9327f1577561cd  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr550.cc
! bc986b2bf9dc791ac63a39f00bd82fc3  libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
! 9f548eca518a04f135b14fdcab48ebf1  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global.cc
! cf29953c8ee36712f76a9dd9fbf9c189  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
! 0cf5ef3201027434825804b6d1ccfcb5  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! 27e426710dd09389fda8e552ead3e05c  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
! 9ec5137c2074f403a462dd29e0f1ba04  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
! 17b32eb94b1231f12b1b5ad6de403367  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
! 74867ea490331b4f3b144252611ee520  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
! 60a4f2b0797bc9ed950e19c5255709c9  libstdc++-v3/testsuite/26_numerics/headers/cmath/powi.cc
! 60d3e08f09fe8ccf6166d66d8faca008  libstdc++-v3/testsuite/26_numerics/headers/cmath/special_functions_global.cc
! 299655ae835f1a756ca425472a7dd541  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x.cc
! 1e3de2169296ed149bbef0875f324ea8  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
! 5fec9c425ddaba510b56666796de925e  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h
! 9cc445810bd002c24e8448827eb6b8a4  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h
! 610f7b3c8ac235008d5a62103ede0f3d  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h
! d2a1864873297c34ab7ffae9b1f26cac  libstdc++-v3/testsuite/26_numerics/headers/complex/synopsis.cc
! ae46842408ada5bbfc162c40255a619e  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
! 784618f161904bbdd250565ea43188c8  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
! a93ca6134bead3c181690414b19a2b8f  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
! dbd10a42b5b922f2cf3c2efacf8cea91  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
! 0b012c8f7279914481999d551141be71  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
! 8a96f04c964bd942c29a7297a2138556  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
! 3d5449f277f2eb014ab7741dc0566b1e  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
! d864aab8d54b4e5fba2a2f8f6ff779c2  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
! cf36370a9fe688c9270e588df7733576  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
! 536dd3420e891f0ba7f895802d0bbb85  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
! 016e533beb0bff4a5243bd9ba34d2555  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
! cb1b3bb9fc531f0e1f0106639f3e106c  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/complex.cc
! a653ebdcf810c39fe808aa9f3d9b6f22  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
! 8c68add672590a9846bd87d15a20242e  libstdc++-v3/testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc
! 3aa71cb8f996b3fe1d11cf57e027a781  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric.cc
! 6272acf24bfb98c68bacc49b958fdf73  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
! 1c8c6cfb007015539bf5618d515591ba  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
! fe4eabf3c13462317e92d8c25e21c448  libstdc++-v3/testsuite/26_numerics/headers/numeric/synopsis.cc
! 7db8caf475bb28385b70273738a909f6  libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
! e84e39d25eeff82ff832ff57205fb5df  libstdc++-v3/testsuite/26_numerics/headers/random/types_std_c++0x.cc
! 4540a095c52cf3dde7b50ecf22defb75  libstdc++-v3/testsuite/26_numerics/headers/valarray/synopsis.cc
! f837b36ad90c049519c732360e79b5d3  libstdc++-v3/testsuite/26_numerics/headers/valarray/types_std.cc
! ebaa4e28ac78226dd972d5754a6f4f1d  libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc
! 048f17258d6977ff7403ade4449733f9  libstdc++-v3/testsuite/26_numerics/inclusive_scan/constexpr.cc
! c3e3be157befba058593d0c5d9d52875  libstdc++-v3/testsuite/26_numerics/inner_product/1.cc
! d81a287736a1cb6947a908ea5ab4851a  libstdc++-v3/testsuite/26_numerics/inner_product/constexpr.cc
! 87a026c698ee05ce17a133fba0ecf1c8  libstdc++-v3/testsuite/26_numerics/inner_product/lwg2055.cc
! b9eb6805b5a413f5c586ff050dc5ce64  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc
! c65357baf5f97cf4a144b1be1730a2a3  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc
! debd49c88295fd8d3eb400453c6e6bf9  libstdc++-v3/testsuite/26_numerics/iota/1.cc
! af5434540c28b231aca67b9658d0c507  libstdc++-v3/testsuite/26_numerics/iota/constexpr.cc
! 763c28d0914ddd167593a643c01e91d7  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc
! c0e9d63e905b1657bef80e7a0dfbcbf5  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc
! a792065c89c3e0e239f6126bc4ecf6af  libstdc++-v3/testsuite/26_numerics/lcm/1.cc
  37db28e85bc57ea43b5a022211e015ad  libstdc++-v3/testsuite/26_numerics/lcm/105844.cc
! 9dc6039e7c6a985fc9fe28fe389c010c  libstdc++-v3/testsuite/26_numerics/lcm/92978.cc
! b558b52f309d7cd25082fe7962baf08d  libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
! ce26eeb963a4a061af11ed25ee772bb7  libstdc++-v3/testsuite/26_numerics/lerp/1.cc
  f9ae973e3d6f85f4c35471e62402ba98  libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc
! 198cb21048f5d36f6a9bf84a5b2dd536  libstdc++-v3/testsuite/26_numerics/lerp/version.cc
! 9ea41d39878f522ab6e4fc7858d0236f  libstdc++-v3/testsuite/26_numerics/midpoint/floating.cc
! d479336c3018dfc62c2b93201435e858  libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
! 375974e43bd673392cf67566507fa62f  libstdc++-v3/testsuite/26_numerics/midpoint/pointer.cc
! 193bbe0a5401e54397015a81108440a1  libstdc++-v3/testsuite/26_numerics/midpoint/pointer_neg.cc
! 198cb21048f5d36f6a9bf84a5b2dd536  libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
! 028da2ea4a37977ed09461bfadf9f6cc  libstdc++-v3/testsuite/26_numerics/numbers/1.cc
! 303116a2844696fb5f4603b11307554b  libstdc++-v3/testsuite/26_numerics/numbers/2.cc
! ad5b4c6aa3381b0e2c0ada3f0f92ac1b  libstdc++-v3/testsuite/26_numerics/numbers/3.cc
! 8ee891e33b6c8b936bb263195fea62a6  libstdc++-v3/testsuite/26_numerics/numbers/float128.cc
! c99ce4228761dcf882dde310f46f1269  libstdc++-v3/testsuite/26_numerics/numbers/nonfloat_neg.cc
! 78dad66b28fe910561250aee74f47353  libstdc++-v3/testsuite/26_numerics/partial_sum/1.cc
! b399abc454137644463e6faaadf7d34d  libstdc++-v3/testsuite/26_numerics/partial_sum/constexpr.cc
! 0dc2524d4c58c5aac8078b347b5d43d8  libstdc++-v3/testsuite/26_numerics/partial_sum/lwg2055.cc
! bc07796e3dc71ee908b6cf1de3fb0243  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc
! 1e2fe2c58bb2c27ff9e062a12fcabd9b  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc
  862f4f439e8707b32a42b5fe736946a5  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc
  0553df89726830b7195d3dc76149d7b4  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/reduce.cc
  e7d03e915035104e8c34f0e1a253cea1  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/scan.cc
  371296694e234040b308e95ba965691b  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc
  37a9d3638006b842a59994327880b85f  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc
! 2203e7f8542c0f2cb67b91452f9cf175  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc
! 3e10f6694b66f03433216378f82c9671  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc
! e1bf80a338778b1fd8021c6b11da10ae  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/equal.cc
! 5af0ecc5aace469cd6c0eb7a0c03fdb8  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/inequal.cc
! b9ff898ef20784b6377f49a4d59b41a6  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc
! 4b853a99f87112f77eafffaa3bfb20c3  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc
! 16b9633198c3d86aa670e0dd71c6cd44  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc
! 52875fd9eae59363d5913f23adb00abb  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/default.cc
! 3a3b0f3a56ffb11148ee1135661a15a8  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/parms.cc
! 7093745def550fdfc5322966ccef382f  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/equal.cc
! 99dfa4432682bfbf18409fade8f7df70  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/inequal.cc
! e0a2cb3440c2988fcc22e86e69df44d1  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc
! 4ecabc446b173c36774ff5a92a38161f  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
! f314b4be69aa5dd754c860cc35f3837d  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values2.cc
! 27ec5b03d3cb51804dc4172c7e51032e  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values3.cc
! f82da3bdd2fdd46b7a33696d4a1f9dc8  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values4.cc
! ac3dbc9ef40e1a103b829211826d4178  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values5.cc
! d48590dd54559ec9c4c8a6b3cca7c11e  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/explicit_instantiation/1.cc
! 9c2d251b7c8edc0dc7d1018089efbb27  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc
! d75641e432f995279f622cc53789cb65  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
! 335118bbb7195d6accbe6bc7573a1d4c  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
! 4a933dcafd8be1e3f2f7f07b2a84bca5  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/equal.cc
! 4f6bb6f3c27c60514556bdd40585ddff  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/inequal.cc
! d4c45d17f6372e0c006c54cd49ba82ba  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
! fb62e1676c59c74e8de9e61635c64d26  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
! 5a3efee2feb921ca4cdfd1cce3ce5c6f  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
! ea321047810909ee9700782e3c06d2de  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
! 1d778d8cfa631737c9707fc98c659bc6  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
! a3dd27c28de2f65ccdc09acde0202c67  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
! a467028281a3ef9bc58e6722ff7a763e  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
! 7dc4a5444410498fc9f53bb316c6171e  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/inequal.cc
! c704a0cc08deb919168713401ed2a268  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
! a924b17324a440d5c4defc5601db4aed  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
! 27385bbd14212f30b5bfe59a2ee26d36  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! 13cc273a96c92b617c2aa150b636760a  libstdc++-v3/testsuite/26_numerics/random/concept.cc
! 2f9e8499f05199ad2c6b413c97874bae  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
! 4de8f0c2278d1665bfcbed78202232c2  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
! e6b651b7b368d88bb81d91ffd9e238a4  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
! 58b6883ab9bf99a59320a86ef537aa30  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
! 4fba0e8b35ffd9fb6b55380abef3390b  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/copy.cc
! 5e97a7d7448b5fa42730083af53289a8  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
! 0ee1fce83742dd8b57fb4339a7dd6e41  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
! 0be23929e99cf51299ecc58523167b54  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
! 0e594f34cae8d50bcb221949b15e6e4f  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
! 33a82f5a26fb28102494e4a04328b4a5  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc
! fb9ef3b3809407a706b078b8003bc91e  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
! 578715308efb1ad96084bafd580fb7cb  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/inequal.cc
! e3eebedf4ff1789cd72c78ae336875e0  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
! 0e069c82f5fdab9649c448fca405bd97  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
! 56860fe00d87ee050ba91533af166da9  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
! 31978b18c0b0ee7bad9ef83324d44b05  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
! b8a417e82ca014bed61ec5c65ff9a6b2  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/default.cc
! c41e215d60fe029647bbf4494380014a  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc
! 0f831d3bb84f5d7b5f8c2329d81895e8  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc
! fdfb7cc9d88816d6d961541bc0db16a3  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/range.cc
! 4197241ef5d86bfdec7b0b9c88f959d9  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/call-default.cc
! e79b57740b8510754257efd968d25931  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/equal.cc
! b8c9068268ead40f7e01dfe6a66eb5a5  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/inequal.cc
! c9572f64380ffa02302588fe6239e684  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc
! 1d90164e6b6bff6de436d1f8df08ad10  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/values.cc
! 99438d81cc86ecc2e8b1a8fd9773205c  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/explicit_instantiation/1.cc
! fe5f184a0b38ef84b1087b8c2d65c251  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc
! 2035a3969d616d54f5e945ae1e5d2a5e  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
! f842d93c8ee663bfd547a0b9a9ccdbe1  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
! 53d8b46544c6fd3857bca886d6bdd8b1  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/equal.cc
! a3ffc77bdac58fe7d4cfd6020490dc93  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/inequal.cc
! 092acfd426ae67fa8ca5af3a7511c5bc  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc
! a444a2152b9234f728189692c8fe0734  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/explicit_instantiation/1.cc
! ea3ff471edfd41ffc9312076b2ebdfe5  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc
! 52722206d1950407fe6a6817f83b6301  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
! 76a5c0e8835dffdc9d26d78214aab380  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
! fd3630826d049fc89557a681f55ab362  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/equal.cc
! b5bf9685f4c542daea35552eb5fc3b80  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/inequal.cc
! 0f6550634f29f81ba84eca73bf4c9f6e  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc
! e333e408e17890a6d1fea2a93419bca4  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/explicit_instantiation/1.cc
! 094f8c39c5208c5461309977a09bb16a  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc
! bcc4fdd99cd00f4079ad261c10559460  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc
! ccd98d6e55928c46977c2fe49c0af81c  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc
! e2e365b5bd83f951f059ced8ac6a37cf  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/equal.cc
! 48f9b5f3ee04302d556e407c6e9d19d1  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/inequal.cc
! 7150730fb538eef2a29b4fd07d1d0cae  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc
! fe8010c16088015a2d7b4750b11f2124  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/explicit_instantiation/1.cc
! 879c8e2ba33583c6c1639ef34252c5fa  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc
! 753573cfa5dc2f87dce14835ae382112  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/default.cc
! 699fe9bf87fde198af94aa229403656d  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/parms.cc
! c1428344564eb0f06ff8441a74bfce68  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/equal.cc
! 72aa8b7d3bcb0cb57c36f7f3baf160ab  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/inequal.cc
! 9e6ee8421df403fa6916f85232028a03  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc
! f15fe20e7a74052a8f2303304909f164  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/explicit_instantiation/1.cc
! 9c16d784e4fa10766a8519d754f2fd28  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc
! f37209d3888ac687451bae8a697f9bdc  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/default.cc
! d498bcdb8e937629b9dcbdda9105273b  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/parms.cc
! 69d9a4fdf43398235e1332fbdfbd75c1  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/equal.cc
! 7cbac679e21a60f2011eacb571225d53  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/inequal.cc
! 4d8ab551a7012ad73912c1cbf91714d6  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc
! 64fef65e253ef085a7a689663d228765  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/values.cc
! 66808c982aa74e1d16c90204e9e8c102  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/explicit_instantiation/1.cc
! acd8e3aa04fe091d24629cf4efd0bfdc  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc
! e2aabcccea890bd99d8f230218a5f111  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc
! d18d89768ea2ba05381ed0efe90a71e1  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
! 0b805d9101940dbb792cd76a626180a8  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc
! acb6c79209ead13b7c031180575497d5  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc
! f557bcbd4ea6be25419dc890220d5ae3  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/default.cc
! 493634cead36c9ab41abb8d359de5ba0  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc
! de80b7d4566528b6bf81e2b8a9fe3a8c  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc
! ff42f141c09032507f959acdab10ae6c  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc
! 99a0885b7c343abe8569327c94f256b7  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq2.cc
! 7dd3ba667e62d4df96fe8951db32358f  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc
! dd19065b622b35dfaa8ceb9f67f9e12c  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/inequal.cc
! 007d0be2009f18cc2c23413a26e0c050  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc
! 2d85d5246eaa3daa45f73b674b432f1d  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
! 1a57a73280cf1cf71e3bad7618ad619f  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc
! 28df5a693e264b6e72b8799fa5e67187  libstdc++-v3/testsuite/26_numerics/random/knuth_b.cc
! f8d4b7fac8ef3f51b526eb2b6e4db1d2  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc
! e774f978b2b20ca175dc02153eb6c5ee  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/copy.cc
! e3f6480ee15c49ef1482873d9e3870fe  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc
! d6db537c6745425aaf3c01539c399ba0  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc
! b506cde9abc9f18b4d066f7817315918  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc
! 2592ee5b48949d243f770f9971ee1cfd  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq.cc
! 5179ac2055a92bfa4db17f4ae3f29134  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq2.cc
! d1c996886122363ed66abe00f92d871a  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc
! 05d045bb4fb52ab7cd86baa2ea8826a6  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc
! 834f19dadaa6b05ab9df8b5c3a110bbf  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc
! 42d5265ac862255010f982ae1b1e6f17  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/inequal.cc
! 9a1b12c519af6b72a636880b71ef6555  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc
! 4ed68a91c07223ea051841db9fd5ad1a  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constants.cc
! 407823a4daa50b9fa3585c96399a8617  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
! b09c093af58ed3214552f2d018d6c580  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
! 0444410f1b08486824447b2d71400a22  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
! 0f742a2c118b95fc81104065e415d271  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc
! 7a68433694ef7eb46c93b732d27b2eda  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/default.cc
! cdcb90fbe41f576a992f106292af0790  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc
! e7a48ab129fb9b0e3e59a3dd1fed86bc  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/equal.cc
! 5b2df7ba22e3c2b70b1abc788cb49207  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/inequal.cc
! f83dac7ebcb753ecafbc93df81f2a65c  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc
! 8da416fb621ffdc7f62d801101ae2b3b  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/explicit_instantiation/1.cc
! a1eda48915e12de60fa55a90b11dc788  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc
! c75dadf106776d9ae608023a9f9d8f1c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc
! b7cb8f2e7b2452009fd2c208058af4d1  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/copy.cc
! 729b7873138775fb1d54dd237c42b75d  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc
! 7dd62c414134d02f0db6eb5e6175b886  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc
! 2a05023041e3d484969656fa1de09398  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc
! 517ba18fbb2cd6859237f06d980d3b61  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq.cc
! 538d02ef18c6e3b184e7b26a06616f9c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq2.cc
! 52bf8120542494db5406baabecbc082e  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc
! 9a2ed3d6e06fa71e330a908de1b13e66  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/inequal.cc
! 09fb3a41aa8995365356455dc3bb6db1  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc
! d61cc277a82ee0aae9cb0094ec4d17c1  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constants.cc
! bb3704c2facf6bba9dccf3a61494d643  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
! 09b350dc3689dcb2330a617cb98fb3d4  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
! b813a044acba1e0a158eb8b5c92b6b06  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc
! 437693959913482742dfeeff5e3793a1  libstdc++-v3/testsuite/26_numerics/random/minstd_rand.cc
! 85ccffb4122f7b6163ae195e57ac85d9  libstdc++-v3/testsuite/26_numerics/random/minstd_rand0.cc
! 1d429536398ed96fe57101118c2c53c1  libstdc++-v3/testsuite/26_numerics/random/mt19937.cc
! ab9e8a13b99416670b857a3511f87488  libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc
! 7025468a726be461cd178f916bc034d8  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc
! b16952e5f824371bbd88a7928c34ceb0  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc
! d1cf415fa95cd61679858b20a4c8893b  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
! fa86312b9e83d47b02e90cdb8722bb31  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc
! 064e94739e1679aea0f97c50f6dc30ba  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc
! d05fc8f9d77e8607ecd166befecd5f95  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc
! e484b641117a114cd2e5032d7f9c3a7c  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc
! 13ad8a9d40700f2d2ed748471b228cd4  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/explicit_instantiation/1.cc
! 31628c2fae5befbcfdc03acb581d2518  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc
! 12939ec7d431154434031941275e6fc5  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
! dacd0751d0a1b7d6752bee82114c9baf  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
! c7382b1899c3f691ab73c9d87259b5fe  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/equal.cc
! 8f10a4b4809da2884bfb1b6ff3402a1d  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/inequal.cc
! 41862611852217820087d308fe19025a  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
! 54ef8c06abeafa7d50683beadb1ffad5  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
! 5553aa90c48de777ca4ffebdd264320d  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
! 1d0f0658e15fc55118434c57d6d6b32b  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
! 3989d147f87c57be8174f6665c57c393  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
! fd1105be2f773da0b5dd1a860c60826c  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
! 3bccf784a2ebfe4a83b3080297f1bf11  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
! 7b71f135b2b792e4707639fb28978663  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/call-default.cc
! bf221caa77f2d463d521643681ea31fb  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
! b564585cfa037890820558a9c8971f5a  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
! 3ad9b62619a7f5922071400de340a6e0  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
! 5a148355c613b640bb59016bf8480f81  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
! a369a0c24b5031c29e44478a2169d352  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
! 1ec2a72ceccba97e618bb7484a280062  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
! 769d8f982fe31a890ce0311761f1431c  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
! add5584f4a049b29c494e3018f2f1f98  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
! 194c8d315176cff28b99f8a37fe2d6be  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
! fd35a30659d18b4dfc6f69461d687867  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
! 4f0e0941bf06e46eaf3b06200922faf1  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
! 83db96072b3ad503c071cf41b5efa8af  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
! 285b9fbe6eb96b17128891366fa3ff44  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
! 012a1e2bb69ccb307a6cc5fb0116da25  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
! 2385191d748d4ab0d4ec79db20ae2569  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
! 1b250c089f41e042104ffd381b6e181b  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
! 7e7e1ad1f1411b367f81e5b895f204ad  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/parms.cc
! 04d0617fce109e2c86ae311bf1f33b5d  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/equal.cc
! 370e026290aa46df186a40a12a7f14b3  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/inequal.cc
! 3adec1e2cc956a89aa0c22698050030b  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc
! 336b167edee7c2c97cd1ba0faa509389  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
! b13057ea5e25d9bd21fadbf9a7a5901b  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
! 7f99ecaaf3374e5d961f96f2e1a4076c  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! 42c2c0225a7158e51f7eac21fd146318  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
! fb8dc2f561a0616b43c81b8d8ce74c49  libstdc++-v3/testsuite/26_numerics/random/random_device/85494.cc
! 6acc7376afeb4884a1c2f760051d9637  libstdc++-v3/testsuite/26_numerics/random/random_device/94087.cc
! 13e7dadb883535e7c011e380914e549e  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default-cow.cc
! 05a9484f70c4470779d6194bc1c76db9  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
! 125898b68d93baa1bae55de48278ac76  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
  b58b0627741172f23a1476ee917f59d8  libstdc++-v3/testsuite/26_numerics/random/random_device/entropy.cc
! 45e102b8a6441648de3398dbd7bf50ef  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
! 60f0a90572951b86b06129fab6f29694  libstdc++-v3/testsuite/26_numerics/random/ranlux24.cc
! a888df873bcfe3492d8c1733796f0e8e  libstdc++-v3/testsuite/26_numerics/random/ranlux24_base.cc
! 1e90e7e1abd3ce1d47c5b022ea5fa143  libstdc++-v3/testsuite/26_numerics/random/ranlux48.cc
! 09419d77bbc9b9a3526af64e9ca3e358  libstdc++-v3/testsuite/26_numerics/random/ranlux48_base.cc
! 59b6f32d4babca2af906910fa385507b  libstdc++-v3/testsuite/26_numerics/random/seed_seq/97311.cc
! 27ac1d2405a360dd99f89e929fe3474d  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/65631.cc
! 8adfd15af502c6dee5251675d6035529  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! cad618433ca8b8ef6f8f21ffad4b57e7  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
! 7142e5303b04a87885cb4aeb005fba49  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/range.cc
! 1effe940d941c909303d6d33607ebf30  libstdc++-v3/testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc
! ccd244d16031aa7accf09d33f6332802  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc
! b2821bdfe2e080b61eea40c0dc686655  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc
! caa80b30c751dddffad9309bdc409864  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc
! dcc0417213dfa19324765cc1e78cb450  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/copy.cc
! 546f89e27bede2b9f5ccb27e90b410ec  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc
! 485ed89c39e10dd223629e5cb36d6bac  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc
! caf4206684e2433ca123403e6e527d00  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc
! 46a6b7aaab67734e7c4c98f0102b6b9f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc
! 55e3b3d3ba339407cbacc8c92a70f118  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc
! 5c8e89030aa7d8070db4ad579c23612d  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc
! 64b4b26d7506bbdca8c3e2dec07ebd04  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/inequal.cc
! 5534ad92e4b42e6bcae3d3d8a66703e1  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc
! 3d75f31c93d6e9b1b0448b479e6a7fd0  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constants.cc
! 09e8329e6ab5bc084aa0702ec32017d5  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
! dd357b9cfc019404c492ddfc0376db51  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
! 5180236e861de3ceddbe4f76f918b87f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc
! b1378a93c380048c8fafe08782a41f90  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
! f55c017555fb803b4c98cf15dfe17488  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
! 20d25132e2100934c0b35a0b09b079bf  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/equal.cc
! 2077455effc04763576c3b9a50f626e9  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/inequal.cc
! ce14cd4e63e320814d2f98c9b2e3d47b  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc
! 685eb43ae58a5620256e185b19f1a657  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/explicit_instantiation/1.cc
! 05bd77ea5b2caf1c741de43da3eff997  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc
! cae9f40b3c36adf09ab9b7da36be9188  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc
! 2ea596dd6e6b2bb562905a341572f854  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/copy.cc
! bfdc5dc97c05960cacae7929b0d95463  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc
! 22ce99a43c709f3b69bedea51fb0e19c  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc
! 8035cb25ca6db4ae2b1a24b338e42709  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc
! 50d353e4a40f0d30d9c999f73f6c8992  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq.cc
! 30502daf5b732cd800a7c4485998a0de  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq2.cc
! 0e75bdb8dc9e371e0f7cb73e3e5bb134  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc
! 1469c4c34392494908a3bc1e75442d9f  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/inequal.cc
! a0695e290cfec642bdcb909dd48b4ab3  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc
! 63da2d5a33e4fbfc85147c531b788546  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constants.cc
! e11f018ca8022865587b9f9f1855bbb5  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
! 1f5ebb952e650cf672243231dde6c097  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
! c251cef822a2c22ccb30b879ac847e47  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc
! ecc64e29efdd2fc68e92b184349630e5  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc
! b0661c9681bbca302c2490c1993da049  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc
! 681b1b2994428e751ad58310baab4765  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
! 05e6e9d2e2a36212e43a72d84d5a7e31  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
! 25e1e776d7812ccf5014dd03d5ce68fe  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! ef1a205cb4a95a7497d2692d0d479b5e  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
! 0b06b5275f96e6620da5e427778009c0  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
! de8968c7affffbd954e94c2f6aee0ee1  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
! f7753c28cf98177b6cae13ab2bb5afa6  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
! 829efb5362c004eda5dca02d4de9a5d4  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc
! 0525dd96ef8cc1deccb9ecb99b0107db  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
! 177d4433d604b4de06bcae16656abbbc  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/equal.cc
! 056e074647234a3576e191b91f1e9ec7  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/inequal.cc
! 9b5d122a7d28fb10a1a7342f39d14f06  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc
! 932bbe0ff4cd0c29fb3826a89f4c54e8  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/explicit_instantiation/1.cc
! a16fce135378c06fb9450ea1a9f23491  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc
! 6ba9e573cbe5b5d8c67cd95fb0aa6c9d  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/default.cc
! 5a2d2b16f7da22258f3d2233b283aa9e  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/parms.cc
! e1eb2244e790685c23046b6fab8ea8cf  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/equal.cc
! 65e6097a678a016a03b737e751eb4e57  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/inequal.cc
! 26a5b085685116a29209f34ad7b6bc7e  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc
! e606dac008a7b53aeba87d6b7c1d59a3  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/explicit_instantiation/1.cc
! 8df2556e29db9b50e432fa5aec294910  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc
! 166d77ed21fa6c972eee049a4bf7a78a  libstdc++-v3/testsuite/26_numerics/reduce/1.cc
! 214f2aacf208ce8a0a1bb9287b9b5d6f  libstdc++-v3/testsuite/26_numerics/reduce/2.cc
  51f14806bbec80c2d5883800a91dfc2e  libstdc++-v3/testsuite/26_numerics/reduce/95833.cc
! 91e8211850517bcc7dc4acac76dbdd87  libstdc++-v3/testsuite/26_numerics/reduce/constexpr.cc
! 0749a02ea7b79c6edc85699c5619bf6f  libstdc++-v3/testsuite/26_numerics/slice/1.cc
! 2c23dde5d13613601b233ddd3953d246  libstdc++-v3/testsuite/26_numerics/slice/compare.cc
! cb2af1295021bc4e6ba50140f8d792aa  libstdc++-v3/testsuite/26_numerics/slice_array/array_assignment.cc
! a7c96163af1d4e05c4969f51820095f8  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc
! d78fe2d8156c57ae2d73145be404186b  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/typedefs.cc
! 67e8a1088b527b27f85a3d6c1a6f9e1a  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc
! 92fb123d695db25db41f0aa15958216b  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/constexpr.cc
! 3e8da00550b01aef7693704d66b852bf  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc
! df1d116789c084aade453bc604f719aa  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/constexpr.cc
! 44895a4d43b0e584e64d6661a1a9761d  libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc
! 9c377c92aca6b4de8b3dd20514258168  libstdc++-v3/testsuite/26_numerics/transform_reduce/constexpr.cc
  525e5798867d708e7cc13551760f93c8  libstdc++-v3/testsuite/26_numerics/valarray/103022.cc
! 588d8f427f86680cb5c25808306a406c  libstdc++-v3/testsuite/26_numerics/valarray/27867.cc
! 54e2c6fbb7579ccc6bbbc142b3a1b594  libstdc++-v3/testsuite/26_numerics/valarray/28277.cc
! b8943257fe9d0ecc2dacaf6b047ab124  libstdc++-v3/testsuite/26_numerics/valarray/30416.cc
! 094c9f4d214524db10d0bae30118e644  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
! d9b47f0a1cc6d4fbadbff8d6b15e1708  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
! 404c6be2e1e2d8ef7bb5db3db165f5c9  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
! a4789a9fb7704ece09c857b419d7c0fe  libstdc++-v3/testsuite/26_numerics/valarray/83860.cc
! 9483d99a7e85848726c8b738918ea676  libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
! e1a4872345d98ae74d7ba8742ebf9932  libstdc++-v3/testsuite/26_numerics/valarray/95592.cc
! 3cdc2530ed2058558cae975cd481912b  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
! a4a7b850b2356ad923a0898c81bcb239  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
! 0eeebc304fac03fa7d99490122964403  libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
! a43772f8f4d027e524bde46af3f9fd56  libstdc++-v3/testsuite/26_numerics/valarray/dr543.cc
! 761bb939db85d0737486848b98476929  libstdc++-v3/testsuite/26_numerics/valarray/dr630-1.cc
! f641c8bcd7b52ed19afcee5274b448a1  libstdc++-v3/testsuite/26_numerics/valarray/dr630-2.cc
! 52f4453cbec25b45fc118aa9b0c86151  libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.cc
! 63c09b03a03a966330d1c0e58e78c6a5  libstdc++-v3/testsuite/26_numerics/valarray/init-list.cc
! 4c90d21077b597b158af833fa3d4bc97  libstdc++-v3/testsuite/26_numerics/valarray/moveable.cc
! ee069954208354b2fd74976707790a99  libstdc++-v3/testsuite/26_numerics/valarray/name_lookup.cc
! d188859866ad0f3be26b28195147aa12  libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
! 08be79167aabc7dd4571710300bc3088  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
! 66795cfdd7bfa711852b5beada02f66c  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! 65a46b4b153f44b483cd9aca3a414ae2  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
! 1965ca71768f88b9f8c09352095862ca  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
! f024e77ed417c8d055ad34f44102100e  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
! 8aab6c309c92a549161d5fad7ac5adde  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
! cdd509fe77fc0905df42d7d39316728c  libstdc++-v3/testsuite/26_numerics/valarray/swap.cc
! f054b5a1cc547dd766790e9415847555  libstdc++-v3/testsuite/26_numerics/valarray/transcend.cc
! 457d4423087cc030287160739eb07879  libstdc++-v3/testsuite/27_io/basic_filebuf/close/12790-1.cc
! d2ae459bc15ff91d27df12050cd9d344  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc
! 19c74bb5b9ff69dfc237696de6ed005a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-1.cc
! 8967d1ab46c5a8aae5432354fabe475d  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-2.cc
! 6e4e2c349c170a3180b817234a3f9d4b  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-3.cc
! 07e24c9f862f0e7e62ee59e3937718a9  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-4.cc
! 0a64cfbc7c59e11b0356478668332465  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
! 2c238a87278bb7cdd43e971846dd538e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc
! 42277b24d5c5ba40a332eaf3c4805d0a  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4.cc
! fef77b14589b9eb4dc04981d15613624  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
! 5efb63d9def6a8c700eaa7ef0d08e9cb  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/5.cc
! 2bae0cdc8f3b7966f7da49cc9ee046b0  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
! a441e8b7cbbc7dc3695e5bc6c17142aa  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc
! 07fa1f7272078814e4abb15f8480b180  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc
! 2f493a7929908dc76c24fd4246ee0f55  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc
! 0ad9a0c240740b1e3993436c1dd1a973  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc
! 9bc71744f8430b7d1cdc69d7eb665eb8  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc
! c8bf5d093d2dec783296e37e642f4a55  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/2020.cc
! c65ac04baac0dd32ea03cbc3807b5ab6  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/1.cc
! a957854424c6001aef94ced8cbe36300  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc
! 49c4d282d44df945a2a63fff6efe5b12  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc
! 592a9fef012e87bd68635d611f39d10f  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc
! 895c6121986a20af02b2cb6cc22a08ee  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
! 0c102842e6a615d2313b4a6e7d200b02  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/1.cc
! 3bdc7defd5b5f32c30e1d64b4421460c  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13007.cc
! 591f1a69bdc31b1748d6bc1840f9196a  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc
! 60f5e09d4d185f11377b84e9aba533c2  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
! 4a5c42e2100ec16ac909708f9ab8ef62  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc
! 7609971e91220ce873244929a0cc9afe  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc
! f0ebbf6cb73d75b6fabcef2f5a04900d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc
! b47f6a98418ba2d7bc6a5a26fcf36d9a  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/2.cc
! c5730c91e940ff86ffc6bf741ff37b53  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/3.cc
! a760237ff6017488bc331b482e68d44b  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/9322.cc
! 50b3a7f024e54aedc8dceecc86482f16  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc
! 71e9a8ef29cac34f5462df3e6bf35a68  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc
! 69195fa52f6afe3578f0ff845ac238b0  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc
! ad8dcc470107226d49a4d447aca8bc08  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc
! a94bc7fb9d21fdd2edc1d9ce1516a1bf  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc
! cd227355dd616d9e78e6d252dbbeaeb8  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc
! 93d18b6dc91223ccf4485a70590fb306  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
! 0bbebe7e4c808dcfac513bf7c0d78ac9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc
! 38d0c62dbec1a5efcef56e9f487a1d3d  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc
! 57285510fe3a04ed126af7e13898599f  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc
! f606c163f454c6fa94b2ef78b041ded0  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc
! fb049254ff8a3d01035f5c107e4a7c2d  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc
! 3ae30fdf98a45e0025aeae73992f4ef9  libstdc++-v3/testsuite/27_io/basic_filebuf/is_open/char/1.cc
! bb1250bb096213671cc3aaef445f3725  libstdc++-v3/testsuite/27_io/basic_filebuf/open/12790-1.cc
! ee9904d4437ba62a3fd740721bc07e0b  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/1.cc
! 1c72b673b55f75b98e19c0518c030646  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/2.cc
! 1f74bc55e17635c2d128eeee87ecba13  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/3.cc
! 650aa3bfb0b376e4a8247080dbcf6901  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/4.cc
! a105cfc6b475eba8d6e6772924a4a0bd  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/5.cc
! 94f8e430e15ba35f8d06ed7cdd0ea2ab  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
! c00c8a0a4cbd62716112dbbc9fd0a0f6  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc
! 7e913c01bc444aea542c391e158cf904  libstdc++-v3/testsuite/27_io/basic_filebuf/open/wchar_t/1.cc
! 994469cd586eb200d5ce0ad47c3dd14b  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/1.cc
! 95e95eaad3bdc4e51bace1b2fadca51a  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
! b68b157d2306eedea58e7a9b1225d9cc  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc
! e8a576e797e9c1a3fe56eb3f3e7550b8  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2.cc
! 158eb0a1463051ce750826f0f1d135b7  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/3599.cc
! 25558f85e559a83bd4553d6b781e490c  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9169.cc
! a368267606bb4261376cd5342cf6f30a  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
! 2323d72e8c3501b9b43e7854223d5a76  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9988.cc
! cba882780f31cd2bca697cbca4f5f715  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc
! 69339db373b1b80b3027712b7c5b37aa  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc
! a2d6b9f428f291f5295cecf7e4e78422  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc
! 6b4bcf73a4a6bb46038a941e275bb27b  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc
! 123df218236c8f506cf2ac9d5169cae0  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
! e9cb3f09bd6c0ffd88d9d040896e0e39  libstdc++-v3/testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc
! 991b527ff7b56d887299980e249138f3  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/base_classes.cc
! 66b1c6fe1bebe6d13b5e8bda343a34fc  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc
! 4ea91872961560b434e72a0ca4d907b2  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/typedefs.cc
! 3e94b2df07286dcc76ee11d4198e0d5e  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc
! d7ec87fdcf66d3f8a89cb4f212867953  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc
! 9aab1afe96e0a658434a78755c94c68e  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc
! d438f9b24f9ea81e1cfb6b4015261399  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc
! 52b7fb8b75695856f42009c6569995ea  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc
! 2db7d2035ca1068a022c43c9859e63b7  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc
! d6c97bd62c383a1604ab5bdce5f385ae  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc
! cd8db3ab199e698f4b794e8ffdb9a36e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
! 5c53d5329031eb8247f316471bdee79d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-1.cc
! 60624380d1dd1296b371bd44cd767b2c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-2.cc
! 04d6dc0e711ab098a3e214966a6db033  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-3.cc
! 7d021e7cacffb6309ae9e7cae3e87f34  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-4.cc
! 53550f51508e18ef424304f77ff518b3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/45628-2.cc
! 9efd32698d0be4a4e80132a55302a3cb  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc
! 662695a1b7ea978d5f0307cee4b30ee5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
! fc1b19bff91b110287a9cb287e124a04  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc
! 615a5e9c814dfb1f28735f19edc1034f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/11543.cc
! a6b0487298b537e83f61b8c6ecb7a26a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12232.cc
! ae2861120cca4b4d3b622f033126aeea  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc
! 3df73fa19ca52803680207fa30221bee  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc
! eb14c7e9d2c6ab8477fa7dfed91a631c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc
! a8979be1f009e906d4c946901599350d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc
! 09928508eb9ebcdcf16fe5112819600f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc
! 153449d597f738b81c9e25b0c699de41  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
! d18e4ca2b7acd755f2e547ded2db2b1f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc
! 96e80aa33dd9fa0c54e50c1cc7b8f1a0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
! 98f005dd6595cc37b6ed605a32af5df4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc
! fdbf9c7d380f18d6669b38320d9b0235  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
! 8355700c8e5e23c9227a5572cc5e857f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc
! f7582bdf626ac18876b21ce2e8103e07  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc
! 36e9774d2b2e7a74c178b2475b654fb8  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc
! 4f6da5986ded1e3bdb9a50438aa20fde  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc
! 984eae43ab4b1badea4dacc8434805c4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc
! 2862f4e24c53161e2545df40ff1d5b16  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc
! a6fb97c0224be917683ac73f27f7f3ae  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc
! 34ab52ee4300478720be5df5d77c9c4e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc
! f649c5adfd8f8381e8b037970e2914b0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc
! c0816e20e4595c9f6da195a27c62342d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc
! a3df6341558e425498e4ea17dd09331c  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
! ec3b76a35ee24c9ddf6038a2ac7f33e7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
! 816bf9ada81d7591b0b7533e5ab46a10  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc
! c1632363e1a146da2cb671dde212dd94  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
! 8caa096f901656b357af07667a60166e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-1.cc
! 361350a743d5f33319c0d7b3682cc63a  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-2.cc
! 4bee2d90b7cb0f02edbb27320502ba97  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-3.cc
! c8895087bb424bc99b7888e48d478df5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc
! 38c8f659a3746ed582228d8575cec255  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc
! c54539c17454f0615ded65e092101e33  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc
! 01d0e4edc6e4746ddc7e24b55ce4ebc1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc
! d6dcb86baf9027ca86fa1e277576e1cc  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc
! afe2b95e62876bf0ae8339b1ad3963d0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc
! e4947b4f37df091c2e60f42d0f6a4e3e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc
! d77f48ff5cfa999c1db37de9b923933f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc
! 8d6dc30b14de228169809a079cdd7139  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc
! c16688ffe258a39375ad412b60cbd4c1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc
! 6154506460d77ed4488d4f6a7550bf7d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc
! 5c03279401a145b82fc4def5417582c9  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
! 9e82aa2a02fc5653febc4088801c9970  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc
! dafefd52fcf0cdffa1ac129901c0612d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
! 66a8ae0b6e994d73280143253473e41f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc
! 438877ef879ae410b6fab9579400178f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc
! 08f8d799d7f699d23f6e706df6bcf9be  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc
! 1f9558066962c245bd497b0390bacd45  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc
! 2c29be5e147c2ea4887bd6441a07fd9d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc
! 164219d1374e8f29ecdcf174299453d6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc
! 3f171ccbbd3a0a2912350405a8ee26eb  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/1.cc
! 54f237e629e83f809ad92a93d1048b4c  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc
! 3fd354eb71a23d45e7f402d6ab69cb93  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc
! e64cc7accc74b08a4c8596aa543be0b6  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/2.cc
! acb1b3df78a959f1d21f9f1ee33bc134  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/3.cc
! 8e86df164f5c950407e9664a1253fd56  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc
! df44488d859a2cc8e099a6fd2f82d480  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc
! 038b773335aa69c9188ba7dfcba83642  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc
! b03a1ee99d8ad20430cf197e6fd763cc  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc
! b7939c6700c368676486b216bacabec2  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc
! 6a660532bf570366360d2a04c75354d3  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc
! 14b11d50bd39e47d4920cf9413cf5b69  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
! 90710cb4b9caf056c5dfa4cb72947f85  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
! 10d246929743dcd205673f5381bba5ee  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc
! e02689b09d4625288b736eeb3c7b01c0  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
! 2c62ffa0745399df43d9ddc43653e741  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
! c85030e0035b2068b6c986648ddb9ce7  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc
! e145cf35fb7cc3a5a6317904e6d1991b  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/3.cc
! 59c3278bf0cd3137e93cd55f269a3c73  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc
! f851a408280da5e242ff1d157d2197c0  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
! 1a21e7523c0e8831017593bde3119a38  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc
! 4a7fbb2754366af5d7bce9c724a287f1  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-in.cc
! ce81db40b69b8253fdb87c5f02f5024f  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-io.cc
! 7fb6dd29ac928a8685bfe74cb5ebcfec  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-out.cc
! 8dc9f3bb4edd4b700848bf3005c2836b  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-in.cc
! 401455e120f8ba6b7d675ee41c8b219a  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-io.cc
! a4c90f1f9fadb1470a5b5090a9e94969  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-out.cc
! 3fc410859d565157e4213aa7be5c93a1  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc
! 32155c1cadb40aee44dc91339c7458d8  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
! df3aa3803d036ee51a51983b7b4e310f  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc
! d8a28b6bc2ed401e23bddc662c435a8c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc
! b3a01d07374de390c19520a7fd6f1a7a  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
! 01f88e0e2e8aafe505da34baf4d8407e  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc
! 9df0cec034d87578ad13898705e0c30c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc
! 32d64e77c755882be88faa26883da2c8  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-in.cc
! 934c3c9a40e679cc11f40f223d4bdd98  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-io.cc
! 3a0615716eecc85ba52607de913a2451  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-out.cc
! de332b8ab930e2ec383aeccfbd5ee7d9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1057.cc
! dd36e6253e6fb1b72a217f10faf06f49  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-in.cc
! 8b2662c0a58ded310fdc509a4413340b  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-io.cc
! 682a9f4c80751d1019cbacdbcf17f1d8  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-out.cc
! 7bca9fc542d1a3050478ad122fafe05e  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/59427.cc
! e3a68da14af50ecc2c2618010380bdb6  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc
! b5cd396cb59ac9c928c6bc48ec57b200  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-in.cc
! 33a4df7d1d7fcd0309f85f9d6ad39e48  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-io.cc
! d97d71588942a90456ee83529cbc3bee  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-out.cc
! dd9fd5fbcdc320ae8c995732a41239d5  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1057.cc
! 5c3f01366dd8f5f55fbb28ac8226670a  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-in.cc
! ec9bc67f6161e2342cce2db6b10ff41d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-io.cc
! 8efd6c26cbc695c9a096bd815990ba70  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-out.cc
! c94d2976878a39cbe095f800f2be049d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/59427.cc
! ccc5d929111bc16f8bdfd3162357bd23  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9339.cc
! 4dec951bbd2645fa79672ad02d8cdef8  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc
! 9802eaf56c937ad6b1c83877551e6b78  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc
! 6b8768267f759368fbe80761863002f9  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc
! 32f16ea185bf3daed7845a97514b3846  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc
! f32f418dd3fee7f504d7bc5a8bb5b138  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc
! 9f285f6727ffb62450ea39d06212dc2c  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc
! 541af3f39da413961093fdab54bf4882  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc
! a3486595181f7d4bc0b6d54cd89fa6b0  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/1057.cc
! 5b298411e17d2b4ecb605bd74106803d  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
! bd4d1d680b9f9c43b1ba30ad27ecf68b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
! c7811a1c3b3163ebe5251ac7b4c707b2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/1.cc
! 77542a2ced6665aa4f98a1b444eeddd4  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
! 5664cbd7fbd659a926acfa61dc85b84c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/2.cc
! 8c6d596684fdeecc157f54b0ad4e3c07  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/3.cc
! 8cbcfef82b480bdfd439fb44636beadb  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/45841.cc
! d5b0124575ccbf70004cf64293482bff  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/9027.cc
! fca1de8b69d429e9ed1fb70db4a5ed97  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc
! f8d21973c68e8d9486a1cc60eac054d8  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc
! 39dadd7ed44c9045f4946dd57f5e9643  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc
! 0b3df663a24af7c1f9f970bf5fda4bd2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc
! abb05499aa524519b9777913cf413895  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc
! b6e3822c954c5883dce2a41f05f56c29  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc
! e0d582fcbd76c838503060a6a5f4817d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc
! 30fa12c60b046dec8a2e2352346f0d28  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
! 59453bfdaeecdf3fb62290fc42e23197  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc
! 43ead71638b3af3fc25d6690ae7c702b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc
! f54e426b360e624ae8986ab9d4c7a6fc  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc
! 26fafe48c3a313f8617e6ec0dc0e397e  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc
! e0164bf4c2d0bbdb7b779435482845e9  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
! fffc3fca110005323fdb1d8b0cfef9cc  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
! 94ca6a704b777692b468106cf94c63c2  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
! 93696b984fdc7e4e615d8f693b05980a  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
! 817ec6bab387b4dfc0fe3df3ccb8d6db  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
! 42375f2e26a2e3f1d6e6ca2d51318276  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
! e9809188a7ebaef2238da5c57103db80  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
! 4a35c9a3c26fb00ae0f38096e4bd8af1  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/1.cc
! e45f3ac657d92c81e6921278869ded5d  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc
! 668ff091099b290522c8d8bbd4f08822  libstdc++-v3/testsuite/27_io/basic_fstream/cons/move.cc
! 126109e8dfd7aeb96e321a69d6f11eef  libstdc++-v3/testsuite/27_io/basic_fstream/cons/wchar_t/1.cc
! 8ce90b26e95b3d0d116d728158f2f12d  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/1.cc
! 9176f01f6c433881f9df64b80baf07b5  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc
! c4d513da3ae1d896b16681c95091c7e3  libstdc++-v3/testsuite/27_io/basic_fstream/open/wchar_t/1.cc
! 77b9d3f246c953072ca1579e01310d13  libstdc++-v3/testsuite/27_io/basic_fstream/rdbuf/char/2832.cc
! 724da0d1c7de2143bf3a3444c75cc25e  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/base_classes.cc
! 11d65b09a8224aff3723ec1d8d6c5314  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc
! 07e661ff8ef5abfa2854b2f86f59ce5b  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/typedefs.cc
! 5ef988846e6969b83cacfa82a1c7bb4c  libstdc++-v3/testsuite/27_io/basic_ifstream/assign/1.cc
! 9f9d57e650e0a4a28e73a027ed9eb6a4  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/2020.cc
! 57093202c280bb068f545e3f728eb036  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/1.cc
! 2cf474a58297e7d64ba450ffd155f81a  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/2.cc
! 4fff2f82430d175cf74d4765ab4a98e2  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc
! 8810814d384912152b0d29032be4458f  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/move.cc
! 1ca3cbb2b26273fec55731ef6886e116  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc
! 5b1cc4698556cf7746ca18431d536c27  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/1.cc
! 34bd44b36c2b062258a6123e4ba5684e  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/2.cc
! 5ec37bfcca7636a07936403a9acd989b  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc
! a19cbb88c1df0ac376592f7966324c75  libstdc++-v3/testsuite/27_io/basic_ifstream/open/wchar_t/1.cc
! 975ed6556b3dbc16a9825a755210d532  libstdc++-v3/testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc
! 4e6d2d88ff67b38946ac571e015aa3bd  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/base_classes.cc
! 7cb81a1b5e176d64a02f561fb8100203  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc
! feebe8b6dcdadcffa095b02aeded0da9  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/typedefs.cc
! 31006df3165ab5dc97f41a6994d8d125  libstdc++-v3/testsuite/27_io/basic_ios/clear/char/1.cc
! a917f5e6504ba12c3602fa3d69f92085  libstdc++-v3/testsuite/27_io/basic_ios/cons/2020.cc
! befd36e4268f0b3b2f770d43c5441787  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/1.cc
! 48d722b4978a4ae859d2bcf22268e1b6  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/2.cc
! f1e512236aa616ac29191aee8e6de883  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
! dd7cb97cb249022a1510c2f73338cb95  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
! 436c849dd0b218ffcd196dafec8abe39  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
! b13fcab06a3dfe2470dd32ba60ad0f3c  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! d5f349c2070a0a81d2aa008a0f63ff98  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
! fe96150a123507cd424d2720d33173b8  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 857223f3f6309ef5e83b410eb1cd3a3d  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
! 6f7432a533f5f2b2a44eb38800097e6c  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
! 778825dcddef27c15977db77ee15cc89  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
! e77aa3b3ad4094853f10960afe7e0c4a  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
! 4b4231a3d162eb3c9f7ade4171637f5d  libstdc++-v3/testsuite/27_io/basic_ios/requirements/base_classes.cc
! 0707421b05f87fd45116f7838a1401ea  libstdc++-v3/testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc
! b79006c5740a247a3e208ebd7b9b6503  libstdc++-v3/testsuite/27_io/basic_ios/requirements/typedefs.cc
! 334d2ebdc8388dcd8d29e2be5c0becf6  libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.cc
! 4f0743a70fb733c046608ab6f08d55a8  libstdc++-v3/testsuite/27_io/basic_iostream/cons/2020.cc
! beec5622c3883bf3d51f3ca23b2813e5  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/base_classes.cc
! 4f992903af9fa41a6c77f2d245d7086e  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc
! 472c41e25187e85df70c3d644d09d73f  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/typedefs.cc
! 139c0fae054256cf3d6a8507e9dceac5  libstdc++-v3/testsuite/27_io/basic_istream/cons/3.cc
! 4bdcfe9d6c143cde5d86af8f17a71d76  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
! e191924cb4b1b7c58b93e2ffd8e50e2c  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc
! 627d06d5d0f457ddf42f805e52b95693  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc
! 612ec18cf6022b14203a55573da5e617  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc
! 1c8ed3ee57a15dd7a0e1de2d5d8dd1f4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc
! 587a23a078f40174a2cfb9573589f1be  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc
! 456ea6840b8bbfe5045cbb2e2469cf0f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc
! 1600b72fc020b1d7759e4e5ad387dd20  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc
! 9c3c53955bc3567724430b0a4513dadc  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc
! 7e6645f4663da64cfc2f61fcb7131af8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc
! b601be6da462376f3cd9c7dc207ac4eb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc
! eb336495dfb3d8b9f436c89cce3e607f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
! 2a6866fe5826070d07c1f5e2f62f4807  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc
! ede6bfaac6705259a996705a0ddda441  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
! 87de9884fd979dece55a67bc9599de8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
! eb67d40d84104467c4ff1481a49c0ea4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 3006889a21a9659da4d1b22e2570f603  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
! 8605a9744a6deb1b58129b07e34268ef  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
! ff57d2b3c0a18de0650eee57ebf6fe13  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
! 7e1e9e872c5014ace1faade168f01858  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
! c1fc153f5a3f43dedf3a2b7b49c6ee06  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc
! fc14d4fee5a485a41ab79e64b152cb11  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc
! 5a3184d75a3ad03fd9964d37c2e00f07  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc
! 977cd438f930bc33a34719982de4709c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc
! 0ad1d285921eee037db47b06cdd22ec1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc
! 71245e1c144f4d230ca75bda85c4a95e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc
! 7081ce2817dfc6fd12d172b612d9c64c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc
! 9ba793d07f2202396888152c3b0e95d6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc
! 4cec34e02578b17342f1590fd5685603  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
! cbaa523e096fa20f069f76594e695306  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc
! 8a820bc25105920072dc545a9d21c339  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
! eb7f7203e9a3cec5f1963be85c082bc5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
! 378adff664649ea8b8b1dd501acd171c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 76410c38aa2a14a98a1f426602959bd5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
! 198b4d6a9b73208832f8234eb75d01b0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 0142fc6099aabb4edf907c54e09cf7a7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
! 68d214de1357db04b3c35a869981b4fe  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
! 6f3242fd670e7407c5586e2f4bddcf27  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/2.cc
! b13e46de88788d5d7c6c3664285d9377  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/3.cc
! 29fecff089a75bee96490cffcfd333f5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/4.cc
! 9257f85aa612925e3190a92f9c6c3347  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/5.cc
! 41f8d1daac05c9db30fc8e525bf381c9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc
! 07d44a502cdc8338233223748f13e7a1  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9826.cc
! 064c40f1d21b8de85bf737a5f0b16547  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc
! 456f22632ad6a4350d0546c9c8d2247b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc
! 5871c32a2023b0f7478135f019156f8b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/overflow.cc
  4f3d3110437af7e4f5208a2434cf525b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/pr106248.cc
! 4a723fff153f7200e37ba036bb6908a4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc
! e504fe943b709b7c76dc9d1c9a086f1e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc
! 8629546d5baf995a315eaa2e23c8fa0f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc
! 26c9c9222e69f95e578e2dbbc4245e19  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc
! 617ead89b390bbd02292d1db03ea798e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc
! 8bdc2d684f95b83b7b6ce20e99c775d4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc
! 08254e161a8bade9b48cfdf703feff3c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc
! d306443e6f94c2e12bcd316dc57ffa4d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc
! 9e20c526402ee3fba64851378749e49b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc
! 40bae218dc9087a8fa49bd4108d3e4ab  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc
! edb6928cb8182fdf4a6ca2a5727bd707  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc
  b4f815b9c39f208740f02123c6525269  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/pr106248.cc
! 1ee522b50dd7e38ef4a5a6005352548c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/1.cc
! 9d4647fad27a938a13d7bc6b7a4d2dd0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc
! 4b1247ce1839c419edd96d8f9ae87f0a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/26181.cc
! 34d1ef488acc528dd6ed28fba5f585d9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/3.cc
! 43cc6acf06f094b25a4cb41c8ba16e82  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/4.cc
! e29f3c673342acacd010f8f44764f10d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc
! 97aae995f055f922d84a94d8b8710da2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc
! d81bf1d05346caf285d9a887091bb77b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc
! a5863d44042b9fbea20256a4e2e35288  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
! b3ed2c188bbf02bd8308be6638e7857e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
! 2d541336d16784ee970430808efe1e6f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! 99a278bb216d02967f8265d26acb1f92  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
! 91d018c65e234b92bc6c2612ff4342d2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
! e11b58c8ea3d22bc5ed4927b333ae473  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
! 42a02a3f0b703517629a7ac3b464e506  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
! b85927add8be3629c7f1789865601ac8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc
! 763c355c8ab753c827efaf5e15bc1c43  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc
! 72ce7f10831793c484b7c2d287cd6f84  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc
! ddbce3252267c1665c9eba2908fbc960  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc
! 22ede017bf2fed967517f3a38773990c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc
! 02ba0a6ef769d813a119c34320f949da  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc
! 38c64c2f6afcdfde1386c059b055f8f9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
! 260d02f6c1c1cca8670fc5f576d7abc7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
! 95e293337c06605c53d77e6e24d58f0d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! f8c59b4a94876e40a2f0ff5ca20d2a40  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
! 0a32b6801804858aa047c47314b91ca0  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
! 995469ae242cab8cecef5211b7da3c78  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
! c55ea9df8a327c807b5e5977523b3d48  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
! 3fd0c0a056957aa13f98cc2d5a878bd7  libstdc++-v3/testsuite/27_io/basic_istream/get/char/lwg3464.cc
! 5600d5e22d9c9b6582b95521316c06da  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/1.cc
! 48088d38fb1ae2d8b7f773582a70c0b5  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc
! fd5198b32216cadf812975d7f6b5c9bf  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/3.cc
! a740390984b85b062939679722a5578b  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc
! bf5c7f37389aa263431c8abc66149ca1  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/1.cc
! fdb30224ab68f34d681b9cdca5714eb8  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/2.cc
! da38c6028b4610fc55451c5ee914658f  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/3.cc
! 97a71bc4a7fcdc420fb788d2a94071d3  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/4.cc
! b6e20951da8b2f5695d66154f9c52d16  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
! 3e70c7645813d39187cef2ff6868eaa9  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/6.cc
! 5cedc82d7c42e69d2f18a40cc3ab223e  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/1.cc
! fbf7008c23ab1d85ad1935c89f4671d1  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/2.cc
! 1c7bc9eb608c6cb36bbd8487612a731c  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/3.cc
! 1a282e003104d203aacb972c0127456c  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/4.cc
! fc642acb18754f8f9daa5dbd287f5758  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
! c3e0991bdd71fd2c2fc091aaa454b743  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/6.cc
! 42e63bbf88ac22de537417b855dc9a48  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
! 1d9e87726c556727b14dc5c43ed883fe  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
! bff997dc13d8e0bbabbf63a087098b0b  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
! 9c4a8a6588461168df80f31452fa392d  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
! b5f88e5d0a6600e74ba726ef4eb27e72  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! 2a024ff1c296c904b85f285ac826cc79  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/94749.cc
! 169112297bc6ba76ed6caf20136188ba  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/96161.cc
! e623029e31578132e49e8e076eca5813  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
! 44f1ae0149fc594947cf67fb719364ab  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
! b97f42a704ce0534d8e35dc6de7e13ef  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
! f3756e770f9b4dac9e6dff48f000c6a5  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc
! cad33c950b4df50ff45b8247683e9f78  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc
! cebed542a6e388fce6923fd9f0a25ce7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc
! 8cac0d93c3cbea4dedfecf43c3d542dd  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc
! c30a496857a9155183b65b2c178db05c  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/1.cc
! bff9bbf0a09f645e32a454be68cb2434  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/12296.cc
! be9e8e2835af73b8eeeb5090cea619ae  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc
! 985e136688a17f920844ef4e14ecf530  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/1.cc
! b80837bcac493da245eb294be4433baa  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/12296.cc
! 85f2953f10af8fe0b321701eccbeed23  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc
! eae2d04bd4a40aca1c3330f49cde3a11  libstdc++-v3/testsuite/27_io/basic_istream/putback/char/1.cc
! c44ffdbeafb7965112a009609272d789  libstdc++-v3/testsuite/27_io/basic_istream/putback/wchar_t/1.cc
! b3fb70c5f47f307c34b11aaa53156418  libstdc++-v3/testsuite/27_io/basic_istream/read/char/1.cc
! 7957185e1f3656b244acc6a49d1f5b90  libstdc++-v3/testsuite/27_io/basic_istream/read/char/2.cc
! db494c5ded8457d637eabbe2c74aca11  libstdc++-v3/testsuite/27_io/basic_istream/read/char/3.cc
! 0bebc6215883bfd73fa92b0c79484479  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/1.cc
! 0ea85b23615e3313afcf0cc2e6c04023  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/2.cc
! 143b0986b80a7a1d21f71a9ae6302493  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/3.cc
! b3b00b99ac3b18667ba50071a72310ef  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-1.cc
! 429bec5ef43dee658ea8490a9e8df960  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
! bcda1d843e99e3bac4049c4b221db2b8  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/8258.cc
! 9f82cf8918f81b1db027ebd5631763e9  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc
! 1893693d4d8c7de576b5f9a46b4d32fe  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
! 71f083f098d913f729bb9e4d551a485b  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc
! e0fb2d99deae17af2a6131c5a4c5b270  libstdc++-v3/testsuite/27_io/basic_istream/requirements/base_classes.cc
! 8310ac654b958c6469b0da3d8739a128  libstdc++-v3/testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc
! 184667754d600d5b9719729931d0d5bc  libstdc++-v3/testsuite/27_io/basic_istream/requirements/typedefs.cc
! 084dad4078c6db5cea547674ac48a7cf  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/2.cc
! 8ef845cbaa51984d538a0aa87684d380  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc
! 271042a72792b62b91e71f7f85c1dacc  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc
! 0b4ec3fc2a0a31837a6f0dbb1193696e  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc
! 9149faf2a89b98592f2192850f7567bd  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc
! beb24361590fadfa62a2429e391d3214  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc
! 848313b78191c497d0630c0bfa799d80  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/sstream.cc
! c49e64a65188e9c3d9710357116eec5d  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/2.cc
! 2545af13fe8b6b07d01f8233a30c0180  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc
! 7a71ae2413d6c8e6942b096e65f983ae  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc
! 478039629318338a75d1879042964666  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc
! 13f12f57422d0b131c90c15b06832414  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc
! 7c1df8206c0138674a835b430b50f8ef  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
! 6eb708970d5c4970e53251e3c4db9774  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
! d3e2a5dff25be0d3f48b345a8d13fc47  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! dfba3cf8f55845cfde3fe68f1df70985  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
! 12aec6124a18645716d150bca0573388  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
! c2410b8c87b2f137f35ce3d46b7cbde8  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
! d29cfdae68ca0a65137312662ad3abc3  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
! 41859f8696a712f9b316ac16616dfd3e  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
! c5147441ba992dc4fc936422431e0efb  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! 3fc0f27940ee9824b8ba6e08c202fb51  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
! 96c2f33255c3d3654c4e36c78c71adbf  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
! 141ff1c18abd1c42a2b484bf55435e41  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
! a75c0b779a183ea22c7712e1a46ae2d5  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
! 3222bbb37d76aae89bb5ed2ab0992cbf  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/2.cc
! e4ec6b3c0cde1da33db3c71160aae6bb  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc
! dc5b3dbea1ff040032ceaa744dc9127b  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc
! 121475bccfa13f96771774e497e73b0d  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc
! 8fa80a4a22154593b5694635e9e8c672  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc
! b1d848dacf9e50da3c11fa40fc2446ad  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/sstream.cc
! 2b36b0d02d6abf51a9d9840d5ea7e3ed  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/1.cc
! 00ee4c0e55576e0eeee12f749a47ce9f  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/2.cc
! 779aa80b1f11e69f3b3741d9ebfc1b24  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc
! 368a7446d4e9c9ea36c7fc07a66244f4  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc
! 8efdad44f25864ed721106da4a63d93a  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc
! bf79f8e5246ce8d9339ec54fd8847c61  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc
! e8b427e3eb86dd2664ae8a69d75a5f85  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc
! fd5292eeb009a38b0eadaabe76f1a100  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/1.cc
  f839f1109e54bd94ee7c87d858176de5  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/lwg415.cc
! bc8e7c75e89aa04c400a53d8981d7aec  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/1.cc
  b9907ab1fd112fa27bbaea52ca154a99  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc
! c1e50c66383c48c0cdcb2c894bd6961d  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
! ef59aeb83a9cb7dc4e8742cc23badc77  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
! ad2e31c5b3788c7599cfd3a3c801aea4  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/1.cc
! fab61aaf5cb79c7c4d1840612a784926  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/default.cc
! 52dd24ee1c7301392b9fcb5588a21962  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
! 1d342cf4f479fd7e130581f0cacd16d8  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc
! f3c710c1ea6f7a6c9458a87e27e9d718  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
! 80dff5ccc7265e9b1346d471a007105f  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
! 4f62c1e0f12d10135fd67a1d8cf46229  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
! 7e68a462441bcee0bae7257101a6da7a  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc
! 241de085e939318f9a4b138708806f98  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/typedefs.cc
! b1eca1c88d29bc234531e91815621e81  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
! 142f2542f5179f648b85f4b47db6520f  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/2.cc
! 83956b575c39066e9446320bb6790eb2  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
! b298dfe137b0c993ff1fb78641f6af32  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/2.cc
! 57e5db4dec7d8c57a49b4062805acb76  libstdc++-v3/testsuite/27_io/basic_istringstream/view/char/1.cc
! 13b0232bc5d0b7f1734b813e3c560fb6  libstdc++-v3/testsuite/27_io/basic_istringstream/view/wchar_t/1.cc
! 8d47f37af787a3cbb3d3aef4eed85a63  libstdc++-v3/testsuite/27_io/basic_ofstream/assign/1.cc
! 6fbb41c2eb58a7c50f53cd5f0ee65f06  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/2020.cc
! 8956e5c5203ecf2c1c4a717bdb2f559e  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/1.cc
! 8839d07a3a8a94e1ce5aaeee68dc6600  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/2.cc
! 764085bd2969e85b3080e9af6873fa50  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc
! 40d6ca3d4385154576c50b2b707def2b  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/move.cc
! 03e71216ab965660fbfff5fc5b7f73d2  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc
! 204f8a1fc52f241ed8733a51d7738b95  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc
! f1c0d98e68be55987702c7b842171127  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/2.cc
! 7a7b00d470ab3423cf9c5c76c241c49e  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
! 8fb4f200b93bc37695bc23f68cf45b1d  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc
! 5d3c3df9a5efcfa8383e8a983810d824  libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/1.cc
! 7ae688c7fa987e4e4ebc1dbe54de3d7e  libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
! cfc8751ca0d9c3e19064836e33df9610  libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc
! 79c3a81dc8e7585e8bed67f87ad4f637  libstdc++-v3/testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc
! 89c06b3722e83e1aadcd00100a55c13c  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/base_classes.cc
! cfe9ef296be4545dd57278690db6b031  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc
! ddd676c9adcdda000cb49f3956d7abe7  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/typedefs.cc
! 0f70009b5c8194b3beb3b82fcd0eba7c  libstdc++-v3/testsuite/27_io/basic_ostream/cons/2020.cc
! 2b47a5426202bdd2fe1e17f022f9892a  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/9827.cc
! f84522e20a617e0c20f6f2c1da46a101  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/null.cc
! bca591e3173915676cfb699752a05900  libstdc++-v3/testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc
! 96b735e1a7e1b477c03af66c3a0836c8  libstdc++-v3/testsuite/27_io/basic_ostream/emit/1.cc
! 1b069ab75dd38bef76dbf768ebff3f41  libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
! d17a83c920ef81180c1ae4371a272bdd  libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
! 95689bc962691d62fe9eb9560ea25654  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
! c5a0d14bae279cb7e16d59e551401e2f  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/2.cc
! 871942f766fd719b18a95c737a493dd5  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
! e186917d540167c730c721f973a7e2a0  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/2.cc
! 6cc9d802c74b04fc780b4f399a1af899  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
! 421a20c057bbaa74347bbd75781a3ba1  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
! aad575915b576cc4d35c5b1dd7b401a1  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
! f215982ecf86522302d05cecce54330d  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
! bc08da62e9c634570d4368ee7aaea7c0  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc
! 440d78859e2d45d81ac42e8e40711eb0  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
! c7f2389d8fb40ea2baa9beb0b3cb490c  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
! 90298b4b841f5bbe86a057e86292249c  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc
! 17e6151db7c8bfa0fbc2ce9077499828  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc
! b709218e7edb7931396ffc463cf0ae5c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc
! 3d5df0016b00174c2888289af90eb9d9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc
! b9d8c8db3b2bf59dfd12bec1b88b9a9e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc
! 249af6da2560a1e82bdfb18a6538c809  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc
! 755717524e2ed26d734dcb990cec4558  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc
! c94d7d392237a6a290ab9534788fe4b9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
! a6d8d885387cfc530b781efd83765b09  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc
! 792fc6233e5547ceb3d71d5302f1372d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc
! 95c1376ce50bd3c8f3cbc61067dc8f1d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc
! 9d5c2ed30a3f49d82be5c2f8c16a6813  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc
! 3bb0274c3c761e1850d0e76bd656cff4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
! bf47993a254af066b5bae9fa1f0fe910  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc
! ec91de954fc9c2789e221dacb4ffbca7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
! e441d28be479f14cde7469ef9eb05235  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc
! 27ed940a2d28ad572a1c205a16e517d5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc
! 525ee54fbf5f6c0809f051bc3edfc2c3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc
! e302795ec1444a0bb673a740caca6bc3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc
! d96307cc148e685dd468694d00a828f8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc
! f01875f96c5ef73d5e3c172fd0c8c90f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc
! a73d76af7bbdfd6612c89e22b4776433  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
! ac1a76055486d633a2c6b38671caf5eb  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc
! baa9c54dac98117260707721d02c4a79  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc
! ae4f8d7ab22a04ac0b320f0ad3ea4d67  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc
! cc71a06b4886db2421e59c429420c42d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc
! b81d09207aaf3f12a682389fc525ed3b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 6e7abe8aacbeeb5e3aeea8a98b6e56d6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 075e701c8b505fa87403bf81be159d11  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/1.cc
! 971d7d53c2b17068355bde47523313ce  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc
! 9ec160ccf0e268c7966d87f31634f103  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc
! 6a187969ad39e339f5f35eef1508da23  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc
! cc62d22f51171da3dbe23761d125d84e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/2.cc
! 076b80e95f36609e3307f72f657cb785  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc
! c42220db7231d9df7d62ece955641935  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc
! 5ed764096a79013307abba04b241b762  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/3.cc
! 5fdc543face3254f94729bdf2e49a2c2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/4.cc
! fd1d6352cba168915becb5f5d36d66f7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/5.cc
! e59703aac552bfbe2450937bd39f16e9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/6.cc
! ad343b37449fc4f3e62ea2c5383baaf8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/8.cc
! 3a8abf6c952716f83cbd34776dd41d47  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc
! d572c42a316d1e00ec8d3192b30b619d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc
! b4a592d71565139b3f5d5ad58ac0857f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc
! 3177773a902106edc72f42e3411f0650  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc
! ba3bc46c731144f609394a18b02c83d8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc
! 99bd891d48636301b3b0534f16da91e6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc
! 5229aa06cac433184fe6a440df671b5d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc
! c1adf3c4c2ac2d2fbda161b90c930e12  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc
! 8980acde24a9ff951840b432976edab7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc
! 59dd6d015b4b7dde0bc8bfa85db44b35  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc
! 90c7cbea83dc5bcf5b13af79e762183c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc
! 899ed82ff637d7de23cee2a355e3868a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc
! 2054f3c96671d33885575afa74785c76  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc
! f279981e83d731baad7269ca06bf36f8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc
! 2da7441ce9166493f8ddafcbfb57baf0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc
! a4217070d3cd61878bd0945e29aff75d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc
! d09ccaec81c026b9d5f2cc200ea97c14  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc
! cacb136a30844112f1238ff291f004b6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc
! 38404a2fa40e7ee1ec05020e8632d41f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc
! 719ce1c43234fc395a2bb100d7adcff6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc
! 662c27cb5bf474e451f40eea0c9c92ce  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc
! efb58cbc57a4636e95d8cfec6781ed4f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/3.cc
! 69af563dee429fe96e226b061a65f173  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/4.cc
! a29915d8b0f9c81a850b9524dad304a6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/5.cc
! da607cef52f097f5e9e969bd865fe990  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
! 0e1692e4c4dd150ab9232a8fcd4e7e4a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc
! 50e8a5082d692e73a1afeccec7495bd9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc
! 91908f464be700469d9b8baba2516fb9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc
  d175b74cdf90be7b308276fabe9bfedc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/99692.cc
! 84cc1d6d79807a6c066c48e37abaec3e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
! 2bb9c3d74176d414e8b213791fb65240  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
! 8cb770fd386d8fbee4c967876fdb52d1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
! b98a2eec6c5758a2fd44750ea6163c94  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! b81373675c85aed03a4b9205cc5a920a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
  ebb7447c68529f67037c0007369c17ae  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc
  f2e7cbd42cfa0407bf2ad4408fc38cc6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc
! 8255ed13c4b2bc49a99d6b4ca17801a3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
! 0f284e07a98165a4097f843d6de4f82f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
! ac5ca71fbd2959d1bb843d5b70c05769  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
! e9568368ca5d4da864595f16101165b7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc
! 1b380b999e1f9a33e3847d4133c262cf  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc
! bfe003f137a92166ea5213dfbbe1df49  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
! df277aec12efd3a337833498149cc34d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc
! 0c9cefff37a909d94313726ce9b32a78  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc
! 8e8ddec8ac13ae14c130a6a7334d42a0  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc
! 88d5c5242f52b9eb90dd49757faca148  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
! ab7eac68d352e03588b7230893beabc1  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
! 8db7c5abfba0f452235e3a4a503f8766  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
! ae6226e58b71f435ace453800d1fa561  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! c47bd8cd543b09a8bb08cae89904964f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
! ad5b29e3d910113aba3088f0ba9b7a15  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
! ea30a1ab4c684c3d0938716fcc60b567  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
! 3d61186c8982d877e93573995839a062  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
! 7a8c77e4233c37162eb91ab1082c5e04  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc
! db45e56193fb89aa2dd4316297137440  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/typedefs.cc
! a279d9875276a56fffc43175ce3e2bc4  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc
! c25029e7f5b93d55c22c3a28973ad1c6  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc
! 7bc8008e6571a4ee84fb03d64fe87dac  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
  83ecf48decd6af498e926fc3a67f113b  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/n3168.cc
! e3451ea78c8476f4709820b549d83567  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc
! 3bd367a47258d1baaab05a09243c7932  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc
! d939f7acfe76c019e1f41d99a5446ff0  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
  7ddb76aa072349435f647b2c8021dbd9  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc
! e00b103e421c478884db40a9a656c37f  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/1.cc
! 23ec7d65096047c808857359f409c921  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/2.cc
! 8795d11d1f0aeefd49d2624fd4c1adb2  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/pod/1.cc
! 0c4011eab32ab8a3f28ad81b0246b562  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc
! 566795ea609f3f66a6baad9444c59d4f  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc
! b008c1c5da9ba3a24392197c9912a4ba  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/1.cc
! a9aca17f716ccc0f65b84c3442c8e9e4  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/2.cc
! 3916b8e3a2dd1bb3c175b8e8915fe1d0  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
  34b746c25af9062ff603699f54f8417c  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/n3168.cc
! b8d72a0eecf4e8aae563afd525a2d565  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc
! 0ae73505f2526b6a9d27e5b3be9ad8a8  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc
! 61e027734089a17bfccc3890786a4988  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
  374b556b2a046b8a0b8b251715467b42  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc
! f176b2b71785df5f09a22ae3a64400f2  libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
! 8dca3285e0703cbe8490416363eff714  libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
! b81c03c13e95cdec219e7b31f6b2c780  libstdc++-v3/testsuite/27_io/basic_ostringstream/assign/1.cc
! a203d2d1370c9347c38e79ab605043e6  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
! 00b0db47dab0c71e5fc1a9251a34016f  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/1.cc
! 59b23a9e72bb23f243d1f434fa71aee1  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
! baa5dd5f5847d8024a01d6f8a22c06f8  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/default.cc
! ac411271039b9bd3ec6a60623ce81884  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
! 05ed9c5b5d444d64baad6cbe8886ad8c  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc
! baaaa74e9f97776369eb3753837b79ad  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
! 83d8e24c2474f4226cac3a2f7a45b30a  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
! 96a028d78cd7b870556aafc02ab56024  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
! af06bff00ee757811ed3c57a4ec3d214  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
! c23dda10bbd3ea018264b5761a7d3aa2  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/base_classes.cc
! f63b05afab27e54f2190560ebbf3f417  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc
! 00c44b0d9e9cddb0b59f67daaaf1cff6  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/typedefs.cc
! f15ed577eb16e1e558171ca370c1534a  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/1.cc
! b3573cd4a89996a4deb3e2c3ab1e4ae8  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/2.cc
! a270d7f7e7321001d328fd4753b77e28  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/3.cc
! 6ef2dcb6b7eaeb25bb778f0305135a83  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc
! 635cb7874c5ac3b558287ffaf302bf24  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc
! 03a7326c7d06aa3ab0c5f1f46c2798b2  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/3.cc
! d02dc6dabff50fd9ee2aaa7cb87ac0c5  libstdc++-v3/testsuite/27_io/basic_ostringstream/view/char/1.cc
! 4861ce818104fe71ce507a1c0c565d60  libstdc++-v3/testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc
! 6738b09da613713bc72fd5d0c9890f0e  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/2020.cc
! dd99582200109b124dccf94e56382ff0  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/57394.cc
! 2599b8946833c7fddbae6cfba0e351f9  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/char/1.cc
! 7ab687d77b04a6b6fb353256e87afe51  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc
! 72f8585e98c3fad0b33e2f1ac2d11211  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
! 29eec708d2a03042798b4de58032a7b8  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc
! 6432892a33a32b84bc0f6c33b442bbb8  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc
! 36cd8759ebf1ceb6951a24677d106d69  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
! b9adfd1e633baee2b9b0dcab613be036  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc
! 3c063ec382d6b78af8f726cce4a924ce  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc
! a55f03bbc4d32aa3a43942907abaa9d8  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc
! d7df4ab35e891b26502c417e57defd0e  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc
! 92b798c57be0479d0d848f7d9ff7130f  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
! a3f038ee44f7f50dcf841a4ff090e9ce  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
! 6bd4b483b1e648c06e4ffacdac2d5210  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/1.cc
! 677ee8dd5ed49d37f08674a8994a39bc  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
! 278952f07f37ec3d55201770a4548710  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
! 870b71229c1bfc5850f615e88305b7aa  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc
! 409a1d9447cff67b8c71fc3fe55cc594  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc
! 772b227029d66c4153e5d22bef937162  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc
! 22fee4858aca1908751c28399982826e  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/base_classes.cc
! a7da64a7b0bf23513334e2553e2f95cc  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/typedefs.cc
! e510dfcb3e28de8fd9731db336312d7b  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char/1.cc
! 1148b3e09352b61ac85f973f826325fa  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc
! 6380eed217c108744b19fca51c48cf50  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc
! 33f30b41ab2b63aa6a23d1fb9ce8cb24  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/char/1.cc
! 656f5c6ad8b8632c0a614f33a426d0e7  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc
! feae618b10386367b4bb0d840cd256fc  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc
! ea4a778eb3657d8e48b169e99389a96d  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc
! 269b74229fc949f57a9020221844bd00  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char/1057.cc
! 68c96965695b95dcf1ec97dc6d4be494  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc
! 725469199f83c9e0d882e6b823b6e849  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc
! 8707a0deee557362310d6134971f9311  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1.cc
! 3e17dc4073981e8ddce5fbaca6742e58  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
! 653981cc46e1efd2a0609b9117564af8  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc
! 0ecf497f3263299d7b1d25447c73674d  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc
! 2101dfd095e7c88df53610a134f29c55  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
! 73a3b0f9812a0ce2a35321d29bdaff58  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc
! 0bd5fcf0be16f7b7f4bc13077fadbff8  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/2020.cc
! 685c15d9aebd227b749df84e91445953  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/81381.cc
! 6a603b18a92e0f9f4a676cf1f18c60fc  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
! 0afb084657c4a3df4aea34ee0f943c31  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/2.cc
! b49cf1b28c5857874b2a930621b48c3c  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/default.cc
! 915c3b9208cc3b72aaa190853bf6e097  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
! 689228acd2c8f29e414c4d9f24ae1493  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc
! 3222a3fc7865967f0da0bc1a5ba9544d  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc
! 4f7bf86bfdd74f797bb8066273426ba5  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
! 0caed79b46de553311670a065635d985  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
! efb62548ed0ee1a4997cf0f7a661fce7  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
! afb7f5626d6ccddee002e1557f4a6437  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc
! 4770e24a9e7d7545827bcbc72e1fd77e  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc
! 57a5c55ae58307e4edf7f208830b6cb4  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc
! 938d9132d0944a2e965fc12af17e8fd6  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc
! ba166a7532d4934a958b69e455f7b5cd  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/1.cc
! ce19994f874810114102013850a4408d  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/2.cc
! 73a39296e84a971009e3d4ee742c32bb  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/26250.cc
! f36f07a5046e676c361cdd6c400a440a  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/3599.cc
! d34e6d6645ff6c5ca0f49e14786d7a24  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/9988.cc
! 141d39982b2b9da8cc8e3c1a6405dc85  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc
! 040457374c321567b09e8c369f6b533c  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc
! f45af5aa3a2af1ebb746e840bf9d254d  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc
! 49d0b3f42aa2dc804722a1f10a1d495c  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc
! 875941fd97bf1037fbe09e3ca65d86f0  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc
! 72ff6fabbce0e74319fffe14e7e03004  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc
! fb746d8992ea98a3a153adbbab49af4b  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc
! 4dfd25492a711e243862f8e33002c3f3  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc
! 81bdea3deee43ca83e72f18cfe664f50  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc
! 88f909d25d7b1cdba5e4b97ee38c460f  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/base_classes.cc
! f6588b30c0d843267e3b06deb1044bb9  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
! fe6490481b045fc4b6bdc748ded07431  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
! 0f2211cae124429809e14fc85f28bd66  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/typedefs.cc
! 5b9b53890487f14224715be61a7d6063  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc
! 10f94fafad25e596fc900587e80b5606  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc
! f7ca3e79f272b41b1decfe047b80261b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc
! 0fc7bd920119bc06b1a7c84f0a09cc1d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc
! a0e9e4988108204339430343069fae50  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/1.cc
! b5a51cef400e2c19787c19152fe7ef07  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc
! fe2c4d254cf487ee9fffe37644a9c31e  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc
! 9238fccc06fc7a26c6254ab0c06cd162  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/2.cc
! c0e978629085c19613c9c4d334a7356c  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc
! aa7d03a744a5d768b5a73f603d16f1bf  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc
! d8bf4685adab0f6c920e82df4b19a6aa  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc
! 2b6ba3b69d30b383c892378f38bb1113  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc
! 0786b914a14d1dd3176536340ec57a38  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/1.cc
! e125edec5166c739b78343bbafa18258  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/2.cc
! 97e7845fbfec7d04099b7ec3ab74a53b  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc
! 871ccd5cf5f64eb50bd6fccf71ef37ed  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/3.cc
! 3f9f75a6aabad8cfc99a5e1f900db963  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc
! a9b9ecb0043d9676f258c6f4f6fe0645  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc
! c781c36fdf2f80e08b7c54741e33cdcb  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc
! 4fcd35bf5573df172674986586dfbff8  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc
! 9071a01a62952d72e2876f82148ee140  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/1.cc
! 6abdbfa9a9e07add4247006e3026cfcf  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/2.cc
! ce0604ac591c2749c9909a05f060e3e4  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/3.cc
! aaedf4fd1176f4d50c7f36684993f9ff  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/4.cc
! 297b4ca2f3650f05b20c5113c2970da9  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc
! 3f5466113add07e8955535dfc7730ba5  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc
! 846e037ced70fc576543754651e89ed2  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc
! f781766631f4f3c9089749d4f61a222c  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
! bc4e334f965b3ade83edf929faa84fdb  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/char/1.cc
! 95472e70c51adf2506e2cb09045fa1e4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc
! 8c57c5aa402dc50e3b210a8419afb859  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/char/1.cc
! d8b35f2719b26533ac987df84eeb7ed5  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc
! 4c67c9af834970ef284cac15a7acdd36  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/char/1.cc
! ecd86b7e77989234cbd6ca13e99be61f  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc
! 37849549fc50e22cc57a2fc677a31d3b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc
! 4854d587a81fe006ad7072b4a425ddd4  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc
! 6bbe408239166c9864b4df4fb4815f1d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc
! eb0101ceeb568c92b7c2f52f61a2cacf  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc
! cfcedd118b032750a0f94f108c2daed6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1.cc
! c3be7d3ddf864eded0b6d9a3e300bc0f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1057.cc
! 59efb184edb30376835062c1a13247a9  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc
! 8429dd9a6fd11a680f73ca47ca492f1f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc
! a06bb902961e5bc46607daf6c0c5ed5b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc
! d65872e6b53deb87180a2323b1da4708  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc
! 1af67890ec1959aa08989f677ba75e8b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1.cc
! 58526f6477d50ef6fbed0c48c78b20c9  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1057.cc
! dc0024eb74afdfc87ae14200580af518  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc
! 42b3f460ace4556dc3878a59600a8929  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc
! 0bbfb4dcf512ff8a7605c624e741365a  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
! 9215e911bf8463746272670d9d6711f1  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
! 7fabd46f1875b3cec8acc68fa5bd778e  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
! 69dbe4171aa045f89c22fcab92c9af33  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
! 8d969b8676ae99c7066e2569f9b430a1  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
! 734505a71f63635c79c4af7eff5f05c8  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
! bebef79dc61ec177ebffd0b12528704b  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/4.cc
! 9be71207b0e7d61e73c1065aea5d2218  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc
! aa1e3ff6ec4f68089a6c08b253305e59  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc
! ddc548797c4828f248a20475ca9707aa  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc
! 188caf7b78391730a0145721385bbd01  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc
! cc19e34c508508e7871dc192b34febf7  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/4.cc
! 77a2efea65e231ea08f46230d92f76dc  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/char/1.cc
! 4500f68678e664b104850c50d49cd34e  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc
! af584112212b193b47b4fd698367cd50  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
! 20b710eecc5d61ed3bf89b94e3c8bd57  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
! 14963b53d87b7f8320eb832bf172a50c  libstdc++-v3/testsuite/27_io/basic_stringbuf/view/char/1.cc
! 706390e349b308d626d70291389209e9  libstdc++-v3/testsuite/27_io/basic_stringbuf/view/wchar_t/1.cc
! 38ec6d891d6d4a47865a059e215ea0c8  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
! 5e8a8a93e5870b17031c24e2b4b199dd  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
! 09501862893de29ea85b24bc560b9387  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
! 08d6f873ad2dd2b33b54244f3422d83c  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/1.cc
! 43191b87ba1a0a6a9c37f403ec580735  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/97719.cc
! 73dc42f24fdcd0363a4d59c51e4a61e7  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/default.cc
! 5ae9793bc0afb442af925719b9a39662  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
! a0bdc746922d2953b04c63a915b5cc4c  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc
! 02556a146755991193644491657c09d8  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
! eede89e40b7fc6fc64e878488e4320cb  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
! 90fcf134371bdffa567cef6cf7b1e0c2  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
! 5e43fd1865232c249e047bb27cddb8e9  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc
! c5d0e05ca381ea222df103273ec957ef  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/typedefs.cc
! 783eb9047cff5478c3062fe0dfe73e4f  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
! f675c871e198a9426cb7dc4bc95005ad  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/2.cc
! 8408c2a389a511221203a56f1d9113ef  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/3.cc
! 2c59a435ed66439814e27d9c7884bd00  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/4.cc
! 15642f049f6eebf82de44144f74e613e  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/5.cc
! f1727bfc25740a222855408d6d4fb5f5  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
! e8295924f4e5264f13e49f81c52134cf  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/2.cc
! d17c6253f2cedad22f109ac6f77e58fa  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/3.cc
! a8e0730088f40f414534c63fc8079003  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
! b17ebd49a2351a5a06628f8c9d824a9c  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/5.cc.cc
! 88f4a448d7064c699e657f8b44faabd9  libstdc++-v3/testsuite/27_io/basic_stringstream/view/char/1.cc
! 1fac8ab5d0edb82b6e006b5e7204e2f4  libstdc++-v3/testsuite/27_io/basic_stringstream/view/wchar_t/1.cc
! fe0d2af1606d21205f2da67070530e99  libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc
! b380f141304ed16cac8d4d08c4342708  libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
! 2f08d8d0fca981a79bbabf0cb7a1ece9  libstdc++-v3/testsuite/27_io/basic_syncbuf/basic_ops/1.cc
! dde98636ab5d5a16787100b1ffc87d2f  libstdc++-v3/testsuite/27_io/basic_syncbuf/requirements/types.cc
! 49b007252a72138dba9b8528000eb83a  libstdc++-v3/testsuite/27_io/basic_syncbuf/sync_ops/1.cc
! fe0d2af1606d21205f2da67070530e99  libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc
! b380f141304ed16cac8d4d08c4342708  libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
! ebaee6f38a0486c639f3b9b67c61025b  libstdc++-v3/testsuite/27_io/basic_syncstream/basic_ops/1.cc
! fa3ee22fd6c3d238f7a3fa6d63f36769  libstdc++-v3/testsuite/27_io/basic_syncstream/requirements/types.cc
! 108a1d6928448520c88524b99fbe1f7a  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
! 0f940f120ead5de385e820f2ed0e19ab  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/lwg3171.cc
! 8102025532696a5441c7c8e965f86991  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! bdf657cd22f124baf04ebab434af157a  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
! c428626c422fb88386fe757096872b03  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
! 3f5a48f1617fc98ae4a82b610c4dc644  libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
! 8776f2dbe03dc89e720cbdf2268f8787  libstdc++-v3/testsuite/27_io/filesystem/iterators/97731.cc
! 672bb0d85f1d113d39b89335fa803865  libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
! 217108d8c5d7ce9f47af17889236cbeb  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
! d75cd276368c0b1c8203756ff611b3d6  libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc
! 4563a721efa1a4d8061706a3d9d89f62  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
! 459ce1752484ea23279e87e8433553d3  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursion_pending.cc
! a4a432360a8ed2c0d9f582958d93cc62  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! 5147780b22b7e8b5d2a34523217a494a  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
! 667bd7ef131ee416eba5a5b0d6d31ca5  libstdc++-v3/testsuite/27_io/filesystem/operations/all.cc
! 35978ee44efd20a2373d13bfab890b9e  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
! 96e7a09ba65d743166089cae46676bd2  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! baf6585ecd9476c87e4659aa815018ec  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
! 8316659f617960cafa349695f2ac163e  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
! 1d1b529d3483bdbe217244e7f1cb0c1a  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
! 6742f3d96acb605f9150065bc1b9ed9d  libstdc++-v3/testsuite/27_io/filesystem/operations/create_symlink.cc
! 1a326be911f45be0260f9204216aa4d0  libstdc++-v3/testsuite/27_io/filesystem/operations/current_path.cc
! ef6741c85f460eca4314d164cc9ae618  libstdc++-v3/testsuite/27_io/filesystem/operations/equivalent.cc
! 40721b7e2bdc65d92b93ed61873cb807  libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
! 841032b8606254bba1237d18bd980abc  libstdc++-v3/testsuite/27_io/filesystem/operations/file_size.cc
! db20c8025ec30fad37cfa2d5b80f4551  libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc
! cf378f73181beaba7b1b39f333d62036  libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc
! 09ff834ce61133a2e492e50eb4d58eb8  libstdc++-v3/testsuite/27_io/filesystem/operations/permissions.cc
! b18551a9814d5ac2a9fb185d5b157058  libstdc++-v3/testsuite/27_io/filesystem/operations/proximate.cc
! a5809c7b304e254f64efaa20b2df4243  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
! f9430d083f31d78fe0f9232698671bfb  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
! c89316a65d51a35060511a7cff2f1ef7  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! 5ea872676081d4938976d877017641de  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! e24d44f581a05c8e683843dc9fc1a8f3  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
! 77c45eae58f617c212ac6f4b4df1ff9f  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
! 5c0a1c472ba09b475da811d8c00cc63b  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
! 94e6bba440231fe2b553fd834ccf6178  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
! 5c1d700abf212e29f14784e2e523aa2d  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! 0062e5d140893182b615e814cf1ae46f  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
! 38dee53dd844f69a702bd8d79b5d671b  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
! bba1248fe386d1a1a21631e774815c65  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 28c0d37c0e2f90cf6a142915f8ff0700  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
! 349a648747f4bf9c0d342ff7c45920fb  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! 20782bc69670339d607465cb18354265  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
! 861a6993ae26ded87963a346a049ff9d  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
! 9559b364cb25d3986b8143a17ec972eb  libstdc++-v3/testsuite/27_io/filesystem/path/compare/lwg2936.cc
! dfa134f23b3c0f4f81717047594185a2  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
! 1e26aeed4daa792ea6b273b734028925  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
! c70adde96c3bbf3b5386cac0f9c522e9  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
! cb0cbf0971f6ee821acceb0d7d17e431  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
! d23486b1860ea855f9ad3ecf8f831449  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! 1404339a397379d82e324c049178cf57  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
  a22e69eb2c027825b8fb3e0e6df6a97d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc
  3bc7c7fa91cdfae8b85e98c050b994cc  libstdc++-v3/testsuite/27_io/filesystem/path/construct/102592.cc
! 62be85132974055d79ef2c66b9d5c87e  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
! 7ce3d0b79e41297664f123c1bf32d35a  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc
! c64922a75e4fc4cacdce9eac39563b6c  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc
! 3942fb1d3a926fec720c459d973c2f19  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
! a6934c3c16b2e54ddf466f543bb7f5a0  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
! 38f0f98a3816f51d44b4c3a09093a1b1  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
! 225c03c4b7e668b6c630147dc9e176c5  libstdc++-v3/testsuite/27_io/filesystem/path/construct/locale.cc
! 6879ad43df6b85e1a33aba7ae8859869  libstdc++-v3/testsuite/27_io/filesystem/path/construct/range.cc
! dee5328e9f295c49cc82294cfe99ec7d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/string_view.cc
! a57b31062dc760dbc25bd0507ffea337  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/extension.cc
! 9553721092afd0023e807531a6d8524b  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
! c5ce986db76d6dce85145cb986ce140b  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
! 421848d53c89f679793e881b0c438d62  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! f81ed5c323ccffa8c6490af8c4510e68  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
! b1b0d71c2291cd595ff8ddbaaf29a367  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! 6b5faa072ce24e7434e13c1b97edd182  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! 9924ca60dfa604f21796c74ea943cdd4  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
! 92515cbbde50cb3a65da7bda800daacc  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc
! f83fee9ef449da9b619c9df07054e0dc  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc
! 3d53e454ecc1796f6050ae1b74c67a65  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
! affceabc04d5853f57f1f2a92340a275  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal2.cc
! 49b5c009ba0d62caa658310cc5c1fc40  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
! 29eebef77f32c19b96e6de239361105f  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
! 8d1bdbd3c139b1354108d47518d7189f  libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
! 09105b641f781043674182217d95caf4  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
! d109e7d0c7a18da938635f2adf5c1018  libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
! 67d7c68018e4234358477d54b8870d5a  libstdc++-v3/testsuite/27_io/filesystem/path/generic/wchar_t.cc
! 3f09ad4e87b65897e3d4f1240ece1139  libstdc++-v3/testsuite/27_io/filesystem/path/io/dr2989.cc
! 82d33aa0d3bd62ffcceb5620c90070a9  libstdc++-v3/testsuite/27_io/filesystem/path/itr/components.cc
! 2bdc938b9a862baa2808ddd0194e1f9f  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
! 345c0bd7ffd3f75974bd0a60d098841c  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
! a62b340e31f76f99d5ba5040bb2b0a64  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
! 5ce60b6ef4fd4f39550cc057cb2b23c8  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
! a6c1841a0b8235e41a4c697ae6655b28  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_extension.cc
! 96ad457a40f0452460446114f9150b48  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_filename.cc
! 8ea6571ce0b5bfef552cd23b16ab596b  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
! 456d0143eb3afbe52ef95e867ca148ee  libstdc++-v3/testsuite/27_io/filesystem/path/native/alloc.cc
  697f6ac048e02e33ef8e766bd5eecec9  libstdc++-v3/testsuite/27_io/filesystem/path/native/conv_c++23.cc
! e7659f7979ea3419df97fac5ab117076  libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
! a4ef61f75875b4420164a45127abc39c  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
! 20a8841494b1422236a6b92d3b7d5ee2  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/append.cc
! f04d0a36a0b3753731e560b886e7c770  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc
! f52c7bbcb4cb8612baf34abf9dee9615  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp_c++20.cc
! 4f629fb732c65e0504c53df6c36ecdde  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc
! cf75a24fb08168b7cd20fb81659938a0  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty.cc
! 2771b990dde391cb3a3f9f7106965461  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty_neg.cc
! 6475f83b973eb09c723825735ce68a02  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_extension.cc
! 7dfa9e228b9c535d6ec7fabffcfd5a86  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_filename.cc
! e55538a4f92a813d8f22280539aa4446  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_parent_path.cc
! 19ed81d803f0f73c8641e18a31871b24  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_relative_path.cc
! aa421828209ea41c5e09507a95f9b8ca  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_directory.cc
! 2de92d16f05b76c9cdd012aa97ced668  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_name.cc
! 5e2404387ed930f8ebd0630db0610cff  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_path.cc
! 0d7dac43489a5bf1e10f8f1541b00c79  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_stem.cc
! dc75bbce923c825ab47d0bd36dd7e8ad  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_absolute.cc
! 75cb347cefaf380e32a47e6fc406c99b  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_relative.cc
! 7b7c21742f4a85eb543b1ca39938c6d1  libstdc++-v3/testsuite/27_io/fpos/11450.cc
! 130ff151c8f42d44c9a66f3406885ab9  libstdc++-v3/testsuite/27_io/fpos/14252.cc
! 447968fe239b08c06134b4747cfcb755  libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
! bfe447c586e93d81a45aa5607d30fb2e  libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
! 54afad00bedae119a6d61c8c828e95d6  libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
! c6f4743378d737a8d057330664222c1c  libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
! 07b083be672fb992e93e55425d9340d4  libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
! ba13a6033e2b2d114068b6966b9d2eb4  libstdc++-v3/testsuite/27_io/fpos/14775.cc
! eb468c65cc1590a850c8e1b28d7ecd38  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
! 83854be104b582db07e51aaea07ab160  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
! dc58607b76e224364948e84a2b7669d4  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
! 64e91fa679ddd3fff554cd0c42f833bc  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
! fc2bfdc9e7cfdc0507754d889419d74c  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
! a2046578566e53503d113a3d69b525c4  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
! 59cd1772458237e48afd0bd2c0d2e557  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
! 8ddefde16b72cdff55bab37b3d7dde5c  libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
! b1b3eccdc0ab1bacee458737095b34f5  libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
! 54f967af716c45de2096bfd0678a74b3  libstdc++-v3/testsuite/27_io/headers/cinttypes/types_std_c++0x.cc
! 1bb24776204549f06c8d4194219ff4e9  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
! c5fcc2c4791914c98a1700d863cf30a9  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
! 83298d0f4c5d26ccf1c403ea87365989  libstdc++-v3/testsuite/27_io/headers/cstdio/macros.cc
! a33ce756206b59bb76fe79cb0b21824f  libstdc++-v3/testsuite/27_io/headers/cstdio/types_std.cc
! ca3419f1f41a5ca771dd1459e1085fa8  libstdc++-v3/testsuite/27_io/headers/fstream/synopsis.cc
! 0fbb67cf6a2b0820cf42e559aa1e633e  libstdc++-v3/testsuite/27_io/headers/fstream/types_std.cc
! f4a72ddd90329bd60ce6caccf4cc891a  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
! 807430e148e0a8eafafa878325b00e7b  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
! 0edf26734b767cce0abc080f0f224dd7  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
  3837f045941d29f32c4168983a309941  libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
  16eebae0b45ab9320a5df94e03dfa4e7  libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
! e93e5f7a98781c59be4a4bd0ecc9edd6  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
! 173078627d3db553ce481d9eca7bd8ff  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
! 8e77589022c101822e7097f6265d510e  libstdc++-v3/testsuite/27_io/headers/istream/synopsis.cc
! 0580e402e5995d3183751d409d5d49ce  libstdc++-v3/testsuite/27_io/headers/istream/types_std.cc
! 86d5bfbe3874bc44e3a80b43e5d08217  libstdc++-v3/testsuite/27_io/headers/ostream/synopsis.cc
! e66d0e31dc8e02758b978d9c7a321488  libstdc++-v3/testsuite/27_io/headers/ostream/types_std.cc
! 83840713ec6ff488e477d9cf7bfd9392  libstdc++-v3/testsuite/27_io/headers/sstream/synopsis.cc
! ed203b31ab901730a17ebb906ac0d724  libstdc++-v3/testsuite/27_io/headers/sstream/types_std.cc
! fb2fc6abd722a2da2fa07cc7117bb6de  libstdc++-v3/testsuite/27_io/headers/streambuf/synopsis.cc
! 4261528481d7c990df514dda53d8efef  libstdc++-v3/testsuite/27_io/headers/streambuf/types_std.cc
! 8c741f9f1b22a47bbf653044e112b088  libstdc++-v3/testsuite/27_io/ios_base/callbacks/1.cc
! e028540e70d51db66b31c9ecac017248  libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
! b6118a7022916a762a0be814cb8029e9  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
! cbf8d8d9203744e733258bc2795e1272  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
! 23dabe3a9bef6717e1704e4a7960acae  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
! 104b08e84582e184ec070c5508bc3d22  libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
! 3c2edb68c7b7daf6acdab196400f49eb  libstdc++-v3/testsuite/27_io/ios_base/failure/error_code.cc
! 2acfd89d5a41eddabdb4ef2bcea88b45  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
! c33a1391be0a8c2b04cca623166d349f  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
! bd86d5dfe602e41ee3f901b45241d315  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
! 0e783d7c87883db956dee4b224b0b0cd  libstdc++-v3/testsuite/27_io/ios_base/failure/what-big.cc
! 5ad62a3715876889a4354becfe67650e  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
! cfd1711571abf36c510406072f87f228  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
! 07126fe32428ece0d6d53dd99eb746ef  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! 3540744bc044709931908307075d54d3  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
! 3c78da7fe7843470ee2c1358f032440b  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
! 050225d768c53fef9c827807ebe171bc  libstdc++-v3/testsuite/27_io/ios_base/storage/68197.cc
! 0952eddacdcfa0d30116e92a39c86955  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
! 77dc3188ee11eda5743eb8db4bb48319  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
! 5b0a769020d869a1115abf093676a558  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/2.cc
! 89dd00059553534be869fe2e4a7fb614  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/9523.cc
! 901d1e64962cbc33acfe594e2b438742  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc
! 566bdbbb13418726b86ae867c62b3147  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
! 8e70846ac07560b7dff1ffbda579b32d  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
! 91ccbfe8fb1b42858bda752f995a8636  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc
! 55bb3470095ed07a36174791b9b7b169  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
! a7753ad217f6a9db04eda59ea1eedde0  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
! d0ed05070d104246453cd2f75c50f53e  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc
! aca4affbfcef1968398515dce7b4fbd0  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
! ca415fa238785d5e6aff773128dc287c  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
! 6c4e7b384c9e288f7058f60bbed96d5d  libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
! 4a0a1281f68f9ce03e7bee96946ae3df  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/1.cc
! 985275516bb17cb2437cd1c0d9335208  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/2.cc
! d9c8631a9dcc3c24a5b1612226529daf  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc
! d437485229a7e0a95ebd24858341db97  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc
! ceeb63d65f89db72615c5541e22cc9e0  libstdc++-v3/testsuite/27_io/manipulators/basefield/char/1.cc
! ff06448329baa1c06328dea778ee6217  libstdc++-v3/testsuite/27_io/manipulators/basefield/wchar_t/1.cc
! 1db67b817840da392bb0abbc52519e51  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/1.cc
! 53e332e2a022ca71ea030a255c442faa  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/51288.cc
! 694e1a2dbd81fad828cb2f84907cb96f  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc
! 4369b14d89f3ae467a4fc0adb5817a7c  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
! 57ea7a6e5d482b5441bd701a55e71bec  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
! 671f2124125a7d0169da9a4da18a5e8b  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! fce483af0606714dcd2de7e74092938d  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
! 5ba95c9f75413e8ceb39c874e7281512  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
! cfe1b2401e3821ead0ca57e2cd6b2ef6  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
! ce0a7934057858623bdc0646ba9a3b38  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
! 53be036d0c9b1d2699dc59fa1bf0ac79  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc
! bd61fce6c1f1d1f7d744594e05ceef74  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc
! 8d33200b10fe95d48f28a151ea5dbf3b  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/1.cc
! 5b4dba89d97417de71defcb48931de2d  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/2.cc
! e6b06c49449e8378e23830de5f9bf67d  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/1.cc
! ab77d7c9a74260d82a554de2b845ba38  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc
! 6afd90ac79bd9a6586035da628690e93  libstdc++-v3/testsuite/27_io/manipulators/standard/char/1.cc
! 8998224ec15903cbec28e9921bc03ff0  libstdc++-v3/testsuite/27_io/manipulators/standard/char/2.cc
! 48e9a13cbc4646d38c68dfcc1d29ed1a  libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
! ef6b28bb244e689a9a059b181117ab35  libstdc++-v3/testsuite/27_io/manipulators/standard/char/dr2344.cc
! 2275dfe1bad01f56e5151dce689069d4  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
! 68194be8d1df300736c207ed1da04aaa  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted_sv.cc
! c1d6b67e0265b06cc8e7e24bdeb7745e  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/1.cc
! 3588884e1c856bc131ed5b184f4ad910  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/2.cc
! 2355c6efa1cb366aef70e6c1d13560b4  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc
! f8bfefbf414a855908f1f06a76ae7021  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
! 63047d9a07fd5ad15b306335eb1c2600  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc
! 5ce406ccc6d033375ddb8b7b2eeaf655  libstdc++-v3/testsuite/27_io/objects/char/1.cc
! b102140282e40d0067deedc373b1bcee  libstdc++-v3/testsuite/27_io/objects/char/10.cc
! 49ae615a8ea534eec7d1bc8e29db80b6  libstdc++-v3/testsuite/27_io/objects/char/12048-1.cc
! a8421be87f6857ac7f4983dd64e5bf52  libstdc++-v3/testsuite/27_io/objects/char/12048-2.cc
! ff69878702deb3bda70499fc6625da07  libstdc++-v3/testsuite/27_io/objects/char/12048-3.cc
! 8fd63acbe9204d04979d3c2c47f9b7f4  libstdc++-v3/testsuite/27_io/objects/char/12048-4.cc
! 0d3cc85ef7ce8f9fe93fe8619e39bb04  libstdc++-v3/testsuite/27_io/objects/char/12048-5.cc
! a96de3a8a5bb7e6e9dbd2a2c2b526b98  libstdc++-v3/testsuite/27_io/objects/char/2.cc
! 25ca83d075620aaf9214b3246b13aa57  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.in
! 224ef882ecc652a127a457c80c4ce32c  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.in
! 8ecd5c01750f638bf135c102490a354c  libstdc++-v3/testsuite/27_io/objects/char/3045.cc
! 33d25a2bbd72204e170e39c962310b17  libstdc++-v3/testsuite/27_io/objects/char/3647.cc
! 7e4d87d966c2229ffa3c135ecc372628  libstdc++-v3/testsuite/27_io/objects/char/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.in
! 010a644a4fae8c4f049260d4c5bc7ff4  libstdc++-v3/testsuite/27_io/objects/char/41037.cc
! 548040c2f7b47302c744282c06e2cebc  libstdc++-v3/testsuite/27_io/objects/char/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/char/4_xin.in
! bbd4dadea8903f98de6bf789ecada030  libstdc++-v3/testsuite/27_io/objects/char/5.cc
! ac6214f71e93eb4baf556c32a8a926b7  libstdc++-v3/testsuite/27_io/objects/char/5268.cc
! 6dcd6b6c0e9b4dfed9e37146bf7e94d2  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.cc
  81dc9bdb52d04dc20036dbd8313ed055  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.in
! fe4d38625c8dac262fe2bc69265dabbb  libstdc++-v3/testsuite/27_io/objects/char/6.cc
! ac8bbd6c22eadcd956e7f577faf131c3  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.in
! de1b0d97ae2fe6962513a2231db51d6c  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.in
! ff5280ee0a73733749a80d095916ae78  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.in
! 68134097eb6afa17db9b15a40bbf99b0  libstdc++-v3/testsuite/27_io/objects/char/7.cc
! 123a2edf46efbae4d2cfec399ae86c06  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.in
! dc01009b2a7a196cdd487de116e2ee17  libstdc++-v3/testsuite/27_io/objects/char/8.cc
! 8f86ffbf10f82edb8b711274d189b2c0  libstdc++-v3/testsuite/27_io/objects/char/9.cc
! a88daa402a113c2e456c24b6ab190152  libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
! d18040de6ec736125b1c2ca8b9a5cba7  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.in
! b69568014a6b1210e2b8d5e064c2e823  libstdc++-v3/testsuite/27_io/objects/char/dr455.cc
! 16a8f6010391db9d48faa10ba290fae3  libstdc++-v3/testsuite/27_io/objects/wchar_t/1.cc
! 1bc55d53b6fba6e3cc011c8ebff06105  libstdc++-v3/testsuite/27_io/objects/wchar_t/10.cc
! 50f28734137b80e1fcbe7c513dc6b2db  libstdc++-v3/testsuite/27_io/objects/wchar_t/11.cc
! 7a19dea6af4177c97688661e0534477f  libstdc++-v3/testsuite/27_io/objects/wchar_t/12.cc
! 38cfee9f2ceb5a617a0bc70345c07690  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-1.cc
! 1cbd21d02506b9926046035257b83aa1  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-2.cc
! 1900bfc38a06d38273d5e22245585669  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-3.cc
! 7222ecac8262e8bc9acd746eab04aaad  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-4.cc
! 5799ead1aaa8a3bb9c18d78db6d1082c  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-5.cc
! cf54b41541c7b8be7af3ad71b25d7b75  libstdc++-v3/testsuite/27_io/objects/wchar_t/13.cc
! 8892417ecdfb09b910a497b71c8628c3  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.cc
  d577273ff885c3f84dadb8578bb41399  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.in
! 4ac0a35863861821aa6f1bb6d2bff5ea  libstdc++-v3/testsuite/27_io/objects/wchar_t/2.cc
! 7e428089f5145cb0bc06a216cb245810  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.in
! 169cb507d71795c708e440329a6b4061  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.in
! 18af5d2a1d216b8f153aeeb72574cdeb  libstdc++-v3/testsuite/27_io/objects/wchar_t/3045.cc
! 124a2ce21f5128c8324307f4d055c0f2  libstdc++-v3/testsuite/27_io/objects/wchar_t/3647.cc
! 4d3e74e55f70ba2204730ee5bf6cb81c  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.in
! 6504dcd0e1a6dd31bd764f018ff5ea14  libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc
! 7ce06bad8ef07319c69adc8311f00bf3  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.in
! 02a893408e58eaa2cd65831707bcb677  libstdc++-v3/testsuite/27_io/objects/wchar_t/5.cc
! b16f4764375da58fc8725d2977c85f0c  libstdc++-v3/testsuite/27_io/objects/wchar_t/5268.cc
! c9b9b61152af528cc6a9847801e62677  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.cc
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.in
! 34607acc6f6ac4fe8965d4ccb93cb136  libstdc++-v3/testsuite/27_io/objects/wchar_t/6.cc
! 08015ba11ff1f4d3b7012033f5ec39bb  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.in
! a34a7c48fc8e7fe27d4cafa580e1220e  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.in
! d09bba782678bbd755ae592648e22f41  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.in
! 67d613239a22b0f102ef628646eae857  libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
! 817f188112a3ddf3913d27b6e54f769c  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.in
! ea27b09bf681e34cb0d2ec607bd03017  libstdc++-v3/testsuite/27_io/objects/wchar_t/8.cc
! e7fdf994adde5c943203009987e96e90  libstdc++-v3/testsuite/27_io/objects/wchar_t/9520.cc
! 0839f53595d179f51a77f4edd96c5b99  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
! 2b1717e3e059b5fdde295eb397792c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.in
! 6b2b809a0339632804d4bb0396a7d145  libstdc++-v3/testsuite/27_io/objects/wchar_t/9662.cc
! 280a28825de131bf5c9a3865cd2f18fa  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
! d0cde44e85017f24b167af61966352f2  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 720ff6f8ae373cb148e859da66f73a52  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
! 8a8109e79feeb14172e6341a4230827b  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
  fe40135327d86460d13b734f54db39ec  libstdc++-v3/testsuite/27_io/spanstream/1.cc
  44feabe2b97157af832bd4b647727182  libstdc++-v3/testsuite/27_io/spanstream/2.cc
! 7b4979f7cac703bc8a45260b81e2fd43  libstdc++-v3/testsuite/27_io/spanstream/version.cc
! ebfba19d8a3fd6d3e27bb7b0a3577134  libstdc++-v3/testsuite/27_io/types/1.cc
! b06a0534dbed66ce7509c33dedb7fe0d  libstdc++-v3/testsuite/27_io/types/2.cc
! 98c43797dbb511da269fe5daf06f3c8d  libstdc++-v3/testsuite/27_io/types/3.cc
! 47c7f43bb6153743c7431f0c1c162142  libstdc++-v3/testsuite/27_io/types/4.cc
! ac17a08648e0976b0c7d6fdedfa3b873  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc
! b4de49ecda034d158711adf6d15c8c16  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc
! 80c695ed0ff87f3b529b00e4cfb3bac6  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc
! e8347ba03b7f5378d58b64d4e922c498  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc
! fbd79b13cd7aef5ecab357fd611ceddb  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc
! 32f14fe34dc2dd40d6d3d6a4b891f3df  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc
! 0937653336b347a906ba43cd94587acc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
! e274ba5050e2102a311fde96b3ce7b5d  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc
! 9983e99d52957755a613483612cf326f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
! ff8182d14a432e985319ed4336aa9981  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
! 645ef0437066fb0e08a0cedac71058de  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc
! 06fa934bf474857e0ba0f32eeb9690fc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc
! 6b8c928897563a940b7227d78631fbc1  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/68863.cc
! b0311e70fb6f446f4a6cec9e7f369a23  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc
! b3c88d81c73b16520e96fe8e8d6ece21  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc
! 9cfe50ca41df6f9fbe5aa09d7ed5533b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc
! d8c997bf6115fa8c0e5c2b05d79d7314  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc
! cdeee8f209d889af85384de658b1bd16  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc
! 8c67da8b417d116063a9d3e95031530b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc
! 7d6b7590e51132196077e3704e4045d9  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc
! 55e2052bdbd994c17ce858656aa6a39b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc
! 02cfda3a505090ef5663594f178c9a67  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc
! 5f89e68dd3a252136755fc8aa506bd72  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc
! ffc9d3859cabc171a5c08fdc86388590  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc
! f16ea0fccc236a616eb3de45deedb165  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc
! 169988b204b1c2552c2010cbc0b05134  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc
! 59891eac941f17f773b6a0c4fe8961af  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc
! 8a3fc4297f3e1247f1bdc8490ebd7c94  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc
! 1e803d3dcd7cf546f3cb2b4d984eb303  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc
! f20c36d62275c2e2c16acccfab982918  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc
! 3f35e30072b5103b4c271f60cd0f936f  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc
! 209884e5f36380bbcb6b2a976c99f5fc  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc
  738353c203eb8b056c97aefd696b8662  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/multiline.cc
  2b65ead41cca6c486af5b12cb9181709  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/103664.cc
! 3357e92ceadd3730f3898c7ed3935e4b  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
! 1decf72dc954b0b30b057123ec2d6e3a  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc
! 4dacd7cb18423e49e34fd5ff09a95bde  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/dr2213.cc
! 76803a92524aabfb29256da583280240  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc
! e4f0b98d7633d7fa5169ada9c60b6d46  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
! eb5d82166980050e50b28066cdae620e  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc
! 192dbc591a3f7e0de8c60afb8e5d44ff  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61424.cc
! a8a7c2bc40c209a83f2fdcfa7efafff8  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc
! 1dd66396fd980573aa8f3bdae642beb5  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/basic/string_01.cc
! f58c274ed3f1122ff170aaa04a827305  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/dr2332_neg.cc
! a49f6ecfa8fbac071d3e6bf19244f685  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
! ebc3648862035cc00466203452c9254f  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
! a1bc01dcc801107ec3da084f4d0af073  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
! 82d8b95d0386a90d8261f4c5541e2288  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
  be5036bc868f3f3488b30d40a412c9c5  libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc
! 474984e9b4a0d71ca78599db5aa3d025  libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc
! 133deac9e0fcb438e17191f596725c1d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
! 9494f381ee6ccd4befca29194dc8f0c0  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
! 43935cef9a71dc7c3afe31c80c105184  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/lwg3296.cc
! d1f82037c575284f81d1276f1d689e02  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
! 41d2264bf94546e471405f9c846bdefd  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc
! d04d421a07f5f9b2336e073148a0bf95  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc
! 6ad78708cefb6b3103d7868ad9ab0765  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc
! 7a94c2f5096a320fae0fd0f7771f580e  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc
  195cadd08b447221da1077de685740f9  libstdc++-v3/testsuite/28_regex/basic_regex/assign/exception_safety.cc
! 8de75d1cab4a3a9ddf50cce0aaec0891  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc
! c0eb952f8942f59343eca8235bfcea02  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc
! e0abd274783b8c83fc8f3c0e2231cfc8  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc
! a52165d81016c17de6af831bafade3e7  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc
! f184d5a1271c4d250c53677a5b22ebf3  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc
! 92db27382f21c6fe1b4360b113055296  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc
! 3056f60db542b3d224e4819e80d50371  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc
! 8476f093f1db5ed79bd854e4b06f5a6f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
! e0d89fd67b747ceaa2e060416f261294  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/83598.cc
! ad2b2665c02881807d9dedfb0cd1bfb1  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
! 0c86daf7206b7bceb1de2ad60cb847e8  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
! ec99446e022c9f7032698b8fec448a3f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
! 6bacb33a76925fd2917d35bd9b618190  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
! dd54f8d5f5cba6767d08c1b6d7f7b30f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
! 7ba495cb5903423924009a3bf43a2ef4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
! 9ca0da7c01dd241d9facd0dba099d29e  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc
! e77f3c2e6d67f6de3b5a8a4ec7842dde  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc
! 10aab32455c6f5d913d5f848a8d0f378  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc
! 095a83fc1c745cc9cdf1bb6480466e9e  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc
! e4cba545a20786dac1d03223fca60f23  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc
! c2acf93308a61ca9aea965dc10efed5b  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc
! 7ffb2f1e123d4bf64117d99e7d95f896  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc
  9c80b6a78eb2b9bd9362289c681a9cfb  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/other.cc
! 2f505e10166a14a61bcbd7d9c8ef0d2c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc
! fe06541ef57ec129c6696843097678a6  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc
! 3594af62ef77a4937b0bb6fc4f80004a  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
! df92a0818df04c647beb51f104933ccf  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
! 290972017bdcbb971e9633f1fa945f10  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc
  2e401c1bf8aabcb389e6eb25f1356cc9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/grammar.cc
! a1cf335657462bf5cac1f16e8455081d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc
! ae112cbe253b120959c93e4efd89b490  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc
! e85c55d89ee8849852b6577e09d46d3d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
! e85cb6613a54e615bf9b9750afed57d9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc
! 2495c8f242548c513d8c41f4ece20cac  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc
! 51deca8d1bd023835deb2c8fa9ece80c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc
! 56434ba56a60dce62f39445010ee1e1b  libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
! f3e8fbbfde8c1dcc4255bab7b6188530  libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc
! b69d497a208477c99bf51cf425a0d6fb  libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc
! 729408a4620d7849cc01f90be551a668  libstdc++-v3/testsuite/28_regex/constants/constexpr.cc
! e5d03f3b75cb4adedff8cf122e42e49b  libstdc++-v3/testsuite/28_regex/constants/error_type.cc
! 94ab1bdb5049b6e4a01ee515a19ce178  libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc
! c2279432bf5a73eb5461037c3f89346f  libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
! c9310007288be7df70d690ac7cc7ba98  libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
! 5868c349917882fbeaaa821d784f2e36  libstdc++-v3/testsuite/28_regex/init-list.cc
! 54334377bf719a86ac7bc16b4e475fbe  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc
! 90f93d1adc2ce7796c56a407d693be50  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_01.cc
! a9e2bcac3406b1e01ab02234786ffad2  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
! d2e20b19efb082b762cb41abbc295a11  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc
! a650d9282aad62752d7e816d382f6a09  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc
! c5194433aa15ea14c3b7a288b6be8cd5  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc
! b64e95a5b036730c67d9c01a8ba2f573  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc
! 6cafd516c322fba7420dbcb8f83b4151  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc
! df6b5dc5e2cecaa0ff56ed828e39ac7c  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc
! 331f6c463db40f3488a36f51a2d9b6fb  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
! a6b34e765368b732dc9afa33a68c5bd5  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc
! cb5d94159405f721a4c23f6140829b1d  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc
! 201b9b7b1bbb531fdee62a9a6725c97c  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/dr2332_neg.cc
! 8cb85c9cdab780c9e8bf80aecf150de5  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc
! 4bc96d778a4efca2285ac8409c599951  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc
! 276cba2341ae695ab974ee449996889f  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc
! 1346fd756cbbfa5fca18dc7e542b6835  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/wstring_02.cc
  e50868497a6eac9c6a7e389f3cda11ef  libstdc++-v3/testsuite/28_regex/match_results/102667.cc
! c0c620239c2efe0541afd787aae66d95  libstdc++-v3/testsuite/28_regex/match_results/94627.cc
! 523747fb6682da93512c29f0c3f84d96  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc
! 44e9dfbe7dc2fb0575e1461d15735094  libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc
! 943e9f2d23fb95391f8540b16cbf669c  libstdc++-v3/testsuite/28_regex/match_results/format.cc
! 2e43dc104fbcceb93622d74d81e245f4  libstdc++-v3/testsuite/28_regex/match_results/out_of_range_submatches.cc
! eaff09d5aac2fd9737983f9fa78b105a  libstdc++-v3/testsuite/28_regex/match_results/pmr_typedefs.cc
! e7b1ddf58a8848833e5de66f20f08ec8  libstdc++-v3/testsuite/28_regex/match_results/swap.cc
! b6fd9259eef9f82dcba035520e41bb87  libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc
! f35f493d8d810f4f1f0b8321e7227972  libstdc++-v3/testsuite/28_regex/range_access.cc
! cdc54698f123d7e50bea9dc4b78122ff  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
! 59df3e6a2f30c6ac801f55e528aa14d9  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 2a11325423901fdd4d2aa092058924d4  libstdc++-v3/testsuite/28_regex/regression.cc
! f22f00c58ea384f409081ff939be03cb  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
! feb969c74033ad4008339f72fdccbced  libstdc++-v3/testsuite/28_regex/simple_c++11.cc
! 2ac64b862cd54358af2736bf93d50977  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
! 1eecbe299af4fc803c31bfdf45e0923e  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
! 44601f6ab0248eba2173fd50b4ab194a  libstdc++-v3/testsuite/28_regex/sub_match/compare.cc
! cfd16391df30a7db0e6ec16f18a644ad  libstdc++-v3/testsuite/28_regex/sub_match/compare_c++20.cc
! 240401b75545ef4a0fb86b6fd889ff4f  libstdc++-v3/testsuite/28_regex/sub_match/embedded_zeros_cmp.cc
! 77ffa99fca894db9a74baab375ab3bea  libstdc++-v3/testsuite/28_regex/sub_match/length.cc
! bef73fc3adc99f983abc11e9fc4e238a  libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc
! 5901a5eac9cf0a867501aa44517bf8a7  libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc
! 3804fb1ad7cffa75d057635f8248632e  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
! 49466e174dd5a86631734b23588239f6  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
! 8df1ad86c94a4b28227349e1682d020c  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! 0591f2ade82a98a9f6adab35306d2227  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
! 8bab2d3d03900d0e60862e7fa3724605  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
! 0c0494bb6dcc76e8deea7fae76843c7c  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
! 9f7e68998a2663d262e0372dc2914b80  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
! 5f7297af8db43ccc2e1cf35cf3725f6a  libstdc++-v3/testsuite/28_regex/traits/char/translate.cc
! 2d6d56baa3fa83d36d8031006561813d  libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc
! 4a1e0607461ae5649830a500f743eff0  libstdc++-v3/testsuite/28_regex/traits/char/user_defined.cc
! 729fd2bf23dc65612702e22c94db9f5b  libstdc++-v3/testsuite/28_regex/traits/char/value.cc
! 290acff0f31c3adb8f00f24b8de59089  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
! ed92117f703a8d2f128c2d0a71c9c6d2  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
! 82d390577b8f85d8bf2cab459430f227  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! fa8e8c344cacba2d37b10045002c80f9  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
! 738efc09ac4f8a6fcee85772f59586ee  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
! 7013286aeded9118179710c4e565e4d5  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
! 892d008fb7eb9459888967c30f1a6c30  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
! fa4cca39f8873aa5562b9f2135d0f17f  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc
! 4504855e7542223d9d3f9fefb0d88918  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc
! a81aafe3beec53e3963c7ccf65715512  libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc
! 1c39872a97096787ae8c55ffa7c3299c  libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc
! 7dac9abc6654d61bcf88cf74d4982d83  libstdc++-v3/testsuite/29_atomics/atomic/60658.cc
! 1f0e5b1e0b71de930a8d2b53f15fb5a5  libstdc++-v3/testsuite/29_atomics/atomic/60695.cc
! 75c54bc5f05cef8672d1ac24cd7a3ad3  libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
! d7d55d34f3db095a62d45482624abbe0  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
! 58693221c0b6100efb8a07f56b7bedfb  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
! d310f72e085b2cb6411ecb740db38611  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
! d6489faed85230dc9d6708463d682f44  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
! f984b42542dd2ac4d20456430bce2a00  libstdc++-v3/testsuite/29_atomics/atomic/69769.cc
! 4326089b54e21a1eb236d9769573fbfb  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
! 0badebcbf963a1d75c9d472f196c9248  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
! 4fe53155186779595e4a0b7b60a7c02b  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
! d713369f3c71cd215ff3c0953b04bae2  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
! fef87a64526f22b839452f0efbdd4cdf  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_list.cc
! 8fceb9c30ad700bc96dca0198991ac22  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
! 9bc5ef411e16b9fcd2cc6817cfd31c3d  libstdc++-v3/testsuite/29_atomics/atomic/cons/default.cc
! 2bbf50c1cd21b846c15c78c9a20df276  libstdc++-v3/testsuite/29_atomics/atomic/cons/direct_list.cc
! 6d7282b4259d5ab24b107aebd74d0170  libstdc++-v3/testsuite/29_atomics/atomic/cons/single_value.cc
! 9da124879d1ef8f2305ede0c3f4db548  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
! ac06185b79905e0a4fba519757c05672  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
! e9540f6bd9185d028fd135dd25eb7e6c  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
! 7f98d9343ac2e8c46fbeb04ca3e70000  libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
! 8cc4765f70d42bf14be1d801df259839  libstdc++-v3/testsuite/29_atomics/atomic/nonmembers.cc
! b729caf695c27dbc8d536839613c8d9a  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
! 7f91b348514ac35776ad3e53448bd4dd  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
! 2df0a81a641ae33d9cfd133dadcd39bd  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
! 0df4f70d5e97fcbf1c3acd06207fdcec  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! 7cb4964ae17d8bcfde308959b30abe0f  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
! 941f20241a55b6d78d9339d164c62788  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! 4c8e19fa67427aa43bf996a402d62f21  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
! ea7d0a15ff1a6f72df7d4e2f29014825  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
! da994fdc19aa001d3e23f43514ef358a  libstdc++-v3/testsuite/29_atomics/atomic/requirements/typedefs.cc
! 68ee8872546ce9ede1d5569f56dc9399  libstdc++-v3/testsuite/29_atomics/atomic/requirements/types_neg.cc
! 623bb8006a31731b696c7699962aea0f  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
! 54372cf74aa840c1cb7e2675682bf96e  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/100334.cc
! 2bdcb62d2982452b9993a032e812baa0  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc
! 39b28214a1b360c8a4a8cb89cf5af097  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
! 8a4a32387700ee04e625382ebc3b95f4  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/bool.cc
! 1b90057bcc52707e39d8b95e7e0a1309  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/generic.cc
! 286d1b8bcaaefcee79ed0066949b670d  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/pointers.cc
! 0b2337b9c78eb89682f20ed052bd910f  libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
! 0418446ec307ff03f0c2ef0ed907c0ee  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
! 5387d3a4e450126bdccf49228a956c15  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/56012.cc
! 1594a38c70460f9d07f019b45bbbadf4  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/aggregate.cc
! 8a6720addc6b9ed56f53f9081721937d  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/assign_neg.cc
! 0fb657b6a0ddbd2cbe9bbaf00b0d4acd  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/copy_neg.cc
! 221f463ca1ed77ac50ca681b29486c30  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/default.cc
! 8596bae2e267db7fc38c89a6d36560a4  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/value_init.cc
! 1d8c43b8f0ab924210971fe82357a6cb  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
! 19953cb5d1167a542d32d6a700b47e55  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
! 6120e54f4da75932615cad759ccbe716  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/explicit.cc
! 6b54829de365186c83435bea6b57ef09  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/implicit.cc
! 9ff8dd099694c57ed99ed9acef7fa559  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
! 11532dcbc4f6f7545b9c5d744ec05862  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
! 11532dcbc4f6f7545b9c5d744ec05862  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
! e71470acb0c754471a6608972392445c  libstdc++-v3/testsuite/29_atomics/atomic_flag/wait_notify/1.cc
! b31dc8d0e0bed12a3c992c9ed76bd8d8  libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc
! 4249715f80a82c2b5ea3231842ecc6e3  libstdc++-v3/testsuite/29_atomics/atomic_float/95282.cc
! 8eed643d8fac17d811631ed45add934f  libstdc++-v3/testsuite/29_atomics/atomic_float/requirements.cc
! 9e7f7aeef2efd7e8a67a670326dbfd44  libstdc++-v3/testsuite/29_atomics/atomic_float/value_init.cc
! 7623eb98a59dcfa5cd284a55a16c9e0f  libstdc++-v3/testsuite/29_atomics/atomic_float/wait_notify.cc
! 0177f6365b0a8828bae44cfcb1b10826  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
! 06f08caa19c4f895dbfb60a510b1a573  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
! 3ae7675da89468b453a1b4ba79a99554  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
! 24701029a71c0d1d973901e52b05218f  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
! c7f92587c3fb4246b95def2d6c6bd9cd  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_list.cc
! fb759788350a8dba73a973173af082a1  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
! 1a9a40e535701af6e75fe8a63b3fdd0c  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/default.cc
! 5494f8c1360425ddc369e866a62c158a  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/direct_list.cc
! 694fc2764ee5f2d82f32869bf2b5420d  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/single_value.cc
! 04667ab98ed1da388f7fbf36efcdeda3  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/value_init.cc
! 7c3e5a0fb84bfd173cbb746a92b3a74e  libstdc++-v3/testsuite/29_atomics/atomic_integral/is_always_lock_free.cc
! bf3e2c94447667a8a43ca60d7045c1ff  libstdc++-v3/testsuite/29_atomics/atomic_integral/nonmembers.cc
! 2d9de1aa2731016b05723633791ca72d  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise.cc
! a5e26d3eb9a46da7f6f50aad7e919ddb  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
! 52ca6fd86bdc3040208ffa6663808bc9  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement.cc
! a4aa252415a6f9813546e616fe37bab7  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
! 300c8fb5dbded71058a9589ecddcb291  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment.cc
! 5c26c9bdd4c71ef45bd51587aba08212  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
! 38827bdae1da2ce2188e7ad7a05132fd  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc
! bdf02c939061c8d94f0b6784d8e4c56e  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc
! f6df1525afc809ddddb34a6bae138b3a  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
! 15b848145fcdf92227023ad55a9b4dc7  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
! 015c9ec55b26fa2ef8f7620cc24c9558  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
! e56ed08785afa69e08251e342d1f395a  libstdc++-v3/testsuite/29_atomics/atomic_integral/wait_notify.cc
! cc05b74dce6bfaf7fa3af876ad057cd2  libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
! 37be90ca598c788d8e5b02aa0b0ae53a  libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
! 3a546059f2a6066139b35c14b6fa38c0  libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
! 12fb714a7fa8f39114511276358fd3a3  libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
! 7034bc3ae184c8958af1f3a11dfc17eb  libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
! 27c01aff7ef28a3ed61754f2831e3f16  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
! 10034a80f8f6b1940c4ecc0cece88608  libstdc++-v3/testsuite/29_atomics/atomic_ref/wait_notify.cc
! a72ff9c3924e912bc252345740699b25  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! 34bd3a1a2b1023c5311e4989120343e6  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
! b26b6c3ab4e65cef473338f210816faf  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! 7db4662ddff4c7c62995e0de9f1e8405  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
! c815717d5bbf78e6f780e03503055dbc  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
! cdebc11a8923fb6de3f03ea63cf74941  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc
! 55376992b20694d181d3725445caa52d  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc
! f23dfe29146108b528effe24f525589a  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc
! 6e292417e714715b424197cf8c799dcc  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc
  8f793a0a8dcd336f7edd48cf780787d8  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
! 662bfa6fa4113393d487978b4c67cf6f  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
! a573ce0b27e15d49e832b92d933409d5  libstdc++-v3/testsuite/30_threads/async/42819.cc
! f60982470922e3c57bc82f2b54f83006  libstdc++-v3/testsuite/30_threads/async/49668.cc
! 9d2f298fca504812dbd2863844b574ae  libstdc++-v3/testsuite/30_threads/async/54297.cc
! b4edbfe9282b736ac9fcdd47282be564  libstdc++-v3/testsuite/30_threads/async/69724.cc
! eafef75c594905f92f7f7f88ca906984  libstdc++-v3/testsuite/30_threads/async/84532.cc
! 64b90b9f7807c593bb69422bb01a5b56  libstdc++-v3/testsuite/30_threads/async/any.cc
! 8a1a0cf118b8007f1d4beecefde7c29d  libstdc++-v3/testsuite/30_threads/async/async.cc
! d59bc69847522a99bde178c5d22df433  libstdc++-v3/testsuite/30_threads/async/except.cc
! 2602053984261794238a5aecd803d835  libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
! bf7976b9249a071d6cab1ceb8f7185b0  libstdc++-v3/testsuite/30_threads/async/launch.cc
! c51d7e288f5f998353c29560e8040fa0  libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
! 85ef27931acdb4564a76f841128d7b02  libstdc++-v3/testsuite/30_threads/async/sync.cc
! bedbb164a0ec54eb9ff32abd589bb3d2  libstdc++-v3/testsuite/30_threads/barrier/1.cc
! 46f3b209581878b53316ca67cef9762d  libstdc++-v3/testsuite/30_threads/barrier/2.cc
! d58d34a1127cd71d2444902a0fe4e986  libstdc++-v3/testsuite/30_threads/barrier/arrive.cc
! c637b582692127ee5367573a8547eaf3  libstdc++-v3/testsuite/30_threads/barrier/arrive_and_drop.cc
! df30ffd9dd34492ce09abc88ba0b9643  libstdc++-v3/testsuite/30_threads/barrier/arrive_and_wait.cc
! 37c7ac016f9b9d4ba57c337621e84bea  libstdc++-v3/testsuite/30_threads/barrier/completion.cc
! 06730d55e028a33b34cdf5df350cd521  libstdc++-v3/testsuite/30_threads/call_once/39909.cc
! 7eb5b007d4254b55e1026244a13e0dbc  libstdc++-v3/testsuite/30_threads/call_once/49668.cc
! 9af18a8f11ef0ab9ade20cfc392160b6  libstdc++-v3/testsuite/30_threads/call_once/60497.cc
! e203a77e277aa2c48fa36429557136e4  libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc
! 0a72a90b0438241689f0c5b8907e5123  libstdc++-v3/testsuite/30_threads/call_once/dr2442.cc
! 5d1219a35c60bb5c3b5a50b6db56c6f7  libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc
! e753c499cffd65588030d83135f18c26  libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
! 0edb1784a0d5e2bfb8eef8501c82944f  libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc
! ac3e7825bde6cff7dc8783a0b5797e6a  libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc
! b70743d0f7d91b05506124049ada21a3  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
! a108050ff22f757d7206500c1d169c25  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
  a22ffec2ff77db41215e429fe83d58ac  libstdc++-v3/testsuite/30_threads/condition_variable/members/103382.cc
! 7e9aac5030f31c92ed98136af3aea449  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
! c35e94527df36468636ca46e761acee1  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
! 5764eeb710f921cc65f99477698b7c80  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
! 34baf365989004af765179e3ce052fca  libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
! b57252c860fbbc6aa79caae8d434e524  libstdc++-v3/testsuite/30_threads/condition_variable/members/clock_neg.cc
! 9d9a0a2e3f2912a7cee29b153fc9dd2e  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
! 06895f3c0a6c0ffdd729394807849325  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
! bc493e2c2d50ea086039db367acb2abc  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
! 4fa09a4dc17493f888b031e5ee60e533  libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
! 7f5f4491a926403bc1b199bb9d587276  libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
! e5365f6c18ed79ac823f56b80729e0c6  libstdc++-v3/testsuite/30_threads/condition_variable_any/cond.cc
! 878f3e0dd7c9a7669616a714d2c0b432  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc
! fae42175ccfa076ff954c392f01b04db  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/assign_neg.cc
! f9a0b12530002fa30b03afa26d97cef7  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/copy_neg.cc
! 6dceea1ed2c5a7cfca0a138fcc7b17a9  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc
! 1230d225d0b75d796b6a5aca8b11f9ee  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc
! 253c18c86a976843ff8c4b910fc19f07  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/clock_neg.cc
! 6875279deb09f486b58f8c1d8ae616d1  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
! 3c8377bc76b4f213519fd55e486c3a65  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
! 9776c874ae9a4fc5e6cb4ff3440fb0be  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc
! ac3a66e8470b7f2b3dec945bbf0cbad2  libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
! 85ae18e723e3346044ec3ad30406eb3b  libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
! 10ae7ca12c78b4600aef676c310b9d04  libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
! 3ac5cefcb3454c1f41835fe5ea4a19bf  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
! 3eb06fdc1f829de86ac341208c4024de  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
! ee41556c9052b9c6d04e5c2b9df97f83  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
! 6693b8d2a540fbe995f52f683b4a7129  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
! af0975bd719408cac31c6ef952b7a2cd  libstdc++-v3/testsuite/30_threads/future/members/93456.cc
! 29ebfd1e201f5da8e562f639ec7bcef4  libstdc++-v3/testsuite/30_threads/future/members/clock_neg.cc
! 9736b82bb36026a3eda8001c222c6013  libstdc++-v3/testsuite/30_threads/future/members/get.cc
! 5c3fe324c426d8eb1e9f9a9de31188cf  libstdc++-v3/testsuite/30_threads/future/members/get2.cc
! 5bf4f45d8dcbe25a50a278bda7102e18  libstdc++-v3/testsuite/30_threads/future/members/poll.cc
! 255210b0d40a8747fefbb38f3dbb15aa  libstdc++-v3/testsuite/30_threads/future/members/share.cc
! 4265982113d7369f98db946764b9cb19  libstdc++-v3/testsuite/30_threads/future/members/valid.cc
! 0082487b5bcf0b6de0a477f38e10fa1e  libstdc++-v3/testsuite/30_threads/future/members/wait.cc
! 512b064b7be66a08f6e41d3178121c16  libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
! 6acefd19fb48245e4f59dea8bb7b8406  libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
! 4ea0f817201a4f1db79fafa624364acf  libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
! 89690ef5f7611bee1ef2c75d075c9b01  libstdc++-v3/testsuite/30_threads/future/requirements/lwg3458.cc
! 6ba91c862433dd3586ba4fb5ad80610c  libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
! 64bfd71916745240ecd0ea47c50231b1  libstdc++-v3/testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc
! 8f44cc259abd2080daefd277c517f02c  libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
! 92523b7427f119ea0918938a39f7a0b6  libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
! 4bb8757382bdc3ca828832a2d0d1efdb  libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
! f4d6bcedb1cc73dbe5416305cb73b5d7  libstdc++-v3/testsuite/30_threads/headers/mutex/types_std_c++0x.cc
! 461b50fbd909e4b2d5c849e57e9ec1b9  libstdc++-v3/testsuite/30_threads/headers/stop_token/synopsis.cc
! 92086cef61efb73f820e72d1a21331d2  libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
! 170713a51007be0b6835d24485768df9  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++0x.cc
! 1985675706eb892eadc812c514ae924d  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++20.cc
! 1eb8c78baf61f672035a780d1bc7d36a  libstdc++-v3/testsuite/30_threads/jthread/1.cc
  0e687b9098ebccb04a9238c84c6e0cac  libstdc++-v3/testsuite/30_threads/jthread/100612.cc
! 6edb5656faecde69343b23e3b3db1592  libstdc++-v3/testsuite/30_threads/jthread/3.cc
! 6a2c294320cdbdd573b3f93873d085da  libstdc++-v3/testsuite/30_threads/jthread/95989.cc
! b55c99deb63c02f39aa02fc66be64acd  libstdc++-v3/testsuite/30_threads/jthread/jthread.cc
! 0ad1343625e3788ede8ebb0ab8b38d4d  libstdc++-v3/testsuite/30_threads/jthread/version.cc
! 30971da68e375bf602cf480acadd4e96  libstdc++-v3/testsuite/30_threads/latch/1.cc
! 452e28b8c1be8afe227c9206fca7aefb  libstdc++-v3/testsuite/30_threads/latch/2.cc
! 4bb21af793afef30f3370d0b9039a2cd  libstdc++-v3/testsuite/30_threads/latch/3.cc
! d3295b584799cfab3400e4fa2c44e959  libstdc++-v3/testsuite/30_threads/lock/1.cc
! 8cb66893a8a5b47651007472847e8906  libstdc++-v3/testsuite/30_threads/lock/2.cc
! f0075efae50a9a94842fcb831a69f246  libstdc++-v3/testsuite/30_threads/lock/3.cc
! 664ae9b5e577a4ff67a4cfffe5f2e2d6  libstdc++-v3/testsuite/30_threads/lock/4.cc
! 3992738c1f3b9b5ce5f729bcd60b5a13  libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc
! c8c63a457f6e094946ffa7f864db38db  libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
! f9d0f83e27a6847acac0c2b5b764a204  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc
! 6dcdec547ac918d8b2667ab296f04c4f  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/typedefs.cc
! 46a1b44760656d072153818a913d9f41  libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc
! f135b1db6dc9edce6fe50de10e89a3c0  libstdc++-v3/testsuite/30_threads/mutex/cons/assign_neg.cc
! 318979bbdb76d29bd9d1861a5b8b7e37  libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
! a960e12957e3f169668a84b50b9b1e7f  libstdc++-v3/testsuite/30_threads/mutex/cons/copy_neg.cc
! 9913afc2b6abf483241f79b4bb8d7407  libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc
! cda7d2420175a05cba6339c0a414d9ed  libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc
! 92b915f2672e17251e0a644aa79966d5  libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc
! 80161ff9bc396e7683ea03e899639a56  libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc
! 6a03a9e173aa6b0419c6e9fb48eda43f  libstdc++-v3/testsuite/30_threads/mutex/requirements/standard_layout.cc
! e035122fe11c72b9e6e7a87945b5b6b9  libstdc++-v3/testsuite/30_threads/mutex/requirements/typedefs.cc
! 795247f08bf865828bf3226a81d432c6  libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc
! ccb06e72f4500e9d7309e7c398bc5da8  libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc
! e3bc804b5dace33136207ffae27028b0  libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc
! 3fe82633598a7e8fc363e55553d84dc9  libstdc++-v3/testsuite/30_threads/mutex/unlock/2.cc
! 86001306ba43ef2838edac457485a07b  libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
! 4ddfb1188381783b95abe1cb04834ea2  libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
! 144dbca905b4c4bd76992b9c8a0208d2  libstdc++-v3/testsuite/30_threads/packaged_task/79486.cc
! 59cd2b0744dcc3390e1532ee32b25f11  libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
! 03e3bb74f9e7e6e269f9218eadfe767e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
! e36b3ddc89f0799a70ecdcf5bd14c49f  libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
! 2f075fd1df8fcbb15277f121527945d5  libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
! 44d379c14fdfd9ae4376fa4ed054ed50  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
! 0cef58f35b21865c508d48044bc9806d  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
! 58309f598b7122ec679a16b1d99c81ee  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
! 2e947ea4521ba72581e24d7e913ca789  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
! 730349cf2c2bcc8ef505c31279a9d9b1  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 922f490a3c9acd1bc20db3ecb9146e9c  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc
! e5edd5813dedc4a7b9c7f78ab4cee436  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
! 256b46a220ef577f7b70cd51b86419f0  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
! 3d77d111adc632e8d80efeca488a44af  libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
! 302e8a84a403cad05d4fdd9e016cb16b  libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
! 15312aa18aa9ca501e805c7b809b5a37  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
! 1f0c86c9f99838448a329ed69f7ef0f2  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
! 874dab2a2c94e8ef40f1dba12e3828a7  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
! 7962fe59f1814569adc07dddc2ee1adb  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
! 22cbc67d3714bf3ee5a6ccdea49c6fcf  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
! cc7f505dc969821a9b3baa8bbd472b1f  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
! 21b239613c0a19fa378051f2e392a9ff  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
! 16785a884690e32cc6f8252fb0eb49ee  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
! 0fa854be77399021a2837efb326964de  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
! af2c8627fa5705e904cfde8c1043ea95  libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
! 0d4d3be95bf19d824d31e3e82beca06c  libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
! 2dd118054bf60d4ea8d1132c244150ed  libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
! 455d96b002335974863c9f1f20932fee  libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
! ecc4f4cb3f765aa064f8632784b32275  libstdc++-v3/testsuite/30_threads/promise/60966.cc
! 12870a670fbdbc90729ffece78902aa6  libstdc++-v3/testsuite/30_threads/promise/69106.cc
! 62433919af149b82a83fbe2a7853d427  libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
! f2defec367c2f1d27fe37be41015257b  libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
! be835277446d67ade23ff4c3d04981b7  libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
! b07a78259f534d545e4f69cbace5e4f3  libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
! 556ed72e8bd8b930cea9e7e31867232a  libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
! fa5a46a8ccc49e5f787480bb7dc31896  libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
! f5957a457b981bec19622b7e3a0f2559  libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
! 5a6507a7efce69bc62047868d1b0078c  libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
! 4990fbd88746d69b09daee5e9a575fd2  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
! f9a1f48a7b17b78a0fae189dc7473f8a  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
! b0bdd9c07ea14602c2e7f36edbad180c  libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
! 8778ebf8eca9bc4c3e03dad76545eabb  libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
! a2ba32e375e37640c964e53f671832f5  libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
! c826b669f5438d2e990d46efb4c87ceb  libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
! 11f2d1af80c33c4dcb36535b14a51dd4  libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
! 878513458d573df3d48147452d2ae1f7  libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
! 5f9f44221c16159b5bf8838b9c79d8de  libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
! f9284f48a10245fde125973d9c5157be  libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
! 098bfa504103484f902e505c2f4f1b7b  libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
! ceaf89aac1d29a3d78b1f634114c2637  libstdc++-v3/testsuite/30_threads/promise/requirements/lwg3466.cc
! 5fbe7718c64fbba81f92d6e5849db5dc  libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
! 104f138d3177b6396c0b449f0eef5425  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc
! 8fa8feeed8e7a1f314f10062d778cb15  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/assign_neg.cc
! 01fd17a09575346eb59c8f0b1373e201  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/copy_neg.cc
! 06c5a8e4d4321a3066475071f3e6db28  libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc
! a1ac4d59d15710ba15e2ac93b51f2336  libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc
! 8ac29fb41122a34b25c37bfe1397aaa3  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc
! 537996677f010d11ccf97a2abd18a0c3  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc
! bdb2334e37d9f3eda62844232b29b851  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
! 2027d324fefc80678d8e11e4ece6d815  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/typedefs.cc
! 55f875902cb05ddb269e44d7682cb44b  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc
! fa31b7b99c2e84b6d6715131c0a63091  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc
! 1aca0361433740f7992273f0551f5f90  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
! c792d0b0b7866db94b65d716bc3fa563  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/2.cc
! 461309f96bd1631aea0400973fe41618  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
! 1a50ee26f6d88f767b078537e22e301c  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
! 397be997c2ca1782f32c0d18d368e417  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
! cf0909ca39bc25953fac15aa24e12c4f  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
! fb8347af8e3113b9efc7f783b1440117  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
! 076df16693eadc729c94fad9dfcc1a59  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
! 6490d30f644812e89aff383a25b0ba4f  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc
! 9a3f5ae5172d1947afcc0db9570d261d  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc
! 9a96574b85d7286c8e37de43af3ca472  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc
! 4a516bfae59dc40debb646c69423a920  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
! ef93f3fb4594fddec5298d6b3f7bddff  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
! 5b71c6a805a990c2e6de7d4535c71df9  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
! dc78bb5e5421d44a29fd25276f10a244  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
! 5e9a5959e13f9b7595a626181d03b451  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
! 4a516bfae59dc40debb646c69423a920  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
! 438c6cbd147ddaeb8abd5ecadfab4440  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
! 71175c75b3f4a2645643a9879a24c080  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc
! 0d88ba935b9c5048df46bae8c4f9f7c0  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/clock_neg.cc
! a856463384204c47b460a9b13349db66  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
! 2deeb17d7d251b0406919fccbe73663a  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
! d44969d71ec0db893081cb32765a711f  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
! 5384a0be71f5339845506598d5d8ad1e  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
! a83713b283ae67a92bbdb65d8ceca0e3  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 78d52255c7f3239752729b9d0f9892ea  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
! f74a4cc8462ae932709cddfb2bf85b6a  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
  aa7e8d9c8ac0cac38e0e7e2928bb61b6  libstdc++-v3/testsuite/30_threads/semaphore/100806.cc
! 8993974b066fb2ef7d734f46d28d8921  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
! 61a7584211cd50f629a01edd222ab115  libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
! c20051aec8da710a0084528d06672471  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
! 309ce23d5262ee206fc3d285b9b9a618  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc
! 2577ea8a0768f92f2a8944a5582c0186  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_posix.cc
! d5414df49358e36c0205099c42fc7119  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
! 97354aa5065410c5245f78ba2bd5fe44  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
! 51d9a59dd2f3c6a4289b6ff8338694c4  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
! d59d5888a5f757ac5d5e4b8621dd25fc  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
! 8ee3a3fdbe0d2c40bf2cc887749a8aaa  libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
! f786862d86f03fddd604973514f54a57  libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
! 3b89e1ce28080cf6592332a952211f58  libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
! 6270508a5491faa4b1d104268f443e08  libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
! c4682046ac482c294f112e5061d6b480  libstdc++-v3/testsuite/30_threads/shared_future/members/clock_neg.cc
! 6982e621dad39bfe0753246023538d5a  libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
! cc999a3e0adcc9cfa4c96c00f617a603  libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
! d8bc22e730707b4ce73ee77424edd375  libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
! 71e3a6f9af0e620c44fa53dd3095f8ec  libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
! 7d921ed861bf5f547d95088c28b92d0a  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
! e0687353a0260e1e61d1ae5f9d881858  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
! 9f7dedceb197e2883d1d3407c3e66c55  libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc
! be6f2558da97adb9fd11069e714aa638  libstdc++-v3/testsuite/30_threads/shared_future/requirements/lwg3458.cc
! 812c82db591dc870876b53530877c60f  libstdc++-v3/testsuite/30_threads/shared_lock/70766.cc
! 3effcb25b2e44b2ed6bf92dc8c240a39  libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
! 327dedd75b88ad177acf441188516124  libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
! 292878fe44555423bc437b2673e60aa6  libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
! 8c7a9d4199b18a4f908876a7e917c97a  libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
! 7e1bd6928d9af16b714bdcc3ab2676a7  libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
! 1eab13a914dbb5210e8fa29f8548f896  libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
! fdd5b9a72939ea484c451ecafd73ec65  libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
! ddb90abb5419839bf18eb9c5c56acde3  libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
! 9a932816d03780392dd3ea8a34345d91  libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
! ebaafc7818a24a7298485430455e3f32  libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
! 84f334f2f37007792bb768ddc86a6732  libstdc++-v3/testsuite/30_threads/shared_lock/locking/clock_neg.cc
! fa8d3f2057ef186fa68b2806729d1056  libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
! ab6e43ddb6a54edf98b05f2196cc7771  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/explicit_instantiation.cc
! d2a4119c3e6818c27cac97168c2271e3  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/typedefs.cc
! 2f34167279411da8867ea596d1b575e8  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
! 706a9d6638a829c7b7a946e00d4bff54  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/assign_neg.cc
! e11cd4788441c96c5328519250ffb4c9  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/copy_neg.cc
! 1dd5a5ac5c9213946d89a4e1851df1ca  libstdc++-v3/testsuite/30_threads/shared_mutex/requirements/standard_layout.cc
! 29164bff101b8f653e8ca668bcd68fbd  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
! befd027bbcc5380b5a83476b0703771d  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
! cf918640d4b58c8b4c6fd74bfb6f9466  libstdc++-v3/testsuite/30_threads/shared_mutex/unlock/1.cc
! f7bf34fe4d1808d4d60b358da7a34181  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/94069.cc
! 4ce2dd433f70cf84cb582f35697715d3  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
! 54e98e5dade8576a0559561aca91cb56  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc
! 589f8529b59928a926cdeaad153fc93a  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc
! 5111094108c7cc52b54788be50e4d89e  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/requirements/standard_layout.cc
! 624ec4bd65611dea7a6b1680b923fc9b  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
! bca0cd8c90e7103ddcef86808025a4c1  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
! 9118f60146ec640b1bb182cb9587670c  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
! e6a55c7c1195e820762357a542810f30  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
! a687e67b0f003e1dd82e13641e7b5390  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
! e35740bac5f1ed6067fa70df85b520ef  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
! 381bab1fe25aafd2d2ce79d180c3a38f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
! 86b212c61a5c084a568e66b4880ff899  libstdc++-v3/testsuite/30_threads/stop_token/1.cc
! 3c8377bc76b4f213519fd55e486c3a65  libstdc++-v3/testsuite/30_threads/stop_token/2.cc
! f675a6a7fa898135d06cd8ccbfe8036d  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback.cc
! cc0f326d6e878c452d88c044dc0e123f  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc
! 6f6aa9e3a615d961ae74f3310d7c9fd9  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock.cc
! ae3d946a593d7203ca2f54ec0b19c177  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destroy.cc
! 86c1e858923fb41c09ffcec74f02d7cc  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc
! 7741cb256171a95dceaee3336bebff89  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc
! 22d09811d23809b69b0b73a4b51e7f82  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invoke.cc
! df7560aa3ab4d9752ec2cb705371a4e9  libstdc++-v3/testsuite/30_threads/stop_token/stop_source.cc
! b270a2e542c83d58f4c77454dc9b56cd  libstdc++-v3/testsuite/30_threads/stop_token/stop_source/assign.cc
! 563efd4668f73c19e742b64d4aea2927  libstdc++-v3/testsuite/30_threads/stop_token/stop_token.cc
! b619e98c8af55662c325a22b4f69fc53  libstdc++-v3/testsuite/30_threads/stop_token/stop_token/stop_possible.cc
! 62b59efff7f716914e12efc3a62b7b19  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
! 6d3846f6d161f840dbf73dc67a25ade4  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
! 93f9b6b3c3d8c2a5db4ee6a83f806484  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
! 93971936b6a874dae4f6dbe079d0fb39  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
! 3bb47d14509ceb00220df451695cca8f  libstdc++-v3/testsuite/30_threads/this_thread/95989.cc
! 3a96511c56e9e79a0ef3cf734f1bfcec  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for-mt.cc
! e00581bbbbb8865c21fcc7f3a21c93ba  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc
! 9d220aa45e07cd65239b849e0b903fa0  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until-mt.cc
! 68170811f5da3617128a2cdc113c885f  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc
! d9568394a9e9f11914f6354d82859abd  libstdc++-v3/testsuite/30_threads/this_thread/yield.cc
! 147dd1e304ab064796a1429459c295e7  libstdc++-v3/testsuite/30_threads/thread/70503.cc
! 880829395e3b0ae09a1cc39bc1eb7afc  libstdc++-v3/testsuite/30_threads/thread/84532.cc
! e078f539b54e94b810b2331abdba2321  libstdc++-v3/testsuite/30_threads/thread/adl.cc
! 2b1cff54a13705e20153d589b44d20d7  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
! 761bf29007fdd127d43b427a55bd4621  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
! bc75a4198cd5af1e88015690932f809e  libstdc++-v3/testsuite/30_threads/thread/cons/3.cc
! 81d411900f1cbee1f204c914eb96746f  libstdc++-v3/testsuite/30_threads/thread/cons/4.cc
! 92672ce69d3ef010c5a8bdf8998be2e9  libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc
! b62626a922b7aa557416ef3b48a07805  libstdc++-v3/testsuite/30_threads/thread/cons/5.cc
! ce0693052a964cc753f6daa48d37eb62  libstdc++-v3/testsuite/30_threads/thread/cons/6.cc
! 79fb0a43fbea3c860bd2a923b4e921f1  libstdc++-v3/testsuite/30_threads/thread/cons/69724.cc
! 763fce698c6169d9af52c65dc41619fa  libstdc++-v3/testsuite/30_threads/thread/cons/7.cc
! bb076bb6f37cea99128a341702d4bcd6  libstdc++-v3/testsuite/30_threads/thread/cons/8.cc
! 788d2a35cdb37cbf4e1d52bf80249ff1  libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc
! 8629d9891a491070f8055475887e3b27  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
! e0324c627d2d58afb491b3cce6619b01  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
! 355fa8b40fa2ec0259a46161201bb9af  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
! c138629dedb1b7854f47a61c935413f9  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
! f75224748cdaa3b5c29de10a870c151e  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
! 95e3f1e3fdf00318f70f2962d40cc9d8  libstdc++-v3/testsuite/30_threads/thread/cons/terminate.cc
! e041333912241cbbc86f3be5d12e922d  libstdc++-v3/testsuite/30_threads/thread/id/70294.cc
! 39bfb6a49bd0b0958ac99f1ec3f22f69  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
! 9d2f42131075d0404b96c8f8bef63ad8  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
! 82a6c3187556746fe8c7a17bfa622d23  libstdc++-v3/testsuite/30_threads/thread/id/operators_c++20.cc
! 71c44628316702a7f26e43774a2946ec  libstdc++-v3/testsuite/30_threads/thread/members/1.cc
! aa301214614fe164c3ef51650fa09b34  libstdc++-v3/testsuite/30_threads/thread/members/2.cc
! 8f132a7387a5e5059a4098e5ff74510f  libstdc++-v3/testsuite/30_threads/thread/members/3.cc
! 1e889e71565bcf76f26cfe7f0c2fe3ea  libstdc++-v3/testsuite/30_threads/thread/members/4.cc
! 42b3b99721f952e9ec54f26a482502c4  libstdc++-v3/testsuite/30_threads/thread/members/5.cc
! ac7a52716a75ed4f97a14285c6001fad  libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc
! ee55f7a53d8f43ee3c0bd8356dcd98b0  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
! d1a5842ee16f033d78ba09e9d75b8ae0  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
! ef2da556e78b0f1ac3fa36f9de96445b  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
! 385f9f7d3db2cae88d9cee08f6ff10b4  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
! a221c8c8fd261d4d984f2881a94cb721  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
! 810463d58c94c800031b117d92e13489  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
! 88bb648e8386e9cd20df7f9d94a40517  libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc
! 865c7672102017e72bb82a0c09dccb0c  libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc
! 1d8278ee756803b5ef8a210e7ed21e58  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc
! 10362a9b178e5c0e67b0aded46322b15  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc
! adca16a5c95aa5460bb92fdba2f80a44  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
! 9f07e3570a10528c9e457f1887086af7  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/typedefs.cc
! 73dff51336e130fc12d194037e897a1b  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc
! 68c4a3ddca9b2dc27258ca2c907c3b4e  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc
! cc33bebc5d1867ad252519a7ec3b2551  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc
! e39eeda879067dd591ddf7d23d59e0bd  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
! 954e65c14438ce2fc41b66a722b9c3a7  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
! 73dff51336e130fc12d194037e897a1b  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
! 68c4a3ddca9b2dc27258ca2c907c3b4e  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
! eda04d512143268ada55b66f79bc7e45  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/3.cc
! e8812c97885148fc263a44551247f2a9  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/4.cc
! 4ca0dd910fe157eec4235177acce9471  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/57641.cc
! 43627fb36b523f91bdbda837def2014f  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc
! 13e23a0542bb0ef708281bc1b4fa370d  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc
! 76b2b864671e8241be9d6c8cc1a085b0  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc
! f86322f6207e16a400fb4107e8a671f7  libstdc++-v3/testsuite/30_threads/try_lock/1.cc
! bde23f008c12ad2b92c6c8af48e5e46a  libstdc++-v3/testsuite/30_threads/try_lock/2.cc
! 4ba27e0d5839af727febe8748ba18fc9  libstdc++-v3/testsuite/30_threads/try_lock/3.cc
! 2825dc42c16b1ff0769468be9b0c1622  libstdc++-v3/testsuite/30_threads/try_lock/4.cc
  84b7f4186aa09b29885c62c89d8b8d64  libstdc++-v3/testsuite/30_threads/try_lock/5.cc
! e7359b96a7faf86607fd69b172f76adc  libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc
! 7155fc2034f43ac9f60f83f9f1d4f08d  libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc
! 4569ac716eae2f7894a6c2db420a1be4  libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc
! f713729bd4b3c71395a8659b730ba46f  libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc
! 3e5e867d1723bfe5838fb745aaaf9fc7  libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc
! 084ae8f2eaeb1253abddfb08fd25edfa  libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc
! 4a741d3c34b1feb9b2b85862555ce8e6  libstdc++-v3/testsuite/30_threads/unique_lock/cons/60497.cc
! 88f009b5a9e326a7b3ed9f804bda3eaf  libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
! 5b961ed62c770bf8b7210bfdb42d61c3  libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc
! fcf62f4cd5507c33e6a448606237fc0d  libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc
! c979c07150a4f54f69dec9219abc06db  libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc
! c26467d5a1d2ca211064f1ab11435b20  libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc
! a398358fc1514f3a954f513b96a88c17  libstdc++-v3/testsuite/30_threads/unique_lock/locking/clock_neg.cc
! 537a5742966bbe21961adf840790cb69  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
! 3b9c66c1e2cd2f70bac2c398d8d46aec  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
! 6d46b57c8aa21f614c40e2a8c5bbce92  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! 8b7df1d9001186e28d907677de2f5f4d  libstdc++-v3/testsuite/Makefile.am
! 7bf006323a36cb035885c50fba6cc888  libstdc++-v3/testsuite/Makefile.in
! 27f20f3c619036926100f1ebb575938f  libstdc++-v3/testsuite/abi/30586.cc
! ee98955902155f28f3cc7c5e5f324d20  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
! b567de4d5f6e7c7687f5471092c429fb  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
! 98a69d0cc5c21b037a40815b2d73d80b  libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
! 9584754526bed5e6b20d8ad5166dc9cf  libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
! 8b8035bf23528df071f84ec46aedc6fe  libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
! e88feb6ff166653b241a41a9848c6467  libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
! 2ffced43e5cb2fbf148279a5fa455120  libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
! d0bc9e549cc73c05f9288950f72d158e  libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
! 17cebaef3afb868406d88a7212884f8c  libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
! b5997876a8d3819df2424ebbb113b507  libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
! f0feacaad40a1a5937a458dc860e0152  libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
! 7a1ae8769b52e5f5ec635f97d27f4b64  libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
! 4bb9c53c7de4cc6c5bbcbd99eaa78694  libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
! 876f8964f1e5c0dcc8cb69aef7f1cca7  libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
! 5d7c7984cd7f70057db8f5c60331c85f  libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
! e6c2682798e08fd809548771c06ed530  libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
! fafda2cfb22b83af7d09867c806bfdb1  libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
! e75ad861e855657d914dddba1831a08b  libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
! 78e24e6dc17157a5fb069b62bc6df751  libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
! e6825b9d32e0f65e8aa345857517e0ba  libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
! f487469355fe056f0bb7d03313565691  libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
! 1b646ba9ec9f119f45c7c7656adba76a  libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
! 1b646ba9ec9f119f45c7c7656adba76a  libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
! 753d6c04e8ae3e7be6b416cc1599b9c8  libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
! 08282754343c0750bb0f593e9cead4aa  libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
! 352e4fa244882021f3358d69bc4a0f36  libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
! 60c6abeba4f78122629a7079f6f5f171  libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
! 705c4eb083a1c6418734453a643540c6  libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
! d8b4a8448972b31e9e83daff904fe52a  libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
! 996c5f8e9012073a7b495b82c2b4277a  libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
! afe494704f5838255ce50da332d3b4b7  libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
! 2c835aa1685de948e3896c5807522cf2  libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
! a2ac8734a4cb8aa5eab271116c005d91  libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
! 074ec589a049abec25122bf38c0a041b  libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
! 9c3228871c96c9f937e839b3fe70531f  libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
! f48940deb5d18bbadcf198abb387d81b  libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
! 30b0ecdc31bbbb784e8482fcedb5b2bc  libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
! fe3a9fbf3f1d896aed66baffca0791dd  libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
! 24ab78da972cda5090987c589669739c  libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
! 8a57f74a99d9dcde7365136b370b93e0  libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
! 7c8344f9b66ea7571751da3ad3b09104  libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
! e06c42726d0152d3282c4851ad3771cb  libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
! 01f7e3891af96455feba7c3f408647aa  libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
! aaeeed9d7c347e8c5d443aef16174537  libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
! fec7a4696a31d5a279d617f84172528e  libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
! fba03cf331380ea4b0eab6ded9feb0f4  libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
! b699fdeb6625457648cc4f2185ddbf0a  libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
! 006b36b3864f6ad4c537c416e1d3f407  libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
! 8476f0ac89e07cef35e6c1fe426a924a  libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
! 645828367b7e2aae1d29125c5144cfe8  libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
! 966ef1fbf4dbb92f7a403cd2c6e7c47f  libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
! de69a8bf3e2a0d6cd2db35bd853da5a4  libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
! 2cacb5cccf00610f7143449a08576d0f  libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
! 357ac614f27ff7d7b35f1c4f1e96529f  libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
! 2819b48717e9f7fd5f0a6dd06beff78f  libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
! 9f4263206905055bbc1cdddbcb1cc3ef  libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
! 231a5ebe568b8bc2e9b22cb47d215a71  libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
! 283493989843a62e8809d755882cc7dc  libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
! 646e984e9212b4f5be1015ac35286b01  libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
! 2529b561908b11eb04e035a33b8bf833  libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
! 775359cd834d9760dc2d84b4ab107cf1  libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
! 6e7da12fb98ec9064cde69a354453340  libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
! 725dfccec81c05b87b15d570e00ff8a9  libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
! 979cb5c0203a2f3887a77356c43e7f7b  libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
! ec37100f2a5463f2c310d4e0a7834203  libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
! 2232f752e9556001b6fe8248aac83fec  libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
! 41e78ff37810b9678eb8ae4980cd19a0  libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
! cc445fc5113245572fdf7125c7e51369  libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
! 5fcfb86a67ef7b5292ce10907ac1f5b7  libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
! 4fb74fb12b84f4f0fe573e4f0a74fc95  libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
! 2384974f0adda7df1cb015a271bfd877  libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
! b91aa10332f232710dbd6bcc25f1c2a1  libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
! 4bc3f54f39d384d4d49078e6f920a232  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
! d2372eb604736c37c6d2fa4d20772254  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
! d2986f46e4a1fac6763032fd569d517a  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! 832d341574cb975a416af91b9e9dddb7  libstdc++-v3/testsuite/abi/header_cxxabi.c
! ab0a5ca4ddac86490afd9342d4868589  libstdc++-v3/testsuite/abi/pr42230.cc
! e4665b21fe24cf66cfdbda544b693577  libstdc++-v3/testsuite/backward/11460.cc
! 8d8230578eae9dde269bcad1c407528d  libstdc++-v3/testsuite/backward/hash_map/1.cc
! f3b72e005cf8f2b369ad4959dfffa5fc  libstdc++-v3/testsuite/backward/hash_map/14648.cc
! 69dd3ed66a1602523800d9ab4188cd36  libstdc++-v3/testsuite/backward/hash_map/23528.cc
! 1feefe24ed2dd01daa91a213c4f164f8  libstdc++-v3/testsuite/backward/hash_map/25896.cc
! 22ddd44947d0eaf01a673ca69d5e31db  libstdc++-v3/testsuite/backward/hash_map/requirements/explicit_instantiation.cc
! 265955566caac76959cfaa9c547c42df  libstdc++-v3/testsuite/backward/hash_set/1.cc
! 3c7a0a6529acac03cdc8b32ff8c5702e  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! 71898436a23bb5cef72be0d02a1bd07c  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
! 4211b1ba78b41fe89a784af6b97713e3  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
! 5d4d15e54ab1e3b813b292718c462332  libstdc++-v3/testsuite/backward/strstream_members.cc
! 1684a4421264692bb75c66d05778b09a  libstdc++-v3/testsuite/backward/strstream_move.cc
! 839290fe90d6d98035edda152c863f6b  libstdc++-v3/testsuite/config/default.exp
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/data/cin_unget-1.txt
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.txt
--- 119383,121989 ----
  e2baf706b6b8f858b41c7d0a9e5b08a9  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/partial_sort_copy.cc
  8af38b36f1e40e204ae2c21c405731a9  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/set.cc
  f0ac087e7a77dd84d45a6199d1b9a455  libstdc++-v3/testsuite/25_algorithms/pstl/alg_sorting/sort.cc
! 590db8121bab876534c3b3b2ed264ff6  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-2.cc
! b597327879bdbcb68d17ca901fc7c43c  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-3.cc
! 62deadb5968f27ff7204fb7b28a20651  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-4.cc
! 0150a28467957203926c57f8abfa45c7  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test-5.cc
! ec34b5c99cefd9ea9a6d1067c9640fe0  libstdc++-v3/testsuite/25_algorithms/pstl/feature_test.cc
! b09127e5be55f9d7088675c06051c23d  libstdc++-v3/testsuite/25_algorithms/push_heap/complexity.cc
! 6402a8eea1dbb0033272942b55892f1a  libstdc++-v3/testsuite/25_algorithms/push_heap/constexpr.cc
! 300447a9be95466f5df011297fa806ad  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/2.cc
! 7d39ea4ed8d2504aaac0459919884c18  libstdc++-v3/testsuite/25_algorithms/push_heap/requirements/explicit_instantiation/pod.cc
! 4f12ec8fe34e20426908d102c48c9d1c  libstdc++-v3/testsuite/25_algorithms/random_shuffle/1.cc
! 9df0e164ce57de52f993fa4cb25b21c5  libstdc++-v3/testsuite/25_algorithms/random_shuffle/59603.cc
! 3db61e6594a708bba6029b3bf80f8eb9  libstdc++-v3/testsuite/25_algorithms/random_shuffle/moveable.cc
! a78cddf59da3e1e38c9bd9eefed389ee  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/2.cc
! 72e96a8470ffd9aef86de2dad9a3d19b  libstdc++-v3/testsuite/25_algorithms/random_shuffle/requirements/explicit_instantiation/pod.cc
! df7a09e4e4f086a9111ce1c78ecdf0e6  libstdc++-v3/testsuite/25_algorithms/remove/1.cc
! ffd8ff5083c2a1655e8bc957243edd41  libstdc++-v3/testsuite/25_algorithms/remove/check_type.cc
! 79e54f85530c01d098c867702b01cf10  libstdc++-v3/testsuite/25_algorithms/remove/constexpr.cc
! a547bf37f2441ba5f0b375e1d33a0045  libstdc++-v3/testsuite/25_algorithms/remove/constrained.cc
! 0d3d8484ca6ec62b25ce2411c4818579  libstdc++-v3/testsuite/25_algorithms/remove/moveable.cc
! ec61ce87215553fd8119bb2de3785a78  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/2.cc
! f3e21eb1479a404bdd0c92af41ea2d9e  libstdc++-v3/testsuite/25_algorithms/remove/requirements/explicit_instantiation/pod.cc
! 99122d3cbfd4da1352cf6f74ac2951f3  libstdc++-v3/testsuite/25_algorithms/remove_copy/constexpr.cc
! bb6d896c1be98173033e3e02644c1115  libstdc++-v3/testsuite/25_algorithms/remove_copy/constrained.cc
! e03e59f7f29f4260ef4079a6e5e7b8e6  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/2.cc
! 5f0a4a78d4814bcab99a65599070e091  libstdc++-v3/testsuite/25_algorithms/remove_copy/requirements/explicit_instantiation/pod.cc
! f3a8bf1913ca3f7135f45a5771b36110  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/check_type.cc
! c8e019417514e0aaf8303174ef0dd447  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constexpr.cc
! 2b8860618324bab8fc5983ecd752c57d  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/constrained.cc
! 7aec30c3e549bbc97112b84ca3ac4b85  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/2.cc
! cfd5677b094cacad86414fbf80178e71  libstdc++-v3/testsuite/25_algorithms/remove_copy_if/requirements/explicit_instantiation/pod.cc
! d7a8655c57e1bb6fe36bb4bcfebfb9ff  libstdc++-v3/testsuite/25_algorithms/remove_if/1.cc
! 722e27245847e91857d7e1688c69cd09  libstdc++-v3/testsuite/25_algorithms/remove_if/check_type.cc
! cb06372666dd722ec6c9bd8b7149b229  libstdc++-v3/testsuite/25_algorithms/remove_if/constexpr.cc
! 0fbe2172f33b52e0496d6fdff0f0469f  libstdc++-v3/testsuite/25_algorithms/remove_if/constrained.cc
! 16a66505a50921273079ea6ead4a67ab  libstdc++-v3/testsuite/25_algorithms/remove_if/moveable.cc
! 2ccca68f3d69740a107d822d5912b0d6  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/2.cc
! 0d0f0d6d5bf240239c78e3032493297f  libstdc++-v3/testsuite/25_algorithms/remove_if/requirements/explicit_instantiation/pod.cc
! 250fc70bdc9e98883320f06724d7d241  libstdc++-v3/testsuite/25_algorithms/replace/1.cc
! 3838af6ebfa5fe10e264e403527f6ac9  libstdc++-v3/testsuite/25_algorithms/replace/check_type.cc
! 44666292bef8f8df20b1379acf57e2ec  libstdc++-v3/testsuite/25_algorithms/replace/constrained.cc
! b1d9c1ca5c31da809599b3c837756dff  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/2.cc
! 5cd9e7a639f892a5066809c242774933  libstdc++-v3/testsuite/25_algorithms/replace/requirements/explicit_instantiation/pod.cc
! fb5494b16609991b52aefc9d30db0aa6  libstdc++-v3/testsuite/25_algorithms/replace_copy/1.cc
! c1eba949f0f11fe473c2812486bb0fb0  libstdc++-v3/testsuite/25_algorithms/replace_copy/check_type.cc
! 29325f71ccabe28d1f4be892ccf48e98  libstdc++-v3/testsuite/25_algorithms/replace_copy/constexpr.cc
! 8731e54c0dbff1714dce5f3d553d043a  libstdc++-v3/testsuite/25_algorithms/replace_copy/constrained.cc
! 9a03f9b4c6b50e053671718719e1d1c8  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/2.cc
! 36a9552a527f2f617da5988c0fea077f  libstdc++-v3/testsuite/25_algorithms/replace_copy/requirements/explicit_instantiation/pod.cc
! 69ff1de48001b46d02989bf53499da70  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/1.cc
! fe654c1c8024bd747762e082f82f6a00  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/check_type.cc
! e614c40e67dbe592f66f5ff069d8166e  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constexpr.cc
! b3d71913c351262d8ac9db6cfdd08b48  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/constrained.cc
! 67dc305aae4b60d8fe041181a4c52d81  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/2.cc
! d24d1145d981a70cc8441de2dbb29ddc  libstdc++-v3/testsuite/25_algorithms/replace_copy_if/requirements/explicit_instantiation/pod.cc
! d9f18b137948511fe7a74d0562da066b  libstdc++-v3/testsuite/25_algorithms/replace_if/1.cc
! 5de7a14548e1973ecb2951245e0da361  libstdc++-v3/testsuite/25_algorithms/replace_if/check_type.cc
! cd7de6c338aca918c2311346b8eddeec  libstdc++-v3/testsuite/25_algorithms/replace_if/constexpr.cc
! 877a3a65baaaaf44e2a740fef0eb694f  libstdc++-v3/testsuite/25_algorithms/replace_if/constrained.cc
! da4d7098933b8980fa56ae0172c4d3e9  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/2.cc
! fa693b7bf0129b9d2fdd156350668ae9  libstdc++-v3/testsuite/25_algorithms/replace_if/requirements/explicit_instantiation/pod.cc
  36f40bd4fda4eb8bb7b8c7178baddcb8  libstdc++-v3/testsuite/25_algorithms/reverse/constexpr.cc
! 68825cc79e0ab5ab5770391a61d26192  libstdc++-v3/testsuite/25_algorithms/reverse/constrained.cc
! 9737631f08b9a54ec83e9ed15b909eca  libstdc++-v3/testsuite/25_algorithms/reverse/moveable.cc
! 1dc25f2962b25c350014522a5fbbf17f  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/2.cc
! 7e27b9b6b32708b2a423cce7e30512b8  libstdc++-v3/testsuite/25_algorithms/reverse/requirements/explicit_instantiation/pod.cc
! 50ee50dde6cd209e070bef824374a4bc  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constexpr.cc
! 5b8422ff1e1c87ca01a92d6e1ba32a04  libstdc++-v3/testsuite/25_algorithms/reverse_copy/constrained.cc
! fc4f4c293916dff91d373ba182be7287  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/2.cc
! fcc19519316ce766337fd8034bba66bf  libstdc++-v3/testsuite/25_algorithms/reverse_copy/explicit_instantiation/pod.cc
! cc7f40103eb7315d4ef3dc56c272fcd5  libstdc++-v3/testsuite/25_algorithms/rotate/1.cc
! b2654784ccf746928f00c2b392b8450a  libstdc++-v3/testsuite/25_algorithms/rotate/90920.cc
! ab97fa69b02b5aad3e49559dc5a65bca  libstdc++-v3/testsuite/25_algorithms/rotate/check_type.cc
  6e81a6e87bcee591a45269b5ef7edde0  libstdc++-v3/testsuite/25_algorithms/rotate/constexpr.cc
! cb2617b3588c833ba2900da046002f6a  libstdc++-v3/testsuite/25_algorithms/rotate/constrained.cc
! a1845620570e25865ab05569759d69c3  libstdc++-v3/testsuite/25_algorithms/rotate/dr488.cc
! b579892e1463b9dbf659d85a05e0b056  libstdc++-v3/testsuite/25_algorithms/rotate/moveable.cc
! 9f04373990f62ffabd77851640918b35  libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc
! 7e23dc06f95437552ef00419100f84c3  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/2.cc
! c55697a34a7005164dace381c52bc1d1  libstdc++-v3/testsuite/25_algorithms/rotate/requirements/explicit_instantiation/pod.cc
! 5a9b82ecf1c6174bc576ed174ee1e486  libstdc++-v3/testsuite/25_algorithms/rotate/rotate.cc
! 91e0318e75a672bbb8cc2f1287b06fd3  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constexpr.cc
! 561a96a98279708c25526c5042d527c1  libstdc++-v3/testsuite/25_algorithms/rotate_copy/constrained.cc
! 023b47ed28e4f3479e5d8efdb67cff63  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/2.cc
! 8efd65726f4d2f5d16f0e5f21c45f0a1  libstdc++-v3/testsuite/25_algorithms/rotate_copy/requirements/explicit_instantiation/pod.cc
! 0bcd1d3a9750cf4fba99f9fea6beac03  libstdc++-v3/testsuite/25_algorithms/sample/1.cc
! 8656adcba6bfbd4b2da9b22526a8b63b  libstdc++-v3/testsuite/25_algorithms/sample/2.cc
! ee0b996cf44d71dadd980dcf0a4ba816  libstdc++-v3/testsuite/25_algorithms/sample/3.cc
! eb949ecf90361d6800c1ee99d1706e0a  libstdc++-v3/testsuite/25_algorithms/sample/81221.cc
! 04948bb4a5cea1f50065cf5eea9ec319  libstdc++-v3/testsuite/25_algorithms/sample/constrained.cc
! 8e513f41bd8980c6781bfadaf25ca799  libstdc++-v3/testsuite/25_algorithms/search/1.cc
! f12dd8a76149ac15cda21894b99483a2  libstdc++-v3/testsuite/25_algorithms/search/78346.cc
! e9edb56c71f9cefe96019e0f43fda8a4  libstdc++-v3/testsuite/25_algorithms/search/check_type.cc
! 3cf52cfd956377dfef9c5b87b73132e2  libstdc++-v3/testsuite/25_algorithms/search/constexpr.cc
! 56b42fdbb017ab1a09ef71c7551ebac1  libstdc++-v3/testsuite/25_algorithms/search/constrained.cc
! c1c8e82daadc43b79e717ffa00c11695  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/2.cc
! 6b8ec4ef69e7fee3bb70fdac4a49171f  libstdc++-v3/testsuite/25_algorithms/search/requirements/explicit_instantiation/pod.cc
! 3e28d60e900d213845df50bfe2fdde67  libstdc++-v3/testsuite/25_algorithms/search/searcher.cc
! b3b8792536528caa9f368275dab491de  libstdc++-v3/testsuite/25_algorithms/search_n/11400.cc
! edc2f1cf50138f1c0cf5c0b5e00fc798  libstdc++-v3/testsuite/25_algorithms/search_n/58358.cc
! f50dc133d85fe2c755951a69031d59d0  libstdc++-v3/testsuite/25_algorithms/search_n/97828.cc
! 08ef9cecaace637785bda5f14467a598  libstdc++-v3/testsuite/25_algorithms/search_n/check_type.cc
! 3481f01aa51c064e010c09bd26e53171  libstdc++-v3/testsuite/25_algorithms/search_n/constexpr.cc
! 160206989a8928576471249862bbab77  libstdc++-v3/testsuite/25_algorithms/search_n/constrained.cc
! bfb7e79e1557a010cdfd9588b6d8ed3e  libstdc++-v3/testsuite/25_algorithms/search_n/iterator.cc
! 7d56933aa9125082072c82db89699367  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/2.cc
! 00ac2a41e5a290ad1cc15bbb56b76778  libstdc++-v3/testsuite/25_algorithms/search_n/requirements/explicit_instantiation/pod.cc
! 56780736316bd0c5a6386d70eeb3e674  libstdc++-v3/testsuite/25_algorithms/set_difference/1.cc
! aaae221dd105af8c302acec21dbc29c1  libstdc++-v3/testsuite/25_algorithms/set_difference/35541.cc
! 5463957b99e6806e97734451b2a4b905  libstdc++-v3/testsuite/25_algorithms/set_difference/check_type.cc
! 89261b5984fd5f7d2c51500ec2e1ef87  libstdc++-v3/testsuite/25_algorithms/set_difference/constexpr.cc
! fbba2c54a32fcc8882e7012e5df50fbd  libstdc++-v3/testsuite/25_algorithms/set_difference/constrained.cc
! f13ef147c59fcaa07c843c8d5b3f8235  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/2.cc
! 218ce287e92e68aac296b9fe9b16374b  libstdc++-v3/testsuite/25_algorithms/set_difference/requirements/explicit_instantiation/pod.cc
! 9c76892e02c8228510ed7f85beda986b  libstdc++-v3/testsuite/25_algorithms/set_intersection/1.cc
! d5d2b82e3d88702bf1ecb5f26b610460  libstdc++-v3/testsuite/25_algorithms/set_intersection/34730.cc
! f55b485946593897f2ec866bc7999221  libstdc++-v3/testsuite/25_algorithms/set_intersection/check_type.cc
! edc288386bc3e436ff1e12541609860d  libstdc++-v3/testsuite/25_algorithms/set_intersection/constexpr.cc
! c4acf02371554125da3d752f228d3375  libstdc++-v3/testsuite/25_algorithms/set_intersection/constrained.cc
! 5b976fad570b5d89fcee4ace544a65ac  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/2.cc
! 9b528874b9b618ea66b32f240bb55e44  libstdc++-v3/testsuite/25_algorithms/set_intersection/requirements/explicit_instantiation/pod.cc
! 2559dab7efb20502430de0c9901825a9  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/1.cc
! 615c84198dde89079343e6db1c75f2ac  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/check_type.cc
! a9cc3d62881f9c92f52bbf1e75ffa04c  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constexpr.cc
! 488d3f03f766c29219715cd497654f5d  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/constrained.cc
! 5e66fdb0af6ba5f22e690665bb92444f  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/2.cc
! 8687d2ec963d4a24afc18dbde9a0c0e1  libstdc++-v3/testsuite/25_algorithms/set_symmetric_difference/requirements/explicit_instantiation/pod.cc
! abd70b0a641884f91322eb68125a77f3  libstdc++-v3/testsuite/25_algorithms/set_union/1.cc
! 0bc284041782abca9c03aa7a2077b68e  libstdc++-v3/testsuite/25_algorithms/set_union/check_type.cc
! f7e3251a6ce1e5303b2e7bfdcbfa27b6  libstdc++-v3/testsuite/25_algorithms/set_union/constexpr.cc
! c4c4a437b59482aef86cb2ffab24ea2b  libstdc++-v3/testsuite/25_algorithms/set_union/constrained.cc
! 33808d93e4ca0eb9de71485d73fe1f38  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/2.cc
! 9ade0c6447144c6e1085ada520067145  libstdc++-v3/testsuite/25_algorithms/set_union/requirements/explicit_instantiation/pod.cc
! d73f766013df35c2125c478367d8759a  libstdc++-v3/testsuite/25_algorithms/shift_left/1.cc
! 7285112bbc21c4582c106c467d66c1a0  libstdc++-v3/testsuite/25_algorithms/shift_right/1.cc
! d4fe14d87d7f376630fe653eface932e  libstdc++-v3/testsuite/25_algorithms/shuffle/1.cc
! 4f240d75a5268f7265013438c45d2774  libstdc++-v3/testsuite/25_algorithms/shuffle/constrained.cc
! 50cffbcb101fdd628ea943dbdfe303ae  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/2.cc
! 4a26db7b2c47acdecc3b43874ce5adef  libstdc++-v3/testsuite/25_algorithms/shuffle/requirements/explicit_instantiation/pod.cc
! 69db79b4caed784ad8ffdfdd399705f8  libstdc++-v3/testsuite/25_algorithms/sort/1.cc
! d1c2cccd1f212c8cac113ad1fafd8d05  libstdc++-v3/testsuite/25_algorithms/sort/34095.cc
! 9cca24da272654fc89a44a6f6df51f76  libstdc++-v3/testsuite/25_algorithms/sort/34636.cc
! 91d204fe7cdedc78710b741520491871  libstdc++-v3/testsuite/25_algorithms/sort/35588.cc
! 01ccdad9d57bb2687f8cff96ecc6620a  libstdc++-v3/testsuite/25_algorithms/sort/78991.cc
! 4ec57e5b37497902f544a0d3fed94b4e  libstdc++-v3/testsuite/25_algorithms/sort/check_compare_by_value.cc
! 6933de459ebe21279f69bbee82392162  libstdc++-v3/testsuite/25_algorithms/sort/constexpr.cc
! 448e497add4f761569c40fea7604bd95  libstdc++-v3/testsuite/25_algorithms/sort/constrained.cc
! ee85116a7090f24625341be25ff401bd  libstdc++-v3/testsuite/25_algorithms/sort/moveable.cc
! defd8ff7dbeed3d6bc8aac26ece01e6f  libstdc++-v3/testsuite/25_algorithms/sort/random_test.cc
! 7cf0333c196cf32901705eb5af21604d  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/2.cc
! e93271cd50054e288f28465e76418f3c  libstdc++-v3/testsuite/25_algorithms/sort/requirements/explicit_instantiation/pod.cc
! 58880a9c7da75865a1471098d3ba2fb5  libstdc++-v3/testsuite/25_algorithms/sort/vectorbool.cc
! 1de42877a97e9311a94f44cbbbd6ddd3  libstdc++-v3/testsuite/25_algorithms/sort_heap/check_compare_by_value.cc
! 7c3a41952a13c0fe0aa3e072f2339204  libstdc++-v3/testsuite/25_algorithms/sort_heap/complexity.cc
! e6f58508b49d176e2077d2d9271a65c6  libstdc++-v3/testsuite/25_algorithms/sort_heap/constexpr.cc
! 3e5f5c0159893de3557bd597fb439403  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/2.cc
! 1c5873d0068cbf650a85d678ee49329d  libstdc++-v3/testsuite/25_algorithms/sort_heap/requirements/explicit_instantiation/pod.cc
! ecf6ba81c4223c298ab19f4d1c610d7d  libstdc++-v3/testsuite/25_algorithms/stable_partition/1.cc
! c3b9039a7581237c6b47ebf88f2b3a67  libstdc++-v3/testsuite/25_algorithms/stable_partition/constrained.cc
! f33d6b75325bf96d2238e3599fd04152  libstdc++-v3/testsuite/25_algorithms/stable_partition/mem_check.cc
! 7d26954ca9310b49e5dc1b2be88c0e7c  libstdc++-v3/testsuite/25_algorithms/stable_partition/moveable.cc
! d0dc6e72ded804672a3c8c6f6f8136ea  libstdc++-v3/testsuite/25_algorithms/stable_partition/pr52822.cc
! db8792a754570f7d240aafa85516b11d  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/2.cc
! 96e2436510c63b22c5dc962ba157d175  libstdc++-v3/testsuite/25_algorithms/stable_partition/requirements/explicit_instantiation/pod.cc
! b4debf2aaba2a99903c9f4d673382515  libstdc++-v3/testsuite/25_algorithms/stable_sort/1.cc
! 02a477edb7562938a5d11bba7deea153  libstdc++-v3/testsuite/25_algorithms/stable_sort/2.cc
! 3f8707e670aeefab26cfad520eba39c6  libstdc++-v3/testsuite/25_algorithms/stable_sort/3.cc
! b3f58b622470c2e75b734eba5c7ee60a  libstdc++-v3/testsuite/25_algorithms/stable_sort/4.cc
! b6ebf9ae8aa59ae6b96f4deb3405b203  libstdc++-v3/testsuite/25_algorithms/stable_sort/49559.cc
! 3c538440791eb288154ab592c49ca34c  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_compare_by_value.cc
! 02971190f2cc71f903f1ddecbda58d3f  libstdc++-v3/testsuite/25_algorithms/stable_sort/check_type.cc
! 3e668cbc6435e3076d103d7b5db800a2  libstdc++-v3/testsuite/25_algorithms/stable_sort/constrained.cc
! 454bb61da5433fc79ce0e98385722fe2  libstdc++-v3/testsuite/25_algorithms/stable_sort/mem_check.cc
! 770387a9094a052154828acb2490eb02  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable.cc
! ceab8cd7347073ba1476618f758feb1b  libstdc++-v3/testsuite/25_algorithms/stable_sort/moveable2.cc
! d9289169f0668914705b6248cccf1075  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/2.cc
! d2f80cf09649d4b0afa50caa994dda6a  libstdc++-v3/testsuite/25_algorithms/stable_sort/requirements/explicit_instantiation/pod.cc
! 30d5eeb6352730e87f2490f2ee77ed08  libstdc++-v3/testsuite/25_algorithms/swap/68877.cc
! d8d428e12fae3d59231edf3e70ff6686  libstdc++-v3/testsuite/25_algorithms/swap/constexpr.cc
! 448ff71a4f570df96363afd7d68bb9cf  libstdc++-v3/testsuite/25_algorithms/swap/dr809.cc
! 6f9757f48c43cbbebdd10420e7ea50c9  libstdc++-v3/testsuite/25_algorithms/swap/noexcept.cc
! 64644e3b0b70a3f0ced607db3bad6354  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/2.cc
! dfb6f9bb8742c58c2f87221c601dc0b2  libstdc++-v3/testsuite/25_algorithms/swap/requirements/explicit_instantiation/pod.cc
! 047423f4f72b1c116b504a932799df3e  libstdc++-v3/testsuite/25_algorithms/swap_ranges/1.cc
! 3799e98abe7fab45d1b8cf8701e1b18d  libstdc++-v3/testsuite/25_algorithms/swap_ranges/check_type.cc
! d7a92b2b5411a7063e759ad31297f649  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constexpr.cc
! 3796850cea0b6734e8ad33c8c929693c  libstdc++-v3/testsuite/25_algorithms/swap_ranges/constrained.cc
! 5a2fff1e72ebd27f939631d88b3ef2a9  libstdc++-v3/testsuite/25_algorithms/swap_ranges/moveable.cc
! 691df9a11d8cf6e3962cf9f41e25eda3  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/2.cc
! f5f9cecd0ee785f9a75c4c2f4d2aff60  libstdc++-v3/testsuite/25_algorithms/swap_ranges/requirements/explicit_instantiation/pod.cc
! ba592b284f6d2e508b60e76de25145aa  libstdc++-v3/testsuite/25_algorithms/transform/constexpr.cc
! 4d4f897c5bf9c73e721f960f33b30e87  libstdc++-v3/testsuite/25_algorithms/transform/constrained.cc
! 87dbc2c3e561804caa2d2ce875ec3790  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/2.cc
! 703cb5226307aa45aa88ccbda0d4326a  libstdc++-v3/testsuite/25_algorithms/transform/requirements/explicit_instantiation/pod.cc
! a1865c601f9b9e4047af8a04408cfbc8  libstdc++-v3/testsuite/25_algorithms/unique/1.cc
! 2b8ba383c0662d2fd3360201c3819551  libstdc++-v3/testsuite/25_algorithms/unique/11480.cc
! d8412fa15e8cd756cab25c277d70c2a3  libstdc++-v3/testsuite/25_algorithms/unique/2.cc
! b794dd587e857350501af574115a867d  libstdc++-v3/testsuite/25_algorithms/unique/constexpr.cc
! a965812055fc5259d046624d0945cd7f  libstdc++-v3/testsuite/25_algorithms/unique/constrained.cc
! 355bac672a37760d79731b280b235cfb  libstdc++-v3/testsuite/25_algorithms/unique/moveable.cc
! edc923eb902c027a94e2ab4f61120822  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/2.cc
! 09cd61c6b9c530e1376f6930500fb9f1  libstdc++-v3/testsuite/25_algorithms/unique/requirements/explicit_instantiation/pod.cc
! b54cd64927cf15da60193d0b262a02b2  libstdc++-v3/testsuite/25_algorithms/unique_copy/1.cc
! be2405ccb0c10ee66a683d0e004dae7a  libstdc++-v3/testsuite/25_algorithms/unique_copy/2.cc
! bee4ca19901c518a9ae8e5ad0bb5c127  libstdc++-v3/testsuite/25_algorithms/unique_copy/26133.cc
! 819e777bfa5aabf87237f2f746475286  libstdc++-v3/testsuite/25_algorithms/unique_copy/check_type.cc
! 93963d3839b5004a0d8a4177e151d2e0  libstdc++-v3/testsuite/25_algorithms/unique_copy/constexpr.cc
! 35d120311ee460e3c8950ac82d8f12cb  libstdc++-v3/testsuite/25_algorithms/unique_copy/constrained.cc
! ac9e27cf2a9c9adbc5e804b67f745519  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/2.cc
! f03d1e3a48c96ef3833de0643c43d4b5  libstdc++-v3/testsuite/25_algorithms/unique_copy/requirements/explicit_instantiation/pod.cc
! 311b1e801d784507500fd1d2aa4b81f0  libstdc++-v3/testsuite/25_algorithms/upper_bound/1.cc
! 4ef5d85747af4a7da54e44c5cf308747  libstdc++-v3/testsuite/25_algorithms/upper_bound/2.cc
! c8f434e0369213deb9908dd10ea48812  libstdc++-v3/testsuite/25_algorithms/upper_bound/33613.cc
! c84841d69efcc13b83f7e0119e7ae4f2  libstdc++-v3/testsuite/25_algorithms/upper_bound/check_type.cc
! 0765a475f20bf7cee18414032e5bc66e  libstdc++-v3/testsuite/25_algorithms/upper_bound/constexpr.cc
! 71bee8104c2cefbfc01ec70c388899db  libstdc++-v3/testsuite/25_algorithms/upper_bound/constrained.cc
! d2ed904658cdde8ef6ea42f0a25ee746  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_neg.cc
! 52496cd3a90dd036f76563467187dfaf  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_partitioned_pred_neg.cc
! c023364dca046fe5b13123119092820c  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/constexpr_valid_range_neg.cc
! 17440d23c414acd9141142058937167c  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/partitioned_neg.cc
! e994474fa89878d2e9670180ac515382  libstdc++-v3/testsuite/25_algorithms/upper_bound/debug/partitioned_pred_neg.cc
! 24576c9782dfa44005ced0827269307f  libstdc++-v3/testsuite/25_algorithms/upper_bound/partitioned.cc
! 8d0e5dbc178cbd4d96d02d58286c255e  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/2.cc
! ad4917041bb1e6157242d3a9d16ecc91  libstdc++-v3/testsuite/25_algorithms/upper_bound/requirements/explicit_instantiation/pod.cc
! f00454a639bc6cad951e91a9f263632c  libstdc++-v3/testsuite/26_numerics/accumulate/1.cc
! 85e223c84b10dbd3fdaf3473ff6e83e4  libstdc++-v3/testsuite/26_numerics/accumulate/48750.cc
! 6cb060e486b5f590d1c5727370044346  libstdc++-v3/testsuite/26_numerics/accumulate/constexpr.cc
! 7308982002b559c378e84d985a4c98e2  libstdc++-v3/testsuite/26_numerics/accumulate/lwg2055.cc
! 06b09e1f18f5938d7c5a1dae1bca353f  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/2.cc
! 9917094be08fc702c28be7cd975cc371  libstdc++-v3/testsuite/26_numerics/accumulate/requirements/explicit_instantiation/pod.cc
! 0133647b85e047653bb77a36aa947d89  libstdc++-v3/testsuite/26_numerics/adjacent_difference/1.cc
! cf5d336cd84952585abf201ac2e6d677  libstdc++-v3/testsuite/26_numerics/adjacent_difference/constexpr.cc
! 676d6fe52d1db28954ab2cd6a9dc6f03  libstdc++-v3/testsuite/26_numerics/adjacent_difference/lwg2055.cc
! ea8898578acbb705775fb2fd23ce6d87  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/2.cc
! c142399f551bd530f74dcf4c26d1be80  libstdc++-v3/testsuite/26_numerics/adjacent_difference/requirements/explicit_instantiation/pod.cc
! 24b43ceff7dcf531d071e6414f9a458a  libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/byteswap.cc
! 4bc3769839b59b77909e7a87430d24dc  libstdc++-v3/testsuite/26_numerics/bit/bit.byteswap/version.cc
  874b969b1c6b476310e9a3d96f5b948c  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/105027.cc
! f1355b226cf283e33a47075a0b537bce  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/bit_cast.cc
! c304e0955397cb1fb5f23ca2903150f4  libstdc++-v3/testsuite/26_numerics/bit/bit.cast/version.cc
! 30cbe7719c575114a301fa5c8dc7902b  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_one.cc
! 450d835b33266767498d5198e8fac2e7  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countl_zero.cc
! 48aec1d803c37a792983832368017404  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_one.cc
! 3189fd6753c80905944db3173d1e1435  libstdc++-v3/testsuite/26_numerics/bit/bit.count/countr_zero.cc
! a9e930d5c22aa8c086a106fbf60dbabf  libstdc++-v3/testsuite/26_numerics/bit/bit.count/popcount.cc
! 4cc4bd03fb0bdea5c1c77c7b3a71c90b  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil.cc
! 432f709f48b25300e8c89ed5224d52c6  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_ceil_neg.cc
! 6170e9ca6e11f83d9a855fb2d60b1c63  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_floor.cc
! c36b868b65684443b475643ccd7fbf8f  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/bit_width.cc
! 15eff8a534026f4c77cc41831fe078b7  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/has_single_bit.cc
! 5a11b0fba5eb4b9780e1f02e6b8925f4  libstdc++-v3/testsuite/26_numerics/bit/bit.pow.two/lwg3656.cc
! c8b9ac20177006cc51d9b31ab96a54b6  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotl.cc
! 844b2487e2f44948fa730923f168588d  libstdc++-v3/testsuite/26_numerics/bit/bit.rotate/rotr.cc
! 9bfa323e186a0fa581c58f6d7c921238  libstdc++-v3/testsuite/26_numerics/bit/header-2.cc
! 91dce18f7a44c55c7a565f5b6c53cd31  libstdc++-v3/testsuite/26_numerics/bit/header.cc
! 84021b78dfdd0a4a3db9f638b3a3d957  libstdc++-v3/testsuite/26_numerics/complex/1.cc
! c9e9fe06c75b620a91ec4b21797c2c30  libstdc++-v3/testsuite/26_numerics/complex/13450.cc
! 2b5595a19bc99021bb2b57336f7173b0  libstdc++-v3/testsuite/26_numerics/complex/2.cc
! 6e351bd3a4f9d853d109aa6616202e30  libstdc++-v3/testsuite/26_numerics/complex/50880.cc
! 5b4f6f73b9a1e1bca2cc1a2398c4c6bc  libstdc++-v3/testsuite/26_numerics/complex/51083.cc
! ce14bd3ac22b8b0903430ee92e39abeb  libstdc++-v3/testsuite/26_numerics/complex/56111.cc
  af7877b96aa74cdfc7f025c671e3d6c2  libstdc++-v3/testsuite/26_numerics/complex/abi_tag.cc
! 492c2697008eacbbee505884592c83f0  libstdc++-v3/testsuite/26_numerics/complex/buggy_complex.cc
! 5ec9dc477c1a2cdf0adb940ba051fc46  libstdc++-v3/testsuite/26_numerics/complex/c99.cc
! a7f1de55f19bffd3e6e0b7af4f715cd0  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/constexpr.cc
! 1ea8aa2c3b8fc7f12d7b156482c7c3c3  libstdc++-v3/testsuite/26_numerics/complex/comparison_operators/more_constexpr.cc
! a9291239979c810287186c890e9ee651  libstdc++-v3/testsuite/26_numerics/complex/cons/48760.cc
! 76e6a7c23e88a735fea1417daa217511  libstdc++-v3/testsuite/26_numerics/complex/cons/48760_c++0x.cc
! 879c643c26d19d4335d2ba300c010dfe  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr.cc
! 6672313976bbb42f2925394b39d7d130  libstdc++-v3/testsuite/26_numerics/complex/cons/constexpr_primary.cc
! 19512dc3e3629442ede15cf79db2dadc  libstdc++-v3/testsuite/26_numerics/complex/dr387_2.cc
! 71aaaa4a50350c9ff3c22f7e1d5b3594  libstdc++-v3/testsuite/26_numerics/complex/dr781.cc
! 16bed14f4136369e492ccab6baef877c  libstdc++-v3/testsuite/26_numerics/complex/dr844.cc
! 3fbda0bb50ff36ce0895ca2ce554ba98  libstdc++-v3/testsuite/26_numerics/complex/ext_c++23.cc
! c93661533e4efbc4c4219c5aedb5a5fd  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/1.cc
! 6b7ff5039801f1e723e2bdbddb67daac  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/char/dr2714.cc
! 0f20b81b67a1fe5bc92ab651c691712a  libstdc++-v3/testsuite/26_numerics/complex/inserters_extractors/wchar_t/1.cc
! 1ce6df6adbdaf2f4fcf0dd871d23cfe7  libstdc++-v3/testsuite/26_numerics/complex/literals/types.cc
! 4be2a9360060a9a88d98cdc45c440cbc  libstdc++-v3/testsuite/26_numerics/complex/literals/values.cc
! d0b2793cab73b17595ea9fb0080d06b2  libstdc++-v3/testsuite/26_numerics/complex/operators/more_constexpr.cc
  906619ecf0877a7ff5302dd409c34714  libstdc++-v3/testsuite/26_numerics/complex/pow.cc
! 6a019a7ab320eb3f31c96781d5b26aad  libstdc++-v3/testsuite/26_numerics/complex/proj.cc
! fb96fdd63a78933157a12f73ac66c583  libstdc++-v3/testsuite/26_numerics/complex/requirements/constexpr_functions.cc
! eda5539fb3d84347bb55a5d24fb07dbf  libstdc++-v3/testsuite/26_numerics/complex/requirements/more_constexpr.cc
! 0243f1205154d9ed8e79836fcd836aa1  libstdc++-v3/testsuite/26_numerics/complex/value_operations/1.cc
! 5c285853f214253fbf3c77a27e0ec1db  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr.cc
! 56f7856a8550e61adbf79d5d881ceaf6  libstdc++-v3/testsuite/26_numerics/complex/value_operations/constexpr2.cc
! e717660631b041883deaa24debf6fe3c  libstdc++-v3/testsuite/26_numerics/complex/value_operations/dr387.cc
! 678d45bf0e91ec2d4be51feffe98e388  libstdc++-v3/testsuite/26_numerics/complex/value_operations/more_constexpr.cc
! 20b960246df66b49743721ebb6e2de95  libstdc++-v3/testsuite/26_numerics/complex/value_operations/pr88341.cc
! 68b35c426bae7d33d16b18f7e85e1fb6  libstdc++-v3/testsuite/26_numerics/endian/1.cc
! 159c680208f75763069a4baac8f9eb6c  libstdc++-v3/testsuite/26_numerics/endian/2.cc
! 50114d2831f612476e5d2f9e26830bd0  libstdc++-v3/testsuite/26_numerics/endian/3.cc
! d82876a2c8e35c1fbc4ce356c69a5c55  libstdc++-v3/testsuite/26_numerics/endian/4.cc
! 99298cef7e624e3f4c3272acf5184c20  libstdc++-v3/testsuite/26_numerics/exclusive_scan/1.cc
! 4ae2caeaa19a1414391829f460a1675b  libstdc++-v3/testsuite/26_numerics/exclusive_scan/constexpr.cc
! 744d041824042d2af8ef47c28119ef25  libstdc++-v3/testsuite/26_numerics/gcd/1.cc
  50d80887b49e18b929dd57c20f038646  libstdc++-v3/testsuite/26_numerics/gcd/105844.cc
! 322844c3f52b724a3551c3fb2afcf703  libstdc++-v3/testsuite/26_numerics/gcd/2.cc
! e4dc0ecfcde74513b415da85f6d0dec9  libstdc++-v3/testsuite/26_numerics/gcd/92978.cc
! 39c36a7a13b080d84ce7df247f76bcaa  libstdc++-v3/testsuite/26_numerics/gcd/gcd_neg.cc
! 98103b562644af6058051c932e30f979  libstdc++-v3/testsuite/26_numerics/headers/ccomplex/std_c++0x_neg.cc
! fc0aaccd952d01a07f9bf96efd98f8ea  libstdc++-v3/testsuite/26_numerics/headers/cfenv/std_c++0x_neg.cc
! a13cb486aaf183556330c527b56f1345  libstdc++-v3/testsuite/26_numerics/headers/cfenv/types_std_c++0x.cc
! 1107829a4b0ebddc2e237d1d81bc6ed7  libstdc++-v3/testsuite/26_numerics/headers/cmath/14608.cc
! b8cb9025cfd55dab112b42cf7a12b8b9  libstdc++-v3/testsuite/26_numerics/headers/cmath/19322.cc
! 2f35d567cbc188cc70ee976864919d7a  libstdc++-v3/testsuite/26_numerics/headers/cmath/25913.cc
! f01f3ff78e3c32a13e7ff434051b3488  libstdc++-v3/testsuite/26_numerics/headers/cmath/37582.cc
! 8d50f57e8812b890cd6bb7023a1b8c77  libstdc++-v3/testsuite/26_numerics/headers/cmath/48891.cc
! d3c30352574e8247889f24db266affaa  libstdc++-v3/testsuite/26_numerics/headers/cmath/51083.cc
! 5b1abe5ffc15854ed1fdc6500b9eb359  libstdc++-v3/testsuite/26_numerics/headers/cmath/53503.cc
! 5021413b1a8034398680ed4f0882206b  libstdc++-v3/testsuite/26_numerics/headers/cmath/60401.cc
! cfa6be5116230414ea3dfd6276bc2348  libstdc++-v3/testsuite/26_numerics/headers/cmath/60637.cc
! d30cc3671f0a972b249848b5202cebdc  libstdc++-v3/testsuite/26_numerics/headers/cmath/82644.cc
! 1b9951a28fd0140f339e71c71bc3cd04  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++11.cc
! 2bcb796be02df61669c23e26a3b45cef  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++23.cc
! 74ca520cefe8e60704cfc7826cfea028  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c++98.cc
! 3cc87dcdb6e6406cfabccf882c0840ab  libstdc++-v3/testsuite/26_numerics/headers/cmath/c99_classification_macros_c.cc
! cabd02a55638d32a8a94dc5fbc5e5880  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math.cc
! 22debde6b7950831bb9987a5d2f82581  libstdc++-v3/testsuite/26_numerics/headers/cmath/c_math_dynamic.cc
! 1386de822955839825d527035c0702bc  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192.cc
! 57a8185c9107656dec32645de3df7f24  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr2192_neg.cc
! 3444ba62b3a8519094872a0e431c4bfc  libstdc++-v3/testsuite/26_numerics/headers/cmath/dr550.cc
! 1aa4ac0cfef5187dd4f43d43e938ecfd  libstdc++-v3/testsuite/26_numerics/headers/cmath/fabs_inline.cc
! 4036dd4cfff1dc95c230ea5e1399f447  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_global.cc
! 1fcbb580cc1bea1cd3d62f72472f8f56  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std.cc
! 742b81edd2216cc41fee7a766fd67cf7  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++17.cc
! e36114f4573a064d9d3df458125e43e6  libstdc++-v3/testsuite/26_numerics/headers/cmath/functions_std_c++23.cc
! 86d8c2032dad1688eb520eca467e228a  libstdc++-v3/testsuite/26_numerics/headers/cmath/hypot.cc
! ff4fd6e60f977b1f246acf08e42ce1be  libstdc++-v3/testsuite/26_numerics/headers/cmath/macros.cc
! b02b346fb096de047ab254e66eab3b6e  libstdc++-v3/testsuite/26_numerics/headers/cmath/nextafter_c++23.cc
! ec4d41de9adbfea59234a9d6232097fc  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads.cc
! 2d050f23c71fb9f0185d930d5d50bcd8  libstdc++-v3/testsuite/26_numerics/headers/cmath/overloads_c++0x_neg.cc
! 20ce4556597f4f95913a3c805ea94962  libstdc++-v3/testsuite/26_numerics/headers/cmath/powi.cc
! f993b467a982beeaddfe50cf69d314e8  libstdc++-v3/testsuite/26_numerics/headers/cmath/special_functions_global.cc
! fda8f30d25278b5168a600738e06d2ad  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x.cc
! 190f4f8b0166bf5f97fbfe980b7e3546  libstdc++-v3/testsuite/26_numerics/headers/cmath/types_std_c++0x_neg.cc
! 88d43632ee6f9c143e9f7a4cd91d70ee  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++11.h
! fdcf7d303ad07292c8cf53ed5b244dd9  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_c++98.h
! bdefc519d89fb02410a6799d608750ad  libstdc++-v3/testsuite/26_numerics/headers/complex.h/std_gnu++11.h
! b1f96df0357954c2a1fcd94a57df04d0  libstdc++-v3/testsuite/26_numerics/headers/complex/synopsis.cc
! 967412e826f52ae57b83bb7ab4389b4a  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/13943.cc
! 299d1dd4423f074e6d7b1e8fd98c5e5f  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/2190.cc
! 8321256cd236dd01447a37832e23bc00  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/54686.cc
! 3976b577eda9dae3ca27f7609f071726  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/60401.cc
! b5750477b54970aae3db0586a246865b  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192.cc
! 2a33816f07ad739c2385b99e6d91ab32  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2192_neg.cc
! 8f4e4f668645a75f22f491d9b1ef5db4  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/dr2735.cc
! 9b475b63a59249f4b44d6a4c7565763b  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/functions_std.cc
! 6b2c07bd4c3b6d7b298db70d0602231a  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/macros.cc
! 8001b983598a9a2bbec032ea1d2043f5  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std.cc
! a7bd6d023fd74d9c942b41dcf5697628  libstdc++-v3/testsuite/26_numerics/headers/cstdlib/types_std_c++0x.cc
! b8590a41fe72f6c36cd6df27b6d416e4  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/complex.cc
! 4766a70e4aa8863db5eadcf9dc504f20  libstdc++-v3/testsuite/26_numerics/headers/ctgmath/std_c++0x_neg.cc
! 00d5123d4358ece132198e536e22092d  libstdc++-v3/testsuite/26_numerics/headers/numeric/numeric_parallel_mode.cc
! ccf0e235768a5e62e572c78fafc76a69  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric.cc
! e888ac12c4c191c4a5cfa64a732390f2  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed1.cc
! 654ae8b8add430c223676224ba442eca  libstdc++-v3/testsuite/26_numerics/headers/numeric/parallel_numeric_mixed2.cc
! 4bbfddd0e6eabc8b23acfcca3a1a17a8  libstdc++-v3/testsuite/26_numerics/headers/numeric/synopsis.cc
! 9ec5bfc195381f1dab69b5bd058cab0b  libstdc++-v3/testsuite/26_numerics/headers/random/std_c++0x_neg.cc
! 67942375aa6e400065ee363be5116411  libstdc++-v3/testsuite/26_numerics/headers/random/types_std_c++0x.cc
! 706f85a3fcd3ff9a4dfa1b6b822f7a63  libstdc++-v3/testsuite/26_numerics/headers/valarray/synopsis.cc
! 03e019c4f8a241467a2f23af80500d24  libstdc++-v3/testsuite/26_numerics/headers/valarray/types_std.cc
! 8025d87ad314b8a3bab5fa59a9e9304e  libstdc++-v3/testsuite/26_numerics/inclusive_scan/1.cc
! e1b51fd6c7c5086ba22b5ffe5dbe2242  libstdc++-v3/testsuite/26_numerics/inclusive_scan/constexpr.cc
! c5d3db3893eca263234f6eb9402b3246  libstdc++-v3/testsuite/26_numerics/inner_product/1.cc
! a6db5d0c9abc4de3e1712927738fea9b  libstdc++-v3/testsuite/26_numerics/inner_product/constexpr.cc
! 01466af823635ac48b0d8a3041bd7e5a  libstdc++-v3/testsuite/26_numerics/inner_product/lwg2055.cc
! 1995509dd7579d37fc3493dfe68edb13  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/2.cc
! aeabc4d25a07bde7a910fa5d4f8a61db  libstdc++-v3/testsuite/26_numerics/inner_product/requirements/explicit_instantiation/pod.cc
! 8a05b353535c62f64920a74cb2f34c79  libstdc++-v3/testsuite/26_numerics/iota/1.cc
! e0b58269927e38e2e9feb4189e3e95ba  libstdc++-v3/testsuite/26_numerics/iota/constexpr.cc
! f0ab4198daf9a63a5a01cff40b2e3836  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/2.cc
! d676a735941e66a8673d0e9f60b144e3  libstdc++-v3/testsuite/26_numerics/iota/requirements/explicit_instantiation/pod.cc
! 0e7348f9b281592c3f79492d05c6f488  libstdc++-v3/testsuite/26_numerics/lcm/1.cc
  37db28e85bc57ea43b5a022211e015ad  libstdc++-v3/testsuite/26_numerics/lcm/105844.cc
! 86b4cf47dc3a667c20210010ebd69cde  libstdc++-v3/testsuite/26_numerics/lcm/92978.cc
! ac4ce7ca35a0baead00defb939737120  libstdc++-v3/testsuite/26_numerics/lcm/lcm_neg.cc
! 579ec6121ff496226575351d616689c5  libstdc++-v3/testsuite/26_numerics/lerp/1.cc
  f9ae973e3d6f85f4c35471e62402ba98  libstdc++-v3/testsuite/26_numerics/lerp/constexpr.cc
! ba268d24d8e76ddd08f2db57f6c51ddb  libstdc++-v3/testsuite/26_numerics/lerp/version.cc
! 2ebf3211d0ae920c6d8aff7644b858dc  libstdc++-v3/testsuite/26_numerics/midpoint/floating.cc
! 5130f7424f19da76288de43d6d292e3b  libstdc++-v3/testsuite/26_numerics/midpoint/integral.cc
! 85ef849a51b833d0a5c1dba42f126c19  libstdc++-v3/testsuite/26_numerics/midpoint/pointer.cc
! 2177140028210cda9ee7d692d8d06f78  libstdc++-v3/testsuite/26_numerics/midpoint/pointer_neg.cc
! ba268d24d8e76ddd08f2db57f6c51ddb  libstdc++-v3/testsuite/26_numerics/midpoint/version.cc
! d955a63dda0a0db94fa7ce0603a127c4  libstdc++-v3/testsuite/26_numerics/numbers/1.cc
! b2cf58ecb868137550f7fd84bcf16f77  libstdc++-v3/testsuite/26_numerics/numbers/2.cc
! a269e30b1586c22500a12c5702b01079  libstdc++-v3/testsuite/26_numerics/numbers/3.cc
! 7b92eb04c86f8a72b2036b36629950ff  libstdc++-v3/testsuite/26_numerics/numbers/4.cc
! 6c1fe5ab484bfc36f0605d7f8f0a04d1  libstdc++-v3/testsuite/26_numerics/numbers/float128.cc
! cb0244876e2ce5b0704d374adca05ddc  libstdc++-v3/testsuite/26_numerics/numbers/nonfloat_neg.cc
! a99e691050435f7aeb3c4fe85a6e3b59  libstdc++-v3/testsuite/26_numerics/partial_sum/1.cc
! cbd03d6d32922d359a1ddd86655e1392  libstdc++-v3/testsuite/26_numerics/partial_sum/constexpr.cc
! 728b695ae5c9ff90da938142637faf50  libstdc++-v3/testsuite/26_numerics/partial_sum/lwg2055.cc
! 83c6ab989fe00bb9d4949456b4ba4ce0  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/2.cc
! a1caa68cc4972cd3159804a408643d76  libstdc++-v3/testsuite/26_numerics/partial_sum/requirements/explicit_instantiation/pod.cc
  862f4f439e8707b32a42b5fe736946a5  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/adjacent_difference.cc
  0553df89726830b7195d3dc76149d7b4  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/reduce.cc
  e7d03e915035104e8c34f0e1a253cea1  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/scan.cc
  371296694e234040b308e95ba965691b  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_reduce.cc
  37a9d3638006b842a59994327880b85f  libstdc++-v3/testsuite/26_numerics/pstl/numeric_ops/transform_scan.cc
! c4a3c0ce95f266edbd33ae742e6c6415  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/default.cc
! 4a9e71a11251457ff0029020fdb8f22d  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/cons/parms.cc
! ae18304a3e29e9a7b9d6fd736acda81d  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/equal.cc
! 373ad5b954292a67ff851624af171f64  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/inequal.cc
! e9d694dfff0062cc8c84255b28675baf  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/serialize.cc
! 88642ef862ad925ddcf05c3e69b16d88  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/operators/values.cc
! 384f92442d4823f2bd5a22459fe1525e  libstdc++-v3/testsuite/26_numerics/random/bernoulli_distribution/requirements/typedefs.cc
! dea617c857e2704c95f88efd4c96f411  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/default.cc
! 194587166985b86b4c3da1e0e7f167c8  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/cons/parms.cc
! 7bf2cad7a363c51103cdf0984b486aab  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/equal.cc
! 2084d56da872d5f5b7688e0805822978  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/inequal.cc
! 4749d20d101c90d7764f79ec2f0b75ee  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/serialize.cc
! 6145e00df8eb1f016db247bc87a01527  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values.cc
! 45f76b0110a2b02ff48f55554dbb8bc4  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values2.cc
! 45d52dac127a49ff16a6093cc395f66f  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values3.cc
! fe1e69899748cc1f6e79209dd9032b21  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values4.cc
! 424f14558effe15aed89ec82d509414d  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/operators/values5.cc
! bbb1b88b6abb3024d1dd904e110a6b5e  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/explicit_instantiation/1.cc
! 7c4b2c3b17ba953d9bd289de5dcd29fb  libstdc++-v3/testsuite/26_numerics/random/binomial_distribution/requirements/typedefs.cc
! db5fe74c82243bce1cdc17523ff50f79  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/default.cc
! 5c76e631b90a34143e00691f12b12e0c  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/cons/parms.cc
! 167b83848ac1784758faa8b5d740dd3b  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/equal.cc
! 68dc0b8cb6b688a267288ae42de03c73  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/inequal.cc
! 619d752d39ada8948468673783a72075  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/operators/serialize.cc
! 5bfffdb34e4517dcb85f3bf710cd4304  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/explicit_instantiation/1.cc
! c2247e76f484b3f025edcf198cedec8f  libstdc++-v3/testsuite/26_numerics/random/cauchy_distribution/requirements/typedefs.cc
! 2c41b25a552ef95d68a387c687cdc61b  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/83833.cc
! e1f3166dc108e54a15f6e09cbae94c7c  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/default.cc
! e2fcede7b96dbc915e7f2cc5418dcbf6  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/cons/parms.cc
! 0755850e0e161f99bae8bed7106102fa  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/equal.cc
! 9e77eb6c764745936275283972b9d7b0  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/inequal.cc
! 9d13cda8c21f7b7206730e5a819df037  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/operators/serialize.cc
! 70c34c22b7480ca5fe45c53d9eebaf62  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/explicit_instantiation/1.cc
! 41f7f1183d6b0051e954fbc3362f16d6  libstdc++-v3/testsuite/26_numerics/random/chi_squared_distribution/requirements/typedefs.cc
! 7d987215f379ff4a65f2ead00b2ba9c6  libstdc++-v3/testsuite/26_numerics/random/concept.cc
! a0c0c458eb75548853a127a78c2f7e90  libstdc++-v3/testsuite/26_numerics/random/default_random_engine.cc
! e4729b548390cfce1326cdc87adaa497  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/55215.cc
! 7af9080d5bb25b801846973328b975a7  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_copy.cc
! 3078e71382509c005b8920a90561138d  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/base_move.cc
! 4fc066d52013cf333cbfa8fe98bf3dde  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/copy.cc
! 874d5b08819ea607ce16fe6c7a957e0a  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/default.cc
! 7abd14207a2e924aac9c691726e31976  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed1.cc
! 0ab4a12d7e9e98bec71cf88f8f490049  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed2.cc
! 3a695a4c83a042a631723f3fb1df8924  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq.cc
! 1c0f132c380eaef5d19978d82ffb7769  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/cons/seed_seq2.cc
! 673cc6b2fa01f7e9f66f43bc5154e7c1  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/equal.cc
! fb6c0c8c3e4bb4794f8eda918d5ad7c3  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/inequal.cc
! 3c265dfd3933bcd29e3a17fd10b291e1  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/operators/serialize.cc
! e69bddb10cbb9e7d2cc3138ac2959826  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_data.cc
! 368d0f876cca9e51fb020e637d9381e5  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/constexpr_functions.cc
! 22527ab07d2d1a786bad1297026ef376  libstdc++-v3/testsuite/26_numerics/random/discard_block_engine/requirements/typedefs.cc
! cfa8ac6648df5d4b9f8134e8a1bd714f  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/default.cc
! c3ecb8eea74393395c7beb4472e4694d  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/initlist.cc
! 7d7f6d248e9dbfc28ab230237d1968bb  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/num_xbound_fun.cc
! 0e558d3d2eeea5fae6107f7d298592cd  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/cons/range.cc
! 7e905c09a3b866245cfab3875f82eecc  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/call-default.cc
! 9f7ac0c9bcc9129fb5007e541766a6c9  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/equal.cc
! da044a4438277be35dc8b116c1e6e30d  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/inequal.cc
! 3c738281ddfad992086f22b572b697a5  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/serialize.cc
! c4f2fe89886bde73d3df5376b2331bb8  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/operators/values.cc
! 5a2217ec5f26cae0bf0c01f6bfe65071  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/explicit_instantiation/1.cc
! 658d03eb246dda88cd6053d11ed45b15  libstdc++-v3/testsuite/26_numerics/random/discrete_distribution/requirements/typedefs.cc
! 073c2059397b73f58d395c904dc9939c  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/default.cc
! bc88d06deb73bb0a541b23a6e9223b99  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/cons/parms.cc
! 9e9f823ed50094e01313f56bcc318ae2  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/equal.cc
! 4a5af9af4479f82b47e32787a530aeeb  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/inequal.cc
! 3029192be1cfb880d25504e61af44713  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/operators/serialize.cc
! 2f757069eba9945d7f4dd6a801f901f7  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/explicit_instantiation/1.cc
! f80452fd2605b1cb7291d8e1a744a9c6  libstdc++-v3/testsuite/26_numerics/random/exponential_distribution/requirements/typedefs.cc
! 807c9077f92e714d742db78d168defb6  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/default.cc
! 7f7346b3a10cd9c1e92254bcbd66f2a7  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/cons/parms.cc
! 17703b79ae43e02a289fb1b8bd98d3d8  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/equal.cc
! 889f3730eebb2f42e5b37dced434ec73  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/inequal.cc
! 2fac04cbe9117e074a53a40829ee953f  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/operators/serialize.cc
! f93b662d340a339d0311f3ad062600e5  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/explicit_instantiation/1.cc
! 9c63a201345e8943a15d6eab91f8953c  libstdc++-v3/testsuite/26_numerics/random/extreme_value_distribution/requirements/typedefs.cc
! ed7b034316518a167f133eac2f3c160c  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/default.cc
! afef8a01230b06320976237a4b20b6ce  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/cons/parms.cc
! 4b67c80bc75007c600adf728d4a8b6fa  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/equal.cc
! 4dc7cf26c92cc64619f6310555c6c94c  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/inequal.cc
! 069e226cdedc9c47fc0ee4dd565ad4a5  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/operators/serialize.cc
! abba39a48e3ccc7fce5b53b756c85b5d  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/explicit_instantiation/1.cc
! 189c154c9069134b8f8bd11f12f85de5  libstdc++-v3/testsuite/26_numerics/random/fisher_f_distribution/requirements/typedefs.cc
! 3f412ce57822313c681301c8681788e7  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/default.cc
! ad41592fe2e13f7b6007e0eccae66f81  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/cons/parms.cc
! a86b87ebb3e714378cdc4675da744d7d  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/equal.cc
! 183927b6928c4e9c01fb7c7f41097be1  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/inequal.cc
! a86ff48747f79dded2227b9b10c7ea66  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/operators/serialize.cc
! c98c54b2698b55ff8d51b593e802eb22  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/explicit_instantiation/1.cc
! 5b9274e21cb895757715490b971c21f9  libstdc++-v3/testsuite/26_numerics/random/gamma_distribution/requirements/typedefs.cc
! b3b03948630d5f11d1ff3d232928b67b  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/default.cc
! 78d2a71cde6f9cbcce55066fb6e85f18  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/cons/parms.cc
! a3609ae97094dc2192b799eda409d4c1  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/equal.cc
! 81a72d75ea0b75f623f7b736c7683cec  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/inequal.cc
! b3837f9ad9dc56ee7ad24bdcda0cc09a  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/serialize.cc
! 1df3304e764080cfdb28ed5fba1e2598  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/operators/values.cc
! b99755b7a13b5397da23270865ea320a  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/explicit_instantiation/1.cc
! 5fc739dc154d00714dfe075c1e2e98bd  libstdc++-v3/testsuite/26_numerics/random/geometric_distribution/requirements/typedefs.cc
! 83dd6a77c40280221933fb9ee9c3e704  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/55215.cc
! bd19004431976200a8ca52457fdab9a8  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_copy.cc
! 72f4bc19a0aa25bdc0c604261d77bcae  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/base_move.cc
! 2dcb3323ca9f78d73a9ef298a7ed2304  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/copy.cc
! 9d241ed7f4456da2c5779ecff8ea4cc8  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/default.cc
! 02e305edd479c449ada3910589ac6c73  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed1.cc
! e9e9eb0b15f67008f5595f0c6cc30ebf  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed2.cc
! 4bfa03c7dcb1c03a977c131d71f66d85  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq.cc
! 90fb955c1924054e24937d36495ad922  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/cons/seed_seq2.cc
! 61b9417742eb5f23a692ca9ae6adb2e3  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/equal.cc
! acc7a12715afb22cfacfdb0a10f7a71a  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/inequal.cc
! fd62399490e5ead91627a2e2232b1a37  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/operators/serialize.cc
! 0058bab0d29664ccd406690b31f09ede  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/constexpr_functions.cc
! 49d8aa4b8166e2af0f33cdf5686dd9fe  libstdc++-v3/testsuite/26_numerics/random/independent_bits_engine/requirements/typedefs.cc
! 488f489c27bc1f6164e0c9177e756dad  libstdc++-v3/testsuite/26_numerics/random/knuth_b.cc
! 93265e465411605c5dcf61a8adf8311f  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/55215.cc
! 26310ac5a4bf310bbc68ba89d4ec7485  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/copy.cc
! 98b70a58ef98d3ab603bf8656da907ac  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/default.cc
! 4b8d4472a4408084b0d77a112ffb0a40  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed1.cc
! 34c5607b106e320baa4762a3b4cb3c8c  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed2.cc
! 7e7ebaee61654180db85c85023851bd0  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq.cc
! 11a1de4c3883e498e5bbb89dd9829c59  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/cons/seed_seq2.cc
! 4f96715ecb4c184d50b3ea4ccf3d5a34  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/51795.cc
! 63fcef27fedd3b7947c7ae96b10074c1  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/call.cc
! fe15f7a7d27d8e60e5957f09fd50f79d  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/equal.cc
! c3e7c315885e9460891b186e299a4cac  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/inequal.cc
! c943282d90e6612b8dfb5acc44371e4c  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/operators/serialize.cc
! 8fb227dd685602ac57fbb406de8f1568  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constants.cc
! 78529ecc0226f951098a4f560997026d  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_data.cc
! 08a5af965efb0e4d375f828486b9bcdb  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/constexpr_functions.cc
! 2acd981385f8c93bc26eee914a1797f1  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/non_uint_neg.cc
! 6694eb2bdcfbe1ff2e731d0cf7441bb1  libstdc++-v3/testsuite/26_numerics/random/linear_congruential_engine/requirements/typedefs.cc
! 68340327897132614568d4e538b0d3af  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/default.cc
! 108a653a5cc60578de4f98ac4521063a  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/cons/parms.cc
! bf45190d8d62cd9ae585f19a4e26050b  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/equal.cc
! cc0868fd81ccc6be0ae76864fae51e41  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/inequal.cc
! 0c55b317d1dfba86bd8f6150acf82648  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/operators/serialize.cc
! 316d39b8862de0591bb489d019367ed5  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/explicit_instantiation/1.cc
! 584d0c65c0e7cb94c39a1bc59be4bd27  libstdc++-v3/testsuite/26_numerics/random/lognormal_distribution/requirements/typedefs.cc
! 3221a2e4dc7b4570c116ffa9c70ec723  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/55215.cc
! 06f6cedc300f15c6b925ae5b34e042c3  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/copy.cc
! 944ca3fa7648b30dc64c19eaae8434cd  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/default.cc
! ede42da600d481279c596ca0250e339d  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed1.cc
! 4d792b3de82815cfc971df9f3a432410  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed2.cc
! 8c90aea26dc0f7d50c8f3fffe2dfe71b  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq.cc
! 0fe20c7da1c055de4a647c8859942982  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/cons/seed_seq2.cc
! d3a9ee7a725f899a7da01f6f5cec1767  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/equal.cc
! 8712704236cf46e0b12de9b974320cda  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/inequal.cc
! 505627043f5ff14d6f765990389779c0  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/operators/serialize.cc
! 336cca27c085bd8e6a24cdc08ccdbf09  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constants.cc
! ff362d55707a8c5421a1a8929c2bbde3  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_data.cc
! 3eae5f835ed1abb4a69f9a10d41720e2  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/constexpr_functions.cc
! ddeddffd194071b49605b5ee2e2ed02c  libstdc++-v3/testsuite/26_numerics/random/mersenne_twister_engine/requirements/typedefs.cc
! 66571169b1b1e8ec3893c67052bad238  libstdc++-v3/testsuite/26_numerics/random/minstd_rand.cc
! e8abfd1a6adc631bf48ffa80f88a0b11  libstdc++-v3/testsuite/26_numerics/random/minstd_rand0.cc
! a140ccc73898c42b213bb271421eeb0d  libstdc++-v3/testsuite/26_numerics/random/mt19937.cc
! 8af90cd9e07ebd44aed3ef67eeeef2c1  libstdc++-v3/testsuite/26_numerics/random/mt19937_64.cc
! 3f63e255eb0e7c169806f7675502c4eb  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/default.cc
! 5419411cdd3137968fc88e681005bffb  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/cons/parms.cc
! 52c3c9a82f2faa189d6aeb04b81209e0  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/58302.cc
! 988c6d177de24f34f6260c313a773f2b  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/equal.cc
! 611a7fef66a22255343eefaabb8485b1  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/inequal.cc
! 031af108d32ff7045e9d41364893c33c  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/serialize.cc
! 02bb2194919338642e382d28dc50ab65  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/operators/values.cc
! 53e40e9d6f124c034673f97630db1778  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/explicit_instantiation/1.cc
! 0aacda1d38c34acbde7accca8aa109d0  libstdc++-v3/testsuite/26_numerics/random/negative_binomial_distribution/requirements/typedefs.cc
! 5cd59314a553b174a5054da3b4a54b12  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/default.cc
! 3c9c25b2237c9d24a71e3f92a3d91a2d  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/cons/parms.cc
! 2c44eea6f75c9ea2d1dd5b4f9e58440d  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/equal.cc
! befee969454accdd54b27f3fc4ccc92f  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/inequal.cc
! 5fd2eb167e9917d51b1a41586797f8db  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/operators/serialize.cc
! 49b7485b9fea071aa0b3e624386411cf  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/explicit_instantiation/1.cc
! ecb74a276612d31b3627a77f26e5af81  libstdc++-v3/testsuite/26_numerics/random/normal_distribution/requirements/typedefs.cc
! e986219d906ecf594ebca7883e582953  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/default.cc
! f03b3c29bb87f04903244e401cd221ca  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/initlist_fun.cc
! d0ad8cf48b0748af30a8149399cf7e4e  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/num_xbound_fun.cc
! 312b33e5b568e72655bcdae650357280  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/cons/range.cc
! 02fbb4501967694cef826f937f867752  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/call-default.cc
! 94356f1ebc9a3aac03f1bd2d63038469  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/equal.cc
! 1c9e8ac3807a32e3eb134af373a6855f  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/inequal.cc
! e7fac00b3593929af566fee02f3456ec  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/operators/serialize.cc
! 663955de0aa658c230f4ea5964ae3561  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/explicit_instantiation/1.cc
! e4e115c44d7bf7f09105b4fdb5f9e08f  libstdc++-v3/testsuite/26_numerics/random/piecewise_constant_distribution/requirements/typedefs.cc
! 66f2e36122c7e4fdca49dd2284b18d2b  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/default.cc
! a82dd07a8d38b44b1362836111675bbf  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/initlist_fun.cc
! 1adb0372513c98db17230febaf986a5d  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/num_xbound_fun.cc
! d2bcd832518fecbb708376ea3f94ccae  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/cons/range.cc
! 7fa4e1c8549d597744ab767864a1fd00  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/call-default.cc
! c6a383d3d658a08c9cfac46fe4b7356a  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/equal.cc
! c8815f7cc1761756048289682f7c4f5c  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/inequal.cc
! 34fb962aaeccd9942eb66b03322f5e93  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/operators/serialize.cc
! 7ef2aeff430b8680a8b04e1ccd384e4d  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/explicit_instantiation/1.cc
! 02eca6d0e8a3276e8c73bee257a936e0  libstdc++-v3/testsuite/26_numerics/random/piecewise_linear_distribution/requirements/typedefs.cc
! 40b6ead09c7a437062eba9b5f8e4ca46  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/default.cc
! f0f775339a6488164fc9ba928e564bba  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/cons/parms.cc
! 11a91e2d47511d9dc42c1d4151750587  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/equal.cc
! b84e5ab94ec6428f027baa678d0b96ac  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/inequal.cc
! b652ef4ebcd5eca7c3f27975a9cbd3b2  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/serialize.cc
! c07bbecf122934f1933a999d343a397e  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/operators/values.cc
! 78945692b5889519634541c72e1e3f0c  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/explicit_instantiation/1.cc
! ccaf9db763a530c0f83e98c395a1f4ed  libstdc++-v3/testsuite/26_numerics/random/poisson_distribution/requirements/typedefs.cc
! b608fddf5a8b6a0dd71d8cb3ff0e66f2  libstdc++-v3/testsuite/26_numerics/random/pr60037-neg.cc
! f1fe6adbf3b76c148bada3e2efbf5215  libstdc++-v3/testsuite/26_numerics/random/random_device/85494.cc
! 304a2f8657966be6888ed5ad5d633739  libstdc++-v3/testsuite/26_numerics/random/random_device/94087.cc
! b159f3ec4d050f63db4d68f644b0f02f  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default-cow.cc
! 20a48df8cfa8f07ffb3c15166a133ee2  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/default.cc
! abe085f7648ead9ab5f42c9043f055ab  libstdc++-v3/testsuite/26_numerics/random/random_device/cons/token.cc
  b58b0627741172f23a1476ee917f59d8  libstdc++-v3/testsuite/26_numerics/random/random_device/entropy.cc
! 0ae3644b932a193a3ca59e45cbabede3  libstdc++-v3/testsuite/26_numerics/random/random_device/requirements/typedefs.cc
! dd6299793adf1ba7267f47599cbf7160  libstdc++-v3/testsuite/26_numerics/random/ranlux24.cc
! d544b731c00e08a7e3b86aa87aaef45e  libstdc++-v3/testsuite/26_numerics/random/ranlux24_base.cc
! 62e7c55eafca7e569e26ac29f66d6679  libstdc++-v3/testsuite/26_numerics/random/ranlux48.cc
! cc10d964bc72f5a3cc205f9e467feaee  libstdc++-v3/testsuite/26_numerics/random/ranlux48_base.cc
! db633537ea6702b69c0d4dbaebe6023d  libstdc++-v3/testsuite/26_numerics/random/seed_seq/97311.cc
! 21ecdf0d4b35943ffd7c3030face06e4  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/65631.cc
! b5d553fc94dba1036eeff73cda038da5  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/default.cc
! 95a566e414c9037a508c6375f6070f75  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/initlist.cc
! c96c3ec7fb3390a2c9a7f52a7cf407c6  libstdc++-v3/testsuite/26_numerics/random/seed_seq/cons/range.cc
! c6aeda3ffecf7c2c306fe03b1e8b19cd  libstdc++-v3/testsuite/26_numerics/random/seed_seq/requirements/typedefs.cc
! bb6706e326ea71fbb15cecb2a9d43650  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/55215.cc
! d43258a218ce74835f10629eaa6688cc  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_copy.cc
! a6befc75554db79e0eba73e9889f8c3f  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/base_move.cc
! d5e450150163905ec7d2a409a34751d1  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/copy.cc
! f81aa18832a6e7c04d2ef157c7c847a8  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/default.cc
! ce2f5ed0b0ab89e9b02a0e564fbd11ea  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed1.cc
! 485685d0cae5cbbb50c2402a1b99f620  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed2.cc
! be2ab588ae76d9f0c5645e06fa92a12d  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq.cc
! 166b018e42e88a2cbfbe3aca48b7e8bc  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/cons/seed_seq2.cc
! 1842a0ab9c549c6a73c30c60570dc7dc  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/equal.cc
! 23af0e4bca8ff60ae0b9e7aae76a402a  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/inequal.cc
! 1ca3bf05ad607c92f9bc2d66c304d4a8  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/operators/serialize.cc
! d96b96454c0a314476fd3b317092d984  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constants.cc
! d658351e72e52deceea5e9e979bf69bd  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_data.cc
! 9d6c0f08326e23e6c91489e9de4312bc  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/constexpr_functions.cc
! 0419e1622dca0b241ec5c947266c44f9  libstdc++-v3/testsuite/26_numerics/random/shuffle_order_engine/requirements/typedefs.cc
! 5266a6ca4a429630a4619d51a3a18dbc  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/default.cc
! 50053e6aa32f404e9a4f9ea41ebee228  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/cons/parms.cc
! c9aeb22090a1d5bcbca001f3c76587ac  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/equal.cc
! b602b7e55bb03dd366461f6ca1b9e48b  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/inequal.cc
! f444deaf68a62a27bd976c4e93edd173  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/operators/serialize.cc
! 47989bc2d97b1bac0166ed6b4ebc70bf  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/explicit_instantiation/1.cc
! 4f3c9d1024518d8f815bfa45b94e094d  libstdc++-v3/testsuite/26_numerics/random/student_t_distribution/requirements/typedefs.cc
! b0fc8b473dbeab3cad631c8747d86664  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/55215.cc
! 8cfe0c378858f3cb0e91803c2e25a59f  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/copy.cc
! e014289bf53a639c13d1030b51c5bb91  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/default.cc
! f6735a89cd53d5b140b5c2d979ef11c5  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/lwg3809.cc
! 4c3a6d7647da465efec2bc5e7c7de1a4  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed1.cc
! 5f62ab25f4040875c9ad8b3a6f1c6f73  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed2.cc
! eb35593d2b236d7313cb2495a8291016  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq.cc
! ed9b466088b562c9f5fdd42612a1a629  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/cons/seed_seq2.cc
! 48b740c7bc1405d9fd263f55af938bd7  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/equal.cc
! 044eed97aa96b00d4258c65193493d7e  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/inequal.cc
! a5f8b956373a01183e4ebe9fad7f8b9f  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/operators/serialize.cc
! 92a93b63542878f9909b48c60d0619e2  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constants.cc
! a6dffb0918ae48db0d3524db448beed9  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_data.cc
! 9c1a24ee87d758ac4117605c0a93ee51  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/constexpr_functions.cc
! 1ad737889328c73b8501c223b09233e9  libstdc++-v3/testsuite/26_numerics/random/subtract_with_carry_engine/requirements/typedefs.cc
! 36bc0383d3992d022118f0a55d8fff7a  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/default.cc
! f5be763cac95ed7fbc876530e75590af  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/cons/parms.cc
! 7481f66ab9a8064567b87b264a27639b  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/equal.cc
! 8aa5687e1a3f56616d3e27a4385cfa2d  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/inequal.cc
! 29d7ff908b9f7f68add563de75d3d689  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/serialize.cc
! 7e1f5a351e1eaf03c1aa0712631f95c5  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/operators/values.cc
! 326dc2579ff16b881ad843b56074f486  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/explicit_instantiation/1.cc
! 16e56a9e374748a90e347b6a34fb05d0  libstdc++-v3/testsuite/26_numerics/random/uniform_int_distribution/requirements/typedefs.cc
! f3956124cdb8c377b4f9342c0dfc8483  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/default.cc
! 1cf052877e7554a69a48e11061277c14  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/cons/parms.cc
! 1f2bc622c94118678d4825d63a4c29c7  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/64351.cc
! 509283be0f33a2af1e82286fd4a6f262  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/equal.cc
! cb63478507a94dd7f4bbe9ffae2f180c  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/inequal.cc
! aeae2cdf84f2128ace8edf4bcd37b8b9  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/operators/serialize.cc
! d5240f872602881cf02711b25f320c3a  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/explicit_instantiation/1.cc
! f2231187ad24efe53a07a2b4ec836a58  libstdc++-v3/testsuite/26_numerics/random/uniform_real_distribution/requirements/typedefs.cc
! 01a9bf2f2d9149c62e9ccc5c981a9799  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/default.cc
! 91b30db8b955ad265fd5afeaeae5888a  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/cons/parms.cc
! eecc45d45ba4fe661e541c60ed8e5b8b  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/equal.cc
! 9489e70259cd64383ab369aed1d4ac65  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/inequal.cc
! df589a4bd8fc8d9bb593e35970fac67d  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/operators/serialize.cc
! a5a432449b1af46927e7e28005567450  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/explicit_instantiation/1.cc
! 5d9b71ed171776467cde80582cf84233  libstdc++-v3/testsuite/26_numerics/random/weibull_distribution/requirements/typedefs.cc
! 345efaaec82e0d47c460913c0496f42e  libstdc++-v3/testsuite/26_numerics/reduce/1.cc
! d52347f3cac9fa768084e239a8bb0ba8  libstdc++-v3/testsuite/26_numerics/reduce/2.cc
  51f14806bbec80c2d5883800a91dfc2e  libstdc++-v3/testsuite/26_numerics/reduce/95833.cc
! 72825cb937c519a2ff852a77fa994620  libstdc++-v3/testsuite/26_numerics/reduce/constexpr.cc
! 70252d7c795611dcdc24b3cb6133eaa8  libstdc++-v3/testsuite/26_numerics/slice/1.cc
! b035d74cde92bc3d97d277b3a584b552  libstdc++-v3/testsuite/26_numerics/slice/compare.cc
! 6f582ee50384cd0c1889520a8fefd047  libstdc++-v3/testsuite/26_numerics/slice_array/array_assignment.cc
! a2f105dbf8e0b4c5fe66ef9b80d266c6  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/explicit_instantiation.cc
! a13f6bc98a87d272d8fe8b9766c9f956  libstdc++-v3/testsuite/26_numerics/slice_array/requirements/typedefs.cc
! fc221def380a2092cea53b6089493cf7  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/1.cc
! 6b28d8ea8d44ae5a929ae6adf593a38b  libstdc++-v3/testsuite/26_numerics/transform_exclusive_scan/constexpr.cc
! 21139e399dd6bb3563050f5a83640fad  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/1.cc
! a57d9ecfaf895b391e6b072c8a135df8  libstdc++-v3/testsuite/26_numerics/transform_inclusive_scan/constexpr.cc
! 443798eee2f9513289a27adce687f3f1  libstdc++-v3/testsuite/26_numerics/transform_reduce/1.cc
! c912f1a89cf75f314c0b4274db04e5ba  libstdc++-v3/testsuite/26_numerics/transform_reduce/constexpr.cc
  525e5798867d708e7cc13551760f93c8  libstdc++-v3/testsuite/26_numerics/valarray/103022.cc
! 70004c698eb4e252657f6542d30dab08  libstdc++-v3/testsuite/26_numerics/valarray/27867.cc
! 430d46c5b698e2d772c692944b05e1ef  libstdc++-v3/testsuite/26_numerics/valarray/28277.cc
! e142eaac8bc53c504e7f4edc2f94aa5f  libstdc++-v3/testsuite/26_numerics/valarray/30416.cc
! 68d7104dbfbae0a5f819c8ef4c46fa7c  libstdc++-v3/testsuite/26_numerics/valarray/33084.cc
! 18fccd0d426d72a4182ee4dae07412d6  libstdc++-v3/testsuite/26_numerics/valarray/40691.cc
! 28e3778cd5709645406abfa4c6cf6f81  libstdc++-v3/testsuite/26_numerics/valarray/69116.cc
! 0818fd220e5ea2cfdcbf7b2143bffe1b  libstdc++-v3/testsuite/26_numerics/valarray/83860.cc
! 508f693677502b475ff5cdca2e48a9ab  libstdc++-v3/testsuite/26_numerics/valarray/87641.cc
! 190a61c9df25f923f210844f75fef9ea  libstdc++-v3/testsuite/26_numerics/valarray/95592.cc
! 3a968cfed2971040186787cd117fb429  libstdc++-v3/testsuite/26_numerics/valarray/algo.cc
  3e191d68e11822f58de5e4bd15365ca5  libstdc++-v3/testsuite/26_numerics/valarray/binary_closure.cc
! af9a74f738ac18936b10425fe2d6647b  libstdc++-v3/testsuite/26_numerics/valarray/const_bracket.cc
! becaeb18a35d22937482da18e6d323d0  libstdc++-v3/testsuite/26_numerics/valarray/deduction.cc
! c9d87e27a838cad81b22bb1df04d8c7e  libstdc++-v3/testsuite/26_numerics/valarray/dr543.cc
! 9bafc635e2a92db4ff73d4dd4a556216  libstdc++-v3/testsuite/26_numerics/valarray/dr630-1.cc
! c3f19f528775e1725fdf50859dea342b  libstdc++-v3/testsuite/26_numerics/valarray/dr630-2.cc
! cbb56c88e5e1cff99ce5d14e8836395c  libstdc++-v3/testsuite/26_numerics/valarray/dr630-3.cc
! 26f50fbb094f6ee7bb7015e32ab3899a  libstdc++-v3/testsuite/26_numerics/valarray/init-list.cc
! 92989179308d98e75a76c225b10da0be  libstdc++-v3/testsuite/26_numerics/valarray/mask-1_neg.cc
! 989404228c79ae94725c36342fe840d7  libstdc++-v3/testsuite/26_numerics/valarray/mask-2_neg.cc
! 03eb7e42a8c3f54875026dd4540970b1  libstdc++-v3/testsuite/26_numerics/valarray/mask-3_neg.cc
! b07731600440dd3fbb34c22bff07c05c  libstdc++-v3/testsuite/26_numerics/valarray/mask-4_neg.cc
! d7d40b53cc9eccab2f4add4a3767074a  libstdc++-v3/testsuite/26_numerics/valarray/mask-5_neg.cc
! 0ccc967db7ddc2518622cab67df672bf  libstdc++-v3/testsuite/26_numerics/valarray/mask-6_neg.cc
! 69530b581e1f96f9614208c43d0c9854  libstdc++-v3/testsuite/26_numerics/valarray/mask-7_neg.cc
! 3f797cc15e7e8d36add18ade39f64ccd  libstdc++-v3/testsuite/26_numerics/valarray/mask-8_neg.cc
! 0750f0a7a2c692d4ce110fab2faa8583  libstdc++-v3/testsuite/26_numerics/valarray/mask.cc
! d41fb005fc16e6ec8b191c3652a872d7  libstdc++-v3/testsuite/26_numerics/valarray/moveable.cc
! edc93b263fd9f9882ade2441d86eb426  libstdc++-v3/testsuite/26_numerics/valarray/name_lookup.cc
! e1da3667580fcba4875307f5730dafef  libstdc++-v3/testsuite/26_numerics/valarray/noexcept_move_construct.cc
! 2bf26a9dea0bdc7a758ec34656aa2085  libstdc++-v3/testsuite/26_numerics/valarray/operators.cc
! 48a34ede6c78e22c0f75b2997bfca483  libstdc++-v3/testsuite/26_numerics/valarray/range_access.cc
! d6fff2d97cbc427620be0cc23956dd89  libstdc++-v3/testsuite/26_numerics/valarray/range_access2.cc
! 5aa5610fbc312b565cca7ce949359de0  libstdc++-v3/testsuite/26_numerics/valarray/requirements/explicit_instantiation.cc
! 8f0eeb4634d2903755c3706703579c3e  libstdc++-v3/testsuite/26_numerics/valarray/requirements/typedefs.cc
! b2a64c22302a3e71437c9333e97a5936  libstdc++-v3/testsuite/26_numerics/valarray/subset_assignment.cc
! 687fc725b5a2aa3a263b60a4706c8cb8  libstdc++-v3/testsuite/26_numerics/valarray/swap.cc
! 4d1d913236d32add0b5e5ca53c07e46b  libstdc++-v3/testsuite/26_numerics/valarray/transcend.cc
! 8c906a179c531a8dff1509504acb96b8  libstdc++-v3/testsuite/27_io/basic_filebuf/close/12790-1.cc
! 7b819a6f641a0e40d952e2e0860fc2a2  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/1.cc
! 32ec6350d273b1218d8b2be34e067955  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-1.cc
! 36b3c199e8014ac968b8800bcae6d571  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-2.cc
! d23de6b9ad81891d6be78438eab6b050  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-3.cc
! 2866b3618f9b9df80d636d866fe04df1  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/12790-4.cc
! a965feb25cf5361c34a06d5f3e4ba085  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/2.cc
! bb29349fd02f077ca63b0fb89d833ddf  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/3.cc
! bafd040e2b3dfb317e228ee4c5dcc62e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4.cc
! 553b91f7b25aaf8ffd651298f06a03e3  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/4879.cc
! b384e9f0fcad6560d4e9d4e8096591e6  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/5.cc
! f1e718516ca664daf3bfe6892065d6b5  libstdc++-v3/testsuite/27_io/basic_filebuf/close/char/9964.cc
! a41e5638baef4771ac2fdfa1ca5a3b50  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-1.cc
! db8c6499e6cbbffa7781996a7d078c3e  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-2.cc
! 5f72b88dd80617bc02552f9802b5a428  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-3.cc
! ce41a3a4e644388720bfa033a2bf4ea2  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/12790-4.cc
! 1ba7bb454bfd5644de72bb8967787885  libstdc++-v3/testsuite/27_io/basic_filebuf/close/wchar_t/81256.cc
! 97828589991fb38999d75bfd62d19dd8  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/2020.cc
! 5b737a49fd2761108fbe364b78a9c3b6  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/1.cc
! e2a94f0ec8ea104190fb896b05e9f339  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/char/copy_neg.cc
! 7f9320af888a37853cc3c2f03cdd1530  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/1.cc
! 24e9bce98ddd44c0fa9fd593db42e8cb  libstdc++-v3/testsuite/27_io/basic_filebuf/cons/wchar_t/10132-1.cc
! e28e36625b9a6754041a0f980713c764  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/12206.cc
! 7dd5a44bfee2e34f2b23b01c6b98122b  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/1.cc
! 33a38ae337cb1813bfacd9ed21c0ff7e  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13007.cc
! 08632567b6cde83424e3556bf7ba6690  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-1.cc
! e37aa9d3a39e008e6850027c6d3f9320  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc
! 03a9abe2446fbaa4ca976762611032ce  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13171-4.cc
! 2472967059f53705a691b55678dc4b34  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc
! 51c572c390ca70e98d2344b1a91b87d5  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/14975-1.cc
! bf8e935e012188bbe4a6f675f715287a  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/2.cc
! 0d04cd1536b9e701ef034094c3c5a0f6  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/3.cc
! 3cf738a4b1079d8846598ff3e974a0d9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/char/9322.cc
! 176aef31213fde715f80b93abab379cd  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/1.cc
! 6cc1d6582f680aede9c87de5f97bf375  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/12868.cc
! fed4e6e829bd231673d6fd6e83f102a5  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13007.cc
! c37e8350f8935f5ad710f5a4a016bfc3  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc
! 5b5167c3b7dba6bc5ae3307ea18845e4  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc
! 58159d759e86ec0469a80e6fd0fbd9d9  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc
! af91fc4d21cdcc0ff991da73b036891c  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/14975-2.cc
! 39e271e210aa546d6e23b140948d3096  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/2.cc
! 5923580aa035d49d9048546aaa585bcb  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/3.cc
! aa6a864d5aee69781f69d24a01b75a11  libstdc++-v3/testsuite/27_io/basic_filebuf/imbue/wchar_t/9322.cc
! 6ee1c245e94b004a106cb3857c22e118  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/1.cc
! 8e0125a2295e158e82a7b9d5187ee297  libstdc++-v3/testsuite/27_io/basic_filebuf/in_avail/char/9701-3.cc
! 8f4a9b8410d5fd1c7af3325a4a8ce9a9  libstdc++-v3/testsuite/27_io/basic_filebuf/is_open/char/1.cc
! 033b2b3115d6e9c627ac2ff46aa20192  libstdc++-v3/testsuite/27_io/basic_filebuf/open/12790-1.cc
! 8e2cf79c2b82b04ea41dec46d18ef9f1  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/1.cc
! 1685545f3046e4370e67e2885f9f64b1  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/2.cc
! 4ebcede3ed4612d12afb07a430223342  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/3.cc
! b999613e396ff2292fe71366782484a2  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/4.cc
! ad4bc4081b0b33794bfc6b7d2ae0a338  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/5.cc
! 413b334b5bd2407dc09373779fcde193  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/9507.cc
! 13d24c173672fa2b5db0a07c58a00fe6  libstdc++-v3/testsuite/27_io/basic_filebuf/open/char/path.cc
! 86b46656f7d9cda97ecae35269ffabfe  libstdc++-v3/testsuite/27_io/basic_filebuf/open/wchar_t/1.cc
! 0cc1bb7c99008bb6dcac3a8a753f0cb3  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/1.cc
! db33017bfe1a47ad6fbaa03f0550061b  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/13858.cc
! c45a48b893adefacf1cfe50b468cf17a  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2-unbuf.cc
! b3a4acd919b8ea44035f11ad05e7a586  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/2.cc
! c8ae9dde77a884d774a2a57b5284c7e1  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/3599.cc
! db797a6314ff483a422d74fd48d24753  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9169.cc
! 9f1b5d37b71832d5b153e13447183126  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9182-2.cc
! 3951fb07bb3e7a34c49d6e4074b8ad9f  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/char/9988.cc
! d8eac9c74e3d06a652b62f1a29eb5ca2  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-1.cc
! 20dec37395b19fd717b429f0e9678a3d  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-2.cc
! 532231c471e9dc846a47afc2b1df5bea  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-3.cc
! cbe9533060d422ed17023b64219c008e  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/11305-4.cc
! 3fc40d7d07a5559755f401a2420d377c  libstdc++-v3/testsuite/27_io/basic_filebuf/overflow/wchar_t/13858.cc
! 3f68c481ebc624e9b24f4c5f5dd82b69  libstdc++-v3/testsuite/27_io/basic_filebuf/pbackfail/char/9761.cc
! d4e6efc6f0a75b831e0aea8adb4d743c  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/base_classes.cc
! b324aed7d24e3bea084cc88277b8cb86  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/explicit_instantiation.cc
! 74ed20d0c8b54a4ab605ec2101daca13  libstdc++-v3/testsuite/27_io/basic_filebuf/requirements/typedefs.cc
! 1ba01c57714e2f812c8f144c0a1d8acf  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-in.cc
! 28e00b594ba01e48d7588c5748960d36  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-io.cc
! 107845bb896aa96640c18935406a26ea  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/1-out.cc
! 4c18c036abf629d78538b28fc06b7f6f  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-in.cc
! 1d29d568fde12a6cd8aeca4aa3e9959e  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-io.cc
! a3665ea2bb1dc7e33e24bb207f1d1de5  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/2-out.cc
! e9077c3a06faa22b1e09094e7b934585  libstdc++-v3/testsuite/27_io/basic_filebuf/sbumpc/char/9825.cc
! 2de5a57ca0500180f678993a30c4912e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/10132-2.cc
! db3d913f3c9bbefb984c6d30baf8d19b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-1.cc
! 4864e6181fd3ff016e86efa33c2f12e1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-2.cc
! 5463a81e00b2df60a862a18176c001b6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-3.cc
! fda6b922975055a1dea548a1e28f6da0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/12790-4.cc
! 60792bb745d67fdc6160ba1ea2912ead  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/45628-2.cc
! 06253b712c08d6d85a5a157f7ba32691  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-in.cc
! 2c7a3c3f23cf8ae3679427f697629980  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-io.cc
! e15c96fc857b4cb7bae753f0438961a6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/1-out.cc
! f9d41405cf21f3fc5bb3f60b05faccc6  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/11543.cc
! ee46efb68c7fc087218f2550c2efc38f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12232.cc
! 833725f9f0ebe9b716d6efb82792a52d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-1.cc
! 81d0ff274e0aeb14030b2c443298b897  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-2.cc
! bb8dbcf5bcca9a0403e4fc3ddd373232  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-3.cc
! 80c16b2dc2fe8a601447a96900f6d8dd  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/12790-4.cc
! 7433b6f0af8ebaa4cc5edc145d421355  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-in.cc
! 5b25dd5ded1ae32259d5bf153c275086  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-io.cc
! 857e7d18fb3b31438ee40352ab777cf7  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/2-out.cc
! 45d358f1822436527feec43ef94a7f29  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/26777.cc
! 1525d22ca88ae4dfb66e674fbe23781d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-in.cc
! 718600f635013c7a9862a02bc3957149  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-io.cc
! 17136c6bfd8b9a3727942f561041f955  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/3-out.cc
! f1b320cf7be5ecc67aff11b6bff8fa4e  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/4.cc
! 605a85e680b21a9787d06335edb5a153  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/char/45628-1.cc
! 27a53a11d712cf3b3d3ab6290c936a01  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/1.cc
! e4a3556c5a5c4156294ba3fd7f833ddf  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/11543.cc
! 9b66a6e3ae9fdcf2e79d608d73b90a55  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-1.cc
! d42458f1803265ca86130811590716c1  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-2.cc
! 48ff75bbcea054000a7bac2d9b80b055  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-3.cc
! 03953888d3e3c2979ee68a7d85431e41  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/12790-4.cc
! 4b6f6b245810f5936158a08a29590113  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/2.cc
! 71bdfc199f411a71bf0370ee411302a5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/3.cc
! c4ea8533af6c1418b61f92922b3b7a3f  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/4.cc
! e4d891482564d22691b040e644d4f7d4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekoff/wchar_t/9875_seekoff.cc
! 1d76c4c6ebc98aac7c073f3da052febe  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/10132-3.cc
! 763e3a36c5405f5c11920ec508ac4dd3  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-1.cc
! 8338a622f15396806f303b90b369ced4  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-2.cc
! e3ef6901551d09346aa9b00c443a08d5  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/12790-3.cc
! 55b276b0b8120f072e8da687ebc469cb  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-in.cc
! c745ae2280621a6e948b25729436db85  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-io.cc
! ee2f9ba15eb1ee26472ee4ab03f5a90d  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/1-out.cc
! f9b7cd0a0f93e38806e30fb0ad1d9a60  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-1.cc
! b3bd36bb05e7c9e90960b8629e52c600  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-2.cc
! 0264a1c67628c6c4ef0b2513cb3b03ac  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-3.cc
! a655841711aa97022963954e9043c70b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/12790-4.cc
! 4770e666eb2b0854e9a0c9062edc1a10  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-in.cc
! 6f0852911baa819b264517971de62662  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-io.cc
! 68b27eb85ce22c3948a0d38e6b97c494  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/2-out.cc
! 0c79ccc0ffeac7bbc11f26a4f9cddea2  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-in.cc
! bed61f2254d30ef52032a298e3cf9145  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-io.cc
! d0ea5ba8fad0aa5424ae943e6a5c3c7b  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/char/3-out.cc
! 4b24e89b9e7b641c47fc0fbf32473a39  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/1.cc
! f1b6b8b1ebbbe639bebcbb157e2fe5e0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-1.cc
! fb70eadce900fee5d96c71aa11ff6573  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-2.cc
! 5c783a0835b7c34c37f0a155b081e288  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-3.cc
! cd5b60f8b48d89d549aacd514caa8cea  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/12790-4.cc
! 2eea22d0706227454d86a4a1c1a140a0  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9874.cc
! 1150a8842b433d84fd4641e2d0080a49  libstdc++-v3/testsuite/27_io/basic_filebuf/seekpos/wchar_t/9875_seekpos.cc
! 0a9a5fa64881c094fe73acf0d8aebe93  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/1.cc
! 6286c977c1139730fa0929e99c481882  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-1.cc
! 8dfeb3d31af0fe178c0fa6a53315badd  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/12875-2.cc
! d7b769b690669c8530de964168edef97  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/2.cc
! 2e6f7fcec809af36b25d746f0b331518  libstdc++-v3/testsuite/27_io/basic_filebuf/setbuf/char/3.cc
! c3febcdcb2a4715966072dcc4a78d797  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-in.cc
! 81abfbbdad9c90a707df579a5aee44da  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-io.cc
! 730d75b5efe6361f2e27fc2a982245bc  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/1-out.cc
! 9467911874a0e32d8e5fdeb5e4cc0022  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-in.cc
! 90b9f2f3e39ef8671a67a488e09601f5  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-io.cc
! 146cd490c18b08bfe431896f80f22176  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetc/char/2-out.cc
! 97fe5e7fd83633841ca74fa33c98295d  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-in.cc
! 907c67d55e54206148a542e1cc822b8a  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-io.cc
! 21eee7d80883b8f4c2d11fae24b4f111  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/1-out.cc
! 4a23785693db25229b8e690ce49ce377  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-in.cc
! faaf362e473ef3ce77f8cb0ace6c7b47  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-io.cc
! f040ea6d7f37b82b3dfc48a125fe790a  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/2-out.cc
! 713f00ee39c9bafdb24b2a43886334eb  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/3.cc
! bbb22ee222e6b6793d4d806c0b51d549  libstdc++-v3/testsuite/27_io/basic_filebuf/sgetn/char/81395.cc
! 69d735c7db2423015dec449991359561  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-1.cc
! 35eeac62d422832fa0302b014830e50f  libstdc++-v3/testsuite/27_io/basic_filebuf/showmanyc/char/9533-2.cc
! 166dc78d890d52017718a3fe72dc58f0  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-in.cc
! 87af0d6b18d1cba230abd90daa77f7f0  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-io.cc
! cdc16b7ea8ef91a744592b66abb61a98  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/1-out.cc
! 3a0e8ff11ea05c15cb1a9f7a1416dd7a  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-in.cc
! afe9f503eafd7dbc27db86f8522966f5  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-io.cc
! 29fdbd7483c5b7480ee3f81ad6971aa5  libstdc++-v3/testsuite/27_io/basic_filebuf/snextc/char/2-out.cc
! 11cb7387ad6f95c677fcbb5bcdea3bf2  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-in.cc
! 4a5c1449f80ad83a7707a0638a6a27d7  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-io.cc
! 4b9acf65ff856ce288a1c02f6e31ce6d  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/1-out.cc
! 1e97c6a8dd71f3f4182a511046abbd20  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-in.cc
! bdbef8c75276ddd624695aff1ac019d4  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-io.cc
! 233cef22d736d2a55a05a06847837e5c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/2-out.cc
! 287a5bd965331097946bfcab35bac2de  libstdc++-v3/testsuite/27_io/basic_filebuf/sputbackc/char/9425.cc
! 9c9ffe6d4428a7f1698cce1020606133  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-in.cc
! 17748e758c38a114aa54b591ae29f721  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-io.cc
! 398cbc0f49342eb68f49948f815d3ce4  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1-out.cc
! cb95e8233e289fcd7d8d61cedcf59477  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/1057.cc
! 5d08848639571c2059c42622b3ca01bc  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-in.cc
! 941b3f02ffa484e97a34277986b99f32  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-io.cc
! 0c188d63741860b1df78508bc605970b  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/2-out.cc
! a531fdbd6d1924d5f5198212e1c95ff4  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/59427.cc
! 5cf2d21b9c21ec42902b20af9152439c  libstdc++-v3/testsuite/27_io/basic_filebuf/sputc/char/9701-2.cc
! b238dbc49db963d37c7ad404c8c06699  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-in.cc
! f83a2568e76c4596934fa64cc330a1d9  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-io.cc
! 1ef1ce34a2e1f0c6559411f8e94cf0a6  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1-out.cc
! 5daa6b6886c44a3d2b11b7ec92c84429  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/1057.cc
! 904adad5eff4854d2e1a5cf0fee41384  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-in.cc
! 85c32c219b2a21a0455b2e512685dbcb  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-io.cc
! 1ae3be90c07414ce4f649121a26063f7  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/2-out.cc
! a4eecf7d3c3d5c2cc84bcac2d6998eec  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/59427.cc
! 73d4eb67443415996209b1af2dbebbc1  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/63746.cc
! 4494d1dc75a10054d7751e2cb3fced44  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9339.cc
! 0c53cabcc6fede9f96535e88fffa6067  libstdc++-v3/testsuite/27_io/basic_filebuf/sputn/char/9701-1.cc
! 8973daa1d4fc364f3d0fc2e1f74b7345  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-in.cc
! 4ac960d1a40c8c8176cd4b60c6cdf473  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-io.cc
! 01acdf42475790d6a9ba5361d2ce5f8a  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/1-out.cc
! 9e8b2fbea333f591ca58de36c6b932af  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-in.cc
! c73fb82c72ef98a9adc443acc7d86325  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-io.cc
! 3afa8a3ecf29ef5d4568e669379a3c23  libstdc++-v3/testsuite/27_io/basic_filebuf/sungetc/char/2-out.cc
! 982cf91b5c325247d70eef098f68d30b  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/1057.cc
! f35224a97a96b22c950051f6c0bb39dc  libstdc++-v3/testsuite/27_io/basic_filebuf/sync/char/9182-1.cc
! f52a91b762a8573bfcba88d78ee06296  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/10096.cc
! 65421bdea8aea164840fa968447c1fbb  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/1.cc
! 170325c679e09cfc4cb0c8d9d9dfb769  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/10097.cc
! e32b19baa8d7e82411fc8bdb02a6321c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/2.cc
! b5ea0cce51f46559467c2f08cbc84bf9  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/3.cc
! 0c105df0c517cfa5f8d3070a6348303a  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/45841.cc
! 297dd2e7904435e7f896c81c7364d689  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/char/9027.cc
! c4870c4ed4ce73e626a5d387bb9f08ad  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/1.cc
! e9498dbb9a604e7c8a62acb65b137c39  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-1.cc
! e9d0d91b2f0b26088b902aada424d1f8  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-2.cc
! 6906f1ac7e44722fc271c12d480e654b  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-3.cc
! 0a6540e804f617959880717cd799be62  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11389-4.cc
! e97a20354fe10a65949253962c17a719  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-1.cc
! e0ddf7ccf1d3eff209e8883a23c9d954  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11544-2.cc
! 6f664b0e2b325f6e6b253a8b16140cd9  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/11603.cc
! 629d68f224691bf30387c64efc04ca6a  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/2.cc
! b0cfc43370806c98f424fbdd3aab4f82  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/3.cc
! 3fd28f2c467e1c3ae7a0be5970637c8a  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/4.cc
! 5cee96ebc6c8bbf21244df3351f0aa6d  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/45841.cc
! 5a88d7e4ecf3c3ff0926cd03b4af38e7  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/5.cc
! 4ba19fcb1531ec00cf507eab763f1061  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9178.cc
! 0ec8ad9010f6d9483365e48368d5e18c  libstdc++-v3/testsuite/27_io/basic_filebuf/underflow/wchar_t/9520.cc
! a4aadb616cb9fd540b5b502518f72352  libstdc++-v3/testsuite/27_io/basic_fstream/53984.cc
! f664281906bcfb4031b53f1aed918ee7  libstdc++-v3/testsuite/27_io/basic_fstream/assign/1.cc
! b37bf537ad6ce2c231a0126ec588ce24  libstdc++-v3/testsuite/27_io/basic_fstream/cons/1.cc
! 70f83f768e34cbb55d9ca72c41b9c7fa  libstdc++-v3/testsuite/27_io/basic_fstream/cons/base.cc
! 3a38b1d5c71bd1dc6aa8b0c4d4beec2a  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/1.cc
! 184299fc5591f5c424382d6dcb6bf828  libstdc++-v3/testsuite/27_io/basic_fstream/cons/char/path.cc
! 89c5f68be55b589c41a71b8f7068e8df  libstdc++-v3/testsuite/27_io/basic_fstream/cons/move.cc
! 91bed6a6f2aa8ae4cefd84ba4825c6a8  libstdc++-v3/testsuite/27_io/basic_fstream/cons/wchar_t/1.cc
! ba951fdbaa51416578d2dc0a70ea5ae6  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/1.cc
! 94c2bb04973cad3299ca723d6bbdb2e2  libstdc++-v3/testsuite/27_io/basic_fstream/open/char/path.cc
! 19f8dc35db78d13a0480b5d1013137ee  libstdc++-v3/testsuite/27_io/basic_fstream/open/wchar_t/1.cc
! 3466f5f5149abd1cb308e9915e6e190e  libstdc++-v3/testsuite/27_io/basic_fstream/rdbuf/char/2832.cc
! 34fce277cf5221f00e69b7d6bae6aab5  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/base_classes.cc
! 36a7f064ff255b10d98328af3edd4358  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/explicit_instantiation.cc
! 116fc75b6ea5fb9ca8a058134f87c44d  libstdc++-v3/testsuite/27_io/basic_fstream/requirements/typedefs.cc
! 1b9e8e0398f91af16439d8c4c18129c2  libstdc++-v3/testsuite/27_io/basic_ifstream/assign/1.cc
! b8f34a4347fd9707dcc0d22c86a1b46f  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/2020.cc
! a23365a8f66d0d737b226714934540d3  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/1.cc
! 95d091e7d11c5b91fa8b3fe1ec9fa217  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/2.cc
! aa0b906fbad9fc68b8e1c990076c56cc  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/char/path.cc
! b25bf460ab53c330da81431739866977  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/move.cc
! 41edeb9a5c4eff6793f2b55b5dbc5ff6  libstdc++-v3/testsuite/27_io/basic_ifstream/cons/wchar_t/1.cc
! f7547db6aeb0096a332e98445de0101e  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/1.cc
! 3a934e2f45e715197efa0c5cc9c57fa6  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/2.cc
! b64f81724794eee3f2d28338813402fa  libstdc++-v3/testsuite/27_io/basic_ifstream/open/char/path.cc
! 45709f3f75219ffbf8d1daf5292e62cb  libstdc++-v3/testsuite/27_io/basic_ifstream/open/wchar_t/1.cc
! b8d16d79441f93c90119d3160bc618e3  libstdc++-v3/testsuite/27_io/basic_ifstream/rdbuf/char/2832.cc
! 62df1b70c14814ac3a62a656b2ad3421  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/base_classes.cc
! b2cceb7b8ce67f54f6677a0607c3bd4a  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/explicit_instantiation.cc
! 6cbc52fb92dac507f10737612e1abb08  libstdc++-v3/testsuite/27_io/basic_ifstream/requirements/typedefs.cc
! e3f5226d1911323ce2ea5b9343c7e22f  libstdc++-v3/testsuite/27_io/basic_ios/clear/char/1.cc
! d88625aa94e2133558a4252a29a9fdde  libstdc++-v3/testsuite/27_io/basic_ios/cons/2020.cc
! 2af35b82d5606f4ab961a1ef0d9d7807  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/1.cc
! 6fdcb8d03c1f87dd928347c69c01c035  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/2.cc
! b12e7e0fbabeb99159a0c5547975d1dc  libstdc++-v3/testsuite/27_io/basic_ios/cons/char/3.cc
! 6203a5962a57139415f443d3261bbef0  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool.cc
! ca9758899b750aaa7bce82673e4204b5  libstdc++-v3/testsuite/27_io/basic_ios/conv/bool_neg.cc
! 71c1653e6708c8317f03b3bd9c434b47  libstdc++-v3/testsuite/27_io/basic_ios/conv/voidptr.cc
! 0d33c8b2fa3630359d707cf9e3b7ca4e  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/1.cc
! c8268b714451c3648ac6b9de63ea155e  libstdc++-v3/testsuite/27_io/basic_ios/copyfmt/char/2.cc
! 7c9bf8176216e77aaa63d7c2eff3b2c4  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/1.cc
! 574484ab45e99464ec19ad45063a5fa6  libstdc++-v3/testsuite/27_io/basic_ios/exceptions/char/2.cc
! e69b956a0c68f2c2327cbfd6c9b57563  libstdc++-v3/testsuite/27_io/basic_ios/imbue/14072.cc
! 0e52998a4f54982a4c64b0b42a902d81  libstdc++-v3/testsuite/27_io/basic_ios/locales/char/1.cc
! 1f9897c432dd90d8eea3ef3ac58cd408  libstdc++-v3/testsuite/27_io/basic_ios/requirements/base_classes.cc
! b5074a5a119f46a7103db727be111b26  libstdc++-v3/testsuite/27_io/basic_ios/requirements/explicit_instantiation.cc
! 21ed5af809e3273d417f38fc80d7a3f4  libstdc++-v3/testsuite/27_io/basic_ios/requirements/typedefs.cc
! c30dc4ecd7579c1a5d953613dd1db0b5  libstdc++-v3/testsuite/27_io/basic_iostream/cons/16251.cc
! 8d9d42cff86bd9922ddd6c45ed27ed70  libstdc++-v3/testsuite/27_io/basic_iostream/cons/2020.cc
! aac5ce923354761d075f3c44e7c26bd3  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/base_classes.cc
! 918fbad80a79c275979b0f0a90b2728d  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/explicit_instantiation.cc
! d08919c16355f8cfb161daf8fcc8dce9  libstdc++-v3/testsuite/27_io/basic_iostream/requirements/typedefs.cc
! 2626898a02fcb4c956b3a49111bfc798  libstdc++-v3/testsuite/27_io/basic_istream/cons/3.cc
! 322b93fb434a4d94673c6e8577047ed6  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/char/9561.cc
! 6ccbd9d130e1ab93f2d896561ca20037  libstdc++-v3/testsuite/27_io/basic_istream/exceptions/wchar_t/9561.cc
! fd5e4297188ccbd913404aa4a7ab67b7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/01.cc
! a5c6f1f79b96d1ec901d98db8206c562  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/02.cc
! 992bce1b723c79cf144eeec1d6df6c78  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/03.cc
! 3c4867cdba8f9c0b72a0a1a31e9d706e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/06.cc
! 72f2f1f2cbc8edb9378b331e1fc58523  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/07.cc
! c565f9517b2740062174b9a49050c2b9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/08.cc
! c5912dfa42cd9b88f36f97cc86834af7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/09.cc
! 85f1669bc1eed3a4061f714f955bfbeb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/10.cc
! 2c040aa24c8e12fc6edf107288215a55  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/11.cc
! 22706702bc8d258c200edaf4576e3da6  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/12.cc
! cd20f37dbebf31fcf085c46f1073be7b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/13.cc
! 393ab4eefba5563bea6e9ae0c0ce9dfb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/9555-ia.cc
! 1b1e42c1a044de35205bd0957e9f8e7b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/dr696.cc
! 4e08384dfdead0687553b15f8c525373  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_badbit_throw.cc
! 0805bc4f0ba2a3cc0423b2ab95b25aef  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit.cc
! 8ed1893f2add28cae6b40c9b06a26e94  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/char/exceptions_failbit_throw.cc
! e5ac428dc8f5c7a5ad19f0424315f764  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/pod/3983-1.cc
! 5ca3b378b5dde3fd64b80a9aa1f94922  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/01.cc
! 7e9d795aeddf6a1c4b9c05f6ce41f8b9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/02.cc
! 8a3dd1a3ac1ff39fd18d6f44602cdb36  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/03.cc
! 59343a001b2aa57dd3aa5b61cefebf84  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/06.cc
! 97ed09a8bcf5966d1b82458b11ae4470  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/07.cc
! 8d7ccd7ca12eaf47d131cd0deba9a036  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/08.cc
! 43737824f17a593d27385c238c14c7b8  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/09.cc
! 8526ec3c53c5f612bdeda665e0e59774  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/10.cc
! e1fd727230c24e9d87e87e1b89a3e713  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/11.cc
! 387c5fb2ed1169849d5a8f130ddaf4a5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/12.cc
! 502dc71ad873d890ee73396e50a6815c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/13.cc
! ceb25bb9571be946f8ac3c1be23ab347  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/9555-ia.cc
! a099d6d43be3ec67af59015b765a6c1c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/dr696.cc
! c0a9d1159e1d34f626fc436a236cd07d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 6451deddf0989f792953abeec7546e76  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit.cc
! d72b61e064b50928efa982ef8f30341a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_arithmetic/wchar_t/exceptions_failbit_throw.cc
! 2efea36ba116786dd78f58f8feee0fe7  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/1.cc
! a981303d0096b6e1dff7e04064eb7004  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/11095-i.cc
! 72a5a1b165124bb5370be66c3ce9ba6d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/2.cc
! b3aaa7909f5468900f0f7c68139d493f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/3.cc
! eac396a0ff2575bffa662b403f13fe8d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/4.cc
! b63a564fd2fa7393eb572b0f0d8fc53d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/5.cc
! 681e1449326ad522561c492014ba6ad5  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9555-ic.cc
! 247ba04becc9dc1faf701c9b8edc4713  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/9826.cc
! d9c9847fa563df6ad7c35802ac201664  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/lwg2499.cc
! 673563679c3a06ebf94e56f744f09f2b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/lwg2499_neg.cc
! e9b8dfd566f79cb2b2e24454309ccb98  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/overflow.cc
  4f3d3110437af7e4f5208a2434cf525b  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/char/pr106248.cc
! 74311d05dd5711bd6796e70017ead2b0  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/pod/3983-2.cc
! d8158abeb0d618a957cb4c7ecdf44c25  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/1.cc
! bb02e5d74df5a8781a0e67c0646a9983  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/11095-i.cc
! 28c01584464bb0a854283825110b02cd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/2.cc
! d5dcc51280d2647a7d90167de1223507  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/3.cc
! 6f86f6b011eea017ed9bb59d42cddf50  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/4.cc
! ce44b449d2cec49df16926229fbefca9  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/5.cc
! d6dd9874218ccab40be19a7bb6a5400e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/9555-ic.cc
! b05f89a92d1a0f438b39375992d924cb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499.cc
! 022a41b6a11b009d10d1d8a0ef5b0842  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/lwg2499_neg.cc
! f8635a0eb17fcf423383f37e9a3cf079  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/overflow.cc
  b4f815b9c39f208740f02123c6525269  libstdc++-v3/testsuite/27_io/basic_istream/extractors_character/wchar_t/pr106248.cc
! 3f8dd0bbc0176c9c40e76a16f065c23f  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/1.cc
! d0bfbc2f7c3154a8bd53eda859341ecd  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/2.cc
! f866945f11d9f7c70f610e54254bbf30  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/26181.cc
! 2949ef7dbeb1ea157a9f66033ac7c887  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/3.cc
! 33c62b12ec82e41f67d53a249d25b6a4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/4.cc
! e17129001a53d6226b00e23c3b26635c  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9318-in.cc
! f2a3ed6c547cc20551298ec8887e2d20  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9424-in.cc
! 6e15dd4bdafde0a31cbb737773f088af  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/9555-io.cc
! 3aa34d0059d8786a0d7f1e6b61bc0a08  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/error_failbit.cc
! c105a885cf0bdde9b95228c20d95dff2  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_badbit_throw.cc
! 79402c503ae3475cfde41964f29bc50a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_failbit_throw.cc
! c4a621925686e1bdb2c19cd2f9eaa84e  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/char/exceptions_null.cc
! 860227f714c3964b028aa6aabfd95376  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/pod/3983-3.cc
! 7e8c233d9ab18b43ac4c89a2a0c1dbeb  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/1.cc
! 8b95f97476c985ed835a1525896950f4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/2.cc
! 52bf2817d1470b2b838b14db304c3f1d  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/26181.cc
! 8ae1bb5da7e54b30d247d96cce0cf365  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/3.cc
! 23afbedca44ef3d040bab03c02fc60e4  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/4.cc
! 7ec9dd50ad3036de841aa5400415dddc  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9318-in.cc
! 3f6fc368a5af5099ea3453ba24cfcf87  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9424-in.cc
! 4c45e8b8d6aaa4ff7ed1a8f3f16af07a  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/9555-io.cc
! 4ab83d16b1de4530fdf4417afc537108  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/error_failbit.cc
! fa56afe1497e2247027e09c40055edbe  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_badbit_throw.cc
! 43d2dc729ba73d947fb80e2c4cf0d164  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_failbit_throw.cc
! eab32ca45385d9d822f0fda237290a27  libstdc++-v3/testsuite/27_io/basic_istream/extractors_other/wchar_t/exceptions_null.cc
! e43c27934998c966e42f0c83419666e6  libstdc++-v3/testsuite/27_io/basic_istream/get/char/1.cc
! 146baf9c2376ff72bd297498c73b7343  libstdc++-v3/testsuite/27_io/basic_istream/get/char/2.cc
! d3e93dac38b82c15e84acb799a7a2950  libstdc++-v3/testsuite/27_io/basic_istream/get/char/3.cc
! abdf393ac167285356c12e7336be4c22  libstdc++-v3/testsuite/27_io/basic_istream/get/char/lwg3464.cc
! 92badcdca833f9fa9e1d9c90a668854b  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/1.cc
! 544908cba6709f8077dffdb469f31123  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/2.cc
! dda228ef89041578a7d986b031acb948  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/3.cc
! fcf24c49e720dcb1b43212ef93f37f6b  libstdc++-v3/testsuite/27_io/basic_istream/get/wchar_t/lwg3464.cc
! 8fb3999c04d9bc76b22904b3c7c18048  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/1.cc
! 060807e84c795285df50295a5a0d4476  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/2.cc
! 97c8fcb1769429b1edcf9c22556050a2  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/3.cc
! da5ab9ede693c161197a19fcad381e85  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/4.cc
! 7c4338a1e7a5c3862d466479d93bd566  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/5.cc
! ee529075ef12c74098b45d0b72e18042  libstdc++-v3/testsuite/27_io/basic_istream/getline/char/6.cc
! 0a56d331240d862debec08372376d8d0  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/1.cc
! e2a4c70cae1c25b8b42bc6402d8b9243  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/2.cc
! ac27193b277ac72f4cbd65ed3588acf8  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/3.cc
! 8549f89a25af56b7ff2146756d67214d  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/4.cc
! 2cf07456279b13aacb1b183e86955cfe  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/5.cc
! 60063b31d506079a1f7631e90f3c9dc3  libstdc++-v3/testsuite/27_io/basic_istream/getline/wchar_t/6.cc
! 143c2415b13b61133cf90b1127030d53  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/1.cc
! 3314ea0cb8d77d792130193a005a2121  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/2.cc
! db213265eb248764b3ce5a4e64aa2b1c  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/3.cc
! 105237436138c55ef1eae35666f14ca7  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/6360.cc
! 07da7e62d328b1734dd526a45400c1b1  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/7220.cc
! c43802050eadf25b4e20d68807976b89  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/94749.cc
! 8f8dd2c48a52ac9a475b6ae904554425  libstdc++-v3/testsuite/27_io/basic_istream/ignore/char/96161.cc
! 8ff345f4f5c717eff0915f85a585dcbb  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/1.cc
! bec1927c27f3426873b0a0d76e721250  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/2.cc
! 2388b499666e48fba40ef4f6b133ba2c  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/3.cc
! ab8cc8657b41218bd6fd9a45809155e5  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/6360.cc
! 36efa2f194a4a53944dc9a163ca577ce  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/7220.cc
! ed3a44eae1c9f0b249f3527ca6c964db  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/94749.cc
! 0229b8e24818b3039eed912f7328b314  libstdc++-v3/testsuite/27_io/basic_istream/ignore/wchar_t/96161.cc
! 5b7c578eb4cf4345ed5b6f83c20cd2dc  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/1.cc
! a06889e55f382ee90ab9396e586497e6  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/12296.cc
! ac851d1e1481fb72970505f25bcca2dc  libstdc++-v3/testsuite/27_io/basic_istream/peek/char/6414.cc
! 7f3fd68726a49cd6cd4c699a3eed56af  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/1.cc
! 488d621d7f86faf995d743be51b45b6a  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/12296.cc
! fadef7dd354c96b9b8681063bbafc889  libstdc++-v3/testsuite/27_io/basic_istream/peek/wchar_t/6414.cc
! b2b21a958bab2a13f4792c46895a7e49  libstdc++-v3/testsuite/27_io/basic_istream/putback/char/1.cc
! 357adc6c1a5ebaa865fea62da23ea24d  libstdc++-v3/testsuite/27_io/basic_istream/putback/wchar_t/1.cc
! 73dc3a02c8c75db581b9ccf79ea4d8e0  libstdc++-v3/testsuite/27_io/basic_istream/read/char/1.cc
! e152203494f6ef679e105ac660ae3422  libstdc++-v3/testsuite/27_io/basic_istream/read/char/2.cc
! d98f9a76b0651cff357110492be61a55  libstdc++-v3/testsuite/27_io/basic_istream/read/char/3.cc
! 33227fcebae5297425b422ff5ddb27c0  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/1.cc
! 555ca7561cbf703e3decf25595bd7ee5  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/2.cc
! a88e7baf2fa31b11086a3b0a71fd170e  libstdc++-v3/testsuite/27_io/basic_istream/read/wchar_t/3.cc
! 9309754edc65887e089d1863668055f4  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-1.cc
! 75afe06400cb0a8217b023b51765d01f  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/6746-2.cc
! 80feb7ca54ba118fe53a6fff6f4a4592  libstdc++-v3/testsuite/27_io/basic_istream/readsome/char/8258.cc
! 4d469d0188682876509f039d7f98b5da  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-1.cc
! 37d804997e0db99b694b1c3fe16af6f9  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/6746-2.cc
! 5338f9d7beb6fa07da1c43603d7d342e  libstdc++-v3/testsuite/27_io/basic_istream/readsome/wchar_t/8258.cc
! d42eabee0ed2d3c223ffd796810113a3  libstdc++-v3/testsuite/27_io/basic_istream/requirements/base_classes.cc
! 26572b08e81d566f11550083c145c734  libstdc++-v3/testsuite/27_io/basic_istream/requirements/explicit_instantiation.cc
! 4507be84a4cce0a331f38b88715968a9  libstdc++-v3/testsuite/27_io/basic_istream/requirements/typedefs.cc
! cd8a15ad2d548074fa4917b92f71a62a  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/2.cc
! dccc355241883053c3f10fb5c6b0ea4f  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/26211.cc
! 7a19d21ba39eedf8a623a9b0beda6b03  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-1.cc
! 19026e309bda9a09165f7d326a3ba46c  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/8348-2.cc
! 83a66c857ac1032e055a33b7d2a29094  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/exceptions_badbit_throw.cc
! 7661d35f47941064d17ffbfa4a8fcc86  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/fstream.cc
! 39847628b5a0e7a50b7d3db0cfe742ce  libstdc++-v3/testsuite/27_io/basic_istream/seekg/char/sstream.cc
! d2f4ab0771e6e7114f670c34529bace5  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/2.cc
! 006e711c505a137bb1c86bf0c75f6da3  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/26211.cc
! 17203c69a53d2a744ba7dc31c33814e4  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-1.cc
! 47e087f09f447d5c7abe8f3eee528ea0  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/8348-2.cc
! 9d5832dce771a6e69f90a61d7d443337  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/exceptions_badbit_throw.cc
! 4217ce4c24125dda552c8d5bd24356de  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/fstream.cc
! 2361875e0ce5fb24d34b83fe5c112466  libstdc++-v3/testsuite/27_io/basic_istream/seekg/wchar_t/sstream.cc
! e891885328c8fd63161aced9b0b4f6a3  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/1.cc
! dd8b2ab2cd20ec3a9413affe7f6c9585  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/12297.cc
! b0f79008f689c4ca33858e0979935c52  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/2.cc
! 1875b70c51ddcc9aa03c0ccdd439d54b  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/3.cc
! 44e962a9a8e023d78b6620519c7ca40f  libstdc++-v3/testsuite/27_io/basic_istream/sentry/char/53984.cc
! 607a5f7e106ab25bb91f13ea13182f4f  libstdc++-v3/testsuite/27_io/basic_istream/sentry/pod/1.cc
! b42ac9c27403c2a1d7267b5c328eba29  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/1.cc
! bc7ed71274a55cefeeaded5f3482527f  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/12297.cc
! 6cad96647c07fddee4f8e02a4d17119a  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/2.cc
! f8e76c9fda67f9acc36501946b2cdf8b  libstdc++-v3/testsuite/27_io/basic_istream/sentry/wchar_t/3.cc
! 43800be1da9fe68070e4bc963712fe7c  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/1.cc
! 3ef61bc9d6295f74b2c8e96af081144f  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/2.cc
! 9422a79205207708336f91ecd6a49180  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/26211.cc
! c41e62d172ddb57d54c2ac65dbac44a1  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/8348.cc
! 3a33b6ef590422f8e567036f1143aa60  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/exceptions_badbit_throw.cc
! b05cee5d683efc04925817adaa15bb76  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/fstream.cc
! e80a36c46270e075b899c94a70011091  libstdc++-v3/testsuite/27_io/basic_istream/tellg/char/sstream.cc
! d21c70076a3e9dd61408eed30221c3b6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/1.cc
! 3b641d807e36e5e2d344f20d5b48c880  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/2.cc
! c5030e38f56c74af3a48a9afeb5ce29a  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/26211.cc
! b0b9549ca09fd972e97cdb2b359bd4d6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/8348.cc
! 8a1f3cd9d95ec36ad3ae2dc30ba7efa4  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/exceptions_badbit_throw.cc
! 7b00e8de5873dee69da0dd09c1a1a6a6  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/fstream.cc
! 5469bd70b8036b0198cf6887856999e0  libstdc++-v3/testsuite/27_io/basic_istream/tellg/wchar_t/sstream.cc
! acefbce8a749ee074688c8e5f1a17059  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/1.cc
  f839f1109e54bd94ee7c87d858176de5  libstdc++-v3/testsuite/27_io/basic_istream/ws/char/lwg415.cc
! 3642af0f318b49f786a56e54f68b17b4  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/1.cc
  b9907ab1fd112fa27bbaea52ca154a99  libstdc++-v3/testsuite/27_io/basic_istream/ws/wchar_t/lwg415.cc
! e28fc50f74abac594a278ed8df7674f2  libstdc++-v3/testsuite/27_io/basic_istringstream/assign/1.cc
! a68f384e0ebc667d2f7dd04d2faf0b2d  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/2020.cc
! ca90f5696b58534e094cb4489f613328  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/char/1.cc
! 20b29dafb1a4a01dfb81a883c545ed3f  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/default.cc
! b0c3f5b4de41746af8c1c2ccb75d3007  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/move.cc
! 78696eec1a470f7efe9c5c7da2f46192  libstdc++-v3/testsuite/27_io/basic_istringstream/cons/wchar_t/1.cc
! 864057b8f3d6bc003ca652d4f06f17d2  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/char/2832.cc
! cbba6a0ba2771c80612f9769fb6a7b39  libstdc++-v3/testsuite/27_io/basic_istringstream/rdbuf/wchar_t/2832.cc
! 0d4629bd7c6ec6d5de638477ffdb1188  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/base_classes.cc
! f2feaeffa88fc6c769200de3e04c4a7c  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/explicit_instantiation.cc
! 310adefac65b073aac5756a1c1f1fc53  libstdc++-v3/testsuite/27_io/basic_istringstream/requirements/typedefs.cc
! bca769349f8bae382b9d7fde2d862d5a  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/1.cc
! 2d40e1e2d9dcd5b59347a57c108c92ed  libstdc++-v3/testsuite/27_io/basic_istringstream/str/char/2.cc
! b8916a68d1fcd93e314b35e95efdc583  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/1.cc
! a094495cfd178295b62b67997aee9560  libstdc++-v3/testsuite/27_io/basic_istringstream/str/wchar_t/2.cc
! 4451f627e4a7f7c39dfad81f66597c92  libstdc++-v3/testsuite/27_io/basic_istringstream/view/char/1.cc
! 4870d4a10d7f17f38db6ed94f346a3b2  libstdc++-v3/testsuite/27_io/basic_istringstream/view/wchar_t/1.cc
! 026f92774e031a42232e19cc022f987e  libstdc++-v3/testsuite/27_io/basic_ofstream/assign/1.cc
! 64272bdfe5d702fd395079fe511fc934  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/2020.cc
! 1b6cfd965773481d71d4a78567aef9c9  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/1.cc
! 34b6e34ff4baa69cfa143292f98f383f  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/2.cc
! 22d2af08eca64e44663fedc7b3f99b81  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/char/path.cc
! 042061dc3d4301888cec8846d27732fb  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/move.cc
! b7e6adf74f35a5fd97daa97186ea8628  libstdc++-v3/testsuite/27_io/basic_ofstream/cons/wchar_t/1.cc
! 542519e700e4ff88f847b929c84136ff  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/1.cc
! 038dd05a83d8765ef4fb04007a123efd  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/2.cc
! bd57356c73f5af6665ab95e52c45986e  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/noreplace.cc
! 996adf9df4171a084f5a96a99c709abf  libstdc++-v3/testsuite/27_io/basic_ofstream/open/char/path.cc
! 5ddcd960fea69402f2b90105112959a6  libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/1.cc
! 56d62a1e757505deead6456d4f8d9619  libstdc++-v3/testsuite/27_io/basic_ofstream/open/wchar_t/noreplace.cc
! 5b0f32819873f459403c430d002e187b  libstdc++-v3/testsuite/27_io/basic_ofstream/pthread2.cc
! a87cd2ee9da5f1631486a3a77c0dcb35  libstdc++-v3/testsuite/27_io/basic_ofstream/rdbuf/char/2832.cc
! 6f076d5090dacc922ac6d8320d796c6f  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/base_classes.cc
! 622914058143d7ab09d421a9e8c81e47  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/explicit_instantiation.cc
! 944ac866badad4be8cb6af32575779ce  libstdc++-v3/testsuite/27_io/basic_ofstream/requirements/typedefs.cc
! 2f24beba68751557586127fc083bbcab  libstdc++-v3/testsuite/27_io/basic_ostream/cons/2020.cc
! 84a3a27c7510083281074ee2a3ba8871  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/9827.cc
! a910ce3c7af523d0fc370e5b86d9438b  libstdc++-v3/testsuite/27_io/basic_ostream/cons/char/null.cc
! 2bbe0afd2777c7d3207ac904c79c333e  libstdc++-v3/testsuite/27_io/basic_ostream/cons/wchar_t/9827.cc
! ca2d3b46138d58bcd067f646b38db9b8  libstdc++-v3/testsuite/27_io/basic_ostream/emit/1.cc
! 96969c696dc387f500916eca3d7902a2  libstdc++-v3/testsuite/27_io/basic_ostream/endl/char/1.cc
! 9ae494fec27ceb16f6aac29183c80bdf  libstdc++-v3/testsuite/27_io/basic_ostream/endl/wchar_t/1.cc
! f02fbb6c4d3c50bc0e86196e7413bf37  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/1.cc
! abb37b7eeb7caae07998fcf017452a68  libstdc++-v3/testsuite/27_io/basic_ostream/ends/char/2.cc
! 392d8a6c6391851e20e788005c99abc8  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/1.cc
! defa3ff0b0e46790fcaaf170d5064e2b  libstdc++-v3/testsuite/27_io/basic_ostream/ends/wchar_t/2.cc
! e2d4f7e2e3ddfe5ae856baa32beb68e8  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/char/9561.cc
! 57981eec98ffc5feadf4f4072404d4ba  libstdc++-v3/testsuite/27_io/basic_ostream/exceptions/wchar_t/9561.cc
! 8f1424b21b94896ddb4c7da11d286f78  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/1.cc
! 41f1b489a2b3b52f4cc80f80f24a21a8  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/2.cc
! 21b730203e28970d8fd0b4a26f146043  libstdc++-v3/testsuite/27_io/basic_ostream/flush/char/exceptions_badbit_throw.cc
! 816bd08b4eadb023cedc8b49bcf2cd1e  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/1.cc
! f6b7a2e0ddc32142e0f6936e09d89dc4  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/2.cc
! 72329a4bdbf4444308b3f0a42f8228de  libstdc++-v3/testsuite/27_io/basic_ostream/flush/wchar_t/exceptions_badbit_throw.cc
! e47cb5e2d16e336ef809158f3bce1a88  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/1.cc
! c9fbfe4003a349edc9b25a2c23c2db8d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/2.cc
! eb53233e9bf4f1c6622328e15ba377b4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/23871.cc
! 31af335a0ccfa8a00f303257bf2294ce  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/3.cc
! b002bad936efa96e1447478ddd546a6d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/31031.cc
! 52ed22ebabb452e224453d96f3c70017  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4.cc
! c97e3677aa3232ca73f7a4b3f2b6a21c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/4402.cc
! 37f856486364c85467bd50e2416bc077  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/5.cc
! 3ff1616f9299b49617fb8c5388b3a6cd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/6.cc
! da8e804d366808ea4e1efc1baf07ac7a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/7.cc
! 4400c6d4b7b167b03c6f4ef9c202f368  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/9555-oa.cc
! c9a570df35f1acde1bbf2c3e8784fc40  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_badbit_throw.cc
! 488bae8de856eeaace6155b6fe363093  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/exceptions_failbit_throw.cc
! bffda09cccc425990cee1908636c692f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/char/hexfloat.cc
! 2e206ff2bede183ce79062eeeff8b6c5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/pod/23875.cc
! 8d27047666477233abeeba5c409ec935  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/1.cc
! d7a562fffd0803040211b6bd91cc709b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/2.cc
! 5830fb5a1735a1d9f03107f6fc2a97a5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/3.cc
! c7dd2a09230d4f505ce137ddcd0db57e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/31031.cc
! ea5a5243986a796865846399b893a15b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4.cc
! b4db50d2dfe1284702dd83cf1f7f5eb6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/4402.cc
! 28e77015a91cf6666c456a45ceec3052  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/5.cc
! d4b87a724c3154423a021f6ebbb0d980  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/6.cc
! 391e3654f92257d22e9a63a8f5a205c4  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/7.cc
! 54b4580d2a1c01fbdacbdaf530264a26  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/9555-oa.cc
! 6483d50f0a674942528d1ec518d36fd8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_badbit_throw.cc
! 5a80a7a3e8afde07bc0eabdb3b9904bf  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_arithmetic/wchar_t/exceptions_failbit_throw.cc
! f0431529d5874bc0a283003bdfda79a8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/1.cc
! 649692e28d63949d5c299b38f12d018b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oa.cc
! 85b92bf9929758261af6a6c4ee8452cc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-ob.cc
! 362f441e441ef050723b9c2cd006fca5  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/11095-oc.cc
! 6af7179d16458476e009c183dccec96c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/2.cc
! 33ad2fcf5a37c338aabbcb77e4e99fb7  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-3.cc
! 29316160d36e8c9436cd4db12dcf5dbc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/28277-4.cc
! 5cf20b22551865d50beeee432f11947a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/3.cc
! 16284fbb8dc1ca3cf76001b56f99b53e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/4.cc
! 2b4c908675fe6d93fa045032732ebc76  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/5.cc
! 6c31408b25c6417eab8f42251a26f0a9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/6.cc
! 9c96c33157ce711a0391ceb9a6f2f992  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/8.cc
! 73f843bb4a3788b469f0297aeb12d07a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/9555-oc.cc
! 5df49509e113c4cc0b40a9f9bda4cac2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/char/deleted.cc
! fa2ad17c0f3313dc5f96d39cd1e78582  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/1.cc
! bbf549c0d71432c843be309058dbb034  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-od.cc
! c6bdf3a88cec8dc6755103c21aa4552c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-oe.cc
! 9b3ceb0e719562e15426d0440cc74cd3  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/11095-of.cc
! 322934fb1b71f4df2cb9916441570242  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/2.cc
! 5f21d61849b3f9553f9704c9b71c0e60  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-1.cc
! ae8c37577d969eab4847dfbce24f556f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-2.cc
! 2fefab205cdff1fa4081c947bf04ca4e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-3.cc
! 1240e5fffc1bd7fa5856101c8419b071  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/28277-4.cc
! 81640bc489d9ef94bcf1a180a060edbd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/3.cc
! 925434234c0553edce950c927c30cc4e  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/4.cc
! 013a586cc391d4b30ad279b090a72d58  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/5.cc
! deeec1523c261589c1a0db6f79555324  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/6.cc
! 5aa3a51e947567f06ce870e88cfa8e8c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/7.cc
! 316b0a5e6b580cf9321170f188cf5596  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/8.cc
! e71c14786d9af3b6c5d027ac17e7cee8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/9555-oc.cc
! e237c146127cda2a1049d849b94d8de6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_character/wchar_t/deleted.cc
! ce2e28596172bd6a95d70a3cf0715d79  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/1.cc
! 9e279221bba4d1d458d7c22ece7ab1ec  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/2.cc
! 342a5f147e41464fa90754bd03ff77cd  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/3.cc
! e526e44b375d522e5feb7b5d9c7f16f8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/4.cc
! 641c7a7a55782e76cc526e5b4de809ff  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/5.cc
! 5fb49a89c729866dda7e3089e7717c8a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/6.cc
! 31168bc641f640052c396c7c3023aca8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9318-out.cc
! c124fb347b426275373acdbd7f449895  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9424-out.cc
! 394f6d631cd610cae19f106a4cb7f40a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/9555-oo.cc
  d175b74cdf90be7b308276fabe9bfedc  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/99692.cc
! fcc28d4f8ceea206feda45fd78d2b60d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_code.cc
! 7f012cdc8a993c9378ef428248c46b05  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/error_failbit.cc
! da7fed6515bc4cae23f6feede607e09d  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_badbit_throw.cc
! 400abb30e927cb14981f120f0c93ba4f  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_failbit_throw.cc
! 810e4ed9758515e5ce9becbf428145e8  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/exceptions_null.cc
  ebb7447c68529f67037c0007369c17ae  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/lwg2221.cc
  f2e7cbd42cfa0407bf2ad4408fc38cc6  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/char/volatile_ptr.cc
! c2a814cc0208f1023cbca54a95b3e1de  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/1.cc
! 1051fe0947c5290e879f65b6486306de  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/2.cc
! ff31c527c5a64663e1493327de25732c  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/3.cc
! 91b46b486a88a1937b68eb2707d529b9  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/4.cc
! 0c88cd5a644026b418b2bef9d778429b  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/5.cc
! 2cba9542aede3d8871cc0a89faf47848  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/6.cc
! 873b461840ee6949363aa4658a647a99  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9318-out.cc
! 2a94759c66ebc056bfb117b505c57608  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9424-out.cc
! a4b03aa28b8d9bcfa02151bb2c44c309  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/9555-oo.cc
! f925cac963fdcb50dfe2857ef36e9aa2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_code.cc
! ef76dd62bf390665033b51901d1163af  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/error_failbit.cc
! 5b02541ce2cc7d15b2eba74cf0030e3a  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_badbit_throw.cc
! ee13dc6cb252100ca1d2c786bab32e51  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_failbit_throw.cc
! 23f59ea10af34b802f88cc66df2392b2  libstdc++-v3/testsuite/27_io/basic_ostream/inserters_other/wchar_t/exceptions_null.cc
! 990c52d19f98e26266bd1d10435961e6  libstdc++-v3/testsuite/27_io/basic_ostream/put/char/1.cc
! 3db52bde322a7165bda7791d568ed98d  libstdc++-v3/testsuite/27_io/basic_ostream/put/wchar_t/1.cc
! 62180b2e81d7284af36ef89642e2dd22  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/base_classes.cc
! 14935c3facc9c08b64f886e6c7e426c4  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/explicit_instantiation.cc
! 89ac3287bb1f1eac244aa9f2c5760a10  libstdc++-v3/testsuite/27_io/basic_ostream/requirements/typedefs.cc
! 85ce2592a5ad3d440efd762ff7c279e9  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-fstream.cc
! 8190a8f03f6723ac7556cf6760cf9433  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/2346-sstream.cc
! ff7792486b4836a3b17176a5ed69d2cf  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/exceptions_badbit_throw.cc
  83ecf48decd6af498e926fc3a67f113b  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/char/n3168.cc
! 4cae41aac60f102fdcc3f92a0a9a264e  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-fstream.cc
! 2f7d7740853d9eb92351d45c17ab27e1  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/2346-sstream.cc
! 3a572dc73569891a8368bb7e4a95afc0  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/exceptions_badbit_throw.cc
  7ddb76aa072349435f647b2c8021dbd9  libstdc++-v3/testsuite/27_io/basic_ostream/seekp/wchar_t/n3168.cc
! 365fe01a3926f8349d08f019cb5951af  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/1.cc
! 967760e63295eb7b4997d1b93c58fa74  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/char/2.cc
! 55322f2a801c510b6518947810054296  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/pod/1.cc
! f43bef3d40f8854b0f47d239d99489ee  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/1.cc
! bf925d20e55c4dbec22f5e4d18f2f731  libstdc++-v3/testsuite/27_io/basic_ostream/sentry/wchar_t/2.cc
! a562bf802786332f7ea20b3969b0beee  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/1.cc
! 6c418cb78d31230eef423e5b182bb88c  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/2.cc
! b9b53a08534714899c66324579c7c591  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/exceptions_badbit_throw.cc
  34b746c25af9062ff603699f54f8417c  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/char/n3168.cc
! a1c28cf973d79f8074bdf93e707b2e8d  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/1.cc
! 584d467fe476a81de0e5ce20e47e78b5  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/2.cc
! e8ec8d9061da458ca69f4c5737e997c5  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/exceptions_badbit_throw.cc
  374b556b2a046b8a0b8b251715467b42  libstdc++-v3/testsuite/27_io/basic_ostream/tellp/wchar_t/n3168.cc
! d6bf611d94f96fb26711845eaea2cd22  libstdc++-v3/testsuite/27_io/basic_ostream/write/char/1.cc
! dfdac436ae2dc3cc950a84900e60e6d0  libstdc++-v3/testsuite/27_io/basic_ostream/write/wchar_t/1.cc
! a994a4918bcf5430fe00e2b648a9e08e  libstdc++-v3/testsuite/27_io/basic_ostringstream/assign/1.cc
! c15bc1b4f4286ab95a43f388eab66879  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/2020.cc
! 935a9d25b4ded2a791cd2b0dd29c2099  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/1.cc
! 2a1e9ad714c2a508223ba9a447530a41  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/char/3.cc
! c5e94404e656b5d9b2871b4c7d5b3dcb  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/default.cc
! b2bae9ffeee95d457064f2b94d81687b  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/move.cc
! 9f37b6cf8d47af43b20f0f6abc78fa0b  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/1.cc
! 488e0cb3fa259e5b4773cdc9fe2bd576  libstdc++-v3/testsuite/27_io/basic_ostringstream/cons/wchar_t/3.cc
! 364860073399d11cc0f5f1a5250c76c3  libstdc++-v3/testsuite/27_io/basic_ostringstream/pthread3.cc
! 2a5aea8b8637cbe3720eaad611c8aaa9  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/char/2832.cc
! a09961289fe3551026fefbfa270baea3  libstdc++-v3/testsuite/27_io/basic_ostringstream/rdbuf/wchar_t/2832.cc
! be5680dae96acbbc37bea3e27de9fbdc  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/base_classes.cc
! 3d4cf3d201ee479a4b98e95d79f449fa  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/explicit_instantiation.cc
! 1cdec7c4d7a5bd4d325f8ff3cb0b0ee3  libstdc++-v3/testsuite/27_io/basic_ostringstream/requirements/typedefs.cc
! 5fd17b2f34789a12d7da34944404ac0a  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/1.cc
! bffcf7c0d3f25a678f387ea7e5a39049  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/2.cc
! e42357e64db7e0e63bbc744577d4733e  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/char/3.cc
! 2523c7921df3cafbfd88e232b368e122  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/1.cc
! 75294bbab6444755364a5dad05ebc071  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/2.cc
! 9df2a59b0c16eb2e16a479c01583b430  libstdc++-v3/testsuite/27_io/basic_ostringstream/str/wchar_t/3.cc
! 2199be7d0d68ec85148cd223de809a3f  libstdc++-v3/testsuite/27_io/basic_ostringstream/view/char/1.cc
! 6f3fcff3474d8167a0d3d4c1d2e1b5cb  libstdc++-v3/testsuite/27_io/basic_ostringstream/view/wchar_t/1.cc
! 0276cfc934bf116ecf35ad1b837b3f3b  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/2020.cc
! c54567ba820a95e6c57e96cae061cb61  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/57394.cc
! 6516012e816453bc040fb56b8e604b94  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/char/1.cc
! 9c15da8bd068c8a1f03929f01b4c18b8  libstdc++-v3/testsuite/27_io/basic_streambuf/cons/wchar_t/1.cc
! 485e6b98435e5ee598bba69a6369cb87  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/1.cc
! 591a6a24dc20bbf7f5af70ef1e796813  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-1.cc
! 9bf3cd15cc246de6d5fec95521dfecbd  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/13007-2.cc
! 268fa48fdb997a66bbffac2c4e3f49ea  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/char/9322.cc
! 0750f6627aa4127075826c4a20d98167  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/1.cc
! 60bf78fa60fa8d57efd35edbb1a89bd2  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-1.cc
! 000467b6a5a93f1fff1d1437641411a5  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/13007-2.cc
! a934f39a1ec477c8d6653a6f06331df5  libstdc++-v3/testsuite/27_io/basic_streambuf/imbue/wchar_t/9322.cc
! 1cb884e812e0bf06460a2614a39d94da  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/char/1.cc
! 0ecc4919fdbdb06da99b74280386e391  libstdc++-v3/testsuite/27_io/basic_streambuf/in_avail/wchar_t/1.cc
! 6e87aad95681157c7db874269b612e1f  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/1.cc
! 7290403c81d7b1f97f4ef6747a55d7ac  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/2.cc
! 3357c5be1782720f0c69bff2536f3c8e  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/char/3599.cc
! 195df35c4d51ddb1085a591a6b8ebeae  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/1.cc
! ef047bd72229e013219636dcc8231bee  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/2.cc
! 5776d2f299ddd05179ae8fce63bad2a0  libstdc++-v3/testsuite/27_io/basic_streambuf/overflow/wchar_t/3599.cc
! aaeaf9be3ba05385a1743cda8f163832  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/base_classes.cc
! bec00c2127a74acebdeb1bd9fbc60deb  libstdc++-v3/testsuite/27_io/basic_streambuf/requirements/typedefs.cc
! 06730aac1f2d9ceb26f46ed0eee96cb2  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char/1.cc
! 8e33fca9c247590cc53a6aa9936472fd  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/char16_t/80624.cc
! 678414044d518babfaeffd75d2825103  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetc/wchar_t/1.cc
! 7444ee824603bd6a48473c5888059941  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/char/1.cc
! 148af8b00123d85338c03ceb603e742d  libstdc++-v3/testsuite/27_io/basic_streambuf/sgetn/wchar_t/1.cc
! e5f7488c943731c702cda33c99e039fd  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/char/9538.cc
! 178c2d5e6450a907a8cb76e794b39a4d  libstdc++-v3/testsuite/27_io/basic_streambuf/sputbackc/wchar_t/9538.cc
! a1ef6f9cdd2010ac2fb1b4e233a28f9b  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char/1057.cc
! ab2e16d5a29c1dfdce9efaef96edbc34  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/char16_t/80624.cc
! 90f7f2adb5775def9e0a26da1da6aa34  libstdc++-v3/testsuite/27_io/basic_streambuf/sputc/wchar_t/1057.cc
! 28746939ffeaabd28ba7736cf28f1aba  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1.cc
! d0a9b8307669b37e585bb54a3d12f3aa  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/char/1057.cc
! e369d8250e152fb5bd7d9f45e01cc9e0  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1.cc
! a0aed91ec3c9b7b342aaf4dfb3614920  libstdc++-v3/testsuite/27_io/basic_streambuf/sputn/wchar_t/1057.cc
! 093b7f4c01df820008c9869a1e2c8cd6  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/char/1057.cc
! d0feafe91efb1382acdca26ef49dfc78  libstdc++-v3/testsuite/27_io/basic_streambuf/sync/wchar_t/1057.cc
! e24b29c50c2bf7e05abb584c9ea88942  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/2020.cc
! 50432c3fe38b9a872357aef77e8f17b3  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/81381.cc
! 5e0dfad7906699c4409146e831223b58  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/1.cc
! d73fcaaeae5dea2e614f1763567d33ed  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/2.cc
! 97f26044fdab3fca304388f9fb6c99cd  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/char/default.cc
! 6f791f7eda8260d468cc44a7800efdef  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/1.cc
! 477e204645e18b0d87a209550317da94  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/2.cc
! 982e812904e1bcaab8402165487add59  libstdc++-v3/testsuite/27_io/basic_stringbuf/cons/wchar_t/default.cc
! 2772d92cc2523b86a8406cd738367065  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/1.cc
! 5624bd64a39dff2b75af92572750863a  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/char/9322.cc
! 5a032f500661317fc4eadd0eed0c0af1  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/1.cc
! 95df000dd4a33f056c6e2f425fdc1365  libstdc++-v3/testsuite/27_io/basic_stringbuf/imbue/wchar_t/9322.cc
! 8aefcad07fd541e403603ce8f98372ad  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/1.cc
! 75c41ee893a664c8685ce9dc761768ec  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/char/21955.cc
! d6b666b111e022cd5eedd7c7f313812d  libstdc++-v3/testsuite/27_io/basic_stringbuf/in_avail/wchar_t/1.cc
! bd637a4e2d185242d2f786e56fc27726  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/1.cc
! 9daae362e0530e879218613c5742f65c  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/2.cc
! ea16fdb4cbbaded71e5e0d871fb3c433  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/26250.cc
! 25eb2d4fb460db559bd1b4a8ad8bb4eb  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/3599.cc
! 2fb8256114c4502f75ea4b755f398eb8  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/char/9988.cc
! fbd106ebbd106a5ea7d0d001b6a9c7fb  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/1.cc
! de869004648e446f1d0c86bbd0b7983f  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/2.cc
! 4a4598fd3043c29b39c9867aa4b04a71  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/26250.cc
! 4b7d4010b8f56f382b985b4ce6324ea4  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/3599.cc
! b272fe451dc3505f442b599431b71db5  libstdc++-v3/testsuite/27_io/basic_stringbuf/overflow/wchar_t/9988.cc
! f41856699688d403e42bf7efc23be269  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/1.cc
! ef70e194058b28d1015f08eeed219e05  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/char/2.cc
! f7013be031a00d7f78a8557be0ead3fc  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/1.cc
! 08ed04ded161d5e447544b4b8dbcf8c2  libstdc++-v3/testsuite/27_io/basic_stringbuf/pbackfail/wchar_t/2.cc
! 605fb454ba4f6c012e158fd780328336  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/base_classes.cc
! 33aff8b74e139f9987337d91ee7557bd  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/2.cc
! b82e4c3cdc77d1140a74dbb58ae5eb68  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/explicit_instantiation/4.cc
! 2946ace861baf8215bbb9dbc1d7b8c69  libstdc++-v3/testsuite/27_io/basic_stringbuf/requirements/typedefs.cc
! 1d154f62478ed0e0eb62d55ad0d64c29  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/1.cc
! 6582031c5b2a2633da9de493e01ad053  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/char/9825.cc
! 4cc58a9285c905645d0f521545e2c26b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/1.cc
! a0ab202375d699cdca574c0ee394905a  libstdc++-v3/testsuite/27_io/basic_stringbuf/sbumpc/wchar_t/9825.cc
! 4d187e75d15b235fcc9c8409ece69d73  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/1.cc
! c0d2b0b19acd67ceb9b705e5f2224eb6  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/10975.cc
! 091e294cfe09780edaba5648b13a3e71  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/16956.cc
! 265cc99d704fe57c0c587b030de85a51  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/char/2.cc
! d970a89cbd1c9a13777454d3215e7f9b  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/1.cc
! 27fb65a311793ebd6f6daf9c739bced6  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/10975.cc
! bbee3d8a23d59d41b9c55346ec819ccc  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/16956.cc
! 0ddc5da4c9059483149fbcceeb82db72  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekoff/wchar_t/2.cc
! 83f0bdc34b96aa0be83c8b4a409e5d96  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/1.cc
! 61c5cb8c6232505d42a3ff4db6b8a8a4  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/2.cc
! bd8393e5eb322180859f2418f94bf458  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/29354.cc
! 30e95598727b1ee0b9acce7738d59488  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/char/3.cc
! 1eacb8ddd0cd53f437f3042b41aaad8f  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/1.cc
! 2253b074c7ed484b31d9166b7fd1df55  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/2.cc
! abb73902f1b0410b5538b1f92a13a505  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/29354.cc
! 432ee07a211e5e847c5ad3351aa3533d  libstdc++-v3/testsuite/27_io/basic_stringbuf/seekpos/wchar_t/3.cc
! 84b114cc5a912cbf8c3ab91a5533c5cc  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/1.cc
! b2e8eb728e38d47f95859b60336ad4fe  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/2.cc
! 35bc9b42e93afd9f02788dae0dc65e5c  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/3.cc
! eee66e8dd3721950a4023527084a02d7  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/char/4.cc
! b540e6b6a9c7100a59927a27804141b0  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/1.cc
! 3c50c93d2d2c379b6e5878c23efcb584  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/2.cc
! 4ca50fc4c5c916aa29ff5480930683da  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/3.cc
! 32900e69a1c767ef09d8a416aa366bed  libstdc++-v3/testsuite/27_io/basic_stringbuf/setbuf/wchar_t/4.cc
! 9785f82610b3efbd78f9c376fb369321  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/char/1.cc
! ecb98992166c667ae8a3988138984d65  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetc/wchar_t/1.cc
! fdb7e3f699452c0c527606683e485657  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/char/1.cc
! eaf657a4c1bdeb5328c6549cc28a3862  libstdc++-v3/testsuite/27_io/basic_stringbuf/sgetn/wchar_t/1.cc
! 7520531559898f532ab3b78a67e0d890  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/char/1.cc
! 96eadc1a676d62ee35e5ddc758ce0a2c  libstdc++-v3/testsuite/27_io/basic_stringbuf/snextc/wchar_t/1.cc
! ea4a4551684c9fcf5d5d22913f7c4171  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/1.cc
! 76307b451842395479635b024257326c  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/char/9425.cc
! ff6282531907a0b2fba18aabae2f9c0e  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/1.cc
! 324646b27803f9a8b6afeaab2d032fa2  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputbackc/wchar_t/9425.cc
! da3114c0303144ed5b3e583a7a761e7a  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1.cc
! c32127a79e771943cf78b865836dd775  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/1057.cc
! ec114cb9cfce4317031848babec5cd1c  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/char/9404-1.cc
! 862b79bb84d2420fb55bf2c99b2034f6  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1.cc
! 0465e63172f02f53a2f3851d599c4e70  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/1057.cc
! 0e3d46f8e74d028a3bd3566e58185c9e  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputc/wchar_t/9404-1.cc
! 07d77f5e44771023dc3a0aecfa28ed86  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1.cc
! d99ade6067d7f908f970d1e1cbd8a3a8  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/1057.cc
! 607f6d1f6374ab5b4453e830a4ce6510  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/char/9404-2.cc
! b8939124765ab9270338e83358b3ac2b  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1.cc
! c208c8de494bf32d878da5e4c9b204af  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/1057.cc
! ca62659f7a645bedde2eca769be9962a  libstdc++-v3/testsuite/27_io/basic_stringbuf/sputn/wchar_t/9404-2.cc
! 8622720c9345ba21912feea8824bdc15  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/1.cc
! 336990ae2489df97e50305d0ed3f7c27  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/2.cc
! 4b0f93f8b1f2c857573d6de9b3ff2517  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3.cc
! 5ca6a228218b7685c57f8087d179c4b3  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/3955.cc
! f8800b8378da24e15ec0df55a2ae157a  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/char/4.cc
! 3e3b1ad2513cae4102f00d0e864869ce  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/1.cc
! 0c5cc1f290c67a763a7a892485689b60  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/2.cc
! 78537bfc630911a98ad19e4284c3340f  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3.cc
! e025319f9831d49f9931d12f309552e7  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/3955.cc
! 51382a0e1de0ef9a061f4b4158b2afce  libstdc++-v3/testsuite/27_io/basic_stringbuf/str/wchar_t/4.cc
! 23615a1dad69ac451e3d945b08020b7d  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/char/1.cc
! bf38993af2cb61d29383522454ae824f  libstdc++-v3/testsuite/27_io/basic_stringbuf/sungetc/wchar_t/1.cc
! edad207cc8a6bdae305bfc8bb163dd33  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/char/1057.cc
! e1b988a60252c7d4e628c4df772964d5  libstdc++-v3/testsuite/27_io/basic_stringbuf/sync/wchar_t/1057.cc
! 475403091400fd5580b35d6aeaefb3f4  libstdc++-v3/testsuite/27_io/basic_stringbuf/view/char/1.cc
! eb24e2e048d93a1f590b90332efbdad1  libstdc++-v3/testsuite/27_io/basic_stringbuf/view/wchar_t/1.cc
! 4416c6f79fb077d966226f44edc64d03  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/1.cc
! ee61c0f1123479e316431eca500fbbde  libstdc++-v3/testsuite/27_io/basic_stringstream/assign/81338.cc
! aba71181e260c63b9ba4f590db907045  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/2020.cc
! 286d65b3a5df3d8ecc84f7fefe33e68c  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/1.cc
! f272b0faf9b33fa5ad5175846d0e8224  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/char/97719.cc
! 5db4c3df6f4595fd2bb334d968c4734b  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/default.cc
! f7dc180d5f73c5ad1cb58b9c47a3918b  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/move.cc
! 21c5be7e4842ad1fe08eca5335d9534c  libstdc++-v3/testsuite/27_io/basic_stringstream/cons/wchar_t/1.cc
! f36e0a6be6818d60bb84203d1d741d67  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/char/2832.cc
! e01c8ebfbf622fa4c101d515a6f690dc  libstdc++-v3/testsuite/27_io/basic_stringstream/rdbuf/wchar_t/2832.cc
! 09caf2705eefd7665e3710c1942c2f83  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/base_classes.cc
! e14077b970778ee173dd74649ef46214  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/explicit_instantiation.cc
! b8fc347350bcb022ad9550e4c81ff7f2  libstdc++-v3/testsuite/27_io/basic_stringstream/requirements/typedefs.cc
! c152c9dc9e51ab39a7098c7dd21564c0  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/1.cc
! 5f35cee8ce0f293b76f2e4ab8bbdc293  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/2.cc
! 8c542e5c37e34942a8969849fd5eef2a  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/3.cc
! 8e3634212145a81fa4dcf3f996622c3f  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/4.cc
! a64f8aa9729497390b401852ae47a530  libstdc++-v3/testsuite/27_io/basic_stringstream/str/char/5.cc
! 43ba0da7febe2168091036af4803bb32  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/1.cc
! f8bb493d444ba306c96dc56051ce82a8  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/2.cc
! 42cbfd1f4ebdc293bbf15b1a7ec78cd0  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/3.cc
! 3205172d68284131ff652d5da9da170d  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/4.cc
! 4caa7dbfa5c90becb170251c0247a4f7  libstdc++-v3/testsuite/27_io/basic_stringstream/str/wchar_t/5.cc.cc
! 5d72c554e79712112813d57ae5e6cb92  libstdc++-v3/testsuite/27_io/basic_stringstream/view/char/1.cc
! b962c25698ce97bb90aa72593f8dda06  libstdc++-v3/testsuite/27_io/basic_stringstream/view/wchar_t/1.cc
! 3add8d595c63d1ab2eb211b5ac8146f5  libstdc++-v3/testsuite/27_io/basic_syncbuf/1.cc
! 6afa1db753ba2e8fc4646dcc9ac5adeb  libstdc++-v3/testsuite/27_io/basic_syncbuf/2.cc
! 32026cea9b57b7386e63464ab5c54bdb  libstdc++-v3/testsuite/27_io/basic_syncbuf/basic_ops/1.cc
! 6b28e4f6652786f6449c64c48a244268  libstdc++-v3/testsuite/27_io/basic_syncbuf/requirements/types.cc
! 3bae5c11da4a08e7336ab3ff947ae923  libstdc++-v3/testsuite/27_io/basic_syncbuf/sync_ops/1.cc
! 3add8d595c63d1ab2eb211b5ac8146f5  libstdc++-v3/testsuite/27_io/basic_syncstream/1.cc
! 6afa1db753ba2e8fc4646dcc9ac5adeb  libstdc++-v3/testsuite/27_io/basic_syncstream/2.cc
! db8502ea43af702115a75d2c7082059a  libstdc++-v3/testsuite/27_io/basic_syncstream/basic_ops/1.cc
! e5e125dfcbba010e0951ef33630e73c9  libstdc++-v3/testsuite/27_io/basic_syncstream/requirements/types.cc
! dc7bcbd222dff525ddb77ae7674869c8  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/86597.cc
! 3e4d6fd3c2d600bc93f5c42a50aba719  libstdc++-v3/testsuite/27_io/filesystem/directory_entry/lwg3171.cc
! c4bccf786912c3a2b0aaf2591088baee  libstdc++-v3/testsuite/27_io/filesystem/file_status/1.cc
! 9c311428734ec9c8511538e1a13ec90c  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/cons.cc
! 32c5658b054c0c92fe1fa0bd951bda71  libstdc++-v3/testsuite/27_io/filesystem/filesystem_error/copy.cc
! 1f6a2ba53ef78ca2bf02d4ad80d092d2  libstdc++-v3/testsuite/27_io/filesystem/iterators/106201.cc
! c08d6d11a73ba34f4b8033c727e408d5  libstdc++-v3/testsuite/27_io/filesystem/iterators/91067.cc
! d587f0a010ee52da14e4291740ea9e88  libstdc++-v3/testsuite/27_io/filesystem/iterators/97731.cc
! fb9bd68e33aa6488c7aed84aa97fe981  libstdc++-v3/testsuite/27_io/filesystem/iterators/caching.cc
! d377ea6c61fb7fb1fa2c4001a830da11  libstdc++-v3/testsuite/27_io/filesystem/iterators/directory_iterator.cc
! dcd882a17587b064a50fa3897aca0e32  libstdc++-v3/testsuite/27_io/filesystem/iterators/error_reporting.cc
! c45fc7189824b4a01ce3d6ad049d44d4  libstdc++-v3/testsuite/27_io/filesystem/iterators/lwg3719.cc
! ea42cb0d3f5239983a65e71ffc4032e5  libstdc++-v3/testsuite/27_io/filesystem/iterators/pop.cc
! 57277e79141b7a52b38a49c5f3f4ce58  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursion_pending.cc
! c0f916777909ec31862f1c1598826016  libstdc++-v3/testsuite/27_io/filesystem/iterators/recursive_directory_iterator.cc
! a758fd957636105227fc87a9661db9cc  libstdc++-v3/testsuite/27_io/filesystem/operations/absolute.cc
! 045e16e4aeda74a97373f2bdf807b39c  libstdc++-v3/testsuite/27_io/filesystem/operations/all.cc
! 9fdcddf0081f3acb01e9e3aa40cb7294  libstdc++-v3/testsuite/27_io/filesystem/operations/canonical.cc
! a42f2f8bc28c4671f94b1ccf937795ea  libstdc++-v3/testsuite/27_io/filesystem/operations/copy.cc
! 9a472855ba191981b089cc12907f9f33  libstdc++-v3/testsuite/27_io/filesystem/operations/copy_file.cc
! acc8cbac48528e1912d33385e5aa6809  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directories.cc
! 8c33f78dd03e730cfd6fb6e7f071d069  libstdc++-v3/testsuite/27_io/filesystem/operations/create_directory.cc
! 249621220bf58b3b82d949a916f27c38  libstdc++-v3/testsuite/27_io/filesystem/operations/create_symlink.cc
! b21feaf3945442a938ec54a4401d86e7  libstdc++-v3/testsuite/27_io/filesystem/operations/current_path.cc
! 910e5781be110c3e15ed3bdf4d4dbb05  libstdc++-v3/testsuite/27_io/filesystem/operations/equivalent.cc
! 174c747425f2c8a8a5af6df0c12b933b  libstdc++-v3/testsuite/27_io/filesystem/operations/exists.cc
! 22ed45f524883e23e793351cf4019f14  libstdc++-v3/testsuite/27_io/filesystem/operations/file_size.cc
! 70241ed0411548125d4c89de6fc437a1  libstdc++-v3/testsuite/27_io/filesystem/operations/is_empty.cc
! f35204011be3068a8f812b54872d4610  libstdc++-v3/testsuite/27_io/filesystem/operations/last_write_time.cc
! a6ef8cf8069a17c91e4f975d33e75ca7  libstdc++-v3/testsuite/27_io/filesystem/operations/permissions.cc
! 5a82feb397d738850290d5651301a11f  libstdc++-v3/testsuite/27_io/filesystem/operations/proximate.cc
! aa12f3ad5d07760fdef4c7f8339e1ea7  libstdc++-v3/testsuite/27_io/filesystem/operations/read_symlink.cc
! 0c6c07a9c9dbccc7719497b85201d9a6  libstdc++-v3/testsuite/27_io/filesystem/operations/relative.cc
! 128c6f5ee47456ecc936373f2f323f1b  libstdc++-v3/testsuite/27_io/filesystem/operations/remove.cc
! 42594b5cbf9a6ffadf5b6cb9b0895ce1  libstdc++-v3/testsuite/27_io/filesystem/operations/remove_all.cc
! 3ab7106fa9baea760ffb1735f2edbdd1  libstdc++-v3/testsuite/27_io/filesystem/operations/rename.cc
! 93258c1d01aa8dc2bfecf035e136dbca  libstdc++-v3/testsuite/27_io/filesystem/operations/resize_file.cc
! 3faa5845a51c8d6c5755eed607cc8697  libstdc++-v3/testsuite/27_io/filesystem/operations/space.cc
! 9f4e4355672050d1fd8eb5a7524deeb4  libstdc++-v3/testsuite/27_io/filesystem/operations/status.cc
! 1583f8daa9759aa939ffd5f229ee9688  libstdc++-v3/testsuite/27_io/filesystem/operations/symlink_status.cc
! 2ca07c3423d647fdf0be18fd26ba9438  libstdc++-v3/testsuite/27_io/filesystem/operations/temp_directory_path.cc
! 09c608f10b3d0f70c15ef68c41af4521  libstdc++-v3/testsuite/27_io/filesystem/operations/weakly_canonical.cc
! 9897c7912c7b47987d118515b02ab561  libstdc++-v3/testsuite/27_io/filesystem/path/108636.cc
! 3b10bf3958ef0e9907c552b848b5f14a  libstdc++-v3/testsuite/27_io/filesystem/path/append/path.cc
! 650ed7e70ba1dbf164c8e81dcf17e802  libstdc++-v3/testsuite/27_io/filesystem/path/append/source.cc
! e2ca87600c4d8aa5eeed7099f196b1bf  libstdc++-v3/testsuite/27_io/filesystem/path/assign/assign.cc
! dffd9d7799c604c3bce57aae4d879e6f  libstdc++-v3/testsuite/27_io/filesystem/path/assign/copy.cc
! adc6839881d66900bdb4afec1183fee6  libstdc++-v3/testsuite/27_io/filesystem/path/compare/compare.cc
! 76d9cd4f874777f208df909f580d633b  libstdc++-v3/testsuite/27_io/filesystem/path/compare/lwg2936.cc
! f96fd6968fd5dc0a924d195a63fd0f01  libstdc++-v3/testsuite/27_io/filesystem/path/compare/path.cc
! 71dece1f73b5dfe83d3feeccea213e26  libstdc++-v3/testsuite/27_io/filesystem/path/compare/strings.cc
! 645545a2827964059e41fbf8a38f3610  libstdc++-v3/testsuite/27_io/filesystem/path/concat/92853.cc
! 08d3a01e742eaf2deea882236be3a404  libstdc++-v3/testsuite/27_io/filesystem/path/concat/94063.cc
! b9c63e25d0a6079a7198ceb1e34281aa  libstdc++-v3/testsuite/27_io/filesystem/path/concat/path.cc
! 03128b92092f24a385c32f721bc76620  libstdc++-v3/testsuite/27_io/filesystem/path/concat/strings.cc
  a22e69eb2c027825b8fb3e0e6df6a97d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/100630.cc
  3bc7c7fa91cdfae8b85e98c050b994cc  libstdc++-v3/testsuite/27_io/filesystem/path/construct/102592.cc
! 784d57a5366a20e7e27f90e28eef53ac  libstdc++-v3/testsuite/27_io/filesystem/path/construct/80762.cc
! b479d71692400e6f0bf7753dffcdcdf4  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90281.cc
! 1b5d6720e22335fe7b9b10909cbfad06  libstdc++-v3/testsuite/27_io/filesystem/path/construct/90634.cc
! 16f2c14a3bea9b80ab6807caa15c110d  libstdc++-v3/testsuite/27_io/filesystem/path/construct/95048.cc
! 9ee288435d56887bc9e59c7e475e1688  libstdc++-v3/testsuite/27_io/filesystem/path/construct/copy.cc
! a89f190425a59f5643505be45a681c0c  libstdc++-v3/testsuite/27_io/filesystem/path/construct/default.cc
! aeb93083bb7772788b6c6a71067423d5  libstdc++-v3/testsuite/27_io/filesystem/path/construct/format.cc
! e9c92c5fb8996343b7126f064f6612cc  libstdc++-v3/testsuite/27_io/filesystem/path/construct/locale.cc
! bd02d852b173fe4c97501d48e665ebcd  libstdc++-v3/testsuite/27_io/filesystem/path/construct/range.cc
! 2f1c3aa84331fe7c40735f4c422784e2  libstdc++-v3/testsuite/27_io/filesystem/path/construct/string_view.cc
! 1725c3eddbfa05fd17dfacb6951bbbac  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/extension.cc
! eefbf8a66b82ecd55aa92cb8eef60f6c  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/filename.cc
! c8126f632c63e81e365288fbc058d73d  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/parent_path.cc
! 04634080878f96cf58d2a1f3d99ce346  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/relative_path.cc
! 299b016b4d538318f15976165c6f9567  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_directory.cc
! bfacfade96c3529c93b276fb07862927  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_name.cc
! d72d3c9c5a29f8928067d4de163102d3  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/root_path.cc
! 7fa41dd5fa5525f50579c767218c6782  libstdc++-v3/testsuite/27_io/filesystem/path/decompose/stem.cc
! 5e70624ba8ed61fd7555f1417bcc4a93  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-char8_t.cc
! 7d95852b1f2e3b85df5e4bdc322b3eec  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path-depr.cc
! 94999a5ebc3e4dbc24351f2ddddc12c7  libstdc++-v3/testsuite/27_io/filesystem/path/factory/u8path.cc
! 9eef10d022d997816154519956b543ca  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal.cc
! c99b1b75451161836f971782bd0a356a  libstdc++-v3/testsuite/27_io/filesystem/path/generation/normal2.cc
! a81b276e5230b9b1b833e72b51716a22  libstdc++-v3/testsuite/27_io/filesystem/path/generation/proximate.cc
! a94eb971c8c9e0e3819a801f88e642a1  libstdc++-v3/testsuite/27_io/filesystem/path/generation/relative.cc
! 61e8518fa43c1f9f8402ba26ddeda302  libstdc++-v3/testsuite/27_io/filesystem/path/generic/94242.cc
! 5d7470ee8b77c18c0c89fa79ca850b4f  libstdc++-v3/testsuite/27_io/filesystem/path/generic/generic_string.cc
! 2ceb6e31230c89d453bc9e346b19e0dd  libstdc++-v3/testsuite/27_io/filesystem/path/generic/utf.cc
! 4859840bcf14e93725af4d38a795fdf7  libstdc++-v3/testsuite/27_io/filesystem/path/generic/wchar_t.cc
! 51dbca1a7ec4f4a6b9c7c03502042bd4  libstdc++-v3/testsuite/27_io/filesystem/path/io/dr2989.cc
! e0097244ecbddfc34ec4390c101890a0  libstdc++-v3/testsuite/27_io/filesystem/path/itr/components.cc
! 3c51e8d1f2c2887ca4c5b02984991a4f  libstdc++-v3/testsuite/27_io/filesystem/path/itr/traversal.cc
! efe6f83f656d23b4e39013e66fa0ae2f  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/clear.cc
! f9a5560522638ebdc5b628e0ccac98d1  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/make_preferred.cc
! f406c2709cc46dd31af3014ddfd6e46a  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/remove_filename.cc
! 110967e2bedd4fcf3d0685b4de8fc61f  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_extension.cc
! 2957e341a41624090fbb252bcafa7fc6  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/replace_filename.cc
! 598686c9ddd749040cc19c9e0d07b92b  libstdc++-v3/testsuite/27_io/filesystem/path/modifiers/swap.cc
! 32fa2b3d91d6572aa99f51d7dd1210f9  libstdc++-v3/testsuite/27_io/filesystem/path/native/alloc.cc
  697f6ac048e02e33ef8e766bd5eecec9  libstdc++-v3/testsuite/27_io/filesystem/path/native/conv_c++23.cc
! f53d701f6eda4a39c2ce04016ff1692d  libstdc++-v3/testsuite/27_io/filesystem/path/native/string-char8_t.cc
! 0ab87015f2efbe3b2dc35b4066df0389  libstdc++-v3/testsuite/27_io/filesystem/path/native/string.cc
! 77f2e6dca048746f286670399f0bff83  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/append.cc
! 8b92198e3df944b8ddc7c018ce7c2674  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp.cc
! 586fd36bbd93fe14b3a3f67a74b77566  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/cmp_c++20.cc
! f7efd6da348473ee63b3ea3b7813f92b  libstdc++-v3/testsuite/27_io/filesystem/path/nonmember/hash_value.cc
! 863d56baf0749dfaf6e8ec1eaf95c813  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty.cc
! fce24f9078146c2f6c4c48647378ee7d  libstdc++-v3/testsuite/27_io/filesystem/path/query/empty_neg.cc
! c9dfe323a318a981c2d5fcee561ea1a1  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_extension.cc
! cd185f9a390ed805bd60161bac9ab5c4  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_filename.cc
! 0b17c2303cfc36ce0c05e6f28916f191  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_parent_path.cc
! 44ae0e413c05dd4c96057ee8f67edd68  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_relative_path.cc
! 8b758624ffd6f0eabf3a1c8859f4d014  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_directory.cc
! 91f0ed1a1f66491e0e2f13fd594c2677  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_name.cc
! f46a9a3e2f282502de58cfec2326a04d  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_root_path.cc
! f234a4f769acf0b573d7ed50523d9b35  libstdc++-v3/testsuite/27_io/filesystem/path/query/has_stem.cc
! b0f9513bb405da689246e1bcf7751de4  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_absolute.cc
! 82fc1dabd68e8a785347bd9c6664216e  libstdc++-v3/testsuite/27_io/filesystem/path/query/is_relative.cc
! a595e3cb83e2b12f86dd0dd253265a72  libstdc++-v3/testsuite/27_io/fpos/11450.cc
! e921c998ecd3a5eb0ed92f46b34549a5  libstdc++-v3/testsuite/27_io/fpos/14252.cc
! 6cfa33171912a62e7ad8c058e4ee60d7  libstdc++-v3/testsuite/27_io/fpos/14320-1.cc
! a537236e607c7deaaa9f494b5e145b74  libstdc++-v3/testsuite/27_io/fpos/14320-2.cc
! dae8878b827da621dce515e317a2a6fc  libstdc++-v3/testsuite/27_io/fpos/14320-3.cc
! ee170ca26fb5977f75a5cab7001a9c2a  libstdc++-v3/testsuite/27_io/fpos/14320-4.cc
! bd41cc523ad1aeda21d725824af8b13a  libstdc++-v3/testsuite/27_io/fpos/14320-5.cc
! f2261ada9418561175620cc555e8fa87  libstdc++-v3/testsuite/27_io/fpos/14775.cc
! 1b953e841504dedafccbbcfe16f98298  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/1.cc
! 3a51bd5e409973eea5ac55591f3bff4e  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/12065.cc
! fe5490b17d6b0f171f89903e0a2a6c9b  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/2.cc
! 58b1b8325d999089df38990dc6bdb6ba  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/3.cc
! cda1b26874aec90b4cdb742f5bc0f49b  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/4_neg.cc
! a45caa878ca2b306bd708d9c27846d22  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/5.cc
! 1d927436cde9dae4c78826c69174a038  libstdc++-v3/testsuite/27_io/fpos/mbstate_t/6.cc
! 92e105614a3acbb31127f22e8e1bc336  libstdc++-v3/testsuite/27_io/fpos/requirements/explicit_instantiation.cc
! 34c0fa7f43587295a24b70034c7add72  libstdc++-v3/testsuite/27_io/headers/cinttypes/std_c++0x_neg.cc
! 1b9b6b9db058436ec03f805bfcdaa842  libstdc++-v3/testsuite/27_io/headers/cinttypes/types_std_c++0x.cc
! b5b9fd2dcfcb7e7a1c354ba1b1ae8d8d  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_neg.cc
! c9dc645cab8ab24be21fa617c67ea851  libstdc++-v3/testsuite/27_io/headers/cstdio/functions_std.cc
! ee6fd5d7880dda57a778c084c944a563  libstdc++-v3/testsuite/27_io/headers/cstdio/macros.cc
! 887721e99732d2c03d805e25d7f543cd  libstdc++-v3/testsuite/27_io/headers/cstdio/types_std.cc
! d233d7a90143e430ac247232fc6db46d  libstdc++-v3/testsuite/27_io/headers/fstream/synopsis.cc
! 0fae57397607e2c84ed3428df64e2bf0  libstdc++-v3/testsuite/27_io/headers/fstream/types_std.cc
! 5e76251d31a9fac3343f02dfbfc62d9b  libstdc++-v3/testsuite/27_io/headers/iomanip/synopsis.cc
! 0d7f5e52b483404c02b3c794738231b3  libstdc++-v3/testsuite/27_io/headers/ios/synopsis.cc
! ec05ba8627c9370cf6bfbd523b7a75fc  libstdc++-v3/testsuite/27_io/headers/ios/types_std.cc
  3837f045941d29f32c4168983a309941  libstdc++-v3/testsuite/27_io/headers/iosfwd/synopsis.cc
  16eebae0b45ab9320a5df94e03dfa4e7  libstdc++-v3/testsuite/27_io/headers/iosfwd/types.cc
! badd7aa716938b9a669eb37591b6661d  libstdc++-v3/testsuite/27_io/headers/iostream/synopsis.cc
! d4450bf67ef8de8d510faff4b5bc2fd7  libstdc++-v3/testsuite/27_io/headers/iostream/types_std.cc
! a5d4e6fc55b15bb3b4446dccfa21ea2a  libstdc++-v3/testsuite/27_io/headers/istream/synopsis.cc
! 9954782adb514968c49e12fc9fa38607  libstdc++-v3/testsuite/27_io/headers/istream/types_std.cc
! 383a77601fd26ffbe852c0ff3ec775ec  libstdc++-v3/testsuite/27_io/headers/ostream/synopsis.cc
! 7a654a1145558f502c1fb64aeea87803  libstdc++-v3/testsuite/27_io/headers/ostream/types_std.cc
! 07b4b6124ade937c3079097108b7729f  libstdc++-v3/testsuite/27_io/headers/sstream/synopsis.cc
! 052f583b7b4fc392bb9ceb7e43a14cb8  libstdc++-v3/testsuite/27_io/headers/sstream/types_std.cc
! 0b7f672e220eb186c3983a01a6c14b57  libstdc++-v3/testsuite/27_io/headers/streambuf/synopsis.cc
! 7a946c8a03629d2c6a475184f3b3add0  libstdc++-v3/testsuite/27_io/headers/streambuf/types_std.cc
! 9fe37969b2fd59d950c35701c2c16f90  libstdc++-v3/testsuite/27_io/ios_base/callbacks/1.cc
! f706bd6c77239da59cbf20344f06e22a  libstdc++-v3/testsuite/27_io/ios_base/cons/assign_neg.cc
! f6ef117aaba6f94ac85da73a1bf30476  libstdc++-v3/testsuite/27_io/ios_base/cons/copy_neg.cc
! 5d26ffd3c875195c6ef25632f2de8447  libstdc++-v3/testsuite/27_io/ios_base/failure/cons_virtual_derivation.cc
! 5ef4b099c4f8084bd96962084b7bdf4d  libstdc++-v3/testsuite/27_io/ios_base/failure/cxx11.cc
! b36e11dfa0c01776c1e7ab3c0959ae4c  libstdc++-v3/testsuite/27_io/ios_base/failure/dual_abi.cc
! de32b6757c945b9f220add1142bc47e6  libstdc++-v3/testsuite/27_io/ios_base/failure/error_code.cc
! a40b8a1bbeac85fe3775b5c7da638c6c  libstdc++-v3/testsuite/27_io/ios_base/failure/what-1.cc
! 912d0b928d4ff8efce42f57bb4e0f8fe  libstdc++-v3/testsuite/27_io/ios_base/failure/what-2.cc
! 6fe116b48eb9c8dad7395518683db69a  libstdc++-v3/testsuite/27_io/ios_base/failure/what-3.cc
! 09b2b986ddcaa1933020562ea0c6bbc4  libstdc++-v3/testsuite/27_io/ios_base/failure/what-big.cc
! 2119d93147fecf9c3bd1e0e9cd5dd195  libstdc++-v3/testsuite/27_io/ios_base/state/1.cc
! 7e42c1d3c4af35ea6a10b94e265d31b5  libstdc++-v3/testsuite/27_io/ios_base/storage/1.cc
! 5317b1ec46a59286c37bad1cc6fe1eda  libstdc++-v3/testsuite/27_io/ios_base/storage/11584.cc
! ceeae3a7cfa67f9c3fc7f2f068419f94  libstdc++-v3/testsuite/27_io/ios_base/storage/2.cc
! 8ddf84317137a906dddd13d4c4a9bb8d  libstdc++-v3/testsuite/27_io/ios_base/storage/3.cc
! 9d2906f030bb6f9dd73cf64ae5ea83c2  libstdc++-v3/testsuite/27_io/ios_base/storage/68197.cc
! d474bf0354a95a9aa7eb56fb8a85e846  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/1.cc
! 4a99b69a5f725a91a12b4105a3638ffc  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/16959.cc
! e284ebaa1d2fc408e6b990fe9bd53fe5  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/2.cc
! e92ac2c557c76cbffe5671d6efaadb3c  libstdc++-v3/testsuite/27_io/ios_base/sync_with_stdio/9523.cc
! 68c9f2c325299bd3587633827db8feb3  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/bitmask_operators.cc
! 853ea062e38523c7d2c80843d74707e9  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/case_label.cc
! db9311939a4c18b4f20fe776b5a409d5  libstdc++-v3/testsuite/27_io/ios_base/types/fmtflags/constexpr_operators.cc
! 05cd194a684c13c51ec8b520b4d0db61  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/bitmask_operators.cc
! 728bd50d65287f147b8ed783242cba03  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/case_label.cc
! dd154256cdac263d91fe254bedbe71c5  libstdc++-v3/testsuite/27_io/ios_base/types/iostate/constexpr_operators.cc
! 7de77834d288b853b6a84cd1f26d031f  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/bitmask_operators.cc
! 49b2c0c5d12a520c3a131f4a53522cb2  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/case_label.cc
! c77e47ea6af40295832536d4f384ffc4  libstdc++-v3/testsuite/27_io/ios_base/types/openmode/constexpr_operators.cc
! 5dad4e0271322f505f9533bfbd06f261  libstdc++-v3/testsuite/27_io/ios_base/types/seekdir/case_label.cc
! 864e2e7d76210772b4d7cf47c413bd08  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/1.cc
! 5246772a2b67e311d898b8167faee4bb  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/char/2.cc
! 55849f4a751ffc2069a9811a25af9f81  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/1.cc
! 6888a77159b5fb4f3e5f7ec327bb8a71  libstdc++-v3/testsuite/27_io/manipulators/adjustfield/wchar_t/2.cc
! 27571825c4a661f35b7cf4082c6e69fa  libstdc++-v3/testsuite/27_io/manipulators/basefield/char/1.cc
! 68ffbf18dd0bc65add92302ce689435d  libstdc++-v3/testsuite/27_io/manipulators/basefield/wchar_t/1.cc
! 0b2d5767905786d2c052fa3caf1baa26  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/1.cc
! ac25223683bd9bfbeb0c713014c9f177  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/char/51288.cc
! 49495b3830d9d41d5dc6a1026ef360c4  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/1.cc
! 96adade7e7bc0bfae9d2472877564f7d  libstdc++-v3/testsuite/27_io/manipulators/extended/get_money/wchar_t/51288.cc
! 0686394db480badce555ad6ba3b8b4c7  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/1.cc
! a8ad0894e95c6f38f03d12a427ad0eb8  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/char/2.cc
! 77a741f349cde3730ed5f145b8b0b25c  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/1.cc
! c8f5b51f87a86fe2a5dc6ec47471f8fa  libstdc++-v3/testsuite/27_io/manipulators/extended/get_time/wchar_t/2.cc
! 4ee8c021c3d31874263d6699143c55db  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/1.cc
! 93d3bcf1cce225aae491bbeb9c752fa6  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/char/51288.cc
! d36cce5a6bd2686d389fafec3dad89f2  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/1.cc
! b3235712cf78da1b9cdb4ae5ad075f00  libstdc++-v3/testsuite/27_io/manipulators/extended/put_money/wchar_t/51288.cc
! 4e167ba4d53ee8a90ba322a4631ab4a8  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/1.cc
! 4020da3df83bc6382925f135f125e03f  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/char/2.cc
! d3bb9db09caa10fc75458593131265a6  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/1.cc
! aa9ce3e7fc9a8fc93fa4f269bc01beca  libstdc++-v3/testsuite/27_io/manipulators/extended/put_time/wchar_t/2.cc
! 7ac35a2a2f0e9e2f8b7f87afda933b9a  libstdc++-v3/testsuite/27_io/manipulators/standard/char/1.cc
! 7058c6b18ea394cd7820f2e623032f9a  libstdc++-v3/testsuite/27_io/manipulators/standard/char/2.cc
! 7fa6e8fff68ec9afcab5ce5f3649e529  libstdc++-v3/testsuite/27_io/manipulators/standard/char/60270.cc
! 6fdc858c25f791d638011bd9d4d523c3  libstdc++-v3/testsuite/27_io/manipulators/standard/char/dr2344.cc
! e6d16fd6a5d74657d5f87a96a8c203db  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted.cc
! d8b481bf0427f2eda05e292a91618109  libstdc++-v3/testsuite/27_io/manipulators/standard/char/quoted_sv.cc
! 27dffbe93e54b93f02f43df85362b530  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/1.cc
! d702e9f477b4777771cc49275b3c52a6  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/2.cc
! 940c5ff17db9a5914a2359fa197c7c03  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/dr2344.cc
! 02808db95e7e616d5c93744ac30fa03f  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted.cc
! dcdfadc4575bf566afb87351d2d6785b  libstdc++-v3/testsuite/27_io/manipulators/standard/wchar_t/quoted_sv.cc
! 990fb7a43e100c7b2fcb85f79e4dd56f  libstdc++-v3/testsuite/27_io/objects/char/1.cc
! ec69cbc9c8c7c9241c5cfee548cedcb3  libstdc++-v3/testsuite/27_io/objects/char/10.cc
! acf83cea024e3abfe315cfcefa7da502  libstdc++-v3/testsuite/27_io/objects/char/12048-1.cc
! 8fd2c7b430f7a6bf2a0465ab47fb352f  libstdc++-v3/testsuite/27_io/objects/char/12048-2.cc
! b301e2e3db8372b168b854f5e1bb9058  libstdc++-v3/testsuite/27_io/objects/char/12048-3.cc
! 0abf709d86e49e94a9afd45fb3712ee7  libstdc++-v3/testsuite/27_io/objects/char/12048-4.cc
! ff8780a4567d8e7d8f7f9e93e379445e  libstdc++-v3/testsuite/27_io/objects/char/12048-5.cc
! 79ecd86c188e8d5540bc6c9850e1b946  libstdc++-v3/testsuite/27_io/objects/char/2.cc
! 21cd69be2e74e82e8ed9037e4ce5d06e  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/char/2523-1_xin.in
! 344ca1bf488cd5a63450ec65277e57a5  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/char/2523-2_xin.in
! 7652bdcffc8f32471bc7396ccf693140  libstdc++-v3/testsuite/27_io/objects/char/3045.cc
! 4fd47b26a69bf1b633ebac23ea3b0c4c  libstdc++-v3/testsuite/27_io/objects/char/3647.cc
! 9186084e1e5aa209c3b2c7e9a91de3a6  libstdc++-v3/testsuite/27_io/objects/char/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/char/3_xin.in
! 7b55cf412018d9fc7ce68deaf44f9ebe  libstdc++-v3/testsuite/27_io/objects/char/41037.cc
! 7224b25fffb1080bacc32806a326d2ea  libstdc++-v3/testsuite/27_io/objects/char/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/char/4_xin.in
! 65c51e1ce99fe6962bbe501e7e35c5b9  libstdc++-v3/testsuite/27_io/objects/char/5.cc
! fa0e5b12da7b4fc93251a53292cc94d4  libstdc++-v3/testsuite/27_io/objects/char/5268.cc
! 8f0ba5b680ba72c1a51f438505cfab85  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.cc
  81dc9bdb52d04dc20036dbd8313ed055  libstdc++-v3/testsuite/27_io/objects/char/5280_xin.in
! ecef787bda5a36cda90a75c2aaccfe52  libstdc++-v3/testsuite/27_io/objects/char/6.cc
! 3dcfb86be02c4d084b23a6edf7911248  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/char/6548_xin.in
! 0b7ecf3e42742010836fe581b20fe124  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/char/6648-1_xin.in
! 09065e74746a56d5b499a7285ea9d9ac  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/char/6648-2_xin.in
! 7b2c74c9153c8ba009a6e78be71ee230  libstdc++-v3/testsuite/27_io/objects/char/7.cc
! bc8afb39e764984b6c9794ed76eb861a  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/char/7744_xin.in
! 8bd2bb73a9d6049aad44030ec6c8fe0e  libstdc++-v3/testsuite/27_io/objects/char/8.cc
! 2d44aa2f4f389e6b5f8ec9d459db5d8b  libstdc++-v3/testsuite/27_io/objects/char/9.cc
! 875c7224c298dd605ddfdc8c7a5dcfad  libstdc++-v3/testsuite/27_io/objects/char/9661-1.cc
! faca64e297142683c7b948813a47bb90  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/char/9661-2_xin.in
! 8199815ab2e9297216c1bb84ed59f3ce  libstdc++-v3/testsuite/27_io/objects/char/dr455.cc
! 308a1901ff9e217b76283cd5457d79a3  libstdc++-v3/testsuite/27_io/objects/wchar_t/1.cc
! 2aa8b8235c40cf43bc1ab22be805cc26  libstdc++-v3/testsuite/27_io/objects/wchar_t/10.cc
! 5d51b6804db0a896e31dd2b9ae225423  libstdc++-v3/testsuite/27_io/objects/wchar_t/11.cc
! 5378d1d7abd98e52335b2cafea8eed0a  libstdc++-v3/testsuite/27_io/objects/wchar_t/12.cc
! 4946fa4c0eb7d0bf81e25877cfc5219d  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-1.cc
! a1f472f0c72a3fcef941cfb060a4bb77  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-2.cc
! bfdc22d5379cd18afb992419c2eba17c  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-3.cc
! f8d5f902c9b4926dd2a3c48b4e1f311e  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-4.cc
! bff66c006f13290c0f3b963de18143b4  libstdc++-v3/testsuite/27_io/objects/wchar_t/12048-5.cc
! 461b26edbed4e48bb982fcd98bb19c69  libstdc++-v3/testsuite/27_io/objects/wchar_t/13.cc
! 77cd2138ed9bbb3bfcbd2d17e7e543e1  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.cc
  d577273ff885c3f84dadb8578bb41399  libstdc++-v3/testsuite/27_io/objects/wchar_t/13582-1_xin.in
! 27a842c6eab7fb4404687ce471e04d30  libstdc++-v3/testsuite/27_io/objects/wchar_t/2.cc
! 99ff7aba49fc831f1500ef0885b54959  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.cc
  8c1b578bb2722053c950f2cf943baf83  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-1_xin.in
! c96b638c0afdb1582c1843f6a24f2f24  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.cc
  daa7a5fffcba8b5ec5ca1a8de7734416  libstdc++-v3/testsuite/27_io/objects/wchar_t/2523-2_xin.in
! 066f59e3d6b405aa81d15de41c19f61c  libstdc++-v3/testsuite/27_io/objects/wchar_t/3045.cc
! 743a85c3baf13f6afe26906b1cafa640  libstdc++-v3/testsuite/27_io/objects/wchar_t/3647.cc
! d427c49b0b0afaa2c1d2654a3a62224a  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/3_xin.in
! 70a0d78c99ae220d1181620c3f23ea52  libstdc++-v3/testsuite/27_io/objects/wchar_t/41037.cc
! 18d35e229a9ff632642a6c6ffdb10c4e  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.cc
  68b329da9893e34099c7d8ad5cb9c940  libstdc++-v3/testsuite/27_io/objects/wchar_t/4_xin.in
! 09350c7b9c4b9c5ee8d0c5254463e3d3  libstdc++-v3/testsuite/27_io/objects/wchar_t/5.cc
! 4f564b0e2ff565c35ea9a6a78ce4e006  libstdc++-v3/testsuite/27_io/objects/wchar_t/5268.cc
! 086c1ac1fb1e8ad2eb004b54b2a74f63  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.cc
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/27_io/objects/wchar_t/5280_xin.in
! d98f178a89a7ff807037e13db8ee6905  libstdc++-v3/testsuite/27_io/objects/wchar_t/6.cc
! 5309cfb056a669ab30c7a149b13a083d  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.cc
  d8e8fca2dc0f896fd7cb4cb0031ba249  libstdc++-v3/testsuite/27_io/objects/wchar_t/6548_xin.in
! 67caa576e53ecc3ede93e4e896b5f744  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.cc
  069d0b68d99275bb4412e90bd9d5c966  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-1_xin.in
! 7aac8170ec61a14a206d08c641cb81d1  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.cc
  6b76e6feddcc145dc3499d8d123d9da7  libstdc++-v3/testsuite/27_io/objects/wchar_t/6648-2_xin.in
! 526408ea693c508e6e5da66c939d55e5  libstdc++-v3/testsuite/27_io/objects/wchar_t/7.cc
! 67cf41c49df3b28398a6aee71ffbc3b8  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.cc
  0bee89b07a248e27c83fc3d5951213c1  libstdc++-v3/testsuite/27_io/objects/wchar_t/7744_xin.in
! e0a2afcf2bad49ad6d7a006ff32a800b  libstdc++-v3/testsuite/27_io/objects/wchar_t/8.cc
! 36c38fdbdb5c88f6e00e5594e9a773f5  libstdc++-v3/testsuite/27_io/objects/wchar_t/9520.cc
! 0de66b638a53f7b5540b7a02bcda6e91  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-1.cc
! b963d915f38cdaba1fc28d9a91841634  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.cc
  33ab658c3d687d1d73a0e92a596f725e  libstdc++-v3/testsuite/27_io/objects/wchar_t/9661-2_xin.in
! c2845d055df3a3c9eec7f34915b6f63f  libstdc++-v3/testsuite/27_io/objects/wchar_t/9662.cc
! 8692377c825f5c865832d97dcb1c75c3  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.cc
  b715c45a6677f269807dab0bbcf0ee1d  libstdc++-v3/testsuite/27_io/objects/wchar_t/9_xin.in
! 21bf0a355267bc047924f3412f3dd8ee  libstdc++-v3/testsuite/27_io/objects/wchar_t/dr455.cc
! 4efed1789a62f6991adff97279bcd1f4  libstdc++-v3/testsuite/27_io/rvalue_streams-2.cc
! d1dfe55fd3a5885b95cd86dc0498bee0  libstdc++-v3/testsuite/27_io/rvalue_streams.cc
  fe40135327d86460d13b734f54db39ec  libstdc++-v3/testsuite/27_io/spanstream/1.cc
  44feabe2b97157af832bd4b647727182  libstdc++-v3/testsuite/27_io/spanstream/2.cc
! 54572175dfa1a1c5dd980cde76230006  libstdc++-v3/testsuite/27_io/spanstream/version.cc
! 900d1a060a2d7ff7077bef529057baa5  libstdc++-v3/testsuite/27_io/types/1.cc
! 12d00547ea05cdb0aa00f444814b4b79  libstdc++-v3/testsuite/27_io/types/2.cc
! 8f10a32b825f351ef20177f7f7bfde26  libstdc++-v3/testsuite/27_io/types/3.cc
! 9b752080c89af82b1227755787aa67f9  libstdc++-v3/testsuite/27_io/types/4.cc
! 2311cea628cce5b052734c24d5a5cae9  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/107376.cc
! 99308e5cc7cf2e6e83459c0586733bb6  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/awk/cstring_01.cc
! def61be5cb7cd2d58c403fbaf26e8ab7  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/empty_range.cc
! 16e00c660d9077b148750b122aa0a168  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_01.cc
! edebfd9c30920b2e47e4ecb689c2572c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_00_03.cc
! d3177977b809d974e0092910628afe27  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_01_03.cc
! d6f8a7ff53c1d010bf0a1002a5469d16  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/basic/string_range_02_03.cc
! 63868ea878b595d52fb3f8e3b4d23f5b  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/cstring_bracket_01.cc
! 64c5767e82061103f1f0c52732978d52  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/dr2329_neg.cc
! bf6b1ef0be947e3e77740a828d14577e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/53622.cc
! 4e119433288a9834638b7b53321fdea5  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/57173.cc
! 293938c1efdad0deeca479952b8c83af  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/58576.cc
! f19fc800e09f6023303f55bcbc0ff5f6  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/61601.cc
! 6b1ded049facaa0497dfe3f1398e65c5  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/68863.cc
! 7de41fc21ffa137340e54f4735f22322  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/anymatcher.cc
! abbb5c4a2d68d4e288ac8997198eb9a5  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/backref.cc
! c3bebed2811c2a6243f9cf71158f2370  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/empty_range.cc
! 9a925bc656adb35b738be48b92131ea1  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/emptygroup.cc
! 65302ceb22818b991b95e0bb1f56ed47  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/hex.cc
! acb6297829b89cc51a11d2be5b225056  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/quoted_char.cc
! a9132db470a14eb7e2e0dafe659ca41e  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/char/ungreedy.cc
! 9ef212152644e81c360d2164a35e6165  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/63199.cc
! 70d985cfa0807fde67a37abb2af43385  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/anymatcher.cc
! 4fb6c38d7f204481e1715979923117cf  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/cjk_match.cc
! 2d20035fa8b9a99bdee743d2e043cdb2  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/ecma/wchar_t/hex.cc
! aa502063da53134ac6678684ce8720d9  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_plus.cc
! a9d5b8e029d5c8d6b2d218b19199db37  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_questionmark.cc
! 7de98a1e5ef746308c4a466e51e7ee17  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/cstring_range.cc
! 038bce7126f936b0441bde80f393e62c  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_any.cc
! 0d22cc8a01e213d927ca613dd4ff1c12  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_00_03.cc
! 78270654f0611e0bb84ea65ebe690081  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_01_03.cc
! 5e3b413bb20aa7eb8998742f63af2a81  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/string_range_02_03.cc
! 9afdc1b06b1e51486f815a95833c24e6  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/extended/wstring_locale.cc
  738353c203eb8b056c97aefd696b8662  libstdc++-v3/testsuite/28_regex/algorithms/regex_match/multiline.cc
  2b65ead41cca6c486af5b12cb9181709  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/103664.cc
! 3b8f9fdd1c20802a8450711be3e545ec  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/51711.cc
! ba6ba3391be864dd1eae88ed20201864  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/basic_replace.cc
! db8e62954cc51426c76f1e0c07859262  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/dr2213.cc
! ee9c8fc14df7a72b35e8c8d337c00393  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/char/pr83601.cc
! 6897a5ad926ed46ad3ce4e5e2778c0b8  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/51711.cc
! e56a6e437fb012ae6e2fac902f23691e  libstdc++-v3/testsuite/28_regex/algorithms/regex_replace/wchar_t/pr83601.cc
! b8de687a1921d554039080edb93b3222  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61424.cc
! 22b5217d65a7f86ea1775840e4c127a0  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/61720.cc
! bc707db4ed975efa199db3cea4ca98e8  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/basic/string_01.cc
! 0b73855cc64e571cf92d026badf08c45  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/dr2332_neg.cc
! 450325c0f679e53342fd709515dc480a  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/assertion.cc
! fa38f55a780c1f90582968d4e19ec9d0  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/flags.cc
! dbc6734c0f5cbb5fd8d2360906e798c2  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/greedy.cc
! f4616b64e14186e8384a28d971e93b7e  libstdc++-v3/testsuite/28_regex/algorithms/regex_search/ecma/string_01.cc
! 5a7641749deafb9050db1a58a28b53ec  libstdc++-v3/testsuite/28_regex/basic_regex/106607.cc
  be5036bc868f3f3488b30d40a412c9c5  libstdc++-v3/testsuite/28_regex/basic_regex/84110.cc
! 52fa987f8405358bd13ae12cf9948543  libstdc++-v3/testsuite/28_regex/basic_regex/85098.cc
! f222a922624415205277f66f07649151  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring.cc
! d889d18d8827aef72e52d93064dac41a  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/cstring_op.cc
! 2df49617c1c40820134fb6953e9a9d7e  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/lwg3296.cc
! fb42df6f1161ec548396b8f01bb6edff  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/moveable.cc
! 858cdee035a773980bde56fc08a6e0db  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/pstring.cc
! 7f1ee6930ecc528b9385f7ab5df89ab8  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/range.cc
! fa8f4d6d931b2bf58f92475d4ecfcadc  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string.cc
! a43cbbf46084c52ee347dd0b0d1f4f2d  libstdc++-v3/testsuite/28_regex/basic_regex/assign/char/string_op.cc
  195cadd08b447221da1077de685740f9  libstdc++-v3/testsuite/28_regex/basic_regex/assign/exception_safety.cc
! ab99ac4a34e6ee4a58b2928d9af22f80  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring.cc
! 087675162c12629519567b3d56d13812  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/cstring_op.cc
! 25c30fc8975e935a63155559e89033b8  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/lwg3296.cc
! 09a9a4b6add3ba47552df17bb4df06ca  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/pstring.cc
! 876a469d3a3da9c9567bf490d7507cb1  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/range.cc
! 1c14d5c7ffeebbb09bda6b9906700433  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string.cc
! df8592e9fb24a69efc76d6552d97dc08  libstdc++-v3/testsuite/28_regex/basic_regex/assign/wchar_t/string_op.cc
! 776ad556b963dccd1a84af2fc00bb2fd  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/47724.cc
! 205de3cff2bf1e76cf4c5974108c3a55  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/83598.cc
! 7752c16f7db398fd05254e6f5757be50  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/cstring.cc
! cd65d07d644bbb80bbbbebae05bc3edb  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/default.cc
! afa5dfaf75451f05fa64f03a62a4a833  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/iter.cc
! 69dddb31e3d833a2d1c79871be5f2bb0  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_char.cc
! ab3e834474ee64a2f42bbaeefa42395e  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/pstring_wchar_t.cc
! e01ec70844360b57a9015eeba44c03e4  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/raw_string.cc
! 78fa1fc718f1b4c1a8295769552d78fd  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/basic/string_range_01_02_03.cc
! cbd0c9500e25d3f66fba5f3fcb739017  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring.cc
! 974fec54777fe3e75eeeaeeb3a2b2131  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_awk.cc
! 2488171a6846952dc3e377120500f432  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_ecma.cc
! d67e8759783bdb5695586ffbfea21412  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_egrep.cc
! 72a22978b12429a83bb704c6928bf487  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/cstring_grep.cc
! 28dac2791ba2adb0ed9c0e132f0bdf17  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/default.cc
  9c80b6a78eb2b9bd9362289c681a9cfb  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/other.cc
! 60deb33f1f333ed2779c3cde34589db0  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/char/range.cc
! 757d05fbb7686bbdcc5f2f8896e0a5ed  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/copy_char.cc
! f9d642f08a9293d886c68e549163ab93  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/deduction.cc
! 81ead07665b0389960b032a7c9b259cd  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/cstring.cc
! a770f5b101a22c0fccd37a6b9f17ea8c  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/extended/string_range_01_02_03.cc
  2e401c1bf8aabcb389e6eb25f1356cc9  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/grammar.cc
! 3a74889b6a223508db855c8f6fcf9751  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/move_char.cc
! 276c61830762a723e334085bc089bd28  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_char.cc
! 833feea043ea99e5905c9d702f39d196  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/string_wchar_t.cc
! 7d839724a885d14fa2b0b319b8f65c09  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/cstring.cc
! 167b6a4b1d6518e1710de1a36da6f15d  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/default.cc
! caab65d5d5afac987468c06453214d3f  libstdc++-v3/testsuite/28_regex/basic_regex/ctors/wchar_t/range.cc
! c4a338f0aafded25a285ae0f93aee908  libstdc++-v3/testsuite/28_regex/basic_regex/imbue/string.cc
! cb175fdb25a8687c006e5d2af0d5c931  libstdc++-v3/testsuite/28_regex/basic_regex/multiple_quantifiers.cc
! 904b45e1e1322123eb69c0692977c31d  libstdc++-v3/testsuite/28_regex/basic_regex/requirements/constexpr_data.cc
! 738c53bd0c6c281008acb1a77aaa38dd  libstdc++-v3/testsuite/28_regex/constants/constexpr.cc
! 152083f8bc9df246ec146ccdbae11585  libstdc++-v3/testsuite/28_regex/constants/error_type.cc
! 4aaa50e3516feb90679dcb097c320314  libstdc++-v3/testsuite/28_regex/constants/match_flag_type.cc
! a377dee637a103a0c7da541a4c6bd03d  libstdc++-v3/testsuite/28_regex/constants/syntax_option_type.cc
! 52233bb72f8a3513ff1de211bd0f4d37  libstdc++-v3/testsuite/28_regex/headers/regex/std_c++0x_neg.cc
! 0561c146379e6d8e1911a9daf90adc52  libstdc++-v3/testsuite/28_regex/init-list.cc
! 5507dbdc22edf86111013ac9a2b242af  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/64140.cc
! f62df2102c8bf8bdc50010bf2cfc28d6  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_01.cc
! cfb58a604fd097834633c4d3e3155324  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/char/string_position_01.cc
! de83599c5fc2cde887d859e41c1b9ae6  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/default.cc
! f48d2ff95890051504e05364e9a99ec8  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/char/dr2332_neg.cc
! ba5c8d1c184391bce632b943903058c5  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/ctors/wchar_t/default.cc
! 0a3bdd5e53f0d0694d433c2c81879b6e  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/lwg3719.cc
! b9141b95278eb063ac4a8012aa877f2d  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/typedefs.cc
! 02a20a1295e3040ff8f283815b8383f0  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_01.cc
! a35fc24f08dedc2abe18587da76d8517  libstdc++-v3/testsuite/28_regex/iterators/regex_iterator/wchar_t/string_02.cc
! 016a552c6019eeb960dc866b2ef354bf  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/64303.cc
! 69e5cda1f0be315ab091672ccc48feb3  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/char/string_01.cc
! 99c10f6bc3e73ffa113065ee15399186  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/default.cc
! cef2bac66bb24eafff7c5e6a4b8d006f  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/char/dr2332_neg.cc
! 4d06dfd88414df10148f90698fc4812d  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/ctors/wchar_t/default.cc
! fb122acef0bbf0fc9a70c958cb5bc819  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/lwg3719.cc
! 9474ab00213c114397ec87dd396a87c3  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/typedefs.cc
! 1e472d2a0b685e8b63065a054ba5e4fd  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/string_01.cc
! 165979500099ba208200468fc4b26526  libstdc++-v3/testsuite/28_regex/iterators/regex_token_iterator/wchar_t/wstring_02.cc
  e50868497a6eac9c6a7e389f3cda11ef  libstdc++-v3/testsuite/28_regex/match_results/102667.cc
! ba98ba8993963b2cd9174ffa3d4a6bd7  libstdc++-v3/testsuite/28_regex/match_results/94627.cc
! ae3c69a2af41b63301190a3e8902a808  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/alloc.cc
! 9f23f50a8ed9a5001695ddff75f8318d  libstdc++-v3/testsuite/28_regex/match_results/ctors/char/default.cc
! c4f584955d8dd63673baee13f148286c  libstdc++-v3/testsuite/28_regex/match_results/ctors/wchar_t/default.cc
! 47bcbfce41476b778cd3da7a12e71fcf  libstdc++-v3/testsuite/28_regex/match_results/format.cc
! 0f338d28321b3ddf08f40792a38f8886  libstdc++-v3/testsuite/28_regex/match_results/out_of_range_submatches.cc
! 0af1b8a486166b70fde29bf6eeb43845  libstdc++-v3/testsuite/28_regex/match_results/pmr_typedefs.cc
! 787b7b6a739b71e53648ff2d8b60b055  libstdc++-v3/testsuite/28_regex/match_results/swap.cc
! ffde007c6938bc8cec1639560e1d558a  libstdc++-v3/testsuite/28_regex/match_results/typedefs.cc
! b3592a04373d2aba0ab067b22e4d21e7  libstdc++-v3/testsuite/28_regex/range_access.cc
! 2aec2ddce80eaa4ab845630e47e4ac06  libstdc++-v3/testsuite/28_regex/regex_error/base.cc
! 27cd8d506184650b1d8b65992457307d  libstdc++-v3/testsuite/28_regex/regex_error/regex_error.cc
! 366ac702b56bba428fc570f067d08310  libstdc++-v3/testsuite/28_regex/regression.cc
! e9b10ff8efc646eabf72fef859d601d9  libstdc++-v3/testsuite/28_regex/requirements/typedefs.cc
! 09bff016ca5654efbf2791a07b82fa32  libstdc++-v3/testsuite/28_regex/simple_c++11.cc
! f50e09064215940e5e82916365d568ff  libstdc++-v3/testsuite/28_regex/sub_match/cast_char.cc
! 07ddc4933ed5fbbf1cdb5328596e1445  libstdc++-v3/testsuite/28_regex/sub_match/cast_wchar_t.cc
! ba7c47e76e4c1d27713f9a985588697a  libstdc++-v3/testsuite/28_regex/sub_match/compare.cc
! 03ab7943fcf6ee4d4b664616522fde62  libstdc++-v3/testsuite/28_regex/sub_match/compare_c++20.cc
! 6f9f743d4b9fcb2854915e3a8a617e24  libstdc++-v3/testsuite/28_regex/sub_match/embedded_zeros_cmp.cc
! c603b8fb7aec5ae63924812dc1edf032  libstdc++-v3/testsuite/28_regex/sub_match/length.cc
! 491895502310c40d3c4fac8105f3662c  libstdc++-v3/testsuite/28_regex/sub_match/lwg3204.cc
! ec10e30afdbacf87bcd3810af3e74ffe  libstdc++-v3/testsuite/28_regex/sub_match/typedefs.cc
! 404dcfbc3b8a41674f638e61308bd59b  libstdc++-v3/testsuite/28_regex/traits/char/ctor.cc
! 86ea626f6cc0aba336fce42f1c31f91e  libstdc++-v3/testsuite/28_regex/traits/char/icase.cc
! a23c74f3155c08ed15b94ccef0110648  libstdc++-v3/testsuite/28_regex/traits/char/isctype.cc
! e65c86e35aa98d89af2d0d4821849d13  libstdc++-v3/testsuite/28_regex/traits/char/length.cc
! e0eaeb2070d51ed1a2fa6e0335ebae58  libstdc++-v3/testsuite/28_regex/traits/char/lookup_classname.cc
! f11d706b509d8544d627e0c42c82bcec  libstdc++-v3/testsuite/28_regex/traits/char/lookup_collatename.cc
! 7f45c98e5c6216d6c9043c6fee8abc77  libstdc++-v3/testsuite/28_regex/traits/char/transform.cc
! ec11d74cd5b5a85eeadfa2d29822974c  libstdc++-v3/testsuite/28_regex/traits/char/transform_primary.cc
! 1696d6bfc28dbb3578a1397e4c922ff0  libstdc++-v3/testsuite/28_regex/traits/char/translate.cc
! c229441a6b9412a411af92df8cb9fcff  libstdc++-v3/testsuite/28_regex/traits/char/translate_nocase.cc
! 0983ef4814bf100d6b95cc38d0623749  libstdc++-v3/testsuite/28_regex/traits/char/user_defined.cc
! 79995d5b106f992f1fd4ab711c7b206e  libstdc++-v3/testsuite/28_regex/traits/char/value.cc
! 93e01bdb645b166795c7c8ddb019a10b  libstdc++-v3/testsuite/28_regex/traits/wchar_t/ctor.cc
! a89c9f8cd50d68ecaf126b9858f7995b  libstdc++-v3/testsuite/28_regex/traits/wchar_t/isctype.cc
! 9384b252022c8d9da6684804800cdda0  libstdc++-v3/testsuite/28_regex/traits/wchar_t/length.cc
! cd5126f9c5ad6b8cb535bfd57cbe8b52  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_classname.cc
! cd3e4277112dedc21b28652e82be6e19  libstdc++-v3/testsuite/28_regex/traits/wchar_t/lookup_collatename.cc
! 1a5028cf454360f77c96426e858ccc00  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform.cc
! 7c2d4a83ca9ff19a609bc50bb7e23d5e  libstdc++-v3/testsuite/28_regex/traits/wchar_t/transform_primary.cc
! 063ffe93d88ee0d34eee4602aaff3059  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate.cc
! ca19e1aa05d042daa70d8056273a0365  libstdc++-v3/testsuite/28_regex/traits/wchar_t/translate_nocase.cc
! 5f37c2890889bd9914bc2c927ad6ab25  libstdc++-v3/testsuite/28_regex/traits/wchar_t/user_defined.cc
! 525e6f65e38780eb1e10717152c66da9  libstdc++-v3/testsuite/28_regex/traits/wchar_t/value.cc
! a0437ffd2251147e9eaea75fd0ed2725  libstdc++-v3/testsuite/29_atomics/atomic/60658.cc
! 0cc61c74f1d0b0d73e48a42e5227e48f  libstdc++-v3/testsuite/29_atomics/atomic/60695.cc
! 11febc4b27be85720e5c991a85d43891  libstdc++-v3/testsuite/29_atomics/atomic/62259.cc
! 1ec7c4740ccb77eb6dd43301102d1be1  libstdc++-v3/testsuite/29_atomics/atomic/64658.cc
! bb1893529216ccfd448782acac5863b8  libstdc++-v3/testsuite/29_atomics/atomic/65147.cc
! 8fb9419833f256eb9527c8a84d8e23e2  libstdc++-v3/testsuite/29_atomics/atomic/65913.cc
! f1800adc0fc13bc4af222b5b2c2667e7  libstdc++-v3/testsuite/29_atomics/atomic/69301.cc
! bac63bc83699602fe139dbfa683b9402  libstdc++-v3/testsuite/29_atomics/atomic/69769.cc
! fa7c4f369fca094c91b1defc0937aa75  libstdc++-v3/testsuite/29_atomics/atomic/70766.cc
! 546783f34bc4e159f0dde6b2f07be089  libstdc++-v3/testsuite/29_atomics/atomic/compare_exchange_padding.cc
! fc6d3820caef39ab514f64ef5ba6f4a3  libstdc++-v3/testsuite/29_atomics/atomic/cons/49445.cc
! bb4c8750d06e6cbcf2c116c8d2fdd3d1  libstdc++-v3/testsuite/29_atomics/atomic/cons/assign_neg.cc
! 79087b369afb5044402aed88e633298f  libstdc++-v3/testsuite/29_atomics/atomic/cons/constexpr.cc
! 609e231d71e19df297467442a3bb556e  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_list.cc
! 1c41272a2ddf74ee20eea5e6e0a80361  libstdc++-v3/testsuite/29_atomics/atomic/cons/copy_neg.cc
! 38a06c2593b607e31f11cec14f32feb9  libstdc++-v3/testsuite/29_atomics/atomic/cons/default.cc
! 145dd9b0c05cb08436356c84fd5bcb9b  libstdc++-v3/testsuite/29_atomics/atomic/cons/direct_list.cc
! 4251989d2e19682c01faed5c294409d4  libstdc++-v3/testsuite/29_atomics/atomic/cons/single_value.cc
! b3d7e6cfe8b8bd01758e4c07a4c28005  libstdc++-v3/testsuite/29_atomics/atomic/cons/user_pod.cc
! 13669ce9c3b9fc155b9c347927c5d6f9  libstdc++-v3/testsuite/29_atomics/atomic/cons/value_init.cc
! cbcc81eb663d244bc37286ed070abed1  libstdc++-v3/testsuite/29_atomics/atomic/is_always_lock_free.cc
! 1405fe779f482abe4dfd50e50b9f6d04  libstdc++-v3/testsuite/29_atomics/atomic/lock_free_aliases.cc
! b098b856e7a62fed0201c9aa38383951  libstdc++-v3/testsuite/29_atomics/atomic/lwg3220.cc
! 49a2da10533da4b97b0808d9c2d3476b  libstdc++-v3/testsuite/29_atomics/atomic/nonmembers.cc
! 4984e72a7e9e5b2604b5f175792732f6  libstdc++-v3/testsuite/29_atomics/atomic/operators/51811.cc
! 2e187cdda2c2f790f393d8d699b92fb7  libstdc++-v3/testsuite/29_atomics/atomic/operators/56011.cc
! ae840ccf0af6934dbbde738ec809e02f  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_assignment.cc
! a887400bb1e9f2b6ea05c843123dffa3  libstdc++-v3/testsuite/29_atomics/atomic/operators/integral_conversion.cc
! 4d40225805917ecbab6ad4fc04fbe293  libstdc++-v3/testsuite/29_atomics/atomic/operators/pointer_partial_void.cc
! 685fd3c2905d08a140af306a519828d6  libstdc++-v3/testsuite/29_atomics/atomic/requirements/base_classes.cc
! 396165438b8a4127ed17303af33b9805  libstdc++-v3/testsuite/29_atomics/atomic/requirements/compare_exchange_lowering.cc
! 325950efaaee2874f71eb8c19dd3bfe4  libstdc++-v3/testsuite/29_atomics/atomic/requirements/explicit_instantiation/1.cc
! 3884efa49f4fb2439133884c8c195478  libstdc++-v3/testsuite/29_atomics/atomic/requirements/typedefs.cc
! d96bcc0a78598ed793ff143f25a183cd  libstdc++-v3/testsuite/29_atomics/atomic/requirements/types_neg.cc
! 8332d787e8d046d4161b52f1a9bac432  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/1.cc
! ef205a3cdab3bfc44fb84b6b02ff9601  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/100334.cc
! 966de3089cb547ed08693d8cb66636e5  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/102994.cc
! c4c61c274e2c6ab8851f938bccf1530e  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/2.cc
! c9c5687b83d5e66a805ffe950cac83d5  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/bool.cc
! 3cd35f0fb4be1f9d955b300649eece97  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/generic.cc
! 2e708678e0222d474e226cf7e3e2480c  libstdc++-v3/testsuite/29_atomics/atomic/wait_notify/pointers.cc
! a481f362621516d6e7f08e7c27f9f0be  libstdc++-v3/testsuite/29_atomics/atomic_flag/clear/1.cc
! 64912eb65ab12d178201345f15f6d007  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/1.cc
! ade1e711ab9abf2c4deed333f3319a06  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/56012.cc
! 7f1c3cad47e3e3599b3aa70f611ef10f  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/aggregate.cc
! e02acd19680af8b02c79639a67fbe589  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/assign_neg.cc
! 31359feb76943d0b77ee31ee232aab33  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/copy_neg.cc
! 91de152c96e55b31684845b480bf75a6  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/default.cc
! d65584f859fd3f5d44fd0ea0eef8521a  libstdc++-v3/testsuite/29_atomics/atomic_flag/cons/value_init.cc
! a3996d054f45a5d39813fa14a1913062  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/standard_layout.cc
! 9b717a09a21802342a6ffa37174854a9  libstdc++-v3/testsuite/29_atomics/atomic_flag/requirements/trivial.cc
! 8a4149d17511a47d1dd7ad18c9a940df  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/explicit.cc
! 6518d104b0a1540997f3363ef444f78b  libstdc++-v3/testsuite/29_atomics/atomic_flag/test/implicit.cc
! a7e842dc57d00f08640205c0afdf1ef0  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit-hle.cc
! 70c717ede6f035458e5fe901c2ca036e  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/explicit.cc
! 70c717ede6f035458e5fe901c2ca036e  libstdc++-v3/testsuite/29_atomics/atomic_flag/test_and_set/implicit.cc
! ba055235b4019b20e51a055808cd5185  libstdc++-v3/testsuite/29_atomics/atomic_flag/wait_notify/1.cc
! 4bcf4eb632a05014b615f94fc21a8b1e  libstdc++-v3/testsuite/29_atomics/atomic_float/1.cc
! 468d28b2af26b209bc54a51ab61651e8  libstdc++-v3/testsuite/29_atomics/atomic_float/95282.cc
! f4bf6e41d3315cb24f0f3f54aa7fab2d  libstdc++-v3/testsuite/29_atomics/atomic_float/requirements.cc
! 86adafba8fcc53fcf11ad93ba1567b43  libstdc++-v3/testsuite/29_atomics/atomic_float/requirements_cxx23.cc
! 5953dc5c5d12c38e65115bb78350edb6  libstdc++-v3/testsuite/29_atomics/atomic_float/value_init.cc
! e88e2a7e86fbab56f8131d3b1d7a5965  libstdc++-v3/testsuite/29_atomics/atomic_float/wait_notify.cc
! 973ac4e1dddb4df7b2741790d2116e12  libstdc++-v3/testsuite/29_atomics/atomic_integral/60940.cc
! c12f4d2f7bf992fa705068b8c88fdd16  libstdc++-v3/testsuite/29_atomics/atomic_integral/65147.cc
! 203869e1aca18fc2d01ac78c0818162e  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/assign_neg.cc
! a57d62b54106add4ce5f78f9b5901b3e  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/constexpr.cc
! 7a13e3f2b6f5cc5f7887f17d50ae2c3c  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_list.cc
! 9854d7b3ef012233b67dfaa40a09461b  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/copy_neg.cc
! 32c002f1f7663b0d110b8d76fd958bcd  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/default.cc
! 13f22896a0868af4c59b25e209a40762  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/direct_list.cc
! 3386f4a287cd39f5dcb21f016448fb7a  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/single_value.cc
! a2723c5c19b1b7f69742051c26cd873f  libstdc++-v3/testsuite/29_atomics/atomic_integral/cons/value_init.cc
! d02c9a98e792a4c791cc5a80f72372a7  libstdc++-v3/testsuite/29_atomics/atomic_integral/is_always_lock_free.cc
! 37d61df3cb659fa4a996968f22f05dbf  libstdc++-v3/testsuite/29_atomics/atomic_integral/nonmembers.cc
! c8087fda6e1c29a30a26d21be01b9589  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise.cc
! 55c0702f57ccbd329c11e713b5b26ccb  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/bitwise_neg.cc
! 5830e14e6bf4dc3059291b072316cf8e  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement.cc
! 2e573630ca8e5b62279c7a1653b061dc  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/decrement_neg.cc
! f69f133908f507fbd2530f48eac95511  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment.cc
! 63c5321a69f2ccdf7ec2e98303a764c3  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/increment_neg.cc
! 344f8151bf31e1a9eb9df8290405f1dd  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_assignment.cc
! dba5c3315f2fbdc692a08cf8c0787753  libstdc++-v3/testsuite/29_atomics/atomic_integral/operators/integral_conversion.cc
! cad933dc6b8d28e8f17d1aa09d35416b  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/standard_layout.cc
! a302b840589967dccba2f05e0a5ee9a7  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/trivial.cc
! d7a5877c1aef09d115633f941ef5ca14  libstdc++-v3/testsuite/29_atomics/atomic_integral/requirements/typedefs.cc
! 412190e554579a434cafd4a213125119  libstdc++-v3/testsuite/29_atomics/atomic_integral/wait_notify.cc
! 5ee3f4d73ee435a85ab465063c47674c  libstdc++-v3/testsuite/29_atomics/atomic_ref/compare_exchange_padding.cc
! 5810f61a2ac185ef5f7a713d103bd3cc  libstdc++-v3/testsuite/29_atomics/atomic_ref/deduction.cc
! 52249e8886c8bb5b8296790eb58868bf  libstdc++-v3/testsuite/29_atomics/atomic_ref/float.cc
! 8f49986e56627fbfd4c35c35fab2db46  libstdc++-v3/testsuite/29_atomics/atomic_ref/generic.cc
! 1a4fb50cf97e848d6a245df8db7c57ba  libstdc++-v3/testsuite/29_atomics/atomic_ref/integral.cc
! e57f2e6f9ad1caa6f0ee98233fe4f403  libstdc++-v3/testsuite/29_atomics/atomic_ref/pointer.cc
! e1136a1bde5040c5511cbef83b6780f6  libstdc++-v3/testsuite/29_atomics/atomic_ref/requirements.cc
! e23b2883804b35ac5891e75b0a975de3  libstdc++-v3/testsuite/29_atomics/atomic_ref/wait_notify.cc
! 931d165ceeb9375465cbf872d0ba3677  libstdc++-v3/testsuite/29_atomics/headers/atomic/functions_std_c++0x.cc
! 3f68fda9475eca1efb2fbdde19efb570  libstdc++-v3/testsuite/29_atomics/headers/atomic/macros.cc
! 87f3f98420393aba0d685628df54dc38  libstdc++-v3/testsuite/29_atomics/headers/atomic/std_c++0x_neg.cc
! 3c155684b5be2643ba914135ca9a8730  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x.cc
! 0a5cad4cdf4a2fae69b7c6faa1eb90b6  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++0x_neg.cc
! 4566576dc6d6bae28ae5974d8a469277  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20.cc
! fd9969b7cdd62fd1e119db8e8bdf6cdf  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++20_neg.cc
! 5af271ea2712313f414c78333645649b  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a.cc
! 50832c30dfcca0b9130dbc556cd6e491  libstdc++-v3/testsuite/29_atomics/headers/atomic/types_std_c++2a_neg.cc
  8f793a0a8dcd336f7edd48cf780787d8  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/c_compat.cc
! 0b170396131d3e657e1f9d0dcec3429f  libstdc++-v3/testsuite/29_atomics/headers/stdatomic.h/version.cc
! 5b1af9fe172aee7236f683fc11c916e0  libstdc++-v3/testsuite/30_threads/async/106695.cc
! ffcc8c4853db30645b820c1a263751cb  libstdc++-v3/testsuite/30_threads/async/42819.cc
! 263623dedc1de7b9d585b4aa8594c77e  libstdc++-v3/testsuite/30_threads/async/49668.cc
! 03132a26b252877999bb0d0e841f1c00  libstdc++-v3/testsuite/30_threads/async/54297.cc
! c3fc4b756843551c6f1f5eb4c62e1a85  libstdc++-v3/testsuite/30_threads/async/69724.cc
! 448edb9844b3be90825f224e4363b01a  libstdc++-v3/testsuite/30_threads/async/84532.cc
! cb80031d15eb196e1ed5f00fc82098bf  libstdc++-v3/testsuite/30_threads/async/any.cc
! 0b96dbc4029ee80e7808034acd4760e3  libstdc++-v3/testsuite/30_threads/async/async.cc
! 40e72df985a688c5960cf0a8d916fe39  libstdc++-v3/testsuite/30_threads/async/except.cc
! 668b3a3df0c2023b5121dc6aabfdb977  libstdc++-v3/testsuite/30_threads/async/forced_unwind.cc
! 0b976ad7ba419d327a3687fdc831b06a  libstdc++-v3/testsuite/30_threads/async/launch.cc
! 6163a48c3b6d2d3e29eceb8b7576dccf  libstdc++-v3/testsuite/30_threads/async/lwg2021.cc
! 6bb72c92e1d307fb2cfa22c14bc81bd6  libstdc++-v3/testsuite/30_threads/async/sync.cc
! d21888c76834f1e0d69c38892db35d5a  libstdc++-v3/testsuite/30_threads/barrier/1.cc
! c6f2c6d43c16d733f7fe93b63babda0a  libstdc++-v3/testsuite/30_threads/barrier/2.cc
! 61a7b444609803c910d0089b5bb1034d  libstdc++-v3/testsuite/30_threads/barrier/arrive.cc
! 6b594ad80145c0807af236d062f038fe  libstdc++-v3/testsuite/30_threads/barrier/arrive_and_drop.cc
! 82d7dd313b57bd9f33d4b2013c2ef74a  libstdc++-v3/testsuite/30_threads/barrier/arrive_and_wait.cc
! 36a81fe851bd52ede03c24093cd2537d  libstdc++-v3/testsuite/30_threads/barrier/completion.cc
! 209ee176c1842eee44e4d7f77602f492  libstdc++-v3/testsuite/30_threads/call_once/39909.cc
! 2de4b237e5d37c469f06bb76aac2c2a2  libstdc++-v3/testsuite/30_threads/call_once/49668.cc
! bb0de3ec38266058e4de074e5d2e61f9  libstdc++-v3/testsuite/30_threads/call_once/60497.cc
! 67fbdc30a7feafe06947b9c9f6a0141a  libstdc++-v3/testsuite/30_threads/call_once/call_once1.cc
! c055c3f3ac8e6b70eed6f739372ad6d6  libstdc++-v3/testsuite/30_threads/call_once/dr2442.cc
! c09fcc585a91aaa0233f074071e8c9cb  libstdc++-v3/testsuite/30_threads/call_once/once_flag.cc
! 5e4b00c95d0da1d5c8dcd6b26774c0e5  libstdc++-v3/testsuite/30_threads/condition_variable/54185.cc
! f26ef8b7dacacbb88c5c6f1c2c6bfe13  libstdc++-v3/testsuite/30_threads/condition_variable/cons/1.cc
! 4a763d993b570fe7b7e8c8965c538af5  libstdc++-v3/testsuite/30_threads/condition_variable/cons/assign_neg.cc
! 4ee8381167ad5a1c77d0a571decd83fd  libstdc++-v3/testsuite/30_threads/condition_variable/cons/copy_neg.cc
! cca1064a1b1bdae45d1453fb7037bfb2  libstdc++-v3/testsuite/30_threads/condition_variable/members/1.cc
  a22ffec2ff77db41215e429fe83d58ac  libstdc++-v3/testsuite/30_threads/condition_variable/members/103382.cc
! 7a8c459926189b53330189fea1f51bfc  libstdc++-v3/testsuite/30_threads/condition_variable/members/2.cc
! c15ff674be5b5716e8d924f4ac34a306  libstdc++-v3/testsuite/30_threads/condition_variable/members/3.cc
! 197dee9efcd5950c956753cbfd0b90bc  libstdc++-v3/testsuite/30_threads/condition_variable/members/53841.cc
! 6df6f9662a69a06410e0df4851478219  libstdc++-v3/testsuite/30_threads/condition_variable/members/68519.cc
! f5e8503613f99f30b107d4945dca5a94  libstdc++-v3/testsuite/30_threads/condition_variable/members/clock_neg.cc
! 7a1f3eccdae7c14f76919552dce0b4d3  libstdc++-v3/testsuite/30_threads/condition_variable/native_handle/typesizes.cc
! 8c542429c0da9e6d6fe48ab98e82adc3  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/standard_layout.cc
! a964d36a769e06049de6b0296c99a2cc  libstdc++-v3/testsuite/30_threads/condition_variable/requirements/typedefs.cc
! c4e515a8d877609e444900a380a1d313  libstdc++-v3/testsuite/30_threads/condition_variable_any/50862.cc
! 97c4ef5ba606e04f75d41bcd5796f8b0  libstdc++-v3/testsuite/30_threads/condition_variable_any/53830.cc
! eacc56e431f150339366c1f2aa030e5b  libstdc++-v3/testsuite/30_threads/condition_variable_any/cond.cc
! 3a6cb6c2c11645630959a29fd77231c2  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/1.cc
! 3874784a675a87f52c3cf9be2943ab10  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/assign_neg.cc
! 34cfa82c8c4b2ba9a91ab47b27ab569d  libstdc++-v3/testsuite/30_threads/condition_variable_any/cons/copy_neg.cc
! 426b99caa56de16f92a3adb370827e79  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/1.cc
! 092db35be8819041f386b2b64e9efbc6  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/2.cc
! 84c36c19d107c6ccf38fce9419c9af37  libstdc++-v3/testsuite/30_threads/condition_variable_any/members/clock_neg.cc
! b370e389987ae545dd0048935e7790ac  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/1.cc
! 0de668e76a677e1315b6bb90f6a6395e  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/2.cc
! 4a57724fa7a485af69d8ced4e34e588f  libstdc++-v3/testsuite/30_threads/condition_variable_any/stop_token/wait_on.cc
! 784196ef44aec4b61177ee46d46ee075  libstdc++-v3/testsuite/30_threads/future/cons/assign_neg.cc
! 92e88ca50c9ce6d130f6176648cd6c30  libstdc++-v3/testsuite/30_threads/future/cons/constexpr.cc
! eed866b1ac338410533c7f661a852403  libstdc++-v3/testsuite/30_threads/future/cons/copy_neg.cc
! 6c56a64c4dd0499b61fdb652de802c08  libstdc++-v3/testsuite/30_threads/future/cons/default.cc
! 9384933ea2bd7be29e855c357593d3bc  libstdc++-v3/testsuite/30_threads/future/cons/move.cc
! 4ad4a80615e7c82771546bf3b43d3ce7  libstdc++-v3/testsuite/30_threads/future/cons/move_assign.cc
! 7ef0128f3cce4588b2583ceb2e953abb  libstdc++-v3/testsuite/30_threads/future/members/45133.cc
! 9755ccefb356c567fde1743d0a2ea121  libstdc++-v3/testsuite/30_threads/future/members/93456.cc
! a0a58329eb9d9453778ff24db5dd3451  libstdc++-v3/testsuite/30_threads/future/members/clock_neg.cc
! 5cb1b7c2729f362633f9b019ea19e6a0  libstdc++-v3/testsuite/30_threads/future/members/get.cc
! 9dfd942dce0dc1bd1f0491e970d2878a  libstdc++-v3/testsuite/30_threads/future/members/get2.cc
! 12d8d96e5ad239ef2947364f480e7510  libstdc++-v3/testsuite/30_threads/future/members/poll.cc
! fb80ff24016082f93ea5ed8af9ab8f43  libstdc++-v3/testsuite/30_threads/future/members/share.cc
! 7222a6f6b24ddc131daee74bb4093c22  libstdc++-v3/testsuite/30_threads/future/members/valid.cc
! 22ca09e23a0f4eba2bccd60f1c657c16  libstdc++-v3/testsuite/30_threads/future/members/wait.cc
! 8dfa76cf9a249e02b072a18d8688dc3d  libstdc++-v3/testsuite/30_threads/future/members/wait_for.cc
! c0953edc97b2cce3b7450880e5b57c68  libstdc++-v3/testsuite/30_threads/future/members/wait_until.cc
! 4f923423f2c2aa258a0abfb2758e51cf  libstdc++-v3/testsuite/30_threads/future/requirements/explicit_instantiation.cc
! f0837e422ad34b14fb14ab1231a3fbe5  libstdc++-v3/testsuite/30_threads/future/requirements/lwg3458.cc
! e6dd2c4c3601e62fb50e5766be10e109  libstdc++-v3/testsuite/30_threads/headers/condition_variable/std_c++0x_neg.cc
! 78a5a6624c1e0134273cbb46eeef9b38  libstdc++-v3/testsuite/30_threads/headers/condition_variable/types_std_c++0x.cc
! 7e6c64f16cd03019e9eb06acd426bfde  libstdc++-v3/testsuite/30_threads/headers/future/std_c++0x_neg.cc
! 9512dedbdc4d824d1a24e60afa169e74  libstdc++-v3/testsuite/30_threads/headers/future/types_std_c++0x.cc
! 40adc7b3600df120586684f37984abc4  libstdc++-v3/testsuite/30_threads/headers/mutex/std_c++0x_neg.cc
! 69226a77329fde66ee492fe3c0eba086  libstdc++-v3/testsuite/30_threads/headers/mutex/types_std_c++0x.cc
! 704bf53546f1483a37f923d91c7e519b  libstdc++-v3/testsuite/30_threads/headers/stop_token/synopsis.cc
! a529c81d9506cbd07a3c44d27944f78d  libstdc++-v3/testsuite/30_threads/headers/thread/std_c++0x_neg.cc
! cd46cb1e509db2784e008dcd552f1d1f  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++0x.cc
! 4bfc2095ddba98c8379fab02a4bd5e05  libstdc++-v3/testsuite/30_threads/headers/thread/types_std_c++20.cc
! 57f12556d2bc7671f104392326f3fe00  libstdc++-v3/testsuite/30_threads/jthread/1.cc
  0e687b9098ebccb04a9238c84c6e0cac  libstdc++-v3/testsuite/30_threads/jthread/100612.cc
! eb655a74d23211131b40198e74bf5ac5  libstdc++-v3/testsuite/30_threads/jthread/3.cc
! 7320055d0474be214f5b9caef955bc2a  libstdc++-v3/testsuite/30_threads/jthread/95989.cc
! 1eb133b88e71c9f0088aa94823f3f6c7  libstdc++-v3/testsuite/30_threads/jthread/jthread.cc
! 7759ba790304c4c11074747c2a309aa3  libstdc++-v3/testsuite/30_threads/jthread/version.cc
! b5307f946d4d5c76cd6865ea5c13f605  libstdc++-v3/testsuite/30_threads/latch/1.cc
! 91d76d25f75d3cc7b9cd52134767a6b5  libstdc++-v3/testsuite/30_threads/latch/2.cc
! 12a25206e3d7c891dd20e703fcb63ae6  libstdc++-v3/testsuite/30_threads/latch/3.cc
! 87783bf1126576f55dfb160043fd8b5d  libstdc++-v3/testsuite/30_threads/lock/1.cc
! 13ff6e4d8adef46cf486938ef59e98c6  libstdc++-v3/testsuite/30_threads/lock/2.cc
! 6bf3a8fece9ef76190e32d71c14bb8ca  libstdc++-v3/testsuite/30_threads/lock/3.cc
! 2b501fd8cf8fe1fdc488158643c33564  libstdc++-v3/testsuite/30_threads/lock/4.cc
! d0f45f86fb443e086c5822f1ab7d0be8  libstdc++-v3/testsuite/30_threads/lock_guard/cons/1.cc
! 85f7f853de14bb76a7f6d5cd13ee269b  libstdc++-v3/testsuite/30_threads/lock_guard/cons/deduction.cc
! 70b54ece564842f8a336d73ae0ca5d8f  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/explicit_instantiation.cc
! f0530fdc4a9aa38fb91cf8cdf32d488f  libstdc++-v3/testsuite/30_threads/lock_guard/requirements/typedefs.cc
! 4cb68f02d9c60cb46453a1784aa46115  libstdc++-v3/testsuite/30_threads/mutex/cons/1.cc
! 6eec158688ba2dad98b053982f054ff9  libstdc++-v3/testsuite/30_threads/mutex/cons/assign_neg.cc
! e319a9328b30baba4390d55067cdf788  libstdc++-v3/testsuite/30_threads/mutex/cons/constexpr.cc
! 62acfd53c8f1f356a9a4f222e53da2ec  libstdc++-v3/testsuite/30_threads/mutex/cons/copy_neg.cc
! 0bb82c55b25e0fdca73d8316886d3fcb  libstdc++-v3/testsuite/30_threads/mutex/dest/destructor_locked.cc
! 300e68b8cf5d2b1a1289076b2d9de6bb  libstdc++-v3/testsuite/30_threads/mutex/lock/1.cc
! ea5456a36c5e0fd843924cf56ac6333f  libstdc++-v3/testsuite/30_threads/mutex/native_handle/1.cc
! e1f6cf6ba1e075806e5b2223faec6054  libstdc++-v3/testsuite/30_threads/mutex/native_handle/typesizes.cc
! f2928557ecb99f426e7d40db5831f57f  libstdc++-v3/testsuite/30_threads/mutex/requirements/standard_layout.cc
! a93f51049e87a73f29a0894b4a30e400  libstdc++-v3/testsuite/30_threads/mutex/requirements/typedefs.cc
! 9fc16624a1b36aa33f103840fae3f72a  libstdc++-v3/testsuite/30_threads/mutex/try_lock/1.cc
! 3dac7d2ff7fb574fd3ad1628af3e0959  libstdc++-v3/testsuite/30_threads/mutex/try_lock/2.cc
! f9a4d939bd720a555163f5c47d37d488  libstdc++-v3/testsuite/30_threads/mutex/unlock/1.cc
! 53c8dba809f1ca2fb9b27528571e3540  libstdc++-v3/testsuite/30_threads/mutex/unlock/2.cc
! 319730e80ce0570dee2fb76fdffe905b  libstdc++-v3/testsuite/30_threads/packaged_task/49668.cc
! 3ad33b1d63641d99703f45e33ecbb1de  libstdc++-v3/testsuite/30_threads/packaged_task/60564.cc
! d295bc565cae92788933a37be483686a  libstdc++-v3/testsuite/30_threads/packaged_task/79486.cc
! 23a997c8dff827979cece71e19b9ab2e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/1.cc
! 7f73e37273e82b149d7d6397aaf6130e  libstdc++-v3/testsuite/30_threads/packaged_task/cons/2.cc
! e38333052664e69b29cdcf94b5c40e9a  libstdc++-v3/testsuite/30_threads/packaged_task/cons/3.cc
! ec9742c4ebf3ebbb44b749d2531a5663  libstdc++-v3/testsuite/30_threads/packaged_task/cons/56492.cc
! 41db274d023976fa92f9e00ac282e603  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc.cc
! 01e5dd9389bb2c88f912f541f748990d  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc2.cc
! 7540f2b341063052e4df53869279ee45  libstdc++-v3/testsuite/30_threads/packaged_task/cons/alloc_min.cc
! dddb363f2af857ee886931090f04a0e9  libstdc++-v3/testsuite/30_threads/packaged_task/cons/assign_neg.cc
! fffd1a2ac1e1511f07758374b0a52634  libstdc++-v3/testsuite/30_threads/packaged_task/cons/copy_neg.cc
! 61b6c7d530f3a7caba002211060c13d2  libstdc++-v3/testsuite/30_threads/packaged_task/cons/dangling_ref.cc
! 48cc935edc69d935cca8954e4fbdd516  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction.cc
! ffd14d059aa80609474213055ab81174  libstdc++-v3/testsuite/30_threads/packaged_task/cons/deduction_c++23.cc
! 8d56e36cfac6fcb25640519b5ee5516a  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move.cc
! 2ad6881c9f55bafe44a395de405b4846  libstdc++-v3/testsuite/30_threads/packaged_task/cons/move_assign.cc
! 401e3736e1d81418394c9af80040d8ed  libstdc++-v3/testsuite/30_threads/packaged_task/forced_unwind.cc
! 77ab0dac1cb6ae7a33c1ac501c35db3b  libstdc++-v3/testsuite/30_threads/packaged_task/members/at_thread_exit.cc
! 4bfc6f7d44026e32d9b7e60c4b15d000  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future.cc
! 5c89453159dda652263c1e02e397ccd0  libstdc++-v3/testsuite/30_threads/packaged_task/members/get_future2.cc
! be2cd560585eb1bc5721d9d70f12990d  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke.cc
! 355453e8f5200d484e0bada5813bae95  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke2.cc
! f632e1066062ae8f9a66ad8f3bf3e8fc  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke3.cc
! 3c6a5e7c8352a9bc104e18eb895bf387  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke4.cc
! a607b7e878fdc71132224eb1a9c5ffd1  libstdc++-v3/testsuite/30_threads/packaged_task/members/invoke5.cc
! 6442d1b19b5d8b6e335208c9fb7b54ec  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset.cc
! 2b8aad9585033ef635da957eaa7825b7  libstdc++-v3/testsuite/30_threads/packaged_task/members/reset2.cc
! 9df22703391b827627eb90a200d4aad4  libstdc++-v3/testsuite/30_threads/packaged_task/members/swap.cc
! 776b912922cce57a3f338adcbdb4a7d2  libstdc++-v3/testsuite/30_threads/packaged_task/members/valid.cc
! c1e53279255bca2de37cbe1aca91dbae  libstdc++-v3/testsuite/30_threads/packaged_task/requirements/explicit_instantiation.cc
! 1d3965631e1e2bfa6021762732eb2e53  libstdc++-v3/testsuite/30_threads/packaged_task/uses_allocator.cc
! 8eb06bf809a2325a29d7e1e049915d1b  libstdc++-v3/testsuite/30_threads/promise/60966.cc
! 42fe33491000d70497b31453690aa23e  libstdc++-v3/testsuite/30_threads/promise/69106.cc
! 929ed15bb9170a9c4031c26bb2f77b6b  libstdc++-v3/testsuite/30_threads/promise/cons/1.cc
! f2e3d672664c345c337b1d5a1612f3c6  libstdc++-v3/testsuite/30_threads/promise/cons/alloc.cc
! 3cd1fe7f5fb4b980eb2c4b91d19296cb  libstdc++-v3/testsuite/30_threads/promise/cons/alloc2.cc
! 973fdff82010a4b1d838b2125840915f  libstdc++-v3/testsuite/30_threads/promise/cons/alloc_min.cc
! 2f21c9373f67fd7a8f2847ef2a12c746  libstdc++-v3/testsuite/30_threads/promise/cons/assign_neg.cc
! 6b57cfca5f9064a7bbddcc71d9d317db  libstdc++-v3/testsuite/30_threads/promise/cons/copy_neg.cc
! 2da3b66a3c4a81898e8a709635ae722d  libstdc++-v3/testsuite/30_threads/promise/cons/move.cc
! 8d297bf36b4cf9757aad9e92bde5d81f  libstdc++-v3/testsuite/30_threads/promise/cons/move_assign.cc
! 28b546a83f50e7e78f6bc0caea181280  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit.cc
! 5c0ad3ed19b9e32ad4809188423193e0  libstdc++-v3/testsuite/30_threads/promise/members/at_thread_exit2.cc
! 223170d7c395845b8fc57870d9514620  libstdc++-v3/testsuite/30_threads/promise/members/get_future.cc
! d278acb344f1bc7a31754309d49e42a1  libstdc++-v3/testsuite/30_threads/promise/members/get_future2.cc
! 094d41429cff642200c91916bad4ba8c  libstdc++-v3/testsuite/30_threads/promise/members/set_exception.cc
! ec5db04c1fffce07ae932290792044ee  libstdc++-v3/testsuite/30_threads/promise/members/set_exception2.cc
! 8d747bcd5afe04faffaed0b4915aa245  libstdc++-v3/testsuite/30_threads/promise/members/set_exception_neg.cc
! a879a3e6de7d8c01ca16336ed3f484e1  libstdc++-v3/testsuite/30_threads/promise/members/set_value.cc
! b41e71c238a50b30de82867e0622ebfd  libstdc++-v3/testsuite/30_threads/promise/members/set_value2.cc
! f917687bf6fa06afd10be857365f2bd0  libstdc++-v3/testsuite/30_threads/promise/members/set_value3.cc
! 149fcc953d0ce014720ddf7713267fc6  libstdc++-v3/testsuite/30_threads/promise/members/swap.cc
! 894d58b5c76667584973c4cbd8ddf7f8  libstdc++-v3/testsuite/30_threads/promise/requirements/explicit_instantiation.cc
! 3ad8116e82bd32874bdb889e7bc28bef  libstdc++-v3/testsuite/30_threads/promise/requirements/lwg3466.cc
! ca3dfd9df276cb51bc90b9024a0860c0  libstdc++-v3/testsuite/30_threads/promise/uses_allocator.cc
! daa6d64fb61bb23c4cc4d2f3c895122b  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/1.cc
! caf1eadaf9248723e16661df6194ad7d  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/assign_neg.cc
! 4f1a70ccf8a5c8a8ea622acc672dfb39  libstdc++-v3/testsuite/30_threads/recursive_mutex/cons/copy_neg.cc
! 10369c9f95ed400734c995ec675dddb9  libstdc++-v3/testsuite/30_threads/recursive_mutex/dest/destructor_locked.cc
! 5c08ea06629a96ffbbca6cb53cefb1f6  libstdc++-v3/testsuite/30_threads/recursive_mutex/lock/1.cc
! e9caa71d475ce002da5764c8db234b4c  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/1.cc
! f0d27838adca2938ca3bc002e9186f17  libstdc++-v3/testsuite/30_threads/recursive_mutex/native_handle/typesizes.cc
! 8a4403d237e3f3d791dba4f858e79ca8  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/standard_layout.cc
! 2734060b3641755682aa76d0988080cd  libstdc++-v3/testsuite/30_threads/recursive_mutex/requirements/typedefs.cc
! 5c543ea1513631a0b9a4eec47c4c8eb0  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/1.cc
! 55a3d28db42b4d107cd490c015578044  libstdc++-v3/testsuite/30_threads/recursive_mutex/try_lock/2.cc
! 01c1111264da989837d2bc3e97262b0c  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/1.cc
! 118214f6f0a0f1f4abc07eecd09c26db  libstdc++-v3/testsuite/30_threads/recursive_mutex/unlock/2.cc
! 87efbd42b165477d1919a5fd9333fc72  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/1.cc
! 7a80f63a5d70276943b843b7024cb9a4  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/assign_neg.cc
! 3605707c3d69fd4325dabbd42bbc24e5  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/cons/copy_neg.cc
! cdc1ea21812cdc36e50ae8bfc4d48932  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/dest/destructor_locked.cc
! 690242e25ffd3fa29fdc74a435957b65  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/1.cc
! b6cea0ebd41b2b7f2d568e455d815006  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/lock/2.cc
! 6a692c56f743c4de71cbddd7caf985ee  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/1.cc
! 9d522ac822d28e1f4993a9ee45b92419  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/native_handle/typesizes.cc
! cafcf76480010d500f7c63bbea5b10f0  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/requirements/typedefs.cc
! b08574c2ff191cde3982e41f02b89c4a  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/1.cc
! 3d0fec1516eadbd1621bd470a4c676ec  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock/2.cc
! 8b9dbcaeb9793f9314e1c968de602c82  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/1.cc
! 700aebafb55ea807007ca87a36c06883  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/2.cc
! 821bcea29af61b640e6e8580e69c74ca  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_for/3.cc
! b08574c2ff191cde3982e41f02b89c4a  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/1.cc
! 5a67b196ea798a3ea8293c9bfe0b1207  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/2.cc
! 6a5d0ce2f0356df870382b9802f9c811  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/3.cc
! dc2f156789e19d7f663e7ce437a42ac3  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/try_lock_until/clock_neg.cc
! 4939a8080fafdbddf9ec11859e5976bf  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/1.cc
! e9ae4f829ca3eb545adae850492f8b4c  libstdc++-v3/testsuite/30_threads/recursive_timed_mutex/unlock/2.cc
! a282820a0376fb2a5c75778814d234bf  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/1.cc
! 1bb2dc042de69b616c169fda99e13e2f  libstdc++-v3/testsuite/30_threads/scoped_lock/cons/deduction.cc
! dbb1eb85ab8ef4aa20bfccb8983f6a79  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/explicit_instantiation.cc
! 9ce137558b4103147d95832715a99038  libstdc++-v3/testsuite/30_threads/scoped_lock/requirements/typedefs.cc
! 347276b499f6275bb1db3d73c2446b2e  libstdc++-v3/testsuite/30_threads/semaphore/1.cc
  aa7e8d9c8ac0cac38e0e7e2928bb61b6  libstdc++-v3/testsuite/30_threads/semaphore/100806.cc
! ca60625ef2b8bce5e88dd420f7c92e1d  libstdc++-v3/testsuite/30_threads/semaphore/2.cc
! 33301c1f259fd92cffb84261825c9f2d  libstdc++-v3/testsuite/30_threads/semaphore/least_max_value_neg.cc
! 160645eb27139dd244bdb974bdcb5be7  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire.cc
! d8aed3a57ddcf8c0c915e04cdacbb3af  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_for.cc
! e37ecc03c6b285a832c5651df3c8766c  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_posix.cc
! 40e8ca89f7592d092d5ab9ffbd3783e5  libstdc++-v3/testsuite/30_threads/semaphore/try_acquire_until.cc
! 3b6234623cd2d5aea8027df87bd63bc3  libstdc++-v3/testsuite/30_threads/shared_future/cons/assign.cc
! 10f0b74d28839bca94a42583336efd8a  libstdc++-v3/testsuite/30_threads/shared_future/cons/constexpr.cc
! 2c4a657a6d9aafc8c82d0fa7cb00a11d  libstdc++-v3/testsuite/30_threads/shared_future/cons/copy.cc
! 46fd13ec525d006f4061240911c815f8  libstdc++-v3/testsuite/30_threads/shared_future/cons/default.cc
! 759041a5dcfc0f13a4d0185ab06f25ec  libstdc++-v3/testsuite/30_threads/shared_future/cons/move.cc
! ce1186b44421ec97cec50b5dd896b29d  libstdc++-v3/testsuite/30_threads/shared_future/cons/move_assign.cc
! 0f309063726209c9a0759b8b9a9e48d5  libstdc++-v3/testsuite/30_threads/shared_future/members/45133.cc
! 78f739a85a5949e03db51739e34058fd  libstdc++-v3/testsuite/30_threads/shared_future/members/clock_neg.cc
! 17d0cc2712ee9a1c8e0e2779d517d97f  libstdc++-v3/testsuite/30_threads/shared_future/members/get.cc
! 412a6d9c6e2ae4933c03b44f64253642  libstdc++-v3/testsuite/30_threads/shared_future/members/get2.cc
! d7a9b0e411b9465dc51771d31591bb04  libstdc++-v3/testsuite/30_threads/shared_future/members/valid.cc
! c755a7c59c57a7c7cdae41619b59491f  libstdc++-v3/testsuite/30_threads/shared_future/members/wait.cc
! 545e6c7148cd5a5020171b00671115d9  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_for.cc
! 25a57e6c50b6babcdc692c6cfe1d606d  libstdc++-v3/testsuite/30_threads/shared_future/members/wait_until.cc
! 6155dc57560feae6c3602b0c8d3e3fe1  libstdc++-v3/testsuite/30_threads/shared_future/requirements/explicit_instantiation.cc
! 9f91160a648844384aefff2ecd72e871  libstdc++-v3/testsuite/30_threads/shared_future/requirements/lwg3458.cc
! 82804c7994f5f89a3a8eee6d5b25c1db  libstdc++-v3/testsuite/30_threads/shared_lock/70766.cc
! a73856d4590ce538fe9edc4673e03c3b  libstdc++-v3/testsuite/30_threads/shared_lock/cons/1.cc
! 7db0ca067ce0b28ef59d70ee8f130c21  libstdc++-v3/testsuite/30_threads/shared_lock/cons/2.cc
! f13b5a07a73e3b6c2df9424c8b36e909  libstdc++-v3/testsuite/30_threads/shared_lock/cons/3.cc
! 4448ddaea1028453996a7968ac1b96af  libstdc++-v3/testsuite/30_threads/shared_lock/cons/4.cc
! d3736bf6f48b71609b1301f1ebb54f82  libstdc++-v3/testsuite/30_threads/shared_lock/cons/5.cc
! 194232fd1b1d36b985a7d9832ced43fa  libstdc++-v3/testsuite/30_threads/shared_lock/cons/6.cc
! 28d0ef9dfd21aea280f633c17b86b470  libstdc++-v3/testsuite/30_threads/shared_lock/locking/1.cc
! cd2f5fee7ce458a17272a6eb673c6483  libstdc++-v3/testsuite/30_threads/shared_lock/locking/2.cc
! 6420d168bbee85da48953721f64710f9  libstdc++-v3/testsuite/30_threads/shared_lock/locking/3.cc
! 174db1fe9624895ca5551e0a01b2f4bf  libstdc++-v3/testsuite/30_threads/shared_lock/locking/4.cc
! 21467e78b84c85fdbb8bc6d5c0d82458  libstdc++-v3/testsuite/30_threads/shared_lock/locking/clock_neg.cc
! ebe6478fe59180b007236461166a29d4  libstdc++-v3/testsuite/30_threads/shared_lock/modifiers/1.cc
! b40fcefa29ec4ad26d5eea628a2d46b0  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/explicit_instantiation.cc
! dd6c05626e5b23d2f8590dd069b21f85  libstdc++-v3/testsuite/30_threads/shared_lock/requirements/typedefs.cc
! a5f59a7daf88f2f4da887aa835d96d4b  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/1.cc
! 959b0197d9dd04e3ad3a865e5b0bc0e9  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/assign_neg.cc
! aa7a07bacd480044cc828812d0e04a06  libstdc++-v3/testsuite/30_threads/shared_mutex/cons/copy_neg.cc
! e06b54bce12a8923e328886af7c52d78  libstdc++-v3/testsuite/30_threads/shared_mutex/requirements/standard_layout.cc
! 6320be6c45e051cc087aa4e2e6c3e528  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/1.cc
! 8f871de48c4ef30a59f415055dbb675c  libstdc++-v3/testsuite/30_threads/shared_mutex/try_lock/2.cc
! 0f590d4a4728802758f1bc7a134d2251  libstdc++-v3/testsuite/30_threads/shared_mutex/unlock/1.cc
! 89fb9132c80fa7fecf7ecf6f3a3b1ed8  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/94069.cc
! cbbfa779ac0d43725b7eb70df13be243  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/1.cc
! 97eb9bfc7b1233406edf4fbf5b06ef3f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/assign_neg.cc
! 983bfd2c75bd29682ea6873b76b5b447  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/cons/copy_neg.cc
! 5f0c2fdd33d74c73aaf18e7907942eaf  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/requirements/standard_layout.cc
! bf9b136ec2da2774b1a8fbe5b58c5677  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/1.cc
! e1447cd7ddf030835e84d64fa2a2b76f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/2.cc
! 4acdd401e186fbdec7a6a6030387fb5f  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock/3.cc
! 8671e8175cf4c838c7e06d3fec9f9fd1  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/1.cc
! a70a30f3044b9969b5d9012598cac710  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/2.cc
! b832b69270c0dc70de20ad98d594b284  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/try_lock_until/clock_neg.cc
! 32561ba523def82147f7879d9e7f40dd  libstdc++-v3/testsuite/30_threads/shared_timed_mutex/unlock/1.cc
! 4d20a098c0c2ffb247a7749548e9c419  libstdc++-v3/testsuite/30_threads/stop_token/1.cc
! 0de668e76a677e1315b6bb90f6a6395e  libstdc++-v3/testsuite/30_threads/stop_token/2.cc
! 97a7a3908977ed614c442d9dda08f615  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback.cc
! 900777c86cb887116afbf73b39b04599  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock-mt.cc
! ca5ea0d4f1639bebc02764d75ccec1b3  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/deadlock.cc
! 799ca72423b12340daedb73a726e5751  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destroy.cc
! 6efb33da6fea19035fd00a38b8708a4b  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/destructible_neg.cc
! ddf5294bb099b70e7b310463338473ef  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invocable_neg.cc
! 8f6c19ea21b900be5e035e78fac19594  libstdc++-v3/testsuite/30_threads/stop_token/stop_callback/invoke.cc
! afc6b4ad3e3b3d2f09badfb84af5dde3  libstdc++-v3/testsuite/30_threads/stop_token/stop_source.cc
! 97c265fb2eb60646be155e18f47b2f61  libstdc++-v3/testsuite/30_threads/stop_token/stop_source/109339.cc
! 4814676637506565d26a38a087f28aa4  libstdc++-v3/testsuite/30_threads/stop_token/stop_source/assign.cc
! 3980a43b221b630dce5c25ed7c53fdb2  libstdc++-v3/testsuite/30_threads/stop_token/stop_token.cc
! 6e0e0ff6622cbde030019c06fce3cf5b  libstdc++-v3/testsuite/30_threads/stop_token/stop_token/stop_possible.cc
! db9d3657a1f041c772cfd718ecd78491  libstdc++-v3/testsuite/30_threads/this_thread/1.cc
! 6a9bcbaec8b8e87bf17fa130cf9e0b9d  libstdc++-v3/testsuite/30_threads/this_thread/57060.cc
! 47609628c5931a56cf4680e03f7a90dd  libstdc++-v3/testsuite/30_threads/this_thread/58038.cc
! 79e8d9bf933c053c2c17a46cc40032ed  libstdc++-v3/testsuite/30_threads/this_thread/60421.cc
! 8bfdeb31ee7d83ef100663f6e4814f94  libstdc++-v3/testsuite/30_threads/this_thread/95989.cc
! 0a475139000aa581670ab577b06db3b5  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for-mt.cc
! 8b26e96b2e73049da8704eeb829d24d4  libstdc++-v3/testsuite/30_threads/this_thread/sleep_for.cc
! b62f79b06aa1c48084b077d8b16867ce  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until-mt.cc
! 4cc055b5def70b3cee96f79ff213c4c8  libstdc++-v3/testsuite/30_threads/this_thread/sleep_until.cc
! e6cffeeebc401c19fe573650ee7a5693  libstdc++-v3/testsuite/30_threads/this_thread/yield.cc
! 01f0a9872e8d09e04052489193a9e1e9  libstdc++-v3/testsuite/30_threads/thread/106695.cc
! dc417d3a01537dea2db09f884905467e  libstdc++-v3/testsuite/30_threads/thread/70503.cc
! d841e0041ecfddb9d29b807d94e74ac2  libstdc++-v3/testsuite/30_threads/thread/84532.cc
! 9d915ec47e4e81f922aa5217972175e8  libstdc++-v3/testsuite/30_threads/thread/adl.cc
! 8c6057524171adaddc4b9cf316346249  libstdc++-v3/testsuite/30_threads/thread/cons/1.cc
! 39c96bb91f85d9ba70c522ee1e3ec448  libstdc++-v3/testsuite/30_threads/thread/cons/2.cc
! 7dea5d1bd956ad721e4a52779c77bc63  libstdc++-v3/testsuite/30_threads/thread/cons/3.cc
! 5dce39ea91616793dfd1495f294a8fd4  libstdc++-v3/testsuite/30_threads/thread/cons/4.cc
! 68e5b03a401e173ac505cb0aff805bb8  libstdc++-v3/testsuite/30_threads/thread/cons/49668.cc
! d7578226c8be446afbfbec1f0a5b6af8  libstdc++-v3/testsuite/30_threads/thread/cons/5.cc
! 23228bbe64451c4bf9bb12ee87e01021  libstdc++-v3/testsuite/30_threads/thread/cons/6.cc
! e9d98b9d112bdc23acf24b0c6a8fe664  libstdc++-v3/testsuite/30_threads/thread/cons/69724.cc
! 7786f5f64596b427ec27b7d9ed6fe5a1  libstdc++-v3/testsuite/30_threads/thread/cons/7.cc
! 2fe59ce9b720abed1df8625a52399cd3  libstdc++-v3/testsuite/30_threads/thread/cons/8.cc
! 17bfa85f4fd8e328f0dd226104c318fd  libstdc++-v3/testsuite/30_threads/thread/cons/84535.cc
! c859ed06961f7d125318dac70dce0b96  libstdc++-v3/testsuite/30_threads/thread/cons/9.cc
! 66a67ea33fe2cbf6d4377c56de3a3407  libstdc++-v3/testsuite/30_threads/thread/cons/assign_neg.cc
! 302743bcdd820851791c78c37b88ef85  libstdc++-v3/testsuite/30_threads/thread/cons/copy_neg.cc
! ff4dfbf5cc8b0a174e1b3d95e911845c  libstdc++-v3/testsuite/30_threads/thread/cons/lwg2097.cc
! 4e597bcb6ad30fc219849f3877f42a5d  libstdc++-v3/testsuite/30_threads/thread/cons/moveable.cc
! 9c9aea582f985e1916ba3b3bb7676624  libstdc++-v3/testsuite/30_threads/thread/cons/terminate.cc
! 56f1c0f8e6701ac7ca444bb10ca2f3e4  libstdc++-v3/testsuite/30_threads/thread/id/70294.cc
! 1535110f819f1bb8efaa5f9881075623  libstdc++-v3/testsuite/30_threads/thread/id/hash.cc
! f55f3d4d76334f312bb784856412ddc3  libstdc++-v3/testsuite/30_threads/thread/id/operators.cc
! 38dfd7a91fe4e47b27e9b06324d45734  libstdc++-v3/testsuite/30_threads/thread/id/operators_c++20.cc
! db344abefdb1eeb2df75255576af76a4  libstdc++-v3/testsuite/30_threads/thread/members/1.cc
! e8e16ab68a8c711c5b692d62448065f7  libstdc++-v3/testsuite/30_threads/thread/members/2.cc
! 8253359e2b21e03205e29d40798938ea  libstdc++-v3/testsuite/30_threads/thread/members/3.cc
! 353fd7f051e340295cc743b20e5840ab  libstdc++-v3/testsuite/30_threads/thread/members/4.cc
! 1f9e09480aa4dad31ea582542070d679  libstdc++-v3/testsuite/30_threads/thread/members/5.cc
! cde573b8e567f54299d995a60395bd64  libstdc++-v3/testsuite/30_threads/thread/members/hardware_concurrency.cc
! 0b98b406fed44375754500fc54d3bcc1  libstdc++-v3/testsuite/30_threads/thread/native_handle/cancel.cc
! 898cf178f8235e82b1660e275a1b92e2  libstdc++-v3/testsuite/30_threads/thread/native_handle/typesizes.cc
! 1b693d27042fbaeca3ae6e263f549ee2  libstdc++-v3/testsuite/30_threads/thread/swap/1.cc
! 60ecf52b9588c3621edee604280599e9  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/1.cc
! 9dbcc2adcc61fce99049a7b7b8a03e71  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/assign_neg.cc
! cd0ed7a6d0242be6cdf5d05f30bd8f37  libstdc++-v3/testsuite/30_threads/timed_mutex/cons/copy_neg.cc
! 8dead1f595dbb4630c0179f132535f64  libstdc++-v3/testsuite/30_threads/timed_mutex/dest/destructor_locked.cc
! 84c7589ea1ecd3ff2e04adb63e6477dd  libstdc++-v3/testsuite/30_threads/timed_mutex/lock/1.cc
! 797abf524c9151271742c87c69663580  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/1.cc
! 1100de8b124477a50d81a0006145dd4d  libstdc++-v3/testsuite/30_threads/timed_mutex/native_handle/typesizes.cc
! ffc2fe83a409412a4b1e0f66a49a8635  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/standard_layout.cc
! 4272ff59c2dac131138c4c493647e150  libstdc++-v3/testsuite/30_threads/timed_mutex/requirements/typedefs.cc
! 70a6be0f6d86e78d15a9d9a32e0196e4  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/1.cc
! 0360ac18a392e797580fe0a6ba2bbaa9  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock/2.cc
! eedd3eb90a3c07d04187bd1e542d2a89  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/1.cc
! 04512aad31032c79d01add557c5fa51c  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/2.cc
! e2dce81add19fd66003e3dd52ef31f0d  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_for/3.cc
! 70a6be0f6d86e78d15a9d9a32e0196e4  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/1.cc
! 0360ac18a392e797580fe0a6ba2bbaa9  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/2.cc
! 4d3f63c52743669e8f3bb77343379f82  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/3.cc
! 833436416d54616ac9692f21fe3e69de  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/4.cc
! 972023d0bdd0992a8e5a722cc164dd0f  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/57641.cc
! 99b351971d9dd88403f93c83baea30b6  libstdc++-v3/testsuite/30_threads/timed_mutex/try_lock_until/clock_neg.cc
! 73948f21906c8a7552beb82bcd74b848  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/1.cc
! 0a57a5032edbd498cc9ed78ab43a35c4  libstdc++-v3/testsuite/30_threads/timed_mutex/unlock/2.cc
! 29bba6cf1e89d0255f2a0679e2794d0e  libstdc++-v3/testsuite/30_threads/try_lock/1.cc
! 72005cf9cea5fe4d47a88da9e7052365  libstdc++-v3/testsuite/30_threads/try_lock/2.cc
! 658a64f38ab6b70d6848d6790d38034c  libstdc++-v3/testsuite/30_threads/try_lock/3.cc
! 4874bd5061e95c920cb36474d116d514  libstdc++-v3/testsuite/30_threads/try_lock/4.cc
  84b7f4186aa09b29885c62c89d8b8d64  libstdc++-v3/testsuite/30_threads/try_lock/5.cc
! 065b312987d7a0eb251f89727ce98b23  libstdc++-v3/testsuite/30_threads/unique_lock/cons/1.cc
! 34320f18fe82eb8ba67acc68975ccb11  libstdc++-v3/testsuite/30_threads/unique_lock/cons/2.cc
! 035bbcebbb1617c201f3431940043435  libstdc++-v3/testsuite/30_threads/unique_lock/cons/3.cc
! b93a2914719629d2d7dc80ed8baf1652  libstdc++-v3/testsuite/30_threads/unique_lock/cons/4.cc
! 69bc7f340f78fdd895604e9779a6a888  libstdc++-v3/testsuite/30_threads/unique_lock/cons/5.cc
! 9d4eee8abb16ab3b8843b2a7fc93ee85  libstdc++-v3/testsuite/30_threads/unique_lock/cons/6.cc
! 1535967ce4f58d16ba93cb6b0e5b7c1d  libstdc++-v3/testsuite/30_threads/unique_lock/cons/60497.cc
! dada56792b3d9098289b4cb31c5a5f58  libstdc++-v3/testsuite/30_threads/unique_lock/cons/deduction.cc
! 1a19f3f149a73c857c34594f4df755b3  libstdc++-v3/testsuite/30_threads/unique_lock/locking/1.cc
! bc9bc5b762395acedd19a7ded971a74f  libstdc++-v3/testsuite/30_threads/unique_lock/locking/2.cc
! 5cdfbe4a78bf17db5fa5a9630fe489fa  libstdc++-v3/testsuite/30_threads/unique_lock/locking/3.cc
! ba1294b44c35707dfaec771192c6869c  libstdc++-v3/testsuite/30_threads/unique_lock/locking/4.cc
! 0e0e9ba5a5d548aa175c50d9dba7d343  libstdc++-v3/testsuite/30_threads/unique_lock/locking/clock_neg.cc
! 2160c66e42606f304489714e7a84a6d8  libstdc++-v3/testsuite/30_threads/unique_lock/modifiers/1.cc
! c0df45f661af103efb1a3ef2db4243db  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/explicit_instantiation.cc
! 7f4572bc077f247a3e89fde5dc804bbf  libstdc++-v3/testsuite/30_threads/unique_lock/requirements/typedefs.cc
! b739797a5e475d6a45ed7eeb4337c44f  libstdc++-v3/testsuite/Makefile.am
! 930c9e6cdbf96f3e44a1d10bce2e043e  libstdc++-v3/testsuite/Makefile.in
! dae9f04aa5bcd27d004c11142f21bb9d  libstdc++-v3/testsuite/abi/30586.cc
! eef3d284abe5f6cc5921fc12dab944f2  libstdc++-v3/testsuite/abi/cxx_runtime_only_linkage.cc
! 9ecbaa41f08c1ddf84d1c7be6cc26ff7  libstdc++-v3/testsuite/abi/demangle/abi_examples/01.cc
! a3a867db670933fc9feb912320498750  libstdc++-v3/testsuite/abi/demangle/abi_examples/02.cc
! 6ca6f92bd1207550ec4202331e098419  libstdc++-v3/testsuite/abi/demangle/abi_examples/03.cc
! 676cf95fa326c9d5bc43fa32a85d49ae  libstdc++-v3/testsuite/abi/demangle/abi_examples/04.cc
! a6eaeb248869aeb5b9d5276d56f53a24  libstdc++-v3/testsuite/abi/demangle/abi_examples/05.cc
! b5daf5d86ceafc8755e865f5ce4e4c69  libstdc++-v3/testsuite/abi/demangle/abi_examples/06.cc
! 2da735b24c9f3a2fb9921483a3be7814  libstdc++-v3/testsuite/abi/demangle/abi_examples/07.cc
! af0e73e07d49504566b2f6a2631eda18  libstdc++-v3/testsuite/abi/demangle/abi_examples/08.cc
! 31d0eb9adae0cf54e0d07c939e29c03e  libstdc++-v3/testsuite/abi/demangle/abi_examples/09.cc
! 894854e567fc36d5beedaa3539d3548e  libstdc++-v3/testsuite/abi/demangle/abi_examples/10.cc
! 80ce85beb25ca44e49ef086df87a8f12  libstdc++-v3/testsuite/abi/demangle/abi_examples/11.cc
! f5b1ec7b53f88a4cc5b14fb6d891e2d6  libstdc++-v3/testsuite/abi/demangle/abi_examples/12.cc
! e056d8310892b63f2499648076e0be25  libstdc++-v3/testsuite/abi/demangle/abi_examples/13.cc
! 35c87a541b97e3982c87da448839cd22  libstdc++-v3/testsuite/abi/demangle/abi_examples/14.cc
! 7388b5ce6e48dc1f335afd35e7ff2113  libstdc++-v3/testsuite/abi/demangle/abi_examples/15.cc
! 11102d6df9db7c460d605183953953f4  libstdc++-v3/testsuite/abi/demangle/abi_examples/16.cc
! 7c48643bb3b258c4a2aa185d28d70412  libstdc++-v3/testsuite/abi/demangle/abi_examples/17.cc
! bc78fc6e03c0aaec89ef0285fefc8585  libstdc++-v3/testsuite/abi/demangle/abi_examples/18.cc
! 57f81e413afb9fabf84f8d54069127d1  libstdc++-v3/testsuite/abi/demangle/abi_examples/19.cc
! 083e87a617c10c744c97e79ec6989058  libstdc++-v3/testsuite/abi/demangle/abi_examples/20.cc
! e58500e4082ea6d3ab0fa1ae074ccd98  libstdc++-v3/testsuite/abi/demangle/abi_examples/21.cc
! e58500e4082ea6d3ab0fa1ae074ccd98  libstdc++-v3/testsuite/abi/demangle/abi_examples/22.cc
! 0d2613259b70c4c7754dbc5e6aba05ea  libstdc++-v3/testsuite/abi/demangle/abi_examples/23.cc
! 6544b7007b939e6e9de03fd0c1a23901  libstdc++-v3/testsuite/abi/demangle/abi_examples/24.cc
! 63f4ce46a83d6f1bf10060ee78e2c763  libstdc++-v3/testsuite/abi/demangle/abi_examples/25.cc
! 4484ecb566e6787ac77af034852f4715  libstdc++-v3/testsuite/abi/demangle/abi_examples/26.cc
! 645f3af70b6dee74e48d5ba419be8c42  libstdc++-v3/testsuite/abi/demangle/abi_text/01.cc
! 26e9b8386a62855ad455e65294e34ca5  libstdc++-v3/testsuite/abi/demangle/abi_text/02.cc
! feb094404df275ed1e57558c3312d248  libstdc++-v3/testsuite/abi/demangle/abi_text/03.cc
! cf1187f7239ec4478998ee4ee830f198  libstdc++-v3/testsuite/abi/demangle/abi_text/04.cc
! a705ae0edcf71000a3b9eb469f3dac1c  libstdc++-v3/testsuite/abi/demangle/abi_text/05.cc
! 90d9edfe0c3267c893460ca38544a124  libstdc++-v3/testsuite/abi/demangle/abi_text/06.cc
! 52d977ff49a63a1929f823c0524b4f8a  libstdc++-v3/testsuite/abi/demangle/abi_text/07.cc
! 2b0590bbfc4108769d69ec158400dd7c  libstdc++-v3/testsuite/abi/demangle/abi_text/08.cc
! 12c5b1abd5f08a0bdffca117f719e240  libstdc++-v3/testsuite/abi/demangle/abi_text/09.cc
! 0560e110b80487aee93a70ac7dca2267  libstdc++-v3/testsuite/abi/demangle/abi_text/10.cc
! 6806049a68ed3edfed97601c7e314c99  libstdc++-v3/testsuite/abi/demangle/abi_text/11.cc
! 5ba0a4f0c8ff63260a64f0b529700262  libstdc++-v3/testsuite/abi/demangle/abi_text/12.cc
! 40e0531aa9775cb39e6d53d1a00c165e  libstdc++-v3/testsuite/abi/demangle/abi_text/13.cc
! 363cfef130d7fa2230fcf0db3f7daac3  libstdc++-v3/testsuite/abi/demangle/abi_text/14.cc
! 896dac8b70ef4a8e8242992bfb03fab0  libstdc++-v3/testsuite/abi/demangle/cxx0x/rref.cc
! 18db4bafe4e5ce0d64c2d9af686fd501  libstdc++-v3/testsuite/abi/demangle/regression/3111-1.cc
! 561e7c93768cfcbd57e244707ca4c5e4  libstdc++-v3/testsuite/abi/demangle/regression/3111-2.cc
! 09e33ac666c383934272f57ea69039bf  libstdc++-v3/testsuite/abi/demangle/regression/7986-01.cc
! 8ef28216e00adde956fbac1d3d772aee  libstdc++-v3/testsuite/abi/demangle/regression/7986-02.cc
! 11fb4afa1e60e567181a18697b98b599  libstdc++-v3/testsuite/abi/demangle/regression/7986-03.cc
! 5b3686dd68b0851a24192c67889de010  libstdc++-v3/testsuite/abi/demangle/regression/7986-04.cc
! 9e0a098005fd70c5df1b21e12cd319f2  libstdc++-v3/testsuite/abi/demangle/regression/7986-05.cc
! ad4562c351e836a64ea268e129c054d9  libstdc++-v3/testsuite/abi/demangle/regression/7986-06.cc
! fcd2876f3d8801f27326cd0b56770327  libstdc++-v3/testsuite/abi/demangle/regression/7986-07.cc
! 68ba594b85693c4f9d46297205b68b4c  libstdc++-v3/testsuite/abi/demangle/regression/7986-08.cc
! c2a0ce4b4e9cccf6bafaf4e2282596ee  libstdc++-v3/testsuite/abi/demangle/regression/7986-09.cc
! a4c34f3a892e23eaa015f784ceea4e3b  libstdc++-v3/testsuite/abi/demangle/regression/7986-10.cc
! 855821126fd028fadb915a7927abf9ee  libstdc++-v3/testsuite/abi/demangle/regression/7986-11.cc
! 50eb8b96ba9ce323613ff0418e762f54  libstdc++-v3/testsuite/abi/demangle/regression/7986-12.cc
! bcbe243fd2cdabd1a992d467369ade8d  libstdc++-v3/testsuite/abi/demangle/regression/7986.cc
! e63e73134d651e5e48cd711ed7cd8a3d  libstdc++-v3/testsuite/abi/demangle/regression/8897.cc
! 34288b7c06ea6e4b736ee4432dc12779  libstdc++-v3/testsuite/abi/demangle/regression/cw-01.cc
! 88fb6287997efb6e6295c95e9ba0144a  libstdc++-v3/testsuite/abi/demangle/regression/cw-02.cc
! 4c55109f98317964def8329c034c2947  libstdc++-v3/testsuite/abi/demangle/regression/cw-03.cc
! 0fcd36facf37e302f152f6a2571fbbd6  libstdc++-v3/testsuite/abi/demangle/regression/cw-04.cc
! cee6f371e83a25a94a582682b7bcb5ba  libstdc++-v3/testsuite/abi/demangle/regression/cw-05.cc
! 5dbd5d7cc08e2f5f5fe14c720713dedb  libstdc++-v3/testsuite/abi/demangle/regression/cw-06.cc
! 6f30706e80d9343dabfe982b8f332e86  libstdc++-v3/testsuite/abi/demangle/regression/cw-07.cc
! a172bf75bfa7635279b878b538ec7804  libstdc++-v3/testsuite/abi/demangle/regression/cw-08.cc
! 21ff48c7ccfee6b0fd0324fa1602b317  libstdc++-v3/testsuite/abi/demangle/regression/cw-09.cc
! 4ad2ee7b6bcdb760d91b0ae5b894f170  libstdc++-v3/testsuite/abi/demangle/regression/cw-10.cc
! 0d3a42f8d514ef10695d605e30456cb0  libstdc++-v3/testsuite/abi/demangle/regression/cw-11.cc
! 7d398b6c6f7852af6919c5830978bb40  libstdc++-v3/testsuite/abi/demangle/regression/cw-12.cc
! b9b8ecfe1e7d363e6b2ac2734c2fd7f8  libstdc++-v3/testsuite/abi/demangle/regression/cw-13.cc
! 487b435ecc261a54415d24b773faee6a  libstdc++-v3/testsuite/abi/demangle/regression/cw-14.cc
! 25c05d8d7e5f3fe20e9a351e9c398be4  libstdc++-v3/testsuite/abi/demangle/regression/cw-15.cc
! c3592d5b3277e0be323d5781f721ffca  libstdc++-v3/testsuite/abi/demangle/regression/cw-16.cc
! c69b39b3c7025600b4d75f05e8661be4  libstdc++-v3/testsuite/abi/demangle/regression/old.cc
! cddc1fdc4b38fde93ad02aa120ed46b9  libstdc++-v3/testsuite/abi/header_cxxabi.c
! 026f7646f4161e79273f7580a661c0cc  libstdc++-v3/testsuite/abi/pr42230.cc
! 84989b42eee1320f95c21da079273801  libstdc++-v3/testsuite/backward/11460.cc
! 9c45fcf91151015f417c938470e0e47a  libstdc++-v3/testsuite/backward/hash_map/1.cc
! 995e2e9135ed4a558a24c0b9fe2492cf  libstdc++-v3/testsuite/backward/hash_map/14648.cc
! 178ce783fd08f833d051616dadd0f82f  libstdc++-v3/testsuite/backward/hash_map/23528.cc
! 42a198bf9a358cfbdb232e8a375df6a9  libstdc++-v3/testsuite/backward/hash_map/25896.cc
! ff7443140f86745a2541bdb67674b537  libstdc++-v3/testsuite/backward/hash_map/requirements/explicit_instantiation.cc
! c597972e3e8cd6262fd847bc2867ee05  libstdc++-v3/testsuite/backward/hash_set/1.cc
! a34de0d8d7e82a11a5ac26aca9679cf7  libstdc++-v3/testsuite/backward/hash_set/25896.cc
  2c091597008357e678007f407f299a24  libstdc++-v3/testsuite/backward/hash_set/49060.cc
! b50f7b321b2fe24b18a96f6cb90be514  libstdc++-v3/testsuite/backward/hash_set/check_construct_destroy.cc
! d7e0c3a740f84a38fc897d2c79e82d54  libstdc++-v3/testsuite/backward/hash_set/requirements/explicit_instantiation.cc
! 2db761d7855449f6ec325d0f85bd6702  libstdc++-v3/testsuite/backward/strstream_members.cc
! 264b9e706c4036face402ab9b63e8259  libstdc++-v3/testsuite/backward/strstream_move.cc
! a1be675d67363a31b7077da24f907f64  libstdc++-v3/testsuite/config/default.exp
  e7df7cd2ca07f4f1ab415d457a6e1c13  libstdc++-v3/testsuite/data/cin_unget-1.txt
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/filebuf_members-1.txt
*************** c301fea40cf8411c67e670f55107c746  libstd
*** 113775,115655 ****
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/wostream_seeks-1.tst
! 036a473589cdd7c155aa08967555a5f9  libstdc++-v3/testsuite/decimal/binary-arith.cc
! 4f7fc8195719dcd49d0e670916dbf936  libstdc++-v3/testsuite/decimal/cast_neg.cc
! 9cbc433f3125dba1914343d68aa4b114  libstdc++-v3/testsuite/decimal/comparison.cc
! 405dbce2caf9347a15eca6f69381ad9c  libstdc++-v3/testsuite/decimal/compound-assignment-memfunc.cc
! 7178b02fe90919f0cc44de4f984007e3  libstdc++-v3/testsuite/decimal/compound-assignment.cc
! 9e3a56337e2bd239e0c7fb447130e310  libstdc++-v3/testsuite/decimal/conversion-from-float.cc
! 1c6fc70c52a3ad0aad5b611769e73511  libstdc++-v3/testsuite/decimal/conversion-from-integral.cc
! 2ec4f8eb2d58af500129816f052ca166  libstdc++-v3/testsuite/decimal/conversion-to-generic-float.cc
! eddb202f5cf3548c8195fa77814454a8  libstdc++-v3/testsuite/decimal/conversion-to-integral.cc
! b30920114112f44019608b90fa01974b  libstdc++-v3/testsuite/decimal/ctor.cc
! 007f23909f0328f51e5f86040cb4ffae  libstdc++-v3/testsuite/decimal/incdec-memfunc.cc
! efc9674fd2af861cfe14804d5b48c3b8  libstdc++-v3/testsuite/decimal/incdec.cc
! a852675c952127611254b56f6d62af18  libstdc++-v3/testsuite/decimal/make-decimal.cc
! 7ecff23847713d6e62cfc1867d486de4  libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc
! 35fd1d16609e9afb62cc47c56e22d3d8  libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc
! 3c00de99370a3a5e020b0fc7ffe967e0  libstdc++-v3/testsuite/decimal/operator_neg.cc
! fd0b733488110c2d3dbbc7de1e093c15  libstdc++-v3/testsuite/decimal/pr54036-1.cc
! 4c7233e836132fdf46a67e95426e2bf3  libstdc++-v3/testsuite/decimal/pr54036-2.cc
! ee6b58a866de844016b0a7ce5c41d258  libstdc++-v3/testsuite/decimal/pr54036-3.cc
! 4de55e35e6b1673933043def13b54a12  libstdc++-v3/testsuite/decimal/pr58815.cc
! 8fb3f682688a23dcafb58b16d7df8faf  libstdc++-v3/testsuite/decimal/unary-arith.cc
! 1855475c2a7e93a50ac633a4ca41569d  libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
! e66e3d0a8213f889e00693a20624b593  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
! 4b5040a0f81ae4a0276d46cf10a08ec8  libstdc++-v3/testsuite/experimental/algorithm/search.cc
! 3b916c6cc18cb06aae23303f6b80a2f6  libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
! 60b153402496f35cee067ca1c627f7f1  libstdc++-v3/testsuite/experimental/any/assign/1.cc
! 15ac155fc8249cc0196f8baa6367c4c7  libstdc++-v3/testsuite/experimental/any/assign/2.cc
! 84b74d4c72e28335f4bb87d5f371eabd  libstdc++-v3/testsuite/experimental/any/assign/exception.cc
! 33b460f445f4a713f204d0ef62594569  libstdc++-v3/testsuite/experimental/any/assign/self.cc
! ad780d7f81cf7f7ccc845b99ed0beb9e  libstdc++-v3/testsuite/experimental/any/cons/1.cc
! 1dda3bdeb69971606b7c9e35ffc4263f  libstdc++-v3/testsuite/experimental/any/cons/2.cc
! d46b351954f82ebe1742e28195d9fc40  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
! 83d68e3753567dbdc35a87e0e251edde  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 836fe3bbe216f4091de1a0b4598e3728  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! 86a34a075f891503307ba7bf70845615  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
! 414012fe81873cad2d2957afd95404a1  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
! bb6a21c3b983ca1e0f627b097b92d18c  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
! 1b34e67c7efc9319e653ec29baaa5dd3  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
! 9aeb82007e5ce29ec7227d4d37f394d9  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! 7e7d87fcb89af44411f3c4248a3f2dbc  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 3adc85a81e4ee80982c53d4fa3f45de9  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 2c6d139700531f8a855705a75e0c293c  libstdc++-v3/testsuite/experimental/array/neg.cc
! eed4d160963378898dde2692dcea87d6  libstdc++-v3/testsuite/experimental/chrono/value.cc
! 5ed8a0dc031a8b99e196cc860447e1f8  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  486c6490ca99880768c8a8d443ad1c02  libstdc++-v3/testsuite/experimental/feat-char8_t.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  f754118861b851f83334813d834cb200  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! b357baf6c5aabc7bc6a18b73a159c3f9  libstdc++-v3/testsuite/experimental/filesystem/file_status/1.cc
! 6fbf2560cc0f0331e3d9474af50277eb  libstdc++-v3/testsuite/experimental/filesystem/filesystem_error/cons.cc
! 31d7e0339aa1c55135ff715e3bdf5a40  libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc
! 15d97adbea01f9ee987eb466a50852a0  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! e7f7a6612d48e99b8ae3abf349300f98  libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc
! 02567ec9ced57ac83a8e6c57e3f6d059  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! 766303c46328ef38a40e7068e2787755  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
! 615b030dd60bf2961229294935d0d4c0  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
! 88b4c2a89c0318b308a7e807b3051546  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! b02025774f7094f0f6b7adfe93800788  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 1bdba62c51b854561a1b504d0e2e1247  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! e7e8dcabc9ea03dbfe622f77cbdbee0d  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! 0b6be655195128ee4c4a44059a79f483  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
! 86df7b64e4c303e0d8b514da3f6e2403  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
! ad0e395725a0a7fd04d783fa3ecc9f9c  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! 4edc111e04a46ececccad8c8b357c98d  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! 998942b6add860e6956b4d91ebeb4f4c  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
! 49e6da792986ffc12c1d8c07de270f8c  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! be0eb21bfeb3e5951b30037607f7fdba  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
! 0f922a31779989a0ea876dd964fa65f7  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
! c90e8c6e8bca9324266399bc7b90c67e  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
! ce4e3b026d90680ebc0fe4fbad021234  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
! 95a81a3477d2423081109698faa46551  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! b4f37ca1a49ec5f581b82a11df7d16f5  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
! d9d8f528e26148b9e5ce25c2465d78a5  libstdc++-v3/testsuite/experimental/filesystem/operations/rename.cc
! 42fb26d4b1bfe4b2a82aafea0394fedf  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
! 81ab8f91b46f67b697f511fdc43eff1b  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 49cd40daf9356e52b29d0fb0bfb7c9de  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
! 8ef651ed096892f69bd51e7a14ff658d  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
! af94bca4fb8ea7b8b6ee9f243aad2ceb  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
! 38780d6885c6b10bc581759b893962de  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
! cf30a87be5c57c8dab89752cec4deaa6  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
! de8358f5ac8739ce7fb8ec5b5755ef32  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
! a1c99c4740a93297fdc15b05b1594464  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
! 3d42f4c68739acefd641e66e14a2a159  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
! 7e0e17299eb53a2308c5c68339b0546c  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
  c06b01e19066f0d4ffa4faa5202f4e3e  libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc
! 0b9876d2dbc13ea170ce1e6f98c951a7  libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
! f075500414fc6cbaf74c652ceabb379f  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90281.cc
! abdd6f0c4be378f596d9eafe1d838cb4  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc
! 117246a83e96fccd8c3b5aeac5882f9c  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
! 441fcf2bc3399ac3cc19178605716898  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
! d9b9a772f9f82a1016a72762f2c923e4  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! 49610b1008293080dfe2b412ce4d9dd8  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! d70f1369f2457c48cbb60aba36f43d85  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
! a878fb4e4a44e83a9e5e4f07f255b753  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
! 73d81aa819bb39f7bea487957e3b5eb8  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
! 19a946507c9b04e3a88f4d1999b9118f  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
! 0578fff4471141c8de6245c1b6912dba  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/relative_path.cc
! c2432f587fdc2af76f51c5c2b8546c38  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_directory.cc
! 631455e35c6cf9a85f96dcbfb04c9438  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_name.cc
! e6a9356f67d4cb90c86d972230efe54d  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_path.cc
! 8079555d0ba670b7276ed1c75948b280  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/stem.cc
! beb8514b7f89f1777825761d0c4dc55c  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc
! 8161d3ca49a4fb1a12a9db97af4dad96  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path.cc
! 613d77f20a83c5d1b688775b114b2ac2  libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc
! 753daca7a82baa95fe5a1969c4f32dd3  libstdc++-v3/testsuite/experimental/filesystem/path/itr/traversal.cc
! 26b5af9964e5f5f4118aa925b35c731e  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/clear.cc
! f7e4e3a1e12199a4a0990676b79ed0a4  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/make_preferred.cc
! b5bba3254ece204c89d1d5fc33574aa0  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/remove_filename.cc
! acadc4b73522aa19262abfcae72cbaac  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_extension.cc
! 08776cf9a0f6d09f31341f050e957f08  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_filename.cc
! c290820fd2a73635dff594a3214ebbf6  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/swap.cc
! b4306216c0d704ad5816705b04bbfa75  libstdc++-v3/testsuite/experimental/filesystem/path/native/alloc.cc
  6972da7c2da200c073d985ccbd580534  libstdc++-v3/testsuite/experimental/filesystem/path/native/conv_c++23.cc
! 7f5d1f8dbae7d74be61d296a6ac8e21a  libstdc++-v3/testsuite/experimental/filesystem/path/native/string-char8_t.cc
! 9d03a9d580c99d61b8db0002bd2a4036  libstdc++-v3/testsuite/experimental/filesystem/path/native/string.cc
! e78162b8e8e4091a5e2b7b1804982d82  libstdc++-v3/testsuite/experimental/filesystem/path/nonmember/hash_value.cc
! 26762f8b3d13d800f40f66a079dcf456  libstdc++-v3/testsuite/experimental/filesystem/path/preferred_separator.cc
! ece31d32a7ede5bddf2425459c972620  libstdc++-v3/testsuite/experimental/filesystem/path/query/empty.cc
! 571ac5f34ce23460667ef3e66e98f8c3  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_extension.cc
! 155f99532041631c9984128bb6fbd218  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_filename.cc
! 81968ae6ebd754298afb3dde41931ec8  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_parent_path.cc
! 68d0c191f5181f4c010391b4200f1ba5  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_relative_path.cc
! 07ef744f0490a61d02dc851811a0455c  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_directory.cc
! 079111264c4765e70225b84def3608ca  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_name.cc
! 62dd5a7e447a4c2524f9d00358bf7b1d  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
! 1d90f33934908b087b50454cb81180d9  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
! 3bc4245cc7a298bc14295339ce760ad5  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_absolute.cc
! 5024415e17040f8a1a7edc2df09b669f  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! 70857cb956fc639d1d8d79dcd9b62cb4  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
! 07713026fff9e9fa628e2ad7a0424adf  libstdc++-v3/testsuite/experimental/functional/87538.cc
! fc27917bfd06b0da39685726994ee558  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
! c072813ca9d951bd5bf4d45d13f21795  libstdc++-v3/testsuite/experimental/functional/searchers.cc
! 9ddf02c730a9da6819b2fe33c51e2028  libstdc++-v3/testsuite/experimental/functional/value.cc
! b6951d2f024d046b08327415a64899b9  libstdc++-v3/testsuite/experimental/iterator/make_ostream_joiner.cc
! 284375aed621a96fcaaafdab8784748f  libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
! b65ef5917dcf69e9a0e6361f13ad1399  libstdc++-v3/testsuite/experimental/iterator/requirements.cc
! 5debec698f8b51e49a93032e0aae331c  libstdc++-v3/testsuite/experimental/list/erasure.cc
! 1edab0ea7a399c78a087ba7feb1fd716  libstdc++-v3/testsuite/experimental/map/erasure.cc
! f339b0ccf33940d6baa2b4b5aee63f3c  libstdc++-v3/testsuite/experimental/memory/observer_ptr/assignment/assign.cc
! 1cde77182e2d0a28a4ec3495724c86ae  libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
! 073abb012ce0920ae14056bac3384d97  libstdc++-v3/testsuite/experimental/memory/observer_ptr/hash/hash.cc
! 153de57941f42956f611f304857ca67c  libstdc++-v3/testsuite/experimental/memory/observer_ptr/make_observer.cc
! dbd522679361f5d031161b4aeee97d74  libstdc++-v3/testsuite/experimental/memory/observer_ptr/relops/relops.cc
! 08c9080c3a29f52b25dc3e40a438ae57  libstdc++-v3/testsuite/experimental/memory/observer_ptr/requirements.cc
! 7e5555ea1a6eda5b821f25d24eb3e0d8  libstdc++-v3/testsuite/experimental/memory/observer_ptr/swap/swap.cc
! 6609df5490406fa90811999592481907  libstdc++-v3/testsuite/experimental/memory/observer_ptr/typedefs.cc
! fbef30f472a59124ec1f08b490bbc8c0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/assign/assign.cc
! c395bf88123732e5271e7f77d5157f75  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cast/cast.cc
! 80600a7e0ac40f1b96c3f86cc06f19df  libstdc++-v3/testsuite/experimental/memory/shared_ptr/comparison/comparison.cc
! 040bfaa811ab15cbd567757395b6ab73  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc
! 40d0a2f9b4efdb6da3b0dd8fcf6410d1  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc
! effcf58a4acbc41eb6555035cc386678  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc
! bab6d62d80c28132a999c2749b626485  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
! 603481f9ef11a233ce355c1405f442b3  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc
! 1517f575f46e392d43a65b4f10eb58af  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/enable_shared_from_this.cc
! 8152b55ffa496d3b8310ec1fe9aa26b9  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc
! 5edf8db9fa81c8b68f9354c8acdef4cf  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc
! a84cf43fc76e8114c678f302ce886594  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
! a015dafa62614011fef1773bf60c4771  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/torture.cc
! 49166c21126fad3f8f0c67414b8a927a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc
! 5dd89af374c0136981734e20e1c87244  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc
! 1cff2bb2aaafdbbddd3776b781513e5d  libstdc++-v3/testsuite/experimental/memory/shared_ptr/dest/dest.cc
! 925af6fa787be1cc8be92d7bb439e8b3  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset.cc
! 55821d0567cb3c7c683574bf07017d0d  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc
! 1a146c21f13f4169078617848ba5b4d0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/swap.cc
! 98891a20e6b73a6318c713041cf89897  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc
! debd2d8b9abb4ae30f662c2e2ca9bcaa  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/operators.cc
! 23209525cf62d4bb65dd8f310d4d8207  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
! b70e0a5172ec5f9f6728bebde90c594a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
! 2e9d54f3ec5450219d742ff60b8603eb  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
! f83c642c5cf8144608d9f3eef01da01a  libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
! 7ec61e18aeca5ce48c00e102f01dc4b2  libstdc++-v3/testsuite/experimental/memory_resource/new_delete_resource.cc
! 34f81536645e5cb8f003255fc0a4dd0b  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! d0d4eb65f2c11a810c16b11ce85aabe2  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
! 6e7ef302b1419f2ae59f3e578323da7b  libstdc++-v3/testsuite/experimental/names.cc
! 742614f6aeadfb12159e2c63231e4757  libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
! 74095c872cfe301d33bec81bd1c9218f  libstdc++-v3/testsuite/experimental/net/buffer/const.cc
! 3bcd6973e40545e1aa4d54bd34ebc470  libstdc++-v3/testsuite/experimental/net/buffer/creation.cc
! cbe71d9f99d136b7b879a353ea19e7e3  libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
! 1cf2efdcc2d9935ad243a2625457b0b5  libstdc++-v3/testsuite/experimental/net/buffer/size.cc
! b1613e2cdfd6911dd174f71b481b1d36  libstdc++-v3/testsuite/experimental/net/buffer/traits.cc
! 57c414ecc27f0068e20886584a1f7991  libstdc++-v3/testsuite/experimental/net/execution_context/make_service.cc
! 702230c85083af042ff07ccf77588a82  libstdc++-v3/testsuite/experimental/net/execution_context/use_service.cc
! 31a2bc56c340889cd57f503995766279  libstdc++-v3/testsuite/experimental/net/executor/1.cc
! 73aeabca49d57441263ca4936b1c8f20  libstdc++-v3/testsuite/experimental/net/headers.cc
! d3648d8a2ddc3c7201a4d5148ea0eabb  libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc
! 00506fb63688d25ff5f59cd4362c759c  libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc
! b82e376b28cf430be76d2adc2ffa231a  libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc
! 3a11c8807fab0d2f61e6dda6fc2fb3de  libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc
! 2011063352328b4b10ea7578b6f6b968  libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc
! e074bf09364a14b650e240651a0a47bc  libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc
! 4e3970ded3af166abeb3813088cc10ea  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc
! 8947f13760e616166e7059b1a52984f1  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc
  760dec58bec2534cd56103a2710b1e16  libstdc++-v3/testsuite/experimental/net/internet/socket/opt.cc
  47ab303b0324b578953893e188a1c4e8  libstdc++-v3/testsuite/experimental/net/internet/tcp.cc
  31837180dee34f479c2c7eaafac7b04a  libstdc++-v3/testsuite/experimental/net/internet/udp.cc
! 9502d974aff093bf40321c231d7c6fea  libstdc++-v3/testsuite/experimental/net/socket/basic_socket.cc
! 4b30167c6c8c0a400a010c1c68d65f97  libstdc++-v3/testsuite/experimental/net/socket/socket_base.cc
! b592429f76d9de3fe349632c83cb0fb8  libstdc++-v3/testsuite/experimental/net/system_context/1.cc
! 5c205abe6e67dfacaaf1729f73362535  libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
! aeffb14826f84ed208d44d4b7a16c544  libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
! 13ae5cf17310a1d26ad3d90ba8f0b04b  libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
! 08903c118915ea892f15b70e63714da5  libstdc++-v3/testsuite/experimental/numeric/77801.cc
! bf5f701c1a2d539150ee3bbb5fc4b4a6  libstdc++-v3/testsuite/experimental/numeric/92978.cc
! 0f916ff6e99923cabb3d611b3316c522  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
! 55320d75a04e212a406f9e805f2b0e44  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
! cbf3b6ab9b3e6bf39dd11942036c770b  libstdc++-v3/testsuite/experimental/optional/77288.cc
! 498dba80901367a5dd032711f1ef1906  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! 4d4af65c8acdad8d68d39a1f67e542b7  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! 9f2798466bbeeba5a6375af22e59f82a  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 0d4496b001da828b8e49d42094ede3fb  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! d61a802c8674b42ffc8d09a5f2c6a729  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! 554eceae07262a2d58e207ebd0346539  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
! e18963a619dead7f5bd227465fa922a7  libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
! 2fb997c0431e536c0d6e2d2efa565127  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
! 70452a6bb21bad4cfd4ff36d9108b66d  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! f8bf594c84df583475bcc04b7677ff81  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! a6334ce9d75a464fd68d13e0d82786f3  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
! 22bc7f36384edeefeda4a7f3acc1ef2f  libstdc++-v3/testsuite/experimental/optional/cons/value_neg.cc
! 69f463470db56f9889001867e2b68a18  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! aa2fe21b181cb423099c36417a4825cd  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
! fd33ac5db4537a5a34a2c4f75d5452d7  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! 4df8e0cf6294c2aff91e143763febdab  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
! 2f33bc655bd4c7228447c0c5fa7e61f2  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! 18ae26339adb3e014b579e88861048c1  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! 669be693a439154e252817c14c189a6e  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 1db63bd3b22eb6c2251f0431789e5386  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! 804e41cd1d6399ad4c878d32048b0c8c  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! cf95aa7e80dcd055ae9ebf2ffaafef32  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! de9ecacc421b4c8f101619b94b73e71a  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! 94733be289d4ac4363a1ac35606ad45b  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 5c136aa5a6e46985eb3b041bfaad7e07  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! 556212fd99a05532fd02ca97e171e385  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! d762e9cf2b6b05c0ab43e5b68cf2590c  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 29055c41be1558ca88e355440246dff7  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
! 4d085a2ebe4f7d8d86bf73b92879955e  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! eee3fc791af020b036598104052338d7  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
! cc603ec60eda2842d25146d96e6c0b63  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 8c51936c70ecc52b783dc933097467e0  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! 9dbb0842ba2aa8d4d1d4d5a4ed17292a  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! 21ba54057ff47de677e6f8f3757364ca  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! 69abf82fe9a65c23fcac29922cd88594  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! 57d959feb55fdfe89306c6f257daaa0f  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! c34f2371f080ac983c662437f8066b32  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! 340abc9ff2213c9927465d9a995ce99a  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! 5ef54265c1c7707b5d3b524fe5e33171  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! b4a65311dda5acc007f812d36cf114d9  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! ac7c1e6eaff8635448e5e802788f0818  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! 0270fb4f487c2e337bddb825ec1f0884  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! e67d12dbc273203ea4acbcdd4aae7916  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! c4b0dc7bce21c2e3ecb4dbfff2a758c9  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! 9c69795afed13bd706237a9548e36896  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! c07cd2f2f33e506b170367ff2836dcc3  libstdc++-v3/testsuite/experimental/polymorphic_allocator/1.cc
! a5493b11a7a33289c55b6c04bf299d1d  libstdc++-v3/testsuite/experimental/polymorphic_allocator/construct_pair.cc
! 150b7158fe71628f707a67b3528dbb84  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc
! 2b16144856ea7971258da6360bcccf51  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc
! b0e71acff7a7efa49759b69151d1c0c9  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc
! 2ad6aab85843a1db0d4e3765636dc710  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc
! 844fbb99abb380987eb3fe110a65333f  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc
! dbba46837f7923f6c3a0a4aa08d90b65  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc
! 309a08e7711be3a0fa64c441e9d5fd5a  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc
! da4330ba3ab141027b843bcd0bdae7ea  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc
! 813b7b61a5bee7304250340507e6ef77  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc
! 803aaea936c2f816acfc6d60f1659228  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc
! 000beb19851d97668385bbfd5861065c  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc
! d07a6030018c02024b0ec8773bf46bd3  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc
! 2585a605e6f87f500e55010e8155d101  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc
! 976e1fdb48cbd3d110d16d90ff3ac299  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc
! fdcdb87b6de1f4d3386c58e40a533f2d  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
! e42fbbefa907d82a4298a5a225046553  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! c60f38c68698dec2918f543b1f1f8ebd  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
! 8e4cb818085d67670affc6197b4f9536  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
! 1b85c47fe8a2a268c933beb5ef1632dc  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
! 86e56748c7d46a98183a9ab5ad3c2607  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! b7914cd9230608e2ef135555ac0c003a  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
! 7f95b85d845a1296abe11496ad0b84d4  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
! 269d1e7a6c5e595efa13640e01069b1c  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
! 20383fe554e0df7fcae4147a45126f4d  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
! f0cc6f3053907165e5178ef188855a76  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! e3a4da97d92d477b401b0c580a719522  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! 48da2319561fd0a15b1d8093c6d349a3  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! 8b57bd85b145c4ef75df41ec27e0947a  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! 1276d142c754403ddc75aee0971bd897  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
! 491d13032c524e7a81dcf0881b2ecdc7  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
  f622008c5ec7680a2ac920136d22446f  libstdc++-v3/testsuite/experimental/propagate_const/swap/lwg3413.cc
! b93e0710a0763b0ab478508778ecb7f6  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
! c23d8e205921a557cc24094816eebca2  libstdc++-v3/testsuite/experimental/random/randint.cc
! 8c22b80c2c591cedf3c470dc35296cd5  libstdc++-v3/testsuite/experimental/ratio/value.cc
! e76cacb547be6682c5bcb612e33f9848  libstdc++-v3/testsuite/experimental/set/erasure.cc
! 06f792c2a68c984e9373fbacc0395cc8  libstdc++-v3/testsuite/experimental/simd/README.md
  2c666451450a60415a52ed94723ea1a6  libstdc++-v3/testsuite/experimental/simd/driver.sh
! 744a88ed80132268f2d29c9d5e586308  libstdc++-v3/testsuite/experimental/simd/generate_makefile.sh
! febb06982704a772da61d7b14e5795ee  libstdc++-v3/testsuite/experimental/simd/standard_abi_usable.cc
! 8456d329f682f25f869aac367480356e  libstdc++-v3/testsuite/experimental/simd/standard_abi_usable_2.cc
! 59bc95299ad0d5ce1b19ecb4358e5c43  libstdc++-v3/testsuite/experimental/simd/tests/abs.cc
! 700103eee36be87672188553a6a091aa  libstdc++-v3/testsuite/experimental/simd/tests/algorithms.cc
! 1d729f1e1dac2912a372ba02170dc902  libstdc++-v3/testsuite/experimental/simd/tests/bits/conversions.h
! d8a900a4f4ddb43bc65700e3f26a5c70  libstdc++-v3/testsuite/experimental/simd/tests/bits/make_vec.h
! 2ec4807769a55c12f4ae2997b143f48c  libstdc++-v3/testsuite/experimental/simd/tests/bits/mathreference.h
! a67eb2ee0fc0b52a4ea80cc1a362c90e  libstdc++-v3/testsuite/experimental/simd/tests/bits/metahelpers.h
! 3e387e5066588d87ae63b7beedc53310  libstdc++-v3/testsuite/experimental/simd/tests/bits/simd_view.h
! 60391931cdc5301e68c13fbbd1054cbb  libstdc++-v3/testsuite/experimental/simd/tests/bits/test_values.h
! d32d57c818b064ed375165ea4754089f  libstdc++-v3/testsuite/experimental/simd/tests/bits/ulp.h
! 894d87f64667108934c51328d2a7572d  libstdc++-v3/testsuite/experimental/simd/tests/bits/verify.h
! 60407475679dc04e7d60bb1bc86dffdb  libstdc++-v3/testsuite/experimental/simd/tests/broadcast.cc
! ffc42372c02e90af242f59788399db5a  libstdc++-v3/testsuite/experimental/simd/tests/casts.cc
! 101a999bb7c646b579b4376416643895  libstdc++-v3/testsuite/experimental/simd/tests/fpclassify.cc
! 5c39c95d201f635a1de2535d53521fc9  libstdc++-v3/testsuite/experimental/simd/tests/frexp.cc
! af847d64df49c134727d3da5561a3723  libstdc++-v3/testsuite/experimental/simd/tests/generator.cc
! b234ef1901b5ba6d6ef358f2098f9475  libstdc++-v3/testsuite/experimental/simd/tests/hypot3_fma.cc
! 9002b5364b98cae972f0c9239f161205  libstdc++-v3/testsuite/experimental/simd/tests/integer_operators.cc
! e71a311524b3ac7dcc5fa6956e5b5a81  libstdc++-v3/testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc
! 2f4834e979867c7f1db242a3dc9e0f84  libstdc++-v3/testsuite/experimental/simd/tests/loadstore.cc
! 894e612c58b45d3a0a0664f507d404ce  libstdc++-v3/testsuite/experimental/simd/tests/logarithm.cc
! a0f7c3ca5a18f8542ba3a9915810f127  libstdc++-v3/testsuite/experimental/simd/tests/mask_broadcast.cc
! b107b97473b7c99530a8603cf2da2324  libstdc++-v3/testsuite/experimental/simd/tests/mask_conversions.cc
! 2b751bab06aaa71fa2b9053371d4f5be  libstdc++-v3/testsuite/experimental/simd/tests/mask_implicit_cvt.cc
! 95d080ad29a085069086bdaf167762f0  libstdc++-v3/testsuite/experimental/simd/tests/mask_loadstore.cc
! 876a2b4d92f48bf202eba82d0d91aa3c  libstdc++-v3/testsuite/experimental/simd/tests/mask_operator_cvt.cc
! 488d92ac97a21e8fec882e61337e223d  libstdc++-v3/testsuite/experimental/simd/tests/mask_operators.cc
! 9a3d07ed231ad4a8ac07b19bb4761b2b  libstdc++-v3/testsuite/experimental/simd/tests/mask_reductions.cc
! 951b947393323da0fd0bd090f8fc81d9  libstdc++-v3/testsuite/experimental/simd/tests/math_1arg.cc
! 1595c4b98dd21d21548e171ba5bb5a7a  libstdc++-v3/testsuite/experimental/simd/tests/math_2arg.cc
! d21cdbc7bc3b41b29957f4e2fd8e3357  libstdc++-v3/testsuite/experimental/simd/tests/operator_cvt.cc
! a1746f8466860ca904d500d2b9e03548  libstdc++-v3/testsuite/experimental/simd/tests/operators.cc
! dd671dbe35947377857f0f71337ea225  libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
! 602de48c0437c1eca409deac2c196c53  libstdc++-v3/testsuite/experimental/simd/tests/remqo.cc
! 2b03327b12708d313a4591a4fbb2f3e2  libstdc++-v3/testsuite/experimental/simd/tests/simd.cc
! 070b37e3ae10319ba1cdd6a15808e929  libstdc++-v3/testsuite/experimental/simd/tests/sincos.cc
! 2cb204227ac6a30742376b71c73ab773  libstdc++-v3/testsuite/experimental/simd/tests/split_concat.cc
! 08fa96bd646c4d617dfedb1436d00717  libstdc++-v3/testsuite/experimental/simd/tests/splits.cc
! 9bf3b6278fe2f036cc846a88df8ebcb3  libstdc++-v3/testsuite/experimental/simd/tests/trigonometric.cc
! 201affd1d9ed7afd66658b1f2f5701c0  libstdc++-v3/testsuite/experimental/simd/tests/trunc_ceil_floor.cc
! 2f197150877211119ac153f159dc1200  libstdc++-v3/testsuite/experimental/simd/tests/where.cc
! ebdd856dc1e0446c45236f494cddaefb  libstdc++-v3/testsuite/experimental/source_location/1.cc
! fccce21c04130e6b402d758f8e7e4de4  libstdc++-v3/testsuite/experimental/string/erasure.cc
! aae5c600f5554ad5c6eb779ebf0c4654  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
! aa325a2cd2b797c594c78856d7828cce  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
! 57a9ad1d51b82b97e7488fa70eff2508  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
! 854e1a8e3952f3b5643bb686e11ee2ca  libstdc++-v3/testsuite/experimental/string_view/cons/char/3.cc
! a46936d2e14861ef3d5f44ed3edc4dd8  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/1.cc
! d82484a2dcdfc601617c80f8c6cead43  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/2.cc
! 2976b9a6cb3204ce473d013f818f8c3a  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/3.cc
! 3218396a222d19dbb84abe44d2c3feab  libstdc++-v3/testsuite/experimental/string_view/element_access/char/1.cc
! 2848f2a414cf137cd63d6a25116054c3  libstdc++-v3/testsuite/experimental/string_view/element_access/char/2.cc
! 1d00e9dfd056a13229a7099b7982a60c  libstdc++-v3/testsuite/experimental/string_view/element_access/char/empty.cc
! d9be4d897203e2bc2cad8c4f747897e3  libstdc++-v3/testsuite/experimental/string_view/element_access/char/front_back.cc
! 9c639d3749c74361f5ec92c30c3e9849  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/1.cc
! 880d817ea80291e8396b959955b73d7d  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/2.cc
! d309ebf9476bcafc318a3379e715dabe  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/empty.cc
! 7a9b59c2b6026a82b280e44a997726da  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/front_back.cc
! 89ce11ae18e6b7ff683994ead9a083a1  libstdc++-v3/testsuite/experimental/string_view/include.cc
! eeff477514e10d629bedb1218424d391  libstdc++-v3/testsuite/experimental/string_view/inserters/char/1.cc
! 30719ff0712e1084d21d32d341291c9b  libstdc++-v3/testsuite/experimental/string_view/inserters/char/2.cc
! 7832808188c0d28458ca5df561e0310e  libstdc++-v3/testsuite/experimental/string_view/inserters/char/3.cc
! 3c4aec9b6ab894e097f4bdd6f88efa9a  libstdc++-v3/testsuite/experimental/string_view/inserters/pod/10081-out.cc
! 13e2a0b5efa4387bdaba4edaa0d41ed8  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/1.cc
! 9992c83cbc153043130f77bf2fa4870f  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/2.cc
! c120e7df7cadcf3886ed7f30071464f7  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/3.cc
! 5ea5cec91e23d758a3f275928fbd61ec  libstdc++-v3/testsuite/experimental/string_view/literals/types-char8_t.cc
! 6af7ac51b586ccec6c4cb1be6c930e1d  libstdc++-v3/testsuite/experimental/string_view/literals/types.cc
! 35752fcc7e5c14fc9f6a3678aacbc447  libstdc++-v3/testsuite/experimental/string_view/literals/values-char8_t.cc
! 11eac918b49b9d94b6baa9b69fb8f8ce  libstdc++-v3/testsuite/experimental/string_view/literals/values.cc
! c9a1780807cb0b1fbc9e9641bf97a4d4  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc
! 461d84d839ea79f42d526c0e8f2dfd49  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/1.cc
! 4229dbfb9caba704b76ba8cd6450d9ce  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc
! 640244a2e7ca42aae610da01531bd265  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/1.cc
! ac9383d635fbd5702d74980c6a5486b1  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/1.cc
! cbc5ec77b7022ed5116bedf42a097016  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/13650.cc
! 479cfe9051e33236ba6a896f3e05c91f  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc
! e1716352c188f05917120902672a1152  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
! bbc33c6474f73df6f17d3e8c1f11a3a3  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/13650.cc
! 9e3142c2677de6c80db7aba30ae44c61  libstdc++-v3/testsuite/experimental/string_view/operations/copy/char/1.cc
! 0ab0d0ee9d0b95a973ecbc32b59be288  libstdc++-v3/testsuite/experimental/string_view/operations/copy/wchar_t/1.cc
  672cb4f94c8a852e6bdb846e926365f9  libstdc++-v3/testsuite/experimental/string_view/operations/data/char/1.cc
  3500b68ff8c9b68295a6f4a0a348e9d8  libstdc++-v3/testsuite/experimental/string_view/operations/data/wchar_t/1.cc
! 4e76018e15e881d95c1911bf00a62689  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/1.cc
! 7ca9b0a98c7e8c7cbc9b4330ac886944  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/2.cc
! 22b75513f253903f5e6707e50a99ec16  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/3.cc
! bea5e702142fb5e798fe09582e3995b6  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/4.cc
! fd00f010cbd454522963b93ade751558  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/1.cc
! ad2af0de869ebd7439e683729b8e7589  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/2.cc
! e9872a1f58a6ce031176ca84076afad4  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/3.cc
! 24f4b050ab109e7c951c9aa6ec4631d2  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/4.cc
! 03a684210c29ba779cead9cd22d14b2c  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/1.cc
! 577e7f44686aa9d0e7d6df6ba097016e  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
! 4b7e53eabdb892cf9b4f17e245f0994e  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/3.cc
! a7f3602b98a02360a0d8a59364029297  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc
! 9ef9d6bb140c7fbf50e08c83b2e39ad0  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc
! 091e4831f66b2a9cb9af03cf21555fb7  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc
! 86180322603ef254cd183cf50ff20a12  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
! 1f1dac21c96c80f97dafaddb54fe11b6  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/83511.cc
! 3105ee8f20c2c7167a9cb0f816153f88  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/1.cc
! d81146368e64288a42280c2a0c9cd5b3  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc
! 7a6f20cc2e6aa6d278360165fd0ff832  libstdc++-v3/testsuite/experimental/string_view/operations/to_string/1.cc
! ef908bfb2fecf09fde59037ef419a8e6  libstdc++-v3/testsuite/experimental/string_view/operators/char/2.cc
! e896e5c50053cf5d4e4d785c50853df9  libstdc++-v3/testsuite/experimental/string_view/operators/wchar_t/2.cc
! f744e0d2695656d9ccc11d666aeac5e2  libstdc++-v3/testsuite/experimental/string_view/range_access/char/1.cc
! 7f3c8f4679ba84a9703f67c6513446bd  libstdc++-v3/testsuite/experimental/string_view/range_access/wchar_t/1.cc
! 549d216ffc7a9cdd04ed17d6aa5e2dd2  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/1.cc
! dd6759b40a7f7a797962e13433070128  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char/1.cc
! 8ef0d93163214696270c7e3eab0a0a0f  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char16_t/1.cc
! 998ba362b6e26056009d07044f85f301  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
! c97bb58a0d698de4ac0963f0a2971db0  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char8_t/1.cc
! 2ea27c389fe9f2cdd56b517580289990  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
! 667094772a251d3a614c05b38a484ec2  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! 082b55b5bcbe6779a39c54e959a5d9e3  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
! ebdd3bcc1466d8e7516c043bd77303d9  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! 44afa132fe15442f7cad19b625884b73  libstdc++-v3/testsuite/experimental/system_error/value.cc
! 5b0712bcc9e4658332efc1e4fadb2a47  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! 3cea9014a306fa483a156f1b2dd46b40  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! 7ec34dcad065e7410f753722687fdd95  libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
! 510d02a7d32b8c1922c962e50e0e1cc9  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
! 1f0c05d43977c47719353a318e92dab5  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
! 121a46c91c15d9ea4e57bd6384acc542  libstdc++-v3/testsuite/experimental/type_traits/nonesuch.cc
! 6ee6006782b89511f9be1fa348ff9ead  libstdc++-v3/testsuite/experimental/type_traits/value.cc
! 08ce3bc05e2f489fbd8f2d7fc80b9faa  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
! 49114fa86650037d7e3f2468ca0d2d3f  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
! 9a1cde2611fbb833c1498ffcecc35f5a  libstdc++-v3/testsuite/experimental/vector/erasure.cc
! afb41841e059f0f1a2784b31eb1faf21  libstdc++-v3/testsuite/ext/bitmap_allocator/check_allocate_max_size.cc
! bc5fc5513a879fb9937c7ab97c6f4f0a  libstdc++-v3/testsuite/ext/bitmap_allocator/check_deallocate_null.cc
! 5d289d1eccc3f0e365adaad8f42fca35  libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
! cb792f0bca5e94b12e22db6855940365  libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
! 92588d4dd6ba9f4747eae4a70bbce806  libstdc++-v3/testsuite/ext/bitmap_allocator/overaligned.cc
! c2f072c2ef9ddea33c364364f9b72861  libstdc++-v3/testsuite/ext/bitmap_allocator/variadic_construct.cc
  846dc8224edb857bb6953efa8b4cdb2d  libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc
! 6dc07c2d76a722ae7bfdd0c9428c9ad1  libstdc++-v3/testsuite/ext/codecvt/1.cc
! 8bdb6ea918a922d7bc9bdb422e9ed6e4  libstdc++-v3/testsuite/ext/codecvt/char-1.cc
! 53321c05f40e3329c7290ff079ffe4ac  libstdc++-v3/testsuite/ext/codecvt/char-2.cc
! 797cfffe75dcc502ab1d21823f8f670c  libstdc++-v3/testsuite/ext/codecvt/wchar_t.cc
! 70b4f4c7e814066d86c950dd703552ee  libstdc++-v3/testsuite/ext/concept_checks.cc
! 25f6fee79a64f933867e412061c1993c  libstdc++-v3/testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc
! 99f77273e3197089db305da24bd3ef3d  libstdc++-v3/testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc
! 4ab0fe1ce21330185817e71442ac97b4  libstdc++-v3/testsuite/ext/debug_allocator/56170.cc
! 858d066014b03e7f7c7304a0e13ae823  libstdc++-v3/testsuite/ext/debug_allocator/check_deallocate_null.cc
! 04f95b2e88e51b954cd58ffeb5e44f13  libstdc++-v3/testsuite/ext/debug_allocator/check_delete.cc
! 26ee9c9085254a498e98ac62d70b7b97  libstdc++-v3/testsuite/ext/debug_allocator/check_new.cc
! 07db630e38d9e039e377647819d903d0  libstdc++-v3/testsuite/ext/debug_allocator/eq.cc
! fa0e3756509c18e311c7e62516c07caa  libstdc++-v3/testsuite/ext/debug_allocator/explicit_instantiation.cc
! 1afebb25df9f88ed107f3971720eaee1  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
! 006af8fd0f485b55d4f1de209ea62dae  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
! 491154a08909cf3c788d84dc8a5b914b  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! f48386a66d77d4f9407cb8e267075ca4  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
! 53ade0579dc0567de4488006c024b219  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
! 897da17a02f198339a4e1dd94c9a2b88  libstdc++-v3/testsuite/ext/ext_pointer/alloc_eq.cc
! 89742f480f56f219afbb62483341b1ee  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
! deffb618bdd60edebfb418e4bad25f08  libstdc++-v3/testsuite/ext/headers.cc
! 6203c20cb1331f64f792931de7fabf0d  libstdc++-v3/testsuite/ext/iota/cxx0x.cc
! 66ff98f7343e80884705d979e0690d82  libstdc++-v3/testsuite/ext/is_heap/1.cc
! a19df04f8dc1d45353334daab20fe78c  libstdc++-v3/testsuite/ext/is_heap/47709.cc
! 3935abd05cb1297b86ab7ce20ed9d851  libstdc++-v3/testsuite/ext/is_heap/check_type.cc
! fb2aa9e24ae354dee2367176d6085f9c  libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
! 3dc4ab04e456ca17d9712b53b12642ff  libstdc++-v3/testsuite/ext/malloc_allocator/89510.cc
! 97e4cb9389b10f4708bcaf4c7179a37b  libstdc++-v3/testsuite/ext/malloc_allocator/check_allocate_max_size.cc
! d440c09c66e39778102e23b5446e1439  libstdc++-v3/testsuite/ext/malloc_allocator/check_deallocate_null.cc
! 6a8ee3a6bc124a86e1875be942e6a734  libstdc++-v3/testsuite/ext/malloc_allocator/check_delete.cc
! a499f8db9772a0e56a891f12a1b2e01a  libstdc++-v3/testsuite/ext/malloc_allocator/check_new.cc
! 1827fa3674dbfb8589a24a878fcd88fb  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
! da7aaffbfb788268ed4b460f6768af8e  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
! b3ad83c4f140270f1486b107bfbb8b52  libstdc++-v3/testsuite/ext/malloc_allocator/eq.cc
! db434f22ba49ee6a0195540f05ac280a  libstdc++-v3/testsuite/ext/malloc_allocator/explicit_instantiation.cc
! c6519d26ecb7fd5a6c2b0635c579bae0  libstdc++-v3/testsuite/ext/malloc_allocator/overaligned.cc
! a62cf823ac09848b8a20d30797c7e117  libstdc++-v3/testsuite/ext/malloc_allocator/sanity.cc
! cff911ad1b04b5554c9401573aaf9efa  libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
! ca224c75b0fa07aa9247e611b5dcb7af  libstdc++-v3/testsuite/ext/median.cc
! c2f0720a036520d598f05a180775986d  libstdc++-v3/testsuite/ext/mt_allocator/22309_thread.cc
! e8e56bc74ca0b9aa742b833618fc687b  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_big_per_type.cc
! cddd4443624c6a6a37f61cc851b9790a  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_max_size.cc
! a2ec8ffb6aaba066ce4296b5d985a1bf  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null.cc
! 2986780d26fe568392950ea319a7b791  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null_thread.cc
! c9ee93751ac0d944ff829a697d99dd58  libstdc++-v3/testsuite/ext/mt_allocator/check_delete.cc
! 88763a4e6428403afb9f152dd194fc30  libstdc++-v3/testsuite/ext/mt_allocator/check_new.cc
! edf67745d611ab0efce785419a1d73cb  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-2.cc
! 5bf599d1d5ca847a7ddd27417458a550  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-4.cc
! 2614a896f047508f411ccffde37021bb  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-1.cc
! a3e2e2e907a0fa5b2f5c12154b7d66bd  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-3.cc
! db017a069ff772c8e3e9584c8bdce516  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-2.cc
! b6ee91b6d9be8e00a62b12d69eec59e1  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-4.cc
! 2122eff4d42eb4875f42a778599f106d  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc
! 68310c632b85d3cf546d09fdf5562fb7  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-8.cc
! 35dc1e42a94c4c414f0826728f44619e  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-1.cc
! bf2213d13f36a27292b36342ca50eea0  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-3.cc
! d2fbdbdcb0505a39dd0dcea72568472a  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-5.cc
! fbc6f4117b999741fe4d58dc6fe0db31  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-7.cc
! 1f8af7a2452774dab1876b0718ae83eb  libstdc++-v3/testsuite/ext/mt_allocator/explicit_instantiation.cc
! d4fb5e557a12f8abac42ccb9802cdf46  libstdc++-v3/testsuite/ext/mt_allocator/overaligned.cc
! 51d56ba38bc42f445a5bb99a7b69077c  libstdc++-v3/testsuite/ext/mt_allocator/tune-1.cc
! c5ba8c65727e3f67591630562f03e896  libstdc++-v3/testsuite/ext/mt_allocator/tune-2.cc
! aadd4a5e3c3d9ec820f93ac76385c5ce  libstdc++-v3/testsuite/ext/mt_allocator/tune-3.cc
! 0bcbb02f149ece66eb4e4c41a9aa6bf1  libstdc++-v3/testsuite/ext/mt_allocator/tune-4.cc
! 6f564c6220b0bb6f363888f96f6e2342  libstdc++-v3/testsuite/ext/mt_allocator/variadic_construct.cc
! 68a0c353a6351a67f36cbd5bfcda92b4  libstdc++-v3/testsuite/ext/new_allocator/89510.cc
! 9ea551a5517ab73687d379399ca5349d  libstdc++-v3/testsuite/ext/new_allocator/check_allocate_max_size.cc
! 0b55cc1560efb8b140a557165a5778af  libstdc++-v3/testsuite/ext/new_allocator/check_deallocate_null.cc
! abef5b970199426c7e9374878f6eb19a  libstdc++-v3/testsuite/ext/new_allocator/check_delete.cc
! 46c9dca95e7d8ca97f3162e986366fd5  libstdc++-v3/testsuite/ext/new_allocator/check_new.cc
! 63d5f68b85aefa53d4fd243e6697a8b3  libstdc++-v3/testsuite/ext/new_allocator/deallocate_global.cc
! 2d41f12139ec61ee21576a70cacbd0d7  libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
! 40e95caabe5414f40a7c5752dafa87f3  libstdc++-v3/testsuite/ext/new_allocator/eq.cc
! a067b8eaee04dff484f73eb18147f825  libstdc++-v3/testsuite/ext/new_allocator/instantiate.cc
! 782dd98cac86264172a710d5e265a3a7  libstdc++-v3/testsuite/ext/new_allocator/overaligned.cc
! b13788827e01dcb27a3ecd0cc11e5f59  libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc
! 673182ad5ed29ed7621c9cc2b7ad34c9  libstdc++-v3/testsuite/ext/numeric_traits/numeric_traits.cc
! 52c9157740b5bae4cd93f01c7fee7490  libstdc++-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc
! c201fc1fd3a96fd4cf2bd1254508a1f2  libstdc++-v3/testsuite/ext/pb_ds/example/basic_map.cc
! b04ad30b273175cf6e39173ea3e24c0c  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
! c6272d3e336cacb5e0bfd110204f8e4e  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multiset.cc
! f4a0eb223063f9de43e52852833737b1  libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
! f12ee66af05e5855448c11607c29e399  libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
! 33cdc0aab66d5c050a3e17ad3360a3ac  libstdc++-v3/testsuite/ext/pb_ds/example/erase_if.cc
! 83f03550acb30a5776e81657df442e98  libstdc++-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc
! 564718f13d4b60237c4cf36d0ddc907c  libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc
! 4f6e0d740e2e995831a2298f5c6ce0b5  libstdc++-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc
! e23c15a08f7200f6b776a472c67e1de2  libstdc++-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc
! a82786cd16908c4d0528f8b2820faf66  libstdc++-v3/testsuite/ext/pb_ds/example/hash_mod.cc
! 955e1b23e6630aff2d7274b44c5790d1  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize.cc
! 9e5dcb40786a746f6d881a065afc0cfd  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
! c06213e3256462c53a01e129a78c020a  libstdc++-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc
! 8534ed0a5adc65bd5b6260cf95b9c317  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc
! 4432e27b63b380e16275de44823d8bb0  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc
! a7ccee64e1634c72eec1bbe51f7376f1  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
! 06a95b75aa17e61717c255034902b236  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
! 3cf11b6c822577c59b63cc5f6319d85b  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc
! 7213f131cd39182bb917ef277a81815a  libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
! 218dd5f6da267a8b103f71ec2d0ea1d6  libstdc++-v3/testsuite/ext/pb_ds/example/store_hash.cc
! c9e262832a7b391090701f002ea1c806  libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
! 52ccee13a7484472857b1fa6da420f42  libstdc++-v3/testsuite/ext/pb_ds/example/tree_join.cc
! 154474e384dca74a6712c323f0d29e46  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
! 7ac218e789198433d88bbd13a53ca60a  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc
! dbf9713da86d73cd4034be53321b1745  libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
! 48e14c956008507296402b21068a0021  libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
! 4f5798ae9315d4ce1a7b82b7e2d77ca5  libstdc++-v3/testsuite/ext/pb_ds/example/trie_split.cc
! dc2ba56d1e3aea6ff7e5617e3764cdab  libstdc++-v3/testsuite/ext/pb_ds/regression/associative_containers.cc
! 0423a666f2d5e3b1653875ccd58f467a  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
! dbf005d800916c6075965289871a99d7  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc
! 0fc4eaf341b2a36b2b07f9652293fadf  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
! 6477e60ea4a626c8835380ec42d3a2f4  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc
! 07b8a3d85fa949897abd530c42cc972a  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
! 9617c869759b6f527d979559eab9615f  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
! c8fb97308dc020f6b35262ac8a262217  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
! 4f46c7a0e722e49046414e6daed3dd21  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
! 8cf627b29ff79f4ecbce0bc0b7ef2fb9  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
! 58d3fa331b23a47fb4cd59ae25343ee1  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
! d655123bbddefc63db163042d9c7a39a  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! 0d007ff15146aa76577fa166cf0406ea  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
! 2217601055d6e9862ec0f7cdebde9396  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
! c57afe281585fed41131b50bcf9893c8  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
! 70f446e5df16022dbf2450171ead5c69  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
! 6d67dfd5e159801f5e66b2c4f259fb54  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc
! 20f83bd4fddb56491739599a323d26d1  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
! 905347ff5f645a06ed159c633efdfc71  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc
! 1946f75da9042b621048d086a61c3fa6  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
! 016430704500fcd1c274e097fb40856c  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc
! 58c17e470b0eb8a46688af7afca54f3c  libstdc++-v3/testsuite/ext/pod_char_traits.cc
! 49f2f73e37a211031810b5d57370232e  libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
! 8e6788aa34fb901d980f96d1281a089c  libstdc++-v3/testsuite/ext/pool_allocator/check_allocate_max_size.cc
! 301d2f688706b5f0b396ad133c2c4986  libstdc++-v3/testsuite/ext/pool_allocator/check_deallocate_null.cc
! bc6fc6537de893becd31734529b42551  libstdc++-v3/testsuite/ext/pool_allocator/check_delete.cc
! a724e91c2d5608020db5b45d4c83148f  libstdc++-v3/testsuite/ext/pool_allocator/check_new.cc
! df9a672776d31b82ce686a13062fc605  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
! e8aa41c05fd979499c51f75e27337d3c  libstdc++-v3/testsuite/ext/pool_allocator/overaligned.cc
! 38a1d65e94afb80f60322db0aea62641  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
! 06d273bcb99e583e9d2121bb73ce3479  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
! 8444e9868b5c4cfead633754e7208fc6  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/parms.cc
! a468aa0a397c8e79317db226f77b3a79  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/equal.cc
! 8a2c578a4b9201d461ab63ec955de0ec  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/inequal.cc
! 200f9e179255fa7f71ce4e96460db1a9  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/serialize.cc
! 33287568aa1713b68312de32d614340a  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/explicit_instantiation/1.cc
! db6029d0add52acea8507e9545194041  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/typedefs.cc
! fbf7c22e418e2c4d48f4b66a07fae781  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
! 4dedd711d0fdb9b5ff1c34b1db010835  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
! 37dc21f781ebecc183c20e46b64b7bd9  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
! 9744a65ee152f9a75d945f3356963b57  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
! aa3ae78a84797ed3233ebfcba931f4fc  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
! 18562a2a4055db31d7e223ce947d80d3  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
! 7b4ab87abaf317c3a0811eb6d54494d0  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
! 2ee9bc3b110de057f29b2bde5a29e657  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/default.cc
! da3c323d89c930cc585d8860890951f4  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/parms.cc
! a18508a08d4bb95c6eab0b20647d8539  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/equal.cc
! 61e96b71d51d003b1c99c1c11ea909c4  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/inequal.cc
! 78c0dd80dbb420e4c8ca603712083a84  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/serialize.cc
! e83ff14a4490b17ba6f05cef84006a79  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/explicit_instantiation/1.cc
! 648e764363194fb1bd832b028fe09271  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/typedefs.cc
! ee0693a7667168f9028ef32549a03e89  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/default.cc
! 769869bde2721686cfb7514f39aa0ca4  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/parms.cc
! 7e80fe69227adc9fe56b1c9d7a34ca2a  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/equal.cc
! 07d384edb69fd9f7ef32a6091b59d9ca  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/inequal.cc
! 20ce47df8ff45fa722378f7d97f47270  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc
! 22e4e12f6788ea6739043437ff8345bd  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc
  5310d63384a16aab3ca0056f2cb3b3dc  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/pr60037.cc
! c2cf071f0e94cbcfb4939af88135adc5  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/explicit_instantiation/1.cc
! 072b2036b3c02d3d24212ec876064da5  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/typedefs.cc
! ee62c33cd78c9c404539693636047800  libstdc++-v3/testsuite/ext/random/k_distribution/cons/default.cc
! 0148c9482dc78788b2559eadf50dc8af  libstdc++-v3/testsuite/ext/random/k_distribution/cons/parms.cc
! fd55f49796ccae505caa41047ac85161  libstdc++-v3/testsuite/ext/random/k_distribution/operators/equal.cc
! 0cb474640c72760ed893b5ad9428fa9a  libstdc++-v3/testsuite/ext/random/k_distribution/operators/inequal.cc
! b8bfd96777d2d0b7f8e2b40058e14385  libstdc++-v3/testsuite/ext/random/k_distribution/operators/serialize.cc
! 7d2e792c86dd2cc7719ea08452811217  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/explicit_instantiation/1.cc
! f2b863cb522455dbf9f4399daee3fa57  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/typedefs.cc
! 5e77e1d6ca890f2fb9701140da622261  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/default.cc
! 01f020f32e43a57c892ff3cd0ec6957d  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/parms.cc
! 15f3e49e1d8889a67af01af3efb51815  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/equal.cc
! be988a516ddbfc1e7d9528641a12c5b8  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/inequal.cc
! f5235f2d06c66dcf4add47f3450b37b0  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/serialize.cc
! 8b38f73733b9b49ad8d289cda24aa864  libstdc++-v3/testsuite/ext/random/logistic_distribution/requirements/typedefs.cc
! 3eb7a4771ff31f0934cdff5a0a7fc012  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/default.cc
! 1aea1b2de2f6108293d7fcef4376e65d  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/parms.cc
! 3bf039a6a9362d7e041b4f382c78915b  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/equal.cc
! 78b03b5833c4ec7501298daca5d407e1  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/inequal.cc
! 2f31314125ffa7b7918ea281ffb58cf2  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/serialize.cc
! 9a8d87b8e69b668fb56ed704193853f2  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/explicit_instantiation/1.cc
! 2177f0c7b0cd38c8de268db0711a9b02  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/typedefs.cc
! 4c71ff346cb53415946f7c89d029ccfd  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
! 9feaf819cc17598d65bd7df94ba0bddc  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
! 4682fdedd9072a3dd888a55d9404689e  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
! 91230edb21ad770a8f7eec42f6c54302  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
! 974a9ae76a42679d3783475fe1497927  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
! a0353a91633e9f59391fd0cf141a723a  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
! 7b611a36f1686b74248b25e172d545d3  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
! 28580f4fae1bbc608bce958cbcf8b2ea  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/default.cc
! 7c3f37ed8fe18cad5407a74cd58136fb  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/parms.cc
! 04cd7ecda2fd776475b2769801ab375e  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/equal.cc
! a34125e28598bf239b868683ebc58992  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/inequal.cc
! 083a4039d4291064162119b8bf0f50e6  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/serialize.cc
! 878b912a897ecab69ebe13e376203802  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/explicit_instantiation/1.cc
! 9c88d764d498b5e3899ec54a8675c02f  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/typedefs.cc
! 9e4e9c2bc9d63b73a3d8584aec63d1a6  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
! 9691b886f87ada4e09fad6c17585ab2f  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
! c8e0e34ae376a111f79de7276fc7acef  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
! 527757468c36fd185068e9dca498e073  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
! 528f8e4b58ed872cedbffbec04c6a31a  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
! 164e74b2c7d1e17061e6c431be2d3d05  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
! 1fd7aa45c33eb1a7e2159146429cab34  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
! 85f45dd5a28bb7a8435d8bba19d21d41  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
! 2fe03331344378182e87e858d6ca1a92  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
! 3729d153fcc047a96983a72f53f1092c  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
! c0c38c867f8d2668ce656657efe9ad98  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
! 0901f2938ad6a9b9a1bd29ef839e08e3  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
! d2a523f8c733c061464bf4a7da87eb9b  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq2.cc
! 5a6689e6057308d6319c8f7ee77d36ad  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
! 8aeced71fbe624ea633bb80ecec4cb8c  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
! 323318cfb94cc38909b7dde1f60002e2  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
! c06a3ed8a5323eb9bac451ca0886beb1  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
! 9ffcdb1cc8030426a0ac9cc64a0b295e  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
! 77d64737b3fb332a07c62f070a19a424  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
! 4a896645a8e3707042cde9c0cd72068c  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
! 3a09b13240794947b77b881703a9b647  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
! 8a2f857f670f6320d6a147fa6af53dfb  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
! a5199043b316fd03e4b93f2c93932dd9  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
! 812a0e8e16e5d5ff24eb4ec49511e37f  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
! c74bb6b14e1ae367edd723a079e76f40  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/parms.cc
! 3ea40701c1c7a7c792c1fcb069d2f133  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/equal.cc
! f5d6c763f775640c0d6444cfe23de20b  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/generate.cc
! f2d0eb632c1c764f303b15457061092f  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/inequal.cc
! 34effca4a5f47d2db6a51cf716292a87  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/serialize.cc
! 1abe3e4c3754c91af118d83081f904b7  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc
! a00e60aeb2b87c1170073c8071cbc68d  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/equal.cc
! 3bffa4bcef108b69e35cb6508fece8da  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/generate.cc
! 8fc040b05ca3f2562436bd17fc99a0e3  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/inequal.cc
! a89b7ceec10dd50d2921c7e9679af942  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/serialize.cc
! 57fe7e4da4e8ea6056e49dc8f8b830ac  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
! f7504ebf894c69ff365d2badc562d2c1  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
! c79c4cbbb6c984ae8893c180dde8754b  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
! 8d4f2bc84916b7f318b6279bf40752f3  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
! 4f39910a9910668d61dc760735728dc8  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
! 8e99ef700d73d3f624c755ef5fb1a211  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
! d6c95acdd20d9cce4a40c39a9e71c986  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
! e6e38e4485ae0d8f1c46d217e82de8a2  libstdc++-v3/testsuite/ext/rope/1.cc
  4b4043d9b7ee0d0043f2c34bac5eae23  libstdc++-v3/testsuite/ext/rope/101542.cc
! 18e897e65a44a16e5524ab9011f61c00  libstdc++-v3/testsuite/ext/rope/2.cc
! 1dfca6c387ef737509a2089ba8c97bea  libstdc++-v3/testsuite/ext/rope/3.cc
! 0e0d1c3a6bf11a76c95e08e9dee780bc  libstdc++-v3/testsuite/ext/rope/36832.cc
! b573e0cb5f6a9af37b90856b5864851a  libstdc++-v3/testsuite/ext/rope/4.cc
! 25a328cfc37b3e9fa9dfec63b52b7f5d  libstdc++-v3/testsuite/ext/rope/40299.cc
! 5adf524d78c40193777fa987eace5eef  libstdc++-v3/testsuite/ext/rope/44708.cc
! 051ca96f77f3ee5a744b85071bac8dc7  libstdc++-v3/testsuite/ext/rope/44963.cc
! ed7289967c2c9dda2bb7a1f5cbbc7dd5  libstdc++-v3/testsuite/ext/rope/5.cc
! 0b81b80288d732a069c6aeabb09e013c  libstdc++-v3/testsuite/ext/rope/6.cc
! cd456c4815a4912792d8540ef2dd9286  libstdc++-v3/testsuite/ext/rope/61946.cc
! 5963fb84e4e7b42568ccf0424ec95ff5  libstdc++-v3/testsuite/ext/rope/7.cc
! 137df6fb5897a851a552512b4ce1eefc  libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
! ab357fbfd044246a931279bf8ac4cabb  libstdc++-v3/testsuite/ext/shared_ptr/1.cc
! cebfa9c21194fa77a62773454258538c  libstdc++-v3/testsuite/ext/slist/23781_neg.cc
! e1dcaff2eabb561bc1b043e471ed945f  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
! fdd605cc9b9819ae87ba2f8516621f8a  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
! 82d68a6dfd2d1f1440ed5be687cbd281  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! 71878d9c827ac282bb8619007c777809  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
! af51c0e12cc5fec7cc0c22ae1483e5eb  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
! d09ba3c3f2121e785e55fe839c539c0a  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! 47d3b15e7a3012ee43e451025560cd2e  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
! d4a0404dadce257ff8be413891e372ea  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
! 5aa3220ae5c22feaf81fed31e41ef915  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! 6a15d8888f1ef4d0caefbf5fc4620444  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
! 39c8b70425cb6d420a8407bad4545099  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
! 3fcbfe49aecde49e730411f4af62235f  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! bb554b563d50ddb47b38f51f56e8f1ef  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
! 1ae931fad63c215da8b08bc3e874522a  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
! 039fa799b6961360ff8d1f8cf4fdf39f  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
! 94aad0252d88ec2f7bbea6d8a8fcc0d8  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
! 907a16d27cb7dd9248f9bd3bcfbbb9da  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
! dfb59bcfa988311a3de53058d8d900d9  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
! 3a414cf1c63da6d0103c7ca0551af661  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
! 21ea51dbb4456212157c88c94ade2fe4  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
! 0411420b454402c0560023785394555a  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
! 938060c555384a951b6713b201e2033a  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
! 5ca2effa064bd50ae3a0c45009ac721d  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
! c3481ddf67385e9d4f12c85189f26509  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-2.cc
! 9f04a64bad56177c640ff3f07ccf7fbb  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-3.cc
! f670a5d057631b772b13b3732a0dbf9e  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-4.cc
! b7d4bff233f472d12715898187b5f3b7  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/35209.cc
! 4315d349b58be2306a8037babff35079  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc
! acc4ba29917440fb555a9cc51805115f  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc
! 6a9338ef697aa6b548ff8b477a074100  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc
! fc8e9fd86a9d0e31e654f3a2b4b7b983  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc
! ce1f96f19a167d2fb0bd8e6afd3f0989  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc
! 8ffee4426c6efc76141db3416b0fe130  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc
! ccda0901ff71570cdfcca73a48d3c07a  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc
! 6b4b7e68dd024e7f22287c0502b7d012  libstdc++-v3/testsuite/ext/throw_allocator/check_allocate_max_size.cc
! 20e8354059990234d0bbc80059eecbd3  libstdc++-v3/testsuite/ext/throw_allocator/check_deallocate_null.cc
! 8350db1e5c67a72414f6823b5a99b50a  libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc
! 687910143fb4339dcdde1edf7d950032  libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc
! c1889b232158f2615ee60592e4f2b767  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_global.cc
! 3df475defb68ad283af535c582919c04  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_local.cc
! 699f2872b524f5d27da2e11e6abbbffb  libstdc++-v3/testsuite/ext/throw_allocator/explicit_instantiation.cc
! ea1c7908519173d4ca5fcc1fe03308aa  libstdc++-v3/testsuite/ext/throw_allocator/variadic_construct.cc
! 6b642c927172f604eed3a8582271eae7  libstdc++-v3/testsuite/ext/throw_value/cons.cc
! d24b4893f81ea66f8d52592421e9dad2  libstdc++-v3/testsuite/ext/type_traits/add_unsigned.cc
! 581b7973c2b5d2d4ba4cdca020156b11  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
! 2ba0001da1d74b43d2ef5bad2ffe8c1d  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
! 2f245d1206915c08973977bc275e6aee  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned.cc
! a0f78daeda1a5505716e63de09f34388  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
! 4c23b9981a50c121a8d34d4e6351ad73  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
! c4e953706786f7b0073f69a476307193  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
! 64c8b240a7e01476b273da76221f505f  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
! 5127edec60c279c9fc9d6b4c8cd14aa0  libstdc++-v3/testsuite/ext/vstring/cons/58415-1.cc
! 8292a04f51bc954a5907292f2c412926  libstdc++-v3/testsuite/ext/vstring/cons/58415-2.cc
! e50f128cd73447c19179a5ce3c0b57fb  libstdc++-v3/testsuite/ext/vstring/cons/moveable.cc
! 91d354f2f5114ccbc52458208b21022c  libstdc++-v3/testsuite/ext/vstring/cons/noexcept_move_construct.cc
! 8c95302508f91695957e3fb804e3ec03  libstdc++-v3/testsuite/ext/vstring/element_access/char/58163.cc
! 9444c2126731bbb251f37afc8d31e546  libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
! 08e6b59ac71878f5e239d3a8138e3a04  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/58163.cc
! a324b2087f658a626496cdcb611cc0cb  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
! ce5d97141aa7f9250e715d7774affeca  libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
! 0c27cd82f5507e8067fd591df7cd7be0  libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
! 55555738e24ce7abe716eccceea95fdb  libstdc++-v3/testsuite/ext/vstring/init-list.cc
! 2956c6119241c02c732df6599680624c  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/char/28277.cc
! 5c888a89bcb1bbe3184671c1c6cfc1e3  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc
! 65e0f23c49869365252ffc92436b219e  libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc
! 59b9b0d163de902c30b79ffe26a450bd  libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
! 0075bbb5f972fb5fea8aae4cc1a273f3  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc
! 372fd1a09c77de687b6dabdcf3807e9c  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc
! 8a28b1d1bb157792f757e7d143f88793  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc
! a7ae0b6a31653904f7f01aaabedbd6d8  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc
! 11455b7a520a732e43639025bc5fb597  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc
! e8116809f35af4ea65b37d1dead5d064  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc
! 88faa963047b8f8e2646b415c96d865c  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc
! fdeb2345f0012612aac81f3a531a52ca  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc
! 336cdd74489ea372d486ba4edbf9cde8  libstdc++-v3/testsuite/ext/vstring/operators/1.cc
! 658bb78db02771d726f5a2d2e1189c5c  libstdc++-v3/testsuite/ext/vstring/operators/2.cc
! fda21324514b34d09fa193b3d6776cf1  libstdc++-v3/testsuite/ext/vstring/range_access.cc
! 7976baf13558ae6f5e5558f2a988e1ae  libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
! be08eb92b826c8caf4dea84b836727db  libstdc++-v3/testsuite/ext/vstring/requirements/do_the_right_thing.cc
! e1fdb12181b3c382c844887fd858acc8  libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
! b2617ed10c95d7ae886dcd2d4ffbff53  libstdc++-v3/testsuite/ext/vstring/requirements/exception/basic.cc
! cd0313fea79467b83d9afaf51ea7b6f8  libstdc++-v3/testsuite/ext/vstring/requirements/exception/generation_prohibited.cc
! 3b915c3553bf06ec18111733d9797712  libstdc++-v3/testsuite/ext/vstring/requirements/exception/propagation_consistent.cc
! 2617d6176714dbbae3ae5861961be912  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/1.cc
! 2c3010b18e43515c457b92120478714e  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/2.cc
! 0457f3441a86b4b8bb3f3ddf7ddb4921  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc
! 08b8a728b3498f9dd67de66ebd79964d  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
! 0f83ab3f5d88e6884f2ca36a9bea2005  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
! efe80cd6fb09aa93d37114ed5340800c  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc
! 64b3206e033f99952dd1678871a15f2a  libstdc++-v3/testsuite/ext/vstring/requirements/typedefs.cc
! d30063403274e1065cc854085e116d6b  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
! 4ab0eb3fb5aaffdf8091547947d6f98f  libstdc++-v3/testsuite/lib/dg-options.exp
! fc2503720aae2c77c00f195d8b6ba64e  libstdc++-v3/testsuite/lib/gdb-test.exp
! 4424f97ad0c4ff6ebfb5044d99e5a347  libstdc++-v3/testsuite/lib/libstdc++.exp
! 56632af45fd1ea0f618c2958d04755ae  libstdc++-v3/testsuite/lib/prune.exp
! 06e070e55f5a8385db00266af680f0eb  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
! e49fd8c901c170534216585f66b1e045  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
! 86156bce17a48111468fd14ff38f357f  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
! c417b54472d07ec7aa6e7af1c3c6d896  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
! 62a8caf50c8f70e57ba300230b08a955  libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
! b1281cbb5e95214d54adafdf2cf2b03f  libstdc++-v3/testsuite/libstdc++-prettyprinters/91997.cc
! 46e322fb900e091e5635c048b2623306  libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
! a621e16465f591704a2e3250537aad0e  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
! f57b02db436cdf6d29f0a670a30ff8eb  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
! 8a7a1074cfc491af32881d81a2c24a91  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc
! 9ec08e769d05c4e57a2216c17a47a794  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
! c465cd0c44eb881beb7c3b0e3f7dd7aa  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug_cxx11.cc
! 1308cb256215fbac36d63474f1b67694  libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc
! 52dcc4b418e43960e5bf48331ff4c09e  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! da21b47c1e8f5b07b617afd5e85b70cd  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
! 3e499dc4b62feff7d90d894f5983b7e7  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! 62567c3c3821a4b87e0725f733bef72e  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! 10d9e887e8b0bb9684de71e22e07a9a0  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
! a0fdef1654a7cce567c466178f2e4b29  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
! 23ad84030b9f4418009146e697f9f746  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
! e62ddba2d5699b2da68d1bd242a3536c  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis2.cc
! bce8bb63953cd2f76e9429708e884949  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
! a0e7ce5b03ed560d49265aed37b12cc7  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
! 94a207eeede0afa31ca42f89a730dd1f  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
! c2226029ecf5fdb125ac9a4771b762d6  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! a100879d6e7ba579a0ad08cdbbc26eb0  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
! 086d94a9dd89827e92f18928f8bff556  libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
! 33ca044f8f8a2f62e24d95d7a748c4b1  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
! 7daf2f515095edcd7f916bd56f261ece  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
! 5a27c95f34c43a4877f22dedb79f24c8  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
  af003639dee7c3edb68531616f1c3b8c  libstdc++-v3/testsuite/performance/20_util/memory_resource/pools.cc
! 840158fe75fc337b2a08cfaa4debc5a0  libstdc++-v3/testsuite/performance/21_strings/append-1.cc
! 0f90e89b37eed6be1534ae27f64b9091  libstdc++-v3/testsuite/performance/21_strings/append-2.cc
! 8ca4de3b12442750fe3ac8a1c9eb00e7  libstdc++-v3/testsuite/performance/21_strings/cons_input_iterator.cc
! d90f563b4c2a10f4fd18282f6760389a  libstdc++-v3/testsuite/performance/21_strings/copy_cons_and_dest.cc
! 28221ab498371ec933df807bb4f42bc4  libstdc++-v3/testsuite/performance/21_strings/find.cc
  efa1608e1841a10bba94a6d4de361846  libstdc++-v3/testsuite/performance/21_strings/hash.cc
! 0232521d4b3897b68f7d101657bdbb7d  libstdc++-v3/testsuite/performance/22_locale/is_wchar_t.cc
! 0240d23985670180b1fa7649b9a7ee18  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_char.cc
! a6db46e7dccf17f491981b897c8c065d  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_wchar_t.cc
! 6af1162e7e9626ff063427d96ea58487  libstdc++-v3/testsuite/performance/22_locale/wchar_t_in.cc
! e5b8c91a4c8fcdfcf032389773dd205c  libstdc++-v3/testsuite/performance/22_locale/wchar_t_length.cc
! e5db51d6387cbc56e9e82daa24acbd46  libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
! 892fc7aeb41c787373af42e4025e82cd  libstdc++-v3/testsuite/performance/23_containers/copy_construct/unordered_set.cc
! 52e019d2e3bf816dfc25e2b10e6de797  libstdc++-v3/testsuite/performance/23_containers/copy_construct/vector_bool.cc
! f0ce1c2ac19a534df9855486bb2e4bc0  libstdc++-v3/testsuite/performance/23_containers/create/map.cc
! 92fcf88b9359efb35a0fc75075d890d6  libstdc++-v3/testsuite/performance/23_containers/create_from_sorted/set.cc
! 7327f964a6f4823373902ea2e60c56c8  libstdc++-v3/testsuite/performance/23_containers/create_sort/list.cc
! 3e8c5d623da7eb276ca16fbe224017e9  libstdc++-v3/testsuite/performance/23_containers/find/map.cc
! 5e3ab89f5a9c227f64e188159d9dbd49  libstdc++-v3/testsuite/performance/23_containers/index/map.cc
! 9e493693af88d569be52a8bf38066dde  libstdc++-v3/testsuite/performance/23_containers/insert/54075.cc
! fc5fa43968d842a9fed89c228af39122  libstdc++-v3/testsuite/performance/23_containers/insert/81476.cc
! 3a2bba6a7ebff31cc5e7a830a12c88ec  libstdc++-v3/testsuite/performance/23_containers/insert/associative.cc
! baeea71dbaff6fcb0cd87e06995242f4  libstdc++-v3/testsuite/performance/23_containers/insert/sequence.cc
! 069de8194c7c8cad1ab0061d5aa9b6e9  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_map_array.cc
! bc8e8c4cf6cf47653ef00de2fe002c7d  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_multiset_hint.cc
! 1490bebc2b27d0759912190b77eb1e0f  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
! 44669bcfc5b18ab5a0ad77bb9a09725b  libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc
! 555e3fdf33b9771ff4a9b8d540cf70e7  libstdc++-v3/testsuite/performance/23_containers/insert_erase/associative.cc
! 2d981877480f3a695120834dad3e4505  libstdc++-v3/testsuite/performance/23_containers/insert_erase/unordered_small_size.cc
! b345ba276a133cae15233f18ea6e376b  libstdc++-v3/testsuite/performance/23_containers/insert_from_sorted/set.cc
! 49080df97db26ec6376a6f04467cc05a  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc
! 0342801c357d361700770c7889acda58  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc
! 9edd721f68ce8b515c368b762d6ce54f  libstdc++-v3/testsuite/performance/23_containers/range_construct/deque_construct.cc
! ced57e13993c309f131e0c866d901117  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct1.cc
! 6faee9df250b773d6be1911bf46f772c  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
! 36303d06835040c34e16609e29656fb3  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
! 3259889edb565ebb894d046a07c80586  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! 230ae533a2ba12e7ff920b0859c41eb5  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  9d1d6439b2e93ebc48779237c0969b25  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  ab09b2da7335847dccf2fd63d8b8fd89  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
! 56ae0d2b75190ab2a6f578c1e0bcc916  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! 8900da69c7c4bc84a3a44f0a173afb5e  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
! d2f3183574fec1af723baba29bd7c3ef  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
! ae28e2e5c2a33c5eff27c8f9380de9ce  libstdc++-v3/testsuite/performance/25_algorithms/inplace_merge.cc
! 9befcc7514d3ecfdfe3a583de77cc3bd  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
! 2caf30b525d927213b5f3d1694f2c026  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! bd8f2c4c6d3c014b47cda0bf28a8ce9a  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
! e6e466dbe49f323657e4cba7f5db0924  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
! dddd7f2bd9dece73d897543afd25b24b  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
! d0cd5fca960ff1dd6b4f400a623fedc5  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
! f91154477c07b4ab38b9e749cd9ba7e6  libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc
! c9e8e8870eda90e9512f65d44febfa1c  libstdc++-v3/testsuite/performance/26_numerics/random_dist.cc
! 89a54dedb718c96f0b722e8738e1eb07  libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc
! 430d3442be6c9a5ba28327dcd406c442  libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc
! f57ab1675b6d34fc3ade8dafb548d1d8  libstdc++-v3/testsuite/performance/27_io/filebuf_copy.cc
! 9f522eda0ef793ef3770a348bc570de8  libstdc++-v3/testsuite/performance/27_io/filebuf_sgetn_unbuf.cc
! 06bc0e2ba6c84b5097297e1987e4c6f5  libstdc++-v3/testsuite/performance/27_io/filebuf_sputc.cc
! 3ac614335a4f0233831b40ba8cc86a10  libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc
! e32ce377a538fc89f606ffd8701cd6a0  libstdc++-v3/testsuite/performance/27_io/fmtflags_manipulators.cc
! 1888816ff8f38424a470b5d7dc4c62a2  libstdc++-v3/testsuite/performance/27_io/fstream_seek_write.cc
! 53b1fef96e11eaa2d463e087266b1841  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_chars.cc
! 6c8739fffd7cadf72eb05a245355523f  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_float.cc
! 7d1031ff11ac743250bdb359ad8bdcb4  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_int.cc
! 8e2916078f30db8ca6d791c2c84722b8  libstdc++-v3/testsuite/performance/27_io/ifstream_getline-2.cc
! 00dc0aef4ed0926ad6354255e24d7c57  libstdc++-v3/testsuite/performance/27_io/ifstream_getline.cc
! eff4f4cd2cb4cc4a774d992168d9bde9  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_float.cc
! 3ae09a8a783c2f2eb21817c268e78c5b  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_int.cc
! f167ac1152a25ca75aaa60d8fac00b93  libstdc++-v3/testsuite/performance/27_io/stringbuf_overflow.cc
! 4eac95c4abf6c31e5b5c8ccdb5fabaed  libstdc++-v3/testsuite/performance/28_regex/range.cc
! 8138331270af00e396051166415f5129  libstdc++-v3/testsuite/performance/28_regex/split.cc
! cb646a4426607d8ad046c1b20c354622  libstdc++-v3/testsuite/performance/28_regex/split.h
! aecee09353783a3cc61c06aaea52500a  libstdc++-v3/testsuite/performance/28_regex/split_bfs.cc
! 9fde39f5be0f6fb478d9375295ef17bb  libstdc++-v3/testsuite/performance/29_atomics/atomic_flag.cc
! 5c6d200f5e376b4b8186dd0458aec16d  libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
! a4be922ab69a858cf05c22e30bd0f13d  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_find.cc
! 594e6b38e4a1f4552af21b5e245cad4d  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_find.cc
! 9d11e0f98bd91d0ef693172e566abcc1  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_insert.cc
! dd758e3210dbf3256cd2bcc2952e7bf3  libstdc++-v3/testsuite/performance/ext/pb_ds/all_text_find.cc
! 99fa4b4ea32721edbacb489403a605cc  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc
! a24dfe16479f5e605440aeb96726f5a6  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_int_find.cc
! dc43e197e33ad868d37b7530821d7ec0  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find.hpp
! 9e1c8fb69782ae81710d0fb1e5d30815  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_large.cc
! 67f02c7c4c3a18ec4b2f014adceebb91  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_small.cc
! 0e5ffb832cb33439fa3f43451414622d  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert.hpp
! c4bd53cf514ddc4d33d11fdb6ecabe55  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_large.cc
! 19944cc3cf9e7753000d1c2a576f15d6  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp
! a7b4912068fd8a08cbb1844145d589d8  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_large.cc
! 42706092cfc63a82004b300b95a6d07c  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_small.cc
! d29ad25cc99c5fb32910ef71a9beff6e  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_small.cc
! b6c58e428c1a741f73c1ce8eeaff13dc  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push.cc
! e24f9e0eeac1179394f0f1fbc24e90dd  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push_pop.cc
! bc596f842e02fefc30152acd7545ae85  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join.cc
! abc139d12ca0db54e9df65a181f56223  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp
! 80852d5bc518ad059f4b9a3eecc503e2  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down.cc
! 83fc05d2875085e1ed7296736ef3ebd7  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up.cc
! 65f350d9b8133d6b4241b1353188bc55  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc
! fcb0af7993235a5d50a14adb0271ed8d  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push.cc
! 923c1c7f1c5b8a2a67df1bd610a17024  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc
! eb2f4bdc74c8c08e0abaa77e09be6373  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics.cc
! d1965772374ee9edd31928228838a825  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join.cc
! 077adcf2fd08890ec77fff878e2c1c02  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
! 34949b3d00914bb997c15f903c14aea6  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
! f0fa94c8ceb518212339920b438f89a3  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! d3bc12bc51e748592fb61c2a4cf06da8  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
! 4a51cd826cb2a4fce1f4867885a6fc0b  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
! 4840563717630dfd3165c1b581194ffe  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
! e922cbcf3222b7a5c17557b242588cec  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! d2a4ae4a31cc7ac8f8a21faddcf8ac71  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
! d0790e874166688418441e012f3169d5  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
! 619962e79925c93885ff239db1bd588d  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! 0fb1b5698197682b0ec3512061098467  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
! e92fd7de3de09693ab522422bac10188  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! b6d68b3d10672d0b60653dd0dab99120  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
! e5a0c7da3ef3e2f94aced5ecec268f91  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
! 2226666fc211c2fe0448ef0a26005873  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
! c6f24ccad10b69021360c7448172576f  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! a4edeef2e420dbf8d7aa19e1445d10d8  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
! c7e39952e51e1cabbfbabce8533ffad8  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
! 229cff9a570acc14a9ecab5ca9edb7d9  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
! 803b9b1d4ffc969c8e4510c32661891b  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! 270b62859d22563f375701329cb40915  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
! ceea6e7b74615ed1b52bf18bb9906715  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
! e8ec18e4084121f38eb7d6ad322db1a5  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
! d97eb8de52316a8b010b152c296cb2e2  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! c0345812d3f2c5270c883e3355b139c0  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
! be357ef759d6d5e3bcb40f9bc6f21c54  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
! 92d21cb737b26a0656de123b7dd3828b  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
! 9a7ffade5f344c2a5fc71cbbcd2fcbdb  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! 367b04753ee2219722c8bc7c832ac5de  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
! 52c56b59ab7c556a7cf1658dce5f1fbd  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
! 753d710a63694b86796f03af45f1201f  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
! 3b54fd02a06dbad2b33780255914b04b  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
! 829574c175c5fc8a725c9ad1eb35d5cc  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! 9738cd258bf50426e7812fd41360388a  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
! 7a62cf2a9144683217ddfbe0bf33c818  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
! a2f47fec97b778dd7f35c7927414cf5f  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
! 28bf63009a3641cb2fd3e28336152b73  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! 3851e99609fab6df9bcfaf60f01924ef  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
! 4db0196ec1ed2acccabb1f272049635a  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
! bc24a84a27434194303c04ff659ec9aa  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
! e1559a6d08f260dff83d56c263cd4625  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! 8c3a0e163b7d7b78f56ef7cdf64a2d87  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
! 3d233d46b5cd4297c6b0900d4e520cdf  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
! 930176e229cf5b79145ffe994bee449c  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
! daf3bbcd12755a0c42d444d3f364992f  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! f4ada7a13f50b17072689d2c819c512e  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
! 0855883a3f69690ec9d10bae22cbd8ed  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
! c1fb3657371112ee9b96c47722497b43  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
! 347ba0cbcf52af452a40ac8aecdc83e1  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! d110241fc0d6c28c924e61d097196b80  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
! ab9032b9b0173aa674b7804574c29321  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
! ee699c19e8af87ff01ec2b6fec06f76d  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
! d6fe06ea2e0f0041caa60884c37159b3  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! e0a49703cdef3609c248d2f39076918a  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
! 6f65f542e16193abea1610747763af4e  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
! fdaa922dddbbfd22be7a1d158ac72bca  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
! 0dd9159cd0ec6de83791fc70e4673784  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! bfcdff51a527fa722d62a03e38bf4fde  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
! 6b271845327ba066d5cb3870e7159a6f  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
! 23db074d97da7f8953944b88a8992760  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
! 321b74118220d7b0ea3b3de816eb5fb1  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
! 407eaf23202c91045e915add7ddeff43  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! 5448e654b0587ea2e2b0b3d08a408200  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
! f5bd62a92388d4707e6c4638b7e98a85  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
! 2158996c1b4b3c5cbca264d71c73c7a6  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
! 544aa478b5e4851475feb431bf6d9c0b  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! b7cbdec006aa24ecb0e45f7660cbf53a  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
! 8a8210125535a516ed82bec7326f6bd2  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
! 767a87ab56e0bac8ff435fd1da7b0fa6  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
! bedbe93808dc25430c46d65cb6c13914  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! 2a081ba71977b1b881c9718c84b22299  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
! 057a25251e79878c0a9ac21ad3088310  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
! 0b4773f7af86b7a715ffdfab8e48e04b  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
! bb97cc2f377fdd540ec4147b0223d4ad  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! 8fc4ae8e6e48bb89a75f245298acca47  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
! c310b0dac9ae8e66652d8921c27c03e8  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
! 93e3d36aee6289d7538b09e5a4f868f5  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
! 9808a28dfb6d02edadb6a0545ab1bd48  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! 9f81b3220b5498e5184f14ecd054dccd  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
! 70af3b58dae2eb3f3d4ca3805b5133fa  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
! 32aa6e3e80a641626a6e978dc06af8df  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
! cedee1f7997205878dda3714096bf688  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! 5e96e196001d2d23119681d7b4916a3c  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
! 6df251b010e5987884fec6bd58e3f23d  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
! 471dba9b6eb5953d29973efb067e71e9  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! 80f0b9f8e27a3776341f5c6b66f4a7a2  libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
! 88246cff35a7f6bfb9901c4272c6467a  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! 70d8843f255475a00ba89b087bd1e67e  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
! aa4fd4e736459b74e88d06697284a614  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
! 70195b319253f08e8c34a24e1278e459  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
! 27089c8555e0b1d01d423ba3435e8553  libstdc++-v3/testsuite/std/concepts/1.cc
! f59a107525cd5aa51b4d2fd35b42e414  libstdc++-v3/testsuite/std/concepts/2.cc
! a5034bed2fdef115a8a9140dfb5d9b2c  libstdc++-v3/testsuite/std/concepts/concepts.callable/invocable.cc
! 7d554b73704173ba68cc95a5852da200  libstdc++-v3/testsuite/std/concepts/concepts.callable/regular_invocable.cc
! 4a9fafc756db35a1144f86beb3af49ea  libstdc++-v3/testsuite/std/concepts/concepts.callable/relation.cc
! 5a0b0e7a6012b2050f76c2b03cc9fbad  libstdc++-v3/testsuite/std/concepts/concepts.callable/strictweakorder.cc
! ee26773d046d52f63e5556c6edb515a7  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc
! 6ec6c5e948e079053097616e481918b2  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc
! 9cb48942e864bab2aa052d92d77fbd22  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc
! b1778043d98f12700fd920276465016d  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc
! b57e21559c9a841ba9ced962c63b8373  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.assignable/1.cc
! 7d6528c6d2bad029e3f555efaf169aff  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.common/1.cc
! 204031a94647c173270237fe08d5d18b  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.commonref/1.cc
! d95676917ebf468840a3f4fc54dbd48f  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.constructible/1.cc
! ed78dc43441e56cbb80161cf45986144  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.convertible/1.cc
! 372b8a2e1609045297940302d89f64e5  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc
! 3e514c31321c01052e0dcb48b75d2339  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/1.cc
! 13adf31db3d69eec787fe72b92ceb75c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/lwg3149.cc
! df1cb5c9a7842e58b8184f0fc78bb821  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.derived/1.cc
! ffb50642f023acf55f46da47652380fc  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.destructible/1.cc
! 10c667a3fce5e7ffcb58185fac188fd4  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc
! ee45a93bf868cf33bde3b6c0bf3bb216  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.same/1.cc
! ef528af0670fd6f125d93df195766752  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc
! 43ce8f538e65587a027d3c82113c2667  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc
! 41b60b2c1b4961a03fa17425c4ac856a  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable_with.cc
! 9e0c407f5e01a8013f0722549d860b12  libstdc++-v3/testsuite/std/concepts/concepts.object/copyable.cc
! 85b00e0e9dcc26dee8eac69c2950bf27  libstdc++-v3/testsuite/std/concepts/concepts.object/movable.cc
! 275c7f09aea91eda64d5f3ec0c92dd6f  libstdc++-v3/testsuite/std/concepts/concepts.object/regular.cc
! 201e3e18fce366a5318a892bb2f3a645  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
! 0b211118947d205d63fee1f1682151e6  libstdc++-v3/testsuite/std/ranges/97600.cc
  098cf5ff316bfa8fe61f6c4ef6c78d37  libstdc++-v3/testsuite/std/ranges/access/101782.cc
! 11d4e98f4c22c10daf244feadd9b61b4  libstdc++-v3/testsuite/std/ranges/access/begin.cc
! 70ccf032f2be813dae11df45ac97cbab  libstdc++-v3/testsuite/std/ranges/access/begin_neg.cc
! 227de4722058e33146212dfdb4b69395  libstdc++-v3/testsuite/std/ranges/access/cbegin.cc
! 98d88903efc85f63e68d1d7d8e5b0fde  libstdc++-v3/testsuite/std/ranges/access/cdata.cc
! 2d3b106ea166984f98065f4b9e96edfc  libstdc++-v3/testsuite/std/ranges/access/cend.cc
! 6623f9d75a3c1ad34b7ebbf9c6da4a92  libstdc++-v3/testsuite/std/ranges/access/crbegin.cc
! 86c87340876c5fc4e71198ea4cfd442f  libstdc++-v3/testsuite/std/ranges/access/crend.cc
! 6f71f54829d2b434db5f571c3384564f  libstdc++-v3/testsuite/std/ranges/access/data.cc
! 245929736d8af05d600eef23beba6ccd  libstdc++-v3/testsuite/std/ranges/access/empty.cc
! 8c9b837380e1fe3976d3aa692ff3d58b  libstdc++-v3/testsuite/std/ranges/access/end.cc
! 4d42db77f4ac3c192ced37fdbdcd88a4  libstdc++-v3/testsuite/std/ranges/access/end_neg.cc
! 471ce08641a9a9644d49e764184cc090  libstdc++-v3/testsuite/std/ranges/access/lwg3467.cc
! 4089c15b150a2be4c152c24ba5bf102e  libstdc++-v3/testsuite/std/ranges/access/rbegin.cc
! 4f2b5b696882724df7ba88b93f5f8df8  libstdc++-v3/testsuite/std/ranges/access/rend.cc
! 7d0e49cf060ff379c667ae3c693e50f4  libstdc++-v3/testsuite/std/ranges/access/size.cc
! e6ab22866643daf0783f4834c36f6eb5  libstdc++-v3/testsuite/std/ranges/access/size_neg.cc
! 5948ed6d7980172c4dbadb7ae4fe60f4  libstdc++-v3/testsuite/std/ranges/access/ssize.cc
! 38fc3c7cae93b1cfb70ae161a286ee69  libstdc++-v3/testsuite/std/ranges/adaptors/100479.cc
! 64db7c48c2855a48395b173bb523f274  libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc
! af701ad4d3eb35795c9255f86ab7a1d0  libstdc++-v3/testsuite/std/ranges/adaptors/93978.cc
! e0d0763bfd8fea442eb0ec6ddc2b8f6d  libstdc++-v3/testsuite/std/ranges/adaptors/95322.cc
! 5b715eff15e21d3d8015edb32206a336  libstdc++-v3/testsuite/std/ranges/adaptors/99433.cc
! 1a9c662295594e272c2529b2d0a522b0  libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
! ade74e85e40fe4e74827e6a55a54c472  libstdc++-v3/testsuite/std/ranges/adaptors/common.cc
! 9f1126fcd877d223f83e414148cc58a0  libstdc++-v3/testsuite/std/ranges/adaptors/conditionally_borrowed.cc
! 188b1ccd4a00df68bd18c110aee5ae6b  libstdc++-v3/testsuite/std/ranges/adaptors/counted.cc
! 31eced1aac2c46b33c5b45da7b713cd5  libstdc++-v3/testsuite/std/ranges/adaptors/detail/copyable_box.cc
! 458981f708ae3f72dcb5c96fc82430d6  libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
! 9649f880152a2754d4d7211ae40b27ba  libstdc++-v3/testsuite/std/ranges/adaptors/drop_while.cc
! 429f764e00f53f1b6faf611b7d9f7e61  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
! 586079e27579e276d0f94606f3718cb2  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! bcb28fda3ea96e1410ad1e762b6e7618  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
! 9da12d2bf1312894566e35643ee68db2  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
! 15664cc9e041e6379d306b657aa0fce2  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
! f33f0ff8028ec4351d27db654581b0e0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
! 50b9c2b5e70b727f80a7aae0f80558b0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
! 11a9b7d7b3fb4dc67a5d601307b8ee1b  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3325_neg.cc
! 171a2dea44d61fd520f28b72e0f3cf64  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3406.cc
! f5ae24ee88e019eb5b5539161769c4af  libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc
! 93ce663511ed6187f3dd639a711ea96c  libstdc++-v3/testsuite/std/ranges/adaptors/p2281.cc
! d4a65d83f8fb81ed89de3abf07e09df8  libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
! 43975893eeb488fb663af307271b4b3c  libstdc++-v3/testsuite/std/ranges/adaptors/sizeof.cc
! 54633b4891f4d2f201533e9508340b5f  libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
! a1a381a7aa2ef50b3e9c1bffc5982b6f  libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
! 637b3a917e62ce61131671aec619637d  libstdc++-v3/testsuite/std/ranges/adaptors/take_while.cc
! 0e104dfc45d3db90ea2ad6df98bbf6aa  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
! baada0481c88624f94317003692679ae  libstdc++-v3/testsuite/std/ranges/empty_view.cc
! d92e49da207bf912ef96adc5011f6de0  libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
! 4bd8be9dc7806b28c3f799fa5be1009b  libstdc++-v3/testsuite/std/ranges/iota/93267.cc
! 21cf066db6826a68a1eeb59f0f6efb50  libstdc++-v3/testsuite/std/ranges/iota/96042.cc
! 44a329219112c82245e251f002370639  libstdc++-v3/testsuite/std/ranges/iota/difference_type.cc
! 369fd800c7c25ba032033459b8c80181  libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
! 0cd77770d34e5f400c9eea5fad4e8690  libstdc++-v3/testsuite/std/ranges/iota/iterator.cc
! 7209ad0c4afa72a98ff0d3cec4c9cabd  libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
! 4a26fb0b75c01a27f3b8a4a9354c1b33  libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
! 667b44b08d3b7ae9548298cfe6bcaa85  libstdc++-v3/testsuite/std/ranges/iota/size.cc
! f8a271101cf9af71b43008179a620898  libstdc++-v3/testsuite/std/ranges/istream_view.cc
! 64080a8eda23a51d5fb499026fa0dae4  libstdc++-v3/testsuite/std/ranges/p2259.cc
! 4cf68cd7abb86ba7ed0e8b0cf0a384ac  libstdc++-v3/testsuite/std/ranges/p2325.cc
! 16fbc1f2ba62d1f8a5ca3704229e260a  libstdc++-v3/testsuite/std/ranges/p2367.cc
! db2be538fdf63e8e2b979f1d3558303a  libstdc++-v3/testsuite/std/ranges/range.cc
! 4c3d6751099d0d95fd5672f66c2240d0  libstdc++-v3/testsuite/std/ranges/refinements.cc
! b872ceff7ae4687b841182860228ac44  libstdc++-v3/testsuite/std/ranges/safe_range.cc
! 178d485f98f4800b8a95f2892532b33d  libstdc++-v3/testsuite/std/ranges/safe_range_types.cc
! 77d3f5555493399f038d230948ba7e4e  libstdc++-v3/testsuite/std/ranges/single_view.cc
! 78470bc551bd2f05f73389f80623076b  libstdc++-v3/testsuite/std/ranges/sized.cc
  3b43079628213bcfeda0d10685ba810f  libstdc++-v3/testsuite/std/ranges/subrange/1.cc
! ff9341d3fc8d634252dfa6144b245bcf  libstdc++-v3/testsuite/std/ranges/subrange/96042.cc
! 770798a355aff7ee80ad4e3e1b476034  libstdc++-v3/testsuite/std/ranges/subrange/97512.cc
  1296c3e0f2c2c6e1cbf08f5653d24b2d  libstdc++-v3/testsuite/std/ranges/subrange/constexpr.cc
! c0552f16fe9d194ae45c8eafce38e26f  libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc
! 942db2f7873fbb64579dd1ed6140a816  libstdc++-v3/testsuite/std/ranges/subrange/lwg3286.cc
! a2978a38c494f041e027f77c6e9c0d5e  libstdc++-v3/testsuite/std/ranges/subrange/lwg3433.cc
! 2aabb4959bdc1057ac43a22d64e78f0d  libstdc++-v3/testsuite/std/ranges/subrange/sizeof.cc
! dd2f854e294a8fd03899c90ff2def40c  libstdc++-v3/testsuite/std/ranges/subrange/tuple_like.cc
! 9d24631451b9b2ca3eb84bcb5faa72b3  libstdc++-v3/testsuite/std/ranges/view.cc
! 0ec8b664484aad1aae4b7436806de90a  libstdc++-v3/testsuite/std/time/clock/file/members.cc
! afe90a21fe8f6c5a2a97cbe9fc1ae49a  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
! 69b44a895bed5e70b9a45e5b932156c0  libstdc++-v3/testsuite/std/time/day/1.cc
! 9ab4131112fc85d10d5d415dbf693bd4  libstdc++-v3/testsuite/std/time/hh_mm_ss/1.cc
! 88d1a1e8ec0595743dc57b27557b3180  libstdc++-v3/testsuite/std/time/is_am/1.cc
! 6a2f0eb60479730d6b6f1b6d3436a913  libstdc++-v3/testsuite/std/time/is_pm/1.cc
! 11a1b0b0dc2f0bf45b2b9a7608bff871  libstdc++-v3/testsuite/std/time/make12/1.cc
! dbc4514c5003ed2d1442d0676cbc4a02  libstdc++-v3/testsuite/std/time/make24/1.cc
! 2cc4ffcc2e7118793e56e0b07507f0c8  libstdc++-v3/testsuite/std/time/month/1.cc
! e012fe1eb95d2291f6ad6c8c5f1fe041  libstdc++-v3/testsuite/std/time/month_day/1.cc
! 7f2aefa66b33b12663b816445f8e994a  libstdc++-v3/testsuite/std/time/month_day_last/1.cc
! dbb34b617244c645fd9bc32dcfb84663  libstdc++-v3/testsuite/std/time/month_weekday/1.cc
! cd3f90e806f2979c466207907984351b  libstdc++-v3/testsuite/std/time/month_weekday_last/1.cc
! 75e70bdabe3c07e0218b303a1f3ecf37  libstdc++-v3/testsuite/std/time/syn_c++20.cc
! 95fc10e252443f22e4022a1a82715453  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
! 6cc3dff9098d0a0b4987232ffa4192a0  libstdc++-v3/testsuite/std/time/weekday/1.cc
! 07a6c4c70bcfd13350693a1ad65f00fa  libstdc++-v3/testsuite/std/time/weekday_indexed/1.cc
! f9bb2332633525b6b855cb92aee40380  libstdc++-v3/testsuite/std/time/weekday_last/1.cc
! feca06bff9fab60b776db8b63e94508f  libstdc++-v3/testsuite/std/time/year/1.cc
! f58f2afca4434df1bc2efbb3f7a90f4d  libstdc++-v3/testsuite/std/time/year/2.cc
! 0154fe01882b3a6cbdb82b8167f50fe0  libstdc++-v3/testsuite/std/time/year_month/1.cc
! d41a278bb4a34d2e0a30e3e9a106c8b5  libstdc++-v3/testsuite/std/time/year_month/2.cc
! 4a115f48ccaa6769e5cea3b38e192f7a  libstdc++-v3/testsuite/std/time/year_month_day/1.cc
! 39e02422c489d23422fcafb956f6ba11  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
! cdc0080c14263fc056a048b45f2e05cc  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
! afdc042dcb68000829070220dbcf92bf  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! 79895f2e71520425cbf4e2a52fd56dab  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
! 901cd02e168de9e479bdb85e7d19db20  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
! e603368dc519db6f40f992bdd9d8ffee  libstdc++-v3/testsuite/std/time/year_month_weekday/1.cc
! 419a5d03d96039530c3719a708015912  libstdc++-v3/testsuite/std/time/year_month_weekday/2.cc
! c141b5c69f9adb9ef155310eb8e222c8  libstdc++-v3/testsuite/std/time/year_month_weekday/3.cc
! f454f20c75a791f7574d54e57cf00730  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
! 3d98328e10e83186f073b6cfa52d54e0  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
! e764b79621a4fd6439a4bbc2944b4220  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc
! 8f0004b3441501cf1a397b5e800305a1  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc
! 0b3602a198b89bdc879c6c9009bb8c41  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc
! baef133f789cdbf374797e090961e920  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc
! ecf6da09d6729605012f9920fad0d496  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc
! 73bdc12bfd90445ecf5943a6ec206109  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc
! 8ac95b18fccaccf87970f062b2633720  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc
! 29cc2956cc2bf0f4b40dc452e588e53f  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc
! c4ffb624345f250e543e4400a4d539c2  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc
! 39c5a5aff7f68881f8a1d7e2e2c8a11a  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc
! 3924b43829109d774e3bafb81c198b9f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc
! b2c2e9b8d6988d33fd1d8fe4ddd5770d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc
! d037bf844736c482f1232d8b6a5e869c  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc
! 745f5146a8fb3fcb5f9543b120680698  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc
! 8e0982d2513a8725d18235ec0b6141b9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc
! 2cfd7222cef3e7b9e960ebbe27bab8b0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc
! 4a4529f6bfb7131e90bfc60972994520  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc
! c8badff1655d8b6f22baf793b0e4eaf1  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc
! 9bd2d9dc8d587c9d483525df6713d821  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc
! 10fa49be494d61a7fce16d34ce31d9e3  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc
! b7d5a45970bc890118d4a430df93c912  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
! f03daf1c9eebd1073821836d24227c93  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc
! 756ab91284db8a0ca20626e967d197e9  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc
! ba6589dd135ead972a5a9794bd1326b6  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc
! cb77a2efa279542d4dc7a93542f4d628  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc
! 8b8c24b9bce90098d8a153a4660484ab  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc
! 0e94497875cce9283db88389d2174cfc  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc
! 0c8164452be9a1169c11ac2099788c04  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc
! 7a2c5f1d1c7682ff65646ba27fc7abd0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc
! 062468e5ec8e5719863e4bf94653bcd7  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc
! 0a11ffee97fbd99457f21346790baf16  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc
! f56000d1041020d02a433442895726c7  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc
! f0d9de2620d3243d24ba51b0c692bf1d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc
! bc55ada7b1ef634d22a88008cd819ef2  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc
! fd82eb215600eee8511028be62aa4cf1  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc
! 7b35cdb2e2a2f66baed9a4cc8812fc17  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc
! 1e09d1ca6890842ca03e97549b3786d0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc
! 4f5ea1ed8790df2ea8c2390420e93144  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc
! 0c33fb619c4f4038dcc377ae2be08df3  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc
! 24c4cf0322ea77b88651d140f570210c  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc
! 46bd0f4757aeb79ae46a7cc6e6d0f64c  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc
! 89cdf317672f782f175c254fe96fe453  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc
! af0b5bae3692f9da8f39a49124c22809  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc
! 32a9561cd2245c249f6bf7898e26d199  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc
! 43e898bc0a60fccbb5b33d1264eb1442  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc
! 6d1f6ae10f95615635a3221aa67b76b4  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc
! d35df346a339ae7d8339bcc0422b05c1  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc
! 8f5edc3d3222353d4b2e50bece206c43  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc
! a6ad1ef3e9e19c941c51ce1f8f0e757e  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc
! 03cd50d8c93985ba8dd72dba927dde4d  libstdc++-v3/testsuite/tr1/3_function_objects/bind/all_bound.cc
! f0116766f2824da5ae6677e0d66ba591  libstdc++-v3/testsuite/tr1/3_function_objects/bind/cv_quals.cc
! f669b5648b5660d89748965c45e43be0  libstdc++-v3/testsuite/tr1/3_function_objects/bind/mixed.cc
! 593902801c51406c9af7186050f4a2a0  libstdc++-v3/testsuite/tr1/3_function_objects/bind/nested.cc
! 2c321051ca4b5a7996cb69b68a2a5c62  libstdc++-v3/testsuite/tr1/3_function_objects/bind/placeholders.cc
! e043a20e7bd919cc5f358017906d475b  libstdc++-v3/testsuite/tr1/3_function_objects/bind/ref.cc
! f8e8fd22f1d3d3378bef68663bf8af27  libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
! 4998413ed2c0deee97dc2519a5f6f0e9  libstdc++-v3/testsuite/tr1/3_function_objects/function/10.cc
! ab93db6d0d5bfc52e3d8acada1ae4d93  libstdc++-v3/testsuite/tr1/3_function_objects/function/2.cc
! 32a8a4df335bd4283d62b67c0ef8d7aa  libstdc++-v3/testsuite/tr1/3_function_objects/function/3.cc
! 30c475475f127a3054cea66df9c4c099  libstdc++-v3/testsuite/tr1/3_function_objects/function/4.cc
! d919df6cb54f9ee4805d55b30cf81080  libstdc++-v3/testsuite/tr1/3_function_objects/function/5.cc
! e8d8b8dd67990e599908bb0b4a336c0a  libstdc++-v3/testsuite/tr1/3_function_objects/function/6.cc
! fcfefd4e53c68d8afe7ade9dff71304c  libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
! 26368fbb87f9d7860462439962b19440  libstdc++-v3/testsuite/tr1/3_function_objects/function/7.cc
! bc8cfd7d5dcb2d326e932731641d6179  libstdc++-v3/testsuite/tr1/3_function_objects/function/8.cc
! 7fd46092820e7eb49976323ebad3ae8d  libstdc++-v3/testsuite/tr1/3_function_objects/function/9.cc
! 792c35f2c3a4ad4a9415aa54ae7f3102  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/synopsis.cc
! 446fb443f5dc4b9d997102761a1428cd  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc
! 6641e220f658d259782fc829e37c4daf  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc
! 68267c3076fd4f222b12af5cbb25a8a8  libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
! 3491a1bb9d9eb614aed32b5425ea5657  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
! 05735e34fbd3535a2abe699c92a125c3  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
! b0f3df440afabc95c8bb474485de67b7  libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc
! d945fd7846023f1268496e071646303f  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc
! 5156ebaca919744b33cc693b0c74d984  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/value.cc
! 59a904a4d042311d26a5014a0655f8a2  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc
! fe0d79786a05e20c436f893646594671  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/value.cc
! 8a9935e6abc8bcce0d5f4ac503ef4fb8  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc
! 5ec6d745ba06d7bb7d2f75ca447d0a7b  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/value.cc
! 4bac38f2bd841661a4a75c3f83e247d3  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc
! d441aab504acff37b789e034b053a46c  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/value.cc
! 98705f64a4fbb7aed2c834598f337f94  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc
! e5e477ddc4fb1a14490e082c66b2e56b  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/value.cc
! 996c8d87fa979d6323822870be404e12  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc
! 62d55fdca59c09cb47da35afdb4a9786  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/value.cc
! beed9bf3db92afc85cda94bdb3e03d78  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc
! 643dcb40c53dde213f2c7a167b34e5ec  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
! 8a50130b82a60e0cfd1c0b38c88e0d04  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/value.cc
! 2999e5f17a3ad32515e0051968799cc6  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc
! 56f1f34a16db91a69420258244cac03c  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc
! 8b42e8d42812f6fd7c50d3b953e8aa7d  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
! 0b579c26fe29a1c47befab5131f43fb5  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc
! ef65b119298290a29efb9985de64503e  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
! bbbb644da7e75cee4ca0931f2030771b  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc
! ae53db4f2616c1d488ee1e15ee40eadd  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc
! 21e9bae83232560f71dbd0afe6fde7dd  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc
! 638e881dbb264c2c8e0145eacaf964df  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc
! d9dcd1d154e97275d79949374afe81e6  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc
! 54e0621dc03f45d3dc3aa6f4cf0b8e5c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
! 736e2234408a0e289f63be4eee34ff50  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc
! 7388b73d88e1d3848a0e56aa5981cc56  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc
! bc6e72dc797a488db9e084674d341380  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
! 0d9b8a66a3f47c2f48379b786f2246e3  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc
! 2bf44c32666d74512f9cada0f5c5f8cb  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc
! 518ffad56db44178be508fe0fd2b02f3  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc
! efe722ccac8c1409a799ec0ba72e8f63  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc
! 6b5b9c9b920e786e5e7c330a2c3ee942  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc
! b3bc42ac4f9ae84f0f7a199bd26c4bcf  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
! d2122f7a9716b1c9dfc4d61209ac23f9  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc
! 4b62aea8830fcc70f34cf15924198b72  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc
! fcf5419d16166f4f0b775d102bf8fd3c  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
! d51a842786eaae1ee442d79986b56023  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc
! a4f788721d75f680e2929a531bebd24e  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc
! c61e19b324d81faaaad741329e047bc4  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
! bff23804570dce49ae445332d8772a58  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc
! 11b28997c20a150ed430ce679ff3b311  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc
! 90bcaa77a0575f5e6d45cd9601afb6bd  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
! 4d8cca5f0095141d6da3e25105fbcbd2  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc
! 14ec9312a9561fca5b143a8deb32168f  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
! 78d382be72ffbf7fa919d2c5b9c7361a  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc
! bd7967e44263cf6712d172e8f8bc75d8  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc
! d3d745bb6379b54bc38b88c0aa4f966f  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc
! e6de18eaaf4bfcf272d7ab8fd7bff09f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc
! 9acd8651c077ce11a3d532146e0db7ed  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
! 5bb8b8a7e42d45ddb5c857e021fd27af  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/value.cc
! a767915e8bf307bf56122e918037dc86  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc
! 1ee7991eaba30b4ae48481c1966f9c11  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
! d67db921819fb4805c6276ccf3e85bbe  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc
! d7ebd02dea29833eb620019adae1647c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc
! c77f561d38bef18d5623e252ea5822d9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc
! 9ef76ed166491d58a394c224acc97117  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/value.cc
! 21156c1f8cef26fa7df1bf5006168389  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc
! 9d4590eb30adde707e91a8064fadc450  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
! 7a1a49e1aeed9d66f9aa9ec7599bb464  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/value.cc
! 6adb54ef2166a1aa3ff153a6b0638c84  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc
! 5215682e1881a5d9f417a360354b6a7c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc
! 02aedb37806d85d2d803bc2aefc22ff6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/value.cc
! e15065cce388a785b1a3ccd9f728cf94  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc
! 47cfe43c4e9e8430221f397d24bbebde  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
! 917518cc37bb059b1368b98b2b040d40  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/value.cc
! 36c9673934310bed5c7735458bc4525c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc
! d3750c139b20e6773052f218432798cf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc
! 01ba86339c0723a23790d2a355eb3c56  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/value.cc
! 0fdea551d88fa603c19a85802ea93482  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc
! 797dae3ff57945ee32f6b0d227f97ae7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
! 55b2525e8d835bb4e73451d71d5709c5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/value.cc
! 98424e1fb8580eb8add5c0489f9c648e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc
! ecc9e41f3e9a92d9022464278a2b36af  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
! 192b898bbf036164e978c91e394a1ede  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/value.cc
! 03a9004e5f33ed56a7a8f066e4249b7a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/24808.cc
! 8398f1d58aaec0387ad19b924a3c033b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc
! 5476507cf0824684a08826bee91aee46  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
! 0af096d2c50790103434b7267a05c52f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/value.cc
! edd38ba63db502b248c3213e45dcd50f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc
! 553f918226602286bc191eef8a4d233b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
! ec818d7d275e69f5d1522c5c314a7a4a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/value.cc
! ed8f299daf8adf3abbef7beb67fa5575  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/24808.cc
! ce21c283f576dc40be7478867d2d3bf8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/35637.cc
! 408b3f7ca7da451e81b75277fe15799a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc
! 11cd04c59f7d3f03776c1fc85edf93d6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc
! dbb064d769b73b49fc94d2622d886c0f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/value.cc
! 6c85b68150e9af2e863ed4610cbcc48a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc
! 5607d9331ed77cf334e77c79c770b64a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
! db9939dfafc2fed438dc9b16204eacd8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/value.cc
! da34c83e661b785609566086d5daeabe  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc
! dc8108cd001f9ec405307a2ec0745681  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
! 0267433f5c692190bdc01b559554d120  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/value.cc
! a10fdcc698b1eedc6fad544615d88b8e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc
! 1966f87b21005e05b51538a1f61c1aa9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc
! 083e64f038e54016000ba602c98789a0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc
! 668168fadde52df9dc4f860407a72e44  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc
! 35db426ad84ec94fa55ad5ab0f17d682  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc
! 8854d9e4f0fcd09d0940096521d82b9c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc
! 8fd4992f186355595122de2ae8b811a7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc
! 4ce76206d6df7288c827131ce2e1ad5a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
! f7f765476b22803c15f8c05e5c208273  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc
! 23fce649cd73ccd253816ee6b74b84ee  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/24808.cc
! 73f9d42281b0f277873536f4c3205843  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc
! 57823b91e6e29244045301443306bacc  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc
! bae2b654e65bd34c5739529efce9bac7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/value.cc
! 18d2909bc562d70a2106ba914a3db695  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc
! ec55b04652d433d6be5487d51604a181  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
! 8a60f4a3f417334e01d69f921c251f6d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/value.cc
! 1288353f086b16083537066b64f4b30d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc
! 5a5ebddfbf0d3350259e0249ed569eb4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
! 21eec2901341425ed7aa1e1bdc8c0e33  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/value.cc
! c0cb73591129b7eae263ce67b79df8e2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc
! a08f9054494c44a5a24c253408d8d3ce  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc
! 8cff6d86e9361b6b02c9feca200776c9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
! 4852bd3305bc4f1ce3616daebff1833b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc
! 1e807e0713e1c7260d3b8bc0458b4ce8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc
! 24f5f56f76ad1387267a332578200f0c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
! ceeb65187bdfaf7adb1e1ef8e9db1468  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/value.cc
! 770625b208dd758bb0eb99151a8f6338  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc
! a538ab2dd470460247990e45a2ff153c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc
! b709294f0fe6d2e3336a5280bd459df4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/value.cc
! 847553c5e0c2d77a1c4038e1ba329e50  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc
! 9d3bc31ac0b95b2163fb718492aea58e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
! c7c29c57ef33fb4bb46d2370e30c9557  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/value.cc
! 339cbeb781b4c81931a8fd76c916a0d2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc
! 82fbe9a0a4c34353e1da70f755b87651  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
! 12406d6d55f4856000a0c1911d40768b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/value.cc
! 6af0d0625cd971ad946b8aa6b269b196  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc
! a7d8cbdf33e311f8437b8f7443d3d815  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc
! 946d056b7ee24e45333fa35e9aeadaf6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/value.cc
! 0e7b4497ba04ebdd257f7f4c61da351d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc
! 03a44f0f14fca6daa344bf4aaab05246  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
! 79ea356c2ce6c2e8d8c46ee90ddf3002  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/value.cc
! 0cafbb435dbbf5b49454a7d4da278a5d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc
! f26783af7d933e7c7f6a0ff983544388  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc
! 1d6523ceea62faf383dc6f0e5e3d759f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/value.cc
! 30bb4186bb92718eb2ddb591fa7845e5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc
! 3f0671a10867125f5eb0d6570ef7acab  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
! c19e62b5ec156498909e7ab7855ceb9c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/value.cc
! 94e2befd7a81c8eb04ad0a406dd21e7c  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc
! b451934f0ea4dcd3709abba85542fb5b  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc
! db9ec9d858fd28d1746f494a4ff0aa16  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/value.cc
! 334d495f5ddfd0ed56c219501f435219  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc
! ccb5a59d6589bbe2b0cb0cf3876a6893  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc
! 9f144be88570d95699dc136d70e769e1  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc
! ae7769bd3e32a57155779a734d1d0520  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/value.cc
! d55af8b9be1d8232ee1474ef884976ed  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc
! 8aafab5652c67828c7ef1b0c442b257d  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/value.cc
! af3915c8e995ab6b03a6603132de7320  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc
! b157d2246ef53541550a3a70e054d495  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/value.cc
! 9c3b0f376775e04c0197c7fdda26527c  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc
! dec0f168b28c19d4a123ab850efed63a  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/value.cc
! 2345c334dbfe981735b71a75b1255b1e  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc
! fe0ff6cfc9432cb569ba560d361654e5  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/value.cc
! 913a43ee26ee7061c9f2e24e466f0e67  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc
! 57131de8813e1987bdfe77138c7e706e  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/value.cc
! 91d076636ed822c4a37ac9b27b67651f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc
! cb8a0bbc8edaf0dfc29e04f3fc6b1e40  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
! b967759e2fb0a86eb990c8a619515f9b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc
! 9e3e23f91b24826d6919fe822bed89e3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc
! 2ca1c84b773111fdfb63fc9024b3fbcf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
! b35128d06e7a12281353878e2287048b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
! af26aca3090eef95276af1690d5dbb7c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
! eac27828deff435f6751f04744037b13  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/constants.cc
! c54b4f3b3429c9b5841b25c7b63dbe6f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
! e4cde838e78849d8772d230218792937  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc
! a6530f0861147f876a71cc6fd0633943  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc
! b61161d4157306a91cdc73d973f34997  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc
! 22bc78b57f64658303696ec737f63b0c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc
! a95da908458b7e8bfb594554e42ada31  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc
! 5524fd26caaa5b5687c816ee251ee5d4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc
! d6976149885d71054fcb00402111877f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc
! c4bfb05e27d76ef239cbaa6d5322f1f6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc
! 2cbb4abd0e909c5c2c85e3497e26b7f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc
! be22650e73d910246cd0f494f33df982  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc
! ea2f006757d21359ad45a777103f08b2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/constants.cc
! d86b79baa8d4e7f57d27ce1b9e7c47b1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
! 9c600e9262c23f09703a01225442a018  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc
! 3fb217ae0686bbffa1885f36e290f49e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc
! 1011232e53c99f6acef68f618d3d4e79  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc
! bdffa611016bc79ee7f1ca176664e5b0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc
! 39d0df46e8675bb6e76cc594fe41a9c0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc
! 73845e98390d7b43e4422fd908694788  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc
! eeec2a2f473bc3bd259d4ebb0670b44d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc
! b116834f947a4bf742de3c6c8377fe61  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc
! 92ce1ada5c5a76b3e7bcd4f99dd6d916  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/constants.cc
! c4a80b6a58ff8bd434109f04606ab48c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc
! c057f3e3a75f00f2b8fdde42881b979e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc
! 17906d70641b93539b7d3c92c9e8d516  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc
! 031b420091bea9e6c0ed0e4cfc72b713  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mt19937.cc
! 2b6033796dcaf22da46dd246d31dfc24  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc
! 747a31296fb8c6d63cdb3209c08f7ae0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc
! d838c768977d1703cc60b3f92433338c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc
! ca705e56bfd19aec3547260c2cea87fc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc
! da503a95560ed5dc3244819fbf4ffbda  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc
! 56c5514590816a087941d562e7bda6c6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3.cc
! ac4ec9bd0ddb08d69e7a0d1603539e3a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc
! 00dbee9459005e0ce734f95bc5602733  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4.cc
! 7a19eb1d3e909fcb64647796ff9aceae  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc
! e41f9b04b7cf394718f4a06abe227588  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc
! 286fac774250b47d056b2a192d0c504d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc
! ffcfa2195e9e5d69d094493740806498  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc
! 75bfde67b6ffeeeefed1bb2bc60b6536  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc
! 21ba7aaf2aeaa2c478ef72eb0e8faf17  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc
! 25d8a0005d3299ecf7aa527476042966  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc
! bceb0590f2cb06875c63df28e798b2a4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc
! 0ee80be10682c9e53bc0dd342335e573  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/constants.cc
! 7d9028ad2aba5f1a98069ca7548c254b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc
! 472df618f50b8c622686dd8e3a7691a4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc
! 9fa9b1a842ce97dbd3e01efd23627037  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc
! 593456ee0fd48fd3eef4f820a6dba3a4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc
! 8f940e69c84d86ebc520e0bd3b528641  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc
! 9eadf63833d5df4e79572f6cf93abd27  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc
! 80fbc1a17468bca561b840d30ad8949b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc
! 205614320272e9193586f6548895f4d5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc
! 9b0a7c6ba6198cb1acb00d55064bfb4f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/constants.cc
! 3120720f6a095f423a120f156b09b40a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc
! 78113d02c23656a6faac3b8698775fea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc
! 0c0eab3e69298f023c7dc8202d3ba612  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc
! 8a40053f312ee24cdf430b576f41352d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc
! 60b55e7dc86f9e522fbe87aab6ca79a4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc
! 4ad8d675c5f98ee5a89c4fdf8d150780  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc
! e27cbf84cfa05d112ebba885772427b3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc
! 17bbda6202ff4d1a5f53593c04071cfd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc
! 1515dcb4937183601a5071111173b269  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc
! d12a0440b10c3d60404b708f37bbc555  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc
! 3ae839e4e924ef13f0ee27c337ca2542  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc
! 9cfa17fd914051b8509dda1814100fac  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc
! 68df3f5c7ef7d23205a45ef27e821588  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
! f671ad926bea9cc4e89a45a4d9502303  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
! 56139802567721fcb5202e3ab0105e2a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! aa2272ab058783c32d0ad97444281927  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
! 4edf555913028984bc184df28769c392  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
! c051b91bd021468ab5a7c5145acf2672  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
! d109e789dbedddc631bab9eb98d6b9b3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! 0518ee780cc85f3bc85d6ef5541c313b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
! 5a36aa0f74544db8c77ac5b64c4ea10d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
! 33fa4aa692156c8c4502b4edc2e501ca  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 9b1c1c47d4fc8fb109f2da222a7d5668  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
! 6b0726f27640dffea4f342eea2be7a2e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! bd42c734ca3b0d76e99d8467e869ce68  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
! 92950921ed5d98b8ea38bd657b40c01a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
! 037dd12538587cf72b0c4034911f984a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
! 80b7a8894b8953d876ce3e0abd7110cb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! 374b5f3566d85a3e5477a771e2a2feed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
! f8a2af4b99644723969afdbad8d369c3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
! 70e120f6a887d5d0df38c7269e838e48  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
! f1c60e372b5e9075df576bfda5b7024c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! d10d112d2e97be1f1e76ec02d61743ee  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
! 0973cc3bd8c4b548ce239d4632fbff61  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
! 939aef64dd2e1070e8586d18f6403386  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
! de1213c0571835bca385d94c41f8482b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 599a1db11f017014512ea34abc9ba934  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
! 0063b209d17e40f72ec5e742937a0598  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
! f882944e9c0581a6572c783d5dbea105  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
! 58576980df8b9d0f5c3cb091edc10c11  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 6739cb7921c6343fd6a4c87381bdf159  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
! f4f49d61fc4cabe22a7829108ef1f9fb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
! 893b95af2afefe42dafc896d6406971a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
! 8e7f2aeeacda26c0c65adf2c67e5cc51  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_cxx17.cc
! 98b1a49d71a2c405cef7a2587b7c57ad  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! 381aa3d3bab2f00f64e97b2d8b36b9ff  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
! 159d78b9f67401ef7e724b302abfaaf7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
! d6c26617e13e3df01306d34ea3a191b1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
! acd7a3bec945c431cd9d343ebc2f6bf8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
! edf6220b5b8fb542a7d770b0cfb76e46  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! c23bd7414b3a9dfc4beb18831449697f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
! 46aeb2c337bd797b8f00bf91dd3bbf24  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
! 77b41abf4b51da6647185f896a33b284  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
! 6945ddda54e0b9892d42bf945207038f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
! 3f90bf0a324b195c310f372aff2fdbce  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! b01a2e0923a56127e74fb72ddeb89277  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
! af8ee0e024e2fa9527e8294299fcc397  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
! 3ef5179cf5a4046fa0450e76b84635c0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
! 15b18296a24d2aa39fc1752176b13af8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! 7e96fa73f91e54d881654f6684ca1a63  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
! 79d904def10b365e825cda4f4debf65b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
! 233ad0c261b262539c24056f1bbc208b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
! 458f3f3970a189746cc8d32c7e11784d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! 559b0ca7ce0bc6073e5fb80da8a4a9db  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
! eff78ea225ebaebf862db29bc87c76d9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
! 127446df260134a75ebb30f71634b599  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
! d1199d7989e3e445994dccff2230d656  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! d793973af63f82ae4bab551301d227f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
! f53fc3d21f193714a76b7a296d918c53  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
! c8bb89fb1166e453d7ee531fbc28205a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
! b8be53e36f20a1437252e8ec5fb58aba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! 1d190b1ca14197f922081a66e88370cd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
! 55fb31391c8bdba642e9ded17479f234  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
! a5c0aa14bd17ebfa4e3706441ac7b463  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
! 9a8cae5ece073841abb0b292941a6309  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! 1adfe0f6131f8a99d8cb527dbdcf08f2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
! 18ffcfd5a49a02fe911eaf0f7d19baf4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
! decdfa3b3f2c7698b25112c7451b001b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
! 66198d83ce4d13da80f8a58b1ad66872  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
! 869e55dacc0590600f154bbd751ab592  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
! bd31ab5f4d3d84909bba5ee0d63c7667  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! d32e8ac7f4e39dc1a8db5e62e1a470ba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
! 20c933a1b9d3d2b07f679993b03aecbd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
! 516988f776e7e9ee3537d78d6b27bdb6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
! 1d9b67493fa9783698cafbcae92073b7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 62cf54cd37a05a2e2f608e438330fa33  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
! 87babcd3a613ef57747046449a820662  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
! 6cd21a27efcf9e232f051ecc0b2053e5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
! f41234e640a9135c127e032073a92d02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_cxx17.cc
! 387c0fe7be298891615e3404adba4082  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! 61ad5961e6793ec1d956655927e7a56f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
! 1e5cf0a0f9632ba89f07f2838107c79b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
! 1e510aee24663730c8755ea42e1cbe41  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
! 6a71f1161d0d53028bd1b7f9e73b5d74  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! 0390df5f16f5915cbd17b0e507d799fe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
! a3f6129d24bd2967c79f028b30eb45d4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
! 80afbaea088741481df9ba336398474d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
! e1f61da5eba22f6f57ed93e07da96681  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! 783f5aaaf513f5fc9b97bfdbedffd4e4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
! dacac369de917ec3d1596d96634229d0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
! 7b8ced629d5f5e619a7ba4d540f19136  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
! 431c31c7c66005539b5aa99f67a078d5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
! 272feeb813ca101c5971be38f4699968  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! 288cb7cda11684a7e0d3bbd0caa49950  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
! 58cd4bfd58b5e68c0420604d0386580b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
! 8235e6b8109272632dc2e8a514a4bde0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
! 44fb931f6afb2d7bde36b0eaae13a7f4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! 1b655127b4c73ac771ce21729a980c7b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
! 1ce819b9dc1d2650fb2177b4e2bf797f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
! a743d761ca38ffb4627781753630ade2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! fa4ec8234aae6419ec04d2b2cf375baa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
! b73d059048f7f08175ca2ac2a441d5e5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! b62f71dc8de7f935661170a09c563802  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
! ba92e65987c9a851c01b1fe8e6ef3f13  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
! 0e21cae8458f1123f75f48dd5d21fe26  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
! dc0bc3b734a41e53bdf7089e378fcf21  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
! 5e5047aac495e5512b23aa55e3b76e80  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/empty.cc
! 23bbb3b6674653ea49fa16646e80714d  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/max_size.cc
! f601745fb51b41a46238e83205552aa1  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/size.cc
! cd50162ff2344b776daae72b7fb93be1  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/equal.cc
! 40c8fd27e08199a1279df22e50e61db8  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater.cc
! a359772a2b838bd148ccdf004c766b94  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc
! 84780c11a47b3e3c65dd7079aff51746  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less.cc
! 05722e1e96db6ef0a4583bc7394ccd54  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc
! 5348e9ed9fb00306965fc868a78508ec  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc
! 4a6cbb13773919bb756bc861199b1374  libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
! 4a3ee2475354265a8cc63c8f638d1f33  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc
! fbbf2614c8c95fc47b4e85be9956f3bd  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/back.cc
! c0b3c99c611056dfa8ee2a5ec64a8223  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/data.cc
! c7de78b5f45c712124e8e2f327bf6a26  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/front.cc
! b0a8ced3f563d1965be370ce89313966  libstdc++-v3/testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc
! 99567f90b2d4833a9b301c99c639f8a2  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/assign.cc
! ef44ec024e147061592453b2afd4b39e  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/contiguous.cc
! d2529711decaa40bb6af32392beed480  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc
! dd0cfcbb640a76085153b9498769e2be  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/member_swap.cc
! 2809c6b0bacbc37b44fce34ec94e6428  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/typedefs.cc
! ed5ef0780dcbaa6b487d3a7d66da6deb  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
! 45db4bd0d931f2849fed6f7c61a54a39  libstdc++-v3/testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc
! 594cee63ecfc7365bb2f02f2cc561032  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/get.cc
! de052282b211fd875c2dc2ddfedb8bce  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc
! 26a232c811b5148a2665274015878fa0  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc
! 708135639196c673431dbc6a7b61c4d5  libstdc++-v3/testsuite/tr1/6_containers/hash/24799.cc
! d2228484f24baae309880d989b137768  libstdc++-v3/testsuite/tr1/6_containers/hash/operators/size_t.cc
! 9cb8ba3435c84bccb77335a95df7ddc2  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
! 5479b2c32c2010de68271c05b9950510  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc
! bfe65632a5b821269f3b8f79c8032070  libstdc++-v3/testsuite/tr1/6_containers/headers/array/synopsis.cc
! 762b17c0b132ee883735bfd4c11994d9  libstdc++-v3/testsuite/tr1/6_containers/headers/functional/synopsis.cc
! 2d001f41baf7bc2be498e23e31d1c0d2  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/synopsis.cc
! c7f1af98d8813f02aae3acfe89d5f7f3  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc
! aebad39896bd708a6395dba696784af3  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc
! bec0b1b71a3a67b1ae547c0c9e821af9  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc
! 7edb12cdd6e30f13ccedae20c4a3d50e  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc
! 4e85ff0458bf56a63310fabaa68bddc3  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc
! 515ad5f22cb4e847bf10edaef1a30e59  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/assignment.cc
! 4aa299f5de4c59f21be49cfc0c7a9342  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/big_tuples.cc
! b1b12c48ea1eb94795d464dd28ab37f7  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/constructor.cc
! c31e0b66d7935ba344aab6272eb552e7  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc
! fc125595a719b1d9387237d5d2b94d3f  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc
! 67f890578f576608adac50fa86a83f1d  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie.cc
! f6f4514b34375e28647ec595990d2d53  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc
! 6ac0be4d669091b594c6dd0c46e11861  libstdc++-v3/testsuite/tr1/6_containers/tuple/element_access/get.cc
! b91f53b7fc4dd90140602fcde3b02ada  libstdc++-v3/testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc
! 2973437a3cdf10deb778cf7216f7eed0  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_element.cc
! b39d0b835a7c67016da3555ecd4ccc57  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_size.cc
! d25d69388e50b35d0ddb859b3e0f6603  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/24064.cc
! cda438d415a2684336781d69dc985cd8  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
! e1da6552a7fb851dd56a253cc804bbd4  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/1.cc
! 57592db53117207d77e005dec51f4b41  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc
! 918ba266eaa314e072afc06f7b8d2476  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/find/map1.cc
! b5e3628f87fa292410abba2639e00c54  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc
! c748848b659e65accf10de2eee1aab22  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc
! 9632039de67f49d695c8f9c93d348215  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_range.cc
! 22b329766f37c3af7c5563a6a1d6f219  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_single.cc
! de3f057ada2402fee6312d292b0a11e7  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
! 4424e03fcefd290bbe1ff65e7f41c704  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc
! c2a33af6a593c18730eb12f5cccac3e4  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
! 31dfbf40e89bdf30139b4e440bc0d947  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc
! a6d95dd72c9660799edf9a8e8a3f58e8  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/1.cc
! 2ec14ca7d2fd88b4b99ec463f8162f99  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/2.cc
! fef16a065b033abdcc7e78c28b1dc9aa  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
! 0cdc76dcf3d3528d0ae82d9cc64578a5  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/1.cc
! 5cce82d028bd4ddc50abcd5331d8af25  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
! 398bbc3739d84306a78cba8a06f5df90  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc
! 2c600ff11568b61a165fd9bfff7e674c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
! 260218415517834944a69f948a130548  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc
! 11cf351eab4acb293b195eb1c87d3b07  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc
! abea58cbf65147393a9062d37764dcb3  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc
! c02255a700b9742099a0367cc13ae64c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
! ca6cc04e41cecbe6b1b2a573b0a0cc47  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
! d4c14d29b22bb95cf0909838c6433ac1  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc
! a0e13773416c7f74f8d8a61f21130d00  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/1.cc
! 93662e5a13e05fedd291c272d0c9498c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/2.cc
! 734f51dcbaf30187e23ea8baf8f7871b  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/24054.cc
! 09625314806fd155d48e262fb430a839  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
! 67391d0175960c8b864356614783565c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/1.cc
! 3b615065b6c0c229dbb5ef69eab1582f  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
! 911cfcc3529354782dc10f931c2a563c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc
! 4ec76dafc3f3ece1dffe2c1d6fb0d001  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
! 75218ac6bc10f13227a28c8f790b0a43  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc
! b0db528a9a58c453de60e6cfbbea40d9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc
! 5b739d14ec395173ccc13922cf572967  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc
! dcfa7032cf0777dba4700a15d30b9605  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
! e5eb9bdd227359d3d19f2c24cd1da362  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
! 8320683afd92f5c91e1bb73dec63e57a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc
! 9df74106692068b045b0837dc47936a3  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/1.cc
! 354690059301978d7570d2648987e3d7  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/2.cc
! c576b7c6c20844be080e4964d0c99f1c  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23053.cc
! 9893a42157cdd2b0d4727729102f0480  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23465.cc
! 1432b4384f8f47b91ed7296a286f06a8  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26127.cc
! 4a5f8b47d86bd6338fd26a78bca4f342  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26132.cc
! 9f49e487632bd76cf9cc57a37dc25c64  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
! 1d411df18756226a05a1cae2ab749fed  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/1.cc
! aded5a12d1e484e4663dfc955ed693c1  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc
! 1eb9b48b3c4dccbb15653a4248582633  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/find/set1.cc
! 7a6d947dd47218d4511f4ad53e82af11  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc
! 77bd670a7175d0f369332527ddebc451  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_range.cc
! 0d92464b59ac57425302d71b2bb96ef5  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_single.cc
! 54bf37164209ef8fc75cb65860f19cfd  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
! 6608a4fbccb85145826082c43632be9a  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc
! f97fb6d2632220b084633f188b4ad89b  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
! 932a488c885a0f204b85dbdee5927ffa  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc
! 3f9e6e34c2a352896744baf12f2b08bd  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc
! 91ed3ec0936d852fd8c4c19a9321dcd9  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/1.cc
! b0cf65e062a65872f93daf8e33eeec50  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/2.cc
! 831738b54b6a93c2bd8407495500e748  libstdc++-v3/testsuite/tr1/6_containers/utility/19535.cc
! eaaf6964a85ba04d5688640da4f62f5d  libstdc++-v3/testsuite/tr1/6_containers/utility/pair.cc
! 7b422f509be8bedfc2a1f4652aa289c5  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc
! 2ce755b9d379e52b73670dc26884b4ac  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc
! c0e2fe3b586d53161d425edf55794cb4  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc
! 6d71cc427bb44dc8ca7491efba5274af  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc
! 49adfbb7d3e4e12372b4dab73d1ae669  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc
! ba1b5993bfa1f2c4ea8b5da1e2463ed0  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc
! 490e7e0ccc47f44c4cd46a38ed56cabf  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc
! 917d885505b949f7cbde88f2183d3f92  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc
! 74640dde9ba78778200289f94621e16d  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc
! c8bf93ff24c5cca67d9188d46b62ce1b  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc
! 1ef439126e77844e9d13f538dc9b0bfc  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc
! e33b3683678c5af380ec98e2a3334300  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc
! 375bdaddb283d13b343e43efa4f0f1dc  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc
! 625ecc57b87bf7cccaec6fc81a1c8929  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc
! 2a77e3b87af05ea8019a5b375fe6f893  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc
! fd81524e5da1d58793b2673ffed16ee0  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc
! 8a5e5147cc97730c76144a8c7c82395e  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc
! 676cd20da7149a539ce9d8145a1e7a6f  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc
! 313f843d5f666ecb6fdf193cc6b36519  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc
! 75057b9bdfc238d391b68e8c7b336343  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc
! 4209acc8ecd432b2b7bbe9218bc5e469  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc
! cbfe93cee30197e4d036af6b0214ef8c  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc
! f1831c427af9ddf9679d4b7e7cbcaf98  libstdc++-v3/testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc
! beef8e67b62a317fb8992f93e727984a  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc
! a30b369d732fa4c58ff79eb139c6db11  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc
! eed665aef0f523a686e3a00f5b0716e5  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc
! 4674e837f601d5fc5836500a78c3e592  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc
! 5e8b5132f7a3be6cb568892e5ad1d630  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc
! b90ed2d3c7211162ff0c168ab183120f  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc
! c8ad95226ebe1ce33cc2b4a17398775e  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc
! 643b359610784d5de97b1359c0cbbebd  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc
! e64c74a46cd8bb2f84ab2bc4e1d84cd1  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc
! f3a6c3621fa019175f308108702ff0d6  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc
! 64098a4df024c022f7f670ef61903d26  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc
! e64c74a46cd8bb2f84ab2bc4e1d84cd1  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc
! b534c5e17723cdeae8b6ff5ac4a85737  libstdc++-v3/testsuite/tr1/8_c_compatibility/cctype/functions.cc
! 2d1c40b4969209cdcb897203d1760829  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/functions.cc
! 2b13c5bf924bb8f5704df62e38345918  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc
! 8d6f2eaa13a606086431cd202c00f27b  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
! 31fb0a22277fdbf0c96ea66817dc8cb0  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc
! 3d93b4a27c71be070ec59406640d097b  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
! 55b2e7bda8280c8bcff8297f1028a5b1  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
! 7f9d8cad94cca64c3ff538d31fcc7007  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads.cc
! c7002eb0a175a7b2cd4933e0f6a18c65  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc
! b18c31cb843562c142167d89b1d63878  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
! 28f3a7798c6daa14baf47f1cd133eac0  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc
! 8cbd0da7e93b0a87cdab2776e744d24c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc
! 8ed1d97d33505b3ceeaf0ba31b491226  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
! c0e7787505810892e7e7fe4914196545  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
! c2a97eca3a90bb49f2ca88521206e5d9  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/functions.cc
! d14e66c94eaa24942df81154214ce8cb  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_float.cc
! bad82e60eaf42f633348637ad6af882f  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_int.cc
! c2853e3ee835fcea365cd724ea5f2cdd  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc
! 3836874d6428ebe546651be55a1a15ec  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc
! 61f1a85f64525693cb564ca7e09a9927  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
! c603793d94afa72f146a44405619126c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc
! 9f136149c3baef1fd7e1cbc98e5000d2  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
! db0e9942bd6d90868055ae7e838b0a21  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwctype/functions.cc
! d9e471422e6ce045cb7591717d3deaac  libstdc++-v3/testsuite/tr1/headers/all.cc
! 41ab99c3159e620c64444c0ff4619850  libstdc++-v3/testsuite/tr1/headers/c++200x/complex.cc
! ecdd7acab6804116d728b0628cfb26d5  libstdc++-v3/testsuite/tr1/headers/c++200x/math.cc
! 283682ab5955b4455c36935547ff337b  libstdc++-v3/testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc
! 08e84065ddb399c786023dfceabd38bb  libstdc++-v3/testsuite/tr1/headers/using_namespace_std_tr1.cc
! 0f655dd00e69e04a5dd1379bb2f7b96b  libstdc++-v3/testsuite/tr2/bases/requirements/explicit_instantiation.cc
! f6ec53db66467a31f4154e781b7128c0  libstdc++-v3/testsuite/tr2/bases/requirements/typedefs.cc
! 03d049df9b1bcc0238e0fad100c93d33  libstdc++-v3/testsuite/tr2/bases/value.cc
! 2c874dd61b95446aa05e4a061d050575  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
! b226566903adec5f02e8ec7c2fc70785  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
! 0901f5b456de6e1ef8e459acb2c8129b  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
! 106d6aa0ebf199cecdb1aab195ad5263  libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
! 85793974afc61df8fbe6e2f4592d068c  libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
! 25335d256c3d74b842a21bf0d1b44df3  libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
! f11ef991bc17262fc656f24489ad5bc2  libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
! 2b4a18798ec59ec0ccb42b1b6dfeda0a  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
! 03f730c3136672f8cd1226742b5abe63  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr87784.cc
! e3b7410ecb9a7c465b9bb748d97e0a49  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
! e38724df984f6f323ea00f7a077fec36  libstdc++-v3/testsuite/tr2/headers/all.cc
! 6854641b62882de184c8f0cad1cafbad  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
! 4b5b900d3ee66e7ce3cf094c41c8888c  libstdc++-v3/testsuite/util/atomic/wait_notify_util.h
! 290c8b28b5b8146111f554541a6a96a7  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
! 883e41892d51217acddb30e5a3d6d10c  libstdc++-v3/testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp
! 7cacabd088ea79d3ecff0ed15ab7fa1b  libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
! e259c256f0f1396e7df49b7de2379442  libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
! e7c525d8b14d9b31308160e7a5b0f469  libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
! b07c422519fc7a248a3848940214c028  libstdc++-v3/testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp
! 9c9a48debc9505e9c4218f259640577e  libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
! fa387aaa4df93265ab6ee00e51934c83  libstdc++-v3/testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp
! a692f4a3c96da2728fb855d6dfe61da4  libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
! 3b669aa2e5a4c4395d88caa93349503d  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
! 7f91b1bcbdb80cf8cb0c834e2b095e2c  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
! 463d1ce7413da04dabcee7bd9b239243  libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
! 51304a79f118f6df70caadfda6372299  libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
! 00a1ea5a2d23f741778e1fa5fe3c4f7b  libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
! 8bfacb84268b4decd0396fe209d6e43c  libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
! 06afc6e766061142bac5c1c22f7c31eb  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
! ecb91d285dd06d24c02f08c26bb05012  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
! 0999a9f8724830c7bd4974ed26f0ffaa  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! fde51f75aadb0bb5715284f74c8642d3  libstdc++-v3/testsuite/util/debug/checks.h
! 25fbba0ad63955fde2a8332efa77a12b  libstdc++-v3/testsuite/util/debug/unordered_checks.h
! fa244db7e60d062ea101425361eaba58  libstdc++-v3/testsuite/util/exception/safety.h
! 4936203f8509351a185b7d8d04686a27  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
! 58e6c1c788f9c7d6251c6916142a5fe9  libstdc++-v3/testsuite/util/hash_fn/limit_string_hash_fn.hpp
! 4aa2b640e9457b183669e5b09e5505d4  libstdc++-v3/testsuite/util/hash_fn/string_hash_fn.hpp
! 6bc7d86de387c5d5e1b1a8d80302d0b5  libstdc++-v3/testsuite/util/hash_fn/string_ranged_hash_fn.hpp
! c80cab0725b74bb5b994e8e76f3f0372  libstdc++-v3/testsuite/util/hash_fn/string_ranged_probe_fn.hpp
! 3d1fbe11aa7a0f70cee933b14910b277  libstdc++-v3/testsuite/util/io/illegal_input_error.hpp
! 00e33f41410d28a92e7322e2871c4385  libstdc++-v3/testsuite/util/io/prog_bar.cc
! 3cef72073b43140ff9317f4dad257a00  libstdc++-v3/testsuite/util/io/prog_bar.hpp
! fae3d8dbc973a9be9fc1052a467b477e  libstdc++-v3/testsuite/util/io/text_populate.hpp
! fddf68a287679a3a6c25b5f2a53a1a49  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.cc
! db5ab836701fa68737dafb144256a666  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
! 69e0ee221cd7df9993f054f52438f091  libstdc++-v3/testsuite/util/io/xml.hpp
! d0f39ed8c0c7a52f7b3a91a9f5881459  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! 57423b6de37a4b27f458a11fbab749f2  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! 89ff4bc8fbf2d44cef3d43c6930e43e9  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! bc97df77bb4559c9849e123f2641eb95  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
! 9fddea3631f0f85f196b4e45fb041b52  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! afdd03333a978f2e62864306718c8bb3  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! 95358d6563b644e73e5ecb47e1d187f7  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
! 34a132d8e8c107dfefa1788445ca0c28  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! 82be8cbb89d119cc40352f640ea4b40d  libstdc++-v3/testsuite/util/native_type/native_set.hpp
! ea3ffe4012f2e54c62b9b3b7045aaf79  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
! c054caa235862935627744effe0bb88b  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
! c8a92941ff1e209c85f85c6311e13878  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
! 934d452d40e92046747c86705cbaf3e2  libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
! 6b13fd5fc3ebb364399a19072b53ccd4  libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
! 548ea6d3f97f6691543b0220c664c028  libstdc++-v3/testsuite/util/performance/assoc/timing/find_test.hpp
! 6e67710d7d5268f7a7c99e5561cc7075  libstdc++-v3/testsuite/util/performance/assoc/timing/insert_test.hpp
! 11c9d87562219dac9a4dd5545b76b42d  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
! e91bdf3f6cc5ed0f56a1700f26d798bd  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_insert_test.hpp
! ed00b69d6d2509f313fee81d725c6c2b  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_find_test.hpp
! edda61a217e4ae4a0396da3d30539c4e  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_insert_test.hpp
! 1d16062f9da096280e5981c37cdc5d34  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
! 57a996b9612dce5232a9afeec7bb0879  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_split_join_test.hpp
! e7d5f77a9502136b76649f684199ef70  libstdc++-v3/testsuite/util/performance/io/xml_formatter.hpp
! 95275499000a17fc5f381fb33e15711f  libstdc++-v3/testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
! 17a62813df69507b3c53433b239f8df0  libstdc++-v3/testsuite/util/performance/priority_queue/timing/join_test.hpp
! 37c9335d0426ed79f08a6ccb7e81e497  libstdc++-v3/testsuite/util/performance/priority_queue/timing/modify_test.hpp
! 903c861f13a72781b952fc7e15b9daeb  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_pop_test.hpp
! 1c553354d1c3ecb0678541f688d80f22  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_test.hpp
! 3b4248c28a03b2dca106070fb46ddf46  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.cc
! 4a9a9063a97988791213102aa96d7632  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.hpp
! a5c6a20d7e5bf02bb86fe0dbf6cf4884  libstdc++-v3/testsuite/util/performance/time/timing_test_base.hpp
  f229f005fb6b0edfab2a25224f4aa670  libstdc++-v3/testsuite/util/pstl/pstl_test_config.h
  315ea42a1d905634a70b6bfebf2b60e4  libstdc++-v3/testsuite/util/pstl/test_utils.h
! 5dfc09db3b2617d5c19c9eaec6f64d67  libstdc++-v3/testsuite/util/regression/basic_type.hpp
! 6eadb86a02b8dc5e99f6258f3034b19b  libstdc++-v3/testsuite/util/regression/common_type.hpp
! a31d5aa6650e7d3ba8be115d978a0d62  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
! 49086292936fd06a13cf6cb56cb37b91  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
! 787a2e9c0d903f48d5275ca64787bfb5  libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
! e9c2131eeba7c1d5a3a199e722186f46  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h
! 603345bec70107a147910c9fed9f1b17  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
! 1d25938094a016949b8c50b7932a4cb5  libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
! b20d861005ed22ee8ef1755f36b5afaf  libstdc++-v3/testsuite/util/regression/rand/xml_formatter.hpp
! 0b845069feb9c06b2c71f2c65c713c27  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_load_trait.hpp
! c1dc5a81e2db5521c0b6960328d89298  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp
! d8ea88057f4c529e4f475e9b4b60a723  libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
! 550eb567fb9449d19bb805770e097167  libstdc++-v3/testsuite/util/regression/trait/assoc/node_update_trait.hpp
! 1573afd941326ace1d90640271112422  libstdc++-v3/testsuite/util/regression/trait/assoc/resize_trait.hpp
! a94e7e675c237c57aa288164fab8d092  libstdc++-v3/testsuite/util/regression/trait/assoc/to_string.hpp
! 3addf2ff8fc639640cea5fc0203e7be7  libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
! 61445413b0be2764c6cd3b371a223675  libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
! afe66d04750a7c497342f33b8ad02fcd  libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
! bb6dd9d60504f8a79873fc870e193f24  libstdc++-v3/testsuite/util/regression/trait/priority_queue/trait.hpp
! d63d3f2842d4068f851534a5364e15b8  libstdc++-v3/testsuite/util/replacement_memory_operators.h
! 83bf828131c74fde691a7acfec89fb8c  libstdc++-v3/testsuite/util/slow_clock.h
! 8ac18dc6c9f5dda633f017d5c5779d7d  libstdc++-v3/testsuite/util/specfun_testcase.h
! 15443d8a9c9c2c31a9ff96c2a819c907  libstdc++-v3/testsuite/util/statistic/result_recorder.hpp
! 12332fafc6d36cbb20b6c876b866d8ad  libstdc++-v3/testsuite/util/statistic/sample_mean.hpp
! 3c3b89f4827bc63c2520e03271a89532  libstdc++-v3/testsuite/util/statistic/sample_mean_confidence_checker.hpp
! b1dbe55b9edd1c63e213a5d77d4daa77  libstdc++-v3/testsuite/util/statistic/sample_variance.hpp
! 02eb37fb48c881d4915847d538015cfc  libstdc++-v3/testsuite/util/testsuite_abi.cc
! b6512138575fef873fceae65f127e888  libstdc++-v3/testsuite/util/testsuite_abi.h
! 890a2ba99fd019bde86026b30a2431e6  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
! 6e266b277968cb27c93329a4b5ba47de  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! 76bce70903547f6b2805d51a82152975  libstdc++-v3/testsuite/util/testsuite_allocator.h
! 73cbff69a4a3732bb760848ce25110bf  libstdc++-v3/testsuite/util/testsuite_api.h
! 5ed09a09458ce0f5233885ea4ff0c00a  libstdc++-v3/testsuite/util/testsuite_character.cc
! 27d746bda1ad2167a2f4b476782ac174  libstdc++-v3/testsuite/util/testsuite_character.h
! 95e2ffb9ceeff72953c9cf22a335c371  libstdc++-v3/testsuite/util/testsuite_common_types.h
! bee14ff555a8382320b92c0a71b87d0a  libstdc++-v3/testsuite/util/testsuite_container_traits.h
! a5f860c3b445b0669390aa254fa79dec  libstdc++-v3/testsuite/util/testsuite_containergen.h
! e643ffcc916155f89f82edba4e4d862e  libstdc++-v3/testsuite/util/testsuite_containers.h
! 722f8d04778395b63ee57225dce0e1db  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! 6152acfa78346d08667e148930fcd7ff  libstdc++-v3/testsuite/util/testsuite_error.h
! 34c79aa98bc354586730d42927512981  libstdc++-v3/testsuite/util/testsuite_fs.h
! 7a4d70a5115cff8029d017d51a43fe79  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
! 9c1be3917c2ce4af456872222408b8e9  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! e84e2cc087a496a74ee6be1f84ba7df1  libstdc++-v3/testsuite/util/testsuite_hooks.h
! 70a10382a37f32af299fef6dbbc8b53d  libstdc++-v3/testsuite/util/testsuite_io.h
! 4d0a80e9fa6ca4ba2d3c4ecffc172a17  libstdc++-v3/testsuite/util/testsuite_iterators.h
! b85105397d6ead792d8b5f531070d296  libstdc++-v3/testsuite/util/testsuite_new_operators.h
! 05b2c2eb3d34ac12578a5e2d64489cad  libstdc++-v3/testsuite/util/testsuite_performance.h
! 46bc93da0c39cea97ec2b150c67a3eab  libstdc++-v3/testsuite/util/testsuite_random.h
! 48846b86249f81b09fb82bdde95c1af8  libstdc++-v3/testsuite/util/testsuite_regex.h
! ca2564710e56b23cb143e402f71d7d4f  libstdc++-v3/testsuite/util/testsuite_rng.h
! e3b7b7b18b2aa34a0f1580e45e47a9b3  libstdc++-v3/testsuite/util/testsuite_rvalref.h
! 7c8dfb8da422b5bd056d455d8a8f25f8  libstdc++-v3/testsuite/util/testsuite_shared.cc
! a412686870425c5fb3e383ec59146426  libstdc++-v3/testsuite/util/testsuite_tr1.h
! 039fb71c0474e0e873b0c17058f6787e  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
! 1936a81f2a04a996ff99c7ebdebc5003  libtool.m4
! 4a4f90f16f11f7022b6595a03745ae5a  libvtv/ChangeLog
! ba2573e6811220314686b082dc2e0204  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
  84c8143a9310ea291315dcd0c276df5d  libvtv/aclocal.m4
! 428060c62738810622a8865de9f9d1b0  libvtv/configure
  cc9f6a09cf2db980b7d7119fd0748406  libvtv/configure.ac
! 71860a94561fd4852262efcf401140e6  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
  09a6150d1619f2508d7844f860b3382c  libvtv/scripts/sum-vtv-counts.c
  4835ec70e1fbcd9acd3c280c0060afa4  libvtv/testsuite/Makefile.am
  fda4739e0005be93900b671246d786ff  libvtv/testsuite/Makefile.in
! 45cf79604ff1dacc5cb467b2547c4d0d  libvtv/testsuite/config/default.exp
! c3135c06118981205f468524e15716be  libvtv/testsuite/lib/libvtv-dg.exp
  b01596489f4e825c77d9429f5bd51424  libvtv/testsuite/lib/libvtv.exp
  dc26824f08dd227e0cba7e7ebc8f4d3a  libvtv/testsuite/libvtv.cc/bb_tests.cc
  9d9288724a9873c407e84c96ef43f56a  libvtv/testsuite/libvtv.cc/const_vtable.cc
--- 122036,123999 ----
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-1.tst
  ccd8d09610bb1187b124063e4b7d62b2  libstdc++-v3/testsuite/data/wostream_inserter_other-2.tst
  d41d8cd98f00b204e9800998ecf8427e  libstdc++-v3/testsuite/data/wostream_seeks-1.tst
! 0899eb73b45709e4e3e39237865b3243  libstdc++-v3/testsuite/decimal/binary-arith.cc
! c3757c2efcc9e8125359e7686a0d9df4  libstdc++-v3/testsuite/decimal/cast_neg.cc
! 3670a2279af803d507969eb1411d5d0c  libstdc++-v3/testsuite/decimal/comparison.cc
! cb571b3ed880be280b47a2e8e72f44b2  libstdc++-v3/testsuite/decimal/compound-assignment-memfunc.cc
! d46a912c3bc15a1b44bdcaee72dead86  libstdc++-v3/testsuite/decimal/compound-assignment.cc
! 1d579ac3ec02e92ffeeb45c8d6b8812d  libstdc++-v3/testsuite/decimal/conversion-from-float.cc
! 12744f1be5393bccee9734ec9ac2a7a8  libstdc++-v3/testsuite/decimal/conversion-from-integral.cc
! 516025e3aed9ff03da64bf0387f6805e  libstdc++-v3/testsuite/decimal/conversion-to-generic-float.cc
! 732370aa62bc0ad094263df0c8250ec2  libstdc++-v3/testsuite/decimal/conversion-to-integral.cc
! e18865cfe24e9250bcee8f62c4dea96f  libstdc++-v3/testsuite/decimal/ctor.cc
! 0af71ba4d890b7ff2115b340ecfafd8e  libstdc++-v3/testsuite/decimal/incdec-memfunc.cc
! 7804cd37599e3432e5470143110514a9  libstdc++-v3/testsuite/decimal/incdec.cc
! b83562e30adfd4c9b27d4666e1e8c5bc  libstdc++-v3/testsuite/decimal/make-decimal.cc
! 0c5670e906989b64ecaed7825a175616  libstdc++-v3/testsuite/decimal/mixed-mode-arith_neg.cc
! d927465e5086a39d637355baa2545041  libstdc++-v3/testsuite/decimal/mixed-mode-cmp_neg.cc
! d415f792df8f1623bad5483c9692b371  libstdc++-v3/testsuite/decimal/operator_neg.cc
! 980448dec5dbc0e8ec83bde6a685ce6e  libstdc++-v3/testsuite/decimal/pr54036-1.cc
! 269c9111da02ed0f9478d8fec2340f92  libstdc++-v3/testsuite/decimal/pr54036-2.cc
! 33d6c6a0b8a4e1e6e62f03b25132fb09  libstdc++-v3/testsuite/decimal/pr54036-3.cc
! 53f7bf25172468de6b98b606ce34793c  libstdc++-v3/testsuite/decimal/pr58815.cc
! 469356fe9982fe649ee15e4393e0a2cc  libstdc++-v3/testsuite/decimal/unary-arith.cc
! b21c9e4ab47988772a045a7df5d147ef  libstdc++-v3/testsuite/experimental/algorithm/sample-2.cc
! d43f4b5870f6ab97d55685f930561653  libstdc++-v3/testsuite/experimental/algorithm/sample.cc
! 4cebd7b9ad4629fe5cd24215dcf28c84  libstdc++-v3/testsuite/experimental/algorithm/search.cc
! b74d8216a0098e6fd0d431a2a150fae7  libstdc++-v3/testsuite/experimental/algorithm/shuffle.cc
! 9cc03e92145473ff1bc0a83db549aa04  libstdc++-v3/testsuite/experimental/any/assign/1.cc
! 61bdad27bf33141abd644611b7677cd9  libstdc++-v3/testsuite/experimental/any/assign/2.cc
! 36522611855bfc690eecb3ceeff12114  libstdc++-v3/testsuite/experimental/any/assign/exception.cc
! 45c7f130eaff4a34066fcba0a7cdbb7a  libstdc++-v3/testsuite/experimental/any/assign/self.cc
! ef9062aef099130592194d3f42a38465  libstdc++-v3/testsuite/experimental/any/cons/1.cc
! 43486b96f8ffa5d871a88c57c48342ad  libstdc++-v3/testsuite/experimental/any/cons/2.cc
! 42feb84e5a238c008667ebffdceaf98e  libstdc++-v3/testsuite/experimental/any/cons/aligned.cc
! d103a3eea23d76a3c5ba52888aa14d9e  libstdc++-v3/testsuite/experimental/any/cons/nontrivial.cc
! 10f4f1476593026a772610b08b9f49f8  libstdc++-v3/testsuite/experimental/any/misc/any_cast.cc
! b308bfc9b7535e655673ee853146bba1  libstdc++-v3/testsuite/experimental/any/misc/any_cast_neg.cc
! f81cc30baae1e9ba25561fea01d160e7  libstdc++-v3/testsuite/experimental/any/misc/any_cast_no_rtti.cc
! 27280da4073b8883ad754833467afc68  libstdc++-v3/testsuite/experimental/any/misc/swap.cc
! 4f6ddbce03894a6ee8b1b1fb9c20806c  libstdc++-v3/testsuite/experimental/any/modifiers/1.cc
! ff64ed2737df66b1b45d8006c4ea133a  libstdc++-v3/testsuite/experimental/any/observers/type.cc
! 2a0e9019735eb5196958fbde28a4bf8f  libstdc++-v3/testsuite/experimental/any/typedefs.cc
! 5604a1652a3a1ce31f79231fecc73141  libstdc++-v3/testsuite/experimental/array/make_array.cc
! 95d4f16ddc93164a26af1e704ac80be7  libstdc++-v3/testsuite/experimental/array/neg.cc
! 455926214358b9d6a504f8deb49e4d56  libstdc++-v3/testsuite/experimental/chrono/value.cc
! dfea9d6cddea3a6f5178113aa8e8ce4d  libstdc++-v3/testsuite/experimental/deque/erasure.cc
  486c6490ca99880768c8a8d443ad1c02  libstdc++-v3/testsuite/experimental/feat-char8_t.cc
  02455db47de7f16c8e2d1f2af4839fc7  libstdc++-v3/testsuite/experimental/feat-cxx14.cc
  f754118861b851f83334813d834cb200  libstdc++-v3/testsuite/experimental/feat-lib-fund.cc
! 522219a29285a47737a79f3702afcd16  libstdc++-v3/testsuite/experimental/filesystem/file_status/1.cc
! d0b3e568dab7b9def3b75bddea641044  libstdc++-v3/testsuite/experimental/filesystem/filesystem_error/cons.cc
! 4152958ada9a123344757a6ba5a358bc  libstdc++-v3/testsuite/experimental/filesystem/iterators/106201.cc
! 4847b15793bdddaf1befc3cdaac67728  libstdc++-v3/testsuite/experimental/filesystem/iterators/97731.cc
! 379f9d308596c0109b4b52cf65391629  libstdc++-v3/testsuite/experimental/filesystem/iterators/directory_iterator.cc
! fba30be717493830fdcf7cd331fb300c  libstdc++-v3/testsuite/experimental/filesystem/iterators/error_reporting.cc
! 00a53bcfc5c041286dd247485a74c4b2  libstdc++-v3/testsuite/experimental/filesystem/iterators/pop.cc
! 88dd5572b162348bfcb2c7af2f2ed706  libstdc++-v3/testsuite/experimental/filesystem/iterators/recursive_directory_iterator.cc
! a2be19985f4562200b534aa694b76eaa  libstdc++-v3/testsuite/experimental/filesystem/operations/absolute.cc
! 9bca09eb6007906cec9927cb95f003e6  libstdc++-v3/testsuite/experimental/filesystem/operations/canonical.cc
! 3d52359115da663d700810684c3accca  libstdc++-v3/testsuite/experimental/filesystem/operations/copy.cc
! 6c6612f6cc3b207e9437efc4f1f33b32  libstdc++-v3/testsuite/experimental/filesystem/operations/copy_file.cc
! 7a49144eff94312a5776f95b7df0c79d  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directories.cc
! 8d4b8ad9c1375f3ddf3de53ecc47697a  libstdc++-v3/testsuite/experimental/filesystem/operations/create_directory.cc
! 59c0ce0953c46136062ebe263e8e8cca  libstdc++-v3/testsuite/experimental/filesystem/operations/create_symlink.cc
! e0e82e042394c1849c5f00bd1775e91c  libstdc++-v3/testsuite/experimental/filesystem/operations/current_path.cc
! 394bff3243bfa3a81f3f0f45ef2661e9  libstdc++-v3/testsuite/experimental/filesystem/operations/equivalent.cc
! 1b6e183c01c177bd99d5c23db2df60f5  libstdc++-v3/testsuite/experimental/filesystem/operations/exists.cc
! 80f2753ac2ff8390885b254380917d60  libstdc++-v3/testsuite/experimental/filesystem/operations/file_size.cc
! cf4e61341b6797efd1e85f0ac1f2f6f2  libstdc++-v3/testsuite/experimental/filesystem/operations/is_empty.cc
! aeb03545e987083e0162ed1e321e6bbd  libstdc++-v3/testsuite/experimental/filesystem/operations/last_write_time.cc
! 3275210e900a167286ace7ddb69c32df  libstdc++-v3/testsuite/experimental/filesystem/operations/permissions.cc
! 7d24a21f41d52ce2167ec3c6f5696697  libstdc++-v3/testsuite/experimental/filesystem/operations/read_symlink.cc
! c683e99def760c911eec2928e1c07e1c  libstdc++-v3/testsuite/experimental/filesystem/operations/remove.cc
! 42572c97975abff83c484d865250acfc  libstdc++-v3/testsuite/experimental/filesystem/operations/remove_all.cc
! 8599bc5d5ceb4f5b64b567c74d91217d  libstdc++-v3/testsuite/experimental/filesystem/operations/rename.cc
! 6a4fb72204aa2703924609f08522d17b  libstdc++-v3/testsuite/experimental/filesystem/operations/space.cc
! b98948c551bee5cc7d9c094747ddba4a  libstdc++-v3/testsuite/experimental/filesystem/operations/status.cc
! 611dc3d0c27ed2c4755e2623ad755d39  libstdc++-v3/testsuite/experimental/filesystem/operations/temp_directory_path.cc
! 83926f9215a01d63eeab0639b3767fe6  libstdc++-v3/testsuite/experimental/filesystem/path/append/path.cc
! 5c728240ac6f9d3cb554e6c8b1426e86  libstdc++-v3/testsuite/experimental/filesystem/path/assign/assign.cc
! 51cde83307e75390b27e9a01c6d64dab  libstdc++-v3/testsuite/experimental/filesystem/path/assign/copy.cc
! 7a96d873382d822fd330b3b81ce412c1  libstdc++-v3/testsuite/experimental/filesystem/path/compare/compare.cc
! 9781d2ddc7dcd407841d5aa8e364b349  libstdc++-v3/testsuite/experimental/filesystem/path/compare/path.cc
! 751386fe94f215b9517c877cdc28e958  libstdc++-v3/testsuite/experimental/filesystem/path/compare/strings.cc
! 918b69aab461293cc241390a9b1479dc  libstdc++-v3/testsuite/experimental/filesystem/path/concat/path.cc
! 1b7d15b79bbcf73d77ef62f090e14db4  libstdc++-v3/testsuite/experimental/filesystem/path/concat/strings.cc
  c06b01e19066f0d4ffa4faa5202f4e3e  libstdc++-v3/testsuite/experimental/filesystem/path/construct/100630.cc
! 1831ec74b205501c0cfadc0b0cfc0838  libstdc++-v3/testsuite/experimental/filesystem/path/construct/80762.cc
! b849b8365f4d258441640b2be925f033  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90281.cc
! bf71941ff41a1d34a50279f920135216  libstdc++-v3/testsuite/experimental/filesystem/path/construct/90634.cc
! 5c406dc2e8d3c5bbab9689a471cce8f9  libstdc++-v3/testsuite/experimental/filesystem/path/construct/95048.cc
! 896325f60ba773a54e592ae9465a5a9b  libstdc++-v3/testsuite/experimental/filesystem/path/construct/copy.cc
! 7e663f40515584a5738f1f38dd4ac07b  libstdc++-v3/testsuite/experimental/filesystem/path/construct/default.cc
! a6dee22ea3e36ca15c2c6dbd547dc7d0  libstdc++-v3/testsuite/experimental/filesystem/path/construct/locale.cc
! 758500eb7a7ece83d230981dffb50423  libstdc++-v3/testsuite/experimental/filesystem/path/construct/range.cc
! d595cf87b5abe7ea23eeb37d2a52073d  libstdc++-v3/testsuite/experimental/filesystem/path/construct/string_view.cc
! ce0d1c84982e9b4a308a106208fc95fa  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/extension.cc
! 3907f3c12781afd85ca23f1543d77086  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/filename.cc
! d68e91ac82b8266c2b48a1d2becc808d  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/parent_path.cc
! a2c9a58153ced4f573a50a3efe6e2bba  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/relative_path.cc
! 24ce1ac544f879a544b9944bdc446674  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_directory.cc
! 2f03e652c645eb28af45d53c378f287f  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_name.cc
! dfb0cf0ea36578103bde01e6e29df8f8  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/root_path.cc
! b240ea81eab3884c0d6fcb7805f31378  libstdc++-v3/testsuite/experimental/filesystem/path/decompose/stem.cc
! 81d7460c456e64319ef7a22dcb5ce22b  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path-char8_t.cc
! 2ca40835b36367645cca96a10e861e53  libstdc++-v3/testsuite/experimental/filesystem/path/factory/u8path.cc
! d8f64f9b4c89779046f5939e7028c11f  libstdc++-v3/testsuite/experimental/filesystem/path/generic/generic_string.cc
! 48cdcbc47b9f43daac29c981108b386f  libstdc++-v3/testsuite/experimental/filesystem/path/itr/traversal.cc
! a51b0f2eac71825bc07e7067f401e681  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/clear.cc
! 61800d5934d8d8bac72d22372e88497f  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/make_preferred.cc
! d2d6d74d9ec1de4ef2f6a5dc4a732d26  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/remove_filename.cc
! 89763777f4a97d195d7bc45aa330d08b  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_extension.cc
! e924b0bac6bc21d4f6452d67269c560d  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/replace_filename.cc
! 83dfc63047be204631b76c1f79aeafbe  libstdc++-v3/testsuite/experimental/filesystem/path/modifiers/swap.cc
! 58dcedf114beee5dc802acac26182fad  libstdc++-v3/testsuite/experimental/filesystem/path/native/alloc.cc
  6972da7c2da200c073d985ccbd580534  libstdc++-v3/testsuite/experimental/filesystem/path/native/conv_c++23.cc
! 3f9b36bece574407636b373f7a936b2d  libstdc++-v3/testsuite/experimental/filesystem/path/native/string-char8_t.cc
! fd0ebe88beda531188b9f184015dbdb7  libstdc++-v3/testsuite/experimental/filesystem/path/native/string.cc
! 3433e155045f0404f76e570a5326ff9d  libstdc++-v3/testsuite/experimental/filesystem/path/nonmember/hash_value.cc
! ac948cf002a4879aa4198ec80d25f71b  libstdc++-v3/testsuite/experimental/filesystem/path/preferred_separator.cc
! fd83332d9b95c0914ec94ee1ef3856c3  libstdc++-v3/testsuite/experimental/filesystem/path/query/empty.cc
! 846298a982b9a2eaa470c4a90459da33  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_extension.cc
! 985eba672eadde3b4ef047f4b46c2a00  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_filename.cc
! c38fefbba653dd7abd177aaa1332c6d5  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_parent_path.cc
! 500923f17e4e77297facf2eb83a88494  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_relative_path.cc
! 8f98d5d2ea8c5fecfefce35bf5310bfb  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_directory.cc
! a1032403ab3fc27503ffaa6587ea190c  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_name.cc
! e6366876f0e1eb911c30d90500ce559f  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_root_path.cc
! 13eef7d59d9939686386f3544558fda3  libstdc++-v3/testsuite/experimental/filesystem/path/query/has_stem.cc
! 4f631f286617289fe95b25f68dc698cc  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_absolute.cc
! bc806fdc9c37b91050896f713630ce2f  libstdc++-v3/testsuite/experimental/filesystem/path/query/is_relative.cc
! 2ab53cdfd49b41a0473e43c1cf17e3b2  libstdc++-v3/testsuite/experimental/forward_list/erasure.cc
! 654ab6bfa67fb1d4012d057690c8365e  libstdc++-v3/testsuite/experimental/functional/87538.cc
! 7d9018e1d9bb21e3de433b7247de51d9  libstdc++-v3/testsuite/experimental/functional/not_fn.cc
! d3d7424a2d97d981e86b389a686c51b8  libstdc++-v3/testsuite/experimental/functional/searchers.cc
! 485fff0bbb4df3adfb27294ee269c983  libstdc++-v3/testsuite/experimental/functional/value.cc
! 329c499e7688741c65e2c85090d47c8b  libstdc++-v3/testsuite/experimental/iterator/make_ostream_joiner.cc
! 6f9fadd2257261189fdb672fb2144cc2  libstdc++-v3/testsuite/experimental/iterator/ostream_joiner.cc
! 7c50675b7ca730a17da55b2c525eb4e2  libstdc++-v3/testsuite/experimental/iterator/requirements.cc
! 0358f9865bb62a91bf6219c128db8754  libstdc++-v3/testsuite/experimental/list/erasure.cc
! 7d2998827c275af623f699cc91788fa1  libstdc++-v3/testsuite/experimental/map/erasure.cc
! cad095354a57722acb19d0f87c3fce07  libstdc++-v3/testsuite/experimental/memory/observer_ptr/assignment/assign.cc
! d3ab83cbe4502b619d8d47c64035e6d0  libstdc++-v3/testsuite/experimental/memory/observer_ptr/cons/cons.cc
! 8650476cb09a847d87a9ca4cd63f03a4  libstdc++-v3/testsuite/experimental/memory/observer_ptr/hash/hash.cc
! b01b2f7b4659b9e39b594fe9777e1c52  libstdc++-v3/testsuite/experimental/memory/observer_ptr/make_observer.cc
! 47817faf5b5da67414eaf948fffb85ac  libstdc++-v3/testsuite/experimental/memory/observer_ptr/relops/relops.cc
! ce6378cd957909904db1a175ffb9b2bc  libstdc++-v3/testsuite/experimental/memory/observer_ptr/requirements.cc
! 4cb1ae823d22084f6eb4bab2d10321d7  libstdc++-v3/testsuite/experimental/memory/observer_ptr/swap/swap.cc
! fe88c7666a4d1f08196341f692cc8ab6  libstdc++-v3/testsuite/experimental/memory/observer_ptr/typedefs.cc
! aea5fafebc86567bc21ba1e3c1c52bf3  libstdc++-v3/testsuite/experimental/memory/shared_ptr/assign/assign.cc
! 61991e40dc1def7162a5292f6505daad  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cast/cast.cc
! 5ad519586d4aec194c00cd4453776a91  libstdc++-v3/testsuite/experimental/memory/shared_ptr/comparison/comparison.cc
! c6608c0cca1b5e77ce3fdc4cc466625a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alias_ctor.cc
! 93789230a057de0e81d761a0bb45ea9c  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/alloc_ctor.cc
! 01d6a6eb8c93b59c947e7f89b8820770  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor.cc
! 6806d024f8bbafdc2381eaec6a9e47fa  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/copy_ctor_neg.cc
! d7077943a58664d9115139169e763576  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/default_ctor.cc
! 2913cf38887422c9902d761f2044a8ca  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/enable_shared_from_this.cc
! b3cfd215a11d7a90ea80b48db602f9ec  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/move_ctor.cc
! d61a70ab5f2aa3c3f3d58749b8366b94  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor.cc
! edabd22e9ae30136653c09824d621558  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/pointer_ctor_neg.cc
! e164581f8f300512dc7b5ccfb2cb7304  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/torture.cc
! fc07f7199d4f22333b4560d9ac6ad446  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/unique_ptr_ctor.cc
! 7db25689858d52353f909336a3ab1139  libstdc++-v3/testsuite/experimental/memory/shared_ptr/cons/weak_ptr_ctor.cc
! cb6af3dd482dce2bc5bba119f46792b8  libstdc++-v3/testsuite/experimental/memory/shared_ptr/dest/dest.cc
! fff997d617db4900cc17b680dd2e7f9a  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset.cc
! bded9d3cb5cca933997a0491246908d0  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/reset_neg.cc
! 83aaab22e6a7af712f237d824708cd32  libstdc++-v3/testsuite/experimental/memory/shared_ptr/modifiers/swap.cc
! 3906a45c8f3c756cebf96e7f0ae1ad26  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/bool_conv.cc
! 9d5ee4c8319ab066b206a80778b065fd  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/operators.cc
! eff51606ddd3dff29b281d2958f3ea8d  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/owner_before.cc
! ec3bff12199ac38da41024d97326147b  libstdc++-v3/testsuite/experimental/memory/shared_ptr/observers/use_count.cc
! fab953b7e638848911c0b8ebc5d0e886  libstdc++-v3/testsuite/experimental/memory_resource/1.cc
! c06cabecddd12c29bbfc20dc258c969b  libstdc++-v3/testsuite/experimental/memory_resource/70966.cc
! 90551c65e072883f90b15e3f306e6283  libstdc++-v3/testsuite/experimental/memory_resource/new_delete_resource.cc
! acd8ca1a310e616ec2a3b386b894ea0b  libstdc++-v3/testsuite/experimental/memory_resource/null_memory_resource.cc
! d77670cdb9f2bd50de9187a9d516cc2b  libstdc++-v3/testsuite/experimental/memory_resource/resource_adaptor.cc
! 161ecb6efe26f04e9f48748611ad1b81  libstdc++-v3/testsuite/experimental/names.cc
! ecb0982f4535b7125712d5ad0de82e55  libstdc++-v3/testsuite/experimental/net/buffer/arithmetic.cc
! 5fb863a919a539fa1a09b7039ffb05a8  libstdc++-v3/testsuite/experimental/net/buffer/const.cc
! 6ff9104ee97e3724518501e62b87a32e  libstdc++-v3/testsuite/experimental/net/buffer/creation.cc
! 6b8f3f46e23b4d3e5707aa8c2ea18bac  libstdc++-v3/testsuite/experimental/net/buffer/mutable.cc
! fe59d57a0b5db9b95a4e184d8bf16bf3  libstdc++-v3/testsuite/experimental/net/buffer/size.cc
! e6b9ef986bde4fcf5efbd9814469aac2  libstdc++-v3/testsuite/experimental/net/buffer/traits.cc
! b3a2a09188b6fcc1eab73c094a4112a0  libstdc++-v3/testsuite/experimental/net/execution_context/make_service.cc
! 99d0aa01a77fb1d2515f401446bb2c93  libstdc++-v3/testsuite/experimental/net/execution_context/use_service.cc
! 8a239431b9425b7d24e9dc16854cfb8a  libstdc++-v3/testsuite/experimental/net/executor/1.cc
! 725d11c6bfbcbad81869aef83c74ebe8  libstdc++-v3/testsuite/experimental/net/headers.cc
! bbebc77d7a8a445ac20f8e367a947fde  libstdc++-v3/testsuite/experimental/net/internet/address/v4/comparisons.cc
! d1bc00caac713b8fe8bbdddd891307b8  libstdc++-v3/testsuite/experimental/net/internet/address/v4/cons.cc
! 01af0feae4dd90d205e9632d443da047  libstdc++-v3/testsuite/experimental/net/internet/address/v4/creation.cc
! d9ca43dd39698879243b609aa2642725  libstdc++-v3/testsuite/experimental/net/internet/address/v4/members.cc
! e578851fde3c165b0a65d0a489ad81fe  libstdc++-v3/testsuite/experimental/net/internet/address/v6/members.cc
! c5933a59fa35123b5f7476b94a3b153c  libstdc++-v3/testsuite/experimental/net/internet/endpoint/cons.cc
! 2ebb41182bd0ccc894c6ea518d3ea2eb  libstdc++-v3/testsuite/experimental/net/internet/endpoint/extensible.cc
! ec468421255febe9f30c0b08480f9b93  libstdc++-v3/testsuite/experimental/net/internet/network/v4/cons.cc
! effbee31a73742de94b337a743054276  libstdc++-v3/testsuite/experimental/net/internet/network/v4/members.cc
! 24c60b07806057560068df299d0c0c43  libstdc++-v3/testsuite/experimental/net/internet/resolver/base.cc
! 62a69b0e6f6cd8d597e4aa7e9c49b1f6  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/lookup.cc
! 241eed295598dba2c9847a7e798c8f4c  libstdc++-v3/testsuite/experimental/net/internet/resolver/ops/reverse.cc
  760dec58bec2534cd56103a2710b1e16  libstdc++-v3/testsuite/experimental/net/internet/socket/opt.cc
  47ab303b0324b578953893e188a1c4e8  libstdc++-v3/testsuite/experimental/net/internet/tcp.cc
  31837180dee34f479c2c7eaafac7b04a  libstdc++-v3/testsuite/experimental/net/internet/udp.cc
! af1b2322771cc51ed702ffa5fd336944  libstdc++-v3/testsuite/experimental/net/socket/basic_socket.cc
! dabc1dd91e6527a7383e191326f4c191  libstdc++-v3/testsuite/experimental/net/socket/socket_base.cc
! 1dbbe9b4c533cfa88663e95828ec10b4  libstdc++-v3/testsuite/experimental/net/system_context/1.cc
! 100745b7679c81cd30ba27dfa2fc741e  libstdc++-v3/testsuite/experimental/net/timer/waitable/cons.cc
! 1cf1b4fa699227af1ff34864f60f2ed9  libstdc++-v3/testsuite/experimental/net/timer/waitable/dest.cc
! ad9a12dee28fdce0cc1bd8d66949b43e  libstdc++-v3/testsuite/experimental/net/timer/waitable/ops.cc
! 1a1477ec11c31238279f1b5c28237109  libstdc++-v3/testsuite/experimental/numeric/77801.cc
! 5478974afa877681d65896cce4c25aee  libstdc++-v3/testsuite/experimental/numeric/92978.cc
! 01107ef1ece180cc0db13bfbf1d0ffeb  libstdc++-v3/testsuite/experimental/numeric/gcd.cc
! a9959f8592827755af79e49dd0be6a47  libstdc++-v3/testsuite/experimental/numeric/lcm.cc
! 78e606aa8a35e5d3708bd0ed8ed9171c  libstdc++-v3/testsuite/experimental/optional/77288.cc
! 1c24119517239471809665aa59b293c2  libstdc++-v3/testsuite/experimental/optional/assignment/1.cc
! 24f1dc658609ab8b16c4df81643acae5  libstdc++-v3/testsuite/experimental/optional/assignment/2.cc
! 64114bc8f8bea761be7b28c209b53034  libstdc++-v3/testsuite/experimental/optional/assignment/3.cc
! 82602fe0af7ace8d9476b9b29b20da62  libstdc++-v3/testsuite/experimental/optional/assignment/4.cc
! 04e58aad1a16058d79cd36a4bae5d765  libstdc++-v3/testsuite/experimental/optional/assignment/5.cc
! 2c0c2b4ebde3d2adfc88076cbc36884d  libstdc++-v3/testsuite/experimental/optional/assignment/6.cc
! 8b42e9e3fbfa20a5febcd27ee615dc09  libstdc++-v3/testsuite/experimental/optional/cons/77727.cc
! eca83dbaeb76f1eea590dcfb249d4851  libstdc++-v3/testsuite/experimental/optional/cons/copy.cc
! a9efcfc089b94a3cac2d8b887fd96cbd  libstdc++-v3/testsuite/experimental/optional/cons/default.cc
! fe016bfa42da310b2ad295be4b863ab7  libstdc++-v3/testsuite/experimental/optional/cons/move.cc
! 22152b7a432cceaffc7a8f1f5bb90ae5  libstdc++-v3/testsuite/experimental/optional/cons/value.cc
! 4a41ae866cf1197a6957490a6148413d  libstdc++-v3/testsuite/experimental/optional/cons/value_neg.cc
! 96715d807d08a79230e9e95c96aeb134  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/default.cc
! 5c1c820a9fd4a9405ee2fa2159f34813  libstdc++-v3/testsuite/experimental/optional/constexpr/cons/value.cc
! c568a48f11e5e9f1d29396c7210d0d95  libstdc++-v3/testsuite/experimental/optional/constexpr/in_place.cc
! 4cd192a46d8b1ffdf8e67fbf9dd1c014  libstdc++-v3/testsuite/experimental/optional/constexpr/make_optional.cc
! 652ab4d2944a63681cccdfa457b10b03  libstdc++-v3/testsuite/experimental/optional/constexpr/nullopt.cc
! 3ff2e4803febd2748e97d2c0703ad521  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/1.cc
! 142a2aeb014d62784e7ff6aa9e661586  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/2.cc
! 3a0e6212b9f563ff7892439449697645  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/3.cc
! 6fe2eae990863962a8a27b25fd44abff  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/4.cc
! acef86378b576e33f4247eadd26adc29  libstdc++-v3/testsuite/experimental/optional/constexpr/observers/5.cc
! f97128776e874f58f735b508d41f2f71  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/1.cc
! aec60cf2147ef1e0bc78c2f04b08668a  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/2.cc
! 17eb83116582826ce3bbaf64cc71ce68  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/3.cc
! d21f1ad199dc5f3d85e74d1e30ebd688  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/4.cc
! a949033f1c3e9bc51ddcefdaff5947e7  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/5.cc
! 098f94848e0d5465bd0d32b0c8a1aece  libstdc++-v3/testsuite/experimental/optional/constexpr/relops/6.cc
! a2d5e91ac72e10b57c6b67091e498a78  libstdc++-v3/testsuite/experimental/optional/in_place.cc
! a9c0dd4118e0088fdd6aa17bb28380d5  libstdc++-v3/testsuite/experimental/optional/make_optional.cc
! dc888dfab921461654a96f0845171615  libstdc++-v3/testsuite/experimental/optional/nullopt.cc
! 93a22c84c90c60faa1f8b464aadecc79  libstdc++-v3/testsuite/experimental/optional/observers/1.cc
! ada53cf9231516121635676d6ef3cf73  libstdc++-v3/testsuite/experimental/optional/observers/2.cc
! bebc2fe80934c9197755f4e08e4a8db8  libstdc++-v3/testsuite/experimental/optional/observers/3.cc
! 2a674a9eef497dd037568c4dbd277c90  libstdc++-v3/testsuite/experimental/optional/observers/4.cc
! cce9615cb690b1c6314bcf0998e3f954  libstdc++-v3/testsuite/experimental/optional/observers/5.cc
! eb07901cff837d70fd48fda464f4de7c  libstdc++-v3/testsuite/experimental/optional/relops/1.cc
! b8a8d510c773d87a25aff9ed77772c1e  libstdc++-v3/testsuite/experimental/optional/relops/2.cc
! 2eab058475e6f8d708c0afab3ab07db7  libstdc++-v3/testsuite/experimental/optional/relops/3.cc
! 5551e719feb346c35e8040f5593b1276  libstdc++-v3/testsuite/experimental/optional/relops/4.cc
! 924457569ae2ab6f30980c1f0448c432  libstdc++-v3/testsuite/experimental/optional/relops/5.cc
! 9531bbc3fdd81a784dc82ada10c40773  libstdc++-v3/testsuite/experimental/optional/relops/6.cc
! 74fa0bd74b2fbb2429416d76536da193  libstdc++-v3/testsuite/experimental/optional/requirements.cc
! e7a189777ddbb48bee2c238d2c92e425  libstdc++-v3/testsuite/experimental/optional/swap/1.cc
! b453a0df7cf07904091a825415adeb89  libstdc++-v3/testsuite/experimental/optional/typedefs.cc
! 71835f922c1bc542ef99cb645a4ad6e6  libstdc++-v3/testsuite/experimental/polymorphic_allocator/1.cc
! 25fa5d19acf0ddc565b4237b974b4e3a  libstdc++-v3/testsuite/experimental/polymorphic_allocator/construct_pair.cc
! edfdbd00dfe021bd59aefb613d5d7369  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_deque.cc
! a1d760a8e565a627b2e6dfb191a92f48  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_forward_list.cc
! b0c1ce763caa163f7eee7fb2586dd800  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_list.cc
! 9de019d1ad768798f9833b8e53d2ead6  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_map.cc
! d11a31927a8ad1a2b0d5a1e02460c175  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_match.cc
! 06c4ac7fac83a7eb34c6141426ee5b38  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multimap.cc
! 10f16a245913e6bb129436b86220d085  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_multiset.cc
! 0a72ca0172000e236c935d50010355c3  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_set.cc
! 8c48bf9263ecc4b214b70cb4cdbfe040  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_string.cc
! 4706fe33d2f00f9c275aafe0f4f1e9d0  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_map.cc
! 65eb1cc42fd27e5359330b426a57199e  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multimap.cc
! 08fe4dae317bbbba2ad74f0979127335  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_multiset.cc
! 9e0d0fdd6934fe1a8727f1378114022c  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_unordered_set.cc
! f985834aa6c818956a8e74874ec2daf0  libstdc++-v3/testsuite/experimental/polymorphic_allocator/pmr_typedefs_vector.cc
! 4cb6672f0dfb344f5df9668d89c1844f  libstdc++-v3/testsuite/experimental/propagate_const/assignment/copy.cc
! 545203480ef665355af6be60876a3711  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move.cc
! 11e7b7fe88eac55698f6811631e6f02b  libstdc++-v3/testsuite/experimental/propagate_const/assignment/move_neg.cc
! 0020096c78ab9f27fbf6d197031aa13e  libstdc++-v3/testsuite/experimental/propagate_const/cons/copy.cc
! aa60b9b85f34d51d464a947cfcbd8db1  libstdc++-v3/testsuite/experimental/propagate_const/cons/default.cc
! 2935abfe0eccdf62e6ac2755363d5ac6  libstdc++-v3/testsuite/experimental/propagate_const/cons/move.cc
! aa7d50b62b6dbb1fe0d25ede0024b6bc  libstdc++-v3/testsuite/experimental/propagate_const/cons/move_neg.cc
! 5cc69080cb8073fcc257f7edfe5fff5e  libstdc++-v3/testsuite/experimental/propagate_const/hash/1.cc
! c336119b97548f2620759c280d362131  libstdc++-v3/testsuite/experimental/propagate_const/observers/1.cc
! 04b09dce4e740e5b8a2e2620eb6b3ef4  libstdc++-v3/testsuite/experimental/propagate_const/observers/107525.cc
! 016be79cd08241bf57e3dd195b3b8227  libstdc++-v3/testsuite/experimental/propagate_const/relops/1.cc
! b3b6f85219901a59de86800e997f0a9c  libstdc++-v3/testsuite/experimental/propagate_const/requirements1.cc
! c677cd775ff2fae7d1a4d45658be0699  libstdc++-v3/testsuite/experimental/propagate_const/requirements2.cc
! 67206ad43319545c05a37dae37c0312f  libstdc++-v3/testsuite/experimental/propagate_const/requirements3.cc
! e3950456fe095673e60ef94031608ce1  libstdc++-v3/testsuite/experimental/propagate_const/requirements4.cc
! e41dd87e80d67e6b8e651b78e7e3ab75  libstdc++-v3/testsuite/experimental/propagate_const/requirements5.cc
! 8308f286dc794f1f541ffcf1536eeecc  libstdc++-v3/testsuite/experimental/propagate_const/swap/1.cc
  f622008c5ec7680a2ac920136d22446f  libstdc++-v3/testsuite/experimental/propagate_const/swap/lwg3413.cc
! e155a009b2335cbb1d5dbec61a48178f  libstdc++-v3/testsuite/experimental/propagate_const/typedefs.cc
! 604640f7d96bea98e0ab1fb0b28aa71e  libstdc++-v3/testsuite/experimental/random/randint.cc
! 56e02397ebefff69c8ba22a52ab0ab37  libstdc++-v3/testsuite/experimental/ratio/value.cc
! 97b562b4ea6fc1f0be023106d56bcc79  libstdc++-v3/testsuite/experimental/scopeguard/exit.cc
! 97af52a589fe5083b653ed57d72e004b  libstdc++-v3/testsuite/experimental/scopeguard/uniqueres.cc
! a63e3ed06f23d2ca257b8e6528aaebc3  libstdc++-v3/testsuite/experimental/set/erasure.cc
! d6f0083479e5097ec27151965ff89e5d  libstdc++-v3/testsuite/experimental/simd/README.md
  2c666451450a60415a52ed94723ea1a6  libstdc++-v3/testsuite/experimental/simd/driver.sh
! 2653d8586849bef6493c2e5b408777ae  libstdc++-v3/testsuite/experimental/simd/generate_makefile.sh
! 0b0eeba3af6dbb041b7ca3773f781cda  libstdc++-v3/testsuite/experimental/simd/standard_abi_usable.cc
! 3718cfdb2ca6d6f1e0fb585a7350e074  libstdc++-v3/testsuite/experimental/simd/standard_abi_usable_2.cc
! 5e5d595bd073d01ac2c22da1f7fe3ccb  libstdc++-v3/testsuite/experimental/simd/tests/abs.cc
! 4e0afa62c78befd1071bdf8b7226a7d3  libstdc++-v3/testsuite/experimental/simd/tests/algorithms.cc
! 6488adb1bbcc967e5fea5fd30006a297  libstdc++-v3/testsuite/experimental/simd/tests/bits/conversions.h
! 7c51301313efec39cf1c90e9c0d97ca0  libstdc++-v3/testsuite/experimental/simd/tests/bits/main.h
! 8691ea5fc0d2ff1f5f934f0558e590b1  libstdc++-v3/testsuite/experimental/simd/tests/bits/make_vec.h
! 69d6d68ffc02fae4c0a9deaba122d74f  libstdc++-v3/testsuite/experimental/simd/tests/bits/mathreference.h
! 045c0964f3d985284f5a96c0a3664c4d  libstdc++-v3/testsuite/experimental/simd/tests/bits/metahelpers.h
! 5f8e6dadde711efd66691ecb3b79aa09  libstdc++-v3/testsuite/experimental/simd/tests/bits/simd_view.h
! 2faafc75ac2aa206ede06b910640d315  libstdc++-v3/testsuite/experimental/simd/tests/bits/test_values.h
! 38f3c8d8c0e22e845747869fc0905e6e  libstdc++-v3/testsuite/experimental/simd/tests/bits/ulp.h
! 9fe72ba9408476a0c7998b0610c974d5  libstdc++-v3/testsuite/experimental/simd/tests/bits/verify.h
! 5b1a0e706e38a1299047ba7db61cbcb5  libstdc++-v3/testsuite/experimental/simd/tests/broadcast.cc
! 2e0686ab4047544484a1ce14a60eaa06  libstdc++-v3/testsuite/experimental/simd/tests/casts.cc
! fe33831403de37097a3b74ce2c9665dd  libstdc++-v3/testsuite/experimental/simd/tests/fpclassify.cc
! dffa590b06e8975dc5f43b7a2f31dc90  libstdc++-v3/testsuite/experimental/simd/tests/frexp.cc
! 090aeb2c99147a01a14ea9993c7ff54e  libstdc++-v3/testsuite/experimental/simd/tests/generator.cc
! 6f48d598891cbfa39af416612e384d81  libstdc++-v3/testsuite/experimental/simd/tests/hypot3_fma.cc
! ab7b33e899878d19f421166beecbf238  libstdc++-v3/testsuite/experimental/simd/tests/integer_operators.cc
! dc77cfd7b5f73eae0705eb2cf696f4c7  libstdc++-v3/testsuite/experimental/simd/tests/ldexp_scalbn_scalbln_modf.cc
! 27da12013f659c66cb7893b99c3d821c  libstdc++-v3/testsuite/experimental/simd/tests/loadstore.cc
! 6b013dcd9de5c623201e900b71abef8e  libstdc++-v3/testsuite/experimental/simd/tests/logarithm.cc
! b022debb6f0ae2626693f6b18ba9ac0a  libstdc++-v3/testsuite/experimental/simd/tests/mask_broadcast.cc
! eb19809be6764e4d1ce9d9e0ec92920c  libstdc++-v3/testsuite/experimental/simd/tests/mask_conversions.cc
! cc22fd2ebe4c0c3b057e7c60c6c7b2cf  libstdc++-v3/testsuite/experimental/simd/tests/mask_implicit_cvt.cc
! cdb8a8c748d23e33538cec15fca431cf  libstdc++-v3/testsuite/experimental/simd/tests/mask_loadstore.cc
! dde99dce982783fb743b7acfbcf859e5  libstdc++-v3/testsuite/experimental/simd/tests/mask_operator_cvt.cc
! 134151f225a98f654375b3749e61e0f2  libstdc++-v3/testsuite/experimental/simd/tests/mask_operators.cc
! 04c5a5772607a1622262acfa1d17942d  libstdc++-v3/testsuite/experimental/simd/tests/mask_reductions.cc
! 799cbcef977349282bd77f3673058c6f  libstdc++-v3/testsuite/experimental/simd/tests/math_1arg.cc
! 1fb08ff0420b0df375290804f7ad863d  libstdc++-v3/testsuite/experimental/simd/tests/math_2arg.cc
! ec2f4e1fcc2d921faca85038cebbe916  libstdc++-v3/testsuite/experimental/simd/tests/operator_cvt.cc
! 7bd9a6cad39c196f72527df8643b33dd  libstdc++-v3/testsuite/experimental/simd/tests/operators.cc
! 8dd4b34adaad4e669108711605b12863  libstdc++-v3/testsuite/experimental/simd/tests/reductions.cc
! db3a1e78df9d85ae5926f026ab126f42  libstdc++-v3/testsuite/experimental/simd/tests/remqo.cc
! 9fe2e068c2dc933389fab452e63e86ad  libstdc++-v3/testsuite/experimental/simd/tests/simd.cc
! 706e2e00fc885ad2560c3139029dec1a  libstdc++-v3/testsuite/experimental/simd/tests/sincos.cc
! 04f4dbbf414e688b229fff70a1850f17  libstdc++-v3/testsuite/experimental/simd/tests/split_concat.cc
! 2e2e1916c3c0e15dcc35afe4af9d535d  libstdc++-v3/testsuite/experimental/simd/tests/splits.cc
! 4a08c68edeea55e4ada85fc22f816db7  libstdc++-v3/testsuite/experimental/simd/tests/trigonometric.cc
! 0acd904c5b2a77febdcbda0e7bfe39c7  libstdc++-v3/testsuite/experimental/simd/tests/trunc_ceil_floor.cc
! 01d11dad77fb06b8f2fcb49fd5af0751  libstdc++-v3/testsuite/experimental/simd/tests/where.cc
! 092a43ef25590042c4bb384958ceb1d1  libstdc++-v3/testsuite/experimental/source_location/1.cc
! 95f4f79a722a76ed0159d2b86ad6a3c0  libstdc++-v3/testsuite/experimental/string/erasure.cc
! b1cf0b61561e1e96038a91c0bd330c7e  libstdc++-v3/testsuite/experimental/string_view/capacity/1.cc
! 046914b8b5764c34d6edcd6d727bf07d  libstdc++-v3/testsuite/experimental/string_view/cons/char/1.cc
! 920b0c1d4b9aeb84ec64cf8c671aa0ff  libstdc++-v3/testsuite/experimental/string_view/cons/char/2.cc
! be6f4adb70eee6199203f4dd650fa0d2  libstdc++-v3/testsuite/experimental/string_view/cons/char/3.cc
! a70c6a96dd90c3cc441aba00207c16c5  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/1.cc
! f7e6a9b0ce48b9f5aa70974ffb2c0799  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/2.cc
! 61680d0751aae4fa66a62c4c1964478e  libstdc++-v3/testsuite/experimental/string_view/cons/wchar_t/3.cc
! a0a8ad2e8a69d113af5fbefd024b280f  libstdc++-v3/testsuite/experimental/string_view/element_access/char/1.cc
! 80be15d9d4a330b7233498ad76d2b85d  libstdc++-v3/testsuite/experimental/string_view/element_access/char/2.cc
! e82fe8f3b37c1590d0c51f057d386755  libstdc++-v3/testsuite/experimental/string_view/element_access/char/empty.cc
! 6ed88e45453801ecf6e266fd09581364  libstdc++-v3/testsuite/experimental/string_view/element_access/char/front_back.cc
! 526d6819af6b861551183b2cca0ec481  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/1.cc
! 354a6d38b426bb506e313ca0c8900ecc  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/2.cc
! f2386d305a839f9bf20cf7d5dadee0e2  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/empty.cc
! fa5b0139d02431072cb92414af4ad7a9  libstdc++-v3/testsuite/experimental/string_view/element_access/wchar_t/front_back.cc
! ebdeae822715efcbd75e8748899657bb  libstdc++-v3/testsuite/experimental/string_view/include.cc
! 3ac78dfe90431649bfaf3da191a81d35  libstdc++-v3/testsuite/experimental/string_view/inserters/char/1.cc
! c377f73f5fc6a9b399cbfe665a866abf  libstdc++-v3/testsuite/experimental/string_view/inserters/char/2.cc
! 5289403e4c84f9471aeacce929e3ae1b  libstdc++-v3/testsuite/experimental/string_view/inserters/char/3.cc
! 6b25dbd911e56a9a02d765890cd93961  libstdc++-v3/testsuite/experimental/string_view/inserters/pod/10081-out.cc
! f7719fea132f5a8a4554d5542cb2da4b  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/1.cc
! b05ba5892bfe19085b1ac44ea959264e  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/2.cc
! c3039cc9b211b1f5c123329e644aec08  libstdc++-v3/testsuite/experimental/string_view/inserters/wchar_t/3.cc
! a4ebbebe165f841514dcd73330a5bc31  libstdc++-v3/testsuite/experimental/string_view/literals/types-char8_t.cc
! 3eb6e683285437458cf74f36bba2fe75  libstdc++-v3/testsuite/experimental/string_view/literals/types.cc
! c30da2523ca73fc68b4ec3fde819df81  libstdc++-v3/testsuite/experimental/string_view/literals/values-char8_t.cc
! 8cc30f34d8bfc3deb9a6f0b58bc9dcbb  libstdc++-v3/testsuite/experimental/string_view/literals/values.cc
! ee410221ed995add86cb06ba8dd3cade  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/char/1.cc
! 65710efa94373ed6ff36274b8b7f05b4  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_prefix/wchar_t/1.cc
! 15996bd978eaeb24d1883f99bf16f16d  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/char/1.cc
! aaebc4021177ed8513c5640297494850  libstdc++-v3/testsuite/experimental/string_view/modifiers/remove_suffix/wchar_t/1.cc
! bcef78581c01394a1806a57a2e2899cc  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/1.cc
! 6ff8326cadd4d7a61b80857ed5cddaa8  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/13650.cc
! dbdcae9075e004336da4aae3c894d684  libstdc++-v3/testsuite/experimental/string_view/operations/compare/char/70483.cc
! 04985f70d63647deaee385ce137fdf32  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/1.cc
! 711e74b813c61933df32a157477a6746  libstdc++-v3/testsuite/experimental/string_view/operations/compare/wchar_t/13650.cc
! 64e7c8cc3297f1bc21169bb41c7a151b  libstdc++-v3/testsuite/experimental/string_view/operations/copy/char/1.cc
! 1e10e56609f315653c0a724fb1cc4bce  libstdc++-v3/testsuite/experimental/string_view/operations/copy/wchar_t/1.cc
  672cb4f94c8a852e6bdb846e926365f9  libstdc++-v3/testsuite/experimental/string_view/operations/data/char/1.cc
  3500b68ff8c9b68295a6f4a0a348e9d8  libstdc++-v3/testsuite/experimental/string_view/operations/data/wchar_t/1.cc
! 1487700164c0fb52a99116229f826612  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/1.cc
! 1e37a58d3abbc8b31de9fbf441cd1f9f  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/2.cc
! 0f5eaac232c709a65b53878a49da282b  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/3.cc
! c02aecdab8f46660b6a7197df7377165  libstdc++-v3/testsuite/experimental/string_view/operations/find/char/4.cc
! ea2bfe3079d6388c44fe4cd6bbb86de1  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/1.cc
! ce82050f8b4cd5c977a3a6dced066f7b  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/2.cc
! f85cfe617dd314a381b5b3184aa2bce9  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/3.cc
! 282b25715e55645d740ac8b9560dfc86  libstdc++-v3/testsuite/experimental/string_view/operations/find/wchar_t/4.cc
! d42e319b75b0d7b9fdb2af97db3ccddb  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/1.cc
! ba07fa94e4c428c560c53dcc88d5b20a  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/2.cc
! 8488167892d04812204dcb264684d7d7  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/char/3.cc
! ea5e39f0b788b3598b5328728edf90f3  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/1.cc
! c459cdf89d33ac04e8b69e2b27929a94  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/2.cc
! 3ee997048ad3fd8f15c8093470b88534  libstdc++-v3/testsuite/experimental/string_view/operations/rfind/wchar_t/3.cc
! b93f6cb53dbe756e6e6cfc8ba96de4c8  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/1.cc
! 22e0ff2f00e3bbda1c46e7341b300438  libstdc++-v3/testsuite/experimental/string_view/operations/substr/char/83511.cc
! 76a910a854d935e5bc967d1a1424c862  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/1.cc
! fa747df13c227e12411779440955ae96  libstdc++-v3/testsuite/experimental/string_view/operations/substr/wchar_t/83511.cc
! 3eb3d6bdac1de5f9508243431702c6d7  libstdc++-v3/testsuite/experimental/string_view/operations/to_string/1.cc
! 529fdb3bbae7364a9cf00454865e6f10  libstdc++-v3/testsuite/experimental/string_view/operators/char/2.cc
! 23ea44baada5dd01cc262ba53b4f72d6  libstdc++-v3/testsuite/experimental/string_view/operators/wchar_t/2.cc
! 587f64c1e6a3b94a7b982d750cfccb21  libstdc++-v3/testsuite/experimental/string_view/range_access/char/1.cc
! 6549be9fedc662368da2ca05a3b50537  libstdc++-v3/testsuite/experimental/string_view/range_access/wchar_t/1.cc
! 59b6a2633c1ea21fba26dc8300749fe8  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/1.cc
! 9e6a04a677e98a8532773f175ae991bd  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char/1.cc
! 0a431931d83b78cfef29aa582cd5f138  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char16_t/1.cc
! 785ac87f0f6ccf07478c7e071b4eae87  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char32_t/1.cc
! cdf80773d5ce562f867139996fd11eb1  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/char8_t/1.cc
! d69f487e5e17118bab84b664d2c7c6fe  libstdc++-v3/testsuite/experimental/string_view/requirements/explicit_instantiation/wchar_t/1.cc
! b0a482cadf3bf01496b6bba83fd170a8  libstdc++-v3/testsuite/experimental/string_view/requirements/typedefs.cc
! 21787928a55c066cd9f2ecc50dbb0db7  libstdc++-v3/testsuite/experimental/string_view/typedefs.cc
! 206408e88c6d60f7c1f7964fd2dca895  libstdc++-v3/testsuite/experimental/string_view/types/1.cc
! b89c4bdefa0bf886e09684838214bb81  libstdc++-v3/testsuite/experimental/synchronized_value.cc
! e60190126c74d5ba55ff713c865abf87  libstdc++-v3/testsuite/experimental/system_error/value.cc
! c2fffbeb57664d2e1f01bda5a2994663  libstdc++-v3/testsuite/experimental/tuple/apply.cc
! 190ccf8d418f66af02265b61b9c7fa8f  libstdc++-v3/testsuite/experimental/tuple/tuple_size.cc
! 92c17a6f1bdf23dff5451ea1e1859fb3  libstdc++-v3/testsuite/experimental/type_erased_allocator/2.cc
! 264615baf4d8a292f378374c441b93bc  libstdc++-v3/testsuite/experimental/type_erased_allocator/uses_allocator.cc
! 1c5b0cf140895dfd1035ba1df403b0f7  libstdc++-v3/testsuite/experimental/type_traits/detection.cc
! 6be2f71ba175709d12034c58a8adbd73  libstdc++-v3/testsuite/experimental/type_traits/nonesuch.cc
! 1bbd687ac0bc32884ef78666ec1e6de8  libstdc++-v3/testsuite/experimental/type_traits/value.cc
! ac8deac2e95f3487688cdca323967544  libstdc++-v3/testsuite/experimental/unordered_map/erasure.cc
! 12ab3728c7054394764fe34a87d48655  libstdc++-v3/testsuite/experimental/unordered_set/erasure.cc
! 90bebec8264814179b24e83d7a2ba800  libstdc++-v3/testsuite/experimental/vector/erasure.cc
! 13c8adb8595b8fa60ca0edb8c78dffef  libstdc++-v3/testsuite/ext/bitmap_allocator/check_allocate_max_size.cc
! f48bf2de1921d03c3db5868c6cae9024  libstdc++-v3/testsuite/ext/bitmap_allocator/check_deallocate_null.cc
! 4ec6d50ccf2e1eaab5ee483209efbcb1  libstdc++-v3/testsuite/ext/bitmap_allocator/check_delete.cc
! 777f334ed9e63c3d4f527f0f2369dde0  libstdc++-v3/testsuite/ext/bitmap_allocator/check_new.cc
! 94f7407e42db81e385e01ef262d469b9  libstdc++-v3/testsuite/ext/bitmap_allocator/overaligned.cc
! 1e00161c7108a027d6d8b10268aca38b  libstdc++-v3/testsuite/ext/bitmap_allocator/variadic_construct.cc
  846dc8224edb857bb6953efa8b4cdb2d  libstdc++-v3/testsuite/ext/char8_t/atomic-1.cc
! 2ad55534952d6c0f2b0f3121ca3572c6  libstdc++-v3/testsuite/ext/codecvt/1.cc
! 7ee8f4df2f0599f057eaebeb5ac6256e  libstdc++-v3/testsuite/ext/codecvt/char-1.cc
! 1be266c176b34b7d53b68cf1feed3bcc  libstdc++-v3/testsuite/ext/codecvt/char-2.cc
! 8569af866a1a86439e146a18759d5a60  libstdc++-v3/testsuite/ext/codecvt/wchar_t.cc
! 8aa4b439537a3559127b224460910a3c  libstdc++-v3/testsuite/ext/concept_checks.cc
! fec387d9ae6a26680ae39b2f49530080  libstdc++-v3/testsuite/ext/concurrence_lock_error/cons_virtual_derivation.cc
! 9a3879980289f28d2bb77d9ff6974bd2  libstdc++-v3/testsuite/ext/concurrence_unlock_error/cons_virtual_derivation.cc
! 3801a5670257eeade743b4c1a5175613  libstdc++-v3/testsuite/ext/debug_allocator/56170.cc
! 11890b398ee08dda413e078a62a225fa  libstdc++-v3/testsuite/ext/debug_allocator/check_deallocate_null.cc
! cc939ed525297c7b294de68b2abcabc8  libstdc++-v3/testsuite/ext/debug_allocator/check_delete.cc
! f510868642e96d6606e324673b52a908  libstdc++-v3/testsuite/ext/debug_allocator/check_new.cc
! 7b11f9c06149d50328aa50e34d439d71  libstdc++-v3/testsuite/ext/debug_allocator/eq.cc
! 65d384c33c9c9ca30e155fde868b8221  libstdc++-v3/testsuite/ext/debug_allocator/explicit_instantiation.cc
! 17f96199ff0ed995b6e1153ec929fd8b  libstdc++-v3/testsuite/ext/enc_filebuf/char/13189.cc
! a4059f7446104c4d156fcb534e8434bd  libstdc++-v3/testsuite/ext/enc_filebuf/char/13598.cc
! 545ff0feed6552368e3b838ec43c3ef5  libstdc++-v3/testsuite/ext/enc_filebuf/wchar_t/13189.cc
! 31e50b8f1131f377cc2c78fd614235b0  libstdc++-v3/testsuite/ext/ext_pointer/1.cc
! 114d94ed1178cc3db153adbfa3481a03  libstdc++-v3/testsuite/ext/ext_pointer/1_neg.cc
! 6f90fe2c49d68f62c993adc794e53428  libstdc++-v3/testsuite/ext/ext_pointer/alloc_eq.cc
! 9f47c1fb33a8cc8b170f41bcabb7ad88  libstdc++-v3/testsuite/ext/forced_error/cons_virtual_derivation.cc
! b59caba3274de1a6fcbd3b3a474552eb  libstdc++-v3/testsuite/ext/headers.cc
! 8756f104966b52508184f669e35e33ee  libstdc++-v3/testsuite/ext/iota/cxx0x.cc
! 6efdf09d9c281e4f51fb08a7e590e6ce  libstdc++-v3/testsuite/ext/is_heap/1.cc
! bfdfedb2a607cd8e0656f0f8bd655895  libstdc++-v3/testsuite/ext/is_heap/47709.cc
! 1ff45ca1492405c30c99e8bce3f50a85  libstdc++-v3/testsuite/ext/is_heap/check_type.cc
! 7fee6a7ece7dfd2fbc8f5c75179da5d8  libstdc++-v3/testsuite/ext/is_sorted/cxx0x.cc
! 924ea5c02de07fd32ccaf1faf0349bb1  libstdc++-v3/testsuite/ext/malloc_allocator/89510.cc
! fbe8b91dc45fd74f173523a836664111  libstdc++-v3/testsuite/ext/malloc_allocator/check_allocate_max_size.cc
! 3d375aa3d6511c03ac144178a985c320  libstdc++-v3/testsuite/ext/malloc_allocator/check_deallocate_null.cc
! d4e980107949c790765cba7cc66f5caa  libstdc++-v3/testsuite/ext/malloc_allocator/check_delete.cc
! d86325bec182b3de5dd122f90d50d765  libstdc++-v3/testsuite/ext/malloc_allocator/check_new.cc
! 18f4df9d41618701887578ce55455b43  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_global.cc
! f886a4229830ceb424844f62f10a9b2a  libstdc++-v3/testsuite/ext/malloc_allocator/deallocate_local.cc
! 365634adbc1d60f6b47268a300dea21b  libstdc++-v3/testsuite/ext/malloc_allocator/eq.cc
! 157bbb6410291b5819d989558b231413  libstdc++-v3/testsuite/ext/malloc_allocator/explicit_instantiation.cc
! 62e0c238c7e179d4a7d2dfdeccfee833  libstdc++-v3/testsuite/ext/malloc_allocator/overaligned.cc
! cad08676e74f3ff508ae109a2d62c25b  libstdc++-v3/testsuite/ext/malloc_allocator/sanity.cc
! e35ade510e4132ef8aa03cec5ef5c2af  libstdc++-v3/testsuite/ext/malloc_allocator/variadic_construct.cc
! 097c4ad109f397c54c8e9a2efb3dc6b3  libstdc++-v3/testsuite/ext/median.cc
! e56578b83796065d1ac79ba6ddbd092b  libstdc++-v3/testsuite/ext/mt_allocator/22309_thread.cc
! e6ba12751f3f64d54383ea5ab240d79f  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_big_per_type.cc
! ce2a9a6735d751851ec19ab2d93e6d34  libstdc++-v3/testsuite/ext/mt_allocator/check_allocate_max_size.cc
! 9026375a2398e660c283c059331d73ac  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null.cc
! 7135f41e98d0e387c434be6a8934ddb4  libstdc++-v3/testsuite/ext/mt_allocator/check_deallocate_null_thread.cc
! 09fb39bccd599395c381b3271513de87  libstdc++-v3/testsuite/ext/mt_allocator/check_delete.cc
! 362caad05f3e13230310a2781f77f1d6  libstdc++-v3/testsuite/ext/mt_allocator/check_new.cc
! f810f93d194205fa257f01dba82e0f9a  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-2.cc
! cb1432e7359b68a8ad2830dd97b6e68e  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global-4.cc
! bcc60ef3a30cd78789f44186f585614c  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-1.cc
! 981ee9e63e600c4beb24059d626824f7  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_global_thread-3.cc
! 05836fcb46a07d87ac05f2c0e2bafef5  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-2.cc
! 822b986dae4affe6186bf91dec799648  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-4.cc
! 777e3c39ec85afb1772ce9a37ffced97  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-6.cc
! 682899ed593ae2358edc3a49103c703b  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local-8.cc
! 2369e2618b621e7a5602730d0b72dbb5  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-1.cc
! 4721be44f48a6654a85d829c507e88cc  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-3.cc
! cd3c34945bf15ace9e68a3aef3dc1c59  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-5.cc
! b3bfcb31c8e83f6bae2bd61c6826188d  libstdc++-v3/testsuite/ext/mt_allocator/deallocate_local_thread-7.cc
! baf3561c81b2801ba4ed790f35c4d1f0  libstdc++-v3/testsuite/ext/mt_allocator/explicit_instantiation.cc
! 5d23db230306b856a07e5317ead68c02  libstdc++-v3/testsuite/ext/mt_allocator/overaligned.cc
! f019992d4ceb038187186b72fd7d1610  libstdc++-v3/testsuite/ext/mt_allocator/tune-1.cc
! 0d61a51f3f958dffc101712b04b76b47  libstdc++-v3/testsuite/ext/mt_allocator/tune-2.cc
! 7b7cb6009b413127c8be4a9bb92d03fa  libstdc++-v3/testsuite/ext/mt_allocator/tune-3.cc
! 9196d6a4a76218cad39f9d49f5765e77  libstdc++-v3/testsuite/ext/mt_allocator/tune-4.cc
! 88dc29bab8ed2798adf69a4cfca76665  libstdc++-v3/testsuite/ext/mt_allocator/variadic_construct.cc
! e4ff219a5123dcc2dd8bc3befc23bb54  libstdc++-v3/testsuite/ext/new_allocator/89510.cc
! ab3b4460a4e41c56f197c8144daf4f23  libstdc++-v3/testsuite/ext/new_allocator/check_allocate_max_size.cc
! 624774935de29968291f9a3aba6d30b1  libstdc++-v3/testsuite/ext/new_allocator/check_deallocate_null.cc
! aae02e06a575372197e6c062ccd63c12  libstdc++-v3/testsuite/ext/new_allocator/check_delete.cc
! d9e2f676d53b6206c8ec49e31769762b  libstdc++-v3/testsuite/ext/new_allocator/check_new.cc
! 587e6e70b83b8fe5c91c0effe4884de9  libstdc++-v3/testsuite/ext/new_allocator/deallocate_global.cc
! 23c829f7c509d25281b099da04e0ad48  libstdc++-v3/testsuite/ext/new_allocator/deallocate_local.cc
! 63963c7894e58c6c68b9551db019f0be  libstdc++-v3/testsuite/ext/new_allocator/eq.cc
! 2fb68e5db92f5717909717f4325c6f1a  libstdc++-v3/testsuite/ext/new_allocator/instantiate.cc
! edb462ec4e549dedd05ce181f2d0a080  libstdc++-v3/testsuite/ext/new_allocator/overaligned.cc
! 8bd3d44be0ce2330fd1569a70dcb9e21  libstdc++-v3/testsuite/ext/new_allocator/variadic_construct.cc
! 4bd84b4ba5546d6f7672b7e081f67cfe  libstdc++-v3/testsuite/ext/numeric_traits/numeric_traits.cc
! 2660d253053c7806df3905b3a3ebaef5  libstdc++-v3/testsuite/ext/pb_ds/example/assoc_container_traits.cc
! deabc6e67e07e3e27a5521fd3249dfc3  libstdc++-v3/testsuite/ext/pb_ds/example/basic_map.cc
! 58a85f9491c78fa6e635fcfbcf667666  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multimap.cc
! 8740cfe3b81c4dbd284fc898ed1318cd  libstdc++-v3/testsuite/ext/pb_ds/example/basic_multiset.cc
! 9129f04e9bc2755c054072b111eabd24  libstdc++-v3/testsuite/ext/pb_ds/example/basic_priority_queue.cc
! 2aaf3c53ee3ffd9047980df84daa34fe  libstdc++-v3/testsuite/ext/pb_ds/example/basic_set.cc
! 835584fcda4d477b4892eb5a056a01fc  libstdc++-v3/testsuite/ext/pb_ds/example/erase_if.cc
! 8ad436a1f5199c303faef4aaf84b21ea  libstdc++-v3/testsuite/ext/pb_ds/example/hash_find_neg.cc
! f9d3dde735bb5c7da9d3ec47ca72df10  libstdc++-v3/testsuite/ext/pb_ds/example/hash_illegal_resize.cc
! 0755bb346752f48dc5d362f211957351  libstdc++-v3/testsuite/ext/pb_ds/example/hash_initial_size.cc
! 2ffd71769724c02260d2176e0dd6dbb4  libstdc++-v3/testsuite/ext/pb_ds/example/hash_load_set_change.cc
! 2cf595548fff4f1bc487c4b5961c8186  libstdc++-v3/testsuite/ext/pb_ds/example/hash_mod.cc
! 590ef1208e48b736fe69e1bc35dfba5a  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize.cc
! 2453a753dae026fee65c3f618ba30df5  libstdc++-v3/testsuite/ext/pb_ds/example/hash_resize_neg.cc
! f9d6725233c9f39e79125e651152bac1  libstdc++-v3/testsuite/ext/pb_ds/example/hash_shift_mask.cc
! 5b4492796b4f5427ab93ca90dc5127af  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_container_traits.cc
! 4b01d5eda555c6fe7101d5b16a2fd542  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_dijkstra.cc
! aa6126371f002647b0bc9523b1f0d6e4  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_erase_if.cc
! 9a6e815e44fef79ae61b6fa962ef6c51  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_split_join.cc
! acf7ec0b85c8cf9e32b897a5c943ebc3  libstdc++-v3/testsuite/ext/pb_ds/example/priority_queue_xref.cc
! 1b45b9d0caa6d9cf3e7e04e3f1645187  libstdc++-v3/testsuite/ext/pb_ds/example/ranged_hash.cc
! ffc51f49d186662ebbd4cd7f79f42d83  libstdc++-v3/testsuite/ext/pb_ds/example/store_hash.cc
! 6c97588a92144c29734187b807ce9d40  libstdc++-v3/testsuite/ext/pb_ds/example/tree_intervals.cc
! 71a705eb08e0c767325ab4d4bcd4998e  libstdc++-v3/testsuite/ext/pb_ds/example/tree_join.cc
! 8f89642cbf0b78166cc7aeab67fd1bac  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics.cc
! 87def898d16fd6d595f16704912f241e  libstdc++-v3/testsuite/ext/pb_ds/example/tree_order_statistics_join.cc
! ade27c3766b60c1f15be386e9bfaecd2  libstdc++-v3/testsuite/ext/pb_ds/example/trie_dna.cc
! 35d5bc5b89219d08738715df0cb897c1  libstdc++-v3/testsuite/ext/pb_ds/example/trie_prefix_search.cc
! d5d572b119346433722966110611dace  libstdc++-v3/testsuite/ext/pb_ds/example/trie_split.cc
! fa89892f72ad233f61c7070191500644  libstdc++-v3/testsuite/ext/pb_ds/regression/associative_containers.cc
! 6a8089825f8a7313368a9a3421791695  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand.cc
! b73173ffc1d8450e524ee9b53bc668e5  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_map_rand_debug.cc
! bbc22f35ccb3d253ca3e3e595ec86c1e  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand.cc
! 2e4f13b9f2281624bb8013ebcd2b532e  libstdc++-v3/testsuite/ext/pb_ds/regression/hash_set_rand_debug.cc
! 4edec61aaefacc954ea996ecbfe5be6e  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand.cc
! e3ae7092c96780e6c872aee6254ff8f8  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_map_rand_debug.cc
! 55e0bbb239333d557a459de471d518b8  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand.cc
! 53c312f7cb923b628a2fbcd81f6dea3e  libstdc++-v3/testsuite/ext/pb_ds/regression/list_update_set_rand_debug.cc
! fee29f8af90ed6d12a8201adf8bf6a17  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_binary_heap-62045.cc
! 17c3b58f7d2bd466b9fe8c20a3e1abd8  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand.cc
! c1364935601af63025765874b3ff52c2  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queue_rand_debug.cc
! c2b79a5c3a316cdc7e1bbd856207fdec  libstdc++-v3/testsuite/ext/pb_ds/regression/priority_queues.cc
! 358fbe3afc938cfd67436aae30f9d10e  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand.cc
! 353863309678cccf073c4ecd023ac1aa  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_map_rand_debug.cc
! 67d5430b23d2539f77415f3589a63057  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand.cc
! 152758b41e002559b4aa9ebce83a777e  libstdc++-v3/testsuite/ext/pb_ds/regression/tree_set_rand_debug.cc
! 89be9989444580c34ed60cc1203b6a4c  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand.cc
! 90a618300ea5ee692110c4f621444f66  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_map_rand_debug.cc
! 695b30a8244fedbff29747acbf920a04  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand.cc
! 93a1cb7b13344694f6e23bb921ca3554  libstdc++-v3/testsuite/ext/pb_ds/regression/trie_set_rand_debug.cc
! 122a3dd315280031779f76579c0e38aa  libstdc++-v3/testsuite/ext/pod_char_traits.cc
! 5da9166ac86a48f2da612c9876cbcc19  libstdc++-v3/testsuite/ext/pool_allocator/allocate_chunk.cc
! f5b0d5d12af0377d2a5c67dfc5f15add  libstdc++-v3/testsuite/ext/pool_allocator/check_allocate_max_size.cc
! 45d3dec10530afb59ea03ad3a8556c6d  libstdc++-v3/testsuite/ext/pool_allocator/check_deallocate_null.cc
! 27ced25418f1859b14ed70dee7120d37  libstdc++-v3/testsuite/ext/pool_allocator/check_delete.cc
! 31e32b10fe5d4843747abc227fe79044  libstdc++-v3/testsuite/ext/pool_allocator/check_new.cc
! e1063b711daf27d58fccd587da43c348  libstdc++-v3/testsuite/ext/pool_allocator/explicit_instantiation.cc
! b8d08b4c8bb1daeeb9c7c47b690d8d90  libstdc++-v3/testsuite/ext/pool_allocator/overaligned.cc
! 03c733f789290b7de69439d2a20aaeb9  libstdc++-v3/testsuite/ext/pool_allocator/variadic_construct.cc
! 9785a16e818f0b724932010d0f0d8d36  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/default.cc
! 1e1423f759e80dc2a000b14c8ec323f7  libstdc++-v3/testsuite/ext/random/arcsine_distribution/cons/parms.cc
! 0f68443f201a1669594a97be922f39f2  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/equal.cc
! d65986e1f42a6e99cb76d0ebd5d32f4b  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/inequal.cc
! 62321b49ad751b710544c5b82e12d338  libstdc++-v3/testsuite/ext/random/arcsine_distribution/operators/serialize.cc
! 7c5385614df50f9ed6ef55b07efa2d7c  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/explicit_instantiation/1.cc
! f4134576ab2a6dd4e52066cc6259437d  libstdc++-v3/testsuite/ext/random/arcsine_distribution/requirements/typedefs.cc
! a83368cc551b142d15563a3346b3ae09  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/default.cc
! b1ff3499a1650f600f133e999c1ea646  libstdc++-v3/testsuite/ext/random/beta_distribution/cons/parms.cc
! cd889830e1296213e346eaf4d6904f07  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/equal.cc
! 36a88f59fb04dd8e7b0022402e961303  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/inequal.cc
! 4f23dfd4ce7876ec2bf3028b1ee0e13d  libstdc++-v3/testsuite/ext/random/beta_distribution/operators/serialize.cc
! a50eec5667a699344bbd9ac73808ade8  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/explicit_instantiation/1.cc
! 36b1a8f0e9e429927d497764eefdc99f  libstdc++-v3/testsuite/ext/random/beta_distribution/requirements/typedefs.cc
! 664ffb2d3b957b17640c9f3a57f88b83  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/default.cc
! 120e3ee1b01c539b0c982f163a61ed2c  libstdc++-v3/testsuite/ext/random/hoyt_distribution/cons/parms.cc
! e601f2785d7af65dc490aa9f6aef503c  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/equal.cc
! 6e05c66f99c3564757288cb7fb3245a3  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/inequal.cc
! 857f0ba6150045c367edc5cbb32a8eb0  libstdc++-v3/testsuite/ext/random/hoyt_distribution/operators/serialize.cc
! 8f5bb5b5f193ff88142686eba8a8b98f  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/explicit_instantiation/1.cc
! a39aec5f380ddeb80538b28b7fdc51fe  libstdc++-v3/testsuite/ext/random/hoyt_distribution/requirements/typedefs.cc
! b6bcb55b1d9ddd682f6f0d1523d05eb6  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/default.cc
! 2420d8619fba6b8fd6a3ffa76760fcf2  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/cons/parms.cc
! c28c1e96c54e8909e74b972a79f924a1  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/equal.cc
! 478dadadeb2c032755c891ebb6050906  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/inequal.cc
! ffd81476c503a7cff42502090ab42356  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/serialize.cc
! 51527f00b560b5a60c46fcbdb99a004e  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/operators/values.cc
  5310d63384a16aab3ca0056f2cb3b3dc  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/pr60037.cc
! 9ce8c550478ce3835d51315cfcf66a40  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/explicit_instantiation/1.cc
! 3a5b62bc5e36871892ade656a808de45  libstdc++-v3/testsuite/ext/random/hypergeometric_distribution/requirements/typedefs.cc
! 9f31ad98cc7bb2601bc0387cadb57ef9  libstdc++-v3/testsuite/ext/random/k_distribution/cons/default.cc
! 900e887e0806d402037e63d14f32dc11  libstdc++-v3/testsuite/ext/random/k_distribution/cons/parms.cc
! a9d7c949f1ef2751b8ec2b9c9a9d308d  libstdc++-v3/testsuite/ext/random/k_distribution/operators/equal.cc
! e793098a933c3ffeb2d8bafff90d2928  libstdc++-v3/testsuite/ext/random/k_distribution/operators/inequal.cc
! 4defc3a78763411506a78ff44d21e377  libstdc++-v3/testsuite/ext/random/k_distribution/operators/serialize.cc
! 422456acb442a2f1c3fb1382508632db  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/explicit_instantiation/1.cc
! 576d7f6445769e83351aa04d3019fe76  libstdc++-v3/testsuite/ext/random/k_distribution/requirements/typedefs.cc
! a12cfb76babaaf33bc48aa6341e22d21  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/default.cc
! 599fdbaa4fc0ccb638f10b474c810540  libstdc++-v3/testsuite/ext/random/logistic_distribution/cons/parms.cc
! e327c63b2ee24cacebd79d61d6d5154b  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/equal.cc
! 714b869d399555af5c7494a7ec49e2a6  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/inequal.cc
! 3d5d55ff0448bbb1d26fae26ceb72b5d  libstdc++-v3/testsuite/ext/random/logistic_distribution/operators/serialize.cc
! 501e7b231f12fac5996b3d2686fba248  libstdc++-v3/testsuite/ext/random/logistic_distribution/requirements/typedefs.cc
! aacbed82285863389707cf95221bc50a  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/default.cc
! ade7b3fa34d71d30a5364d1d58f9dec9  libstdc++-v3/testsuite/ext/random/nakagami_distribution/cons/parms.cc
! a3c3075df62c774c34d662eb3577c363  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/equal.cc
! 4c010c94b298a00fbecff45d55f3baa2  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/inequal.cc
! ed93c5fcf2bf0ec2b19d9f63ad9fa307  libstdc++-v3/testsuite/ext/random/nakagami_distribution/operators/serialize.cc
! 99b98cac1d9fe2d7d6df8cb49a7e07bd  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/explicit_instantiation/1.cc
! aca7a5695585f61614c6924f3a881efa  libstdc++-v3/testsuite/ext/random/nakagami_distribution/requirements/typedefs.cc
! d240e4ea2faecfce918152aae4888067  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/default.cc
! 90e4d75f77280435edb599a5b0ed8558  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/cons/parms.cc
! 629867c8ae3d3026fd5f7f4f9bddec38  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/equal.cc
! 9447af8ab17a8f0cd46211ee1fe35eaa  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/inequal.cc
! 3d4f28216ebb743fdb5ea8128a7d1e6d  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/operators/serialize.cc
! f37c022703f65e973edb3f13c5f2592d  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/explicit_instantiation/1.cc
! 857dfe6e7de1db0cabb976e84fd31275  libstdc++-v3/testsuite/ext/random/normal_mv_distribution/requirements/typedefs.cc
! b5e51145ea844b88e3d23a59a720eec0  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/default.cc
! c91b37053a1c36ec75113ae73bf60f4b  libstdc++-v3/testsuite/ext/random/pareto_distribution/cons/parms.cc
! ab73fe02584c340f7bfab932769c1646  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/equal.cc
! 5a435ecd1175b73b289d3455f6c80b55  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/inequal.cc
! 564351e10377bf130a2241083195dd89  libstdc++-v3/testsuite/ext/random/pareto_distribution/operators/serialize.cc
! fdd3cbddf94b67e44ddae108be75c8e2  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/explicit_instantiation/1.cc
! 66814d8a852c2dae3c08d6cb83e13625  libstdc++-v3/testsuite/ext/random/pareto_distribution/requirements/typedefs.cc
! e52b806948b64a668b9844aaf3fb7835  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/default.cc
! ceb4e66abfd88981177cdcfd9e3f3a8d  libstdc++-v3/testsuite/ext/random/rice_distribution/cons/parms.cc
! 5ad79bbf53746ea75fc94ada66f38214  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/equal.cc
! 450dd87849f5b462bbe4aa400c90dd20  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/inequal.cc
! 43e189c4ae9b91cd4fa3eca289265b9b  libstdc++-v3/testsuite/ext/random/rice_distribution/operators/serialize.cc
! 950ff87d1d1666639e4d0132a53433eb  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/explicit_instantiation/1.cc
! 8e481953ab7d16616b623b8432860b4e  libstdc++-v3/testsuite/ext/random/rice_distribution/requirements/typedefs.cc
! 9cc8dba105890da15f716635e195bf4e  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/copy.cc
! b048937efa646f36a39ec9dcf9154ccc  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/default.cc
! 262f911b99c24ceb21c3855e77a0ceae  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed1.cc
! b1699d8cf56ce53f08a1fa4a11a1ce60  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed2.cc
! 33b205701dc45dc126f7b832a9bd91cd  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq.cc
! 78c19769fd04e495de5db9d5b426987d  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/cons/seed_seq2.cc
! 2a0cb44eed2d1bf0fc38de21069c9afa  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/equal.cc
! cdc60bc62465bc62358b2ca984a1c7e5  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/inequal.cc
! a2af3d36ad78ede25967086ea7479593  libstdc++-v3/testsuite/ext/random/simd_fast_mersenne_twister_engine/operators/serialize.cc
! 6810541decec3990e3a13c320b997326  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/default.cc
! 505f7c4c402bf55a96eff506b072e6c3  libstdc++-v3/testsuite/ext/random/triangular_distribution/cons/parms.cc
! 03a198f1cda31bde5a290c3bab4d7ef5  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/equal.cc
! 2b114c2b071d71546a0674d9899f5c9c  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/inequal.cc
! b23a04c2548a95b77b067edea6fbd287  libstdc++-v3/testsuite/ext/random/triangular_distribution/operators/serialize.cc
! e821ba8780883c7204a4c8bf94ce4b25  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/explicit_instantiation/1.cc
! df4bfa6d9a1a66a1d23cc7e7a293de11  libstdc++-v3/testsuite/ext/random/triangular_distribution/requirements/typedefs.cc
! 1030cb79d985bde1dd6d65d5f9f114ae  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/default.cc
! 6a2f1cb47ea940dac26d22d829c25d12  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/cons/parms.cc
! 6dcf0bc186a1af926ce9c964fbb69734  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/equal.cc
! 2f7750b0cef5410cb9e8769de280ceae  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/generate.cc
! 234e67d968a8aaedb5eefc099b8f1d61  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/inequal.cc
! 0c2512637dfeda778da5a8381d42ba77  libstdc++-v3/testsuite/ext/random/uniform_inside_sphere_distribution/operators/serialize.cc
! b90e25bd9dc928cf5bb44637bbeb1bbd  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/cons/default.cc
! 14d9c2574cc097a6441032234b59cfd3  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/equal.cc
! d28a3c080f61ebd60120ad655b538ef4  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/generate.cc
! ade4dba125f79ae1cc6c1bdf1bb1f0f3  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/inequal.cc
! d51250fb5039241018fede693a539020  libstdc++-v3/testsuite/ext/random/uniform_on_sphere_distribution/operators/serialize.cc
! 2fa7aa249aebd47d5e42b0b499ce9fc8  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/default.cc
! c2072d72bd457fe52769b5c1cc3af84f  libstdc++-v3/testsuite/ext/random/von_mises_distribution/cons/parms.cc
! 7d8341f5cdf6c2d63281b23e272f9107  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/equal.cc
! c447a84e65391cc9ae71af0dec568a28  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/inequal.cc
! 97519846ec7571a3adaf9a1f850c7ac2  libstdc++-v3/testsuite/ext/random/von_mises_distribution/operators/serialize.cc
! e61ee31bb64f1e60c0080ec30bd6a17b  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/explicit_instantiation/1.cc
! 9facbe5f5050a74d42c86fbe8f70155a  libstdc++-v3/testsuite/ext/random/von_mises_distribution/requirements/typedefs.cc
! ac095289e422766359180ae5746bf5e6  libstdc++-v3/testsuite/ext/rope/1.cc
  4b4043d9b7ee0d0043f2c34bac5eae23  libstdc++-v3/testsuite/ext/rope/101542.cc
! ff48e7e04f8e3654ce9605a70c2ffb90  libstdc++-v3/testsuite/ext/rope/2.cc
! d08bdcabe502c7373ef1b569118d1dbe  libstdc++-v3/testsuite/ext/rope/3.cc
! 554f7fd75c4a0d76cfb3f02ac7a2dcd0  libstdc++-v3/testsuite/ext/rope/36832.cc
! 2c6b328776794263296f290581c26e32  libstdc++-v3/testsuite/ext/rope/4.cc
! 79f4147fe340d0e054a9e7331fe5652f  libstdc++-v3/testsuite/ext/rope/40299.cc
! 4f542b7939e3e5711575ebfdfcff9e9f  libstdc++-v3/testsuite/ext/rope/44708.cc
! 090824c784117742731007b1c0ef997e  libstdc++-v3/testsuite/ext/rope/44963.cc
! 1d08bf877d751a9592b4b4a77d20c484  libstdc++-v3/testsuite/ext/rope/5.cc
! 1751e1a12d2be892501cd8aff69fda23  libstdc++-v3/testsuite/ext/rope/6.cc
! 2b519c93084afe4159accba4e886137f  libstdc++-v3/testsuite/ext/rope/61946.cc
! 4a399bfda529a1f82719c3d5bb113c6a  libstdc++-v3/testsuite/ext/rope/7.cc
! 42f0979df3545a25f4d1ace478e0a88f  libstdc++-v3/testsuite/ext/rope/pthread7-rope.cc
! 999a8d37e6951f5f271d878ab2dee65a  libstdc++-v3/testsuite/ext/shared_ptr/1.cc
! be806ad049e921935cd200431eab3240  libstdc++-v3/testsuite/ext/slist/23781_neg.cc
! d2a7c985dd48d8f79e99414c69a2cea3  libstdc++-v3/testsuite/ext/slist/check_construct_destroy.cc
! 3dbb5be1efa9ab6143b7949056879926  libstdc++-v3/testsuite/ext/slist/requirements/explicit_instantiation.cc
! 694fbc074847a0d74af149283afdd9f0  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_nan.cc
! 666157d1346c2aaa3b71f0f4a07740b2  libstdc++-v3/testsuite/ext/special_functions/airy_ai/check_value.cc
! 3186aac0325bbab889a509718e4d12b5  libstdc++-v3/testsuite/ext/special_functions/airy_ai/compile.cc
! 7e9e56ad15728bd2b1c75952cf8f6400  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_nan.cc
! ee04b1d738c403d7f721fb95507cbb24  libstdc++-v3/testsuite/ext/special_functions/airy_bi/check_value.cc
! 158cd5f95389fa96d28e6aa446c46b73  libstdc++-v3/testsuite/ext/special_functions/airy_bi/compile.cc
! 9afc8612b67c06790a9d79a2b82d53c6  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_nan.cc
! 0fc6084b175df673e2290d39aa0b2e76  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/check_value.cc
! 77221b6e609bb1f987f143753566b909  libstdc++-v3/testsuite/ext/special_functions/conf_hyperg/compile.cc
! b15b2383f109d920726be4d973eedca7  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_nan.cc
! 68b39d5f7442d3a5f2c5334856fc4dfd  libstdc++-v3/testsuite/ext/special_functions/hyperg/check_value.cc
! 23ce19ab24896e11ff2c43dd346e4221  libstdc++-v3/testsuite/ext/special_functions/hyperg/compile.cc
! 3a3f51ce99e01350b6af30ea14a8646e  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-1.cc
! c353316083e610a7a79851cd20426a76  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-2.cc
! 7873cd90b5d34fce096993669371accd  libstdc++-v3/testsuite/ext/stdio_filebuf/char/10063-3.cc
! a13877c1e8f807f2fdb6426621bbc1a4  libstdc++-v3/testsuite/ext/stdio_filebuf/char/2.cc
! abca88808812fc8907d2cd460d1c336f  libstdc++-v3/testsuite/ext/stdio_filebuf/char/79820.cc
! cd932244fffb9a9ba5d997e6a7f7f10e  libstdc++-v3/testsuite/ext/stdio_filebuf/char/81751.cc
! 7f5b6d41ee78b6be74152fa8fc00c688  libstdc++-v3/testsuite/ext/stdio_filebuf/requirements/explicit_instantiation.cc
! cb4fb91cdee15b8f9b385d2fb51ef147  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/1.cc
! a2ecf5292e7338985489aeb7aa21fcb8  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-1.cc
! 06d64f6581712bda8bed7f2dc11fd9a9  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-2.cc
! acc600256cfec87a45764a0c5a37be71  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-3.cc
! 2b3fba669026e39deb3846bd89d99a8b  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/12048-4.cc
! c54e82f65a8b7d6395ec003ece404345  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/char/35209.cc
! 74b6b4c9395537bd08951df88cc58d1f  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/1.cc
! 993797bd40309f135cdec7f02bc1d450  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12077.cc
! 04fc4776a7d5d8d398e64411816ccd68  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-1.cc
! 164baa814448902f15aea77fc3db10b7  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-2.cc
! fdaddef38910614d19a156473e9bbf9d  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-3.cc
! 26a7ddeebc85cfb1ced6d23d28b383da  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/12948-4.cc
! 33fcd105c7620f779e2477f69908dfe0  libstdc++-v3/testsuite/ext/stdio_sync_filebuf/wchar_t/35209.cc
! 449a398feb69bb7b2386b228f5298857  libstdc++-v3/testsuite/ext/throw_allocator/check_allocate_max_size.cc
! 164bf738735726e3e4b56e61f8d0e382  libstdc++-v3/testsuite/ext/throw_allocator/check_deallocate_null.cc
! 04ffb052ea291d61eab19f8710cff430  libstdc++-v3/testsuite/ext/throw_allocator/check_delete.cc
! 97b3564d70d98020874ebc7567fd4865  libstdc++-v3/testsuite/ext/throw_allocator/check_new.cc
! d7eab5a41da86c599d266cfc74269bf1  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_global.cc
! e9a49a592a3d6e62dcf471de3e546198  libstdc++-v3/testsuite/ext/throw_allocator/deallocate_local.cc
! 6796ba8c70f3f598f6874fca3cf33f02  libstdc++-v3/testsuite/ext/throw_allocator/explicit_instantiation.cc
! 9694aa3fd8c1ea06ae40536a30619ad7  libstdc++-v3/testsuite/ext/throw_allocator/variadic_construct.cc
! e5588258015ca3ee4cc7b0fde957bda1  libstdc++-v3/testsuite/ext/throw_value/cons.cc
! 890cccfd78270206d697b67631851ea1  libstdc++-v3/testsuite/ext/type_traits/add_unsigned.cc
! 2998590c8b1e73baa7a374b07637b430  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_floating_neg.cc
! bc66988c9135adcbcd2a5452df5ead47  libstdc++-v3/testsuite/ext/type_traits/add_unsigned_integer_neg.cc
! 0d82e755eccba65acc8296d49bc97bac  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned.cc
! 865d36cd1e32c2c27c514f78bd8d4ad6  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_floating_neg.cc
! d6d0da3cffed61638abd794e39ecc4c4  libstdc++-v3/testsuite/ext/type_traits/remove_unsigned_integer_neg.cc
! 60ee5032adf2c29c8b2db5077fcdf61a  libstdc++-v3/testsuite/ext/vstring/capacity/29134.cc
! 8cca2f183e56b3a9d2b5749aba5cecfd  libstdc++-v3/testsuite/ext/vstring/capacity/shrink_to_fit.cc
! 211e19dd59c798a56855394a74097c9e  libstdc++-v3/testsuite/ext/vstring/cons/58415-1.cc
! 701c3610d9253728a7a35ee2df1f9388  libstdc++-v3/testsuite/ext/vstring/cons/58415-2.cc
! 8f14190e40aac07a8a7766f57ea5a08f  libstdc++-v3/testsuite/ext/vstring/cons/moveable.cc
! 5be682f0116a4cae14b7a3a240a056e6  libstdc++-v3/testsuite/ext/vstring/cons/noexcept_move_construct.cc
! e7ad52d8d3f0a2ee2dcd397df6b37f92  libstdc++-v3/testsuite/ext/vstring/element_access/char/58163.cc
! 077e2c8397af83b26efcb94789b045aa  libstdc++-v3/testsuite/ext/vstring/element_access/char/front_back.cc
! 3527a805f80fb4ae03faf57ee24bd44b  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/58163.cc
! d331a41caff0d690d11098473e929071  libstdc++-v3/testsuite/ext/vstring/element_access/wchar_t/front_back.cc
! 7e39fea4ffcb92af9ba5cb6984757d1c  libstdc++-v3/testsuite/ext/vstring/hash/char/1.cc
! ea4df1b73fdec225434fc86ec7e9757f  libstdc++-v3/testsuite/ext/vstring/hash/wchar_t/1.cc
! b0b95b4d762a82bff5524b3bed7cbac8  libstdc++-v3/testsuite/ext/vstring/init-list.cc
! 8300706b1b4d16a4ef6c5d42f5e8fa49  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/char/28277.cc
! 5967aea34d7783e1acc7121ec4a34de0  libstdc++-v3/testsuite/ext/vstring/inserters_extractors/wchar_t/28277.cc
! 1e28fd9580038824a95d6706e52d930f  libstdc++-v3/testsuite/ext/vstring/modifiers/assign/move_assign.cc
! 6801395c8605745196131c413a645a8d  libstdc++-v3/testsuite/ext/vstring/modifiers/clear/56166.cc
! e0acc7b80171853f2054a954cd10adcf  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/char/54577.cc
! faea9f6f20fb3f2be5214562905c9f39  libstdc++-v3/testsuite/ext/vstring/modifiers/erase/wchar_t/54577.cc
! 7930b86780138200855cc538ff43d529  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/char/const_iterator.cc
! 0a035c0faf9445f33795401afb4c46db  libstdc++-v3/testsuite/ext/vstring/modifiers/insert/wchar_t/const_iterator.cc
! fb8b90767248af649fe1dcde41024c97  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/char/1.cc
! 4edcaaf354128f75fd31088c05900a5c  libstdc++-v3/testsuite/ext/vstring/modifiers/pop_back/wchar_t/1.cc
! e08f80a6935a9e39a8340de848be9e90  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/char/const_iterator.cc
! 1e24c71a5bee56f28c326336cd590f67  libstdc++-v3/testsuite/ext/vstring/modifiers/replace/wchar_t/const_iterator.cc
! 8f313e783d46c284cf2ac5a219d11e2b  libstdc++-v3/testsuite/ext/vstring/operators/1.cc
! b42f3899f2f05398d9bab69a798198cd  libstdc++-v3/testsuite/ext/vstring/operators/2.cc
! 5707f5385b952263171dc2c87aabf38e  libstdc++-v3/testsuite/ext/vstring/range_access.cc
! fbd0f3f735840960951f7dc3ed4ae91e  libstdc++-v3/testsuite/ext/vstring/requirements/citerators.cc
! 3fc4dd8b34d9370f75320408a3a7c9d7  libstdc++-v3/testsuite/ext/vstring/requirements/do_the_right_thing.cc
! 60b0df0b6090b26e33b1995a9e1f6806  libstdc++-v3/testsuite/ext/vstring/requirements/dr438/constructor.cc
! 210ba3cedd0769b806bf815b5984bae4  libstdc++-v3/testsuite/ext/vstring/requirements/exception/basic.cc
! 384fdc5cb21bb4168103a2f12dd6cf42  libstdc++-v3/testsuite/ext/vstring/requirements/exception/generation_prohibited.cc
! 6f4cba68d16f0198ad925c6aec880d99  libstdc++-v3/testsuite/ext/vstring/requirements/exception/propagation_consistent.cc
! cb63c1b6f81a7c8fdce31ced3d5ddc45  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/1.cc
! 557193a7166cb97a52dca0459742af6a  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/2.cc
! 4f8efd870426351b8ea2ef150203e30e  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char/1.cc
! 109ccb53183252199a1fa38adb0553e1  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char16_t/1.cc
! a90de596d241a2c6c6c89e4eba4155a7  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/char32_t/1.cc
! 7d800a0049ff7dc0ec5c6b7c527079ba  libstdc++-v3/testsuite/ext/vstring/requirements/explicit_instantiation/wchar_t/1.cc
! 08ad86590480de2a39443788392fc77a  libstdc++-v3/testsuite/ext/vstring/requirements/typedefs.cc
! 8fa674bc953a01c1fa271914aefe2034  libstdc++-v3/testsuite/ext/vstring/types/23767.cc
! a6f1a27d8f3d66e9588f4ce7e251994d  libstdc++-v3/testsuite/lib/dg-options.exp
! ed5847591437c095665f6661ed099d14  libstdc++-v3/testsuite/lib/gdb-test.exp
! 79b2db9d81efe682e07b8f98b25283f8  libstdc++-v3/testsuite/lib/libstdc++.exp
! 60624a8d8c9bf2d79f3555d37737721e  libstdc++-v3/testsuite/lib/prune.exp
! a4885d40248bdb0a84a21ff15cf98b24  libstdc++-v3/testsuite/libstdc++-abi/abi.exp
! 03fb9dda0c4aeecf928fb0fd162aa4ea  libstdc++-v3/testsuite/libstdc++-dg/conformance.exp
! fbce0fa761037a93203e0670a5f48f4a  libstdc++-v3/testsuite/libstdc++-prettyprinters/48362.cc
! d8b8aa7a79fd9276794c9921ca369a5e  libstdc++-v3/testsuite/libstdc++-prettyprinters/59161.cc
! 2278383a69b32f51aee94ecf72217e2b  libstdc++-v3/testsuite/libstdc++-prettyprinters/80276.cc
! df972cf7eac7c53650a70738c13461a5  libstdc++-v3/testsuite/libstdc++-prettyprinters/91997.cc
! 1c11f52e1c36b17f597c9fcad886e716  libstdc++-v3/testsuite/libstdc++-prettyprinters/compat.cc
! 72e5ff3de3f2b4e67fc3f89ee6fd706f  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx11.cc
! 106c0ffdc802ec9705125cf3d5053699  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx17.cc
! 30a3f3fa9ef37d32dca9f7af1e3eda22  libstdc++-v3/testsuite/libstdc++-prettyprinters/cxx20.cc
! f87b9609d2bd7a82b882d0575ee859cb  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug.cc
! dfe27a67d003eb7e13f54526884098df  libstdc++-v3/testsuite/libstdc++-prettyprinters/debug_cxx11.cc
! f7a779a4fb2e70d728e58e1adab5ad3a  libstdc++-v3/testsuite/libstdc++-prettyprinters/filesystem-ts.cc
! 26803887d8b667d13bce70d5f80074d5  libstdc++-v3/testsuite/libstdc++-prettyprinters/libfundts.cc
! 4df588303bc50f5e2072cda19ee7e859  libstdc++-v3/testsuite/libstdc++-prettyprinters/prettyprinters.exp
! a84840509203967b4e0062b15f542bce  libstdc++-v3/testsuite/libstdc++-prettyprinters/shared_ptr.cc
! 47065c46959fca678deeac21e7e23706  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple.cc
! 7548dd933f94781cabf65902774f82c3  libstdc++-v3/testsuite/libstdc++-prettyprinters/simple11.cc
! 082e47745543ba3971296c2f38b87ca0  libstdc++-v3/testsuite/libstdc++-prettyprinters/tr1.cc
! 2899e2b993902b684a458c2843640345  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis.cc
! 8becdf5719f7bfb40f736521750884e6  libstdc++-v3/testsuite/libstdc++-prettyprinters/whatis2.cc
! 1d7de84d95236a56cde807d758eed08c  libstdc++-v3/testsuite/libstdc++-xmethods/array.cc
! 079d181d7b5f7edc9d9dd450034a6443  libstdc++-v3/testsuite/libstdc++-xmethods/associative-containers.cc
! aeea32cba6dbe72ed07203dc5cb152a2  libstdc++-v3/testsuite/libstdc++-xmethods/deque.cc
! 1fb7bf97872016d5f8680b70cc1edfd9  libstdc++-v3/testsuite/libstdc++-xmethods/forwardlist.cc
! 2fcc43982b817fb10d67eb9d352f532f  libstdc++-v3/testsuite/libstdc++-xmethods/list.cc
! 5d63c64f055942dcb4449a2c61f87216  libstdc++-v3/testsuite/libstdc++-xmethods/shared_ptr.cc
! d90bf13a68e5bd922fde2619ffc0a234  libstdc++-v3/testsuite/libstdc++-xmethods/unique_ptr.cc
! 1e45da4b2c5a18f598b42d5a945de6b1  libstdc++-v3/testsuite/libstdc++-xmethods/vector.cc
! 50bd0059be969a74197d39df410ee36f  libstdc++-v3/testsuite/libstdc++-xmethods/xmethods.exp
  af003639dee7c3edb68531616f1c3b8c  libstdc++-v3/testsuite/performance/20_util/memory_resource/pools.cc
! 2368ecc745f4b5b585d8a2f1267ea9e3  libstdc++-v3/testsuite/performance/21_strings/append-1.cc
! 0be74ed23ebf92603f2dcb6bdc5976c7  libstdc++-v3/testsuite/performance/21_strings/append-2.cc
! 93443486a39fcf64054675ae10eba128  libstdc++-v3/testsuite/performance/21_strings/cons_input_iterator.cc
! afb17b53637099990743b8f56d43b926  libstdc++-v3/testsuite/performance/21_strings/copy_cons_and_dest.cc
! 3cf22bf4f9d386e1a1ba9214af0a8ab3  libstdc++-v3/testsuite/performance/21_strings/find.cc
  efa1608e1841a10bba94a6d4de361846  libstdc++-v3/testsuite/performance/21_strings/hash.cc
! 8f0b5d2406f47ef8db8c5997bd862b28  libstdc++-v3/testsuite/performance/22_locale/is_wchar_t.cc
! 18515fe17c5792b56822c0d4cf703428  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_char.cc
! 5b73b23660412b77375cfd29a7c1423a  libstdc++-v3/testsuite/performance/22_locale/narrow_widen_wchar_t.cc
! f00805ef9e4a314a2086a105c3af481a  libstdc++-v3/testsuite/performance/22_locale/wchar_t_in.cc
! 03aa84ef40f7f2deea7d5d90ee28c5b6  libstdc++-v3/testsuite/performance/22_locale/wchar_t_length.cc
! c2df0052d82cd13bc244882f69ba6acc  libstdc++-v3/testsuite/performance/22_locale/wchar_t_out.cc
! e5802cc569dd92185a2e0cff6284f455  libstdc++-v3/testsuite/performance/23_containers/copy_construct/unordered_set.cc
! 9b32de23943f6be031a997ef7c7cbcb9  libstdc++-v3/testsuite/performance/23_containers/copy_construct/vector_bool.cc
! b01e7236be08d8de41b8d9e414537d1d  libstdc++-v3/testsuite/performance/23_containers/create/map.cc
! 8f3147b2c2aa94ac0c493730f4314621  libstdc++-v3/testsuite/performance/23_containers/create_from_sorted/set.cc
! 9a82b4387f2ba5d89276d323514553a7  libstdc++-v3/testsuite/performance/23_containers/create_sort/list.cc
! 34f17639a2921d15f204e951813c7d1a  libstdc++-v3/testsuite/performance/23_containers/find/map.cc
! e83587a6f228c88f24d9c3afae984a23  libstdc++-v3/testsuite/performance/23_containers/index/map.cc
! a3d3e9372682b31e40ce0a41d63b92fb  libstdc++-v3/testsuite/performance/23_containers/insert/54075.cc
! 6be364dd5e8453747d0d7136f2ba887a  libstdc++-v3/testsuite/performance/23_containers/insert/81476.cc
! 166918f088740fbd382a86749921d03d  libstdc++-v3/testsuite/performance/23_containers/insert/associative.cc
! b9082c04156e1a04fe3520f0a722af6e  libstdc++-v3/testsuite/performance/23_containers/insert/sequence.cc
! 8f8b67cfe4e9d33953081eda847cee09  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_map_array.cc
! 5136a50afd22297f04ed7d05efc92375  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_multiset_hint.cc
! 82ac63a0c82e6c5a838edf5d772e3c8c  libstdc++-v3/testsuite/performance/23_containers/insert/unordered_set.cc
! 231703ed66dd3385797ee9445b942bfc  libstdc++-v3/testsuite/performance/23_containers/insert_erase/41975.cc
! bdf33ff5dcd0593309984f7e269eeecb  libstdc++-v3/testsuite/performance/23_containers/insert_erase/associative.cc
! b60752406b76bbd9fe4de44bac6b0f93  libstdc++-v3/testsuite/performance/23_containers/insert_erase/unordered_small_size.cc
! 0d058f397e1475b1242f4d34aa4d440c  libstdc++-v3/testsuite/performance/23_containers/insert_from_sorted/set.cc
! ca9df70442e36a44e739791e1d61a454  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/associative.cc
! 3d3968a7a5df8a03ca93806937a905c0  libstdc++-v3/testsuite/performance/23_containers/producer_consumer/sequence.cc
! 3797d515c87eedf218878226f7cd0c64  libstdc++-v3/testsuite/performance/23_containers/range_construct/deque_construct.cc
! a86a1764619721e1d71498b2894364d5  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct1.cc
! 36888fdfb208cfc29bad547976a9e6bd  libstdc++-v3/testsuite/performance/23_containers/range_construct/list_construct2.cc
! ea0bbde6705562736e5a16ad26e18d3c  libstdc++-v3/testsuite/performance/23_containers/range_construct/vector_construct.cc
! fab8c07d8c601901d10c99768af6eb9c  libstdc++-v3/testsuite/performance/23_containers/resize/vector_bool.cc
! a6906a36cc76379e4bd72436ca3c5758  libstdc++-v3/testsuite/performance/23_containers/sort_search/list.cc
  9d1d6439b2e93ebc48779237c0969b25  libstdc++-v3/testsuite/performance/25_algorithms/copy_backward_deque_iterators.cc
  ab09b2da7335847dccf2fd63d8b8fd89  libstdc++-v3/testsuite/performance/25_algorithms/copy_deque_iterators.cc
! 33395cb449921a0e8e3111c10a9ac341  libstdc++-v3/testsuite/performance/25_algorithms/copy_streambuf_iterators.cc
! 783b4fca614e3d47ab226e49c3efab39  libstdc++-v3/testsuite/performance/25_algorithms/equal_deque_iterators.cc
! e6795b246083f22d7b1dda0e3749d1fa  libstdc++-v3/testsuite/performance/25_algorithms/find_istreambuf_iterators.cc
! b9fcbe4205a1f0907c693001944d104b  libstdc++-v3/testsuite/performance/25_algorithms/inplace_merge.cc
! 924e8997566ce2c833e471ec6405a665  libstdc++-v3/testsuite/performance/25_algorithms/lexicographical_compare.cc
! c4db1230b31b31312a89984c7a429bfb  libstdc++-v3/testsuite/performance/25_algorithms/nth_element_worst_case.cc
! 6d7353a11b7a56cfa6c75a18aadd4e90  libstdc++-v3/testsuite/performance/25_algorithms/search_n.cc
! b8bb128164cabf5d5b34563b0bee55bf  libstdc++-v3/testsuite/performance/25_algorithms/sort.cc
! dc110d0ff9ee893776c72fb0c1affaa3  libstdc++-v3/testsuite/performance/25_algorithms/sort_heap.cc
! cdf751dde7443740766b29fb71513f35  libstdc++-v3/testsuite/performance/25_algorithms/stable_sort.cc
! 57f0fdf8a14a3a99e59e162730945982  libstdc++-v3/testsuite/performance/26_numerics/complex_norm.cc
! af4d2403f06b68ebe97f9226b206d694  libstdc++-v3/testsuite/performance/26_numerics/random_dist.cc
! ad6b57dd4867d2e01069fd01662c37bd  libstdc++-v3/testsuite/performance/26_numerics/valarray_gslice_to_index.cc
! 2e3bc6b4c09d9a1ba60606788dba413b  libstdc++-v3/testsuite/performance/27_io/cout_insert_int.cc
! ef9bd29d305818a66fd60b8631b65dd7  libstdc++-v3/testsuite/performance/27_io/filebuf_copy.cc
! 45dd4de16e1b5aea23e02cce7655be8c  libstdc++-v3/testsuite/performance/27_io/filebuf_sgetn_unbuf.cc
! c3f0a8f6168678cdb4f10458ef86729a  libstdc++-v3/testsuite/performance/27_io/filebuf_sputc.cc
! f2c02594504e2abf6a8106dd4dfcd2a9  libstdc++-v3/testsuite/performance/27_io/filebuf_sputn_unbuf.cc
! a168e01e34e607a2e5efda99ed97bfa2  libstdc++-v3/testsuite/performance/27_io/fmtflags_manipulators.cc
! cc90e306ad49021b3a19ef21c2791db3  libstdc++-v3/testsuite/performance/27_io/fstream_seek_write.cc
! bed88eb4c7bd181e3093c8032e14c6cc  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_chars.cc
! e9d2b051803fb81beee9a40d16288bca  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_float.cc
! 723565bd40c15516fcd4ffd0856b0911  libstdc++-v3/testsuite/performance/27_io/ifstream_extract_int.cc
! 8aacd9cff0d567c3dc1b6a908ab39c08  libstdc++-v3/testsuite/performance/27_io/ifstream_getline-2.cc
! 79bf6c9e6b8d00706947e5e1376e5f5e  libstdc++-v3/testsuite/performance/27_io/ifstream_getline.cc
! 4a90ed07f6e96d6558e66dd62867d119  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_float.cc
! 2e1ac4beeaeec6caf99063ccc23f6e3c  libstdc++-v3/testsuite/performance/27_io/ofstream_insert_int.cc
! 437ed85c04d854aca14dfed28cf95446  libstdc++-v3/testsuite/performance/27_io/stringbuf_overflow.cc
! 09823e880c22cbfd149704eb7cb9c736  libstdc++-v3/testsuite/performance/28_regex/range.cc
! f1dd49a8dc95e0ce64cb63783a3a603f  libstdc++-v3/testsuite/performance/28_regex/split.cc
! 51b42d8c55d0d98470365cc34f22fbb1  libstdc++-v3/testsuite/performance/28_regex/split.h
! 83ee5d768cec126243fb544f1169d84a  libstdc++-v3/testsuite/performance/28_regex/split_bfs.cc
! e7bc97f9886f9aeb543bc96136342596  libstdc++-v3/testsuite/performance/29_atomics/atomic_flag.cc
! 1c5ba0aebf70f7cd77a2c1a09c222a35  libstdc++-v3/testsuite/performance/30_threads/future/polling.cc
! 6932595605389c7ba05a58e5ba6dee08  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_find.cc
! f84f1fb1eb8fcb8daef45c80f258f23a  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_find.cc
! 5d73df1fb1ef82c569fe0a69775fbc51  libstdc++-v3/testsuite/performance/ext/pb_ds/all_int_subscript_insert.cc
! 936f86826cce44d1c9d821e516876320  libstdc++-v3/testsuite/performance/ext/pb_ds/all_text_find.cc
! 9b31203f62661b8a7fa0e513702e0c72  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_int_erase_mem.cc
! f0874f7cb09cb315cb4401faf731092b  libstdc++-v3/testsuite/performance/ext/pb_ds/hash_zlob_int_find.cc
! f4d1444822c5de258bb52679a293d56f  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find.hpp
! b018dfa32a5f1829241431931501e934  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_large.cc
! a231d797b81b8473b3f498e36da99e65  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_find_small.cc
! 76ee7395bf42c26c7b8c1c017e89a263  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert.hpp
! c8c701f3681d4b8a19becb7f6ddca144  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_large.cc
! cf8eb2fcbd57f585ad87ef3ee70f0e1d  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem.hpp
! 090f5b9d193b1a59a13f535c39a4baec  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_large.cc
! 056f404c3e9f8cf5f41f67d6fec0e920  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_mem_small.cc
! db92db4b86a5d81d9ac3e3fae15f8f82  libstdc++-v3/testsuite/performance/ext/pb_ds/multimap_text_insert_small.cc
! 4ce40f8b536a4fa4ca71edf68dbc1a01  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push.cc
! f0c4ab1ec9dd3d90e6473570fbd66884  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_int_push_pop.cc
! ef3b3fa3c29ddea0785b1853780dd8b9  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_join.cc
! 33dce5366c7c2f3fd1000de01de4f894  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify.hpp
! 33b90f225c088ec39db25acb5158b653  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_down.cc
! 30d580c058b12ff2319cab0ac31ce7ad  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_modify_up.cc
! af5b6b24a91eb0d4c8f04fe16ba1eede  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_pop_mem.cc
! 2873ecff156dbd4f5a2b6b9cc1f1e5c1  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push.cc
! 5daadbb49165e8422845087b36d6b373  libstdc++-v3/testsuite/performance/ext/pb_ds/priority_queue_text_push_pop.cc
! e50186f17cc0b911598a71dd6dfd704b  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_order_statistics.cc
! 22762d0371c17ab722e5f038e462d489  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_split_join.cc
! 795aaeb37f3b0fb5ec4a22b9d7f6d72f  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_insert.cc
! 0cb8a29f64379235faf3d4b3084582cd  libstdc++-v3/testsuite/performance/ext/pb_ds/tree_text_lor_find.cc
! 9d94d995585835edc554004265e0fc30  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_nan.cc
! d6e5d70d555377be03f5d0cc87bb03e6  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/check_value.cc
! 46891ac803c2e16b97fcd1bf3e0eafe6  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile.cc
! 176699403093121e0ff8ccba82d6110f  libstdc++-v3/testsuite/special_functions/01_assoc_laguerre/compile_2.cc
! ad51d7a0ec82d341d499b3b3d2d08193  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_nan.cc
! 224a5559c40aec494c5d5ecc7b9fe7e5  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/check_value.cc
! 8ff5caa5769e80a74c90f739d83b8043  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile.cc
! e1583ea84df0e81288bb663e729df088  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/compile_2.cc
! c4703fffe0dfefb92116d529b2e99f2b  libstdc++-v3/testsuite/special_functions/02_assoc_legendre/pr86655.cc
! 35e3e4d1523382319a66feeb9d43e7ab  libstdc++-v3/testsuite/special_functions/03_beta/check_nan.cc
! dd5c010aa31e229060d61f0722acceac  libstdc++-v3/testsuite/special_functions/03_beta/check_value.cc
! a944fc281660ae8af19c006f97c18911  libstdc++-v3/testsuite/special_functions/03_beta/compile.cc
! 87b255abfe5a30c95f4d64301cf20644  libstdc++-v3/testsuite/special_functions/03_beta/compile_2.cc
! 9b66defa40b653b61ad38ce4efbb04a0  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_nan.cc
! 4704024eca8078a63919661d20d0374f  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/check_value.cc
! b27411df74ccee488316f99aa3e6cb20  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile.cc
! 4ce97286f774f8d683774bfec74a9442  libstdc++-v3/testsuite/special_functions/04_comp_ellint_1/compile_2.cc
! 2ffacefcfd3afdaa51094ff5e40d8e47  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_nan.cc
! bab418419701496b117c4196a32481e1  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/check_value.cc
! d4ed637e1b10f6a13506727d7445a7f1  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile.cc
! ccd34047ee8315e3a67716ebac348e00  libstdc++-v3/testsuite/special_functions/05_comp_ellint_2/compile_2.cc
! 760b0684fc002cdf7bc05eec24d547c1  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_nan.cc
! dd27be7e347b4399a268c67fee14db38  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/check_value.cc
! 9476ebb8e507034d414b680f97467580  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile.cc
! 326373fb6cfeac6393007b9b22e14d40  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/compile_2.cc
  d40969d8e7a8973cde9b227f9ce95961  libstdc++-v3/testsuite/special_functions/06_comp_ellint_3/pr66689.cc
! 480daabd5c4b6ce15d7f22cdb6eb3d78  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_nan.cc
! df47451be9f559cac6485c17c79d3e66  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/check_value.cc
! 799d98d125d1ade4cf16a352bab142b8  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile.cc
! 5726315947f8db1fa9f407a2afee5eb8  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/compile_2.cc
! 52c1b26861cccbe05cac583407573c8e  libstdc++-v3/testsuite/special_functions/07_cyl_bessel_i/pr56216.cc
! d8156e5e032ce492dfb044cd71c59888  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_nan.cc
! 9462b6b6665f74fff0c360663e3c8d59  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/check_value.cc
! c5f61de8e683579853a5ff77fe27ca26  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile.cc
! 48a04e2ded56b94178022d200447d77d  libstdc++-v3/testsuite/special_functions/08_cyl_bessel_j/compile_2.cc
! eac0e5568ab15f43be8094a371684c3e  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_nan.cc
! e0adf39ed4bf7387f672f4dafa4a4e3a  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/check_value.cc
! 6664c86a9cb3479ca4b07cc701a73ccc  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile.cc
! 403b405ca848c01cbe60b32a698b4ef7  libstdc++-v3/testsuite/special_functions/09_cyl_bessel_k/compile_2.cc
! 48f83826c6ad194005289a5fc5f7df82  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_nan.cc
! ab523b095961787f6d3df06c62aa129f  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/check_value.cc
! f9e018b2cc4aa22fd9c4f125e4d0fb5c  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile.cc
! 6223b0af9d0eb6420153a3a599c7c260  libstdc++-v3/testsuite/special_functions/10_cyl_neumann/compile_2.cc
! eb1ec644a916516aadc6428843b6478e  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_nan.cc
! de2e99c5b6f84d1abafe6ce70ffdaa33  libstdc++-v3/testsuite/special_functions/11_ellint_1/check_value.cc
! 03d6f32b2bd0e2deea73eb1dd45981ce  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile.cc
! dc6e0cbfef6285a99f04588eb074026d  libstdc++-v3/testsuite/special_functions/11_ellint_1/compile_2.cc
! 0a10253f34096d44fc393ad781f22784  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_nan.cc
! e105668c3f4e39db9ac8cc7aca7d6c38  libstdc++-v3/testsuite/special_functions/12_ellint_2/check_value.cc
! bcff99bba6c19c90533a4901dc2b0677  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile.cc
! 962654b407ce5e26520c1db86c6b3d99  libstdc++-v3/testsuite/special_functions/12_ellint_2/compile_2.cc
! 71ee3597d025de96a2a8d031a6571b13  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_nan.cc
! 6b36d444c7d75b08e87f0488a1c9b27f  libstdc++-v3/testsuite/special_functions/13_ellint_3/check_value.cc
! e6bfc2595ed3967926b1b86552a07107  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile.cc
! 9a747f2c2b2aea9b4b206e654b83c87f  libstdc++-v3/testsuite/special_functions/13_ellint_3/compile_2.cc
  51586062b3eeaebd7af37c198695dc60  libstdc++-v3/testsuite/special_functions/13_ellint_3/pr66689.cc
! 610cca638e6ce664a3a8875994590487  libstdc++-v3/testsuite/special_functions/14_expint/check_nan.cc
! 5ca509cdce2a445cfeb3b1a96198fc95  libstdc++-v3/testsuite/special_functions/14_expint/check_value.cc
! a3ad2e38fb2cca0709fd6cb7fe560c18  libstdc++-v3/testsuite/special_functions/14_expint/compile.cc
! 44b686a0a25d37035582e8ca9156cd9f  libstdc++-v3/testsuite/special_functions/14_expint/compile_2.cc
! d4cbd0aa9b197c41dc3e4e08f94afcbf  libstdc++-v3/testsuite/special_functions/14_expint/pr68397.cc
! eb4c040547701834b403628838002447  libstdc++-v3/testsuite/special_functions/15_hermite/check_nan.cc
! 957025ea935469cdf77e3ab89fe257e7  libstdc++-v3/testsuite/special_functions/15_hermite/check_value.cc
! 18c9264ca3a1c46c6cb01c63712e97e0  libstdc++-v3/testsuite/special_functions/15_hermite/compile.cc
! 48f29e0187971752e69a8eb1f13b1cc3  libstdc++-v3/testsuite/special_functions/15_hermite/compile_2.cc
! 10006854a98730af911947ec4e42fbee  libstdc++-v3/testsuite/special_functions/16_laguerre/check_nan.cc
! 96899f7f7825558c4ecea43bb2451bf1  libstdc++-v3/testsuite/special_functions/16_laguerre/check_value.cc
! 6fb945d898cdd436d669d46f6d00f250  libstdc++-v3/testsuite/special_functions/16_laguerre/compile.cc
! 2888f84a67448d9a5bfcd85d8706ce57  libstdc++-v3/testsuite/special_functions/16_laguerre/compile_2.cc
! 25569e5fba43c5b3626f8e7ffa14c106  libstdc++-v3/testsuite/special_functions/17_legendre/check_nan.cc
! b505e3dee2fa7b3450429ea4807aa7c4  libstdc++-v3/testsuite/special_functions/17_legendre/check_value.cc
! 361c8f5222044b04f9d7258875a68c19  libstdc++-v3/testsuite/special_functions/17_legendre/compile.cc
! 470cb829cdb2749ab7fd70ada5f3529c  libstdc++-v3/testsuite/special_functions/17_legendre/compile_2.cc
! 92de00f85d402fd2552d83002beb3f7f  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_nan.cc
! 95387f53fd9dc47f009ccc05afac56e3  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/check_value.cc
! 79b4593b1797bd497b9892bf79d729f6  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile.cc
! 56ee6b11932b210ff15f675a4e9cc950  libstdc++-v3/testsuite/special_functions/18_riemann_zeta/compile_2.cc
! 6df6b925c56194d776c8530122127335  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_nan.cc
! baaf65e4b0a9287db23ddb108a3aa7cd  libstdc++-v3/testsuite/special_functions/19_sph_bessel/check_value.cc
! 4586263b7f3f844004b53d6a27f30a39  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile.cc
! 2b6ece0d505ca7302b1da1255f6592d2  libstdc++-v3/testsuite/special_functions/19_sph_bessel/compile_2.cc
! 4e384e015e04c1982f5dbf96e94df6fc  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_nan.cc
! 3b024a0dad41e87ef0d55c7b0d86a627  libstdc++-v3/testsuite/special_functions/20_sph_legendre/check_value.cc
! 1df9f65223da5e2ae31bebada123a7db  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile.cc
! 47885b6556dc883903c3eeb8666fc758  libstdc++-v3/testsuite/special_functions/20_sph_legendre/compile_2.cc
! 036bca5e0aa054f6908faa6e1bc0bdd6  libstdc++-v3/testsuite/special_functions/20_sph_legendre/pr86655.cc
! 510961d91d27c2ae7b4f66a9c3d9ad15  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_nan.cc
! 3ca88950dd1dc1325348a8a02ef4f923  libstdc++-v3/testsuite/special_functions/21_sph_neumann/check_value.cc
! 978e1b2c80785959c0f89544675742be  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile.cc
! 01922f7490d7ae98d8e6d3d1e81c6ef2  libstdc++-v3/testsuite/special_functions/21_sph_neumann/compile_2.cc
! 27e07ee1a195f2f654fa8e946e32fa3b  libstdc++-v3/testsuite/std/concepts/1.cc
! 8aa9d4ce299cd6f9cdb568211b325010  libstdc++-v3/testsuite/std/concepts/2.cc
! dd2f5454eee21598a0f9503ec06fcd31  libstdc++-v3/testsuite/std/concepts/concepts.callable/invocable.cc
! b29d95b6b056c3d16a256e3e359e1d1b  libstdc++-v3/testsuite/std/concepts/concepts.callable/regular_invocable.cc
! 30510e95db4e34fb17b84ba05dcd7551  libstdc++-v3/testsuite/std/concepts/concepts.callable/relation.cc
! b417a29740017612527c88f60e5c31ce  libstdc++-v3/testsuite/std/concepts/concepts.callable/strictweakorder.cc
! 60387cfe14b8ff045a4dbe84a1a1027c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/floating_point.cc
! d3be1128b394f49459d747f04ad91a16  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/integral.cc
! 3e5a9710b992295322c4d5c3e0ecae89  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/signed_integral.cc
! 72ce45b24b13b0ebddf1395cf0c3bd93  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.arithmetic/unsigned_integral.cc
! ba8cbf6be44e86f397bb882aa48f0e20  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.assignable/1.cc
! 96b853c98cda5b7345bf59975122d14b  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.common/1.cc
! c2dc79a145019d2340a3e1ffa7696637  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.commonref/1.cc
! df90fe7ce52dab2ce7830a7080045f8c  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.constructible/1.cc
! 8cc5fbc78e1dcbfe2dbbd5d7090b12ec  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.convertible/1.cc
! ea8b4f02c5ad259be6a84df454b243e6  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.copyconstructible/1.cc
! e663ca204b3daa1368e4e5a6f39c4fdc  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/1.cc
! a51ebb2e4adc9af4172ea2691232748e  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.defaultinitializable/lwg3149.cc
! 819c990908c1b4ad2594db2580cdf054  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.derived/1.cc
! 08fe7780ed22dbe2c2f7fc696f53e05a  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.destructible/1.cc
! ef95f62a34b7e8f9d49e0dc784a4dda5  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.moveconstructible/1.cc
! abb4b87be7872f758755ab9eec91e602  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.same/1.cc
! 65f3cb09cd4b497d80ccb53125caf601  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swap.cc
! 03c2318d4d3ffff90f8b9227b53c4182  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable.cc
! d37bafcbfa7bea609005ec3362618995  libstdc++-v3/testsuite/std/concepts/concepts.lang/concept.swappable/swappable_with.cc
! b50f7790625af70d2584bce7448797a3  libstdc++-v3/testsuite/std/concepts/concepts.object/copyable.cc
! 7c33090d5221d00fb69f073eb3a39e01  libstdc++-v3/testsuite/std/concepts/concepts.object/movable.cc
! dee3f965ae51e534527b2ab57de6173c  libstdc++-v3/testsuite/std/concepts/concepts.object/regular.cc
! e5c73ec71149072c79be3cd39964fc84  libstdc++-v3/testsuite/std/concepts/concepts.object/semiregular.cc
! 046f33d2ff84e5fae2abfd2e7e10afa0  libstdc++-v3/testsuite/std/format/arguments/args.cc
! cb2b08cb95c43b796a8c818d17beea18  libstdc++-v3/testsuite/std/format/arguments/lwg3810.cc
! 26cb34ad3aa73e01fb7d018f1b97e73e  libstdc++-v3/testsuite/std/format/error.cc
! c4026a6d0520e4329e27fe92fdd65a86  libstdc++-v3/testsuite/std/format/format_string.cc
! 5477cf5cf0d83c16c3641c1ba9a1fca9  libstdc++-v3/testsuite/std/format/formatter/concept.cc
! 912a5a69faf2558c407722cee5b26879  libstdc++-v3/testsuite/std/format/formatter/requirements.cc
! 926f89ddc54be9fcf8daa5c0a5f35b88  libstdc++-v3/testsuite/std/format/functions/107871.cc
! 67b3287cbb9ca033ce030865ed4f0153  libstdc++-v3/testsuite/std/format/functions/format.cc
! adea3692874c12de1ef302342290acad  libstdc++-v3/testsuite/std/format/functions/format_to_n.cc
! f2b7be2affed39b62b231f2ae4daa238  libstdc++-v3/testsuite/std/format/functions/size.cc
! 61c3ceb1139d985da2be137364958d61  libstdc++-v3/testsuite/std/format/functions/vformat_to.cc
! dc9727b8a22f63027b46ebc3f6d99f70  libstdc++-v3/testsuite/std/format/parse_ctx.cc
! 2fcda04510688bda63c15c21395304b6  libstdc++-v3/testsuite/std/format/string.cc
! e7cae8900990c6d06575306162ce472a  libstdc++-v3/testsuite/std/format/string_neg.cc
! 724a6ad5cf32f4b761c837d18aebb201  libstdc++-v3/testsuite/std/ranges/97600.cc
  098cf5ff316bfa8fe61f6c4ef6c78d37  libstdc++-v3/testsuite/std/ranges/access/101782.cc
! 6dfe4ad5c1e864eb4a9d55041969d034  libstdc++-v3/testsuite/std/ranges/access/begin.cc
! 84132b2a3ba455db776fc5d65e9bd942  libstdc++-v3/testsuite/std/ranges/access/begin_neg.cc
! 6fd8f62479163b59244883aa14c7f3bd  libstdc++-v3/testsuite/std/ranges/access/cbegin.cc
! 0a864311190284b07444881cc8f2f638  libstdc++-v3/testsuite/std/ranges/access/cdata.cc
! 362b5b9b9797f0eacc6ad3a4da7cce0e  libstdc++-v3/testsuite/std/ranges/access/cend.cc
! 8186091df999bd29c3782292d9cd74b3  libstdc++-v3/testsuite/std/ranges/access/crbegin.cc
! efb0460ff81175790bb357a2f4f63cc8  libstdc++-v3/testsuite/std/ranges/access/crend.cc
! 69cc7d4bbb03987954c1abe208628b26  libstdc++-v3/testsuite/std/ranges/access/data.cc
! 3f9cfdef06a863d09eb916cdb7ced4e9  libstdc++-v3/testsuite/std/ranges/access/empty.cc
! deaeda562877c360b6978dace7444efc  libstdc++-v3/testsuite/std/ranges/access/end.cc
! ed11f840da1be3d4ecfa75aeae0513f5  libstdc++-v3/testsuite/std/ranges/access/end_neg.cc
! 02ff4399c5bb44c172ccd6cef03cd076  libstdc++-v3/testsuite/std/ranges/access/lwg3467.cc
! d8de22e11865298b12fbdf6994e787e6  libstdc++-v3/testsuite/std/ranges/access/rbegin.cc
! 8fad561c42832147f7e81948017ec88d  libstdc++-v3/testsuite/std/ranges/access/rend.cc
! ed9a7e364c2c427ed9b851a017e9c85c  libstdc++-v3/testsuite/std/ranges/access/size.cc
! 09fdaa45b7a6d80883f323e3a0ecc0bf  libstdc++-v3/testsuite/std/ranges/access/size_neg.cc
! 8f9973bc541c8a5744edf31714ce62eb  libstdc++-v3/testsuite/std/ranges/access/ssize.cc
! 225f5dfe84807b46c5965fb6537ce664  libstdc++-v3/testsuite/std/ranges/adaptors/100479.cc
! 9eb4f71904ccc6c682c770a069ba7dfd  libstdc++-v3/testsuite/std/ranges/adaptors/100577.cc
! eb0f19121d6dbffa13f3700d5b0b2c1c  libstdc++-v3/testsuite/std/ranges/adaptors/93978.cc
! cd4ce629f1afc64f2802727bd7e3e4d1  libstdc++-v3/testsuite/std/ranges/adaptors/95322.cc
! efe074fd50fae87fcfe4de707f8c07a0  libstdc++-v3/testsuite/std/ranges/adaptors/99433.cc
! 202e17626aff79b167a4884d4674e795  libstdc++-v3/testsuite/std/ranges/adaptors/adjacent/1.cc
! dfaace835421177fca7beffe48564885  libstdc++-v3/testsuite/std/ranges/adaptors/adjacent_transform/1.cc
! 627ec2851e5a9ef14fa7f85fde916815  libstdc++-v3/testsuite/std/ranges/adaptors/all.cc
! bfcf1004a149342f80da7950ca8df7e1  libstdc++-v3/testsuite/std/ranges/adaptors/as_const/1.cc
! 87ba957cd4433e77a0cb6227da3d374f  libstdc++-v3/testsuite/std/ranges/adaptors/as_rvalue/1.cc
! 86881fe316fe3dddbf1fdcb5446a4d28  libstdc++-v3/testsuite/std/ranges/adaptors/chunk/1.cc
! 1fccda8f7a1de96c8ccb844d90976182  libstdc++-v3/testsuite/std/ranges/adaptors/chunk_by/1.cc
! 437195379fed4370a088e7972cb85a89  libstdc++-v3/testsuite/std/ranges/adaptors/common.cc
! 01493f9520b1a8c2d7672ccb6169b37e  libstdc++-v3/testsuite/std/ranges/adaptors/conditionally_borrowed.cc
! b6a927b256eb5eab0f3abcd01a2c8c31  libstdc++-v3/testsuite/std/ranges/adaptors/counted.cc
! c2b2be0c1640a49df2db13de9010388c  libstdc++-v3/testsuite/std/ranges/adaptors/detail/copyable_box.cc
! 600b9066effca126cddab6467daee09e  libstdc++-v3/testsuite/std/ranges/adaptors/drop.cc
! 601a50c193fb8ba7a88242946e976753  libstdc++-v3/testsuite/std/ranges/adaptors/drop_while.cc
! c0a8eb7862d860bdd0ca173629ed25af  libstdc++-v3/testsuite/std/ranges/adaptors/elements.cc
! 3fcb281a03409e43294f77c1e7809391  libstdc++-v3/testsuite/std/ranges/adaptors/enumerate/1.cc
! 715164a8fdb0e7b2f13f73a21381a935  libstdc++-v3/testsuite/std/ranges/adaptors/filter.cc
! 478708e87b892e31651caba269b0838d  libstdc++-v3/testsuite/std/ranges/adaptors/join.cc
! bcc7903b7a89796e9818e9c0116b1435  libstdc++-v3/testsuite/std/ranges/adaptors/join_with/1.cc
! 902f1ee9399b2ed96d885cbcd863a0ec  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split.cc
! e1d466b40d9885d8928dda45157c5f42  libstdc++-v3/testsuite/std/ranges/adaptors/lazy_split_neg.cc
! 2b23cb82c0ae1e6ce4a6e6b7c4f6de51  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3286.cc
! 48328c8f626251645b58f2e0bc1d1b20  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3313_neg.cc
! bf7c03ebee01d59eaf1fa89f586b8e28  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3325_neg.cc
! 60cd2dfcfe3a1d1046302ce0ed742ce0  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3406.cc
! e78df47c8e0f5c4242d92d6380834426  libstdc++-v3/testsuite/std/ranges/adaptors/lwg3715.cc
! ddd799ac1c30d9c11dbaeb456b8f2010  libstdc++-v3/testsuite/std/ranges/adaptors/p1739.cc
! a2b359cd686875e1f3336637607af035  libstdc++-v3/testsuite/std/ranges/adaptors/p2281.cc
! dfdb166ecf980f7c484ece7c109d3dd9  libstdc++-v3/testsuite/std/ranges/adaptors/reverse.cc
! 0e608159bff8b4f63d1a43888c1c05af  libstdc++-v3/testsuite/std/ranges/adaptors/sizeof.cc
! bb6c72f5a2c15d9476c31cdf41e6ab0d  libstdc++-v3/testsuite/std/ranges/adaptors/slide/1.cc
! bd67d76104555a7de62866a1baff7ed3  libstdc++-v3/testsuite/std/ranges/adaptors/split.cc
! 1229ac38c7f1dd6e1799edab32d470de  libstdc++-v3/testsuite/std/ranges/adaptors/stride/1.cc
! f5e5bb8391ba02b0e327a14148fb1ac8  libstdc++-v3/testsuite/std/ranges/adaptors/take.cc
! ef73229904799aeb3dae759b2b1506fd  libstdc++-v3/testsuite/std/ranges/adaptors/take_while.cc
! 24fb3ae41a8df557c3a6d329c76b8bf4  libstdc++-v3/testsuite/std/ranges/adaptors/transform.cc
! 1b6e66801e47197c0377da8fde3b1372  libstdc++-v3/testsuite/std/ranges/cartesian_product/1.cc
! 305712b194a813db5b31eff4849e104f  libstdc++-v3/testsuite/std/ranges/empty_view.cc
! 8d78702ca001ddafb85b0d93417f76eb  libstdc++-v3/testsuite/std/ranges/headers/ranges/synopsis.cc
! fbe0c8c2b69ba1b4bbb1acb0b57446ef  libstdc++-v3/testsuite/std/ranges/iota/93267.cc
! 94a3b2152def8c1b3bf698bfdd494d64  libstdc++-v3/testsuite/std/ranges/iota/96042.cc
! 92bd2e658d724eddc026b928729cb2af  libstdc++-v3/testsuite/std/ranges/iota/difference_type.cc
! b0e801f51482c5128148a84afa8ad1a2  libstdc++-v3/testsuite/std/ranges/iota/iota_view.cc
! 5f4f4d10653c8554eb7abe7448816e18  libstdc++-v3/testsuite/std/ranges/iota/iterator.cc
! c4c9f3c3d7a7e40b3ed559c255d3c4db  libstdc++-v3/testsuite/std/ranges/iota/lwg3292_neg.cc
! bc416748a4db484927c077046830cb73  libstdc++-v3/testsuite/std/ranges/iota/max_size_type.cc
! 2c630e1efad2da1f8f66e2d6e8c02e2c  libstdc++-v3/testsuite/std/ranges/iota/size.cc
! ffd1e161360542a85035e61017a148be  libstdc++-v3/testsuite/std/ranges/istream_view.cc
! 1451ff29f4fda6d96579803764fcc33e  libstdc++-v3/testsuite/std/ranges/p2259.cc
! 1dd70d499650e8ad4637a8c3e7340206  libstdc++-v3/testsuite/std/ranges/p2325.cc
! 6fdbb2b63654acd70477f608bbd22caa  libstdc++-v3/testsuite/std/ranges/p2367.cc
! 64917713313546d047b2ca481245d6db  libstdc++-v3/testsuite/std/ranges/range.cc
! e27e6cc700eea1e8f56568af51b68894  libstdc++-v3/testsuite/std/ranges/range_adaptor_closure.cc
! 52223be05a4253d92d8435166f662346  libstdc++-v3/testsuite/std/ranges/refinements.cc
! f418fc948884e46ba7a08b985ec3c9ce  libstdc++-v3/testsuite/std/ranges/repeat/1.cc
! bdce08f2fd8fced9e4b963933e9a7751  libstdc++-v3/testsuite/std/ranges/safe_range.cc
! 4688551914e08aa4be4428c79a1308fa  libstdc++-v3/testsuite/std/ranges/safe_range_types.cc
! 116d0cf0585a091738f4cd379682ce98  libstdc++-v3/testsuite/std/ranges/single_view.cc
! d8ca7990dfbb17794aaa2cb6f3f9029b  libstdc++-v3/testsuite/std/ranges/sized.cc
  3b43079628213bcfeda0d10685ba810f  libstdc++-v3/testsuite/std/ranges/subrange/1.cc
! aa9b5d321d5828991047eebe29838127  libstdc++-v3/testsuite/std/ranges/subrange/96042.cc
! 3ccf34bd2bf97b2cd71e28104381c67f  libstdc++-v3/testsuite/std/ranges/subrange/97512.cc
  1296c3e0f2c2c6e1cbf08f5653d24b2d  libstdc++-v3/testsuite/std/ranges/subrange/constexpr.cc
! b0d0511fba3555c80fa2d60aef381210  libstdc++-v3/testsuite/std/ranges/subrange/lwg3282_neg.cc
! 2e166bf1580c1e7a5a1d27912b1203fa  libstdc++-v3/testsuite/std/ranges/subrange/lwg3286.cc
! 7bc7369b71669085e15c29a0fc70c3d4  libstdc++-v3/testsuite/std/ranges/subrange/lwg3433.cc
! 62dfabaa87afd998a8749dc6ef82e8ba  libstdc++-v3/testsuite/std/ranges/subrange/sizeof.cc
! aeb9eaadef4893f7af9121e729b30082  libstdc++-v3/testsuite/std/ranges/subrange/tuple_like.cc
! e558156d543990fd7ffedd413e678c0f  libstdc++-v3/testsuite/std/ranges/version_c++23.cc
! 6cd4bc58902113776271473a39e74ec7  libstdc++-v3/testsuite/std/ranges/view.cc
! be195a164d7b231d7be0ceceab7d53c7  libstdc++-v3/testsuite/std/ranges/zip/1.cc
! 2f16a173debd2e7c50247b158bd4cbf1  libstdc++-v3/testsuite/std/ranges/zip_transform/1.cc
! ee7652ea42e5031327abb4f8315facae  libstdc++-v3/testsuite/std/time/clock/file/io.cc
! de019e281cdaf6075e762790102dc210  libstdc++-v3/testsuite/std/time/clock/file/members.cc
! 345478b5ce7c143f57ec487df78d136d  libstdc++-v3/testsuite/std/time/clock/file/overview.cc
! 17f8bff974757122a65883e7c33d9d80  libstdc++-v3/testsuite/std/time/clock/gps/1.cc
! ee3357c7e618ae304cc7c077ad99250e  libstdc++-v3/testsuite/std/time/clock/gps/io.cc
! 49612e52ca75c4984719066184c838f2  libstdc++-v3/testsuite/std/time/clock/system/io.cc
! 001b9c894be15711431b32cf6934f07e  libstdc++-v3/testsuite/std/time/clock/tai/1.cc
! 4581186923bfee1ff082d1623439b7b2  libstdc++-v3/testsuite/std/time/clock/tai/io.cc
! 7e3e7a495e0c19958f10682f7b49296d  libstdc++-v3/testsuite/std/time/clock/utc/1.cc
! d7a2ab596a1b06482b061042f5198b80  libstdc++-v3/testsuite/std/time/clock/utc/io.cc
! ff09d6a4a1def92f6d35e9fe30514c86  libstdc++-v3/testsuite/std/time/clock/utc/leap_second_info.cc
! 0a3070814d79652e6b1fe27f7015a3ac  libstdc++-v3/testsuite/std/time/day/1.cc
! 3234fda9c7db00142a0a6e1c968827bc  libstdc++-v3/testsuite/std/time/day/io.cc
! e59bae3ab8463e3865786e0a60bdd79a  libstdc++-v3/testsuite/std/time/exceptions.cc
! e340d9c94f55b0de854ab174c7b77be1  libstdc++-v3/testsuite/std/time/format.cc
! 41f97e07a76cb7a65bc750e893046837  libstdc++-v3/testsuite/std/time/hh_mm_ss/1.cc
! d285919b86280431458a01fecc206b78  libstdc++-v3/testsuite/std/time/hh_mm_ss/io.cc
! a065073fed0dc7a95626c6b2486f9c90  libstdc++-v3/testsuite/std/time/is_am/1.cc
! 934d22cca880b0654a2f723d66d222c5  libstdc++-v3/testsuite/std/time/is_pm/1.cc
! 1aa818c227a28fca2d3c2e546b6014d6  libstdc++-v3/testsuite/std/time/make12/1.cc
! 87596ab8b1810f739b3d2c858bfda056  libstdc++-v3/testsuite/std/time/make24/1.cc
! 6d13629702dec4ce25a5515a54a2cb12  libstdc++-v3/testsuite/std/time/month/1.cc
! c263683a0a820e1160b863dab1f8b4bb  libstdc++-v3/testsuite/std/time/month/io.cc
! 1fbdb236aee5632defb6a49d0a7f2343  libstdc++-v3/testsuite/std/time/month_day/1.cc
! a55cb85e3f700d5c08d894894bcbf732  libstdc++-v3/testsuite/std/time/month_day/io.cc
! 06d533d7768fc8578d8eda6d088e4d80  libstdc++-v3/testsuite/std/time/month_day_last/1.cc
! f8137cf2b7268deca445b608b724582f  libstdc++-v3/testsuite/std/time/month_day_last/io.cc
! 30329d39dbdea7d9e594efa4ec789ca8  libstdc++-v3/testsuite/std/time/month_weekday/1.cc
! 3871c80ed0308e9fce0afefa2705ad05  libstdc++-v3/testsuite/std/time/month_weekday/io.cc
! 71b488ba190e1fd6939837bf46203724  libstdc++-v3/testsuite/std/time/month_weekday_last/1.cc
! 8b41016f0391e12fce69c8a18b514136  libstdc++-v3/testsuite/std/time/month_weekday_last/io.cc
! 27e853caa7b6fdb3f25f35a90139dbaf  libstdc++-v3/testsuite/std/time/syn_c++20.cc
! ac082744b5a33ad2dcb6eff594cf3d6f  libstdc++-v3/testsuite/std/time/time_zone/get_info_local.cc
! 678f61b38f9d54cc6d494cbe2b1ddcb2  libstdc++-v3/testsuite/std/time/time_zone/get_info_sys.cc
! 61384ef28db3a8798c62cac5d1d159f0  libstdc++-v3/testsuite/std/time/time_zone/requirements.cc
! 75d0e4e06ccb5ac2db3d6835ab3af815  libstdc++-v3/testsuite/std/time/traits/is_clock.cc
! 0d9016886ac8724855b531f459418ee9  libstdc++-v3/testsuite/std/time/tzdb/1.cc
! 5a22aa736979185867e205d90f4958eb  libstdc++-v3/testsuite/std/time/tzdb/leap_seconds.cc
! 017128485d4a5d97449c74cacee711c0  libstdc++-v3/testsuite/std/time/tzdb_list/1.cc
! b2c3486444c7d0802d426b76e32fd654  libstdc++-v3/testsuite/std/time/tzdb_list/requirements.cc
! dadc3869fe5d7d3c56bdcfdcecd6afce  libstdc++-v3/testsuite/std/time/weekday/1.cc
! f95d58231c9339ff36200d9e92765348  libstdc++-v3/testsuite/std/time/weekday/io.cc
! 642869ce92d47849ba692534f16ca9b1  libstdc++-v3/testsuite/std/time/weekday_indexed/1.cc
! 566653ecac04b9b7a4fb0d9d16bd24f8  libstdc++-v3/testsuite/std/time/weekday_indexed/io.cc
! e85706a5d088f27116f5313bab867832  libstdc++-v3/testsuite/std/time/weekday_last/1.cc
! 5f7a4e4cd05140c68efc33aab7a3dfbd  libstdc++-v3/testsuite/std/time/weekday_last/io.cc
! 2f522b2d1539ef4d4c5830b531383128  libstdc++-v3/testsuite/std/time/year/1.cc
! b4b5555eed9f72e596d8a47999c8c22a  libstdc++-v3/testsuite/std/time/year/2.cc
! 7fb9ca3717478c0ad0785144b32a2eac  libstdc++-v3/testsuite/std/time/year/io.cc
! 7007e8b8d8525993a75f7579ea2df82e  libstdc++-v3/testsuite/std/time/year_month/1.cc
! 42f6d1ee26de877196c319656c04d2be  libstdc++-v3/testsuite/std/time/year_month/2.cc
! 96a5d4378aff8aba076297e13844bd8f  libstdc++-v3/testsuite/std/time/year_month/io.cc
! dcf0c2c567cc3e430a238302b4a54311  libstdc++-v3/testsuite/std/time/year_month_day/1.cc
! 129d33645a33168bdf2fd41ea190d6c7  libstdc++-v3/testsuite/std/time/year_month_day/2.cc
! 51be2d08488e21c716ad13896b4096c9  libstdc++-v3/testsuite/std/time/year_month_day/3.cc
! 7c4a781d2180605515afd61852d8da8e  libstdc++-v3/testsuite/std/time/year_month_day/4.cc
! 06b10a26f0594d9a9ae8c53a97016b05  libstdc++-v3/testsuite/std/time/year_month_day/io.cc
! 56115e8f7ded83190b923d482cee7547  libstdc++-v3/testsuite/std/time/year_month_day_last/1.cc
! a1ed8b68cdfcdb0dc062a4188ce8089e  libstdc++-v3/testsuite/std/time/year_month_day_last/2.cc
! 192de95caad18b1d43f6bb426673e66e  libstdc++-v3/testsuite/std/time/year_month_day_last/io.cc
! 59f5e3a26d088b2572b275760e6eb6f4  libstdc++-v3/testsuite/std/time/year_month_weekday/1.cc
! a28a57366dd5cc54848fd6ed5db6aac8  libstdc++-v3/testsuite/std/time/year_month_weekday/2.cc
! 3072dc16557cfa068725f8eb64cd1641  libstdc++-v3/testsuite/std/time/year_month_weekday/3.cc
! b200e472d215b490fa5c593ea10ba637  libstdc++-v3/testsuite/std/time/year_month_weekday/io.cc
! ed486cc2e31c6afcdde6ef9f6c13f745  libstdc++-v3/testsuite/std/time/year_month_weekday_last/1.cc
! 15b706df86afb798c79dd4393c23886e  libstdc++-v3/testsuite/std/time/year_month_weekday_last/2.cc
! 73dc43c0f73dbf82ea1f2c0272d4f4ed  libstdc++-v3/testsuite/std/time/year_month_weekday_last/io.cc
! 30bc9b2fd2b40e8027fe0054e4a38fe7  libstdc++-v3/testsuite/std/time/zoned_time/1.cc
! c5b4f50004a5d67e4537e73a7737a3b1  libstdc++-v3/testsuite/std/time/zoned_time/custom.cc
! 189c09d558551ffe49e3d2dc9834b8a4  libstdc++-v3/testsuite/std/time/zoned_time/deduction.cc
! 2efed5bb6e9bdea0ea3cd7fb040c1711  libstdc++-v3/testsuite/std/time/zoned_time/req_neg.cc
! a486e4fae5e727ed071c66c4751798e5  libstdc++-v3/testsuite/std/time/zoned_time/requirements.cc
! 2e901ad2401971034cd40a777684dcf6  libstdc++-v3/testsuite/std/time/zoned_traits.cc
! d7ca6a93cc03cd5a7c6b3c616eb1e735  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/1.cc
! 516295413cb21d660f9eeb4a09fd27d1  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared.cc
! 6b410f755929c32a4947d9ed1ddfd080  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared2.cc
! 96ccadcd492b8dfb12482ddcabfce561  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/not_shared3.cc
! c0e1cfaec7bf7711ebeef70de5f51b69  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/requirements/explicit_instantiation/1.cc
! 894fed7dd62125a853143602113cd160  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/shared.cc
! e8304fbe33a9a6f92d148c9a2b1e620b  libstdc++-v3/testsuite/tr1/2_general_utilities/enable_shared_from_this/still_shared.cc
! ef313ebfbee2281c66296822f90192f0  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/functional/synopsis.cc
! 664e251cfed606d01c919572511a6ed2  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/synopsis.cc
! 7b54dee90203d2c144a981334365c230  libstdc++-v3/testsuite/tr1/2_general_utilities/headers/memory/types_std_tr1.cc
! f1f91927e23772f2054723e01d8c857d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/assign.cc
! 6f8781d4af6d68a452cde9064ec12714  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr.cc
! cec82870839525eb5658add1924567b1  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_neg.cc
! 1c576eb2c7e9dd7dc71c6f3b14a0a2e7  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/auto_ptr_rvalue_neg.cc
! c2f975ad8b298614b2a02d3404921ca6  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/dr541.cc
! c449530d31e96ee57de16ef70a3ca143  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr.cc
! 46d1a6f222acfc0b08614bad9fbe1f24  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/assign/shared_ptr_neg.cc
! abade16994fe246d5046d34f3c00c84c  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/casts/1.cc
! 12aeba3326e14db25e04bcf1d4dd2f30  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/comparison/cmp.cc
! 27e0c8430c392cba7752529ee0b9755e  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/39405.cc
! d3932dcac0c20361e2c7678921a72fe4  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/43820_neg.cc
! af2592ea13a8943370750f025e398bc4  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr.cc
! a2983948c76baee7a53b032f5455b23d  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/auto_ptr_neg.cc
! f41bbee3c555a06c20cd8086680a23ab  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/copy.cc
! 56cd79cd41bd4858d67251f0bb63e578  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/default.cc
! 1065d8b5731abfaeabdce4a885228982  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/pointer.cc
! 923b63c2421e739ae1620dc60e53fdb5  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr.cc
! 13d73c3c612391941e40b63ebaa912a2  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/cons/weak_ptr_expired.cc
! 77f2ed2edc91c2483b5453e125f0d14a  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/dest/dest.cc
! 46a5811001f5f32473fb748decaa764a  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/24595.cc
! 4e58dd416b6482a632a9522cf81d57d6  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/42019.cc
! 7d966fe04cac2a9ea97396f4ac194f4b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/io.cc
! 4b67f28e14faae49e3538376ae1587ee  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/misc/swap.cc
! 9560f060f48d0503407fc3b53f5bf1ab  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/24805.cc
! 2f436b70b0ddbb26cd075e115d6e2563  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset.cc
! c30a15ad02718074d49968606e90a1a4  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/reset_neg.cc
! 0586310387e8c2d2d14f37719129439f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap.cc
! 6064d1948313720e71ce4ce1de968f5f  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/modifiers/swap_neg.cc
! 8d291d61332258757183f82ccf5e8f77  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/bool_conv.cc
! a879d038e5f4e10a5ff19448cb5a1123  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/get.cc
! 4c81646fdf5ac46afd7da9a2b0c6e9be  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/unique.cc
! 79fbc8c404c624aad6a676cb45643fd0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/observers/use_count.cc
! cf1dd71985586872f51b82dd79ba2c08  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/1.cc
! 28aa72be30d9a488f5a48d3bc3c5cb5b  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/requirements/explicit_instantiation/2.cc
! 73dbfc3a00338771ce8a5ff6c40689fc  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/default_weaktoshared.cc
! 2b70e8a6cca47b0153eb227c4188f4d0  libstdc++-v3/testsuite/tr1/2_general_utilities/shared_ptr/thread/mutex_weaktoshared.cc
! 97c8bdee72d689b207f23e6750d3f183  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/lock/1.cc
! db56b659ddd4e9b8374a03187c193a47  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/1.cc
! 700eb6f4ae4b84e882ecea02d51b32e5  libstdc++-v3/testsuite/tr1/2_general_utilities/weak_ptr/requirements/explicit_instantiation/2.cc
! 0bbfd9f5acf573228176ea0b0586f317  libstdc++-v3/testsuite/tr1/3_function_objects/bind/all_bound.cc
! 7625d7d2914bf9829764de25943f930f  libstdc++-v3/testsuite/tr1/3_function_objects/bind/cv_quals.cc
! b329a4ffbb1459c7b5cc3674592fb545  libstdc++-v3/testsuite/tr1/3_function_objects/bind/mixed.cc
! 4b25c7707fac2bd8dbe3490ea9cf5cf8  libstdc++-v3/testsuite/tr1/3_function_objects/bind/nested.cc
! b45512258787cd927cc2eed04faf037b  libstdc++-v3/testsuite/tr1/3_function_objects/bind/placeholders.cc
! bc2e512fd62be53d4ba973f8ae636af7  libstdc++-v3/testsuite/tr1/3_function_objects/bind/ref.cc
! 4cd03407f4b7863ad313c98b3bc309d6  libstdc++-v3/testsuite/tr1/3_function_objects/function/1.cc
! ec76ae3fd812dab108d1f4b7f0a1982c  libstdc++-v3/testsuite/tr1/3_function_objects/function/10.cc
! 2a887cfa7ef611418ddd51198b39647e  libstdc++-v3/testsuite/tr1/3_function_objects/function/2.cc
! a112204ee12ee2cb8f5f8655eb561419  libstdc++-v3/testsuite/tr1/3_function_objects/function/3.cc
! 48512e2d6dfb7b636008106237c8ab7f  libstdc++-v3/testsuite/tr1/3_function_objects/function/4.cc
! 6e35037e7be81e84bab8df46d9ea27da  libstdc++-v3/testsuite/tr1/3_function_objects/function/5.cc
! b4332eb9a831a35ab9418f70ae99c4e1  libstdc++-v3/testsuite/tr1/3_function_objects/function/6.cc
! 64f76d67310eb4dc25b656e2ff45165e  libstdc++-v3/testsuite/tr1/3_function_objects/function/63840.cc
! 4e8dc7db0420979db6604a6550dc0018  libstdc++-v3/testsuite/tr1/3_function_objects/function/7.cc
! a77a2b7d2c2f4b8b94bc82d3767bf8e2  libstdc++-v3/testsuite/tr1/3_function_objects/function/8.cc
! 016c6192314d947532a8f4715df205f1  libstdc++-v3/testsuite/tr1/3_function_objects/function/9.cc
! c941cdb0af36a1890b63d4654a6e5b5c  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/synopsis.cc
! 15f4d9d8a87296e153cc44e4a9913316  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/types_std_tr1.cc
! a51ef0e2844b08dd909a1842f60351f4  libstdc++-v3/testsuite/tr1/3_function_objects/headers/functional/using_namespace_std_tr1_placeholders.cc
! 5992bd801260cebae60aec2bd0747edc  libstdc++-v3/testsuite/tr1/3_function_objects/mem_fn.cc
! 77c274da6e3094bdd1759c71c8738e11  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/invoke.cc
! f6f2f6d2cc412a2848213356990d7de5  libstdc++-v3/testsuite/tr1/3_function_objects/reference_wrapper/typedefs.cc
! be8f3b9516c76fb11636526edf56f78b  libstdc++-v3/testsuite/tr1/3_function_objects/result_of.cc
! d12c52e98fd6e241754c770ebfb8a19d  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/requirements/explicit_instantiation.cc
! 59ce35a1ab4e063a41dded3b65ea1ed3  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_const/value.cc
! 9d61f296fb78f27f664e284c434bc3ae  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/requirements/explicit_instantiation.cc
! 4c0d80f2e48e35dea92993dafea80f1d  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_cv/value.cc
! efa10b23e467d07ce4839170968f8824  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/requirements/explicit_instantiation.cc
! 02dbd9075544ea84a8e6e77ed3634400  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_pointer/value.cc
! 7a1529b49f2bdc4b25106cb73e87759f  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/requirements/explicit_instantiation.cc
! f5d64769bd7521424646d2fbb9db27c9  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_reference/value.cc
! 45ad9d36cebc63e6ef4dd7d348076686  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/requirements/explicit_instantiation.cc
! d949890eccc3b8737992c768f31e0451  libstdc++-v3/testsuite/tr1/4_metaprogramming/add_volatile/value.cc
! db325f496690394b19df06a584631d37  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/requirements/explicit_instantiation.cc
! f0db38bc118677efb79730bce24399f0  libstdc++-v3/testsuite/tr1/4_metaprogramming/aligned_storage/value.cc
! 296c0e64a909164d390294724be80d2d  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/explicit_instantiation.cc
! 8f397b6d7156d1d0e8e7044f96524f4d  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/requirements/typedefs.cc
! f63f4208d68cb0ee06c83024adab21b2  libstdc++-v3/testsuite/tr1/4_metaprogramming/alignment_of/value.cc
! d64ba054a51bd38c0346743435ae61d5  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/explicit_instantiation.cc
! eea957d8b8577144656065142be41ada  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/requirements/typedefs.cc
! 2bddffb5f6e6dcebe9367874ec19cc20  libstdc++-v3/testsuite/tr1/4_metaprogramming/extent/value.cc
! 10618fa3bcb950560c53ba8da3dc4841  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/explicit_instantiation.cc
! b7c0bba36977843acb5ebbe462052413  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/requirements/typedefs.cc
! eeb34d1fc252f812a97bd2109a404245  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_assign/value.cc
! 864b59c64bd129c27be132d90e49b13b  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/explicit_instantiation.cc
! b9695361b4aa2ead2f9e24d1bbbf77df  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/requirements/typedefs.cc
! 3c0efe0c4e11409eb70ec3a5c946f993  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_constructor/value.cc
! 22e533a9c98ae4e1440d66ebcb1f4250  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/explicit_instantiation.cc
! ffa0fc22d0ca3703d37f1a814fc59fcb  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/requirements/typedefs.cc
! 99f1ad057e3564c171e58526b757aa78  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_nothrow_copy/value.cc
! 3a97856e44d000c5e1687fd68e3efe64  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/explicit_instantiation.cc
! bb0adf82ea06bc19035679f84e353b63  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/requirements/typedefs.cc
! e4d4eb40f589190d047dd0cae974c37a  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_assign/value.cc
! eab0ab5948f4167eef67166641d17a2d  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/explicit_instantiation.cc
! 71bb8b9996efb6e71e9390bfcc8c243f  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/requirements/typedefs.cc
! c85566579ba82e0b79bbd07dc8e26642  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_constructor/value.cc
! 9e6aeca60b592cc6ea166a6d7f4f14b6  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/explicit_instantiation.cc
! ca62bf1607e261b5d067b118ddd475fa  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/requirements/typedefs.cc
! f12aaf6f19d3e30f4b31ea44c462f035  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_copy/value.cc
! 1746c810ffab2998622e2e540032d1df  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/explicit_instantiation.cc
! 49a28a225ea2edaab5220d53251dceb9  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/requirements/typedefs.cc
! b9112bfd6a1c035fc1305643fa07d2b4  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_trivial_destructor/value.cc
! 32c078359c347cc319407e498eb1dcbb  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/explicit_instantiation.cc
! def810599466fda4906b10a4efefd70b  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/requirements/typedefs.cc
! 1f14870b273c4bbed0c01b0746b5ac64  libstdc++-v3/testsuite/tr1/4_metaprogramming/has_virtual_destructor/value.cc
! b867b6a63938a204fc1ffa5c1995e958  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/synopsis.cc
! a0cd6599cbe46b23d5bc7b02081a8075  libstdc++-v3/testsuite/tr1/4_metaprogramming/headers/type_traits/types_std_tr1.cc
! f7646533226800152382b756074c43fc  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/explicit_instantiation.cc
! 0b8684bc204fc375d6011083b60f6811  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/requirements/typedefs.cc
! 48abb4c9638c0052645e20a869166aea  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/static_definition.cc
! e83299ccea52c57ff338a421cfb9d172  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_type_typedefs.cc
! ed03dfdc5c8de3dc5a70044f3666307d  libstdc++-v3/testsuite/tr1/4_metaprogramming/integral_constant/true_false_value.cc
! 3d3fbdd48bef531951122f21907f4abe  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/explicit_instantiation.cc
! 1f97264398baf675cab4cbc6cac0a522  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/requirements/typedefs.cc
! 5bf34a6a4946e5f4ac30724016a7d5ab  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_abstract/value.cc
! 6bab0215e37bb648b73f4c3b9f9cca85  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/explicit_instantiation.cc
! 0460b233a9c35d86698963c582966c20  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/requirements/typedefs.cc
! 74159d38a1afb81c7fe9a0d7a2068b7d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_arithmetic/value.cc
! 6ecd213a18633a20f1c10eaec132d418  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/explicit_instantiation.cc
! 2cd0b7aad8982adf8b6c95394f2372e6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/requirements/typedefs.cc
! 3829fd90f7270b36c7d0414100e44375  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_array/value.cc
! 1a52d97d8289607fea76f164d2169967  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/explicit_instantiation.cc
! 872ff60a21345e69b9aeb3780422318f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/requirements/typedefs.cc
! 35e2e6972229b01531b16bba8d622224  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_base_of/value.cc
! 5606116775306feb54d8ba4ffa4c1378  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/explicit_instantiation.cc
! a94701dbe5bbe00d8e1c033c4a6e72f2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/requirements/typedefs.cc
! 13d31924663a1bb2af71a21e29d6a3a5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_class/value.cc
! d53e9d22158fb20f1ca07b9be51ed59b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/explicit_instantiation.cc
! a6df92a65a1e0c8eb7e97fe3182d8aa5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/requirements/typedefs.cc
! a0a1f61f890f35a9521977906a1788bf  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_compound/value.cc
! 2936d39c65516c5f495beb8a5b1858a0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/explicit_instantiation.cc
! 4f2f3cdd09b754012589f11bcf2e23fd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/requirements/typedefs.cc
! 6f4f7c16a1a42724fe3bcbec32596b5b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_const/value.cc
! 73e765be87054e9a6fae570f4807e74c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/explicit_instantiation.cc
! fae1abe250bb63c793fa84ff804455d6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/requirements/typedefs.cc
! e9a548d5c7ca087406c13875327d0d0f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_convertible/value.cc
! 52bdcdd3d4e56ce81a7b8783fbd78f73  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/explicit_instantiation.cc
! 43e976bba68e0a3afd85ba0f35e3eaea  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/requirements/typedefs.cc
! 2903ad503ff626924fa16204d10e0ea8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_empty/value.cc
! 9f3bdbb6d5a29ddc3497a9922d1faba4  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/24808.cc
! fda35e44756aaddad4b81c351303e5fa  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/explicit_instantiation.cc
! b125958aae29314762c09372a496dd51  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/requirements/typedefs.cc
! 2014e601c46d3f0988fc027987d025a6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_enum/value.cc
! 11d3c2705b65848dc71e2bee7dd43b27  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/explicit_instantiation.cc
! fbe955d676fcbce104c3bfd93b8def20  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/requirements/typedefs.cc
! d77806db75717cf75df7cea7fb6c6bcb  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_floating_point/value.cc
! 1c73d86079c79378f439d389d1bc933e  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/24808.cc
! 8f6e330a1a7a15489b1fe56894c90677  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/35637.cc
! b334c07c9c3ecbddae0d8ac32d3b2fc2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/explicit_instantiation.cc
! ebcc13b7efd9a456aba172e8ba758f48  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/requirements/typedefs.cc
! ae8300f652e8b2422d48bdd9e1ec05df  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_function/value.cc
! c7f02b3cf4172f430037047e447f6e2c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/explicit_instantiation.cc
! 936988ed410897ed9fcce17c056b3344  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/requirements/typedefs.cc
! d5d81580e917bdb1336da3d4c9e3250d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_fundamental/value.cc
! 8c7b72ccbf7b2e05816132220906c29a  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/explicit_instantiation.cc
! 5dd3011cd80272986f9b5f0bc9950206  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/requirements/typedefs.cc
! 61f2a66fe9d4152d6cafcc8229b380dd  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_integral/value.cc
! 6c7707ac99b444ad0ca1c3c59c34f760  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/explicit_instantiation.cc
! e044c3eeec726745ad5d5dbf17ccf366  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/requirements/typedefs.cc
! d1556ea7978bc0283285a508b737fa95  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_function_pointer/value.cc
! f5a27796c7a058151c82ecb2594ee148  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/explicit_instantiation.cc
! f9b2a6102f091899b922615fe90b3550  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/requirements/typedefs.cc
! 852bb338908c0a16942657462df77d92  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_object_pointer/value.cc
! 37437d916eeb5ff0e303a5ce8ce1e82f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/explicit_instantiation.cc
! 0f484a1d470b7c6e646cea38237553c5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/requirements/typedefs.cc
! fbf173442b216764573497f045b6f0c0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_member_pointer/value.cc
! 26297aa442c9afb50a604fea3dc13c48  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/24808.cc
! 986f74c6d3591d6b18f8c4155b3ad9b1  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/explicit_instantiation.cc
! ba393c0110db762ddcfd05e961b0ebc8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/requirements/typedefs.cc
! 56e2f73fd29621f2c2f68188d292bb13  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_object/value.cc
! 16fc1af4ed368249b8811c48ea9c746d  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/explicit_instantiation.cc
! b762d620d355a25aa81f1436c4d53cad  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/requirements/typedefs.cc
! fd3c0181ff9c6a5a65d36582aac6968c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pod/value.cc
! 1a688631706117537a84f14e6b17e44f  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/explicit_instantiation.cc
! 8e360df4f7499439da0054f39c6ad397  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/requirements/typedefs.cc
! f635f783d465bf2d099d5361303ceba0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_pointer/value.cc
! 7fe5b9b5f849f6b4bd360576c5c0763b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/24809.cc
! 9446cfcee32ccb5b909d5aecdc7feb92  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/explicit_instantiation.cc
! 354c14e23dd18050985dfa8d52a0a960  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/requirements/typedefs.cc
! f1b8be82621cd705de83b1788f948fcb  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_polymorphic/value.cc
! d37cf7310d9cb464c89135a87a452b84  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/explicit_instantiation.cc
! 44117f44629764742fff6acb00459649  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/requirements/typedefs.cc
! 3817a4760e9c560736f2b2fa5809fbe0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_reference/value.cc
! 4c502a778b7c1df10e1dd6529265fac8  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/explicit_instantiation.cc
! 91224c14eb5518832d2a1369eb75fa39  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/requirements/typedefs.cc
! 39ae206826bdea27c70c95404dd0b0e9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_same/value.cc
! d5247058c4f4e43312ec301c9d12efc2  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/explicit_instantiation.cc
! c862d53c241557c1936bfed8f5be0182  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/requirements/typedefs.cc
! 447c5fd2dd9409a5c9b0a42603bbde8c  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_scalar/value.cc
! 4155086863a3908645bf3e28a52bace7  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/explicit_instantiation.cc
! 568a9d4968300b10878a185b6639a27b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/requirements/typedefs.cc
! 18ac313a8fac2248e0aa8f7fe09e8592  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_signed/value.cc
! 05ea7acf6af27d2cde05cbd503100d88  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/explicit_instantiation.cc
! 4f2a20e7bd6d7ec27487c57f66941fd0  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/requirements/typedefs.cc
! f463db6cca7a3006a39bc1dedf2a869b  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_union/value.cc
! 9a72ec6ee99f2968fb7d7e889a5fff08  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/explicit_instantiation.cc
! b3b3ee4cacd57c029673d3ad074d6c50  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/requirements/typedefs.cc
! bd566b9142e856005a5dca71ced526a9  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_unsigned/value.cc
! ec3b7acc792777fe06a22935174d8aec  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/explicit_instantiation.cc
! a69c458821ce3fe494000e66a2c3a2a6  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/requirements/typedefs.cc
! 20b4af4a0adea1e42c87d147554ceb13  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_void/value.cc
! 5dcb529cf3ce982f211ba95ed7229964  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/explicit_instantiation.cc
! 2201e138e16867cd909db31e8b0679a3  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/requirements/typedefs.cc
! 9e74a720bfd83bb24816359eef835dc5  libstdc++-v3/testsuite/tr1/4_metaprogramming/is_volatile/value.cc
! c5405bb3a9b6e234a68a9f24db9e9b79  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/explicit_instantiation.cc
! a25c42207af1741dced435c9b0132073  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/requirements/typedefs.cc
! 2726e6ea91e7d68560320fe86982f9e8  libstdc++-v3/testsuite/tr1/4_metaprogramming/rank/value.cc
! 66be288edf4f953e69fd3e832a881218  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/requirements/explicit_instantiation.cc
! e02e679d493c78d9fb9e07216635d4db  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_all_extents/value.cc
! 8fc12f2d0502bc90d7dcdb09ab602b34  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/requirements/explicit_instantiation.cc
! 9e1d6d68ec9ab9e1aeffafa418a9df8d  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_const/value.cc
! 94ab72d15b5fa848b5fc09734f7a718d  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/requirements/explicit_instantiation.cc
! 207c7ed2926339accc71246913a32c8f  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_cv/value.cc
! 12d4e39971be2da5b012115e5a1682a3  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/requirements/explicit_instantiation.cc
! 40737e17f150c0bc9604add5e535edb8  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_extent/value.cc
! 8f9e024723e466c6fba482c60c7240ec  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/requirements/explicit_instantiation.cc
! 4f8565edca2321b287f2dea9fb2d723e  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_pointer/value.cc
! b12f208a35de58ce8ab07cf0dfc3f56f  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/requirements/explicit_instantiation.cc
! 349857a8837c4dd1b5b43547e3404120  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_reference/value.cc
! 9ea3cd2a00ee0234886a66d2bf82baea  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/requirements/explicit_instantiation.cc
! b46729c61f05f0a167fef467530dea16  libstdc++-v3/testsuite/tr1/4_metaprogramming/remove_volatile/value.cc
! d52f7c9d20dab52ba73ce8220d535729  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/synopsis.cc
! 1f795037976540dee63d356d17f9afe7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/headers/random/types_std_tr1.cc
! c993b23ffdd54888f22047e500865667  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/bernoulli_distribution/requirements/typedefs.cc
! c97e6cd462dddd34eef1854c8c7d6432  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/binomial_distribution/requirements/typedefs.cc
! d7a8c7d5eba720981b0b1de95293ad93  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/equal.cc
! f1a7d1e9239691fd36bd36722e6eea24  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/not_equal.cc
! 69c5aea7e124b50a5c984c30e1371c23  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/operators/serialize.cc
! 18a464b7c316af8e4e840e7eda8154cf  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/constants.cc
! 82d62ed2677f7ef23251ed2a8ffb9bb9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/discard_block/requirements/typedefs.cc
! 1073c68ab6643da5cd8539e86938a723  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/exponential_distribution/requirements/typedefs.cc
! f14ec4c2197214e7e9015b08845dd0ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/gamma_distribution/requirements/typedefs.cc
! 69039560fbbaf6412f508025de31464e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/geometric_distribution/requirements/typedefs.cc
! 2e3d7e26f3cf348cb625e4268ea95a73  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/default.cc
! 9ea719c8878747a1524591ac0f37b044  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/gen1.cc
! bd77a861dcb65ffc002a3a68ef1cab1d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed1.cc
! 5a1955ba319164dc71002d42676286c0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/cons/seed2.cc
! 0c19a9de03f899d71beae92ab3fdb023  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/equal.cc
! dd29a7f37c42724335d0543b5058ab28  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/not_equal.cc
! 3837f37806390e5860ca2ab3cd03bb60  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/operators/serialize.cc
! 14d35b1254f2f3b44f81c5cf98dad00e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/constants.cc
! 10aab7e1929ebeb80d3d4792194b2095  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/non_uint_neg.cc
! 9e81bb809b2a809212dd1f015a831e5c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/linear_congruential/requirements/typedefs.cc
! 7429df71913da369e394dbd81b915ad6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/default.cc
! a17019f62c5ffaf9f409f472d979c2c8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/gen1.cc
! e323fddb755a0e511f514214e829665d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed1.cc
! 00d5b3cfc91265581e45663c5a98d951  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/cons/seed2.cc
! cb238676f11d50b6699f14dfd99d3366  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/equal.cc
! aa664367cd299cb25e4f78012d40487c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/not_equal.cc
! 760b7333a868c3ae22ae0d8028aafb96  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/operators/serialize.cc
! 547e4a9a65fc0861f3cb49f7c015229e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/constants.cc
! 16537a877d5284d1f974403f81172e0b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mersenne_twister/requirements/typedefs.cc
! 2c8b7768e9f6beef6b5b777de5a526d0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand.cc
! 825c591884f193fa2ed73873cb0e290c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/minstd_rand0.cc
! a289c5c90ce84fa43f50198c639ecec3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/mt19937.cc
! cae52f0eb3b5acfb8289dae9ece14379  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/normal_distribution/requirements/typedefs.cc
! 89235830bc4c2000c724b37b1859027d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/poisson_distribution/requirements/typedefs.cc
! 9f3feeede2895220f5addd6ab3787ba5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/default.cc
! 93953db6d4e341588c3e6b02ed2e7056  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/cons/token.cc
! 4d7bf92687f6a32f3296049f4f899009  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/random_device/requirements/typedefs.cc
! 27c500d4f5a5d077e015712ef6602799  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3.cc
! e76d2971777c6ea4427de9e18f7c099b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux3_01.cc
! af1103c2980fbbf0a8c0620700937cbe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4.cc
! 61b255c7d10f078f6af248cf1a344167  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/ranlux4_01.cc
! 018e0800618ab9a25d85d6bf4fbdb258  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/default.cc
! 3d988c6690b9263ed8b725c49a590b0a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/gen1.cc
! d2a2af71204713457cc524cbeee9280b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed1.cc
! 7ed1f634f553c2176a61233b0d894970  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/cons/seed2.cc
! c8bcb8015b93c66d4b487dbaf837984a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/equal.cc
! 89931a151feb7dd0c5a6b7267fb009f0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/not_equal.cc
! 00dcc79ef422250223e2ed7cc66ca96f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/operators/serialize.cc
! 906d850517696657476465fc30f5f3ba  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/constants.cc
! 3465c9d316d17a9274a72753d2fa2945  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry/requirements/typedefs.cc
! 90950300d35a35dd9171c63c92a946f5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/default.cc
! 0b908d4e61fa4408a68f8a4cd507b7e5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/gen1.cc
! e98e9cd7c687ae3af947ab162ab1b4be  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed1.cc
! c82cf295058b0bc8ee6330e305a8067c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/cons/seed2.cc
! 59c8c6fe5cf848cce47c41ad96310764  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/equal.cc
! fa59195b0a564413347e1d3cf2e91ab6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/not_equal.cc
! dc64b888a543848688a5f30393be3a02  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/operators/serialize.cc
! b12207b3cdb637241a191daa034b76d6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/constants.cc
! 66118337a7068252273af7bd0aa575cc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/subtract_with_carry_01/requirements/typedefs.cc
! 836b1eaab79858d55e57070f21df6cab  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/33128.cc
! 3a9bcdd570878f2257ec117b31a513a4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/default.cc
! 7106cf18c6aede08e4d319c8e3e659fb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/cons/range.cc
! c697870ae4962854731738cff41b34ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_int/requirements/typedefs.cc
! 4af0c80ade2677b3592cf9e52f3f0e38  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/uniform_real/requirements/typedefs.cc
! f0c51a03506f67d413278eb0309e5c35  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/37986.cc
! 22b921b81fbd7d878cafef8993557619  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/variate_generator/requirements/typedefs.cc
! 501aee062bcee1c5ab0ad737a676f82d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/cons/default.cc
! d3b41bb05fc0daa1852afcba6810f072  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/equal.cc
! f7b81062c5a438dc7b42978d62c0da61  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/not_equal.cc
! 82d9ebcd0c4d4eb4797f9f71d6d550eb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/operators/serialize.cc
! 9b1c0830c72084f07de5f608f113a3a2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/constants.cc
! 7a453c0fbfaef2c3d4ea35d06738bc92  libstdc++-v3/testsuite/tr1/5_numerical_facilities/random/xor_combine/requirements/typedefs.cc
! 15b6b02579b69a89c95416cb4fa1ffe5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_nan.cc
! 8f94ddf365e720a83ea27046e9fe0086  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/check_value.cc
! 1836708cc832ef7ff41a58896a081c48  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile.cc
! 667d386f40eafb26dcb3e2d47f1f6388  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/01_assoc_laguerre/compile_2.cc
! 7b65db7a6ce96ab4aba766cc555cafb6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_nan.cc
! d0689cc0b0c28b4fd17d62e3b14dcb9d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/check_value.cc
! 461a154eb8508e5d7c07c6fd0f30dcbe  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile.cc
! f8ec134b01542bbcd11ab34f605a99cb  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/compile_2.cc
! 011a4874fdae81382b9a9059b3d880f1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/02_assoc_legendre/pr86655.cc
! b38dd111195c95fbc29c788a9138a2bd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_nan.cc
! 2e663a0c4ab1e7af05dffbbded4b932a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/check_value.cc
! 9fd5f724d67af99d55ca8f7cb6b90cea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile.cc
! 3aefd1d639272121a6bfaa963024f59f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/03_beta/compile_2.cc
! ead8ebabcac1647427fe0a0ad37c3cfa  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_nan.cc
! f53e3f4965f4f9f92c93908ccb4fcbed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/check_value.cc
! e21ab5ca8900b4c1d50c343e021c686c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile.cc
! 7ec6bccf58c6f9da98545ed061275d7f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/04_comp_ellint_1/compile_2.cc
! e5b50b81b6e49d35883c9868a5d233ff  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_nan.cc
! 2b33c8bcc29bf5b2906b02ab8a0cd2f6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/check_value.cc
! 5f4cb585a7eab9df95797fb99bdd0b90  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile.cc
! 34f6ac12b03cfc31cc4bb6fcdcf15af5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/05_comp_ellint_2/compile_2.cc
! 9ada681393cff70dd73ee122d6ff7fb1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_nan.cc
! 01af67b3b90ac6bd82e5fb4d4cc4ac16  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/check_value.cc
! 601fff5c3155817064ae368e5e7c5220  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile.cc
! f5d0db563f638ec87ef3dd8972262438  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/compile_2.cc
  4618aff82312f2efbcdba760637d68b5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/06_comp_ellint_3/pr66689.cc
! 8b2c9b05e2c02b037296ebdb01c71b36  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_nan.cc
! 004c0ca2c04df9c2860f2530751044fd  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/check_value.cc
! e2ca7f4ee28d4fe923309d80fedf6975  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile.cc
! b6cce13b0bfe81b1ec483b08cc26bee0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_2.cc
! ffda97fa797c57eb01f6bf4de8335ede  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/07_conf_hyperg/compile_cxx17.cc
! 8ca73da5b34b9f1185ed5c424ca495ea  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_nan.cc
! 00131c4790e397a490f7d08b13e5e625  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/check_value.cc
! 121f5b2d2f03038dfb48c40ce391ac87  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile.cc
! efd8a5ad5182f593b0316d051fd87557  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/compile_2.cc
! 300019d4b346f64a1969b7f944d312d7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/08_cyl_bessel_i/pr56216.cc
! cd47ff596642f706a2fc1df1f58cf7f3  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_nan.cc
! c87e0d41799364a2a5679d30bbf963ed  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/check_value.cc
! b5a65d03581dd5613c54deef73a3e9e2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile.cc
! e9c3afd475afbae6a776fa2e94cae4ff  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/09_cyl_bessel_j/compile_2.cc
! 5d299ba7a06f8fc7543d67c896f527ab  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/airy.cc
! 9cbaa75a6b466c3af9295139558e60fc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_nan.cc
! a073e696b8add04dbab23c2dd6dc61a5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/check_value.cc
! d9ab084763923c0415d9ab3ffe454cc9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile.cc
! acde18a68febdcbacc0e3d829fe6335a  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/10_cyl_bessel_k/compile_2.cc
! 65daf9e8baf27f6d02ba24c91c633a8d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_nan.cc
! 5cb6e9b16ed37e522c403c7e13fb16d6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/check_value.cc
! 4942abada236f950f96d8e8c87ba2c3c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile.cc
! 540f5142b1c12e9715f0c5c79de96408  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/11_cyl_neumann/compile_2.cc
! bb488bfd848462ba29fb113d3aef8dc5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_nan.cc
! d5b45e0b50c0ebc82d98791ad1ee3ca9  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/check_value.cc
! fe2405bd67a0ed59800c3e53f1dd6535  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile.cc
! d240c274479556198b2d4cbdc274607f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/12_ellint_1/compile_2.cc
! 48560b5a77a5caf55d6a29483424ba44  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_nan.cc
! 47346ecbaaf5d9de140f2767ceea3d4e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/check_value.cc
! b32c970c04b658c3b7d2f115510f827e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile.cc
! a1d59ef59e2604f3b6e0ee8aa4946d4e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/13_ellint_2/compile_2.cc
! b039356732174485ff11f8e9ab0b17b7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_nan.cc
! 727414dc724dae73966e9b13483ffd62  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/check_value.cc
! 2873e91903d3de20e926c0a9938cd750  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile.cc
! 1fe98a2d03a214aed0917c0e57e34da5  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/compile_2.cc
  b780a349356e83ff98346ea066a7c8c7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/14_ellint_3/pr66689.cc
! 849ca91052bea174ba6776f4af774150  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_nan.cc
! 3317a6fccdfb776b85c48e21580360a1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_neg.cc
! 8457bad2fc2e05f0e7a5e37d0a6792c4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/check_value_pos.cc
! 041135f920541adfa1fa8065d23bd965  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile.cc
! 045c7dd069fcca9c8a9a37392d1cfb5e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/compile_2.cc
! 25f2db269e7581c808f125d736b9523f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/15_expint/pr68397.cc
! 9cb52fae2fc8a92ae878ec07272fe505  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_nan.cc
! 702e7353e02e9ee393f44dd5f25dd2f4  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/check_value.cc
! f394b67002b8e9b9d9611f818a74068e  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile.cc
! a7d5adab06594324002fca503e48098c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/16_hermite/compile_2.cc
! 99d8fc6275d87fcc757e0b6a7042dd8d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_nan.cc
! 245fef560008846aae4ba2434bcbfa2f  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/check_value.cc
! 1db89a000d271fc1015dd0010f9d37bc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile.cc
! c90195d5e76a8e2930cdbd953a5dbca0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_2.cc
! 2557826c185381f08e9c747e16620955  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/17_hyperg/compile_cxx17.cc
! 76949072e51f1f68b0301eb4ab69bfc6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_nan.cc
! c7fccfddd74740e649a4fb6f7ae225ec  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/check_value.cc
! 8f2559285a3bfb85282fbefe5b020924  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile.cc
! 3d6e8716f013621698a05af50c9fd7b1  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/18_laguerre/compile_2.cc
! 1b2f47b4dad1c4c2f0b2c3dad3d905c6  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_nan.cc
! 2a646ff0c917cc7ffcbc494de5d08390  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/check_value.cc
! 0f257091da9bac754463af1804cf2e56  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile.cc
! ff47eda95fecbe971ed42a47ed897e13  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/19_legendre/compile_2.cc
! 2fe63db73d112fe886a84096e25bfad8  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_nan.cc
! 5336ef78090381e7a85fa1bb0dee42bc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_neg.cc
! b3dc325e1a9f1e6526889a3f868d4c1d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/check_value_pos.cc
! bb23a1f1e632ab0d4d43559b804ee2cc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile.cc
! e9eca6a7dfe1c5e2b4ac043d5b2fa406  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/20_riemann_zeta/compile_2.cc
! 87bd30cffb9348985e00c51ece8361f7  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_nan.cc
! 804d7ff62db2a3a2ab4c69225a03c3cc  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/check_value.cc
! a6e61185c2e54cf83ed9f9da9185c40d  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile.cc
! 92c90573d53672065daef29b64367ce0  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/21_sph_bessel/compile_2.cc
! 721df13c753605bf68c3cb6b06de916b  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_nan.cc
! 5eba616317c70e0d0a83894ef197fe93  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/check_value.cc
! ca99fba86b785f77b7ce05f8fbc7f5d2  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile.cc
! 4c31b1aef427212feee79357ac61f447  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/compile_2.cc
! b489829a0287b2e5a96415678dec97ad  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/22_sph_legendre/pr86655.cc
! 8aa2c618146451a478b93ec84fecdd19  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_nan.cc
! c9189ff5dc480b65c9e78bd054f8cd85  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/check_value.cc
! d6575e2ab9282f8a811d7e3de4d92d3c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile.cc
! 0bbaeded01e1622eba911efe37cf047c  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/23_sph_neumann/compile_2.cc
! 0b2db919272f2a816d62c6dca8952531  libstdc++-v3/testsuite/tr1/5_numerical_facilities/special_functions/testcase.h
! c97b20cf50f0407525561a3818772153  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/empty.cc
! 1b6ec953104029db18e1642120d202e0  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/max_size.cc
! 21e8f70b93f924189867ff9db17a142b  libstdc++-v3/testsuite/tr1/6_containers/array/capacity/size.cc
! cdd36c1d7744a1faa7ab9ee0ff555b7a  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/equal.cc
! 4a77c77f67d9ac43c435d42834d540f5  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater.cc
! 2ebe1b7144abf15f6087afb5ef53e60d  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/greater_or_equal.cc
! 46c0ecd7f7f0071bbb7e9665706dbe85  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less.cc
! 1e6f4bb1a83f36ecc479e527cd9546f2  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/less_or_equal.cc
! a89e40f38ce7b9e0edc1de7ac77b2c31  libstdc++-v3/testsuite/tr1/6_containers/array/comparison_operators/not_equal.cc
! fc615717180e021e797a27c02327d945  libstdc++-v3/testsuite/tr1/6_containers/array/cons/aggregate_initialization.cc
! f0179c1ee83535762877734f806163cc  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/at_out_of_range.cc
! 4084127f5bc5aee306e2ff665fe889db  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/back.cc
! 109b77949425cf1a1e89f01dc38be982  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/data.cc
! 262a3b1c34d44ce3ccccccb9538e21c6  libstdc++-v3/testsuite/tr1/6_containers/array/element_access/front.cc
! baf0fd785d2a5355a0a8b41871459ebf  libstdc++-v3/testsuite/tr1/6_containers/array/iterators/end_is_one_past.cc
! 6ce66d1bddbc1e3181b0e8ca5b865d56  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/assign.cc
! 3d4e56e0b7bb350934eb87eac563d317  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/contiguous.cc
! 50b522f8337d6f122542b738baf9c31d  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/explicit_instantiation.cc
! 22348cd51a4cc109d067a74847d346a0  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/member_swap.cc
! 0ff4c0302ece1a23bfb5865c6d57bb7b  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/typedefs.cc
! 760913b314efd9aae7b1ef76e38df391  libstdc++-v3/testsuite/tr1/6_containers/array/requirements/zero_sized_arrays.cc
! 1ab349cf52f723aa18b53ee97da64af7  libstdc++-v3/testsuite/tr1/6_containers/array/specialized_algorithms/swap.cc
! 2a6067660c3801319c0288b3d33b1c5f  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/get.cc
! b2a7a550d494e8f07ef221806ad1f959  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_element.cc
! 5ab145daf93c1ff4d746133ade919c2a  libstdc++-v3/testsuite/tr1/6_containers/array/tuple_interface/tuple_size.cc
! 3905ee6b2a310dd54a3ad551cada9d63  libstdc++-v3/testsuite/tr1/6_containers/hash/24799.cc
! 44587f0ced32fc6627759eaed9490cbd  libstdc++-v3/testsuite/tr1/6_containers/hash/operators/size_t.cc
! 3ce2b9308b9e39d39cb350d94cb16d19  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/base_classes.cc
! 57d7a97978655f6ed7daccadc8e6bd89  libstdc++-v3/testsuite/tr1/6_containers/hash/requirements/explicit_instantiation.cc
! 54f821f8d1d54891c097e2b65b246313  libstdc++-v3/testsuite/tr1/6_containers/headers/array/synopsis.cc
! abd70356ce91c0bec81b4fc2bd5c0ddc  libstdc++-v3/testsuite/tr1/6_containers/headers/functional/synopsis.cc
! c514330660711f953b7b695df98dfdc5  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/synopsis.cc
! 923c2d793fb6b2304f7bf02f62af7252  libstdc++-v3/testsuite/tr1/6_containers/headers/tuple/types_std_tr1.cc
! fc37ab952c471a2b457586f9316588ff  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_map/synopsis.cc
! 60802663572dbf136bf2e97a7dfed9d8  libstdc++-v3/testsuite/tr1/6_containers/headers/unordered_set/synopsis.cc
! 7be336723ccc0f15ebb226c6755ed2cd  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/35480_neg.cc
! 80e210a62bab653dbd0e46631730d2ec  libstdc++-v3/testsuite/tr1/6_containers/tuple/comparison_operators/comparisons.cc
! 5f4837b9ff40308e9274fdbcc7b27c9e  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/assignment.cc
! 0dac26ca043843abf610a7c6999623ba  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/big_tuples.cc
! 0c29d6c73970972a90020308a157b8b8  libstdc++-v3/testsuite/tr1/6_containers/tuple/cons/constructor.cc
! 9fe6af352fcb44c59903076d62cd64cd  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/23978.cc
! cf9caafae8ab89114757475127b92cdd  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/make_tuple.cc
! 7dd80089197c0ed99232f34e66a5b21b  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie.cc
! 27f7d4994dc110ef61bf1edf1e0164e4  libstdc++-v3/testsuite/tr1/6_containers/tuple/creation_functions/tie2.cc
! 03ff1a042e401d7e3189b027d7246c81  libstdc++-v3/testsuite/tr1/6_containers/tuple/element_access/get.cc
! 59b57a610c21e67f8031f5896df0077e  libstdc++-v3/testsuite/tr1/6_containers/tuple/requirements/explicit_instantiation.cc
! 017e3ffc79ab0292785ae72a163b42ab  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_element.cc
! 3d297798c3e14b685df038443b05f0a2  libstdc++-v3/testsuite/tr1/6_containers/tuple/tuple_size.cc
! 540e5ce4411fd727e5ecbd07c200a49c  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/24064.cc
! c2703e182d073bf0071c3fba40215d85  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/capacity/29134-map.cc
! fec92508b7d60adfda01877ac8657d19  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/1.cc
! 2d7d5cb2e032bb7d0c52d295d8fdb755  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/erase/24061-map.cc
! 65bfcbd0142200ea63496852eb26f0e4  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/find/map1.cc
! b40c278a472e3be47bdf7ffcc43f4d1c  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/24061-map.cc
! c9fe5807713232ecb985a431fbebfbaf  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/array_syntax.cc
! b393d48bf568d67c171ddaa53b5fa7f9  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_range.cc
! 99b6e7bc8477ab6e92ebbe849178b897  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/insert/map_single.cc
! dd14f18fbf5e2626116680cc37ba456b  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/explicit_instantiation.cc
! 730e5ddea71ec3e10d69e703a88156f5  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_neg.cc
! 94a0341de686878b9c0dedaac4eb08b2  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/iterator_null_neg.cc
! 1bf5caa3d5eb13489b1b64f0c85499c5  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/requirements/typedefs.cc
! e60debb50dd3395b8892ea69e599b869  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/1.cc
! 132c5c6cd10e1f182ae263618617f3f0  libstdc++-v3/testsuite/tr1/6_containers/unordered_map/swap/2.cc
! 32d3f4fe822c46f9a23ec50b844bef43  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/capacity/29134-multimap.cc
! 8f94bafd77a0e59da55836457b1e68f2  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/1.cc
! 541b44145403152af87168612b11bff9  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/erase/24061-multimap.cc
! dbfe5ffd2509b432db340afdbcc1d3c4  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/find/multimap1.cc
! 3632312e07dc581dd9af6b18352a0828  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/24061-multimap.cc
! 62640f4c51920ca22c89c46084e11b88  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_range.cc
! 77a9b2531b66b4947feb853739437403  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/insert/multimap_single.cc
! 451f01705619762333e279092debe42e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/explicit_instantiation.cc
! 93c16ef8d5eaa242b6aeb14b3cdcd114  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_neg.cc
! 8bbf753862bd90780f77518b53eeb293  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/iterator_null_neg.cc
! 05658e4d74ff97f223e6cae28085fe6e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/requirements/typedefs.cc
! 818707e831fd6d38bc1a3e8bf9ec1b70  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/1.cc
! 128cef1174167dfa0bc5117fde991237  libstdc++-v3/testsuite/tr1/6_containers/unordered_multimap/swap/2.cc
! 6877909ad925eedea29e7ba149781c4a  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/24054.cc
! 9bb09138eb156c7b738f78ac580a1adb  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/capacity/29134-multiset.cc
! 697b1f8e7f9ce13da530d11fbbe08547  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/1.cc
! 4742e14b4cf1ee2c70914a199aab4415  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/erase/24061-multiset.cc
! 83c631367c84eac0d93f5de4cf32f25c  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/find/multiset1.cc
! fe6552c4e4a2fba3ab41e0a65bcd56d5  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/24061-multiset.cc
! 7d70f2bae41f20818e61764373894ec6  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_range.cc
! 769b7b7c54b9fa85314e40dde2e73003  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/insert/multiset_single.cc
! 61bb83a22c41e07cff444358815bbdaf  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/explicit_instantiation.cc
! ac1809d64970bd8b7162ab78acfbd578  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_neg.cc
! d6afe94f06b150aaf46358f29b34cb4f  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/iterator_null_neg.cc
! bbc16822d02405603d78c5864f4fac93  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/requirements/typedefs.cc
! ae5c7537536b7d9a065b7cc32de625ed  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/1.cc
! e489d9e5d61dc9080645229c8d62ef1e  libstdc++-v3/testsuite/tr1/6_containers/unordered_multiset/swap/2.cc
! 0d2d5f533eee53c212e5cab10803496f  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23053.cc
! 95d27539e1be8a1fb49ea37e21d19bd7  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/23465.cc
! 57ef7d0ba631c3d6194198e778077666  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26127.cc
! e38214bca20b66a163cd39c217a3dd60  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/26132.cc
! ab3e8d489955b2247451d93a9f80f20d  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/capacity/29134-set.cc
! 56bbf9762e4f5079dcc01deb158d4cc9  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/1.cc
! 68bde0bdeef7283a6f40941ac15cd59e  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/erase/24061-set.cc
! 18aef85eb886d530457c6b28534013de  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/find/set1.cc
! 69aac7e3eb3a04821a8be89eba62c535  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/24061-set.cc
! 9b54a89767e5311930fd240fbdfdc979  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_range.cc
! e56b295302675e68a7bcffe3bf5693b7  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/insert/set_single.cc
! e18a4f79e623eaaaeedc5333e6311b34  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/explicit_instantiation.cc
! a732de28b5ea1d1c2378eb4217d4c448  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_neg.cc
! 814c44a94bae8d6e3f3752c7e49af925  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterator_null_neg.cc
! c4940abbd68f01a70f7b360ca911faeb  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/iterators_default_constructor.cc
! 28bfd9023139617788e4e22cdafacd90  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/requirements/typedefs.cc
! 28e94e115cf551615f94fc0ea2fd6940  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/1.cc
! 7992034d95a0b5e310bb4cc0af63bb68  libstdc++-v3/testsuite/tr1/6_containers/unordered_set/swap/2.cc
! f14981238ba63abef3fb7cb47fe42325  libstdc++-v3/testsuite/tr1/6_containers/utility/19535.cc
! 7528d8b1823a31b724c3cf4385655125  libstdc++-v3/testsuite/tr1/6_containers/utility/pair.cc
! 7ba73b03c893911d154bb4744c04e4d5  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring.cc
! 540dbf0f5e074e0fc5d743f961767eae  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/cstring_op.cc
! d0cdca158110c91fde157265b9d0427a  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/pstring.cc
! 97369f08a497e7e3d1fabe4e30c18549  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/range.cc
! cc99e3ed7d9c99b051bc8a2ca039d2df  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string.cc
! 4e1a9bbe64f218651533e48fa681fb65  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/char/string_op.cc
! ee687101172f416be6c7e21b2f3c3e28  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring.cc
! 6a36add87eaff695d356b883f8356188  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/cstring_op.cc
! 2329be1c05ffda7b202d3d1c3965aba1  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/pstring.cc
! 6f2d51ee56e0059e28cd1467b4f21bfb  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/range.cc
! d98d6c2fdd87d1617adf41723f658605  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string.cc
! 1f1b6e19b34416ce2bad8ad5ca15cee6  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/assign/wchar_t/string_op.cc
! 287aa03ff995902b891314f5e0ea9e5d  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/cstring.cc
! a87f8e0c5b35c854dd1b30a6bfeec831  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/default.cc
! 081523d63ee68a08c182d8abc6fd3a46  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/pstring.cc
! 00c0151181fd785a89ce144e0c98f0c6  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/range.cc
! 83b6d9bd3712f190b34f6b7db4392fc2  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/char/string.cc
! 817d9fdf3fef78a2d3b66e0d8158c4c9  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/cstring.cc
! 67a93a5ec0ac0a84140bbe2aab8cff91  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/default.cc
! 14aeb466c56b5ef88dba2bdc6d544fc7  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/pstring.cc
! 7deaf71ac028d710a98a37e367d89171  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/range.cc
! dabd7ae6443ee2401e5cefb479dc4dec  libstdc++-v3/testsuite/tr1/7_regular_expressions/basic_regex/ctors/wchar_t/string.cc
! a3ad7629b4fb27cd8aaeaf054c5c506e  libstdc++-v3/testsuite/tr1/7_regular_expressions/match_results/ctors/char/default.cc
! c7d50d35f5607f5bb0a41c83ddd398b4  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_awk.cc
! edc0e908a90ddadb492f18186ced61fc  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_basic.cc
! ea20b26705df65809b755d8943c7be35  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_ecma.cc
! 2e4c6c2cc33aa70d850bdb31d8a703ba  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_egrep.cc
! 6fc2c41a92d6c8bbf002739bdbff2ad8  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/c_string_grep.cc
! e04d682a77ea2e5dd2e7305b0a8d364b  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex/cons/char/default.cc
! c0201ca6abe73b7d9971048ab9052fa9  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/ctor.cc
! 419f5b756457ea0abc8b15db794f7e31  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/translate_nocase.cc
! 1a3780b4500b15e1d77e1da946a6f85b  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/char/value.cc
! 80fcb3f4321daf610410db31f1ca9136  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/ctor.cc
! b05ed4ec529c539c2465010d65c66998  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/translate_nocase.cc
! 1a3780b4500b15e1d77e1da946a6f85b  libstdc++-v3/testsuite/tr1/7_regular_expressions/regex_traits/wchar_t/value.cc
! fb8002d6c09c9e4337458ed0ff720929  libstdc++-v3/testsuite/tr1/8_c_compatibility/cctype/functions.cc
! 8d314ab80f452405e2c0c0af0bde8590  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/functions.cc
! 23f9ad491edbb1a4f93dcfc57a203e5c  libstdc++-v3/testsuite/tr1/8_c_compatibility/cfenv/types_std_tr1.cc
! 87bd293c05814ae27e09c298f721e938  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/functions.cc
! 64d1d202ee26d857abe40d08e0461065  libstdc++-v3/testsuite/tr1/8_c_compatibility/cinttypes/types_std_tr1.cc
! 4f3fb7fbec5015d02c230c6f1f746387  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/51083.cc
! e56647e507e63081b0372bb252186e39  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/functions.cc
! 61c1ec2d4fcae9dfc5fe8caeef63bedf  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads.cc
! 711e1516131a3a36659ad3188b0d7d86  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/overloads_neg.cc
! 8cb861b69da009191b27d6b057ec8a73  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/pow_cmath.cc
! 1f3a03c56a35a98cddff7ec3bb8ca6db  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/templates.cc
! 6878ec20759f5b7ff3234b47b1b0f057  libstdc++-v3/testsuite/tr1/8_c_compatibility/cmath/types_std_tr1.cc
! c70125d5f0c71e0af9e85c575f2f3327  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/50880.cc
! b36931db2a8f2b0fe9543bf899bd089c  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/51083.cc
! 0b46348343649f4817111ad796f6fc6b  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/functions.cc
! 58a7a25705a4dc2eeedb71b6867bf2b2  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_float.cc
! 098e517e607a3ae60f690522686fe6f6  libstdc++-v3/testsuite/tr1/8_c_compatibility/complex/overloads_int.cc
! 923d578796e122e41680bd2c7cca18cb  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdint/types_std_tr1.cc
! 39c70452fd974ac86d42b9e592591d34  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdio/functions.cc
! b5c2fe211bf9c84c66acf4afbde06aad  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/functions.cc
! 24a14db0197d6212e136d74c00505284  libstdc++-v3/testsuite/tr1/8_c_compatibility/cstdlib/types_std_tr1.cc
! 741dec65d3f782e773d6b874e82f3ad5  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwchar/functions.cc
! 673034f98e0c0ddb0d3fa6247d97253e  libstdc++-v3/testsuite/tr1/8_c_compatibility/cwctype/functions.cc
! 5686228503838b011542541d6082196d  libstdc++-v3/testsuite/tr1/headers/all.cc
! 12659d21f3b223bcae119a9ecee4a916  libstdc++-v3/testsuite/tr1/headers/c++200x/complex.cc
! d1be406936dafbf31d506c295a8d8a0b  libstdc++-v3/testsuite/tr1/headers/c++200x/math.cc
! 6301ac6d501902fbf066e6bbb6a582b3  libstdc++-v3/testsuite/tr1/headers/c++200x/using_namespace_std_tr1.cc
! 4c6c54e61832da4571c50d11394e203f  libstdc++-v3/testsuite/tr1/headers/using_namespace_std_tr1.cc
! 6a0a3846fe33d05d7350ec04ac463ecf  libstdc++-v3/testsuite/tr2/bases/requirements/explicit_instantiation.cc
! 49e7cc7eb9ca6d8ab7e9f9958154692c  libstdc++-v3/testsuite/tr2/bases/requirements/typedefs.cc
! d4a3c3afa8bf0a0975b7818d38995d2c  libstdc++-v3/testsuite/tr2/bases/value.cc
! a01a1569cbc17b299bb2f6eedbeef2f0  libstdc++-v3/testsuite/tr2/direct_bases/requirements/explicit_instantiation.cc
! 11ff82af7d53ad16f0f7ce8a512d881e  libstdc++-v3/testsuite/tr2/direct_bases/requirements/typedefs.cc
! 754d9c55ac62934f6c356ab5147e03ef  libstdc++-v3/testsuite/tr2/direct_bases/value.cc
! 7d49f9fc0d84432efafb9c0c5862ea85  libstdc++-v3/testsuite/tr2/dynamic_bitset/cmp.cc
! 6a469f89e183263aab103a432ec9b121  libstdc++-v3/testsuite/tr2/dynamic_bitset/cons.cc
! ccb783ef723de026936a15dcfbcc4637  libstdc++-v3/testsuite/tr2/dynamic_bitset/copy.cc
! e0c8e7f7937cda5b1dda18c9ecff0912  libstdc++-v3/testsuite/tr2/dynamic_bitset/move.cc
! f2b2ba6e35c391e64f6d50df18097cc6  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr58729.cc
! 71669505661c2946ee4dafce7d8bfe1c  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr87784.cc
! 0c8a30db56f78f068645e9dd357dde96  libstdc++-v3/testsuite/tr2/dynamic_bitset/pr92059.cc
! 42a9adc5cccf273cb201a29046ab15d3  libstdc++-v3/testsuite/tr2/headers/all.cc
! 39e9038df96f7174d951bfb99b668705  libstdc++-v3/testsuite/tr2/headers/using_namespace_std_tr2.cc
! 3f504b564e8bbb68660e8b348c364550  libstdc++-v3/testsuite/util/atomic/wait_notify_util.h
! d9c74b8bddb9a246f1c49e82610e8c7e  libstdc++-v3/testsuite/util/common_type/assoc/common_type.hpp
! 99a166efe84d1e733ead2dfdec08fb0d  libstdc++-v3/testsuite/util/common_type/assoc/detail/comb_hash_fn_string_form.hpp
! 3481866ff52fa19534d446159fdea3bc  libstdc++-v3/testsuite/util/common_type/assoc/detail/ds_string_form.hpp
! 7c72e86d2ded3c98226cc0640f658611  libstdc++-v3/testsuite/util/common_type/assoc/detail/list_update_policy_string_form.hpp
! fa3522d9ccd1930eb14404366a7bffe2  libstdc++-v3/testsuite/util/common_type/assoc/detail/probe_fn_string_form.hpp
! 9a806e5bbef3987f76f529cf6d70722f  libstdc++-v3/testsuite/util/common_type/assoc/detail/resize_policy_string_form.hpp
! b813138d117e06adcb440f3b1018217e  libstdc++-v3/testsuite/util/common_type/assoc/detail/size_policy_string_form.hpp
! 846846f6dda9238d75841f5758515b85  libstdc++-v3/testsuite/util/common_type/assoc/detail/store_hash_string_form.hpp
! 36596e8c86e27c445b1f4fe4bbf20ae0  libstdc++-v3/testsuite/util/common_type/assoc/detail/tree_supports_order_statistics.hpp
! 6e95fbf063485938ec2509a24cd693f6  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_order_statistics.hpp
! 86cd22d3683d8e00dc39615659cd2ca2  libstdc++-v3/testsuite/util/common_type/assoc/detail/trie_supports_prefix_search.hpp
! 44d3fbdddbd2f941407e7dcab1a58f6a  libstdc++-v3/testsuite/util/common_type/assoc/detail/trigger_policy_string_form.hpp
! b23a6cda13732e57a616e3fea1620c9f  libstdc++-v3/testsuite/util/common_type/assoc/native_set.hpp
! 1e2b428022ebe6ca2ebd8910ead98fe2  libstdc++-v3/testsuite/util/common_type/assoc/string_form.hpp
! 6b1f8cbb921fafb0cdc2c5e1e4957d1d  libstdc++-v3/testsuite/util/common_type/assoc/template_policy.hpp
! 0149ed000db64032460f0e1b2e61b55f  libstdc++-v3/testsuite/util/common_type/priority_queue/common_type.hpp
! c0f511173d1b94a42952bbace4490b06  libstdc++-v3/testsuite/util/common_type/priority_queue/detail/ds_string_form.hpp
! 514c8422e615a146568921e10ca01cc2  libstdc++-v3/testsuite/util/common_type/priority_queue/string_form.hpp
! c5529c872f3f6397340fcf2d156310bf  libstdc++-v3/testsuite/util/debug/checks.h
! bdf25af6c5db489a9f8532b27906a526  libstdc++-v3/testsuite/util/debug/unordered_checks.h
! 48d5fe7f1bfe0ffa0c843a6cb449fe06  libstdc++-v3/testsuite/util/exception/safety.h
! 85d1c120dc67e2618d61316b3e5f0212  libstdc++-v3/testsuite/util/hash_fn/dna_str_limit.hpp
! 7db8d02e2232f238ede798d1c4d93a9d  libstdc++-v3/testsuite/util/hash_fn/limit_string_hash_fn.hpp
! 55d4f29b85f7a0d1b4e0f08dd6320450  libstdc++-v3/testsuite/util/hash_fn/string_hash_fn.hpp
! 92461ba7f479e6363f3b5d68e5f8776d  libstdc++-v3/testsuite/util/hash_fn/string_ranged_hash_fn.hpp
! 2c120a3304bdaa0fff950dbe8cff9770  libstdc++-v3/testsuite/util/hash_fn/string_ranged_probe_fn.hpp
! 06dc43e29b374d124ccf50853d67342f  libstdc++-v3/testsuite/util/io/illegal_input_error.hpp
! e940d2290b430b0e07e6c60854c14bdf  libstdc++-v3/testsuite/util/io/prog_bar.cc
! 2be9794e2fd6b09f6f20e917769ba7b4  libstdc++-v3/testsuite/util/io/prog_bar.hpp
! 73ed2280d5888e3cc13c28f8ad8fb0d7  libstdc++-v3/testsuite/util/io/text_populate.hpp
! 797c3f65a8bf4d4658c002e91ee0dc4b  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.cc
! c898b6573609a233f981c10f97ef476e  libstdc++-v3/testsuite/util/io/verified_cmd_line_input.hpp
! 125a318185595c8727269154cf78f7b1  libstdc++-v3/testsuite/util/io/xml.hpp
! a130f7561691d0bcc4a1c3b3ac3dc87d  libstdc++-v3/testsuite/util/io/xml_test_formatter.hpp
! 7df06367c68da8c66668d2783d467d73  libstdc++-v3/testsuite/util/native_type/native_hash_map.hpp
! 032a86af26913c8f539b5f0e9c42e35c  libstdc++-v3/testsuite/util/native_type/native_hash_multimap.hpp
! b291c5a86abfdf01298c36746ec8e7da  libstdc++-v3/testsuite/util/native_type/native_hash_set.hpp
! 2c3dbb20b405fbdf8406f2b42aa6827e  libstdc++-v3/testsuite/util/native_type/native_hash_tag.hpp
! 562d9f4fafd3d3cb9d80618c62a5e112  libstdc++-v3/testsuite/util/native_type/native_map.hpp
! 57eb038db291f3e4f1ca50b6c2710fb2  libstdc++-v3/testsuite/util/native_type/native_multimap.hpp
! ff5b51c306af21c37cc58976a57effbe  libstdc++-v3/testsuite/util/native_type/native_priority_queue.hpp
! e88305ff48c6dcac5a94d2997c13ffc1  libstdc++-v3/testsuite/util/native_type/native_set.hpp
! e4dd375ffabec56f2e6addd04b3a745e  libstdc++-v3/testsuite/util/native_type/native_tree_tag.hpp
! 6d0a11b1b6652f95f100eda357564ef2  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/erase_test.hpp
! 3ce2be3b519dfd014b03f59232b89388  libstdc++-v3/testsuite/util/performance/assoc/mem_usage/multimap_insert_test.hpp
! 9a9e942b361f867e2f98bd51ddffff7a  libstdc++-v3/testsuite/util/performance/assoc/multimap_common_type.hpp
! 024b671670c15e8ceab6578c82f58566  libstdc++-v3/testsuite/util/performance/assoc/timing/common_type.hpp
! fba27195cc407e7a19472caa65035b68  libstdc++-v3/testsuite/util/performance/assoc/timing/find_test.hpp
! 6344bffbf3fc4b73e77484e1831fcd04  libstdc++-v3/testsuite/util/performance/assoc/timing/insert_test.hpp
! 4e6e2b4b038ff702000ddf5cb92d8629  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_find_test.hpp
! 8fb2ab7ea50d209497ec675b6d68f14b  libstdc++-v3/testsuite/util/performance/assoc/timing/multimap_insert_test.hpp
! b13f8cd37bf251034c753399102dc45e  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_find_test.hpp
! 44c76d3aec6fe09ca02ddd6bc46adb9a  libstdc++-v3/testsuite/util/performance/assoc/timing/subscript_insert_test.hpp
! 05d895d0a30bdd3b1c71827af3baa511  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
! 4f9311dae9e74f4d00d1aad766708f85  libstdc++-v3/testsuite/util/performance/assoc/timing/tree_split_join_test.hpp
! 30300cdd7c19ca3b963e756d90e72129  libstdc++-v3/testsuite/util/performance/io/xml_formatter.hpp
! d3c680017eb9135cfa0ba1b318fef82b  libstdc++-v3/testsuite/util/performance/priority_queue/mem_usage/pop_test.hpp
! 20f1e23cc466d28cd55814527ee0c85d  libstdc++-v3/testsuite/util/performance/priority_queue/timing/join_test.hpp
! 1f09a11ef8e85ad7e3b46eab0bbcda46  libstdc++-v3/testsuite/util/performance/priority_queue/timing/modify_test.hpp
! 76d0d09d5c47c8c45cef0ea05ae55e80  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_pop_test.hpp
! 3d0c2b9d567028e788ebfaac45cf0c32  libstdc++-v3/testsuite/util/performance/priority_queue/timing/push_test.hpp
! b959f4a7cd4f5ad3d325768dde446db1  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.cc
! 0d4fa178cfcc2fb96dd7c399e198834b  libstdc++-v3/testsuite/util/performance/time/elapsed_timer.hpp
! 52c6900722ee67ff558b822970db27a3  libstdc++-v3/testsuite/util/performance/time/timing_test_base.hpp
  f229f005fb6b0edfab2a25224f4aa670  libstdc++-v3/testsuite/util/pstl/pstl_test_config.h
  315ea42a1d905634a70b6bfebf2b60e4  libstdc++-v3/testsuite/util/pstl/test_utils.h
! 003844f55573cc118124d116805c1adc  libstdc++-v3/testsuite/util/regression/basic_type.hpp
! 46c4a74fef4d84afbb0cfc2f849dc12f  libstdc++-v3/testsuite/util/regression/common_type.hpp
! fff8cf1d581ff764a0de843c83a778de  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.h
! 222b45d5aa06314c29b46e4e7966b08c  libstdc++-v3/testsuite/util/regression/rand/assoc/container_rand_regression_test.tcc
! 1095686157ef80453bc9caf88d0f1170  libstdc++-v3/testsuite/util/regression/rand/assoc/rand_regression_test.hpp
! b6bcaadb715d0fc12e063879e5fcbc75  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.h
! b4fc074f481503e501f08509a6089a3b  libstdc++-v3/testsuite/util/regression/rand/priority_queue/container_rand_regression_test.tcc
! da48ab0d40cee39692b6e1ad3e870d0d  libstdc++-v3/testsuite/util/regression/rand/priority_queue/rand_regression_test.hpp
! feb666e7caddc2ff5637dbcb1a8efa7e  libstdc++-v3/testsuite/util/regression/rand/xml_formatter.hpp
! 76b21dacb70581f1c1a928c92fae4edf  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_load_trait.hpp
! 3906874777eb71852c52d7224f6a2f05  libstdc++-v3/testsuite/util/regression/trait/assoc/get_set_loads_trait.hpp
! b5650516e9d5e1ed76cb3fa79e375a23  libstdc++-v3/testsuite/util/regression/trait/assoc/native_type_trait.hpp
! f5219d56c14bc97e63165c9cd441ea6d  libstdc++-v3/testsuite/util/regression/trait/assoc/node_update_trait.hpp
! 5e3c2973a9d35871254587784321b42d  libstdc++-v3/testsuite/util/regression/trait/assoc/resize_trait.hpp
! f3bb2c9f547b10c68ccd56c91abce154  libstdc++-v3/testsuite/util/regression/trait/assoc/to_string.hpp
! 5a0fa696154ddbf409362984ee297d76  libstdc++-v3/testsuite/util/regression/trait/assoc/trait.hpp
! 8f98c9a37639187379e5692f38671c4c  libstdc++-v3/testsuite/util/regression/trait/assoc/type_trait.hpp
! 84028524f31c149e8f99ba188ae3f995  libstdc++-v3/testsuite/util/regression/trait/erase_if_fn.hpp
! 38f023b60d5876856b1e7e4c80734169  libstdc++-v3/testsuite/util/regression/trait/priority_queue/trait.hpp
! 7f533f5240143e6a4f28ca8deb1471ce  libstdc++-v3/testsuite/util/replacement_memory_operators.h
! 271bce45b78ddfbe32de469ee4899718  libstdc++-v3/testsuite/util/slow_clock.h
! 7d39f683553d457efed6e6b13846cd25  libstdc++-v3/testsuite/util/specfun_testcase.h
! 7ed7a83561ea00e9f8da50ffddb8fc14  libstdc++-v3/testsuite/util/statistic/result_recorder.hpp
! a0256bc795839e425e35702572f2f8bc  libstdc++-v3/testsuite/util/statistic/sample_mean.hpp
! 918a6e1bcff57b8e89cb264f52b88e74  libstdc++-v3/testsuite/util/statistic/sample_mean_confidence_checker.hpp
! b8b1c2808eb70c03c963b4a62269d1cc  libstdc++-v3/testsuite/util/statistic/sample_variance.hpp
! 188d77b731c755fb4806dd5307388fb0  libstdc++-v3/testsuite/util/testsuite_abi.cc
! 181feb52eb8dcfa7f8dfa030bc4514b5  libstdc++-v3/testsuite/util/testsuite_abi.h
! 3208b7061a80358262b38cd5bf2218bf  libstdc++-v3/testsuite/util/testsuite_abi_check.cc
! 263b373c9fe52e8b875a12a883c95d86  libstdc++-v3/testsuite/util/testsuite_allocator.cc
! a1394a71fb37e9b2c08ee6b8be030492  libstdc++-v3/testsuite/util/testsuite_allocator.h
! 4da3c8f6f248cd98402f19e6c49995ce  libstdc++-v3/testsuite/util/testsuite_api.h
! 97fbe89d20ac641bef8e2676e4c8f626  libstdc++-v3/testsuite/util/testsuite_character.cc
! a36fc20999f54183117d7846a06feeaf  libstdc++-v3/testsuite/util/testsuite_character.h
! 2cf2d222e97cac514057036d83ded594  libstdc++-v3/testsuite/util/testsuite_common_types.h
! 46f6a8139639a62062a57402cb530530  libstdc++-v3/testsuite/util/testsuite_container_traits.h
! 29e2e70b94364ec963cab27bfaacc780  libstdc++-v3/testsuite/util/testsuite_containergen.h
! 91c439a16f639ace83f1fd35b49bf93d  libstdc++-v3/testsuite/util/testsuite_containers.h
! 30fb4f0591bc177fc6b9234b90276d6d  libstdc++-v3/testsuite/util/testsuite_counter_type.h
! 1908260a1cb38a2ee6ee7202054acf39  libstdc++-v3/testsuite/util/testsuite_error.h
! 4668b08aa7ab360835185086b4bb4b9f  libstdc++-v3/testsuite/util/testsuite_fs.h
! af4eb2624c32e3bea7c0de5799b33eed  libstdc++-v3/testsuite/util/testsuite_greedy_ops.h
! a35c2255ea5214961ff4081b94e09730  libstdc++-v3/testsuite/util/testsuite_hooks.cc
! 2aee120d46b5f35fe78cf5e966badf9d  libstdc++-v3/testsuite/util/testsuite_hooks.h
! 625d778f1f66c43960648fdd07b7b7bc  libstdc++-v3/testsuite/util/testsuite_io.h
! 9b8f11313b72d34bc1517462349bfa39  libstdc++-v3/testsuite/util/testsuite_iterators.h
! 11ae45f476a871567cb1b477497ee4aa  libstdc++-v3/testsuite/util/testsuite_new_operators.h
! bbaafce7b0ab41c5ac26c28a18c1dec6  libstdc++-v3/testsuite/util/testsuite_performance.h
! eeddd49c5e0a43c6ba48826801307e3f  libstdc++-v3/testsuite/util/testsuite_random.h
! 49face3c31126da3ec67e58e2cc8a00e  libstdc++-v3/testsuite/util/testsuite_regex.h
! d706579031a63c180248a9f8f73f0a68  libstdc++-v3/testsuite/util/testsuite_rng.h
! 6a64053bd0587e795259515dbae7b5f9  libstdc++-v3/testsuite/util/testsuite_rvalref.h
! 7c34acacecb8c52c8527c05b7f7e5759  libstdc++-v3/testsuite/util/testsuite_shared.cc
! 529d22babbd76400264568f2be0d13df  libstdc++-v3/testsuite/util/testsuite_string.h
! abd3b6f8114b664454ef48f05d7112b1  libstdc++-v3/testsuite/util/testsuite_tr1.h
! 8a7ff78e20c170bc7e06e28ee78d2d12  libstdc++-v3/testsuite/util/thread/all.h
  b950d655469c477755252b1e18009596  libtool-ldflags
! 2e824852870b4611099b99dcf89b981b  libtool.m4
! f56cf21150b1645e5b747c48cebb001a  libvtv/ChangeLog
! 6250d856c456725aa05b120686976895  libvtv/Makefile.am
  b1170aae9472f26fdc8326737dc22aba  libvtv/Makefile.in
  3b765c4f4a0a0f606db1472bce2b8d29  libvtv/acinclude.m4
  84c8143a9310ea291315dcd0c276df5d  libvtv/aclocal.m4
! 3eed93867e11860304a348397008d035  libvtv/configure
  cc9f6a09cf2db980b7d7119fd0748406  libvtv/configure.ac
! 026d3bef66fa0462fd7d25cc3167ff9f  libvtv/configure.tgt
  2caccd848c579fcddd2a8c8106cfaff9  libvtv/scripts/run-testsuite.sh
  09a6150d1619f2508d7844f860b3382c  libvtv/scripts/sum-vtv-counts.c
  4835ec70e1fbcd9acd3c280c0060afa4  libvtv/testsuite/Makefile.am
  fda4739e0005be93900b671246d786ff  libvtv/testsuite/Makefile.in
! 8efd5b4b14988c1ceaee293ac878e9d0  libvtv/testsuite/config/default.exp
! f2f173b97a24edb63425420b6dafac67  libvtv/testsuite/lib/libvtv-dg.exp
  b01596489f4e825c77d9429f5bd51424  libvtv/testsuite/lib/libvtv.exp
  dc26824f08dd227e0cba7e7ebc8f4d3a  libvtv/testsuite/libvtv.cc/bb_tests.cc
  9d9288724a9873c407e84c96ef43f56a  libvtv/testsuite/libvtv.cc/const_vtable.cc
*************** e18c427700b2de867318b8dfb4ccdc4e  libvtv
*** 115684,115690 ****
  1af090cb318f05dcac1de1af35049bf3  libvtv/testsuite/libvtv.cc/thunk.cc
  4342d1f35d7a127cbf072aea14c40ca4  libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc
  af622745e9d1ebd1a80806c6a477adda  libvtv/testsuite/libvtv.cc/v8-test-2.cc
! 797da78728f8f7dad49d5d1b398cfae6  libvtv/testsuite/libvtv.cc/virtfunc-test.cc
  02687d81e25b3d8b61f75737f0a618a9  libvtv/testsuite/libvtv.cc/virtual_inheritance.cc
  85e4bee8e57399ebf8c098da2a829dd0  libvtv/testsuite/libvtv.cc/vtv.exp
  85942493419912cb30bceeaf62d53da8  libvtv/testsuite/libvtv.cc/xlan-test.cc
--- 124028,124034 ----
  1af090cb318f05dcac1de1af35049bf3  libvtv/testsuite/libvtv.cc/thunk.cc
  4342d1f35d7a127cbf072aea14c40ca4  libvtv/testsuite/libvtv.cc/thunk_vtable_map_attack.cc
  af622745e9d1ebd1a80806c6a477adda  libvtv/testsuite/libvtv.cc/v8-test-2.cc
! 7aeae81412bda1037d76741536189a90  libvtv/testsuite/libvtv.cc/virtfunc-test.cc
  02687d81e25b3d8b61f75737f0a618a9  libvtv/testsuite/libvtv.cc/virtual_inheritance.cc
  85e4bee8e57399ebf8c098da2a829dd0  libvtv/testsuite/libvtv.cc/vtv.exp
  85942493419912cb30bceeaf62d53da8  libvtv/testsuite/libvtv.cc/xlan-test.cc
*************** dc2332c7582cf3d236d0ee930f63eca3  libvtv
*** 115694,115700 ****
  8ef0aa7efe1764eeb6f68dbd51e6d4b5  libvtv/testsuite/libvtv.mt.cc/mt.exp
  bb4ece037690dc6ecdd0c04662562123  libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc
  4028191848aead5f1025ef6d51d6460e  libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc
! 36c253d5d2ea7fe4f15c15a8bbe572de  libvtv/testsuite/other-tests/Makefile.am
  481aa959d973aa72ca282a2b6db129e3  libvtv/testsuite/other-tests/Makefile.in
  ed7bc4ea169d6384a32fd76063d7af7f  libvtv/testsuite/other-tests/README
  32bbdc8e2683c298b41d8d68281dd6ea  libvtv/testsuite/other-tests/dlopen.cc
--- 124038,124044 ----
  8ef0aa7efe1764eeb6f68dbd51e6d4b5  libvtv/testsuite/libvtv.mt.cc/mt.exp
  bb4ece037690dc6ecdd0c04662562123  libvtv/testsuite/libvtv.mt.cc/register_set_pair_inserts_mt.cc
  4028191848aead5f1025ef6d51d6460e  libvtv/testsuite/libvtv.mt.cc/register_set_pair_mt.cc
! 9014db843d5e89c18aa8e6ded502be3c  libvtv/testsuite/other-tests/Makefile.am
  481aa959d973aa72ca282a2b6db129e3  libvtv/testsuite/other-tests/Makefile.in
  ed7bc4ea169d6384a32fd76063d7af7f  libvtv/testsuite/other-tests/README
  32bbdc8e2683c298b41d8d68281dd6ea  libvtv/testsuite/other-tests/dlopen.cc
*************** a39c1926ca0a1bac2ffa3e5389fe2eb2  libvtv
*** 115707,115748 ****
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! 6d3d219647c2af528f25eb4c6ece5cb3  libvtv/vtv_fail.cc
! 3d6d684c9c1631b9f4d40e3dbee99e4d  libvtv/vtv_fail.h
! 9f48f1e0ace562461811b244c80506b7  libvtv/vtv_malloc.cc
! 4645c109981a04794f5548b3b0ac108d  libvtv/vtv_malloc.h
! e0e7ee6d9ede75d9d8822ab3b88d5080  libvtv/vtv_map.h
! 6a007090c9f255da1bbfe06c9c4d3c68  libvtv/vtv_rts.cc
! 6f92b0b55f5b6665099adb36e849c981  libvtv/vtv_rts.h
! 0f50a258dbf2fc7f38e2c0a34646d031  libvtv/vtv_set.h
! 8a044b736ea3a7b598abf7d415f80bec  libvtv/vtv_utils.cc
! 05b984c47b23470a9bac686f5d51249e  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  06c2854f9cfe5864b2885e0d0e9c512f  ltmain.sh
! 372e077903a48a47e51117db1d132c14  lto-plugin/ChangeLog
! 50806c6aac4ef6d8e689dfe596507a3a  lto-plugin/Makefile.am
! 5d97b067df8959a09d2d9392fca6774b  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
! de4c999b99ec1e3d1bcb8a340bd8d5fd  lto-plugin/config.h.in
! 14b329aa831d988ba879a1652a1a1b5e  lto-plugin/configure
! a98ab06a32845d7ac64c1e578c9fa80c  lto-plugin/configure.ac
! a6f617f31fa0491e4cce1b4623dfd7d5  lto-plugin/lto-plugin.c
  d00a1ca9cd8ba450f1a1028fd3e60dc3  lto-plugin/lto-plugin.map
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! 6639e241cf1f520b8f3e5ccb6935ae1c  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
  c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
! 7bf6e11216c28982ec5170f9e098a7f7  maintainer-scripts/crontab
! 1777fbf3e6a3232bd6898ce857cdf2fd  maintainer-scripts/gcc_release
  262d529ab10d5bd398f14fc1ec9fed1a  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
  1fcc4f18e9f9043eaea6c3c990d96d9b  maintainer-scripts/setup.cfg
  1012437849cecda6e54b3948f279ae93  maintainer-scripts/update_version_git
! 4c0406d5444d6d2dc128b2d342d9e0ad  maintainer-scripts/update_web_docs_git
  89960da3ee98bea76c62bf0bf235d1f9  maintainer-scripts/update_web_docs_libstdcxx_git
  5f2a276ee7b8decec541391229d03591  missing
  fbe2467afef81c41c166173adeb0ee20  mkdep
--- 124051,124092 ----
  fd1ee5c194e5759320643df81103775d  libvtv/testsuite/other-tests/temp_deriv.cc
  a28f0d44162e9d978de21ea4c82b411e  libvtv/testsuite/other-tests/temp_deriv2.cc
  fd44dfd4ba421163f0a14a74988ea97a  libvtv/testsuite/other-tests/temp_deriv3.cc
! ca773e958a92621f402ce40526b8ab2b  libvtv/vtv_fail.cc
! 825ea1f61a7d5815ea1d63eab87d7630  libvtv/vtv_fail.h
! 098af0c75c008639bdc6818aa0df70ba  libvtv/vtv_malloc.cc
! 6482a87d219f2d4395cff4406255547a  libvtv/vtv_malloc.h
! fc7cc8a97cca4b2e64d08187622d3e30  libvtv/vtv_map.h
! c9cd02479c9f4c081d88190334e65fae  libvtv/vtv_rts.cc
! 371b70e0175e05ae51172c8e1b5c471a  libvtv/vtv_rts.h
! 9cb11996056223e156b3a077e0fcc41b  libvtv/vtv_set.h
! 777bb2eb8b5e982608e6675b702cfd62  libvtv/vtv_utils.cc
! 76849f682e2cb5f9c2866e45ce1e9d83  libvtv/vtv_utils.h
  247597a3fcc5b5aa8bd923351c59d853  ltgcc.m4
  06c2854f9cfe5864b2885e0d0e9c512f  ltmain.sh
! 8b1b6411282d834ae93e70e314eab130  lto-plugin/ChangeLog
! aced0d5ba993307440be577533b64eb3  lto-plugin/Makefile.am
! 9e1d03259c911094d39831e7e86546d8  lto-plugin/Makefile.in
  75fc65b35d0a47ac098f7a278d37060b  lto-plugin/aclocal.m4
! 26e3d7e6d62bd000d0ad9db3b610e91c  lto-plugin/config.h.in
! 815979436db4965bd4a87ff0659944de  lto-plugin/configure
! cdd46cf8d2e0c0a1209d16991a77a392  lto-plugin/configure.ac
! bc9e6187a4c8f9229109bb779e9cdfde  lto-plugin/lto-plugin.c
  d00a1ca9cd8ba450f1a1028fd3e60dc3  lto-plugin/lto-plugin.map
  dee72a6a60e99528b0d17bf3ff9a1e15  ltoptions.m4
  bc2f6032c98896249eadb56177c7d357  ltsugar.m4
  c30cd33c496505f13d9fbdb6970c7c33  ltversion.m4
  293853a13b7e218e3a4342cf85fbbf25  lt~obsolete.m4
! e912ad96e8b4b2b4ae15aac32ba58db0  maintainer-scripts/ChangeLog
  33c7bc2d2c55956dfac85a05d8a80eff  maintainer-scripts/README
  507e832af5f2d63b8a78eef217c807a7  maintainer-scripts/branch_changer.py
  c819510f0d438149c1518bda7b165ac4  maintainer-scripts/bugzilla-close-candidate.py
! 2d4e95a61eda25c1f45ddc43b2e7aa50  maintainer-scripts/crontab
! 0f7c07bd35bff7baf8ddba1df6142ab8  maintainer-scripts/gcc_release
  262d529ab10d5bd398f14fc1ec9fed1a  maintainer-scripts/generate_libstdcxx_web_docs
  33d97164a8610c7abf67eff7d28f47ff  maintainer-scripts/maintainer-addresses
  1fcc4f18e9f9043eaea6c3c990d96d9b  maintainer-scripts/setup.cfg
  1012437849cecda6e54b3948f279ae93  maintainer-scripts/update_version_git
! 63500dd3025c4bf2dc79fa8c83bfe867  maintainer-scripts/update_web_docs_git
  89960da3ee98bea76c62bf0bf235d1f9  maintainer-scripts/update_web_docs_libstdcxx_git
  5f2a276ee7b8decec541391229d03591  missing
  fbe2467afef81c41c166173adeb0ee20  mkdep
*************** cf2baa0854f564a7785307e79f155efc  symlin
*** 115753,115759 ****
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! a0cabf4d6f56899dff84a3d6ae0bf01f  zlib/ChangeLog
  f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
--- 124097,124103 ----
  40bb1f4ce4a60a36d1ec50d66aeed4d1  test-driver
  cb06c1be6a41d68b0a65e0c1a91752bc  ylwrap
  03bf3ba8089f4bf475ef4035cf316a47  zlib/CMakeLists.txt
! c92bf29288800e4ae97c2067d7cd9ef8  zlib/ChangeLog
  f10e5e9394787b288e91fed29533720a  zlib/ChangeLog.gcj
  0e9a37be8e3b85cc0ccf60504064c297  zlib/ChangeLog.jit
  b7a1991f01daea3efe108a215c5514a5  zlib/FAQ
*************** b7a1991f01daea3efe108a215c5514a5  zlib/F
*** 115767,115773 ****
  f16cd4621f5561cf147b5e56a8af1946  zlib/amiga/Makefile.pup
  315c9e3e7dd1d24aeb9d6bc55b7de5fd  zlib/amiga/Makefile.sas
  68c4c1f6c737d307d372130351b123a6  zlib/compress.c
! 1475919e85dc69847ca481f2978c5dc6  zlib/configure
  490e6b2cbb61562488945b0807a88053  zlib/configure.ac
  417c6b266549b949b958733f95d075ef  zlib/contrib/README.contrib
  cd14a97dd8a0613bb1244a68c0c764d6  zlib/contrib/ada/buffer_demo.adb
--- 124111,124117 ----
  f16cd4621f5561cf147b5e56a8af1946  zlib/amiga/Makefile.pup
  315c9e3e7dd1d24aeb9d6bc55b7de5fd  zlib/amiga/Makefile.sas
  68c4c1f6c737d307d372130351b123a6  zlib/compress.c
! bfce875a25cea2e2cc4acfb854b6f079  zlib/configure
  490e6b2cbb61562488945b0807a88053  zlib/configure.ac
  417c6b266549b949b958733f95d075ef  zlib/contrib/README.contrib
  cd14a97dd8a0613bb1244a68c0c764d6  zlib/contrib/ada/buffer_demo.adb
diff -Nrcpad gcc-12.2.0/Makefile.def gcc-13.1.0/Makefile.def
*** gcc-12.2.0/Makefile.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/Makefile.def	Wed Apr 26 07:09:39 2023
*************** AutoGen definitions Makefile.tpl;
*** 4,10 ****
  // Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'.
  // This file was originally written by Nathanael Nerode.
  //
! //   Copyright 2002-2021 Free Software Foundation
  //
  // This file is free software; you can redistribute it and/or modify
  // it under the terms of the GNU General Public License as published by
--- 4,10 ----
  // Makefile.in is generated from Makefile.tpl by 'autogen Makefile.def'.
  // This file was originally written by Nathanael Nerode.
  //
! //   Copyright 2002-2022 Free Software Foundation
  //
  // This file is free software; you can redistribute it and/or modify
  // it under the terms of the GNU General Public License as published by
*************** host_modules= { module= gcc; bootstrap=t
*** 50,56 ****
  		extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
  host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
  		// Work around in-tree gmp configure bug with missing flex.
! 		extra_configure_flags='--disable-shared LEX="touch lex.yy.c"';
  		extra_make_flags='AM_CFLAGS="-DNO_ASM"';
  		no_install= true;
  		// none-*-* disables asm optimizations, bootstrap-testing
--- 50,56 ----
  		extra_make_flags="$(EXTRA_GCC_FLAGS)"; };
  host_modules= { module= gmp; lib_path=.libs; bootstrap=true;
  		// Work around in-tree gmp configure bug with missing flex.
! 		extra_configure_flags='--disable-shared LEX="touch lex.yy.c" @host_libs_picflag@';
  		extra_make_flags='AM_CFLAGS="-DNO_ASM"';
  		no_install= true;
  		// none-*-* disables asm optimizations, bootstrap-testing
*************** host_modules= { module= gmp; lib_path=.l
*** 60,80 ****
  		// different from host for target.
  	        target="none-${host_vendor}-${host_os}"; };
  host_modules= { module= mpfr; lib_path=src/.libs; bootstrap=true;
! 		extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@';
  		extra_make_flags='AM_CFLAGS="-DNO_ASM"';
  		no_install= true; };
  host_modules= { module= mpc; lib_path=src/.libs; bootstrap=true;
! 		extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode';
  		no_install= true; };
  host_modules= { module= isl; lib_path=.libs; bootstrap=true;
! 		extra_configure_flags='--disable-shared @extra_isl_gmp_configure_flags@';
  		extra_make_flags='V=1';
  		no_install= true; };
- host_modules= { module= libelf; lib_path=.libs; bootstrap=true;
- 		extra_configure_flags='--disable-shared';
- 		no_install= true; };
  host_modules= { module= gold; bootstrap=true; };
  host_modules= { module= gprof; };
  host_modules= { module= intl; bootstrap=true; };
  host_modules= { module= tcl;
                  missing=mostlyclean; };
--- 60,78 ----
  		// different from host for target.
  	        target="none-${host_vendor}-${host_os}"; };
  host_modules= { module= mpfr; lib_path=src/.libs; bootstrap=true;
! 		extra_configure_flags='--disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@';
  		extra_make_flags='AM_CFLAGS="-DNO_ASM"';
  		no_install= true; };
  host_modules= { module= mpc; lib_path=src/.libs; bootstrap=true;
! 		extra_configure_flags='--disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode';
  		no_install= true; };
  host_modules= { module= isl; lib_path=.libs; bootstrap=true;
! 		extra_configure_flags='--disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@';
  		extra_make_flags='V=1';
  		no_install= true; };
  host_modules= { module= gold; bootstrap=true; };
  host_modules= { module= gprof; };
+ // intl acts on 'host_shared' directly, and does not support --with-pic.
  host_modules= { module= intl; bootstrap=true; };
  host_modules= { module= tcl;
                  missing=mostlyclean; };
*************** host_modules= { module= libiberty-linker
*** 110,116 ****
  // We abuse missing to avoid installing anything for libiconv.
  host_modules= { module= libiconv;
  		bootstrap=true;
! 		extra_configure_flags='--disable-shared';
  		no_install= true;
  		missing= pdf;
  		missing= html;
--- 108,114 ----
  // We abuse missing to avoid installing anything for libiconv.
  host_modules= { module= libiconv;
  		bootstrap=true;
! 		extra_configure_flags='--disable-shared  @host_libs_picflag@';
  		no_install= true;
  		missing= pdf;
  		missing= html;
*************** host_modules= { module= sim; };
*** 125,131 ****
  host_modules= { module= texinfo; no_install= true; };
  host_modules= { module= zlib; no_install=true; no_check=true;
  		bootstrap=true;
! 	        extra_configure_flags='@extra_host_zlib_configure_flags@';};
  host_modules= { module= gnulib; };
  host_modules= { module= gdbsupport; };
  host_modules= { module= gdbserver; };
--- 123,129 ----
  host_modules= { module= texinfo; no_install= true; };
  host_modules= { module= zlib; no_install=true; no_check=true;
  		bootstrap=true;
! 	        extra_configure_flags='@extra_host_zlib_configure_flags@ @host_libs_picflag@';};
  host_modules= { module= gnulib; };
  host_modules= { module= gdbsupport; };
  host_modules= { module= gdbserver; };
*************** host_modules= { module= lto-plugin; boot
*** 148,153 ****
--- 146,152 ----
  host_modules= { module= libcc1; extra_configure_flags=--enable-shared; };
  host_modules= { module= gotools; };
  host_modules= { module= libctf; bootstrap=true; };
+ host_modules= { module= libsframe; bootstrap=true; };
  
  target_modules = { module= libstdc++-v3;
  		   bootstrap=true;
*************** target_modules = { module= libvtv;
*** 161,169 ****
  		   bootstrap=true;
  		   lib_path=.libs;
  		   raw_cxx=true; };
- target_modules = { module= liboffloadmic;
- 		   lib_path=.libs;
- 		   extra_configure_flags='@extra_liboffloadmic_configure_flags@'; };
  target_modules = { module= libssp; lib_path=.libs; };
  target_modules = { module= newlib; };
  target_modules = { module= libgcc; bootstrap=true; no_check=true;
--- 160,165 ----
*************** target_modules = { module= libtermcap; n
*** 185,194 ****
                     missing=maintainer-clean; };
  target_modules = { module= winsup; };
  target_modules = { module= libgloss; no_check=true; };
! target_modules = { module= libffi; no_install=true; };
  target_modules = { module= zlib; bootstrap=true; };
  target_modules = { module= rda; };
  target_modules = { module= libada; };
  target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
  target_modules = { module= libitm; lib_path=.libs; };
  target_modules = { module= libatomic; bootstrap=true; lib_path=.libs; };
--- 181,192 ----
                     missing=maintainer-clean; };
  target_modules = { module= winsup; };
  target_modules = { module= libgloss; no_check=true; };
! target_modules = { module= libffi; no_install=true;
!                    extra_configure_flags='--disable-shared --with-pic'; };
  target_modules = { module= zlib; bootstrap=true; };
  target_modules = { module= rda; };
  target_modules = { module= libada; };
+ target_modules = { module= libgm2; lib_path=.libs; };
  target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; };
  target_modules = { module= libitm; lib_path=.libs; };
  target_modules = { module= libatomic; bootstrap=true; lib_path=.libs; };
*************** flags_to_pass = { flag= GOC_FOR_TARGET ;
*** 311,316 ****
--- 309,316 ----
  flags_to_pass = { flag= GOCFLAGS_FOR_TARGET ; };
  flags_to_pass = { flag= GDC_FOR_TARGET ; };
  flags_to_pass = { flag= GDCFLAGS_FOR_TARGET ; };
+ flags_to_pass = { flag= GM2_FOR_TARGET ; };
+ flags_to_pass = { flag= GM2FLAGS_FOR_TARGET ; };
  flags_to_pass = { flag= LD_FOR_TARGET ; };
  flags_to_pass = { flag= LIPO_FOR_TARGET ; };
  flags_to_pass = { flag= LDFLAGS_FOR_TARGET ; };
*************** dependencies = { module=configure-gcc; o
*** 353,359 ****
  dependencies = { module=configure-gcc; on=all-gas; };
  dependencies = { module=configure-gcc; on=all-ld; };
  dependencies = { module=configure-gcc; on=all-gold; };
- dependencies = { module=configure-gcc; on=all-libelf; };
  dependencies = { module=configure-gcc; on=all-libiconv; };
  dependencies = { module=all-gcc; on=all-libiberty; hard=true; };
  dependencies = { module=all-gcc; on=all-intl; };
--- 353,358 ----
*************** dependencies = { module=configure-isl; o
*** 417,422 ****
--- 416,423 ----
  dependencies = { module=all-intl; on=all-libiconv; };
  
  // Host modules specific to gdb.
+ dependencies = { module=configure-gdb; on=all-gmp; };
+ dependencies = { module=configure-gdb; on=all-mpfr; };
  dependencies = { module=configure-gdb; on=all-intl; };
  dependencies = { module=configure-gdb; on=configure-sim; };
  dependencies = { module=configure-gdb; on=all-bfd; };
*************** dependencies = { module=all-binutils; on
*** 477,482 ****
--- 478,484 ----
  dependencies = { module=all-binutils; on=all-gas; };
  dependencies = { module=all-binutils; on=all-libctf; };
  dependencies = { module=all-ld; on=all-libctf; };
+ dependencies = { module=all-binutils; on=all-libsframe; };
  
  // We put install-opcodes before install-binutils because the installed
  // binutils might be on PATH, and they might need the shared opcodes
*************** dependencies = { module=all-m4; on=all-b
*** 607,613 ****
  // on libgcc and newlib/libgloss.
  lang_env_dependencies = { module=libitm; cxx=true; };
  lang_env_dependencies = { module=libffi; cxx=true; };
- lang_env_dependencies = { module=liboffloadmic; cxx=true; };
  lang_env_dependencies = { module=newlib; no_c=true; };
  lang_env_dependencies = { module=libgloss; no_c=true; };
  lang_env_dependencies = { module=libgcc; no_gcc=true; no_c=true; };
--- 609,614 ----
*************** dependencies = { module=configure-target
*** 623,642 ****
  dependencies = { module=all-target-libgo; on=all-target-libbacktrace; };
  dependencies = { module=all-target-libgo; on=all-target-libffi; };
  dependencies = { module=all-target-libgo; on=all-target-libatomic; };
  dependencies = { module=configure-target-libphobos; on=configure-target-libbacktrace; };
  dependencies = { module=configure-target-libphobos; on=configure-target-zlib; };
  dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; };
  dependencies = { module=all-target-libphobos; on=all-target-zlib; };
  dependencies = { module=all-target-libphobos; on=all-target-libatomic; };
  dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
- dependencies = { module=configure-target-liboffloadmic; on=configure-target-libgomp; };
  dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
  dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
  // parallel_list.o and parallel_settings.o depend on omp.h, which is
  // generated by the libgomp configure.  Unfortunately, due to the use of
  //  recursive make, we can't be that specific.
  dependencies = { module=all-target-libstdc++-v3; on=configure-target-libgomp; };
- dependencies = { module=all-target-liboffloadmic; on=all-target-libgomp; };
  
  dependencies = { module=install-target-libgo; on=install-target-libatomic; };
  dependencies = { module=install-target-libgfortran; on=install-target-libquadmath; };
--- 624,643 ----
  dependencies = { module=all-target-libgo; on=all-target-libbacktrace; };
  dependencies = { module=all-target-libgo; on=all-target-libffi; };
  dependencies = { module=all-target-libgo; on=all-target-libatomic; };
+ dependencies = { module=configure-target-libgm2; on=all-target-libstdc++-v3; };
+ dependencies = { module=all-target-libgm2; on=all-target-libatomic; };
  dependencies = { module=configure-target-libphobos; on=configure-target-libbacktrace; };
  dependencies = { module=configure-target-libphobos; on=configure-target-zlib; };
  dependencies = { module=all-target-libphobos; on=all-target-libbacktrace; };
  dependencies = { module=all-target-libphobos; on=all-target-zlib; };
  dependencies = { module=all-target-libphobos; on=all-target-libatomic; };
  dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgomp; };
  dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; };
  dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; };
  // parallel_list.o and parallel_settings.o depend on omp.h, which is
  // generated by the libgomp configure.  Unfortunately, due to the use of
  //  recursive make, we can't be that specific.
  dependencies = { module=all-target-libstdc++-v3; on=configure-target-libgomp; };
  
  dependencies = { module=install-target-libgo; on=install-target-libatomic; };
  dependencies = { module=install-target-libgfortran; on=install-target-libquadmath; };
*************** dependencies = { module=install-target-l
*** 646,653 ****
  dependencies = { module=install-target-libsanitizer; on=install-target-libgcc; };
  dependencies = { module=install-target-libvtv; on=install-target-libstdc++-v3; };
  dependencies = { module=install-target-libvtv; on=install-target-libgcc; };
- dependencies = { module=install-target-liboffloadmic; on=install-target-libstdc++-v3; };
- dependencies = { module=install-target-liboffloadmic; on=install-target-libgcc; };
  dependencies = { module=install-target-libitm; on=install-target-libgcc; };
  dependencies = { module=install-target-libobjc; on=install-target-libgcc; };
  dependencies = { module=install-target-libstdc++-v3; on=install-target-libgcc; };
--- 647,652 ----
*************** dependencies = { module=configure-target
*** 663,668 ****
--- 662,668 ----
  dependencies = { module=configure-target-newlib; on=all-ld; };
  dependencies = { module=configure-target-libgfortran; on=all-target-libquadmath; };
  dependencies = { module=configure-target-libgfortran; on=all-target-libbacktrace; };
+ dependencies = { module=configure-target-libgo; on=all-target-libbacktrace; };
  
  languages = { language=c;	gcc-check-target=check-gcc; };
  languages = { language=c++;	gcc-check-target=check-c++;
*************** languages = { language=obj-c++;	gcc-chec
*** 681,689 ****
--- 681,692 ----
  languages = { language=go;	gcc-check-target=check-go;
  				lib-check-target=check-target-libgo;
  				lib-check-target=check-gotools; };
+ languages = { language=m2;	gcc-check-target=check-m2;
+ 				lib-check-target=check-target-libgm2; };
  languages = { language=d;	gcc-check-target=check-d;
  				lib-check-target=check-target-libphobos; };
  languages = { language=jit;	gcc-check-target=check-jit; };
+ languages = { language=rust;	gcc-check-target=check-rust; };
  
  // Toplevel bootstrap
  bootstrap_stage = { id=1 ; };
diff -Nrcpad gcc-12.2.0/Makefile.in gcc-13.1.0/Makefile.in
*** gcc-12.2.0/Makefile.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/Makefile.in	Wed Apr 26 07:09:39 2023
*************** BUILD_EXPORTS = \
*** 163,168 ****
--- 163,170 ----
  	GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \
  	GDC="$(GDC_FOR_BUILD)"; export GDC; \
  	GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \
+ 	GM2="$(GM2_FOR_BUILD)"; export GM2; \
+ 	GM2FLAGS="$(GM2FLAGS_FOR_BUILD)"; export GM2FLAGS; \
  	DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
  	DSYMUTIL="$(DSYMUTIL_FOR_BUILD)"; export DSYMUTIL; \
  	LD="$(LD_FOR_BUILD)"; export LD; \
*************** HOST_EXPORTS = \
*** 201,206 ****
--- 203,209 ----
  	GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \
  	GOC="$(GOC)"; export GOC; \
  	GDC="$(GDC)"; export GDC; \
+ 	GM2="$(GM2)"; export GM2; \
  	AR="$(AR)"; export AR; \
  	AS="$(AS)"; export AS; \
  	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
*************** HOST_EXPORTS = \
*** 222,228 ****
  	AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \
  	AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \
  	DSYMUTIL_FOR_TARGET="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL_FOR_TARGET; \
! 	GCC_FOR_TARGET="$(GCC_FOR_TARGET)"; export GCC_FOR_TARGET; \
  	LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \
  	NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \
  	OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \
--- 225,231 ----
  	AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \
  	AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \
  	DSYMUTIL_FOR_TARGET="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL_FOR_TARGET; \
! 	GCC_FOR_TARGET="$(GCC_FOR_TARGET) $$TFLAGS"; export GCC_FOR_TARGET; \
  	LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \
  	NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \
  	OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \
*************** HOST_EXPORTS = \
*** 236,243 ****
  	GMPINC="$(HOST_GMPINC)"; export GMPINC; \
  	ISLLIBS="$(HOST_ISLLIBS)"; export ISLLIBS; \
  	ISLINC="$(HOST_ISLINC)"; export ISLINC; \
- 	LIBELFLIBS="$(HOST_LIBELFLIBS)"; export LIBELFLIBS; \
- 	LIBELFINC="$(HOST_LIBELFINC)"; export LIBELFINC; \
  	XGCC_FLAGS_FOR_TARGET="$(XGCC_FLAGS_FOR_TARGET)"; export XGCC_FLAGS_FOR_TARGET; \
  @if gcc-bootstrap
  	$(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \
--- 239,244 ----
*************** BASE_TARGET_EXPORTS = \
*** 306,311 ****
--- 307,313 ----
  	GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \
  	GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
  	GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
+ 	GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \
  	DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
  	DSYMUTIL="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL; \
  	LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \
*************** HOST_GMPINC = @gmpinc@
*** 343,352 ****
  HOST_ISLLIBS = @isllibs@
  HOST_ISLINC = @islinc@
  
- # Where to find libelf
- HOST_LIBELFLIBS = @libelflibs@
- HOST_LIBELFINC = @libelfinc@
- 
  # ----------------------------------------------
  # Programs producing files for the BUILD machine
  # ----------------------------------------------
--- 345,350 ----
*************** DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD
*** 376,381 ****
--- 374,380 ----
  GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
  GOC_FOR_BUILD = @GOC_FOR_BUILD@
  GDC_FOR_BUILD = @GDC_FOR_BUILD@
+ GM2_FOR_BUILD = @GM2_FOR_BUILD@
  LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
  LD_FOR_BUILD = @LD_FOR_BUILD@
  NM_FOR_BUILD = @NM_FOR_BUILD@
*************** CXXFLAGS = @CXXFLAGS@
*** 446,451 ****
--- 445,451 ----
  LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
  GOCFLAGS = $(CFLAGS)
  GDCFLAGS = $(CFLAGS)
+ GM2FLAGS = $(CFLAGS)
  
  # Pass additional PGO and LTO compiler options to the PGO build.
  BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
*************** RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @
*** 661,666 ****
--- 661,667 ----
  GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@
  GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
  GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
+ GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@
  DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
  DSYMUTIL_FOR_TARGET=@DSYMUTIL_FOR_TARGET@
  LD_FOR_TARGET=@LD_FOR_TARGET@
*************** CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARG
*** 686,691 ****
--- 687,693 ----
  LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
  LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
  LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@
+ GM2FLAGS_FOR_TARGET = -O2 -g
  GOCFLAGS_FOR_TARGET = -O2 -g
  GDCFLAGS_FOR_TARGET = -O2 -g
  
*************** all:
*** 712,718 ****
  
  # This is the list of directories that may be needed in RPATH_ENVVAR
  # so that programs built for the target machine work.
! TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_liboffloadmic)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc)
  
  @if target-libstdc++-v3
  TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:
--- 714,720 ----
  
  # This is the list of directories that may be needed in RPATH_ENVVAR
  # so that programs built for the target machine work.
! TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc)
  
  @if target-libstdc++-v3
  TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs:
*************** TARGET_LIB_PATH_libsanitizer = $$r/$(TAR
*** 726,735 ****
  TARGET_LIB_PATH_libvtv = $$r/$(TARGET_SUBDIR)/libvtv/.libs:
  @endif target-libvtv
  
- @if target-liboffloadmic
- TARGET_LIB_PATH_liboffloadmic = $$r/$(TARGET_SUBDIR)/liboffloadmic/.libs:
- @endif target-liboffloadmic
- 
  @if target-libssp
  TARGET_LIB_PATH_libssp = $$r/$(TARGET_SUBDIR)/libssp/.libs:
  @endif target-libssp
--- 728,733 ----
*************** TARGET_LIB_PATH_libssp = $$r/$(TARGET_SU
*** 738,743 ****
--- 736,745 ----
  TARGET_LIB_PATH_libphobos = $$r/$(TARGET_SUBDIR)/libphobos/src/.libs:
  @endif target-libphobos
  
+ @if target-libgm2
+ TARGET_LIB_PATH_libgm2 = $$r/$(TARGET_SUBDIR)/libgm2/.libs:
+ @endif target-libgm2
+ 
  @if target-libgomp
  TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs:
  @endif target-libgomp
*************** TARGET_LIB_PATH_libatomic = $$r/$(TARGET
*** 754,760 ****
  
  # This is the list of directories that may be needed in RPATH_ENVVAR
  # so that programs built for the host machine work.
! HOST_LIB_PATH = $(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_isl)$(HOST_LIB_PATH_libelf)
  
  # Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch
  @if gcc
--- 756,762 ----
  
  # This is the list of directories that may be needed in RPATH_ENVVAR
  # so that programs built for the host machine work.
! HOST_LIB_PATH = $(HOST_LIB_PATH_gmp)$(HOST_LIB_PATH_mpfr)$(HOST_LIB_PATH_mpc)$(HOST_LIB_PATH_isl)
  
  # Define HOST_LIB_PATH_gcc here, for the sake of TARGET_LIB_PATH, ouch
  @if gcc
*************** HOST_LIB_PATH_isl = \
*** 782,792 ****
    $$r/$(HOST_SUBDIR)/isl/.libs:$$r/$(HOST_SUBDIR)/prev-isl/.libs:
  @endif isl
  
- @if libelf
- HOST_LIB_PATH_libelf = \
-   $$r/$(HOST_SUBDIR)/libelf/.libs:$$r/$(HOST_SUBDIR)/prev-libelf/.libs:
- @endif libelf
- 
  
  CXX_FOR_TARGET_FLAG_TO_PASS = \
  	"CXX_FOR_TARGET=$(CXX_FOR_TARGET)"
--- 784,789 ----
*************** BASE_FLAGS_TO_PASS = \
*** 888,893 ****
--- 885,892 ----
  	"GOCFLAGS_FOR_TARGET=$(GOCFLAGS_FOR_TARGET)" \
  	"GDC_FOR_TARGET=$(GDC_FOR_TARGET)" \
  	"GDCFLAGS_FOR_TARGET=$(GDCFLAGS_FOR_TARGET)" \
+ 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET)" \
+ 	"GM2FLAGS_FOR_TARGET=$(GM2FLAGS_FOR_TARGET)" \
  	"LD_FOR_TARGET=$(LD_FOR_TARGET)" \
  	"LIPO_FOR_TARGET=$(LIPO_FOR_TARGET)" \
  	"LDFLAGS_FOR_TARGET=$(LDFLAGS_FOR_TARGET)" \
*************** EXTRA_HOST_FLAGS = \
*** 961,966 ****
--- 960,966 ----
  	'GFORTRAN=$(GFORTRAN)' \
  	'GOC=$(GOC)' \
  	'GDC=$(GDC)' \
+ 	'GM2=$(GM2)' \
  	'LD=$(LD)' \
  	'LIPO=$(LIPO)' \
  	'NM=$(NM)' \
*************** POSTSTAGE1_FLAGS_TO_PASS = \
*** 987,992 ****
--- 987,993 ----
  	CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
  	CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
  	GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \
+ 	GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \
  	GNATBIND="$${GNATBIND}" \
  	LDFLAGS="$${LDFLAGS}" \
  	HOST_LIBS="$${HOST_LIBS}" \
*************** EXTRA_TARGET_FLAGS = \
*** 1022,1027 ****
--- 1023,1030 ----
  	'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
  	'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \
+ 	'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \
  	'LD=$(COMPILER_LD_FOR_TARGET)' \
  	'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \
  	'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
*************** TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_P
*** 1047,1053 ****
  # The BUILD_* variables are a special case, which are used for the gcc
  # cross-building scheme.
  EXTRA_GCC_FLAGS = \
! 	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
  	"`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \
  	"`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
  
--- 1050,1057 ----
  # The BUILD_* variables are a special case, which are used for the gcc
  # cross-building scheme.
  EXTRA_GCC_FLAGS = \
! 	"GCC_FOR_TARGET=$(GCC_FOR_TARGET) $$TFLAGS" \
! 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET) $$TFLAGS" \
  	"`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \
  	"`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
  
*************** configure-host:  \
*** 1078,1084 ****
      maybe-configure-mpfr \
      maybe-configure-mpc \
      maybe-configure-isl \
-     maybe-configure-libelf \
      maybe-configure-gold \
      maybe-configure-gprof \
      maybe-configure-intl \
--- 1082,1087 ----
*************** configure-host:  \
*** 1113,1125 ****
      maybe-configure-lto-plugin \
      maybe-configure-libcc1 \
      maybe-configure-gotools \
!     maybe-configure-libctf
  .PHONY: configure-target
  configure-target:  \
      maybe-configure-target-libstdc++-v3 \
      maybe-configure-target-libsanitizer \
      maybe-configure-target-libvtv \
-     maybe-configure-target-liboffloadmic \
      maybe-configure-target-libssp \
      maybe-configure-target-newlib \
      maybe-configure-target-libgcc \
--- 1116,1128 ----
      maybe-configure-lto-plugin \
      maybe-configure-libcc1 \
      maybe-configure-gotools \
!     maybe-configure-libctf \
!     maybe-configure-libsframe
  .PHONY: configure-target
  configure-target:  \
      maybe-configure-target-libstdc++-v3 \
      maybe-configure-target-libsanitizer \
      maybe-configure-target-libvtv \
      maybe-configure-target-libssp \
      maybe-configure-target-newlib \
      maybe-configure-target-libgcc \
*************** configure-target:  \
*** 1136,1141 ****
--- 1139,1145 ----
      maybe-configure-target-zlib \
      maybe-configure-target-rda \
      maybe-configure-target-libada \
+     maybe-configure-target-libgm2 \
      maybe-configure-target-libgomp \
      maybe-configure-target-libitm \
      maybe-configure-target-libatomic
*************** all-host: maybe-all-mpc
*** 1229,1237 ****
  @if isl-no-bootstrap
  all-host: maybe-all-isl
  @endif isl-no-bootstrap
- @if libelf-no-bootstrap
- all-host: maybe-all-libelf
- @endif libelf-no-bootstrap
  @if gold-no-bootstrap
  all-host: maybe-all-gold
  @endif gold-no-bootstrap
--- 1233,1238 ----
*************** all-host: maybe-all-gotools
*** 1293,1298 ****
--- 1294,1302 ----
  @if libctf-no-bootstrap
  all-host: maybe-all-libctf
  @endif libctf-no-bootstrap
+ @if libsframe-no-bootstrap
+ all-host: maybe-all-libsframe
+ @endif libsframe-no-bootstrap
  
  .PHONY: all-target
  
*************** all-target: maybe-all-target-libsanitize
*** 1305,1311 ****
  @if target-libvtv-no-bootstrap
  all-target: maybe-all-target-libvtv
  @endif target-libvtv-no-bootstrap
- all-target: maybe-all-target-liboffloadmic
  all-target: maybe-all-target-libssp
  all-target: maybe-all-target-newlib
  @if target-libgcc-no-bootstrap
--- 1309,1314 ----
*************** all-target: maybe-all-target-zlib
*** 1330,1335 ****
--- 1333,1339 ----
  @endif target-zlib-no-bootstrap
  all-target: maybe-all-target-rda
  all-target: maybe-all-target-libada
+ all-target: maybe-all-target-libgm2
  @if target-libgomp-no-bootstrap
  all-target: maybe-all-target-libgomp
  @endif target-libgomp-no-bootstrap
*************** info-host: maybe-info-gmp
*** 1370,1376 ****
  info-host: maybe-info-mpfr
  info-host: maybe-info-mpc
  info-host: maybe-info-isl
- info-host: maybe-info-libelf
  info-host: maybe-info-gold
  info-host: maybe-info-gprof
  info-host: maybe-info-intl
--- 1374,1379 ----
*************** info-host: maybe-info-lto-plugin
*** 1406,1418 ****
  info-host: maybe-info-libcc1
  info-host: maybe-info-gotools
  info-host: maybe-info-libctf
  
  .PHONY: info-target
  
  info-target: maybe-info-target-libstdc++-v3
  info-target: maybe-info-target-libsanitizer
  info-target: maybe-info-target-libvtv
- info-target: maybe-info-target-liboffloadmic
  info-target: maybe-info-target-libssp
  info-target: maybe-info-target-newlib
  info-target: maybe-info-target-libgcc
--- 1409,1421 ----
  info-host: maybe-info-libcc1
  info-host: maybe-info-gotools
  info-host: maybe-info-libctf
+ info-host: maybe-info-libsframe
  
  .PHONY: info-target
  
  info-target: maybe-info-target-libstdc++-v3
  info-target: maybe-info-target-libsanitizer
  info-target: maybe-info-target-libvtv
  info-target: maybe-info-target-libssp
  info-target: maybe-info-target-newlib
  info-target: maybe-info-target-libgcc
*************** info-target: maybe-info-target-libffi
*** 1429,1434 ****
--- 1432,1438 ----
  info-target: maybe-info-target-zlib
  info-target: maybe-info-target-rda
  info-target: maybe-info-target-libada
+ info-target: maybe-info-target-libgm2
  info-target: maybe-info-target-libgomp
  info-target: maybe-info-target-libitm
  info-target: maybe-info-target-libatomic
*************** dvi-host: maybe-dvi-gmp
*** 1460,1466 ****
  dvi-host: maybe-dvi-mpfr
  dvi-host: maybe-dvi-mpc
  dvi-host: maybe-dvi-isl
- dvi-host: maybe-dvi-libelf
  dvi-host: maybe-dvi-gold
  dvi-host: maybe-dvi-gprof
  dvi-host: maybe-dvi-intl
--- 1464,1469 ----
*************** dvi-host: maybe-dvi-lto-plugin
*** 1496,1508 ****
  dvi-host: maybe-dvi-libcc1
  dvi-host: maybe-dvi-gotools
  dvi-host: maybe-dvi-libctf
  
  .PHONY: dvi-target
  
  dvi-target: maybe-dvi-target-libstdc++-v3
  dvi-target: maybe-dvi-target-libsanitizer
  dvi-target: maybe-dvi-target-libvtv
- dvi-target: maybe-dvi-target-liboffloadmic
  dvi-target: maybe-dvi-target-libssp
  dvi-target: maybe-dvi-target-newlib
  dvi-target: maybe-dvi-target-libgcc
--- 1499,1511 ----
  dvi-host: maybe-dvi-libcc1
  dvi-host: maybe-dvi-gotools
  dvi-host: maybe-dvi-libctf
+ dvi-host: maybe-dvi-libsframe
  
  .PHONY: dvi-target
  
  dvi-target: maybe-dvi-target-libstdc++-v3
  dvi-target: maybe-dvi-target-libsanitizer
  dvi-target: maybe-dvi-target-libvtv
  dvi-target: maybe-dvi-target-libssp
  dvi-target: maybe-dvi-target-newlib
  dvi-target: maybe-dvi-target-libgcc
*************** dvi-target: maybe-dvi-target-libffi
*** 1519,1524 ****
--- 1522,1528 ----
  dvi-target: maybe-dvi-target-zlib
  dvi-target: maybe-dvi-target-rda
  dvi-target: maybe-dvi-target-libada
+ dvi-target: maybe-dvi-target-libgm2
  dvi-target: maybe-dvi-target-libgomp
  dvi-target: maybe-dvi-target-libitm
  dvi-target: maybe-dvi-target-libatomic
*************** pdf-host: maybe-pdf-gmp
*** 1550,1556 ****
  pdf-host: maybe-pdf-mpfr
  pdf-host: maybe-pdf-mpc
  pdf-host: maybe-pdf-isl
- pdf-host: maybe-pdf-libelf
  pdf-host: maybe-pdf-gold
  pdf-host: maybe-pdf-gprof
  pdf-host: maybe-pdf-intl
--- 1554,1559 ----
*************** pdf-host: maybe-pdf-lto-plugin
*** 1586,1598 ****
  pdf-host: maybe-pdf-libcc1
  pdf-host: maybe-pdf-gotools
  pdf-host: maybe-pdf-libctf
  
  .PHONY: pdf-target
  
  pdf-target: maybe-pdf-target-libstdc++-v3
  pdf-target: maybe-pdf-target-libsanitizer
  pdf-target: maybe-pdf-target-libvtv
- pdf-target: maybe-pdf-target-liboffloadmic
  pdf-target: maybe-pdf-target-libssp
  pdf-target: maybe-pdf-target-newlib
  pdf-target: maybe-pdf-target-libgcc
--- 1589,1601 ----
  pdf-host: maybe-pdf-libcc1
  pdf-host: maybe-pdf-gotools
  pdf-host: maybe-pdf-libctf
+ pdf-host: maybe-pdf-libsframe
  
  .PHONY: pdf-target
  
  pdf-target: maybe-pdf-target-libstdc++-v3
  pdf-target: maybe-pdf-target-libsanitizer
  pdf-target: maybe-pdf-target-libvtv
  pdf-target: maybe-pdf-target-libssp
  pdf-target: maybe-pdf-target-newlib
  pdf-target: maybe-pdf-target-libgcc
*************** pdf-target: maybe-pdf-target-libffi
*** 1609,1614 ****
--- 1612,1618 ----
  pdf-target: maybe-pdf-target-zlib
  pdf-target: maybe-pdf-target-rda
  pdf-target: maybe-pdf-target-libada
+ pdf-target: maybe-pdf-target-libgm2
  pdf-target: maybe-pdf-target-libgomp
  pdf-target: maybe-pdf-target-libitm
  pdf-target: maybe-pdf-target-libatomic
*************** html-host: maybe-html-gmp
*** 1640,1646 ****
  html-host: maybe-html-mpfr
  html-host: maybe-html-mpc
  html-host: maybe-html-isl
- html-host: maybe-html-libelf
  html-host: maybe-html-gold
  html-host: maybe-html-gprof
  html-host: maybe-html-intl
--- 1644,1649 ----
*************** html-host: maybe-html-lto-plugin
*** 1676,1688 ****
  html-host: maybe-html-libcc1
  html-host: maybe-html-gotools
  html-host: maybe-html-libctf
  
  .PHONY: html-target
  
  html-target: maybe-html-target-libstdc++-v3
  html-target: maybe-html-target-libsanitizer
  html-target: maybe-html-target-libvtv
- html-target: maybe-html-target-liboffloadmic
  html-target: maybe-html-target-libssp
  html-target: maybe-html-target-newlib
  html-target: maybe-html-target-libgcc
--- 1679,1691 ----
  html-host: maybe-html-libcc1
  html-host: maybe-html-gotools
  html-host: maybe-html-libctf
+ html-host: maybe-html-libsframe
  
  .PHONY: html-target
  
  html-target: maybe-html-target-libstdc++-v3
  html-target: maybe-html-target-libsanitizer
  html-target: maybe-html-target-libvtv
  html-target: maybe-html-target-libssp
  html-target: maybe-html-target-newlib
  html-target: maybe-html-target-libgcc
*************** html-target: maybe-html-target-libffi
*** 1699,1704 ****
--- 1702,1708 ----
  html-target: maybe-html-target-zlib
  html-target: maybe-html-target-rda
  html-target: maybe-html-target-libada
+ html-target: maybe-html-target-libgm2
  html-target: maybe-html-target-libgomp
  html-target: maybe-html-target-libitm
  html-target: maybe-html-target-libatomic
*************** TAGS-host: maybe-TAGS-gmp
*** 1730,1736 ****
  TAGS-host: maybe-TAGS-mpfr
  TAGS-host: maybe-TAGS-mpc
  TAGS-host: maybe-TAGS-isl
- TAGS-host: maybe-TAGS-libelf
  TAGS-host: maybe-TAGS-gold
  TAGS-host: maybe-TAGS-gprof
  TAGS-host: maybe-TAGS-intl
--- 1734,1739 ----
*************** TAGS-host: maybe-TAGS-lto-plugin
*** 1766,1778 ****
  TAGS-host: maybe-TAGS-libcc1
  TAGS-host: maybe-TAGS-gotools
  TAGS-host: maybe-TAGS-libctf
  
  .PHONY: TAGS-target
  
  TAGS-target: maybe-TAGS-target-libstdc++-v3
  TAGS-target: maybe-TAGS-target-libsanitizer
  TAGS-target: maybe-TAGS-target-libvtv
- TAGS-target: maybe-TAGS-target-liboffloadmic
  TAGS-target: maybe-TAGS-target-libssp
  TAGS-target: maybe-TAGS-target-newlib
  TAGS-target: maybe-TAGS-target-libgcc
--- 1769,1781 ----
  TAGS-host: maybe-TAGS-libcc1
  TAGS-host: maybe-TAGS-gotools
  TAGS-host: maybe-TAGS-libctf
+ TAGS-host: maybe-TAGS-libsframe
  
  .PHONY: TAGS-target
  
  TAGS-target: maybe-TAGS-target-libstdc++-v3
  TAGS-target: maybe-TAGS-target-libsanitizer
  TAGS-target: maybe-TAGS-target-libvtv
  TAGS-target: maybe-TAGS-target-libssp
  TAGS-target: maybe-TAGS-target-newlib
  TAGS-target: maybe-TAGS-target-libgcc
*************** TAGS-target: maybe-TAGS-target-libffi
*** 1789,1794 ****
--- 1792,1798 ----
  TAGS-target: maybe-TAGS-target-zlib
  TAGS-target: maybe-TAGS-target-rda
  TAGS-target: maybe-TAGS-target-libada
+ TAGS-target: maybe-TAGS-target-libgm2
  TAGS-target: maybe-TAGS-target-libgomp
  TAGS-target: maybe-TAGS-target-libitm
  TAGS-target: maybe-TAGS-target-libatomic
*************** install-info-host: maybe-install-info-gm
*** 1820,1826 ****
  install-info-host: maybe-install-info-mpfr
  install-info-host: maybe-install-info-mpc
  install-info-host: maybe-install-info-isl
- install-info-host: maybe-install-info-libelf
  install-info-host: maybe-install-info-gold
  install-info-host: maybe-install-info-gprof
  install-info-host: maybe-install-info-intl
--- 1824,1829 ----
*************** install-info-host: maybe-install-info-lt
*** 1856,1868 ****
  install-info-host: maybe-install-info-libcc1
  install-info-host: maybe-install-info-gotools
  install-info-host: maybe-install-info-libctf
  
  .PHONY: install-info-target
  
  install-info-target: maybe-install-info-target-libstdc++-v3
  install-info-target: maybe-install-info-target-libsanitizer
  install-info-target: maybe-install-info-target-libvtv
- install-info-target: maybe-install-info-target-liboffloadmic
  install-info-target: maybe-install-info-target-libssp
  install-info-target: maybe-install-info-target-newlib
  install-info-target: maybe-install-info-target-libgcc
--- 1859,1871 ----
  install-info-host: maybe-install-info-libcc1
  install-info-host: maybe-install-info-gotools
  install-info-host: maybe-install-info-libctf
+ install-info-host: maybe-install-info-libsframe
  
  .PHONY: install-info-target
  
  install-info-target: maybe-install-info-target-libstdc++-v3
  install-info-target: maybe-install-info-target-libsanitizer
  install-info-target: maybe-install-info-target-libvtv
  install-info-target: maybe-install-info-target-libssp
  install-info-target: maybe-install-info-target-newlib
  install-info-target: maybe-install-info-target-libgcc
*************** install-info-target: maybe-install-info-
*** 1879,1884 ****
--- 1882,1888 ----
  install-info-target: maybe-install-info-target-zlib
  install-info-target: maybe-install-info-target-rda
  install-info-target: maybe-install-info-target-libada
+ install-info-target: maybe-install-info-target-libgm2
  install-info-target: maybe-install-info-target-libgomp
  install-info-target: maybe-install-info-target-libitm
  install-info-target: maybe-install-info-target-libatomic
*************** install-dvi-host: maybe-install-dvi-gmp
*** 1910,1916 ****
  install-dvi-host: maybe-install-dvi-mpfr
  install-dvi-host: maybe-install-dvi-mpc
  install-dvi-host: maybe-install-dvi-isl
- install-dvi-host: maybe-install-dvi-libelf
  install-dvi-host: maybe-install-dvi-gold
  install-dvi-host: maybe-install-dvi-gprof
  install-dvi-host: maybe-install-dvi-intl
--- 1914,1919 ----
*************** install-dvi-host: maybe-install-dvi-lto-
*** 1946,1958 ****
  install-dvi-host: maybe-install-dvi-libcc1
  install-dvi-host: maybe-install-dvi-gotools
  install-dvi-host: maybe-install-dvi-libctf
  
  .PHONY: install-dvi-target
  
  install-dvi-target: maybe-install-dvi-target-libstdc++-v3
  install-dvi-target: maybe-install-dvi-target-libsanitizer
  install-dvi-target: maybe-install-dvi-target-libvtv
- install-dvi-target: maybe-install-dvi-target-liboffloadmic
  install-dvi-target: maybe-install-dvi-target-libssp
  install-dvi-target: maybe-install-dvi-target-newlib
  install-dvi-target: maybe-install-dvi-target-libgcc
--- 1949,1961 ----
  install-dvi-host: maybe-install-dvi-libcc1
  install-dvi-host: maybe-install-dvi-gotools
  install-dvi-host: maybe-install-dvi-libctf
+ install-dvi-host: maybe-install-dvi-libsframe
  
  .PHONY: install-dvi-target
  
  install-dvi-target: maybe-install-dvi-target-libstdc++-v3
  install-dvi-target: maybe-install-dvi-target-libsanitizer
  install-dvi-target: maybe-install-dvi-target-libvtv
  install-dvi-target: maybe-install-dvi-target-libssp
  install-dvi-target: maybe-install-dvi-target-newlib
  install-dvi-target: maybe-install-dvi-target-libgcc
*************** install-dvi-target: maybe-install-dvi-ta
*** 1969,1974 ****
--- 1972,1978 ----
  install-dvi-target: maybe-install-dvi-target-zlib
  install-dvi-target: maybe-install-dvi-target-rda
  install-dvi-target: maybe-install-dvi-target-libada
+ install-dvi-target: maybe-install-dvi-target-libgm2
  install-dvi-target: maybe-install-dvi-target-libgomp
  install-dvi-target: maybe-install-dvi-target-libitm
  install-dvi-target: maybe-install-dvi-target-libatomic
*************** install-pdf-host: maybe-install-pdf-gmp
*** 2000,2006 ****
  install-pdf-host: maybe-install-pdf-mpfr
  install-pdf-host: maybe-install-pdf-mpc
  install-pdf-host: maybe-install-pdf-isl
- install-pdf-host: maybe-install-pdf-libelf
  install-pdf-host: maybe-install-pdf-gold
  install-pdf-host: maybe-install-pdf-gprof
  install-pdf-host: maybe-install-pdf-intl
--- 2004,2009 ----
*************** install-pdf-host: maybe-install-pdf-lto-
*** 2036,2048 ****
  install-pdf-host: maybe-install-pdf-libcc1
  install-pdf-host: maybe-install-pdf-gotools
  install-pdf-host: maybe-install-pdf-libctf
  
  .PHONY: install-pdf-target
  
  install-pdf-target: maybe-install-pdf-target-libstdc++-v3
  install-pdf-target: maybe-install-pdf-target-libsanitizer
  install-pdf-target: maybe-install-pdf-target-libvtv
- install-pdf-target: maybe-install-pdf-target-liboffloadmic
  install-pdf-target: maybe-install-pdf-target-libssp
  install-pdf-target: maybe-install-pdf-target-newlib
  install-pdf-target: maybe-install-pdf-target-libgcc
--- 2039,2051 ----
  install-pdf-host: maybe-install-pdf-libcc1
  install-pdf-host: maybe-install-pdf-gotools
  install-pdf-host: maybe-install-pdf-libctf
+ install-pdf-host: maybe-install-pdf-libsframe
  
  .PHONY: install-pdf-target
  
  install-pdf-target: maybe-install-pdf-target-libstdc++-v3
  install-pdf-target: maybe-install-pdf-target-libsanitizer
  install-pdf-target: maybe-install-pdf-target-libvtv
  install-pdf-target: maybe-install-pdf-target-libssp
  install-pdf-target: maybe-install-pdf-target-newlib
  install-pdf-target: maybe-install-pdf-target-libgcc
*************** install-pdf-target: maybe-install-pdf-ta
*** 2059,2064 ****
--- 2062,2068 ----
  install-pdf-target: maybe-install-pdf-target-zlib
  install-pdf-target: maybe-install-pdf-target-rda
  install-pdf-target: maybe-install-pdf-target-libada
+ install-pdf-target: maybe-install-pdf-target-libgm2
  install-pdf-target: maybe-install-pdf-target-libgomp
  install-pdf-target: maybe-install-pdf-target-libitm
  install-pdf-target: maybe-install-pdf-target-libatomic
*************** install-html-host: maybe-install-html-gm
*** 2090,2096 ****
  install-html-host: maybe-install-html-mpfr
  install-html-host: maybe-install-html-mpc
  install-html-host: maybe-install-html-isl
- install-html-host: maybe-install-html-libelf
  install-html-host: maybe-install-html-gold
  install-html-host: maybe-install-html-gprof
  install-html-host: maybe-install-html-intl
--- 2094,2099 ----
*************** install-html-host: maybe-install-html-lt
*** 2126,2138 ****
  install-html-host: maybe-install-html-libcc1
  install-html-host: maybe-install-html-gotools
  install-html-host: maybe-install-html-libctf
  
  .PHONY: install-html-target
  
  install-html-target: maybe-install-html-target-libstdc++-v3
  install-html-target: maybe-install-html-target-libsanitizer
  install-html-target: maybe-install-html-target-libvtv
- install-html-target: maybe-install-html-target-liboffloadmic
  install-html-target: maybe-install-html-target-libssp
  install-html-target: maybe-install-html-target-newlib
  install-html-target: maybe-install-html-target-libgcc
--- 2129,2141 ----
  install-html-host: maybe-install-html-libcc1
  install-html-host: maybe-install-html-gotools
  install-html-host: maybe-install-html-libctf
+ install-html-host: maybe-install-html-libsframe
  
  .PHONY: install-html-target
  
  install-html-target: maybe-install-html-target-libstdc++-v3
  install-html-target: maybe-install-html-target-libsanitizer
  install-html-target: maybe-install-html-target-libvtv
  install-html-target: maybe-install-html-target-libssp
  install-html-target: maybe-install-html-target-newlib
  install-html-target: maybe-install-html-target-libgcc
*************** install-html-target: maybe-install-html-
*** 2149,2154 ****
--- 2152,2158 ----
  install-html-target: maybe-install-html-target-zlib
  install-html-target: maybe-install-html-target-rda
  install-html-target: maybe-install-html-target-libada
+ install-html-target: maybe-install-html-target-libgm2
  install-html-target: maybe-install-html-target-libgomp
  install-html-target: maybe-install-html-target-libitm
  install-html-target: maybe-install-html-target-libatomic
*************** installcheck-host: maybe-installcheck-gm
*** 2180,2186 ****
  installcheck-host: maybe-installcheck-mpfr
  installcheck-host: maybe-installcheck-mpc
  installcheck-host: maybe-installcheck-isl
- installcheck-host: maybe-installcheck-libelf
  installcheck-host: maybe-installcheck-gold
  installcheck-host: maybe-installcheck-gprof
  installcheck-host: maybe-installcheck-intl
--- 2184,2189 ----
*************** installcheck-host: maybe-installcheck-lt
*** 2216,2228 ****
  installcheck-host: maybe-installcheck-libcc1
  installcheck-host: maybe-installcheck-gotools
  installcheck-host: maybe-installcheck-libctf
  
  .PHONY: installcheck-target
  
  installcheck-target: maybe-installcheck-target-libstdc++-v3
  installcheck-target: maybe-installcheck-target-libsanitizer
  installcheck-target: maybe-installcheck-target-libvtv
- installcheck-target: maybe-installcheck-target-liboffloadmic
  installcheck-target: maybe-installcheck-target-libssp
  installcheck-target: maybe-installcheck-target-newlib
  installcheck-target: maybe-installcheck-target-libgcc
--- 2219,2231 ----
  installcheck-host: maybe-installcheck-libcc1
  installcheck-host: maybe-installcheck-gotools
  installcheck-host: maybe-installcheck-libctf
+ installcheck-host: maybe-installcheck-libsframe
  
  .PHONY: installcheck-target
  
  installcheck-target: maybe-installcheck-target-libstdc++-v3
  installcheck-target: maybe-installcheck-target-libsanitizer
  installcheck-target: maybe-installcheck-target-libvtv
  installcheck-target: maybe-installcheck-target-libssp
  installcheck-target: maybe-installcheck-target-newlib
  installcheck-target: maybe-installcheck-target-libgcc
*************** installcheck-target: maybe-installcheck-
*** 2239,2244 ****
--- 2242,2248 ----
  installcheck-target: maybe-installcheck-target-zlib
  installcheck-target: maybe-installcheck-target-rda
  installcheck-target: maybe-installcheck-target-libada
+ installcheck-target: maybe-installcheck-target-libgm2
  installcheck-target: maybe-installcheck-target-libgomp
  installcheck-target: maybe-installcheck-target-libitm
  installcheck-target: maybe-installcheck-target-libatomic
*************** mostlyclean-host: maybe-mostlyclean-gmp
*** 2270,2276 ****
  mostlyclean-host: maybe-mostlyclean-mpfr
  mostlyclean-host: maybe-mostlyclean-mpc
  mostlyclean-host: maybe-mostlyclean-isl
- mostlyclean-host: maybe-mostlyclean-libelf
  mostlyclean-host: maybe-mostlyclean-gold
  mostlyclean-host: maybe-mostlyclean-gprof
  mostlyclean-host: maybe-mostlyclean-intl
--- 2274,2279 ----
*************** mostlyclean-host: maybe-mostlyclean-lto-
*** 2306,2318 ****
  mostlyclean-host: maybe-mostlyclean-libcc1
  mostlyclean-host: maybe-mostlyclean-gotools
  mostlyclean-host: maybe-mostlyclean-libctf
  
  .PHONY: mostlyclean-target
  
  mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3
  mostlyclean-target: maybe-mostlyclean-target-libsanitizer
  mostlyclean-target: maybe-mostlyclean-target-libvtv
- mostlyclean-target: maybe-mostlyclean-target-liboffloadmic
  mostlyclean-target: maybe-mostlyclean-target-libssp
  mostlyclean-target: maybe-mostlyclean-target-newlib
  mostlyclean-target: maybe-mostlyclean-target-libgcc
--- 2309,2321 ----
  mostlyclean-host: maybe-mostlyclean-libcc1
  mostlyclean-host: maybe-mostlyclean-gotools
  mostlyclean-host: maybe-mostlyclean-libctf
+ mostlyclean-host: maybe-mostlyclean-libsframe
  
  .PHONY: mostlyclean-target
  
  mostlyclean-target: maybe-mostlyclean-target-libstdc++-v3
  mostlyclean-target: maybe-mostlyclean-target-libsanitizer
  mostlyclean-target: maybe-mostlyclean-target-libvtv
  mostlyclean-target: maybe-mostlyclean-target-libssp
  mostlyclean-target: maybe-mostlyclean-target-newlib
  mostlyclean-target: maybe-mostlyclean-target-libgcc
*************** mostlyclean-target: maybe-mostlyclean-ta
*** 2329,2334 ****
--- 2332,2338 ----
  mostlyclean-target: maybe-mostlyclean-target-zlib
  mostlyclean-target: maybe-mostlyclean-target-rda
  mostlyclean-target: maybe-mostlyclean-target-libada
+ mostlyclean-target: maybe-mostlyclean-target-libgm2
  mostlyclean-target: maybe-mostlyclean-target-libgomp
  mostlyclean-target: maybe-mostlyclean-target-libitm
  mostlyclean-target: maybe-mostlyclean-target-libatomic
*************** clean-host: maybe-clean-gmp
*** 2360,2366 ****
  clean-host: maybe-clean-mpfr
  clean-host: maybe-clean-mpc
  clean-host: maybe-clean-isl
- clean-host: maybe-clean-libelf
  clean-host: maybe-clean-gold
  clean-host: maybe-clean-gprof
  clean-host: maybe-clean-intl
--- 2364,2369 ----
*************** clean-host: maybe-clean-lto-plugin
*** 2396,2408 ****
  clean-host: maybe-clean-libcc1
  clean-host: maybe-clean-gotools
  clean-host: maybe-clean-libctf
  
  .PHONY: clean-target
  
  clean-target: maybe-clean-target-libstdc++-v3
  clean-target: maybe-clean-target-libsanitizer
  clean-target: maybe-clean-target-libvtv
- clean-target: maybe-clean-target-liboffloadmic
  clean-target: maybe-clean-target-libssp
  clean-target: maybe-clean-target-newlib
  clean-target: maybe-clean-target-libgcc
--- 2399,2411 ----
  clean-host: maybe-clean-libcc1
  clean-host: maybe-clean-gotools
  clean-host: maybe-clean-libctf
+ clean-host: maybe-clean-libsframe
  
  .PHONY: clean-target
  
  clean-target: maybe-clean-target-libstdc++-v3
  clean-target: maybe-clean-target-libsanitizer
  clean-target: maybe-clean-target-libvtv
  clean-target: maybe-clean-target-libssp
  clean-target: maybe-clean-target-newlib
  clean-target: maybe-clean-target-libgcc
*************** clean-target: maybe-clean-target-libffi
*** 2419,2424 ****
--- 2422,2428 ----
  clean-target: maybe-clean-target-zlib
  clean-target: maybe-clean-target-rda
  clean-target: maybe-clean-target-libada
+ clean-target: maybe-clean-target-libgm2
  clean-target: maybe-clean-target-libgomp
  clean-target: maybe-clean-target-libitm
  clean-target: maybe-clean-target-libatomic
*************** distclean-host: maybe-distclean-gmp
*** 2450,2456 ****
  distclean-host: maybe-distclean-mpfr
  distclean-host: maybe-distclean-mpc
  distclean-host: maybe-distclean-isl
- distclean-host: maybe-distclean-libelf
  distclean-host: maybe-distclean-gold
  distclean-host: maybe-distclean-gprof
  distclean-host: maybe-distclean-intl
--- 2454,2459 ----
*************** distclean-host: maybe-distclean-lto-plug
*** 2486,2498 ****
  distclean-host: maybe-distclean-libcc1
  distclean-host: maybe-distclean-gotools
  distclean-host: maybe-distclean-libctf
  
  .PHONY: distclean-target
  
  distclean-target: maybe-distclean-target-libstdc++-v3
  distclean-target: maybe-distclean-target-libsanitizer
  distclean-target: maybe-distclean-target-libvtv
- distclean-target: maybe-distclean-target-liboffloadmic
  distclean-target: maybe-distclean-target-libssp
  distclean-target: maybe-distclean-target-newlib
  distclean-target: maybe-distclean-target-libgcc
--- 2489,2501 ----
  distclean-host: maybe-distclean-libcc1
  distclean-host: maybe-distclean-gotools
  distclean-host: maybe-distclean-libctf
+ distclean-host: maybe-distclean-libsframe
  
  .PHONY: distclean-target
  
  distclean-target: maybe-distclean-target-libstdc++-v3
  distclean-target: maybe-distclean-target-libsanitizer
  distclean-target: maybe-distclean-target-libvtv
  distclean-target: maybe-distclean-target-libssp
  distclean-target: maybe-distclean-target-newlib
  distclean-target: maybe-distclean-target-libgcc
*************** distclean-target: maybe-distclean-target
*** 2509,2514 ****
--- 2512,2518 ----
  distclean-target: maybe-distclean-target-zlib
  distclean-target: maybe-distclean-target-rda
  distclean-target: maybe-distclean-target-libada
+ distclean-target: maybe-distclean-target-libgm2
  distclean-target: maybe-distclean-target-libgomp
  distclean-target: maybe-distclean-target-libitm
  distclean-target: maybe-distclean-target-libatomic
*************** maintainer-clean-host: maybe-maintainer-
*** 2540,2546 ****
  maintainer-clean-host: maybe-maintainer-clean-mpfr
  maintainer-clean-host: maybe-maintainer-clean-mpc
  maintainer-clean-host: maybe-maintainer-clean-isl
- maintainer-clean-host: maybe-maintainer-clean-libelf
  maintainer-clean-host: maybe-maintainer-clean-gold
  maintainer-clean-host: maybe-maintainer-clean-gprof
  maintainer-clean-host: maybe-maintainer-clean-intl
--- 2544,2549 ----
*************** maintainer-clean-host: maybe-maintainer-
*** 2576,2588 ****
  maintainer-clean-host: maybe-maintainer-clean-libcc1
  maintainer-clean-host: maybe-maintainer-clean-gotools
  maintainer-clean-host: maybe-maintainer-clean-libctf
  
  .PHONY: maintainer-clean-target
  
  maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3
  maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer
  maintainer-clean-target: maybe-maintainer-clean-target-libvtv
- maintainer-clean-target: maybe-maintainer-clean-target-liboffloadmic
  maintainer-clean-target: maybe-maintainer-clean-target-libssp
  maintainer-clean-target: maybe-maintainer-clean-target-newlib
  maintainer-clean-target: maybe-maintainer-clean-target-libgcc
--- 2579,2591 ----
  maintainer-clean-host: maybe-maintainer-clean-libcc1
  maintainer-clean-host: maybe-maintainer-clean-gotools
  maintainer-clean-host: maybe-maintainer-clean-libctf
+ maintainer-clean-host: maybe-maintainer-clean-libsframe
  
  .PHONY: maintainer-clean-target
  
  maintainer-clean-target: maybe-maintainer-clean-target-libstdc++-v3
  maintainer-clean-target: maybe-maintainer-clean-target-libsanitizer
  maintainer-clean-target: maybe-maintainer-clean-target-libvtv
  maintainer-clean-target: maybe-maintainer-clean-target-libssp
  maintainer-clean-target: maybe-maintainer-clean-target-newlib
  maintainer-clean-target: maybe-maintainer-clean-target-libgcc
*************** maintainer-clean-target: maybe-maintaine
*** 2599,2604 ****
--- 2602,2608 ----
  maintainer-clean-target: maybe-maintainer-clean-target-zlib
  maintainer-clean-target: maybe-maintainer-clean-target-rda
  maintainer-clean-target: maybe-maintainer-clean-target-libada
+ maintainer-clean-target: maybe-maintainer-clean-target-libgm2
  maintainer-clean-target: maybe-maintainer-clean-target-libgomp
  maintainer-clean-target: maybe-maintainer-clean-target-libitm
  maintainer-clean-target: maybe-maintainer-clean-target-libatomic
*************** check-host:  \
*** 2688,2694 ****
      maybe-check-mpfr \
      maybe-check-mpc \
      maybe-check-isl \
-     maybe-check-libelf \
      maybe-check-gold \
      maybe-check-gprof \
      maybe-check-intl \
--- 2692,2697 ----
*************** check-host:  \
*** 2723,2736 ****
      maybe-check-lto-plugin \
      maybe-check-libcc1 \
      maybe-check-gotools \
!     maybe-check-libctf
  
  .PHONY: check-target
  check-target:  \
      maybe-check-target-libstdc++-v3 \
      maybe-check-target-libsanitizer \
      maybe-check-target-libvtv \
-     maybe-check-target-liboffloadmic \
      maybe-check-target-libssp \
      maybe-check-target-newlib \
      maybe-check-target-libgcc \
--- 2726,2739 ----
      maybe-check-lto-plugin \
      maybe-check-libcc1 \
      maybe-check-gotools \
!     maybe-check-libctf \
!     maybe-check-libsframe
  
  .PHONY: check-target
  check-target:  \
      maybe-check-target-libstdc++-v3 \
      maybe-check-target-libsanitizer \
      maybe-check-target-libvtv \
      maybe-check-target-libssp \
      maybe-check-target-newlib \
      maybe-check-target-libgcc \
*************** check-target:  \
*** 2747,2752 ****
--- 2750,2756 ----
      maybe-check-target-zlib \
      maybe-check-target-rda \
      maybe-check-target-libada \
+     maybe-check-target-libgm2 \
      maybe-check-target-libgomp \
      maybe-check-target-libitm \
      maybe-check-target-libatomic
*************** install-host-nogcc:  \
*** 2825,2831 ****
      maybe-install-mpfr \
      maybe-install-mpc \
      maybe-install-isl \
-     maybe-install-libelf \
      maybe-install-gold \
      maybe-install-gprof \
      maybe-install-intl \
--- 2829,2834 ----
*************** install-host-nogcc:  \
*** 2860,2866 ****
      maybe-install-lto-plugin \
      maybe-install-libcc1 \
      maybe-install-gotools \
!     maybe-install-libctf
  
  .PHONY: install-host
  install-host:  \
--- 2863,2870 ----
      maybe-install-lto-plugin \
      maybe-install-libcc1 \
      maybe-install-gotools \
!     maybe-install-libctf \
!     maybe-install-libsframe
  
  .PHONY: install-host
  install-host:  \
*************** install-host:  \
*** 2880,2886 ****
      maybe-install-mpfr \
      maybe-install-mpc \
      maybe-install-isl \
-     maybe-install-libelf \
      maybe-install-gold \
      maybe-install-gprof \
      maybe-install-intl \
--- 2884,2889 ----
*************** install-host:  \
*** 2915,2928 ****
      maybe-install-lto-plugin \
      maybe-install-libcc1 \
      maybe-install-gotools \
!     maybe-install-libctf
  
  .PHONY: install-target
  install-target:  \
      maybe-install-target-libstdc++-v3 \
      maybe-install-target-libsanitizer \
      maybe-install-target-libvtv \
-     maybe-install-target-liboffloadmic \
      maybe-install-target-libssp \
      maybe-install-target-newlib \
      maybe-install-target-libgcc \
--- 2918,2931 ----
      maybe-install-lto-plugin \
      maybe-install-libcc1 \
      maybe-install-gotools \
!     maybe-install-libctf \
!     maybe-install-libsframe
  
  .PHONY: install-target
  install-target:  \
      maybe-install-target-libstdc++-v3 \
      maybe-install-target-libsanitizer \
      maybe-install-target-libvtv \
      maybe-install-target-libssp \
      maybe-install-target-newlib \
      maybe-install-target-libgcc \
*************** install-target:  \
*** 2939,2944 ****
--- 2942,2948 ----
      maybe-install-target-zlib \
      maybe-install-target-rda \
      maybe-install-target-libada \
+     maybe-install-target-libgm2 \
      maybe-install-target-libgomp \
      maybe-install-target-libitm \
      maybe-install-target-libatomic
*************** install-strip-host:  \
*** 2990,2996 ****
      maybe-install-strip-mpfr \
      maybe-install-strip-mpc \
      maybe-install-strip-isl \
-     maybe-install-strip-libelf \
      maybe-install-strip-gold \
      maybe-install-strip-gprof \
      maybe-install-strip-intl \
--- 2994,2999 ----
*************** install-strip-host:  \
*** 3025,3038 ****
      maybe-install-strip-lto-plugin \
      maybe-install-strip-libcc1 \
      maybe-install-strip-gotools \
!     maybe-install-strip-libctf
  
  .PHONY: install-strip-target
  install-strip-target:  \
      maybe-install-strip-target-libstdc++-v3 \
      maybe-install-strip-target-libsanitizer \
      maybe-install-strip-target-libvtv \
-     maybe-install-strip-target-liboffloadmic \
      maybe-install-strip-target-libssp \
      maybe-install-strip-target-newlib \
      maybe-install-strip-target-libgcc \
--- 3028,3041 ----
      maybe-install-strip-lto-plugin \
      maybe-install-strip-libcc1 \
      maybe-install-strip-gotools \
!     maybe-install-strip-libctf \
!     maybe-install-strip-libsframe
  
  .PHONY: install-strip-target
  install-strip-target:  \
      maybe-install-strip-target-libstdc++-v3 \
      maybe-install-strip-target-libsanitizer \
      maybe-install-strip-target-libvtv \
      maybe-install-strip-target-libssp \
      maybe-install-strip-target-newlib \
      maybe-install-strip-target-libgcc \
*************** install-strip-target:  \
*** 3049,3054 ****
--- 3052,3058 ----
      maybe-install-strip-target-zlib \
      maybe-install-strip-target-rda \
      maybe-install-strip-target-libada \
+     maybe-install-strip-target-libgm2 \
      maybe-install-strip-target-libgomp \
      maybe-install-strip-target-libitm \
      maybe-install-strip-target-libatomic
*************** configure-gmp:
*** 13152,13158 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
! 	  --target=none-${host_vendor}-${host_os} --disable-shared LEX="touch lex.yy.c" \
  	  || exit 1
  @endif gmp
  
--- 13156,13162 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=none-${host_vendor}-${host_os} \
! 	  --target=none-${host_vendor}-${host_os} --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@ \
  	  || exit 1
  @endif gmp
  
*************** configure-stage1-gmp:
*** 13188,13194 ****
  	  --target=none-${host_vendor}-${host_os} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stage2-gmp maybe-configure-stage2-gmp
--- 13192,13198 ----
  	  --target=none-${host_vendor}-${host_os} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stage2-gmp maybe-configure-stage2-gmp
*************** configure-stage2-gmp:
*** 13222,13228 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stage3-gmp maybe-configure-stage3-gmp
--- 13226,13232 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stage3-gmp maybe-configure-stage3-gmp
*************** configure-stage3-gmp:
*** 13256,13262 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stage4-gmp maybe-configure-stage4-gmp
--- 13260,13266 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stage4-gmp maybe-configure-stage4-gmp
*************** configure-stage4-gmp:
*** 13290,13296 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stageprofile-gmp maybe-configure-stageprofile-gmp
--- 13294,13300 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stageprofile-gmp maybe-configure-stageprofile-gmp
*************** configure-stageprofile-gmp:
*** 13324,13330 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stagetrain-gmp maybe-configure-stagetrain-gmp
--- 13328,13334 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stagetrain-gmp maybe-configure-stagetrain-gmp
*************** configure-stagetrain-gmp:
*** 13358,13364 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stagefeedback-gmp maybe-configure-stagefeedback-gmp
--- 13362,13368 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stagefeedback-gmp maybe-configure-stagefeedback-gmp
*************** configure-stagefeedback-gmp:
*** 13392,13398 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stageautoprofile-gmp maybe-configure-stageautoprofile-gmp
--- 13396,13402 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stageautoprofile-gmp maybe-configure-stageautoprofile-gmp
*************** configure-stageautoprofile-gmp:
*** 13426,13432 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  .PHONY: configure-stageautofeedback-gmp maybe-configure-stageautofeedback-gmp
--- 13430,13436 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  .PHONY: configure-stageautofeedback-gmp maybe-configure-stageautofeedback-gmp
*************** configure-stageautofeedback-gmp:
*** 13460,13466 ****
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c"
  @endif gmp-bootstrap
  
  
--- 13464,13470 ----
  	  --target=none-${host_vendor}-${host_os} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared LEX="touch lex.yy.c" @host_libs_picflag@
  @endif gmp-bootstrap
  
  
*************** configure-mpfr:
*** 14289,14295 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared @extra_mpfr_configure_flags@ \
  	  || exit 1
  @endif mpfr
  
--- 14293,14299 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@ \
  	  || exit 1
  @endif mpfr
  
*************** configure-stage1-mpfr:
*** 14325,14331 ****
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stage2-mpfr maybe-configure-stage2-mpfr
--- 14329,14335 ----
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stage2-mpfr maybe-configure-stage2-mpfr
*************** configure-stage2-mpfr:
*** 14359,14365 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stage3-mpfr maybe-configure-stage3-mpfr
--- 14363,14369 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stage3-mpfr maybe-configure-stage3-mpfr
*************** configure-stage3-mpfr:
*** 14393,14399 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stage4-mpfr maybe-configure-stage4-mpfr
--- 14397,14403 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stage4-mpfr maybe-configure-stage4-mpfr
*************** configure-stage4-mpfr:
*** 14427,14433 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stageprofile-mpfr maybe-configure-stageprofile-mpfr
--- 14431,14437 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stageprofile-mpfr maybe-configure-stageprofile-mpfr
*************** configure-stageprofile-mpfr:
*** 14461,14467 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stagetrain-mpfr maybe-configure-stagetrain-mpfr
--- 14465,14471 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stagetrain-mpfr maybe-configure-stagetrain-mpfr
*************** configure-stagetrain-mpfr:
*** 14495,14501 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stagefeedback-mpfr maybe-configure-stagefeedback-mpfr
--- 14499,14505 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stagefeedback-mpfr maybe-configure-stagefeedback-mpfr
*************** configure-stagefeedback-mpfr:
*** 14529,14535 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stageautoprofile-mpfr maybe-configure-stageautoprofile-mpfr
--- 14533,14539 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stageautoprofile-mpfr maybe-configure-stageautoprofile-mpfr
*************** configure-stageautoprofile-mpfr:
*** 14563,14569 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stageautofeedback-mpfr maybe-configure-stageautofeedback-mpfr
--- 14567,14573 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  .PHONY: configure-stageautofeedback-mpfr maybe-configure-stageautofeedback-mpfr
*************** configure-stageautofeedback-mpfr:
*** 14597,14603 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@
  @endif mpfr-bootstrap
  
  
--- 14601,14607 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpfr_configure_flags@ @host_libs_picflag@
  @endif mpfr-bootstrap
  
  
*************** configure-mpc:
*** 15426,15432 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode \
  	  || exit 1
  @endif mpc
  
--- 15430,15436 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode \
  	  || exit 1
  @endif mpc
  
*************** configure-stage1-mpc:
*** 15462,15468 ****
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stage2-mpc maybe-configure-stage2-mpc
--- 15466,15472 ----
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stage2-mpc maybe-configure-stage2-mpc
*************** configure-stage2-mpc:
*** 15496,15502 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stage3-mpc maybe-configure-stage3-mpc
--- 15500,15506 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stage3-mpc maybe-configure-stage3-mpc
*************** configure-stage3-mpc:
*** 15530,15536 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stage4-mpc maybe-configure-stage4-mpc
--- 15534,15540 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stage4-mpc maybe-configure-stage4-mpc
*************** configure-stage4-mpc:
*** 15564,15570 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stageprofile-mpc maybe-configure-stageprofile-mpc
--- 15568,15574 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stageprofile-mpc maybe-configure-stageprofile-mpc
*************** configure-stageprofile-mpc:
*** 15598,15604 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stagetrain-mpc maybe-configure-stagetrain-mpc
--- 15602,15608 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stagetrain-mpc maybe-configure-stagetrain-mpc
*************** configure-stagetrain-mpc:
*** 15632,15638 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stagefeedback-mpc maybe-configure-stagefeedback-mpc
--- 15636,15642 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stagefeedback-mpc maybe-configure-stagefeedback-mpc
*************** configure-stagefeedback-mpc:
*** 15666,15672 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stageautoprofile-mpc maybe-configure-stageautoprofile-mpc
--- 15670,15676 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stageautoprofile-mpc maybe-configure-stageautoprofile-mpc
*************** configure-stageautoprofile-mpc:
*** 15700,15706 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stageautofeedback-mpc maybe-configure-stageautofeedback-mpc
--- 15704,15710 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  .PHONY: configure-stageautofeedback-mpc maybe-configure-stageautofeedback-mpc
*************** configure-stageautofeedback-mpc:
*** 15734,15740 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  
--- 15738,15744 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_mpc_gmp_configure_flags@ @extra_mpc_mpfr_configure_flags@  @host_libs_picflag@ --disable-maintainer-mode
  @endif mpc-bootstrap
  
  
*************** configure-isl:
*** 16563,16569 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared @extra_isl_gmp_configure_flags@ \
  	  || exit 1
  @endif isl
  
--- 16567,16573 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@ \
  	  || exit 1
  @endif isl
  
*************** configure-stage1-isl:
*** 16599,16605 ****
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stage2-isl maybe-configure-stage2-isl
--- 16603,16609 ----
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stage2-isl maybe-configure-stage2-isl
*************** configure-stage2-isl:
*** 16633,16639 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stage3-isl maybe-configure-stage3-isl
--- 16637,16643 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stage3-isl maybe-configure-stage3-isl
*************** configure-stage3-isl:
*** 16667,16673 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stage4-isl maybe-configure-stage4-isl
--- 16671,16677 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stage4-isl maybe-configure-stage4-isl
*************** configure-stage4-isl:
*** 16701,16707 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stageprofile-isl maybe-configure-stageprofile-isl
--- 16705,16711 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stageprofile-isl maybe-configure-stageprofile-isl
*************** configure-stageprofile-isl:
*** 16735,16741 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stagetrain-isl maybe-configure-stagetrain-isl
--- 16739,16745 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stagetrain-isl maybe-configure-stagetrain-isl
*************** configure-stagetrain-isl:
*** 16769,16775 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stagefeedback-isl maybe-configure-stagefeedback-isl
--- 16773,16779 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stagefeedback-isl maybe-configure-stagefeedback-isl
*************** configure-stagefeedback-isl:
*** 16803,16809 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stageautoprofile-isl maybe-configure-stageautoprofile-isl
--- 16807,16813 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stageautoprofile-isl maybe-configure-stageautoprofile-isl
*************** configure-stageautoprofile-isl:
*** 16837,16843 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  .PHONY: configure-stageautofeedback-isl maybe-configure-stageautofeedback-isl
--- 16841,16847 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  .PHONY: configure-stageautofeedback-isl maybe-configure-stageautofeedback-isl
*************** configure-stageautofeedback-isl:
*** 16871,16877 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@
  @endif isl-bootstrap
  
  
--- 16875,16881 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared @extra_isl_gmp_configure_flags@  @host_libs_picflag@
  @endif isl-bootstrap
  
  
*************** maintainer-clean-isl:
*** 17675,18817 ****
  
  
  
- .PHONY: configure-libelf maybe-configure-libelf
- maybe-configure-libelf:
- @if gcc-bootstrap
- configure-libelf: stage_current
- @endif gcc-bootstrap
- @if libelf
- maybe-configure-libelf: configure-libelf
- configure-libelf: 
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	$(HOST_EXPORTS)  \
- 	echo Configuring in $(HOST_SUBDIR)/libelf; \
- 	cd "$(HOST_SUBDIR)/libelf" || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) \
- 	  $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} --disable-shared \
- 	  || exit 1
- @endif libelf
- 
- 
- 
- .PHONY: configure-stage1-libelf maybe-configure-stage1-libelf
- maybe-configure-stage1-libelf:
- @if libelf-bootstrap
- maybe-configure-stage1-libelf: configure-stage1-libelf
- configure-stage1-libelf:
- 	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE1_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage 1 in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	   \
- 	  $(STAGE1_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stage2-libelf maybe-configure-stage2-libelf
- maybe-configure-stage2-libelf:
- @if libelf-bootstrap
- maybe-configure-stage2-libelf: configure-stage2-libelf
- configure-stage2-libelf:
- 	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE2_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage 2 in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGE2_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stage3-libelf maybe-configure-stage3-libelf
- maybe-configure-stage3-libelf:
- @if libelf-bootstrap
- maybe-configure-stage3-libelf: configure-stage3-libelf
- configure-stage3-libelf:
- 	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE3_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage 3 in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGE3_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stage4-libelf maybe-configure-stage4-libelf
- maybe-configure-stage4-libelf:
- @if libelf-bootstrap
- maybe-configure-stage4-libelf: configure-stage4-libelf
- configure-stage4-libelf:
- 	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE4_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage 4 in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGE4_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stageprofile-libelf maybe-configure-stageprofile-libelf
- maybe-configure-stageprofile-libelf:
- @if libelf-bootstrap
- maybe-configure-stageprofile-libelf: configure-stageprofile-libelf
- configure-stageprofile-libelf:
- 	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEprofile_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage profile in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGEprofile_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stagetrain-libelf maybe-configure-stagetrain-libelf
- maybe-configure-stagetrain-libelf:
- @if libelf-bootstrap
- maybe-configure-stagetrain-libelf: configure-stagetrain-libelf
- configure-stagetrain-libelf:
- 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage train in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGEtrain_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stagefeedback-libelf maybe-configure-stagefeedback-libelf
- maybe-configure-stagefeedback-libelf:
- @if libelf-bootstrap
- maybe-configure-stagefeedback-libelf: configure-stagefeedback-libelf
- configure-stagefeedback-libelf:
- 	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage feedback in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGEfeedback_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stageautoprofile-libelf maybe-configure-stageautoprofile-libelf
- maybe-configure-stageautoprofile-libelf:
- @if libelf-bootstrap
- maybe-configure-stageautoprofile-libelf: configure-stageautoprofile-libelf
- configure-stageautoprofile-libelf:
- 	@[ $(current_stage) = stageautoprofile ] || $(MAKE) stageautoprofile-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage autoprofile in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- .PHONY: configure-stageautofeedback-libelf maybe-configure-stageautofeedback-libelf
- maybe-configure-stageautofeedback-libelf:
- @if libelf-bootstrap
- maybe-configure-stageautofeedback-libelf: configure-stageautofeedback-libelf
- configure-stageautofeedback-libelf:
- 	@[ $(current_stage) = stageautofeedback ] || $(MAKE) stageautofeedback-start
- 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
- 	test ! -f $(HOST_SUBDIR)/libelf/Makefile || exit 0; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS) \
- 	CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
- 	CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
- 	LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS;  \
- 	echo Configuring stage autofeedback in $(HOST_SUBDIR)/libelf; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libelf; \
- 	cd $(HOST_SUBDIR)/libelf || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(HOST_SUBDIR)/libelf/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=libelf; \
- 	$(SHELL) $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
- 	  --target=${target_alias} \
- 	  --with-build-libsubdir=$(HOST_SUBDIR) \
- 	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
- 	  --disable-shared
- @endif libelf-bootstrap
- 
- 
- 
- 
- 
- .PHONY: all-libelf maybe-all-libelf
- maybe-all-libelf:
- @if gcc-bootstrap
- all-libelf: stage_current
- @endif gcc-bootstrap
- @if libelf
- TARGET-libelf=all
- maybe-all-libelf: all-libelf
- all-libelf: configure-libelf
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS)  \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS)  \
- 		$(TARGET-libelf))
- @endif libelf
- 
- 
- 
- .PHONY: all-stage1-libelf maybe-all-stage1-libelf
- .PHONY: clean-stage1-libelf maybe-clean-stage1-libelf
- maybe-all-stage1-libelf:
- maybe-clean-stage1-libelf:
- @if libelf-bootstrap
- maybe-all-stage1-libelf: all-stage1-libelf
- all-stage1: all-stage1-libelf
- TARGET-stage1-libelf = $(TARGET-libelf)
- all-stage1-libelf: configure-stage1-libelf
- 	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE1_TFLAGS)"; \
- 	$(HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGE1_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGE1_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGE1_CXXFLAGS)" \
- 		LIBCFLAGS="$(LIBCFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS)  \
- 		$(STAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGE1_TFLAGS)"  \
- 		$(TARGET-stage1-libelf)
- 
- maybe-clean-stage1-libelf: clean-stage1-libelf
- clean-stage1: clean-stage1-libelf
- clean-stage1-libelf:
- 	@if [ $(current_stage) = stage1 ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stage1-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stage1-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS)  \
- 	$(STAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stage2-libelf maybe-all-stage2-libelf
- .PHONY: clean-stage2-libelf maybe-clean-stage2-libelf
- maybe-all-stage2-libelf:
- maybe-clean-stage2-libelf:
- @if libelf-bootstrap
- maybe-all-stage2-libelf: all-stage2-libelf
- all-stage2: all-stage2-libelf
- TARGET-stage2-libelf = $(TARGET-libelf)
- all-stage2-libelf: configure-stage2-libelf
- 	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE2_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGE2_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGE2_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGE2_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGE2_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGE2_TFLAGS)"  \
- 		$(TARGET-stage2-libelf)
- 
- maybe-clean-stage2-libelf: clean-stage2-libelf
- clean-stage2: clean-stage2-libelf
- clean-stage2-libelf:
- 	@if [ $(current_stage) = stage2 ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stage2-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stage2-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stage3-libelf maybe-all-stage3-libelf
- .PHONY: clean-stage3-libelf maybe-clean-stage3-libelf
- maybe-all-stage3-libelf:
- maybe-clean-stage3-libelf:
- @if libelf-bootstrap
- maybe-all-stage3-libelf: all-stage3-libelf
- all-stage3: all-stage3-libelf
- TARGET-stage3-libelf = $(TARGET-libelf)
- all-stage3-libelf: configure-stage3-libelf
- 	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE3_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGE3_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGE3_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGE3_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGE3_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGE3_TFLAGS)"  \
- 		$(TARGET-stage3-libelf)
- 
- maybe-clean-stage3-libelf: clean-stage3-libelf
- clean-stage3: clean-stage3-libelf
- clean-stage3-libelf:
- 	@if [ $(current_stage) = stage3 ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stage3-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stage3-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stage4-libelf maybe-all-stage4-libelf
- .PHONY: clean-stage4-libelf maybe-clean-stage4-libelf
- maybe-all-stage4-libelf:
- maybe-clean-stage4-libelf:
- @if libelf-bootstrap
- maybe-all-stage4-libelf: all-stage4-libelf
- all-stage4: all-stage4-libelf
- TARGET-stage4-libelf = $(TARGET-libelf)
- all-stage4-libelf: configure-stage4-libelf
- 	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGE4_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGE4_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGE4_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGE4_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGE4_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGE4_TFLAGS)"  \
- 		$(TARGET-stage4-libelf)
- 
- maybe-clean-stage4-libelf: clean-stage4-libelf
- clean-stage4: clean-stage4-libelf
- clean-stage4-libelf:
- 	@if [ $(current_stage) = stage4 ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stage4-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stage4-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stageprofile-libelf maybe-all-stageprofile-libelf
- .PHONY: clean-stageprofile-libelf maybe-clean-stageprofile-libelf
- maybe-all-stageprofile-libelf:
- maybe-clean-stageprofile-libelf:
- @if libelf-bootstrap
- maybe-all-stageprofile-libelf: all-stageprofile-libelf
- all-stageprofile: all-stageprofile-libelf
- TARGET-stageprofile-libelf = $(TARGET-libelf)
- all-stageprofile-libelf: configure-stageprofile-libelf
- 	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEprofile_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGEprofile_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGEprofile_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGEprofile_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGEprofile_TFLAGS)"  \
- 		$(TARGET-stageprofile-libelf)
- 
- maybe-clean-stageprofile-libelf: clean-stageprofile-libelf
- clean-stageprofile: clean-stageprofile-libelf
- clean-stageprofile-libelf:
- 	@if [ $(current_stage) = stageprofile ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stageprofile-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stageprofile-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stagetrain-libelf maybe-all-stagetrain-libelf
- .PHONY: clean-stagetrain-libelf maybe-clean-stagetrain-libelf
- maybe-all-stagetrain-libelf:
- maybe-clean-stagetrain-libelf:
- @if libelf-bootstrap
- maybe-all-stagetrain-libelf: all-stagetrain-libelf
- all-stagetrain: all-stagetrain-libelf
- TARGET-stagetrain-libelf = $(TARGET-libelf)
- all-stagetrain-libelf: configure-stagetrain-libelf
- 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGEtrain_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGEtrain_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGEtrain_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGEtrain_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
- 		$(TARGET-stagetrain-libelf)
- 
- maybe-clean-stagetrain-libelf: clean-stagetrain-libelf
- clean-stagetrain: clean-stagetrain-libelf
- clean-stagetrain-libelf:
- 	@if [ $(current_stage) = stagetrain ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stagetrain-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stagetrain-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stagefeedback-libelf maybe-all-stagefeedback-libelf
- .PHONY: clean-stagefeedback-libelf maybe-clean-stagefeedback-libelf
- maybe-all-stagefeedback-libelf:
- maybe-clean-stagefeedback-libelf:
- @if libelf-bootstrap
- maybe-all-stagefeedback-libelf: all-stagefeedback-libelf
- all-stagefeedback: all-stagefeedback-libelf
- TARGET-stagefeedback-libelf = $(TARGET-libelf)
- all-stagefeedback-libelf: configure-stagefeedback-libelf
- 	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGEfeedback_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGEfeedback_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGEfeedback_TFLAGS)"  \
- 		$(TARGET-stagefeedback-libelf)
- 
- maybe-clean-stagefeedback-libelf: clean-stagefeedback-libelf
- clean-stagefeedback: clean-stagefeedback-libelf
- clean-stagefeedback-libelf:
- 	@if [ $(current_stage) = stagefeedback ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stagefeedback-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stagefeedback-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stageautoprofile-libelf maybe-all-stageautoprofile-libelf
- .PHONY: clean-stageautoprofile-libelf maybe-clean-stageautoprofile-libelf
- maybe-all-stageautoprofile-libelf:
- maybe-clean-stageautoprofile-libelf:
- @if libelf-bootstrap
- maybe-all-stageautoprofile-libelf: all-stageautoprofile-libelf
- all-stageautoprofile: all-stageautoprofile-libelf
- TARGET-stageautoprofile-libelf = $(TARGET-libelf)
- all-stageautoprofile-libelf: configure-stageautoprofile-libelf
- 	@[ $(current_stage) = stageautoprofile ] || $(MAKE) stageautoprofile-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$$s/gcc/config/i386/$(AUTO_PROFILE) \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGEautoprofile_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGEautoprofile_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGEautoprofile_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGEautoprofile_TFLAGS)"  \
- 		$(TARGET-stageautoprofile-libelf)
- 
- maybe-clean-stageautoprofile-libelf: clean-stageautoprofile-libelf
- clean-stageautoprofile: clean-stageautoprofile-libelf
- clean-stageautoprofile-libelf:
- 	@if [ $(current_stage) = stageautoprofile ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stageautoprofile-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stageautoprofile-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- .PHONY: all-stageautofeedback-libelf maybe-all-stageautofeedback-libelf
- .PHONY: clean-stageautofeedback-libelf maybe-clean-stageautofeedback-libelf
- maybe-all-stageautofeedback-libelf:
- maybe-clean-stageautofeedback-libelf:
- @if libelf-bootstrap
- maybe-all-stageautofeedback-libelf: all-stageautofeedback-libelf
- all-stageautofeedback: all-stageautofeedback-libelf
- TARGET-stageautofeedback-libelf = $(TARGET-libelf)
- all-stageautofeedback-libelf: configure-stageautofeedback-libelf
- 	@[ $(current_stage) = stageautofeedback ] || $(MAKE) stageautofeedback-start
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
- 	$(HOST_EXPORTS) \
- 	$(POSTSTAGE1_HOST_EXPORTS)  \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	 \
- 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
- 		CFLAGS="$(STAGEautofeedback_CFLAGS)" \
- 		GENERATOR_CFLAGS="$(STAGEautofeedback_GENERATOR_CFLAGS)" \
- 		CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)" \
- 		LIBCFLAGS="$(STAGEautofeedback_CFLAGS)" \
- 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
- 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
- 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
- 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
- 		TFLAGS="$(STAGEautofeedback_TFLAGS)" PERF_DATA=perf.data \
- 		$(TARGET-stageautofeedback-libelf)
- 
- maybe-clean-stageautofeedback-libelf: clean-stageautofeedback-libelf
- clean-stageautofeedback: clean-stageautofeedback-libelf
- clean-stageautofeedback-libelf:
- 	@if [ $(current_stage) = stageautofeedback ]; then \
- 	  [ -f $(HOST_SUBDIR)/libelf/Makefile ] || exit 0; \
- 	else \
- 	  [ -f $(HOST_SUBDIR)/stageautofeedback-libelf/Makefile ] || exit 0; \
- 	  $(MAKE) stageautofeedback-start; \
- 	fi; \
- 	cd $(HOST_SUBDIR)/libelf && \
- 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
- @endif libelf-bootstrap
- 
- 
- 
- 
- 
- .PHONY: check-libelf maybe-check-libelf
- maybe-check-libelf:
- @if libelf
- maybe-check-libelf: check-libelf
- 
- check-libelf:
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(FLAGS_TO_PASS)  $(EXTRA_BOOTSTRAP_FLAGS) check)
- 
- @endif libelf
- 
- .PHONY: install-libelf maybe-install-libelf
- maybe-install-libelf:
- @if libelf
- maybe-install-libelf: install-libelf
- 
- install-libelf:
- 
- @endif libelf
- 
- .PHONY: install-strip-libelf maybe-install-strip-libelf
- maybe-install-strip-libelf:
- @if libelf
- maybe-install-strip-libelf: install-strip-libelf
- 
- install-strip-libelf:
- 
- @endif libelf
- 
- # Other targets (info, dvi, pdf, etc.)
- 
- .PHONY: maybe-info-libelf info-libelf
- maybe-info-libelf:
- @if libelf
- maybe-info-libelf: info-libelf
- 
- info-libelf: \
-     configure-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing info in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          info) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-dvi-libelf dvi-libelf
- maybe-dvi-libelf:
- @if libelf
- maybe-dvi-libelf: dvi-libelf
- 
- dvi-libelf: \
-     configure-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing dvi in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          dvi) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-pdf-libelf pdf-libelf
- maybe-pdf-libelf:
- @if libelf
- maybe-pdf-libelf: pdf-libelf
- 
- pdf-libelf: \
-     configure-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing pdf in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          pdf) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-html-libelf html-libelf
- maybe-html-libelf:
- @if libelf
- maybe-html-libelf: html-libelf
- 
- html-libelf: \
-     configure-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing html in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          html) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-TAGS-libelf TAGS-libelf
- maybe-TAGS-libelf:
- @if libelf
- maybe-TAGS-libelf: TAGS-libelf
- 
- TAGS-libelf: \
-     configure-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing TAGS in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          TAGS) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-install-info-libelf install-info-libelf
- maybe-install-info-libelf:
- @if libelf
- maybe-install-info-libelf: install-info-libelf
- 
- install-info-libelf: \
-     configure-libelf \
-     info-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing install-info in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          install-info) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-install-dvi-libelf install-dvi-libelf
- maybe-install-dvi-libelf:
- @if libelf
- maybe-install-dvi-libelf: install-dvi-libelf
- 
- install-dvi-libelf: \
-     configure-libelf \
-     dvi-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing install-dvi in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          install-dvi) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-install-pdf-libelf install-pdf-libelf
- maybe-install-pdf-libelf:
- @if libelf
- maybe-install-pdf-libelf: install-pdf-libelf
- 
- install-pdf-libelf: \
-     configure-libelf \
-     pdf-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing install-pdf in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          install-pdf) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-install-html-libelf install-html-libelf
- maybe-install-html-libelf:
- @if libelf
- maybe-install-html-libelf: install-html-libelf
- 
- install-html-libelf: \
-     configure-libelf \
-     html-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing install-html in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          install-html) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-installcheck-libelf installcheck-libelf
- maybe-installcheck-libelf:
- @if libelf
- maybe-installcheck-libelf: installcheck-libelf
- 
- installcheck-libelf: \
-     configure-libelf 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing installcheck in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          installcheck) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-mostlyclean-libelf mostlyclean-libelf
- maybe-mostlyclean-libelf:
- @if libelf
- maybe-mostlyclean-libelf: mostlyclean-libelf
- 
- mostlyclean-libelf: 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing mostlyclean in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          mostlyclean) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-clean-libelf clean-libelf
- maybe-clean-libelf:
- @if libelf
- maybe-clean-libelf: clean-libelf
- 
- clean-libelf: 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing clean in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          clean) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-distclean-libelf distclean-libelf
- maybe-distclean-libelf:
- @if libelf
- maybe-distclean-libelf: distclean-libelf
- 
- distclean-libelf: 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing distclean in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          distclean) \
- 	  || exit 1
- 
- @endif libelf
- 
- .PHONY: maybe-maintainer-clean-libelf maintainer-clean-libelf
- maybe-maintainer-clean-libelf:
- @if libelf
- maybe-maintainer-clean-libelf: maintainer-clean-libelf
- 
- maintainer-clean-libelf: 
- 	@[ -f ./libelf/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(HOST_EXPORTS) \
- 	for flag in $(EXTRA_HOST_FLAGS) ; do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	echo "Doing maintainer-clean in libelf"; \
- 	(cd $(HOST_SUBDIR)/libelf && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	          maintainer-clean) \
- 	  || exit 1
- 
- @endif libelf
- 
- 
- 
  .PHONY: configure-gold maybe-configure-gold
  maybe-configure-gold:
  @if gcc-bootstrap
--- 17679,17684 ----
*************** configure-libiconv:
*** 30806,30812 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared \
  	  || exit 1
  @endif libiconv
  
--- 29673,29679 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} --disable-shared  @host_libs_picflag@ \
  	  || exit 1
  @endif libiconv
  
*************** configure-stage1-libiconv:
*** 30842,30848 ****
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stage2-libiconv maybe-configure-stage2-libiconv
--- 29709,29715 ----
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stage2-libiconv maybe-configure-stage2-libiconv
*************** configure-stage2-libiconv:
*** 30876,30882 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stage3-libiconv maybe-configure-stage3-libiconv
--- 29743,29749 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stage3-libiconv maybe-configure-stage3-libiconv
*************** configure-stage3-libiconv:
*** 30910,30916 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stage4-libiconv maybe-configure-stage4-libiconv
--- 29777,29783 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stage4-libiconv maybe-configure-stage4-libiconv
*************** configure-stage4-libiconv:
*** 30944,30950 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stageprofile-libiconv maybe-configure-stageprofile-libiconv
--- 29811,29817 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stageprofile-libiconv maybe-configure-stageprofile-libiconv
*************** configure-stageprofile-libiconv:
*** 30978,30984 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stagetrain-libiconv maybe-configure-stagetrain-libiconv
--- 29845,29851 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stagetrain-libiconv maybe-configure-stagetrain-libiconv
*************** configure-stagetrain-libiconv:
*** 31012,31018 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stagefeedback-libiconv maybe-configure-stagefeedback-libiconv
--- 29879,29885 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stagefeedback-libiconv maybe-configure-stagefeedback-libiconv
*************** configure-stagefeedback-libiconv:
*** 31046,31052 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stageautoprofile-libiconv maybe-configure-stageautoprofile-libiconv
--- 29913,29919 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stageautoprofile-libiconv maybe-configure-stageautoprofile-libiconv
*************** configure-stageautoprofile-libiconv:
*** 31080,31086 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  .PHONY: configure-stageautofeedback-libiconv maybe-configure-stageautofeedback-libiconv
--- 29947,29953 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  .PHONY: configure-stageautofeedback-libiconv maybe-configure-stageautofeedback-libiconv
*************** configure-stageautofeedback-libiconv:
*** 31114,31120 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared
  @endif libiconv-bootstrap
  
  
--- 29981,29987 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  --disable-shared  @host_libs_picflag@
  @endif libiconv-bootstrap
  
  
*************** configure-zlib:
*** 34178,34184 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} @extra_host_zlib_configure_flags@ \
  	  || exit 1
  @endif zlib
  
--- 33045,33051 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
! 	  --target=${target_alias} @extra_host_zlib_configure_flags@ @host_libs_picflag@ \
  	  || exit 1
  @endif zlib
  
*************** configure-stage1-zlib:
*** 34214,34220 ****
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stage2-zlib maybe-configure-stage2-zlib
--- 33081,33087 ----
  	  --target=${target_alias} \
  	   \
  	  $(STAGE1_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stage2-zlib maybe-configure-stage2-zlib
*************** configure-stage2-zlib:
*** 34248,34254 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stage3-zlib maybe-configure-stage3-zlib
--- 33115,33121 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE2_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stage3-zlib maybe-configure-stage3-zlib
*************** configure-stage3-zlib:
*** 34282,34288 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stage4-zlib maybe-configure-stage4-zlib
--- 33149,33155 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE3_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stage4-zlib maybe-configure-stage4-zlib
*************** configure-stage4-zlib:
*** 34316,34322 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stageprofile-zlib maybe-configure-stageprofile-zlib
--- 33183,33189 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGE4_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stageprofile-zlib maybe-configure-stageprofile-zlib
*************** configure-stageprofile-zlib:
*** 34350,34356 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stagetrain-zlib maybe-configure-stagetrain-zlib
--- 33217,33223 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEprofile_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stagetrain-zlib maybe-configure-stagetrain-zlib
*************** configure-stagetrain-zlib:
*** 34384,34390 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib
--- 33251,33257 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEtrain_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stagefeedback-zlib maybe-configure-stagefeedback-zlib
*************** configure-stagefeedback-zlib:
*** 34418,34424 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stageautoprofile-zlib maybe-configure-stageautoprofile-zlib
--- 33285,33291 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEfeedback_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stageautoprofile-zlib maybe-configure-stageautoprofile-zlib
*************** configure-stageautoprofile-zlib:
*** 34452,34458 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  .PHONY: configure-stageautofeedback-zlib maybe-configure-stageautofeedback-zlib
--- 33319,33325 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautoprofile_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  .PHONY: configure-stageautofeedback-zlib maybe-configure-stageautofeedback-zlib
*************** configure-stageautofeedback-zlib:
*** 34486,34492 ****
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@
  @endif zlib-bootstrap
  
  
--- 33353,33359 ----
  	  --target=${target_alias} \
  	  --with-build-libsubdir=$(HOST_SUBDIR) \
  	  $(STAGEautofeedback_CONFIGURE_FLAGS) \
! 	  @extra_host_zlib_configure_flags@ @host_libs_picflag@
  @endif zlib-bootstrap
  
  
*************** maintainer-clean-libctf:
*** 43569,43574 ****
--- 42436,43581 ----
  
  
  
+ .PHONY: configure-libsframe maybe-configure-libsframe
+ maybe-configure-libsframe:
+ @if gcc-bootstrap
+ configure-libsframe: stage_current
+ @endif gcc-bootstrap
+ @if libsframe
+ maybe-configure-libsframe: configure-libsframe
+ configure-libsframe: 
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	$(HOST_EXPORTS)  \
+ 	echo Configuring in $(HOST_SUBDIR)/libsframe; \
+ 	cd "$(HOST_SUBDIR)/libsframe" || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) \
+ 	  $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias}  \
+ 	  || exit 1
+ @endif libsframe
+ 
+ 
+ 
+ .PHONY: configure-stage1-libsframe maybe-configure-stage1-libsframe
+ maybe-configure-stage1-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stage1-libsframe: configure-stage1-libsframe
+ configure-stage1-libsframe:
+ 	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE1_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE1_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE1_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(LIBCFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 1 in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	   \
+ 	  $(STAGE1_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stage2-libsframe maybe-configure-stage2-libsframe
+ maybe-configure-stage2-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stage2-libsframe: configure-stage2-libsframe
+ configure-stage2-libsframe:
+ 	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE2_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE2_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE2_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGE2_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 2 in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE2_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stage3-libsframe maybe-configure-stage3-libsframe
+ maybe-configure-stage3-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stage3-libsframe: configure-stage3-libsframe
+ configure-stage3-libsframe:
+ 	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE3_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE3_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE3_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGE3_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 3 in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE3_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stage4-libsframe maybe-configure-stage4-libsframe
+ maybe-configure-stage4-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stage4-libsframe: configure-stage4-libsframe
+ configure-stage4-libsframe:
+ 	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE4_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGE4_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGE4_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGE4_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage 4 in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGE4_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stageprofile-libsframe maybe-configure-stageprofile-libsframe
+ maybe-configure-stageprofile-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stageprofile-libsframe: configure-stageprofile-libsframe
+ configure-stageprofile-libsframe:
+ 	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEprofile_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEprofile_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEprofile_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage profile in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEprofile_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stagetrain-libsframe maybe-configure-stagetrain-libsframe
+ maybe-configure-stagetrain-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stagetrain-libsframe: configure-stagetrain-libsframe
+ configure-stagetrain-libsframe:
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEtrain_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEtrain_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEtrain_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage train in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEtrain_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stagefeedback-libsframe maybe-configure-stagefeedback-libsframe
+ maybe-configure-stagefeedback-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stagefeedback-libsframe: configure-stagefeedback-libsframe
+ configure-stagefeedback-libsframe:
+ 	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEfeedback_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEfeedback_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEfeedback_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage feedback in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEfeedback_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stageautoprofile-libsframe maybe-configure-stageautoprofile-libsframe
+ maybe-configure-stageautoprofile-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stageautoprofile-libsframe: configure-stageautoprofile-libsframe
+ configure-stageautoprofile-libsframe:
+ 	@[ $(current_stage) = stageautoprofile ] || $(MAKE) stageautoprofile-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEautoprofile_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEautoprofile_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage autoprofile in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEautoprofile_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ .PHONY: configure-stageautofeedback-libsframe maybe-configure-stageautofeedback-libsframe
+ maybe-configure-stageautofeedback-libsframe:
+ @if libsframe-bootstrap
+ maybe-configure-stageautofeedback-libsframe: configure-stageautofeedback-libsframe
+ configure-stageautofeedback-libsframe:
+ 	@[ $(current_stage) = stageautofeedback ] || $(MAKE) stageautofeedback-start
+ 	@$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ 	test ! -f $(HOST_SUBDIR)/libsframe/Makefile || exit 0; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS) \
+ 	CFLAGS="$(STAGEautofeedback_CFLAGS)"; export CFLAGS; \
+ 	CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)"; export CXXFLAGS; \
+ 	LIBCFLAGS="$(STAGEautofeedback_CFLAGS)"; export LIBCFLAGS;  \
+ 	echo Configuring stage autofeedback in $(HOST_SUBDIR)/libsframe; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(HOST_SUBDIR)/libsframe; \
+ 	cd $(HOST_SUBDIR)/libsframe || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(HOST_SUBDIR)/libsframe/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libsframe; \
+ 	$(SHELL) $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(HOST_CONFIGARGS) --build=${build_alias} --host=${host_alias} \
+ 	  --target=${target_alias} \
+ 	  --with-build-libsubdir=$(HOST_SUBDIR) \
+ 	  $(STAGEautofeedback_CONFIGURE_FLAGS)
+ @endif libsframe-bootstrap
+ 
+ 
+ 
+ 
+ 
+ .PHONY: all-libsframe maybe-all-libsframe
+ maybe-all-libsframe:
+ @if gcc-bootstrap
+ all-libsframe: stage_current
+ @endif gcc-bootstrap
+ @if libsframe
+ TARGET-libsframe=all
+ maybe-all-libsframe: all-libsframe
+ all-libsframe: configure-libsframe
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS)  \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_HOST_FLAGS) $(STAGE1_FLAGS_TO_PASS)  \
+ 		$(TARGET-libsframe))
+ @endif libsframe
+ 
+ 
+ 
+ .PHONY: all-stage1-libsframe maybe-all-stage1-libsframe
+ .PHONY: clean-stage1-libsframe maybe-clean-stage1-libsframe
+ maybe-all-stage1-libsframe:
+ maybe-clean-stage1-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stage1-libsframe: all-stage1-libsframe
+ all-stage1: all-stage1-libsframe
+ TARGET-stage1-libsframe = $(TARGET-libsframe)
+ all-stage1-libsframe: configure-stage1-libsframe
+ 	@[ $(current_stage) = stage1 ] || $(MAKE) stage1-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE1_TFLAGS)"; \
+ 	$(HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE1_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE1_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE1_CXXFLAGS)" \
+ 		LIBCFLAGS="$(LIBCFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS)  \
+ 		$(STAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE1_TFLAGS)"  \
+ 		$(TARGET-stage1-libsframe)
+ 
+ maybe-clean-stage1-libsframe: clean-stage1-libsframe
+ clean-stage1: clean-stage1-libsframe
+ clean-stage1-libsframe:
+ 	@if [ $(current_stage) = stage1 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage1-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stage1-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS)  \
+ 	$(STAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stage2-libsframe maybe-all-stage2-libsframe
+ .PHONY: clean-stage2-libsframe maybe-clean-stage2-libsframe
+ maybe-all-stage2-libsframe:
+ maybe-clean-stage2-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stage2-libsframe: all-stage2-libsframe
+ all-stage2: all-stage2-libsframe
+ TARGET-stage2-libsframe = $(TARGET-libsframe)
+ all-stage2-libsframe: configure-stage2-libsframe
+ 	@[ $(current_stage) = stage2 ] || $(MAKE) stage2-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE2_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE2_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE2_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE2_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGE2_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE2_TFLAGS)"  \
+ 		$(TARGET-stage2-libsframe)
+ 
+ maybe-clean-stage2-libsframe: clean-stage2-libsframe
+ clean-stage2: clean-stage2-libsframe
+ clean-stage2-libsframe:
+ 	@if [ $(current_stage) = stage2 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage2-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stage2-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stage3-libsframe maybe-all-stage3-libsframe
+ .PHONY: clean-stage3-libsframe maybe-clean-stage3-libsframe
+ maybe-all-stage3-libsframe:
+ maybe-clean-stage3-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stage3-libsframe: all-stage3-libsframe
+ all-stage3: all-stage3-libsframe
+ TARGET-stage3-libsframe = $(TARGET-libsframe)
+ all-stage3-libsframe: configure-stage3-libsframe
+ 	@[ $(current_stage) = stage3 ] || $(MAKE) stage3-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE3_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE3_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE3_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE3_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGE3_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE3_TFLAGS)"  \
+ 		$(TARGET-stage3-libsframe)
+ 
+ maybe-clean-stage3-libsframe: clean-stage3-libsframe
+ clean-stage3: clean-stage3-libsframe
+ clean-stage3-libsframe:
+ 	@if [ $(current_stage) = stage3 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage3-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stage3-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stage4-libsframe maybe-all-stage4-libsframe
+ .PHONY: clean-stage4-libsframe maybe-clean-stage4-libsframe
+ maybe-all-stage4-libsframe:
+ maybe-clean-stage4-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stage4-libsframe: all-stage4-libsframe
+ all-stage4: all-stage4-libsframe
+ TARGET-stage4-libsframe = $(TARGET-libsframe)
+ all-stage4-libsframe: configure-stage4-libsframe
+ 	@[ $(current_stage) = stage4 ] || $(MAKE) stage4-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGE4_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGE4_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGE4_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGE4_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGE4_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGE4_TFLAGS)"  \
+ 		$(TARGET-stage4-libsframe)
+ 
+ maybe-clean-stage4-libsframe: clean-stage4-libsframe
+ clean-stage4: clean-stage4-libsframe
+ clean-stage4-libsframe:
+ 	@if [ $(current_stage) = stage4 ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stage4-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stage4-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stageprofile-libsframe maybe-all-stageprofile-libsframe
+ .PHONY: clean-stageprofile-libsframe maybe-clean-stageprofile-libsframe
+ maybe-all-stageprofile-libsframe:
+ maybe-clean-stageprofile-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stageprofile-libsframe: all-stageprofile-libsframe
+ all-stageprofile: all-stageprofile-libsframe
+ TARGET-stageprofile-libsframe = $(TARGET-libsframe)
+ all-stageprofile-libsframe: configure-stageprofile-libsframe
+ 	@[ $(current_stage) = stageprofile ] || $(MAKE) stageprofile-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEprofile_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEprofile_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEprofile_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEprofile_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEprofile_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEprofile_TFLAGS)"  \
+ 		$(TARGET-stageprofile-libsframe)
+ 
+ maybe-clean-stageprofile-libsframe: clean-stageprofile-libsframe
+ clean-stageprofile: clean-stageprofile-libsframe
+ clean-stageprofile-libsframe:
+ 	@if [ $(current_stage) = stageprofile ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stageprofile-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stageprofile-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stagetrain-libsframe maybe-all-stagetrain-libsframe
+ .PHONY: clean-stagetrain-libsframe maybe-clean-stagetrain-libsframe
+ maybe-all-stagetrain-libsframe:
+ maybe-clean-stagetrain-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stagetrain-libsframe: all-stagetrain-libsframe
+ all-stagetrain: all-stagetrain-libsframe
+ TARGET-stagetrain-libsframe = $(TARGET-libsframe)
+ all-stagetrain-libsframe: configure-stagetrain-libsframe
+ 	@[ $(current_stage) = stagetrain ] || $(MAKE) stagetrain-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEtrain_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEtrain_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEtrain_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEtrain_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEtrain_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEtrain_TFLAGS)"  \
+ 		$(TARGET-stagetrain-libsframe)
+ 
+ maybe-clean-stagetrain-libsframe: clean-stagetrain-libsframe
+ clean-stagetrain: clean-stagetrain-libsframe
+ clean-stagetrain-libsframe:
+ 	@if [ $(current_stage) = stagetrain ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagetrain-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stagetrain-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stagefeedback-libsframe maybe-all-stagefeedback-libsframe
+ .PHONY: clean-stagefeedback-libsframe maybe-clean-stagefeedback-libsframe
+ maybe-all-stagefeedback-libsframe:
+ maybe-clean-stagefeedback-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stagefeedback-libsframe: all-stagefeedback-libsframe
+ all-stagefeedback: all-stagefeedback-libsframe
+ TARGET-stagefeedback-libsframe = $(TARGET-libsframe)
+ all-stagefeedback-libsframe: configure-stagefeedback-libsframe
+ 	@[ $(current_stage) = stagefeedback ] || $(MAKE) stagefeedback-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEfeedback_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEfeedback_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEfeedback_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEfeedback_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEfeedback_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEfeedback_TFLAGS)"  \
+ 		$(TARGET-stagefeedback-libsframe)
+ 
+ maybe-clean-stagefeedback-libsframe: clean-stagefeedback-libsframe
+ clean-stagefeedback: clean-stagefeedback-libsframe
+ clean-stagefeedback-libsframe:
+ 	@if [ $(current_stage) = stagefeedback ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stagefeedback-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stagefeedback-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stageautoprofile-libsframe maybe-all-stageautoprofile-libsframe
+ .PHONY: clean-stageautoprofile-libsframe maybe-clean-stageautoprofile-libsframe
+ maybe-all-stageautoprofile-libsframe:
+ maybe-clean-stageautoprofile-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stageautoprofile-libsframe: all-stageautoprofile-libsframe
+ all-stageautoprofile: all-stageautoprofile-libsframe
+ TARGET-stageautoprofile-libsframe = $(TARGET-libsframe)
+ all-stageautoprofile-libsframe: configure-stageautoprofile-libsframe
+ 	@[ $(current_stage) = stageautoprofile ] || $(MAKE) stageautoprofile-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautoprofile_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$$s/gcc/config/i386/$(AUTO_PROFILE) \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEautoprofile_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEautoprofile_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEautoprofile_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEautoprofile_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEautoprofile_TFLAGS)"  \
+ 		$(TARGET-stageautoprofile-libsframe)
+ 
+ maybe-clean-stageautoprofile-libsframe: clean-stageautoprofile-libsframe
+ clean-stageautoprofile: clean-stageautoprofile-libsframe
+ clean-stageautoprofile-libsframe:
+ 	@if [ $(current_stage) = stageautoprofile ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stageautoprofile-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stageautoprofile-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ .PHONY: all-stageautofeedback-libsframe maybe-all-stageautofeedback-libsframe
+ .PHONY: clean-stageautofeedback-libsframe maybe-clean-stageautofeedback-libsframe
+ maybe-all-stageautofeedback-libsframe:
+ maybe-clean-stageautofeedback-libsframe:
+ @if libsframe-bootstrap
+ maybe-all-stageautofeedback-libsframe: all-stageautofeedback-libsframe
+ all-stageautofeedback: all-stageautofeedback-libsframe
+ TARGET-stageautofeedback-libsframe = $(TARGET-libsframe)
+ all-stageautofeedback-libsframe: configure-stageautofeedback-libsframe
+ 	@[ $(current_stage) = stageautofeedback ] || $(MAKE) stageautofeedback-start
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	TFLAGS="$(STAGEautofeedback_TFLAGS)"; \
+ 	$(HOST_EXPORTS) \
+ 	$(POSTSTAGE1_HOST_EXPORTS)  \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	 \
+ 	$(MAKE) $(BASE_FLAGS_TO_PASS) \
+ 		CFLAGS="$(STAGEautofeedback_CFLAGS)" \
+ 		GENERATOR_CFLAGS="$(STAGEautofeedback_GENERATOR_CFLAGS)" \
+ 		CXXFLAGS="$(STAGEautofeedback_CXXFLAGS)" \
+ 		LIBCFLAGS="$(STAGEautofeedback_CFLAGS)" \
+ 		CFLAGS_FOR_TARGET="$(CFLAGS_FOR_TARGET)" \
+ 		CXXFLAGS_FOR_TARGET="$(CXXFLAGS_FOR_TARGET)" \
+ 		LIBCFLAGS_FOR_TARGET="$(LIBCFLAGS_FOR_TARGET)" \
+ 		$(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  \
+ 		TFLAGS="$(STAGEautofeedback_TFLAGS)" PERF_DATA=perf.data \
+ 		$(TARGET-stageautofeedback-libsframe)
+ 
+ maybe-clean-stageautofeedback-libsframe: clean-stageautofeedback-libsframe
+ clean-stageautofeedback: clean-stageautofeedback-libsframe
+ clean-stageautofeedback-libsframe:
+ 	@if [ $(current_stage) = stageautofeedback ]; then \
+ 	  [ -f $(HOST_SUBDIR)/libsframe/Makefile ] || exit 0; \
+ 	else \
+ 	  [ -f $(HOST_SUBDIR)/stageautofeedback-libsframe/Makefile ] || exit 0; \
+ 	  $(MAKE) stageautofeedback-start; \
+ 	fi; \
+ 	cd $(HOST_SUBDIR)/libsframe && \
+ 	$(MAKE) $(EXTRA_HOST_FLAGS) $(POSTSTAGE1_FLAGS_TO_PASS)  clean
+ @endif libsframe-bootstrap
+ 
+ 
+ 
+ 
+ 
+ .PHONY: check-libsframe maybe-check-libsframe
+ maybe-check-libsframe:
+ @if libsframe
+ maybe-check-libsframe: check-libsframe
+ 
+ check-libsframe:
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) $(EXTRA_HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  $(EXTRA_BOOTSTRAP_FLAGS) check)
+ 
+ @endif libsframe
+ 
+ .PHONY: install-libsframe maybe-install-libsframe
+ maybe-install-libsframe:
+ @if libsframe
+ maybe-install-libsframe: install-libsframe
+ 
+ install-libsframe: installdirs
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  install)
+ 
+ @endif libsframe
+ 
+ .PHONY: install-strip-libsframe maybe-install-strip-libsframe
+ maybe-install-strip-libsframe:
+ @if libsframe
+ maybe-install-strip-libsframe: install-strip-libsframe
+ 
+ install-strip-libsframe: installdirs
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(FLAGS_TO_PASS)  install-strip)
+ 
+ @endif libsframe
+ 
+ # Other targets (info, dvi, pdf, etc.)
+ 
+ .PHONY: maybe-info-libsframe info-libsframe
+ maybe-info-libsframe:
+ @if libsframe
+ maybe-info-libsframe: info-libsframe
+ 
+ info-libsframe: \
+     configure-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing info in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          info) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-dvi-libsframe dvi-libsframe
+ maybe-dvi-libsframe:
+ @if libsframe
+ maybe-dvi-libsframe: dvi-libsframe
+ 
+ dvi-libsframe: \
+     configure-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing dvi in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          dvi) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-pdf-libsframe pdf-libsframe
+ maybe-pdf-libsframe:
+ @if libsframe
+ maybe-pdf-libsframe: pdf-libsframe
+ 
+ pdf-libsframe: \
+     configure-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing pdf in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          pdf) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-html-libsframe html-libsframe
+ maybe-html-libsframe:
+ @if libsframe
+ maybe-html-libsframe: html-libsframe
+ 
+ html-libsframe: \
+     configure-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing html in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          html) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-TAGS-libsframe TAGS-libsframe
+ maybe-TAGS-libsframe:
+ @if libsframe
+ maybe-TAGS-libsframe: TAGS-libsframe
+ 
+ TAGS-libsframe: \
+     configure-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing TAGS in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          TAGS) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-install-info-libsframe install-info-libsframe
+ maybe-install-info-libsframe:
+ @if libsframe
+ maybe-install-info-libsframe: install-info-libsframe
+ 
+ install-info-libsframe: \
+     configure-libsframe \
+     info-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-info in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-info) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-install-dvi-libsframe install-dvi-libsframe
+ maybe-install-dvi-libsframe:
+ @if libsframe
+ maybe-install-dvi-libsframe: install-dvi-libsframe
+ 
+ install-dvi-libsframe: \
+     configure-libsframe \
+     dvi-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-dvi in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-dvi) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-install-pdf-libsframe install-pdf-libsframe
+ maybe-install-pdf-libsframe:
+ @if libsframe
+ maybe-install-pdf-libsframe: install-pdf-libsframe
+ 
+ install-pdf-libsframe: \
+     configure-libsframe \
+     pdf-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-pdf in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-pdf) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-install-html-libsframe install-html-libsframe
+ maybe-install-html-libsframe:
+ @if libsframe
+ maybe-install-html-libsframe: install-html-libsframe
+ 
+ install-html-libsframe: \
+     configure-libsframe \
+     html-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing install-html in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          install-html) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-installcheck-libsframe installcheck-libsframe
+ maybe-installcheck-libsframe:
+ @if libsframe
+ maybe-installcheck-libsframe: installcheck-libsframe
+ 
+ installcheck-libsframe: \
+     configure-libsframe 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing installcheck in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          installcheck) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-mostlyclean-libsframe mostlyclean-libsframe
+ maybe-mostlyclean-libsframe:
+ @if libsframe
+ maybe-mostlyclean-libsframe: mostlyclean-libsframe
+ 
+ mostlyclean-libsframe: 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing mostlyclean in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          mostlyclean) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-clean-libsframe clean-libsframe
+ maybe-clean-libsframe:
+ @if libsframe
+ maybe-clean-libsframe: clean-libsframe
+ 
+ clean-libsframe: 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing clean in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          clean) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-distclean-libsframe distclean-libsframe
+ maybe-distclean-libsframe:
+ @if libsframe
+ maybe-distclean-libsframe: distclean-libsframe
+ 
+ distclean-libsframe: 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing distclean in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          distclean) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ .PHONY: maybe-maintainer-clean-libsframe maintainer-clean-libsframe
+ maybe-maintainer-clean-libsframe:
+ @if libsframe
+ maybe-maintainer-clean-libsframe: maintainer-clean-libsframe
+ 
+ maintainer-clean-libsframe: 
+ 	@[ -f ./libsframe/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	for flag in $(EXTRA_HOST_FLAGS) ; do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	echo "Doing maintainer-clean in libsframe"; \
+ 	(cd $(HOST_SUBDIR)/libsframe && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	          maintainer-clean) \
+ 	  || exit 1
+ 
+ @endif libsframe
+ 
+ 
+ 
  # ---------------------------------------
  # Modules which run on the target machine
  # ---------------------------------------
*************** maintainer-clean-target-libvtv:
*** 47386,47876 ****
  
  
  
- .PHONY: configure-target-liboffloadmic maybe-configure-target-liboffloadmic
- maybe-configure-target-liboffloadmic:
- @if gcc-bootstrap
- configure-target-liboffloadmic: stage_current
- @endif gcc-bootstrap
- @if target-liboffloadmic
- maybe-configure-target-liboffloadmic: configure-target-liboffloadmic
- configure-target-liboffloadmic: 
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	echo "Checking multilib configuration for liboffloadmic..."; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/liboffloadmic; \
- 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp 2> /dev/null; \
- 	if test -r $(TARGET_SUBDIR)/liboffloadmic/multilib.out; then \
- 	  if cmp -s $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; then \
- 	    rm -f $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp; \
- 	  else \
- 	    rm -f $(TARGET_SUBDIR)/liboffloadmic/Makefile; \
- 	    mv $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; \
- 	  fi; \
- 	else \
- 	  mv $(TARGET_SUBDIR)/liboffloadmic/multilib.tmp $(TARGET_SUBDIR)/liboffloadmic/multilib.out; \
- 	fi; \
- 	test ! -f $(TARGET_SUBDIR)/liboffloadmic/Makefile || exit 0; \
- 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/liboffloadmic; \
- 	$(NORMAL_TARGET_EXPORTS)  \
- 	echo Configuring in $(TARGET_SUBDIR)/liboffloadmic; \
- 	cd "$(TARGET_SUBDIR)/liboffloadmic" || exit 1; \
- 	case $(srcdir) in \
- 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
- 	  *) topdir=`echo $(TARGET_SUBDIR)/liboffloadmic/ | \
- 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
- 	esac; \
- 	module_srcdir=liboffloadmic; \
- 	rm -f no-such-file || : ; \
- 	CONFIG_SITE=no-such-file $(SHELL) \
- 	  $$s/$$module_srcdir/configure \
- 	  --srcdir=$${topdir}/$$module_srcdir \
- 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
- 	  --target=${target_alias} @extra_liboffloadmic_configure_flags@ \
- 	  || exit 1
- @endif target-liboffloadmic
- 
- 
- 
- 
- 
- .PHONY: all-target-liboffloadmic maybe-all-target-liboffloadmic
- maybe-all-target-liboffloadmic:
- @if gcc-bootstrap
- all-target-liboffloadmic: stage_current
- @endif gcc-bootstrap
- @if target-liboffloadmic
- TARGET-target-liboffloadmic=all
- maybe-all-target-liboffloadmic: all-target-liboffloadmic
- all-target-liboffloadmic: configure-target-liboffloadmic
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS)  \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
- 		$(TARGET-target-liboffloadmic))
- @endif target-liboffloadmic
- 
- 
- 
- 
- 
- .PHONY: check-target-liboffloadmic maybe-check-target-liboffloadmic
- maybe-check-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-check-target-liboffloadmic: check-target-liboffloadmic
- 
- check-target-liboffloadmic:
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
- 
- @endif target-liboffloadmic
- 
- .PHONY: install-target-liboffloadmic maybe-install-target-liboffloadmic
- maybe-install-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-install-target-liboffloadmic: install-target-liboffloadmic
- 
- install-target-liboffloadmic: installdirs
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
- 
- @endif target-liboffloadmic
- 
- .PHONY: install-strip-target-liboffloadmic maybe-install-strip-target-liboffloadmic
- maybe-install-strip-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-install-strip-target-liboffloadmic: install-strip-target-liboffloadmic
- 
- install-strip-target-liboffloadmic: installdirs
- 	@: $(MAKE); $(unstage)
- 	@r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
- 
- @endif target-liboffloadmic
- 
- # Other targets (info, dvi, pdf, etc.)
- 
- .PHONY: maybe-info-target-liboffloadmic info-target-liboffloadmic
- maybe-info-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-info-target-liboffloadmic: info-target-liboffloadmic
- 
- info-target-liboffloadmic: \
-     configure-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing info in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           info) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-dvi-target-liboffloadmic dvi-target-liboffloadmic
- maybe-dvi-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-dvi-target-liboffloadmic: dvi-target-liboffloadmic
- 
- dvi-target-liboffloadmic: \
-     configure-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing dvi in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           dvi) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-pdf-target-liboffloadmic pdf-target-liboffloadmic
- maybe-pdf-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-pdf-target-liboffloadmic: pdf-target-liboffloadmic
- 
- pdf-target-liboffloadmic: \
-     configure-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing pdf in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           pdf) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-html-target-liboffloadmic html-target-liboffloadmic
- maybe-html-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-html-target-liboffloadmic: html-target-liboffloadmic
- 
- html-target-liboffloadmic: \
-     configure-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing html in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           html) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-TAGS-target-liboffloadmic TAGS-target-liboffloadmic
- maybe-TAGS-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-TAGS-target-liboffloadmic: TAGS-target-liboffloadmic
- 
- TAGS-target-liboffloadmic: \
-     configure-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing TAGS in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           TAGS) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-install-info-target-liboffloadmic install-info-target-liboffloadmic
- maybe-install-info-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-install-info-target-liboffloadmic: install-info-target-liboffloadmic
- 
- install-info-target-liboffloadmic: \
-     configure-target-liboffloadmic \
-     info-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing install-info in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           install-info) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-install-dvi-target-liboffloadmic install-dvi-target-liboffloadmic
- maybe-install-dvi-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-install-dvi-target-liboffloadmic: install-dvi-target-liboffloadmic
- 
- install-dvi-target-liboffloadmic: \
-     configure-target-liboffloadmic \
-     dvi-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing install-dvi in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           install-dvi) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-install-pdf-target-liboffloadmic install-pdf-target-liboffloadmic
- maybe-install-pdf-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-install-pdf-target-liboffloadmic: install-pdf-target-liboffloadmic
- 
- install-pdf-target-liboffloadmic: \
-     configure-target-liboffloadmic \
-     pdf-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing install-pdf in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           install-pdf) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-install-html-target-liboffloadmic install-html-target-liboffloadmic
- maybe-install-html-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-install-html-target-liboffloadmic: install-html-target-liboffloadmic
- 
- install-html-target-liboffloadmic: \
-     configure-target-liboffloadmic \
-     html-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing install-html in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           install-html) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-installcheck-target-liboffloadmic installcheck-target-liboffloadmic
- maybe-installcheck-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-installcheck-target-liboffloadmic: installcheck-target-liboffloadmic
- 
- installcheck-target-liboffloadmic: \
-     configure-target-liboffloadmic 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing installcheck in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           installcheck) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-mostlyclean-target-liboffloadmic mostlyclean-target-liboffloadmic
- maybe-mostlyclean-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-mostlyclean-target-liboffloadmic: mostlyclean-target-liboffloadmic
- 
- mostlyclean-target-liboffloadmic: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing mostlyclean in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           mostlyclean) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-clean-target-liboffloadmic clean-target-liboffloadmic
- maybe-clean-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-clean-target-liboffloadmic: clean-target-liboffloadmic
- 
- clean-target-liboffloadmic: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing clean in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           clean) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-distclean-target-liboffloadmic distclean-target-liboffloadmic
- maybe-distclean-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-distclean-target-liboffloadmic: distclean-target-liboffloadmic
- 
- distclean-target-liboffloadmic: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing distclean in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           distclean) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- .PHONY: maybe-maintainer-clean-target-liboffloadmic maintainer-clean-target-liboffloadmic
- maybe-maintainer-clean-target-liboffloadmic:
- @if target-liboffloadmic
- maybe-maintainer-clean-target-liboffloadmic: maintainer-clean-target-liboffloadmic
- 
- maintainer-clean-target-liboffloadmic: 
- 	@: $(MAKE); $(unstage)
- 	@[ -f $(TARGET_SUBDIR)/liboffloadmic/Makefile ] || exit 0; \
- 	r=`${PWD_COMMAND}`; export r; \
- 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
- 	$(NORMAL_TARGET_EXPORTS) \
- 	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/liboffloadmic"; \
- 	for flag in $(EXTRA_TARGET_FLAGS); do \
- 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
- 	done; \
- 	(cd $(TARGET_SUBDIR)/liboffloadmic && \
- 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
- 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
- 	          "RANLIB=$${RANLIB}" \
- 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
- 	           maintainer-clean) \
- 	  || exit 1
- 
- @endif target-liboffloadmic
- 
- 
- 
- 
- 
  .PHONY: configure-target-libssp maybe-configure-target-libssp
  maybe-configure-target-libssp:
  @if gcc-bootstrap
--- 47393,47398 ----
*************** configure-target-libffi:
*** 55945,55951 ****
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
! 	  --target=${target_alias}  \
  	  || exit 1
  @endif target-libffi
  
--- 55467,55473 ----
  	  $$s/$$module_srcdir/configure \
  	  --srcdir=$${topdir}/$$module_srcdir \
  	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
! 	  --target=${target_alias} --disable-shared --with-pic \
  	  || exit 1
  @endif target-libffi
  
*************** maintainer-clean-target-libada:
*** 58620,58625 ****
--- 58142,58632 ----
  
  
  
+ .PHONY: configure-target-libgm2 maybe-configure-target-libgm2
+ maybe-configure-target-libgm2:
+ @if gcc-bootstrap
+ configure-target-libgm2: stage_current
+ @endif gcc-bootstrap
+ @if target-libgm2
+ maybe-configure-target-libgm2: configure-target-libgm2
+ configure-target-libgm2: 
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	echo "Checking multilib configuration for libgm2..."; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgm2; \
+ 	$(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libgm2/multilib.tmp 2> /dev/null; \
+ 	if test -r $(TARGET_SUBDIR)/libgm2/multilib.out; then \
+ 	  if cmp -s $(TARGET_SUBDIR)/libgm2/multilib.tmp $(TARGET_SUBDIR)/libgm2/multilib.out; then \
+ 	    rm -f $(TARGET_SUBDIR)/libgm2/multilib.tmp; \
+ 	  else \
+ 	    rm -f $(TARGET_SUBDIR)/libgm2/Makefile; \
+ 	    mv $(TARGET_SUBDIR)/libgm2/multilib.tmp $(TARGET_SUBDIR)/libgm2/multilib.out; \
+ 	  fi; \
+ 	else \
+ 	  mv $(TARGET_SUBDIR)/libgm2/multilib.tmp $(TARGET_SUBDIR)/libgm2/multilib.out; \
+ 	fi; \
+ 	test ! -f $(TARGET_SUBDIR)/libgm2/Makefile || exit 0; \
+ 	$(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libgm2; \
+ 	$(NORMAL_TARGET_EXPORTS)  \
+ 	echo Configuring in $(TARGET_SUBDIR)/libgm2; \
+ 	cd "$(TARGET_SUBDIR)/libgm2" || exit 1; \
+ 	case $(srcdir) in \
+ 	  /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \
+ 	  *) topdir=`echo $(TARGET_SUBDIR)/libgm2/ | \
+ 		sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \
+ 	esac; \
+ 	module_srcdir=libgm2; \
+ 	rm -f no-such-file || : ; \
+ 	CONFIG_SITE=no-such-file $(SHELL) \
+ 	  $$s/$$module_srcdir/configure \
+ 	  --srcdir=$${topdir}/$$module_srcdir \
+ 	  $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \
+ 	  --target=${target_alias}  \
+ 	  || exit 1
+ @endif target-libgm2
+ 
+ 
+ 
+ 
+ 
+ .PHONY: all-target-libgm2 maybe-all-target-libgm2
+ maybe-all-target-libgm2:
+ @if gcc-bootstrap
+ all-target-libgm2: stage_current
+ @endif gcc-bootstrap
+ @if target-libgm2
+ TARGET-target-libgm2=all
+ maybe-all-target-libgm2: all-target-libgm2
+ all-target-libgm2: configure-target-libgm2
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS)  \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS)   \
+ 		$(TARGET-target-libgm2))
+ @endif target-libgm2
+ 
+ 
+ 
+ 
+ 
+ .PHONY: check-target-libgm2 maybe-check-target-libgm2
+ maybe-check-target-libgm2:
+ @if target-libgm2
+ maybe-check-target-libgm2: check-target-libgm2
+ 
+ check-target-libgm2:
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)   check)
+ 
+ @endif target-libgm2
+ 
+ .PHONY: install-target-libgm2 maybe-install-target-libgm2
+ maybe-install-target-libgm2:
+ @if target-libgm2
+ maybe-install-target-libgm2: install-target-libgm2
+ 
+ install-target-libgm2: installdirs
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install)
+ 
+ @endif target-libgm2
+ 
+ .PHONY: install-strip-target-libgm2 maybe-install-strip-target-libgm2
+ maybe-install-strip-target-libgm2:
+ @if target-libgm2
+ maybe-install-strip-target-libgm2: install-strip-target-libgm2
+ 
+ install-strip-target-libgm2: installdirs
+ 	@: $(MAKE); $(unstage)
+ 	@r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(TARGET_FLAGS_TO_PASS)  install-strip)
+ 
+ @endif target-libgm2
+ 
+ # Other targets (info, dvi, pdf, etc.)
+ 
+ .PHONY: maybe-info-target-libgm2 info-target-libgm2
+ maybe-info-target-libgm2:
+ @if target-libgm2
+ maybe-info-target-libgm2: info-target-libgm2
+ 
+ info-target-libgm2: \
+     configure-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing info in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           info) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-dvi-target-libgm2 dvi-target-libgm2
+ maybe-dvi-target-libgm2:
+ @if target-libgm2
+ maybe-dvi-target-libgm2: dvi-target-libgm2
+ 
+ dvi-target-libgm2: \
+     configure-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing dvi in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           dvi) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-pdf-target-libgm2 pdf-target-libgm2
+ maybe-pdf-target-libgm2:
+ @if target-libgm2
+ maybe-pdf-target-libgm2: pdf-target-libgm2
+ 
+ pdf-target-libgm2: \
+     configure-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing pdf in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           pdf) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-html-target-libgm2 html-target-libgm2
+ maybe-html-target-libgm2:
+ @if target-libgm2
+ maybe-html-target-libgm2: html-target-libgm2
+ 
+ html-target-libgm2: \
+     configure-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing html in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           html) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-TAGS-target-libgm2 TAGS-target-libgm2
+ maybe-TAGS-target-libgm2:
+ @if target-libgm2
+ maybe-TAGS-target-libgm2: TAGS-target-libgm2
+ 
+ TAGS-target-libgm2: \
+     configure-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing TAGS in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           TAGS) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-install-info-target-libgm2 install-info-target-libgm2
+ maybe-install-info-target-libgm2:
+ @if target-libgm2
+ maybe-install-info-target-libgm2: install-info-target-libgm2
+ 
+ install-info-target-libgm2: \
+     configure-target-libgm2 \
+     info-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing install-info in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           install-info) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-install-dvi-target-libgm2 install-dvi-target-libgm2
+ maybe-install-dvi-target-libgm2:
+ @if target-libgm2
+ maybe-install-dvi-target-libgm2: install-dvi-target-libgm2
+ 
+ install-dvi-target-libgm2: \
+     configure-target-libgm2 \
+     dvi-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing install-dvi in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           install-dvi) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-install-pdf-target-libgm2 install-pdf-target-libgm2
+ maybe-install-pdf-target-libgm2:
+ @if target-libgm2
+ maybe-install-pdf-target-libgm2: install-pdf-target-libgm2
+ 
+ install-pdf-target-libgm2: \
+     configure-target-libgm2 \
+     pdf-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing install-pdf in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           install-pdf) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-install-html-target-libgm2 install-html-target-libgm2
+ maybe-install-html-target-libgm2:
+ @if target-libgm2
+ maybe-install-html-target-libgm2: install-html-target-libgm2
+ 
+ install-html-target-libgm2: \
+     configure-target-libgm2 \
+     html-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing install-html in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           install-html) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-installcheck-target-libgm2 installcheck-target-libgm2
+ maybe-installcheck-target-libgm2:
+ @if target-libgm2
+ maybe-installcheck-target-libgm2: installcheck-target-libgm2
+ 
+ installcheck-target-libgm2: \
+     configure-target-libgm2 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing installcheck in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           installcheck) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-mostlyclean-target-libgm2 mostlyclean-target-libgm2
+ maybe-mostlyclean-target-libgm2:
+ @if target-libgm2
+ maybe-mostlyclean-target-libgm2: mostlyclean-target-libgm2
+ 
+ mostlyclean-target-libgm2: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing mostlyclean in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           mostlyclean) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-clean-target-libgm2 clean-target-libgm2
+ maybe-clean-target-libgm2:
+ @if target-libgm2
+ maybe-clean-target-libgm2: clean-target-libgm2
+ 
+ clean-target-libgm2: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing clean in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           clean) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-distclean-target-libgm2 distclean-target-libgm2
+ maybe-distclean-target-libgm2:
+ @if target-libgm2
+ maybe-distclean-target-libgm2: distclean-target-libgm2
+ 
+ distclean-target-libgm2: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing distclean in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           distclean) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ .PHONY: maybe-maintainer-clean-target-libgm2 maintainer-clean-target-libgm2
+ maybe-maintainer-clean-target-libgm2:
+ @if target-libgm2
+ maybe-maintainer-clean-target-libgm2: maintainer-clean-target-libgm2
+ 
+ maintainer-clean-target-libgm2: 
+ 	@: $(MAKE); $(unstage)
+ 	@[ -f $(TARGET_SUBDIR)/libgm2/Makefile ] || exit 0; \
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(NORMAL_TARGET_EXPORTS) \
+ 	echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libgm2"; \
+ 	for flag in $(EXTRA_TARGET_FLAGS); do \
+ 	  eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \
+ 	done; \
+ 	(cd $(TARGET_SUBDIR)/libgm2 && \
+ 	  $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \
+ 	          "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \
+ 	          "RANLIB=$${RANLIB}" \
+ 	          "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \
+ 	           maintainer-clean) \
+ 	  || exit 1
+ 
+ @endif target-libgm2
+ 
+ 
+ 
+ 
+ 
  .PHONY: configure-target-libgomp maybe-configure-target-libgomp
  maybe-configure-target-libgomp:
  @if gcc-bootstrap
*************** check-gcc-go:
*** 61737,61742 ****
--- 61744,61757 ----
  	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-go);
  check-go: check-gcc-go check-target-libgo check-gotools
  
+ .PHONY: check-gcc-m2 check-m2
+ check-gcc-m2:
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-m2);
+ check-m2: check-gcc-m2 check-target-libgm2
+ 
  .PHONY: check-gcc-d check-d
  check-gcc-d:
  	r=`${PWD_COMMAND}`; export r; \
*************** check-gcc-jit:
*** 61753,61758 ****
--- 61768,61781 ----
  	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-jit);
  check-jit: check-gcc-jit
  
+ .PHONY: check-gcc-rust check-rust
+ check-gcc-rust:
+ 	r=`${PWD_COMMAND}`; export r; \
+ 	s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \
+ 	$(HOST_EXPORTS) \
+ 	(cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-rust);
+ check-rust: check-gcc-rust
+ 
  
  # The gcc part of install-no-fixedincludes, which relies on an intimate
  # knowledge of how a number of gcc internal targets (inter)operate.  Delegate.
*************** stage1-start::
*** 61875,61885 ****
  	  mkdir stage1-isl; \
  	mv stage1-isl isl
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stage1-libelf ] || \
- 	  mkdir stage1-libelf; \
- 	mv stage1-libelf libelf
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stage1-gold ] || \
  	  mkdir stage1-gold; \
--- 61898,61903 ----
*************** stage1-start::
*** 61945,61950 ****
--- 61963,61973 ----
  	  mkdir stage1-libctf; \
  	mv stage1-libctf libctf
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stage1-libsframe ] || \
+ 	  mkdir stage1-libsframe; \
+ 	mv stage1-libsframe libsframe
+ @endif libsframe
  	@[ -d stage1-$(TARGET_SUBDIR) ] || \
  	  mkdir stage1-$(TARGET_SUBDIR); \
  	mv stage1-$(TARGET_SUBDIR) $(TARGET_SUBDIR)
*************** stage1-end::
*** 62000,62010 ****
  	  cd $(HOST_SUBDIR); mv isl stage1-isl; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stage1-libelf; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stage1-gold; \
--- 62023,62028 ----
*************** stage1-end::
*** 62070,62075 ****
--- 62088,62098 ----
  	  cd $(HOST_SUBDIR); mv libctf stage1-libctf; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stage1-libsframe; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR); \
  	fi
*************** stage2-start::
*** 62178,62189 ****
  	mv stage2-isl isl; \
  	mv stage1-isl prev-isl || test -f stage1-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stage2-libelf ] || \
- 	  mkdir stage2-libelf; \
- 	mv stage2-libelf libelf; \
- 	mv stage1-libelf prev-libelf || test -f stage1-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stage2-gold ] || \
  	  mkdir stage2-gold; \
--- 62201,62206 ----
*************** stage2-start::
*** 62262,62267 ****
--- 62279,62290 ----
  	mv stage2-libctf libctf; \
  	mv stage1-libctf prev-libctf || test -f stage1-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stage2-libsframe ] || \
+ 	  mkdir stage2-libsframe; \
+ 	mv stage2-libsframe libsframe; \
+ 	mv stage1-libsframe prev-libsframe || test -f stage1-lean 
+ @endif libsframe
  	@[ -d stage2-$(TARGET_SUBDIR) ] || \
  	  mkdir stage2-$(TARGET_SUBDIR); \
  	mv stage2-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stage2-end::
*** 62328,62339 ****
  	  mv prev-isl stage1-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stage2-libelf; \
- 	  mv prev-libelf stage1-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stage2-gold; \
--- 62351,62356 ----
*************** stage2-end::
*** 62412,62417 ****
--- 62429,62440 ----
  	  mv prev-libctf stage1-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stage2-libsframe; \
+ 	  mv prev-libsframe stage1-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR); : ; \
*************** stage3-start::
*** 62544,62555 ****
  	mv stage3-isl isl; \
  	mv stage2-isl prev-isl || test -f stage2-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stage3-libelf ] || \
- 	  mkdir stage3-libelf; \
- 	mv stage3-libelf libelf; \
- 	mv stage2-libelf prev-libelf || test -f stage2-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stage3-gold ] || \
  	  mkdir stage3-gold; \
--- 62567,62572 ----
*************** stage3-start::
*** 62628,62633 ****
--- 62645,62656 ----
  	mv stage3-libctf libctf; \
  	mv stage2-libctf prev-libctf || test -f stage2-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stage3-libsframe ] || \
+ 	  mkdir stage3-libsframe; \
+ 	mv stage3-libsframe libsframe; \
+ 	mv stage2-libsframe prev-libsframe || test -f stage2-lean 
+ @endif libsframe
  	@[ -d stage3-$(TARGET_SUBDIR) ] || \
  	  mkdir stage3-$(TARGET_SUBDIR); \
  	mv stage3-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stage3-end::
*** 62694,62705 ****
  	  mv prev-isl stage2-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stage3-libelf; \
- 	  mv prev-libelf stage2-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stage3-gold; \
--- 62717,62722 ----
*************** stage3-end::
*** 62778,62783 ****
--- 62795,62806 ----
  	  mv prev-libctf stage2-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stage3-libsframe; \
+ 	  mv prev-libsframe stage2-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stage2-$(TARGET_SUBDIR); : ; \
*************** stage4-start::
*** 62966,62977 ****
  	mv stage4-isl isl; \
  	mv stage3-isl prev-isl || test -f stage3-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stage4-libelf ] || \
- 	  mkdir stage4-libelf; \
- 	mv stage4-libelf libelf; \
- 	mv stage3-libelf prev-libelf || test -f stage3-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stage4-gold ] || \
  	  mkdir stage4-gold; \
--- 62989,62994 ----
*************** stage4-start::
*** 63050,63055 ****
--- 63067,63078 ----
  	mv stage4-libctf libctf; \
  	mv stage3-libctf prev-libctf || test -f stage3-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stage4-libsframe ] || \
+ 	  mkdir stage4-libsframe; \
+ 	mv stage4-libsframe libsframe; \
+ 	mv stage3-libsframe prev-libsframe || test -f stage3-lean 
+ @endif libsframe
  	@[ -d stage4-$(TARGET_SUBDIR) ] || \
  	  mkdir stage4-$(TARGET_SUBDIR); \
  	mv stage4-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stage4-end::
*** 63116,63127 ****
  	  mv prev-isl stage3-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stage4-libelf; \
- 	  mv prev-libelf stage3-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stage4-gold; \
--- 63139,63144 ----
*************** stage4-end::
*** 63200,63205 ****
--- 63217,63228 ----
  	  mv prev-libctf stage3-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stage4-libsframe; \
+ 	  mv prev-libsframe stage3-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stage4-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stage3-$(TARGET_SUBDIR); : ; \
*************** stageprofile-start::
*** 63376,63387 ****
  	mv stageprofile-isl isl; \
  	mv stage1-isl prev-isl || test -f stage1-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stageprofile-libelf ] || \
- 	  mkdir stageprofile-libelf; \
- 	mv stageprofile-libelf libelf; \
- 	mv stage1-libelf prev-libelf || test -f stage1-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stageprofile-gold ] || \
  	  mkdir stageprofile-gold; \
--- 63399,63404 ----
*************** stageprofile-start::
*** 63460,63465 ****
--- 63477,63488 ----
  	mv stageprofile-libctf libctf; \
  	mv stage1-libctf prev-libctf || test -f stage1-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stageprofile-libsframe ] || \
+ 	  mkdir stageprofile-libsframe; \
+ 	mv stageprofile-libsframe libsframe; \
+ 	mv stage1-libsframe prev-libsframe || test -f stage1-lean 
+ @endif libsframe
  	@[ -d stageprofile-$(TARGET_SUBDIR) ] || \
  	  mkdir stageprofile-$(TARGET_SUBDIR); \
  	mv stageprofile-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stageprofile-end::
*** 63526,63537 ****
  	  mv prev-isl stage1-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stageprofile-libelf; \
- 	  mv prev-libelf stage1-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stageprofile-gold; \
--- 63549,63554 ----
*************** stageprofile-end::
*** 63610,63615 ****
--- 63627,63638 ----
  	  mv prev-libctf stage1-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stageprofile-libsframe; \
+ 	  mv prev-libsframe stage1-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR); : ; \
*************** stagetrain-start::
*** 63719,63730 ****
  	mv stagetrain-isl isl; \
  	mv stageprofile-isl prev-isl || test -f stageprofile-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stagetrain-libelf ] || \
- 	  mkdir stagetrain-libelf; \
- 	mv stagetrain-libelf libelf; \
- 	mv stageprofile-libelf prev-libelf || test -f stageprofile-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stagetrain-gold ] || \
  	  mkdir stagetrain-gold; \
--- 63742,63747 ----
*************** stagetrain-start::
*** 63803,63808 ****
--- 63820,63831 ----
  	mv stagetrain-libctf libctf; \
  	mv stageprofile-libctf prev-libctf || test -f stageprofile-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stagetrain-libsframe ] || \
+ 	  mkdir stagetrain-libsframe; \
+ 	mv stagetrain-libsframe libsframe; \
+ 	mv stageprofile-libsframe prev-libsframe || test -f stageprofile-lean 
+ @endif libsframe
  	@[ -d stagetrain-$(TARGET_SUBDIR) ] || \
  	  mkdir stagetrain-$(TARGET_SUBDIR); \
  	mv stagetrain-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stagetrain-end::
*** 63869,63880 ****
  	  mv prev-isl stageprofile-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stagetrain-libelf; \
- 	  mv prev-libelf stageprofile-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stagetrain-gold; \
--- 63892,63897 ----
*************** stagetrain-end::
*** 63953,63958 ****
--- 63970,63981 ----
  	  mv prev-libctf stageprofile-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stagetrain-libsframe; \
+ 	  mv prev-libsframe stageprofile-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stagetrain-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stageprofile-$(TARGET_SUBDIR); : ; \
*************** stagefeedback-start::
*** 64062,64073 ****
  	mv stagefeedback-isl isl; \
  	mv stagetrain-isl prev-isl || test -f stagetrain-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stagefeedback-libelf ] || \
- 	  mkdir stagefeedback-libelf; \
- 	mv stagefeedback-libelf libelf; \
- 	mv stagetrain-libelf prev-libelf || test -f stagetrain-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stagefeedback-gold ] || \
  	  mkdir stagefeedback-gold; \
--- 64085,64090 ----
*************** stagefeedback-start::
*** 64146,64151 ****
--- 64163,64174 ----
  	mv stagefeedback-libctf libctf; \
  	mv stagetrain-libctf prev-libctf || test -f stagetrain-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stagefeedback-libsframe ] || \
+ 	  mkdir stagefeedback-libsframe; \
+ 	mv stagefeedback-libsframe libsframe; \
+ 	mv stagetrain-libsframe prev-libsframe || test -f stagetrain-lean 
+ @endif libsframe
  	@[ -d stagefeedback-$(TARGET_SUBDIR) ] || \
  	  mkdir stagefeedback-$(TARGET_SUBDIR); \
  	mv stagefeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stagefeedback-end::
*** 64212,64223 ****
  	  mv prev-isl stagetrain-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stagefeedback-libelf; \
- 	  mv prev-libelf stagetrain-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stagefeedback-gold; \
--- 64235,64240 ----
*************** stagefeedback-end::
*** 64296,64301 ****
--- 64313,64324 ----
  	  mv prev-libctf stagetrain-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stagefeedback-libsframe; \
+ 	  mv prev-libsframe stagetrain-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stagefeedback-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stagetrain-$(TARGET_SUBDIR); : ; \
*************** stageautoprofile-start::
*** 64428,64439 ****
  	mv stageautoprofile-isl isl; \
  	mv stage1-isl prev-isl || test -f stage1-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stageautoprofile-libelf ] || \
- 	  mkdir stageautoprofile-libelf; \
- 	mv stageautoprofile-libelf libelf; \
- 	mv stage1-libelf prev-libelf || test -f stage1-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stageautoprofile-gold ] || \
  	  mkdir stageautoprofile-gold; \
--- 64451,64456 ----
*************** stageautoprofile-start::
*** 64512,64517 ****
--- 64529,64540 ----
  	mv stageautoprofile-libctf libctf; \
  	mv stage1-libctf prev-libctf || test -f stage1-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stageautoprofile-libsframe ] || \
+ 	  mkdir stageautoprofile-libsframe; \
+ 	mv stageautoprofile-libsframe libsframe; \
+ 	mv stage1-libsframe prev-libsframe || test -f stage1-lean 
+ @endif libsframe
  	@[ -d stageautoprofile-$(TARGET_SUBDIR) ] || \
  	  mkdir stageautoprofile-$(TARGET_SUBDIR); \
  	mv stageautoprofile-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stageautoprofile-end::
*** 64578,64589 ****
  	  mv prev-isl stage1-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stageautoprofile-libelf; \
- 	  mv prev-libelf stage1-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stageautoprofile-gold; \
--- 64601,64606 ----
*************** stageautoprofile-end::
*** 64662,64667 ****
--- 64679,64690 ----
  	  mv prev-libctf stage1-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stageautoprofile-libsframe; \
+ 	  mv prev-libsframe stage1-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stageautoprofile-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stage1-$(TARGET_SUBDIR); : ; \
*************** stageautofeedback-start::
*** 64771,64782 ****
  	mv stageautofeedback-isl isl; \
  	mv stageautoprofile-isl prev-isl || test -f stageautoprofile-lean 
  @endif isl
- @if libelf
- 	@cd $(HOST_SUBDIR); [ -d stageautofeedback-libelf ] || \
- 	  mkdir stageautofeedback-libelf; \
- 	mv stageautofeedback-libelf libelf; \
- 	mv stageautoprofile-libelf prev-libelf || test -f stageautoprofile-lean 
- @endif libelf
  @if gold
  	@cd $(HOST_SUBDIR); [ -d stageautofeedback-gold ] || \
  	  mkdir stageautofeedback-gold; \
--- 64794,64799 ----
*************** stageautofeedback-start::
*** 64855,64860 ****
--- 64872,64883 ----
  	mv stageautofeedback-libctf libctf; \
  	mv stageautoprofile-libctf prev-libctf || test -f stageautoprofile-lean 
  @endif libctf
+ @if libsframe
+ 	@cd $(HOST_SUBDIR); [ -d stageautofeedback-libsframe ] || \
+ 	  mkdir stageautofeedback-libsframe; \
+ 	mv stageautofeedback-libsframe libsframe; \
+ 	mv stageautoprofile-libsframe prev-libsframe || test -f stageautoprofile-lean 
+ @endif libsframe
  	@[ -d stageautofeedback-$(TARGET_SUBDIR) ] || \
  	  mkdir stageautofeedback-$(TARGET_SUBDIR); \
  	mv stageautofeedback-$(TARGET_SUBDIR) $(TARGET_SUBDIR); \
*************** stageautofeedback-end::
*** 64921,64932 ****
  	  mv prev-isl stageautoprofile-isl; : ; \
  	fi
  @endif isl
- @if libelf
- 	@if test -d $(HOST_SUBDIR)/libelf; then \
- 	  cd $(HOST_SUBDIR); mv libelf stageautofeedback-libelf; \
- 	  mv prev-libelf stageautoprofile-libelf; : ; \
- 	fi
- @endif libelf
  @if gold
  	@if test -d $(HOST_SUBDIR)/gold; then \
  	  cd $(HOST_SUBDIR); mv gold stageautofeedback-gold; \
--- 64944,64949 ----
*************** stageautofeedback-end::
*** 65005,65010 ****
--- 65022,65033 ----
  	  mv prev-libctf stageautoprofile-libctf; : ; \
  	fi
  @endif libctf
+ @if libsframe
+ 	@if test -d $(HOST_SUBDIR)/libsframe; then \
+ 	  cd $(HOST_SUBDIR); mv libsframe stageautofeedback-libsframe; \
+ 	  mv prev-libsframe stageautoprofile-libsframe; : ; \
+ 	fi
+ @endif libsframe
  	@if test -d $(TARGET_SUBDIR); then \
  	  mv $(TARGET_SUBDIR) stageautofeedback-$(TARGET_SUBDIR); \
  	  mv prev-$(TARGET_SUBDIR) stageautoprofile-$(TARGET_SUBDIR); : ; \
*************** configure-stagetrain-target-libvtv: mayb
*** 65139,65145 ****
  configure-stagefeedback-target-libvtv: maybe-all-stagefeedback-gcc
  configure-stageautoprofile-target-libvtv: maybe-all-stageautoprofile-gcc
  configure-stageautofeedback-target-libvtv: maybe-all-stageautofeedback-gcc
- configure-target-liboffloadmic: stage_last
  configure-target-libssp: stage_last
  configure-target-newlib: stage_last
  configure-stage1-target-libgcc: maybe-all-stage1-gcc
--- 65162,65167 ----
*************** configure-stageautoprofile-target-zlib:
*** 65188,65193 ****
--- 65210,65216 ----
  configure-stageautofeedback-target-zlib: maybe-all-stageautofeedback-gcc
  configure-target-rda: stage_last
  configure-target-libada: stage_last
+ configure-target-libgm2: stage_last
  configure-stage1-target-libgomp: maybe-all-stage1-gcc
  configure-stage2-target-libgomp: maybe-all-stage2-gcc
  configure-stage3-target-libgomp: maybe-all-stage3-gcc
*************** configure-stageautofeedback-target-libat
*** 65213,65219 ****
  configure-target-libstdc++-v3: maybe-all-gcc
  configure-target-libsanitizer: maybe-all-gcc
  configure-target-libvtv: maybe-all-gcc
- configure-target-liboffloadmic: maybe-all-gcc
  configure-target-libssp: maybe-all-gcc
  configure-target-newlib: maybe-all-gcc
  configure-target-libgcc: maybe-all-gcc
--- 65236,65241 ----
*************** configure-target-libffi: maybe-all-gcc
*** 65230,65235 ****
--- 65252,65258 ----
  configure-target-zlib: maybe-all-gcc
  configure-target-rda: maybe-all-gcc
  configure-target-libada: maybe-all-gcc
+ configure-target-libgm2: maybe-all-gcc
  configure-target-libgomp: maybe-all-gcc
  configure-target-libitm: maybe-all-gcc
  configure-target-libatomic: maybe-all-gcc
*************** configure-stagetrain-gcc: maybe-all-stag
*** 65361,65376 ****
  configure-stagefeedback-gcc: maybe-all-stagefeedback-gold
  configure-stageautoprofile-gcc: maybe-all-stageautoprofile-gold
  configure-stageautofeedback-gcc: maybe-all-stageautofeedback-gold
- configure-gcc: maybe-all-libelf
- configure-stage1-gcc: maybe-all-stage1-libelf
- configure-stage2-gcc: maybe-all-stage2-libelf
- configure-stage3-gcc: maybe-all-stage3-libelf
- configure-stage4-gcc: maybe-all-stage4-libelf
- configure-stageprofile-gcc: maybe-all-stageprofile-libelf
- configure-stagetrain-gcc: maybe-all-stagetrain-libelf
- configure-stagefeedback-gcc: maybe-all-stagefeedback-libelf
- configure-stageautoprofile-gcc: maybe-all-stageautoprofile-libelf
- configure-stageautofeedback-gcc: maybe-all-stageautofeedback-libelf
  configure-gcc: maybe-all-libiconv
  configure-stage1-gcc: maybe-all-stage1-libiconv
  configure-stage2-gcc: maybe-all-stage2-libiconv
--- 65384,65389 ----
*************** all-stagetrain-ld: maybe-all-stagetrain-
*** 65956,65961 ****
--- 65969,65984 ----
  all-stagefeedback-ld: maybe-all-stagefeedback-libctf
  all-stageautoprofile-ld: maybe-all-stageautoprofile-libctf
  all-stageautofeedback-ld: maybe-all-stageautofeedback-libctf
+ all-binutils: maybe-all-libsframe
+ all-stage1-binutils: maybe-all-stage1-libsframe
+ all-stage2-binutils: maybe-all-stage2-libsframe
+ all-stage3-binutils: maybe-all-stage3-libsframe
+ all-stage4-binutils: maybe-all-stage4-libsframe
+ all-stageprofile-binutils: maybe-all-stageprofile-libsframe
+ all-stagetrain-binutils: maybe-all-stagetrain-libsframe
+ all-stagefeedback-binutils: maybe-all-stagefeedback-libsframe
+ all-stageautoprofile-binutils: maybe-all-stageautoprofile-libsframe
+ all-stageautofeedback-binutils: maybe-all-stageautofeedback-libsframe
  install-binutils: maybe-install-opcodes
  install-strip-binutils: maybe-install-strip-opcodes
  install-libctf: maybe-install-bfd
*************** install-target-libsanitizer: maybe-insta
*** 66449,66456 ****
  install-target-libsanitizer: maybe-install-target-libgcc
  install-target-libvtv: maybe-install-target-libstdc++-v3
  install-target-libvtv: maybe-install-target-libgcc
- install-target-liboffloadmic: maybe-install-target-libstdc++-v3
- install-target-liboffloadmic: maybe-install-target-libgcc
  install-target-libitm: maybe-install-target-libgcc
  install-target-libobjc: maybe-install-target-libgcc
  install-target-libstdc++-v3: maybe-install-target-libgcc
--- 66472,66477 ----
*************** configure-libcc1: maybe-configure-gcc
*** 66482,66487 ****
--- 66503,66510 ----
  all-libcc1: maybe-all-gcc
  all-c++tools: maybe-all-gcc
  all-utils: maybe-all-libiberty
+ configure-gdb: maybe-all-gmp
+ configure-gdb: maybe-all-mpfr
  configure-gdb: maybe-all-intl
  configure-gdb: maybe-all-bfd
  configure-gdb: maybe-all-libiconv
*************** all-target-fastjar: maybe-all-target-zli
*** 66518,66528 ****
  configure-target-libgo: maybe-all-target-libstdc++-v3
  all-target-libgo: maybe-all-target-libbacktrace
  all-target-libgo: maybe-all-target-libatomic
! configure-target-liboffloadmic: maybe-configure-target-libgomp
! all-target-liboffloadmic: maybe-all-target-libgomp
  configure-target-newlib: maybe-all-binutils
  configure-target-newlib: maybe-all-ld
  configure-target-libgfortran: maybe-all-target-libbacktrace
  @endunless gcc-bootstrap
  
  # Dependencies for target modules on other target modules are
--- 66541,66552 ----
  configure-target-libgo: maybe-all-target-libstdc++-v3
  all-target-libgo: maybe-all-target-libbacktrace
  all-target-libgo: maybe-all-target-libatomic
! configure-target-libgm2: maybe-all-target-libstdc++-v3
! all-target-libgm2: maybe-all-target-libatomic
  configure-target-newlib: maybe-all-binutils
  configure-target-newlib: maybe-all-ld
  configure-target-libgfortran: maybe-all-target-libbacktrace
+ configure-target-libgo: maybe-all-target-libbacktrace
  @endunless gcc-bootstrap
  
  # Dependencies for target modules on other target modules are
*************** configure-stageautofeedback-target-libat
*** 66609,66615 ****
  configure-target-libstdc++-v3: maybe-all-target-libgcc
  configure-target-libsanitizer: maybe-all-target-libgcc
  configure-target-libvtv: maybe-all-target-libgcc
- configure-target-liboffloadmic: maybe-all-target-libgcc
  configure-target-libssp: maybe-all-target-libgcc
  configure-target-newlib: maybe-all-target-libgcc
  configure-target-libbacktrace: maybe-all-target-libgcc
--- 66633,66638 ----
*************** configure-target-libffi: maybe-all-targe
*** 66625,66630 ****
--- 66648,66654 ----
  configure-target-zlib: maybe-all-target-libgcc
  configure-target-rda: maybe-all-target-libgcc
  configure-target-libada: maybe-all-target-libgcc
+ configure-target-libgm2: maybe-all-target-libgcc
  configure-target-libgomp: maybe-all-target-libgcc
  configure-target-libitm: maybe-all-target-libgcc
  configure-target-libatomic: maybe-all-target-libgcc
*************** configure-target-libsanitizer: maybe-all
*** 66637,66645 ****
  
  configure-target-libvtv: maybe-all-target-newlib maybe-all-target-libgloss
  
- configure-target-liboffloadmic: maybe-all-target-newlib maybe-all-target-libgloss
- configure-target-liboffloadmic: maybe-all-target-libstdc++-v3
- 
  configure-target-libssp: maybe-all-target-newlib maybe-all-target-libgloss
  
  
--- 66661,66666 ----
*************** configure-target-rda: maybe-all-target-n
*** 66670,66675 ****
--- 66691,66698 ----
  
  configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss
  
+ configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss
+ 
  configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss
  
  configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss
diff -Nrcpad gcc-12.2.0/Makefile.tpl gcc-13.1.0/Makefile.tpl
*** gcc-12.2.0/Makefile.tpl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/Makefile.tpl	Wed Apr 26 07:09:39 2023
*************** BUILD_EXPORTS = \
*** 166,171 ****
--- 166,173 ----
  	GOCFLAGS="$(GOCFLAGS_FOR_BUILD)"; export GOCFLAGS; \
  	GDC="$(GDC_FOR_BUILD)"; export GDC; \
  	GDCFLAGS="$(GDCFLAGS_FOR_BUILD)"; export GDCFLAGS; \
+ 	GM2="$(GM2_FOR_BUILD)"; export GM2; \
+ 	GM2FLAGS="$(GM2FLAGS_FOR_BUILD)"; export GM2FLAGS; \
  	DLLTOOL="$(DLLTOOL_FOR_BUILD)"; export DLLTOOL; \
  	DSYMUTIL="$(DSYMUTIL_FOR_BUILD)"; export DSYMUTIL; \
  	LD="$(LD_FOR_BUILD)"; export LD; \
*************** HOST_EXPORTS = \
*** 204,209 ****
--- 206,212 ----
  	GFORTRAN="$(GFORTRAN)"; export GFORTRAN; \
  	GOC="$(GOC)"; export GOC; \
  	GDC="$(GDC)"; export GDC; \
+ 	GM2="$(GM2)"; export GM2; \
  	AR="$(AR)"; export AR; \
  	AS="$(AS)"; export AS; \
  	CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \
*************** HOST_EXPORTS = \
*** 225,231 ****
  	AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \
  	AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \
  	DSYMUTIL_FOR_TARGET="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL_FOR_TARGET; \
! 	GCC_FOR_TARGET="$(GCC_FOR_TARGET)"; export GCC_FOR_TARGET; \
  	LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \
  	NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \
  	OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \
--- 228,234 ----
  	AR_FOR_TARGET="$(AR_FOR_TARGET)"; export AR_FOR_TARGET; \
  	AS_FOR_TARGET="$(AS_FOR_TARGET)"; export AS_FOR_TARGET; \
  	DSYMUTIL_FOR_TARGET="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL_FOR_TARGET; \
! 	GCC_FOR_TARGET="$(GCC_FOR_TARGET) $$TFLAGS"; export GCC_FOR_TARGET; \
  	LD_FOR_TARGET="$(LD_FOR_TARGET)"; export LD_FOR_TARGET; \
  	NM_FOR_TARGET="$(NM_FOR_TARGET)"; export NM_FOR_TARGET; \
  	OBJDUMP_FOR_TARGET="$(OBJDUMP_FOR_TARGET)"; export OBJDUMP_FOR_TARGET; \
*************** HOST_EXPORTS = \
*** 239,246 ****
  	GMPINC="$(HOST_GMPINC)"; export GMPINC; \
  	ISLLIBS="$(HOST_ISLLIBS)"; export ISLLIBS; \
  	ISLINC="$(HOST_ISLINC)"; export ISLINC; \
- 	LIBELFLIBS="$(HOST_LIBELFLIBS)"; export LIBELFLIBS; \
- 	LIBELFINC="$(HOST_LIBELFINC)"; export LIBELFINC; \
  	XGCC_FLAGS_FOR_TARGET="$(XGCC_FLAGS_FOR_TARGET)"; export XGCC_FLAGS_FOR_TARGET; \
  @if gcc-bootstrap
  	$(RPATH_ENVVAR)=`echo "$(TARGET_LIB_PATH)$$$(RPATH_ENVVAR)" | sed 's,::*,:,g;s,^:*,,;s,:*$$,,'`; export $(RPATH_ENVVAR); \
--- 242,247 ----
*************** BASE_TARGET_EXPORTS = \
*** 309,314 ****
--- 310,316 ----
  	GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \
  	GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \
  	GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \
+ 	GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \
  	DLLTOOL="$(DLLTOOL_FOR_TARGET)"; export DLLTOOL; \
  	DSYMUTIL="$(DSYMUTIL_FOR_TARGET)"; export DSYMUTIL; \
  	LD="$(COMPILER_LD_FOR_TARGET)"; export LD; \
*************** HOST_GMPINC = @gmpinc@
*** 346,355 ****
  HOST_ISLLIBS = @isllibs@
  HOST_ISLINC = @islinc@
  
- # Where to find libelf
- HOST_LIBELFLIBS = @libelflibs@
- HOST_LIBELFINC = @libelfinc@
- 
  # ----------------------------------------------
  # Programs producing files for the BUILD machine
  # ----------------------------------------------
--- 348,353 ----
*************** DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD
*** 379,384 ****
--- 377,383 ----
  GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@
  GOC_FOR_BUILD = @GOC_FOR_BUILD@
  GDC_FOR_BUILD = @GDC_FOR_BUILD@
+ GM2_FOR_BUILD = @GM2_FOR_BUILD@
  LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@
  LD_FOR_BUILD = @LD_FOR_BUILD@
  NM_FOR_BUILD = @NM_FOR_BUILD@
*************** CXXFLAGS = @CXXFLAGS@
*** 449,454 ****
--- 448,454 ----
  LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates
  GOCFLAGS = $(CFLAGS)
  GDCFLAGS = $(CFLAGS)
+ GM2FLAGS = $(CFLAGS)
  
  # Pass additional PGO and LTO compiler options to the PGO build.
  BUILD_CFLAGS = $(PGO_BUILD_CFLAGS) $(PGO_BUILD_LTO_CFLAGS)
*************** RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @
*** 584,589 ****
--- 584,590 ----
  GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@
  GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@
  GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@
+ GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@
  DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@
  DSYMUTIL_FOR_TARGET=@DSYMUTIL_FOR_TARGET@
  LD_FOR_TARGET=@LD_FOR_TARGET@
*************** CXXFLAGS_FOR_TARGET = @CXXFLAGS_FOR_TARG
*** 609,614 ****
--- 610,616 ----
  LIBCFLAGS_FOR_TARGET = $(CFLAGS_FOR_TARGET)
  LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates
  LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@
+ GM2FLAGS_FOR_TARGET = -O2 -g
  GOCFLAGS_FOR_TARGET = -O2 -g
  GDCFLAGS_FOR_TARGET = -O2 -g
  
*************** EXTRA_HOST_FLAGS = \
*** 715,720 ****
--- 717,723 ----
  	'GFORTRAN=$(GFORTRAN)' \
  	'GOC=$(GOC)' \
  	'GDC=$(GDC)' \
+ 	'GM2=$(GM2)' \
  	'LD=$(LD)' \
  	'LIPO=$(LIPO)' \
  	'NM=$(NM)' \
*************** POSTSTAGE1_FLAGS_TO_PASS = \
*** 741,746 ****
--- 744,750 ----
  	CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \
  	CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \
  	GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \
+ 	GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \
  	GNATBIND="$${GNATBIND}" \
  	LDFLAGS="$${LDFLAGS}" \
  	HOST_LIBS="$${HOST_LIBS}" \
*************** EXTRA_TARGET_FLAGS = \
*** 776,781 ****
--- 780,787 ----
  	'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \
  	'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
  	'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \
+ 	'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \
+ 	'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \
  	'LD=$(COMPILER_LD_FOR_TARGET)' \
  	'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \
  	'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \
*************** TARGET_FLAGS_TO_PASS = $(BASE_FLAGS_TO_P
*** 801,807 ****
  # The BUILD_* variables are a special case, which are used for the gcc
  # cross-building scheme.
  EXTRA_GCC_FLAGS = \
! 	"GCC_FOR_TARGET=$(GCC_FOR_TARGET)" \
  	"`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \
  	"`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
  
--- 807,814 ----
  # The BUILD_* variables are a special case, which are used for the gcc
  # cross-building scheme.
  EXTRA_GCC_FLAGS = \
! 	"GCC_FOR_TARGET=$(GCC_FOR_TARGET) $$TFLAGS" \
! 	"GM2_FOR_TARGET=$(GM2_FOR_TARGET) $$TFLAGS" \
  	"`echo 'STMP_FIXPROTO=$(STMP_FIXPROTO)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`" \
  	"`echo 'LIMITS_H_TEST=$(LIMITS_H_TEST)' | sed -e s'/[^=][^=]*=$$/XFOO=/'`"
  
diff -Nrcpad gcc-12.2.0/NEWS gcc-13.1.0/NEWS
*** gcc-12.2.0/NEWS	Fri Aug 19 08:15:57 2022
--- gcc-13.1.0/NEWS	Wed Apr 26 07:11:39 2023
*************** that led to GCC 3. For information on GC
*** 5,12 ****
  see ONEWS.
  
  ======================================================================
! http://gcc.gnu.org/gcc-12/index.html
  
                               GCC 12 Release Series
  
     Aug 19, 2022
--- 5,681 ----
  see ONEWS.
  
  ======================================================================
! http://gcc.gnu.org/gcc-13/index.html
!                              GCC 13 Release Series
! 
!    April 26, 2023
! 
!    The GCC developers are pleased to announce the release of GCC 13.1.
! 
!    This release is a major release, containing new features (as well as
!    many other improvements) relative to GCC 12.x.
! 
! Release History
! 
!    GCC 13.1
!           April 26, 2023 ([1]changes, [2]documentation)
! 
! References and Acknowledgements
! 
!    GCC used to stand for the GNU C Compiler, but since the compiler
!    supports several other languages aside from C, it now stands for the
!    GNU Compiler Collection.
! 
!    A list of [3]successful builds is updated as new information becomes
!    available.
! 
!    The GCC developers would like to thank the numerous people that have
!    contributed new features, improvements, bug fixes, and other changes as
!    well as test results to GCC. This [4]amazing group of volunteers is
!    what makes GCC successful.
! 
!    For additional information about GCC please refer to the [5]GCC project
!    web site or contact the [6]GCC development mailing list.
! 
!    To obtain GCC please use [7]our mirror sites or [8]our version control
!    system.
! 
! 
!     For questions related to the use of GCC, please consult these web
!     pages and the [9]GCC manuals. If that fails, the
!     [10]gcc-help@gcc.gnu.org mailing list might help. Comments on these
!     web pages and the development of GCC are welcome on our developer
!     list at [11]gcc@gcc.gnu.org. All of [12]our lists have public
!     archives.
! 
!    Copyright (C) [13]Free Software Foundation, Inc. Verbatim copying and
!    distribution of this entire article is permitted in any medium,
!    provided this notice is preserved.
! 
!    These pages are [14]maintained by the GCC team. Last modified
!    2023-04-26.
! 
! References
! 
!    1. http://gcc.gnu.org/gcc-13/changes.html
!    2. http://gcc.gnu.org/onlinedocs/13.1.0/
!    3. http://gcc.gnu.org/gcc-13/buildstat.html
!    4. http://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Contributors.html
!    5. http://gcc.gnu.org/index.html
!    6. mailto:gcc@gcc.gnu.org
!    7. http://gcc.gnu.org/mirrors.html
!    8. http://gcc.gnu.org/git.html
!    9. https://gcc.gnu.org/onlinedocs/
!   10. mailto:gcc-help@gcc.gnu.org
!   11. mailto:gcc@gcc.gnu.org
!   12. https://gcc.gnu.org/lists.html
!   13. https://www.fsf.org/
!   14. https://gcc.gnu.org/about.html
! ======================================================================
! http://gcc.gnu.org/gcc-13/changes.html
!                              GCC 13 Release Series
!                         Changes, New Features, and Fixes
! 
!    This page is a "brief" summary of some of the huge number of
!    improvements in GCC 13. You may also want to check out our [1]Porting
!    to GCC 13 page and the [2]full GCC documentation.
! 
! Caveats
! 
!      * OpenMP offloading to Intel MIC has been removed.
!      * The support for the cr16-elf, tilegx*-linux, tilepro*-linux,
!        hppa[12]*-*-hpux10*, hppa[12]*-*-hpux11* and m32c-rtems
!        configurations has been removed.
!      * Support for Solaris 11.3 (*-*-solaris2.11.3) has been declared
!        obsolete. The next release of GCC will have corresponding code
!        permanently removed. Details can be found in the [3]announcement.
!      * Support for emitting the STABS debugging format (including the
!        -gstabs and -gxcoff options) has been removed. (This means the dbx
!        debugger is no longer supported, either.)
!      * Legacy debug info compression option -gz=zlib-gnu was removed and
!        the option is ignored right now.
!      * [4]-Warray-bounds=2 will no longer issue warnings for out of bounds
!        accesses to trailing struct members of one-element array type
!        anymore. Instead it diagnoses accesses to trailing arrays according
!        to -fstrict-flex-arrays.
!      * [5]-fanalyzer is still only suitable for analyzing C code. In
!        particular, using it on C++ is unlikely to give meaningful output.
!      * In the arm port, support for the iWMMXt extensions, enabled through
!        -mcpu=iwmmxt, has been deprecated and will be removed in a future
!        release. This includes support for the [6]iWMMXt built-in
!        functions.
! 
! General Improvements
! 
!      * [7]OpenMP
!           + Reverse offload is now supported with AMD GCN and nvptx
!             devices. Additionally, the requires handling has been improved
!             and all clauses are now accepted. If a requirement cannot be
!             fulfilled for an accessible device, this device is excluded
!             from the list of available devices. This may imply that the
!             only device left is the host (the initial device). In
!             particular, unified_address and unified_shared_memory are
!             unsupported by all non-host devices.
!           + OpenMP 5.0: Fortran now supports some non-rectangular loop
!             nests; for C/C++, the support was added in GCC 11.
!           + The following OpenMP 5.1 features have been added: the
!             omp_all_memory reserved locator, the inoutset modifier to the
!             depend clause, the nowait clause for the taskwait directive
!             and the omp_target_is_accessible, omp_target_memcpy_async,
!             omp_target_memcpy_rect_async and omp_get_mapped_ptr API
!             routines. The assume and assumes directives, the begin/end
!             declare target syntax in C/C++ and device-specific ICV
!             settings with environment variables are now supported.
!           + Initial support for OpenMP 5.2 features has been added:
!             firstprivate and allocate clauses on the scope construct; the
!             OpenMP 5.2 syntax of the linear clause; new enum/constants
!             omp_initial_device and omp_invalid_device; and optionally
!             omitting the map-type in target enter/exit data. The enter
!             clause (as alias for to) has been added to the declare target
!             directive. Also added have been the omp_in_explicit_task
!             routine and the doacross clause as alias for depend with
!             source/sink modifier.
!           + The _ALL suffix to the device-scope environment variables
!             added in Technical Report (TR11) is already handled.
!           + For user defined allocators requesting high bandwidth or large
!             capacity memspaces or interleaved partitioning, the [8]memkind
!             library is used, if available at run time.
!      * AddressSanitizer defaults to detect_stack_use_after_return=1 on
!        GNU/Linux targets. For compatibility, it can be disabled with env
!        ASAN_OPTIONS=detect_stack_use_after_return=0.
!      * New debug info compression option value -gz=zstd has been added.
!      * Link-time optimization improvements:
!           + LTO supports the newly added jobserver of GNU make jobserver
!             that uses named pipes (--jobserver-style=fifo) by default.
!           + If make's jobserver is active, parallel LTO WPA streaming
!             communicates with it and thus avoids system overcommitting.
!      * -Ofast, -ffast-math and -funsafe-math-optimizations will no longer
!        add startup code to alter the floating-point environment when
!        producing a shared object with -shared.
!      * GCC can now emit its diagnostics using [9]SARIF. This is a
!        JSON-based format suited for capturing the results of static
!        analysis tools (like GCC's [10]-fanalyzer), but it can also be used
!        to capture other GCC warnings and errors in a machine-readable
!        format. Specifically, the [11]-fdiagnostics-format= option has been
!        extended to support these new values:
!           + -fdiagnostics-format=sarif-stderr
!           + -fdiagnostics-format=sarif-file
!           + -fdiagnostics-format=json-stderr, a synonym for the existing
!             -fdiagnostics-format=json
!           + -fdiagnostics-format=json-file
!        where the json-prefixed variants refer to GCC's own JSON diagnostic
!        format.
! 
! New Languages and Language specific improvements
! 
!   Ada
  
+      * Traceback support added in RTEMS for the PPC ELF and ARM
+        architectures.
+      * Support for versions older than VxWorks 7 has been removed.
+      * General improvements to the contracts in the standard libraries.
+      * Addition of GNAT.Binary_Search.
+      * Further additions and fixes for the Ada 2022 specification.
+      * The Pragma SPARK_Mode=>Auto is now accepted. Contract analysis has
+        been further improved.
+      * Documentation improvements.
+ 
+   C family
+ 
+      * New warnings:
+           + [12]-Wxor-used-as-pow warns about uses of ^, the exclusive or
+             operator, where it appears the user meant exponentiation
+             ([13]PR90885)
+      * Three new function attributes for documenting int arguments that
+        are file descriptors:
+           + [14]__attribute__((fd_arg(N)))
+           + [15]__attribute__((fd_arg_read(N)))
+           + [16]__attribute__((fd_arg_write(N)))
+        These are used by [17]-fanalyzer to detect misuses of file
+        descriptors.
+      * A new statement attribute for C++23 [18]P1774R8 Portable
+        assumptions support also in C or older C++:
+        [19]__attribute__((assume(EXPR)));
+      * GCC can now control when to treat the trailing array of a structure
+        as a flexible array member for the purpose of accessing the
+        elements of such an array. By default, all trailing arrays in
+        aggregates are treated as flexible array members. Use the new
+        command-line option [20]-fstrict-flex-arrays to control which array
+        members are treated as flexible arrays.
+ 
+   C
+ 
+      * Several C23 features have been implemented:
+           + [21]N3042, Introduce the nullptr constant
+           + [22]N2963, Enhanced Enumerations (fixed underlying types)
+           + [23]N2975, Relax requirements for variadic parameter lists
+           + [24]N3007, Type inference for object definitions (auto)
+           + [25]N3018, The constexpr specifier for object definitions
+           + [26]N3038, Introduce storage-class specifiers for compound
+             literals
+           + typeof (previously supported as an extension) and
+             typeof_unqual
+           + New keywords alignas, alignof, bool, false, static_assert,
+             thread_local, true
+           + [27]N2764, The noreturn attribute
+           + Support for empty initializer braces
+           + __STDC_VERSION_*_H__ header version macros
+           + Removal of ATOMIC_VAR_INIT
+           + unreachable macro in <stddef.h>
+           + Removal of trigraphs
+           + Removal of unprototyped functions
+           + printf and scanf format checking with [28]-Wformat for %wN and
+             %wfN format length modifiers
+           + [29]N2836, Identifier Syntax using Unicode Standard Annex 31
+      * In addition to those C23 features, existing features adopted in C23
+        have been adjusted to follow C23 requirements and are not diagnosed
+        with -std=c2x -Wpedantic.
+      * New warnings:
+           + [30]-Wenum-int-mismatch warns about mismatches between an
+             enumerated type and an integer type ([31]PR105131)
+ 
+   C++
+ 
+      * Excess precision support (which has been available in C since GCC
+        4.5) has been implemented for C++ as well. It is enabled by default
+        in strict standard modes like -std=c++17, where it defaults to
+        -fexcess-precision=standard, while in GNU standard modes like
+        -std=gnu++20 it defaults to -fexcess-precision=fast. The option
+        mainly affects IA-32/x86-64 using x87 math and in some cases on
+        Motorola 68000, where float and double expressions are evaluated in
+        long double precision and S/390, System z, IBM z Systems where
+        float expressions are evaluated in double precision. Also, on
+        several architectures where std::float16_t or std::bfloat16_t types
+        are supported those are evaluated in float precision.
+        -fexcess-precision=fast restores previous behavior.
+      * Several C++23 features have been implemented:
+           + [32]P2324R1, Labels at the end of compound statements
+             ([33]PR103539)
+           + [34]P2255R2, A type trait to detect reference binding to
+             temporary ([35]PR104477)
+           + [36]P2327R1, De-deprecating volatile compound operations
+           + [37]P2437R1, Support for #warning ([38]PR106646)
+           + [39]P2290R3, Delimited escape sequences ([40]PR106645)
+           + [41]P2071R2, Named universal character escapes ([42]PR106648)
+           + [43]P2513R3, char8_t Compatibility and Portability Fix
+             ([44]PR106656)
+           + [45]P1169R4, static operator() ([46]PR106651)
+           + [47]P2266R3, Simpler implicit move ([48]PR101165)
+           + [49]P2468R2, The Equality Operator You Are Looking For
+             ([50]PR106644)
+           + [51]P2362R3, Remove non-encodable
+             wide character literals and multicharacter wide character lite
+             rals ([52]PR106647)
+           + [53]P2448R2, Relaxing some constexpr restrictions
+             ([54]PR106649)
+           + [55]P1467R9, Extended floating-point types and standard names
+             ([56]PR106652)
+           + [57]P1774R8, Portable assumptions ([58]PR106654)
+           + [59]P2295R6, Support for
+             UTF-8 as a portable source file encoding ([60]PR106655)
+           + [61]P2589R1, static operator[] ([62]PR107684)
+      * New warnings:
+           + [63]-Wself-move warns when a value is moved to itself with
+             std::move ([64]PR81159)
+           + [65]-Wdangling-reference warns when a reference is bound to a
+             temporary whose lifetime has ended ([66]PR106393)
+      * The [67]-Wpessimizing-move and [68]-Wredundant-move warnings have
+        been extended to warn in more contexts.
+      * The [69]-nostdlib++ option has been added, to enable linking with
+        g++ without implicitly linking in the C++ standard library.
+ 
+     Runtime Library (libstdc++)
+ 
+      * Improved experimental support for C++20, including:
+           + <format> header and std::format.
+           + std::chrono::utc_clock and other clocks, time zones, and
+             std::format support in the <chrono> header.
+      * Improved experimental support for C++23, including:
+           + Additions to the <ranges> header: views::zip,
+             views::zip_transform, views::adjacent,
+             views::adjacent_transform views::pairwise, views::slide,
+             views::chunk, views::chunk_by, views::repeat, views::chunk_by,
+             views::cartesian_product, views::as_rvalue.
+           + Monadic operations for std::expected.
+           + Constexpr std::bitset, std::to_chars and std::from_chars.
+           + Library support for extended floating-point types.
+      * Support for the <experimental/scope> header from v3 of the Library
+        Fundamentals Technical Specification.
+      * Support for the <experimental/synchronized_value> header from v2 of
+        the Concurrency Technical Specification.
+ 
+   Fortran
+ 
+      * Finalization is now fully supported.
+ 
+   Go
+ 
+      * GCC 13, like GCC 12, provides a complete implementation of the Go
+        1.18 user packages.
+      * Although Go 1.18 includes support for generic programming, that
+        support is not yet available in GCC.
+ 
+   Modula-2
+ 
+      * Support for the language Modula-2 has been added. This includes
+        support for the ISO/IEC 10514-1, PIM2, PIM3, PIM4 dialects together
+        with a complete set of ISO/IEC 10514-1 and PIM libraries.
+      * The <* noreturn *> attribute is supported with the -Wreturn-type
+        [70]option.
+ 
+ New Targets and Target Specific Improvements
+ 
+   AArch64
+ 
+      * The AArch64 target now supports Decimal Floating-point in the BID
+        format through the libbid library.
+      * A number of new CPUs are supported through the -mcpu and -mtune
+        options (GCC identifiers in parentheses).
+           + Ampere-1A (ampere1a).
+           + Arm Cortex-A715 (cortex-a715).
+           + Arm Cortex-X1C (cortex-x1c).
+           + Arm Cortex-X3 (cortex-x3).
+           + Arm Neoverse V2 (neoverse-v2).
+      * Support has been added for the armv9.1-a, armv9.2-a and armv9.3-a
+        arguments to the -march= option.
+      * The FEAT_LRCPC feature is now supported by generating the LDAPR
+        instructions for C and C++ atomic loads with an acquire memory
+        model. This is enabled when compiling with the +rcpc extension to
+        -march or a CPU target that supports this feature.
+      * The FEAT_CSSC feature from the 2022 Arm Architecture extensions is
+        supported through the +cssc extension option. When enabled, scalar
+        operations like integer minimum, maximum, absolute value, count
+        trailing zeroes (__builtin_ctz), population count
+        (__builtin_popcount) can be implemented in a single instruction.
+      * The FEAT_LSE2 feature is now supported through libatomic and
+        provides lockless 16-byte atomics on systems that implement it.
+ 
+   AMD Radeon (GCN)
+ 
+      * Support for the Instinct MI200 series devices ([71] gfx90a) has
+        been added.
+      * SIMD vectorization support has been improved; this and
+        stack-handling changes [72]require newlib 4.3.0 (or newer).
+ 
+   arm
+ 
+      * A number of new CPUs are supported through the -mcpu and -mtune
+        options (GCC identifiers in parentheses).
+           + STAR-MC1 (star-mc1).
+           + Arm Cortex-X1C (cortex-x1c).
+           + Arm Cortex-M85 (cortex-m85).
+      * Support has been added for the M-profile PACBTI extension that can
+        help harden the generated code against return-oriented and
+        jump-oriented attacks. It can be enabled through the
+        -mbranch-protection= option.
+ 
+   IA-32/x86-64
+ 
+      * For both C and C++ the __bf16 type is supported on x86 systems with
+        SSE2 and above enabled.
+      * Use real __bf16 type for AVX512BF16 intrinsics. Previously we use
+        __bfloat16 which is typedef of short. Now we introduced real __bf16
+        type to x86 psABI. Users need to adjust their AVX512BF16-related
+        source code when upgrading GCC12 to GCC13.
+      * New ISA extension support for Intel AVX-IFMA was added. AVX-IFMA
+        intrinsics are available via the -mavxifma compiler switch.
+      * New ISA extension support for Intel AVX-VNNI-INT8 was added.
+        AVX-VNNI-INT8 intrinsics are available via the -mavxvnniint8
+        compiler switch.
+      * New ISA extension support for Intel AVX-NE-CONVERT was added.
+        AVX-NE-CONVERT intrinsics are available via the -mavxneconvert
+        compiler switch.
+      * New ISA extension support for Intel CMPccXADD was added. CMPccXADD
+        intrinsics are available via the -mcmpccxadd compiler switch.
+      * New ISA extension support for Intel AMX-FP16 was added. AMX-FP16
+        intrinsics are available via the -mamx-fp16 compiler switch.
+      * New ISA extension support for Intel PREFETCHI was added. PREFETCHI
+        intrinsics are available via the -mprefetchi compiler switch.
+      * New ISA extension support for Intel RAO-INT was added. RAO-INT
+        intrinsics are available via the -mraoint compiler switch.
+      * New ISA extension support for Intel AMX-COMPLEX was added.
+        AMX-COMPLEX intrinsics are available via the -mamx-complex compiler
+        switch.
+      * GCC now supports the Intel CPU named Raptor Lake through
+        -march=raptorlake. Raptor Lake is based on Alder Lake.
+      * GCC now supports the Intel CPU named Meteor Lake through
+        -march=meteorlake. Meteor Lake is based on Alder Lake.
+      * GCC now supports the Intel CPU named Sierra Forest through
+        -march=sierraforest. The switch enables the AVX-IFMA,
+        AVX-VNNI-INT8, AVX-NE-CONVERT and CMPccXADD ISA extensions.
+      * GCC now supports the Intel CPU named Grand Ridge through
+        -march=grandridge. The switch enables the AVX-IFMA, AVX-VNNI-INT8,
+        AVX-NE-CONVERT, CMPccXADD and RAO-INT ISA extensions.
+      * GCC now supports the Intel CPU named Emerald Rapids through
+        -march=emeraldrapids. Emerald Rapids is based on Sapphire Rapids.
+      * GCC now supports the Intel CPU named Granite Rapids through
+        -march=graniterapids. The switch enables the AMX-FP16, PREFETCHI
+        and AMX-COMPLEX ISA extensions.
+      * GCC now supports AMD CPUs based on the znver4 core via
+        -march=znver4. The switch makes GCC consider using 512 bit vectors
+        when auto-vectorizing.
+ 
+   LoongArch
+ 
+      * New features
+           + The new command-line option -mexplicit-relocs decides whether
+             to use the assembler relocation operator when dealing with
+             symbolic addresses. It is enabled by default if a compatible
+             assembler (binutils 2.40 or later) is present at GCC build
+             time.
+           + The new command-line option -mdirect-extern-access can be used
+             to prevent accessing external symbols through GOT.
+           + The new variable attribute [73]model has been added.
+      * Built-in functions
+           + The rint and copysign mathematical builtins (and their float
+             variants) are now implemented as inline LoongArch intrinsics.
+           + The lrint, logb, scalbln, scalbn and ldexp mathematical
+             builtins (and their float variants) are now implemented as
+             inline LoongArch intrinsics when using -fno-math-errno.
+           + The lceil and lfloor mathematical builtins (and their float
+             variants) are now implemented as inline LoongArch intrinsics
+             when using -ffp-int-builtin-inexact.
+      * Subprojects Support
+           + libvtv now supports LoongArch.
+           + libitm now supports LoongArch.
+           + Address sanitizers other than HWASan and TSan are now
+             supported on LoongArch.
+ 
+   NVPTX
+ 
+      * The default value for the [74]-march option can be now changed when
+        [75]building GCC using the [76]--with-arch= configure option. GCC's
+        target libraries are then build both with sm_30 and the specified
+        target architecture. If not specified, GCC defaults to sm_30.
+ 
+   RISC-V
+ 
+      * Support for vector intrinsics as specified in [77]version 0.11 of
+        the RISC-V vector intrinsic specification, thanks Ju-Zhe Zhong from
+        [78]RiVAI for contributing most of implementation.
+      * Support for the following standard extensions has been added:
+           + Zawrs
+           + Zbkb
+           + Zbkc
+           + Zbkx
+           + Zdinx
+           + Zfinx
+           + Zfh
+           + Zfhmin
+           + Zhinx
+           + Zhinxmin
+           + Zicbom
+           + Zicbop
+           + Zicboz
+           + Zknd
+           + Zkne
+           + Zksed
+           + Zksh
+           + Zmmul
+      * Support for the following vendor extensions has been added:
+           + XTheadBa
+           + XTheadBb
+           + XTheadBs
+           + XTheadCmo
+           + XTheadCondMov
+           + XTheadFMemIdx
+           + XTheadFmv
+           + XTheadInt
+           + XTheadMac
+           + XTheadMemIdx
+           + XTheadMemPair
+           + XTheadSync
+      * The following new CPUs are supported through the -mcpu option (GCC
+        identifiers in parentheses).
+           + T-Head's XuanTie C906 (thead-c906).
+      * Improves the multi-lib selection mechanism for the bare-metal
+        toolchain (riscv*-elf*). GCC will now automatically select the
+        best-fit multi-lib candidate instead of requiring all possible
+        reuse rules to be listed at build time.
+ 
+ Operating Systems
+ 
+ Improvements to Static Analyzer
+ 
+      * The analyzer has gained 20 new warnings:
+           + [79]-Wanalyzer-allocation-size
+           + [80]-Wanalyzer-deref-before-check
+           + [81]-Wanalyzer-exposure-through-uninit-copy
+           + Seven new warnings relating to misuse of file descriptors:
+                o [82]-Wanalyzer-fd-access-mode-mismatch
+                o [83]-Wanalyzer-fd-double-close
+                o [84]-Wanalyzer-fd-leak
+                o [85]-Wanalyzer-fd-phase-mismatch (e.g. calling accept on
+                  a socket before calling listen on it)
+                o [86]-Wanalyzer-fd-type-mismatch (e.g. using a stream
+                  socket operation on a datagram socket)
+                o [87]-Wanalyzer-fd-use-after-close
+                o [88]-Wanalyzer-fd-use-without-check
+             along with special-casing handling of the behavior of open,
+             close, creat, dup, dup2, dup3, pipe, pipe2, read, and write.
+           + [89]-Wanalyzer-imprecise-fp-arithmetic
+           + [90]-Wanalyzer-infinite-recursion
+           + [91]-Wanalyzer-jump-through-null
+           + [92]-Wanalyzer-out-of-bounds
+           + [93]-Wanalyzer-putenv-of-auto-var
+           + [94]-Wanalyzer-tainted-assertion
+           + Four new warnings for misuses of <stdarg.h>:
+                o [95]-Wanalyzer-va-list-leak for complaining about missing
+                  va_end after a va_start or va_copy
+                o [96]-Wanalyzer-va-list-use-after-va-end for complaining
+                  about va_arg or va_copy used on a va_list that's had
+                  va_end called on it
+                o [97]-Wanalyzer-va-arg-type-mismatch for type-checking of
+                  va_arg usage in interprocedural execution paths against
+                  the types of the parameters that were actually passed to
+                  the variadic call
+                o [98]-Wanalyzer-va-list-exhausted for complaining in
+                  interprocedural execution paths if va_arg is used too
+                  many times on a va_list
+        along with numerous other improvements.
+ 
+ Improvements for plugin authors
+ 
+      * GCC diagnostics can now be [99]associated with rules such as from
+        coding standards documents, or specifications. Such rules have a
+        code name and can have a URL, which GCC can print in text form or
+        capture in its [100]SARIF output when emitting diagnostics.
+ 
+ Other significant improvements
+ 
+ GCC 13.1
+ 
+    This is the [101]list of problem reports (PRs) from GCC's bug tracking
+    system that are known to be fixed in the 13.1 release. This list might
+    not be complete (that is, it is possible that some PRs that have been
+    fixed are not listed here).
+ 
+ 
+     For questions related to the use of GCC, please consult these web
+     pages and the [102]GCC manuals. If that fails, the
+     [103]gcc-help@gcc.gnu.org mailing list might help. Comments on these
+     web pages and the development of GCC are welcome on our developer
+     list at [104]gcc@gcc.gnu.org. All of [105]our lists have public
+     archives.
+ 
+    Copyright (C) [106]Free Software Foundation, Inc. Verbatim copying and
+    distribution of this entire article is permitted in any medium,
+    provided this notice is preserved.
+ 
+    These pages are [107]maintained by the GCC team. Last modified
+    2023-04-26.
+ 
+ References
+ 
+    1. http://gcc.gnu.org/gcc-13/porting_to.html
+    2. http://gcc.gnu.org/onlinedocs/index.html#current
+    3. https://gcc.gnu.org/pipermail/gcc/2022-December/240322.html
+    4. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html#index-Warray-bounds
+    5. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html
+    6. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/ARM-iWMMXt-Built-in-Functions.html
+    7. https://gcc.gnu.org/projects/gomp/
+    8. http://memkind.github.io/memkind/
+    9. https://sarifweb.azurewebsites.net/
+   10. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html
+   11. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
+   12. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html#index-Wxor-used-as-pow
+   13. https://gcc.gnu.org/PR90885
+   14. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Common-Function-Attributes.html#index-fd_005farg-function-attribute
+   15. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Common-Function-Attributes.html#index-fd_005farg_005fread-function-attribute
+   16. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Common-Function-Attributes.html#index-fd_005farg_005fwrite-function-attribute
+   17. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html
+   18. https://wg21.link/p1774r8
+   19. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Statement-Attributes.html#index-assume-statement-attribute
+   20. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html#index-Wstrict-flex-arrays
+   21. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3042.htm
+   22. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2963.htm
+   23. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2975.pdf
+   24. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3007.htm
+   25. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3018.htm
+   26. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n3038.htm
+   27. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2764.pdf
+   28. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html#index-Wformat
+   29. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n2836.pdf
+   30. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html#index-Wenum-int-mismatch
+   31. https://gcc.gnu.org/PR105131
+   32. https://wg21.link/p2324
+   33. https://gcc.gnu.org/PR103539
+   34. https://wg21.link/p2255
+   35. https://gcc.gnu.org/PR104477
+   36. https://wg21.link/p2327
+   37. https://wg21.link/p2437
+   38. https://gcc.gnu.org/PR106646
+   39. https://wg21.link/p2290
+   40. https://gcc.gnu.org/PR106645
+   41. https://wg21.link/p2071
+   42. https://gcc.gnu.org/PR106648
+   43. https://wg21.link/p2513
+   44. https://gcc.gnu.org/PR106656
+   45. https://wg21.link/p1169r4
+   46. https://gcc.gnu.org/PR106651
+   47. https://wg21.link/p2266r3
+   48. https://gcc.gnu.org/PR101165
+   49. https://wg21.link/p2468r2
+   50. https://gcc.gnu.org/PR106644
+   51. https://wg21.link/p2362r3
+   52. https://gcc.gnu.org/PR106647
+   53. https://wg21.link/p2448r2
+   54. https://gcc.gnu.org/PR106649
+   55. https://wg21.link/p1467r9
+   56. https://gcc.gnu.org/PR106652
+   57. https://wg21.link/p1774r8
+   58. https://gcc.gnu.org/PR106654
+   59. https://wg21.link/p2295r6
+   60. https://gcc.gnu.org/PR106655
+   61. https://wg21.link/p2589r1
+   62. https://gcc.gnu.org/PR107684
+   63. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Warning-Options.html#index-Wself-move
+   64. https://gcc.gnu.org/PR81159
+   65. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wdangling-reference
+   66. https://gcc.gnu.org/PR106393
+   67. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wpessimizing-move
+   68. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/C_002b_002b-Dialect-Options.html#index-Wredundant-move
+   69. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Link_Options.html#index-nostdlib_002b_002b
+   70. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gm2/Compiler-options.html
+   71. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/AMD-GCN-Options.html
+   72. https://gcc.gnu.org/install/specific.html#amdgcn-x-amdhsa
+   73. https://gcc.gnu.org/onlinedocs/gcc/LoongArch-Variable-Attributes.html#LoongArch-Variable-Attributes
+   74. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Nvidia-PTX-Options.html
+   75. https://gcc.gnu.org/install/
+   76. https://gcc.gnu.org/install/specific.html#nvptx-x-none
+   77. https://github.com/riscv-non-isa/rvv-intrinsic-doc/tree/v0.11.x
+   78. https://rivai-ic.com.cn/
+   79. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-allocation-size
+   80. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-deref-before-check
+   81. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-exposure-through-uninit-copy
+   82. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-access-mode-mismatch
+   83. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-double-close
+   84. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-leak
+   85. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-phase-mismatch
+   86. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-type-mismatch
+   87. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-after-close
+   88. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-fd-use-without-check
+   89. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-imprecise-fp-arithmetic
+   90. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-infinite-recursion
+   91. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-jump-through-null
+   92. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-out-of-bounds
+   93. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-putenv-of-auto-var
+   94. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-assertion
+   95. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-leak
+   96. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-use-after-va-end
+   97. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-arg-type-mismatch
+   98. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-va-list-exhausted
+   99. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=0b14f590e3e9d95b8211b77d992589d5ab4c25f0
+  100. https://gcc.gnu.org/onlinedocs/gcc-13.1.0/gcc/Diagnostic-Message-Formatting-Options.html#index-fdiagnostics-format
+  101. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=13.0
+  102. https://gcc.gnu.org/onlinedocs/
+  103. mailto:gcc-help@gcc.gnu.org
+  104. mailto:gcc@gcc.gnu.org
+  105. https://gcc.gnu.org/lists.html
+  106. https://www.fsf.org/
+  107. https://gcc.gnu.org/about.html
+ ======================================================================
+ http://gcc.gnu.org/gcc-12/index.html
                               GCC 12 Release Series
  
     Aug 19, 2022
*************** References and Acknowledgements
*** 57,63 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2022-08-19[17].
  
  References
  
--- 726,732 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 77,86 ****
    14. https://gcc.gnu.org/lists.html
    15. https://www.fsf.org/
    16. https://gcc.gnu.org/about.html
-   17. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-12/changes.html
- 
                               GCC 12 Release Series
                          Changes, New Features, and Fixes
  
--- 746,753 ----
*************** Caveats
*** 124,129 ****
--- 791,804 ----
       * The configuration option --enable-libstdcxx-allocator no longer
         supports the bitmap, mt, and pool arguments. Those configurations
         had been broken for some time.
+      * D: Building and bootstrapping GDC, the D compiler, now requires a
+        working GDC compiler (GCC version 9.1 or later) and D runtime
+        library, libphobos, as the D front end is written in D. On some
+        targets, libphobos isn't enabled by default, but compiles and works
+        if --enable-libphobos is used. Other targets may require a more
+        recent minimum version of GCC to bootstrap. Specifics are
+        documented for affected targets in the [6]manual for installing
+        GCC.
       * Fortran: OpenMP code using the omp_lib.h include file can no longer
         be compiled with -std=f95 but now requires at least -std=f2003.
         Alternatively, use the omp_lib module, which still supports
*************** General Improvements
*** 153,161 ****
         original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. Note
         that default vectorizer cost model has been changed which used to
         behave as -fvect-cost-model=cheap were specified.
!      * GCC now supports the [6]ShadowCallStack sanitizer, which can be
         enabled using the command-line option
!        [7]-fsanitize=shadow-call-stack. This sanitizer currently only
         works on AArch64 targets and it requires an environment in which
         all code has been compiled with -ffixed-r18. Its primary initial
         user is the Linux kernel.
--- 828,836 ----
         original -O2 -ftree-vectorize -fvect-cost-model=very-cheap. Note
         that default vectorizer cost model has been changed which used to
         behave as -fvect-cost-model=cheap were specified.
!      * GCC now supports the [7]ShadowCallStack sanitizer, which can be
         enabled using the command-line option
!        [8]-fsanitize=shadow-call-stack. This sanitizer currently only
         works on AArch64 targets and it requires an environment in which
         all code has been compiled with -ffixed-r18. Its primary initial
         user is the Linux kernel.
*************** New Languages and Language specific impr
*** 164,209 ****
  
       * OpenMP
            + OpenMP 5.0 support has been extended: The close map modifier
!             and the affinity clause are now supported. In addition Fortran
!             gained additionally the following features which were
!             available in C and C++ before: declare variant is now
!             available, depobj, mutexinoutset and iterator can now also be
!             used with the depend clause, defaultmap has been updated for
!             OpenMP 5.0, and the loop directive and combined directives
!             involving the master directive have been added.
            + The following OpenMP 5.1 features have been added: support for
              expressing OpenMP directives as C++ 11 attributes, the masked
!             and scope construct, the nothing and error directives, and
              using primary with the proc_bind clause and OMP_PROC_BIND
              environment variable, the reproducible and unconstrained
              modifiers to the order clause, and, for C/C++ only, the align
              and allocator modifiers to the allocate clause and the atomic
              extensions are now available. The OMP_PLACE environment
!             variable supports the OpenMP 5.1 features. In addition the
              OMP_NUM_TEAMS and OMP_TEAMS_THREAD_LIMIT environment variables
              and their associated API routines are now supported as well as
              the memory-allocation routines added for Fortran and extended
              for C/C++ in OpenMP 5.1. In Fortran code, strictly structured
              blocks can be used.
!           + The [8]OpenMP Implementation Status can be found in the
              libgomp manual.
!      * Version 2.6 of the [9]OpenACC specification continues to be
         maintained and improved in the C, C++ and Fortran compilers. See
!        the [10]implementation status section on the OpenACC wiki page and
!        the [11]run-time library documentation for further information. In
         addition to general performance tuning and bug fixing, new features
         include:
!           + OpenACC worker parallelism for [12]AMD GPUs (already for a
!             long time supported for [13]Nvidia GPUs).
            + Data privatization/sharing at the OpenACC gang level.
            + Considerable improvements for the experimental OpenACC
!             'kernels' decomposition ([14]--param
              openacc-kernels=decompose).
!           + A new warning flag [15]-Wopenacc-parallelism to warn about
              potentially suboptimal choices related to OpenACC parallelism.
       * The offload target code generation for OpenMP and OpenACC can now
!        be better adjusted using the new [16]-foffload-options= flag and
!        the pre-existing but now documented [17]-foffload= flag.
  
    Ada
  
--- 839,884 ----
  
       * OpenMP
            + OpenMP 5.0 support has been extended: The close map modifier
!             and the affinity clause are now supported. In addition,
!             Fortran gained the following features which were available in
!             C and C++ before: declare variant is now available, depobj,
!             mutexinoutset and iterator can now also be used with the
!             depend clause, defaultmap has been updated for OpenMP 5.0, and
!             the loop directive and combined directives involving the
!             master directive have been added.
            + The following OpenMP 5.1 features have been added: support for
              expressing OpenMP directives as C++ 11 attributes, the masked
!             and scope constructs, the nothing and error directives, and
              using primary with the proc_bind clause and OMP_PROC_BIND
              environment variable, the reproducible and unconstrained
              modifiers to the order clause, and, for C/C++ only, the align
              and allocator modifiers to the allocate clause and the atomic
              extensions are now available. The OMP_PLACE environment
!             variable supports the OpenMP 5.1 features. In addition, the
              OMP_NUM_TEAMS and OMP_TEAMS_THREAD_LIMIT environment variables
              and their associated API routines are now supported as well as
              the memory-allocation routines added for Fortran and extended
              for C/C++ in OpenMP 5.1. In Fortran code, strictly structured
              blocks can be used.
!           + The [9]OpenMP Implementation Status can be found in the
              libgomp manual.
!      * Version 2.6 of the [10]OpenACC specification continues to be
         maintained and improved in the C, C++ and Fortran compilers. See
!        the [11]implementation status section on the OpenACC wiki page and
!        the [12]run-time library documentation for further information. In
         addition to general performance tuning and bug fixing, new features
         include:
!           + OpenACC worker parallelism for [13]AMD GPUs (already for a
!             long time supported for [14]Nvidia GPUs).
            + Data privatization/sharing at the OpenACC gang level.
            + Considerable improvements for the experimental OpenACC
!             'kernels' decomposition ([15]--param
              openacc-kernels=decompose).
!           + A new warning flag [16]-Wopenacc-parallelism to warn about
              potentially suboptimal choices related to OpenACC parallelism.
       * The offload target code generation for OpenMP and OpenACC can now
!        be better adjusted using the new [17]-foffload-options= flag and
!        the pre-existing but now documented [18]-foffload= flag.
  
    Ada
  
*************** New Languages and Language specific impr
*** 225,231 ****
                 o Subtypes can also specify a lower bound: subtype String_1
                   is String (1 .. <>);. Boundaries from slices will "slide"
                   to the correct lower bound of the subtype.
!           + Generalized Object.Operand notation. The follwing code is now
              valid V.Add_Element(42);, with V being a vector, for example.
            + Additional when constructs. Keywords return, goto and raise
              can now use when in addition to the existing exit when. The
--- 900,906 ----
                 o Subtypes can also specify a lower bound: subtype String_1
                   is String (1 .. <>);. Boundaries from slices will "slide"
                   to the correct lower bound of the subtype.
!           + Generalized Object.Operand notation. The following code is now
              valid V.Add_Element(42);, with V being a vector, for example.
            + Additional when constructs. Keywords return, goto and raise
              can now use when in addition to the existing exit when. The
*************** function Multiply (S1, S2 : Sign) return
*** 258,264 ****
         improved. Memory pools have also seen some minor enhancements.
       * Improvements to embedded-RTOS targets such as RTEMS, VxWorks and
         QNX. Older targets were removed or cleaned.
!      * Added some [18]hardening features.
  
    C family
  
--- 933,939 ----
         improved. Memory pools have also seen some minor enhancements.
       * Improvements to embedded-RTOS targets such as RTEMS, VxWorks and
         QNX. Older targets were removed or cleaned.
!      * Added some [19]hardening features.
  
    C family
  
*************** function Multiply (S1, S2 : Sign) return
*** 270,287 ****
       * Support for __builtin_dynamic_object_size compatible with the clang
         language extension was added.
       * New warnings:
!           + [19]-Wbidi-chars warns about potentially misleading UTF-8
              bidirectional control characters. The default is
!             -Wbidi-chars=unpaired ([20]PR103026)
!           + [21]-Warray-compare warns about comparisons between two
!             operands of array type ([22]PR97573)
       * Enhancements to existing warnings:
!           + [23]-Wattributes has been extended so that it's possible to
              use -Wno-attributes=ns::attr or -Wno-attributes=ns:: to
              suppress warnings about unknown scoped attributes (in C++11
              and C2X). Similarly, #pragma GCC diagnostic ignored_attributes
              "vendor::attr" can be used to achieve the same effect
!             ([24]PR101940)
  
    C
  
--- 945,962 ----
       * Support for __builtin_dynamic_object_size compatible with the clang
         language extension was added.
       * New warnings:
!           + [20]-Wbidi-chars warns about potentially misleading UTF-8
              bidirectional control characters. The default is
!             -Wbidi-chars=unpaired ([21]PR103026)
!           + [22]-Warray-compare warns about comparisons between two
!             operands of array type ([23]PR97573)
       * Enhancements to existing warnings:
!           + [24]-Wattributes has been extended so that it's possible to
              use -Wno-attributes=ns::attr or -Wno-attributes=ns:: to
              suppress warnings about unknown scoped attributes (in C++11
              and C2X). Similarly, #pragma GCC diagnostic ignored_attributes
              "vendor::attr" can be used to achieve the same effect
!             ([25]PR101940)
  
    C
  
*************** function Multiply (S1, S2 : Sign) return
*** 295,335 ****
            + Digit separators (as in C++) are supported for C2X.
            + The #elifdef and #elifndef preprocessing directives are now
              supported.
!           + The printf and scanf format checking with [25]-Wformat now
              supports the %b format specified by C2X for binary integers,
              and the %B format recommended by C2X for printf.
  
    C++
  
       * Several C++23 features have been implemented:
!           + [26]P1938R3, if consteval ([27]PR100974)
!           + [28]P0849R8, auto(x): decay-copy in the language
!             ([29]PR103049)
!           + [30]P2242R3, Non-literal variables (and labels and gotos) in
!             constexpr functions ([31]PR102612)
!           + [32]P2334R1, Support for preprocessing directives elifdef and
!             elifndef ([33]PR102616)
!           + [34]P2360R0, Extend init-statement to allow alias-declaration
!             ([35]PR102617)
!           + [36]P2128R6, Multidimensional subscript operator
!           + [37]DR 2397, auto specifier for pointers and references to
!             arrays ([38]PR100975)
       * Several C++ Defect Reports have been resolved, e.g.:
!           + [39]DR 960, Covariant functions and lvalue/rvalue references
!           + [40]DR 1227, Mixing immediate and non-immediate contexts in
              deduction failure
!           + [41]DR 1315, Restrictions on non-type template arguments in
              partial specializations
!           + [42]DR 2082, Referring to parameters in unevaluated operands
              of default arguments
!           + [43]DR 2351, void{}
!           + [44]DR 2374, Overly permissive specification of enum
              direct-list-initialization
!           + [45]DR 2397, auto specifier for pointers and references to
              arrays
!           + [46]DR 2446, Questionable type-dependency of concept-ids
       * New command-line option -fimplicit-constexpr can be used to make
!        inline functions implicitly constexpr ([47]git)
       * New command-line option -ffold-simple-inlines can be used to fold
         calls to certain trivial inline functions (currently std::move,
         std::forward, std::addressof and std::as_const). In contrast to
--- 970,1010 ----
            + Digit separators (as in C++) are supported for C2X.
            + The #elifdef and #elifndef preprocessing directives are now
              supported.
!           + The printf and scanf format checking with [26]-Wformat now
              supports the %b format specified by C2X for binary integers,
              and the %B format recommended by C2X for printf.
  
    C++
  
       * Several C++23 features have been implemented:
!           + [27]P1938R3, if consteval ([28]PR100974)
!           + [29]P0849R8, auto(x): decay-copy in the language
!             ([30]PR103049)
!           + [31]P2242R3, Non-literal variables (and labels and gotos) in
!             constexpr functions ([32]PR102612)
!           + [33]P2334R1, Support for preprocessing directives elifdef and
!             elifndef ([34]PR102616)
!           + [35]P2360R0, Extend init-statement to allow alias-declaration
!             ([36]PR102617)
!           + [37]P2128R6, Multidimensional subscript operator
!           + [38]DR 2397, auto specifier for pointers and references to
!             arrays ([39]PR100975)
       * Several C++ Defect Reports have been resolved, e.g.:
!           + [40]DR 960, Covariant functions and lvalue/rvalue references
!           + [41]DR 1227, Mixing immediate and non-immediate contexts in
              deduction failure
!           + [42]DR 1315, Restrictions on non-type template arguments in
              partial specializations
!           + [43]DR 2082, Referring to parameters in unevaluated operands
              of default arguments
!           + [44]DR 2351, void{}
!           + [45]DR 2374, Overly permissive specification of enum
              direct-list-initialization
!           + [46]DR 2397, auto specifier for pointers and references to
              arrays
!           + [47]DR 2446, Questionable type-dependency of concept-ids
       * New command-line option -fimplicit-constexpr can be used to make
!        inline functions implicitly constexpr ([48]git)
       * New command-line option -ffold-simple-inlines can be used to fold
         calls to certain trivial inline functions (currently std::move,
         std::forward, std::addressof and std::as_const). In contrast to
*************** function Multiply (S1, S2 : Sign) return
*** 339,392 ****
         the fundamental operations from which they're defined (e.g.
         std::move versus static_cast). This flag is enabled by default when
         -fno-inline is not active.
!      * Deduction guides can be declared at class scope ([48]PR79501)
!      * [49]-Wuninitialized warns about using uninitialized variables in
!        member initializer lists ([50]PR19808)
!      * [51]-Wint-in-bool-context is now disabled when instantiating a
!        template ([52]git)
       * Stricter checking of attributes on friend declarations: if a friend
         declaration has an attribute, that declaration must be a
         definition. Moreover, a C++11 attribute cannot appear in the middle
!        of the decl-specifier-seq. ([53]PR99032)
       * New warning options for C++ language mismatches:
         -Wc++11-extensions, -Wc++14-extensions, -Wc++17-extensions,
         -Wc++20-extensions, and -Wc++23-extensions. They are enabled by
         default and can be used to control existing pedwarns about
         occurrences of new C++ constructs in code using an old C++ standard
         dialect.
!      * New warning [54]-Wmissing-requires warns about missing requires
!        ([55]git)
       * The existing std::is_constant_evaluated in if warning was extended
!        to warn in more cases ([56]PR100995)
!      * [57]-Waddress has been enhanced so that it now warns about, for
         instance, comparing the address of a nonstatic member function to
!        null ([58]PR102103)
       * Errors about narrowing are no longer hidden if they occur in system
         headers
!      * Ordered comparison of null pointers is now rejected ([59]PR99701)
!      * Anonymous structs with bases are now rejected ([60]git)
       * The compiler rejects taking the address of an immediate member
!        function ([61]PR102753)
       * The compiler has support for C++20
         __cpp_lib_is_pointer_interconvertible and
         __cpp_lib_is_layout_compatible to help the C++ library implement
!        [62]P0466, Layout-compatibility and Pointer-interconvertibility
!        Traits ([63]PR101539)
       * Memory usage of constraint subsumption has been improved
!        ([64]PR100828)
       * constinit thread_local variables are optimized better
!        ([65]PR101786)
       * Support for C++17 std::hardware_destructive_interference_size was
!        added, along with the [66]-Winterference-size warning ([67]git)
!      * Many bugs in the CTAD handling have been fixed ([68]PR101344,
!        [69]PR101883, [70]PR89062, [71]PR101233, [72]PR88252, [73]PR86439,
!        [74]PR98832, [75]PR102933 ...)
       * Two-stage name lookup for dependent operator expressions has been
!        corrected ([76]PR51577)
       * Several issues with constrained variable templates have been fixed
!        ([77]PR98486)
       * The compiler performs less instantiating when doing speculative
!        constant evaluation ([78]git)
       * Various diagnostic improvements; e.g., a more precise caret
         location for pointer-to-member expressions
       * The new -fconstexpr-fp-except flag allows IEC559 floating point
--- 1014,1067 ----
         the fundamental operations from which they're defined (e.g.
         std::move versus static_cast). This flag is enabled by default when
         -fno-inline is not active.
!      * Deduction guides can be declared at class scope ([49]PR79501)
!      * [50]-Wuninitialized warns about using uninitialized variables in
!        member initializer lists ([51]PR19808)
!      * [52]-Wint-in-bool-context is now disabled when instantiating a
!        template ([53]git)
       * Stricter checking of attributes on friend declarations: if a friend
         declaration has an attribute, that declaration must be a
         definition. Moreover, a C++11 attribute cannot appear in the middle
!        of the decl-specifier-seq. ([54]PR99032)
       * New warning options for C++ language mismatches:
         -Wc++11-extensions, -Wc++14-extensions, -Wc++17-extensions,
         -Wc++20-extensions, and -Wc++23-extensions. They are enabled by
         default and can be used to control existing pedwarns about
         occurrences of new C++ constructs in code using an old C++ standard
         dialect.
!      * New warning [55]-Wmissing-requires warns about missing requires
!        ([56]git)
       * The existing std::is_constant_evaluated in if warning was extended
!        to warn in more cases ([57]PR100995)
!      * [58]-Waddress has been enhanced so that it now warns about, for
         instance, comparing the address of a nonstatic member function to
!        null ([59]PR102103)
       * Errors about narrowing are no longer hidden if they occur in system
         headers
!      * Ordered comparison of null pointers is now rejected ([60]PR99701)
!      * Anonymous structs with bases are now rejected ([61]git)
       * The compiler rejects taking the address of an immediate member
!        function ([62]PR102753)
       * The compiler has support for C++20
         __cpp_lib_is_pointer_interconvertible and
         __cpp_lib_is_layout_compatible to help the C++ library implement
!        [63]P0466, Layout-compatibility and Pointer-interconvertibility
!        Traits ([64]PR101539)
       * Memory usage of constraint subsumption has been improved
!        ([65]PR100828)
       * constinit thread_local variables are optimized better
!        ([66]PR101786)
       * Support for C++17 std::hardware_destructive_interference_size was
!        added, along with the [67]-Winterference-size warning ([68]git)
!      * Many bugs in the CTAD handling have been fixed ([69]PR101344,
!        [70]PR101883, [71]PR89062, [72]PR101233, [73]PR88252, [74]PR86439,
!        [75]PR98832, [76]PR102933 ...)
       * Two-stage name lookup for dependent operator expressions has been
!        corrected ([77]PR51577)
       * Several issues with constrained variable templates have been fixed
!        ([78]PR98486)
       * The compiler performs less instantiating when doing speculative
!        constant evaluation ([79]git)
       * Various diagnostic improvements; e.g., a more precise caret
         location for pointer-to-member expressions
       * The new -fconstexpr-fp-except flag allows IEC559 floating point
*************** function Multiply (S1, S2 : Sign) return
*** 402,407 ****
--- 1077,1083 ----
            + Layout-compatibility and pointer-interconvertibility traits.
       * Improved experimental C++23 support, including:
            + Monadic operations for std::optional.
+           + std::expected
            + std::move_only_function
            + <spanstream>
            + std::basic_string::resize_and_overwrite
*************** function Multiply (S1, S2 : Sign) return
*** 412,417 ****
--- 1088,1137 ----
            + std::invoke_r
            + constexpr std::type_info::operator==
  
+   D
+ 
+      * New features:
+           + Support for the D programming language has been updated to
+             version 2.100.1 of the language and run-time library. Full
+             changelog for this release and previous releases can be found
+             on the [80]dlang.org website.
+           + On supported targets, the __traits(compiles) expression can
+             now be used to determine whether a target-specific built-in is
+             available without error during CTFE ([81]PR101127).
+           + Functions annotated with pragma(inline, true) are now compiled
+             into every module where they are used from ([82]PR106563).
+           + Partial support for directly importing C99 sources into a D
+             compilation ([83]ImportC) has been added to the language. A
+             notable missing feature is support for preprocessing C
+             imports, which can be worked around by preprocessing all C
+             sources used for importing ahead of time.
+      * New language options:
+           + -fcheck=, enables or disables the code generation of specific
+             run-time contract checks.
+           + -fcheckaction=, controls the run-time behavior on an assert,
+             array bounds check, or final switch contract failure. The
+             default is -fcheckaction=throw.
+           + -fdump-c++-spec=, dumps all compiled extern(C++) declarations
+             as C++ code to the given file. The supplementary option
+             -fdump-c++-spec-verbose turns on emission of comments for
+             ignored declarations in the generated spec.
+           + -fextern-std=, controls which C++ standard extern(C++)
+             declarations are compiled to be compatible with. The default
+             is -fextern-std=c++17.
+           + -fpreview=, added to enable upcoming D language features in
+             the compiler.
+           + -frevert=, added to revert D language changes to support older
+             D codebases that need more time to transition.
+           + -fsave-mixins=, saves mixins expanded at compile-time to a
+             file.
+      * Deprecated and removed features:
+           + The -Wtemplates compiler switch has been removed, as it had
+             been superceded by -ftransition=templates, which more
+             accurately reports on which templates have been instantiated.
+           + The -ftransition=dip25 and -ftransition=dip1000 compiler
+             switches have been renamed to -fpreview=dip25 and
+             -fpreview=dip1000.
+ 
    Fortran
  
       * WG5/N1942, "TS 29113 Further Interoperability of Fortran with C",
*************** function Multiply (S1, S2 : Sign) return
*** 428,463 ****
       * On POWER systems which support it, the -mabi=ieeelongdouble option
         now selects the IEEE 128-bit floating point format for
         REAL(KIND=16). R16_IBM and R16_IEEE have been added to the
!        -fconvert option, the CONVERT specifyer of the OPEN statement and
         the GFORTRAN_CONVERT_UNIT environment variable.
  
  libgccjit
  
       * The libgccjit API gained 30 new entry points:
!           + 17 new "reflection" entrypoints for querying functions and
!             types ([79]LIBGCCJIT_ABI_16)
!           + [80]gcc_jit_lvalue_set_tls_model for supporting thread-local
!             variables ([81]LIBGCCJIT_ABI_17)
!           + [82]gcc_jit_lvalue_set_link_section for setting the link
              section of global variables, analogous to
!             [83]__attribute__((section(".section")))
!             ([84]LIBGCCJIT_ABI_18)
!           + 4 new entrypoints for initializing global variables and
!             creating constructors for rvalues ([85]LIBGCCJIT_ABI_19)
            + Support for sized integer types, including 128-bit integers
!             and helper functions for such types ([86]LIBGCCJIT_ABI_20)
!           + [87]gcc_jit_context_new_bitcast for reinterpreting the bits of
!             an rvalue as a different type ([88]LIBGCCJIT_ABI_21)
!           + [89]gcc_jit_lvalue_set_register_name for setting a specific
!             register for a variable ([90]LIBGCCJIT_ABI_22)
!           + [91]gcc_jit_context_set_bool_print_errors_to_stderr
!             ([92]LIBGCCJIT_ABI_23)
!           + 2 new entrypoints for setting the alignment of a variable
!             ([93]LIBGCCJIT_ABI_24)
       * libgccjit has gained support for the use of various atomic builtins
!        ([94]PR96066, [95]PR96067)
!      * [96]gcc_jit_context_new_cast is now able to handle truncation and
!        extension between different integer types ([97]PR95498)
  
  New Targets and Target Specific Improvements
  
--- 1148,1190 ----
       * On POWER systems which support it, the -mabi=ieeelongdouble option
         now selects the IEEE 128-bit floating point format for
         REAL(KIND=16). R16_IBM and R16_IEEE have been added to the
!        -fconvert option, the CONVERT specifier of the OPEN statement and
         the GFORTRAN_CONVERT_UNIT environment variable.
  
+   Go
+ 
+      * GCC 12 provides a complete implementation of the Go 1.18 user
+        packages.
+      * Although Go 1.18 includes support for generic programming, that
+        support is not yet available in GCC.
+ 
  libgccjit
  
       * The libgccjit API gained 30 new entry points:
!           + 17 new "reflection" entry points for querying functions and
!             types ([84]LIBGCCJIT_ABI_16)
!           + [85]gcc_jit_lvalue_set_tls_model for supporting thread-local
!             variables ([86]LIBGCCJIT_ABI_17)
!           + [87]gcc_jit_lvalue_set_link_section for setting the link
              section of global variables, analogous to
!             [88]__attribute__((section(".section")))
!             ([89]LIBGCCJIT_ABI_18)
!           + 4 new entry points for initializing global variables and
!             creating constructors for rvalues ([90]LIBGCCJIT_ABI_19)
            + Support for sized integer types, including 128-bit integers
!             and helper functions for such types ([91]LIBGCCJIT_ABI_20)
!           + [92]gcc_jit_context_new_bitcast for reinterpreting the bits of
!             an rvalue as a different type ([93]LIBGCCJIT_ABI_21)
!           + [94]gcc_jit_lvalue_set_register_name for setting a specific
!             register for a variable ([95]LIBGCCJIT_ABI_22)
!           + [96]gcc_jit_context_set_bool_print_errors_to_stderr
!             ([97]LIBGCCJIT_ABI_23)
!           + 2 new entry points for setting the alignment of a variable
!             ([98]LIBGCCJIT_ABI_24)
       * libgccjit has gained support for the use of various atomic builtins
!        ([99]PR96066, [100]PR96067)
!      * [101]gcc_jit_context_new_cast is now able to handle truncation and
!        extension between different integer types ([102]PR95498)
  
  New Targets and Target Specific Improvements
  
*************** New Targets and Target Specific Improvem
*** 479,485 ****
            + Arm Cortex-A710 (cortex-a710).
            + Arm Cortex-X2 (cortex-x2).
       * The 64-byte atomic load/store intrinsics to accelerator memory from
!        the [98]2020 Arm Architecture extensions are supported through the
         +ls64 option extension.
       * Initial code generation support is supported for hardware
         instructions used to accelerate the memcpy,memmove and memset
--- 1206,1212 ----
            + Arm Cortex-A710 (cortex-a710).
            + Arm Cortex-X2 (cortex-x2).
       * The 64-byte atomic load/store intrinsics to accelerator memory from
!        the [103]2020 Arm Architecture extensions are supported through the
         +ls64 option extension.
       * Initial code generation support is supported for hardware
         instructions used to accelerate the memcpy,memmove and memset
*************** New Targets and Target Specific Improvem
*** 519,525 ****
    IA-32/x86-64
  
       * New ISA extension support for Intel AVX512-FP16 was added.
!        AVX512FP16 intrinsics are available via the -mavx512fp16 compiler
         switch.
       * For both C and C++ the _Float16 type is supported on x86 systems
         with SSE2 enabled. Without {-mavx512fp16}, all operations will be
--- 1246,1252 ----
    IA-32/x86-64
  
       * New ISA extension support for Intel AVX512-FP16 was added.
!        AVX512-FP16 intrinsics are available via the -mavx512fp16 compiler
         switch.
       * For both C and C++ the _Float16 type is supported on x86 systems
         with SSE2 enabled. Without {-mavx512fp16}, all operations will be
*************** New Targets and Target Specific Improvem
*** 591,597 ****
         functions has been rewritten to be easier and less error-prone to
         maintain. Every attempt has been made to ensure that the new
         behavior matches the old behavior, but inevitably some bugs can be
!        expected. Please report any problems via [99]GCC Bugzilla.
       * The built-in functions __builtin_get_texasr, __builtin_get_texasru,
         __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr,
         __builtin_set_texasru, __builtin_set_tfhar, and __builtin_set_tfiar
--- 1318,1324 ----
         functions has been rewritten to be easier and less error-prone to
         maintain. Every attempt has been made to ensure that the new
         behavior matches the old behavior, but inevitably some bugs can be
!        expected. Please report any problems via [104]GCC Bugzilla.
       * The built-in functions __builtin_get_texasr, __builtin_get_texasru,
         __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr,
         __builtin_set_texasru, __builtin_set_tfhar, and __builtin_set_tfiar
*************** New Targets and Target Specific Improvem
*** 605,618 ****
  
    PRU
  
!      * The [100]__regio_symbol variable qualifier has been added. It
         allows easier access in C programs to the __R30 and __R31 CPU I/O
         registers.
  
    RISC-V
  
       * Default ISA spec version was bump to 20191213, more detail see this
!        [101]announcement
       * New ISA extension support for zba, zbb, zbc, zbs was added.
       * New ISA extension support for vector and scalar crypto was added,
         only support architecture testing marco and -march= parsing.
--- 1332,1345 ----
  
    PRU
  
!      * The [105]__regio_symbol variable qualifier has been added. It
         allows easier access in C programs to the __R30 and __R31 CPU I/O
         registers.
  
    RISC-V
  
       * Default ISA spec version was bump to 20191213, more detail see this
!        [106]announcement
       * New ISA extension support for zba, zbb, zbc, zbs was added.
       * New ISA extension support for vector and scalar crypto was added,
         only support architecture testing marco and -march= parsing.
*************** Operating Systems
*** 627,670 ****
  Improvements to Static Analyzer
  
       * The analyzer has gained a
!        [102]-Wanalyzer-use-of-uninitialized-value warning, similar to
!        [103]-Wuninitialized and [104]-Wmaybe-uninitialized, but based on
!        an interprocedural path-sensitive analysis ([105]PR95006).
         Such warnings are not disabled by the new
!        [106]-ftrivial-auto-var-init (see below), as the latter is
         considered a mitigation option.
!      * [107]-Wanalyzer-write-to-const and
!        [108]-Wanalyzer-write-to-string-literal will now check for
!        [109]__attribute__ ((access, ....)) on calls to externally-defined
         functions, and complain about read-only regions pointed to by
         arguments marked with a write_only or read_write attribute
!        ([110]PR104793).
       * The analyzer's "taint" mode, activated by
!        [111]-fanalyzer-checker=taint (in addition to [112]-fanalyzer), has
         gained four new taint-based warnings:
!           + [113]-Wanalyzer-tainted-allocation-size for e.g.
              attacker-controlled malloc and alloca,
!           + [114]-Wanalyzer-tainted-divisor for detecting where an
              attacker can inject a divide-by-zero,
!           + [115]-Wanalyzer-tainted-offset for attacker-controlled pointer
              offsets,
!           + [116]-Wanalyzer-tainted-size for attacker-controlled values
              being used as a size parameter to calls to memset or to
!             functions marked with [117]__attribute__ ((access, ....)).
!        The existing [118]-Wanalyzer-tainted-array-index has been reworded
         to talk about "attacker-controlled" rather than "tainted" values,
         for consistency with the new warnings.
!        A new [119]__attribute__ ((tainted_args)) has been added to the C
!        and C++ frontends, usable on functions, and on function pointer
         callback fields in structs. The analyzer's taint mode will treat
         all parameters and buffers pointed to by parameters of such
!        functions as being attacked-controlled, such as for annotating
         system calls in an operating system kernel as being an "attack
         surface".
!      * The analyzer now respects [120]__attribute__((const)): it will
         treat such functions as returning the same value when given the
!        same inputs ([121]PR104434), and as having no side effects
!        ([122]PR104576).
       * The analyzer is now able to split its analysis into multiple
         execution paths in places where there isn't a split in the control
         flow graph. For example, it now handles realloc calls by splitting
--- 1354,1397 ----
  Improvements to Static Analyzer
  
       * The analyzer has gained a
!        [107]-Wanalyzer-use-of-uninitialized-value warning, similar to
!        [108]-Wuninitialized and [109]-Wmaybe-uninitialized, but based on
!        an interprocedural path-sensitive analysis ([110]PR95006).
         Such warnings are not disabled by the new
!        [111]-ftrivial-auto-var-init (see below), as the latter is
         considered a mitigation option.
!      * [112]-Wanalyzer-write-to-const and
!        [113]-Wanalyzer-write-to-string-literal will now check for
!        [114]__attribute__ ((access, ....)) on calls to externally-defined
         functions, and complain about read-only regions pointed to by
         arguments marked with a write_only or read_write attribute
!        ([115]PR104793).
       * The analyzer's "taint" mode, activated by
!        [116]-fanalyzer-checker=taint (in addition to [117]-fanalyzer), has
         gained four new taint-based warnings:
!           + [118]-Wanalyzer-tainted-allocation-size for e.g.
              attacker-controlled malloc and alloca,
!           + [119]-Wanalyzer-tainted-divisor for detecting where an
              attacker can inject a divide-by-zero,
!           + [120]-Wanalyzer-tainted-offset for attacker-controlled pointer
              offsets,
!           + [121]-Wanalyzer-tainted-size for attacker-controlled values
              being used as a size parameter to calls to memset or to
!             functions marked with [122]__attribute__ ((access, ....)).
!        The existing [123]-Wanalyzer-tainted-array-index has been reworded
         to talk about "attacker-controlled" rather than "tainted" values,
         for consistency with the new warnings.
!        A new [124]__attribute__ ((tainted_args)) has been added to the C
!        and C++ front ends, usable on functions, and on function pointer
         callback fields in structs. The analyzer's taint mode will treat
         all parameters and buffers pointed to by parameters of such
!        functions as being attacker-controlled, such as for annotating
         system calls in an operating system kernel as being an "attack
         surface".
!      * The analyzer now respects [125]__attribute__((const)): it will
         treat such functions as returning the same value when given the
!        same inputs ([126]PR104434), and as having no side effects
!        ([127]PR104576).
       * The analyzer is now able to split its analysis into multiple
         execution paths in places where there isn't a split in the control
         flow graph. For example, it now handles realloc calls by splitting
*************** Improvements to Static Analyzer
*** 677,697 ****
         to track calls through function pointers.
       * The analyzer now makes the assumption that if we know PTR is
         non-NULL, then (PTR + OFFSET) is also non-NULL. This isn't strictly
!        true, but eliminates false positives in practice ([123]PR101962).
       * The analyzer has gained some initial support for inline assembler
         code. This is extremely limited, and is purely to help suppress
         false positives when analyzing the Linux kernel, which makes heavy
!        use of inline assembler ([124]PR101570).
       * The way the analyzer tracks the state of memory along an execution
         path has been improved in various ways for GCC 12:
            + An optimization for representing bulk updates to memory (e.g.
              zero fills) has been removed as it never worked well. In GCC
              12 it has been replaced with a simpler and more accurate
!             approach, eliminating many false positives ([125]PR95006).
            + Various optimizations have been added, speeding up the
              analysis on a particularly problematic source file from 4
!             minutes down to 17 seconds ([126]PR104943, [127]PR104954, and
!             [128]PR104955).
            + The analyzer now tracks the sizes of dynamically-allocated
              regions, both on the heap (via malloc etc) and stack (via
              alloca), though none of the analyzer warnings make use of this
--- 1404,1424 ----
         to track calls through function pointers.
       * The analyzer now makes the assumption that if we know PTR is
         non-NULL, then (PTR + OFFSET) is also non-NULL. This isn't strictly
!        true, but eliminates false positives in practice ([128]PR101962).
       * The analyzer has gained some initial support for inline assembler
         code. This is extremely limited, and is purely to help suppress
         false positives when analyzing the Linux kernel, which makes heavy
!        use of inline assembler ([129]PR101570).
       * The way the analyzer tracks the state of memory along an execution
         path has been improved in various ways for GCC 12:
            + An optimization for representing bulk updates to memory (e.g.
              zero fills) has been removed as it never worked well. In GCC
              12 it has been replaced with a simpler and more accurate
!             approach, eliminating many false positives ([130]PR95006).
            + Various optimizations have been added, speeding up the
              analysis on a particularly problematic source file from 4
!             minutes down to 17 seconds ([131]PR104943, [132]PR104954, and
!             [133]PR104955).
            + The analyzer now tracks the sizes of dynamically-allocated
              regions, both on the heap (via malloc etc) and stack (via
              alloca), though none of the analyzer warnings make use of this
*************** Other significant improvements
*** 703,725 ****
  
    Eliminating uninitialized variables
  
!      * GCC can now [129]initialize all stack variables implicitly,
         including padding. This is intended to eliminate all classes of
         uninitialized stack variable flaws. Lack of explicit initialization
!        will still warn when [130]-Wuninitialized is active. For best
         debugging, use of the new command-line option
!        [131]-ftrivial-auto-var-init=pattern can be used to fill variables
         with a repeated 0xFE pattern, which tends to illuminate many bugs
         (e.g. pointers receive invalid addresses, sizes and indices are
         very large). For best production results, the new command-line
!        option [132]-ftrivial-auto-var-init=zero can be used to fill
         variables with 0x00, which tends to provide a safer state for bugs
         (e.g. pointers are NULL, strings are NUL filled, and sizes and
         indices are 0).
  
    Debugging formats
  
!      * GCC can now generate debugging information in [133]CTF, a
         lightweight debugging format that provides information about C
         types and the association between functions and data symbols and
         types. This format is designed to be embedded in ELF files and to
--- 1430,1452 ----
  
    Eliminating uninitialized variables
  
!      * GCC can now [134]initialize all stack variables implicitly,
         including padding. This is intended to eliminate all classes of
         uninitialized stack variable flaws. Lack of explicit initialization
!        will still warn when [135]-Wuninitialized is active. For best
         debugging, use of the new command-line option
!        [136]-ftrivial-auto-var-init=pattern can be used to fill variables
         with a repeated 0xFE pattern, which tends to illuminate many bugs
         (e.g. pointers receive invalid addresses, sizes and indices are
         very large). For best production results, the new command-line
!        option [137]-ftrivial-auto-var-init=zero can be used to fill
         variables with 0x00, which tends to provide a safer state for bugs
         (e.g. pointers are NULL, strings are NUL filled, and sizes and
         indices are 0).
  
    Debugging formats
  
!      * GCC can now generate debugging information in [138]CTF, a
         lightweight debugging format that provides information about C
         types and the association between functions and data symbols and
         types. This format is designed to be embedded in ELF files and to
*************** Other significant improvements
*** 732,745 ****
  
  GCC 12.1
  
!    This is the [134]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 12.2
  
!    This is the [135]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
--- 1459,1472 ----
  
  GCC 12.1
  
!    This is the [139]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.1 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  GCC 12.2
  
!    This is the [140]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.2 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
*************** GCC 12.3
*** 758,782 ****
     Note: GCC 12.3 has not been released yet, so this section is a
     work-in-progress.
  
!    This is the [136]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [137]GCC manuals. If that fails, the
!     [138]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [139]gcc@gcc.gnu.org. All of [140]our lists have public
      archives.
  
!    Copyright (C) [141]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [142]maintained by the GCC team. Last modified
!    2022-08-19[143].
  
  References
  
--- 1485,1517 ----
     Note: GCC 12.3 has not been released yet, so this section is a
     work-in-progress.
  
!   Target Specific Changes
! 
!   x86-64
! 
!      * GCC now supports AMD CPUs based on the znver4 core via
!        -march=znver4. The switch makes GCC consider using 512 bit vectors
!        when auto-vectorizing.
! 
!    This is the [141]list of problem reports (PRs) from GCC's bug tracking
     system that are known to be fixed in the 12.3 release. This list might
     not be complete (that is, it is possible that some PRs that have been
     fixed are not listed here).
  
  
      For questions related to the use of GCC, please consult these web
!     pages and the [142]GCC manuals. If that fails, the
!     [143]gcc-help@gcc.gnu.org mailing list might help. Comments on these
      web pages and the development of GCC are welcome on our developer
!     list at [144]gcc@gcc.gnu.org. All of [145]our lists have public
      archives.
  
!    Copyright (C) [146]Free Software Foundation, Inc. Verbatim copying and
     distribution of this entire article is permitted in any medium,
     provided this notice is preserved.
  
!    These pages are [147]maintained by the GCC team. Last modified
!    2023-03-24.
  
  References
  
*************** References
*** 785,931 ****
     3. https://gcc.gnu.org/PR102024
     4. https://gcc.gnu.org/PR42217
     5. http://gcc.gnu.org/gcc-12/changes.html#mips_zero_width_fields
!    6. https://clang.llvm.org/docs/ShadowCallStack.html
!    7. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Instrumentation-Options.html#index-fsanitize_003dshadow-call-stack
!    8. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/OpenMP-Implementation-Status.html
!    9. https://www.openacc.org/
!   10. https://gcc.gnu.org/wiki/OpenACC/Implementation%20Status#status-12
!   11. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/Enabling-OpenACC.html
!   12. http://gcc.gnu.org/gcc-12/changes.html#amdgcn
!   13. http://gcc.gnu.org/gcc-12/changes.html#nvptx
!   14. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-param
!   15. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wopenacc-parallelism
!   16. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/C-Dialect-Options.html#index-foffload-options
!   17. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/C-Dialect-Options.html#index-foffload
!   18. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gnat_rm/Security-Hardening-Features.html#Security-Hardening-Features
!   19. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wbidi-chars
!   20. https://gcc.gnu.org/PR103026
!   21. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Warray-compare
!   22. https://gcc.gnu.org/PR97573
!   23. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wattributes
!   24. https://gcc.gnu.org/PR101940
!   25. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wformat
!   26. https://wg21.link/p1938
!   27. https://gcc.gnu.org/PR100974
!   28. https://wg21.link/p0849
!   29. https://gcc.gnu.org/PR103049
!   30. https://wg21.link/p2242
!   31. https://gcc.gnu.org/PR102612
!   32. https://wg21.link/p2334
!   33. https://gcc.gnu.org/PR102616
!   34. https://wg21.link/p2360
!   35. https://gcc.gnu.org/PR102617
!   36. https://wg21.link/p2128
!   37. https://wg21.link/cwg2397
!   38. https://gcc.gnu.org/PR100975
!   39. https://wg21.link/cwg960
!   40. https://wg21.link/cwg1227
!   41. https://wg21.link/cwg1315
!   42. https://wg21.link/cwg2082
!   43. https://wg21.link/cwg2351
!   44. https://wg21.link/cwg2374
!   45. https://wg21.link/cwg2397
!   46. https://wg21.link/cwg2446
!   47. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=87c2080b
!   48. https://gcc.gnu.org/PR79501
!   49. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wuninitialized
!   50. https://gcc.gnu.org/PR19808
!   51. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wint-in-bool-context
!   52. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=3a2b12bc
!   53. https://gcc.gnu.org/PR99032
!   54. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wmissing-requires
!   55. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=e18e56c7
!   56. https://gcc.gnu.org/PR100995
!   57. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Waddress
!   58. https://gcc.gnu.org/PR102103
!   59. https://gcc.gnu.org/PR99701
!   60. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=3ead06c1
!   61. https://gcc.gnu.org/PR102753
!   62. https://wg21.link/p0466
!   63. https://gcc.gnu.org/PR101539
!   64. https://gcc.gnu.org/PR100828
!   65. https://gcc.gnu.org/PR101786
!   66. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Winterference-size
!   67. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=76b75018
!   68. https://gcc.gnu.org/PR101344
!   69. https://gcc.gnu.org/PR101883
!   70. https://gcc.gnu.org/PR89062
!   71. https://gcc.gnu.org/PR101233
!   72. https://gcc.gnu.org/PR88252
!   73. https://gcc.gnu.org/PR86439
!   74. https://gcc.gnu.org/PR98832
!   75. https://gcc.gnu.org/PR102933
!   76. https://gcc.gnu.org/PR51577
!   77. https://gcc.gnu.org/PR98486
!   78. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=1595fe44
!   79. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-16
!   80. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_lvalue_set_tls_model
!   81. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-17
!   82. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_lvalue_set_link_section
!   83. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Variable-Attributes.html#index-section-variable-attribute
!   84. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-18
!   85. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-19
!   86. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-20
!   87. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_context_new_bitcast
!   88. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-21
!   89. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_lvalue_set_register_name
!   90. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-22
!   91. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/contexts.html#c.gcc_jit_context_set_bool_print_errors_to_stderr
!   92. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-23
!   93. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-24
!   94. https://gcc.gnu.org/PR96066
!   95. https://gcc.gnu.org/PR96067
!   96. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_context_new_cast
!   97. https://gcc.gnu.org/PR95498
!   98. https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2020
!   99. https://gcc.gnu.org/bugzilla/
!  100. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Named-Address-Spaces.html#PRU-Named-Address-Spaces
!  101. https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/aE1ZeHHCYf4
!  102. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value
!  103. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wuninitialized
!  104. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized
!  105. https://gcc.gnu.org/PR95006
!  106. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  107. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const
!  108. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal
!  109. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html
!  110. https://gcc.gnu.org/PR104793
!  111. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-fanalyzer-checker
!  112. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-fanalyzer
!  113. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size
!  114. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor
!  115. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset
!  116. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size
!  117. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html
!  118. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index
!  119. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html#index-tainted_005fargs-function-attribute
!  120. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html#index-const-function-attribute
!  121. https://gcc.gnu.org/PR104434
!  122. https://gcc.gnu.org/PR104576
!  123. https://gcc.gnu.org/PR101962
!  124. https://gcc.gnu.org/PR101570
!  125. https://gcc.gnu.org/PR95006
!  126. https://gcc.gnu.org/PR104943
!  127. https://gcc.gnu.org/PR104954
!  128. https://gcc.gnu.org/PR104955
!  129. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  130. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wuninitialized
!  131. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  132. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  133. https://ctfstd.org/
!  134. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.0
!  135. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.2
!  136. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.3
!  137. https://gcc.gnu.org/onlinedocs/
!  138. mailto:gcc-help@gcc.gnu.org
!  139. mailto:gcc@gcc.gnu.org
!  140. https://gcc.gnu.org/lists.html
!  141. https://www.fsf.org/
!  142. https://gcc.gnu.org/about.html
!  143. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-11/index.html
- 
                               GCC 11 Release Series
  
     April 21, 2022
--- 1520,1669 ----
     3. https://gcc.gnu.org/PR102024
     4. https://gcc.gnu.org/PR42217
     5. http://gcc.gnu.org/gcc-12/changes.html#mips_zero_width_fields
!    6. https://gcc.gnu.org/install/specific.html
!    7. https://clang.llvm.org/docs/ShadowCallStack.html
!    8. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Instrumentation-Options.html#index-fsanitize_003dshadow-call-stack
!    9. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/OpenMP-Implementation-Status.html
!   10. https://www.openacc.org/
!   11. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-12
!   12. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/libgomp/Enabling-OpenACC.html
!   13. http://gcc.gnu.org/gcc-12/changes.html#amdgcn
!   14. http://gcc.gnu.org/gcc-12/changes.html#nvptx
!   15. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-param
!   16. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wopenacc-parallelism
!   17. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/C-Dialect-Options.html#index-foffload-options
!   18. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/C-Dialect-Options.html#index-foffload
!   19. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gnat_rm/Security-Hardening-Features.html#Security-Hardening-Features
!   20. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wbidi-chars
!   21. https://gcc.gnu.org/PR103026
!   22. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Warray-compare
!   23. https://gcc.gnu.org/PR97573
!   24. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wattributes
!   25. https://gcc.gnu.org/PR101940
!   26. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wformat
!   27. https://wg21.link/p1938
!   28. https://gcc.gnu.org/PR100974
!   29. https://wg21.link/p0849
!   30. https://gcc.gnu.org/PR103049
!   31. https://wg21.link/p2242
!   32. https://gcc.gnu.org/PR102612
!   33. https://wg21.link/p2334
!   34. https://gcc.gnu.org/PR102616
!   35. https://wg21.link/p2360
!   36. https://gcc.gnu.org/PR102617
!   37. https://wg21.link/p2128
!   38. https://wg21.link/cwg2397
!   39. https://gcc.gnu.org/PR100975
!   40. https://wg21.link/cwg960
!   41. https://wg21.link/cwg1227
!   42. https://wg21.link/cwg1315
!   43. https://wg21.link/cwg2082
!   44. https://wg21.link/cwg2351
!   45. https://wg21.link/cwg2374
!   46. https://wg21.link/cwg2397
!   47. https://wg21.link/cwg2446
!   48. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=87c2080b
!   49. https://gcc.gnu.org/PR79501
!   50. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wuninitialized
!   51. https://gcc.gnu.org/PR19808
!   52. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wint-in-bool-context
!   53. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=3a2b12bc
!   54. https://gcc.gnu.org/PR99032
!   55. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wmissing-requires
!   56. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=e18e56c7
!   57. https://gcc.gnu.org/PR100995
!   58. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Waddress
!   59. https://gcc.gnu.org/PR102103
!   60. https://gcc.gnu.org/PR99701
!   61. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=3ead06c1
!   62. https://gcc.gnu.org/PR102753
!   63. https://wg21.link/p0466
!   64. https://gcc.gnu.org/PR101539
!   65. https://gcc.gnu.org/PR100828
!   66. https://gcc.gnu.org/PR101786
!   67. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Winterference-size
!   68. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=76b75018
!   69. https://gcc.gnu.org/PR101344
!   70. https://gcc.gnu.org/PR101883
!   71. https://gcc.gnu.org/PR89062
!   72. https://gcc.gnu.org/PR101233
!   73. https://gcc.gnu.org/PR88252
!   74. https://gcc.gnu.org/PR86439
!   75. https://gcc.gnu.org/PR98832
!   76. https://gcc.gnu.org/PR102933
!   77. https://gcc.gnu.org/PR51577
!   78. https://gcc.gnu.org/PR98486
!   79. https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=1595fe44
!   80. https://dlang.org/changelog/2.100.1.html
!   81. https://gcc.gnu.org/PR101127
!   82. https://gcc.gnu.org/PR106563
!   83. https://dlang.org/spec/importc.html
!   84. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-16
!   85. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_lvalue_set_tls_model
!   86. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-17
!   87. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_lvalue_set_link_section
!   88. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Variable-Attributes.html#index-section-variable-attribute
!   89. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-18
!   90. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-19
!   91. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-20
!   92. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_context_new_bitcast
!   93. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-21
!   94. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_lvalue_set_register_name
!   95. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-22
!   96. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/contexts.html#c.gcc_jit_context_set_bool_print_errors_to_stderr
!   97. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-23
!   98. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/compatibility.html#libgccjit-abi-24
!   99. https://gcc.gnu.org/PR96066
!  100. https://gcc.gnu.org/PR96067
!  101. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/jit/topics/expressions.html#c.gcc_jit_context_new_cast
!  102. https://gcc.gnu.org/PR95498
!  103. https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-developments-2020
!  104. https://gcc.gnu.org/bugzilla/
!  105. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Named-Address-Spaces.html#PRU-Named-Address-Spaces
!  106. https://groups.google.com/a/groups.riscv.org/g/sw-dev/c/aE1ZeHHCYf4
!  107. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-use-of-uninitialized-value
!  108. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wuninitialized
!  109. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wmaybe-uninitialized
!  110. https://gcc.gnu.org/PR95006
!  111. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  112. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-const
!  113. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-write-to-string-literal
!  114. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html
!  115. https://gcc.gnu.org/PR104793
!  116. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-fanalyzer-checker
!  117. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-fanalyzer
!  118. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-allocation-size
!  119. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-divisor
!  120. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-offset
!  121. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-size
!  122. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html
!  123. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Static-Analyzer-Options.html#index-Wanalyzer-tainted-array-index
!  124. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html#index-tainted_005fargs-function-attribute
!  125. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Common-Function-Attributes.html#index-const-function-attribute
!  126. https://gcc.gnu.org/PR104434
!  127. https://gcc.gnu.org/PR104576
!  128. https://gcc.gnu.org/PR101962
!  129. https://gcc.gnu.org/PR101570
!  130. https://gcc.gnu.org/PR95006
!  131. https://gcc.gnu.org/PR104943
!  132. https://gcc.gnu.org/PR104954
!  133. https://gcc.gnu.org/PR104955
!  134. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  135. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Warning-Options.html#index-Wuninitialized
!  136. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  137. https://gcc.gnu.org/onlinedocs/gcc-12.1.0/gcc/Optimize-Options.html#index-ftrivial-auto-var-init
!  138. https://ctfstd.org/
!  139. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.0
!  140. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.2
!  141. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=12.3
!  142. https://gcc.gnu.org/onlinedocs/
!  143. mailto:gcc-help@gcc.gnu.org
!  144. mailto:gcc@gcc.gnu.org
!  145. https://gcc.gnu.org/lists.html
!  146. https://www.fsf.org/
!  147. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-11/index.html
                               GCC 11 Release Series
  
     April 21, 2022
*************** References and Acknowledgements
*** 979,985 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2022-04-21[19].
  
  References
  
--- 1717,1723 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 1001,1010 ****
    16. https://gcc.gnu.org/lists.html
    17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
-   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-11/changes.html
- 
                               GCC 11 Release Series
                          Changes, New Features, and Fixes
  
--- 1739,1746 ----
*************** General Improvements
*** 1057,1066 ****
              and
            + multicolumn characters (requiring more than one column to
              display in a monospace font)
!        For example, the character p ("GREEK SMALL LETTER PI (U+03C0)")
         occupies one column, and its UTF-8 encoding requires two bytes; the
!        character &#x1F642; ("SLIGHTLY SMILING FACE (U+1F642)") occupies
!        two columns, and its UTF-8 encoding requires four bytes.
         In GCC 11 the column numbers default to being column numbers,
         respecting multi-column characters. The old behavior can be
         restored using a new option [7]-fdiagnostics-column-unit=byte.
--- 1793,1802 ----
              and
            + multicolumn characters (requiring more than one column to
              display in a monospace font)
!        For example, the character π ("GREEK SMALL LETTER PI (U+03C0)")
         occupies one column, and its UTF-8 encoding requires two bytes; the
!        character 🙂 ("SLIGHTLY SMILING FACE (U+1F642)") occupies two
!        columns, and its UTF-8 encoding requires four bytes.
         In GCC 11 the column numbers default to being column numbers,
         respecting multi-column characters. The old behavior can be
         restored using a new option [7]-fdiagnostics-column-unit=byte.
*************** GCC 11.3
*** 1730,1736 ****
     provided this notice is preserved.
  
     These pages are [75]maintained by the GCC team. Last modified
!    2022-04-21[76].
  
  References
  
--- 2466,2472 ----
     provided this notice is preserved.
  
     These pages are [75]maintained by the GCC team. Last modified
!    2023-02-02.
  
  References
  
*************** References
*** 1754,1760 ****
    18. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Optimize-Options.html#index-fprofile-values
    19. https://www.openmp.org/specifications/
    20. https://www.openacc.org/
!   21. https://gcc.gnu.org/wiki/OpenACC/Implementation%20Status#status-11
    22. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/libgomp/Enabling-OpenACC.html
    23. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-no_005fstack_005fprotector-function-attribute
    24. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-malloc-function-attribute
--- 2490,2496 ----
    18. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Optimize-Options.html#index-fprofile-values
    19. https://www.openmp.org/specifications/
    20. https://www.openacc.org/
!   21. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-11
    22. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/libgomp/Enabling-OpenACC.html
    23. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-no_005fstack_005fprotector-function-attribute
    24. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-malloc-function-attribute
*************** References
*** 1786,1792 ****
    50. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/compatibility.html
    51. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/expressions.html#c.gcc_jit_global_set_initializer
    52. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/asm.html
!   53. https://developer.arm.com/support/arm-security-updates/speculative-processor-vulnerability/downloads/straight-line-speculation
    54. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
    55. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
    56. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-malloc-function-attribute
--- 2522,2528 ----
    50. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/compatibility.html
    51. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/expressions.html#c.gcc_jit_global_set_initializer
    52. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/jit/topics/asm.html
!   53. https://developer.arm.com/documentation/102587/0102/Straight-line-speculation-frequently-asked-questions
    54. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
    55. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Static-Analyzer-Options.html
    56. https://gcc.gnu.org/onlinedocs/gcc-11.1.0/gcc/Common-Function-Attributes.html#index-malloc-function-attribute
*************** References
*** 1809,1818 ****
    73. https://gcc.gnu.org/lists.html
    74. https://www.fsf.org/
    75. https://gcc.gnu.org/about.html
-   76. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-10/index.html
- 
                               GCC 10 Release Series
  
     June 28, 2022
--- 2545,2552 ----
*************** References and Acknowledgements
*** 1870,1876 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2022-06-28[22].
  
  References
  
--- 2604,2610 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 1895,1904 ****
    19. https://gcc.gnu.org/lists.html
    20. https://www.fsf.org/
    21. https://gcc.gnu.org/about.html
-   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-10/changes.html
- 
                               GCC 10 Release Series
                          Changes, New Features, and Fixes
  
--- 2629,2636 ----
*************** General Improvements
*** 2003,2018 ****
  
  New Languages and Language-Specific Improvements
  
!      * Version 2.6 of the [17]OpenACC specification is now supported in
         the C, C++ and Fortran compilers. See the [18]implementation status
         section on the OpenACC wiki page and the [19]run-time library
         documentation for further information.
       * GCC 10 adds a number of newly implemented [20]OpenMP 5.0 features
!        on top of the GCC 9 release such as conditional lastprivate clause,
!        scan and loop directives, order(concurrent) and use_device_addr
!        clauses support, if clause on simd construct or partial support for
!        the declare variant directive, getting closer to full support of
!        the OpenMP 5.0 standard.
       * OpenMP and OpenACC now support [21]offloading to AMD Radeon (GCN)
         GPUs; supported are the third-generation Fiji (fiji) and the
         fifth-generation VEGA 10/VEGA 20 (gfx900 or gfx906).
--- 2735,2750 ----
  
  New Languages and Language-Specific Improvements
  
!      * Version 2.6 of the [17]OpenACC specification is now supported by
         the C, C++ and Fortran compilers. See the [18]implementation status
         section on the OpenACC wiki page and the [19]run-time library
         documentation for further information.
       * GCC 10 adds a number of newly implemented [20]OpenMP 5.0 features
!        such as conditional lastprivate clause, scan and loop directives,
!        order(concurrent) and use_device_addr clauses support, if clause on
!        simd construct, and partial support for the declare variant
!        directive, getting closer to full support of the OpenMP 5.0
!        standard.
       * OpenMP and OpenACC now support [21]offloading to AMD Radeon (GCN)
         GPUs; supported are the third-generation Fiji (fiji) and the
         fifth-generation VEGA 10/VEGA 20 (gfx900 or gfx906).
*************** New Languages and Language-Specific Impr
*** 2066,2074 ****
         the input encoding (UTF-8, by default), in addition to the UCN
         syntax (\uNNNN or \UNNNNNNNN) that is already supported:
  
! static const int p = 3;
! int get_na�ve_pi() {
!   return p;
  }
  
    C
--- 2798,2806 ----
         the input encoding (UTF-8, by default), in addition to the UCN
         syntax (\uNNNN or \UNNNNNNNN) that is already supported:
  
! static const int π = 3;
! int get_naïve_pi() {
!   return π;
  }
  
    C
*************** typedef svbool_t pred512 __attribute__((
*** 2348,2354 ****
              one. Previously it would always use SVE if possible.
            + If a vector loop uses Advanced SIMD rather than SVE, the
              vectorizer now considers using SVE to vectorize the left-over
!             elements (the "scalar tail" or "epilog").
            + Besides these specific points, there have been many general
              improvements to the way that the vectorizer uses SVE.
       * The -mbranch-protection=pac-ret option now accepts the optional
--- 3080,3086 ----
              one. Previously it would always use SVE if possible.
            + If a vector loop uses Advanced SIMD rather than SVE, the
              vectorizer now considers using SVE to vectorize the left-over
!             elements (the “scalar tail” or “epilog”).
            + Besides these specific points, there have been many general
              improvements to the way that the vectorizer uses SVE.
       * The -mbranch-protection=pac-ret option now accepts the optional
*************** typedef svbool_t pred512 __attribute__((
*** 2453,2460 ****
  
    AMD Radeon (GCN)
  
!      * The code generation and in particular the vectorization support has
!        been much improved.
  
    ARC
  
--- 3185,3192 ----
  
    AMD Radeon (GCN)
  
!      * Code generation and in particular vectorization support have been
!        much improved.
  
    ARC
  
*************** GCC 10.4
*** 2650,2656 ****
     provided this notice is preserved.
  
     These pages are [66]maintained by the GCC team. Last modified
!    2022-06-28[67].
  
  References
  
--- 3382,3388 ----
     provided this notice is preserved.
  
     These pages are [66]maintained by the GCC team. Last modified
!    2023-03-11.
  
  References
  
*************** References
*** 2671,2677 ****
    15. https://facebook.github.io/zstd/
    16. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#index-fprofile-values
    17. https://www.openacc.org/
!   18. https://gcc.gnu.org/wiki/OpenACC/Implementation%20Status#status-10
    19. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/libgomp/#toc-Enabling-OpenACC-1
    20. https://www.openmp.org/specifications/
    21. https://gcc.gnu.org/wiki/Offloading
--- 3403,3409 ----
    15. https://facebook.github.io/zstd/
    16. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/Optimize-Options.html#index-fprofile-values
    17. https://www.openacc.org/
!   18. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-10
    19. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/libgomp/#toc-Enabling-OpenACC-1
    20. https://www.openmp.org/specifications/
    21. https://gcc.gnu.org/wiki/Offloading
*************** References
*** 2697,2704 ****
    41. https://gcc.gnu.org/onlinedocs/jit/topics/compatibility.html#c.gcc_jit_version_patchlevel
    42. https://gcc.gnu.org/onlinedocs/jit/topics/types.html#c.gcc_jit_context_new_bitfield
    43. https://developer.arm.com/documentation/101028/0009/Data-processing-intrinsics
!   44. https://developer.arm.com/architectures/cpu-architecture/m-profile
!   45. https://developer.arm.com/architectures/instruction-sets/simd-isas/helium/helium-intrinsics
    46. https://developer.arm.com/documentation/101028/0010/Custom-Datapath-Extension
    47. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/AVR-Options.html#index-nodevicespecs
    48. https://gcc.gnu.org/install/configure.html#avr
--- 3429,3436 ----
    41. https://gcc.gnu.org/onlinedocs/jit/topics/compatibility.html#c.gcc_jit_version_patchlevel
    42. https://gcc.gnu.org/onlinedocs/jit/topics/types.html#c.gcc_jit_context_new_bitfield
    43. https://developer.arm.com/documentation/101028/0009/Data-processing-intrinsics
!   44. https://developer.arm.com/Architectures/M-Profile Architecture
!   45. https://developer.arm.com/architectures/instruction-sets/intrinsics/
    46. https://developer.arm.com/documentation/101028/0010/Custom-Datapath-Extension
    47. https://gcc.gnu.org/onlinedocs/gcc-10.1.0/gcc/AVR-Options.html#index-nodevicespecs
    48. https://gcc.gnu.org/install/configure.html#avr
*************** References
*** 2720,2731 ****
    64. https://gcc.gnu.org/lists.html
    65. https://www.fsf.org/
    66. https://gcc.gnu.org/about.html
-   67. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/index.html
- 
                                GCC 9 Release Series
  
     May 27, 2022
  
     The [1]GNU project and the GCC developers are pleased to announce the
--- 3452,3463 ----
    64. https://gcc.gnu.org/lists.html
    65. https://www.fsf.org/
    66. https://gcc.gnu.org/about.html
  ======================================================================
  http://gcc.gnu.org/gcc-9/index.html
                                GCC 9 Release Series
  
+    (This release series is no longer supported.)
+ 
     May 27, 2022
  
     The [1]GNU project and the GCC developers are pleased to announce the
*************** References and Acknowledgements
*** 2784,2790 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-05-27[24].
  
  References
  
--- 3516,3522 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 2811,2820 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-9/changes.html
- 
                                GCC 9 Release Series
                          Changes, New Features, and Fixes
  
--- 3543,3550 ----
*************** General Improvements
*** 2868,2879 ****
         64-bit integers as well as standard SI and IEC suffixes such as kb
         and KiB, MB and MiB, or GB and GiB denoting the corresponding
         multiples of bytes. See [9]Invoking GCC for more.
!      * A new option,
!        [10]-flive-patching=[inline-only-static|inline-clone], has been
!        introduced to provide a safe compilation for live-patching. At the
!        same time, provides multiple-level control on the enabled IPA
!        optimizations. See the user guide for more details about the
!        option.
       * A new option, --completion, has been added to provide more fine
         option completion in a shell. It is intended to be used by
         Bash-completion.
--- 3598,3607 ----
         64-bit integers as well as standard SI and IEC suffixes such as kb
         and KiB, MB and MiB, or GB and GiB denoting the corresponding
         multiples of bytes. See [9]Invoking GCC for more.
!      * A new option [10]-flive-patching=[inline-only-static|inline-clone]
!        generates code suitable for live patching. At the same time it
!        provides multiple-level control over IPA optimizations. See the
!        user guide for more details.
       * A new option, --completion, has been added to provide more fine
         option completion in a shell. It is intended to be used by
         Bash-completion.
*************** New Targets and Target Specific Improvem
*** 3451,3456 ****
--- 4179,4208 ----
         following ISA extensions: AVX512F, AVX512VL, AVX512CD, AVX512BW,
         AVX512DQ, AVX512VNNI.
  
+   MIPS
+ 
+      * The Loongson loongson-mmi and loongson-ext extensions have been
+        split from loongson3a:
+           + loongson-mmi contains the Loongson MMI (MultiMedia extensions
+             Instructions).
+           + loongson-ext contains the Loongson EXT (EXTensions
+             instructions).
+      * The Loongson EXT2 (EXTensions R2 instructions) are now supported.
+           + loongson-ext2 contains the Loongson EXT2 instructions.
+        Command-line options-m[no-]loongson-mmi, -m[no-]loongson-ext, and
+        -m[no-]loongson-ext2 enable or disable those extensions.
+      * Support has been added for the following processors (GCC
+        identifiers in parentheses):
+           + Loongson 3A1000 (gs464) which enables loongson-mmi,
+             loongson-ext by default.
+           + Loongson 3A2000/3A3000 (gs464e) which enables loongson-mmi,
+             loongson-ext, loongson-ext2 by default.
+           + Loongson 2K1000 (gs264e) which enables loongson-ext,
+             loongson-ext2, msa by default.
+        The GCC identifiers can be used as arguments to the -mcpu and
+        -mtune options (as in -mcpu=gs464 or -mtune=gs464e) or as arguments
+        to the equivalent target attributes and pragmas.
+ 
    OpenRISC
  
       * A new back end targeting OpenRISC processors has been contributed
*************** GCC 9.5
*** 3592,3598 ****
     provided this notice is preserved.
  
     These pages are [75]maintained by the GCC team. Last modified
!    2022-05-27[76].
  
  References
  
--- 4344,4350 ----
     provided this notice is preserved.
  
     These pages are [75]maintained by the GCC team. Last modified
!    2023-02-22.
  
  References
  
*************** References
*** 3631,3637 ****
    33. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Optimize-Options.html#index-ftree-loop-distribution
    34. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Invoking-Gcov.html#Invoking-Gcov
    35. https://www.openacc.org/
!   36. https://gcc.gnu.org/wiki/OpenACC/Implementation%20Status#status-9
    37. https://www.openmp.org/specifications/
    38. https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00628.html
    39. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Vector-Extensions.html#index-_005f_005fbuiltin_005fconvertvector
--- 4383,4389 ----
    33. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Optimize-Options.html#index-ftree-loop-distribution
    34. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Invoking-Gcov.html#Invoking-Gcov
    35. https://www.openacc.org/
!   36. https://gcc.gnu.org/wiki/OpenACC/Implementation Status#status-9
    37. https://www.openmp.org/specifications/
    38. https://gcc.gnu.org/ml/gcc-patches/2018-11/msg00628.html
    39. https://gcc.gnu.org/onlinedocs/gcc-9.1.0/gcc/Vector-Extensions.html#index-_005f_005fbuiltin_005fconvertvector
*************** References
*** 3671,3680 ****
    73. https://gcc.gnu.org/lists.html
    74. https://www.fsf.org/
    75. https://gcc.gnu.org/about.html
-   76. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/index.html
- 
                                GCC 8 Release Series
  
     (This release series is no longer supported.)
--- 4423,4430 ----
*************** References and Acknowledgements
*** 3737,3743 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-05-06[24].
  
  References
  
--- 4487,4493 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 3764,3773 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-8/changes.html
- 
                                GCC 8 Release Series
                          Changes, New Features, and Fixes
  
--- 4514,4521 ----
*************** void copy (const char *s)
*** 4052,4058 ****
  {
      char buf[80];
      strncpy (buf, s, sizeof buf);
!     ...
  }
  warning: 'strncpy' specified bound 80 equals destination size [-Wstringop-trunca
  tion]
--- 4800,4806 ----
  {
      char buf[80];
      strncpy (buf, s, sizeof buf);
!     …
  }
  warning: 'strncpy' specified bound 80 equals destination size [-Wstringop-trunca
  tion]
*************** void f (void)
*** 4125,4131 ****
  {
      char a[] = "abcd1234";
      strcpy (a, a + 4);
!     ...
  }
  warning: 'strcpy' accessing 5 bytes at offsets 0 and 4 overlaps 1 byte at offset
   4 [-Wrestrict]
--- 4873,4879 ----
  {
      char a[] = "abcd1234";
      strcpy (a, a + 4);
!     …
  }
  warning: 'strcpy' accessing 5 bytes at offsets 0 and 4 overlaps 1 byte at offset
   4 [-Wrestrict]
*************** New Targets and Target Specific Improvem
*** 4548,4560 ****
            + Secure functions via sjli instruction.
       * New exception handling implementation.
       * Revamped trampoline implementation.
!      * Refactored small data feature implementation, controlled via -G
!        command line option.
       * New support for reduced register set ARC architecture
!        configurations, controlled via -mrf16 command line option.
       * Refurbished and improved support for zero overhead loops.
!        Introduced -mlpc-width command line option to control the width of
!        lp_count register.
  
    ARM
  
--- 5296,5308 ----
            + Secure functions via sjli instruction.
       * New exception handling implementation.
       * Revamped trampoline implementation.
!      * Refactored small data feature implementation, controlled via the -G
!        command-line option.
       * New support for reduced register set ARC architecture
!        configurations, controlled via the -mrf16 command-line option.
       * Refurbished and improved support for zero overhead loops.
!        Introduced -mlpc-width command-line option to control the width of
!        the lp_count register.
  
    ARM
  
*************** GCC 8.5
*** 4847,4853 ****
     provided this notice is preserved.
  
     These pages are [44]maintained by the GCC team. Last modified
!    2021-10-01[45].
  
  References
  
--- 5595,5601 ----
     provided this notice is preserved.
  
     These pages are [44]maintained by the GCC team. Last modified
!    2023-01-11.
  
  References
  
*************** References
*** 4895,4904 ****
    42. https://gcc.gnu.org/lists.html
    43. https://www.fsf.org/
    44. https://gcc.gnu.org/about.html
-   45. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/index.html
- 
                                GCC 7 Release Series
  
     (This release series is no longer supported.)
--- 5643,5650 ----
*************** References and Acknowledgements
*** 4961,4967 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-05-06[24].
  
  References
  
--- 5707,5713 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 4988,4997 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-7/changes.html
- 
                                GCC 7 Release Series
                          Changes, New Features, and Fixes
  
--- 5734,5741 ----
*************** void f (int n)
*** 5360,5366 ****
      d = alloca (n);
    else
      d = malloc (n);
!   ...
  }
  
  warning: argument to 'alloca may be too large due to conversion from 'int' to 'l
--- 6104,6110 ----
      d = alloca (n);
    else
      d = malloc (n);
!   …
  }
  
  warning: argument to 'alloca may be too large due to conversion from 'int' to 'l
*************** ong unsigned int' [-Walloca-larger-than=
*** 5373,5379 ****
  void f (size_t n)
  {
    char *d = alloca (n);
!   ...
  }
  
  warning: unbounded use of 'alloca' [-Walloca-larger-than=]
--- 6117,6123 ----
  void f (size_t n)
  {
    char *d = alloca (n);
!   …
  }
  
  warning: unbounded use of 'alloca' [-Walloca-larger-than=]
*************** void f (unsigned x)
*** 5421,5427 ****
  {
    char d[4];
    snprintf (d, sizeof d, "%#02x", x & 0xff);
!   ...
  }
  
  warning: 'snprintf' output may be truncated before the last format character [-W
--- 6165,6171 ----
  {
    char d[4];
    snprintf (d, sizeof d, "%#02x", x & 0xff);
!   …
  }
  
  warning: 'snprintf' output may be truncated before the last format character [-W
*************** void f (const char *fname)
*** 5449,5455 ****
    char d[8];
    strncpy (d, "/tmp/", sizeof d);
    strncat (d, fname, sizeof d);
!   ...
  }
  
  warning: specified bound 8 equals the size of the destination [-Wstringop-overfl
--- 6193,6199 ----
    char d[8];
    strncpy (d, "/tmp/", sizeof d);
    strncat (d, fname, sizeof d);
!   …
  }
  
  warning: specified bound 8 equals the size of the destination [-Wstringop-overfl
*************** test.cc:4:11: error: expected ';' after
*** 5587,5596 ****
            + std::as_const, std::not_fn,
              std::has_unique_object_representations, constexpr
              std::addressof.
!        Thanks to Daniel Kr�gler, Tim Shen, Edward Smith-Rowland, and Ville
         Voutilainen for work on the C++17 support.
       * A new power-of-two rehashing policy for use with the _Hashtable
!        internals, thanks to Fran�ois Dumont.
  
    Fortran
  
--- 6331,6340 ----
            + std::as_const, std::not_fn,
              std::has_unique_object_representations, constexpr
              std::addressof.
!        Thanks to Daniel Krügler, Tim Shen, Edward Smith-Rowland, and Ville
         Voutilainen for work on the C++17 support.
       * A new power-of-two rehashing policy for use with the _Hashtable
!        internals, thanks to François Dumont.
  
    Fortran
  
*************** const int* get_address (unsigned idx)
*** 5760,5766 ****
  }
  
       * A new command-line option -Wmisspelled-isr has been added. It turns
!        off -- or turns into errors -- warnings that are reported for
         interrupt service routines (ISRs) which don't follow AVR-LibC's
         naming convention of prefixing ISR names with __vector.
       * __builtin_avr_nops(n) is a new [17]built-in function that inserts n
--- 6504,6510 ----
  }
  
       * A new command-line option -Wmisspelled-isr has been added. It turns
!        off — or turns into errors — warnings that are reported for
         interrupt service routines (ISRs) which don't follow AVR-LibC's
         naming convention of prefixing ISR names with __vector.
       * __builtin_avr_nops(n) is a new [17]built-in function that inserts n
*************** GCC 7.5
*** 6059,6065 ****
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2021-10-17[34].
  
  References
  
--- 6803,6809 ----
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 6096,6105 ****
    31. https://gcc.gnu.org/lists.html
    32. https://www.fsf.org/
    33. https://gcc.gnu.org/about.html
-   34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/index.html
- 
                                GCC 6 Release Series
  
     (This release series is no longer supported.)
--- 6840,6847 ----
*************** References and Acknowledgements
*** 6162,6168 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
--- 6904,6910 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 6189,6198 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-6/changes.html
- 
                                GCC 6 Release Series
                          Changes, New Features, and Fixes
  
--- 6931,6938 ----
*************** New Targets and Target Specific Improvem
*** 6611,6617 ****
         added. This includes new intrinsic and built-in support. It is
         enabled through option -mmwaitx. The instructions monitorx and
         mwaitx implement the same functionality as the old monitor and
!        mwait instructions. In addition mwaitx adds a configurable timer.
         The timer value is received as third argument and stored in
         register %ebx.
       * x86-64 targets now allow stack realignment from a word-aligned
--- 7351,7357 ----
         added. This includes new intrinsic and built-in support. It is
         enabled through option -mmwaitx. The instructions monitorx and
         mwaitx implement the same functionality as the old monitor and
!        mwait instructions. In addition, mwaitx adds a configurable timer.
         The timer value is received as third argument and stored in
         register %ebx.
       * x86-64 targets now allow stack realignment from a word-aligned
*************** Operating Systems
*** 6798,6809 ****
    RTEMS
  
       * The RTEMS thread model implementation changed. Mutexes now use
!        self-contained objects defined in Newlib <sys/lock.h> instead of
         Classic API semaphores. The keys for thread specific data and the
         once function are directly defined via <pthread.h>. Self-contained
!        condition variables are provided via Newlib <sys/lock.h>. The RTEMS
         thread model also supports C++11 threads.
!      * OpenMP support now uses self-contained objects provided by Newlib
         <sys/lock.h> and offers a significantly better performance compared
         to the POSIX configuration of libgomp. It is possible to configure
         thread pools for each scheduler instance via the environment
--- 7538,7549 ----
    RTEMS
  
       * The RTEMS thread model implementation changed. Mutexes now use
!        self-contained objects defined in newlib <sys/lock.h> instead of
         Classic API semaphores. The keys for thread specific data and the
         once function are directly defined via <pthread.h>. Self-contained
!        condition variables are provided via newlib <sys/lock.h>. The RTEMS
         thread model also supports C++11 threads.
!      * OpenMP support now uses self-contained objects provided by newlib
         <sys/lock.h> and offers a significantly better performance compared
         to the POSIX configuration of libgomp. It is possible to configure
         thread pools for each scheduler instance via the environment
*************** Operating Systems
*** 6901,6907 ****
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2021-10-31[33].
  
  References
  
--- 7641,7647 ----
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2023-02-20.
  
  References
  
*************** References
*** 6915,6921 ****
     8. https://gcc.gnu.org/wiki/Offloading
     9. https://www.openmp.org/specifications/
    10. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266
!   11. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
    12. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
    13. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/performance.html
    14. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/functions.html#gcc_jit_block_end_with_switch
--- 7655,7661 ----
     8. https://gcc.gnu.org/wiki/Offloading
     9. https://www.openmp.org/specifications/
    10. https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-1266
!   11. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2015/n4377.pdf
    12. https://gcc.gnu.org/projects/cxx-status.html#cxx1z
    13. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/performance.html
    14. https://gcc.gnu.org/onlinedocs/gcc-6.1.0/jit/topics/functions.html#gcc_jit_block_end_with_switch
*************** References
*** 6937,6946 ****
    30. https://gcc.gnu.org/lists.html
    31. https://www.fsf.org/
    32. https://gcc.gnu.org/about.html
-   33. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/index.html
- 
                                GCC 5 Release Series
  
     (This release series is no longer supported.)
--- 7677,7684 ----
*************** References and Acknowledgements
*** 7003,7009 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
--- 7741,7747 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 7030,7039 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-5/changes.html
- 
                                GCC 5 Release Series
                          Changes, New Features, and Fixes
  
--- 7768,7775 ----
*************** Target Specific Changes
*** 7831,7837 ****
         added. This includes new intrinsic and built-in support. It is
         enabled through option -mmwaitx. The instructions monitorx and
         mwaitx implement the same functionality as the old monitor and
!        mwait instructions. In addition mwaitx adds a configurable timer.
         The timer value is received as third argument and stored in
         register %ebx.
  
--- 8567,8573 ----
         added. This includes new intrinsic and built-in support. It is
         enabled through option -mmwaitx. The instructions monitorx and
         mwaitx implement the same functionality as the old monitor and
!        mwait instructions. In addition, mwaitx adds a configurable timer.
         The timer value is received as third argument and stored in
         register %ebx.
  
*************** Target Specific Changes
*** 7913,7926 ****
     provided this notice is preserved.
  
     These pages are [49]maintained by the GCC team. Last modified
!    2022-03-11[50].
  
  References
  
     1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
!    4. https://gcc.gnu.org/wiki/Intel%20MPX%20support%20in%20the%20GCC%20compiler
     5. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
     6. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
--- 8649,8662 ----
     provided this notice is preserved.
  
     These pages are [49]maintained by the GCC team. Last modified
!    2023-02-20.
  
  References
  
     1. http://gcc.gnu.org/gcc-5/changes.html#libstdcxx
     2. https://gcc.gnu.org/onlinedocs/gcc/Spec-Files.html
     3. https://savannah.nongnu.org/bugs/?44574
!    4. https://gcc.gnu.org/wiki/Intel MPX support in the GCC compiler
     5. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.pdf
     6. https://www.openmp.org/wp-content/uploads/OpenMP4.0.0.Examples.pdf
     7. https://gcc.gnu.org/wiki/OpenACC
*************** References
*** 7931,7942 ****
    12. http://gcc.gnu.org/projects/cxx1y.html
    13. http://gcc.gnu.org/projects/cxx1y.html
    14. http://gcc.gnu.org/projects/cxx1y.html
!   15. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
    16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
    17. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2011
    18. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
    19. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
!   20. https://sourceware.org/gdb/current/onlinedocs/gdb/Xmethods-In-Python.html
    21. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html
    22. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html
    23. https://gcc.gnu.org/install/configure.html
--- 8667,8678 ----
    12. http://gcc.gnu.org/projects/cxx1y.html
    13. http://gcc.gnu.org/projects/cxx1y.html
    14. http://gcc.gnu.org/projects/cxx1y.html
!   15. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3639.html
    16. http://gcc.gnu.org/onlinedocs/libstdc++/manual/using_dual_abi.html
    17. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2011
    18. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
    19. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/libstdc++/manual/manual/status.html#status.iso.2014
!   20. https://sourceware.org/gdb/current/onlinedocs/gdb#Xmethods-In-Python
    21. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gfortran/Error-and-Warning-Options.html
    22. https://gcc.gnu.org/onlinedocs/gcc-5.1.0/gcc/Language-Independent-Options.html
    23. https://gcc.gnu.org/install/configure.html
*************** References
*** 7966,7975 ****
    47. https://gcc.gnu.org/lists.html
    48. https://www.fsf.org/
    49. https://gcc.gnu.org/about.html
-   50. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/index.html
- 
                               GCC 4.9 Release Series
  
     (This release series is no longer supported.)
--- 8702,8709 ----
*************** References and Acknowledgements
*** 8032,8038 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
--- 8766,8772 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 8059,8068 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.9/changes.html
- 
                               GCC 4.9 Release Series
                          Changes, New Features, and Fixes
  
--- 8793,8800 ----
*************** New Languages and Language specific impr
*** 8176,8196 ****
         -fdiagnostics-color=never.
         Sample diagnostics output:
      $ g++ -fdiagnostics-color=always -S -Wall test.C
!     test.C: In function `int foo()':
      test.C:1:14: warning: no return statement in function returning non-void [-W
  return-type]
       int foo () { }
                    ^
      test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
!  -ftemplate-depth= to increase the maximum) instantiating `struct X<100>'
       template <int N> struct X { static const int value = X<N-1>::value; }; temp
  late struct X<1000>;
                                                    ^
!     test.C:2:46:   recursively required from `const int X<999>::value'
!     test.C:2:46:   required from `const int X<1000>::value'
      test.C:2:88:   required from here
  
!     test.C:2:46: error: incomplete type `X<100>' used in nested name specifier
  
       * With the new [7]#pragma GCC ivdep, the user can assert that there
         are no loop-carried dependencies which would prevent concurrent
--- 8908,8928 ----
         -fdiagnostics-color=never.
         Sample diagnostics output:
      $ g++ -fdiagnostics-color=always -S -Wall test.C
!     test.C: In function ‘int foo()’:
      test.C:1:14: warning: no return statement in function returning non-void [-W
  return-type]
       int foo () { }
                    ^
      test.C:2:46: error: template instantiation depth exceeds maximum of 900 (use
!  -ftemplate-depth= to increase the maximum) instantiating ‘struct X<100>’
       template <int N> struct X { static const int value = X<N-1>::value; }; temp
  late struct X<1000>;
                                                    ^
!     test.C:2:46:   recursively required from ‘const int X<999>::value’
!     test.C:2:46:   required from ‘const int X<1000>::value’
      test.C:2:88:   required from here
  
!     test.C:2:46: error: incomplete type ‘X<100>’ used in nested name specifier
  
       * With the new [7]#pragma GCC ivdep, the user can assert that there
         are no loop-carried dependencies which would prevent concurrent
*************** auto incr = [](auto x) { return x++; };
*** 8295,8302 ****
  // a functional object that will add two like-type objects
  auto add = [] <typename T> (T a, T b) { return a + b; };
  
!      * G++ supports unconstrained generic functions as specified by �4.1.2
!        and �5.1.1 of [15]N3889: Concepts Lite Specification. Briefly, auto
         may be used as a type-specifier in a parameter declaration of any
         function declarator in order to introduce an implicit function
         template parameter, akin to generic lambdas.
--- 9027,9034 ----
  // a functional object that will add two like-type objects
  auto add = [] <typename T> (T a, T b) { return a + b; };
  
!      * G++ supports unconstrained generic functions as specified by §4.1.2
!        and §5.1.1 of [15]N3889: Concepts Lite Specification. Briefly, auto
         may be used as a type-specifier in a parameter declaration of any
         function declarator in order to introduce an implicit function
         template parameter, akin to generic lambdas.
*************** auto incr(T x) { return x++; }
*** 8389,8395 ****
         be used as argument to ISO_C_BINDING's C_LOC and as actual argument
         to another NO_ARG_CHECK dummy argument; also the other constraints
         of TYPE(*) apply. The dummy arguments should be declared as scalar
!        or assumed-size variable of type type(*) (recommended) - or of type
         integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
         the data without further type or shape information is passed,
         similar to C's void*. Note that also TS 29113's
--- 9121,9127 ----
         be used as argument to ISO_C_BINDING's C_LOC and as actual argument
         to another NO_ARG_CHECK dummy argument; also the other constraints
         of TYPE(*) apply. The dummy arguments should be declared as scalar
!        or assumed-size variable of type type(*) (recommended) – or of type
         integer, real, complex or logical. With NO_ARG_CHECK, a pointer to
         the data without further type or shape information is passed,
         similar to C's void*. Note that also TS 29113's
*************** GCC 4.9.4
*** 8672,8678 ****
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2021-07-28[34].
  
  References
  
--- 9404,9410 ----
     provided this notice is preserved.
  
     These pages are [33]maintained by the GCC team. Last modified
!    2023-01-19.
  
  References
  
*************** References
*** 8684,8696 ****
     6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
     7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
     8. http://gcc.gnu.org/projects/cxx1y.html
!    9. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
    10. http://gcc.gnu.org/projects/cxx1y.html
    11. http://gcc.gnu.org/projects/cxx1y.html
    12. http://gcc.gnu.org/projects/cxx1y.html
    13. http://gcc.gnu.org/projects/cxx1y.html
    14. http://gcc.gnu.org/projects/cxx1y.html
!   15. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3889.pdf
    16. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/libstdc++/manual/manual/status.html#status.iso.2011
    17. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
    18. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Argument-passing-conventions.html
--- 9416,9428 ----
     6. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Language-Independent-Options.html#index-fdiagnostics-color-252
     7. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Loop-Specific-Pragmas.html
     8. http://gcc.gnu.org/projects/cxx1y.html
!    9. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2013/n3638.html
    10. http://gcc.gnu.org/projects/cxx1y.html
    11. http://gcc.gnu.org/projects/cxx1y.html
    12. http://gcc.gnu.org/projects/cxx1y.html
    13. http://gcc.gnu.org/projects/cxx1y.html
    14. http://gcc.gnu.org/projects/cxx1y.html
!   15. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n3889.pdf
    16. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/libstdc++/manual/manual/status.html#status.iso.2011
    17. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.2014
    18. https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gfortran/Argument-passing-conventions.html
*************** References
*** 8709,8718 ****
    31. https://gcc.gnu.org/lists.html
    32. https://www.fsf.org/
    33. https://gcc.gnu.org/about.html
-   34. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/index.html
- 
                               GCC 4.8 Release Series
  
     (This release series is no longer supported.)
--- 9441,9448 ----
*************** References and Acknowledgements
*** 8778,8784 ****
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2021-07-28[26].
  
  References
  
--- 9508,9514 ----
     provided this notice is preserved.
  
     These pages are [25]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 8807,8816 ****
    23. https://gcc.gnu.org/lists.html
    24. https://www.fsf.org/
    25. https://gcc.gnu.org/about.html
-   26. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.8/changes.html
- 
                               GCC 4.8 Release Series
                          Changes, New Features, and Fixes
  
--- 9537,9544 ----
*************** New Languages and Language specific impr
*** 8939,8946 ****
         diagnostics. Combined with the caret information, an example
         diagnostic showing these two features is:
  
! t.c:1:94: error: invalid operands to binary < (have `struct mystruct' and `float
! ')
   #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
  _b = (B); __a < __b ? __b : __a; })
  
--- 9667,9674 ----
         diagnostics. Combined with the caret information, an example
         diagnostic showing these two features is:
  
! t.c:1:94: error: invalid operands to binary < (have ‘struct mystruct’ and ‘float
! ’)
   #define MYMAX(A,B)    __extension__ ({ __typeof__(A) __a = (A); __typeof__(B) _
  _b = (B); __a < __b ? __b : __a; })
  
*************** int i = A().f();  // error, f() requires
*** 9064,9071 ****
              older versions except as noted below.
            + ABI: Some internal names (used in the assembler/object file)
              have changed for symbols declared in the specification part of
!             a module. If an affected module - or a file using it via use
!             association - is recompiled, the module and all files which
              directly use such symbols have to be recompiled as well. This
              change only affects the following kind of module symbols:
                 o Procedure pointers. Note: C-interoperable function
--- 9792,9799 ----
              older versions except as noted below.
            + ABI: Some internal names (used in the assembler/object file)
              have changed for symbols declared in the specification part of
!             a module. If an affected module – or a file using it via use
!             association – is recompiled, the module and all files which
              directly use such symbols have to be recompiled as well. This
              change only affects the following kind of module symbols:
                 o Procedure pointers. Note: C-interoperable function
*************** int i = A().f();  // error, f() requires
*** 9092,9098 ****
       * The [21]-Wcompare-reals command-line option has been added. When
         this is set, warnings are issued when comparing REAL or COMPLEX
         types for equality and inequality; consider replacing a == b by
!        abs(a-b) < eps with a suitable eps. -Wcompare-reals is enabled by
         -Wextra.
       * The [22]-Wtarget-lifetime command-line option has been added
         (enabled with -Wall), which warns if the pointer in a pointer
--- 9820,9826 ----
       * The [21]-Wcompare-reals command-line option has been added. When
         this is set, warnings are issued when comparing REAL or COMPLEX
         types for equality and inequality; consider replacing a == b by
!        abs(a−b) < eps with a suitable eps. -Wcompare-reals is enabled by
         -Wextra.
       * The [22]-Wtarget-lifetime command-line option has been added
         (enabled with -Wall), which warns if the pointer in a pointer
*************** int i = A().f();  // error, f() requires
*** 9104,9110 ****
         4.0e0).
         (For Fortran source code, consider replacing the "q" in
         floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
!        suitable qp). Note that - in Fortran source code - replacing "q" by
         a simple "e" is not equivalent.)
       * The GFORTRAN_TMPDIR environment variable for specifying a
         non-default directory for files opened with STATUS="SCRATCH", is
--- 9832,9838 ----
         4.0e0).
         (For Fortran source code, consider replacing the "q" in
         floating-point literals by a kind parameter (e.g. 4.0e0_qp with a
!        suitable qp). Note that – in Fortran source code – replacing "q" by
         a simple "e" is not equivalent.)
       * The GFORTRAN_TMPDIR environment variable for specifying a
         non-default directory for files opened with STATUS="SCRATCH", is
*************** New Targets and Target Specific Improvem
*** 9199,9206 ****
      }
         The inline assembler in this example will generate code like
      mov r24, 8+7
!        provided c is allocated to R24 and val is allocated to R8...R15.
!        This works because the GNU assembler accepts plain register numbers
         without register prefix.
       * Static initializers with 3-byte symbols are supported now:
      extern const __memx char foo;
--- 9927,9934 ----
      }
         The inline assembler in this example will generate code like
      mov r24, 8+7
!        provided c is allocated to R24 and val is allocated to R8…R15. This
!        works because the GNU assembler accepts plain register numbers
         without register prefix.
       * Static initializers with 3-byte symbols are supported now:
      extern const __memx char foo;
*************** GCC 4.8.5
*** 9534,9540 ****
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2021-07-28[44].
  
  References
  
--- 10262,10268 ----
     provided this notice is preserved.
  
     These pages are [43]maintained by the GCC team. Last modified
!    2022-11-05.
  
  References
  
*************** References
*** 9549,9557 ****
     9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
!   12. http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
    13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
!   14. http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
    15. http://gcc.gnu.org/projects/cxx1y.html
    16. https://gcc.gnu.org/onlinedocs/gcc-4.8.4/libstdc++/manual/manual/status.html#status.iso.2011
    17. https://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
--- 10277,10285 ----
     9. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    10. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
    11. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
!   12. https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf
    13. http://gcc.gnu.org/gcc-4.8/cxx0x_status.html
!   14. https://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n3386.html
    15. http://gcc.gnu.org/projects/cxx1y.html
    16. https://gcc.gnu.org/onlinedocs/gcc-4.8.4/libstdc++/manual/manual/status.html#status.iso.2011
    17. https://gcc.gnu.org/onlinedocs/gfortran/BACKTRACE.html
*************** References
*** 9564,9570 ****
    24. https://gcc.gnu.org/wiki/Fortran2003Status
    25. https://gcc.gnu.org/wiki/TS29113Status
    26. https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgfortran/libgfortran.h
!   27. http://chasm-interop.sourceforge.net/
    28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
    29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
    30. https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html
--- 10292,10298 ----
    24. https://gcc.gnu.org/wiki/Fortran2003Status
    25. https://gcc.gnu.org/wiki/TS29113Status
    26. https://gcc.gnu.org/git/?p=gcc.git;a=blob;f=libgfortran/libgfortran.h
!   27. https://chasm-interop.sourceforge.net/
    28. https://gcc.gnu.org/wiki/avr-gcc#Fixed-Point_Support
    29. https://gcc.gnu.org/onlinedocs/gcc/Fixed-Point.html
    30. https://gcc.gnu.org/onlinedocs/gcc/x86-Built-in-Functions.html
*************** References
*** 9581,9590 ****
    41. https://gcc.gnu.org/lists.html
    42. https://www.fsf.org/
    43. https://gcc.gnu.org/about.html
-   44. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.7/index.html
- 
                               GCC 4.7 Release Series
  
     (This release series is no longer supported.)
--- 10309,10316 ----
*************** References and Acknowledgements
*** 9647,9653 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
--- 10373,10379 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 9674,9683 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.7/changes.html
- 
                               GCC 4.7 Release Series
                          Changes, New Features, and Fixes
  
--- 10400,10407 ----
*************** long double pi = 180.0_degrees;
*** 10008,10014 ****
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamar�o, G++ now implements
         [12]C++11 delegating constructors.
  
  struct A {
--- 10732,10738 ----
  template <class T> using Ptr = T*;
  Ptr<int> ip;  // decltype(ip) is int*
  
!      * Thanks to Ville Voutilainen and Pedro Lamarão, G++ now implements
         [12]C++11 delegating constructors.
  
  struct A {
*************** New Targets and Target Specific Improvem
*** 10202,10208 ****
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [35]named address spaces __flash, __flash1, ...,
         __flash5 and __memx has been added. These address spaces locate
         read-only data in flash memory and allow reading from flash memory
         by means of ordinary C code, i.e. without the need of (inline)
--- 10926,10932 ----
  
       * GCC now supports the XMEGA architecture. This requires GNU binutils
         2.22 or later.
!      * Support for the [35]named address spaces __flash, __flash1, …,
         __flash5 and __memx has been added. These address spaces locate
         read-only data in flash memory and allow reading from flash memory
         by means of ordinary C code, i.e. without the need of (inline)
*************** void set_portb (uint8_t value)
*** 10246,10252 ****
         suitable to be used as operand in an I/O command. The address must
         be a constant integer known at compile time.
       * The inline assembler constraint "R" to represent integers in the
!        range -6 ... 5 has been removed without replacement.
       * Many optimizations to:
            + 64-bit integer arithmetic
            + Widening multiplication
--- 10970,10976 ----
         suitable to be used as operand in an I/O command. The address must
         be a constant integer known at compile time.
       * The inline assembler constraint "R" to represent integers in the
!        range −6 … 5 has been removed without replacement.
       * Many optimizations to:
            + 64-bit integer arithmetic
            + Widening multiplication
*************** void set_portb (uint8_t value)
*** 10258,10264 ****
            + If-else decision trees generated by switch instructions
            + Merging of data located in flash memory
            + New libgcc variants for devices with 8-bit wide stack pointer
!           + ...
       * Better documentation:
            + Handling of EIND and indirect jumps on devices with more than
              128 KiB of program memory.
--- 10982,10988 ----
            + If-else decision trees generated by switch instructions
            + Merging of data located in flash memory
            + New libgcc variants for devices with 8-bit wide stack pointer
!           + …
       * Better documentation:
            + Handling of EIND and indirect jumps on devices with more than
              128 KiB of program memory.
*************** GCC 4.7.4
*** 10469,10475 ****
     provided this notice is preserved.
  
     These pages are [54]maintained by the GCC team. Last modified
!    2022-02-10[55].
  
  References
  
--- 11193,11199 ----
     provided this notice is preserved.
  
     These pages are [54]maintained by the GCC team. Last modified
!    2023-03-29.
  
  References
  
*************** References
*** 10497,10503 ****
    22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   25. https://docs.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps
    26. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    27. https://gcc.gnu.org/wiki/Fortran2003Status
    28. https://gcc.gnu.org/wiki/OOP
--- 11221,11227 ----
    22. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Code-Gen-Options.html#index-g_t_0040code_007bfaggressive-function-elimination_007d-270
    23. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWreal-q-constant_007d-149
    24. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/SELECTED_005fREAL_005fKIND.html
!   25. https://learn.microsoft.com/en-us/windows/win32/wer/collecting-user-mode-dumps
    26. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gfortran/Debugging-Options.html#index-g_t_0040code_007bfno-backtrace_007d-183
    27. https://gcc.gnu.org/wiki/Fortran2003Status
    28. https://gcc.gnu.org/wiki/OOP
*************** References
*** 10510,10521 ****
    35. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    36. http://www.nongnu.org/avr-libc/
    37. https://gcc.gnu.org/PR54461
!   38. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built%5f002din-Functions.html
    39. https://sites.google.com/site/x32abi/
!   40. https://www.dwarfstd.org/ShowIssue.php?issue=100909.1
!   41. https://www.dwarfstd.org/ShowIssue.php?issue=100909.2
!   42. https://www.dwarfstd.org/ShowIssue.php?issue=140425.1
!   43. https://www.dwarfstd.org/ShowIssue.php?issue=110722.1
    44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
    45. https://go.dev/doc/go1
    46. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
--- 11234,11245 ----
    35. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/Named-Address-Spaces.html
    36. http://www.nongnu.org/avr-libc/
    37. https://gcc.gnu.org/PR54461
!   38. https://gcc.gnu.org/onlinedocs/gcc-4.7.1/gcc/AVR-Built_002din-Functions.html
    39. https://sites.google.com/site/x32abi/
!   40. https://dwarfstd.org/issues/100909.1.html
!   41. https://dwarfstd.org/issues/100909.2.html
!   42. https://dwarfstd.org/issues/140425.1.html
!   43. https://dwarfstd.org/issues/110722.1.html
    44. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.1
    45. https://go.dev/doc/go1
    46. https://gcc.gnu.org/bugzilla/buglist.cgi?bug_status=RESOLVED&resolution=FIXED&target_milestone=4.7.2
*************** References
*** 10527,10536 ****
    52. https://gcc.gnu.org/lists.html
    53. https://www.fsf.org/
    54. https://gcc.gnu.org/about.html
-   55. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/index.html
- 
                               GCC 4.6 Release Series
  
     (This release series is no longer supported.)
--- 11251,11258 ----
*************** References and Acknowledgements
*** 10593,10599 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
--- 11315,11321 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 10620,10629 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.6/changes.html
- 
                               GCC 4.6 Release Series
                          Changes, New Features, and Fixes
  
--- 11342,11349 ----
*************** New Languages and Language specific impr
*** 10963,10969 ****
  
       * [12]Improved experimental support for the upcoming ISO C++
         standard, C++0x, including using constexpr and nullptr.
!      * Performance improvements to the [13]Debug Mode, thanks to Fran�ois
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
--- 11683,11689 ----
  
       * [12]Improved experimental support for the upcoming ISO C++
         standard, C++0x, including using constexpr and nullptr.
!      * Performance improvements to the [13]Debug Mode, thanks to François
         Dumont.
       * Atomic operations used for reference-counting are annotated so that
         they can be understood by race detectors such as Helgrind, see
*************** New Languages and Language specific impr
*** 11018,11024 ****
              allocated (if unallocated) or reallocated (if the shape or
              type parameter is different). To avoid the small performance
              penalty, you can use a(:) = ... instead of a = ... for arrays
!             and character strings - or disable the feature using -std=f95
              or -fno-realloc-lhs.
            + Deferred type parameter: For scalar allocatable and pointer
              variables the character length can be deferred.
--- 11738,11744 ----
              allocated (if unallocated) or reallocated (if the shape or
              type parameter is different). To avoid the small performance
              penalty, you can use a(:) = ... instead of a = ... for arrays
!             and character strings – or disable the feature using -std=f95
              or -fno-realloc-lhs.
            + Deferred type parameter: For scalar allocatable and pointer
              variables the character length can be deferred.
*************** New Languages and Language specific impr
*** 11073,11079 ****
              be declared in a single PROCEDURE statement; implied-shape
              arrays are supported for named constants (PARAMETER). The
              transformational, three argument versions of BESSEL_JN and
!             BESSEL_YN were added - the elemental, two-argument version had
              been added in GCC 4.4; note that the transformational
              functions use a recurrence algorithm.
  
--- 11793,11799 ----
              be declared in a single PROCEDURE statement; implied-shape
              arrays are supported for named constants (PARAMETER). The
              transformational, three argument versions of BESSEL_JN and
!             BESSEL_YN were added – the elemental, two-argument version had
              been added in GCC 4.4; note that the transformational
              functions use a recurrence algorithm.
  
*************** GCC 4.6.4
*** 11518,11524 ****
     provided this notice is preserved.
  
     These pages are [28]maintained by the GCC team. Last modified
!    2021-12-05[29].
  
  References
  
--- 12238,12244 ----
     provided this notice is preserved.
  
     These pages are [28]maintained by the GCC team. Last modified
!    2023-01-18.
  
  References
  
*************** References
*** 11532,11538 ****
     8. https://gcc.gnu.org/PR43145
     9. https://gcc.gnu.org/PR43680
    10. https://gcc.gnu.org/PR33558
!   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
    12. https://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++/manual/manual/status.html#status.iso.200x
    13. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
    14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
--- 12252,12258 ----
     8. https://gcc.gnu.org/PR43145
     9. https://gcc.gnu.org/PR43680
    10. https://gcc.gnu.org/PR33558
!   11. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#253
    12. https://gcc.gnu.org/onlinedocs/gcc-4.6.4/libstdc++/manual/manual/status.html#status.iso.200x
    13. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug_mode.html
    14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/debug.html#debug.races
*************** References
*** 11550,11559 ****
    26. https://gcc.gnu.org/lists.html
    27. https://www.fsf.org/
    28. https://gcc.gnu.org/about.html
-   29. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/index.html
- 
                               GCC 4.5 Release Series
  
     (This release series is no longer supported.)
--- 12270,12277 ----
*************** References and Acknowledgements
*** 11616,11622 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
--- 12334,12340 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 11638,11647 ****
    16. https://gcc.gnu.org/lists.html
    17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
-   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.5/changes.html
- 
                               GCC 4.5 Release Series
                          Changes, New Features, and Fixes
  
--- 12356,12363 ----
*************** New Languages and Language specific impr
*** 11878,11884 ****
         defined ([12]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
!        attribute specifier is followed by a semicolon--i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
       * G++ now implements [13]DR 176. Previously G++ did not support using
--- 12594,12600 ----
         defined ([12]DR 757).
       * Labels may now have attributes, as has been permitted for a while
         in C. This is only permitted when the label definition and the
!        attribute specifier is followed by a semicolon—i.e., the label
         applies to an empty statement. The only useful attribute for a
         label is unused.
       * G++ now implements [13]DR 176. Previously G++ did not support using
*************** vector-size: improvement = 3: call stack
*** 11960,11966 ****
  
    Fortran
  
!      * The COMMON default padding has been changed - instead of adding the
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
--- 12676,12682 ----
  
    Fortran
  
!      * The COMMON default padding has been changed – instead of adding the
         padding before a variable it is now added afterwards, which
         increases the compatibility with other vendors and helps to obtain
         the correct output in some cases. Cf. also the -falign-commons
*************** GCC 4.5.4
*** 12289,12295 ****
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2022-02-02[33].
  
  References
  
--- 13005,13011 ----
     provided this notice is preserved.
  
     These pages are [32]maintained by the GCC team. Last modified
!    2023-01-15.
  
  References
  
*************** References
*** 12304,12311 ****
     9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
    10. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
    11. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
!   12. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
!   13. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
    14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
    15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
    16. https://sourceware.org/gdb/wiki/STLSupport
--- 13020,13027 ----
     9. https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-fwhole-program-800
    10. https://gcc.gnu.org/onlinedocs/gcc/Restricted-Pointers.html
    11. http://gcc.gnu.org/gcc-4.5/cxx0x_status.html
!   12. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#757
!   13. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#176
    14. https://gcc.gnu.org/onlinedocs/libstdc++/manual/profile_mode.html
    15. https://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#status.iso.tr24733
    16. https://sourceware.org/gdb/wiki/STLSupport
*************** References
*** 12325,12334 ****
    30. https://gcc.gnu.org/lists.html
    31. https://www.fsf.org/
    32. https://gcc.gnu.org/about.html
-   33. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/index.html
- 
                               GCC 4.4 Release Series
  
     This release series is no longer maintained.
--- 13041,13048 ----
*************** References and Acknowledgements
*** 12400,12406 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2021-07-28[22].
  
  References
  
--- 13114,13120 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 12425,12434 ****
    19. https://gcc.gnu.org/lists.html
    20. https://www.fsf.org/
    21. https://gcc.gnu.org/about.html
-   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.4/changes.html
- 
                               GCC 4.4 Release Series
                          Changes, New Features, and Fixes
  
--- 13139,13146 ----
*************** GCC 4.4.7
*** 13031,13037 ****
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2021-07-28[24].
  
  References
  
--- 13743,13749 ----
     provided this notice is preserved.
  
     These pages are [23]maintained by the GCC team. Last modified
!    2022-11-01.
  
  References
  
*************** References
*** 13039,13045 ****
     2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
     3. http://gcc.gnu.org/gcc-4.4/porting_to.html
     4. https://gcc.gnu.org/wiki/Graphite
!    5. http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
     6. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
     7. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
     8. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
--- 13751,13757 ----
     2. http://gcc.gnu.org/gcc-4.3/changes.html#obsoleted
     3. http://gcc.gnu.org/gcc-4.4/porting_to.html
     4. https://gcc.gnu.org/wiki/Graphite
!    5. https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1040.pdf
     6. http://gcc.gnu.org/gcc-4.4/cxx0x_status.html
     7. https://gcc.gnu.org/onlinedocs/gfortran/Preprocessing-Options.html
     8. https://gcc.gnu.org/onlinedocs/gfortran/Error-and-Warning-Options.html#index-g_t_0040code_007bWarray-temporaries_007d-125
*************** References
*** 13058,13067 ****
    21. https://gcc.gnu.org/lists.html
    22. https://www.fsf.org/
    23. https://gcc.gnu.org/about.html
-   24. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/index.html
- 
                               GCC 4.3 Release Series
  
     (This release series is no longer supported.)
--- 13770,13777 ----
*************** References and Acknowledgements
*** 13130,13136 ****
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2021-07-28[21].
  
  References
  
--- 13840,13846 ----
     provided this notice is preserved.
  
     These pages are [20]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 13154,13163 ****
    18. https://gcc.gnu.org/lists.html
    19. https://www.fsf.org/
    20. https://gcc.gnu.org/about.html
-   21. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.3/changes.html
- 
                               GCC 4.3 Release Series
                          Changes, New Features, and Fixes
  
--- 13864,13871 ----
*************** GCC 4.3.6
*** 13936,13942 ****
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2021-07-28[31].
  
  References
  
--- 14644,14650 ----
     provided this notice is preserved.
  
     These pages are [30]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 13970,13979 ****
    28. https://gcc.gnu.org/lists.html
    29. https://www.fsf.org/
    30. https://gcc.gnu.org/about.html
-   31. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/index.html
- 
                               GCC 4.2 Release Series
  
     (This release series is no longer supported.)
--- 14678,14685 ----
*************** References and Acknowledgements
*** 14036,14042 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
--- 14742,14748 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 14058,14067 ****
    16. https://gcc.gnu.org/lists.html
    17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
-   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.2/changes.html
- 
                               GCC 4.2 Release Series
                          Changes, New Features, and Fixes
  
--- 14764,14771 ----
*************** Other significant improvements
*** 14365,14371 ****
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2021-07-28[12].
  
  References
  
--- 15069,15075 ----
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 14380,14389 ****
     9. https://gcc.gnu.org/lists.html
    10. https://www.fsf.org/
    11. https://gcc.gnu.org/about.html
-   12. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/index.html
- 
                               GCC 4.1 Release Series
  
     (This release series is no longer supported.)
--- 15084,15091 ----
*************** References and Acknowledgements
*** 14440,14446 ****
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2021-07-28[17].
  
  References
  
--- 15142,15148 ----
     provided this notice is preserved.
  
     These pages are [16]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 14460,14469 ****
    14. https://gcc.gnu.org/lists.html
    15. https://www.fsf.org/
    16. https://gcc.gnu.org/about.html
-   17. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.1/changes.html
- 
                               GCC 4.1 Release Series
                          Changes, New Features, and Fixes
  
--- 15162,15169 ----
*************** GCC 4.1.2
*** 15000,15006 ****
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2021-10-18[12].
  
  References
  
--- 15700,15706 ----
     provided this notice is preserved.
  
     These pages are [11]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 15015,15024 ****
     9. https://gcc.gnu.org/lists.html
    10. https://www.fsf.org/
    11. https://gcc.gnu.org/about.html
-   12. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/index.html
- 
                               GCC 4.0 Release Series
  
     (This release series is no longer supported.)
--- 15715,15722 ----
*************** References and Acknowledgements
*** 15081,15087 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
--- 15779,15785 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 15103,15112 ****
    16. https://gcc.gnu.org/lists.html
    17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
-   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-4.0/changes.html
- 
                               GCC 4.0 Release Series
                          Changes, New Features, and Fixes
  
--- 15801,15808 ----
*************** GCC 4.0.4
*** 15608,15614 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2021-07-28[22].
  
  References
  
--- 16304,16310 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 15633,15642 ****
    19. https://gcc.gnu.org/lists.html
    20. https://www.fsf.org/
    21. https://gcc.gnu.org/about.html
-   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.4/index.html
- 
                               GCC 3.4 Release Series
  
     (This release series is no longer supported.)
--- 16329,16336 ----
*************** References and Acknowledgements
*** 15710,15716 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2021-07-28[23].
  
  References
  
--- 16404,16410 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 15736,15745 ****
    20. https://gcc.gnu.org/lists.html
    21. https://www.fsf.org/
    22. https://gcc.gnu.org/about.html
-   23. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.4/changes.html
- 
                               GCC 3.4 Release Series
                          Changes, New Features, and Fixes
  
--- 16430,16437 ----
*************** GCC 3.4.6
*** 17499,17505 ****
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2021-07-28[417].
  
  References
  
--- 18191,18197 ----
     provided this notice is preserved.
  
     These pages are [416]maintained by the GCC team. Last modified
!    2023-01-27.
  
  References
  
*************** References
*** 17512,17525 ****
     7. https://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other%20Builtins
!   11. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
    12. http://gcc.gnu.org/bugs/#cxx_rvalbind
    13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
    14. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
    15. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
    16. http://www.gnu.org/software/classpath/
!   17. http://www.eclipse.org/
    18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
    19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
    20. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
--- 18204,18217 ----
     7. https://www.boost.org/
     8. https://gcc.gnu.org/PR11953
     9. https://gcc.gnu.org/PR8361
!   10. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Other-Builtins.html#Other Builtins
!   11. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_closed.html#209
    12. http://gcc.gnu.org/bugs/#cxx_rvalbind
    13. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
    14. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
    15. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Objective-C-Dialect-Options.html
    16. http://www.gnu.org/software/classpath/
!   17. https://www.eclipse.org/
    18. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/g77/News.html
    19. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gcc/Alpha-Built-in-Functions.html
    20. https://gcc.gnu.org/onlinedocs/gcc-3.4.3/gccint/Processor-pipeline-description.html
*************** References
*** 17528,17534 ****
    23. http://gcc.gnu.org/gcc-3.4/mips-abi.html
    24. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
    25. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=%5C%5B3%5C.4.*%5BRr%5Degression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
    27. https://gcc.gnu.org/PR10129
    28. https://gcc.gnu.org/PR14576
    29. https://gcc.gnu.org/PR14760
--- 18220,18226 ----
    23. http://gcc.gnu.org/gcc-3.4/mips-abi.html
    24. http://gcc.gnu.org/gcc-3.4/powerpc-abi.html
    25. http://gcc.gnu.org/gcc-3.4/sparc-abi.html
!   26. https://gcc.gnu.org/bugzilla/buglist.cgi?short_desc_type=notregexp&short_desc=\[3\.4.*[Rr]egression&target_milestone=3.4.0&bug_status=RESOLVED&resolution=FIXED
    27. https://gcc.gnu.org/PR10129
    28. https://gcc.gnu.org/PR14576
    29. https://gcc.gnu.org/PR14760
*************** References
*** 17919,17928 ****
   414. https://gcc.gnu.org/lists.html
   415. https://www.fsf.org/
   416. https://gcc.gnu.org/about.html
-  417. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/index.html
- 
                               GCC 3.3 Release Series
  
     (This release series is no longer supported.)
--- 18611,18618 ----
*************** References and Acknowledgements
*** 17996,18002 ****
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2021-07-28[22].
  
  References
  
--- 18686,18692 ----
     provided this notice is preserved.
  
     These pages are [21]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 18021,18030 ****
    19. https://gcc.gnu.org/lists.html
    20. https://www.fsf.org/
    21. https://gcc.gnu.org/about.html
-   22. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.3/changes.html
- 
                               GCC 3.3 Release Series
                          Changes, New Features, and Fixes
  
--- 18711,18718 ----
*************** GCC 3.3.6
*** 19372,19378 ****
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2021-07-28[557].
  
  References
  
--- 20060,20066 ----
     provided this notice is preserved.
  
     These pages are [556]maintained by the GCC team. Last modified
!    2023-01-19.
  
  References
  
*************** References
*** 19489,19495 ****
   111. https://gcc.gnu.org/PR9439
   112. https://gcc.gnu.org/PR9474
   113. https://gcc.gnu.org/PR9548
!  114. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
   115. https://gcc.gnu.org/PR9555
   116. https://gcc.gnu.org/PR9561
   117. https://gcc.gnu.org/PR9563
--- 20177,20183 ----
   111. https://gcc.gnu.org/PR9439
   112. https://gcc.gnu.org/PR9474
   113. https://gcc.gnu.org/PR9548
!  114. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#231
   115. https://gcc.gnu.org/PR9555
   116. https://gcc.gnu.org/PR9561
   117. https://gcc.gnu.org/PR9563
*************** References
*** 19833,19839 ****
   455. https://gcc.gnu.org/PR9546
   456. https://gcc.gnu.org/PR10081
   457. https://gcc.gnu.org/PR10093
!  458. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
   459. https://gcc.gnu.org/PR10095
   460. https://gcc.gnu.org/PR11554
   461. https://gcc.gnu.org/PR12297
--- 20521,20527 ----
   455. https://gcc.gnu.org/PR9546
   456. https://gcc.gnu.org/PR10081
   457. https://gcc.gnu.org/PR10093
!  458. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#61
   459. https://gcc.gnu.org/PR10095
   460. https://gcc.gnu.org/PR11554
   461. https://gcc.gnu.org/PR12297
*************** References
*** 19841,19858 ****
   463. https://gcc.gnu.org/PR12438
   464. https://gcc.gnu.org/PR12540
   465. https://gcc.gnu.org/PR12594
!  466. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
!  467. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
   468. https://gcc.gnu.org/PR12657
!  469. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
   470. https://gcc.gnu.org/PR12696
   471. https://gcc.gnu.org/PR12815
   472. https://gcc.gnu.org/PR12862
   473. https://gcc.gnu.org/PR12926
   474. https://gcc.gnu.org/PR12967
!  475. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
   476. https://gcc.gnu.org/PR12971
!  477. http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
   478. https://gcc.gnu.org/PR13007
   479. https://gcc.gnu.org/PR13009
   480. https://gcc.gnu.org/PR13057
--- 20529,20546 ----
   463. https://gcc.gnu.org/PR12438
   464. https://gcc.gnu.org/PR12540
   465. https://gcc.gnu.org/PR12594
!  466. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#60
!  467. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#63
   468. https://gcc.gnu.org/PR12657
!  469. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#292
   470. https://gcc.gnu.org/PR12696
   471. https://gcc.gnu.org/PR12815
   472. https://gcc.gnu.org/PR12862
   473. https://gcc.gnu.org/PR12926
   474. https://gcc.gnu.org/PR12967
!  475. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html
   476. https://gcc.gnu.org/PR12971
!  477. https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#328
   478. https://gcc.gnu.org/PR13007
   479. https://gcc.gnu.org/PR13009
   480. https://gcc.gnu.org/PR13057
*************** References
*** 19932,19941 ****
   554. https://gcc.gnu.org/lists.html
   555. https://www.fsf.org/
   556. https://gcc.gnu.org/about.html
-  557. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.2/index.html
- 
                               GCC 3.2 Release Series
  
     (This release series is no longer supported.)
--- 20620,20627 ----
*************** References and Acknowledgements
*** 20003,20009 ****
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2021-07-28[18].
  
  References
  
--- 20689,20695 ----
     provided this notice is preserved.
  
     These pages are [17]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 20024,20033 ****
    15. https://gcc.gnu.org/lists.html
    16. https://www.fsf.org/
    17. https://gcc.gnu.org/about.html
-   18. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.2/changes.html
- 
                               GCC 3.2 Release Series
                          Changes, New Features, and Fixes
  
--- 20710,20717 ----
*************** GCC 3.2
*** 20627,20633 ****
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2021-07-28[252].
  
  References
  
--- 21311,21317 ----
     provided this notice is preserved.
  
     These pages are [251]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 20882,20891 ****
   249. https://gcc.gnu.org/lists.html
   250. https://www.fsf.org/
   251. https://gcc.gnu.org/about.html
-  252. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.1/index.html
- 
                                      GCC 3.1
  
     (This release series is no longer supported.)
--- 21566,21573 ----
*************** http://gcc.gnu.org/gcc-3.1/index.html
*** 20933,20939 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2021-07-28[15].
  
  References
  
--- 21615,21621 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 20951,20960 ****
    12. https://gcc.gnu.org/lists.html
    13. https://www.fsf.org/
    14. https://gcc.gnu.org/about.html
-   15. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.1/changes.html
- 
                               GCC 3.1 Release Series
                          Changes, New Features, and Fixes
  
--- 21633,21640 ----
*************** New Targets and Target Specific Improvem
*** 21172,21178 ****
            + For those targets that support it, -mfpmath=sse will cause the
              compiler to generate SSE/SSE2 instructions for floating point
              math instead of x87 instructions. Usually, this will lead to
!             quicker code -- especially on the Pentium 4. Note that only
              scalar floating point instructions are used and GCC does not
              exploit SIMD features yet.
            + Prefetch support has been added to the Pentium III, Pentium 4,
--- 21852,21858 ----
            + For those targets that support it, -mfpmath=sse will cause the
              compiler to generate SSE/SSE2 instructions for floating point
              math instead of x87 instructions. Usually, this will lead to
!             quicker code — especially on the Pentium 4. Note that only
              scalar floating point instructions are used and GCC does not
              exploit SIMD features yet.
            + Prefetch support has been added to the Pentium III, Pentium 4,
*************** Documentation improvements
*** 21288,21294 ****
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2021-07-28[14].
  
  References
  
--- 21968,21974 ----
     provided this notice is preserved.
  
     These pages are [13]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 21305,21314 ****
    11. https://gcc.gnu.org/lists.html
    12. https://www.fsf.org/
    13. https://gcc.gnu.org/about.html
-   14. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/index.html
- 
                                     GCC 3.0.4
  
     (This release series is no longer supported.)
--- 21985,21992 ----
*************** Previous 3.0.x Releases
*** 21363,21369 ****
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2021-07-28[15].
  
  References
  
--- 22041,22047 ----
     provided this notice is preserved.
  
     These pages are [14]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 21381,21390 ****
    12. https://gcc.gnu.org/lists.html
    13. https://www.fsf.org/
    14. https://gcc.gnu.org/about.html
-   15. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/features.html
- 
                                GCC 3.0 New Features
  
  Additional changes in GCC 3.0.4
--- 22059,22066 ----
*************** Other significant improvements
*** 21555,21561 ****
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2021-07-28[19].
  
  References
  
--- 22231,22237 ----
     provided this notice is preserved.
  
     These pages are [18]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 21577,21586 ****
    16. https://gcc.gnu.org/lists.html
    17. https://www.fsf.org/
    18. https://gcc.gnu.org/about.html
-   19. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-3.0/caveats.html
- 
                                  GCC 3.0 Caveats
  
       * -fstrict-aliasing is now part of -O2 and higher optimization
--- 22253,22260 ----
*************** http://gcc.gnu.org/gcc-3.0/caveats.html
*** 21627,21633 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2021-07-28[8].
  
  References
  
--- 22301,22307 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 21638,21647 ****
     5. https://gcc.gnu.org/lists.html
     6. https://www.fsf.org/
     7. https://gcc.gnu.org/about.html
-    8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/index.html
- 
                                      GCC 2.95
  
     (This release series is no longer supported.)
--- 22312,22319 ----
*************** References and Acknowledgements
*** 21710,21716 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2021-07-28[16].
  
  References
  
--- 22382,22388 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 21729,21738 ****
    13. https://gcc.gnu.org/lists.html
    14. https://www.fsf.org/
    15. https://gcc.gnu.org/about.html
-   16. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/features.html
- 
                               GCC 2.95 New Features
  
       * General Optimizer Improvements:
--- 22401,22408 ----
*************** Additional Changes in GCC 2.95.3
*** 21976,21982 ****
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2021-07-28[23].
  
  References
  
--- 22646,22652 ----
     provided this notice is preserved.
  
     These pages are [22]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 22002,22011 ****
    20. https://gcc.gnu.org/lists.html
    21. https://www.fsf.org/
    22. https://gcc.gnu.org/about.html
-   23. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/gcc-2.95/caveats.html
- 
                                  GCC 2.95 Caveats
  
       * GCC 2.95 will issue an error for invalid asm statements that had
--- 22672,22679 ----
*************** http://gcc.gnu.org/gcc-2.95/caveats.html
*** 22060,22066 ****
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2021-07-28[8].
  
  References
  
--- 22728,22734 ----
     provided this notice is preserved.
  
     These pages are [7]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 22071,22080 ****
     5. https://gcc.gnu.org/lists.html
     6. https://www.fsf.org/
     7. https://gcc.gnu.org/about.html
-    8. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/index.html
- 
                                      EGCS 1.1
  
     September 3, 1998: We are pleased to announce the release of EGCS 1.1.
--- 22739,22746 ----
*************** http://gcc.gnu.org/egcs-1.1/index.html
*** 22282,22288 ****
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2021-07-28[16].
  
  References
  
--- 22948,22954 ----
     provided this notice is preserved.
  
     These pages are [15]maintained by the GCC team. Last modified
!    2023-01-21.
  
  References
  
*************** References
*** 22301,22310 ****
    13. https://gcc.gnu.org/lists.html
    14. https://www.fsf.org/
    15. https://gcc.gnu.org/about.html
-   16. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/features.html
- 
                               EGCS 1.1 new features
  
       * Integrated GNU Fortran (g77) compiler and runtime library with
--- 22967,22974 ----
*************** http://gcc.gnu.org/egcs-1.1/features.htm
*** 22382,22388 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2021-07-28[11].
  
  References
  
--- 23046,23052 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 22396,22405 ****
     8. https://gcc.gnu.org/lists.html
     9. https://www.fsf.org/
    10. https://gcc.gnu.org/about.html
-   11. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.1/caveats.html
- 
                                  EGCS 1.1 Caveats
  
       * EGCS has an integrated libstdc++, but does not have an integrated
--- 23060,23067 ----
*************** http://gcc.gnu.org/egcs-1.1/caveats.html
*** 22437,22443 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2021-07-28[7].
  
  References
  
--- 23099,23105 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 22447,22456 ****
     4. https://gcc.gnu.org/lists.html
     5. https://www.fsf.org/
     6. https://gcc.gnu.org/about.html
-    7. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/index.html
- 
                                      EGCS 1.0
  
     December 3, 1997: We are pleased to announce the release of EGCS 1.0.
--- 23109,23116 ----
*************** http://gcc.gnu.org/egcs-1.0/index.html
*** 22634,22640 ****
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2021-07-28[11].
  
  References
  
--- 23294,23300 ----
     provided this notice is preserved.
  
     These pages are [10]maintained by the GCC team. Last modified
!    2023-01-21.
  
  References
  
*************** References
*** 22648,22657 ****
     8. https://gcc.gnu.org/lists.html
     9. https://www.fsf.org/
    10. https://gcc.gnu.org/about.html
-   11. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/features.html
- 
                                 EGCS 1.0 features
  
       * Core compiler is based on the gcc2 development tree from Aug 2,
--- 23308,23315 ----
*************** http://gcc.gnu.org/egcs-1.0/features.htm
*** 22701,22707 ****
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2021-07-28[9].
  
  References
  
--- 23359,23365 ----
     provided this notice is preserved.
  
     These pages are [8]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 22713,22722 ****
     6. https://gcc.gnu.org/lists.html
     7. https://www.fsf.org/
     8. https://gcc.gnu.org/about.html
-    9. http://validator.w3.org/check/referer
  ======================================================================
  http://gcc.gnu.org/egcs-1.0/caveats.html
- 
                                  EGCS 1.0 Caveats
  
       * EGCS has an integrated libstdc++, but does not have an integrated
--- 23371,23378 ----
*************** http://gcc.gnu.org/egcs-1.0/caveats.html
*** 22755,22761 ****
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2021-07-28[7].
  
  References
  
--- 23411,23417 ----
     provided this notice is preserved.
  
     These pages are [6]maintained by the GCC team. Last modified
!    2022-10-26.
  
  References
  
*************** References
*** 22765,22769 ****
     4. https://gcc.gnu.org/lists.html
     5. https://www.fsf.org/
     6. https://gcc.gnu.org/about.html
-    7. http://validator.w3.org/check/referer
  ======================================================================
--- 23421,23424 ----
diff -Nrcpad gcc-12.2.0/c++tools/ChangeLog gcc-13.1.0/c++tools/ChangeLog
*** gcc-12.2.0/c++tools/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/c++tools/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-03-18  Iain Sandoe  <iain@sandoe.co.uk>
  
--- 1,53 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-03-31  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR bootstrap/101834
! 	* Makefile.in (INSTALL): Set variable.
! 	(mostlyclean): Mark as a phony target.
! 	(clean): Add mostlyclean as a prerequisite.
! 	(distclean): Add clean as a prerequisite and remove more files.
! 	(maintainer-clean): Add distclean as a prerequisite.
! 
! 2023-01-09  John David Anglin  <danglin@gcc.gnu.org>
! 
! 	PR other/107616
! 	* server.cc (server): Don't call FD_ISSET when HAVE_PSELECT
! 	and HAVE_SELECT are zero.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	Revert:
! 	2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* Makefile.in: Rename PIEFLAG to PICFLAG.  Set LD_PICFLAG.  Use it.
! 	Use pic/libiberty.a if PICFLAG is set.
! 	* configure.ac (--enable-default-pie): Set PICFLAG instead of PIEFLAG.
! 	(--enable-host-pie): New check.
! 	* configure: Regenerate.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	Revert:
! 	2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* configure.ac (--enable-host-bind-now): New check.
! 	* configure: Regenerate.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* configure.ac (--enable-host-bind-now): New check.
! 	* configure: Regenerate.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* Makefile.in: Rename PIEFLAG to PICFLAG.  Set LD_PICFLAG.  Use it.
! 	Use pic/libiberty.a if PICFLAG is set.
! 	* configure.ac (--enable-default-pie): Set PICFLAG instead of PIEFLAG.
! 	(--enable-host-pie): New check.
! 	* configure: Regenerate.
  
  2022-03-18  Iain Sandoe  <iain@sandoe.co.uk>
  
***************
*** 146,152 ****
  	* server.cc: New.
  
  
! Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 189,195 ----
  	* server.cc: New.
  
  
! Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/c++tools/Makefile.in gcc-13.1.0/c++tools/Makefile.in
*** gcc-12.2.0/c++tools/Makefile.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/c++tools/Makefile.in	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Makefile for c++tools
! #   Copyright (C) 2020-2022 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 1,5 ----
  # Makefile for c++tools
! #   Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
*************** libexecdir := @libexecdir@
*** 22,27 ****
--- 22,28 ----
  target_noncanonical := @target_noncanonical@
  gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER)
  libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version)
+ INSTALL := @INSTALL@
  INSTALL_PROGRAM := @INSTALL_PROGRAM@
  INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s
  AUTOCONF := @AUTOCONF@
*************** all::
*** 41,53 ****
  mostlyclean::
  	rm -f $(MAPPER.O)
  
! clean::
  	rm -f g++-mapper-server$(exeext)
  
! distclean::
! 	rm -f config.log config.status config.h
  
! maintainer-clean::
  
  install::
  
--- 42,55 ----
  mostlyclean::
  	rm -f $(MAPPER.O)
  
! clean:: mostlyclean
  	rm -f g++-mapper-server$(exeext)
  
! distclean:: clean
! 	rm -f config.log config.status config.h config.cache Makefile
! 	rm -f $(MAPPER.O:%.o=%.d)
  
! maintainer-clean:: distclean
  
  install::
  
*************** config.h: config.status config.h.in
*** 132,137 ****
  config.status: $(srcdir)/configure $(srcdir)/config.h.in
  	if test -x $@; then ./$@ -recheck; else $< @configure_args@; fi
  
! .PHONY: all check clean distclean maintainer-clean
  
  -include $(MAPPER.O:.o=.d)
--- 134,139 ----
  config.status: $(srcdir)/configure $(srcdir)/config.h.in
  	if test -x $@; then ./$@ -recheck; else $< @configure_args@; fi
  
! .PHONY: all check mostlyclean clean distclean maintainer-clean
  
  -include $(MAPPER.O:.o=.d)
diff -Nrcpad gcc-12.2.0/c++tools/configure.ac gcc-13.1.0/c++tools/configure.ac
*** gcc-12.2.0/c++tools/configure.ac	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/c++tools/configure.ac	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Configure script for c++tools
! #   Copyright (C) 2020-2022 Free Software Foundation, Inc.
  #   Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  #
  # This file is free software; you can redistribute it and/or modify it
--- 1,5 ----
  # Configure script for c++tools
! #   Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #   Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  #
  # This file is free software; you can redistribute it and/or modify it
diff -Nrcpad gcc-12.2.0/c++tools/resolver.cc gcc-13.1.0/c++tools/resolver.cc
*** gcc-12.2.0/c++tools/resolver.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/c++tools/resolver.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C++ modules.  Experimental!	-*- c++ -*-
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  
     This file is part of GCC.
--- 1,5 ----
  /* C++ modules.  Experimental!	-*- c++ -*-
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/c++tools/resolver.h gcc-13.1.0/c++tools/resolver.h
*** gcc-12.2.0/c++tools/resolver.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/c++tools/resolver.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C++ modules.  Experimental!	-*- c++ -*-
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  
     This file is part of GCC.
--- 1,5 ----
  /* C++ modules.  Experimental!	-*- c++ -*-
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/c++tools/server.cc gcc-13.1.0/c++tools/server.cc
*** gcc-12.2.0/c++tools/server.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/c++tools/server.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C++ modules.  Experimental!
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  
     This file is part of GCC.
--- 1,5 ----
  /* C++ modules.  Experimental!
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Written by Nathan Sidwell <nathan@acm.org> while at FaceBook
  
     This file is part of GCC.
*************** static void ATTRIBUTE_NORETURN
*** 319,325 ****
  print_version (void)
  {
    fnotice (stdout, "%s %s%s\n", progname, pkgversion_string, version_string);
!   fprintf (stdout, "Copyright %s 2018-2022 Free Software Foundation, Inc.\n",
  	   ("(C)"));
    fnotice (stdout,
  	   ("This is free software; see the source for copying conditions.\n"
--- 319,325 ----
  print_version (void)
  {
    fnotice (stdout, "%s %s%s\n", progname, pkgversion_string, version_string);
!   fprintf (stdout, "Copyright %s 2018-2023 Free Software Foundation, Inc.\n",
  	   ("(C)"));
    fnotice (stdout,
  	   ("This is free software; see the source for copying conditions.\n"
*************** server (bool ipv6, int sock_fd, module_r
*** 753,760 ****
--- 753,762 ----
  		      }
  		  }
  
+ #if defined (HAVE_PSELECT) || defined (HAVE_SELECT)
  	      if (active < 0 && sock_fd >= 0 && FD_ISSET (sock_fd, &readers))
  		active = -1;
+ #endif
  	    }
  
  	  if (active >= 0)
diff -Nrcpad gcc-12.2.0/config/ChangeLog gcc-13.1.0/config/ChangeLog
*** gcc-12.2.0/config/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/config/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
  	    Lulu Cheng  <chenglulu@loongson.cn>
--- 1,45 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2022-11-14  Martin Liska  <mliska@suse.cz>
  
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* acx.m4: Do not wrap REPORT_BUGS_TO.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* acx.m4: Do not wrap REPORT_BUGS_TO.
! 
! 2022-10-19  LIU Hao  <lh_mouse@126.com>
! 
! 	* gthr.m4 (GCC_AC_THREAD_HEADER): Add new case for `mcf` thread
! 	model
! 
! 2022-08-31  Martin Liska  <mliska@suse.cz>
! 
! 	* mh-pa-hpux10: Removed.
! 
! 2022-08-01  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Arnaud Charlet  <charlet@adacore.com>
! 
! 	* acx.m4 (AC_PROG_GNAT): Update conftest.adb to include
! 	features required of the host gnat compiler.
! 
! 2022-06-01  David Seifert  <soap@gentoo.org>
! 
! 	PR plugins/95648
! 	* gcc-plugin.m4: Use libtool's $ac_cv_prog_OBJDUMP.
! 
! 2022-05-20  Christophe Lyon  <christophe.lyon@arm.com>
! 
! 	* dfp.m4: Add aarch64 support.
! 
! 2022-05-03  Christophe Lyon  <christophe.lyon@arm.com>
! 
! 	* dfp.m4: Add license header.
  
  2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
  	    Lulu Cheng  <chenglulu@loongson.cn>
diff -Nrcpad gcc-12.2.0/config/acx.m4 gcc-13.1.0/config/acx.m4
*** gcc-12.2.0/config/acx.m4	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/config/acx.m4	Wed Apr 26 07:09:39 2023
*************** AC_DEFUN([ACX_PROG_GNAT],
*** 393,401 ****
  AC_REQUIRE([AC_PROG_CC])
  AC_CHECK_TOOL(GNATBIND, gnatbind, no)
  AC_CHECK_TOOL(GNATMAKE, gnatmake, no)
! AC_CACHE_CHECK([whether compiler driver understands Ada],
  		 acx_cv_cc_gcc_supports_ada,
  [cat >conftest.adb <<EOF
  procedure conftest is begin null; end conftest;
  EOF
  acx_cv_cc_gcc_supports_ada=no
--- 393,405 ----
  AC_REQUIRE([AC_PROG_CC])
  AC_CHECK_TOOL(GNATBIND, gnatbind, no)
  AC_CHECK_TOOL(GNATMAKE, gnatmake, no)
! AC_CACHE_CHECK([whether compiler driver understands Ada and is recent enough],
  		 acx_cv_cc_gcc_supports_ada,
  [cat >conftest.adb <<EOF
+ pragma Warnings (Off);
+ with System.CRTL;
+ pragma Warnings (On);
+ use type System.CRTL.int64;
  procedure conftest is begin null; end conftest;
  EOF
  acx_cv_cc_gcc_supports_ada=no
diff -Nrcpad gcc-12.2.0/config/dfp.m4 gcc-13.1.0/config/dfp.m4
*** gcc-12.2.0/config/dfp.m4	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/config/dfp.m4	Wed Apr 26 07:09:39 2023
***************
*** 1,3 ****
--- 1,21 ----
+ # Copyright (C) 2010-2022 Free Software Foundation, Inc.
+ 
+ # This file is part of GCC.
+ 
+ # GCC is free software; you can redistribute it and/or modify it under
+ # the terms of the GNU General Public License as published by the Free
+ # Software Foundation; either version 3, or (at your option) any
+ # later version.
+ 
+ # GCC is distributed in the hope that it will be useful, but WITHOUT
+ # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+ # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+ # License for more details.
+ 
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
  dnl @synopsis GCC_AC_ENABLE_DECIMAL_FLOAT([target triplet])
  dnl
  dnl Enable C extension for decimal float if target supports it.
*************** Valid choices are 'yes', 'bid', 'dpd', a
*** 20,25 ****
--- 38,44 ----
  ],
  [
    case $1 in
+     aarch64* | \
      powerpc*-*-linux* | i?86*-*-linux* | x86_64*-*-linux* | s390*-*-linux* | \
      i?86*-*-elfiamcu | i?86*-*-gnu* | x86_64*-*-gnu* | \
      i?86*-*-mingw* | x86_64*-*-mingw* | \
*************** Valid choices are 'yes', 'bid', 'dpd', a
*** 37,43 ****
  case x$enable_decimal_float in
    xyes)
      case $1 in
!       i?86*-*-* | x86_64*-*-*)
  	enable_decimal_float=bid
  	;;
        *)
--- 56,62 ----
  case x$enable_decimal_float in
    xyes)
      case $1 in
!       aarch64* | i?86*-*-* | x86_64*-*-*)
  	enable_decimal_float=bid
  	;;
        *)
diff -Nrcpad gcc-12.2.0/config/gcc-plugin.m4 gcc-13.1.0/config/gcc-plugin.m4
*** gcc-12.2.0/config/gcc-plugin.m4	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/config/gcc-plugin.m4	Wed Apr 26 07:09:39 2023
*************** AC_DEFUN([GCC_ENABLE_PLUGINS],
*** 45,51 ****
       ;;
       *)
         if test x$build = x$host; then
! 	 export_sym_check="objdump${exeext} -T"
         elif test x$host = x$target; then
  	 export_sym_check="$gcc_cv_objdump -T"
         else
--- 45,51 ----
       ;;
       *)
         if test x$build = x$host; then
! 	 export_sym_check="$ac_cv_prog_OBJDUMP -T"
         elif test x$host = x$target; then
  	 export_sym_check="$gcc_cv_objdump -T"
         else
diff -Nrcpad gcc-12.2.0/config/gthr.m4 gcc-13.1.0/config/gthr.m4
*** gcc-12.2.0/config/gthr.m4	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/config/gthr.m4	Wed Apr 26 07:09:39 2023
*************** case $1 in
*** 22,27 ****
--- 22,28 ----
      tpf)	thread_header=config/s390/gthr-tpf.h ;;
      vxworks)	thread_header=config/gthr-vxworks.h ;;
      win32)	thread_header=config/i386/gthr-win32.h ;;
+     mcf)	thread_header=config/i386/gthr-mcf.h ;;
  esac
  AC_SUBST(thread_header)
  ])
diff -Nrcpad gcc-12.2.0/config/mh-pa-hpux10 gcc-13.1.0/config/mh-pa-hpux10
*** gcc-12.2.0/config/mh-pa-hpux10	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/config/mh-pa-hpux10	Thu Jan  1 00:00:00 1970
***************
*** 1,4 ****
- # The ada virtual array implementation requires that indexing be disabled on
- # hosts such as hpux that use a segmented memory architecture.  Both the c
- # and ada files need to be compiled with this option for correct operation.
- ADA_CFLAGS = -mdisable-indexing -D_X_HPUX10
--- 0 ----
diff -Nrcpad gcc-12.2.0/configure gcc-13.1.0/configure
*** gcc-12.2.0/configure	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/configure	Wed Apr 26 07:09:39 2023
*************** DSYMUTIL_FOR_TARGET
*** 613,618 ****
--- 613,619 ----
  DLLTOOL_FOR_TARGET
  AS_FOR_TARGET
  AR_FOR_TARGET
+ GM2_FOR_TARGET
  GDC_FOR_TARGET
  GOC_FOR_TARGET
  GFORTRAN_FOR_TARGET
*************** get_gcc_base_ver
*** 685,690 ****
--- 686,692 ----
  extra_host_zlib_configure_flags
  extra_host_libiberty_configure_flags
  stage1_languages
+ host_libs_picflag
  host_shared
  extra_linker_plugin_flags
  extra_linker_plugin_configure_flags
*************** CPPFLAGS
*** 719,725 ****
  LDFLAGS
  CFLAGS
  CC
- extra_liboffloadmic_configure_flags
  target_subdir
  host_subdir
  build_subdir
--- 721,726 ----
*************** enable_compressed_debug_sections
*** 803,811 ****
  enable_libquadmath
  enable_libquadmath_support
  enable_libada
  enable_libssp
  enable_libstdcxx
- enable_liboffloadmic
  enable_bootstrap
  enable_pgo_build
  with_mpc
--- 804,812 ----
  enable_libquadmath
  enable_libquadmath_support
  enable_libada
+ enable_libgm2
  enable_libssp
  enable_libstdcxx
  enable_bootstrap
  enable_pgo_build
  with_mpc
*************** GCC_FOR_TARGET
*** 881,886 ****
--- 882,888 ----
  GFORTRAN_FOR_TARGET
  GOC_FOR_TARGET
  GDC_FOR_TARGET
+ GM2_FOR_TARGET
  AR_FOR_TARGET
  AS_FOR_TARGET
  DLLTOOL_FOR_TARGET
*************** Optional Features:
*** 1541,1550 ****
    --disable-libquadmath-support
                            disable libquadmath support for Fortran
    --enable-libada         build libada directory
    --enable-libssp         build libssp directory
    --disable-libstdcxx     do not build libstdc++-v3 directory
-   --enable-liboffloadmic=ARG
-                           build liboffloadmic [ARG={no,host,target}]
    --enable-bootstrap      enable bootstrapping [yes if native build]
    --enable-pgo-build[=lto]
                            enable the PGO build
--- 1543,1551 ----
    --disable-libquadmath-support
                            disable libquadmath support for Fortran
    --enable-libada         build libada directory
+   --enable-libgm2         build libgm2 directory
    --enable-libssp         build libssp directory
    --disable-libstdcxx     do not build libstdc++-v3 directory
    --enable-bootstrap      enable bootstrapping [yes if native build]
    --enable-pgo-build[=lto]
                            enable the PGO build
*************** Some influential environment variables:
*** 1677,1682 ****
--- 1678,1685 ----
                GOC for the target
    GDC_FOR_TARGET
                GDC for the target
+   GM2_FOR_TARGET
+               GM2 for the target
    AR_FOR_TARGET
                AR for the target
    AS_FOR_TARGET
*************** build_tools="build-texinfo build-flex bu
*** 2807,2813 ****
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
--- 2810,2816 ----
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libiconv libctf libsframe"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
*************** host_libs="intl libiberty opcodes bfd re
*** 2815,2821 ****
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools c++tools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
--- 2818,2824 ----
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
*************** target_libraries="target-libgcc \
*** 2825,2831 ****
  		target-libgloss \
  		target-newlib \
  		target-libgomp \
- 		target-liboffloadmic \
  		target-libatomic \
  		target-libitm \
  		target-libstdc++-v3 \
--- 2828,2833 ----
*************** target_libraries="target-libgcc \
*** 2837,2842 ****
--- 2839,2845 ----
  		target-libffi \
  		target-libobjc \
  		target-libada \
+ 		target-libgm2 \
  		target-libgo \
  		target-libphobos \
  		target-zlib"
*************** if test x$with_system_zlib = xyes ; then
*** 2946,2951 ****
--- 2949,2960 ----
    noconfigdirs="$noconfigdirs zlib"
  fi
  
+ # Don't compile the bundled readline/libreadline.a if --with-system-readline
+ # is provided.
+ if test x$with_system_readline = xyes ; then
+   noconfigdirs="$noconfigdirs readline"
+ fi
+ 
  # some tools are so dependent upon X11 that if we're not building with X,
  # it's not even worth trying to configure, much less build, that tool.
  
*************** case "${ENABLE_GOLD}" in
*** 3056,3062 ****
        # Check for target supported by gold.
        case "${target}" in
          i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
!         | aarch64*-*-* | tilegx*-*-* | mips*-*-* | s390*-*-* | loongarch*-*-*)
  	  configdirs="$configdirs gold"
  	  if test x${ENABLE_GOLD} = xdefault; then
  	    default_ld=gold
--- 3065,3071 ----
        # Check for target supported by gold.
        case "${target}" in
          i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
!         | aarch64*-*-* | mips*-*-* | s390*-*-* | loongarch*-*-*)
  	  configdirs="$configdirs gold"
  	  if test x${ENABLE_GOLD} = xdefault; then
  	    default_ld=gold
*************** if test "${ENABLE_LIBADA}" != "yes" ; th
*** 3174,3179 ****
--- 3183,3199 ----
    noconfigdirs="$noconfigdirs gnattools"
  fi
  
+ # Check whether --enable-libgm2 was given.
+ if test "${enable_libgm2+set}" = set; then :
+   enableval=$enable_libgm2; ENABLE_LIBGM2=$enableval
+ else
+   ENABLE_LIBGM2=no
+ fi
+ 
+ if test "${ENABLE_LIBGM2}" != "yes" ; then
+   noconfigdirs="$noconfigdirs gm2tools"
+ fi
+ 
  # Check whether --enable-libssp was given.
  if test "${enable_libssp+set}" = set; then :
    enableval=$enable_libssp; ENABLE_LIBSSP=$enableval
*************** if test "${ENABLE_LIBSTDCXX}" = "no" ; t
*** 3193,3236 ****
    noconfigdirs="$noconfigdirs target-libstdc++-v3"
  fi
  
- # If this is accelerator compiler and its target is intelmic we enable
- # target liboffloadmic by default.  If this is compiler with offloading
- # for intelmic we enable host liboffloadmic by default.  Otherwise
- # liboffloadmic is disabled by default.
- # Check whether --enable-liboffloadmic was given.
- if test "${enable_liboffloadmic+set}" = set; then :
-   enableval=$enable_liboffloadmic; case "$enableval" in
-   no | host | target)
-     enable_liboffloadmic=$enableval ;;
-   *)
-     as_fn_error $? "--enable-liboffloadmic=no/host/target" "$LINENO" 5 ;;
- esac
- else
-   if test x"$enable_as_accelerator_for" != x; then
-   case "${target}" in
-     *-intelmic-* | *-intelmicemul-*)
-       enable_liboffloadmic=target
-       extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target"
-       ;;
-     *)
-       enable_liboffloadmic=no
-       ;;
-   esac
- else
-   case "${enable_offload_targets}" in
-     *-intelmic-* | *-intelmicemul-*)
-       enable_liboffloadmic=host
-       extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host"
-       ;;
-     *)
-       enable_liboffloadmic=no
-       ;;
-     esac
- fi
- fi
- 
- 
- 
  # Enable libgomp by default on hosted POSIX systems, and a few others.
  if test x$enable_libgomp = x ; then
      case "${target}" in
--- 3213,3218 ----
*************** $as_echo "yes" >&6; }
*** 3269,3293 ****
      fi
  fi
  
- # Disable liboffloadmic on unsupported systems.
- if test -d ${srcdir}/liboffloadmic; then
-     if test x$enable_liboffloadmic != xno; then
- 	{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for liboffloadmic support" >&5
- $as_echo_n "checking for liboffloadmic support... " >&6; }
- 	if (srcdir=${srcdir}/liboffloadmic; \
- 		. ${srcdir}/configure.tgt; \
- 		test -n "$UNSUPPORTED")
- 	then
- 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
- $as_echo "no" >&6; }
- 	    noconfigdirs="$noconfigdirs target-liboffloadmic"
- 	else
- 	    { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
- $as_echo "yes" >&6; }
- 	fi
-     fi
- fi
- 
  # Disable libitm on unsupported systems.
  if test -d ${srcdir}/libitm; then
      if test x$enable_libitm = x; then
--- 3251,3256 ----
*************** case "${target}" in
*** 3544,3554 ****
    hppa*64*-*-hpux*)
      noconfigdirs="$noconfigdirs target-libffi"
      ;;
-   hppa*-hp-hpux11*)
-     ;;
-   hppa*-*-hpux*)
-     noconfigdirs="$noconfigdirs target-libffi"
-     ;;
    ia64*-*-*vms*)
      noconfigdirs="$noconfigdirs target-libffi"
      ;;
--- 3507,3512 ----
*************** case "${target}" in
*** 3855,3868 ****
    h8500-*-*)
      noconfigdirs="$noconfigdirs target-libgloss"
      ;;
-   hppa1.1-*-osf* | hppa1.1-*-bsd* )
-     ;;
    hppa*64*-*-hpux*)
      noconfigdirs="$noconfigdirs gdb"
      ;;
-   hppa*-*-hpux11*)
-     noconfigdirs="$noconfigdirs gdb ld"
-     ;;
    hppa*64*-*-linux*)
      ;;
    hppa*-*-linux*)
--- 3813,3821 ----
*************** case "${target}" in
*** 4017,4025 ****
    tic6x-*-*)
      noconfigdirs="$noconfigdirs sim"
      ;;
-   tilepro*-*-* | tilegx*-*-*)
-     noconfigdirs="$noconfigdirs sim"
-     ;;
    v810-*-*)
      noconfigdirs="$noconfigdirs bfd binutils gas gdb ld opcodes target-libgloss"
      ;;
--- 3970,3975 ----
*************** fi
*** 4079,4087 ****
    alpha*-linux*)
      host_makefile_frag="config/mh-alpha-linux"
      ;;
-   hppa*-hp-hpux10*)
-     host_makefile_frag="config/mh-pa-hpux10"
-     ;;
    hppa*-hp-hpux*)
      host_makefile_frag="config/mh-pa"
      ;;
--- 4029,4034 ----
*************** else
*** 5605,5616 ****
    GNATMAKE="$ac_cv_prog_GNATMAKE"
  fi
  
! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler driver understands Ada" >&5
! $as_echo_n "checking whether compiler driver understands Ada... " >&6; }
  if ${acx_cv_cc_gcc_supports_ada+:} false; then :
    $as_echo_n "(cached) " >&6
  else
    cat >conftest.adb <<EOF
  procedure conftest is begin null; end conftest;
  EOF
  acx_cv_cc_gcc_supports_ada=no
--- 5552,5567 ----
    GNATMAKE="$ac_cv_prog_GNATMAKE"
  fi
  
! { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether compiler driver understands Ada and is recent enough" >&5
! $as_echo_n "checking whether compiler driver understands Ada and is recent enough... " >&6; }
  if ${acx_cv_cc_gcc_supports_ada+:} false; then :
    $as_echo_n "(cached) " >&6
  else
    cat >conftest.adb <<EOF
+ pragma Warnings (Off);
+ with System.CRTL;
+ pragma Warnings (On);
+ use type System.CRTL.int64;
  procedure conftest is begin null; end conftest;
  EOF
  acx_cv_cc_gcc_supports_ada=no
*************** _ACEOF
*** 7955,7961 ****
  
  
  # Check for GMP, MPFR and MPC
! gmplibs="-lmpc -lmpfr -lgmp"
  gmpinc=
  have_gmp=no
  
--- 7906,7927 ----
  
  
  # Check for GMP, MPFR and MPC
! require_gmp=no
! require_mpc=no
! if test -d ${srcdir}/gcc ; then
!   require_gmp=yes
!   require_mpc=yes
! fi
! if test -d ${srcdir}/gdb ; then
!   if test "x$enable_gdb" != xno; then
!    require_gmp=yes
!   fi
! fi
! 
! gmplibs="-lmpfr -lgmp"
! if test x"$require_mpc" = "xyes" ; then
!   gmplibs="-lmpc $gmplibs"
! fi
  gmpinc=
  have_gmp=no
  
*************** if test "x$with_gmp$with_gmp_include$wit
*** 8090,8096 ****
    have_gmp=yes
  fi
  
! if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
    have_gmp=yes
    saved_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $gmpinc"
--- 8056,8062 ----
    have_gmp=yes
  fi
  
! if test "x$require_gmp" = xyes && test "x$have_gmp" = xno; then
    have_gmp=yes
    saved_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $gmpinc"
*************** rm -f core conftest.err conftest.$ac_obj
*** 8200,8206 ****
    fi
  
    # Check for the MPC header version.
!   if test x"$have_gmp" = xyes ; then
      # Check for the recommended and required versions of MPC.
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of mpc.h" >&5
  $as_echo_n "checking for the correct version of mpc.h... " >&6; }
--- 8166,8172 ----
    fi
  
    # Check for the MPC header version.
!   if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes ; then
      # Check for the recommended and required versions of MPC.
      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of mpc.h" >&5
  $as_echo_n "checking for the correct version of mpc.h... " >&6; }
*************** rm -f core conftest.err conftest.$ac_obj
*** 8254,8271 ****
    if test x"$have_gmp" = xyes; then
      saved_LIBS="$LIBS"
      LIBS="$LIBS $gmplibs"
!     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of the gmp/mpfr/mpc libraries" >&5
! $as_echo_n "checking for the correct version of the gmp/mpfr/mpc libraries... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
! #include <mpc.h>
  int
  main ()
  {
  
      mpfr_t n;
      mpfr_t x;
-     mpc_t c;
      int t;
      mpfr_init (n);
      mpfr_init (x);
--- 8220,8236 ----
    if test x"$have_gmp" = xyes; then
      saved_LIBS="$LIBS"
      LIBS="$LIBS $gmplibs"
!     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of the gmp/mpfr libraries" >&5
! $as_echo_n "checking for the correct version of the gmp/mpfr libraries... " >&6; }
      cat confdefs.h - <<_ACEOF >conftest.$ac_ext
  /* end confdefs.h.  */
! #include <mpfr.h>
  int
  main ()
  {
  
      mpfr_t n;
      mpfr_t x;
      int t;
      mpfr_init (n);
      mpfr_init (x);
*************** main ()
*** 8274,8279 ****
--- 8239,8275 ----
      mpfr_subnormalize (x, t, MPFR_RNDN);
      mpfr_clear(n);
      mpfr_clear(x);
+ 
+   ;
+   return 0;
+ }
+ _ACEOF
+ if ac_fn_c_try_link "$LINENO"; then :
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }; have_gmp=no
+ fi
+ rm -f core conftest.err conftest.$ac_objext \
+     conftest$ac_exeext conftest.$ac_ext
+     LIBS="$saved_LIBS"
+   fi
+ 
+   # Now check the MPC library
+   if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes; then
+     saved_LIBS="$LIBS"
+     LIBS="$LIBS $gmplibs"
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for the correct version of the mpc libraries" >&5
+ $as_echo_n "checking for the correct version of the mpc libraries... " >&6; }
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+ /* end confdefs.h.  */
+ #include <mpc.h>
+ int
+ main ()
+ {
+ 
+     mpc_t c;
      mpc_init2 (c, 53);
      mpc_set_ui_ui (c, 1, 1, MPC_RNDNN);
      mpc_cosh (c, c, MPC_RNDNN);
*************** rm -f core conftest.err conftest.$ac_obj
*** 8302,8308 ****
  # The library versions listed in the error message below should match
  # the HARD-minimums enforced above.
    if test x$have_gmp != xyes; then
!     as_fn_error $? "Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
  Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
  their locations.  Source code for these libraries can be found at
  their respective hosting sites as well as at
--- 8298,8305 ----
  # The library versions listed in the error message below should match
  # the HARD-minimums enforced above.
    if test x$have_gmp != xyes; then
!     if test -d ${srcdir}/gcc ; then
!       as_fn_error $? "Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
  Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
  their locations.  Source code for these libraries can be found at
  their respective hosting sites as well as at
*************** http://gcc.gnu.org/install/prerequisites
*** 8311,8316 ****
--- 8308,8320 ----
  you obtained GMP, MPFR and/or MPC from a vendor distribution package,
  make sure that you have installed both the libraries and the header
  files.  They may be located in separate packages." "$LINENO" 5
+     else
+       as_fn_error $? "Building GDB requires GMP 4.2+, and MPFR 3.1.0+.
+ Try the --with-gmp and/or --with-mpfr options to specify
+ their locations.  If you obtained GMP and/or MPFR from a vendor
+ distribution package, make sure that you have installed both the libraries
+ and the header files.  They may be located in separate packages." "$LINENO" 5
+     fi
    fi
  fi
  
*************** fi
*** 8646,8652 ****
  # Check whether --enable-host-shared was given.
  if test "${enable_host_shared+set}" = set; then :
    enableval=$enable_host_shared; host_shared=$enableval
!  case $target in
     x86_64-*-darwin* | aarch64-*-darwin*)
       if test x$host_shared != xyes ; then
         # PIC is the default, and actually cannot be switched off.
--- 8650,8656 ----
  # Check whether --enable-host-shared was given.
  if test "${enable_host_shared+set}" = set; then :
    enableval=$enable_host_shared; host_shared=$enableval
!  case $host in
     x86_64-*-darwin* | aarch64-*-darwin*)
       if test x$host_shared != xyes ; then
         # PIC is the default, and actually cannot be switched off.
*************** if test "${enable_host_shared+set}" = se
*** 8656,8662 ****
    *) ;;
   esac
  else
!   case $target in
    x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
    *) host_shared=no ;;
   esac
--- 8660,8666 ----
    *) ;;
   esac
  else
!   case $host in
    x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
    *) host_shared=no ;;
   esac
*************** fi
*** 8664,8669 ****
--- 8668,8683 ----
  
  
  
+ 
+ # If we are building PIC/PIE host executables, and we are building dependent
+ # libs (e.g. GMP) in-tree those libs need to be configured to generate PIC
+ # code.
+ host_libs_picflag=
+ if test "$host_shared" = "yes";then
+ host_libs_picflag='--with-pic'
+ fi
+ 
+ 
  # By default, C and C++ are the only stage 1 languages.
  stage1_languages=,c,
  
*************** $as_echo "$as_me: WARNING: GDC is requir
*** 8895,8900 ****
--- 8909,8926 ----
              ;;
          esac
  
+         # Disable Rust for GCC 13 release.
+         case ${add_this_lang}:${language} in
+           yes:rust)
+             # Specifically requested language; tell them.
+             as_fn_error $? "Rust is not supported in GCC 13 release" "$LINENO" 5
+            ;;
+           *:rust)
+             # Silently disable.
+             add_this_lang=unsupported
+             ;;
+         esac
+ 
          # Disable jit if -enable-host-shared not specified
          # but not if building for Mingw. All code in Windows
          # is position independent code (PIC).
*************** $as_echo "using paths configured with --
*** 9089,9095 ****
    fi
  esac
  
! # Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
  case ,${enable_languages}, in
    *,c++,*)
      # Disable libitm, libsanitizer if we're not building libstdc++
--- 9115,9121 ----
    fi
  esac
  
! # Disable libitm, libsanitizer, libvtv if we're not building C++
  case ,${enable_languages}, in
    *,c++,*)
      # Disable libitm, libsanitizer if we're not building libstdc++
*************** case ,${enable_languages}, in
*** 9101,9107 ****
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
--- 9127,9133 ----
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
*************** fi
*** 9200,9212 ****
  
  # Sometimes we have special requirements for the host libiberty.
  extra_host_libiberty_configure_flags=
- extra_host_zlib_configure_flags=
  case " $configdirs " in
!   *" lto-plugin "* | *" libcc1 "*)
      # When these are to be built as shared libraries, the same applies to
      # libiberty.
      extra_host_libiberty_configure_flags=--enable-shared
      ;;
    *" bfd "*)
      # When bfd is to be built as a shared library, the same applies to
      # zlib.
--- 9226,9243 ----
  
  # Sometimes we have special requirements for the host libiberty.
  extra_host_libiberty_configure_flags=
  case " $configdirs " in
!   *" lto-plugin "* | *" libcc1 "* | *" gdbserver "*)
      # When these are to be built as shared libraries, the same applies to
      # libiberty.
      extra_host_libiberty_configure_flags=--enable-shared
      ;;
+ esac
+ 
+ 
+ # Sometimes we have special requirements for the host zlib.
+ extra_host_zlib_configure_flags=
+ case " $configdirs " in
    *" bfd "*)
      # When bfd is to be built as a shared library, the same applies to
      # zlib.
*************** case " $configdirs " in
*** 9217,9223 ****
  esac
  
  
- 
  # Produce a warning message for the subdirs we can't configure.
  # This isn't especially interesting in the Cygnus tree, but in the individual
  # FSF releases, it's important to let people know when their machine isn't
--- 9248,9253 ----
*************** case "${target}" in
*** 10271,10276 ****
--- 10301,10317 ----
    mep*)
      FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
      ;;
+   # The VxWorks support for shared libraries is getting in
+   # incrementally.  Make sure it doesn't get activated implicitly:
+   *vxworks*)
+     if test "${enable_shared-unset}" = unset ; then
+       enable_shared=no
+       # So the build of libraries knows ...
+       target_configargs="${target_configargs} --disable-shared"
+       # So gcc knows ...
+       host_configargs="${host_configargs} --disable-shared"
+     fi
+     ;;
  esac
  
  # Makefile fragments.
*************** fi
*** 13828,13833 ****
--- 13869,14035 ----
  
  
  
+ if test -n "$GM2_FOR_TARGET"; then
+   ac_cv_prog_GM2_FOR_TARGET=$GM2_FOR_TARGET
+ elif test -n "$ac_cv_prog_GM2_FOR_TARGET"; then
+   GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+ fi
+ 
+ if test -n "$ac_cv_prog_GM2_FOR_TARGET"; then
+   for ncn_progname in gm2; do
+     # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_GM2_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$GM2_FOR_TARGET"; then
+   ac_cv_prog_GM2_FOR_TARGET="$GM2_FOR_TARGET" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_GM2_FOR_TARGET="${ncn_progname}"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+ if test -n "$GM2_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GM2_FOR_TARGET" >&5
+ $as_echo "$GM2_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+   done
+ fi
+ 
+ if test -z "$ac_cv_prog_GM2_FOR_TARGET" && test -n "$with_build_time_tools"; then
+   for ncn_progname in gm2; do
+     { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5
+ $as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; }
+     if test -x $with_build_time_tools/${ncn_progname}; then
+       ac_cv_prog_GM2_FOR_TARGET=$with_build_time_tools/${ncn_progname}
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5
+ $as_echo "yes" >&6; }
+       break
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+     fi
+   done
+ fi
+ 
+ if test -z "$ac_cv_prog_GM2_FOR_TARGET"; then
+   for ncn_progname in gm2; do
+     if test -n "$ncn_target_tool_prefix"; then
+       # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_GM2_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$GM2_FOR_TARGET"; then
+   ac_cv_prog_GM2_FOR_TARGET="$GM2_FOR_TARGET" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_GM2_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+ if test -n "$GM2_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GM2_FOR_TARGET" >&5
+ $as_echo "$GM2_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+     fi
+     if test -z "$ac_cv_prog_GM2_FOR_TARGET" && test $build = $target ; then
+       # Extract the first word of "${ncn_progname}", so it can be a program name with args.
+ set dummy ${ncn_progname}; ac_word=$2
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+ $as_echo_n "checking for $ac_word... " >&6; }
+ if ${ac_cv_prog_GM2_FOR_TARGET+:} false; then :
+   $as_echo_n "(cached) " >&6
+ else
+   if test -n "$GM2_FOR_TARGET"; then
+   ac_cv_prog_GM2_FOR_TARGET="$GM2_FOR_TARGET" # Let the user override the test.
+ else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+ for as_dir in $PATH
+ do
+   IFS=$as_save_IFS
+   test -z "$as_dir" && as_dir=.
+     for ac_exec_ext in '' $ac_executable_extensions; do
+   if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+     ac_cv_prog_GM2_FOR_TARGET="${ncn_progname}"
+     $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+     break 2
+   fi
+ done
+   done
+ IFS=$as_save_IFS
+ 
+ fi
+ fi
+ GM2_FOR_TARGET=$ac_cv_prog_GM2_FOR_TARGET
+ if test -n "$GM2_FOR_TARGET"; then
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GM2_FOR_TARGET" >&5
+ $as_echo "$GM2_FOR_TARGET" >&6; }
+ else
+   { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+ $as_echo "no" >&6; }
+ fi
+ 
+ 
+     fi
+     test -n "$ac_cv_prog_GM2_FOR_TARGET" && break
+   done
+ fi
+ 
+ if test -z "$ac_cv_prog_GM2_FOR_TARGET" ; then
+   set dummy gm2
+   if test $build = $target ; then
+     GM2_FOR_TARGET="$2"
+   else
+     GM2_FOR_TARGET="${ncn_target_tool_prefix}$2"
+   fi
+ else
+   GM2_FOR_TARGET="$ac_cv_prog_GM2_FOR_TARGET"
+ fi
+ 
+ 
+ 
  cat > conftest.c << \EOF
  #ifdef __GNUC__
    gcc_yay;
*************** $as_echo "pre-installed" >&6; }
*** 17760,17765 ****
--- 17962,18012 ----
    fi
  fi
  
+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gm2" >&5
+ $as_echo_n "checking where to find the target gm2... " >&6; }
+ if test "x${build}" != "x${host}" ; then
+   if expr "x$GM2_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+     ac_dir=`dirname $GM2_FOR_TARGET`
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+ $as_echo "pre-installed in $ac_dir" >&6; }
+   else
+     # Canadian cross, just use what we found
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+ $as_echo "pre-installed" >&6; }
+   fi
+ else
+   ok=yes
+   case " ${configdirs} " in
+     *" gcc "*) ;;
+     *) ok=no ;;
+   esac
+   case ,${enable_languages}, in
+     *,m2,*) ;;
+     *) ok=no ;;
+   esac
+   if test $ok = yes; then
+     # An in-tree tool is available and we can use it
+     GM2_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/gm2 -B$$r/$(HOST_SUBDIR)/gcc/'
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5
+ $as_echo "just compiled" >&6; }
+   elif expr "x$GM2_FOR_TARGET" : "x/" > /dev/null; then
+     # We already found the complete path
+     ac_dir=`dirname $GM2_FOR_TARGET`
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5
+ $as_echo "pre-installed in $ac_dir" >&6; }
+   elif test "x$target" = "x$host"; then
+     # We can use an host tool
+     GM2_FOR_TARGET='$(GM2)'
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5
+ $as_echo "host tool" >&6; }
+   else
+     # We need a cross tool
+     { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5
+ $as_echo "pre-installed" >&6; }
+   fi
+ fi
+ 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target ld" >&5
  $as_echo_n "checking where to find the target ld... " >&6; }
  if test "x${build}" != "x${host}" ; then
*************** fi
*** 18321,18329 ****
  # Specify what files to not compare during bootstrap.
  
  compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
  case "$target" in
    hppa*64*-*-hpux*) ;;
-   hppa*-*-hpux*) compare_exclusions="$compare_exclusions | */libgcc/lib2funcs* | gcc/function-tests.o" ;;
    powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;;
  esac
  
--- 18568,18578 ----
  # Specify what files to not compare during bootstrap.
  
  compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
+ compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/M2Version*"
+ compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*"
+ compare_exclusions="$compare_exclusions | gcc/m2/gm2version*"
  case "$target" in
    hppa*64*-*-hpux*) ;;
    powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;;
  esac
  
diff -Nrcpad gcc-12.2.0/configure.ac gcc-13.1.0/configure.ac
*** gcc-12.2.0/configure.ac	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/configure.ac	Wed Apr 26 07:09:39 2023
*************** build_tools="build-texinfo build-flex bu
*** 132,138 ****
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libelf libiconv libctf"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
--- 132,138 ----
  
  # these libraries are used by various programs built for the host environment
  #f
! host_libs="intl libiberty opcodes bfd readline tcl tk itcl libgui zlib libbacktrace libcpp libcody libdecnumber gmp mpfr mpc isl libiconv libctf libsframe"
  
  # these tools are built for the host environment
  # Note, the powerpc-eabi build depends on sim occurring before gdb in order to
*************** host_libs="intl libiberty opcodes bfd re
*** 140,146 ****
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gotools c++tools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
--- 140,146 ----
  # binutils, gas and ld appear in that order because it makes sense to run
  # "make check" in that particular order.
  # If --enable-gold is used, "gold" may replace "ld".
! host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools"
  
  # these libraries are built for the target environment, and are built after
  # the host libraries and the host tools (which may be a cross compiler)
*************** target_libraries="target-libgcc \
*** 150,156 ****
  		target-libgloss \
  		target-newlib \
  		target-libgomp \
- 		target-liboffloadmic \
  		target-libatomic \
  		target-libitm \
  		target-libstdc++-v3 \
--- 150,155 ----
*************** target_libraries="target-libgcc \
*** 162,167 ****
--- 161,167 ----
  		target-libffi \
  		target-libobjc \
  		target-libada \
+ 		target-libgm2 \
  		target-libgo \
  		target-libphobos \
  		target-zlib"
*************** if test x$with_system_zlib = xyes ; then
*** 247,252 ****
--- 247,258 ----
    noconfigdirs="$noconfigdirs zlib"
  fi
  
+ # Don't compile the bundled readline/libreadline.a if --with-system-readline
+ # is provided.
+ if test x$with_system_readline = xyes ; then
+   noconfigdirs="$noconfigdirs readline"
+ fi
+ 
  # some tools are so dependent upon X11 that if we're not building with X, 
  # it's not even worth trying to configure, much less build, that tool.
  
*************** case "${ENABLE_GOLD}" in
*** 353,359 ****
        # Check for target supported by gold.
        case "${target}" in
          i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
!         | aarch64*-*-* | tilegx*-*-* | mips*-*-* | s390*-*-* | loongarch*-*-*)
  	  configdirs="$configdirs gold"
  	  if test x${ENABLE_GOLD} = xdefault; then
  	    default_ld=gold
--- 359,365 ----
        # Check for target supported by gold.
        case "${target}" in
          i?86-*-* | x86_64-*-* | sparc*-*-* | powerpc*-*-* | arm*-*-* \
!         | aarch64*-*-* | mips*-*-* | s390*-*-* | loongarch*-*-*)
  	  configdirs="$configdirs gold"
  	  if test x${ENABLE_GOLD} = xdefault; then
  	    default_ld=gold
*************** if test "${ENABLE_LIBADA}" != "yes" ; th
*** 459,464 ****
--- 465,478 ----
    noconfigdirs="$noconfigdirs gnattools"
  fi
  
+ AC_ARG_ENABLE(libgm2,
+ [AS_HELP_STRING([--enable-libgm2], [build libgm2 directory])],
+ ENABLE_LIBGM2=$enableval,
+ ENABLE_LIBGM2=no)
+ if test "${ENABLE_LIBGM2}" != "yes" ; then
+   noconfigdirs="$noconfigdirs gm2tools"
+ fi
+ 
  AC_ARG_ENABLE(libssp,
  [AS_HELP_STRING([--enable-libssp], [build libssp directory])],
  ENABLE_LIBSSP=$enableval,
*************** ENABLE_LIBSTDCXX=default)
*** 473,514 ****
    noconfigdirs="$noconfigdirs target-libstdc++-v3"
  fi]
  
- # If this is accelerator compiler and its target is intelmic we enable
- # target liboffloadmic by default.  If this is compiler with offloading
- # for intelmic we enable host liboffloadmic by default.  Otherwise
- # liboffloadmic is disabled by default.
- AC_ARG_ENABLE([liboffloadmic],
- AC_HELP_STRING([[--enable-liboffloadmic[=ARG]]],
- 	       [build liboffloadmic @<:@ARG={no,host,target}@:>@]),
- [case "$enableval" in
-   no | host | target)
-     enable_liboffloadmic=$enableval ;;
-   *)
-     AC_MSG_ERROR([--enable-liboffloadmic=no/host/target]) ;;
- esac],
- [if test x"$enable_as_accelerator_for" != x; then
-   case "${target}" in
-     *-intelmic-* | *-intelmicemul-*)
-       enable_liboffloadmic=target
-       extra_liboffloadmic_configure_flags="--enable-liboffloadmic=target"
-       ;;
-     *)
-       enable_liboffloadmic=no
-       ;;
-   esac
- else
-   case "${enable_offload_targets}" in
-     *-intelmic-* | *-intelmicemul-*)
-       enable_liboffloadmic=host
-       extra_liboffloadmic_configure_flags="--enable-liboffloadmic=host"
-       ;;
-     *)
-       enable_liboffloadmic=no
-       ;;
-     esac
- fi])
- AC_SUBST(extra_liboffloadmic_configure_flags)
- 
  # Enable libgomp by default on hosted POSIX systems, and a few others.
  if test x$enable_libgomp = x ; then
      case "${target}" in
--- 487,492 ----
*************** if test -d ${srcdir}/libatomic; then
*** 544,565 ****
      fi
  fi
  
- # Disable liboffloadmic on unsupported systems.
- if test -d ${srcdir}/liboffloadmic; then
-     if test x$enable_liboffloadmic != xno; then
- 	AC_MSG_CHECKING([for liboffloadmic support])
- 	if (srcdir=${srcdir}/liboffloadmic; \
- 		. ${srcdir}/configure.tgt; \
- 		test -n "$UNSUPPORTED")
- 	then
- 	    AC_MSG_RESULT([no])
- 	    noconfigdirs="$noconfigdirs target-liboffloadmic"
- 	else
- 	    AC_MSG_RESULT([yes])
- 	fi
-     fi
- fi
- 
  # Disable libitm on unsupported systems.
  if test -d ${srcdir}/libitm; then
      if test x$enable_libitm = x; then
--- 522,527 ----
*************** case "${target}" in
*** 804,814 ****
    hppa*64*-*-hpux*)
      noconfigdirs="$noconfigdirs target-libffi"
      ;;
-   hppa*-hp-hpux11*)
-     ;;
-   hppa*-*-hpux*)
-     noconfigdirs="$noconfigdirs target-libffi"
-     ;;
    ia64*-*-*vms*)
      noconfigdirs="$noconfigdirs target-libffi"
      ;;
--- 766,771 ----
*************** case "${target}" in
*** 1112,1125 ****
    h8500-*-*)
      noconfigdirs="$noconfigdirs target-libgloss"
      ;;
-   hppa1.1-*-osf* | hppa1.1-*-bsd* )
-     ;;
    hppa*64*-*-hpux*)
      noconfigdirs="$noconfigdirs gdb"
      ;;
-   hppa*-*-hpux11*)
-     noconfigdirs="$noconfigdirs gdb ld"
-     ;;
    hppa*64*-*-linux*)
      ;;
    hppa*-*-linux*)
--- 1069,1077 ----
*************** case "${target}" in
*** 1274,1282 ****
    tic6x-*-*)
      noconfigdirs="$noconfigdirs sim"
      ;;
-   tilepro*-*-* | tilegx*-*-*)
-     noconfigdirs="$noconfigdirs sim"
-     ;;
    v810-*-*)
      noconfigdirs="$noconfigdirs bfd binutils gas gdb ld opcodes target-libgloss"
      ;;
--- 1226,1231 ----
*************** case "${host}" in
*** 1317,1325 ****
    alpha*-linux*)
      host_makefile_frag="config/mh-alpha-linux"
      ;;
-   hppa*-hp-hpux10*)
-     host_makefile_frag="config/mh-pa-hpux10"
-     ;;
    hppa*-hp-hpux*)
      host_makefile_frag="config/mh-pa"
      ;;
--- 1266,1271 ----
*************** AC_SUBST(PGO_BUILD_LTO_CFLAGS)
*** 1536,1542 ****
  _LT_CHECK_OBJDIR
  
  # Check for GMP, MPFR and MPC
! gmplibs="-lmpc -lmpfr -lgmp"
  gmpinc=
  have_gmp=no
  
--- 1482,1503 ----
  _LT_CHECK_OBJDIR
  
  # Check for GMP, MPFR and MPC
! require_gmp=no
! require_mpc=no
! if test -d ${srcdir}/gcc ; then
!   require_gmp=yes
!   require_mpc=yes
! fi
! if test -d ${srcdir}/gdb ; then
!   if test "x$enable_gdb" != xno; then
!    require_gmp=yes
!   fi
! fi
! 
! gmplibs="-lmpfr -lgmp"
! if test x"$require_mpc" = "xyes" ; then
!   gmplibs="-lmpc $gmplibs"
! fi
  gmpinc=
  have_gmp=no
  
*************** if test "x$with_gmp$with_gmp_include$wit
*** 1651,1657 ****
    have_gmp=yes
  fi
  
! if test -d ${srcdir}/gcc && test "x$have_gmp" = xno; then
    have_gmp=yes
    saved_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $gmpinc"
--- 1612,1618 ----
    have_gmp=yes
  fi
  
! if test "x$require_gmp" = xyes && test "x$have_gmp" = xno; then
    have_gmp=yes
    saved_CFLAGS="$CFLAGS"
    CFLAGS="$CFLAGS $gmpinc"
*************** if test -d ${srcdir}/gcc && test "x$have
*** 1691,1697 ****
    fi
  
    # Check for the MPC header version.
!   if test x"$have_gmp" = xyes ; then
      # Check for the recommended and required versions of MPC.
      AC_MSG_CHECKING([for the correct version of mpc.h])
      AC_TRY_COMPILE([#include <mpc.h>],[
--- 1652,1658 ----
    fi
  
    # Check for the MPC header version.
!   if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes ; then
      # Check for the recommended and required versions of MPC.
      AC_MSG_CHECKING([for the correct version of mpc.h])
      AC_TRY_COMPILE([#include <mpc.h>],[
*************** if test -d ${srcdir}/gcc && test "x$have
*** 1710,1720 ****
    if test x"$have_gmp" = xyes; then
      saved_LIBS="$LIBS"
      LIBS="$LIBS $gmplibs"
!     AC_MSG_CHECKING([for the correct version of the gmp/mpfr/mpc libraries])
!     AC_TRY_LINK([#include <mpc.h>],[
      mpfr_t n;
      mpfr_t x;
-     mpc_t c;
      int t;
      mpfr_init (n);
      mpfr_init (x);
--- 1671,1680 ----
    if test x"$have_gmp" = xyes; then
      saved_LIBS="$LIBS"
      LIBS="$LIBS $gmplibs"
!     AC_MSG_CHECKING([for the correct version of the gmp/mpfr libraries])
!     AC_TRY_LINK([#include <mpfr.h>],[
      mpfr_t n;
      mpfr_t x;
      int t;
      mpfr_init (n);
      mpfr_init (x);
*************** if test -d ${srcdir}/gcc && test "x$have
*** 1723,1728 ****
--- 1683,1699 ----
      mpfr_subnormalize (x, t, MPFR_RNDN);
      mpfr_clear(n);
      mpfr_clear(x);
+     ], [AC_MSG_RESULT([yes])], [AC_MSG_RESULT([no]); have_gmp=no])
+     LIBS="$saved_LIBS"
+   fi
+ 
+   # Now check the MPC library
+   if test "x$require_mpc" = xyes && test x"$have_gmp" = xyes; then
+     saved_LIBS="$LIBS"
+     LIBS="$LIBS $gmplibs"
+     AC_MSG_CHECKING([for the correct version of the mpc libraries])
+     AC_TRY_LINK([#include <mpc.h>],[
+     mpc_t c;
      mpc_init2 (c, 53);
      mpc_set_ui_ui (c, 1, 1, MPC_RNDNN);
      mpc_cosh (c, c, MPC_RNDNN);
*************** if test -d ${srcdir}/gcc && test "x$have
*** 1738,1744 ****
  # The library versions listed in the error message below should match
  # the HARD-minimums enforced above.
    if test x$have_gmp != xyes; then
!     AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
  Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
  their locations.  Source code for these libraries can be found at
  their respective hosting sites as well as at
--- 1709,1716 ----
  # The library versions listed in the error message below should match
  # the HARD-minimums enforced above.
    if test x$have_gmp != xyes; then
!     if test -d ${srcdir}/gcc ; then
!       AC_MSG_ERROR([Building GCC requires GMP 4.2+, MPFR 3.1.0+ and MPC 0.8.0+.
  Try the --with-gmp, --with-mpfr and/or --with-mpc options to specify
  their locations.  Source code for these libraries can be found at
  their respective hosting sites as well as at
*************** http://gcc.gnu.org/install/prerequisites
*** 1747,1752 ****
--- 1719,1731 ----
  you obtained GMP, MPFR and/or MPC from a vendor distribution package,
  make sure that you have installed both the libraries and the header
  files.  They may be located in separate packages.])
+     else
+       AC_MSG_ERROR([Building GDB requires GMP 4.2+, and MPFR 3.1.0+.
+ Try the --with-gmp and/or --with-mpfr options to specify
+ their locations.  If you obtained GMP and/or MPFR from a vendor
+ distribution package, make sure that you have installed both the libraries
+ and the header files.  They may be located in separate packages.])
+     fi
    fi
  fi
  
*************** AC_ARG_ENABLE(host-shared,
*** 1918,1924 ****
  [AS_HELP_STRING([--enable-host-shared],
  		[build host code as shared libraries])],
  [host_shared=$enableval
!  case $target in
     x86_64-*-darwin* | aarch64-*-darwin*)
       if test x$host_shared != xyes ; then
         # PIC is the default, and actually cannot be switched off.
--- 1897,1903 ----
  [AS_HELP_STRING([--enable-host-shared],
  		[build host code as shared libraries])],
  [host_shared=$enableval
!  case $host in
     x86_64-*-darwin* | aarch64-*-darwin*)
       if test x$host_shared != xyes ; then
         # PIC is the default, and actually cannot be switched off.
*************** AC_ARG_ENABLE(host-shared,
*** 1927,1938 ****
       fi ;;
    *) ;;
   esac],
! [case $target in
    x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
    *) host_shared=no ;;
   esac])
  AC_SUBST(host_shared)
  
  # By default, C and C++ are the only stage 1 languages.
  stage1_languages=,c,
  
--- 1906,1927 ----
       fi ;;
    *) ;;
   esac],
! [case $host in
    x86_64-*-darwin* | aarch64-*-darwin*) host_shared=yes ;;
    *) host_shared=no ;;
   esac])
+ 
  AC_SUBST(host_shared)
  
+ # If we are building PIC/PIE host executables, and we are building dependent
+ # libs (e.g. GMP) in-tree those libs need to be configured to generate PIC
+ # code.
+ host_libs_picflag=
+ if test "$host_shared" = "yes";then
+ host_libs_picflag='--with-pic'
+ fi
+ AC_SUBST(host_libs_picflag)
+ 
  # By default, C and C++ are the only stage 1 languages.
  stage1_languages=,c,
  
*************** if test -d ${srcdir}/gcc; then
*** 2161,2166 ****
--- 2150,2167 ----
              ;;
          esac
  
+         # Disable Rust for GCC 13 release.
+         case ${add_this_lang}:${language} in
+           yes:rust)
+             # Specifically requested language; tell them.
+             AC_MSG_ERROR([Rust is not supported in GCC 13 release])
+            ;;
+           *:rust)
+             # Silently disable.
+             add_this_lang=unsupported
+             ;;
+         esac
+ 
          # Disable jit if -enable-host-shared not specified
          # but not if building for Mingw. All code in Windows
          # is position independent code (PIC).
*************** case ,${enable_languages},:${enable_objc
*** 2344,2350 ****
    fi
  esac
  
! # Disable libitm, libsanitizer, libvtv, liboffloadmic if we're not building C++
  case ,${enable_languages}, in
    *,c++,*)
      # Disable libitm, libsanitizer if we're not building libstdc++
--- 2345,2351 ----
    fi
  esac
  
! # Disable libitm, libsanitizer, libvtv if we're not building C++
  case ,${enable_languages}, in
    *,c++,*)
      # Disable libitm, libsanitizer if we're not building libstdc++
*************** case ,${enable_languages}, in
*** 2356,2362 ****
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-liboffloadmic target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
--- 2357,2363 ----
      esac
      ;;
    *)
!     noconfigdirs="$noconfigdirs target-libitm target-libsanitizer target-libvtv"
      ;;
  esac
  
*************** fi
*** 2455,2467 ****
  
  # Sometimes we have special requirements for the host libiberty.
  extra_host_libiberty_configure_flags=
- extra_host_zlib_configure_flags=
  case " $configdirs " in
!   *" lto-plugin "* | *" libcc1 "*)
      # When these are to be built as shared libraries, the same applies to
      # libiberty.
      extra_host_libiberty_configure_flags=--enable-shared
      ;;
    *" bfd "*)
      # When bfd is to be built as a shared library, the same applies to
      # zlib.
--- 2456,2473 ----
  
  # Sometimes we have special requirements for the host libiberty.
  extra_host_libiberty_configure_flags=
  case " $configdirs " in
!   *" lto-plugin "* | *" libcc1 "* | *" gdbserver "*)
      # When these are to be built as shared libraries, the same applies to
      # libiberty.
      extra_host_libiberty_configure_flags=--enable-shared
      ;;
+ esac
+ AC_SUBST(extra_host_libiberty_configure_flags)
+ 
+ # Sometimes we have special requirements for the host zlib.
+ extra_host_zlib_configure_flags=
+ case " $configdirs " in
    *" bfd "*)
      # When bfd is to be built as a shared library, the same applies to
      # zlib.
*************** case " $configdirs " in
*** 2470,2476 ****
      fi
      ;;
  esac
- AC_SUBST(extra_host_libiberty_configure_flags)
  AC_SUBST(extra_host_zlib_configure_flags)
  
  # Produce a warning message for the subdirs we can't configure.
--- 2476,2481 ----
*************** case "${target}" in
*** 3452,3457 ****
--- 3457,3473 ----
    mep*)
      FLAGS_FOR_TARGET="$FLAGS_FOR_TARGET -mlibrary"
      ;;
+   # The VxWorks support for shared libraries is getting in
+   # incrementally.  Make sure it doesn't get activated implicitly:
+   *vxworks*)
+     if test "${enable_shared-unset}" = unset ; then
+       enable_shared=no
+       # So the build of libraries knows ...
+       target_configargs="${target_configargs} --disable-shared"
+       # So gcc knows ...
+       host_configargs="${host_configargs} --disable-shared"
+     fi
+     ;;
  esac
  
  # Makefile fragments.
*************** NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TA
*** 3617,3622 ****
--- 3633,3639 ----
  NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran)
  NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo)
  NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc)
+ NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2)
  
  ACX_CHECK_INSTALLED_TARGET_TOOL(AR_FOR_TARGET, ar)
  ACX_CHECK_INSTALLED_TARGET_TOOL(AS_FOR_TARGET, as)
*************** GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, G
*** 3655,3660 ****
--- 3672,3679 ----
  		[gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go)
  GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC,
  		[gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d)
+ GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2,
+ 		[gcc/gm2 -B$$r/$(HOST_SUBDIR)/gcc/], m2)
  GCC_TARGET_TOOL(ld, LD_FOR_TARGET, LD, [ld/ld-new])
  GCC_TARGET_TOOL(lipo, LIPO_FOR_TARGET, LIPO)
  GCC_TARGET_TOOL(nm, NM_FOR_TARGET, NM, [binutils/nm-new])
*************** AC_SUBST(stage2_werror_flag)
*** 3781,3789 ****
  # Specify what files to not compare during bootstrap.
  
  compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
  case "$target" in
    hppa*64*-*-hpux*) ;;
-   hppa*-*-hpux*) compare_exclusions="$compare_exclusions | */libgcc/lib2funcs* | gcc/function-tests.o" ;;
    powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;;
  esac
  AC_SUBST(compare_exclusions)
--- 3800,3810 ----
  # Specify what files to not compare during bootstrap.
  
  compare_exclusions="gcc/cc*-checksum\$(objext) | gcc/ada/*tools/*"
+ compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/M2Version*"
+ compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*"
+ compare_exclusions="$compare_exclusions | gcc/m2/gm2version*"
  case "$target" in
    hppa*64*-*-hpux*) ;;
    powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;;
  esac
  AC_SUBST(compare_exclusions)
diff -Nrcpad gcc-12.2.0/contrib/ChangeLog gcc-13.1.0/contrib/ChangeLog
*** gcc-12.2.0/contrib/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/contrib/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,17 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2022-05-06  Jakub Jelinek  <jakub@redhat.com>
  
  	* gennews (files): Add files for GCC 12.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-04-25  Martin Liska  <mliska@suse.cz>
  
--- 1,357 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	* unicode/README: Update to mention also makeuname2c.
! 	* unicode/NameAliases.txt: New file.
! 
! 2023-03-13  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	* unicode/DerivedCoreProperties.txt: Update to Unicode 15.
! 	* unicode/DerivedNormalizationProps.txt: Likewise.
! 	* unicode/EastAsianWidth.txt: Likwise.
! 	* unicode/PropList.txt: Likewise.
! 	* unicode/README: Likewise.
! 	* unicode/UnicodeData.txt: Likewise.
! 
! 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* config-list.mk (LIST): Clarify i686-symbolics-gnu to i686-gnu.
! 
! 2023-02-17  Petr Sumbera  <petr.sumbera@oracle.com>
! 
! 	* make_sunver.pl: Escape brace.
! 
! 2023-02-10  Flavio Cruz  <flaviocruz@gmail.com>
! 
! 	* config-list.mk: Add x86_64-gnu to list of archs.
! 
! 2023-01-19  Gaius Mulley  <gaiusmod2@gmail.com>
! 
! 	* gcc_update (files_and_dependencies): Add dependencies for
! 	gcc/m2/gm2config.h.in, gcc/m2/configure,
! 	gcc/m2/gm2-libs/config-host, libgm2/Makefile.in,
! 	libgm2/aclocal.m4, libgm2/libm2cor/Makefile.in,
! 	libgm2/libm2pim/Makefile.in, libgm2/libm2iso/Makefile.in,
! 	libgm2/libm2log/Makefile.in and libgm2/libm2min/Makefile.in.
! 
! 2023-01-17  Martin Liska  <mliska@suse.cz>
! 
! 	* update-copyright.py: Ignore test_patches.txt.
! 
! 2023-01-17  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/test_patches.txt: The CR character was removed
! 	with ./contrib/update-copyright.py which I'm going to change.
! 
! 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR other/108413
! 	* update-copyright.py (LibPhobosFilter): Add __builtins.di to
! 	skipped files.
! 
! 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR other/108413
! 	* update-copyright.py (TestsuiteFilter): Add .mod and .rs extensions.
! 	(GCCCopyright): Add 'The fast_float authors' as external author.
! 
! 2023-01-15  Gerald Pfeifer  <gerald@pfeifer.com>
! 
! 	* config-list.mk: Update FreeBSD targets to version 13.
! 	Add aarch64-freebsd13.
! 
! 2023-01-12  Gerald Pfeifer  <gerald@pfeifer.com>
! 
! 	* config-list.mk: Remove i486-freebsd4, ia64-freebsd6, and
! 	sparc64-freebsd6.
! 
! 2023-01-06  Martin Liska  <mliska@suse.cz>
! 
! 	* update-copyright.py: Add contrib as a default dir.
! 
! 2022-12-28  Martin Liska  <mliska@suse.cz>
! 
! 	* update-copyright.py: Add contrib folder.
! 
! 2022-12-23  Arsen Arsenović  <arsen@aarsen.me>
! 
! 	* dg-out-generator.pl: New file.
! 
! 2022-12-21  Martin Liska  <mliska@suse.cz>
! 
! 	* filter-clang-warnings.py: Simplify.
! 
! 2022-12-21  Martin Liska  <mliska@suse.cz>
! 
! 	* filter-clang-warnings.py: Skip Makefile and libffi warnings.
! 
! 2022-12-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Support digits in PR's
! 	component in subject.
! 
! 2022-12-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/test_email.py: Add new test.
! 	* gcc-changelog/test_patches.txt: Add new patch.
! 
! 2022-12-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Allow digit in component name.
! 
! 2022-12-19  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* gcc-changelog/git_check_commit.py (__main__): With -v print a
! 	warning for the auto-added files.
! 	* gcc-changelog/git_commit.py (GitCommit.__init__): Add self.warnings.
! 	(GitCommit.check_mentioned_files): Add warning for auto-added files.
! 	(GitCommit.print_warnings): New function.
! 	* gcc-changelog/git_email.py (__main__): Remove bogus argument to
! 	GitEmail constructor; print auto-added-files warning.
! 	* gcc-changelog/test_email.py (test_auto_add_file_1,
! 	test_auto_add_file_2): New tests.
! 	* gcc-changelog/test_patches.txt: Add two test cases.
! 
! 2022-12-19  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/setup.cfg: Do not use flake8 pytest plug-in.
! 
! 2022-12-16  Martin Liska  <mliska@suse.cz>
! 
! 	* filter-clang-warnings.py: Print each warning only one time.
! 
! 2022-12-16  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_email.py: Use PatchSet constructor
! 	as newline argument is not supported with older unidiff
! 	library.
! 
! 2022-12-16  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* gcc-changelog/git_email.py (GitEmail:__init__): Support older
! 	unidiff.PatchSet that do not have a newline= argument
! 	of from_filename.
! 
! 2022-12-14  Martin Liska  <mliska@suse.cz>
! 
! 	* analyze_brprob.py: Add copyright header.
! 	* analyze_brprob_spec.py: Likewise.
! 	* check-params-in-docs.py: Likewise.
! 	* check_GNU_style.py: Likewise.
! 	* check_GNU_style_lib.py: Likewise.
! 	* filter-clang-warnings.py: Likewise.
! 	* gcc-changelog/git_check_commit.py: Likewise.
! 	* gcc-changelog/git_commit.py: Likewise.
! 	* gcc-changelog/git_email.py: Likewise.
! 	* gcc-changelog/git_repository.py: Likewise.
! 	* gcc-changelog/git_update_version.py: Likewise.
! 	* gcc-changelog/test_email.py: Likewise.
! 	* mark_spam.py: Likewise.
! 
! 2022-12-14  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Check for number of hunks and not if a modified
! 	file is binary.
! 
! 2022-12-12  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Do not search PR entry in a file that is binary.
! 
! 2022-12-11  Martin Liska  <mliska@suse.cz>
! 
! 	* check_GNU_style.py: Use newline=\n.
! 	* check_GNU_style_lib.py: Simplify.
! 	* gcc-changelog/git_commit.py: Fix issues seen
! 	Rust patchset.
! 	* gcc-changelog/git_email.py: Use newline argument.
! 	* gcc-changelog/test_email.py: New test.
! 	* gcc-changelog/test_patches.txt: New test.
! 	* mklog.py: Use newline argument.
! 
! 2022-12-10  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* gcc-changelog/git_commit.py (default_changelog_locations): Add
! 	'gcc/rust'.
! 	(bug_components): Add 'rust'.
! 
! 2022-12-10  Gaius Mulley  <gaiusmod2@gmail.com>
! 
! 	* gcc-changelog/git_commit.py (default_changelog_locations):
! 	New entry for gcc/m2.  New entry for libgm2.
! 
! 2022-12-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* gcc.doxy (INPUT): Add gcc/analyzer subdirectory.
! 
! 2022-11-25  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-25  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Temporarily disable
! 	check_line.start.
! 
! 2022-11-25  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Temporarily disable
! 	check_line.start.
! 
! 2022-11-21  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-20  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Temporarily disable
! 	check_line.start.
! 
! 2022-11-20  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Temporarily disable
! 	check_line.start.
! 
! 2022-11-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* gcc-changelog/git_update_version.py: Add
! 	1957bedf29a1b2cc231972aba680fe80199d5498 to ignored commits.
! 
! 2022-11-15  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Revert temporary rule
! 	relaxation.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Temporarily disable
! 	check_line.start.
! 
! 2022-11-11  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Check for a space after leading
! 	tab.
! 	* gcc-changelog/test_email.py: Likewise.
! 	* gcc-changelog/test_patches.txt: Likewise.
! 
! 2022-11-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* gcc-changelog/git_update_version.py: Add
! 	e4cba49413ca429dc82f6aa2e88129ecb3fdd943 to ignored commits.
! 
! 2022-11-04  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* gcc-changelog/git_commit.py (default_changelog_locations):
! 	Remove 'liboffloadmic'.
! 	* gcc_update (files_and_dependencies): Remove 'liboffloadmic'
! 	files.
! 	* update-copyright.py (GCCCmdLine): Remove 'liboffloadmic'
! 	comment.
! 
! 2022-10-20  Jonathan Wakely   <jwakely@redhat.com>
! 	    Ulrich Drepper  <drepper@redhat.com>
! 
! 	* gcc_update: Add rule for gcc/cp/std-name-hint.gperf.
! 
! 2022-10-07  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Remove extra fetch.
! 
! 2022-10-06  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Use logging module
! 	and provide robust debugging output.
! 
! 2022-10-05  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_update_version.py: Do fetch before a push.
! 
! 2022-09-20  Martin Liska  <mliska@suse.cz>
! 
! 	* filter-clang-warnings.py: Skip egrep: warning: egrep is
! 	obsolescent; using grep -E.
! 
! 2022-08-31  Martin Liska  <mliska@suse.cz>
! 
! 	* config-list.mk: Remove deprecated ports.
! 
! 2022-08-30  Ulrich Drepper  <drepper@gmail.com>
! 
! 	* gcc_update (files_and_dependencies): Add rule for
! 	gcc/cp/std-name-hint.h.
! 
! 2022-08-30  Martin Liska  <mliska@suse.cz>
! 
! 	* config-list.mk: Remove the port.
! 
! 2022-08-27  Xi Ruoyao  <xry111@xry111.site>
! 
! 	* gen_autofdo_event.py: Port to Python 3, and use grep -E
! 	instead of egrep.
! 
! 2022-08-26  Martin Liska  <mliska@suse.cz>
! 
! 	* config-list.mk: Remove cr16.
! 
! 2022-08-19  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
! 
! 	* clang-format: Add further FOR_EACH_ macros.
! 
! 2022-08-18  Andrea Corallo  <andrea.corallo@arm.com>
! 
! 	* git-fetch-vendor.sh : Fix typo.
! 
! 2022-08-02  Martin Liska  <mliska@suse.cz>
! 
! 	* gcc-changelog/git_commit.py: Do not deduce changelog for root ChangeLog.
! 
! 2022-07-22  Martin Liska  <mliska@suse.cz>
! 
! 	* git-commit-mklog.py: Do not parse -b argument.
! 	Pass mklog_args as json environment variable.
! 	* mklog.py: Parse GCC_MKLOG_ARGS and append it to sys.argv.
! 	* prepare-commit-msg: Do not append GCC_MKLOG_ARGS to args.
! 
! 2022-07-22  Martin Liska  <mliska@suse.cz>
! 
! 	* mklog.py: Use component: [PR xyz] only when one PR is used.
! 
! 2022-07-04  Martin Liska  <mliska@suse.cz>
! 
! 	* git-descr.sh: By default print revision for HEAD.
! 
! 2022-06-28  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	* unicode/README: Added instructions for updating ucnid.h.
! 	* unicode/DerivedCoreProperties.txt: New file added to source
! 	control from Unicode 14.0 release.
! 	* unicode/DerivedNormalizationProps.txt: Likewise.
! 
! 2022-06-26  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	* unicode/EastAsianWidth.txt: Update to Unicode 14.0.0.
! 	* unicode/PropList.txt: Likewise.
! 	* unicode/README: Likewise.
! 	* unicode/UnicodeData.txt: Likewise.
! 
! 2022-06-25  Jeff Law  <jeffreyalaw@gmail.com>
! 
! 	* config-list.mk: Remove tilegx and tilepro entries.
! 	* gcc_update: Remove tilegx and tilepro entries.
! 
! 2022-05-27  Richard Biener  <rguenther@suse.de>
! 
! 	* gcc-changelog/git_update_version.py (active_refs): Remove
! 	releases/gcc-9.
! 
! 2022-05-06  Jakub Jelinek  <jakub@redhat.com>
  
  	* gennews (files): Add files for GCC 12.
  
! 2022-04-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gcc-changelog/git_update_version.py (active_refs): Add
! 	releases/gcc-12.
  
  2022-04-25  Martin Liska  <mliska@suse.cz>
  
***************
*** 43,49 ****
  	    Lulu Cheng  <chenglulu@loongson.cn>
  
  	* gcc_update (files_and_dependencies): Add
! 	  config/loongarch/loongarch.opt and config/loongarch/loongarch-str.h.
  
  2022-03-28  Martin Liska  <mliska@suse.cz>
  
--- 383,389 ----
  	    Lulu Cheng  <chenglulu@loongson.cn>
  
  	* gcc_update (files_and_dependencies): Add
! 	config/loongarch/loongarch.opt and config/loongarch/loongarch-str.h.
  
  2022-03-28  Martin Liska  <mliska@suse.cz>
  
***************
*** 280,286 ****
  2021-08-03  Martin Liska  <mliska@suse.cz>
  
  	* gcc-changelog/git_update_version.py: Ignore problematic
! 	  commit.
  
  2021-07-20  Richard Earnshaw  <rearnsha@arm.com>
  
--- 620,626 ----
  2021-08-03  Martin Liska  <mliska@suse.cz>
  
  	* gcc-changelog/git_update_version.py: Ignore problematic
! 	commit.
  
  2021-07-20  Richard Earnshaw  <rearnsha@arm.com>
  
***************
*** 1733,1739 ****
  2016-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
  
  	* compare_tests: Take ERROR messages into account when
! 	  comparing.
  
  2016-08-17  Martin Liska  <mliska@suse.cz>
  
--- 2073,2079 ----
  2016-09-20  Christophe Lyon  <christophe.lyon@linaro.org>
  
  	* compare_tests: Take ERROR messages into account when
! 	comparing.
  
  2016-08-17  Martin Liska  <mliska@suse.cz>
  
*************** Tue Jun 12 12:21:40 CEST 2001  Jan Hubic
*** 3828,3840 ****
  2000-11-19  Zack Weinberg  <zackw@stanford.edu>
  
  	* texi2pod.pl:
! 	  - Add real command line parsing.
  	  - Support @ifset, @ifclear, @set, @value, -D switch.
  	  - Support @sc.  Improve handling of @ref and friends.
  	  - Discard @subsection, @need, @node lines.
! 	  - Un-nest font changes to match texinfo semantics.
  	  - Handle @{ and @}.  Oops.
! 	  - Don't emit E<> directives inside verbatim blocks.
  
  2000-11-12  Bruce Korb  <bkorb@gnu.org>
  
--- 4168,4180 ----
  2000-11-19  Zack Weinberg  <zackw@stanford.edu>
  
  	* texi2pod.pl:
! 	- Add real command line parsing.
  	  - Support @ifset, @ifclear, @set, @value, -D switch.
  	  - Support @sc.  Improve handling of @ref and friends.
  	  - Discard @subsection, @need, @node lines.
! 	- Un-nest font changes to match texinfo semantics.
  	  - Handle @{ and @}.  Oops.
! 	- Don't emit E<> directives inside verbatim blocks.
  
  2000-11-12  Bruce Korb  <bkorb@gnu.org>
  
diff -Nrcpad gcc-12.2.0/contrib/analyze_brprob.py gcc-13.1.0/contrib/analyze_brprob.py
*** gcc-12.2.0/contrib/analyze_brprob.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/analyze_brprob.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # Script to analyze results of our branch prediction heuristics
  #
diff -Nrcpad gcc-12.2.0/contrib/analyze_brprob_spec.py gcc-13.1.0/contrib/analyze_brprob_spec.py
*** gcc-12.2.0/contrib/analyze_brprob_spec.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/analyze_brprob_spec.py	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
--- 1,7 ----
  #!/usr/bin/env python3
  
+ # Copyright (C) 2016-2023 Free Software Foundation, Inc.
+ #
  # This file is part of GCC.
  #
  # GCC is free software; you can redistribute it and/or modify it under
diff -Nrcpad gcc-12.2.0/contrib/bench-stringop gcc-13.1.0/contrib/bench-stringop
*** gcc-12.2.0/contrib/bench-stringop	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/bench-stringop	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  #
  # Contributed by Jan Hubicka <jh@suse.cz>
  #
! # Copyright (C) 2019 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 4,10 ----
  #
  # Contributed by Jan Hubicka <jh@suse.cz>
  #
! # Copyright (C) 2019-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/check-MAINTAINERS.py gcc-13.1.0/contrib/check-MAINTAINERS.py
*** gcc-12.2.0/contrib/check-MAINTAINERS.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check-MAINTAINERS.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2022-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/check-params-in-docs.py gcc-13.1.0/contrib/check-params-in-docs.py
*** gcc-12.2.0/contrib/check-params-in-docs.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check-params-in-docs.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  #
  # Find missing and extra parameters in documentation compared to
  # output of: gcc --help=params.
diff -Nrcpad gcc-12.2.0/contrib/check_GNU_style.py gcc-13.1.0/contrib/check_GNU_style.py
*** gcc-12.2.0/contrib/check_GNU_style.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check_GNU_style.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # Checks some of the GNU style formatting rules in a set of patches.
  # The script is a rewritten of the same bash script and should eventually
*************** def main():
*** 35,43 ****
      format = args.format
  
      if filename == '-':
!         check_GNU_style_file(sys.stdin, None, format)
      else:
!         with open(filename, 'rb') as diff_file:
!             check_GNU_style_file(diff_file, 'utf-8', format)
  
  main()
--- 37,45 ----
      format = args.format
  
      if filename == '-':
!         check_GNU_style_file(sys.stdin, format)
      else:
!         with open(filename, newline='\n') as diff_file:
!             check_GNU_style_file(diff_file, format)
  
  main()
diff -Nrcpad gcc-12.2.0/contrib/check_GNU_style.sh gcc-13.1.0/contrib/check_GNU_style.sh
*** gcc-12.2.0/contrib/check_GNU_style.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check_GNU_style.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/bin/sh
  
  # Checks some of the GNU style formatting rules in a set of patches.
! # Copyright (C) 2010, 2012, 2016  Free Software Foundation, Inc.
  # Contributed by Sebastian Pop <sebastian.pop@amd.com>
  
  # This program is free software; you can redistribute it and/or modify
--- 1,7 ----
  #!/bin/sh
  
  # Checks some of the GNU style formatting rules in a set of patches.
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  # Contributed by Sebastian Pop <sebastian.pop@amd.com>
  
  # This program is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-12.2.0/contrib/check_GNU_style_lib.py gcc-13.1.0/contrib/check_GNU_style_lib.py
*** gcc-12.2.0/contrib/check_GNU_style_lib.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check_GNU_style_lib.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # Checks some of the GNU style formatting rules in a set of patches.
  # The script is a rewritten of the same bash script and should eventually
*************** class SpacesAndTabsMixedTest(unittest.Te
*** 262,268 ****
          r = self.check.check('foo', 123, '\t  a = 123;')
          self.assertIsNone(r)
  
! def check_GNU_style_file(file, file_encoding, format):
      checks = [LineLengthCheck(), SpacesCheck(), TrailingWhitespaceCheck(),
          SentenceSeparatorCheck(), SentenceEndOfCommentCheck(),
          SentenceDotEndCheck(), FunctionParenthesisCheck(),
--- 264,270 ----
          r = self.check.check('foo', 123, '\t  a = 123;')
          self.assertIsNone(r)
  
! def check_GNU_style_file(file, format):
      checks = [LineLengthCheck(), SpacesCheck(), TrailingWhitespaceCheck(),
          SentenceSeparatorCheck(), SentenceEndOfCommentCheck(),
          SentenceDotEndCheck(), FunctionParenthesisCheck(),
*************** def check_GNU_style_file(file, file_enco
*** 271,277 ****
          SpacesAndTabsMixedCheck()]
      errors = []
  
!     patch = PatchSet(file, encoding=file_encoding)
  
      for pfile in patch.added_files + patch.modified_files:
          t = pfile.target_file.lstrip('b/')
--- 273,279 ----
          SpacesAndTabsMixedCheck()]
      errors = []
  
!     patch = PatchSet(file)
  
      for pfile in patch.added_files + patch.modified_files:
          t = pfile.target_file.lstrip('b/')
diff -Nrcpad gcc-12.2.0/contrib/check_makefile_deps.sh gcc-13.1.0/contrib/check_makefile_deps.sh
*** gcc-12.2.0/contrib/check_makefile_deps.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check_makefile_deps.sh	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  #
  # Check for accurate dependencies in gcc/Makefile.in.
  #
! # Copyright (C) 2008, 2012 Free Software Foundation, Inc.
  # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
  #
  # This script is Free Software, and it can be copied, distributed and
--- 2,8 ----
  #
  # Check for accurate dependencies in gcc/Makefile.in.
  #
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
  #
  # This script is Free Software, and it can be copied, distributed and
diff -Nrcpad gcc-12.2.0/contrib/check_warning_flags.sh gcc-13.1.0/contrib/check_warning_flags.sh
*** gcc-12.2.0/contrib/check_warning_flags.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/check_warning_flags.sh	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Check that the warning flags documented in invoke.texi match up
  # with what the compiler accepts.
  #
! # Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
  # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
  #
  # This script is Free Software, and it can be copied, distributed and
--- 3,9 ----
  # Check that the warning flags documented in invoke.texi match up
  # with what the compiler accepts.
  #
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  # Written by Ralf Wildenhues <Ralf.Wildenhues@gmx.de>.
  #
  # This script is Free Software, and it can be copied, distributed and
diff -Nrcpad gcc-12.2.0/contrib/clang-format gcc-13.1.0/contrib/clang-format
*** gcc-12.2.0/contrib/clang-format	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/clang-format	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2015 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
--- 1,4 ----
! # Copyright (C) 2015-2023 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
*************** ForEachMacros: [
*** 63,79 ****
--- 63,95 ----
  'FOR_BB_INSNS_SAFE',
  'FOR_BODY',
  'FOR_COND',
+ 'FOR_EACH_2XWIDER_MODE',
+ 'FOR_EACH_ACTUAL_CHILD',
  'FOR_EACH_AGGR_INIT_EXPR_ARG',
  'FOR_EACH_ALIAS',
  'FOR_EACH_ALLOCNO',
+ 'FOR_EACH_ALLOCNO_CONFLICT',
+ 'FOR_EACH_ALLOCNO_IN_ALLOCNO_SET',
  'FOR_EACH_ALLOCNO_OBJECT',
  'FOR_EACH_ARTIFICIAL_DEF',
  'FOR_EACH_ARTIFICIAL_USE',
+ 'FOR_EACH_BB',
  'FOR_EACH_BB_FN',
+ 'FOR_EACH_BB_IN_BITMAP',
+ 'FOR_EACH_BB_IN_BITMAP_REV',
+ 'FOR_EACH_BB_IN_REGION',
+ 'FOR_EACH_BB_IN_SBITMAP',
+ 'FOR_EACH_BB_REVERSE',
  'FOR_EACH_BB_REVERSE_FN',
+ 'FOR_EACH_BB_REVERSE_IN_REGION',
  'FOR_EACH_BIT_IN_MINMAX_SET',
+ 'FOR_EACH_BSI_IN_REVERSE',
  'FOR_EACH_CALL_EXPR_ARG',
+ 'FOR_EACH_CHILD',
  'FOR_EACH_CLONE',
+ 'FOR_EACH_CODE_MAPPING',
+ 'FOR_EACH_COND_FN_PAIR',
+ 'FOR_EACH_CONFLICT',
  'FOR_EACH_CONST_CALL_EXPR_ARG',
  'FOR_EACH_CONSTRUCTOR_ELT',
  'FOR_EACH_CONSTRUCTOR_VALUE',
*************** ForEachMacros: [
*** 83,98 ****
--- 99,125 ----
  'FOR_EACH_DEFINED_SYMBOL',
  'FOR_EACH_DEFINED_VARIABLE',
  'FOR_EACH_DEP',
+ 'FOR_EACH_DEP_LINK',
  'FOR_EACH_EDGE',
+ 'FOR_EACH_ELEMENT',
+ 'FOR_EACH_ELIM_GRAPH_PRED',
+ 'FOR_EACH_ELIM_GRAPH_SUCC',
  'FOR_EACH_EXPR',
  'FOR_EACH_EXPR_1',
+ 'FOR_EACH_EXPR_ID_IN_SET',
+ 'FOR_EACH_FLOAT_OPERATOR',
+ 'FOR_EACH_FP_TYPE',
  'FOR_EACH_FUNCTION',
  'FOREACH_FUNCTION_ARGS',
  'FOREACH_FUNCTION_ARGS_PTR',
  'FOR_EACH_FUNCTION_WITH_GIMPLE_BODY',
+ 'FOR_EACH_GORI_EXPORT_NAME',
+ 'FOR_EACH_GORI_IMPORT_NAME',
  'FOR_EACH_HASH_TABLE_ELEMENT',
+ 'FOR_EACH_HTAB_ELEMENT',
  'FOR_EACH_IMM_USE_FAST',
  'FOR_EACH_IMM_USE_ON_STMT',
+ 'FOR_EACH_IMM_USE_SAFE',
  'FOR_EACH_IMM_USE_STMT',
  'FOR_EACH_INSN',
  'FOR_EACH_INSN_1',
*************** ForEachMacros: [
*** 103,134 ****
--- 130,197 ----
  'FOR_EACH_INSN_INFO_MW',
  'FOR_EACH_INSN_INFO_USE',
  'FOR_EACH_INSN_USE',
+ 'FOR_EACH_INT_OPERATOR',
+ 'FOR_EACH_INT_TYPE',
+ 'FOR_EACH_INV',
+ 'FOR_EACH_LOAD_BROADCAST',
+ 'FOR_EACH_LOAD_BROADCAST_IMM',
  'FOR_EACH_LOCAL_DECL',
+ 'FOR_EACH_LOG_LINK',
  'FOR_EACH_LOOP',
+ 'FOR_EACH_LOOP_BREAK',
  'FOR_EACH_LOOP_FN',
+ 'FOR_EACH_MODE',
+ 'FOR_EACH_MODE_FROM',
+ 'FOR_EACH_MODE_IN_CLASS',
+ 'FOR_EACH_MODE_UNTIL',
+ 'FOR_EACH_NEST_INFO',
  'FOR_EACH_OBJECT',
  'FOR_EACH_OBJECT_CONFLICT',
+ 'FOR_EACH_OP',
+ 'FOR_EACH_PARTITION_PAIR',
+ 'FOR_EACH_PHI',
  'FOR_EACH_PHI_ARG',
  'FOR_EACH_PHI_OR_STMT_DEF',
  'FOR_EACH_PHI_OR_STMT_USE',
+ 'FOR_EACH_POP',
  'FOR_EACH_PREF',
+ 'FOR_EACH_REF',
+ 'FOR_EACH_REFERENCED_VAR',
+ 'FOR_EACH_REFERENCED_VAR_IN_BITMAP',
+ 'FOR_EACH_REFERENCED_VAR_SAFE',
+ 'FOR_EACH_REF_REV',
+ 'FOR_EACH_REGNO',
  'FOR_EACH_SCALAR',
+ 'FOR_EACH_SIGNED_TYPE',
+ 'FOR_EACH_SSA',
  'FOR_EACH_SSA_DEF_OPERAND',
+ 'FOR_EACH_SSA_MAYDEF_OPERAND',
+ 'FOR_EACH_SSA_MUST_AND_MAY_DEF_OPERAND',
+ 'FOR_EACH_SSA_MUSTDEF_OPERAND',
+ 'FOR_EACH_SSA_NAME',
  'FOR_EACH_SSA_TREE_OPERAND',
  'FOR_EACH_SSA_USE_OPERAND',
+ 'FOR_EACH_SSA_VDEF_OPERAND',
  'FOR_EACH_STATIC_INITIALIZER',
+ 'FOR_EACH_STATIC_VARIABLE',
+ 'FOR_EACH_STMT_IN_REVERSE',
+ 'FOR_EACH_SUBINSN',
  'FOR_EACH_SUBRTX',
  'FOR_EACH_SUBRTX_PTR',
  'FOR_EACH_SUBRTX_VAR',
  'FOR_EACH_SUCC',
  'FOR_EACH_SUCC_1',
  'FOR_EACH_SYMBOL',
+ 'FOR_EACH_TYPE',
+ 'FOR_EACH_UNSIGNED_TYPE',
+ 'FOR_EACH_VALUE_ID_IN_SET',
  'FOR_EACH_VARIABLE',
  'FOR_EACH_VEC_ELT',
  'FOR_EACH_VEC_ELT_FROM',
  'FOR_EACH_VEC_ELT_REVERSE',
  'FOR_EACH_VEC_SAFE_ELT',
  'FOR_EACH_VEC_SAFE_ELT_REVERSE',
+ 'FOR_EACH_WIDER_MODE',
  'FOR_EXPR',
  'FOR_INIT_STMT',
  'FOR_SCOPE'
diff -Nrcpad gcc-12.2.0/contrib/compare-all-tests gcc-13.1.0/contrib/compare-all-tests
*** gcc-12.2.0/contrib/compare-all-tests	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/compare-all-tests	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #! /bin/bash
  
  # Compare the assembly language output for all the gcc tests.
! # Copyright (C) 2009, 2011 Free Software Foundation, Inc.
  # Contributed by Paolo Bonzini.
  #
  # Invoke it as "bash compare-all-tests target1 target2 ... targetN".
--- 1,7 ----
  #! /bin/bash
  
  # Compare the assembly language output for all the gcc tests.
! # Copyright (C) 2009-2023 Free Software Foundation, Inc.
  # Contributed by Paolo Bonzini.
  #
  # Invoke it as "bash compare-all-tests target1 target2 ... targetN".
diff -Nrcpad gcc-12.2.0/contrib/compare-debug gcc-13.1.0/contrib/compare-debug
*** gcc-12.2.0/contrib/compare-debug	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/compare-debug	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  
  # Compare stripped copies of two given object files.
  
! # Copyright (C) 2007, 2008, 2009, 2010, 2012, 2020 Free Software Foundation
  # Originally by Alexandre Oliva <aoliva@redhat.com>
  
  # This file is part of GCC.
--- 2,8 ----
  
  # Compare stripped copies of two given object files.
  
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  # Originally by Alexandre Oliva <aoliva@redhat.com>
  
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/contrib/compare-lto gcc-13.1.0/contrib/compare-lto
*** gcc-12.2.0/contrib/compare-lto	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/compare-lto	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  
  # Compare copies of two given object files.
  
! # Copyright (C) 2007, 2008, 2009, 2010, 2012 Free Software Foundation
  # Originally by Alexandre Oliva <aoliva@redhat.com>
  # Modified for LTO bootstrap by Richard Biener <rguenther@suse.de>
  
--- 2,8 ----
  
  # Compare copies of two given object files.
  
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  # Originally by Alexandre Oliva <aoliva@redhat.com>
  # Modified for LTO bootstrap by Richard Biener <rguenther@suse.de>
  
diff -Nrcpad gcc-12.2.0/contrib/compareSumTests3 gcc-13.1.0/contrib/compareSumTests3
*** gcc-12.2.0/contrib/compareSumTests3	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/compareSumTests3	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  #
  # Author: Matthew Sachs <msachs@apple.com>
  #
! # Copyright (c) 2006 Free Software Foundation.
  #
  # This file is part of GCC.
  #
--- 5,11 ----
  #
  # Author: Matthew Sachs <msachs@apple.com>
  #
! # Copyright (C) 2006-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/compare_two_ftime_report_sets gcc-13.1.0/contrib/compare_two_ftime_report_sets
*** gcc-12.2.0/contrib/compare_two_ftime_report_sets	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/compare_two_ftime_report_sets	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  
  # Contributed by Lawrence Crowl <crowl@google.com>
  #
! # Copyright (C) 2012 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 5,11 ----
  
  # Contributed by Lawrence Crowl <crowl@google.com>
  #
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/config-list.mk gcc-13.1.0/contrib/config-list.mk
*** gcc-12.2.0/contrib/config-list.mk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/config-list.mk	Wed Apr 26 07:09:39 2023
*************** GCC_SRC_DIR=../../gcc
*** 29,35 ****
  #     > make.out 2>&1 &
  #
  
! LIST = aarch64-elf aarch64-linux-gnu aarch64-rtems \
    alpha-linux-gnu alpha-netbsd alpha-openbsd \
    alpha64-dec-vms alpha-dec-vms \
    amdgcn-amdhsa \
--- 29,35 ----
  #     > make.out 2>&1 &
  #
  
! LIST = aarch64-elf aarch64-freebsd13 aarch64-linux-gnu aarch64-rtems \
    alpha-linux-gnu alpha-netbsd alpha-openbsd \
    alpha64-dec-vms alpha-dec-vms \
    amdgcn-amdhsa \
*************** LIST = aarch64-elf aarch64-linux-gnu aar
*** 40,65 ****
    arm-symbianelf avr-elf \
    bfin-elf bfin-uclinux bfin-linux-uclibc bfin-rtems bfin-openbsd \
    bpf-unknown-none \
!   c6x-elf c6x-uclinux cr16-elfOPT-enable-obsolete cris-elf \
    csky-elf csky-linux-gnu \
    epiphany-elf epiphany-elfOPT-with-stack-offset=16 fido-elf \
    fr30-elf frv-elf frv-linux ft32-elf h8300-elf hppa-linux-gnu \
    hppa-linux-gnuOPT-enable-sjlj-exceptions=yes hppa64-linux-gnu \
!   hppa2.0-hpux10.1OPT-enable-obsolete hppa64-hpux11.3 \
    hppa64-hpux11.0OPT-enable-sjlj-exceptions=yes \
-   hppa2.0-hpux11.9OPT-enable-obsolete \
    i686-pc-linux-gnu i686-apple-darwin i686-apple-darwin9 i686-apple-darwin10 \
!   i486-freebsd4 i686-freebsd6 i686-kfreebsd-gnu \
    i686-netbsdelf9 \
!   i686-openbsd i686-elf i686-kopensolaris-gnu i686-symbolics-gnu \
    i686-pc-msdosdjgpp i686-lynxos i686-nto-qnx \
    i686-rtems i686-solaris2.11 i686-wrs-vxworks \
    i686-wrs-vxworksae \
    i686-cygwinOPT-enable-threads=yes i686-mingw32crt ia64-elf \
!   ia64-freebsd6 ia64-linux ia64-hpux ia64-hp-vms iq2000-elf lm32-elf \
    lm32-rtems lm32-uclinux \
    loongarch64-linux-gnuf64 loongarch64-linux-gnuf32 loongarch64-linux-gnusf \
!   m32c-rtems m32c-elf m32r-elf m32rle-elf \
    m68k-elf m68k-netbsdelf \
    m68k-uclinux m68k-linux m68k-rtems \
    mcore-elf microblaze-linux microblaze-elf \
--- 40,64 ----
    arm-symbianelf avr-elf \
    bfin-elf bfin-uclinux bfin-linux-uclibc bfin-rtems bfin-openbsd \
    bpf-unknown-none \
!   c6x-elf c6x-uclinux cris-elf \
    csky-elf csky-linux-gnu \
    epiphany-elf epiphany-elfOPT-with-stack-offset=16 fido-elf \
    fr30-elf frv-elf frv-linux ft32-elf h8300-elf hppa-linux-gnu \
    hppa-linux-gnuOPT-enable-sjlj-exceptions=yes hppa64-linux-gnu \
!   hppa64-hpux11.3 \
    hppa64-hpux11.0OPT-enable-sjlj-exceptions=yes \
    i686-pc-linux-gnu i686-apple-darwin i686-apple-darwin9 i686-apple-darwin10 \
!   i686-freebsd13 i686-kfreebsd-gnu \
    i686-netbsdelf9 \
!   i686-openbsd i686-elf i686-kopensolaris-gnu i686-gnu \
    i686-pc-msdosdjgpp i686-lynxos i686-nto-qnx \
    i686-rtems i686-solaris2.11 i686-wrs-vxworks \
    i686-wrs-vxworksae \
    i686-cygwinOPT-enable-threads=yes i686-mingw32crt ia64-elf \
!   ia64-linux ia64-hpux ia64-hp-vms iq2000-elf lm32-elf \
    lm32-rtems lm32-uclinux \
    loongarch64-linux-gnuf64 loongarch64-linux-gnuf32 loongarch64-linux-gnusf \
!   m32c-elf m32r-elf m32rle-elf \
    m68k-elf m68k-netbsdelf \
    m68k-uclinux m68k-linux m68k-rtems \
    mcore-elf microblaze-linux microblaze-elf \
*************** LIST = aarch64-elf aarch64-linux-gnu aar
*** 77,83 ****
    or1k-elf or1k-linux-uclibc or1k-linux-musl or1k-rtems \
    pdp11-aout \
    powerpc-darwin8 \
!   powerpc-darwin7 powerpc64-darwin powerpc-freebsd6 powerpc-netbsd \
    powerpc-eabisimaltivec powerpc-eabisim ppc-elf \
    powerpc-eabialtivec powerpc-xilinx-eabi powerpc-eabi \
    powerpc-rtems \
--- 76,82 ----
    or1k-elf or1k-linux-uclibc or1k-linux-musl or1k-rtems \
    pdp11-aout \
    powerpc-darwin8 \
!   powerpc-darwin7 powerpc64-darwin powerpc-freebsd13 powerpc-netbsd \
    powerpc-eabisimaltivec powerpc-eabisim ppc-elf \
    powerpc-eabialtivec powerpc-xilinx-eabi powerpc-eabi \
    powerpc-rtems \
*************** LIST = aarch64-elf aarch64-linux-gnu aar
*** 94,107 ****
    sparc-leon-elf sparc-rtems sparc-linux-gnu \
    sparc-leon3-linux-gnuOPT-enable-target=all sparc-netbsdelf \
    sparc64-sun-solaris2.11OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \
!   sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux sparc64-freebsd6 \
    sparc64-netbsd sparc64-openbsd \
-   tilegx-linux-gnuOPT-enable-obsolete tilegxbe-linux-gnuOPT-enable-obsolete \
-   tilepro-linux-gnuOPT-enable-obsolete \
    v850e1-elf v850e-elf v850-elf v850-rtems vax-linux-gnu \
!   vax-netbsdelf visium-elf x86_64-apple-darwin \
    x86_64-pc-linux-gnuOPT-with-fpmath=avx \
!   x86_64-elfOPT-with-fpmath=sse x86_64-freebsd6 x86_64-netbsd \
    x86_64-w64-mingw32 \
    x86_64-mingw32OPT-enable-sjlj-exceptions=yes x86_64-rtems \
    xstormy16-elf xtensa-elf \
--- 93,104 ----
    sparc-leon-elf sparc-rtems sparc-linux-gnu \
    sparc-leon3-linux-gnuOPT-enable-target=all sparc-netbsdelf \
    sparc64-sun-solaris2.11OPT-with-gnu-ldOPT-with-gnu-asOPT-enable-threads=posix \
!   sparc-wrs-vxworks sparc64-elf sparc64-rtems sparc64-linux \
    sparc64-netbsd sparc64-openbsd \
    v850e1-elf v850e-elf v850-elf v850-rtems vax-linux-gnu \
!   vax-netbsdelf visium-elf x86_64-apple-darwin x86_64-gnu \
    x86_64-pc-linux-gnuOPT-with-fpmath=avx \
!   x86_64-elfOPT-with-fpmath=sse x86_64-freebsd13 x86_64-netbsd \
    x86_64-w64-mingw32 \
    x86_64-mingw32OPT-enable-sjlj-exceptions=yes x86_64-rtems \
    xstormy16-elf xtensa-elf \
diff -Nrcpad gcc-12.2.0/contrib/dg-cmp-results.sh gcc-13.1.0/contrib/dg-cmp-results.sh
*** gcc-12.2.0/contrib/dg-cmp-results.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/dg-cmp-results.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  #!/bin/bash
! # Copyright (C) 2006, 2008 Free Software Foundation
  #
  # Analyze changes in GCC DejaGNU test logs for binutils, gcc, gdb, etc.
  # Original version written in 2005 by James Lemke <jwlemke@wasabisystems.com>.
--- 1,5 ----
  #!/bin/bash
! # Copyright (C) 2006-2023 Free Software Foundation, Inc.
  #
  # Analyze changes in GCC DejaGNU test logs for binutils, gcc, gdb, etc.
  # Original version written in 2005 by James Lemke <jwlemke@wasabisystems.com>.
diff -Nrcpad gcc-12.2.0/contrib/dg-extract-results.py gcc-13.1.0/contrib/dg-extract-results.py
*** gcc-12.2.0/contrib/dg-extract-results.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/dg-extract-results.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/python
  #
! # Copyright (C) 2014 Free Software Foundation, Inc.
  #
  # This script is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 1,6 ----
  #!/usr/bin/python
  #
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  #
  # This script is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/dg-extract-results.sh gcc-13.1.0/contrib/dg-extract-results.sh
*** gcc-12.2.0/contrib/dg-extract-results.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/dg-extract-results.sh	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  # The resulting file can be used with test result comparison scripts for
  # results from tests that were run in parallel.  See usage() below.
  
! # Copyright (C) 2008, 2009, 2010, 2012 Free Software Foundation
  # Contributed by Janis Johnson <janis187@us.ibm.com>
  #
  # This file is part of GCC.
--- 6,12 ----
  # The resulting file can be used with test result comparison scripts for
  # results from tests that were run in parallel.  See usage() below.
  
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  # Contributed by Janis Johnson <janis187@us.ibm.com>
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/contrib/dg-out-generator.pl gcc-13.1.0/contrib/dg-out-generator.pl
*** gcc-12.2.0/contrib/dg-out-generator.pl	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/contrib/dg-out-generator.pl	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,79 ----
+ #!/usr/bin/env perl
+ #
+ # Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ # Contributed by Arsen Arsenović.
+ #
+ # This script 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.
+ 
+ # This script reads program output on STDIN, and out of it produces a block of
+ # dg-output lines that can be yanked at the end of a file.  It will escape
+ # special ARE and Tcl constructs automatically.
+ #
+ # Each argument passed on the standard input is treated as a string to be
+ # replaced by ``.*'' in the final result.  This is intended to mask out build
+ # paths, filenames, etc.
+ #
+ # Usage example:
+ 
+ # $ g++-13 -fcontracts -o test \
+ #  'g++.dg/contracts/contracts-access1.C' && \
+ #   ./test |& dg-out-generator.pl 'g++.dg/contracts/contracts-access1.C'
+ # // { dg-output {contract violation in function Base::b at .*:11: pub > 0(\n|\r\n|\r)} }
+ # // { dg-output {\[level:default, role:default, continuation mode:never\](\n|\r\n|\r)} }
+ # // { dg-output {terminate called without an active exception(\n|\r\n|\r)} }
+ 
+ # You can now freely dump the above into your testcase.
+ 
+ use strict;
+ use warnings;
+ use POSIX 'floor';
+ 
+ my $escapees = '(' . join ('|', map { quotemeta } @ARGV) . ')';
+ 
+ sub gboundary($)
+ {
+   my $str = shift;
+   my $sz = 10.0;
+   for (;;)
+     {
+       my $bnd = join '', (map chr 64 + rand 27, 1 .. floor $sz);
+       return $bnd unless index ($str, $bnd) >= 0;
+       $sz += 0.1;
+     }
+ }
+ 
+ while (<STDIN>)
+   {
+     # Escape our escapees.
+     my $boundary;
+     if (@ARGV) {
+       # Checking this is necessary to avoid a spurious .* between all
+       # characters if no arguments are passed.
+       $boundary = gboundary $_;
+       s/$escapees/$boundary/g;
+     }
+ 
+     # Quote stuff special in Tcl ARE.  This step also effectively nulls any
+     # concern about escaping.  As long as all curly braces are escaped, the
+     # string will, when passing through the braces rule of Tcl, be identical to
+     # the input.
+     s/([[\]*+?{}()\\])/\\$1/g;
+ 
+     # Newlines should be more tolerant.
+     s/\n$/(\\n|\\r\\n|\\r)/;
+ 
+     # Then split out the boundary, replacing it with .*.
+     s/$boundary/.*/g if defined $boundary;
+ 
+     # Then, let's print it in a dg-output block.  If you'd prefer /* keep in
+     # mind that if your string contains */ it could terminate the comment
+     # early.  Maybe add an extra s!\*/!*()/!g or something.
+     print "// { dg-output {$_} }\n";
+   }
+ 
+ # File Local Vars:
+ # indent-tabs-mode: nil
+ # End:
diff -Nrcpad gcc-12.2.0/contrib/dglib.pm gcc-13.1.0/contrib/dglib.pm
*** gcc-12.2.0/contrib/dglib.pm	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/dglib.pm	Wed Apr 26 07:09:39 2023
***************
*** 10,16 ****
  #		true if and only if it is a passing result (PASS, XFAIL, or
  #		KFAIL.)
  #
! # Copyright (c) 2006 Free Software Foundation.
  #
  # This file is part of GCC.
  #
--- 10,16 ----
  #		true if and only if it is a passing result (PASS, XFAIL, or
  #		KFAIL.)
  #
! # Copyright (C) 2006-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/download_prerequisites gcc-13.1.0/contrib/download_prerequisites
*** gcc-12.2.0/contrib/download_prerequisites	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/download_prerequisites	Wed Apr 26 07:09:39 2023
*************** The following options are available:
*** 77,83 ****
  "
  
  versiontext="${program} ${version}
! Copyright (C) 2016-2021 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
  
--- 77,83 ----
  "
  
  versiontext="${program} ${version}
! Copyright (C) 2016-2023 Free Software Foundation, Inc.
  This is free software; see the source for copying conditions.  There is NO
  warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
  
diff -Nrcpad gcc-12.2.0/contrib/filter-clang-warnings.py gcc-13.1.0/contrib/filter-clang-warnings.py
*** gcc-12.2.0/contrib/filter-clang-warnings.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/filter-clang-warnings.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  #
  # Script to analyze warnings produced by clang.
  #
*************** def skip_warning(filename, message):
*** 39,45 ****
                   '-Wignored-attributes', '-Wgnu-zero-variadic-macro-arguments',
                   '-Wformat-security', '-Wundefined-internal',
                   '-Wunknown-warning-option', '-Wc++20-extensions',
!                  '-Wbitwise-instead-of-logical'],
              'insn-modes.cc': ['-Wshift-count-overflow'],
              'insn-emit.cc': ['-Wtautological-compare'],
              'insn-attrtab.cc': ['-Wparentheses-equality'],
--- 41,47 ----
                   '-Wignored-attributes', '-Wgnu-zero-variadic-macro-arguments',
                   '-Wformat-security', '-Wundefined-internal',
                   '-Wunknown-warning-option', '-Wc++20-extensions',
!                  '-Wbitwise-instead-of-logical', 'egrep is obsolescent'],
              'insn-modes.cc': ['-Wshift-count-overflow'],
              'insn-emit.cc': ['-Wtautological-compare'],
              'insn-attrtab.cc': ['-Wparentheses-equality'],
*************** def skip_warning(filename, message):
*** 57,64 ****
              'lex.cc': ['-Wc++20-attribute-extensions'],
      }
  
!     for name, ignores in ignores.items():
!         for i in ignores:
              if name in filename and i in message:
                  return True
      return False
--- 59,66 ----
              'lex.cc': ['-Wc++20-attribute-extensions'],
      }
  
!     for name, ignore in ignores.items():
!         for i in ignore:
              if name in filename and i in message:
                  return True
      return False
*************** parser.add_argument('log', help='Log fil
*** 69,86 ****
  args = parser.parse_args()
  
  lines = [line.strip() for line in open(args.log)]
! total = 0
! messages = []
  for line in lines:
      token = ': warning: '
      i = line.find(token)
      if i != -1:
          location = line[:i]
          message = line[i + len(token):]
          if not skip_warning(location, message):
!             total += 1
!             messages.append(line)
  
  for line in sorted(messages):
      print(line)
! print('\nTotal warnings: %d' % total)
--- 71,89 ----
  args = parser.parse_args()
  
  lines = [line.strip() for line in open(args.log)]
! messages = set()
  for line in lines:
      token = ': warning: '
      i = line.find(token)
      if i != -1:
          location = line[:i]
          message = line[i + len(token):]
+         if '/libffi/' in location or location.startswith('Makefile'):
+             continue
          if not skip_warning(location, message):
!             messages.add(line)
  
  for line in sorted(messages):
      print(line)
! 
! print('\nTotal warnings: %d' % len(messages))
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/git_check_commit.py gcc-13.1.0/contrib/gcc-changelog/git_check_commit.py
*** gcc-12.2.0/contrib/gcc-changelog/git_check_commit.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/git_check_commit.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** for git_commit in parse_git_revisions(ar
*** 40,46 ****
--- 42,54 ----
      if git_commit.success:
          if args.print_changelog:
              git_commit.print_output()
+         if args.verbose and git_commit.warnings:
+             for warning in git_commit.warnings:
+                 print('WARN: %s' % warning)
      else:
+         if args.verbose and git_commit.warnings:
+             for warning in git_commit.warnings:
+                 print('WARN: %s' % warning)
          for error in git_commit.errors:
              print('ERR: %s' % error)
              if args.verbose and error.details:
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/git_commit.py gcc-13.1.0/contrib/gcc-changelog/git_commit.py
*** gcc-12.2.0/contrib/gcc-changelog/git_commit.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/git_commit.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** import difflib
*** 20,25 ****
--- 22,28 ----
  import os
  import re
  import sys
+ from collections import defaultdict
  
  default_changelog_locations = {
      'c++tools',
*************** default_changelog_locations = {
*** 41,49 ****
--- 44,54 ----
      'gcc/go',
      'gcc/jit',
      'gcc/lto',
+     'gcc/m2',
      'gcc/objc',
      'gcc/objcp',
      'gcc/po',
+     'gcc/rust',
      'gcc/testsuite',
      'gnattools',
      'gotools',
*************** default_changelog_locations = {
*** 62,73 ****
      'libgcc/config/avr/libf7',
      'libgcc/config/libbid',
      'libgfortran',
      'libgomp',
      'libhsail-rt',
      'libiberty',
      'libitm',
      'libobjc',
-     'liboffloadmic',
      'libphobos',
      'libquadmath',
      'libsanitizer',
--- 67,78 ----
      'libgcc/config/avr/libf7',
      'libgcc/config/libbid',
      'libgfortran',
+     'libgm2',
      'libgomp',
      'libhsail-rt',
      'libiberty',
      'libitm',
      'libobjc',
      'libphobos',
      'libquadmath',
      'libsanitizer',
*************** bug_components = {
*** 121,126 ****
--- 126,132 ----
      'preprocessor',
      'regression',
      'rtl-optimization',
+     'rust',
      'sanitizer',
      'spam',
      'target',
*************** author_line_regex = \
*** 157,165 ****
          re.compile(r'^(?P<datetime>\d{4}-\d{2}-\d{2})\ {2}(?P<name>.*  <.*>)')
  additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.*  <.*>)')
  changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?')
! subject_pr_regex = re.compile(r'(^|\W)PR\s+(?P<component>[a-zA-Z+-]+)/(?P<pr>\d{4,7})')
  subject_pr2_regex = re.compile(r'[(\[]PR\s*(?P<pr>\d{4,7})[)\]]')
! pr_regex = re.compile(r'\tPR (?P<component>[a-z+-]+\/)?(?P<pr>[0-9]+)$')
  dr_regex = re.compile(r'\tDR ([0-9]+)$')
  star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
  end_of_location_regex = re.compile(r'[\[<(:]')
--- 163,171 ----
          re.compile(r'^(?P<datetime>\d{4}-\d{2}-\d{2})\ {2}(?P<name>.*  <.*>)')
  additional_author_regex = re.compile(r'^\t(?P<spaces>\ *)?(?P<name>.*  <.*>)')
  changelog_regex = re.compile(r'^(?:[fF]or +)?([a-z0-9+-/]*)ChangeLog:?')
! subject_pr_regex = re.compile(r'(^|\W)PR\s+(?P<component>[a-zA-Z0-9+-]+)/(?P<pr>\d{4,7})')
  subject_pr2_regex = re.compile(r'[(\[]PR\s*(?P<pr>\d{4,7})[)\]]')
! pr_regex = re.compile(r'\tPR (?P<component>[a-z0-9+-]+\/)?(?P<pr>[0-9]+)$')
  dr_regex = re.compile(r'\tDR ([0-9]+)$')
  star_prefix_regex = re.compile(r'\t\*(?P<spaces>\ *)(?P<content>.*)')
  end_of_location_regex = re.compile(r'[\[<(:]')
*************** class GitCommit:
*** 299,304 ****
--- 305,311 ----
          self.changes = None
          self.changelog_entries = []
          self.errors = []
+         self.warnings = []
          self.top_level_authors = []
          self.co_authors = []
          self.top_level_prs = []
*************** class GitCommit:
*** 366,371 ****
--- 373,379 ----
              self.check_for_broken_parentheses()
              self.deduce_changelog_locations()
              self.check_file_patterns()
+             self.check_line_start()
              if not self.errors:
                  self.check_mentioned_files()
                  self.check_for_correct_changelog()
*************** class GitCommit:
*** 614,619 ****
--- 622,634 ----
                  msg = 'bad parentheses wrapping'
                  self.errors.append(Error(msg, entry.parentheses_stack[-1]))
  
+     def check_line_start(self):
+         for entry in self.changelog_entries:
+             for line in entry.lines:
+                 if line.startswith('\t '):
+                     msg = 'extra space after tab'
+                     self.errors.append(Error(msg, line))
+ 
      def get_file_changelog_location(self, changelog_file):
          for file in self.info.modified_files:
              if file[0] == changelog_file:
*************** class GitCommit:
*** 626,632 ****
  
      def deduce_changelog_locations(self):
          for entry in self.changelog_entries:
!             if not entry.folder:
                  changelog = None
                  for file in entry.files:
                      location = self.get_file_changelog_location(file)
--- 641,647 ----
  
      def deduce_changelog_locations(self):
          for entry in self.changelog_entries:
!             if entry.folder is None:
                  changelog = None
                  for file in entry.files:
                      location = self.get_file_changelog_location(file)
*************** class GitCommit:
*** 693,698 ****
--- 708,714 ----
                  msg += f' (did you mean "{candidates[0]}"?)'
                  details = '\n'.join(difflib.Differ().compare([file], [candidates[0]])).rstrip()
              self.errors.append(Error(msg, file, details))
+         auto_add_warnings = defaultdict(list)
          for file in sorted(changed_files - mentioned_files):
              if not self.in_ignored_location(file):
                  if file in self.new_files:
*************** class GitCommit:
*** 707,717 ****
                          if not prs:
                              # if all ChangeLog entries have identical PRs
                              # then use them
!                             prs = self.changelog_entries[0].prs
!                             for entry in self.changelog_entries:
!                                 if entry.prs != prs:
!                                     prs = []
!                                     break
                          entry = ChangeLogEntry(changelog_location,
                                                 self.top_level_authors,
                                                 prs)
--- 723,734 ----
                          if not prs:
                              # if all ChangeLog entries have identical PRs
                              # then use them
!                             if self.changelog_entries:
!                                 prs = self.changelog_entries[0].prs
!                                 for entry in self.changelog_entries:
!                                     if entry.prs != prs:
!                                         prs = []
!                                         break
                          entry = ChangeLogEntry(changelog_location,
                                                 self.top_level_authors,
                                                 prs)
*************** class GitCommit:
*** 724,729 ****
--- 741,747 ----
                          file = file[len(entry.folder):].lstrip('/')
                          entry.lines.append('\t* %s: New file.' % file)
                          entry.files.append(file)
+                         auto_add_warnings[entry.folder].append(file)
                      else:
                          msg = 'new file in the top-level folder not mentioned in a ChangeLog'
                          self.errors.append(Error(msg, file))
*************** class GitCommit:
*** 741,746 ****
--- 759,769 ----
              if pattern not in used_patterns:
                  error = "pattern doesn't match any changed files"
                  self.errors.append(Error(error, pattern))
+         for entry, val in auto_add_warnings.items():
+             if len(val) == 1:
+                 self.warnings.append(f"Auto-added new file '{entry}/{val[0]}'")
+             else:
+                 self.warnings.append(f"Auto-added {len(val)} new files in '{entry}'")
  
      def check_for_correct_changelog(self):
          for entry in self.changelog_entries:
*************** class GitCommit:
*** 816,821 ****
--- 839,850 ----
          for error in self.errors:
              print(error)
  
+     def print_warnings(self):
+         if self.warnings:
+             print('Warnings:')
+             for warning in self.warnings:
+                 print(warning)
+ 
      def check_commit_email(self):
          # Parse 'Martin Liska  <mliska@suse.cz>'
          email = self.info.author.split(' ')[-1].strip('<>')
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/git_email.py gcc-13.1.0/contrib/gcc-changelog/git_email.py
*** gcc-12.2.0/contrib/gcc-changelog/git_email.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/git_email.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** unidiff_supports_renaming = hasattr(Patc
*** 37,50 ****
  class GitEmail(GitCommit):
      def __init__(self, filename):
          self.filename = filename
-         diff = PatchSet.from_filename(filename)
          date = None
          author = None
          subject = ''
  
          subject_last = False
!         with open(self.filename, 'r') as f:
!             lines = f.read().splitlines()
          lines = list(takewhile(lambda line: line != '---', lines))
          for line in lines:
              if line.startswith(DATE_PREFIX):
--- 39,53 ----
  class GitEmail(GitCommit):
      def __init__(self, filename):
          self.filename = filename
          date = None
          author = None
          subject = ''
  
          subject_last = False
!         with open(self.filename, newline='\n') as f:
!             data = f.read()
!             diff = PatchSet(data)
!             lines = data.splitlines()
          lines = list(takewhile(lambda line: line != '---', lines))
          for line in lines:
              if line.startswith(DATE_PREFIX):
*************** if __name__ == '__main__':
*** 116,126 ****
  
          success = 0
          for full in sorted(allfiles):
!             email = GitEmail(full, False)
              print(email.filename)
              if email.success:
                  success += 1
                  print('  OK')
              else:
                  for error in email.errors:
                      print('  ERR: %s' % error)
--- 119,131 ----
  
          success = 0
          for full in sorted(allfiles):
!             email = GitEmail(full)
              print(email.filename)
              if email.success:
                  success += 1
                  print('  OK')
+                 for warning in email.warnings:
+                     print('  WARN: %s' % warning)
              else:
                  for error in email.errors:
                      print('  ERR: %s' % error)
*************** if __name__ == '__main__':
*** 132,137 ****
--- 137,143 ----
          if email.success:
              print('OK')
              email.print_output()
+             email.print_warnings()
          else:
              if not email.info.lines:
                  print('Error: patch contains no parsed lines', file=sys.stderr)
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/git_repository.py gcc-13.1.0/contrib/gcc-changelog/git_repository.py
*** gcc-12.2.0/contrib/gcc-changelog/git_repository.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/git_repository.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/git_update_version.py gcc-13.1.0/contrib/gcc-changelog/git_update_version.py
*** gcc-12.2.0/contrib/gcc-changelog/git_update_version.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/git_update_version.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 18,23 ****
--- 20,26 ----
  
  import argparse
  import datetime
+ import logging
  import os
  
  from git import Repo
*************** IGNORED_COMMITS = (
*** 32,38 ****
          '04a040d907a83af54e0a98bdba5bfabc0ef4f700',
          '2e96b5f14e4025691b57d2301d71aa6092ed44bc',
          '3ab5c8cd03d92bf4ec41e351820349d92fbc40c4',
!         '86d8e0c0652ef5236a460b75c25e4f7093cc0651')
  
  
  def read_timestamp(path):
--- 35,50 ----
          '04a040d907a83af54e0a98bdba5bfabc0ef4f700',
          '2e96b5f14e4025691b57d2301d71aa6092ed44bc',
          '3ab5c8cd03d92bf4ec41e351820349d92fbc40c4',
!         '86d8e0c0652ef5236a460b75c25e4f7093cc0651',
!         'e4cba49413ca429dc82f6aa2e88129ecb3fdd943',
!         '1957bedf29a1b2cc231972aba680fe80199d5498')
! 
! FORMAT = '%(asctime)s:%(levelname)s:%(name)s:%(message)s'
! logging.basicConfig(level=logging.INFO, format=FORMAT,
!                     handlers=[
!                         logging.FileHandler('/tmp/git_update_version.txt'),
!                         logging.StreamHandler()
!                     ])
  
  
  def read_timestamp(path):
*************** def read_timestamp(path):
*** 43,53 ****
  def prepend_to_changelog_files(repo, folder, git_commit, add_to_git):
      if not git_commit.success:
          for error in git_commit.errors:
!             print(error)
          raise AssertionError()
      for entry, output in git_commit.to_changelog_entries(use_commit_ts=True):
          full_path = os.path.join(folder, entry, 'ChangeLog')
!         print('writing to %s' % full_path)
          if os.path.exists(full_path):
              with open(full_path) as f:
                  content = f.read()
--- 55,65 ----
  def prepend_to_changelog_files(repo, folder, git_commit, add_to_git):
      if not git_commit.success:
          for error in git_commit.errors:
!             logging.info(error)
          raise AssertionError()
      for entry, output in git_commit.to_changelog_entries(use_commit_ts=True):
          full_path = os.path.join(folder, entry, 'ChangeLog')
!         logging.info('writing to %s' % full_path)
          if os.path.exists(full_path):
              with open(full_path) as f:
                  content = f.read()
*************** def prepend_to_changelog_files(repo, fol
*** 62,69 ****
              repo.git.add(full_path)
  
  
! active_refs = ['master', 'releases/gcc-9', 'releases/gcc-10',
!                'releases/gcc-11']
  
  parser = argparse.ArgumentParser(description='Update DATESTAMP and generate '
                                   'ChangeLog entries')
--- 74,81 ----
              repo.git.add(full_path)
  
  
! active_refs = ['master', 'releases/gcc-10',
!                'releases/gcc-11', 'releases/gcc-12']
  
  parser = argparse.ArgumentParser(description='Update DATESTAMP and generate '
                                   'ChangeLog entries')
*************** def update_current_branch(ref_name):
*** 95,101 ****
          commit = commit.parents[-1]
          commit_count += 1
  
!     print('%d revisions since last Daily bump' % commit_count)
      datestamp_path = os.path.join(args.git_path, 'gcc/DATESTAMP')
      if (read_timestamp(datestamp_path) != current_timestamp
              or args.dry_mode or args.current):
--- 107,113 ----
          commit = commit.parents[-1]
          commit_count += 1
  
!     logging.info('%d revisions since last Daily bump' % commit_count)
      datestamp_path = os.path.join(args.git_path, 'gcc/DATESTAMP')
      if (read_timestamp(datestamp_path) != current_timestamp
              or args.dry_mode or args.current):
*************** def update_current_branch(ref_name):
*** 117,141 ****
                                   branch.name.split('/')[-1] + '.patch')
              with open(patch, 'w+') as f:
                  f.write(diff)
!             print('branch diff written to %s' % patch)
              repo.git.checkout(force=True)
          else:
              # update timestamp
!             print('DATESTAMP will be changed:')
              with open(datestamp_path, 'w+') as f:
                  f.write(current_timestamp)
              repo.git.add(datestamp_path)
              if not args.current:
                  repo.index.commit('Daily bump.')
                  if args.push:
!                     repo.git.push('origin', branch)
!                     print('branch is pushed')
      else:
!         print('DATESTAMP unchanged')
  
  
  if args.current:
!     print('=== Working on the current branch ===', flush=True)
      update_current_branch()
  else:
      for ref in origin.refs:
--- 129,157 ----
                                   branch.name.split('/')[-1] + '.patch')
              with open(patch, 'w+') as f:
                  f.write(diff)
!             logging.info('branch diff written to %s' % patch)
              repo.git.checkout(force=True)
          else:
              # update timestamp
!             logging.info('DATESTAMP will be changed:')
              with open(datestamp_path, 'w+') as f:
                  f.write(current_timestamp)
              repo.git.add(datestamp_path)
              if not args.current:
                  repo.index.commit('Daily bump.')
+                 logging.info('commit is done')
                  if args.push:
!                     try:
!                         repo.git.push('origin', branch)
!                         logging.info('branch is pushed')
!                     except Exception:
!                         logging.exception('git push failed')
      else:
!         logging.info('DATESTAMP unchanged')
  
  
  if args.current:
!     logging.info('=== Working on the current branch ===')
      update_current_branch()
  else:
      for ref in origin.refs:
*************** else:
*** 146,155 ****
                  branch = repo.branches[name]
              else:
                  branch = repo.create_head(name, ref).set_tracking_branch(ref)
!             print('=== Working on: %s ===' % branch, flush=True)
              branch.checkout()
              origin.pull(rebase=True)
!             print('branch pulled and checked out')
              update_current_branch(name)
              assert not repo.index.diff(None)
!             print('branch is done\n', flush=True)
--- 162,172 ----
                  branch = repo.branches[name]
              else:
                  branch = repo.create_head(name, ref).set_tracking_branch(ref)
!             logging.info('=== Working on: %s ===' % branch)
              branch.checkout()
              origin.pull(rebase=True)
!             logging.info('branch pulled and checked out')
              update_current_branch(name)
              assert not repo.index.diff(None)
!             logging.info('branch is done')
!             logging.info('')
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/setup.cfg gcc-13.1.0/contrib/gcc-changelog/setup.cfg
*** gcc-12.2.0/contrib/gcc-changelog/setup.cfg	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/setup.cfg	Wed Apr 26 07:09:39 2023
***************
*** 2,5 ****
  max-line-length = 120
  
  [tool:pytest]
! addopts = -vv --flake8
--- 2,5 ----
  max-line-length = 120
  
  [tool:pytest]
! addopts = -vv
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/test_email.py gcc-13.1.0/contrib/gcc-changelog/test_email.py
*** gcc-12.2.0/contrib/gcc-changelog/test_email.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/test_email.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** class TestGccChangelog(unittest.TestCase
*** 44,50 ****
  
          filename = None
          patch_lines = []
!         with open(os.path.join(script_path, 'test_patches.txt')) as f:
              lines = f.read()
          for line in lines.split('\n'):
              if line.startswith('==='):
--- 46,52 ----
  
          filename = None
          patch_lines = []
!         with open(os.path.join(script_path, 'test_patches.txt'), newline='\n') as f:
              lines = f.read()
          for line in lines.split('\n'):
              if line.startswith('==='):
*************** class TestGccChangelog(unittest.TestCase
*** 451,453 ****
--- 453,481 ----
          email = self.from_patch_glob('toplev-new-file.patch')
          assert (email.errors[0].message ==
                  'new file in the top-level folder not mentioned in a ChangeLog')
+ 
+     def test_space_after_tab(self):
+         email = self.from_patch_glob('0001-Use-Value_Range-when-applying-inferred-ranges.patch')
+         assert (email.errors[0].message == 'extra space after tab')
+ 
+     def test_CR_in_patch(self):
+         email = self.from_patch_glob('0001-Add-M-character.patch')
+         assert (email.errors[0].message == 'cannot find a ChangeLog location in message')
+ 
+     def test_auto_add_file_1(self):
+         email = self.from_patch_glob('0001-Auto-Add-File.patch')
+         assert not email.errors
+         assert (len(email.warnings) == 1)
+         assert (email.warnings[0]
+                 == "Auto-added new file 'libgomp/testsuite/libgomp.fortran/allocate-4.f90'")
+ 
+     def test_auto_add_file_2(self):
+         email = self.from_patch_glob('0002-Auto-Add-File.patch')
+         assert not email.errors
+         assert (len(email.warnings) == 2)
+         assert (email.warnings[0] == "Auto-added new file 'gcc/doc/gm2.texi'")
+         assert (email.warnings[1] == "Auto-added 2 new files in 'gcc/m2'")
+ 
+     def test_digit_in_PR_component(self):
+         email = self.from_patch_glob('modula-PR-component.patch')
+         assert not email.errors
diff -Nrcpad gcc-12.2.0/contrib/gcc-changelog/test_patches.txt gcc-13.1.0/contrib/gcc-changelog/test_patches.txt
*** gcc-12.2.0/contrib/gcc-changelog/test_patches.txt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc-changelog/test_patches.txt	Wed Apr 26 07:09:39 2023
*************** index 765ae746745..15735b6684f 100644
*** 3536,3542 ****
  @@ -1,3 +1,4 @@
  +
   /* Interprocedural Identical Code Folding pass
!     Copyright (C) 2014-2022 Free Software Foundation, Inc.
   
  diff --git a/gcc/ipa-icf2.cc b/gcc/ipa-icf2.cc
  new file mode 100644
--- 3536,3542 ----
  @@ -1,3 +1,4 @@
  +
   /* Interprocedural Identical Code Folding pass
!     Copyright (C) 2014-2023 Free Software Foundation, Inc.
   
  diff --git a/gcc/ipa-icf2.cc b/gcc/ipa-icf2.cc
  new file mode 100644
*************** index 00000000000..d6459e00543
*** 3571,3573 ****
--- 3571,3759 ----
  +xxx
  -- 
  2.34.1
+ 
+ === 0001-Use-Value_Range-when-applying-inferred-ranges.patch ===
+ From 69a233610f6b27cd4283561569d8ce0f35044dc4 Mon Sep 17 00:00:00 2001
+ From: Andrew MacLeod <amacleod@redhat.com>
+ Date: Wed, 19 Oct 2022 09:21:22 -0400
+ Subject: [PATCH] Use Value_Range when applying inferred ranges.
+ 
+ Applying an inferred range is using int_range_ma as the
+ temporary rather than the general purpose Value_Range.  This causes it
+ to trap if we have a non-integral inferred range.
+ 
+ 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Use
+ 	  Value_Range not int_range_max.
+ ---
+  gcc/gimple-range-cache.cc | 2 +-
+  1 file changed, 1 insertion(+), 1 deletion(-)
+ 
+ diff --git a/gcc/gimple-range-cache.cc b/gcc/gimple-range-cache.cc
+ index 0b9aa3639c5..f279371948a 100644
+ --- a/gcc/gimple-range-cache.cc
+ +++ b/gcc/gimple-range-cache.cc
+ @@ -1546,7 +1546,6 @@ ranger_cache::range_from_dom (vrange &r, tree name, basic_block start_bb,
+  void
+  ranger_cache::apply_inferred_ranges (gimple *s)
+  {
+ -  int_range_max r;
+    bool update = true;
+  
+    basic_block bb = gimple_bb (s);
+ @@ -1572,6 +1571,7 @@ ranger_cache::apply_inferred_ranges (gimple *s)
+        m_exit.add_range (name, bb, infer.range (x));
+        if (update)
+  	{
+ +	  Value_Range r (TREE_TYPE (name));
+  	  if (!m_on_entry.get_bb_range (r, name, bb))
+  	    exit_range (r, name, bb, RFD_READ_ONLY);
+  	  if (r.intersect (infer.range (x)))
+ -- 
+ 2.38.0
+ 
+ === 0001-Add-M-character.patch ====
+ From 71ab4c18f279dc0fa0172ffe8cfac5fabcde953d Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Fri, 9 Dec 2022 11:55:21 +0100
+ Subject: [PATCH] Add ^M character
+ 
+ ---
+  demo.txt | 5 +++++
+  1 file changed, 5 insertions(+)
+  create mode 100644 demo.txt
+ 
+ diff --git a/demo.txt b/demo.txt
+ new file mode 100644
+ index 0000000..d75da75
+ --- /dev/null
+ +++ b/demo.txt
+ @@ -0,0 +1,5 @@
+ +pub fn main ()
+ +{
+ +// { dg-error "Isolated CR" "" { target *-*-* } .+1 }
+ +  //! doc cr
 comment
+ +}
+ -- 
+ 2.38.1
+ 
+ === 0001-Auto-Add-File.patch ====
+ From e205ec03f0794aeac3e8a89e947c12624d5a274e Mon Sep 17 00:00:00 2001
+ From: Tobias Burnus <tobias@codesourcery.com>
+ Date: Thu, 15 Dec 2022 12:25:07 +0100
+ Subject: [PATCH] libgfortran's ISO_Fortran_binding.c: Use GCC11 version for
+  backward-only code [PR108056]
+ 
+ libgfortran/ChangeLog:
+ 
+ 	PR libfortran/108056
+ 	* runtime/ISO_Fortran_binding.c (cfi_desc_to_gfc_desc,
+ 	gfc_desc_to_cfi_desc): Mostly revert to GCC 11 version for
+ 	those backward-compatiblity-only functions.
+ ---
+  libgfortran/runtime/ISO_Fortran_binding.c     | 151 +++---------------
+  .../testsuite/libgomp.fortran/allocate-4.f90  |  42 +++++
+  2 files changed, 64 insertions(+), 129 deletions(-)
+  create mode 100644 libgomp/testsuite/libgomp.fortran/allocate-4.f90
+ 
+ diff --git a/libgfortran/runtime/ISO_Fortran_binding.c b/libgfortran/runtime/ISO_Fortran_binding.c
+ index 342df4275b9..e63a717a69b 100644
+ --- a/libgfortran/runtime/ISO_Fortran_binding.c
+ +++ b/libgfortran/runtime/ISO_Fortran_binding.c
+ @@ -41,1 +41,1 @@ export_proto(cfi_desc_to_gfc_desc);
+ -  signed char type;
+ +  size_t type;
+ diff --git a/libgomp/testsuite/libgomp.fortran/allocate-4.f90 b/libgomp/testsuite/libgomp.fortran/allocate-4.f90
+ new file mode 100644
+ index 00000000000..ddb507ba8e4
+ --- /dev/null
+ +++ b/libgomp/testsuite/libgomp.fortran/allocate-4.f90
+ @@ -0,0 +1,1 @@
+ +end
+ -- 
+ 2.25.1
+ 
+ === 0002-Auto-Add-File.patch ====
+ From 1eee94d351774cdc2efc8ee508b82d065184c6ee Mon Sep 17 00:00:00 2001
+ From: Gaius Mulley <gaiusmod2@gmail.com>
+ Date: Wed, 14 Dec 2022 17:43:08 +0000
+ Subject: [PATCH 363/400] Merge modula-2 front end onto gcc.
+ 
+ This commit merges the devel/modula2 into master.
+ The libraries reside in libgm2, the compiler in gcc/m2
+ and the testsuite in gcc/testsuite/gm2.
+ 
+ gcc/ChangeLog:
+ 
+ 	* configure.ac (HAVE_PYTHON): Test for Python3 added.
+ 	* doc/install.texi: Add m2 as a language.  (--disable-libgm2)
+ 
+ Signed-off-by: Gaius Mulley <gaiusmod2@gmail.com>
+ ---
+  gcc/configure.ac                              |    15 +-
+  gcc/doc/gm2.texi                              |  2838 ++
+  gcc/doc/install.texi                          |    53 +-
+  gcc/m2/COPYING.FDL                            |   397 +
+  gcc/m2/COPYING.RUNTIME                        |    73 +
+ diff --git a/gcc/configure.ac b/gcc/configure.ac
+ index 7ca08726efa..5efbf11793c 100644
+ --- a/gcc/configure.ac
+ +++ b/gcc/configure.ac
+ @@ -7651,3 +7665,2 @@ done
+  [subdirs='$subdirs'])
+  AC_OUTPUT
+ -
+ diff --git a/gcc/doc/gm2.texi b/gcc/doc/gm2.texi
+ new file mode 100644
+ index 00000000000..513fdd3ec7f
+ --- /dev/null
+ +++ b/gcc/doc/gm2.texi
+ @@ -0,0 +1,1 @@
+ +\input texinfo
+ diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi
+ index 89ff6a6734b..6884a74936b 100644
+ --- a/gcc/doc/install.texi
+ +++ b/gcc/doc/install.texi
+ @@ -308,1 +308,2 @@ On some targets, @samp{libphobos} isn't enabled by default, but compiles
+  
+ +@item @anchor{GM2-prerequisite}GM2
+ diff --git a/gcc/m2/COPYING.FDL b/gcc/m2/COPYING.FDL
+ new file mode 100644
+ index 00000000000..9854856fa81
+ --- /dev/null
+ +++ b/gcc/m2/COPYING.FDL
+ @@ -0,0 +1,1 @@
+ +		GNU Free Documentation License
+ diff --git a/gcc/m2/COPYING.RUNTIME b/gcc/m2/COPYING.RUNTIME
+ new file mode 100644
+ index 00000000000..649af5e573a
+ --- /dev/null
+ +++ b/gcc/m2/COPYING.RUNTIME
+ @@ -0,0 +1,1 @@
+ +GCC RUNTIME LIBRARY EXCEPTION
+ -- 
+ 2.25.1
+ 
+ === modula-PR-component.patch ===
+ From 1052d89a0b9769453561e18da32b1558d059b320 Mon Sep 17 00:00:00 2001
+ From: Martin Liska <mliska@suse.cz>
+ Date: Mon, 19 Dec 2022 14:34:18 +0100
+ Subject: [PATCH] gcc-changelog: allow digit in component name
+ 
+ 	PR modula2/123456
+ 
+ contrib/ChangeLog:
+ 
+ 	* gcc-changelog/git_commit.py: Allow digit in component name.
+ ---
+  contrib/gcc-changelog/git_commit.py | 2 +-
+  1 file changed, 1 insertion(+), 1 deletion(-)
+ 
+ diff --git a/contrib/gcc-changelog/git_commit.py b/contrib/gcc-changelog/git_commit.py
+ index e82fbcacd3e..7fde02cba85 100755
+ --- a/contrib/gcc-changelog/git_commit.py
+ +++ b/contrib/gcc-changelog/git_commit.py
+ @@ -0,0 +1,1 @@
+ +		GNU Free Documentation License
+ -- 
+ 2.39.0
+ 
diff -Nrcpad gcc-12.2.0/contrib/gcc.doxy gcc-13.1.0/contrib/gcc.doxy
*** gcc-12.2.0/contrib/gcc.doxy	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc.doxy	Wed Apr 26 07:09:39 2023
*************** WARN_LOGFILE           =
*** 478,484 ****
  # directories like "/usr/src/myproject". Separate the files or directories 
  # with spaces.
  
! INPUT                  = gcc
  
  # This tag can be used to specify the character encoding of the source files that 
  # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
--- 478,484 ----
  # directories like "/usr/src/myproject". Separate the files or directories 
  # with spaces.
  
! INPUT                  = gcc gcc/analyzer
  
  # This tag can be used to specify the character encoding of the source files that 
  # doxygen parses. Internally doxygen uses the UTF-8 encoding, which is also the default 
diff -Nrcpad gcc-12.2.0/contrib/gcc_build gcc-13.1.0/contrib/gcc_build
*** gcc-12.2.0/contrib/gcc_build	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc_build	Wed Apr 26 07:09:39 2023
***************
*** 11,17 ****
  # Contents:
  #   Script to automatically download and build GCC.
  #
! # Copyright (c) 2000, 2001, 2003, 2005 Free Software Foundation.
  #
  # This file is part of GCC.
  #
--- 11,17 ----
  # Contents:
  #   Script to automatically download and build GCC.
  #
! # Copyright (C) 2000-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/gcc_update gcc-13.1.0/contrib/gcc_update
*** gcc-12.2.0/contrib/gcc_update	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gcc_update	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  # repository, with an emphasis on treating generated files correctly, so
  # that autoconf, gperf et al are not required for the ``end'' user.
  #
! # (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009, 
  # 2010, 2011, 2012, 2013, 2014, 2015, 2017 Free Software Foundation
  # Originally by Gerald Pfeifer <gerald@pfeifer.com>, August 1998.
  #
--- 4,10 ----
  # repository, with an emphasis on treating generated files correctly, so
  # that autoconf, gperf et al are not required for the ``end'' user.
  #
! # (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009,
  # 2010, 2011, 2012, 2013, 2014, 2015, 2017 Free Software Foundation
  # Originally by Gerald Pfeifer <gerald@pfeifer.com>, August 1998.
  #
*************** gcc/config/m68k/m68k-tables.opt: gcc/con
*** 92,101 ****
  gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh
  gcc/config/rs6000/rs6000-tables.opt: gcc/config/rs6000/rs6000-cpus.def gcc/config/rs6000/genopt.sh
  gcc/config/rs6000/fusion.md: gcc/config/rs6000/genfusion.pl
- gcc/config/tilegx/mul-tables.cc: gcc/config/tilepro/gen-mul-tables.cc
- gcc/config/tilepro/mul-tables.cc: gcc/config/tilepro/gen-mul-tables.cc
  # And then, language-specific files
  gcc/cp/cfns.h: gcc/cp/cfns.gperf
  # testsuite
  # Without this, _Pragma3.c can have a false negative.
  gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h
--- 92,104 ----
  gcc/config/mips/mips-tables.opt: gcc/config/mips/mips-cpus.def gcc/config/mips/genopt.sh
  gcc/config/rs6000/rs6000-tables.opt: gcc/config/rs6000/rs6000-cpus.def gcc/config/rs6000/genopt.sh
  gcc/config/rs6000/fusion.md: gcc/config/rs6000/genfusion.pl
  # And then, language-specific files
  gcc/cp/cfns.h: gcc/cp/cfns.gperf
+ gcc/cp/std-name-hint.h: gcc/cp/std-name-hint.gperf
+ gcc/cp/std-name-hint.gperf: gcc/cp/cxxapi-data.csv
+ gcc/m2/configure: gcc/m2/configure.ac
+ gcc/m2/gm2config.h.in: gcc/m2/configure.ac
+ gcc/m2/gm2-libs/config-host: gcc/m2/gm2-libs/config-host.in
  # testsuite
  # Without this, _Pragma3.c can have a false negative.
  gcc/testsuite/gcc.dg/cpp/_Pragma3.c: gcc/testsuite/gcc.dg/cpp/mi1c.h
*************** libffi/configure: libffi/configure.ac li
*** 128,133 ****
--- 131,143 ----
  libffi/fficonfig.h.in: libffi/configure.ac libffi/aclocal.m4
  libgfortran/aclocal.m4: libgfortran/configure.ac libgfortran/acinclude.m4
  libgfortran/Makefile.in: libgfortran/Makefile.am libgfortran/configure.ac libgfortran/aclocal.m4
+ libgm2/Makefile.in: libgm2/Makefile.am libgm2/configure.ac libgm2/aclocal.m4
+ libgm2/aclocal.m4: libgm2/configure.ac
+ libgm2/libm2cor/Makefile.in: libgm2/libm2cor/Makefile.am
+ libgm2/libm2pim/Makefile.in: libgm2/libm2pim/Makefile.am
+ libgm2/libm2iso/Makefile.in: libgm2/libm2iso/Makefile.am
+ libgm2/libm2log/Makefile.in: libgm2/libm2log/Makefile.am
+ libgm2/libm2min/Makefile.in: libgm2/libm2min/Makefile.am
  libquadmath/configure: libquadmath/configure.ac libquadmath/aclocal.m4
  libquadmath/aclocal.m4: libquadmath/configure.ac libquadmath/acinclude.m4
  libquadmath/Makefile.in: libquadmath/Makefile.am libquadmath/configure.ac libgfortran/aclocal.m4
*************** libsanitizer/sanitizer_common/Makefile.i
*** 162,173 ****
  libvtv/aclocal.m4: libvtv/configure.ac libvtv/acinclude.m4
  libvtv/Makefile.in: libvtv/Makefile.am libvtv/aclocal.m4
  libvtv/configure: libvtv/configure.ac libvtv/aclocal.m4
- liboffloadmic/aclocal.m4: liboffloadmic/configure.ac
- liboffloadmic/Makefile.in: liboffloadmic/Makefile.am
- liboffloadmic/configure: liboffloadmic/configure.ac
- liboffloadmic/plugin/aclocal.m4: liboffloadmic/plugin/configure.ac
- liboffloadmic/plugin/Makefile.in: liboffloadmic/plugin/Makefile.am
- liboffloadmic/plugin/configure: liboffloadmic/plugin/configure.ac
  libbacktrace/aclocal.m4: libbacktrace/configure.ac
  libbacktrace/Makefile.in: libbacktrace/Makefile.am libbacktrace/aclocal.m4
  libbacktrace/configure: libbacktrace/configure.ac libbacktrace/aclocal.m4
--- 172,177 ----
*************** case $vcs_type in
*** 351,357 ****
  		fi
  	fi
  	branch=`$GCC_GIT name-rev --name-only HEAD || :`
! 	;;    
  
      hg)
  	chat "Updating HG tree"
--- 355,361 ----
  		fi
  	fi
  	branch=`$GCC_GIT name-rev --name-only HEAD || :`
! 	;;
  
      hg)
  	chat "Updating HG tree"
diff -Nrcpad gcc-12.2.0/contrib/gen_autofdo_event.py gcc-13.1.0/contrib/gen_autofdo_event.py
*** gcc-12.2.0/contrib/gen_autofdo_event.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gen_autofdo_event.py	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
! #!/usr/bin/python
  # Generate Intel taken branches Linux perf event script for autofdo profiling.
  
! # Copyright (C) 2016 Free Software Foundation, Inc.
  #
  # 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
--- 1,7 ----
! #!/usr/bin/python3
  # Generate Intel taken branches Linux perf event script for autofdo profiling.
  
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # 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
***************
*** 26,43 ****
  # Requires internet (https) access. This may require setting up a proxy
  # with export https_proxy=...
  #
! import urllib2
  import sys
  import json
  import argparse
  import collections
  
  baseurl = "https://download.01.org/perfmon"
  
! target_events = (u'BR_INST_RETIRED.NEAR_TAKEN',
!                  u'BR_INST_EXEC.TAKEN',
!                  u'BR_INST_RETIRED.TAKEN_JCC',
!                  u'BR_INST_TYPE_RETIRED.COND_TAKEN')
  
  ap = argparse.ArgumentParser()
  ap.add_argument('--all', '-a', help='Print for all CPUs', action='store_true')
--- 26,44 ----
  # Requires internet (https) access. This may require setting up a proxy
  # with export https_proxy=...
  #
! import urllib.request
  import sys
  import json
  import argparse
  import collections
+ import os
  
  baseurl = "https://download.01.org/perfmon"
  
! target_events = ('BR_INST_RETIRED.NEAR_TAKEN',
!                  'BR_INST_EXEC.TAKEN',
!                  'BR_INST_RETIRED.TAKEN_JCC',
!                  'BR_INST_TYPE_RETIRED.COND_TAKEN')
  
  ap = argparse.ArgumentParser()
  ap.add_argument('--all', '-a', help='Print for all CPUs', action='store_true')
*************** def get_cpustr():
*** 71,117 ****
      return "%s-%d-%X" % tuple(cpu)[:3]
  
  def find_event(eventurl, model):
!     print >>sys.stderr, "Downloading", eventurl
!     u = urllib2.urlopen(eventurl)
      events = json.loads(u.read())
      u.close()
  
      found = 0
      for j in events:
!         if j[u'EventName'] in target_events:
!             event = "cpu/event=%s,umask=%s/" % (j[u'EventCode'], j[u'UMask'])
!             if u'PEBS' in j and j[u'PEBS'] > 0:
                  event += "p"
              if args.script:
                  eventmap[event].append(model)
              else:
!                 print j[u'EventName'], "event for model", model, "is", event
              found += 1
      return found
  
  if not args.all:
!     cpu = get_cpu_str()
      if not cpu:
          sys.exit("Unknown CPU type")
  
  url = baseurl + "/mapfile.csv"
! print >>sys.stderr, "Downloading", url
! u = urllib2.urlopen(url)
  found = 0
  cpufound = 0
  for j in u:
!     n = j.rstrip().split(',')
      if len(n) >= 4 and (args.all or n[0] == cpu) and n[3] == "core":
!         if args.all:
!             components = n[0].split("-")
!             model = components[2]
!             model = int(model, 16)
          cpufound += 1
          found += find_event(baseurl + n[2], model)
  u.close()
  
  if args.script:
!     print '''#!/bin/sh
  # Profile workload for gcc profile feedback (autofdo) using Linux perf.
  # Auto generated. To regenerate for new CPUs run
  # contrib/gen_autofdo_event.py --script --all in gcc source
--- 72,117 ----
      return "%s-%d-%X" % tuple(cpu)[:3]
  
  def find_event(eventurl, model):
!     print("Downloading", eventurl, file = sys.stderr)
!     u = urllib.request.urlopen(eventurl)
      events = json.loads(u.read())
      u.close()
  
      found = 0
      for j in events:
!         if j['EventName'] in target_events:
!             event = "cpu/event=%s,umask=%s/" % (j['EventCode'], j['UMask'])
!             if 'PEBS' in j and int(j['PEBS']) > 0:
                  event += "p"
              if args.script:
                  eventmap[event].append(model)
              else:
!                 print(j['EventName'], "event for model", model, "is", event)
              found += 1
      return found
  
  if not args.all:
!     cpu = get_cpustr()
      if not cpu:
          sys.exit("Unknown CPU type")
  
  url = baseurl + "/mapfile.csv"
! print("Downloading", url, file = sys.stderr)
! u = urllib.request.urlopen(url)
  found = 0
  cpufound = 0
  for j in u:
!     n = j.rstrip().decode().split(',')
      if len(n) >= 4 and (args.all or n[0] == cpu) and n[3] == "core":
!         components = n[0].split("-")
!         model = components[2]
!         model = int(model, 16)
          cpufound += 1
          found += find_event(baseurl + n[2], model)
  u.close()
  
  if args.script:
!     print('''#!/bin/sh
  # Profile workload for gcc profile feedback (autofdo) using Linux perf.
  # Auto generated. To regenerate for new CPUs run
  # contrib/gen_autofdo_event.py --script --all in gcc source
*************** if grep -q hypervisor /proc/cpuinfo ; th
*** 146,172 ****
    echo >&2 "Warning: branch profiling may not be functional in VMs"
  fi
  
! case `egrep -q "^cpu family\s*: 6" /proc/cpuinfo &&
!   egrep "^model\s*:" /proc/cpuinfo | head -n1` in'''
!     for event, mod in eventmap.iteritems():
          for m in mod[:-1]:
!             print "model*:\ %s|\\" % m
!         print 'model*:\ %s) E="%s$FLAGS" ;;' % (mod[-1], event)
!     print '''*)
  echo >&2 "Unknown CPU. Run contrib/gen_autofdo_event.py --all --script to update script."
! 	exit 1 ;;'''
!     print "esac"
!     print "set -x"
!     print 'if ! perf record -e $E -b "$@" ; then'
!     print '  # PEBS may not actually be working even if the processor supports it'
!     print '  # (e.g., in a virtual machine). Trying to run without /p.'
!     print '  set +x'
!     print '  echo >&2 "Retrying without /p."'
!     print '  E="$(echo "${E}" | sed -e \'s/\/p/\//\')"'
!     print '  set -x'
!     print '  exec perf record -e $E -b "$@"'
!     print ' set +x'
!     print 'fi'
  
  if cpufound == 0 and not args.all:
      sys.exit('CPU %s not found' % cpu)
--- 146,172 ----
    echo >&2 "Warning: branch profiling may not be functional in VMs"
  fi
  
! case `grep -E -q "^cpu family\s*: 6" /proc/cpuinfo &&
!   grep -E "^model\s*:" /proc/cpuinfo | head -n1` in''')
!     for event, mod in eventmap.items():
          for m in mod[:-1]:
!             print("model*:\ %s|\\" % m)
!         print('model*:\ %s) E="%s$FLAGS" ;;' % (mod[-1], event))
!     print('''*)
  echo >&2 "Unknown CPU. Run contrib/gen_autofdo_event.py --all --script to update script."
! 	exit 1 ;;''')
!     print("esac")
!     print("set -x")
!     print('if ! perf record -e $E -b "$@" ; then')
!     print('  # PEBS may not actually be working even if the processor supports it')
!     print('  # (e.g., in a virtual machine). Trying to run without /p.')
!     print('  set +x')
!     print('  echo >&2 "Retrying without /p."')
!     print('  E="$(echo "${E}" | sed -e \'s/\/p/\//\')"')
!     print('  set -x')
!     print('  exec perf record -e $E -b "$@"')
!     print(' set +x')
!     print('fi')
  
  if cpufound == 0 and not args.all:
      sys.exit('CPU %s not found' % cpu)
diff -Nrcpad gcc-12.2.0/contrib/gennews gcc-13.1.0/contrib/gennews
*** gcc-12.2.0/contrib/gennews	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/gennews	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Script to generate the NEWS file from online release notes.
  # Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  #
! # Copyright (C) 2000-2022 Free Software Foundation, Inc.
  # This file is part of GCC.
  #
  # GCC is free software; you can redistribute it and/or modify
--- 3,9 ----
  # Script to generate the NEWS file from online release notes.
  # Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  #
! # Copyright (C) 2000-2023 Free Software Foundation, Inc.
  # This file is part of GCC.
  #
  # GCC is free software; you can redistribute it and/or modify
***************
*** 23,28 ****
--- 23,29 ----
  
  website=http://gcc.gnu.org/
  files="
+     gcc-13/index.html gcc-13/changes.html
      gcc-12/index.html gcc-12/changes.html
      gcc-11/index.html gcc-11/changes.html
      gcc-10/index.html gcc-10/changes.html
diff -Nrcpad gcc-12.2.0/contrib/git-backport.py gcc-13.1.0/contrib/git-backport.py
*** gcc-12.2.0/contrib/git-backport.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/git-backport.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/git-commit-mklog.py gcc-13.1.0/contrib/git-commit-mklog.py
*** gcc-12.2.0/contrib/git-commit-mklog.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/git-commit-mklog.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 24,29 ****
--- 24,30 ----
  # to mklog.py script.
  
  import argparse
+ import json
  import os
  import subprocess
  
*************** if __name__ == '__main__':
*** 32,39 ****
      myenv = os.environ.copy()
  
      parser = argparse.ArgumentParser(description='git-commit-mklog wrapped')
!     parser.add_argument('-b', '--pr-numbers', action='store',
!                         type=lambda arg: arg.split(','), nargs='?',
                          help='Add the specified PRs (comma separated)')
      parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
                          help='Download title of mentioned PRs')
--- 33,39 ----
      myenv = os.environ.copy()
  
      parser = argparse.ArgumentParser(description='git-commit-mklog wrapped')
!     parser.add_argument('-b', '--pr-numbers',
                          help='Add the specified PRs (comma separated)')
      parser.add_argument('-p', '--fill-up-bug-titles', action='store_true',
                          help='Download title of mentioned PRs')
*************** if __name__ == '__main__':
*** 44,55 ****
      myenv['GCC_FORCE_MKLOG'] = '1'
      mklog_args = []
      if args.pr_numbers:
!         mklog_args.append(f'-b {",".join(args.pr_numbers)}')
      if args.fill_up_bug_titles:
          mklog_args.append('-p')
  
      if mklog_args:
!         myenv['GCC_MKLOG_ARGS'] = ' '.join(mklog_args)
  
      if args.co:
          for author in args.co.split(','):
--- 44,56 ----
      myenv['GCC_FORCE_MKLOG'] = '1'
      mklog_args = []
      if args.pr_numbers:
!         mklog_args += ['-b', args.pr_numbers]
      if args.fill_up_bug_titles:
          mklog_args.append('-p')
  
      if mklog_args:
!         # wrap mklog arguments with JSON
!         myenv['GCC_MKLOG_ARGS'] = json.dumps(mklog_args)
  
      if args.co:
          for author in args.co.split(','):
diff -Nrcpad gcc-12.2.0/contrib/git-descr.sh gcc-13.1.0/contrib/git-descr.sh
*** gcc-12.2.0/contrib/git-descr.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/git-descr.sh	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  
  short=no
  long=no
! c=master
  
  for arg in "$@"
  do
--- 4,10 ----
  
  short=no
  long=no
! c=HEAD
  
  for arg in "$@"
  do
diff -Nrcpad gcc-12.2.0/contrib/git-fetch-vendor.sh gcc-13.1.0/contrib/git-fetch-vendor.sh
*** gcc-12.2.0/contrib/git-fetch-vendor.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/git-fetch-vendor.sh	Wed Apr 26 07:09:39 2023
*************** enable_push=no
*** 14,20 ****
  upstream=`git config --get "gcc-config.upstream"`
  if [ x"$upstream" = x ]
  then
!     echo "Config gcc-config.upstream not set, run contrib/gcc-git-customization"
      exit 1
  fi
  
--- 14,20 ----
  upstream=`git config --get "gcc-config.upstream"`
  if [ x"$upstream" = x ]
  then
!     echo "Config gcc-config.upstream not set, run contrib/gcc-git-customization.sh"
      exit 1
  fi
  
diff -Nrcpad gcc-12.2.0/contrib/git-fix-changelog.py gcc-13.1.0/contrib/git-fix-changelog.py
*** gcc-12.2.0/contrib/git-fix-changelog.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/git-fix-changelog.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/header-tools/ChangeLog gcc-13.1.0/contrib/header-tools/ChangeLog
*** gcc-12.2.0/contrib/header-tools/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/contrib/header-tools/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-01-17  Martin Liska  <mliska@suse.cz>
  
--- 1,11 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2022-08-31  Martin Liska  <mliska@suse.cz>
  
! 	* README: Remove deprecated ports.
! 	* reduce-headers: Likewise.
  
  2022-01-17  Martin Liska  <mliska@suse.cz>
  
diff -Nrcpad gcc-12.2.0/contrib/header-tools/README gcc-13.1.0/contrib/header-tools/README
*** gcc-12.2.0/contrib/header-tools/README	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/header-tools/README	Wed Apr 26 07:09:39 2023
*************** reduce-headers
*** 203,209 ****
    these targets.  They are also known to the tool.  When building targets it
    will check those targets before the rest.  
    This coverage can be achieved by building config-list.mk with :
!   LIST="aarch64-linux-gnu arm-netbsdelf c6x-elf epiphany-elf hppa2.0-hpux10.1 i686-mingw32crt i686-pc-msdosdjgpp mipsel-elf powerpc-eabisimaltivec rs6000-ibm-aix5.1.0 sh-superh-elf sparc64-elf"
  
    -b specifies the native bootstrapped build root directory
    -t specifies a target build root directory that config-list.mk was run from
--- 203,209 ----
    these targets.  They are also known to the tool.  When building targets it
    will check those targets before the rest.  
    This coverage can be achieved by building config-list.mk with :
!   LIST="aarch64-linux-gnu arm-netbsdelf c6x-elf epiphany-elf i686-mingw32crt i686-pc-msdosdjgpp mipsel-elf powerpc-eabisimaltivec rs6000-ibm-aix5.1.0 sh-superh-elf sparc64-elf"
  
    -b specifies the native bootstrapped build root directory
    -t specifies a target build root directory that config-list.mk was run from
diff -Nrcpad gcc-12.2.0/contrib/header-tools/reduce-headers gcc-13.1.0/contrib/header-tools/reduce-headers
*** gcc-12.2.0/contrib/header-tools/reduce-headers	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/header-tools/reduce-headers	Wed Apr 26 07:09:39 2023
*************** target_priority = [
*** 25,31 ****
      "arm-netbsdelf",
      "c6x-elf",
      "epiphany-elf",
-     "hppa2.0-hpux10.1",
      "i686-mingw32crt",
      "i686-pc-msdosdjgpp",
      "mipsel-elf",
--- 25,30 ----
diff -Nrcpad gcc-12.2.0/contrib/jit-coverage-report.py gcc-13.1.0/contrib/jit-coverage-report.py
*** gcc-12.2.0/contrib/jit-coverage-report.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/jit-coverage-report.py	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  # cases, and which lack test coverage.  Tested with Python 2.7 and 3.2
  # To be run from the root directory of the source tree.
  #
! # Copyright (C) 2014 Free Software Foundation, Inc.
  # Written by David Malcolm <dmalcolm@redhat.com>.
  #
  # This script is Free Software, and it can be copied, distributed and
--- 4,10 ----
  # cases, and which lack test coverage.  Tested with Python 2.7 and 3.2
  # To be run from the root directory of the source tree.
  #
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  # Written by David Malcolm <dmalcolm@redhat.com>.
  #
  # This script is Free Software, and it can be copied, distributed and
diff -Nrcpad gcc-12.2.0/contrib/legacy/mklog gcc-13.1.0/contrib/legacy/mklog
*** gcc-12.2.0/contrib/legacy/mklog	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/legacy/mklog	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2017-2019 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/legacy/mklog.pl gcc-13.1.0/contrib/legacy/mklog.pl
*** gcc-12.2.0/contrib/legacy/mklog.pl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/legacy/mklog.pl	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  #!/usr/bin/perl
! # Copyright (C) 2012-2017 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,5 ----
  #!/usr/bin/perl
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/make_sunver.pl gcc-13.1.0/contrib/make_sunver.pl
*** gcc-12.2.0/contrib/make_sunver.pl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/make_sunver.pl	Wed Apr 26 07:09:39 2023
*************** while (<F>) {
*** 213,219 ****
      if (/^[ \t]*$/) { print; next; }
  
      # Lines of the form '{'
!     if (/^([ \t]*){$/) {
  	if ($in_extern) {
  	    print "$1##{\n";
  	} else {
--- 213,219 ----
      if (/^[ \t]*$/) { print; next; }
  
      # Lines of the form '{'
!     if (/^([ \t]*)\{$/) {
  	if ($in_extern) {
  	    print "$1##{\n";
  	} else {
diff -Nrcpad gcc-12.2.0/contrib/mark_spam.py gcc-13.1.0/contrib/mark_spam.py
*** gcc-12.2.0/contrib/mark_spam.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/mark_spam.py	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
--- 1,6 ----
  #!/usr/bin/env python3
+ 
+ # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # Script to mark bunch of PRs as spam 
  #
diff -Nrcpad gcc-12.2.0/contrib/mklog.py gcc-13.1.0/contrib/mklog.py
*** gcc-12.2.0/contrib/mklog.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/mklog.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 28,33 ****
--- 28,34 ----
  
  import argparse
  import datetime
+ import json
  import os
  import re
  import subprocess
*************** PATCH must be generated using diff(1)'s
*** 73,80 ****
  script_folder = os.path.realpath(__file__)
  root = os.path.dirname(os.path.dirname(script_folder))
  
- firstpr = ''
- 
  
  def find_changelog(path):
      folder = os.path.split(path)[0]
--- 74,79 ----
*************** def get_rel_path_if_prefixed(path, folde
*** 157,168 ****
  
  def generate_changelog(data, no_functions=False, fill_pr_titles=False,
                         additional_prs=None):
      changelogs = {}
      changelog_list = []
-     prs = []
      out = ''
      diff = PatchSet(data)
-     global firstpr
  
      if additional_prs:
          for apr in additional_prs:
--- 156,168 ----
  
  def generate_changelog(data, no_functions=False, fill_pr_titles=False,
                         additional_prs=None):
+     global prs
+     prs = []
+ 
      changelogs = {}
      changelog_list = []
      out = ''
      diff = PatchSet(data)
  
      if additional_prs:
          for apr in additional_prs:
*************** def generate_changelog(data, no_function
*** 186,208 ****
              # contains commented code which a note that it
              # has not been tested due to a certain PR or DR.
              this_file_prs = []
!             for line in list(file)[0][0:10]:
!                 m = pr_regex.search(line.value)
!                 if m:
!                     pr = m.group('pr')
!                     if pr not in prs:
!                         prs.append(pr)
!                         this_file_prs.append(pr.split('/')[-1])
!                 else:
!                     m = dr_regex.search(line.value)
                      if m:
!                         dr = m.group('dr')
!                         if dr not in prs:
!                             prs.append(dr)
!                             this_file_prs.append(dr.split('/')[-1])
!                     elif dg_regex.search(line.value):
!                         # Found dg-warning/dg-error line
!                         break
              # PR number in the file name
              fname = os.path.basename(file.path)
              m = pr_filename_regex.search(fname)
--- 186,211 ----
              # contains commented code which a note that it
              # has not been tested due to a certain PR or DR.
              this_file_prs = []
!             hunks = list(file)
!             if hunks:
!                 for line in hunks[0][0:10]:
!                     m = pr_regex.search(line.value)
                      if m:
!                         pr = m.group('pr')
!                         if pr not in prs:
!                             prs.append(pr)
!                             this_file_prs.append(pr.split('/')[-1])
!                     else:
!                         m = dr_regex.search(line.value)
!                         if m:
!                             dr = m.group('dr')
!                             if dr not in prs:
!                                 prs.append(dr)
!                                 this_file_prs.append(dr.split('/')[-1])
!                         elif dg_regex.search(line.value):
!                             # Found dg-warning/dg-error line
!                             break
! 
              # PR number in the file name
              fname = os.path.basename(file.path)
              m = pr_filename_regex.search(fname)
*************** def generate_changelog(data, no_function
*** 212,220 ****
                  if pr not in this_file_prs and pr2 not in prs:
                      prs.append(pr2)
  
-     if prs:
-         firstpr = prs[0]
- 
      if fill_pr_titles:
          out += get_pr_titles(prs)
  
--- 215,220 ----
*************** def skip_line_in_changelog(line):
*** 336,341 ****
--- 336,345 ----
  
  
  if __name__ == '__main__':
+     extra_args = os.getenv('GCC_MKLOG_ARGS')
+     if extra_args:
+         sys.argv += json.loads(extra_args)
+ 
      parser = argparse.ArgumentParser(description=help_message)
      parser.add_argument('input', nargs='?',
                          help='Patch file (or missing, read standard input)')
*************** if __name__ == '__main__':
*** 360,366 ****
      if args.directory:
          root = args.directory
  
!     data = open(args.input) if args.input else sys.stdin
      if args.update_copyright:
          update_copyright(data)
      else:
--- 364,370 ----
      if args.directory:
          root = args.directory
  
!     data = open(args.input, newline='\n') if args.input else sys.stdin
      if args.update_copyright:
          update_copyright(data)
      else:
*************** if __name__ == '__main__':
*** 372,382 ****
              end = lines[len(start):]
              with open(args.changelog, 'w') as f:
                  if not start or not start[0]:
!                     # initial commit subject line 'component: [PRnnnnn]'
!                     m = prnum_regex.match(firstpr)
!                     if m:
!                         title = f'{m.group("comp")}: [PR{m.group("num")}]'
!                         start.insert(0, title)
                  if start:
                      # append empty line
                      if start[-1] != '':
--- 376,387 ----
              end = lines[len(start):]
              with open(args.changelog, 'w') as f:
                  if not start or not start[0]:
!                     if len(prs) == 1:
!                         # initial commit subject line 'component: [PRnnnnn]'
!                         m = prnum_regex.match(prs[0])
!                         if m:
!                             title = f'{m.group("comp")}: [PR{m.group("num")}]'
!                             start.insert(0, title)
                  if start:
                      # append empty line
                      if start[-1] != '':
diff -Nrcpad gcc-12.2.0/contrib/patch_tester.sh gcc-13.1.0/contrib/patch_tester.sh
*** gcc-12.2.0/contrib/patch_tester.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/patch_tester.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/bin/sh
  
  # Tests a set of patches from a directory.
! # Copyright (C) 2007, 2008, 2011  Free Software Foundation, Inc.
  # Contributed by Sebastian Pop <sebastian.pop@amd.com>
  
  # This program is free software; you can redistribute it and/or modify
--- 1,7 ----
  #!/bin/sh
  
  # Tests a set of patches from a directory.
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  # Contributed by Sebastian Pop <sebastian.pop@amd.com>
  
  # This program is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-12.2.0/contrib/prepare-commit-msg gcc-13.1.0/contrib/prepare-commit-msg
*** gcc-12.2.0/contrib/prepare-commit-msg	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/prepare-commit-msg	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  
! # Copyright (C) 2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** else
*** 78,81 ****
      tee="cat"
  fi
  
! git $cmd | $tee | git gcc-mklog $GCC_MKLOG_ARGS -c "$COMMIT_MSG_FILE"
--- 78,81 ----
      tee="cat"
  fi
  
! git $cmd | $tee | git gcc-mklog -c "$COMMIT_MSG_FILE"
diff -Nrcpad gcc-12.2.0/contrib/prepare_patch.sh gcc-13.1.0/contrib/prepare_patch.sh
*** gcc-12.2.0/contrib/prepare_patch.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/prepare_patch.sh	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  #set -x
  
  # Prepares a patch for the patch tester.
! # Copyright (C) 2007  Free Software Foundation, Inc.
  # Contributed by Sebastian Pop <sebastian.pop@amd.com>
  
  # This program is free software; you can redistribute it and/or modify
--- 2,8 ----
  #set -x
  
  # Prepares a patch for the patch tester.
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  # Contributed by Sebastian Pop <sebastian.pop@amd.com>
  
  # This program is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-12.2.0/contrib/reghunt/ChangeLog gcc-13.1.0/contrib/reghunt/ChangeLog
*** gcc-12.2.0/contrib/reghunt/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/contrib/reghunt/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
! 
! 	* GCC 12.2.0 released.
! 
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2010-06-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
--- 1,6 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
  2010-06-27  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
  
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-build-full gcc-13.1.0/contrib/reghunt/bin/gcc-build-full
*** gcc-12.2.0/contrib/reghunt/bin/gcc-build-full	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-build-full	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Perform a simple build of GCC for a particular language, using several
  # environment variables defined by reghunt scripts and config files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Perform a simple build of GCC for a particular language, using several
  # environment variables defined by reghunt scripts and config files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-build-simple gcc-13.1.0/contrib/reghunt/bin/gcc-build-simple
*** gcc-12.2.0/contrib/reghunt/bin/gcc-build-simple	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-build-simple	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  #
  # This doesn't work for sources earlier than about 2003-02-25.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 5,11 ----
  #
  # This doesn't work for sources earlier than about 2003-02-25.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-svn-patchlist gcc-13.1.0/contrib/reghunt/bin/gcc-svn-patchlist
*** gcc-12.2.0/contrib/reghunt/bin/gcc-svn-patchlist	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-svn-patchlist	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  # by default) between the specified dates.  This skips commits that do
  # not modify any existing files and changes by gccadmin.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 4,10 ----
  # by default) between the specified dates.  This skips commits that do
  # not modify any existing files and changes by gccadmin.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-svn-update gcc-13.1.0/contrib/reghunt/bin/gcc-svn-update
*** gcc-12.2.0/contrib/reghunt/bin/gcc-svn-update	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-svn-update	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Update or check out GCC sources for a particular Subversion revision
  # and a particular branch.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Update or check out GCC sources for a particular Subversion revision
  # and a particular branch.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-accepts-invalid gcc-13.1.0/contrib/reghunt/bin/gcc-test-accepts-invalid
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-accepts-invalid	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-accepts-invalid	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test an "accepts-invalid" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test an "accepts-invalid" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-bogus-warning gcc-13.1.0/contrib/reghunt/bin/gcc-test-bogus-warning
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-bogus-warning	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-bogus-warning	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test a "bogus-warning" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test a "bogus-warning" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-compiler-hangs gcc-13.1.0/contrib/reghunt/bin/gcc-test-compiler-hangs
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-compiler-hangs	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-compiler-hangs	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test a bug for which the compiler hangs, using environment variables
  # set in several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test a bug for which the compiler hangs, using environment variables
  # set in several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-ice-on-invalid-code gcc-13.1.0/contrib/reghunt/bin/gcc-test-ice-on-invalid-code
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-ice-on-invalid-code	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-ice-on-invalid-code	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test an "ice-on-invalid-code" GCC bug, using environment variables set
  # in several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test an "ice-on-invalid-code" GCC bug, using environment variables set
  # in several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-ice-on-valid-code gcc-13.1.0/contrib/reghunt/bin/gcc-test-ice-on-valid-code
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-ice-on-valid-code	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-ice-on-valid-code	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test an "ice-on-valid-code" GCC bug, using environment variables set
  # in several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test an "ice-on-valid-code" GCC bug, using environment variables set
  # in several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-missing-warning gcc-13.1.0/contrib/reghunt/bin/gcc-test-missing-warning
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-missing-warning	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-missing-warning	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test a "missing-warning" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test a "missing-warning" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-rejects-valid gcc-13.1.0/contrib/reghunt/bin/gcc-test-rejects-valid
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-rejects-valid	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-rejects-valid	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test a "rejects-valid" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test a "rejects-valid" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-segfault-on-valid-code gcc-13.1.0/contrib/reghunt/bin/gcc-test-segfault-on-valid-code
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-segfault-on-valid-code	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-segfault-on-valid-code	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  # segfault, using environment variables set in several reghunt scripts
  # and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 4,10 ----
  # segfault, using environment variables set in several reghunt scripts
  # and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/gcc-test-wrong-code gcc-13.1.0/contrib/reghunt/bin/gcc-test-wrong-code
*** gcc-12.2.0/contrib/reghunt/bin/gcc-test-wrong-code	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/gcc-test-wrong-code	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Test a "wrong-code" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007 Free Software Foundation.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 3,9 ----
  # Test a "wrong-code" GCC bug, using environment variables set in
  # several reghunt scripts and configuration files.
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/reg-hunt gcc-13.1.0/contrib/reghunt/bin/reg-hunt
*** gcc-12.2.0/contrib/reghunt/bin/reg-hunt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/reg-hunt	Wed Apr 26 07:09:39 2023
***************
*** 47,53 ****
  #
  #
  #
! # Copyright (c) 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 47,53 ----
  #
  #
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/reg-newmid gcc-13.1.0/contrib/reghunt/bin/reg-newmid
*** gcc-12.2.0/contrib/reghunt/bin/reg-newmid	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/reg-newmid	Wed Apr 26 07:09:39 2023
***************
*** 10,16 ****
  # A nifty improvement would be to record known ranges of failure as
  # ranges, and then pick revisions just before and just after the range.
  #
! # Copyright (C) 2006 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 10,16 ----
  # A nifty improvement would be to record known ranges of failure as
  # ranges, and then pick revisions just before and just after the range.
  #
! # Copyright (C) 2006-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/bin/reg-test gcc-13.1.0/contrib/reghunt/bin/reg-test
*** gcc-12.2.0/contrib/reghunt/bin/reg-test	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/bin/reg-test	Wed Apr 26 07:09:39 2023
***************
*** 25,31 ****
  #               is STOP in the current directory.
  #
  #
! # Copyright (c) 2002, 2003, 2005 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 25,31 ----
  #               is STOP in the current directory.
  #
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/date_based/reg_periodic gcc-13.1.0/contrib/reghunt/date_based/reg_periodic
*** gcc-12.2.0/contrib/reghunt/date_based/reg_periodic	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/date_based/reg_periodic	Wed Apr 26 07:09:39 2023
***************
*** 25,31 ****
  #               is STOP in the current directory.
  #
  #
! # Copyright (c) 2002, 2003, 2005, 2009, 2010 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 25,31 ----
  #               is STOP in the current directory.
  #
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/reghunt/date_based/reg_search gcc-13.1.0/contrib/reghunt/date_based/reg_search
*** gcc-12.2.0/contrib/reghunt/date_based/reg_search	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/reghunt/date_based/reg_search	Wed Apr 26 07:09:39 2023
***************
*** 45,51 ****
  #
  #
  #
! # Copyright (c) 2002, 2003, 2005, 2009, 2010 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 45,51 ----
  #
  #
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/regression/ChangeLog gcc-13.1.0/contrib/regression/ChangeLog
*** gcc-12.2.0/contrib/regression/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/contrib/regression/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2012-08-26  Hans-Peter Nilsson  <hp@axis.com>
  
--- 1,10 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-02-16  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* objs-gcc.sh: Only bootstrap if source-directory contains gcc.
  
  2012-08-26  Hans-Peter Nilsson  <hp@axis.com>
  
diff -Nrcpad gcc-12.2.0/contrib/regression/GCC_Regression_Tester.wdgt/widget.html gcc-13.1.0/contrib/regression/GCC_Regression_Tester.wdgt/widget.html
*** gcc-12.2.0/contrib/regression/GCC_Regression_Tester.wdgt/widget.html	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/regression/GCC_Regression_Tester.wdgt/widget.html	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  <!-- Get and update the GCC regression tester's web page.
!      Copyright (C) 2005, 2007, 2009 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  <!-- Get and update the GCC regression tester's web page.
!      Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/contrib/regression/btest-gcc.sh gcc-13.1.0/contrib/regression/btest-gcc.sh
*** gcc-12.2.0/contrib/regression/btest-gcc.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/regression/btest-gcc.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,8 ****
  #!/bin/sh
  
  #  Test GCC.
! #  Copyright (C) 1999, 2000, 2001, 2002, 2005, 2006, 2009, 2012
! #  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
--- 1,7 ----
  #!/bin/sh
  
  #  Test GCC.
! #  Copyright (C) 1999-2023 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
diff -Nrcpad gcc-12.2.0/contrib/regression/mkindex.pl gcc-13.1.0/contrib/regression/mkindex.pl
*** gcc-12.2.0/contrib/regression/mkindex.pl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/regression/mkindex.pl	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/usr/bin/perl
  
  # Copy log files from a GCC build for HTTP access.
! # Copyright (C) 2008, 2009 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
--- 1,7 ----
  #!/usr/bin/perl
  
  # Copy log files from a GCC build for HTTP access.
! # Copyright (C) 2008-2023 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
diff -Nrcpad gcc-12.2.0/contrib/regression/objs-gcc.sh gcc-13.1.0/contrib/regression/objs-gcc.sh
*** gcc-12.2.0/contrib/regression/objs-gcc.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/regression/objs-gcc.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,8 ****
  #!/bin/sh
  
  #  Build tools for testing GCC.
! #  Copyright (C) 1999, 2000, 2001, 2002, 2009
! #  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
--- 1,7 ----
  #!/bin/sh
  
  #  Build tools for testing GCC.
! #  Copyright (C) 1999-2023 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
*************** if [ $H_REAL_TARGET = $H_REAL_HOST -a $H
*** 107,113 ****
    make all-gdb all-dejagnu all-ld || exit 1
    make install-gdb install-dejagnu install-ld || exit 1
  elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
!   make bootstrap || exit 1
    make install || exit 1
  else
    make || exit 1
--- 106,114 ----
    make all-gdb all-dejagnu all-ld || exit 1
    make install-gdb install-dejagnu install-ld || exit 1
  elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
!   H_MAKE_TARGET=
!   test -f $SOURCE/gcc/configure && H_MAKE_TARGET=bootstrap
!   make $H_MAKE_TARGET || exit 1
    make install || exit 1
  else
    make || exit 1
diff -Nrcpad gcc-12.2.0/contrib/test_installed gcc-13.1.0/contrib/test_installed
*** gcc-12.2.0/contrib/test_installed	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/test_installed	Wed Apr 26 07:09:39 2023
*************** while true; do
*** 60,66 ****
  
    --help) cat <<\EOF
  Runs the testsuite for an installed version of gcc/g++/gfortran/objc
! Copyright (C) 1998  Free Software Foundation
  by Alexandre Oliva <oliva@dcc.unicamp.br>
  
  Supported arguments:
--- 60,66 ----
  
    --help) cat <<\EOF
  Runs the testsuite for an installed version of gcc/g++/gfortran/objc
! Copyright (C) 1998-2023 Free Software Foundation, Inc.
  by Alexandre Oliva <oliva@dcc.unicamp.br>
  
  Supported arguments:
diff -Nrcpad gcc-12.2.0/contrib/test_mklog.py gcc-13.1.0/contrib/test_mklog.py
*** gcc-12.2.0/contrib/test_mklog.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/test_mklog.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  
! # Copyright (C) 2020 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/usr/bin/env python3
  
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** index aab79492357..f0df1002488 100644
*** 155,161 ****
  +
  +
   /* Interprocedural Identical Code Folding pass
!     Copyright (C) 2014-2020 Free Software Foundation, Inc.
   
  diff --git a/gcc/testsuite/gcc.dg/pr32374.c b/gcc/testsuite/gcc.dg/pr32374.c
  deleted file mode 100644
--- 155,161 ----
  +
  +
   /* Interprocedural Identical Code Folding pass
!     Copyright (C) 2014-2023 Free Software Foundation, Inc.
   
  diff --git a/gcc/testsuite/gcc.dg/pr32374.c b/gcc/testsuite/gcc.dg/pr32374.c
  deleted file mode 100644
*************** index f062e48071f..fd3c7ca8cf3 100644
*** 222,228 ****
  +
  +
   /* Output variables, constants and external declarations, for GNU compiler.
!     Copyright (C) 1987-2020 Free Software Foundation, Inc.
   
  diff --git a/libssp/gets-chk.c b/libssp/gets-chk.c
  index 4ad78c1f77b..6687b368038 100644
--- 222,228 ----
  +
  +
   /* Output variables, constants and external declarations, for GNU compiler.
!     Copyright (C) 1987-2023 Free Software Foundation, Inc.
   
  diff --git a/libssp/gets-chk.c b/libssp/gets-chk.c
  index 4ad78c1f77b..6687b368038 100644
diff -Nrcpad gcc-12.2.0/contrib/testsuite-management/validate_failures.py gcc-13.1.0/contrib/testsuite-management/validate_failures.py
*** gcc-12.2.0/contrib/testsuite-management/validate_failures.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/testsuite-management/validate_failures.py	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  
  # Contributed by Diego Novillo <dnovillo@google.com>
  #
! # Copyright (C) 2011-2013 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 5,11 ----
  
  # Contributed by Diego Novillo <dnovillo@google.com>
  #
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/contrib/texi2pod.pl gcc-13.1.0/contrib/texi2pod.pl
*** gcc-12.2.0/contrib/texi2pod.pl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/texi2pod.pl	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #! /usr/bin/perl -w
  
! #   Copyright (C) 1999-2014 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
--- 1,6 ----
  #! /usr/bin/perl -w
  
! #   Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/contrib/unicode/DerivedCoreProperties.txt gcc-13.1.0/contrib/unicode/DerivedCoreProperties.txt
*** gcc-12.2.0/contrib/unicode/DerivedCoreProperties.txt	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/contrib/unicode/DerivedCoreProperties.txt	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,12575 ----
+ # DerivedCoreProperties-15.0.0.txt
+ # Date: 2022-08-05, 22:17:05 GMT
+ # © 2022 Unicode®, Inc.
+ # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+ # For terms of use, see https://www.unicode.org/terms_of_use.html
+ #
+ # Unicode Character Database
+ #   For documentation, see https://www.unicode.org/reports/tr44/
+ 
+ # ================================================
+ 
+ # Derived Property: Math
+ #  Generated from: Sm + Other_Math
+ 
+ 002B          ; Math # Sm       PLUS SIGN
+ 003C..003E    ; Math # Sm   [3] LESS-THAN SIGN..GREATER-THAN SIGN
+ 005E          ; Math # Sk       CIRCUMFLEX ACCENT
+ 007C          ; Math # Sm       VERTICAL LINE
+ 007E          ; Math # Sm       TILDE
+ 00AC          ; Math # Sm       NOT SIGN
+ 00B1          ; Math # Sm       PLUS-MINUS SIGN
+ 00D7          ; Math # Sm       MULTIPLICATION SIGN
+ 00F7          ; Math # Sm       DIVISION SIGN
+ 03D0..03D2    ; Math # L&   [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL
+ 03D5          ; Math # L&       GREEK PHI SYMBOL
+ 03F0..03F1    ; Math # L&   [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL
+ 03F4..03F5    ; Math # L&   [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+ 03F6          ; Math # Sm       GREEK REVERSED LUNATE EPSILON SYMBOL
+ 0606..0608    ; Math # Sm   [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
+ 2016          ; Math # Po       DOUBLE VERTICAL LINE
+ 2032..2034    ; Math # Po   [3] PRIME..TRIPLE PRIME
+ 2040          ; Math # Pc       CHARACTER TIE
+ 2044          ; Math # Sm       FRACTION SLASH
+ 2052          ; Math # Sm       COMMERCIAL MINUS SIGN
+ 2061..2064    ; Math # Cf   [4] FUNCTION APPLICATION..INVISIBLE PLUS
+ 207A..207C    ; Math # Sm   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+ 207D          ; Math # Ps       SUPERSCRIPT LEFT PARENTHESIS
+ 207E          ; Math # Pe       SUPERSCRIPT RIGHT PARENTHESIS
+ 208A..208C    ; Math # Sm   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+ 208D          ; Math # Ps       SUBSCRIPT LEFT PARENTHESIS
+ 208E          ; Math # Pe       SUBSCRIPT RIGHT PARENTHESIS
+ 20D0..20DC    ; Math # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+ 20E1          ; Math # Mn       COMBINING LEFT RIGHT ARROW ABOVE
+ 20E5..20E6    ; Math # Mn   [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY
+ 20EB..20EF    ; Math # Mn   [5] COMBINING LONG DOUBLE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
+ 2102          ; Math # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; Math # L&       EULER CONSTANT
+ 210A..2113    ; Math # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; Math # L&       DOUBLE-STRUCK CAPITAL N
+ 2118          ; Math # Sm       SCRIPT CAPITAL P
+ 2119..211D    ; Math # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; Math # L&       DOUBLE-STRUCK CAPITAL Z
+ 2128          ; Math # L&       BLACK-LETTER CAPITAL Z
+ 2129          ; Math # So       TURNED GREEK SMALL LETTER IOTA
+ 212C..212D    ; Math # L&   [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
+ 212F..2131    ; Math # L&   [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+ 2133..2134    ; Math # L&   [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+ 2135..2138    ; Math # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 213C..213F    ; Math # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2140..2144    ; Math # Sm   [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+ 2145..2149    ; Math # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214B          ; Math # Sm       TURNED AMPERSAND
+ 2190..2194    ; Math # Sm   [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+ 2195..2199    ; Math # So   [5] UP DOWN ARROW..SOUTH WEST ARROW
+ 219A..219B    ; Math # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+ 219C..219F    ; Math # So   [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+ 21A0          ; Math # Sm       RIGHTWARDS TWO HEADED ARROW
+ 21A1..21A2    ; Math # So   [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+ 21A3          ; Math # Sm       RIGHTWARDS ARROW WITH TAIL
+ 21A4..21A5    ; Math # So   [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+ 21A6          ; Math # Sm       RIGHTWARDS ARROW FROM BAR
+ 21A7          ; Math # So       DOWNWARDS ARROW FROM BAR
+ 21A9..21AD    ; Math # So   [5] LEFTWARDS ARROW WITH HOOK..LEFT RIGHT WAVE ARROW
+ 21AE          ; Math # Sm       LEFT RIGHT ARROW WITH STROKE
+ 21B0..21B1    ; Math # So   [2] UPWARDS ARROW WITH TIP LEFTWARDS..UPWARDS ARROW WITH TIP RIGHTWARDS
+ 21B6..21B7    ; Math # So   [2] ANTICLOCKWISE TOP SEMICIRCLE ARROW..CLOCKWISE TOP SEMICIRCLE ARROW
+ 21BC..21CD    ; Math # So  [18] LEFTWARDS HARPOON WITH BARB UPWARDS..LEFTWARDS DOUBLE ARROW WITH STROKE
+ 21CE..21CF    ; Math # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+ 21D0..21D1    ; Math # So   [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+ 21D2          ; Math # Sm       RIGHTWARDS DOUBLE ARROW
+ 21D3          ; Math # So       DOWNWARDS DOUBLE ARROW
+ 21D4          ; Math # Sm       LEFT RIGHT DOUBLE ARROW
+ 21D5..21DB    ; Math # So   [7] UP DOWN DOUBLE ARROW..RIGHTWARDS TRIPLE ARROW
+ 21DD          ; Math # So       RIGHTWARDS SQUIGGLE ARROW
+ 21E4..21E5    ; Math # So   [2] LEFTWARDS ARROW TO BAR..RIGHTWARDS ARROW TO BAR
+ 21F4..22FF    ; Math # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+ 2308          ; Math # Ps       LEFT CEILING
+ 2309          ; Math # Pe       RIGHT CEILING
+ 230A          ; Math # Ps       LEFT FLOOR
+ 230B          ; Math # Pe       RIGHT FLOOR
+ 2320..2321    ; Math # Sm   [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+ 237C          ; Math # Sm       RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+ 239B..23B3    ; Math # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+ 23B4..23B5    ; Math # So   [2] TOP SQUARE BRACKET..BOTTOM SQUARE BRACKET
+ 23B7          ; Math # So       RADICAL SYMBOL BOTTOM
+ 23D0          ; Math # So       VERTICAL LINE EXTENSION
+ 23DC..23E1    ; Math # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+ 23E2          ; Math # So       WHITE TRAPEZIUM
+ 25A0..25A1    ; Math # So   [2] BLACK SQUARE..WHITE SQUARE
+ 25AE..25B6    ; Math # So   [9] BLACK VERTICAL RECTANGLE..BLACK RIGHT-POINTING TRIANGLE
+ 25B7          ; Math # Sm       WHITE RIGHT-POINTING TRIANGLE
+ 25BC..25C0    ; Math # So   [5] BLACK DOWN-POINTING TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+ 25C1          ; Math # Sm       WHITE LEFT-POINTING TRIANGLE
+ 25C6..25C7    ; Math # So   [2] BLACK DIAMOND..WHITE DIAMOND
+ 25CA..25CB    ; Math # So   [2] LOZENGE..WHITE CIRCLE
+ 25CF..25D3    ; Math # So   [5] BLACK CIRCLE..CIRCLE WITH UPPER HALF BLACK
+ 25E2          ; Math # So       BLACK LOWER RIGHT TRIANGLE
+ 25E4          ; Math # So       BLACK UPPER LEFT TRIANGLE
+ 25E7..25EC    ; Math # So   [6] SQUARE WITH LEFT HALF BLACK..WHITE UP-POINTING TRIANGLE WITH DOT
+ 25F8..25FF    ; Math # Sm   [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+ 2605..2606    ; Math # So   [2] BLACK STAR..WHITE STAR
+ 2640          ; Math # So       FEMALE SIGN
+ 2642          ; Math # So       MALE SIGN
+ 2660..2663    ; Math # So   [4] BLACK SPADE SUIT..BLACK CLUB SUIT
+ 266D..266E    ; Math # So   [2] MUSIC FLAT SIGN..MUSIC NATURAL SIGN
+ 266F          ; Math # Sm       MUSIC SHARP SIGN
+ 27C0..27C4    ; Math # Sm   [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+ 27C5          ; Math # Ps       LEFT S-SHAPED BAG DELIMITER
+ 27C6          ; Math # Pe       RIGHT S-SHAPED BAG DELIMITER
+ 27C7..27E5    ; Math # Sm  [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK
+ 27E6          ; Math # Ps       MATHEMATICAL LEFT WHITE SQUARE BRACKET
+ 27E7          ; Math # Pe       MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+ 27E8          ; Math # Ps       MATHEMATICAL LEFT ANGLE BRACKET
+ 27E9          ; Math # Pe       MATHEMATICAL RIGHT ANGLE BRACKET
+ 27EA          ; Math # Ps       MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+ 27EB          ; Math # Pe       MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+ 27EC          ; Math # Ps       MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+ 27ED          ; Math # Pe       MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+ 27EE          ; Math # Ps       MATHEMATICAL LEFT FLATTENED PARENTHESIS
+ 27EF          ; Math # Pe       MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+ 27F0..27FF    ; Math # Sm  [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+ 2900..2982    ; Math # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+ 2983          ; Math # Ps       LEFT WHITE CURLY BRACKET
+ 2984          ; Math # Pe       RIGHT WHITE CURLY BRACKET
+ 2985          ; Math # Ps       LEFT WHITE PARENTHESIS
+ 2986          ; Math # Pe       RIGHT WHITE PARENTHESIS
+ 2987          ; Math # Ps       Z NOTATION LEFT IMAGE BRACKET
+ 2988          ; Math # Pe       Z NOTATION RIGHT IMAGE BRACKET
+ 2989          ; Math # Ps       Z NOTATION LEFT BINDING BRACKET
+ 298A          ; Math # Pe       Z NOTATION RIGHT BINDING BRACKET
+ 298B          ; Math # Ps       LEFT SQUARE BRACKET WITH UNDERBAR
+ 298C          ; Math # Pe       RIGHT SQUARE BRACKET WITH UNDERBAR
+ 298D          ; Math # Ps       LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+ 298E          ; Math # Pe       RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+ 298F          ; Math # Ps       LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+ 2990          ; Math # Pe       RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+ 2991          ; Math # Ps       LEFT ANGLE BRACKET WITH DOT
+ 2992          ; Math # Pe       RIGHT ANGLE BRACKET WITH DOT
+ 2993          ; Math # Ps       LEFT ARC LESS-THAN BRACKET
+ 2994          ; Math # Pe       RIGHT ARC GREATER-THAN BRACKET
+ 2995          ; Math # Ps       DOUBLE LEFT ARC GREATER-THAN BRACKET
+ 2996          ; Math # Pe       DOUBLE RIGHT ARC LESS-THAN BRACKET
+ 2997          ; Math # Ps       LEFT BLACK TORTOISE SHELL BRACKET
+ 2998          ; Math # Pe       RIGHT BLACK TORTOISE SHELL BRACKET
+ 2999..29D7    ; Math # Sm  [63] DOTTED FENCE..BLACK HOURGLASS
+ 29D8          ; Math # Ps       LEFT WIGGLY FENCE
+ 29D9          ; Math # Pe       RIGHT WIGGLY FENCE
+ 29DA          ; Math # Ps       LEFT DOUBLE WIGGLY FENCE
+ 29DB          ; Math # Pe       RIGHT DOUBLE WIGGLY FENCE
+ 29DC..29FB    ; Math # Sm  [32] INCOMPLETE INFINITY..TRIPLE PLUS
+ 29FC          ; Math # Ps       LEFT-POINTING CURVED ANGLE BRACKET
+ 29FD          ; Math # Pe       RIGHT-POINTING CURVED ANGLE BRACKET
+ 29FE..2AFF    ; Math # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
+ 2B30..2B44    ; Math # Sm  [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
+ 2B47..2B4C    ; Math # Sm   [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+ FB29          ; Math # Sm       HEBREW LETTER ALTERNATIVE PLUS SIGN
+ FE61          ; Math # Po       SMALL ASTERISK
+ FE62          ; Math # Sm       SMALL PLUS SIGN
+ FE63          ; Math # Pd       SMALL HYPHEN-MINUS
+ FE64..FE66    ; Math # Sm   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+ FE68          ; Math # Po       SMALL REVERSE SOLIDUS
+ FF0B          ; Math # Sm       FULLWIDTH PLUS SIGN
+ FF1C..FF1E    ; Math # Sm   [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+ FF3C          ; Math # Po       FULLWIDTH REVERSE SOLIDUS
+ FF3E          ; Math # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF5C          ; Math # Sm       FULLWIDTH VERTICAL LINE
+ FF5E          ; Math # Sm       FULLWIDTH TILDE
+ FFE2          ; Math # Sm       FULLWIDTH NOT SIGN
+ FFE9..FFEC    ; Math # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+ 1D400..1D454  ; Math # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; Math # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; Math # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; Math # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; Math # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; Math # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; Math # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; Math # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; Math # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; Math # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; Math # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; Math # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; Math # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; Math # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; Math # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; Math # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; Math # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; Math # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; Math # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; Math # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C1         ; Math # Sm       MATHEMATICAL BOLD NABLA
+ 1D6C2..1D6DA  ; Math # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DB         ; Math # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ 1D6DC..1D6FA  ; Math # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FB         ; Math # Sm       MATHEMATICAL ITALIC NABLA
+ 1D6FC..1D714  ; Math # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D715         ; Math # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ 1D716..1D734  ; Math # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D735         ; Math # Sm       MATHEMATICAL BOLD ITALIC NABLA
+ 1D736..1D74E  ; Math # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D74F         ; Math # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D750..1D76E  ; Math # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D76F         ; Math # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
+ 1D770..1D788  ; Math # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D789         ; Math # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ 1D78A..1D7A8  ; Math # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7A9         ; Math # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ 1D7AA..1D7C2  ; Math # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C3         ; Math # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D7C4..1D7CB  ; Math # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; Math # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1EE00..1EE03  ; Math # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; Math # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; Math # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; Math # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; Math # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; Math # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; Math # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; Math # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; Math # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; Math # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; Math # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; Math # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; Math # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; Math # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; Math # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; Math # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; Math # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; Math # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; Math # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; Math # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; Math # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; Math # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; Math # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; Math # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; Math # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; Math # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; Math # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; Math # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; Math # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; Math # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; Math # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; Math # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; Math # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1EEF0..1EEF1  ; Math # Sm   [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
+ 
+ # Total code points: 2310
+ 
+ # ================================================
+ 
+ # Derived Property: Alphabetic
+ #  Generated from: Uppercase + Lowercase + Lt + Lm + Lo + Nl + Other_Alphabetic
+ 
+ 0041..005A    ; Alphabetic # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 0061..007A    ; Alphabetic # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; Alphabetic # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; Alphabetic # L&       MICRO SIGN
+ 00BA          ; Alphabetic # Lo       MASCULINE ORDINAL INDICATOR
+ 00C0..00D6    ; Alphabetic # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; Alphabetic # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..01BA    ; Alphabetic # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BB          ; Alphabetic # Lo       LATIN LETTER TWO WITH STROKE
+ 01BC..01BF    ; Alphabetic # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C0..01C3    ; Alphabetic # Lo   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+ 01C4..0293    ; Alphabetic # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0294          ; Alphabetic # Lo       LATIN LETTER GLOTTAL STOP
+ 0295..02AF    ; Alphabetic # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02C1    ; Alphabetic # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C6..02D1    ; Alphabetic # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02E0..02E4    ; Alphabetic # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02EC          ; Alphabetic # Lm       MODIFIER LETTER VOICING
+ 02EE          ; Alphabetic # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 0345          ; Alphabetic # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0370..0373    ; Alphabetic # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0374          ; Alphabetic # Lm       GREEK NUMERAL SIGN
+ 0376..0377    ; Alphabetic # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; Alphabetic # Lm       GREEK YPOGEGRAMMENI
+ 037B..037D    ; Alphabetic # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; Alphabetic # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; Alphabetic # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Alphabetic # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Alphabetic # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; Alphabetic # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; Alphabetic # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F7..0481    ; Alphabetic # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 048A..052F    ; Alphabetic # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; Alphabetic # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0559          ; Alphabetic # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 0560..0588    ; Alphabetic # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 05B0..05BD    ; Alphabetic # Mn  [14] HEBREW POINT SHEVA..HEBREW POINT METEG
+ 05BF          ; Alphabetic # Mn       HEBREW POINT RAFE
+ 05C1..05C2    ; Alphabetic # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+ 05C4..05C5    ; Alphabetic # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+ 05C7          ; Alphabetic # Mn       HEBREW POINT QAMATS QATAN
+ 05D0..05EA    ; Alphabetic # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+ 05EF..05F2    ; Alphabetic # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+ 0610..061A    ; Alphabetic # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+ 0620..063F    ; Alphabetic # Lo  [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+ 0640          ; Alphabetic # Lm       ARABIC TATWEEL
+ 0641..064A    ; Alphabetic # Lo  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+ 064B..0657    ; Alphabetic # Mn  [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA
+ 0659..065F    ; Alphabetic # Mn   [7] ARABIC ZWARAKAY..ARABIC WAVY HAMZA BELOW
+ 066E..066F    ; Alphabetic # Lo   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+ 0670          ; Alphabetic # Mn       ARABIC LETTER SUPERSCRIPT ALEF
+ 0671..06D3    ; Alphabetic # Lo  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 06D5          ; Alphabetic # Lo       ARABIC LETTER AE
+ 06D6..06DC    ; Alphabetic # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+ 06E1..06E4    ; Alphabetic # Mn   [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA
+ 06E5..06E6    ; Alphabetic # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06E7..06E8    ; Alphabetic # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+ 06ED          ; Alphabetic # Mn       ARABIC SMALL LOW MEEM
+ 06EE..06EF    ; Alphabetic # Lo   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+ 06FA..06FC    ; Alphabetic # Lo   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+ 06FF          ; Alphabetic # Lo       ARABIC LETTER HEH WITH INVERTED V
+ 0710          ; Alphabetic # Lo       SYRIAC LETTER ALAPH
+ 0711          ; Alphabetic # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
+ 0712..072F    ; Alphabetic # Lo  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+ 0730..073F    ; Alphabetic # Mn  [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA
+ 074D..07A5    ; Alphabetic # Lo  [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+ 07A6..07B0    ; Alphabetic # Mn  [11] THAANA ABAFILI..THAANA SUKUN
+ 07B1          ; Alphabetic # Lo       THAANA LETTER NAA
+ 07CA..07EA    ; Alphabetic # Lo  [33] NKO LETTER A..NKO LETTER JONA RA
+ 07F4..07F5    ; Alphabetic # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07FA          ; Alphabetic # Lm       NKO LAJANYALAN
+ 0800..0815    ; Alphabetic # Lo  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+ 0816..0817    ; Alphabetic # Mn   [2] SAMARITAN MARK IN..SAMARITAN MARK IN-ALAF
+ 081A          ; Alphabetic # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 081B..0823    ; Alphabetic # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+ 0824          ; Alphabetic # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0825..0827    ; Alphabetic # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+ 0828          ; Alphabetic # Lm       SAMARITAN MODIFIER LETTER I
+ 0829..082C    ; Alphabetic # Mn   [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
+ 0840..0858    ; Alphabetic # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+ 0860..086A    ; Alphabetic # Lo  [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+ 0870..0887    ; Alphabetic # Lo  [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+ 0889..088E    ; Alphabetic # Lo   [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+ 08A0..08C8    ; Alphabetic # Lo  [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+ 08C9          ; Alphabetic # Lm       ARABIC SMALL FARSI YEH
+ 08D4..08DF    ; Alphabetic # Mn  [12] ARABIC SMALL HIGH WORD AR-RUB..ARABIC SMALL HIGH WORD WAQFA
+ 08E3..08E9    ; Alphabetic # Mn   [7] ARABIC TURNED DAMMA BELOW..ARABIC CURLY KASRATAN
+ 08F0..0902    ; Alphabetic # Mn  [19] ARABIC OPEN FATHATAN..DEVANAGARI SIGN ANUSVARA
+ 0903          ; Alphabetic # Mc       DEVANAGARI SIGN VISARGA
+ 0904..0939    ; Alphabetic # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+ 093A          ; Alphabetic # Mn       DEVANAGARI VOWEL SIGN OE
+ 093B          ; Alphabetic # Mc       DEVANAGARI VOWEL SIGN OOE
+ 093D          ; Alphabetic # Lo       DEVANAGARI SIGN AVAGRAHA
+ 093E..0940    ; Alphabetic # Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+ 0941..0948    ; Alphabetic # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+ 0949..094C    ; Alphabetic # Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+ 094E..094F    ; Alphabetic # Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+ 0950          ; Alphabetic # Lo       DEVANAGARI OM
+ 0955..0957    ; Alphabetic # Mn   [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE
+ 0958..0961    ; Alphabetic # Lo  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+ 0962..0963    ; Alphabetic # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+ 0971          ; Alphabetic # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0972..0980    ; Alphabetic # Lo  [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+ 0981          ; Alphabetic # Mn       BENGALI SIGN CANDRABINDU
+ 0982..0983    ; Alphabetic # Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+ 0985..098C    ; Alphabetic # Lo   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+ 098F..0990    ; Alphabetic # Lo   [2] BENGALI LETTER E..BENGALI LETTER AI
+ 0993..09A8    ; Alphabetic # Lo  [22] BENGALI LETTER O..BENGALI LETTER NA
+ 09AA..09B0    ; Alphabetic # Lo   [7] BENGALI LETTER PA..BENGALI LETTER RA
+ 09B2          ; Alphabetic # Lo       BENGALI LETTER LA
+ 09B6..09B9    ; Alphabetic # Lo   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+ 09BD          ; Alphabetic # Lo       BENGALI SIGN AVAGRAHA
+ 09BE..09C0    ; Alphabetic # Mc   [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+ 09C1..09C4    ; Alphabetic # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+ 09C7..09C8    ; Alphabetic # Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+ 09CB..09CC    ; Alphabetic # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09CE          ; Alphabetic # Lo       BENGALI LETTER KHANDA TA
+ 09D7          ; Alphabetic # Mc       BENGALI AU LENGTH MARK
+ 09DC..09DD    ; Alphabetic # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF..09E1    ; Alphabetic # Lo   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+ 09E2..09E3    ; Alphabetic # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+ 09F0..09F1    ; Alphabetic # Lo   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+ 09FC          ; Alphabetic # Lo       BENGALI LETTER VEDIC ANUSVARA
+ 0A01..0A02    ; Alphabetic # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+ 0A03          ; Alphabetic # Mc       GURMUKHI SIGN VISARGA
+ 0A05..0A0A    ; Alphabetic # Lo   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+ 0A0F..0A10    ; Alphabetic # Lo   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+ 0A13..0A28    ; Alphabetic # Lo  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+ 0A2A..0A30    ; Alphabetic # Lo   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+ 0A32..0A33    ; Alphabetic # Lo   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+ 0A35..0A36    ; Alphabetic # Lo   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+ 0A38..0A39    ; Alphabetic # Lo   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+ 0A3E..0A40    ; Alphabetic # Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+ 0A41..0A42    ; Alphabetic # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+ 0A47..0A48    ; Alphabetic # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+ 0A4B..0A4C    ; Alphabetic # Mn   [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
+ 0A51          ; Alphabetic # Mn       GURMUKHI SIGN UDAAT
+ 0A59..0A5C    ; Alphabetic # Lo   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+ 0A5E          ; Alphabetic # Lo       GURMUKHI LETTER FA
+ 0A70..0A71    ; Alphabetic # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+ 0A72..0A74    ; Alphabetic # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+ 0A75          ; Alphabetic # Mn       GURMUKHI SIGN YAKASH
+ 0A81..0A82    ; Alphabetic # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+ 0A83          ; Alphabetic # Mc       GUJARATI SIGN VISARGA
+ 0A85..0A8D    ; Alphabetic # Lo   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+ 0A8F..0A91    ; Alphabetic # Lo   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+ 0A93..0AA8    ; Alphabetic # Lo  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+ 0AAA..0AB0    ; Alphabetic # Lo   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+ 0AB2..0AB3    ; Alphabetic # Lo   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+ 0AB5..0AB9    ; Alphabetic # Lo   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+ 0ABD          ; Alphabetic # Lo       GUJARATI SIGN AVAGRAHA
+ 0ABE..0AC0    ; Alphabetic # Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+ 0AC1..0AC5    ; Alphabetic # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+ 0AC7..0AC8    ; Alphabetic # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+ 0AC9          ; Alphabetic # Mc       GUJARATI VOWEL SIGN CANDRA O
+ 0ACB..0ACC    ; Alphabetic # Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+ 0AD0          ; Alphabetic # Lo       GUJARATI OM
+ 0AE0..0AE1    ; Alphabetic # Lo   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+ 0AE2..0AE3    ; Alphabetic # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+ 0AF9          ; Alphabetic # Lo       GUJARATI LETTER ZHA
+ 0AFA..0AFC    ; Alphabetic # Mn   [3] GUJARATI SIGN SUKUN..GUJARATI SIGN MADDAH
+ 0B01          ; Alphabetic # Mn       ORIYA SIGN CANDRABINDU
+ 0B02..0B03    ; Alphabetic # Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+ 0B05..0B0C    ; Alphabetic # Lo   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+ 0B0F..0B10    ; Alphabetic # Lo   [2] ORIYA LETTER E..ORIYA LETTER AI
+ 0B13..0B28    ; Alphabetic # Lo  [22] ORIYA LETTER O..ORIYA LETTER NA
+ 0B2A..0B30    ; Alphabetic # Lo   [7] ORIYA LETTER PA..ORIYA LETTER RA
+ 0B32..0B33    ; Alphabetic # Lo   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+ 0B35..0B39    ; Alphabetic # Lo   [5] ORIYA LETTER VA..ORIYA LETTER HA
+ 0B3D          ; Alphabetic # Lo       ORIYA SIGN AVAGRAHA
+ 0B3E          ; Alphabetic # Mc       ORIYA VOWEL SIGN AA
+ 0B3F          ; Alphabetic # Mn       ORIYA VOWEL SIGN I
+ 0B40          ; Alphabetic # Mc       ORIYA VOWEL SIGN II
+ 0B41..0B44    ; Alphabetic # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+ 0B47..0B48    ; Alphabetic # Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; Alphabetic # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B56          ; Alphabetic # Mn       ORIYA AI LENGTH MARK
+ 0B57          ; Alphabetic # Mc       ORIYA AU LENGTH MARK
+ 0B5C..0B5D    ; Alphabetic # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B5F..0B61    ; Alphabetic # Lo   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+ 0B62..0B63    ; Alphabetic # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+ 0B71          ; Alphabetic # Lo       ORIYA LETTER WA
+ 0B82          ; Alphabetic # Mn       TAMIL SIGN ANUSVARA
+ 0B83          ; Alphabetic # Lo       TAMIL SIGN VISARGA
+ 0B85..0B8A    ; Alphabetic # Lo   [6] TAMIL LETTER A..TAMIL LETTER UU
+ 0B8E..0B90    ; Alphabetic # Lo   [3] TAMIL LETTER E..TAMIL LETTER AI
+ 0B92..0B95    ; Alphabetic # Lo   [4] TAMIL LETTER O..TAMIL LETTER KA
+ 0B99..0B9A    ; Alphabetic # Lo   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+ 0B9C          ; Alphabetic # Lo       TAMIL LETTER JA
+ 0B9E..0B9F    ; Alphabetic # Lo   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+ 0BA3..0BA4    ; Alphabetic # Lo   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+ 0BA8..0BAA    ; Alphabetic # Lo   [3] TAMIL LETTER NA..TAMIL LETTER PA
+ 0BAE..0BB9    ; Alphabetic # Lo  [12] TAMIL LETTER MA..TAMIL LETTER HA
+ 0BBE..0BBF    ; Alphabetic # Mc   [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+ 0BC0          ; Alphabetic # Mn       TAMIL VOWEL SIGN II
+ 0BC1..0BC2    ; Alphabetic # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+ 0BC6..0BC8    ; Alphabetic # Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+ 0BCA..0BCC    ; Alphabetic # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0BD0          ; Alphabetic # Lo       TAMIL OM
+ 0BD7          ; Alphabetic # Mc       TAMIL AU LENGTH MARK
+ 0C00          ; Alphabetic # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
+ 0C01..0C03    ; Alphabetic # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+ 0C04          ; Alphabetic # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
+ 0C05..0C0C    ; Alphabetic # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+ 0C0E..0C10    ; Alphabetic # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
+ 0C12..0C28    ; Alphabetic # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
+ 0C2A..0C39    ; Alphabetic # Lo  [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3D          ; Alphabetic # Lo       TELUGU SIGN AVAGRAHA
+ 0C3E..0C40    ; Alphabetic # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+ 0C41..0C44    ; Alphabetic # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+ 0C46..0C48    ; Alphabetic # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+ 0C4A..0C4C    ; Alphabetic # Mn   [3] TELUGU VOWEL SIGN O..TELUGU VOWEL SIGN AU
+ 0C55..0C56    ; Alphabetic # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+ 0C58..0C5A    ; Alphabetic # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D          ; Alphabetic # Lo       TELUGU LETTER NAKAARA POLLU
+ 0C60..0C61    ; Alphabetic # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+ 0C62..0C63    ; Alphabetic # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+ 0C80          ; Alphabetic # Lo       KANNADA SIGN SPACING CANDRABINDU
+ 0C81          ; Alphabetic # Mn       KANNADA SIGN CANDRABINDU
+ 0C82..0C83    ; Alphabetic # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+ 0C85..0C8C    ; Alphabetic # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+ 0C8E..0C90    ; Alphabetic # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
+ 0C92..0CA8    ; Alphabetic # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
+ 0CAA..0CB3    ; Alphabetic # Lo  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+ 0CB5..0CB9    ; Alphabetic # Lo   [5] KANNADA LETTER VA..KANNADA LETTER HA
+ 0CBD          ; Alphabetic # Lo       KANNADA SIGN AVAGRAHA
+ 0CBE          ; Alphabetic # Mc       KANNADA VOWEL SIGN AA
+ 0CBF          ; Alphabetic # Mn       KANNADA VOWEL SIGN I
+ 0CC0..0CC4    ; Alphabetic # Mc   [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+ 0CC6          ; Alphabetic # Mn       KANNADA VOWEL SIGN E
+ 0CC7..0CC8    ; Alphabetic # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; Alphabetic # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0CCC          ; Alphabetic # Mn       KANNADA VOWEL SIGN AU
+ 0CD5..0CD6    ; Alphabetic # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+ 0CDD..0CDE    ; Alphabetic # Lo   [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+ 0CE0..0CE1    ; Alphabetic # Lo   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+ 0CE2..0CE3    ; Alphabetic # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+ 0CF1..0CF2    ; Alphabetic # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0CF3          ; Alphabetic # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+ 0D00..0D01    ; Alphabetic # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+ 0D02..0D03    ; Alphabetic # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+ 0D04..0D0C    ; Alphabetic # Lo   [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+ 0D0E..0D10    ; Alphabetic # Lo   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+ 0D12..0D3A    ; Alphabetic # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+ 0D3D          ; Alphabetic # Lo       MALAYALAM SIGN AVAGRAHA
+ 0D3E..0D40    ; Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+ 0D41..0D44    ; Alphabetic # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+ 0D46..0D48    ; Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+ 0D4A..0D4C    ; Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0D4E          ; Alphabetic # Lo       MALAYALAM LETTER DOT REPH
+ 0D54..0D56    ; Alphabetic # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+ 0D57          ; Alphabetic # Mc       MALAYALAM AU LENGTH MARK
+ 0D5F..0D61    ; Alphabetic # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+ 0D62..0D63    ; Alphabetic # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+ 0D7A..0D7F    ; Alphabetic # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D81          ; Alphabetic # Mn       SINHALA SIGN CANDRABINDU
+ 0D82..0D83    ; Alphabetic # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+ 0D85..0D96    ; Alphabetic # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+ 0D9A..0DB1    ; Alphabetic # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+ 0DB3..0DBB    ; Alphabetic # Lo   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+ 0DBD          ; Alphabetic # Lo       SINHALA LETTER DANTAJA LAYANNA
+ 0DC0..0DC6    ; Alphabetic # Lo   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+ 0DCF..0DD1    ; Alphabetic # Mc   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+ 0DD2..0DD4    ; Alphabetic # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+ 0DD6          ; Alphabetic # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
+ 0DD8..0DDF    ; Alphabetic # Mc   [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+ 0DF2..0DF3    ; Alphabetic # Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+ 0E01..0E30    ; Alphabetic # Lo  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+ 0E31          ; Alphabetic # Mn       THAI CHARACTER MAI HAN-AKAT
+ 0E32..0E33    ; Alphabetic # Lo   [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+ 0E34..0E3A    ; Alphabetic # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+ 0E40..0E45    ; Alphabetic # Lo   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+ 0E46          ; Alphabetic # Lm       THAI CHARACTER MAIYAMOK
+ 0E4D          ; Alphabetic # Mn       THAI CHARACTER NIKHAHIT
+ 0E81..0E82    ; Alphabetic # Lo   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+ 0E84          ; Alphabetic # Lo       LAO LETTER KHO TAM
+ 0E86..0E8A    ; Alphabetic # Lo   [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
+ 0E8C..0EA3    ; Alphabetic # Lo  [24] LAO LETTER PALI JHA..LAO LETTER LO LING
+ 0EA5          ; Alphabetic # Lo       LAO LETTER LO LOOT
+ 0EA7..0EB0    ; Alphabetic # Lo  [10] LAO LETTER WO..LAO VOWEL SIGN A
+ 0EB1          ; Alphabetic # Mn       LAO VOWEL SIGN MAI KAN
+ 0EB2..0EB3    ; Alphabetic # Lo   [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+ 0EB4..0EB9    ; Alphabetic # Mn   [6] LAO VOWEL SIGN I..LAO VOWEL SIGN UU
+ 0EBB..0EBC    ; Alphabetic # Mn   [2] LAO VOWEL SIGN MAI KON..LAO SEMIVOWEL SIGN LO
+ 0EBD          ; Alphabetic # Lo       LAO SEMIVOWEL SIGN NYO
+ 0EC0..0EC4    ; Alphabetic # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+ 0EC6          ; Alphabetic # Lm       LAO KO LA
+ 0ECD          ; Alphabetic # Mn       LAO NIGGAHITA
+ 0EDC..0EDF    ; Alphabetic # Lo   [4] LAO HO NO..LAO LETTER KHMU NYO
+ 0F00          ; Alphabetic # Lo       TIBETAN SYLLABLE OM
+ 0F40..0F47    ; Alphabetic # Lo   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+ 0F49..0F6C    ; Alphabetic # Lo  [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+ 0F71..0F7E    ; Alphabetic # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+ 0F7F          ; Alphabetic # Mc       TIBETAN SIGN RNAM BCAD
+ 0F80..0F83    ; Alphabetic # Mn   [4] TIBETAN VOWEL SIGN REVERSED I..TIBETAN SIGN SNA LDAN
+ 0F88..0F8C    ; Alphabetic # Lo   [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+ 0F8D..0F97    ; Alphabetic # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+ 0F99..0FBC    ; Alphabetic # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+ 1000..102A    ; Alphabetic # Lo  [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+ 102B..102C    ; Alphabetic # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+ 102D..1030    ; Alphabetic # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+ 1031          ; Alphabetic # Mc       MYANMAR VOWEL SIGN E
+ 1032..1036    ; Alphabetic # Mn   [5] MYANMAR VOWEL SIGN AI..MYANMAR SIGN ANUSVARA
+ 1038          ; Alphabetic # Mc       MYANMAR SIGN VISARGA
+ 103B..103C    ; Alphabetic # Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+ 103D..103E    ; Alphabetic # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+ 103F          ; Alphabetic # Lo       MYANMAR LETTER GREAT SA
+ 1050..1055    ; Alphabetic # Lo   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+ 1056..1057    ; Alphabetic # Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+ 1058..1059    ; Alphabetic # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+ 105A..105D    ; Alphabetic # Lo   [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+ 105E..1060    ; Alphabetic # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+ 1061          ; Alphabetic # Lo       MYANMAR LETTER SGAW KAREN SHA
+ 1062..1064    ; Alphabetic # Mc   [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+ 1065..1066    ; Alphabetic # Lo   [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+ 1067..106D    ; Alphabetic # Mc   [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+ 106E..1070    ; Alphabetic # Lo   [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+ 1071..1074    ; Alphabetic # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+ 1075..1081    ; Alphabetic # Lo  [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+ 1082          ; Alphabetic # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+ 1083..1084    ; Alphabetic # Mc   [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+ 1085..1086    ; Alphabetic # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+ 1087..108C    ; Alphabetic # Mc   [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+ 108D          ; Alphabetic # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+ 108E          ; Alphabetic # Lo       MYANMAR LETTER RUMAI PALAUNG FA
+ 108F          ; Alphabetic # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
+ 109A..109C    ; Alphabetic # Mc   [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
+ 109D          ; Alphabetic # Mn       MYANMAR VOWEL SIGN AITON AI
+ 10A0..10C5    ; Alphabetic # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Alphabetic # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Alphabetic # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; Alphabetic # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; Alphabetic # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; Alphabetic # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 1100..1248    ; Alphabetic # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+ 124A..124D    ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+ 1250..1256    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+ 1258          ; Alphabetic # Lo       ETHIOPIC SYLLABLE QHWA
+ 125A..125D    ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+ 1260..1288    ; Alphabetic # Lo  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+ 128A..128D    ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+ 1290..12B0    ; Alphabetic # Lo  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+ 12B2..12B5    ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+ 12B8..12BE    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+ 12C0          ; Alphabetic # Lo       ETHIOPIC SYLLABLE KXWA
+ 12C2..12C5    ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+ 12C8..12D6    ; Alphabetic # Lo  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+ 12D8..1310    ; Alphabetic # Lo  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+ 1312..1315    ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+ 1318..135A    ; Alphabetic # Lo  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+ 1380..138F    ; Alphabetic # Lo  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+ 13A0..13F5    ; Alphabetic # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; Alphabetic # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1401..166C    ; Alphabetic # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+ 166F..167F    ; Alphabetic # Lo  [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+ 1681..169A    ; Alphabetic # Lo  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+ 16A0..16EA    ; Alphabetic # Lo  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+ 16EE..16F0    ; Alphabetic # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+ 16F1..16F8    ; Alphabetic # Lo   [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+ 1700..1711    ; Alphabetic # Lo  [18] TAGALOG LETTER A..TAGALOG LETTER HA
+ 1712..1713    ; Alphabetic # Mn   [2] TAGALOG VOWEL SIGN I..TAGALOG VOWEL SIGN U
+ 171F..1731    ; Alphabetic # Lo  [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+ 1732..1733    ; Alphabetic # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+ 1740..1751    ; Alphabetic # Lo  [18] BUHID LETTER A..BUHID LETTER HA
+ 1752..1753    ; Alphabetic # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+ 1760..176C    ; Alphabetic # Lo  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+ 176E..1770    ; Alphabetic # Lo   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+ 1772..1773    ; Alphabetic # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+ 1780..17B3    ; Alphabetic # Lo  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+ 17B6          ; Alphabetic # Mc       KHMER VOWEL SIGN AA
+ 17B7..17BD    ; Alphabetic # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+ 17BE..17C5    ; Alphabetic # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+ 17C6          ; Alphabetic # Mn       KHMER SIGN NIKAHIT
+ 17C7..17C8    ; Alphabetic # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+ 17D7          ; Alphabetic # Lm       KHMER SIGN LEK TOO
+ 17DC          ; Alphabetic # Lo       KHMER SIGN AVAKRAHASANYA
+ 1820..1842    ; Alphabetic # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+ 1843          ; Alphabetic # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1844..1878    ; Alphabetic # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+ 1880..1884    ; Alphabetic # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+ 1885..1886    ; Alphabetic # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 1887..18A8    ; Alphabetic # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+ 18A9          ; Alphabetic # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
+ 18AA          ; Alphabetic # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+ 18B0..18F5    ; Alphabetic # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+ 1900..191E    ; Alphabetic # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+ 1920..1922    ; Alphabetic # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+ 1923..1926    ; Alphabetic # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+ 1927..1928    ; Alphabetic # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+ 1929..192B    ; Alphabetic # Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+ 1930..1931    ; Alphabetic # Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+ 1932          ; Alphabetic # Mn       LIMBU SMALL LETTER ANUSVARA
+ 1933..1938    ; Alphabetic # Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+ 1950..196D    ; Alphabetic # Lo  [30] TAI LE LETTER KA..TAI LE LETTER AI
+ 1970..1974    ; Alphabetic # Lo   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+ 1980..19AB    ; Alphabetic # Lo  [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
+ 19B0..19C9    ; Alphabetic # Lo  [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+ 1A00..1A16    ; Alphabetic # Lo  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+ 1A17..1A18    ; Alphabetic # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+ 1A19..1A1A    ; Alphabetic # Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+ 1A1B          ; Alphabetic # Mn       BUGINESE VOWEL SIGN AE
+ 1A20..1A54    ; Alphabetic # Lo  [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
+ 1A55          ; Alphabetic # Mc       TAI THAM CONSONANT SIGN MEDIAL RA
+ 1A56          ; Alphabetic # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
+ 1A57          ; Alphabetic # Mc       TAI THAM CONSONANT SIGN LA TANG LAI
+ 1A58..1A5E    ; Alphabetic # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+ 1A61          ; Alphabetic # Mc       TAI THAM VOWEL SIGN A
+ 1A62          ; Alphabetic # Mn       TAI THAM VOWEL SIGN MAI SAT
+ 1A63..1A64    ; Alphabetic # Mc   [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
+ 1A65..1A6C    ; Alphabetic # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+ 1A6D..1A72    ; Alphabetic # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+ 1A73..1A74    ; Alphabetic # Mn   [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG
+ 1AA7          ; Alphabetic # Lm       TAI THAM SIGN MAI YAMOK
+ 1ABF..1AC0    ; Alphabetic # Mn   [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
+ 1ACC..1ACE    ; Alphabetic # Mn   [3] COMBINING LATIN SMALL LETTER INSULAR G..COMBINING LATIN SMALL LETTER INSULAR T
+ 1B00..1B03    ; Alphabetic # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+ 1B04          ; Alphabetic # Mc       BALINESE SIGN BISAH
+ 1B05..1B33    ; Alphabetic # Lo  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+ 1B35          ; Alphabetic # Mc       BALINESE VOWEL SIGN TEDUNG
+ 1B36..1B3A    ; Alphabetic # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+ 1B3B          ; Alphabetic # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3C          ; Alphabetic # Mn       BALINESE VOWEL SIGN LA LENGA
+ 1B3D..1B41    ; Alphabetic # Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B42          ; Alphabetic # Mn       BALINESE VOWEL SIGN PEPET
+ 1B43          ; Alphabetic # Mc       BALINESE VOWEL SIGN PEPET TEDUNG
+ 1B45..1B4C    ; Alphabetic # Lo   [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+ 1B80..1B81    ; Alphabetic # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+ 1B82          ; Alphabetic # Mc       SUNDANESE SIGN PANGWISAD
+ 1B83..1BA0    ; Alphabetic # Lo  [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+ 1BA1          ; Alphabetic # Mc       SUNDANESE CONSONANT SIGN PAMINGKAL
+ 1BA2..1BA5    ; Alphabetic # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+ 1BA6..1BA7    ; Alphabetic # Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+ 1BA8..1BA9    ; Alphabetic # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+ 1BAC..1BAD    ; Alphabetic # Mn   [2] SUNDANESE CONSONANT SIGN PASANGAN MA..SUNDANESE CONSONANT SIGN PASANGAN WA
+ 1BAE..1BAF    ; Alphabetic # Lo   [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+ 1BBA..1BE5    ; Alphabetic # Lo  [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+ 1BE7          ; Alphabetic # Mc       BATAK VOWEL SIGN E
+ 1BE8..1BE9    ; Alphabetic # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+ 1BEA..1BEC    ; Alphabetic # Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+ 1BED          ; Alphabetic # Mn       BATAK VOWEL SIGN KARO O
+ 1BEE          ; Alphabetic # Mc       BATAK VOWEL SIGN U
+ 1BEF..1BF1    ; Alphabetic # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+ 1C00..1C23    ; Alphabetic # Lo  [36] LEPCHA LETTER KA..LEPCHA LETTER A
+ 1C24..1C2B    ; Alphabetic # Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+ 1C2C..1C33    ; Alphabetic # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+ 1C34..1C35    ; Alphabetic # Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+ 1C36          ; Alphabetic # Mn       LEPCHA SIGN RAN
+ 1C4D..1C4F    ; Alphabetic # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+ 1C5A..1C77    ; Alphabetic # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+ 1C78..1C7D    ; Alphabetic # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1C80..1C88    ; Alphabetic # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; Alphabetic # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Alphabetic # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1CE9..1CEC    ; Alphabetic # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+ 1CEE..1CF3    ; Alphabetic # Lo   [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+ 1CF5..1CF6    ; Alphabetic # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+ 1CFA          ; Alphabetic # Lo       VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+ 1D00..1D2B    ; Alphabetic # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; Alphabetic # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; Alphabetic # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; Alphabetic # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; Alphabetic # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; Alphabetic # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1DE7..1DF4    ; Alphabetic # Mn  [14] COMBINING LATIN SMALL LETTER ALPHA..COMBINING LATIN SMALL LETTER U WITH DIAERESIS
+ 1E00..1F15    ; Alphabetic # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; Alphabetic # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; Alphabetic # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; Alphabetic # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Alphabetic # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; Alphabetic # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Alphabetic # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Alphabetic # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; Alphabetic # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Alphabetic # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; Alphabetic # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; Alphabetic # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; Alphabetic # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; Alphabetic # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; Alphabetic # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; Alphabetic # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; Alphabetic # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; Alphabetic # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; Alphabetic # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2071          ; Alphabetic # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; Alphabetic # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; Alphabetic # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 2102          ; Alphabetic # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; Alphabetic # L&       EULER CONSTANT
+ 210A..2113    ; Alphabetic # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; Alphabetic # L&       DOUBLE-STRUCK CAPITAL N
+ 2119..211D    ; Alphabetic # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; Alphabetic # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; Alphabetic # L&       OHM SIGN
+ 2128          ; Alphabetic # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; Alphabetic # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212F..2134    ; Alphabetic # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; Alphabetic # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; Alphabetic # L&       INFORMATION SOURCE
+ 213C..213F    ; Alphabetic # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2145..2149    ; Alphabetic # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; Alphabetic # L&       TURNED SMALL F
+ 2160..2182    ; Alphabetic # Nl  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+ 2183..2184    ; Alphabetic # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 2185..2188    ; Alphabetic # Nl   [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+ 24B6..24E9    ; Alphabetic # So  [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 2C00..2C7B    ; Alphabetic # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; Alphabetic # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; Alphabetic # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CEB..2CEE    ; Alphabetic # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2..2CF3    ; Alphabetic # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; Alphabetic # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Alphabetic # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Alphabetic # L&       GEORGIAN SMALL LETTER AEN
+ 2D30..2D67    ; Alphabetic # Lo  [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+ 2D6F          ; Alphabetic # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D80..2D96    ; Alphabetic # Lo  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+ 2DA0..2DA6    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+ 2DA8..2DAE    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+ 2DB0..2DB6    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+ 2DB8..2DBE    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+ 2DC0..2DC6    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+ 2DC8..2DCE    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+ 2DD0..2DD6    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+ 2DD8..2DDE    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+ 2DE0..2DFF    ; Alphabetic # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+ 2E2F          ; Alphabetic # Lm       VERTICAL TILDE
+ 3005          ; Alphabetic # Lm       IDEOGRAPHIC ITERATION MARK
+ 3006          ; Alphabetic # Lo       IDEOGRAPHIC CLOSING MARK
+ 3007          ; Alphabetic # Nl       IDEOGRAPHIC NUMBER ZERO
+ 3021..3029    ; Alphabetic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+ 3031..3035    ; Alphabetic # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 3038..303A    ; Alphabetic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 303B          ; Alphabetic # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 303C          ; Alphabetic # Lo       MASU MARK
+ 3041..3096    ; Alphabetic # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+ 309D..309E    ; Alphabetic # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 309F          ; Alphabetic # Lo       HIRAGANA DIGRAPH YORI
+ 30A1..30FA    ; Alphabetic # Lo  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+ 30FC..30FE    ; Alphabetic # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ 30FF          ; Alphabetic # Lo       KATAKANA DIGRAPH KOTO
+ 3105..312F    ; Alphabetic # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+ 3131..318E    ; Alphabetic # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 31A0..31BF    ; Alphabetic # Lo  [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+ 31F0..31FF    ; Alphabetic # Lo  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+ 3400..4DBF    ; Alphabetic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 4E00..A014    ; Alphabetic # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E
+ A015          ; Alphabetic # Lm       YI SYLLABLE WU
+ A016..A48C    ; Alphabetic # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+ A4D0..A4F7    ; Alphabetic # Lo  [40] LISU LETTER BA..LISU LETTER OE
+ A4F8..A4FD    ; Alphabetic # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A500..A60B    ; Alphabetic # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+ A60C          ; Alphabetic # Lm       VAI SYLLABLE LENGTHENER
+ A610..A61F    ; Alphabetic # Lo  [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+ A62A..A62B    ; Alphabetic # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+ A640..A66D    ; Alphabetic # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A66E          ; Alphabetic # Lo       CYRILLIC LETTER MULTIOCULAR O
+ A674..A67B    ; Alphabetic # Mn   [8] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC LETTER OMEGA
+ A67F          ; Alphabetic # Lm       CYRILLIC PAYEROK
+ A680..A69B    ; Alphabetic # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; Alphabetic # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A69E..A69F    ; Alphabetic # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+ A6A0..A6E5    ; Alphabetic # Lo  [70] BAMUM LETTER A..BAMUM LETTER KI
+ A6E6..A6EF    ; Alphabetic # Nl  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+ A717..A71F    ; Alphabetic # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A722..A76F    ; Alphabetic # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; Alphabetic # Lm       MODIFIER LETTER US
+ A771..A787    ; Alphabetic # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A788          ; Alphabetic # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A78B..A78E    ; Alphabetic # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A78F          ; Alphabetic # Lo       LATIN LETTER SINOLOGICAL DOT
+ A790..A7CA    ; Alphabetic # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; Alphabetic # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; Alphabetic # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; Alphabetic # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; Alphabetic # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; Alphabetic # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F7          ; Alphabetic # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
+ A7F8..A7F9    ; Alphabetic # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; Alphabetic # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ A7FB..A801    ; Alphabetic # Lo   [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+ A802          ; Alphabetic # Mn       SYLOTI NAGRI SIGN DVISVARA
+ A803..A805    ; Alphabetic # Lo   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+ A807..A80A    ; Alphabetic # Lo   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+ A80B          ; Alphabetic # Mn       SYLOTI NAGRI SIGN ANUSVARA
+ A80C..A822    ; Alphabetic # Lo  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+ A823..A824    ; Alphabetic # Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+ A825..A826    ; Alphabetic # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+ A827          ; Alphabetic # Mc       SYLOTI NAGRI VOWEL SIGN OO
+ A840..A873    ; Alphabetic # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+ A880..A881    ; Alphabetic # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+ A882..A8B3    ; Alphabetic # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+ A8B4..A8C3    ; Alphabetic # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+ A8C5          ; Alphabetic # Mn       SAURASHTRA SIGN CANDRABINDU
+ A8F2..A8F7    ; Alphabetic # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+ A8FB          ; Alphabetic # Lo       DEVANAGARI HEADSTROKE
+ A8FD..A8FE    ; Alphabetic # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+ A8FF          ; Alphabetic # Mn       DEVANAGARI VOWEL SIGN AY
+ A90A..A925    ; Alphabetic # Lo  [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+ A926..A92A    ; Alphabetic # Mn   [5] KAYAH LI VOWEL UE..KAYAH LI VOWEL O
+ A930..A946    ; Alphabetic # Lo  [23] REJANG LETTER KA..REJANG LETTER A
+ A947..A951    ; Alphabetic # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+ A952          ; Alphabetic # Mc       REJANG CONSONANT SIGN H
+ A960..A97C    ; Alphabetic # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+ A980..A982    ; Alphabetic # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+ A983          ; Alphabetic # Mc       JAVANESE SIGN WIGNYAN
+ A984..A9B2    ; Alphabetic # Lo  [47] JAVANESE LETTER A..JAVANESE LETTER HA
+ A9B4..A9B5    ; Alphabetic # Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+ A9B6..A9B9    ; Alphabetic # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+ A9BA..A9BB    ; Alphabetic # Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+ A9BC..A9BD    ; Alphabetic # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+ A9BE..A9BF    ; Alphabetic # Mc   [2] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE CONSONANT SIGN CAKRA
+ A9CF          ; Alphabetic # Lm       JAVANESE PANGRANGKEP
+ A9E0..A9E4    ; Alphabetic # Lo   [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
+ A9E5          ; Alphabetic # Mn       MYANMAR SIGN SHAN SAW
+ A9E6          ; Alphabetic # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ A9E7..A9EF    ; Alphabetic # Lo   [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
+ A9FA..A9FE    ; Alphabetic # Lo   [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
+ AA00..AA28    ; Alphabetic # Lo  [41] CHAM LETTER A..CHAM LETTER HA
+ AA29..AA2E    ; Alphabetic # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+ AA2F..AA30    ; Alphabetic # Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+ AA31..AA32    ; Alphabetic # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+ AA33..AA34    ; Alphabetic # Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+ AA35..AA36    ; Alphabetic # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+ AA40..AA42    ; Alphabetic # Lo   [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+ AA43          ; Alphabetic # Mn       CHAM CONSONANT SIGN FINAL NG
+ AA44..AA4B    ; Alphabetic # Lo   [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+ AA4C          ; Alphabetic # Mn       CHAM CONSONANT SIGN FINAL M
+ AA4D          ; Alphabetic # Mc       CHAM CONSONANT SIGN FINAL H
+ AA60..AA6F    ; Alphabetic # Lo  [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
+ AA70          ; Alphabetic # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA71..AA76    ; Alphabetic # Lo   [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
+ AA7A          ; Alphabetic # Lo       MYANMAR LETTER AITON RA
+ AA7B          ; Alphabetic # Mc       MYANMAR SIGN PAO KAREN TONE
+ AA7C          ; Alphabetic # Mn       MYANMAR SIGN TAI LAING TONE-2
+ AA7D          ; Alphabetic # Mc       MYANMAR SIGN TAI LAING TONE-5
+ AA7E..AAAF    ; Alphabetic # Lo  [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
+ AAB0          ; Alphabetic # Mn       TAI VIET MAI KANG
+ AAB1          ; Alphabetic # Lo       TAI VIET VOWEL AA
+ AAB2..AAB4    ; Alphabetic # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+ AAB5..AAB6    ; Alphabetic # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
+ AAB7..AAB8    ; Alphabetic # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+ AAB9..AABD    ; Alphabetic # Lo   [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
+ AABE          ; Alphabetic # Mn       TAI VIET VOWEL AM
+ AAC0          ; Alphabetic # Lo       TAI VIET TONE MAI NUENG
+ AAC2          ; Alphabetic # Lo       TAI VIET TONE MAI SONG
+ AADB..AADC    ; Alphabetic # Lo   [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
+ AADD          ; Alphabetic # Lm       TAI VIET SYMBOL SAM
+ AAE0..AAEA    ; Alphabetic # Lo  [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+ AAEB          ; Alphabetic # Mc       MEETEI MAYEK VOWEL SIGN II
+ AAEC..AAED    ; Alphabetic # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+ AAEE..AAEF    ; Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+ AAF2          ; Alphabetic # Lo       MEETEI MAYEK ANJI
+ AAF3..AAF4    ; Alphabetic # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AAF5          ; Alphabetic # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
+ AB01..AB06    ; Alphabetic # Lo   [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+ AB09..AB0E    ; Alphabetic # Lo   [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+ AB11..AB16    ; Alphabetic # Lo   [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+ AB20..AB26    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+ AB28..AB2E    ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+ AB30..AB5A    ; Alphabetic # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; Alphabetic # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; Alphabetic # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; Alphabetic # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; Alphabetic # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ ABC0..ABE2    ; Alphabetic # Lo  [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+ ABE3..ABE4    ; Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ ABE5          ; Alphabetic # Mn       MEETEI MAYEK VOWEL SIGN ANAP
+ ABE6..ABE7    ; Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ ABE8          ; Alphabetic # Mn       MEETEI MAYEK VOWEL SIGN UNAP
+ ABE9..ABEA    ; Alphabetic # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ AC00..D7A3    ; Alphabetic # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ D7B0..D7C6    ; Alphabetic # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+ D7CB..D7FB    ; Alphabetic # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+ F900..FA6D    ; Alphabetic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; Alphabetic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; Alphabetic # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Alphabetic # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; Alphabetic # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1E          ; Alphabetic # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
+ FB1F..FB28    ; Alphabetic # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB2A..FB36    ; Alphabetic # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Alphabetic # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Alphabetic # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Alphabetic # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Alphabetic # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; Alphabetic # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FD3D    ; Alphabetic # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; Alphabetic # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; Alphabetic # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; Alphabetic # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FE70..FE74    ; Alphabetic # Lo   [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; Alphabetic # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF21..FF3A    ; Alphabetic # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF41..FF5A    ; Alphabetic # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF66..FF6F    ; Alphabetic # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; Alphabetic # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; Alphabetic # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; Alphabetic # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; Alphabetic # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; Alphabetic # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; Alphabetic # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; Alphabetic # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; Alphabetic # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ 10000..1000B  ; Alphabetic # Lo  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+ 1000D..10026  ; Alphabetic # Lo  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+ 10028..1003A  ; Alphabetic # Lo  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+ 1003C..1003D  ; Alphabetic # Lo   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+ 1003F..1004D  ; Alphabetic # Lo  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+ 10050..1005D  ; Alphabetic # Lo  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+ 10080..100FA  ; Alphabetic # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+ 10140..10174  ; Alphabetic # Nl  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+ 10280..1029C  ; Alphabetic # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
+ 102A0..102D0  ; Alphabetic # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
+ 10300..1031F  ; Alphabetic # Lo  [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+ 1032D..10340  ; Alphabetic # Lo  [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+ 10341         ; Alphabetic # Nl       GOTHIC LETTER NINETY
+ 10342..10349  ; Alphabetic # Lo   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+ 1034A         ; Alphabetic # Nl       GOTHIC LETTER NINE HUNDRED
+ 10350..10375  ; Alphabetic # Lo  [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+ 10376..1037A  ; Alphabetic # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+ 10380..1039D  ; Alphabetic # Lo  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+ 103A0..103C3  ; Alphabetic # Lo  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+ 103C8..103CF  ; Alphabetic # Lo   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+ 103D1..103D5  ; Alphabetic # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+ 10400..1044F  ; Alphabetic # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 10450..1049D  ; Alphabetic # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+ 104B0..104D3  ; Alphabetic # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; Alphabetic # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10500..10527  ; Alphabetic # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+ 10530..10563  ; Alphabetic # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+ 10570..1057A  ; Alphabetic # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Alphabetic # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Alphabetic # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Alphabetic # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; Alphabetic # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Alphabetic # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Alphabetic # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Alphabetic # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10600..10736  ; Alphabetic # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+ 10740..10755  ; Alphabetic # Lo  [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+ 10760..10767  ; Alphabetic # Lo   [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785  ; Alphabetic # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Alphabetic # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Alphabetic # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10800..10805  ; Alphabetic # Lo   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+ 10808         ; Alphabetic # Lo       CYPRIOT SYLLABLE JO
+ 1080A..10835  ; Alphabetic # Lo  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+ 10837..10838  ; Alphabetic # Lo   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+ 1083C         ; Alphabetic # Lo       CYPRIOT SYLLABLE ZA
+ 1083F..10855  ; Alphabetic # Lo  [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+ 10860..10876  ; Alphabetic # Lo  [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+ 10880..1089E  ; Alphabetic # Lo  [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+ 108E0..108F2  ; Alphabetic # Lo  [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+ 108F4..108F5  ; Alphabetic # Lo   [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+ 10900..10915  ; Alphabetic # Lo  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+ 10920..10939  ; Alphabetic # Lo  [26] LYDIAN LETTER A..LYDIAN LETTER C
+ 10980..109B7  ; Alphabetic # Lo  [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+ 109BE..109BF  ; Alphabetic # Lo   [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+ 10A00         ; Alphabetic # Lo       KHAROSHTHI LETTER A
+ 10A01..10A03  ; Alphabetic # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+ 10A05..10A06  ; Alphabetic # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+ 10A0C..10A0F  ; Alphabetic # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+ 10A10..10A13  ; Alphabetic # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+ 10A15..10A17  ; Alphabetic # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+ 10A19..10A35  ; Alphabetic # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+ 10A60..10A7C  ; Alphabetic # Lo  [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+ 10A80..10A9C  ; Alphabetic # Lo  [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+ 10AC0..10AC7  ; Alphabetic # Lo   [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+ 10AC9..10AE4  ; Alphabetic # Lo  [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+ 10B00..10B35  ; Alphabetic # Lo  [54] AVESTAN LETTER A..AVESTAN LETTER HE
+ 10B40..10B55  ; Alphabetic # Lo  [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+ 10B60..10B72  ; Alphabetic # Lo  [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+ 10B80..10B91  ; Alphabetic # Lo  [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+ 10C00..10C48  ; Alphabetic # Lo  [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+ 10C80..10CB2  ; Alphabetic # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; Alphabetic # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 10D00..10D23  ; Alphabetic # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+ 10D24..10D27  ; Alphabetic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10E80..10EA9  ; Alphabetic # Lo  [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EAB..10EAC  ; Alphabetic # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+ 10EB0..10EB1  ; Alphabetic # Lo   [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10F00..10F1C  ; Alphabetic # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+ 10F27         ; Alphabetic # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+ 10F30..10F45  ; Alphabetic # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+ 10F70..10F81  ; Alphabetic # Lo  [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10FB0..10FC4  ; Alphabetic # Lo  [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FE0..10FF6  ; Alphabetic # Lo  [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+ 11000         ; Alphabetic # Mc       BRAHMI SIGN CANDRABINDU
+ 11001         ; Alphabetic # Mn       BRAHMI SIGN ANUSVARA
+ 11002         ; Alphabetic # Mc       BRAHMI SIGN VISARGA
+ 11003..11037  ; Alphabetic # Lo  [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+ 11038..11045  ; Alphabetic # Mn  [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU
+ 11071..11072  ; Alphabetic # Lo   [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11073..11074  ; Alphabetic # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 11075         ; Alphabetic # Lo       BRAHMI LETTER OLD TAMIL LLA
+ 11080..11081  ; Alphabetic # Mn   [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA
+ 11082         ; Alphabetic # Mc       KAITHI SIGN VISARGA
+ 11083..110AF  ; Alphabetic # Lo  [45] KAITHI LETTER A..KAITHI LETTER HA
+ 110B0..110B2  ; Alphabetic # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+ 110B3..110B6  ; Alphabetic # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+ 110B7..110B8  ; Alphabetic # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+ 110C2         ; Alphabetic # Mn       KAITHI VOWEL SIGN VOCALIC R
+ 110D0..110E8  ; Alphabetic # Lo  [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+ 11100..11102  ; Alphabetic # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+ 11103..11126  ; Alphabetic # Lo  [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+ 11127..1112B  ; Alphabetic # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+ 1112C         ; Alphabetic # Mc       CHAKMA VOWEL SIGN E
+ 1112D..11132  ; Alphabetic # Mn   [6] CHAKMA VOWEL SIGN AI..CHAKMA AU MARK
+ 11144         ; Alphabetic # Lo       CHAKMA LETTER LHAA
+ 11145..11146  ; Alphabetic # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+ 11147         ; Alphabetic # Lo       CHAKMA LETTER VAA
+ 11150..11172  ; Alphabetic # Lo  [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+ 11176         ; Alphabetic # Lo       MAHAJANI LIGATURE SHRI
+ 11180..11181  ; Alphabetic # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+ 11182         ; Alphabetic # Mc       SHARADA SIGN VISARGA
+ 11183..111B2  ; Alphabetic # Lo  [48] SHARADA LETTER A..SHARADA LETTER HA
+ 111B3..111B5  ; Alphabetic # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+ 111B6..111BE  ; Alphabetic # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+ 111BF         ; Alphabetic # Mc       SHARADA VOWEL SIGN AU
+ 111C1..111C4  ; Alphabetic # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+ 111CE         ; Alphabetic # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
+ 111CF         ; Alphabetic # Mn       SHARADA SIGN INVERTED CANDRABINDU
+ 111DA         ; Alphabetic # Lo       SHARADA EKAM
+ 111DC         ; Alphabetic # Lo       SHARADA HEADSTROKE
+ 11200..11211  ; Alphabetic # Lo  [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+ 11213..1122B  ; Alphabetic # Lo  [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+ 1122C..1122E  ; Alphabetic # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+ 1122F..11231  ; Alphabetic # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+ 11232..11233  ; Alphabetic # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+ 11234         ; Alphabetic # Mn       KHOJKI SIGN ANUSVARA
+ 11237         ; Alphabetic # Mn       KHOJKI SIGN SHADDA
+ 1123E         ; Alphabetic # Mn       KHOJKI SIGN SUKUN
+ 1123F..11240  ; Alphabetic # Lo   [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11241         ; Alphabetic # Mn       KHOJKI VOWEL SIGN VOCALIC R
+ 11280..11286  ; Alphabetic # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
+ 11288         ; Alphabetic # Lo       MULTANI LETTER GHA
+ 1128A..1128D  ; Alphabetic # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
+ 1128F..1129D  ; Alphabetic # Lo  [15] MULTANI LETTER NYA..MULTANI LETTER BA
+ 1129F..112A8  ; Alphabetic # Lo  [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+ 112B0..112DE  ; Alphabetic # Lo  [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+ 112DF         ; Alphabetic # Mn       KHUDAWADI SIGN ANUSVARA
+ 112E0..112E2  ; Alphabetic # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+ 112E3..112E8  ; Alphabetic # Mn   [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU
+ 11300..11301  ; Alphabetic # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+ 11302..11303  ; Alphabetic # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+ 11305..1130C  ; Alphabetic # Lo   [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+ 1130F..11310  ; Alphabetic # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+ 11313..11328  ; Alphabetic # Lo  [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+ 1132A..11330  ; Alphabetic # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+ 11332..11333  ; Alphabetic # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+ 11335..11339  ; Alphabetic # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+ 1133D         ; Alphabetic # Lo       GRANTHA SIGN AVAGRAHA
+ 1133E..1133F  ; Alphabetic # Mc   [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
+ 11340         ; Alphabetic # Mn       GRANTHA VOWEL SIGN II
+ 11341..11344  ; Alphabetic # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+ 11347..11348  ; Alphabetic # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+ 1134B..1134C  ; Alphabetic # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
+ 11350         ; Alphabetic # Lo       GRANTHA OM
+ 11357         ; Alphabetic # Mc       GRANTHA AU LENGTH MARK
+ 1135D..11361  ; Alphabetic # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+ 11362..11363  ; Alphabetic # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+ 11400..11434  ; Alphabetic # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+ 11435..11437  ; Alphabetic # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+ 11438..1143F  ; Alphabetic # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+ 11440..11441  ; Alphabetic # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+ 11443..11444  ; Alphabetic # Mn   [2] NEWA SIGN CANDRABINDU..NEWA SIGN ANUSVARA
+ 11445         ; Alphabetic # Mc       NEWA SIGN VISARGA
+ 11447..1144A  ; Alphabetic # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+ 1145F..11461  ; Alphabetic # Lo   [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+ 11480..114AF  ; Alphabetic # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+ 114B0..114B2  ; Alphabetic # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
+ 114B3..114B8  ; Alphabetic # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+ 114B9         ; Alphabetic # Mc       TIRHUTA VOWEL SIGN E
+ 114BA         ; Alphabetic # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BB..114BE  ; Alphabetic # Mc   [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
+ 114BF..114C0  ; Alphabetic # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+ 114C1         ; Alphabetic # Mc       TIRHUTA SIGN VISARGA
+ 114C4..114C5  ; Alphabetic # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+ 114C7         ; Alphabetic # Lo       TIRHUTA OM
+ 11580..115AE  ; Alphabetic # Lo  [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+ 115AF..115B1  ; Alphabetic # Mc   [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II
+ 115B2..115B5  ; Alphabetic # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+ 115B8..115BB  ; Alphabetic # Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+ 115BC..115BD  ; Alphabetic # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+ 115BE         ; Alphabetic # Mc       SIDDHAM SIGN VISARGA
+ 115D8..115DB  ; Alphabetic # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+ 115DC..115DD  ; Alphabetic # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+ 11600..1162F  ; Alphabetic # Lo  [48] MODI LETTER A..MODI LETTER LLA
+ 11630..11632  ; Alphabetic # Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+ 11633..1163A  ; Alphabetic # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+ 1163B..1163C  ; Alphabetic # Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+ 1163D         ; Alphabetic # Mn       MODI SIGN ANUSVARA
+ 1163E         ; Alphabetic # Mc       MODI SIGN VISARGA
+ 11640         ; Alphabetic # Mn       MODI SIGN ARDHACANDRA
+ 11644         ; Alphabetic # Lo       MODI SIGN HUVA
+ 11680..116AA  ; Alphabetic # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
+ 116AB         ; Alphabetic # Mn       TAKRI SIGN ANUSVARA
+ 116AC         ; Alphabetic # Mc       TAKRI SIGN VISARGA
+ 116AD         ; Alphabetic # Mn       TAKRI VOWEL SIGN AA
+ 116AE..116AF  ; Alphabetic # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+ 116B0..116B5  ; Alphabetic # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+ 116B8         ; Alphabetic # Lo       TAKRI LETTER ARCHAIC KHA
+ 11700..1171A  ; Alphabetic # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+ 1171D..1171F  ; Alphabetic # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+ 11720..11721  ; Alphabetic # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+ 11722..11725  ; Alphabetic # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+ 11726         ; Alphabetic # Mc       AHOM VOWEL SIGN E
+ 11727..1172A  ; Alphabetic # Mn   [4] AHOM VOWEL SIGN AW..AHOM VOWEL SIGN AM
+ 11740..11746  ; Alphabetic # Lo   [7] AHOM LETTER CA..AHOM LETTER LLA
+ 11800..1182B  ; Alphabetic # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+ 1182C..1182E  ; Alphabetic # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+ 1182F..11837  ; Alphabetic # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+ 11838         ; Alphabetic # Mc       DOGRA SIGN VISARGA
+ 118A0..118DF  ; Alphabetic # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 118FF..11906  ; Alphabetic # Lo   [8] WARANG CITI OM..DIVES AKURU LETTER E
+ 11909         ; Alphabetic # Lo       DIVES AKURU LETTER O
+ 1190C..11913  ; Alphabetic # Lo   [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916  ; Alphabetic # Lo   [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F  ; Alphabetic # Lo  [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 11930..11935  ; Alphabetic # Mc   [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
+ 11937..11938  ; Alphabetic # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+ 1193B..1193C  ; Alphabetic # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 1193F         ; Alphabetic # Lo       DIVES AKURU PREFIXED NASAL SIGN
+ 11940         ; Alphabetic # Mc       DIVES AKURU MEDIAL YA
+ 11941         ; Alphabetic # Lo       DIVES AKURU INITIAL RA
+ 11942         ; Alphabetic # Mc       DIVES AKURU MEDIAL RA
+ 119A0..119A7  ; Alphabetic # Lo   [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+ 119AA..119D0  ; Alphabetic # Lo  [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+ 119D1..119D3  ; Alphabetic # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+ 119D4..119D7  ; Alphabetic # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+ 119DA..119DB  ; Alphabetic # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+ 119DC..119DF  ; Alphabetic # Mc   [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+ 119E1         ; Alphabetic # Lo       NANDINAGARI SIGN AVAGRAHA
+ 119E3         ; Alphabetic # Lo       NANDINAGARI HEADSTROKE
+ 119E4         ; Alphabetic # Mc       NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+ 11A00         ; Alphabetic # Lo       ZANABAZAR SQUARE LETTER A
+ 11A01..11A0A  ; Alphabetic # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+ 11A0B..11A32  ; Alphabetic # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+ 11A35..11A38  ; Alphabetic # Mn   [4] ZANABAZAR SQUARE SIGN CANDRABINDU..ZANABAZAR SQUARE SIGN ANUSVARA
+ 11A39         ; Alphabetic # Mc       ZANABAZAR SQUARE SIGN VISARGA
+ 11A3A         ; Alphabetic # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+ 11A3B..11A3E  ; Alphabetic # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+ 11A50         ; Alphabetic # Lo       SOYOMBO LETTER A
+ 11A51..11A56  ; Alphabetic # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+ 11A57..11A58  ; Alphabetic # Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+ 11A59..11A5B  ; Alphabetic # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+ 11A5C..11A89  ; Alphabetic # Lo  [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+ 11A8A..11A96  ; Alphabetic # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+ 11A97         ; Alphabetic # Mc       SOYOMBO SIGN VISARGA
+ 11A9D         ; Alphabetic # Lo       SOYOMBO MARK PLUTA
+ 11AB0..11AF8  ; Alphabetic # Lo  [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+ 11C00..11C08  ; Alphabetic # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+ 11C0A..11C2E  ; Alphabetic # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+ 11C2F         ; Alphabetic # Mc       BHAIKSUKI VOWEL SIGN AA
+ 11C30..11C36  ; Alphabetic # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+ 11C38..11C3D  ; Alphabetic # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+ 11C3E         ; Alphabetic # Mc       BHAIKSUKI SIGN VISARGA
+ 11C40         ; Alphabetic # Lo       BHAIKSUKI SIGN AVAGRAHA
+ 11C72..11C8F  ; Alphabetic # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+ 11C92..11CA7  ; Alphabetic # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+ 11CA9         ; Alphabetic # Mc       MARCHEN SUBJOINED LETTER YA
+ 11CAA..11CB0  ; Alphabetic # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+ 11CB1         ; Alphabetic # Mc       MARCHEN VOWEL SIGN I
+ 11CB2..11CB3  ; Alphabetic # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+ 11CB4         ; Alphabetic # Mc       MARCHEN VOWEL SIGN O
+ 11CB5..11CB6  ; Alphabetic # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+ 11D00..11D06  ; Alphabetic # Lo   [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+ 11D08..11D09  ; Alphabetic # Lo   [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+ 11D0B..11D30  ; Alphabetic # Lo  [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+ 11D31..11D36  ; Alphabetic # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+ 11D3A         ; Alphabetic # Mn       MASARAM GONDI VOWEL SIGN E
+ 11D3C..11D3D  ; Alphabetic # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+ 11D3F..11D41  ; Alphabetic # Mn   [3] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI SIGN VISARGA
+ 11D43         ; Alphabetic # Mn       MASARAM GONDI SIGN CANDRA
+ 11D46         ; Alphabetic # Lo       MASARAM GONDI REPHA
+ 11D47         ; Alphabetic # Mn       MASARAM GONDI RA-KARA
+ 11D60..11D65  ; Alphabetic # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+ 11D67..11D68  ; Alphabetic # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+ 11D6A..11D89  ; Alphabetic # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+ 11D8A..11D8E  ; Alphabetic # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+ 11D90..11D91  ; Alphabetic # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+ 11D93..11D94  ; Alphabetic # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+ 11D95         ; Alphabetic # Mn       GUNJALA GONDI SIGN ANUSVARA
+ 11D96         ; Alphabetic # Mc       GUNJALA GONDI SIGN VISARGA
+ 11D98         ; Alphabetic # Lo       GUNJALA GONDI OM
+ 11EE0..11EF2  ; Alphabetic # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+ 11EF3..11EF4  ; Alphabetic # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+ 11EF5..11EF6  ; Alphabetic # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+ 11F00..11F01  ; Alphabetic # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F02         ; Alphabetic # Lo       KAWI SIGN REPHA
+ 11F03         ; Alphabetic # Mc       KAWI SIGN VISARGA
+ 11F04..11F10  ; Alphabetic # Lo  [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33  ; Alphabetic # Lo  [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11F34..11F35  ; Alphabetic # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+ 11F36..11F3A  ; Alphabetic # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F3E..11F3F  ; Alphabetic # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+ 11F40         ; Alphabetic # Mn       KAWI VOWEL SIGN EU
+ 11FB0         ; Alphabetic # Lo       LISU LETTER YHA
+ 12000..12399  ; Alphabetic # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+ 12400..1246E  ; Alphabetic # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+ 12480..12543  ; Alphabetic # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+ 12F90..12FF0  ; Alphabetic # Lo  [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+ 13000..1342F  ; Alphabetic # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+ 13441..13446  ; Alphabetic # Lo   [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+ 14400..14646  ; Alphabetic # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+ 16800..16A38  ; Alphabetic # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+ 16A40..16A5E  ; Alphabetic # Lo  [31] MRO LETTER TA..MRO LETTER TEK
+ 16A70..16ABE  ; Alphabetic # Lo  [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AD0..16AED  ; Alphabetic # Lo  [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+ 16B00..16B2F  ; Alphabetic # Lo  [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+ 16B40..16B43  ; Alphabetic # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16B63..16B77  ; Alphabetic # Lo  [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+ 16B7D..16B8F  ; Alphabetic # Lo  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+ 16E40..16E7F  ; Alphabetic # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 16F00..16F4A  ; Alphabetic # Lo  [75] MIAO LETTER PA..MIAO LETTER RTE
+ 16F4F         ; Alphabetic # Mn       MIAO SIGN CONSONANT MODIFIER BAR
+ 16F50         ; Alphabetic # Lo       MIAO LETTER NASALIZATION
+ 16F51..16F87  ; Alphabetic # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+ 16F8F..16F92  ; Alphabetic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+ 16F93..16F9F  ; Alphabetic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; Alphabetic # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE3         ; Alphabetic # Lm       OLD CHINESE ITERATION MARK
+ 16FF0..16FF1  ; Alphabetic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+ 17000..187F7  ; Alphabetic # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
+ 18800..18CD5  ; Alphabetic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
+ 18D00..18D08  ; Alphabetic # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3  ; Alphabetic # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; Alphabetic # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; Alphabetic # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1B000..1B122  ; Alphabetic # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU
+ 1B132         ; Alphabetic # Lo       HIRAGANA LETTER SMALL KO
+ 1B150..1B152  ; Alphabetic # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155         ; Alphabetic # Lo       KATAKANA LETTER SMALL KO
+ 1B164..1B167  ; Alphabetic # Lo   [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+ 1B170..1B2FB  ; Alphabetic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
+ 1BC00..1BC6A  ; Alphabetic # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+ 1BC70..1BC7C  ; Alphabetic # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+ 1BC80..1BC88  ; Alphabetic # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+ 1BC90..1BC99  ; Alphabetic # Lo  [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+ 1BC9E         ; Alphabetic # Mn       DUPLOYAN DOUBLE MARK
+ 1D400..1D454  ; Alphabetic # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; Alphabetic # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; Alphabetic # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; Alphabetic # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; Alphabetic # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; Alphabetic # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; Alphabetic # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; Alphabetic # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; Alphabetic # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; Alphabetic # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; Alphabetic # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; Alphabetic # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; Alphabetic # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; Alphabetic # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; Alphabetic # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; Alphabetic # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; Alphabetic # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; Alphabetic # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; Alphabetic # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; Alphabetic # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C2..1D6DA  ; Alphabetic # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6FA  ; Alphabetic # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FC..1D714  ; Alphabetic # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D734  ; Alphabetic # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D736..1D74E  ; Alphabetic # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D76E  ; Alphabetic # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D770..1D788  ; Alphabetic # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D7A8  ; Alphabetic # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7AA..1D7C2  ; Alphabetic # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7CB  ; Alphabetic # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1DF00..1DF09  ; Alphabetic # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A         ; Alphabetic # Lo       LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E  ; Alphabetic # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; Alphabetic # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E000..1E006  ; Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+ 1E008..1E018  ; Alphabetic # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+ 1E01B..1E021  ; Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+ 1E023..1E024  ; Alphabetic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+ 1E026..1E02A  ; Alphabetic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E030..1E06D  ; Alphabetic # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E08F         ; Alphabetic # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 1E100..1E12C  ; Alphabetic # Lo  [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+ 1E137..1E13D  ; Alphabetic # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E14E         ; Alphabetic # Lo       NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+ 1E290..1E2AD  ; Alphabetic # Lo  [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2C0..1E2EB  ; Alphabetic # Lo  [44] WANCHO LETTER AA..WANCHO LETTER YIH
+ 1E4D0..1E4EA  ; Alphabetic # Lo  [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB         ; Alphabetic # Lm       NAG MUNDARI SIGN OJOD
+ 1E7E0..1E7E6  ; Alphabetic # Lo   [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB  ; Alphabetic # Lo   [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE  ; Alphabetic # Lo   [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE  ; Alphabetic # Lo  [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+ 1E800..1E8C4  ; Alphabetic # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+ 1E900..1E943  ; Alphabetic # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1E947         ; Alphabetic # Mn       ADLAM HAMZA
+ 1E94B         ; Alphabetic # Lm       ADLAM NASALIZATION MARK
+ 1EE00..1EE03  ; Alphabetic # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; Alphabetic # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; Alphabetic # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; Alphabetic # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; Alphabetic # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; Alphabetic # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; Alphabetic # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; Alphabetic # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; Alphabetic # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; Alphabetic # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; Alphabetic # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; Alphabetic # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; Alphabetic # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; Alphabetic # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; Alphabetic # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; Alphabetic # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; Alphabetic # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; Alphabetic # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; Alphabetic # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; Alphabetic # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; Alphabetic # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; Alphabetic # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; Alphabetic # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; Alphabetic # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1F130..1F149  ; Alphabetic # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
+ 1F150..1F169  ; Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+ 1F170..1F189  ; Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+ 20000..2A6DF  ; Alphabetic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B739  ; Alphabetic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
+ 2B740..2B81D  ; Alphabetic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1  ; Alphabetic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0  ; Alphabetic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 2F800..2FA1D  ; Alphabetic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; Alphabetic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; Alphabetic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
+ 
+ # Total code points: 137765
+ 
+ # ================================================
+ 
+ # Derived Property: Lowercase
+ #  Generated from: Ll + Other_Lowercase
+ 
+ 0061..007A    ; Lowercase # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; Lowercase # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; Lowercase # L&       MICRO SIGN
+ 00BA          ; Lowercase # Lo       MASCULINE ORDINAL INDICATOR
+ 00DF..00F6    ; Lowercase # L&  [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..00FF    ; Lowercase # L&   [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
+ 0101          ; Lowercase # L&       LATIN SMALL LETTER A WITH MACRON
+ 0103          ; Lowercase # L&       LATIN SMALL LETTER A WITH BREVE
+ 0105          ; Lowercase # L&       LATIN SMALL LETTER A WITH OGONEK
+ 0107          ; Lowercase # L&       LATIN SMALL LETTER C WITH ACUTE
+ 0109          ; Lowercase # L&       LATIN SMALL LETTER C WITH CIRCUMFLEX
+ 010B          ; Lowercase # L&       LATIN SMALL LETTER C WITH DOT ABOVE
+ 010D          ; Lowercase # L&       LATIN SMALL LETTER C WITH CARON
+ 010F          ; Lowercase # L&       LATIN SMALL LETTER D WITH CARON
+ 0111          ; Lowercase # L&       LATIN SMALL LETTER D WITH STROKE
+ 0113          ; Lowercase # L&       LATIN SMALL LETTER E WITH MACRON
+ 0115          ; Lowercase # L&       LATIN SMALL LETTER E WITH BREVE
+ 0117          ; Lowercase # L&       LATIN SMALL LETTER E WITH DOT ABOVE
+ 0119          ; Lowercase # L&       LATIN SMALL LETTER E WITH OGONEK
+ 011B          ; Lowercase # L&       LATIN SMALL LETTER E WITH CARON
+ 011D          ; Lowercase # L&       LATIN SMALL LETTER G WITH CIRCUMFLEX
+ 011F          ; Lowercase # L&       LATIN SMALL LETTER G WITH BREVE
+ 0121          ; Lowercase # L&       LATIN SMALL LETTER G WITH DOT ABOVE
+ 0123          ; Lowercase # L&       LATIN SMALL LETTER G WITH CEDILLA
+ 0125          ; Lowercase # L&       LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0127          ; Lowercase # L&       LATIN SMALL LETTER H WITH STROKE
+ 0129          ; Lowercase # L&       LATIN SMALL LETTER I WITH TILDE
+ 012B          ; Lowercase # L&       LATIN SMALL LETTER I WITH MACRON
+ 012D          ; Lowercase # L&       LATIN SMALL LETTER I WITH BREVE
+ 012F          ; Lowercase # L&       LATIN SMALL LETTER I WITH OGONEK
+ 0131          ; Lowercase # L&       LATIN SMALL LETTER DOTLESS I
+ 0133          ; Lowercase # L&       LATIN SMALL LIGATURE IJ
+ 0135          ; Lowercase # L&       LATIN SMALL LETTER J WITH CIRCUMFLEX
+ 0137..0138    ; Lowercase # L&   [2] LATIN SMALL LETTER K WITH CEDILLA..LATIN SMALL LETTER KRA
+ 013A          ; Lowercase # L&       LATIN SMALL LETTER L WITH ACUTE
+ 013C          ; Lowercase # L&       LATIN SMALL LETTER L WITH CEDILLA
+ 013E          ; Lowercase # L&       LATIN SMALL LETTER L WITH CARON
+ 0140          ; Lowercase # L&       LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0142          ; Lowercase # L&       LATIN SMALL LETTER L WITH STROKE
+ 0144          ; Lowercase # L&       LATIN SMALL LETTER N WITH ACUTE
+ 0146          ; Lowercase # L&       LATIN SMALL LETTER N WITH CEDILLA
+ 0148..0149    ; Lowercase # L&   [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 014B          ; Lowercase # L&       LATIN SMALL LETTER ENG
+ 014D          ; Lowercase # L&       LATIN SMALL LETTER O WITH MACRON
+ 014F          ; Lowercase # L&       LATIN SMALL LETTER O WITH BREVE
+ 0151          ; Lowercase # L&       LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0153          ; Lowercase # L&       LATIN SMALL LIGATURE OE
+ 0155          ; Lowercase # L&       LATIN SMALL LETTER R WITH ACUTE
+ 0157          ; Lowercase # L&       LATIN SMALL LETTER R WITH CEDILLA
+ 0159          ; Lowercase # L&       LATIN SMALL LETTER R WITH CARON
+ 015B          ; Lowercase # L&       LATIN SMALL LETTER S WITH ACUTE
+ 015D          ; Lowercase # L&       LATIN SMALL LETTER S WITH CIRCUMFLEX
+ 015F          ; Lowercase # L&       LATIN SMALL LETTER S WITH CEDILLA
+ 0161          ; Lowercase # L&       LATIN SMALL LETTER S WITH CARON
+ 0163          ; Lowercase # L&       LATIN SMALL LETTER T WITH CEDILLA
+ 0165          ; Lowercase # L&       LATIN SMALL LETTER T WITH CARON
+ 0167          ; Lowercase # L&       LATIN SMALL LETTER T WITH STROKE
+ 0169          ; Lowercase # L&       LATIN SMALL LETTER U WITH TILDE
+ 016B          ; Lowercase # L&       LATIN SMALL LETTER U WITH MACRON
+ 016D          ; Lowercase # L&       LATIN SMALL LETTER U WITH BREVE
+ 016F          ; Lowercase # L&       LATIN SMALL LETTER U WITH RING ABOVE
+ 0171          ; Lowercase # L&       LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ 0173          ; Lowercase # L&       LATIN SMALL LETTER U WITH OGONEK
+ 0175          ; Lowercase # L&       LATIN SMALL LETTER W WITH CIRCUMFLEX
+ 0177          ; Lowercase # L&       LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ 017A          ; Lowercase # L&       LATIN SMALL LETTER Z WITH ACUTE
+ 017C          ; Lowercase # L&       LATIN SMALL LETTER Z WITH DOT ABOVE
+ 017E..0180    ; Lowercase # L&   [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
+ 0183          ; Lowercase # L&       LATIN SMALL LETTER B WITH TOPBAR
+ 0185          ; Lowercase # L&       LATIN SMALL LETTER TONE SIX
+ 0188          ; Lowercase # L&       LATIN SMALL LETTER C WITH HOOK
+ 018C..018D    ; Lowercase # L&   [2] LATIN SMALL LETTER D WITH TOPBAR..LATIN SMALL LETTER TURNED DELTA
+ 0192          ; Lowercase # L&       LATIN SMALL LETTER F WITH HOOK
+ 0195          ; Lowercase # L&       LATIN SMALL LETTER HV
+ 0199..019B    ; Lowercase # L&   [3] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER LAMBDA WITH STROKE
+ 019E          ; Lowercase # L&       LATIN SMALL LETTER N WITH LONG RIGHT LEG
+ 01A1          ; Lowercase # L&       LATIN SMALL LETTER O WITH HORN
+ 01A3          ; Lowercase # L&       LATIN SMALL LETTER OI
+ 01A5          ; Lowercase # L&       LATIN SMALL LETTER P WITH HOOK
+ 01A8          ; Lowercase # L&       LATIN SMALL LETTER TONE TWO
+ 01AA..01AB    ; Lowercase # L&   [2] LATIN LETTER REVERSED ESH LOOP..LATIN SMALL LETTER T WITH PALATAL HOOK
+ 01AD          ; Lowercase # L&       LATIN SMALL LETTER T WITH HOOK
+ 01B0          ; Lowercase # L&       LATIN SMALL LETTER U WITH HORN
+ 01B4          ; Lowercase # L&       LATIN SMALL LETTER Y WITH HOOK
+ 01B6          ; Lowercase # L&       LATIN SMALL LETTER Z WITH STROKE
+ 01B9..01BA    ; Lowercase # L&   [2] LATIN SMALL LETTER EZH REVERSED..LATIN SMALL LETTER EZH WITH TAIL
+ 01BD..01BF    ; Lowercase # L&   [3] LATIN SMALL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C6          ; Lowercase # L&       LATIN SMALL LETTER DZ WITH CARON
+ 01C9          ; Lowercase # L&       LATIN SMALL LETTER LJ
+ 01CC          ; Lowercase # L&       LATIN SMALL LETTER NJ
+ 01CE          ; Lowercase # L&       LATIN SMALL LETTER A WITH CARON
+ 01D0          ; Lowercase # L&       LATIN SMALL LETTER I WITH CARON
+ 01D2          ; Lowercase # L&       LATIN SMALL LETTER O WITH CARON
+ 01D4          ; Lowercase # L&       LATIN SMALL LETTER U WITH CARON
+ 01D6          ; Lowercase # L&       LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+ 01D8          ; Lowercase # L&       LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+ 01DA          ; Lowercase # L&       LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+ 01DC..01DD    ; Lowercase # L&   [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
+ 01DF          ; Lowercase # L&       LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+ 01E1          ; Lowercase # L&       LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+ 01E3          ; Lowercase # L&       LATIN SMALL LETTER AE WITH MACRON
+ 01E5          ; Lowercase # L&       LATIN SMALL LETTER G WITH STROKE
+ 01E7          ; Lowercase # L&       LATIN SMALL LETTER G WITH CARON
+ 01E9          ; Lowercase # L&       LATIN SMALL LETTER K WITH CARON
+ 01EB          ; Lowercase # L&       LATIN SMALL LETTER O WITH OGONEK
+ 01ED          ; Lowercase # L&       LATIN SMALL LETTER O WITH OGONEK AND MACRON
+ 01EF..01F0    ; Lowercase # L&   [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
+ 01F3          ; Lowercase # L&       LATIN SMALL LETTER DZ
+ 01F5          ; Lowercase # L&       LATIN SMALL LETTER G WITH ACUTE
+ 01F9          ; Lowercase # L&       LATIN SMALL LETTER N WITH GRAVE
+ 01FB          ; Lowercase # L&       LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+ 01FD          ; Lowercase # L&       LATIN SMALL LETTER AE WITH ACUTE
+ 01FF          ; Lowercase # L&       LATIN SMALL LETTER O WITH STROKE AND ACUTE
+ 0201          ; Lowercase # L&       LATIN SMALL LETTER A WITH DOUBLE GRAVE
+ 0203          ; Lowercase # L&       LATIN SMALL LETTER A WITH INVERTED BREVE
+ 0205          ; Lowercase # L&       LATIN SMALL LETTER E WITH DOUBLE GRAVE
+ 0207          ; Lowercase # L&       LATIN SMALL LETTER E WITH INVERTED BREVE
+ 0209          ; Lowercase # L&       LATIN SMALL LETTER I WITH DOUBLE GRAVE
+ 020B          ; Lowercase # L&       LATIN SMALL LETTER I WITH INVERTED BREVE
+ 020D          ; Lowercase # L&       LATIN SMALL LETTER O WITH DOUBLE GRAVE
+ 020F          ; Lowercase # L&       LATIN SMALL LETTER O WITH INVERTED BREVE
+ 0211          ; Lowercase # L&       LATIN SMALL LETTER R WITH DOUBLE GRAVE
+ 0213          ; Lowercase # L&       LATIN SMALL LETTER R WITH INVERTED BREVE
+ 0215          ; Lowercase # L&       LATIN SMALL LETTER U WITH DOUBLE GRAVE
+ 0217          ; Lowercase # L&       LATIN SMALL LETTER U WITH INVERTED BREVE
+ 0219          ; Lowercase # L&       LATIN SMALL LETTER S WITH COMMA BELOW
+ 021B          ; Lowercase # L&       LATIN SMALL LETTER T WITH COMMA BELOW
+ 021D          ; Lowercase # L&       LATIN SMALL LETTER YOGH
+ 021F          ; Lowercase # L&       LATIN SMALL LETTER H WITH CARON
+ 0221          ; Lowercase # L&       LATIN SMALL LETTER D WITH CURL
+ 0223          ; Lowercase # L&       LATIN SMALL LETTER OU
+ 0225          ; Lowercase # L&       LATIN SMALL LETTER Z WITH HOOK
+ 0227          ; Lowercase # L&       LATIN SMALL LETTER A WITH DOT ABOVE
+ 0229          ; Lowercase # L&       LATIN SMALL LETTER E WITH CEDILLA
+ 022B          ; Lowercase # L&       LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+ 022D          ; Lowercase # L&       LATIN SMALL LETTER O WITH TILDE AND MACRON
+ 022F          ; Lowercase # L&       LATIN SMALL LETTER O WITH DOT ABOVE
+ 0231          ; Lowercase # L&       LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+ 0233..0239    ; Lowercase # L&   [7] LATIN SMALL LETTER Y WITH MACRON..LATIN SMALL LETTER QP DIGRAPH
+ 023C          ; Lowercase # L&       LATIN SMALL LETTER C WITH STROKE
+ 023F..0240    ; Lowercase # L&   [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
+ 0242          ; Lowercase # L&       LATIN SMALL LETTER GLOTTAL STOP
+ 0247          ; Lowercase # L&       LATIN SMALL LETTER E WITH STROKE
+ 0249          ; Lowercase # L&       LATIN SMALL LETTER J WITH STROKE
+ 024B          ; Lowercase # L&       LATIN SMALL LETTER Q WITH HOOK TAIL
+ 024D          ; Lowercase # L&       LATIN SMALL LETTER R WITH STROKE
+ 024F..0293    ; Lowercase # L&  [69] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER EZH WITH CURL
+ 0295..02AF    ; Lowercase # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02B8    ; Lowercase # Lm   [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+ 02C0..02C1    ; Lowercase # Lm   [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02E0..02E4    ; Lowercase # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 0345          ; Lowercase # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0371          ; Lowercase # L&       GREEK SMALL LETTER HETA
+ 0373          ; Lowercase # L&       GREEK SMALL LETTER ARCHAIC SAMPI
+ 0377          ; Lowercase # L&       GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; Lowercase # Lm       GREEK YPOGEGRAMMENI
+ 037B..037D    ; Lowercase # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 0390          ; Lowercase # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AC..03CE    ; Lowercase # L&  [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D0..03D1    ; Lowercase # L&   [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
+ 03D5..03D7    ; Lowercase # L&   [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
+ 03D9          ; Lowercase # L&       GREEK SMALL LETTER ARCHAIC KOPPA
+ 03DB          ; Lowercase # L&       GREEK SMALL LETTER STIGMA
+ 03DD          ; Lowercase # L&       GREEK SMALL LETTER DIGAMMA
+ 03DF          ; Lowercase # L&       GREEK SMALL LETTER KOPPA
+ 03E1          ; Lowercase # L&       GREEK SMALL LETTER SAMPI
+ 03E3          ; Lowercase # L&       COPTIC SMALL LETTER SHEI
+ 03E5          ; Lowercase # L&       COPTIC SMALL LETTER FEI
+ 03E7          ; Lowercase # L&       COPTIC SMALL LETTER KHEI
+ 03E9          ; Lowercase # L&       COPTIC SMALL LETTER HORI
+ 03EB          ; Lowercase # L&       COPTIC SMALL LETTER GANGIA
+ 03ED          ; Lowercase # L&       COPTIC SMALL LETTER SHIMA
+ 03EF..03F3    ; Lowercase # L&   [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
+ 03F5          ; Lowercase # L&       GREEK LUNATE EPSILON SYMBOL
+ 03F8          ; Lowercase # L&       GREEK SMALL LETTER SHO
+ 03FB..03FC    ; Lowercase # L&   [2] GREEK SMALL LETTER SAN..GREEK RHO WITH STROKE SYMBOL
+ 0430..045F    ; Lowercase # L&  [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
+ 0461          ; Lowercase # L&       CYRILLIC SMALL LETTER OMEGA
+ 0463          ; Lowercase # L&       CYRILLIC SMALL LETTER YAT
+ 0465          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTIFIED E
+ 0467          ; Lowercase # L&       CYRILLIC SMALL LETTER LITTLE YUS
+ 0469          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+ 046B          ; Lowercase # L&       CYRILLIC SMALL LETTER BIG YUS
+ 046D          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+ 046F          ; Lowercase # L&       CYRILLIC SMALL LETTER KSI
+ 0471          ; Lowercase # L&       CYRILLIC SMALL LETTER PSI
+ 0473          ; Lowercase # L&       CYRILLIC SMALL LETTER FITA
+ 0475          ; Lowercase # L&       CYRILLIC SMALL LETTER IZHITSA
+ 0477          ; Lowercase # L&       CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0479          ; Lowercase # L&       CYRILLIC SMALL LETTER UK
+ 047B          ; Lowercase # L&       CYRILLIC SMALL LETTER ROUND OMEGA
+ 047D          ; Lowercase # L&       CYRILLIC SMALL LETTER OMEGA WITH TITLO
+ 047F          ; Lowercase # L&       CYRILLIC SMALL LETTER OT
+ 0481          ; Lowercase # L&       CYRILLIC SMALL LETTER KOPPA
+ 048B          ; Lowercase # L&       CYRILLIC SMALL LETTER SHORT I WITH TAIL
+ 048D          ; Lowercase # L&       CYRILLIC SMALL LETTER SEMISOFT SIGN
+ 048F          ; Lowercase # L&       CYRILLIC SMALL LETTER ER WITH TICK
+ 0491          ; Lowercase # L&       CYRILLIC SMALL LETTER GHE WITH UPTURN
+ 0493          ; Lowercase # L&       CYRILLIC SMALL LETTER GHE WITH STROKE
+ 0495          ; Lowercase # L&       CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+ 0497          ; Lowercase # L&       CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ 0499          ; Lowercase # L&       CYRILLIC SMALL LETTER ZE WITH DESCENDER
+ 049B          ; Lowercase # L&       CYRILLIC SMALL LETTER KA WITH DESCENDER
+ 049D          ; Lowercase # L&       CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+ 049F          ; Lowercase # L&       CYRILLIC SMALL LETTER KA WITH STROKE
+ 04A1          ; Lowercase # L&       CYRILLIC SMALL LETTER BASHKIR KA
+ 04A3          ; Lowercase # L&       CYRILLIC SMALL LETTER EN WITH DESCENDER
+ 04A5          ; Lowercase # L&       CYRILLIC SMALL LIGATURE EN GHE
+ 04A7          ; Lowercase # L&       CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+ 04A9          ; Lowercase # L&       CYRILLIC SMALL LETTER ABKHASIAN HA
+ 04AB          ; Lowercase # L&       CYRILLIC SMALL LETTER ES WITH DESCENDER
+ 04AD          ; Lowercase # L&       CYRILLIC SMALL LETTER TE WITH DESCENDER
+ 04AF          ; Lowercase # L&       CYRILLIC SMALL LETTER STRAIGHT U
+ 04B1          ; Lowercase # L&       CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ 04B3          ; Lowercase # L&       CYRILLIC SMALL LETTER HA WITH DESCENDER
+ 04B5          ; Lowercase # L&       CYRILLIC SMALL LIGATURE TE TSE
+ 04B7          ; Lowercase # L&       CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ 04B9          ; Lowercase # L&       CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+ 04BB          ; Lowercase # L&       CYRILLIC SMALL LETTER SHHA
+ 04BD          ; Lowercase # L&       CYRILLIC SMALL LETTER ABKHASIAN CHE
+ 04BF          ; Lowercase # L&       CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C2          ; Lowercase # L&       CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04C4          ; Lowercase # L&       CYRILLIC SMALL LETTER KA WITH HOOK
+ 04C6          ; Lowercase # L&       CYRILLIC SMALL LETTER EL WITH TAIL
+ 04C8          ; Lowercase # L&       CYRILLIC SMALL LETTER EN WITH HOOK
+ 04CA          ; Lowercase # L&       CYRILLIC SMALL LETTER EN WITH TAIL
+ 04CC          ; Lowercase # L&       CYRILLIC SMALL LETTER KHAKASSIAN CHE
+ 04CE..04CF    ; Lowercase # L&   [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
+ 04D1          ; Lowercase # L&       CYRILLIC SMALL LETTER A WITH BREVE
+ 04D3          ; Lowercase # L&       CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D5          ; Lowercase # L&       CYRILLIC SMALL LIGATURE A IE
+ 04D7          ; Lowercase # L&       CYRILLIC SMALL LETTER IE WITH BREVE
+ 04D9          ; Lowercase # L&       CYRILLIC SMALL LETTER SCHWA
+ 04DB          ; Lowercase # L&       CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+ 04DD          ; Lowercase # L&       CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+ 04DF          ; Lowercase # L&       CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E1          ; Lowercase # L&       CYRILLIC SMALL LETTER ABKHASIAN DZE
+ 04E3          ; Lowercase # L&       CYRILLIC SMALL LETTER I WITH MACRON
+ 04E5          ; Lowercase # L&       CYRILLIC SMALL LETTER I WITH DIAERESIS
+ 04E7          ; Lowercase # L&       CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04E9          ; Lowercase # L&       CYRILLIC SMALL LETTER BARRED O
+ 04EB          ; Lowercase # L&       CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+ 04ED          ; Lowercase # L&       CYRILLIC SMALL LETTER E WITH DIAERESIS
+ 04EF          ; Lowercase # L&       CYRILLIC SMALL LETTER U WITH MACRON
+ 04F1          ; Lowercase # L&       CYRILLIC SMALL LETTER U WITH DIAERESIS
+ 04F3          ; Lowercase # L&       CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+ 04F5          ; Lowercase # L&       CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F7          ; Lowercase # L&       CYRILLIC SMALL LETTER GHE WITH DESCENDER
+ 04F9          ; Lowercase # L&       CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 04FB          ; Lowercase # L&       CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+ 04FD          ; Lowercase # L&       CYRILLIC SMALL LETTER HA WITH HOOK
+ 04FF          ; Lowercase # L&       CYRILLIC SMALL LETTER HA WITH STROKE
+ 0501          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI DE
+ 0503          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI DJE
+ 0505          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI ZJE
+ 0507          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI DZJE
+ 0509          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI LJE
+ 050B          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI NJE
+ 050D          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI SJE
+ 050F          ; Lowercase # L&       CYRILLIC SMALL LETTER KOMI TJE
+ 0511          ; Lowercase # L&       CYRILLIC SMALL LETTER REVERSED ZE
+ 0513          ; Lowercase # L&       CYRILLIC SMALL LETTER EL WITH HOOK
+ 0515          ; Lowercase # L&       CYRILLIC SMALL LETTER LHA
+ 0517          ; Lowercase # L&       CYRILLIC SMALL LETTER RHA
+ 0519          ; Lowercase # L&       CYRILLIC SMALL LETTER YAE
+ 051B          ; Lowercase # L&       CYRILLIC SMALL LETTER QA
+ 051D          ; Lowercase # L&       CYRILLIC SMALL LETTER WE
+ 051F          ; Lowercase # L&       CYRILLIC SMALL LETTER ALEUT KA
+ 0521          ; Lowercase # L&       CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
+ 0523          ; Lowercase # L&       CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+ 0525          ; Lowercase # L&       CYRILLIC SMALL LETTER PE WITH DESCENDER
+ 0527          ; Lowercase # L&       CYRILLIC SMALL LETTER SHHA WITH DESCENDER
+ 0529          ; Lowercase # L&       CYRILLIC SMALL LETTER EN WITH LEFT HOOK
+ 052B          ; Lowercase # L&       CYRILLIC SMALL LETTER DZZHE
+ 052D          ; Lowercase # L&       CYRILLIC SMALL LETTER DCHE
+ 052F          ; Lowercase # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0560..0588    ; Lowercase # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 10D0..10FA    ; Lowercase # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; Lowercase # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; Lowercase # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 13F8..13FD    ; Lowercase # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1C80..1C88    ; Lowercase # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1D00..1D2B    ; Lowercase # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; Lowercase # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; Lowercase # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; Lowercase # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; Lowercase # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; Lowercase # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E01          ; Lowercase # L&       LATIN SMALL LETTER A WITH RING BELOW
+ 1E03          ; Lowercase # L&       LATIN SMALL LETTER B WITH DOT ABOVE
+ 1E05          ; Lowercase # L&       LATIN SMALL LETTER B WITH DOT BELOW
+ 1E07          ; Lowercase # L&       LATIN SMALL LETTER B WITH LINE BELOW
+ 1E09          ; Lowercase # L&       LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+ 1E0B          ; Lowercase # L&       LATIN SMALL LETTER D WITH DOT ABOVE
+ 1E0D          ; Lowercase # L&       LATIN SMALL LETTER D WITH DOT BELOW
+ 1E0F          ; Lowercase # L&       LATIN SMALL LETTER D WITH LINE BELOW
+ 1E11          ; Lowercase # L&       LATIN SMALL LETTER D WITH CEDILLA
+ 1E13          ; Lowercase # L&       LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+ 1E15          ; Lowercase # L&       LATIN SMALL LETTER E WITH MACRON AND GRAVE
+ 1E17          ; Lowercase # L&       LATIN SMALL LETTER E WITH MACRON AND ACUTE
+ 1E19          ; Lowercase # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1B          ; Lowercase # L&       LATIN SMALL LETTER E WITH TILDE BELOW
+ 1E1D          ; Lowercase # L&       LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+ 1E1F          ; Lowercase # L&       LATIN SMALL LETTER F WITH DOT ABOVE
+ 1E21          ; Lowercase # L&       LATIN SMALL LETTER G WITH MACRON
+ 1E23          ; Lowercase # L&       LATIN SMALL LETTER H WITH DOT ABOVE
+ 1E25          ; Lowercase # L&       LATIN SMALL LETTER H WITH DOT BELOW
+ 1E27          ; Lowercase # L&       LATIN SMALL LETTER H WITH DIAERESIS
+ 1E29          ; Lowercase # L&       LATIN SMALL LETTER H WITH CEDILLA
+ 1E2B          ; Lowercase # L&       LATIN SMALL LETTER H WITH BREVE BELOW
+ 1E2D          ; Lowercase # L&       LATIN SMALL LETTER I WITH TILDE BELOW
+ 1E2F          ; Lowercase # L&       LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+ 1E31          ; Lowercase # L&       LATIN SMALL LETTER K WITH ACUTE
+ 1E33          ; Lowercase # L&       LATIN SMALL LETTER K WITH DOT BELOW
+ 1E35          ; Lowercase # L&       LATIN SMALL LETTER K WITH LINE BELOW
+ 1E37          ; Lowercase # L&       LATIN SMALL LETTER L WITH DOT BELOW
+ 1E39          ; Lowercase # L&       LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+ 1E3B          ; Lowercase # L&       LATIN SMALL LETTER L WITH LINE BELOW
+ 1E3D          ; Lowercase # L&       LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3F          ; Lowercase # L&       LATIN SMALL LETTER M WITH ACUTE
+ 1E41          ; Lowercase # L&       LATIN SMALL LETTER M WITH DOT ABOVE
+ 1E43          ; Lowercase # L&       LATIN SMALL LETTER M WITH DOT BELOW
+ 1E45          ; Lowercase # L&       LATIN SMALL LETTER N WITH DOT ABOVE
+ 1E47          ; Lowercase # L&       LATIN SMALL LETTER N WITH DOT BELOW
+ 1E49          ; Lowercase # L&       LATIN SMALL LETTER N WITH LINE BELOW
+ 1E4B          ; Lowercase # L&       LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4D          ; Lowercase # L&       LATIN SMALL LETTER O WITH TILDE AND ACUTE
+ 1E4F          ; Lowercase # L&       LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+ 1E51          ; Lowercase # L&       LATIN SMALL LETTER O WITH MACRON AND GRAVE
+ 1E53          ; Lowercase # L&       LATIN SMALL LETTER O WITH MACRON AND ACUTE
+ 1E55          ; Lowercase # L&       LATIN SMALL LETTER P WITH ACUTE
+ 1E57          ; Lowercase # L&       LATIN SMALL LETTER P WITH DOT ABOVE
+ 1E59          ; Lowercase # L&       LATIN SMALL LETTER R WITH DOT ABOVE
+ 1E5B          ; Lowercase # L&       LATIN SMALL LETTER R WITH DOT BELOW
+ 1E5D          ; Lowercase # L&       LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+ 1E5F          ; Lowercase # L&       LATIN SMALL LETTER R WITH LINE BELOW
+ 1E61          ; Lowercase # L&       LATIN SMALL LETTER S WITH DOT ABOVE
+ 1E63          ; Lowercase # L&       LATIN SMALL LETTER S WITH DOT BELOW
+ 1E65          ; Lowercase # L&       LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E67          ; Lowercase # L&       LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+ 1E69          ; Lowercase # L&       LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6B          ; Lowercase # L&       LATIN SMALL LETTER T WITH DOT ABOVE
+ 1E6D          ; Lowercase # L&       LATIN SMALL LETTER T WITH DOT BELOW
+ 1E6F          ; Lowercase # L&       LATIN SMALL LETTER T WITH LINE BELOW
+ 1E71          ; Lowercase # L&       LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+ 1E73          ; Lowercase # L&       LATIN SMALL LETTER U WITH DIAERESIS BELOW
+ 1E75          ; Lowercase # L&       LATIN SMALL LETTER U WITH TILDE BELOW
+ 1E77          ; Lowercase # L&       LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+ 1E79          ; Lowercase # L&       LATIN SMALL LETTER U WITH TILDE AND ACUTE
+ 1E7B          ; Lowercase # L&       LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+ 1E7D          ; Lowercase # L&       LATIN SMALL LETTER V WITH TILDE
+ 1E7F          ; Lowercase # L&       LATIN SMALL LETTER V WITH DOT BELOW
+ 1E81          ; Lowercase # L&       LATIN SMALL LETTER W WITH GRAVE
+ 1E83          ; Lowercase # L&       LATIN SMALL LETTER W WITH ACUTE
+ 1E85          ; Lowercase # L&       LATIN SMALL LETTER W WITH DIAERESIS
+ 1E87          ; Lowercase # L&       LATIN SMALL LETTER W WITH DOT ABOVE
+ 1E89          ; Lowercase # L&       LATIN SMALL LETTER W WITH DOT BELOW
+ 1E8B          ; Lowercase # L&       LATIN SMALL LETTER X WITH DOT ABOVE
+ 1E8D          ; Lowercase # L&       LATIN SMALL LETTER X WITH DIAERESIS
+ 1E8F          ; Lowercase # L&       LATIN SMALL LETTER Y WITH DOT ABOVE
+ 1E91          ; Lowercase # L&       LATIN SMALL LETTER Z WITH CIRCUMFLEX
+ 1E93          ; Lowercase # L&       LATIN SMALL LETTER Z WITH DOT BELOW
+ 1E95..1E9D    ; Lowercase # L&   [9] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH HIGH STROKE
+ 1E9F          ; Lowercase # L&       LATIN SMALL LETTER DELTA
+ 1EA1          ; Lowercase # L&       LATIN SMALL LETTER A WITH DOT BELOW
+ 1EA3          ; Lowercase # L&       LATIN SMALL LETTER A WITH HOOK ABOVE
+ 1EA5          ; Lowercase # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA7          ; Lowercase # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA9          ; Lowercase # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAB          ; Lowercase # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAD          ; Lowercase # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAF          ; Lowercase # L&       LATIN SMALL LETTER A WITH BREVE AND ACUTE
+ 1EB1          ; Lowercase # L&       LATIN SMALL LETTER A WITH BREVE AND GRAVE
+ 1EB3          ; Lowercase # L&       LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB5          ; Lowercase # L&       LATIN SMALL LETTER A WITH BREVE AND TILDE
+ 1EB7          ; Lowercase # L&       LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+ 1EB9          ; Lowercase # L&       LATIN SMALL LETTER E WITH DOT BELOW
+ 1EBB          ; Lowercase # L&       LATIN SMALL LETTER E WITH HOOK ABOVE
+ 1EBD          ; Lowercase # L&       LATIN SMALL LETTER E WITH TILDE
+ 1EBF          ; Lowercase # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC1          ; Lowercase # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC3          ; Lowercase # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC5          ; Lowercase # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC7          ; Lowercase # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC9          ; Lowercase # L&       LATIN SMALL LETTER I WITH HOOK ABOVE
+ 1ECB          ; Lowercase # L&       LATIN SMALL LETTER I WITH DOT BELOW
+ 1ECD          ; Lowercase # L&       LATIN SMALL LETTER O WITH DOT BELOW
+ 1ECF          ; Lowercase # L&       LATIN SMALL LETTER O WITH HOOK ABOVE
+ 1ED1          ; Lowercase # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED3          ; Lowercase # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED5          ; Lowercase # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED7          ; Lowercase # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED9          ; Lowercase # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDB          ; Lowercase # L&       LATIN SMALL LETTER O WITH HORN AND ACUTE
+ 1EDD          ; Lowercase # L&       LATIN SMALL LETTER O WITH HORN AND GRAVE
+ 1EDF          ; Lowercase # L&       LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE1          ; Lowercase # L&       LATIN SMALL LETTER O WITH HORN AND TILDE
+ 1EE3          ; Lowercase # L&       LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+ 1EE5          ; Lowercase # L&       LATIN SMALL LETTER U WITH DOT BELOW
+ 1EE7          ; Lowercase # L&       LATIN SMALL LETTER U WITH HOOK ABOVE
+ 1EE9          ; Lowercase # L&       LATIN SMALL LETTER U WITH HORN AND ACUTE
+ 1EEB          ; Lowercase # L&       LATIN SMALL LETTER U WITH HORN AND GRAVE
+ 1EED          ; Lowercase # L&       LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEF          ; Lowercase # L&       LATIN SMALL LETTER U WITH HORN AND TILDE
+ 1EF1          ; Lowercase # L&       LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ 1EF3          ; Lowercase # L&       LATIN SMALL LETTER Y WITH GRAVE
+ 1EF5          ; Lowercase # L&       LATIN SMALL LETTER Y WITH DOT BELOW
+ 1EF7          ; Lowercase # L&       LATIN SMALL LETTER Y WITH HOOK ABOVE
+ 1EF9          ; Lowercase # L&       LATIN SMALL LETTER Y WITH TILDE
+ 1EFB          ; Lowercase # L&       LATIN SMALL LETTER MIDDLE-WELSH LL
+ 1EFD          ; Lowercase # L&       LATIN SMALL LETTER MIDDLE-WELSH V
+ 1EFF..1F07    ; Lowercase # L&   [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F10..1F15    ; Lowercase # L&   [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F27    ; Lowercase # L&   [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F30..1F37    ; Lowercase # L&   [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F40..1F45    ; Lowercase # L&   [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Lowercase # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F60..1F67    ; Lowercase # L&   [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F70..1F7D    ; Lowercase # L&  [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1F87    ; Lowercase # L&   [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1F90..1F97    ; Lowercase # L&   [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1FA0..1FA7    ; Lowercase # L&   [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1FB0..1FB4    ; Lowercase # L&   [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FB7    ; Lowercase # L&   [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FBE          ; Lowercase # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; Lowercase # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FC7    ; Lowercase # L&   [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FD0..1FD3    ; Lowercase # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FD7    ; Lowercase # L&   [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ 1FE0..1FE7    ; Lowercase # L&   [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ 1FF2..1FF4    ; Lowercase # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FF7    ; Lowercase # L&   [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 2071          ; Lowercase # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; Lowercase # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; Lowercase # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 210A          ; Lowercase # L&       SCRIPT SMALL G
+ 210E..210F    ; Lowercase # L&   [2] PLANCK CONSTANT..PLANCK CONSTANT OVER TWO PI
+ 2113          ; Lowercase # L&       SCRIPT SMALL L
+ 212F          ; Lowercase # L&       SCRIPT SMALL E
+ 2134          ; Lowercase # L&       SCRIPT SMALL O
+ 2139          ; Lowercase # L&       INFORMATION SOURCE
+ 213C..213D    ; Lowercase # L&   [2] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK SMALL GAMMA
+ 2146..2149    ; Lowercase # L&   [4] DOUBLE-STRUCK ITALIC SMALL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; Lowercase # L&       TURNED SMALL F
+ 2170..217F    ; Lowercase # Nl  [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2184          ; Lowercase # L&       LATIN SMALL LETTER REVERSED C
+ 24D0..24E9    ; Lowercase # So  [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 2C30..2C5F    ; Lowercase # L&  [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
+ 2C61          ; Lowercase # L&       LATIN SMALL LETTER L WITH DOUBLE BAR
+ 2C65..2C66    ; Lowercase # L&   [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
+ 2C68          ; Lowercase # L&       LATIN SMALL LETTER H WITH DESCENDER
+ 2C6A          ; Lowercase # L&       LATIN SMALL LETTER K WITH DESCENDER
+ 2C6C          ; Lowercase # L&       LATIN SMALL LETTER Z WITH DESCENDER
+ 2C71          ; Lowercase # L&       LATIN SMALL LETTER V WITH RIGHT HOOK
+ 2C73..2C74    ; Lowercase # L&   [2] LATIN SMALL LETTER W WITH HOOK..LATIN SMALL LETTER V WITH CURL
+ 2C76..2C7B    ; Lowercase # L&   [6] LATIN SMALL LETTER HALF H..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; Lowercase # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C81          ; Lowercase # L&       COPTIC SMALL LETTER ALFA
+ 2C83          ; Lowercase # L&       COPTIC SMALL LETTER VIDA
+ 2C85          ; Lowercase # L&       COPTIC SMALL LETTER GAMMA
+ 2C87          ; Lowercase # L&       COPTIC SMALL LETTER DALDA
+ 2C89          ; Lowercase # L&       COPTIC SMALL LETTER EIE
+ 2C8B          ; Lowercase # L&       COPTIC SMALL LETTER SOU
+ 2C8D          ; Lowercase # L&       COPTIC SMALL LETTER ZATA
+ 2C8F          ; Lowercase # L&       COPTIC SMALL LETTER HATE
+ 2C91          ; Lowercase # L&       COPTIC SMALL LETTER THETHE
+ 2C93          ; Lowercase # L&       COPTIC SMALL LETTER IAUDA
+ 2C95          ; Lowercase # L&       COPTIC SMALL LETTER KAPA
+ 2C97          ; Lowercase # L&       COPTIC SMALL LETTER LAULA
+ 2C99          ; Lowercase # L&       COPTIC SMALL LETTER MI
+ 2C9B          ; Lowercase # L&       COPTIC SMALL LETTER NI
+ 2C9D          ; Lowercase # L&       COPTIC SMALL LETTER KSI
+ 2C9F          ; Lowercase # L&       COPTIC SMALL LETTER O
+ 2CA1          ; Lowercase # L&       COPTIC SMALL LETTER PI
+ 2CA3          ; Lowercase # L&       COPTIC SMALL LETTER RO
+ 2CA5          ; Lowercase # L&       COPTIC SMALL LETTER SIMA
+ 2CA7          ; Lowercase # L&       COPTIC SMALL LETTER TAU
+ 2CA9          ; Lowercase # L&       COPTIC SMALL LETTER UA
+ 2CAB          ; Lowercase # L&       COPTIC SMALL LETTER FI
+ 2CAD          ; Lowercase # L&       COPTIC SMALL LETTER KHI
+ 2CAF          ; Lowercase # L&       COPTIC SMALL LETTER PSI
+ 2CB1          ; Lowercase # L&       COPTIC SMALL LETTER OOU
+ 2CB3          ; Lowercase # L&       COPTIC SMALL LETTER DIALECT-P ALEF
+ 2CB5          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC AIN
+ 2CB7          ; Lowercase # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+ 2CB9          ; Lowercase # L&       COPTIC SMALL LETTER DIALECT-P KAPA
+ 2CBB          ; Lowercase # L&       COPTIC SMALL LETTER DIALECT-P NI
+ 2CBD          ; Lowercase # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+ 2CBF          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC OOU
+ 2CC1          ; Lowercase # L&       COPTIC SMALL LETTER SAMPI
+ 2CC3          ; Lowercase # L&       COPTIC SMALL LETTER CROSSED SHEI
+ 2CC5          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC SHEI
+ 2CC7          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC ESH
+ 2CC9          ; Lowercase # L&       COPTIC SMALL LETTER AKHMIMIC KHEI
+ 2CCB          ; Lowercase # L&       COPTIC SMALL LETTER DIALECT-P HORI
+ 2CCD          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC HORI
+ 2CCF          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC HA
+ 2CD1          ; Lowercase # L&       COPTIC SMALL LETTER L-SHAPED HA
+ 2CD3          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC HEI
+ 2CD5          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC HAT
+ 2CD7          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC GANGIA
+ 2CD9          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC DJA
+ 2CDB          ; Lowercase # L&       COPTIC SMALL LETTER OLD COPTIC SHIMA
+ 2CDD          ; Lowercase # L&       COPTIC SMALL LETTER OLD NUBIAN SHIMA
+ 2CDF          ; Lowercase # L&       COPTIC SMALL LETTER OLD NUBIAN NGI
+ 2CE1          ; Lowercase # L&       COPTIC SMALL LETTER OLD NUBIAN NYI
+ 2CE3..2CE4    ; Lowercase # L&   [2] COPTIC SMALL LETTER OLD NUBIAN WAU..COPTIC SYMBOL KAI
+ 2CEC          ; Lowercase # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
+ 2CEE          ; Lowercase # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF3          ; Lowercase # L&       COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; Lowercase # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Lowercase # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Lowercase # L&       GEORGIAN SMALL LETTER AEN
+ A641          ; Lowercase # L&       CYRILLIC SMALL LETTER ZEMLYA
+ A643          ; Lowercase # L&       CYRILLIC SMALL LETTER DZELO
+ A645          ; Lowercase # L&       CYRILLIC SMALL LETTER REVERSED DZE
+ A647          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTA
+ A649          ; Lowercase # L&       CYRILLIC SMALL LETTER DJERV
+ A64B          ; Lowercase # L&       CYRILLIC SMALL LETTER MONOGRAPH UK
+ A64D          ; Lowercase # L&       CYRILLIC SMALL LETTER BROAD OMEGA
+ A64F          ; Lowercase # L&       CYRILLIC SMALL LETTER NEUTRAL YER
+ A651          ; Lowercase # L&       CYRILLIC SMALL LETTER YERU WITH BACK YER
+ A653          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTIFIED YAT
+ A655          ; Lowercase # L&       CYRILLIC SMALL LETTER REVERSED YU
+ A657          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTIFIED A
+ A659          ; Lowercase # L&       CYRILLIC SMALL LETTER CLOSED LITTLE YUS
+ A65B          ; Lowercase # L&       CYRILLIC SMALL LETTER BLENDED YUS
+ A65D          ; Lowercase # L&       CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65F          ; Lowercase # L&       CYRILLIC SMALL LETTER YN
+ A661          ; Lowercase # L&       CYRILLIC SMALL LETTER REVERSED TSE
+ A663          ; Lowercase # L&       CYRILLIC SMALL LETTER SOFT DE
+ A665          ; Lowercase # L&       CYRILLIC SMALL LETTER SOFT EL
+ A667          ; Lowercase # L&       CYRILLIC SMALL LETTER SOFT EM
+ A669          ; Lowercase # L&       CYRILLIC SMALL LETTER MONOCULAR O
+ A66B          ; Lowercase # L&       CYRILLIC SMALL LETTER BINOCULAR O
+ A66D          ; Lowercase # L&       CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A681          ; Lowercase # L&       CYRILLIC SMALL LETTER DWE
+ A683          ; Lowercase # L&       CYRILLIC SMALL LETTER DZWE
+ A685          ; Lowercase # L&       CYRILLIC SMALL LETTER ZHWE
+ A687          ; Lowercase # L&       CYRILLIC SMALL LETTER CCHE
+ A689          ; Lowercase # L&       CYRILLIC SMALL LETTER DZZE
+ A68B          ; Lowercase # L&       CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
+ A68D          ; Lowercase # L&       CYRILLIC SMALL LETTER TWE
+ A68F          ; Lowercase # L&       CYRILLIC SMALL LETTER TSWE
+ A691          ; Lowercase # L&       CYRILLIC SMALL LETTER TSSE
+ A693          ; Lowercase # L&       CYRILLIC SMALL LETTER TCHE
+ A695          ; Lowercase # L&       CYRILLIC SMALL LETTER HWE
+ A697          ; Lowercase # L&       CYRILLIC SMALL LETTER SHWE
+ A699          ; Lowercase # L&       CYRILLIC SMALL LETTER DOUBLE O
+ A69B          ; Lowercase # L&       CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; Lowercase # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A723          ; Lowercase # L&       LATIN SMALL LETTER EGYPTOLOGICAL ALEF
+ A725          ; Lowercase # L&       LATIN SMALL LETTER EGYPTOLOGICAL AIN
+ A727          ; Lowercase # L&       LATIN SMALL LETTER HENG
+ A729          ; Lowercase # L&       LATIN SMALL LETTER TZ
+ A72B          ; Lowercase # L&       LATIN SMALL LETTER TRESILLO
+ A72D          ; Lowercase # L&       LATIN SMALL LETTER CUATRILLO
+ A72F..A731    ; Lowercase # L&   [3] LATIN SMALL LETTER CUATRILLO WITH COMMA..LATIN LETTER SMALL CAPITAL S
+ A733          ; Lowercase # L&       LATIN SMALL LETTER AA
+ A735          ; Lowercase # L&       LATIN SMALL LETTER AO
+ A737          ; Lowercase # L&       LATIN SMALL LETTER AU
+ A739          ; Lowercase # L&       LATIN SMALL LETTER AV
+ A73B          ; Lowercase # L&       LATIN SMALL LETTER AV WITH HORIZONTAL BAR
+ A73D          ; Lowercase # L&       LATIN SMALL LETTER AY
+ A73F          ; Lowercase # L&       LATIN SMALL LETTER REVERSED C WITH DOT
+ A741          ; Lowercase # L&       LATIN SMALL LETTER K WITH STROKE
+ A743          ; Lowercase # L&       LATIN SMALL LETTER K WITH DIAGONAL STROKE
+ A745          ; Lowercase # L&       LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A747          ; Lowercase # L&       LATIN SMALL LETTER BROKEN L
+ A749          ; Lowercase # L&       LATIN SMALL LETTER L WITH HIGH STROKE
+ A74B          ; Lowercase # L&       LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
+ A74D          ; Lowercase # L&       LATIN SMALL LETTER O WITH LOOP
+ A74F          ; Lowercase # L&       LATIN SMALL LETTER OO
+ A751          ; Lowercase # L&       LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
+ A753          ; Lowercase # L&       LATIN SMALL LETTER P WITH FLOURISH
+ A755          ; Lowercase # L&       LATIN SMALL LETTER P WITH SQUIRREL TAIL
+ A757          ; Lowercase # L&       LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
+ A759          ; Lowercase # L&       LATIN SMALL LETTER Q WITH DIAGONAL STROKE
+ A75B          ; Lowercase # L&       LATIN SMALL LETTER R ROTUNDA
+ A75D          ; Lowercase # L&       LATIN SMALL LETTER RUM ROTUNDA
+ A75F          ; Lowercase # L&       LATIN SMALL LETTER V WITH DIAGONAL STROKE
+ A761          ; Lowercase # L&       LATIN SMALL LETTER VY
+ A763          ; Lowercase # L&       LATIN SMALL LETTER VISIGOTHIC Z
+ A765          ; Lowercase # L&       LATIN SMALL LETTER THORN WITH STROKE
+ A767          ; Lowercase # L&       LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A769          ; Lowercase # L&       LATIN SMALL LETTER VEND
+ A76B          ; Lowercase # L&       LATIN SMALL LETTER ET
+ A76D          ; Lowercase # L&       LATIN SMALL LETTER IS
+ A76F          ; Lowercase # L&       LATIN SMALL LETTER CON
+ A770          ; Lowercase # Lm       MODIFIER LETTER US
+ A771..A778    ; Lowercase # L&   [8] LATIN SMALL LETTER DUM..LATIN SMALL LETTER UM
+ A77A          ; Lowercase # L&       LATIN SMALL LETTER INSULAR D
+ A77C          ; Lowercase # L&       LATIN SMALL LETTER INSULAR F
+ A77F          ; Lowercase # L&       LATIN SMALL LETTER TURNED INSULAR G
+ A781          ; Lowercase # L&       LATIN SMALL LETTER TURNED L
+ A783          ; Lowercase # L&       LATIN SMALL LETTER INSULAR R
+ A785          ; Lowercase # L&       LATIN SMALL LETTER INSULAR S
+ A787          ; Lowercase # L&       LATIN SMALL LETTER INSULAR T
+ A78C          ; Lowercase # L&       LATIN SMALL LETTER SALTILLO
+ A78E          ; Lowercase # L&       LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A791          ; Lowercase # L&       LATIN SMALL LETTER N WITH DESCENDER
+ A793..A795    ; Lowercase # L&   [3] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER H WITH PALATAL HOOK
+ A797          ; Lowercase # L&       LATIN SMALL LETTER B WITH FLOURISH
+ A799          ; Lowercase # L&       LATIN SMALL LETTER F WITH STROKE
+ A79B          ; Lowercase # L&       LATIN SMALL LETTER VOLAPUK AE
+ A79D          ; Lowercase # L&       LATIN SMALL LETTER VOLAPUK OE
+ A79F          ; Lowercase # L&       LATIN SMALL LETTER VOLAPUK UE
+ A7A1          ; Lowercase # L&       LATIN SMALL LETTER G WITH OBLIQUE STROKE
+ A7A3          ; Lowercase # L&       LATIN SMALL LETTER K WITH OBLIQUE STROKE
+ A7A5          ; Lowercase # L&       LATIN SMALL LETTER N WITH OBLIQUE STROKE
+ A7A7          ; Lowercase # L&       LATIN SMALL LETTER R WITH OBLIQUE STROKE
+ A7A9          ; Lowercase # L&       LATIN SMALL LETTER S WITH OBLIQUE STROKE
+ A7AF          ; Lowercase # L&       LATIN LETTER SMALL CAPITAL Q
+ A7B5          ; Lowercase # L&       LATIN SMALL LETTER BETA
+ A7B7          ; Lowercase # L&       LATIN SMALL LETTER OMEGA
+ A7B9          ; Lowercase # L&       LATIN SMALL LETTER U WITH STROKE
+ A7BB          ; Lowercase # L&       LATIN SMALL LETTER GLOTTAL A
+ A7BD          ; Lowercase # L&       LATIN SMALL LETTER GLOTTAL I
+ A7BF          ; Lowercase # L&       LATIN SMALL LETTER GLOTTAL U
+ A7C1          ; Lowercase # L&       LATIN SMALL LETTER OLD POLISH O
+ A7C3          ; Lowercase # L&       LATIN SMALL LETTER ANGLICANA W
+ A7C8          ; Lowercase # L&       LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
+ A7CA          ; Lowercase # L&       LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D1          ; Lowercase # L&       LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; Lowercase # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5          ; Lowercase # L&       LATIN SMALL LETTER DOUBLE WYNN
+ A7D7          ; Lowercase # L&       LATIN SMALL LETTER MIDDLE SCOTS S
+ A7D9          ; Lowercase # L&       LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; Lowercase # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F6          ; Lowercase # L&       LATIN SMALL LETTER REVERSED HALF H
+ A7F8..A7F9    ; Lowercase # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; Lowercase # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ AB30..AB5A    ; Lowercase # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; Lowercase # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; Lowercase # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; Lowercase # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; Lowercase # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ FB00..FB06    ; Lowercase # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Lowercase # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FF41..FF5A    ; Lowercase # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ 10428..1044F  ; Lowercase # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+ 104D8..104FB  ; Lowercase # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10597..105A1  ; Lowercase # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Lowercase # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Lowercase # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Lowercase # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10780         ; Lowercase # Lm       MODIFIER LETTER SMALL CAPITAL AA
+ 10783..10785  ; Lowercase # Lm   [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Lowercase # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Lowercase # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10CC0..10CF2  ; Lowercase # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 118C0..118DF  ; Lowercase # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 16E60..16E7F  ; Lowercase # L&  [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 1D41A..1D433  ; Lowercase # L&  [26] MATHEMATICAL BOLD SMALL A..MATHEMATICAL BOLD SMALL Z
+ 1D44E..1D454  ; Lowercase # L&   [7] MATHEMATICAL ITALIC SMALL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D467  ; Lowercase # L&  [18] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL ITALIC SMALL Z
+ 1D482..1D49B  ; Lowercase # L&  [26] MATHEMATICAL BOLD ITALIC SMALL A..MATHEMATICAL BOLD ITALIC SMALL Z
+ 1D4B6..1D4B9  ; Lowercase # L&   [4] MATHEMATICAL SCRIPT SMALL A..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; Lowercase # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; Lowercase # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D4CF  ; Lowercase # L&  [11] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL SCRIPT SMALL Z
+ 1D4EA..1D503  ; Lowercase # L&  [26] MATHEMATICAL BOLD SCRIPT SMALL A..MATHEMATICAL BOLD SCRIPT SMALL Z
+ 1D51E..1D537  ; Lowercase # L&  [26] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL FRAKTUR SMALL Z
+ 1D552..1D56B  ; Lowercase # L&  [26] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL DOUBLE-STRUCK SMALL Z
+ 1D586..1D59F  ; Lowercase # L&  [26] MATHEMATICAL BOLD FRAKTUR SMALL A..MATHEMATICAL BOLD FRAKTUR SMALL Z
+ 1D5BA..1D5D3  ; Lowercase # L&  [26] MATHEMATICAL SANS-SERIF SMALL A..MATHEMATICAL SANS-SERIF SMALL Z
+ 1D5EE..1D607  ; Lowercase # L&  [26] MATHEMATICAL SANS-SERIF BOLD SMALL A..MATHEMATICAL SANS-SERIF BOLD SMALL Z
+ 1D622..1D63B  ; Lowercase # L&  [26] MATHEMATICAL SANS-SERIF ITALIC SMALL A..MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+ 1D656..1D66F  ; Lowercase # L&  [26] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+ 1D68A..1D6A5  ; Lowercase # L&  [28] MATHEMATICAL MONOSPACE SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6C2..1D6DA  ; Lowercase # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6E1  ; Lowercase # L&   [6] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL BOLD PI SYMBOL
+ 1D6FC..1D714  ; Lowercase # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D71B  ; Lowercase # L&   [6] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL ITALIC PI SYMBOL
+ 1D736..1D74E  ; Lowercase # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D755  ; Lowercase # L&   [6] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC PI SYMBOL
+ 1D770..1D788  ; Lowercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D78F  ; Lowercase # L&   [6] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+ 1D7AA..1D7C2  ; Lowercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7C9  ; Lowercase # L&   [6] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+ 1D7CB         ; Lowercase # L&       MATHEMATICAL BOLD SMALL DIGAMMA
+ 1DF00..1DF09  ; Lowercase # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0B..1DF1E  ; Lowercase # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; Lowercase # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E030..1E06D  ; Lowercase # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E922..1E943  ; Lowercase # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 
+ # Total code points: 2544
+ 
+ # ================================================
+ 
+ # Derived Property: Uppercase
+ #  Generated from: Lu + Other_Uppercase
+ 
+ 0041..005A    ; Uppercase # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 00C0..00D6    ; Uppercase # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00DE    ; Uppercase # L&   [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN
+ 0100          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH MACRON
+ 0102          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH BREVE
+ 0104          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH OGONEK
+ 0106          ; Uppercase # L&       LATIN CAPITAL LETTER C WITH ACUTE
+ 0108          ; Uppercase # L&       LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ 010A          ; Uppercase # L&       LATIN CAPITAL LETTER C WITH DOT ABOVE
+ 010C          ; Uppercase # L&       LATIN CAPITAL LETTER C WITH CARON
+ 010E          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH CARON
+ 0110          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH STROKE
+ 0112          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH MACRON
+ 0114          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH BREVE
+ 0116          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH DOT ABOVE
+ 0118          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH OGONEK
+ 011A          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CARON
+ 011C          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ 011E          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH BREVE
+ 0120          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH DOT ABOVE
+ 0122          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH CEDILLA
+ 0124          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ 0126          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH STROKE
+ 0128          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH TILDE
+ 012A          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH MACRON
+ 012C          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH BREVE
+ 012E          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH OGONEK
+ 0130          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132          ; Uppercase # L&       LATIN CAPITAL LIGATURE IJ
+ 0134          ; Uppercase # L&       LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ 0136          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH CEDILLA
+ 0139          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH ACUTE
+ 013B          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH CEDILLA
+ 013D          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH CARON
+ 013F          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH MIDDLE DOT
+ 0141          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH STROKE
+ 0143          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH ACUTE
+ 0145          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH CEDILLA
+ 0147          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH CARON
+ 014A          ; Uppercase # L&       LATIN CAPITAL LETTER ENG
+ 014C          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH MACRON
+ 014E          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH BREVE
+ 0150          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ 0152          ; Uppercase # L&       LATIN CAPITAL LIGATURE OE
+ 0154          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH ACUTE
+ 0156          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH CEDILLA
+ 0158          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH CARON
+ 015A          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH ACUTE
+ 015C          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ 015E          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH CEDILLA
+ 0160          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH CARON
+ 0162          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH CEDILLA
+ 0164          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH CARON
+ 0166          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH STROKE
+ 0168          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH TILDE
+ 016A          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH MACRON
+ 016C          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH BREVE
+ 016E          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH RING ABOVE
+ 0170          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ 0172          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH OGONEK
+ 0174          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ 0176          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ 0178..0179    ; Uppercase # L&   [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+ 017B          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ 017D          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH CARON
+ 0181..0182    ; Uppercase # L&   [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+ 0184          ; Uppercase # L&       LATIN CAPITAL LETTER TONE SIX
+ 0186..0187    ; Uppercase # L&   [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+ 0189..018B    ; Uppercase # L&   [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+ 018E..0191    ; Uppercase # L&   [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+ 0193..0194    ; Uppercase # L&   [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+ 0196..0198    ; Uppercase # L&   [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+ 019C..019D    ; Uppercase # L&   [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+ 019F..01A0    ; Uppercase # L&   [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+ 01A2          ; Uppercase # L&       LATIN CAPITAL LETTER OI
+ 01A4          ; Uppercase # L&       LATIN CAPITAL LETTER P WITH HOOK
+ 01A6..01A7    ; Uppercase # L&   [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+ 01A9          ; Uppercase # L&       LATIN CAPITAL LETTER ESH
+ 01AC          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH HOOK
+ 01AE..01AF    ; Uppercase # L&   [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+ 01B1..01B3    ; Uppercase # L&   [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+ 01B5          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH STROKE
+ 01B7..01B8    ; Uppercase # L&   [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+ 01BC          ; Uppercase # L&       LATIN CAPITAL LETTER TONE FIVE
+ 01C4          ; Uppercase # L&       LATIN CAPITAL LETTER DZ WITH CARON
+ 01C7          ; Uppercase # L&       LATIN CAPITAL LETTER LJ
+ 01CA          ; Uppercase # L&       LATIN CAPITAL LETTER NJ
+ 01CD          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH CARON
+ 01CF          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH CARON
+ 01D1          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH CARON
+ 01D3          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH CARON
+ 01D5          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+ 01D7          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+ 01D9          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ 01DB          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+ 01E0          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+ 01E2          ; Uppercase # L&       LATIN CAPITAL LETTER AE WITH MACRON
+ 01E4          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH STROKE
+ 01E6          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH CARON
+ 01E8          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH CARON
+ 01EA          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH OGONEK
+ 01EC          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+ 01EE          ; Uppercase # L&       LATIN CAPITAL LETTER EZH WITH CARON
+ 01F1          ; Uppercase # L&       LATIN CAPITAL LETTER DZ
+ 01F4          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH ACUTE
+ 01F6..01F8    ; Uppercase # L&   [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+ 01FA          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ 01FC          ; Uppercase # L&       LATIN CAPITAL LETTER AE WITH ACUTE
+ 01FE          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ 0200          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+ 0202          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH INVERTED BREVE
+ 0204          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+ 0206          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH INVERTED BREVE
+ 0208          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+ 020A          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH INVERTED BREVE
+ 020C          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+ 020E          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH INVERTED BREVE
+ 0210          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+ 0212          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH INVERTED BREVE
+ 0214          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+ 0216          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH INVERTED BREVE
+ 0218          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH COMMA BELOW
+ 021A          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH COMMA BELOW
+ 021C          ; Uppercase # L&       LATIN CAPITAL LETTER YOGH
+ 021E          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH CARON
+ 0220          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+ 0222          ; Uppercase # L&       LATIN CAPITAL LETTER OU
+ 0224          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH HOOK
+ 0226          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE
+ 0228          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CEDILLA
+ 022A          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+ 022C          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+ 022E          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE
+ 0230          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+ 0232          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH MACRON
+ 023A..023B    ; Uppercase # L&   [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+ 023D..023E    ; Uppercase # L&   [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+ 0241          ; Uppercase # L&       LATIN CAPITAL LETTER GLOTTAL STOP
+ 0243..0246    ; Uppercase # L&   [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+ 0248          ; Uppercase # L&       LATIN CAPITAL LETTER J WITH STROKE
+ 024A          ; Uppercase # L&       LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+ 024C          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH STROKE
+ 024E          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH STROKE
+ 0370          ; Uppercase # L&       GREEK CAPITAL LETTER HETA
+ 0372          ; Uppercase # L&       GREEK CAPITAL LETTER ARCHAIC SAMPI
+ 0376          ; Uppercase # L&       GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+ 037F          ; Uppercase # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; Uppercase # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Uppercase # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Uppercase # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..038F    ; Uppercase # L&   [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 0391..03A1    ; Uppercase # L&  [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+ 03A3..03AB    ; Uppercase # L&   [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 03CF          ; Uppercase # L&       GREEK CAPITAL KAI SYMBOL
+ 03D2..03D4    ; Uppercase # L&   [3] GREEK UPSILON WITH HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ 03D8          ; Uppercase # L&       GREEK LETTER ARCHAIC KOPPA
+ 03DA          ; Uppercase # L&       GREEK LETTER STIGMA
+ 03DC          ; Uppercase # L&       GREEK LETTER DIGAMMA
+ 03DE          ; Uppercase # L&       GREEK LETTER KOPPA
+ 03E0          ; Uppercase # L&       GREEK LETTER SAMPI
+ 03E2          ; Uppercase # L&       COPTIC CAPITAL LETTER SHEI
+ 03E4          ; Uppercase # L&       COPTIC CAPITAL LETTER FEI
+ 03E6          ; Uppercase # L&       COPTIC CAPITAL LETTER KHEI
+ 03E8          ; Uppercase # L&       COPTIC CAPITAL LETTER HORI
+ 03EA          ; Uppercase # L&       COPTIC CAPITAL LETTER GANGIA
+ 03EC          ; Uppercase # L&       COPTIC CAPITAL LETTER SHIMA
+ 03EE          ; Uppercase # L&       COPTIC CAPITAL LETTER DEI
+ 03F4          ; Uppercase # L&       GREEK CAPITAL THETA SYMBOL
+ 03F7          ; Uppercase # L&       GREEK CAPITAL LETTER SHO
+ 03F9..03FA    ; Uppercase # L&   [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+ 03FD..042F    ; Uppercase # L&  [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+ 0460          ; Uppercase # L&       CYRILLIC CAPITAL LETTER OMEGA
+ 0462          ; Uppercase # L&       CYRILLIC CAPITAL LETTER YAT
+ 0464          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTIFIED E
+ 0466          ; Uppercase # L&       CYRILLIC CAPITAL LETTER LITTLE YUS
+ 0468          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+ 046A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BIG YUS
+ 046C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+ 046E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KSI
+ 0470          ; Uppercase # L&       CYRILLIC CAPITAL LETTER PSI
+ 0472          ; Uppercase # L&       CYRILLIC CAPITAL LETTER FITA
+ 0474          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IZHITSA
+ 0476          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0478          ; Uppercase # L&       CYRILLIC CAPITAL LETTER UK
+ 047A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ROUND OMEGA
+ 047C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+ 047E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER OT
+ 0480          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOPPA
+ 048A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+ 048C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+ 048E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ER WITH TICK
+ 0490          ; Uppercase # L&       CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ 0492          ; Uppercase # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ 0494          ; Uppercase # L&       CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+ 0496          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ 0498          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+ 049A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ 049C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+ 049E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KA WITH STROKE
+ 04A0          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BASHKIR KA
+ 04A2          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+ 04A4          ; Uppercase # L&       CYRILLIC CAPITAL LIGATURE EN GHE
+ 04A6          ; Uppercase # L&       CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+ 04A8          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ABKHASIAN HA
+ 04AA          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+ 04AC          ; Uppercase # L&       CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+ 04AE          ; Uppercase # L&       CYRILLIC CAPITAL LETTER STRAIGHT U
+ 04B0          ; Uppercase # L&       CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ 04B2          ; Uppercase # L&       CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ 04B4          ; Uppercase # L&       CYRILLIC CAPITAL LIGATURE TE TSE
+ 04B6          ; Uppercase # L&       CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ 04B8          ; Uppercase # L&       CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+ 04BA          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SHHA
+ 04BC          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+ 04BE          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C0..04C1    ; Uppercase # L&   [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+ 04C3          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KA WITH HOOK
+ 04C5          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EL WITH TAIL
+ 04C7          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EN WITH HOOK
+ 04C9          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EN WITH TAIL
+ 04CB          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+ 04CD          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EM WITH TAIL
+ 04D0          ; Uppercase # L&       CYRILLIC CAPITAL LETTER A WITH BREVE
+ 04D2          ; Uppercase # L&       CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+ 04D4          ; Uppercase # L&       CYRILLIC CAPITAL LIGATURE A IE
+ 04D6          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IE WITH BREVE
+ 04D8          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SCHWA
+ 04DA          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+ 04DC          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+ 04DE          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+ 04E0          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+ 04E2          ; Uppercase # L&       CYRILLIC CAPITAL LETTER I WITH MACRON
+ 04E4          ; Uppercase # L&       CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+ 04E6          ; Uppercase # L&       CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+ 04E8          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BARRED O
+ 04EA          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+ 04EC          ; Uppercase # L&       CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ 04EE          ; Uppercase # L&       CYRILLIC CAPITAL LETTER U WITH MACRON
+ 04F0          ; Uppercase # L&       CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+ 04F2          ; Uppercase # L&       CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+ 04F4          ; Uppercase # L&       CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+ 04F6          ; Uppercase # L&       CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+ 04F8          ; Uppercase # L&       CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+ 04FA          ; Uppercase # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+ 04FC          ; Uppercase # L&       CYRILLIC CAPITAL LETTER HA WITH HOOK
+ 04FE          ; Uppercase # L&       CYRILLIC CAPITAL LETTER HA WITH STROKE
+ 0500          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI DE
+ 0502          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI DJE
+ 0504          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI ZJE
+ 0506          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI DZJE
+ 0508          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI LJE
+ 050A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI NJE
+ 050C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI SJE
+ 050E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER KOMI TJE
+ 0510          ; Uppercase # L&       CYRILLIC CAPITAL LETTER REVERSED ZE
+ 0512          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EL WITH HOOK
+ 0514          ; Uppercase # L&       CYRILLIC CAPITAL LETTER LHA
+ 0516          ; Uppercase # L&       CYRILLIC CAPITAL LETTER RHA
+ 0518          ; Uppercase # L&       CYRILLIC CAPITAL LETTER YAE
+ 051A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER QA
+ 051C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER WE
+ 051E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ALEUT KA
+ 0520          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+ 0522          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+ 0524          ; Uppercase # L&       CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+ 0526          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+ 0528          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+ 052A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DZZHE
+ 052C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DCHE
+ 052E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+ 0531..0556    ; Uppercase # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 10A0..10C5    ; Uppercase # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Uppercase # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Uppercase # L&       GEORGIAN CAPITAL LETTER AEN
+ 13A0..13F5    ; Uppercase # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 1C90..1CBA    ; Uppercase # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Uppercase # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1E00          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH RING BELOW
+ 1E02          ; Uppercase # L&       LATIN CAPITAL LETTER B WITH DOT ABOVE
+ 1E04          ; Uppercase # L&       LATIN CAPITAL LETTER B WITH DOT BELOW
+ 1E06          ; Uppercase # L&       LATIN CAPITAL LETTER B WITH LINE BELOW
+ 1E08          ; Uppercase # L&       LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+ 1E0A          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH DOT ABOVE
+ 1E0C          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH DOT BELOW
+ 1E0E          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH LINE BELOW
+ 1E10          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH CEDILLA
+ 1E12          ; Uppercase # L&       LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+ 1E14          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+ 1E16          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+ 1E18          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1A          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH TILDE BELOW
+ 1E1C          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+ 1E1E          ; Uppercase # L&       LATIN CAPITAL LETTER F WITH DOT ABOVE
+ 1E20          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH MACRON
+ 1E22          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH DOT ABOVE
+ 1E24          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH DOT BELOW
+ 1E26          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH DIAERESIS
+ 1E28          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH CEDILLA
+ 1E2A          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH BREVE BELOW
+ 1E2C          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH TILDE BELOW
+ 1E2E          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+ 1E30          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH ACUTE
+ 1E32          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH DOT BELOW
+ 1E34          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH LINE BELOW
+ 1E36          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH DOT BELOW
+ 1E38          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+ 1E3A          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH LINE BELOW
+ 1E3C          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3E          ; Uppercase # L&       LATIN CAPITAL LETTER M WITH ACUTE
+ 1E40          ; Uppercase # L&       LATIN CAPITAL LETTER M WITH DOT ABOVE
+ 1E42          ; Uppercase # L&       LATIN CAPITAL LETTER M WITH DOT BELOW
+ 1E44          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH DOT ABOVE
+ 1E46          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH DOT BELOW
+ 1E48          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH LINE BELOW
+ 1E4A          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4C          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+ 1E4E          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+ 1E50          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+ 1E52          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+ 1E54          ; Uppercase # L&       LATIN CAPITAL LETTER P WITH ACUTE
+ 1E56          ; Uppercase # L&       LATIN CAPITAL LETTER P WITH DOT ABOVE
+ 1E58          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH DOT ABOVE
+ 1E5A          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH DOT BELOW
+ 1E5C          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+ 1E5E          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH LINE BELOW
+ 1E60          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH DOT ABOVE
+ 1E62          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH DOT BELOW
+ 1E64          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E66          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+ 1E68          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6A          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH DOT ABOVE
+ 1E6C          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH DOT BELOW
+ 1E6E          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH LINE BELOW
+ 1E70          ; Uppercase # L&       LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+ 1E72          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+ 1E74          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH TILDE BELOW
+ 1E76          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+ 1E78          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+ 1E7A          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+ 1E7C          ; Uppercase # L&       LATIN CAPITAL LETTER V WITH TILDE
+ 1E7E          ; Uppercase # L&       LATIN CAPITAL LETTER V WITH DOT BELOW
+ 1E80          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH GRAVE
+ 1E82          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH ACUTE
+ 1E84          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH DIAERESIS
+ 1E86          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH DOT ABOVE
+ 1E88          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH DOT BELOW
+ 1E8A          ; Uppercase # L&       LATIN CAPITAL LETTER X WITH DOT ABOVE
+ 1E8C          ; Uppercase # L&       LATIN CAPITAL LETTER X WITH DIAERESIS
+ 1E8E          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH DOT ABOVE
+ 1E90          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+ 1E92          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH DOT BELOW
+ 1E94          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH LINE BELOW
+ 1E9E          ; Uppercase # L&       LATIN CAPITAL LETTER SHARP S
+ 1EA0          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH DOT BELOW
+ 1EA2          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ 1EA4          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA6          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA8          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAA          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAC          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAE          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ 1EB0          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ 1EB2          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB4          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ 1EB6          ; Uppercase # L&       LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ 1EB8          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH DOT BELOW
+ 1EBA          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ 1EBC          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH TILDE
+ 1EBE          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC0          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC2          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC4          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC6          ; Uppercase # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC8          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ 1ECA          ; Uppercase # L&       LATIN CAPITAL LETTER I WITH DOT BELOW
+ 1ECC          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH DOT BELOW
+ 1ECE          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ 1ED0          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED2          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED4          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED6          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED8          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDA          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ 1EDC          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ 1EDE          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE0          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ 1EE2          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ 1EE4          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH DOT BELOW
+ 1EE6          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ 1EE8          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ 1EEA          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ 1EEC          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEE          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH HORN AND TILDE
+ 1EF0          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ 1EF2          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH GRAVE
+ 1EF4          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH DOT BELOW
+ 1EF6          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ 1EF8          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH TILDE
+ 1EFA          ; Uppercase # L&       LATIN CAPITAL LETTER MIDDLE-WELSH LL
+ 1EFC          ; Uppercase # L&       LATIN CAPITAL LETTER MIDDLE-WELSH V
+ 1EFE          ; Uppercase # L&       LATIN CAPITAL LETTER Y WITH LOOP
+ 1F08..1F0F    ; Uppercase # L&   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F18..1F1D    ; Uppercase # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F28..1F2F    ; Uppercase # L&   [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F38..1F3F    ; Uppercase # L&   [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F48..1F4D    ; Uppercase # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F59          ; Uppercase # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Uppercase # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Uppercase # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F          ; Uppercase # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F68..1F6F    ; Uppercase # L&   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1FB8..1FBB    ; Uppercase # L&   [4] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH OXIA
+ 1FC8..1FCB    ; Uppercase # L&   [4] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH OXIA
+ 1FD8..1FDB    ; Uppercase # L&   [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE8..1FEC    ; Uppercase # L&   [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF8..1FFB    ; Uppercase # L&   [4] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH OXIA
+ 2102          ; Uppercase # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; Uppercase # L&       EULER CONSTANT
+ 210B..210D    ; Uppercase # L&   [3] SCRIPT CAPITAL H..DOUBLE-STRUCK CAPITAL H
+ 2110..2112    ; Uppercase # L&   [3] SCRIPT CAPITAL I..SCRIPT CAPITAL L
+ 2115          ; Uppercase # L&       DOUBLE-STRUCK CAPITAL N
+ 2119..211D    ; Uppercase # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; Uppercase # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; Uppercase # L&       OHM SIGN
+ 2128          ; Uppercase # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; Uppercase # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 2130..2133    ; Uppercase # L&   [4] SCRIPT CAPITAL E..SCRIPT CAPITAL M
+ 213E..213F    ; Uppercase # L&   [2] DOUBLE-STRUCK CAPITAL GAMMA..DOUBLE-STRUCK CAPITAL PI
+ 2145          ; Uppercase # L&       DOUBLE-STRUCK ITALIC CAPITAL D
+ 2160..216F    ; Uppercase # Nl  [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
+ 2183          ; Uppercase # L&       ROMAN NUMERAL REVERSED ONE HUNDRED
+ 24B6..24CF    ; Uppercase # So  [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
+ 2C00..2C2F    ; Uppercase # L&  [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+ 2C60          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH DOUBLE BAR
+ 2C62..2C64    ; Uppercase # L&   [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+ 2C67          ; Uppercase # L&       LATIN CAPITAL LETTER H WITH DESCENDER
+ 2C69          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH DESCENDER
+ 2C6B          ; Uppercase # L&       LATIN CAPITAL LETTER Z WITH DESCENDER
+ 2C6D..2C70    ; Uppercase # L&   [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA
+ 2C72          ; Uppercase # L&       LATIN CAPITAL LETTER W WITH HOOK
+ 2C75          ; Uppercase # L&       LATIN CAPITAL LETTER HALF H
+ 2C7E..2C80    ; Uppercase # L&   [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA
+ 2C82          ; Uppercase # L&       COPTIC CAPITAL LETTER VIDA
+ 2C84          ; Uppercase # L&       COPTIC CAPITAL LETTER GAMMA
+ 2C86          ; Uppercase # L&       COPTIC CAPITAL LETTER DALDA
+ 2C88          ; Uppercase # L&       COPTIC CAPITAL LETTER EIE
+ 2C8A          ; Uppercase # L&       COPTIC CAPITAL LETTER SOU
+ 2C8C          ; Uppercase # L&       COPTIC CAPITAL LETTER ZATA
+ 2C8E          ; Uppercase # L&       COPTIC CAPITAL LETTER HATE
+ 2C90          ; Uppercase # L&       COPTIC CAPITAL LETTER THETHE
+ 2C92          ; Uppercase # L&       COPTIC CAPITAL LETTER IAUDA
+ 2C94          ; Uppercase # L&       COPTIC CAPITAL LETTER KAPA
+ 2C96          ; Uppercase # L&       COPTIC CAPITAL LETTER LAULA
+ 2C98          ; Uppercase # L&       COPTIC CAPITAL LETTER MI
+ 2C9A          ; Uppercase # L&       COPTIC CAPITAL LETTER NI
+ 2C9C          ; Uppercase # L&       COPTIC CAPITAL LETTER KSI
+ 2C9E          ; Uppercase # L&       COPTIC CAPITAL LETTER O
+ 2CA0          ; Uppercase # L&       COPTIC CAPITAL LETTER PI
+ 2CA2          ; Uppercase # L&       COPTIC CAPITAL LETTER RO
+ 2CA4          ; Uppercase # L&       COPTIC CAPITAL LETTER SIMA
+ 2CA6          ; Uppercase # L&       COPTIC CAPITAL LETTER TAU
+ 2CA8          ; Uppercase # L&       COPTIC CAPITAL LETTER UA
+ 2CAA          ; Uppercase # L&       COPTIC CAPITAL LETTER FI
+ 2CAC          ; Uppercase # L&       COPTIC CAPITAL LETTER KHI
+ 2CAE          ; Uppercase # L&       COPTIC CAPITAL LETTER PSI
+ 2CB0          ; Uppercase # L&       COPTIC CAPITAL LETTER OOU
+ 2CB2          ; Uppercase # L&       COPTIC CAPITAL LETTER DIALECT-P ALEF
+ 2CB4          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC AIN
+ 2CB6          ; Uppercase # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+ 2CB8          ; Uppercase # L&       COPTIC CAPITAL LETTER DIALECT-P KAPA
+ 2CBA          ; Uppercase # L&       COPTIC CAPITAL LETTER DIALECT-P NI
+ 2CBC          ; Uppercase # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+ 2CBE          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC OOU
+ 2CC0          ; Uppercase # L&       COPTIC CAPITAL LETTER SAMPI
+ 2CC2          ; Uppercase # L&       COPTIC CAPITAL LETTER CROSSED SHEI
+ 2CC4          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC SHEI
+ 2CC6          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC ESH
+ 2CC8          ; Uppercase # L&       COPTIC CAPITAL LETTER AKHMIMIC KHEI
+ 2CCA          ; Uppercase # L&       COPTIC CAPITAL LETTER DIALECT-P HORI
+ 2CCC          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC HORI
+ 2CCE          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC HA
+ 2CD0          ; Uppercase # L&       COPTIC CAPITAL LETTER L-SHAPED HA
+ 2CD2          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC HEI
+ 2CD4          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC HAT
+ 2CD6          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+ 2CD8          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC DJA
+ 2CDA          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+ 2CDC          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+ 2CDE          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD NUBIAN NGI
+ 2CE0          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD NUBIAN NYI
+ 2CE2          ; Uppercase # L&       COPTIC CAPITAL LETTER OLD NUBIAN WAU
+ 2CEB          ; Uppercase # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+ 2CED          ; Uppercase # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2          ; Uppercase # L&       COPTIC CAPITAL LETTER BOHAIRIC KHEI
+ A640          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ZEMLYA
+ A642          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DZELO
+ A644          ; Uppercase # L&       CYRILLIC CAPITAL LETTER REVERSED DZE
+ A646          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTA
+ A648          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DJERV
+ A64A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER MONOGRAPH UK
+ A64C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BROAD OMEGA
+ A64E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER NEUTRAL YER
+ A650          ; Uppercase # L&       CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+ A652          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTIFIED YAT
+ A654          ; Uppercase # L&       CYRILLIC CAPITAL LETTER REVERSED YU
+ A656          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTIFIED A
+ A658          ; Uppercase # L&       CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+ A65A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BLENDED YUS
+ A65C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER YN
+ A660          ; Uppercase # L&       CYRILLIC CAPITAL LETTER REVERSED TSE
+ A662          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SOFT DE
+ A664          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SOFT EL
+ A666          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SOFT EM
+ A668          ; Uppercase # L&       CYRILLIC CAPITAL LETTER MONOCULAR O
+ A66A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER BINOCULAR O
+ A66C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+ A680          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DWE
+ A682          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DZWE
+ A684          ; Uppercase # L&       CYRILLIC CAPITAL LETTER ZHWE
+ A686          ; Uppercase # L&       CYRILLIC CAPITAL LETTER CCHE
+ A688          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DZZE
+ A68A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+ A68C          ; Uppercase # L&       CYRILLIC CAPITAL LETTER TWE
+ A68E          ; Uppercase # L&       CYRILLIC CAPITAL LETTER TSWE
+ A690          ; Uppercase # L&       CYRILLIC CAPITAL LETTER TSSE
+ A692          ; Uppercase # L&       CYRILLIC CAPITAL LETTER TCHE
+ A694          ; Uppercase # L&       CYRILLIC CAPITAL LETTER HWE
+ A696          ; Uppercase # L&       CYRILLIC CAPITAL LETTER SHWE
+ A698          ; Uppercase # L&       CYRILLIC CAPITAL LETTER DOUBLE O
+ A69A          ; Uppercase # L&       CYRILLIC CAPITAL LETTER CROSSED O
+ A722          ; Uppercase # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+ A724          ; Uppercase # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+ A726          ; Uppercase # L&       LATIN CAPITAL LETTER HENG
+ A728          ; Uppercase # L&       LATIN CAPITAL LETTER TZ
+ A72A          ; Uppercase # L&       LATIN CAPITAL LETTER TRESILLO
+ A72C          ; Uppercase # L&       LATIN CAPITAL LETTER CUATRILLO
+ A72E          ; Uppercase # L&       LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+ A732          ; Uppercase # L&       LATIN CAPITAL LETTER AA
+ A734          ; Uppercase # L&       LATIN CAPITAL LETTER AO
+ A736          ; Uppercase # L&       LATIN CAPITAL LETTER AU
+ A738          ; Uppercase # L&       LATIN CAPITAL LETTER AV
+ A73A          ; Uppercase # L&       LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+ A73C          ; Uppercase # L&       LATIN CAPITAL LETTER AY
+ A73E          ; Uppercase # L&       LATIN CAPITAL LETTER REVERSED C WITH DOT
+ A740          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH STROKE
+ A742          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+ A744          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A746          ; Uppercase # L&       LATIN CAPITAL LETTER BROKEN L
+ A748          ; Uppercase # L&       LATIN CAPITAL LETTER L WITH HIGH STROKE
+ A74A          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+ A74C          ; Uppercase # L&       LATIN CAPITAL LETTER O WITH LOOP
+ A74E          ; Uppercase # L&       LATIN CAPITAL LETTER OO
+ A750          ; Uppercase # L&       LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+ A752          ; Uppercase # L&       LATIN CAPITAL LETTER P WITH FLOURISH
+ A754          ; Uppercase # L&       LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+ A756          ; Uppercase # L&       LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+ A758          ; Uppercase # L&       LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+ A75A          ; Uppercase # L&       LATIN CAPITAL LETTER R ROTUNDA
+ A75C          ; Uppercase # L&       LATIN CAPITAL LETTER RUM ROTUNDA
+ A75E          ; Uppercase # L&       LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+ A760          ; Uppercase # L&       LATIN CAPITAL LETTER VY
+ A762          ; Uppercase # L&       LATIN CAPITAL LETTER VISIGOTHIC Z
+ A764          ; Uppercase # L&       LATIN CAPITAL LETTER THORN WITH STROKE
+ A766          ; Uppercase # L&       LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A768          ; Uppercase # L&       LATIN CAPITAL LETTER VEND
+ A76A          ; Uppercase # L&       LATIN CAPITAL LETTER ET
+ A76C          ; Uppercase # L&       LATIN CAPITAL LETTER IS
+ A76E          ; Uppercase # L&       LATIN CAPITAL LETTER CON
+ A779          ; Uppercase # L&       LATIN CAPITAL LETTER INSULAR D
+ A77B          ; Uppercase # L&       LATIN CAPITAL LETTER INSULAR F
+ A77D..A77E    ; Uppercase # L&   [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G
+ A780          ; Uppercase # L&       LATIN CAPITAL LETTER TURNED L
+ A782          ; Uppercase # L&       LATIN CAPITAL LETTER INSULAR R
+ A784          ; Uppercase # L&       LATIN CAPITAL LETTER INSULAR S
+ A786          ; Uppercase # L&       LATIN CAPITAL LETTER INSULAR T
+ A78B          ; Uppercase # L&       LATIN CAPITAL LETTER SALTILLO
+ A78D          ; Uppercase # L&       LATIN CAPITAL LETTER TURNED H
+ A790          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH DESCENDER
+ A792          ; Uppercase # L&       LATIN CAPITAL LETTER C WITH BAR
+ A796          ; Uppercase # L&       LATIN CAPITAL LETTER B WITH FLOURISH
+ A798          ; Uppercase # L&       LATIN CAPITAL LETTER F WITH STROKE
+ A79A          ; Uppercase # L&       LATIN CAPITAL LETTER VOLAPUK AE
+ A79C          ; Uppercase # L&       LATIN CAPITAL LETTER VOLAPUK OE
+ A79E          ; Uppercase # L&       LATIN CAPITAL LETTER VOLAPUK UE
+ A7A0          ; Uppercase # L&       LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+ A7A2          ; Uppercase # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+ A7A4          ; Uppercase # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+ A7A6          ; Uppercase # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+ A7A8          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+ A7AA..A7AE    ; Uppercase # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
+ A7B0..A7B4    ; Uppercase # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
+ A7B6          ; Uppercase # L&       LATIN CAPITAL LETTER OMEGA
+ A7B8          ; Uppercase # L&       LATIN CAPITAL LETTER U WITH STROKE
+ A7BA          ; Uppercase # L&       LATIN CAPITAL LETTER GLOTTAL A
+ A7BC          ; Uppercase # L&       LATIN CAPITAL LETTER GLOTTAL I
+ A7BE          ; Uppercase # L&       LATIN CAPITAL LETTER GLOTTAL U
+ A7C0          ; Uppercase # L&       LATIN CAPITAL LETTER OLD POLISH O
+ A7C2          ; Uppercase # L&       LATIN CAPITAL LETTER ANGLICANA W
+ A7C4..A7C7    ; Uppercase # L&   [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+ A7C9          ; Uppercase # L&       LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0          ; Uppercase # L&       LATIN CAPITAL LETTER CLOSED INSULAR G
+ A7D6          ; Uppercase # L&       LATIN CAPITAL LETTER MIDDLE SCOTS S
+ A7D8          ; Uppercase # L&       LATIN CAPITAL LETTER SIGMOID S
+ A7F5          ; Uppercase # L&       LATIN CAPITAL LETTER REVERSED HALF H
+ FF21..FF3A    ; Uppercase # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ 10400..10427  ; Uppercase # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+ 104B0..104D3  ; Uppercase # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 10570..1057A  ; Uppercase # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Uppercase # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Uppercase # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Uppercase # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10C80..10CB2  ; Uppercase # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 118A0..118BF  ; Uppercase # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
+ 16E40..16E5F  ; Uppercase # L&  [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
+ 1D400..1D419  ; Uppercase # L&  [26] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL BOLD CAPITAL Z
+ 1D434..1D44D  ; Uppercase # L&  [26] MATHEMATICAL ITALIC CAPITAL A..MATHEMATICAL ITALIC CAPITAL Z
+ 1D468..1D481  ; Uppercase # L&  [26] MATHEMATICAL BOLD ITALIC CAPITAL A..MATHEMATICAL BOLD ITALIC CAPITAL Z
+ 1D49C         ; Uppercase # L&       MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; Uppercase # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; Uppercase # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; Uppercase # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; Uppercase # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B5  ; Uppercase # L&   [8] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT CAPITAL Z
+ 1D4D0..1D4E9  ; Uppercase # L&  [26] MATHEMATICAL BOLD SCRIPT CAPITAL A..MATHEMATICAL BOLD SCRIPT CAPITAL Z
+ 1D504..1D505  ; Uppercase # L&   [2] MATHEMATICAL FRAKTUR CAPITAL A..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; Uppercase # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; Uppercase # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; Uppercase # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D538..1D539  ; Uppercase # L&   [2] MATHEMATICAL DOUBLE-STRUCK CAPITAL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; Uppercase # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; Uppercase # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; Uppercase # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; Uppercase # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D56C..1D585  ; Uppercase # L&  [26] MATHEMATICAL BOLD FRAKTUR CAPITAL A..MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+ 1D5A0..1D5B9  ; Uppercase # L&  [26] MATHEMATICAL SANS-SERIF CAPITAL A..MATHEMATICAL SANS-SERIF CAPITAL Z
+ 1D5D4..1D5ED  ; Uppercase # L&  [26] MATHEMATICAL SANS-SERIF BOLD CAPITAL A..MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+ 1D608..1D621  ; Uppercase # L&  [26] MATHEMATICAL SANS-SERIF ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+ 1D63C..1D655  ; Uppercase # L&  [26] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+ 1D670..1D689  ; Uppercase # L&  [26] MATHEMATICAL MONOSPACE CAPITAL A..MATHEMATICAL MONOSPACE CAPITAL Z
+ 1D6A8..1D6C0  ; Uppercase # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6E2..1D6FA  ; Uppercase # L&  [25] MATHEMATICAL ITALIC CAPITAL ALPHA..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D71C..1D734  ; Uppercase # L&  [25] MATHEMATICAL BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D756..1D76E  ; Uppercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D790..1D7A8  ; Uppercase # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7CA         ; Uppercase # L&       MATHEMATICAL BOLD CAPITAL DIGAMMA
+ 1E900..1E921  ; Uppercase # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
+ 1F130..1F149  ; Uppercase # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
+ 1F150..1F169  ; Uppercase # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+ 1F170..1F189  ; Uppercase # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+ 
+ # Total code points: 1951
+ 
+ # ================================================
+ 
+ # Derived Property:   Cased (Cased)
+ #  As defined by Unicode Standard Definition D135
+ #  C has the Lowercase or Uppercase property or has a General_Category value of Titlecase_Letter.
+ 
+ 0041..005A    ; Cased # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 0061..007A    ; Cased # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; Cased # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; Cased # L&       MICRO SIGN
+ 00BA          ; Cased # Lo       MASCULINE ORDINAL INDICATOR
+ 00C0..00D6    ; Cased # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; Cased # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..01BA    ; Cased # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BC..01BF    ; Cased # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C4..0293    ; Cased # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0295..02AF    ; Cased # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02B8    ; Cased # Lm   [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+ 02C0..02C1    ; Cased # Lm   [2] MODIFIER LETTER GLOTTAL STOP..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02E0..02E4    ; Cased # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 0345          ; Cased # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0370..0373    ; Cased # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0376..0377    ; Cased # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; Cased # Lm       GREEK YPOGEGRAMMENI
+ 037B..037D    ; Cased # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; Cased # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; Cased # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Cased # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Cased # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; Cased # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; Cased # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F7..0481    ; Cased # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 048A..052F    ; Cased # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; Cased # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0560..0588    ; Cased # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 10A0..10C5    ; Cased # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Cased # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Cased # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; Cased # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; Cased # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; Cased # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 13A0..13F5    ; Cased # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; Cased # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1C80..1C88    ; Cased # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; Cased # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Cased # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1D00..1D2B    ; Cased # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; Cased # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; Cased # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; Cased # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; Cased # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; Cased # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E00..1F15    ; Cased # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; Cased # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; Cased # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; Cased # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Cased # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; Cased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Cased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Cased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; Cased # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Cased # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; Cased # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; Cased # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; Cased # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; Cased # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; Cased # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; Cased # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; Cased # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; Cased # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; Cased # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2071          ; Cased # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; Cased # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; Cased # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 2102          ; Cased # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; Cased # L&       EULER CONSTANT
+ 210A..2113    ; Cased # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; Cased # L&       DOUBLE-STRUCK CAPITAL N
+ 2119..211D    ; Cased # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; Cased # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; Cased # L&       OHM SIGN
+ 2128          ; Cased # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; Cased # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212F..2134    ; Cased # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2139          ; Cased # L&       INFORMATION SOURCE
+ 213C..213F    ; Cased # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2145..2149    ; Cased # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; Cased # L&       TURNED SMALL F
+ 2160..217F    ; Cased # Nl  [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2183..2184    ; Cased # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 24B6..24E9    ; Cased # So  [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 2C00..2C7B    ; Cased # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; Cased # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; Cased # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CEB..2CEE    ; Cased # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2..2CF3    ; Cased # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; Cased # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Cased # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Cased # L&       GEORGIAN SMALL LETTER AEN
+ A640..A66D    ; Cased # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A680..A69B    ; Cased # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; Cased # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A722..A76F    ; Cased # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; Cased # Lm       MODIFIER LETTER US
+ A771..A787    ; Cased # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A78B..A78E    ; Cased # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A790..A7CA    ; Cased # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; Cased # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; Cased # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; Cased # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; Cased # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; Cased # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F8..A7F9    ; Cased # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; Cased # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ AB30..AB5A    ; Cased # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; Cased # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; Cased # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; Cased # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; Cased # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ FB00..FB06    ; Cased # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Cased # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FF21..FF3A    ; Cased # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF41..FF5A    ; Cased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ 10400..1044F  ; Cased # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 104B0..104D3  ; Cased # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; Cased # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10570..1057A  ; Cased # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Cased # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Cased # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Cased # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; Cased # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Cased # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Cased # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Cased # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10780         ; Cased # Lm       MODIFIER LETTER SMALL CAPITAL AA
+ 10783..10785  ; Cased # Lm   [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Cased # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Cased # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10C80..10CB2  ; Cased # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; Cased # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 118A0..118DF  ; Cased # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 16E40..16E7F  ; Cased # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 1D400..1D454  ; Cased # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; Cased # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; Cased # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; Cased # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; Cased # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; Cased # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; Cased # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; Cased # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; Cased # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; Cased # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; Cased # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; Cased # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; Cased # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; Cased # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; Cased # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; Cased # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; Cased # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; Cased # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; Cased # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; Cased # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C2..1D6DA  ; Cased # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6FA  ; Cased # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FC..1D714  ; Cased # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D734  ; Cased # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D736..1D74E  ; Cased # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D76E  ; Cased # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D770..1D788  ; Cased # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D7A8  ; Cased # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7AA..1D7C2  ; Cased # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7CB  ; Cased # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1DF00..1DF09  ; Cased # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0B..1DF1E  ; Cased # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; Cased # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E030..1E06D  ; Cased # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E900..1E943  ; Cased # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1F130..1F149  ; Cased # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
+ 1F150..1F169  ; Cased # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
+ 1F170..1F189  ; Cased # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
+ 
+ # Total code points: 4526
+ 
+ # ================================================
+ 
+ # Derived Property:   Case_Ignorable (CI)
+ #  As defined by Unicode Standard Definition D136
+ #  C is defined to be case-ignorable if
+ #    Word_Break(C) = MidLetter or MidNumLet or Single_Quote, or
+ #    General_Category(C) = Nonspacing_Mark (Mn), Enclosing_Mark (Me), Format (Cf), Modifier_Letter (Lm), or Modifier_Symbol (Sk).
+ 
+ 0027          ; Case_Ignorable # Po       APOSTROPHE
+ 002E          ; Case_Ignorable # Po       FULL STOP
+ 003A          ; Case_Ignorable # Po       COLON
+ 005E          ; Case_Ignorable # Sk       CIRCUMFLEX ACCENT
+ 0060          ; Case_Ignorable # Sk       GRAVE ACCENT
+ 00A8          ; Case_Ignorable # Sk       DIAERESIS
+ 00AD          ; Case_Ignorable # Cf       SOFT HYPHEN
+ 00AF          ; Case_Ignorable # Sk       MACRON
+ 00B4          ; Case_Ignorable # Sk       ACUTE ACCENT
+ 00B7          ; Case_Ignorable # Po       MIDDLE DOT
+ 00B8          ; Case_Ignorable # Sk       CEDILLA
+ 02B0..02C1    ; Case_Ignorable # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C2..02C5    ; Case_Ignorable # Sk   [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+ 02C6..02D1    ; Case_Ignorable # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02D2..02DF    ; Case_Ignorable # Sk  [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+ 02E0..02E4    ; Case_Ignorable # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02E5..02EB    ; Case_Ignorable # Sk   [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
+ 02EC          ; Case_Ignorable # Lm       MODIFIER LETTER VOICING
+ 02ED          ; Case_Ignorable # Sk       MODIFIER LETTER UNASPIRATED
+ 02EE          ; Case_Ignorable # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 02EF..02FF    ; Case_Ignorable # Sk  [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+ 0300..036F    ; Case_Ignorable # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+ 0374          ; Case_Ignorable # Lm       GREEK NUMERAL SIGN
+ 0375          ; Case_Ignorable # Sk       GREEK LOWER NUMERAL SIGN
+ 037A          ; Case_Ignorable # Lm       GREEK YPOGEGRAMMENI
+ 0384..0385    ; Case_Ignorable # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0387          ; Case_Ignorable # Po       GREEK ANO TELEIA
+ 0483..0487    ; Case_Ignorable # Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+ 0488..0489    ; Case_Ignorable # Me   [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+ 0559          ; Case_Ignorable # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 055F          ; Case_Ignorable # Po       ARMENIAN ABBREVIATION MARK
+ 0591..05BD    ; Case_Ignorable # Mn  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+ 05BF          ; Case_Ignorable # Mn       HEBREW POINT RAFE
+ 05C1..05C2    ; Case_Ignorable # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+ 05C4..05C5    ; Case_Ignorable # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+ 05C7          ; Case_Ignorable # Mn       HEBREW POINT QAMATS QATAN
+ 05F4          ; Case_Ignorable # Po       HEBREW PUNCTUATION GERSHAYIM
+ 0600..0605    ; Case_Ignorable # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
+ 0610..061A    ; Case_Ignorable # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+ 061C          ; Case_Ignorable # Cf       ARABIC LETTER MARK
+ 0640          ; Case_Ignorable # Lm       ARABIC TATWEEL
+ 064B..065F    ; Case_Ignorable # Mn  [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+ 0670          ; Case_Ignorable # Mn       ARABIC LETTER SUPERSCRIPT ALEF
+ 06D6..06DC    ; Case_Ignorable # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+ 06DD          ; Case_Ignorable # Cf       ARABIC END OF AYAH
+ 06DF..06E4    ; Case_Ignorable # Mn   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+ 06E5..06E6    ; Case_Ignorable # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06E7..06E8    ; Case_Ignorable # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+ 06EA..06ED    ; Case_Ignorable # Mn   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+ 070F          ; Case_Ignorable # Cf       SYRIAC ABBREVIATION MARK
+ 0711          ; Case_Ignorable # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
+ 0730..074A    ; Case_Ignorable # Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+ 07A6..07B0    ; Case_Ignorable # Mn  [11] THAANA ABAFILI..THAANA SUKUN
+ 07EB..07F3    ; Case_Ignorable # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+ 07F4..07F5    ; Case_Ignorable # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07FA          ; Case_Ignorable # Lm       NKO LAJANYALAN
+ 07FD          ; Case_Ignorable # Mn       NKO DANTAYALAN
+ 0816..0819    ; Case_Ignorable # Mn   [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+ 081A          ; Case_Ignorable # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 081B..0823    ; Case_Ignorable # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+ 0824          ; Case_Ignorable # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0825..0827    ; Case_Ignorable # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+ 0828          ; Case_Ignorable # Lm       SAMARITAN MODIFIER LETTER I
+ 0829..082D    ; Case_Ignorable # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+ 0859..085B    ; Case_Ignorable # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+ 0888          ; Case_Ignorable # Sk       ARABIC RAISED ROUND DOT
+ 0890..0891    ; Case_Ignorable # Cf   [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
+ 0898..089F    ; Case_Ignorable # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+ 08C9          ; Case_Ignorable # Lm       ARABIC SMALL FARSI YEH
+ 08CA..08E1    ; Case_Ignorable # Mn  [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
+ 08E2          ; Case_Ignorable # Cf       ARABIC DISPUTED END OF AYAH
+ 08E3..0902    ; Case_Ignorable # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+ 093A          ; Case_Ignorable # Mn       DEVANAGARI VOWEL SIGN OE
+ 093C          ; Case_Ignorable # Mn       DEVANAGARI SIGN NUKTA
+ 0941..0948    ; Case_Ignorable # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+ 094D          ; Case_Ignorable # Mn       DEVANAGARI SIGN VIRAMA
+ 0951..0957    ; Case_Ignorable # Mn   [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+ 0962..0963    ; Case_Ignorable # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+ 0971          ; Case_Ignorable # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0981          ; Case_Ignorable # Mn       BENGALI SIGN CANDRABINDU
+ 09BC          ; Case_Ignorable # Mn       BENGALI SIGN NUKTA
+ 09C1..09C4    ; Case_Ignorable # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+ 09CD          ; Case_Ignorable # Mn       BENGALI SIGN VIRAMA
+ 09E2..09E3    ; Case_Ignorable # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+ 09FE          ; Case_Ignorable # Mn       BENGALI SANDHI MARK
+ 0A01..0A02    ; Case_Ignorable # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+ 0A3C          ; Case_Ignorable # Mn       GURMUKHI SIGN NUKTA
+ 0A41..0A42    ; Case_Ignorable # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+ 0A47..0A48    ; Case_Ignorable # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+ 0A4B..0A4D    ; Case_Ignorable # Mn   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+ 0A51          ; Case_Ignorable # Mn       GURMUKHI SIGN UDAAT
+ 0A70..0A71    ; Case_Ignorable # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+ 0A75          ; Case_Ignorable # Mn       GURMUKHI SIGN YAKASH
+ 0A81..0A82    ; Case_Ignorable # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+ 0ABC          ; Case_Ignorable # Mn       GUJARATI SIGN NUKTA
+ 0AC1..0AC5    ; Case_Ignorable # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+ 0AC7..0AC8    ; Case_Ignorable # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+ 0ACD          ; Case_Ignorable # Mn       GUJARATI SIGN VIRAMA
+ 0AE2..0AE3    ; Case_Ignorable # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+ 0AFA..0AFF    ; Case_Ignorable # Mn   [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+ 0B01          ; Case_Ignorable # Mn       ORIYA SIGN CANDRABINDU
+ 0B3C          ; Case_Ignorable # Mn       ORIYA SIGN NUKTA
+ 0B3F          ; Case_Ignorable # Mn       ORIYA VOWEL SIGN I
+ 0B41..0B44    ; Case_Ignorable # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+ 0B4D          ; Case_Ignorable # Mn       ORIYA SIGN VIRAMA
+ 0B55..0B56    ; Case_Ignorable # Mn   [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+ 0B62..0B63    ; Case_Ignorable # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+ 0B82          ; Case_Ignorable # Mn       TAMIL SIGN ANUSVARA
+ 0BC0          ; Case_Ignorable # Mn       TAMIL VOWEL SIGN II
+ 0BCD          ; Case_Ignorable # Mn       TAMIL SIGN VIRAMA
+ 0C00          ; Case_Ignorable # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
+ 0C04          ; Case_Ignorable # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
+ 0C3C          ; Case_Ignorable # Mn       TELUGU SIGN NUKTA
+ 0C3E..0C40    ; Case_Ignorable # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+ 0C46..0C48    ; Case_Ignorable # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+ 0C4A..0C4D    ; Case_Ignorable # Mn   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+ 0C55..0C56    ; Case_Ignorable # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+ 0C62..0C63    ; Case_Ignorable # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+ 0C81          ; Case_Ignorable # Mn       KANNADA SIGN CANDRABINDU
+ 0CBC          ; Case_Ignorable # Mn       KANNADA SIGN NUKTA
+ 0CBF          ; Case_Ignorable # Mn       KANNADA VOWEL SIGN I
+ 0CC6          ; Case_Ignorable # Mn       KANNADA VOWEL SIGN E
+ 0CCC..0CCD    ; Case_Ignorable # Mn   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+ 0CE2..0CE3    ; Case_Ignorable # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+ 0D00..0D01    ; Case_Ignorable # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+ 0D3B..0D3C    ; Case_Ignorable # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+ 0D41..0D44    ; Case_Ignorable # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+ 0D4D          ; Case_Ignorable # Mn       MALAYALAM SIGN VIRAMA
+ 0D62..0D63    ; Case_Ignorable # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+ 0D81          ; Case_Ignorable # Mn       SINHALA SIGN CANDRABINDU
+ 0DCA          ; Case_Ignorable # Mn       SINHALA SIGN AL-LAKUNA
+ 0DD2..0DD4    ; Case_Ignorable # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+ 0DD6          ; Case_Ignorable # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
+ 0E31          ; Case_Ignorable # Mn       THAI CHARACTER MAI HAN-AKAT
+ 0E34..0E3A    ; Case_Ignorable # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+ 0E46          ; Case_Ignorable # Lm       THAI CHARACTER MAIYAMOK
+ 0E47..0E4E    ; Case_Ignorable # Mn   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+ 0EB1          ; Case_Ignorable # Mn       LAO VOWEL SIGN MAI KAN
+ 0EB4..0EBC    ; Case_Ignorable # Mn   [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+ 0EC6          ; Case_Ignorable # Lm       LAO KO LA
+ 0EC8..0ECE    ; Case_Ignorable # Mn   [7] LAO TONE MAI EK..LAO YAMAKKAN
+ 0F18..0F19    ; Case_Ignorable # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+ 0F35          ; Case_Ignorable # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA
+ 0F37          ; Case_Ignorable # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS
+ 0F39          ; Case_Ignorable # Mn       TIBETAN MARK TSA -PHRU
+ 0F71..0F7E    ; Case_Ignorable # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+ 0F80..0F84    ; Case_Ignorable # Mn   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+ 0F86..0F87    ; Case_Ignorable # Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+ 0F8D..0F97    ; Case_Ignorable # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+ 0F99..0FBC    ; Case_Ignorable # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+ 0FC6          ; Case_Ignorable # Mn       TIBETAN SYMBOL PADMA GDAN
+ 102D..1030    ; Case_Ignorable # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+ 1032..1037    ; Case_Ignorable # Mn   [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+ 1039..103A    ; Case_Ignorable # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+ 103D..103E    ; Case_Ignorable # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+ 1058..1059    ; Case_Ignorable # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+ 105E..1060    ; Case_Ignorable # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+ 1071..1074    ; Case_Ignorable # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+ 1082          ; Case_Ignorable # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+ 1085..1086    ; Case_Ignorable # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+ 108D          ; Case_Ignorable # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+ 109D          ; Case_Ignorable # Mn       MYANMAR VOWEL SIGN AITON AI
+ 10FC          ; Case_Ignorable # Lm       MODIFIER LETTER GEORGIAN NAR
+ 135D..135F    ; Case_Ignorable # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+ 1712..1714    ; Case_Ignorable # Mn   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+ 1732..1733    ; Case_Ignorable # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+ 1752..1753    ; Case_Ignorable # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+ 1772..1773    ; Case_Ignorable # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+ 17B4..17B5    ; Case_Ignorable # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 17B7..17BD    ; Case_Ignorable # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+ 17C6          ; Case_Ignorable # Mn       KHMER SIGN NIKAHIT
+ 17C9..17D3    ; Case_Ignorable # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+ 17D7          ; Case_Ignorable # Lm       KHMER SIGN LEK TOO
+ 17DD          ; Case_Ignorable # Mn       KHMER SIGN ATTHACAN
+ 180B..180D    ; Case_Ignorable # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180E          ; Case_Ignorable # Cf       MONGOLIAN VOWEL SEPARATOR
+ 180F          ; Case_Ignorable # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 1843          ; Case_Ignorable # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1885..1886    ; Case_Ignorable # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 18A9          ; Case_Ignorable # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
+ 1920..1922    ; Case_Ignorable # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+ 1927..1928    ; Case_Ignorable # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+ 1932          ; Case_Ignorable # Mn       LIMBU SMALL LETTER ANUSVARA
+ 1939..193B    ; Case_Ignorable # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+ 1A17..1A18    ; Case_Ignorable # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+ 1A1B          ; Case_Ignorable # Mn       BUGINESE VOWEL SIGN AE
+ 1A56          ; Case_Ignorable # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
+ 1A58..1A5E    ; Case_Ignorable # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+ 1A60          ; Case_Ignorable # Mn       TAI THAM SIGN SAKOT
+ 1A62          ; Case_Ignorable # Mn       TAI THAM VOWEL SIGN MAI SAT
+ 1A65..1A6C    ; Case_Ignorable # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+ 1A73..1A7C    ; Case_Ignorable # Mn  [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+ 1A7F          ; Case_Ignorable # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
+ 1AA7          ; Case_Ignorable # Lm       TAI THAM SIGN MAI YAMOK
+ 1AB0..1ABD    ; Case_Ignorable # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+ 1ABE          ; Case_Ignorable # Me       COMBINING PARENTHESES OVERLAY
+ 1ABF..1ACE    ; Case_Ignorable # Mn  [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+ 1B00..1B03    ; Case_Ignorable # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+ 1B34          ; Case_Ignorable # Mn       BALINESE SIGN REREKAN
+ 1B36..1B3A    ; Case_Ignorable # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+ 1B3C          ; Case_Ignorable # Mn       BALINESE VOWEL SIGN LA LENGA
+ 1B42          ; Case_Ignorable # Mn       BALINESE VOWEL SIGN PEPET
+ 1B6B..1B73    ; Case_Ignorable # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+ 1B80..1B81    ; Case_Ignorable # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+ 1BA2..1BA5    ; Case_Ignorable # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+ 1BA8..1BA9    ; Case_Ignorable # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+ 1BAB..1BAD    ; Case_Ignorable # Mn   [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+ 1BE6          ; Case_Ignorable # Mn       BATAK SIGN TOMPI
+ 1BE8..1BE9    ; Case_Ignorable # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+ 1BED          ; Case_Ignorable # Mn       BATAK VOWEL SIGN KARO O
+ 1BEF..1BF1    ; Case_Ignorable # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+ 1C2C..1C33    ; Case_Ignorable # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+ 1C36..1C37    ; Case_Ignorable # Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+ 1C78..1C7D    ; Case_Ignorable # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1CD0..1CD2    ; Case_Ignorable # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+ 1CD4..1CE0    ; Case_Ignorable # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+ 1CE2..1CE8    ; Case_Ignorable # Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+ 1CED          ; Case_Ignorable # Mn       VEDIC SIGN TIRYAK
+ 1CF4          ; Case_Ignorable # Mn       VEDIC TONE CANDRA ABOVE
+ 1CF8..1CF9    ; Case_Ignorable # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+ 1D2C..1D6A    ; Case_Ignorable # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D78          ; Case_Ignorable # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D9B..1DBF    ; Case_Ignorable # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1DC0..1DFF    ; Case_Ignorable # Mn  [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+ 1FBD          ; Case_Ignorable # Sk       GREEK KORONIS
+ 1FBF..1FC1    ; Case_Ignorable # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FCD..1FCF    ; Case_Ignorable # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FDD..1FDF    ; Case_Ignorable # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FED..1FEF    ; Case_Ignorable # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+ 1FFD..1FFE    ; Case_Ignorable # Sk   [2] GREEK OXIA..GREEK DASIA
+ 200B..200F    ; Case_Ignorable # Cf   [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ 2018          ; Case_Ignorable # Pi       LEFT SINGLE QUOTATION MARK
+ 2019          ; Case_Ignorable # Pf       RIGHT SINGLE QUOTATION MARK
+ 2024          ; Case_Ignorable # Po       ONE DOT LEADER
+ 2027          ; Case_Ignorable # Po       HYPHENATION POINT
+ 202A..202E    ; Case_Ignorable # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ 2060..2064    ; Case_Ignorable # Cf   [5] WORD JOINER..INVISIBLE PLUS
+ 2066..206F    ; Case_Ignorable # Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+ 2071          ; Case_Ignorable # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; Case_Ignorable # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; Case_Ignorable # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20D0..20DC    ; Case_Ignorable # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+ 20DD..20E0    ; Case_Ignorable # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+ 20E1          ; Case_Ignorable # Mn       COMBINING LEFT RIGHT ARROW ABOVE
+ 20E2..20E4    ; Case_Ignorable # Me   [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+ 20E5..20F0    ; Case_Ignorable # Mn  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+ 2C7C..2C7D    ; Case_Ignorable # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2CEF..2CF1    ; Case_Ignorable # Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+ 2D6F          ; Case_Ignorable # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D7F          ; Case_Ignorable # Mn       TIFINAGH CONSONANT JOINER
+ 2DE0..2DFF    ; Case_Ignorable # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+ 2E2F          ; Case_Ignorable # Lm       VERTICAL TILDE
+ 3005          ; Case_Ignorable # Lm       IDEOGRAPHIC ITERATION MARK
+ 302A..302D    ; Case_Ignorable # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+ 3031..3035    ; Case_Ignorable # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 303B          ; Case_Ignorable # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 3099..309A    ; Case_Ignorable # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309B..309C    ; Case_Ignorable # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309D..309E    ; Case_Ignorable # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 30FC..30FE    ; Case_Ignorable # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ A015          ; Case_Ignorable # Lm       YI SYLLABLE WU
+ A4F8..A4FD    ; Case_Ignorable # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A60C          ; Case_Ignorable # Lm       VAI SYLLABLE LENGTHENER
+ A66F          ; Case_Ignorable # Mn       COMBINING CYRILLIC VZMET
+ A670..A672    ; Case_Ignorable # Me   [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+ A674..A67D    ; Case_Ignorable # Mn  [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+ A67F          ; Case_Ignorable # Lm       CYRILLIC PAYEROK
+ A69C..A69D    ; Case_Ignorable # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A69E..A69F    ; Case_Ignorable # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+ A6F0..A6F1    ; Case_Ignorable # Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+ A700..A716    ; Case_Ignorable # Sk  [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+ A717..A71F    ; Case_Ignorable # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A720..A721    ; Case_Ignorable # Sk   [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+ A770          ; Case_Ignorable # Lm       MODIFIER LETTER US
+ A788          ; Case_Ignorable # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A789..A78A    ; Case_Ignorable # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
+ A7F2..A7F4    ; Case_Ignorable # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F8..A7F9    ; Case_Ignorable # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A802          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN DVISVARA
+ A806          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN HASANTA
+ A80B          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN ANUSVARA
+ A825..A826    ; Case_Ignorable # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+ A82C          ; Case_Ignorable # Mn       SYLOTI NAGRI SIGN ALTERNATE HASANTA
+ A8C4..A8C5    ; Case_Ignorable # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+ A8E0..A8F1    ; Case_Ignorable # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+ A8FF          ; Case_Ignorable # Mn       DEVANAGARI VOWEL SIGN AY
+ A926..A92D    ; Case_Ignorable # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+ A947..A951    ; Case_Ignorable # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+ A980..A982    ; Case_Ignorable # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+ A9B3          ; Case_Ignorable # Mn       JAVANESE SIGN CECAK TELU
+ A9B6..A9B9    ; Case_Ignorable # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+ A9BC..A9BD    ; Case_Ignorable # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+ A9CF          ; Case_Ignorable # Lm       JAVANESE PANGRANGKEP
+ A9E5          ; Case_Ignorable # Mn       MYANMAR SIGN SHAN SAW
+ A9E6          ; Case_Ignorable # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ AA29..AA2E    ; Case_Ignorable # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+ AA31..AA32    ; Case_Ignorable # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+ AA35..AA36    ; Case_Ignorable # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+ AA43          ; Case_Ignorable # Mn       CHAM CONSONANT SIGN FINAL NG
+ AA4C          ; Case_Ignorable # Mn       CHAM CONSONANT SIGN FINAL M
+ AA70          ; Case_Ignorable # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA7C          ; Case_Ignorable # Mn       MYANMAR SIGN TAI LAING TONE-2
+ AAB0          ; Case_Ignorable # Mn       TAI VIET MAI KANG
+ AAB2..AAB4    ; Case_Ignorable # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+ AAB7..AAB8    ; Case_Ignorable # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+ AABE..AABF    ; Case_Ignorable # Mn   [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+ AAC1          ; Case_Ignorable # Mn       TAI VIET TONE MAI THO
+ AADD          ; Case_Ignorable # Lm       TAI VIET SYMBOL SAM
+ AAEC..AAED    ; Case_Ignorable # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+ AAF3..AAF4    ; Case_Ignorable # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AAF6          ; Case_Ignorable # Mn       MEETEI MAYEK VIRAMA
+ AB5B          ; Case_Ignorable # Sk       MODIFIER BREVE WITH INVERTED BREVE
+ AB5C..AB5F    ; Case_Ignorable # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; Case_Ignorable # Lm       MODIFIER LETTER SMALL TURNED W
+ AB6A..AB6B    ; Case_Ignorable # Sk   [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK
+ ABE5          ; Case_Ignorable # Mn       MEETEI MAYEK VOWEL SIGN ANAP
+ ABE8          ; Case_Ignorable # Mn       MEETEI MAYEK VOWEL SIGN UNAP
+ ABED          ; Case_Ignorable # Mn       MEETEI MAYEK APUN IYEK
+ FB1E          ; Case_Ignorable # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
+ FBB2..FBC2    ; Case_Ignorable # Sk  [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE
+ FE00..FE0F    ; Case_Ignorable # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FE13          ; Case_Ignorable # Po       PRESENTATION FORM FOR VERTICAL COLON
+ FE20..FE2F    ; Case_Ignorable # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+ FE52          ; Case_Ignorable # Po       SMALL FULL STOP
+ FE55          ; Case_Ignorable # Po       SMALL COLON
+ FEFF          ; Case_Ignorable # Cf       ZERO WIDTH NO-BREAK SPACE
+ FF07          ; Case_Ignorable # Po       FULLWIDTH APOSTROPHE
+ FF0E          ; Case_Ignorable # Po       FULLWIDTH FULL STOP
+ FF1A          ; Case_Ignorable # Po       FULLWIDTH COLON
+ FF3E          ; Case_Ignorable # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF40          ; Case_Ignorable # Sk       FULLWIDTH GRAVE ACCENT
+ FF70          ; Case_Ignorable # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF9E..FF9F    ; Case_Ignorable # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFE3          ; Case_Ignorable # Sk       FULLWIDTH MACRON
+ FFF9..FFFB    ; Case_Ignorable # Cf   [3] INTERLINEAR ANNOTATION ANCHOR..INTERLINEAR ANNOTATION TERMINATOR
+ 101FD         ; Case_Ignorable # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+ 102E0         ; Case_Ignorable # Mn       COPTIC EPACT THOUSANDS MARK
+ 10376..1037A  ; Case_Ignorable # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+ 10780..10785  ; Case_Ignorable # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Case_Ignorable # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Case_Ignorable # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10A01..10A03  ; Case_Ignorable # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+ 10A05..10A06  ; Case_Ignorable # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+ 10A0C..10A0F  ; Case_Ignorable # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+ 10A38..10A3A  ; Case_Ignorable # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+ 10A3F         ; Case_Ignorable # Mn       KHAROSHTHI VIRAMA
+ 10AE5..10AE6  ; Case_Ignorable # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+ 10D24..10D27  ; Case_Ignorable # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10EAB..10EAC  ; Case_Ignorable # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+ 10EFD..10EFF  ; Case_Ignorable # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+ 10F46..10F50  ; Case_Ignorable # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+ 10F82..10F85  ; Case_Ignorable # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+ 11001         ; Case_Ignorable # Mn       BRAHMI SIGN ANUSVARA
+ 11038..11046  ; Case_Ignorable # Mn  [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+ 11070         ; Case_Ignorable # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
+ 11073..11074  ; Case_Ignorable # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 1107F..11081  ; Case_Ignorable # Mn   [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+ 110B3..110B6  ; Case_Ignorable # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+ 110B9..110BA  ; Case_Ignorable # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+ 110BD         ; Case_Ignorable # Cf       KAITHI NUMBER SIGN
+ 110C2         ; Case_Ignorable # Mn       KAITHI VOWEL SIGN VOCALIC R
+ 110CD         ; Case_Ignorable # Cf       KAITHI NUMBER SIGN ABOVE
+ 11100..11102  ; Case_Ignorable # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+ 11127..1112B  ; Case_Ignorable # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+ 1112D..11134  ; Case_Ignorable # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+ 11173         ; Case_Ignorable # Mn       MAHAJANI SIGN NUKTA
+ 11180..11181  ; Case_Ignorable # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+ 111B6..111BE  ; Case_Ignorable # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+ 111C9..111CC  ; Case_Ignorable # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+ 111CF         ; Case_Ignorable # Mn       SHARADA SIGN INVERTED CANDRABINDU
+ 1122F..11231  ; Case_Ignorable # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+ 11234         ; Case_Ignorable # Mn       KHOJKI SIGN ANUSVARA
+ 11236..11237  ; Case_Ignorable # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+ 1123E         ; Case_Ignorable # Mn       KHOJKI SIGN SUKUN
+ 11241         ; Case_Ignorable # Mn       KHOJKI VOWEL SIGN VOCALIC R
+ 112DF         ; Case_Ignorable # Mn       KHUDAWADI SIGN ANUSVARA
+ 112E3..112EA  ; Case_Ignorable # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+ 11300..11301  ; Case_Ignorable # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+ 1133B..1133C  ; Case_Ignorable # Mn   [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+ 11340         ; Case_Ignorable # Mn       GRANTHA VOWEL SIGN II
+ 11366..1136C  ; Case_Ignorable # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+ 11370..11374  ; Case_Ignorable # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+ 11438..1143F  ; Case_Ignorable # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+ 11442..11444  ; Case_Ignorable # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+ 11446         ; Case_Ignorable # Mn       NEWA SIGN NUKTA
+ 1145E         ; Case_Ignorable # Mn       NEWA SANDHI MARK
+ 114B3..114B8  ; Case_Ignorable # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+ 114BA         ; Case_Ignorable # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BF..114C0  ; Case_Ignorable # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+ 114C2..114C3  ; Case_Ignorable # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+ 115B2..115B5  ; Case_Ignorable # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+ 115BC..115BD  ; Case_Ignorable # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+ 115BF..115C0  ; Case_Ignorable # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+ 115DC..115DD  ; Case_Ignorable # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+ 11633..1163A  ; Case_Ignorable # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+ 1163D         ; Case_Ignorable # Mn       MODI SIGN ANUSVARA
+ 1163F..11640  ; Case_Ignorable # Mn   [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+ 116AB         ; Case_Ignorable # Mn       TAKRI SIGN ANUSVARA
+ 116AD         ; Case_Ignorable # Mn       TAKRI VOWEL SIGN AA
+ 116B0..116B5  ; Case_Ignorable # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+ 116B7         ; Case_Ignorable # Mn       TAKRI SIGN NUKTA
+ 1171D..1171F  ; Case_Ignorable # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+ 11722..11725  ; Case_Ignorable # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+ 11727..1172B  ; Case_Ignorable # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+ 1182F..11837  ; Case_Ignorable # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+ 11839..1183A  ; Case_Ignorable # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+ 1193B..1193C  ; Case_Ignorable # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 1193E         ; Case_Ignorable # Mn       DIVES AKURU VIRAMA
+ 11943         ; Case_Ignorable # Mn       DIVES AKURU SIGN NUKTA
+ 119D4..119D7  ; Case_Ignorable # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+ 119DA..119DB  ; Case_Ignorable # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+ 119E0         ; Case_Ignorable # Mn       NANDINAGARI SIGN VIRAMA
+ 11A01..11A0A  ; Case_Ignorable # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+ 11A33..11A38  ; Case_Ignorable # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+ 11A3B..11A3E  ; Case_Ignorable # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+ 11A47         ; Case_Ignorable # Mn       ZANABAZAR SQUARE SUBJOINER
+ 11A51..11A56  ; Case_Ignorable # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+ 11A59..11A5B  ; Case_Ignorable # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+ 11A8A..11A96  ; Case_Ignorable # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+ 11A98..11A99  ; Case_Ignorable # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+ 11C30..11C36  ; Case_Ignorable # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+ 11C38..11C3D  ; Case_Ignorable # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+ 11C3F         ; Case_Ignorable # Mn       BHAIKSUKI SIGN VIRAMA
+ 11C92..11CA7  ; Case_Ignorable # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+ 11CAA..11CB0  ; Case_Ignorable # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+ 11CB2..11CB3  ; Case_Ignorable # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+ 11CB5..11CB6  ; Case_Ignorable # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+ 11D31..11D36  ; Case_Ignorable # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+ 11D3A         ; Case_Ignorable # Mn       MASARAM GONDI VOWEL SIGN E
+ 11D3C..11D3D  ; Case_Ignorable # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+ 11D3F..11D45  ; Case_Ignorable # Mn   [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+ 11D47         ; Case_Ignorable # Mn       MASARAM GONDI RA-KARA
+ 11D90..11D91  ; Case_Ignorable # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+ 11D95         ; Case_Ignorable # Mn       GUNJALA GONDI SIGN ANUSVARA
+ 11D97         ; Case_Ignorable # Mn       GUNJALA GONDI VIRAMA
+ 11EF3..11EF4  ; Case_Ignorable # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+ 11F00..11F01  ; Case_Ignorable # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F36..11F3A  ; Case_Ignorable # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F40         ; Case_Ignorable # Mn       KAWI VOWEL SIGN EU
+ 11F42         ; Case_Ignorable # Mn       KAWI CONJOINER
+ 13430..1343F  ; Case_Ignorable # Cf  [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
+ 13440         ; Case_Ignorable # Mn       EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+ 13447..13455  ; Case_Ignorable # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+ 16AF0..16AF4  ; Case_Ignorable # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+ 16B30..16B36  ; Case_Ignorable # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+ 16B40..16B43  ; Case_Ignorable # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16F4F         ; Case_Ignorable # Mn       MIAO SIGN CONSONANT MODIFIER BAR
+ 16F8F..16F92  ; Case_Ignorable # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+ 16F93..16F9F  ; Case_Ignorable # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; Case_Ignorable # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE3         ; Case_Ignorable # Lm       OLD CHINESE ITERATION MARK
+ 16FE4         ; Case_Ignorable # Mn       KHITAN SMALL SCRIPT FILLER
+ 1AFF0..1AFF3  ; Case_Ignorable # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; Case_Ignorable # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; Case_Ignorable # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1BC9D..1BC9E  ; Case_Ignorable # Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+ 1BCA0..1BCA3  ; Case_Ignorable # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ 1CF00..1CF2D  ; Case_Ignorable # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+ 1CF30..1CF46  ; Case_Ignorable # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+ 1D167..1D169  ; Case_Ignorable # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+ 1D173..1D17A  ; Case_Ignorable # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ 1D17B..1D182  ; Case_Ignorable # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+ 1D185..1D18B  ; Case_Ignorable # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+ 1D1AA..1D1AD  ; Case_Ignorable # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+ 1D242..1D244  ; Case_Ignorable # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+ 1DA00..1DA36  ; Case_Ignorable # Mn  [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+ 1DA3B..1DA6C  ; Case_Ignorable # Mn  [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+ 1DA75         ; Case_Ignorable # Mn       SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+ 1DA84         ; Case_Ignorable # Mn       SIGNWRITING LOCATION HEAD NECK
+ 1DA9B..1DA9F  ; Case_Ignorable # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+ 1DAA1..1DAAF  ; Case_Ignorable # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+ 1E000..1E006  ; Case_Ignorable # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+ 1E008..1E018  ; Case_Ignorable # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+ 1E01B..1E021  ; Case_Ignorable # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+ 1E023..1E024  ; Case_Ignorable # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+ 1E026..1E02A  ; Case_Ignorable # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E030..1E06D  ; Case_Ignorable # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E08F         ; Case_Ignorable # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 1E130..1E136  ; Case_Ignorable # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+ 1E137..1E13D  ; Case_Ignorable # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E2AE         ; Case_Ignorable # Mn       TOTO SIGN RISING TONE
+ 1E2EC..1E2EF  ; Case_Ignorable # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
+ 1E4EB         ; Case_Ignorable # Lm       NAG MUNDARI SIGN OJOD
+ 1E4EC..1E4EF  ; Case_Ignorable # Mn   [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+ 1E8D0..1E8D6  ; Case_Ignorable # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+ 1E944..1E94A  ; Case_Ignorable # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+ 1E94B         ; Case_Ignorable # Lm       ADLAM NASALIZATION MARK
+ 1F3FB..1F3FF  ; Case_Ignorable # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+ E0001         ; Case_Ignorable # Cf       LANGUAGE TAG
+ E0020..E007F  ; Case_Ignorable # Cf  [96] TAG SPACE..CANCEL TAG
+ E0100..E01EF  ; Case_Ignorable # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ 
+ # Total code points: 2707
+ 
+ # ================================================
+ 
+ # Derived Property:   Changes_When_Lowercased (CWL)
+ #  Characters whose normalized forms are not stable under a toLowercase mapping.
+ #  For more information, see D139 in Section 3.13, "Default Case Algorithms".
+ #  Changes_When_Lowercased(X) is true when toLowercase(toNFD(X)) != toNFD(X)
+ 
+ 0041..005A    ; Changes_When_Lowercased # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 00C0..00D6    ; Changes_When_Lowercased # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00DE    ; Changes_When_Lowercased # L&   [7] LATIN CAPITAL LETTER O WITH STROKE..LATIN CAPITAL LETTER THORN
+ 0100          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH MACRON
+ 0102          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH BREVE
+ 0104          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH OGONEK
+ 0106          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER C WITH ACUTE
+ 0108          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ 010A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER C WITH DOT ABOVE
+ 010C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER C WITH CARON
+ 010E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH CARON
+ 0110          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH STROKE
+ 0112          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH MACRON
+ 0114          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH BREVE
+ 0116          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH DOT ABOVE
+ 0118          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH OGONEK
+ 011A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CARON
+ 011C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ 011E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH BREVE
+ 0120          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH DOT ABOVE
+ 0122          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH CEDILLA
+ 0124          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ 0126          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH STROKE
+ 0128          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH TILDE
+ 012A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH MACRON
+ 012C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH BREVE
+ 012E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH OGONEK
+ 0130          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132          ; Changes_When_Lowercased # L&       LATIN CAPITAL LIGATURE IJ
+ 0134          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ 0136          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH CEDILLA
+ 0139          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH ACUTE
+ 013B          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH CEDILLA
+ 013D          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH CARON
+ 013F          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH MIDDLE DOT
+ 0141          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH STROKE
+ 0143          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH ACUTE
+ 0145          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH CEDILLA
+ 0147          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH CARON
+ 014A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER ENG
+ 014C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH MACRON
+ 014E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH BREVE
+ 0150          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ 0152          ; Changes_When_Lowercased # L&       LATIN CAPITAL LIGATURE OE
+ 0154          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH ACUTE
+ 0156          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH CEDILLA
+ 0158          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH CARON
+ 015A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH ACUTE
+ 015C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ 015E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH CEDILLA
+ 0160          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH CARON
+ 0162          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH CEDILLA
+ 0164          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH CARON
+ 0166          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH STROKE
+ 0168          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH TILDE
+ 016A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH MACRON
+ 016C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH BREVE
+ 016E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH RING ABOVE
+ 0170          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ 0172          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH OGONEK
+ 0174          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ 0176          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ 0178..0179    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+ 017B          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ 017D          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH CARON
+ 0181..0182    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+ 0184          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER TONE SIX
+ 0186..0187    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+ 0189..018B    ; Changes_When_Lowercased # L&   [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+ 018E..0191    ; Changes_When_Lowercased # L&   [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+ 0193..0194    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+ 0196..0198    ; Changes_When_Lowercased # L&   [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+ 019C..019D    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+ 019F..01A0    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+ 01A2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER OI
+ 01A4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER P WITH HOOK
+ 01A6..01A7    ; Changes_When_Lowercased # L&   [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+ 01A9          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER ESH
+ 01AC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH HOOK
+ 01AE..01AF    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+ 01B1..01B3    ; Changes_When_Lowercased # L&   [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+ 01B5          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH STROKE
+ 01B7..01B8    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+ 01BC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER TONE FIVE
+ 01C4..01C5    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+ 01C7..01C8    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J
+ 01CA..01CB    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J
+ 01CD          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH CARON
+ 01CF          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH CARON
+ 01D1          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH CARON
+ 01D3          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH CARON
+ 01D5          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+ 01D7          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+ 01D9          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ 01DB          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+ 01E0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+ 01E2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AE WITH MACRON
+ 01E4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH STROKE
+ 01E6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH CARON
+ 01E8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH CARON
+ 01EA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH OGONEK
+ 01EC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+ 01EE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER EZH WITH CARON
+ 01F1..01F2    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+ 01F4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH ACUTE
+ 01F6..01F8    ; Changes_When_Lowercased # L&   [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+ 01FA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ 01FC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AE WITH ACUTE
+ 01FE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ 0200          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+ 0202          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH INVERTED BREVE
+ 0204          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+ 0206          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH INVERTED BREVE
+ 0208          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+ 020A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH INVERTED BREVE
+ 020C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+ 020E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH INVERTED BREVE
+ 0210          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+ 0212          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH INVERTED BREVE
+ 0214          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+ 0216          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH INVERTED BREVE
+ 0218          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH COMMA BELOW
+ 021A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH COMMA BELOW
+ 021C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER YOGH
+ 021E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH CARON
+ 0220          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+ 0222          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER OU
+ 0224          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH HOOK
+ 0226          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE
+ 0228          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CEDILLA
+ 022A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+ 022C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+ 022E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE
+ 0230          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+ 0232          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH MACRON
+ 023A..023B    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+ 023D..023E    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+ 0241          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER GLOTTAL STOP
+ 0243..0246    ; Changes_When_Lowercased # L&   [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+ 0248          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER J WITH STROKE
+ 024A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+ 024C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH STROKE
+ 024E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH STROKE
+ 0370          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER HETA
+ 0372          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER ARCHAIC SAMPI
+ 0376          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+ 037F          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Changes_When_Lowercased # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..038F    ; Changes_When_Lowercased # L&   [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 0391..03A1    ; Changes_When_Lowercased # L&  [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+ 03A3..03AB    ; Changes_When_Lowercased # L&   [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 03CF          ; Changes_When_Lowercased # L&       GREEK CAPITAL KAI SYMBOL
+ 03D8          ; Changes_When_Lowercased # L&       GREEK LETTER ARCHAIC KOPPA
+ 03DA          ; Changes_When_Lowercased # L&       GREEK LETTER STIGMA
+ 03DC          ; Changes_When_Lowercased # L&       GREEK LETTER DIGAMMA
+ 03DE          ; Changes_When_Lowercased # L&       GREEK LETTER KOPPA
+ 03E0          ; Changes_When_Lowercased # L&       GREEK LETTER SAMPI
+ 03E2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER SHEI
+ 03E4          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER FEI
+ 03E6          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER KHEI
+ 03E8          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER HORI
+ 03EA          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER GANGIA
+ 03EC          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER SHIMA
+ 03EE          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER DEI
+ 03F4          ; Changes_When_Lowercased # L&       GREEK CAPITAL THETA SYMBOL
+ 03F7          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER SHO
+ 03F9..03FA    ; Changes_When_Lowercased # L&   [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+ 03FD..042F    ; Changes_When_Lowercased # L&  [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+ 0460          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER OMEGA
+ 0462          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER YAT
+ 0464          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTIFIED E
+ 0466          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER LITTLE YUS
+ 0468          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+ 046A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BIG YUS
+ 046C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+ 046E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KSI
+ 0470          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER PSI
+ 0472          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER FITA
+ 0474          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IZHITSA
+ 0476          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0478          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER UK
+ 047A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ROUND OMEGA
+ 047C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+ 047E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER OT
+ 0480          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOPPA
+ 048A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+ 048C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+ 048E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ER WITH TICK
+ 0490          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ 0492          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ 0494          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+ 0496          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ 0498          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+ 049A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ 049C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+ 049E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KA WITH STROKE
+ 04A0          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BASHKIR KA
+ 04A2          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+ 04A4          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LIGATURE EN GHE
+ 04A6          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+ 04A8          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ABKHASIAN HA
+ 04AA          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+ 04AC          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+ 04AE          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER STRAIGHT U
+ 04B0          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ 04B2          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ 04B4          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LIGATURE TE TSE
+ 04B6          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ 04B8          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+ 04BA          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SHHA
+ 04BC          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+ 04BE          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C0..04C1    ; Changes_When_Lowercased # L&   [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+ 04C3          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KA WITH HOOK
+ 04C5          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EL WITH TAIL
+ 04C7          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EN WITH HOOK
+ 04C9          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EN WITH TAIL
+ 04CB          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+ 04CD          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EM WITH TAIL
+ 04D0          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER A WITH BREVE
+ 04D2          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+ 04D4          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LIGATURE A IE
+ 04D6          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IE WITH BREVE
+ 04D8          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SCHWA
+ 04DA          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+ 04DC          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+ 04DE          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+ 04E0          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+ 04E2          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER I WITH MACRON
+ 04E4          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+ 04E6          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+ 04E8          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BARRED O
+ 04EA          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+ 04EC          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ 04EE          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER U WITH MACRON
+ 04F0          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+ 04F2          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+ 04F4          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+ 04F6          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+ 04F8          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+ 04FA          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+ 04FC          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER HA WITH HOOK
+ 04FE          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER HA WITH STROKE
+ 0500          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI DE
+ 0502          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI DJE
+ 0504          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI ZJE
+ 0506          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI DZJE
+ 0508          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI LJE
+ 050A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI NJE
+ 050C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI SJE
+ 050E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER KOMI TJE
+ 0510          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER REVERSED ZE
+ 0512          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EL WITH HOOK
+ 0514          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER LHA
+ 0516          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER RHA
+ 0518          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER YAE
+ 051A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER QA
+ 051C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER WE
+ 051E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ALEUT KA
+ 0520          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+ 0522          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+ 0524          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+ 0526          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+ 0528          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+ 052A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DZZHE
+ 052C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DCHE
+ 052E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+ 0531..0556    ; Changes_When_Lowercased # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 10A0..10C5    ; Changes_When_Lowercased # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Changes_When_Lowercased # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Changes_When_Lowercased # L&       GEORGIAN CAPITAL LETTER AEN
+ 13A0..13F5    ; Changes_When_Lowercased # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 1C90..1CBA    ; Changes_When_Lowercased # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Changes_When_Lowercased # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1E00          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH RING BELOW
+ 1E02          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER B WITH DOT ABOVE
+ 1E04          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER B WITH DOT BELOW
+ 1E06          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER B WITH LINE BELOW
+ 1E08          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+ 1E0A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH DOT ABOVE
+ 1E0C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH DOT BELOW
+ 1E0E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH LINE BELOW
+ 1E10          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH CEDILLA
+ 1E12          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+ 1E14          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+ 1E16          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+ 1E18          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH TILDE BELOW
+ 1E1C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+ 1E1E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER F WITH DOT ABOVE
+ 1E20          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH MACRON
+ 1E22          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH DOT ABOVE
+ 1E24          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH DOT BELOW
+ 1E26          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH DIAERESIS
+ 1E28          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH CEDILLA
+ 1E2A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH BREVE BELOW
+ 1E2C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH TILDE BELOW
+ 1E2E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+ 1E30          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH ACUTE
+ 1E32          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH DOT BELOW
+ 1E34          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH LINE BELOW
+ 1E36          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH DOT BELOW
+ 1E38          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+ 1E3A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH LINE BELOW
+ 1E3C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER M WITH ACUTE
+ 1E40          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER M WITH DOT ABOVE
+ 1E42          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER M WITH DOT BELOW
+ 1E44          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH DOT ABOVE
+ 1E46          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH DOT BELOW
+ 1E48          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH LINE BELOW
+ 1E4A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+ 1E4E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+ 1E50          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+ 1E52          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+ 1E54          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER P WITH ACUTE
+ 1E56          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER P WITH DOT ABOVE
+ 1E58          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH DOT ABOVE
+ 1E5A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH DOT BELOW
+ 1E5C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+ 1E5E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH LINE BELOW
+ 1E60          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH DOT ABOVE
+ 1E62          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH DOT BELOW
+ 1E64          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E66          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+ 1E68          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH DOT ABOVE
+ 1E6C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH DOT BELOW
+ 1E6E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH LINE BELOW
+ 1E70          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+ 1E72          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+ 1E74          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH TILDE BELOW
+ 1E76          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+ 1E78          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+ 1E7A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+ 1E7C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER V WITH TILDE
+ 1E7E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER V WITH DOT BELOW
+ 1E80          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH GRAVE
+ 1E82          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH ACUTE
+ 1E84          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH DIAERESIS
+ 1E86          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH DOT ABOVE
+ 1E88          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH DOT BELOW
+ 1E8A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER X WITH DOT ABOVE
+ 1E8C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER X WITH DIAERESIS
+ 1E8E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH DOT ABOVE
+ 1E90          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+ 1E92          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH DOT BELOW
+ 1E94          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH LINE BELOW
+ 1E9E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER SHARP S
+ 1EA0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH DOT BELOW
+ 1EA2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ 1EA4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ 1EB0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ 1EB2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ 1EB6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ 1EB8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH DOT BELOW
+ 1EBA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ 1EBC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH TILDE
+ 1EBE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ 1ECA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER I WITH DOT BELOW
+ 1ECC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH DOT BELOW
+ 1ECE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ 1ED0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ 1EDC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ 1EDE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ 1EE2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ 1EE4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH DOT BELOW
+ 1EE6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ 1EE8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ 1EEA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ 1EEC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH HORN AND TILDE
+ 1EF0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ 1EF2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH GRAVE
+ 1EF4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH DOT BELOW
+ 1EF6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ 1EF8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH TILDE
+ 1EFA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER MIDDLE-WELSH LL
+ 1EFC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER MIDDLE-WELSH V
+ 1EFE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Y WITH LOOP
+ 1F08..1F0F    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F18..1F1D    ; Changes_When_Lowercased # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F28..1F2F    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F38..1F3F    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F48..1F4D    ; Changes_When_Lowercased # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F59          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F          ; Changes_When_Lowercased # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F68..1F6F    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F88..1F8F    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1F98..1F9F    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FA8..1FAF    ; Changes_When_Lowercased # L&   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FB8..1FBC    ; Changes_When_Lowercased # L&   [5] GREEK CAPITAL LETTER ALPHA WITH VRACHY..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FC8..1FCC    ; Changes_When_Lowercased # L&   [5] GREEK CAPITAL LETTER EPSILON WITH VARIA..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD8..1FDB    ; Changes_When_Lowercased # L&   [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE8..1FEC    ; Changes_When_Lowercased # L&   [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF8..1FFC    ; Changes_When_Lowercased # L&   [5] GREEK CAPITAL LETTER OMICRON WITH VARIA..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2126          ; Changes_When_Lowercased # L&       OHM SIGN
+ 212A..212B    ; Changes_When_Lowercased # L&   [2] KELVIN SIGN..ANGSTROM SIGN
+ 2132          ; Changes_When_Lowercased # L&       TURNED CAPITAL F
+ 2160..216F    ; Changes_When_Lowercased # Nl  [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
+ 2183          ; Changes_When_Lowercased # L&       ROMAN NUMERAL REVERSED ONE HUNDRED
+ 24B6..24CF    ; Changes_When_Lowercased # So  [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
+ 2C00..2C2F    ; Changes_When_Lowercased # L&  [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+ 2C60          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH DOUBLE BAR
+ 2C62..2C64    ; Changes_When_Lowercased # L&   [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+ 2C67          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER H WITH DESCENDER
+ 2C69          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH DESCENDER
+ 2C6B          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Z WITH DESCENDER
+ 2C6D..2C70    ; Changes_When_Lowercased # L&   [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA
+ 2C72          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER W WITH HOOK
+ 2C75          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER HALF H
+ 2C7E..2C80    ; Changes_When_Lowercased # L&   [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA
+ 2C82          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER VIDA
+ 2C84          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER GAMMA
+ 2C86          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER DALDA
+ 2C88          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER EIE
+ 2C8A          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER SOU
+ 2C8C          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER ZATA
+ 2C8E          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER HATE
+ 2C90          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER THETHE
+ 2C92          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER IAUDA
+ 2C94          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER KAPA
+ 2C96          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER LAULA
+ 2C98          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER MI
+ 2C9A          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER NI
+ 2C9C          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER KSI
+ 2C9E          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER O
+ 2CA0          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER PI
+ 2CA2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER RO
+ 2CA4          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER SIMA
+ 2CA6          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER TAU
+ 2CA8          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER UA
+ 2CAA          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER FI
+ 2CAC          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER KHI
+ 2CAE          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER PSI
+ 2CB0          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OOU
+ 2CB2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER DIALECT-P ALEF
+ 2CB4          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC AIN
+ 2CB6          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+ 2CB8          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER DIALECT-P KAPA
+ 2CBA          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER DIALECT-P NI
+ 2CBC          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+ 2CBE          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC OOU
+ 2CC0          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER SAMPI
+ 2CC2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER CROSSED SHEI
+ 2CC4          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC SHEI
+ 2CC6          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC ESH
+ 2CC8          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER AKHMIMIC KHEI
+ 2CCA          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER DIALECT-P HORI
+ 2CCC          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC HORI
+ 2CCE          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC HA
+ 2CD0          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER L-SHAPED HA
+ 2CD2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC HEI
+ 2CD4          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC HAT
+ 2CD6          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+ 2CD8          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC DJA
+ 2CDA          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+ 2CDC          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+ 2CDE          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD NUBIAN NGI
+ 2CE0          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD NUBIAN NYI
+ 2CE2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER OLD NUBIAN WAU
+ 2CEB          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+ 2CED          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2          ; Changes_When_Lowercased # L&       COPTIC CAPITAL LETTER BOHAIRIC KHEI
+ A640          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ZEMLYA
+ A642          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DZELO
+ A644          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER REVERSED DZE
+ A646          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTA
+ A648          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DJERV
+ A64A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER MONOGRAPH UK
+ A64C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BROAD OMEGA
+ A64E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER NEUTRAL YER
+ A650          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+ A652          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTIFIED YAT
+ A654          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER REVERSED YU
+ A656          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTIFIED A
+ A658          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+ A65A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BLENDED YUS
+ A65C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER YN
+ A660          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER REVERSED TSE
+ A662          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SOFT DE
+ A664          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SOFT EL
+ A666          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SOFT EM
+ A668          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER MONOCULAR O
+ A66A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER BINOCULAR O
+ A66C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+ A680          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DWE
+ A682          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DZWE
+ A684          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER ZHWE
+ A686          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER CCHE
+ A688          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DZZE
+ A68A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+ A68C          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER TWE
+ A68E          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER TSWE
+ A690          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER TSSE
+ A692          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER TCHE
+ A694          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER HWE
+ A696          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER SHWE
+ A698          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER DOUBLE O
+ A69A          ; Changes_When_Lowercased # L&       CYRILLIC CAPITAL LETTER CROSSED O
+ A722          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+ A724          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+ A726          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER HENG
+ A728          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER TZ
+ A72A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER TRESILLO
+ A72C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER CUATRILLO
+ A72E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+ A732          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AA
+ A734          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AO
+ A736          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AU
+ A738          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AV
+ A73A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+ A73C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER AY
+ A73E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER REVERSED C WITH DOT
+ A740          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH STROKE
+ A742          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+ A744          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A746          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER BROKEN L
+ A748          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER L WITH HIGH STROKE
+ A74A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+ A74C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER O WITH LOOP
+ A74E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER OO
+ A750          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+ A752          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER P WITH FLOURISH
+ A754          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+ A756          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+ A758          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+ A75A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R ROTUNDA
+ A75C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER RUM ROTUNDA
+ A75E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+ A760          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER VY
+ A762          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER VISIGOTHIC Z
+ A764          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER THORN WITH STROKE
+ A766          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A768          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER VEND
+ A76A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER ET
+ A76C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER IS
+ A76E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER CON
+ A779          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER INSULAR D
+ A77B          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER INSULAR F
+ A77D..A77E    ; Changes_When_Lowercased # L&   [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G
+ A780          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER TURNED L
+ A782          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER INSULAR R
+ A784          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER INSULAR S
+ A786          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER INSULAR T
+ A78B          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER SALTILLO
+ A78D          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER TURNED H
+ A790          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH DESCENDER
+ A792          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER C WITH BAR
+ A796          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER B WITH FLOURISH
+ A798          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER F WITH STROKE
+ A79A          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER VOLAPUK AE
+ A79C          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER VOLAPUK OE
+ A79E          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER VOLAPUK UE
+ A7A0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+ A7A2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+ A7A4          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+ A7A6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+ A7A8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+ A7AA..A7AE    ; Changes_When_Lowercased # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
+ A7B0..A7B4    ; Changes_When_Lowercased # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
+ A7B6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER OMEGA
+ A7B8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER U WITH STROKE
+ A7BA          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER GLOTTAL A
+ A7BC          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER GLOTTAL I
+ A7BE          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER GLOTTAL U
+ A7C0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER OLD POLISH O
+ A7C2          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER ANGLICANA W
+ A7C4..A7C7    ; Changes_When_Lowercased # L&   [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+ A7C9          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER CLOSED INSULAR G
+ A7D6          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER MIDDLE SCOTS S
+ A7D8          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER SIGMOID S
+ A7F5          ; Changes_When_Lowercased # L&       LATIN CAPITAL LETTER REVERSED HALF H
+ FF21..FF3A    ; Changes_When_Lowercased # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ 10400..10427  ; Changes_When_Lowercased # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+ 104B0..104D3  ; Changes_When_Lowercased # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 10570..1057A  ; Changes_When_Lowercased # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Changes_When_Lowercased # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Changes_When_Lowercased # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Changes_When_Lowercased # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10C80..10CB2  ; Changes_When_Lowercased # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 118A0..118BF  ; Changes_When_Lowercased # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
+ 16E40..16E5F  ; Changes_When_Lowercased # L&  [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
+ 1E900..1E921  ; Changes_When_Lowercased # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
+ 
+ # Total code points: 1433
+ 
+ # ================================================
+ 
+ # Derived Property:   Changes_When_Uppercased (CWU)
+ #  Characters whose normalized forms are not stable under a toUppercase mapping.
+ #  For more information, see D140 in Section 3.13, "Default Case Algorithms".
+ #  Changes_When_Uppercased(X) is true when toUppercase(toNFD(X)) != toNFD(X)
+ 
+ 0061..007A    ; Changes_When_Uppercased # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00B5          ; Changes_When_Uppercased # L&       MICRO SIGN
+ 00DF..00F6    ; Changes_When_Uppercased # L&  [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..00FF    ; Changes_When_Uppercased # L&   [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
+ 0101          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH MACRON
+ 0103          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH BREVE
+ 0105          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH OGONEK
+ 0107          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH ACUTE
+ 0109          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH CIRCUMFLEX
+ 010B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH DOT ABOVE
+ 010D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH CARON
+ 010F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH CARON
+ 0111          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH STROKE
+ 0113          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH MACRON
+ 0115          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH BREVE
+ 0117          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH DOT ABOVE
+ 0119          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH OGONEK
+ 011B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CARON
+ 011D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH CIRCUMFLEX
+ 011F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH BREVE
+ 0121          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH DOT ABOVE
+ 0123          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH CEDILLA
+ 0125          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0127          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH STROKE
+ 0129          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH TILDE
+ 012B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH MACRON
+ 012D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH BREVE
+ 012F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH OGONEK
+ 0131          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER DOTLESS I
+ 0133          ; Changes_When_Uppercased # L&       LATIN SMALL LIGATURE IJ
+ 0135          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER J WITH CIRCUMFLEX
+ 0137          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH CEDILLA
+ 013A          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH ACUTE
+ 013C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH CEDILLA
+ 013E          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH CARON
+ 0140          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0142          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH STROKE
+ 0144          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH ACUTE
+ 0146          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH CEDILLA
+ 0148..0149    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 014B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER ENG
+ 014D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH MACRON
+ 014F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH BREVE
+ 0151          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0153          ; Changes_When_Uppercased # L&       LATIN SMALL LIGATURE OE
+ 0155          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH ACUTE
+ 0157          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH CEDILLA
+ 0159          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH CARON
+ 015B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH ACUTE
+ 015D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH CIRCUMFLEX
+ 015F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH CEDILLA
+ 0161          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH CARON
+ 0163          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH CEDILLA
+ 0165          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH CARON
+ 0167          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH STROKE
+ 0169          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH TILDE
+ 016B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH MACRON
+ 016D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH BREVE
+ 016F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH RING ABOVE
+ 0171          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ 0173          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH OGONEK
+ 0175          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH CIRCUMFLEX
+ 0177          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ 017A          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH ACUTE
+ 017C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH DOT ABOVE
+ 017E..0180    ; Changes_When_Uppercased # L&   [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
+ 0183          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER B WITH TOPBAR
+ 0185          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TONE SIX
+ 0188          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH HOOK
+ 018C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH TOPBAR
+ 0192          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER F WITH HOOK
+ 0195          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER HV
+ 0199..019A    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR
+ 019E          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH LONG RIGHT LEG
+ 01A1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HORN
+ 01A3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER OI
+ 01A5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH HOOK
+ 01A8          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TONE TWO
+ 01AD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH HOOK
+ 01B0          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HORN
+ 01B4          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH HOOK
+ 01B6          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH STROKE
+ 01B9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER EZH REVERSED
+ 01BD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TONE FIVE
+ 01BF          ; Changes_When_Uppercased # L&       LATIN LETTER WYNN
+ 01C5..01C6    ; Changes_When_Uppercased # L&   [2] LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON..LATIN SMALL LETTER DZ WITH CARON
+ 01C8..01C9    ; Changes_When_Uppercased # L&   [2] LATIN CAPITAL LETTER L WITH SMALL LETTER J..LATIN SMALL LETTER LJ
+ 01CB..01CC    ; Changes_When_Uppercased # L&   [2] LATIN CAPITAL LETTER N WITH SMALL LETTER J..LATIN SMALL LETTER NJ
+ 01CE          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH CARON
+ 01D0          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH CARON
+ 01D2          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH CARON
+ 01D4          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH CARON
+ 01D6          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+ 01D8          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+ 01DA          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+ 01DC..01DD    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
+ 01DF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+ 01E1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+ 01E3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AE WITH MACRON
+ 01E5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH STROKE
+ 01E7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH CARON
+ 01E9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH CARON
+ 01EB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH OGONEK
+ 01ED          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH OGONEK AND MACRON
+ 01EF..01F0    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER EZH WITH CARON..LATIN SMALL LETTER J WITH CARON
+ 01F2..01F3    ; Changes_When_Uppercased # L&   [2] LATIN CAPITAL LETTER D WITH SMALL LETTER Z..LATIN SMALL LETTER DZ
+ 01F5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH ACUTE
+ 01F9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH GRAVE
+ 01FB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+ 01FD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AE WITH ACUTE
+ 01FF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH STROKE AND ACUTE
+ 0201          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH DOUBLE GRAVE
+ 0203          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH INVERTED BREVE
+ 0205          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH DOUBLE GRAVE
+ 0207          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH INVERTED BREVE
+ 0209          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH DOUBLE GRAVE
+ 020B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH INVERTED BREVE
+ 020D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH DOUBLE GRAVE
+ 020F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH INVERTED BREVE
+ 0211          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH DOUBLE GRAVE
+ 0213          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH INVERTED BREVE
+ 0215          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DOUBLE GRAVE
+ 0217          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH INVERTED BREVE
+ 0219          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH COMMA BELOW
+ 021B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH COMMA BELOW
+ 021D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER YOGH
+ 021F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH CARON
+ 0223          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER OU
+ 0225          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH HOOK
+ 0227          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH DOT ABOVE
+ 0229          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CEDILLA
+ 022B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+ 022D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH TILDE AND MACRON
+ 022F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH DOT ABOVE
+ 0231          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+ 0233          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH MACRON
+ 023C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH STROKE
+ 023F..0240    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
+ 0242          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER GLOTTAL STOP
+ 0247          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH STROKE
+ 0249          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER J WITH STROKE
+ 024B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Q WITH HOOK TAIL
+ 024D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH STROKE
+ 024F..0254    ; Changes_When_Uppercased # L&   [6] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER OPEN O
+ 0256..0257    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK
+ 0259          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER SCHWA
+ 025B..025C    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E
+ 0260..0261    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
+ 0263          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER GAMMA
+ 0265..0266    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
+ 0268..026C    ; Changes_When_Uppercased # L&   [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
+ 026F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TURNED M
+ 0271..0272    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
+ 0275          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER BARRED O
+ 027D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH TAIL
+ 0280          ; Changes_When_Uppercased # L&       LATIN LETTER SMALL CAPITAL R
+ 0282..0283    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER S WITH HOOK..LATIN SMALL LETTER ESH
+ 0287..028C    ; Changes_When_Uppercased # L&   [6] LATIN SMALL LETTER TURNED T..LATIN SMALL LETTER TURNED V
+ 0292          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER EZH
+ 029D..029E    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER TURNED K
+ 0345          ; Changes_When_Uppercased # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0371          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER HETA
+ 0373          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER ARCHAIC SAMPI
+ 0377          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037B..037D    ; Changes_When_Uppercased # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 0390          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AC..03CE    ; Changes_When_Uppercased # L&  [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D0..03D1    ; Changes_When_Uppercased # L&   [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
+ 03D5..03D7    ; Changes_When_Uppercased # L&   [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
+ 03D9          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER ARCHAIC KOPPA
+ 03DB          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER STIGMA
+ 03DD          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER DIGAMMA
+ 03DF          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER KOPPA
+ 03E1          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER SAMPI
+ 03E3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER SHEI
+ 03E5          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER FEI
+ 03E7          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER KHEI
+ 03E9          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER HORI
+ 03EB          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER GANGIA
+ 03ED          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER SHIMA
+ 03EF..03F3    ; Changes_When_Uppercased # L&   [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
+ 03F5          ; Changes_When_Uppercased # L&       GREEK LUNATE EPSILON SYMBOL
+ 03F8          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER SHO
+ 03FB          ; Changes_When_Uppercased # L&       GREEK SMALL LETTER SAN
+ 0430..045F    ; Changes_When_Uppercased # L&  [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
+ 0461          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER OMEGA
+ 0463          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER YAT
+ 0465          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTIFIED E
+ 0467          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER LITTLE YUS
+ 0469          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+ 046B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BIG YUS
+ 046D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+ 046F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KSI
+ 0471          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER PSI
+ 0473          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER FITA
+ 0475          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IZHITSA
+ 0477          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0479          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER UK
+ 047B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ROUND OMEGA
+ 047D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER OMEGA WITH TITLO
+ 047F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER OT
+ 0481          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOPPA
+ 048B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SHORT I WITH TAIL
+ 048D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SEMISOFT SIGN
+ 048F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ER WITH TICK
+ 0491          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER GHE WITH UPTURN
+ 0493          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER GHE WITH STROKE
+ 0495          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+ 0497          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ 0499          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZE WITH DESCENDER
+ 049B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KA WITH DESCENDER
+ 049D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+ 049F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KA WITH STROKE
+ 04A1          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BASHKIR KA
+ 04A3          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EN WITH DESCENDER
+ 04A5          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LIGATURE EN GHE
+ 04A7          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+ 04A9          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ABKHASIAN HA
+ 04AB          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ES WITH DESCENDER
+ 04AD          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER TE WITH DESCENDER
+ 04AF          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER STRAIGHT U
+ 04B1          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ 04B3          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER HA WITH DESCENDER
+ 04B5          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LIGATURE TE TSE
+ 04B7          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ 04B9          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+ 04BB          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SHHA
+ 04BD          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ABKHASIAN CHE
+ 04BF          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C2          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04C4          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KA WITH HOOK
+ 04C6          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EL WITH TAIL
+ 04C8          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EN WITH HOOK
+ 04CA          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EN WITH TAIL
+ 04CC          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KHAKASSIAN CHE
+ 04CE..04CF    ; Changes_When_Uppercased # L&   [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
+ 04D1          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER A WITH BREVE
+ 04D3          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D5          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LIGATURE A IE
+ 04D7          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IE WITH BREVE
+ 04D9          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SCHWA
+ 04DB          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+ 04DD          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+ 04DF          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E1          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ABKHASIAN DZE
+ 04E3          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER I WITH MACRON
+ 04E5          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER I WITH DIAERESIS
+ 04E7          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04E9          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BARRED O
+ 04EB          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+ 04ED          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER E WITH DIAERESIS
+ 04EF          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER U WITH MACRON
+ 04F1          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER U WITH DIAERESIS
+ 04F3          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+ 04F5          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F7          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER GHE WITH DESCENDER
+ 04F9          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 04FB          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+ 04FD          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER HA WITH HOOK
+ 04FF          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER HA WITH STROKE
+ 0501          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI DE
+ 0503          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI DJE
+ 0505          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI ZJE
+ 0507          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI DZJE
+ 0509          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI LJE
+ 050B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI NJE
+ 050D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI SJE
+ 050F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER KOMI TJE
+ 0511          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER REVERSED ZE
+ 0513          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EL WITH HOOK
+ 0515          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER LHA
+ 0517          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER RHA
+ 0519          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER YAE
+ 051B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER QA
+ 051D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER WE
+ 051F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ALEUT KA
+ 0521          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
+ 0523          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+ 0525          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER PE WITH DESCENDER
+ 0527          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SHHA WITH DESCENDER
+ 0529          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EN WITH LEFT HOOK
+ 052B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DZZHE
+ 052D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DCHE
+ 052F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0561..0587    ; Changes_When_Uppercased # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+ 10D0..10FA    ; Changes_When_Uppercased # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FD..10FF    ; Changes_When_Uppercased # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 13F8..13FD    ; Changes_When_Uppercased # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1C80..1C88    ; Changes_When_Uppercased # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1D79          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR G
+ 1D7D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH STROKE
+ 1D8E          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH PALATAL HOOK
+ 1E01          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH RING BELOW
+ 1E03          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER B WITH DOT ABOVE
+ 1E05          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER B WITH DOT BELOW
+ 1E07          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER B WITH LINE BELOW
+ 1E09          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+ 1E0B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH DOT ABOVE
+ 1E0D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH DOT BELOW
+ 1E0F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH LINE BELOW
+ 1E11          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH CEDILLA
+ 1E13          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+ 1E15          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH MACRON AND GRAVE
+ 1E17          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH MACRON AND ACUTE
+ 1E19          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH TILDE BELOW
+ 1E1D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+ 1E1F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER F WITH DOT ABOVE
+ 1E21          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH MACRON
+ 1E23          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH DOT ABOVE
+ 1E25          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH DOT BELOW
+ 1E27          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH DIAERESIS
+ 1E29          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH CEDILLA
+ 1E2B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH BREVE BELOW
+ 1E2D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH TILDE BELOW
+ 1E2F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+ 1E31          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH ACUTE
+ 1E33          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH DOT BELOW
+ 1E35          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH LINE BELOW
+ 1E37          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH DOT BELOW
+ 1E39          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+ 1E3B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH LINE BELOW
+ 1E3D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER M WITH ACUTE
+ 1E41          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER M WITH DOT ABOVE
+ 1E43          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER M WITH DOT BELOW
+ 1E45          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH DOT ABOVE
+ 1E47          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH DOT BELOW
+ 1E49          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH LINE BELOW
+ 1E4B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH TILDE AND ACUTE
+ 1E4F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+ 1E51          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH MACRON AND GRAVE
+ 1E53          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH MACRON AND ACUTE
+ 1E55          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH ACUTE
+ 1E57          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH DOT ABOVE
+ 1E59          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH DOT ABOVE
+ 1E5B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH DOT BELOW
+ 1E5D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+ 1E5F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH LINE BELOW
+ 1E61          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH DOT ABOVE
+ 1E63          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH DOT BELOW
+ 1E65          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E67          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+ 1E69          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH DOT ABOVE
+ 1E6D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH DOT BELOW
+ 1E6F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH LINE BELOW
+ 1E71          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+ 1E73          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DIAERESIS BELOW
+ 1E75          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH TILDE BELOW
+ 1E77          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+ 1E79          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH TILDE AND ACUTE
+ 1E7B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+ 1E7D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER V WITH TILDE
+ 1E7F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER V WITH DOT BELOW
+ 1E81          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH GRAVE
+ 1E83          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH ACUTE
+ 1E85          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH DIAERESIS
+ 1E87          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH DOT ABOVE
+ 1E89          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH DOT BELOW
+ 1E8B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER X WITH DOT ABOVE
+ 1E8D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER X WITH DIAERESIS
+ 1E8F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH DOT ABOVE
+ 1E91          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH CIRCUMFLEX
+ 1E93          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH DOT BELOW
+ 1E95..1E9B    ; Changes_When_Uppercased # L&   [7] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1EA1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH DOT BELOW
+ 1EA3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH HOOK ABOVE
+ 1EA5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH BREVE AND ACUTE
+ 1EB1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH BREVE AND GRAVE
+ 1EB3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH BREVE AND TILDE
+ 1EB7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+ 1EB9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH DOT BELOW
+ 1EBB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH HOOK ABOVE
+ 1EBD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH TILDE
+ 1EBF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH HOOK ABOVE
+ 1ECB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER I WITH DOT BELOW
+ 1ECD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH DOT BELOW
+ 1ECF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HOOK ABOVE
+ 1ED1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HORN AND ACUTE
+ 1EDD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HORN AND GRAVE
+ 1EDF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HORN AND TILDE
+ 1EE3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+ 1EE5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH DOT BELOW
+ 1EE7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HOOK ABOVE
+ 1EE9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HORN AND ACUTE
+ 1EEB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HORN AND GRAVE
+ 1EED          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HORN AND TILDE
+ 1EF1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ 1EF3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH GRAVE
+ 1EF5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH DOT BELOW
+ 1EF7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH HOOK ABOVE
+ 1EF9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Y WITH TILDE
+ 1EFB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER MIDDLE-WELSH LL
+ 1EFD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER MIDDLE-WELSH V
+ 1EFF..1F07    ; Changes_When_Uppercased # L&   [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F10..1F15    ; Changes_When_Uppercased # L&   [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F27    ; Changes_When_Uppercased # L&   [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F30..1F37    ; Changes_When_Uppercased # L&   [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F40..1F45    ; Changes_When_Uppercased # L&   [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Changes_When_Uppercased # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F60..1F67    ; Changes_When_Uppercased # L&   [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F70..1F7D    ; Changes_When_Uppercased # L&  [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Changes_When_Uppercased # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FB7    ; Changes_When_Uppercased # L&   [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FBC          ; Changes_When_Uppercased # L&       GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; Changes_When_Uppercased # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; Changes_When_Uppercased # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FC7    ; Changes_When_Uppercased # L&   [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FCC          ; Changes_When_Uppercased # L&       GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; Changes_When_Uppercased # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FD7    ; Changes_When_Uppercased # L&   [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ 1FE0..1FE7    ; Changes_When_Uppercased # L&   [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ 1FF2..1FF4    ; Changes_When_Uppercased # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FF7    ; Changes_When_Uppercased # L&   [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FFC          ; Changes_When_Uppercased # L&       GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 214E          ; Changes_When_Uppercased # L&       TURNED SMALL F
+ 2170..217F    ; Changes_When_Uppercased # Nl  [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2184          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER REVERSED C
+ 24D0..24E9    ; Changes_When_Uppercased # So  [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 2C30..2C5F    ; Changes_When_Uppercased # L&  [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
+ 2C61          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH DOUBLE BAR
+ 2C65..2C66    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
+ 2C68          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER H WITH DESCENDER
+ 2C6A          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH DESCENDER
+ 2C6C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Z WITH DESCENDER
+ 2C73          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER W WITH HOOK
+ 2C76          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER HALF H
+ 2C81          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER ALFA
+ 2C83          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER VIDA
+ 2C85          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER GAMMA
+ 2C87          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER DALDA
+ 2C89          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER EIE
+ 2C8B          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER SOU
+ 2C8D          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER ZATA
+ 2C8F          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER HATE
+ 2C91          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER THETHE
+ 2C93          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER IAUDA
+ 2C95          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER KAPA
+ 2C97          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER LAULA
+ 2C99          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER MI
+ 2C9B          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER NI
+ 2C9D          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER KSI
+ 2C9F          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER O
+ 2CA1          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER PI
+ 2CA3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER RO
+ 2CA5          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER SIMA
+ 2CA7          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER TAU
+ 2CA9          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER UA
+ 2CAB          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER FI
+ 2CAD          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER KHI
+ 2CAF          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER PSI
+ 2CB1          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OOU
+ 2CB3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER DIALECT-P ALEF
+ 2CB5          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC AIN
+ 2CB7          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+ 2CB9          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER DIALECT-P KAPA
+ 2CBB          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER DIALECT-P NI
+ 2CBD          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+ 2CBF          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC OOU
+ 2CC1          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER SAMPI
+ 2CC3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER CROSSED SHEI
+ 2CC5          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC SHEI
+ 2CC7          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC ESH
+ 2CC9          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER AKHMIMIC KHEI
+ 2CCB          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER DIALECT-P HORI
+ 2CCD          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC HORI
+ 2CCF          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC HA
+ 2CD1          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER L-SHAPED HA
+ 2CD3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC HEI
+ 2CD5          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC HAT
+ 2CD7          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC GANGIA
+ 2CD9          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC DJA
+ 2CDB          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD COPTIC SHIMA
+ 2CDD          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD NUBIAN SHIMA
+ 2CDF          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD NUBIAN NGI
+ 2CE1          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD NUBIAN NYI
+ 2CE3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER OLD NUBIAN WAU
+ 2CEC          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
+ 2CEE          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF3          ; Changes_When_Uppercased # L&       COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; Changes_When_Uppercased # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Changes_When_Uppercased # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Changes_When_Uppercased # L&       GEORGIAN SMALL LETTER AEN
+ A641          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZEMLYA
+ A643          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DZELO
+ A645          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER REVERSED DZE
+ A647          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTA
+ A649          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DJERV
+ A64B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER MONOGRAPH UK
+ A64D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BROAD OMEGA
+ A64F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER NEUTRAL YER
+ A651          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER YERU WITH BACK YER
+ A653          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTIFIED YAT
+ A655          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER REVERSED YU
+ A657          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTIFIED A
+ A659          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER CLOSED LITTLE YUS
+ A65B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BLENDED YUS
+ A65D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER YN
+ A661          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER REVERSED TSE
+ A663          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SOFT DE
+ A665          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SOFT EL
+ A667          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SOFT EM
+ A669          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER MONOCULAR O
+ A66B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER BINOCULAR O
+ A66D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A681          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DWE
+ A683          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DZWE
+ A685          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER ZHWE
+ A687          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER CCHE
+ A689          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DZZE
+ A68B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
+ A68D          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER TWE
+ A68F          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER TSWE
+ A691          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER TSSE
+ A693          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER TCHE
+ A695          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER HWE
+ A697          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER SHWE
+ A699          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER DOUBLE O
+ A69B          ; Changes_When_Uppercased # L&       CYRILLIC SMALL LETTER CROSSED O
+ A723          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER EGYPTOLOGICAL ALEF
+ A725          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER EGYPTOLOGICAL AIN
+ A727          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER HENG
+ A729          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TZ
+ A72B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TRESILLO
+ A72D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER CUATRILLO
+ A72F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER CUATRILLO WITH COMMA
+ A733          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AA
+ A735          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AO
+ A737          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AU
+ A739          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AV
+ A73B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AV WITH HORIZONTAL BAR
+ A73D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER AY
+ A73F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER REVERSED C WITH DOT
+ A741          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH STROKE
+ A743          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH DIAGONAL STROKE
+ A745          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A747          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER BROKEN L
+ A749          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER L WITH HIGH STROKE
+ A74B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
+ A74D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER O WITH LOOP
+ A74F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER OO
+ A751          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
+ A753          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH FLOURISH
+ A755          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER P WITH SQUIRREL TAIL
+ A757          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
+ A759          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER Q WITH DIAGONAL STROKE
+ A75B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R ROTUNDA
+ A75D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER RUM ROTUNDA
+ A75F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER V WITH DIAGONAL STROKE
+ A761          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER VY
+ A763          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER VISIGOTHIC Z
+ A765          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER THORN WITH STROKE
+ A767          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A769          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER VEND
+ A76B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER ET
+ A76D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER IS
+ A76F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER CON
+ A77A          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR D
+ A77C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR F
+ A77F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TURNED INSULAR G
+ A781          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER TURNED L
+ A783          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR R
+ A785          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR S
+ A787          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER INSULAR T
+ A78C          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER SALTILLO
+ A791          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH DESCENDER
+ A793..A794    ; Changes_When_Uppercased # L&   [2] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER C WITH PALATAL HOOK
+ A797          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER B WITH FLOURISH
+ A799          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER F WITH STROKE
+ A79B          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER VOLAPUK AE
+ A79D          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER VOLAPUK OE
+ A79F          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER VOLAPUK UE
+ A7A1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER G WITH OBLIQUE STROKE
+ A7A3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER K WITH OBLIQUE STROKE
+ A7A5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER N WITH OBLIQUE STROKE
+ A7A7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER R WITH OBLIQUE STROKE
+ A7A9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH OBLIQUE STROKE
+ A7B5          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER BETA
+ A7B7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER OMEGA
+ A7B9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER U WITH STROKE
+ A7BB          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER GLOTTAL A
+ A7BD          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER GLOTTAL I
+ A7BF          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER GLOTTAL U
+ A7C1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER OLD POLISH O
+ A7C3          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER ANGLICANA W
+ A7C8          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
+ A7CA          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D1          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER CLOSED INSULAR G
+ A7D7          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER MIDDLE SCOTS S
+ A7D9          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER SIGMOID S
+ A7F6          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER REVERSED HALF H
+ AB53          ; Changes_When_Uppercased # L&       LATIN SMALL LETTER CHI
+ AB70..ABBF    ; Changes_When_Uppercased # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ FB00..FB06    ; Changes_When_Uppercased # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Changes_When_Uppercased # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FF41..FF5A    ; Changes_When_Uppercased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ 10428..1044F  ; Changes_When_Uppercased # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+ 104D8..104FB  ; Changes_When_Uppercased # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10597..105A1  ; Changes_When_Uppercased # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Changes_When_Uppercased # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Changes_When_Uppercased # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Changes_When_Uppercased # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10CC0..10CF2  ; Changes_When_Uppercased # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 118C0..118DF  ; Changes_When_Uppercased # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 16E60..16E7F  ; Changes_When_Uppercased # L&  [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 1E922..1E943  ; Changes_When_Uppercased # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 
+ # Total code points: 1525
+ 
+ # ================================================
+ 
+ # Derived Property:   Changes_When_Titlecased (CWT)
+ #  Characters whose normalized forms are not stable under a toTitlecase mapping.
+ #  For more information, see D141 in Section 3.13, "Default Case Algorithms".
+ #  Changes_When_Titlecased(X) is true when toTitlecase(toNFD(X)) != toNFD(X)
+ 
+ 0061..007A    ; Changes_When_Titlecased # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00B5          ; Changes_When_Titlecased # L&       MICRO SIGN
+ 00DF..00F6    ; Changes_When_Titlecased # L&  [24] LATIN SMALL LETTER SHARP S..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..00FF    ; Changes_When_Titlecased # L&   [8] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER Y WITH DIAERESIS
+ 0101          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH MACRON
+ 0103          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH BREVE
+ 0105          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH OGONEK
+ 0107          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH ACUTE
+ 0109          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH CIRCUMFLEX
+ 010B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH DOT ABOVE
+ 010D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH CARON
+ 010F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH CARON
+ 0111          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH STROKE
+ 0113          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH MACRON
+ 0115          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH BREVE
+ 0117          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH DOT ABOVE
+ 0119          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH OGONEK
+ 011B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CARON
+ 011D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH CIRCUMFLEX
+ 011F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH BREVE
+ 0121          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH DOT ABOVE
+ 0123          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH CEDILLA
+ 0125          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0127          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH STROKE
+ 0129          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH TILDE
+ 012B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH MACRON
+ 012D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH BREVE
+ 012F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH OGONEK
+ 0131          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER DOTLESS I
+ 0133          ; Changes_When_Titlecased # L&       LATIN SMALL LIGATURE IJ
+ 0135          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER J WITH CIRCUMFLEX
+ 0137          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH CEDILLA
+ 013A          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH ACUTE
+ 013C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH CEDILLA
+ 013E          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH CARON
+ 0140          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0142          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH STROKE
+ 0144          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH ACUTE
+ 0146          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH CEDILLA
+ 0148..0149    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER N WITH CARON..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 014B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER ENG
+ 014D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH MACRON
+ 014F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH BREVE
+ 0151          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0153          ; Changes_When_Titlecased # L&       LATIN SMALL LIGATURE OE
+ 0155          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH ACUTE
+ 0157          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH CEDILLA
+ 0159          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH CARON
+ 015B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH ACUTE
+ 015D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH CIRCUMFLEX
+ 015F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH CEDILLA
+ 0161          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH CARON
+ 0163          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH CEDILLA
+ 0165          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH CARON
+ 0167          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH STROKE
+ 0169          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH TILDE
+ 016B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH MACRON
+ 016D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH BREVE
+ 016F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH RING ABOVE
+ 0171          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DOUBLE ACUTE
+ 0173          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH OGONEK
+ 0175          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH CIRCUMFLEX
+ 0177          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH CIRCUMFLEX
+ 017A          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH ACUTE
+ 017C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH DOT ABOVE
+ 017E..0180    ; Changes_When_Titlecased # L&   [3] LATIN SMALL LETTER Z WITH CARON..LATIN SMALL LETTER B WITH STROKE
+ 0183          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER B WITH TOPBAR
+ 0185          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TONE SIX
+ 0188          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH HOOK
+ 018C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH TOPBAR
+ 0192          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER F WITH HOOK
+ 0195          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER HV
+ 0199..019A    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER K WITH HOOK..LATIN SMALL LETTER L WITH BAR
+ 019E          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH LONG RIGHT LEG
+ 01A1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HORN
+ 01A3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER OI
+ 01A5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH HOOK
+ 01A8          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TONE TWO
+ 01AD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH HOOK
+ 01B0          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HORN
+ 01B4          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH HOOK
+ 01B6          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH STROKE
+ 01B9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER EZH REVERSED
+ 01BD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TONE FIVE
+ 01BF          ; Changes_When_Titlecased # L&       LATIN LETTER WYNN
+ 01C4          ; Changes_When_Titlecased # L&       LATIN CAPITAL LETTER DZ WITH CARON
+ 01C6..01C7    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER DZ WITH CARON..LATIN CAPITAL LETTER LJ
+ 01C9..01CA    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER LJ..LATIN CAPITAL LETTER NJ
+ 01CC          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER NJ
+ 01CE          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH CARON
+ 01D0          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH CARON
+ 01D2          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH CARON
+ 01D4          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH CARON
+ 01D6          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DIAERESIS AND MACRON
+ 01D8          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DIAERESIS AND ACUTE
+ 01DA          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DIAERESIS AND CARON
+ 01DC..01DD    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE..LATIN SMALL LETTER TURNED E
+ 01DF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH DIAERESIS AND MACRON
+ 01E1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH DOT ABOVE AND MACRON
+ 01E3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AE WITH MACRON
+ 01E5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH STROKE
+ 01E7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH CARON
+ 01E9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH CARON
+ 01EB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH OGONEK
+ 01ED          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH OGONEK AND MACRON
+ 01EF..01F1    ; Changes_When_Titlecased # L&   [3] LATIN SMALL LETTER EZH WITH CARON..LATIN CAPITAL LETTER DZ
+ 01F3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER DZ
+ 01F5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH ACUTE
+ 01F9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH GRAVE
+ 01FB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE
+ 01FD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AE WITH ACUTE
+ 01FF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH STROKE AND ACUTE
+ 0201          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH DOUBLE GRAVE
+ 0203          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH INVERTED BREVE
+ 0205          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH DOUBLE GRAVE
+ 0207          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH INVERTED BREVE
+ 0209          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH DOUBLE GRAVE
+ 020B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH INVERTED BREVE
+ 020D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH DOUBLE GRAVE
+ 020F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH INVERTED BREVE
+ 0211          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH DOUBLE GRAVE
+ 0213          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH INVERTED BREVE
+ 0215          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DOUBLE GRAVE
+ 0217          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH INVERTED BREVE
+ 0219          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH COMMA BELOW
+ 021B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH COMMA BELOW
+ 021D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER YOGH
+ 021F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH CARON
+ 0223          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER OU
+ 0225          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH HOOK
+ 0227          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH DOT ABOVE
+ 0229          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CEDILLA
+ 022B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH DIAERESIS AND MACRON
+ 022D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH TILDE AND MACRON
+ 022F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH DOT ABOVE
+ 0231          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH DOT ABOVE AND MACRON
+ 0233          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH MACRON
+ 023C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH STROKE
+ 023F..0240    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER S WITH SWASH TAIL..LATIN SMALL LETTER Z WITH SWASH TAIL
+ 0242          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER GLOTTAL STOP
+ 0247          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH STROKE
+ 0249          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER J WITH STROKE
+ 024B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Q WITH HOOK TAIL
+ 024D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH STROKE
+ 024F..0254    ; Changes_When_Titlecased # L&   [6] LATIN SMALL LETTER Y WITH STROKE..LATIN SMALL LETTER OPEN O
+ 0256..0257    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK
+ 0259          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER SCHWA
+ 025B..025C    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E
+ 0260..0261    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
+ 0263          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER GAMMA
+ 0265..0266    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
+ 0268..026C    ; Changes_When_Titlecased # L&   [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
+ 026F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TURNED M
+ 0271..0272    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
+ 0275          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER BARRED O
+ 027D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH TAIL
+ 0280          ; Changes_When_Titlecased # L&       LATIN LETTER SMALL CAPITAL R
+ 0282..0283    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER S WITH HOOK..LATIN SMALL LETTER ESH
+ 0287..028C    ; Changes_When_Titlecased # L&   [6] LATIN SMALL LETTER TURNED T..LATIN SMALL LETTER TURNED V
+ 0292          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER EZH
+ 029D..029E    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER TURNED K
+ 0345          ; Changes_When_Titlecased # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0371          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER HETA
+ 0373          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER ARCHAIC SAMPI
+ 0377          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037B..037D    ; Changes_When_Titlecased # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 0390          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AC..03CE    ; Changes_When_Titlecased # L&  [35] GREEK SMALL LETTER ALPHA WITH TONOS..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D0..03D1    ; Changes_When_Titlecased # L&   [2] GREEK BETA SYMBOL..GREEK THETA SYMBOL
+ 03D5..03D7    ; Changes_When_Titlecased # L&   [3] GREEK PHI SYMBOL..GREEK KAI SYMBOL
+ 03D9          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER ARCHAIC KOPPA
+ 03DB          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER STIGMA
+ 03DD          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER DIGAMMA
+ 03DF          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER KOPPA
+ 03E1          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER SAMPI
+ 03E3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER SHEI
+ 03E5          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER FEI
+ 03E7          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER KHEI
+ 03E9          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER HORI
+ 03EB          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER GANGIA
+ 03ED          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER SHIMA
+ 03EF..03F3    ; Changes_When_Titlecased # L&   [5] COPTIC SMALL LETTER DEI..GREEK LETTER YOT
+ 03F5          ; Changes_When_Titlecased # L&       GREEK LUNATE EPSILON SYMBOL
+ 03F8          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER SHO
+ 03FB          ; Changes_When_Titlecased # L&       GREEK SMALL LETTER SAN
+ 0430..045F    ; Changes_When_Titlecased # L&  [48] CYRILLIC SMALL LETTER A..CYRILLIC SMALL LETTER DZHE
+ 0461          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER OMEGA
+ 0463          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER YAT
+ 0465          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTIFIED E
+ 0467          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER LITTLE YUS
+ 0469          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTIFIED LITTLE YUS
+ 046B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BIG YUS
+ 046D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTIFIED BIG YUS
+ 046F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KSI
+ 0471          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER PSI
+ 0473          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER FITA
+ 0475          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IZHITSA
+ 0477          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0479          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER UK
+ 047B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ROUND OMEGA
+ 047D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER OMEGA WITH TITLO
+ 047F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER OT
+ 0481          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOPPA
+ 048B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SHORT I WITH TAIL
+ 048D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SEMISOFT SIGN
+ 048F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ER WITH TICK
+ 0491          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER GHE WITH UPTURN
+ 0493          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER GHE WITH STROKE
+ 0495          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER GHE WITH MIDDLE HOOK
+ 0497          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZHE WITH DESCENDER
+ 0499          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZE WITH DESCENDER
+ 049B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KA WITH DESCENDER
+ 049D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KA WITH VERTICAL STROKE
+ 049F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KA WITH STROKE
+ 04A1          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BASHKIR KA
+ 04A3          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EN WITH DESCENDER
+ 04A5          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LIGATURE EN GHE
+ 04A7          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER PE WITH MIDDLE HOOK
+ 04A9          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ABKHASIAN HA
+ 04AB          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ES WITH DESCENDER
+ 04AD          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER TE WITH DESCENDER
+ 04AF          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER STRAIGHT U
+ 04B1          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER STRAIGHT U WITH STROKE
+ 04B3          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER HA WITH DESCENDER
+ 04B5          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LIGATURE TE TSE
+ 04B7          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER CHE WITH DESCENDER
+ 04B9          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER CHE WITH VERTICAL STROKE
+ 04BB          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SHHA
+ 04BD          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ABKHASIAN CHE
+ 04BF          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C2          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04C4          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KA WITH HOOK
+ 04C6          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EL WITH TAIL
+ 04C8          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EN WITH HOOK
+ 04CA          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EN WITH TAIL
+ 04CC          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KHAKASSIAN CHE
+ 04CE..04CF    ; Changes_When_Titlecased # L&   [2] CYRILLIC SMALL LETTER EM WITH TAIL..CYRILLIC SMALL LETTER PALOCHKA
+ 04D1          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER A WITH BREVE
+ 04D3          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D5          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LIGATURE A IE
+ 04D7          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IE WITH BREVE
+ 04D9          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SCHWA
+ 04DB          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SCHWA WITH DIAERESIS
+ 04DD          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZHE WITH DIAERESIS
+ 04DF          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E1          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ABKHASIAN DZE
+ 04E3          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER I WITH MACRON
+ 04E5          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER I WITH DIAERESIS
+ 04E7          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04E9          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BARRED O
+ 04EB          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BARRED O WITH DIAERESIS
+ 04ED          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER E WITH DIAERESIS
+ 04EF          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER U WITH MACRON
+ 04F1          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER U WITH DIAERESIS
+ 04F3          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER U WITH DOUBLE ACUTE
+ 04F5          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F7          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER GHE WITH DESCENDER
+ 04F9          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 04FB          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER GHE WITH STROKE AND HOOK
+ 04FD          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER HA WITH HOOK
+ 04FF          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER HA WITH STROKE
+ 0501          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI DE
+ 0503          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI DJE
+ 0505          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI ZJE
+ 0507          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI DZJE
+ 0509          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI LJE
+ 050B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI NJE
+ 050D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI SJE
+ 050F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER KOMI TJE
+ 0511          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER REVERSED ZE
+ 0513          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EL WITH HOOK
+ 0515          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER LHA
+ 0517          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER RHA
+ 0519          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER YAE
+ 051B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER QA
+ 051D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER WE
+ 051F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ALEUT KA
+ 0521          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EL WITH MIDDLE HOOK
+ 0523          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EN WITH MIDDLE HOOK
+ 0525          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER PE WITH DESCENDER
+ 0527          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SHHA WITH DESCENDER
+ 0529          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EN WITH LEFT HOOK
+ 052B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DZZHE
+ 052D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DCHE
+ 052F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0561..0587    ; Changes_When_Titlecased # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+ 13F8..13FD    ; Changes_When_Titlecased # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1C80..1C88    ; Changes_When_Titlecased # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1D79          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR G
+ 1D7D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH STROKE
+ 1D8E          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH PALATAL HOOK
+ 1E01          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH RING BELOW
+ 1E03          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER B WITH DOT ABOVE
+ 1E05          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER B WITH DOT BELOW
+ 1E07          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER B WITH LINE BELOW
+ 1E09          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER C WITH CEDILLA AND ACUTE
+ 1E0B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH DOT ABOVE
+ 1E0D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH DOT BELOW
+ 1E0F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH LINE BELOW
+ 1E11          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH CEDILLA
+ 1E13          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH CIRCUMFLEX BELOW
+ 1E15          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH MACRON AND GRAVE
+ 1E17          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH MACRON AND ACUTE
+ 1E19          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH TILDE BELOW
+ 1E1D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CEDILLA AND BREVE
+ 1E1F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER F WITH DOT ABOVE
+ 1E21          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH MACRON
+ 1E23          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH DOT ABOVE
+ 1E25          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH DOT BELOW
+ 1E27          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH DIAERESIS
+ 1E29          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH CEDILLA
+ 1E2B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH BREVE BELOW
+ 1E2D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH TILDE BELOW
+ 1E2F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH DIAERESIS AND ACUTE
+ 1E31          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH ACUTE
+ 1E33          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH DOT BELOW
+ 1E35          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH LINE BELOW
+ 1E37          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH DOT BELOW
+ 1E39          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH DOT BELOW AND MACRON
+ 1E3B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH LINE BELOW
+ 1E3D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER M WITH ACUTE
+ 1E41          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER M WITH DOT ABOVE
+ 1E43          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER M WITH DOT BELOW
+ 1E45          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH DOT ABOVE
+ 1E47          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH DOT BELOW
+ 1E49          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH LINE BELOW
+ 1E4B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH TILDE AND ACUTE
+ 1E4F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH TILDE AND DIAERESIS
+ 1E51          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH MACRON AND GRAVE
+ 1E53          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH MACRON AND ACUTE
+ 1E55          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH ACUTE
+ 1E57          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH DOT ABOVE
+ 1E59          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH DOT ABOVE
+ 1E5B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH DOT BELOW
+ 1E5D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH DOT BELOW AND MACRON
+ 1E5F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH LINE BELOW
+ 1E61          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH DOT ABOVE
+ 1E63          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH DOT BELOW
+ 1E65          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E67          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH CARON AND DOT ABOVE
+ 1E69          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH DOT ABOVE
+ 1E6D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH DOT BELOW
+ 1E6F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH LINE BELOW
+ 1E71          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER T WITH CIRCUMFLEX BELOW
+ 1E73          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DIAERESIS BELOW
+ 1E75          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH TILDE BELOW
+ 1E77          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH CIRCUMFLEX BELOW
+ 1E79          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH TILDE AND ACUTE
+ 1E7B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH MACRON AND DIAERESIS
+ 1E7D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER V WITH TILDE
+ 1E7F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER V WITH DOT BELOW
+ 1E81          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH GRAVE
+ 1E83          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH ACUTE
+ 1E85          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH DIAERESIS
+ 1E87          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH DOT ABOVE
+ 1E89          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH DOT BELOW
+ 1E8B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER X WITH DOT ABOVE
+ 1E8D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER X WITH DIAERESIS
+ 1E8F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH DOT ABOVE
+ 1E91          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH CIRCUMFLEX
+ 1E93          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH DOT BELOW
+ 1E95..1E9B    ; Changes_When_Titlecased # L&   [7] LATIN SMALL LETTER Z WITH LINE BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1EA1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH DOT BELOW
+ 1EA3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH HOOK ABOVE
+ 1EA5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH BREVE AND ACUTE
+ 1EB1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH BREVE AND GRAVE
+ 1EB3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH BREVE AND TILDE
+ 1EB7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER A WITH BREVE AND DOT BELOW
+ 1EB9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH DOT BELOW
+ 1EBB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH HOOK ABOVE
+ 1EBD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH TILDE
+ 1EBF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH HOOK ABOVE
+ 1ECB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER I WITH DOT BELOW
+ 1ECD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH DOT BELOW
+ 1ECF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HOOK ABOVE
+ 1ED1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HORN AND ACUTE
+ 1EDD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HORN AND GRAVE
+ 1EDF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HORN AND TILDE
+ 1EE3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH HORN AND DOT BELOW
+ 1EE5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH DOT BELOW
+ 1EE7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HOOK ABOVE
+ 1EE9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HORN AND ACUTE
+ 1EEB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HORN AND GRAVE
+ 1EED          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HORN AND TILDE
+ 1EF1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH HORN AND DOT BELOW
+ 1EF3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH GRAVE
+ 1EF5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH DOT BELOW
+ 1EF7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH HOOK ABOVE
+ 1EF9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Y WITH TILDE
+ 1EFB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER MIDDLE-WELSH LL
+ 1EFD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER MIDDLE-WELSH V
+ 1EFF..1F07    ; Changes_When_Titlecased # L&   [9] LATIN SMALL LETTER Y WITH LOOP..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F10..1F15    ; Changes_When_Titlecased # L&   [6] GREEK SMALL LETTER EPSILON WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F27    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F30..1F37    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER IOTA WITH PSILI..GREEK SMALL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F40..1F45    ; Changes_When_Titlecased # L&   [6] GREEK SMALL LETTER OMICRON WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F60..1F67    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER OMEGA WITH PSILI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F70..1F7D    ; Changes_When_Titlecased # L&  [14] GREEK SMALL LETTER ALPHA WITH VARIA..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1F87    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1F90..1F97    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1FA0..1FA7    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1FB0..1FB4    ; Changes_When_Titlecased # L&   [5] GREEK SMALL LETTER ALPHA WITH VRACHY..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FB7    ; Changes_When_Titlecased # L&   [2] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FBE          ; Changes_When_Titlecased # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; Changes_When_Titlecased # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FC7    ; Changes_When_Titlecased # L&   [2] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FD0..1FD3    ; Changes_When_Titlecased # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FD7    ; Changes_When_Titlecased # L&   [2] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND PERISPOMENI
+ 1FE0..1FE7    ; Changes_When_Titlecased # L&   [8] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND PERISPOMENI
+ 1FF2..1FF4    ; Changes_When_Titlecased # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FF7    ; Changes_When_Titlecased # L&   [2] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 214E          ; Changes_When_Titlecased # L&       TURNED SMALL F
+ 2170..217F    ; Changes_When_Titlecased # Nl  [16] SMALL ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2184          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER REVERSED C
+ 24D0..24E9    ; Changes_When_Titlecased # So  [26] CIRCLED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 2C30..2C5F    ; Changes_When_Titlecased # L&  [48] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
+ 2C61          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH DOUBLE BAR
+ 2C65..2C66    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER A WITH STROKE..LATIN SMALL LETTER T WITH DIAGONAL STROKE
+ 2C68          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER H WITH DESCENDER
+ 2C6A          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH DESCENDER
+ 2C6C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Z WITH DESCENDER
+ 2C73          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER W WITH HOOK
+ 2C76          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER HALF H
+ 2C81          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER ALFA
+ 2C83          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER VIDA
+ 2C85          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER GAMMA
+ 2C87          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER DALDA
+ 2C89          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER EIE
+ 2C8B          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER SOU
+ 2C8D          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER ZATA
+ 2C8F          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER HATE
+ 2C91          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER THETHE
+ 2C93          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER IAUDA
+ 2C95          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER KAPA
+ 2C97          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER LAULA
+ 2C99          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER MI
+ 2C9B          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER NI
+ 2C9D          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER KSI
+ 2C9F          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER O
+ 2CA1          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER PI
+ 2CA3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER RO
+ 2CA5          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER SIMA
+ 2CA7          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER TAU
+ 2CA9          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER UA
+ 2CAB          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER FI
+ 2CAD          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER KHI
+ 2CAF          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER PSI
+ 2CB1          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OOU
+ 2CB3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER DIALECT-P ALEF
+ 2CB5          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC AIN
+ 2CB7          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC EIE
+ 2CB9          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER DIALECT-P KAPA
+ 2CBB          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER DIALECT-P NI
+ 2CBD          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC NI
+ 2CBF          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC OOU
+ 2CC1          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER SAMPI
+ 2CC3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER CROSSED SHEI
+ 2CC5          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC SHEI
+ 2CC7          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC ESH
+ 2CC9          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER AKHMIMIC KHEI
+ 2CCB          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER DIALECT-P HORI
+ 2CCD          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC HORI
+ 2CCF          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC HA
+ 2CD1          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER L-SHAPED HA
+ 2CD3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC HEI
+ 2CD5          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC HAT
+ 2CD7          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC GANGIA
+ 2CD9          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC DJA
+ 2CDB          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD COPTIC SHIMA
+ 2CDD          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD NUBIAN SHIMA
+ 2CDF          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD NUBIAN NGI
+ 2CE1          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD NUBIAN NYI
+ 2CE3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER OLD NUBIAN WAU
+ 2CEC          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC SHEI
+ 2CEE          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF3          ; Changes_When_Titlecased # L&       COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; Changes_When_Titlecased # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Changes_When_Titlecased # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Changes_When_Titlecased # L&       GEORGIAN SMALL LETTER AEN
+ A641          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZEMLYA
+ A643          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DZELO
+ A645          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER REVERSED DZE
+ A647          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTA
+ A649          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DJERV
+ A64B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER MONOGRAPH UK
+ A64D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BROAD OMEGA
+ A64F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER NEUTRAL YER
+ A651          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER YERU WITH BACK YER
+ A653          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTIFIED YAT
+ A655          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER REVERSED YU
+ A657          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTIFIED A
+ A659          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER CLOSED LITTLE YUS
+ A65B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BLENDED YUS
+ A65D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER YN
+ A661          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER REVERSED TSE
+ A663          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SOFT DE
+ A665          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SOFT EL
+ A667          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SOFT EM
+ A669          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER MONOCULAR O
+ A66B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER BINOCULAR O
+ A66D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A681          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DWE
+ A683          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DZWE
+ A685          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER ZHWE
+ A687          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER CCHE
+ A689          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DZZE
+ A68B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER TE WITH MIDDLE HOOK
+ A68D          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER TWE
+ A68F          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER TSWE
+ A691          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER TSSE
+ A693          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER TCHE
+ A695          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER HWE
+ A697          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER SHWE
+ A699          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER DOUBLE O
+ A69B          ; Changes_When_Titlecased # L&       CYRILLIC SMALL LETTER CROSSED O
+ A723          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER EGYPTOLOGICAL ALEF
+ A725          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER EGYPTOLOGICAL AIN
+ A727          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER HENG
+ A729          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TZ
+ A72B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TRESILLO
+ A72D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER CUATRILLO
+ A72F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER CUATRILLO WITH COMMA
+ A733          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AA
+ A735          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AO
+ A737          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AU
+ A739          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AV
+ A73B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AV WITH HORIZONTAL BAR
+ A73D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER AY
+ A73F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER REVERSED C WITH DOT
+ A741          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH STROKE
+ A743          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH DIAGONAL STROKE
+ A745          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A747          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER BROKEN L
+ A749          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER L WITH HIGH STROKE
+ A74B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH LONG STROKE OVERLAY
+ A74D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER O WITH LOOP
+ A74F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER OO
+ A751          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH STROKE THROUGH DESCENDER
+ A753          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH FLOURISH
+ A755          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER P WITH SQUIRREL TAIL
+ A757          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Q WITH STROKE THROUGH DESCENDER
+ A759          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER Q WITH DIAGONAL STROKE
+ A75B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R ROTUNDA
+ A75D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER RUM ROTUNDA
+ A75F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER V WITH DIAGONAL STROKE
+ A761          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER VY
+ A763          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER VISIGOTHIC Z
+ A765          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER THORN WITH STROKE
+ A767          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A769          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER VEND
+ A76B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER ET
+ A76D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER IS
+ A76F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER CON
+ A77A          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR D
+ A77C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR F
+ A77F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TURNED INSULAR G
+ A781          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER TURNED L
+ A783          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR R
+ A785          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR S
+ A787          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER INSULAR T
+ A78C          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER SALTILLO
+ A791          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH DESCENDER
+ A793..A794    ; Changes_When_Titlecased # L&   [2] LATIN SMALL LETTER C WITH BAR..LATIN SMALL LETTER C WITH PALATAL HOOK
+ A797          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER B WITH FLOURISH
+ A799          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER F WITH STROKE
+ A79B          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER VOLAPUK AE
+ A79D          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER VOLAPUK OE
+ A79F          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER VOLAPUK UE
+ A7A1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER G WITH OBLIQUE STROKE
+ A7A3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER K WITH OBLIQUE STROKE
+ A7A5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER N WITH OBLIQUE STROKE
+ A7A7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER R WITH OBLIQUE STROKE
+ A7A9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH OBLIQUE STROKE
+ A7B5          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER BETA
+ A7B7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER OMEGA
+ A7B9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER U WITH STROKE
+ A7BB          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER GLOTTAL A
+ A7BD          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER GLOTTAL I
+ A7BF          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER GLOTTAL U
+ A7C1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER OLD POLISH O
+ A7C3          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER ANGLICANA W
+ A7C8          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY
+ A7CA          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D1          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER CLOSED INSULAR G
+ A7D7          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER MIDDLE SCOTS S
+ A7D9          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER SIGMOID S
+ A7F6          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER REVERSED HALF H
+ AB53          ; Changes_When_Titlecased # L&       LATIN SMALL LETTER CHI
+ AB70..ABBF    ; Changes_When_Titlecased # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ FB00..FB06    ; Changes_When_Titlecased # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Changes_When_Titlecased # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FF41..FF5A    ; Changes_When_Titlecased # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ 10428..1044F  ; Changes_When_Titlecased # L&  [40] DESERET SMALL LETTER LONG I..DESERET SMALL LETTER EW
+ 104D8..104FB  ; Changes_When_Titlecased # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10597..105A1  ; Changes_When_Titlecased # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Changes_When_Titlecased # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Changes_When_Titlecased # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Changes_When_Titlecased # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10CC0..10CF2  ; Changes_When_Titlecased # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 118C0..118DF  ; Changes_When_Titlecased # L&  [32] WARANG CITI SMALL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 16E60..16E7F  ; Changes_When_Titlecased # L&  [32] MEDEFAIDRIN SMALL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 1E922..1E943  ; Changes_When_Titlecased # L&  [34] ADLAM SMALL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 
+ # Total code points: 1452
+ 
+ # ================================================
+ 
+ # Derived Property:   Changes_When_Casefolded (CWCF)
+ #  Characters whose normalized forms are not stable under case folding.
+ #  For more information, see D142 in Section 3.13, "Default Case Algorithms".
+ #  Changes_When_Casefolded(X) is true when toCasefold(toNFD(X)) != toNFD(X)
+ 
+ 0041..005A    ; Changes_When_Casefolded # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 00B5          ; Changes_When_Casefolded # L&       MICRO SIGN
+ 00C0..00D6    ; Changes_When_Casefolded # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00DF    ; Changes_When_Casefolded # L&   [8] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER SHARP S
+ 0100          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH MACRON
+ 0102          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE
+ 0104          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH OGONEK
+ 0106          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER C WITH ACUTE
+ 0108          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ 010A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER C WITH DOT ABOVE
+ 010C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER C WITH CARON
+ 010E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH CARON
+ 0110          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH STROKE
+ 0112          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH MACRON
+ 0114          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH BREVE
+ 0116          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH DOT ABOVE
+ 0118          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH OGONEK
+ 011A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CARON
+ 011C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ 011E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH BREVE
+ 0120          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH DOT ABOVE
+ 0122          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH CEDILLA
+ 0124          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ 0126          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH STROKE
+ 0128          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH TILDE
+ 012A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH MACRON
+ 012C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH BREVE
+ 012E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH OGONEK
+ 0130          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132          ; Changes_When_Casefolded # L&       LATIN CAPITAL LIGATURE IJ
+ 0134          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ 0136          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH CEDILLA
+ 0139          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH ACUTE
+ 013B          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH CEDILLA
+ 013D          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH CARON
+ 013F          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH MIDDLE DOT
+ 0141          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH STROKE
+ 0143          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH ACUTE
+ 0145          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH CEDILLA
+ 0147          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH CARON
+ 0149..014A    ; Changes_When_Casefolded # L&   [2] LATIN SMALL LETTER N PRECEDED BY APOSTROPHE..LATIN CAPITAL LETTER ENG
+ 014C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH MACRON
+ 014E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH BREVE
+ 0150          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ 0152          ; Changes_When_Casefolded # L&       LATIN CAPITAL LIGATURE OE
+ 0154          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH ACUTE
+ 0156          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH CEDILLA
+ 0158          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH CARON
+ 015A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH ACUTE
+ 015C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ 015E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH CEDILLA
+ 0160          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH CARON
+ 0162          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH CEDILLA
+ 0164          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH CARON
+ 0166          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH STROKE
+ 0168          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH TILDE
+ 016A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH MACRON
+ 016C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH BREVE
+ 016E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH RING ABOVE
+ 0170          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ 0172          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH OGONEK
+ 0174          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ 0176          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ 0178..0179    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+ 017B          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ 017D          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH CARON
+ 017F          ; Changes_When_Casefolded # L&       LATIN SMALL LETTER LONG S
+ 0181..0182    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+ 0184          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER TONE SIX
+ 0186..0187    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+ 0189..018B    ; Changes_When_Casefolded # L&   [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+ 018E..0191    ; Changes_When_Casefolded # L&   [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+ 0193..0194    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+ 0196..0198    ; Changes_When_Casefolded # L&   [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+ 019C..019D    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+ 019F..01A0    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+ 01A2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER OI
+ 01A4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER P WITH HOOK
+ 01A6..01A7    ; Changes_When_Casefolded # L&   [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+ 01A9          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER ESH
+ 01AC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH HOOK
+ 01AE..01AF    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+ 01B1..01B3    ; Changes_When_Casefolded # L&   [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+ 01B5          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH STROKE
+ 01B7..01B8    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+ 01BC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER TONE FIVE
+ 01C4..01C5    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER D WITH SMALL LETTER Z WITH CARON
+ 01C7..01C8    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER LJ..LATIN CAPITAL LETTER L WITH SMALL LETTER J
+ 01CA..01CB    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER NJ..LATIN CAPITAL LETTER N WITH SMALL LETTER J
+ 01CD          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH CARON
+ 01CF          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH CARON
+ 01D1          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH CARON
+ 01D3          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH CARON
+ 01D5          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+ 01D7          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+ 01D9          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ 01DB          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+ 01E0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+ 01E2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AE WITH MACRON
+ 01E4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH STROKE
+ 01E6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH CARON
+ 01E8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH CARON
+ 01EA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH OGONEK
+ 01EC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+ 01EE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER EZH WITH CARON
+ 01F1..01F2    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER D WITH SMALL LETTER Z
+ 01F4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH ACUTE
+ 01F6..01F8    ; Changes_When_Casefolded # L&   [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+ 01FA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ 01FC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AE WITH ACUTE
+ 01FE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ 0200          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+ 0202          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH INVERTED BREVE
+ 0204          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+ 0206          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH INVERTED BREVE
+ 0208          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+ 020A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH INVERTED BREVE
+ 020C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+ 020E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH INVERTED BREVE
+ 0210          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+ 0212          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH INVERTED BREVE
+ 0214          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+ 0216          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH INVERTED BREVE
+ 0218          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH COMMA BELOW
+ 021A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH COMMA BELOW
+ 021C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER YOGH
+ 021E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH CARON
+ 0220          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+ 0222          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER OU
+ 0224          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH HOOK
+ 0226          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE
+ 0228          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CEDILLA
+ 022A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+ 022C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+ 022E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE
+ 0230          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+ 0232          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH MACRON
+ 023A..023B    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+ 023D..023E    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+ 0241          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL STOP
+ 0243..0246    ; Changes_When_Casefolded # L&   [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+ 0248          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER J WITH STROKE
+ 024A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+ 024C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH STROKE
+ 024E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH STROKE
+ 0345          ; Changes_When_Casefolded # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0370          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER HETA
+ 0372          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER ARCHAIC SAMPI
+ 0376          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+ 037F          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Changes_When_Casefolded # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..038F    ; Changes_When_Casefolded # L&   [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 0391..03A1    ; Changes_When_Casefolded # L&  [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+ 03A3..03AB    ; Changes_When_Casefolded # L&   [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 03C2          ; Changes_When_Casefolded # L&       GREEK SMALL LETTER FINAL SIGMA
+ 03CF..03D1    ; Changes_When_Casefolded # L&   [3] GREEK CAPITAL KAI SYMBOL..GREEK THETA SYMBOL
+ 03D5..03D6    ; Changes_When_Casefolded # L&   [2] GREEK PHI SYMBOL..GREEK PI SYMBOL
+ 03D8          ; Changes_When_Casefolded # L&       GREEK LETTER ARCHAIC KOPPA
+ 03DA          ; Changes_When_Casefolded # L&       GREEK LETTER STIGMA
+ 03DC          ; Changes_When_Casefolded # L&       GREEK LETTER DIGAMMA
+ 03DE          ; Changes_When_Casefolded # L&       GREEK LETTER KOPPA
+ 03E0          ; Changes_When_Casefolded # L&       GREEK LETTER SAMPI
+ 03E2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER SHEI
+ 03E4          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER FEI
+ 03E6          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER KHEI
+ 03E8          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER HORI
+ 03EA          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER GANGIA
+ 03EC          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER SHIMA
+ 03EE          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER DEI
+ 03F0..03F1    ; Changes_When_Casefolded # L&   [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL
+ 03F4..03F5    ; Changes_When_Casefolded # L&   [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+ 03F7          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER SHO
+ 03F9..03FA    ; Changes_When_Casefolded # L&   [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+ 03FD..042F    ; Changes_When_Casefolded # L&  [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+ 0460          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER OMEGA
+ 0462          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER YAT
+ 0464          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED E
+ 0466          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER LITTLE YUS
+ 0468          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+ 046A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BIG YUS
+ 046C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+ 046E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KSI
+ 0470          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER PSI
+ 0472          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER FITA
+ 0474          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IZHITSA
+ 0476          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0478          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER UK
+ 047A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ROUND OMEGA
+ 047C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+ 047E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER OT
+ 0480          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOPPA
+ 048A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+ 048C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+ 048E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ER WITH TICK
+ 0490          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ 0492          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ 0494          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+ 0496          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ 0498          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+ 049A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ 049C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+ 049E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH STROKE
+ 04A0          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BASHKIR KA
+ 04A2          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+ 04A4          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LIGATURE EN GHE
+ 04A6          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+ 04A8          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN HA
+ 04AA          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+ 04AC          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+ 04AE          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER STRAIGHT U
+ 04B0          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ 04B2          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ 04B4          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LIGATURE TE TSE
+ 04B6          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ 04B8          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+ 04BA          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SHHA
+ 04BC          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+ 04BE          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C0..04C1    ; Changes_When_Casefolded # L&   [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+ 04C3          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH HOOK
+ 04C5          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH TAIL
+ 04C7          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH HOOK
+ 04C9          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH TAIL
+ 04CB          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+ 04CD          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EM WITH TAIL
+ 04D0          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER A WITH BREVE
+ 04D2          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+ 04D4          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LIGATURE A IE
+ 04D6          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IE WITH BREVE
+ 04D8          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SCHWA
+ 04DA          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+ 04DC          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+ 04DE          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+ 04E0          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+ 04E2          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER I WITH MACRON
+ 04E4          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+ 04E6          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+ 04E8          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BARRED O
+ 04EA          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+ 04EC          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ 04EE          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER U WITH MACRON
+ 04F0          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+ 04F2          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+ 04F4          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+ 04F6          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+ 04F8          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+ 04FA          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+ 04FC          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER HA WITH HOOK
+ 04FE          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER HA WITH STROKE
+ 0500          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI DE
+ 0502          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI DJE
+ 0504          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI ZJE
+ 0506          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI DZJE
+ 0508          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI LJE
+ 050A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI NJE
+ 050C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI SJE
+ 050E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI TJE
+ 0510          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED ZE
+ 0512          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH HOOK
+ 0514          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER LHA
+ 0516          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER RHA
+ 0518          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER YAE
+ 051A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER QA
+ 051C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER WE
+ 051E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ALEUT KA
+ 0520          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+ 0522          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+ 0524          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+ 0526          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+ 0528          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+ 052A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DZZHE
+ 052C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DCHE
+ 052E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+ 0531..0556    ; Changes_When_Casefolded # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0587          ; Changes_When_Casefolded # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 10A0..10C5    ; Changes_When_Casefolded # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Changes_When_Casefolded # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Changes_When_Casefolded # L&       GEORGIAN CAPITAL LETTER AEN
+ 13F8..13FD    ; Changes_When_Casefolded # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1C80..1C88    ; Changes_When_Casefolded # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; Changes_When_Casefolded # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Changes_When_Casefolded # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1E00          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH RING BELOW
+ 1E02          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER B WITH DOT ABOVE
+ 1E04          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER B WITH DOT BELOW
+ 1E06          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER B WITH LINE BELOW
+ 1E08          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+ 1E0A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH DOT ABOVE
+ 1E0C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH DOT BELOW
+ 1E0E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH LINE BELOW
+ 1E10          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH CEDILLA
+ 1E12          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+ 1E14          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+ 1E16          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+ 1E18          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH TILDE BELOW
+ 1E1C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+ 1E1E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER F WITH DOT ABOVE
+ 1E20          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH MACRON
+ 1E22          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH DOT ABOVE
+ 1E24          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH DOT BELOW
+ 1E26          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH DIAERESIS
+ 1E28          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH CEDILLA
+ 1E2A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH BREVE BELOW
+ 1E2C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH TILDE BELOW
+ 1E2E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+ 1E30          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH ACUTE
+ 1E32          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH DOT BELOW
+ 1E34          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH LINE BELOW
+ 1E36          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH DOT BELOW
+ 1E38          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+ 1E3A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH LINE BELOW
+ 1E3C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER M WITH ACUTE
+ 1E40          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER M WITH DOT ABOVE
+ 1E42          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER M WITH DOT BELOW
+ 1E44          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH DOT ABOVE
+ 1E46          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH DOT BELOW
+ 1E48          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH LINE BELOW
+ 1E4A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+ 1E4E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+ 1E50          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+ 1E52          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+ 1E54          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER P WITH ACUTE
+ 1E56          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER P WITH DOT ABOVE
+ 1E58          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOT ABOVE
+ 1E5A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOT BELOW
+ 1E5C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+ 1E5E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH LINE BELOW
+ 1E60          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH DOT ABOVE
+ 1E62          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH DOT BELOW
+ 1E64          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E66          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+ 1E68          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH DOT ABOVE
+ 1E6C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH DOT BELOW
+ 1E6E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH LINE BELOW
+ 1E70          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+ 1E72          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+ 1E74          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH TILDE BELOW
+ 1E76          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+ 1E78          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+ 1E7A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+ 1E7C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER V WITH TILDE
+ 1E7E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER V WITH DOT BELOW
+ 1E80          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH GRAVE
+ 1E82          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH ACUTE
+ 1E84          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH DIAERESIS
+ 1E86          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH DOT ABOVE
+ 1E88          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH DOT BELOW
+ 1E8A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER X WITH DOT ABOVE
+ 1E8C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER X WITH DIAERESIS
+ 1E8E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH DOT ABOVE
+ 1E90          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+ 1E92          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH DOT BELOW
+ 1E94          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH LINE BELOW
+ 1E9A..1E9B    ; Changes_When_Casefolded # L&   [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1E9E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER SHARP S
+ 1EA0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOT BELOW
+ 1EA2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ 1EA4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ 1EB0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ 1EB2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ 1EB6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ 1EB8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH DOT BELOW
+ 1EBA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ 1EBC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH TILDE
+ 1EBE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ 1ECA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER I WITH DOT BELOW
+ 1ECC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOT BELOW
+ 1ECE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ 1ED0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ 1EDC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ 1EDE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ 1EE2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ 1EE4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH DOT BELOW
+ 1EE6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ 1EE8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ 1EEA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ 1EEC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND TILDE
+ 1EF0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ 1EF2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH GRAVE
+ 1EF4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH DOT BELOW
+ 1EF6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ 1EF8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH TILDE
+ 1EFA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER MIDDLE-WELSH LL
+ 1EFC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER MIDDLE-WELSH V
+ 1EFE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Y WITH LOOP
+ 1F08..1F0F    ; Changes_When_Casefolded # L&   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F18..1F1D    ; Changes_When_Casefolded # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F28..1F2F    ; Changes_When_Casefolded # L&   [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F38..1F3F    ; Changes_When_Casefolded # L&   [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F48..1F4D    ; Changes_When_Casefolded # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F59          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F          ; Changes_When_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F68..1F6F    ; Changes_When_Casefolded # L&   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F80..1FAF    ; Changes_When_Casefolded # L&  [48] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FB2..1FB4    ; Changes_When_Casefolded # L&   [3] GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB7..1FBC    ; Changes_When_Casefolded # L&   [6] GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FC2..1FC4    ; Changes_When_Casefolded # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC7..1FCC    ; Changes_When_Casefolded # L&   [6] GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD8..1FDB    ; Changes_When_Casefolded # L&   [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE8..1FEC    ; Changes_When_Casefolded # L&   [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; Changes_When_Casefolded # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF7..1FFC    ; Changes_When_Casefolded # L&   [6] GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2126          ; Changes_When_Casefolded # L&       OHM SIGN
+ 212A..212B    ; Changes_When_Casefolded # L&   [2] KELVIN SIGN..ANGSTROM SIGN
+ 2132          ; Changes_When_Casefolded # L&       TURNED CAPITAL F
+ 2160..216F    ; Changes_When_Casefolded # Nl  [16] ROMAN NUMERAL ONE..ROMAN NUMERAL ONE THOUSAND
+ 2183          ; Changes_When_Casefolded # L&       ROMAN NUMERAL REVERSED ONE HUNDRED
+ 24B6..24CF    ; Changes_When_Casefolded # So  [26] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN CAPITAL LETTER Z
+ 2C00..2C2F    ; Changes_When_Casefolded # L&  [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+ 2C60          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH DOUBLE BAR
+ 2C62..2C64    ; Changes_When_Casefolded # L&   [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+ 2C67          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER H WITH DESCENDER
+ 2C69          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH DESCENDER
+ 2C6B          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Z WITH DESCENDER
+ 2C6D..2C70    ; Changes_When_Casefolded # L&   [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA
+ 2C72          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER W WITH HOOK
+ 2C75          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER HALF H
+ 2C7E..2C80    ; Changes_When_Casefolded # L&   [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA
+ 2C82          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER VIDA
+ 2C84          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER GAMMA
+ 2C86          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER DALDA
+ 2C88          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER EIE
+ 2C8A          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER SOU
+ 2C8C          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER ZATA
+ 2C8E          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER HATE
+ 2C90          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER THETHE
+ 2C92          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER IAUDA
+ 2C94          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER KAPA
+ 2C96          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER LAULA
+ 2C98          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER MI
+ 2C9A          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER NI
+ 2C9C          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER KSI
+ 2C9E          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER O
+ 2CA0          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER PI
+ 2CA2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER RO
+ 2CA4          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER SIMA
+ 2CA6          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER TAU
+ 2CA8          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER UA
+ 2CAA          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER FI
+ 2CAC          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER KHI
+ 2CAE          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER PSI
+ 2CB0          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OOU
+ 2CB2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P ALEF
+ 2CB4          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC AIN
+ 2CB6          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+ 2CB8          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P KAPA
+ 2CBA          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P NI
+ 2CBC          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+ 2CBE          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC OOU
+ 2CC0          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER SAMPI
+ 2CC2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER CROSSED SHEI
+ 2CC4          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC SHEI
+ 2CC6          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC ESH
+ 2CC8          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER AKHMIMIC KHEI
+ 2CCA          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P HORI
+ 2CCC          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HORI
+ 2CCE          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HA
+ 2CD0          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER L-SHAPED HA
+ 2CD2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HEI
+ 2CD4          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HAT
+ 2CD6          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+ 2CD8          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC DJA
+ 2CDA          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+ 2CDC          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+ 2CDE          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN NGI
+ 2CE0          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN NYI
+ 2CE2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN WAU
+ 2CEB          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+ 2CED          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2          ; Changes_When_Casefolded # L&       COPTIC CAPITAL LETTER BOHAIRIC KHEI
+ A640          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ZEMLYA
+ A642          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DZELO
+ A644          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED DZE
+ A646          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTA
+ A648          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DJERV
+ A64A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER MONOGRAPH UK
+ A64C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BROAD OMEGA
+ A64E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER NEUTRAL YER
+ A650          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+ A652          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED YAT
+ A654          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED YU
+ A656          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED A
+ A658          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+ A65A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BLENDED YUS
+ A65C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER YN
+ A660          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED TSE
+ A662          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SOFT DE
+ A664          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SOFT EL
+ A666          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SOFT EM
+ A668          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER MONOCULAR O
+ A66A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER BINOCULAR O
+ A66C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+ A680          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DWE
+ A682          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DZWE
+ A684          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER ZHWE
+ A686          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER CCHE
+ A688          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DZZE
+ A68A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+ A68C          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER TWE
+ A68E          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER TSWE
+ A690          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER TSSE
+ A692          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER TCHE
+ A694          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER HWE
+ A696          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER SHWE
+ A698          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER DOUBLE O
+ A69A          ; Changes_When_Casefolded # L&       CYRILLIC CAPITAL LETTER CROSSED O
+ A722          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+ A724          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+ A726          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER HENG
+ A728          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER TZ
+ A72A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER TRESILLO
+ A72C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER CUATRILLO
+ A72E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+ A732          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AA
+ A734          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AO
+ A736          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AU
+ A738          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AV
+ A73A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+ A73C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER AY
+ A73E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER REVERSED C WITH DOT
+ A740          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH STROKE
+ A742          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+ A744          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A746          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER BROKEN L
+ A748          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER L WITH HIGH STROKE
+ A74A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+ A74C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER O WITH LOOP
+ A74E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER OO
+ A750          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+ A752          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER P WITH FLOURISH
+ A754          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+ A756          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+ A758          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+ A75A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R ROTUNDA
+ A75C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER RUM ROTUNDA
+ A75E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+ A760          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER VY
+ A762          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER VISIGOTHIC Z
+ A764          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER THORN WITH STROKE
+ A766          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A768          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER VEND
+ A76A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER ET
+ A76C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER IS
+ A76E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER CON
+ A779          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER INSULAR D
+ A77B          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER INSULAR F
+ A77D..A77E    ; Changes_When_Casefolded # L&   [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G
+ A780          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER TURNED L
+ A782          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER INSULAR R
+ A784          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER INSULAR S
+ A786          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER INSULAR T
+ A78B          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER SALTILLO
+ A78D          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER TURNED H
+ A790          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH DESCENDER
+ A792          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER C WITH BAR
+ A796          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER B WITH FLOURISH
+ A798          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER F WITH STROKE
+ A79A          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER VOLAPUK AE
+ A79C          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER VOLAPUK OE
+ A79E          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER VOLAPUK UE
+ A7A0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+ A7A2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+ A7A4          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+ A7A6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+ A7A8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+ A7AA..A7AE    ; Changes_When_Casefolded # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
+ A7B0..A7B4    ; Changes_When_Casefolded # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
+ A7B6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER OMEGA
+ A7B8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER U WITH STROKE
+ A7BA          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL A
+ A7BC          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL I
+ A7BE          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL U
+ A7C0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER OLD POLISH O
+ A7C2          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER ANGLICANA W
+ A7C4..A7C7    ; Changes_When_Casefolded # L&   [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+ A7C9          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER CLOSED INSULAR G
+ A7D6          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER MIDDLE SCOTS S
+ A7D8          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER SIGMOID S
+ A7F5          ; Changes_When_Casefolded # L&       LATIN CAPITAL LETTER REVERSED HALF H
+ AB70..ABBF    ; Changes_When_Casefolded # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ FB00..FB06    ; Changes_When_Casefolded # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Changes_When_Casefolded # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FF21..FF3A    ; Changes_When_Casefolded # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ 10400..10427  ; Changes_When_Casefolded # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+ 104B0..104D3  ; Changes_When_Casefolded # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 10570..1057A  ; Changes_When_Casefolded # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Changes_When_Casefolded # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Changes_When_Casefolded # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Changes_When_Casefolded # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10C80..10CB2  ; Changes_When_Casefolded # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 118A0..118BF  ; Changes_When_Casefolded # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
+ 16E40..16E5F  ; Changes_When_Casefolded # L&  [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
+ 1E900..1E921  ; Changes_When_Casefolded # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
+ 
+ # Total code points: 1506
+ 
+ # ================================================
+ 
+ # Derived Property:   Changes_When_Casemapped (CWCM)
+ #  Characters whose normalized forms are not stable under case mapping.
+ #  For more information, see D143 in Section 3.13, "Default Case Algorithms".
+ #  Changes_When_Casemapped(X) is true when CWL(X), or CWT(X), or CWU(X)
+ 
+ 0041..005A    ; Changes_When_Casemapped # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 0061..007A    ; Changes_When_Casemapped # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00B5          ; Changes_When_Casemapped # L&       MICRO SIGN
+ 00C0..00D6    ; Changes_When_Casemapped # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; Changes_When_Casemapped # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..0137    ; Changes_When_Casemapped # L&  [64] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER K WITH CEDILLA
+ 0139..018C    ; Changes_When_Casemapped # L&  [84] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER D WITH TOPBAR
+ 018E..019A    ; Changes_When_Casemapped # L&  [13] LATIN CAPITAL LETTER REVERSED E..LATIN SMALL LETTER L WITH BAR
+ 019C..01A9    ; Changes_When_Casemapped # L&  [14] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER ESH
+ 01AC..01B9    ; Changes_When_Casemapped # L&  [14] LATIN CAPITAL LETTER T WITH HOOK..LATIN SMALL LETTER EZH REVERSED
+ 01BC..01BD    ; Changes_When_Casemapped # L&   [2] LATIN CAPITAL LETTER TONE FIVE..LATIN SMALL LETTER TONE FIVE
+ 01BF          ; Changes_When_Casemapped # L&       LATIN LETTER WYNN
+ 01C4..0220    ; Changes_When_Casemapped # L&  [93] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+ 0222..0233    ; Changes_When_Casemapped # L&  [18] LATIN CAPITAL LETTER OU..LATIN SMALL LETTER Y WITH MACRON
+ 023A..0254    ; Changes_When_Casemapped # L&  [27] LATIN CAPITAL LETTER A WITH STROKE..LATIN SMALL LETTER OPEN O
+ 0256..0257    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER D WITH TAIL..LATIN SMALL LETTER D WITH HOOK
+ 0259          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER SCHWA
+ 025B..025C    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER OPEN E..LATIN SMALL LETTER REVERSED OPEN E
+ 0260..0261    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER G WITH HOOK..LATIN SMALL LETTER SCRIPT G
+ 0263          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER GAMMA
+ 0265..0266    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER TURNED H..LATIN SMALL LETTER H WITH HOOK
+ 0268..026C    ; Changes_When_Casemapped # L&   [5] LATIN SMALL LETTER I WITH STROKE..LATIN SMALL LETTER L WITH BELT
+ 026F          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER TURNED M
+ 0271..0272    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER M WITH HOOK..LATIN SMALL LETTER N WITH LEFT HOOK
+ 0275          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER BARRED O
+ 027D          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER R WITH TAIL
+ 0280          ; Changes_When_Casemapped # L&       LATIN LETTER SMALL CAPITAL R
+ 0282..0283    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER S WITH HOOK..LATIN SMALL LETTER ESH
+ 0287..028C    ; Changes_When_Casemapped # L&   [6] LATIN SMALL LETTER TURNED T..LATIN SMALL LETTER TURNED V
+ 0292          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER EZH
+ 029D..029E    ; Changes_When_Casemapped # L&   [2] LATIN SMALL LETTER J WITH CROSSED-TAIL..LATIN SMALL LETTER TURNED K
+ 0345          ; Changes_When_Casemapped # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0370..0373    ; Changes_When_Casemapped # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0376..0377    ; Changes_When_Casemapped # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037B..037D    ; Changes_When_Casemapped # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; Changes_When_Casemapped # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; Changes_When_Casemapped # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Changes_When_Casemapped # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Changes_When_Casemapped # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; Changes_When_Casemapped # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03D1    ; Changes_When_Casemapped # L&  [47] GREEK CAPITAL LETTER SIGMA..GREEK THETA SYMBOL
+ 03D5..03F5    ; Changes_When_Casemapped # L&  [33] GREEK PHI SYMBOL..GREEK LUNATE EPSILON SYMBOL
+ 03F7..03FB    ; Changes_When_Casemapped # L&   [5] GREEK CAPITAL LETTER SHO..GREEK SMALL LETTER SAN
+ 03FD..0481    ; Changes_When_Casemapped # L& [133] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC SMALL LETTER KOPPA
+ 048A..052F    ; Changes_When_Casemapped # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; Changes_When_Casemapped # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0561..0587    ; Changes_When_Casemapped # L&  [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+ 10A0..10C5    ; Changes_When_Casemapped # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Changes_When_Casemapped # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Changes_When_Casemapped # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; Changes_When_Casemapped # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FD..10FF    ; Changes_When_Casemapped # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 13A0..13F5    ; Changes_When_Casemapped # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; Changes_When_Casemapped # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1C80..1C88    ; Changes_When_Casemapped # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; Changes_When_Casemapped # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Changes_When_Casemapped # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1D79          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER INSULAR G
+ 1D7D          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER P WITH STROKE
+ 1D8E          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER Z WITH PALATAL HOOK
+ 1E00..1E9B    ; Changes_When_Casemapped # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1E9E          ; Changes_When_Casemapped # L&       LATIN CAPITAL LETTER SHARP S
+ 1EA0..1F15    ; Changes_When_Casemapped # L& [118] LATIN CAPITAL LETTER A WITH DOT BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; Changes_When_Casemapped # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; Changes_When_Casemapped # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; Changes_When_Casemapped # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Changes_When_Casemapped # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; Changes_When_Casemapped # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Changes_When_Casemapped # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Changes_When_Casemapped # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; Changes_When_Casemapped # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Changes_When_Casemapped # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; Changes_When_Casemapped # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; Changes_When_Casemapped # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; Changes_When_Casemapped # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; Changes_When_Casemapped # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; Changes_When_Casemapped # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; Changes_When_Casemapped # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; Changes_When_Casemapped # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; Changes_When_Casemapped # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; Changes_When_Casemapped # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2126          ; Changes_When_Casemapped # L&       OHM SIGN
+ 212A..212B    ; Changes_When_Casemapped # L&   [2] KELVIN SIGN..ANGSTROM SIGN
+ 2132          ; Changes_When_Casemapped # L&       TURNED CAPITAL F
+ 214E          ; Changes_When_Casemapped # L&       TURNED SMALL F
+ 2160..217F    ; Changes_When_Casemapped # Nl  [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2183..2184    ; Changes_When_Casemapped # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 24B6..24E9    ; Changes_When_Casemapped # So  [52] CIRCLED LATIN CAPITAL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 2C00..2C70    ; Changes_When_Casemapped # L& [113] GLAGOLITIC CAPITAL LETTER AZU..LATIN CAPITAL LETTER TURNED ALPHA
+ 2C72..2C73    ; Changes_When_Casemapped # L&   [2] LATIN CAPITAL LETTER W WITH HOOK..LATIN SMALL LETTER W WITH HOOK
+ 2C75..2C76    ; Changes_When_Casemapped # L&   [2] LATIN CAPITAL LETTER HALF H..LATIN SMALL LETTER HALF H
+ 2C7E..2CE3    ; Changes_When_Casemapped # L& [102] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SMALL LETTER OLD NUBIAN WAU
+ 2CEB..2CEE    ; Changes_When_Casemapped # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2..2CF3    ; Changes_When_Casemapped # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; Changes_When_Casemapped # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Changes_When_Casemapped # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Changes_When_Casemapped # L&       GEORGIAN SMALL LETTER AEN
+ A640..A66D    ; Changes_When_Casemapped # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A680..A69B    ; Changes_When_Casemapped # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A722..A72F    ; Changes_When_Casemapped # L&  [14] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CUATRILLO WITH COMMA
+ A732..A76F    ; Changes_When_Casemapped # L&  [62] LATIN CAPITAL LETTER AA..LATIN SMALL LETTER CON
+ A779..A787    ; Changes_When_Casemapped # L&  [15] LATIN CAPITAL LETTER INSULAR D..LATIN SMALL LETTER INSULAR T
+ A78B..A78D    ; Changes_When_Casemapped # L&   [3] LATIN CAPITAL LETTER SALTILLO..LATIN CAPITAL LETTER TURNED H
+ A790..A794    ; Changes_When_Casemapped # L&   [5] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER C WITH PALATAL HOOK
+ A796..A7AE    ; Changes_When_Casemapped # L&  [25] LATIN CAPITAL LETTER B WITH FLOURISH..LATIN CAPITAL LETTER SMALL CAPITAL I
+ A7B0..A7CA    ; Changes_When_Casemapped # L&  [27] LATIN CAPITAL LETTER TURNED K..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; Changes_When_Casemapped # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D6..A7D9    ; Changes_When_Casemapped # L&   [4] LATIN CAPITAL LETTER MIDDLE SCOTS S..LATIN SMALL LETTER SIGMOID S
+ A7F5..A7F6    ; Changes_When_Casemapped # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ AB53          ; Changes_When_Casemapped # L&       LATIN SMALL LETTER CHI
+ AB70..ABBF    ; Changes_When_Casemapped # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ FB00..FB06    ; Changes_When_Casemapped # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Changes_When_Casemapped # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FF21..FF3A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF41..FF5A    ; Changes_When_Casemapped # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ 10400..1044F  ; Changes_When_Casemapped # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 104B0..104D3  ; Changes_When_Casemapped # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; Changes_When_Casemapped # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10570..1057A  ; Changes_When_Casemapped # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Changes_When_Casemapped # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Changes_When_Casemapped # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Changes_When_Casemapped # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; Changes_When_Casemapped # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Changes_When_Casemapped # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Changes_When_Casemapped # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Changes_When_Casemapped # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10C80..10CB2  ; Changes_When_Casemapped # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; Changes_When_Casemapped # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 118A0..118DF  ; Changes_When_Casemapped # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 16E40..16E7F  ; Changes_When_Casemapped # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 1E900..1E943  ; Changes_When_Casemapped # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 
+ # Total code points: 2927
+ 
+ # ================================================
+ 
+ # Derived Property: ID_Start
+ #  Characters that can start an identifier.
+ #  Generated from:
+ #      Lu + Ll + Lt + Lm + Lo + Nl
+ #    + Other_ID_Start
+ #    - Pattern_Syntax
+ #    - Pattern_White_Space
+ #  NOTE: See UAX #31 for more information
+ 
+ 0041..005A    ; ID_Start # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 0061..007A    ; ID_Start # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; ID_Start # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; ID_Start # L&       MICRO SIGN
+ 00BA          ; ID_Start # Lo       MASCULINE ORDINAL INDICATOR
+ 00C0..00D6    ; ID_Start # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; ID_Start # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..01BA    ; ID_Start # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BB          ; ID_Start # Lo       LATIN LETTER TWO WITH STROKE
+ 01BC..01BF    ; ID_Start # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C0..01C3    ; ID_Start # Lo   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+ 01C4..0293    ; ID_Start # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0294          ; ID_Start # Lo       LATIN LETTER GLOTTAL STOP
+ 0295..02AF    ; ID_Start # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02C1    ; ID_Start # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C6..02D1    ; ID_Start # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02E0..02E4    ; ID_Start # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02EC          ; ID_Start # Lm       MODIFIER LETTER VOICING
+ 02EE          ; ID_Start # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 0370..0373    ; ID_Start # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0374          ; ID_Start # Lm       GREEK NUMERAL SIGN
+ 0376..0377    ; ID_Start # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; ID_Start # Lm       GREEK YPOGEGRAMMENI
+ 037B..037D    ; ID_Start # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; ID_Start # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; ID_Start # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; ID_Start # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; ID_Start # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; ID_Start # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; ID_Start # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F7..0481    ; ID_Start # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 048A..052F    ; ID_Start # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; ID_Start # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0559          ; ID_Start # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 0560..0588    ; ID_Start # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 05D0..05EA    ; ID_Start # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+ 05EF..05F2    ; ID_Start # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+ 0620..063F    ; ID_Start # Lo  [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+ 0640          ; ID_Start # Lm       ARABIC TATWEEL
+ 0641..064A    ; ID_Start # Lo  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+ 066E..066F    ; ID_Start # Lo   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+ 0671..06D3    ; ID_Start # Lo  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 06D5          ; ID_Start # Lo       ARABIC LETTER AE
+ 06E5..06E6    ; ID_Start # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06EE..06EF    ; ID_Start # Lo   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+ 06FA..06FC    ; ID_Start # Lo   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+ 06FF          ; ID_Start # Lo       ARABIC LETTER HEH WITH INVERTED V
+ 0710          ; ID_Start # Lo       SYRIAC LETTER ALAPH
+ 0712..072F    ; ID_Start # Lo  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+ 074D..07A5    ; ID_Start # Lo  [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+ 07B1          ; ID_Start # Lo       THAANA LETTER NAA
+ 07CA..07EA    ; ID_Start # Lo  [33] NKO LETTER A..NKO LETTER JONA RA
+ 07F4..07F5    ; ID_Start # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07FA          ; ID_Start # Lm       NKO LAJANYALAN
+ 0800..0815    ; ID_Start # Lo  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+ 081A          ; ID_Start # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 0824          ; ID_Start # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0828          ; ID_Start # Lm       SAMARITAN MODIFIER LETTER I
+ 0840..0858    ; ID_Start # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+ 0860..086A    ; ID_Start # Lo  [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+ 0870..0887    ; ID_Start # Lo  [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+ 0889..088E    ; ID_Start # Lo   [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+ 08A0..08C8    ; ID_Start # Lo  [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+ 08C9          ; ID_Start # Lm       ARABIC SMALL FARSI YEH
+ 0904..0939    ; ID_Start # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+ 093D          ; ID_Start # Lo       DEVANAGARI SIGN AVAGRAHA
+ 0950          ; ID_Start # Lo       DEVANAGARI OM
+ 0958..0961    ; ID_Start # Lo  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+ 0971          ; ID_Start # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0972..0980    ; ID_Start # Lo  [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+ 0985..098C    ; ID_Start # Lo   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+ 098F..0990    ; ID_Start # Lo   [2] BENGALI LETTER E..BENGALI LETTER AI
+ 0993..09A8    ; ID_Start # Lo  [22] BENGALI LETTER O..BENGALI LETTER NA
+ 09AA..09B0    ; ID_Start # Lo   [7] BENGALI LETTER PA..BENGALI LETTER RA
+ 09B2          ; ID_Start # Lo       BENGALI LETTER LA
+ 09B6..09B9    ; ID_Start # Lo   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+ 09BD          ; ID_Start # Lo       BENGALI SIGN AVAGRAHA
+ 09CE          ; ID_Start # Lo       BENGALI LETTER KHANDA TA
+ 09DC..09DD    ; ID_Start # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF..09E1    ; ID_Start # Lo   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+ 09F0..09F1    ; ID_Start # Lo   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+ 09FC          ; ID_Start # Lo       BENGALI LETTER VEDIC ANUSVARA
+ 0A05..0A0A    ; ID_Start # Lo   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+ 0A0F..0A10    ; ID_Start # Lo   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+ 0A13..0A28    ; ID_Start # Lo  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+ 0A2A..0A30    ; ID_Start # Lo   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+ 0A32..0A33    ; ID_Start # Lo   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+ 0A35..0A36    ; ID_Start # Lo   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+ 0A38..0A39    ; ID_Start # Lo   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+ 0A59..0A5C    ; ID_Start # Lo   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+ 0A5E          ; ID_Start # Lo       GURMUKHI LETTER FA
+ 0A72..0A74    ; ID_Start # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+ 0A85..0A8D    ; ID_Start # Lo   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+ 0A8F..0A91    ; ID_Start # Lo   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+ 0A93..0AA8    ; ID_Start # Lo  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+ 0AAA..0AB0    ; ID_Start # Lo   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+ 0AB2..0AB3    ; ID_Start # Lo   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+ 0AB5..0AB9    ; ID_Start # Lo   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+ 0ABD          ; ID_Start # Lo       GUJARATI SIGN AVAGRAHA
+ 0AD0          ; ID_Start # Lo       GUJARATI OM
+ 0AE0..0AE1    ; ID_Start # Lo   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+ 0AF9          ; ID_Start # Lo       GUJARATI LETTER ZHA
+ 0B05..0B0C    ; ID_Start # Lo   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+ 0B0F..0B10    ; ID_Start # Lo   [2] ORIYA LETTER E..ORIYA LETTER AI
+ 0B13..0B28    ; ID_Start # Lo  [22] ORIYA LETTER O..ORIYA LETTER NA
+ 0B2A..0B30    ; ID_Start # Lo   [7] ORIYA LETTER PA..ORIYA LETTER RA
+ 0B32..0B33    ; ID_Start # Lo   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+ 0B35..0B39    ; ID_Start # Lo   [5] ORIYA LETTER VA..ORIYA LETTER HA
+ 0B3D          ; ID_Start # Lo       ORIYA SIGN AVAGRAHA
+ 0B5C..0B5D    ; ID_Start # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B5F..0B61    ; ID_Start # Lo   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+ 0B71          ; ID_Start # Lo       ORIYA LETTER WA
+ 0B83          ; ID_Start # Lo       TAMIL SIGN VISARGA
+ 0B85..0B8A    ; ID_Start # Lo   [6] TAMIL LETTER A..TAMIL LETTER UU
+ 0B8E..0B90    ; ID_Start # Lo   [3] TAMIL LETTER E..TAMIL LETTER AI
+ 0B92..0B95    ; ID_Start # Lo   [4] TAMIL LETTER O..TAMIL LETTER KA
+ 0B99..0B9A    ; ID_Start # Lo   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+ 0B9C          ; ID_Start # Lo       TAMIL LETTER JA
+ 0B9E..0B9F    ; ID_Start # Lo   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+ 0BA3..0BA4    ; ID_Start # Lo   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+ 0BA8..0BAA    ; ID_Start # Lo   [3] TAMIL LETTER NA..TAMIL LETTER PA
+ 0BAE..0BB9    ; ID_Start # Lo  [12] TAMIL LETTER MA..TAMIL LETTER HA
+ 0BD0          ; ID_Start # Lo       TAMIL OM
+ 0C05..0C0C    ; ID_Start # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+ 0C0E..0C10    ; ID_Start # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
+ 0C12..0C28    ; ID_Start # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
+ 0C2A..0C39    ; ID_Start # Lo  [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3D          ; ID_Start # Lo       TELUGU SIGN AVAGRAHA
+ 0C58..0C5A    ; ID_Start # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D          ; ID_Start # Lo       TELUGU LETTER NAKAARA POLLU
+ 0C60..0C61    ; ID_Start # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+ 0C80          ; ID_Start # Lo       KANNADA SIGN SPACING CANDRABINDU
+ 0C85..0C8C    ; ID_Start # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+ 0C8E..0C90    ; ID_Start # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
+ 0C92..0CA8    ; ID_Start # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
+ 0CAA..0CB3    ; ID_Start # Lo  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+ 0CB5..0CB9    ; ID_Start # Lo   [5] KANNADA LETTER VA..KANNADA LETTER HA
+ 0CBD          ; ID_Start # Lo       KANNADA SIGN AVAGRAHA
+ 0CDD..0CDE    ; ID_Start # Lo   [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+ 0CE0..0CE1    ; ID_Start # Lo   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+ 0CF1..0CF2    ; ID_Start # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0D04..0D0C    ; ID_Start # Lo   [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+ 0D0E..0D10    ; ID_Start # Lo   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+ 0D12..0D3A    ; ID_Start # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+ 0D3D          ; ID_Start # Lo       MALAYALAM SIGN AVAGRAHA
+ 0D4E          ; ID_Start # Lo       MALAYALAM LETTER DOT REPH
+ 0D54..0D56    ; ID_Start # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+ 0D5F..0D61    ; ID_Start # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+ 0D7A..0D7F    ; ID_Start # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D85..0D96    ; ID_Start # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+ 0D9A..0DB1    ; ID_Start # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+ 0DB3..0DBB    ; ID_Start # Lo   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+ 0DBD          ; ID_Start # Lo       SINHALA LETTER DANTAJA LAYANNA
+ 0DC0..0DC6    ; ID_Start # Lo   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+ 0E01..0E30    ; ID_Start # Lo  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+ 0E32..0E33    ; ID_Start # Lo   [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+ 0E40..0E45    ; ID_Start # Lo   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+ 0E46          ; ID_Start # Lm       THAI CHARACTER MAIYAMOK
+ 0E81..0E82    ; ID_Start # Lo   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+ 0E84          ; ID_Start # Lo       LAO LETTER KHO TAM
+ 0E86..0E8A    ; ID_Start # Lo   [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
+ 0E8C..0EA3    ; ID_Start # Lo  [24] LAO LETTER PALI JHA..LAO LETTER LO LING
+ 0EA5          ; ID_Start # Lo       LAO LETTER LO LOOT
+ 0EA7..0EB0    ; ID_Start # Lo  [10] LAO LETTER WO..LAO VOWEL SIGN A
+ 0EB2..0EB3    ; ID_Start # Lo   [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+ 0EBD          ; ID_Start # Lo       LAO SEMIVOWEL SIGN NYO
+ 0EC0..0EC4    ; ID_Start # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+ 0EC6          ; ID_Start # Lm       LAO KO LA
+ 0EDC..0EDF    ; ID_Start # Lo   [4] LAO HO NO..LAO LETTER KHMU NYO
+ 0F00          ; ID_Start # Lo       TIBETAN SYLLABLE OM
+ 0F40..0F47    ; ID_Start # Lo   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+ 0F49..0F6C    ; ID_Start # Lo  [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+ 0F88..0F8C    ; ID_Start # Lo   [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+ 1000..102A    ; ID_Start # Lo  [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+ 103F          ; ID_Start # Lo       MYANMAR LETTER GREAT SA
+ 1050..1055    ; ID_Start # Lo   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+ 105A..105D    ; ID_Start # Lo   [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+ 1061          ; ID_Start # Lo       MYANMAR LETTER SGAW KAREN SHA
+ 1065..1066    ; ID_Start # Lo   [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+ 106E..1070    ; ID_Start # Lo   [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+ 1075..1081    ; ID_Start # Lo  [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+ 108E          ; ID_Start # Lo       MYANMAR LETTER RUMAI PALAUNG FA
+ 10A0..10C5    ; ID_Start # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; ID_Start # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; ID_Start # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; ID_Start # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; ID_Start # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; ID_Start # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 1100..1248    ; ID_Start # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+ 124A..124D    ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+ 1250..1256    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+ 1258          ; ID_Start # Lo       ETHIOPIC SYLLABLE QHWA
+ 125A..125D    ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+ 1260..1288    ; ID_Start # Lo  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+ 128A..128D    ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+ 1290..12B0    ; ID_Start # Lo  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+ 12B2..12B5    ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+ 12B8..12BE    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+ 12C0          ; ID_Start # Lo       ETHIOPIC SYLLABLE KXWA
+ 12C2..12C5    ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+ 12C8..12D6    ; ID_Start # Lo  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+ 12D8..1310    ; ID_Start # Lo  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+ 1312..1315    ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+ 1318..135A    ; ID_Start # Lo  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+ 1380..138F    ; ID_Start # Lo  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+ 13A0..13F5    ; ID_Start # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; ID_Start # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1401..166C    ; ID_Start # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+ 166F..167F    ; ID_Start # Lo  [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+ 1681..169A    ; ID_Start # Lo  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+ 16A0..16EA    ; ID_Start # Lo  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+ 16EE..16F0    ; ID_Start # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+ 16F1..16F8    ; ID_Start # Lo   [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+ 1700..1711    ; ID_Start # Lo  [18] TAGALOG LETTER A..TAGALOG LETTER HA
+ 171F..1731    ; ID_Start # Lo  [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+ 1740..1751    ; ID_Start # Lo  [18] BUHID LETTER A..BUHID LETTER HA
+ 1760..176C    ; ID_Start # Lo  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+ 176E..1770    ; ID_Start # Lo   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+ 1780..17B3    ; ID_Start # Lo  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+ 17D7          ; ID_Start # Lm       KHMER SIGN LEK TOO
+ 17DC          ; ID_Start # Lo       KHMER SIGN AVAKRAHASANYA
+ 1820..1842    ; ID_Start # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+ 1843          ; ID_Start # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1844..1878    ; ID_Start # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+ 1880..1884    ; ID_Start # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+ 1885..1886    ; ID_Start # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 1887..18A8    ; ID_Start # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+ 18AA          ; ID_Start # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+ 18B0..18F5    ; ID_Start # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+ 1900..191E    ; ID_Start # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+ 1950..196D    ; ID_Start # Lo  [30] TAI LE LETTER KA..TAI LE LETTER AI
+ 1970..1974    ; ID_Start # Lo   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+ 1980..19AB    ; ID_Start # Lo  [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
+ 19B0..19C9    ; ID_Start # Lo  [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+ 1A00..1A16    ; ID_Start # Lo  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+ 1A20..1A54    ; ID_Start # Lo  [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
+ 1AA7          ; ID_Start # Lm       TAI THAM SIGN MAI YAMOK
+ 1B05..1B33    ; ID_Start # Lo  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+ 1B45..1B4C    ; ID_Start # Lo   [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+ 1B83..1BA0    ; ID_Start # Lo  [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+ 1BAE..1BAF    ; ID_Start # Lo   [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+ 1BBA..1BE5    ; ID_Start # Lo  [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+ 1C00..1C23    ; ID_Start # Lo  [36] LEPCHA LETTER KA..LEPCHA LETTER A
+ 1C4D..1C4F    ; ID_Start # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+ 1C5A..1C77    ; ID_Start # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+ 1C78..1C7D    ; ID_Start # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1C80..1C88    ; ID_Start # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; ID_Start # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; ID_Start # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1CE9..1CEC    ; ID_Start # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+ 1CEE..1CF3    ; ID_Start # Lo   [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+ 1CF5..1CF6    ; ID_Start # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+ 1CFA          ; ID_Start # Lo       VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+ 1D00..1D2B    ; ID_Start # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; ID_Start # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; ID_Start # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; ID_Start # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; ID_Start # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; ID_Start # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E00..1F15    ; ID_Start # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; ID_Start # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; ID_Start # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; ID_Start # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; ID_Start # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; ID_Start # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; ID_Start # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; ID_Start # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; ID_Start # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; ID_Start # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; ID_Start # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; ID_Start # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; ID_Start # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; ID_Start # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; ID_Start # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; ID_Start # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; ID_Start # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; ID_Start # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; ID_Start # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2071          ; ID_Start # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; ID_Start # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; ID_Start # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 2102          ; ID_Start # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; ID_Start # L&       EULER CONSTANT
+ 210A..2113    ; ID_Start # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; ID_Start # L&       DOUBLE-STRUCK CAPITAL N
+ 2118          ; ID_Start # Sm       SCRIPT CAPITAL P
+ 2119..211D    ; ID_Start # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; ID_Start # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; ID_Start # L&       OHM SIGN
+ 2128          ; ID_Start # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; ID_Start # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212E          ; ID_Start # So       ESTIMATED SYMBOL
+ 212F..2134    ; ID_Start # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; ID_Start # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; ID_Start # L&       INFORMATION SOURCE
+ 213C..213F    ; ID_Start # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2145..2149    ; ID_Start # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; ID_Start # L&       TURNED SMALL F
+ 2160..2182    ; ID_Start # Nl  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+ 2183..2184    ; ID_Start # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 2185..2188    ; ID_Start # Nl   [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+ 2C00..2C7B    ; ID_Start # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; ID_Start # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; ID_Start # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CEB..2CEE    ; ID_Start # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2..2CF3    ; ID_Start # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; ID_Start # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; ID_Start # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; ID_Start # L&       GEORGIAN SMALL LETTER AEN
+ 2D30..2D67    ; ID_Start # Lo  [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+ 2D6F          ; ID_Start # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D80..2D96    ; ID_Start # Lo  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+ 2DA0..2DA6    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+ 2DA8..2DAE    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+ 2DB0..2DB6    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+ 2DB8..2DBE    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+ 2DC0..2DC6    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+ 2DC8..2DCE    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+ 2DD0..2DD6    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+ 2DD8..2DDE    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+ 3005          ; ID_Start # Lm       IDEOGRAPHIC ITERATION MARK
+ 3006          ; ID_Start # Lo       IDEOGRAPHIC CLOSING MARK
+ 3007          ; ID_Start # Nl       IDEOGRAPHIC NUMBER ZERO
+ 3021..3029    ; ID_Start # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+ 3031..3035    ; ID_Start # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 3038..303A    ; ID_Start # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 303B          ; ID_Start # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 303C          ; ID_Start # Lo       MASU MARK
+ 3041..3096    ; ID_Start # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+ 309B..309C    ; ID_Start # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309D..309E    ; ID_Start # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 309F          ; ID_Start # Lo       HIRAGANA DIGRAPH YORI
+ 30A1..30FA    ; ID_Start # Lo  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+ 30FC..30FE    ; ID_Start # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ 30FF          ; ID_Start # Lo       KATAKANA DIGRAPH KOTO
+ 3105..312F    ; ID_Start # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+ 3131..318E    ; ID_Start # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 31A0..31BF    ; ID_Start # Lo  [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+ 31F0..31FF    ; ID_Start # Lo  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+ 3400..4DBF    ; ID_Start # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 4E00..A014    ; ID_Start # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E
+ A015          ; ID_Start # Lm       YI SYLLABLE WU
+ A016..A48C    ; ID_Start # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+ A4D0..A4F7    ; ID_Start # Lo  [40] LISU LETTER BA..LISU LETTER OE
+ A4F8..A4FD    ; ID_Start # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A500..A60B    ; ID_Start # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+ A60C          ; ID_Start # Lm       VAI SYLLABLE LENGTHENER
+ A610..A61F    ; ID_Start # Lo  [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+ A62A..A62B    ; ID_Start # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+ A640..A66D    ; ID_Start # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A66E          ; ID_Start # Lo       CYRILLIC LETTER MULTIOCULAR O
+ A67F          ; ID_Start # Lm       CYRILLIC PAYEROK
+ A680..A69B    ; ID_Start # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; ID_Start # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A6A0..A6E5    ; ID_Start # Lo  [70] BAMUM LETTER A..BAMUM LETTER KI
+ A6E6..A6EF    ; ID_Start # Nl  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+ A717..A71F    ; ID_Start # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A722..A76F    ; ID_Start # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; ID_Start # Lm       MODIFIER LETTER US
+ A771..A787    ; ID_Start # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A788          ; ID_Start # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A78B..A78E    ; ID_Start # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A78F          ; ID_Start # Lo       LATIN LETTER SINOLOGICAL DOT
+ A790..A7CA    ; ID_Start # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; ID_Start # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; ID_Start # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; ID_Start # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; ID_Start # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; ID_Start # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F7          ; ID_Start # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
+ A7F8..A7F9    ; ID_Start # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; ID_Start # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ A7FB..A801    ; ID_Start # Lo   [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+ A803..A805    ; ID_Start # Lo   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+ A807..A80A    ; ID_Start # Lo   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+ A80C..A822    ; ID_Start # Lo  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+ A840..A873    ; ID_Start # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+ A882..A8B3    ; ID_Start # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+ A8F2..A8F7    ; ID_Start # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+ A8FB          ; ID_Start # Lo       DEVANAGARI HEADSTROKE
+ A8FD..A8FE    ; ID_Start # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+ A90A..A925    ; ID_Start # Lo  [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+ A930..A946    ; ID_Start # Lo  [23] REJANG LETTER KA..REJANG LETTER A
+ A960..A97C    ; ID_Start # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+ A984..A9B2    ; ID_Start # Lo  [47] JAVANESE LETTER A..JAVANESE LETTER HA
+ A9CF          ; ID_Start # Lm       JAVANESE PANGRANGKEP
+ A9E0..A9E4    ; ID_Start # Lo   [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
+ A9E6          ; ID_Start # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ A9E7..A9EF    ; ID_Start # Lo   [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
+ A9FA..A9FE    ; ID_Start # Lo   [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
+ AA00..AA28    ; ID_Start # Lo  [41] CHAM LETTER A..CHAM LETTER HA
+ AA40..AA42    ; ID_Start # Lo   [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+ AA44..AA4B    ; ID_Start # Lo   [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+ AA60..AA6F    ; ID_Start # Lo  [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
+ AA70          ; ID_Start # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA71..AA76    ; ID_Start # Lo   [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
+ AA7A          ; ID_Start # Lo       MYANMAR LETTER AITON RA
+ AA7E..AAAF    ; ID_Start # Lo  [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
+ AAB1          ; ID_Start # Lo       TAI VIET VOWEL AA
+ AAB5..AAB6    ; ID_Start # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
+ AAB9..AABD    ; ID_Start # Lo   [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
+ AAC0          ; ID_Start # Lo       TAI VIET TONE MAI NUENG
+ AAC2          ; ID_Start # Lo       TAI VIET TONE MAI SONG
+ AADB..AADC    ; ID_Start # Lo   [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
+ AADD          ; ID_Start # Lm       TAI VIET SYMBOL SAM
+ AAE0..AAEA    ; ID_Start # Lo  [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+ AAF2          ; ID_Start # Lo       MEETEI MAYEK ANJI
+ AAF3..AAF4    ; ID_Start # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AB01..AB06    ; ID_Start # Lo   [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+ AB09..AB0E    ; ID_Start # Lo   [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+ AB11..AB16    ; ID_Start # Lo   [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+ AB20..AB26    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+ AB28..AB2E    ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+ AB30..AB5A    ; ID_Start # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; ID_Start # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; ID_Start # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; ID_Start # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; ID_Start # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ ABC0..ABE2    ; ID_Start # Lo  [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+ AC00..D7A3    ; ID_Start # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ D7B0..D7C6    ; ID_Start # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+ D7CB..D7FB    ; ID_Start # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+ F900..FA6D    ; ID_Start # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; ID_Start # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; ID_Start # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; ID_Start # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; ID_Start # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F..FB28    ; ID_Start # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB2A..FB36    ; ID_Start # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; ID_Start # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; ID_Start # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; ID_Start # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; ID_Start # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; ID_Start # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FD3D    ; ID_Start # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; ID_Start # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; ID_Start # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; ID_Start # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FE70..FE74    ; ID_Start # Lo   [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; ID_Start # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF21..FF3A    ; ID_Start # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF41..FF5A    ; ID_Start # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF66..FF6F    ; ID_Start # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; ID_Start # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; ID_Start # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; ID_Start # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; ID_Start # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; ID_Start # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; ID_Start # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; ID_Start # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; ID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ 10000..1000B  ; ID_Start # Lo  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+ 1000D..10026  ; ID_Start # Lo  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+ 10028..1003A  ; ID_Start # Lo  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+ 1003C..1003D  ; ID_Start # Lo   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+ 1003F..1004D  ; ID_Start # Lo  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+ 10050..1005D  ; ID_Start # Lo  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+ 10080..100FA  ; ID_Start # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+ 10140..10174  ; ID_Start # Nl  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+ 10280..1029C  ; ID_Start # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
+ 102A0..102D0  ; ID_Start # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
+ 10300..1031F  ; ID_Start # Lo  [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+ 1032D..10340  ; ID_Start # Lo  [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+ 10341         ; ID_Start # Nl       GOTHIC LETTER NINETY
+ 10342..10349  ; ID_Start # Lo   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+ 1034A         ; ID_Start # Nl       GOTHIC LETTER NINE HUNDRED
+ 10350..10375  ; ID_Start # Lo  [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+ 10380..1039D  ; ID_Start # Lo  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+ 103A0..103C3  ; ID_Start # Lo  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+ 103C8..103CF  ; ID_Start # Lo   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+ 103D1..103D5  ; ID_Start # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+ 10400..1044F  ; ID_Start # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 10450..1049D  ; ID_Start # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+ 104B0..104D3  ; ID_Start # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; ID_Start # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10500..10527  ; ID_Start # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+ 10530..10563  ; ID_Start # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+ 10570..1057A  ; ID_Start # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; ID_Start # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; ID_Start # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; ID_Start # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; ID_Start # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; ID_Start # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; ID_Start # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; ID_Start # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10600..10736  ; ID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+ 10740..10755  ; ID_Start # Lo  [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+ 10760..10767  ; ID_Start # Lo   [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785  ; ID_Start # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; ID_Start # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; ID_Start # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10800..10805  ; ID_Start # Lo   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+ 10808         ; ID_Start # Lo       CYPRIOT SYLLABLE JO
+ 1080A..10835  ; ID_Start # Lo  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+ 10837..10838  ; ID_Start # Lo   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+ 1083C         ; ID_Start # Lo       CYPRIOT SYLLABLE ZA
+ 1083F..10855  ; ID_Start # Lo  [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+ 10860..10876  ; ID_Start # Lo  [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+ 10880..1089E  ; ID_Start # Lo  [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+ 108E0..108F2  ; ID_Start # Lo  [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+ 108F4..108F5  ; ID_Start # Lo   [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+ 10900..10915  ; ID_Start # Lo  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+ 10920..10939  ; ID_Start # Lo  [26] LYDIAN LETTER A..LYDIAN LETTER C
+ 10980..109B7  ; ID_Start # Lo  [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+ 109BE..109BF  ; ID_Start # Lo   [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+ 10A00         ; ID_Start # Lo       KHAROSHTHI LETTER A
+ 10A10..10A13  ; ID_Start # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+ 10A15..10A17  ; ID_Start # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+ 10A19..10A35  ; ID_Start # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+ 10A60..10A7C  ; ID_Start # Lo  [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+ 10A80..10A9C  ; ID_Start # Lo  [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+ 10AC0..10AC7  ; ID_Start # Lo   [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+ 10AC9..10AE4  ; ID_Start # Lo  [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+ 10B00..10B35  ; ID_Start # Lo  [54] AVESTAN LETTER A..AVESTAN LETTER HE
+ 10B40..10B55  ; ID_Start # Lo  [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+ 10B60..10B72  ; ID_Start # Lo  [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+ 10B80..10B91  ; ID_Start # Lo  [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+ 10C00..10C48  ; ID_Start # Lo  [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+ 10C80..10CB2  ; ID_Start # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; ID_Start # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 10D00..10D23  ; ID_Start # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+ 10E80..10EA9  ; ID_Start # Lo  [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EB0..10EB1  ; ID_Start # Lo   [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10F00..10F1C  ; ID_Start # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+ 10F27         ; ID_Start # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+ 10F30..10F45  ; ID_Start # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+ 10F70..10F81  ; ID_Start # Lo  [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10FB0..10FC4  ; ID_Start # Lo  [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FE0..10FF6  ; ID_Start # Lo  [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+ 11003..11037  ; ID_Start # Lo  [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+ 11071..11072  ; ID_Start # Lo   [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11075         ; ID_Start # Lo       BRAHMI LETTER OLD TAMIL LLA
+ 11083..110AF  ; ID_Start # Lo  [45] KAITHI LETTER A..KAITHI LETTER HA
+ 110D0..110E8  ; ID_Start # Lo  [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+ 11103..11126  ; ID_Start # Lo  [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+ 11144         ; ID_Start # Lo       CHAKMA LETTER LHAA
+ 11147         ; ID_Start # Lo       CHAKMA LETTER VAA
+ 11150..11172  ; ID_Start # Lo  [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+ 11176         ; ID_Start # Lo       MAHAJANI LIGATURE SHRI
+ 11183..111B2  ; ID_Start # Lo  [48] SHARADA LETTER A..SHARADA LETTER HA
+ 111C1..111C4  ; ID_Start # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+ 111DA         ; ID_Start # Lo       SHARADA EKAM
+ 111DC         ; ID_Start # Lo       SHARADA HEADSTROKE
+ 11200..11211  ; ID_Start # Lo  [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+ 11213..1122B  ; ID_Start # Lo  [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+ 1123F..11240  ; ID_Start # Lo   [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11280..11286  ; ID_Start # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
+ 11288         ; ID_Start # Lo       MULTANI LETTER GHA
+ 1128A..1128D  ; ID_Start # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
+ 1128F..1129D  ; ID_Start # Lo  [15] MULTANI LETTER NYA..MULTANI LETTER BA
+ 1129F..112A8  ; ID_Start # Lo  [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+ 112B0..112DE  ; ID_Start # Lo  [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+ 11305..1130C  ; ID_Start # Lo   [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+ 1130F..11310  ; ID_Start # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+ 11313..11328  ; ID_Start # Lo  [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+ 1132A..11330  ; ID_Start # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+ 11332..11333  ; ID_Start # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+ 11335..11339  ; ID_Start # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+ 1133D         ; ID_Start # Lo       GRANTHA SIGN AVAGRAHA
+ 11350         ; ID_Start # Lo       GRANTHA OM
+ 1135D..11361  ; ID_Start # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+ 11400..11434  ; ID_Start # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+ 11447..1144A  ; ID_Start # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+ 1145F..11461  ; ID_Start # Lo   [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+ 11480..114AF  ; ID_Start # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+ 114C4..114C5  ; ID_Start # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+ 114C7         ; ID_Start # Lo       TIRHUTA OM
+ 11580..115AE  ; ID_Start # Lo  [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+ 115D8..115DB  ; ID_Start # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+ 11600..1162F  ; ID_Start # Lo  [48] MODI LETTER A..MODI LETTER LLA
+ 11644         ; ID_Start # Lo       MODI SIGN HUVA
+ 11680..116AA  ; ID_Start # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
+ 116B8         ; ID_Start # Lo       TAKRI LETTER ARCHAIC KHA
+ 11700..1171A  ; ID_Start # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+ 11740..11746  ; ID_Start # Lo   [7] AHOM LETTER CA..AHOM LETTER LLA
+ 11800..1182B  ; ID_Start # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+ 118A0..118DF  ; ID_Start # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 118FF..11906  ; ID_Start # Lo   [8] WARANG CITI OM..DIVES AKURU LETTER E
+ 11909         ; ID_Start # Lo       DIVES AKURU LETTER O
+ 1190C..11913  ; ID_Start # Lo   [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916  ; ID_Start # Lo   [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F  ; ID_Start # Lo  [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 1193F         ; ID_Start # Lo       DIVES AKURU PREFIXED NASAL SIGN
+ 11941         ; ID_Start # Lo       DIVES AKURU INITIAL RA
+ 119A0..119A7  ; ID_Start # Lo   [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+ 119AA..119D0  ; ID_Start # Lo  [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+ 119E1         ; ID_Start # Lo       NANDINAGARI SIGN AVAGRAHA
+ 119E3         ; ID_Start # Lo       NANDINAGARI HEADSTROKE
+ 11A00         ; ID_Start # Lo       ZANABAZAR SQUARE LETTER A
+ 11A0B..11A32  ; ID_Start # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+ 11A3A         ; ID_Start # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+ 11A50         ; ID_Start # Lo       SOYOMBO LETTER A
+ 11A5C..11A89  ; ID_Start # Lo  [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+ 11A9D         ; ID_Start # Lo       SOYOMBO MARK PLUTA
+ 11AB0..11AF8  ; ID_Start # Lo  [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+ 11C00..11C08  ; ID_Start # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+ 11C0A..11C2E  ; ID_Start # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+ 11C40         ; ID_Start # Lo       BHAIKSUKI SIGN AVAGRAHA
+ 11C72..11C8F  ; ID_Start # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+ 11D00..11D06  ; ID_Start # Lo   [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+ 11D08..11D09  ; ID_Start # Lo   [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+ 11D0B..11D30  ; ID_Start # Lo  [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+ 11D46         ; ID_Start # Lo       MASARAM GONDI REPHA
+ 11D60..11D65  ; ID_Start # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+ 11D67..11D68  ; ID_Start # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+ 11D6A..11D89  ; ID_Start # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+ 11D98         ; ID_Start # Lo       GUNJALA GONDI OM
+ 11EE0..11EF2  ; ID_Start # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+ 11F02         ; ID_Start # Lo       KAWI SIGN REPHA
+ 11F04..11F10  ; ID_Start # Lo  [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33  ; ID_Start # Lo  [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11FB0         ; ID_Start # Lo       LISU LETTER YHA
+ 12000..12399  ; ID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+ 12400..1246E  ; ID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+ 12480..12543  ; ID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+ 12F90..12FF0  ; ID_Start # Lo  [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+ 13000..1342F  ; ID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+ 13441..13446  ; ID_Start # Lo   [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+ 14400..14646  ; ID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+ 16800..16A38  ; ID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+ 16A40..16A5E  ; ID_Start # Lo  [31] MRO LETTER TA..MRO LETTER TEK
+ 16A70..16ABE  ; ID_Start # Lo  [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AD0..16AED  ; ID_Start # Lo  [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+ 16B00..16B2F  ; ID_Start # Lo  [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+ 16B40..16B43  ; ID_Start # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16B63..16B77  ; ID_Start # Lo  [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+ 16B7D..16B8F  ; ID_Start # Lo  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+ 16E40..16E7F  ; ID_Start # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 16F00..16F4A  ; ID_Start # Lo  [75] MIAO LETTER PA..MIAO LETTER RTE
+ 16F50         ; ID_Start # Lo       MIAO LETTER NASALIZATION
+ 16F93..16F9F  ; ID_Start # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; ID_Start # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE3         ; ID_Start # Lm       OLD CHINESE ITERATION MARK
+ 17000..187F7  ; ID_Start # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
+ 18800..18CD5  ; ID_Start # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
+ 18D00..18D08  ; ID_Start # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3  ; ID_Start # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; ID_Start # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; ID_Start # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1B000..1B122  ; ID_Start # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU
+ 1B132         ; ID_Start # Lo       HIRAGANA LETTER SMALL KO
+ 1B150..1B152  ; ID_Start # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155         ; ID_Start # Lo       KATAKANA LETTER SMALL KO
+ 1B164..1B167  ; ID_Start # Lo   [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+ 1B170..1B2FB  ; ID_Start # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
+ 1BC00..1BC6A  ; ID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+ 1BC70..1BC7C  ; ID_Start # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+ 1BC80..1BC88  ; ID_Start # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+ 1BC90..1BC99  ; ID_Start # Lo  [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+ 1D400..1D454  ; ID_Start # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; ID_Start # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; ID_Start # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; ID_Start # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; ID_Start # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; ID_Start # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; ID_Start # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; ID_Start # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; ID_Start # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; ID_Start # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; ID_Start # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; ID_Start # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; ID_Start # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; ID_Start # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; ID_Start # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; ID_Start # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; ID_Start # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; ID_Start # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; ID_Start # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; ID_Start # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C2..1D6DA  ; ID_Start # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6FA  ; ID_Start # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FC..1D714  ; ID_Start # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D734  ; ID_Start # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D736..1D74E  ; ID_Start # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D76E  ; ID_Start # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D770..1D788  ; ID_Start # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D7A8  ; ID_Start # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7AA..1D7C2  ; ID_Start # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7CB  ; ID_Start # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1DF00..1DF09  ; ID_Start # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A         ; ID_Start # Lo       LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E  ; ID_Start # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; ID_Start # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E030..1E06D  ; ID_Start # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E100..1E12C  ; ID_Start # Lo  [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+ 1E137..1E13D  ; ID_Start # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E14E         ; ID_Start # Lo       NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+ 1E290..1E2AD  ; ID_Start # Lo  [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2C0..1E2EB  ; ID_Start # Lo  [44] WANCHO LETTER AA..WANCHO LETTER YIH
+ 1E4D0..1E4EA  ; ID_Start # Lo  [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB         ; ID_Start # Lm       NAG MUNDARI SIGN OJOD
+ 1E7E0..1E7E6  ; ID_Start # Lo   [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB  ; ID_Start # Lo   [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE  ; ID_Start # Lo   [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE  ; ID_Start # Lo  [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+ 1E800..1E8C4  ; ID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+ 1E900..1E943  ; ID_Start # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1E94B         ; ID_Start # Lm       ADLAM NASALIZATION MARK
+ 1EE00..1EE03  ; ID_Start # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; ID_Start # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; ID_Start # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; ID_Start # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; ID_Start # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; ID_Start # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; ID_Start # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; ID_Start # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; ID_Start # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; ID_Start # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; ID_Start # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; ID_Start # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; ID_Start # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; ID_Start # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; ID_Start # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; ID_Start # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; ID_Start # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; ID_Start # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; ID_Start # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; ID_Start # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; ID_Start # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; ID_Start # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; ID_Start # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; ID_Start # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 20000..2A6DF  ; ID_Start # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B739  ; ID_Start # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
+ 2B740..2B81D  ; ID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1  ; ID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0  ; ID_Start # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 2F800..2FA1D  ; ID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; ID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; ID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
+ 
+ # Total code points: 136345
+ 
+ # ================================================
+ 
+ # Derived Property: ID_Continue
+ #  Characters that can continue an identifier.
+ #  Generated from:
+ #      ID_Start
+ #    + Mn + Mc + Nd + Pc
+ #    + Other_ID_Continue
+ #    - Pattern_Syntax
+ #    - Pattern_White_Space
+ #  NOTE: See UAX #31 for more information
+ 
+ 0030..0039    ; ID_Continue # Nd  [10] DIGIT ZERO..DIGIT NINE
+ 0041..005A    ; ID_Continue # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 005F          ; ID_Continue # Pc       LOW LINE
+ 0061..007A    ; ID_Continue # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; ID_Continue # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; ID_Continue # L&       MICRO SIGN
+ 00B7          ; ID_Continue # Po       MIDDLE DOT
+ 00BA          ; ID_Continue # Lo       MASCULINE ORDINAL INDICATOR
+ 00C0..00D6    ; ID_Continue # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; ID_Continue # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..01BA    ; ID_Continue # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BB          ; ID_Continue # Lo       LATIN LETTER TWO WITH STROKE
+ 01BC..01BF    ; ID_Continue # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C0..01C3    ; ID_Continue # Lo   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+ 01C4..0293    ; ID_Continue # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0294          ; ID_Continue # Lo       LATIN LETTER GLOTTAL STOP
+ 0295..02AF    ; ID_Continue # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02C1    ; ID_Continue # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C6..02D1    ; ID_Continue # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02E0..02E4    ; ID_Continue # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02EC          ; ID_Continue # Lm       MODIFIER LETTER VOICING
+ 02EE          ; ID_Continue # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 0300..036F    ; ID_Continue # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+ 0370..0373    ; ID_Continue # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0374          ; ID_Continue # Lm       GREEK NUMERAL SIGN
+ 0376..0377    ; ID_Continue # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; ID_Continue # Lm       GREEK YPOGEGRAMMENI
+ 037B..037D    ; ID_Continue # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; ID_Continue # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; ID_Continue # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; ID_Continue # Po       GREEK ANO TELEIA
+ 0388..038A    ; ID_Continue # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; ID_Continue # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; ID_Continue # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; ID_Continue # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F7..0481    ; ID_Continue # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 0483..0487    ; ID_Continue # Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+ 048A..052F    ; ID_Continue # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; ID_Continue # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0559          ; ID_Continue # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 0560..0588    ; ID_Continue # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 0591..05BD    ; ID_Continue # Mn  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+ 05BF          ; ID_Continue # Mn       HEBREW POINT RAFE
+ 05C1..05C2    ; ID_Continue # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+ 05C4..05C5    ; ID_Continue # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+ 05C7          ; ID_Continue # Mn       HEBREW POINT QAMATS QATAN
+ 05D0..05EA    ; ID_Continue # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+ 05EF..05F2    ; ID_Continue # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+ 0610..061A    ; ID_Continue # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+ 0620..063F    ; ID_Continue # Lo  [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+ 0640          ; ID_Continue # Lm       ARABIC TATWEEL
+ 0641..064A    ; ID_Continue # Lo  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+ 064B..065F    ; ID_Continue # Mn  [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+ 0660..0669    ; ID_Continue # Nd  [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+ 066E..066F    ; ID_Continue # Lo   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+ 0670          ; ID_Continue # Mn       ARABIC LETTER SUPERSCRIPT ALEF
+ 0671..06D3    ; ID_Continue # Lo  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 06D5          ; ID_Continue # Lo       ARABIC LETTER AE
+ 06D6..06DC    ; ID_Continue # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+ 06DF..06E4    ; ID_Continue # Mn   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+ 06E5..06E6    ; ID_Continue # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06E7..06E8    ; ID_Continue # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+ 06EA..06ED    ; ID_Continue # Mn   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+ 06EE..06EF    ; ID_Continue # Lo   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+ 06F0..06F9    ; ID_Continue # Nd  [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+ 06FA..06FC    ; ID_Continue # Lo   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+ 06FF          ; ID_Continue # Lo       ARABIC LETTER HEH WITH INVERTED V
+ 0710          ; ID_Continue # Lo       SYRIAC LETTER ALAPH
+ 0711          ; ID_Continue # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
+ 0712..072F    ; ID_Continue # Lo  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+ 0730..074A    ; ID_Continue # Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+ 074D..07A5    ; ID_Continue # Lo  [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+ 07A6..07B0    ; ID_Continue # Mn  [11] THAANA ABAFILI..THAANA SUKUN
+ 07B1          ; ID_Continue # Lo       THAANA LETTER NAA
+ 07C0..07C9    ; ID_Continue # Nd  [10] NKO DIGIT ZERO..NKO DIGIT NINE
+ 07CA..07EA    ; ID_Continue # Lo  [33] NKO LETTER A..NKO LETTER JONA RA
+ 07EB..07F3    ; ID_Continue # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+ 07F4..07F5    ; ID_Continue # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07FA          ; ID_Continue # Lm       NKO LAJANYALAN
+ 07FD          ; ID_Continue # Mn       NKO DANTAYALAN
+ 0800..0815    ; ID_Continue # Lo  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+ 0816..0819    ; ID_Continue # Mn   [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+ 081A          ; ID_Continue # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 081B..0823    ; ID_Continue # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+ 0824          ; ID_Continue # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0825..0827    ; ID_Continue # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+ 0828          ; ID_Continue # Lm       SAMARITAN MODIFIER LETTER I
+ 0829..082D    ; ID_Continue # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+ 0840..0858    ; ID_Continue # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+ 0859..085B    ; ID_Continue # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+ 0860..086A    ; ID_Continue # Lo  [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+ 0870..0887    ; ID_Continue # Lo  [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+ 0889..088E    ; ID_Continue # Lo   [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+ 0898..089F    ; ID_Continue # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+ 08A0..08C8    ; ID_Continue # Lo  [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+ 08C9          ; ID_Continue # Lm       ARABIC SMALL FARSI YEH
+ 08CA..08E1    ; ID_Continue # Mn  [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
+ 08E3..0902    ; ID_Continue # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+ 0903          ; ID_Continue # Mc       DEVANAGARI SIGN VISARGA
+ 0904..0939    ; ID_Continue # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+ 093A          ; ID_Continue # Mn       DEVANAGARI VOWEL SIGN OE
+ 093B          ; ID_Continue # Mc       DEVANAGARI VOWEL SIGN OOE
+ 093C          ; ID_Continue # Mn       DEVANAGARI SIGN NUKTA
+ 093D          ; ID_Continue # Lo       DEVANAGARI SIGN AVAGRAHA
+ 093E..0940    ; ID_Continue # Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+ 0941..0948    ; ID_Continue # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+ 0949..094C    ; ID_Continue # Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+ 094D          ; ID_Continue # Mn       DEVANAGARI SIGN VIRAMA
+ 094E..094F    ; ID_Continue # Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+ 0950          ; ID_Continue # Lo       DEVANAGARI OM
+ 0951..0957    ; ID_Continue # Mn   [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+ 0958..0961    ; ID_Continue # Lo  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+ 0962..0963    ; ID_Continue # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+ 0966..096F    ; ID_Continue # Nd  [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+ 0971          ; ID_Continue # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0972..0980    ; ID_Continue # Lo  [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+ 0981          ; ID_Continue # Mn       BENGALI SIGN CANDRABINDU
+ 0982..0983    ; ID_Continue # Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+ 0985..098C    ; ID_Continue # Lo   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+ 098F..0990    ; ID_Continue # Lo   [2] BENGALI LETTER E..BENGALI LETTER AI
+ 0993..09A8    ; ID_Continue # Lo  [22] BENGALI LETTER O..BENGALI LETTER NA
+ 09AA..09B0    ; ID_Continue # Lo   [7] BENGALI LETTER PA..BENGALI LETTER RA
+ 09B2          ; ID_Continue # Lo       BENGALI LETTER LA
+ 09B6..09B9    ; ID_Continue # Lo   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+ 09BC          ; ID_Continue # Mn       BENGALI SIGN NUKTA
+ 09BD          ; ID_Continue # Lo       BENGALI SIGN AVAGRAHA
+ 09BE..09C0    ; ID_Continue # Mc   [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+ 09C1..09C4    ; ID_Continue # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+ 09C7..09C8    ; ID_Continue # Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+ 09CB..09CC    ; ID_Continue # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09CD          ; ID_Continue # Mn       BENGALI SIGN VIRAMA
+ 09CE          ; ID_Continue # Lo       BENGALI LETTER KHANDA TA
+ 09D7          ; ID_Continue # Mc       BENGALI AU LENGTH MARK
+ 09DC..09DD    ; ID_Continue # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF..09E1    ; ID_Continue # Lo   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+ 09E2..09E3    ; ID_Continue # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+ 09E6..09EF    ; ID_Continue # Nd  [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+ 09F0..09F1    ; ID_Continue # Lo   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+ 09FC          ; ID_Continue # Lo       BENGALI LETTER VEDIC ANUSVARA
+ 09FE          ; ID_Continue # Mn       BENGALI SANDHI MARK
+ 0A01..0A02    ; ID_Continue # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+ 0A03          ; ID_Continue # Mc       GURMUKHI SIGN VISARGA
+ 0A05..0A0A    ; ID_Continue # Lo   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+ 0A0F..0A10    ; ID_Continue # Lo   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+ 0A13..0A28    ; ID_Continue # Lo  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+ 0A2A..0A30    ; ID_Continue # Lo   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+ 0A32..0A33    ; ID_Continue # Lo   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+ 0A35..0A36    ; ID_Continue # Lo   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+ 0A38..0A39    ; ID_Continue # Lo   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+ 0A3C          ; ID_Continue # Mn       GURMUKHI SIGN NUKTA
+ 0A3E..0A40    ; ID_Continue # Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+ 0A41..0A42    ; ID_Continue # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+ 0A47..0A48    ; ID_Continue # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+ 0A4B..0A4D    ; ID_Continue # Mn   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+ 0A51          ; ID_Continue # Mn       GURMUKHI SIGN UDAAT
+ 0A59..0A5C    ; ID_Continue # Lo   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+ 0A5E          ; ID_Continue # Lo       GURMUKHI LETTER FA
+ 0A66..0A6F    ; ID_Continue # Nd  [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+ 0A70..0A71    ; ID_Continue # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+ 0A72..0A74    ; ID_Continue # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+ 0A75          ; ID_Continue # Mn       GURMUKHI SIGN YAKASH
+ 0A81..0A82    ; ID_Continue # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+ 0A83          ; ID_Continue # Mc       GUJARATI SIGN VISARGA
+ 0A85..0A8D    ; ID_Continue # Lo   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+ 0A8F..0A91    ; ID_Continue # Lo   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+ 0A93..0AA8    ; ID_Continue # Lo  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+ 0AAA..0AB0    ; ID_Continue # Lo   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+ 0AB2..0AB3    ; ID_Continue # Lo   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+ 0AB5..0AB9    ; ID_Continue # Lo   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+ 0ABC          ; ID_Continue # Mn       GUJARATI SIGN NUKTA
+ 0ABD          ; ID_Continue # Lo       GUJARATI SIGN AVAGRAHA
+ 0ABE..0AC0    ; ID_Continue # Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+ 0AC1..0AC5    ; ID_Continue # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+ 0AC7..0AC8    ; ID_Continue # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+ 0AC9          ; ID_Continue # Mc       GUJARATI VOWEL SIGN CANDRA O
+ 0ACB..0ACC    ; ID_Continue # Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+ 0ACD          ; ID_Continue # Mn       GUJARATI SIGN VIRAMA
+ 0AD0          ; ID_Continue # Lo       GUJARATI OM
+ 0AE0..0AE1    ; ID_Continue # Lo   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+ 0AE2..0AE3    ; ID_Continue # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+ 0AE6..0AEF    ; ID_Continue # Nd  [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+ 0AF9          ; ID_Continue # Lo       GUJARATI LETTER ZHA
+ 0AFA..0AFF    ; ID_Continue # Mn   [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+ 0B01          ; ID_Continue # Mn       ORIYA SIGN CANDRABINDU
+ 0B02..0B03    ; ID_Continue # Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+ 0B05..0B0C    ; ID_Continue # Lo   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+ 0B0F..0B10    ; ID_Continue # Lo   [2] ORIYA LETTER E..ORIYA LETTER AI
+ 0B13..0B28    ; ID_Continue # Lo  [22] ORIYA LETTER O..ORIYA LETTER NA
+ 0B2A..0B30    ; ID_Continue # Lo   [7] ORIYA LETTER PA..ORIYA LETTER RA
+ 0B32..0B33    ; ID_Continue # Lo   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+ 0B35..0B39    ; ID_Continue # Lo   [5] ORIYA LETTER VA..ORIYA LETTER HA
+ 0B3C          ; ID_Continue # Mn       ORIYA SIGN NUKTA
+ 0B3D          ; ID_Continue # Lo       ORIYA SIGN AVAGRAHA
+ 0B3E          ; ID_Continue # Mc       ORIYA VOWEL SIGN AA
+ 0B3F          ; ID_Continue # Mn       ORIYA VOWEL SIGN I
+ 0B40          ; ID_Continue # Mc       ORIYA VOWEL SIGN II
+ 0B41..0B44    ; ID_Continue # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+ 0B47..0B48    ; ID_Continue # Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; ID_Continue # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B4D          ; ID_Continue # Mn       ORIYA SIGN VIRAMA
+ 0B55..0B56    ; ID_Continue # Mn   [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+ 0B57          ; ID_Continue # Mc       ORIYA AU LENGTH MARK
+ 0B5C..0B5D    ; ID_Continue # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B5F..0B61    ; ID_Continue # Lo   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+ 0B62..0B63    ; ID_Continue # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+ 0B66..0B6F    ; ID_Continue # Nd  [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+ 0B71          ; ID_Continue # Lo       ORIYA LETTER WA
+ 0B82          ; ID_Continue # Mn       TAMIL SIGN ANUSVARA
+ 0B83          ; ID_Continue # Lo       TAMIL SIGN VISARGA
+ 0B85..0B8A    ; ID_Continue # Lo   [6] TAMIL LETTER A..TAMIL LETTER UU
+ 0B8E..0B90    ; ID_Continue # Lo   [3] TAMIL LETTER E..TAMIL LETTER AI
+ 0B92..0B95    ; ID_Continue # Lo   [4] TAMIL LETTER O..TAMIL LETTER KA
+ 0B99..0B9A    ; ID_Continue # Lo   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+ 0B9C          ; ID_Continue # Lo       TAMIL LETTER JA
+ 0B9E..0B9F    ; ID_Continue # Lo   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+ 0BA3..0BA4    ; ID_Continue # Lo   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+ 0BA8..0BAA    ; ID_Continue # Lo   [3] TAMIL LETTER NA..TAMIL LETTER PA
+ 0BAE..0BB9    ; ID_Continue # Lo  [12] TAMIL LETTER MA..TAMIL LETTER HA
+ 0BBE..0BBF    ; ID_Continue # Mc   [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+ 0BC0          ; ID_Continue # Mn       TAMIL VOWEL SIGN II
+ 0BC1..0BC2    ; ID_Continue # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+ 0BC6..0BC8    ; ID_Continue # Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+ 0BCA..0BCC    ; ID_Continue # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0BCD          ; ID_Continue # Mn       TAMIL SIGN VIRAMA
+ 0BD0          ; ID_Continue # Lo       TAMIL OM
+ 0BD7          ; ID_Continue # Mc       TAMIL AU LENGTH MARK
+ 0BE6..0BEF    ; ID_Continue # Nd  [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+ 0C00          ; ID_Continue # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
+ 0C01..0C03    ; ID_Continue # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+ 0C04          ; ID_Continue # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
+ 0C05..0C0C    ; ID_Continue # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+ 0C0E..0C10    ; ID_Continue # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
+ 0C12..0C28    ; ID_Continue # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
+ 0C2A..0C39    ; ID_Continue # Lo  [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3C          ; ID_Continue # Mn       TELUGU SIGN NUKTA
+ 0C3D          ; ID_Continue # Lo       TELUGU SIGN AVAGRAHA
+ 0C3E..0C40    ; ID_Continue # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+ 0C41..0C44    ; ID_Continue # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+ 0C46..0C48    ; ID_Continue # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+ 0C4A..0C4D    ; ID_Continue # Mn   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+ 0C55..0C56    ; ID_Continue # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+ 0C58..0C5A    ; ID_Continue # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D          ; ID_Continue # Lo       TELUGU LETTER NAKAARA POLLU
+ 0C60..0C61    ; ID_Continue # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+ 0C62..0C63    ; ID_Continue # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+ 0C66..0C6F    ; ID_Continue # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+ 0C80          ; ID_Continue # Lo       KANNADA SIGN SPACING CANDRABINDU
+ 0C81          ; ID_Continue # Mn       KANNADA SIGN CANDRABINDU
+ 0C82..0C83    ; ID_Continue # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+ 0C85..0C8C    ; ID_Continue # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+ 0C8E..0C90    ; ID_Continue # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
+ 0C92..0CA8    ; ID_Continue # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
+ 0CAA..0CB3    ; ID_Continue # Lo  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+ 0CB5..0CB9    ; ID_Continue # Lo   [5] KANNADA LETTER VA..KANNADA LETTER HA
+ 0CBC          ; ID_Continue # Mn       KANNADA SIGN NUKTA
+ 0CBD          ; ID_Continue # Lo       KANNADA SIGN AVAGRAHA
+ 0CBE          ; ID_Continue # Mc       KANNADA VOWEL SIGN AA
+ 0CBF          ; ID_Continue # Mn       KANNADA VOWEL SIGN I
+ 0CC0..0CC4    ; ID_Continue # Mc   [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+ 0CC6          ; ID_Continue # Mn       KANNADA VOWEL SIGN E
+ 0CC7..0CC8    ; ID_Continue # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; ID_Continue # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0CCC..0CCD    ; ID_Continue # Mn   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+ 0CD5..0CD6    ; ID_Continue # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+ 0CDD..0CDE    ; ID_Continue # Lo   [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+ 0CE0..0CE1    ; ID_Continue # Lo   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+ 0CE2..0CE3    ; ID_Continue # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+ 0CE6..0CEF    ; ID_Continue # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+ 0CF1..0CF2    ; ID_Continue # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0CF3          ; ID_Continue # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+ 0D00..0D01    ; ID_Continue # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+ 0D02..0D03    ; ID_Continue # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+ 0D04..0D0C    ; ID_Continue # Lo   [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+ 0D0E..0D10    ; ID_Continue # Lo   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+ 0D12..0D3A    ; ID_Continue # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+ 0D3B..0D3C    ; ID_Continue # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+ 0D3D          ; ID_Continue # Lo       MALAYALAM SIGN AVAGRAHA
+ 0D3E..0D40    ; ID_Continue # Mc   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+ 0D41..0D44    ; ID_Continue # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+ 0D46..0D48    ; ID_Continue # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+ 0D4A..0D4C    ; ID_Continue # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0D4D          ; ID_Continue # Mn       MALAYALAM SIGN VIRAMA
+ 0D4E          ; ID_Continue # Lo       MALAYALAM LETTER DOT REPH
+ 0D54..0D56    ; ID_Continue # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+ 0D57          ; ID_Continue # Mc       MALAYALAM AU LENGTH MARK
+ 0D5F..0D61    ; ID_Continue # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+ 0D62..0D63    ; ID_Continue # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+ 0D66..0D6F    ; ID_Continue # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+ 0D7A..0D7F    ; ID_Continue # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D81          ; ID_Continue # Mn       SINHALA SIGN CANDRABINDU
+ 0D82..0D83    ; ID_Continue # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+ 0D85..0D96    ; ID_Continue # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+ 0D9A..0DB1    ; ID_Continue # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+ 0DB3..0DBB    ; ID_Continue # Lo   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+ 0DBD          ; ID_Continue # Lo       SINHALA LETTER DANTAJA LAYANNA
+ 0DC0..0DC6    ; ID_Continue # Lo   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+ 0DCA          ; ID_Continue # Mn       SINHALA SIGN AL-LAKUNA
+ 0DCF..0DD1    ; ID_Continue # Mc   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+ 0DD2..0DD4    ; ID_Continue # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+ 0DD6          ; ID_Continue # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
+ 0DD8..0DDF    ; ID_Continue # Mc   [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+ 0DE6..0DEF    ; ID_Continue # Nd  [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
+ 0DF2..0DF3    ; ID_Continue # Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+ 0E01..0E30    ; ID_Continue # Lo  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+ 0E31          ; ID_Continue # Mn       THAI CHARACTER MAI HAN-AKAT
+ 0E32..0E33    ; ID_Continue # Lo   [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+ 0E34..0E3A    ; ID_Continue # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+ 0E40..0E45    ; ID_Continue # Lo   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+ 0E46          ; ID_Continue # Lm       THAI CHARACTER MAIYAMOK
+ 0E47..0E4E    ; ID_Continue # Mn   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+ 0E50..0E59    ; ID_Continue # Nd  [10] THAI DIGIT ZERO..THAI DIGIT NINE
+ 0E81..0E82    ; ID_Continue # Lo   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+ 0E84          ; ID_Continue # Lo       LAO LETTER KHO TAM
+ 0E86..0E8A    ; ID_Continue # Lo   [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
+ 0E8C..0EA3    ; ID_Continue # Lo  [24] LAO LETTER PALI JHA..LAO LETTER LO LING
+ 0EA5          ; ID_Continue # Lo       LAO LETTER LO LOOT
+ 0EA7..0EB0    ; ID_Continue # Lo  [10] LAO LETTER WO..LAO VOWEL SIGN A
+ 0EB1          ; ID_Continue # Mn       LAO VOWEL SIGN MAI KAN
+ 0EB2..0EB3    ; ID_Continue # Lo   [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+ 0EB4..0EBC    ; ID_Continue # Mn   [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+ 0EBD          ; ID_Continue # Lo       LAO SEMIVOWEL SIGN NYO
+ 0EC0..0EC4    ; ID_Continue # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+ 0EC6          ; ID_Continue # Lm       LAO KO LA
+ 0EC8..0ECE    ; ID_Continue # Mn   [7] LAO TONE MAI EK..LAO YAMAKKAN
+ 0ED0..0ED9    ; ID_Continue # Nd  [10] LAO DIGIT ZERO..LAO DIGIT NINE
+ 0EDC..0EDF    ; ID_Continue # Lo   [4] LAO HO NO..LAO LETTER KHMU NYO
+ 0F00          ; ID_Continue # Lo       TIBETAN SYLLABLE OM
+ 0F18..0F19    ; ID_Continue # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+ 0F20..0F29    ; ID_Continue # Nd  [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+ 0F35          ; ID_Continue # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA
+ 0F37          ; ID_Continue # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS
+ 0F39          ; ID_Continue # Mn       TIBETAN MARK TSA -PHRU
+ 0F3E..0F3F    ; ID_Continue # Mc   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+ 0F40..0F47    ; ID_Continue # Lo   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+ 0F49..0F6C    ; ID_Continue # Lo  [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+ 0F71..0F7E    ; ID_Continue # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+ 0F7F          ; ID_Continue # Mc       TIBETAN SIGN RNAM BCAD
+ 0F80..0F84    ; ID_Continue # Mn   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+ 0F86..0F87    ; ID_Continue # Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+ 0F88..0F8C    ; ID_Continue # Lo   [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+ 0F8D..0F97    ; ID_Continue # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+ 0F99..0FBC    ; ID_Continue # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+ 0FC6          ; ID_Continue # Mn       TIBETAN SYMBOL PADMA GDAN
+ 1000..102A    ; ID_Continue # Lo  [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+ 102B..102C    ; ID_Continue # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+ 102D..1030    ; ID_Continue # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+ 1031          ; ID_Continue # Mc       MYANMAR VOWEL SIGN E
+ 1032..1037    ; ID_Continue # Mn   [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+ 1038          ; ID_Continue # Mc       MYANMAR SIGN VISARGA
+ 1039..103A    ; ID_Continue # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+ 103B..103C    ; ID_Continue # Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+ 103D..103E    ; ID_Continue # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+ 103F          ; ID_Continue # Lo       MYANMAR LETTER GREAT SA
+ 1040..1049    ; ID_Continue # Nd  [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+ 1050..1055    ; ID_Continue # Lo   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+ 1056..1057    ; ID_Continue # Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+ 1058..1059    ; ID_Continue # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+ 105A..105D    ; ID_Continue # Lo   [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+ 105E..1060    ; ID_Continue # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+ 1061          ; ID_Continue # Lo       MYANMAR LETTER SGAW KAREN SHA
+ 1062..1064    ; ID_Continue # Mc   [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+ 1065..1066    ; ID_Continue # Lo   [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+ 1067..106D    ; ID_Continue # Mc   [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+ 106E..1070    ; ID_Continue # Lo   [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+ 1071..1074    ; ID_Continue # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+ 1075..1081    ; ID_Continue # Lo  [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+ 1082          ; ID_Continue # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+ 1083..1084    ; ID_Continue # Mc   [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+ 1085..1086    ; ID_Continue # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+ 1087..108C    ; ID_Continue # Mc   [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+ 108D          ; ID_Continue # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+ 108E          ; ID_Continue # Lo       MYANMAR LETTER RUMAI PALAUNG FA
+ 108F          ; ID_Continue # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
+ 1090..1099    ; ID_Continue # Nd  [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+ 109A..109C    ; ID_Continue # Mc   [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
+ 109D          ; ID_Continue # Mn       MYANMAR VOWEL SIGN AITON AI
+ 10A0..10C5    ; ID_Continue # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; ID_Continue # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; ID_Continue # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; ID_Continue # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; ID_Continue # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; ID_Continue # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 1100..1248    ; ID_Continue # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+ 124A..124D    ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+ 1250..1256    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+ 1258          ; ID_Continue # Lo       ETHIOPIC SYLLABLE QHWA
+ 125A..125D    ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+ 1260..1288    ; ID_Continue # Lo  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+ 128A..128D    ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+ 1290..12B0    ; ID_Continue # Lo  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+ 12B2..12B5    ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+ 12B8..12BE    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+ 12C0          ; ID_Continue # Lo       ETHIOPIC SYLLABLE KXWA
+ 12C2..12C5    ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+ 12C8..12D6    ; ID_Continue # Lo  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+ 12D8..1310    ; ID_Continue # Lo  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+ 1312..1315    ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+ 1318..135A    ; ID_Continue # Lo  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+ 135D..135F    ; ID_Continue # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+ 1369..1371    ; ID_Continue # No   [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE
+ 1380..138F    ; ID_Continue # Lo  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+ 13A0..13F5    ; ID_Continue # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; ID_Continue # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1401..166C    ; ID_Continue # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+ 166F..167F    ; ID_Continue # Lo  [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+ 1681..169A    ; ID_Continue # Lo  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+ 16A0..16EA    ; ID_Continue # Lo  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+ 16EE..16F0    ; ID_Continue # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+ 16F1..16F8    ; ID_Continue # Lo   [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+ 1700..1711    ; ID_Continue # Lo  [18] TAGALOG LETTER A..TAGALOG LETTER HA
+ 1712..1714    ; ID_Continue # Mn   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+ 1715          ; ID_Continue # Mc       TAGALOG SIGN PAMUDPOD
+ 171F..1731    ; ID_Continue # Lo  [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+ 1732..1733    ; ID_Continue # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+ 1734          ; ID_Continue # Mc       HANUNOO SIGN PAMUDPOD
+ 1740..1751    ; ID_Continue # Lo  [18] BUHID LETTER A..BUHID LETTER HA
+ 1752..1753    ; ID_Continue # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+ 1760..176C    ; ID_Continue # Lo  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+ 176E..1770    ; ID_Continue # Lo   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+ 1772..1773    ; ID_Continue # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+ 1780..17B3    ; ID_Continue # Lo  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+ 17B4..17B5    ; ID_Continue # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 17B6          ; ID_Continue # Mc       KHMER VOWEL SIGN AA
+ 17B7..17BD    ; ID_Continue # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+ 17BE..17C5    ; ID_Continue # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+ 17C6          ; ID_Continue # Mn       KHMER SIGN NIKAHIT
+ 17C7..17C8    ; ID_Continue # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+ 17C9..17D3    ; ID_Continue # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+ 17D7          ; ID_Continue # Lm       KHMER SIGN LEK TOO
+ 17DC          ; ID_Continue # Lo       KHMER SIGN AVAKRAHASANYA
+ 17DD          ; ID_Continue # Mn       KHMER SIGN ATTHACAN
+ 17E0..17E9    ; ID_Continue # Nd  [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+ 180B..180D    ; ID_Continue # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180F          ; ID_Continue # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 1810..1819    ; ID_Continue # Nd  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+ 1820..1842    ; ID_Continue # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+ 1843          ; ID_Continue # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1844..1878    ; ID_Continue # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+ 1880..1884    ; ID_Continue # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+ 1885..1886    ; ID_Continue # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 1887..18A8    ; ID_Continue # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+ 18A9          ; ID_Continue # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
+ 18AA          ; ID_Continue # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+ 18B0..18F5    ; ID_Continue # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+ 1900..191E    ; ID_Continue # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+ 1920..1922    ; ID_Continue # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+ 1923..1926    ; ID_Continue # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+ 1927..1928    ; ID_Continue # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+ 1929..192B    ; ID_Continue # Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+ 1930..1931    ; ID_Continue # Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+ 1932          ; ID_Continue # Mn       LIMBU SMALL LETTER ANUSVARA
+ 1933..1938    ; ID_Continue # Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+ 1939..193B    ; ID_Continue # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+ 1946..194F    ; ID_Continue # Nd  [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+ 1950..196D    ; ID_Continue # Lo  [30] TAI LE LETTER KA..TAI LE LETTER AI
+ 1970..1974    ; ID_Continue # Lo   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+ 1980..19AB    ; ID_Continue # Lo  [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
+ 19B0..19C9    ; ID_Continue # Lo  [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+ 19D0..19D9    ; ID_Continue # Nd  [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+ 19DA          ; ID_Continue # No       NEW TAI LUE THAM DIGIT ONE
+ 1A00..1A16    ; ID_Continue # Lo  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+ 1A17..1A18    ; ID_Continue # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+ 1A19..1A1A    ; ID_Continue # Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+ 1A1B          ; ID_Continue # Mn       BUGINESE VOWEL SIGN AE
+ 1A20..1A54    ; ID_Continue # Lo  [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
+ 1A55          ; ID_Continue # Mc       TAI THAM CONSONANT SIGN MEDIAL RA
+ 1A56          ; ID_Continue # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
+ 1A57          ; ID_Continue # Mc       TAI THAM CONSONANT SIGN LA TANG LAI
+ 1A58..1A5E    ; ID_Continue # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+ 1A60          ; ID_Continue # Mn       TAI THAM SIGN SAKOT
+ 1A61          ; ID_Continue # Mc       TAI THAM VOWEL SIGN A
+ 1A62          ; ID_Continue # Mn       TAI THAM VOWEL SIGN MAI SAT
+ 1A63..1A64    ; ID_Continue # Mc   [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
+ 1A65..1A6C    ; ID_Continue # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+ 1A6D..1A72    ; ID_Continue # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+ 1A73..1A7C    ; ID_Continue # Mn  [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+ 1A7F          ; ID_Continue # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
+ 1A80..1A89    ; ID_Continue # Nd  [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
+ 1A90..1A99    ; ID_Continue # Nd  [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
+ 1AA7          ; ID_Continue # Lm       TAI THAM SIGN MAI YAMOK
+ 1AB0..1ABD    ; ID_Continue # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+ 1ABF..1ACE    ; ID_Continue # Mn  [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+ 1B00..1B03    ; ID_Continue # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+ 1B04          ; ID_Continue # Mc       BALINESE SIGN BISAH
+ 1B05..1B33    ; ID_Continue # Lo  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+ 1B34          ; ID_Continue # Mn       BALINESE SIGN REREKAN
+ 1B35          ; ID_Continue # Mc       BALINESE VOWEL SIGN TEDUNG
+ 1B36..1B3A    ; ID_Continue # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+ 1B3B          ; ID_Continue # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3C          ; ID_Continue # Mn       BALINESE VOWEL SIGN LA LENGA
+ 1B3D..1B41    ; ID_Continue # Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B42          ; ID_Continue # Mn       BALINESE VOWEL SIGN PEPET
+ 1B43..1B44    ; ID_Continue # Mc   [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+ 1B45..1B4C    ; ID_Continue # Lo   [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+ 1B50..1B59    ; ID_Continue # Nd  [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+ 1B6B..1B73    ; ID_Continue # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+ 1B80..1B81    ; ID_Continue # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+ 1B82          ; ID_Continue # Mc       SUNDANESE SIGN PANGWISAD
+ 1B83..1BA0    ; ID_Continue # Lo  [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+ 1BA1          ; ID_Continue # Mc       SUNDANESE CONSONANT SIGN PAMINGKAL
+ 1BA2..1BA5    ; ID_Continue # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+ 1BA6..1BA7    ; ID_Continue # Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+ 1BA8..1BA9    ; ID_Continue # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+ 1BAA          ; ID_Continue # Mc       SUNDANESE SIGN PAMAAEH
+ 1BAB..1BAD    ; ID_Continue # Mn   [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+ 1BAE..1BAF    ; ID_Continue # Lo   [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+ 1BB0..1BB9    ; ID_Continue # Nd  [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+ 1BBA..1BE5    ; ID_Continue # Lo  [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+ 1BE6          ; ID_Continue # Mn       BATAK SIGN TOMPI
+ 1BE7          ; ID_Continue # Mc       BATAK VOWEL SIGN E
+ 1BE8..1BE9    ; ID_Continue # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+ 1BEA..1BEC    ; ID_Continue # Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+ 1BED          ; ID_Continue # Mn       BATAK VOWEL SIGN KARO O
+ 1BEE          ; ID_Continue # Mc       BATAK VOWEL SIGN U
+ 1BEF..1BF1    ; ID_Continue # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+ 1BF2..1BF3    ; ID_Continue # Mc   [2] BATAK PANGOLAT..BATAK PANONGONAN
+ 1C00..1C23    ; ID_Continue # Lo  [36] LEPCHA LETTER KA..LEPCHA LETTER A
+ 1C24..1C2B    ; ID_Continue # Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+ 1C2C..1C33    ; ID_Continue # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+ 1C34..1C35    ; ID_Continue # Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+ 1C36..1C37    ; ID_Continue # Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+ 1C40..1C49    ; ID_Continue # Nd  [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+ 1C4D..1C4F    ; ID_Continue # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+ 1C50..1C59    ; ID_Continue # Nd  [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+ 1C5A..1C77    ; ID_Continue # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+ 1C78..1C7D    ; ID_Continue # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1C80..1C88    ; ID_Continue # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; ID_Continue # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; ID_Continue # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1CD0..1CD2    ; ID_Continue # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+ 1CD4..1CE0    ; ID_Continue # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+ 1CE1          ; ID_Continue # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+ 1CE2..1CE8    ; ID_Continue # Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+ 1CE9..1CEC    ; ID_Continue # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+ 1CED          ; ID_Continue # Mn       VEDIC SIGN TIRYAK
+ 1CEE..1CF3    ; ID_Continue # Lo   [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+ 1CF4          ; ID_Continue # Mn       VEDIC TONE CANDRA ABOVE
+ 1CF5..1CF6    ; ID_Continue # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+ 1CF7          ; ID_Continue # Mc       VEDIC SIGN ATIKRAMA
+ 1CF8..1CF9    ; ID_Continue # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+ 1CFA          ; ID_Continue # Lo       VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+ 1D00..1D2B    ; ID_Continue # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; ID_Continue # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; ID_Continue # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; ID_Continue # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; ID_Continue # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; ID_Continue # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1DC0..1DFF    ; ID_Continue # Mn  [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+ 1E00..1F15    ; ID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; ID_Continue # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; ID_Continue # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; ID_Continue # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; ID_Continue # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; ID_Continue # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; ID_Continue # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; ID_Continue # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; ID_Continue # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; ID_Continue # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; ID_Continue # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; ID_Continue # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; ID_Continue # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; ID_Continue # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; ID_Continue # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; ID_Continue # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; ID_Continue # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; ID_Continue # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; ID_Continue # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 203F..2040    ; ID_Continue # Pc   [2] UNDERTIE..CHARACTER TIE
+ 2054          ; ID_Continue # Pc       INVERTED UNDERTIE
+ 2071          ; ID_Continue # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; ID_Continue # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; ID_Continue # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20D0..20DC    ; ID_Continue # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+ 20E1          ; ID_Continue # Mn       COMBINING LEFT RIGHT ARROW ABOVE
+ 20E5..20F0    ; ID_Continue # Mn  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+ 2102          ; ID_Continue # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; ID_Continue # L&       EULER CONSTANT
+ 210A..2113    ; ID_Continue # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; ID_Continue # L&       DOUBLE-STRUCK CAPITAL N
+ 2118          ; ID_Continue # Sm       SCRIPT CAPITAL P
+ 2119..211D    ; ID_Continue # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; ID_Continue # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; ID_Continue # L&       OHM SIGN
+ 2128          ; ID_Continue # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; ID_Continue # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212E          ; ID_Continue # So       ESTIMATED SYMBOL
+ 212F..2134    ; ID_Continue # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; ID_Continue # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; ID_Continue # L&       INFORMATION SOURCE
+ 213C..213F    ; ID_Continue # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2145..2149    ; ID_Continue # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; ID_Continue # L&       TURNED SMALL F
+ 2160..2182    ; ID_Continue # Nl  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+ 2183..2184    ; ID_Continue # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 2185..2188    ; ID_Continue # Nl   [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+ 2C00..2C7B    ; ID_Continue # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; ID_Continue # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; ID_Continue # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CEB..2CEE    ; ID_Continue # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CEF..2CF1    ; ID_Continue # Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+ 2CF2..2CF3    ; ID_Continue # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; ID_Continue # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; ID_Continue # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; ID_Continue # L&       GEORGIAN SMALL LETTER AEN
+ 2D30..2D67    ; ID_Continue # Lo  [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+ 2D6F          ; ID_Continue # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D7F          ; ID_Continue # Mn       TIFINAGH CONSONANT JOINER
+ 2D80..2D96    ; ID_Continue # Lo  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+ 2DA0..2DA6    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+ 2DA8..2DAE    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+ 2DB0..2DB6    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+ 2DB8..2DBE    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+ 2DC0..2DC6    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+ 2DC8..2DCE    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+ 2DD0..2DD6    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+ 2DD8..2DDE    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+ 2DE0..2DFF    ; ID_Continue # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+ 3005          ; ID_Continue # Lm       IDEOGRAPHIC ITERATION MARK
+ 3006          ; ID_Continue # Lo       IDEOGRAPHIC CLOSING MARK
+ 3007          ; ID_Continue # Nl       IDEOGRAPHIC NUMBER ZERO
+ 3021..3029    ; ID_Continue # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+ 302A..302D    ; ID_Continue # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+ 302E..302F    ; ID_Continue # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+ 3031..3035    ; ID_Continue # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 3038..303A    ; ID_Continue # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 303B          ; ID_Continue # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 303C          ; ID_Continue # Lo       MASU MARK
+ 3041..3096    ; ID_Continue # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+ 3099..309A    ; ID_Continue # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309B..309C    ; ID_Continue # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309D..309E    ; ID_Continue # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 309F          ; ID_Continue # Lo       HIRAGANA DIGRAPH YORI
+ 30A1..30FA    ; ID_Continue # Lo  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+ 30FC..30FE    ; ID_Continue # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ 30FF          ; ID_Continue # Lo       KATAKANA DIGRAPH KOTO
+ 3105..312F    ; ID_Continue # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+ 3131..318E    ; ID_Continue # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 31A0..31BF    ; ID_Continue # Lo  [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+ 31F0..31FF    ; ID_Continue # Lo  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+ 3400..4DBF    ; ID_Continue # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 4E00..A014    ; ID_Continue # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E
+ A015          ; ID_Continue # Lm       YI SYLLABLE WU
+ A016..A48C    ; ID_Continue # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+ A4D0..A4F7    ; ID_Continue # Lo  [40] LISU LETTER BA..LISU LETTER OE
+ A4F8..A4FD    ; ID_Continue # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A500..A60B    ; ID_Continue # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+ A60C          ; ID_Continue # Lm       VAI SYLLABLE LENGTHENER
+ A610..A61F    ; ID_Continue # Lo  [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+ A620..A629    ; ID_Continue # Nd  [10] VAI DIGIT ZERO..VAI DIGIT NINE
+ A62A..A62B    ; ID_Continue # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+ A640..A66D    ; ID_Continue # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A66E          ; ID_Continue # Lo       CYRILLIC LETTER MULTIOCULAR O
+ A66F          ; ID_Continue # Mn       COMBINING CYRILLIC VZMET
+ A674..A67D    ; ID_Continue # Mn  [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+ A67F          ; ID_Continue # Lm       CYRILLIC PAYEROK
+ A680..A69B    ; ID_Continue # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; ID_Continue # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A69E..A69F    ; ID_Continue # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+ A6A0..A6E5    ; ID_Continue # Lo  [70] BAMUM LETTER A..BAMUM LETTER KI
+ A6E6..A6EF    ; ID_Continue # Nl  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+ A6F0..A6F1    ; ID_Continue # Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+ A717..A71F    ; ID_Continue # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A722..A76F    ; ID_Continue # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; ID_Continue # Lm       MODIFIER LETTER US
+ A771..A787    ; ID_Continue # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A788          ; ID_Continue # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A78B..A78E    ; ID_Continue # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A78F          ; ID_Continue # Lo       LATIN LETTER SINOLOGICAL DOT
+ A790..A7CA    ; ID_Continue # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; ID_Continue # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; ID_Continue # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; ID_Continue # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; ID_Continue # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; ID_Continue # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F7          ; ID_Continue # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
+ A7F8..A7F9    ; ID_Continue # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; ID_Continue # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ A7FB..A801    ; ID_Continue # Lo   [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+ A802          ; ID_Continue # Mn       SYLOTI NAGRI SIGN DVISVARA
+ A803..A805    ; ID_Continue # Lo   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+ A806          ; ID_Continue # Mn       SYLOTI NAGRI SIGN HASANTA
+ A807..A80A    ; ID_Continue # Lo   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+ A80B          ; ID_Continue # Mn       SYLOTI NAGRI SIGN ANUSVARA
+ A80C..A822    ; ID_Continue # Lo  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+ A823..A824    ; ID_Continue # Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+ A825..A826    ; ID_Continue # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+ A827          ; ID_Continue # Mc       SYLOTI NAGRI VOWEL SIGN OO
+ A82C          ; ID_Continue # Mn       SYLOTI NAGRI SIGN ALTERNATE HASANTA
+ A840..A873    ; ID_Continue # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+ A880..A881    ; ID_Continue # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+ A882..A8B3    ; ID_Continue # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+ A8B4..A8C3    ; ID_Continue # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+ A8C4..A8C5    ; ID_Continue # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+ A8D0..A8D9    ; ID_Continue # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+ A8E0..A8F1    ; ID_Continue # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+ A8F2..A8F7    ; ID_Continue # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+ A8FB          ; ID_Continue # Lo       DEVANAGARI HEADSTROKE
+ A8FD..A8FE    ; ID_Continue # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+ A8FF          ; ID_Continue # Mn       DEVANAGARI VOWEL SIGN AY
+ A900..A909    ; ID_Continue # Nd  [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+ A90A..A925    ; ID_Continue # Lo  [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+ A926..A92D    ; ID_Continue # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+ A930..A946    ; ID_Continue # Lo  [23] REJANG LETTER KA..REJANG LETTER A
+ A947..A951    ; ID_Continue # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+ A952..A953    ; ID_Continue # Mc   [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+ A960..A97C    ; ID_Continue # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+ A980..A982    ; ID_Continue # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+ A983          ; ID_Continue # Mc       JAVANESE SIGN WIGNYAN
+ A984..A9B2    ; ID_Continue # Lo  [47] JAVANESE LETTER A..JAVANESE LETTER HA
+ A9B3          ; ID_Continue # Mn       JAVANESE SIGN CECAK TELU
+ A9B4..A9B5    ; ID_Continue # Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+ A9B6..A9B9    ; ID_Continue # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+ A9BA..A9BB    ; ID_Continue # Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+ A9BC..A9BD    ; ID_Continue # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+ A9BE..A9C0    ; ID_Continue # Mc   [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+ A9CF          ; ID_Continue # Lm       JAVANESE PANGRANGKEP
+ A9D0..A9D9    ; ID_Continue # Nd  [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
+ A9E0..A9E4    ; ID_Continue # Lo   [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
+ A9E5          ; ID_Continue # Mn       MYANMAR SIGN SHAN SAW
+ A9E6          ; ID_Continue # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ A9E7..A9EF    ; ID_Continue # Lo   [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
+ A9F0..A9F9    ; ID_Continue # Nd  [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE
+ A9FA..A9FE    ; ID_Continue # Lo   [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
+ AA00..AA28    ; ID_Continue # Lo  [41] CHAM LETTER A..CHAM LETTER HA
+ AA29..AA2E    ; ID_Continue # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+ AA2F..AA30    ; ID_Continue # Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+ AA31..AA32    ; ID_Continue # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+ AA33..AA34    ; ID_Continue # Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+ AA35..AA36    ; ID_Continue # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+ AA40..AA42    ; ID_Continue # Lo   [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+ AA43          ; ID_Continue # Mn       CHAM CONSONANT SIGN FINAL NG
+ AA44..AA4B    ; ID_Continue # Lo   [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+ AA4C          ; ID_Continue # Mn       CHAM CONSONANT SIGN FINAL M
+ AA4D          ; ID_Continue # Mc       CHAM CONSONANT SIGN FINAL H
+ AA50..AA59    ; ID_Continue # Nd  [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+ AA60..AA6F    ; ID_Continue # Lo  [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
+ AA70          ; ID_Continue # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA71..AA76    ; ID_Continue # Lo   [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
+ AA7A          ; ID_Continue # Lo       MYANMAR LETTER AITON RA
+ AA7B          ; ID_Continue # Mc       MYANMAR SIGN PAO KAREN TONE
+ AA7C          ; ID_Continue # Mn       MYANMAR SIGN TAI LAING TONE-2
+ AA7D          ; ID_Continue # Mc       MYANMAR SIGN TAI LAING TONE-5
+ AA7E..AAAF    ; ID_Continue # Lo  [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
+ AAB0          ; ID_Continue # Mn       TAI VIET MAI KANG
+ AAB1          ; ID_Continue # Lo       TAI VIET VOWEL AA
+ AAB2..AAB4    ; ID_Continue # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+ AAB5..AAB6    ; ID_Continue # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
+ AAB7..AAB8    ; ID_Continue # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+ AAB9..AABD    ; ID_Continue # Lo   [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
+ AABE..AABF    ; ID_Continue # Mn   [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+ AAC0          ; ID_Continue # Lo       TAI VIET TONE MAI NUENG
+ AAC1          ; ID_Continue # Mn       TAI VIET TONE MAI THO
+ AAC2          ; ID_Continue # Lo       TAI VIET TONE MAI SONG
+ AADB..AADC    ; ID_Continue # Lo   [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
+ AADD          ; ID_Continue # Lm       TAI VIET SYMBOL SAM
+ AAE0..AAEA    ; ID_Continue # Lo  [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+ AAEB          ; ID_Continue # Mc       MEETEI MAYEK VOWEL SIGN II
+ AAEC..AAED    ; ID_Continue # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+ AAEE..AAEF    ; ID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+ AAF2          ; ID_Continue # Lo       MEETEI MAYEK ANJI
+ AAF3..AAF4    ; ID_Continue # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AAF5          ; ID_Continue # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
+ AAF6          ; ID_Continue # Mn       MEETEI MAYEK VIRAMA
+ AB01..AB06    ; ID_Continue # Lo   [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+ AB09..AB0E    ; ID_Continue # Lo   [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+ AB11..AB16    ; ID_Continue # Lo   [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+ AB20..AB26    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+ AB28..AB2E    ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+ AB30..AB5A    ; ID_Continue # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; ID_Continue # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; ID_Continue # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; ID_Continue # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; ID_Continue # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ ABC0..ABE2    ; ID_Continue # Lo  [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+ ABE3..ABE4    ; ID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ ABE5          ; ID_Continue # Mn       MEETEI MAYEK VOWEL SIGN ANAP
+ ABE6..ABE7    ; ID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ ABE8          ; ID_Continue # Mn       MEETEI MAYEK VOWEL SIGN UNAP
+ ABE9..ABEA    ; ID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ ABEC          ; ID_Continue # Mc       MEETEI MAYEK LUM IYEK
+ ABED          ; ID_Continue # Mn       MEETEI MAYEK APUN IYEK
+ ABF0..ABF9    ; ID_Continue # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
+ AC00..D7A3    ; ID_Continue # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ D7B0..D7C6    ; ID_Continue # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+ D7CB..D7FB    ; ID_Continue # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+ F900..FA6D    ; ID_Continue # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; ID_Continue # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; ID_Continue # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; ID_Continue # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; ID_Continue # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1E          ; ID_Continue # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
+ FB1F..FB28    ; ID_Continue # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB2A..FB36    ; ID_Continue # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; ID_Continue # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; ID_Continue # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; ID_Continue # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; ID_Continue # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; ID_Continue # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FD3D    ; ID_Continue # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; ID_Continue # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; ID_Continue # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; ID_Continue # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FE00..FE0F    ; ID_Continue # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FE20..FE2F    ; ID_Continue # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+ FE33..FE34    ; ID_Continue # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE4D..FE4F    ; ID_Continue # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE70..FE74    ; ID_Continue # Lo   [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; ID_Continue # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF10..FF19    ; ID_Continue # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ FF21..FF3A    ; ID_Continue # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3F          ; ID_Continue # Pc       FULLWIDTH LOW LINE
+ FF41..FF5A    ; ID_Continue # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF66..FF6F    ; ID_Continue # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; ID_Continue # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; ID_Continue # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; ID_Continue # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; ID_Continue # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; ID_Continue # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; ID_Continue # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; ID_Continue # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; ID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ 10000..1000B  ; ID_Continue # Lo  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+ 1000D..10026  ; ID_Continue # Lo  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+ 10028..1003A  ; ID_Continue # Lo  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+ 1003C..1003D  ; ID_Continue # Lo   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+ 1003F..1004D  ; ID_Continue # Lo  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+ 10050..1005D  ; ID_Continue # Lo  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+ 10080..100FA  ; ID_Continue # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+ 10140..10174  ; ID_Continue # Nl  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+ 101FD         ; ID_Continue # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+ 10280..1029C  ; ID_Continue # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
+ 102A0..102D0  ; ID_Continue # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
+ 102E0         ; ID_Continue # Mn       COPTIC EPACT THOUSANDS MARK
+ 10300..1031F  ; ID_Continue # Lo  [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+ 1032D..10340  ; ID_Continue # Lo  [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+ 10341         ; ID_Continue # Nl       GOTHIC LETTER NINETY
+ 10342..10349  ; ID_Continue # Lo   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+ 1034A         ; ID_Continue # Nl       GOTHIC LETTER NINE HUNDRED
+ 10350..10375  ; ID_Continue # Lo  [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+ 10376..1037A  ; ID_Continue # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+ 10380..1039D  ; ID_Continue # Lo  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+ 103A0..103C3  ; ID_Continue # Lo  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+ 103C8..103CF  ; ID_Continue # Lo   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+ 103D1..103D5  ; ID_Continue # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+ 10400..1044F  ; ID_Continue # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 10450..1049D  ; ID_Continue # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+ 104A0..104A9  ; ID_Continue # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+ 104B0..104D3  ; ID_Continue # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; ID_Continue # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10500..10527  ; ID_Continue # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+ 10530..10563  ; ID_Continue # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+ 10570..1057A  ; ID_Continue # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; ID_Continue # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; ID_Continue # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; ID_Continue # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; ID_Continue # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; ID_Continue # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; ID_Continue # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; ID_Continue # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10600..10736  ; ID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+ 10740..10755  ; ID_Continue # Lo  [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+ 10760..10767  ; ID_Continue # Lo   [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785  ; ID_Continue # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; ID_Continue # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; ID_Continue # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10800..10805  ; ID_Continue # Lo   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+ 10808         ; ID_Continue # Lo       CYPRIOT SYLLABLE JO
+ 1080A..10835  ; ID_Continue # Lo  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+ 10837..10838  ; ID_Continue # Lo   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+ 1083C         ; ID_Continue # Lo       CYPRIOT SYLLABLE ZA
+ 1083F..10855  ; ID_Continue # Lo  [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+ 10860..10876  ; ID_Continue # Lo  [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+ 10880..1089E  ; ID_Continue # Lo  [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+ 108E0..108F2  ; ID_Continue # Lo  [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+ 108F4..108F5  ; ID_Continue # Lo   [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+ 10900..10915  ; ID_Continue # Lo  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+ 10920..10939  ; ID_Continue # Lo  [26] LYDIAN LETTER A..LYDIAN LETTER C
+ 10980..109B7  ; ID_Continue # Lo  [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+ 109BE..109BF  ; ID_Continue # Lo   [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+ 10A00         ; ID_Continue # Lo       KHAROSHTHI LETTER A
+ 10A01..10A03  ; ID_Continue # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+ 10A05..10A06  ; ID_Continue # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+ 10A0C..10A0F  ; ID_Continue # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+ 10A10..10A13  ; ID_Continue # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+ 10A15..10A17  ; ID_Continue # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+ 10A19..10A35  ; ID_Continue # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+ 10A38..10A3A  ; ID_Continue # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+ 10A3F         ; ID_Continue # Mn       KHAROSHTHI VIRAMA
+ 10A60..10A7C  ; ID_Continue # Lo  [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+ 10A80..10A9C  ; ID_Continue # Lo  [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+ 10AC0..10AC7  ; ID_Continue # Lo   [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+ 10AC9..10AE4  ; ID_Continue # Lo  [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+ 10AE5..10AE6  ; ID_Continue # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+ 10B00..10B35  ; ID_Continue # Lo  [54] AVESTAN LETTER A..AVESTAN LETTER HE
+ 10B40..10B55  ; ID_Continue # Lo  [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+ 10B60..10B72  ; ID_Continue # Lo  [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+ 10B80..10B91  ; ID_Continue # Lo  [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+ 10C00..10C48  ; ID_Continue # Lo  [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+ 10C80..10CB2  ; ID_Continue # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; ID_Continue # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 10D00..10D23  ; ID_Continue # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+ 10D24..10D27  ; ID_Continue # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10D30..10D39  ; ID_Continue # Nd  [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+ 10E80..10EA9  ; ID_Continue # Lo  [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EAB..10EAC  ; ID_Continue # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+ 10EB0..10EB1  ; ID_Continue # Lo   [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10EFD..10EFF  ; ID_Continue # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+ 10F00..10F1C  ; ID_Continue # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+ 10F27         ; ID_Continue # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+ 10F30..10F45  ; ID_Continue # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+ 10F46..10F50  ; ID_Continue # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+ 10F70..10F81  ; ID_Continue # Lo  [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10F82..10F85  ; ID_Continue # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+ 10FB0..10FC4  ; ID_Continue # Lo  [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FE0..10FF6  ; ID_Continue # Lo  [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+ 11000         ; ID_Continue # Mc       BRAHMI SIGN CANDRABINDU
+ 11001         ; ID_Continue # Mn       BRAHMI SIGN ANUSVARA
+ 11002         ; ID_Continue # Mc       BRAHMI SIGN VISARGA
+ 11003..11037  ; ID_Continue # Lo  [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+ 11038..11046  ; ID_Continue # Mn  [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+ 11066..1106F  ; ID_Continue # Nd  [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
+ 11070         ; ID_Continue # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
+ 11071..11072  ; ID_Continue # Lo   [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11073..11074  ; ID_Continue # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 11075         ; ID_Continue # Lo       BRAHMI LETTER OLD TAMIL LLA
+ 1107F..11081  ; ID_Continue # Mn   [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+ 11082         ; ID_Continue # Mc       KAITHI SIGN VISARGA
+ 11083..110AF  ; ID_Continue # Lo  [45] KAITHI LETTER A..KAITHI LETTER HA
+ 110B0..110B2  ; ID_Continue # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+ 110B3..110B6  ; ID_Continue # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+ 110B7..110B8  ; ID_Continue # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+ 110B9..110BA  ; ID_Continue # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+ 110C2         ; ID_Continue # Mn       KAITHI VOWEL SIGN VOCALIC R
+ 110D0..110E8  ; ID_Continue # Lo  [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+ 110F0..110F9  ; ID_Continue # Nd  [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
+ 11100..11102  ; ID_Continue # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+ 11103..11126  ; ID_Continue # Lo  [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+ 11127..1112B  ; ID_Continue # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+ 1112C         ; ID_Continue # Mc       CHAKMA VOWEL SIGN E
+ 1112D..11134  ; ID_Continue # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+ 11136..1113F  ; ID_Continue # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
+ 11144         ; ID_Continue # Lo       CHAKMA LETTER LHAA
+ 11145..11146  ; ID_Continue # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+ 11147         ; ID_Continue # Lo       CHAKMA LETTER VAA
+ 11150..11172  ; ID_Continue # Lo  [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+ 11173         ; ID_Continue # Mn       MAHAJANI SIGN NUKTA
+ 11176         ; ID_Continue # Lo       MAHAJANI LIGATURE SHRI
+ 11180..11181  ; ID_Continue # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+ 11182         ; ID_Continue # Mc       SHARADA SIGN VISARGA
+ 11183..111B2  ; ID_Continue # Lo  [48] SHARADA LETTER A..SHARADA LETTER HA
+ 111B3..111B5  ; ID_Continue # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+ 111B6..111BE  ; ID_Continue # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+ 111BF..111C0  ; ID_Continue # Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+ 111C1..111C4  ; ID_Continue # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+ 111C9..111CC  ; ID_Continue # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+ 111CE         ; ID_Continue # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
+ 111CF         ; ID_Continue # Mn       SHARADA SIGN INVERTED CANDRABINDU
+ 111D0..111D9  ; ID_Continue # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
+ 111DA         ; ID_Continue # Lo       SHARADA EKAM
+ 111DC         ; ID_Continue # Lo       SHARADA HEADSTROKE
+ 11200..11211  ; ID_Continue # Lo  [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+ 11213..1122B  ; ID_Continue # Lo  [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+ 1122C..1122E  ; ID_Continue # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+ 1122F..11231  ; ID_Continue # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+ 11232..11233  ; ID_Continue # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+ 11234         ; ID_Continue # Mn       KHOJKI SIGN ANUSVARA
+ 11235         ; ID_Continue # Mc       KHOJKI SIGN VIRAMA
+ 11236..11237  ; ID_Continue # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+ 1123E         ; ID_Continue # Mn       KHOJKI SIGN SUKUN
+ 1123F..11240  ; ID_Continue # Lo   [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11241         ; ID_Continue # Mn       KHOJKI VOWEL SIGN VOCALIC R
+ 11280..11286  ; ID_Continue # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
+ 11288         ; ID_Continue # Lo       MULTANI LETTER GHA
+ 1128A..1128D  ; ID_Continue # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
+ 1128F..1129D  ; ID_Continue # Lo  [15] MULTANI LETTER NYA..MULTANI LETTER BA
+ 1129F..112A8  ; ID_Continue # Lo  [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+ 112B0..112DE  ; ID_Continue # Lo  [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+ 112DF         ; ID_Continue # Mn       KHUDAWADI SIGN ANUSVARA
+ 112E0..112E2  ; ID_Continue # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+ 112E3..112EA  ; ID_Continue # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+ 112F0..112F9  ; ID_Continue # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+ 11300..11301  ; ID_Continue # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+ 11302..11303  ; ID_Continue # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+ 11305..1130C  ; ID_Continue # Lo   [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+ 1130F..11310  ; ID_Continue # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+ 11313..11328  ; ID_Continue # Lo  [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+ 1132A..11330  ; ID_Continue # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+ 11332..11333  ; ID_Continue # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+ 11335..11339  ; ID_Continue # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+ 1133B..1133C  ; ID_Continue # Mn   [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+ 1133D         ; ID_Continue # Lo       GRANTHA SIGN AVAGRAHA
+ 1133E..1133F  ; ID_Continue # Mc   [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
+ 11340         ; ID_Continue # Mn       GRANTHA VOWEL SIGN II
+ 11341..11344  ; ID_Continue # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+ 11347..11348  ; ID_Continue # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+ 1134B..1134D  ; ID_Continue # Mc   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+ 11350         ; ID_Continue # Lo       GRANTHA OM
+ 11357         ; ID_Continue # Mc       GRANTHA AU LENGTH MARK
+ 1135D..11361  ; ID_Continue # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+ 11362..11363  ; ID_Continue # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+ 11366..1136C  ; ID_Continue # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+ 11370..11374  ; ID_Continue # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+ 11400..11434  ; ID_Continue # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+ 11435..11437  ; ID_Continue # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+ 11438..1143F  ; ID_Continue # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+ 11440..11441  ; ID_Continue # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+ 11442..11444  ; ID_Continue # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+ 11445         ; ID_Continue # Mc       NEWA SIGN VISARGA
+ 11446         ; ID_Continue # Mn       NEWA SIGN NUKTA
+ 11447..1144A  ; ID_Continue # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+ 11450..11459  ; ID_Continue # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+ 1145E         ; ID_Continue # Mn       NEWA SANDHI MARK
+ 1145F..11461  ; ID_Continue # Lo   [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+ 11480..114AF  ; ID_Continue # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+ 114B0..114B2  ; ID_Continue # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
+ 114B3..114B8  ; ID_Continue # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+ 114B9         ; ID_Continue # Mc       TIRHUTA VOWEL SIGN E
+ 114BA         ; ID_Continue # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BB..114BE  ; ID_Continue # Mc   [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
+ 114BF..114C0  ; ID_Continue # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+ 114C1         ; ID_Continue # Mc       TIRHUTA SIGN VISARGA
+ 114C2..114C3  ; ID_Continue # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+ 114C4..114C5  ; ID_Continue # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+ 114C7         ; ID_Continue # Lo       TIRHUTA OM
+ 114D0..114D9  ; ID_Continue # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
+ 11580..115AE  ; ID_Continue # Lo  [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+ 115AF..115B1  ; ID_Continue # Mc   [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II
+ 115B2..115B5  ; ID_Continue # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+ 115B8..115BB  ; ID_Continue # Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+ 115BC..115BD  ; ID_Continue # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+ 115BE         ; ID_Continue # Mc       SIDDHAM SIGN VISARGA
+ 115BF..115C0  ; ID_Continue # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+ 115D8..115DB  ; ID_Continue # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+ 115DC..115DD  ; ID_Continue # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+ 11600..1162F  ; ID_Continue # Lo  [48] MODI LETTER A..MODI LETTER LLA
+ 11630..11632  ; ID_Continue # Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+ 11633..1163A  ; ID_Continue # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+ 1163B..1163C  ; ID_Continue # Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+ 1163D         ; ID_Continue # Mn       MODI SIGN ANUSVARA
+ 1163E         ; ID_Continue # Mc       MODI SIGN VISARGA
+ 1163F..11640  ; ID_Continue # Mn   [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+ 11644         ; ID_Continue # Lo       MODI SIGN HUVA
+ 11650..11659  ; ID_Continue # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
+ 11680..116AA  ; ID_Continue # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
+ 116AB         ; ID_Continue # Mn       TAKRI SIGN ANUSVARA
+ 116AC         ; ID_Continue # Mc       TAKRI SIGN VISARGA
+ 116AD         ; ID_Continue # Mn       TAKRI VOWEL SIGN AA
+ 116AE..116AF  ; ID_Continue # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+ 116B0..116B5  ; ID_Continue # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+ 116B6         ; ID_Continue # Mc       TAKRI SIGN VIRAMA
+ 116B7         ; ID_Continue # Mn       TAKRI SIGN NUKTA
+ 116B8         ; ID_Continue # Lo       TAKRI LETTER ARCHAIC KHA
+ 116C0..116C9  ; ID_Continue # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+ 11700..1171A  ; ID_Continue # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+ 1171D..1171F  ; ID_Continue # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+ 11720..11721  ; ID_Continue # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+ 11722..11725  ; ID_Continue # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+ 11726         ; ID_Continue # Mc       AHOM VOWEL SIGN E
+ 11727..1172B  ; ID_Continue # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+ 11730..11739  ; ID_Continue # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
+ 11740..11746  ; ID_Continue # Lo   [7] AHOM LETTER CA..AHOM LETTER LLA
+ 11800..1182B  ; ID_Continue # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+ 1182C..1182E  ; ID_Continue # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+ 1182F..11837  ; ID_Continue # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+ 11838         ; ID_Continue # Mc       DOGRA SIGN VISARGA
+ 11839..1183A  ; ID_Continue # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+ 118A0..118DF  ; ID_Continue # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 118E0..118E9  ; ID_Continue # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+ 118FF..11906  ; ID_Continue # Lo   [8] WARANG CITI OM..DIVES AKURU LETTER E
+ 11909         ; ID_Continue # Lo       DIVES AKURU LETTER O
+ 1190C..11913  ; ID_Continue # Lo   [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916  ; ID_Continue # Lo   [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F  ; ID_Continue # Lo  [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 11930..11935  ; ID_Continue # Mc   [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
+ 11937..11938  ; ID_Continue # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+ 1193B..1193C  ; ID_Continue # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 1193D         ; ID_Continue # Mc       DIVES AKURU SIGN HALANTA
+ 1193E         ; ID_Continue # Mn       DIVES AKURU VIRAMA
+ 1193F         ; ID_Continue # Lo       DIVES AKURU PREFIXED NASAL SIGN
+ 11940         ; ID_Continue # Mc       DIVES AKURU MEDIAL YA
+ 11941         ; ID_Continue # Lo       DIVES AKURU INITIAL RA
+ 11942         ; ID_Continue # Mc       DIVES AKURU MEDIAL RA
+ 11943         ; ID_Continue # Mn       DIVES AKURU SIGN NUKTA
+ 11950..11959  ; ID_Continue # Nd  [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
+ 119A0..119A7  ; ID_Continue # Lo   [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+ 119AA..119D0  ; ID_Continue # Lo  [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+ 119D1..119D3  ; ID_Continue # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+ 119D4..119D7  ; ID_Continue # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+ 119DA..119DB  ; ID_Continue # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+ 119DC..119DF  ; ID_Continue # Mc   [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+ 119E0         ; ID_Continue # Mn       NANDINAGARI SIGN VIRAMA
+ 119E1         ; ID_Continue # Lo       NANDINAGARI SIGN AVAGRAHA
+ 119E3         ; ID_Continue # Lo       NANDINAGARI HEADSTROKE
+ 119E4         ; ID_Continue # Mc       NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+ 11A00         ; ID_Continue # Lo       ZANABAZAR SQUARE LETTER A
+ 11A01..11A0A  ; ID_Continue # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+ 11A0B..11A32  ; ID_Continue # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+ 11A33..11A38  ; ID_Continue # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+ 11A39         ; ID_Continue # Mc       ZANABAZAR SQUARE SIGN VISARGA
+ 11A3A         ; ID_Continue # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+ 11A3B..11A3E  ; ID_Continue # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+ 11A47         ; ID_Continue # Mn       ZANABAZAR SQUARE SUBJOINER
+ 11A50         ; ID_Continue # Lo       SOYOMBO LETTER A
+ 11A51..11A56  ; ID_Continue # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+ 11A57..11A58  ; ID_Continue # Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+ 11A59..11A5B  ; ID_Continue # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+ 11A5C..11A89  ; ID_Continue # Lo  [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+ 11A8A..11A96  ; ID_Continue # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+ 11A97         ; ID_Continue # Mc       SOYOMBO SIGN VISARGA
+ 11A98..11A99  ; ID_Continue # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+ 11A9D         ; ID_Continue # Lo       SOYOMBO MARK PLUTA
+ 11AB0..11AF8  ; ID_Continue # Lo  [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+ 11C00..11C08  ; ID_Continue # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+ 11C0A..11C2E  ; ID_Continue # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+ 11C2F         ; ID_Continue # Mc       BHAIKSUKI VOWEL SIGN AA
+ 11C30..11C36  ; ID_Continue # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+ 11C38..11C3D  ; ID_Continue # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+ 11C3E         ; ID_Continue # Mc       BHAIKSUKI SIGN VISARGA
+ 11C3F         ; ID_Continue # Mn       BHAIKSUKI SIGN VIRAMA
+ 11C40         ; ID_Continue # Lo       BHAIKSUKI SIGN AVAGRAHA
+ 11C50..11C59  ; ID_Continue # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+ 11C72..11C8F  ; ID_Continue # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+ 11C92..11CA7  ; ID_Continue # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+ 11CA9         ; ID_Continue # Mc       MARCHEN SUBJOINED LETTER YA
+ 11CAA..11CB0  ; ID_Continue # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+ 11CB1         ; ID_Continue # Mc       MARCHEN VOWEL SIGN I
+ 11CB2..11CB3  ; ID_Continue # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+ 11CB4         ; ID_Continue # Mc       MARCHEN VOWEL SIGN O
+ 11CB5..11CB6  ; ID_Continue # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+ 11D00..11D06  ; ID_Continue # Lo   [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+ 11D08..11D09  ; ID_Continue # Lo   [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+ 11D0B..11D30  ; ID_Continue # Lo  [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+ 11D31..11D36  ; ID_Continue # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+ 11D3A         ; ID_Continue # Mn       MASARAM GONDI VOWEL SIGN E
+ 11D3C..11D3D  ; ID_Continue # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+ 11D3F..11D45  ; ID_Continue # Mn   [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+ 11D46         ; ID_Continue # Lo       MASARAM GONDI REPHA
+ 11D47         ; ID_Continue # Mn       MASARAM GONDI RA-KARA
+ 11D50..11D59  ; ID_Continue # Nd  [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
+ 11D60..11D65  ; ID_Continue # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+ 11D67..11D68  ; ID_Continue # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+ 11D6A..11D89  ; ID_Continue # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+ 11D8A..11D8E  ; ID_Continue # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+ 11D90..11D91  ; ID_Continue # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+ 11D93..11D94  ; ID_Continue # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+ 11D95         ; ID_Continue # Mn       GUNJALA GONDI SIGN ANUSVARA
+ 11D96         ; ID_Continue # Mc       GUNJALA GONDI SIGN VISARGA
+ 11D97         ; ID_Continue # Mn       GUNJALA GONDI VIRAMA
+ 11D98         ; ID_Continue # Lo       GUNJALA GONDI OM
+ 11DA0..11DA9  ; ID_Continue # Nd  [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
+ 11EE0..11EF2  ; ID_Continue # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+ 11EF3..11EF4  ; ID_Continue # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+ 11EF5..11EF6  ; ID_Continue # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+ 11F00..11F01  ; ID_Continue # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F02         ; ID_Continue # Lo       KAWI SIGN REPHA
+ 11F03         ; ID_Continue # Mc       KAWI SIGN VISARGA
+ 11F04..11F10  ; ID_Continue # Lo  [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33  ; ID_Continue # Lo  [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11F34..11F35  ; ID_Continue # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+ 11F36..11F3A  ; ID_Continue # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F3E..11F3F  ; ID_Continue # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+ 11F40         ; ID_Continue # Mn       KAWI VOWEL SIGN EU
+ 11F41         ; ID_Continue # Mc       KAWI SIGN KILLER
+ 11F42         ; ID_Continue # Mn       KAWI CONJOINER
+ 11F50..11F59  ; ID_Continue # Nd  [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+ 11FB0         ; ID_Continue # Lo       LISU LETTER YHA
+ 12000..12399  ; ID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+ 12400..1246E  ; ID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+ 12480..12543  ; ID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+ 12F90..12FF0  ; ID_Continue # Lo  [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+ 13000..1342F  ; ID_Continue # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+ 13440         ; ID_Continue # Mn       EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+ 13441..13446  ; ID_Continue # Lo   [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+ 13447..13455  ; ID_Continue # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+ 14400..14646  ; ID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+ 16800..16A38  ; ID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+ 16A40..16A5E  ; ID_Continue # Lo  [31] MRO LETTER TA..MRO LETTER TEK
+ 16A60..16A69  ; ID_Continue # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
+ 16A70..16ABE  ; ID_Continue # Lo  [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AC0..16AC9  ; ID_Continue # Nd  [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
+ 16AD0..16AED  ; ID_Continue # Lo  [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+ 16AF0..16AF4  ; ID_Continue # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+ 16B00..16B2F  ; ID_Continue # Lo  [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+ 16B30..16B36  ; ID_Continue # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+ 16B40..16B43  ; ID_Continue # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16B50..16B59  ; ID_Continue # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
+ 16B63..16B77  ; ID_Continue # Lo  [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+ 16B7D..16B8F  ; ID_Continue # Lo  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+ 16E40..16E7F  ; ID_Continue # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 16F00..16F4A  ; ID_Continue # Lo  [75] MIAO LETTER PA..MIAO LETTER RTE
+ 16F4F         ; ID_Continue # Mn       MIAO SIGN CONSONANT MODIFIER BAR
+ 16F50         ; ID_Continue # Lo       MIAO LETTER NASALIZATION
+ 16F51..16F87  ; ID_Continue # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+ 16F8F..16F92  ; ID_Continue # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+ 16F93..16F9F  ; ID_Continue # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; ID_Continue # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE3         ; ID_Continue # Lm       OLD CHINESE ITERATION MARK
+ 16FE4         ; ID_Continue # Mn       KHITAN SMALL SCRIPT FILLER
+ 16FF0..16FF1  ; ID_Continue # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+ 17000..187F7  ; ID_Continue # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
+ 18800..18CD5  ; ID_Continue # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
+ 18D00..18D08  ; ID_Continue # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3  ; ID_Continue # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; ID_Continue # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; ID_Continue # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1B000..1B122  ; ID_Continue # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU
+ 1B132         ; ID_Continue # Lo       HIRAGANA LETTER SMALL KO
+ 1B150..1B152  ; ID_Continue # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155         ; ID_Continue # Lo       KATAKANA LETTER SMALL KO
+ 1B164..1B167  ; ID_Continue # Lo   [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+ 1B170..1B2FB  ; ID_Continue # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
+ 1BC00..1BC6A  ; ID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+ 1BC70..1BC7C  ; ID_Continue # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+ 1BC80..1BC88  ; ID_Continue # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+ 1BC90..1BC99  ; ID_Continue # Lo  [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+ 1BC9D..1BC9E  ; ID_Continue # Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+ 1CF00..1CF2D  ; ID_Continue # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+ 1CF30..1CF46  ; ID_Continue # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+ 1D165..1D166  ; ID_Continue # Mc   [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+ 1D167..1D169  ; ID_Continue # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+ 1D16D..1D172  ; ID_Continue # Mc   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+ 1D17B..1D182  ; ID_Continue # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+ 1D185..1D18B  ; ID_Continue # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+ 1D1AA..1D1AD  ; ID_Continue # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+ 1D242..1D244  ; ID_Continue # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+ 1D400..1D454  ; ID_Continue # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; ID_Continue # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; ID_Continue # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; ID_Continue # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; ID_Continue # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; ID_Continue # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; ID_Continue # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; ID_Continue # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; ID_Continue # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; ID_Continue # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; ID_Continue # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; ID_Continue # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; ID_Continue # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; ID_Continue # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; ID_Continue # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; ID_Continue # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; ID_Continue # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; ID_Continue # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; ID_Continue # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; ID_Continue # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C2..1D6DA  ; ID_Continue # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6FA  ; ID_Continue # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FC..1D714  ; ID_Continue # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D734  ; ID_Continue # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D736..1D74E  ; ID_Continue # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D76E  ; ID_Continue # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D770..1D788  ; ID_Continue # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D7A8  ; ID_Continue # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7AA..1D7C2  ; ID_Continue # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7CB  ; ID_Continue # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; ID_Continue # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1DA00..1DA36  ; ID_Continue # Mn  [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+ 1DA3B..1DA6C  ; ID_Continue # Mn  [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+ 1DA75         ; ID_Continue # Mn       SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+ 1DA84         ; ID_Continue # Mn       SIGNWRITING LOCATION HEAD NECK
+ 1DA9B..1DA9F  ; ID_Continue # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+ 1DAA1..1DAAF  ; ID_Continue # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+ 1DF00..1DF09  ; ID_Continue # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A         ; ID_Continue # Lo       LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E  ; ID_Continue # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; ID_Continue # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E000..1E006  ; ID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+ 1E008..1E018  ; ID_Continue # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+ 1E01B..1E021  ; ID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+ 1E023..1E024  ; ID_Continue # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+ 1E026..1E02A  ; ID_Continue # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E030..1E06D  ; ID_Continue # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E08F         ; ID_Continue # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 1E100..1E12C  ; ID_Continue # Lo  [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+ 1E130..1E136  ; ID_Continue # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+ 1E137..1E13D  ; ID_Continue # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E140..1E149  ; ID_Continue # Nd  [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
+ 1E14E         ; ID_Continue # Lo       NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+ 1E290..1E2AD  ; ID_Continue # Lo  [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2AE         ; ID_Continue # Mn       TOTO SIGN RISING TONE
+ 1E2C0..1E2EB  ; ID_Continue # Lo  [44] WANCHO LETTER AA..WANCHO LETTER YIH
+ 1E2EC..1E2EF  ; ID_Continue # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
+ 1E2F0..1E2F9  ; ID_Continue # Nd  [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
+ 1E4D0..1E4EA  ; ID_Continue # Lo  [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB         ; ID_Continue # Lm       NAG MUNDARI SIGN OJOD
+ 1E4EC..1E4EF  ; ID_Continue # Mn   [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+ 1E4F0..1E4F9  ; ID_Continue # Nd  [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+ 1E7E0..1E7E6  ; ID_Continue # Lo   [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB  ; ID_Continue # Lo   [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE  ; ID_Continue # Lo   [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE  ; ID_Continue # Lo  [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+ 1E800..1E8C4  ; ID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+ 1E8D0..1E8D6  ; ID_Continue # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+ 1E900..1E943  ; ID_Continue # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1E944..1E94A  ; ID_Continue # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+ 1E94B         ; ID_Continue # Lm       ADLAM NASALIZATION MARK
+ 1E950..1E959  ; ID_Continue # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+ 1EE00..1EE03  ; ID_Continue # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; ID_Continue # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; ID_Continue # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; ID_Continue # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; ID_Continue # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; ID_Continue # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; ID_Continue # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; ID_Continue # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; ID_Continue # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; ID_Continue # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; ID_Continue # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; ID_Continue # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; ID_Continue # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; ID_Continue # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; ID_Continue # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; ID_Continue # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; ID_Continue # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; ID_Continue # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; ID_Continue # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; ID_Continue # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; ID_Continue # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; ID_Continue # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; ID_Continue # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; ID_Continue # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1FBF0..1FBF9  ; ID_Continue # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+ 20000..2A6DF  ; ID_Continue # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B739  ; ID_Continue # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
+ 2B740..2B81D  ; ID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1  ; ID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0  ; ID_Continue # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 2F800..2FA1D  ; ID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; ID_Continue # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; ID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
+ E0100..E01EF  ; ID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ 
+ # Total code points: 139482
+ 
+ # ================================================
+ 
+ # Derived Property: XID_Start
+ #  ID_Start modified for closure under NFKx
+ #  Modified as described in UAX #15
+ #  NOTE: Does NOT remove the non-NFKx characters.
+ #        Merely ensures that if isIdentifer(string) then isIdentifier(NFKx(string))
+ #  NOTE: See UAX #31 for more information
+ 
+ 0041..005A    ; XID_Start # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 0061..007A    ; XID_Start # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; XID_Start # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; XID_Start # L&       MICRO SIGN
+ 00BA          ; XID_Start # Lo       MASCULINE ORDINAL INDICATOR
+ 00C0..00D6    ; XID_Start # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; XID_Start # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..01BA    ; XID_Start # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BB          ; XID_Start # Lo       LATIN LETTER TWO WITH STROKE
+ 01BC..01BF    ; XID_Start # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C0..01C3    ; XID_Start # Lo   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+ 01C4..0293    ; XID_Start # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0294          ; XID_Start # Lo       LATIN LETTER GLOTTAL STOP
+ 0295..02AF    ; XID_Start # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02C1    ; XID_Start # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C6..02D1    ; XID_Start # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02E0..02E4    ; XID_Start # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02EC          ; XID_Start # Lm       MODIFIER LETTER VOICING
+ 02EE          ; XID_Start # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 0370..0373    ; XID_Start # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0374          ; XID_Start # Lm       GREEK NUMERAL SIGN
+ 0376..0377    ; XID_Start # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037B..037D    ; XID_Start # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; XID_Start # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; XID_Start # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; XID_Start # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; XID_Start # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; XID_Start # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; XID_Start # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F7..0481    ; XID_Start # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 048A..052F    ; XID_Start # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; XID_Start # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0559          ; XID_Start # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 0560..0588    ; XID_Start # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 05D0..05EA    ; XID_Start # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+ 05EF..05F2    ; XID_Start # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+ 0620..063F    ; XID_Start # Lo  [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+ 0640          ; XID_Start # Lm       ARABIC TATWEEL
+ 0641..064A    ; XID_Start # Lo  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+ 066E..066F    ; XID_Start # Lo   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+ 0671..06D3    ; XID_Start # Lo  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 06D5          ; XID_Start # Lo       ARABIC LETTER AE
+ 06E5..06E6    ; XID_Start # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06EE..06EF    ; XID_Start # Lo   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+ 06FA..06FC    ; XID_Start # Lo   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+ 06FF          ; XID_Start # Lo       ARABIC LETTER HEH WITH INVERTED V
+ 0710          ; XID_Start # Lo       SYRIAC LETTER ALAPH
+ 0712..072F    ; XID_Start # Lo  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+ 074D..07A5    ; XID_Start # Lo  [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+ 07B1          ; XID_Start # Lo       THAANA LETTER NAA
+ 07CA..07EA    ; XID_Start # Lo  [33] NKO LETTER A..NKO LETTER JONA RA
+ 07F4..07F5    ; XID_Start # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07FA          ; XID_Start # Lm       NKO LAJANYALAN
+ 0800..0815    ; XID_Start # Lo  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+ 081A          ; XID_Start # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 0824          ; XID_Start # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0828          ; XID_Start # Lm       SAMARITAN MODIFIER LETTER I
+ 0840..0858    ; XID_Start # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+ 0860..086A    ; XID_Start # Lo  [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+ 0870..0887    ; XID_Start # Lo  [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+ 0889..088E    ; XID_Start # Lo   [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+ 08A0..08C8    ; XID_Start # Lo  [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+ 08C9          ; XID_Start # Lm       ARABIC SMALL FARSI YEH
+ 0904..0939    ; XID_Start # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+ 093D          ; XID_Start # Lo       DEVANAGARI SIGN AVAGRAHA
+ 0950          ; XID_Start # Lo       DEVANAGARI OM
+ 0958..0961    ; XID_Start # Lo  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+ 0971          ; XID_Start # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0972..0980    ; XID_Start # Lo  [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+ 0985..098C    ; XID_Start # Lo   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+ 098F..0990    ; XID_Start # Lo   [2] BENGALI LETTER E..BENGALI LETTER AI
+ 0993..09A8    ; XID_Start # Lo  [22] BENGALI LETTER O..BENGALI LETTER NA
+ 09AA..09B0    ; XID_Start # Lo   [7] BENGALI LETTER PA..BENGALI LETTER RA
+ 09B2          ; XID_Start # Lo       BENGALI LETTER LA
+ 09B6..09B9    ; XID_Start # Lo   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+ 09BD          ; XID_Start # Lo       BENGALI SIGN AVAGRAHA
+ 09CE          ; XID_Start # Lo       BENGALI LETTER KHANDA TA
+ 09DC..09DD    ; XID_Start # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF..09E1    ; XID_Start # Lo   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+ 09F0..09F1    ; XID_Start # Lo   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+ 09FC          ; XID_Start # Lo       BENGALI LETTER VEDIC ANUSVARA
+ 0A05..0A0A    ; XID_Start # Lo   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+ 0A0F..0A10    ; XID_Start # Lo   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+ 0A13..0A28    ; XID_Start # Lo  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+ 0A2A..0A30    ; XID_Start # Lo   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+ 0A32..0A33    ; XID_Start # Lo   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+ 0A35..0A36    ; XID_Start # Lo   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+ 0A38..0A39    ; XID_Start # Lo   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+ 0A59..0A5C    ; XID_Start # Lo   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+ 0A5E          ; XID_Start # Lo       GURMUKHI LETTER FA
+ 0A72..0A74    ; XID_Start # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+ 0A85..0A8D    ; XID_Start # Lo   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+ 0A8F..0A91    ; XID_Start # Lo   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+ 0A93..0AA8    ; XID_Start # Lo  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+ 0AAA..0AB0    ; XID_Start # Lo   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+ 0AB2..0AB3    ; XID_Start # Lo   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+ 0AB5..0AB9    ; XID_Start # Lo   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+ 0ABD          ; XID_Start # Lo       GUJARATI SIGN AVAGRAHA
+ 0AD0          ; XID_Start # Lo       GUJARATI OM
+ 0AE0..0AE1    ; XID_Start # Lo   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+ 0AF9          ; XID_Start # Lo       GUJARATI LETTER ZHA
+ 0B05..0B0C    ; XID_Start # Lo   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+ 0B0F..0B10    ; XID_Start # Lo   [2] ORIYA LETTER E..ORIYA LETTER AI
+ 0B13..0B28    ; XID_Start # Lo  [22] ORIYA LETTER O..ORIYA LETTER NA
+ 0B2A..0B30    ; XID_Start # Lo   [7] ORIYA LETTER PA..ORIYA LETTER RA
+ 0B32..0B33    ; XID_Start # Lo   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+ 0B35..0B39    ; XID_Start # Lo   [5] ORIYA LETTER VA..ORIYA LETTER HA
+ 0B3D          ; XID_Start # Lo       ORIYA SIGN AVAGRAHA
+ 0B5C..0B5D    ; XID_Start # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B5F..0B61    ; XID_Start # Lo   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+ 0B71          ; XID_Start # Lo       ORIYA LETTER WA
+ 0B83          ; XID_Start # Lo       TAMIL SIGN VISARGA
+ 0B85..0B8A    ; XID_Start # Lo   [6] TAMIL LETTER A..TAMIL LETTER UU
+ 0B8E..0B90    ; XID_Start # Lo   [3] TAMIL LETTER E..TAMIL LETTER AI
+ 0B92..0B95    ; XID_Start # Lo   [4] TAMIL LETTER O..TAMIL LETTER KA
+ 0B99..0B9A    ; XID_Start # Lo   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+ 0B9C          ; XID_Start # Lo       TAMIL LETTER JA
+ 0B9E..0B9F    ; XID_Start # Lo   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+ 0BA3..0BA4    ; XID_Start # Lo   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+ 0BA8..0BAA    ; XID_Start # Lo   [3] TAMIL LETTER NA..TAMIL LETTER PA
+ 0BAE..0BB9    ; XID_Start # Lo  [12] TAMIL LETTER MA..TAMIL LETTER HA
+ 0BD0          ; XID_Start # Lo       TAMIL OM
+ 0C05..0C0C    ; XID_Start # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+ 0C0E..0C10    ; XID_Start # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
+ 0C12..0C28    ; XID_Start # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
+ 0C2A..0C39    ; XID_Start # Lo  [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3D          ; XID_Start # Lo       TELUGU SIGN AVAGRAHA
+ 0C58..0C5A    ; XID_Start # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D          ; XID_Start # Lo       TELUGU LETTER NAKAARA POLLU
+ 0C60..0C61    ; XID_Start # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+ 0C80          ; XID_Start # Lo       KANNADA SIGN SPACING CANDRABINDU
+ 0C85..0C8C    ; XID_Start # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+ 0C8E..0C90    ; XID_Start # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
+ 0C92..0CA8    ; XID_Start # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
+ 0CAA..0CB3    ; XID_Start # Lo  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+ 0CB5..0CB9    ; XID_Start # Lo   [5] KANNADA LETTER VA..KANNADA LETTER HA
+ 0CBD          ; XID_Start # Lo       KANNADA SIGN AVAGRAHA
+ 0CDD..0CDE    ; XID_Start # Lo   [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+ 0CE0..0CE1    ; XID_Start # Lo   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+ 0CF1..0CF2    ; XID_Start # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0D04..0D0C    ; XID_Start # Lo   [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+ 0D0E..0D10    ; XID_Start # Lo   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+ 0D12..0D3A    ; XID_Start # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+ 0D3D          ; XID_Start # Lo       MALAYALAM SIGN AVAGRAHA
+ 0D4E          ; XID_Start # Lo       MALAYALAM LETTER DOT REPH
+ 0D54..0D56    ; XID_Start # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+ 0D5F..0D61    ; XID_Start # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+ 0D7A..0D7F    ; XID_Start # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D85..0D96    ; XID_Start # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+ 0D9A..0DB1    ; XID_Start # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+ 0DB3..0DBB    ; XID_Start # Lo   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+ 0DBD          ; XID_Start # Lo       SINHALA LETTER DANTAJA LAYANNA
+ 0DC0..0DC6    ; XID_Start # Lo   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+ 0E01..0E30    ; XID_Start # Lo  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+ 0E32          ; XID_Start # Lo       THAI CHARACTER SARA AA
+ 0E40..0E45    ; XID_Start # Lo   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+ 0E46          ; XID_Start # Lm       THAI CHARACTER MAIYAMOK
+ 0E81..0E82    ; XID_Start # Lo   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+ 0E84          ; XID_Start # Lo       LAO LETTER KHO TAM
+ 0E86..0E8A    ; XID_Start # Lo   [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
+ 0E8C..0EA3    ; XID_Start # Lo  [24] LAO LETTER PALI JHA..LAO LETTER LO LING
+ 0EA5          ; XID_Start # Lo       LAO LETTER LO LOOT
+ 0EA7..0EB0    ; XID_Start # Lo  [10] LAO LETTER WO..LAO VOWEL SIGN A
+ 0EB2          ; XID_Start # Lo       LAO VOWEL SIGN AA
+ 0EBD          ; XID_Start # Lo       LAO SEMIVOWEL SIGN NYO
+ 0EC0..0EC4    ; XID_Start # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+ 0EC6          ; XID_Start # Lm       LAO KO LA
+ 0EDC..0EDF    ; XID_Start # Lo   [4] LAO HO NO..LAO LETTER KHMU NYO
+ 0F00          ; XID_Start # Lo       TIBETAN SYLLABLE OM
+ 0F40..0F47    ; XID_Start # Lo   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+ 0F49..0F6C    ; XID_Start # Lo  [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+ 0F88..0F8C    ; XID_Start # Lo   [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+ 1000..102A    ; XID_Start # Lo  [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+ 103F          ; XID_Start # Lo       MYANMAR LETTER GREAT SA
+ 1050..1055    ; XID_Start # Lo   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+ 105A..105D    ; XID_Start # Lo   [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+ 1061          ; XID_Start # Lo       MYANMAR LETTER SGAW KAREN SHA
+ 1065..1066    ; XID_Start # Lo   [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+ 106E..1070    ; XID_Start # Lo   [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+ 1075..1081    ; XID_Start # Lo  [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+ 108E          ; XID_Start # Lo       MYANMAR LETTER RUMAI PALAUNG FA
+ 10A0..10C5    ; XID_Start # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; XID_Start # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; XID_Start # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; XID_Start # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; XID_Start # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; XID_Start # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 1100..1248    ; XID_Start # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+ 124A..124D    ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+ 1250..1256    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+ 1258          ; XID_Start # Lo       ETHIOPIC SYLLABLE QHWA
+ 125A..125D    ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+ 1260..1288    ; XID_Start # Lo  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+ 128A..128D    ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+ 1290..12B0    ; XID_Start # Lo  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+ 12B2..12B5    ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+ 12B8..12BE    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+ 12C0          ; XID_Start # Lo       ETHIOPIC SYLLABLE KXWA
+ 12C2..12C5    ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+ 12C8..12D6    ; XID_Start # Lo  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+ 12D8..1310    ; XID_Start # Lo  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+ 1312..1315    ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+ 1318..135A    ; XID_Start # Lo  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+ 1380..138F    ; XID_Start # Lo  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+ 13A0..13F5    ; XID_Start # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; XID_Start # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1401..166C    ; XID_Start # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+ 166F..167F    ; XID_Start # Lo  [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+ 1681..169A    ; XID_Start # Lo  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+ 16A0..16EA    ; XID_Start # Lo  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+ 16EE..16F0    ; XID_Start # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+ 16F1..16F8    ; XID_Start # Lo   [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+ 1700..1711    ; XID_Start # Lo  [18] TAGALOG LETTER A..TAGALOG LETTER HA
+ 171F..1731    ; XID_Start # Lo  [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+ 1740..1751    ; XID_Start # Lo  [18] BUHID LETTER A..BUHID LETTER HA
+ 1760..176C    ; XID_Start # Lo  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+ 176E..1770    ; XID_Start # Lo   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+ 1780..17B3    ; XID_Start # Lo  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+ 17D7          ; XID_Start # Lm       KHMER SIGN LEK TOO
+ 17DC          ; XID_Start # Lo       KHMER SIGN AVAKRAHASANYA
+ 1820..1842    ; XID_Start # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+ 1843          ; XID_Start # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1844..1878    ; XID_Start # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+ 1880..1884    ; XID_Start # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+ 1885..1886    ; XID_Start # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 1887..18A8    ; XID_Start # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+ 18AA          ; XID_Start # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+ 18B0..18F5    ; XID_Start # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+ 1900..191E    ; XID_Start # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+ 1950..196D    ; XID_Start # Lo  [30] TAI LE LETTER KA..TAI LE LETTER AI
+ 1970..1974    ; XID_Start # Lo   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+ 1980..19AB    ; XID_Start # Lo  [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
+ 19B0..19C9    ; XID_Start # Lo  [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+ 1A00..1A16    ; XID_Start # Lo  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+ 1A20..1A54    ; XID_Start # Lo  [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
+ 1AA7          ; XID_Start # Lm       TAI THAM SIGN MAI YAMOK
+ 1B05..1B33    ; XID_Start # Lo  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+ 1B45..1B4C    ; XID_Start # Lo   [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+ 1B83..1BA0    ; XID_Start # Lo  [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+ 1BAE..1BAF    ; XID_Start # Lo   [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+ 1BBA..1BE5    ; XID_Start # Lo  [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+ 1C00..1C23    ; XID_Start # Lo  [36] LEPCHA LETTER KA..LEPCHA LETTER A
+ 1C4D..1C4F    ; XID_Start # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+ 1C5A..1C77    ; XID_Start # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+ 1C78..1C7D    ; XID_Start # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1C80..1C88    ; XID_Start # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; XID_Start # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; XID_Start # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1CE9..1CEC    ; XID_Start # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+ 1CEE..1CF3    ; XID_Start # Lo   [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+ 1CF5..1CF6    ; XID_Start # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+ 1CFA          ; XID_Start # Lo       VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+ 1D00..1D2B    ; XID_Start # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; XID_Start # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; XID_Start # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; XID_Start # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; XID_Start # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; XID_Start # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E00..1F15    ; XID_Start # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; XID_Start # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; XID_Start # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; XID_Start # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; XID_Start # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; XID_Start # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; XID_Start # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; XID_Start # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; XID_Start # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; XID_Start # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; XID_Start # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; XID_Start # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; XID_Start # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; XID_Start # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; XID_Start # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; XID_Start # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; XID_Start # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; XID_Start # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; XID_Start # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 2071          ; XID_Start # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; XID_Start # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; XID_Start # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 2102          ; XID_Start # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; XID_Start # L&       EULER CONSTANT
+ 210A..2113    ; XID_Start # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; XID_Start # L&       DOUBLE-STRUCK CAPITAL N
+ 2118          ; XID_Start # Sm       SCRIPT CAPITAL P
+ 2119..211D    ; XID_Start # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; XID_Start # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; XID_Start # L&       OHM SIGN
+ 2128          ; XID_Start # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; XID_Start # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212E          ; XID_Start # So       ESTIMATED SYMBOL
+ 212F..2134    ; XID_Start # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; XID_Start # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; XID_Start # L&       INFORMATION SOURCE
+ 213C..213F    ; XID_Start # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2145..2149    ; XID_Start # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; XID_Start # L&       TURNED SMALL F
+ 2160..2182    ; XID_Start # Nl  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+ 2183..2184    ; XID_Start # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 2185..2188    ; XID_Start # Nl   [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+ 2C00..2C7B    ; XID_Start # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; XID_Start # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; XID_Start # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CEB..2CEE    ; XID_Start # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2..2CF3    ; XID_Start # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; XID_Start # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; XID_Start # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; XID_Start # L&       GEORGIAN SMALL LETTER AEN
+ 2D30..2D67    ; XID_Start # Lo  [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+ 2D6F          ; XID_Start # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D80..2D96    ; XID_Start # Lo  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+ 2DA0..2DA6    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+ 2DA8..2DAE    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+ 2DB0..2DB6    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+ 2DB8..2DBE    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+ 2DC0..2DC6    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+ 2DC8..2DCE    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+ 2DD0..2DD6    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+ 2DD8..2DDE    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+ 3005          ; XID_Start # Lm       IDEOGRAPHIC ITERATION MARK
+ 3006          ; XID_Start # Lo       IDEOGRAPHIC CLOSING MARK
+ 3007          ; XID_Start # Nl       IDEOGRAPHIC NUMBER ZERO
+ 3021..3029    ; XID_Start # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+ 3031..3035    ; XID_Start # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 3038..303A    ; XID_Start # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 303B          ; XID_Start # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 303C          ; XID_Start # Lo       MASU MARK
+ 3041..3096    ; XID_Start # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+ 309D..309E    ; XID_Start # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 309F          ; XID_Start # Lo       HIRAGANA DIGRAPH YORI
+ 30A1..30FA    ; XID_Start # Lo  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+ 30FC..30FE    ; XID_Start # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ 30FF          ; XID_Start # Lo       KATAKANA DIGRAPH KOTO
+ 3105..312F    ; XID_Start # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+ 3131..318E    ; XID_Start # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 31A0..31BF    ; XID_Start # Lo  [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+ 31F0..31FF    ; XID_Start # Lo  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+ 3400..4DBF    ; XID_Start # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 4E00..A014    ; XID_Start # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E
+ A015          ; XID_Start # Lm       YI SYLLABLE WU
+ A016..A48C    ; XID_Start # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+ A4D0..A4F7    ; XID_Start # Lo  [40] LISU LETTER BA..LISU LETTER OE
+ A4F8..A4FD    ; XID_Start # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A500..A60B    ; XID_Start # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+ A60C          ; XID_Start # Lm       VAI SYLLABLE LENGTHENER
+ A610..A61F    ; XID_Start # Lo  [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+ A62A..A62B    ; XID_Start # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+ A640..A66D    ; XID_Start # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A66E          ; XID_Start # Lo       CYRILLIC LETTER MULTIOCULAR O
+ A67F          ; XID_Start # Lm       CYRILLIC PAYEROK
+ A680..A69B    ; XID_Start # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; XID_Start # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A6A0..A6E5    ; XID_Start # Lo  [70] BAMUM LETTER A..BAMUM LETTER KI
+ A6E6..A6EF    ; XID_Start # Nl  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+ A717..A71F    ; XID_Start # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A722..A76F    ; XID_Start # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; XID_Start # Lm       MODIFIER LETTER US
+ A771..A787    ; XID_Start # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A788          ; XID_Start # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A78B..A78E    ; XID_Start # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A78F          ; XID_Start # Lo       LATIN LETTER SINOLOGICAL DOT
+ A790..A7CA    ; XID_Start # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; XID_Start # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; XID_Start # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; XID_Start # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; XID_Start # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; XID_Start # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F7          ; XID_Start # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
+ A7F8..A7F9    ; XID_Start # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; XID_Start # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ A7FB..A801    ; XID_Start # Lo   [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+ A803..A805    ; XID_Start # Lo   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+ A807..A80A    ; XID_Start # Lo   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+ A80C..A822    ; XID_Start # Lo  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+ A840..A873    ; XID_Start # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+ A882..A8B3    ; XID_Start # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+ A8F2..A8F7    ; XID_Start # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+ A8FB          ; XID_Start # Lo       DEVANAGARI HEADSTROKE
+ A8FD..A8FE    ; XID_Start # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+ A90A..A925    ; XID_Start # Lo  [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+ A930..A946    ; XID_Start # Lo  [23] REJANG LETTER KA..REJANG LETTER A
+ A960..A97C    ; XID_Start # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+ A984..A9B2    ; XID_Start # Lo  [47] JAVANESE LETTER A..JAVANESE LETTER HA
+ A9CF          ; XID_Start # Lm       JAVANESE PANGRANGKEP
+ A9E0..A9E4    ; XID_Start # Lo   [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
+ A9E6          ; XID_Start # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ A9E7..A9EF    ; XID_Start # Lo   [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
+ A9FA..A9FE    ; XID_Start # Lo   [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
+ AA00..AA28    ; XID_Start # Lo  [41] CHAM LETTER A..CHAM LETTER HA
+ AA40..AA42    ; XID_Start # Lo   [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+ AA44..AA4B    ; XID_Start # Lo   [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+ AA60..AA6F    ; XID_Start # Lo  [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
+ AA70          ; XID_Start # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA71..AA76    ; XID_Start # Lo   [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
+ AA7A          ; XID_Start # Lo       MYANMAR LETTER AITON RA
+ AA7E..AAAF    ; XID_Start # Lo  [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
+ AAB1          ; XID_Start # Lo       TAI VIET VOWEL AA
+ AAB5..AAB6    ; XID_Start # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
+ AAB9..AABD    ; XID_Start # Lo   [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
+ AAC0          ; XID_Start # Lo       TAI VIET TONE MAI NUENG
+ AAC2          ; XID_Start # Lo       TAI VIET TONE MAI SONG
+ AADB..AADC    ; XID_Start # Lo   [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
+ AADD          ; XID_Start # Lm       TAI VIET SYMBOL SAM
+ AAE0..AAEA    ; XID_Start # Lo  [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+ AAF2          ; XID_Start # Lo       MEETEI MAYEK ANJI
+ AAF3..AAF4    ; XID_Start # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AB01..AB06    ; XID_Start # Lo   [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+ AB09..AB0E    ; XID_Start # Lo   [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+ AB11..AB16    ; XID_Start # Lo   [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+ AB20..AB26    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+ AB28..AB2E    ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+ AB30..AB5A    ; XID_Start # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; XID_Start # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; XID_Start # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; XID_Start # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; XID_Start # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ ABC0..ABE2    ; XID_Start # Lo  [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+ AC00..D7A3    ; XID_Start # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ D7B0..D7C6    ; XID_Start # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+ D7CB..D7FB    ; XID_Start # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+ F900..FA6D    ; XID_Start # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; XID_Start # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; XID_Start # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; XID_Start # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; XID_Start # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F..FB28    ; XID_Start # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB2A..FB36    ; XID_Start # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; XID_Start # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; XID_Start # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; XID_Start # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; XID_Start # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; XID_Start # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FC5D    ; XID_Start # Lo [139] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ FC64..FD3D    ; XID_Start # Lo [218] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; XID_Start # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; XID_Start # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDF9    ; XID_Start # Lo  [10] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE SALLA ISOLATED FORM
+ FE71          ; XID_Start # Lo       ARABIC TATWEEL WITH FATHATAN ABOVE
+ FE73          ; XID_Start # Lo       ARABIC TAIL FRAGMENT
+ FE77          ; XID_Start # Lo       ARABIC FATHA MEDIAL FORM
+ FE79          ; XID_Start # Lo       ARABIC DAMMA MEDIAL FORM
+ FE7B          ; XID_Start # Lo       ARABIC KASRA MEDIAL FORM
+ FE7D          ; XID_Start # Lo       ARABIC SHADDA MEDIAL FORM
+ FE7F..FEFC    ; XID_Start # Lo [126] ARABIC SUKUN MEDIAL FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF21..FF3A    ; XID_Start # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF41..FF5A    ; XID_Start # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF66..FF6F    ; XID_Start # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; XID_Start # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; XID_Start # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FFA0..FFBE    ; XID_Start # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; XID_Start # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; XID_Start # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; XID_Start # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; XID_Start # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ 10000..1000B  ; XID_Start # Lo  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+ 1000D..10026  ; XID_Start # Lo  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+ 10028..1003A  ; XID_Start # Lo  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+ 1003C..1003D  ; XID_Start # Lo   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+ 1003F..1004D  ; XID_Start # Lo  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+ 10050..1005D  ; XID_Start # Lo  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+ 10080..100FA  ; XID_Start # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+ 10140..10174  ; XID_Start # Nl  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+ 10280..1029C  ; XID_Start # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
+ 102A0..102D0  ; XID_Start # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
+ 10300..1031F  ; XID_Start # Lo  [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+ 1032D..10340  ; XID_Start # Lo  [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+ 10341         ; XID_Start # Nl       GOTHIC LETTER NINETY
+ 10342..10349  ; XID_Start # Lo   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+ 1034A         ; XID_Start # Nl       GOTHIC LETTER NINE HUNDRED
+ 10350..10375  ; XID_Start # Lo  [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+ 10380..1039D  ; XID_Start # Lo  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+ 103A0..103C3  ; XID_Start # Lo  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+ 103C8..103CF  ; XID_Start # Lo   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+ 103D1..103D5  ; XID_Start # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+ 10400..1044F  ; XID_Start # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 10450..1049D  ; XID_Start # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+ 104B0..104D3  ; XID_Start # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; XID_Start # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10500..10527  ; XID_Start # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+ 10530..10563  ; XID_Start # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+ 10570..1057A  ; XID_Start # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; XID_Start # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; XID_Start # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; XID_Start # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; XID_Start # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; XID_Start # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; XID_Start # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; XID_Start # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10600..10736  ; XID_Start # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+ 10740..10755  ; XID_Start # Lo  [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+ 10760..10767  ; XID_Start # Lo   [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785  ; XID_Start # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; XID_Start # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; XID_Start # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10800..10805  ; XID_Start # Lo   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+ 10808         ; XID_Start # Lo       CYPRIOT SYLLABLE JO
+ 1080A..10835  ; XID_Start # Lo  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+ 10837..10838  ; XID_Start # Lo   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+ 1083C         ; XID_Start # Lo       CYPRIOT SYLLABLE ZA
+ 1083F..10855  ; XID_Start # Lo  [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+ 10860..10876  ; XID_Start # Lo  [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+ 10880..1089E  ; XID_Start # Lo  [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+ 108E0..108F2  ; XID_Start # Lo  [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+ 108F4..108F5  ; XID_Start # Lo   [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+ 10900..10915  ; XID_Start # Lo  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+ 10920..10939  ; XID_Start # Lo  [26] LYDIAN LETTER A..LYDIAN LETTER C
+ 10980..109B7  ; XID_Start # Lo  [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+ 109BE..109BF  ; XID_Start # Lo   [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+ 10A00         ; XID_Start # Lo       KHAROSHTHI LETTER A
+ 10A10..10A13  ; XID_Start # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+ 10A15..10A17  ; XID_Start # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+ 10A19..10A35  ; XID_Start # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+ 10A60..10A7C  ; XID_Start # Lo  [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+ 10A80..10A9C  ; XID_Start # Lo  [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+ 10AC0..10AC7  ; XID_Start # Lo   [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+ 10AC9..10AE4  ; XID_Start # Lo  [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+ 10B00..10B35  ; XID_Start # Lo  [54] AVESTAN LETTER A..AVESTAN LETTER HE
+ 10B40..10B55  ; XID_Start # Lo  [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+ 10B60..10B72  ; XID_Start # Lo  [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+ 10B80..10B91  ; XID_Start # Lo  [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+ 10C00..10C48  ; XID_Start # Lo  [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+ 10C80..10CB2  ; XID_Start # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; XID_Start # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 10D00..10D23  ; XID_Start # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+ 10E80..10EA9  ; XID_Start # Lo  [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EB0..10EB1  ; XID_Start # Lo   [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10F00..10F1C  ; XID_Start # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+ 10F27         ; XID_Start # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+ 10F30..10F45  ; XID_Start # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+ 10F70..10F81  ; XID_Start # Lo  [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10FB0..10FC4  ; XID_Start # Lo  [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FE0..10FF6  ; XID_Start # Lo  [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+ 11003..11037  ; XID_Start # Lo  [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+ 11071..11072  ; XID_Start # Lo   [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11075         ; XID_Start # Lo       BRAHMI LETTER OLD TAMIL LLA
+ 11083..110AF  ; XID_Start # Lo  [45] KAITHI LETTER A..KAITHI LETTER HA
+ 110D0..110E8  ; XID_Start # Lo  [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+ 11103..11126  ; XID_Start # Lo  [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+ 11144         ; XID_Start # Lo       CHAKMA LETTER LHAA
+ 11147         ; XID_Start # Lo       CHAKMA LETTER VAA
+ 11150..11172  ; XID_Start # Lo  [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+ 11176         ; XID_Start # Lo       MAHAJANI LIGATURE SHRI
+ 11183..111B2  ; XID_Start # Lo  [48] SHARADA LETTER A..SHARADA LETTER HA
+ 111C1..111C4  ; XID_Start # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+ 111DA         ; XID_Start # Lo       SHARADA EKAM
+ 111DC         ; XID_Start # Lo       SHARADA HEADSTROKE
+ 11200..11211  ; XID_Start # Lo  [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+ 11213..1122B  ; XID_Start # Lo  [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+ 1123F..11240  ; XID_Start # Lo   [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11280..11286  ; XID_Start # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
+ 11288         ; XID_Start # Lo       MULTANI LETTER GHA
+ 1128A..1128D  ; XID_Start # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
+ 1128F..1129D  ; XID_Start # Lo  [15] MULTANI LETTER NYA..MULTANI LETTER BA
+ 1129F..112A8  ; XID_Start # Lo  [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+ 112B0..112DE  ; XID_Start # Lo  [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+ 11305..1130C  ; XID_Start # Lo   [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+ 1130F..11310  ; XID_Start # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+ 11313..11328  ; XID_Start # Lo  [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+ 1132A..11330  ; XID_Start # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+ 11332..11333  ; XID_Start # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+ 11335..11339  ; XID_Start # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+ 1133D         ; XID_Start # Lo       GRANTHA SIGN AVAGRAHA
+ 11350         ; XID_Start # Lo       GRANTHA OM
+ 1135D..11361  ; XID_Start # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+ 11400..11434  ; XID_Start # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+ 11447..1144A  ; XID_Start # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+ 1145F..11461  ; XID_Start # Lo   [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+ 11480..114AF  ; XID_Start # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+ 114C4..114C5  ; XID_Start # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+ 114C7         ; XID_Start # Lo       TIRHUTA OM
+ 11580..115AE  ; XID_Start # Lo  [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+ 115D8..115DB  ; XID_Start # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+ 11600..1162F  ; XID_Start # Lo  [48] MODI LETTER A..MODI LETTER LLA
+ 11644         ; XID_Start # Lo       MODI SIGN HUVA
+ 11680..116AA  ; XID_Start # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
+ 116B8         ; XID_Start # Lo       TAKRI LETTER ARCHAIC KHA
+ 11700..1171A  ; XID_Start # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+ 11740..11746  ; XID_Start # Lo   [7] AHOM LETTER CA..AHOM LETTER LLA
+ 11800..1182B  ; XID_Start # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+ 118A0..118DF  ; XID_Start # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 118FF..11906  ; XID_Start # Lo   [8] WARANG CITI OM..DIVES AKURU LETTER E
+ 11909         ; XID_Start # Lo       DIVES AKURU LETTER O
+ 1190C..11913  ; XID_Start # Lo   [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916  ; XID_Start # Lo   [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F  ; XID_Start # Lo  [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 1193F         ; XID_Start # Lo       DIVES AKURU PREFIXED NASAL SIGN
+ 11941         ; XID_Start # Lo       DIVES AKURU INITIAL RA
+ 119A0..119A7  ; XID_Start # Lo   [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+ 119AA..119D0  ; XID_Start # Lo  [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+ 119E1         ; XID_Start # Lo       NANDINAGARI SIGN AVAGRAHA
+ 119E3         ; XID_Start # Lo       NANDINAGARI HEADSTROKE
+ 11A00         ; XID_Start # Lo       ZANABAZAR SQUARE LETTER A
+ 11A0B..11A32  ; XID_Start # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+ 11A3A         ; XID_Start # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+ 11A50         ; XID_Start # Lo       SOYOMBO LETTER A
+ 11A5C..11A89  ; XID_Start # Lo  [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+ 11A9D         ; XID_Start # Lo       SOYOMBO MARK PLUTA
+ 11AB0..11AF8  ; XID_Start # Lo  [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+ 11C00..11C08  ; XID_Start # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+ 11C0A..11C2E  ; XID_Start # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+ 11C40         ; XID_Start # Lo       BHAIKSUKI SIGN AVAGRAHA
+ 11C72..11C8F  ; XID_Start # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+ 11D00..11D06  ; XID_Start # Lo   [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+ 11D08..11D09  ; XID_Start # Lo   [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+ 11D0B..11D30  ; XID_Start # Lo  [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+ 11D46         ; XID_Start # Lo       MASARAM GONDI REPHA
+ 11D60..11D65  ; XID_Start # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+ 11D67..11D68  ; XID_Start # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+ 11D6A..11D89  ; XID_Start # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+ 11D98         ; XID_Start # Lo       GUNJALA GONDI OM
+ 11EE0..11EF2  ; XID_Start # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+ 11F02         ; XID_Start # Lo       KAWI SIGN REPHA
+ 11F04..11F10  ; XID_Start # Lo  [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33  ; XID_Start # Lo  [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11FB0         ; XID_Start # Lo       LISU LETTER YHA
+ 12000..12399  ; XID_Start # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+ 12400..1246E  ; XID_Start # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+ 12480..12543  ; XID_Start # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+ 12F90..12FF0  ; XID_Start # Lo  [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+ 13000..1342F  ; XID_Start # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+ 13441..13446  ; XID_Start # Lo   [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+ 14400..14646  ; XID_Start # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+ 16800..16A38  ; XID_Start # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+ 16A40..16A5E  ; XID_Start # Lo  [31] MRO LETTER TA..MRO LETTER TEK
+ 16A70..16ABE  ; XID_Start # Lo  [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AD0..16AED  ; XID_Start # Lo  [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+ 16B00..16B2F  ; XID_Start # Lo  [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+ 16B40..16B43  ; XID_Start # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16B63..16B77  ; XID_Start # Lo  [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+ 16B7D..16B8F  ; XID_Start # Lo  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+ 16E40..16E7F  ; XID_Start # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 16F00..16F4A  ; XID_Start # Lo  [75] MIAO LETTER PA..MIAO LETTER RTE
+ 16F50         ; XID_Start # Lo       MIAO LETTER NASALIZATION
+ 16F93..16F9F  ; XID_Start # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; XID_Start # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE3         ; XID_Start # Lm       OLD CHINESE ITERATION MARK
+ 17000..187F7  ; XID_Start # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
+ 18800..18CD5  ; XID_Start # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
+ 18D00..18D08  ; XID_Start # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3  ; XID_Start # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; XID_Start # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; XID_Start # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1B000..1B122  ; XID_Start # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU
+ 1B132         ; XID_Start # Lo       HIRAGANA LETTER SMALL KO
+ 1B150..1B152  ; XID_Start # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155         ; XID_Start # Lo       KATAKANA LETTER SMALL KO
+ 1B164..1B167  ; XID_Start # Lo   [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+ 1B170..1B2FB  ; XID_Start # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
+ 1BC00..1BC6A  ; XID_Start # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+ 1BC70..1BC7C  ; XID_Start # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+ 1BC80..1BC88  ; XID_Start # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+ 1BC90..1BC99  ; XID_Start # Lo  [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+ 1D400..1D454  ; XID_Start # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; XID_Start # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; XID_Start # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; XID_Start # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; XID_Start # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; XID_Start # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; XID_Start # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; XID_Start # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; XID_Start # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; XID_Start # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; XID_Start # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; XID_Start # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; XID_Start # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; XID_Start # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; XID_Start # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; XID_Start # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; XID_Start # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; XID_Start # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; XID_Start # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; XID_Start # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C2..1D6DA  ; XID_Start # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6FA  ; XID_Start # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FC..1D714  ; XID_Start # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D734  ; XID_Start # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D736..1D74E  ; XID_Start # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D76E  ; XID_Start # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D770..1D788  ; XID_Start # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D7A8  ; XID_Start # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7AA..1D7C2  ; XID_Start # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7CB  ; XID_Start # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1DF00..1DF09  ; XID_Start # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A         ; XID_Start # Lo       LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E  ; XID_Start # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; XID_Start # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E030..1E06D  ; XID_Start # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E100..1E12C  ; XID_Start # Lo  [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+ 1E137..1E13D  ; XID_Start # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E14E         ; XID_Start # Lo       NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+ 1E290..1E2AD  ; XID_Start # Lo  [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2C0..1E2EB  ; XID_Start # Lo  [44] WANCHO LETTER AA..WANCHO LETTER YIH
+ 1E4D0..1E4EA  ; XID_Start # Lo  [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB         ; XID_Start # Lm       NAG MUNDARI SIGN OJOD
+ 1E7E0..1E7E6  ; XID_Start # Lo   [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB  ; XID_Start # Lo   [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE  ; XID_Start # Lo   [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE  ; XID_Start # Lo  [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+ 1E800..1E8C4  ; XID_Start # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+ 1E900..1E943  ; XID_Start # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1E94B         ; XID_Start # Lm       ADLAM NASALIZATION MARK
+ 1EE00..1EE03  ; XID_Start # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; XID_Start # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; XID_Start # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; XID_Start # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; XID_Start # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; XID_Start # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; XID_Start # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; XID_Start # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; XID_Start # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; XID_Start # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; XID_Start # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; XID_Start # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; XID_Start # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; XID_Start # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; XID_Start # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; XID_Start # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; XID_Start # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; XID_Start # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; XID_Start # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; XID_Start # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; XID_Start # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; XID_Start # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; XID_Start # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; XID_Start # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 20000..2A6DF  ; XID_Start # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B739  ; XID_Start # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
+ 2B740..2B81D  ; XID_Start # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1  ; XID_Start # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0  ; XID_Start # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 2F800..2FA1D  ; XID_Start # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; XID_Start # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; XID_Start # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
+ 
+ # Total code points: 136322
+ 
+ # ================================================
+ 
+ # Derived Property: XID_Continue
+ #  Mod_ID_Continue modified for closure under NFKx
+ #  Modified as described in UAX #15
+ #  NOTE: Does NOT remove the non-NFKx characters.
+ #        Merely ensures that if isIdentifer(string) then isIdentifier(NFKx(string))
+ #  NOTE: See UAX #31 for more information
+ 
+ 0030..0039    ; XID_Continue # Nd  [10] DIGIT ZERO..DIGIT NINE
+ 0041..005A    ; XID_Continue # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 005F          ; XID_Continue # Pc       LOW LINE
+ 0061..007A    ; XID_Continue # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 00AA          ; XID_Continue # Lo       FEMININE ORDINAL INDICATOR
+ 00B5          ; XID_Continue # L&       MICRO SIGN
+ 00B7          ; XID_Continue # Po       MIDDLE DOT
+ 00BA          ; XID_Continue # Lo       MASCULINE ORDINAL INDICATOR
+ 00C0..00D6    ; XID_Continue # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00F6    ; XID_Continue # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F8..01BA    ; XID_Continue # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BB          ; XID_Continue # Lo       LATIN LETTER TWO WITH STROKE
+ 01BC..01BF    ; XID_Continue # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C0..01C3    ; XID_Continue # Lo   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+ 01C4..0293    ; XID_Continue # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0294          ; XID_Continue # Lo       LATIN LETTER GLOTTAL STOP
+ 0295..02AF    ; XID_Continue # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02C1    ; XID_Continue # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C6..02D1    ; XID_Continue # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02E0..02E4    ; XID_Continue # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02EC          ; XID_Continue # Lm       MODIFIER LETTER VOICING
+ 02EE          ; XID_Continue # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 0300..036F    ; XID_Continue # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+ 0370..0373    ; XID_Continue # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0374          ; XID_Continue # Lm       GREEK NUMERAL SIGN
+ 0376..0377    ; XID_Continue # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037B..037D    ; XID_Continue # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037F          ; XID_Continue # L&       GREEK CAPITAL LETTER YOT
+ 0386          ; XID_Continue # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; XID_Continue # Po       GREEK ANO TELEIA
+ 0388..038A    ; XID_Continue # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; XID_Continue # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; XID_Continue # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; XID_Continue # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F7..0481    ; XID_Continue # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 0483..0487    ; XID_Continue # Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+ 048A..052F    ; XID_Continue # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; XID_Continue # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0559          ; XID_Continue # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 0560..0588    ; XID_Continue # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 0591..05BD    ; XID_Continue # Mn  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+ 05BF          ; XID_Continue # Mn       HEBREW POINT RAFE
+ 05C1..05C2    ; XID_Continue # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+ 05C4..05C5    ; XID_Continue # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+ 05C7          ; XID_Continue # Mn       HEBREW POINT QAMATS QATAN
+ 05D0..05EA    ; XID_Continue # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+ 05EF..05F2    ; XID_Continue # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+ 0610..061A    ; XID_Continue # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+ 0620..063F    ; XID_Continue # Lo  [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+ 0640          ; XID_Continue # Lm       ARABIC TATWEEL
+ 0641..064A    ; XID_Continue # Lo  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+ 064B..065F    ; XID_Continue # Mn  [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+ 0660..0669    ; XID_Continue # Nd  [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+ 066E..066F    ; XID_Continue # Lo   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+ 0670          ; XID_Continue # Mn       ARABIC LETTER SUPERSCRIPT ALEF
+ 0671..06D3    ; XID_Continue # Lo  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 06D5          ; XID_Continue # Lo       ARABIC LETTER AE
+ 06D6..06DC    ; XID_Continue # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+ 06DF..06E4    ; XID_Continue # Mn   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+ 06E5..06E6    ; XID_Continue # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06E7..06E8    ; XID_Continue # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+ 06EA..06ED    ; XID_Continue # Mn   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+ 06EE..06EF    ; XID_Continue # Lo   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+ 06F0..06F9    ; XID_Continue # Nd  [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+ 06FA..06FC    ; XID_Continue # Lo   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+ 06FF          ; XID_Continue # Lo       ARABIC LETTER HEH WITH INVERTED V
+ 0710          ; XID_Continue # Lo       SYRIAC LETTER ALAPH
+ 0711          ; XID_Continue # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
+ 0712..072F    ; XID_Continue # Lo  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+ 0730..074A    ; XID_Continue # Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+ 074D..07A5    ; XID_Continue # Lo  [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+ 07A6..07B0    ; XID_Continue # Mn  [11] THAANA ABAFILI..THAANA SUKUN
+ 07B1          ; XID_Continue # Lo       THAANA LETTER NAA
+ 07C0..07C9    ; XID_Continue # Nd  [10] NKO DIGIT ZERO..NKO DIGIT NINE
+ 07CA..07EA    ; XID_Continue # Lo  [33] NKO LETTER A..NKO LETTER JONA RA
+ 07EB..07F3    ; XID_Continue # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+ 07F4..07F5    ; XID_Continue # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07FA          ; XID_Continue # Lm       NKO LAJANYALAN
+ 07FD          ; XID_Continue # Mn       NKO DANTAYALAN
+ 0800..0815    ; XID_Continue # Lo  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+ 0816..0819    ; XID_Continue # Mn   [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+ 081A          ; XID_Continue # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 081B..0823    ; XID_Continue # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+ 0824          ; XID_Continue # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0825..0827    ; XID_Continue # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+ 0828          ; XID_Continue # Lm       SAMARITAN MODIFIER LETTER I
+ 0829..082D    ; XID_Continue # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+ 0840..0858    ; XID_Continue # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+ 0859..085B    ; XID_Continue # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+ 0860..086A    ; XID_Continue # Lo  [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+ 0870..0887    ; XID_Continue # Lo  [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+ 0889..088E    ; XID_Continue # Lo   [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+ 0898..089F    ; XID_Continue # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+ 08A0..08C8    ; XID_Continue # Lo  [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+ 08C9          ; XID_Continue # Lm       ARABIC SMALL FARSI YEH
+ 08CA..08E1    ; XID_Continue # Mn  [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
+ 08E3..0902    ; XID_Continue # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+ 0903          ; XID_Continue # Mc       DEVANAGARI SIGN VISARGA
+ 0904..0939    ; XID_Continue # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+ 093A          ; XID_Continue # Mn       DEVANAGARI VOWEL SIGN OE
+ 093B          ; XID_Continue # Mc       DEVANAGARI VOWEL SIGN OOE
+ 093C          ; XID_Continue # Mn       DEVANAGARI SIGN NUKTA
+ 093D          ; XID_Continue # Lo       DEVANAGARI SIGN AVAGRAHA
+ 093E..0940    ; XID_Continue # Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+ 0941..0948    ; XID_Continue # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+ 0949..094C    ; XID_Continue # Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+ 094D          ; XID_Continue # Mn       DEVANAGARI SIGN VIRAMA
+ 094E..094F    ; XID_Continue # Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+ 0950          ; XID_Continue # Lo       DEVANAGARI OM
+ 0951..0957    ; XID_Continue # Mn   [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+ 0958..0961    ; XID_Continue # Lo  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+ 0962..0963    ; XID_Continue # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+ 0966..096F    ; XID_Continue # Nd  [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+ 0971          ; XID_Continue # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0972..0980    ; XID_Continue # Lo  [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+ 0981          ; XID_Continue # Mn       BENGALI SIGN CANDRABINDU
+ 0982..0983    ; XID_Continue # Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+ 0985..098C    ; XID_Continue # Lo   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+ 098F..0990    ; XID_Continue # Lo   [2] BENGALI LETTER E..BENGALI LETTER AI
+ 0993..09A8    ; XID_Continue # Lo  [22] BENGALI LETTER O..BENGALI LETTER NA
+ 09AA..09B0    ; XID_Continue # Lo   [7] BENGALI LETTER PA..BENGALI LETTER RA
+ 09B2          ; XID_Continue # Lo       BENGALI LETTER LA
+ 09B6..09B9    ; XID_Continue # Lo   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+ 09BC          ; XID_Continue # Mn       BENGALI SIGN NUKTA
+ 09BD          ; XID_Continue # Lo       BENGALI SIGN AVAGRAHA
+ 09BE..09C0    ; XID_Continue # Mc   [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+ 09C1..09C4    ; XID_Continue # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+ 09C7..09C8    ; XID_Continue # Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+ 09CB..09CC    ; XID_Continue # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09CD          ; XID_Continue # Mn       BENGALI SIGN VIRAMA
+ 09CE          ; XID_Continue # Lo       BENGALI LETTER KHANDA TA
+ 09D7          ; XID_Continue # Mc       BENGALI AU LENGTH MARK
+ 09DC..09DD    ; XID_Continue # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF..09E1    ; XID_Continue # Lo   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+ 09E2..09E3    ; XID_Continue # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+ 09E6..09EF    ; XID_Continue # Nd  [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+ 09F0..09F1    ; XID_Continue # Lo   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+ 09FC          ; XID_Continue # Lo       BENGALI LETTER VEDIC ANUSVARA
+ 09FE          ; XID_Continue # Mn       BENGALI SANDHI MARK
+ 0A01..0A02    ; XID_Continue # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+ 0A03          ; XID_Continue # Mc       GURMUKHI SIGN VISARGA
+ 0A05..0A0A    ; XID_Continue # Lo   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+ 0A0F..0A10    ; XID_Continue # Lo   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+ 0A13..0A28    ; XID_Continue # Lo  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+ 0A2A..0A30    ; XID_Continue # Lo   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+ 0A32..0A33    ; XID_Continue # Lo   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+ 0A35..0A36    ; XID_Continue # Lo   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+ 0A38..0A39    ; XID_Continue # Lo   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+ 0A3C          ; XID_Continue # Mn       GURMUKHI SIGN NUKTA
+ 0A3E..0A40    ; XID_Continue # Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+ 0A41..0A42    ; XID_Continue # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+ 0A47..0A48    ; XID_Continue # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+ 0A4B..0A4D    ; XID_Continue # Mn   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+ 0A51          ; XID_Continue # Mn       GURMUKHI SIGN UDAAT
+ 0A59..0A5C    ; XID_Continue # Lo   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+ 0A5E          ; XID_Continue # Lo       GURMUKHI LETTER FA
+ 0A66..0A6F    ; XID_Continue # Nd  [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+ 0A70..0A71    ; XID_Continue # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+ 0A72..0A74    ; XID_Continue # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+ 0A75          ; XID_Continue # Mn       GURMUKHI SIGN YAKASH
+ 0A81..0A82    ; XID_Continue # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+ 0A83          ; XID_Continue # Mc       GUJARATI SIGN VISARGA
+ 0A85..0A8D    ; XID_Continue # Lo   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+ 0A8F..0A91    ; XID_Continue # Lo   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+ 0A93..0AA8    ; XID_Continue # Lo  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+ 0AAA..0AB0    ; XID_Continue # Lo   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+ 0AB2..0AB3    ; XID_Continue # Lo   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+ 0AB5..0AB9    ; XID_Continue # Lo   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+ 0ABC          ; XID_Continue # Mn       GUJARATI SIGN NUKTA
+ 0ABD          ; XID_Continue # Lo       GUJARATI SIGN AVAGRAHA
+ 0ABE..0AC0    ; XID_Continue # Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+ 0AC1..0AC5    ; XID_Continue # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+ 0AC7..0AC8    ; XID_Continue # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+ 0AC9          ; XID_Continue # Mc       GUJARATI VOWEL SIGN CANDRA O
+ 0ACB..0ACC    ; XID_Continue # Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+ 0ACD          ; XID_Continue # Mn       GUJARATI SIGN VIRAMA
+ 0AD0          ; XID_Continue # Lo       GUJARATI OM
+ 0AE0..0AE1    ; XID_Continue # Lo   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+ 0AE2..0AE3    ; XID_Continue # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+ 0AE6..0AEF    ; XID_Continue # Nd  [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+ 0AF9          ; XID_Continue # Lo       GUJARATI LETTER ZHA
+ 0AFA..0AFF    ; XID_Continue # Mn   [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+ 0B01          ; XID_Continue # Mn       ORIYA SIGN CANDRABINDU
+ 0B02..0B03    ; XID_Continue # Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+ 0B05..0B0C    ; XID_Continue # Lo   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+ 0B0F..0B10    ; XID_Continue # Lo   [2] ORIYA LETTER E..ORIYA LETTER AI
+ 0B13..0B28    ; XID_Continue # Lo  [22] ORIYA LETTER O..ORIYA LETTER NA
+ 0B2A..0B30    ; XID_Continue # Lo   [7] ORIYA LETTER PA..ORIYA LETTER RA
+ 0B32..0B33    ; XID_Continue # Lo   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+ 0B35..0B39    ; XID_Continue # Lo   [5] ORIYA LETTER VA..ORIYA LETTER HA
+ 0B3C          ; XID_Continue # Mn       ORIYA SIGN NUKTA
+ 0B3D          ; XID_Continue # Lo       ORIYA SIGN AVAGRAHA
+ 0B3E          ; XID_Continue # Mc       ORIYA VOWEL SIGN AA
+ 0B3F          ; XID_Continue # Mn       ORIYA VOWEL SIGN I
+ 0B40          ; XID_Continue # Mc       ORIYA VOWEL SIGN II
+ 0B41..0B44    ; XID_Continue # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+ 0B47..0B48    ; XID_Continue # Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; XID_Continue # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B4D          ; XID_Continue # Mn       ORIYA SIGN VIRAMA
+ 0B55..0B56    ; XID_Continue # Mn   [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+ 0B57          ; XID_Continue # Mc       ORIYA AU LENGTH MARK
+ 0B5C..0B5D    ; XID_Continue # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B5F..0B61    ; XID_Continue # Lo   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+ 0B62..0B63    ; XID_Continue # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+ 0B66..0B6F    ; XID_Continue # Nd  [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+ 0B71          ; XID_Continue # Lo       ORIYA LETTER WA
+ 0B82          ; XID_Continue # Mn       TAMIL SIGN ANUSVARA
+ 0B83          ; XID_Continue # Lo       TAMIL SIGN VISARGA
+ 0B85..0B8A    ; XID_Continue # Lo   [6] TAMIL LETTER A..TAMIL LETTER UU
+ 0B8E..0B90    ; XID_Continue # Lo   [3] TAMIL LETTER E..TAMIL LETTER AI
+ 0B92..0B95    ; XID_Continue # Lo   [4] TAMIL LETTER O..TAMIL LETTER KA
+ 0B99..0B9A    ; XID_Continue # Lo   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+ 0B9C          ; XID_Continue # Lo       TAMIL LETTER JA
+ 0B9E..0B9F    ; XID_Continue # Lo   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+ 0BA3..0BA4    ; XID_Continue # Lo   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+ 0BA8..0BAA    ; XID_Continue # Lo   [3] TAMIL LETTER NA..TAMIL LETTER PA
+ 0BAE..0BB9    ; XID_Continue # Lo  [12] TAMIL LETTER MA..TAMIL LETTER HA
+ 0BBE..0BBF    ; XID_Continue # Mc   [2] TAMIL VOWEL SIGN AA..TAMIL VOWEL SIGN I
+ 0BC0          ; XID_Continue # Mn       TAMIL VOWEL SIGN II
+ 0BC1..0BC2    ; XID_Continue # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+ 0BC6..0BC8    ; XID_Continue # Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+ 0BCA..0BCC    ; XID_Continue # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0BCD          ; XID_Continue # Mn       TAMIL SIGN VIRAMA
+ 0BD0          ; XID_Continue # Lo       TAMIL OM
+ 0BD7          ; XID_Continue # Mc       TAMIL AU LENGTH MARK
+ 0BE6..0BEF    ; XID_Continue # Nd  [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+ 0C00          ; XID_Continue # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
+ 0C01..0C03    ; XID_Continue # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+ 0C04          ; XID_Continue # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
+ 0C05..0C0C    ; XID_Continue # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+ 0C0E..0C10    ; XID_Continue # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
+ 0C12..0C28    ; XID_Continue # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
+ 0C2A..0C39    ; XID_Continue # Lo  [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3C          ; XID_Continue # Mn       TELUGU SIGN NUKTA
+ 0C3D          ; XID_Continue # Lo       TELUGU SIGN AVAGRAHA
+ 0C3E..0C40    ; XID_Continue # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+ 0C41..0C44    ; XID_Continue # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+ 0C46..0C48    ; XID_Continue # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+ 0C4A..0C4D    ; XID_Continue # Mn   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+ 0C55..0C56    ; XID_Continue # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+ 0C58..0C5A    ; XID_Continue # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D          ; XID_Continue # Lo       TELUGU LETTER NAKAARA POLLU
+ 0C60..0C61    ; XID_Continue # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+ 0C62..0C63    ; XID_Continue # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+ 0C66..0C6F    ; XID_Continue # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+ 0C80          ; XID_Continue # Lo       KANNADA SIGN SPACING CANDRABINDU
+ 0C81          ; XID_Continue # Mn       KANNADA SIGN CANDRABINDU
+ 0C82..0C83    ; XID_Continue # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+ 0C85..0C8C    ; XID_Continue # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+ 0C8E..0C90    ; XID_Continue # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
+ 0C92..0CA8    ; XID_Continue # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
+ 0CAA..0CB3    ; XID_Continue # Lo  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+ 0CB5..0CB9    ; XID_Continue # Lo   [5] KANNADA LETTER VA..KANNADA LETTER HA
+ 0CBC          ; XID_Continue # Mn       KANNADA SIGN NUKTA
+ 0CBD          ; XID_Continue # Lo       KANNADA SIGN AVAGRAHA
+ 0CBE          ; XID_Continue # Mc       KANNADA VOWEL SIGN AA
+ 0CBF          ; XID_Continue # Mn       KANNADA VOWEL SIGN I
+ 0CC0..0CC4    ; XID_Continue # Mc   [5] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN VOCALIC RR
+ 0CC6          ; XID_Continue # Mn       KANNADA VOWEL SIGN E
+ 0CC7..0CC8    ; XID_Continue # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; XID_Continue # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0CCC..0CCD    ; XID_Continue # Mn   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+ 0CD5..0CD6    ; XID_Continue # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+ 0CDD..0CDE    ; XID_Continue # Lo   [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+ 0CE0..0CE1    ; XID_Continue # Lo   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+ 0CE2..0CE3    ; XID_Continue # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+ 0CE6..0CEF    ; XID_Continue # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+ 0CF1..0CF2    ; XID_Continue # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0CF3          ; XID_Continue # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+ 0D00..0D01    ; XID_Continue # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+ 0D02..0D03    ; XID_Continue # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+ 0D04..0D0C    ; XID_Continue # Lo   [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+ 0D0E..0D10    ; XID_Continue # Lo   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+ 0D12..0D3A    ; XID_Continue # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+ 0D3B..0D3C    ; XID_Continue # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+ 0D3D          ; XID_Continue # Lo       MALAYALAM SIGN AVAGRAHA
+ 0D3E..0D40    ; XID_Continue # Mc   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
+ 0D41..0D44    ; XID_Continue # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+ 0D46..0D48    ; XID_Continue # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+ 0D4A..0D4C    ; XID_Continue # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0D4D          ; XID_Continue # Mn       MALAYALAM SIGN VIRAMA
+ 0D4E          ; XID_Continue # Lo       MALAYALAM LETTER DOT REPH
+ 0D54..0D56    ; XID_Continue # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+ 0D57          ; XID_Continue # Mc       MALAYALAM AU LENGTH MARK
+ 0D5F..0D61    ; XID_Continue # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+ 0D62..0D63    ; XID_Continue # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+ 0D66..0D6F    ; XID_Continue # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+ 0D7A..0D7F    ; XID_Continue # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D81          ; XID_Continue # Mn       SINHALA SIGN CANDRABINDU
+ 0D82..0D83    ; XID_Continue # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+ 0D85..0D96    ; XID_Continue # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+ 0D9A..0DB1    ; XID_Continue # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+ 0DB3..0DBB    ; XID_Continue # Lo   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+ 0DBD          ; XID_Continue # Lo       SINHALA LETTER DANTAJA LAYANNA
+ 0DC0..0DC6    ; XID_Continue # Lo   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+ 0DCA          ; XID_Continue # Mn       SINHALA SIGN AL-LAKUNA
+ 0DCF..0DD1    ; XID_Continue # Mc   [3] SINHALA VOWEL SIGN AELA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+ 0DD2..0DD4    ; XID_Continue # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+ 0DD6          ; XID_Continue # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
+ 0DD8..0DDF    ; XID_Continue # Mc   [8] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN GAYANUKITTA
+ 0DE6..0DEF    ; XID_Continue # Nd  [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
+ 0DF2..0DF3    ; XID_Continue # Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+ 0E01..0E30    ; XID_Continue # Lo  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+ 0E31          ; XID_Continue # Mn       THAI CHARACTER MAI HAN-AKAT
+ 0E32..0E33    ; XID_Continue # Lo   [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+ 0E34..0E3A    ; XID_Continue # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+ 0E40..0E45    ; XID_Continue # Lo   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+ 0E46          ; XID_Continue # Lm       THAI CHARACTER MAIYAMOK
+ 0E47..0E4E    ; XID_Continue # Mn   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+ 0E50..0E59    ; XID_Continue # Nd  [10] THAI DIGIT ZERO..THAI DIGIT NINE
+ 0E81..0E82    ; XID_Continue # Lo   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+ 0E84          ; XID_Continue # Lo       LAO LETTER KHO TAM
+ 0E86..0E8A    ; XID_Continue # Lo   [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
+ 0E8C..0EA3    ; XID_Continue # Lo  [24] LAO LETTER PALI JHA..LAO LETTER LO LING
+ 0EA5          ; XID_Continue # Lo       LAO LETTER LO LOOT
+ 0EA7..0EB0    ; XID_Continue # Lo  [10] LAO LETTER WO..LAO VOWEL SIGN A
+ 0EB1          ; XID_Continue # Mn       LAO VOWEL SIGN MAI KAN
+ 0EB2..0EB3    ; XID_Continue # Lo   [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+ 0EB4..0EBC    ; XID_Continue # Mn   [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+ 0EBD          ; XID_Continue # Lo       LAO SEMIVOWEL SIGN NYO
+ 0EC0..0EC4    ; XID_Continue # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+ 0EC6          ; XID_Continue # Lm       LAO KO LA
+ 0EC8..0ECE    ; XID_Continue # Mn   [7] LAO TONE MAI EK..LAO YAMAKKAN
+ 0ED0..0ED9    ; XID_Continue # Nd  [10] LAO DIGIT ZERO..LAO DIGIT NINE
+ 0EDC..0EDF    ; XID_Continue # Lo   [4] LAO HO NO..LAO LETTER KHMU NYO
+ 0F00          ; XID_Continue # Lo       TIBETAN SYLLABLE OM
+ 0F18..0F19    ; XID_Continue # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+ 0F20..0F29    ; XID_Continue # Nd  [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+ 0F35          ; XID_Continue # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA
+ 0F37          ; XID_Continue # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS
+ 0F39          ; XID_Continue # Mn       TIBETAN MARK TSA -PHRU
+ 0F3E..0F3F    ; XID_Continue # Mc   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+ 0F40..0F47    ; XID_Continue # Lo   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+ 0F49..0F6C    ; XID_Continue # Lo  [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+ 0F71..0F7E    ; XID_Continue # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+ 0F7F          ; XID_Continue # Mc       TIBETAN SIGN RNAM BCAD
+ 0F80..0F84    ; XID_Continue # Mn   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+ 0F86..0F87    ; XID_Continue # Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+ 0F88..0F8C    ; XID_Continue # Lo   [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+ 0F8D..0F97    ; XID_Continue # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+ 0F99..0FBC    ; XID_Continue # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+ 0FC6          ; XID_Continue # Mn       TIBETAN SYMBOL PADMA GDAN
+ 1000..102A    ; XID_Continue # Lo  [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+ 102B..102C    ; XID_Continue # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+ 102D..1030    ; XID_Continue # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+ 1031          ; XID_Continue # Mc       MYANMAR VOWEL SIGN E
+ 1032..1037    ; XID_Continue # Mn   [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+ 1038          ; XID_Continue # Mc       MYANMAR SIGN VISARGA
+ 1039..103A    ; XID_Continue # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+ 103B..103C    ; XID_Continue # Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+ 103D..103E    ; XID_Continue # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+ 103F          ; XID_Continue # Lo       MYANMAR LETTER GREAT SA
+ 1040..1049    ; XID_Continue # Nd  [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+ 1050..1055    ; XID_Continue # Lo   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+ 1056..1057    ; XID_Continue # Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+ 1058..1059    ; XID_Continue # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+ 105A..105D    ; XID_Continue # Lo   [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+ 105E..1060    ; XID_Continue # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+ 1061          ; XID_Continue # Lo       MYANMAR LETTER SGAW KAREN SHA
+ 1062..1064    ; XID_Continue # Mc   [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+ 1065..1066    ; XID_Continue # Lo   [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+ 1067..106D    ; XID_Continue # Mc   [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+ 106E..1070    ; XID_Continue # Lo   [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+ 1071..1074    ; XID_Continue # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+ 1075..1081    ; XID_Continue # Lo  [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+ 1082          ; XID_Continue # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+ 1083..1084    ; XID_Continue # Mc   [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+ 1085..1086    ; XID_Continue # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+ 1087..108C    ; XID_Continue # Mc   [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+ 108D          ; XID_Continue # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+ 108E          ; XID_Continue # Lo       MYANMAR LETTER RUMAI PALAUNG FA
+ 108F          ; XID_Continue # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
+ 1090..1099    ; XID_Continue # Nd  [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+ 109A..109C    ; XID_Continue # Mc   [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
+ 109D          ; XID_Continue # Mn       MYANMAR VOWEL SIGN AITON AI
+ 10A0..10C5    ; XID_Continue # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; XID_Continue # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; XID_Continue # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; XID_Continue # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FC          ; XID_Continue # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; XID_Continue # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 1100..1248    ; XID_Continue # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+ 124A..124D    ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+ 1250..1256    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+ 1258          ; XID_Continue # Lo       ETHIOPIC SYLLABLE QHWA
+ 125A..125D    ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+ 1260..1288    ; XID_Continue # Lo  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+ 128A..128D    ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+ 1290..12B0    ; XID_Continue # Lo  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+ 12B2..12B5    ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+ 12B8..12BE    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+ 12C0          ; XID_Continue # Lo       ETHIOPIC SYLLABLE KXWA
+ 12C2..12C5    ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+ 12C8..12D6    ; XID_Continue # Lo  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+ 12D8..1310    ; XID_Continue # Lo  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+ 1312..1315    ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+ 1318..135A    ; XID_Continue # Lo  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+ 135D..135F    ; XID_Continue # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+ 1369..1371    ; XID_Continue # No   [9] ETHIOPIC DIGIT ONE..ETHIOPIC DIGIT NINE
+ 1380..138F    ; XID_Continue # Lo  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+ 13A0..13F5    ; XID_Continue # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; XID_Continue # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1401..166C    ; XID_Continue # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+ 166F..167F    ; XID_Continue # Lo  [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+ 1681..169A    ; XID_Continue # Lo  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+ 16A0..16EA    ; XID_Continue # Lo  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+ 16EE..16F0    ; XID_Continue # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+ 16F1..16F8    ; XID_Continue # Lo   [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+ 1700..1711    ; XID_Continue # Lo  [18] TAGALOG LETTER A..TAGALOG LETTER HA
+ 1712..1714    ; XID_Continue # Mn   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+ 1715          ; XID_Continue # Mc       TAGALOG SIGN PAMUDPOD
+ 171F..1731    ; XID_Continue # Lo  [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+ 1732..1733    ; XID_Continue # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+ 1734          ; XID_Continue # Mc       HANUNOO SIGN PAMUDPOD
+ 1740..1751    ; XID_Continue # Lo  [18] BUHID LETTER A..BUHID LETTER HA
+ 1752..1753    ; XID_Continue # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+ 1760..176C    ; XID_Continue # Lo  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+ 176E..1770    ; XID_Continue # Lo   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+ 1772..1773    ; XID_Continue # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+ 1780..17B3    ; XID_Continue # Lo  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+ 17B4..17B5    ; XID_Continue # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 17B6          ; XID_Continue # Mc       KHMER VOWEL SIGN AA
+ 17B7..17BD    ; XID_Continue # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+ 17BE..17C5    ; XID_Continue # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+ 17C6          ; XID_Continue # Mn       KHMER SIGN NIKAHIT
+ 17C7..17C8    ; XID_Continue # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+ 17C9..17D3    ; XID_Continue # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+ 17D7          ; XID_Continue # Lm       KHMER SIGN LEK TOO
+ 17DC          ; XID_Continue # Lo       KHMER SIGN AVAKRAHASANYA
+ 17DD          ; XID_Continue # Mn       KHMER SIGN ATTHACAN
+ 17E0..17E9    ; XID_Continue # Nd  [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+ 180B..180D    ; XID_Continue # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180F          ; XID_Continue # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 1810..1819    ; XID_Continue # Nd  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+ 1820..1842    ; XID_Continue # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+ 1843          ; XID_Continue # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1844..1878    ; XID_Continue # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+ 1880..1884    ; XID_Continue # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+ 1885..1886    ; XID_Continue # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 1887..18A8    ; XID_Continue # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+ 18A9          ; XID_Continue # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
+ 18AA          ; XID_Continue # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+ 18B0..18F5    ; XID_Continue # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+ 1900..191E    ; XID_Continue # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+ 1920..1922    ; XID_Continue # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+ 1923..1926    ; XID_Continue # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+ 1927..1928    ; XID_Continue # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+ 1929..192B    ; XID_Continue # Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+ 1930..1931    ; XID_Continue # Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+ 1932          ; XID_Continue # Mn       LIMBU SMALL LETTER ANUSVARA
+ 1933..1938    ; XID_Continue # Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+ 1939..193B    ; XID_Continue # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+ 1946..194F    ; XID_Continue # Nd  [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+ 1950..196D    ; XID_Continue # Lo  [30] TAI LE LETTER KA..TAI LE LETTER AI
+ 1970..1974    ; XID_Continue # Lo   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+ 1980..19AB    ; XID_Continue # Lo  [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
+ 19B0..19C9    ; XID_Continue # Lo  [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+ 19D0..19D9    ; XID_Continue # Nd  [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+ 19DA          ; XID_Continue # No       NEW TAI LUE THAM DIGIT ONE
+ 1A00..1A16    ; XID_Continue # Lo  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+ 1A17..1A18    ; XID_Continue # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+ 1A19..1A1A    ; XID_Continue # Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+ 1A1B          ; XID_Continue # Mn       BUGINESE VOWEL SIGN AE
+ 1A20..1A54    ; XID_Continue # Lo  [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
+ 1A55          ; XID_Continue # Mc       TAI THAM CONSONANT SIGN MEDIAL RA
+ 1A56          ; XID_Continue # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
+ 1A57          ; XID_Continue # Mc       TAI THAM CONSONANT SIGN LA TANG LAI
+ 1A58..1A5E    ; XID_Continue # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+ 1A60          ; XID_Continue # Mn       TAI THAM SIGN SAKOT
+ 1A61          ; XID_Continue # Mc       TAI THAM VOWEL SIGN A
+ 1A62          ; XID_Continue # Mn       TAI THAM VOWEL SIGN MAI SAT
+ 1A63..1A64    ; XID_Continue # Mc   [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
+ 1A65..1A6C    ; XID_Continue # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+ 1A6D..1A72    ; XID_Continue # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+ 1A73..1A7C    ; XID_Continue # Mn  [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+ 1A7F          ; XID_Continue # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
+ 1A80..1A89    ; XID_Continue # Nd  [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
+ 1A90..1A99    ; XID_Continue # Nd  [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
+ 1AA7          ; XID_Continue # Lm       TAI THAM SIGN MAI YAMOK
+ 1AB0..1ABD    ; XID_Continue # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+ 1ABF..1ACE    ; XID_Continue # Mn  [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+ 1B00..1B03    ; XID_Continue # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+ 1B04          ; XID_Continue # Mc       BALINESE SIGN BISAH
+ 1B05..1B33    ; XID_Continue # Lo  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+ 1B34          ; XID_Continue # Mn       BALINESE SIGN REREKAN
+ 1B35          ; XID_Continue # Mc       BALINESE VOWEL SIGN TEDUNG
+ 1B36..1B3A    ; XID_Continue # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+ 1B3B          ; XID_Continue # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3C          ; XID_Continue # Mn       BALINESE VOWEL SIGN LA LENGA
+ 1B3D..1B41    ; XID_Continue # Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B42          ; XID_Continue # Mn       BALINESE VOWEL SIGN PEPET
+ 1B43..1B44    ; XID_Continue # Mc   [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+ 1B45..1B4C    ; XID_Continue # Lo   [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+ 1B50..1B59    ; XID_Continue # Nd  [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+ 1B6B..1B73    ; XID_Continue # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+ 1B80..1B81    ; XID_Continue # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+ 1B82          ; XID_Continue # Mc       SUNDANESE SIGN PANGWISAD
+ 1B83..1BA0    ; XID_Continue # Lo  [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+ 1BA1          ; XID_Continue # Mc       SUNDANESE CONSONANT SIGN PAMINGKAL
+ 1BA2..1BA5    ; XID_Continue # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+ 1BA6..1BA7    ; XID_Continue # Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+ 1BA8..1BA9    ; XID_Continue # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+ 1BAA          ; XID_Continue # Mc       SUNDANESE SIGN PAMAAEH
+ 1BAB..1BAD    ; XID_Continue # Mn   [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+ 1BAE..1BAF    ; XID_Continue # Lo   [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+ 1BB0..1BB9    ; XID_Continue # Nd  [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+ 1BBA..1BE5    ; XID_Continue # Lo  [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+ 1BE6          ; XID_Continue # Mn       BATAK SIGN TOMPI
+ 1BE7          ; XID_Continue # Mc       BATAK VOWEL SIGN E
+ 1BE8..1BE9    ; XID_Continue # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+ 1BEA..1BEC    ; XID_Continue # Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+ 1BED          ; XID_Continue # Mn       BATAK VOWEL SIGN KARO O
+ 1BEE          ; XID_Continue # Mc       BATAK VOWEL SIGN U
+ 1BEF..1BF1    ; XID_Continue # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+ 1BF2..1BF3    ; XID_Continue # Mc   [2] BATAK PANGOLAT..BATAK PANONGONAN
+ 1C00..1C23    ; XID_Continue # Lo  [36] LEPCHA LETTER KA..LEPCHA LETTER A
+ 1C24..1C2B    ; XID_Continue # Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+ 1C2C..1C33    ; XID_Continue # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+ 1C34..1C35    ; XID_Continue # Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+ 1C36..1C37    ; XID_Continue # Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+ 1C40..1C49    ; XID_Continue # Nd  [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+ 1C4D..1C4F    ; XID_Continue # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+ 1C50..1C59    ; XID_Continue # Nd  [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+ 1C5A..1C77    ; XID_Continue # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+ 1C78..1C7D    ; XID_Continue # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1C80..1C88    ; XID_Continue # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; XID_Continue # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; XID_Continue # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1CD0..1CD2    ; XID_Continue # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+ 1CD4..1CE0    ; XID_Continue # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+ 1CE1          ; XID_Continue # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+ 1CE2..1CE8    ; XID_Continue # Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+ 1CE9..1CEC    ; XID_Continue # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+ 1CED          ; XID_Continue # Mn       VEDIC SIGN TIRYAK
+ 1CEE..1CF3    ; XID_Continue # Lo   [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+ 1CF4          ; XID_Continue # Mn       VEDIC TONE CANDRA ABOVE
+ 1CF5..1CF6    ; XID_Continue # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+ 1CF7          ; XID_Continue # Mc       VEDIC SIGN ATIKRAMA
+ 1CF8..1CF9    ; XID_Continue # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+ 1CFA          ; XID_Continue # Lo       VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+ 1D00..1D2B    ; XID_Continue # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; XID_Continue # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; XID_Continue # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; XID_Continue # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; XID_Continue # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; XID_Continue # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1DC0..1DFF    ; XID_Continue # Mn  [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+ 1E00..1F15    ; XID_Continue # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; XID_Continue # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; XID_Continue # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; XID_Continue # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; XID_Continue # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; XID_Continue # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; XID_Continue # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; XID_Continue # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; XID_Continue # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; XID_Continue # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; XID_Continue # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; XID_Continue # L&       GREEK PROSGEGRAMMENI
+ 1FC2..1FC4    ; XID_Continue # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; XID_Continue # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FD0..1FD3    ; XID_Continue # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; XID_Continue # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE0..1FEC    ; XID_Continue # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FF2..1FF4    ; XID_Continue # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; XID_Continue # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 203F..2040    ; XID_Continue # Pc   [2] UNDERTIE..CHARACTER TIE
+ 2054          ; XID_Continue # Pc       INVERTED UNDERTIE
+ 2071          ; XID_Continue # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 207F          ; XID_Continue # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2090..209C    ; XID_Continue # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20D0..20DC    ; XID_Continue # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+ 20E1          ; XID_Continue # Mn       COMBINING LEFT RIGHT ARROW ABOVE
+ 20E5..20F0    ; XID_Continue # Mn  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+ 2102          ; XID_Continue # L&       DOUBLE-STRUCK CAPITAL C
+ 2107          ; XID_Continue # L&       EULER CONSTANT
+ 210A..2113    ; XID_Continue # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; XID_Continue # L&       DOUBLE-STRUCK CAPITAL N
+ 2118          ; XID_Continue # Sm       SCRIPT CAPITAL P
+ 2119..211D    ; XID_Continue # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2124          ; XID_Continue # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; XID_Continue # L&       OHM SIGN
+ 2128          ; XID_Continue # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; XID_Continue # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212E          ; XID_Continue # So       ESTIMATED SYMBOL
+ 212F..2134    ; XID_Continue # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; XID_Continue # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; XID_Continue # L&       INFORMATION SOURCE
+ 213C..213F    ; XID_Continue # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2145..2149    ; XID_Continue # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214E          ; XID_Continue # L&       TURNED SMALL F
+ 2160..2182    ; XID_Continue # Nl  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+ 2183..2184    ; XID_Continue # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 2185..2188    ; XID_Continue # Nl   [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+ 2C00..2C7B    ; XID_Continue # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; XID_Continue # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; XID_Continue # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CEB..2CEE    ; XID_Continue # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CEF..2CF1    ; XID_Continue # Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+ 2CF2..2CF3    ; XID_Continue # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2D00..2D25    ; XID_Continue # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; XID_Continue # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; XID_Continue # L&       GEORGIAN SMALL LETTER AEN
+ 2D30..2D67    ; XID_Continue # Lo  [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+ 2D6F          ; XID_Continue # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D7F          ; XID_Continue # Mn       TIFINAGH CONSONANT JOINER
+ 2D80..2D96    ; XID_Continue # Lo  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+ 2DA0..2DA6    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+ 2DA8..2DAE    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+ 2DB0..2DB6    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+ 2DB8..2DBE    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+ 2DC0..2DC6    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+ 2DC8..2DCE    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+ 2DD0..2DD6    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+ 2DD8..2DDE    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+ 2DE0..2DFF    ; XID_Continue # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+ 3005          ; XID_Continue # Lm       IDEOGRAPHIC ITERATION MARK
+ 3006          ; XID_Continue # Lo       IDEOGRAPHIC CLOSING MARK
+ 3007          ; XID_Continue # Nl       IDEOGRAPHIC NUMBER ZERO
+ 3021..3029    ; XID_Continue # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+ 302A..302D    ; XID_Continue # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+ 302E..302F    ; XID_Continue # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+ 3031..3035    ; XID_Continue # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 3038..303A    ; XID_Continue # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 303B          ; XID_Continue # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 303C          ; XID_Continue # Lo       MASU MARK
+ 3041..3096    ; XID_Continue # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+ 3099..309A    ; XID_Continue # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309D..309E    ; XID_Continue # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 309F          ; XID_Continue # Lo       HIRAGANA DIGRAPH YORI
+ 30A1..30FA    ; XID_Continue # Lo  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+ 30FC..30FE    ; XID_Continue # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ 30FF          ; XID_Continue # Lo       KATAKANA DIGRAPH KOTO
+ 3105..312F    ; XID_Continue # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+ 3131..318E    ; XID_Continue # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 31A0..31BF    ; XID_Continue # Lo  [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+ 31F0..31FF    ; XID_Continue # Lo  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+ 3400..4DBF    ; XID_Continue # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 4E00..A014    ; XID_Continue # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E
+ A015          ; XID_Continue # Lm       YI SYLLABLE WU
+ A016..A48C    ; XID_Continue # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+ A4D0..A4F7    ; XID_Continue # Lo  [40] LISU LETTER BA..LISU LETTER OE
+ A4F8..A4FD    ; XID_Continue # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A500..A60B    ; XID_Continue # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+ A60C          ; XID_Continue # Lm       VAI SYLLABLE LENGTHENER
+ A610..A61F    ; XID_Continue # Lo  [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+ A620..A629    ; XID_Continue # Nd  [10] VAI DIGIT ZERO..VAI DIGIT NINE
+ A62A..A62B    ; XID_Continue # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+ A640..A66D    ; XID_Continue # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A66E          ; XID_Continue # Lo       CYRILLIC LETTER MULTIOCULAR O
+ A66F          ; XID_Continue # Mn       COMBINING CYRILLIC VZMET
+ A674..A67D    ; XID_Continue # Mn  [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+ A67F          ; XID_Continue # Lm       CYRILLIC PAYEROK
+ A680..A69B    ; XID_Continue # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; XID_Continue # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A69E..A69F    ; XID_Continue # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+ A6A0..A6E5    ; XID_Continue # Lo  [70] BAMUM LETTER A..BAMUM LETTER KI
+ A6E6..A6EF    ; XID_Continue # Nl  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+ A6F0..A6F1    ; XID_Continue # Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+ A717..A71F    ; XID_Continue # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A722..A76F    ; XID_Continue # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; XID_Continue # Lm       MODIFIER LETTER US
+ A771..A787    ; XID_Continue # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A788          ; XID_Continue # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A78B..A78E    ; XID_Continue # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A78F          ; XID_Continue # Lo       LATIN LETTER SINOLOGICAL DOT
+ A790..A7CA    ; XID_Continue # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; XID_Continue # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; XID_Continue # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; XID_Continue # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; XID_Continue # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; XID_Continue # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F7          ; XID_Continue # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
+ A7F8..A7F9    ; XID_Continue # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; XID_Continue # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ A7FB..A801    ; XID_Continue # Lo   [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+ A802          ; XID_Continue # Mn       SYLOTI NAGRI SIGN DVISVARA
+ A803..A805    ; XID_Continue # Lo   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+ A806          ; XID_Continue # Mn       SYLOTI NAGRI SIGN HASANTA
+ A807..A80A    ; XID_Continue # Lo   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+ A80B          ; XID_Continue # Mn       SYLOTI NAGRI SIGN ANUSVARA
+ A80C..A822    ; XID_Continue # Lo  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+ A823..A824    ; XID_Continue # Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+ A825..A826    ; XID_Continue # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+ A827          ; XID_Continue # Mc       SYLOTI NAGRI VOWEL SIGN OO
+ A82C          ; XID_Continue # Mn       SYLOTI NAGRI SIGN ALTERNATE HASANTA
+ A840..A873    ; XID_Continue # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+ A880..A881    ; XID_Continue # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+ A882..A8B3    ; XID_Continue # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+ A8B4..A8C3    ; XID_Continue # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+ A8C4..A8C5    ; XID_Continue # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+ A8D0..A8D9    ; XID_Continue # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+ A8E0..A8F1    ; XID_Continue # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+ A8F2..A8F7    ; XID_Continue # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+ A8FB          ; XID_Continue # Lo       DEVANAGARI HEADSTROKE
+ A8FD..A8FE    ; XID_Continue # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+ A8FF          ; XID_Continue # Mn       DEVANAGARI VOWEL SIGN AY
+ A900..A909    ; XID_Continue # Nd  [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+ A90A..A925    ; XID_Continue # Lo  [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+ A926..A92D    ; XID_Continue # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+ A930..A946    ; XID_Continue # Lo  [23] REJANG LETTER KA..REJANG LETTER A
+ A947..A951    ; XID_Continue # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+ A952..A953    ; XID_Continue # Mc   [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+ A960..A97C    ; XID_Continue # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+ A980..A982    ; XID_Continue # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+ A983          ; XID_Continue # Mc       JAVANESE SIGN WIGNYAN
+ A984..A9B2    ; XID_Continue # Lo  [47] JAVANESE LETTER A..JAVANESE LETTER HA
+ A9B3          ; XID_Continue # Mn       JAVANESE SIGN CECAK TELU
+ A9B4..A9B5    ; XID_Continue # Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+ A9B6..A9B9    ; XID_Continue # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+ A9BA..A9BB    ; XID_Continue # Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+ A9BC..A9BD    ; XID_Continue # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+ A9BE..A9C0    ; XID_Continue # Mc   [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+ A9CF          ; XID_Continue # Lm       JAVANESE PANGRANGKEP
+ A9D0..A9D9    ; XID_Continue # Nd  [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
+ A9E0..A9E4    ; XID_Continue # Lo   [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
+ A9E5          ; XID_Continue # Mn       MYANMAR SIGN SHAN SAW
+ A9E6          ; XID_Continue # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ A9E7..A9EF    ; XID_Continue # Lo   [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
+ A9F0..A9F9    ; XID_Continue # Nd  [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE
+ A9FA..A9FE    ; XID_Continue # Lo   [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
+ AA00..AA28    ; XID_Continue # Lo  [41] CHAM LETTER A..CHAM LETTER HA
+ AA29..AA2E    ; XID_Continue # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+ AA2F..AA30    ; XID_Continue # Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+ AA31..AA32    ; XID_Continue # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+ AA33..AA34    ; XID_Continue # Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+ AA35..AA36    ; XID_Continue # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+ AA40..AA42    ; XID_Continue # Lo   [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+ AA43          ; XID_Continue # Mn       CHAM CONSONANT SIGN FINAL NG
+ AA44..AA4B    ; XID_Continue # Lo   [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+ AA4C          ; XID_Continue # Mn       CHAM CONSONANT SIGN FINAL M
+ AA4D          ; XID_Continue # Mc       CHAM CONSONANT SIGN FINAL H
+ AA50..AA59    ; XID_Continue # Nd  [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+ AA60..AA6F    ; XID_Continue # Lo  [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
+ AA70          ; XID_Continue # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA71..AA76    ; XID_Continue # Lo   [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
+ AA7A          ; XID_Continue # Lo       MYANMAR LETTER AITON RA
+ AA7B          ; XID_Continue # Mc       MYANMAR SIGN PAO KAREN TONE
+ AA7C          ; XID_Continue # Mn       MYANMAR SIGN TAI LAING TONE-2
+ AA7D          ; XID_Continue # Mc       MYANMAR SIGN TAI LAING TONE-5
+ AA7E..AAAF    ; XID_Continue # Lo  [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
+ AAB0          ; XID_Continue # Mn       TAI VIET MAI KANG
+ AAB1          ; XID_Continue # Lo       TAI VIET VOWEL AA
+ AAB2..AAB4    ; XID_Continue # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+ AAB5..AAB6    ; XID_Continue # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
+ AAB7..AAB8    ; XID_Continue # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+ AAB9..AABD    ; XID_Continue # Lo   [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
+ AABE..AABF    ; XID_Continue # Mn   [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+ AAC0          ; XID_Continue # Lo       TAI VIET TONE MAI NUENG
+ AAC1          ; XID_Continue # Mn       TAI VIET TONE MAI THO
+ AAC2          ; XID_Continue # Lo       TAI VIET TONE MAI SONG
+ AADB..AADC    ; XID_Continue # Lo   [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
+ AADD          ; XID_Continue # Lm       TAI VIET SYMBOL SAM
+ AAE0..AAEA    ; XID_Continue # Lo  [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+ AAEB          ; XID_Continue # Mc       MEETEI MAYEK VOWEL SIGN II
+ AAEC..AAED    ; XID_Continue # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+ AAEE..AAEF    ; XID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+ AAF2          ; XID_Continue # Lo       MEETEI MAYEK ANJI
+ AAF3..AAF4    ; XID_Continue # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AAF5          ; XID_Continue # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
+ AAF6          ; XID_Continue # Mn       MEETEI MAYEK VIRAMA
+ AB01..AB06    ; XID_Continue # Lo   [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+ AB09..AB0E    ; XID_Continue # Lo   [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+ AB11..AB16    ; XID_Continue # Lo   [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+ AB20..AB26    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+ AB28..AB2E    ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+ AB30..AB5A    ; XID_Continue # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5C..AB5F    ; XID_Continue # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; XID_Continue # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; XID_Continue # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; XID_Continue # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ ABC0..ABE2    ; XID_Continue # Lo  [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+ ABE3..ABE4    ; XID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ ABE5          ; XID_Continue # Mn       MEETEI MAYEK VOWEL SIGN ANAP
+ ABE6..ABE7    ; XID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ ABE8          ; XID_Continue # Mn       MEETEI MAYEK VOWEL SIGN UNAP
+ ABE9..ABEA    ; XID_Continue # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ ABEC          ; XID_Continue # Mc       MEETEI MAYEK LUM IYEK
+ ABED          ; XID_Continue # Mn       MEETEI MAYEK APUN IYEK
+ ABF0..ABF9    ; XID_Continue # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
+ AC00..D7A3    ; XID_Continue # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ D7B0..D7C6    ; XID_Continue # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+ D7CB..D7FB    ; XID_Continue # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+ F900..FA6D    ; XID_Continue # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; XID_Continue # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; XID_Continue # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; XID_Continue # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; XID_Continue # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1E          ; XID_Continue # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
+ FB1F..FB28    ; XID_Continue # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB2A..FB36    ; XID_Continue # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; XID_Continue # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; XID_Continue # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; XID_Continue # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; XID_Continue # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; XID_Continue # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FC5D    ; XID_Continue # Lo [139] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ FC64..FD3D    ; XID_Continue # Lo [218] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; XID_Continue # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; XID_Continue # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDF9    ; XID_Continue # Lo  [10] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE SALLA ISOLATED FORM
+ FE00..FE0F    ; XID_Continue # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FE20..FE2F    ; XID_Continue # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+ FE33..FE34    ; XID_Continue # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE4D..FE4F    ; XID_Continue # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE71          ; XID_Continue # Lo       ARABIC TATWEEL WITH FATHATAN ABOVE
+ FE73          ; XID_Continue # Lo       ARABIC TAIL FRAGMENT
+ FE77          ; XID_Continue # Lo       ARABIC FATHA MEDIAL FORM
+ FE79          ; XID_Continue # Lo       ARABIC DAMMA MEDIAL FORM
+ FE7B          ; XID_Continue # Lo       ARABIC KASRA MEDIAL FORM
+ FE7D          ; XID_Continue # Lo       ARABIC SHADDA MEDIAL FORM
+ FE7F..FEFC    ; XID_Continue # Lo [126] ARABIC SUKUN MEDIAL FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF10..FF19    ; XID_Continue # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ FF21..FF3A    ; XID_Continue # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3F          ; XID_Continue # Pc       FULLWIDTH LOW LINE
+ FF41..FF5A    ; XID_Continue # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF66..FF6F    ; XID_Continue # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; XID_Continue # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; XID_Continue # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; XID_Continue # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; XID_Continue # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; XID_Continue # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; XID_Continue # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; XID_Continue # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; XID_Continue # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ 10000..1000B  ; XID_Continue # Lo  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+ 1000D..10026  ; XID_Continue # Lo  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+ 10028..1003A  ; XID_Continue # Lo  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+ 1003C..1003D  ; XID_Continue # Lo   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+ 1003F..1004D  ; XID_Continue # Lo  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+ 10050..1005D  ; XID_Continue # Lo  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+ 10080..100FA  ; XID_Continue # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+ 10140..10174  ; XID_Continue # Nl  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+ 101FD         ; XID_Continue # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+ 10280..1029C  ; XID_Continue # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
+ 102A0..102D0  ; XID_Continue # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
+ 102E0         ; XID_Continue # Mn       COPTIC EPACT THOUSANDS MARK
+ 10300..1031F  ; XID_Continue # Lo  [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+ 1032D..10340  ; XID_Continue # Lo  [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+ 10341         ; XID_Continue # Nl       GOTHIC LETTER NINETY
+ 10342..10349  ; XID_Continue # Lo   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+ 1034A         ; XID_Continue # Nl       GOTHIC LETTER NINE HUNDRED
+ 10350..10375  ; XID_Continue # Lo  [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+ 10376..1037A  ; XID_Continue # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+ 10380..1039D  ; XID_Continue # Lo  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+ 103A0..103C3  ; XID_Continue # Lo  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+ 103C8..103CF  ; XID_Continue # Lo   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+ 103D1..103D5  ; XID_Continue # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+ 10400..1044F  ; XID_Continue # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 10450..1049D  ; XID_Continue # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+ 104A0..104A9  ; XID_Continue # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+ 104B0..104D3  ; XID_Continue # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; XID_Continue # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10500..10527  ; XID_Continue # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+ 10530..10563  ; XID_Continue # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+ 10570..1057A  ; XID_Continue # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; XID_Continue # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; XID_Continue # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; XID_Continue # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; XID_Continue # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; XID_Continue # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; XID_Continue # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; XID_Continue # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10600..10736  ; XID_Continue # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+ 10740..10755  ; XID_Continue # Lo  [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+ 10760..10767  ; XID_Continue # Lo   [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785  ; XID_Continue # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; XID_Continue # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; XID_Continue # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10800..10805  ; XID_Continue # Lo   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+ 10808         ; XID_Continue # Lo       CYPRIOT SYLLABLE JO
+ 1080A..10835  ; XID_Continue # Lo  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+ 10837..10838  ; XID_Continue # Lo   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+ 1083C         ; XID_Continue # Lo       CYPRIOT SYLLABLE ZA
+ 1083F..10855  ; XID_Continue # Lo  [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+ 10860..10876  ; XID_Continue # Lo  [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+ 10880..1089E  ; XID_Continue # Lo  [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+ 108E0..108F2  ; XID_Continue # Lo  [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+ 108F4..108F5  ; XID_Continue # Lo   [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+ 10900..10915  ; XID_Continue # Lo  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+ 10920..10939  ; XID_Continue # Lo  [26] LYDIAN LETTER A..LYDIAN LETTER C
+ 10980..109B7  ; XID_Continue # Lo  [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+ 109BE..109BF  ; XID_Continue # Lo   [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+ 10A00         ; XID_Continue # Lo       KHAROSHTHI LETTER A
+ 10A01..10A03  ; XID_Continue # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+ 10A05..10A06  ; XID_Continue # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+ 10A0C..10A0F  ; XID_Continue # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+ 10A10..10A13  ; XID_Continue # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+ 10A15..10A17  ; XID_Continue # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+ 10A19..10A35  ; XID_Continue # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+ 10A38..10A3A  ; XID_Continue # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+ 10A3F         ; XID_Continue # Mn       KHAROSHTHI VIRAMA
+ 10A60..10A7C  ; XID_Continue # Lo  [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+ 10A80..10A9C  ; XID_Continue # Lo  [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+ 10AC0..10AC7  ; XID_Continue # Lo   [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+ 10AC9..10AE4  ; XID_Continue # Lo  [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+ 10AE5..10AE6  ; XID_Continue # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+ 10B00..10B35  ; XID_Continue # Lo  [54] AVESTAN LETTER A..AVESTAN LETTER HE
+ 10B40..10B55  ; XID_Continue # Lo  [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+ 10B60..10B72  ; XID_Continue # Lo  [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+ 10B80..10B91  ; XID_Continue # Lo  [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+ 10C00..10C48  ; XID_Continue # Lo  [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+ 10C80..10CB2  ; XID_Continue # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; XID_Continue # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 10D00..10D23  ; XID_Continue # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+ 10D24..10D27  ; XID_Continue # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10D30..10D39  ; XID_Continue # Nd  [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+ 10E80..10EA9  ; XID_Continue # Lo  [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EAB..10EAC  ; XID_Continue # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+ 10EB0..10EB1  ; XID_Continue # Lo   [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10EFD..10EFF  ; XID_Continue # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+ 10F00..10F1C  ; XID_Continue # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+ 10F27         ; XID_Continue # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+ 10F30..10F45  ; XID_Continue # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+ 10F46..10F50  ; XID_Continue # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+ 10F70..10F81  ; XID_Continue # Lo  [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10F82..10F85  ; XID_Continue # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+ 10FB0..10FC4  ; XID_Continue # Lo  [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FE0..10FF6  ; XID_Continue # Lo  [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+ 11000         ; XID_Continue # Mc       BRAHMI SIGN CANDRABINDU
+ 11001         ; XID_Continue # Mn       BRAHMI SIGN ANUSVARA
+ 11002         ; XID_Continue # Mc       BRAHMI SIGN VISARGA
+ 11003..11037  ; XID_Continue # Lo  [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+ 11038..11046  ; XID_Continue # Mn  [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+ 11066..1106F  ; XID_Continue # Nd  [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
+ 11070         ; XID_Continue # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
+ 11071..11072  ; XID_Continue # Lo   [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11073..11074  ; XID_Continue # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 11075         ; XID_Continue # Lo       BRAHMI LETTER OLD TAMIL LLA
+ 1107F..11081  ; XID_Continue # Mn   [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+ 11082         ; XID_Continue # Mc       KAITHI SIGN VISARGA
+ 11083..110AF  ; XID_Continue # Lo  [45] KAITHI LETTER A..KAITHI LETTER HA
+ 110B0..110B2  ; XID_Continue # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+ 110B3..110B6  ; XID_Continue # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+ 110B7..110B8  ; XID_Continue # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+ 110B9..110BA  ; XID_Continue # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+ 110C2         ; XID_Continue # Mn       KAITHI VOWEL SIGN VOCALIC R
+ 110D0..110E8  ; XID_Continue # Lo  [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+ 110F0..110F9  ; XID_Continue # Nd  [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
+ 11100..11102  ; XID_Continue # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+ 11103..11126  ; XID_Continue # Lo  [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+ 11127..1112B  ; XID_Continue # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+ 1112C         ; XID_Continue # Mc       CHAKMA VOWEL SIGN E
+ 1112D..11134  ; XID_Continue # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+ 11136..1113F  ; XID_Continue # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
+ 11144         ; XID_Continue # Lo       CHAKMA LETTER LHAA
+ 11145..11146  ; XID_Continue # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+ 11147         ; XID_Continue # Lo       CHAKMA LETTER VAA
+ 11150..11172  ; XID_Continue # Lo  [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+ 11173         ; XID_Continue # Mn       MAHAJANI SIGN NUKTA
+ 11176         ; XID_Continue # Lo       MAHAJANI LIGATURE SHRI
+ 11180..11181  ; XID_Continue # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+ 11182         ; XID_Continue # Mc       SHARADA SIGN VISARGA
+ 11183..111B2  ; XID_Continue # Lo  [48] SHARADA LETTER A..SHARADA LETTER HA
+ 111B3..111B5  ; XID_Continue # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+ 111B6..111BE  ; XID_Continue # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+ 111BF..111C0  ; XID_Continue # Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+ 111C1..111C4  ; XID_Continue # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+ 111C9..111CC  ; XID_Continue # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+ 111CE         ; XID_Continue # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
+ 111CF         ; XID_Continue # Mn       SHARADA SIGN INVERTED CANDRABINDU
+ 111D0..111D9  ; XID_Continue # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
+ 111DA         ; XID_Continue # Lo       SHARADA EKAM
+ 111DC         ; XID_Continue # Lo       SHARADA HEADSTROKE
+ 11200..11211  ; XID_Continue # Lo  [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+ 11213..1122B  ; XID_Continue # Lo  [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+ 1122C..1122E  ; XID_Continue # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+ 1122F..11231  ; XID_Continue # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+ 11232..11233  ; XID_Continue # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+ 11234         ; XID_Continue # Mn       KHOJKI SIGN ANUSVARA
+ 11235         ; XID_Continue # Mc       KHOJKI SIGN VIRAMA
+ 11236..11237  ; XID_Continue # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+ 1123E         ; XID_Continue # Mn       KHOJKI SIGN SUKUN
+ 1123F..11240  ; XID_Continue # Lo   [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11241         ; XID_Continue # Mn       KHOJKI VOWEL SIGN VOCALIC R
+ 11280..11286  ; XID_Continue # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
+ 11288         ; XID_Continue # Lo       MULTANI LETTER GHA
+ 1128A..1128D  ; XID_Continue # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
+ 1128F..1129D  ; XID_Continue # Lo  [15] MULTANI LETTER NYA..MULTANI LETTER BA
+ 1129F..112A8  ; XID_Continue # Lo  [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+ 112B0..112DE  ; XID_Continue # Lo  [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+ 112DF         ; XID_Continue # Mn       KHUDAWADI SIGN ANUSVARA
+ 112E0..112E2  ; XID_Continue # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+ 112E3..112EA  ; XID_Continue # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+ 112F0..112F9  ; XID_Continue # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+ 11300..11301  ; XID_Continue # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+ 11302..11303  ; XID_Continue # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+ 11305..1130C  ; XID_Continue # Lo   [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+ 1130F..11310  ; XID_Continue # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+ 11313..11328  ; XID_Continue # Lo  [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+ 1132A..11330  ; XID_Continue # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+ 11332..11333  ; XID_Continue # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+ 11335..11339  ; XID_Continue # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+ 1133B..1133C  ; XID_Continue # Mn   [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+ 1133D         ; XID_Continue # Lo       GRANTHA SIGN AVAGRAHA
+ 1133E..1133F  ; XID_Continue # Mc   [2] GRANTHA VOWEL SIGN AA..GRANTHA VOWEL SIGN I
+ 11340         ; XID_Continue # Mn       GRANTHA VOWEL SIGN II
+ 11341..11344  ; XID_Continue # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+ 11347..11348  ; XID_Continue # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+ 1134B..1134D  ; XID_Continue # Mc   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+ 11350         ; XID_Continue # Lo       GRANTHA OM
+ 11357         ; XID_Continue # Mc       GRANTHA AU LENGTH MARK
+ 1135D..11361  ; XID_Continue # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+ 11362..11363  ; XID_Continue # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+ 11366..1136C  ; XID_Continue # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+ 11370..11374  ; XID_Continue # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+ 11400..11434  ; XID_Continue # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+ 11435..11437  ; XID_Continue # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+ 11438..1143F  ; XID_Continue # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+ 11440..11441  ; XID_Continue # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+ 11442..11444  ; XID_Continue # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+ 11445         ; XID_Continue # Mc       NEWA SIGN VISARGA
+ 11446         ; XID_Continue # Mn       NEWA SIGN NUKTA
+ 11447..1144A  ; XID_Continue # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+ 11450..11459  ; XID_Continue # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+ 1145E         ; XID_Continue # Mn       NEWA SANDHI MARK
+ 1145F..11461  ; XID_Continue # Lo   [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+ 11480..114AF  ; XID_Continue # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+ 114B0..114B2  ; XID_Continue # Mc   [3] TIRHUTA VOWEL SIGN AA..TIRHUTA VOWEL SIGN II
+ 114B3..114B8  ; XID_Continue # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+ 114B9         ; XID_Continue # Mc       TIRHUTA VOWEL SIGN E
+ 114BA         ; XID_Continue # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BB..114BE  ; XID_Continue # Mc   [4] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN AU
+ 114BF..114C0  ; XID_Continue # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+ 114C1         ; XID_Continue # Mc       TIRHUTA SIGN VISARGA
+ 114C2..114C3  ; XID_Continue # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+ 114C4..114C5  ; XID_Continue # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+ 114C7         ; XID_Continue # Lo       TIRHUTA OM
+ 114D0..114D9  ; XID_Continue # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
+ 11580..115AE  ; XID_Continue # Lo  [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+ 115AF..115B1  ; XID_Continue # Mc   [3] SIDDHAM VOWEL SIGN AA..SIDDHAM VOWEL SIGN II
+ 115B2..115B5  ; XID_Continue # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+ 115B8..115BB  ; XID_Continue # Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+ 115BC..115BD  ; XID_Continue # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+ 115BE         ; XID_Continue # Mc       SIDDHAM SIGN VISARGA
+ 115BF..115C0  ; XID_Continue # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+ 115D8..115DB  ; XID_Continue # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+ 115DC..115DD  ; XID_Continue # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+ 11600..1162F  ; XID_Continue # Lo  [48] MODI LETTER A..MODI LETTER LLA
+ 11630..11632  ; XID_Continue # Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+ 11633..1163A  ; XID_Continue # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+ 1163B..1163C  ; XID_Continue # Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+ 1163D         ; XID_Continue # Mn       MODI SIGN ANUSVARA
+ 1163E         ; XID_Continue # Mc       MODI SIGN VISARGA
+ 1163F..11640  ; XID_Continue # Mn   [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+ 11644         ; XID_Continue # Lo       MODI SIGN HUVA
+ 11650..11659  ; XID_Continue # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
+ 11680..116AA  ; XID_Continue # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
+ 116AB         ; XID_Continue # Mn       TAKRI SIGN ANUSVARA
+ 116AC         ; XID_Continue # Mc       TAKRI SIGN VISARGA
+ 116AD         ; XID_Continue # Mn       TAKRI VOWEL SIGN AA
+ 116AE..116AF  ; XID_Continue # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+ 116B0..116B5  ; XID_Continue # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+ 116B6         ; XID_Continue # Mc       TAKRI SIGN VIRAMA
+ 116B7         ; XID_Continue # Mn       TAKRI SIGN NUKTA
+ 116B8         ; XID_Continue # Lo       TAKRI LETTER ARCHAIC KHA
+ 116C0..116C9  ; XID_Continue # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+ 11700..1171A  ; XID_Continue # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+ 1171D..1171F  ; XID_Continue # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+ 11720..11721  ; XID_Continue # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+ 11722..11725  ; XID_Continue # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+ 11726         ; XID_Continue # Mc       AHOM VOWEL SIGN E
+ 11727..1172B  ; XID_Continue # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+ 11730..11739  ; XID_Continue # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
+ 11740..11746  ; XID_Continue # Lo   [7] AHOM LETTER CA..AHOM LETTER LLA
+ 11800..1182B  ; XID_Continue # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+ 1182C..1182E  ; XID_Continue # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+ 1182F..11837  ; XID_Continue # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+ 11838         ; XID_Continue # Mc       DOGRA SIGN VISARGA
+ 11839..1183A  ; XID_Continue # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+ 118A0..118DF  ; XID_Continue # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 118E0..118E9  ; XID_Continue # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+ 118FF..11906  ; XID_Continue # Lo   [8] WARANG CITI OM..DIVES AKURU LETTER E
+ 11909         ; XID_Continue # Lo       DIVES AKURU LETTER O
+ 1190C..11913  ; XID_Continue # Lo   [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916  ; XID_Continue # Lo   [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F  ; XID_Continue # Lo  [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 11930..11935  ; XID_Continue # Mc   [6] DIVES AKURU VOWEL SIGN AA..DIVES AKURU VOWEL SIGN E
+ 11937..11938  ; XID_Continue # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+ 1193B..1193C  ; XID_Continue # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 1193D         ; XID_Continue # Mc       DIVES AKURU SIGN HALANTA
+ 1193E         ; XID_Continue # Mn       DIVES AKURU VIRAMA
+ 1193F         ; XID_Continue # Lo       DIVES AKURU PREFIXED NASAL SIGN
+ 11940         ; XID_Continue # Mc       DIVES AKURU MEDIAL YA
+ 11941         ; XID_Continue # Lo       DIVES AKURU INITIAL RA
+ 11942         ; XID_Continue # Mc       DIVES AKURU MEDIAL RA
+ 11943         ; XID_Continue # Mn       DIVES AKURU SIGN NUKTA
+ 11950..11959  ; XID_Continue # Nd  [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
+ 119A0..119A7  ; XID_Continue # Lo   [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+ 119AA..119D0  ; XID_Continue # Lo  [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+ 119D1..119D3  ; XID_Continue # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+ 119D4..119D7  ; XID_Continue # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+ 119DA..119DB  ; XID_Continue # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+ 119DC..119DF  ; XID_Continue # Mc   [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+ 119E0         ; XID_Continue # Mn       NANDINAGARI SIGN VIRAMA
+ 119E1         ; XID_Continue # Lo       NANDINAGARI SIGN AVAGRAHA
+ 119E3         ; XID_Continue # Lo       NANDINAGARI HEADSTROKE
+ 119E4         ; XID_Continue # Mc       NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+ 11A00         ; XID_Continue # Lo       ZANABAZAR SQUARE LETTER A
+ 11A01..11A0A  ; XID_Continue # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+ 11A0B..11A32  ; XID_Continue # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+ 11A33..11A38  ; XID_Continue # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+ 11A39         ; XID_Continue # Mc       ZANABAZAR SQUARE SIGN VISARGA
+ 11A3A         ; XID_Continue # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+ 11A3B..11A3E  ; XID_Continue # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+ 11A47         ; XID_Continue # Mn       ZANABAZAR SQUARE SUBJOINER
+ 11A50         ; XID_Continue # Lo       SOYOMBO LETTER A
+ 11A51..11A56  ; XID_Continue # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+ 11A57..11A58  ; XID_Continue # Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+ 11A59..11A5B  ; XID_Continue # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+ 11A5C..11A89  ; XID_Continue # Lo  [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+ 11A8A..11A96  ; XID_Continue # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+ 11A97         ; XID_Continue # Mc       SOYOMBO SIGN VISARGA
+ 11A98..11A99  ; XID_Continue # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+ 11A9D         ; XID_Continue # Lo       SOYOMBO MARK PLUTA
+ 11AB0..11AF8  ; XID_Continue # Lo  [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+ 11C00..11C08  ; XID_Continue # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+ 11C0A..11C2E  ; XID_Continue # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+ 11C2F         ; XID_Continue # Mc       BHAIKSUKI VOWEL SIGN AA
+ 11C30..11C36  ; XID_Continue # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+ 11C38..11C3D  ; XID_Continue # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+ 11C3E         ; XID_Continue # Mc       BHAIKSUKI SIGN VISARGA
+ 11C3F         ; XID_Continue # Mn       BHAIKSUKI SIGN VIRAMA
+ 11C40         ; XID_Continue # Lo       BHAIKSUKI SIGN AVAGRAHA
+ 11C50..11C59  ; XID_Continue # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+ 11C72..11C8F  ; XID_Continue # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+ 11C92..11CA7  ; XID_Continue # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+ 11CA9         ; XID_Continue # Mc       MARCHEN SUBJOINED LETTER YA
+ 11CAA..11CB0  ; XID_Continue # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+ 11CB1         ; XID_Continue # Mc       MARCHEN VOWEL SIGN I
+ 11CB2..11CB3  ; XID_Continue # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+ 11CB4         ; XID_Continue # Mc       MARCHEN VOWEL SIGN O
+ 11CB5..11CB6  ; XID_Continue # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+ 11D00..11D06  ; XID_Continue # Lo   [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+ 11D08..11D09  ; XID_Continue # Lo   [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+ 11D0B..11D30  ; XID_Continue # Lo  [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+ 11D31..11D36  ; XID_Continue # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+ 11D3A         ; XID_Continue # Mn       MASARAM GONDI VOWEL SIGN E
+ 11D3C..11D3D  ; XID_Continue # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+ 11D3F..11D45  ; XID_Continue # Mn   [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+ 11D46         ; XID_Continue # Lo       MASARAM GONDI REPHA
+ 11D47         ; XID_Continue # Mn       MASARAM GONDI RA-KARA
+ 11D50..11D59  ; XID_Continue # Nd  [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
+ 11D60..11D65  ; XID_Continue # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+ 11D67..11D68  ; XID_Continue # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+ 11D6A..11D89  ; XID_Continue # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+ 11D8A..11D8E  ; XID_Continue # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+ 11D90..11D91  ; XID_Continue # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+ 11D93..11D94  ; XID_Continue # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+ 11D95         ; XID_Continue # Mn       GUNJALA GONDI SIGN ANUSVARA
+ 11D96         ; XID_Continue # Mc       GUNJALA GONDI SIGN VISARGA
+ 11D97         ; XID_Continue # Mn       GUNJALA GONDI VIRAMA
+ 11D98         ; XID_Continue # Lo       GUNJALA GONDI OM
+ 11DA0..11DA9  ; XID_Continue # Nd  [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
+ 11EE0..11EF2  ; XID_Continue # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+ 11EF3..11EF4  ; XID_Continue # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+ 11EF5..11EF6  ; XID_Continue # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+ 11F00..11F01  ; XID_Continue # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F02         ; XID_Continue # Lo       KAWI SIGN REPHA
+ 11F03         ; XID_Continue # Mc       KAWI SIGN VISARGA
+ 11F04..11F10  ; XID_Continue # Lo  [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33  ; XID_Continue # Lo  [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11F34..11F35  ; XID_Continue # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+ 11F36..11F3A  ; XID_Continue # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F3E..11F3F  ; XID_Continue # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+ 11F40         ; XID_Continue # Mn       KAWI VOWEL SIGN EU
+ 11F41         ; XID_Continue # Mc       KAWI SIGN KILLER
+ 11F42         ; XID_Continue # Mn       KAWI CONJOINER
+ 11F50..11F59  ; XID_Continue # Nd  [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+ 11FB0         ; XID_Continue # Lo       LISU LETTER YHA
+ 12000..12399  ; XID_Continue # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+ 12400..1246E  ; XID_Continue # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+ 12480..12543  ; XID_Continue # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+ 12F90..12FF0  ; XID_Continue # Lo  [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+ 13000..1342F  ; XID_Continue # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+ 13440         ; XID_Continue # Mn       EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+ 13441..13446  ; XID_Continue # Lo   [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+ 13447..13455  ; XID_Continue # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+ 14400..14646  ; XID_Continue # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+ 16800..16A38  ; XID_Continue # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+ 16A40..16A5E  ; XID_Continue # Lo  [31] MRO LETTER TA..MRO LETTER TEK
+ 16A60..16A69  ; XID_Continue # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
+ 16A70..16ABE  ; XID_Continue # Lo  [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AC0..16AC9  ; XID_Continue # Nd  [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
+ 16AD0..16AED  ; XID_Continue # Lo  [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+ 16AF0..16AF4  ; XID_Continue # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+ 16B00..16B2F  ; XID_Continue # Lo  [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+ 16B30..16B36  ; XID_Continue # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+ 16B40..16B43  ; XID_Continue # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16B50..16B59  ; XID_Continue # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
+ 16B63..16B77  ; XID_Continue # Lo  [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+ 16B7D..16B8F  ; XID_Continue # Lo  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+ 16E40..16E7F  ; XID_Continue # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 16F00..16F4A  ; XID_Continue # Lo  [75] MIAO LETTER PA..MIAO LETTER RTE
+ 16F4F         ; XID_Continue # Mn       MIAO SIGN CONSONANT MODIFIER BAR
+ 16F50         ; XID_Continue # Lo       MIAO LETTER NASALIZATION
+ 16F51..16F87  ; XID_Continue # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+ 16F8F..16F92  ; XID_Continue # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+ 16F93..16F9F  ; XID_Continue # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; XID_Continue # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE3         ; XID_Continue # Lm       OLD CHINESE ITERATION MARK
+ 16FE4         ; XID_Continue # Mn       KHITAN SMALL SCRIPT FILLER
+ 16FF0..16FF1  ; XID_Continue # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+ 17000..187F7  ; XID_Continue # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
+ 18800..18CD5  ; XID_Continue # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
+ 18D00..18D08  ; XID_Continue # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3  ; XID_Continue # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; XID_Continue # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; XID_Continue # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1B000..1B122  ; XID_Continue # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU
+ 1B132         ; XID_Continue # Lo       HIRAGANA LETTER SMALL KO
+ 1B150..1B152  ; XID_Continue # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155         ; XID_Continue # Lo       KATAKANA LETTER SMALL KO
+ 1B164..1B167  ; XID_Continue # Lo   [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+ 1B170..1B2FB  ; XID_Continue # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
+ 1BC00..1BC6A  ; XID_Continue # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+ 1BC70..1BC7C  ; XID_Continue # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+ 1BC80..1BC88  ; XID_Continue # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+ 1BC90..1BC99  ; XID_Continue # Lo  [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+ 1BC9D..1BC9E  ; XID_Continue # Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+ 1CF00..1CF2D  ; XID_Continue # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+ 1CF30..1CF46  ; XID_Continue # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+ 1D165..1D166  ; XID_Continue # Mc   [2] MUSICAL SYMBOL COMBINING STEM..MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+ 1D167..1D169  ; XID_Continue # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+ 1D16D..1D172  ; XID_Continue # Mc   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
+ 1D17B..1D182  ; XID_Continue # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+ 1D185..1D18B  ; XID_Continue # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+ 1D1AA..1D1AD  ; XID_Continue # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+ 1D242..1D244  ; XID_Continue # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+ 1D400..1D454  ; XID_Continue # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; XID_Continue # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; XID_Continue # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; XID_Continue # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; XID_Continue # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; XID_Continue # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; XID_Continue # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; XID_Continue # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; XID_Continue # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; XID_Continue # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; XID_Continue # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; XID_Continue # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; XID_Continue # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; XID_Continue # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; XID_Continue # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; XID_Continue # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; XID_Continue # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; XID_Continue # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; XID_Continue # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; XID_Continue # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C2..1D6DA  ; XID_Continue # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DC..1D6FA  ; XID_Continue # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FC..1D714  ; XID_Continue # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D716..1D734  ; XID_Continue # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D736..1D74E  ; XID_Continue # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D750..1D76E  ; XID_Continue # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D770..1D788  ; XID_Continue # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D78A..1D7A8  ; XID_Continue # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7AA..1D7C2  ; XID_Continue # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C4..1D7CB  ; XID_Continue # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; XID_Continue # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1DA00..1DA36  ; XID_Continue # Mn  [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+ 1DA3B..1DA6C  ; XID_Continue # Mn  [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+ 1DA75         ; XID_Continue # Mn       SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+ 1DA84         ; XID_Continue # Mn       SIGNWRITING LOCATION HEAD NECK
+ 1DA9B..1DA9F  ; XID_Continue # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+ 1DAA1..1DAAF  ; XID_Continue # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+ 1DF00..1DF09  ; XID_Continue # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A         ; XID_Continue # Lo       LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E  ; XID_Continue # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; XID_Continue # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E000..1E006  ; XID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+ 1E008..1E018  ; XID_Continue # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+ 1E01B..1E021  ; XID_Continue # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+ 1E023..1E024  ; XID_Continue # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+ 1E026..1E02A  ; XID_Continue # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E030..1E06D  ; XID_Continue # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E08F         ; XID_Continue # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 1E100..1E12C  ; XID_Continue # Lo  [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+ 1E130..1E136  ; XID_Continue # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+ 1E137..1E13D  ; XID_Continue # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E140..1E149  ; XID_Continue # Nd  [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
+ 1E14E         ; XID_Continue # Lo       NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+ 1E290..1E2AD  ; XID_Continue # Lo  [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2AE         ; XID_Continue # Mn       TOTO SIGN RISING TONE
+ 1E2C0..1E2EB  ; XID_Continue # Lo  [44] WANCHO LETTER AA..WANCHO LETTER YIH
+ 1E2EC..1E2EF  ; XID_Continue # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
+ 1E2F0..1E2F9  ; XID_Continue # Nd  [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
+ 1E4D0..1E4EA  ; XID_Continue # Lo  [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB         ; XID_Continue # Lm       NAG MUNDARI SIGN OJOD
+ 1E4EC..1E4EF  ; XID_Continue # Mn   [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+ 1E4F0..1E4F9  ; XID_Continue # Nd  [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+ 1E7E0..1E7E6  ; XID_Continue # Lo   [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB  ; XID_Continue # Lo   [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE  ; XID_Continue # Lo   [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE  ; XID_Continue # Lo  [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+ 1E800..1E8C4  ; XID_Continue # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+ 1E8D0..1E8D6  ; XID_Continue # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+ 1E900..1E943  ; XID_Continue # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1E944..1E94A  ; XID_Continue # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+ 1E94B         ; XID_Continue # Lm       ADLAM NASALIZATION MARK
+ 1E950..1E959  ; XID_Continue # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+ 1EE00..1EE03  ; XID_Continue # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; XID_Continue # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; XID_Continue # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; XID_Continue # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; XID_Continue # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; XID_Continue # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; XID_Continue # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; XID_Continue # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; XID_Continue # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; XID_Continue # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; XID_Continue # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; XID_Continue # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; XID_Continue # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; XID_Continue # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; XID_Continue # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; XID_Continue # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; XID_Continue # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; XID_Continue # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; XID_Continue # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; XID_Continue # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; XID_Continue # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; XID_Continue # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; XID_Continue # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; XID_Continue # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1FBF0..1FBF9  ; XID_Continue # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+ 20000..2A6DF  ; XID_Continue # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B739  ; XID_Continue # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
+ 2B740..2B81D  ; XID_Continue # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1  ; XID_Continue # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0  ; XID_Continue # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 2F800..2FA1D  ; XID_Continue # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; XID_Continue # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; XID_Continue # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
+ E0100..E01EF  ; XID_Continue # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ 
+ # Total code points: 139463
+ 
+ # ================================================
+ 
+ # Derived Property: Default_Ignorable_Code_Point
+ #  Generated from
+ #    Other_Default_Ignorable_Code_Point
+ #  + Cf (Format characters)
+ #  + Variation_Selector
+ #  - White_Space
+ #  - FFF9..FFFB (Interlinear annotation format characters)
+ #  - 13430..13440 (Egyptian hieroglyph format characters)
+ #  - Prepended_Concatenation_Mark (Exceptional format characters that should be visible)
+ 
+ 00AD          ; Default_Ignorable_Code_Point # Cf       SOFT HYPHEN
+ 034F          ; Default_Ignorable_Code_Point # Mn       COMBINING GRAPHEME JOINER
+ 061C          ; Default_Ignorable_Code_Point # Cf       ARABIC LETTER MARK
+ 115F..1160    ; Default_Ignorable_Code_Point # Lo   [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
+ 17B4..17B5    ; Default_Ignorable_Code_Point # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 180B..180D    ; Default_Ignorable_Code_Point # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180E          ; Default_Ignorable_Code_Point # Cf       MONGOLIAN VOWEL SEPARATOR
+ 180F          ; Default_Ignorable_Code_Point # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 200B..200F    ; Default_Ignorable_Code_Point # Cf   [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ 202A..202E    ; Default_Ignorable_Code_Point # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ 2060..2064    ; Default_Ignorable_Code_Point # Cf   [5] WORD JOINER..INVISIBLE PLUS
+ 2065          ; Default_Ignorable_Code_Point # Cn       <reserved-2065>
+ 2066..206F    ; Default_Ignorable_Code_Point # Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+ 3164          ; Default_Ignorable_Code_Point # Lo       HANGUL FILLER
+ FE00..FE0F    ; Default_Ignorable_Code_Point # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FEFF          ; Default_Ignorable_Code_Point # Cf       ZERO WIDTH NO-BREAK SPACE
+ FFA0          ; Default_Ignorable_Code_Point # Lo       HALFWIDTH HANGUL FILLER
+ FFF0..FFF8    ; Default_Ignorable_Code_Point # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
+ 1BCA0..1BCA3  ; Default_Ignorable_Code_Point # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ 1D173..1D17A  ; Default_Ignorable_Code_Point # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ E0000         ; Default_Ignorable_Code_Point # Cn       <reserved-E0000>
+ E0001         ; Default_Ignorable_Code_Point # Cf       LANGUAGE TAG
+ E0002..E001F  ; Default_Ignorable_Code_Point # Cn  [30] <reserved-E0002>..<reserved-E001F>
+ E0020..E007F  ; Default_Ignorable_Code_Point # Cf  [96] TAG SPACE..CANCEL TAG
+ E0080..E00FF  ; Default_Ignorable_Code_Point # Cn [128] <reserved-E0080>..<reserved-E00FF>
+ E0100..E01EF  ; Default_Ignorable_Code_Point # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ E01F0..E0FFF  ; Default_Ignorable_Code_Point # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+ 
+ # Total code points: 4174
+ 
+ # ================================================
+ 
+ # Derived Property: Grapheme_Extend
+ #  Generated from: Me + Mn + Other_Grapheme_Extend
+ #  Note: depending on an application's interpretation of Co (private use),
+ #  they may be either in Grapheme_Base, or in Grapheme_Extend, or in neither.
+ 
+ 0300..036F    ; Grapheme_Extend # Mn [112] COMBINING GRAVE ACCENT..COMBINING LATIN SMALL LETTER X
+ 0483..0487    ; Grapheme_Extend # Mn   [5] COMBINING CYRILLIC TITLO..COMBINING CYRILLIC POKRYTIE
+ 0488..0489    ; Grapheme_Extend # Me   [2] COMBINING CYRILLIC HUNDRED THOUSANDS SIGN..COMBINING CYRILLIC MILLIONS SIGN
+ 0591..05BD    ; Grapheme_Extend # Mn  [45] HEBREW ACCENT ETNAHTA..HEBREW POINT METEG
+ 05BF          ; Grapheme_Extend # Mn       HEBREW POINT RAFE
+ 05C1..05C2    ; Grapheme_Extend # Mn   [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+ 05C4..05C5    ; Grapheme_Extend # Mn   [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+ 05C7          ; Grapheme_Extend # Mn       HEBREW POINT QAMATS QATAN
+ 0610..061A    ; Grapheme_Extend # Mn  [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+ 064B..065F    ; Grapheme_Extend # Mn  [21] ARABIC FATHATAN..ARABIC WAVY HAMZA BELOW
+ 0670          ; Grapheme_Extend # Mn       ARABIC LETTER SUPERSCRIPT ALEF
+ 06D6..06DC    ; Grapheme_Extend # Mn   [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+ 06DF..06E4    ; Grapheme_Extend # Mn   [6] ARABIC SMALL HIGH ROUNDED ZERO..ARABIC SMALL HIGH MADDA
+ 06E7..06E8    ; Grapheme_Extend # Mn   [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+ 06EA..06ED    ; Grapheme_Extend # Mn   [4] ARABIC EMPTY CENTRE LOW STOP..ARABIC SMALL LOW MEEM
+ 0711          ; Grapheme_Extend # Mn       SYRIAC LETTER SUPERSCRIPT ALAPH
+ 0730..074A    ; Grapheme_Extend # Mn  [27] SYRIAC PTHAHA ABOVE..SYRIAC BARREKH
+ 07A6..07B0    ; Grapheme_Extend # Mn  [11] THAANA ABAFILI..THAANA SUKUN
+ 07EB..07F3    ; Grapheme_Extend # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
+ 07FD          ; Grapheme_Extend # Mn       NKO DANTAYALAN
+ 0816..0819    ; Grapheme_Extend # Mn   [4] SAMARITAN MARK IN..SAMARITAN MARK DAGESH
+ 081B..0823    ; Grapheme_Extend # Mn   [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+ 0825..0827    ; Grapheme_Extend # Mn   [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+ 0829..082D    ; Grapheme_Extend # Mn   [5] SAMARITAN VOWEL SIGN LONG I..SAMARITAN MARK NEQUDAA
+ 0859..085B    ; Grapheme_Extend # Mn   [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
+ 0898..089F    ; Grapheme_Extend # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+ 08CA..08E1    ; Grapheme_Extend # Mn  [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
+ 08E3..0902    ; Grapheme_Extend # Mn  [32] ARABIC TURNED DAMMA BELOW..DEVANAGARI SIGN ANUSVARA
+ 093A          ; Grapheme_Extend # Mn       DEVANAGARI VOWEL SIGN OE
+ 093C          ; Grapheme_Extend # Mn       DEVANAGARI SIGN NUKTA
+ 0941..0948    ; Grapheme_Extend # Mn   [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+ 094D          ; Grapheme_Extend # Mn       DEVANAGARI SIGN VIRAMA
+ 0951..0957    ; Grapheme_Extend # Mn   [7] DEVANAGARI STRESS SIGN UDATTA..DEVANAGARI VOWEL SIGN UUE
+ 0962..0963    ; Grapheme_Extend # Mn   [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+ 0981          ; Grapheme_Extend # Mn       BENGALI SIGN CANDRABINDU
+ 09BC          ; Grapheme_Extend # Mn       BENGALI SIGN NUKTA
+ 09BE          ; Grapheme_Extend # Mc       BENGALI VOWEL SIGN AA
+ 09C1..09C4    ; Grapheme_Extend # Mn   [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+ 09CD          ; Grapheme_Extend # Mn       BENGALI SIGN VIRAMA
+ 09D7          ; Grapheme_Extend # Mc       BENGALI AU LENGTH MARK
+ 09E2..09E3    ; Grapheme_Extend # Mn   [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+ 09FE          ; Grapheme_Extend # Mn       BENGALI SANDHI MARK
+ 0A01..0A02    ; Grapheme_Extend # Mn   [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+ 0A3C          ; Grapheme_Extend # Mn       GURMUKHI SIGN NUKTA
+ 0A41..0A42    ; Grapheme_Extend # Mn   [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+ 0A47..0A48    ; Grapheme_Extend # Mn   [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+ 0A4B..0A4D    ; Grapheme_Extend # Mn   [3] GURMUKHI VOWEL SIGN OO..GURMUKHI SIGN VIRAMA
+ 0A51          ; Grapheme_Extend # Mn       GURMUKHI SIGN UDAAT
+ 0A70..0A71    ; Grapheme_Extend # Mn   [2] GURMUKHI TIPPI..GURMUKHI ADDAK
+ 0A75          ; Grapheme_Extend # Mn       GURMUKHI SIGN YAKASH
+ 0A81..0A82    ; Grapheme_Extend # Mn   [2] GUJARATI SIGN CANDRABINDU..GUJARATI SIGN ANUSVARA
+ 0ABC          ; Grapheme_Extend # Mn       GUJARATI SIGN NUKTA
+ 0AC1..0AC5    ; Grapheme_Extend # Mn   [5] GUJARATI VOWEL SIGN U..GUJARATI VOWEL SIGN CANDRA E
+ 0AC7..0AC8    ; Grapheme_Extend # Mn   [2] GUJARATI VOWEL SIGN E..GUJARATI VOWEL SIGN AI
+ 0ACD          ; Grapheme_Extend # Mn       GUJARATI SIGN VIRAMA
+ 0AE2..0AE3    ; Grapheme_Extend # Mn   [2] GUJARATI VOWEL SIGN VOCALIC L..GUJARATI VOWEL SIGN VOCALIC LL
+ 0AFA..0AFF    ; Grapheme_Extend # Mn   [6] GUJARATI SIGN SUKUN..GUJARATI SIGN TWO-CIRCLE NUKTA ABOVE
+ 0B01          ; Grapheme_Extend # Mn       ORIYA SIGN CANDRABINDU
+ 0B3C          ; Grapheme_Extend # Mn       ORIYA SIGN NUKTA
+ 0B3E          ; Grapheme_Extend # Mc       ORIYA VOWEL SIGN AA
+ 0B3F          ; Grapheme_Extend # Mn       ORIYA VOWEL SIGN I
+ 0B41..0B44    ; Grapheme_Extend # Mn   [4] ORIYA VOWEL SIGN U..ORIYA VOWEL SIGN VOCALIC RR
+ 0B4D          ; Grapheme_Extend # Mn       ORIYA SIGN VIRAMA
+ 0B55..0B56    ; Grapheme_Extend # Mn   [2] ORIYA SIGN OVERLINE..ORIYA AI LENGTH MARK
+ 0B57          ; Grapheme_Extend # Mc       ORIYA AU LENGTH MARK
+ 0B62..0B63    ; Grapheme_Extend # Mn   [2] ORIYA VOWEL SIGN VOCALIC L..ORIYA VOWEL SIGN VOCALIC LL
+ 0B82          ; Grapheme_Extend # Mn       TAMIL SIGN ANUSVARA
+ 0BBE          ; Grapheme_Extend # Mc       TAMIL VOWEL SIGN AA
+ 0BC0          ; Grapheme_Extend # Mn       TAMIL VOWEL SIGN II
+ 0BCD          ; Grapheme_Extend # Mn       TAMIL SIGN VIRAMA
+ 0BD7          ; Grapheme_Extend # Mc       TAMIL AU LENGTH MARK
+ 0C00          ; Grapheme_Extend # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
+ 0C04          ; Grapheme_Extend # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
+ 0C3C          ; Grapheme_Extend # Mn       TELUGU SIGN NUKTA
+ 0C3E..0C40    ; Grapheme_Extend # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
+ 0C46..0C48    ; Grapheme_Extend # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
+ 0C4A..0C4D    ; Grapheme_Extend # Mn   [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
+ 0C55..0C56    ; Grapheme_Extend # Mn   [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
+ 0C62..0C63    ; Grapheme_Extend # Mn   [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
+ 0C81          ; Grapheme_Extend # Mn       KANNADA SIGN CANDRABINDU
+ 0CBC          ; Grapheme_Extend # Mn       KANNADA SIGN NUKTA
+ 0CBF          ; Grapheme_Extend # Mn       KANNADA VOWEL SIGN I
+ 0CC2          ; Grapheme_Extend # Mc       KANNADA VOWEL SIGN UU
+ 0CC6          ; Grapheme_Extend # Mn       KANNADA VOWEL SIGN E
+ 0CCC..0CCD    ; Grapheme_Extend # Mn   [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
+ 0CD5..0CD6    ; Grapheme_Extend # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+ 0CE2..0CE3    ; Grapheme_Extend # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+ 0D00..0D01    ; Grapheme_Extend # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
+ 0D3B..0D3C    ; Grapheme_Extend # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+ 0D3E          ; Grapheme_Extend # Mc       MALAYALAM VOWEL SIGN AA
+ 0D41..0D44    ; Grapheme_Extend # Mn   [4] MALAYALAM VOWEL SIGN U..MALAYALAM VOWEL SIGN VOCALIC RR
+ 0D4D          ; Grapheme_Extend # Mn       MALAYALAM SIGN VIRAMA
+ 0D57          ; Grapheme_Extend # Mc       MALAYALAM AU LENGTH MARK
+ 0D62..0D63    ; Grapheme_Extend # Mn   [2] MALAYALAM VOWEL SIGN VOCALIC L..MALAYALAM VOWEL SIGN VOCALIC LL
+ 0D81          ; Grapheme_Extend # Mn       SINHALA SIGN CANDRABINDU
+ 0DCA          ; Grapheme_Extend # Mn       SINHALA SIGN AL-LAKUNA
+ 0DCF          ; Grapheme_Extend # Mc       SINHALA VOWEL SIGN AELA-PILLA
+ 0DD2..0DD4    ; Grapheme_Extend # Mn   [3] SINHALA VOWEL SIGN KETTI IS-PILLA..SINHALA VOWEL SIGN KETTI PAA-PILLA
+ 0DD6          ; Grapheme_Extend # Mn       SINHALA VOWEL SIGN DIGA PAA-PILLA
+ 0DDF          ; Grapheme_Extend # Mc       SINHALA VOWEL SIGN GAYANUKITTA
+ 0E31          ; Grapheme_Extend # Mn       THAI CHARACTER MAI HAN-AKAT
+ 0E34..0E3A    ; Grapheme_Extend # Mn   [7] THAI CHARACTER SARA I..THAI CHARACTER PHINTHU
+ 0E47..0E4E    ; Grapheme_Extend # Mn   [8] THAI CHARACTER MAITAIKHU..THAI CHARACTER YAMAKKAN
+ 0EB1          ; Grapheme_Extend # Mn       LAO VOWEL SIGN MAI KAN
+ 0EB4..0EBC    ; Grapheme_Extend # Mn   [9] LAO VOWEL SIGN I..LAO SEMIVOWEL SIGN LO
+ 0EC8..0ECE    ; Grapheme_Extend # Mn   [7] LAO TONE MAI EK..LAO YAMAKKAN
+ 0F18..0F19    ; Grapheme_Extend # Mn   [2] TIBETAN ASTROLOGICAL SIGN -KHYUD PA..TIBETAN ASTROLOGICAL SIGN SDONG TSHUGS
+ 0F35          ; Grapheme_Extend # Mn       TIBETAN MARK NGAS BZUNG NYI ZLA
+ 0F37          ; Grapheme_Extend # Mn       TIBETAN MARK NGAS BZUNG SGOR RTAGS
+ 0F39          ; Grapheme_Extend # Mn       TIBETAN MARK TSA -PHRU
+ 0F71..0F7E    ; Grapheme_Extend # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
+ 0F80..0F84    ; Grapheme_Extend # Mn   [5] TIBETAN VOWEL SIGN REVERSED I..TIBETAN MARK HALANTA
+ 0F86..0F87    ; Grapheme_Extend # Mn   [2] TIBETAN SIGN LCI RTAGS..TIBETAN SIGN YANG RTAGS
+ 0F8D..0F97    ; Grapheme_Extend # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
+ 0F99..0FBC    ; Grapheme_Extend # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
+ 0FC6          ; Grapheme_Extend # Mn       TIBETAN SYMBOL PADMA GDAN
+ 102D..1030    ; Grapheme_Extend # Mn   [4] MYANMAR VOWEL SIGN I..MYANMAR VOWEL SIGN UU
+ 1032..1037    ; Grapheme_Extend # Mn   [6] MYANMAR VOWEL SIGN AI..MYANMAR SIGN DOT BELOW
+ 1039..103A    ; Grapheme_Extend # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+ 103D..103E    ; Grapheme_Extend # Mn   [2] MYANMAR CONSONANT SIGN MEDIAL WA..MYANMAR CONSONANT SIGN MEDIAL HA
+ 1058..1059    ; Grapheme_Extend # Mn   [2] MYANMAR VOWEL SIGN VOCALIC L..MYANMAR VOWEL SIGN VOCALIC LL
+ 105E..1060    ; Grapheme_Extend # Mn   [3] MYANMAR CONSONANT SIGN MON MEDIAL NA..MYANMAR CONSONANT SIGN MON MEDIAL LA
+ 1071..1074    ; Grapheme_Extend # Mn   [4] MYANMAR VOWEL SIGN GEBA KAREN I..MYANMAR VOWEL SIGN KAYAH EE
+ 1082          ; Grapheme_Extend # Mn       MYANMAR CONSONANT SIGN SHAN MEDIAL WA
+ 1085..1086    ; Grapheme_Extend # Mn   [2] MYANMAR VOWEL SIGN SHAN E ABOVE..MYANMAR VOWEL SIGN SHAN FINAL Y
+ 108D          ; Grapheme_Extend # Mn       MYANMAR SIGN SHAN COUNCIL EMPHATIC TONE
+ 109D          ; Grapheme_Extend # Mn       MYANMAR VOWEL SIGN AITON AI
+ 135D..135F    ; Grapheme_Extend # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+ 1712..1714    ; Grapheme_Extend # Mn   [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+ 1732..1733    ; Grapheme_Extend # Mn   [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
+ 1752..1753    ; Grapheme_Extend # Mn   [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
+ 1772..1773    ; Grapheme_Extend # Mn   [2] TAGBANWA VOWEL SIGN I..TAGBANWA VOWEL SIGN U
+ 17B4..17B5    ; Grapheme_Extend # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 17B7..17BD    ; Grapheme_Extend # Mn   [7] KHMER VOWEL SIGN I..KHMER VOWEL SIGN UA
+ 17C6          ; Grapheme_Extend # Mn       KHMER SIGN NIKAHIT
+ 17C9..17D3    ; Grapheme_Extend # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
+ 17DD          ; Grapheme_Extend # Mn       KHMER SIGN ATTHACAN
+ 180B..180D    ; Grapheme_Extend # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180F          ; Grapheme_Extend # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 1885..1886    ; Grapheme_Extend # Mn   [2] MONGOLIAN LETTER ALI GALI BALUDA..MONGOLIAN LETTER ALI GALI THREE BALUDA
+ 18A9          ; Grapheme_Extend # Mn       MONGOLIAN LETTER ALI GALI DAGALGA
+ 1920..1922    ; Grapheme_Extend # Mn   [3] LIMBU VOWEL SIGN A..LIMBU VOWEL SIGN U
+ 1927..1928    ; Grapheme_Extend # Mn   [2] LIMBU VOWEL SIGN E..LIMBU VOWEL SIGN O
+ 1932          ; Grapheme_Extend # Mn       LIMBU SMALL LETTER ANUSVARA
+ 1939..193B    ; Grapheme_Extend # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
+ 1A17..1A18    ; Grapheme_Extend # Mn   [2] BUGINESE VOWEL SIGN I..BUGINESE VOWEL SIGN U
+ 1A1B          ; Grapheme_Extend # Mn       BUGINESE VOWEL SIGN AE
+ 1A56          ; Grapheme_Extend # Mn       TAI THAM CONSONANT SIGN MEDIAL LA
+ 1A58..1A5E    ; Grapheme_Extend # Mn   [7] TAI THAM SIGN MAI KANG LAI..TAI THAM CONSONANT SIGN SA
+ 1A60          ; Grapheme_Extend # Mn       TAI THAM SIGN SAKOT
+ 1A62          ; Grapheme_Extend # Mn       TAI THAM VOWEL SIGN MAI SAT
+ 1A65..1A6C    ; Grapheme_Extend # Mn   [8] TAI THAM VOWEL SIGN I..TAI THAM VOWEL SIGN OA BELOW
+ 1A73..1A7C    ; Grapheme_Extend # Mn  [10] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN KHUEN-LUE KARAN
+ 1A7F          ; Grapheme_Extend # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
+ 1AB0..1ABD    ; Grapheme_Extend # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+ 1ABE          ; Grapheme_Extend # Me       COMBINING PARENTHESES OVERLAY
+ 1ABF..1ACE    ; Grapheme_Extend # Mn  [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
+ 1B00..1B03    ; Grapheme_Extend # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
+ 1B34          ; Grapheme_Extend # Mn       BALINESE SIGN REREKAN
+ 1B35          ; Grapheme_Extend # Mc       BALINESE VOWEL SIGN TEDUNG
+ 1B36..1B3A    ; Grapheme_Extend # Mn   [5] BALINESE VOWEL SIGN ULU..BALINESE VOWEL SIGN RA REPA
+ 1B3C          ; Grapheme_Extend # Mn       BALINESE VOWEL SIGN LA LENGA
+ 1B42          ; Grapheme_Extend # Mn       BALINESE VOWEL SIGN PEPET
+ 1B6B..1B73    ; Grapheme_Extend # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
+ 1B80..1B81    ; Grapheme_Extend # Mn   [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
+ 1BA2..1BA5    ; Grapheme_Extend # Mn   [4] SUNDANESE CONSONANT SIGN PANYAKRA..SUNDANESE VOWEL SIGN PANYUKU
+ 1BA8..1BA9    ; Grapheme_Extend # Mn   [2] SUNDANESE VOWEL SIGN PAMEPET..SUNDANESE VOWEL SIGN PANEULEUNG
+ 1BAB..1BAD    ; Grapheme_Extend # Mn   [3] SUNDANESE SIGN VIRAMA..SUNDANESE CONSONANT SIGN PASANGAN WA
+ 1BE6          ; Grapheme_Extend # Mn       BATAK SIGN TOMPI
+ 1BE8..1BE9    ; Grapheme_Extend # Mn   [2] BATAK VOWEL SIGN PAKPAK E..BATAK VOWEL SIGN EE
+ 1BED          ; Grapheme_Extend # Mn       BATAK VOWEL SIGN KARO O
+ 1BEF..1BF1    ; Grapheme_Extend # Mn   [3] BATAK VOWEL SIGN U FOR SIMALUNGUN SA..BATAK CONSONANT SIGN H
+ 1C2C..1C33    ; Grapheme_Extend # Mn   [8] LEPCHA VOWEL SIGN E..LEPCHA CONSONANT SIGN T
+ 1C36..1C37    ; Grapheme_Extend # Mn   [2] LEPCHA SIGN RAN..LEPCHA SIGN NUKTA
+ 1CD0..1CD2    ; Grapheme_Extend # Mn   [3] VEDIC TONE KARSHANA..VEDIC TONE PRENKHA
+ 1CD4..1CE0    ; Grapheme_Extend # Mn  [13] VEDIC SIGN YAJURVEDIC MIDLINE SVARITA..VEDIC TONE RIGVEDIC KASHMIRI INDEPENDENT SVARITA
+ 1CE2..1CE8    ; Grapheme_Extend # Mn   [7] VEDIC SIGN VISARGA SVARITA..VEDIC SIGN VISARGA ANUDATTA WITH TAIL
+ 1CED          ; Grapheme_Extend # Mn       VEDIC SIGN TIRYAK
+ 1CF4          ; Grapheme_Extend # Mn       VEDIC TONE CANDRA ABOVE
+ 1CF8..1CF9    ; Grapheme_Extend # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
+ 1DC0..1DFF    ; Grapheme_Extend # Mn  [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
+ 200C          ; Grapheme_Extend # Cf       ZERO WIDTH NON-JOINER
+ 20D0..20DC    ; Grapheme_Extend # Mn  [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+ 20DD..20E0    ; Grapheme_Extend # Me   [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
+ 20E1          ; Grapheme_Extend # Mn       COMBINING LEFT RIGHT ARROW ABOVE
+ 20E2..20E4    ; Grapheme_Extend # Me   [3] COMBINING ENCLOSING SCREEN..COMBINING ENCLOSING UPWARD POINTING TRIANGLE
+ 20E5..20F0    ; Grapheme_Extend # Mn  [12] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING ASTERISK ABOVE
+ 2CEF..2CF1    ; Grapheme_Extend # Mn   [3] COPTIC COMBINING NI ABOVE..COPTIC COMBINING SPIRITUS LENIS
+ 2D7F          ; Grapheme_Extend # Mn       TIFINAGH CONSONANT JOINER
+ 2DE0..2DFF    ; Grapheme_Extend # Mn  [32] COMBINING CYRILLIC LETTER BE..COMBINING CYRILLIC LETTER IOTIFIED BIG YUS
+ 302A..302D    ; Grapheme_Extend # Mn   [4] IDEOGRAPHIC LEVEL TONE MARK..IDEOGRAPHIC ENTERING TONE MARK
+ 302E..302F    ; Grapheme_Extend # Mc   [2] HANGUL SINGLE DOT TONE MARK..HANGUL DOUBLE DOT TONE MARK
+ 3099..309A    ; Grapheme_Extend # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ A66F          ; Grapheme_Extend # Mn       COMBINING CYRILLIC VZMET
+ A670..A672    ; Grapheme_Extend # Me   [3] COMBINING CYRILLIC TEN MILLIONS SIGN..COMBINING CYRILLIC THOUSAND MILLIONS SIGN
+ A674..A67D    ; Grapheme_Extend # Mn  [10] COMBINING CYRILLIC LETTER UKRAINIAN IE..COMBINING CYRILLIC PAYEROK
+ A69E..A69F    ; Grapheme_Extend # Mn   [2] COMBINING CYRILLIC LETTER EF..COMBINING CYRILLIC LETTER IOTIFIED E
+ A6F0..A6F1    ; Grapheme_Extend # Mn   [2] BAMUM COMBINING MARK KOQNDON..BAMUM COMBINING MARK TUKWENTIS
+ A802          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN DVISVARA
+ A806          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN HASANTA
+ A80B          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN ANUSVARA
+ A825..A826    ; Grapheme_Extend # Mn   [2] SYLOTI NAGRI VOWEL SIGN U..SYLOTI NAGRI VOWEL SIGN E
+ A82C          ; Grapheme_Extend # Mn       SYLOTI NAGRI SIGN ALTERNATE HASANTA
+ A8C4..A8C5    ; Grapheme_Extend # Mn   [2] SAURASHTRA SIGN VIRAMA..SAURASHTRA SIGN CANDRABINDU
+ A8E0..A8F1    ; Grapheme_Extend # Mn  [18] COMBINING DEVANAGARI DIGIT ZERO..COMBINING DEVANAGARI SIGN AVAGRAHA
+ A8FF          ; Grapheme_Extend # Mn       DEVANAGARI VOWEL SIGN AY
+ A926..A92D    ; Grapheme_Extend # Mn   [8] KAYAH LI VOWEL UE..KAYAH LI TONE CALYA PLOPHU
+ A947..A951    ; Grapheme_Extend # Mn  [11] REJANG VOWEL SIGN I..REJANG CONSONANT SIGN R
+ A980..A982    ; Grapheme_Extend # Mn   [3] JAVANESE SIGN PANYANGGA..JAVANESE SIGN LAYAR
+ A9B3          ; Grapheme_Extend # Mn       JAVANESE SIGN CECAK TELU
+ A9B6..A9B9    ; Grapheme_Extend # Mn   [4] JAVANESE VOWEL SIGN WULU..JAVANESE VOWEL SIGN SUKU MENDUT
+ A9BC..A9BD    ; Grapheme_Extend # Mn   [2] JAVANESE VOWEL SIGN PEPET..JAVANESE CONSONANT SIGN KERET
+ A9E5          ; Grapheme_Extend # Mn       MYANMAR SIGN SHAN SAW
+ AA29..AA2E    ; Grapheme_Extend # Mn   [6] CHAM VOWEL SIGN AA..CHAM VOWEL SIGN OE
+ AA31..AA32    ; Grapheme_Extend # Mn   [2] CHAM VOWEL SIGN AU..CHAM VOWEL SIGN UE
+ AA35..AA36    ; Grapheme_Extend # Mn   [2] CHAM CONSONANT SIGN LA..CHAM CONSONANT SIGN WA
+ AA43          ; Grapheme_Extend # Mn       CHAM CONSONANT SIGN FINAL NG
+ AA4C          ; Grapheme_Extend # Mn       CHAM CONSONANT SIGN FINAL M
+ AA7C          ; Grapheme_Extend # Mn       MYANMAR SIGN TAI LAING TONE-2
+ AAB0          ; Grapheme_Extend # Mn       TAI VIET MAI KANG
+ AAB2..AAB4    ; Grapheme_Extend # Mn   [3] TAI VIET VOWEL I..TAI VIET VOWEL U
+ AAB7..AAB8    ; Grapheme_Extend # Mn   [2] TAI VIET MAI KHIT..TAI VIET VOWEL IA
+ AABE..AABF    ; Grapheme_Extend # Mn   [2] TAI VIET VOWEL AM..TAI VIET TONE MAI EK
+ AAC1          ; Grapheme_Extend # Mn       TAI VIET TONE MAI THO
+ AAEC..AAED    ; Grapheme_Extend # Mn   [2] MEETEI MAYEK VOWEL SIGN UU..MEETEI MAYEK VOWEL SIGN AAI
+ AAF6          ; Grapheme_Extend # Mn       MEETEI MAYEK VIRAMA
+ ABE5          ; Grapheme_Extend # Mn       MEETEI MAYEK VOWEL SIGN ANAP
+ ABE8          ; Grapheme_Extend # Mn       MEETEI MAYEK VOWEL SIGN UNAP
+ ABED          ; Grapheme_Extend # Mn       MEETEI MAYEK APUN IYEK
+ FB1E          ; Grapheme_Extend # Mn       HEBREW POINT JUDEO-SPANISH VARIKA
+ FE00..FE0F    ; Grapheme_Extend # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FE20..FE2F    ; Grapheme_Extend # Mn  [16] COMBINING LIGATURE LEFT HALF..COMBINING CYRILLIC TITLO RIGHT HALF
+ FF9E..FF9F    ; Grapheme_Extend # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ 101FD         ; Grapheme_Extend # Mn       PHAISTOS DISC SIGN COMBINING OBLIQUE STROKE
+ 102E0         ; Grapheme_Extend # Mn       COPTIC EPACT THOUSANDS MARK
+ 10376..1037A  ; Grapheme_Extend # Mn   [5] COMBINING OLD PERMIC LETTER AN..COMBINING OLD PERMIC LETTER SII
+ 10A01..10A03  ; Grapheme_Extend # Mn   [3] KHAROSHTHI VOWEL SIGN I..KHAROSHTHI VOWEL SIGN VOCALIC R
+ 10A05..10A06  ; Grapheme_Extend # Mn   [2] KHAROSHTHI VOWEL SIGN E..KHAROSHTHI VOWEL SIGN O
+ 10A0C..10A0F  ; Grapheme_Extend # Mn   [4] KHAROSHTHI VOWEL LENGTH MARK..KHAROSHTHI SIGN VISARGA
+ 10A38..10A3A  ; Grapheme_Extend # Mn   [3] KHAROSHTHI SIGN BAR ABOVE..KHAROSHTHI SIGN DOT BELOW
+ 10A3F         ; Grapheme_Extend # Mn       KHAROSHTHI VIRAMA
+ 10AE5..10AE6  ; Grapheme_Extend # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
+ 10D24..10D27  ; Grapheme_Extend # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10EAB..10EAC  ; Grapheme_Extend # Mn   [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
+ 10EFD..10EFF  ; Grapheme_Extend # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
+ 10F46..10F50  ; Grapheme_Extend # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+ 10F82..10F85  ; Grapheme_Extend # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+ 11001         ; Grapheme_Extend # Mn       BRAHMI SIGN ANUSVARA
+ 11038..11046  ; Grapheme_Extend # Mn  [15] BRAHMI VOWEL SIGN AA..BRAHMI VIRAMA
+ 11070         ; Grapheme_Extend # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
+ 11073..11074  ; Grapheme_Extend # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 1107F..11081  ; Grapheme_Extend # Mn   [3] BRAHMI NUMBER JOINER..KAITHI SIGN ANUSVARA
+ 110B3..110B6  ; Grapheme_Extend # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
+ 110B9..110BA  ; Grapheme_Extend # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
+ 110C2         ; Grapheme_Extend # Mn       KAITHI VOWEL SIGN VOCALIC R
+ 11100..11102  ; Grapheme_Extend # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
+ 11127..1112B  ; Grapheme_Extend # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
+ 1112D..11134  ; Grapheme_Extend # Mn   [8] CHAKMA VOWEL SIGN AI..CHAKMA MAAYYAA
+ 11173         ; Grapheme_Extend # Mn       MAHAJANI SIGN NUKTA
+ 11180..11181  ; Grapheme_Extend # Mn   [2] SHARADA SIGN CANDRABINDU..SHARADA SIGN ANUSVARA
+ 111B6..111BE  ; Grapheme_Extend # Mn   [9] SHARADA VOWEL SIGN U..SHARADA VOWEL SIGN O
+ 111C9..111CC  ; Grapheme_Extend # Mn   [4] SHARADA SANDHI MARK..SHARADA EXTRA SHORT VOWEL MARK
+ 111CF         ; Grapheme_Extend # Mn       SHARADA SIGN INVERTED CANDRABINDU
+ 1122F..11231  ; Grapheme_Extend # Mn   [3] KHOJKI VOWEL SIGN U..KHOJKI VOWEL SIGN AI
+ 11234         ; Grapheme_Extend # Mn       KHOJKI SIGN ANUSVARA
+ 11236..11237  ; Grapheme_Extend # Mn   [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
+ 1123E         ; Grapheme_Extend # Mn       KHOJKI SIGN SUKUN
+ 11241         ; Grapheme_Extend # Mn       KHOJKI VOWEL SIGN VOCALIC R
+ 112DF         ; Grapheme_Extend # Mn       KHUDAWADI SIGN ANUSVARA
+ 112E3..112EA  ; Grapheme_Extend # Mn   [8] KHUDAWADI VOWEL SIGN U..KHUDAWADI SIGN VIRAMA
+ 11300..11301  ; Grapheme_Extend # Mn   [2] GRANTHA SIGN COMBINING ANUSVARA ABOVE..GRANTHA SIGN CANDRABINDU
+ 1133B..1133C  ; Grapheme_Extend # Mn   [2] COMBINING BINDU BELOW..GRANTHA SIGN NUKTA
+ 1133E         ; Grapheme_Extend # Mc       GRANTHA VOWEL SIGN AA
+ 11340         ; Grapheme_Extend # Mn       GRANTHA VOWEL SIGN II
+ 11357         ; Grapheme_Extend # Mc       GRANTHA AU LENGTH MARK
+ 11366..1136C  ; Grapheme_Extend # Mn   [7] COMBINING GRANTHA DIGIT ZERO..COMBINING GRANTHA DIGIT SIX
+ 11370..11374  ; Grapheme_Extend # Mn   [5] COMBINING GRANTHA LETTER A..COMBINING GRANTHA LETTER PA
+ 11438..1143F  ; Grapheme_Extend # Mn   [8] NEWA VOWEL SIGN U..NEWA VOWEL SIGN AI
+ 11442..11444  ; Grapheme_Extend # Mn   [3] NEWA SIGN VIRAMA..NEWA SIGN ANUSVARA
+ 11446         ; Grapheme_Extend # Mn       NEWA SIGN NUKTA
+ 1145E         ; Grapheme_Extend # Mn       NEWA SANDHI MARK
+ 114B0         ; Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN AA
+ 114B3..114B8  ; Grapheme_Extend # Mn   [6] TIRHUTA VOWEL SIGN U..TIRHUTA VOWEL SIGN VOCALIC LL
+ 114BA         ; Grapheme_Extend # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BD         ; Grapheme_Extend # Mc       TIRHUTA VOWEL SIGN SHORT O
+ 114BF..114C0  ; Grapheme_Extend # Mn   [2] TIRHUTA SIGN CANDRABINDU..TIRHUTA SIGN ANUSVARA
+ 114C2..114C3  ; Grapheme_Extend # Mn   [2] TIRHUTA SIGN VIRAMA..TIRHUTA SIGN NUKTA
+ 115AF         ; Grapheme_Extend # Mc       SIDDHAM VOWEL SIGN AA
+ 115B2..115B5  ; Grapheme_Extend # Mn   [4] SIDDHAM VOWEL SIGN U..SIDDHAM VOWEL SIGN VOCALIC RR
+ 115BC..115BD  ; Grapheme_Extend # Mn   [2] SIDDHAM SIGN CANDRABINDU..SIDDHAM SIGN ANUSVARA
+ 115BF..115C0  ; Grapheme_Extend # Mn   [2] SIDDHAM SIGN VIRAMA..SIDDHAM SIGN NUKTA
+ 115DC..115DD  ; Grapheme_Extend # Mn   [2] SIDDHAM VOWEL SIGN ALTERNATE U..SIDDHAM VOWEL SIGN ALTERNATE UU
+ 11633..1163A  ; Grapheme_Extend # Mn   [8] MODI VOWEL SIGN U..MODI VOWEL SIGN AI
+ 1163D         ; Grapheme_Extend # Mn       MODI SIGN ANUSVARA
+ 1163F..11640  ; Grapheme_Extend # Mn   [2] MODI SIGN VIRAMA..MODI SIGN ARDHACANDRA
+ 116AB         ; Grapheme_Extend # Mn       TAKRI SIGN ANUSVARA
+ 116AD         ; Grapheme_Extend # Mn       TAKRI VOWEL SIGN AA
+ 116B0..116B5  ; Grapheme_Extend # Mn   [6] TAKRI VOWEL SIGN U..TAKRI VOWEL SIGN AU
+ 116B7         ; Grapheme_Extend # Mn       TAKRI SIGN NUKTA
+ 1171D..1171F  ; Grapheme_Extend # Mn   [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
+ 11722..11725  ; Grapheme_Extend # Mn   [4] AHOM VOWEL SIGN I..AHOM VOWEL SIGN UU
+ 11727..1172B  ; Grapheme_Extend # Mn   [5] AHOM VOWEL SIGN AW..AHOM SIGN KILLER
+ 1182F..11837  ; Grapheme_Extend # Mn   [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
+ 11839..1183A  ; Grapheme_Extend # Mn   [2] DOGRA SIGN VIRAMA..DOGRA SIGN NUKTA
+ 11930         ; Grapheme_Extend # Mc       DIVES AKURU VOWEL SIGN AA
+ 1193B..1193C  ; Grapheme_Extend # Mn   [2] DIVES AKURU SIGN ANUSVARA..DIVES AKURU SIGN CANDRABINDU
+ 1193E         ; Grapheme_Extend # Mn       DIVES AKURU VIRAMA
+ 11943         ; Grapheme_Extend # Mn       DIVES AKURU SIGN NUKTA
+ 119D4..119D7  ; Grapheme_Extend # Mn   [4] NANDINAGARI VOWEL SIGN U..NANDINAGARI VOWEL SIGN VOCALIC RR
+ 119DA..119DB  ; Grapheme_Extend # Mn   [2] NANDINAGARI VOWEL SIGN E..NANDINAGARI VOWEL SIGN AI
+ 119E0         ; Grapheme_Extend # Mn       NANDINAGARI SIGN VIRAMA
+ 11A01..11A0A  ; Grapheme_Extend # Mn  [10] ZANABAZAR SQUARE VOWEL SIGN I..ZANABAZAR SQUARE VOWEL LENGTH MARK
+ 11A33..11A38  ; Grapheme_Extend # Mn   [6] ZANABAZAR SQUARE FINAL CONSONANT MARK..ZANABAZAR SQUARE SIGN ANUSVARA
+ 11A3B..11A3E  ; Grapheme_Extend # Mn   [4] ZANABAZAR SQUARE CLUSTER-FINAL LETTER YA..ZANABAZAR SQUARE CLUSTER-FINAL LETTER VA
+ 11A47         ; Grapheme_Extend # Mn       ZANABAZAR SQUARE SUBJOINER
+ 11A51..11A56  ; Grapheme_Extend # Mn   [6] SOYOMBO VOWEL SIGN I..SOYOMBO VOWEL SIGN OE
+ 11A59..11A5B  ; Grapheme_Extend # Mn   [3] SOYOMBO VOWEL SIGN VOCALIC R..SOYOMBO VOWEL LENGTH MARK
+ 11A8A..11A96  ; Grapheme_Extend # Mn  [13] SOYOMBO FINAL CONSONANT SIGN G..SOYOMBO SIGN ANUSVARA
+ 11A98..11A99  ; Grapheme_Extend # Mn   [2] SOYOMBO GEMINATION MARK..SOYOMBO SUBJOINER
+ 11C30..11C36  ; Grapheme_Extend # Mn   [7] BHAIKSUKI VOWEL SIGN I..BHAIKSUKI VOWEL SIGN VOCALIC L
+ 11C38..11C3D  ; Grapheme_Extend # Mn   [6] BHAIKSUKI VOWEL SIGN E..BHAIKSUKI SIGN ANUSVARA
+ 11C3F         ; Grapheme_Extend # Mn       BHAIKSUKI SIGN VIRAMA
+ 11C92..11CA7  ; Grapheme_Extend # Mn  [22] MARCHEN SUBJOINED LETTER KA..MARCHEN SUBJOINED LETTER ZA
+ 11CAA..11CB0  ; Grapheme_Extend # Mn   [7] MARCHEN SUBJOINED LETTER RA..MARCHEN VOWEL SIGN AA
+ 11CB2..11CB3  ; Grapheme_Extend # Mn   [2] MARCHEN VOWEL SIGN U..MARCHEN VOWEL SIGN E
+ 11CB5..11CB6  ; Grapheme_Extend # Mn   [2] MARCHEN SIGN ANUSVARA..MARCHEN SIGN CANDRABINDU
+ 11D31..11D36  ; Grapheme_Extend # Mn   [6] MASARAM GONDI VOWEL SIGN AA..MASARAM GONDI VOWEL SIGN VOCALIC R
+ 11D3A         ; Grapheme_Extend # Mn       MASARAM GONDI VOWEL SIGN E
+ 11D3C..11D3D  ; Grapheme_Extend # Mn   [2] MASARAM GONDI VOWEL SIGN AI..MASARAM GONDI VOWEL SIGN O
+ 11D3F..11D45  ; Grapheme_Extend # Mn   [7] MASARAM GONDI VOWEL SIGN AU..MASARAM GONDI VIRAMA
+ 11D47         ; Grapheme_Extend # Mn       MASARAM GONDI RA-KARA
+ 11D90..11D91  ; Grapheme_Extend # Mn   [2] GUNJALA GONDI VOWEL SIGN EE..GUNJALA GONDI VOWEL SIGN AI
+ 11D95         ; Grapheme_Extend # Mn       GUNJALA GONDI SIGN ANUSVARA
+ 11D97         ; Grapheme_Extend # Mn       GUNJALA GONDI VIRAMA
+ 11EF3..11EF4  ; Grapheme_Extend # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
+ 11F00..11F01  ; Grapheme_Extend # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F36..11F3A  ; Grapheme_Extend # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F40         ; Grapheme_Extend # Mn       KAWI VOWEL SIGN EU
+ 11F42         ; Grapheme_Extend # Mn       KAWI CONJOINER
+ 13440         ; Grapheme_Extend # Mn       EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
+ 13447..13455  ; Grapheme_Extend # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
+ 16AF0..16AF4  ; Grapheme_Extend # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
+ 16B30..16B36  ; Grapheme_Extend # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
+ 16F4F         ; Grapheme_Extend # Mn       MIAO SIGN CONSONANT MODIFIER BAR
+ 16F8F..16F92  ; Grapheme_Extend # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
+ 16FE4         ; Grapheme_Extend # Mn       KHITAN SMALL SCRIPT FILLER
+ 1BC9D..1BC9E  ; Grapheme_Extend # Mn   [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
+ 1CF00..1CF2D  ; Grapheme_Extend # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+ 1CF30..1CF46  ; Grapheme_Extend # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+ 1D165         ; Grapheme_Extend # Mc       MUSICAL SYMBOL COMBINING STEM
+ 1D167..1D169  ; Grapheme_Extend # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
+ 1D16E..1D172  ; Grapheme_Extend # Mc   [5] MUSICAL SYMBOL COMBINING FLAG-1..MUSICAL SYMBOL COMBINING FLAG-5
+ 1D17B..1D182  ; Grapheme_Extend # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
+ 1D185..1D18B  ; Grapheme_Extend # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
+ 1D1AA..1D1AD  ; Grapheme_Extend # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+ 1D242..1D244  ; Grapheme_Extend # Mn   [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
+ 1DA00..1DA36  ; Grapheme_Extend # Mn  [55] SIGNWRITING HEAD RIM..SIGNWRITING AIR SUCKING IN
+ 1DA3B..1DA6C  ; Grapheme_Extend # Mn  [50] SIGNWRITING MOUTH CLOSED NEUTRAL..SIGNWRITING EXCITEMENT
+ 1DA75         ; Grapheme_Extend # Mn       SIGNWRITING UPPER BODY TILTING FROM HIP JOINTS
+ 1DA84         ; Grapheme_Extend # Mn       SIGNWRITING LOCATION HEAD NECK
+ 1DA9B..1DA9F  ; Grapheme_Extend # Mn   [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
+ 1DAA1..1DAAF  ; Grapheme_Extend # Mn  [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+ 1E000..1E006  ; Grapheme_Extend # Mn   [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
+ 1E008..1E018  ; Grapheme_Extend # Mn  [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
+ 1E01B..1E021  ; Grapheme_Extend # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
+ 1E023..1E024  ; Grapheme_Extend # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
+ 1E026..1E02A  ; Grapheme_Extend # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E08F         ; Grapheme_Extend # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 1E130..1E136  ; Grapheme_Extend # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+ 1E2AE         ; Grapheme_Extend # Mn       TOTO SIGN RISING TONE
+ 1E2EC..1E2EF  ; Grapheme_Extend # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
+ 1E4EC..1E4EF  ; Grapheme_Extend # Mn   [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+ 1E8D0..1E8D6  ; Grapheme_Extend # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
+ 1E944..1E94A  ; Grapheme_Extend # Mn   [7] ADLAM ALIF LENGTHENER..ADLAM NUKTA
+ E0020..E007F  ; Grapheme_Extend # Cf  [96] TAG SPACE..CANCEL TAG
+ E0100..E01EF  ; Grapheme_Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ 
+ # Total code points: 2125
+ 
+ # ================================================
+ 
+ # Derived Property: Grapheme_Base
+ #  Generated from: [0..10FFFF] - Cc - Cf - Cs - Co - Cn - Zl - Zp - Grapheme_Extend
+ #  Note: depending on an application's interpretation of Co (private use),
+ #  they may be either in Grapheme_Base, or in Grapheme_Extend, or in neither.
+ 
+ 0020          ; Grapheme_Base # Zs       SPACE
+ 0021..0023    ; Grapheme_Base # Po   [3] EXCLAMATION MARK..NUMBER SIGN
+ 0024          ; Grapheme_Base # Sc       DOLLAR SIGN
+ 0025..0027    ; Grapheme_Base # Po   [3] PERCENT SIGN..APOSTROPHE
+ 0028          ; Grapheme_Base # Ps       LEFT PARENTHESIS
+ 0029          ; Grapheme_Base # Pe       RIGHT PARENTHESIS
+ 002A          ; Grapheme_Base # Po       ASTERISK
+ 002B          ; Grapheme_Base # Sm       PLUS SIGN
+ 002C          ; Grapheme_Base # Po       COMMA
+ 002D          ; Grapheme_Base # Pd       HYPHEN-MINUS
+ 002E..002F    ; Grapheme_Base # Po   [2] FULL STOP..SOLIDUS
+ 0030..0039    ; Grapheme_Base # Nd  [10] DIGIT ZERO..DIGIT NINE
+ 003A..003B    ; Grapheme_Base # Po   [2] COLON..SEMICOLON
+ 003C..003E    ; Grapheme_Base # Sm   [3] LESS-THAN SIGN..GREATER-THAN SIGN
+ 003F..0040    ; Grapheme_Base # Po   [2] QUESTION MARK..COMMERCIAL AT
+ 0041..005A    ; Grapheme_Base # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 005B          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET
+ 005C          ; Grapheme_Base # Po       REVERSE SOLIDUS
+ 005D          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET
+ 005E          ; Grapheme_Base # Sk       CIRCUMFLEX ACCENT
+ 005F          ; Grapheme_Base # Pc       LOW LINE
+ 0060          ; Grapheme_Base # Sk       GRAVE ACCENT
+ 0061..007A    ; Grapheme_Base # L&  [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+ 007B          ; Grapheme_Base # Ps       LEFT CURLY BRACKET
+ 007C          ; Grapheme_Base # Sm       VERTICAL LINE
+ 007D          ; Grapheme_Base # Pe       RIGHT CURLY BRACKET
+ 007E          ; Grapheme_Base # Sm       TILDE
+ 00A0          ; Grapheme_Base # Zs       NO-BREAK SPACE
+ 00A1          ; Grapheme_Base # Po       INVERTED EXCLAMATION MARK
+ 00A2..00A5    ; Grapheme_Base # Sc   [4] CENT SIGN..YEN SIGN
+ 00A6          ; Grapheme_Base # So       BROKEN BAR
+ 00A7          ; Grapheme_Base # Po       SECTION SIGN
+ 00A8          ; Grapheme_Base # Sk       DIAERESIS
+ 00A9          ; Grapheme_Base # So       COPYRIGHT SIGN
+ 00AA          ; Grapheme_Base # Lo       FEMININE ORDINAL INDICATOR
+ 00AB          ; Grapheme_Base # Pi       LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 00AC          ; Grapheme_Base # Sm       NOT SIGN
+ 00AE          ; Grapheme_Base # So       REGISTERED SIGN
+ 00AF          ; Grapheme_Base # Sk       MACRON
+ 00B0          ; Grapheme_Base # So       DEGREE SIGN
+ 00B1          ; Grapheme_Base # Sm       PLUS-MINUS SIGN
+ 00B2..00B3    ; Grapheme_Base # No   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+ 00B4          ; Grapheme_Base # Sk       ACUTE ACCENT
+ 00B5          ; Grapheme_Base # L&       MICRO SIGN
+ 00B6..00B7    ; Grapheme_Base # Po   [2] PILCROW SIGN..MIDDLE DOT
+ 00B8          ; Grapheme_Base # Sk       CEDILLA
+ 00B9          ; Grapheme_Base # No       SUPERSCRIPT ONE
+ 00BA          ; Grapheme_Base # Lo       MASCULINE ORDINAL INDICATOR
+ 00BB          ; Grapheme_Base # Pf       RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK
+ 00BC..00BE    ; Grapheme_Base # No   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+ 00BF          ; Grapheme_Base # Po       INVERTED QUESTION MARK
+ 00C0..00D6    ; Grapheme_Base # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D7          ; Grapheme_Base # Sm       MULTIPLICATION SIGN
+ 00D8..00F6    ; Grapheme_Base # L&  [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F7          ; Grapheme_Base # Sm       DIVISION SIGN
+ 00F8..01BA    ; Grapheme_Base # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+ 01BB          ; Grapheme_Base # Lo       LATIN LETTER TWO WITH STROKE
+ 01BC..01BF    ; Grapheme_Base # L&   [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+ 01C0..01C3    ; Grapheme_Base # Lo   [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+ 01C4..0293    ; Grapheme_Base # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+ 0294          ; Grapheme_Base # Lo       LATIN LETTER GLOTTAL STOP
+ 0295..02AF    ; Grapheme_Base # L&  [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+ 02B0..02C1    ; Grapheme_Base # Lm  [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+ 02C2..02C5    ; Grapheme_Base # Sk   [4] MODIFIER LETTER LEFT ARROWHEAD..MODIFIER LETTER DOWN ARROWHEAD
+ 02C6..02D1    ; Grapheme_Base # Lm  [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+ 02D2..02DF    ; Grapheme_Base # Sk  [14] MODIFIER LETTER CENTRED RIGHT HALF RING..MODIFIER LETTER CROSS ACCENT
+ 02E0..02E4    ; Grapheme_Base # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 02E5..02EB    ; Grapheme_Base # Sk   [7] MODIFIER LETTER EXTRA-HIGH TONE BAR..MODIFIER LETTER YANG DEPARTING TONE MARK
+ 02EC          ; Grapheme_Base # Lm       MODIFIER LETTER VOICING
+ 02ED          ; Grapheme_Base # Sk       MODIFIER LETTER UNASPIRATED
+ 02EE          ; Grapheme_Base # Lm       MODIFIER LETTER DOUBLE APOSTROPHE
+ 02EF..02FF    ; Grapheme_Base # Sk  [17] MODIFIER LETTER LOW DOWN ARROWHEAD..MODIFIER LETTER LOW LEFT ARROW
+ 0370..0373    ; Grapheme_Base # L&   [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+ 0374          ; Grapheme_Base # Lm       GREEK NUMERAL SIGN
+ 0375          ; Grapheme_Base # Sk       GREEK LOWER NUMERAL SIGN
+ 0376..0377    ; Grapheme_Base # L&   [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; Grapheme_Base # Lm       GREEK YPOGEGRAMMENI
+ 037B..037D    ; Grapheme_Base # L&   [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 037E          ; Grapheme_Base # Po       GREEK QUESTION MARK
+ 037F          ; Grapheme_Base # L&       GREEK CAPITAL LETTER YOT
+ 0384..0385    ; Grapheme_Base # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0386          ; Grapheme_Base # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; Grapheme_Base # Po       GREEK ANO TELEIA
+ 0388..038A    ; Grapheme_Base # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Grapheme_Base # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..03A1    ; Grapheme_Base # L&  [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+ 03A3..03F5    ; Grapheme_Base # L&  [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+ 03F6          ; Grapheme_Base # Sm       GREEK REVERSED LUNATE EPSILON SYMBOL
+ 03F7..0481    ; Grapheme_Base # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+ 0482          ; Grapheme_Base # So       CYRILLIC THOUSANDS SIGN
+ 048A..052F    ; Grapheme_Base # L& [166] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER EL WITH DESCENDER
+ 0531..0556    ; Grapheme_Base # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0559          ; Grapheme_Base # Lm       ARMENIAN MODIFIER LETTER LEFT HALF RING
+ 055A..055F    ; Grapheme_Base # Po   [6] ARMENIAN APOSTROPHE..ARMENIAN ABBREVIATION MARK
+ 0560..0588    ; Grapheme_Base # L&  [41] ARMENIAN SMALL LETTER TURNED AYB..ARMENIAN SMALL LETTER YI WITH STROKE
+ 0589          ; Grapheme_Base # Po       ARMENIAN FULL STOP
+ 058A          ; Grapheme_Base # Pd       ARMENIAN HYPHEN
+ 058D..058E    ; Grapheme_Base # So   [2] RIGHT-FACING ARMENIAN ETERNITY SIGN..LEFT-FACING ARMENIAN ETERNITY SIGN
+ 058F          ; Grapheme_Base # Sc       ARMENIAN DRAM SIGN
+ 05BE          ; Grapheme_Base # Pd       HEBREW PUNCTUATION MAQAF
+ 05C0          ; Grapheme_Base # Po       HEBREW PUNCTUATION PASEQ
+ 05C3          ; Grapheme_Base # Po       HEBREW PUNCTUATION SOF PASUQ
+ 05C6          ; Grapheme_Base # Po       HEBREW PUNCTUATION NUN HAFUKHA
+ 05D0..05EA    ; Grapheme_Base # Lo  [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+ 05EF..05F2    ; Grapheme_Base # Lo   [4] HEBREW YOD TRIANGLE..HEBREW LIGATURE YIDDISH DOUBLE YOD
+ 05F3..05F4    ; Grapheme_Base # Po   [2] HEBREW PUNCTUATION GERESH..HEBREW PUNCTUATION GERSHAYIM
+ 0606..0608    ; Grapheme_Base # Sm   [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
+ 0609..060A    ; Grapheme_Base # Po   [2] ARABIC-INDIC PER MILLE SIGN..ARABIC-INDIC PER TEN THOUSAND SIGN
+ 060B          ; Grapheme_Base # Sc       AFGHANI SIGN
+ 060C..060D    ; Grapheme_Base # Po   [2] ARABIC COMMA..ARABIC DATE SEPARATOR
+ 060E..060F    ; Grapheme_Base # So   [2] ARABIC POETIC VERSE SIGN..ARABIC SIGN MISRA
+ 061B          ; Grapheme_Base # Po       ARABIC SEMICOLON
+ 061D..061F    ; Grapheme_Base # Po   [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
+ 0620..063F    ; Grapheme_Base # Lo  [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+ 0640          ; Grapheme_Base # Lm       ARABIC TATWEEL
+ 0641..064A    ; Grapheme_Base # Lo  [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+ 0660..0669    ; Grapheme_Base # Nd  [10] ARABIC-INDIC DIGIT ZERO..ARABIC-INDIC DIGIT NINE
+ 066A..066D    ; Grapheme_Base # Po   [4] ARABIC PERCENT SIGN..ARABIC FIVE POINTED STAR
+ 066E..066F    ; Grapheme_Base # Lo   [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+ 0671..06D3    ; Grapheme_Base # Lo  [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 06D4          ; Grapheme_Base # Po       ARABIC FULL STOP
+ 06D5          ; Grapheme_Base # Lo       ARABIC LETTER AE
+ 06DE          ; Grapheme_Base # So       ARABIC START OF RUB EL HIZB
+ 06E5..06E6    ; Grapheme_Base # Lm   [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+ 06E9          ; Grapheme_Base # So       ARABIC PLACE OF SAJDAH
+ 06EE..06EF    ; Grapheme_Base # Lo   [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+ 06F0..06F9    ; Grapheme_Base # Nd  [10] EXTENDED ARABIC-INDIC DIGIT ZERO..EXTENDED ARABIC-INDIC DIGIT NINE
+ 06FA..06FC    ; Grapheme_Base # Lo   [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+ 06FD..06FE    ; Grapheme_Base # So   [2] ARABIC SIGN SINDHI AMPERSAND..ARABIC SIGN SINDHI POSTPOSITION MEN
+ 06FF          ; Grapheme_Base # Lo       ARABIC LETTER HEH WITH INVERTED V
+ 0700..070D    ; Grapheme_Base # Po  [14] SYRIAC END OF PARAGRAPH..SYRIAC HARKLEAN ASTERISCUS
+ 0710          ; Grapheme_Base # Lo       SYRIAC LETTER ALAPH
+ 0712..072F    ; Grapheme_Base # Lo  [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+ 074D..07A5    ; Grapheme_Base # Lo  [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+ 07B1          ; Grapheme_Base # Lo       THAANA LETTER NAA
+ 07C0..07C9    ; Grapheme_Base # Nd  [10] NKO DIGIT ZERO..NKO DIGIT NINE
+ 07CA..07EA    ; Grapheme_Base # Lo  [33] NKO LETTER A..NKO LETTER JONA RA
+ 07F4..07F5    ; Grapheme_Base # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+ 07F6          ; Grapheme_Base # So       NKO SYMBOL OO DENNEN
+ 07F7..07F9    ; Grapheme_Base # Po   [3] NKO SYMBOL GBAKURUNEN..NKO EXCLAMATION MARK
+ 07FA          ; Grapheme_Base # Lm       NKO LAJANYALAN
+ 07FE..07FF    ; Grapheme_Base # Sc   [2] NKO DOROME SIGN..NKO TAMAN SIGN
+ 0800..0815    ; Grapheme_Base # Lo  [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+ 081A          ; Grapheme_Base # Lm       SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+ 0824          ; Grapheme_Base # Lm       SAMARITAN MODIFIER LETTER SHORT A
+ 0828          ; Grapheme_Base # Lm       SAMARITAN MODIFIER LETTER I
+ 0830..083E    ; Grapheme_Base # Po  [15] SAMARITAN PUNCTUATION NEQUDAA..SAMARITAN PUNCTUATION ANNAAU
+ 0840..0858    ; Grapheme_Base # Lo  [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+ 085E          ; Grapheme_Base # Po       MANDAIC PUNCTUATION
+ 0860..086A    ; Grapheme_Base # Lo  [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
+ 0870..0887    ; Grapheme_Base # Lo  [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
+ 0888          ; Grapheme_Base # Sk       ARABIC RAISED ROUND DOT
+ 0889..088E    ; Grapheme_Base # Lo   [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
+ 08A0..08C8    ; Grapheme_Base # Lo  [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
+ 08C9          ; Grapheme_Base # Lm       ARABIC SMALL FARSI YEH
+ 0903          ; Grapheme_Base # Mc       DEVANAGARI SIGN VISARGA
+ 0904..0939    ; Grapheme_Base # Lo  [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+ 093B          ; Grapheme_Base # Mc       DEVANAGARI VOWEL SIGN OOE
+ 093D          ; Grapheme_Base # Lo       DEVANAGARI SIGN AVAGRAHA
+ 093E..0940    ; Grapheme_Base # Mc   [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+ 0949..094C    ; Grapheme_Base # Mc   [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+ 094E..094F    ; Grapheme_Base # Mc   [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+ 0950          ; Grapheme_Base # Lo       DEVANAGARI OM
+ 0958..0961    ; Grapheme_Base # Lo  [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+ 0964..0965    ; Grapheme_Base # Po   [2] DEVANAGARI DANDA..DEVANAGARI DOUBLE DANDA
+ 0966..096F    ; Grapheme_Base # Nd  [10] DEVANAGARI DIGIT ZERO..DEVANAGARI DIGIT NINE
+ 0970          ; Grapheme_Base # Po       DEVANAGARI ABBREVIATION SIGN
+ 0971          ; Grapheme_Base # Lm       DEVANAGARI SIGN HIGH SPACING DOT
+ 0972..0980    ; Grapheme_Base # Lo  [15] DEVANAGARI LETTER CANDRA A..BENGALI ANJI
+ 0982..0983    ; Grapheme_Base # Mc   [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+ 0985..098C    ; Grapheme_Base # Lo   [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+ 098F..0990    ; Grapheme_Base # Lo   [2] BENGALI LETTER E..BENGALI LETTER AI
+ 0993..09A8    ; Grapheme_Base # Lo  [22] BENGALI LETTER O..BENGALI LETTER NA
+ 09AA..09B0    ; Grapheme_Base # Lo   [7] BENGALI LETTER PA..BENGALI LETTER RA
+ 09B2          ; Grapheme_Base # Lo       BENGALI LETTER LA
+ 09B6..09B9    ; Grapheme_Base # Lo   [4] BENGALI LETTER SHA..BENGALI LETTER HA
+ 09BD          ; Grapheme_Base # Lo       BENGALI SIGN AVAGRAHA
+ 09BF..09C0    ; Grapheme_Base # Mc   [2] BENGALI VOWEL SIGN I..BENGALI VOWEL SIGN II
+ 09C7..09C8    ; Grapheme_Base # Mc   [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+ 09CB..09CC    ; Grapheme_Base # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09CE          ; Grapheme_Base # Lo       BENGALI LETTER KHANDA TA
+ 09DC..09DD    ; Grapheme_Base # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF..09E1    ; Grapheme_Base # Lo   [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+ 09E6..09EF    ; Grapheme_Base # Nd  [10] BENGALI DIGIT ZERO..BENGALI DIGIT NINE
+ 09F0..09F1    ; Grapheme_Base # Lo   [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+ 09F2..09F3    ; Grapheme_Base # Sc   [2] BENGALI RUPEE MARK..BENGALI RUPEE SIGN
+ 09F4..09F9    ; Grapheme_Base # No   [6] BENGALI CURRENCY NUMERATOR ONE..BENGALI CURRENCY DENOMINATOR SIXTEEN
+ 09FA          ; Grapheme_Base # So       BENGALI ISSHAR
+ 09FB          ; Grapheme_Base # Sc       BENGALI GANDA MARK
+ 09FC          ; Grapheme_Base # Lo       BENGALI LETTER VEDIC ANUSVARA
+ 09FD          ; Grapheme_Base # Po       BENGALI ABBREVIATION SIGN
+ 0A03          ; Grapheme_Base # Mc       GURMUKHI SIGN VISARGA
+ 0A05..0A0A    ; Grapheme_Base # Lo   [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+ 0A0F..0A10    ; Grapheme_Base # Lo   [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+ 0A13..0A28    ; Grapheme_Base # Lo  [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+ 0A2A..0A30    ; Grapheme_Base # Lo   [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+ 0A32..0A33    ; Grapheme_Base # Lo   [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+ 0A35..0A36    ; Grapheme_Base # Lo   [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+ 0A38..0A39    ; Grapheme_Base # Lo   [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+ 0A3E..0A40    ; Grapheme_Base # Mc   [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+ 0A59..0A5C    ; Grapheme_Base # Lo   [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
+ 0A5E          ; Grapheme_Base # Lo       GURMUKHI LETTER FA
+ 0A66..0A6F    ; Grapheme_Base # Nd  [10] GURMUKHI DIGIT ZERO..GURMUKHI DIGIT NINE
+ 0A72..0A74    ; Grapheme_Base # Lo   [3] GURMUKHI IRI..GURMUKHI EK ONKAR
+ 0A76          ; Grapheme_Base # Po       GURMUKHI ABBREVIATION SIGN
+ 0A83          ; Grapheme_Base # Mc       GUJARATI SIGN VISARGA
+ 0A85..0A8D    ; Grapheme_Base # Lo   [9] GUJARATI LETTER A..GUJARATI VOWEL CANDRA E
+ 0A8F..0A91    ; Grapheme_Base # Lo   [3] GUJARATI LETTER E..GUJARATI VOWEL CANDRA O
+ 0A93..0AA8    ; Grapheme_Base # Lo  [22] GUJARATI LETTER O..GUJARATI LETTER NA
+ 0AAA..0AB0    ; Grapheme_Base # Lo   [7] GUJARATI LETTER PA..GUJARATI LETTER RA
+ 0AB2..0AB3    ; Grapheme_Base # Lo   [2] GUJARATI LETTER LA..GUJARATI LETTER LLA
+ 0AB5..0AB9    ; Grapheme_Base # Lo   [5] GUJARATI LETTER VA..GUJARATI LETTER HA
+ 0ABD          ; Grapheme_Base # Lo       GUJARATI SIGN AVAGRAHA
+ 0ABE..0AC0    ; Grapheme_Base # Mc   [3] GUJARATI VOWEL SIGN AA..GUJARATI VOWEL SIGN II
+ 0AC9          ; Grapheme_Base # Mc       GUJARATI VOWEL SIGN CANDRA O
+ 0ACB..0ACC    ; Grapheme_Base # Mc   [2] GUJARATI VOWEL SIGN O..GUJARATI VOWEL SIGN AU
+ 0AD0          ; Grapheme_Base # Lo       GUJARATI OM
+ 0AE0..0AE1    ; Grapheme_Base # Lo   [2] GUJARATI LETTER VOCALIC RR..GUJARATI LETTER VOCALIC LL
+ 0AE6..0AEF    ; Grapheme_Base # Nd  [10] GUJARATI DIGIT ZERO..GUJARATI DIGIT NINE
+ 0AF0          ; Grapheme_Base # Po       GUJARATI ABBREVIATION SIGN
+ 0AF1          ; Grapheme_Base # Sc       GUJARATI RUPEE SIGN
+ 0AF9          ; Grapheme_Base # Lo       GUJARATI LETTER ZHA
+ 0B02..0B03    ; Grapheme_Base # Mc   [2] ORIYA SIGN ANUSVARA..ORIYA SIGN VISARGA
+ 0B05..0B0C    ; Grapheme_Base # Lo   [8] ORIYA LETTER A..ORIYA LETTER VOCALIC L
+ 0B0F..0B10    ; Grapheme_Base # Lo   [2] ORIYA LETTER E..ORIYA LETTER AI
+ 0B13..0B28    ; Grapheme_Base # Lo  [22] ORIYA LETTER O..ORIYA LETTER NA
+ 0B2A..0B30    ; Grapheme_Base # Lo   [7] ORIYA LETTER PA..ORIYA LETTER RA
+ 0B32..0B33    ; Grapheme_Base # Lo   [2] ORIYA LETTER LA..ORIYA LETTER LLA
+ 0B35..0B39    ; Grapheme_Base # Lo   [5] ORIYA LETTER VA..ORIYA LETTER HA
+ 0B3D          ; Grapheme_Base # Lo       ORIYA SIGN AVAGRAHA
+ 0B40          ; Grapheme_Base # Mc       ORIYA VOWEL SIGN II
+ 0B47..0B48    ; Grapheme_Base # Mc   [2] ORIYA VOWEL SIGN E..ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; Grapheme_Base # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B5C..0B5D    ; Grapheme_Base # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B5F..0B61    ; Grapheme_Base # Lo   [3] ORIYA LETTER YYA..ORIYA LETTER VOCALIC LL
+ 0B66..0B6F    ; Grapheme_Base # Nd  [10] ORIYA DIGIT ZERO..ORIYA DIGIT NINE
+ 0B70          ; Grapheme_Base # So       ORIYA ISSHAR
+ 0B71          ; Grapheme_Base # Lo       ORIYA LETTER WA
+ 0B72..0B77    ; Grapheme_Base # No   [6] ORIYA FRACTION ONE QUARTER..ORIYA FRACTION THREE SIXTEENTHS
+ 0B83          ; Grapheme_Base # Lo       TAMIL SIGN VISARGA
+ 0B85..0B8A    ; Grapheme_Base # Lo   [6] TAMIL LETTER A..TAMIL LETTER UU
+ 0B8E..0B90    ; Grapheme_Base # Lo   [3] TAMIL LETTER E..TAMIL LETTER AI
+ 0B92..0B95    ; Grapheme_Base # Lo   [4] TAMIL LETTER O..TAMIL LETTER KA
+ 0B99..0B9A    ; Grapheme_Base # Lo   [2] TAMIL LETTER NGA..TAMIL LETTER CA
+ 0B9C          ; Grapheme_Base # Lo       TAMIL LETTER JA
+ 0B9E..0B9F    ; Grapheme_Base # Lo   [2] TAMIL LETTER NYA..TAMIL LETTER TTA
+ 0BA3..0BA4    ; Grapheme_Base # Lo   [2] TAMIL LETTER NNA..TAMIL LETTER TA
+ 0BA8..0BAA    ; Grapheme_Base # Lo   [3] TAMIL LETTER NA..TAMIL LETTER PA
+ 0BAE..0BB9    ; Grapheme_Base # Lo  [12] TAMIL LETTER MA..TAMIL LETTER HA
+ 0BBF          ; Grapheme_Base # Mc       TAMIL VOWEL SIGN I
+ 0BC1..0BC2    ; Grapheme_Base # Mc   [2] TAMIL VOWEL SIGN U..TAMIL VOWEL SIGN UU
+ 0BC6..0BC8    ; Grapheme_Base # Mc   [3] TAMIL VOWEL SIGN E..TAMIL VOWEL SIGN AI
+ 0BCA..0BCC    ; Grapheme_Base # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0BD0          ; Grapheme_Base # Lo       TAMIL OM
+ 0BE6..0BEF    ; Grapheme_Base # Nd  [10] TAMIL DIGIT ZERO..TAMIL DIGIT NINE
+ 0BF0..0BF2    ; Grapheme_Base # No   [3] TAMIL NUMBER TEN..TAMIL NUMBER ONE THOUSAND
+ 0BF3..0BF8    ; Grapheme_Base # So   [6] TAMIL DAY SIGN..TAMIL AS ABOVE SIGN
+ 0BF9          ; Grapheme_Base # Sc       TAMIL RUPEE SIGN
+ 0BFA          ; Grapheme_Base # So       TAMIL NUMBER SIGN
+ 0C01..0C03    ; Grapheme_Base # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+ 0C05..0C0C    ; Grapheme_Base # Lo   [8] TELUGU LETTER A..TELUGU LETTER VOCALIC L
+ 0C0E..0C10    ; Grapheme_Base # Lo   [3] TELUGU LETTER E..TELUGU LETTER AI
+ 0C12..0C28    ; Grapheme_Base # Lo  [23] TELUGU LETTER O..TELUGU LETTER NA
+ 0C2A..0C39    ; Grapheme_Base # Lo  [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3D          ; Grapheme_Base # Lo       TELUGU SIGN AVAGRAHA
+ 0C41..0C44    ; Grapheme_Base # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
+ 0C58..0C5A    ; Grapheme_Base # Lo   [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D          ; Grapheme_Base # Lo       TELUGU LETTER NAKAARA POLLU
+ 0C60..0C61    ; Grapheme_Base # Lo   [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
+ 0C66..0C6F    ; Grapheme_Base # Nd  [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
+ 0C77          ; Grapheme_Base # Po       TELUGU SIGN SIDDHAM
+ 0C78..0C7E    ; Grapheme_Base # No   [7] TELUGU FRACTION DIGIT ZERO FOR ODD POWERS OF FOUR..TELUGU FRACTION DIGIT THREE FOR EVEN POWERS OF FOUR
+ 0C7F          ; Grapheme_Base # So       TELUGU SIGN TUUMU
+ 0C80          ; Grapheme_Base # Lo       KANNADA SIGN SPACING CANDRABINDU
+ 0C82..0C83    ; Grapheme_Base # Mc   [2] KANNADA SIGN ANUSVARA..KANNADA SIGN VISARGA
+ 0C84          ; Grapheme_Base # Po       KANNADA SIGN SIDDHAM
+ 0C85..0C8C    ; Grapheme_Base # Lo   [8] KANNADA LETTER A..KANNADA LETTER VOCALIC L
+ 0C8E..0C90    ; Grapheme_Base # Lo   [3] KANNADA LETTER E..KANNADA LETTER AI
+ 0C92..0CA8    ; Grapheme_Base # Lo  [23] KANNADA LETTER O..KANNADA LETTER NA
+ 0CAA..0CB3    ; Grapheme_Base # Lo  [10] KANNADA LETTER PA..KANNADA LETTER LLA
+ 0CB5..0CB9    ; Grapheme_Base # Lo   [5] KANNADA LETTER VA..KANNADA LETTER HA
+ 0CBD          ; Grapheme_Base # Lo       KANNADA SIGN AVAGRAHA
+ 0CBE          ; Grapheme_Base # Mc       KANNADA VOWEL SIGN AA
+ 0CC0..0CC1    ; Grapheme_Base # Mc   [2] KANNADA VOWEL SIGN II..KANNADA VOWEL SIGN U
+ 0CC3..0CC4    ; Grapheme_Base # Mc   [2] KANNADA VOWEL SIGN VOCALIC R..KANNADA VOWEL SIGN VOCALIC RR
+ 0CC7..0CC8    ; Grapheme_Base # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; Grapheme_Base # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0CDD..0CDE    ; Grapheme_Base # Lo   [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
+ 0CE0..0CE1    ; Grapheme_Base # Lo   [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
+ 0CE6..0CEF    ; Grapheme_Base # Nd  [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
+ 0CF1..0CF2    ; Grapheme_Base # Lo   [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0CF3          ; Grapheme_Base # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
+ 0D02..0D03    ; Grapheme_Base # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
+ 0D04..0D0C    ; Grapheme_Base # Lo   [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
+ 0D0E..0D10    ; Grapheme_Base # Lo   [3] MALAYALAM LETTER E..MALAYALAM LETTER AI
+ 0D12..0D3A    ; Grapheme_Base # Lo  [41] MALAYALAM LETTER O..MALAYALAM LETTER TTTA
+ 0D3D          ; Grapheme_Base # Lo       MALAYALAM SIGN AVAGRAHA
+ 0D3F..0D40    ; Grapheme_Base # Mc   [2] MALAYALAM VOWEL SIGN I..MALAYALAM VOWEL SIGN II
+ 0D46..0D48    ; Grapheme_Base # Mc   [3] MALAYALAM VOWEL SIGN E..MALAYALAM VOWEL SIGN AI
+ 0D4A..0D4C    ; Grapheme_Base # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0D4E          ; Grapheme_Base # Lo       MALAYALAM LETTER DOT REPH
+ 0D4F          ; Grapheme_Base # So       MALAYALAM SIGN PARA
+ 0D54..0D56    ; Grapheme_Base # Lo   [3] MALAYALAM LETTER CHILLU M..MALAYALAM LETTER CHILLU LLL
+ 0D58..0D5E    ; Grapheme_Base # No   [7] MALAYALAM FRACTION ONE ONE-HUNDRED-AND-SIXTIETH..MALAYALAM FRACTION ONE FIFTH
+ 0D5F..0D61    ; Grapheme_Base # Lo   [3] MALAYALAM LETTER ARCHAIC II..MALAYALAM LETTER VOCALIC LL
+ 0D66..0D6F    ; Grapheme_Base # Nd  [10] MALAYALAM DIGIT ZERO..MALAYALAM DIGIT NINE
+ 0D70..0D78    ; Grapheme_Base # No   [9] MALAYALAM NUMBER TEN..MALAYALAM FRACTION THREE SIXTEENTHS
+ 0D79          ; Grapheme_Base # So       MALAYALAM DATE MARK
+ 0D7A..0D7F    ; Grapheme_Base # Lo   [6] MALAYALAM LETTER CHILLU NN..MALAYALAM LETTER CHILLU K
+ 0D82..0D83    ; Grapheme_Base # Mc   [2] SINHALA SIGN ANUSVARAYA..SINHALA SIGN VISARGAYA
+ 0D85..0D96    ; Grapheme_Base # Lo  [18] SINHALA LETTER AYANNA..SINHALA LETTER AUYANNA
+ 0D9A..0DB1    ; Grapheme_Base # Lo  [24] SINHALA LETTER ALPAPRAANA KAYANNA..SINHALA LETTER DANTAJA NAYANNA
+ 0DB3..0DBB    ; Grapheme_Base # Lo   [9] SINHALA LETTER SANYAKA DAYANNA..SINHALA LETTER RAYANNA
+ 0DBD          ; Grapheme_Base # Lo       SINHALA LETTER DANTAJA LAYANNA
+ 0DC0..0DC6    ; Grapheme_Base # Lo   [7] SINHALA LETTER VAYANNA..SINHALA LETTER FAYANNA
+ 0DD0..0DD1    ; Grapheme_Base # Mc   [2] SINHALA VOWEL SIGN KETTI AEDA-PILLA..SINHALA VOWEL SIGN DIGA AEDA-PILLA
+ 0DD8..0DDE    ; Grapheme_Base # Mc   [7] SINHALA VOWEL SIGN GAETTA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+ 0DE6..0DEF    ; Grapheme_Base # Nd  [10] SINHALA LITH DIGIT ZERO..SINHALA LITH DIGIT NINE
+ 0DF2..0DF3    ; Grapheme_Base # Mc   [2] SINHALA VOWEL SIGN DIGA GAETTA-PILLA..SINHALA VOWEL SIGN DIGA GAYANUKITTA
+ 0DF4          ; Grapheme_Base # Po       SINHALA PUNCTUATION KUNDDALIYA
+ 0E01..0E30    ; Grapheme_Base # Lo  [48] THAI CHARACTER KO KAI..THAI CHARACTER SARA A
+ 0E32..0E33    ; Grapheme_Base # Lo   [2] THAI CHARACTER SARA AA..THAI CHARACTER SARA AM
+ 0E3F          ; Grapheme_Base # Sc       THAI CURRENCY SYMBOL BAHT
+ 0E40..0E45    ; Grapheme_Base # Lo   [6] THAI CHARACTER SARA E..THAI CHARACTER LAKKHANGYAO
+ 0E46          ; Grapheme_Base # Lm       THAI CHARACTER MAIYAMOK
+ 0E4F          ; Grapheme_Base # Po       THAI CHARACTER FONGMAN
+ 0E50..0E59    ; Grapheme_Base # Nd  [10] THAI DIGIT ZERO..THAI DIGIT NINE
+ 0E5A..0E5B    ; Grapheme_Base # Po   [2] THAI CHARACTER ANGKHANKHU..THAI CHARACTER KHOMUT
+ 0E81..0E82    ; Grapheme_Base # Lo   [2] LAO LETTER KO..LAO LETTER KHO SUNG
+ 0E84          ; Grapheme_Base # Lo       LAO LETTER KHO TAM
+ 0E86..0E8A    ; Grapheme_Base # Lo   [5] LAO LETTER PALI GHA..LAO LETTER SO TAM
+ 0E8C..0EA3    ; Grapheme_Base # Lo  [24] LAO LETTER PALI JHA..LAO LETTER LO LING
+ 0EA5          ; Grapheme_Base # Lo       LAO LETTER LO LOOT
+ 0EA7..0EB0    ; Grapheme_Base # Lo  [10] LAO LETTER WO..LAO VOWEL SIGN A
+ 0EB2..0EB3    ; Grapheme_Base # Lo   [2] LAO VOWEL SIGN AA..LAO VOWEL SIGN AM
+ 0EBD          ; Grapheme_Base # Lo       LAO SEMIVOWEL SIGN NYO
+ 0EC0..0EC4    ; Grapheme_Base # Lo   [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
+ 0EC6          ; Grapheme_Base # Lm       LAO KO LA
+ 0ED0..0ED9    ; Grapheme_Base # Nd  [10] LAO DIGIT ZERO..LAO DIGIT NINE
+ 0EDC..0EDF    ; Grapheme_Base # Lo   [4] LAO HO NO..LAO LETTER KHMU NYO
+ 0F00          ; Grapheme_Base # Lo       TIBETAN SYLLABLE OM
+ 0F01..0F03    ; Grapheme_Base # So   [3] TIBETAN MARK GTER YIG MGO TRUNCATED A..TIBETAN MARK GTER YIG MGO -UM GTER TSHEG MA
+ 0F04..0F12    ; Grapheme_Base # Po  [15] TIBETAN MARK INITIAL YIG MGO MDUN MA..TIBETAN MARK RGYA GRAM SHAD
+ 0F13          ; Grapheme_Base # So       TIBETAN MARK CARET -DZUD RTAGS ME LONG CAN
+ 0F14          ; Grapheme_Base # Po       TIBETAN MARK GTER TSHEG
+ 0F15..0F17    ; Grapheme_Base # So   [3] TIBETAN LOGOTYPE SIGN CHAD RTAGS..TIBETAN ASTROLOGICAL SIGN SGRA GCAN -CHAR RTAGS
+ 0F1A..0F1F    ; Grapheme_Base # So   [6] TIBETAN SIGN RDEL DKAR GCIG..TIBETAN SIGN RDEL DKAR RDEL NAG
+ 0F20..0F29    ; Grapheme_Base # Nd  [10] TIBETAN DIGIT ZERO..TIBETAN DIGIT NINE
+ 0F2A..0F33    ; Grapheme_Base # No  [10] TIBETAN DIGIT HALF ONE..TIBETAN DIGIT HALF ZERO
+ 0F34          ; Grapheme_Base # So       TIBETAN MARK BSDUS RTAGS
+ 0F36          ; Grapheme_Base # So       TIBETAN MARK CARET -DZUD RTAGS BZHI MIG CAN
+ 0F38          ; Grapheme_Base # So       TIBETAN MARK CHE MGO
+ 0F3A          ; Grapheme_Base # Ps       TIBETAN MARK GUG RTAGS GYON
+ 0F3B          ; Grapheme_Base # Pe       TIBETAN MARK GUG RTAGS GYAS
+ 0F3C          ; Grapheme_Base # Ps       TIBETAN MARK ANG KHANG GYON
+ 0F3D          ; Grapheme_Base # Pe       TIBETAN MARK ANG KHANG GYAS
+ 0F3E..0F3F    ; Grapheme_Base # Mc   [2] TIBETAN SIGN YAR TSHES..TIBETAN SIGN MAR TSHES
+ 0F40..0F47    ; Grapheme_Base # Lo   [8] TIBETAN LETTER KA..TIBETAN LETTER JA
+ 0F49..0F6C    ; Grapheme_Base # Lo  [36] TIBETAN LETTER NYA..TIBETAN LETTER RRA
+ 0F7F          ; Grapheme_Base # Mc       TIBETAN SIGN RNAM BCAD
+ 0F85          ; Grapheme_Base # Po       TIBETAN MARK PALUTA
+ 0F88..0F8C    ; Grapheme_Base # Lo   [5] TIBETAN SIGN LCE TSA CAN..TIBETAN SIGN INVERTED MCHU CAN
+ 0FBE..0FC5    ; Grapheme_Base # So   [8] TIBETAN KU RU KHA..TIBETAN SYMBOL RDO RJE
+ 0FC7..0FCC    ; Grapheme_Base # So   [6] TIBETAN SYMBOL RDO RJE RGYA GRAM..TIBETAN SYMBOL NOR BU BZHI -KHYIL
+ 0FCE..0FCF    ; Grapheme_Base # So   [2] TIBETAN SIGN RDEL NAG RDEL DKAR..TIBETAN SIGN RDEL NAG GSUM
+ 0FD0..0FD4    ; Grapheme_Base # Po   [5] TIBETAN MARK BSKA- SHOG GI MGO RGYAN..TIBETAN MARK CLOSING BRDA RNYING YIG MGO SGAB MA
+ 0FD5..0FD8    ; Grapheme_Base # So   [4] RIGHT-FACING SVASTI SIGN..LEFT-FACING SVASTI SIGN WITH DOTS
+ 0FD9..0FDA    ; Grapheme_Base # Po   [2] TIBETAN MARK LEADING MCHAN RTAGS..TIBETAN MARK TRAILING MCHAN RTAGS
+ 1000..102A    ; Grapheme_Base # Lo  [43] MYANMAR LETTER KA..MYANMAR LETTER AU
+ 102B..102C    ; Grapheme_Base # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
+ 1031          ; Grapheme_Base # Mc       MYANMAR VOWEL SIGN E
+ 1038          ; Grapheme_Base # Mc       MYANMAR SIGN VISARGA
+ 103B..103C    ; Grapheme_Base # Mc   [2] MYANMAR CONSONANT SIGN MEDIAL YA..MYANMAR CONSONANT SIGN MEDIAL RA
+ 103F          ; Grapheme_Base # Lo       MYANMAR LETTER GREAT SA
+ 1040..1049    ; Grapheme_Base # Nd  [10] MYANMAR DIGIT ZERO..MYANMAR DIGIT NINE
+ 104A..104F    ; Grapheme_Base # Po   [6] MYANMAR SIGN LITTLE SECTION..MYANMAR SYMBOL GENITIVE
+ 1050..1055    ; Grapheme_Base # Lo   [6] MYANMAR LETTER SHA..MYANMAR LETTER VOCALIC LL
+ 1056..1057    ; Grapheme_Base # Mc   [2] MYANMAR VOWEL SIGN VOCALIC R..MYANMAR VOWEL SIGN VOCALIC RR
+ 105A..105D    ; Grapheme_Base # Lo   [4] MYANMAR LETTER MON NGA..MYANMAR LETTER MON BBE
+ 1061          ; Grapheme_Base # Lo       MYANMAR LETTER SGAW KAREN SHA
+ 1062..1064    ; Grapheme_Base # Mc   [3] MYANMAR VOWEL SIGN SGAW KAREN EU..MYANMAR TONE MARK SGAW KAREN KE PHO
+ 1065..1066    ; Grapheme_Base # Lo   [2] MYANMAR LETTER WESTERN PWO KAREN THA..MYANMAR LETTER WESTERN PWO KAREN PWA
+ 1067..106D    ; Grapheme_Base # Mc   [7] MYANMAR VOWEL SIGN WESTERN PWO KAREN EU..MYANMAR SIGN WESTERN PWO KAREN TONE-5
+ 106E..1070    ; Grapheme_Base # Lo   [3] MYANMAR LETTER EASTERN PWO KAREN NNA..MYANMAR LETTER EASTERN PWO KAREN GHWA
+ 1075..1081    ; Grapheme_Base # Lo  [13] MYANMAR LETTER SHAN KA..MYANMAR LETTER SHAN HA
+ 1083..1084    ; Grapheme_Base # Mc   [2] MYANMAR VOWEL SIGN SHAN AA..MYANMAR VOWEL SIGN SHAN E
+ 1087..108C    ; Grapheme_Base # Mc   [6] MYANMAR SIGN SHAN TONE-2..MYANMAR SIGN SHAN COUNCIL TONE-3
+ 108E          ; Grapheme_Base # Lo       MYANMAR LETTER RUMAI PALAUNG FA
+ 108F          ; Grapheme_Base # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
+ 1090..1099    ; Grapheme_Base # Nd  [10] MYANMAR SHAN DIGIT ZERO..MYANMAR SHAN DIGIT NINE
+ 109A..109C    ; Grapheme_Base # Mc   [3] MYANMAR SIGN KHAMTI TONE-1..MYANMAR VOWEL SIGN AITON A
+ 109E..109F    ; Grapheme_Base # So   [2] MYANMAR SYMBOL SHAN ONE..MYANMAR SYMBOL SHAN EXCLAMATION
+ 10A0..10C5    ; Grapheme_Base # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Grapheme_Base # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Grapheme_Base # L&       GEORGIAN CAPITAL LETTER AEN
+ 10D0..10FA    ; Grapheme_Base # L&  [43] GEORGIAN LETTER AN..GEORGIAN LETTER AIN
+ 10FB          ; Grapheme_Base # Po       GEORGIAN PARAGRAPH SEPARATOR
+ 10FC          ; Grapheme_Base # Lm       MODIFIER LETTER GEORGIAN NAR
+ 10FD..10FF    ; Grapheme_Base # L&   [3] GEORGIAN LETTER AEN..GEORGIAN LETTER LABIAL SIGN
+ 1100..1248    ; Grapheme_Base # Lo [329] HANGUL CHOSEONG KIYEOK..ETHIOPIC SYLLABLE QWA
+ 124A..124D    ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE QWI..ETHIOPIC SYLLABLE QWE
+ 1250..1256    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE QHA..ETHIOPIC SYLLABLE QHO
+ 1258          ; Grapheme_Base # Lo       ETHIOPIC SYLLABLE QHWA
+ 125A..125D    ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE QHWI..ETHIOPIC SYLLABLE QHWE
+ 1260..1288    ; Grapheme_Base # Lo  [41] ETHIOPIC SYLLABLE BA..ETHIOPIC SYLLABLE XWA
+ 128A..128D    ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE XWI..ETHIOPIC SYLLABLE XWE
+ 1290..12B0    ; Grapheme_Base # Lo  [33] ETHIOPIC SYLLABLE NA..ETHIOPIC SYLLABLE KWA
+ 12B2..12B5    ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE KWI..ETHIOPIC SYLLABLE KWE
+ 12B8..12BE    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE KXA..ETHIOPIC SYLLABLE KXO
+ 12C0          ; Grapheme_Base # Lo       ETHIOPIC SYLLABLE KXWA
+ 12C2..12C5    ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE KXWI..ETHIOPIC SYLLABLE KXWE
+ 12C8..12D6    ; Grapheme_Base # Lo  [15] ETHIOPIC SYLLABLE WA..ETHIOPIC SYLLABLE PHARYNGEAL O
+ 12D8..1310    ; Grapheme_Base # Lo  [57] ETHIOPIC SYLLABLE ZA..ETHIOPIC SYLLABLE GWA
+ 1312..1315    ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE GWI..ETHIOPIC SYLLABLE GWE
+ 1318..135A    ; Grapheme_Base # Lo  [67] ETHIOPIC SYLLABLE GGA..ETHIOPIC SYLLABLE FYA
+ 1360..1368    ; Grapheme_Base # Po   [9] ETHIOPIC SECTION MARK..ETHIOPIC PARAGRAPH SEPARATOR
+ 1369..137C    ; Grapheme_Base # No  [20] ETHIOPIC DIGIT ONE..ETHIOPIC NUMBER TEN THOUSAND
+ 1380..138F    ; Grapheme_Base # Lo  [16] ETHIOPIC SYLLABLE SEBATBEIT MWA..ETHIOPIC SYLLABLE PWE
+ 1390..1399    ; Grapheme_Base # So  [10] ETHIOPIC TONAL MARK YIZET..ETHIOPIC TONAL MARK KURT
+ 13A0..13F5    ; Grapheme_Base # L&  [86] CHEROKEE LETTER A..CHEROKEE LETTER MV
+ 13F8..13FD    ; Grapheme_Base # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 1400          ; Grapheme_Base # Pd       CANADIAN SYLLABICS HYPHEN
+ 1401..166C    ; Grapheme_Base # Lo [620] CANADIAN SYLLABICS E..CANADIAN SYLLABICS CARRIER TTSA
+ 166D          ; Grapheme_Base # So       CANADIAN SYLLABICS CHI SIGN
+ 166E          ; Grapheme_Base # Po       CANADIAN SYLLABICS FULL STOP
+ 166F..167F    ; Grapheme_Base # Lo  [17] CANADIAN SYLLABICS QAI..CANADIAN SYLLABICS BLACKFOOT W
+ 1680          ; Grapheme_Base # Zs       OGHAM SPACE MARK
+ 1681..169A    ; Grapheme_Base # Lo  [26] OGHAM LETTER BEITH..OGHAM LETTER PEITH
+ 169B          ; Grapheme_Base # Ps       OGHAM FEATHER MARK
+ 169C          ; Grapheme_Base # Pe       OGHAM REVERSED FEATHER MARK
+ 16A0..16EA    ; Grapheme_Base # Lo  [75] RUNIC LETTER FEHU FEOH FE F..RUNIC LETTER X
+ 16EB..16ED    ; Grapheme_Base # Po   [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
+ 16EE..16F0    ; Grapheme_Base # Nl   [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
+ 16F1..16F8    ; Grapheme_Base # Lo   [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
+ 1700..1711    ; Grapheme_Base # Lo  [18] TAGALOG LETTER A..TAGALOG LETTER HA
+ 1715          ; Grapheme_Base # Mc       TAGALOG SIGN PAMUDPOD
+ 171F..1731    ; Grapheme_Base # Lo  [19] TAGALOG LETTER ARCHAIC RA..HANUNOO LETTER HA
+ 1734          ; Grapheme_Base # Mc       HANUNOO SIGN PAMUDPOD
+ 1735..1736    ; Grapheme_Base # Po   [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
+ 1740..1751    ; Grapheme_Base # Lo  [18] BUHID LETTER A..BUHID LETTER HA
+ 1760..176C    ; Grapheme_Base # Lo  [13] TAGBANWA LETTER A..TAGBANWA LETTER YA
+ 176E..1770    ; Grapheme_Base # Lo   [3] TAGBANWA LETTER LA..TAGBANWA LETTER SA
+ 1780..17B3    ; Grapheme_Base # Lo  [52] KHMER LETTER KA..KHMER INDEPENDENT VOWEL QAU
+ 17B6          ; Grapheme_Base # Mc       KHMER VOWEL SIGN AA
+ 17BE..17C5    ; Grapheme_Base # Mc   [8] KHMER VOWEL SIGN OE..KHMER VOWEL SIGN AU
+ 17C7..17C8    ; Grapheme_Base # Mc   [2] KHMER SIGN REAHMUK..KHMER SIGN YUUKALEAPINTU
+ 17D4..17D6    ; Grapheme_Base # Po   [3] KHMER SIGN KHAN..KHMER SIGN CAMNUC PII KUUH
+ 17D7          ; Grapheme_Base # Lm       KHMER SIGN LEK TOO
+ 17D8..17DA    ; Grapheme_Base # Po   [3] KHMER SIGN BEYYAL..KHMER SIGN KOOMUUT
+ 17DB          ; Grapheme_Base # Sc       KHMER CURRENCY SYMBOL RIEL
+ 17DC          ; Grapheme_Base # Lo       KHMER SIGN AVAKRAHASANYA
+ 17E0..17E9    ; Grapheme_Base # Nd  [10] KHMER DIGIT ZERO..KHMER DIGIT NINE
+ 17F0..17F9    ; Grapheme_Base # No  [10] KHMER SYMBOL LEK ATTAK SON..KHMER SYMBOL LEK ATTAK PRAM-BUON
+ 1800..1805    ; Grapheme_Base # Po   [6] MONGOLIAN BIRGA..MONGOLIAN FOUR DOTS
+ 1806          ; Grapheme_Base # Pd       MONGOLIAN TODO SOFT HYPHEN
+ 1807..180A    ; Grapheme_Base # Po   [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
+ 1810..1819    ; Grapheme_Base # Nd  [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
+ 1820..1842    ; Grapheme_Base # Lo  [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
+ 1843          ; Grapheme_Base # Lm       MONGOLIAN LETTER TODO LONG VOWEL SIGN
+ 1844..1878    ; Grapheme_Base # Lo  [53] MONGOLIAN LETTER TODO E..MONGOLIAN LETTER CHA WITH TWO DOTS
+ 1880..1884    ; Grapheme_Base # Lo   [5] MONGOLIAN LETTER ALI GALI ANUSVARA ONE..MONGOLIAN LETTER ALI GALI INVERTED UBADAMA
+ 1887..18A8    ; Grapheme_Base # Lo  [34] MONGOLIAN LETTER ALI GALI A..MONGOLIAN LETTER MANCHU ALI GALI BHA
+ 18AA          ; Grapheme_Base # Lo       MONGOLIAN LETTER MANCHU ALI GALI LHA
+ 18B0..18F5    ; Grapheme_Base # Lo  [70] CANADIAN SYLLABICS OY..CANADIAN SYLLABICS CARRIER DENTAL S
+ 1900..191E    ; Grapheme_Base # Lo  [31] LIMBU VOWEL-CARRIER LETTER..LIMBU LETTER TRA
+ 1923..1926    ; Grapheme_Base # Mc   [4] LIMBU VOWEL SIGN EE..LIMBU VOWEL SIGN AU
+ 1929..192B    ; Grapheme_Base # Mc   [3] LIMBU SUBJOINED LETTER YA..LIMBU SUBJOINED LETTER WA
+ 1930..1931    ; Grapheme_Base # Mc   [2] LIMBU SMALL LETTER KA..LIMBU SMALL LETTER NGA
+ 1933..1938    ; Grapheme_Base # Mc   [6] LIMBU SMALL LETTER TA..LIMBU SMALL LETTER LA
+ 1940          ; Grapheme_Base # So       LIMBU SIGN LOO
+ 1944..1945    ; Grapheme_Base # Po   [2] LIMBU EXCLAMATION MARK..LIMBU QUESTION MARK
+ 1946..194F    ; Grapheme_Base # Nd  [10] LIMBU DIGIT ZERO..LIMBU DIGIT NINE
+ 1950..196D    ; Grapheme_Base # Lo  [30] TAI LE LETTER KA..TAI LE LETTER AI
+ 1970..1974    ; Grapheme_Base # Lo   [5] TAI LE LETTER TONE-2..TAI LE LETTER TONE-6
+ 1980..19AB    ; Grapheme_Base # Lo  [44] NEW TAI LUE LETTER HIGH QA..NEW TAI LUE LETTER LOW SUA
+ 19B0..19C9    ; Grapheme_Base # Lo  [26] NEW TAI LUE VOWEL SIGN VOWEL SHORTENER..NEW TAI LUE TONE MARK-2
+ 19D0..19D9    ; Grapheme_Base # Nd  [10] NEW TAI LUE DIGIT ZERO..NEW TAI LUE DIGIT NINE
+ 19DA          ; Grapheme_Base # No       NEW TAI LUE THAM DIGIT ONE
+ 19DE..19FF    ; Grapheme_Base # So  [34] NEW TAI LUE SIGN LAE..KHMER SYMBOL DAP-PRAM ROC
+ 1A00..1A16    ; Grapheme_Base # Lo  [23] BUGINESE LETTER KA..BUGINESE LETTER HA
+ 1A19..1A1A    ; Grapheme_Base # Mc   [2] BUGINESE VOWEL SIGN E..BUGINESE VOWEL SIGN O
+ 1A1E..1A1F    ; Grapheme_Base # Po   [2] BUGINESE PALLAWA..BUGINESE END OF SECTION
+ 1A20..1A54    ; Grapheme_Base # Lo  [53] TAI THAM LETTER HIGH KA..TAI THAM LETTER GREAT SA
+ 1A55          ; Grapheme_Base # Mc       TAI THAM CONSONANT SIGN MEDIAL RA
+ 1A57          ; Grapheme_Base # Mc       TAI THAM CONSONANT SIGN LA TANG LAI
+ 1A61          ; Grapheme_Base # Mc       TAI THAM VOWEL SIGN A
+ 1A63..1A64    ; Grapheme_Base # Mc   [2] TAI THAM VOWEL SIGN AA..TAI THAM VOWEL SIGN TALL AA
+ 1A6D..1A72    ; Grapheme_Base # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
+ 1A80..1A89    ; Grapheme_Base # Nd  [10] TAI THAM HORA DIGIT ZERO..TAI THAM HORA DIGIT NINE
+ 1A90..1A99    ; Grapheme_Base # Nd  [10] TAI THAM THAM DIGIT ZERO..TAI THAM THAM DIGIT NINE
+ 1AA0..1AA6    ; Grapheme_Base # Po   [7] TAI THAM SIGN WIANG..TAI THAM SIGN REVERSED ROTATED RANA
+ 1AA7          ; Grapheme_Base # Lm       TAI THAM SIGN MAI YAMOK
+ 1AA8..1AAD    ; Grapheme_Base # Po   [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
+ 1B04          ; Grapheme_Base # Mc       BALINESE SIGN BISAH
+ 1B05..1B33    ; Grapheme_Base # Lo  [47] BALINESE LETTER AKARA..BALINESE LETTER HA
+ 1B3B          ; Grapheme_Base # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3D..1B41    ; Grapheme_Base # Mc   [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B43..1B44    ; Grapheme_Base # Mc   [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
+ 1B45..1B4C    ; Grapheme_Base # Lo   [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
+ 1B50..1B59    ; Grapheme_Base # Nd  [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
+ 1B5A..1B60    ; Grapheme_Base # Po   [7] BALINESE PANTI..BALINESE PAMENENG
+ 1B61..1B6A    ; Grapheme_Base # So  [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
+ 1B74..1B7C    ; Grapheme_Base # So   [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+ 1B7D..1B7E    ; Grapheme_Base # Po   [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
+ 1B82          ; Grapheme_Base # Mc       SUNDANESE SIGN PANGWISAD
+ 1B83..1BA0    ; Grapheme_Base # Lo  [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
+ 1BA1          ; Grapheme_Base # Mc       SUNDANESE CONSONANT SIGN PAMINGKAL
+ 1BA6..1BA7    ; Grapheme_Base # Mc   [2] SUNDANESE VOWEL SIGN PANAELAENG..SUNDANESE VOWEL SIGN PANOLONG
+ 1BAA          ; Grapheme_Base # Mc       SUNDANESE SIGN PAMAAEH
+ 1BAE..1BAF    ; Grapheme_Base # Lo   [2] SUNDANESE LETTER KHA..SUNDANESE LETTER SYA
+ 1BB0..1BB9    ; Grapheme_Base # Nd  [10] SUNDANESE DIGIT ZERO..SUNDANESE DIGIT NINE
+ 1BBA..1BE5    ; Grapheme_Base # Lo  [44] SUNDANESE AVAGRAHA..BATAK LETTER U
+ 1BE7          ; Grapheme_Base # Mc       BATAK VOWEL SIGN E
+ 1BEA..1BEC    ; Grapheme_Base # Mc   [3] BATAK VOWEL SIGN I..BATAK VOWEL SIGN O
+ 1BEE          ; Grapheme_Base # Mc       BATAK VOWEL SIGN U
+ 1BF2..1BF3    ; Grapheme_Base # Mc   [2] BATAK PANGOLAT..BATAK PANONGONAN
+ 1BFC..1BFF    ; Grapheme_Base # Po   [4] BATAK SYMBOL BINDU NA METEK..BATAK SYMBOL BINDU PANGOLAT
+ 1C00..1C23    ; Grapheme_Base # Lo  [36] LEPCHA LETTER KA..LEPCHA LETTER A
+ 1C24..1C2B    ; Grapheme_Base # Mc   [8] LEPCHA SUBJOINED LETTER YA..LEPCHA VOWEL SIGN UU
+ 1C34..1C35    ; Grapheme_Base # Mc   [2] LEPCHA CONSONANT SIGN NYIN-DO..LEPCHA CONSONANT SIGN KANG
+ 1C3B..1C3F    ; Grapheme_Base # Po   [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
+ 1C40..1C49    ; Grapheme_Base # Nd  [10] LEPCHA DIGIT ZERO..LEPCHA DIGIT NINE
+ 1C4D..1C4F    ; Grapheme_Base # Lo   [3] LEPCHA LETTER TTA..LEPCHA LETTER DDA
+ 1C50..1C59    ; Grapheme_Base # Nd  [10] OL CHIKI DIGIT ZERO..OL CHIKI DIGIT NINE
+ 1C5A..1C77    ; Grapheme_Base # Lo  [30] OL CHIKI LETTER LA..OL CHIKI LETTER OH
+ 1C78..1C7D    ; Grapheme_Base # Lm   [6] OL CHIKI MU TTUDDAG..OL CHIKI AHAD
+ 1C7E..1C7F    ; Grapheme_Base # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
+ 1C80..1C88    ; Grapheme_Base # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; Grapheme_Base # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Grapheme_Base # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1CC0..1CC7    ; Grapheme_Base # Po   [8] SUNDANESE PUNCTUATION BINDU SURYA..SUNDANESE PUNCTUATION BINDU BA SATANGA
+ 1CD3          ; Grapheme_Base # Po       VEDIC SIGN NIHSHVASA
+ 1CE1          ; Grapheme_Base # Mc       VEDIC TONE ATHARVAVEDIC INDEPENDENT SVARITA
+ 1CE9..1CEC    ; Grapheme_Base # Lo   [4] VEDIC SIGN ANUSVARA ANTARGOMUKHA..VEDIC SIGN ANUSVARA VAMAGOMUKHA WITH TAIL
+ 1CEE..1CF3    ; Grapheme_Base # Lo   [6] VEDIC SIGN HEXIFORM LONG ANUSVARA..VEDIC SIGN ROTATED ARDHAVISARGA
+ 1CF5..1CF6    ; Grapheme_Base # Lo   [2] VEDIC SIGN JIHVAMULIYA..VEDIC SIGN UPADHMANIYA
+ 1CF7          ; Grapheme_Base # Mc       VEDIC SIGN ATIKRAMA
+ 1CFA          ; Grapheme_Base # Lo       VEDIC SIGN DOUBLE ANUSVARA ANTARGOMUKHA
+ 1D00..1D2B    ; Grapheme_Base # L&  [44] LATIN LETTER SMALL CAPITAL A..CYRILLIC LETTER SMALL CAPITAL EL
+ 1D2C..1D6A    ; Grapheme_Base # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D6B..1D77    ; Grapheme_Base # L&  [13] LATIN SMALL LETTER UE..LATIN SMALL LETTER TURNED G
+ 1D78          ; Grapheme_Base # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D79..1D9A    ; Grapheme_Base # L&  [34] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
+ 1D9B..1DBF    ; Grapheme_Base # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E00..1F15    ; Grapheme_Base # L& [278] LATIN CAPITAL LETTER A WITH RING BELOW..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; Grapheme_Base # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; Grapheme_Base # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; Grapheme_Base # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Grapheme_Base # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; Grapheme_Base # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Grapheme_Base # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Grapheme_Base # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; Grapheme_Base # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Grapheme_Base # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; Grapheme_Base # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBD          ; Grapheme_Base # Sk       GREEK KORONIS
+ 1FBE          ; Grapheme_Base # L&       GREEK PROSGEGRAMMENI
+ 1FBF..1FC1    ; Grapheme_Base # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2..1FC4    ; Grapheme_Base # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; Grapheme_Base # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD..1FCF    ; Grapheme_Base # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD0..1FD3    ; Grapheme_Base # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; Grapheme_Base # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; Grapheme_Base # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE0..1FEC    ; Grapheme_Base # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED..1FEF    ; Grapheme_Base # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+ 1FF2..1FF4    ; Grapheme_Base # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; Grapheme_Base # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 1FFD..1FFE    ; Grapheme_Base # Sk   [2] GREEK OXIA..GREEK DASIA
+ 2000..200A    ; Grapheme_Base # Zs  [11] EN QUAD..HAIR SPACE
+ 2010..2015    ; Grapheme_Base # Pd   [6] HYPHEN..HORIZONTAL BAR
+ 2016..2017    ; Grapheme_Base # Po   [2] DOUBLE VERTICAL LINE..DOUBLE LOW LINE
+ 2018          ; Grapheme_Base # Pi       LEFT SINGLE QUOTATION MARK
+ 2019          ; Grapheme_Base # Pf       RIGHT SINGLE QUOTATION MARK
+ 201A          ; Grapheme_Base # Ps       SINGLE LOW-9 QUOTATION MARK
+ 201B..201C    ; Grapheme_Base # Pi   [2] SINGLE HIGH-REVERSED-9 QUOTATION MARK..LEFT DOUBLE QUOTATION MARK
+ 201D          ; Grapheme_Base # Pf       RIGHT DOUBLE QUOTATION MARK
+ 201E          ; Grapheme_Base # Ps       DOUBLE LOW-9 QUOTATION MARK
+ 201F          ; Grapheme_Base # Pi       DOUBLE HIGH-REVERSED-9 QUOTATION MARK
+ 2020..2027    ; Grapheme_Base # Po   [8] DAGGER..HYPHENATION POINT
+ 202F          ; Grapheme_Base # Zs       NARROW NO-BREAK SPACE
+ 2030..2038    ; Grapheme_Base # Po   [9] PER MILLE SIGN..CARET
+ 2039          ; Grapheme_Base # Pi       SINGLE LEFT-POINTING ANGLE QUOTATION MARK
+ 203A          ; Grapheme_Base # Pf       SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
+ 203B..203E    ; Grapheme_Base # Po   [4] REFERENCE MARK..OVERLINE
+ 203F..2040    ; Grapheme_Base # Pc   [2] UNDERTIE..CHARACTER TIE
+ 2041..2043    ; Grapheme_Base # Po   [3] CARET INSERTION POINT..HYPHEN BULLET
+ 2044          ; Grapheme_Base # Sm       FRACTION SLASH
+ 2045          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET WITH QUILL
+ 2046          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET WITH QUILL
+ 2047..2051    ; Grapheme_Base # Po  [11] DOUBLE QUESTION MARK..TWO ASTERISKS ALIGNED VERTICALLY
+ 2052          ; Grapheme_Base # Sm       COMMERCIAL MINUS SIGN
+ 2053          ; Grapheme_Base # Po       SWUNG DASH
+ 2054          ; Grapheme_Base # Pc       INVERTED UNDERTIE
+ 2055..205E    ; Grapheme_Base # Po  [10] FLOWER PUNCTUATION MARK..VERTICAL FOUR DOTS
+ 205F          ; Grapheme_Base # Zs       MEDIUM MATHEMATICAL SPACE
+ 2070          ; Grapheme_Base # No       SUPERSCRIPT ZERO
+ 2071          ; Grapheme_Base # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 2074..2079    ; Grapheme_Base # No   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+ 207A..207C    ; Grapheme_Base # Sm   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+ 207D          ; Grapheme_Base # Ps       SUPERSCRIPT LEFT PARENTHESIS
+ 207E          ; Grapheme_Base # Pe       SUPERSCRIPT RIGHT PARENTHESIS
+ 207F          ; Grapheme_Base # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2080..2089    ; Grapheme_Base # No  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+ 208A..208C    ; Grapheme_Base # Sm   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+ 208D          ; Grapheme_Base # Ps       SUBSCRIPT LEFT PARENTHESIS
+ 208E          ; Grapheme_Base # Pe       SUBSCRIPT RIGHT PARENTHESIS
+ 2090..209C    ; Grapheme_Base # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20A0..20C0    ; Grapheme_Base # Sc  [33] EURO-CURRENCY SIGN..SOM SIGN
+ 2100..2101    ; Grapheme_Base # So   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+ 2102          ; Grapheme_Base # L&       DOUBLE-STRUCK CAPITAL C
+ 2103..2106    ; Grapheme_Base # So   [4] DEGREE CELSIUS..CADA UNA
+ 2107          ; Grapheme_Base # L&       EULER CONSTANT
+ 2108..2109    ; Grapheme_Base # So   [2] SCRUPLE..DEGREE FAHRENHEIT
+ 210A..2113    ; Grapheme_Base # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2114          ; Grapheme_Base # So       L B BAR SYMBOL
+ 2115          ; Grapheme_Base # L&       DOUBLE-STRUCK CAPITAL N
+ 2116..2117    ; Grapheme_Base # So   [2] NUMERO SIGN..SOUND RECORDING COPYRIGHT
+ 2118          ; Grapheme_Base # Sm       SCRIPT CAPITAL P
+ 2119..211D    ; Grapheme_Base # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 211E..2123    ; Grapheme_Base # So   [6] PRESCRIPTION TAKE..VERSICLE
+ 2124          ; Grapheme_Base # L&       DOUBLE-STRUCK CAPITAL Z
+ 2125          ; Grapheme_Base # So       OUNCE SIGN
+ 2126          ; Grapheme_Base # L&       OHM SIGN
+ 2127          ; Grapheme_Base # So       INVERTED OHM SIGN
+ 2128          ; Grapheme_Base # L&       BLACK-LETTER CAPITAL Z
+ 2129          ; Grapheme_Base # So       TURNED GREEK SMALL LETTER IOTA
+ 212A..212D    ; Grapheme_Base # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212E          ; Grapheme_Base # So       ESTIMATED SYMBOL
+ 212F..2134    ; Grapheme_Base # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; Grapheme_Base # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; Grapheme_Base # L&       INFORMATION SOURCE
+ 213A..213B    ; Grapheme_Base # So   [2] ROTATED CAPITAL Q..FACSIMILE SIGN
+ 213C..213F    ; Grapheme_Base # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2140..2144    ; Grapheme_Base # Sm   [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+ 2145..2149    ; Grapheme_Base # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 214A          ; Grapheme_Base # So       PROPERTY LINE
+ 214B          ; Grapheme_Base # Sm       TURNED AMPERSAND
+ 214C..214D    ; Grapheme_Base # So   [2] PER SIGN..AKTIESELSKAB
+ 214E          ; Grapheme_Base # L&       TURNED SMALL F
+ 214F          ; Grapheme_Base # So       SYMBOL FOR SAMARITAN SOURCE
+ 2150..215F    ; Grapheme_Base # No  [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+ 2160..2182    ; Grapheme_Base # Nl  [35] ROMAN NUMERAL ONE..ROMAN NUMERAL TEN THOUSAND
+ 2183..2184    ; Grapheme_Base # L&   [2] ROMAN NUMERAL REVERSED ONE HUNDRED..LATIN SMALL LETTER REVERSED C
+ 2185..2188    ; Grapheme_Base # Nl   [4] ROMAN NUMERAL SIX LATE FORM..ROMAN NUMERAL ONE HUNDRED THOUSAND
+ 2189          ; Grapheme_Base # No       VULGAR FRACTION ZERO THIRDS
+ 218A..218B    ; Grapheme_Base # So   [2] TURNED DIGIT TWO..TURNED DIGIT THREE
+ 2190..2194    ; Grapheme_Base # Sm   [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+ 2195..2199    ; Grapheme_Base # So   [5] UP DOWN ARROW..SOUTH WEST ARROW
+ 219A..219B    ; Grapheme_Base # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+ 219C..219F    ; Grapheme_Base # So   [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+ 21A0          ; Grapheme_Base # Sm       RIGHTWARDS TWO HEADED ARROW
+ 21A1..21A2    ; Grapheme_Base # So   [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+ 21A3          ; Grapheme_Base # Sm       RIGHTWARDS ARROW WITH TAIL
+ 21A4..21A5    ; Grapheme_Base # So   [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+ 21A6          ; Grapheme_Base # Sm       RIGHTWARDS ARROW FROM BAR
+ 21A7..21AD    ; Grapheme_Base # So   [7] DOWNWARDS ARROW FROM BAR..LEFT RIGHT WAVE ARROW
+ 21AE          ; Grapheme_Base # Sm       LEFT RIGHT ARROW WITH STROKE
+ 21AF..21CD    ; Grapheme_Base # So  [31] DOWNWARDS ZIGZAG ARROW..LEFTWARDS DOUBLE ARROW WITH STROKE
+ 21CE..21CF    ; Grapheme_Base # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+ 21D0..21D1    ; Grapheme_Base # So   [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+ 21D2          ; Grapheme_Base # Sm       RIGHTWARDS DOUBLE ARROW
+ 21D3          ; Grapheme_Base # So       DOWNWARDS DOUBLE ARROW
+ 21D4          ; Grapheme_Base # Sm       LEFT RIGHT DOUBLE ARROW
+ 21D5..21F3    ; Grapheme_Base # So  [31] UP DOWN DOUBLE ARROW..UP DOWN WHITE ARROW
+ 21F4..22FF    ; Grapheme_Base # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+ 2300..2307    ; Grapheme_Base # So   [8] DIAMETER SIGN..WAVY LINE
+ 2308          ; Grapheme_Base # Ps       LEFT CEILING
+ 2309          ; Grapheme_Base # Pe       RIGHT CEILING
+ 230A          ; Grapheme_Base # Ps       LEFT FLOOR
+ 230B          ; Grapheme_Base # Pe       RIGHT FLOOR
+ 230C..231F    ; Grapheme_Base # So  [20] BOTTOM RIGHT CROP..BOTTOM RIGHT CORNER
+ 2320..2321    ; Grapheme_Base # Sm   [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+ 2322..2328    ; Grapheme_Base # So   [7] FROWN..KEYBOARD
+ 2329          ; Grapheme_Base # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; Grapheme_Base # Pe       RIGHT-POINTING ANGLE BRACKET
+ 232B..237B    ; Grapheme_Base # So  [81] ERASE TO THE LEFT..NOT CHECK MARK
+ 237C          ; Grapheme_Base # Sm       RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+ 237D..239A    ; Grapheme_Base # So  [30] SHOULDERED OPEN BOX..CLEAR SCREEN SYMBOL
+ 239B..23B3    ; Grapheme_Base # Sm  [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+ 23B4..23DB    ; Grapheme_Base # So  [40] TOP SQUARE BRACKET..FUSE
+ 23DC..23E1    ; Grapheme_Base # Sm   [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+ 23E2..2426    ; Grapheme_Base # So  [69] WHITE TRAPEZIUM..SYMBOL FOR SUBSTITUTE FORM TWO
+ 2440..244A    ; Grapheme_Base # So  [11] OCR HOOK..OCR DOUBLE BACKSLASH
+ 2460..249B    ; Grapheme_Base # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+ 249C..24E9    ; Grapheme_Base # So  [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 24EA..24FF    ; Grapheme_Base # No  [22] CIRCLED DIGIT ZERO..NEGATIVE CIRCLED DIGIT ZERO
+ 2500..25B6    ; Grapheme_Base # So [183] BOX DRAWINGS LIGHT HORIZONTAL..BLACK RIGHT-POINTING TRIANGLE
+ 25B7          ; Grapheme_Base # Sm       WHITE RIGHT-POINTING TRIANGLE
+ 25B8..25C0    ; Grapheme_Base # So   [9] BLACK RIGHT-POINTING SMALL TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+ 25C1          ; Grapheme_Base # Sm       WHITE LEFT-POINTING TRIANGLE
+ 25C2..25F7    ; Grapheme_Base # So  [54] BLACK LEFT-POINTING SMALL TRIANGLE..WHITE CIRCLE WITH UPPER RIGHT QUADRANT
+ 25F8..25FF    ; Grapheme_Base # Sm   [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+ 2600..266E    ; Grapheme_Base # So [111] BLACK SUN WITH RAYS..MUSIC NATURAL SIGN
+ 266F          ; Grapheme_Base # Sm       MUSIC SHARP SIGN
+ 2670..2767    ; Grapheme_Base # So [248] WEST SYRIAC CROSS..ROTATED FLORAL HEART BULLET
+ 2768          ; Grapheme_Base # Ps       MEDIUM LEFT PARENTHESIS ORNAMENT
+ 2769          ; Grapheme_Base # Pe       MEDIUM RIGHT PARENTHESIS ORNAMENT
+ 276A          ; Grapheme_Base # Ps       MEDIUM FLATTENED LEFT PARENTHESIS ORNAMENT
+ 276B          ; Grapheme_Base # Pe       MEDIUM FLATTENED RIGHT PARENTHESIS ORNAMENT
+ 276C          ; Grapheme_Base # Ps       MEDIUM LEFT-POINTING ANGLE BRACKET ORNAMENT
+ 276D          ; Grapheme_Base # Pe       MEDIUM RIGHT-POINTING ANGLE BRACKET ORNAMENT
+ 276E          ; Grapheme_Base # Ps       HEAVY LEFT-POINTING ANGLE QUOTATION MARK ORNAMENT
+ 276F          ; Grapheme_Base # Pe       HEAVY RIGHT-POINTING ANGLE QUOTATION MARK ORNAMENT
+ 2770          ; Grapheme_Base # Ps       HEAVY LEFT-POINTING ANGLE BRACKET ORNAMENT
+ 2771          ; Grapheme_Base # Pe       HEAVY RIGHT-POINTING ANGLE BRACKET ORNAMENT
+ 2772          ; Grapheme_Base # Ps       LIGHT LEFT TORTOISE SHELL BRACKET ORNAMENT
+ 2773          ; Grapheme_Base # Pe       LIGHT RIGHT TORTOISE SHELL BRACKET ORNAMENT
+ 2774          ; Grapheme_Base # Ps       MEDIUM LEFT CURLY BRACKET ORNAMENT
+ 2775          ; Grapheme_Base # Pe       MEDIUM RIGHT CURLY BRACKET ORNAMENT
+ 2776..2793    ; Grapheme_Base # No  [30] DINGBAT NEGATIVE CIRCLED DIGIT ONE..DINGBAT NEGATIVE CIRCLED SANS-SERIF NUMBER TEN
+ 2794..27BF    ; Grapheme_Base # So  [44] HEAVY WIDE-HEADED RIGHTWARDS ARROW..DOUBLE CURLY LOOP
+ 27C0..27C4    ; Grapheme_Base # Sm   [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+ 27C5          ; Grapheme_Base # Ps       LEFT S-SHAPED BAG DELIMITER
+ 27C6          ; Grapheme_Base # Pe       RIGHT S-SHAPED BAG DELIMITER
+ 27C7..27E5    ; Grapheme_Base # Sm  [31] OR WITH DOT INSIDE..WHITE SQUARE WITH RIGHTWARDS TICK
+ 27E6          ; Grapheme_Base # Ps       MATHEMATICAL LEFT WHITE SQUARE BRACKET
+ 27E7          ; Grapheme_Base # Pe       MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+ 27E8          ; Grapheme_Base # Ps       MATHEMATICAL LEFT ANGLE BRACKET
+ 27E9          ; Grapheme_Base # Pe       MATHEMATICAL RIGHT ANGLE BRACKET
+ 27EA          ; Grapheme_Base # Ps       MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+ 27EB          ; Grapheme_Base # Pe       MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+ 27EC          ; Grapheme_Base # Ps       MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+ 27ED          ; Grapheme_Base # Pe       MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+ 27EE          ; Grapheme_Base # Ps       MATHEMATICAL LEFT FLATTENED PARENTHESIS
+ 27EF          ; Grapheme_Base # Pe       MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+ 27F0..27FF    ; Grapheme_Base # Sm  [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+ 2800..28FF    ; Grapheme_Base # So [256] BRAILLE PATTERN BLANK..BRAILLE PATTERN DOTS-12345678
+ 2900..2982    ; Grapheme_Base # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+ 2983          ; Grapheme_Base # Ps       LEFT WHITE CURLY BRACKET
+ 2984          ; Grapheme_Base # Pe       RIGHT WHITE CURLY BRACKET
+ 2985          ; Grapheme_Base # Ps       LEFT WHITE PARENTHESIS
+ 2986          ; Grapheme_Base # Pe       RIGHT WHITE PARENTHESIS
+ 2987          ; Grapheme_Base # Ps       Z NOTATION LEFT IMAGE BRACKET
+ 2988          ; Grapheme_Base # Pe       Z NOTATION RIGHT IMAGE BRACKET
+ 2989          ; Grapheme_Base # Ps       Z NOTATION LEFT BINDING BRACKET
+ 298A          ; Grapheme_Base # Pe       Z NOTATION RIGHT BINDING BRACKET
+ 298B          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET WITH UNDERBAR
+ 298C          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET WITH UNDERBAR
+ 298D          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+ 298E          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+ 298F          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+ 2990          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+ 2991          ; Grapheme_Base # Ps       LEFT ANGLE BRACKET WITH DOT
+ 2992          ; Grapheme_Base # Pe       RIGHT ANGLE BRACKET WITH DOT
+ 2993          ; Grapheme_Base # Ps       LEFT ARC LESS-THAN BRACKET
+ 2994          ; Grapheme_Base # Pe       RIGHT ARC GREATER-THAN BRACKET
+ 2995          ; Grapheme_Base # Ps       DOUBLE LEFT ARC GREATER-THAN BRACKET
+ 2996          ; Grapheme_Base # Pe       DOUBLE RIGHT ARC LESS-THAN BRACKET
+ 2997          ; Grapheme_Base # Ps       LEFT BLACK TORTOISE SHELL BRACKET
+ 2998          ; Grapheme_Base # Pe       RIGHT BLACK TORTOISE SHELL BRACKET
+ 2999..29D7    ; Grapheme_Base # Sm  [63] DOTTED FENCE..BLACK HOURGLASS
+ 29D8          ; Grapheme_Base # Ps       LEFT WIGGLY FENCE
+ 29D9          ; Grapheme_Base # Pe       RIGHT WIGGLY FENCE
+ 29DA          ; Grapheme_Base # Ps       LEFT DOUBLE WIGGLY FENCE
+ 29DB          ; Grapheme_Base # Pe       RIGHT DOUBLE WIGGLY FENCE
+ 29DC..29FB    ; Grapheme_Base # Sm  [32] INCOMPLETE INFINITY..TRIPLE PLUS
+ 29FC          ; Grapheme_Base # Ps       LEFT-POINTING CURVED ANGLE BRACKET
+ 29FD          ; Grapheme_Base # Pe       RIGHT-POINTING CURVED ANGLE BRACKET
+ 29FE..2AFF    ; Grapheme_Base # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
+ 2B00..2B2F    ; Grapheme_Base # So  [48] NORTH EAST WHITE ARROW..WHITE VERTICAL ELLIPSE
+ 2B30..2B44    ; Grapheme_Base # Sm  [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
+ 2B45..2B46    ; Grapheme_Base # So   [2] LEFTWARDS QUADRUPLE ARROW..RIGHTWARDS QUADRUPLE ARROW
+ 2B47..2B4C    ; Grapheme_Base # Sm   [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+ 2B4D..2B73    ; Grapheme_Base # So  [39] DOWNWARDS TRIANGLE-HEADED ZIGZAG ARROW..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
+ 2B76..2B95    ; Grapheme_Base # So  [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
+ 2B97..2BFF    ; Grapheme_Base # So [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL
+ 2C00..2C7B    ; Grapheme_Base # L& [124] GLAGOLITIC CAPITAL LETTER AZU..LATIN LETTER SMALL CAPITAL TURNED E
+ 2C7C..2C7D    ; Grapheme_Base # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2CE4    ; Grapheme_Base # L& [103] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC SYMBOL KAI
+ 2CE5..2CEA    ; Grapheme_Base # So   [6] COPTIC SYMBOL MI RO..COPTIC SYMBOL SHIMA SIMA
+ 2CEB..2CEE    ; Grapheme_Base # L&   [4] COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI..COPTIC SMALL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2..2CF3    ; Grapheme_Base # L&   [2] COPTIC CAPITAL LETTER BOHAIRIC KHEI..COPTIC SMALL LETTER BOHAIRIC KHEI
+ 2CF9..2CFC    ; Grapheme_Base # Po   [4] COPTIC OLD NUBIAN FULL STOP..COPTIC OLD NUBIAN VERSE DIVIDER
+ 2CFD          ; Grapheme_Base # No       COPTIC FRACTION ONE HALF
+ 2CFE..2CFF    ; Grapheme_Base # Po   [2] COPTIC FULL STOP..COPTIC MORPHOLOGICAL DIVIDER
+ 2D00..2D25    ; Grapheme_Base # L&  [38] GEORGIAN SMALL LETTER AN..GEORGIAN SMALL LETTER HOE
+ 2D27          ; Grapheme_Base # L&       GEORGIAN SMALL LETTER YN
+ 2D2D          ; Grapheme_Base # L&       GEORGIAN SMALL LETTER AEN
+ 2D30..2D67    ; Grapheme_Base # Lo  [56] TIFINAGH LETTER YA..TIFINAGH LETTER YO
+ 2D6F          ; Grapheme_Base # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2D70          ; Grapheme_Base # Po       TIFINAGH SEPARATOR MARK
+ 2D80..2D96    ; Grapheme_Base # Lo  [23] ETHIOPIC SYLLABLE LOA..ETHIOPIC SYLLABLE GGWE
+ 2DA0..2DA6    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE SSA..ETHIOPIC SYLLABLE SSO
+ 2DA8..2DAE    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE CCA..ETHIOPIC SYLLABLE CCO
+ 2DB0..2DB6    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE ZZA..ETHIOPIC SYLLABLE ZZO
+ 2DB8..2DBE    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE CCHA..ETHIOPIC SYLLABLE CCHO
+ 2DC0..2DC6    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE QYA..ETHIOPIC SYLLABLE QYO
+ 2DC8..2DCE    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE KYA..ETHIOPIC SYLLABLE KYO
+ 2DD0..2DD6    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE XYA..ETHIOPIC SYLLABLE XYO
+ 2DD8..2DDE    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE GYA..ETHIOPIC SYLLABLE GYO
+ 2E00..2E01    ; Grapheme_Base # Po   [2] RIGHT ANGLE SUBSTITUTION MARKER..RIGHT ANGLE DOTTED SUBSTITUTION MARKER
+ 2E02          ; Grapheme_Base # Pi       LEFT SUBSTITUTION BRACKET
+ 2E03          ; Grapheme_Base # Pf       RIGHT SUBSTITUTION BRACKET
+ 2E04          ; Grapheme_Base # Pi       LEFT DOTTED SUBSTITUTION BRACKET
+ 2E05          ; Grapheme_Base # Pf       RIGHT DOTTED SUBSTITUTION BRACKET
+ 2E06..2E08    ; Grapheme_Base # Po   [3] RAISED INTERPOLATION MARKER..DOTTED TRANSPOSITION MARKER
+ 2E09          ; Grapheme_Base # Pi       LEFT TRANSPOSITION BRACKET
+ 2E0A          ; Grapheme_Base # Pf       RIGHT TRANSPOSITION BRACKET
+ 2E0B          ; Grapheme_Base # Po       RAISED SQUARE
+ 2E0C          ; Grapheme_Base # Pi       LEFT RAISED OMISSION BRACKET
+ 2E0D          ; Grapheme_Base # Pf       RIGHT RAISED OMISSION BRACKET
+ 2E0E..2E16    ; Grapheme_Base # Po   [9] EDITORIAL CORONIS..DOTTED RIGHT-POINTING ANGLE
+ 2E17          ; Grapheme_Base # Pd       DOUBLE OBLIQUE HYPHEN
+ 2E18..2E19    ; Grapheme_Base # Po   [2] INVERTED INTERROBANG..PALM BRANCH
+ 2E1A          ; Grapheme_Base # Pd       HYPHEN WITH DIAERESIS
+ 2E1B          ; Grapheme_Base # Po       TILDE WITH RING ABOVE
+ 2E1C          ; Grapheme_Base # Pi       LEFT LOW PARAPHRASE BRACKET
+ 2E1D          ; Grapheme_Base # Pf       RIGHT LOW PARAPHRASE BRACKET
+ 2E1E..2E1F    ; Grapheme_Base # Po   [2] TILDE WITH DOT ABOVE..TILDE WITH DOT BELOW
+ 2E20          ; Grapheme_Base # Pi       LEFT VERTICAL BAR WITH QUILL
+ 2E21          ; Grapheme_Base # Pf       RIGHT VERTICAL BAR WITH QUILL
+ 2E22          ; Grapheme_Base # Ps       TOP LEFT HALF BRACKET
+ 2E23          ; Grapheme_Base # Pe       TOP RIGHT HALF BRACKET
+ 2E24          ; Grapheme_Base # Ps       BOTTOM LEFT HALF BRACKET
+ 2E25          ; Grapheme_Base # Pe       BOTTOM RIGHT HALF BRACKET
+ 2E26          ; Grapheme_Base # Ps       LEFT SIDEWAYS U BRACKET
+ 2E27          ; Grapheme_Base # Pe       RIGHT SIDEWAYS U BRACKET
+ 2E28          ; Grapheme_Base # Ps       LEFT DOUBLE PARENTHESIS
+ 2E29          ; Grapheme_Base # Pe       RIGHT DOUBLE PARENTHESIS
+ 2E2A..2E2E    ; Grapheme_Base # Po   [5] TWO DOTS OVER ONE DOT PUNCTUATION..REVERSED QUESTION MARK
+ 2E2F          ; Grapheme_Base # Lm       VERTICAL TILDE
+ 2E30..2E39    ; Grapheme_Base # Po  [10] RING POINT..TOP HALF SECTION SIGN
+ 2E3A..2E3B    ; Grapheme_Base # Pd   [2] TWO-EM DASH..THREE-EM DASH
+ 2E3C..2E3F    ; Grapheme_Base # Po   [4] STENOGRAPHIC FULL STOP..CAPITULUM
+ 2E40          ; Grapheme_Base # Pd       DOUBLE HYPHEN
+ 2E41          ; Grapheme_Base # Po       REVERSED COMMA
+ 2E42          ; Grapheme_Base # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
+ 2E43..2E4F    ; Grapheme_Base # Po  [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
+ 2E50..2E51    ; Grapheme_Base # So   [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
+ 2E52..2E54    ; Grapheme_Base # Po   [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK
+ 2E55          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET WITH STROKE
+ 2E56          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET WITH STROKE
+ 2E57          ; Grapheme_Base # Ps       LEFT SQUARE BRACKET WITH DOUBLE STROKE
+ 2E58          ; Grapheme_Base # Pe       RIGHT SQUARE BRACKET WITH DOUBLE STROKE
+ 2E59          ; Grapheme_Base # Ps       TOP HALF LEFT PARENTHESIS
+ 2E5A          ; Grapheme_Base # Pe       TOP HALF RIGHT PARENTHESIS
+ 2E5B          ; Grapheme_Base # Ps       BOTTOM HALF LEFT PARENTHESIS
+ 2E5C          ; Grapheme_Base # Pe       BOTTOM HALF RIGHT PARENTHESIS
+ 2E5D          ; Grapheme_Base # Pd       OBLIQUE HYPHEN
+ 2E80..2E99    ; Grapheme_Base # So  [26] CJK RADICAL REPEAT..CJK RADICAL RAP
+ 2E9B..2EF3    ; Grapheme_Base # So  [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
+ 2F00..2FD5    ; Grapheme_Base # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+ 2FF0..2FFB    ; Grapheme_Base # So  [12] IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT..IDEOGRAPHIC DESCRIPTION CHARACTER OVERLAID
+ 3000          ; Grapheme_Base # Zs       IDEOGRAPHIC SPACE
+ 3001..3003    ; Grapheme_Base # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
+ 3004          ; Grapheme_Base # So       JAPANESE INDUSTRIAL STANDARD SYMBOL
+ 3005          ; Grapheme_Base # Lm       IDEOGRAPHIC ITERATION MARK
+ 3006          ; Grapheme_Base # Lo       IDEOGRAPHIC CLOSING MARK
+ 3007          ; Grapheme_Base # Nl       IDEOGRAPHIC NUMBER ZERO
+ 3008          ; Grapheme_Base # Ps       LEFT ANGLE BRACKET
+ 3009          ; Grapheme_Base # Pe       RIGHT ANGLE BRACKET
+ 300A          ; Grapheme_Base # Ps       LEFT DOUBLE ANGLE BRACKET
+ 300B          ; Grapheme_Base # Pe       RIGHT DOUBLE ANGLE BRACKET
+ 300C          ; Grapheme_Base # Ps       LEFT CORNER BRACKET
+ 300D          ; Grapheme_Base # Pe       RIGHT CORNER BRACKET
+ 300E          ; Grapheme_Base # Ps       LEFT WHITE CORNER BRACKET
+ 300F          ; Grapheme_Base # Pe       RIGHT WHITE CORNER BRACKET
+ 3010          ; Grapheme_Base # Ps       LEFT BLACK LENTICULAR BRACKET
+ 3011          ; Grapheme_Base # Pe       RIGHT BLACK LENTICULAR BRACKET
+ 3012..3013    ; Grapheme_Base # So   [2] POSTAL MARK..GETA MARK
+ 3014          ; Grapheme_Base # Ps       LEFT TORTOISE SHELL BRACKET
+ 3015          ; Grapheme_Base # Pe       RIGHT TORTOISE SHELL BRACKET
+ 3016          ; Grapheme_Base # Ps       LEFT WHITE LENTICULAR BRACKET
+ 3017          ; Grapheme_Base # Pe       RIGHT WHITE LENTICULAR BRACKET
+ 3018          ; Grapheme_Base # Ps       LEFT WHITE TORTOISE SHELL BRACKET
+ 3019          ; Grapheme_Base # Pe       RIGHT WHITE TORTOISE SHELL BRACKET
+ 301A          ; Grapheme_Base # Ps       LEFT WHITE SQUARE BRACKET
+ 301B          ; Grapheme_Base # Pe       RIGHT WHITE SQUARE BRACKET
+ 301C          ; Grapheme_Base # Pd       WAVE DASH
+ 301D          ; Grapheme_Base # Ps       REVERSED DOUBLE PRIME QUOTATION MARK
+ 301E..301F    ; Grapheme_Base # Pe   [2] DOUBLE PRIME QUOTATION MARK..LOW DOUBLE PRIME QUOTATION MARK
+ 3020          ; Grapheme_Base # So       POSTAL MARK FACE
+ 3021..3029    ; Grapheme_Base # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
+ 3030          ; Grapheme_Base # Pd       WAVY DASH
+ 3031..3035    ; Grapheme_Base # Lm   [5] VERTICAL KANA REPEAT MARK..VERTICAL KANA REPEAT MARK LOWER HALF
+ 3036..3037    ; Grapheme_Base # So   [2] CIRCLED POSTAL MARK..IDEOGRAPHIC TELEGRAPH LINE FEED SEPARATOR SYMBOL
+ 3038..303A    ; Grapheme_Base # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 303B          ; Grapheme_Base # Lm       VERTICAL IDEOGRAPHIC ITERATION MARK
+ 303C          ; Grapheme_Base # Lo       MASU MARK
+ 303D          ; Grapheme_Base # Po       PART ALTERNATION MARK
+ 303E..303F    ; Grapheme_Base # So   [2] IDEOGRAPHIC VARIATION INDICATOR..IDEOGRAPHIC HALF FILL SPACE
+ 3041..3096    ; Grapheme_Base # Lo  [86] HIRAGANA LETTER SMALL A..HIRAGANA LETTER SMALL KE
+ 309B..309C    ; Grapheme_Base # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309D..309E    ; Grapheme_Base # Lm   [2] HIRAGANA ITERATION MARK..HIRAGANA VOICED ITERATION MARK
+ 309F          ; Grapheme_Base # Lo       HIRAGANA DIGRAPH YORI
+ 30A0          ; Grapheme_Base # Pd       KATAKANA-HIRAGANA DOUBLE HYPHEN
+ 30A1..30FA    ; Grapheme_Base # Lo  [90] KATAKANA LETTER SMALL A..KATAKANA LETTER VO
+ 30FB          ; Grapheme_Base # Po       KATAKANA MIDDLE DOT
+ 30FC..30FE    ; Grapheme_Base # Lm   [3] KATAKANA-HIRAGANA PROLONGED SOUND MARK..KATAKANA VOICED ITERATION MARK
+ 30FF          ; Grapheme_Base # Lo       KATAKANA DIGRAPH KOTO
+ 3105..312F    ; Grapheme_Base # Lo  [43] BOPOMOFO LETTER B..BOPOMOFO LETTER NN
+ 3131..318E    ; Grapheme_Base # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 3190..3191    ; Grapheme_Base # So   [2] IDEOGRAPHIC ANNOTATION LINKING MARK..IDEOGRAPHIC ANNOTATION REVERSE MARK
+ 3192..3195    ; Grapheme_Base # No   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+ 3196..319F    ; Grapheme_Base # So  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+ 31A0..31BF    ; Grapheme_Base # Lo  [32] BOPOMOFO LETTER BU..BOPOMOFO LETTER AH
+ 31C0..31E3    ; Grapheme_Base # So  [36] CJK STROKE T..CJK STROKE Q
+ 31F0..31FF    ; Grapheme_Base # Lo  [16] KATAKANA LETTER SMALL KU..KATAKANA LETTER SMALL RO
+ 3200..321E    ; Grapheme_Base # So  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+ 3220..3229    ; Grapheme_Base # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+ 322A..3247    ; Grapheme_Base # So  [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+ 3248..324F    ; Grapheme_Base # No   [8] CIRCLED NUMBER TEN ON BLACK SQUARE..CIRCLED NUMBER EIGHTY ON BLACK SQUARE
+ 3250          ; Grapheme_Base # So       PARTNERSHIP SIGN
+ 3251..325F    ; Grapheme_Base # No  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+ 3260..327F    ; Grapheme_Base # So  [32] CIRCLED HANGUL KIYEOK..KOREAN STANDARD SYMBOL
+ 3280..3289    ; Grapheme_Base # No  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+ 328A..32B0    ; Grapheme_Base # So  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+ 32B1..32BF    ; Grapheme_Base # No  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+ 32C0..33FF    ; Grapheme_Base # So [320] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE GAL
+ 3400..4DBF    ; Grapheme_Base # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
+ 4DC0..4DFF    ; Grapheme_Base # So  [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
+ 4E00..A014    ; Grapheme_Base # Lo [21013] CJK UNIFIED IDEOGRAPH-4E00..YI SYLLABLE E
+ A015          ; Grapheme_Base # Lm       YI SYLLABLE WU
+ A016..A48C    ; Grapheme_Base # Lo [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
+ A490..A4C6    ; Grapheme_Base # So  [55] YI RADICAL QOT..YI RADICAL KE
+ A4D0..A4F7    ; Grapheme_Base # Lo  [40] LISU LETTER BA..LISU LETTER OE
+ A4F8..A4FD    ; Grapheme_Base # Lm   [6] LISU LETTER TONE MYA TI..LISU LETTER TONE MYA JEU
+ A4FE..A4FF    ; Grapheme_Base # Po   [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
+ A500..A60B    ; Grapheme_Base # Lo [268] VAI SYLLABLE EE..VAI SYLLABLE NG
+ A60C          ; Grapheme_Base # Lm       VAI SYLLABLE LENGTHENER
+ A60D..A60F    ; Grapheme_Base # Po   [3] VAI COMMA..VAI QUESTION MARK
+ A610..A61F    ; Grapheme_Base # Lo  [16] VAI SYLLABLE NDOLE FA..VAI SYMBOL JONG
+ A620..A629    ; Grapheme_Base # Nd  [10] VAI DIGIT ZERO..VAI DIGIT NINE
+ A62A..A62B    ; Grapheme_Base # Lo   [2] VAI SYLLABLE NDOLE MA..VAI SYLLABLE NDOLE DO
+ A640..A66D    ; Grapheme_Base # L&  [46] CYRILLIC CAPITAL LETTER ZEMLYA..CYRILLIC SMALL LETTER DOUBLE MONOCULAR O
+ A66E          ; Grapheme_Base # Lo       CYRILLIC LETTER MULTIOCULAR O
+ A673          ; Grapheme_Base # Po       SLAVONIC ASTERISK
+ A67E          ; Grapheme_Base # Po       CYRILLIC KAVYKA
+ A67F          ; Grapheme_Base # Lm       CYRILLIC PAYEROK
+ A680..A69B    ; Grapheme_Base # L&  [28] CYRILLIC CAPITAL LETTER DWE..CYRILLIC SMALL LETTER CROSSED O
+ A69C..A69D    ; Grapheme_Base # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A6A0..A6E5    ; Grapheme_Base # Lo  [70] BAMUM LETTER A..BAMUM LETTER KI
+ A6E6..A6EF    ; Grapheme_Base # Nl  [10] BAMUM LETTER MO..BAMUM LETTER KOGHOM
+ A6F2..A6F7    ; Grapheme_Base # Po   [6] BAMUM NJAEMLI..BAMUM QUESTION MARK
+ A700..A716    ; Grapheme_Base # Sk  [23] MODIFIER LETTER CHINESE TONE YIN PING..MODIFIER LETTER EXTRA-LOW LEFT-STEM TONE BAR
+ A717..A71F    ; Grapheme_Base # Lm   [9] MODIFIER LETTER DOT VERTICAL BAR..MODIFIER LETTER LOW INVERTED EXCLAMATION MARK
+ A720..A721    ; Grapheme_Base # Sk   [2] MODIFIER LETTER STRESS AND HIGH TONE..MODIFIER LETTER STRESS AND LOW TONE
+ A722..A76F    ; Grapheme_Base # L&  [78] LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF..LATIN SMALL LETTER CON
+ A770          ; Grapheme_Base # Lm       MODIFIER LETTER US
+ A771..A787    ; Grapheme_Base # L&  [23] LATIN SMALL LETTER DUM..LATIN SMALL LETTER INSULAR T
+ A788          ; Grapheme_Base # Lm       MODIFIER LETTER LOW CIRCUMFLEX ACCENT
+ A789..A78A    ; Grapheme_Base # Sk   [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
+ A78B..A78E    ; Grapheme_Base # L&   [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
+ A78F          ; Grapheme_Base # Lo       LATIN LETTER SINOLOGICAL DOT
+ A790..A7CA    ; Grapheme_Base # L&  [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0..A7D1    ; Grapheme_Base # L&   [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
+ A7D3          ; Grapheme_Base # L&       LATIN SMALL LETTER DOUBLE THORN
+ A7D5..A7D9    ; Grapheme_Base # L&   [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
+ A7F2..A7F4    ; Grapheme_Base # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5..A7F6    ; Grapheme_Base # L&   [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
+ A7F7          ; Grapheme_Base # Lo       LATIN EPIGRAPHIC LETTER SIDEWAYS I
+ A7F8..A7F9    ; Grapheme_Base # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ A7FA          ; Grapheme_Base # L&       LATIN LETTER SMALL CAPITAL TURNED M
+ A7FB..A801    ; Grapheme_Base # Lo   [7] LATIN EPIGRAPHIC LETTER REVERSED F..SYLOTI NAGRI LETTER I
+ A803..A805    ; Grapheme_Base # Lo   [3] SYLOTI NAGRI LETTER U..SYLOTI NAGRI LETTER O
+ A807..A80A    ; Grapheme_Base # Lo   [4] SYLOTI NAGRI LETTER KO..SYLOTI NAGRI LETTER GHO
+ A80C..A822    ; Grapheme_Base # Lo  [23] SYLOTI NAGRI LETTER CO..SYLOTI NAGRI LETTER HO
+ A823..A824    ; Grapheme_Base # Mc   [2] SYLOTI NAGRI VOWEL SIGN A..SYLOTI NAGRI VOWEL SIGN I
+ A827          ; Grapheme_Base # Mc       SYLOTI NAGRI VOWEL SIGN OO
+ A828..A82B    ; Grapheme_Base # So   [4] SYLOTI NAGRI POETRY MARK-1..SYLOTI NAGRI POETRY MARK-4
+ A830..A835    ; Grapheme_Base # No   [6] NORTH INDIC FRACTION ONE QUARTER..NORTH INDIC FRACTION THREE SIXTEENTHS
+ A836..A837    ; Grapheme_Base # So   [2] NORTH INDIC QUARTER MARK..NORTH INDIC PLACEHOLDER MARK
+ A838          ; Grapheme_Base # Sc       NORTH INDIC RUPEE MARK
+ A839          ; Grapheme_Base # So       NORTH INDIC QUANTITY MARK
+ A840..A873    ; Grapheme_Base # Lo  [52] PHAGS-PA LETTER KA..PHAGS-PA LETTER CANDRABINDU
+ A874..A877    ; Grapheme_Base # Po   [4] PHAGS-PA SINGLE HEAD MARK..PHAGS-PA MARK DOUBLE SHAD
+ A880..A881    ; Grapheme_Base # Mc   [2] SAURASHTRA SIGN ANUSVARA..SAURASHTRA SIGN VISARGA
+ A882..A8B3    ; Grapheme_Base # Lo  [50] SAURASHTRA LETTER A..SAURASHTRA LETTER LLA
+ A8B4..A8C3    ; Grapheme_Base # Mc  [16] SAURASHTRA CONSONANT SIGN HAARU..SAURASHTRA VOWEL SIGN AU
+ A8CE..A8CF    ; Grapheme_Base # Po   [2] SAURASHTRA DANDA..SAURASHTRA DOUBLE DANDA
+ A8D0..A8D9    ; Grapheme_Base # Nd  [10] SAURASHTRA DIGIT ZERO..SAURASHTRA DIGIT NINE
+ A8F2..A8F7    ; Grapheme_Base # Lo   [6] DEVANAGARI SIGN SPACING CANDRABINDU..DEVANAGARI SIGN CANDRABINDU AVAGRAHA
+ A8F8..A8FA    ; Grapheme_Base # Po   [3] DEVANAGARI SIGN PUSHPIKA..DEVANAGARI CARET
+ A8FB          ; Grapheme_Base # Lo       DEVANAGARI HEADSTROKE
+ A8FC          ; Grapheme_Base # Po       DEVANAGARI SIGN SIDDHAM
+ A8FD..A8FE    ; Grapheme_Base # Lo   [2] DEVANAGARI JAIN OM..DEVANAGARI LETTER AY
+ A900..A909    ; Grapheme_Base # Nd  [10] KAYAH LI DIGIT ZERO..KAYAH LI DIGIT NINE
+ A90A..A925    ; Grapheme_Base # Lo  [28] KAYAH LI LETTER KA..KAYAH LI LETTER OO
+ A92E..A92F    ; Grapheme_Base # Po   [2] KAYAH LI SIGN CWI..KAYAH LI SIGN SHYA
+ A930..A946    ; Grapheme_Base # Lo  [23] REJANG LETTER KA..REJANG LETTER A
+ A952..A953    ; Grapheme_Base # Mc   [2] REJANG CONSONANT SIGN H..REJANG VIRAMA
+ A95F          ; Grapheme_Base # Po       REJANG SECTION MARK
+ A960..A97C    ; Grapheme_Base # Lo  [29] HANGUL CHOSEONG TIKEUT-MIEUM..HANGUL CHOSEONG SSANGYEORINHIEUH
+ A983          ; Grapheme_Base # Mc       JAVANESE SIGN WIGNYAN
+ A984..A9B2    ; Grapheme_Base # Lo  [47] JAVANESE LETTER A..JAVANESE LETTER HA
+ A9B4..A9B5    ; Grapheme_Base # Mc   [2] JAVANESE VOWEL SIGN TARUNG..JAVANESE VOWEL SIGN TOLONG
+ A9BA..A9BB    ; Grapheme_Base # Mc   [2] JAVANESE VOWEL SIGN TALING..JAVANESE VOWEL SIGN DIRGA MURE
+ A9BE..A9C0    ; Grapheme_Base # Mc   [3] JAVANESE CONSONANT SIGN PENGKAL..JAVANESE PANGKON
+ A9C1..A9CD    ; Grapheme_Base # Po  [13] JAVANESE LEFT RERENGGAN..JAVANESE TURNED PADA PISELEH
+ A9CF          ; Grapheme_Base # Lm       JAVANESE PANGRANGKEP
+ A9D0..A9D9    ; Grapheme_Base # Nd  [10] JAVANESE DIGIT ZERO..JAVANESE DIGIT NINE
+ A9DE..A9DF    ; Grapheme_Base # Po   [2] JAVANESE PADA TIRTA TUMETES..JAVANESE PADA ISEN-ISEN
+ A9E0..A9E4    ; Grapheme_Base # Lo   [5] MYANMAR LETTER SHAN GHA..MYANMAR LETTER SHAN BHA
+ A9E6          ; Grapheme_Base # Lm       MYANMAR MODIFIER LETTER SHAN REDUPLICATION
+ A9E7..A9EF    ; Grapheme_Base # Lo   [9] MYANMAR LETTER TAI LAING NYA..MYANMAR LETTER TAI LAING NNA
+ A9F0..A9F9    ; Grapheme_Base # Nd  [10] MYANMAR TAI LAING DIGIT ZERO..MYANMAR TAI LAING DIGIT NINE
+ A9FA..A9FE    ; Grapheme_Base # Lo   [5] MYANMAR LETTER TAI LAING LLA..MYANMAR LETTER TAI LAING BHA
+ AA00..AA28    ; Grapheme_Base # Lo  [41] CHAM LETTER A..CHAM LETTER HA
+ AA2F..AA30    ; Grapheme_Base # Mc   [2] CHAM VOWEL SIGN O..CHAM VOWEL SIGN AI
+ AA33..AA34    ; Grapheme_Base # Mc   [2] CHAM CONSONANT SIGN YA..CHAM CONSONANT SIGN RA
+ AA40..AA42    ; Grapheme_Base # Lo   [3] CHAM LETTER FINAL K..CHAM LETTER FINAL NG
+ AA44..AA4B    ; Grapheme_Base # Lo   [8] CHAM LETTER FINAL CH..CHAM LETTER FINAL SS
+ AA4D          ; Grapheme_Base # Mc       CHAM CONSONANT SIGN FINAL H
+ AA50..AA59    ; Grapheme_Base # Nd  [10] CHAM DIGIT ZERO..CHAM DIGIT NINE
+ AA5C..AA5F    ; Grapheme_Base # Po   [4] CHAM PUNCTUATION SPIRAL..CHAM PUNCTUATION TRIPLE DANDA
+ AA60..AA6F    ; Grapheme_Base # Lo  [16] MYANMAR LETTER KHAMTI GA..MYANMAR LETTER KHAMTI FA
+ AA70          ; Grapheme_Base # Lm       MYANMAR MODIFIER LETTER KHAMTI REDUPLICATION
+ AA71..AA76    ; Grapheme_Base # Lo   [6] MYANMAR LETTER KHAMTI XA..MYANMAR LOGOGRAM KHAMTI HM
+ AA77..AA79    ; Grapheme_Base # So   [3] MYANMAR SYMBOL AITON EXCLAMATION..MYANMAR SYMBOL AITON TWO
+ AA7A          ; Grapheme_Base # Lo       MYANMAR LETTER AITON RA
+ AA7B          ; Grapheme_Base # Mc       MYANMAR SIGN PAO KAREN TONE
+ AA7D          ; Grapheme_Base # Mc       MYANMAR SIGN TAI LAING TONE-5
+ AA7E..AAAF    ; Grapheme_Base # Lo  [50] MYANMAR LETTER SHWE PALAUNG CHA..TAI VIET LETTER HIGH O
+ AAB1          ; Grapheme_Base # Lo       TAI VIET VOWEL AA
+ AAB5..AAB6    ; Grapheme_Base # Lo   [2] TAI VIET VOWEL E..TAI VIET VOWEL O
+ AAB9..AABD    ; Grapheme_Base # Lo   [5] TAI VIET VOWEL UEA..TAI VIET VOWEL AN
+ AAC0          ; Grapheme_Base # Lo       TAI VIET TONE MAI NUENG
+ AAC2          ; Grapheme_Base # Lo       TAI VIET TONE MAI SONG
+ AADB..AADC    ; Grapheme_Base # Lo   [2] TAI VIET SYMBOL KON..TAI VIET SYMBOL NUENG
+ AADD          ; Grapheme_Base # Lm       TAI VIET SYMBOL SAM
+ AADE..AADF    ; Grapheme_Base # Po   [2] TAI VIET SYMBOL HO HOI..TAI VIET SYMBOL KOI KOI
+ AAE0..AAEA    ; Grapheme_Base # Lo  [11] MEETEI MAYEK LETTER E..MEETEI MAYEK LETTER SSA
+ AAEB          ; Grapheme_Base # Mc       MEETEI MAYEK VOWEL SIGN II
+ AAEE..AAEF    ; Grapheme_Base # Mc   [2] MEETEI MAYEK VOWEL SIGN AU..MEETEI MAYEK VOWEL SIGN AAU
+ AAF0..AAF1    ; Grapheme_Base # Po   [2] MEETEI MAYEK CHEIKHAN..MEETEI MAYEK AHANG KHUDAM
+ AAF2          ; Grapheme_Base # Lo       MEETEI MAYEK ANJI
+ AAF3..AAF4    ; Grapheme_Base # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
+ AAF5          ; Grapheme_Base # Mc       MEETEI MAYEK VOWEL SIGN VISARGA
+ AB01..AB06    ; Grapheme_Base # Lo   [6] ETHIOPIC SYLLABLE TTHU..ETHIOPIC SYLLABLE TTHO
+ AB09..AB0E    ; Grapheme_Base # Lo   [6] ETHIOPIC SYLLABLE DDHU..ETHIOPIC SYLLABLE DDHO
+ AB11..AB16    ; Grapheme_Base # Lo   [6] ETHIOPIC SYLLABLE DZU..ETHIOPIC SYLLABLE DZO
+ AB20..AB26    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE CCHHA..ETHIOPIC SYLLABLE CCHHO
+ AB28..AB2E    ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE BBA..ETHIOPIC SYLLABLE BBO
+ AB30..AB5A    ; Grapheme_Base # L&  [43] LATIN SMALL LETTER BARRED ALPHA..LATIN SMALL LETTER Y WITH SHORT RIGHT LEG
+ AB5B          ; Grapheme_Base # Sk       MODIFIER BREVE WITH INVERTED BREVE
+ AB5C..AB5F    ; Grapheme_Base # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB60..AB68    ; Grapheme_Base # L&   [9] LATIN SMALL LETTER SAKHA YAT..LATIN SMALL LETTER TURNED R WITH MIDDLE TILDE
+ AB69          ; Grapheme_Base # Lm       MODIFIER LETTER SMALL TURNED W
+ AB6A..AB6B    ; Grapheme_Base # Sk   [2] MODIFIER LETTER LEFT TACK..MODIFIER LETTER RIGHT TACK
+ AB70..ABBF    ; Grapheme_Base # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ ABC0..ABE2    ; Grapheme_Base # Lo  [35] MEETEI MAYEK LETTER KOK..MEETEI MAYEK LETTER I LONSUM
+ ABE3..ABE4    ; Grapheme_Base # Mc   [2] MEETEI MAYEK VOWEL SIGN ONAP..MEETEI MAYEK VOWEL SIGN INAP
+ ABE6..ABE7    ; Grapheme_Base # Mc   [2] MEETEI MAYEK VOWEL SIGN YENAP..MEETEI MAYEK VOWEL SIGN SOUNAP
+ ABE9..ABEA    ; Grapheme_Base # Mc   [2] MEETEI MAYEK VOWEL SIGN CHEINAP..MEETEI MAYEK VOWEL SIGN NUNG
+ ABEB          ; Grapheme_Base # Po       MEETEI MAYEK CHEIKHEI
+ ABEC          ; Grapheme_Base # Mc       MEETEI MAYEK LUM IYEK
+ ABF0..ABF9    ; Grapheme_Base # Nd  [10] MEETEI MAYEK DIGIT ZERO..MEETEI MAYEK DIGIT NINE
+ AC00..D7A3    ; Grapheme_Base # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ D7B0..D7C6    ; Grapheme_Base # Lo  [23] HANGUL JUNGSEONG O-YEO..HANGUL JUNGSEONG ARAEA-E
+ D7CB..D7FB    ; Grapheme_Base # Lo  [49] HANGUL JONGSEONG NIEUN-RIEUL..HANGUL JONGSEONG PHIEUPH-THIEUTH
+ F900..FA6D    ; Grapheme_Base # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; Grapheme_Base # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; Grapheme_Base # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Grapheme_Base # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; Grapheme_Base # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F..FB28    ; Grapheme_Base # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB29          ; Grapheme_Base # Sm       HEBREW LETTER ALTERNATIVE PLUS SIGN
+ FB2A..FB36    ; Grapheme_Base # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Grapheme_Base # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Grapheme_Base # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Grapheme_Base # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Grapheme_Base # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; Grapheme_Base # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBB2..FBC2    ; Grapheme_Base # Sk  [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE
+ FBD3..FD3D    ; Grapheme_Base # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD3E          ; Grapheme_Base # Pe       ORNATE LEFT PARENTHESIS
+ FD3F          ; Grapheme_Base # Ps       ORNATE RIGHT PARENTHESIS
+ FD40..FD4F    ; Grapheme_Base # So  [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH
+ FD50..FD8F    ; Grapheme_Base # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; Grapheme_Base # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDCF          ; Grapheme_Base # So       ARABIC LIGATURE SALAAMUHU ALAYNAA
+ FDF0..FDFB    ; Grapheme_Base # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; Grapheme_Base # Sc       RIAL SIGN
+ FDFD..FDFF    ; Grapheme_Base # So   [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL
+ FE10..FE16    ; Grapheme_Base # Po   [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+ FE17          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+ FE18          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+ FE19          ; Grapheme_Base # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; Grapheme_Base # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE31..FE32    ; Grapheme_Base # Pd   [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+ FE33..FE34    ; Grapheme_Base # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE35          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+ FE36          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+ FE37          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+ FE38          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+ FE39          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+ FE3A          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+ FE3B          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+ FE3C          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+ FE3D          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+ FE3E          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+ FE3F          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+ FE40          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+ FE41          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+ FE42          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+ FE43          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+ FE44          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+ FE45..FE46    ; Grapheme_Base # Po   [2] SESAME DOT..WHITE SESAME DOT
+ FE47          ; Grapheme_Base # Ps       PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+ FE48          ; Grapheme_Base # Pe       PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+ FE49..FE4C    ; Grapheme_Base # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE4D..FE4F    ; Grapheme_Base # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE50..FE52    ; Grapheme_Base # Po   [3] SMALL COMMA..SMALL FULL STOP
+ FE54..FE57    ; Grapheme_Base # Po   [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+ FE58          ; Grapheme_Base # Pd       SMALL EM DASH
+ FE59          ; Grapheme_Base # Ps       SMALL LEFT PARENTHESIS
+ FE5A          ; Grapheme_Base # Pe       SMALL RIGHT PARENTHESIS
+ FE5B          ; Grapheme_Base # Ps       SMALL LEFT CURLY BRACKET
+ FE5C          ; Grapheme_Base # Pe       SMALL RIGHT CURLY BRACKET
+ FE5D          ; Grapheme_Base # Ps       SMALL LEFT TORTOISE SHELL BRACKET
+ FE5E          ; Grapheme_Base # Pe       SMALL RIGHT TORTOISE SHELL BRACKET
+ FE5F..FE61    ; Grapheme_Base # Po   [3] SMALL NUMBER SIGN..SMALL ASTERISK
+ FE62          ; Grapheme_Base # Sm       SMALL PLUS SIGN
+ FE63          ; Grapheme_Base # Pd       SMALL HYPHEN-MINUS
+ FE64..FE66    ; Grapheme_Base # Sm   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+ FE68          ; Grapheme_Base # Po       SMALL REVERSE SOLIDUS
+ FE69          ; Grapheme_Base # Sc       SMALL DOLLAR SIGN
+ FE6A..FE6B    ; Grapheme_Base # Po   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+ FE70..FE74    ; Grapheme_Base # Lo   [5] ARABIC FATHATAN ISOLATED FORM..ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; Grapheme_Base # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF01..FF03    ; Grapheme_Base # Po   [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+ FF04          ; Grapheme_Base # Sc       FULLWIDTH DOLLAR SIGN
+ FF05..FF07    ; Grapheme_Base # Po   [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+ FF08          ; Grapheme_Base # Ps       FULLWIDTH LEFT PARENTHESIS
+ FF09          ; Grapheme_Base # Pe       FULLWIDTH RIGHT PARENTHESIS
+ FF0A          ; Grapheme_Base # Po       FULLWIDTH ASTERISK
+ FF0B          ; Grapheme_Base # Sm       FULLWIDTH PLUS SIGN
+ FF0C          ; Grapheme_Base # Po       FULLWIDTH COMMA
+ FF0D          ; Grapheme_Base # Pd       FULLWIDTH HYPHEN-MINUS
+ FF0E..FF0F    ; Grapheme_Base # Po   [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+ FF10..FF19    ; Grapheme_Base # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ FF1A..FF1B    ; Grapheme_Base # Po   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+ FF1C..FF1E    ; Grapheme_Base # Sm   [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+ FF1F..FF20    ; Grapheme_Base # Po   [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+ FF21..FF3A    ; Grapheme_Base # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3B          ; Grapheme_Base # Ps       FULLWIDTH LEFT SQUARE BRACKET
+ FF3C          ; Grapheme_Base # Po       FULLWIDTH REVERSE SOLIDUS
+ FF3D          ; Grapheme_Base # Pe       FULLWIDTH RIGHT SQUARE BRACKET
+ FF3E          ; Grapheme_Base # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF3F          ; Grapheme_Base # Pc       FULLWIDTH LOW LINE
+ FF40          ; Grapheme_Base # Sk       FULLWIDTH GRAVE ACCENT
+ FF41..FF5A    ; Grapheme_Base # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF5B          ; Grapheme_Base # Ps       FULLWIDTH LEFT CURLY BRACKET
+ FF5C          ; Grapheme_Base # Sm       FULLWIDTH VERTICAL LINE
+ FF5D          ; Grapheme_Base # Pe       FULLWIDTH RIGHT CURLY BRACKET
+ FF5E          ; Grapheme_Base # Sm       FULLWIDTH TILDE
+ FF5F          ; Grapheme_Base # Ps       FULLWIDTH LEFT WHITE PARENTHESIS
+ FF60          ; Grapheme_Base # Pe       FULLWIDTH RIGHT WHITE PARENTHESIS
+ FF61          ; Grapheme_Base # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
+ FF62          ; Grapheme_Base # Ps       HALFWIDTH LEFT CORNER BRACKET
+ FF63          ; Grapheme_Base # Pe       HALFWIDTH RIGHT CORNER BRACKET
+ FF64..FF65    ; Grapheme_Base # Po   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+ FF66..FF6F    ; Grapheme_Base # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; Grapheme_Base # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; Grapheme_Base # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FFA0..FFBE    ; Grapheme_Base # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; Grapheme_Base # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; Grapheme_Base # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; Grapheme_Base # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; Grapheme_Base # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ FFE0..FFE1    ; Grapheme_Base # Sc   [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+ FFE2          ; Grapheme_Base # Sm       FULLWIDTH NOT SIGN
+ FFE3          ; Grapheme_Base # Sk       FULLWIDTH MACRON
+ FFE4          ; Grapheme_Base # So       FULLWIDTH BROKEN BAR
+ FFE5..FFE6    ; Grapheme_Base # Sc   [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+ FFE8          ; Grapheme_Base # So       HALFWIDTH FORMS LIGHT VERTICAL
+ FFE9..FFEC    ; Grapheme_Base # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+ FFED..FFEE    ; Grapheme_Base # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+ FFFC..FFFD    ; Grapheme_Base # So   [2] OBJECT REPLACEMENT CHARACTER..REPLACEMENT CHARACTER
+ 10000..1000B  ; Grapheme_Base # Lo  [12] LINEAR B SYLLABLE B008 A..LINEAR B SYLLABLE B046 JE
+ 1000D..10026  ; Grapheme_Base # Lo  [26] LINEAR B SYLLABLE B036 JO..LINEAR B SYLLABLE B032 QO
+ 10028..1003A  ; Grapheme_Base # Lo  [19] LINEAR B SYLLABLE B060 RA..LINEAR B SYLLABLE B042 WO
+ 1003C..1003D  ; Grapheme_Base # Lo   [2] LINEAR B SYLLABLE B017 ZA..LINEAR B SYLLABLE B074 ZE
+ 1003F..1004D  ; Grapheme_Base # Lo  [15] LINEAR B SYLLABLE B020 ZO..LINEAR B SYLLABLE B091 TWO
+ 10050..1005D  ; Grapheme_Base # Lo  [14] LINEAR B SYMBOL B018..LINEAR B SYMBOL B089
+ 10080..100FA  ; Grapheme_Base # Lo [123] LINEAR B IDEOGRAM B100 MAN..LINEAR B IDEOGRAM VESSEL B305
+ 10100..10102  ; Grapheme_Base # Po   [3] AEGEAN WORD SEPARATOR LINE..AEGEAN CHECK MARK
+ 10107..10133  ; Grapheme_Base # No  [45] AEGEAN NUMBER ONE..AEGEAN NUMBER NINETY THOUSAND
+ 10137..1013F  ; Grapheme_Base # So   [9] AEGEAN WEIGHT BASE UNIT..AEGEAN MEASURE THIRD SUBUNIT
+ 10140..10174  ; Grapheme_Base # Nl  [53] GREEK ACROPHONIC ATTIC ONE QUARTER..GREEK ACROPHONIC STRATIAN FIFTY MNAS
+ 10175..10178  ; Grapheme_Base # No   [4] GREEK ONE HALF SIGN..GREEK THREE QUARTERS SIGN
+ 10179..10189  ; Grapheme_Base # So  [17] GREEK YEAR SIGN..GREEK TRYBLION BASE SIGN
+ 1018A..1018B  ; Grapheme_Base # No   [2] GREEK ZERO SIGN..GREEK ONE QUARTER SIGN
+ 1018C..1018E  ; Grapheme_Base # So   [3] GREEK SINUSOID SIGN..NOMISMA SIGN
+ 10190..1019C  ; Grapheme_Base # So  [13] ROMAN SEXTANS SIGN..ASCIA SYMBOL
+ 101A0         ; Grapheme_Base # So       GREEK SYMBOL TAU RHO
+ 101D0..101FC  ; Grapheme_Base # So  [45] PHAISTOS DISC SIGN PEDESTRIAN..PHAISTOS DISC SIGN WAVY BAND
+ 10280..1029C  ; Grapheme_Base # Lo  [29] LYCIAN LETTER A..LYCIAN LETTER X
+ 102A0..102D0  ; Grapheme_Base # Lo  [49] CARIAN LETTER A..CARIAN LETTER UUU3
+ 102E1..102FB  ; Grapheme_Base # No  [27] COPTIC EPACT DIGIT ONE..COPTIC EPACT NUMBER NINE HUNDRED
+ 10300..1031F  ; Grapheme_Base # Lo  [32] OLD ITALIC LETTER A..OLD ITALIC LETTER ESS
+ 10320..10323  ; Grapheme_Base # No   [4] OLD ITALIC NUMERAL ONE..OLD ITALIC NUMERAL FIFTY
+ 1032D..10340  ; Grapheme_Base # Lo  [20] OLD ITALIC LETTER YE..GOTHIC LETTER PAIRTHRA
+ 10341         ; Grapheme_Base # Nl       GOTHIC LETTER NINETY
+ 10342..10349  ; Grapheme_Base # Lo   [8] GOTHIC LETTER RAIDA..GOTHIC LETTER OTHAL
+ 1034A         ; Grapheme_Base # Nl       GOTHIC LETTER NINE HUNDRED
+ 10350..10375  ; Grapheme_Base # Lo  [38] OLD PERMIC LETTER AN..OLD PERMIC LETTER IA
+ 10380..1039D  ; Grapheme_Base # Lo  [30] UGARITIC LETTER ALPA..UGARITIC LETTER SSU
+ 1039F         ; Grapheme_Base # Po       UGARITIC WORD DIVIDER
+ 103A0..103C3  ; Grapheme_Base # Lo  [36] OLD PERSIAN SIGN A..OLD PERSIAN SIGN HA
+ 103C8..103CF  ; Grapheme_Base # Lo   [8] OLD PERSIAN SIGN AURAMAZDAA..OLD PERSIAN SIGN BUUMISH
+ 103D0         ; Grapheme_Base # Po       OLD PERSIAN WORD DIVIDER
+ 103D1..103D5  ; Grapheme_Base # Nl   [5] OLD PERSIAN NUMBER ONE..OLD PERSIAN NUMBER HUNDRED
+ 10400..1044F  ; Grapheme_Base # L&  [80] DESERET CAPITAL LETTER LONG I..DESERET SMALL LETTER EW
+ 10450..1049D  ; Grapheme_Base # Lo  [78] SHAVIAN LETTER PEEP..OSMANYA LETTER OO
+ 104A0..104A9  ; Grapheme_Base # Nd  [10] OSMANYA DIGIT ZERO..OSMANYA DIGIT NINE
+ 104B0..104D3  ; Grapheme_Base # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 104D8..104FB  ; Grapheme_Base # L&  [36] OSAGE SMALL LETTER A..OSAGE SMALL LETTER ZHA
+ 10500..10527  ; Grapheme_Base # Lo  [40] ELBASAN LETTER A..ELBASAN LETTER KHE
+ 10530..10563  ; Grapheme_Base # Lo  [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
+ 1056F         ; Grapheme_Base # Po       CAUCASIAN ALBANIAN CITATION MARK
+ 10570..1057A  ; Grapheme_Base # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Grapheme_Base # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Grapheme_Base # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Grapheme_Base # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1  ; Grapheme_Base # L&  [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1  ; Grapheme_Base # L&  [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9  ; Grapheme_Base # L&   [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC  ; Grapheme_Base # L&   [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
+ 10600..10736  ; Grapheme_Base # Lo [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
+ 10740..10755  ; Grapheme_Base # Lo  [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
+ 10760..10767  ; Grapheme_Base # Lo   [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785  ; Grapheme_Base # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Grapheme_Base # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Grapheme_Base # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10800..10805  ; Grapheme_Base # Lo   [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
+ 10808         ; Grapheme_Base # Lo       CYPRIOT SYLLABLE JO
+ 1080A..10835  ; Grapheme_Base # Lo  [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
+ 10837..10838  ; Grapheme_Base # Lo   [2] CYPRIOT SYLLABLE XA..CYPRIOT SYLLABLE XE
+ 1083C         ; Grapheme_Base # Lo       CYPRIOT SYLLABLE ZA
+ 1083F..10855  ; Grapheme_Base # Lo  [23] CYPRIOT SYLLABLE ZO..IMPERIAL ARAMAIC LETTER TAW
+ 10857         ; Grapheme_Base # Po       IMPERIAL ARAMAIC SECTION SIGN
+ 10858..1085F  ; Grapheme_Base # No   [8] IMPERIAL ARAMAIC NUMBER ONE..IMPERIAL ARAMAIC NUMBER TEN THOUSAND
+ 10860..10876  ; Grapheme_Base # Lo  [23] PALMYRENE LETTER ALEPH..PALMYRENE LETTER TAW
+ 10877..10878  ; Grapheme_Base # So   [2] PALMYRENE LEFT-POINTING FLEURON..PALMYRENE RIGHT-POINTING FLEURON
+ 10879..1087F  ; Grapheme_Base # No   [7] PALMYRENE NUMBER ONE..PALMYRENE NUMBER TWENTY
+ 10880..1089E  ; Grapheme_Base # Lo  [31] NABATAEAN LETTER FINAL ALEPH..NABATAEAN LETTER TAW
+ 108A7..108AF  ; Grapheme_Base # No   [9] NABATAEAN NUMBER ONE..NABATAEAN NUMBER ONE HUNDRED
+ 108E0..108F2  ; Grapheme_Base # Lo  [19] HATRAN LETTER ALEPH..HATRAN LETTER QOPH
+ 108F4..108F5  ; Grapheme_Base # Lo   [2] HATRAN LETTER SHIN..HATRAN LETTER TAW
+ 108FB..108FF  ; Grapheme_Base # No   [5] HATRAN NUMBER ONE..HATRAN NUMBER ONE HUNDRED
+ 10900..10915  ; Grapheme_Base # Lo  [22] PHOENICIAN LETTER ALF..PHOENICIAN LETTER TAU
+ 10916..1091B  ; Grapheme_Base # No   [6] PHOENICIAN NUMBER ONE..PHOENICIAN NUMBER THREE
+ 1091F         ; Grapheme_Base # Po       PHOENICIAN WORD SEPARATOR
+ 10920..10939  ; Grapheme_Base # Lo  [26] LYDIAN LETTER A..LYDIAN LETTER C
+ 1093F         ; Grapheme_Base # Po       LYDIAN TRIANGULAR MARK
+ 10980..109B7  ; Grapheme_Base # Lo  [56] MEROITIC HIEROGLYPHIC LETTER A..MEROITIC CURSIVE LETTER DA
+ 109BC..109BD  ; Grapheme_Base # No   [2] MEROITIC CURSIVE FRACTION ELEVEN TWELFTHS..MEROITIC CURSIVE FRACTION ONE HALF
+ 109BE..109BF  ; Grapheme_Base # Lo   [2] MEROITIC CURSIVE LOGOGRAM RMT..MEROITIC CURSIVE LOGOGRAM IMN
+ 109C0..109CF  ; Grapheme_Base # No  [16] MEROITIC CURSIVE NUMBER ONE..MEROITIC CURSIVE NUMBER SEVENTY
+ 109D2..109FF  ; Grapheme_Base # No  [46] MEROITIC CURSIVE NUMBER ONE HUNDRED..MEROITIC CURSIVE FRACTION TEN TWELFTHS
+ 10A00         ; Grapheme_Base # Lo       KHAROSHTHI LETTER A
+ 10A10..10A13  ; Grapheme_Base # Lo   [4] KHAROSHTHI LETTER KA..KHAROSHTHI LETTER GHA
+ 10A15..10A17  ; Grapheme_Base # Lo   [3] KHAROSHTHI LETTER CA..KHAROSHTHI LETTER JA
+ 10A19..10A35  ; Grapheme_Base # Lo  [29] KHAROSHTHI LETTER NYA..KHAROSHTHI LETTER VHA
+ 10A40..10A48  ; Grapheme_Base # No   [9] KHAROSHTHI DIGIT ONE..KHAROSHTHI FRACTION ONE HALF
+ 10A50..10A58  ; Grapheme_Base # Po   [9] KHAROSHTHI PUNCTUATION DOT..KHAROSHTHI PUNCTUATION LINES
+ 10A60..10A7C  ; Grapheme_Base # Lo  [29] OLD SOUTH ARABIAN LETTER HE..OLD SOUTH ARABIAN LETTER THETH
+ 10A7D..10A7E  ; Grapheme_Base # No   [2] OLD SOUTH ARABIAN NUMBER ONE..OLD SOUTH ARABIAN NUMBER FIFTY
+ 10A7F         ; Grapheme_Base # Po       OLD SOUTH ARABIAN NUMERIC INDICATOR
+ 10A80..10A9C  ; Grapheme_Base # Lo  [29] OLD NORTH ARABIAN LETTER HEH..OLD NORTH ARABIAN LETTER ZAH
+ 10A9D..10A9F  ; Grapheme_Base # No   [3] OLD NORTH ARABIAN NUMBER ONE..OLD NORTH ARABIAN NUMBER TWENTY
+ 10AC0..10AC7  ; Grapheme_Base # Lo   [8] MANICHAEAN LETTER ALEPH..MANICHAEAN LETTER WAW
+ 10AC8         ; Grapheme_Base # So       MANICHAEAN SIGN UD
+ 10AC9..10AE4  ; Grapheme_Base # Lo  [28] MANICHAEAN LETTER ZAYIN..MANICHAEAN LETTER TAW
+ 10AEB..10AEF  ; Grapheme_Base # No   [5] MANICHAEAN NUMBER ONE..MANICHAEAN NUMBER ONE HUNDRED
+ 10AF0..10AF6  ; Grapheme_Base # Po   [7] MANICHAEAN PUNCTUATION STAR..MANICHAEAN PUNCTUATION LINE FILLER
+ 10B00..10B35  ; Grapheme_Base # Lo  [54] AVESTAN LETTER A..AVESTAN LETTER HE
+ 10B39..10B3F  ; Grapheme_Base # Po   [7] AVESTAN ABBREVIATION MARK..LARGE ONE RING OVER TWO RINGS PUNCTUATION
+ 10B40..10B55  ; Grapheme_Base # Lo  [22] INSCRIPTIONAL PARTHIAN LETTER ALEPH..INSCRIPTIONAL PARTHIAN LETTER TAW
+ 10B58..10B5F  ; Grapheme_Base # No   [8] INSCRIPTIONAL PARTHIAN NUMBER ONE..INSCRIPTIONAL PARTHIAN NUMBER ONE THOUSAND
+ 10B60..10B72  ; Grapheme_Base # Lo  [19] INSCRIPTIONAL PAHLAVI LETTER ALEPH..INSCRIPTIONAL PAHLAVI LETTER TAW
+ 10B78..10B7F  ; Grapheme_Base # No   [8] INSCRIPTIONAL PAHLAVI NUMBER ONE..INSCRIPTIONAL PAHLAVI NUMBER ONE THOUSAND
+ 10B80..10B91  ; Grapheme_Base # Lo  [18] PSALTER PAHLAVI LETTER ALEPH..PSALTER PAHLAVI LETTER TAW
+ 10B99..10B9C  ; Grapheme_Base # Po   [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
+ 10BA9..10BAF  ; Grapheme_Base # No   [7] PSALTER PAHLAVI NUMBER ONE..PSALTER PAHLAVI NUMBER ONE HUNDRED
+ 10C00..10C48  ; Grapheme_Base # Lo  [73] OLD TURKIC LETTER ORKHON A..OLD TURKIC LETTER ORKHON BASH
+ 10C80..10CB2  ; Grapheme_Base # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 10CC0..10CF2  ; Grapheme_Base # L&  [51] OLD HUNGARIAN SMALL LETTER A..OLD HUNGARIAN SMALL LETTER US
+ 10CFA..10CFF  ; Grapheme_Base # No   [6] OLD HUNGARIAN NUMBER ONE..OLD HUNGARIAN NUMBER ONE THOUSAND
+ 10D00..10D23  ; Grapheme_Base # Lo  [36] HANIFI ROHINGYA LETTER A..HANIFI ROHINGYA MARK NA KHONNA
+ 10D30..10D39  ; Grapheme_Base # Nd  [10] HANIFI ROHINGYA DIGIT ZERO..HANIFI ROHINGYA DIGIT NINE
+ 10E60..10E7E  ; Grapheme_Base # No  [31] RUMI DIGIT ONE..RUMI FRACTION TWO THIRDS
+ 10E80..10EA9  ; Grapheme_Base # Lo  [42] YEZIDI LETTER ELIF..YEZIDI LETTER ET
+ 10EAD         ; Grapheme_Base # Pd       YEZIDI HYPHENATION MARK
+ 10EB0..10EB1  ; Grapheme_Base # Lo   [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10F00..10F1C  ; Grapheme_Base # Lo  [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
+ 10F1D..10F26  ; Grapheme_Base # No  [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
+ 10F27         ; Grapheme_Base # Lo       OLD SOGDIAN LIGATURE AYIN-DALETH
+ 10F30..10F45  ; Grapheme_Base # Lo  [22] SOGDIAN LETTER ALEPH..SOGDIAN INDEPENDENT SHIN
+ 10F51..10F54  ; Grapheme_Base # No   [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
+ 10F55..10F59  ; Grapheme_Base # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+ 10F70..10F81  ; Grapheme_Base # Lo  [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10F86..10F89  ; Grapheme_Base # Po   [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
+ 10FB0..10FC4  ; Grapheme_Base # Lo  [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
+ 10FC5..10FCB  ; Grapheme_Base # No   [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED
+ 10FE0..10FF6  ; Grapheme_Base # Lo  [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
+ 11000         ; Grapheme_Base # Mc       BRAHMI SIGN CANDRABINDU
+ 11002         ; Grapheme_Base # Mc       BRAHMI SIGN VISARGA
+ 11003..11037  ; Grapheme_Base # Lo  [53] BRAHMI SIGN JIHVAMULIYA..BRAHMI LETTER OLD TAMIL NNNA
+ 11047..1104D  ; Grapheme_Base # Po   [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
+ 11052..11065  ; Grapheme_Base # No  [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
+ 11066..1106F  ; Grapheme_Base # Nd  [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
+ 11071..11072  ; Grapheme_Base # Lo   [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11075         ; Grapheme_Base # Lo       BRAHMI LETTER OLD TAMIL LLA
+ 11082         ; Grapheme_Base # Mc       KAITHI SIGN VISARGA
+ 11083..110AF  ; Grapheme_Base # Lo  [45] KAITHI LETTER A..KAITHI LETTER HA
+ 110B0..110B2  ; Grapheme_Base # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
+ 110B7..110B8  ; Grapheme_Base # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+ 110BB..110BC  ; Grapheme_Base # Po   [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
+ 110BE..110C1  ; Grapheme_Base # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
+ 110D0..110E8  ; Grapheme_Base # Lo  [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
+ 110F0..110F9  ; Grapheme_Base # Nd  [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
+ 11103..11126  ; Grapheme_Base # Lo  [36] CHAKMA LETTER AA..CHAKMA LETTER HAA
+ 1112C         ; Grapheme_Base # Mc       CHAKMA VOWEL SIGN E
+ 11136..1113F  ; Grapheme_Base # Nd  [10] CHAKMA DIGIT ZERO..CHAKMA DIGIT NINE
+ 11140..11143  ; Grapheme_Base # Po   [4] CHAKMA SECTION MARK..CHAKMA QUESTION MARK
+ 11144         ; Grapheme_Base # Lo       CHAKMA LETTER LHAA
+ 11145..11146  ; Grapheme_Base # Mc   [2] CHAKMA VOWEL SIGN AA..CHAKMA VOWEL SIGN EI
+ 11147         ; Grapheme_Base # Lo       CHAKMA LETTER VAA
+ 11150..11172  ; Grapheme_Base # Lo  [35] MAHAJANI LETTER A..MAHAJANI LETTER RRA
+ 11174..11175  ; Grapheme_Base # Po   [2] MAHAJANI ABBREVIATION SIGN..MAHAJANI SECTION MARK
+ 11176         ; Grapheme_Base # Lo       MAHAJANI LIGATURE SHRI
+ 11182         ; Grapheme_Base # Mc       SHARADA SIGN VISARGA
+ 11183..111B2  ; Grapheme_Base # Lo  [48] SHARADA LETTER A..SHARADA LETTER HA
+ 111B3..111B5  ; Grapheme_Base # Mc   [3] SHARADA VOWEL SIGN AA..SHARADA VOWEL SIGN II
+ 111BF..111C0  ; Grapheme_Base # Mc   [2] SHARADA VOWEL SIGN AU..SHARADA SIGN VIRAMA
+ 111C1..111C4  ; Grapheme_Base # Lo   [4] SHARADA SIGN AVAGRAHA..SHARADA OM
+ 111C5..111C8  ; Grapheme_Base # Po   [4] SHARADA DANDA..SHARADA SEPARATOR
+ 111CD         ; Grapheme_Base # Po       SHARADA SUTRA MARK
+ 111CE         ; Grapheme_Base # Mc       SHARADA VOWEL SIGN PRISHTHAMATRA E
+ 111D0..111D9  ; Grapheme_Base # Nd  [10] SHARADA DIGIT ZERO..SHARADA DIGIT NINE
+ 111DA         ; Grapheme_Base # Lo       SHARADA EKAM
+ 111DB         ; Grapheme_Base # Po       SHARADA SIGN SIDDHAM
+ 111DC         ; Grapheme_Base # Lo       SHARADA HEADSTROKE
+ 111DD..111DF  ; Grapheme_Base # Po   [3] SHARADA CONTINUATION SIGN..SHARADA SECTION MARK-2
+ 111E1..111F4  ; Grapheme_Base # No  [20] SINHALA ARCHAIC DIGIT ONE..SINHALA ARCHAIC NUMBER ONE THOUSAND
+ 11200..11211  ; Grapheme_Base # Lo  [18] KHOJKI LETTER A..KHOJKI LETTER JJA
+ 11213..1122B  ; Grapheme_Base # Lo  [25] KHOJKI LETTER NYA..KHOJKI LETTER LLA
+ 1122C..1122E  ; Grapheme_Base # Mc   [3] KHOJKI VOWEL SIGN AA..KHOJKI VOWEL SIGN II
+ 11232..11233  ; Grapheme_Base # Mc   [2] KHOJKI VOWEL SIGN O..KHOJKI VOWEL SIGN AU
+ 11235         ; Grapheme_Base # Mc       KHOJKI SIGN VIRAMA
+ 11238..1123D  ; Grapheme_Base # Po   [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
+ 1123F..11240  ; Grapheme_Base # Lo   [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11280..11286  ; Grapheme_Base # Lo   [7] MULTANI LETTER A..MULTANI LETTER GA
+ 11288         ; Grapheme_Base # Lo       MULTANI LETTER GHA
+ 1128A..1128D  ; Grapheme_Base # Lo   [4] MULTANI LETTER CA..MULTANI LETTER JJA
+ 1128F..1129D  ; Grapheme_Base # Lo  [15] MULTANI LETTER NYA..MULTANI LETTER BA
+ 1129F..112A8  ; Grapheme_Base # Lo  [10] MULTANI LETTER BHA..MULTANI LETTER RHA
+ 112A9         ; Grapheme_Base # Po       MULTANI SECTION MARK
+ 112B0..112DE  ; Grapheme_Base # Lo  [47] KHUDAWADI LETTER A..KHUDAWADI LETTER HA
+ 112E0..112E2  ; Grapheme_Base # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
+ 112F0..112F9  ; Grapheme_Base # Nd  [10] KHUDAWADI DIGIT ZERO..KHUDAWADI DIGIT NINE
+ 11302..11303  ; Grapheme_Base # Mc   [2] GRANTHA SIGN ANUSVARA..GRANTHA SIGN VISARGA
+ 11305..1130C  ; Grapheme_Base # Lo   [8] GRANTHA LETTER A..GRANTHA LETTER VOCALIC L
+ 1130F..11310  ; Grapheme_Base # Lo   [2] GRANTHA LETTER EE..GRANTHA LETTER AI
+ 11313..11328  ; Grapheme_Base # Lo  [22] GRANTHA LETTER OO..GRANTHA LETTER NA
+ 1132A..11330  ; Grapheme_Base # Lo   [7] GRANTHA LETTER PA..GRANTHA LETTER RA
+ 11332..11333  ; Grapheme_Base # Lo   [2] GRANTHA LETTER LA..GRANTHA LETTER LLA
+ 11335..11339  ; Grapheme_Base # Lo   [5] GRANTHA LETTER VA..GRANTHA LETTER HA
+ 1133D         ; Grapheme_Base # Lo       GRANTHA SIGN AVAGRAHA
+ 1133F         ; Grapheme_Base # Mc       GRANTHA VOWEL SIGN I
+ 11341..11344  ; Grapheme_Base # Mc   [4] GRANTHA VOWEL SIGN U..GRANTHA VOWEL SIGN VOCALIC RR
+ 11347..11348  ; Grapheme_Base # Mc   [2] GRANTHA VOWEL SIGN EE..GRANTHA VOWEL SIGN AI
+ 1134B..1134D  ; Grapheme_Base # Mc   [3] GRANTHA VOWEL SIGN OO..GRANTHA SIGN VIRAMA
+ 11350         ; Grapheme_Base # Lo       GRANTHA OM
+ 1135D..11361  ; Grapheme_Base # Lo   [5] GRANTHA SIGN PLUTA..GRANTHA LETTER VOCALIC LL
+ 11362..11363  ; Grapheme_Base # Mc   [2] GRANTHA VOWEL SIGN VOCALIC L..GRANTHA VOWEL SIGN VOCALIC LL
+ 11400..11434  ; Grapheme_Base # Lo  [53] NEWA LETTER A..NEWA LETTER HA
+ 11435..11437  ; Grapheme_Base # Mc   [3] NEWA VOWEL SIGN AA..NEWA VOWEL SIGN II
+ 11440..11441  ; Grapheme_Base # Mc   [2] NEWA VOWEL SIGN O..NEWA VOWEL SIGN AU
+ 11445         ; Grapheme_Base # Mc       NEWA SIGN VISARGA
+ 11447..1144A  ; Grapheme_Base # Lo   [4] NEWA SIGN AVAGRAHA..NEWA SIDDHI
+ 1144B..1144F  ; Grapheme_Base # Po   [5] NEWA DANDA..NEWA ABBREVIATION SIGN
+ 11450..11459  ; Grapheme_Base # Nd  [10] NEWA DIGIT ZERO..NEWA DIGIT NINE
+ 1145A..1145B  ; Grapheme_Base # Po   [2] NEWA DOUBLE COMMA..NEWA PLACEHOLDER MARK
+ 1145D         ; Grapheme_Base # Po       NEWA INSERTION SIGN
+ 1145F..11461  ; Grapheme_Base # Lo   [3] NEWA LETTER VEDIC ANUSVARA..NEWA SIGN UPADHMANIYA
+ 11480..114AF  ; Grapheme_Base # Lo  [48] TIRHUTA ANJI..TIRHUTA LETTER HA
+ 114B1..114B2  ; Grapheme_Base # Mc   [2] TIRHUTA VOWEL SIGN I..TIRHUTA VOWEL SIGN II
+ 114B9         ; Grapheme_Base # Mc       TIRHUTA VOWEL SIGN E
+ 114BB..114BC  ; Grapheme_Base # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+ 114BE         ; Grapheme_Base # Mc       TIRHUTA VOWEL SIGN AU
+ 114C1         ; Grapheme_Base # Mc       TIRHUTA SIGN VISARGA
+ 114C4..114C5  ; Grapheme_Base # Lo   [2] TIRHUTA SIGN AVAGRAHA..TIRHUTA GVANG
+ 114C6         ; Grapheme_Base # Po       TIRHUTA ABBREVIATION SIGN
+ 114C7         ; Grapheme_Base # Lo       TIRHUTA OM
+ 114D0..114D9  ; Grapheme_Base # Nd  [10] TIRHUTA DIGIT ZERO..TIRHUTA DIGIT NINE
+ 11580..115AE  ; Grapheme_Base # Lo  [47] SIDDHAM LETTER A..SIDDHAM LETTER HA
+ 115B0..115B1  ; Grapheme_Base # Mc   [2] SIDDHAM VOWEL SIGN I..SIDDHAM VOWEL SIGN II
+ 115B8..115BB  ; Grapheme_Base # Mc   [4] SIDDHAM VOWEL SIGN E..SIDDHAM VOWEL SIGN AU
+ 115BE         ; Grapheme_Base # Mc       SIDDHAM SIGN VISARGA
+ 115C1..115D7  ; Grapheme_Base # Po  [23] SIDDHAM SIGN SIDDHAM..SIDDHAM SECTION MARK WITH CIRCLES AND FOUR ENCLOSURES
+ 115D8..115DB  ; Grapheme_Base # Lo   [4] SIDDHAM LETTER THREE-CIRCLE ALTERNATE I..SIDDHAM LETTER ALTERNATE U
+ 11600..1162F  ; Grapheme_Base # Lo  [48] MODI LETTER A..MODI LETTER LLA
+ 11630..11632  ; Grapheme_Base # Mc   [3] MODI VOWEL SIGN AA..MODI VOWEL SIGN II
+ 1163B..1163C  ; Grapheme_Base # Mc   [2] MODI VOWEL SIGN O..MODI VOWEL SIGN AU
+ 1163E         ; Grapheme_Base # Mc       MODI SIGN VISARGA
+ 11641..11643  ; Grapheme_Base # Po   [3] MODI DANDA..MODI ABBREVIATION SIGN
+ 11644         ; Grapheme_Base # Lo       MODI SIGN HUVA
+ 11650..11659  ; Grapheme_Base # Nd  [10] MODI DIGIT ZERO..MODI DIGIT NINE
+ 11660..1166C  ; Grapheme_Base # Po  [13] MONGOLIAN BIRGA WITH ORNAMENT..MONGOLIAN TURNED SWIRL BIRGA WITH DOUBLE ORNAMENT
+ 11680..116AA  ; Grapheme_Base # Lo  [43] TAKRI LETTER A..TAKRI LETTER RRA
+ 116AC         ; Grapheme_Base # Mc       TAKRI SIGN VISARGA
+ 116AE..116AF  ; Grapheme_Base # Mc   [2] TAKRI VOWEL SIGN I..TAKRI VOWEL SIGN II
+ 116B6         ; Grapheme_Base # Mc       TAKRI SIGN VIRAMA
+ 116B8         ; Grapheme_Base # Lo       TAKRI LETTER ARCHAIC KHA
+ 116B9         ; Grapheme_Base # Po       TAKRI ABBREVIATION SIGN
+ 116C0..116C9  ; Grapheme_Base # Nd  [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
+ 11700..1171A  ; Grapheme_Base # Lo  [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
+ 11720..11721  ; Grapheme_Base # Mc   [2] AHOM VOWEL SIGN A..AHOM VOWEL SIGN AA
+ 11726         ; Grapheme_Base # Mc       AHOM VOWEL SIGN E
+ 11730..11739  ; Grapheme_Base # Nd  [10] AHOM DIGIT ZERO..AHOM DIGIT NINE
+ 1173A..1173B  ; Grapheme_Base # No   [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
+ 1173C..1173E  ; Grapheme_Base # Po   [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
+ 1173F         ; Grapheme_Base # So       AHOM SYMBOL VI
+ 11740..11746  ; Grapheme_Base # Lo   [7] AHOM LETTER CA..AHOM LETTER LLA
+ 11800..1182B  ; Grapheme_Base # Lo  [44] DOGRA LETTER A..DOGRA LETTER RRA
+ 1182C..1182E  ; Grapheme_Base # Mc   [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
+ 11838         ; Grapheme_Base # Mc       DOGRA SIGN VISARGA
+ 1183B         ; Grapheme_Base # Po       DOGRA ABBREVIATION SIGN
+ 118A0..118DF  ; Grapheme_Base # L&  [64] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI SMALL LETTER VIYO
+ 118E0..118E9  ; Grapheme_Base # Nd  [10] WARANG CITI DIGIT ZERO..WARANG CITI DIGIT NINE
+ 118EA..118F2  ; Grapheme_Base # No   [9] WARANG CITI NUMBER TEN..WARANG CITI NUMBER NINETY
+ 118FF..11906  ; Grapheme_Base # Lo   [8] WARANG CITI OM..DIVES AKURU LETTER E
+ 11909         ; Grapheme_Base # Lo       DIVES AKURU LETTER O
+ 1190C..11913  ; Grapheme_Base # Lo   [8] DIVES AKURU LETTER KA..DIVES AKURU LETTER JA
+ 11915..11916  ; Grapheme_Base # Lo   [2] DIVES AKURU LETTER NYA..DIVES AKURU LETTER TTA
+ 11918..1192F  ; Grapheme_Base # Lo  [24] DIVES AKURU LETTER DDA..DIVES AKURU LETTER ZA
+ 11931..11935  ; Grapheme_Base # Mc   [5] DIVES AKURU VOWEL SIGN I..DIVES AKURU VOWEL SIGN E
+ 11937..11938  ; Grapheme_Base # Mc   [2] DIVES AKURU VOWEL SIGN AI..DIVES AKURU VOWEL SIGN O
+ 1193D         ; Grapheme_Base # Mc       DIVES AKURU SIGN HALANTA
+ 1193F         ; Grapheme_Base # Lo       DIVES AKURU PREFIXED NASAL SIGN
+ 11940         ; Grapheme_Base # Mc       DIVES AKURU MEDIAL YA
+ 11941         ; Grapheme_Base # Lo       DIVES AKURU INITIAL RA
+ 11942         ; Grapheme_Base # Mc       DIVES AKURU MEDIAL RA
+ 11944..11946  ; Grapheme_Base # Po   [3] DIVES AKURU DOUBLE DANDA..DIVES AKURU END OF TEXT MARK
+ 11950..11959  ; Grapheme_Base # Nd  [10] DIVES AKURU DIGIT ZERO..DIVES AKURU DIGIT NINE
+ 119A0..119A7  ; Grapheme_Base # Lo   [8] NANDINAGARI LETTER A..NANDINAGARI LETTER VOCALIC RR
+ 119AA..119D0  ; Grapheme_Base # Lo  [39] NANDINAGARI LETTER E..NANDINAGARI LETTER RRA
+ 119D1..119D3  ; Grapheme_Base # Mc   [3] NANDINAGARI VOWEL SIGN AA..NANDINAGARI VOWEL SIGN II
+ 119DC..119DF  ; Grapheme_Base # Mc   [4] NANDINAGARI VOWEL SIGN O..NANDINAGARI SIGN VISARGA
+ 119E1         ; Grapheme_Base # Lo       NANDINAGARI SIGN AVAGRAHA
+ 119E2         ; Grapheme_Base # Po       NANDINAGARI SIGN SIDDHAM
+ 119E3         ; Grapheme_Base # Lo       NANDINAGARI HEADSTROKE
+ 119E4         ; Grapheme_Base # Mc       NANDINAGARI VOWEL SIGN PRISHTHAMATRA E
+ 11A00         ; Grapheme_Base # Lo       ZANABAZAR SQUARE LETTER A
+ 11A0B..11A32  ; Grapheme_Base # Lo  [40] ZANABAZAR SQUARE LETTER KA..ZANABAZAR SQUARE LETTER KSSA
+ 11A39         ; Grapheme_Base # Mc       ZANABAZAR SQUARE SIGN VISARGA
+ 11A3A         ; Grapheme_Base # Lo       ZANABAZAR SQUARE CLUSTER-INITIAL LETTER RA
+ 11A3F..11A46  ; Grapheme_Base # Po   [8] ZANABAZAR SQUARE INITIAL HEAD MARK..ZANABAZAR SQUARE CLOSING DOUBLE-LINED HEAD MARK
+ 11A50         ; Grapheme_Base # Lo       SOYOMBO LETTER A
+ 11A57..11A58  ; Grapheme_Base # Mc   [2] SOYOMBO VOWEL SIGN AI..SOYOMBO VOWEL SIGN AU
+ 11A5C..11A89  ; Grapheme_Base # Lo  [46] SOYOMBO LETTER KA..SOYOMBO CLUSTER-INITIAL LETTER SA
+ 11A97         ; Grapheme_Base # Mc       SOYOMBO SIGN VISARGA
+ 11A9A..11A9C  ; Grapheme_Base # Po   [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD
+ 11A9D         ; Grapheme_Base # Lo       SOYOMBO MARK PLUTA
+ 11A9E..11AA2  ; Grapheme_Base # Po   [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
+ 11AB0..11AF8  ; Grapheme_Base # Lo  [73] CANADIAN SYLLABICS NATTILIK HI..PAU CIN HAU GLOTTAL STOP FINAL
+ 11B00..11B09  ; Grapheme_Base # Po  [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU
+ 11C00..11C08  ; Grapheme_Base # Lo   [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
+ 11C0A..11C2E  ; Grapheme_Base # Lo  [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
+ 11C2F         ; Grapheme_Base # Mc       BHAIKSUKI VOWEL SIGN AA
+ 11C3E         ; Grapheme_Base # Mc       BHAIKSUKI SIGN VISARGA
+ 11C40         ; Grapheme_Base # Lo       BHAIKSUKI SIGN AVAGRAHA
+ 11C41..11C45  ; Grapheme_Base # Po   [5] BHAIKSUKI DANDA..BHAIKSUKI GAP FILLER-2
+ 11C50..11C59  ; Grapheme_Base # Nd  [10] BHAIKSUKI DIGIT ZERO..BHAIKSUKI DIGIT NINE
+ 11C5A..11C6C  ; Grapheme_Base # No  [19] BHAIKSUKI NUMBER ONE..BHAIKSUKI HUNDREDS UNIT MARK
+ 11C70..11C71  ; Grapheme_Base # Po   [2] MARCHEN HEAD MARK..MARCHEN MARK SHAD
+ 11C72..11C8F  ; Grapheme_Base # Lo  [30] MARCHEN LETTER KA..MARCHEN LETTER A
+ 11CA9         ; Grapheme_Base # Mc       MARCHEN SUBJOINED LETTER YA
+ 11CB1         ; Grapheme_Base # Mc       MARCHEN VOWEL SIGN I
+ 11CB4         ; Grapheme_Base # Mc       MARCHEN VOWEL SIGN O
+ 11D00..11D06  ; Grapheme_Base # Lo   [7] MASARAM GONDI LETTER A..MASARAM GONDI LETTER E
+ 11D08..11D09  ; Grapheme_Base # Lo   [2] MASARAM GONDI LETTER AI..MASARAM GONDI LETTER O
+ 11D0B..11D30  ; Grapheme_Base # Lo  [38] MASARAM GONDI LETTER AU..MASARAM GONDI LETTER TRA
+ 11D46         ; Grapheme_Base # Lo       MASARAM GONDI REPHA
+ 11D50..11D59  ; Grapheme_Base # Nd  [10] MASARAM GONDI DIGIT ZERO..MASARAM GONDI DIGIT NINE
+ 11D60..11D65  ; Grapheme_Base # Lo   [6] GUNJALA GONDI LETTER A..GUNJALA GONDI LETTER UU
+ 11D67..11D68  ; Grapheme_Base # Lo   [2] GUNJALA GONDI LETTER EE..GUNJALA GONDI LETTER AI
+ 11D6A..11D89  ; Grapheme_Base # Lo  [32] GUNJALA GONDI LETTER OO..GUNJALA GONDI LETTER SA
+ 11D8A..11D8E  ; Grapheme_Base # Mc   [5] GUNJALA GONDI VOWEL SIGN AA..GUNJALA GONDI VOWEL SIGN UU
+ 11D93..11D94  ; Grapheme_Base # Mc   [2] GUNJALA GONDI VOWEL SIGN OO..GUNJALA GONDI VOWEL SIGN AU
+ 11D96         ; Grapheme_Base # Mc       GUNJALA GONDI SIGN VISARGA
+ 11D98         ; Grapheme_Base # Lo       GUNJALA GONDI OM
+ 11DA0..11DA9  ; Grapheme_Base # Nd  [10] GUNJALA GONDI DIGIT ZERO..GUNJALA GONDI DIGIT NINE
+ 11EE0..11EF2  ; Grapheme_Base # Lo  [19] MAKASAR LETTER KA..MAKASAR ANGKA
+ 11EF5..11EF6  ; Grapheme_Base # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+ 11EF7..11EF8  ; Grapheme_Base # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+ 11F02         ; Grapheme_Base # Lo       KAWI SIGN REPHA
+ 11F03         ; Grapheme_Base # Mc       KAWI SIGN VISARGA
+ 11F04..11F10  ; Grapheme_Base # Lo  [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33  ; Grapheme_Base # Lo  [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11F34..11F35  ; Grapheme_Base # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+ 11F3E..11F3F  ; Grapheme_Base # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+ 11F41         ; Grapheme_Base # Mc       KAWI SIGN KILLER
+ 11F43..11F4F  ; Grapheme_Base # Po  [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL
+ 11F50..11F59  ; Grapheme_Base # Nd  [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
+ 11FB0         ; Grapheme_Base # Lo       LISU LETTER YHA
+ 11FC0..11FD4  ; Grapheme_Base # No  [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
+ 11FD5..11FDC  ; Grapheme_Base # So   [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
+ 11FDD..11FE0  ; Grapheme_Base # Sc   [4] TAMIL SIGN KAACU..TAMIL SIGN VARAAKAN
+ 11FE1..11FF1  ; Grapheme_Base # So  [17] TAMIL SIGN PAARAM..TAMIL SIGN VAKAIYARAA
+ 11FFF         ; Grapheme_Base # Po       TAMIL PUNCTUATION END OF TEXT
+ 12000..12399  ; Grapheme_Base # Lo [922] CUNEIFORM SIGN A..CUNEIFORM SIGN U U
+ 12400..1246E  ; Grapheme_Base # Nl [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
+ 12470..12474  ; Grapheme_Base # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
+ 12480..12543  ; Grapheme_Base # Lo [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
+ 12F90..12FF0  ; Grapheme_Base # Lo  [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
+ 12FF1..12FF2  ; Grapheme_Base # Po   [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302
+ 13000..1342F  ; Grapheme_Base # Lo [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
+ 13441..13446  ; Grapheme_Base # Lo   [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
+ 14400..14646  ; Grapheme_Base # Lo [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
+ 16800..16A38  ; Grapheme_Base # Lo [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
+ 16A40..16A5E  ; Grapheme_Base # Lo  [31] MRO LETTER TA..MRO LETTER TEK
+ 16A60..16A69  ; Grapheme_Base # Nd  [10] MRO DIGIT ZERO..MRO DIGIT NINE
+ 16A6E..16A6F  ; Grapheme_Base # Po   [2] MRO DANDA..MRO DOUBLE DANDA
+ 16A70..16ABE  ; Grapheme_Base # Lo  [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AC0..16AC9  ; Grapheme_Base # Nd  [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
+ 16AD0..16AED  ; Grapheme_Base # Lo  [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
+ 16AF5         ; Grapheme_Base # Po       BASSA VAH FULL STOP
+ 16B00..16B2F  ; Grapheme_Base # Lo  [48] PAHAWH HMONG VOWEL KEEB..PAHAWH HMONG CONSONANT CAU
+ 16B37..16B3B  ; Grapheme_Base # Po   [5] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS FEEM
+ 16B3C..16B3F  ; Grapheme_Base # So   [4] PAHAWH HMONG SIGN XYEEM NTXIV..PAHAWH HMONG SIGN XYEEM FAIB
+ 16B40..16B43  ; Grapheme_Base # Lm   [4] PAHAWH HMONG SIGN VOS SEEV..PAHAWH HMONG SIGN IB YAM
+ 16B44         ; Grapheme_Base # Po       PAHAWH HMONG SIGN XAUS
+ 16B45         ; Grapheme_Base # So       PAHAWH HMONG SIGN CIM TSOV ROG
+ 16B50..16B59  ; Grapheme_Base # Nd  [10] PAHAWH HMONG DIGIT ZERO..PAHAWH HMONG DIGIT NINE
+ 16B5B..16B61  ; Grapheme_Base # No   [7] PAHAWH HMONG NUMBER TENS..PAHAWH HMONG NUMBER TRILLIONS
+ 16B63..16B77  ; Grapheme_Base # Lo  [21] PAHAWH HMONG SIGN VOS LUB..PAHAWH HMONG SIGN CIM NRES TOS
+ 16B7D..16B8F  ; Grapheme_Base # Lo  [19] PAHAWH HMONG CLAN SIGN TSHEEJ..PAHAWH HMONG CLAN SIGN VWJ
+ 16E40..16E7F  ; Grapheme_Base # L&  [64] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN SMALL LETTER Y
+ 16E80..16E96  ; Grapheme_Base # No  [23] MEDEFAIDRIN DIGIT ZERO..MEDEFAIDRIN DIGIT THREE ALTERNATE FORM
+ 16E97..16E9A  ; Grapheme_Base # Po   [4] MEDEFAIDRIN COMMA..MEDEFAIDRIN EXCLAMATION OH
+ 16F00..16F4A  ; Grapheme_Base # Lo  [75] MIAO LETTER PA..MIAO LETTER RTE
+ 16F50         ; Grapheme_Base # Lo       MIAO LETTER NASALIZATION
+ 16F51..16F87  ; Grapheme_Base # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
+ 16F93..16F9F  ; Grapheme_Base # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
+ 16FE0..16FE1  ; Grapheme_Base # Lm   [2] TANGUT ITERATION MARK..NUSHU ITERATION MARK
+ 16FE2         ; Grapheme_Base # Po       OLD CHINESE HOOK MARK
+ 16FE3         ; Grapheme_Base # Lm       OLD CHINESE ITERATION MARK
+ 16FF0..16FF1  ; Grapheme_Base # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+ 17000..187F7  ; Grapheme_Base # Lo [6136] TANGUT IDEOGRAPH-17000..TANGUT IDEOGRAPH-187F7
+ 18800..18CD5  ; Grapheme_Base # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
+ 18D00..18D08  ; Grapheme_Base # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3  ; Grapheme_Base # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; Grapheme_Base # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; Grapheme_Base # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1B000..1B122  ; Grapheme_Base # Lo [291] KATAKANA LETTER ARCHAIC E..KATAKANA LETTER ARCHAIC WU
+ 1B132         ; Grapheme_Base # Lo       HIRAGANA LETTER SMALL KO
+ 1B150..1B152  ; Grapheme_Base # Lo   [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155         ; Grapheme_Base # Lo       KATAKANA LETTER SMALL KO
+ 1B164..1B167  ; Grapheme_Base # Lo   [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
+ 1B170..1B2FB  ; Grapheme_Base # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
+ 1BC00..1BC6A  ; Grapheme_Base # Lo [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
+ 1BC70..1BC7C  ; Grapheme_Base # Lo  [13] DUPLOYAN AFFIX LEFT HORIZONTAL SECANT..DUPLOYAN AFFIX ATTACHED TANGENT HOOK
+ 1BC80..1BC88  ; Grapheme_Base # Lo   [9] DUPLOYAN AFFIX HIGH ACUTE..DUPLOYAN AFFIX HIGH VERTICAL
+ 1BC90..1BC99  ; Grapheme_Base # Lo  [10] DUPLOYAN AFFIX LOW ACUTE..DUPLOYAN AFFIX LOW ARROW
+ 1BC9C         ; Grapheme_Base # So       DUPLOYAN SIGN O WITH CROSS
+ 1BC9F         ; Grapheme_Base # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
+ 1CF50..1CFC3  ; Grapheme_Base # So [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
+ 1D000..1D0F5  ; Grapheme_Base # So [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
+ 1D100..1D126  ; Grapheme_Base # So  [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
+ 1D129..1D164  ; Grapheme_Base # So  [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D166         ; Grapheme_Base # Mc       MUSICAL SYMBOL COMBINING SPRECHGESANG STEM
+ 1D16A..1D16C  ; Grapheme_Base # So   [3] MUSICAL SYMBOL FINGERED TREMOLO-1..MUSICAL SYMBOL FINGERED TREMOLO-3
+ 1D16D         ; Grapheme_Base # Mc       MUSICAL SYMBOL COMBINING AUGMENTATION DOT
+ 1D183..1D184  ; Grapheme_Base # So   [2] MUSICAL SYMBOL ARPEGGIATO UP..MUSICAL SYMBOL ARPEGGIATO DOWN
+ 1D18C..1D1A9  ; Grapheme_Base # So  [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
+ 1D1AE..1D1EA  ; Grapheme_Base # So  [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON
+ 1D200..1D241  ; Grapheme_Base # So  [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
+ 1D245         ; Grapheme_Base # So       GREEK MUSICAL LEIMMA
+ 1D2C0..1D2D3  ; Grapheme_Base # No  [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN
+ 1D2E0..1D2F3  ; Grapheme_Base # No  [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
+ 1D300..1D356  ; Grapheme_Base # So  [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
+ 1D360..1D378  ; Grapheme_Base # No  [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
+ 1D400..1D454  ; Grapheme_Base # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; Grapheme_Base # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; Grapheme_Base # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; Grapheme_Base # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; Grapheme_Base # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; Grapheme_Base # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; Grapheme_Base # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; Grapheme_Base # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; Grapheme_Base # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; Grapheme_Base # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; Grapheme_Base # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; Grapheme_Base # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; Grapheme_Base # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; Grapheme_Base # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; Grapheme_Base # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; Grapheme_Base # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; Grapheme_Base # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; Grapheme_Base # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; Grapheme_Base # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; Grapheme_Base # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C1         ; Grapheme_Base # Sm       MATHEMATICAL BOLD NABLA
+ 1D6C2..1D6DA  ; Grapheme_Base # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DB         ; Grapheme_Base # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ 1D6DC..1D6FA  ; Grapheme_Base # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FB         ; Grapheme_Base # Sm       MATHEMATICAL ITALIC NABLA
+ 1D6FC..1D714  ; Grapheme_Base # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D715         ; Grapheme_Base # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ 1D716..1D734  ; Grapheme_Base # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D735         ; Grapheme_Base # Sm       MATHEMATICAL BOLD ITALIC NABLA
+ 1D736..1D74E  ; Grapheme_Base # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D74F         ; Grapheme_Base # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D750..1D76E  ; Grapheme_Base # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D76F         ; Grapheme_Base # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
+ 1D770..1D788  ; Grapheme_Base # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D789         ; Grapheme_Base # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ 1D78A..1D7A8  ; Grapheme_Base # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7A9         ; Grapheme_Base # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ 1D7AA..1D7C2  ; Grapheme_Base # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C3         ; Grapheme_Base # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D7C4..1D7CB  ; Grapheme_Base # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; Grapheme_Base # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1D800..1D9FF  ; Grapheme_Base # So [512] SIGNWRITING HAND-FIST INDEX..SIGNWRITING HEAD
+ 1DA37..1DA3A  ; Grapheme_Base # So   [4] SIGNWRITING AIR BLOW SMALL ROTATIONS..SIGNWRITING BREATH EXHALE
+ 1DA6D..1DA74  ; Grapheme_Base # So   [8] SIGNWRITING SHOULDER HIP SPINE..SIGNWRITING TORSO-FLOORPLANE TWISTING
+ 1DA76..1DA83  ; Grapheme_Base # So  [14] SIGNWRITING LIMB COMBINATION..SIGNWRITING LOCATION DEPTH
+ 1DA85..1DA86  ; Grapheme_Base # So   [2] SIGNWRITING LOCATION TORSO..SIGNWRITING LOCATION LIMBS DIGITS
+ 1DA87..1DA8B  ; Grapheme_Base # Po   [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
+ 1DF00..1DF09  ; Grapheme_Base # L&  [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A         ; Grapheme_Base # Lo       LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E  ; Grapheme_Base # L&  [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A  ; Grapheme_Base # L&   [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
+ 1E030..1E06D  ; Grapheme_Base # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E100..1E12C  ; Grapheme_Base # Lo  [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
+ 1E137..1E13D  ; Grapheme_Base # Lm   [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
+ 1E140..1E149  ; Grapheme_Base # Nd  [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
+ 1E14E         ; Grapheme_Base # Lo       NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
+ 1E14F         ; Grapheme_Base # So       NYIAKENG PUACHUE HMONG CIRCLED CA
+ 1E290..1E2AD  ; Grapheme_Base # Lo  [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2C0..1E2EB  ; Grapheme_Base # Lo  [44] WANCHO LETTER AA..WANCHO LETTER YIH
+ 1E2F0..1E2F9  ; Grapheme_Base # Nd  [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
+ 1E2FF         ; Grapheme_Base # Sc       WANCHO NGUN SIGN
+ 1E4D0..1E4EA  ; Grapheme_Base # Lo  [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB         ; Grapheme_Base # Lm       NAG MUNDARI SIGN OJOD
+ 1E4F0..1E4F9  ; Grapheme_Base # Nd  [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+ 1E7E0..1E7E6  ; Grapheme_Base # Lo   [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB  ; Grapheme_Base # Lo   [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE  ; Grapheme_Base # Lo   [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE  ; Grapheme_Base # Lo  [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
+ 1E800..1E8C4  ; Grapheme_Base # Lo [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
+ 1E8C7..1E8CF  ; Grapheme_Base # No   [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
+ 1E900..1E943  ; Grapheme_Base # L&  [68] ADLAM CAPITAL LETTER ALIF..ADLAM SMALL LETTER SHA
+ 1E94B         ; Grapheme_Base # Lm       ADLAM NASALIZATION MARK
+ 1E950..1E959  ; Grapheme_Base # Nd  [10] ADLAM DIGIT ZERO..ADLAM DIGIT NINE
+ 1E95E..1E95F  ; Grapheme_Base # Po   [2] ADLAM INITIAL EXCLAMATION MARK..ADLAM INITIAL QUESTION MARK
+ 1EC71..1ECAB  ; Grapheme_Base # No  [59] INDIC SIYAQ NUMBER ONE..INDIC SIYAQ NUMBER PREFIXED NINE
+ 1ECAC         ; Grapheme_Base # So       INDIC SIYAQ PLACEHOLDER
+ 1ECAD..1ECAF  ; Grapheme_Base # No   [3] INDIC SIYAQ FRACTION ONE QUARTER..INDIC SIYAQ FRACTION THREE QUARTERS
+ 1ECB0         ; Grapheme_Base # Sc       INDIC SIYAQ RUPEE MARK
+ 1ECB1..1ECB4  ; Grapheme_Base # No   [4] INDIC SIYAQ NUMBER ALTERNATE ONE..INDIC SIYAQ ALTERNATE LAKH MARK
+ 1ED01..1ED2D  ; Grapheme_Base # No  [45] OTTOMAN SIYAQ NUMBER ONE..OTTOMAN SIYAQ NUMBER NINETY THOUSAND
+ 1ED2E         ; Grapheme_Base # So       OTTOMAN SIYAQ MARRATAN
+ 1ED2F..1ED3D  ; Grapheme_Base # No  [15] OTTOMAN SIYAQ ALTERNATE NUMBER TWO..OTTOMAN SIYAQ FRACTION ONE SIXTH
+ 1EE00..1EE03  ; Grapheme_Base # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; Grapheme_Base # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; Grapheme_Base # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; Grapheme_Base # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; Grapheme_Base # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; Grapheme_Base # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; Grapheme_Base # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; Grapheme_Base # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; Grapheme_Base # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; Grapheme_Base # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; Grapheme_Base # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; Grapheme_Base # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; Grapheme_Base # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; Grapheme_Base # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; Grapheme_Base # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; Grapheme_Base # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; Grapheme_Base # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; Grapheme_Base # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1EEF0..1EEF1  ; Grapheme_Base # Sm   [2] ARABIC MATHEMATICAL OPERATOR MEEM WITH HAH WITH TATWEEL..ARABIC MATHEMATICAL OPERATOR HAH WITH DAL
+ 1F000..1F02B  ; Grapheme_Base # So  [44] MAHJONG TILE EAST WIND..MAHJONG TILE BACK
+ 1F030..1F093  ; Grapheme_Base # So [100] DOMINO TILE HORIZONTAL BACK..DOMINO TILE VERTICAL-06-06
+ 1F0A0..1F0AE  ; Grapheme_Base # So  [15] PLAYING CARD BACK..PLAYING CARD KING OF SPADES
+ 1F0B1..1F0BF  ; Grapheme_Base # So  [15] PLAYING CARD ACE OF HEARTS..PLAYING CARD RED JOKER
+ 1F0C1..1F0CF  ; Grapheme_Base # So  [15] PLAYING CARD ACE OF DIAMONDS..PLAYING CARD BLACK JOKER
+ 1F0D1..1F0F5  ; Grapheme_Base # So  [37] PLAYING CARD ACE OF CLUBS..PLAYING CARD TRUMP-21
+ 1F100..1F10C  ; Grapheme_Base # No  [13] DIGIT ZERO FULL STOP..DINGBAT NEGATIVE CIRCLED SANS-SERIF DIGIT ZERO
+ 1F10D..1F1AD  ; Grapheme_Base # So [161] CIRCLED ZERO WITH SLASH..MASK WORK SYMBOL
+ 1F1E6..1F202  ; Grapheme_Base # So  [29] REGIONAL INDICATOR SYMBOL LETTER A..SQUARED KATAKANA SA
+ 1F210..1F23B  ; Grapheme_Base # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+ 1F240..1F248  ; Grapheme_Base # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 1F250..1F251  ; Grapheme_Base # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+ 1F260..1F265  ; Grapheme_Base # So   [6] ROUNDED SYMBOL FOR FU..ROUNDED SYMBOL FOR CAI
+ 1F300..1F3FA  ; Grapheme_Base # So [251] CYCLONE..AMPHORA
+ 1F3FB..1F3FF  ; Grapheme_Base # Sk   [5] EMOJI MODIFIER FITZPATRICK TYPE-1-2..EMOJI MODIFIER FITZPATRICK TYPE-6
+ 1F400..1F6D7  ; Grapheme_Base # So [728] RAT..ELEVATOR
+ 1F6DC..1F6EC  ; Grapheme_Base # So  [17] WIRELESS..AIRPLANE ARRIVING
+ 1F6F0..1F6FC  ; Grapheme_Base # So  [13] SATELLITE..ROLLER SKATE
+ 1F700..1F776  ; Grapheme_Base # So [119] ALCHEMICAL SYMBOL FOR QUINTESSENCE..LUNAR ECLIPSE
+ 1F77B..1F7D9  ; Grapheme_Base # So  [95] HAUMEA..NINE POINTED WHITE STAR
+ 1F7E0..1F7EB  ; Grapheme_Base # So  [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
+ 1F7F0         ; Grapheme_Base # So       HEAVY EQUALS SIGN
+ 1F800..1F80B  ; Grapheme_Base # So  [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
+ 1F810..1F847  ; Grapheme_Base # So  [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
+ 1F850..1F859  ; Grapheme_Base # So  [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
+ 1F860..1F887  ; Grapheme_Base # So  [40] WIDE-HEADED LEFTWARDS LIGHT BARB ARROW..WIDE-HEADED SOUTH WEST VERY HEAVY BARB ARROW
+ 1F890..1F8AD  ; Grapheme_Base # So  [30] LEFTWARDS TRIANGLE ARROWHEAD..WHITE ARROW SHAFT WIDTH TWO THIRDS
+ 1F8B0..1F8B1  ; Grapheme_Base # So   [2] ARROW POINTING UPWARDS THEN NORTH WEST..ARROW POINTING RIGHTWARDS THEN CURVING SOUTH WEST
+ 1F900..1FA53  ; Grapheme_Base # So [340] CIRCLED CROSS FORMEE WITH FOUR DOTS..BLACK CHESS KNIGHT-BISHOP
+ 1FA60..1FA6D  ; Grapheme_Base # So  [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
+ 1FA70..1FA7C  ; Grapheme_Base # So  [13] BALLET SHOES..CRUTCH
+ 1FA80..1FA88  ; Grapheme_Base # So   [9] YO-YO..FLUTE
+ 1FA90..1FABD  ; Grapheme_Base # So  [46] RINGED PLANET..WING
+ 1FABF..1FAC5  ; Grapheme_Base # So   [7] GOOSE..PERSON WITH CROWN
+ 1FACE..1FADB  ; Grapheme_Base # So  [14] MOOSE..PEA POD
+ 1FAE0..1FAE8  ; Grapheme_Base # So   [9] MELTING FACE..SHAKING FACE
+ 1FAF0..1FAF8  ; Grapheme_Base # So   [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
+ 1FB00..1FB92  ; Grapheme_Base # So [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
+ 1FB94..1FBCA  ; Grapheme_Base # So  [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
+ 1FBF0..1FBF9  ; Grapheme_Base # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+ 20000..2A6DF  ; Grapheme_Base # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
+ 2A700..2B739  ; Grapheme_Base # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
+ 2B740..2B81D  ; Grapheme_Base # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
+ 2B820..2CEA1  ; Grapheme_Base # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
+ 2CEB0..2EBE0  ; Grapheme_Base # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
+ 2F800..2FA1D  ; Grapheme_Base # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 30000..3134A  ; Grapheme_Base # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; Grapheme_Base # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
+ 
+ # Total code points: 146986
+ 
+ # ================================================
+ 
+ # Derived Property: Grapheme_Link (deprecated)
+ #  Generated from: Canonical_Combining_Class=Virama
+ #  Use Canonical_Combining_Class=Virama directly instead
+ 
+ 094D          ; Grapheme_Link # Mn       DEVANAGARI SIGN VIRAMA
+ 09CD          ; Grapheme_Link # Mn       BENGALI SIGN VIRAMA
+ 0A4D          ; Grapheme_Link # Mn       GURMUKHI SIGN VIRAMA
+ 0ACD          ; Grapheme_Link # Mn       GUJARATI SIGN VIRAMA
+ 0B4D          ; Grapheme_Link # Mn       ORIYA SIGN VIRAMA
+ 0BCD          ; Grapheme_Link # Mn       TAMIL SIGN VIRAMA
+ 0C4D          ; Grapheme_Link # Mn       TELUGU SIGN VIRAMA
+ 0CCD          ; Grapheme_Link # Mn       KANNADA SIGN VIRAMA
+ 0D3B..0D3C    ; Grapheme_Link # Mn   [2] MALAYALAM SIGN VERTICAL BAR VIRAMA..MALAYALAM SIGN CIRCULAR VIRAMA
+ 0D4D          ; Grapheme_Link # Mn       MALAYALAM SIGN VIRAMA
+ 0DCA          ; Grapheme_Link # Mn       SINHALA SIGN AL-LAKUNA
+ 0E3A          ; Grapheme_Link # Mn       THAI CHARACTER PHINTHU
+ 0EBA          ; Grapheme_Link # Mn       LAO SIGN PALI VIRAMA
+ 0F84          ; Grapheme_Link # Mn       TIBETAN MARK HALANTA
+ 1039..103A    ; Grapheme_Link # Mn   [2] MYANMAR SIGN VIRAMA..MYANMAR SIGN ASAT
+ 1714          ; Grapheme_Link # Mn       TAGALOG SIGN VIRAMA
+ 1715          ; Grapheme_Link # Mc       TAGALOG SIGN PAMUDPOD
+ 1734          ; Grapheme_Link # Mc       HANUNOO SIGN PAMUDPOD
+ 17D2          ; Grapheme_Link # Mn       KHMER SIGN COENG
+ 1A60          ; Grapheme_Link # Mn       TAI THAM SIGN SAKOT
+ 1B44          ; Grapheme_Link # Mc       BALINESE ADEG ADEG
+ 1BAA          ; Grapheme_Link # Mc       SUNDANESE SIGN PAMAAEH
+ 1BAB          ; Grapheme_Link # Mn       SUNDANESE SIGN VIRAMA
+ 1BF2..1BF3    ; Grapheme_Link # Mc   [2] BATAK PANGOLAT..BATAK PANONGONAN
+ 2D7F          ; Grapheme_Link # Mn       TIFINAGH CONSONANT JOINER
+ A806          ; Grapheme_Link # Mn       SYLOTI NAGRI SIGN HASANTA
+ A82C          ; Grapheme_Link # Mn       SYLOTI NAGRI SIGN ALTERNATE HASANTA
+ A8C4          ; Grapheme_Link # Mn       SAURASHTRA SIGN VIRAMA
+ A953          ; Grapheme_Link # Mc       REJANG VIRAMA
+ A9C0          ; Grapheme_Link # Mc       JAVANESE PANGKON
+ AAF6          ; Grapheme_Link # Mn       MEETEI MAYEK VIRAMA
+ ABED          ; Grapheme_Link # Mn       MEETEI MAYEK APUN IYEK
+ 10A3F         ; Grapheme_Link # Mn       KHAROSHTHI VIRAMA
+ 11046         ; Grapheme_Link # Mn       BRAHMI VIRAMA
+ 11070         ; Grapheme_Link # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
+ 1107F         ; Grapheme_Link # Mn       BRAHMI NUMBER JOINER
+ 110B9         ; Grapheme_Link # Mn       KAITHI SIGN VIRAMA
+ 11133..11134  ; Grapheme_Link # Mn   [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
+ 111C0         ; Grapheme_Link # Mc       SHARADA SIGN VIRAMA
+ 11235         ; Grapheme_Link # Mc       KHOJKI SIGN VIRAMA
+ 112EA         ; Grapheme_Link # Mn       KHUDAWADI SIGN VIRAMA
+ 1134D         ; Grapheme_Link # Mc       GRANTHA SIGN VIRAMA
+ 11442         ; Grapheme_Link # Mn       NEWA SIGN VIRAMA
+ 114C2         ; Grapheme_Link # Mn       TIRHUTA SIGN VIRAMA
+ 115BF         ; Grapheme_Link # Mn       SIDDHAM SIGN VIRAMA
+ 1163F         ; Grapheme_Link # Mn       MODI SIGN VIRAMA
+ 116B6         ; Grapheme_Link # Mc       TAKRI SIGN VIRAMA
+ 1172B         ; Grapheme_Link # Mn       AHOM SIGN KILLER
+ 11839         ; Grapheme_Link # Mn       DOGRA SIGN VIRAMA
+ 1193D         ; Grapheme_Link # Mc       DIVES AKURU SIGN HALANTA
+ 1193E         ; Grapheme_Link # Mn       DIVES AKURU VIRAMA
+ 119E0         ; Grapheme_Link # Mn       NANDINAGARI SIGN VIRAMA
+ 11A34         ; Grapheme_Link # Mn       ZANABAZAR SQUARE SIGN VIRAMA
+ 11A47         ; Grapheme_Link # Mn       ZANABAZAR SQUARE SUBJOINER
+ 11A99         ; Grapheme_Link # Mn       SOYOMBO SUBJOINER
+ 11C3F         ; Grapheme_Link # Mn       BHAIKSUKI SIGN VIRAMA
+ 11D44..11D45  ; Grapheme_Link # Mn   [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
+ 11D97         ; Grapheme_Link # Mn       GUNJALA GONDI VIRAMA
+ 11F41         ; Grapheme_Link # Mc       KAWI SIGN KILLER
+ 11F42         ; Grapheme_Link # Mn       KAWI CONJOINER
+ 
+ # Total code points: 65
+ 
+ # EOF
diff -Nrcpad gcc-12.2.0/contrib/unicode/DerivedNormalizationProps.txt gcc-13.1.0/contrib/unicode/DerivedNormalizationProps.txt
*** gcc-12.2.0/contrib/unicode/DerivedNormalizationProps.txt	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/contrib/unicode/DerivedNormalizationProps.txt	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,10018 ----
+ # DerivedNormalizationProps-15.0.0.txt
+ # Date: 2022-04-02, 01:29:03 GMT
+ # © 2022 Unicode®, Inc.
+ # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
+ # For terms of use, see https://www.unicode.org/terms_of_use.html
+ #
+ # Unicode Character Database
+ #   For documentation, see https://www.unicode.org/reports/tr44/
+ 
+ # ================================================
+ 
+ # Derived Property: FC_NFKC_Closure  (DEPRECATED as of Unicode 6.0.0)
+ #  Generated from computing: b = NFKC(Fold(a)); c = NFKC(Fold(b));
+ #  Then if (c != b) add the mapping from a to c to the set of
+ #  mappings that constitute the FC_NFKC_Closure list
+ #  Uses the full case folding from CaseFolding.txt, without the T option.
+ 
+ 037A  ; FC_NFKC; 0020 03B9      # Lm  GREEK YPOGEGRAMMENI
+ 03D2  ; FC_NFKC; 03C5           # L&  GREEK UPSILON WITH HOOK SYMBOL
+ 03D3  ; FC_NFKC; 03CD           # L&  GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+ 03D4  ; FC_NFKC; 03CB           # L&  GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ 03F2  ; FC_NFKC; 03C3           # L&  GREEK LUNATE SIGMA SYMBOL
+ 03F9  ; FC_NFKC; 03C3           # L&  GREEK CAPITAL LUNATE SIGMA SYMBOL
+ 1D2C  ; FC_NFKC; 0061           # Lm  MODIFIER LETTER CAPITAL A
+ 1D2D  ; FC_NFKC; 00E6           # Lm  MODIFIER LETTER CAPITAL AE
+ 1D2E  ; FC_NFKC; 0062           # Lm  MODIFIER LETTER CAPITAL B
+ 1D30  ; FC_NFKC; 0064           # Lm  MODIFIER LETTER CAPITAL D
+ 1D31  ; FC_NFKC; 0065           # Lm  MODIFIER LETTER CAPITAL E
+ 1D32  ; FC_NFKC; 01DD           # Lm  MODIFIER LETTER CAPITAL REVERSED E
+ 1D33  ; FC_NFKC; 0067           # Lm  MODIFIER LETTER CAPITAL G
+ 1D34  ; FC_NFKC; 0068           # Lm  MODIFIER LETTER CAPITAL H
+ 1D35  ; FC_NFKC; 0069           # Lm  MODIFIER LETTER CAPITAL I
+ 1D36  ; FC_NFKC; 006A           # Lm  MODIFIER LETTER CAPITAL J
+ 1D37  ; FC_NFKC; 006B           # Lm  MODIFIER LETTER CAPITAL K
+ 1D38  ; FC_NFKC; 006C           # Lm  MODIFIER LETTER CAPITAL L
+ 1D39  ; FC_NFKC; 006D           # Lm  MODIFIER LETTER CAPITAL M
+ 1D3A  ; FC_NFKC; 006E           # Lm  MODIFIER LETTER CAPITAL N
+ 1D3C  ; FC_NFKC; 006F           # Lm  MODIFIER LETTER CAPITAL O
+ 1D3D  ; FC_NFKC; 0223           # Lm  MODIFIER LETTER CAPITAL OU
+ 1D3E  ; FC_NFKC; 0070           # Lm  MODIFIER LETTER CAPITAL P
+ 1D3F  ; FC_NFKC; 0072           # Lm  MODIFIER LETTER CAPITAL R
+ 1D40  ; FC_NFKC; 0074           # Lm  MODIFIER LETTER CAPITAL T
+ 1D41  ; FC_NFKC; 0075           # Lm  MODIFIER LETTER CAPITAL U
+ 1D42  ; FC_NFKC; 0077           # Lm  MODIFIER LETTER CAPITAL W
+ 20A8  ; FC_NFKC; 0072 0073      # Sc  RUPEE SIGN
+ 2102  ; FC_NFKC; 0063           # L&  DOUBLE-STRUCK CAPITAL C
+ 2103  ; FC_NFKC; 00B0 0063      # So  DEGREE CELSIUS
+ 2107  ; FC_NFKC; 025B           # L&  EULER CONSTANT
+ 2109  ; FC_NFKC; 00B0 0066      # So  DEGREE FAHRENHEIT
+ 210B  ; FC_NFKC; 0068           # L&  SCRIPT CAPITAL H
+ 210C  ; FC_NFKC; 0068           # L&  BLACK-LETTER CAPITAL H
+ 210D  ; FC_NFKC; 0068           # L&  DOUBLE-STRUCK CAPITAL H
+ 2110  ; FC_NFKC; 0069           # L&  SCRIPT CAPITAL I
+ 2111  ; FC_NFKC; 0069           # L&  BLACK-LETTER CAPITAL I
+ 2112  ; FC_NFKC; 006C           # L&  SCRIPT CAPITAL L
+ 2115  ; FC_NFKC; 006E           # L&  DOUBLE-STRUCK CAPITAL N
+ 2116  ; FC_NFKC; 006E 006F      # So  NUMERO SIGN
+ 2119  ; FC_NFKC; 0070           # L&  DOUBLE-STRUCK CAPITAL P
+ 211A  ; FC_NFKC; 0071           # L&  DOUBLE-STRUCK CAPITAL Q
+ 211B  ; FC_NFKC; 0072           # L&  SCRIPT CAPITAL R
+ 211C  ; FC_NFKC; 0072           # L&  BLACK-LETTER CAPITAL R
+ 211D  ; FC_NFKC; 0072           # L&  DOUBLE-STRUCK CAPITAL R
+ 2120  ; FC_NFKC; 0073 006D      # So  SERVICE MARK
+ 2121  ; FC_NFKC; 0074 0065 006C # So  TELEPHONE SIGN
+ 2122  ; FC_NFKC; 0074 006D      # So  TRADE MARK SIGN
+ 2124  ; FC_NFKC; 007A           # L&  DOUBLE-STRUCK CAPITAL Z
+ 2128  ; FC_NFKC; 007A           # L&  BLACK-LETTER CAPITAL Z
+ 212C  ; FC_NFKC; 0062           # L&  SCRIPT CAPITAL B
+ 212D  ; FC_NFKC; 0063           # L&  BLACK-LETTER CAPITAL C
+ 2130  ; FC_NFKC; 0065           # L&  SCRIPT CAPITAL E
+ 2131  ; FC_NFKC; 0066           # L&  SCRIPT CAPITAL F
+ 2133  ; FC_NFKC; 006D           # L&  SCRIPT CAPITAL M
+ 213B  ; FC_NFKC; 0066 0061 0078 # So  FACSIMILE SIGN
+ 213E  ; FC_NFKC; 03B3           # L&  DOUBLE-STRUCK CAPITAL GAMMA
+ 213F  ; FC_NFKC; 03C0           # L&  DOUBLE-STRUCK CAPITAL PI
+ 2145  ; FC_NFKC; 0064           # L&  DOUBLE-STRUCK ITALIC CAPITAL D
+ 2C7D  ; FC_NFKC; 0076           # Lm  MODIFIER LETTER CAPITAL V
+ 3250  ; FC_NFKC; 0070 0074 0065 # So  PARTNERSHIP SIGN
+ 32CC  ; FC_NFKC; 0068 0067      # So  SQUARE HG
+ 32CE  ; FC_NFKC; 0065 0076      # So  SQUARE EV
+ 32CF  ; FC_NFKC; 006C 0074 0064 # So  LIMITED LIABILITY SIGN
+ 3371  ; FC_NFKC; 0068 0070 0061 # So  SQUARE HPA
+ 3373  ; FC_NFKC; 0061 0075      # So  SQUARE AU
+ 3375  ; FC_NFKC; 006F 0076      # So  SQUARE OV
+ 337A  ; FC_NFKC; 0069 0075      # So  SQUARE IU
+ 3380  ; FC_NFKC; 0070 0061      # So  SQUARE PA AMPS
+ 3381  ; FC_NFKC; 006E 0061      # So  SQUARE NA
+ 3382  ; FC_NFKC; 03BC 0061      # So  SQUARE MU A
+ 3383  ; FC_NFKC; 006D 0061      # So  SQUARE MA
+ 3384  ; FC_NFKC; 006B 0061      # So  SQUARE KA
+ 3385  ; FC_NFKC; 006B 0062      # So  SQUARE KB
+ 3386  ; FC_NFKC; 006D 0062      # So  SQUARE MB
+ 3387  ; FC_NFKC; 0067 0062      # So  SQUARE GB
+ 338A  ; FC_NFKC; 0070 0066      # So  SQUARE PF
+ 338B  ; FC_NFKC; 006E 0066      # So  SQUARE NF
+ 338C  ; FC_NFKC; 03BC 0066      # So  SQUARE MU F
+ 3390  ; FC_NFKC; 0068 007A      # So  SQUARE HZ
+ 3391  ; FC_NFKC; 006B 0068 007A # So  SQUARE KHZ
+ 3392  ; FC_NFKC; 006D 0068 007A # So  SQUARE MHZ
+ 3393  ; FC_NFKC; 0067 0068 007A # So  SQUARE GHZ
+ 3394  ; FC_NFKC; 0074 0068 007A # So  SQUARE THZ
+ 33A9  ; FC_NFKC; 0070 0061      # So  SQUARE PA
+ 33AA  ; FC_NFKC; 006B 0070 0061 # So  SQUARE KPA
+ 33AB  ; FC_NFKC; 006D 0070 0061 # So  SQUARE MPA
+ 33AC  ; FC_NFKC; 0067 0070 0061 # So  SQUARE GPA
+ 33B4  ; FC_NFKC; 0070 0076      # So  SQUARE PV
+ 33B5  ; FC_NFKC; 006E 0076      # So  SQUARE NV
+ 33B6  ; FC_NFKC; 03BC 0076      # So  SQUARE MU V
+ 33B7  ; FC_NFKC; 006D 0076      # So  SQUARE MV
+ 33B8  ; FC_NFKC; 006B 0076      # So  SQUARE KV
+ 33B9  ; FC_NFKC; 006D 0076      # So  SQUARE MV MEGA
+ 33BA  ; FC_NFKC; 0070 0077      # So  SQUARE PW
+ 33BB  ; FC_NFKC; 006E 0077      # So  SQUARE NW
+ 33BC  ; FC_NFKC; 03BC 0077      # So  SQUARE MU W
+ 33BD  ; FC_NFKC; 006D 0077      # So  SQUARE MW
+ 33BE  ; FC_NFKC; 006B 0077      # So  SQUARE KW
+ 33BF  ; FC_NFKC; 006D 0077      # So  SQUARE MW MEGA
+ 33C0  ; FC_NFKC; 006B 03C9      # So  SQUARE K OHM
+ 33C1  ; FC_NFKC; 006D 03C9      # So  SQUARE M OHM
+ 33C3  ; FC_NFKC; 0062 0071      # So  SQUARE BQ
+ 33C6  ; FC_NFKC; 0063 2215 006B 0067 #So SQUARE C OVER KG
+ 33C7  ; FC_NFKC; 0063 006F 002E # So  SQUARE CO
+ 33C8  ; FC_NFKC; 0064 0062      # So  SQUARE DB
+ 33C9  ; FC_NFKC; 0067 0079      # So  SQUARE GY
+ 33CB  ; FC_NFKC; 0068 0070      # So  SQUARE HP
+ 33CD  ; FC_NFKC; 006B 006B      # So  SQUARE KK
+ 33CE  ; FC_NFKC; 006B 006D      # So  SQUARE KM CAPITAL
+ 33D7  ; FC_NFKC; 0070 0068      # So  SQUARE PH
+ 33D9  ; FC_NFKC; 0070 0070 006D # So  SQUARE PPM
+ 33DA  ; FC_NFKC; 0070 0072      # So  SQUARE PR
+ 33DC  ; FC_NFKC; 0073 0076      # So  SQUARE SV
+ 33DD  ; FC_NFKC; 0077 0062      # So  SQUARE WB
+ 33DE  ; FC_NFKC; 0076 2215 006D # So  SQUARE V OVER M
+ 33DF  ; FC_NFKC; 0061 2215 006D # So  SQUARE A OVER M
+ A7F2  ; FC_NFKC; 0063           # Lm  MODIFIER LETTER CAPITAL C
+ A7F3  ; FC_NFKC; 0066           # Lm  MODIFIER LETTER CAPITAL F
+ A7F4  ; FC_NFKC; 0071           # Lm  MODIFIER LETTER CAPITAL Q
+ A7F8  ; FC_NFKC; 0127           # Lm  MODIFIER LETTER CAPITAL H WITH STROKE
+ 1D400 ; FC_NFKC; 0061           # L&  MATHEMATICAL BOLD CAPITAL A
+ 1D401 ; FC_NFKC; 0062           # L&  MATHEMATICAL BOLD CAPITAL B
+ 1D402 ; FC_NFKC; 0063           # L&  MATHEMATICAL BOLD CAPITAL C
+ 1D403 ; FC_NFKC; 0064           # L&  MATHEMATICAL BOLD CAPITAL D
+ 1D404 ; FC_NFKC; 0065           # L&  MATHEMATICAL BOLD CAPITAL E
+ 1D405 ; FC_NFKC; 0066           # L&  MATHEMATICAL BOLD CAPITAL F
+ 1D406 ; FC_NFKC; 0067           # L&  MATHEMATICAL BOLD CAPITAL G
+ 1D407 ; FC_NFKC; 0068           # L&  MATHEMATICAL BOLD CAPITAL H
+ 1D408 ; FC_NFKC; 0069           # L&  MATHEMATICAL BOLD CAPITAL I
+ 1D409 ; FC_NFKC; 006A           # L&  MATHEMATICAL BOLD CAPITAL J
+ 1D40A ; FC_NFKC; 006B           # L&  MATHEMATICAL BOLD CAPITAL K
+ 1D40B ; FC_NFKC; 006C           # L&  MATHEMATICAL BOLD CAPITAL L
+ 1D40C ; FC_NFKC; 006D           # L&  MATHEMATICAL BOLD CAPITAL M
+ 1D40D ; FC_NFKC; 006E           # L&  MATHEMATICAL BOLD CAPITAL N
+ 1D40E ; FC_NFKC; 006F           # L&  MATHEMATICAL BOLD CAPITAL O
+ 1D40F ; FC_NFKC; 0070           # L&  MATHEMATICAL BOLD CAPITAL P
+ 1D410 ; FC_NFKC; 0071           # L&  MATHEMATICAL BOLD CAPITAL Q
+ 1D411 ; FC_NFKC; 0072           # L&  MATHEMATICAL BOLD CAPITAL R
+ 1D412 ; FC_NFKC; 0073           # L&  MATHEMATICAL BOLD CAPITAL S
+ 1D413 ; FC_NFKC; 0074           # L&  MATHEMATICAL BOLD CAPITAL T
+ 1D414 ; FC_NFKC; 0075           # L&  MATHEMATICAL BOLD CAPITAL U
+ 1D415 ; FC_NFKC; 0076           # L&  MATHEMATICAL BOLD CAPITAL V
+ 1D416 ; FC_NFKC; 0077           # L&  MATHEMATICAL BOLD CAPITAL W
+ 1D417 ; FC_NFKC; 0078           # L&  MATHEMATICAL BOLD CAPITAL X
+ 1D418 ; FC_NFKC; 0079           # L&  MATHEMATICAL BOLD CAPITAL Y
+ 1D419 ; FC_NFKC; 007A           # L&  MATHEMATICAL BOLD CAPITAL Z
+ 1D434 ; FC_NFKC; 0061           # L&  MATHEMATICAL ITALIC CAPITAL A
+ 1D435 ; FC_NFKC; 0062           # L&  MATHEMATICAL ITALIC CAPITAL B
+ 1D436 ; FC_NFKC; 0063           # L&  MATHEMATICAL ITALIC CAPITAL C
+ 1D437 ; FC_NFKC; 0064           # L&  MATHEMATICAL ITALIC CAPITAL D
+ 1D438 ; FC_NFKC; 0065           # L&  MATHEMATICAL ITALIC CAPITAL E
+ 1D439 ; FC_NFKC; 0066           # L&  MATHEMATICAL ITALIC CAPITAL F
+ 1D43A ; FC_NFKC; 0067           # L&  MATHEMATICAL ITALIC CAPITAL G
+ 1D43B ; FC_NFKC; 0068           # L&  MATHEMATICAL ITALIC CAPITAL H
+ 1D43C ; FC_NFKC; 0069           # L&  MATHEMATICAL ITALIC CAPITAL I
+ 1D43D ; FC_NFKC; 006A           # L&  MATHEMATICAL ITALIC CAPITAL J
+ 1D43E ; FC_NFKC; 006B           # L&  MATHEMATICAL ITALIC CAPITAL K
+ 1D43F ; FC_NFKC; 006C           # L&  MATHEMATICAL ITALIC CAPITAL L
+ 1D440 ; FC_NFKC; 006D           # L&  MATHEMATICAL ITALIC CAPITAL M
+ 1D441 ; FC_NFKC; 006E           # L&  MATHEMATICAL ITALIC CAPITAL N
+ 1D442 ; FC_NFKC; 006F           # L&  MATHEMATICAL ITALIC CAPITAL O
+ 1D443 ; FC_NFKC; 0070           # L&  MATHEMATICAL ITALIC CAPITAL P
+ 1D444 ; FC_NFKC; 0071           # L&  MATHEMATICAL ITALIC CAPITAL Q
+ 1D445 ; FC_NFKC; 0072           # L&  MATHEMATICAL ITALIC CAPITAL R
+ 1D446 ; FC_NFKC; 0073           # L&  MATHEMATICAL ITALIC CAPITAL S
+ 1D447 ; FC_NFKC; 0074           # L&  MATHEMATICAL ITALIC CAPITAL T
+ 1D448 ; FC_NFKC; 0075           # L&  MATHEMATICAL ITALIC CAPITAL U
+ 1D449 ; FC_NFKC; 0076           # L&  MATHEMATICAL ITALIC CAPITAL V
+ 1D44A ; FC_NFKC; 0077           # L&  MATHEMATICAL ITALIC CAPITAL W
+ 1D44B ; FC_NFKC; 0078           # L&  MATHEMATICAL ITALIC CAPITAL X
+ 1D44C ; FC_NFKC; 0079           # L&  MATHEMATICAL ITALIC CAPITAL Y
+ 1D44D ; FC_NFKC; 007A           # L&  MATHEMATICAL ITALIC CAPITAL Z
+ 1D468 ; FC_NFKC; 0061           # L&  MATHEMATICAL BOLD ITALIC CAPITAL A
+ 1D469 ; FC_NFKC; 0062           # L&  MATHEMATICAL BOLD ITALIC CAPITAL B
+ 1D46A ; FC_NFKC; 0063           # L&  MATHEMATICAL BOLD ITALIC CAPITAL C
+ 1D46B ; FC_NFKC; 0064           # L&  MATHEMATICAL BOLD ITALIC CAPITAL D
+ 1D46C ; FC_NFKC; 0065           # L&  MATHEMATICAL BOLD ITALIC CAPITAL E
+ 1D46D ; FC_NFKC; 0066           # L&  MATHEMATICAL BOLD ITALIC CAPITAL F
+ 1D46E ; FC_NFKC; 0067           # L&  MATHEMATICAL BOLD ITALIC CAPITAL G
+ 1D46F ; FC_NFKC; 0068           # L&  MATHEMATICAL BOLD ITALIC CAPITAL H
+ 1D470 ; FC_NFKC; 0069           # L&  MATHEMATICAL BOLD ITALIC CAPITAL I
+ 1D471 ; FC_NFKC; 006A           # L&  MATHEMATICAL BOLD ITALIC CAPITAL J
+ 1D472 ; FC_NFKC; 006B           # L&  MATHEMATICAL BOLD ITALIC CAPITAL K
+ 1D473 ; FC_NFKC; 006C           # L&  MATHEMATICAL BOLD ITALIC CAPITAL L
+ 1D474 ; FC_NFKC; 006D           # L&  MATHEMATICAL BOLD ITALIC CAPITAL M
+ 1D475 ; FC_NFKC; 006E           # L&  MATHEMATICAL BOLD ITALIC CAPITAL N
+ 1D476 ; FC_NFKC; 006F           # L&  MATHEMATICAL BOLD ITALIC CAPITAL O
+ 1D477 ; FC_NFKC; 0070           # L&  MATHEMATICAL BOLD ITALIC CAPITAL P
+ 1D478 ; FC_NFKC; 0071           # L&  MATHEMATICAL BOLD ITALIC CAPITAL Q
+ 1D479 ; FC_NFKC; 0072           # L&  MATHEMATICAL BOLD ITALIC CAPITAL R
+ 1D47A ; FC_NFKC; 0073           # L&  MATHEMATICAL BOLD ITALIC CAPITAL S
+ 1D47B ; FC_NFKC; 0074           # L&  MATHEMATICAL BOLD ITALIC CAPITAL T
+ 1D47C ; FC_NFKC; 0075           # L&  MATHEMATICAL BOLD ITALIC CAPITAL U
+ 1D47D ; FC_NFKC; 0076           # L&  MATHEMATICAL BOLD ITALIC CAPITAL V
+ 1D47E ; FC_NFKC; 0077           # L&  MATHEMATICAL BOLD ITALIC CAPITAL W
+ 1D47F ; FC_NFKC; 0078           # L&  MATHEMATICAL BOLD ITALIC CAPITAL X
+ 1D480 ; FC_NFKC; 0079           # L&  MATHEMATICAL BOLD ITALIC CAPITAL Y
+ 1D481 ; FC_NFKC; 007A           # L&  MATHEMATICAL BOLD ITALIC CAPITAL Z
+ 1D49C ; FC_NFKC; 0061           # L&  MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E ; FC_NFKC; 0063           # L&  MATHEMATICAL SCRIPT CAPITAL C
+ 1D49F ; FC_NFKC; 0064           # L&  MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2 ; FC_NFKC; 0067           # L&  MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5 ; FC_NFKC; 006A           # L&  MATHEMATICAL SCRIPT CAPITAL J
+ 1D4A6 ; FC_NFKC; 006B           # L&  MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9 ; FC_NFKC; 006E           # L&  MATHEMATICAL SCRIPT CAPITAL N
+ 1D4AA ; FC_NFKC; 006F           # L&  MATHEMATICAL SCRIPT CAPITAL O
+ 1D4AB ; FC_NFKC; 0070           # L&  MATHEMATICAL SCRIPT CAPITAL P
+ 1D4AC ; FC_NFKC; 0071           # L&  MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE ; FC_NFKC; 0073           # L&  MATHEMATICAL SCRIPT CAPITAL S
+ 1D4AF ; FC_NFKC; 0074           # L&  MATHEMATICAL SCRIPT CAPITAL T
+ 1D4B0 ; FC_NFKC; 0075           # L&  MATHEMATICAL SCRIPT CAPITAL U
+ 1D4B1 ; FC_NFKC; 0076           # L&  MATHEMATICAL SCRIPT CAPITAL V
+ 1D4B2 ; FC_NFKC; 0077           # L&  MATHEMATICAL SCRIPT CAPITAL W
+ 1D4B3 ; FC_NFKC; 0078           # L&  MATHEMATICAL SCRIPT CAPITAL X
+ 1D4B4 ; FC_NFKC; 0079           # L&  MATHEMATICAL SCRIPT CAPITAL Y
+ 1D4B5 ; FC_NFKC; 007A           # L&  MATHEMATICAL SCRIPT CAPITAL Z
+ 1D4D0 ; FC_NFKC; 0061           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL A
+ 1D4D1 ; FC_NFKC; 0062           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL B
+ 1D4D2 ; FC_NFKC; 0063           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL C
+ 1D4D3 ; FC_NFKC; 0064           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL D
+ 1D4D4 ; FC_NFKC; 0065           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL E
+ 1D4D5 ; FC_NFKC; 0066           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL F
+ 1D4D6 ; FC_NFKC; 0067           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL G
+ 1D4D7 ; FC_NFKC; 0068           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL H
+ 1D4D8 ; FC_NFKC; 0069           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL I
+ 1D4D9 ; FC_NFKC; 006A           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL J
+ 1D4DA ; FC_NFKC; 006B           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL K
+ 1D4DB ; FC_NFKC; 006C           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL L
+ 1D4DC ; FC_NFKC; 006D           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL M
+ 1D4DD ; FC_NFKC; 006E           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL N
+ 1D4DE ; FC_NFKC; 006F           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL O
+ 1D4DF ; FC_NFKC; 0070           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL P
+ 1D4E0 ; FC_NFKC; 0071           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL Q
+ 1D4E1 ; FC_NFKC; 0072           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL R
+ 1D4E2 ; FC_NFKC; 0073           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL S
+ 1D4E3 ; FC_NFKC; 0074           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL T
+ 1D4E4 ; FC_NFKC; 0075           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL U
+ 1D4E5 ; FC_NFKC; 0076           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL V
+ 1D4E6 ; FC_NFKC; 0077           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL W
+ 1D4E7 ; FC_NFKC; 0078           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL X
+ 1D4E8 ; FC_NFKC; 0079           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL Y
+ 1D4E9 ; FC_NFKC; 007A           # L&  MATHEMATICAL BOLD SCRIPT CAPITAL Z
+ 1D504 ; FC_NFKC; 0061           # L&  MATHEMATICAL FRAKTUR CAPITAL A
+ 1D505 ; FC_NFKC; 0062           # L&  MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507 ; FC_NFKC; 0064           # L&  MATHEMATICAL FRAKTUR CAPITAL D
+ 1D508 ; FC_NFKC; 0065           # L&  MATHEMATICAL FRAKTUR CAPITAL E
+ 1D509 ; FC_NFKC; 0066           # L&  MATHEMATICAL FRAKTUR CAPITAL F
+ 1D50A ; FC_NFKC; 0067           # L&  MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D ; FC_NFKC; 006A           # L&  MATHEMATICAL FRAKTUR CAPITAL J
+ 1D50E ; FC_NFKC; 006B           # L&  MATHEMATICAL FRAKTUR CAPITAL K
+ 1D50F ; FC_NFKC; 006C           # L&  MATHEMATICAL FRAKTUR CAPITAL L
+ 1D510 ; FC_NFKC; 006D           # L&  MATHEMATICAL FRAKTUR CAPITAL M
+ 1D511 ; FC_NFKC; 006E           # L&  MATHEMATICAL FRAKTUR CAPITAL N
+ 1D512 ; FC_NFKC; 006F           # L&  MATHEMATICAL FRAKTUR CAPITAL O
+ 1D513 ; FC_NFKC; 0070           # L&  MATHEMATICAL FRAKTUR CAPITAL P
+ 1D514 ; FC_NFKC; 0071           # L&  MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516 ; FC_NFKC; 0073           # L&  MATHEMATICAL FRAKTUR CAPITAL S
+ 1D517 ; FC_NFKC; 0074           # L&  MATHEMATICAL FRAKTUR CAPITAL T
+ 1D518 ; FC_NFKC; 0075           # L&  MATHEMATICAL FRAKTUR CAPITAL U
+ 1D519 ; FC_NFKC; 0076           # L&  MATHEMATICAL FRAKTUR CAPITAL V
+ 1D51A ; FC_NFKC; 0077           # L&  MATHEMATICAL FRAKTUR CAPITAL W
+ 1D51B ; FC_NFKC; 0078           # L&  MATHEMATICAL FRAKTUR CAPITAL X
+ 1D51C ; FC_NFKC; 0079           # L&  MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D538 ; FC_NFKC; 0061           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+ 1D539 ; FC_NFKC; 0062           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B ; FC_NFKC; 0064           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+ 1D53C ; FC_NFKC; 0065           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+ 1D53D ; FC_NFKC; 0066           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+ 1D53E ; FC_NFKC; 0067           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540 ; FC_NFKC; 0069           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+ 1D541 ; FC_NFKC; 006A           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+ 1D542 ; FC_NFKC; 006B           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+ 1D543 ; FC_NFKC; 006C           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+ 1D544 ; FC_NFKC; 006D           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546 ; FC_NFKC; 006F           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A ; FC_NFKC; 0073           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+ 1D54B ; FC_NFKC; 0074           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+ 1D54C ; FC_NFKC; 0075           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+ 1D54D ; FC_NFKC; 0076           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+ 1D54E ; FC_NFKC; 0077           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+ 1D54F ; FC_NFKC; 0078           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+ 1D550 ; FC_NFKC; 0079           # L&  MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D56C ; FC_NFKC; 0061           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL A
+ 1D56D ; FC_NFKC; 0062           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL B
+ 1D56E ; FC_NFKC; 0063           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL C
+ 1D56F ; FC_NFKC; 0064           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL D
+ 1D570 ; FC_NFKC; 0065           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL E
+ 1D571 ; FC_NFKC; 0066           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL F
+ 1D572 ; FC_NFKC; 0067           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL G
+ 1D573 ; FC_NFKC; 0068           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL H
+ 1D574 ; FC_NFKC; 0069           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL I
+ 1D575 ; FC_NFKC; 006A           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL J
+ 1D576 ; FC_NFKC; 006B           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL K
+ 1D577 ; FC_NFKC; 006C           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL L
+ 1D578 ; FC_NFKC; 006D           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL M
+ 1D579 ; FC_NFKC; 006E           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL N
+ 1D57A ; FC_NFKC; 006F           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL O
+ 1D57B ; FC_NFKC; 0070           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL P
+ 1D57C ; FC_NFKC; 0071           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+ 1D57D ; FC_NFKC; 0072           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL R
+ 1D57E ; FC_NFKC; 0073           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL S
+ 1D57F ; FC_NFKC; 0074           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL T
+ 1D580 ; FC_NFKC; 0075           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL U
+ 1D581 ; FC_NFKC; 0076           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL V
+ 1D582 ; FC_NFKC; 0077           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL W
+ 1D583 ; FC_NFKC; 0078           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL X
+ 1D584 ; FC_NFKC; 0079           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+ 1D585 ; FC_NFKC; 007A           # L&  MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+ 1D5A0 ; FC_NFKC; 0061           # L&  MATHEMATICAL SANS-SERIF CAPITAL A
+ 1D5A1 ; FC_NFKC; 0062           # L&  MATHEMATICAL SANS-SERIF CAPITAL B
+ 1D5A2 ; FC_NFKC; 0063           # L&  MATHEMATICAL SANS-SERIF CAPITAL C
+ 1D5A3 ; FC_NFKC; 0064           # L&  MATHEMATICAL SANS-SERIF CAPITAL D
+ 1D5A4 ; FC_NFKC; 0065           # L&  MATHEMATICAL SANS-SERIF CAPITAL E
+ 1D5A5 ; FC_NFKC; 0066           # L&  MATHEMATICAL SANS-SERIF CAPITAL F
+ 1D5A6 ; FC_NFKC; 0067           # L&  MATHEMATICAL SANS-SERIF CAPITAL G
+ 1D5A7 ; FC_NFKC; 0068           # L&  MATHEMATICAL SANS-SERIF CAPITAL H
+ 1D5A8 ; FC_NFKC; 0069           # L&  MATHEMATICAL SANS-SERIF CAPITAL I
+ 1D5A9 ; FC_NFKC; 006A           # L&  MATHEMATICAL SANS-SERIF CAPITAL J
+ 1D5AA ; FC_NFKC; 006B           # L&  MATHEMATICAL SANS-SERIF CAPITAL K
+ 1D5AB ; FC_NFKC; 006C           # L&  MATHEMATICAL SANS-SERIF CAPITAL L
+ 1D5AC ; FC_NFKC; 006D           # L&  MATHEMATICAL SANS-SERIF CAPITAL M
+ 1D5AD ; FC_NFKC; 006E           # L&  MATHEMATICAL SANS-SERIF CAPITAL N
+ 1D5AE ; FC_NFKC; 006F           # L&  MATHEMATICAL SANS-SERIF CAPITAL O
+ 1D5AF ; FC_NFKC; 0070           # L&  MATHEMATICAL SANS-SERIF CAPITAL P
+ 1D5B0 ; FC_NFKC; 0071           # L&  MATHEMATICAL SANS-SERIF CAPITAL Q
+ 1D5B1 ; FC_NFKC; 0072           # L&  MATHEMATICAL SANS-SERIF CAPITAL R
+ 1D5B2 ; FC_NFKC; 0073           # L&  MATHEMATICAL SANS-SERIF CAPITAL S
+ 1D5B3 ; FC_NFKC; 0074           # L&  MATHEMATICAL SANS-SERIF CAPITAL T
+ 1D5B4 ; FC_NFKC; 0075           # L&  MATHEMATICAL SANS-SERIF CAPITAL U
+ 1D5B5 ; FC_NFKC; 0076           # L&  MATHEMATICAL SANS-SERIF CAPITAL V
+ 1D5B6 ; FC_NFKC; 0077           # L&  MATHEMATICAL SANS-SERIF CAPITAL W
+ 1D5B7 ; FC_NFKC; 0078           # L&  MATHEMATICAL SANS-SERIF CAPITAL X
+ 1D5B8 ; FC_NFKC; 0079           # L&  MATHEMATICAL SANS-SERIF CAPITAL Y
+ 1D5B9 ; FC_NFKC; 007A           # L&  MATHEMATICAL SANS-SERIF CAPITAL Z
+ 1D5D4 ; FC_NFKC; 0061           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+ 1D5D5 ; FC_NFKC; 0062           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+ 1D5D6 ; FC_NFKC; 0063           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+ 1D5D7 ; FC_NFKC; 0064           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+ 1D5D8 ; FC_NFKC; 0065           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+ 1D5D9 ; FC_NFKC; 0066           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+ 1D5DA ; FC_NFKC; 0067           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+ 1D5DB ; FC_NFKC; 0068           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+ 1D5DC ; FC_NFKC; 0069           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+ 1D5DD ; FC_NFKC; 006A           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+ 1D5DE ; FC_NFKC; 006B           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+ 1D5DF ; FC_NFKC; 006C           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+ 1D5E0 ; FC_NFKC; 006D           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+ 1D5E1 ; FC_NFKC; 006E           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+ 1D5E2 ; FC_NFKC; 006F           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+ 1D5E3 ; FC_NFKC; 0070           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+ 1D5E4 ; FC_NFKC; 0071           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+ 1D5E5 ; FC_NFKC; 0072           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+ 1D5E6 ; FC_NFKC; 0073           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+ 1D5E7 ; FC_NFKC; 0074           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+ 1D5E8 ; FC_NFKC; 0075           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+ 1D5E9 ; FC_NFKC; 0076           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+ 1D5EA ; FC_NFKC; 0077           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+ 1D5EB ; FC_NFKC; 0078           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+ 1D5EC ; FC_NFKC; 0079           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+ 1D5ED ; FC_NFKC; 007A           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+ 1D608 ; FC_NFKC; 0061           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+ 1D609 ; FC_NFKC; 0062           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+ 1D60A ; FC_NFKC; 0063           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+ 1D60B ; FC_NFKC; 0064           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+ 1D60C ; FC_NFKC; 0065           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+ 1D60D ; FC_NFKC; 0066           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+ 1D60E ; FC_NFKC; 0067           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+ 1D60F ; FC_NFKC; 0068           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+ 1D610 ; FC_NFKC; 0069           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+ 1D611 ; FC_NFKC; 006A           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+ 1D612 ; FC_NFKC; 006B           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+ 1D613 ; FC_NFKC; 006C           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+ 1D614 ; FC_NFKC; 006D           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+ 1D615 ; FC_NFKC; 006E           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+ 1D616 ; FC_NFKC; 006F           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+ 1D617 ; FC_NFKC; 0070           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+ 1D618 ; FC_NFKC; 0071           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+ 1D619 ; FC_NFKC; 0072           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+ 1D61A ; FC_NFKC; 0073           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+ 1D61B ; FC_NFKC; 0074           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+ 1D61C ; FC_NFKC; 0075           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+ 1D61D ; FC_NFKC; 0076           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+ 1D61E ; FC_NFKC; 0077           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+ 1D61F ; FC_NFKC; 0078           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+ 1D620 ; FC_NFKC; 0079           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+ 1D621 ; FC_NFKC; 007A           # L&  MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+ 1D63C ; FC_NFKC; 0061           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+ 1D63D ; FC_NFKC; 0062           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+ 1D63E ; FC_NFKC; 0063           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+ 1D63F ; FC_NFKC; 0064           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+ 1D640 ; FC_NFKC; 0065           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+ 1D641 ; FC_NFKC; 0066           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+ 1D642 ; FC_NFKC; 0067           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+ 1D643 ; FC_NFKC; 0068           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+ 1D644 ; FC_NFKC; 0069           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+ 1D645 ; FC_NFKC; 006A           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+ 1D646 ; FC_NFKC; 006B           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+ 1D647 ; FC_NFKC; 006C           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+ 1D648 ; FC_NFKC; 006D           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+ 1D649 ; FC_NFKC; 006E           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+ 1D64A ; FC_NFKC; 006F           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+ 1D64B ; FC_NFKC; 0070           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+ 1D64C ; FC_NFKC; 0071           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+ 1D64D ; FC_NFKC; 0072           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+ 1D64E ; FC_NFKC; 0073           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+ 1D64F ; FC_NFKC; 0074           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+ 1D650 ; FC_NFKC; 0075           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+ 1D651 ; FC_NFKC; 0076           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+ 1D652 ; FC_NFKC; 0077           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+ 1D653 ; FC_NFKC; 0078           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+ 1D654 ; FC_NFKC; 0079           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+ 1D655 ; FC_NFKC; 007A           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+ 1D670 ; FC_NFKC; 0061           # L&  MATHEMATICAL MONOSPACE CAPITAL A
+ 1D671 ; FC_NFKC; 0062           # L&  MATHEMATICAL MONOSPACE CAPITAL B
+ 1D672 ; FC_NFKC; 0063           # L&  MATHEMATICAL MONOSPACE CAPITAL C
+ 1D673 ; FC_NFKC; 0064           # L&  MATHEMATICAL MONOSPACE CAPITAL D
+ 1D674 ; FC_NFKC; 0065           # L&  MATHEMATICAL MONOSPACE CAPITAL E
+ 1D675 ; FC_NFKC; 0066           # L&  MATHEMATICAL MONOSPACE CAPITAL F
+ 1D676 ; FC_NFKC; 0067           # L&  MATHEMATICAL MONOSPACE CAPITAL G
+ 1D677 ; FC_NFKC; 0068           # L&  MATHEMATICAL MONOSPACE CAPITAL H
+ 1D678 ; FC_NFKC; 0069           # L&  MATHEMATICAL MONOSPACE CAPITAL I
+ 1D679 ; FC_NFKC; 006A           # L&  MATHEMATICAL MONOSPACE CAPITAL J
+ 1D67A ; FC_NFKC; 006B           # L&  MATHEMATICAL MONOSPACE CAPITAL K
+ 1D67B ; FC_NFKC; 006C           # L&  MATHEMATICAL MONOSPACE CAPITAL L
+ 1D67C ; FC_NFKC; 006D           # L&  MATHEMATICAL MONOSPACE CAPITAL M
+ 1D67D ; FC_NFKC; 006E           # L&  MATHEMATICAL MONOSPACE CAPITAL N
+ 1D67E ; FC_NFKC; 006F           # L&  MATHEMATICAL MONOSPACE CAPITAL O
+ 1D67F ; FC_NFKC; 0070           # L&  MATHEMATICAL MONOSPACE CAPITAL P
+ 1D680 ; FC_NFKC; 0071           # L&  MATHEMATICAL MONOSPACE CAPITAL Q
+ 1D681 ; FC_NFKC; 0072           # L&  MATHEMATICAL MONOSPACE CAPITAL R
+ 1D682 ; FC_NFKC; 0073           # L&  MATHEMATICAL MONOSPACE CAPITAL S
+ 1D683 ; FC_NFKC; 0074           # L&  MATHEMATICAL MONOSPACE CAPITAL T
+ 1D684 ; FC_NFKC; 0075           # L&  MATHEMATICAL MONOSPACE CAPITAL U
+ 1D685 ; FC_NFKC; 0076           # L&  MATHEMATICAL MONOSPACE CAPITAL V
+ 1D686 ; FC_NFKC; 0077           # L&  MATHEMATICAL MONOSPACE CAPITAL W
+ 1D687 ; FC_NFKC; 0078           # L&  MATHEMATICAL MONOSPACE CAPITAL X
+ 1D688 ; FC_NFKC; 0079           # L&  MATHEMATICAL MONOSPACE CAPITAL Y
+ 1D689 ; FC_NFKC; 007A           # L&  MATHEMATICAL MONOSPACE CAPITAL Z
+ 1D6A8 ; FC_NFKC; 03B1           # L&  MATHEMATICAL BOLD CAPITAL ALPHA
+ 1D6A9 ; FC_NFKC; 03B2           # L&  MATHEMATICAL BOLD CAPITAL BETA
+ 1D6AA ; FC_NFKC; 03B3           # L&  MATHEMATICAL BOLD CAPITAL GAMMA
+ 1D6AB ; FC_NFKC; 03B4           # L&  MATHEMATICAL BOLD CAPITAL DELTA
+ 1D6AC ; FC_NFKC; 03B5           # L&  MATHEMATICAL BOLD CAPITAL EPSILON
+ 1D6AD ; FC_NFKC; 03B6           # L&  MATHEMATICAL BOLD CAPITAL ZETA
+ 1D6AE ; FC_NFKC; 03B7           # L&  MATHEMATICAL BOLD CAPITAL ETA
+ 1D6AF ; FC_NFKC; 03B8           # L&  MATHEMATICAL BOLD CAPITAL THETA
+ 1D6B0 ; FC_NFKC; 03B9           # L&  MATHEMATICAL BOLD CAPITAL IOTA
+ 1D6B1 ; FC_NFKC; 03BA           # L&  MATHEMATICAL BOLD CAPITAL KAPPA
+ 1D6B2 ; FC_NFKC; 03BB           # L&  MATHEMATICAL BOLD CAPITAL LAMDA
+ 1D6B3 ; FC_NFKC; 03BC           # L&  MATHEMATICAL BOLD CAPITAL MU
+ 1D6B4 ; FC_NFKC; 03BD           # L&  MATHEMATICAL BOLD CAPITAL NU
+ 1D6B5 ; FC_NFKC; 03BE           # L&  MATHEMATICAL BOLD CAPITAL XI
+ 1D6B6 ; FC_NFKC; 03BF           # L&  MATHEMATICAL BOLD CAPITAL OMICRON
+ 1D6B7 ; FC_NFKC; 03C0           # L&  MATHEMATICAL BOLD CAPITAL PI
+ 1D6B8 ; FC_NFKC; 03C1           # L&  MATHEMATICAL BOLD CAPITAL RHO
+ 1D6B9 ; FC_NFKC; 03B8           # L&  MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+ 1D6BA ; FC_NFKC; 03C3           # L&  MATHEMATICAL BOLD CAPITAL SIGMA
+ 1D6BB ; FC_NFKC; 03C4           # L&  MATHEMATICAL BOLD CAPITAL TAU
+ 1D6BC ; FC_NFKC; 03C5           # L&  MATHEMATICAL BOLD CAPITAL UPSILON
+ 1D6BD ; FC_NFKC; 03C6           # L&  MATHEMATICAL BOLD CAPITAL PHI
+ 1D6BE ; FC_NFKC; 03C7           # L&  MATHEMATICAL BOLD CAPITAL CHI
+ 1D6BF ; FC_NFKC; 03C8           # L&  MATHEMATICAL BOLD CAPITAL PSI
+ 1D6C0 ; FC_NFKC; 03C9           # L&  MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6D3 ; FC_NFKC; 03C3           # L&  MATHEMATICAL BOLD SMALL FINAL SIGMA
+ 1D6E2 ; FC_NFKC; 03B1           # L&  MATHEMATICAL ITALIC CAPITAL ALPHA
+ 1D6E3 ; FC_NFKC; 03B2           # L&  MATHEMATICAL ITALIC CAPITAL BETA
+ 1D6E4 ; FC_NFKC; 03B3           # L&  MATHEMATICAL ITALIC CAPITAL GAMMA
+ 1D6E5 ; FC_NFKC; 03B4           # L&  MATHEMATICAL ITALIC CAPITAL DELTA
+ 1D6E6 ; FC_NFKC; 03B5           # L&  MATHEMATICAL ITALIC CAPITAL EPSILON
+ 1D6E7 ; FC_NFKC; 03B6           # L&  MATHEMATICAL ITALIC CAPITAL ZETA
+ 1D6E8 ; FC_NFKC; 03B7           # L&  MATHEMATICAL ITALIC CAPITAL ETA
+ 1D6E9 ; FC_NFKC; 03B8           # L&  MATHEMATICAL ITALIC CAPITAL THETA
+ 1D6EA ; FC_NFKC; 03B9           # L&  MATHEMATICAL ITALIC CAPITAL IOTA
+ 1D6EB ; FC_NFKC; 03BA           # L&  MATHEMATICAL ITALIC CAPITAL KAPPA
+ 1D6EC ; FC_NFKC; 03BB           # L&  MATHEMATICAL ITALIC CAPITAL LAMDA
+ 1D6ED ; FC_NFKC; 03BC           # L&  MATHEMATICAL ITALIC CAPITAL MU
+ 1D6EE ; FC_NFKC; 03BD           # L&  MATHEMATICAL ITALIC CAPITAL NU
+ 1D6EF ; FC_NFKC; 03BE           # L&  MATHEMATICAL ITALIC CAPITAL XI
+ 1D6F0 ; FC_NFKC; 03BF           # L&  MATHEMATICAL ITALIC CAPITAL OMICRON
+ 1D6F1 ; FC_NFKC; 03C0           # L&  MATHEMATICAL ITALIC CAPITAL PI
+ 1D6F2 ; FC_NFKC; 03C1           # L&  MATHEMATICAL ITALIC CAPITAL RHO
+ 1D6F3 ; FC_NFKC; 03B8           # L&  MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+ 1D6F4 ; FC_NFKC; 03C3           # L&  MATHEMATICAL ITALIC CAPITAL SIGMA
+ 1D6F5 ; FC_NFKC; 03C4           # L&  MATHEMATICAL ITALIC CAPITAL TAU
+ 1D6F6 ; FC_NFKC; 03C5           # L&  MATHEMATICAL ITALIC CAPITAL UPSILON
+ 1D6F7 ; FC_NFKC; 03C6           # L&  MATHEMATICAL ITALIC CAPITAL PHI
+ 1D6F8 ; FC_NFKC; 03C7           # L&  MATHEMATICAL ITALIC CAPITAL CHI
+ 1D6F9 ; FC_NFKC; 03C8           # L&  MATHEMATICAL ITALIC CAPITAL PSI
+ 1D6FA ; FC_NFKC; 03C9           # L&  MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D70D ; FC_NFKC; 03C3           # L&  MATHEMATICAL ITALIC SMALL FINAL SIGMA
+ 1D71C ; FC_NFKC; 03B1           # L&  MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+ 1D71D ; FC_NFKC; 03B2           # L&  MATHEMATICAL BOLD ITALIC CAPITAL BETA
+ 1D71E ; FC_NFKC; 03B3           # L&  MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+ 1D71F ; FC_NFKC; 03B4           # L&  MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+ 1D720 ; FC_NFKC; 03B5           # L&  MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+ 1D721 ; FC_NFKC; 03B6           # L&  MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+ 1D722 ; FC_NFKC; 03B7           # L&  MATHEMATICAL BOLD ITALIC CAPITAL ETA
+ 1D723 ; FC_NFKC; 03B8           # L&  MATHEMATICAL BOLD ITALIC CAPITAL THETA
+ 1D724 ; FC_NFKC; 03B9           # L&  MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+ 1D725 ; FC_NFKC; 03BA           # L&  MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+ 1D726 ; FC_NFKC; 03BB           # L&  MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+ 1D727 ; FC_NFKC; 03BC           # L&  MATHEMATICAL BOLD ITALIC CAPITAL MU
+ 1D728 ; FC_NFKC; 03BD           # L&  MATHEMATICAL BOLD ITALIC CAPITAL NU
+ 1D729 ; FC_NFKC; 03BE           # L&  MATHEMATICAL BOLD ITALIC CAPITAL XI
+ 1D72A ; FC_NFKC; 03BF           # L&  MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+ 1D72B ; FC_NFKC; 03C0           # L&  MATHEMATICAL BOLD ITALIC CAPITAL PI
+ 1D72C ; FC_NFKC; 03C1           # L&  MATHEMATICAL BOLD ITALIC CAPITAL RHO
+ 1D72D ; FC_NFKC; 03B8           # L&  MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+ 1D72E ; FC_NFKC; 03C3           # L&  MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+ 1D72F ; FC_NFKC; 03C4           # L&  MATHEMATICAL BOLD ITALIC CAPITAL TAU
+ 1D730 ; FC_NFKC; 03C5           # L&  MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+ 1D731 ; FC_NFKC; 03C6           # L&  MATHEMATICAL BOLD ITALIC CAPITAL PHI
+ 1D732 ; FC_NFKC; 03C7           # L&  MATHEMATICAL BOLD ITALIC CAPITAL CHI
+ 1D733 ; FC_NFKC; 03C8           # L&  MATHEMATICAL BOLD ITALIC CAPITAL PSI
+ 1D734 ; FC_NFKC; 03C9           # L&  MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D747 ; FC_NFKC; 03C3           # L&  MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA
+ 1D756 ; FC_NFKC; 03B1           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+ 1D757 ; FC_NFKC; 03B2           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+ 1D758 ; FC_NFKC; 03B3           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+ 1D759 ; FC_NFKC; 03B4           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+ 1D75A ; FC_NFKC; 03B5           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+ 1D75B ; FC_NFKC; 03B6           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+ 1D75C ; FC_NFKC; 03B7           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+ 1D75D ; FC_NFKC; 03B8           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+ 1D75E ; FC_NFKC; 03B9           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+ 1D75F ; FC_NFKC; 03BA           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+ 1D760 ; FC_NFKC; 03BB           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+ 1D761 ; FC_NFKC; 03BC           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+ 1D762 ; FC_NFKC; 03BD           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+ 1D763 ; FC_NFKC; 03BE           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+ 1D764 ; FC_NFKC; 03BF           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+ 1D765 ; FC_NFKC; 03C0           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+ 1D766 ; FC_NFKC; 03C1           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+ 1D767 ; FC_NFKC; 03B8           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+ 1D768 ; FC_NFKC; 03C3           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+ 1D769 ; FC_NFKC; 03C4           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+ 1D76A ; FC_NFKC; 03C5           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+ 1D76B ; FC_NFKC; 03C6           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+ 1D76C ; FC_NFKC; 03C7           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+ 1D76D ; FC_NFKC; 03C8           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+ 1D76E ; FC_NFKC; 03C9           # L&  MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D781 ; FC_NFKC; 03C3           # L&  MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA
+ 1D790 ; FC_NFKC; 03B1           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+ 1D791 ; FC_NFKC; 03B2           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+ 1D792 ; FC_NFKC; 03B3           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+ 1D793 ; FC_NFKC; 03B4           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+ 1D794 ; FC_NFKC; 03B5           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+ 1D795 ; FC_NFKC; 03B6           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+ 1D796 ; FC_NFKC; 03B7           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+ 1D797 ; FC_NFKC; 03B8           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+ 1D798 ; FC_NFKC; 03B9           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+ 1D799 ; FC_NFKC; 03BA           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+ 1D79A ; FC_NFKC; 03BB           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+ 1D79B ; FC_NFKC; 03BC           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+ 1D79C ; FC_NFKC; 03BD           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+ 1D79D ; FC_NFKC; 03BE           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+ 1D79E ; FC_NFKC; 03BF           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+ 1D79F ; FC_NFKC; 03C0           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+ 1D7A0 ; FC_NFKC; 03C1           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+ 1D7A1 ; FC_NFKC; 03B8           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+ 1D7A2 ; FC_NFKC; 03C3           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+ 1D7A3 ; FC_NFKC; 03C4           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+ 1D7A4 ; FC_NFKC; 03C5           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+ 1D7A5 ; FC_NFKC; 03C6           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+ 1D7A6 ; FC_NFKC; 03C7           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+ 1D7A7 ; FC_NFKC; 03C8           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+ 1D7A8 ; FC_NFKC; 03C9           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7BB ; FC_NFKC; 03C3           # L&  MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA
+ 1D7CA ; FC_NFKC; 03DD           # L&  MATHEMATICAL BOLD CAPITAL DIGAMMA
+ 1F110 ; FC_NFKC; 0028 0061 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER A
+ 1F111 ; FC_NFKC; 0028 0062 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER B
+ 1F112 ; FC_NFKC; 0028 0063 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER C
+ 1F113 ; FC_NFKC; 0028 0064 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER D
+ 1F114 ; FC_NFKC; 0028 0065 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER E
+ 1F115 ; FC_NFKC; 0028 0066 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER F
+ 1F116 ; FC_NFKC; 0028 0067 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER G
+ 1F117 ; FC_NFKC; 0028 0068 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER H
+ 1F118 ; FC_NFKC; 0028 0069 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER I
+ 1F119 ; FC_NFKC; 0028 006A 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER J
+ 1F11A ; FC_NFKC; 0028 006B 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER K
+ 1F11B ; FC_NFKC; 0028 006C 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER L
+ 1F11C ; FC_NFKC; 0028 006D 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER M
+ 1F11D ; FC_NFKC; 0028 006E 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER N
+ 1F11E ; FC_NFKC; 0028 006F 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER O
+ 1F11F ; FC_NFKC; 0028 0070 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER P
+ 1F120 ; FC_NFKC; 0028 0071 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER Q
+ 1F121 ; FC_NFKC; 0028 0072 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER R
+ 1F122 ; FC_NFKC; 0028 0073 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER S
+ 1F123 ; FC_NFKC; 0028 0074 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER T
+ 1F124 ; FC_NFKC; 0028 0075 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER U
+ 1F125 ; FC_NFKC; 0028 0076 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER V
+ 1F126 ; FC_NFKC; 0028 0077 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER W
+ 1F127 ; FC_NFKC; 0028 0078 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER X
+ 1F128 ; FC_NFKC; 0028 0079 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER Y
+ 1F129 ; FC_NFKC; 0028 007A 0029 # So  PARENTHESIZED LATIN CAPITAL LETTER Z
+ 1F12A ; FC_NFKC; 3014 0073 3015 # So  TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+ 1F12B ; FC_NFKC; 0063           # So  CIRCLED ITALIC LATIN CAPITAL LETTER C
+ 1F12C ; FC_NFKC; 0072           # So  CIRCLED ITALIC LATIN CAPITAL LETTER R
+ 1F12D ; FC_NFKC; 0063 0064      # So  CIRCLED CD
+ 1F12E ; FC_NFKC; 0077 007A      # So  CIRCLED WZ
+ 1F130 ; FC_NFKC; 0061           # So  SQUARED LATIN CAPITAL LETTER A
+ 1F131 ; FC_NFKC; 0062           # So  SQUARED LATIN CAPITAL LETTER B
+ 1F132 ; FC_NFKC; 0063           # So  SQUARED LATIN CAPITAL LETTER C
+ 1F133 ; FC_NFKC; 0064           # So  SQUARED LATIN CAPITAL LETTER D
+ 1F134 ; FC_NFKC; 0065           # So  SQUARED LATIN CAPITAL LETTER E
+ 1F135 ; FC_NFKC; 0066           # So  SQUARED LATIN CAPITAL LETTER F
+ 1F136 ; FC_NFKC; 0067           # So  SQUARED LATIN CAPITAL LETTER G
+ 1F137 ; FC_NFKC; 0068           # So  SQUARED LATIN CAPITAL LETTER H
+ 1F138 ; FC_NFKC; 0069           # So  SQUARED LATIN CAPITAL LETTER I
+ 1F139 ; FC_NFKC; 006A           # So  SQUARED LATIN CAPITAL LETTER J
+ 1F13A ; FC_NFKC; 006B           # So  SQUARED LATIN CAPITAL LETTER K
+ 1F13B ; FC_NFKC; 006C           # So  SQUARED LATIN CAPITAL LETTER L
+ 1F13C ; FC_NFKC; 006D           # So  SQUARED LATIN CAPITAL LETTER M
+ 1F13D ; FC_NFKC; 006E           # So  SQUARED LATIN CAPITAL LETTER N
+ 1F13E ; FC_NFKC; 006F           # So  SQUARED LATIN CAPITAL LETTER O
+ 1F13F ; FC_NFKC; 0070           # So  SQUARED LATIN CAPITAL LETTER P
+ 1F140 ; FC_NFKC; 0071           # So  SQUARED LATIN CAPITAL LETTER Q
+ 1F141 ; FC_NFKC; 0072           # So  SQUARED LATIN CAPITAL LETTER R
+ 1F142 ; FC_NFKC; 0073           # So  SQUARED LATIN CAPITAL LETTER S
+ 1F143 ; FC_NFKC; 0074           # So  SQUARED LATIN CAPITAL LETTER T
+ 1F144 ; FC_NFKC; 0075           # So  SQUARED LATIN CAPITAL LETTER U
+ 1F145 ; FC_NFKC; 0076           # So  SQUARED LATIN CAPITAL LETTER V
+ 1F146 ; FC_NFKC; 0077           # So  SQUARED LATIN CAPITAL LETTER W
+ 1F147 ; FC_NFKC; 0078           # So  SQUARED LATIN CAPITAL LETTER X
+ 1F148 ; FC_NFKC; 0079           # So  SQUARED LATIN CAPITAL LETTER Y
+ 1F149 ; FC_NFKC; 007A           # So  SQUARED LATIN CAPITAL LETTER Z
+ 1F14A ; FC_NFKC; 0068 0076      # So  SQUARED HV
+ 1F14B ; FC_NFKC; 006D 0076      # So  SQUARED MV
+ 1F14C ; FC_NFKC; 0073 0064      # So  SQUARED SD
+ 1F14D ; FC_NFKC; 0073 0073      # So  SQUARED SS
+ 1F14E ; FC_NFKC; 0070 0070 0076 # So  SQUARED PPV
+ 1F14F ; FC_NFKC; 0077 0063      # So  SQUARED WC
+ 1F16A ; FC_NFKC; 006D 0063      # So  RAISED MC SIGN
+ 1F16B ; FC_NFKC; 006D 0064      # So  RAISED MD SIGN
+ 1F16C ; FC_NFKC; 006D 0072      # So  RAISED MR SIGN
+ 1F190 ; FC_NFKC; 0064 006A      # So  SQUARE DJ
+ 
+ # Total code points: 637
+ 
+ # ================================================
+ 
+ # Derived Property: Full_Composition_Exclusion
+ #  Generated from: Composition Exclusions + Singletons + Non-Starter Decompositions
+ 
+ 0340..0341    ; Full_Composition_Exclusion # Mn   [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+ 0343..0344    ; Full_Composition_Exclusion # Mn   [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+ 0374          ; Full_Composition_Exclusion # Lm       GREEK NUMERAL SIGN
+ 037E          ; Full_Composition_Exclusion # Po       GREEK QUESTION MARK
+ 0387          ; Full_Composition_Exclusion # Po       GREEK ANO TELEIA
+ 0958..095F    ; Full_Composition_Exclusion # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09DC..09DD    ; Full_Composition_Exclusion # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; Full_Composition_Exclusion # Lo       BENGALI LETTER YYA
+ 0A33          ; Full_Composition_Exclusion # Lo       GURMUKHI LETTER LLA
+ 0A36          ; Full_Composition_Exclusion # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; Full_Composition_Exclusion # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; Full_Composition_Exclusion # Lo       GURMUKHI LETTER FA
+ 0B5C..0B5D    ; Full_Composition_Exclusion # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0F43          ; Full_Composition_Exclusion # Lo       TIBETAN LETTER GHA
+ 0F4D          ; Full_Composition_Exclusion # Lo       TIBETAN LETTER DDHA
+ 0F52          ; Full_Composition_Exclusion # Lo       TIBETAN LETTER DHA
+ 0F57          ; Full_Composition_Exclusion # Lo       TIBETAN LETTER BHA
+ 0F5C          ; Full_Composition_Exclusion # Lo       TIBETAN LETTER DZHA
+ 0F69          ; Full_Composition_Exclusion # Lo       TIBETAN LETTER KSSA
+ 0F73          ; Full_Composition_Exclusion # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F76    ; Full_Composition_Exclusion # Mn   [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+ 0F78          ; Full_Composition_Exclusion # Mn       TIBETAN VOWEL SIGN VOCALIC L
+ 0F81          ; Full_Composition_Exclusion # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; Full_Composition_Exclusion # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; Full_Composition_Exclusion # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; Full_Composition_Exclusion # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; Full_Composition_Exclusion # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; Full_Composition_Exclusion # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; Full_Composition_Exclusion # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1F71          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER ALPHA WITH OXIA
+ 1F73          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER EPSILON WITH OXIA
+ 1F75          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER ETA WITH OXIA
+ 1F77          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER IOTA WITH OXIA
+ 1F79          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER OMICRON WITH OXIA
+ 1F7B          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER UPSILON WITH OXIA
+ 1F7D          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER OMEGA WITH OXIA
+ 1FBB          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER ALPHA WITH OXIA
+ 1FBE          ; Full_Composition_Exclusion # L&       GREEK PROSGEGRAMMENI
+ 1FC9          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER EPSILON WITH OXIA
+ 1FCB          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER ETA WITH OXIA
+ 1FD3          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FDB          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE3          ; Full_Composition_Exclusion # L&       GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ 1FEB          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER UPSILON WITH OXIA
+ 1FEE..1FEF    ; Full_Composition_Exclusion # Sk   [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+ 1FF9          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER OMICRON WITH OXIA
+ 1FFB          ; Full_Composition_Exclusion # L&       GREEK CAPITAL LETTER OMEGA WITH OXIA
+ 1FFD          ; Full_Composition_Exclusion # Sk       GREEK OXIA
+ 2000..2001    ; Full_Composition_Exclusion # Zs   [2] EN QUAD..EM QUAD
+ 2126          ; Full_Composition_Exclusion # L&       OHM SIGN
+ 212A..212B    ; Full_Composition_Exclusion # L&   [2] KELVIN SIGN..ANGSTROM SIGN
+ 2329          ; Full_Composition_Exclusion # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; Full_Composition_Exclusion # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2ADC          ; Full_Composition_Exclusion # Sm       FORKING
+ F900..FA0D    ; Full_Composition_Exclusion # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; Full_Composition_Exclusion # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; Full_Composition_Exclusion # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15..FA1E    ; Full_Composition_Exclusion # Lo  [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; Full_Composition_Exclusion # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; Full_Composition_Exclusion # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25..FA26    ; Full_Composition_Exclusion # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A..FA6D    ; Full_Composition_Exclusion # Lo  [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; Full_Composition_Exclusion # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB1D          ; Full_Composition_Exclusion # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; Full_Composition_Exclusion # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; Full_Composition_Exclusion # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Full_Composition_Exclusion # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Full_Composition_Exclusion # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Full_Composition_Exclusion # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Full_Composition_Exclusion # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4E    ; Full_Composition_Exclusion # Lo   [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+ 1D15E..1D164  ; Full_Composition_Exclusion # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; Full_Composition_Exclusion # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 2F800..2FA1D  ; Full_Composition_Exclusion # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 
+ # Total code points: 1120
+ 
+ # ================================================
+ 
+ # Property:	NFD_Quick_Check
+ 
+ #  All code points not explicitly listed for NFD_Quick_Check
+ #  have the value Yes (Y).
+ 
+ # @missing: 0000..10FFFF; NFD_QC; Yes
+ 
+ # ================================================
+ 
+ # NFD_Quick_Check=No
+ 
+ 00C0..00C5    ; NFD_QC; N # L&   [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+ 00C7..00CF    ; NFD_QC; N # L&   [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+ 00D1..00D6    ; NFD_QC; N # L&   [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D9..00DD    ; NFD_QC; N # L&   [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+ 00E0..00E5    ; NFD_QC; N # L&   [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+ 00E7..00EF    ; NFD_QC; N # L&   [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+ 00F1..00F6    ; NFD_QC; N # L&   [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F9..00FD    ; NFD_QC; N # L&   [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+ 00FF..010F    ; NFD_QC; N # L&  [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+ 0112..0125    ; NFD_QC; N # L&  [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0128..0130    ; NFD_QC; N # L&   [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0134..0137    ; NFD_QC; N # L&   [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+ 0139..013E    ; NFD_QC; N # L&   [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+ 0143..0148    ; NFD_QC; N # L&   [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+ 014C..0151    ; NFD_QC; N # L&   [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0154..0165    ; NFD_QC; N # L&  [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+ 0168..017E    ; NFD_QC; N # L&  [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+ 01A0..01A1    ; NFD_QC; N # L&   [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+ 01AF..01B0    ; NFD_QC; N # L&   [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+ 01CD..01DC    ; NFD_QC; N # L&  [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE..01E3    ; NFD_QC; N # L&   [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+ 01E6..01F0    ; NFD_QC; N # L&  [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+ 01F4..01F5    ; NFD_QC; N # L&   [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+ 01F8..021B    ; NFD_QC; N # L&  [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+ 021E..021F    ; NFD_QC; N # L&   [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+ 0226..0233    ; NFD_QC; N # L&  [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+ 0340..0341    ; NFD_QC; N # Mn   [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+ 0343..0344    ; NFD_QC; N # Mn   [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+ 0374          ; NFD_QC; N # Lm       GREEK NUMERAL SIGN
+ 037E          ; NFD_QC; N # Po       GREEK QUESTION MARK
+ 0385          ; NFD_QC; N # Sk       GREEK DIALYTIKA TONOS
+ 0386          ; NFD_QC; N # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; NFD_QC; N # Po       GREEK ANO TELEIA
+ 0388..038A    ; NFD_QC; N # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; NFD_QC; N # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..0390    ; NFD_QC; N # L&   [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AA..03B0    ; NFD_QC; N # L&   [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ 03CA..03CE    ; NFD_QC; N # L&   [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D3..03D4    ; NFD_QC; N # L&   [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ 0400..0401    ; NFD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+ 0403          ; NFD_QC; N # L&       CYRILLIC CAPITAL LETTER GJE
+ 0407          ; NFD_QC; N # L&       CYRILLIC CAPITAL LETTER YI
+ 040C..040E    ; NFD_QC; N # L&   [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+ 0419          ; NFD_QC; N # L&       CYRILLIC CAPITAL LETTER SHORT I
+ 0439          ; NFD_QC; N # L&       CYRILLIC SMALL LETTER SHORT I
+ 0450..0451    ; NFD_QC; N # L&   [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+ 0453          ; NFD_QC; N # L&       CYRILLIC SMALL LETTER GJE
+ 0457          ; NFD_QC; N # L&       CYRILLIC SMALL LETTER YI
+ 045C..045E    ; NFD_QC; N # L&   [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+ 0476..0477    ; NFD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 04C1..04C2    ; NFD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04D0..04D3    ; NFD_QC; N # L&   [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D6..04D7    ; NFD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+ 04DA..04DF    ; NFD_QC; N # L&   [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E2..04E7    ; NFD_QC; N # L&   [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04EA..04F5    ; NFD_QC; N # L&  [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F8..04F9    ; NFD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 0622..0626    ; NFD_QC; N # Lo   [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+ 06C0          ; NFD_QC; N # Lo       ARABIC LETTER HEH WITH YEH ABOVE
+ 06C2          ; NFD_QC; N # Lo       ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+ 06D3          ; NFD_QC; N # Lo       ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 0929          ; NFD_QC; N # Lo       DEVANAGARI LETTER NNNA
+ 0931          ; NFD_QC; N # Lo       DEVANAGARI LETTER RRA
+ 0934          ; NFD_QC; N # Lo       DEVANAGARI LETTER LLLA
+ 0958..095F    ; NFD_QC; N # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09CB..09CC    ; NFD_QC; N # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09DC..09DD    ; NFD_QC; N # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; NFD_QC; N # Lo       BENGALI LETTER YYA
+ 0A33          ; NFD_QC; N # Lo       GURMUKHI LETTER LLA
+ 0A36          ; NFD_QC; N # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; NFD_QC; N # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; NFD_QC; N # Lo       GURMUKHI LETTER FA
+ 0B48          ; NFD_QC; N # Mc       ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; NFD_QC; N # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B5C..0B5D    ; NFD_QC; N # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B94          ; NFD_QC; N # Lo       TAMIL LETTER AU
+ 0BCA..0BCC    ; NFD_QC; N # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0C48          ; NFD_QC; N # Mn       TELUGU VOWEL SIGN AI
+ 0CC0          ; NFD_QC; N # Mc       KANNADA VOWEL SIGN II
+ 0CC7..0CC8    ; NFD_QC; N # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; NFD_QC; N # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0D4A..0D4C    ; NFD_QC; N # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0DDA          ; NFD_QC; N # Mc       SINHALA VOWEL SIGN DIGA KOMBUVA
+ 0DDC..0DDE    ; NFD_QC; N # Mc   [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+ 0F43          ; NFD_QC; N # Lo       TIBETAN LETTER GHA
+ 0F4D          ; NFD_QC; N # Lo       TIBETAN LETTER DDHA
+ 0F52          ; NFD_QC; N # Lo       TIBETAN LETTER DHA
+ 0F57          ; NFD_QC; N # Lo       TIBETAN LETTER BHA
+ 0F5C          ; NFD_QC; N # Lo       TIBETAN LETTER DZHA
+ 0F69          ; NFD_QC; N # Lo       TIBETAN LETTER KSSA
+ 0F73          ; NFD_QC; N # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F76    ; NFD_QC; N # Mn   [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+ 0F78          ; NFD_QC; N # Mn       TIBETAN VOWEL SIGN VOCALIC L
+ 0F81          ; NFD_QC; N # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; NFD_QC; N # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; NFD_QC; N # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; NFD_QC; N # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; NFD_QC; N # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; NFD_QC; N # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; NFD_QC; N # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1026          ; NFD_QC; N # Lo       MYANMAR LETTER UU
+ 1B06          ; NFD_QC; N # Lo       BALINESE LETTER AKARA TEDUNG
+ 1B08          ; NFD_QC; N # Lo       BALINESE LETTER IKARA TEDUNG
+ 1B0A          ; NFD_QC; N # Lo       BALINESE LETTER UKARA TEDUNG
+ 1B0C          ; NFD_QC; N # Lo       BALINESE LETTER RA REPA TEDUNG
+ 1B0E          ; NFD_QC; N # Lo       BALINESE LETTER LA LENGA TEDUNG
+ 1B12          ; NFD_QC; N # Lo       BALINESE LETTER OKARA TEDUNG
+ 1B3B          ; NFD_QC; N # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3D          ; NFD_QC; N # Mc       BALINESE VOWEL SIGN LA LENGA TEDUNG
+ 1B40..1B41    ; NFD_QC; N # Mc   [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B43          ; NFD_QC; N # Mc       BALINESE VOWEL SIGN PEPET TEDUNG
+ 1E00..1E99    ; NFD_QC; N # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+ 1E9B          ; NFD_QC; N # L&       LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1EA0..1EF9    ; NFD_QC; N # L&  [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+ 1F00..1F15    ; NFD_QC; N # L&  [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; NFD_QC; N # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; NFD_QC; N # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; NFD_QC; N # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; NFD_QC; N # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; NFD_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; NFD_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; NFD_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; NFD_QC; N # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; NFD_QC; N # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; NFD_QC; N # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBE          ; NFD_QC; N # L&       GREEK PROSGEGRAMMENI
+ 1FC1          ; NFD_QC; N # Sk       GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2..1FC4    ; NFD_QC; N # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; NFD_QC; N # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD..1FCF    ; NFD_QC; N # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD0..1FD3    ; NFD_QC; N # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; NFD_QC; N # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; NFD_QC; N # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE0..1FEC    ; NFD_QC; N # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED..1FEF    ; NFD_QC; N # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+ 1FF2..1FF4    ; NFD_QC; N # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; NFD_QC; N # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 1FFD          ; NFD_QC; N # Sk       GREEK OXIA
+ 2000..2001    ; NFD_QC; N # Zs   [2] EN QUAD..EM QUAD
+ 2126          ; NFD_QC; N # L&       OHM SIGN
+ 212A..212B    ; NFD_QC; N # L&   [2] KELVIN SIGN..ANGSTROM SIGN
+ 219A..219B    ; NFD_QC; N # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+ 21AE          ; NFD_QC; N # Sm       LEFT RIGHT ARROW WITH STROKE
+ 21CD          ; NFD_QC; N # So       LEFTWARDS DOUBLE ARROW WITH STROKE
+ 21CE..21CF    ; NFD_QC; N # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+ 2204          ; NFD_QC; N # Sm       THERE DOES NOT EXIST
+ 2209          ; NFD_QC; N # Sm       NOT AN ELEMENT OF
+ 220C          ; NFD_QC; N # Sm       DOES NOT CONTAIN AS MEMBER
+ 2224          ; NFD_QC; N # Sm       DOES NOT DIVIDE
+ 2226          ; NFD_QC; N # Sm       NOT PARALLEL TO
+ 2241          ; NFD_QC; N # Sm       NOT TILDE
+ 2244          ; NFD_QC; N # Sm       NOT ASYMPTOTICALLY EQUAL TO
+ 2247          ; NFD_QC; N # Sm       NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+ 2249          ; NFD_QC; N # Sm       NOT ALMOST EQUAL TO
+ 2260          ; NFD_QC; N # Sm       NOT EQUAL TO
+ 2262          ; NFD_QC; N # Sm       NOT IDENTICAL TO
+ 226D..2271    ; NFD_QC; N # Sm   [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+ 2274..2275    ; NFD_QC; N # Sm   [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+ 2278..2279    ; NFD_QC; N # Sm   [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+ 2280..2281    ; NFD_QC; N # Sm   [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+ 2284..2285    ; NFD_QC; N # Sm   [2] NOT A SUBSET OF..NOT A SUPERSET OF
+ 2288..2289    ; NFD_QC; N # Sm   [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+ 22AC..22AF    ; NFD_QC; N # Sm   [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ 22E0..22E3    ; NFD_QC; N # Sm   [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+ 22EA..22ED    ; NFD_QC; N # Sm   [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ 2329          ; NFD_QC; N # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; NFD_QC; N # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2ADC          ; NFD_QC; N # Sm       FORKING
+ 304C          ; NFD_QC; N # Lo       HIRAGANA LETTER GA
+ 304E          ; NFD_QC; N # Lo       HIRAGANA LETTER GI
+ 3050          ; NFD_QC; N # Lo       HIRAGANA LETTER GU
+ 3052          ; NFD_QC; N # Lo       HIRAGANA LETTER GE
+ 3054          ; NFD_QC; N # Lo       HIRAGANA LETTER GO
+ 3056          ; NFD_QC; N # Lo       HIRAGANA LETTER ZA
+ 3058          ; NFD_QC; N # Lo       HIRAGANA LETTER ZI
+ 305A          ; NFD_QC; N # Lo       HIRAGANA LETTER ZU
+ 305C          ; NFD_QC; N # Lo       HIRAGANA LETTER ZE
+ 305E          ; NFD_QC; N # Lo       HIRAGANA LETTER ZO
+ 3060          ; NFD_QC; N # Lo       HIRAGANA LETTER DA
+ 3062          ; NFD_QC; N # Lo       HIRAGANA LETTER DI
+ 3065          ; NFD_QC; N # Lo       HIRAGANA LETTER DU
+ 3067          ; NFD_QC; N # Lo       HIRAGANA LETTER DE
+ 3069          ; NFD_QC; N # Lo       HIRAGANA LETTER DO
+ 3070..3071    ; NFD_QC; N # Lo   [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+ 3073..3074    ; NFD_QC; N # Lo   [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+ 3076..3077    ; NFD_QC; N # Lo   [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+ 3079..307A    ; NFD_QC; N # Lo   [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+ 307C..307D    ; NFD_QC; N # Lo   [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+ 3094          ; NFD_QC; N # Lo       HIRAGANA LETTER VU
+ 309E          ; NFD_QC; N # Lm       HIRAGANA VOICED ITERATION MARK
+ 30AC          ; NFD_QC; N # Lo       KATAKANA LETTER GA
+ 30AE          ; NFD_QC; N # Lo       KATAKANA LETTER GI
+ 30B0          ; NFD_QC; N # Lo       KATAKANA LETTER GU
+ 30B2          ; NFD_QC; N # Lo       KATAKANA LETTER GE
+ 30B4          ; NFD_QC; N # Lo       KATAKANA LETTER GO
+ 30B6          ; NFD_QC; N # Lo       KATAKANA LETTER ZA
+ 30B8          ; NFD_QC; N # Lo       KATAKANA LETTER ZI
+ 30BA          ; NFD_QC; N # Lo       KATAKANA LETTER ZU
+ 30BC          ; NFD_QC; N # Lo       KATAKANA LETTER ZE
+ 30BE          ; NFD_QC; N # Lo       KATAKANA LETTER ZO
+ 30C0          ; NFD_QC; N # Lo       KATAKANA LETTER DA
+ 30C2          ; NFD_QC; N # Lo       KATAKANA LETTER DI
+ 30C5          ; NFD_QC; N # Lo       KATAKANA LETTER DU
+ 30C7          ; NFD_QC; N # Lo       KATAKANA LETTER DE
+ 30C9          ; NFD_QC; N # Lo       KATAKANA LETTER DO
+ 30D0..30D1    ; NFD_QC; N # Lo   [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+ 30D3..30D4    ; NFD_QC; N # Lo   [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+ 30D6..30D7    ; NFD_QC; N # Lo   [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+ 30D9..30DA    ; NFD_QC; N # Lo   [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+ 30DC..30DD    ; NFD_QC; N # Lo   [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+ 30F4          ; NFD_QC; N # Lo       KATAKANA LETTER VU
+ 30F7..30FA    ; NFD_QC; N # Lo   [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+ 30FE          ; NFD_QC; N # Lm       KATAKANA VOICED ITERATION MARK
+ AC00..D7A3    ; NFD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ F900..FA0D    ; NFD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; NFD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; NFD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15..FA1E    ; NFD_QC; N # Lo  [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; NFD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; NFD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25..FA26    ; NFD_QC; N # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A..FA6D    ; NFD_QC; N # Lo  [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; NFD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB1D          ; NFD_QC; N # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; NFD_QC; N # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; NFD_QC; N # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; NFD_QC; N # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; NFD_QC; N # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; NFD_QC; N # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; NFD_QC; N # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4E    ; NFD_QC; N # Lo   [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+ 1109A         ; NFD_QC; N # Lo       KAITHI LETTER DDDHA
+ 1109C         ; NFD_QC; N # Lo       KAITHI LETTER RHA
+ 110AB         ; NFD_QC; N # Lo       KAITHI LETTER VA
+ 1112E..1112F  ; NFD_QC; N # Mn   [2] CHAKMA VOWEL SIGN O..CHAKMA VOWEL SIGN AU
+ 1134B..1134C  ; NFD_QC; N # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
+ 114BB..114BC  ; NFD_QC; N # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+ 114BE         ; NFD_QC; N # Mc       TIRHUTA VOWEL SIGN AU
+ 115BA..115BB  ; NFD_QC; N # Mc   [2] SIDDHAM VOWEL SIGN O..SIDDHAM VOWEL SIGN AU
+ 11938         ; NFD_QC; N # Mc       DIVES AKURU VOWEL SIGN O
+ 1D15E..1D164  ; NFD_QC; N # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; NFD_QC; N # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 2F800..2FA1D  ; NFD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 
+ # Total code points: 13233
+ 
+ # ================================================
+ 
+ # Property:	NFC_Quick_Check
+ 
+ #  All code points not explicitly listed for NFC_Quick_Check
+ #  have the value Yes (Y).
+ 
+ # @missing: 0000..10FFFF; NFC_QC; Yes
+ 
+ # ================================================
+ 
+ # NFC_Quick_Check=No
+ 
+ 0340..0341    ; NFC_QC; N # Mn   [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+ 0343..0344    ; NFC_QC; N # Mn   [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+ 0374          ; NFC_QC; N # Lm       GREEK NUMERAL SIGN
+ 037E          ; NFC_QC; N # Po       GREEK QUESTION MARK
+ 0387          ; NFC_QC; N # Po       GREEK ANO TELEIA
+ 0958..095F    ; NFC_QC; N # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09DC..09DD    ; NFC_QC; N # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; NFC_QC; N # Lo       BENGALI LETTER YYA
+ 0A33          ; NFC_QC; N # Lo       GURMUKHI LETTER LLA
+ 0A36          ; NFC_QC; N # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; NFC_QC; N # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; NFC_QC; N # Lo       GURMUKHI LETTER FA
+ 0B5C..0B5D    ; NFC_QC; N # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0F43          ; NFC_QC; N # Lo       TIBETAN LETTER GHA
+ 0F4D          ; NFC_QC; N # Lo       TIBETAN LETTER DDHA
+ 0F52          ; NFC_QC; N # Lo       TIBETAN LETTER DHA
+ 0F57          ; NFC_QC; N # Lo       TIBETAN LETTER BHA
+ 0F5C          ; NFC_QC; N # Lo       TIBETAN LETTER DZHA
+ 0F69          ; NFC_QC; N # Lo       TIBETAN LETTER KSSA
+ 0F73          ; NFC_QC; N # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F76    ; NFC_QC; N # Mn   [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+ 0F78          ; NFC_QC; N # Mn       TIBETAN VOWEL SIGN VOCALIC L
+ 0F81          ; NFC_QC; N # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; NFC_QC; N # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; NFC_QC; N # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; NFC_QC; N # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; NFC_QC; N # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; NFC_QC; N # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; NFC_QC; N # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1F71          ; NFC_QC; N # L&       GREEK SMALL LETTER ALPHA WITH OXIA
+ 1F73          ; NFC_QC; N # L&       GREEK SMALL LETTER EPSILON WITH OXIA
+ 1F75          ; NFC_QC; N # L&       GREEK SMALL LETTER ETA WITH OXIA
+ 1F77          ; NFC_QC; N # L&       GREEK SMALL LETTER IOTA WITH OXIA
+ 1F79          ; NFC_QC; N # L&       GREEK SMALL LETTER OMICRON WITH OXIA
+ 1F7B          ; NFC_QC; N # L&       GREEK SMALL LETTER UPSILON WITH OXIA
+ 1F7D          ; NFC_QC; N # L&       GREEK SMALL LETTER OMEGA WITH OXIA
+ 1FBB          ; NFC_QC; N # L&       GREEK CAPITAL LETTER ALPHA WITH OXIA
+ 1FBE          ; NFC_QC; N # L&       GREEK PROSGEGRAMMENI
+ 1FC9          ; NFC_QC; N # L&       GREEK CAPITAL LETTER EPSILON WITH OXIA
+ 1FCB          ; NFC_QC; N # L&       GREEK CAPITAL LETTER ETA WITH OXIA
+ 1FD3          ; NFC_QC; N # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FDB          ; NFC_QC; N # L&       GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FE3          ; NFC_QC; N # L&       GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ 1FEB          ; NFC_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH OXIA
+ 1FEE..1FEF    ; NFC_QC; N # Sk   [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+ 1FF9          ; NFC_QC; N # L&       GREEK CAPITAL LETTER OMICRON WITH OXIA
+ 1FFB          ; NFC_QC; N # L&       GREEK CAPITAL LETTER OMEGA WITH OXIA
+ 1FFD          ; NFC_QC; N # Sk       GREEK OXIA
+ 2000..2001    ; NFC_QC; N # Zs   [2] EN QUAD..EM QUAD
+ 2126          ; NFC_QC; N # L&       OHM SIGN
+ 212A..212B    ; NFC_QC; N # L&   [2] KELVIN SIGN..ANGSTROM SIGN
+ 2329          ; NFC_QC; N # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; NFC_QC; N # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2ADC          ; NFC_QC; N # Sm       FORKING
+ F900..FA0D    ; NFC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; NFC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; NFC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15..FA1E    ; NFC_QC; N # Lo  [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; NFC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; NFC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25..FA26    ; NFC_QC; N # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A..FA6D    ; NFC_QC; N # Lo  [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; NFC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB1D          ; NFC_QC; N # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; NFC_QC; N # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; NFC_QC; N # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; NFC_QC; N # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; NFC_QC; N # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; NFC_QC; N # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; NFC_QC; N # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4E    ; NFC_QC; N # Lo   [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+ 1D15E..1D164  ; NFC_QC; N # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; NFC_QC; N # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 2F800..2FA1D  ; NFC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 
+ # Total code points: 1120
+ 
+ # ================================================
+ 
+ # NFC_Quick_Check=Maybe
+ 
+ 0300..0304    ; NFC_QC; M # Mn   [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+ 0306..030C    ; NFC_QC; M # Mn   [7] COMBINING BREVE..COMBINING CARON
+ 030F          ; NFC_QC; M # Mn       COMBINING DOUBLE GRAVE ACCENT
+ 0311          ; NFC_QC; M # Mn       COMBINING INVERTED BREVE
+ 0313..0314    ; NFC_QC; M # Mn   [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+ 031B          ; NFC_QC; M # Mn       COMBINING HORN
+ 0323..0328    ; NFC_QC; M # Mn   [6] COMBINING DOT BELOW..COMBINING OGONEK
+ 032D..032E    ; NFC_QC; M # Mn   [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+ 0330..0331    ; NFC_QC; M # Mn   [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+ 0338          ; NFC_QC; M # Mn       COMBINING LONG SOLIDUS OVERLAY
+ 0342          ; NFC_QC; M # Mn       COMBINING GREEK PERISPOMENI
+ 0345          ; NFC_QC; M # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0653..0655    ; NFC_QC; M # Mn   [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+ 093C          ; NFC_QC; M # Mn       DEVANAGARI SIGN NUKTA
+ 09BE          ; NFC_QC; M # Mc       BENGALI VOWEL SIGN AA
+ 09D7          ; NFC_QC; M # Mc       BENGALI AU LENGTH MARK
+ 0B3E          ; NFC_QC; M # Mc       ORIYA VOWEL SIGN AA
+ 0B56          ; NFC_QC; M # Mn       ORIYA AI LENGTH MARK
+ 0B57          ; NFC_QC; M # Mc       ORIYA AU LENGTH MARK
+ 0BBE          ; NFC_QC; M # Mc       TAMIL VOWEL SIGN AA
+ 0BD7          ; NFC_QC; M # Mc       TAMIL AU LENGTH MARK
+ 0C56          ; NFC_QC; M # Mn       TELUGU AI LENGTH MARK
+ 0CC2          ; NFC_QC; M # Mc       KANNADA VOWEL SIGN UU
+ 0CD5..0CD6    ; NFC_QC; M # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+ 0D3E          ; NFC_QC; M # Mc       MALAYALAM VOWEL SIGN AA
+ 0D57          ; NFC_QC; M # Mc       MALAYALAM AU LENGTH MARK
+ 0DCA          ; NFC_QC; M # Mn       SINHALA SIGN AL-LAKUNA
+ 0DCF          ; NFC_QC; M # Mc       SINHALA VOWEL SIGN AELA-PILLA
+ 0DDF          ; NFC_QC; M # Mc       SINHALA VOWEL SIGN GAYANUKITTA
+ 102E          ; NFC_QC; M # Mn       MYANMAR VOWEL SIGN II
+ 1161..1175    ; NFC_QC; M # Lo  [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+ 11A8..11C2    ; NFC_QC; M # Lo  [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+ 1B35          ; NFC_QC; M # Mc       BALINESE VOWEL SIGN TEDUNG
+ 3099..309A    ; NFC_QC; M # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 110BA         ; NFC_QC; M # Mn       KAITHI SIGN NUKTA
+ 11127         ; NFC_QC; M # Mn       CHAKMA VOWEL SIGN A
+ 1133E         ; NFC_QC; M # Mc       GRANTHA VOWEL SIGN AA
+ 11357         ; NFC_QC; M # Mc       GRANTHA AU LENGTH MARK
+ 114B0         ; NFC_QC; M # Mc       TIRHUTA VOWEL SIGN AA
+ 114BA         ; NFC_QC; M # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BD         ; NFC_QC; M # Mc       TIRHUTA VOWEL SIGN SHORT O
+ 115AF         ; NFC_QC; M # Mc       SIDDHAM VOWEL SIGN AA
+ 11930         ; NFC_QC; M # Mc       DIVES AKURU VOWEL SIGN AA
+ 
+ # Total code points: 111
+ 
+ # ================================================
+ 
+ # Property:	NFKD_Quick_Check
+ 
+ #  All code points not explicitly listed for NFKD_Quick_Check
+ #  have the value Yes (Y).
+ 
+ # @missing: 0000..10FFFF; NFKD_QC; Yes
+ 
+ # ================================================
+ 
+ # NFKD_Quick_Check=No
+ 
+ 00A0          ; NFKD_QC; N # Zs       NO-BREAK SPACE
+ 00A8          ; NFKD_QC; N # Sk       DIAERESIS
+ 00AA          ; NFKD_QC; N # Lo       FEMININE ORDINAL INDICATOR
+ 00AF          ; NFKD_QC; N # Sk       MACRON
+ 00B2..00B3    ; NFKD_QC; N # No   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+ 00B4          ; NFKD_QC; N # Sk       ACUTE ACCENT
+ 00B5          ; NFKD_QC; N # L&       MICRO SIGN
+ 00B8          ; NFKD_QC; N # Sk       CEDILLA
+ 00B9          ; NFKD_QC; N # No       SUPERSCRIPT ONE
+ 00BA          ; NFKD_QC; N # Lo       MASCULINE ORDINAL INDICATOR
+ 00BC..00BE    ; NFKD_QC; N # No   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+ 00C0..00C5    ; NFKD_QC; N # L&   [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+ 00C7..00CF    ; NFKD_QC; N # L&   [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+ 00D1..00D6    ; NFKD_QC; N # L&   [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D9..00DD    ; NFKD_QC; N # L&   [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+ 00E0..00E5    ; NFKD_QC; N # L&   [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+ 00E7..00EF    ; NFKD_QC; N # L&   [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+ 00F1..00F6    ; NFKD_QC; N # L&   [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F9..00FD    ; NFKD_QC; N # L&   [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+ 00FF..010F    ; NFKD_QC; N # L&  [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+ 0112..0125    ; NFKD_QC; N # L&  [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0128..0130    ; NFKD_QC; N # L&   [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132..0137    ; NFKD_QC; N # L&   [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+ 0139..0140    ; NFKD_QC; N # L&   [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0143..0149    ; NFKD_QC; N # L&   [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 014C..0151    ; NFKD_QC; N # L&   [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0154..0165    ; NFKD_QC; N # L&  [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+ 0168..017F    ; NFKD_QC; N # L&  [24] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER LONG S
+ 01A0..01A1    ; NFKD_QC; N # L&   [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+ 01AF..01B0    ; NFKD_QC; N # L&   [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+ 01C4..01DC    ; NFKD_QC; N # L&  [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE..01E3    ; NFKD_QC; N # L&   [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+ 01E6..01F5    ; NFKD_QC; N # L&  [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+ 01F8..021B    ; NFKD_QC; N # L&  [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+ 021E..021F    ; NFKD_QC; N # L&   [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+ 0226..0233    ; NFKD_QC; N # L&  [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+ 02B0..02B8    ; NFKD_QC; N # Lm   [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+ 02D8..02DD    ; NFKD_QC; N # Sk   [6] BREVE..DOUBLE ACUTE ACCENT
+ 02E0..02E4    ; NFKD_QC; N # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 0340..0341    ; NFKD_QC; N # Mn   [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+ 0343..0344    ; NFKD_QC; N # Mn   [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+ 0374          ; NFKD_QC; N # Lm       GREEK NUMERAL SIGN
+ 037A          ; NFKD_QC; N # Lm       GREEK YPOGEGRAMMENI
+ 037E          ; NFKD_QC; N # Po       GREEK QUESTION MARK
+ 0384..0385    ; NFKD_QC; N # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0386          ; NFKD_QC; N # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; NFKD_QC; N # Po       GREEK ANO TELEIA
+ 0388..038A    ; NFKD_QC; N # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; NFKD_QC; N # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..0390    ; NFKD_QC; N # L&   [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AA..03B0    ; NFKD_QC; N # L&   [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ 03CA..03CE    ; NFKD_QC; N # L&   [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D0..03D6    ; NFKD_QC; N # L&   [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+ 03F0..03F2    ; NFKD_QC; N # L&   [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+ 03F4..03F5    ; NFKD_QC; N # L&   [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+ 03F9          ; NFKD_QC; N # L&       GREEK CAPITAL LUNATE SIGMA SYMBOL
+ 0400..0401    ; NFKD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+ 0403          ; NFKD_QC; N # L&       CYRILLIC CAPITAL LETTER GJE
+ 0407          ; NFKD_QC; N # L&       CYRILLIC CAPITAL LETTER YI
+ 040C..040E    ; NFKD_QC; N # L&   [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+ 0419          ; NFKD_QC; N # L&       CYRILLIC CAPITAL LETTER SHORT I
+ 0439          ; NFKD_QC; N # L&       CYRILLIC SMALL LETTER SHORT I
+ 0450..0451    ; NFKD_QC; N # L&   [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+ 0453          ; NFKD_QC; N # L&       CYRILLIC SMALL LETTER GJE
+ 0457          ; NFKD_QC; N # L&       CYRILLIC SMALL LETTER YI
+ 045C..045E    ; NFKD_QC; N # L&   [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+ 0476..0477    ; NFKD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 04C1..04C2    ; NFKD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04D0..04D3    ; NFKD_QC; N # L&   [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D6..04D7    ; NFKD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+ 04DA..04DF    ; NFKD_QC; N # L&   [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E2..04E7    ; NFKD_QC; N # L&   [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04EA..04F5    ; NFKD_QC; N # L&  [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F8..04F9    ; NFKD_QC; N # L&   [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 0587          ; NFKD_QC; N # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 0622..0626    ; NFKD_QC; N # Lo   [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+ 0675..0678    ; NFKD_QC; N # Lo   [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+ 06C0          ; NFKD_QC; N # Lo       ARABIC LETTER HEH WITH YEH ABOVE
+ 06C2          ; NFKD_QC; N # Lo       ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+ 06D3          ; NFKD_QC; N # Lo       ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 0929          ; NFKD_QC; N # Lo       DEVANAGARI LETTER NNNA
+ 0931          ; NFKD_QC; N # Lo       DEVANAGARI LETTER RRA
+ 0934          ; NFKD_QC; N # Lo       DEVANAGARI LETTER LLLA
+ 0958..095F    ; NFKD_QC; N # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09CB..09CC    ; NFKD_QC; N # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09DC..09DD    ; NFKD_QC; N # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; NFKD_QC; N # Lo       BENGALI LETTER YYA
+ 0A33          ; NFKD_QC; N # Lo       GURMUKHI LETTER LLA
+ 0A36          ; NFKD_QC; N # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; NFKD_QC; N # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; NFKD_QC; N # Lo       GURMUKHI LETTER FA
+ 0B48          ; NFKD_QC; N # Mc       ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; NFKD_QC; N # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B5C..0B5D    ; NFKD_QC; N # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B94          ; NFKD_QC; N # Lo       TAMIL LETTER AU
+ 0BCA..0BCC    ; NFKD_QC; N # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0C48          ; NFKD_QC; N # Mn       TELUGU VOWEL SIGN AI
+ 0CC0          ; NFKD_QC; N # Mc       KANNADA VOWEL SIGN II
+ 0CC7..0CC8    ; NFKD_QC; N # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; NFKD_QC; N # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0D4A..0D4C    ; NFKD_QC; N # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0DDA          ; NFKD_QC; N # Mc       SINHALA VOWEL SIGN DIGA KOMBUVA
+ 0DDC..0DDE    ; NFKD_QC; N # Mc   [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+ 0E33          ; NFKD_QC; N # Lo       THAI CHARACTER SARA AM
+ 0EB3          ; NFKD_QC; N # Lo       LAO VOWEL SIGN AM
+ 0EDC..0EDD    ; NFKD_QC; N # Lo   [2] LAO HO NO..LAO HO MO
+ 0F0C          ; NFKD_QC; N # Po       TIBETAN MARK DELIMITER TSHEG BSTAR
+ 0F43          ; NFKD_QC; N # Lo       TIBETAN LETTER GHA
+ 0F4D          ; NFKD_QC; N # Lo       TIBETAN LETTER DDHA
+ 0F52          ; NFKD_QC; N # Lo       TIBETAN LETTER DHA
+ 0F57          ; NFKD_QC; N # Lo       TIBETAN LETTER BHA
+ 0F5C          ; NFKD_QC; N # Lo       TIBETAN LETTER DZHA
+ 0F69          ; NFKD_QC; N # Lo       TIBETAN LETTER KSSA
+ 0F73          ; NFKD_QC; N # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F79    ; NFKD_QC; N # Mn   [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+ 0F81          ; NFKD_QC; N # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; NFKD_QC; N # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; NFKD_QC; N # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; NFKD_QC; N # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; NFKD_QC; N # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; NFKD_QC; N # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; NFKD_QC; N # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1026          ; NFKD_QC; N # Lo       MYANMAR LETTER UU
+ 10FC          ; NFKD_QC; N # Lm       MODIFIER LETTER GEORGIAN NAR
+ 1B06          ; NFKD_QC; N # Lo       BALINESE LETTER AKARA TEDUNG
+ 1B08          ; NFKD_QC; N # Lo       BALINESE LETTER IKARA TEDUNG
+ 1B0A          ; NFKD_QC; N # Lo       BALINESE LETTER UKARA TEDUNG
+ 1B0C          ; NFKD_QC; N # Lo       BALINESE LETTER RA REPA TEDUNG
+ 1B0E          ; NFKD_QC; N # Lo       BALINESE LETTER LA LENGA TEDUNG
+ 1B12          ; NFKD_QC; N # Lo       BALINESE LETTER OKARA TEDUNG
+ 1B3B          ; NFKD_QC; N # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3D          ; NFKD_QC; N # Mc       BALINESE VOWEL SIGN LA LENGA TEDUNG
+ 1B40..1B41    ; NFKD_QC; N # Mc   [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B43          ; NFKD_QC; N # Mc       BALINESE VOWEL SIGN PEPET TEDUNG
+ 1D2C..1D2E    ; NFKD_QC; N # Lm   [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+ 1D30..1D3A    ; NFKD_QC; N # Lm  [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+ 1D3C..1D4D    ; NFKD_QC; N # Lm  [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+ 1D4F..1D6A    ; NFKD_QC; N # Lm  [28] MODIFIER LETTER SMALL K..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D78          ; NFKD_QC; N # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D9B..1DBF    ; NFKD_QC; N # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E00..1E9B    ; NFKD_QC; N # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1EA0..1EF9    ; NFKD_QC; N # L&  [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+ 1F00..1F15    ; NFKD_QC; N # L&  [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; NFKD_QC; N # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; NFKD_QC; N # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; NFKD_QC; N # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; NFKD_QC; N # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; NFKD_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; NFKD_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; NFKD_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; NFKD_QC; N # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; NFKD_QC; N # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; NFKD_QC; N # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBD          ; NFKD_QC; N # Sk       GREEK KORONIS
+ 1FBE          ; NFKD_QC; N # L&       GREEK PROSGEGRAMMENI
+ 1FBF..1FC1    ; NFKD_QC; N # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2..1FC4    ; NFKD_QC; N # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; NFKD_QC; N # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD..1FCF    ; NFKD_QC; N # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD0..1FD3    ; NFKD_QC; N # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; NFKD_QC; N # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; NFKD_QC; N # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE0..1FEC    ; NFKD_QC; N # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED..1FEF    ; NFKD_QC; N # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+ 1FF2..1FF4    ; NFKD_QC; N # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; NFKD_QC; N # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 1FFD..1FFE    ; NFKD_QC; N # Sk   [2] GREEK OXIA..GREEK DASIA
+ 2000..200A    ; NFKD_QC; N # Zs  [11] EN QUAD..HAIR SPACE
+ 2011          ; NFKD_QC; N # Pd       NON-BREAKING HYPHEN
+ 2017          ; NFKD_QC; N # Po       DOUBLE LOW LINE
+ 2024..2026    ; NFKD_QC; N # Po   [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+ 202F          ; NFKD_QC; N # Zs       NARROW NO-BREAK SPACE
+ 2033..2034    ; NFKD_QC; N # Po   [2] DOUBLE PRIME..TRIPLE PRIME
+ 2036..2037    ; NFKD_QC; N # Po   [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+ 203C          ; NFKD_QC; N # Po       DOUBLE EXCLAMATION MARK
+ 203E          ; NFKD_QC; N # Po       OVERLINE
+ 2047..2049    ; NFKD_QC; N # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+ 2057          ; NFKD_QC; N # Po       QUADRUPLE PRIME
+ 205F          ; NFKD_QC; N # Zs       MEDIUM MATHEMATICAL SPACE
+ 2070          ; NFKD_QC; N # No       SUPERSCRIPT ZERO
+ 2071          ; NFKD_QC; N # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 2074..2079    ; NFKD_QC; N # No   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+ 207A..207C    ; NFKD_QC; N # Sm   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+ 207D          ; NFKD_QC; N # Ps       SUPERSCRIPT LEFT PARENTHESIS
+ 207E          ; NFKD_QC; N # Pe       SUPERSCRIPT RIGHT PARENTHESIS
+ 207F          ; NFKD_QC; N # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2080..2089    ; NFKD_QC; N # No  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+ 208A..208C    ; NFKD_QC; N # Sm   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+ 208D          ; NFKD_QC; N # Ps       SUBSCRIPT LEFT PARENTHESIS
+ 208E          ; NFKD_QC; N # Pe       SUBSCRIPT RIGHT PARENTHESIS
+ 2090..209C    ; NFKD_QC; N # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20A8          ; NFKD_QC; N # Sc       RUPEE SIGN
+ 2100..2101    ; NFKD_QC; N # So   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+ 2102          ; NFKD_QC; N # L&       DOUBLE-STRUCK CAPITAL C
+ 2103          ; NFKD_QC; N # So       DEGREE CELSIUS
+ 2105..2106    ; NFKD_QC; N # So   [2] CARE OF..CADA UNA
+ 2107          ; NFKD_QC; N # L&       EULER CONSTANT
+ 2109          ; NFKD_QC; N # So       DEGREE FAHRENHEIT
+ 210A..2113    ; NFKD_QC; N # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; NFKD_QC; N # L&       DOUBLE-STRUCK CAPITAL N
+ 2116          ; NFKD_QC; N # So       NUMERO SIGN
+ 2119..211D    ; NFKD_QC; N # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2120..2122    ; NFKD_QC; N # So   [3] SERVICE MARK..TRADE MARK SIGN
+ 2124          ; NFKD_QC; N # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; NFKD_QC; N # L&       OHM SIGN
+ 2128          ; NFKD_QC; N # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; NFKD_QC; N # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212F..2131    ; NFKD_QC; N # L&   [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+ 2133..2134    ; NFKD_QC; N # L&   [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+ 2135..2138    ; NFKD_QC; N # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; NFKD_QC; N # L&       INFORMATION SOURCE
+ 213B          ; NFKD_QC; N # So       FACSIMILE SIGN
+ 213C..213F    ; NFKD_QC; N # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2140          ; NFKD_QC; N # Sm       DOUBLE-STRUCK N-ARY SUMMATION
+ 2145..2149    ; NFKD_QC; N # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 2150..215F    ; NFKD_QC; N # No  [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+ 2160..217F    ; NFKD_QC; N # Nl  [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2189          ; NFKD_QC; N # No       VULGAR FRACTION ZERO THIRDS
+ 219A..219B    ; NFKD_QC; N # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+ 21AE          ; NFKD_QC; N # Sm       LEFT RIGHT ARROW WITH STROKE
+ 21CD          ; NFKD_QC; N # So       LEFTWARDS DOUBLE ARROW WITH STROKE
+ 21CE..21CF    ; NFKD_QC; N # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+ 2204          ; NFKD_QC; N # Sm       THERE DOES NOT EXIST
+ 2209          ; NFKD_QC; N # Sm       NOT AN ELEMENT OF
+ 220C          ; NFKD_QC; N # Sm       DOES NOT CONTAIN AS MEMBER
+ 2224          ; NFKD_QC; N # Sm       DOES NOT DIVIDE
+ 2226          ; NFKD_QC; N # Sm       NOT PARALLEL TO
+ 222C..222D    ; NFKD_QC; N # Sm   [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+ 222F..2230    ; NFKD_QC; N # Sm   [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+ 2241          ; NFKD_QC; N # Sm       NOT TILDE
+ 2244          ; NFKD_QC; N # Sm       NOT ASYMPTOTICALLY EQUAL TO
+ 2247          ; NFKD_QC; N # Sm       NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+ 2249          ; NFKD_QC; N # Sm       NOT ALMOST EQUAL TO
+ 2260          ; NFKD_QC; N # Sm       NOT EQUAL TO
+ 2262          ; NFKD_QC; N # Sm       NOT IDENTICAL TO
+ 226D..2271    ; NFKD_QC; N # Sm   [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+ 2274..2275    ; NFKD_QC; N # Sm   [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+ 2278..2279    ; NFKD_QC; N # Sm   [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+ 2280..2281    ; NFKD_QC; N # Sm   [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+ 2284..2285    ; NFKD_QC; N # Sm   [2] NOT A SUBSET OF..NOT A SUPERSET OF
+ 2288..2289    ; NFKD_QC; N # Sm   [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+ 22AC..22AF    ; NFKD_QC; N # Sm   [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ 22E0..22E3    ; NFKD_QC; N # Sm   [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+ 22EA..22ED    ; NFKD_QC; N # Sm   [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ 2329          ; NFKD_QC; N # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; NFKD_QC; N # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2460..249B    ; NFKD_QC; N # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+ 249C..24E9    ; NFKD_QC; N # So  [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 24EA          ; NFKD_QC; N # No       CIRCLED DIGIT ZERO
+ 2A0C          ; NFKD_QC; N # Sm       QUADRUPLE INTEGRAL OPERATOR
+ 2A74..2A76    ; NFKD_QC; N # Sm   [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+ 2ADC          ; NFKD_QC; N # Sm       FORKING
+ 2C7C..2C7D    ; NFKD_QC; N # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2D6F          ; NFKD_QC; N # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2E9F          ; NFKD_QC; N # So       CJK RADICAL MOTHER
+ 2EF3          ; NFKD_QC; N # So       CJK RADICAL C-SIMPLIFIED TURTLE
+ 2F00..2FD5    ; NFKD_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+ 3000          ; NFKD_QC; N # Zs       IDEOGRAPHIC SPACE
+ 3036          ; NFKD_QC; N # So       CIRCLED POSTAL MARK
+ 3038..303A    ; NFKD_QC; N # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 304C          ; NFKD_QC; N # Lo       HIRAGANA LETTER GA
+ 304E          ; NFKD_QC; N # Lo       HIRAGANA LETTER GI
+ 3050          ; NFKD_QC; N # Lo       HIRAGANA LETTER GU
+ 3052          ; NFKD_QC; N # Lo       HIRAGANA LETTER GE
+ 3054          ; NFKD_QC; N # Lo       HIRAGANA LETTER GO
+ 3056          ; NFKD_QC; N # Lo       HIRAGANA LETTER ZA
+ 3058          ; NFKD_QC; N # Lo       HIRAGANA LETTER ZI
+ 305A          ; NFKD_QC; N # Lo       HIRAGANA LETTER ZU
+ 305C          ; NFKD_QC; N # Lo       HIRAGANA LETTER ZE
+ 305E          ; NFKD_QC; N # Lo       HIRAGANA LETTER ZO
+ 3060          ; NFKD_QC; N # Lo       HIRAGANA LETTER DA
+ 3062          ; NFKD_QC; N # Lo       HIRAGANA LETTER DI
+ 3065          ; NFKD_QC; N # Lo       HIRAGANA LETTER DU
+ 3067          ; NFKD_QC; N # Lo       HIRAGANA LETTER DE
+ 3069          ; NFKD_QC; N # Lo       HIRAGANA LETTER DO
+ 3070..3071    ; NFKD_QC; N # Lo   [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+ 3073..3074    ; NFKD_QC; N # Lo   [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+ 3076..3077    ; NFKD_QC; N # Lo   [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+ 3079..307A    ; NFKD_QC; N # Lo   [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+ 307C..307D    ; NFKD_QC; N # Lo   [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+ 3094          ; NFKD_QC; N # Lo       HIRAGANA LETTER VU
+ 309B..309C    ; NFKD_QC; N # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309E          ; NFKD_QC; N # Lm       HIRAGANA VOICED ITERATION MARK
+ 309F          ; NFKD_QC; N # Lo       HIRAGANA DIGRAPH YORI
+ 30AC          ; NFKD_QC; N # Lo       KATAKANA LETTER GA
+ 30AE          ; NFKD_QC; N # Lo       KATAKANA LETTER GI
+ 30B0          ; NFKD_QC; N # Lo       KATAKANA LETTER GU
+ 30B2          ; NFKD_QC; N # Lo       KATAKANA LETTER GE
+ 30B4          ; NFKD_QC; N # Lo       KATAKANA LETTER GO
+ 30B6          ; NFKD_QC; N # Lo       KATAKANA LETTER ZA
+ 30B8          ; NFKD_QC; N # Lo       KATAKANA LETTER ZI
+ 30BA          ; NFKD_QC; N # Lo       KATAKANA LETTER ZU
+ 30BC          ; NFKD_QC; N # Lo       KATAKANA LETTER ZE
+ 30BE          ; NFKD_QC; N # Lo       KATAKANA LETTER ZO
+ 30C0          ; NFKD_QC; N # Lo       KATAKANA LETTER DA
+ 30C2          ; NFKD_QC; N # Lo       KATAKANA LETTER DI
+ 30C5          ; NFKD_QC; N # Lo       KATAKANA LETTER DU
+ 30C7          ; NFKD_QC; N # Lo       KATAKANA LETTER DE
+ 30C9          ; NFKD_QC; N # Lo       KATAKANA LETTER DO
+ 30D0..30D1    ; NFKD_QC; N # Lo   [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+ 30D3..30D4    ; NFKD_QC; N # Lo   [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+ 30D6..30D7    ; NFKD_QC; N # Lo   [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+ 30D9..30DA    ; NFKD_QC; N # Lo   [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+ 30DC..30DD    ; NFKD_QC; N # Lo   [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+ 30F4          ; NFKD_QC; N # Lo       KATAKANA LETTER VU
+ 30F7..30FA    ; NFKD_QC; N # Lo   [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+ 30FE          ; NFKD_QC; N # Lm       KATAKANA VOICED ITERATION MARK
+ 30FF          ; NFKD_QC; N # Lo       KATAKANA DIGRAPH KOTO
+ 3131..318E    ; NFKD_QC; N # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 3192..3195    ; NFKD_QC; N # No   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+ 3196..319F    ; NFKD_QC; N # So  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+ 3200..321E    ; NFKD_QC; N # So  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+ 3220..3229    ; NFKD_QC; N # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+ 322A..3247    ; NFKD_QC; N # So  [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+ 3250          ; NFKD_QC; N # So       PARTNERSHIP SIGN
+ 3251..325F    ; NFKD_QC; N # No  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+ 3260..327E    ; NFKD_QC; N # So  [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+ 3280..3289    ; NFKD_QC; N # No  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+ 328A..32B0    ; NFKD_QC; N # So  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+ 32B1..32BF    ; NFKD_QC; N # No  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+ 32C0..33FF    ; NFKD_QC; N # So [320] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE GAL
+ A69C..A69D    ; NFKD_QC; N # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A770          ; NFKD_QC; N # Lm       MODIFIER LETTER US
+ A7F2..A7F4    ; NFKD_QC; N # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F8..A7F9    ; NFKD_QC; N # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ AB5C..AB5F    ; NFKD_QC; N # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; NFKD_QC; N # Lm       MODIFIER LETTER SMALL TURNED W
+ AC00..D7A3    ; NFKD_QC; N # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ F900..FA0D    ; NFKD_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; NFKD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; NFKD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15..FA1E    ; NFKD_QC; N # Lo  [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; NFKD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; NFKD_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25..FA26    ; NFKD_QC; N # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A..FA6D    ; NFKD_QC; N # Lo  [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; NFKD_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; NFKD_QC; N # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; NFKD_QC; N # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; NFKD_QC; N # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F..FB28    ; NFKD_QC; N # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB29          ; NFKD_QC; N # Sm       HEBREW LETTER ALTERNATIVE PLUS SIGN
+ FB2A..FB36    ; NFKD_QC; N # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; NFKD_QC; N # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; NFKD_QC; N # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; NFKD_QC; N # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; NFKD_QC; N # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; NFKD_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FD3D    ; NFKD_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; NFKD_QC; N # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; NFKD_QC; N # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; NFKD_QC; N # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; NFKD_QC; N # Sc       RIAL SIGN
+ FE10..FE16    ; NFKD_QC; N # Po   [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+ FE17          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+ FE18          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+ FE19          ; NFKD_QC; N # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; NFKD_QC; N # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE31..FE32    ; NFKD_QC; N # Pd   [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+ FE33..FE34    ; NFKD_QC; N # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE35          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+ FE36          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+ FE37          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+ FE38          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+ FE39          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+ FE3A          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+ FE3B          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+ FE3C          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+ FE3D          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+ FE3E          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+ FE3F          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+ FE40          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+ FE41          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+ FE42          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+ FE43          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+ FE44          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+ FE47          ; NFKD_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+ FE48          ; NFKD_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+ FE49..FE4C    ; NFKD_QC; N # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE4D..FE4F    ; NFKD_QC; N # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE50..FE52    ; NFKD_QC; N # Po   [3] SMALL COMMA..SMALL FULL STOP
+ FE54..FE57    ; NFKD_QC; N # Po   [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+ FE58          ; NFKD_QC; N # Pd       SMALL EM DASH
+ FE59          ; NFKD_QC; N # Ps       SMALL LEFT PARENTHESIS
+ FE5A          ; NFKD_QC; N # Pe       SMALL RIGHT PARENTHESIS
+ FE5B          ; NFKD_QC; N # Ps       SMALL LEFT CURLY BRACKET
+ FE5C          ; NFKD_QC; N # Pe       SMALL RIGHT CURLY BRACKET
+ FE5D          ; NFKD_QC; N # Ps       SMALL LEFT TORTOISE SHELL BRACKET
+ FE5E          ; NFKD_QC; N # Pe       SMALL RIGHT TORTOISE SHELL BRACKET
+ FE5F..FE61    ; NFKD_QC; N # Po   [3] SMALL NUMBER SIGN..SMALL ASTERISK
+ FE62          ; NFKD_QC; N # Sm       SMALL PLUS SIGN
+ FE63          ; NFKD_QC; N # Pd       SMALL HYPHEN-MINUS
+ FE64..FE66    ; NFKD_QC; N # Sm   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+ FE68          ; NFKD_QC; N # Po       SMALL REVERSE SOLIDUS
+ FE69          ; NFKD_QC; N # Sc       SMALL DOLLAR SIGN
+ FE6A..FE6B    ; NFKD_QC; N # Po   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+ FE70..FE72    ; NFKD_QC; N # Lo   [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+ FE74          ; NFKD_QC; N # Lo       ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; NFKD_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF01..FF03    ; NFKD_QC; N # Po   [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+ FF04          ; NFKD_QC; N # Sc       FULLWIDTH DOLLAR SIGN
+ FF05..FF07    ; NFKD_QC; N # Po   [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+ FF08          ; NFKD_QC; N # Ps       FULLWIDTH LEFT PARENTHESIS
+ FF09          ; NFKD_QC; N # Pe       FULLWIDTH RIGHT PARENTHESIS
+ FF0A          ; NFKD_QC; N # Po       FULLWIDTH ASTERISK
+ FF0B          ; NFKD_QC; N # Sm       FULLWIDTH PLUS SIGN
+ FF0C          ; NFKD_QC; N # Po       FULLWIDTH COMMA
+ FF0D          ; NFKD_QC; N # Pd       FULLWIDTH HYPHEN-MINUS
+ FF0E..FF0F    ; NFKD_QC; N # Po   [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+ FF10..FF19    ; NFKD_QC; N # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ FF1A..FF1B    ; NFKD_QC; N # Po   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+ FF1C..FF1E    ; NFKD_QC; N # Sm   [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+ FF1F..FF20    ; NFKD_QC; N # Po   [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+ FF21..FF3A    ; NFKD_QC; N # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3B          ; NFKD_QC; N # Ps       FULLWIDTH LEFT SQUARE BRACKET
+ FF3C          ; NFKD_QC; N # Po       FULLWIDTH REVERSE SOLIDUS
+ FF3D          ; NFKD_QC; N # Pe       FULLWIDTH RIGHT SQUARE BRACKET
+ FF3E          ; NFKD_QC; N # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF3F          ; NFKD_QC; N # Pc       FULLWIDTH LOW LINE
+ FF40          ; NFKD_QC; N # Sk       FULLWIDTH GRAVE ACCENT
+ FF41..FF5A    ; NFKD_QC; N # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF5B          ; NFKD_QC; N # Ps       FULLWIDTH LEFT CURLY BRACKET
+ FF5C          ; NFKD_QC; N # Sm       FULLWIDTH VERTICAL LINE
+ FF5D          ; NFKD_QC; N # Pe       FULLWIDTH RIGHT CURLY BRACKET
+ FF5E          ; NFKD_QC; N # Sm       FULLWIDTH TILDE
+ FF5F          ; NFKD_QC; N # Ps       FULLWIDTH LEFT WHITE PARENTHESIS
+ FF60          ; NFKD_QC; N # Pe       FULLWIDTH RIGHT WHITE PARENTHESIS
+ FF61          ; NFKD_QC; N # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
+ FF62          ; NFKD_QC; N # Ps       HALFWIDTH LEFT CORNER BRACKET
+ FF63          ; NFKD_QC; N # Pe       HALFWIDTH RIGHT CORNER BRACKET
+ FF64..FF65    ; NFKD_QC; N # Po   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+ FF66..FF6F    ; NFKD_QC; N # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; NFKD_QC; N # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; NFKD_QC; N # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; NFKD_QC; N # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; NFKD_QC; N # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; NFKD_QC; N # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; NFKD_QC; N # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; NFKD_QC; N # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; NFKD_QC; N # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ FFE0..FFE1    ; NFKD_QC; N # Sc   [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+ FFE2          ; NFKD_QC; N # Sm       FULLWIDTH NOT SIGN
+ FFE3          ; NFKD_QC; N # Sk       FULLWIDTH MACRON
+ FFE4          ; NFKD_QC; N # So       FULLWIDTH BROKEN BAR
+ FFE5..FFE6    ; NFKD_QC; N # Sc   [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+ FFE8          ; NFKD_QC; N # So       HALFWIDTH FORMS LIGHT VERTICAL
+ FFE9..FFEC    ; NFKD_QC; N # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+ FFED..FFEE    ; NFKD_QC; N # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+ 10781..10785  ; NFKD_QC; N # Lm   [5] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; NFKD_QC; N # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; NFKD_QC; N # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 1109A         ; NFKD_QC; N # Lo       KAITHI LETTER DDDHA
+ 1109C         ; NFKD_QC; N # Lo       KAITHI LETTER RHA
+ 110AB         ; NFKD_QC; N # Lo       KAITHI LETTER VA
+ 1112E..1112F  ; NFKD_QC; N # Mn   [2] CHAKMA VOWEL SIGN O..CHAKMA VOWEL SIGN AU
+ 1134B..1134C  ; NFKD_QC; N # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
+ 114BB..114BC  ; NFKD_QC; N # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+ 114BE         ; NFKD_QC; N # Mc       TIRHUTA VOWEL SIGN AU
+ 115BA..115BB  ; NFKD_QC; N # Mc   [2] SIDDHAM VOWEL SIGN O..SIDDHAM VOWEL SIGN AU
+ 11938         ; NFKD_QC; N # Mc       DIVES AKURU VOWEL SIGN O
+ 1D15E..1D164  ; NFKD_QC; N # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; NFKD_QC; N # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 1D400..1D454  ; NFKD_QC; N # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; NFKD_QC; N # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; NFKD_QC; N # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; NFKD_QC; N # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; NFKD_QC; N # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; NFKD_QC; N # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; NFKD_QC; N # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; NFKD_QC; N # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; NFKD_QC; N # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; NFKD_QC; N # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; NFKD_QC; N # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; NFKD_QC; N # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; NFKD_QC; N # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; NFKD_QC; N # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; NFKD_QC; N # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; NFKD_QC; N # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; NFKD_QC; N # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; NFKD_QC; N # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; NFKD_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; NFKD_QC; N # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C1         ; NFKD_QC; N # Sm       MATHEMATICAL BOLD NABLA
+ 1D6C2..1D6DA  ; NFKD_QC; N # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DB         ; NFKD_QC; N # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ 1D6DC..1D6FA  ; NFKD_QC; N # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FB         ; NFKD_QC; N # Sm       MATHEMATICAL ITALIC NABLA
+ 1D6FC..1D714  ; NFKD_QC; N # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D715         ; NFKD_QC; N # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ 1D716..1D734  ; NFKD_QC; N # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D735         ; NFKD_QC; N # Sm       MATHEMATICAL BOLD ITALIC NABLA
+ 1D736..1D74E  ; NFKD_QC; N # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D74F         ; NFKD_QC; N # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D750..1D76E  ; NFKD_QC; N # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D76F         ; NFKD_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
+ 1D770..1D788  ; NFKD_QC; N # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D789         ; NFKD_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ 1D78A..1D7A8  ; NFKD_QC; N # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7A9         ; NFKD_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ 1D7AA..1D7C2  ; NFKD_QC; N # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C3         ; NFKD_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D7C4..1D7CB  ; NFKD_QC; N # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; NFKD_QC; N # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1E030..1E06D  ; NFKD_QC; N # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1EE00..1EE03  ; NFKD_QC; N # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; NFKD_QC; N # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; NFKD_QC; N # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; NFKD_QC; N # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; NFKD_QC; N # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; NFKD_QC; N # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; NFKD_QC; N # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; NFKD_QC; N # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; NFKD_QC; N # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; NFKD_QC; N # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; NFKD_QC; N # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; NFKD_QC; N # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; NFKD_QC; N # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; NFKD_QC; N # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; NFKD_QC; N # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; NFKD_QC; N # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; NFKD_QC; N # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; NFKD_QC; N # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1F100..1F10A  ; NFKD_QC; N # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
+ 1F110..1F12E  ; NFKD_QC; N # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
+ 1F130..1F14F  ; NFKD_QC; N # So  [32] SQUARED LATIN CAPITAL LETTER A..SQUARED WC
+ 1F16A..1F16C  ; NFKD_QC; N # So   [3] RAISED MC SIGN..RAISED MR SIGN
+ 1F190         ; NFKD_QC; N # So       SQUARE DJ
+ 1F200..1F202  ; NFKD_QC; N # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
+ 1F210..1F23B  ; NFKD_QC; N # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+ 1F240..1F248  ; NFKD_QC; N # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 1F250..1F251  ; NFKD_QC; N # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+ 1FBF0..1FBF9  ; NFKD_QC; N # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+ 2F800..2FA1D  ; NFKD_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 
+ # Total code points: 17029
+ 
+ # ================================================
+ 
+ # Property:	NFKC_Quick_Check
+ 
+ #  All code points not explicitly listed for NFKC_Quick_Check
+ #  have the value Yes (Y).
+ 
+ # @missing: 0000..10FFFF; NFKC_QC; Yes
+ 
+ # ================================================
+ 
+ # NFKC_Quick_Check=No
+ 
+ 00A0          ; NFKC_QC; N # Zs       NO-BREAK SPACE
+ 00A8          ; NFKC_QC; N # Sk       DIAERESIS
+ 00AA          ; NFKC_QC; N # Lo       FEMININE ORDINAL INDICATOR
+ 00AF          ; NFKC_QC; N # Sk       MACRON
+ 00B2..00B3    ; NFKC_QC; N # No   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+ 00B4          ; NFKC_QC; N # Sk       ACUTE ACCENT
+ 00B5          ; NFKC_QC; N # L&       MICRO SIGN
+ 00B8          ; NFKC_QC; N # Sk       CEDILLA
+ 00B9          ; NFKC_QC; N # No       SUPERSCRIPT ONE
+ 00BA          ; NFKC_QC; N # Lo       MASCULINE ORDINAL INDICATOR
+ 00BC..00BE    ; NFKC_QC; N # No   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+ 0132..0133    ; NFKC_QC; N # L&   [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+ 013F..0140    ; NFKC_QC; N # L&   [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0149          ; NFKC_QC; N # L&       LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 017F          ; NFKC_QC; N # L&       LATIN SMALL LETTER LONG S
+ 01C4..01CC    ; NFKC_QC; N # L&   [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+ 01F1..01F3    ; NFKC_QC; N # L&   [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+ 02B0..02B8    ; NFKC_QC; N # Lm   [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+ 02D8..02DD    ; NFKC_QC; N # Sk   [6] BREVE..DOUBLE ACUTE ACCENT
+ 02E0..02E4    ; NFKC_QC; N # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 0340..0341    ; NFKC_QC; N # Mn   [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+ 0343..0344    ; NFKC_QC; N # Mn   [2] COMBINING GREEK KORONIS..COMBINING GREEK DIALYTIKA TONOS
+ 0374          ; NFKC_QC; N # Lm       GREEK NUMERAL SIGN
+ 037A          ; NFKC_QC; N # Lm       GREEK YPOGEGRAMMENI
+ 037E          ; NFKC_QC; N # Po       GREEK QUESTION MARK
+ 0384..0385    ; NFKC_QC; N # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0387          ; NFKC_QC; N # Po       GREEK ANO TELEIA
+ 03D0..03D6    ; NFKC_QC; N # L&   [7] GREEK BETA SYMBOL..GREEK PI SYMBOL
+ 03F0..03F2    ; NFKC_QC; N # L&   [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+ 03F4..03F5    ; NFKC_QC; N # L&   [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+ 03F9          ; NFKC_QC; N # L&       GREEK CAPITAL LUNATE SIGMA SYMBOL
+ 0587          ; NFKC_QC; N # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 0675..0678    ; NFKC_QC; N # Lo   [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+ 0958..095F    ; NFKC_QC; N # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09DC..09DD    ; NFKC_QC; N # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; NFKC_QC; N # Lo       BENGALI LETTER YYA
+ 0A33          ; NFKC_QC; N # Lo       GURMUKHI LETTER LLA
+ 0A36          ; NFKC_QC; N # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; NFKC_QC; N # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; NFKC_QC; N # Lo       GURMUKHI LETTER FA
+ 0B5C..0B5D    ; NFKC_QC; N # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0E33          ; NFKC_QC; N # Lo       THAI CHARACTER SARA AM
+ 0EB3          ; NFKC_QC; N # Lo       LAO VOWEL SIGN AM
+ 0EDC..0EDD    ; NFKC_QC; N # Lo   [2] LAO HO NO..LAO HO MO
+ 0F0C          ; NFKC_QC; N # Po       TIBETAN MARK DELIMITER TSHEG BSTAR
+ 0F43          ; NFKC_QC; N # Lo       TIBETAN LETTER GHA
+ 0F4D          ; NFKC_QC; N # Lo       TIBETAN LETTER DDHA
+ 0F52          ; NFKC_QC; N # Lo       TIBETAN LETTER DHA
+ 0F57          ; NFKC_QC; N # Lo       TIBETAN LETTER BHA
+ 0F5C          ; NFKC_QC; N # Lo       TIBETAN LETTER DZHA
+ 0F69          ; NFKC_QC; N # Lo       TIBETAN LETTER KSSA
+ 0F73          ; NFKC_QC; N # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F79    ; NFKC_QC; N # Mn   [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+ 0F81          ; NFKC_QC; N # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; NFKC_QC; N # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; NFKC_QC; N # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; NFKC_QC; N # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; NFKC_QC; N # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; NFKC_QC; N # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; NFKC_QC; N # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 10FC          ; NFKC_QC; N # Lm       MODIFIER LETTER GEORGIAN NAR
+ 1D2C..1D2E    ; NFKC_QC; N # Lm   [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+ 1D30..1D3A    ; NFKC_QC; N # Lm  [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+ 1D3C..1D4D    ; NFKC_QC; N # Lm  [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+ 1D4F..1D6A    ; NFKC_QC; N # Lm  [28] MODIFIER LETTER SMALL K..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D78          ; NFKC_QC; N # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D9B..1DBF    ; NFKC_QC; N # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E9A..1E9B    ; NFKC_QC; N # L&   [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1F71          ; NFKC_QC; N # L&       GREEK SMALL LETTER ALPHA WITH OXIA
+ 1F73          ; NFKC_QC; N # L&       GREEK SMALL LETTER EPSILON WITH OXIA
+ 1F75          ; NFKC_QC; N # L&       GREEK SMALL LETTER ETA WITH OXIA
+ 1F77          ; NFKC_QC; N # L&       GREEK SMALL LETTER IOTA WITH OXIA
+ 1F79          ; NFKC_QC; N # L&       GREEK SMALL LETTER OMICRON WITH OXIA
+ 1F7B          ; NFKC_QC; N # L&       GREEK SMALL LETTER UPSILON WITH OXIA
+ 1F7D          ; NFKC_QC; N # L&       GREEK SMALL LETTER OMEGA WITH OXIA
+ 1FBB          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER ALPHA WITH OXIA
+ 1FBD          ; NFKC_QC; N # Sk       GREEK KORONIS
+ 1FBE          ; NFKC_QC; N # L&       GREEK PROSGEGRAMMENI
+ 1FBF..1FC1    ; NFKC_QC; N # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FC9          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER EPSILON WITH OXIA
+ 1FCB          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER ETA WITH OXIA
+ 1FCD..1FCF    ; NFKC_QC; N # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD3          ; NFKC_QC; N # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FDB          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; NFKC_QC; N # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE3          ; NFKC_QC; N # L&       GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ 1FEB          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER UPSILON WITH OXIA
+ 1FED..1FEF    ; NFKC_QC; N # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+ 1FF9          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER OMICRON WITH OXIA
+ 1FFB          ; NFKC_QC; N # L&       GREEK CAPITAL LETTER OMEGA WITH OXIA
+ 1FFD..1FFE    ; NFKC_QC; N # Sk   [2] GREEK OXIA..GREEK DASIA
+ 2000..200A    ; NFKC_QC; N # Zs  [11] EN QUAD..HAIR SPACE
+ 2011          ; NFKC_QC; N # Pd       NON-BREAKING HYPHEN
+ 2017          ; NFKC_QC; N # Po       DOUBLE LOW LINE
+ 2024..2026    ; NFKC_QC; N # Po   [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+ 202F          ; NFKC_QC; N # Zs       NARROW NO-BREAK SPACE
+ 2033..2034    ; NFKC_QC; N # Po   [2] DOUBLE PRIME..TRIPLE PRIME
+ 2036..2037    ; NFKC_QC; N # Po   [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+ 203C          ; NFKC_QC; N # Po       DOUBLE EXCLAMATION MARK
+ 203E          ; NFKC_QC; N # Po       OVERLINE
+ 2047..2049    ; NFKC_QC; N # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+ 2057          ; NFKC_QC; N # Po       QUADRUPLE PRIME
+ 205F          ; NFKC_QC; N # Zs       MEDIUM MATHEMATICAL SPACE
+ 2070          ; NFKC_QC; N # No       SUPERSCRIPT ZERO
+ 2071          ; NFKC_QC; N # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 2074..2079    ; NFKC_QC; N # No   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+ 207A..207C    ; NFKC_QC; N # Sm   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+ 207D          ; NFKC_QC; N # Ps       SUPERSCRIPT LEFT PARENTHESIS
+ 207E          ; NFKC_QC; N # Pe       SUPERSCRIPT RIGHT PARENTHESIS
+ 207F          ; NFKC_QC; N # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2080..2089    ; NFKC_QC; N # No  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+ 208A..208C    ; NFKC_QC; N # Sm   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+ 208D          ; NFKC_QC; N # Ps       SUBSCRIPT LEFT PARENTHESIS
+ 208E          ; NFKC_QC; N # Pe       SUBSCRIPT RIGHT PARENTHESIS
+ 2090..209C    ; NFKC_QC; N # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20A8          ; NFKC_QC; N # Sc       RUPEE SIGN
+ 2100..2101    ; NFKC_QC; N # So   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+ 2102          ; NFKC_QC; N # L&       DOUBLE-STRUCK CAPITAL C
+ 2103          ; NFKC_QC; N # So       DEGREE CELSIUS
+ 2105..2106    ; NFKC_QC; N # So   [2] CARE OF..CADA UNA
+ 2107          ; NFKC_QC; N # L&       EULER CONSTANT
+ 2109          ; NFKC_QC; N # So       DEGREE FAHRENHEIT
+ 210A..2113    ; NFKC_QC; N # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; NFKC_QC; N # L&       DOUBLE-STRUCK CAPITAL N
+ 2116          ; NFKC_QC; N # So       NUMERO SIGN
+ 2119..211D    ; NFKC_QC; N # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2120..2122    ; NFKC_QC; N # So   [3] SERVICE MARK..TRADE MARK SIGN
+ 2124          ; NFKC_QC; N # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; NFKC_QC; N # L&       OHM SIGN
+ 2128          ; NFKC_QC; N # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; NFKC_QC; N # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212F..2131    ; NFKC_QC; N # L&   [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+ 2133..2134    ; NFKC_QC; N # L&   [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+ 2135..2138    ; NFKC_QC; N # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; NFKC_QC; N # L&       INFORMATION SOURCE
+ 213B          ; NFKC_QC; N # So       FACSIMILE SIGN
+ 213C..213F    ; NFKC_QC; N # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2140          ; NFKC_QC; N # Sm       DOUBLE-STRUCK N-ARY SUMMATION
+ 2145..2149    ; NFKC_QC; N # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 2150..215F    ; NFKC_QC; N # No  [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+ 2160..217F    ; NFKC_QC; N # Nl  [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2189          ; NFKC_QC; N # No       VULGAR FRACTION ZERO THIRDS
+ 222C..222D    ; NFKC_QC; N # Sm   [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+ 222F..2230    ; NFKC_QC; N # Sm   [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+ 2329          ; NFKC_QC; N # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; NFKC_QC; N # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2460..249B    ; NFKC_QC; N # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+ 249C..24E9    ; NFKC_QC; N # So  [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 24EA          ; NFKC_QC; N # No       CIRCLED DIGIT ZERO
+ 2A0C          ; NFKC_QC; N # Sm       QUADRUPLE INTEGRAL OPERATOR
+ 2A74..2A76    ; NFKC_QC; N # Sm   [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+ 2ADC          ; NFKC_QC; N # Sm       FORKING
+ 2C7C..2C7D    ; NFKC_QC; N # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2D6F          ; NFKC_QC; N # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2E9F          ; NFKC_QC; N # So       CJK RADICAL MOTHER
+ 2EF3          ; NFKC_QC; N # So       CJK RADICAL C-SIMPLIFIED TURTLE
+ 2F00..2FD5    ; NFKC_QC; N # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+ 3000          ; NFKC_QC; N # Zs       IDEOGRAPHIC SPACE
+ 3036          ; NFKC_QC; N # So       CIRCLED POSTAL MARK
+ 3038..303A    ; NFKC_QC; N # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 309B..309C    ; NFKC_QC; N # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309F          ; NFKC_QC; N # Lo       HIRAGANA DIGRAPH YORI
+ 30FF          ; NFKC_QC; N # Lo       KATAKANA DIGRAPH KOTO
+ 3131..318E    ; NFKC_QC; N # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 3192..3195    ; NFKC_QC; N # No   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+ 3196..319F    ; NFKC_QC; N # So  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+ 3200..321E    ; NFKC_QC; N # So  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+ 3220..3229    ; NFKC_QC; N # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+ 322A..3247    ; NFKC_QC; N # So  [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+ 3250          ; NFKC_QC; N # So       PARTNERSHIP SIGN
+ 3251..325F    ; NFKC_QC; N # No  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+ 3260..327E    ; NFKC_QC; N # So  [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+ 3280..3289    ; NFKC_QC; N # No  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+ 328A..32B0    ; NFKC_QC; N # So  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+ 32B1..32BF    ; NFKC_QC; N # No  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+ 32C0..33FF    ; NFKC_QC; N # So [320] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE GAL
+ A69C..A69D    ; NFKC_QC; N # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A770          ; NFKC_QC; N # Lm       MODIFIER LETTER US
+ A7F2..A7F4    ; NFKC_QC; N # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F8..A7F9    ; NFKC_QC; N # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ AB5C..AB5F    ; NFKC_QC; N # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; NFKC_QC; N # Lm       MODIFIER LETTER SMALL TURNED W
+ F900..FA0D    ; NFKC_QC; N # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; NFKC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; NFKC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15..FA1E    ; NFKC_QC; N # Lo  [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; NFKC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; NFKC_QC; N # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25..FA26    ; NFKC_QC; N # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A..FA6D    ; NFKC_QC; N # Lo  [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; NFKC_QC; N # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; NFKC_QC; N # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; NFKC_QC; N # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; NFKC_QC; N # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F..FB28    ; NFKC_QC; N # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB29          ; NFKC_QC; N # Sm       HEBREW LETTER ALTERNATIVE PLUS SIGN
+ FB2A..FB36    ; NFKC_QC; N # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; NFKC_QC; N # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; NFKC_QC; N # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; NFKC_QC; N # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; NFKC_QC; N # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; NFKC_QC; N # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FD3D    ; NFKC_QC; N # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; NFKC_QC; N # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; NFKC_QC; N # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; NFKC_QC; N # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; NFKC_QC; N # Sc       RIAL SIGN
+ FE10..FE16    ; NFKC_QC; N # Po   [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+ FE17          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+ FE18          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+ FE19          ; NFKC_QC; N # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; NFKC_QC; N # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE31..FE32    ; NFKC_QC; N # Pd   [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+ FE33..FE34    ; NFKC_QC; N # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE35          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+ FE36          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+ FE37          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+ FE38          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+ FE39          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+ FE3A          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+ FE3B          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+ FE3C          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+ FE3D          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+ FE3E          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+ FE3F          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+ FE40          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+ FE41          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+ FE42          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+ FE43          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+ FE44          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+ FE47          ; NFKC_QC; N # Ps       PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+ FE48          ; NFKC_QC; N # Pe       PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+ FE49..FE4C    ; NFKC_QC; N # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE4D..FE4F    ; NFKC_QC; N # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE50..FE52    ; NFKC_QC; N # Po   [3] SMALL COMMA..SMALL FULL STOP
+ FE54..FE57    ; NFKC_QC; N # Po   [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+ FE58          ; NFKC_QC; N # Pd       SMALL EM DASH
+ FE59          ; NFKC_QC; N # Ps       SMALL LEFT PARENTHESIS
+ FE5A          ; NFKC_QC; N # Pe       SMALL RIGHT PARENTHESIS
+ FE5B          ; NFKC_QC; N # Ps       SMALL LEFT CURLY BRACKET
+ FE5C          ; NFKC_QC; N # Pe       SMALL RIGHT CURLY BRACKET
+ FE5D          ; NFKC_QC; N # Ps       SMALL LEFT TORTOISE SHELL BRACKET
+ FE5E          ; NFKC_QC; N # Pe       SMALL RIGHT TORTOISE SHELL BRACKET
+ FE5F..FE61    ; NFKC_QC; N # Po   [3] SMALL NUMBER SIGN..SMALL ASTERISK
+ FE62          ; NFKC_QC; N # Sm       SMALL PLUS SIGN
+ FE63          ; NFKC_QC; N # Pd       SMALL HYPHEN-MINUS
+ FE64..FE66    ; NFKC_QC; N # Sm   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+ FE68          ; NFKC_QC; N # Po       SMALL REVERSE SOLIDUS
+ FE69          ; NFKC_QC; N # Sc       SMALL DOLLAR SIGN
+ FE6A..FE6B    ; NFKC_QC; N # Po   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+ FE70..FE72    ; NFKC_QC; N # Lo   [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+ FE74          ; NFKC_QC; N # Lo       ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; NFKC_QC; N # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FF01..FF03    ; NFKC_QC; N # Po   [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+ FF04          ; NFKC_QC; N # Sc       FULLWIDTH DOLLAR SIGN
+ FF05..FF07    ; NFKC_QC; N # Po   [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+ FF08          ; NFKC_QC; N # Ps       FULLWIDTH LEFT PARENTHESIS
+ FF09          ; NFKC_QC; N # Pe       FULLWIDTH RIGHT PARENTHESIS
+ FF0A          ; NFKC_QC; N # Po       FULLWIDTH ASTERISK
+ FF0B          ; NFKC_QC; N # Sm       FULLWIDTH PLUS SIGN
+ FF0C          ; NFKC_QC; N # Po       FULLWIDTH COMMA
+ FF0D          ; NFKC_QC; N # Pd       FULLWIDTH HYPHEN-MINUS
+ FF0E..FF0F    ; NFKC_QC; N # Po   [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+ FF10..FF19    ; NFKC_QC; N # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ FF1A..FF1B    ; NFKC_QC; N # Po   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+ FF1C..FF1E    ; NFKC_QC; N # Sm   [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+ FF1F..FF20    ; NFKC_QC; N # Po   [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+ FF21..FF3A    ; NFKC_QC; N # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3B          ; NFKC_QC; N # Ps       FULLWIDTH LEFT SQUARE BRACKET
+ FF3C          ; NFKC_QC; N # Po       FULLWIDTH REVERSE SOLIDUS
+ FF3D          ; NFKC_QC; N # Pe       FULLWIDTH RIGHT SQUARE BRACKET
+ FF3E          ; NFKC_QC; N # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF3F          ; NFKC_QC; N # Pc       FULLWIDTH LOW LINE
+ FF40          ; NFKC_QC; N # Sk       FULLWIDTH GRAVE ACCENT
+ FF41..FF5A    ; NFKC_QC; N # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF5B          ; NFKC_QC; N # Ps       FULLWIDTH LEFT CURLY BRACKET
+ FF5C          ; NFKC_QC; N # Sm       FULLWIDTH VERTICAL LINE
+ FF5D          ; NFKC_QC; N # Pe       FULLWIDTH RIGHT CURLY BRACKET
+ FF5E          ; NFKC_QC; N # Sm       FULLWIDTH TILDE
+ FF5F          ; NFKC_QC; N # Ps       FULLWIDTH LEFT WHITE PARENTHESIS
+ FF60          ; NFKC_QC; N # Pe       FULLWIDTH RIGHT WHITE PARENTHESIS
+ FF61          ; NFKC_QC; N # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
+ FF62          ; NFKC_QC; N # Ps       HALFWIDTH LEFT CORNER BRACKET
+ FF63          ; NFKC_QC; N # Pe       HALFWIDTH RIGHT CORNER BRACKET
+ FF64..FF65    ; NFKC_QC; N # Po   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+ FF66..FF6F    ; NFKC_QC; N # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; NFKC_QC; N # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; NFKC_QC; N # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; NFKC_QC; N # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; NFKC_QC; N # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; NFKC_QC; N # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; NFKC_QC; N # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; NFKC_QC; N # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; NFKC_QC; N # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ FFE0..FFE1    ; NFKC_QC; N # Sc   [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+ FFE2          ; NFKC_QC; N # Sm       FULLWIDTH NOT SIGN
+ FFE3          ; NFKC_QC; N # Sk       FULLWIDTH MACRON
+ FFE4          ; NFKC_QC; N # So       FULLWIDTH BROKEN BAR
+ FFE5..FFE6    ; NFKC_QC; N # Sc   [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+ FFE8          ; NFKC_QC; N # So       HALFWIDTH FORMS LIGHT VERTICAL
+ FFE9..FFEC    ; NFKC_QC; N # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+ FFED..FFEE    ; NFKC_QC; N # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+ 10781..10785  ; NFKC_QC; N # Lm   [5] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; NFKC_QC; N # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; NFKC_QC; N # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 1D15E..1D164  ; NFKC_QC; N # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; NFKC_QC; N # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 1D400..1D454  ; NFKC_QC; N # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; NFKC_QC; N # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; NFKC_QC; N # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; NFKC_QC; N # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; NFKC_QC; N # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; NFKC_QC; N # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; NFKC_QC; N # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; NFKC_QC; N # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; NFKC_QC; N # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; NFKC_QC; N # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; NFKC_QC; N # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; NFKC_QC; N # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; NFKC_QC; N # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; NFKC_QC; N # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; NFKC_QC; N # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; NFKC_QC; N # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; NFKC_QC; N # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; NFKC_QC; N # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; NFKC_QC; N # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; NFKC_QC; N # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C1         ; NFKC_QC; N # Sm       MATHEMATICAL BOLD NABLA
+ 1D6C2..1D6DA  ; NFKC_QC; N # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DB         ; NFKC_QC; N # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ 1D6DC..1D6FA  ; NFKC_QC; N # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FB         ; NFKC_QC; N # Sm       MATHEMATICAL ITALIC NABLA
+ 1D6FC..1D714  ; NFKC_QC; N # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D715         ; NFKC_QC; N # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ 1D716..1D734  ; NFKC_QC; N # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D735         ; NFKC_QC; N # Sm       MATHEMATICAL BOLD ITALIC NABLA
+ 1D736..1D74E  ; NFKC_QC; N # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D74F         ; NFKC_QC; N # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D750..1D76E  ; NFKC_QC; N # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D76F         ; NFKC_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
+ 1D770..1D788  ; NFKC_QC; N # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D789         ; NFKC_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ 1D78A..1D7A8  ; NFKC_QC; N # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7A9         ; NFKC_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ 1D7AA..1D7C2  ; NFKC_QC; N # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C3         ; NFKC_QC; N # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D7C4..1D7CB  ; NFKC_QC; N # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; NFKC_QC; N # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1E030..1E06D  ; NFKC_QC; N # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1EE00..1EE03  ; NFKC_QC; N # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; NFKC_QC; N # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; NFKC_QC; N # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; NFKC_QC; N # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; NFKC_QC; N # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; NFKC_QC; N # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; NFKC_QC; N # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; NFKC_QC; N # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; NFKC_QC; N # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; NFKC_QC; N # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; NFKC_QC; N # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; NFKC_QC; N # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; NFKC_QC; N # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; NFKC_QC; N # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; NFKC_QC; N # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; NFKC_QC; N # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; NFKC_QC; N # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; NFKC_QC; N # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1F100..1F10A  ; NFKC_QC; N # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
+ 1F110..1F12E  ; NFKC_QC; N # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
+ 1F130..1F14F  ; NFKC_QC; N # So  [32] SQUARED LATIN CAPITAL LETTER A..SQUARED WC
+ 1F16A..1F16C  ; NFKC_QC; N # So   [3] RAISED MC SIGN..RAISED MR SIGN
+ 1F190         ; NFKC_QC; N # So       SQUARE DJ
+ 1F200..1F202  ; NFKC_QC; N # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
+ 1F210..1F23B  ; NFKC_QC; N # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+ 1F240..1F248  ; NFKC_QC; N # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 1F250..1F251  ; NFKC_QC; N # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+ 1FBF0..1FBF9  ; NFKC_QC; N # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+ 2F800..2FA1D  ; NFKC_QC; N # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ 
+ # Total code points: 4928
+ 
+ # ================================================
+ 
+ # NFKC_Quick_Check=Maybe
+ 
+ 0300..0304    ; NFKC_QC; M # Mn   [5] COMBINING GRAVE ACCENT..COMBINING MACRON
+ 0306..030C    ; NFKC_QC; M # Mn   [7] COMBINING BREVE..COMBINING CARON
+ 030F          ; NFKC_QC; M # Mn       COMBINING DOUBLE GRAVE ACCENT
+ 0311          ; NFKC_QC; M # Mn       COMBINING INVERTED BREVE
+ 0313..0314    ; NFKC_QC; M # Mn   [2] COMBINING COMMA ABOVE..COMBINING REVERSED COMMA ABOVE
+ 031B          ; NFKC_QC; M # Mn       COMBINING HORN
+ 0323..0328    ; NFKC_QC; M # Mn   [6] COMBINING DOT BELOW..COMBINING OGONEK
+ 032D..032E    ; NFKC_QC; M # Mn   [2] COMBINING CIRCUMFLEX ACCENT BELOW..COMBINING BREVE BELOW
+ 0330..0331    ; NFKC_QC; M # Mn   [2] COMBINING TILDE BELOW..COMBINING MACRON BELOW
+ 0338          ; NFKC_QC; M # Mn       COMBINING LONG SOLIDUS OVERLAY
+ 0342          ; NFKC_QC; M # Mn       COMBINING GREEK PERISPOMENI
+ 0345          ; NFKC_QC; M # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 0653..0655    ; NFKC_QC; M # Mn   [3] ARABIC MADDAH ABOVE..ARABIC HAMZA BELOW
+ 093C          ; NFKC_QC; M # Mn       DEVANAGARI SIGN NUKTA
+ 09BE          ; NFKC_QC; M # Mc       BENGALI VOWEL SIGN AA
+ 09D7          ; NFKC_QC; M # Mc       BENGALI AU LENGTH MARK
+ 0B3E          ; NFKC_QC; M # Mc       ORIYA VOWEL SIGN AA
+ 0B56          ; NFKC_QC; M # Mn       ORIYA AI LENGTH MARK
+ 0B57          ; NFKC_QC; M # Mc       ORIYA AU LENGTH MARK
+ 0BBE          ; NFKC_QC; M # Mc       TAMIL VOWEL SIGN AA
+ 0BD7          ; NFKC_QC; M # Mc       TAMIL AU LENGTH MARK
+ 0C56          ; NFKC_QC; M # Mn       TELUGU AI LENGTH MARK
+ 0CC2          ; NFKC_QC; M # Mc       KANNADA VOWEL SIGN UU
+ 0CD5..0CD6    ; NFKC_QC; M # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
+ 0D3E          ; NFKC_QC; M # Mc       MALAYALAM VOWEL SIGN AA
+ 0D57          ; NFKC_QC; M # Mc       MALAYALAM AU LENGTH MARK
+ 0DCA          ; NFKC_QC; M # Mn       SINHALA SIGN AL-LAKUNA
+ 0DCF          ; NFKC_QC; M # Mc       SINHALA VOWEL SIGN AELA-PILLA
+ 0DDF          ; NFKC_QC; M # Mc       SINHALA VOWEL SIGN GAYANUKITTA
+ 102E          ; NFKC_QC; M # Mn       MYANMAR VOWEL SIGN II
+ 1161..1175    ; NFKC_QC; M # Lo  [21] HANGUL JUNGSEONG A..HANGUL JUNGSEONG I
+ 11A8..11C2    ; NFKC_QC; M # Lo  [27] HANGUL JONGSEONG KIYEOK..HANGUL JONGSEONG HIEUH
+ 1B35          ; NFKC_QC; M # Mc       BALINESE VOWEL SIGN TEDUNG
+ 3099..309A    ; NFKC_QC; M # Mn   [2] COMBINING KATAKANA-HIRAGANA VOICED SOUND MARK..COMBINING KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 110BA         ; NFKC_QC; M # Mn       KAITHI SIGN NUKTA
+ 11127         ; NFKC_QC; M # Mn       CHAKMA VOWEL SIGN A
+ 1133E         ; NFKC_QC; M # Mc       GRANTHA VOWEL SIGN AA
+ 11357         ; NFKC_QC; M # Mc       GRANTHA AU LENGTH MARK
+ 114B0         ; NFKC_QC; M # Mc       TIRHUTA VOWEL SIGN AA
+ 114BA         ; NFKC_QC; M # Mn       TIRHUTA VOWEL SIGN SHORT E
+ 114BD         ; NFKC_QC; M # Mc       TIRHUTA VOWEL SIGN SHORT O
+ 115AF         ; NFKC_QC; M # Mc       SIDDHAM VOWEL SIGN AA
+ 11930         ; NFKC_QC; M # Mc       DIVES AKURU VOWEL SIGN AA
+ 
+ # Total code points: 111
+ 
+ # ================================================
+ 
+ # Derived Property: Expands_On_NFD (DEPRECATED as of Unicode 6.0.0)
+ #   Generated according to UAX #15.
+ #   Characters whose normalized length is not one.
+ #   WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+ #            The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+ 
+ 00C0..00C5    ; Expands_On_NFD # L&   [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+ 00C7..00CF    ; Expands_On_NFD # L&   [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+ 00D1..00D6    ; Expands_On_NFD # L&   [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D9..00DD    ; Expands_On_NFD # L&   [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+ 00E0..00E5    ; Expands_On_NFD # L&   [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+ 00E7..00EF    ; Expands_On_NFD # L&   [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+ 00F1..00F6    ; Expands_On_NFD # L&   [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F9..00FD    ; Expands_On_NFD # L&   [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+ 00FF..010F    ; Expands_On_NFD # L&  [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+ 0112..0125    ; Expands_On_NFD # L&  [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0128..0130    ; Expands_On_NFD # L&   [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0134..0137    ; Expands_On_NFD # L&   [4] LATIN CAPITAL LETTER J WITH CIRCUMFLEX..LATIN SMALL LETTER K WITH CEDILLA
+ 0139..013E    ; Expands_On_NFD # L&   [6] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH CARON
+ 0143..0148    ; Expands_On_NFD # L&   [6] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N WITH CARON
+ 014C..0151    ; Expands_On_NFD # L&   [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0154..0165    ; Expands_On_NFD # L&  [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+ 0168..017E    ; Expands_On_NFD # L&  [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+ 01A0..01A1    ; Expands_On_NFD # L&   [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+ 01AF..01B0    ; Expands_On_NFD # L&   [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+ 01CD..01DC    ; Expands_On_NFD # L&  [16] LATIN CAPITAL LETTER A WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE..01E3    ; Expands_On_NFD # L&   [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+ 01E6..01F0    ; Expands_On_NFD # L&  [11] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER J WITH CARON
+ 01F4..01F5    ; Expands_On_NFD # L&   [2] LATIN CAPITAL LETTER G WITH ACUTE..LATIN SMALL LETTER G WITH ACUTE
+ 01F8..021B    ; Expands_On_NFD # L&  [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+ 021E..021F    ; Expands_On_NFD # L&   [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+ 0226..0233    ; Expands_On_NFD # L&  [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+ 0344          ; Expands_On_NFD # Mn       COMBINING GREEK DIALYTIKA TONOS
+ 0385          ; Expands_On_NFD # Sk       GREEK DIALYTIKA TONOS
+ 0386          ; Expands_On_NFD # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Expands_On_NFD # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Expands_On_NFD # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..0390    ; Expands_On_NFD # L&   [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AA..03B0    ; Expands_On_NFD # L&   [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ 03CA..03CE    ; Expands_On_NFD # L&   [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D3..03D4    ; Expands_On_NFD # L&   [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ 0400..0401    ; Expands_On_NFD # L&   [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+ 0403          ; Expands_On_NFD # L&       CYRILLIC CAPITAL LETTER GJE
+ 0407          ; Expands_On_NFD # L&       CYRILLIC CAPITAL LETTER YI
+ 040C..040E    ; Expands_On_NFD # L&   [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+ 0419          ; Expands_On_NFD # L&       CYRILLIC CAPITAL LETTER SHORT I
+ 0439          ; Expands_On_NFD # L&       CYRILLIC SMALL LETTER SHORT I
+ 0450..0451    ; Expands_On_NFD # L&   [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+ 0453          ; Expands_On_NFD # L&       CYRILLIC SMALL LETTER GJE
+ 0457          ; Expands_On_NFD # L&       CYRILLIC SMALL LETTER YI
+ 045C..045E    ; Expands_On_NFD # L&   [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+ 0476..0477    ; Expands_On_NFD # L&   [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 04C1..04C2    ; Expands_On_NFD # L&   [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04D0..04D3    ; Expands_On_NFD # L&   [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D6..04D7    ; Expands_On_NFD # L&   [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+ 04DA..04DF    ; Expands_On_NFD # L&   [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E2..04E7    ; Expands_On_NFD # L&   [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04EA..04F5    ; Expands_On_NFD # L&  [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F8..04F9    ; Expands_On_NFD # L&   [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 0622..0626    ; Expands_On_NFD # Lo   [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+ 06C0          ; Expands_On_NFD # Lo       ARABIC LETTER HEH WITH YEH ABOVE
+ 06C2          ; Expands_On_NFD # Lo       ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+ 06D3          ; Expands_On_NFD # Lo       ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 0929          ; Expands_On_NFD # Lo       DEVANAGARI LETTER NNNA
+ 0931          ; Expands_On_NFD # Lo       DEVANAGARI LETTER RRA
+ 0934          ; Expands_On_NFD # Lo       DEVANAGARI LETTER LLLA
+ 0958..095F    ; Expands_On_NFD # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09CB..09CC    ; Expands_On_NFD # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09DC..09DD    ; Expands_On_NFD # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; Expands_On_NFD # Lo       BENGALI LETTER YYA
+ 0A33          ; Expands_On_NFD # Lo       GURMUKHI LETTER LLA
+ 0A36          ; Expands_On_NFD # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; Expands_On_NFD # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; Expands_On_NFD # Lo       GURMUKHI LETTER FA
+ 0B48          ; Expands_On_NFD # Mc       ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; Expands_On_NFD # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B5C..0B5D    ; Expands_On_NFD # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B94          ; Expands_On_NFD # Lo       TAMIL LETTER AU
+ 0BCA..0BCC    ; Expands_On_NFD # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0C48          ; Expands_On_NFD # Mn       TELUGU VOWEL SIGN AI
+ 0CC0          ; Expands_On_NFD # Mc       KANNADA VOWEL SIGN II
+ 0CC7..0CC8    ; Expands_On_NFD # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; Expands_On_NFD # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0D4A..0D4C    ; Expands_On_NFD # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0DDA          ; Expands_On_NFD # Mc       SINHALA VOWEL SIGN DIGA KOMBUVA
+ 0DDC..0DDE    ; Expands_On_NFD # Mc   [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+ 0F43          ; Expands_On_NFD # Lo       TIBETAN LETTER GHA
+ 0F4D          ; Expands_On_NFD # Lo       TIBETAN LETTER DDHA
+ 0F52          ; Expands_On_NFD # Lo       TIBETAN LETTER DHA
+ 0F57          ; Expands_On_NFD # Lo       TIBETAN LETTER BHA
+ 0F5C          ; Expands_On_NFD # Lo       TIBETAN LETTER DZHA
+ 0F69          ; Expands_On_NFD # Lo       TIBETAN LETTER KSSA
+ 0F73          ; Expands_On_NFD # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F76    ; Expands_On_NFD # Mn   [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+ 0F78          ; Expands_On_NFD # Mn       TIBETAN VOWEL SIGN VOCALIC L
+ 0F81          ; Expands_On_NFD # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; Expands_On_NFD # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; Expands_On_NFD # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; Expands_On_NFD # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; Expands_On_NFD # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; Expands_On_NFD # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; Expands_On_NFD # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1026          ; Expands_On_NFD # Lo       MYANMAR LETTER UU
+ 1B06          ; Expands_On_NFD # Lo       BALINESE LETTER AKARA TEDUNG
+ 1B08          ; Expands_On_NFD # Lo       BALINESE LETTER IKARA TEDUNG
+ 1B0A          ; Expands_On_NFD # Lo       BALINESE LETTER UKARA TEDUNG
+ 1B0C          ; Expands_On_NFD # Lo       BALINESE LETTER RA REPA TEDUNG
+ 1B0E          ; Expands_On_NFD # Lo       BALINESE LETTER LA LENGA TEDUNG
+ 1B12          ; Expands_On_NFD # Lo       BALINESE LETTER OKARA TEDUNG
+ 1B3B          ; Expands_On_NFD # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3D          ; Expands_On_NFD # Mc       BALINESE VOWEL SIGN LA LENGA TEDUNG
+ 1B40..1B41    ; Expands_On_NFD # Mc   [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B43          ; Expands_On_NFD # Mc       BALINESE VOWEL SIGN PEPET TEDUNG
+ 1E00..1E99    ; Expands_On_NFD # L& [154] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH RING ABOVE
+ 1E9B          ; Expands_On_NFD # L&       LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1EA0..1EF9    ; Expands_On_NFD # L&  [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+ 1F00..1F15    ; Expands_On_NFD # L&  [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; Expands_On_NFD # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; Expands_On_NFD # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; Expands_On_NFD # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Expands_On_NFD # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; Expands_On_NFD # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Expands_On_NFD # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Expands_On_NFD # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; Expands_On_NFD # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Expands_On_NFD # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; Expands_On_NFD # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FC1          ; Expands_On_NFD # Sk       GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2..1FC4    ; Expands_On_NFD # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; Expands_On_NFD # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD..1FCF    ; Expands_On_NFD # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD0..1FD3    ; Expands_On_NFD # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; Expands_On_NFD # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; Expands_On_NFD # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE0..1FEC    ; Expands_On_NFD # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED..1FEE    ; Expands_On_NFD # Sk   [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+ 1FF2..1FF4    ; Expands_On_NFD # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; Expands_On_NFD # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 212B          ; Expands_On_NFD # L&       ANGSTROM SIGN
+ 219A..219B    ; Expands_On_NFD # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+ 21AE          ; Expands_On_NFD # Sm       LEFT RIGHT ARROW WITH STROKE
+ 21CD          ; Expands_On_NFD # So       LEFTWARDS DOUBLE ARROW WITH STROKE
+ 21CE..21CF    ; Expands_On_NFD # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+ 2204          ; Expands_On_NFD # Sm       THERE DOES NOT EXIST
+ 2209          ; Expands_On_NFD # Sm       NOT AN ELEMENT OF
+ 220C          ; Expands_On_NFD # Sm       DOES NOT CONTAIN AS MEMBER
+ 2224          ; Expands_On_NFD # Sm       DOES NOT DIVIDE
+ 2226          ; Expands_On_NFD # Sm       NOT PARALLEL TO
+ 2241          ; Expands_On_NFD # Sm       NOT TILDE
+ 2244          ; Expands_On_NFD # Sm       NOT ASYMPTOTICALLY EQUAL TO
+ 2247          ; Expands_On_NFD # Sm       NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+ 2249          ; Expands_On_NFD # Sm       NOT ALMOST EQUAL TO
+ 2260          ; Expands_On_NFD # Sm       NOT EQUAL TO
+ 2262          ; Expands_On_NFD # Sm       NOT IDENTICAL TO
+ 226D..2271    ; Expands_On_NFD # Sm   [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+ 2274..2275    ; Expands_On_NFD # Sm   [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+ 2278..2279    ; Expands_On_NFD # Sm   [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+ 2280..2281    ; Expands_On_NFD # Sm   [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+ 2284..2285    ; Expands_On_NFD # Sm   [2] NOT A SUBSET OF..NOT A SUPERSET OF
+ 2288..2289    ; Expands_On_NFD # Sm   [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+ 22AC..22AF    ; Expands_On_NFD # Sm   [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ 22E0..22E3    ; Expands_On_NFD # Sm   [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+ 22EA..22ED    ; Expands_On_NFD # Sm   [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ 2ADC          ; Expands_On_NFD # Sm       FORKING
+ 304C          ; Expands_On_NFD # Lo       HIRAGANA LETTER GA
+ 304E          ; Expands_On_NFD # Lo       HIRAGANA LETTER GI
+ 3050          ; Expands_On_NFD # Lo       HIRAGANA LETTER GU
+ 3052          ; Expands_On_NFD # Lo       HIRAGANA LETTER GE
+ 3054          ; Expands_On_NFD # Lo       HIRAGANA LETTER GO
+ 3056          ; Expands_On_NFD # Lo       HIRAGANA LETTER ZA
+ 3058          ; Expands_On_NFD # Lo       HIRAGANA LETTER ZI
+ 305A          ; Expands_On_NFD # Lo       HIRAGANA LETTER ZU
+ 305C          ; Expands_On_NFD # Lo       HIRAGANA LETTER ZE
+ 305E          ; Expands_On_NFD # Lo       HIRAGANA LETTER ZO
+ 3060          ; Expands_On_NFD # Lo       HIRAGANA LETTER DA
+ 3062          ; Expands_On_NFD # Lo       HIRAGANA LETTER DI
+ 3065          ; Expands_On_NFD # Lo       HIRAGANA LETTER DU
+ 3067          ; Expands_On_NFD # Lo       HIRAGANA LETTER DE
+ 3069          ; Expands_On_NFD # Lo       HIRAGANA LETTER DO
+ 3070..3071    ; Expands_On_NFD # Lo   [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+ 3073..3074    ; Expands_On_NFD # Lo   [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+ 3076..3077    ; Expands_On_NFD # Lo   [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+ 3079..307A    ; Expands_On_NFD # Lo   [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+ 307C..307D    ; Expands_On_NFD # Lo   [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+ 3094          ; Expands_On_NFD # Lo       HIRAGANA LETTER VU
+ 309E          ; Expands_On_NFD # Lm       HIRAGANA VOICED ITERATION MARK
+ 30AC          ; Expands_On_NFD # Lo       KATAKANA LETTER GA
+ 30AE          ; Expands_On_NFD # Lo       KATAKANA LETTER GI
+ 30B0          ; Expands_On_NFD # Lo       KATAKANA LETTER GU
+ 30B2          ; Expands_On_NFD # Lo       KATAKANA LETTER GE
+ 30B4          ; Expands_On_NFD # Lo       KATAKANA LETTER GO
+ 30B6          ; Expands_On_NFD # Lo       KATAKANA LETTER ZA
+ 30B8          ; Expands_On_NFD # Lo       KATAKANA LETTER ZI
+ 30BA          ; Expands_On_NFD # Lo       KATAKANA LETTER ZU
+ 30BC          ; Expands_On_NFD # Lo       KATAKANA LETTER ZE
+ 30BE          ; Expands_On_NFD # Lo       KATAKANA LETTER ZO
+ 30C0          ; Expands_On_NFD # Lo       KATAKANA LETTER DA
+ 30C2          ; Expands_On_NFD # Lo       KATAKANA LETTER DI
+ 30C5          ; Expands_On_NFD # Lo       KATAKANA LETTER DU
+ 30C7          ; Expands_On_NFD # Lo       KATAKANA LETTER DE
+ 30C9          ; Expands_On_NFD # Lo       KATAKANA LETTER DO
+ 30D0..30D1    ; Expands_On_NFD # Lo   [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+ 30D3..30D4    ; Expands_On_NFD # Lo   [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+ 30D6..30D7    ; Expands_On_NFD # Lo   [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+ 30D9..30DA    ; Expands_On_NFD # Lo   [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+ 30DC..30DD    ; Expands_On_NFD # Lo   [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+ 30F4          ; Expands_On_NFD # Lo       KATAKANA LETTER VU
+ 30F7..30FA    ; Expands_On_NFD # Lo   [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+ 30FE          ; Expands_On_NFD # Lm       KATAKANA VOICED ITERATION MARK
+ AC00..D7A3    ; Expands_On_NFD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ FB1D          ; Expands_On_NFD # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; Expands_On_NFD # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; Expands_On_NFD # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Expands_On_NFD # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Expands_On_NFD # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Expands_On_NFD # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Expands_On_NFD # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4E    ; Expands_On_NFD # Lo   [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+ 1109A         ; Expands_On_NFD # Lo       KAITHI LETTER DDDHA
+ 1109C         ; Expands_On_NFD # Lo       KAITHI LETTER RHA
+ 110AB         ; Expands_On_NFD # Lo       KAITHI LETTER VA
+ 1112E..1112F  ; Expands_On_NFD # Mn   [2] CHAKMA VOWEL SIGN O..CHAKMA VOWEL SIGN AU
+ 1134B..1134C  ; Expands_On_NFD # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
+ 114BB..114BC  ; Expands_On_NFD # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+ 114BE         ; Expands_On_NFD # Mc       TIRHUTA VOWEL SIGN AU
+ 115BA..115BB  ; Expands_On_NFD # Mc   [2] SIDDHAM VOWEL SIGN O..SIDDHAM VOWEL SIGN AU
+ 11938         ; Expands_On_NFD # Mc       DIVES AKURU VOWEL SIGN O
+ 1D15E..1D164  ; Expands_On_NFD # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; Expands_On_NFD # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 
+ # Total code points: 12216
+ 
+ # ================================================
+ 
+ # Derived Property: Expands_On_NFC (DEPRECATED as of Unicode 6.0.0)
+ #   Generated according to UAX #15.
+ #   Characters whose normalized length is not one.
+ #   WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+ #            The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+ 
+ 0344          ; Expands_On_NFC # Mn       COMBINING GREEK DIALYTIKA TONOS
+ 0958..095F    ; Expands_On_NFC # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09DC..09DD    ; Expands_On_NFC # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; Expands_On_NFC # Lo       BENGALI LETTER YYA
+ 0A33          ; Expands_On_NFC # Lo       GURMUKHI LETTER LLA
+ 0A36          ; Expands_On_NFC # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; Expands_On_NFC # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; Expands_On_NFC # Lo       GURMUKHI LETTER FA
+ 0B5C..0B5D    ; Expands_On_NFC # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0F43          ; Expands_On_NFC # Lo       TIBETAN LETTER GHA
+ 0F4D          ; Expands_On_NFC # Lo       TIBETAN LETTER DDHA
+ 0F52          ; Expands_On_NFC # Lo       TIBETAN LETTER DHA
+ 0F57          ; Expands_On_NFC # Lo       TIBETAN LETTER BHA
+ 0F5C          ; Expands_On_NFC # Lo       TIBETAN LETTER DZHA
+ 0F69          ; Expands_On_NFC # Lo       TIBETAN LETTER KSSA
+ 0F73          ; Expands_On_NFC # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F76    ; Expands_On_NFC # Mn   [2] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC R
+ 0F78          ; Expands_On_NFC # Mn       TIBETAN VOWEL SIGN VOCALIC L
+ 0F81          ; Expands_On_NFC # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; Expands_On_NFC # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; Expands_On_NFC # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; Expands_On_NFC # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; Expands_On_NFC # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; Expands_On_NFC # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; Expands_On_NFC # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 2ADC          ; Expands_On_NFC # Sm       FORKING
+ FB1D          ; Expands_On_NFC # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; Expands_On_NFC # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; Expands_On_NFC # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Expands_On_NFC # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Expands_On_NFC # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Expands_On_NFC # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Expands_On_NFC # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4E    ; Expands_On_NFC # Lo   [9] HEBREW LETTER TSADI WITH DAGESH..HEBREW LETTER PE WITH RAFE
+ 1D15E..1D164  ; Expands_On_NFC # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; Expands_On_NFC # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 
+ # Total code points: 85
+ 
+ # ================================================
+ 
+ # Derived Property: Expands_On_NFKD (DEPRECATED as of Unicode 6.0.0)
+ #   Generated according to UAX #15.
+ #   Characters whose normalized length is not one.
+ #   WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+ #            The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+ 
+ 00A8          ; Expands_On_NFKD # Sk       DIAERESIS
+ 00AF          ; Expands_On_NFKD # Sk       MACRON
+ 00B4          ; Expands_On_NFKD # Sk       ACUTE ACCENT
+ 00B8          ; Expands_On_NFKD # Sk       CEDILLA
+ 00BC..00BE    ; Expands_On_NFKD # No   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+ 00C0..00C5    ; Expands_On_NFKD # L&   [6] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER A WITH RING ABOVE
+ 00C7..00CF    ; Expands_On_NFKD # L&   [9] LATIN CAPITAL LETTER C WITH CEDILLA..LATIN CAPITAL LETTER I WITH DIAERESIS
+ 00D1..00D6    ; Expands_On_NFKD # L&   [6] LATIN CAPITAL LETTER N WITH TILDE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D9..00DD    ; Expands_On_NFKD # L&   [5] LATIN CAPITAL LETTER U WITH GRAVE..LATIN CAPITAL LETTER Y WITH ACUTE
+ 00E0..00E5    ; Expands_On_NFKD # L&   [6] LATIN SMALL LETTER A WITH GRAVE..LATIN SMALL LETTER A WITH RING ABOVE
+ 00E7..00EF    ; Expands_On_NFKD # L&   [9] LATIN SMALL LETTER C WITH CEDILLA..LATIN SMALL LETTER I WITH DIAERESIS
+ 00F1..00F6    ; Expands_On_NFKD # L&   [6] LATIN SMALL LETTER N WITH TILDE..LATIN SMALL LETTER O WITH DIAERESIS
+ 00F9..00FD    ; Expands_On_NFKD # L&   [5] LATIN SMALL LETTER U WITH GRAVE..LATIN SMALL LETTER Y WITH ACUTE
+ 00FF..010F    ; Expands_On_NFKD # L&  [17] LATIN SMALL LETTER Y WITH DIAERESIS..LATIN SMALL LETTER D WITH CARON
+ 0112..0125    ; Expands_On_NFKD # L&  [20] LATIN CAPITAL LETTER E WITH MACRON..LATIN SMALL LETTER H WITH CIRCUMFLEX
+ 0128..0130    ; Expands_On_NFKD # L&   [9] LATIN CAPITAL LETTER I WITH TILDE..LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132..0137    ; Expands_On_NFKD # L&   [6] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LETTER K WITH CEDILLA
+ 0139..0140    ; Expands_On_NFKD # L&   [8] LATIN CAPITAL LETTER L WITH ACUTE..LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0143..0149    ; Expands_On_NFKD # L&   [7] LATIN CAPITAL LETTER N WITH ACUTE..LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 014C..0151    ; Expands_On_NFKD # L&   [6] LATIN CAPITAL LETTER O WITH MACRON..LATIN SMALL LETTER O WITH DOUBLE ACUTE
+ 0154..0165    ; Expands_On_NFKD # L&  [18] LATIN CAPITAL LETTER R WITH ACUTE..LATIN SMALL LETTER T WITH CARON
+ 0168..017E    ; Expands_On_NFKD # L&  [23] LATIN CAPITAL LETTER U WITH TILDE..LATIN SMALL LETTER Z WITH CARON
+ 01A0..01A1    ; Expands_On_NFKD # L&   [2] LATIN CAPITAL LETTER O WITH HORN..LATIN SMALL LETTER O WITH HORN
+ 01AF..01B0    ; Expands_On_NFKD # L&   [2] LATIN CAPITAL LETTER U WITH HORN..LATIN SMALL LETTER U WITH HORN
+ 01C4..01DC    ; Expands_On_NFKD # L&  [25] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE..01E3    ; Expands_On_NFKD # L&   [6] LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON..LATIN SMALL LETTER AE WITH MACRON
+ 01E6..01F5    ; Expands_On_NFKD # L&  [16] LATIN CAPITAL LETTER G WITH CARON..LATIN SMALL LETTER G WITH ACUTE
+ 01F8..021B    ; Expands_On_NFKD # L&  [36] LATIN CAPITAL LETTER N WITH GRAVE..LATIN SMALL LETTER T WITH COMMA BELOW
+ 021E..021F    ; Expands_On_NFKD # L&   [2] LATIN CAPITAL LETTER H WITH CARON..LATIN SMALL LETTER H WITH CARON
+ 0226..0233    ; Expands_On_NFKD # L&  [14] LATIN CAPITAL LETTER A WITH DOT ABOVE..LATIN SMALL LETTER Y WITH MACRON
+ 02D8..02DD    ; Expands_On_NFKD # Sk   [6] BREVE..DOUBLE ACUTE ACCENT
+ 0344          ; Expands_On_NFKD # Mn       COMBINING GREEK DIALYTIKA TONOS
+ 037A          ; Expands_On_NFKD # Lm       GREEK YPOGEGRAMMENI
+ 0384..0385    ; Expands_On_NFKD # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0386          ; Expands_On_NFKD # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0388..038A    ; Expands_On_NFKD # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Expands_On_NFKD # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..0390    ; Expands_On_NFKD # L&   [3] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND TONOS
+ 03AA..03B0    ; Expands_On_NFKD # L&   [7] GREEK CAPITAL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND TONOS
+ 03CA..03CE    ; Expands_On_NFKD # L&   [5] GREEK SMALL LETTER IOTA WITH DIALYTIKA..GREEK SMALL LETTER OMEGA WITH TONOS
+ 03D3..03D4    ; Expands_On_NFKD # L&   [2] GREEK UPSILON WITH ACUTE AND HOOK SYMBOL..GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ 0400..0401    ; Expands_On_NFKD # L&   [2] CYRILLIC CAPITAL LETTER IE WITH GRAVE..CYRILLIC CAPITAL LETTER IO
+ 0403          ; Expands_On_NFKD # L&       CYRILLIC CAPITAL LETTER GJE
+ 0407          ; Expands_On_NFKD # L&       CYRILLIC CAPITAL LETTER YI
+ 040C..040E    ; Expands_On_NFKD # L&   [3] CYRILLIC CAPITAL LETTER KJE..CYRILLIC CAPITAL LETTER SHORT U
+ 0419          ; Expands_On_NFKD # L&       CYRILLIC CAPITAL LETTER SHORT I
+ 0439          ; Expands_On_NFKD # L&       CYRILLIC SMALL LETTER SHORT I
+ 0450..0451    ; Expands_On_NFKD # L&   [2] CYRILLIC SMALL LETTER IE WITH GRAVE..CYRILLIC SMALL LETTER IO
+ 0453          ; Expands_On_NFKD # L&       CYRILLIC SMALL LETTER GJE
+ 0457          ; Expands_On_NFKD # L&       CYRILLIC SMALL LETTER YI
+ 045C..045E    ; Expands_On_NFKD # L&   [3] CYRILLIC SMALL LETTER KJE..CYRILLIC SMALL LETTER SHORT U
+ 0476..0477    ; Expands_On_NFKD # L&   [2] CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT..CYRILLIC SMALL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 04C1..04C2    ; Expands_On_NFKD # L&   [2] CYRILLIC CAPITAL LETTER ZHE WITH BREVE..CYRILLIC SMALL LETTER ZHE WITH BREVE
+ 04D0..04D3    ; Expands_On_NFKD # L&   [4] CYRILLIC CAPITAL LETTER A WITH BREVE..CYRILLIC SMALL LETTER A WITH DIAERESIS
+ 04D6..04D7    ; Expands_On_NFKD # L&   [2] CYRILLIC CAPITAL LETTER IE WITH BREVE..CYRILLIC SMALL LETTER IE WITH BREVE
+ 04DA..04DF    ; Expands_On_NFKD # L&   [6] CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS..CYRILLIC SMALL LETTER ZE WITH DIAERESIS
+ 04E2..04E7    ; Expands_On_NFKD # L&   [6] CYRILLIC CAPITAL LETTER I WITH MACRON..CYRILLIC SMALL LETTER O WITH DIAERESIS
+ 04EA..04F5    ; Expands_On_NFKD # L&  [12] CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS..CYRILLIC SMALL LETTER CHE WITH DIAERESIS
+ 04F8..04F9    ; Expands_On_NFKD # L&   [2] CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS..CYRILLIC SMALL LETTER YERU WITH DIAERESIS
+ 0587          ; Expands_On_NFKD # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 0622..0626    ; Expands_On_NFKD # Lo   [5] ARABIC LETTER ALEF WITH MADDA ABOVE..ARABIC LETTER YEH WITH HAMZA ABOVE
+ 0675..0678    ; Expands_On_NFKD # Lo   [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+ 06C0          ; Expands_On_NFKD # Lo       ARABIC LETTER HEH WITH YEH ABOVE
+ 06C2          ; Expands_On_NFKD # Lo       ARABIC LETTER HEH GOAL WITH HAMZA ABOVE
+ 06D3          ; Expands_On_NFKD # Lo       ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+ 0929          ; Expands_On_NFKD # Lo       DEVANAGARI LETTER NNNA
+ 0931          ; Expands_On_NFKD # Lo       DEVANAGARI LETTER RRA
+ 0934          ; Expands_On_NFKD # Lo       DEVANAGARI LETTER LLLA
+ 0958..095F    ; Expands_On_NFKD # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09CB..09CC    ; Expands_On_NFKD # Mc   [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+ 09DC..09DD    ; Expands_On_NFKD # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; Expands_On_NFKD # Lo       BENGALI LETTER YYA
+ 0A33          ; Expands_On_NFKD # Lo       GURMUKHI LETTER LLA
+ 0A36          ; Expands_On_NFKD # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; Expands_On_NFKD # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; Expands_On_NFKD # Lo       GURMUKHI LETTER FA
+ 0B48          ; Expands_On_NFKD # Mc       ORIYA VOWEL SIGN AI
+ 0B4B..0B4C    ; Expands_On_NFKD # Mc   [2] ORIYA VOWEL SIGN O..ORIYA VOWEL SIGN AU
+ 0B5C..0B5D    ; Expands_On_NFKD # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0B94          ; Expands_On_NFKD # Lo       TAMIL LETTER AU
+ 0BCA..0BCC    ; Expands_On_NFKD # Mc   [3] TAMIL VOWEL SIGN O..TAMIL VOWEL SIGN AU
+ 0C48          ; Expands_On_NFKD # Mn       TELUGU VOWEL SIGN AI
+ 0CC0          ; Expands_On_NFKD # Mc       KANNADA VOWEL SIGN II
+ 0CC7..0CC8    ; Expands_On_NFKD # Mc   [2] KANNADA VOWEL SIGN EE..KANNADA VOWEL SIGN AI
+ 0CCA..0CCB    ; Expands_On_NFKD # Mc   [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
+ 0D4A..0D4C    ; Expands_On_NFKD # Mc   [3] MALAYALAM VOWEL SIGN O..MALAYALAM VOWEL SIGN AU
+ 0DDA          ; Expands_On_NFKD # Mc       SINHALA VOWEL SIGN DIGA KOMBUVA
+ 0DDC..0DDE    ; Expands_On_NFKD # Mc   [3] SINHALA VOWEL SIGN KOMBUVA HAA AELA-PILLA..SINHALA VOWEL SIGN KOMBUVA HAA GAYANUKITTA
+ 0E33          ; Expands_On_NFKD # Lo       THAI CHARACTER SARA AM
+ 0EB3          ; Expands_On_NFKD # Lo       LAO VOWEL SIGN AM
+ 0EDC..0EDD    ; Expands_On_NFKD # Lo   [2] LAO HO NO..LAO HO MO
+ 0F43          ; Expands_On_NFKD # Lo       TIBETAN LETTER GHA
+ 0F4D          ; Expands_On_NFKD # Lo       TIBETAN LETTER DDHA
+ 0F52          ; Expands_On_NFKD # Lo       TIBETAN LETTER DHA
+ 0F57          ; Expands_On_NFKD # Lo       TIBETAN LETTER BHA
+ 0F5C          ; Expands_On_NFKD # Lo       TIBETAN LETTER DZHA
+ 0F69          ; Expands_On_NFKD # Lo       TIBETAN LETTER KSSA
+ 0F73          ; Expands_On_NFKD # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F79    ; Expands_On_NFKD # Mn   [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+ 0F81          ; Expands_On_NFKD # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; Expands_On_NFKD # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; Expands_On_NFKD # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; Expands_On_NFKD # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; Expands_On_NFKD # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; Expands_On_NFKD # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; Expands_On_NFKD # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1026          ; Expands_On_NFKD # Lo       MYANMAR LETTER UU
+ 1B06          ; Expands_On_NFKD # Lo       BALINESE LETTER AKARA TEDUNG
+ 1B08          ; Expands_On_NFKD # Lo       BALINESE LETTER IKARA TEDUNG
+ 1B0A          ; Expands_On_NFKD # Lo       BALINESE LETTER UKARA TEDUNG
+ 1B0C          ; Expands_On_NFKD # Lo       BALINESE LETTER RA REPA TEDUNG
+ 1B0E          ; Expands_On_NFKD # Lo       BALINESE LETTER LA LENGA TEDUNG
+ 1B12          ; Expands_On_NFKD # Lo       BALINESE LETTER OKARA TEDUNG
+ 1B3B          ; Expands_On_NFKD # Mc       BALINESE VOWEL SIGN RA REPA TEDUNG
+ 1B3D          ; Expands_On_NFKD # Mc       BALINESE VOWEL SIGN LA LENGA TEDUNG
+ 1B40..1B41    ; Expands_On_NFKD # Mc   [2] BALINESE VOWEL SIGN TALING TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
+ 1B43          ; Expands_On_NFKD # Mc       BALINESE VOWEL SIGN PEPET TEDUNG
+ 1E00..1E9B    ; Expands_On_NFKD # L& [156] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1EA0..1EF9    ; Expands_On_NFKD # L&  [90] LATIN CAPITAL LETTER A WITH DOT BELOW..LATIN SMALL LETTER Y WITH TILDE
+ 1F00..1F15    ; Expands_On_NFKD # L&  [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
+ 1F18..1F1D    ; Expands_On_NFKD # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F20..1F45    ; Expands_On_NFKD # L&  [38] GREEK SMALL LETTER ETA WITH PSILI..GREEK SMALL LETTER OMICRON WITH DASIA AND OXIA
+ 1F48..1F4D    ; Expands_On_NFKD # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F50..1F57    ; Expands_On_NFKD # L&   [8] GREEK SMALL LETTER UPSILON WITH PSILI..GREEK SMALL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F59          ; Expands_On_NFKD # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Expands_On_NFKD # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Expands_On_NFKD # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F..1F7D    ; Expands_On_NFKD # L&  [31] GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI..GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FB4    ; Expands_On_NFKD # L&  [53] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB6..1FBC    ; Expands_On_NFKD # L&   [7] GREEK SMALL LETTER ALPHA WITH PERISPOMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBD          ; Expands_On_NFKD # Sk       GREEK KORONIS
+ 1FBF..1FC1    ; Expands_On_NFKD # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2..1FC4    ; Expands_On_NFKD # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC6..1FCC    ; Expands_On_NFKD # L&   [7] GREEK SMALL LETTER ETA WITH PERISPOMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD..1FCF    ; Expands_On_NFKD # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD0..1FD3    ; Expands_On_NFKD # L&   [4] GREEK SMALL LETTER IOTA WITH VRACHY..GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD6..1FDB    ; Expands_On_NFKD # L&   [6] GREEK SMALL LETTER IOTA WITH PERISPOMENI..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; Expands_On_NFKD # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE0..1FEC    ; Expands_On_NFKD # L&  [13] GREEK SMALL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED..1FEE    ; Expands_On_NFKD # Sk   [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+ 1FF2..1FF4    ; Expands_On_NFKD # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF6..1FFC    ; Expands_On_NFKD # L&   [7] GREEK SMALL LETTER OMEGA WITH PERISPOMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 1FFD..1FFE    ; Expands_On_NFKD # Sk   [2] GREEK OXIA..GREEK DASIA
+ 2017          ; Expands_On_NFKD # Po       DOUBLE LOW LINE
+ 2025..2026    ; Expands_On_NFKD # Po   [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+ 2033..2034    ; Expands_On_NFKD # Po   [2] DOUBLE PRIME..TRIPLE PRIME
+ 2036..2037    ; Expands_On_NFKD # Po   [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+ 203C          ; Expands_On_NFKD # Po       DOUBLE EXCLAMATION MARK
+ 203E          ; Expands_On_NFKD # Po       OVERLINE
+ 2047..2049    ; Expands_On_NFKD # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+ 2057          ; Expands_On_NFKD # Po       QUADRUPLE PRIME
+ 20A8          ; Expands_On_NFKD # Sc       RUPEE SIGN
+ 2100..2101    ; Expands_On_NFKD # So   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+ 2103          ; Expands_On_NFKD # So       DEGREE CELSIUS
+ 2105..2106    ; Expands_On_NFKD # So   [2] CARE OF..CADA UNA
+ 2109          ; Expands_On_NFKD # So       DEGREE FAHRENHEIT
+ 2116          ; Expands_On_NFKD # So       NUMERO SIGN
+ 2120..2122    ; Expands_On_NFKD # So   [3] SERVICE MARK..TRADE MARK SIGN
+ 212B          ; Expands_On_NFKD # L&       ANGSTROM SIGN
+ 213B          ; Expands_On_NFKD # So       FACSIMILE SIGN
+ 2150..215F    ; Expands_On_NFKD # No  [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+ 2161..2163    ; Expands_On_NFKD # Nl   [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+ 2165..2168    ; Expands_On_NFKD # Nl   [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+ 216A..216B    ; Expands_On_NFKD # Nl   [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+ 2171..2173    ; Expands_On_NFKD # Nl   [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+ 2175..2178    ; Expands_On_NFKD # Nl   [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+ 217A..217B    ; Expands_On_NFKD # Nl   [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+ 2189          ; Expands_On_NFKD # No       VULGAR FRACTION ZERO THIRDS
+ 219A..219B    ; Expands_On_NFKD # Sm   [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+ 21AE          ; Expands_On_NFKD # Sm       LEFT RIGHT ARROW WITH STROKE
+ 21CD          ; Expands_On_NFKD # So       LEFTWARDS DOUBLE ARROW WITH STROKE
+ 21CE..21CF    ; Expands_On_NFKD # Sm   [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+ 2204          ; Expands_On_NFKD # Sm       THERE DOES NOT EXIST
+ 2209          ; Expands_On_NFKD # Sm       NOT AN ELEMENT OF
+ 220C          ; Expands_On_NFKD # Sm       DOES NOT CONTAIN AS MEMBER
+ 2224          ; Expands_On_NFKD # Sm       DOES NOT DIVIDE
+ 2226          ; Expands_On_NFKD # Sm       NOT PARALLEL TO
+ 222C..222D    ; Expands_On_NFKD # Sm   [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+ 222F..2230    ; Expands_On_NFKD # Sm   [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+ 2241          ; Expands_On_NFKD # Sm       NOT TILDE
+ 2244          ; Expands_On_NFKD # Sm       NOT ASYMPTOTICALLY EQUAL TO
+ 2247          ; Expands_On_NFKD # Sm       NEITHER APPROXIMATELY NOR ACTUALLY EQUAL TO
+ 2249          ; Expands_On_NFKD # Sm       NOT ALMOST EQUAL TO
+ 2260          ; Expands_On_NFKD # Sm       NOT EQUAL TO
+ 2262          ; Expands_On_NFKD # Sm       NOT IDENTICAL TO
+ 226D..2271    ; Expands_On_NFKD # Sm   [5] NOT EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUAL TO
+ 2274..2275    ; Expands_On_NFKD # Sm   [2] NEITHER LESS-THAN NOR EQUIVALENT TO..NEITHER GREATER-THAN NOR EQUIVALENT TO
+ 2278..2279    ; Expands_On_NFKD # Sm   [2] NEITHER LESS-THAN NOR GREATER-THAN..NEITHER GREATER-THAN NOR LESS-THAN
+ 2280..2281    ; Expands_On_NFKD # Sm   [2] DOES NOT PRECEDE..DOES NOT SUCCEED
+ 2284..2285    ; Expands_On_NFKD # Sm   [2] NOT A SUBSET OF..NOT A SUPERSET OF
+ 2288..2289    ; Expands_On_NFKD # Sm   [2] NEITHER A SUBSET OF NOR EQUAL TO..NEITHER A SUPERSET OF NOR EQUAL TO
+ 22AC..22AF    ; Expands_On_NFKD # Sm   [4] DOES NOT PROVE..NEGATED DOUBLE VERTICAL BAR DOUBLE RIGHT TURNSTILE
+ 22E0..22E3    ; Expands_On_NFKD # Sm   [4] DOES NOT PRECEDE OR EQUAL..NOT SQUARE ORIGINAL OF OR EQUAL TO
+ 22EA..22ED    ; Expands_On_NFKD # Sm   [4] NOT NORMAL SUBGROUP OF..DOES NOT CONTAIN AS NORMAL SUBGROUP OR EQUAL
+ 2469..249B    ; Expands_On_NFKD # No  [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+ 249C..24B5    ; Expands_On_NFKD # So  [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+ 2A0C          ; Expands_On_NFKD # Sm       QUADRUPLE INTEGRAL OPERATOR
+ 2A74..2A76    ; Expands_On_NFKD # Sm   [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+ 2ADC          ; Expands_On_NFKD # Sm       FORKING
+ 304C          ; Expands_On_NFKD # Lo       HIRAGANA LETTER GA
+ 304E          ; Expands_On_NFKD # Lo       HIRAGANA LETTER GI
+ 3050          ; Expands_On_NFKD # Lo       HIRAGANA LETTER GU
+ 3052          ; Expands_On_NFKD # Lo       HIRAGANA LETTER GE
+ 3054          ; Expands_On_NFKD # Lo       HIRAGANA LETTER GO
+ 3056          ; Expands_On_NFKD # Lo       HIRAGANA LETTER ZA
+ 3058          ; Expands_On_NFKD # Lo       HIRAGANA LETTER ZI
+ 305A          ; Expands_On_NFKD # Lo       HIRAGANA LETTER ZU
+ 305C          ; Expands_On_NFKD # Lo       HIRAGANA LETTER ZE
+ 305E          ; Expands_On_NFKD # Lo       HIRAGANA LETTER ZO
+ 3060          ; Expands_On_NFKD # Lo       HIRAGANA LETTER DA
+ 3062          ; Expands_On_NFKD # Lo       HIRAGANA LETTER DI
+ 3065          ; Expands_On_NFKD # Lo       HIRAGANA LETTER DU
+ 3067          ; Expands_On_NFKD # Lo       HIRAGANA LETTER DE
+ 3069          ; Expands_On_NFKD # Lo       HIRAGANA LETTER DO
+ 3070..3071    ; Expands_On_NFKD # Lo   [2] HIRAGANA LETTER BA..HIRAGANA LETTER PA
+ 3073..3074    ; Expands_On_NFKD # Lo   [2] HIRAGANA LETTER BI..HIRAGANA LETTER PI
+ 3076..3077    ; Expands_On_NFKD # Lo   [2] HIRAGANA LETTER BU..HIRAGANA LETTER PU
+ 3079..307A    ; Expands_On_NFKD # Lo   [2] HIRAGANA LETTER BE..HIRAGANA LETTER PE
+ 307C..307D    ; Expands_On_NFKD # Lo   [2] HIRAGANA LETTER BO..HIRAGANA LETTER PO
+ 3094          ; Expands_On_NFKD # Lo       HIRAGANA LETTER VU
+ 309B..309C    ; Expands_On_NFKD # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309E          ; Expands_On_NFKD # Lm       HIRAGANA VOICED ITERATION MARK
+ 309F          ; Expands_On_NFKD # Lo       HIRAGANA DIGRAPH YORI
+ 30AC          ; Expands_On_NFKD # Lo       KATAKANA LETTER GA
+ 30AE          ; Expands_On_NFKD # Lo       KATAKANA LETTER GI
+ 30B0          ; Expands_On_NFKD # Lo       KATAKANA LETTER GU
+ 30B2          ; Expands_On_NFKD # Lo       KATAKANA LETTER GE
+ 30B4          ; Expands_On_NFKD # Lo       KATAKANA LETTER GO
+ 30B6          ; Expands_On_NFKD # Lo       KATAKANA LETTER ZA
+ 30B8          ; Expands_On_NFKD # Lo       KATAKANA LETTER ZI
+ 30BA          ; Expands_On_NFKD # Lo       KATAKANA LETTER ZU
+ 30BC          ; Expands_On_NFKD # Lo       KATAKANA LETTER ZE
+ 30BE          ; Expands_On_NFKD # Lo       KATAKANA LETTER ZO
+ 30C0          ; Expands_On_NFKD # Lo       KATAKANA LETTER DA
+ 30C2          ; Expands_On_NFKD # Lo       KATAKANA LETTER DI
+ 30C5          ; Expands_On_NFKD # Lo       KATAKANA LETTER DU
+ 30C7          ; Expands_On_NFKD # Lo       KATAKANA LETTER DE
+ 30C9          ; Expands_On_NFKD # Lo       KATAKANA LETTER DO
+ 30D0..30D1    ; Expands_On_NFKD # Lo   [2] KATAKANA LETTER BA..KATAKANA LETTER PA
+ 30D3..30D4    ; Expands_On_NFKD # Lo   [2] KATAKANA LETTER BI..KATAKANA LETTER PI
+ 30D6..30D7    ; Expands_On_NFKD # Lo   [2] KATAKANA LETTER BU..KATAKANA LETTER PU
+ 30D9..30DA    ; Expands_On_NFKD # Lo   [2] KATAKANA LETTER BE..KATAKANA LETTER PE
+ 30DC..30DD    ; Expands_On_NFKD # Lo   [2] KATAKANA LETTER BO..KATAKANA LETTER PO
+ 30F4          ; Expands_On_NFKD # Lo       KATAKANA LETTER VU
+ 30F7..30FA    ; Expands_On_NFKD # Lo   [4] KATAKANA LETTER VA..KATAKANA LETTER VO
+ 30FE          ; Expands_On_NFKD # Lm       KATAKANA VOICED ITERATION MARK
+ 30FF          ; Expands_On_NFKD # Lo       KATAKANA DIGRAPH KOTO
+ 3200..321E    ; Expands_On_NFKD # So  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+ 3220..3229    ; Expands_On_NFKD # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+ 322A..3243    ; Expands_On_NFKD # So  [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+ 3250          ; Expands_On_NFKD # So       PARTNERSHIP SIGN
+ 3251..325F    ; Expands_On_NFKD # No  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+ 326E..327E    ; Expands_On_NFKD # So  [17] CIRCLED HANGUL KIYEOK A..CIRCLED HANGUL IEUNG U
+ 32B1..32BF    ; Expands_On_NFKD # No  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+ 32C0..32CF    ; Expands_On_NFKD # So  [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+ 32FF..33FF    ; Expands_On_NFKD # So [257] SQUARE ERA NAME REIWA..SQUARE GAL
+ AC00..D7A3    ; Expands_On_NFKD # Lo [11172] HANGUL SYLLABLE GA..HANGUL SYLLABLE HIH
+ FB00..FB06    ; Expands_On_NFKD # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Expands_On_NFKD # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; Expands_On_NFKD # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; Expands_On_NFKD # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; Expands_On_NFKD # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Expands_On_NFKD # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Expands_On_NFKD # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Expands_On_NFKD # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Expands_On_NFKD # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4F    ; Expands_On_NFKD # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+ FBA4..FBA5    ; Expands_On_NFKD # Lo   [2] ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+ FBB0..FBB1    ; Expands_On_NFKD # Lo   [2] ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBDD          ; Expands_On_NFKD # Lo       ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+ FBEA..FBFB    ; Expands_On_NFKD # Lo  [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+ FC00..FD3D    ; Expands_On_NFKD # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; Expands_On_NFKD # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; Expands_On_NFKD # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; Expands_On_NFKD # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; Expands_On_NFKD # Sc       RIAL SIGN
+ FE19          ; Expands_On_NFKD # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; Expands_On_NFKD # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE49..FE4C    ; Expands_On_NFKD # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE70..FE72    ; Expands_On_NFKD # Lo   [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+ FE74          ; Expands_On_NFKD # Lo       ARABIC KASRATAN ISOLATED FORM
+ FE76..FE7F    ; Expands_On_NFKD # Lo  [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+ FE81..FE8C    ; Expands_On_NFKD # Lo  [12] ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+ FEF5..FEFC    ; Expands_On_NFKD # Lo   [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FFE3          ; Expands_On_NFKD # Sk       FULLWIDTH MACRON
+ 1109A         ; Expands_On_NFKD # Lo       KAITHI LETTER DDDHA
+ 1109C         ; Expands_On_NFKD # Lo       KAITHI LETTER RHA
+ 110AB         ; Expands_On_NFKD # Lo       KAITHI LETTER VA
+ 1112E..1112F  ; Expands_On_NFKD # Mn   [2] CHAKMA VOWEL SIGN O..CHAKMA VOWEL SIGN AU
+ 1134B..1134C  ; Expands_On_NFKD # Mc   [2] GRANTHA VOWEL SIGN OO..GRANTHA VOWEL SIGN AU
+ 114BB..114BC  ; Expands_On_NFKD # Mc   [2] TIRHUTA VOWEL SIGN AI..TIRHUTA VOWEL SIGN O
+ 114BE         ; Expands_On_NFKD # Mc       TIRHUTA VOWEL SIGN AU
+ 115BA..115BB  ; Expands_On_NFKD # Mc   [2] SIDDHAM VOWEL SIGN O..SIDDHAM VOWEL SIGN AU
+ 11938         ; Expands_On_NFKD # Mc       DIVES AKURU VOWEL SIGN O
+ 1D15E..1D164  ; Expands_On_NFKD # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; Expands_On_NFKD # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 1F100..1F10A  ; Expands_On_NFKD # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
+ 1F110..1F12A  ; Expands_On_NFKD # So  [27] PARENTHESIZED LATIN CAPITAL LETTER A..TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+ 1F12D..1F12E  ; Expands_On_NFKD # So   [2] CIRCLED CD..CIRCLED WZ
+ 1F14A..1F14F  ; Expands_On_NFKD # So   [6] SQUARED HV..SQUARED WC
+ 1F16A..1F16C  ; Expands_On_NFKD # So   [3] RAISED MC SIGN..RAISED MR SIGN
+ 1F190         ; Expands_On_NFKD # So       SQUARE DJ
+ 1F200..1F201  ; Expands_On_NFKD # So   [2] SQUARE HIRAGANA HOKA..SQUARED KATAKANA KOKO
+ 1F213         ; Expands_On_NFKD # So       SQUARED KATAKANA DE
+ 1F240..1F248  ; Expands_On_NFKD # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 
+ # Total code points: 13390
+ 
+ # ================================================
+ 
+ # Derived Property: Expands_On_NFKC (DEPRECATED as of Unicode 6.0.0)
+ #   Generated according to UAX #15.
+ #   Characters whose normalized length is not one.
+ #   WARNING: Normalization of STRINGS must use the algorithm in UAX #15 because characters may interact.
+ #            The length of a normalized string is not necessarily the sum of the lengths of the normalized characters!
+ 
+ 00A8          ; Expands_On_NFKC # Sk       DIAERESIS
+ 00AF          ; Expands_On_NFKC # Sk       MACRON
+ 00B4          ; Expands_On_NFKC # Sk       ACUTE ACCENT
+ 00B8          ; Expands_On_NFKC # Sk       CEDILLA
+ 00BC..00BE    ; Expands_On_NFKC # No   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+ 0132..0133    ; Expands_On_NFKC # L&   [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+ 013F..0140    ; Expands_On_NFKC # L&   [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0149          ; Expands_On_NFKC # L&       LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 01C4..01CC    ; Expands_On_NFKC # L&   [9] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER NJ
+ 01F1..01F3    ; Expands_On_NFKC # L&   [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+ 02D8..02DD    ; Expands_On_NFKC # Sk   [6] BREVE..DOUBLE ACUTE ACCENT
+ 0344          ; Expands_On_NFKC # Mn       COMBINING GREEK DIALYTIKA TONOS
+ 037A          ; Expands_On_NFKC # Lm       GREEK YPOGEGRAMMENI
+ 0384..0385    ; Expands_On_NFKC # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0587          ; Expands_On_NFKC # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 0675..0678    ; Expands_On_NFKC # Lo   [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+ 0958..095F    ; Expands_On_NFKC # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09DC..09DD    ; Expands_On_NFKC # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; Expands_On_NFKC # Lo       BENGALI LETTER YYA
+ 0A33          ; Expands_On_NFKC # Lo       GURMUKHI LETTER LLA
+ 0A36          ; Expands_On_NFKC # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; Expands_On_NFKC # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; Expands_On_NFKC # Lo       GURMUKHI LETTER FA
+ 0B5C..0B5D    ; Expands_On_NFKC # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0E33          ; Expands_On_NFKC # Lo       THAI CHARACTER SARA AM
+ 0EB3          ; Expands_On_NFKC # Lo       LAO VOWEL SIGN AM
+ 0EDC..0EDD    ; Expands_On_NFKC # Lo   [2] LAO HO NO..LAO HO MO
+ 0F43          ; Expands_On_NFKC # Lo       TIBETAN LETTER GHA
+ 0F4D          ; Expands_On_NFKC # Lo       TIBETAN LETTER DDHA
+ 0F52          ; Expands_On_NFKC # Lo       TIBETAN LETTER DHA
+ 0F57          ; Expands_On_NFKC # Lo       TIBETAN LETTER BHA
+ 0F5C          ; Expands_On_NFKC # Lo       TIBETAN LETTER DZHA
+ 0F69          ; Expands_On_NFKC # Lo       TIBETAN LETTER KSSA
+ 0F73          ; Expands_On_NFKC # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F79    ; Expands_On_NFKC # Mn   [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+ 0F81          ; Expands_On_NFKC # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; Expands_On_NFKC # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; Expands_On_NFKC # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; Expands_On_NFKC # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; Expands_On_NFKC # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; Expands_On_NFKC # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; Expands_On_NFKC # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 1E9A          ; Expands_On_NFKC # L&       LATIN SMALL LETTER A WITH RIGHT HALF RING
+ 1FBD          ; Expands_On_NFKC # Sk       GREEK KORONIS
+ 1FBF..1FC1    ; Expands_On_NFKC # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FCD..1FCF    ; Expands_On_NFKC # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FDD..1FDF    ; Expands_On_NFKC # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FED..1FEE    ; Expands_On_NFKC # Sk   [2] GREEK DIALYTIKA AND VARIA..GREEK DIALYTIKA AND OXIA
+ 1FFD..1FFE    ; Expands_On_NFKC # Sk   [2] GREEK OXIA..GREEK DASIA
+ 2017          ; Expands_On_NFKC # Po       DOUBLE LOW LINE
+ 2025..2026    ; Expands_On_NFKC # Po   [2] TWO DOT LEADER..HORIZONTAL ELLIPSIS
+ 2033..2034    ; Expands_On_NFKC # Po   [2] DOUBLE PRIME..TRIPLE PRIME
+ 2036..2037    ; Expands_On_NFKC # Po   [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+ 203C          ; Expands_On_NFKC # Po       DOUBLE EXCLAMATION MARK
+ 203E          ; Expands_On_NFKC # Po       OVERLINE
+ 2047..2049    ; Expands_On_NFKC # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+ 2057          ; Expands_On_NFKC # Po       QUADRUPLE PRIME
+ 20A8          ; Expands_On_NFKC # Sc       RUPEE SIGN
+ 2100..2101    ; Expands_On_NFKC # So   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+ 2103          ; Expands_On_NFKC # So       DEGREE CELSIUS
+ 2105..2106    ; Expands_On_NFKC # So   [2] CARE OF..CADA UNA
+ 2109          ; Expands_On_NFKC # So       DEGREE FAHRENHEIT
+ 2116          ; Expands_On_NFKC # So       NUMERO SIGN
+ 2120..2122    ; Expands_On_NFKC # So   [3] SERVICE MARK..TRADE MARK SIGN
+ 213B          ; Expands_On_NFKC # So       FACSIMILE SIGN
+ 2150..215F    ; Expands_On_NFKC # No  [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+ 2161..2163    ; Expands_On_NFKC # Nl   [3] ROMAN NUMERAL TWO..ROMAN NUMERAL FOUR
+ 2165..2168    ; Expands_On_NFKC # Nl   [4] ROMAN NUMERAL SIX..ROMAN NUMERAL NINE
+ 216A..216B    ; Expands_On_NFKC # Nl   [2] ROMAN NUMERAL ELEVEN..ROMAN NUMERAL TWELVE
+ 2171..2173    ; Expands_On_NFKC # Nl   [3] SMALL ROMAN NUMERAL TWO..SMALL ROMAN NUMERAL FOUR
+ 2175..2178    ; Expands_On_NFKC # Nl   [4] SMALL ROMAN NUMERAL SIX..SMALL ROMAN NUMERAL NINE
+ 217A..217B    ; Expands_On_NFKC # Nl   [2] SMALL ROMAN NUMERAL ELEVEN..SMALL ROMAN NUMERAL TWELVE
+ 2189          ; Expands_On_NFKC # No       VULGAR FRACTION ZERO THIRDS
+ 222C..222D    ; Expands_On_NFKC # Sm   [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+ 222F..2230    ; Expands_On_NFKC # Sm   [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+ 2469..249B    ; Expands_On_NFKC # No  [51] CIRCLED NUMBER TEN..NUMBER TWENTY FULL STOP
+ 249C..24B5    ; Expands_On_NFKC # So  [26] PARENTHESIZED LATIN SMALL LETTER A..PARENTHESIZED LATIN SMALL LETTER Z
+ 2A0C          ; Expands_On_NFKC # Sm       QUADRUPLE INTEGRAL OPERATOR
+ 2A74..2A76    ; Expands_On_NFKC # Sm   [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+ 2ADC          ; Expands_On_NFKC # Sm       FORKING
+ 309B..309C    ; Expands_On_NFKC # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309F          ; Expands_On_NFKC # Lo       HIRAGANA DIGRAPH YORI
+ 30FF          ; Expands_On_NFKC # Lo       KATAKANA DIGRAPH KOTO
+ 3200..321E    ; Expands_On_NFKC # So  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+ 3220..3229    ; Expands_On_NFKC # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+ 322A..3243    ; Expands_On_NFKC # So  [26] PARENTHESIZED IDEOGRAPH MOON..PARENTHESIZED IDEOGRAPH REACH
+ 3250          ; Expands_On_NFKC # So       PARTNERSHIP SIGN
+ 3251..325F    ; Expands_On_NFKC # No  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+ 327C..327D    ; Expands_On_NFKC # So   [2] CIRCLED KOREAN CHARACTER CHAMKO..CIRCLED KOREAN CHARACTER JUEUI
+ 32B1..32BF    ; Expands_On_NFKC # No  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+ 32C0..32CF    ; Expands_On_NFKC # So  [16] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..LIMITED LIABILITY SIGN
+ 32FF..33FF    ; Expands_On_NFKC # So [257] SQUARE ERA NAME REIWA..SQUARE GAL
+ FB00..FB06    ; Expands_On_NFKC # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Expands_On_NFKC # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; Expands_On_NFKC # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; Expands_On_NFKC # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB2A..FB36    ; Expands_On_NFKC # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Expands_On_NFKC # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Expands_On_NFKC # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Expands_On_NFKC # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Expands_On_NFKC # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FB4F    ; Expands_On_NFKC # Lo  [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
+ FBDD          ; Expands_On_NFKC # Lo       ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+ FBEA..FBFB    ; Expands_On_NFKC # Lo  [18] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+ FC00..FD3D    ; Expands_On_NFKC # Lo [318] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; Expands_On_NFKC # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; Expands_On_NFKC # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; Expands_On_NFKC # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; Expands_On_NFKC # Sc       RIAL SIGN
+ FE19          ; Expands_On_NFKC # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; Expands_On_NFKC # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE49..FE4C    ; Expands_On_NFKC # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE70..FE72    ; Expands_On_NFKC # Lo   [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+ FE74          ; Expands_On_NFKC # Lo       ARABIC KASRATAN ISOLATED FORM
+ FE76..FE7F    ; Expands_On_NFKC # Lo  [10] ARABIC FATHA ISOLATED FORM..ARABIC SUKUN MEDIAL FORM
+ FEF5..FEFC    ; Expands_On_NFKC # Lo   [8] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FFE3          ; Expands_On_NFKC # Sk       FULLWIDTH MACRON
+ 1D15E..1D164  ; Expands_On_NFKC # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D1BB..1D1C0  ; Expands_On_NFKC # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 1F100..1F10A  ; Expands_On_NFKC # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
+ 1F110..1F12A  ; Expands_On_NFKC # So  [27] PARENTHESIZED LATIN CAPITAL LETTER A..TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+ 1F12D..1F12E  ; Expands_On_NFKC # So   [2] CIRCLED CD..CIRCLED WZ
+ 1F14A..1F14F  ; Expands_On_NFKC # So   [6] SQUARED HV..SQUARED WC
+ 1F16A..1F16C  ; Expands_On_NFKC # So   [3] RAISED MC SIGN..RAISED MR SIGN
+ 1F190         ; Expands_On_NFKC # So       SQUARE DJ
+ 1F200..1F201  ; Expands_On_NFKC # So   [2] SQUARE HIRAGANA HOKA..SQUARED KATAKANA KOKO
+ 1F240..1F248  ; Expands_On_NFKC # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 
+ # Total code points: 1237
+ 
+ # ================================================
+ 
+ # Derived Property:   NFKC_Casefold (NFKC_CF)
+ #   This property removes certain variations from characters: case, compatibility, and default-ignorables.
+ #   It is used for loose matching and certain types of identifiers.
+ #   It is constructed by applying NFKC, CaseFolding, and removal of Default_Ignorable_Code_Points.
+ #   The process of applying these transformations is repeated until a stable result is produced.
+ #   WARNING: Application to STRINGS must apply NFC after mapping each character, because characters may interact.
+ #            For more information, see [https://www.unicode.org/reports/tr44/]
+ # Omitted code points are unchanged by this mapping.
+ # @missing: 0000..10FFFF; NFKC_CF; <code point>
+ 
+ #  All code points not explicitly listed for NFKC_Casefold
+ #  have the value <codepoint>.
+ 
+ 0041          ; NFKC_CF; 0061           # L&       LATIN CAPITAL LETTER A
+ 0042          ; NFKC_CF; 0062           # L&       LATIN CAPITAL LETTER B
+ 0043          ; NFKC_CF; 0063           # L&       LATIN CAPITAL LETTER C
+ 0044          ; NFKC_CF; 0064           # L&       LATIN CAPITAL LETTER D
+ 0045          ; NFKC_CF; 0065           # L&       LATIN CAPITAL LETTER E
+ 0046          ; NFKC_CF; 0066           # L&       LATIN CAPITAL LETTER F
+ 0047          ; NFKC_CF; 0067           # L&       LATIN CAPITAL LETTER G
+ 0048          ; NFKC_CF; 0068           # L&       LATIN CAPITAL LETTER H
+ 0049          ; NFKC_CF; 0069           # L&       LATIN CAPITAL LETTER I
+ 004A          ; NFKC_CF; 006A           # L&       LATIN CAPITAL LETTER J
+ 004B          ; NFKC_CF; 006B           # L&       LATIN CAPITAL LETTER K
+ 004C          ; NFKC_CF; 006C           # L&       LATIN CAPITAL LETTER L
+ 004D          ; NFKC_CF; 006D           # L&       LATIN CAPITAL LETTER M
+ 004E          ; NFKC_CF; 006E           # L&       LATIN CAPITAL LETTER N
+ 004F          ; NFKC_CF; 006F           # L&       LATIN CAPITAL LETTER O
+ 0050          ; NFKC_CF; 0070           # L&       LATIN CAPITAL LETTER P
+ 0051          ; NFKC_CF; 0071           # L&       LATIN CAPITAL LETTER Q
+ 0052          ; NFKC_CF; 0072           # L&       LATIN CAPITAL LETTER R
+ 0053          ; NFKC_CF; 0073           # L&       LATIN CAPITAL LETTER S
+ 0054          ; NFKC_CF; 0074           # L&       LATIN CAPITAL LETTER T
+ 0055          ; NFKC_CF; 0075           # L&       LATIN CAPITAL LETTER U
+ 0056          ; NFKC_CF; 0076           # L&       LATIN CAPITAL LETTER V
+ 0057          ; NFKC_CF; 0077           # L&       LATIN CAPITAL LETTER W
+ 0058          ; NFKC_CF; 0078           # L&       LATIN CAPITAL LETTER X
+ 0059          ; NFKC_CF; 0079           # L&       LATIN CAPITAL LETTER Y
+ 005A          ; NFKC_CF; 007A           # L&       LATIN CAPITAL LETTER Z
+ 00A0          ; NFKC_CF; 0020           # Zs       NO-BREAK SPACE
+ 00A8          ; NFKC_CF; 0020 0308      # Sk       DIAERESIS
+ 00AA          ; NFKC_CF; 0061           # Lo       FEMININE ORDINAL INDICATOR
+ 00AD          ; NFKC_CF;                # Cf       SOFT HYPHEN
+ 00AF          ; NFKC_CF; 0020 0304      # Sk       MACRON
+ 00B2          ; NFKC_CF; 0032           # No       SUPERSCRIPT TWO
+ 00B3          ; NFKC_CF; 0033           # No       SUPERSCRIPT THREE
+ 00B4          ; NFKC_CF; 0020 0301      # Sk       ACUTE ACCENT
+ 00B5          ; NFKC_CF; 03BC           # L&       MICRO SIGN
+ 00B8          ; NFKC_CF; 0020 0327      # Sk       CEDILLA
+ 00B9          ; NFKC_CF; 0031           # No       SUPERSCRIPT ONE
+ 00BA          ; NFKC_CF; 006F           # Lo       MASCULINE ORDINAL INDICATOR
+ 00BC          ; NFKC_CF; 0031 2044 0034 # No       VULGAR FRACTION ONE QUARTER
+ 00BD          ; NFKC_CF; 0031 2044 0032 # No       VULGAR FRACTION ONE HALF
+ 00BE          ; NFKC_CF; 0033 2044 0034 # No       VULGAR FRACTION THREE QUARTERS
+ 00C0          ; NFKC_CF; 00E0           # L&       LATIN CAPITAL LETTER A WITH GRAVE
+ 00C1          ; NFKC_CF; 00E1           # L&       LATIN CAPITAL LETTER A WITH ACUTE
+ 00C2          ; NFKC_CF; 00E2           # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX
+ 00C3          ; NFKC_CF; 00E3           # L&       LATIN CAPITAL LETTER A WITH TILDE
+ 00C4          ; NFKC_CF; 00E4           # L&       LATIN CAPITAL LETTER A WITH DIAERESIS
+ 00C5          ; NFKC_CF; 00E5           # L&       LATIN CAPITAL LETTER A WITH RING ABOVE
+ 00C6          ; NFKC_CF; 00E6           # L&       LATIN CAPITAL LETTER AE
+ 00C7          ; NFKC_CF; 00E7           # L&       LATIN CAPITAL LETTER C WITH CEDILLA
+ 00C8          ; NFKC_CF; 00E8           # L&       LATIN CAPITAL LETTER E WITH GRAVE
+ 00C9          ; NFKC_CF; 00E9           # L&       LATIN CAPITAL LETTER E WITH ACUTE
+ 00CA          ; NFKC_CF; 00EA           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX
+ 00CB          ; NFKC_CF; 00EB           # L&       LATIN CAPITAL LETTER E WITH DIAERESIS
+ 00CC          ; NFKC_CF; 00EC           # L&       LATIN CAPITAL LETTER I WITH GRAVE
+ 00CD          ; NFKC_CF; 00ED           # L&       LATIN CAPITAL LETTER I WITH ACUTE
+ 00CE          ; NFKC_CF; 00EE           # L&       LATIN CAPITAL LETTER I WITH CIRCUMFLEX
+ 00CF          ; NFKC_CF; 00EF           # L&       LATIN CAPITAL LETTER I WITH DIAERESIS
+ 00D0          ; NFKC_CF; 00F0           # L&       LATIN CAPITAL LETTER ETH
+ 00D1          ; NFKC_CF; 00F1           # L&       LATIN CAPITAL LETTER N WITH TILDE
+ 00D2          ; NFKC_CF; 00F2           # L&       LATIN CAPITAL LETTER O WITH GRAVE
+ 00D3          ; NFKC_CF; 00F3           # L&       LATIN CAPITAL LETTER O WITH ACUTE
+ 00D4          ; NFKC_CF; 00F4           # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX
+ 00D5          ; NFKC_CF; 00F5           # L&       LATIN CAPITAL LETTER O WITH TILDE
+ 00D6          ; NFKC_CF; 00F6           # L&       LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8          ; NFKC_CF; 00F8           # L&       LATIN CAPITAL LETTER O WITH STROKE
+ 00D9          ; NFKC_CF; 00F9           # L&       LATIN CAPITAL LETTER U WITH GRAVE
+ 00DA          ; NFKC_CF; 00FA           # L&       LATIN CAPITAL LETTER U WITH ACUTE
+ 00DB          ; NFKC_CF; 00FB           # L&       LATIN CAPITAL LETTER U WITH CIRCUMFLEX
+ 00DC          ; NFKC_CF; 00FC           # L&       LATIN CAPITAL LETTER U WITH DIAERESIS
+ 00DD          ; NFKC_CF; 00FD           # L&       LATIN CAPITAL LETTER Y WITH ACUTE
+ 00DE          ; NFKC_CF; 00FE           # L&       LATIN CAPITAL LETTER THORN
+ 00DF          ; NFKC_CF; 0073 0073      # L&       LATIN SMALL LETTER SHARP S
+ 0100          ; NFKC_CF; 0101           # L&       LATIN CAPITAL LETTER A WITH MACRON
+ 0102          ; NFKC_CF; 0103           # L&       LATIN CAPITAL LETTER A WITH BREVE
+ 0104          ; NFKC_CF; 0105           # L&       LATIN CAPITAL LETTER A WITH OGONEK
+ 0106          ; NFKC_CF; 0107           # L&       LATIN CAPITAL LETTER C WITH ACUTE
+ 0108          ; NFKC_CF; 0109           # L&       LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ 010A          ; NFKC_CF; 010B           # L&       LATIN CAPITAL LETTER C WITH DOT ABOVE
+ 010C          ; NFKC_CF; 010D           # L&       LATIN CAPITAL LETTER C WITH CARON
+ 010E          ; NFKC_CF; 010F           # L&       LATIN CAPITAL LETTER D WITH CARON
+ 0110          ; NFKC_CF; 0111           # L&       LATIN CAPITAL LETTER D WITH STROKE
+ 0112          ; NFKC_CF; 0113           # L&       LATIN CAPITAL LETTER E WITH MACRON
+ 0114          ; NFKC_CF; 0115           # L&       LATIN CAPITAL LETTER E WITH BREVE
+ 0116          ; NFKC_CF; 0117           # L&       LATIN CAPITAL LETTER E WITH DOT ABOVE
+ 0118          ; NFKC_CF; 0119           # L&       LATIN CAPITAL LETTER E WITH OGONEK
+ 011A          ; NFKC_CF; 011B           # L&       LATIN CAPITAL LETTER E WITH CARON
+ 011C          ; NFKC_CF; 011D           # L&       LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ 011E          ; NFKC_CF; 011F           # L&       LATIN CAPITAL LETTER G WITH BREVE
+ 0120          ; NFKC_CF; 0121           # L&       LATIN CAPITAL LETTER G WITH DOT ABOVE
+ 0122          ; NFKC_CF; 0123           # L&       LATIN CAPITAL LETTER G WITH CEDILLA
+ 0124          ; NFKC_CF; 0125           # L&       LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ 0126          ; NFKC_CF; 0127           # L&       LATIN CAPITAL LETTER H WITH STROKE
+ 0128          ; NFKC_CF; 0129           # L&       LATIN CAPITAL LETTER I WITH TILDE
+ 012A          ; NFKC_CF; 012B           # L&       LATIN CAPITAL LETTER I WITH MACRON
+ 012C          ; NFKC_CF; 012D           # L&       LATIN CAPITAL LETTER I WITH BREVE
+ 012E          ; NFKC_CF; 012F           # L&       LATIN CAPITAL LETTER I WITH OGONEK
+ 0130          ; NFKC_CF; 0069 0307      # L&       LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132..0133    ; NFKC_CF; 0069 006A      # L&   [2] LATIN CAPITAL LIGATURE IJ..LATIN SMALL LIGATURE IJ
+ 0134          ; NFKC_CF; 0135           # L&       LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ 0136          ; NFKC_CF; 0137           # L&       LATIN CAPITAL LETTER K WITH CEDILLA
+ 0139          ; NFKC_CF; 013A           # L&       LATIN CAPITAL LETTER L WITH ACUTE
+ 013B          ; NFKC_CF; 013C           # L&       LATIN CAPITAL LETTER L WITH CEDILLA
+ 013D          ; NFKC_CF; 013E           # L&       LATIN CAPITAL LETTER L WITH CARON
+ 013F..0140    ; NFKC_CF; 006C 00B7      # L&   [2] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN SMALL LETTER L WITH MIDDLE DOT
+ 0141          ; NFKC_CF; 0142           # L&       LATIN CAPITAL LETTER L WITH STROKE
+ 0143          ; NFKC_CF; 0144           # L&       LATIN CAPITAL LETTER N WITH ACUTE
+ 0145          ; NFKC_CF; 0146           # L&       LATIN CAPITAL LETTER N WITH CEDILLA
+ 0147          ; NFKC_CF; 0148           # L&       LATIN CAPITAL LETTER N WITH CARON
+ 0149          ; NFKC_CF; 02BC 006E      # L&       LATIN SMALL LETTER N PRECEDED BY APOSTROPHE
+ 014A          ; NFKC_CF; 014B           # L&       LATIN CAPITAL LETTER ENG
+ 014C          ; NFKC_CF; 014D           # L&       LATIN CAPITAL LETTER O WITH MACRON
+ 014E          ; NFKC_CF; 014F           # L&       LATIN CAPITAL LETTER O WITH BREVE
+ 0150          ; NFKC_CF; 0151           # L&       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ 0152          ; NFKC_CF; 0153           # L&       LATIN CAPITAL LIGATURE OE
+ 0154          ; NFKC_CF; 0155           # L&       LATIN CAPITAL LETTER R WITH ACUTE
+ 0156          ; NFKC_CF; 0157           # L&       LATIN CAPITAL LETTER R WITH CEDILLA
+ 0158          ; NFKC_CF; 0159           # L&       LATIN CAPITAL LETTER R WITH CARON
+ 015A          ; NFKC_CF; 015B           # L&       LATIN CAPITAL LETTER S WITH ACUTE
+ 015C          ; NFKC_CF; 015D           # L&       LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ 015E          ; NFKC_CF; 015F           # L&       LATIN CAPITAL LETTER S WITH CEDILLA
+ 0160          ; NFKC_CF; 0161           # L&       LATIN CAPITAL LETTER S WITH CARON
+ 0162          ; NFKC_CF; 0163           # L&       LATIN CAPITAL LETTER T WITH CEDILLA
+ 0164          ; NFKC_CF; 0165           # L&       LATIN CAPITAL LETTER T WITH CARON
+ 0166          ; NFKC_CF; 0167           # L&       LATIN CAPITAL LETTER T WITH STROKE
+ 0168          ; NFKC_CF; 0169           # L&       LATIN CAPITAL LETTER U WITH TILDE
+ 016A          ; NFKC_CF; 016B           # L&       LATIN CAPITAL LETTER U WITH MACRON
+ 016C          ; NFKC_CF; 016D           # L&       LATIN CAPITAL LETTER U WITH BREVE
+ 016E          ; NFKC_CF; 016F           # L&       LATIN CAPITAL LETTER U WITH RING ABOVE
+ 0170          ; NFKC_CF; 0171           # L&       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ 0172          ; NFKC_CF; 0173           # L&       LATIN CAPITAL LETTER U WITH OGONEK
+ 0174          ; NFKC_CF; 0175           # L&       LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ 0176          ; NFKC_CF; 0177           # L&       LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ 0178          ; NFKC_CF; 00FF           # L&       LATIN CAPITAL LETTER Y WITH DIAERESIS
+ 0179          ; NFKC_CF; 017A           # L&       LATIN CAPITAL LETTER Z WITH ACUTE
+ 017B          ; NFKC_CF; 017C           # L&       LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ 017D          ; NFKC_CF; 017E           # L&       LATIN CAPITAL LETTER Z WITH CARON
+ 017F          ; NFKC_CF; 0073           # L&       LATIN SMALL LETTER LONG S
+ 0181          ; NFKC_CF; 0253           # L&       LATIN CAPITAL LETTER B WITH HOOK
+ 0182          ; NFKC_CF; 0183           # L&       LATIN CAPITAL LETTER B WITH TOPBAR
+ 0184          ; NFKC_CF; 0185           # L&       LATIN CAPITAL LETTER TONE SIX
+ 0186          ; NFKC_CF; 0254           # L&       LATIN CAPITAL LETTER OPEN O
+ 0187          ; NFKC_CF; 0188           # L&       LATIN CAPITAL LETTER C WITH HOOK
+ 0189          ; NFKC_CF; 0256           # L&       LATIN CAPITAL LETTER AFRICAN D
+ 018A          ; NFKC_CF; 0257           # L&       LATIN CAPITAL LETTER D WITH HOOK
+ 018B          ; NFKC_CF; 018C           # L&       LATIN CAPITAL LETTER D WITH TOPBAR
+ 018E          ; NFKC_CF; 01DD           # L&       LATIN CAPITAL LETTER REVERSED E
+ 018F          ; NFKC_CF; 0259           # L&       LATIN CAPITAL LETTER SCHWA
+ 0190          ; NFKC_CF; 025B           # L&       LATIN CAPITAL LETTER OPEN E
+ 0191          ; NFKC_CF; 0192           # L&       LATIN CAPITAL LETTER F WITH HOOK
+ 0193          ; NFKC_CF; 0260           # L&       LATIN CAPITAL LETTER G WITH HOOK
+ 0194          ; NFKC_CF; 0263           # L&       LATIN CAPITAL LETTER GAMMA
+ 0196          ; NFKC_CF; 0269           # L&       LATIN CAPITAL LETTER IOTA
+ 0197          ; NFKC_CF; 0268           # L&       LATIN CAPITAL LETTER I WITH STROKE
+ 0198          ; NFKC_CF; 0199           # L&       LATIN CAPITAL LETTER K WITH HOOK
+ 019C          ; NFKC_CF; 026F           # L&       LATIN CAPITAL LETTER TURNED M
+ 019D          ; NFKC_CF; 0272           # L&       LATIN CAPITAL LETTER N WITH LEFT HOOK
+ 019F          ; NFKC_CF; 0275           # L&       LATIN CAPITAL LETTER O WITH MIDDLE TILDE
+ 01A0          ; NFKC_CF; 01A1           # L&       LATIN CAPITAL LETTER O WITH HORN
+ 01A2          ; NFKC_CF; 01A3           # L&       LATIN CAPITAL LETTER OI
+ 01A4          ; NFKC_CF; 01A5           # L&       LATIN CAPITAL LETTER P WITH HOOK
+ 01A6          ; NFKC_CF; 0280           # L&       LATIN LETTER YR
+ 01A7          ; NFKC_CF; 01A8           # L&       LATIN CAPITAL LETTER TONE TWO
+ 01A9          ; NFKC_CF; 0283           # L&       LATIN CAPITAL LETTER ESH
+ 01AC          ; NFKC_CF; 01AD           # L&       LATIN CAPITAL LETTER T WITH HOOK
+ 01AE          ; NFKC_CF; 0288           # L&       LATIN CAPITAL LETTER T WITH RETROFLEX HOOK
+ 01AF          ; NFKC_CF; 01B0           # L&       LATIN CAPITAL LETTER U WITH HORN
+ 01B1          ; NFKC_CF; 028A           # L&       LATIN CAPITAL LETTER UPSILON
+ 01B2          ; NFKC_CF; 028B           # L&       LATIN CAPITAL LETTER V WITH HOOK
+ 01B3          ; NFKC_CF; 01B4           # L&       LATIN CAPITAL LETTER Y WITH HOOK
+ 01B5          ; NFKC_CF; 01B6           # L&       LATIN CAPITAL LETTER Z WITH STROKE
+ 01B7          ; NFKC_CF; 0292           # L&       LATIN CAPITAL LETTER EZH
+ 01B8          ; NFKC_CF; 01B9           # L&       LATIN CAPITAL LETTER EZH REVERSED
+ 01BC          ; NFKC_CF; 01BD           # L&       LATIN CAPITAL LETTER TONE FIVE
+ 01C4..01C6    ; NFKC_CF; 0064 017E      # L&   [3] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER DZ WITH CARON
+ 01C7..01C9    ; NFKC_CF; 006C 006A      # L&   [3] LATIN CAPITAL LETTER LJ..LATIN SMALL LETTER LJ
+ 01CA..01CC    ; NFKC_CF; 006E 006A      # L&   [3] LATIN CAPITAL LETTER NJ..LATIN SMALL LETTER NJ
+ 01CD          ; NFKC_CF; 01CE           # L&       LATIN CAPITAL LETTER A WITH CARON
+ 01CF          ; NFKC_CF; 01D0           # L&       LATIN CAPITAL LETTER I WITH CARON
+ 01D1          ; NFKC_CF; 01D2           # L&       LATIN CAPITAL LETTER O WITH CARON
+ 01D3          ; NFKC_CF; 01D4           # L&       LATIN CAPITAL LETTER U WITH CARON
+ 01D5          ; NFKC_CF; 01D6           # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+ 01D7          ; NFKC_CF; 01D8           # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+ 01D9          ; NFKC_CF; 01DA           # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ 01DB          ; NFKC_CF; 01DC           # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE          ; NFKC_CF; 01DF           # L&       LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+ 01E0          ; NFKC_CF; 01E1           # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+ 01E2          ; NFKC_CF; 01E3           # L&       LATIN CAPITAL LETTER AE WITH MACRON
+ 01E4          ; NFKC_CF; 01E5           # L&       LATIN CAPITAL LETTER G WITH STROKE
+ 01E6          ; NFKC_CF; 01E7           # L&       LATIN CAPITAL LETTER G WITH CARON
+ 01E8          ; NFKC_CF; 01E9           # L&       LATIN CAPITAL LETTER K WITH CARON
+ 01EA          ; NFKC_CF; 01EB           # L&       LATIN CAPITAL LETTER O WITH OGONEK
+ 01EC          ; NFKC_CF; 01ED           # L&       LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+ 01EE          ; NFKC_CF; 01EF           # L&       LATIN CAPITAL LETTER EZH WITH CARON
+ 01F1..01F3    ; NFKC_CF; 0064 007A      # L&   [3] LATIN CAPITAL LETTER DZ..LATIN SMALL LETTER DZ
+ 01F4          ; NFKC_CF; 01F5           # L&       LATIN CAPITAL LETTER G WITH ACUTE
+ 01F6          ; NFKC_CF; 0195           # L&       LATIN CAPITAL LETTER HWAIR
+ 01F7          ; NFKC_CF; 01BF           # L&       LATIN CAPITAL LETTER WYNN
+ 01F8          ; NFKC_CF; 01F9           # L&       LATIN CAPITAL LETTER N WITH GRAVE
+ 01FA          ; NFKC_CF; 01FB           # L&       LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ 01FC          ; NFKC_CF; 01FD           # L&       LATIN CAPITAL LETTER AE WITH ACUTE
+ 01FE          ; NFKC_CF; 01FF           # L&       LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ 0200          ; NFKC_CF; 0201           # L&       LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+ 0202          ; NFKC_CF; 0203           # L&       LATIN CAPITAL LETTER A WITH INVERTED BREVE
+ 0204          ; NFKC_CF; 0205           # L&       LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+ 0206          ; NFKC_CF; 0207           # L&       LATIN CAPITAL LETTER E WITH INVERTED BREVE
+ 0208          ; NFKC_CF; 0209           # L&       LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+ 020A          ; NFKC_CF; 020B           # L&       LATIN CAPITAL LETTER I WITH INVERTED BREVE
+ 020C          ; NFKC_CF; 020D           # L&       LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+ 020E          ; NFKC_CF; 020F           # L&       LATIN CAPITAL LETTER O WITH INVERTED BREVE
+ 0210          ; NFKC_CF; 0211           # L&       LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+ 0212          ; NFKC_CF; 0213           # L&       LATIN CAPITAL LETTER R WITH INVERTED BREVE
+ 0214          ; NFKC_CF; 0215           # L&       LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+ 0216          ; NFKC_CF; 0217           # L&       LATIN CAPITAL LETTER U WITH INVERTED BREVE
+ 0218          ; NFKC_CF; 0219           # L&       LATIN CAPITAL LETTER S WITH COMMA BELOW
+ 021A          ; NFKC_CF; 021B           # L&       LATIN CAPITAL LETTER T WITH COMMA BELOW
+ 021C          ; NFKC_CF; 021D           # L&       LATIN CAPITAL LETTER YOGH
+ 021E          ; NFKC_CF; 021F           # L&       LATIN CAPITAL LETTER H WITH CARON
+ 0220          ; NFKC_CF; 019E           # L&       LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+ 0222          ; NFKC_CF; 0223           # L&       LATIN CAPITAL LETTER OU
+ 0224          ; NFKC_CF; 0225           # L&       LATIN CAPITAL LETTER Z WITH HOOK
+ 0226          ; NFKC_CF; 0227           # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE
+ 0228          ; NFKC_CF; 0229           # L&       LATIN CAPITAL LETTER E WITH CEDILLA
+ 022A          ; NFKC_CF; 022B           # L&       LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+ 022C          ; NFKC_CF; 022D           # L&       LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+ 022E          ; NFKC_CF; 022F           # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE
+ 0230          ; NFKC_CF; 0231           # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+ 0232          ; NFKC_CF; 0233           # L&       LATIN CAPITAL LETTER Y WITH MACRON
+ 023A          ; NFKC_CF; 2C65           # L&       LATIN CAPITAL LETTER A WITH STROKE
+ 023B          ; NFKC_CF; 023C           # L&       LATIN CAPITAL LETTER C WITH STROKE
+ 023D          ; NFKC_CF; 019A           # L&       LATIN CAPITAL LETTER L WITH BAR
+ 023E          ; NFKC_CF; 2C66           # L&       LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+ 0241          ; NFKC_CF; 0242           # L&       LATIN CAPITAL LETTER GLOTTAL STOP
+ 0243          ; NFKC_CF; 0180           # L&       LATIN CAPITAL LETTER B WITH STROKE
+ 0244          ; NFKC_CF; 0289           # L&       LATIN CAPITAL LETTER U BAR
+ 0245          ; NFKC_CF; 028C           # L&       LATIN CAPITAL LETTER TURNED V
+ 0246          ; NFKC_CF; 0247           # L&       LATIN CAPITAL LETTER E WITH STROKE
+ 0248          ; NFKC_CF; 0249           # L&       LATIN CAPITAL LETTER J WITH STROKE
+ 024A          ; NFKC_CF; 024B           # L&       LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+ 024C          ; NFKC_CF; 024D           # L&       LATIN CAPITAL LETTER R WITH STROKE
+ 024E          ; NFKC_CF; 024F           # L&       LATIN CAPITAL LETTER Y WITH STROKE
+ 02B0          ; NFKC_CF; 0068           # Lm       MODIFIER LETTER SMALL H
+ 02B1          ; NFKC_CF; 0266           # Lm       MODIFIER LETTER SMALL H WITH HOOK
+ 02B2          ; NFKC_CF; 006A           # Lm       MODIFIER LETTER SMALL J
+ 02B3          ; NFKC_CF; 0072           # Lm       MODIFIER LETTER SMALL R
+ 02B4          ; NFKC_CF; 0279           # Lm       MODIFIER LETTER SMALL TURNED R
+ 02B5          ; NFKC_CF; 027B           # Lm       MODIFIER LETTER SMALL TURNED R WITH HOOK
+ 02B6          ; NFKC_CF; 0281           # Lm       MODIFIER LETTER SMALL CAPITAL INVERTED R
+ 02B7          ; NFKC_CF; 0077           # Lm       MODIFIER LETTER SMALL W
+ 02B8          ; NFKC_CF; 0079           # Lm       MODIFIER LETTER SMALL Y
+ 02D8          ; NFKC_CF; 0020 0306      # Sk       BREVE
+ 02D9          ; NFKC_CF; 0020 0307      # Sk       DOT ABOVE
+ 02DA          ; NFKC_CF; 0020 030A      # Sk       RING ABOVE
+ 02DB          ; NFKC_CF; 0020 0328      # Sk       OGONEK
+ 02DC          ; NFKC_CF; 0020 0303      # Sk       SMALL TILDE
+ 02DD          ; NFKC_CF; 0020 030B      # Sk       DOUBLE ACUTE ACCENT
+ 02E0          ; NFKC_CF; 0263           # Lm       MODIFIER LETTER SMALL GAMMA
+ 02E1          ; NFKC_CF; 006C           # Lm       MODIFIER LETTER SMALL L
+ 02E2          ; NFKC_CF; 0073           # Lm       MODIFIER LETTER SMALL S
+ 02E3          ; NFKC_CF; 0078           # Lm       MODIFIER LETTER SMALL X
+ 02E4          ; NFKC_CF; 0295           # Lm       MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 0340          ; NFKC_CF; 0300           # Mn       COMBINING GRAVE TONE MARK
+ 0341          ; NFKC_CF; 0301           # Mn       COMBINING ACUTE TONE MARK
+ 0343          ; NFKC_CF; 0313           # Mn       COMBINING GREEK KORONIS
+ 0344          ; NFKC_CF; 0308 0301      # Mn       COMBINING GREEK DIALYTIKA TONOS
+ 0345          ; NFKC_CF; 03B9           # Mn       COMBINING GREEK YPOGEGRAMMENI
+ 034F          ; NFKC_CF;                # Mn       COMBINING GRAPHEME JOINER
+ 0370          ; NFKC_CF; 0371           # L&       GREEK CAPITAL LETTER HETA
+ 0372          ; NFKC_CF; 0373           # L&       GREEK CAPITAL LETTER ARCHAIC SAMPI
+ 0374          ; NFKC_CF; 02B9           # Lm       GREEK NUMERAL SIGN
+ 0376          ; NFKC_CF; 0377           # L&       GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; NFKC_CF; 0020 03B9      # Lm       GREEK YPOGEGRAMMENI
+ 037E          ; NFKC_CF; 003B           # Po       GREEK QUESTION MARK
+ 037F          ; NFKC_CF; 03F3           # L&       GREEK CAPITAL LETTER YOT
+ 0384          ; NFKC_CF; 0020 0301      # Sk       GREEK TONOS
+ 0385          ; NFKC_CF; 0020 0308 0301 # Sk       GREEK DIALYTIKA TONOS
+ 0386          ; NFKC_CF; 03AC           # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; NFKC_CF; 00B7           # Po       GREEK ANO TELEIA
+ 0388          ; NFKC_CF; 03AD           # L&       GREEK CAPITAL LETTER EPSILON WITH TONOS
+ 0389          ; NFKC_CF; 03AE           # L&       GREEK CAPITAL LETTER ETA WITH TONOS
+ 038A          ; NFKC_CF; 03AF           # L&       GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; NFKC_CF; 03CC           # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E          ; NFKC_CF; 03CD           # L&       GREEK CAPITAL LETTER UPSILON WITH TONOS
+ 038F          ; NFKC_CF; 03CE           # L&       GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 0391          ; NFKC_CF; 03B1           # L&       GREEK CAPITAL LETTER ALPHA
+ 0392          ; NFKC_CF; 03B2           # L&       GREEK CAPITAL LETTER BETA
+ 0393          ; NFKC_CF; 03B3           # L&       GREEK CAPITAL LETTER GAMMA
+ 0394          ; NFKC_CF; 03B4           # L&       GREEK CAPITAL LETTER DELTA
+ 0395          ; NFKC_CF; 03B5           # L&       GREEK CAPITAL LETTER EPSILON
+ 0396          ; NFKC_CF; 03B6           # L&       GREEK CAPITAL LETTER ZETA
+ 0397          ; NFKC_CF; 03B7           # L&       GREEK CAPITAL LETTER ETA
+ 0398          ; NFKC_CF; 03B8           # L&       GREEK CAPITAL LETTER THETA
+ 0399          ; NFKC_CF; 03B9           # L&       GREEK CAPITAL LETTER IOTA
+ 039A          ; NFKC_CF; 03BA           # L&       GREEK CAPITAL LETTER KAPPA
+ 039B          ; NFKC_CF; 03BB           # L&       GREEK CAPITAL LETTER LAMDA
+ 039C          ; NFKC_CF; 03BC           # L&       GREEK CAPITAL LETTER MU
+ 039D          ; NFKC_CF; 03BD           # L&       GREEK CAPITAL LETTER NU
+ 039E          ; NFKC_CF; 03BE           # L&       GREEK CAPITAL LETTER XI
+ 039F          ; NFKC_CF; 03BF           # L&       GREEK CAPITAL LETTER OMICRON
+ 03A0          ; NFKC_CF; 03C0           # L&       GREEK CAPITAL LETTER PI
+ 03A1          ; NFKC_CF; 03C1           # L&       GREEK CAPITAL LETTER RHO
+ 03A3          ; NFKC_CF; 03C3           # L&       GREEK CAPITAL LETTER SIGMA
+ 03A4          ; NFKC_CF; 03C4           # L&       GREEK CAPITAL LETTER TAU
+ 03A5          ; NFKC_CF; 03C5           # L&       GREEK CAPITAL LETTER UPSILON
+ 03A6          ; NFKC_CF; 03C6           # L&       GREEK CAPITAL LETTER PHI
+ 03A7          ; NFKC_CF; 03C7           # L&       GREEK CAPITAL LETTER CHI
+ 03A8          ; NFKC_CF; 03C8           # L&       GREEK CAPITAL LETTER PSI
+ 03A9          ; NFKC_CF; 03C9           # L&       GREEK CAPITAL LETTER OMEGA
+ 03AA          ; NFKC_CF; 03CA           # L&       GREEK CAPITAL LETTER IOTA WITH DIALYTIKA
+ 03AB          ; NFKC_CF; 03CB           # L&       GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 03C2          ; NFKC_CF; 03C3           # L&       GREEK SMALL LETTER FINAL SIGMA
+ 03CF          ; NFKC_CF; 03D7           # L&       GREEK CAPITAL KAI SYMBOL
+ 03D0          ; NFKC_CF; 03B2           # L&       GREEK BETA SYMBOL
+ 03D1          ; NFKC_CF; 03B8           # L&       GREEK THETA SYMBOL
+ 03D2          ; NFKC_CF; 03C5           # L&       GREEK UPSILON WITH HOOK SYMBOL
+ 03D3          ; NFKC_CF; 03CD           # L&       GREEK UPSILON WITH ACUTE AND HOOK SYMBOL
+ 03D4          ; NFKC_CF; 03CB           # L&       GREEK UPSILON WITH DIAERESIS AND HOOK SYMBOL
+ 03D5          ; NFKC_CF; 03C6           # L&       GREEK PHI SYMBOL
+ 03D6          ; NFKC_CF; 03C0           # L&       GREEK PI SYMBOL
+ 03D8          ; NFKC_CF; 03D9           # L&       GREEK LETTER ARCHAIC KOPPA
+ 03DA          ; NFKC_CF; 03DB           # L&       GREEK LETTER STIGMA
+ 03DC          ; NFKC_CF; 03DD           # L&       GREEK LETTER DIGAMMA
+ 03DE          ; NFKC_CF; 03DF           # L&       GREEK LETTER KOPPA
+ 03E0          ; NFKC_CF; 03E1           # L&       GREEK LETTER SAMPI
+ 03E2          ; NFKC_CF; 03E3           # L&       COPTIC CAPITAL LETTER SHEI
+ 03E4          ; NFKC_CF; 03E5           # L&       COPTIC CAPITAL LETTER FEI
+ 03E6          ; NFKC_CF; 03E7           # L&       COPTIC CAPITAL LETTER KHEI
+ 03E8          ; NFKC_CF; 03E9           # L&       COPTIC CAPITAL LETTER HORI
+ 03EA          ; NFKC_CF; 03EB           # L&       COPTIC CAPITAL LETTER GANGIA
+ 03EC          ; NFKC_CF; 03ED           # L&       COPTIC CAPITAL LETTER SHIMA
+ 03EE          ; NFKC_CF; 03EF           # L&       COPTIC CAPITAL LETTER DEI
+ 03F0          ; NFKC_CF; 03BA           # L&       GREEK KAPPA SYMBOL
+ 03F1          ; NFKC_CF; 03C1           # L&       GREEK RHO SYMBOL
+ 03F2          ; NFKC_CF; 03C3           # L&       GREEK LUNATE SIGMA SYMBOL
+ 03F4          ; NFKC_CF; 03B8           # L&       GREEK CAPITAL THETA SYMBOL
+ 03F5          ; NFKC_CF; 03B5           # L&       GREEK LUNATE EPSILON SYMBOL
+ 03F7          ; NFKC_CF; 03F8           # L&       GREEK CAPITAL LETTER SHO
+ 03F9          ; NFKC_CF; 03C3           # L&       GREEK CAPITAL LUNATE SIGMA SYMBOL
+ 03FA          ; NFKC_CF; 03FB           # L&       GREEK CAPITAL LETTER SAN
+ 03FD          ; NFKC_CF; 037B           # L&       GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL
+ 03FE          ; NFKC_CF; 037C           # L&       GREEK CAPITAL DOTTED LUNATE SIGMA SYMBOL
+ 03FF          ; NFKC_CF; 037D           # L&       GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL
+ 0400          ; NFKC_CF; 0450           # L&       CYRILLIC CAPITAL LETTER IE WITH GRAVE
+ 0401          ; NFKC_CF; 0451           # L&       CYRILLIC CAPITAL LETTER IO
+ 0402          ; NFKC_CF; 0452           # L&       CYRILLIC CAPITAL LETTER DJE
+ 0403          ; NFKC_CF; 0453           # L&       CYRILLIC CAPITAL LETTER GJE
+ 0404          ; NFKC_CF; 0454           # L&       CYRILLIC CAPITAL LETTER UKRAINIAN IE
+ 0405          ; NFKC_CF; 0455           # L&       CYRILLIC CAPITAL LETTER DZE
+ 0406          ; NFKC_CF; 0456           # L&       CYRILLIC CAPITAL LETTER BYELORUSSIAN-UKRAINIAN I
+ 0407          ; NFKC_CF; 0457           # L&       CYRILLIC CAPITAL LETTER YI
+ 0408          ; NFKC_CF; 0458           # L&       CYRILLIC CAPITAL LETTER JE
+ 0409          ; NFKC_CF; 0459           # L&       CYRILLIC CAPITAL LETTER LJE
+ 040A          ; NFKC_CF; 045A           # L&       CYRILLIC CAPITAL LETTER NJE
+ 040B          ; NFKC_CF; 045B           # L&       CYRILLIC CAPITAL LETTER TSHE
+ 040C          ; NFKC_CF; 045C           # L&       CYRILLIC CAPITAL LETTER KJE
+ 040D          ; NFKC_CF; 045D           # L&       CYRILLIC CAPITAL LETTER I WITH GRAVE
+ 040E          ; NFKC_CF; 045E           # L&       CYRILLIC CAPITAL LETTER SHORT U
+ 040F          ; NFKC_CF; 045F           # L&       CYRILLIC CAPITAL LETTER DZHE
+ 0410          ; NFKC_CF; 0430           # L&       CYRILLIC CAPITAL LETTER A
+ 0411          ; NFKC_CF; 0431           # L&       CYRILLIC CAPITAL LETTER BE
+ 0412          ; NFKC_CF; 0432           # L&       CYRILLIC CAPITAL LETTER VE
+ 0413          ; NFKC_CF; 0433           # L&       CYRILLIC CAPITAL LETTER GHE
+ 0414          ; NFKC_CF; 0434           # L&       CYRILLIC CAPITAL LETTER DE
+ 0415          ; NFKC_CF; 0435           # L&       CYRILLIC CAPITAL LETTER IE
+ 0416          ; NFKC_CF; 0436           # L&       CYRILLIC CAPITAL LETTER ZHE
+ 0417          ; NFKC_CF; 0437           # L&       CYRILLIC CAPITAL LETTER ZE
+ 0418          ; NFKC_CF; 0438           # L&       CYRILLIC CAPITAL LETTER I
+ 0419          ; NFKC_CF; 0439           # L&       CYRILLIC CAPITAL LETTER SHORT I
+ 041A          ; NFKC_CF; 043A           # L&       CYRILLIC CAPITAL LETTER KA
+ 041B          ; NFKC_CF; 043B           # L&       CYRILLIC CAPITAL LETTER EL
+ 041C          ; NFKC_CF; 043C           # L&       CYRILLIC CAPITAL LETTER EM
+ 041D          ; NFKC_CF; 043D           # L&       CYRILLIC CAPITAL LETTER EN
+ 041E          ; NFKC_CF; 043E           # L&       CYRILLIC CAPITAL LETTER O
+ 041F          ; NFKC_CF; 043F           # L&       CYRILLIC CAPITAL LETTER PE
+ 0420          ; NFKC_CF; 0440           # L&       CYRILLIC CAPITAL LETTER ER
+ 0421          ; NFKC_CF; 0441           # L&       CYRILLIC CAPITAL LETTER ES
+ 0422          ; NFKC_CF; 0442           # L&       CYRILLIC CAPITAL LETTER TE
+ 0423          ; NFKC_CF; 0443           # L&       CYRILLIC CAPITAL LETTER U
+ 0424          ; NFKC_CF; 0444           # L&       CYRILLIC CAPITAL LETTER EF
+ 0425          ; NFKC_CF; 0445           # L&       CYRILLIC CAPITAL LETTER HA
+ 0426          ; NFKC_CF; 0446           # L&       CYRILLIC CAPITAL LETTER TSE
+ 0427          ; NFKC_CF; 0447           # L&       CYRILLIC CAPITAL LETTER CHE
+ 0428          ; NFKC_CF; 0448           # L&       CYRILLIC CAPITAL LETTER SHA
+ 0429          ; NFKC_CF; 0449           # L&       CYRILLIC CAPITAL LETTER SHCHA
+ 042A          ; NFKC_CF; 044A           # L&       CYRILLIC CAPITAL LETTER HARD SIGN
+ 042B          ; NFKC_CF; 044B           # L&       CYRILLIC CAPITAL LETTER YERU
+ 042C          ; NFKC_CF; 044C           # L&       CYRILLIC CAPITAL LETTER SOFT SIGN
+ 042D          ; NFKC_CF; 044D           # L&       CYRILLIC CAPITAL LETTER E
+ 042E          ; NFKC_CF; 044E           # L&       CYRILLIC CAPITAL LETTER YU
+ 042F          ; NFKC_CF; 044F           # L&       CYRILLIC CAPITAL LETTER YA
+ 0460          ; NFKC_CF; 0461           # L&       CYRILLIC CAPITAL LETTER OMEGA
+ 0462          ; NFKC_CF; 0463           # L&       CYRILLIC CAPITAL LETTER YAT
+ 0464          ; NFKC_CF; 0465           # L&       CYRILLIC CAPITAL LETTER IOTIFIED E
+ 0466          ; NFKC_CF; 0467           # L&       CYRILLIC CAPITAL LETTER LITTLE YUS
+ 0468          ; NFKC_CF; 0469           # L&       CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+ 046A          ; NFKC_CF; 046B           # L&       CYRILLIC CAPITAL LETTER BIG YUS
+ 046C          ; NFKC_CF; 046D           # L&       CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+ 046E          ; NFKC_CF; 046F           # L&       CYRILLIC CAPITAL LETTER KSI
+ 0470          ; NFKC_CF; 0471           # L&       CYRILLIC CAPITAL LETTER PSI
+ 0472          ; NFKC_CF; 0473           # L&       CYRILLIC CAPITAL LETTER FITA
+ 0474          ; NFKC_CF; 0475           # L&       CYRILLIC CAPITAL LETTER IZHITSA
+ 0476          ; NFKC_CF; 0477           # L&       CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0478          ; NFKC_CF; 0479           # L&       CYRILLIC CAPITAL LETTER UK
+ 047A          ; NFKC_CF; 047B           # L&       CYRILLIC CAPITAL LETTER ROUND OMEGA
+ 047C          ; NFKC_CF; 047D           # L&       CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+ 047E          ; NFKC_CF; 047F           # L&       CYRILLIC CAPITAL LETTER OT
+ 0480          ; NFKC_CF; 0481           # L&       CYRILLIC CAPITAL LETTER KOPPA
+ 048A          ; NFKC_CF; 048B           # L&       CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+ 048C          ; NFKC_CF; 048D           # L&       CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+ 048E          ; NFKC_CF; 048F           # L&       CYRILLIC CAPITAL LETTER ER WITH TICK
+ 0490          ; NFKC_CF; 0491           # L&       CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ 0492          ; NFKC_CF; 0493           # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ 0494          ; NFKC_CF; 0495           # L&       CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+ 0496          ; NFKC_CF; 0497           # L&       CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ 0498          ; NFKC_CF; 0499           # L&       CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+ 049A          ; NFKC_CF; 049B           # L&       CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ 049C          ; NFKC_CF; 049D           # L&       CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+ 049E          ; NFKC_CF; 049F           # L&       CYRILLIC CAPITAL LETTER KA WITH STROKE
+ 04A0          ; NFKC_CF; 04A1           # L&       CYRILLIC CAPITAL LETTER BASHKIR KA
+ 04A2          ; NFKC_CF; 04A3           # L&       CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+ 04A4          ; NFKC_CF; 04A5           # L&       CYRILLIC CAPITAL LIGATURE EN GHE
+ 04A6          ; NFKC_CF; 04A7           # L&       CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+ 04A8          ; NFKC_CF; 04A9           # L&       CYRILLIC CAPITAL LETTER ABKHASIAN HA
+ 04AA          ; NFKC_CF; 04AB           # L&       CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+ 04AC          ; NFKC_CF; 04AD           # L&       CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+ 04AE          ; NFKC_CF; 04AF           # L&       CYRILLIC CAPITAL LETTER STRAIGHT U
+ 04B0          ; NFKC_CF; 04B1           # L&       CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ 04B2          ; NFKC_CF; 04B3           # L&       CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ 04B4          ; NFKC_CF; 04B5           # L&       CYRILLIC CAPITAL LIGATURE TE TSE
+ 04B6          ; NFKC_CF; 04B7           # L&       CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ 04B8          ; NFKC_CF; 04B9           # L&       CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+ 04BA          ; NFKC_CF; 04BB           # L&       CYRILLIC CAPITAL LETTER SHHA
+ 04BC          ; NFKC_CF; 04BD           # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+ 04BE          ; NFKC_CF; 04BF           # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C0          ; NFKC_CF; 04CF           # L&       CYRILLIC LETTER PALOCHKA
+ 04C1          ; NFKC_CF; 04C2           # L&       CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+ 04C3          ; NFKC_CF; 04C4           # L&       CYRILLIC CAPITAL LETTER KA WITH HOOK
+ 04C5          ; NFKC_CF; 04C6           # L&       CYRILLIC CAPITAL LETTER EL WITH TAIL
+ 04C7          ; NFKC_CF; 04C8           # L&       CYRILLIC CAPITAL LETTER EN WITH HOOK
+ 04C9          ; NFKC_CF; 04CA           # L&       CYRILLIC CAPITAL LETTER EN WITH TAIL
+ 04CB          ; NFKC_CF; 04CC           # L&       CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+ 04CD          ; NFKC_CF; 04CE           # L&       CYRILLIC CAPITAL LETTER EM WITH TAIL
+ 04D0          ; NFKC_CF; 04D1           # L&       CYRILLIC CAPITAL LETTER A WITH BREVE
+ 04D2          ; NFKC_CF; 04D3           # L&       CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+ 04D4          ; NFKC_CF; 04D5           # L&       CYRILLIC CAPITAL LIGATURE A IE
+ 04D6          ; NFKC_CF; 04D7           # L&       CYRILLIC CAPITAL LETTER IE WITH BREVE
+ 04D8          ; NFKC_CF; 04D9           # L&       CYRILLIC CAPITAL LETTER SCHWA
+ 04DA          ; NFKC_CF; 04DB           # L&       CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+ 04DC          ; NFKC_CF; 04DD           # L&       CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+ 04DE          ; NFKC_CF; 04DF           # L&       CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+ 04E0          ; NFKC_CF; 04E1           # L&       CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+ 04E2          ; NFKC_CF; 04E3           # L&       CYRILLIC CAPITAL LETTER I WITH MACRON
+ 04E4          ; NFKC_CF; 04E5           # L&       CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+ 04E6          ; NFKC_CF; 04E7           # L&       CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+ 04E8          ; NFKC_CF; 04E9           # L&       CYRILLIC CAPITAL LETTER BARRED O
+ 04EA          ; NFKC_CF; 04EB           # L&       CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+ 04EC          ; NFKC_CF; 04ED           # L&       CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ 04EE          ; NFKC_CF; 04EF           # L&       CYRILLIC CAPITAL LETTER U WITH MACRON
+ 04F0          ; NFKC_CF; 04F1           # L&       CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+ 04F2          ; NFKC_CF; 04F3           # L&       CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+ 04F4          ; NFKC_CF; 04F5           # L&       CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+ 04F6          ; NFKC_CF; 04F7           # L&       CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+ 04F8          ; NFKC_CF; 04F9           # L&       CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+ 04FA          ; NFKC_CF; 04FB           # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+ 04FC          ; NFKC_CF; 04FD           # L&       CYRILLIC CAPITAL LETTER HA WITH HOOK
+ 04FE          ; NFKC_CF; 04FF           # L&       CYRILLIC CAPITAL LETTER HA WITH STROKE
+ 0500          ; NFKC_CF; 0501           # L&       CYRILLIC CAPITAL LETTER KOMI DE
+ 0502          ; NFKC_CF; 0503           # L&       CYRILLIC CAPITAL LETTER KOMI DJE
+ 0504          ; NFKC_CF; 0505           # L&       CYRILLIC CAPITAL LETTER KOMI ZJE
+ 0506          ; NFKC_CF; 0507           # L&       CYRILLIC CAPITAL LETTER KOMI DZJE
+ 0508          ; NFKC_CF; 0509           # L&       CYRILLIC CAPITAL LETTER KOMI LJE
+ 050A          ; NFKC_CF; 050B           # L&       CYRILLIC CAPITAL LETTER KOMI NJE
+ 050C          ; NFKC_CF; 050D           # L&       CYRILLIC CAPITAL LETTER KOMI SJE
+ 050E          ; NFKC_CF; 050F           # L&       CYRILLIC CAPITAL LETTER KOMI TJE
+ 0510          ; NFKC_CF; 0511           # L&       CYRILLIC CAPITAL LETTER REVERSED ZE
+ 0512          ; NFKC_CF; 0513           # L&       CYRILLIC CAPITAL LETTER EL WITH HOOK
+ 0514          ; NFKC_CF; 0515           # L&       CYRILLIC CAPITAL LETTER LHA
+ 0516          ; NFKC_CF; 0517           # L&       CYRILLIC CAPITAL LETTER RHA
+ 0518          ; NFKC_CF; 0519           # L&       CYRILLIC CAPITAL LETTER YAE
+ 051A          ; NFKC_CF; 051B           # L&       CYRILLIC CAPITAL LETTER QA
+ 051C          ; NFKC_CF; 051D           # L&       CYRILLIC CAPITAL LETTER WE
+ 051E          ; NFKC_CF; 051F           # L&       CYRILLIC CAPITAL LETTER ALEUT KA
+ 0520          ; NFKC_CF; 0521           # L&       CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+ 0522          ; NFKC_CF; 0523           # L&       CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+ 0524          ; NFKC_CF; 0525           # L&       CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+ 0526          ; NFKC_CF; 0527           # L&       CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+ 0528          ; NFKC_CF; 0529           # L&       CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+ 052A          ; NFKC_CF; 052B           # L&       CYRILLIC CAPITAL LETTER DZZHE
+ 052C          ; NFKC_CF; 052D           # L&       CYRILLIC CAPITAL LETTER DCHE
+ 052E          ; NFKC_CF; 052F           # L&       CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+ 0531          ; NFKC_CF; 0561           # L&       ARMENIAN CAPITAL LETTER AYB
+ 0532          ; NFKC_CF; 0562           # L&       ARMENIAN CAPITAL LETTER BEN
+ 0533          ; NFKC_CF; 0563           # L&       ARMENIAN CAPITAL LETTER GIM
+ 0534          ; NFKC_CF; 0564           # L&       ARMENIAN CAPITAL LETTER DA
+ 0535          ; NFKC_CF; 0565           # L&       ARMENIAN CAPITAL LETTER ECH
+ 0536          ; NFKC_CF; 0566           # L&       ARMENIAN CAPITAL LETTER ZA
+ 0537          ; NFKC_CF; 0567           # L&       ARMENIAN CAPITAL LETTER EH
+ 0538          ; NFKC_CF; 0568           # L&       ARMENIAN CAPITAL LETTER ET
+ 0539          ; NFKC_CF; 0569           # L&       ARMENIAN CAPITAL LETTER TO
+ 053A          ; NFKC_CF; 056A           # L&       ARMENIAN CAPITAL LETTER ZHE
+ 053B          ; NFKC_CF; 056B           # L&       ARMENIAN CAPITAL LETTER INI
+ 053C          ; NFKC_CF; 056C           # L&       ARMENIAN CAPITAL LETTER LIWN
+ 053D          ; NFKC_CF; 056D           # L&       ARMENIAN CAPITAL LETTER XEH
+ 053E          ; NFKC_CF; 056E           # L&       ARMENIAN CAPITAL LETTER CA
+ 053F          ; NFKC_CF; 056F           # L&       ARMENIAN CAPITAL LETTER KEN
+ 0540          ; NFKC_CF; 0570           # L&       ARMENIAN CAPITAL LETTER HO
+ 0541          ; NFKC_CF; 0571           # L&       ARMENIAN CAPITAL LETTER JA
+ 0542          ; NFKC_CF; 0572           # L&       ARMENIAN CAPITAL LETTER GHAD
+ 0543          ; NFKC_CF; 0573           # L&       ARMENIAN CAPITAL LETTER CHEH
+ 0544          ; NFKC_CF; 0574           # L&       ARMENIAN CAPITAL LETTER MEN
+ 0545          ; NFKC_CF; 0575           # L&       ARMENIAN CAPITAL LETTER YI
+ 0546          ; NFKC_CF; 0576           # L&       ARMENIAN CAPITAL LETTER NOW
+ 0547          ; NFKC_CF; 0577           # L&       ARMENIAN CAPITAL LETTER SHA
+ 0548          ; NFKC_CF; 0578           # L&       ARMENIAN CAPITAL LETTER VO
+ 0549          ; NFKC_CF; 0579           # L&       ARMENIAN CAPITAL LETTER CHA
+ 054A          ; NFKC_CF; 057A           # L&       ARMENIAN CAPITAL LETTER PEH
+ 054B          ; NFKC_CF; 057B           # L&       ARMENIAN CAPITAL LETTER JHEH
+ 054C          ; NFKC_CF; 057C           # L&       ARMENIAN CAPITAL LETTER RA
+ 054D          ; NFKC_CF; 057D           # L&       ARMENIAN CAPITAL LETTER SEH
+ 054E          ; NFKC_CF; 057E           # L&       ARMENIAN CAPITAL LETTER VEW
+ 054F          ; NFKC_CF; 057F           # L&       ARMENIAN CAPITAL LETTER TIWN
+ 0550          ; NFKC_CF; 0580           # L&       ARMENIAN CAPITAL LETTER REH
+ 0551          ; NFKC_CF; 0581           # L&       ARMENIAN CAPITAL LETTER CO
+ 0552          ; NFKC_CF; 0582           # L&       ARMENIAN CAPITAL LETTER YIWN
+ 0553          ; NFKC_CF; 0583           # L&       ARMENIAN CAPITAL LETTER PIWR
+ 0554          ; NFKC_CF; 0584           # L&       ARMENIAN CAPITAL LETTER KEH
+ 0555          ; NFKC_CF; 0585           # L&       ARMENIAN CAPITAL LETTER OH
+ 0556          ; NFKC_CF; 0586           # L&       ARMENIAN CAPITAL LETTER FEH
+ 0587          ; NFKC_CF; 0565 0582      # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 061C          ; NFKC_CF;                # Cf       ARABIC LETTER MARK
+ 0675          ; NFKC_CF; 0627 0674      # Lo       ARABIC LETTER HIGH HAMZA ALEF
+ 0676          ; NFKC_CF; 0648 0674      # Lo       ARABIC LETTER HIGH HAMZA WAW
+ 0677          ; NFKC_CF; 06C7 0674      # Lo       ARABIC LETTER U WITH HAMZA ABOVE
+ 0678          ; NFKC_CF; 064A 0674      # Lo       ARABIC LETTER HIGH HAMZA YEH
+ 0958          ; NFKC_CF; 0915 093C      # Lo       DEVANAGARI LETTER QA
+ 0959          ; NFKC_CF; 0916 093C      # Lo       DEVANAGARI LETTER KHHA
+ 095A          ; NFKC_CF; 0917 093C      # Lo       DEVANAGARI LETTER GHHA
+ 095B          ; NFKC_CF; 091C 093C      # Lo       DEVANAGARI LETTER ZA
+ 095C          ; NFKC_CF; 0921 093C      # Lo       DEVANAGARI LETTER DDDHA
+ 095D          ; NFKC_CF; 0922 093C      # Lo       DEVANAGARI LETTER RHA
+ 095E          ; NFKC_CF; 092B 093C      # Lo       DEVANAGARI LETTER FA
+ 095F          ; NFKC_CF; 092F 093C      # Lo       DEVANAGARI LETTER YYA
+ 09DC          ; NFKC_CF; 09A1 09BC      # Lo       BENGALI LETTER RRA
+ 09DD          ; NFKC_CF; 09A2 09BC      # Lo       BENGALI LETTER RHA
+ 09DF          ; NFKC_CF; 09AF 09BC      # Lo       BENGALI LETTER YYA
+ 0A33          ; NFKC_CF; 0A32 0A3C      # Lo       GURMUKHI LETTER LLA
+ 0A36          ; NFKC_CF; 0A38 0A3C      # Lo       GURMUKHI LETTER SHA
+ 0A59          ; NFKC_CF; 0A16 0A3C      # Lo       GURMUKHI LETTER KHHA
+ 0A5A          ; NFKC_CF; 0A17 0A3C      # Lo       GURMUKHI LETTER GHHA
+ 0A5B          ; NFKC_CF; 0A1C 0A3C      # Lo       GURMUKHI LETTER ZA
+ 0A5E          ; NFKC_CF; 0A2B 0A3C      # Lo       GURMUKHI LETTER FA
+ 0B5C          ; NFKC_CF; 0B21 0B3C      # Lo       ORIYA LETTER RRA
+ 0B5D          ; NFKC_CF; 0B22 0B3C      # Lo       ORIYA LETTER RHA
+ 0E33          ; NFKC_CF; 0E4D 0E32      # Lo       THAI CHARACTER SARA AM
+ 0EB3          ; NFKC_CF; 0ECD 0EB2      # Lo       LAO VOWEL SIGN AM
+ 0EDC          ; NFKC_CF; 0EAB 0E99      # Lo       LAO HO NO
+ 0EDD          ; NFKC_CF; 0EAB 0EA1      # Lo       LAO HO MO
+ 0F0C          ; NFKC_CF; 0F0B           # Po       TIBETAN MARK DELIMITER TSHEG BSTAR
+ 0F43          ; NFKC_CF; 0F42 0FB7      # Lo       TIBETAN LETTER GHA
+ 0F4D          ; NFKC_CF; 0F4C 0FB7      # Lo       TIBETAN LETTER DDHA
+ 0F52          ; NFKC_CF; 0F51 0FB7      # Lo       TIBETAN LETTER DHA
+ 0F57          ; NFKC_CF; 0F56 0FB7      # Lo       TIBETAN LETTER BHA
+ 0F5C          ; NFKC_CF; 0F5B 0FB7      # Lo       TIBETAN LETTER DZHA
+ 0F69          ; NFKC_CF; 0F40 0FB5      # Lo       TIBETAN LETTER KSSA
+ 0F73          ; NFKC_CF; 0F71 0F72      # Mn       TIBETAN VOWEL SIGN II
+ 0F75          ; NFKC_CF; 0F71 0F74      # Mn       TIBETAN VOWEL SIGN UU
+ 0F76          ; NFKC_CF; 0FB2 0F80      # Mn       TIBETAN VOWEL SIGN VOCALIC R
+ 0F77          ; NFKC_CF; 0FB2 0F71 0F80 # Mn       TIBETAN VOWEL SIGN VOCALIC RR
+ 0F78          ; NFKC_CF; 0FB3 0F80      # Mn       TIBETAN VOWEL SIGN VOCALIC L
+ 0F79          ; NFKC_CF; 0FB3 0F71 0F80 # Mn       TIBETAN VOWEL SIGN VOCALIC LL
+ 0F81          ; NFKC_CF; 0F71 0F80      # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; NFKC_CF; 0F92 0FB7      # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; NFKC_CF; 0F9C 0FB7      # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; NFKC_CF; 0FA1 0FB7      # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; NFKC_CF; 0FA6 0FB7      # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; NFKC_CF; 0FAB 0FB7      # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; NFKC_CF; 0F90 0FB5      # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 10A0          ; NFKC_CF; 2D00           # L&       GEORGIAN CAPITAL LETTER AN
+ 10A1          ; NFKC_CF; 2D01           # L&       GEORGIAN CAPITAL LETTER BAN
+ 10A2          ; NFKC_CF; 2D02           # L&       GEORGIAN CAPITAL LETTER GAN
+ 10A3          ; NFKC_CF; 2D03           # L&       GEORGIAN CAPITAL LETTER DON
+ 10A4          ; NFKC_CF; 2D04           # L&       GEORGIAN CAPITAL LETTER EN
+ 10A5          ; NFKC_CF; 2D05           # L&       GEORGIAN CAPITAL LETTER VIN
+ 10A6          ; NFKC_CF; 2D06           # L&       GEORGIAN CAPITAL LETTER ZEN
+ 10A7          ; NFKC_CF; 2D07           # L&       GEORGIAN CAPITAL LETTER TAN
+ 10A8          ; NFKC_CF; 2D08           # L&       GEORGIAN CAPITAL LETTER IN
+ 10A9          ; NFKC_CF; 2D09           # L&       GEORGIAN CAPITAL LETTER KAN
+ 10AA          ; NFKC_CF; 2D0A           # L&       GEORGIAN CAPITAL LETTER LAS
+ 10AB          ; NFKC_CF; 2D0B           # L&       GEORGIAN CAPITAL LETTER MAN
+ 10AC          ; NFKC_CF; 2D0C           # L&       GEORGIAN CAPITAL LETTER NAR
+ 10AD          ; NFKC_CF; 2D0D           # L&       GEORGIAN CAPITAL LETTER ON
+ 10AE          ; NFKC_CF; 2D0E           # L&       GEORGIAN CAPITAL LETTER PAR
+ 10AF          ; NFKC_CF; 2D0F           # L&       GEORGIAN CAPITAL LETTER ZHAR
+ 10B0          ; NFKC_CF; 2D10           # L&       GEORGIAN CAPITAL LETTER RAE
+ 10B1          ; NFKC_CF; 2D11           # L&       GEORGIAN CAPITAL LETTER SAN
+ 10B2          ; NFKC_CF; 2D12           # L&       GEORGIAN CAPITAL LETTER TAR
+ 10B3          ; NFKC_CF; 2D13           # L&       GEORGIAN CAPITAL LETTER UN
+ 10B4          ; NFKC_CF; 2D14           # L&       GEORGIAN CAPITAL LETTER PHAR
+ 10B5          ; NFKC_CF; 2D15           # L&       GEORGIAN CAPITAL LETTER KHAR
+ 10B6          ; NFKC_CF; 2D16           # L&       GEORGIAN CAPITAL LETTER GHAN
+ 10B7          ; NFKC_CF; 2D17           # L&       GEORGIAN CAPITAL LETTER QAR
+ 10B8          ; NFKC_CF; 2D18           # L&       GEORGIAN CAPITAL LETTER SHIN
+ 10B9          ; NFKC_CF; 2D19           # L&       GEORGIAN CAPITAL LETTER CHIN
+ 10BA          ; NFKC_CF; 2D1A           # L&       GEORGIAN CAPITAL LETTER CAN
+ 10BB          ; NFKC_CF; 2D1B           # L&       GEORGIAN CAPITAL LETTER JIL
+ 10BC          ; NFKC_CF; 2D1C           # L&       GEORGIAN CAPITAL LETTER CIL
+ 10BD          ; NFKC_CF; 2D1D           # L&       GEORGIAN CAPITAL LETTER CHAR
+ 10BE          ; NFKC_CF; 2D1E           # L&       GEORGIAN CAPITAL LETTER XAN
+ 10BF          ; NFKC_CF; 2D1F           # L&       GEORGIAN CAPITAL LETTER JHAN
+ 10C0          ; NFKC_CF; 2D20           # L&       GEORGIAN CAPITAL LETTER HAE
+ 10C1          ; NFKC_CF; 2D21           # L&       GEORGIAN CAPITAL LETTER HE
+ 10C2          ; NFKC_CF; 2D22           # L&       GEORGIAN CAPITAL LETTER HIE
+ 10C3          ; NFKC_CF; 2D23           # L&       GEORGIAN CAPITAL LETTER WE
+ 10C4          ; NFKC_CF; 2D24           # L&       GEORGIAN CAPITAL LETTER HAR
+ 10C5          ; NFKC_CF; 2D25           # L&       GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; NFKC_CF; 2D27           # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; NFKC_CF; 2D2D           # L&       GEORGIAN CAPITAL LETTER AEN
+ 10FC          ; NFKC_CF; 10DC           # Lm       MODIFIER LETTER GEORGIAN NAR
+ 115F..1160    ; NFKC_CF;                # Lo   [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
+ 13F8          ; NFKC_CF; 13F0           # L&       CHEROKEE SMALL LETTER YE
+ 13F9          ; NFKC_CF; 13F1           # L&       CHEROKEE SMALL LETTER YI
+ 13FA          ; NFKC_CF; 13F2           # L&       CHEROKEE SMALL LETTER YO
+ 13FB          ; NFKC_CF; 13F3           # L&       CHEROKEE SMALL LETTER YU
+ 13FC          ; NFKC_CF; 13F4           # L&       CHEROKEE SMALL LETTER YV
+ 13FD          ; NFKC_CF; 13F5           # L&       CHEROKEE SMALL LETTER MV
+ 17B4..17B5    ; NFKC_CF;                # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 180B..180D    ; NFKC_CF;                # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180E          ; NFKC_CF;                # Cf       MONGOLIAN VOWEL SEPARATOR
+ 180F          ; NFKC_CF;                # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 1C80          ; NFKC_CF; 0432           # L&       CYRILLIC SMALL LETTER ROUNDED VE
+ 1C81          ; NFKC_CF; 0434           # L&       CYRILLIC SMALL LETTER LONG-LEGGED DE
+ 1C82          ; NFKC_CF; 043E           # L&       CYRILLIC SMALL LETTER NARROW O
+ 1C83          ; NFKC_CF; 0441           # L&       CYRILLIC SMALL LETTER WIDE ES
+ 1C84..1C85    ; NFKC_CF; 0442           # L&   [2] CYRILLIC SMALL LETTER TALL TE..CYRILLIC SMALL LETTER THREE-LEGGED TE
+ 1C86          ; NFKC_CF; 044A           # L&       CYRILLIC SMALL LETTER TALL HARD SIGN
+ 1C87          ; NFKC_CF; 0463           # L&       CYRILLIC SMALL LETTER TALL YAT
+ 1C88          ; NFKC_CF; A64B           # L&       CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90          ; NFKC_CF; 10D0           # L&       GEORGIAN MTAVRULI CAPITAL LETTER AN
+ 1C91          ; NFKC_CF; 10D1           # L&       GEORGIAN MTAVRULI CAPITAL LETTER BAN
+ 1C92          ; NFKC_CF; 10D2           # L&       GEORGIAN MTAVRULI CAPITAL LETTER GAN
+ 1C93          ; NFKC_CF; 10D3           # L&       GEORGIAN MTAVRULI CAPITAL LETTER DON
+ 1C94          ; NFKC_CF; 10D4           # L&       GEORGIAN MTAVRULI CAPITAL LETTER EN
+ 1C95          ; NFKC_CF; 10D5           # L&       GEORGIAN MTAVRULI CAPITAL LETTER VIN
+ 1C96          ; NFKC_CF; 10D6           # L&       GEORGIAN MTAVRULI CAPITAL LETTER ZEN
+ 1C97          ; NFKC_CF; 10D7           # L&       GEORGIAN MTAVRULI CAPITAL LETTER TAN
+ 1C98          ; NFKC_CF; 10D8           # L&       GEORGIAN MTAVRULI CAPITAL LETTER IN
+ 1C99          ; NFKC_CF; 10D9           # L&       GEORGIAN MTAVRULI CAPITAL LETTER KAN
+ 1C9A          ; NFKC_CF; 10DA           # L&       GEORGIAN MTAVRULI CAPITAL LETTER LAS
+ 1C9B          ; NFKC_CF; 10DB           # L&       GEORGIAN MTAVRULI CAPITAL LETTER MAN
+ 1C9C          ; NFKC_CF; 10DC           # L&       GEORGIAN MTAVRULI CAPITAL LETTER NAR
+ 1C9D          ; NFKC_CF; 10DD           # L&       GEORGIAN MTAVRULI CAPITAL LETTER ON
+ 1C9E          ; NFKC_CF; 10DE           # L&       GEORGIAN MTAVRULI CAPITAL LETTER PAR
+ 1C9F          ; NFKC_CF; 10DF           # L&       GEORGIAN MTAVRULI CAPITAL LETTER ZHAR
+ 1CA0          ; NFKC_CF; 10E0           # L&       GEORGIAN MTAVRULI CAPITAL LETTER RAE
+ 1CA1          ; NFKC_CF; 10E1           # L&       GEORGIAN MTAVRULI CAPITAL LETTER SAN
+ 1CA2          ; NFKC_CF; 10E2           # L&       GEORGIAN MTAVRULI CAPITAL LETTER TAR
+ 1CA3          ; NFKC_CF; 10E3           # L&       GEORGIAN MTAVRULI CAPITAL LETTER UN
+ 1CA4          ; NFKC_CF; 10E4           # L&       GEORGIAN MTAVRULI CAPITAL LETTER PHAR
+ 1CA5          ; NFKC_CF; 10E5           # L&       GEORGIAN MTAVRULI CAPITAL LETTER KHAR
+ 1CA6          ; NFKC_CF; 10E6           # L&       GEORGIAN MTAVRULI CAPITAL LETTER GHAN
+ 1CA7          ; NFKC_CF; 10E7           # L&       GEORGIAN MTAVRULI CAPITAL LETTER QAR
+ 1CA8          ; NFKC_CF; 10E8           # L&       GEORGIAN MTAVRULI CAPITAL LETTER SHIN
+ 1CA9          ; NFKC_CF; 10E9           # L&       GEORGIAN MTAVRULI CAPITAL LETTER CHIN
+ 1CAA          ; NFKC_CF; 10EA           # L&       GEORGIAN MTAVRULI CAPITAL LETTER CAN
+ 1CAB          ; NFKC_CF; 10EB           # L&       GEORGIAN MTAVRULI CAPITAL LETTER JIL
+ 1CAC          ; NFKC_CF; 10EC           # L&       GEORGIAN MTAVRULI CAPITAL LETTER CIL
+ 1CAD          ; NFKC_CF; 10ED           # L&       GEORGIAN MTAVRULI CAPITAL LETTER CHAR
+ 1CAE          ; NFKC_CF; 10EE           # L&       GEORGIAN MTAVRULI CAPITAL LETTER XAN
+ 1CAF          ; NFKC_CF; 10EF           # L&       GEORGIAN MTAVRULI CAPITAL LETTER JHAN
+ 1CB0          ; NFKC_CF; 10F0           # L&       GEORGIAN MTAVRULI CAPITAL LETTER HAE
+ 1CB1          ; NFKC_CF; 10F1           # L&       GEORGIAN MTAVRULI CAPITAL LETTER HE
+ 1CB2          ; NFKC_CF; 10F2           # L&       GEORGIAN MTAVRULI CAPITAL LETTER HIE
+ 1CB3          ; NFKC_CF; 10F3           # L&       GEORGIAN MTAVRULI CAPITAL LETTER WE
+ 1CB4          ; NFKC_CF; 10F4           # L&       GEORGIAN MTAVRULI CAPITAL LETTER HAR
+ 1CB5          ; NFKC_CF; 10F5           # L&       GEORGIAN MTAVRULI CAPITAL LETTER HOE
+ 1CB6          ; NFKC_CF; 10F6           # L&       GEORGIAN MTAVRULI CAPITAL LETTER FI
+ 1CB7          ; NFKC_CF; 10F7           # L&       GEORGIAN MTAVRULI CAPITAL LETTER YN
+ 1CB8          ; NFKC_CF; 10F8           # L&       GEORGIAN MTAVRULI CAPITAL LETTER ELIFI
+ 1CB9          ; NFKC_CF; 10F9           # L&       GEORGIAN MTAVRULI CAPITAL LETTER TURNED GAN
+ 1CBA          ; NFKC_CF; 10FA           # L&       GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD          ; NFKC_CF; 10FD           # L&       GEORGIAN MTAVRULI CAPITAL LETTER AEN
+ 1CBE          ; NFKC_CF; 10FE           # L&       GEORGIAN MTAVRULI CAPITAL LETTER HARD SIGN
+ 1CBF          ; NFKC_CF; 10FF           # L&       GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1D2C          ; NFKC_CF; 0061           # Lm       MODIFIER LETTER CAPITAL A
+ 1D2D          ; NFKC_CF; 00E6           # Lm       MODIFIER LETTER CAPITAL AE
+ 1D2E          ; NFKC_CF; 0062           # Lm       MODIFIER LETTER CAPITAL B
+ 1D30          ; NFKC_CF; 0064           # Lm       MODIFIER LETTER CAPITAL D
+ 1D31          ; NFKC_CF; 0065           # Lm       MODIFIER LETTER CAPITAL E
+ 1D32          ; NFKC_CF; 01DD           # Lm       MODIFIER LETTER CAPITAL REVERSED E
+ 1D33          ; NFKC_CF; 0067           # Lm       MODIFIER LETTER CAPITAL G
+ 1D34          ; NFKC_CF; 0068           # Lm       MODIFIER LETTER CAPITAL H
+ 1D35          ; NFKC_CF; 0069           # Lm       MODIFIER LETTER CAPITAL I
+ 1D36          ; NFKC_CF; 006A           # Lm       MODIFIER LETTER CAPITAL J
+ 1D37          ; NFKC_CF; 006B           # Lm       MODIFIER LETTER CAPITAL K
+ 1D38          ; NFKC_CF; 006C           # Lm       MODIFIER LETTER CAPITAL L
+ 1D39          ; NFKC_CF; 006D           # Lm       MODIFIER LETTER CAPITAL M
+ 1D3A          ; NFKC_CF; 006E           # Lm       MODIFIER LETTER CAPITAL N
+ 1D3C          ; NFKC_CF; 006F           # Lm       MODIFIER LETTER CAPITAL O
+ 1D3D          ; NFKC_CF; 0223           # Lm       MODIFIER LETTER CAPITAL OU
+ 1D3E          ; NFKC_CF; 0070           # Lm       MODIFIER LETTER CAPITAL P
+ 1D3F          ; NFKC_CF; 0072           # Lm       MODIFIER LETTER CAPITAL R
+ 1D40          ; NFKC_CF; 0074           # Lm       MODIFIER LETTER CAPITAL T
+ 1D41          ; NFKC_CF; 0075           # Lm       MODIFIER LETTER CAPITAL U
+ 1D42          ; NFKC_CF; 0077           # Lm       MODIFIER LETTER CAPITAL W
+ 1D43          ; NFKC_CF; 0061           # Lm       MODIFIER LETTER SMALL A
+ 1D44          ; NFKC_CF; 0250           # Lm       MODIFIER LETTER SMALL TURNED A
+ 1D45          ; NFKC_CF; 0251           # Lm       MODIFIER LETTER SMALL ALPHA
+ 1D46          ; NFKC_CF; 1D02           # Lm       MODIFIER LETTER SMALL TURNED AE
+ 1D47          ; NFKC_CF; 0062           # Lm       MODIFIER LETTER SMALL B
+ 1D48          ; NFKC_CF; 0064           # Lm       MODIFIER LETTER SMALL D
+ 1D49          ; NFKC_CF; 0065           # Lm       MODIFIER LETTER SMALL E
+ 1D4A          ; NFKC_CF; 0259           # Lm       MODIFIER LETTER SMALL SCHWA
+ 1D4B          ; NFKC_CF; 025B           # Lm       MODIFIER LETTER SMALL OPEN E
+ 1D4C          ; NFKC_CF; 025C           # Lm       MODIFIER LETTER SMALL TURNED OPEN E
+ 1D4D          ; NFKC_CF; 0067           # Lm       MODIFIER LETTER SMALL G
+ 1D4F          ; NFKC_CF; 006B           # Lm       MODIFIER LETTER SMALL K
+ 1D50          ; NFKC_CF; 006D           # Lm       MODIFIER LETTER SMALL M
+ 1D51          ; NFKC_CF; 014B           # Lm       MODIFIER LETTER SMALL ENG
+ 1D52          ; NFKC_CF; 006F           # Lm       MODIFIER LETTER SMALL O
+ 1D53          ; NFKC_CF; 0254           # Lm       MODIFIER LETTER SMALL OPEN O
+ 1D54          ; NFKC_CF; 1D16           # Lm       MODIFIER LETTER SMALL TOP HALF O
+ 1D55          ; NFKC_CF; 1D17           # Lm       MODIFIER LETTER SMALL BOTTOM HALF O
+ 1D56          ; NFKC_CF; 0070           # Lm       MODIFIER LETTER SMALL P
+ 1D57          ; NFKC_CF; 0074           # Lm       MODIFIER LETTER SMALL T
+ 1D58          ; NFKC_CF; 0075           # Lm       MODIFIER LETTER SMALL U
+ 1D59          ; NFKC_CF; 1D1D           # Lm       MODIFIER LETTER SMALL SIDEWAYS U
+ 1D5A          ; NFKC_CF; 026F           # Lm       MODIFIER LETTER SMALL TURNED M
+ 1D5B          ; NFKC_CF; 0076           # Lm       MODIFIER LETTER SMALL V
+ 1D5C          ; NFKC_CF; 1D25           # Lm       MODIFIER LETTER SMALL AIN
+ 1D5D          ; NFKC_CF; 03B2           # Lm       MODIFIER LETTER SMALL BETA
+ 1D5E          ; NFKC_CF; 03B3           # Lm       MODIFIER LETTER SMALL GREEK GAMMA
+ 1D5F          ; NFKC_CF; 03B4           # Lm       MODIFIER LETTER SMALL DELTA
+ 1D60          ; NFKC_CF; 03C6           # Lm       MODIFIER LETTER SMALL GREEK PHI
+ 1D61          ; NFKC_CF; 03C7           # Lm       MODIFIER LETTER SMALL CHI
+ 1D62          ; NFKC_CF; 0069           # Lm       LATIN SUBSCRIPT SMALL LETTER I
+ 1D63          ; NFKC_CF; 0072           # Lm       LATIN SUBSCRIPT SMALL LETTER R
+ 1D64          ; NFKC_CF; 0075           # Lm       LATIN SUBSCRIPT SMALL LETTER U
+ 1D65          ; NFKC_CF; 0076           # Lm       LATIN SUBSCRIPT SMALL LETTER V
+ 1D66          ; NFKC_CF; 03B2           # Lm       GREEK SUBSCRIPT SMALL LETTER BETA
+ 1D67          ; NFKC_CF; 03B3           # Lm       GREEK SUBSCRIPT SMALL LETTER GAMMA
+ 1D68          ; NFKC_CF; 03C1           # Lm       GREEK SUBSCRIPT SMALL LETTER RHO
+ 1D69          ; NFKC_CF; 03C6           # Lm       GREEK SUBSCRIPT SMALL LETTER PHI
+ 1D6A          ; NFKC_CF; 03C7           # Lm       GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D78          ; NFKC_CF; 043D           # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D9B          ; NFKC_CF; 0252           # Lm       MODIFIER LETTER SMALL TURNED ALPHA
+ 1D9C          ; NFKC_CF; 0063           # Lm       MODIFIER LETTER SMALL C
+ 1D9D          ; NFKC_CF; 0255           # Lm       MODIFIER LETTER SMALL C WITH CURL
+ 1D9E          ; NFKC_CF; 00F0           # Lm       MODIFIER LETTER SMALL ETH
+ 1D9F          ; NFKC_CF; 025C           # Lm       MODIFIER LETTER SMALL REVERSED OPEN E
+ 1DA0          ; NFKC_CF; 0066           # Lm       MODIFIER LETTER SMALL F
+ 1DA1          ; NFKC_CF; 025F           # Lm       MODIFIER LETTER SMALL DOTLESS J WITH STROKE
+ 1DA2          ; NFKC_CF; 0261           # Lm       MODIFIER LETTER SMALL SCRIPT G
+ 1DA3          ; NFKC_CF; 0265           # Lm       MODIFIER LETTER SMALL TURNED H
+ 1DA4          ; NFKC_CF; 0268           # Lm       MODIFIER LETTER SMALL I WITH STROKE
+ 1DA5          ; NFKC_CF; 0269           # Lm       MODIFIER LETTER SMALL IOTA
+ 1DA6          ; NFKC_CF; 026A           # Lm       MODIFIER LETTER SMALL CAPITAL I
+ 1DA7          ; NFKC_CF; 1D7B           # Lm       MODIFIER LETTER SMALL CAPITAL I WITH STROKE
+ 1DA8          ; NFKC_CF; 029D           # Lm       MODIFIER LETTER SMALL J WITH CROSSED-TAIL
+ 1DA9          ; NFKC_CF; 026D           # Lm       MODIFIER LETTER SMALL L WITH RETROFLEX HOOK
+ 1DAA          ; NFKC_CF; 1D85           # Lm       MODIFIER LETTER SMALL L WITH PALATAL HOOK
+ 1DAB          ; NFKC_CF; 029F           # Lm       MODIFIER LETTER SMALL CAPITAL L
+ 1DAC          ; NFKC_CF; 0271           # Lm       MODIFIER LETTER SMALL M WITH HOOK
+ 1DAD          ; NFKC_CF; 0270           # Lm       MODIFIER LETTER SMALL TURNED M WITH LONG LEG
+ 1DAE          ; NFKC_CF; 0272           # Lm       MODIFIER LETTER SMALL N WITH LEFT HOOK
+ 1DAF          ; NFKC_CF; 0273           # Lm       MODIFIER LETTER SMALL N WITH RETROFLEX HOOK
+ 1DB0          ; NFKC_CF; 0274           # Lm       MODIFIER LETTER SMALL CAPITAL N
+ 1DB1          ; NFKC_CF; 0275           # Lm       MODIFIER LETTER SMALL BARRED O
+ 1DB2          ; NFKC_CF; 0278           # Lm       MODIFIER LETTER SMALL PHI
+ 1DB3          ; NFKC_CF; 0282           # Lm       MODIFIER LETTER SMALL S WITH HOOK
+ 1DB4          ; NFKC_CF; 0283           # Lm       MODIFIER LETTER SMALL ESH
+ 1DB5          ; NFKC_CF; 01AB           # Lm       MODIFIER LETTER SMALL T WITH PALATAL HOOK
+ 1DB6          ; NFKC_CF; 0289           # Lm       MODIFIER LETTER SMALL U BAR
+ 1DB7          ; NFKC_CF; 028A           # Lm       MODIFIER LETTER SMALL UPSILON
+ 1DB8          ; NFKC_CF; 1D1C           # Lm       MODIFIER LETTER SMALL CAPITAL U
+ 1DB9          ; NFKC_CF; 028B           # Lm       MODIFIER LETTER SMALL V WITH HOOK
+ 1DBA          ; NFKC_CF; 028C           # Lm       MODIFIER LETTER SMALL TURNED V
+ 1DBB          ; NFKC_CF; 007A           # Lm       MODIFIER LETTER SMALL Z
+ 1DBC          ; NFKC_CF; 0290           # Lm       MODIFIER LETTER SMALL Z WITH RETROFLEX HOOK
+ 1DBD          ; NFKC_CF; 0291           # Lm       MODIFIER LETTER SMALL Z WITH CURL
+ 1DBE          ; NFKC_CF; 0292           # Lm       MODIFIER LETTER SMALL EZH
+ 1DBF          ; NFKC_CF; 03B8           # Lm       MODIFIER LETTER SMALL THETA
+ 1E00          ; NFKC_CF; 1E01           # L&       LATIN CAPITAL LETTER A WITH RING BELOW
+ 1E02          ; NFKC_CF; 1E03           # L&       LATIN CAPITAL LETTER B WITH DOT ABOVE
+ 1E04          ; NFKC_CF; 1E05           # L&       LATIN CAPITAL LETTER B WITH DOT BELOW
+ 1E06          ; NFKC_CF; 1E07           # L&       LATIN CAPITAL LETTER B WITH LINE BELOW
+ 1E08          ; NFKC_CF; 1E09           # L&       LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+ 1E0A          ; NFKC_CF; 1E0B           # L&       LATIN CAPITAL LETTER D WITH DOT ABOVE
+ 1E0C          ; NFKC_CF; 1E0D           # L&       LATIN CAPITAL LETTER D WITH DOT BELOW
+ 1E0E          ; NFKC_CF; 1E0F           # L&       LATIN CAPITAL LETTER D WITH LINE BELOW
+ 1E10          ; NFKC_CF; 1E11           # L&       LATIN CAPITAL LETTER D WITH CEDILLA
+ 1E12          ; NFKC_CF; 1E13           # L&       LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+ 1E14          ; NFKC_CF; 1E15           # L&       LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+ 1E16          ; NFKC_CF; 1E17           # L&       LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+ 1E18          ; NFKC_CF; 1E19           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1A          ; NFKC_CF; 1E1B           # L&       LATIN CAPITAL LETTER E WITH TILDE BELOW
+ 1E1C          ; NFKC_CF; 1E1D           # L&       LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+ 1E1E          ; NFKC_CF; 1E1F           # L&       LATIN CAPITAL LETTER F WITH DOT ABOVE
+ 1E20          ; NFKC_CF; 1E21           # L&       LATIN CAPITAL LETTER G WITH MACRON
+ 1E22          ; NFKC_CF; 1E23           # L&       LATIN CAPITAL LETTER H WITH DOT ABOVE
+ 1E24          ; NFKC_CF; 1E25           # L&       LATIN CAPITAL LETTER H WITH DOT BELOW
+ 1E26          ; NFKC_CF; 1E27           # L&       LATIN CAPITAL LETTER H WITH DIAERESIS
+ 1E28          ; NFKC_CF; 1E29           # L&       LATIN CAPITAL LETTER H WITH CEDILLA
+ 1E2A          ; NFKC_CF; 1E2B           # L&       LATIN CAPITAL LETTER H WITH BREVE BELOW
+ 1E2C          ; NFKC_CF; 1E2D           # L&       LATIN CAPITAL LETTER I WITH TILDE BELOW
+ 1E2E          ; NFKC_CF; 1E2F           # L&       LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+ 1E30          ; NFKC_CF; 1E31           # L&       LATIN CAPITAL LETTER K WITH ACUTE
+ 1E32          ; NFKC_CF; 1E33           # L&       LATIN CAPITAL LETTER K WITH DOT BELOW
+ 1E34          ; NFKC_CF; 1E35           # L&       LATIN CAPITAL LETTER K WITH LINE BELOW
+ 1E36          ; NFKC_CF; 1E37           # L&       LATIN CAPITAL LETTER L WITH DOT BELOW
+ 1E38          ; NFKC_CF; 1E39           # L&       LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+ 1E3A          ; NFKC_CF; 1E3B           # L&       LATIN CAPITAL LETTER L WITH LINE BELOW
+ 1E3C          ; NFKC_CF; 1E3D           # L&       LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3E          ; NFKC_CF; 1E3F           # L&       LATIN CAPITAL LETTER M WITH ACUTE
+ 1E40          ; NFKC_CF; 1E41           # L&       LATIN CAPITAL LETTER M WITH DOT ABOVE
+ 1E42          ; NFKC_CF; 1E43           # L&       LATIN CAPITAL LETTER M WITH DOT BELOW
+ 1E44          ; NFKC_CF; 1E45           # L&       LATIN CAPITAL LETTER N WITH DOT ABOVE
+ 1E46          ; NFKC_CF; 1E47           # L&       LATIN CAPITAL LETTER N WITH DOT BELOW
+ 1E48          ; NFKC_CF; 1E49           # L&       LATIN CAPITAL LETTER N WITH LINE BELOW
+ 1E4A          ; NFKC_CF; 1E4B           # L&       LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4C          ; NFKC_CF; 1E4D           # L&       LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+ 1E4E          ; NFKC_CF; 1E4F           # L&       LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+ 1E50          ; NFKC_CF; 1E51           # L&       LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+ 1E52          ; NFKC_CF; 1E53           # L&       LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+ 1E54          ; NFKC_CF; 1E55           # L&       LATIN CAPITAL LETTER P WITH ACUTE
+ 1E56          ; NFKC_CF; 1E57           # L&       LATIN CAPITAL LETTER P WITH DOT ABOVE
+ 1E58          ; NFKC_CF; 1E59           # L&       LATIN CAPITAL LETTER R WITH DOT ABOVE
+ 1E5A          ; NFKC_CF; 1E5B           # L&       LATIN CAPITAL LETTER R WITH DOT BELOW
+ 1E5C          ; NFKC_CF; 1E5D           # L&       LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+ 1E5E          ; NFKC_CF; 1E5F           # L&       LATIN CAPITAL LETTER R WITH LINE BELOW
+ 1E60          ; NFKC_CF; 1E61           # L&       LATIN CAPITAL LETTER S WITH DOT ABOVE
+ 1E62          ; NFKC_CF; 1E63           # L&       LATIN CAPITAL LETTER S WITH DOT BELOW
+ 1E64          ; NFKC_CF; 1E65           # L&       LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E66          ; NFKC_CF; 1E67           # L&       LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+ 1E68          ; NFKC_CF; 1E69           # L&       LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6A          ; NFKC_CF; 1E6B           # L&       LATIN CAPITAL LETTER T WITH DOT ABOVE
+ 1E6C          ; NFKC_CF; 1E6D           # L&       LATIN CAPITAL LETTER T WITH DOT BELOW
+ 1E6E          ; NFKC_CF; 1E6F           # L&       LATIN CAPITAL LETTER T WITH LINE BELOW
+ 1E70          ; NFKC_CF; 1E71           # L&       LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+ 1E72          ; NFKC_CF; 1E73           # L&       LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+ 1E74          ; NFKC_CF; 1E75           # L&       LATIN CAPITAL LETTER U WITH TILDE BELOW
+ 1E76          ; NFKC_CF; 1E77           # L&       LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+ 1E78          ; NFKC_CF; 1E79           # L&       LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+ 1E7A          ; NFKC_CF; 1E7B           # L&       LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+ 1E7C          ; NFKC_CF; 1E7D           # L&       LATIN CAPITAL LETTER V WITH TILDE
+ 1E7E          ; NFKC_CF; 1E7F           # L&       LATIN CAPITAL LETTER V WITH DOT BELOW
+ 1E80          ; NFKC_CF; 1E81           # L&       LATIN CAPITAL LETTER W WITH GRAVE
+ 1E82          ; NFKC_CF; 1E83           # L&       LATIN CAPITAL LETTER W WITH ACUTE
+ 1E84          ; NFKC_CF; 1E85           # L&       LATIN CAPITAL LETTER W WITH DIAERESIS
+ 1E86          ; NFKC_CF; 1E87           # L&       LATIN CAPITAL LETTER W WITH DOT ABOVE
+ 1E88          ; NFKC_CF; 1E89           # L&       LATIN CAPITAL LETTER W WITH DOT BELOW
+ 1E8A          ; NFKC_CF; 1E8B           # L&       LATIN CAPITAL LETTER X WITH DOT ABOVE
+ 1E8C          ; NFKC_CF; 1E8D           # L&       LATIN CAPITAL LETTER X WITH DIAERESIS
+ 1E8E          ; NFKC_CF; 1E8F           # L&       LATIN CAPITAL LETTER Y WITH DOT ABOVE
+ 1E90          ; NFKC_CF; 1E91           # L&       LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+ 1E92          ; NFKC_CF; 1E93           # L&       LATIN CAPITAL LETTER Z WITH DOT BELOW
+ 1E94          ; NFKC_CF; 1E95           # L&       LATIN CAPITAL LETTER Z WITH LINE BELOW
+ 1E9A          ; NFKC_CF; 0061 02BE      # L&       LATIN SMALL LETTER A WITH RIGHT HALF RING
+ 1E9B          ; NFKC_CF; 1E61           # L&       LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1E9E          ; NFKC_CF; 0073 0073      # L&       LATIN CAPITAL LETTER SHARP S
+ 1EA0          ; NFKC_CF; 1EA1           # L&       LATIN CAPITAL LETTER A WITH DOT BELOW
+ 1EA2          ; NFKC_CF; 1EA3           # L&       LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ 1EA4          ; NFKC_CF; 1EA5           # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA6          ; NFKC_CF; 1EA7           # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA8          ; NFKC_CF; 1EA9           # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAA          ; NFKC_CF; 1EAB           # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAC          ; NFKC_CF; 1EAD           # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAE          ; NFKC_CF; 1EAF           # L&       LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ 1EB0          ; NFKC_CF; 1EB1           # L&       LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ 1EB2          ; NFKC_CF; 1EB3           # L&       LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB4          ; NFKC_CF; 1EB5           # L&       LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ 1EB6          ; NFKC_CF; 1EB7           # L&       LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ 1EB8          ; NFKC_CF; 1EB9           # L&       LATIN CAPITAL LETTER E WITH DOT BELOW
+ 1EBA          ; NFKC_CF; 1EBB           # L&       LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ 1EBC          ; NFKC_CF; 1EBD           # L&       LATIN CAPITAL LETTER E WITH TILDE
+ 1EBE          ; NFKC_CF; 1EBF           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC0          ; NFKC_CF; 1EC1           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC2          ; NFKC_CF; 1EC3           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC4          ; NFKC_CF; 1EC5           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC6          ; NFKC_CF; 1EC7           # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC8          ; NFKC_CF; 1EC9           # L&       LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ 1ECA          ; NFKC_CF; 1ECB           # L&       LATIN CAPITAL LETTER I WITH DOT BELOW
+ 1ECC          ; NFKC_CF; 1ECD           # L&       LATIN CAPITAL LETTER O WITH DOT BELOW
+ 1ECE          ; NFKC_CF; 1ECF           # L&       LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ 1ED0          ; NFKC_CF; 1ED1           # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED2          ; NFKC_CF; 1ED3           # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED4          ; NFKC_CF; 1ED5           # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED6          ; NFKC_CF; 1ED7           # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED8          ; NFKC_CF; 1ED9           # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDA          ; NFKC_CF; 1EDB           # L&       LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ 1EDC          ; NFKC_CF; 1EDD           # L&       LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ 1EDE          ; NFKC_CF; 1EDF           # L&       LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE0          ; NFKC_CF; 1EE1           # L&       LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ 1EE2          ; NFKC_CF; 1EE3           # L&       LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ 1EE4          ; NFKC_CF; 1EE5           # L&       LATIN CAPITAL LETTER U WITH DOT BELOW
+ 1EE6          ; NFKC_CF; 1EE7           # L&       LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ 1EE8          ; NFKC_CF; 1EE9           # L&       LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ 1EEA          ; NFKC_CF; 1EEB           # L&       LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ 1EEC          ; NFKC_CF; 1EED           # L&       LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEE          ; NFKC_CF; 1EEF           # L&       LATIN CAPITAL LETTER U WITH HORN AND TILDE
+ 1EF0          ; NFKC_CF; 1EF1           # L&       LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ 1EF2          ; NFKC_CF; 1EF3           # L&       LATIN CAPITAL LETTER Y WITH GRAVE
+ 1EF4          ; NFKC_CF; 1EF5           # L&       LATIN CAPITAL LETTER Y WITH DOT BELOW
+ 1EF6          ; NFKC_CF; 1EF7           # L&       LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ 1EF8          ; NFKC_CF; 1EF9           # L&       LATIN CAPITAL LETTER Y WITH TILDE
+ 1EFA          ; NFKC_CF; 1EFB           # L&       LATIN CAPITAL LETTER MIDDLE-WELSH LL
+ 1EFC          ; NFKC_CF; 1EFD           # L&       LATIN CAPITAL LETTER MIDDLE-WELSH V
+ 1EFE          ; NFKC_CF; 1EFF           # L&       LATIN CAPITAL LETTER Y WITH LOOP
+ 1F08          ; NFKC_CF; 1F00           # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI
+ 1F09          ; NFKC_CF; 1F01           # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA
+ 1F0A          ; NFKC_CF; 1F02           # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA
+ 1F0B          ; NFKC_CF; 1F03           # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA
+ 1F0C          ; NFKC_CF; 1F04           # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA
+ 1F0D          ; NFKC_CF; 1F05           # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA
+ 1F0E          ; NFKC_CF; 1F06           # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI
+ 1F0F          ; NFKC_CF; 1F07           # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F18          ; NFKC_CF; 1F10           # L&       GREEK CAPITAL LETTER EPSILON WITH PSILI
+ 1F19          ; NFKC_CF; 1F11           # L&       GREEK CAPITAL LETTER EPSILON WITH DASIA
+ 1F1A          ; NFKC_CF; 1F12           # L&       GREEK CAPITAL LETTER EPSILON WITH PSILI AND VARIA
+ 1F1B          ; NFKC_CF; 1F13           # L&       GREEK CAPITAL LETTER EPSILON WITH DASIA AND VARIA
+ 1F1C          ; NFKC_CF; 1F14           # L&       GREEK CAPITAL LETTER EPSILON WITH PSILI AND OXIA
+ 1F1D          ; NFKC_CF; 1F15           # L&       GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F28          ; NFKC_CF; 1F20           # L&       GREEK CAPITAL LETTER ETA WITH PSILI
+ 1F29          ; NFKC_CF; 1F21           # L&       GREEK CAPITAL LETTER ETA WITH DASIA
+ 1F2A          ; NFKC_CF; 1F22           # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA
+ 1F2B          ; NFKC_CF; 1F23           # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA
+ 1F2C          ; NFKC_CF; 1F24           # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA
+ 1F2D          ; NFKC_CF; 1F25           # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA
+ 1F2E          ; NFKC_CF; 1F26           # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI
+ 1F2F          ; NFKC_CF; 1F27           # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F38          ; NFKC_CF; 1F30           # L&       GREEK CAPITAL LETTER IOTA WITH PSILI
+ 1F39          ; NFKC_CF; 1F31           # L&       GREEK CAPITAL LETTER IOTA WITH DASIA
+ 1F3A          ; NFKC_CF; 1F32           # L&       GREEK CAPITAL LETTER IOTA WITH PSILI AND VARIA
+ 1F3B          ; NFKC_CF; 1F33           # L&       GREEK CAPITAL LETTER IOTA WITH DASIA AND VARIA
+ 1F3C          ; NFKC_CF; 1F34           # L&       GREEK CAPITAL LETTER IOTA WITH PSILI AND OXIA
+ 1F3D          ; NFKC_CF; 1F35           # L&       GREEK CAPITAL LETTER IOTA WITH DASIA AND OXIA
+ 1F3E          ; NFKC_CF; 1F36           # L&       GREEK CAPITAL LETTER IOTA WITH PSILI AND PERISPOMENI
+ 1F3F          ; NFKC_CF; 1F37           # L&       GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F48          ; NFKC_CF; 1F40           # L&       GREEK CAPITAL LETTER OMICRON WITH PSILI
+ 1F49          ; NFKC_CF; 1F41           # L&       GREEK CAPITAL LETTER OMICRON WITH DASIA
+ 1F4A          ; NFKC_CF; 1F42           # L&       GREEK CAPITAL LETTER OMICRON WITH PSILI AND VARIA
+ 1F4B          ; NFKC_CF; 1F43           # L&       GREEK CAPITAL LETTER OMICRON WITH DASIA AND VARIA
+ 1F4C          ; NFKC_CF; 1F44           # L&       GREEK CAPITAL LETTER OMICRON WITH PSILI AND OXIA
+ 1F4D          ; NFKC_CF; 1F45           # L&       GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F59          ; NFKC_CF; 1F51           # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; NFKC_CF; 1F53           # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; NFKC_CF; 1F55           # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F          ; NFKC_CF; 1F57           # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F68          ; NFKC_CF; 1F60           # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI
+ 1F69          ; NFKC_CF; 1F61           # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA
+ 1F6A          ; NFKC_CF; 1F62           # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA
+ 1F6B          ; NFKC_CF; 1F63           # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA
+ 1F6C          ; NFKC_CF; 1F64           # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA
+ 1F6D          ; NFKC_CF; 1F65           # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA
+ 1F6E          ; NFKC_CF; 1F66           # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI
+ 1F6F          ; NFKC_CF; 1F67           # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F71          ; NFKC_CF; 03AC           # L&       GREEK SMALL LETTER ALPHA WITH OXIA
+ 1F73          ; NFKC_CF; 03AD           # L&       GREEK SMALL LETTER EPSILON WITH OXIA
+ 1F75          ; NFKC_CF; 03AE           # L&       GREEK SMALL LETTER ETA WITH OXIA
+ 1F77          ; NFKC_CF; 03AF           # L&       GREEK SMALL LETTER IOTA WITH OXIA
+ 1F79          ; NFKC_CF; 03CC           # L&       GREEK SMALL LETTER OMICRON WITH OXIA
+ 1F7B          ; NFKC_CF; 03CD           # L&       GREEK SMALL LETTER UPSILON WITH OXIA
+ 1F7D          ; NFKC_CF; 03CE           # L&       GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80          ; NFKC_CF; 1F00 03B9      # L&       GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI
+ 1F81          ; NFKC_CF; 1F01 03B9      # L&       GREEK SMALL LETTER ALPHA WITH DASIA AND YPOGEGRAMMENI
+ 1F82          ; NFKC_CF; 1F02 03B9      # L&       GREEK SMALL LETTER ALPHA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ 1F83          ; NFKC_CF; 1F03 03B9      # L&       GREEK SMALL LETTER ALPHA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ 1F84          ; NFKC_CF; 1F04 03B9      # L&       GREEK SMALL LETTER ALPHA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ 1F85          ; NFKC_CF; 1F05 03B9      # L&       GREEK SMALL LETTER ALPHA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ 1F86          ; NFKC_CF; 1F06 03B9      # L&       GREEK SMALL LETTER ALPHA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ 1F87          ; NFKC_CF; 1F07 03B9      # L&       GREEK SMALL LETTER ALPHA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1F88          ; NFKC_CF; 1F00 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND PROSGEGRAMMENI
+ 1F89          ; NFKC_CF; 1F01 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND PROSGEGRAMMENI
+ 1F8A          ; NFKC_CF; 1F02 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ 1F8B          ; NFKC_CF; 1F03 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ 1F8C          ; NFKC_CF; 1F04 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ 1F8D          ; NFKC_CF; 1F05 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ 1F8E          ; NFKC_CF; 1F06 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ 1F8F          ; NFKC_CF; 1F07 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1F90          ; NFKC_CF; 1F20 03B9      # L&       GREEK SMALL LETTER ETA WITH PSILI AND YPOGEGRAMMENI
+ 1F91          ; NFKC_CF; 1F21 03B9      # L&       GREEK SMALL LETTER ETA WITH DASIA AND YPOGEGRAMMENI
+ 1F92          ; NFKC_CF; 1F22 03B9      # L&       GREEK SMALL LETTER ETA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ 1F93          ; NFKC_CF; 1F23 03B9      # L&       GREEK SMALL LETTER ETA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ 1F94          ; NFKC_CF; 1F24 03B9      # L&       GREEK SMALL LETTER ETA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ 1F95          ; NFKC_CF; 1F25 03B9      # L&       GREEK SMALL LETTER ETA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ 1F96          ; NFKC_CF; 1F26 03B9      # L&       GREEK SMALL LETTER ETA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ 1F97          ; NFKC_CF; 1F27 03B9      # L&       GREEK SMALL LETTER ETA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1F98          ; NFKC_CF; 1F20 03B9      # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND PROSGEGRAMMENI
+ 1F99          ; NFKC_CF; 1F21 03B9      # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND PROSGEGRAMMENI
+ 1F9A          ; NFKC_CF; 1F22 03B9      # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ 1F9B          ; NFKC_CF; 1F23 03B9      # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ 1F9C          ; NFKC_CF; 1F24 03B9      # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ 1F9D          ; NFKC_CF; 1F25 03B9      # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ 1F9E          ; NFKC_CF; 1F26 03B9      # L&       GREEK CAPITAL LETTER ETA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ 1F9F          ; NFKC_CF; 1F27 03B9      # L&       GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FA0          ; NFKC_CF; 1F60 03B9      # L&       GREEK SMALL LETTER OMEGA WITH PSILI AND YPOGEGRAMMENI
+ 1FA1          ; NFKC_CF; 1F61 03B9      # L&       GREEK SMALL LETTER OMEGA WITH DASIA AND YPOGEGRAMMENI
+ 1FA2          ; NFKC_CF; 1F62 03B9      # L&       GREEK SMALL LETTER OMEGA WITH PSILI AND VARIA AND YPOGEGRAMMENI
+ 1FA3          ; NFKC_CF; 1F63 03B9      # L&       GREEK SMALL LETTER OMEGA WITH DASIA AND VARIA AND YPOGEGRAMMENI
+ 1FA4          ; NFKC_CF; 1F64 03B9      # L&       GREEK SMALL LETTER OMEGA WITH PSILI AND OXIA AND YPOGEGRAMMENI
+ 1FA5          ; NFKC_CF; 1F65 03B9      # L&       GREEK SMALL LETTER OMEGA WITH DASIA AND OXIA AND YPOGEGRAMMENI
+ 1FA6          ; NFKC_CF; 1F66 03B9      # L&       GREEK SMALL LETTER OMEGA WITH PSILI AND PERISPOMENI AND YPOGEGRAMMENI
+ 1FA7          ; NFKC_CF; 1F67 03B9      # L&       GREEK SMALL LETTER OMEGA WITH DASIA AND PERISPOMENI AND YPOGEGRAMMENI
+ 1FA8          ; NFKC_CF; 1F60 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND PROSGEGRAMMENI
+ 1FA9          ; NFKC_CF; 1F61 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND PROSGEGRAMMENI
+ 1FAA          ; NFKC_CF; 1F62 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND VARIA AND PROSGEGRAMMENI
+ 1FAB          ; NFKC_CF; 1F63 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND VARIA AND PROSGEGRAMMENI
+ 1FAC          ; NFKC_CF; 1F64 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND OXIA AND PROSGEGRAMMENI
+ 1FAD          ; NFKC_CF; 1F65 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND OXIA AND PROSGEGRAMMENI
+ 1FAE          ; NFKC_CF; 1F66 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH PSILI AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FAF          ; NFKC_CF; 1F67 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FB2          ; NFKC_CF; 1F70 03B9      # L&       GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI
+ 1FB3          ; NFKC_CF; 03B1 03B9      # L&       GREEK SMALL LETTER ALPHA WITH YPOGEGRAMMENI
+ 1FB4          ; NFKC_CF; 03AC 03B9      # L&       GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB7          ; NFKC_CF; 1FB6 03B9      # L&       GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FB8          ; NFKC_CF; 1FB0           # L&       GREEK CAPITAL LETTER ALPHA WITH VRACHY
+ 1FB9          ; NFKC_CF; 1FB1           # L&       GREEK CAPITAL LETTER ALPHA WITH MACRON
+ 1FBA          ; NFKC_CF; 1F70           # L&       GREEK CAPITAL LETTER ALPHA WITH VARIA
+ 1FBB          ; NFKC_CF; 03AC           # L&       GREEK CAPITAL LETTER ALPHA WITH OXIA
+ 1FBC          ; NFKC_CF; 03B1 03B9      # L&       GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBD          ; NFKC_CF; 0020 0313      # Sk       GREEK KORONIS
+ 1FBE          ; NFKC_CF; 03B9           # L&       GREEK PROSGEGRAMMENI
+ 1FBF          ; NFKC_CF; 0020 0313      # Sk       GREEK PSILI
+ 1FC0          ; NFKC_CF; 0020 0342      # Sk       GREEK PERISPOMENI
+ 1FC1          ; NFKC_CF; 0020 0308 0342 # Sk       GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2          ; NFKC_CF; 1F74 03B9      # L&       GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI
+ 1FC3          ; NFKC_CF; 03B7 03B9      # L&       GREEK SMALL LETTER ETA WITH YPOGEGRAMMENI
+ 1FC4          ; NFKC_CF; 03AE 03B9      # L&       GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC7          ; NFKC_CF; 1FC6 03B9      # L&       GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FC8          ; NFKC_CF; 1F72           # L&       GREEK CAPITAL LETTER EPSILON WITH VARIA
+ 1FC9          ; NFKC_CF; 03AD           # L&       GREEK CAPITAL LETTER EPSILON WITH OXIA
+ 1FCA          ; NFKC_CF; 1F74           # L&       GREEK CAPITAL LETTER ETA WITH VARIA
+ 1FCB          ; NFKC_CF; 03AE           # L&       GREEK CAPITAL LETTER ETA WITH OXIA
+ 1FCC          ; NFKC_CF; 03B7 03B9      # L&       GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD          ; NFKC_CF; 0020 0313 0300 # Sk       GREEK PSILI AND VARIA
+ 1FCE          ; NFKC_CF; 0020 0313 0301 # Sk       GREEK PSILI AND OXIA
+ 1FCF          ; NFKC_CF; 0020 0313 0342 # Sk       GREEK PSILI AND PERISPOMENI
+ 1FD3          ; NFKC_CF; 0390           # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD8          ; NFKC_CF; 1FD0           # L&       GREEK CAPITAL LETTER IOTA WITH VRACHY
+ 1FD9          ; NFKC_CF; 1FD1           # L&       GREEK CAPITAL LETTER IOTA WITH MACRON
+ 1FDA          ; NFKC_CF; 1F76           # L&       GREEK CAPITAL LETTER IOTA WITH VARIA
+ 1FDB          ; NFKC_CF; 03AF           # L&       GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD          ; NFKC_CF; 0020 0314 0300 # Sk       GREEK DASIA AND VARIA
+ 1FDE          ; NFKC_CF; 0020 0314 0301 # Sk       GREEK DASIA AND OXIA
+ 1FDF          ; NFKC_CF; 0020 0314 0342 # Sk       GREEK DASIA AND PERISPOMENI
+ 1FE3          ; NFKC_CF; 03B0           # L&       GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ 1FE8          ; NFKC_CF; 1FE0           # L&       GREEK CAPITAL LETTER UPSILON WITH VRACHY
+ 1FE9          ; NFKC_CF; 1FE1           # L&       GREEK CAPITAL LETTER UPSILON WITH MACRON
+ 1FEA          ; NFKC_CF; 1F7A           # L&       GREEK CAPITAL LETTER UPSILON WITH VARIA
+ 1FEB          ; NFKC_CF; 03CD           # L&       GREEK CAPITAL LETTER UPSILON WITH OXIA
+ 1FEC          ; NFKC_CF; 1FE5           # L&       GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED          ; NFKC_CF; 0020 0308 0300 # Sk       GREEK DIALYTIKA AND VARIA
+ 1FEE          ; NFKC_CF; 0020 0308 0301 # Sk       GREEK DIALYTIKA AND OXIA
+ 1FEF          ; NFKC_CF; 0060           # Sk       GREEK VARIA
+ 1FF2          ; NFKC_CF; 1F7C 03B9      # L&       GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI
+ 1FF3          ; NFKC_CF; 03C9 03B9      # L&       GREEK SMALL LETTER OMEGA WITH YPOGEGRAMMENI
+ 1FF4          ; NFKC_CF; 03CE 03B9      # L&       GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF7          ; NFKC_CF; 1FF6 03B9      # L&       GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI
+ 1FF8          ; NFKC_CF; 1F78           # L&       GREEK CAPITAL LETTER OMICRON WITH VARIA
+ 1FF9          ; NFKC_CF; 03CC           # L&       GREEK CAPITAL LETTER OMICRON WITH OXIA
+ 1FFA          ; NFKC_CF; 1F7C           # L&       GREEK CAPITAL LETTER OMEGA WITH VARIA
+ 1FFB          ; NFKC_CF; 03CE           # L&       GREEK CAPITAL LETTER OMEGA WITH OXIA
+ 1FFC          ; NFKC_CF; 03C9 03B9      # L&       GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 1FFD          ; NFKC_CF; 0020 0301      # Sk       GREEK OXIA
+ 1FFE          ; NFKC_CF; 0020 0314      # Sk       GREEK DASIA
+ 2000..200A    ; NFKC_CF; 0020           # Zs  [11] EN QUAD..HAIR SPACE
+ 200B..200F    ; NFKC_CF;                # Cf   [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ 2011          ; NFKC_CF; 2010           # Pd       NON-BREAKING HYPHEN
+ 2017          ; NFKC_CF; 0020 0333      # Po       DOUBLE LOW LINE
+ 2024          ; NFKC_CF; 002E           # Po       ONE DOT LEADER
+ 2025          ; NFKC_CF; 002E 002E      # Po       TWO DOT LEADER
+ 2026          ; NFKC_CF; 002E 002E 002E # Po       HORIZONTAL ELLIPSIS
+ 202A..202E    ; NFKC_CF;                # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ 202F          ; NFKC_CF; 0020           # Zs       NARROW NO-BREAK SPACE
+ 2033          ; NFKC_CF; 2032 2032      # Po       DOUBLE PRIME
+ 2034          ; NFKC_CF; 2032 2032 2032 # Po       TRIPLE PRIME
+ 2036          ; NFKC_CF; 2035 2035      # Po       REVERSED DOUBLE PRIME
+ 2037          ; NFKC_CF; 2035 2035 2035 # Po       REVERSED TRIPLE PRIME
+ 203C          ; NFKC_CF; 0021 0021      # Po       DOUBLE EXCLAMATION MARK
+ 203E          ; NFKC_CF; 0020 0305      # Po       OVERLINE
+ 2047          ; NFKC_CF; 003F 003F      # Po       DOUBLE QUESTION MARK
+ 2048          ; NFKC_CF; 003F 0021      # Po       QUESTION EXCLAMATION MARK
+ 2049          ; NFKC_CF; 0021 003F      # Po       EXCLAMATION QUESTION MARK
+ 2057          ; NFKC_CF; 2032 2032 2032 2032 #Po   QUADRUPLE PRIME
+ 205F          ; NFKC_CF; 0020           # Zs       MEDIUM MATHEMATICAL SPACE
+ 2060..2064    ; NFKC_CF;                # Cf   [5] WORD JOINER..INVISIBLE PLUS
+ 2065          ; NFKC_CF;                # Cn       <reserved-2065>
+ 2066..206F    ; NFKC_CF;                # Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+ 2070          ; NFKC_CF; 0030           # No       SUPERSCRIPT ZERO
+ 2071          ; NFKC_CF; 0069           # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 2074          ; NFKC_CF; 0034           # No       SUPERSCRIPT FOUR
+ 2075          ; NFKC_CF; 0035           # No       SUPERSCRIPT FIVE
+ 2076          ; NFKC_CF; 0036           # No       SUPERSCRIPT SIX
+ 2077          ; NFKC_CF; 0037           # No       SUPERSCRIPT SEVEN
+ 2078          ; NFKC_CF; 0038           # No       SUPERSCRIPT EIGHT
+ 2079          ; NFKC_CF; 0039           # No       SUPERSCRIPT NINE
+ 207A          ; NFKC_CF; 002B           # Sm       SUPERSCRIPT PLUS SIGN
+ 207B          ; NFKC_CF; 2212           # Sm       SUPERSCRIPT MINUS
+ 207C          ; NFKC_CF; 003D           # Sm       SUPERSCRIPT EQUALS SIGN
+ 207D          ; NFKC_CF; 0028           # Ps       SUPERSCRIPT LEFT PARENTHESIS
+ 207E          ; NFKC_CF; 0029           # Pe       SUPERSCRIPT RIGHT PARENTHESIS
+ 207F          ; NFKC_CF; 006E           # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2080          ; NFKC_CF; 0030           # No       SUBSCRIPT ZERO
+ 2081          ; NFKC_CF; 0031           # No       SUBSCRIPT ONE
+ 2082          ; NFKC_CF; 0032           # No       SUBSCRIPT TWO
+ 2083          ; NFKC_CF; 0033           # No       SUBSCRIPT THREE
+ 2084          ; NFKC_CF; 0034           # No       SUBSCRIPT FOUR
+ 2085          ; NFKC_CF; 0035           # No       SUBSCRIPT FIVE
+ 2086          ; NFKC_CF; 0036           # No       SUBSCRIPT SIX
+ 2087          ; NFKC_CF; 0037           # No       SUBSCRIPT SEVEN
+ 2088          ; NFKC_CF; 0038           # No       SUBSCRIPT EIGHT
+ 2089          ; NFKC_CF; 0039           # No       SUBSCRIPT NINE
+ 208A          ; NFKC_CF; 002B           # Sm       SUBSCRIPT PLUS SIGN
+ 208B          ; NFKC_CF; 2212           # Sm       SUBSCRIPT MINUS
+ 208C          ; NFKC_CF; 003D           # Sm       SUBSCRIPT EQUALS SIGN
+ 208D          ; NFKC_CF; 0028           # Ps       SUBSCRIPT LEFT PARENTHESIS
+ 208E          ; NFKC_CF; 0029           # Pe       SUBSCRIPT RIGHT PARENTHESIS
+ 2090          ; NFKC_CF; 0061           # Lm       LATIN SUBSCRIPT SMALL LETTER A
+ 2091          ; NFKC_CF; 0065           # Lm       LATIN SUBSCRIPT SMALL LETTER E
+ 2092          ; NFKC_CF; 006F           # Lm       LATIN SUBSCRIPT SMALL LETTER O
+ 2093          ; NFKC_CF; 0078           # Lm       LATIN SUBSCRIPT SMALL LETTER X
+ 2094          ; NFKC_CF; 0259           # Lm       LATIN SUBSCRIPT SMALL LETTER SCHWA
+ 2095          ; NFKC_CF; 0068           # Lm       LATIN SUBSCRIPT SMALL LETTER H
+ 2096          ; NFKC_CF; 006B           # Lm       LATIN SUBSCRIPT SMALL LETTER K
+ 2097          ; NFKC_CF; 006C           # Lm       LATIN SUBSCRIPT SMALL LETTER L
+ 2098          ; NFKC_CF; 006D           # Lm       LATIN SUBSCRIPT SMALL LETTER M
+ 2099          ; NFKC_CF; 006E           # Lm       LATIN SUBSCRIPT SMALL LETTER N
+ 209A          ; NFKC_CF; 0070           # Lm       LATIN SUBSCRIPT SMALL LETTER P
+ 209B          ; NFKC_CF; 0073           # Lm       LATIN SUBSCRIPT SMALL LETTER S
+ 209C          ; NFKC_CF; 0074           # Lm       LATIN SUBSCRIPT SMALL LETTER T
+ 20A8          ; NFKC_CF; 0072 0073      # Sc       RUPEE SIGN
+ 2100          ; NFKC_CF; 0061 002F 0063 # So       ACCOUNT OF
+ 2101          ; NFKC_CF; 0061 002F 0073 # So       ADDRESSED TO THE SUBJECT
+ 2102          ; NFKC_CF; 0063           # L&       DOUBLE-STRUCK CAPITAL C
+ 2103          ; NFKC_CF; 00B0 0063      # So       DEGREE CELSIUS
+ 2105          ; NFKC_CF; 0063 002F 006F # So       CARE OF
+ 2106          ; NFKC_CF; 0063 002F 0075 # So       CADA UNA
+ 2107          ; NFKC_CF; 025B           # L&       EULER CONSTANT
+ 2109          ; NFKC_CF; 00B0 0066      # So       DEGREE FAHRENHEIT
+ 210A          ; NFKC_CF; 0067           # L&       SCRIPT SMALL G
+ 210B..210E    ; NFKC_CF; 0068           # L&   [4] SCRIPT CAPITAL H..PLANCK CONSTANT
+ 210F          ; NFKC_CF; 0127           # L&       PLANCK CONSTANT OVER TWO PI
+ 2110..2111    ; NFKC_CF; 0069           # L&   [2] SCRIPT CAPITAL I..BLACK-LETTER CAPITAL I
+ 2112..2113    ; NFKC_CF; 006C           # L&   [2] SCRIPT CAPITAL L..SCRIPT SMALL L
+ 2115          ; NFKC_CF; 006E           # L&       DOUBLE-STRUCK CAPITAL N
+ 2116          ; NFKC_CF; 006E 006F      # So       NUMERO SIGN
+ 2119          ; NFKC_CF; 0070           # L&       DOUBLE-STRUCK CAPITAL P
+ 211A          ; NFKC_CF; 0071           # L&       DOUBLE-STRUCK CAPITAL Q
+ 211B..211D    ; NFKC_CF; 0072           # L&   [3] SCRIPT CAPITAL R..DOUBLE-STRUCK CAPITAL R
+ 2120          ; NFKC_CF; 0073 006D      # So       SERVICE MARK
+ 2121          ; NFKC_CF; 0074 0065 006C # So       TELEPHONE SIGN
+ 2122          ; NFKC_CF; 0074 006D      # So       TRADE MARK SIGN
+ 2124          ; NFKC_CF; 007A           # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; NFKC_CF; 03C9           # L&       OHM SIGN
+ 2128          ; NFKC_CF; 007A           # L&       BLACK-LETTER CAPITAL Z
+ 212A          ; NFKC_CF; 006B           # L&       KELVIN SIGN
+ 212B          ; NFKC_CF; 00E5           # L&       ANGSTROM SIGN
+ 212C          ; NFKC_CF; 0062           # L&       SCRIPT CAPITAL B
+ 212D          ; NFKC_CF; 0063           # L&       BLACK-LETTER CAPITAL C
+ 212F..2130    ; NFKC_CF; 0065           # L&   [2] SCRIPT SMALL E..SCRIPT CAPITAL E
+ 2131          ; NFKC_CF; 0066           # L&       SCRIPT CAPITAL F
+ 2132          ; NFKC_CF; 214E           # L&       TURNED CAPITAL F
+ 2133          ; NFKC_CF; 006D           # L&       SCRIPT CAPITAL M
+ 2134          ; NFKC_CF; 006F           # L&       SCRIPT SMALL O
+ 2135          ; NFKC_CF; 05D0           # Lo       ALEF SYMBOL
+ 2136          ; NFKC_CF; 05D1           # Lo       BET SYMBOL
+ 2137          ; NFKC_CF; 05D2           # Lo       GIMEL SYMBOL
+ 2138          ; NFKC_CF; 05D3           # Lo       DALET SYMBOL
+ 2139          ; NFKC_CF; 0069           # L&       INFORMATION SOURCE
+ 213B          ; NFKC_CF; 0066 0061 0078 # So       FACSIMILE SIGN
+ 213C          ; NFKC_CF; 03C0           # L&       DOUBLE-STRUCK SMALL PI
+ 213D..213E    ; NFKC_CF; 03B3           # L&   [2] DOUBLE-STRUCK SMALL GAMMA..DOUBLE-STRUCK CAPITAL GAMMA
+ 213F          ; NFKC_CF; 03C0           # L&       DOUBLE-STRUCK CAPITAL PI
+ 2140          ; NFKC_CF; 2211           # Sm       DOUBLE-STRUCK N-ARY SUMMATION
+ 2145..2146    ; NFKC_CF; 0064           # L&   [2] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL D
+ 2147          ; NFKC_CF; 0065           # L&       DOUBLE-STRUCK ITALIC SMALL E
+ 2148          ; NFKC_CF; 0069           # L&       DOUBLE-STRUCK ITALIC SMALL I
+ 2149          ; NFKC_CF; 006A           # L&       DOUBLE-STRUCK ITALIC SMALL J
+ 2150          ; NFKC_CF; 0031 2044 0037 # No       VULGAR FRACTION ONE SEVENTH
+ 2151          ; NFKC_CF; 0031 2044 0039 # No       VULGAR FRACTION ONE NINTH
+ 2152          ; NFKC_CF; 0031 2044 0031 0030 #No   VULGAR FRACTION ONE TENTH
+ 2153          ; NFKC_CF; 0031 2044 0033 # No       VULGAR FRACTION ONE THIRD
+ 2154          ; NFKC_CF; 0032 2044 0033 # No       VULGAR FRACTION TWO THIRDS
+ 2155          ; NFKC_CF; 0031 2044 0035 # No       VULGAR FRACTION ONE FIFTH
+ 2156          ; NFKC_CF; 0032 2044 0035 # No       VULGAR FRACTION TWO FIFTHS
+ 2157          ; NFKC_CF; 0033 2044 0035 # No       VULGAR FRACTION THREE FIFTHS
+ 2158          ; NFKC_CF; 0034 2044 0035 # No       VULGAR FRACTION FOUR FIFTHS
+ 2159          ; NFKC_CF; 0031 2044 0036 # No       VULGAR FRACTION ONE SIXTH
+ 215A          ; NFKC_CF; 0035 2044 0036 # No       VULGAR FRACTION FIVE SIXTHS
+ 215B          ; NFKC_CF; 0031 2044 0038 # No       VULGAR FRACTION ONE EIGHTH
+ 215C          ; NFKC_CF; 0033 2044 0038 # No       VULGAR FRACTION THREE EIGHTHS
+ 215D          ; NFKC_CF; 0035 2044 0038 # No       VULGAR FRACTION FIVE EIGHTHS
+ 215E          ; NFKC_CF; 0037 2044 0038 # No       VULGAR FRACTION SEVEN EIGHTHS
+ 215F          ; NFKC_CF; 0031 2044      # No       FRACTION NUMERATOR ONE
+ 2160          ; NFKC_CF; 0069           # Nl       ROMAN NUMERAL ONE
+ 2161          ; NFKC_CF; 0069 0069      # Nl       ROMAN NUMERAL TWO
+ 2162          ; NFKC_CF; 0069 0069 0069 # Nl       ROMAN NUMERAL THREE
+ 2163          ; NFKC_CF; 0069 0076      # Nl       ROMAN NUMERAL FOUR
+ 2164          ; NFKC_CF; 0076           # Nl       ROMAN NUMERAL FIVE
+ 2165          ; NFKC_CF; 0076 0069      # Nl       ROMAN NUMERAL SIX
+ 2166          ; NFKC_CF; 0076 0069 0069 # Nl       ROMAN NUMERAL SEVEN
+ 2167          ; NFKC_CF; 0076 0069 0069 0069 #Nl   ROMAN NUMERAL EIGHT
+ 2168          ; NFKC_CF; 0069 0078      # Nl       ROMAN NUMERAL NINE
+ 2169          ; NFKC_CF; 0078           # Nl       ROMAN NUMERAL TEN
+ 216A          ; NFKC_CF; 0078 0069      # Nl       ROMAN NUMERAL ELEVEN
+ 216B          ; NFKC_CF; 0078 0069 0069 # Nl       ROMAN NUMERAL TWELVE
+ 216C          ; NFKC_CF; 006C           # Nl       ROMAN NUMERAL FIFTY
+ 216D          ; NFKC_CF; 0063           # Nl       ROMAN NUMERAL ONE HUNDRED
+ 216E          ; NFKC_CF; 0064           # Nl       ROMAN NUMERAL FIVE HUNDRED
+ 216F          ; NFKC_CF; 006D           # Nl       ROMAN NUMERAL ONE THOUSAND
+ 2170          ; NFKC_CF; 0069           # Nl       SMALL ROMAN NUMERAL ONE
+ 2171          ; NFKC_CF; 0069 0069      # Nl       SMALL ROMAN NUMERAL TWO
+ 2172          ; NFKC_CF; 0069 0069 0069 # Nl       SMALL ROMAN NUMERAL THREE
+ 2173          ; NFKC_CF; 0069 0076      # Nl       SMALL ROMAN NUMERAL FOUR
+ 2174          ; NFKC_CF; 0076           # Nl       SMALL ROMAN NUMERAL FIVE
+ 2175          ; NFKC_CF; 0076 0069      # Nl       SMALL ROMAN NUMERAL SIX
+ 2176          ; NFKC_CF; 0076 0069 0069 # Nl       SMALL ROMAN NUMERAL SEVEN
+ 2177          ; NFKC_CF; 0076 0069 0069 0069 #Nl   SMALL ROMAN NUMERAL EIGHT
+ 2178          ; NFKC_CF; 0069 0078      # Nl       SMALL ROMAN NUMERAL NINE
+ 2179          ; NFKC_CF; 0078           # Nl       SMALL ROMAN NUMERAL TEN
+ 217A          ; NFKC_CF; 0078 0069      # Nl       SMALL ROMAN NUMERAL ELEVEN
+ 217B          ; NFKC_CF; 0078 0069 0069 # Nl       SMALL ROMAN NUMERAL TWELVE
+ 217C          ; NFKC_CF; 006C           # Nl       SMALL ROMAN NUMERAL FIFTY
+ 217D          ; NFKC_CF; 0063           # Nl       SMALL ROMAN NUMERAL ONE HUNDRED
+ 217E          ; NFKC_CF; 0064           # Nl       SMALL ROMAN NUMERAL FIVE HUNDRED
+ 217F          ; NFKC_CF; 006D           # Nl       SMALL ROMAN NUMERAL ONE THOUSAND
+ 2183          ; NFKC_CF; 2184           # L&       ROMAN NUMERAL REVERSED ONE HUNDRED
+ 2189          ; NFKC_CF; 0030 2044 0033 # No       VULGAR FRACTION ZERO THIRDS
+ 222C          ; NFKC_CF; 222B 222B      # Sm       DOUBLE INTEGRAL
+ 222D          ; NFKC_CF; 222B 222B 222B # Sm       TRIPLE INTEGRAL
+ 222F          ; NFKC_CF; 222E 222E      # Sm       SURFACE INTEGRAL
+ 2230          ; NFKC_CF; 222E 222E 222E # Sm       VOLUME INTEGRAL
+ 2329          ; NFKC_CF; 3008           # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; NFKC_CF; 3009           # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2460          ; NFKC_CF; 0031           # No       CIRCLED DIGIT ONE
+ 2461          ; NFKC_CF; 0032           # No       CIRCLED DIGIT TWO
+ 2462          ; NFKC_CF; 0033           # No       CIRCLED DIGIT THREE
+ 2463          ; NFKC_CF; 0034           # No       CIRCLED DIGIT FOUR
+ 2464          ; NFKC_CF; 0035           # No       CIRCLED DIGIT FIVE
+ 2465          ; NFKC_CF; 0036           # No       CIRCLED DIGIT SIX
+ 2466          ; NFKC_CF; 0037           # No       CIRCLED DIGIT SEVEN
+ 2467          ; NFKC_CF; 0038           # No       CIRCLED DIGIT EIGHT
+ 2468          ; NFKC_CF; 0039           # No       CIRCLED DIGIT NINE
+ 2469          ; NFKC_CF; 0031 0030      # No       CIRCLED NUMBER TEN
+ 246A          ; NFKC_CF; 0031 0031      # No       CIRCLED NUMBER ELEVEN
+ 246B          ; NFKC_CF; 0031 0032      # No       CIRCLED NUMBER TWELVE
+ 246C          ; NFKC_CF; 0031 0033      # No       CIRCLED NUMBER THIRTEEN
+ 246D          ; NFKC_CF; 0031 0034      # No       CIRCLED NUMBER FOURTEEN
+ 246E          ; NFKC_CF; 0031 0035      # No       CIRCLED NUMBER FIFTEEN
+ 246F          ; NFKC_CF; 0031 0036      # No       CIRCLED NUMBER SIXTEEN
+ 2470          ; NFKC_CF; 0031 0037      # No       CIRCLED NUMBER SEVENTEEN
+ 2471          ; NFKC_CF; 0031 0038      # No       CIRCLED NUMBER EIGHTEEN
+ 2472          ; NFKC_CF; 0031 0039      # No       CIRCLED NUMBER NINETEEN
+ 2473          ; NFKC_CF; 0032 0030      # No       CIRCLED NUMBER TWENTY
+ 2474          ; NFKC_CF; 0028 0031 0029 # No       PARENTHESIZED DIGIT ONE
+ 2475          ; NFKC_CF; 0028 0032 0029 # No       PARENTHESIZED DIGIT TWO
+ 2476          ; NFKC_CF; 0028 0033 0029 # No       PARENTHESIZED DIGIT THREE
+ 2477          ; NFKC_CF; 0028 0034 0029 # No       PARENTHESIZED DIGIT FOUR
+ 2478          ; NFKC_CF; 0028 0035 0029 # No       PARENTHESIZED DIGIT FIVE
+ 2479          ; NFKC_CF; 0028 0036 0029 # No       PARENTHESIZED DIGIT SIX
+ 247A          ; NFKC_CF; 0028 0037 0029 # No       PARENTHESIZED DIGIT SEVEN
+ 247B          ; NFKC_CF; 0028 0038 0029 # No       PARENTHESIZED DIGIT EIGHT
+ 247C          ; NFKC_CF; 0028 0039 0029 # No       PARENTHESIZED DIGIT NINE
+ 247D          ; NFKC_CF; 0028 0031 0030 0029 #No   PARENTHESIZED NUMBER TEN
+ 247E          ; NFKC_CF; 0028 0031 0031 0029 #No   PARENTHESIZED NUMBER ELEVEN
+ 247F          ; NFKC_CF; 0028 0031 0032 0029 #No   PARENTHESIZED NUMBER TWELVE
+ 2480          ; NFKC_CF; 0028 0031 0033 0029 #No   PARENTHESIZED NUMBER THIRTEEN
+ 2481          ; NFKC_CF; 0028 0031 0034 0029 #No   PARENTHESIZED NUMBER FOURTEEN
+ 2482          ; NFKC_CF; 0028 0031 0035 0029 #No   PARENTHESIZED NUMBER FIFTEEN
+ 2483          ; NFKC_CF; 0028 0031 0036 0029 #No   PARENTHESIZED NUMBER SIXTEEN
+ 2484          ; NFKC_CF; 0028 0031 0037 0029 #No   PARENTHESIZED NUMBER SEVENTEEN
+ 2485          ; NFKC_CF; 0028 0031 0038 0029 #No   PARENTHESIZED NUMBER EIGHTEEN
+ 2486          ; NFKC_CF; 0028 0031 0039 0029 #No   PARENTHESIZED NUMBER NINETEEN
+ 2487          ; NFKC_CF; 0028 0032 0030 0029 #No   PARENTHESIZED NUMBER TWENTY
+ 2488          ; NFKC_CF; 0031 002E      # No       DIGIT ONE FULL STOP
+ 2489          ; NFKC_CF; 0032 002E      # No       DIGIT TWO FULL STOP
+ 248A          ; NFKC_CF; 0033 002E      # No       DIGIT THREE FULL STOP
+ 248B          ; NFKC_CF; 0034 002E      # No       DIGIT FOUR FULL STOP
+ 248C          ; NFKC_CF; 0035 002E      # No       DIGIT FIVE FULL STOP
+ 248D          ; NFKC_CF; 0036 002E      # No       DIGIT SIX FULL STOP
+ 248E          ; NFKC_CF; 0037 002E      # No       DIGIT SEVEN FULL STOP
+ 248F          ; NFKC_CF; 0038 002E      # No       DIGIT EIGHT FULL STOP
+ 2490          ; NFKC_CF; 0039 002E      # No       DIGIT NINE FULL STOP
+ 2491          ; NFKC_CF; 0031 0030 002E # No       NUMBER TEN FULL STOP
+ 2492          ; NFKC_CF; 0031 0031 002E # No       NUMBER ELEVEN FULL STOP
+ 2493          ; NFKC_CF; 0031 0032 002E # No       NUMBER TWELVE FULL STOP
+ 2494          ; NFKC_CF; 0031 0033 002E # No       NUMBER THIRTEEN FULL STOP
+ 2495          ; NFKC_CF; 0031 0034 002E # No       NUMBER FOURTEEN FULL STOP
+ 2496          ; NFKC_CF; 0031 0035 002E # No       NUMBER FIFTEEN FULL STOP
+ 2497          ; NFKC_CF; 0031 0036 002E # No       NUMBER SIXTEEN FULL STOP
+ 2498          ; NFKC_CF; 0031 0037 002E # No       NUMBER SEVENTEEN FULL STOP
+ 2499          ; NFKC_CF; 0031 0038 002E # No       NUMBER EIGHTEEN FULL STOP
+ 249A          ; NFKC_CF; 0031 0039 002E # No       NUMBER NINETEEN FULL STOP
+ 249B          ; NFKC_CF; 0032 0030 002E # No       NUMBER TWENTY FULL STOP
+ 249C          ; NFKC_CF; 0028 0061 0029 # So       PARENTHESIZED LATIN SMALL LETTER A
+ 249D          ; NFKC_CF; 0028 0062 0029 # So       PARENTHESIZED LATIN SMALL LETTER B
+ 249E          ; NFKC_CF; 0028 0063 0029 # So       PARENTHESIZED LATIN SMALL LETTER C
+ 249F          ; NFKC_CF; 0028 0064 0029 # So       PARENTHESIZED LATIN SMALL LETTER D
+ 24A0          ; NFKC_CF; 0028 0065 0029 # So       PARENTHESIZED LATIN SMALL LETTER E
+ 24A1          ; NFKC_CF; 0028 0066 0029 # So       PARENTHESIZED LATIN SMALL LETTER F
+ 24A2          ; NFKC_CF; 0028 0067 0029 # So       PARENTHESIZED LATIN SMALL LETTER G
+ 24A3          ; NFKC_CF; 0028 0068 0029 # So       PARENTHESIZED LATIN SMALL LETTER H
+ 24A4          ; NFKC_CF; 0028 0069 0029 # So       PARENTHESIZED LATIN SMALL LETTER I
+ 24A5          ; NFKC_CF; 0028 006A 0029 # So       PARENTHESIZED LATIN SMALL LETTER J
+ 24A6          ; NFKC_CF; 0028 006B 0029 # So       PARENTHESIZED LATIN SMALL LETTER K
+ 24A7          ; NFKC_CF; 0028 006C 0029 # So       PARENTHESIZED LATIN SMALL LETTER L
+ 24A8          ; NFKC_CF; 0028 006D 0029 # So       PARENTHESIZED LATIN SMALL LETTER M
+ 24A9          ; NFKC_CF; 0028 006E 0029 # So       PARENTHESIZED LATIN SMALL LETTER N
+ 24AA          ; NFKC_CF; 0028 006F 0029 # So       PARENTHESIZED LATIN SMALL LETTER O
+ 24AB          ; NFKC_CF; 0028 0070 0029 # So       PARENTHESIZED LATIN SMALL LETTER P
+ 24AC          ; NFKC_CF; 0028 0071 0029 # So       PARENTHESIZED LATIN SMALL LETTER Q
+ 24AD          ; NFKC_CF; 0028 0072 0029 # So       PARENTHESIZED LATIN SMALL LETTER R
+ 24AE          ; NFKC_CF; 0028 0073 0029 # So       PARENTHESIZED LATIN SMALL LETTER S
+ 24AF          ; NFKC_CF; 0028 0074 0029 # So       PARENTHESIZED LATIN SMALL LETTER T
+ 24B0          ; NFKC_CF; 0028 0075 0029 # So       PARENTHESIZED LATIN SMALL LETTER U
+ 24B1          ; NFKC_CF; 0028 0076 0029 # So       PARENTHESIZED LATIN SMALL LETTER V
+ 24B2          ; NFKC_CF; 0028 0077 0029 # So       PARENTHESIZED LATIN SMALL LETTER W
+ 24B3          ; NFKC_CF; 0028 0078 0029 # So       PARENTHESIZED LATIN SMALL LETTER X
+ 24B4          ; NFKC_CF; 0028 0079 0029 # So       PARENTHESIZED LATIN SMALL LETTER Y
+ 24B5          ; NFKC_CF; 0028 007A 0029 # So       PARENTHESIZED LATIN SMALL LETTER Z
+ 24B6          ; NFKC_CF; 0061           # So       CIRCLED LATIN CAPITAL LETTER A
+ 24B7          ; NFKC_CF; 0062           # So       CIRCLED LATIN CAPITAL LETTER B
+ 24B8          ; NFKC_CF; 0063           # So       CIRCLED LATIN CAPITAL LETTER C
+ 24B9          ; NFKC_CF; 0064           # So       CIRCLED LATIN CAPITAL LETTER D
+ 24BA          ; NFKC_CF; 0065           # So       CIRCLED LATIN CAPITAL LETTER E
+ 24BB          ; NFKC_CF; 0066           # So       CIRCLED LATIN CAPITAL LETTER F
+ 24BC          ; NFKC_CF; 0067           # So       CIRCLED LATIN CAPITAL LETTER G
+ 24BD          ; NFKC_CF; 0068           # So       CIRCLED LATIN CAPITAL LETTER H
+ 24BE          ; NFKC_CF; 0069           # So       CIRCLED LATIN CAPITAL LETTER I
+ 24BF          ; NFKC_CF; 006A           # So       CIRCLED LATIN CAPITAL LETTER J
+ 24C0          ; NFKC_CF; 006B           # So       CIRCLED LATIN CAPITAL LETTER K
+ 24C1          ; NFKC_CF; 006C           # So       CIRCLED LATIN CAPITAL LETTER L
+ 24C2          ; NFKC_CF; 006D           # So       CIRCLED LATIN CAPITAL LETTER M
+ 24C3          ; NFKC_CF; 006E           # So       CIRCLED LATIN CAPITAL LETTER N
+ 24C4          ; NFKC_CF; 006F           # So       CIRCLED LATIN CAPITAL LETTER O
+ 24C5          ; NFKC_CF; 0070           # So       CIRCLED LATIN CAPITAL LETTER P
+ 24C6          ; NFKC_CF; 0071           # So       CIRCLED LATIN CAPITAL LETTER Q
+ 24C7          ; NFKC_CF; 0072           # So       CIRCLED LATIN CAPITAL LETTER R
+ 24C8          ; NFKC_CF; 0073           # So       CIRCLED LATIN CAPITAL LETTER S
+ 24C9          ; NFKC_CF; 0074           # So       CIRCLED LATIN CAPITAL LETTER T
+ 24CA          ; NFKC_CF; 0075           # So       CIRCLED LATIN CAPITAL LETTER U
+ 24CB          ; NFKC_CF; 0076           # So       CIRCLED LATIN CAPITAL LETTER V
+ 24CC          ; NFKC_CF; 0077           # So       CIRCLED LATIN CAPITAL LETTER W
+ 24CD          ; NFKC_CF; 0078           # So       CIRCLED LATIN CAPITAL LETTER X
+ 24CE          ; NFKC_CF; 0079           # So       CIRCLED LATIN CAPITAL LETTER Y
+ 24CF          ; NFKC_CF; 007A           # So       CIRCLED LATIN CAPITAL LETTER Z
+ 24D0          ; NFKC_CF; 0061           # So       CIRCLED LATIN SMALL LETTER A
+ 24D1          ; NFKC_CF; 0062           # So       CIRCLED LATIN SMALL LETTER B
+ 24D2          ; NFKC_CF; 0063           # So       CIRCLED LATIN SMALL LETTER C
+ 24D3          ; NFKC_CF; 0064           # So       CIRCLED LATIN SMALL LETTER D
+ 24D4          ; NFKC_CF; 0065           # So       CIRCLED LATIN SMALL LETTER E
+ 24D5          ; NFKC_CF; 0066           # So       CIRCLED LATIN SMALL LETTER F
+ 24D6          ; NFKC_CF; 0067           # So       CIRCLED LATIN SMALL LETTER G
+ 24D7          ; NFKC_CF; 0068           # So       CIRCLED LATIN SMALL LETTER H
+ 24D8          ; NFKC_CF; 0069           # So       CIRCLED LATIN SMALL LETTER I
+ 24D9          ; NFKC_CF; 006A           # So       CIRCLED LATIN SMALL LETTER J
+ 24DA          ; NFKC_CF; 006B           # So       CIRCLED LATIN SMALL LETTER K
+ 24DB          ; NFKC_CF; 006C           # So       CIRCLED LATIN SMALL LETTER L
+ 24DC          ; NFKC_CF; 006D           # So       CIRCLED LATIN SMALL LETTER M
+ 24DD          ; NFKC_CF; 006E           # So       CIRCLED LATIN SMALL LETTER N
+ 24DE          ; NFKC_CF; 006F           # So       CIRCLED LATIN SMALL LETTER O
+ 24DF          ; NFKC_CF; 0070           # So       CIRCLED LATIN SMALL LETTER P
+ 24E0          ; NFKC_CF; 0071           # So       CIRCLED LATIN SMALL LETTER Q
+ 24E1          ; NFKC_CF; 0072           # So       CIRCLED LATIN SMALL LETTER R
+ 24E2          ; NFKC_CF; 0073           # So       CIRCLED LATIN SMALL LETTER S
+ 24E3          ; NFKC_CF; 0074           # So       CIRCLED LATIN SMALL LETTER T
+ 24E4          ; NFKC_CF; 0075           # So       CIRCLED LATIN SMALL LETTER U
+ 24E5          ; NFKC_CF; 0076           # So       CIRCLED LATIN SMALL LETTER V
+ 24E6          ; NFKC_CF; 0077           # So       CIRCLED LATIN SMALL LETTER W
+ 24E7          ; NFKC_CF; 0078           # So       CIRCLED LATIN SMALL LETTER X
+ 24E8          ; NFKC_CF; 0079           # So       CIRCLED LATIN SMALL LETTER Y
+ 24E9          ; NFKC_CF; 007A           # So       CIRCLED LATIN SMALL LETTER Z
+ 24EA          ; NFKC_CF; 0030           # No       CIRCLED DIGIT ZERO
+ 2A0C          ; NFKC_CF; 222B 222B 222B 222B #Sm   QUADRUPLE INTEGRAL OPERATOR
+ 2A74          ; NFKC_CF; 003A 003A 003D # Sm       DOUBLE COLON EQUAL
+ 2A75          ; NFKC_CF; 003D 003D      # Sm       TWO CONSECUTIVE EQUALS SIGNS
+ 2A76          ; NFKC_CF; 003D 003D 003D # Sm       THREE CONSECUTIVE EQUALS SIGNS
+ 2ADC          ; NFKC_CF; 2ADD 0338      # Sm       FORKING
+ 2C00          ; NFKC_CF; 2C30           # L&       GLAGOLITIC CAPITAL LETTER AZU
+ 2C01          ; NFKC_CF; 2C31           # L&       GLAGOLITIC CAPITAL LETTER BUKY
+ 2C02          ; NFKC_CF; 2C32           # L&       GLAGOLITIC CAPITAL LETTER VEDE
+ 2C03          ; NFKC_CF; 2C33           # L&       GLAGOLITIC CAPITAL LETTER GLAGOLI
+ 2C04          ; NFKC_CF; 2C34           # L&       GLAGOLITIC CAPITAL LETTER DOBRO
+ 2C05          ; NFKC_CF; 2C35           # L&       GLAGOLITIC CAPITAL LETTER YESTU
+ 2C06          ; NFKC_CF; 2C36           # L&       GLAGOLITIC CAPITAL LETTER ZHIVETE
+ 2C07          ; NFKC_CF; 2C37           # L&       GLAGOLITIC CAPITAL LETTER DZELO
+ 2C08          ; NFKC_CF; 2C38           # L&       GLAGOLITIC CAPITAL LETTER ZEMLJA
+ 2C09          ; NFKC_CF; 2C39           # L&       GLAGOLITIC CAPITAL LETTER IZHE
+ 2C0A          ; NFKC_CF; 2C3A           # L&       GLAGOLITIC CAPITAL LETTER INITIAL IZHE
+ 2C0B          ; NFKC_CF; 2C3B           # L&       GLAGOLITIC CAPITAL LETTER I
+ 2C0C          ; NFKC_CF; 2C3C           # L&       GLAGOLITIC CAPITAL LETTER DJERVI
+ 2C0D          ; NFKC_CF; 2C3D           # L&       GLAGOLITIC CAPITAL LETTER KAKO
+ 2C0E          ; NFKC_CF; 2C3E           # L&       GLAGOLITIC CAPITAL LETTER LJUDIJE
+ 2C0F          ; NFKC_CF; 2C3F           # L&       GLAGOLITIC CAPITAL LETTER MYSLITE
+ 2C10          ; NFKC_CF; 2C40           # L&       GLAGOLITIC CAPITAL LETTER NASHI
+ 2C11          ; NFKC_CF; 2C41           # L&       GLAGOLITIC CAPITAL LETTER ONU
+ 2C12          ; NFKC_CF; 2C42           # L&       GLAGOLITIC CAPITAL LETTER POKOJI
+ 2C13          ; NFKC_CF; 2C43           # L&       GLAGOLITIC CAPITAL LETTER RITSI
+ 2C14          ; NFKC_CF; 2C44           # L&       GLAGOLITIC CAPITAL LETTER SLOVO
+ 2C15          ; NFKC_CF; 2C45           # L&       GLAGOLITIC CAPITAL LETTER TVRIDO
+ 2C16          ; NFKC_CF; 2C46           # L&       GLAGOLITIC CAPITAL LETTER UKU
+ 2C17          ; NFKC_CF; 2C47           # L&       GLAGOLITIC CAPITAL LETTER FRITU
+ 2C18          ; NFKC_CF; 2C48           # L&       GLAGOLITIC CAPITAL LETTER HERU
+ 2C19          ; NFKC_CF; 2C49           # L&       GLAGOLITIC CAPITAL LETTER OTU
+ 2C1A          ; NFKC_CF; 2C4A           # L&       GLAGOLITIC CAPITAL LETTER PE
+ 2C1B          ; NFKC_CF; 2C4B           # L&       GLAGOLITIC CAPITAL LETTER SHTA
+ 2C1C          ; NFKC_CF; 2C4C           # L&       GLAGOLITIC CAPITAL LETTER TSI
+ 2C1D          ; NFKC_CF; 2C4D           # L&       GLAGOLITIC CAPITAL LETTER CHRIVI
+ 2C1E          ; NFKC_CF; 2C4E           # L&       GLAGOLITIC CAPITAL LETTER SHA
+ 2C1F          ; NFKC_CF; 2C4F           # L&       GLAGOLITIC CAPITAL LETTER YERU
+ 2C20          ; NFKC_CF; 2C50           # L&       GLAGOLITIC CAPITAL LETTER YERI
+ 2C21          ; NFKC_CF; 2C51           # L&       GLAGOLITIC CAPITAL LETTER YATI
+ 2C22          ; NFKC_CF; 2C52           # L&       GLAGOLITIC CAPITAL LETTER SPIDERY HA
+ 2C23          ; NFKC_CF; 2C53           # L&       GLAGOLITIC CAPITAL LETTER YU
+ 2C24          ; NFKC_CF; 2C54           # L&       GLAGOLITIC CAPITAL LETTER SMALL YUS
+ 2C25          ; NFKC_CF; 2C55           # L&       GLAGOLITIC CAPITAL LETTER SMALL YUS WITH TAIL
+ 2C26          ; NFKC_CF; 2C56           # L&       GLAGOLITIC CAPITAL LETTER YO
+ 2C27          ; NFKC_CF; 2C57           # L&       GLAGOLITIC CAPITAL LETTER IOTATED SMALL YUS
+ 2C28          ; NFKC_CF; 2C58           # L&       GLAGOLITIC CAPITAL LETTER BIG YUS
+ 2C29          ; NFKC_CF; 2C59           # L&       GLAGOLITIC CAPITAL LETTER IOTATED BIG YUS
+ 2C2A          ; NFKC_CF; 2C5A           # L&       GLAGOLITIC CAPITAL LETTER FITA
+ 2C2B          ; NFKC_CF; 2C5B           # L&       GLAGOLITIC CAPITAL LETTER IZHITSA
+ 2C2C          ; NFKC_CF; 2C5C           # L&       GLAGOLITIC CAPITAL LETTER SHTAPIC
+ 2C2D          ; NFKC_CF; 2C5D           # L&       GLAGOLITIC CAPITAL LETTER TROKUTASTI A
+ 2C2E          ; NFKC_CF; 2C5E           # L&       GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
+ 2C2F          ; NFKC_CF; 2C5F           # L&       GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+ 2C60          ; NFKC_CF; 2C61           # L&       LATIN CAPITAL LETTER L WITH DOUBLE BAR
+ 2C62          ; NFKC_CF; 026B           # L&       LATIN CAPITAL LETTER L WITH MIDDLE TILDE
+ 2C63          ; NFKC_CF; 1D7D           # L&       LATIN CAPITAL LETTER P WITH STROKE
+ 2C64          ; NFKC_CF; 027D           # L&       LATIN CAPITAL LETTER R WITH TAIL
+ 2C67          ; NFKC_CF; 2C68           # L&       LATIN CAPITAL LETTER H WITH DESCENDER
+ 2C69          ; NFKC_CF; 2C6A           # L&       LATIN CAPITAL LETTER K WITH DESCENDER
+ 2C6B          ; NFKC_CF; 2C6C           # L&       LATIN CAPITAL LETTER Z WITH DESCENDER
+ 2C6D          ; NFKC_CF; 0251           # L&       LATIN CAPITAL LETTER ALPHA
+ 2C6E          ; NFKC_CF; 0271           # L&       LATIN CAPITAL LETTER M WITH HOOK
+ 2C6F          ; NFKC_CF; 0250           # L&       LATIN CAPITAL LETTER TURNED A
+ 2C70          ; NFKC_CF; 0252           # L&       LATIN CAPITAL LETTER TURNED ALPHA
+ 2C72          ; NFKC_CF; 2C73           # L&       LATIN CAPITAL LETTER W WITH HOOK
+ 2C75          ; NFKC_CF; 2C76           # L&       LATIN CAPITAL LETTER HALF H
+ 2C7C          ; NFKC_CF; 006A           # Lm       LATIN SUBSCRIPT SMALL LETTER J
+ 2C7D          ; NFKC_CF; 0076           # Lm       MODIFIER LETTER CAPITAL V
+ 2C7E          ; NFKC_CF; 023F           # L&       LATIN CAPITAL LETTER S WITH SWASH TAIL
+ 2C7F          ; NFKC_CF; 0240           # L&       LATIN CAPITAL LETTER Z WITH SWASH TAIL
+ 2C80          ; NFKC_CF; 2C81           # L&       COPTIC CAPITAL LETTER ALFA
+ 2C82          ; NFKC_CF; 2C83           # L&       COPTIC CAPITAL LETTER VIDA
+ 2C84          ; NFKC_CF; 2C85           # L&       COPTIC CAPITAL LETTER GAMMA
+ 2C86          ; NFKC_CF; 2C87           # L&       COPTIC CAPITAL LETTER DALDA
+ 2C88          ; NFKC_CF; 2C89           # L&       COPTIC CAPITAL LETTER EIE
+ 2C8A          ; NFKC_CF; 2C8B           # L&       COPTIC CAPITAL LETTER SOU
+ 2C8C          ; NFKC_CF; 2C8D           # L&       COPTIC CAPITAL LETTER ZATA
+ 2C8E          ; NFKC_CF; 2C8F           # L&       COPTIC CAPITAL LETTER HATE
+ 2C90          ; NFKC_CF; 2C91           # L&       COPTIC CAPITAL LETTER THETHE
+ 2C92          ; NFKC_CF; 2C93           # L&       COPTIC CAPITAL LETTER IAUDA
+ 2C94          ; NFKC_CF; 2C95           # L&       COPTIC CAPITAL LETTER KAPA
+ 2C96          ; NFKC_CF; 2C97           # L&       COPTIC CAPITAL LETTER LAULA
+ 2C98          ; NFKC_CF; 2C99           # L&       COPTIC CAPITAL LETTER MI
+ 2C9A          ; NFKC_CF; 2C9B           # L&       COPTIC CAPITAL LETTER NI
+ 2C9C          ; NFKC_CF; 2C9D           # L&       COPTIC CAPITAL LETTER KSI
+ 2C9E          ; NFKC_CF; 2C9F           # L&       COPTIC CAPITAL LETTER O
+ 2CA0          ; NFKC_CF; 2CA1           # L&       COPTIC CAPITAL LETTER PI
+ 2CA2          ; NFKC_CF; 2CA3           # L&       COPTIC CAPITAL LETTER RO
+ 2CA4          ; NFKC_CF; 2CA5           # L&       COPTIC CAPITAL LETTER SIMA
+ 2CA6          ; NFKC_CF; 2CA7           # L&       COPTIC CAPITAL LETTER TAU
+ 2CA8          ; NFKC_CF; 2CA9           # L&       COPTIC CAPITAL LETTER UA
+ 2CAA          ; NFKC_CF; 2CAB           # L&       COPTIC CAPITAL LETTER FI
+ 2CAC          ; NFKC_CF; 2CAD           # L&       COPTIC CAPITAL LETTER KHI
+ 2CAE          ; NFKC_CF; 2CAF           # L&       COPTIC CAPITAL LETTER PSI
+ 2CB0          ; NFKC_CF; 2CB1           # L&       COPTIC CAPITAL LETTER OOU
+ 2CB2          ; NFKC_CF; 2CB3           # L&       COPTIC CAPITAL LETTER DIALECT-P ALEF
+ 2CB4          ; NFKC_CF; 2CB5           # L&       COPTIC CAPITAL LETTER OLD COPTIC AIN
+ 2CB6          ; NFKC_CF; 2CB7           # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+ 2CB8          ; NFKC_CF; 2CB9           # L&       COPTIC CAPITAL LETTER DIALECT-P KAPA
+ 2CBA          ; NFKC_CF; 2CBB           # L&       COPTIC CAPITAL LETTER DIALECT-P NI
+ 2CBC          ; NFKC_CF; 2CBD           # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+ 2CBE          ; NFKC_CF; 2CBF           # L&       COPTIC CAPITAL LETTER OLD COPTIC OOU
+ 2CC0          ; NFKC_CF; 2CC1           # L&       COPTIC CAPITAL LETTER SAMPI
+ 2CC2          ; NFKC_CF; 2CC3           # L&       COPTIC CAPITAL LETTER CROSSED SHEI
+ 2CC4          ; NFKC_CF; 2CC5           # L&       COPTIC CAPITAL LETTER OLD COPTIC SHEI
+ 2CC6          ; NFKC_CF; 2CC7           # L&       COPTIC CAPITAL LETTER OLD COPTIC ESH
+ 2CC8          ; NFKC_CF; 2CC9           # L&       COPTIC CAPITAL LETTER AKHMIMIC KHEI
+ 2CCA          ; NFKC_CF; 2CCB           # L&       COPTIC CAPITAL LETTER DIALECT-P HORI
+ 2CCC          ; NFKC_CF; 2CCD           # L&       COPTIC CAPITAL LETTER OLD COPTIC HORI
+ 2CCE          ; NFKC_CF; 2CCF           # L&       COPTIC CAPITAL LETTER OLD COPTIC HA
+ 2CD0          ; NFKC_CF; 2CD1           # L&       COPTIC CAPITAL LETTER L-SHAPED HA
+ 2CD2          ; NFKC_CF; 2CD3           # L&       COPTIC CAPITAL LETTER OLD COPTIC HEI
+ 2CD4          ; NFKC_CF; 2CD5           # L&       COPTIC CAPITAL LETTER OLD COPTIC HAT
+ 2CD6          ; NFKC_CF; 2CD7           # L&       COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+ 2CD8          ; NFKC_CF; 2CD9           # L&       COPTIC CAPITAL LETTER OLD COPTIC DJA
+ 2CDA          ; NFKC_CF; 2CDB           # L&       COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+ 2CDC          ; NFKC_CF; 2CDD           # L&       COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+ 2CDE          ; NFKC_CF; 2CDF           # L&       COPTIC CAPITAL LETTER OLD NUBIAN NGI
+ 2CE0          ; NFKC_CF; 2CE1           # L&       COPTIC CAPITAL LETTER OLD NUBIAN NYI
+ 2CE2          ; NFKC_CF; 2CE3           # L&       COPTIC CAPITAL LETTER OLD NUBIAN WAU
+ 2CEB          ; NFKC_CF; 2CEC           # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+ 2CED          ; NFKC_CF; 2CEE           # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2          ; NFKC_CF; 2CF3           # L&       COPTIC CAPITAL LETTER BOHAIRIC KHEI
+ 2D6F          ; NFKC_CF; 2D61           # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2E9F          ; NFKC_CF; 6BCD           # So       CJK RADICAL MOTHER
+ 2EF3          ; NFKC_CF; 9F9F           # So       CJK RADICAL C-SIMPLIFIED TURTLE
+ 2F00          ; NFKC_CF; 4E00           # So       KANGXI RADICAL ONE
+ 2F01          ; NFKC_CF; 4E28           # So       KANGXI RADICAL LINE
+ 2F02          ; NFKC_CF; 4E36           # So       KANGXI RADICAL DOT
+ 2F03          ; NFKC_CF; 4E3F           # So       KANGXI RADICAL SLASH
+ 2F04          ; NFKC_CF; 4E59           # So       KANGXI RADICAL SECOND
+ 2F05          ; NFKC_CF; 4E85           # So       KANGXI RADICAL HOOK
+ 2F06          ; NFKC_CF; 4E8C           # So       KANGXI RADICAL TWO
+ 2F07          ; NFKC_CF; 4EA0           # So       KANGXI RADICAL LID
+ 2F08          ; NFKC_CF; 4EBA           # So       KANGXI RADICAL MAN
+ 2F09          ; NFKC_CF; 513F           # So       KANGXI RADICAL LEGS
+ 2F0A          ; NFKC_CF; 5165           # So       KANGXI RADICAL ENTER
+ 2F0B          ; NFKC_CF; 516B           # So       KANGXI RADICAL EIGHT
+ 2F0C          ; NFKC_CF; 5182           # So       KANGXI RADICAL DOWN BOX
+ 2F0D          ; NFKC_CF; 5196           # So       KANGXI RADICAL COVER
+ 2F0E          ; NFKC_CF; 51AB           # So       KANGXI RADICAL ICE
+ 2F0F          ; NFKC_CF; 51E0           # So       KANGXI RADICAL TABLE
+ 2F10          ; NFKC_CF; 51F5           # So       KANGXI RADICAL OPEN BOX
+ 2F11          ; NFKC_CF; 5200           # So       KANGXI RADICAL KNIFE
+ 2F12          ; NFKC_CF; 529B           # So       KANGXI RADICAL POWER
+ 2F13          ; NFKC_CF; 52F9           # So       KANGXI RADICAL WRAP
+ 2F14          ; NFKC_CF; 5315           # So       KANGXI RADICAL SPOON
+ 2F15          ; NFKC_CF; 531A           # So       KANGXI RADICAL RIGHT OPEN BOX
+ 2F16          ; NFKC_CF; 5338           # So       KANGXI RADICAL HIDING ENCLOSURE
+ 2F17          ; NFKC_CF; 5341           # So       KANGXI RADICAL TEN
+ 2F18          ; NFKC_CF; 535C           # So       KANGXI RADICAL DIVINATION
+ 2F19          ; NFKC_CF; 5369           # So       KANGXI RADICAL SEAL
+ 2F1A          ; NFKC_CF; 5382           # So       KANGXI RADICAL CLIFF
+ 2F1B          ; NFKC_CF; 53B6           # So       KANGXI RADICAL PRIVATE
+ 2F1C          ; NFKC_CF; 53C8           # So       KANGXI RADICAL AGAIN
+ 2F1D          ; NFKC_CF; 53E3           # So       KANGXI RADICAL MOUTH
+ 2F1E          ; NFKC_CF; 56D7           # So       KANGXI RADICAL ENCLOSURE
+ 2F1F          ; NFKC_CF; 571F           # So       KANGXI RADICAL EARTH
+ 2F20          ; NFKC_CF; 58EB           # So       KANGXI RADICAL SCHOLAR
+ 2F21          ; NFKC_CF; 5902           # So       KANGXI RADICAL GO
+ 2F22          ; NFKC_CF; 590A           # So       KANGXI RADICAL GO SLOWLY
+ 2F23          ; NFKC_CF; 5915           # So       KANGXI RADICAL EVENING
+ 2F24          ; NFKC_CF; 5927           # So       KANGXI RADICAL BIG
+ 2F25          ; NFKC_CF; 5973           # So       KANGXI RADICAL WOMAN
+ 2F26          ; NFKC_CF; 5B50           # So       KANGXI RADICAL CHILD
+ 2F27          ; NFKC_CF; 5B80           # So       KANGXI RADICAL ROOF
+ 2F28          ; NFKC_CF; 5BF8           # So       KANGXI RADICAL INCH
+ 2F29          ; NFKC_CF; 5C0F           # So       KANGXI RADICAL SMALL
+ 2F2A          ; NFKC_CF; 5C22           # So       KANGXI RADICAL LAME
+ 2F2B          ; NFKC_CF; 5C38           # So       KANGXI RADICAL CORPSE
+ 2F2C          ; NFKC_CF; 5C6E           # So       KANGXI RADICAL SPROUT
+ 2F2D          ; NFKC_CF; 5C71           # So       KANGXI RADICAL MOUNTAIN
+ 2F2E          ; NFKC_CF; 5DDB           # So       KANGXI RADICAL RIVER
+ 2F2F          ; NFKC_CF; 5DE5           # So       KANGXI RADICAL WORK
+ 2F30          ; NFKC_CF; 5DF1           # So       KANGXI RADICAL ONESELF
+ 2F31          ; NFKC_CF; 5DFE           # So       KANGXI RADICAL TURBAN
+ 2F32          ; NFKC_CF; 5E72           # So       KANGXI RADICAL DRY
+ 2F33          ; NFKC_CF; 5E7A           # So       KANGXI RADICAL SHORT THREAD
+ 2F34          ; NFKC_CF; 5E7F           # So       KANGXI RADICAL DOTTED CLIFF
+ 2F35          ; NFKC_CF; 5EF4           # So       KANGXI RADICAL LONG STRIDE
+ 2F36          ; NFKC_CF; 5EFE           # So       KANGXI RADICAL TWO HANDS
+ 2F37          ; NFKC_CF; 5F0B           # So       KANGXI RADICAL SHOOT
+ 2F38          ; NFKC_CF; 5F13           # So       KANGXI RADICAL BOW
+ 2F39          ; NFKC_CF; 5F50           # So       KANGXI RADICAL SNOUT
+ 2F3A          ; NFKC_CF; 5F61           # So       KANGXI RADICAL BRISTLE
+ 2F3B          ; NFKC_CF; 5F73           # So       KANGXI RADICAL STEP
+ 2F3C          ; NFKC_CF; 5FC3           # So       KANGXI RADICAL HEART
+ 2F3D          ; NFKC_CF; 6208           # So       KANGXI RADICAL HALBERD
+ 2F3E          ; NFKC_CF; 6236           # So       KANGXI RADICAL DOOR
+ 2F3F          ; NFKC_CF; 624B           # So       KANGXI RADICAL HAND
+ 2F40          ; NFKC_CF; 652F           # So       KANGXI RADICAL BRANCH
+ 2F41          ; NFKC_CF; 6534           # So       KANGXI RADICAL RAP
+ 2F42          ; NFKC_CF; 6587           # So       KANGXI RADICAL SCRIPT
+ 2F43          ; NFKC_CF; 6597           # So       KANGXI RADICAL DIPPER
+ 2F44          ; NFKC_CF; 65A4           # So       KANGXI RADICAL AXE
+ 2F45          ; NFKC_CF; 65B9           # So       KANGXI RADICAL SQUARE
+ 2F46          ; NFKC_CF; 65E0           # So       KANGXI RADICAL NOT
+ 2F47          ; NFKC_CF; 65E5           # So       KANGXI RADICAL SUN
+ 2F48          ; NFKC_CF; 66F0           # So       KANGXI RADICAL SAY
+ 2F49          ; NFKC_CF; 6708           # So       KANGXI RADICAL MOON
+ 2F4A          ; NFKC_CF; 6728           # So       KANGXI RADICAL TREE
+ 2F4B          ; NFKC_CF; 6B20           # So       KANGXI RADICAL LACK
+ 2F4C          ; NFKC_CF; 6B62           # So       KANGXI RADICAL STOP
+ 2F4D          ; NFKC_CF; 6B79           # So       KANGXI RADICAL DEATH
+ 2F4E          ; NFKC_CF; 6BB3           # So       KANGXI RADICAL WEAPON
+ 2F4F          ; NFKC_CF; 6BCB           # So       KANGXI RADICAL DO NOT
+ 2F50          ; NFKC_CF; 6BD4           # So       KANGXI RADICAL COMPARE
+ 2F51          ; NFKC_CF; 6BDB           # So       KANGXI RADICAL FUR
+ 2F52          ; NFKC_CF; 6C0F           # So       KANGXI RADICAL CLAN
+ 2F53          ; NFKC_CF; 6C14           # So       KANGXI RADICAL STEAM
+ 2F54          ; NFKC_CF; 6C34           # So       KANGXI RADICAL WATER
+ 2F55          ; NFKC_CF; 706B           # So       KANGXI RADICAL FIRE
+ 2F56          ; NFKC_CF; 722A           # So       KANGXI RADICAL CLAW
+ 2F57          ; NFKC_CF; 7236           # So       KANGXI RADICAL FATHER
+ 2F58          ; NFKC_CF; 723B           # So       KANGXI RADICAL DOUBLE X
+ 2F59          ; NFKC_CF; 723F           # So       KANGXI RADICAL HALF TREE TRUNK
+ 2F5A          ; NFKC_CF; 7247           # So       KANGXI RADICAL SLICE
+ 2F5B          ; NFKC_CF; 7259           # So       KANGXI RADICAL FANG
+ 2F5C          ; NFKC_CF; 725B           # So       KANGXI RADICAL COW
+ 2F5D          ; NFKC_CF; 72AC           # So       KANGXI RADICAL DOG
+ 2F5E          ; NFKC_CF; 7384           # So       KANGXI RADICAL PROFOUND
+ 2F5F          ; NFKC_CF; 7389           # So       KANGXI RADICAL JADE
+ 2F60          ; NFKC_CF; 74DC           # So       KANGXI RADICAL MELON
+ 2F61          ; NFKC_CF; 74E6           # So       KANGXI RADICAL TILE
+ 2F62          ; NFKC_CF; 7518           # So       KANGXI RADICAL SWEET
+ 2F63          ; NFKC_CF; 751F           # So       KANGXI RADICAL LIFE
+ 2F64          ; NFKC_CF; 7528           # So       KANGXI RADICAL USE
+ 2F65          ; NFKC_CF; 7530           # So       KANGXI RADICAL FIELD
+ 2F66          ; NFKC_CF; 758B           # So       KANGXI RADICAL BOLT OF CLOTH
+ 2F67          ; NFKC_CF; 7592           # So       KANGXI RADICAL SICKNESS
+ 2F68          ; NFKC_CF; 7676           # So       KANGXI RADICAL DOTTED TENT
+ 2F69          ; NFKC_CF; 767D           # So       KANGXI RADICAL WHITE
+ 2F6A          ; NFKC_CF; 76AE           # So       KANGXI RADICAL SKIN
+ 2F6B          ; NFKC_CF; 76BF           # So       KANGXI RADICAL DISH
+ 2F6C          ; NFKC_CF; 76EE           # So       KANGXI RADICAL EYE
+ 2F6D          ; NFKC_CF; 77DB           # So       KANGXI RADICAL SPEAR
+ 2F6E          ; NFKC_CF; 77E2           # So       KANGXI RADICAL ARROW
+ 2F6F          ; NFKC_CF; 77F3           # So       KANGXI RADICAL STONE
+ 2F70          ; NFKC_CF; 793A           # So       KANGXI RADICAL SPIRIT
+ 2F71          ; NFKC_CF; 79B8           # So       KANGXI RADICAL TRACK
+ 2F72          ; NFKC_CF; 79BE           # So       KANGXI RADICAL GRAIN
+ 2F73          ; NFKC_CF; 7A74           # So       KANGXI RADICAL CAVE
+ 2F74          ; NFKC_CF; 7ACB           # So       KANGXI RADICAL STAND
+ 2F75          ; NFKC_CF; 7AF9           # So       KANGXI RADICAL BAMBOO
+ 2F76          ; NFKC_CF; 7C73           # So       KANGXI RADICAL RICE
+ 2F77          ; NFKC_CF; 7CF8           # So       KANGXI RADICAL SILK
+ 2F78          ; NFKC_CF; 7F36           # So       KANGXI RADICAL JAR
+ 2F79          ; NFKC_CF; 7F51           # So       KANGXI RADICAL NET
+ 2F7A          ; NFKC_CF; 7F8A           # So       KANGXI RADICAL SHEEP
+ 2F7B          ; NFKC_CF; 7FBD           # So       KANGXI RADICAL FEATHER
+ 2F7C          ; NFKC_CF; 8001           # So       KANGXI RADICAL OLD
+ 2F7D          ; NFKC_CF; 800C           # So       KANGXI RADICAL AND
+ 2F7E          ; NFKC_CF; 8012           # So       KANGXI RADICAL PLOW
+ 2F7F          ; NFKC_CF; 8033           # So       KANGXI RADICAL EAR
+ 2F80          ; NFKC_CF; 807F           # So       KANGXI RADICAL BRUSH
+ 2F81          ; NFKC_CF; 8089           # So       KANGXI RADICAL MEAT
+ 2F82          ; NFKC_CF; 81E3           # So       KANGXI RADICAL MINISTER
+ 2F83          ; NFKC_CF; 81EA           # So       KANGXI RADICAL SELF
+ 2F84          ; NFKC_CF; 81F3           # So       KANGXI RADICAL ARRIVE
+ 2F85          ; NFKC_CF; 81FC           # So       KANGXI RADICAL MORTAR
+ 2F86          ; NFKC_CF; 820C           # So       KANGXI RADICAL TONGUE
+ 2F87          ; NFKC_CF; 821B           # So       KANGXI RADICAL OPPOSE
+ 2F88          ; NFKC_CF; 821F           # So       KANGXI RADICAL BOAT
+ 2F89          ; NFKC_CF; 826E           # So       KANGXI RADICAL STOPPING
+ 2F8A          ; NFKC_CF; 8272           # So       KANGXI RADICAL COLOR
+ 2F8B          ; NFKC_CF; 8278           # So       KANGXI RADICAL GRASS
+ 2F8C          ; NFKC_CF; 864D           # So       KANGXI RADICAL TIGER
+ 2F8D          ; NFKC_CF; 866B           # So       KANGXI RADICAL INSECT
+ 2F8E          ; NFKC_CF; 8840           # So       KANGXI RADICAL BLOOD
+ 2F8F          ; NFKC_CF; 884C           # So       KANGXI RADICAL WALK ENCLOSURE
+ 2F90          ; NFKC_CF; 8863           # So       KANGXI RADICAL CLOTHES
+ 2F91          ; NFKC_CF; 897E           # So       KANGXI RADICAL WEST
+ 2F92          ; NFKC_CF; 898B           # So       KANGXI RADICAL SEE
+ 2F93          ; NFKC_CF; 89D2           # So       KANGXI RADICAL HORN
+ 2F94          ; NFKC_CF; 8A00           # So       KANGXI RADICAL SPEECH
+ 2F95          ; NFKC_CF; 8C37           # So       KANGXI RADICAL VALLEY
+ 2F96          ; NFKC_CF; 8C46           # So       KANGXI RADICAL BEAN
+ 2F97          ; NFKC_CF; 8C55           # So       KANGXI RADICAL PIG
+ 2F98          ; NFKC_CF; 8C78           # So       KANGXI RADICAL BADGER
+ 2F99          ; NFKC_CF; 8C9D           # So       KANGXI RADICAL SHELL
+ 2F9A          ; NFKC_CF; 8D64           # So       KANGXI RADICAL RED
+ 2F9B          ; NFKC_CF; 8D70           # So       KANGXI RADICAL RUN
+ 2F9C          ; NFKC_CF; 8DB3           # So       KANGXI RADICAL FOOT
+ 2F9D          ; NFKC_CF; 8EAB           # So       KANGXI RADICAL BODY
+ 2F9E          ; NFKC_CF; 8ECA           # So       KANGXI RADICAL CART
+ 2F9F          ; NFKC_CF; 8F9B           # So       KANGXI RADICAL BITTER
+ 2FA0          ; NFKC_CF; 8FB0           # So       KANGXI RADICAL MORNING
+ 2FA1          ; NFKC_CF; 8FB5           # So       KANGXI RADICAL WALK
+ 2FA2          ; NFKC_CF; 9091           # So       KANGXI RADICAL CITY
+ 2FA3          ; NFKC_CF; 9149           # So       KANGXI RADICAL WINE
+ 2FA4          ; NFKC_CF; 91C6           # So       KANGXI RADICAL DISTINGUISH
+ 2FA5          ; NFKC_CF; 91CC           # So       KANGXI RADICAL VILLAGE
+ 2FA6          ; NFKC_CF; 91D1           # So       KANGXI RADICAL GOLD
+ 2FA7          ; NFKC_CF; 9577           # So       KANGXI RADICAL LONG
+ 2FA8          ; NFKC_CF; 9580           # So       KANGXI RADICAL GATE
+ 2FA9          ; NFKC_CF; 961C           # So       KANGXI RADICAL MOUND
+ 2FAA          ; NFKC_CF; 96B6           # So       KANGXI RADICAL SLAVE
+ 2FAB          ; NFKC_CF; 96B9           # So       KANGXI RADICAL SHORT TAILED BIRD
+ 2FAC          ; NFKC_CF; 96E8           # So       KANGXI RADICAL RAIN
+ 2FAD          ; NFKC_CF; 9751           # So       KANGXI RADICAL BLUE
+ 2FAE          ; NFKC_CF; 975E           # So       KANGXI RADICAL WRONG
+ 2FAF          ; NFKC_CF; 9762           # So       KANGXI RADICAL FACE
+ 2FB0          ; NFKC_CF; 9769           # So       KANGXI RADICAL LEATHER
+ 2FB1          ; NFKC_CF; 97CB           # So       KANGXI RADICAL TANNED LEATHER
+ 2FB2          ; NFKC_CF; 97ED           # So       KANGXI RADICAL LEEK
+ 2FB3          ; NFKC_CF; 97F3           # So       KANGXI RADICAL SOUND
+ 2FB4          ; NFKC_CF; 9801           # So       KANGXI RADICAL LEAF
+ 2FB5          ; NFKC_CF; 98A8           # So       KANGXI RADICAL WIND
+ 2FB6          ; NFKC_CF; 98DB           # So       KANGXI RADICAL FLY
+ 2FB7          ; NFKC_CF; 98DF           # So       KANGXI RADICAL EAT
+ 2FB8          ; NFKC_CF; 9996           # So       KANGXI RADICAL HEAD
+ 2FB9          ; NFKC_CF; 9999           # So       KANGXI RADICAL FRAGRANT
+ 2FBA          ; NFKC_CF; 99AC           # So       KANGXI RADICAL HORSE
+ 2FBB          ; NFKC_CF; 9AA8           # So       KANGXI RADICAL BONE
+ 2FBC          ; NFKC_CF; 9AD8           # So       KANGXI RADICAL TALL
+ 2FBD          ; NFKC_CF; 9ADF           # So       KANGXI RADICAL HAIR
+ 2FBE          ; NFKC_CF; 9B25           # So       KANGXI RADICAL FIGHT
+ 2FBF          ; NFKC_CF; 9B2F           # So       KANGXI RADICAL SACRIFICIAL WINE
+ 2FC0          ; NFKC_CF; 9B32           # So       KANGXI RADICAL CAULDRON
+ 2FC1          ; NFKC_CF; 9B3C           # So       KANGXI RADICAL GHOST
+ 2FC2          ; NFKC_CF; 9B5A           # So       KANGXI RADICAL FISH
+ 2FC3          ; NFKC_CF; 9CE5           # So       KANGXI RADICAL BIRD
+ 2FC4          ; NFKC_CF; 9E75           # So       KANGXI RADICAL SALT
+ 2FC5          ; NFKC_CF; 9E7F           # So       KANGXI RADICAL DEER
+ 2FC6          ; NFKC_CF; 9EA5           # So       KANGXI RADICAL WHEAT
+ 2FC7          ; NFKC_CF; 9EBB           # So       KANGXI RADICAL HEMP
+ 2FC8          ; NFKC_CF; 9EC3           # So       KANGXI RADICAL YELLOW
+ 2FC9          ; NFKC_CF; 9ECD           # So       KANGXI RADICAL MILLET
+ 2FCA          ; NFKC_CF; 9ED1           # So       KANGXI RADICAL BLACK
+ 2FCB          ; NFKC_CF; 9EF9           # So       KANGXI RADICAL EMBROIDERY
+ 2FCC          ; NFKC_CF; 9EFD           # So       KANGXI RADICAL FROG
+ 2FCD          ; NFKC_CF; 9F0E           # So       KANGXI RADICAL TRIPOD
+ 2FCE          ; NFKC_CF; 9F13           # So       KANGXI RADICAL DRUM
+ 2FCF          ; NFKC_CF; 9F20           # So       KANGXI RADICAL RAT
+ 2FD0          ; NFKC_CF; 9F3B           # So       KANGXI RADICAL NOSE
+ 2FD1          ; NFKC_CF; 9F4A           # So       KANGXI RADICAL EVEN
+ 2FD2          ; NFKC_CF; 9F52           # So       KANGXI RADICAL TOOTH
+ 2FD3          ; NFKC_CF; 9F8D           # So       KANGXI RADICAL DRAGON
+ 2FD4          ; NFKC_CF; 9F9C           # So       KANGXI RADICAL TURTLE
+ 2FD5          ; NFKC_CF; 9FA0           # So       KANGXI RADICAL FLUTE
+ 3000          ; NFKC_CF; 0020           # Zs       IDEOGRAPHIC SPACE
+ 3036          ; NFKC_CF; 3012           # So       CIRCLED POSTAL MARK
+ 3038          ; NFKC_CF; 5341           # Nl       HANGZHOU NUMERAL TEN
+ 3039          ; NFKC_CF; 5344           # Nl       HANGZHOU NUMERAL TWENTY
+ 303A          ; NFKC_CF; 5345           # Nl       HANGZHOU NUMERAL THIRTY
+ 309B          ; NFKC_CF; 0020 3099      # Sk       KATAKANA-HIRAGANA VOICED SOUND MARK
+ 309C          ; NFKC_CF; 0020 309A      # Sk       KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309F          ; NFKC_CF; 3088 308A      # Lo       HIRAGANA DIGRAPH YORI
+ 30FF          ; NFKC_CF; 30B3 30C8      # Lo       KATAKANA DIGRAPH KOTO
+ 3131          ; NFKC_CF; 1100           # Lo       HANGUL LETTER KIYEOK
+ 3132          ; NFKC_CF; 1101           # Lo       HANGUL LETTER SSANGKIYEOK
+ 3133          ; NFKC_CF; 11AA           # Lo       HANGUL LETTER KIYEOK-SIOS
+ 3134          ; NFKC_CF; 1102           # Lo       HANGUL LETTER NIEUN
+ 3135          ; NFKC_CF; 11AC           # Lo       HANGUL LETTER NIEUN-CIEUC
+ 3136          ; NFKC_CF; 11AD           # Lo       HANGUL LETTER NIEUN-HIEUH
+ 3137          ; NFKC_CF; 1103           # Lo       HANGUL LETTER TIKEUT
+ 3138          ; NFKC_CF; 1104           # Lo       HANGUL LETTER SSANGTIKEUT
+ 3139          ; NFKC_CF; 1105           # Lo       HANGUL LETTER RIEUL
+ 313A          ; NFKC_CF; 11B0           # Lo       HANGUL LETTER RIEUL-KIYEOK
+ 313B          ; NFKC_CF; 11B1           # Lo       HANGUL LETTER RIEUL-MIEUM
+ 313C          ; NFKC_CF; 11B2           # Lo       HANGUL LETTER RIEUL-PIEUP
+ 313D          ; NFKC_CF; 11B3           # Lo       HANGUL LETTER RIEUL-SIOS
+ 313E          ; NFKC_CF; 11B4           # Lo       HANGUL LETTER RIEUL-THIEUTH
+ 313F          ; NFKC_CF; 11B5           # Lo       HANGUL LETTER RIEUL-PHIEUPH
+ 3140          ; NFKC_CF; 111A           # Lo       HANGUL LETTER RIEUL-HIEUH
+ 3141          ; NFKC_CF; 1106           # Lo       HANGUL LETTER MIEUM
+ 3142          ; NFKC_CF; 1107           # Lo       HANGUL LETTER PIEUP
+ 3143          ; NFKC_CF; 1108           # Lo       HANGUL LETTER SSANGPIEUP
+ 3144          ; NFKC_CF; 1121           # Lo       HANGUL LETTER PIEUP-SIOS
+ 3145          ; NFKC_CF; 1109           # Lo       HANGUL LETTER SIOS
+ 3146          ; NFKC_CF; 110A           # Lo       HANGUL LETTER SSANGSIOS
+ 3147          ; NFKC_CF; 110B           # Lo       HANGUL LETTER IEUNG
+ 3148          ; NFKC_CF; 110C           # Lo       HANGUL LETTER CIEUC
+ 3149          ; NFKC_CF; 110D           # Lo       HANGUL LETTER SSANGCIEUC
+ 314A          ; NFKC_CF; 110E           # Lo       HANGUL LETTER CHIEUCH
+ 314B          ; NFKC_CF; 110F           # Lo       HANGUL LETTER KHIEUKH
+ 314C          ; NFKC_CF; 1110           # Lo       HANGUL LETTER THIEUTH
+ 314D          ; NFKC_CF; 1111           # Lo       HANGUL LETTER PHIEUPH
+ 314E          ; NFKC_CF; 1112           # Lo       HANGUL LETTER HIEUH
+ 314F          ; NFKC_CF; 1161           # Lo       HANGUL LETTER A
+ 3150          ; NFKC_CF; 1162           # Lo       HANGUL LETTER AE
+ 3151          ; NFKC_CF; 1163           # Lo       HANGUL LETTER YA
+ 3152          ; NFKC_CF; 1164           # Lo       HANGUL LETTER YAE
+ 3153          ; NFKC_CF; 1165           # Lo       HANGUL LETTER EO
+ 3154          ; NFKC_CF; 1166           # Lo       HANGUL LETTER E
+ 3155          ; NFKC_CF; 1167           # Lo       HANGUL LETTER YEO
+ 3156          ; NFKC_CF; 1168           # Lo       HANGUL LETTER YE
+ 3157          ; NFKC_CF; 1169           # Lo       HANGUL LETTER O
+ 3158          ; NFKC_CF; 116A           # Lo       HANGUL LETTER WA
+ 3159          ; NFKC_CF; 116B           # Lo       HANGUL LETTER WAE
+ 315A          ; NFKC_CF; 116C           # Lo       HANGUL LETTER OE
+ 315B          ; NFKC_CF; 116D           # Lo       HANGUL LETTER YO
+ 315C          ; NFKC_CF; 116E           # Lo       HANGUL LETTER U
+ 315D          ; NFKC_CF; 116F           # Lo       HANGUL LETTER WEO
+ 315E          ; NFKC_CF; 1170           # Lo       HANGUL LETTER WE
+ 315F          ; NFKC_CF; 1171           # Lo       HANGUL LETTER WI
+ 3160          ; NFKC_CF; 1172           # Lo       HANGUL LETTER YU
+ 3161          ; NFKC_CF; 1173           # Lo       HANGUL LETTER EU
+ 3162          ; NFKC_CF; 1174           # Lo       HANGUL LETTER YI
+ 3163          ; NFKC_CF; 1175           # Lo       HANGUL LETTER I
+ 3164          ; NFKC_CF;                # Lo       HANGUL FILLER
+ 3165          ; NFKC_CF; 1114           # Lo       HANGUL LETTER SSANGNIEUN
+ 3166          ; NFKC_CF; 1115           # Lo       HANGUL LETTER NIEUN-TIKEUT
+ 3167          ; NFKC_CF; 11C7           # Lo       HANGUL LETTER NIEUN-SIOS
+ 3168          ; NFKC_CF; 11C8           # Lo       HANGUL LETTER NIEUN-PANSIOS
+ 3169          ; NFKC_CF; 11CC           # Lo       HANGUL LETTER RIEUL-KIYEOK-SIOS
+ 316A          ; NFKC_CF; 11CE           # Lo       HANGUL LETTER RIEUL-TIKEUT
+ 316B          ; NFKC_CF; 11D3           # Lo       HANGUL LETTER RIEUL-PIEUP-SIOS
+ 316C          ; NFKC_CF; 11D7           # Lo       HANGUL LETTER RIEUL-PANSIOS
+ 316D          ; NFKC_CF; 11D9           # Lo       HANGUL LETTER RIEUL-YEORINHIEUH
+ 316E          ; NFKC_CF; 111C           # Lo       HANGUL LETTER MIEUM-PIEUP
+ 316F          ; NFKC_CF; 11DD           # Lo       HANGUL LETTER MIEUM-SIOS
+ 3170          ; NFKC_CF; 11DF           # Lo       HANGUL LETTER MIEUM-PANSIOS
+ 3171          ; NFKC_CF; 111D           # Lo       HANGUL LETTER KAPYEOUNMIEUM
+ 3172          ; NFKC_CF; 111E           # Lo       HANGUL LETTER PIEUP-KIYEOK
+ 3173          ; NFKC_CF; 1120           # Lo       HANGUL LETTER PIEUP-TIKEUT
+ 3174          ; NFKC_CF; 1122           # Lo       HANGUL LETTER PIEUP-SIOS-KIYEOK
+ 3175          ; NFKC_CF; 1123           # Lo       HANGUL LETTER PIEUP-SIOS-TIKEUT
+ 3176          ; NFKC_CF; 1127           # Lo       HANGUL LETTER PIEUP-CIEUC
+ 3177          ; NFKC_CF; 1129           # Lo       HANGUL LETTER PIEUP-THIEUTH
+ 3178          ; NFKC_CF; 112B           # Lo       HANGUL LETTER KAPYEOUNPIEUP
+ 3179          ; NFKC_CF; 112C           # Lo       HANGUL LETTER KAPYEOUNSSANGPIEUP
+ 317A          ; NFKC_CF; 112D           # Lo       HANGUL LETTER SIOS-KIYEOK
+ 317B          ; NFKC_CF; 112E           # Lo       HANGUL LETTER SIOS-NIEUN
+ 317C          ; NFKC_CF; 112F           # Lo       HANGUL LETTER SIOS-TIKEUT
+ 317D          ; NFKC_CF; 1132           # Lo       HANGUL LETTER SIOS-PIEUP
+ 317E          ; NFKC_CF; 1136           # Lo       HANGUL LETTER SIOS-CIEUC
+ 317F          ; NFKC_CF; 1140           # Lo       HANGUL LETTER PANSIOS
+ 3180          ; NFKC_CF; 1147           # Lo       HANGUL LETTER SSANGIEUNG
+ 3181          ; NFKC_CF; 114C           # Lo       HANGUL LETTER YESIEUNG
+ 3182          ; NFKC_CF; 11F1           # Lo       HANGUL LETTER YESIEUNG-SIOS
+ 3183          ; NFKC_CF; 11F2           # Lo       HANGUL LETTER YESIEUNG-PANSIOS
+ 3184          ; NFKC_CF; 1157           # Lo       HANGUL LETTER KAPYEOUNPHIEUPH
+ 3185          ; NFKC_CF; 1158           # Lo       HANGUL LETTER SSANGHIEUH
+ 3186          ; NFKC_CF; 1159           # Lo       HANGUL LETTER YEORINHIEUH
+ 3187          ; NFKC_CF; 1184           # Lo       HANGUL LETTER YO-YA
+ 3188          ; NFKC_CF; 1185           # Lo       HANGUL LETTER YO-YAE
+ 3189          ; NFKC_CF; 1188           # Lo       HANGUL LETTER YO-I
+ 318A          ; NFKC_CF; 1191           # Lo       HANGUL LETTER YU-YEO
+ 318B          ; NFKC_CF; 1192           # Lo       HANGUL LETTER YU-YE
+ 318C          ; NFKC_CF; 1194           # Lo       HANGUL LETTER YU-I
+ 318D          ; NFKC_CF; 119E           # Lo       HANGUL LETTER ARAEA
+ 318E          ; NFKC_CF; 11A1           # Lo       HANGUL LETTER ARAEAE
+ 3192          ; NFKC_CF; 4E00           # No       IDEOGRAPHIC ANNOTATION ONE MARK
+ 3193          ; NFKC_CF; 4E8C           # No       IDEOGRAPHIC ANNOTATION TWO MARK
+ 3194          ; NFKC_CF; 4E09           # No       IDEOGRAPHIC ANNOTATION THREE MARK
+ 3195          ; NFKC_CF; 56DB           # No       IDEOGRAPHIC ANNOTATION FOUR MARK
+ 3196          ; NFKC_CF; 4E0A           # So       IDEOGRAPHIC ANNOTATION TOP MARK
+ 3197          ; NFKC_CF; 4E2D           # So       IDEOGRAPHIC ANNOTATION MIDDLE MARK
+ 3198          ; NFKC_CF; 4E0B           # So       IDEOGRAPHIC ANNOTATION BOTTOM MARK
+ 3199          ; NFKC_CF; 7532           # So       IDEOGRAPHIC ANNOTATION FIRST MARK
+ 319A          ; NFKC_CF; 4E59           # So       IDEOGRAPHIC ANNOTATION SECOND MARK
+ 319B          ; NFKC_CF; 4E19           # So       IDEOGRAPHIC ANNOTATION THIRD MARK
+ 319C          ; NFKC_CF; 4E01           # So       IDEOGRAPHIC ANNOTATION FOURTH MARK
+ 319D          ; NFKC_CF; 5929           # So       IDEOGRAPHIC ANNOTATION HEAVEN MARK
+ 319E          ; NFKC_CF; 5730           # So       IDEOGRAPHIC ANNOTATION EARTH MARK
+ 319F          ; NFKC_CF; 4EBA           # So       IDEOGRAPHIC ANNOTATION MAN MARK
+ 3200          ; NFKC_CF; 0028 1100 0029 # So       PARENTHESIZED HANGUL KIYEOK
+ 3201          ; NFKC_CF; 0028 1102 0029 # So       PARENTHESIZED HANGUL NIEUN
+ 3202          ; NFKC_CF; 0028 1103 0029 # So       PARENTHESIZED HANGUL TIKEUT
+ 3203          ; NFKC_CF; 0028 1105 0029 # So       PARENTHESIZED HANGUL RIEUL
+ 3204          ; NFKC_CF; 0028 1106 0029 # So       PARENTHESIZED HANGUL MIEUM
+ 3205          ; NFKC_CF; 0028 1107 0029 # So       PARENTHESIZED HANGUL PIEUP
+ 3206          ; NFKC_CF; 0028 1109 0029 # So       PARENTHESIZED HANGUL SIOS
+ 3207          ; NFKC_CF; 0028 110B 0029 # So       PARENTHESIZED HANGUL IEUNG
+ 3208          ; NFKC_CF; 0028 110C 0029 # So       PARENTHESIZED HANGUL CIEUC
+ 3209          ; NFKC_CF; 0028 110E 0029 # So       PARENTHESIZED HANGUL CHIEUCH
+ 320A          ; NFKC_CF; 0028 110F 0029 # So       PARENTHESIZED HANGUL KHIEUKH
+ 320B          ; NFKC_CF; 0028 1110 0029 # So       PARENTHESIZED HANGUL THIEUTH
+ 320C          ; NFKC_CF; 0028 1111 0029 # So       PARENTHESIZED HANGUL PHIEUPH
+ 320D          ; NFKC_CF; 0028 1112 0029 # So       PARENTHESIZED HANGUL HIEUH
+ 320E          ; NFKC_CF; 0028 AC00 0029 # So       PARENTHESIZED HANGUL KIYEOK A
+ 320F          ; NFKC_CF; 0028 B098 0029 # So       PARENTHESIZED HANGUL NIEUN A
+ 3210          ; NFKC_CF; 0028 B2E4 0029 # So       PARENTHESIZED HANGUL TIKEUT A
+ 3211          ; NFKC_CF; 0028 B77C 0029 # So       PARENTHESIZED HANGUL RIEUL A
+ 3212          ; NFKC_CF; 0028 B9C8 0029 # So       PARENTHESIZED HANGUL MIEUM A
+ 3213          ; NFKC_CF; 0028 BC14 0029 # So       PARENTHESIZED HANGUL PIEUP A
+ 3214          ; NFKC_CF; 0028 C0AC 0029 # So       PARENTHESIZED HANGUL SIOS A
+ 3215          ; NFKC_CF; 0028 C544 0029 # So       PARENTHESIZED HANGUL IEUNG A
+ 3216          ; NFKC_CF; 0028 C790 0029 # So       PARENTHESIZED HANGUL CIEUC A
+ 3217          ; NFKC_CF; 0028 CC28 0029 # So       PARENTHESIZED HANGUL CHIEUCH A
+ 3218          ; NFKC_CF; 0028 CE74 0029 # So       PARENTHESIZED HANGUL KHIEUKH A
+ 3219          ; NFKC_CF; 0028 D0C0 0029 # So       PARENTHESIZED HANGUL THIEUTH A
+ 321A          ; NFKC_CF; 0028 D30C 0029 # So       PARENTHESIZED HANGUL PHIEUPH A
+ 321B          ; NFKC_CF; 0028 D558 0029 # So       PARENTHESIZED HANGUL HIEUH A
+ 321C          ; NFKC_CF; 0028 C8FC 0029 # So       PARENTHESIZED HANGUL CIEUC U
+ 321D          ; NFKC_CF; 0028 C624 C804 0029 #So   PARENTHESIZED KOREAN CHARACTER OJEON
+ 321E          ; NFKC_CF; 0028 C624 D6C4 0029 #So   PARENTHESIZED KOREAN CHARACTER O HU
+ 3220          ; NFKC_CF; 0028 4E00 0029 # No       PARENTHESIZED IDEOGRAPH ONE
+ 3221          ; NFKC_CF; 0028 4E8C 0029 # No       PARENTHESIZED IDEOGRAPH TWO
+ 3222          ; NFKC_CF; 0028 4E09 0029 # No       PARENTHESIZED IDEOGRAPH THREE
+ 3223          ; NFKC_CF; 0028 56DB 0029 # No       PARENTHESIZED IDEOGRAPH FOUR
+ 3224          ; NFKC_CF; 0028 4E94 0029 # No       PARENTHESIZED IDEOGRAPH FIVE
+ 3225          ; NFKC_CF; 0028 516D 0029 # No       PARENTHESIZED IDEOGRAPH SIX
+ 3226          ; NFKC_CF; 0028 4E03 0029 # No       PARENTHESIZED IDEOGRAPH SEVEN
+ 3227          ; NFKC_CF; 0028 516B 0029 # No       PARENTHESIZED IDEOGRAPH EIGHT
+ 3228          ; NFKC_CF; 0028 4E5D 0029 # No       PARENTHESIZED IDEOGRAPH NINE
+ 3229          ; NFKC_CF; 0028 5341 0029 # No       PARENTHESIZED IDEOGRAPH TEN
+ 322A          ; NFKC_CF; 0028 6708 0029 # So       PARENTHESIZED IDEOGRAPH MOON
+ 322B          ; NFKC_CF; 0028 706B 0029 # So       PARENTHESIZED IDEOGRAPH FIRE
+ 322C          ; NFKC_CF; 0028 6C34 0029 # So       PARENTHESIZED IDEOGRAPH WATER
+ 322D          ; NFKC_CF; 0028 6728 0029 # So       PARENTHESIZED IDEOGRAPH WOOD
+ 322E          ; NFKC_CF; 0028 91D1 0029 # So       PARENTHESIZED IDEOGRAPH METAL
+ 322F          ; NFKC_CF; 0028 571F 0029 # So       PARENTHESIZED IDEOGRAPH EARTH
+ 3230          ; NFKC_CF; 0028 65E5 0029 # So       PARENTHESIZED IDEOGRAPH SUN
+ 3231          ; NFKC_CF; 0028 682A 0029 # So       PARENTHESIZED IDEOGRAPH STOCK
+ 3232          ; NFKC_CF; 0028 6709 0029 # So       PARENTHESIZED IDEOGRAPH HAVE
+ 3233          ; NFKC_CF; 0028 793E 0029 # So       PARENTHESIZED IDEOGRAPH SOCIETY
+ 3234          ; NFKC_CF; 0028 540D 0029 # So       PARENTHESIZED IDEOGRAPH NAME
+ 3235          ; NFKC_CF; 0028 7279 0029 # So       PARENTHESIZED IDEOGRAPH SPECIAL
+ 3236          ; NFKC_CF; 0028 8CA1 0029 # So       PARENTHESIZED IDEOGRAPH FINANCIAL
+ 3237          ; NFKC_CF; 0028 795D 0029 # So       PARENTHESIZED IDEOGRAPH CONGRATULATION
+ 3238          ; NFKC_CF; 0028 52B4 0029 # So       PARENTHESIZED IDEOGRAPH LABOR
+ 3239          ; NFKC_CF; 0028 4EE3 0029 # So       PARENTHESIZED IDEOGRAPH REPRESENT
+ 323A          ; NFKC_CF; 0028 547C 0029 # So       PARENTHESIZED IDEOGRAPH CALL
+ 323B          ; NFKC_CF; 0028 5B66 0029 # So       PARENTHESIZED IDEOGRAPH STUDY
+ 323C          ; NFKC_CF; 0028 76E3 0029 # So       PARENTHESIZED IDEOGRAPH SUPERVISE
+ 323D          ; NFKC_CF; 0028 4F01 0029 # So       PARENTHESIZED IDEOGRAPH ENTERPRISE
+ 323E          ; NFKC_CF; 0028 8CC7 0029 # So       PARENTHESIZED IDEOGRAPH RESOURCE
+ 323F          ; NFKC_CF; 0028 5354 0029 # So       PARENTHESIZED IDEOGRAPH ALLIANCE
+ 3240          ; NFKC_CF; 0028 796D 0029 # So       PARENTHESIZED IDEOGRAPH FESTIVAL
+ 3241          ; NFKC_CF; 0028 4F11 0029 # So       PARENTHESIZED IDEOGRAPH REST
+ 3242          ; NFKC_CF; 0028 81EA 0029 # So       PARENTHESIZED IDEOGRAPH SELF
+ 3243          ; NFKC_CF; 0028 81F3 0029 # So       PARENTHESIZED IDEOGRAPH REACH
+ 3244          ; NFKC_CF; 554F           # So       CIRCLED IDEOGRAPH QUESTION
+ 3245          ; NFKC_CF; 5E7C           # So       CIRCLED IDEOGRAPH KINDERGARTEN
+ 3246          ; NFKC_CF; 6587           # So       CIRCLED IDEOGRAPH SCHOOL
+ 3247          ; NFKC_CF; 7B8F           # So       CIRCLED IDEOGRAPH KOTO
+ 3250          ; NFKC_CF; 0070 0074 0065 # So       PARTNERSHIP SIGN
+ 3251          ; NFKC_CF; 0032 0031      # No       CIRCLED NUMBER TWENTY ONE
+ 3252          ; NFKC_CF; 0032 0032      # No       CIRCLED NUMBER TWENTY TWO
+ 3253          ; NFKC_CF; 0032 0033      # No       CIRCLED NUMBER TWENTY THREE
+ 3254          ; NFKC_CF; 0032 0034      # No       CIRCLED NUMBER TWENTY FOUR
+ 3255          ; NFKC_CF; 0032 0035      # No       CIRCLED NUMBER TWENTY FIVE
+ 3256          ; NFKC_CF; 0032 0036      # No       CIRCLED NUMBER TWENTY SIX
+ 3257          ; NFKC_CF; 0032 0037      # No       CIRCLED NUMBER TWENTY SEVEN
+ 3258          ; NFKC_CF; 0032 0038      # No       CIRCLED NUMBER TWENTY EIGHT
+ 3259          ; NFKC_CF; 0032 0039      # No       CIRCLED NUMBER TWENTY NINE
+ 325A          ; NFKC_CF; 0033 0030      # No       CIRCLED NUMBER THIRTY
+ 325B          ; NFKC_CF; 0033 0031      # No       CIRCLED NUMBER THIRTY ONE
+ 325C          ; NFKC_CF; 0033 0032      # No       CIRCLED NUMBER THIRTY TWO
+ 325D          ; NFKC_CF; 0033 0033      # No       CIRCLED NUMBER THIRTY THREE
+ 325E          ; NFKC_CF; 0033 0034      # No       CIRCLED NUMBER THIRTY FOUR
+ 325F          ; NFKC_CF; 0033 0035      # No       CIRCLED NUMBER THIRTY FIVE
+ 3260          ; NFKC_CF; 1100           # So       CIRCLED HANGUL KIYEOK
+ 3261          ; NFKC_CF; 1102           # So       CIRCLED HANGUL NIEUN
+ 3262          ; NFKC_CF; 1103           # So       CIRCLED HANGUL TIKEUT
+ 3263          ; NFKC_CF; 1105           # So       CIRCLED HANGUL RIEUL
+ 3264          ; NFKC_CF; 1106           # So       CIRCLED HANGUL MIEUM
+ 3265          ; NFKC_CF; 1107           # So       CIRCLED HANGUL PIEUP
+ 3266          ; NFKC_CF; 1109           # So       CIRCLED HANGUL SIOS
+ 3267          ; NFKC_CF; 110B           # So       CIRCLED HANGUL IEUNG
+ 3268          ; NFKC_CF; 110C           # So       CIRCLED HANGUL CIEUC
+ 3269          ; NFKC_CF; 110E           # So       CIRCLED HANGUL CHIEUCH
+ 326A          ; NFKC_CF; 110F           # So       CIRCLED HANGUL KHIEUKH
+ 326B          ; NFKC_CF; 1110           # So       CIRCLED HANGUL THIEUTH
+ 326C          ; NFKC_CF; 1111           # So       CIRCLED HANGUL PHIEUPH
+ 326D          ; NFKC_CF; 1112           # So       CIRCLED HANGUL HIEUH
+ 326E          ; NFKC_CF; AC00           # So       CIRCLED HANGUL KIYEOK A
+ 326F          ; NFKC_CF; B098           # So       CIRCLED HANGUL NIEUN A
+ 3270          ; NFKC_CF; B2E4           # So       CIRCLED HANGUL TIKEUT A
+ 3271          ; NFKC_CF; B77C           # So       CIRCLED HANGUL RIEUL A
+ 3272          ; NFKC_CF; B9C8           # So       CIRCLED HANGUL MIEUM A
+ 3273          ; NFKC_CF; BC14           # So       CIRCLED HANGUL PIEUP A
+ 3274          ; NFKC_CF; C0AC           # So       CIRCLED HANGUL SIOS A
+ 3275          ; NFKC_CF; C544           # So       CIRCLED HANGUL IEUNG A
+ 3276          ; NFKC_CF; C790           # So       CIRCLED HANGUL CIEUC A
+ 3277          ; NFKC_CF; CC28           # So       CIRCLED HANGUL CHIEUCH A
+ 3278          ; NFKC_CF; CE74           # So       CIRCLED HANGUL KHIEUKH A
+ 3279          ; NFKC_CF; D0C0           # So       CIRCLED HANGUL THIEUTH A
+ 327A          ; NFKC_CF; D30C           # So       CIRCLED HANGUL PHIEUPH A
+ 327B          ; NFKC_CF; D558           # So       CIRCLED HANGUL HIEUH A
+ 327C          ; NFKC_CF; CC38 ACE0      # So       CIRCLED KOREAN CHARACTER CHAMKO
+ 327D          ; NFKC_CF; C8FC C758      # So       CIRCLED KOREAN CHARACTER JUEUI
+ 327E          ; NFKC_CF; C6B0           # So       CIRCLED HANGUL IEUNG U
+ 3280          ; NFKC_CF; 4E00           # No       CIRCLED IDEOGRAPH ONE
+ 3281          ; NFKC_CF; 4E8C           # No       CIRCLED IDEOGRAPH TWO
+ 3282          ; NFKC_CF; 4E09           # No       CIRCLED IDEOGRAPH THREE
+ 3283          ; NFKC_CF; 56DB           # No       CIRCLED IDEOGRAPH FOUR
+ 3284          ; NFKC_CF; 4E94           # No       CIRCLED IDEOGRAPH FIVE
+ 3285          ; NFKC_CF; 516D           # No       CIRCLED IDEOGRAPH SIX
+ 3286          ; NFKC_CF; 4E03           # No       CIRCLED IDEOGRAPH SEVEN
+ 3287          ; NFKC_CF; 516B           # No       CIRCLED IDEOGRAPH EIGHT
+ 3288          ; NFKC_CF; 4E5D           # No       CIRCLED IDEOGRAPH NINE
+ 3289          ; NFKC_CF; 5341           # No       CIRCLED IDEOGRAPH TEN
+ 328A          ; NFKC_CF; 6708           # So       CIRCLED IDEOGRAPH MOON
+ 328B          ; NFKC_CF; 706B           # So       CIRCLED IDEOGRAPH FIRE
+ 328C          ; NFKC_CF; 6C34           # So       CIRCLED IDEOGRAPH WATER
+ 328D          ; NFKC_CF; 6728           # So       CIRCLED IDEOGRAPH WOOD
+ 328E          ; NFKC_CF; 91D1           # So       CIRCLED IDEOGRAPH METAL
+ 328F          ; NFKC_CF; 571F           # So       CIRCLED IDEOGRAPH EARTH
+ 3290          ; NFKC_CF; 65E5           # So       CIRCLED IDEOGRAPH SUN
+ 3291          ; NFKC_CF; 682A           # So       CIRCLED IDEOGRAPH STOCK
+ 3292          ; NFKC_CF; 6709           # So       CIRCLED IDEOGRAPH HAVE
+ 3293          ; NFKC_CF; 793E           # So       CIRCLED IDEOGRAPH SOCIETY
+ 3294          ; NFKC_CF; 540D           # So       CIRCLED IDEOGRAPH NAME
+ 3295          ; NFKC_CF; 7279           # So       CIRCLED IDEOGRAPH SPECIAL
+ 3296          ; NFKC_CF; 8CA1           # So       CIRCLED IDEOGRAPH FINANCIAL
+ 3297          ; NFKC_CF; 795D           # So       CIRCLED IDEOGRAPH CONGRATULATION
+ 3298          ; NFKC_CF; 52B4           # So       CIRCLED IDEOGRAPH LABOR
+ 3299          ; NFKC_CF; 79D8           # So       CIRCLED IDEOGRAPH SECRET
+ 329A          ; NFKC_CF; 7537           # So       CIRCLED IDEOGRAPH MALE
+ 329B          ; NFKC_CF; 5973           # So       CIRCLED IDEOGRAPH FEMALE
+ 329C          ; NFKC_CF; 9069           # So       CIRCLED IDEOGRAPH SUITABLE
+ 329D          ; NFKC_CF; 512A           # So       CIRCLED IDEOGRAPH EXCELLENT
+ 329E          ; NFKC_CF; 5370           # So       CIRCLED IDEOGRAPH PRINT
+ 329F          ; NFKC_CF; 6CE8           # So       CIRCLED IDEOGRAPH ATTENTION
+ 32A0          ; NFKC_CF; 9805           # So       CIRCLED IDEOGRAPH ITEM
+ 32A1          ; NFKC_CF; 4F11           # So       CIRCLED IDEOGRAPH REST
+ 32A2          ; NFKC_CF; 5199           # So       CIRCLED IDEOGRAPH COPY
+ 32A3          ; NFKC_CF; 6B63           # So       CIRCLED IDEOGRAPH CORRECT
+ 32A4          ; NFKC_CF; 4E0A           # So       CIRCLED IDEOGRAPH HIGH
+ 32A5          ; NFKC_CF; 4E2D           # So       CIRCLED IDEOGRAPH CENTRE
+ 32A6          ; NFKC_CF; 4E0B           # So       CIRCLED IDEOGRAPH LOW
+ 32A7          ; NFKC_CF; 5DE6           # So       CIRCLED IDEOGRAPH LEFT
+ 32A8          ; NFKC_CF; 53F3           # So       CIRCLED IDEOGRAPH RIGHT
+ 32A9          ; NFKC_CF; 533B           # So       CIRCLED IDEOGRAPH MEDICINE
+ 32AA          ; NFKC_CF; 5B97           # So       CIRCLED IDEOGRAPH RELIGION
+ 32AB          ; NFKC_CF; 5B66           # So       CIRCLED IDEOGRAPH STUDY
+ 32AC          ; NFKC_CF; 76E3           # So       CIRCLED IDEOGRAPH SUPERVISE
+ 32AD          ; NFKC_CF; 4F01           # So       CIRCLED IDEOGRAPH ENTERPRISE
+ 32AE          ; NFKC_CF; 8CC7           # So       CIRCLED IDEOGRAPH RESOURCE
+ 32AF          ; NFKC_CF; 5354           # So       CIRCLED IDEOGRAPH ALLIANCE
+ 32B0          ; NFKC_CF; 591C           # So       CIRCLED IDEOGRAPH NIGHT
+ 32B1          ; NFKC_CF; 0033 0036      # No       CIRCLED NUMBER THIRTY SIX
+ 32B2          ; NFKC_CF; 0033 0037      # No       CIRCLED NUMBER THIRTY SEVEN
+ 32B3          ; NFKC_CF; 0033 0038      # No       CIRCLED NUMBER THIRTY EIGHT
+ 32B4          ; NFKC_CF; 0033 0039      # No       CIRCLED NUMBER THIRTY NINE
+ 32B5          ; NFKC_CF; 0034 0030      # No       CIRCLED NUMBER FORTY
+ 32B6          ; NFKC_CF; 0034 0031      # No       CIRCLED NUMBER FORTY ONE
+ 32B7          ; NFKC_CF; 0034 0032      # No       CIRCLED NUMBER FORTY TWO
+ 32B8          ; NFKC_CF; 0034 0033      # No       CIRCLED NUMBER FORTY THREE
+ 32B9          ; NFKC_CF; 0034 0034      # No       CIRCLED NUMBER FORTY FOUR
+ 32BA          ; NFKC_CF; 0034 0035      # No       CIRCLED NUMBER FORTY FIVE
+ 32BB          ; NFKC_CF; 0034 0036      # No       CIRCLED NUMBER FORTY SIX
+ 32BC          ; NFKC_CF; 0034 0037      # No       CIRCLED NUMBER FORTY SEVEN
+ 32BD          ; NFKC_CF; 0034 0038      # No       CIRCLED NUMBER FORTY EIGHT
+ 32BE          ; NFKC_CF; 0034 0039      # No       CIRCLED NUMBER FORTY NINE
+ 32BF          ; NFKC_CF; 0035 0030      # No       CIRCLED NUMBER FIFTY
+ 32C0          ; NFKC_CF; 0031 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY
+ 32C1          ; NFKC_CF; 0032 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR FEBRUARY
+ 32C2          ; NFKC_CF; 0033 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR MARCH
+ 32C3          ; NFKC_CF; 0034 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR APRIL
+ 32C4          ; NFKC_CF; 0035 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR MAY
+ 32C5          ; NFKC_CF; 0036 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR JUNE
+ 32C6          ; NFKC_CF; 0037 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR JULY
+ 32C7          ; NFKC_CF; 0038 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR AUGUST
+ 32C8          ; NFKC_CF; 0039 6708      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR SEPTEMBER
+ 32C9          ; NFKC_CF; 0031 0030 6708 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR OCTOBER
+ 32CA          ; NFKC_CF; 0031 0031 6708 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR NOVEMBER
+ 32CB          ; NFKC_CF; 0031 0032 6708 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DECEMBER
+ 32CC          ; NFKC_CF; 0068 0067      # So       SQUARE HG
+ 32CD          ; NFKC_CF; 0065 0072 0067 # So       SQUARE ERG
+ 32CE          ; NFKC_CF; 0065 0076      # So       SQUARE EV
+ 32CF          ; NFKC_CF; 006C 0074 0064 # So       LIMITED LIABILITY SIGN
+ 32D0          ; NFKC_CF; 30A2           # So       CIRCLED KATAKANA A
+ 32D1          ; NFKC_CF; 30A4           # So       CIRCLED KATAKANA I
+ 32D2          ; NFKC_CF; 30A6           # So       CIRCLED KATAKANA U
+ 32D3          ; NFKC_CF; 30A8           # So       CIRCLED KATAKANA E
+ 32D4          ; NFKC_CF; 30AA           # So       CIRCLED KATAKANA O
+ 32D5          ; NFKC_CF; 30AB           # So       CIRCLED KATAKANA KA
+ 32D6          ; NFKC_CF; 30AD           # So       CIRCLED KATAKANA KI
+ 32D7          ; NFKC_CF; 30AF           # So       CIRCLED KATAKANA KU
+ 32D8          ; NFKC_CF; 30B1           # So       CIRCLED KATAKANA KE
+ 32D9          ; NFKC_CF; 30B3           # So       CIRCLED KATAKANA KO
+ 32DA          ; NFKC_CF; 30B5           # So       CIRCLED KATAKANA SA
+ 32DB          ; NFKC_CF; 30B7           # So       CIRCLED KATAKANA SI
+ 32DC          ; NFKC_CF; 30B9           # So       CIRCLED KATAKANA SU
+ 32DD          ; NFKC_CF; 30BB           # So       CIRCLED KATAKANA SE
+ 32DE          ; NFKC_CF; 30BD           # So       CIRCLED KATAKANA SO
+ 32DF          ; NFKC_CF; 30BF           # So       CIRCLED KATAKANA TA
+ 32E0          ; NFKC_CF; 30C1           # So       CIRCLED KATAKANA TI
+ 32E1          ; NFKC_CF; 30C4           # So       CIRCLED KATAKANA TU
+ 32E2          ; NFKC_CF; 30C6           # So       CIRCLED KATAKANA TE
+ 32E3          ; NFKC_CF; 30C8           # So       CIRCLED KATAKANA TO
+ 32E4          ; NFKC_CF; 30CA           # So       CIRCLED KATAKANA NA
+ 32E5          ; NFKC_CF; 30CB           # So       CIRCLED KATAKANA NI
+ 32E6          ; NFKC_CF; 30CC           # So       CIRCLED KATAKANA NU
+ 32E7          ; NFKC_CF; 30CD           # So       CIRCLED KATAKANA NE
+ 32E8          ; NFKC_CF; 30CE           # So       CIRCLED KATAKANA NO
+ 32E9          ; NFKC_CF; 30CF           # So       CIRCLED KATAKANA HA
+ 32EA          ; NFKC_CF; 30D2           # So       CIRCLED KATAKANA HI
+ 32EB          ; NFKC_CF; 30D5           # So       CIRCLED KATAKANA HU
+ 32EC          ; NFKC_CF; 30D8           # So       CIRCLED KATAKANA HE
+ 32ED          ; NFKC_CF; 30DB           # So       CIRCLED KATAKANA HO
+ 32EE          ; NFKC_CF; 30DE           # So       CIRCLED KATAKANA MA
+ 32EF          ; NFKC_CF; 30DF           # So       CIRCLED KATAKANA MI
+ 32F0          ; NFKC_CF; 30E0           # So       CIRCLED KATAKANA MU
+ 32F1          ; NFKC_CF; 30E1           # So       CIRCLED KATAKANA ME
+ 32F2          ; NFKC_CF; 30E2           # So       CIRCLED KATAKANA MO
+ 32F3          ; NFKC_CF; 30E4           # So       CIRCLED KATAKANA YA
+ 32F4          ; NFKC_CF; 30E6           # So       CIRCLED KATAKANA YU
+ 32F5          ; NFKC_CF; 30E8           # So       CIRCLED KATAKANA YO
+ 32F6          ; NFKC_CF; 30E9           # So       CIRCLED KATAKANA RA
+ 32F7          ; NFKC_CF; 30EA           # So       CIRCLED KATAKANA RI
+ 32F8          ; NFKC_CF; 30EB           # So       CIRCLED KATAKANA RU
+ 32F9          ; NFKC_CF; 30EC           # So       CIRCLED KATAKANA RE
+ 32FA          ; NFKC_CF; 30ED           # So       CIRCLED KATAKANA RO
+ 32FB          ; NFKC_CF; 30EF           # So       CIRCLED KATAKANA WA
+ 32FC          ; NFKC_CF; 30F0           # So       CIRCLED KATAKANA WI
+ 32FD          ; NFKC_CF; 30F1           # So       CIRCLED KATAKANA WE
+ 32FE          ; NFKC_CF; 30F2           # So       CIRCLED KATAKANA WO
+ 32FF          ; NFKC_CF; 4EE4 548C      # So       SQUARE ERA NAME REIWA
+ 3300          ; NFKC_CF; 30A2 30D1 30FC 30C8 #So   SQUARE APAATO
+ 3301          ; NFKC_CF; 30A2 30EB 30D5 30A1 #So   SQUARE ARUHUA
+ 3302          ; NFKC_CF; 30A2 30F3 30DA 30A2 #So   SQUARE ANPEA
+ 3303          ; NFKC_CF; 30A2 30FC 30EB # So       SQUARE AARU
+ 3304          ; NFKC_CF; 30A4 30CB 30F3 30B0 #So   SQUARE ININGU
+ 3305          ; NFKC_CF; 30A4 30F3 30C1 # So       SQUARE INTI
+ 3306          ; NFKC_CF; 30A6 30A9 30F3 # So       SQUARE UON
+ 3307          ; NFKC_CF; 30A8 30B9 30AF 30FC 30C9 #So SQUARE ESUKUUDO
+ 3308          ; NFKC_CF; 30A8 30FC 30AB 30FC #So   SQUARE EEKAA
+ 3309          ; NFKC_CF; 30AA 30F3 30B9 # So       SQUARE ONSU
+ 330A          ; NFKC_CF; 30AA 30FC 30E0 # So       SQUARE OOMU
+ 330B          ; NFKC_CF; 30AB 30A4 30EA # So       SQUARE KAIRI
+ 330C          ; NFKC_CF; 30AB 30E9 30C3 30C8 #So   SQUARE KARATTO
+ 330D          ; NFKC_CF; 30AB 30ED 30EA 30FC #So   SQUARE KARORII
+ 330E          ; NFKC_CF; 30AC 30ED 30F3 # So       SQUARE GARON
+ 330F          ; NFKC_CF; 30AC 30F3 30DE # So       SQUARE GANMA
+ 3310          ; NFKC_CF; 30AE 30AC      # So       SQUARE GIGA
+ 3311          ; NFKC_CF; 30AE 30CB 30FC # So       SQUARE GINII
+ 3312          ; NFKC_CF; 30AD 30E5 30EA 30FC #So   SQUARE KYURII
+ 3313          ; NFKC_CF; 30AE 30EB 30C0 30FC #So   SQUARE GIRUDAA
+ 3314          ; NFKC_CF; 30AD 30ED      # So       SQUARE KIRO
+ 3315          ; NFKC_CF; 30AD 30ED 30B0 30E9 30E0 #So SQUARE KIROGURAMU
+ 3316          ; NFKC_CF; 30AD 30ED 30E1 30FC 30C8 30EB #So SQUARE KIROMEETORU
+ 3317          ; NFKC_CF; 30AD 30ED 30EF 30C3 30C8 #So SQUARE KIROWATTO
+ 3318          ; NFKC_CF; 30B0 30E9 30E0 # So       SQUARE GURAMU
+ 3319          ; NFKC_CF; 30B0 30E9 30E0 30C8 30F3 #So SQUARE GURAMUTON
+ 331A          ; NFKC_CF; 30AF 30EB 30BC 30A4 30ED #So SQUARE KURUZEIRO
+ 331B          ; NFKC_CF; 30AF 30ED 30FC 30CD #So   SQUARE KUROONE
+ 331C          ; NFKC_CF; 30B1 30FC 30B9 # So       SQUARE KEESU
+ 331D          ; NFKC_CF; 30B3 30EB 30CA # So       SQUARE KORUNA
+ 331E          ; NFKC_CF; 30B3 30FC 30DD # So       SQUARE KOOPO
+ 331F          ; NFKC_CF; 30B5 30A4 30AF 30EB #So   SQUARE SAIKURU
+ 3320          ; NFKC_CF; 30B5 30F3 30C1 30FC 30E0 #So SQUARE SANTIIMU
+ 3321          ; NFKC_CF; 30B7 30EA 30F3 30B0 #So   SQUARE SIRINGU
+ 3322          ; NFKC_CF; 30BB 30F3 30C1 # So       SQUARE SENTI
+ 3323          ; NFKC_CF; 30BB 30F3 30C8 # So       SQUARE SENTO
+ 3324          ; NFKC_CF; 30C0 30FC 30B9 # So       SQUARE DAASU
+ 3325          ; NFKC_CF; 30C7 30B7      # So       SQUARE DESI
+ 3326          ; NFKC_CF; 30C9 30EB      # So       SQUARE DORU
+ 3327          ; NFKC_CF; 30C8 30F3      # So       SQUARE TON
+ 3328          ; NFKC_CF; 30CA 30CE      # So       SQUARE NANO
+ 3329          ; NFKC_CF; 30CE 30C3 30C8 # So       SQUARE NOTTO
+ 332A          ; NFKC_CF; 30CF 30A4 30C4 # So       SQUARE HAITU
+ 332B          ; NFKC_CF; 30D1 30FC 30BB 30F3 30C8 #So SQUARE PAASENTO
+ 332C          ; NFKC_CF; 30D1 30FC 30C4 # So       SQUARE PAATU
+ 332D          ; NFKC_CF; 30D0 30FC 30EC 30EB #So   SQUARE BAARERU
+ 332E          ; NFKC_CF; 30D4 30A2 30B9 30C8 30EB #So SQUARE PIASUTORU
+ 332F          ; NFKC_CF; 30D4 30AF 30EB # So       SQUARE PIKURU
+ 3330          ; NFKC_CF; 30D4 30B3      # So       SQUARE PIKO
+ 3331          ; NFKC_CF; 30D3 30EB      # So       SQUARE BIRU
+ 3332          ; NFKC_CF; 30D5 30A1 30E9 30C3 30C9 #So SQUARE HUARADDO
+ 3333          ; NFKC_CF; 30D5 30A3 30FC 30C8 #So   SQUARE HUIITO
+ 3334          ; NFKC_CF; 30D6 30C3 30B7 30A7 30EB #So SQUARE BUSSYERU
+ 3335          ; NFKC_CF; 30D5 30E9 30F3 # So       SQUARE HURAN
+ 3336          ; NFKC_CF; 30D8 30AF 30BF 30FC 30EB #So SQUARE HEKUTAARU
+ 3337          ; NFKC_CF; 30DA 30BD      # So       SQUARE PESO
+ 3338          ; NFKC_CF; 30DA 30CB 30D2 # So       SQUARE PENIHI
+ 3339          ; NFKC_CF; 30D8 30EB 30C4 # So       SQUARE HERUTU
+ 333A          ; NFKC_CF; 30DA 30F3 30B9 # So       SQUARE PENSU
+ 333B          ; NFKC_CF; 30DA 30FC 30B8 # So       SQUARE PEEZI
+ 333C          ; NFKC_CF; 30D9 30FC 30BF # So       SQUARE BEETA
+ 333D          ; NFKC_CF; 30DD 30A4 30F3 30C8 #So   SQUARE POINTO
+ 333E          ; NFKC_CF; 30DC 30EB 30C8 # So       SQUARE BORUTO
+ 333F          ; NFKC_CF; 30DB 30F3      # So       SQUARE HON
+ 3340          ; NFKC_CF; 30DD 30F3 30C9 # So       SQUARE PONDO
+ 3341          ; NFKC_CF; 30DB 30FC 30EB # So       SQUARE HOORU
+ 3342          ; NFKC_CF; 30DB 30FC 30F3 # So       SQUARE HOON
+ 3343          ; NFKC_CF; 30DE 30A4 30AF 30ED #So   SQUARE MAIKURO
+ 3344          ; NFKC_CF; 30DE 30A4 30EB # So       SQUARE MAIRU
+ 3345          ; NFKC_CF; 30DE 30C3 30CF # So       SQUARE MAHHA
+ 3346          ; NFKC_CF; 30DE 30EB 30AF # So       SQUARE MARUKU
+ 3347          ; NFKC_CF; 30DE 30F3 30B7 30E7 30F3 #So SQUARE MANSYON
+ 3348          ; NFKC_CF; 30DF 30AF 30ED 30F3 #So   SQUARE MIKURON
+ 3349          ; NFKC_CF; 30DF 30EA      # So       SQUARE MIRI
+ 334A          ; NFKC_CF; 30DF 30EA 30D0 30FC 30EB #So SQUARE MIRIBAARU
+ 334B          ; NFKC_CF; 30E1 30AC      # So       SQUARE MEGA
+ 334C          ; NFKC_CF; 30E1 30AC 30C8 30F3 #So   SQUARE MEGATON
+ 334D          ; NFKC_CF; 30E1 30FC 30C8 30EB #So   SQUARE MEETORU
+ 334E          ; NFKC_CF; 30E4 30FC 30C9 # So       SQUARE YAADO
+ 334F          ; NFKC_CF; 30E4 30FC 30EB # So       SQUARE YAARU
+ 3350          ; NFKC_CF; 30E6 30A2 30F3 # So       SQUARE YUAN
+ 3351          ; NFKC_CF; 30EA 30C3 30C8 30EB #So   SQUARE RITTORU
+ 3352          ; NFKC_CF; 30EA 30E9      # So       SQUARE RIRA
+ 3353          ; NFKC_CF; 30EB 30D4 30FC # So       SQUARE RUPII
+ 3354          ; NFKC_CF; 30EB 30FC 30D6 30EB #So   SQUARE RUUBURU
+ 3355          ; NFKC_CF; 30EC 30E0      # So       SQUARE REMU
+ 3356          ; NFKC_CF; 30EC 30F3 30C8 30B2 30F3 #So SQUARE RENTOGEN
+ 3357          ; NFKC_CF; 30EF 30C3 30C8 # So       SQUARE WATTO
+ 3358          ; NFKC_CF; 0030 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ZERO
+ 3359          ; NFKC_CF; 0031 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ONE
+ 335A          ; NFKC_CF; 0032 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWO
+ 335B          ; NFKC_CF; 0033 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THREE
+ 335C          ; NFKC_CF; 0034 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOUR
+ 335D          ; NFKC_CF; 0035 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIVE
+ 335E          ; NFKC_CF; 0036 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIX
+ 335F          ; NFKC_CF; 0037 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVEN
+ 3360          ; NFKC_CF; 0038 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHT
+ 3361          ; NFKC_CF; 0039 70B9      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINE
+ 3362          ; NFKC_CF; 0031 0030 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TEN
+ 3363          ; NFKC_CF; 0031 0031 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR ELEVEN
+ 3364          ; NFKC_CF; 0031 0032 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWELVE
+ 3365          ; NFKC_CF; 0031 0033 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR THIRTEEN
+ 3366          ; NFKC_CF; 0031 0034 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FOURTEEN
+ 3367          ; NFKC_CF; 0031 0035 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR FIFTEEN
+ 3368          ; NFKC_CF; 0031 0036 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SIXTEEN
+ 3369          ; NFKC_CF; 0031 0037 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR SEVENTEEN
+ 336A          ; NFKC_CF; 0031 0038 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR EIGHTEEN
+ 336B          ; NFKC_CF; 0031 0039 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR NINETEEN
+ 336C          ; NFKC_CF; 0032 0030 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY
+ 336D          ; NFKC_CF; 0032 0031 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-ONE
+ 336E          ; NFKC_CF; 0032 0032 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-TWO
+ 336F          ; NFKC_CF; 0032 0033 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-THREE
+ 3370          ; NFKC_CF; 0032 0034 70B9 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR HOUR TWENTY-FOUR
+ 3371          ; NFKC_CF; 0068 0070 0061 # So       SQUARE HPA
+ 3372          ; NFKC_CF; 0064 0061      # So       SQUARE DA
+ 3373          ; NFKC_CF; 0061 0075      # So       SQUARE AU
+ 3374          ; NFKC_CF; 0062 0061 0072 # So       SQUARE BAR
+ 3375          ; NFKC_CF; 006F 0076      # So       SQUARE OV
+ 3376          ; NFKC_CF; 0070 0063      # So       SQUARE PC
+ 3377          ; NFKC_CF; 0064 006D      # So       SQUARE DM
+ 3378          ; NFKC_CF; 0064 006D 0032 # So       SQUARE DM SQUARED
+ 3379          ; NFKC_CF; 0064 006D 0033 # So       SQUARE DM CUBED
+ 337A          ; NFKC_CF; 0069 0075      # So       SQUARE IU
+ 337B          ; NFKC_CF; 5E73 6210      # So       SQUARE ERA NAME HEISEI
+ 337C          ; NFKC_CF; 662D 548C      # So       SQUARE ERA NAME SYOUWA
+ 337D          ; NFKC_CF; 5927 6B63      # So       SQUARE ERA NAME TAISYOU
+ 337E          ; NFKC_CF; 660E 6CBB      # So       SQUARE ERA NAME MEIZI
+ 337F          ; NFKC_CF; 682A 5F0F 4F1A 793E #So   SQUARE CORPORATION
+ 3380          ; NFKC_CF; 0070 0061      # So       SQUARE PA AMPS
+ 3381          ; NFKC_CF; 006E 0061      # So       SQUARE NA
+ 3382          ; NFKC_CF; 03BC 0061      # So       SQUARE MU A
+ 3383          ; NFKC_CF; 006D 0061      # So       SQUARE MA
+ 3384          ; NFKC_CF; 006B 0061      # So       SQUARE KA
+ 3385          ; NFKC_CF; 006B 0062      # So       SQUARE KB
+ 3386          ; NFKC_CF; 006D 0062      # So       SQUARE MB
+ 3387          ; NFKC_CF; 0067 0062      # So       SQUARE GB
+ 3388          ; NFKC_CF; 0063 0061 006C # So       SQUARE CAL
+ 3389          ; NFKC_CF; 006B 0063 0061 006C #So   SQUARE KCAL
+ 338A          ; NFKC_CF; 0070 0066      # So       SQUARE PF
+ 338B          ; NFKC_CF; 006E 0066      # So       SQUARE NF
+ 338C          ; NFKC_CF; 03BC 0066      # So       SQUARE MU F
+ 338D          ; NFKC_CF; 03BC 0067      # So       SQUARE MU G
+ 338E          ; NFKC_CF; 006D 0067      # So       SQUARE MG
+ 338F          ; NFKC_CF; 006B 0067      # So       SQUARE KG
+ 3390          ; NFKC_CF; 0068 007A      # So       SQUARE HZ
+ 3391          ; NFKC_CF; 006B 0068 007A # So       SQUARE KHZ
+ 3392          ; NFKC_CF; 006D 0068 007A # So       SQUARE MHZ
+ 3393          ; NFKC_CF; 0067 0068 007A # So       SQUARE GHZ
+ 3394          ; NFKC_CF; 0074 0068 007A # So       SQUARE THZ
+ 3395          ; NFKC_CF; 03BC 006C      # So       SQUARE MU L
+ 3396          ; NFKC_CF; 006D 006C      # So       SQUARE ML
+ 3397          ; NFKC_CF; 0064 006C      # So       SQUARE DL
+ 3398          ; NFKC_CF; 006B 006C      # So       SQUARE KL
+ 3399          ; NFKC_CF; 0066 006D      # So       SQUARE FM
+ 339A          ; NFKC_CF; 006E 006D      # So       SQUARE NM
+ 339B          ; NFKC_CF; 03BC 006D      # So       SQUARE MU M
+ 339C          ; NFKC_CF; 006D 006D      # So       SQUARE MM
+ 339D          ; NFKC_CF; 0063 006D      # So       SQUARE CM
+ 339E          ; NFKC_CF; 006B 006D      # So       SQUARE KM
+ 339F          ; NFKC_CF; 006D 006D 0032 # So       SQUARE MM SQUARED
+ 33A0          ; NFKC_CF; 0063 006D 0032 # So       SQUARE CM SQUARED
+ 33A1          ; NFKC_CF; 006D 0032      # So       SQUARE M SQUARED
+ 33A2          ; NFKC_CF; 006B 006D 0032 # So       SQUARE KM SQUARED
+ 33A3          ; NFKC_CF; 006D 006D 0033 # So       SQUARE MM CUBED
+ 33A4          ; NFKC_CF; 0063 006D 0033 # So       SQUARE CM CUBED
+ 33A5          ; NFKC_CF; 006D 0033      # So       SQUARE M CUBED
+ 33A6          ; NFKC_CF; 006B 006D 0033 # So       SQUARE KM CUBED
+ 33A7          ; NFKC_CF; 006D 2215 0073 # So       SQUARE M OVER S
+ 33A8          ; NFKC_CF; 006D 2215 0073 0032 #So   SQUARE M OVER S SQUARED
+ 33A9          ; NFKC_CF; 0070 0061      # So       SQUARE PA
+ 33AA          ; NFKC_CF; 006B 0070 0061 # So       SQUARE KPA
+ 33AB          ; NFKC_CF; 006D 0070 0061 # So       SQUARE MPA
+ 33AC          ; NFKC_CF; 0067 0070 0061 # So       SQUARE GPA
+ 33AD          ; NFKC_CF; 0072 0061 0064 # So       SQUARE RAD
+ 33AE          ; NFKC_CF; 0072 0061 0064 2215 0073 #So SQUARE RAD OVER S
+ 33AF          ; NFKC_CF; 0072 0061 0064 2215 0073 0032 #So SQUARE RAD OVER S SQUARED
+ 33B0          ; NFKC_CF; 0070 0073      # So       SQUARE PS
+ 33B1          ; NFKC_CF; 006E 0073      # So       SQUARE NS
+ 33B2          ; NFKC_CF; 03BC 0073      # So       SQUARE MU S
+ 33B3          ; NFKC_CF; 006D 0073      # So       SQUARE MS
+ 33B4          ; NFKC_CF; 0070 0076      # So       SQUARE PV
+ 33B5          ; NFKC_CF; 006E 0076      # So       SQUARE NV
+ 33B6          ; NFKC_CF; 03BC 0076      # So       SQUARE MU V
+ 33B7          ; NFKC_CF; 006D 0076      # So       SQUARE MV
+ 33B8          ; NFKC_CF; 006B 0076      # So       SQUARE KV
+ 33B9          ; NFKC_CF; 006D 0076      # So       SQUARE MV MEGA
+ 33BA          ; NFKC_CF; 0070 0077      # So       SQUARE PW
+ 33BB          ; NFKC_CF; 006E 0077      # So       SQUARE NW
+ 33BC          ; NFKC_CF; 03BC 0077      # So       SQUARE MU W
+ 33BD          ; NFKC_CF; 006D 0077      # So       SQUARE MW
+ 33BE          ; NFKC_CF; 006B 0077      # So       SQUARE KW
+ 33BF          ; NFKC_CF; 006D 0077      # So       SQUARE MW MEGA
+ 33C0          ; NFKC_CF; 006B 03C9      # So       SQUARE K OHM
+ 33C1          ; NFKC_CF; 006D 03C9      # So       SQUARE M OHM
+ 33C2          ; NFKC_CF; 0061 002E 006D 002E #So   SQUARE AM
+ 33C3          ; NFKC_CF; 0062 0071      # So       SQUARE BQ
+ 33C4          ; NFKC_CF; 0063 0063      # So       SQUARE CC
+ 33C5          ; NFKC_CF; 0063 0064      # So       SQUARE CD
+ 33C6          ; NFKC_CF; 0063 2215 006B 0067 #So   SQUARE C OVER KG
+ 33C7          ; NFKC_CF; 0063 006F 002E # So       SQUARE CO
+ 33C8          ; NFKC_CF; 0064 0062      # So       SQUARE DB
+ 33C9          ; NFKC_CF; 0067 0079      # So       SQUARE GY
+ 33CA          ; NFKC_CF; 0068 0061      # So       SQUARE HA
+ 33CB          ; NFKC_CF; 0068 0070      # So       SQUARE HP
+ 33CC          ; NFKC_CF; 0069 006E      # So       SQUARE IN
+ 33CD          ; NFKC_CF; 006B 006B      # So       SQUARE KK
+ 33CE          ; NFKC_CF; 006B 006D      # So       SQUARE KM CAPITAL
+ 33CF          ; NFKC_CF; 006B 0074      # So       SQUARE KT
+ 33D0          ; NFKC_CF; 006C 006D      # So       SQUARE LM
+ 33D1          ; NFKC_CF; 006C 006E      # So       SQUARE LN
+ 33D2          ; NFKC_CF; 006C 006F 0067 # So       SQUARE LOG
+ 33D3          ; NFKC_CF; 006C 0078      # So       SQUARE LX
+ 33D4          ; NFKC_CF; 006D 0062      # So       SQUARE MB SMALL
+ 33D5          ; NFKC_CF; 006D 0069 006C # So       SQUARE MIL
+ 33D6          ; NFKC_CF; 006D 006F 006C # So       SQUARE MOL
+ 33D7          ; NFKC_CF; 0070 0068      # So       SQUARE PH
+ 33D8          ; NFKC_CF; 0070 002E 006D 002E #So   SQUARE PM
+ 33D9          ; NFKC_CF; 0070 0070 006D # So       SQUARE PPM
+ 33DA          ; NFKC_CF; 0070 0072      # So       SQUARE PR
+ 33DB          ; NFKC_CF; 0073 0072      # So       SQUARE SR
+ 33DC          ; NFKC_CF; 0073 0076      # So       SQUARE SV
+ 33DD          ; NFKC_CF; 0077 0062      # So       SQUARE WB
+ 33DE          ; NFKC_CF; 0076 2215 006D # So       SQUARE V OVER M
+ 33DF          ; NFKC_CF; 0061 2215 006D # So       SQUARE A OVER M
+ 33E0          ; NFKC_CF; 0031 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ONE
+ 33E1          ; NFKC_CF; 0032 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWO
+ 33E2          ; NFKC_CF; 0033 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THREE
+ 33E3          ; NFKC_CF; 0034 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOUR
+ 33E4          ; NFKC_CF; 0035 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIVE
+ 33E5          ; NFKC_CF; 0036 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIX
+ 33E6          ; NFKC_CF; 0037 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVEN
+ 33E7          ; NFKC_CF; 0038 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHT
+ 33E8          ; NFKC_CF; 0039 65E5      # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINE
+ 33E9          ; NFKC_CF; 0031 0030 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TEN
+ 33EA          ; NFKC_CF; 0031 0031 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY ELEVEN
+ 33EB          ; NFKC_CF; 0031 0032 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWELVE
+ 33EC          ; NFKC_CF; 0031 0033 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTEEN
+ 33ED          ; NFKC_CF; 0031 0034 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FOURTEEN
+ 33EE          ; NFKC_CF; 0031 0035 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY FIFTEEN
+ 33EF          ; NFKC_CF; 0031 0036 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SIXTEEN
+ 33F0          ; NFKC_CF; 0031 0037 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY SEVENTEEN
+ 33F1          ; NFKC_CF; 0031 0038 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY EIGHTEEN
+ 33F2          ; NFKC_CF; 0031 0039 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY NINETEEN
+ 33F3          ; NFKC_CF; 0032 0030 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY
+ 33F4          ; NFKC_CF; 0032 0031 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-ONE
+ 33F5          ; NFKC_CF; 0032 0032 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-TWO
+ 33F6          ; NFKC_CF; 0032 0033 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-THREE
+ 33F7          ; NFKC_CF; 0032 0034 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FOUR
+ 33F8          ; NFKC_CF; 0032 0035 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-FIVE
+ 33F9          ; NFKC_CF; 0032 0036 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SIX
+ 33FA          ; NFKC_CF; 0032 0037 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-SEVEN
+ 33FB          ; NFKC_CF; 0032 0038 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-EIGHT
+ 33FC          ; NFKC_CF; 0032 0039 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY TWENTY-NINE
+ 33FD          ; NFKC_CF; 0033 0030 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY
+ 33FE          ; NFKC_CF; 0033 0031 65E5 # So       IDEOGRAPHIC TELEGRAPH SYMBOL FOR DAY THIRTY-ONE
+ 33FF          ; NFKC_CF; 0067 0061 006C # So       SQUARE GAL
+ A640          ; NFKC_CF; A641           # L&       CYRILLIC CAPITAL LETTER ZEMLYA
+ A642          ; NFKC_CF; A643           # L&       CYRILLIC CAPITAL LETTER DZELO
+ A644          ; NFKC_CF; A645           # L&       CYRILLIC CAPITAL LETTER REVERSED DZE
+ A646          ; NFKC_CF; A647           # L&       CYRILLIC CAPITAL LETTER IOTA
+ A648          ; NFKC_CF; A649           # L&       CYRILLIC CAPITAL LETTER DJERV
+ A64A          ; NFKC_CF; A64B           # L&       CYRILLIC CAPITAL LETTER MONOGRAPH UK
+ A64C          ; NFKC_CF; A64D           # L&       CYRILLIC CAPITAL LETTER BROAD OMEGA
+ A64E          ; NFKC_CF; A64F           # L&       CYRILLIC CAPITAL LETTER NEUTRAL YER
+ A650          ; NFKC_CF; A651           # L&       CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+ A652          ; NFKC_CF; A653           # L&       CYRILLIC CAPITAL LETTER IOTIFIED YAT
+ A654          ; NFKC_CF; A655           # L&       CYRILLIC CAPITAL LETTER REVERSED YU
+ A656          ; NFKC_CF; A657           # L&       CYRILLIC CAPITAL LETTER IOTIFIED A
+ A658          ; NFKC_CF; A659           # L&       CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+ A65A          ; NFKC_CF; A65B           # L&       CYRILLIC CAPITAL LETTER BLENDED YUS
+ A65C          ; NFKC_CF; A65D           # L&       CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65E          ; NFKC_CF; A65F           # L&       CYRILLIC CAPITAL LETTER YN
+ A660          ; NFKC_CF; A661           # L&       CYRILLIC CAPITAL LETTER REVERSED TSE
+ A662          ; NFKC_CF; A663           # L&       CYRILLIC CAPITAL LETTER SOFT DE
+ A664          ; NFKC_CF; A665           # L&       CYRILLIC CAPITAL LETTER SOFT EL
+ A666          ; NFKC_CF; A667           # L&       CYRILLIC CAPITAL LETTER SOFT EM
+ A668          ; NFKC_CF; A669           # L&       CYRILLIC CAPITAL LETTER MONOCULAR O
+ A66A          ; NFKC_CF; A66B           # L&       CYRILLIC CAPITAL LETTER BINOCULAR O
+ A66C          ; NFKC_CF; A66D           # L&       CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+ A680          ; NFKC_CF; A681           # L&       CYRILLIC CAPITAL LETTER DWE
+ A682          ; NFKC_CF; A683           # L&       CYRILLIC CAPITAL LETTER DZWE
+ A684          ; NFKC_CF; A685           # L&       CYRILLIC CAPITAL LETTER ZHWE
+ A686          ; NFKC_CF; A687           # L&       CYRILLIC CAPITAL LETTER CCHE
+ A688          ; NFKC_CF; A689           # L&       CYRILLIC CAPITAL LETTER DZZE
+ A68A          ; NFKC_CF; A68B           # L&       CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+ A68C          ; NFKC_CF; A68D           # L&       CYRILLIC CAPITAL LETTER TWE
+ A68E          ; NFKC_CF; A68F           # L&       CYRILLIC CAPITAL LETTER TSWE
+ A690          ; NFKC_CF; A691           # L&       CYRILLIC CAPITAL LETTER TSSE
+ A692          ; NFKC_CF; A693           # L&       CYRILLIC CAPITAL LETTER TCHE
+ A694          ; NFKC_CF; A695           # L&       CYRILLIC CAPITAL LETTER HWE
+ A696          ; NFKC_CF; A697           # L&       CYRILLIC CAPITAL LETTER SHWE
+ A698          ; NFKC_CF; A699           # L&       CYRILLIC CAPITAL LETTER DOUBLE O
+ A69A          ; NFKC_CF; A69B           # L&       CYRILLIC CAPITAL LETTER CROSSED O
+ A69C          ; NFKC_CF; 044A           # Lm       MODIFIER LETTER CYRILLIC HARD SIGN
+ A69D          ; NFKC_CF; 044C           # Lm       MODIFIER LETTER CYRILLIC SOFT SIGN
+ A722          ; NFKC_CF; A723           # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+ A724          ; NFKC_CF; A725           # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+ A726          ; NFKC_CF; A727           # L&       LATIN CAPITAL LETTER HENG
+ A728          ; NFKC_CF; A729           # L&       LATIN CAPITAL LETTER TZ
+ A72A          ; NFKC_CF; A72B           # L&       LATIN CAPITAL LETTER TRESILLO
+ A72C          ; NFKC_CF; A72D           # L&       LATIN CAPITAL LETTER CUATRILLO
+ A72E          ; NFKC_CF; A72F           # L&       LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+ A732          ; NFKC_CF; A733           # L&       LATIN CAPITAL LETTER AA
+ A734          ; NFKC_CF; A735           # L&       LATIN CAPITAL LETTER AO
+ A736          ; NFKC_CF; A737           # L&       LATIN CAPITAL LETTER AU
+ A738          ; NFKC_CF; A739           # L&       LATIN CAPITAL LETTER AV
+ A73A          ; NFKC_CF; A73B           # L&       LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+ A73C          ; NFKC_CF; A73D           # L&       LATIN CAPITAL LETTER AY
+ A73E          ; NFKC_CF; A73F           # L&       LATIN CAPITAL LETTER REVERSED C WITH DOT
+ A740          ; NFKC_CF; A741           # L&       LATIN CAPITAL LETTER K WITH STROKE
+ A742          ; NFKC_CF; A743           # L&       LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+ A744          ; NFKC_CF; A745           # L&       LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A746          ; NFKC_CF; A747           # L&       LATIN CAPITAL LETTER BROKEN L
+ A748          ; NFKC_CF; A749           # L&       LATIN CAPITAL LETTER L WITH HIGH STROKE
+ A74A          ; NFKC_CF; A74B           # L&       LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+ A74C          ; NFKC_CF; A74D           # L&       LATIN CAPITAL LETTER O WITH LOOP
+ A74E          ; NFKC_CF; A74F           # L&       LATIN CAPITAL LETTER OO
+ A750          ; NFKC_CF; A751           # L&       LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+ A752          ; NFKC_CF; A753           # L&       LATIN CAPITAL LETTER P WITH FLOURISH
+ A754          ; NFKC_CF; A755           # L&       LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+ A756          ; NFKC_CF; A757           # L&       LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+ A758          ; NFKC_CF; A759           # L&       LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+ A75A          ; NFKC_CF; A75B           # L&       LATIN CAPITAL LETTER R ROTUNDA
+ A75C          ; NFKC_CF; A75D           # L&       LATIN CAPITAL LETTER RUM ROTUNDA
+ A75E          ; NFKC_CF; A75F           # L&       LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+ A760          ; NFKC_CF; A761           # L&       LATIN CAPITAL LETTER VY
+ A762          ; NFKC_CF; A763           # L&       LATIN CAPITAL LETTER VISIGOTHIC Z
+ A764          ; NFKC_CF; A765           # L&       LATIN CAPITAL LETTER THORN WITH STROKE
+ A766          ; NFKC_CF; A767           # L&       LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A768          ; NFKC_CF; A769           # L&       LATIN CAPITAL LETTER VEND
+ A76A          ; NFKC_CF; A76B           # L&       LATIN CAPITAL LETTER ET
+ A76C          ; NFKC_CF; A76D           # L&       LATIN CAPITAL LETTER IS
+ A76E          ; NFKC_CF; A76F           # L&       LATIN CAPITAL LETTER CON
+ A770          ; NFKC_CF; A76F           # Lm       MODIFIER LETTER US
+ A779          ; NFKC_CF; A77A           # L&       LATIN CAPITAL LETTER INSULAR D
+ A77B          ; NFKC_CF; A77C           # L&       LATIN CAPITAL LETTER INSULAR F
+ A77D          ; NFKC_CF; 1D79           # L&       LATIN CAPITAL LETTER INSULAR G
+ A77E          ; NFKC_CF; A77F           # L&       LATIN CAPITAL LETTER TURNED INSULAR G
+ A780          ; NFKC_CF; A781           # L&       LATIN CAPITAL LETTER TURNED L
+ A782          ; NFKC_CF; A783           # L&       LATIN CAPITAL LETTER INSULAR R
+ A784          ; NFKC_CF; A785           # L&       LATIN CAPITAL LETTER INSULAR S
+ A786          ; NFKC_CF; A787           # L&       LATIN CAPITAL LETTER INSULAR T
+ A78B          ; NFKC_CF; A78C           # L&       LATIN CAPITAL LETTER SALTILLO
+ A78D          ; NFKC_CF; 0265           # L&       LATIN CAPITAL LETTER TURNED H
+ A790          ; NFKC_CF; A791           # L&       LATIN CAPITAL LETTER N WITH DESCENDER
+ A792          ; NFKC_CF; A793           # L&       LATIN CAPITAL LETTER C WITH BAR
+ A796          ; NFKC_CF; A797           # L&       LATIN CAPITAL LETTER B WITH FLOURISH
+ A798          ; NFKC_CF; A799           # L&       LATIN CAPITAL LETTER F WITH STROKE
+ A79A          ; NFKC_CF; A79B           # L&       LATIN CAPITAL LETTER VOLAPUK AE
+ A79C          ; NFKC_CF; A79D           # L&       LATIN CAPITAL LETTER VOLAPUK OE
+ A79E          ; NFKC_CF; A79F           # L&       LATIN CAPITAL LETTER VOLAPUK UE
+ A7A0          ; NFKC_CF; A7A1           # L&       LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+ A7A2          ; NFKC_CF; A7A3           # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+ A7A4          ; NFKC_CF; A7A5           # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+ A7A6          ; NFKC_CF; A7A7           # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+ A7A8          ; NFKC_CF; A7A9           # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+ A7AA          ; NFKC_CF; 0266           # L&       LATIN CAPITAL LETTER H WITH HOOK
+ A7AB          ; NFKC_CF; 025C           # L&       LATIN CAPITAL LETTER REVERSED OPEN E
+ A7AC          ; NFKC_CF; 0261           # L&       LATIN CAPITAL LETTER SCRIPT G
+ A7AD          ; NFKC_CF; 026C           # L&       LATIN CAPITAL LETTER L WITH BELT
+ A7AE          ; NFKC_CF; 026A           # L&       LATIN CAPITAL LETTER SMALL CAPITAL I
+ A7B0          ; NFKC_CF; 029E           # L&       LATIN CAPITAL LETTER TURNED K
+ A7B1          ; NFKC_CF; 0287           # L&       LATIN CAPITAL LETTER TURNED T
+ A7B2          ; NFKC_CF; 029D           # L&       LATIN CAPITAL LETTER J WITH CROSSED-TAIL
+ A7B3          ; NFKC_CF; AB53           # L&       LATIN CAPITAL LETTER CHI
+ A7B4          ; NFKC_CF; A7B5           # L&       LATIN CAPITAL LETTER BETA
+ A7B6          ; NFKC_CF; A7B7           # L&       LATIN CAPITAL LETTER OMEGA
+ A7B8          ; NFKC_CF; A7B9           # L&       LATIN CAPITAL LETTER U WITH STROKE
+ A7BA          ; NFKC_CF; A7BB           # L&       LATIN CAPITAL LETTER GLOTTAL A
+ A7BC          ; NFKC_CF; A7BD           # L&       LATIN CAPITAL LETTER GLOTTAL I
+ A7BE          ; NFKC_CF; A7BF           # L&       LATIN CAPITAL LETTER GLOTTAL U
+ A7C0          ; NFKC_CF; A7C1           # L&       LATIN CAPITAL LETTER OLD POLISH O
+ A7C2          ; NFKC_CF; A7C3           # L&       LATIN CAPITAL LETTER ANGLICANA W
+ A7C4          ; NFKC_CF; A794           # L&       LATIN CAPITAL LETTER C WITH PALATAL HOOK
+ A7C5          ; NFKC_CF; 0282           # L&       LATIN CAPITAL LETTER S WITH HOOK
+ A7C6          ; NFKC_CF; 1D8E           # L&       LATIN CAPITAL LETTER Z WITH PALATAL HOOK
+ A7C7          ; NFKC_CF; A7C8           # L&       LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+ A7C9          ; NFKC_CF; A7CA           # L&       LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0          ; NFKC_CF; A7D1           # L&       LATIN CAPITAL LETTER CLOSED INSULAR G
+ A7D6          ; NFKC_CF; A7D7           # L&       LATIN CAPITAL LETTER MIDDLE SCOTS S
+ A7D8          ; NFKC_CF; A7D9           # L&       LATIN CAPITAL LETTER SIGMOID S
+ A7F2          ; NFKC_CF; 0063           # Lm       MODIFIER LETTER CAPITAL C
+ A7F3          ; NFKC_CF; 0066           # Lm       MODIFIER LETTER CAPITAL F
+ A7F4          ; NFKC_CF; 0071           # Lm       MODIFIER LETTER CAPITAL Q
+ A7F5          ; NFKC_CF; A7F6           # L&       LATIN CAPITAL LETTER REVERSED HALF H
+ A7F8          ; NFKC_CF; 0127           # Lm       MODIFIER LETTER CAPITAL H WITH STROKE
+ A7F9          ; NFKC_CF; 0153           # Lm       MODIFIER LETTER SMALL LIGATURE OE
+ AB5C          ; NFKC_CF; A727           # Lm       MODIFIER LETTER SMALL HENG
+ AB5D          ; NFKC_CF; AB37           # Lm       MODIFIER LETTER SMALL L WITH INVERTED LAZY S
+ AB5E          ; NFKC_CF; 026B           # Lm       MODIFIER LETTER SMALL L WITH MIDDLE TILDE
+ AB5F          ; NFKC_CF; AB52           # Lm       MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; NFKC_CF; 028D           # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70          ; NFKC_CF; 13A0           # L&       CHEROKEE SMALL LETTER A
+ AB71          ; NFKC_CF; 13A1           # L&       CHEROKEE SMALL LETTER E
+ AB72          ; NFKC_CF; 13A2           # L&       CHEROKEE SMALL LETTER I
+ AB73          ; NFKC_CF; 13A3           # L&       CHEROKEE SMALL LETTER O
+ AB74          ; NFKC_CF; 13A4           # L&       CHEROKEE SMALL LETTER U
+ AB75          ; NFKC_CF; 13A5           # L&       CHEROKEE SMALL LETTER V
+ AB76          ; NFKC_CF; 13A6           # L&       CHEROKEE SMALL LETTER GA
+ AB77          ; NFKC_CF; 13A7           # L&       CHEROKEE SMALL LETTER KA
+ AB78          ; NFKC_CF; 13A8           # L&       CHEROKEE SMALL LETTER GE
+ AB79          ; NFKC_CF; 13A9           # L&       CHEROKEE SMALL LETTER GI
+ AB7A          ; NFKC_CF; 13AA           # L&       CHEROKEE SMALL LETTER GO
+ AB7B          ; NFKC_CF; 13AB           # L&       CHEROKEE SMALL LETTER GU
+ AB7C          ; NFKC_CF; 13AC           # L&       CHEROKEE SMALL LETTER GV
+ AB7D          ; NFKC_CF; 13AD           # L&       CHEROKEE SMALL LETTER HA
+ AB7E          ; NFKC_CF; 13AE           # L&       CHEROKEE SMALL LETTER HE
+ AB7F          ; NFKC_CF; 13AF           # L&       CHEROKEE SMALL LETTER HI
+ AB80          ; NFKC_CF; 13B0           # L&       CHEROKEE SMALL LETTER HO
+ AB81          ; NFKC_CF; 13B1           # L&       CHEROKEE SMALL LETTER HU
+ AB82          ; NFKC_CF; 13B2           # L&       CHEROKEE SMALL LETTER HV
+ AB83          ; NFKC_CF; 13B3           # L&       CHEROKEE SMALL LETTER LA
+ AB84          ; NFKC_CF; 13B4           # L&       CHEROKEE SMALL LETTER LE
+ AB85          ; NFKC_CF; 13B5           # L&       CHEROKEE SMALL LETTER LI
+ AB86          ; NFKC_CF; 13B6           # L&       CHEROKEE SMALL LETTER LO
+ AB87          ; NFKC_CF; 13B7           # L&       CHEROKEE SMALL LETTER LU
+ AB88          ; NFKC_CF; 13B8           # L&       CHEROKEE SMALL LETTER LV
+ AB89          ; NFKC_CF; 13B9           # L&       CHEROKEE SMALL LETTER MA
+ AB8A          ; NFKC_CF; 13BA           # L&       CHEROKEE SMALL LETTER ME
+ AB8B          ; NFKC_CF; 13BB           # L&       CHEROKEE SMALL LETTER MI
+ AB8C          ; NFKC_CF; 13BC           # L&       CHEROKEE SMALL LETTER MO
+ AB8D          ; NFKC_CF; 13BD           # L&       CHEROKEE SMALL LETTER MU
+ AB8E          ; NFKC_CF; 13BE           # L&       CHEROKEE SMALL LETTER NA
+ AB8F          ; NFKC_CF; 13BF           # L&       CHEROKEE SMALL LETTER HNA
+ AB90          ; NFKC_CF; 13C0           # L&       CHEROKEE SMALL LETTER NAH
+ AB91          ; NFKC_CF; 13C1           # L&       CHEROKEE SMALL LETTER NE
+ AB92          ; NFKC_CF; 13C2           # L&       CHEROKEE SMALL LETTER NI
+ AB93          ; NFKC_CF; 13C3           # L&       CHEROKEE SMALL LETTER NO
+ AB94          ; NFKC_CF; 13C4           # L&       CHEROKEE SMALL LETTER NU
+ AB95          ; NFKC_CF; 13C5           # L&       CHEROKEE SMALL LETTER NV
+ AB96          ; NFKC_CF; 13C6           # L&       CHEROKEE SMALL LETTER QUA
+ AB97          ; NFKC_CF; 13C7           # L&       CHEROKEE SMALL LETTER QUE
+ AB98          ; NFKC_CF; 13C8           # L&       CHEROKEE SMALL LETTER QUI
+ AB99          ; NFKC_CF; 13C9           # L&       CHEROKEE SMALL LETTER QUO
+ AB9A          ; NFKC_CF; 13CA           # L&       CHEROKEE SMALL LETTER QUU
+ AB9B          ; NFKC_CF; 13CB           # L&       CHEROKEE SMALL LETTER QUV
+ AB9C          ; NFKC_CF; 13CC           # L&       CHEROKEE SMALL LETTER SA
+ AB9D          ; NFKC_CF; 13CD           # L&       CHEROKEE SMALL LETTER S
+ AB9E          ; NFKC_CF; 13CE           # L&       CHEROKEE SMALL LETTER SE
+ AB9F          ; NFKC_CF; 13CF           # L&       CHEROKEE SMALL LETTER SI
+ ABA0          ; NFKC_CF; 13D0           # L&       CHEROKEE SMALL LETTER SO
+ ABA1          ; NFKC_CF; 13D1           # L&       CHEROKEE SMALL LETTER SU
+ ABA2          ; NFKC_CF; 13D2           # L&       CHEROKEE SMALL LETTER SV
+ ABA3          ; NFKC_CF; 13D3           # L&       CHEROKEE SMALL LETTER DA
+ ABA4          ; NFKC_CF; 13D4           # L&       CHEROKEE SMALL LETTER TA
+ ABA5          ; NFKC_CF; 13D5           # L&       CHEROKEE SMALL LETTER DE
+ ABA6          ; NFKC_CF; 13D6           # L&       CHEROKEE SMALL LETTER TE
+ ABA7          ; NFKC_CF; 13D7           # L&       CHEROKEE SMALL LETTER DI
+ ABA8          ; NFKC_CF; 13D8           # L&       CHEROKEE SMALL LETTER TI
+ ABA9          ; NFKC_CF; 13D9           # L&       CHEROKEE SMALL LETTER DO
+ ABAA          ; NFKC_CF; 13DA           # L&       CHEROKEE SMALL LETTER DU
+ ABAB          ; NFKC_CF; 13DB           # L&       CHEROKEE SMALL LETTER DV
+ ABAC          ; NFKC_CF; 13DC           # L&       CHEROKEE SMALL LETTER DLA
+ ABAD          ; NFKC_CF; 13DD           # L&       CHEROKEE SMALL LETTER TLA
+ ABAE          ; NFKC_CF; 13DE           # L&       CHEROKEE SMALL LETTER TLE
+ ABAF          ; NFKC_CF; 13DF           # L&       CHEROKEE SMALL LETTER TLI
+ ABB0          ; NFKC_CF; 13E0           # L&       CHEROKEE SMALL LETTER TLO
+ ABB1          ; NFKC_CF; 13E1           # L&       CHEROKEE SMALL LETTER TLU
+ ABB2          ; NFKC_CF; 13E2           # L&       CHEROKEE SMALL LETTER TLV
+ ABB3          ; NFKC_CF; 13E3           # L&       CHEROKEE SMALL LETTER TSA
+ ABB4          ; NFKC_CF; 13E4           # L&       CHEROKEE SMALL LETTER TSE
+ ABB5          ; NFKC_CF; 13E5           # L&       CHEROKEE SMALL LETTER TSI
+ ABB6          ; NFKC_CF; 13E6           # L&       CHEROKEE SMALL LETTER TSO
+ ABB7          ; NFKC_CF; 13E7           # L&       CHEROKEE SMALL LETTER TSU
+ ABB8          ; NFKC_CF; 13E8           # L&       CHEROKEE SMALL LETTER TSV
+ ABB9          ; NFKC_CF; 13E9           # L&       CHEROKEE SMALL LETTER WA
+ ABBA          ; NFKC_CF; 13EA           # L&       CHEROKEE SMALL LETTER WE
+ ABBB          ; NFKC_CF; 13EB           # L&       CHEROKEE SMALL LETTER WI
+ ABBC          ; NFKC_CF; 13EC           # L&       CHEROKEE SMALL LETTER WO
+ ABBD          ; NFKC_CF; 13ED           # L&       CHEROKEE SMALL LETTER WU
+ ABBE          ; NFKC_CF; 13EE           # L&       CHEROKEE SMALL LETTER WV
+ ABBF          ; NFKC_CF; 13EF           # L&       CHEROKEE SMALL LETTER YA
+ F900          ; NFKC_CF; 8C48           # Lo       CJK COMPATIBILITY IDEOGRAPH-F900
+ F901          ; NFKC_CF; 66F4           # Lo       CJK COMPATIBILITY IDEOGRAPH-F901
+ F902          ; NFKC_CF; 8ECA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F902
+ F903          ; NFKC_CF; 8CC8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F903
+ F904          ; NFKC_CF; 6ED1           # Lo       CJK COMPATIBILITY IDEOGRAPH-F904
+ F905          ; NFKC_CF; 4E32           # Lo       CJK COMPATIBILITY IDEOGRAPH-F905
+ F906          ; NFKC_CF; 53E5           # Lo       CJK COMPATIBILITY IDEOGRAPH-F906
+ F907..F908    ; NFKC_CF; 9F9C           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-F907..CJK COMPATIBILITY IDEOGRAPH-F908
+ F909          ; NFKC_CF; 5951           # Lo       CJK COMPATIBILITY IDEOGRAPH-F909
+ F90A          ; NFKC_CF; 91D1           # Lo       CJK COMPATIBILITY IDEOGRAPH-F90A
+ F90B          ; NFKC_CF; 5587           # Lo       CJK COMPATIBILITY IDEOGRAPH-F90B
+ F90C          ; NFKC_CF; 5948           # Lo       CJK COMPATIBILITY IDEOGRAPH-F90C
+ F90D          ; NFKC_CF; 61F6           # Lo       CJK COMPATIBILITY IDEOGRAPH-F90D
+ F90E          ; NFKC_CF; 7669           # Lo       CJK COMPATIBILITY IDEOGRAPH-F90E
+ F90F          ; NFKC_CF; 7F85           # Lo       CJK COMPATIBILITY IDEOGRAPH-F90F
+ F910          ; NFKC_CF; 863F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F910
+ F911          ; NFKC_CF; 87BA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F911
+ F912          ; NFKC_CF; 88F8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F912
+ F913          ; NFKC_CF; 908F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F913
+ F914          ; NFKC_CF; 6A02           # Lo       CJK COMPATIBILITY IDEOGRAPH-F914
+ F915          ; NFKC_CF; 6D1B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F915
+ F916          ; NFKC_CF; 70D9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F916
+ F917          ; NFKC_CF; 73DE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F917
+ F918          ; NFKC_CF; 843D           # Lo       CJK COMPATIBILITY IDEOGRAPH-F918
+ F919          ; NFKC_CF; 916A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F919
+ F91A          ; NFKC_CF; 99F1           # Lo       CJK COMPATIBILITY IDEOGRAPH-F91A
+ F91B          ; NFKC_CF; 4E82           # Lo       CJK COMPATIBILITY IDEOGRAPH-F91B
+ F91C          ; NFKC_CF; 5375           # Lo       CJK COMPATIBILITY IDEOGRAPH-F91C
+ F91D          ; NFKC_CF; 6B04           # Lo       CJK COMPATIBILITY IDEOGRAPH-F91D
+ F91E          ; NFKC_CF; 721B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F91E
+ F91F          ; NFKC_CF; 862D           # Lo       CJK COMPATIBILITY IDEOGRAPH-F91F
+ F920          ; NFKC_CF; 9E1E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F920
+ F921          ; NFKC_CF; 5D50           # Lo       CJK COMPATIBILITY IDEOGRAPH-F921
+ F922          ; NFKC_CF; 6FEB           # Lo       CJK COMPATIBILITY IDEOGRAPH-F922
+ F923          ; NFKC_CF; 85CD           # Lo       CJK COMPATIBILITY IDEOGRAPH-F923
+ F924          ; NFKC_CF; 8964           # Lo       CJK COMPATIBILITY IDEOGRAPH-F924
+ F925          ; NFKC_CF; 62C9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F925
+ F926          ; NFKC_CF; 81D8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F926
+ F927          ; NFKC_CF; 881F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F927
+ F928          ; NFKC_CF; 5ECA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F928
+ F929          ; NFKC_CF; 6717           # Lo       CJK COMPATIBILITY IDEOGRAPH-F929
+ F92A          ; NFKC_CF; 6D6A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F92A
+ F92B          ; NFKC_CF; 72FC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F92B
+ F92C          ; NFKC_CF; 90CE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F92C
+ F92D          ; NFKC_CF; 4F86           # Lo       CJK COMPATIBILITY IDEOGRAPH-F92D
+ F92E          ; NFKC_CF; 51B7           # Lo       CJK COMPATIBILITY IDEOGRAPH-F92E
+ F92F          ; NFKC_CF; 52DE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F92F
+ F930          ; NFKC_CF; 64C4           # Lo       CJK COMPATIBILITY IDEOGRAPH-F930
+ F931          ; NFKC_CF; 6AD3           # Lo       CJK COMPATIBILITY IDEOGRAPH-F931
+ F932          ; NFKC_CF; 7210           # Lo       CJK COMPATIBILITY IDEOGRAPH-F932
+ F933          ; NFKC_CF; 76E7           # Lo       CJK COMPATIBILITY IDEOGRAPH-F933
+ F934          ; NFKC_CF; 8001           # Lo       CJK COMPATIBILITY IDEOGRAPH-F934
+ F935          ; NFKC_CF; 8606           # Lo       CJK COMPATIBILITY IDEOGRAPH-F935
+ F936          ; NFKC_CF; 865C           # Lo       CJK COMPATIBILITY IDEOGRAPH-F936
+ F937          ; NFKC_CF; 8DEF           # Lo       CJK COMPATIBILITY IDEOGRAPH-F937
+ F938          ; NFKC_CF; 9732           # Lo       CJK COMPATIBILITY IDEOGRAPH-F938
+ F939          ; NFKC_CF; 9B6F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F939
+ F93A          ; NFKC_CF; 9DFA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F93A
+ F93B          ; NFKC_CF; 788C           # Lo       CJK COMPATIBILITY IDEOGRAPH-F93B
+ F93C          ; NFKC_CF; 797F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F93C
+ F93D          ; NFKC_CF; 7DA0           # Lo       CJK COMPATIBILITY IDEOGRAPH-F93D
+ F93E          ; NFKC_CF; 83C9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F93E
+ F93F          ; NFKC_CF; 9304           # Lo       CJK COMPATIBILITY IDEOGRAPH-F93F
+ F940          ; NFKC_CF; 9E7F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F940
+ F941          ; NFKC_CF; 8AD6           # Lo       CJK COMPATIBILITY IDEOGRAPH-F941
+ F942          ; NFKC_CF; 58DF           # Lo       CJK COMPATIBILITY IDEOGRAPH-F942
+ F943          ; NFKC_CF; 5F04           # Lo       CJK COMPATIBILITY IDEOGRAPH-F943
+ F944          ; NFKC_CF; 7C60           # Lo       CJK COMPATIBILITY IDEOGRAPH-F944
+ F945          ; NFKC_CF; 807E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F945
+ F946          ; NFKC_CF; 7262           # Lo       CJK COMPATIBILITY IDEOGRAPH-F946
+ F947          ; NFKC_CF; 78CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F947
+ F948          ; NFKC_CF; 8CC2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F948
+ F949          ; NFKC_CF; 96F7           # Lo       CJK COMPATIBILITY IDEOGRAPH-F949
+ F94A          ; NFKC_CF; 58D8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F94A
+ F94B          ; NFKC_CF; 5C62           # Lo       CJK COMPATIBILITY IDEOGRAPH-F94B
+ F94C          ; NFKC_CF; 6A13           # Lo       CJK COMPATIBILITY IDEOGRAPH-F94C
+ F94D          ; NFKC_CF; 6DDA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F94D
+ F94E          ; NFKC_CF; 6F0F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F94E
+ F94F          ; NFKC_CF; 7D2F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F94F
+ F950          ; NFKC_CF; 7E37           # Lo       CJK COMPATIBILITY IDEOGRAPH-F950
+ F951          ; NFKC_CF; 964B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F951
+ F952          ; NFKC_CF; 52D2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F952
+ F953          ; NFKC_CF; 808B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F953
+ F954          ; NFKC_CF; 51DC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F954
+ F955          ; NFKC_CF; 51CC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F955
+ F956          ; NFKC_CF; 7A1C           # Lo       CJK COMPATIBILITY IDEOGRAPH-F956
+ F957          ; NFKC_CF; 7DBE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F957
+ F958          ; NFKC_CF; 83F1           # Lo       CJK COMPATIBILITY IDEOGRAPH-F958
+ F959          ; NFKC_CF; 9675           # Lo       CJK COMPATIBILITY IDEOGRAPH-F959
+ F95A          ; NFKC_CF; 8B80           # Lo       CJK COMPATIBILITY IDEOGRAPH-F95A
+ F95B          ; NFKC_CF; 62CF           # Lo       CJK COMPATIBILITY IDEOGRAPH-F95B
+ F95C          ; NFKC_CF; 6A02           # Lo       CJK COMPATIBILITY IDEOGRAPH-F95C
+ F95D          ; NFKC_CF; 8AFE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F95D
+ F95E          ; NFKC_CF; 4E39           # Lo       CJK COMPATIBILITY IDEOGRAPH-F95E
+ F95F          ; NFKC_CF; 5BE7           # Lo       CJK COMPATIBILITY IDEOGRAPH-F95F
+ F960          ; NFKC_CF; 6012           # Lo       CJK COMPATIBILITY IDEOGRAPH-F960
+ F961          ; NFKC_CF; 7387           # Lo       CJK COMPATIBILITY IDEOGRAPH-F961
+ F962          ; NFKC_CF; 7570           # Lo       CJK COMPATIBILITY IDEOGRAPH-F962
+ F963          ; NFKC_CF; 5317           # Lo       CJK COMPATIBILITY IDEOGRAPH-F963
+ F964          ; NFKC_CF; 78FB           # Lo       CJK COMPATIBILITY IDEOGRAPH-F964
+ F965          ; NFKC_CF; 4FBF           # Lo       CJK COMPATIBILITY IDEOGRAPH-F965
+ F966          ; NFKC_CF; 5FA9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F966
+ F967          ; NFKC_CF; 4E0D           # Lo       CJK COMPATIBILITY IDEOGRAPH-F967
+ F968          ; NFKC_CF; 6CCC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F968
+ F969          ; NFKC_CF; 6578           # Lo       CJK COMPATIBILITY IDEOGRAPH-F969
+ F96A          ; NFKC_CF; 7D22           # Lo       CJK COMPATIBILITY IDEOGRAPH-F96A
+ F96B          ; NFKC_CF; 53C3           # Lo       CJK COMPATIBILITY IDEOGRAPH-F96B
+ F96C          ; NFKC_CF; 585E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F96C
+ F96D          ; NFKC_CF; 7701           # Lo       CJK COMPATIBILITY IDEOGRAPH-F96D
+ F96E          ; NFKC_CF; 8449           # Lo       CJK COMPATIBILITY IDEOGRAPH-F96E
+ F96F          ; NFKC_CF; 8AAA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F96F
+ F970          ; NFKC_CF; 6BBA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F970
+ F971          ; NFKC_CF; 8FB0           # Lo       CJK COMPATIBILITY IDEOGRAPH-F971
+ F972          ; NFKC_CF; 6C88           # Lo       CJK COMPATIBILITY IDEOGRAPH-F972
+ F973          ; NFKC_CF; 62FE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F973
+ F974          ; NFKC_CF; 82E5           # Lo       CJK COMPATIBILITY IDEOGRAPH-F974
+ F975          ; NFKC_CF; 63A0           # Lo       CJK COMPATIBILITY IDEOGRAPH-F975
+ F976          ; NFKC_CF; 7565           # Lo       CJK COMPATIBILITY IDEOGRAPH-F976
+ F977          ; NFKC_CF; 4EAE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F977
+ F978          ; NFKC_CF; 5169           # Lo       CJK COMPATIBILITY IDEOGRAPH-F978
+ F979          ; NFKC_CF; 51C9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F979
+ F97A          ; NFKC_CF; 6881           # Lo       CJK COMPATIBILITY IDEOGRAPH-F97A
+ F97B          ; NFKC_CF; 7CE7           # Lo       CJK COMPATIBILITY IDEOGRAPH-F97B
+ F97C          ; NFKC_CF; 826F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F97C
+ F97D          ; NFKC_CF; 8AD2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F97D
+ F97E          ; NFKC_CF; 91CF           # Lo       CJK COMPATIBILITY IDEOGRAPH-F97E
+ F97F          ; NFKC_CF; 52F5           # Lo       CJK COMPATIBILITY IDEOGRAPH-F97F
+ F980          ; NFKC_CF; 5442           # Lo       CJK COMPATIBILITY IDEOGRAPH-F980
+ F981          ; NFKC_CF; 5973           # Lo       CJK COMPATIBILITY IDEOGRAPH-F981
+ F982          ; NFKC_CF; 5EEC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F982
+ F983          ; NFKC_CF; 65C5           # Lo       CJK COMPATIBILITY IDEOGRAPH-F983
+ F984          ; NFKC_CF; 6FFE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F984
+ F985          ; NFKC_CF; 792A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F985
+ F986          ; NFKC_CF; 95AD           # Lo       CJK COMPATIBILITY IDEOGRAPH-F986
+ F987          ; NFKC_CF; 9A6A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F987
+ F988          ; NFKC_CF; 9E97           # Lo       CJK COMPATIBILITY IDEOGRAPH-F988
+ F989          ; NFKC_CF; 9ECE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F989
+ F98A          ; NFKC_CF; 529B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F98A
+ F98B          ; NFKC_CF; 66C6           # Lo       CJK COMPATIBILITY IDEOGRAPH-F98B
+ F98C          ; NFKC_CF; 6B77           # Lo       CJK COMPATIBILITY IDEOGRAPH-F98C
+ F98D          ; NFKC_CF; 8F62           # Lo       CJK COMPATIBILITY IDEOGRAPH-F98D
+ F98E          ; NFKC_CF; 5E74           # Lo       CJK COMPATIBILITY IDEOGRAPH-F98E
+ F98F          ; NFKC_CF; 6190           # Lo       CJK COMPATIBILITY IDEOGRAPH-F98F
+ F990          ; NFKC_CF; 6200           # Lo       CJK COMPATIBILITY IDEOGRAPH-F990
+ F991          ; NFKC_CF; 649A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F991
+ F992          ; NFKC_CF; 6F23           # Lo       CJK COMPATIBILITY IDEOGRAPH-F992
+ F993          ; NFKC_CF; 7149           # Lo       CJK COMPATIBILITY IDEOGRAPH-F993
+ F994          ; NFKC_CF; 7489           # Lo       CJK COMPATIBILITY IDEOGRAPH-F994
+ F995          ; NFKC_CF; 79CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F995
+ F996          ; NFKC_CF; 7DF4           # Lo       CJK COMPATIBILITY IDEOGRAPH-F996
+ F997          ; NFKC_CF; 806F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F997
+ F998          ; NFKC_CF; 8F26           # Lo       CJK COMPATIBILITY IDEOGRAPH-F998
+ F999          ; NFKC_CF; 84EE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F999
+ F99A          ; NFKC_CF; 9023           # Lo       CJK COMPATIBILITY IDEOGRAPH-F99A
+ F99B          ; NFKC_CF; 934A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F99B
+ F99C          ; NFKC_CF; 5217           # Lo       CJK COMPATIBILITY IDEOGRAPH-F99C
+ F99D          ; NFKC_CF; 52A3           # Lo       CJK COMPATIBILITY IDEOGRAPH-F99D
+ F99E          ; NFKC_CF; 54BD           # Lo       CJK COMPATIBILITY IDEOGRAPH-F99E
+ F99F          ; NFKC_CF; 70C8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F99F
+ F9A0          ; NFKC_CF; 88C2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A0
+ F9A1          ; NFKC_CF; 8AAA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A1
+ F9A2          ; NFKC_CF; 5EC9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A2
+ F9A3          ; NFKC_CF; 5FF5           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A3
+ F9A4          ; NFKC_CF; 637B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A4
+ F9A5          ; NFKC_CF; 6BAE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A5
+ F9A6          ; NFKC_CF; 7C3E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A6
+ F9A7          ; NFKC_CF; 7375           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A7
+ F9A8          ; NFKC_CF; 4EE4           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A8
+ F9A9          ; NFKC_CF; 56F9           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9A9
+ F9AA          ; NFKC_CF; 5BE7           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9AA
+ F9AB          ; NFKC_CF; 5DBA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9AB
+ F9AC          ; NFKC_CF; 601C           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9AC
+ F9AD          ; NFKC_CF; 73B2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9AD
+ F9AE          ; NFKC_CF; 7469           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9AE
+ F9AF          ; NFKC_CF; 7F9A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9AF
+ F9B0          ; NFKC_CF; 8046           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B0
+ F9B1          ; NFKC_CF; 9234           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B1
+ F9B2          ; NFKC_CF; 96F6           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B2
+ F9B3          ; NFKC_CF; 9748           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B3
+ F9B4          ; NFKC_CF; 9818           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B4
+ F9B5          ; NFKC_CF; 4F8B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B5
+ F9B6          ; NFKC_CF; 79AE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B6
+ F9B7          ; NFKC_CF; 91B4           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B7
+ F9B8          ; NFKC_CF; 96B8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B8
+ F9B9          ; NFKC_CF; 60E1           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9B9
+ F9BA          ; NFKC_CF; 4E86           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9BA
+ F9BB          ; NFKC_CF; 50DA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9BB
+ F9BC          ; NFKC_CF; 5BEE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9BC
+ F9BD          ; NFKC_CF; 5C3F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9BD
+ F9BE          ; NFKC_CF; 6599           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9BE
+ F9BF          ; NFKC_CF; 6A02           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9BF
+ F9C0          ; NFKC_CF; 71CE           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C0
+ F9C1          ; NFKC_CF; 7642           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C1
+ F9C2          ; NFKC_CF; 84FC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C2
+ F9C3          ; NFKC_CF; 907C           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C3
+ F9C4          ; NFKC_CF; 9F8D           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C4
+ F9C5          ; NFKC_CF; 6688           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C5
+ F9C6          ; NFKC_CF; 962E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C6
+ F9C7          ; NFKC_CF; 5289           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C7
+ F9C8          ; NFKC_CF; 677B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C8
+ F9C9          ; NFKC_CF; 67F3           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9C9
+ F9CA          ; NFKC_CF; 6D41           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9CA
+ F9CB          ; NFKC_CF; 6E9C           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9CB
+ F9CC          ; NFKC_CF; 7409           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9CC
+ F9CD          ; NFKC_CF; 7559           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9CD
+ F9CE          ; NFKC_CF; 786B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9CE
+ F9CF          ; NFKC_CF; 7D10           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9CF
+ F9D0          ; NFKC_CF; 985E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D0
+ F9D1          ; NFKC_CF; 516D           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D1
+ F9D2          ; NFKC_CF; 622E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D2
+ F9D3          ; NFKC_CF; 9678           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D3
+ F9D4          ; NFKC_CF; 502B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D4
+ F9D5          ; NFKC_CF; 5D19           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D5
+ F9D6          ; NFKC_CF; 6DEA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D6
+ F9D7          ; NFKC_CF; 8F2A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D7
+ F9D8          ; NFKC_CF; 5F8B           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D8
+ F9D9          ; NFKC_CF; 6144           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9D9
+ F9DA          ; NFKC_CF; 6817           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9DA
+ F9DB          ; NFKC_CF; 7387           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9DB
+ F9DC          ; NFKC_CF; 9686           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9DC
+ F9DD          ; NFKC_CF; 5229           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9DD
+ F9DE          ; NFKC_CF; 540F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9DE
+ F9DF          ; NFKC_CF; 5C65           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9DF
+ F9E0          ; NFKC_CF; 6613           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E0
+ F9E1          ; NFKC_CF; 674E           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E1
+ F9E2          ; NFKC_CF; 68A8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E2
+ F9E3          ; NFKC_CF; 6CE5           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E3
+ F9E4          ; NFKC_CF; 7406           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E4
+ F9E5          ; NFKC_CF; 75E2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E5
+ F9E6          ; NFKC_CF; 7F79           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E6
+ F9E7          ; NFKC_CF; 88CF           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E7
+ F9E8          ; NFKC_CF; 88E1           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E8
+ F9E9          ; NFKC_CF; 91CC           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9E9
+ F9EA          ; NFKC_CF; 96E2           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9EA
+ F9EB          ; NFKC_CF; 533F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9EB
+ F9EC          ; NFKC_CF; 6EBA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9EC
+ F9ED          ; NFKC_CF; 541D           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9ED
+ F9EE          ; NFKC_CF; 71D0           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9EE
+ F9EF          ; NFKC_CF; 7498           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9EF
+ F9F0          ; NFKC_CF; 85FA           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F0
+ F9F1          ; NFKC_CF; 96A3           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F1
+ F9F2          ; NFKC_CF; 9C57           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F2
+ F9F3          ; NFKC_CF; 9E9F           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F3
+ F9F4          ; NFKC_CF; 6797           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F4
+ F9F5          ; NFKC_CF; 6DCB           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F5
+ F9F6          ; NFKC_CF; 81E8           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F6
+ F9F7          ; NFKC_CF; 7ACB           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F7
+ F9F8          ; NFKC_CF; 7B20           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F8
+ F9F9          ; NFKC_CF; 7C92           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9F9
+ F9FA          ; NFKC_CF; 72C0           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FA
+ F9FB          ; NFKC_CF; 7099           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FB
+ F9FC          ; NFKC_CF; 8B58           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FC
+ F9FD          ; NFKC_CF; 4EC0           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FD
+ F9FE          ; NFKC_CF; 8336           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FE
+ F9FF          ; NFKC_CF; 523A           # Lo       CJK COMPATIBILITY IDEOGRAPH-F9FF
+ FA00          ; NFKC_CF; 5207           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA00
+ FA01          ; NFKC_CF; 5EA6           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA01
+ FA02          ; NFKC_CF; 62D3           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA02
+ FA03          ; NFKC_CF; 7CD6           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA03
+ FA04          ; NFKC_CF; 5B85           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA04
+ FA05          ; NFKC_CF; 6D1E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA05
+ FA06          ; NFKC_CF; 66B4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA06
+ FA07          ; NFKC_CF; 8F3B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA07
+ FA08          ; NFKC_CF; 884C           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA08
+ FA09          ; NFKC_CF; 964D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA09
+ FA0A          ; NFKC_CF; 898B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA0A
+ FA0B          ; NFKC_CF; 5ED3           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA0B
+ FA0C          ; NFKC_CF; 5140           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA0C
+ FA0D          ; NFKC_CF; 55C0           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; NFKC_CF; 585A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; NFKC_CF; 6674           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15          ; NFKC_CF; 51DE           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA15
+ FA16          ; NFKC_CF; 732A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA16
+ FA17          ; NFKC_CF; 76CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA17
+ FA18          ; NFKC_CF; 793C           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA18
+ FA19          ; NFKC_CF; 795E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA19
+ FA1A          ; NFKC_CF; 7965           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA1A
+ FA1B          ; NFKC_CF; 798F           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA1B
+ FA1C          ; NFKC_CF; 9756           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA1C
+ FA1D          ; NFKC_CF; 7CBE           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA1D
+ FA1E          ; NFKC_CF; 7FBD           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; NFKC_CF; 8612           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; NFKC_CF; 8AF8           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25          ; NFKC_CF; 9038           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA25
+ FA26          ; NFKC_CF; 90FD           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A          ; NFKC_CF; 98EF           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA2A
+ FA2B          ; NFKC_CF; 98FC           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA2B
+ FA2C          ; NFKC_CF; 9928           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA2C
+ FA2D          ; NFKC_CF; 9DB4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA2D
+ FA2E          ; NFKC_CF; 90DE           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA2E
+ FA2F          ; NFKC_CF; 96B7           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA2F
+ FA30          ; NFKC_CF; 4FAE           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA30
+ FA31          ; NFKC_CF; 50E7           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA31
+ FA32          ; NFKC_CF; 514D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA32
+ FA33          ; NFKC_CF; 52C9           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA33
+ FA34          ; NFKC_CF; 52E4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA34
+ FA35          ; NFKC_CF; 5351           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA35
+ FA36          ; NFKC_CF; 559D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA36
+ FA37          ; NFKC_CF; 5606           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA37
+ FA38          ; NFKC_CF; 5668           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA38
+ FA39          ; NFKC_CF; 5840           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA39
+ FA3A          ; NFKC_CF; 58A8           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA3A
+ FA3B          ; NFKC_CF; 5C64           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA3B
+ FA3C          ; NFKC_CF; 5C6E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA3C
+ FA3D          ; NFKC_CF; 6094           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA3D
+ FA3E          ; NFKC_CF; 6168           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA3E
+ FA3F          ; NFKC_CF; 618E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA3F
+ FA40          ; NFKC_CF; 61F2           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA40
+ FA41          ; NFKC_CF; 654F           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA41
+ FA42          ; NFKC_CF; 65E2           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA42
+ FA43          ; NFKC_CF; 6691           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA43
+ FA44          ; NFKC_CF; 6885           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA44
+ FA45          ; NFKC_CF; 6D77           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA45
+ FA46          ; NFKC_CF; 6E1A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA46
+ FA47          ; NFKC_CF; 6F22           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA47
+ FA48          ; NFKC_CF; 716E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA48
+ FA49          ; NFKC_CF; 722B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA49
+ FA4A          ; NFKC_CF; 7422           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA4A
+ FA4B          ; NFKC_CF; 7891           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA4B
+ FA4C          ; NFKC_CF; 793E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA4C
+ FA4D          ; NFKC_CF; 7949           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA4D
+ FA4E          ; NFKC_CF; 7948           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA4E
+ FA4F          ; NFKC_CF; 7950           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA4F
+ FA50          ; NFKC_CF; 7956           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA50
+ FA51          ; NFKC_CF; 795D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA51
+ FA52          ; NFKC_CF; 798D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA52
+ FA53          ; NFKC_CF; 798E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA53
+ FA54          ; NFKC_CF; 7A40           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA54
+ FA55          ; NFKC_CF; 7A81           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA55
+ FA56          ; NFKC_CF; 7BC0           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA56
+ FA57          ; NFKC_CF; 7DF4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA57
+ FA58          ; NFKC_CF; 7E09           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA58
+ FA59          ; NFKC_CF; 7E41           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA59
+ FA5A          ; NFKC_CF; 7F72           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA5A
+ FA5B          ; NFKC_CF; 8005           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA5B
+ FA5C          ; NFKC_CF; 81ED           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA5C
+ FA5D..FA5E    ; NFKC_CF; 8279           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA5D..CJK COMPATIBILITY IDEOGRAPH-FA5E
+ FA5F          ; NFKC_CF; 8457           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA5F
+ FA60          ; NFKC_CF; 8910           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA60
+ FA61          ; NFKC_CF; 8996           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA61
+ FA62          ; NFKC_CF; 8B01           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA62
+ FA63          ; NFKC_CF; 8B39           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA63
+ FA64          ; NFKC_CF; 8CD3           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA64
+ FA65          ; NFKC_CF; 8D08           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA65
+ FA66          ; NFKC_CF; 8FB6           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA66
+ FA67          ; NFKC_CF; 9038           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA67
+ FA68          ; NFKC_CF; 96E3           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA68
+ FA69          ; NFKC_CF; 97FF           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA69
+ FA6A          ; NFKC_CF; 983B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA6A
+ FA6B          ; NFKC_CF; 6075           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA6B
+ FA6C          ; NFKC_CF; 242EE          # Lo       CJK COMPATIBILITY IDEOGRAPH-FA6C
+ FA6D          ; NFKC_CF; 8218           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70          ; NFKC_CF; 4E26           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA70
+ FA71          ; NFKC_CF; 51B5           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA71
+ FA72          ; NFKC_CF; 5168           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA72
+ FA73          ; NFKC_CF; 4F80           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA73
+ FA74          ; NFKC_CF; 5145           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA74
+ FA75          ; NFKC_CF; 5180           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA75
+ FA76          ; NFKC_CF; 52C7           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA76
+ FA77          ; NFKC_CF; 52FA           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA77
+ FA78          ; NFKC_CF; 559D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA78
+ FA79          ; NFKC_CF; 5555           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA79
+ FA7A          ; NFKC_CF; 5599           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA7A
+ FA7B          ; NFKC_CF; 55E2           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA7B
+ FA7C          ; NFKC_CF; 585A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA7C
+ FA7D          ; NFKC_CF; 58B3           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA7D
+ FA7E          ; NFKC_CF; 5944           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA7E
+ FA7F          ; NFKC_CF; 5954           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA7F
+ FA80          ; NFKC_CF; 5A62           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA80
+ FA81          ; NFKC_CF; 5B28           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA81
+ FA82          ; NFKC_CF; 5ED2           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA82
+ FA83          ; NFKC_CF; 5ED9           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA83
+ FA84          ; NFKC_CF; 5F69           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA84
+ FA85          ; NFKC_CF; 5FAD           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA85
+ FA86          ; NFKC_CF; 60D8           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA86
+ FA87          ; NFKC_CF; 614E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA87
+ FA88          ; NFKC_CF; 6108           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA88
+ FA89          ; NFKC_CF; 618E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA89
+ FA8A          ; NFKC_CF; 6160           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA8A
+ FA8B          ; NFKC_CF; 61F2           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA8B
+ FA8C          ; NFKC_CF; 6234           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA8C
+ FA8D          ; NFKC_CF; 63C4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA8D
+ FA8E          ; NFKC_CF; 641C           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA8E
+ FA8F          ; NFKC_CF; 6452           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA8F
+ FA90          ; NFKC_CF; 6556           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA90
+ FA91          ; NFKC_CF; 6674           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA91
+ FA92          ; NFKC_CF; 6717           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA92
+ FA93          ; NFKC_CF; 671B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA93
+ FA94          ; NFKC_CF; 6756           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA94
+ FA95          ; NFKC_CF; 6B79           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA95
+ FA96          ; NFKC_CF; 6BBA           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA96
+ FA97          ; NFKC_CF; 6D41           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA97
+ FA98          ; NFKC_CF; 6EDB           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA98
+ FA99          ; NFKC_CF; 6ECB           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA99
+ FA9A          ; NFKC_CF; 6F22           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA9A
+ FA9B          ; NFKC_CF; 701E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA9B
+ FA9C          ; NFKC_CF; 716E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA9C
+ FA9D          ; NFKC_CF; 77A7           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA9D
+ FA9E          ; NFKC_CF; 7235           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA9E
+ FA9F          ; NFKC_CF; 72AF           # Lo       CJK COMPATIBILITY IDEOGRAPH-FA9F
+ FAA0          ; NFKC_CF; 732A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA0
+ FAA1          ; NFKC_CF; 7471           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA1
+ FAA2          ; NFKC_CF; 7506           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA2
+ FAA3          ; NFKC_CF; 753B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA3
+ FAA4          ; NFKC_CF; 761D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA4
+ FAA5          ; NFKC_CF; 761F           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA5
+ FAA6          ; NFKC_CF; 76CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA6
+ FAA7          ; NFKC_CF; 76DB           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA7
+ FAA8          ; NFKC_CF; 76F4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA8
+ FAA9          ; NFKC_CF; 774A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAA9
+ FAAA          ; NFKC_CF; 7740           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAAA
+ FAAB          ; NFKC_CF; 78CC           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAAB
+ FAAC          ; NFKC_CF; 7AB1           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAAC
+ FAAD          ; NFKC_CF; 7BC0           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAAD
+ FAAE          ; NFKC_CF; 7C7B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAAE
+ FAAF          ; NFKC_CF; 7D5B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAAF
+ FAB0          ; NFKC_CF; 7DF4           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB0
+ FAB1          ; NFKC_CF; 7F3E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB1
+ FAB2          ; NFKC_CF; 8005           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB2
+ FAB3          ; NFKC_CF; 8352           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB3
+ FAB4          ; NFKC_CF; 83EF           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB4
+ FAB5          ; NFKC_CF; 8779           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB5
+ FAB6          ; NFKC_CF; 8941           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB6
+ FAB7          ; NFKC_CF; 8986           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB7
+ FAB8          ; NFKC_CF; 8996           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB8
+ FAB9          ; NFKC_CF; 8ABF           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAB9
+ FABA          ; NFKC_CF; 8AF8           # Lo       CJK COMPATIBILITY IDEOGRAPH-FABA
+ FABB          ; NFKC_CF; 8ACB           # Lo       CJK COMPATIBILITY IDEOGRAPH-FABB
+ FABC          ; NFKC_CF; 8B01           # Lo       CJK COMPATIBILITY IDEOGRAPH-FABC
+ FABD          ; NFKC_CF; 8AFE           # Lo       CJK COMPATIBILITY IDEOGRAPH-FABD
+ FABE          ; NFKC_CF; 8AED           # Lo       CJK COMPATIBILITY IDEOGRAPH-FABE
+ FABF          ; NFKC_CF; 8B39           # Lo       CJK COMPATIBILITY IDEOGRAPH-FABF
+ FAC0          ; NFKC_CF; 8B8A           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC0
+ FAC1          ; NFKC_CF; 8D08           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC1
+ FAC2          ; NFKC_CF; 8F38           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC2
+ FAC3          ; NFKC_CF; 9072           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC3
+ FAC4          ; NFKC_CF; 9199           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC4
+ FAC5          ; NFKC_CF; 9276           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC5
+ FAC6          ; NFKC_CF; 967C           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC6
+ FAC7          ; NFKC_CF; 96E3           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC7
+ FAC8          ; NFKC_CF; 9756           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC8
+ FAC9          ; NFKC_CF; 97DB           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAC9
+ FACA          ; NFKC_CF; 97FF           # Lo       CJK COMPATIBILITY IDEOGRAPH-FACA
+ FACB          ; NFKC_CF; 980B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FACB
+ FACC          ; NFKC_CF; 983B           # Lo       CJK COMPATIBILITY IDEOGRAPH-FACC
+ FACD          ; NFKC_CF; 9B12           # Lo       CJK COMPATIBILITY IDEOGRAPH-FACD
+ FACE          ; NFKC_CF; 9F9C           # Lo       CJK COMPATIBILITY IDEOGRAPH-FACE
+ FACF          ; NFKC_CF; 2284A          # Lo       CJK COMPATIBILITY IDEOGRAPH-FACF
+ FAD0          ; NFKC_CF; 22844          # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD0
+ FAD1          ; NFKC_CF; 233D5          # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD1
+ FAD2          ; NFKC_CF; 3B9D           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD2
+ FAD3          ; NFKC_CF; 4018           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD3
+ FAD4          ; NFKC_CF; 4039           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD4
+ FAD5          ; NFKC_CF; 25249          # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD5
+ FAD6          ; NFKC_CF; 25CD0          # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD6
+ FAD7          ; NFKC_CF; 27ED3          # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD7
+ FAD8          ; NFKC_CF; 9F43           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD8
+ FAD9          ; NFKC_CF; 9F8E           # Lo       CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00          ; NFKC_CF; 0066 0066      # L&       LATIN SMALL LIGATURE FF
+ FB01          ; NFKC_CF; 0066 0069      # L&       LATIN SMALL LIGATURE FI
+ FB02          ; NFKC_CF; 0066 006C      # L&       LATIN SMALL LIGATURE FL
+ FB03          ; NFKC_CF; 0066 0066 0069 # L&       LATIN SMALL LIGATURE FFI
+ FB04          ; NFKC_CF; 0066 0066 006C # L&       LATIN SMALL LIGATURE FFL
+ FB05..FB06    ; NFKC_CF; 0073 0074      # L&   [2] LATIN SMALL LIGATURE LONG S T..LATIN SMALL LIGATURE ST
+ FB13          ; NFKC_CF; 0574 0576      # L&       ARMENIAN SMALL LIGATURE MEN NOW
+ FB14          ; NFKC_CF; 0574 0565      # L&       ARMENIAN SMALL LIGATURE MEN ECH
+ FB15          ; NFKC_CF; 0574 056B      # L&       ARMENIAN SMALL LIGATURE MEN INI
+ FB16          ; NFKC_CF; 057E 0576      # L&       ARMENIAN SMALL LIGATURE VEW NOW
+ FB17          ; NFKC_CF; 0574 056D      # L&       ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; NFKC_CF; 05D9 05B4      # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F          ; NFKC_CF; 05F2 05B7      # Lo       HEBREW LIGATURE YIDDISH YOD YOD PATAH
+ FB20          ; NFKC_CF; 05E2           # Lo       HEBREW LETTER ALTERNATIVE AYIN
+ FB21          ; NFKC_CF; 05D0           # Lo       HEBREW LETTER WIDE ALEF
+ FB22          ; NFKC_CF; 05D3           # Lo       HEBREW LETTER WIDE DALET
+ FB23          ; NFKC_CF; 05D4           # Lo       HEBREW LETTER WIDE HE
+ FB24          ; NFKC_CF; 05DB           # Lo       HEBREW LETTER WIDE KAF
+ FB25          ; NFKC_CF; 05DC           # Lo       HEBREW LETTER WIDE LAMED
+ FB26          ; NFKC_CF; 05DD           # Lo       HEBREW LETTER WIDE FINAL MEM
+ FB27          ; NFKC_CF; 05E8           # Lo       HEBREW LETTER WIDE RESH
+ FB28          ; NFKC_CF; 05EA           # Lo       HEBREW LETTER WIDE TAV
+ FB29          ; NFKC_CF; 002B           # Sm       HEBREW LETTER ALTERNATIVE PLUS SIGN
+ FB2A          ; NFKC_CF; 05E9 05C1      # Lo       HEBREW LETTER SHIN WITH SHIN DOT
+ FB2B          ; NFKC_CF; 05E9 05C2      # Lo       HEBREW LETTER SHIN WITH SIN DOT
+ FB2C          ; NFKC_CF; 05E9 05BC 05C1 # Lo       HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+ FB2D          ; NFKC_CF; 05E9 05BC 05C2 # Lo       HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+ FB2E          ; NFKC_CF; 05D0 05B7      # Lo       HEBREW LETTER ALEF WITH PATAH
+ FB2F          ; NFKC_CF; 05D0 05B8      # Lo       HEBREW LETTER ALEF WITH QAMATS
+ FB30          ; NFKC_CF; 05D0 05BC      # Lo       HEBREW LETTER ALEF WITH MAPIQ
+ FB31          ; NFKC_CF; 05D1 05BC      # Lo       HEBREW LETTER BET WITH DAGESH
+ FB32          ; NFKC_CF; 05D2 05BC      # Lo       HEBREW LETTER GIMEL WITH DAGESH
+ FB33          ; NFKC_CF; 05D3 05BC      # Lo       HEBREW LETTER DALET WITH DAGESH
+ FB34          ; NFKC_CF; 05D4 05BC      # Lo       HEBREW LETTER HE WITH MAPIQ
+ FB35          ; NFKC_CF; 05D5 05BC      # Lo       HEBREW LETTER VAV WITH DAGESH
+ FB36          ; NFKC_CF; 05D6 05BC      # Lo       HEBREW LETTER ZAYIN WITH DAGESH
+ FB38          ; NFKC_CF; 05D8 05BC      # Lo       HEBREW LETTER TET WITH DAGESH
+ FB39          ; NFKC_CF; 05D9 05BC      # Lo       HEBREW LETTER YOD WITH DAGESH
+ FB3A          ; NFKC_CF; 05DA 05BC      # Lo       HEBREW LETTER FINAL KAF WITH DAGESH
+ FB3B          ; NFKC_CF; 05DB 05BC      # Lo       HEBREW LETTER KAF WITH DAGESH
+ FB3C          ; NFKC_CF; 05DC 05BC      # Lo       HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; NFKC_CF; 05DE 05BC      # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40          ; NFKC_CF; 05E0 05BC      # Lo       HEBREW LETTER NUN WITH DAGESH
+ FB41          ; NFKC_CF; 05E1 05BC      # Lo       HEBREW LETTER SAMEKH WITH DAGESH
+ FB43          ; NFKC_CF; 05E3 05BC      # Lo       HEBREW LETTER FINAL PE WITH DAGESH
+ FB44          ; NFKC_CF; 05E4 05BC      # Lo       HEBREW LETTER PE WITH DAGESH
+ FB46          ; NFKC_CF; 05E6 05BC      # Lo       HEBREW LETTER TSADI WITH DAGESH
+ FB47          ; NFKC_CF; 05E7 05BC      # Lo       HEBREW LETTER QOF WITH DAGESH
+ FB48          ; NFKC_CF; 05E8 05BC      # Lo       HEBREW LETTER RESH WITH DAGESH
+ FB49          ; NFKC_CF; 05E9 05BC      # Lo       HEBREW LETTER SHIN WITH DAGESH
+ FB4A          ; NFKC_CF; 05EA 05BC      # Lo       HEBREW LETTER TAV WITH DAGESH
+ FB4B          ; NFKC_CF; 05D5 05B9      # Lo       HEBREW LETTER VAV WITH HOLAM
+ FB4C          ; NFKC_CF; 05D1 05BF      # Lo       HEBREW LETTER BET WITH RAFE
+ FB4D          ; NFKC_CF; 05DB 05BF      # Lo       HEBREW LETTER KAF WITH RAFE
+ FB4E          ; NFKC_CF; 05E4 05BF      # Lo       HEBREW LETTER PE WITH RAFE
+ FB4F          ; NFKC_CF; 05D0 05DC      # Lo       HEBREW LIGATURE ALEF LAMED
+ FB50..FB51    ; NFKC_CF; 0671           # Lo   [2] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER ALEF WASLA FINAL FORM
+ FB52..FB55    ; NFKC_CF; 067B           # Lo   [4] ARABIC LETTER BEEH ISOLATED FORM..ARABIC LETTER BEEH MEDIAL FORM
+ FB56..FB59    ; NFKC_CF; 067E           # Lo   [4] ARABIC LETTER PEH ISOLATED FORM..ARABIC LETTER PEH MEDIAL FORM
+ FB5A..FB5D    ; NFKC_CF; 0680           # Lo   [4] ARABIC LETTER BEHEH ISOLATED FORM..ARABIC LETTER BEHEH MEDIAL FORM
+ FB5E..FB61    ; NFKC_CF; 067A           # Lo   [4] ARABIC LETTER TTEHEH ISOLATED FORM..ARABIC LETTER TTEHEH MEDIAL FORM
+ FB62..FB65    ; NFKC_CF; 067F           # Lo   [4] ARABIC LETTER TEHEH ISOLATED FORM..ARABIC LETTER TEHEH MEDIAL FORM
+ FB66..FB69    ; NFKC_CF; 0679           # Lo   [4] ARABIC LETTER TTEH ISOLATED FORM..ARABIC LETTER TTEH MEDIAL FORM
+ FB6A..FB6D    ; NFKC_CF; 06A4           # Lo   [4] ARABIC LETTER VEH ISOLATED FORM..ARABIC LETTER VEH MEDIAL FORM
+ FB6E..FB71    ; NFKC_CF; 06A6           # Lo   [4] ARABIC LETTER PEHEH ISOLATED FORM..ARABIC LETTER PEHEH MEDIAL FORM
+ FB72..FB75    ; NFKC_CF; 0684           # Lo   [4] ARABIC LETTER DYEH ISOLATED FORM..ARABIC LETTER DYEH MEDIAL FORM
+ FB76..FB79    ; NFKC_CF; 0683           # Lo   [4] ARABIC LETTER NYEH ISOLATED FORM..ARABIC LETTER NYEH MEDIAL FORM
+ FB7A..FB7D    ; NFKC_CF; 0686           # Lo   [4] ARABIC LETTER TCHEH ISOLATED FORM..ARABIC LETTER TCHEH MEDIAL FORM
+ FB7E..FB81    ; NFKC_CF; 0687           # Lo   [4] ARABIC LETTER TCHEHEH ISOLATED FORM..ARABIC LETTER TCHEHEH MEDIAL FORM
+ FB82..FB83    ; NFKC_CF; 068D           # Lo   [2] ARABIC LETTER DDAHAL ISOLATED FORM..ARABIC LETTER DDAHAL FINAL FORM
+ FB84..FB85    ; NFKC_CF; 068C           # Lo   [2] ARABIC LETTER DAHAL ISOLATED FORM..ARABIC LETTER DAHAL FINAL FORM
+ FB86..FB87    ; NFKC_CF; 068E           # Lo   [2] ARABIC LETTER DUL ISOLATED FORM..ARABIC LETTER DUL FINAL FORM
+ FB88..FB89    ; NFKC_CF; 0688           # Lo   [2] ARABIC LETTER DDAL ISOLATED FORM..ARABIC LETTER DDAL FINAL FORM
+ FB8A..FB8B    ; NFKC_CF; 0698           # Lo   [2] ARABIC LETTER JEH ISOLATED FORM..ARABIC LETTER JEH FINAL FORM
+ FB8C..FB8D    ; NFKC_CF; 0691           # Lo   [2] ARABIC LETTER RREH ISOLATED FORM..ARABIC LETTER RREH FINAL FORM
+ FB8E..FB91    ; NFKC_CF; 06A9           # Lo   [4] ARABIC LETTER KEHEH ISOLATED FORM..ARABIC LETTER KEHEH MEDIAL FORM
+ FB92..FB95    ; NFKC_CF; 06AF           # Lo   [4] ARABIC LETTER GAF ISOLATED FORM..ARABIC LETTER GAF MEDIAL FORM
+ FB96..FB99    ; NFKC_CF; 06B3           # Lo   [4] ARABIC LETTER GUEH ISOLATED FORM..ARABIC LETTER GUEH MEDIAL FORM
+ FB9A..FB9D    ; NFKC_CF; 06B1           # Lo   [4] ARABIC LETTER NGOEH ISOLATED FORM..ARABIC LETTER NGOEH MEDIAL FORM
+ FB9E..FB9F    ; NFKC_CF; 06BA           # Lo   [2] ARABIC LETTER NOON GHUNNA ISOLATED FORM..ARABIC LETTER NOON GHUNNA FINAL FORM
+ FBA0..FBA3    ; NFKC_CF; 06BB           # Lo   [4] ARABIC LETTER RNOON ISOLATED FORM..ARABIC LETTER RNOON MEDIAL FORM
+ FBA4..FBA5    ; NFKC_CF; 06C0           # Lo   [2] ARABIC LETTER HEH WITH YEH ABOVE ISOLATED FORM..ARABIC LETTER HEH WITH YEH ABOVE FINAL FORM
+ FBA6..FBA9    ; NFKC_CF; 06C1           # Lo   [4] ARABIC LETTER HEH GOAL ISOLATED FORM..ARABIC LETTER HEH GOAL MEDIAL FORM
+ FBAA..FBAD    ; NFKC_CF; 06BE           # Lo   [4] ARABIC LETTER HEH DOACHASHMEE ISOLATED FORM..ARABIC LETTER HEH DOACHASHMEE MEDIAL FORM
+ FBAE..FBAF    ; NFKC_CF; 06D2           # Lo   [2] ARABIC LETTER YEH BARREE ISOLATED FORM..ARABIC LETTER YEH BARREE FINAL FORM
+ FBB0..FBB1    ; NFKC_CF; 06D3           # Lo   [2] ARABIC LETTER YEH BARREE WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FBD6    ; NFKC_CF; 06AD           # Lo   [4] ARABIC LETTER NG ISOLATED FORM..ARABIC LETTER NG MEDIAL FORM
+ FBD7..FBD8    ; NFKC_CF; 06C7           # Lo   [2] ARABIC LETTER U ISOLATED FORM..ARABIC LETTER U FINAL FORM
+ FBD9..FBDA    ; NFKC_CF; 06C6           # Lo   [2] ARABIC LETTER OE ISOLATED FORM..ARABIC LETTER OE FINAL FORM
+ FBDB..FBDC    ; NFKC_CF; 06C8           # Lo   [2] ARABIC LETTER YU ISOLATED FORM..ARABIC LETTER YU FINAL FORM
+ FBDD          ; NFKC_CF; 06C7 0674      # Lo       ARABIC LETTER U WITH HAMZA ABOVE ISOLATED FORM
+ FBDE..FBDF    ; NFKC_CF; 06CB           # Lo   [2] ARABIC LETTER VE ISOLATED FORM..ARABIC LETTER VE FINAL FORM
+ FBE0..FBE1    ; NFKC_CF; 06C5           # Lo   [2] ARABIC LETTER KIRGHIZ OE ISOLATED FORM..ARABIC LETTER KIRGHIZ OE FINAL FORM
+ FBE2..FBE3    ; NFKC_CF; 06C9           # Lo   [2] ARABIC LETTER KIRGHIZ YU ISOLATED FORM..ARABIC LETTER KIRGHIZ YU FINAL FORM
+ FBE4..FBE7    ; NFKC_CF; 06D0           # Lo   [4] ARABIC LETTER E ISOLATED FORM..ARABIC LETTER E MEDIAL FORM
+ FBE8..FBE9    ; NFKC_CF; 0649           # Lo   [2] ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA INITIAL FORM..ARABIC LETTER UIGHUR KAZAKH KIRGHIZ ALEF MAKSURA MEDIAL FORM
+ FBEA..FBEB    ; NFKC_CF; 0626 0627      # Lo   [2] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF FINAL FORM
+ FBEC..FBED    ; NFKC_CF; 0626 06D5      # Lo   [2] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH AE FINAL FORM
+ FBEE..FBEF    ; NFKC_CF; 0626 0648      # Lo   [2] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH WAW FINAL FORM
+ FBF0..FBF1    ; NFKC_CF; 0626 06C7      # Lo   [2] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH U FINAL FORM
+ FBF2..FBF3    ; NFKC_CF; 0626 06C6      # Lo   [2] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH OE FINAL FORM
+ FBF4..FBF5    ; NFKC_CF; 0626 06C8      # Lo   [2] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YU FINAL FORM
+ FBF6..FBF8    ; NFKC_CF; 0626 06D0      # Lo   [3] ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E ISOLATED FORM..ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH E INITIAL FORM
+ FBF9..FBFB    ; NFKC_CF; 0626 0649      # Lo   [3] ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM..ARABIC LIGATURE UIGHUR KIRGHIZ YEH WITH HAMZA ABOVE WITH ALEF MAKSURA INITIAL FORM
+ FBFC..FBFF    ; NFKC_CF; 06CC           # Lo   [4] ARABIC LETTER FARSI YEH ISOLATED FORM..ARABIC LETTER FARSI YEH MEDIAL FORM
+ FC00          ; NFKC_CF; 0626 062C      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM ISOLATED FORM
+ FC01          ; NFKC_CF; 0626 062D      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH ISOLATED FORM
+ FC02          ; NFKC_CF; 0626 0645      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM ISOLATED FORM
+ FC03          ; NFKC_CF; 0626 0649      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA ISOLATED FORM
+ FC04          ; NFKC_CF; 0626 064A      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH ISOLATED FORM
+ FC05          ; NFKC_CF; 0628 062C      # Lo       ARABIC LIGATURE BEH WITH JEEM ISOLATED FORM
+ FC06          ; NFKC_CF; 0628 062D      # Lo       ARABIC LIGATURE BEH WITH HAH ISOLATED FORM
+ FC07          ; NFKC_CF; 0628 062E      # Lo       ARABIC LIGATURE BEH WITH KHAH ISOLATED FORM
+ FC08          ; NFKC_CF; 0628 0645      # Lo       ARABIC LIGATURE BEH WITH MEEM ISOLATED FORM
+ FC09          ; NFKC_CF; 0628 0649      # Lo       ARABIC LIGATURE BEH WITH ALEF MAKSURA ISOLATED FORM
+ FC0A          ; NFKC_CF; 0628 064A      # Lo       ARABIC LIGATURE BEH WITH YEH ISOLATED FORM
+ FC0B          ; NFKC_CF; 062A 062C      # Lo       ARABIC LIGATURE TEH WITH JEEM ISOLATED FORM
+ FC0C          ; NFKC_CF; 062A 062D      # Lo       ARABIC LIGATURE TEH WITH HAH ISOLATED FORM
+ FC0D          ; NFKC_CF; 062A 062E      # Lo       ARABIC LIGATURE TEH WITH KHAH ISOLATED FORM
+ FC0E          ; NFKC_CF; 062A 0645      # Lo       ARABIC LIGATURE TEH WITH MEEM ISOLATED FORM
+ FC0F          ; NFKC_CF; 062A 0649      # Lo       ARABIC LIGATURE TEH WITH ALEF MAKSURA ISOLATED FORM
+ FC10          ; NFKC_CF; 062A 064A      # Lo       ARABIC LIGATURE TEH WITH YEH ISOLATED FORM
+ FC11          ; NFKC_CF; 062B 062C      # Lo       ARABIC LIGATURE THEH WITH JEEM ISOLATED FORM
+ FC12          ; NFKC_CF; 062B 0645      # Lo       ARABIC LIGATURE THEH WITH MEEM ISOLATED FORM
+ FC13          ; NFKC_CF; 062B 0649      # Lo       ARABIC LIGATURE THEH WITH ALEF MAKSURA ISOLATED FORM
+ FC14          ; NFKC_CF; 062B 064A      # Lo       ARABIC LIGATURE THEH WITH YEH ISOLATED FORM
+ FC15          ; NFKC_CF; 062C 062D      # Lo       ARABIC LIGATURE JEEM WITH HAH ISOLATED FORM
+ FC16          ; NFKC_CF; 062C 0645      # Lo       ARABIC LIGATURE JEEM WITH MEEM ISOLATED FORM
+ FC17          ; NFKC_CF; 062D 062C      # Lo       ARABIC LIGATURE HAH WITH JEEM ISOLATED FORM
+ FC18          ; NFKC_CF; 062D 0645      # Lo       ARABIC LIGATURE HAH WITH MEEM ISOLATED FORM
+ FC19          ; NFKC_CF; 062E 062C      # Lo       ARABIC LIGATURE KHAH WITH JEEM ISOLATED FORM
+ FC1A          ; NFKC_CF; 062E 062D      # Lo       ARABIC LIGATURE KHAH WITH HAH ISOLATED FORM
+ FC1B          ; NFKC_CF; 062E 0645      # Lo       ARABIC LIGATURE KHAH WITH MEEM ISOLATED FORM
+ FC1C          ; NFKC_CF; 0633 062C      # Lo       ARABIC LIGATURE SEEN WITH JEEM ISOLATED FORM
+ FC1D          ; NFKC_CF; 0633 062D      # Lo       ARABIC LIGATURE SEEN WITH HAH ISOLATED FORM
+ FC1E          ; NFKC_CF; 0633 062E      # Lo       ARABIC LIGATURE SEEN WITH KHAH ISOLATED FORM
+ FC1F          ; NFKC_CF; 0633 0645      # Lo       ARABIC LIGATURE SEEN WITH MEEM ISOLATED FORM
+ FC20          ; NFKC_CF; 0635 062D      # Lo       ARABIC LIGATURE SAD WITH HAH ISOLATED FORM
+ FC21          ; NFKC_CF; 0635 0645      # Lo       ARABIC LIGATURE SAD WITH MEEM ISOLATED FORM
+ FC22          ; NFKC_CF; 0636 062C      # Lo       ARABIC LIGATURE DAD WITH JEEM ISOLATED FORM
+ FC23          ; NFKC_CF; 0636 062D      # Lo       ARABIC LIGATURE DAD WITH HAH ISOLATED FORM
+ FC24          ; NFKC_CF; 0636 062E      # Lo       ARABIC LIGATURE DAD WITH KHAH ISOLATED FORM
+ FC25          ; NFKC_CF; 0636 0645      # Lo       ARABIC LIGATURE DAD WITH MEEM ISOLATED FORM
+ FC26          ; NFKC_CF; 0637 062D      # Lo       ARABIC LIGATURE TAH WITH HAH ISOLATED FORM
+ FC27          ; NFKC_CF; 0637 0645      # Lo       ARABIC LIGATURE TAH WITH MEEM ISOLATED FORM
+ FC28          ; NFKC_CF; 0638 0645      # Lo       ARABIC LIGATURE ZAH WITH MEEM ISOLATED FORM
+ FC29          ; NFKC_CF; 0639 062C      # Lo       ARABIC LIGATURE AIN WITH JEEM ISOLATED FORM
+ FC2A          ; NFKC_CF; 0639 0645      # Lo       ARABIC LIGATURE AIN WITH MEEM ISOLATED FORM
+ FC2B          ; NFKC_CF; 063A 062C      # Lo       ARABIC LIGATURE GHAIN WITH JEEM ISOLATED FORM
+ FC2C          ; NFKC_CF; 063A 0645      # Lo       ARABIC LIGATURE GHAIN WITH MEEM ISOLATED FORM
+ FC2D          ; NFKC_CF; 0641 062C      # Lo       ARABIC LIGATURE FEH WITH JEEM ISOLATED FORM
+ FC2E          ; NFKC_CF; 0641 062D      # Lo       ARABIC LIGATURE FEH WITH HAH ISOLATED FORM
+ FC2F          ; NFKC_CF; 0641 062E      # Lo       ARABIC LIGATURE FEH WITH KHAH ISOLATED FORM
+ FC30          ; NFKC_CF; 0641 0645      # Lo       ARABIC LIGATURE FEH WITH MEEM ISOLATED FORM
+ FC31          ; NFKC_CF; 0641 0649      # Lo       ARABIC LIGATURE FEH WITH ALEF MAKSURA ISOLATED FORM
+ FC32          ; NFKC_CF; 0641 064A      # Lo       ARABIC LIGATURE FEH WITH YEH ISOLATED FORM
+ FC33          ; NFKC_CF; 0642 062D      # Lo       ARABIC LIGATURE QAF WITH HAH ISOLATED FORM
+ FC34          ; NFKC_CF; 0642 0645      # Lo       ARABIC LIGATURE QAF WITH MEEM ISOLATED FORM
+ FC35          ; NFKC_CF; 0642 0649      # Lo       ARABIC LIGATURE QAF WITH ALEF MAKSURA ISOLATED FORM
+ FC36          ; NFKC_CF; 0642 064A      # Lo       ARABIC LIGATURE QAF WITH YEH ISOLATED FORM
+ FC37          ; NFKC_CF; 0643 0627      # Lo       ARABIC LIGATURE KAF WITH ALEF ISOLATED FORM
+ FC38          ; NFKC_CF; 0643 062C      # Lo       ARABIC LIGATURE KAF WITH JEEM ISOLATED FORM
+ FC39          ; NFKC_CF; 0643 062D      # Lo       ARABIC LIGATURE KAF WITH HAH ISOLATED FORM
+ FC3A          ; NFKC_CF; 0643 062E      # Lo       ARABIC LIGATURE KAF WITH KHAH ISOLATED FORM
+ FC3B          ; NFKC_CF; 0643 0644      # Lo       ARABIC LIGATURE KAF WITH LAM ISOLATED FORM
+ FC3C          ; NFKC_CF; 0643 0645      # Lo       ARABIC LIGATURE KAF WITH MEEM ISOLATED FORM
+ FC3D          ; NFKC_CF; 0643 0649      # Lo       ARABIC LIGATURE KAF WITH ALEF MAKSURA ISOLATED FORM
+ FC3E          ; NFKC_CF; 0643 064A      # Lo       ARABIC LIGATURE KAF WITH YEH ISOLATED FORM
+ FC3F          ; NFKC_CF; 0644 062C      # Lo       ARABIC LIGATURE LAM WITH JEEM ISOLATED FORM
+ FC40          ; NFKC_CF; 0644 062D      # Lo       ARABIC LIGATURE LAM WITH HAH ISOLATED FORM
+ FC41          ; NFKC_CF; 0644 062E      # Lo       ARABIC LIGATURE LAM WITH KHAH ISOLATED FORM
+ FC42          ; NFKC_CF; 0644 0645      # Lo       ARABIC LIGATURE LAM WITH MEEM ISOLATED FORM
+ FC43          ; NFKC_CF; 0644 0649      # Lo       ARABIC LIGATURE LAM WITH ALEF MAKSURA ISOLATED FORM
+ FC44          ; NFKC_CF; 0644 064A      # Lo       ARABIC LIGATURE LAM WITH YEH ISOLATED FORM
+ FC45          ; NFKC_CF; 0645 062C      # Lo       ARABIC LIGATURE MEEM WITH JEEM ISOLATED FORM
+ FC46          ; NFKC_CF; 0645 062D      # Lo       ARABIC LIGATURE MEEM WITH HAH ISOLATED FORM
+ FC47          ; NFKC_CF; 0645 062E      # Lo       ARABIC LIGATURE MEEM WITH KHAH ISOLATED FORM
+ FC48          ; NFKC_CF; 0645 0645      # Lo       ARABIC LIGATURE MEEM WITH MEEM ISOLATED FORM
+ FC49          ; NFKC_CF; 0645 0649      # Lo       ARABIC LIGATURE MEEM WITH ALEF MAKSURA ISOLATED FORM
+ FC4A          ; NFKC_CF; 0645 064A      # Lo       ARABIC LIGATURE MEEM WITH YEH ISOLATED FORM
+ FC4B          ; NFKC_CF; 0646 062C      # Lo       ARABIC LIGATURE NOON WITH JEEM ISOLATED FORM
+ FC4C          ; NFKC_CF; 0646 062D      # Lo       ARABIC LIGATURE NOON WITH HAH ISOLATED FORM
+ FC4D          ; NFKC_CF; 0646 062E      # Lo       ARABIC LIGATURE NOON WITH KHAH ISOLATED FORM
+ FC4E          ; NFKC_CF; 0646 0645      # Lo       ARABIC LIGATURE NOON WITH MEEM ISOLATED FORM
+ FC4F          ; NFKC_CF; 0646 0649      # Lo       ARABIC LIGATURE NOON WITH ALEF MAKSURA ISOLATED FORM
+ FC50          ; NFKC_CF; 0646 064A      # Lo       ARABIC LIGATURE NOON WITH YEH ISOLATED FORM
+ FC51          ; NFKC_CF; 0647 062C      # Lo       ARABIC LIGATURE HEH WITH JEEM ISOLATED FORM
+ FC52          ; NFKC_CF; 0647 0645      # Lo       ARABIC LIGATURE HEH WITH MEEM ISOLATED FORM
+ FC53          ; NFKC_CF; 0647 0649      # Lo       ARABIC LIGATURE HEH WITH ALEF MAKSURA ISOLATED FORM
+ FC54          ; NFKC_CF; 0647 064A      # Lo       ARABIC LIGATURE HEH WITH YEH ISOLATED FORM
+ FC55          ; NFKC_CF; 064A 062C      # Lo       ARABIC LIGATURE YEH WITH JEEM ISOLATED FORM
+ FC56          ; NFKC_CF; 064A 062D      # Lo       ARABIC LIGATURE YEH WITH HAH ISOLATED FORM
+ FC57          ; NFKC_CF; 064A 062E      # Lo       ARABIC LIGATURE YEH WITH KHAH ISOLATED FORM
+ FC58          ; NFKC_CF; 064A 0645      # Lo       ARABIC LIGATURE YEH WITH MEEM ISOLATED FORM
+ FC59          ; NFKC_CF; 064A 0649      # Lo       ARABIC LIGATURE YEH WITH ALEF MAKSURA ISOLATED FORM
+ FC5A          ; NFKC_CF; 064A 064A      # Lo       ARABIC LIGATURE YEH WITH YEH ISOLATED FORM
+ FC5B          ; NFKC_CF; 0630 0670      # Lo       ARABIC LIGATURE THAL WITH SUPERSCRIPT ALEF ISOLATED FORM
+ FC5C          ; NFKC_CF; 0631 0670      # Lo       ARABIC LIGATURE REH WITH SUPERSCRIPT ALEF ISOLATED FORM
+ FC5D          ; NFKC_CF; 0649 0670      # Lo       ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ FC5E          ; NFKC_CF; 0020 064C 0651 # Lo       ARABIC LIGATURE SHADDA WITH DAMMATAN ISOLATED FORM
+ FC5F          ; NFKC_CF; 0020 064D 0651 # Lo       ARABIC LIGATURE SHADDA WITH KASRATAN ISOLATED FORM
+ FC60          ; NFKC_CF; 0020 064E 0651 # Lo       ARABIC LIGATURE SHADDA WITH FATHA ISOLATED FORM
+ FC61          ; NFKC_CF; 0020 064F 0651 # Lo       ARABIC LIGATURE SHADDA WITH DAMMA ISOLATED FORM
+ FC62          ; NFKC_CF; 0020 0650 0651 # Lo       ARABIC LIGATURE SHADDA WITH KASRA ISOLATED FORM
+ FC63          ; NFKC_CF; 0020 0651 0670 # Lo       ARABIC LIGATURE SHADDA WITH SUPERSCRIPT ALEF ISOLATED FORM
+ FC64          ; NFKC_CF; 0626 0631      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH REH FINAL FORM
+ FC65          ; NFKC_CF; 0626 0632      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ZAIN FINAL FORM
+ FC66          ; NFKC_CF; 0626 0645      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM FINAL FORM
+ FC67          ; NFKC_CF; 0626 0646      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH NOON FINAL FORM
+ FC68          ; NFKC_CF; 0626 0649      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH ALEF MAKSURA FINAL FORM
+ FC69          ; NFKC_CF; 0626 064A      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH YEH FINAL FORM
+ FC6A          ; NFKC_CF; 0628 0631      # Lo       ARABIC LIGATURE BEH WITH REH FINAL FORM
+ FC6B          ; NFKC_CF; 0628 0632      # Lo       ARABIC LIGATURE BEH WITH ZAIN FINAL FORM
+ FC6C          ; NFKC_CF; 0628 0645      # Lo       ARABIC LIGATURE BEH WITH MEEM FINAL FORM
+ FC6D          ; NFKC_CF; 0628 0646      # Lo       ARABIC LIGATURE BEH WITH NOON FINAL FORM
+ FC6E          ; NFKC_CF; 0628 0649      # Lo       ARABIC LIGATURE BEH WITH ALEF MAKSURA FINAL FORM
+ FC6F          ; NFKC_CF; 0628 064A      # Lo       ARABIC LIGATURE BEH WITH YEH FINAL FORM
+ FC70          ; NFKC_CF; 062A 0631      # Lo       ARABIC LIGATURE TEH WITH REH FINAL FORM
+ FC71          ; NFKC_CF; 062A 0632      # Lo       ARABIC LIGATURE TEH WITH ZAIN FINAL FORM
+ FC72          ; NFKC_CF; 062A 0645      # Lo       ARABIC LIGATURE TEH WITH MEEM FINAL FORM
+ FC73          ; NFKC_CF; 062A 0646      # Lo       ARABIC LIGATURE TEH WITH NOON FINAL FORM
+ FC74          ; NFKC_CF; 062A 0649      # Lo       ARABIC LIGATURE TEH WITH ALEF MAKSURA FINAL FORM
+ FC75          ; NFKC_CF; 062A 064A      # Lo       ARABIC LIGATURE TEH WITH YEH FINAL FORM
+ FC76          ; NFKC_CF; 062B 0631      # Lo       ARABIC LIGATURE THEH WITH REH FINAL FORM
+ FC77          ; NFKC_CF; 062B 0632      # Lo       ARABIC LIGATURE THEH WITH ZAIN FINAL FORM
+ FC78          ; NFKC_CF; 062B 0645      # Lo       ARABIC LIGATURE THEH WITH MEEM FINAL FORM
+ FC79          ; NFKC_CF; 062B 0646      # Lo       ARABIC LIGATURE THEH WITH NOON FINAL FORM
+ FC7A          ; NFKC_CF; 062B 0649      # Lo       ARABIC LIGATURE THEH WITH ALEF MAKSURA FINAL FORM
+ FC7B          ; NFKC_CF; 062B 064A      # Lo       ARABIC LIGATURE THEH WITH YEH FINAL FORM
+ FC7C          ; NFKC_CF; 0641 0649      # Lo       ARABIC LIGATURE FEH WITH ALEF MAKSURA FINAL FORM
+ FC7D          ; NFKC_CF; 0641 064A      # Lo       ARABIC LIGATURE FEH WITH YEH FINAL FORM
+ FC7E          ; NFKC_CF; 0642 0649      # Lo       ARABIC LIGATURE QAF WITH ALEF MAKSURA FINAL FORM
+ FC7F          ; NFKC_CF; 0642 064A      # Lo       ARABIC LIGATURE QAF WITH YEH FINAL FORM
+ FC80          ; NFKC_CF; 0643 0627      # Lo       ARABIC LIGATURE KAF WITH ALEF FINAL FORM
+ FC81          ; NFKC_CF; 0643 0644      # Lo       ARABIC LIGATURE KAF WITH LAM FINAL FORM
+ FC82          ; NFKC_CF; 0643 0645      # Lo       ARABIC LIGATURE KAF WITH MEEM FINAL FORM
+ FC83          ; NFKC_CF; 0643 0649      # Lo       ARABIC LIGATURE KAF WITH ALEF MAKSURA FINAL FORM
+ FC84          ; NFKC_CF; 0643 064A      # Lo       ARABIC LIGATURE KAF WITH YEH FINAL FORM
+ FC85          ; NFKC_CF; 0644 0645      # Lo       ARABIC LIGATURE LAM WITH MEEM FINAL FORM
+ FC86          ; NFKC_CF; 0644 0649      # Lo       ARABIC LIGATURE LAM WITH ALEF MAKSURA FINAL FORM
+ FC87          ; NFKC_CF; 0644 064A      # Lo       ARABIC LIGATURE LAM WITH YEH FINAL FORM
+ FC88          ; NFKC_CF; 0645 0627      # Lo       ARABIC LIGATURE MEEM WITH ALEF FINAL FORM
+ FC89          ; NFKC_CF; 0645 0645      # Lo       ARABIC LIGATURE MEEM WITH MEEM FINAL FORM
+ FC8A          ; NFKC_CF; 0646 0631      # Lo       ARABIC LIGATURE NOON WITH REH FINAL FORM
+ FC8B          ; NFKC_CF; 0646 0632      # Lo       ARABIC LIGATURE NOON WITH ZAIN FINAL FORM
+ FC8C          ; NFKC_CF; 0646 0645      # Lo       ARABIC LIGATURE NOON WITH MEEM FINAL FORM
+ FC8D          ; NFKC_CF; 0646 0646      # Lo       ARABIC LIGATURE NOON WITH NOON FINAL FORM
+ FC8E          ; NFKC_CF; 0646 0649      # Lo       ARABIC LIGATURE NOON WITH ALEF MAKSURA FINAL FORM
+ FC8F          ; NFKC_CF; 0646 064A      # Lo       ARABIC LIGATURE NOON WITH YEH FINAL FORM
+ FC90          ; NFKC_CF; 0649 0670      # Lo       ARABIC LIGATURE ALEF MAKSURA WITH SUPERSCRIPT ALEF FINAL FORM
+ FC91          ; NFKC_CF; 064A 0631      # Lo       ARABIC LIGATURE YEH WITH REH FINAL FORM
+ FC92          ; NFKC_CF; 064A 0632      # Lo       ARABIC LIGATURE YEH WITH ZAIN FINAL FORM
+ FC93          ; NFKC_CF; 064A 0645      # Lo       ARABIC LIGATURE YEH WITH MEEM FINAL FORM
+ FC94          ; NFKC_CF; 064A 0646      # Lo       ARABIC LIGATURE YEH WITH NOON FINAL FORM
+ FC95          ; NFKC_CF; 064A 0649      # Lo       ARABIC LIGATURE YEH WITH ALEF MAKSURA FINAL FORM
+ FC96          ; NFKC_CF; 064A 064A      # Lo       ARABIC LIGATURE YEH WITH YEH FINAL FORM
+ FC97          ; NFKC_CF; 0626 062C      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH JEEM INITIAL FORM
+ FC98          ; NFKC_CF; 0626 062D      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HAH INITIAL FORM
+ FC99          ; NFKC_CF; 0626 062E      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH KHAH INITIAL FORM
+ FC9A          ; NFKC_CF; 0626 0645      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM INITIAL FORM
+ FC9B          ; NFKC_CF; 0626 0647      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH INITIAL FORM
+ FC9C          ; NFKC_CF; 0628 062C      # Lo       ARABIC LIGATURE BEH WITH JEEM INITIAL FORM
+ FC9D          ; NFKC_CF; 0628 062D      # Lo       ARABIC LIGATURE BEH WITH HAH INITIAL FORM
+ FC9E          ; NFKC_CF; 0628 062E      # Lo       ARABIC LIGATURE BEH WITH KHAH INITIAL FORM
+ FC9F          ; NFKC_CF; 0628 0645      # Lo       ARABIC LIGATURE BEH WITH MEEM INITIAL FORM
+ FCA0          ; NFKC_CF; 0628 0647      # Lo       ARABIC LIGATURE BEH WITH HEH INITIAL FORM
+ FCA1          ; NFKC_CF; 062A 062C      # Lo       ARABIC LIGATURE TEH WITH JEEM INITIAL FORM
+ FCA2          ; NFKC_CF; 062A 062D      # Lo       ARABIC LIGATURE TEH WITH HAH INITIAL FORM
+ FCA3          ; NFKC_CF; 062A 062E      # Lo       ARABIC LIGATURE TEH WITH KHAH INITIAL FORM
+ FCA4          ; NFKC_CF; 062A 0645      # Lo       ARABIC LIGATURE TEH WITH MEEM INITIAL FORM
+ FCA5          ; NFKC_CF; 062A 0647      # Lo       ARABIC LIGATURE TEH WITH HEH INITIAL FORM
+ FCA6          ; NFKC_CF; 062B 0645      # Lo       ARABIC LIGATURE THEH WITH MEEM INITIAL FORM
+ FCA7          ; NFKC_CF; 062C 062D      # Lo       ARABIC LIGATURE JEEM WITH HAH INITIAL FORM
+ FCA8          ; NFKC_CF; 062C 0645      # Lo       ARABIC LIGATURE JEEM WITH MEEM INITIAL FORM
+ FCA9          ; NFKC_CF; 062D 062C      # Lo       ARABIC LIGATURE HAH WITH JEEM INITIAL FORM
+ FCAA          ; NFKC_CF; 062D 0645      # Lo       ARABIC LIGATURE HAH WITH MEEM INITIAL FORM
+ FCAB          ; NFKC_CF; 062E 062C      # Lo       ARABIC LIGATURE KHAH WITH JEEM INITIAL FORM
+ FCAC          ; NFKC_CF; 062E 0645      # Lo       ARABIC LIGATURE KHAH WITH MEEM INITIAL FORM
+ FCAD          ; NFKC_CF; 0633 062C      # Lo       ARABIC LIGATURE SEEN WITH JEEM INITIAL FORM
+ FCAE          ; NFKC_CF; 0633 062D      # Lo       ARABIC LIGATURE SEEN WITH HAH INITIAL FORM
+ FCAF          ; NFKC_CF; 0633 062E      # Lo       ARABIC LIGATURE SEEN WITH KHAH INITIAL FORM
+ FCB0          ; NFKC_CF; 0633 0645      # Lo       ARABIC LIGATURE SEEN WITH MEEM INITIAL FORM
+ FCB1          ; NFKC_CF; 0635 062D      # Lo       ARABIC LIGATURE SAD WITH HAH INITIAL FORM
+ FCB2          ; NFKC_CF; 0635 062E      # Lo       ARABIC LIGATURE SAD WITH KHAH INITIAL FORM
+ FCB3          ; NFKC_CF; 0635 0645      # Lo       ARABIC LIGATURE SAD WITH MEEM INITIAL FORM
+ FCB4          ; NFKC_CF; 0636 062C      # Lo       ARABIC LIGATURE DAD WITH JEEM INITIAL FORM
+ FCB5          ; NFKC_CF; 0636 062D      # Lo       ARABIC LIGATURE DAD WITH HAH INITIAL FORM
+ FCB6          ; NFKC_CF; 0636 062E      # Lo       ARABIC LIGATURE DAD WITH KHAH INITIAL FORM
+ FCB7          ; NFKC_CF; 0636 0645      # Lo       ARABIC LIGATURE DAD WITH MEEM INITIAL FORM
+ FCB8          ; NFKC_CF; 0637 062D      # Lo       ARABIC LIGATURE TAH WITH HAH INITIAL FORM
+ FCB9          ; NFKC_CF; 0638 0645      # Lo       ARABIC LIGATURE ZAH WITH MEEM INITIAL FORM
+ FCBA          ; NFKC_CF; 0639 062C      # Lo       ARABIC LIGATURE AIN WITH JEEM INITIAL FORM
+ FCBB          ; NFKC_CF; 0639 0645      # Lo       ARABIC LIGATURE AIN WITH MEEM INITIAL FORM
+ FCBC          ; NFKC_CF; 063A 062C      # Lo       ARABIC LIGATURE GHAIN WITH JEEM INITIAL FORM
+ FCBD          ; NFKC_CF; 063A 0645      # Lo       ARABIC LIGATURE GHAIN WITH MEEM INITIAL FORM
+ FCBE          ; NFKC_CF; 0641 062C      # Lo       ARABIC LIGATURE FEH WITH JEEM INITIAL FORM
+ FCBF          ; NFKC_CF; 0641 062D      # Lo       ARABIC LIGATURE FEH WITH HAH INITIAL FORM
+ FCC0          ; NFKC_CF; 0641 062E      # Lo       ARABIC LIGATURE FEH WITH KHAH INITIAL FORM
+ FCC1          ; NFKC_CF; 0641 0645      # Lo       ARABIC LIGATURE FEH WITH MEEM INITIAL FORM
+ FCC2          ; NFKC_CF; 0642 062D      # Lo       ARABIC LIGATURE QAF WITH HAH INITIAL FORM
+ FCC3          ; NFKC_CF; 0642 0645      # Lo       ARABIC LIGATURE QAF WITH MEEM INITIAL FORM
+ FCC4          ; NFKC_CF; 0643 062C      # Lo       ARABIC LIGATURE KAF WITH JEEM INITIAL FORM
+ FCC5          ; NFKC_CF; 0643 062D      # Lo       ARABIC LIGATURE KAF WITH HAH INITIAL FORM
+ FCC6          ; NFKC_CF; 0643 062E      # Lo       ARABIC LIGATURE KAF WITH KHAH INITIAL FORM
+ FCC7          ; NFKC_CF; 0643 0644      # Lo       ARABIC LIGATURE KAF WITH LAM INITIAL FORM
+ FCC8          ; NFKC_CF; 0643 0645      # Lo       ARABIC LIGATURE KAF WITH MEEM INITIAL FORM
+ FCC9          ; NFKC_CF; 0644 062C      # Lo       ARABIC LIGATURE LAM WITH JEEM INITIAL FORM
+ FCCA          ; NFKC_CF; 0644 062D      # Lo       ARABIC LIGATURE LAM WITH HAH INITIAL FORM
+ FCCB          ; NFKC_CF; 0644 062E      # Lo       ARABIC LIGATURE LAM WITH KHAH INITIAL FORM
+ FCCC          ; NFKC_CF; 0644 0645      # Lo       ARABIC LIGATURE LAM WITH MEEM INITIAL FORM
+ FCCD          ; NFKC_CF; 0644 0647      # Lo       ARABIC LIGATURE LAM WITH HEH INITIAL FORM
+ FCCE          ; NFKC_CF; 0645 062C      # Lo       ARABIC LIGATURE MEEM WITH JEEM INITIAL FORM
+ FCCF          ; NFKC_CF; 0645 062D      # Lo       ARABIC LIGATURE MEEM WITH HAH INITIAL FORM
+ FCD0          ; NFKC_CF; 0645 062E      # Lo       ARABIC LIGATURE MEEM WITH KHAH INITIAL FORM
+ FCD1          ; NFKC_CF; 0645 0645      # Lo       ARABIC LIGATURE MEEM WITH MEEM INITIAL FORM
+ FCD2          ; NFKC_CF; 0646 062C      # Lo       ARABIC LIGATURE NOON WITH JEEM INITIAL FORM
+ FCD3          ; NFKC_CF; 0646 062D      # Lo       ARABIC LIGATURE NOON WITH HAH INITIAL FORM
+ FCD4          ; NFKC_CF; 0646 062E      # Lo       ARABIC LIGATURE NOON WITH KHAH INITIAL FORM
+ FCD5          ; NFKC_CF; 0646 0645      # Lo       ARABIC LIGATURE NOON WITH MEEM INITIAL FORM
+ FCD6          ; NFKC_CF; 0646 0647      # Lo       ARABIC LIGATURE NOON WITH HEH INITIAL FORM
+ FCD7          ; NFKC_CF; 0647 062C      # Lo       ARABIC LIGATURE HEH WITH JEEM INITIAL FORM
+ FCD8          ; NFKC_CF; 0647 0645      # Lo       ARABIC LIGATURE HEH WITH MEEM INITIAL FORM
+ FCD9          ; NFKC_CF; 0647 0670      # Lo       ARABIC LIGATURE HEH WITH SUPERSCRIPT ALEF INITIAL FORM
+ FCDA          ; NFKC_CF; 064A 062C      # Lo       ARABIC LIGATURE YEH WITH JEEM INITIAL FORM
+ FCDB          ; NFKC_CF; 064A 062D      # Lo       ARABIC LIGATURE YEH WITH HAH INITIAL FORM
+ FCDC          ; NFKC_CF; 064A 062E      # Lo       ARABIC LIGATURE YEH WITH KHAH INITIAL FORM
+ FCDD          ; NFKC_CF; 064A 0645      # Lo       ARABIC LIGATURE YEH WITH MEEM INITIAL FORM
+ FCDE          ; NFKC_CF; 064A 0647      # Lo       ARABIC LIGATURE YEH WITH HEH INITIAL FORM
+ FCDF          ; NFKC_CF; 0626 0645      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH MEEM MEDIAL FORM
+ FCE0          ; NFKC_CF; 0626 0647      # Lo       ARABIC LIGATURE YEH WITH HAMZA ABOVE WITH HEH MEDIAL FORM
+ FCE1          ; NFKC_CF; 0628 0645      # Lo       ARABIC LIGATURE BEH WITH MEEM MEDIAL FORM
+ FCE2          ; NFKC_CF; 0628 0647      # Lo       ARABIC LIGATURE BEH WITH HEH MEDIAL FORM
+ FCE3          ; NFKC_CF; 062A 0645      # Lo       ARABIC LIGATURE TEH WITH MEEM MEDIAL FORM
+ FCE4          ; NFKC_CF; 062A 0647      # Lo       ARABIC LIGATURE TEH WITH HEH MEDIAL FORM
+ FCE5          ; NFKC_CF; 062B 0645      # Lo       ARABIC LIGATURE THEH WITH MEEM MEDIAL FORM
+ FCE6          ; NFKC_CF; 062B 0647      # Lo       ARABIC LIGATURE THEH WITH HEH MEDIAL FORM
+ FCE7          ; NFKC_CF; 0633 0645      # Lo       ARABIC LIGATURE SEEN WITH MEEM MEDIAL FORM
+ FCE8          ; NFKC_CF; 0633 0647      # Lo       ARABIC LIGATURE SEEN WITH HEH MEDIAL FORM
+ FCE9          ; NFKC_CF; 0634 0645      # Lo       ARABIC LIGATURE SHEEN WITH MEEM MEDIAL FORM
+ FCEA          ; NFKC_CF; 0634 0647      # Lo       ARABIC LIGATURE SHEEN WITH HEH MEDIAL FORM
+ FCEB          ; NFKC_CF; 0643 0644      # Lo       ARABIC LIGATURE KAF WITH LAM MEDIAL FORM
+ FCEC          ; NFKC_CF; 0643 0645      # Lo       ARABIC LIGATURE KAF WITH MEEM MEDIAL FORM
+ FCED          ; NFKC_CF; 0644 0645      # Lo       ARABIC LIGATURE LAM WITH MEEM MEDIAL FORM
+ FCEE          ; NFKC_CF; 0646 0645      # Lo       ARABIC LIGATURE NOON WITH MEEM MEDIAL FORM
+ FCEF          ; NFKC_CF; 0646 0647      # Lo       ARABIC LIGATURE NOON WITH HEH MEDIAL FORM
+ FCF0          ; NFKC_CF; 064A 0645      # Lo       ARABIC LIGATURE YEH WITH MEEM MEDIAL FORM
+ FCF1          ; NFKC_CF; 064A 0647      # Lo       ARABIC LIGATURE YEH WITH HEH MEDIAL FORM
+ FCF2          ; NFKC_CF; 0640 064E 0651 # Lo       ARABIC LIGATURE SHADDA WITH FATHA MEDIAL FORM
+ FCF3          ; NFKC_CF; 0640 064F 0651 # Lo       ARABIC LIGATURE SHADDA WITH DAMMA MEDIAL FORM
+ FCF4          ; NFKC_CF; 0640 0650 0651 # Lo       ARABIC LIGATURE SHADDA WITH KASRA MEDIAL FORM
+ FCF5          ; NFKC_CF; 0637 0649      # Lo       ARABIC LIGATURE TAH WITH ALEF MAKSURA ISOLATED FORM
+ FCF6          ; NFKC_CF; 0637 064A      # Lo       ARABIC LIGATURE TAH WITH YEH ISOLATED FORM
+ FCF7          ; NFKC_CF; 0639 0649      # Lo       ARABIC LIGATURE AIN WITH ALEF MAKSURA ISOLATED FORM
+ FCF8          ; NFKC_CF; 0639 064A      # Lo       ARABIC LIGATURE AIN WITH YEH ISOLATED FORM
+ FCF9          ; NFKC_CF; 063A 0649      # Lo       ARABIC LIGATURE GHAIN WITH ALEF MAKSURA ISOLATED FORM
+ FCFA          ; NFKC_CF; 063A 064A      # Lo       ARABIC LIGATURE GHAIN WITH YEH ISOLATED FORM
+ FCFB          ; NFKC_CF; 0633 0649      # Lo       ARABIC LIGATURE SEEN WITH ALEF MAKSURA ISOLATED FORM
+ FCFC          ; NFKC_CF; 0633 064A      # Lo       ARABIC LIGATURE SEEN WITH YEH ISOLATED FORM
+ FCFD          ; NFKC_CF; 0634 0649      # Lo       ARABIC LIGATURE SHEEN WITH ALEF MAKSURA ISOLATED FORM
+ FCFE          ; NFKC_CF; 0634 064A      # Lo       ARABIC LIGATURE SHEEN WITH YEH ISOLATED FORM
+ FCFF          ; NFKC_CF; 062D 0649      # Lo       ARABIC LIGATURE HAH WITH ALEF MAKSURA ISOLATED FORM
+ FD00          ; NFKC_CF; 062D 064A      # Lo       ARABIC LIGATURE HAH WITH YEH ISOLATED FORM
+ FD01          ; NFKC_CF; 062C 0649      # Lo       ARABIC LIGATURE JEEM WITH ALEF MAKSURA ISOLATED FORM
+ FD02          ; NFKC_CF; 062C 064A      # Lo       ARABIC LIGATURE JEEM WITH YEH ISOLATED FORM
+ FD03          ; NFKC_CF; 062E 0649      # Lo       ARABIC LIGATURE KHAH WITH ALEF MAKSURA ISOLATED FORM
+ FD04          ; NFKC_CF; 062E 064A      # Lo       ARABIC LIGATURE KHAH WITH YEH ISOLATED FORM
+ FD05          ; NFKC_CF; 0635 0649      # Lo       ARABIC LIGATURE SAD WITH ALEF MAKSURA ISOLATED FORM
+ FD06          ; NFKC_CF; 0635 064A      # Lo       ARABIC LIGATURE SAD WITH YEH ISOLATED FORM
+ FD07          ; NFKC_CF; 0636 0649      # Lo       ARABIC LIGATURE DAD WITH ALEF MAKSURA ISOLATED FORM
+ FD08          ; NFKC_CF; 0636 064A      # Lo       ARABIC LIGATURE DAD WITH YEH ISOLATED FORM
+ FD09          ; NFKC_CF; 0634 062C      # Lo       ARABIC LIGATURE SHEEN WITH JEEM ISOLATED FORM
+ FD0A          ; NFKC_CF; 0634 062D      # Lo       ARABIC LIGATURE SHEEN WITH HAH ISOLATED FORM
+ FD0B          ; NFKC_CF; 0634 062E      # Lo       ARABIC LIGATURE SHEEN WITH KHAH ISOLATED FORM
+ FD0C          ; NFKC_CF; 0634 0645      # Lo       ARABIC LIGATURE SHEEN WITH MEEM ISOLATED FORM
+ FD0D          ; NFKC_CF; 0634 0631      # Lo       ARABIC LIGATURE SHEEN WITH REH ISOLATED FORM
+ FD0E          ; NFKC_CF; 0633 0631      # Lo       ARABIC LIGATURE SEEN WITH REH ISOLATED FORM
+ FD0F          ; NFKC_CF; 0635 0631      # Lo       ARABIC LIGATURE SAD WITH REH ISOLATED FORM
+ FD10          ; NFKC_CF; 0636 0631      # Lo       ARABIC LIGATURE DAD WITH REH ISOLATED FORM
+ FD11          ; NFKC_CF; 0637 0649      # Lo       ARABIC LIGATURE TAH WITH ALEF MAKSURA FINAL FORM
+ FD12          ; NFKC_CF; 0637 064A      # Lo       ARABIC LIGATURE TAH WITH YEH FINAL FORM
+ FD13          ; NFKC_CF; 0639 0649      # Lo       ARABIC LIGATURE AIN WITH ALEF MAKSURA FINAL FORM
+ FD14          ; NFKC_CF; 0639 064A      # Lo       ARABIC LIGATURE AIN WITH YEH FINAL FORM
+ FD15          ; NFKC_CF; 063A 0649      # Lo       ARABIC LIGATURE GHAIN WITH ALEF MAKSURA FINAL FORM
+ FD16          ; NFKC_CF; 063A 064A      # Lo       ARABIC LIGATURE GHAIN WITH YEH FINAL FORM
+ FD17          ; NFKC_CF; 0633 0649      # Lo       ARABIC LIGATURE SEEN WITH ALEF MAKSURA FINAL FORM
+ FD18          ; NFKC_CF; 0633 064A      # Lo       ARABIC LIGATURE SEEN WITH YEH FINAL FORM
+ FD19          ; NFKC_CF; 0634 0649      # Lo       ARABIC LIGATURE SHEEN WITH ALEF MAKSURA FINAL FORM
+ FD1A          ; NFKC_CF; 0634 064A      # Lo       ARABIC LIGATURE SHEEN WITH YEH FINAL FORM
+ FD1B          ; NFKC_CF; 062D 0649      # Lo       ARABIC LIGATURE HAH WITH ALEF MAKSURA FINAL FORM
+ FD1C          ; NFKC_CF; 062D 064A      # Lo       ARABIC LIGATURE HAH WITH YEH FINAL FORM
+ FD1D          ; NFKC_CF; 062C 0649      # Lo       ARABIC LIGATURE JEEM WITH ALEF MAKSURA FINAL FORM
+ FD1E          ; NFKC_CF; 062C 064A      # Lo       ARABIC LIGATURE JEEM WITH YEH FINAL FORM
+ FD1F          ; NFKC_CF; 062E 0649      # Lo       ARABIC LIGATURE KHAH WITH ALEF MAKSURA FINAL FORM
+ FD20          ; NFKC_CF; 062E 064A      # Lo       ARABIC LIGATURE KHAH WITH YEH FINAL FORM
+ FD21          ; NFKC_CF; 0635 0649      # Lo       ARABIC LIGATURE SAD WITH ALEF MAKSURA FINAL FORM
+ FD22          ; NFKC_CF; 0635 064A      # Lo       ARABIC LIGATURE SAD WITH YEH FINAL FORM
+ FD23          ; NFKC_CF; 0636 0649      # Lo       ARABIC LIGATURE DAD WITH ALEF MAKSURA FINAL FORM
+ FD24          ; NFKC_CF; 0636 064A      # Lo       ARABIC LIGATURE DAD WITH YEH FINAL FORM
+ FD25          ; NFKC_CF; 0634 062C      # Lo       ARABIC LIGATURE SHEEN WITH JEEM FINAL FORM
+ FD26          ; NFKC_CF; 0634 062D      # Lo       ARABIC LIGATURE SHEEN WITH HAH FINAL FORM
+ FD27          ; NFKC_CF; 0634 062E      # Lo       ARABIC LIGATURE SHEEN WITH KHAH FINAL FORM
+ FD28          ; NFKC_CF; 0634 0645      # Lo       ARABIC LIGATURE SHEEN WITH MEEM FINAL FORM
+ FD29          ; NFKC_CF; 0634 0631      # Lo       ARABIC LIGATURE SHEEN WITH REH FINAL FORM
+ FD2A          ; NFKC_CF; 0633 0631      # Lo       ARABIC LIGATURE SEEN WITH REH FINAL FORM
+ FD2B          ; NFKC_CF; 0635 0631      # Lo       ARABIC LIGATURE SAD WITH REH FINAL FORM
+ FD2C          ; NFKC_CF; 0636 0631      # Lo       ARABIC LIGATURE DAD WITH REH FINAL FORM
+ FD2D          ; NFKC_CF; 0634 062C      # Lo       ARABIC LIGATURE SHEEN WITH JEEM INITIAL FORM
+ FD2E          ; NFKC_CF; 0634 062D      # Lo       ARABIC LIGATURE SHEEN WITH HAH INITIAL FORM
+ FD2F          ; NFKC_CF; 0634 062E      # Lo       ARABIC LIGATURE SHEEN WITH KHAH INITIAL FORM
+ FD30          ; NFKC_CF; 0634 0645      # Lo       ARABIC LIGATURE SHEEN WITH MEEM INITIAL FORM
+ FD31          ; NFKC_CF; 0633 0647      # Lo       ARABIC LIGATURE SEEN WITH HEH INITIAL FORM
+ FD32          ; NFKC_CF; 0634 0647      # Lo       ARABIC LIGATURE SHEEN WITH HEH INITIAL FORM
+ FD33          ; NFKC_CF; 0637 0645      # Lo       ARABIC LIGATURE TAH WITH MEEM INITIAL FORM
+ FD34          ; NFKC_CF; 0633 062C      # Lo       ARABIC LIGATURE SEEN WITH JEEM MEDIAL FORM
+ FD35          ; NFKC_CF; 0633 062D      # Lo       ARABIC LIGATURE SEEN WITH HAH MEDIAL FORM
+ FD36          ; NFKC_CF; 0633 062E      # Lo       ARABIC LIGATURE SEEN WITH KHAH MEDIAL FORM
+ FD37          ; NFKC_CF; 0634 062C      # Lo       ARABIC LIGATURE SHEEN WITH JEEM MEDIAL FORM
+ FD38          ; NFKC_CF; 0634 062D      # Lo       ARABIC LIGATURE SHEEN WITH HAH MEDIAL FORM
+ FD39          ; NFKC_CF; 0634 062E      # Lo       ARABIC LIGATURE SHEEN WITH KHAH MEDIAL FORM
+ FD3A          ; NFKC_CF; 0637 0645      # Lo       ARABIC LIGATURE TAH WITH MEEM MEDIAL FORM
+ FD3B          ; NFKC_CF; 0638 0645      # Lo       ARABIC LIGATURE ZAH WITH MEEM MEDIAL FORM
+ FD3C..FD3D    ; NFKC_CF; 0627 064B      # Lo   [2] ARABIC LIGATURE ALEF WITH FATHATAN FINAL FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50          ; NFKC_CF; 062A 062C 0645 # Lo       ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM
+ FD51..FD52    ; NFKC_CF; 062A 062D 062C # Lo   [2] ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM..ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM
+ FD53          ; NFKC_CF; 062A 062D 0645 # Lo       ARABIC LIGATURE TEH WITH HAH WITH MEEM INITIAL FORM
+ FD54          ; NFKC_CF; 062A 062E 0645 # Lo       ARABIC LIGATURE TEH WITH KHAH WITH MEEM INITIAL FORM
+ FD55          ; NFKC_CF; 062A 0645 062C # Lo       ARABIC LIGATURE TEH WITH MEEM WITH JEEM INITIAL FORM
+ FD56          ; NFKC_CF; 062A 0645 062D # Lo       ARABIC LIGATURE TEH WITH MEEM WITH HAH INITIAL FORM
+ FD57          ; NFKC_CF; 062A 0645 062E # Lo       ARABIC LIGATURE TEH WITH MEEM WITH KHAH INITIAL FORM
+ FD58..FD59    ; NFKC_CF; 062C 0645 062D # Lo   [2] ARABIC LIGATURE JEEM WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE JEEM WITH MEEM WITH HAH INITIAL FORM
+ FD5A          ; NFKC_CF; 062D 0645 064A # Lo       ARABIC LIGATURE HAH WITH MEEM WITH YEH FINAL FORM
+ FD5B          ; NFKC_CF; 062D 0645 0649 # Lo       ARABIC LIGATURE HAH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ FD5C          ; NFKC_CF; 0633 062D 062C # Lo       ARABIC LIGATURE SEEN WITH HAH WITH JEEM INITIAL FORM
+ FD5D          ; NFKC_CF; 0633 062C 062D # Lo       ARABIC LIGATURE SEEN WITH JEEM WITH HAH INITIAL FORM
+ FD5E          ; NFKC_CF; 0633 062C 0649 # Lo       ARABIC LIGATURE SEEN WITH JEEM WITH ALEF MAKSURA FINAL FORM
+ FD5F..FD60    ; NFKC_CF; 0633 0645 062D # Lo   [2] ARABIC LIGATURE SEEN WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE SEEN WITH MEEM WITH HAH INITIAL FORM
+ FD61          ; NFKC_CF; 0633 0645 062C # Lo       ARABIC LIGATURE SEEN WITH MEEM WITH JEEM INITIAL FORM
+ FD62..FD63    ; NFKC_CF; 0633 0645 0645 # Lo   [2] ARABIC LIGATURE SEEN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE SEEN WITH MEEM WITH MEEM INITIAL FORM
+ FD64..FD65    ; NFKC_CF; 0635 062D 062D # Lo   [2] ARABIC LIGATURE SAD WITH HAH WITH HAH FINAL FORM..ARABIC LIGATURE SAD WITH HAH WITH HAH INITIAL FORM
+ FD66          ; NFKC_CF; 0635 0645 0645 # Lo       ARABIC LIGATURE SAD WITH MEEM WITH MEEM FINAL FORM
+ FD67..FD68    ; NFKC_CF; 0634 062D 0645 # Lo   [2] ARABIC LIGATURE SHEEN WITH HAH WITH MEEM FINAL FORM..ARABIC LIGATURE SHEEN WITH HAH WITH MEEM INITIAL FORM
+ FD69          ; NFKC_CF; 0634 062C 064A # Lo       ARABIC LIGATURE SHEEN WITH JEEM WITH YEH FINAL FORM
+ FD6A..FD6B    ; NFKC_CF; 0634 0645 062E # Lo   [2] ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH FINAL FORM..ARABIC LIGATURE SHEEN WITH MEEM WITH KHAH INITIAL FORM
+ FD6C..FD6D    ; NFKC_CF; 0634 0645 0645 # Lo   [2] ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE SHEEN WITH MEEM WITH MEEM INITIAL FORM
+ FD6E          ; NFKC_CF; 0636 062D 0649 # Lo       ARABIC LIGATURE DAD WITH HAH WITH ALEF MAKSURA FINAL FORM
+ FD6F..FD70    ; NFKC_CF; 0636 062E 0645 # Lo   [2] ARABIC LIGATURE DAD WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE DAD WITH KHAH WITH MEEM INITIAL FORM
+ FD71..FD72    ; NFKC_CF; 0637 0645 062D # Lo   [2] ARABIC LIGATURE TAH WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE TAH WITH MEEM WITH HAH INITIAL FORM
+ FD73          ; NFKC_CF; 0637 0645 0645 # Lo       ARABIC LIGATURE TAH WITH MEEM WITH MEEM INITIAL FORM
+ FD74          ; NFKC_CF; 0637 0645 064A # Lo       ARABIC LIGATURE TAH WITH MEEM WITH YEH FINAL FORM
+ FD75          ; NFKC_CF; 0639 062C 0645 # Lo       ARABIC LIGATURE AIN WITH JEEM WITH MEEM FINAL FORM
+ FD76..FD77    ; NFKC_CF; 0639 0645 0645 # Lo   [2] ARABIC LIGATURE AIN WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE AIN WITH MEEM WITH MEEM INITIAL FORM
+ FD78          ; NFKC_CF; 0639 0645 0649 # Lo       ARABIC LIGATURE AIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ FD79          ; NFKC_CF; 063A 0645 0645 # Lo       ARABIC LIGATURE GHAIN WITH MEEM WITH MEEM FINAL FORM
+ FD7A          ; NFKC_CF; 063A 0645 064A # Lo       ARABIC LIGATURE GHAIN WITH MEEM WITH YEH FINAL FORM
+ FD7B          ; NFKC_CF; 063A 0645 0649 # Lo       ARABIC LIGATURE GHAIN WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ FD7C..FD7D    ; NFKC_CF; 0641 062E 0645 # Lo   [2] ARABIC LIGATURE FEH WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE FEH WITH KHAH WITH MEEM INITIAL FORM
+ FD7E          ; NFKC_CF; 0642 0645 062D # Lo       ARABIC LIGATURE QAF WITH MEEM WITH HAH FINAL FORM
+ FD7F          ; NFKC_CF; 0642 0645 0645 # Lo       ARABIC LIGATURE QAF WITH MEEM WITH MEEM FINAL FORM
+ FD80          ; NFKC_CF; 0644 062D 0645 # Lo       ARABIC LIGATURE LAM WITH HAH WITH MEEM FINAL FORM
+ FD81          ; NFKC_CF; 0644 062D 064A # Lo       ARABIC LIGATURE LAM WITH HAH WITH YEH FINAL FORM
+ FD82          ; NFKC_CF; 0644 062D 0649 # Lo       ARABIC LIGATURE LAM WITH HAH WITH ALEF MAKSURA FINAL FORM
+ FD83..FD84    ; NFKC_CF; 0644 062C 062C # Lo   [2] ARABIC LIGATURE LAM WITH JEEM WITH JEEM INITIAL FORM..ARABIC LIGATURE LAM WITH JEEM WITH JEEM FINAL FORM
+ FD85..FD86    ; NFKC_CF; 0644 062E 0645 # Lo   [2] ARABIC LIGATURE LAM WITH KHAH WITH MEEM FINAL FORM..ARABIC LIGATURE LAM WITH KHAH WITH MEEM INITIAL FORM
+ FD87..FD88    ; NFKC_CF; 0644 0645 062D # Lo   [2] ARABIC LIGATURE LAM WITH MEEM WITH HAH FINAL FORM..ARABIC LIGATURE LAM WITH MEEM WITH HAH INITIAL FORM
+ FD89          ; NFKC_CF; 0645 062D 062C # Lo       ARABIC LIGATURE MEEM WITH HAH WITH JEEM INITIAL FORM
+ FD8A          ; NFKC_CF; 0645 062D 0645 # Lo       ARABIC LIGATURE MEEM WITH HAH WITH MEEM INITIAL FORM
+ FD8B          ; NFKC_CF; 0645 062D 064A # Lo       ARABIC LIGATURE MEEM WITH HAH WITH YEH FINAL FORM
+ FD8C          ; NFKC_CF; 0645 062C 062D # Lo       ARABIC LIGATURE MEEM WITH JEEM WITH HAH INITIAL FORM
+ FD8D          ; NFKC_CF; 0645 062C 0645 # Lo       ARABIC LIGATURE MEEM WITH JEEM WITH MEEM INITIAL FORM
+ FD8E          ; NFKC_CF; 0645 062E 062C # Lo       ARABIC LIGATURE MEEM WITH KHAH WITH JEEM INITIAL FORM
+ FD8F          ; NFKC_CF; 0645 062E 0645 # Lo       ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92          ; NFKC_CF; 0645 062C 062E # Lo       ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM
+ FD93          ; NFKC_CF; 0647 0645 062C # Lo       ARABIC LIGATURE HEH WITH MEEM WITH JEEM INITIAL FORM
+ FD94          ; NFKC_CF; 0647 0645 0645 # Lo       ARABIC LIGATURE HEH WITH MEEM WITH MEEM INITIAL FORM
+ FD95          ; NFKC_CF; 0646 062D 0645 # Lo       ARABIC LIGATURE NOON WITH HAH WITH MEEM INITIAL FORM
+ FD96          ; NFKC_CF; 0646 062D 0649 # Lo       ARABIC LIGATURE NOON WITH HAH WITH ALEF MAKSURA FINAL FORM
+ FD97..FD98    ; NFKC_CF; 0646 062C 0645 # Lo   [2] ARABIC LIGATURE NOON WITH JEEM WITH MEEM FINAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH MEEM INITIAL FORM
+ FD99          ; NFKC_CF; 0646 062C 0649 # Lo       ARABIC LIGATURE NOON WITH JEEM WITH ALEF MAKSURA FINAL FORM
+ FD9A          ; NFKC_CF; 0646 0645 064A # Lo       ARABIC LIGATURE NOON WITH MEEM WITH YEH FINAL FORM
+ FD9B          ; NFKC_CF; 0646 0645 0649 # Lo       ARABIC LIGATURE NOON WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ FD9C..FD9D    ; NFKC_CF; 064A 0645 0645 # Lo   [2] ARABIC LIGATURE YEH WITH MEEM WITH MEEM FINAL FORM..ARABIC LIGATURE YEH WITH MEEM WITH MEEM INITIAL FORM
+ FD9E          ; NFKC_CF; 0628 062E 064A # Lo       ARABIC LIGATURE BEH WITH KHAH WITH YEH FINAL FORM
+ FD9F          ; NFKC_CF; 062A 062C 064A # Lo       ARABIC LIGATURE TEH WITH JEEM WITH YEH FINAL FORM
+ FDA0          ; NFKC_CF; 062A 062C 0649 # Lo       ARABIC LIGATURE TEH WITH JEEM WITH ALEF MAKSURA FINAL FORM
+ FDA1          ; NFKC_CF; 062A 062E 064A # Lo       ARABIC LIGATURE TEH WITH KHAH WITH YEH FINAL FORM
+ FDA2          ; NFKC_CF; 062A 062E 0649 # Lo       ARABIC LIGATURE TEH WITH KHAH WITH ALEF MAKSURA FINAL FORM
+ FDA3          ; NFKC_CF; 062A 0645 064A # Lo       ARABIC LIGATURE TEH WITH MEEM WITH YEH FINAL FORM
+ FDA4          ; NFKC_CF; 062A 0645 0649 # Lo       ARABIC LIGATURE TEH WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ FDA5          ; NFKC_CF; 062C 0645 064A # Lo       ARABIC LIGATURE JEEM WITH MEEM WITH YEH FINAL FORM
+ FDA6          ; NFKC_CF; 062C 062D 0649 # Lo       ARABIC LIGATURE JEEM WITH HAH WITH ALEF MAKSURA FINAL FORM
+ FDA7          ; NFKC_CF; 062C 0645 0649 # Lo       ARABIC LIGATURE JEEM WITH MEEM WITH ALEF MAKSURA FINAL FORM
+ FDA8          ; NFKC_CF; 0633 062E 0649 # Lo       ARABIC LIGATURE SEEN WITH KHAH WITH ALEF MAKSURA FINAL FORM
+ FDA9          ; NFKC_CF; 0635 062D 064A # Lo       ARABIC LIGATURE SAD WITH HAH WITH YEH FINAL FORM
+ FDAA          ; NFKC_CF; 0634 062D 064A # Lo       ARABIC LIGATURE SHEEN WITH HAH WITH YEH FINAL FORM
+ FDAB          ; NFKC_CF; 0636 062D 064A # Lo       ARABIC LIGATURE DAD WITH HAH WITH YEH FINAL FORM
+ FDAC          ; NFKC_CF; 0644 062C 064A # Lo       ARABIC LIGATURE LAM WITH JEEM WITH YEH FINAL FORM
+ FDAD          ; NFKC_CF; 0644 0645 064A # Lo       ARABIC LIGATURE LAM WITH MEEM WITH YEH FINAL FORM
+ FDAE          ; NFKC_CF; 064A 062D 064A # Lo       ARABIC LIGATURE YEH WITH HAH WITH YEH FINAL FORM
+ FDAF          ; NFKC_CF; 064A 062C 064A # Lo       ARABIC LIGATURE YEH WITH JEEM WITH YEH FINAL FORM
+ FDB0          ; NFKC_CF; 064A 0645 064A # Lo       ARABIC LIGATURE YEH WITH MEEM WITH YEH FINAL FORM
+ FDB1          ; NFKC_CF; 0645 0645 064A # Lo       ARABIC LIGATURE MEEM WITH MEEM WITH YEH FINAL FORM
+ FDB2          ; NFKC_CF; 0642 0645 064A # Lo       ARABIC LIGATURE QAF WITH MEEM WITH YEH FINAL FORM
+ FDB3          ; NFKC_CF; 0646 062D 064A # Lo       ARABIC LIGATURE NOON WITH HAH WITH YEH FINAL FORM
+ FDB4          ; NFKC_CF; 0642 0645 062D # Lo       ARABIC LIGATURE QAF WITH MEEM WITH HAH INITIAL FORM
+ FDB5          ; NFKC_CF; 0644 062D 0645 # Lo       ARABIC LIGATURE LAM WITH HAH WITH MEEM INITIAL FORM
+ FDB6          ; NFKC_CF; 0639 0645 064A # Lo       ARABIC LIGATURE AIN WITH MEEM WITH YEH FINAL FORM
+ FDB7          ; NFKC_CF; 0643 0645 064A # Lo       ARABIC LIGATURE KAF WITH MEEM WITH YEH FINAL FORM
+ FDB8          ; NFKC_CF; 0646 062C 062D # Lo       ARABIC LIGATURE NOON WITH JEEM WITH HAH INITIAL FORM
+ FDB9          ; NFKC_CF; 0645 062E 064A # Lo       ARABIC LIGATURE MEEM WITH KHAH WITH YEH FINAL FORM
+ FDBA          ; NFKC_CF; 0644 062C 0645 # Lo       ARABIC LIGATURE LAM WITH JEEM WITH MEEM INITIAL FORM
+ FDBB          ; NFKC_CF; 0643 0645 0645 # Lo       ARABIC LIGATURE KAF WITH MEEM WITH MEEM FINAL FORM
+ FDBC          ; NFKC_CF; 0644 062C 0645 # Lo       ARABIC LIGATURE LAM WITH JEEM WITH MEEM FINAL FORM
+ FDBD          ; NFKC_CF; 0646 062C 062D # Lo       ARABIC LIGATURE NOON WITH JEEM WITH HAH FINAL FORM
+ FDBE          ; NFKC_CF; 062C 062D 064A # Lo       ARABIC LIGATURE JEEM WITH HAH WITH YEH FINAL FORM
+ FDBF          ; NFKC_CF; 062D 062C 064A # Lo       ARABIC LIGATURE HAH WITH JEEM WITH YEH FINAL FORM
+ FDC0          ; NFKC_CF; 0645 062C 064A # Lo       ARABIC LIGATURE MEEM WITH JEEM WITH YEH FINAL FORM
+ FDC1          ; NFKC_CF; 0641 0645 064A # Lo       ARABIC LIGATURE FEH WITH MEEM WITH YEH FINAL FORM
+ FDC2          ; NFKC_CF; 0628 062D 064A # Lo       ARABIC LIGATURE BEH WITH HAH WITH YEH FINAL FORM
+ FDC3          ; NFKC_CF; 0643 0645 0645 # Lo       ARABIC LIGATURE KAF WITH MEEM WITH MEEM INITIAL FORM
+ FDC4          ; NFKC_CF; 0639 062C 0645 # Lo       ARABIC LIGATURE AIN WITH JEEM WITH MEEM INITIAL FORM
+ FDC5          ; NFKC_CF; 0635 0645 0645 # Lo       ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM
+ FDC6          ; NFKC_CF; 0633 062E 064A # Lo       ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM
+ FDC7          ; NFKC_CF; 0646 062C 064A # Lo       ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0          ; NFKC_CF; 0635 0644 06D2 # Lo       ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM
+ FDF1          ; NFKC_CF; 0642 0644 06D2 # Lo       ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM
+ FDF2          ; NFKC_CF; 0627 0644 0644 0647 #Lo   ARABIC LIGATURE ALLAH ISOLATED FORM
+ FDF3          ; NFKC_CF; 0627 0643 0628 0631 #Lo   ARABIC LIGATURE AKBAR ISOLATED FORM
+ FDF4          ; NFKC_CF; 0645 062D 0645 062F #Lo   ARABIC LIGATURE MOHAMMAD ISOLATED FORM
+ FDF5          ; NFKC_CF; 0635 0644 0639 0645 #Lo   ARABIC LIGATURE SALAM ISOLATED FORM
+ FDF6          ; NFKC_CF; 0631 0633 0648 0644 #Lo   ARABIC LIGATURE RASOUL ISOLATED FORM
+ FDF7          ; NFKC_CF; 0639 0644 064A 0647 #Lo   ARABIC LIGATURE ALAYHE ISOLATED FORM
+ FDF8          ; NFKC_CF; 0648 0633 0644 0645 #Lo   ARABIC LIGATURE WASALLAM ISOLATED FORM
+ FDF9          ; NFKC_CF; 0635 0644 0649 # Lo       ARABIC LIGATURE SALLA ISOLATED FORM
+ FDFA          ; NFKC_CF; 0635 0644 0649 0020 0627 0644 0644 0647 0020 0639 0644 064A 0647 0020 0648 0633 0644 0645 #Lo ARABIC LIGATURE SALLALLAHOU ALAYHE WASALLAM
+ FDFB          ; NFKC_CF; 062C 0644 0020 062C 0644 0627 0644 0647 #Lo ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; NFKC_CF; 0631 06CC 0627 0644 #Sc   RIAL SIGN
+ FE00..FE0F    ; NFKC_CF;                # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FE10          ; NFKC_CF; 002C           # Po       PRESENTATION FORM FOR VERTICAL COMMA
+ FE11          ; NFKC_CF; 3001           # Po       PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC COMMA
+ FE12          ; NFKC_CF; 3002           # Po       PRESENTATION FORM FOR VERTICAL IDEOGRAPHIC FULL STOP
+ FE13          ; NFKC_CF; 003A           # Po       PRESENTATION FORM FOR VERTICAL COLON
+ FE14          ; NFKC_CF; 003B           # Po       PRESENTATION FORM FOR VERTICAL SEMICOLON
+ FE15          ; NFKC_CF; 0021           # Po       PRESENTATION FORM FOR VERTICAL EXCLAMATION MARK
+ FE16          ; NFKC_CF; 003F           # Po       PRESENTATION FORM FOR VERTICAL QUESTION MARK
+ FE17          ; NFKC_CF; 3016           # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+ FE18          ; NFKC_CF; 3017           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+ FE19          ; NFKC_CF; 002E 002E 002E # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; NFKC_CF; 002E 002E      # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE31          ; NFKC_CF; 2014           # Pd       PRESENTATION FORM FOR VERTICAL EM DASH
+ FE32          ; NFKC_CF; 2013           # Pd       PRESENTATION FORM FOR VERTICAL EN DASH
+ FE33..FE34    ; NFKC_CF; 005F           # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE35          ; NFKC_CF; 0028           # Ps       PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+ FE36          ; NFKC_CF; 0029           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+ FE37          ; NFKC_CF; 007B           # Ps       PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+ FE38          ; NFKC_CF; 007D           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+ FE39          ; NFKC_CF; 3014           # Ps       PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+ FE3A          ; NFKC_CF; 3015           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+ FE3B          ; NFKC_CF; 3010           # Ps       PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+ FE3C          ; NFKC_CF; 3011           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+ FE3D          ; NFKC_CF; 300A           # Ps       PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+ FE3E          ; NFKC_CF; 300B           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+ FE3F          ; NFKC_CF; 3008           # Ps       PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+ FE40          ; NFKC_CF; 3009           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+ FE41          ; NFKC_CF; 300C           # Ps       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+ FE42          ; NFKC_CF; 300D           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+ FE43          ; NFKC_CF; 300E           # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+ FE44          ; NFKC_CF; 300F           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+ FE47          ; NFKC_CF; 005B           # Ps       PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+ FE48          ; NFKC_CF; 005D           # Pe       PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+ FE49..FE4C    ; NFKC_CF; 0020 0305      # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE4D..FE4F    ; NFKC_CF; 005F           # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE50          ; NFKC_CF; 002C           # Po       SMALL COMMA
+ FE51          ; NFKC_CF; 3001           # Po       SMALL IDEOGRAPHIC COMMA
+ FE52          ; NFKC_CF; 002E           # Po       SMALL FULL STOP
+ FE54          ; NFKC_CF; 003B           # Po       SMALL SEMICOLON
+ FE55          ; NFKC_CF; 003A           # Po       SMALL COLON
+ FE56          ; NFKC_CF; 003F           # Po       SMALL QUESTION MARK
+ FE57          ; NFKC_CF; 0021           # Po       SMALL EXCLAMATION MARK
+ FE58          ; NFKC_CF; 2014           # Pd       SMALL EM DASH
+ FE59          ; NFKC_CF; 0028           # Ps       SMALL LEFT PARENTHESIS
+ FE5A          ; NFKC_CF; 0029           # Pe       SMALL RIGHT PARENTHESIS
+ FE5B          ; NFKC_CF; 007B           # Ps       SMALL LEFT CURLY BRACKET
+ FE5C          ; NFKC_CF; 007D           # Pe       SMALL RIGHT CURLY BRACKET
+ FE5D          ; NFKC_CF; 3014           # Ps       SMALL LEFT TORTOISE SHELL BRACKET
+ FE5E          ; NFKC_CF; 3015           # Pe       SMALL RIGHT TORTOISE SHELL BRACKET
+ FE5F          ; NFKC_CF; 0023           # Po       SMALL NUMBER SIGN
+ FE60          ; NFKC_CF; 0026           # Po       SMALL AMPERSAND
+ FE61          ; NFKC_CF; 002A           # Po       SMALL ASTERISK
+ FE62          ; NFKC_CF; 002B           # Sm       SMALL PLUS SIGN
+ FE63          ; NFKC_CF; 002D           # Pd       SMALL HYPHEN-MINUS
+ FE64          ; NFKC_CF; 003C           # Sm       SMALL LESS-THAN SIGN
+ FE65          ; NFKC_CF; 003E           # Sm       SMALL GREATER-THAN SIGN
+ FE66          ; NFKC_CF; 003D           # Sm       SMALL EQUALS SIGN
+ FE68          ; NFKC_CF; 005C           # Po       SMALL REVERSE SOLIDUS
+ FE69          ; NFKC_CF; 0024           # Sc       SMALL DOLLAR SIGN
+ FE6A          ; NFKC_CF; 0025           # Po       SMALL PERCENT SIGN
+ FE6B          ; NFKC_CF; 0040           # Po       SMALL COMMERCIAL AT
+ FE70          ; NFKC_CF; 0020 064B      # Lo       ARABIC FATHATAN ISOLATED FORM
+ FE71          ; NFKC_CF; 0640 064B      # Lo       ARABIC TATWEEL WITH FATHATAN ABOVE
+ FE72          ; NFKC_CF; 0020 064C      # Lo       ARABIC DAMMATAN ISOLATED FORM
+ FE74          ; NFKC_CF; 0020 064D      # Lo       ARABIC KASRATAN ISOLATED FORM
+ FE76          ; NFKC_CF; 0020 064E      # Lo       ARABIC FATHA ISOLATED FORM
+ FE77          ; NFKC_CF; 0640 064E      # Lo       ARABIC FATHA MEDIAL FORM
+ FE78          ; NFKC_CF; 0020 064F      # Lo       ARABIC DAMMA ISOLATED FORM
+ FE79          ; NFKC_CF; 0640 064F      # Lo       ARABIC DAMMA MEDIAL FORM
+ FE7A          ; NFKC_CF; 0020 0650      # Lo       ARABIC KASRA ISOLATED FORM
+ FE7B          ; NFKC_CF; 0640 0650      # Lo       ARABIC KASRA MEDIAL FORM
+ FE7C          ; NFKC_CF; 0020 0651      # Lo       ARABIC SHADDA ISOLATED FORM
+ FE7D          ; NFKC_CF; 0640 0651      # Lo       ARABIC SHADDA MEDIAL FORM
+ FE7E          ; NFKC_CF; 0020 0652      # Lo       ARABIC SUKUN ISOLATED FORM
+ FE7F          ; NFKC_CF; 0640 0652      # Lo       ARABIC SUKUN MEDIAL FORM
+ FE80          ; NFKC_CF; 0621           # Lo       ARABIC LETTER HAMZA ISOLATED FORM
+ FE81..FE82    ; NFKC_CF; 0622           # Lo   [2] ARABIC LETTER ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LETTER ALEF WITH MADDA ABOVE FINAL FORM
+ FE83..FE84    ; NFKC_CF; 0623           # Lo   [2] ARABIC LETTER ALEF WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER ALEF WITH HAMZA ABOVE FINAL FORM
+ FE85..FE86    ; NFKC_CF; 0624           # Lo   [2] ARABIC LETTER WAW WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER WAW WITH HAMZA ABOVE FINAL FORM
+ FE87..FE88    ; NFKC_CF; 0625           # Lo   [2] ARABIC LETTER ALEF WITH HAMZA BELOW ISOLATED FORM..ARABIC LETTER ALEF WITH HAMZA BELOW FINAL FORM
+ FE89..FE8C    ; NFKC_CF; 0626           # Lo   [4] ARABIC LETTER YEH WITH HAMZA ABOVE ISOLATED FORM..ARABIC LETTER YEH WITH HAMZA ABOVE MEDIAL FORM
+ FE8D..FE8E    ; NFKC_CF; 0627           # Lo   [2] ARABIC LETTER ALEF ISOLATED FORM..ARABIC LETTER ALEF FINAL FORM
+ FE8F..FE92    ; NFKC_CF; 0628           # Lo   [4] ARABIC LETTER BEH ISOLATED FORM..ARABIC LETTER BEH MEDIAL FORM
+ FE93..FE94    ; NFKC_CF; 0629           # Lo   [2] ARABIC LETTER TEH MARBUTA ISOLATED FORM..ARABIC LETTER TEH MARBUTA FINAL FORM
+ FE95..FE98    ; NFKC_CF; 062A           # Lo   [4] ARABIC LETTER TEH ISOLATED FORM..ARABIC LETTER TEH MEDIAL FORM
+ FE99..FE9C    ; NFKC_CF; 062B           # Lo   [4] ARABIC LETTER THEH ISOLATED FORM..ARABIC LETTER THEH MEDIAL FORM
+ FE9D..FEA0    ; NFKC_CF; 062C           # Lo   [4] ARABIC LETTER JEEM ISOLATED FORM..ARABIC LETTER JEEM MEDIAL FORM
+ FEA1..FEA4    ; NFKC_CF; 062D           # Lo   [4] ARABIC LETTER HAH ISOLATED FORM..ARABIC LETTER HAH MEDIAL FORM
+ FEA5..FEA8    ; NFKC_CF; 062E           # Lo   [4] ARABIC LETTER KHAH ISOLATED FORM..ARABIC LETTER KHAH MEDIAL FORM
+ FEA9..FEAA    ; NFKC_CF; 062F           # Lo   [2] ARABIC LETTER DAL ISOLATED FORM..ARABIC LETTER DAL FINAL FORM
+ FEAB..FEAC    ; NFKC_CF; 0630           # Lo   [2] ARABIC LETTER THAL ISOLATED FORM..ARABIC LETTER THAL FINAL FORM
+ FEAD..FEAE    ; NFKC_CF; 0631           # Lo   [2] ARABIC LETTER REH ISOLATED FORM..ARABIC LETTER REH FINAL FORM
+ FEAF..FEB0    ; NFKC_CF; 0632           # Lo   [2] ARABIC LETTER ZAIN ISOLATED FORM..ARABIC LETTER ZAIN FINAL FORM
+ FEB1..FEB4    ; NFKC_CF; 0633           # Lo   [4] ARABIC LETTER SEEN ISOLATED FORM..ARABIC LETTER SEEN MEDIAL FORM
+ FEB5..FEB8    ; NFKC_CF; 0634           # Lo   [4] ARABIC LETTER SHEEN ISOLATED FORM..ARABIC LETTER SHEEN MEDIAL FORM
+ FEB9..FEBC    ; NFKC_CF; 0635           # Lo   [4] ARABIC LETTER SAD ISOLATED FORM..ARABIC LETTER SAD MEDIAL FORM
+ FEBD..FEC0    ; NFKC_CF; 0636           # Lo   [4] ARABIC LETTER DAD ISOLATED FORM..ARABIC LETTER DAD MEDIAL FORM
+ FEC1..FEC4    ; NFKC_CF; 0637           # Lo   [4] ARABIC LETTER TAH ISOLATED FORM..ARABIC LETTER TAH MEDIAL FORM
+ FEC5..FEC8    ; NFKC_CF; 0638           # Lo   [4] ARABIC LETTER ZAH ISOLATED FORM..ARABIC LETTER ZAH MEDIAL FORM
+ FEC9..FECC    ; NFKC_CF; 0639           # Lo   [4] ARABIC LETTER AIN ISOLATED FORM..ARABIC LETTER AIN MEDIAL FORM
+ FECD..FED0    ; NFKC_CF; 063A           # Lo   [4] ARABIC LETTER GHAIN ISOLATED FORM..ARABIC LETTER GHAIN MEDIAL FORM
+ FED1..FED4    ; NFKC_CF; 0641           # Lo   [4] ARABIC LETTER FEH ISOLATED FORM..ARABIC LETTER FEH MEDIAL FORM
+ FED5..FED8    ; NFKC_CF; 0642           # Lo   [4] ARABIC LETTER QAF ISOLATED FORM..ARABIC LETTER QAF MEDIAL FORM
+ FED9..FEDC    ; NFKC_CF; 0643           # Lo   [4] ARABIC LETTER KAF ISOLATED FORM..ARABIC LETTER KAF MEDIAL FORM
+ FEDD..FEE0    ; NFKC_CF; 0644           # Lo   [4] ARABIC LETTER LAM ISOLATED FORM..ARABIC LETTER LAM MEDIAL FORM
+ FEE1..FEE4    ; NFKC_CF; 0645           # Lo   [4] ARABIC LETTER MEEM ISOLATED FORM..ARABIC LETTER MEEM MEDIAL FORM
+ FEE5..FEE8    ; NFKC_CF; 0646           # Lo   [4] ARABIC LETTER NOON ISOLATED FORM..ARABIC LETTER NOON MEDIAL FORM
+ FEE9..FEEC    ; NFKC_CF; 0647           # Lo   [4] ARABIC LETTER HEH ISOLATED FORM..ARABIC LETTER HEH MEDIAL FORM
+ FEED..FEEE    ; NFKC_CF; 0648           # Lo   [2] ARABIC LETTER WAW ISOLATED FORM..ARABIC LETTER WAW FINAL FORM
+ FEEF..FEF0    ; NFKC_CF; 0649           # Lo   [2] ARABIC LETTER ALEF MAKSURA ISOLATED FORM..ARABIC LETTER ALEF MAKSURA FINAL FORM
+ FEF1..FEF4    ; NFKC_CF; 064A           # Lo   [4] ARABIC LETTER YEH ISOLATED FORM..ARABIC LETTER YEH MEDIAL FORM
+ FEF5..FEF6    ; NFKC_CF; 0644 0622      # Lo   [2] ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH MADDA ABOVE FINAL FORM
+ FEF7..FEF8    ; NFKC_CF; 0644 0623      # Lo   [2] ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH HAMZA ABOVE FINAL FORM
+ FEF9..FEFA    ; NFKC_CF; 0644 0625      # Lo   [2] ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF WITH HAMZA BELOW FINAL FORM
+ FEFB..FEFC    ; NFKC_CF; 0644 0627      # Lo   [2] ARABIC LIGATURE LAM WITH ALEF ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FEFF          ; NFKC_CF;                # Cf       ZERO WIDTH NO-BREAK SPACE
+ FF01          ; NFKC_CF; 0021           # Po       FULLWIDTH EXCLAMATION MARK
+ FF02          ; NFKC_CF; 0022           # Po       FULLWIDTH QUOTATION MARK
+ FF03          ; NFKC_CF; 0023           # Po       FULLWIDTH NUMBER SIGN
+ FF04          ; NFKC_CF; 0024           # Sc       FULLWIDTH DOLLAR SIGN
+ FF05          ; NFKC_CF; 0025           # Po       FULLWIDTH PERCENT SIGN
+ FF06          ; NFKC_CF; 0026           # Po       FULLWIDTH AMPERSAND
+ FF07          ; NFKC_CF; 0027           # Po       FULLWIDTH APOSTROPHE
+ FF08          ; NFKC_CF; 0028           # Ps       FULLWIDTH LEFT PARENTHESIS
+ FF09          ; NFKC_CF; 0029           # Pe       FULLWIDTH RIGHT PARENTHESIS
+ FF0A          ; NFKC_CF; 002A           # Po       FULLWIDTH ASTERISK
+ FF0B          ; NFKC_CF; 002B           # Sm       FULLWIDTH PLUS SIGN
+ FF0C          ; NFKC_CF; 002C           # Po       FULLWIDTH COMMA
+ FF0D          ; NFKC_CF; 002D           # Pd       FULLWIDTH HYPHEN-MINUS
+ FF0E          ; NFKC_CF; 002E           # Po       FULLWIDTH FULL STOP
+ FF0F          ; NFKC_CF; 002F           # Po       FULLWIDTH SOLIDUS
+ FF10          ; NFKC_CF; 0030           # Nd       FULLWIDTH DIGIT ZERO
+ FF11          ; NFKC_CF; 0031           # Nd       FULLWIDTH DIGIT ONE
+ FF12          ; NFKC_CF; 0032           # Nd       FULLWIDTH DIGIT TWO
+ FF13          ; NFKC_CF; 0033           # Nd       FULLWIDTH DIGIT THREE
+ FF14          ; NFKC_CF; 0034           # Nd       FULLWIDTH DIGIT FOUR
+ FF15          ; NFKC_CF; 0035           # Nd       FULLWIDTH DIGIT FIVE
+ FF16          ; NFKC_CF; 0036           # Nd       FULLWIDTH DIGIT SIX
+ FF17          ; NFKC_CF; 0037           # Nd       FULLWIDTH DIGIT SEVEN
+ FF18          ; NFKC_CF; 0038           # Nd       FULLWIDTH DIGIT EIGHT
+ FF19          ; NFKC_CF; 0039           # Nd       FULLWIDTH DIGIT NINE
+ FF1A          ; NFKC_CF; 003A           # Po       FULLWIDTH COLON
+ FF1B          ; NFKC_CF; 003B           # Po       FULLWIDTH SEMICOLON
+ FF1C          ; NFKC_CF; 003C           # Sm       FULLWIDTH LESS-THAN SIGN
+ FF1D          ; NFKC_CF; 003D           # Sm       FULLWIDTH EQUALS SIGN
+ FF1E          ; NFKC_CF; 003E           # Sm       FULLWIDTH GREATER-THAN SIGN
+ FF1F          ; NFKC_CF; 003F           # Po       FULLWIDTH QUESTION MARK
+ FF20          ; NFKC_CF; 0040           # Po       FULLWIDTH COMMERCIAL AT
+ FF21          ; NFKC_CF; 0061           # L&       FULLWIDTH LATIN CAPITAL LETTER A
+ FF22          ; NFKC_CF; 0062           # L&       FULLWIDTH LATIN CAPITAL LETTER B
+ FF23          ; NFKC_CF; 0063           # L&       FULLWIDTH LATIN CAPITAL LETTER C
+ FF24          ; NFKC_CF; 0064           # L&       FULLWIDTH LATIN CAPITAL LETTER D
+ FF25          ; NFKC_CF; 0065           # L&       FULLWIDTH LATIN CAPITAL LETTER E
+ FF26          ; NFKC_CF; 0066           # L&       FULLWIDTH LATIN CAPITAL LETTER F
+ FF27          ; NFKC_CF; 0067           # L&       FULLWIDTH LATIN CAPITAL LETTER G
+ FF28          ; NFKC_CF; 0068           # L&       FULLWIDTH LATIN CAPITAL LETTER H
+ FF29          ; NFKC_CF; 0069           # L&       FULLWIDTH LATIN CAPITAL LETTER I
+ FF2A          ; NFKC_CF; 006A           # L&       FULLWIDTH LATIN CAPITAL LETTER J
+ FF2B          ; NFKC_CF; 006B           # L&       FULLWIDTH LATIN CAPITAL LETTER K
+ FF2C          ; NFKC_CF; 006C           # L&       FULLWIDTH LATIN CAPITAL LETTER L
+ FF2D          ; NFKC_CF; 006D           # L&       FULLWIDTH LATIN CAPITAL LETTER M
+ FF2E          ; NFKC_CF; 006E           # L&       FULLWIDTH LATIN CAPITAL LETTER N
+ FF2F          ; NFKC_CF; 006F           # L&       FULLWIDTH LATIN CAPITAL LETTER O
+ FF30          ; NFKC_CF; 0070           # L&       FULLWIDTH LATIN CAPITAL LETTER P
+ FF31          ; NFKC_CF; 0071           # L&       FULLWIDTH LATIN CAPITAL LETTER Q
+ FF32          ; NFKC_CF; 0072           # L&       FULLWIDTH LATIN CAPITAL LETTER R
+ FF33          ; NFKC_CF; 0073           # L&       FULLWIDTH LATIN CAPITAL LETTER S
+ FF34          ; NFKC_CF; 0074           # L&       FULLWIDTH LATIN CAPITAL LETTER T
+ FF35          ; NFKC_CF; 0075           # L&       FULLWIDTH LATIN CAPITAL LETTER U
+ FF36          ; NFKC_CF; 0076           # L&       FULLWIDTH LATIN CAPITAL LETTER V
+ FF37          ; NFKC_CF; 0077           # L&       FULLWIDTH LATIN CAPITAL LETTER W
+ FF38          ; NFKC_CF; 0078           # L&       FULLWIDTH LATIN CAPITAL LETTER X
+ FF39          ; NFKC_CF; 0079           # L&       FULLWIDTH LATIN CAPITAL LETTER Y
+ FF3A          ; NFKC_CF; 007A           # L&       FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3B          ; NFKC_CF; 005B           # Ps       FULLWIDTH LEFT SQUARE BRACKET
+ FF3C          ; NFKC_CF; 005C           # Po       FULLWIDTH REVERSE SOLIDUS
+ FF3D          ; NFKC_CF; 005D           # Pe       FULLWIDTH RIGHT SQUARE BRACKET
+ FF3E          ; NFKC_CF; 005E           # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF3F          ; NFKC_CF; 005F           # Pc       FULLWIDTH LOW LINE
+ FF40          ; NFKC_CF; 0060           # Sk       FULLWIDTH GRAVE ACCENT
+ FF41          ; NFKC_CF; 0061           # L&       FULLWIDTH LATIN SMALL LETTER A
+ FF42          ; NFKC_CF; 0062           # L&       FULLWIDTH LATIN SMALL LETTER B
+ FF43          ; NFKC_CF; 0063           # L&       FULLWIDTH LATIN SMALL LETTER C
+ FF44          ; NFKC_CF; 0064           # L&       FULLWIDTH LATIN SMALL LETTER D
+ FF45          ; NFKC_CF; 0065           # L&       FULLWIDTH LATIN SMALL LETTER E
+ FF46          ; NFKC_CF; 0066           # L&       FULLWIDTH LATIN SMALL LETTER F
+ FF47          ; NFKC_CF; 0067           # L&       FULLWIDTH LATIN SMALL LETTER G
+ FF48          ; NFKC_CF; 0068           # L&       FULLWIDTH LATIN SMALL LETTER H
+ FF49          ; NFKC_CF; 0069           # L&       FULLWIDTH LATIN SMALL LETTER I
+ FF4A          ; NFKC_CF; 006A           # L&       FULLWIDTH LATIN SMALL LETTER J
+ FF4B          ; NFKC_CF; 006B           # L&       FULLWIDTH LATIN SMALL LETTER K
+ FF4C          ; NFKC_CF; 006C           # L&       FULLWIDTH LATIN SMALL LETTER L
+ FF4D          ; NFKC_CF; 006D           # L&       FULLWIDTH LATIN SMALL LETTER M
+ FF4E          ; NFKC_CF; 006E           # L&       FULLWIDTH LATIN SMALL LETTER N
+ FF4F          ; NFKC_CF; 006F           # L&       FULLWIDTH LATIN SMALL LETTER O
+ FF50          ; NFKC_CF; 0070           # L&       FULLWIDTH LATIN SMALL LETTER P
+ FF51          ; NFKC_CF; 0071           # L&       FULLWIDTH LATIN SMALL LETTER Q
+ FF52          ; NFKC_CF; 0072           # L&       FULLWIDTH LATIN SMALL LETTER R
+ FF53          ; NFKC_CF; 0073           # L&       FULLWIDTH LATIN SMALL LETTER S
+ FF54          ; NFKC_CF; 0074           # L&       FULLWIDTH LATIN SMALL LETTER T
+ FF55          ; NFKC_CF; 0075           # L&       FULLWIDTH LATIN SMALL LETTER U
+ FF56          ; NFKC_CF; 0076           # L&       FULLWIDTH LATIN SMALL LETTER V
+ FF57          ; NFKC_CF; 0077           # L&       FULLWIDTH LATIN SMALL LETTER W
+ FF58          ; NFKC_CF; 0078           # L&       FULLWIDTH LATIN SMALL LETTER X
+ FF59          ; NFKC_CF; 0079           # L&       FULLWIDTH LATIN SMALL LETTER Y
+ FF5A          ; NFKC_CF; 007A           # L&       FULLWIDTH LATIN SMALL LETTER Z
+ FF5B          ; NFKC_CF; 007B           # Ps       FULLWIDTH LEFT CURLY BRACKET
+ FF5C          ; NFKC_CF; 007C           # Sm       FULLWIDTH VERTICAL LINE
+ FF5D          ; NFKC_CF; 007D           # Pe       FULLWIDTH RIGHT CURLY BRACKET
+ FF5E          ; NFKC_CF; 007E           # Sm       FULLWIDTH TILDE
+ FF5F          ; NFKC_CF; 2985           # Ps       FULLWIDTH LEFT WHITE PARENTHESIS
+ FF60          ; NFKC_CF; 2986           # Pe       FULLWIDTH RIGHT WHITE PARENTHESIS
+ FF61          ; NFKC_CF; 3002           # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
+ FF62          ; NFKC_CF; 300C           # Ps       HALFWIDTH LEFT CORNER BRACKET
+ FF63          ; NFKC_CF; 300D           # Pe       HALFWIDTH RIGHT CORNER BRACKET
+ FF64          ; NFKC_CF; 3001           # Po       HALFWIDTH IDEOGRAPHIC COMMA
+ FF65          ; NFKC_CF; 30FB           # Po       HALFWIDTH KATAKANA MIDDLE DOT
+ FF66          ; NFKC_CF; 30F2           # Lo       HALFWIDTH KATAKANA LETTER WO
+ FF67          ; NFKC_CF; 30A1           # Lo       HALFWIDTH KATAKANA LETTER SMALL A
+ FF68          ; NFKC_CF; 30A3           # Lo       HALFWIDTH KATAKANA LETTER SMALL I
+ FF69          ; NFKC_CF; 30A5           # Lo       HALFWIDTH KATAKANA LETTER SMALL U
+ FF6A          ; NFKC_CF; 30A7           # Lo       HALFWIDTH KATAKANA LETTER SMALL E
+ FF6B          ; NFKC_CF; 30A9           # Lo       HALFWIDTH KATAKANA LETTER SMALL O
+ FF6C          ; NFKC_CF; 30E3           # Lo       HALFWIDTH KATAKANA LETTER SMALL YA
+ FF6D          ; NFKC_CF; 30E5           # Lo       HALFWIDTH KATAKANA LETTER SMALL YU
+ FF6E          ; NFKC_CF; 30E7           # Lo       HALFWIDTH KATAKANA LETTER SMALL YO
+ FF6F          ; NFKC_CF; 30C3           # Lo       HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; NFKC_CF; 30FC           # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71          ; NFKC_CF; 30A2           # Lo       HALFWIDTH KATAKANA LETTER A
+ FF72          ; NFKC_CF; 30A4           # Lo       HALFWIDTH KATAKANA LETTER I
+ FF73          ; NFKC_CF; 30A6           # Lo       HALFWIDTH KATAKANA LETTER U
+ FF74          ; NFKC_CF; 30A8           # Lo       HALFWIDTH KATAKANA LETTER E
+ FF75          ; NFKC_CF; 30AA           # Lo       HALFWIDTH KATAKANA LETTER O
+ FF76          ; NFKC_CF; 30AB           # Lo       HALFWIDTH KATAKANA LETTER KA
+ FF77          ; NFKC_CF; 30AD           # Lo       HALFWIDTH KATAKANA LETTER KI
+ FF78          ; NFKC_CF; 30AF           # Lo       HALFWIDTH KATAKANA LETTER KU
+ FF79          ; NFKC_CF; 30B1           # Lo       HALFWIDTH KATAKANA LETTER KE
+ FF7A          ; NFKC_CF; 30B3           # Lo       HALFWIDTH KATAKANA LETTER KO
+ FF7B          ; NFKC_CF; 30B5           # Lo       HALFWIDTH KATAKANA LETTER SA
+ FF7C          ; NFKC_CF; 30B7           # Lo       HALFWIDTH KATAKANA LETTER SI
+ FF7D          ; NFKC_CF; 30B9           # Lo       HALFWIDTH KATAKANA LETTER SU
+ FF7E          ; NFKC_CF; 30BB           # Lo       HALFWIDTH KATAKANA LETTER SE
+ FF7F          ; NFKC_CF; 30BD           # Lo       HALFWIDTH KATAKANA LETTER SO
+ FF80          ; NFKC_CF; 30BF           # Lo       HALFWIDTH KATAKANA LETTER TA
+ FF81          ; NFKC_CF; 30C1           # Lo       HALFWIDTH KATAKANA LETTER TI
+ FF82          ; NFKC_CF; 30C4           # Lo       HALFWIDTH KATAKANA LETTER TU
+ FF83          ; NFKC_CF; 30C6           # Lo       HALFWIDTH KATAKANA LETTER TE
+ FF84          ; NFKC_CF; 30C8           # Lo       HALFWIDTH KATAKANA LETTER TO
+ FF85          ; NFKC_CF; 30CA           # Lo       HALFWIDTH KATAKANA LETTER NA
+ FF86          ; NFKC_CF; 30CB           # Lo       HALFWIDTH KATAKANA LETTER NI
+ FF87          ; NFKC_CF; 30CC           # Lo       HALFWIDTH KATAKANA LETTER NU
+ FF88          ; NFKC_CF; 30CD           # Lo       HALFWIDTH KATAKANA LETTER NE
+ FF89          ; NFKC_CF; 30CE           # Lo       HALFWIDTH KATAKANA LETTER NO
+ FF8A          ; NFKC_CF; 30CF           # Lo       HALFWIDTH KATAKANA LETTER HA
+ FF8B          ; NFKC_CF; 30D2           # Lo       HALFWIDTH KATAKANA LETTER HI
+ FF8C          ; NFKC_CF; 30D5           # Lo       HALFWIDTH KATAKANA LETTER HU
+ FF8D          ; NFKC_CF; 30D8           # Lo       HALFWIDTH KATAKANA LETTER HE
+ FF8E          ; NFKC_CF; 30DB           # Lo       HALFWIDTH KATAKANA LETTER HO
+ FF8F          ; NFKC_CF; 30DE           # Lo       HALFWIDTH KATAKANA LETTER MA
+ FF90          ; NFKC_CF; 30DF           # Lo       HALFWIDTH KATAKANA LETTER MI
+ FF91          ; NFKC_CF; 30E0           # Lo       HALFWIDTH KATAKANA LETTER MU
+ FF92          ; NFKC_CF; 30E1           # Lo       HALFWIDTH KATAKANA LETTER ME
+ FF93          ; NFKC_CF; 30E2           # Lo       HALFWIDTH KATAKANA LETTER MO
+ FF94          ; NFKC_CF; 30E4           # Lo       HALFWIDTH KATAKANA LETTER YA
+ FF95          ; NFKC_CF; 30E6           # Lo       HALFWIDTH KATAKANA LETTER YU
+ FF96          ; NFKC_CF; 30E8           # Lo       HALFWIDTH KATAKANA LETTER YO
+ FF97          ; NFKC_CF; 30E9           # Lo       HALFWIDTH KATAKANA LETTER RA
+ FF98          ; NFKC_CF; 30EA           # Lo       HALFWIDTH KATAKANA LETTER RI
+ FF99          ; NFKC_CF; 30EB           # Lo       HALFWIDTH KATAKANA LETTER RU
+ FF9A          ; NFKC_CF; 30EC           # Lo       HALFWIDTH KATAKANA LETTER RE
+ FF9B          ; NFKC_CF; 30ED           # Lo       HALFWIDTH KATAKANA LETTER RO
+ FF9C          ; NFKC_CF; 30EF           # Lo       HALFWIDTH KATAKANA LETTER WA
+ FF9D          ; NFKC_CF; 30F3           # Lo       HALFWIDTH KATAKANA LETTER N
+ FF9E          ; NFKC_CF; 3099           # Lm       HALFWIDTH KATAKANA VOICED SOUND MARK
+ FF9F          ; NFKC_CF; 309A           # Lm       HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0          ; NFKC_CF;                # Lo       HALFWIDTH HANGUL FILLER
+ FFA1          ; NFKC_CF; 1100           # Lo       HALFWIDTH HANGUL LETTER KIYEOK
+ FFA2          ; NFKC_CF; 1101           # Lo       HALFWIDTH HANGUL LETTER SSANGKIYEOK
+ FFA3          ; NFKC_CF; 11AA           # Lo       HALFWIDTH HANGUL LETTER KIYEOK-SIOS
+ FFA4          ; NFKC_CF; 1102           # Lo       HALFWIDTH HANGUL LETTER NIEUN
+ FFA5          ; NFKC_CF; 11AC           # Lo       HALFWIDTH HANGUL LETTER NIEUN-CIEUC
+ FFA6          ; NFKC_CF; 11AD           # Lo       HALFWIDTH HANGUL LETTER NIEUN-HIEUH
+ FFA7          ; NFKC_CF; 1103           # Lo       HALFWIDTH HANGUL LETTER TIKEUT
+ FFA8          ; NFKC_CF; 1104           # Lo       HALFWIDTH HANGUL LETTER SSANGTIKEUT
+ FFA9          ; NFKC_CF; 1105           # Lo       HALFWIDTH HANGUL LETTER RIEUL
+ FFAA          ; NFKC_CF; 11B0           # Lo       HALFWIDTH HANGUL LETTER RIEUL-KIYEOK
+ FFAB          ; NFKC_CF; 11B1           # Lo       HALFWIDTH HANGUL LETTER RIEUL-MIEUM
+ FFAC          ; NFKC_CF; 11B2           # Lo       HALFWIDTH HANGUL LETTER RIEUL-PIEUP
+ FFAD          ; NFKC_CF; 11B3           # Lo       HALFWIDTH HANGUL LETTER RIEUL-SIOS
+ FFAE          ; NFKC_CF; 11B4           # Lo       HALFWIDTH HANGUL LETTER RIEUL-THIEUTH
+ FFAF          ; NFKC_CF; 11B5           # Lo       HALFWIDTH HANGUL LETTER RIEUL-PHIEUPH
+ FFB0          ; NFKC_CF; 111A           # Lo       HALFWIDTH HANGUL LETTER RIEUL-HIEUH
+ FFB1          ; NFKC_CF; 1106           # Lo       HALFWIDTH HANGUL LETTER MIEUM
+ FFB2          ; NFKC_CF; 1107           # Lo       HALFWIDTH HANGUL LETTER PIEUP
+ FFB3          ; NFKC_CF; 1108           # Lo       HALFWIDTH HANGUL LETTER SSANGPIEUP
+ FFB4          ; NFKC_CF; 1121           # Lo       HALFWIDTH HANGUL LETTER PIEUP-SIOS
+ FFB5          ; NFKC_CF; 1109           # Lo       HALFWIDTH HANGUL LETTER SIOS
+ FFB6          ; NFKC_CF; 110A           # Lo       HALFWIDTH HANGUL LETTER SSANGSIOS
+ FFB7          ; NFKC_CF; 110B           # Lo       HALFWIDTH HANGUL LETTER IEUNG
+ FFB8          ; NFKC_CF; 110C           # Lo       HALFWIDTH HANGUL LETTER CIEUC
+ FFB9          ; NFKC_CF; 110D           # Lo       HALFWIDTH HANGUL LETTER SSANGCIEUC
+ FFBA          ; NFKC_CF; 110E           # Lo       HALFWIDTH HANGUL LETTER CHIEUCH
+ FFBB          ; NFKC_CF; 110F           # Lo       HALFWIDTH HANGUL LETTER KHIEUKH
+ FFBC          ; NFKC_CF; 1110           # Lo       HALFWIDTH HANGUL LETTER THIEUTH
+ FFBD          ; NFKC_CF; 1111           # Lo       HALFWIDTH HANGUL LETTER PHIEUPH
+ FFBE          ; NFKC_CF; 1112           # Lo       HALFWIDTH HANGUL LETTER HIEUH
+ FFC2          ; NFKC_CF; 1161           # Lo       HALFWIDTH HANGUL LETTER A
+ FFC3          ; NFKC_CF; 1162           # Lo       HALFWIDTH HANGUL LETTER AE
+ FFC4          ; NFKC_CF; 1163           # Lo       HALFWIDTH HANGUL LETTER YA
+ FFC5          ; NFKC_CF; 1164           # Lo       HALFWIDTH HANGUL LETTER YAE
+ FFC6          ; NFKC_CF; 1165           # Lo       HALFWIDTH HANGUL LETTER EO
+ FFC7          ; NFKC_CF; 1166           # Lo       HALFWIDTH HANGUL LETTER E
+ FFCA          ; NFKC_CF; 1167           # Lo       HALFWIDTH HANGUL LETTER YEO
+ FFCB          ; NFKC_CF; 1168           # Lo       HALFWIDTH HANGUL LETTER YE
+ FFCC          ; NFKC_CF; 1169           # Lo       HALFWIDTH HANGUL LETTER O
+ FFCD          ; NFKC_CF; 116A           # Lo       HALFWIDTH HANGUL LETTER WA
+ FFCE          ; NFKC_CF; 116B           # Lo       HALFWIDTH HANGUL LETTER WAE
+ FFCF          ; NFKC_CF; 116C           # Lo       HALFWIDTH HANGUL LETTER OE
+ FFD2          ; NFKC_CF; 116D           # Lo       HALFWIDTH HANGUL LETTER YO
+ FFD3          ; NFKC_CF; 116E           # Lo       HALFWIDTH HANGUL LETTER U
+ FFD4          ; NFKC_CF; 116F           # Lo       HALFWIDTH HANGUL LETTER WEO
+ FFD5          ; NFKC_CF; 1170           # Lo       HALFWIDTH HANGUL LETTER WE
+ FFD6          ; NFKC_CF; 1171           # Lo       HALFWIDTH HANGUL LETTER WI
+ FFD7          ; NFKC_CF; 1172           # Lo       HALFWIDTH HANGUL LETTER YU
+ FFDA          ; NFKC_CF; 1173           # Lo       HALFWIDTH HANGUL LETTER EU
+ FFDB          ; NFKC_CF; 1174           # Lo       HALFWIDTH HANGUL LETTER YI
+ FFDC          ; NFKC_CF; 1175           # Lo       HALFWIDTH HANGUL LETTER I
+ FFE0          ; NFKC_CF; 00A2           # Sc       FULLWIDTH CENT SIGN
+ FFE1          ; NFKC_CF; 00A3           # Sc       FULLWIDTH POUND SIGN
+ FFE2          ; NFKC_CF; 00AC           # Sm       FULLWIDTH NOT SIGN
+ FFE3          ; NFKC_CF; 0020 0304      # Sk       FULLWIDTH MACRON
+ FFE4          ; NFKC_CF; 00A6           # So       FULLWIDTH BROKEN BAR
+ FFE5          ; NFKC_CF; 00A5           # Sc       FULLWIDTH YEN SIGN
+ FFE6          ; NFKC_CF; 20A9           # Sc       FULLWIDTH WON SIGN
+ FFE8          ; NFKC_CF; 2502           # So       HALFWIDTH FORMS LIGHT VERTICAL
+ FFE9          ; NFKC_CF; 2190           # Sm       HALFWIDTH LEFTWARDS ARROW
+ FFEA          ; NFKC_CF; 2191           # Sm       HALFWIDTH UPWARDS ARROW
+ FFEB          ; NFKC_CF; 2192           # Sm       HALFWIDTH RIGHTWARDS ARROW
+ FFEC          ; NFKC_CF; 2193           # Sm       HALFWIDTH DOWNWARDS ARROW
+ FFED          ; NFKC_CF; 25A0           # So       HALFWIDTH BLACK SQUARE
+ FFEE          ; NFKC_CF; 25CB           # So       HALFWIDTH WHITE CIRCLE
+ FFF0..FFF8    ; NFKC_CF;                # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
+ 10400         ; NFKC_CF; 10428          # L&       DESERET CAPITAL LETTER LONG I
+ 10401         ; NFKC_CF; 10429          # L&       DESERET CAPITAL LETTER LONG E
+ 10402         ; NFKC_CF; 1042A          # L&       DESERET CAPITAL LETTER LONG A
+ 10403         ; NFKC_CF; 1042B          # L&       DESERET CAPITAL LETTER LONG AH
+ 10404         ; NFKC_CF; 1042C          # L&       DESERET CAPITAL LETTER LONG O
+ 10405         ; NFKC_CF; 1042D          # L&       DESERET CAPITAL LETTER LONG OO
+ 10406         ; NFKC_CF; 1042E          # L&       DESERET CAPITAL LETTER SHORT I
+ 10407         ; NFKC_CF; 1042F          # L&       DESERET CAPITAL LETTER SHORT E
+ 10408         ; NFKC_CF; 10430          # L&       DESERET CAPITAL LETTER SHORT A
+ 10409         ; NFKC_CF; 10431          # L&       DESERET CAPITAL LETTER SHORT AH
+ 1040A         ; NFKC_CF; 10432          # L&       DESERET CAPITAL LETTER SHORT O
+ 1040B         ; NFKC_CF; 10433          # L&       DESERET CAPITAL LETTER SHORT OO
+ 1040C         ; NFKC_CF; 10434          # L&       DESERET CAPITAL LETTER AY
+ 1040D         ; NFKC_CF; 10435          # L&       DESERET CAPITAL LETTER OW
+ 1040E         ; NFKC_CF; 10436          # L&       DESERET CAPITAL LETTER WU
+ 1040F         ; NFKC_CF; 10437          # L&       DESERET CAPITAL LETTER YEE
+ 10410         ; NFKC_CF; 10438          # L&       DESERET CAPITAL LETTER H
+ 10411         ; NFKC_CF; 10439          # L&       DESERET CAPITAL LETTER PEE
+ 10412         ; NFKC_CF; 1043A          # L&       DESERET CAPITAL LETTER BEE
+ 10413         ; NFKC_CF; 1043B          # L&       DESERET CAPITAL LETTER TEE
+ 10414         ; NFKC_CF; 1043C          # L&       DESERET CAPITAL LETTER DEE
+ 10415         ; NFKC_CF; 1043D          # L&       DESERET CAPITAL LETTER CHEE
+ 10416         ; NFKC_CF; 1043E          # L&       DESERET CAPITAL LETTER JEE
+ 10417         ; NFKC_CF; 1043F          # L&       DESERET CAPITAL LETTER KAY
+ 10418         ; NFKC_CF; 10440          # L&       DESERET CAPITAL LETTER GAY
+ 10419         ; NFKC_CF; 10441          # L&       DESERET CAPITAL LETTER EF
+ 1041A         ; NFKC_CF; 10442          # L&       DESERET CAPITAL LETTER VEE
+ 1041B         ; NFKC_CF; 10443          # L&       DESERET CAPITAL LETTER ETH
+ 1041C         ; NFKC_CF; 10444          # L&       DESERET CAPITAL LETTER THEE
+ 1041D         ; NFKC_CF; 10445          # L&       DESERET CAPITAL LETTER ES
+ 1041E         ; NFKC_CF; 10446          # L&       DESERET CAPITAL LETTER ZEE
+ 1041F         ; NFKC_CF; 10447          # L&       DESERET CAPITAL LETTER ESH
+ 10420         ; NFKC_CF; 10448          # L&       DESERET CAPITAL LETTER ZHEE
+ 10421         ; NFKC_CF; 10449          # L&       DESERET CAPITAL LETTER ER
+ 10422         ; NFKC_CF; 1044A          # L&       DESERET CAPITAL LETTER EL
+ 10423         ; NFKC_CF; 1044B          # L&       DESERET CAPITAL LETTER EM
+ 10424         ; NFKC_CF; 1044C          # L&       DESERET CAPITAL LETTER EN
+ 10425         ; NFKC_CF; 1044D          # L&       DESERET CAPITAL LETTER ENG
+ 10426         ; NFKC_CF; 1044E          # L&       DESERET CAPITAL LETTER OI
+ 10427         ; NFKC_CF; 1044F          # L&       DESERET CAPITAL LETTER EW
+ 104B0         ; NFKC_CF; 104D8          # L&       OSAGE CAPITAL LETTER A
+ 104B1         ; NFKC_CF; 104D9          # L&       OSAGE CAPITAL LETTER AI
+ 104B2         ; NFKC_CF; 104DA          # L&       OSAGE CAPITAL LETTER AIN
+ 104B3         ; NFKC_CF; 104DB          # L&       OSAGE CAPITAL LETTER AH
+ 104B4         ; NFKC_CF; 104DC          # L&       OSAGE CAPITAL LETTER BRA
+ 104B5         ; NFKC_CF; 104DD          # L&       OSAGE CAPITAL LETTER CHA
+ 104B6         ; NFKC_CF; 104DE          # L&       OSAGE CAPITAL LETTER EHCHA
+ 104B7         ; NFKC_CF; 104DF          # L&       OSAGE CAPITAL LETTER E
+ 104B8         ; NFKC_CF; 104E0          # L&       OSAGE CAPITAL LETTER EIN
+ 104B9         ; NFKC_CF; 104E1          # L&       OSAGE CAPITAL LETTER HA
+ 104BA         ; NFKC_CF; 104E2          # L&       OSAGE CAPITAL LETTER HYA
+ 104BB         ; NFKC_CF; 104E3          # L&       OSAGE CAPITAL LETTER I
+ 104BC         ; NFKC_CF; 104E4          # L&       OSAGE CAPITAL LETTER KA
+ 104BD         ; NFKC_CF; 104E5          # L&       OSAGE CAPITAL LETTER EHKA
+ 104BE         ; NFKC_CF; 104E6          # L&       OSAGE CAPITAL LETTER KYA
+ 104BF         ; NFKC_CF; 104E7          # L&       OSAGE CAPITAL LETTER LA
+ 104C0         ; NFKC_CF; 104E8          # L&       OSAGE CAPITAL LETTER MA
+ 104C1         ; NFKC_CF; 104E9          # L&       OSAGE CAPITAL LETTER NA
+ 104C2         ; NFKC_CF; 104EA          # L&       OSAGE CAPITAL LETTER O
+ 104C3         ; NFKC_CF; 104EB          # L&       OSAGE CAPITAL LETTER OIN
+ 104C4         ; NFKC_CF; 104EC          # L&       OSAGE CAPITAL LETTER PA
+ 104C5         ; NFKC_CF; 104ED          # L&       OSAGE CAPITAL LETTER EHPA
+ 104C6         ; NFKC_CF; 104EE          # L&       OSAGE CAPITAL LETTER SA
+ 104C7         ; NFKC_CF; 104EF          # L&       OSAGE CAPITAL LETTER SHA
+ 104C8         ; NFKC_CF; 104F0          # L&       OSAGE CAPITAL LETTER TA
+ 104C9         ; NFKC_CF; 104F1          # L&       OSAGE CAPITAL LETTER EHTA
+ 104CA         ; NFKC_CF; 104F2          # L&       OSAGE CAPITAL LETTER TSA
+ 104CB         ; NFKC_CF; 104F3          # L&       OSAGE CAPITAL LETTER EHTSA
+ 104CC         ; NFKC_CF; 104F4          # L&       OSAGE CAPITAL LETTER TSHA
+ 104CD         ; NFKC_CF; 104F5          # L&       OSAGE CAPITAL LETTER DHA
+ 104CE         ; NFKC_CF; 104F6          # L&       OSAGE CAPITAL LETTER U
+ 104CF         ; NFKC_CF; 104F7          # L&       OSAGE CAPITAL LETTER WA
+ 104D0         ; NFKC_CF; 104F8          # L&       OSAGE CAPITAL LETTER KHA
+ 104D1         ; NFKC_CF; 104F9          # L&       OSAGE CAPITAL LETTER GHA
+ 104D2         ; NFKC_CF; 104FA          # L&       OSAGE CAPITAL LETTER ZA
+ 104D3         ; NFKC_CF; 104FB          # L&       OSAGE CAPITAL LETTER ZHA
+ 10570         ; NFKC_CF; 10597          # L&       VITHKUQI CAPITAL LETTER A
+ 10571         ; NFKC_CF; 10598          # L&       VITHKUQI CAPITAL LETTER BBE
+ 10572         ; NFKC_CF; 10599          # L&       VITHKUQI CAPITAL LETTER BE
+ 10573         ; NFKC_CF; 1059A          # L&       VITHKUQI CAPITAL LETTER CE
+ 10574         ; NFKC_CF; 1059B          # L&       VITHKUQI CAPITAL LETTER CHE
+ 10575         ; NFKC_CF; 1059C          # L&       VITHKUQI CAPITAL LETTER DE
+ 10576         ; NFKC_CF; 1059D          # L&       VITHKUQI CAPITAL LETTER DHE
+ 10577         ; NFKC_CF; 1059E          # L&       VITHKUQI CAPITAL LETTER EI
+ 10578         ; NFKC_CF; 1059F          # L&       VITHKUQI CAPITAL LETTER E
+ 10579         ; NFKC_CF; 105A0          # L&       VITHKUQI CAPITAL LETTER FE
+ 1057A         ; NFKC_CF; 105A1          # L&       VITHKUQI CAPITAL LETTER GA
+ 1057C         ; NFKC_CF; 105A3          # L&       VITHKUQI CAPITAL LETTER HA
+ 1057D         ; NFKC_CF; 105A4          # L&       VITHKUQI CAPITAL LETTER HHA
+ 1057E         ; NFKC_CF; 105A5          # L&       VITHKUQI CAPITAL LETTER I
+ 1057F         ; NFKC_CF; 105A6          # L&       VITHKUQI CAPITAL LETTER IJE
+ 10580         ; NFKC_CF; 105A7          # L&       VITHKUQI CAPITAL LETTER JE
+ 10581         ; NFKC_CF; 105A8          # L&       VITHKUQI CAPITAL LETTER KA
+ 10582         ; NFKC_CF; 105A9          # L&       VITHKUQI CAPITAL LETTER LA
+ 10583         ; NFKC_CF; 105AA          # L&       VITHKUQI CAPITAL LETTER LLA
+ 10584         ; NFKC_CF; 105AB          # L&       VITHKUQI CAPITAL LETTER ME
+ 10585         ; NFKC_CF; 105AC          # L&       VITHKUQI CAPITAL LETTER NE
+ 10586         ; NFKC_CF; 105AD          # L&       VITHKUQI CAPITAL LETTER NJE
+ 10587         ; NFKC_CF; 105AE          # L&       VITHKUQI CAPITAL LETTER O
+ 10588         ; NFKC_CF; 105AF          # L&       VITHKUQI CAPITAL LETTER PE
+ 10589         ; NFKC_CF; 105B0          # L&       VITHKUQI CAPITAL LETTER QA
+ 1058A         ; NFKC_CF; 105B1          # L&       VITHKUQI CAPITAL LETTER RE
+ 1058C         ; NFKC_CF; 105B3          # L&       VITHKUQI CAPITAL LETTER SE
+ 1058D         ; NFKC_CF; 105B4          # L&       VITHKUQI CAPITAL LETTER SHE
+ 1058E         ; NFKC_CF; 105B5          # L&       VITHKUQI CAPITAL LETTER TE
+ 1058F         ; NFKC_CF; 105B6          # L&       VITHKUQI CAPITAL LETTER THE
+ 10590         ; NFKC_CF; 105B7          # L&       VITHKUQI CAPITAL LETTER U
+ 10591         ; NFKC_CF; 105B8          # L&       VITHKUQI CAPITAL LETTER VE
+ 10592         ; NFKC_CF; 105B9          # L&       VITHKUQI CAPITAL LETTER XE
+ 10594         ; NFKC_CF; 105BB          # L&       VITHKUQI CAPITAL LETTER Y
+ 10595         ; NFKC_CF; 105BC          # L&       VITHKUQI CAPITAL LETTER ZE
+ 10781         ; NFKC_CF; 02D0           # Lm       MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON
+ 10782         ; NFKC_CF; 02D1           # Lm       MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
+ 10783         ; NFKC_CF; 00E6           # Lm       MODIFIER LETTER SMALL AE
+ 10784         ; NFKC_CF; 0299           # Lm       MODIFIER LETTER SMALL CAPITAL B
+ 10785         ; NFKC_CF; 0253           # Lm       MODIFIER LETTER SMALL B WITH HOOK
+ 10787         ; NFKC_CF; 02A3           # Lm       MODIFIER LETTER SMALL DZ DIGRAPH
+ 10788         ; NFKC_CF; AB66           # Lm       MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK
+ 10789         ; NFKC_CF; 02A5           # Lm       MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL
+ 1078A         ; NFKC_CF; 02A4           # Lm       MODIFIER LETTER SMALL DEZH DIGRAPH
+ 1078B         ; NFKC_CF; 0256           # Lm       MODIFIER LETTER SMALL D WITH TAIL
+ 1078C         ; NFKC_CF; 0257           # Lm       MODIFIER LETTER SMALL D WITH HOOK
+ 1078D         ; NFKC_CF; 1D91           # Lm       MODIFIER LETTER SMALL D WITH HOOK AND TAIL
+ 1078E         ; NFKC_CF; 0258           # Lm       MODIFIER LETTER SMALL REVERSED E
+ 1078F         ; NFKC_CF; 025E           # Lm       MODIFIER LETTER SMALL CLOSED REVERSED OPEN E
+ 10790         ; NFKC_CF; 02A9           # Lm       MODIFIER LETTER SMALL FENG DIGRAPH
+ 10791         ; NFKC_CF; 0264           # Lm       MODIFIER LETTER SMALL RAMS HORN
+ 10792         ; NFKC_CF; 0262           # Lm       MODIFIER LETTER SMALL CAPITAL G
+ 10793         ; NFKC_CF; 0260           # Lm       MODIFIER LETTER SMALL G WITH HOOK
+ 10794         ; NFKC_CF; 029B           # Lm       MODIFIER LETTER SMALL CAPITAL G WITH HOOK
+ 10795         ; NFKC_CF; 0127           # Lm       MODIFIER LETTER SMALL H WITH STROKE
+ 10796         ; NFKC_CF; 029C           # Lm       MODIFIER LETTER SMALL CAPITAL H
+ 10797         ; NFKC_CF; 0267           # Lm       MODIFIER LETTER SMALL HENG WITH HOOK
+ 10798         ; NFKC_CF; 0284           # Lm       MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK
+ 10799         ; NFKC_CF; 02AA           # Lm       MODIFIER LETTER SMALL LS DIGRAPH
+ 1079A         ; NFKC_CF; 02AB           # Lm       MODIFIER LETTER SMALL LZ DIGRAPH
+ 1079B         ; NFKC_CF; 026C           # Lm       MODIFIER LETTER SMALL L WITH BELT
+ 1079C         ; NFKC_CF; 1DF04          # Lm       MODIFIER LETTER SMALL CAPITAL L WITH BELT
+ 1079D         ; NFKC_CF; A78E           # Lm       MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT
+ 1079E         ; NFKC_CF; 026E           # Lm       MODIFIER LETTER SMALL LEZH
+ 1079F         ; NFKC_CF; 1DF05          # Lm       MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK
+ 107A0         ; NFKC_CF; 028E           # Lm       MODIFIER LETTER SMALL TURNED Y
+ 107A1         ; NFKC_CF; 1DF06          # Lm       MODIFIER LETTER SMALL TURNED Y WITH BELT
+ 107A2         ; NFKC_CF; 00F8           # Lm       MODIFIER LETTER SMALL O WITH STROKE
+ 107A3         ; NFKC_CF; 0276           # Lm       MODIFIER LETTER SMALL CAPITAL OE
+ 107A4         ; NFKC_CF; 0277           # Lm       MODIFIER LETTER SMALL CLOSED OMEGA
+ 107A5         ; NFKC_CF; 0071           # Lm       MODIFIER LETTER SMALL Q
+ 107A6         ; NFKC_CF; 027A           # Lm       MODIFIER LETTER SMALL TURNED R WITH LONG LEG
+ 107A7         ; NFKC_CF; 1DF08          # Lm       MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK
+ 107A8         ; NFKC_CF; 027D           # Lm       MODIFIER LETTER SMALL R WITH TAIL
+ 107A9         ; NFKC_CF; 027E           # Lm       MODIFIER LETTER SMALL R WITH FISHHOOK
+ 107AA         ; NFKC_CF; 0280           # Lm       MODIFIER LETTER SMALL CAPITAL R
+ 107AB         ; NFKC_CF; 02A8           # Lm       MODIFIER LETTER SMALL TC DIGRAPH WITH CURL
+ 107AC         ; NFKC_CF; 02A6           # Lm       MODIFIER LETTER SMALL TS DIGRAPH
+ 107AD         ; NFKC_CF; AB67           # Lm       MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK
+ 107AE         ; NFKC_CF; 02A7           # Lm       MODIFIER LETTER SMALL TESH DIGRAPH
+ 107AF         ; NFKC_CF; 0288           # Lm       MODIFIER LETTER SMALL T WITH RETROFLEX HOOK
+ 107B0         ; NFKC_CF; 2C71           # Lm       MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2         ; NFKC_CF; 028F           # Lm       MODIFIER LETTER SMALL CAPITAL Y
+ 107B3         ; NFKC_CF; 02A1           # Lm       MODIFIER LETTER GLOTTAL STOP WITH STROKE
+ 107B4         ; NFKC_CF; 02A2           # Lm       MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE
+ 107B5         ; NFKC_CF; 0298           # Lm       MODIFIER LETTER BILABIAL CLICK
+ 107B6         ; NFKC_CF; 01C0           # Lm       MODIFIER LETTER DENTAL CLICK
+ 107B7         ; NFKC_CF; 01C1           # Lm       MODIFIER LETTER LATERAL CLICK
+ 107B8         ; NFKC_CF; 01C2           # Lm       MODIFIER LETTER ALVEOLAR CLICK
+ 107B9         ; NFKC_CF; 1DF0A          # Lm       MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 107BA         ; NFKC_CF; 1DF1E          # Lm       MODIFIER LETTER SMALL S WITH CURL
+ 10C80         ; NFKC_CF; 10CC0          # L&       OLD HUNGARIAN CAPITAL LETTER A
+ 10C81         ; NFKC_CF; 10CC1          # L&       OLD HUNGARIAN CAPITAL LETTER AA
+ 10C82         ; NFKC_CF; 10CC2          # L&       OLD HUNGARIAN CAPITAL LETTER EB
+ 10C83         ; NFKC_CF; 10CC3          # L&       OLD HUNGARIAN CAPITAL LETTER AMB
+ 10C84         ; NFKC_CF; 10CC4          # L&       OLD HUNGARIAN CAPITAL LETTER EC
+ 10C85         ; NFKC_CF; 10CC5          # L&       OLD HUNGARIAN CAPITAL LETTER ENC
+ 10C86         ; NFKC_CF; 10CC6          # L&       OLD HUNGARIAN CAPITAL LETTER ECS
+ 10C87         ; NFKC_CF; 10CC7          # L&       OLD HUNGARIAN CAPITAL LETTER ED
+ 10C88         ; NFKC_CF; 10CC8          # L&       OLD HUNGARIAN CAPITAL LETTER AND
+ 10C89         ; NFKC_CF; 10CC9          # L&       OLD HUNGARIAN CAPITAL LETTER E
+ 10C8A         ; NFKC_CF; 10CCA          # L&       OLD HUNGARIAN CAPITAL LETTER CLOSE E
+ 10C8B         ; NFKC_CF; 10CCB          # L&       OLD HUNGARIAN CAPITAL LETTER EE
+ 10C8C         ; NFKC_CF; 10CCC          # L&       OLD HUNGARIAN CAPITAL LETTER EF
+ 10C8D         ; NFKC_CF; 10CCD          # L&       OLD HUNGARIAN CAPITAL LETTER EG
+ 10C8E         ; NFKC_CF; 10CCE          # L&       OLD HUNGARIAN CAPITAL LETTER EGY
+ 10C8F         ; NFKC_CF; 10CCF          # L&       OLD HUNGARIAN CAPITAL LETTER EH
+ 10C90         ; NFKC_CF; 10CD0          # L&       OLD HUNGARIAN CAPITAL LETTER I
+ 10C91         ; NFKC_CF; 10CD1          # L&       OLD HUNGARIAN CAPITAL LETTER II
+ 10C92         ; NFKC_CF; 10CD2          # L&       OLD HUNGARIAN CAPITAL LETTER EJ
+ 10C93         ; NFKC_CF; 10CD3          # L&       OLD HUNGARIAN CAPITAL LETTER EK
+ 10C94         ; NFKC_CF; 10CD4          # L&       OLD HUNGARIAN CAPITAL LETTER AK
+ 10C95         ; NFKC_CF; 10CD5          # L&       OLD HUNGARIAN CAPITAL LETTER UNK
+ 10C96         ; NFKC_CF; 10CD6          # L&       OLD HUNGARIAN CAPITAL LETTER EL
+ 10C97         ; NFKC_CF; 10CD7          # L&       OLD HUNGARIAN CAPITAL LETTER ELY
+ 10C98         ; NFKC_CF; 10CD8          # L&       OLD HUNGARIAN CAPITAL LETTER EM
+ 10C99         ; NFKC_CF; 10CD9          # L&       OLD HUNGARIAN CAPITAL LETTER EN
+ 10C9A         ; NFKC_CF; 10CDA          # L&       OLD HUNGARIAN CAPITAL LETTER ENY
+ 10C9B         ; NFKC_CF; 10CDB          # L&       OLD HUNGARIAN CAPITAL LETTER O
+ 10C9C         ; NFKC_CF; 10CDC          # L&       OLD HUNGARIAN CAPITAL LETTER OO
+ 10C9D         ; NFKC_CF; 10CDD          # L&       OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG OE
+ 10C9E         ; NFKC_CF; 10CDE          # L&       OLD HUNGARIAN CAPITAL LETTER RUDIMENTA OE
+ 10C9F         ; NFKC_CF; 10CDF          # L&       OLD HUNGARIAN CAPITAL LETTER OEE
+ 10CA0         ; NFKC_CF; 10CE0          # L&       OLD HUNGARIAN CAPITAL LETTER EP
+ 10CA1         ; NFKC_CF; 10CE1          # L&       OLD HUNGARIAN CAPITAL LETTER EMP
+ 10CA2         ; NFKC_CF; 10CE2          # L&       OLD HUNGARIAN CAPITAL LETTER ER
+ 10CA3         ; NFKC_CF; 10CE3          # L&       OLD HUNGARIAN CAPITAL LETTER SHORT ER
+ 10CA4         ; NFKC_CF; 10CE4          # L&       OLD HUNGARIAN CAPITAL LETTER ES
+ 10CA5         ; NFKC_CF; 10CE5          # L&       OLD HUNGARIAN CAPITAL LETTER ESZ
+ 10CA6         ; NFKC_CF; 10CE6          # L&       OLD HUNGARIAN CAPITAL LETTER ET
+ 10CA7         ; NFKC_CF; 10CE7          # L&       OLD HUNGARIAN CAPITAL LETTER ENT
+ 10CA8         ; NFKC_CF; 10CE8          # L&       OLD HUNGARIAN CAPITAL LETTER ETY
+ 10CA9         ; NFKC_CF; 10CE9          # L&       OLD HUNGARIAN CAPITAL LETTER ECH
+ 10CAA         ; NFKC_CF; 10CEA          # L&       OLD HUNGARIAN CAPITAL LETTER U
+ 10CAB         ; NFKC_CF; 10CEB          # L&       OLD HUNGARIAN CAPITAL LETTER UU
+ 10CAC         ; NFKC_CF; 10CEC          # L&       OLD HUNGARIAN CAPITAL LETTER NIKOLSBURG UE
+ 10CAD         ; NFKC_CF; 10CED          # L&       OLD HUNGARIAN CAPITAL LETTER RUDIMENTA UE
+ 10CAE         ; NFKC_CF; 10CEE          # L&       OLD HUNGARIAN CAPITAL LETTER EV
+ 10CAF         ; NFKC_CF; 10CEF          # L&       OLD HUNGARIAN CAPITAL LETTER EZ
+ 10CB0         ; NFKC_CF; 10CF0          # L&       OLD HUNGARIAN CAPITAL LETTER EZS
+ 10CB1         ; NFKC_CF; 10CF1          # L&       OLD HUNGARIAN CAPITAL LETTER ENT-SHAPED SIGN
+ 10CB2         ; NFKC_CF; 10CF2          # L&       OLD HUNGARIAN CAPITAL LETTER US
+ 118A0         ; NFKC_CF; 118C0          # L&       WARANG CITI CAPITAL LETTER NGAA
+ 118A1         ; NFKC_CF; 118C1          # L&       WARANG CITI CAPITAL LETTER A
+ 118A2         ; NFKC_CF; 118C2          # L&       WARANG CITI CAPITAL LETTER WI
+ 118A3         ; NFKC_CF; 118C3          # L&       WARANG CITI CAPITAL LETTER YU
+ 118A4         ; NFKC_CF; 118C4          # L&       WARANG CITI CAPITAL LETTER YA
+ 118A5         ; NFKC_CF; 118C5          # L&       WARANG CITI CAPITAL LETTER YO
+ 118A6         ; NFKC_CF; 118C6          # L&       WARANG CITI CAPITAL LETTER II
+ 118A7         ; NFKC_CF; 118C7          # L&       WARANG CITI CAPITAL LETTER UU
+ 118A8         ; NFKC_CF; 118C8          # L&       WARANG CITI CAPITAL LETTER E
+ 118A9         ; NFKC_CF; 118C9          # L&       WARANG CITI CAPITAL LETTER O
+ 118AA         ; NFKC_CF; 118CA          # L&       WARANG CITI CAPITAL LETTER ANG
+ 118AB         ; NFKC_CF; 118CB          # L&       WARANG CITI CAPITAL LETTER GA
+ 118AC         ; NFKC_CF; 118CC          # L&       WARANG CITI CAPITAL LETTER KO
+ 118AD         ; NFKC_CF; 118CD          # L&       WARANG CITI CAPITAL LETTER ENY
+ 118AE         ; NFKC_CF; 118CE          # L&       WARANG CITI CAPITAL LETTER YUJ
+ 118AF         ; NFKC_CF; 118CF          # L&       WARANG CITI CAPITAL LETTER UC
+ 118B0         ; NFKC_CF; 118D0          # L&       WARANG CITI CAPITAL LETTER ENN
+ 118B1         ; NFKC_CF; 118D1          # L&       WARANG CITI CAPITAL LETTER ODD
+ 118B2         ; NFKC_CF; 118D2          # L&       WARANG CITI CAPITAL LETTER TTE
+ 118B3         ; NFKC_CF; 118D3          # L&       WARANG CITI CAPITAL LETTER NUNG
+ 118B4         ; NFKC_CF; 118D4          # L&       WARANG CITI CAPITAL LETTER DA
+ 118B5         ; NFKC_CF; 118D5          # L&       WARANG CITI CAPITAL LETTER AT
+ 118B6         ; NFKC_CF; 118D6          # L&       WARANG CITI CAPITAL LETTER AM
+ 118B7         ; NFKC_CF; 118D7          # L&       WARANG CITI CAPITAL LETTER BU
+ 118B8         ; NFKC_CF; 118D8          # L&       WARANG CITI CAPITAL LETTER PU
+ 118B9         ; NFKC_CF; 118D9          # L&       WARANG CITI CAPITAL LETTER HIYO
+ 118BA         ; NFKC_CF; 118DA          # L&       WARANG CITI CAPITAL LETTER HOLO
+ 118BB         ; NFKC_CF; 118DB          # L&       WARANG CITI CAPITAL LETTER HORR
+ 118BC         ; NFKC_CF; 118DC          # L&       WARANG CITI CAPITAL LETTER HAR
+ 118BD         ; NFKC_CF; 118DD          # L&       WARANG CITI CAPITAL LETTER SSUU
+ 118BE         ; NFKC_CF; 118DE          # L&       WARANG CITI CAPITAL LETTER SII
+ 118BF         ; NFKC_CF; 118DF          # L&       WARANG CITI CAPITAL LETTER VIYO
+ 16E40         ; NFKC_CF; 16E60          # L&       MEDEFAIDRIN CAPITAL LETTER M
+ 16E41         ; NFKC_CF; 16E61          # L&       MEDEFAIDRIN CAPITAL LETTER S
+ 16E42         ; NFKC_CF; 16E62          # L&       MEDEFAIDRIN CAPITAL LETTER V
+ 16E43         ; NFKC_CF; 16E63          # L&       MEDEFAIDRIN CAPITAL LETTER W
+ 16E44         ; NFKC_CF; 16E64          # L&       MEDEFAIDRIN CAPITAL LETTER ATIU
+ 16E45         ; NFKC_CF; 16E65          # L&       MEDEFAIDRIN CAPITAL LETTER Z
+ 16E46         ; NFKC_CF; 16E66          # L&       MEDEFAIDRIN CAPITAL LETTER KP
+ 16E47         ; NFKC_CF; 16E67          # L&       MEDEFAIDRIN CAPITAL LETTER P
+ 16E48         ; NFKC_CF; 16E68          # L&       MEDEFAIDRIN CAPITAL LETTER T
+ 16E49         ; NFKC_CF; 16E69          # L&       MEDEFAIDRIN CAPITAL LETTER G
+ 16E4A         ; NFKC_CF; 16E6A          # L&       MEDEFAIDRIN CAPITAL LETTER F
+ 16E4B         ; NFKC_CF; 16E6B          # L&       MEDEFAIDRIN CAPITAL LETTER I
+ 16E4C         ; NFKC_CF; 16E6C          # L&       MEDEFAIDRIN CAPITAL LETTER K
+ 16E4D         ; NFKC_CF; 16E6D          # L&       MEDEFAIDRIN CAPITAL LETTER A
+ 16E4E         ; NFKC_CF; 16E6E          # L&       MEDEFAIDRIN CAPITAL LETTER J
+ 16E4F         ; NFKC_CF; 16E6F          # L&       MEDEFAIDRIN CAPITAL LETTER E
+ 16E50         ; NFKC_CF; 16E70          # L&       MEDEFAIDRIN CAPITAL LETTER B
+ 16E51         ; NFKC_CF; 16E71          # L&       MEDEFAIDRIN CAPITAL LETTER C
+ 16E52         ; NFKC_CF; 16E72          # L&       MEDEFAIDRIN CAPITAL LETTER U
+ 16E53         ; NFKC_CF; 16E73          # L&       MEDEFAIDRIN CAPITAL LETTER YU
+ 16E54         ; NFKC_CF; 16E74          # L&       MEDEFAIDRIN CAPITAL LETTER L
+ 16E55         ; NFKC_CF; 16E75          # L&       MEDEFAIDRIN CAPITAL LETTER Q
+ 16E56         ; NFKC_CF; 16E76          # L&       MEDEFAIDRIN CAPITAL LETTER HP
+ 16E57         ; NFKC_CF; 16E77          # L&       MEDEFAIDRIN CAPITAL LETTER NY
+ 16E58         ; NFKC_CF; 16E78          # L&       MEDEFAIDRIN CAPITAL LETTER X
+ 16E59         ; NFKC_CF; 16E79          # L&       MEDEFAIDRIN CAPITAL LETTER D
+ 16E5A         ; NFKC_CF; 16E7A          # L&       MEDEFAIDRIN CAPITAL LETTER OE
+ 16E5B         ; NFKC_CF; 16E7B          # L&       MEDEFAIDRIN CAPITAL LETTER N
+ 16E5C         ; NFKC_CF; 16E7C          # L&       MEDEFAIDRIN CAPITAL LETTER R
+ 16E5D         ; NFKC_CF; 16E7D          # L&       MEDEFAIDRIN CAPITAL LETTER O
+ 16E5E         ; NFKC_CF; 16E7E          # L&       MEDEFAIDRIN CAPITAL LETTER AI
+ 16E5F         ; NFKC_CF; 16E7F          # L&       MEDEFAIDRIN CAPITAL LETTER Y
+ 1BCA0..1BCA3  ; NFKC_CF;                # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ 1D15E         ; NFKC_CF; 1D157 1D165    # So       MUSICAL SYMBOL HALF NOTE
+ 1D15F         ; NFKC_CF; 1D158 1D165    # So       MUSICAL SYMBOL QUARTER NOTE
+ 1D160         ; NFKC_CF; 1D158 1D165 1D16E #So     MUSICAL SYMBOL EIGHTH NOTE
+ 1D161         ; NFKC_CF; 1D158 1D165 1D16F #So     MUSICAL SYMBOL SIXTEENTH NOTE
+ 1D162         ; NFKC_CF; 1D158 1D165 1D170 #So     MUSICAL SYMBOL THIRTY-SECOND NOTE
+ 1D163         ; NFKC_CF; 1D158 1D165 1D171 #So     MUSICAL SYMBOL SIXTY-FOURTH NOTE
+ 1D164         ; NFKC_CF; 1D158 1D165 1D172 #So     MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D173..1D17A  ; NFKC_CF;                # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ 1D1BB         ; NFKC_CF; 1D1B9 1D165    # So       MUSICAL SYMBOL MINIMA
+ 1D1BC         ; NFKC_CF; 1D1BA 1D165    # So       MUSICAL SYMBOL MINIMA BLACK
+ 1D1BD         ; NFKC_CF; 1D1B9 1D165 1D16E #So     MUSICAL SYMBOL SEMIMINIMA WHITE
+ 1D1BE         ; NFKC_CF; 1D1BA 1D165 1D16E #So     MUSICAL SYMBOL SEMIMINIMA BLACK
+ 1D1BF         ; NFKC_CF; 1D1B9 1D165 1D16F #So     MUSICAL SYMBOL FUSA WHITE
+ 1D1C0         ; NFKC_CF; 1D1BA 1D165 1D16F #So     MUSICAL SYMBOL FUSA BLACK
+ 1D400         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD CAPITAL A
+ 1D401         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD CAPITAL B
+ 1D402         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD CAPITAL C
+ 1D403         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD CAPITAL D
+ 1D404         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD CAPITAL E
+ 1D405         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD CAPITAL F
+ 1D406         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD CAPITAL G
+ 1D407         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD CAPITAL H
+ 1D408         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD CAPITAL I
+ 1D409         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD CAPITAL J
+ 1D40A         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD CAPITAL K
+ 1D40B         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD CAPITAL L
+ 1D40C         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD CAPITAL M
+ 1D40D         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD CAPITAL N
+ 1D40E         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD CAPITAL O
+ 1D40F         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD CAPITAL P
+ 1D410         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD CAPITAL Q
+ 1D411         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD CAPITAL R
+ 1D412         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD CAPITAL S
+ 1D413         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD CAPITAL T
+ 1D414         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD CAPITAL U
+ 1D415         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD CAPITAL V
+ 1D416         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD CAPITAL W
+ 1D417         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD CAPITAL X
+ 1D418         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD CAPITAL Y
+ 1D419         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD CAPITAL Z
+ 1D41A         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD SMALL A
+ 1D41B         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD SMALL B
+ 1D41C         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD SMALL C
+ 1D41D         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD SMALL D
+ 1D41E         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD SMALL E
+ 1D41F         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD SMALL F
+ 1D420         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD SMALL G
+ 1D421         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD SMALL H
+ 1D422         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD SMALL I
+ 1D423         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD SMALL J
+ 1D424         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD SMALL K
+ 1D425         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD SMALL L
+ 1D426         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD SMALL M
+ 1D427         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD SMALL N
+ 1D428         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD SMALL O
+ 1D429         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD SMALL P
+ 1D42A         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD SMALL Q
+ 1D42B         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD SMALL R
+ 1D42C         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD SMALL S
+ 1D42D         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD SMALL T
+ 1D42E         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD SMALL U
+ 1D42F         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD SMALL V
+ 1D430         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD SMALL W
+ 1D431         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD SMALL X
+ 1D432         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD SMALL Y
+ 1D433         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD SMALL Z
+ 1D434         ; NFKC_CF; 0061           # L&       MATHEMATICAL ITALIC CAPITAL A
+ 1D435         ; NFKC_CF; 0062           # L&       MATHEMATICAL ITALIC CAPITAL B
+ 1D436         ; NFKC_CF; 0063           # L&       MATHEMATICAL ITALIC CAPITAL C
+ 1D437         ; NFKC_CF; 0064           # L&       MATHEMATICAL ITALIC CAPITAL D
+ 1D438         ; NFKC_CF; 0065           # L&       MATHEMATICAL ITALIC CAPITAL E
+ 1D439         ; NFKC_CF; 0066           # L&       MATHEMATICAL ITALIC CAPITAL F
+ 1D43A         ; NFKC_CF; 0067           # L&       MATHEMATICAL ITALIC CAPITAL G
+ 1D43B         ; NFKC_CF; 0068           # L&       MATHEMATICAL ITALIC CAPITAL H
+ 1D43C         ; NFKC_CF; 0069           # L&       MATHEMATICAL ITALIC CAPITAL I
+ 1D43D         ; NFKC_CF; 006A           # L&       MATHEMATICAL ITALIC CAPITAL J
+ 1D43E         ; NFKC_CF; 006B           # L&       MATHEMATICAL ITALIC CAPITAL K
+ 1D43F         ; NFKC_CF; 006C           # L&       MATHEMATICAL ITALIC CAPITAL L
+ 1D440         ; NFKC_CF; 006D           # L&       MATHEMATICAL ITALIC CAPITAL M
+ 1D441         ; NFKC_CF; 006E           # L&       MATHEMATICAL ITALIC CAPITAL N
+ 1D442         ; NFKC_CF; 006F           # L&       MATHEMATICAL ITALIC CAPITAL O
+ 1D443         ; NFKC_CF; 0070           # L&       MATHEMATICAL ITALIC CAPITAL P
+ 1D444         ; NFKC_CF; 0071           # L&       MATHEMATICAL ITALIC CAPITAL Q
+ 1D445         ; NFKC_CF; 0072           # L&       MATHEMATICAL ITALIC CAPITAL R
+ 1D446         ; NFKC_CF; 0073           # L&       MATHEMATICAL ITALIC CAPITAL S
+ 1D447         ; NFKC_CF; 0074           # L&       MATHEMATICAL ITALIC CAPITAL T
+ 1D448         ; NFKC_CF; 0075           # L&       MATHEMATICAL ITALIC CAPITAL U
+ 1D449         ; NFKC_CF; 0076           # L&       MATHEMATICAL ITALIC CAPITAL V
+ 1D44A         ; NFKC_CF; 0077           # L&       MATHEMATICAL ITALIC CAPITAL W
+ 1D44B         ; NFKC_CF; 0078           # L&       MATHEMATICAL ITALIC CAPITAL X
+ 1D44C         ; NFKC_CF; 0079           # L&       MATHEMATICAL ITALIC CAPITAL Y
+ 1D44D         ; NFKC_CF; 007A           # L&       MATHEMATICAL ITALIC CAPITAL Z
+ 1D44E         ; NFKC_CF; 0061           # L&       MATHEMATICAL ITALIC SMALL A
+ 1D44F         ; NFKC_CF; 0062           # L&       MATHEMATICAL ITALIC SMALL B
+ 1D450         ; NFKC_CF; 0063           # L&       MATHEMATICAL ITALIC SMALL C
+ 1D451         ; NFKC_CF; 0064           # L&       MATHEMATICAL ITALIC SMALL D
+ 1D452         ; NFKC_CF; 0065           # L&       MATHEMATICAL ITALIC SMALL E
+ 1D453         ; NFKC_CF; 0066           # L&       MATHEMATICAL ITALIC SMALL F
+ 1D454         ; NFKC_CF; 0067           # L&       MATHEMATICAL ITALIC SMALL G
+ 1D456         ; NFKC_CF; 0069           # L&       MATHEMATICAL ITALIC SMALL I
+ 1D457         ; NFKC_CF; 006A           # L&       MATHEMATICAL ITALIC SMALL J
+ 1D458         ; NFKC_CF; 006B           # L&       MATHEMATICAL ITALIC SMALL K
+ 1D459         ; NFKC_CF; 006C           # L&       MATHEMATICAL ITALIC SMALL L
+ 1D45A         ; NFKC_CF; 006D           # L&       MATHEMATICAL ITALIC SMALL M
+ 1D45B         ; NFKC_CF; 006E           # L&       MATHEMATICAL ITALIC SMALL N
+ 1D45C         ; NFKC_CF; 006F           # L&       MATHEMATICAL ITALIC SMALL O
+ 1D45D         ; NFKC_CF; 0070           # L&       MATHEMATICAL ITALIC SMALL P
+ 1D45E         ; NFKC_CF; 0071           # L&       MATHEMATICAL ITALIC SMALL Q
+ 1D45F         ; NFKC_CF; 0072           # L&       MATHEMATICAL ITALIC SMALL R
+ 1D460         ; NFKC_CF; 0073           # L&       MATHEMATICAL ITALIC SMALL S
+ 1D461         ; NFKC_CF; 0074           # L&       MATHEMATICAL ITALIC SMALL T
+ 1D462         ; NFKC_CF; 0075           # L&       MATHEMATICAL ITALIC SMALL U
+ 1D463         ; NFKC_CF; 0076           # L&       MATHEMATICAL ITALIC SMALL V
+ 1D464         ; NFKC_CF; 0077           # L&       MATHEMATICAL ITALIC SMALL W
+ 1D465         ; NFKC_CF; 0078           # L&       MATHEMATICAL ITALIC SMALL X
+ 1D466         ; NFKC_CF; 0079           # L&       MATHEMATICAL ITALIC SMALL Y
+ 1D467         ; NFKC_CF; 007A           # L&       MATHEMATICAL ITALIC SMALL Z
+ 1D468         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD ITALIC CAPITAL A
+ 1D469         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD ITALIC CAPITAL B
+ 1D46A         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD ITALIC CAPITAL C
+ 1D46B         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD ITALIC CAPITAL D
+ 1D46C         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD ITALIC CAPITAL E
+ 1D46D         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD ITALIC CAPITAL F
+ 1D46E         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD ITALIC CAPITAL G
+ 1D46F         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD ITALIC CAPITAL H
+ 1D470         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD ITALIC CAPITAL I
+ 1D471         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD ITALIC CAPITAL J
+ 1D472         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD ITALIC CAPITAL K
+ 1D473         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD ITALIC CAPITAL L
+ 1D474         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD ITALIC CAPITAL M
+ 1D475         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD ITALIC CAPITAL N
+ 1D476         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD ITALIC CAPITAL O
+ 1D477         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD ITALIC CAPITAL P
+ 1D478         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD ITALIC CAPITAL Q
+ 1D479         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD ITALIC CAPITAL R
+ 1D47A         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD ITALIC CAPITAL S
+ 1D47B         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD ITALIC CAPITAL T
+ 1D47C         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD ITALIC CAPITAL U
+ 1D47D         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD ITALIC CAPITAL V
+ 1D47E         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD ITALIC CAPITAL W
+ 1D47F         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD ITALIC CAPITAL X
+ 1D480         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD ITALIC CAPITAL Y
+ 1D481         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD ITALIC CAPITAL Z
+ 1D482         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD ITALIC SMALL A
+ 1D483         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD ITALIC SMALL B
+ 1D484         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD ITALIC SMALL C
+ 1D485         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD ITALIC SMALL D
+ 1D486         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD ITALIC SMALL E
+ 1D487         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD ITALIC SMALL F
+ 1D488         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD ITALIC SMALL G
+ 1D489         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD ITALIC SMALL H
+ 1D48A         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD ITALIC SMALL I
+ 1D48B         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD ITALIC SMALL J
+ 1D48C         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD ITALIC SMALL K
+ 1D48D         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD ITALIC SMALL L
+ 1D48E         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD ITALIC SMALL M
+ 1D48F         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD ITALIC SMALL N
+ 1D490         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD ITALIC SMALL O
+ 1D491         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD ITALIC SMALL P
+ 1D492         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD ITALIC SMALL Q
+ 1D493         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD ITALIC SMALL R
+ 1D494         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD ITALIC SMALL S
+ 1D495         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD ITALIC SMALL T
+ 1D496         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD ITALIC SMALL U
+ 1D497         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD ITALIC SMALL V
+ 1D498         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD ITALIC SMALL W
+ 1D499         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD ITALIC SMALL X
+ 1D49A         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD ITALIC SMALL Y
+ 1D49B         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD ITALIC SMALL Z
+ 1D49C         ; NFKC_CF; 0061           # L&       MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E         ; NFKC_CF; 0063           # L&       MATHEMATICAL SCRIPT CAPITAL C
+ 1D49F         ; NFKC_CF; 0064           # L&       MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; NFKC_CF; 0067           # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5         ; NFKC_CF; 006A           # L&       MATHEMATICAL SCRIPT CAPITAL J
+ 1D4A6         ; NFKC_CF; 006B           # L&       MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9         ; NFKC_CF; 006E           # L&       MATHEMATICAL SCRIPT CAPITAL N
+ 1D4AA         ; NFKC_CF; 006F           # L&       MATHEMATICAL SCRIPT CAPITAL O
+ 1D4AB         ; NFKC_CF; 0070           # L&       MATHEMATICAL SCRIPT CAPITAL P
+ 1D4AC         ; NFKC_CF; 0071           # L&       MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE         ; NFKC_CF; 0073           # L&       MATHEMATICAL SCRIPT CAPITAL S
+ 1D4AF         ; NFKC_CF; 0074           # L&       MATHEMATICAL SCRIPT CAPITAL T
+ 1D4B0         ; NFKC_CF; 0075           # L&       MATHEMATICAL SCRIPT CAPITAL U
+ 1D4B1         ; NFKC_CF; 0076           # L&       MATHEMATICAL SCRIPT CAPITAL V
+ 1D4B2         ; NFKC_CF; 0077           # L&       MATHEMATICAL SCRIPT CAPITAL W
+ 1D4B3         ; NFKC_CF; 0078           # L&       MATHEMATICAL SCRIPT CAPITAL X
+ 1D4B4         ; NFKC_CF; 0079           # L&       MATHEMATICAL SCRIPT CAPITAL Y
+ 1D4B5         ; NFKC_CF; 007A           # L&       MATHEMATICAL SCRIPT CAPITAL Z
+ 1D4B6         ; NFKC_CF; 0061           # L&       MATHEMATICAL SCRIPT SMALL A
+ 1D4B7         ; NFKC_CF; 0062           # L&       MATHEMATICAL SCRIPT SMALL B
+ 1D4B8         ; NFKC_CF; 0063           # L&       MATHEMATICAL SCRIPT SMALL C
+ 1D4B9         ; NFKC_CF; 0064           # L&       MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; NFKC_CF; 0066           # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD         ; NFKC_CF; 0068           # L&       MATHEMATICAL SCRIPT SMALL H
+ 1D4BE         ; NFKC_CF; 0069           # L&       MATHEMATICAL SCRIPT SMALL I
+ 1D4BF         ; NFKC_CF; 006A           # L&       MATHEMATICAL SCRIPT SMALL J
+ 1D4C0         ; NFKC_CF; 006B           # L&       MATHEMATICAL SCRIPT SMALL K
+ 1D4C1         ; NFKC_CF; 006C           # L&       MATHEMATICAL SCRIPT SMALL L
+ 1D4C2         ; NFKC_CF; 006D           # L&       MATHEMATICAL SCRIPT SMALL M
+ 1D4C3         ; NFKC_CF; 006E           # L&       MATHEMATICAL SCRIPT SMALL N
+ 1D4C5         ; NFKC_CF; 0070           # L&       MATHEMATICAL SCRIPT SMALL P
+ 1D4C6         ; NFKC_CF; 0071           # L&       MATHEMATICAL SCRIPT SMALL Q
+ 1D4C7         ; NFKC_CF; 0072           # L&       MATHEMATICAL SCRIPT SMALL R
+ 1D4C8         ; NFKC_CF; 0073           # L&       MATHEMATICAL SCRIPT SMALL S
+ 1D4C9         ; NFKC_CF; 0074           # L&       MATHEMATICAL SCRIPT SMALL T
+ 1D4CA         ; NFKC_CF; 0075           # L&       MATHEMATICAL SCRIPT SMALL U
+ 1D4CB         ; NFKC_CF; 0076           # L&       MATHEMATICAL SCRIPT SMALL V
+ 1D4CC         ; NFKC_CF; 0077           # L&       MATHEMATICAL SCRIPT SMALL W
+ 1D4CD         ; NFKC_CF; 0078           # L&       MATHEMATICAL SCRIPT SMALL X
+ 1D4CE         ; NFKC_CF; 0079           # L&       MATHEMATICAL SCRIPT SMALL Y
+ 1D4CF         ; NFKC_CF; 007A           # L&       MATHEMATICAL SCRIPT SMALL Z
+ 1D4D0         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL A
+ 1D4D1         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL B
+ 1D4D2         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL C
+ 1D4D3         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL D
+ 1D4D4         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL E
+ 1D4D5         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL F
+ 1D4D6         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL G
+ 1D4D7         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL H
+ 1D4D8         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL I
+ 1D4D9         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL J
+ 1D4DA         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL K
+ 1D4DB         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL L
+ 1D4DC         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL M
+ 1D4DD         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL N
+ 1D4DE         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL O
+ 1D4DF         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL P
+ 1D4E0         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL Q
+ 1D4E1         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL R
+ 1D4E2         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL S
+ 1D4E3         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL T
+ 1D4E4         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL U
+ 1D4E5         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL V
+ 1D4E6         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL W
+ 1D4E7         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL X
+ 1D4E8         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL Y
+ 1D4E9         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD SCRIPT CAPITAL Z
+ 1D4EA         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD SCRIPT SMALL A
+ 1D4EB         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD SCRIPT SMALL B
+ 1D4EC         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD SCRIPT SMALL C
+ 1D4ED         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD SCRIPT SMALL D
+ 1D4EE         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD SCRIPT SMALL E
+ 1D4EF         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD SCRIPT SMALL F
+ 1D4F0         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD SCRIPT SMALL G
+ 1D4F1         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD SCRIPT SMALL H
+ 1D4F2         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD SCRIPT SMALL I
+ 1D4F3         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD SCRIPT SMALL J
+ 1D4F4         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD SCRIPT SMALL K
+ 1D4F5         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD SCRIPT SMALL L
+ 1D4F6         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD SCRIPT SMALL M
+ 1D4F7         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD SCRIPT SMALL N
+ 1D4F8         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD SCRIPT SMALL O
+ 1D4F9         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD SCRIPT SMALL P
+ 1D4FA         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD SCRIPT SMALL Q
+ 1D4FB         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD SCRIPT SMALL R
+ 1D4FC         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD SCRIPT SMALL S
+ 1D4FD         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD SCRIPT SMALL T
+ 1D4FE         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD SCRIPT SMALL U
+ 1D4FF         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD SCRIPT SMALL V
+ 1D500         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD SCRIPT SMALL W
+ 1D501         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD SCRIPT SMALL X
+ 1D502         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD SCRIPT SMALL Y
+ 1D503         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD SCRIPT SMALL Z
+ 1D504         ; NFKC_CF; 0061           # L&       MATHEMATICAL FRAKTUR CAPITAL A
+ 1D505         ; NFKC_CF; 0062           # L&       MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507         ; NFKC_CF; 0064           # L&       MATHEMATICAL FRAKTUR CAPITAL D
+ 1D508         ; NFKC_CF; 0065           # L&       MATHEMATICAL FRAKTUR CAPITAL E
+ 1D509         ; NFKC_CF; 0066           # L&       MATHEMATICAL FRAKTUR CAPITAL F
+ 1D50A         ; NFKC_CF; 0067           # L&       MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D         ; NFKC_CF; 006A           # L&       MATHEMATICAL FRAKTUR CAPITAL J
+ 1D50E         ; NFKC_CF; 006B           # L&       MATHEMATICAL FRAKTUR CAPITAL K
+ 1D50F         ; NFKC_CF; 006C           # L&       MATHEMATICAL FRAKTUR CAPITAL L
+ 1D510         ; NFKC_CF; 006D           # L&       MATHEMATICAL FRAKTUR CAPITAL M
+ 1D511         ; NFKC_CF; 006E           # L&       MATHEMATICAL FRAKTUR CAPITAL N
+ 1D512         ; NFKC_CF; 006F           # L&       MATHEMATICAL FRAKTUR CAPITAL O
+ 1D513         ; NFKC_CF; 0070           # L&       MATHEMATICAL FRAKTUR CAPITAL P
+ 1D514         ; NFKC_CF; 0071           # L&       MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516         ; NFKC_CF; 0073           # L&       MATHEMATICAL FRAKTUR CAPITAL S
+ 1D517         ; NFKC_CF; 0074           # L&       MATHEMATICAL FRAKTUR CAPITAL T
+ 1D518         ; NFKC_CF; 0075           # L&       MATHEMATICAL FRAKTUR CAPITAL U
+ 1D519         ; NFKC_CF; 0076           # L&       MATHEMATICAL FRAKTUR CAPITAL V
+ 1D51A         ; NFKC_CF; 0077           # L&       MATHEMATICAL FRAKTUR CAPITAL W
+ 1D51B         ; NFKC_CF; 0078           # L&       MATHEMATICAL FRAKTUR CAPITAL X
+ 1D51C         ; NFKC_CF; 0079           # L&       MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E         ; NFKC_CF; 0061           # L&       MATHEMATICAL FRAKTUR SMALL A
+ 1D51F         ; NFKC_CF; 0062           # L&       MATHEMATICAL FRAKTUR SMALL B
+ 1D520         ; NFKC_CF; 0063           # L&       MATHEMATICAL FRAKTUR SMALL C
+ 1D521         ; NFKC_CF; 0064           # L&       MATHEMATICAL FRAKTUR SMALL D
+ 1D522         ; NFKC_CF; 0065           # L&       MATHEMATICAL FRAKTUR SMALL E
+ 1D523         ; NFKC_CF; 0066           # L&       MATHEMATICAL FRAKTUR SMALL F
+ 1D524         ; NFKC_CF; 0067           # L&       MATHEMATICAL FRAKTUR SMALL G
+ 1D525         ; NFKC_CF; 0068           # L&       MATHEMATICAL FRAKTUR SMALL H
+ 1D526         ; NFKC_CF; 0069           # L&       MATHEMATICAL FRAKTUR SMALL I
+ 1D527         ; NFKC_CF; 006A           # L&       MATHEMATICAL FRAKTUR SMALL J
+ 1D528         ; NFKC_CF; 006B           # L&       MATHEMATICAL FRAKTUR SMALL K
+ 1D529         ; NFKC_CF; 006C           # L&       MATHEMATICAL FRAKTUR SMALL L
+ 1D52A         ; NFKC_CF; 006D           # L&       MATHEMATICAL FRAKTUR SMALL M
+ 1D52B         ; NFKC_CF; 006E           # L&       MATHEMATICAL FRAKTUR SMALL N
+ 1D52C         ; NFKC_CF; 006F           # L&       MATHEMATICAL FRAKTUR SMALL O
+ 1D52D         ; NFKC_CF; 0070           # L&       MATHEMATICAL FRAKTUR SMALL P
+ 1D52E         ; NFKC_CF; 0071           # L&       MATHEMATICAL FRAKTUR SMALL Q
+ 1D52F         ; NFKC_CF; 0072           # L&       MATHEMATICAL FRAKTUR SMALL R
+ 1D530         ; NFKC_CF; 0073           # L&       MATHEMATICAL FRAKTUR SMALL S
+ 1D531         ; NFKC_CF; 0074           # L&       MATHEMATICAL FRAKTUR SMALL T
+ 1D532         ; NFKC_CF; 0075           # L&       MATHEMATICAL FRAKTUR SMALL U
+ 1D533         ; NFKC_CF; 0076           # L&       MATHEMATICAL FRAKTUR SMALL V
+ 1D534         ; NFKC_CF; 0077           # L&       MATHEMATICAL FRAKTUR SMALL W
+ 1D535         ; NFKC_CF; 0078           # L&       MATHEMATICAL FRAKTUR SMALL X
+ 1D536         ; NFKC_CF; 0079           # L&       MATHEMATICAL FRAKTUR SMALL Y
+ 1D537         ; NFKC_CF; 007A           # L&       MATHEMATICAL FRAKTUR SMALL Z
+ 1D538         ; NFKC_CF; 0061           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL A
+ 1D539         ; NFKC_CF; 0062           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B         ; NFKC_CF; 0064           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL D
+ 1D53C         ; NFKC_CF; 0065           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL E
+ 1D53D         ; NFKC_CF; 0066           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL F
+ 1D53E         ; NFKC_CF; 0067           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540         ; NFKC_CF; 0069           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL I
+ 1D541         ; NFKC_CF; 006A           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL J
+ 1D542         ; NFKC_CF; 006B           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL K
+ 1D543         ; NFKC_CF; 006C           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL L
+ 1D544         ; NFKC_CF; 006D           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; NFKC_CF; 006F           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A         ; NFKC_CF; 0073           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL S
+ 1D54B         ; NFKC_CF; 0074           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL T
+ 1D54C         ; NFKC_CF; 0075           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL U
+ 1D54D         ; NFKC_CF; 0076           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL V
+ 1D54E         ; NFKC_CF; 0077           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL W
+ 1D54F         ; NFKC_CF; 0078           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL X
+ 1D550         ; NFKC_CF; 0079           # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552         ; NFKC_CF; 0061           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL A
+ 1D553         ; NFKC_CF; 0062           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL B
+ 1D554         ; NFKC_CF; 0063           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL C
+ 1D555         ; NFKC_CF; 0064           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL D
+ 1D556         ; NFKC_CF; 0065           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL E
+ 1D557         ; NFKC_CF; 0066           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL F
+ 1D558         ; NFKC_CF; 0067           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL G
+ 1D559         ; NFKC_CF; 0068           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL H
+ 1D55A         ; NFKC_CF; 0069           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL I
+ 1D55B         ; NFKC_CF; 006A           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL J
+ 1D55C         ; NFKC_CF; 006B           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL K
+ 1D55D         ; NFKC_CF; 006C           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL L
+ 1D55E         ; NFKC_CF; 006D           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL M
+ 1D55F         ; NFKC_CF; 006E           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL N
+ 1D560         ; NFKC_CF; 006F           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL O
+ 1D561         ; NFKC_CF; 0070           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL P
+ 1D562         ; NFKC_CF; 0071           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL Q
+ 1D563         ; NFKC_CF; 0072           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL R
+ 1D564         ; NFKC_CF; 0073           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL S
+ 1D565         ; NFKC_CF; 0074           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL T
+ 1D566         ; NFKC_CF; 0075           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL U
+ 1D567         ; NFKC_CF; 0076           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL V
+ 1D568         ; NFKC_CF; 0077           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL W
+ 1D569         ; NFKC_CF; 0078           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL X
+ 1D56A         ; NFKC_CF; 0079           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL Y
+ 1D56B         ; NFKC_CF; 007A           # L&       MATHEMATICAL DOUBLE-STRUCK SMALL Z
+ 1D56C         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL A
+ 1D56D         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL B
+ 1D56E         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL C
+ 1D56F         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL D
+ 1D570         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL E
+ 1D571         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL F
+ 1D572         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL G
+ 1D573         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL H
+ 1D574         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL I
+ 1D575         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL J
+ 1D576         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL K
+ 1D577         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL L
+ 1D578         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL M
+ 1D579         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL N
+ 1D57A         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL O
+ 1D57B         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL P
+ 1D57C         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL Q
+ 1D57D         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL R
+ 1D57E         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL S
+ 1D57F         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL T
+ 1D580         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL U
+ 1D581         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL V
+ 1D582         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL W
+ 1D583         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL X
+ 1D584         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL Y
+ 1D585         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD FRAKTUR CAPITAL Z
+ 1D586         ; NFKC_CF; 0061           # L&       MATHEMATICAL BOLD FRAKTUR SMALL A
+ 1D587         ; NFKC_CF; 0062           # L&       MATHEMATICAL BOLD FRAKTUR SMALL B
+ 1D588         ; NFKC_CF; 0063           # L&       MATHEMATICAL BOLD FRAKTUR SMALL C
+ 1D589         ; NFKC_CF; 0064           # L&       MATHEMATICAL BOLD FRAKTUR SMALL D
+ 1D58A         ; NFKC_CF; 0065           # L&       MATHEMATICAL BOLD FRAKTUR SMALL E
+ 1D58B         ; NFKC_CF; 0066           # L&       MATHEMATICAL BOLD FRAKTUR SMALL F
+ 1D58C         ; NFKC_CF; 0067           # L&       MATHEMATICAL BOLD FRAKTUR SMALL G
+ 1D58D         ; NFKC_CF; 0068           # L&       MATHEMATICAL BOLD FRAKTUR SMALL H
+ 1D58E         ; NFKC_CF; 0069           # L&       MATHEMATICAL BOLD FRAKTUR SMALL I
+ 1D58F         ; NFKC_CF; 006A           # L&       MATHEMATICAL BOLD FRAKTUR SMALL J
+ 1D590         ; NFKC_CF; 006B           # L&       MATHEMATICAL BOLD FRAKTUR SMALL K
+ 1D591         ; NFKC_CF; 006C           # L&       MATHEMATICAL BOLD FRAKTUR SMALL L
+ 1D592         ; NFKC_CF; 006D           # L&       MATHEMATICAL BOLD FRAKTUR SMALL M
+ 1D593         ; NFKC_CF; 006E           # L&       MATHEMATICAL BOLD FRAKTUR SMALL N
+ 1D594         ; NFKC_CF; 006F           # L&       MATHEMATICAL BOLD FRAKTUR SMALL O
+ 1D595         ; NFKC_CF; 0070           # L&       MATHEMATICAL BOLD FRAKTUR SMALL P
+ 1D596         ; NFKC_CF; 0071           # L&       MATHEMATICAL BOLD FRAKTUR SMALL Q
+ 1D597         ; NFKC_CF; 0072           # L&       MATHEMATICAL BOLD FRAKTUR SMALL R
+ 1D598         ; NFKC_CF; 0073           # L&       MATHEMATICAL BOLD FRAKTUR SMALL S
+ 1D599         ; NFKC_CF; 0074           # L&       MATHEMATICAL BOLD FRAKTUR SMALL T
+ 1D59A         ; NFKC_CF; 0075           # L&       MATHEMATICAL BOLD FRAKTUR SMALL U
+ 1D59B         ; NFKC_CF; 0076           # L&       MATHEMATICAL BOLD FRAKTUR SMALL V
+ 1D59C         ; NFKC_CF; 0077           # L&       MATHEMATICAL BOLD FRAKTUR SMALL W
+ 1D59D         ; NFKC_CF; 0078           # L&       MATHEMATICAL BOLD FRAKTUR SMALL X
+ 1D59E         ; NFKC_CF; 0079           # L&       MATHEMATICAL BOLD FRAKTUR SMALL Y
+ 1D59F         ; NFKC_CF; 007A           # L&       MATHEMATICAL BOLD FRAKTUR SMALL Z
+ 1D5A0         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF CAPITAL A
+ 1D5A1         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF CAPITAL B
+ 1D5A2         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF CAPITAL C
+ 1D5A3         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF CAPITAL D
+ 1D5A4         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF CAPITAL E
+ 1D5A5         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF CAPITAL F
+ 1D5A6         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF CAPITAL G
+ 1D5A7         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF CAPITAL H
+ 1D5A8         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF CAPITAL I
+ 1D5A9         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF CAPITAL J
+ 1D5AA         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF CAPITAL K
+ 1D5AB         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF CAPITAL L
+ 1D5AC         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF CAPITAL M
+ 1D5AD         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF CAPITAL N
+ 1D5AE         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF CAPITAL O
+ 1D5AF         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF CAPITAL P
+ 1D5B0         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF CAPITAL Q
+ 1D5B1         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF CAPITAL R
+ 1D5B2         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF CAPITAL S
+ 1D5B3         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF CAPITAL T
+ 1D5B4         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF CAPITAL U
+ 1D5B5         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF CAPITAL V
+ 1D5B6         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF CAPITAL W
+ 1D5B7         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF CAPITAL X
+ 1D5B8         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF CAPITAL Y
+ 1D5B9         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF CAPITAL Z
+ 1D5BA         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF SMALL A
+ 1D5BB         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF SMALL B
+ 1D5BC         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF SMALL C
+ 1D5BD         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF SMALL D
+ 1D5BE         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF SMALL E
+ 1D5BF         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF SMALL F
+ 1D5C0         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF SMALL G
+ 1D5C1         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF SMALL H
+ 1D5C2         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF SMALL I
+ 1D5C3         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF SMALL J
+ 1D5C4         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF SMALL K
+ 1D5C5         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF SMALL L
+ 1D5C6         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF SMALL M
+ 1D5C7         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF SMALL N
+ 1D5C8         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF SMALL O
+ 1D5C9         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF SMALL P
+ 1D5CA         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF SMALL Q
+ 1D5CB         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF SMALL R
+ 1D5CC         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF SMALL S
+ 1D5CD         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF SMALL T
+ 1D5CE         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF SMALL U
+ 1D5CF         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF SMALL V
+ 1D5D0         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF SMALL W
+ 1D5D1         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF SMALL X
+ 1D5D2         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF SMALL Y
+ 1D5D3         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF SMALL Z
+ 1D5D4         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL A
+ 1D5D5         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL B
+ 1D5D6         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL C
+ 1D5D7         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL D
+ 1D5D8         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL E
+ 1D5D9         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL F
+ 1D5DA         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL G
+ 1D5DB         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL H
+ 1D5DC         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL I
+ 1D5DD         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL J
+ 1D5DE         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL K
+ 1D5DF         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL L
+ 1D5E0         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL M
+ 1D5E1         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL N
+ 1D5E2         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL O
+ 1D5E3         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL P
+ 1D5E4         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL Q
+ 1D5E5         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL R
+ 1D5E6         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL S
+ 1D5E7         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL T
+ 1D5E8         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL U
+ 1D5E9         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL V
+ 1D5EA         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL W
+ 1D5EB         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL X
+ 1D5EC         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL Y
+ 1D5ED         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL Z
+ 1D5EE         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL A
+ 1D5EF         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL B
+ 1D5F0         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL C
+ 1D5F1         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL D
+ 1D5F2         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL E
+ 1D5F3         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL F
+ 1D5F4         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL G
+ 1D5F5         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL H
+ 1D5F6         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL I
+ 1D5F7         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL J
+ 1D5F8         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL K
+ 1D5F9         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL L
+ 1D5FA         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL M
+ 1D5FB         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL N
+ 1D5FC         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL O
+ 1D5FD         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL P
+ 1D5FE         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL Q
+ 1D5FF         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL R
+ 1D600         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL S
+ 1D601         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL T
+ 1D602         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL U
+ 1D603         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL V
+ 1D604         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL W
+ 1D605         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL X
+ 1D606         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL Y
+ 1D607         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL Z
+ 1D608         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL A
+ 1D609         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL B
+ 1D60A         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL C
+ 1D60B         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL D
+ 1D60C         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL E
+ 1D60D         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL F
+ 1D60E         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL G
+ 1D60F         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL H
+ 1D610         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL I
+ 1D611         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL J
+ 1D612         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL K
+ 1D613         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL L
+ 1D614         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL M
+ 1D615         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL N
+ 1D616         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL O
+ 1D617         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL P
+ 1D618         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL Q
+ 1D619         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL R
+ 1D61A         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL S
+ 1D61B         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL T
+ 1D61C         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL U
+ 1D61D         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL V
+ 1D61E         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL W
+ 1D61F         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL X
+ 1D620         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL Y
+ 1D621         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF ITALIC CAPITAL Z
+ 1D622         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL A
+ 1D623         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL B
+ 1D624         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL C
+ 1D625         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL D
+ 1D626         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL E
+ 1D627         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL F
+ 1D628         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL G
+ 1D629         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL H
+ 1D62A         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL I
+ 1D62B         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL J
+ 1D62C         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL K
+ 1D62D         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL L
+ 1D62E         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL M
+ 1D62F         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL N
+ 1D630         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL O
+ 1D631         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL P
+ 1D632         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL Q
+ 1D633         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL R
+ 1D634         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL S
+ 1D635         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL T
+ 1D636         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL U
+ 1D637         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL V
+ 1D638         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL W
+ 1D639         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL X
+ 1D63A         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL Y
+ 1D63B         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF ITALIC SMALL Z
+ 1D63C         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL A
+ 1D63D         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL B
+ 1D63E         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL C
+ 1D63F         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL D
+ 1D640         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL E
+ 1D641         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL F
+ 1D642         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL G
+ 1D643         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL H
+ 1D644         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL I
+ 1D645         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL J
+ 1D646         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL K
+ 1D647         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL L
+ 1D648         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL M
+ 1D649         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL N
+ 1D64A         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL O
+ 1D64B         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL P
+ 1D64C         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Q
+ 1D64D         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL R
+ 1D64E         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL S
+ 1D64F         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL T
+ 1D650         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL U
+ 1D651         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL V
+ 1D652         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL W
+ 1D653         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL X
+ 1D654         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Y
+ 1D655         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL Z
+ 1D656         ; NFKC_CF; 0061           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL A
+ 1D657         ; NFKC_CF; 0062           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL B
+ 1D658         ; NFKC_CF; 0063           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL C
+ 1D659         ; NFKC_CF; 0064           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL D
+ 1D65A         ; NFKC_CF; 0065           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL E
+ 1D65B         ; NFKC_CF; 0066           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL F
+ 1D65C         ; NFKC_CF; 0067           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL G
+ 1D65D         ; NFKC_CF; 0068           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL H
+ 1D65E         ; NFKC_CF; 0069           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I
+ 1D65F         ; NFKC_CF; 006A           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
+ 1D660         ; NFKC_CF; 006B           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL K
+ 1D661         ; NFKC_CF; 006C           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL L
+ 1D662         ; NFKC_CF; 006D           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL M
+ 1D663         ; NFKC_CF; 006E           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL N
+ 1D664         ; NFKC_CF; 006F           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL O
+ 1D665         ; NFKC_CF; 0070           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL P
+ 1D666         ; NFKC_CF; 0071           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Q
+ 1D667         ; NFKC_CF; 0072           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL R
+ 1D668         ; NFKC_CF; 0073           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL S
+ 1D669         ; NFKC_CF; 0074           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL T
+ 1D66A         ; NFKC_CF; 0075           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL U
+ 1D66B         ; NFKC_CF; 0076           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL V
+ 1D66C         ; NFKC_CF; 0077           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL W
+ 1D66D         ; NFKC_CF; 0078           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL X
+ 1D66E         ; NFKC_CF; 0079           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Y
+ 1D66F         ; NFKC_CF; 007A           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL Z
+ 1D670         ; NFKC_CF; 0061           # L&       MATHEMATICAL MONOSPACE CAPITAL A
+ 1D671         ; NFKC_CF; 0062           # L&       MATHEMATICAL MONOSPACE CAPITAL B
+ 1D672         ; NFKC_CF; 0063           # L&       MATHEMATICAL MONOSPACE CAPITAL C
+ 1D673         ; NFKC_CF; 0064           # L&       MATHEMATICAL MONOSPACE CAPITAL D
+ 1D674         ; NFKC_CF; 0065           # L&       MATHEMATICAL MONOSPACE CAPITAL E
+ 1D675         ; NFKC_CF; 0066           # L&       MATHEMATICAL MONOSPACE CAPITAL F
+ 1D676         ; NFKC_CF; 0067           # L&       MATHEMATICAL MONOSPACE CAPITAL G
+ 1D677         ; NFKC_CF; 0068           # L&       MATHEMATICAL MONOSPACE CAPITAL H
+ 1D678         ; NFKC_CF; 0069           # L&       MATHEMATICAL MONOSPACE CAPITAL I
+ 1D679         ; NFKC_CF; 006A           # L&       MATHEMATICAL MONOSPACE CAPITAL J
+ 1D67A         ; NFKC_CF; 006B           # L&       MATHEMATICAL MONOSPACE CAPITAL K
+ 1D67B         ; NFKC_CF; 006C           # L&       MATHEMATICAL MONOSPACE CAPITAL L
+ 1D67C         ; NFKC_CF; 006D           # L&       MATHEMATICAL MONOSPACE CAPITAL M
+ 1D67D         ; NFKC_CF; 006E           # L&       MATHEMATICAL MONOSPACE CAPITAL N
+ 1D67E         ; NFKC_CF; 006F           # L&       MATHEMATICAL MONOSPACE CAPITAL O
+ 1D67F         ; NFKC_CF; 0070           # L&       MATHEMATICAL MONOSPACE CAPITAL P
+ 1D680         ; NFKC_CF; 0071           # L&       MATHEMATICAL MONOSPACE CAPITAL Q
+ 1D681         ; NFKC_CF; 0072           # L&       MATHEMATICAL MONOSPACE CAPITAL R
+ 1D682         ; NFKC_CF; 0073           # L&       MATHEMATICAL MONOSPACE CAPITAL S
+ 1D683         ; NFKC_CF; 0074           # L&       MATHEMATICAL MONOSPACE CAPITAL T
+ 1D684         ; NFKC_CF; 0075           # L&       MATHEMATICAL MONOSPACE CAPITAL U
+ 1D685         ; NFKC_CF; 0076           # L&       MATHEMATICAL MONOSPACE CAPITAL V
+ 1D686         ; NFKC_CF; 0077           # L&       MATHEMATICAL MONOSPACE CAPITAL W
+ 1D687         ; NFKC_CF; 0078           # L&       MATHEMATICAL MONOSPACE CAPITAL X
+ 1D688         ; NFKC_CF; 0079           # L&       MATHEMATICAL MONOSPACE CAPITAL Y
+ 1D689         ; NFKC_CF; 007A           # L&       MATHEMATICAL MONOSPACE CAPITAL Z
+ 1D68A         ; NFKC_CF; 0061           # L&       MATHEMATICAL MONOSPACE SMALL A
+ 1D68B         ; NFKC_CF; 0062           # L&       MATHEMATICAL MONOSPACE SMALL B
+ 1D68C         ; NFKC_CF; 0063           # L&       MATHEMATICAL MONOSPACE SMALL C
+ 1D68D         ; NFKC_CF; 0064           # L&       MATHEMATICAL MONOSPACE SMALL D
+ 1D68E         ; NFKC_CF; 0065           # L&       MATHEMATICAL MONOSPACE SMALL E
+ 1D68F         ; NFKC_CF; 0066           # L&       MATHEMATICAL MONOSPACE SMALL F
+ 1D690         ; NFKC_CF; 0067           # L&       MATHEMATICAL MONOSPACE SMALL G
+ 1D691         ; NFKC_CF; 0068           # L&       MATHEMATICAL MONOSPACE SMALL H
+ 1D692         ; NFKC_CF; 0069           # L&       MATHEMATICAL MONOSPACE SMALL I
+ 1D693         ; NFKC_CF; 006A           # L&       MATHEMATICAL MONOSPACE SMALL J
+ 1D694         ; NFKC_CF; 006B           # L&       MATHEMATICAL MONOSPACE SMALL K
+ 1D695         ; NFKC_CF; 006C           # L&       MATHEMATICAL MONOSPACE SMALL L
+ 1D696         ; NFKC_CF; 006D           # L&       MATHEMATICAL MONOSPACE SMALL M
+ 1D697         ; NFKC_CF; 006E           # L&       MATHEMATICAL MONOSPACE SMALL N
+ 1D698         ; NFKC_CF; 006F           # L&       MATHEMATICAL MONOSPACE SMALL O
+ 1D699         ; NFKC_CF; 0070           # L&       MATHEMATICAL MONOSPACE SMALL P
+ 1D69A         ; NFKC_CF; 0071           # L&       MATHEMATICAL MONOSPACE SMALL Q
+ 1D69B         ; NFKC_CF; 0072           # L&       MATHEMATICAL MONOSPACE SMALL R
+ 1D69C         ; NFKC_CF; 0073           # L&       MATHEMATICAL MONOSPACE SMALL S
+ 1D69D         ; NFKC_CF; 0074           # L&       MATHEMATICAL MONOSPACE SMALL T
+ 1D69E         ; NFKC_CF; 0075           # L&       MATHEMATICAL MONOSPACE SMALL U
+ 1D69F         ; NFKC_CF; 0076           # L&       MATHEMATICAL MONOSPACE SMALL V
+ 1D6A0         ; NFKC_CF; 0077           # L&       MATHEMATICAL MONOSPACE SMALL W
+ 1D6A1         ; NFKC_CF; 0078           # L&       MATHEMATICAL MONOSPACE SMALL X
+ 1D6A2         ; NFKC_CF; 0079           # L&       MATHEMATICAL MONOSPACE SMALL Y
+ 1D6A3         ; NFKC_CF; 007A           # L&       MATHEMATICAL MONOSPACE SMALL Z
+ 1D6A4         ; NFKC_CF; 0131           # L&       MATHEMATICAL ITALIC SMALL DOTLESS I
+ 1D6A5         ; NFKC_CF; 0237           # L&       MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8         ; NFKC_CF; 03B1           # L&       MATHEMATICAL BOLD CAPITAL ALPHA
+ 1D6A9         ; NFKC_CF; 03B2           # L&       MATHEMATICAL BOLD CAPITAL BETA
+ 1D6AA         ; NFKC_CF; 03B3           # L&       MATHEMATICAL BOLD CAPITAL GAMMA
+ 1D6AB         ; NFKC_CF; 03B4           # L&       MATHEMATICAL BOLD CAPITAL DELTA
+ 1D6AC         ; NFKC_CF; 03B5           # L&       MATHEMATICAL BOLD CAPITAL EPSILON
+ 1D6AD         ; NFKC_CF; 03B6           # L&       MATHEMATICAL BOLD CAPITAL ZETA
+ 1D6AE         ; NFKC_CF; 03B7           # L&       MATHEMATICAL BOLD CAPITAL ETA
+ 1D6AF         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD CAPITAL THETA
+ 1D6B0         ; NFKC_CF; 03B9           # L&       MATHEMATICAL BOLD CAPITAL IOTA
+ 1D6B1         ; NFKC_CF; 03BA           # L&       MATHEMATICAL BOLD CAPITAL KAPPA
+ 1D6B2         ; NFKC_CF; 03BB           # L&       MATHEMATICAL BOLD CAPITAL LAMDA
+ 1D6B3         ; NFKC_CF; 03BC           # L&       MATHEMATICAL BOLD CAPITAL MU
+ 1D6B4         ; NFKC_CF; 03BD           # L&       MATHEMATICAL BOLD CAPITAL NU
+ 1D6B5         ; NFKC_CF; 03BE           # L&       MATHEMATICAL BOLD CAPITAL XI
+ 1D6B6         ; NFKC_CF; 03BF           # L&       MATHEMATICAL BOLD CAPITAL OMICRON
+ 1D6B7         ; NFKC_CF; 03C0           # L&       MATHEMATICAL BOLD CAPITAL PI
+ 1D6B8         ; NFKC_CF; 03C1           # L&       MATHEMATICAL BOLD CAPITAL RHO
+ 1D6B9         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD CAPITAL THETA SYMBOL
+ 1D6BA         ; NFKC_CF; 03C3           # L&       MATHEMATICAL BOLD CAPITAL SIGMA
+ 1D6BB         ; NFKC_CF; 03C4           # L&       MATHEMATICAL BOLD CAPITAL TAU
+ 1D6BC         ; NFKC_CF; 03C5           # L&       MATHEMATICAL BOLD CAPITAL UPSILON
+ 1D6BD         ; NFKC_CF; 03C6           # L&       MATHEMATICAL BOLD CAPITAL PHI
+ 1D6BE         ; NFKC_CF; 03C7           # L&       MATHEMATICAL BOLD CAPITAL CHI
+ 1D6BF         ; NFKC_CF; 03C8           # L&       MATHEMATICAL BOLD CAPITAL PSI
+ 1D6C0         ; NFKC_CF; 03C9           # L&       MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C1         ; NFKC_CF; 2207           # Sm       MATHEMATICAL BOLD NABLA
+ 1D6C2         ; NFKC_CF; 03B1           # L&       MATHEMATICAL BOLD SMALL ALPHA
+ 1D6C3         ; NFKC_CF; 03B2           # L&       MATHEMATICAL BOLD SMALL BETA
+ 1D6C4         ; NFKC_CF; 03B3           # L&       MATHEMATICAL BOLD SMALL GAMMA
+ 1D6C5         ; NFKC_CF; 03B4           # L&       MATHEMATICAL BOLD SMALL DELTA
+ 1D6C6         ; NFKC_CF; 03B5           # L&       MATHEMATICAL BOLD SMALL EPSILON
+ 1D6C7         ; NFKC_CF; 03B6           # L&       MATHEMATICAL BOLD SMALL ZETA
+ 1D6C8         ; NFKC_CF; 03B7           # L&       MATHEMATICAL BOLD SMALL ETA
+ 1D6C9         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD SMALL THETA
+ 1D6CA         ; NFKC_CF; 03B9           # L&       MATHEMATICAL BOLD SMALL IOTA
+ 1D6CB         ; NFKC_CF; 03BA           # L&       MATHEMATICAL BOLD SMALL KAPPA
+ 1D6CC         ; NFKC_CF; 03BB           # L&       MATHEMATICAL BOLD SMALL LAMDA
+ 1D6CD         ; NFKC_CF; 03BC           # L&       MATHEMATICAL BOLD SMALL MU
+ 1D6CE         ; NFKC_CF; 03BD           # L&       MATHEMATICAL BOLD SMALL NU
+ 1D6CF         ; NFKC_CF; 03BE           # L&       MATHEMATICAL BOLD SMALL XI
+ 1D6D0         ; NFKC_CF; 03BF           # L&       MATHEMATICAL BOLD SMALL OMICRON
+ 1D6D1         ; NFKC_CF; 03C0           # L&       MATHEMATICAL BOLD SMALL PI
+ 1D6D2         ; NFKC_CF; 03C1           # L&       MATHEMATICAL BOLD SMALL RHO
+ 1D6D3..1D6D4  ; NFKC_CF; 03C3           # L&   [2] MATHEMATICAL BOLD SMALL FINAL SIGMA..MATHEMATICAL BOLD SMALL SIGMA
+ 1D6D5         ; NFKC_CF; 03C4           # L&       MATHEMATICAL BOLD SMALL TAU
+ 1D6D6         ; NFKC_CF; 03C5           # L&       MATHEMATICAL BOLD SMALL UPSILON
+ 1D6D7         ; NFKC_CF; 03C6           # L&       MATHEMATICAL BOLD SMALL PHI
+ 1D6D8         ; NFKC_CF; 03C7           # L&       MATHEMATICAL BOLD SMALL CHI
+ 1D6D9         ; NFKC_CF; 03C8           # L&       MATHEMATICAL BOLD SMALL PSI
+ 1D6DA         ; NFKC_CF; 03C9           # L&       MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DB         ; NFKC_CF; 2202           # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ 1D6DC         ; NFKC_CF; 03B5           # L&       MATHEMATICAL BOLD EPSILON SYMBOL
+ 1D6DD         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD THETA SYMBOL
+ 1D6DE         ; NFKC_CF; 03BA           # L&       MATHEMATICAL BOLD KAPPA SYMBOL
+ 1D6DF         ; NFKC_CF; 03C6           # L&       MATHEMATICAL BOLD PHI SYMBOL
+ 1D6E0         ; NFKC_CF; 03C1           # L&       MATHEMATICAL BOLD RHO SYMBOL
+ 1D6E1         ; NFKC_CF; 03C0           # L&       MATHEMATICAL BOLD PI SYMBOL
+ 1D6E2         ; NFKC_CF; 03B1           # L&       MATHEMATICAL ITALIC CAPITAL ALPHA
+ 1D6E3         ; NFKC_CF; 03B2           # L&       MATHEMATICAL ITALIC CAPITAL BETA
+ 1D6E4         ; NFKC_CF; 03B3           # L&       MATHEMATICAL ITALIC CAPITAL GAMMA
+ 1D6E5         ; NFKC_CF; 03B4           # L&       MATHEMATICAL ITALIC CAPITAL DELTA
+ 1D6E6         ; NFKC_CF; 03B5           # L&       MATHEMATICAL ITALIC CAPITAL EPSILON
+ 1D6E7         ; NFKC_CF; 03B6           # L&       MATHEMATICAL ITALIC CAPITAL ZETA
+ 1D6E8         ; NFKC_CF; 03B7           # L&       MATHEMATICAL ITALIC CAPITAL ETA
+ 1D6E9         ; NFKC_CF; 03B8           # L&       MATHEMATICAL ITALIC CAPITAL THETA
+ 1D6EA         ; NFKC_CF; 03B9           # L&       MATHEMATICAL ITALIC CAPITAL IOTA
+ 1D6EB         ; NFKC_CF; 03BA           # L&       MATHEMATICAL ITALIC CAPITAL KAPPA
+ 1D6EC         ; NFKC_CF; 03BB           # L&       MATHEMATICAL ITALIC CAPITAL LAMDA
+ 1D6ED         ; NFKC_CF; 03BC           # L&       MATHEMATICAL ITALIC CAPITAL MU
+ 1D6EE         ; NFKC_CF; 03BD           # L&       MATHEMATICAL ITALIC CAPITAL NU
+ 1D6EF         ; NFKC_CF; 03BE           # L&       MATHEMATICAL ITALIC CAPITAL XI
+ 1D6F0         ; NFKC_CF; 03BF           # L&       MATHEMATICAL ITALIC CAPITAL OMICRON
+ 1D6F1         ; NFKC_CF; 03C0           # L&       MATHEMATICAL ITALIC CAPITAL PI
+ 1D6F2         ; NFKC_CF; 03C1           # L&       MATHEMATICAL ITALIC CAPITAL RHO
+ 1D6F3         ; NFKC_CF; 03B8           # L&       MATHEMATICAL ITALIC CAPITAL THETA SYMBOL
+ 1D6F4         ; NFKC_CF; 03C3           # L&       MATHEMATICAL ITALIC CAPITAL SIGMA
+ 1D6F5         ; NFKC_CF; 03C4           # L&       MATHEMATICAL ITALIC CAPITAL TAU
+ 1D6F6         ; NFKC_CF; 03C5           # L&       MATHEMATICAL ITALIC CAPITAL UPSILON
+ 1D6F7         ; NFKC_CF; 03C6           # L&       MATHEMATICAL ITALIC CAPITAL PHI
+ 1D6F8         ; NFKC_CF; 03C7           # L&       MATHEMATICAL ITALIC CAPITAL CHI
+ 1D6F9         ; NFKC_CF; 03C8           # L&       MATHEMATICAL ITALIC CAPITAL PSI
+ 1D6FA         ; NFKC_CF; 03C9           # L&       MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FB         ; NFKC_CF; 2207           # Sm       MATHEMATICAL ITALIC NABLA
+ 1D6FC         ; NFKC_CF; 03B1           # L&       MATHEMATICAL ITALIC SMALL ALPHA
+ 1D6FD         ; NFKC_CF; 03B2           # L&       MATHEMATICAL ITALIC SMALL BETA
+ 1D6FE         ; NFKC_CF; 03B3           # L&       MATHEMATICAL ITALIC SMALL GAMMA
+ 1D6FF         ; NFKC_CF; 03B4           # L&       MATHEMATICAL ITALIC SMALL DELTA
+ 1D700         ; NFKC_CF; 03B5           # L&       MATHEMATICAL ITALIC SMALL EPSILON
+ 1D701         ; NFKC_CF; 03B6           # L&       MATHEMATICAL ITALIC SMALL ZETA
+ 1D702         ; NFKC_CF; 03B7           # L&       MATHEMATICAL ITALIC SMALL ETA
+ 1D703         ; NFKC_CF; 03B8           # L&       MATHEMATICAL ITALIC SMALL THETA
+ 1D704         ; NFKC_CF; 03B9           # L&       MATHEMATICAL ITALIC SMALL IOTA
+ 1D705         ; NFKC_CF; 03BA           # L&       MATHEMATICAL ITALIC SMALL KAPPA
+ 1D706         ; NFKC_CF; 03BB           # L&       MATHEMATICAL ITALIC SMALL LAMDA
+ 1D707         ; NFKC_CF; 03BC           # L&       MATHEMATICAL ITALIC SMALL MU
+ 1D708         ; NFKC_CF; 03BD           # L&       MATHEMATICAL ITALIC SMALL NU
+ 1D709         ; NFKC_CF; 03BE           # L&       MATHEMATICAL ITALIC SMALL XI
+ 1D70A         ; NFKC_CF; 03BF           # L&       MATHEMATICAL ITALIC SMALL OMICRON
+ 1D70B         ; NFKC_CF; 03C0           # L&       MATHEMATICAL ITALIC SMALL PI
+ 1D70C         ; NFKC_CF; 03C1           # L&       MATHEMATICAL ITALIC SMALL RHO
+ 1D70D..1D70E  ; NFKC_CF; 03C3           # L&   [2] MATHEMATICAL ITALIC SMALL FINAL SIGMA..MATHEMATICAL ITALIC SMALL SIGMA
+ 1D70F         ; NFKC_CF; 03C4           # L&       MATHEMATICAL ITALIC SMALL TAU
+ 1D710         ; NFKC_CF; 03C5           # L&       MATHEMATICAL ITALIC SMALL UPSILON
+ 1D711         ; NFKC_CF; 03C6           # L&       MATHEMATICAL ITALIC SMALL PHI
+ 1D712         ; NFKC_CF; 03C7           # L&       MATHEMATICAL ITALIC SMALL CHI
+ 1D713         ; NFKC_CF; 03C8           # L&       MATHEMATICAL ITALIC SMALL PSI
+ 1D714         ; NFKC_CF; 03C9           # L&       MATHEMATICAL ITALIC SMALL OMEGA
+ 1D715         ; NFKC_CF; 2202           # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ 1D716         ; NFKC_CF; 03B5           # L&       MATHEMATICAL ITALIC EPSILON SYMBOL
+ 1D717         ; NFKC_CF; 03B8           # L&       MATHEMATICAL ITALIC THETA SYMBOL
+ 1D718         ; NFKC_CF; 03BA           # L&       MATHEMATICAL ITALIC KAPPA SYMBOL
+ 1D719         ; NFKC_CF; 03C6           # L&       MATHEMATICAL ITALIC PHI SYMBOL
+ 1D71A         ; NFKC_CF; 03C1           # L&       MATHEMATICAL ITALIC RHO SYMBOL
+ 1D71B         ; NFKC_CF; 03C0           # L&       MATHEMATICAL ITALIC PI SYMBOL
+ 1D71C         ; NFKC_CF; 03B1           # L&       MATHEMATICAL BOLD ITALIC CAPITAL ALPHA
+ 1D71D         ; NFKC_CF; 03B2           # L&       MATHEMATICAL BOLD ITALIC CAPITAL BETA
+ 1D71E         ; NFKC_CF; 03B3           # L&       MATHEMATICAL BOLD ITALIC CAPITAL GAMMA
+ 1D71F         ; NFKC_CF; 03B4           # L&       MATHEMATICAL BOLD ITALIC CAPITAL DELTA
+ 1D720         ; NFKC_CF; 03B5           # L&       MATHEMATICAL BOLD ITALIC CAPITAL EPSILON
+ 1D721         ; NFKC_CF; 03B6           # L&       MATHEMATICAL BOLD ITALIC CAPITAL ZETA
+ 1D722         ; NFKC_CF; 03B7           # L&       MATHEMATICAL BOLD ITALIC CAPITAL ETA
+ 1D723         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD ITALIC CAPITAL THETA
+ 1D724         ; NFKC_CF; 03B9           # L&       MATHEMATICAL BOLD ITALIC CAPITAL IOTA
+ 1D725         ; NFKC_CF; 03BA           # L&       MATHEMATICAL BOLD ITALIC CAPITAL KAPPA
+ 1D726         ; NFKC_CF; 03BB           # L&       MATHEMATICAL BOLD ITALIC CAPITAL LAMDA
+ 1D727         ; NFKC_CF; 03BC           # L&       MATHEMATICAL BOLD ITALIC CAPITAL MU
+ 1D728         ; NFKC_CF; 03BD           # L&       MATHEMATICAL BOLD ITALIC CAPITAL NU
+ 1D729         ; NFKC_CF; 03BE           # L&       MATHEMATICAL BOLD ITALIC CAPITAL XI
+ 1D72A         ; NFKC_CF; 03BF           # L&       MATHEMATICAL BOLD ITALIC CAPITAL OMICRON
+ 1D72B         ; NFKC_CF; 03C0           # L&       MATHEMATICAL BOLD ITALIC CAPITAL PI
+ 1D72C         ; NFKC_CF; 03C1           # L&       MATHEMATICAL BOLD ITALIC CAPITAL RHO
+ 1D72D         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD ITALIC CAPITAL THETA SYMBOL
+ 1D72E         ; NFKC_CF; 03C3           # L&       MATHEMATICAL BOLD ITALIC CAPITAL SIGMA
+ 1D72F         ; NFKC_CF; 03C4           # L&       MATHEMATICAL BOLD ITALIC CAPITAL TAU
+ 1D730         ; NFKC_CF; 03C5           # L&       MATHEMATICAL BOLD ITALIC CAPITAL UPSILON
+ 1D731         ; NFKC_CF; 03C6           # L&       MATHEMATICAL BOLD ITALIC CAPITAL PHI
+ 1D732         ; NFKC_CF; 03C7           # L&       MATHEMATICAL BOLD ITALIC CAPITAL CHI
+ 1D733         ; NFKC_CF; 03C8           # L&       MATHEMATICAL BOLD ITALIC CAPITAL PSI
+ 1D734         ; NFKC_CF; 03C9           # L&       MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D735         ; NFKC_CF; 2207           # Sm       MATHEMATICAL BOLD ITALIC NABLA
+ 1D736         ; NFKC_CF; 03B1           # L&       MATHEMATICAL BOLD ITALIC SMALL ALPHA
+ 1D737         ; NFKC_CF; 03B2           # L&       MATHEMATICAL BOLD ITALIC SMALL BETA
+ 1D738         ; NFKC_CF; 03B3           # L&       MATHEMATICAL BOLD ITALIC SMALL GAMMA
+ 1D739         ; NFKC_CF; 03B4           # L&       MATHEMATICAL BOLD ITALIC SMALL DELTA
+ 1D73A         ; NFKC_CF; 03B5           # L&       MATHEMATICAL BOLD ITALIC SMALL EPSILON
+ 1D73B         ; NFKC_CF; 03B6           # L&       MATHEMATICAL BOLD ITALIC SMALL ZETA
+ 1D73C         ; NFKC_CF; 03B7           # L&       MATHEMATICAL BOLD ITALIC SMALL ETA
+ 1D73D         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD ITALIC SMALL THETA
+ 1D73E         ; NFKC_CF; 03B9           # L&       MATHEMATICAL BOLD ITALIC SMALL IOTA
+ 1D73F         ; NFKC_CF; 03BA           # L&       MATHEMATICAL BOLD ITALIC SMALL KAPPA
+ 1D740         ; NFKC_CF; 03BB           # L&       MATHEMATICAL BOLD ITALIC SMALL LAMDA
+ 1D741         ; NFKC_CF; 03BC           # L&       MATHEMATICAL BOLD ITALIC SMALL MU
+ 1D742         ; NFKC_CF; 03BD           # L&       MATHEMATICAL BOLD ITALIC SMALL NU
+ 1D743         ; NFKC_CF; 03BE           # L&       MATHEMATICAL BOLD ITALIC SMALL XI
+ 1D744         ; NFKC_CF; 03BF           # L&       MATHEMATICAL BOLD ITALIC SMALL OMICRON
+ 1D745         ; NFKC_CF; 03C0           # L&       MATHEMATICAL BOLD ITALIC SMALL PI
+ 1D746         ; NFKC_CF; 03C1           # L&       MATHEMATICAL BOLD ITALIC SMALL RHO
+ 1D747..1D748  ; NFKC_CF; 03C3           # L&   [2] MATHEMATICAL BOLD ITALIC SMALL FINAL SIGMA..MATHEMATICAL BOLD ITALIC SMALL SIGMA
+ 1D749         ; NFKC_CF; 03C4           # L&       MATHEMATICAL BOLD ITALIC SMALL TAU
+ 1D74A         ; NFKC_CF; 03C5           # L&       MATHEMATICAL BOLD ITALIC SMALL UPSILON
+ 1D74B         ; NFKC_CF; 03C6           # L&       MATHEMATICAL BOLD ITALIC SMALL PHI
+ 1D74C         ; NFKC_CF; 03C7           # L&       MATHEMATICAL BOLD ITALIC SMALL CHI
+ 1D74D         ; NFKC_CF; 03C8           # L&       MATHEMATICAL BOLD ITALIC SMALL PSI
+ 1D74E         ; NFKC_CF; 03C9           # L&       MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D74F         ; NFKC_CF; 2202           # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D750         ; NFKC_CF; 03B5           # L&       MATHEMATICAL BOLD ITALIC EPSILON SYMBOL
+ 1D751         ; NFKC_CF; 03B8           # L&       MATHEMATICAL BOLD ITALIC THETA SYMBOL
+ 1D752         ; NFKC_CF; 03BA           # L&       MATHEMATICAL BOLD ITALIC KAPPA SYMBOL
+ 1D753         ; NFKC_CF; 03C6           # L&       MATHEMATICAL BOLD ITALIC PHI SYMBOL
+ 1D754         ; NFKC_CF; 03C1           # L&       MATHEMATICAL BOLD ITALIC RHO SYMBOL
+ 1D755         ; NFKC_CF; 03C0           # L&       MATHEMATICAL BOLD ITALIC PI SYMBOL
+ 1D756         ; NFKC_CF; 03B1           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL ALPHA
+ 1D757         ; NFKC_CF; 03B2           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL BETA
+ 1D758         ; NFKC_CF; 03B3           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL GAMMA
+ 1D759         ; NFKC_CF; 03B4           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL DELTA
+ 1D75A         ; NFKC_CF; 03B5           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL EPSILON
+ 1D75B         ; NFKC_CF; 03B6           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL ZETA
+ 1D75C         ; NFKC_CF; 03B7           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL ETA
+ 1D75D         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA
+ 1D75E         ; NFKC_CF; 03B9           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL IOTA
+ 1D75F         ; NFKC_CF; 03BA           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL KAPPA
+ 1D760         ; NFKC_CF; 03BB           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL LAMDA
+ 1D761         ; NFKC_CF; 03BC           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL MU
+ 1D762         ; NFKC_CF; 03BD           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL NU
+ 1D763         ; NFKC_CF; 03BE           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL XI
+ 1D764         ; NFKC_CF; 03BF           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL OMICRON
+ 1D765         ; NFKC_CF; 03C0           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL PI
+ 1D766         ; NFKC_CF; 03C1           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL RHO
+ 1D767         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL THETA SYMBOL
+ 1D768         ; NFKC_CF; 03C3           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL SIGMA
+ 1D769         ; NFKC_CF; 03C4           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL TAU
+ 1D76A         ; NFKC_CF; 03C5           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL UPSILON
+ 1D76B         ; NFKC_CF; 03C6           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL PHI
+ 1D76C         ; NFKC_CF; 03C7           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL CHI
+ 1D76D         ; NFKC_CF; 03C8           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL PSI
+ 1D76E         ; NFKC_CF; 03C9           # L&       MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D76F         ; NFKC_CF; 2207           # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
+ 1D770         ; NFKC_CF; 03B1           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA
+ 1D771         ; NFKC_CF; 03B2           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL BETA
+ 1D772         ; NFKC_CF; 03B3           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL GAMMA
+ 1D773         ; NFKC_CF; 03B4           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL DELTA
+ 1D774         ; NFKC_CF; 03B5           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL EPSILON
+ 1D775         ; NFKC_CF; 03B6           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL ZETA
+ 1D776         ; NFKC_CF; 03B7           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL ETA
+ 1D777         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL THETA
+ 1D778         ; NFKC_CF; 03B9           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL IOTA
+ 1D779         ; NFKC_CF; 03BA           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL KAPPA
+ 1D77A         ; NFKC_CF; 03BB           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL LAMDA
+ 1D77B         ; NFKC_CF; 03BC           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL MU
+ 1D77C         ; NFKC_CF; 03BD           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL NU
+ 1D77D         ; NFKC_CF; 03BE           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL XI
+ 1D77E         ; NFKC_CF; 03BF           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL OMICRON
+ 1D77F         ; NFKC_CF; 03C0           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL PI
+ 1D780         ; NFKC_CF; 03C1           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL RHO
+ 1D781..1D782  ; NFKC_CF; 03C3           # L&   [2] MATHEMATICAL SANS-SERIF BOLD SMALL FINAL SIGMA..MATHEMATICAL SANS-SERIF BOLD SMALL SIGMA
+ 1D783         ; NFKC_CF; 03C4           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL TAU
+ 1D784         ; NFKC_CF; 03C5           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL UPSILON
+ 1D785         ; NFKC_CF; 03C6           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL PHI
+ 1D786         ; NFKC_CF; 03C7           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL CHI
+ 1D787         ; NFKC_CF; 03C8           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL PSI
+ 1D788         ; NFKC_CF; 03C9           # L&       MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D789         ; NFKC_CF; 2202           # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ 1D78A         ; NFKC_CF; 03B5           # L&       MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL
+ 1D78B         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD THETA SYMBOL
+ 1D78C         ; NFKC_CF; 03BA           # L&       MATHEMATICAL SANS-SERIF BOLD KAPPA SYMBOL
+ 1D78D         ; NFKC_CF; 03C6           # L&       MATHEMATICAL SANS-SERIF BOLD PHI SYMBOL
+ 1D78E         ; NFKC_CF; 03C1           # L&       MATHEMATICAL SANS-SERIF BOLD RHO SYMBOL
+ 1D78F         ; NFKC_CF; 03C0           # L&       MATHEMATICAL SANS-SERIF BOLD PI SYMBOL
+ 1D790         ; NFKC_CF; 03B1           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ALPHA
+ 1D791         ; NFKC_CF; 03B2           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL BETA
+ 1D792         ; NFKC_CF; 03B3           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL GAMMA
+ 1D793         ; NFKC_CF; 03B4           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL DELTA
+ 1D794         ; NFKC_CF; 03B5           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL EPSILON
+ 1D795         ; NFKC_CF; 03B6           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ZETA
+ 1D796         ; NFKC_CF; 03B7           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL ETA
+ 1D797         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA
+ 1D798         ; NFKC_CF; 03B9           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL IOTA
+ 1D799         ; NFKC_CF; 03BA           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL KAPPA
+ 1D79A         ; NFKC_CF; 03BB           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL LAMDA
+ 1D79B         ; NFKC_CF; 03BC           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL MU
+ 1D79C         ; NFKC_CF; 03BD           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL NU
+ 1D79D         ; NFKC_CF; 03BE           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL XI
+ 1D79E         ; NFKC_CF; 03BF           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMICRON
+ 1D79F         ; NFKC_CF; 03C0           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PI
+ 1D7A0         ; NFKC_CF; 03C1           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL RHO
+ 1D7A1         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL THETA SYMBOL
+ 1D7A2         ; NFKC_CF; 03C3           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL SIGMA
+ 1D7A3         ; NFKC_CF; 03C4           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL TAU
+ 1D7A4         ; NFKC_CF; 03C5           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL UPSILON
+ 1D7A5         ; NFKC_CF; 03C6           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PHI
+ 1D7A6         ; NFKC_CF; 03C7           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL CHI
+ 1D7A7         ; NFKC_CF; 03C8           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL PSI
+ 1D7A8         ; NFKC_CF; 03C9           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7A9         ; NFKC_CF; 2207           # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ 1D7AA         ; NFKC_CF; 03B1           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA
+ 1D7AB         ; NFKC_CF; 03B2           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL BETA
+ 1D7AC         ; NFKC_CF; 03B3           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL GAMMA
+ 1D7AD         ; NFKC_CF; 03B4           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL DELTA
+ 1D7AE         ; NFKC_CF; 03B5           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL EPSILON
+ 1D7AF         ; NFKC_CF; 03B6           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ZETA
+ 1D7B0         ; NFKC_CF; 03B7           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ETA
+ 1D7B1         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL THETA
+ 1D7B2         ; NFKC_CF; 03B9           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL IOTA
+ 1D7B3         ; NFKC_CF; 03BA           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL KAPPA
+ 1D7B4         ; NFKC_CF; 03BB           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL LAMDA
+ 1D7B5         ; NFKC_CF; 03BC           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL MU
+ 1D7B6         ; NFKC_CF; 03BD           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL NU
+ 1D7B7         ; NFKC_CF; 03BE           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL XI
+ 1D7B8         ; NFKC_CF; 03BF           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMICRON
+ 1D7B9         ; NFKC_CF; 03C0           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PI
+ 1D7BA         ; NFKC_CF; 03C1           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL RHO
+ 1D7BB..1D7BC  ; NFKC_CF; 03C3           # L&   [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL FINAL SIGMA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL SIGMA
+ 1D7BD         ; NFKC_CF; 03C4           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL TAU
+ 1D7BE         ; NFKC_CF; 03C5           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL UPSILON
+ 1D7BF         ; NFKC_CF; 03C6           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PHI
+ 1D7C0         ; NFKC_CF; 03C7           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL CHI
+ 1D7C1         ; NFKC_CF; 03C8           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL PSI
+ 1D7C2         ; NFKC_CF; 03C9           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C3         ; NFKC_CF; 2202           # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D7C4         ; NFKC_CF; 03B5           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL
+ 1D7C5         ; NFKC_CF; 03B8           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC THETA SYMBOL
+ 1D7C6         ; NFKC_CF; 03BA           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC KAPPA SYMBOL
+ 1D7C7         ; NFKC_CF; 03C6           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC PHI SYMBOL
+ 1D7C8         ; NFKC_CF; 03C1           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC RHO SYMBOL
+ 1D7C9         ; NFKC_CF; 03C0           # L&       MATHEMATICAL SANS-SERIF BOLD ITALIC PI SYMBOL
+ 1D7CA..1D7CB  ; NFKC_CF; 03DD           # L&   [2] MATHEMATICAL BOLD CAPITAL DIGAMMA..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE         ; NFKC_CF; 0030           # Nd       MATHEMATICAL BOLD DIGIT ZERO
+ 1D7CF         ; NFKC_CF; 0031           # Nd       MATHEMATICAL BOLD DIGIT ONE
+ 1D7D0         ; NFKC_CF; 0032           # Nd       MATHEMATICAL BOLD DIGIT TWO
+ 1D7D1         ; NFKC_CF; 0033           # Nd       MATHEMATICAL BOLD DIGIT THREE
+ 1D7D2         ; NFKC_CF; 0034           # Nd       MATHEMATICAL BOLD DIGIT FOUR
+ 1D7D3         ; NFKC_CF; 0035           # Nd       MATHEMATICAL BOLD DIGIT FIVE
+ 1D7D4         ; NFKC_CF; 0036           # Nd       MATHEMATICAL BOLD DIGIT SIX
+ 1D7D5         ; NFKC_CF; 0037           # Nd       MATHEMATICAL BOLD DIGIT SEVEN
+ 1D7D6         ; NFKC_CF; 0038           # Nd       MATHEMATICAL BOLD DIGIT EIGHT
+ 1D7D7         ; NFKC_CF; 0039           # Nd       MATHEMATICAL BOLD DIGIT NINE
+ 1D7D8         ; NFKC_CF; 0030           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT ZERO
+ 1D7D9         ; NFKC_CF; 0031           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT ONE
+ 1D7DA         ; NFKC_CF; 0032           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT TWO
+ 1D7DB         ; NFKC_CF; 0033           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT THREE
+ 1D7DC         ; NFKC_CF; 0034           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT FOUR
+ 1D7DD         ; NFKC_CF; 0035           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT FIVE
+ 1D7DE         ; NFKC_CF; 0036           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT SIX
+ 1D7DF         ; NFKC_CF; 0037           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT SEVEN
+ 1D7E0         ; NFKC_CF; 0038           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT EIGHT
+ 1D7E1         ; NFKC_CF; 0039           # Nd       MATHEMATICAL DOUBLE-STRUCK DIGIT NINE
+ 1D7E2         ; NFKC_CF; 0030           # Nd       MATHEMATICAL SANS-SERIF DIGIT ZERO
+ 1D7E3         ; NFKC_CF; 0031           # Nd       MATHEMATICAL SANS-SERIF DIGIT ONE
+ 1D7E4         ; NFKC_CF; 0032           # Nd       MATHEMATICAL SANS-SERIF DIGIT TWO
+ 1D7E5         ; NFKC_CF; 0033           # Nd       MATHEMATICAL SANS-SERIF DIGIT THREE
+ 1D7E6         ; NFKC_CF; 0034           # Nd       MATHEMATICAL SANS-SERIF DIGIT FOUR
+ 1D7E7         ; NFKC_CF; 0035           # Nd       MATHEMATICAL SANS-SERIF DIGIT FIVE
+ 1D7E8         ; NFKC_CF; 0036           # Nd       MATHEMATICAL SANS-SERIF DIGIT SIX
+ 1D7E9         ; NFKC_CF; 0037           # Nd       MATHEMATICAL SANS-SERIF DIGIT SEVEN
+ 1D7EA         ; NFKC_CF; 0038           # Nd       MATHEMATICAL SANS-SERIF DIGIT EIGHT
+ 1D7EB         ; NFKC_CF; 0039           # Nd       MATHEMATICAL SANS-SERIF DIGIT NINE
+ 1D7EC         ; NFKC_CF; 0030           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT ZERO
+ 1D7ED         ; NFKC_CF; 0031           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT ONE
+ 1D7EE         ; NFKC_CF; 0032           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT TWO
+ 1D7EF         ; NFKC_CF; 0033           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT THREE
+ 1D7F0         ; NFKC_CF; 0034           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT FOUR
+ 1D7F1         ; NFKC_CF; 0035           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT FIVE
+ 1D7F2         ; NFKC_CF; 0036           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT SIX
+ 1D7F3         ; NFKC_CF; 0037           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT SEVEN
+ 1D7F4         ; NFKC_CF; 0038           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT EIGHT
+ 1D7F5         ; NFKC_CF; 0039           # Nd       MATHEMATICAL SANS-SERIF BOLD DIGIT NINE
+ 1D7F6         ; NFKC_CF; 0030           # Nd       MATHEMATICAL MONOSPACE DIGIT ZERO
+ 1D7F7         ; NFKC_CF; 0031           # Nd       MATHEMATICAL MONOSPACE DIGIT ONE
+ 1D7F8         ; NFKC_CF; 0032           # Nd       MATHEMATICAL MONOSPACE DIGIT TWO
+ 1D7F9         ; NFKC_CF; 0033           # Nd       MATHEMATICAL MONOSPACE DIGIT THREE
+ 1D7FA         ; NFKC_CF; 0034           # Nd       MATHEMATICAL MONOSPACE DIGIT FOUR
+ 1D7FB         ; NFKC_CF; 0035           # Nd       MATHEMATICAL MONOSPACE DIGIT FIVE
+ 1D7FC         ; NFKC_CF; 0036           # Nd       MATHEMATICAL MONOSPACE DIGIT SIX
+ 1D7FD         ; NFKC_CF; 0037           # Nd       MATHEMATICAL MONOSPACE DIGIT SEVEN
+ 1D7FE         ; NFKC_CF; 0038           # Nd       MATHEMATICAL MONOSPACE DIGIT EIGHT
+ 1D7FF         ; NFKC_CF; 0039           # Nd       MATHEMATICAL MONOSPACE DIGIT NINE
+ 1E030         ; NFKC_CF; 0430           # Lm       MODIFIER LETTER CYRILLIC SMALL A
+ 1E031         ; NFKC_CF; 0431           # Lm       MODIFIER LETTER CYRILLIC SMALL BE
+ 1E032         ; NFKC_CF; 0432           # Lm       MODIFIER LETTER CYRILLIC SMALL VE
+ 1E033         ; NFKC_CF; 0433           # Lm       MODIFIER LETTER CYRILLIC SMALL GHE
+ 1E034         ; NFKC_CF; 0434           # Lm       MODIFIER LETTER CYRILLIC SMALL DE
+ 1E035         ; NFKC_CF; 0435           # Lm       MODIFIER LETTER CYRILLIC SMALL IE
+ 1E036         ; NFKC_CF; 0436           # Lm       MODIFIER LETTER CYRILLIC SMALL ZHE
+ 1E037         ; NFKC_CF; 0437           # Lm       MODIFIER LETTER CYRILLIC SMALL ZE
+ 1E038         ; NFKC_CF; 0438           # Lm       MODIFIER LETTER CYRILLIC SMALL I
+ 1E039         ; NFKC_CF; 043A           # Lm       MODIFIER LETTER CYRILLIC SMALL KA
+ 1E03A         ; NFKC_CF; 043B           # Lm       MODIFIER LETTER CYRILLIC SMALL EL
+ 1E03B         ; NFKC_CF; 043C           # Lm       MODIFIER LETTER CYRILLIC SMALL EM
+ 1E03C         ; NFKC_CF; 043E           # Lm       MODIFIER LETTER CYRILLIC SMALL O
+ 1E03D         ; NFKC_CF; 043F           # Lm       MODIFIER LETTER CYRILLIC SMALL PE
+ 1E03E         ; NFKC_CF; 0440           # Lm       MODIFIER LETTER CYRILLIC SMALL ER
+ 1E03F         ; NFKC_CF; 0441           # Lm       MODIFIER LETTER CYRILLIC SMALL ES
+ 1E040         ; NFKC_CF; 0442           # Lm       MODIFIER LETTER CYRILLIC SMALL TE
+ 1E041         ; NFKC_CF; 0443           # Lm       MODIFIER LETTER CYRILLIC SMALL U
+ 1E042         ; NFKC_CF; 0444           # Lm       MODIFIER LETTER CYRILLIC SMALL EF
+ 1E043         ; NFKC_CF; 0445           # Lm       MODIFIER LETTER CYRILLIC SMALL HA
+ 1E044         ; NFKC_CF; 0446           # Lm       MODIFIER LETTER CYRILLIC SMALL TSE
+ 1E045         ; NFKC_CF; 0447           # Lm       MODIFIER LETTER CYRILLIC SMALL CHE
+ 1E046         ; NFKC_CF; 0448           # Lm       MODIFIER LETTER CYRILLIC SMALL SHA
+ 1E047         ; NFKC_CF; 044B           # Lm       MODIFIER LETTER CYRILLIC SMALL YERU
+ 1E048         ; NFKC_CF; 044D           # Lm       MODIFIER LETTER CYRILLIC SMALL E
+ 1E049         ; NFKC_CF; 044E           # Lm       MODIFIER LETTER CYRILLIC SMALL YU
+ 1E04A         ; NFKC_CF; A689           # Lm       MODIFIER LETTER CYRILLIC SMALL DZZE
+ 1E04B         ; NFKC_CF; 04D9           # Lm       MODIFIER LETTER CYRILLIC SMALL SCHWA
+ 1E04C         ; NFKC_CF; 0456           # Lm       MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I
+ 1E04D         ; NFKC_CF; 0458           # Lm       MODIFIER LETTER CYRILLIC SMALL JE
+ 1E04E         ; NFKC_CF; 04E9           # Lm       MODIFIER LETTER CYRILLIC SMALL BARRED O
+ 1E04F         ; NFKC_CF; 04AF           # Lm       MODIFIER LETTER CYRILLIC SMALL STRAIGHT U
+ 1E050         ; NFKC_CF; 04CF           # Lm       MODIFIER LETTER CYRILLIC SMALL PALOCHKA
+ 1E051         ; NFKC_CF; 0430           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER A
+ 1E052         ; NFKC_CF; 0431           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER BE
+ 1E053         ; NFKC_CF; 0432           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER VE
+ 1E054         ; NFKC_CF; 0433           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER GHE
+ 1E055         ; NFKC_CF; 0434           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER DE
+ 1E056         ; NFKC_CF; 0435           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER IE
+ 1E057         ; NFKC_CF; 0436           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER ZHE
+ 1E058         ; NFKC_CF; 0437           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER ZE
+ 1E059         ; NFKC_CF; 0438           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER I
+ 1E05A         ; NFKC_CF; 043A           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER KA
+ 1E05B         ; NFKC_CF; 043B           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER EL
+ 1E05C         ; NFKC_CF; 043E           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER O
+ 1E05D         ; NFKC_CF; 043F           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER PE
+ 1E05E         ; NFKC_CF; 0441           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER ES
+ 1E05F         ; NFKC_CF; 0443           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER U
+ 1E060         ; NFKC_CF; 0444           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER EF
+ 1E061         ; NFKC_CF; 0445           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER HA
+ 1E062         ; NFKC_CF; 0446           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER TSE
+ 1E063         ; NFKC_CF; 0447           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER CHE
+ 1E064         ; NFKC_CF; 0448           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER SHA
+ 1E065         ; NFKC_CF; 044A           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN
+ 1E066         ; NFKC_CF; 044B           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER YERU
+ 1E067         ; NFKC_CF; 0491           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN
+ 1E068         ; NFKC_CF; 0456           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I
+ 1E069         ; NFKC_CF; 0455           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER DZE
+ 1E06A         ; NFKC_CF; 045F           # Lm       CYRILLIC SUBSCRIPT SMALL LETTER DZHE
+ 1E06B         ; NFKC_CF; 04AB           # Lm       MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER
+ 1E06C         ; NFKC_CF; A651           # Lm       MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER
+ 1E06D         ; NFKC_CF; 04B1           # Lm       MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E900         ; NFKC_CF; 1E922          # L&       ADLAM CAPITAL LETTER ALIF
+ 1E901         ; NFKC_CF; 1E923          # L&       ADLAM CAPITAL LETTER DAALI
+ 1E902         ; NFKC_CF; 1E924          # L&       ADLAM CAPITAL LETTER LAAM
+ 1E903         ; NFKC_CF; 1E925          # L&       ADLAM CAPITAL LETTER MIIM
+ 1E904         ; NFKC_CF; 1E926          # L&       ADLAM CAPITAL LETTER BA
+ 1E905         ; NFKC_CF; 1E927          # L&       ADLAM CAPITAL LETTER SINNYIIYHE
+ 1E906         ; NFKC_CF; 1E928          # L&       ADLAM CAPITAL LETTER PE
+ 1E907         ; NFKC_CF; 1E929          # L&       ADLAM CAPITAL LETTER BHE
+ 1E908         ; NFKC_CF; 1E92A          # L&       ADLAM CAPITAL LETTER RA
+ 1E909         ; NFKC_CF; 1E92B          # L&       ADLAM CAPITAL LETTER E
+ 1E90A         ; NFKC_CF; 1E92C          # L&       ADLAM CAPITAL LETTER FA
+ 1E90B         ; NFKC_CF; 1E92D          # L&       ADLAM CAPITAL LETTER I
+ 1E90C         ; NFKC_CF; 1E92E          # L&       ADLAM CAPITAL LETTER O
+ 1E90D         ; NFKC_CF; 1E92F          # L&       ADLAM CAPITAL LETTER DHA
+ 1E90E         ; NFKC_CF; 1E930          # L&       ADLAM CAPITAL LETTER YHE
+ 1E90F         ; NFKC_CF; 1E931          # L&       ADLAM CAPITAL LETTER WAW
+ 1E910         ; NFKC_CF; 1E932          # L&       ADLAM CAPITAL LETTER NUN
+ 1E911         ; NFKC_CF; 1E933          # L&       ADLAM CAPITAL LETTER KAF
+ 1E912         ; NFKC_CF; 1E934          # L&       ADLAM CAPITAL LETTER YA
+ 1E913         ; NFKC_CF; 1E935          # L&       ADLAM CAPITAL LETTER U
+ 1E914         ; NFKC_CF; 1E936          # L&       ADLAM CAPITAL LETTER JIIM
+ 1E915         ; NFKC_CF; 1E937          # L&       ADLAM CAPITAL LETTER CHI
+ 1E916         ; NFKC_CF; 1E938          # L&       ADLAM CAPITAL LETTER HA
+ 1E917         ; NFKC_CF; 1E939          # L&       ADLAM CAPITAL LETTER QAAF
+ 1E918         ; NFKC_CF; 1E93A          # L&       ADLAM CAPITAL LETTER GA
+ 1E919         ; NFKC_CF; 1E93B          # L&       ADLAM CAPITAL LETTER NYA
+ 1E91A         ; NFKC_CF; 1E93C          # L&       ADLAM CAPITAL LETTER TU
+ 1E91B         ; NFKC_CF; 1E93D          # L&       ADLAM CAPITAL LETTER NHA
+ 1E91C         ; NFKC_CF; 1E93E          # L&       ADLAM CAPITAL LETTER VA
+ 1E91D         ; NFKC_CF; 1E93F          # L&       ADLAM CAPITAL LETTER KHA
+ 1E91E         ; NFKC_CF; 1E940          # L&       ADLAM CAPITAL LETTER GBE
+ 1E91F         ; NFKC_CF; 1E941          # L&       ADLAM CAPITAL LETTER ZAL
+ 1E920         ; NFKC_CF; 1E942          # L&       ADLAM CAPITAL LETTER KPO
+ 1E921         ; NFKC_CF; 1E943          # L&       ADLAM CAPITAL LETTER SHA
+ 1EE00         ; NFKC_CF; 0627           # Lo       ARABIC MATHEMATICAL ALEF
+ 1EE01         ; NFKC_CF; 0628           # Lo       ARABIC MATHEMATICAL BEH
+ 1EE02         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL JEEM
+ 1EE03         ; NFKC_CF; 062F           # Lo       ARABIC MATHEMATICAL DAL
+ 1EE05         ; NFKC_CF; 0648           # Lo       ARABIC MATHEMATICAL WAW
+ 1EE06         ; NFKC_CF; 0632           # Lo       ARABIC MATHEMATICAL ZAIN
+ 1EE07         ; NFKC_CF; 062D           # Lo       ARABIC MATHEMATICAL HAH
+ 1EE08         ; NFKC_CF; 0637           # Lo       ARABIC MATHEMATICAL TAH
+ 1EE09         ; NFKC_CF; 064A           # Lo       ARABIC MATHEMATICAL YEH
+ 1EE0A         ; NFKC_CF; 0643           # Lo       ARABIC MATHEMATICAL KAF
+ 1EE0B         ; NFKC_CF; 0644           # Lo       ARABIC MATHEMATICAL LAM
+ 1EE0C         ; NFKC_CF; 0645           # Lo       ARABIC MATHEMATICAL MEEM
+ 1EE0D         ; NFKC_CF; 0646           # Lo       ARABIC MATHEMATICAL NOON
+ 1EE0E         ; NFKC_CF; 0633           # Lo       ARABIC MATHEMATICAL SEEN
+ 1EE0F         ; NFKC_CF; 0639           # Lo       ARABIC MATHEMATICAL AIN
+ 1EE10         ; NFKC_CF; 0641           # Lo       ARABIC MATHEMATICAL FEH
+ 1EE11         ; NFKC_CF; 0635           # Lo       ARABIC MATHEMATICAL SAD
+ 1EE12         ; NFKC_CF; 0642           # Lo       ARABIC MATHEMATICAL QAF
+ 1EE13         ; NFKC_CF; 0631           # Lo       ARABIC MATHEMATICAL REH
+ 1EE14         ; NFKC_CF; 0634           # Lo       ARABIC MATHEMATICAL SHEEN
+ 1EE15         ; NFKC_CF; 062A           # Lo       ARABIC MATHEMATICAL TEH
+ 1EE16         ; NFKC_CF; 062B           # Lo       ARABIC MATHEMATICAL THEH
+ 1EE17         ; NFKC_CF; 062E           # Lo       ARABIC MATHEMATICAL KHAH
+ 1EE18         ; NFKC_CF; 0630           # Lo       ARABIC MATHEMATICAL THAL
+ 1EE19         ; NFKC_CF; 0636           # Lo       ARABIC MATHEMATICAL DAD
+ 1EE1A         ; NFKC_CF; 0638           # Lo       ARABIC MATHEMATICAL ZAH
+ 1EE1B         ; NFKC_CF; 063A           # Lo       ARABIC MATHEMATICAL GHAIN
+ 1EE1C         ; NFKC_CF; 066E           # Lo       ARABIC MATHEMATICAL DOTLESS BEH
+ 1EE1D         ; NFKC_CF; 06BA           # Lo       ARABIC MATHEMATICAL DOTLESS NOON
+ 1EE1E         ; NFKC_CF; 06A1           # Lo       ARABIC MATHEMATICAL DOTLESS FEH
+ 1EE1F         ; NFKC_CF; 066F           # Lo       ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21         ; NFKC_CF; 0628           # Lo       ARABIC MATHEMATICAL INITIAL BEH
+ 1EE22         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; NFKC_CF; 0647           # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; NFKC_CF; 062D           # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29         ; NFKC_CF; 064A           # Lo       ARABIC MATHEMATICAL INITIAL YEH
+ 1EE2A         ; NFKC_CF; 0643           # Lo       ARABIC MATHEMATICAL INITIAL KAF
+ 1EE2B         ; NFKC_CF; 0644           # Lo       ARABIC MATHEMATICAL INITIAL LAM
+ 1EE2C         ; NFKC_CF; 0645           # Lo       ARABIC MATHEMATICAL INITIAL MEEM
+ 1EE2D         ; NFKC_CF; 0646           # Lo       ARABIC MATHEMATICAL INITIAL NOON
+ 1EE2E         ; NFKC_CF; 0633           # Lo       ARABIC MATHEMATICAL INITIAL SEEN
+ 1EE2F         ; NFKC_CF; 0639           # Lo       ARABIC MATHEMATICAL INITIAL AIN
+ 1EE30         ; NFKC_CF; 0641           # Lo       ARABIC MATHEMATICAL INITIAL FEH
+ 1EE31         ; NFKC_CF; 0635           # Lo       ARABIC MATHEMATICAL INITIAL SAD
+ 1EE32         ; NFKC_CF; 0642           # Lo       ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34         ; NFKC_CF; 0634           # Lo       ARABIC MATHEMATICAL INITIAL SHEEN
+ 1EE35         ; NFKC_CF; 062A           # Lo       ARABIC MATHEMATICAL INITIAL TEH
+ 1EE36         ; NFKC_CF; 062B           # Lo       ARABIC MATHEMATICAL INITIAL THEH
+ 1EE37         ; NFKC_CF; 062E           # Lo       ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; NFKC_CF; 0636           # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; NFKC_CF; 063A           # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; NFKC_CF; 062D           # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; NFKC_CF; 064A           # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; NFKC_CF; 0644           # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D         ; NFKC_CF; 0646           # Lo       ARABIC MATHEMATICAL TAILED NOON
+ 1EE4E         ; NFKC_CF; 0633           # Lo       ARABIC MATHEMATICAL TAILED SEEN
+ 1EE4F         ; NFKC_CF; 0639           # Lo       ARABIC MATHEMATICAL TAILED AIN
+ 1EE51         ; NFKC_CF; 0635           # Lo       ARABIC MATHEMATICAL TAILED SAD
+ 1EE52         ; NFKC_CF; 0642           # Lo       ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; NFKC_CF; 0634           # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; NFKC_CF; 062E           # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; NFKC_CF; 0636           # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; NFKC_CF; 063A           # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; NFKC_CF; 06BA           # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; NFKC_CF; 066F           # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61         ; NFKC_CF; 0628           # Lo       ARABIC MATHEMATICAL STRETCHED BEH
+ 1EE62         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; NFKC_CF; 0647           # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67         ; NFKC_CF; 062D           # Lo       ARABIC MATHEMATICAL STRETCHED HAH
+ 1EE68         ; NFKC_CF; 0637           # Lo       ARABIC MATHEMATICAL STRETCHED TAH
+ 1EE69         ; NFKC_CF; 064A           # Lo       ARABIC MATHEMATICAL STRETCHED YEH
+ 1EE6A         ; NFKC_CF; 0643           # Lo       ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C         ; NFKC_CF; 0645           # Lo       ARABIC MATHEMATICAL STRETCHED MEEM
+ 1EE6D         ; NFKC_CF; 0646           # Lo       ARABIC MATHEMATICAL STRETCHED NOON
+ 1EE6E         ; NFKC_CF; 0633           # Lo       ARABIC MATHEMATICAL STRETCHED SEEN
+ 1EE6F         ; NFKC_CF; 0639           # Lo       ARABIC MATHEMATICAL STRETCHED AIN
+ 1EE70         ; NFKC_CF; 0641           # Lo       ARABIC MATHEMATICAL STRETCHED FEH
+ 1EE71         ; NFKC_CF; 0635           # Lo       ARABIC MATHEMATICAL STRETCHED SAD
+ 1EE72         ; NFKC_CF; 0642           # Lo       ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74         ; NFKC_CF; 0634           # Lo       ARABIC MATHEMATICAL STRETCHED SHEEN
+ 1EE75         ; NFKC_CF; 062A           # Lo       ARABIC MATHEMATICAL STRETCHED TEH
+ 1EE76         ; NFKC_CF; 062B           # Lo       ARABIC MATHEMATICAL STRETCHED THEH
+ 1EE77         ; NFKC_CF; 062E           # Lo       ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79         ; NFKC_CF; 0636           # Lo       ARABIC MATHEMATICAL STRETCHED DAD
+ 1EE7A         ; NFKC_CF; 0638           # Lo       ARABIC MATHEMATICAL STRETCHED ZAH
+ 1EE7B         ; NFKC_CF; 063A           # Lo       ARABIC MATHEMATICAL STRETCHED GHAIN
+ 1EE7C         ; NFKC_CF; 066E           # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; NFKC_CF; 06A1           # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80         ; NFKC_CF; 0627           # Lo       ARABIC MATHEMATICAL LOOPED ALEF
+ 1EE81         ; NFKC_CF; 0628           # Lo       ARABIC MATHEMATICAL LOOPED BEH
+ 1EE82         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL LOOPED JEEM
+ 1EE83         ; NFKC_CF; 062F           # Lo       ARABIC MATHEMATICAL LOOPED DAL
+ 1EE84         ; NFKC_CF; 0647           # Lo       ARABIC MATHEMATICAL LOOPED HEH
+ 1EE85         ; NFKC_CF; 0648           # Lo       ARABIC MATHEMATICAL LOOPED WAW
+ 1EE86         ; NFKC_CF; 0632           # Lo       ARABIC MATHEMATICAL LOOPED ZAIN
+ 1EE87         ; NFKC_CF; 062D           # Lo       ARABIC MATHEMATICAL LOOPED HAH
+ 1EE88         ; NFKC_CF; 0637           # Lo       ARABIC MATHEMATICAL LOOPED TAH
+ 1EE89         ; NFKC_CF; 064A           # Lo       ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B         ; NFKC_CF; 0644           # Lo       ARABIC MATHEMATICAL LOOPED LAM
+ 1EE8C         ; NFKC_CF; 0645           # Lo       ARABIC MATHEMATICAL LOOPED MEEM
+ 1EE8D         ; NFKC_CF; 0646           # Lo       ARABIC MATHEMATICAL LOOPED NOON
+ 1EE8E         ; NFKC_CF; 0633           # Lo       ARABIC MATHEMATICAL LOOPED SEEN
+ 1EE8F         ; NFKC_CF; 0639           # Lo       ARABIC MATHEMATICAL LOOPED AIN
+ 1EE90         ; NFKC_CF; 0641           # Lo       ARABIC MATHEMATICAL LOOPED FEH
+ 1EE91         ; NFKC_CF; 0635           # Lo       ARABIC MATHEMATICAL LOOPED SAD
+ 1EE92         ; NFKC_CF; 0642           # Lo       ARABIC MATHEMATICAL LOOPED QAF
+ 1EE93         ; NFKC_CF; 0631           # Lo       ARABIC MATHEMATICAL LOOPED REH
+ 1EE94         ; NFKC_CF; 0634           # Lo       ARABIC MATHEMATICAL LOOPED SHEEN
+ 1EE95         ; NFKC_CF; 062A           # Lo       ARABIC MATHEMATICAL LOOPED TEH
+ 1EE96         ; NFKC_CF; 062B           # Lo       ARABIC MATHEMATICAL LOOPED THEH
+ 1EE97         ; NFKC_CF; 062E           # Lo       ARABIC MATHEMATICAL LOOPED KHAH
+ 1EE98         ; NFKC_CF; 0630           # Lo       ARABIC MATHEMATICAL LOOPED THAL
+ 1EE99         ; NFKC_CF; 0636           # Lo       ARABIC MATHEMATICAL LOOPED DAD
+ 1EE9A         ; NFKC_CF; 0638           # Lo       ARABIC MATHEMATICAL LOOPED ZAH
+ 1EE9B         ; NFKC_CF; 063A           # Lo       ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1         ; NFKC_CF; 0628           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK BEH
+ 1EEA2         ; NFKC_CF; 062C           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK JEEM
+ 1EEA3         ; NFKC_CF; 062F           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5         ; NFKC_CF; 0648           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK WAW
+ 1EEA6         ; NFKC_CF; 0632           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK ZAIN
+ 1EEA7         ; NFKC_CF; 062D           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK HAH
+ 1EEA8         ; NFKC_CF; 0637           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK TAH
+ 1EEA9         ; NFKC_CF; 064A           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB         ; NFKC_CF; 0644           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK LAM
+ 1EEAC         ; NFKC_CF; 0645           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK MEEM
+ 1EEAD         ; NFKC_CF; 0646           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK NOON
+ 1EEAE         ; NFKC_CF; 0633           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK SEEN
+ 1EEAF         ; NFKC_CF; 0639           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK AIN
+ 1EEB0         ; NFKC_CF; 0641           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK FEH
+ 1EEB1         ; NFKC_CF; 0635           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK SAD
+ 1EEB2         ; NFKC_CF; 0642           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK QAF
+ 1EEB3         ; NFKC_CF; 0631           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK REH
+ 1EEB4         ; NFKC_CF; 0634           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK SHEEN
+ 1EEB5         ; NFKC_CF; 062A           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK TEH
+ 1EEB6         ; NFKC_CF; 062B           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK THEH
+ 1EEB7         ; NFKC_CF; 062E           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK KHAH
+ 1EEB8         ; NFKC_CF; 0630           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK THAL
+ 1EEB9         ; NFKC_CF; 0636           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK DAD
+ 1EEBA         ; NFKC_CF; 0638           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK ZAH
+ 1EEBB         ; NFKC_CF; 063A           # Lo       ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1F100         ; NFKC_CF; 0030 002E      # No       DIGIT ZERO FULL STOP
+ 1F101         ; NFKC_CF; 0030 002C      # No       DIGIT ZERO COMMA
+ 1F102         ; NFKC_CF; 0031 002C      # No       DIGIT ONE COMMA
+ 1F103         ; NFKC_CF; 0032 002C      # No       DIGIT TWO COMMA
+ 1F104         ; NFKC_CF; 0033 002C      # No       DIGIT THREE COMMA
+ 1F105         ; NFKC_CF; 0034 002C      # No       DIGIT FOUR COMMA
+ 1F106         ; NFKC_CF; 0035 002C      # No       DIGIT FIVE COMMA
+ 1F107         ; NFKC_CF; 0036 002C      # No       DIGIT SIX COMMA
+ 1F108         ; NFKC_CF; 0037 002C      # No       DIGIT SEVEN COMMA
+ 1F109         ; NFKC_CF; 0038 002C      # No       DIGIT EIGHT COMMA
+ 1F10A         ; NFKC_CF; 0039 002C      # No       DIGIT NINE COMMA
+ 1F110         ; NFKC_CF; 0028 0061 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER A
+ 1F111         ; NFKC_CF; 0028 0062 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER B
+ 1F112         ; NFKC_CF; 0028 0063 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER C
+ 1F113         ; NFKC_CF; 0028 0064 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER D
+ 1F114         ; NFKC_CF; 0028 0065 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER E
+ 1F115         ; NFKC_CF; 0028 0066 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER F
+ 1F116         ; NFKC_CF; 0028 0067 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER G
+ 1F117         ; NFKC_CF; 0028 0068 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER H
+ 1F118         ; NFKC_CF; 0028 0069 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER I
+ 1F119         ; NFKC_CF; 0028 006A 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER J
+ 1F11A         ; NFKC_CF; 0028 006B 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER K
+ 1F11B         ; NFKC_CF; 0028 006C 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER L
+ 1F11C         ; NFKC_CF; 0028 006D 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER M
+ 1F11D         ; NFKC_CF; 0028 006E 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER N
+ 1F11E         ; NFKC_CF; 0028 006F 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER O
+ 1F11F         ; NFKC_CF; 0028 0070 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER P
+ 1F120         ; NFKC_CF; 0028 0071 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER Q
+ 1F121         ; NFKC_CF; 0028 0072 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER R
+ 1F122         ; NFKC_CF; 0028 0073 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER S
+ 1F123         ; NFKC_CF; 0028 0074 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER T
+ 1F124         ; NFKC_CF; 0028 0075 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER U
+ 1F125         ; NFKC_CF; 0028 0076 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER V
+ 1F126         ; NFKC_CF; 0028 0077 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER W
+ 1F127         ; NFKC_CF; 0028 0078 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER X
+ 1F128         ; NFKC_CF; 0028 0079 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER Y
+ 1F129         ; NFKC_CF; 0028 007A 0029 # So       PARENTHESIZED LATIN CAPITAL LETTER Z
+ 1F12A         ; NFKC_CF; 3014 0073 3015 # So       TORTOISE SHELL BRACKETED LATIN CAPITAL LETTER S
+ 1F12B         ; NFKC_CF; 0063           # So       CIRCLED ITALIC LATIN CAPITAL LETTER C
+ 1F12C         ; NFKC_CF; 0072           # So       CIRCLED ITALIC LATIN CAPITAL LETTER R
+ 1F12D         ; NFKC_CF; 0063 0064      # So       CIRCLED CD
+ 1F12E         ; NFKC_CF; 0077 007A      # So       CIRCLED WZ
+ 1F130         ; NFKC_CF; 0061           # So       SQUARED LATIN CAPITAL LETTER A
+ 1F131         ; NFKC_CF; 0062           # So       SQUARED LATIN CAPITAL LETTER B
+ 1F132         ; NFKC_CF; 0063           # So       SQUARED LATIN CAPITAL LETTER C
+ 1F133         ; NFKC_CF; 0064           # So       SQUARED LATIN CAPITAL LETTER D
+ 1F134         ; NFKC_CF; 0065           # So       SQUARED LATIN CAPITAL LETTER E
+ 1F135         ; NFKC_CF; 0066           # So       SQUARED LATIN CAPITAL LETTER F
+ 1F136         ; NFKC_CF; 0067           # So       SQUARED LATIN CAPITAL LETTER G
+ 1F137         ; NFKC_CF; 0068           # So       SQUARED LATIN CAPITAL LETTER H
+ 1F138         ; NFKC_CF; 0069           # So       SQUARED LATIN CAPITAL LETTER I
+ 1F139         ; NFKC_CF; 006A           # So       SQUARED LATIN CAPITAL LETTER J
+ 1F13A         ; NFKC_CF; 006B           # So       SQUARED LATIN CAPITAL LETTER K
+ 1F13B         ; NFKC_CF; 006C           # So       SQUARED LATIN CAPITAL LETTER L
+ 1F13C         ; NFKC_CF; 006D           # So       SQUARED LATIN CAPITAL LETTER M
+ 1F13D         ; NFKC_CF; 006E           # So       SQUARED LATIN CAPITAL LETTER N
+ 1F13E         ; NFKC_CF; 006F           # So       SQUARED LATIN CAPITAL LETTER O
+ 1F13F         ; NFKC_CF; 0070           # So       SQUARED LATIN CAPITAL LETTER P
+ 1F140         ; NFKC_CF; 0071           # So       SQUARED LATIN CAPITAL LETTER Q
+ 1F141         ; NFKC_CF; 0072           # So       SQUARED LATIN CAPITAL LETTER R
+ 1F142         ; NFKC_CF; 0073           # So       SQUARED LATIN CAPITAL LETTER S
+ 1F143         ; NFKC_CF; 0074           # So       SQUARED LATIN CAPITAL LETTER T
+ 1F144         ; NFKC_CF; 0075           # So       SQUARED LATIN CAPITAL LETTER U
+ 1F145         ; NFKC_CF; 0076           # So       SQUARED LATIN CAPITAL LETTER V
+ 1F146         ; NFKC_CF; 0077           # So       SQUARED LATIN CAPITAL LETTER W
+ 1F147         ; NFKC_CF; 0078           # So       SQUARED LATIN CAPITAL LETTER X
+ 1F148         ; NFKC_CF; 0079           # So       SQUARED LATIN CAPITAL LETTER Y
+ 1F149         ; NFKC_CF; 007A           # So       SQUARED LATIN CAPITAL LETTER Z
+ 1F14A         ; NFKC_CF; 0068 0076      # So       SQUARED HV
+ 1F14B         ; NFKC_CF; 006D 0076      # So       SQUARED MV
+ 1F14C         ; NFKC_CF; 0073 0064      # So       SQUARED SD
+ 1F14D         ; NFKC_CF; 0073 0073      # So       SQUARED SS
+ 1F14E         ; NFKC_CF; 0070 0070 0076 # So       SQUARED PPV
+ 1F14F         ; NFKC_CF; 0077 0063      # So       SQUARED WC
+ 1F16A         ; NFKC_CF; 006D 0063      # So       RAISED MC SIGN
+ 1F16B         ; NFKC_CF; 006D 0064      # So       RAISED MD SIGN
+ 1F16C         ; NFKC_CF; 006D 0072      # So       RAISED MR SIGN
+ 1F190         ; NFKC_CF; 0064 006A      # So       SQUARE DJ
+ 1F200         ; NFKC_CF; 307B 304B      # So       SQUARE HIRAGANA HOKA
+ 1F201         ; NFKC_CF; 30B3 30B3      # So       SQUARED KATAKANA KOKO
+ 1F202         ; NFKC_CF; 30B5           # So       SQUARED KATAKANA SA
+ 1F210         ; NFKC_CF; 624B           # So       SQUARED CJK UNIFIED IDEOGRAPH-624B
+ 1F211         ; NFKC_CF; 5B57           # So       SQUARED CJK UNIFIED IDEOGRAPH-5B57
+ 1F212         ; NFKC_CF; 53CC           # So       SQUARED CJK UNIFIED IDEOGRAPH-53CC
+ 1F213         ; NFKC_CF; 30C7           # So       SQUARED KATAKANA DE
+ 1F214         ; NFKC_CF; 4E8C           # So       SQUARED CJK UNIFIED IDEOGRAPH-4E8C
+ 1F215         ; NFKC_CF; 591A           # So       SQUARED CJK UNIFIED IDEOGRAPH-591A
+ 1F216         ; NFKC_CF; 89E3           # So       SQUARED CJK UNIFIED IDEOGRAPH-89E3
+ 1F217         ; NFKC_CF; 5929           # So       SQUARED CJK UNIFIED IDEOGRAPH-5929
+ 1F218         ; NFKC_CF; 4EA4           # So       SQUARED CJK UNIFIED IDEOGRAPH-4EA4
+ 1F219         ; NFKC_CF; 6620           # So       SQUARED CJK UNIFIED IDEOGRAPH-6620
+ 1F21A         ; NFKC_CF; 7121           # So       SQUARED CJK UNIFIED IDEOGRAPH-7121
+ 1F21B         ; NFKC_CF; 6599           # So       SQUARED CJK UNIFIED IDEOGRAPH-6599
+ 1F21C         ; NFKC_CF; 524D           # So       SQUARED CJK UNIFIED IDEOGRAPH-524D
+ 1F21D         ; NFKC_CF; 5F8C           # So       SQUARED CJK UNIFIED IDEOGRAPH-5F8C
+ 1F21E         ; NFKC_CF; 518D           # So       SQUARED CJK UNIFIED IDEOGRAPH-518D
+ 1F21F         ; NFKC_CF; 65B0           # So       SQUARED CJK UNIFIED IDEOGRAPH-65B0
+ 1F220         ; NFKC_CF; 521D           # So       SQUARED CJK UNIFIED IDEOGRAPH-521D
+ 1F221         ; NFKC_CF; 7D42           # So       SQUARED CJK UNIFIED IDEOGRAPH-7D42
+ 1F222         ; NFKC_CF; 751F           # So       SQUARED CJK UNIFIED IDEOGRAPH-751F
+ 1F223         ; NFKC_CF; 8CA9           # So       SQUARED CJK UNIFIED IDEOGRAPH-8CA9
+ 1F224         ; NFKC_CF; 58F0           # So       SQUARED CJK UNIFIED IDEOGRAPH-58F0
+ 1F225         ; NFKC_CF; 5439           # So       SQUARED CJK UNIFIED IDEOGRAPH-5439
+ 1F226         ; NFKC_CF; 6F14           # So       SQUARED CJK UNIFIED IDEOGRAPH-6F14
+ 1F227         ; NFKC_CF; 6295           # So       SQUARED CJK UNIFIED IDEOGRAPH-6295
+ 1F228         ; NFKC_CF; 6355           # So       SQUARED CJK UNIFIED IDEOGRAPH-6355
+ 1F229         ; NFKC_CF; 4E00           # So       SQUARED CJK UNIFIED IDEOGRAPH-4E00
+ 1F22A         ; NFKC_CF; 4E09           # So       SQUARED CJK UNIFIED IDEOGRAPH-4E09
+ 1F22B         ; NFKC_CF; 904A           # So       SQUARED CJK UNIFIED IDEOGRAPH-904A
+ 1F22C         ; NFKC_CF; 5DE6           # So       SQUARED CJK UNIFIED IDEOGRAPH-5DE6
+ 1F22D         ; NFKC_CF; 4E2D           # So       SQUARED CJK UNIFIED IDEOGRAPH-4E2D
+ 1F22E         ; NFKC_CF; 53F3           # So       SQUARED CJK UNIFIED IDEOGRAPH-53F3
+ 1F22F         ; NFKC_CF; 6307           # So       SQUARED CJK UNIFIED IDEOGRAPH-6307
+ 1F230         ; NFKC_CF; 8D70           # So       SQUARED CJK UNIFIED IDEOGRAPH-8D70
+ 1F231         ; NFKC_CF; 6253           # So       SQUARED CJK UNIFIED IDEOGRAPH-6253
+ 1F232         ; NFKC_CF; 7981           # So       SQUARED CJK UNIFIED IDEOGRAPH-7981
+ 1F233         ; NFKC_CF; 7A7A           # So       SQUARED CJK UNIFIED IDEOGRAPH-7A7A
+ 1F234         ; NFKC_CF; 5408           # So       SQUARED CJK UNIFIED IDEOGRAPH-5408
+ 1F235         ; NFKC_CF; 6E80           # So       SQUARED CJK UNIFIED IDEOGRAPH-6E80
+ 1F236         ; NFKC_CF; 6709           # So       SQUARED CJK UNIFIED IDEOGRAPH-6709
+ 1F237         ; NFKC_CF; 6708           # So       SQUARED CJK UNIFIED IDEOGRAPH-6708
+ 1F238         ; NFKC_CF; 7533           # So       SQUARED CJK UNIFIED IDEOGRAPH-7533
+ 1F239         ; NFKC_CF; 5272           # So       SQUARED CJK UNIFIED IDEOGRAPH-5272
+ 1F23A         ; NFKC_CF; 55B6           # So       SQUARED CJK UNIFIED IDEOGRAPH-55B6
+ 1F23B         ; NFKC_CF; 914D           # So       SQUARED CJK UNIFIED IDEOGRAPH-914D
+ 1F240         ; NFKC_CF; 3014 672C 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C
+ 1F241         ; NFKC_CF; 3014 4E09 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E09
+ 1F242         ; NFKC_CF; 3014 4E8C 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-4E8C
+ 1F243         ; NFKC_CF; 3014 5B89 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-5B89
+ 1F244         ; NFKC_CF; 3014 70B9 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-70B9
+ 1F245         ; NFKC_CF; 3014 6253 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6253
+ 1F246         ; NFKC_CF; 3014 76D7 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-76D7
+ 1F247         ; NFKC_CF; 3014 52DD 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-52DD
+ 1F248         ; NFKC_CF; 3014 6557 3015 # So       TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 1F250         ; NFKC_CF; 5F97           # So       CIRCLED IDEOGRAPH ADVANTAGE
+ 1F251         ; NFKC_CF; 53EF           # So       CIRCLED IDEOGRAPH ACCEPT
+ 1FBF0         ; NFKC_CF; 0030           # Nd       SEGMENTED DIGIT ZERO
+ 1FBF1         ; NFKC_CF; 0031           # Nd       SEGMENTED DIGIT ONE
+ 1FBF2         ; NFKC_CF; 0032           # Nd       SEGMENTED DIGIT TWO
+ 1FBF3         ; NFKC_CF; 0033           # Nd       SEGMENTED DIGIT THREE
+ 1FBF4         ; NFKC_CF; 0034           # Nd       SEGMENTED DIGIT FOUR
+ 1FBF5         ; NFKC_CF; 0035           # Nd       SEGMENTED DIGIT FIVE
+ 1FBF6         ; NFKC_CF; 0036           # Nd       SEGMENTED DIGIT SIX
+ 1FBF7         ; NFKC_CF; 0037           # Nd       SEGMENTED DIGIT SEVEN
+ 1FBF8         ; NFKC_CF; 0038           # Nd       SEGMENTED DIGIT EIGHT
+ 1FBF9         ; NFKC_CF; 0039           # Nd       SEGMENTED DIGIT NINE
+ 2F800         ; NFKC_CF; 4E3D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F800
+ 2F801         ; NFKC_CF; 4E38           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F801
+ 2F802         ; NFKC_CF; 4E41           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F802
+ 2F803         ; NFKC_CF; 20122          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F803
+ 2F804         ; NFKC_CF; 4F60           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F804
+ 2F805         ; NFKC_CF; 4FAE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F805
+ 2F806         ; NFKC_CF; 4FBB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F806
+ 2F807         ; NFKC_CF; 5002           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F807
+ 2F808         ; NFKC_CF; 507A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F808
+ 2F809         ; NFKC_CF; 5099           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F809
+ 2F80A         ; NFKC_CF; 50E7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F80A
+ 2F80B         ; NFKC_CF; 50CF           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F80B
+ 2F80C         ; NFKC_CF; 349E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F80C
+ 2F80D         ; NFKC_CF; 2063A          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F80D
+ 2F80E         ; NFKC_CF; 514D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F80E
+ 2F80F         ; NFKC_CF; 5154           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F80F
+ 2F810         ; NFKC_CF; 5164           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F810
+ 2F811         ; NFKC_CF; 5177           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F811
+ 2F812         ; NFKC_CF; 2051C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F812
+ 2F813         ; NFKC_CF; 34B9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F813
+ 2F814         ; NFKC_CF; 5167           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F814
+ 2F815         ; NFKC_CF; 518D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F815
+ 2F816         ; NFKC_CF; 2054B          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F816
+ 2F817         ; NFKC_CF; 5197           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F817
+ 2F818         ; NFKC_CF; 51A4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F818
+ 2F819         ; NFKC_CF; 4ECC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F819
+ 2F81A         ; NFKC_CF; 51AC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F81A
+ 2F81B         ; NFKC_CF; 51B5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F81B
+ 2F81C         ; NFKC_CF; 291DF          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F81C
+ 2F81D         ; NFKC_CF; 51F5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F81D
+ 2F81E         ; NFKC_CF; 5203           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F81E
+ 2F81F         ; NFKC_CF; 34DF           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F81F
+ 2F820         ; NFKC_CF; 523B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F820
+ 2F821         ; NFKC_CF; 5246           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F821
+ 2F822         ; NFKC_CF; 5272           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F822
+ 2F823         ; NFKC_CF; 5277           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F823
+ 2F824         ; NFKC_CF; 3515           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F824
+ 2F825         ; NFKC_CF; 52C7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F825
+ 2F826         ; NFKC_CF; 52C9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F826
+ 2F827         ; NFKC_CF; 52E4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F827
+ 2F828         ; NFKC_CF; 52FA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F828
+ 2F829         ; NFKC_CF; 5305           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F829
+ 2F82A         ; NFKC_CF; 5306           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F82A
+ 2F82B         ; NFKC_CF; 5317           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F82B
+ 2F82C         ; NFKC_CF; 5349           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F82C
+ 2F82D         ; NFKC_CF; 5351           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F82D
+ 2F82E         ; NFKC_CF; 535A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F82E
+ 2F82F         ; NFKC_CF; 5373           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F82F
+ 2F830         ; NFKC_CF; 537D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F830
+ 2F831..2F833  ; NFKC_CF; 537F           # Lo   [3] CJK COMPATIBILITY IDEOGRAPH-2F831..CJK COMPATIBILITY IDEOGRAPH-2F833
+ 2F834         ; NFKC_CF; 20A2C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F834
+ 2F835         ; NFKC_CF; 7070           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F835
+ 2F836         ; NFKC_CF; 53CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F836
+ 2F837         ; NFKC_CF; 53DF           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F837
+ 2F838         ; NFKC_CF; 20B63          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F838
+ 2F839         ; NFKC_CF; 53EB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F839
+ 2F83A         ; NFKC_CF; 53F1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F83A
+ 2F83B         ; NFKC_CF; 5406           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F83B
+ 2F83C         ; NFKC_CF; 549E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F83C
+ 2F83D         ; NFKC_CF; 5438           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F83D
+ 2F83E         ; NFKC_CF; 5448           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F83E
+ 2F83F         ; NFKC_CF; 5468           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F83F
+ 2F840         ; NFKC_CF; 54A2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F840
+ 2F841         ; NFKC_CF; 54F6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F841
+ 2F842         ; NFKC_CF; 5510           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F842
+ 2F843         ; NFKC_CF; 5553           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F843
+ 2F844         ; NFKC_CF; 5563           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F844
+ 2F845..2F846  ; NFKC_CF; 5584           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F845..CJK COMPATIBILITY IDEOGRAPH-2F846
+ 2F847         ; NFKC_CF; 5599           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F847
+ 2F848         ; NFKC_CF; 55AB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F848
+ 2F849         ; NFKC_CF; 55B3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F849
+ 2F84A         ; NFKC_CF; 55C2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F84A
+ 2F84B         ; NFKC_CF; 5716           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F84B
+ 2F84C         ; NFKC_CF; 5606           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F84C
+ 2F84D         ; NFKC_CF; 5717           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F84D
+ 2F84E         ; NFKC_CF; 5651           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F84E
+ 2F84F         ; NFKC_CF; 5674           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F84F
+ 2F850         ; NFKC_CF; 5207           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F850
+ 2F851         ; NFKC_CF; 58EE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F851
+ 2F852         ; NFKC_CF; 57CE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F852
+ 2F853         ; NFKC_CF; 57F4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F853
+ 2F854         ; NFKC_CF; 580D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F854
+ 2F855         ; NFKC_CF; 578B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F855
+ 2F856         ; NFKC_CF; 5832           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F856
+ 2F857         ; NFKC_CF; 5831           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F857
+ 2F858         ; NFKC_CF; 58AC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F858
+ 2F859         ; NFKC_CF; 214E4          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F859
+ 2F85A         ; NFKC_CF; 58F2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F85A
+ 2F85B         ; NFKC_CF; 58F7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F85B
+ 2F85C         ; NFKC_CF; 5906           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F85C
+ 2F85D         ; NFKC_CF; 591A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F85D
+ 2F85E         ; NFKC_CF; 5922           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F85E
+ 2F85F         ; NFKC_CF; 5962           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F85F
+ 2F860         ; NFKC_CF; 216A8          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F860
+ 2F861         ; NFKC_CF; 216EA          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F861
+ 2F862         ; NFKC_CF; 59EC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F862
+ 2F863         ; NFKC_CF; 5A1B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F863
+ 2F864         ; NFKC_CF; 5A27           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F864
+ 2F865         ; NFKC_CF; 59D8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F865
+ 2F866         ; NFKC_CF; 5A66           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F866
+ 2F867         ; NFKC_CF; 36EE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F867
+ 2F868         ; NFKC_CF; 36FC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F868
+ 2F869         ; NFKC_CF; 5B08           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F869
+ 2F86A..2F86B  ; NFKC_CF; 5B3E           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F86A..CJK COMPATIBILITY IDEOGRAPH-2F86B
+ 2F86C         ; NFKC_CF; 219C8          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F86C
+ 2F86D         ; NFKC_CF; 5BC3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F86D
+ 2F86E         ; NFKC_CF; 5BD8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F86E
+ 2F86F         ; NFKC_CF; 5BE7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F86F
+ 2F870         ; NFKC_CF; 5BF3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F870
+ 2F871         ; NFKC_CF; 21B18          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F871
+ 2F872         ; NFKC_CF; 5BFF           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F872
+ 2F873         ; NFKC_CF; 5C06           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F873
+ 2F874         ; NFKC_CF; 5F53           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F874
+ 2F875         ; NFKC_CF; 5C22           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F875
+ 2F876         ; NFKC_CF; 3781           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F876
+ 2F877         ; NFKC_CF; 5C60           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F877
+ 2F878         ; NFKC_CF; 5C6E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F878
+ 2F879         ; NFKC_CF; 5CC0           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F879
+ 2F87A         ; NFKC_CF; 5C8D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F87A
+ 2F87B         ; NFKC_CF; 21DE4          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F87B
+ 2F87C         ; NFKC_CF; 5D43           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F87C
+ 2F87D         ; NFKC_CF; 21DE6          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F87D
+ 2F87E         ; NFKC_CF; 5D6E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F87E
+ 2F87F         ; NFKC_CF; 5D6B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F87F
+ 2F880         ; NFKC_CF; 5D7C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F880
+ 2F881         ; NFKC_CF; 5DE1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F881
+ 2F882         ; NFKC_CF; 5DE2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F882
+ 2F883         ; NFKC_CF; 382F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F883
+ 2F884         ; NFKC_CF; 5DFD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F884
+ 2F885         ; NFKC_CF; 5E28           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F885
+ 2F886         ; NFKC_CF; 5E3D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F886
+ 2F887         ; NFKC_CF; 5E69           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F887
+ 2F888         ; NFKC_CF; 3862           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F888
+ 2F889         ; NFKC_CF; 22183          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F889
+ 2F88A         ; NFKC_CF; 387C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F88A
+ 2F88B         ; NFKC_CF; 5EB0           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F88B
+ 2F88C         ; NFKC_CF; 5EB3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F88C
+ 2F88D         ; NFKC_CF; 5EB6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F88D
+ 2F88E         ; NFKC_CF; 5ECA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F88E
+ 2F88F         ; NFKC_CF; 2A392          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F88F
+ 2F890         ; NFKC_CF; 5EFE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F890
+ 2F891..2F892  ; NFKC_CF; 22331          # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F891..CJK COMPATIBILITY IDEOGRAPH-2F892
+ 2F893         ; NFKC_CF; 8201           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F893
+ 2F894..2F895  ; NFKC_CF; 5F22           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F894..CJK COMPATIBILITY IDEOGRAPH-2F895
+ 2F896         ; NFKC_CF; 38C7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F896
+ 2F897         ; NFKC_CF; 232B8          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F897
+ 2F898         ; NFKC_CF; 261DA          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F898
+ 2F899         ; NFKC_CF; 5F62           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F899
+ 2F89A         ; NFKC_CF; 5F6B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F89A
+ 2F89B         ; NFKC_CF; 38E3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F89B
+ 2F89C         ; NFKC_CF; 5F9A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F89C
+ 2F89D         ; NFKC_CF; 5FCD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F89D
+ 2F89E         ; NFKC_CF; 5FD7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F89E
+ 2F89F         ; NFKC_CF; 5FF9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F89F
+ 2F8A0         ; NFKC_CF; 6081           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A0
+ 2F8A1         ; NFKC_CF; 393A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A1
+ 2F8A2         ; NFKC_CF; 391C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A2
+ 2F8A3         ; NFKC_CF; 6094           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A3
+ 2F8A4         ; NFKC_CF; 226D4          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A4
+ 2F8A5         ; NFKC_CF; 60C7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A5
+ 2F8A6         ; NFKC_CF; 6148           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A6
+ 2F8A7         ; NFKC_CF; 614C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A7
+ 2F8A8         ; NFKC_CF; 614E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A8
+ 2F8A9         ; NFKC_CF; 614C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8A9
+ 2F8AA         ; NFKC_CF; 617A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8AA
+ 2F8AB         ; NFKC_CF; 618E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8AB
+ 2F8AC         ; NFKC_CF; 61B2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8AC
+ 2F8AD         ; NFKC_CF; 61A4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8AD
+ 2F8AE         ; NFKC_CF; 61AF           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8AE
+ 2F8AF         ; NFKC_CF; 61DE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8AF
+ 2F8B0         ; NFKC_CF; 61F2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B0
+ 2F8B1         ; NFKC_CF; 61F6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B1
+ 2F8B2         ; NFKC_CF; 6210           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B2
+ 2F8B3         ; NFKC_CF; 621B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B3
+ 2F8B4         ; NFKC_CF; 625D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B4
+ 2F8B5         ; NFKC_CF; 62B1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B5
+ 2F8B6         ; NFKC_CF; 62D4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B6
+ 2F8B7         ; NFKC_CF; 6350           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B7
+ 2F8B8         ; NFKC_CF; 22B0C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B8
+ 2F8B9         ; NFKC_CF; 633D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8B9
+ 2F8BA         ; NFKC_CF; 62FC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8BA
+ 2F8BB         ; NFKC_CF; 6368           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8BB
+ 2F8BC         ; NFKC_CF; 6383           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8BC
+ 2F8BD         ; NFKC_CF; 63E4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8BD
+ 2F8BE         ; NFKC_CF; 22BF1          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8BE
+ 2F8BF         ; NFKC_CF; 6422           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8BF
+ 2F8C0         ; NFKC_CF; 63C5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C0
+ 2F8C1         ; NFKC_CF; 63A9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C1
+ 2F8C2         ; NFKC_CF; 3A2E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C2
+ 2F8C3         ; NFKC_CF; 6469           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C3
+ 2F8C4         ; NFKC_CF; 647E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C4
+ 2F8C5         ; NFKC_CF; 649D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C5
+ 2F8C6         ; NFKC_CF; 6477           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C6
+ 2F8C7         ; NFKC_CF; 3A6C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C7
+ 2F8C8         ; NFKC_CF; 654F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C8
+ 2F8C9         ; NFKC_CF; 656C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8C9
+ 2F8CA         ; NFKC_CF; 2300A          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8CA
+ 2F8CB         ; NFKC_CF; 65E3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8CB
+ 2F8CC         ; NFKC_CF; 66F8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8CC
+ 2F8CD         ; NFKC_CF; 6649           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8CD
+ 2F8CE         ; NFKC_CF; 3B19           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8CE
+ 2F8CF         ; NFKC_CF; 6691           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8CF
+ 2F8D0         ; NFKC_CF; 3B08           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D0
+ 2F8D1         ; NFKC_CF; 3AE4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D1
+ 2F8D2         ; NFKC_CF; 5192           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D2
+ 2F8D3         ; NFKC_CF; 5195           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D3
+ 2F8D4         ; NFKC_CF; 6700           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D4
+ 2F8D5         ; NFKC_CF; 669C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D5
+ 2F8D6         ; NFKC_CF; 80AD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D6
+ 2F8D7         ; NFKC_CF; 43D9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D7
+ 2F8D8         ; NFKC_CF; 6717           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D8
+ 2F8D9         ; NFKC_CF; 671B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8D9
+ 2F8DA         ; NFKC_CF; 6721           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8DA
+ 2F8DB         ; NFKC_CF; 675E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8DB
+ 2F8DC         ; NFKC_CF; 6753           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8DC
+ 2F8DD         ; NFKC_CF; 233C3          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8DD
+ 2F8DE         ; NFKC_CF; 3B49           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8DE
+ 2F8DF         ; NFKC_CF; 67FA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8DF
+ 2F8E0         ; NFKC_CF; 6785           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E0
+ 2F8E1         ; NFKC_CF; 6852           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E1
+ 2F8E2         ; NFKC_CF; 6885           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E2
+ 2F8E3         ; NFKC_CF; 2346D          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E3
+ 2F8E4         ; NFKC_CF; 688E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E4
+ 2F8E5         ; NFKC_CF; 681F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E5
+ 2F8E6         ; NFKC_CF; 6914           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E6
+ 2F8E7         ; NFKC_CF; 3B9D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E7
+ 2F8E8         ; NFKC_CF; 6942           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E8
+ 2F8E9         ; NFKC_CF; 69A3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8E9
+ 2F8EA         ; NFKC_CF; 69EA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8EA
+ 2F8EB         ; NFKC_CF; 6AA8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8EB
+ 2F8EC         ; NFKC_CF; 236A3          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8EC
+ 2F8ED         ; NFKC_CF; 6ADB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8ED
+ 2F8EE         ; NFKC_CF; 3C18           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8EE
+ 2F8EF         ; NFKC_CF; 6B21           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8EF
+ 2F8F0         ; NFKC_CF; 238A7          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F0
+ 2F8F1         ; NFKC_CF; 6B54           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F1
+ 2F8F2         ; NFKC_CF; 3C4E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F2
+ 2F8F3         ; NFKC_CF; 6B72           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F3
+ 2F8F4         ; NFKC_CF; 6B9F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F4
+ 2F8F5         ; NFKC_CF; 6BBA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F5
+ 2F8F6         ; NFKC_CF; 6BBB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F6
+ 2F8F7         ; NFKC_CF; 23A8D          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F7
+ 2F8F8         ; NFKC_CF; 21D0B          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F8
+ 2F8F9         ; NFKC_CF; 23AFA          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8F9
+ 2F8FA         ; NFKC_CF; 6C4E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8FA
+ 2F8FB         ; NFKC_CF; 23CBC          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8FB
+ 2F8FC         ; NFKC_CF; 6CBF           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8FC
+ 2F8FD         ; NFKC_CF; 6CCD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8FD
+ 2F8FE         ; NFKC_CF; 6C67           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8FE
+ 2F8FF         ; NFKC_CF; 6D16           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F8FF
+ 2F900         ; NFKC_CF; 6D3E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F900
+ 2F901         ; NFKC_CF; 6D77           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F901
+ 2F902         ; NFKC_CF; 6D41           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F902
+ 2F903         ; NFKC_CF; 6D69           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F903
+ 2F904         ; NFKC_CF; 6D78           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F904
+ 2F905         ; NFKC_CF; 6D85           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F905
+ 2F906         ; NFKC_CF; 23D1E          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F906
+ 2F907         ; NFKC_CF; 6D34           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F907
+ 2F908         ; NFKC_CF; 6E2F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F908
+ 2F909         ; NFKC_CF; 6E6E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F909
+ 2F90A         ; NFKC_CF; 3D33           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F90A
+ 2F90B         ; NFKC_CF; 6ECB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F90B
+ 2F90C         ; NFKC_CF; 6EC7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F90C
+ 2F90D         ; NFKC_CF; 23ED1          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F90D
+ 2F90E         ; NFKC_CF; 6DF9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F90E
+ 2F90F         ; NFKC_CF; 6F6E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F90F
+ 2F910         ; NFKC_CF; 23F5E          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F910
+ 2F911         ; NFKC_CF; 23F8E          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F911
+ 2F912         ; NFKC_CF; 6FC6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F912
+ 2F913         ; NFKC_CF; 7039           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F913
+ 2F914         ; NFKC_CF; 701E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F914
+ 2F915         ; NFKC_CF; 701B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F915
+ 2F916         ; NFKC_CF; 3D96           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F916
+ 2F917         ; NFKC_CF; 704A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F917
+ 2F918         ; NFKC_CF; 707D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F918
+ 2F919         ; NFKC_CF; 7077           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F919
+ 2F91A         ; NFKC_CF; 70AD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F91A
+ 2F91B         ; NFKC_CF; 20525          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F91B
+ 2F91C         ; NFKC_CF; 7145           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F91C
+ 2F91D         ; NFKC_CF; 24263          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F91D
+ 2F91E         ; NFKC_CF; 719C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F91E
+ 2F91F         ; NFKC_CF; 243AB          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F91F
+ 2F920         ; NFKC_CF; 7228           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F920
+ 2F921         ; NFKC_CF; 7235           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F921
+ 2F922         ; NFKC_CF; 7250           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F922
+ 2F923         ; NFKC_CF; 24608          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F923
+ 2F924         ; NFKC_CF; 7280           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F924
+ 2F925         ; NFKC_CF; 7295           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F925
+ 2F926         ; NFKC_CF; 24735          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F926
+ 2F927         ; NFKC_CF; 24814          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F927
+ 2F928         ; NFKC_CF; 737A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F928
+ 2F929         ; NFKC_CF; 738B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F929
+ 2F92A         ; NFKC_CF; 3EAC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F92A
+ 2F92B         ; NFKC_CF; 73A5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F92B
+ 2F92C..2F92D  ; NFKC_CF; 3EB8           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F92C..CJK COMPATIBILITY IDEOGRAPH-2F92D
+ 2F92E         ; NFKC_CF; 7447           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F92E
+ 2F92F         ; NFKC_CF; 745C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F92F
+ 2F930         ; NFKC_CF; 7471           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F930
+ 2F931         ; NFKC_CF; 7485           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F931
+ 2F932         ; NFKC_CF; 74CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F932
+ 2F933         ; NFKC_CF; 3F1B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F933
+ 2F934         ; NFKC_CF; 7524           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F934
+ 2F935         ; NFKC_CF; 24C36          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F935
+ 2F936         ; NFKC_CF; 753E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F936
+ 2F937         ; NFKC_CF; 24C92          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F937
+ 2F938         ; NFKC_CF; 7570           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F938
+ 2F939         ; NFKC_CF; 2219F          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F939
+ 2F93A         ; NFKC_CF; 7610           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F93A
+ 2F93B         ; NFKC_CF; 24FA1          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F93B
+ 2F93C         ; NFKC_CF; 24FB8          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F93C
+ 2F93D         ; NFKC_CF; 25044          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F93D
+ 2F93E         ; NFKC_CF; 3FFC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F93E
+ 2F93F         ; NFKC_CF; 4008           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F93F
+ 2F940         ; NFKC_CF; 76F4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F940
+ 2F941         ; NFKC_CF; 250F3          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F941
+ 2F942         ; NFKC_CF; 250F2          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F942
+ 2F943         ; NFKC_CF; 25119          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F943
+ 2F944         ; NFKC_CF; 25133          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F944
+ 2F945         ; NFKC_CF; 771E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F945
+ 2F946..2F947  ; NFKC_CF; 771F           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F946..CJK COMPATIBILITY IDEOGRAPH-2F947
+ 2F948         ; NFKC_CF; 774A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F948
+ 2F949         ; NFKC_CF; 4039           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F949
+ 2F94A         ; NFKC_CF; 778B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F94A
+ 2F94B         ; NFKC_CF; 4046           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F94B
+ 2F94C         ; NFKC_CF; 4096           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F94C
+ 2F94D         ; NFKC_CF; 2541D          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F94D
+ 2F94E         ; NFKC_CF; 784E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F94E
+ 2F94F         ; NFKC_CF; 788C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F94F
+ 2F950         ; NFKC_CF; 78CC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F950
+ 2F951         ; NFKC_CF; 40E3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F951
+ 2F952         ; NFKC_CF; 25626          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F952
+ 2F953         ; NFKC_CF; 7956           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F953
+ 2F954         ; NFKC_CF; 2569A          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F954
+ 2F955         ; NFKC_CF; 256C5          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F955
+ 2F956         ; NFKC_CF; 798F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F956
+ 2F957         ; NFKC_CF; 79EB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F957
+ 2F958         ; NFKC_CF; 412F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F958
+ 2F959         ; NFKC_CF; 7A40           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F959
+ 2F95A         ; NFKC_CF; 7A4A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F95A
+ 2F95B         ; NFKC_CF; 7A4F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F95B
+ 2F95C         ; NFKC_CF; 2597C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F95C
+ 2F95D..2F95E  ; NFKC_CF; 25AA7          # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F95D..CJK COMPATIBILITY IDEOGRAPH-2F95E
+ 2F95F         ; NFKC_CF; 7AEE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F95F
+ 2F960         ; NFKC_CF; 4202           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F960
+ 2F961         ; NFKC_CF; 25BAB          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F961
+ 2F962         ; NFKC_CF; 7BC6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F962
+ 2F963         ; NFKC_CF; 7BC9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F963
+ 2F964         ; NFKC_CF; 4227           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F964
+ 2F965         ; NFKC_CF; 25C80          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F965
+ 2F966         ; NFKC_CF; 7CD2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F966
+ 2F967         ; NFKC_CF; 42A0           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F967
+ 2F968         ; NFKC_CF; 7CE8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F968
+ 2F969         ; NFKC_CF; 7CE3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F969
+ 2F96A         ; NFKC_CF; 7D00           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F96A
+ 2F96B         ; NFKC_CF; 25F86          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F96B
+ 2F96C         ; NFKC_CF; 7D63           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F96C
+ 2F96D         ; NFKC_CF; 4301           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F96D
+ 2F96E         ; NFKC_CF; 7DC7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F96E
+ 2F96F         ; NFKC_CF; 7E02           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F96F
+ 2F970         ; NFKC_CF; 7E45           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F970
+ 2F971         ; NFKC_CF; 4334           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F971
+ 2F972         ; NFKC_CF; 26228          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F972
+ 2F973         ; NFKC_CF; 26247          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F973
+ 2F974         ; NFKC_CF; 4359           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F974
+ 2F975         ; NFKC_CF; 262D9          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F975
+ 2F976         ; NFKC_CF; 7F7A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F976
+ 2F977         ; NFKC_CF; 2633E          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F977
+ 2F978         ; NFKC_CF; 7F95           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F978
+ 2F979         ; NFKC_CF; 7FFA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F979
+ 2F97A         ; NFKC_CF; 8005           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F97A
+ 2F97B         ; NFKC_CF; 264DA          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F97B
+ 2F97C         ; NFKC_CF; 26523          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F97C
+ 2F97D         ; NFKC_CF; 8060           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F97D
+ 2F97E         ; NFKC_CF; 265A8          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F97E
+ 2F97F         ; NFKC_CF; 8070           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F97F
+ 2F980         ; NFKC_CF; 2335F          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F980
+ 2F981         ; NFKC_CF; 43D5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F981
+ 2F982         ; NFKC_CF; 80B2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F982
+ 2F983         ; NFKC_CF; 8103           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F983
+ 2F984         ; NFKC_CF; 440B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F984
+ 2F985         ; NFKC_CF; 813E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F985
+ 2F986         ; NFKC_CF; 5AB5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F986
+ 2F987         ; NFKC_CF; 267A7          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F987
+ 2F988         ; NFKC_CF; 267B5          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F988
+ 2F989         ; NFKC_CF; 23393          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F989
+ 2F98A         ; NFKC_CF; 2339C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F98A
+ 2F98B         ; NFKC_CF; 8201           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F98B
+ 2F98C         ; NFKC_CF; 8204           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F98C
+ 2F98D         ; NFKC_CF; 8F9E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F98D
+ 2F98E         ; NFKC_CF; 446B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F98E
+ 2F98F         ; NFKC_CF; 8291           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F98F
+ 2F990         ; NFKC_CF; 828B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F990
+ 2F991         ; NFKC_CF; 829D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F991
+ 2F992         ; NFKC_CF; 52B3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F992
+ 2F993         ; NFKC_CF; 82B1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F993
+ 2F994         ; NFKC_CF; 82B3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F994
+ 2F995         ; NFKC_CF; 82BD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F995
+ 2F996         ; NFKC_CF; 82E6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F996
+ 2F997         ; NFKC_CF; 26B3C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F997
+ 2F998         ; NFKC_CF; 82E5           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F998
+ 2F999         ; NFKC_CF; 831D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F999
+ 2F99A         ; NFKC_CF; 8363           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F99A
+ 2F99B         ; NFKC_CF; 83AD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F99B
+ 2F99C         ; NFKC_CF; 8323           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F99C
+ 2F99D         ; NFKC_CF; 83BD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F99D
+ 2F99E         ; NFKC_CF; 83E7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F99E
+ 2F99F         ; NFKC_CF; 8457           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F99F
+ 2F9A0         ; NFKC_CF; 8353           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A0
+ 2F9A1         ; NFKC_CF; 83CA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A1
+ 2F9A2         ; NFKC_CF; 83CC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A2
+ 2F9A3         ; NFKC_CF; 83DC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A3
+ 2F9A4         ; NFKC_CF; 26C36          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A4
+ 2F9A5         ; NFKC_CF; 26D6B          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A5
+ 2F9A6         ; NFKC_CF; 26CD5          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A6
+ 2F9A7         ; NFKC_CF; 452B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A7
+ 2F9A8         ; NFKC_CF; 84F1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A8
+ 2F9A9         ; NFKC_CF; 84F3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9A9
+ 2F9AA         ; NFKC_CF; 8516           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9AA
+ 2F9AB         ; NFKC_CF; 273CA          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9AB
+ 2F9AC         ; NFKC_CF; 8564           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9AC
+ 2F9AD         ; NFKC_CF; 26F2C          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9AD
+ 2F9AE         ; NFKC_CF; 455D           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9AE
+ 2F9AF         ; NFKC_CF; 4561           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9AF
+ 2F9B0         ; NFKC_CF; 26FB1          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B0
+ 2F9B1         ; NFKC_CF; 270D2          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B1
+ 2F9B2         ; NFKC_CF; 456B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B2
+ 2F9B3         ; NFKC_CF; 8650           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B3
+ 2F9B4         ; NFKC_CF; 865C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B4
+ 2F9B5         ; NFKC_CF; 8667           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B5
+ 2F9B6         ; NFKC_CF; 8669           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B6
+ 2F9B7         ; NFKC_CF; 86A9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B7
+ 2F9B8         ; NFKC_CF; 8688           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B8
+ 2F9B9         ; NFKC_CF; 870E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9B9
+ 2F9BA         ; NFKC_CF; 86E2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9BA
+ 2F9BB         ; NFKC_CF; 8779           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9BB
+ 2F9BC         ; NFKC_CF; 8728           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9BC
+ 2F9BD         ; NFKC_CF; 876B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9BD
+ 2F9BE         ; NFKC_CF; 8786           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9BE
+ 2F9BF         ; NFKC_CF; 45D7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9BF
+ 2F9C0         ; NFKC_CF; 87E1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C0
+ 2F9C1         ; NFKC_CF; 8801           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C1
+ 2F9C2         ; NFKC_CF; 45F9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C2
+ 2F9C3         ; NFKC_CF; 8860           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C3
+ 2F9C4         ; NFKC_CF; 8863           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C4
+ 2F9C5         ; NFKC_CF; 27667          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C5
+ 2F9C6         ; NFKC_CF; 88D7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C6
+ 2F9C7         ; NFKC_CF; 88DE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C7
+ 2F9C8         ; NFKC_CF; 4635           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C8
+ 2F9C9         ; NFKC_CF; 88FA           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9C9
+ 2F9CA         ; NFKC_CF; 34BB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9CA
+ 2F9CB         ; NFKC_CF; 278AE          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9CB
+ 2F9CC         ; NFKC_CF; 27966          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9CC
+ 2F9CD         ; NFKC_CF; 46BE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9CD
+ 2F9CE         ; NFKC_CF; 46C7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9CE
+ 2F9CF         ; NFKC_CF; 8AA0           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9CF
+ 2F9D0         ; NFKC_CF; 8AED           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D0
+ 2F9D1         ; NFKC_CF; 8B8A           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D1
+ 2F9D2         ; NFKC_CF; 8C55           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D2
+ 2F9D3         ; NFKC_CF; 27CA8          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D3
+ 2F9D4         ; NFKC_CF; 8CAB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D4
+ 2F9D5         ; NFKC_CF; 8CC1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D5
+ 2F9D6         ; NFKC_CF; 8D1B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D6
+ 2F9D7         ; NFKC_CF; 8D77           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D7
+ 2F9D8         ; NFKC_CF; 27F2F          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D8
+ 2F9D9         ; NFKC_CF; 20804          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9D9
+ 2F9DA         ; NFKC_CF; 8DCB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9DA
+ 2F9DB         ; NFKC_CF; 8DBC           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9DB
+ 2F9DC         ; NFKC_CF; 8DF0           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9DC
+ 2F9DD         ; NFKC_CF; 208DE          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9DD
+ 2F9DE         ; NFKC_CF; 8ED4           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9DE
+ 2F9DF         ; NFKC_CF; 8F38           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9DF
+ 2F9E0         ; NFKC_CF; 285D2          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E0
+ 2F9E1         ; NFKC_CF; 285ED          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E1
+ 2F9E2         ; NFKC_CF; 9094           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E2
+ 2F9E3         ; NFKC_CF; 90F1           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E3
+ 2F9E4         ; NFKC_CF; 9111           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E4
+ 2F9E5         ; NFKC_CF; 2872E          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E5
+ 2F9E6         ; NFKC_CF; 911B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E6
+ 2F9E7         ; NFKC_CF; 9238           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E7
+ 2F9E8         ; NFKC_CF; 92D7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E8
+ 2F9E9         ; NFKC_CF; 92D8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9E9
+ 2F9EA         ; NFKC_CF; 927C           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9EA
+ 2F9EB         ; NFKC_CF; 93F9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9EB
+ 2F9EC         ; NFKC_CF; 9415           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9EC
+ 2F9ED         ; NFKC_CF; 28BFA          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9ED
+ 2F9EE         ; NFKC_CF; 958B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9EE
+ 2F9EF         ; NFKC_CF; 4995           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9EF
+ 2F9F0         ; NFKC_CF; 95B7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F0
+ 2F9F1         ; NFKC_CF; 28D77          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F1
+ 2F9F2         ; NFKC_CF; 49E6           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F2
+ 2F9F3         ; NFKC_CF; 96C3           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F3
+ 2F9F4         ; NFKC_CF; 5DB2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F4
+ 2F9F5         ; NFKC_CF; 9723           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F5
+ 2F9F6         ; NFKC_CF; 29145          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F6
+ 2F9F7         ; NFKC_CF; 2921A          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F7
+ 2F9F8         ; NFKC_CF; 4A6E           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F8
+ 2F9F9         ; NFKC_CF; 4A76           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9F9
+ 2F9FA         ; NFKC_CF; 97E0           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9FA
+ 2F9FB         ; NFKC_CF; 2940A          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9FB
+ 2F9FC         ; NFKC_CF; 4AB2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9FC
+ 2F9FD         ; NFKC_CF; 29496          # Lo       CJK COMPATIBILITY IDEOGRAPH-2F9FD
+ 2F9FE..2F9FF  ; NFKC_CF; 980B           # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-2F9FE..CJK COMPATIBILITY IDEOGRAPH-2F9FF
+ 2FA00         ; NFKC_CF; 9829           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA00
+ 2FA01         ; NFKC_CF; 295B6          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA01
+ 2FA02         ; NFKC_CF; 98E2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA02
+ 2FA03         ; NFKC_CF; 4B33           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA03
+ 2FA04         ; NFKC_CF; 9929           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA04
+ 2FA05         ; NFKC_CF; 99A7           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA05
+ 2FA06         ; NFKC_CF; 99C2           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA06
+ 2FA07         ; NFKC_CF; 99FE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA07
+ 2FA08         ; NFKC_CF; 4BCE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA08
+ 2FA09         ; NFKC_CF; 29B30          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA09
+ 2FA0A         ; NFKC_CF; 9B12           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA0A
+ 2FA0B         ; NFKC_CF; 9C40           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA0B
+ 2FA0C         ; NFKC_CF; 9CFD           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA0C
+ 2FA0D         ; NFKC_CF; 4CCE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA0D
+ 2FA0E         ; NFKC_CF; 4CED           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA0E
+ 2FA0F         ; NFKC_CF; 9D67           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA0F
+ 2FA10         ; NFKC_CF; 2A0CE          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA10
+ 2FA11         ; NFKC_CF; 4CF8           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA11
+ 2FA12         ; NFKC_CF; 2A105          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA12
+ 2FA13         ; NFKC_CF; 2A20E          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA13
+ 2FA14         ; NFKC_CF; 2A291          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA14
+ 2FA15         ; NFKC_CF; 9EBB           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA15
+ 2FA16         ; NFKC_CF; 4D56           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA16
+ 2FA17         ; NFKC_CF; 9EF9           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA17
+ 2FA18         ; NFKC_CF; 9EFE           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA18
+ 2FA19         ; NFKC_CF; 9F05           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA19
+ 2FA1A         ; NFKC_CF; 9F0F           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA1A
+ 2FA1B         ; NFKC_CF; 9F16           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA1B
+ 2FA1C         ; NFKC_CF; 9F3B           # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA1C
+ 2FA1D         ; NFKC_CF; 2A600          # Lo       CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ E0000         ; NFKC_CF;                # Cn       <reserved-E0000>
+ E0001         ; NFKC_CF;                # Cf       LANGUAGE TAG
+ E0002..E001F  ; NFKC_CF;                # Cn  [30] <reserved-E0002>..<reserved-E001F>
+ E0020..E007F  ; NFKC_CF;                # Cf  [96] TAG SPACE..CANCEL TAG
+ E0080..E00FF  ; NFKC_CF;                # Cn [128] <reserved-E0080>..<reserved-E00FF>
+ E0100..E01EF  ; NFKC_CF;                # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ E01F0..E0FFF  ; NFKC_CF;                # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+ 
+ # Total code points: 10491
+ 
+ # ================================================
+ 
+ # Derived Property:   Changes_When_NFKC_Casefolded (CWKCF)
+ #  Characters that are not stable under an NFKC_Casefold mapping.
+ #  As defined by cp != NFKC_Casefold(cp)
+ 
+ 0041..005A    ; Changes_When_NFKC_Casefolded # L&  [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+ 00A0          ; Changes_When_NFKC_Casefolded # Zs       NO-BREAK SPACE
+ 00A8          ; Changes_When_NFKC_Casefolded # Sk       DIAERESIS
+ 00AA          ; Changes_When_NFKC_Casefolded # Lo       FEMININE ORDINAL INDICATOR
+ 00AD          ; Changes_When_NFKC_Casefolded # Cf       SOFT HYPHEN
+ 00AF          ; Changes_When_NFKC_Casefolded # Sk       MACRON
+ 00B2..00B3    ; Changes_When_NFKC_Casefolded # No   [2] SUPERSCRIPT TWO..SUPERSCRIPT THREE
+ 00B4          ; Changes_When_NFKC_Casefolded # Sk       ACUTE ACCENT
+ 00B5          ; Changes_When_NFKC_Casefolded # L&       MICRO SIGN
+ 00B8          ; Changes_When_NFKC_Casefolded # Sk       CEDILLA
+ 00B9          ; Changes_When_NFKC_Casefolded # No       SUPERSCRIPT ONE
+ 00BA          ; Changes_When_NFKC_Casefolded # Lo       MASCULINE ORDINAL INDICATOR
+ 00BC..00BE    ; Changes_When_NFKC_Casefolded # No   [3] VULGAR FRACTION ONE QUARTER..VULGAR FRACTION THREE QUARTERS
+ 00C0..00D6    ; Changes_When_NFKC_Casefolded # L&  [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+ 00D8..00DF    ; Changes_When_NFKC_Casefolded # L&   [8] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER SHARP S
+ 0100          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH MACRON
+ 0102          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE
+ 0104          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH OGONEK
+ 0106          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER C WITH ACUTE
+ 0108          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER C WITH CIRCUMFLEX
+ 010A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER C WITH DOT ABOVE
+ 010C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER C WITH CARON
+ 010E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH CARON
+ 0110          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH STROKE
+ 0112          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH MACRON
+ 0114          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH BREVE
+ 0116          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH DOT ABOVE
+ 0118          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH OGONEK
+ 011A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CARON
+ 011C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH CIRCUMFLEX
+ 011E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH BREVE
+ 0120          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH DOT ABOVE
+ 0122          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH CEDILLA
+ 0124          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH CIRCUMFLEX
+ 0126          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH STROKE
+ 0128          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH TILDE
+ 012A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH MACRON
+ 012C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH BREVE
+ 012E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH OGONEK
+ 0130          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH DOT ABOVE
+ 0132..0134    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LIGATURE IJ..LATIN CAPITAL LETTER J WITH CIRCUMFLEX
+ 0136          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH CEDILLA
+ 0139          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH ACUTE
+ 013B          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH CEDILLA
+ 013D          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH CARON
+ 013F..0141    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER L WITH MIDDLE DOT..LATIN CAPITAL LETTER L WITH STROKE
+ 0143          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH ACUTE
+ 0145          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH CEDILLA
+ 0147          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH CARON
+ 0149..014A    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN SMALL LETTER N PRECEDED BY APOSTROPHE..LATIN CAPITAL LETTER ENG
+ 014C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH MACRON
+ 014E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH BREVE
+ 0150          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOUBLE ACUTE
+ 0152          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LIGATURE OE
+ 0154          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH ACUTE
+ 0156          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH CEDILLA
+ 0158          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH CARON
+ 015A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH ACUTE
+ 015C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH CIRCUMFLEX
+ 015E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH CEDILLA
+ 0160          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH CARON
+ 0162          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH CEDILLA
+ 0164          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH CARON
+ 0166          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH STROKE
+ 0168          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH TILDE
+ 016A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH MACRON
+ 016C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH BREVE
+ 016E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH RING ABOVE
+ 0170          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DOUBLE ACUTE
+ 0172          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH OGONEK
+ 0174          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH CIRCUMFLEX
+ 0176          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH CIRCUMFLEX
+ 0178..0179    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER Y WITH DIAERESIS..LATIN CAPITAL LETTER Z WITH ACUTE
+ 017B          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH DOT ABOVE
+ 017D          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH CARON
+ 017F          ; Changes_When_NFKC_Casefolded # L&       LATIN SMALL LETTER LONG S
+ 0181..0182    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER B WITH HOOK..LATIN CAPITAL LETTER B WITH TOPBAR
+ 0184          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER TONE SIX
+ 0186..0187    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER OPEN O..LATIN CAPITAL LETTER C WITH HOOK
+ 0189..018B    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER AFRICAN D..LATIN CAPITAL LETTER D WITH TOPBAR
+ 018E..0191    ; Changes_When_NFKC_Casefolded # L&   [4] LATIN CAPITAL LETTER REVERSED E..LATIN CAPITAL LETTER F WITH HOOK
+ 0193..0194    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER G WITH HOOK..LATIN CAPITAL LETTER GAMMA
+ 0196..0198    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER IOTA..LATIN CAPITAL LETTER K WITH HOOK
+ 019C..019D    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER TURNED M..LATIN CAPITAL LETTER N WITH LEFT HOOK
+ 019F..01A0    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER O WITH MIDDLE TILDE..LATIN CAPITAL LETTER O WITH HORN
+ 01A2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER OI
+ 01A4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER P WITH HOOK
+ 01A6..01A7    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN LETTER YR..LATIN CAPITAL LETTER TONE TWO
+ 01A9          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER ESH
+ 01AC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH HOOK
+ 01AE..01AF    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER T WITH RETROFLEX HOOK..LATIN CAPITAL LETTER U WITH HORN
+ 01B1..01B3    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER UPSILON..LATIN CAPITAL LETTER Y WITH HOOK
+ 01B5          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH STROKE
+ 01B7..01B8    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER EZH..LATIN CAPITAL LETTER EZH REVERSED
+ 01BC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER TONE FIVE
+ 01C4..01CD    ; Changes_When_NFKC_Casefolded # L&  [10] LATIN CAPITAL LETTER DZ WITH CARON..LATIN CAPITAL LETTER A WITH CARON
+ 01CF          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH CARON
+ 01D1          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH CARON
+ 01D3          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH CARON
+ 01D5          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND MACRON
+ 01D7          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND ACUTE
+ 01D9          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND CARON
+ 01DB          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS AND GRAVE
+ 01DE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH DIAERESIS AND MACRON
+ 01E0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE AND MACRON
+ 01E2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AE WITH MACRON
+ 01E4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH STROKE
+ 01E6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH CARON
+ 01E8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH CARON
+ 01EA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH OGONEK
+ 01EC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH OGONEK AND MACRON
+ 01EE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER EZH WITH CARON
+ 01F1..01F4    ; Changes_When_NFKC_Casefolded # L&   [4] LATIN CAPITAL LETTER DZ..LATIN CAPITAL LETTER G WITH ACUTE
+ 01F6..01F8    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER HWAIR..LATIN CAPITAL LETTER N WITH GRAVE
+ 01FA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH RING ABOVE AND ACUTE
+ 01FC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AE WITH ACUTE
+ 01FE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH STROKE AND ACUTE
+ 0200          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOUBLE GRAVE
+ 0202          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH INVERTED BREVE
+ 0204          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH DOUBLE GRAVE
+ 0206          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH INVERTED BREVE
+ 0208          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH DOUBLE GRAVE
+ 020A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH INVERTED BREVE
+ 020C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOUBLE GRAVE
+ 020E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH INVERTED BREVE
+ 0210          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOUBLE GRAVE
+ 0212          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH INVERTED BREVE
+ 0214          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DOUBLE GRAVE
+ 0216          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH INVERTED BREVE
+ 0218          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH COMMA BELOW
+ 021A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH COMMA BELOW
+ 021C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER YOGH
+ 021E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH CARON
+ 0220          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH LONG RIGHT LEG
+ 0222          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER OU
+ 0224          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH HOOK
+ 0226          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOT ABOVE
+ 0228          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CEDILLA
+ 022A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH DIAERESIS AND MACRON
+ 022C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH TILDE AND MACRON
+ 022E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE
+ 0230          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOT ABOVE AND MACRON
+ 0232          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH MACRON
+ 023A..023B    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER A WITH STROKE..LATIN CAPITAL LETTER C WITH STROKE
+ 023D..023E    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER L WITH BAR..LATIN CAPITAL LETTER T WITH DIAGONAL STROKE
+ 0241          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL STOP
+ 0243..0246    ; Changes_When_NFKC_Casefolded # L&   [4] LATIN CAPITAL LETTER B WITH STROKE..LATIN CAPITAL LETTER E WITH STROKE
+ 0248          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER J WITH STROKE
+ 024A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER SMALL Q WITH HOOK TAIL
+ 024C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH STROKE
+ 024E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH STROKE
+ 02B0..02B8    ; Changes_When_NFKC_Casefolded # Lm   [9] MODIFIER LETTER SMALL H..MODIFIER LETTER SMALL Y
+ 02D8..02DD    ; Changes_When_NFKC_Casefolded # Sk   [6] BREVE..DOUBLE ACUTE ACCENT
+ 02E0..02E4    ; Changes_When_NFKC_Casefolded # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+ 0340..0341    ; Changes_When_NFKC_Casefolded # Mn   [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+ 0343..0345    ; Changes_When_NFKC_Casefolded # Mn   [3] COMBINING GREEK KORONIS..COMBINING GREEK YPOGEGRAMMENI
+ 034F          ; Changes_When_NFKC_Casefolded # Mn       COMBINING GRAPHEME JOINER
+ 0370          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER HETA
+ 0372          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER ARCHAIC SAMPI
+ 0374          ; Changes_When_NFKC_Casefolded # Lm       GREEK NUMERAL SIGN
+ 0376          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA
+ 037A          ; Changes_When_NFKC_Casefolded # Lm       GREEK YPOGEGRAMMENI
+ 037E          ; Changes_When_NFKC_Casefolded # Po       GREEK QUESTION MARK
+ 037F          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER YOT
+ 0384..0385    ; Changes_When_NFKC_Casefolded # Sk   [2] GREEK TONOS..GREEK DIALYTIKA TONOS
+ 0386          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER ALPHA WITH TONOS
+ 0387          ; Changes_When_NFKC_Casefolded # Po       GREEK ANO TELEIA
+ 0388..038A    ; Changes_When_NFKC_Casefolded # L&   [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+ 038C          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER OMICRON WITH TONOS
+ 038E..038F    ; Changes_When_NFKC_Casefolded # L&   [2] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER OMEGA WITH TONOS
+ 0391..03A1    ; Changes_When_NFKC_Casefolded # L&  [17] GREEK CAPITAL LETTER ALPHA..GREEK CAPITAL LETTER RHO
+ 03A3..03AB    ; Changes_When_NFKC_Casefolded # L&   [9] GREEK CAPITAL LETTER SIGMA..GREEK CAPITAL LETTER UPSILON WITH DIALYTIKA
+ 03C2          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER FINAL SIGMA
+ 03CF..03D6    ; Changes_When_NFKC_Casefolded # L&   [8] GREEK CAPITAL KAI SYMBOL..GREEK PI SYMBOL
+ 03D8          ; Changes_When_NFKC_Casefolded # L&       GREEK LETTER ARCHAIC KOPPA
+ 03DA          ; Changes_When_NFKC_Casefolded # L&       GREEK LETTER STIGMA
+ 03DC          ; Changes_When_NFKC_Casefolded # L&       GREEK LETTER DIGAMMA
+ 03DE          ; Changes_When_NFKC_Casefolded # L&       GREEK LETTER KOPPA
+ 03E0          ; Changes_When_NFKC_Casefolded # L&       GREEK LETTER SAMPI
+ 03E2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER SHEI
+ 03E4          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER FEI
+ 03E6          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER KHEI
+ 03E8          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER HORI
+ 03EA          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER GANGIA
+ 03EC          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER SHIMA
+ 03EE          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER DEI
+ 03F0..03F2    ; Changes_When_NFKC_Casefolded # L&   [3] GREEK KAPPA SYMBOL..GREEK LUNATE SIGMA SYMBOL
+ 03F4..03F5    ; Changes_When_NFKC_Casefolded # L&   [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+ 03F7          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER SHO
+ 03F9..03FA    ; Changes_When_NFKC_Casefolded # L&   [2] GREEK CAPITAL LUNATE SIGMA SYMBOL..GREEK CAPITAL LETTER SAN
+ 03FD..042F    ; Changes_When_NFKC_Casefolded # L&  [51] GREEK CAPITAL REVERSED LUNATE SIGMA SYMBOL..CYRILLIC CAPITAL LETTER YA
+ 0460          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER OMEGA
+ 0462          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER YAT
+ 0464          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED E
+ 0466          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER LITTLE YUS
+ 0468          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED LITTLE YUS
+ 046A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BIG YUS
+ 046C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED BIG YUS
+ 046E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KSI
+ 0470          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER PSI
+ 0472          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER FITA
+ 0474          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IZHITSA
+ 0476          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IZHITSA WITH DOUBLE GRAVE ACCENT
+ 0478          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER UK
+ 047A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ROUND OMEGA
+ 047C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER OMEGA WITH TITLO
+ 047E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER OT
+ 0480          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOPPA
+ 048A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SHORT I WITH TAIL
+ 048C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SEMISOFT SIGN
+ 048E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ER WITH TICK
+ 0490          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH UPTURN
+ 0492          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE
+ 0494          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH MIDDLE HOOK
+ 0496          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ZHE WITH DESCENDER
+ 0498          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ZE WITH DESCENDER
+ 049A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH DESCENDER
+ 049C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH VERTICAL STROKE
+ 049E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH STROKE
+ 04A0          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BASHKIR KA
+ 04A2          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH DESCENDER
+ 04A4          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LIGATURE EN GHE
+ 04A6          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER PE WITH MIDDLE HOOK
+ 04A8          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN HA
+ 04AA          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ES WITH DESCENDER
+ 04AC          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER TE WITH DESCENDER
+ 04AE          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER STRAIGHT U
+ 04B0          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER STRAIGHT U WITH STROKE
+ 04B2          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER HA WITH DESCENDER
+ 04B4          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LIGATURE TE TSE
+ 04B6          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER CHE WITH DESCENDER
+ 04B8          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER CHE WITH VERTICAL STROKE
+ 04BA          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SHHA
+ 04BC          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE
+ 04BE          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN CHE WITH DESCENDER
+ 04C0..04C1    ; Changes_When_NFKC_Casefolded # L&   [2] CYRILLIC LETTER PALOCHKA..CYRILLIC CAPITAL LETTER ZHE WITH BREVE
+ 04C3          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KA WITH HOOK
+ 04C5          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH TAIL
+ 04C7          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH HOOK
+ 04C9          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH TAIL
+ 04CB          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KHAKASSIAN CHE
+ 04CD          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EM WITH TAIL
+ 04D0          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER A WITH BREVE
+ 04D2          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER A WITH DIAERESIS
+ 04D4          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LIGATURE A IE
+ 04D6          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IE WITH BREVE
+ 04D8          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SCHWA
+ 04DA          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SCHWA WITH DIAERESIS
+ 04DC          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ZHE WITH DIAERESIS
+ 04DE          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ZE WITH DIAERESIS
+ 04E0          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ABKHASIAN DZE
+ 04E2          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER I WITH MACRON
+ 04E4          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER I WITH DIAERESIS
+ 04E6          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER O WITH DIAERESIS
+ 04E8          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BARRED O
+ 04EA          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BARRED O WITH DIAERESIS
+ 04EC          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER E WITH DIAERESIS
+ 04EE          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER U WITH MACRON
+ 04F0          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER U WITH DIAERESIS
+ 04F2          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER U WITH DOUBLE ACUTE
+ 04F4          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER CHE WITH DIAERESIS
+ 04F6          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH DESCENDER
+ 04F8          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER YERU WITH DIAERESIS
+ 04FA          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER GHE WITH STROKE AND HOOK
+ 04FC          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER HA WITH HOOK
+ 04FE          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER HA WITH STROKE
+ 0500          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI DE
+ 0502          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI DJE
+ 0504          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI ZJE
+ 0506          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI DZJE
+ 0508          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI LJE
+ 050A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI NJE
+ 050C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI SJE
+ 050E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER KOMI TJE
+ 0510          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED ZE
+ 0512          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH HOOK
+ 0514          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER LHA
+ 0516          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER RHA
+ 0518          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER YAE
+ 051A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER QA
+ 051C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER WE
+ 051E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ALEUT KA
+ 0520          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH MIDDLE HOOK
+ 0522          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH MIDDLE HOOK
+ 0524          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER PE WITH DESCENDER
+ 0526          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SHHA WITH DESCENDER
+ 0528          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EN WITH LEFT HOOK
+ 052A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DZZHE
+ 052C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DCHE
+ 052E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER EL WITH DESCENDER
+ 0531..0556    ; Changes_When_NFKC_Casefolded # L&  [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+ 0587          ; Changes_When_NFKC_Casefolded # L&       ARMENIAN SMALL LIGATURE ECH YIWN
+ 061C          ; Changes_When_NFKC_Casefolded # Cf       ARABIC LETTER MARK
+ 0675..0678    ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC LETTER HIGH HAMZA ALEF..ARABIC LETTER HIGH HAMZA YEH
+ 0958..095F    ; Changes_When_NFKC_Casefolded # Lo   [8] DEVANAGARI LETTER QA..DEVANAGARI LETTER YYA
+ 09DC..09DD    ; Changes_When_NFKC_Casefolded # Lo   [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+ 09DF          ; Changes_When_NFKC_Casefolded # Lo       BENGALI LETTER YYA
+ 0A33          ; Changes_When_NFKC_Casefolded # Lo       GURMUKHI LETTER LLA
+ 0A36          ; Changes_When_NFKC_Casefolded # Lo       GURMUKHI LETTER SHA
+ 0A59..0A5B    ; Changes_When_NFKC_Casefolded # Lo   [3] GURMUKHI LETTER KHHA..GURMUKHI LETTER ZA
+ 0A5E          ; Changes_When_NFKC_Casefolded # Lo       GURMUKHI LETTER FA
+ 0B5C..0B5D    ; Changes_When_NFKC_Casefolded # Lo   [2] ORIYA LETTER RRA..ORIYA LETTER RHA
+ 0E33          ; Changes_When_NFKC_Casefolded # Lo       THAI CHARACTER SARA AM
+ 0EB3          ; Changes_When_NFKC_Casefolded # Lo       LAO VOWEL SIGN AM
+ 0EDC..0EDD    ; Changes_When_NFKC_Casefolded # Lo   [2] LAO HO NO..LAO HO MO
+ 0F0C          ; Changes_When_NFKC_Casefolded # Po       TIBETAN MARK DELIMITER TSHEG BSTAR
+ 0F43          ; Changes_When_NFKC_Casefolded # Lo       TIBETAN LETTER GHA
+ 0F4D          ; Changes_When_NFKC_Casefolded # Lo       TIBETAN LETTER DDHA
+ 0F52          ; Changes_When_NFKC_Casefolded # Lo       TIBETAN LETTER DHA
+ 0F57          ; Changes_When_NFKC_Casefolded # Lo       TIBETAN LETTER BHA
+ 0F5C          ; Changes_When_NFKC_Casefolded # Lo       TIBETAN LETTER DZHA
+ 0F69          ; Changes_When_NFKC_Casefolded # Lo       TIBETAN LETTER KSSA
+ 0F73          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN VOWEL SIGN II
+ 0F75..0F79    ; Changes_When_NFKC_Casefolded # Mn   [5] TIBETAN VOWEL SIGN UU..TIBETAN VOWEL SIGN VOCALIC LL
+ 0F81          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN VOWEL SIGN REVERSED II
+ 0F93          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN SUBJOINED LETTER GHA
+ 0F9D          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN SUBJOINED LETTER DDHA
+ 0FA2          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN SUBJOINED LETTER DHA
+ 0FA7          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN SUBJOINED LETTER BHA
+ 0FAC          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN SUBJOINED LETTER DZHA
+ 0FB9          ; Changes_When_NFKC_Casefolded # Mn       TIBETAN SUBJOINED LETTER KSSA
+ 10A0..10C5    ; Changes_When_NFKC_Casefolded # L&  [38] GEORGIAN CAPITAL LETTER AN..GEORGIAN CAPITAL LETTER HOE
+ 10C7          ; Changes_When_NFKC_Casefolded # L&       GEORGIAN CAPITAL LETTER YN
+ 10CD          ; Changes_When_NFKC_Casefolded # L&       GEORGIAN CAPITAL LETTER AEN
+ 10FC          ; Changes_When_NFKC_Casefolded # Lm       MODIFIER LETTER GEORGIAN NAR
+ 115F..1160    ; Changes_When_NFKC_Casefolded # Lo   [2] HANGUL CHOSEONG FILLER..HANGUL JUNGSEONG FILLER
+ 13F8..13FD    ; Changes_When_NFKC_Casefolded # L&   [6] CHEROKEE SMALL LETTER YE..CHEROKEE SMALL LETTER MV
+ 17B4..17B5    ; Changes_When_NFKC_Casefolded # Mn   [2] KHMER VOWEL INHERENT AQ..KHMER VOWEL INHERENT AA
+ 180B..180D    ; Changes_When_NFKC_Casefolded # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180E          ; Changes_When_NFKC_Casefolded # Cf       MONGOLIAN VOWEL SEPARATOR
+ 180F          ; Changes_When_NFKC_Casefolded # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
+ 1C80..1C88    ; Changes_When_NFKC_Casefolded # L&   [9] CYRILLIC SMALL LETTER ROUNDED VE..CYRILLIC SMALL LETTER UNBLENDED UK
+ 1C90..1CBA    ; Changes_When_NFKC_Casefolded # L&  [43] GEORGIAN MTAVRULI CAPITAL LETTER AN..GEORGIAN MTAVRULI CAPITAL LETTER AIN
+ 1CBD..1CBF    ; Changes_When_NFKC_Casefolded # L&   [3] GEORGIAN MTAVRULI CAPITAL LETTER AEN..GEORGIAN MTAVRULI CAPITAL LETTER LABIAL SIGN
+ 1D2C..1D2E    ; Changes_When_NFKC_Casefolded # Lm   [3] MODIFIER LETTER CAPITAL A..MODIFIER LETTER CAPITAL B
+ 1D30..1D3A    ; Changes_When_NFKC_Casefolded # Lm  [11] MODIFIER LETTER CAPITAL D..MODIFIER LETTER CAPITAL N
+ 1D3C..1D4D    ; Changes_When_NFKC_Casefolded # Lm  [18] MODIFIER LETTER CAPITAL O..MODIFIER LETTER SMALL G
+ 1D4F..1D6A    ; Changes_When_NFKC_Casefolded # Lm  [28] MODIFIER LETTER SMALL K..GREEK SUBSCRIPT SMALL LETTER CHI
+ 1D78          ; Changes_When_NFKC_Casefolded # Lm       MODIFIER LETTER CYRILLIC EN
+ 1D9B..1DBF    ; Changes_When_NFKC_Casefolded # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
+ 1E00          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH RING BELOW
+ 1E02          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER B WITH DOT ABOVE
+ 1E04          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER B WITH DOT BELOW
+ 1E06          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER B WITH LINE BELOW
+ 1E08          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER C WITH CEDILLA AND ACUTE
+ 1E0A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH DOT ABOVE
+ 1E0C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH DOT BELOW
+ 1E0E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH LINE BELOW
+ 1E10          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH CEDILLA
+ 1E12          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER D WITH CIRCUMFLEX BELOW
+ 1E14          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH MACRON AND GRAVE
+ 1E16          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH MACRON AND ACUTE
+ 1E18          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX BELOW
+ 1E1A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH TILDE BELOW
+ 1E1C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CEDILLA AND BREVE
+ 1E1E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER F WITH DOT ABOVE
+ 1E20          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH MACRON
+ 1E22          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH DOT ABOVE
+ 1E24          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH DOT BELOW
+ 1E26          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH DIAERESIS
+ 1E28          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH CEDILLA
+ 1E2A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH BREVE BELOW
+ 1E2C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH TILDE BELOW
+ 1E2E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH DIAERESIS AND ACUTE
+ 1E30          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH ACUTE
+ 1E32          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH DOT BELOW
+ 1E34          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH LINE BELOW
+ 1E36          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH DOT BELOW
+ 1E38          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH DOT BELOW AND MACRON
+ 1E3A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH LINE BELOW
+ 1E3C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH CIRCUMFLEX BELOW
+ 1E3E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER M WITH ACUTE
+ 1E40          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER M WITH DOT ABOVE
+ 1E42          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER M WITH DOT BELOW
+ 1E44          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH DOT ABOVE
+ 1E46          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH DOT BELOW
+ 1E48          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH LINE BELOW
+ 1E4A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH CIRCUMFLEX BELOW
+ 1E4C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH TILDE AND ACUTE
+ 1E4E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH TILDE AND DIAERESIS
+ 1E50          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH MACRON AND GRAVE
+ 1E52          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH MACRON AND ACUTE
+ 1E54          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER P WITH ACUTE
+ 1E56          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER P WITH DOT ABOVE
+ 1E58          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOT ABOVE
+ 1E5A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOT BELOW
+ 1E5C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH DOT BELOW AND MACRON
+ 1E5E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH LINE BELOW
+ 1E60          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH DOT ABOVE
+ 1E62          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH DOT BELOW
+ 1E64          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH ACUTE AND DOT ABOVE
+ 1E66          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH CARON AND DOT ABOVE
+ 1E68          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH DOT BELOW AND DOT ABOVE
+ 1E6A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH DOT ABOVE
+ 1E6C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH DOT BELOW
+ 1E6E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH LINE BELOW
+ 1E70          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER T WITH CIRCUMFLEX BELOW
+ 1E72          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DIAERESIS BELOW
+ 1E74          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH TILDE BELOW
+ 1E76          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH CIRCUMFLEX BELOW
+ 1E78          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH TILDE AND ACUTE
+ 1E7A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH MACRON AND DIAERESIS
+ 1E7C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER V WITH TILDE
+ 1E7E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER V WITH DOT BELOW
+ 1E80          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH GRAVE
+ 1E82          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH ACUTE
+ 1E84          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH DIAERESIS
+ 1E86          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH DOT ABOVE
+ 1E88          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH DOT BELOW
+ 1E8A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER X WITH DOT ABOVE
+ 1E8C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER X WITH DIAERESIS
+ 1E8E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH DOT ABOVE
+ 1E90          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH CIRCUMFLEX
+ 1E92          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH DOT BELOW
+ 1E94          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH LINE BELOW
+ 1E9A..1E9B    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN SMALL LETTER A WITH RIGHT HALF RING..LATIN SMALL LETTER LONG S WITH DOT ABOVE
+ 1E9E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER SHARP S
+ 1EA0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH DOT BELOW
+ 1EA2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH HOOK ABOVE
+ 1EA4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND ACUTE
+ 1EA6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND GRAVE
+ 1EA8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EAA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND TILDE
+ 1EAC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH CIRCUMFLEX AND DOT BELOW
+ 1EAE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND ACUTE
+ 1EB0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND GRAVE
+ 1EB2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND HOOK ABOVE
+ 1EB4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND TILDE
+ 1EB6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER A WITH BREVE AND DOT BELOW
+ 1EB8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH DOT BELOW
+ 1EBA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH HOOK ABOVE
+ 1EBC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH TILDE
+ 1EBE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND ACUTE
+ 1EC0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND GRAVE
+ 1EC2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND HOOK ABOVE
+ 1EC4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND TILDE
+ 1EC6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND DOT BELOW
+ 1EC8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH HOOK ABOVE
+ 1ECA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER I WITH DOT BELOW
+ 1ECC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH DOT BELOW
+ 1ECE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH HOOK ABOVE
+ 1ED0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND ACUTE
+ 1ED2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND GRAVE
+ 1ED4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND HOOK ABOVE
+ 1ED6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND TILDE
+ 1ED8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH CIRCUMFLEX AND DOT BELOW
+ 1EDA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND ACUTE
+ 1EDC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND GRAVE
+ 1EDE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND HOOK ABOVE
+ 1EE0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND TILDE
+ 1EE2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH HORN AND DOT BELOW
+ 1EE4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH DOT BELOW
+ 1EE6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH HOOK ABOVE
+ 1EE8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND ACUTE
+ 1EEA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND GRAVE
+ 1EEC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND HOOK ABOVE
+ 1EEE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND TILDE
+ 1EF0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH HORN AND DOT BELOW
+ 1EF2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH GRAVE
+ 1EF4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH DOT BELOW
+ 1EF6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH HOOK ABOVE
+ 1EF8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH TILDE
+ 1EFA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER MIDDLE-WELSH LL
+ 1EFC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER MIDDLE-WELSH V
+ 1EFE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Y WITH LOOP
+ 1F08..1F0F    ; Changes_When_NFKC_Casefolded # L&   [8] GREEK CAPITAL LETTER ALPHA WITH PSILI..GREEK CAPITAL LETTER ALPHA WITH DASIA AND PERISPOMENI
+ 1F18..1F1D    ; Changes_When_NFKC_Casefolded # L&   [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
+ 1F28..1F2F    ; Changes_When_NFKC_Casefolded # L&   [8] GREEK CAPITAL LETTER ETA WITH PSILI..GREEK CAPITAL LETTER ETA WITH DASIA AND PERISPOMENI
+ 1F38..1F3F    ; Changes_When_NFKC_Casefolded # L&   [8] GREEK CAPITAL LETTER IOTA WITH PSILI..GREEK CAPITAL LETTER IOTA WITH DASIA AND PERISPOMENI
+ 1F48..1F4D    ; Changes_When_NFKC_Casefolded # L&   [6] GREEK CAPITAL LETTER OMICRON WITH PSILI..GREEK CAPITAL LETTER OMICRON WITH DASIA AND OXIA
+ 1F59          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA
+ 1F5B          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND VARIA
+ 1F5D          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND OXIA
+ 1F5F          ; Changes_When_NFKC_Casefolded # L&       GREEK CAPITAL LETTER UPSILON WITH DASIA AND PERISPOMENI
+ 1F68..1F6F    ; Changes_When_NFKC_Casefolded # L&   [8] GREEK CAPITAL LETTER OMEGA WITH PSILI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI
+ 1F71          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER ALPHA WITH OXIA
+ 1F73          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER EPSILON WITH OXIA
+ 1F75          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER ETA WITH OXIA
+ 1F77          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER IOTA WITH OXIA
+ 1F79          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER OMICRON WITH OXIA
+ 1F7B          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER UPSILON WITH OXIA
+ 1F7D          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER OMEGA WITH OXIA
+ 1F80..1FAF    ; Changes_When_NFKC_Casefolded # L&  [48] GREEK SMALL LETTER ALPHA WITH PSILI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH DASIA AND PERISPOMENI AND PROSGEGRAMMENI
+ 1FB2..1FB4    ; Changes_When_NFKC_Casefolded # L&   [3] GREEK SMALL LETTER ALPHA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ALPHA WITH OXIA AND YPOGEGRAMMENI
+ 1FB7..1FBC    ; Changes_When_NFKC_Casefolded # L&   [6] GREEK SMALL LETTER ALPHA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER ALPHA WITH PROSGEGRAMMENI
+ 1FBD          ; Changes_When_NFKC_Casefolded # Sk       GREEK KORONIS
+ 1FBE          ; Changes_When_NFKC_Casefolded # L&       GREEK PROSGEGRAMMENI
+ 1FBF..1FC1    ; Changes_When_NFKC_Casefolded # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
+ 1FC2..1FC4    ; Changes_When_NFKC_Casefolded # L&   [3] GREEK SMALL LETTER ETA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER ETA WITH OXIA AND YPOGEGRAMMENI
+ 1FC7..1FCC    ; Changes_When_NFKC_Casefolded # L&   [6] GREEK SMALL LETTER ETA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER ETA WITH PROSGEGRAMMENI
+ 1FCD..1FCF    ; Changes_When_NFKC_Casefolded # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
+ 1FD3          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+ 1FD8..1FDB    ; Changes_When_NFKC_Casefolded # L&   [4] GREEK CAPITAL LETTER IOTA WITH VRACHY..GREEK CAPITAL LETTER IOTA WITH OXIA
+ 1FDD..1FDF    ; Changes_When_NFKC_Casefolded # Sk   [3] GREEK DASIA AND VARIA..GREEK DASIA AND PERISPOMENI
+ 1FE3          ; Changes_When_NFKC_Casefolded # L&       GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+ 1FE8..1FEC    ; Changes_When_NFKC_Casefolded # L&   [5] GREEK CAPITAL LETTER UPSILON WITH VRACHY..GREEK CAPITAL LETTER RHO WITH DASIA
+ 1FED..1FEF    ; Changes_When_NFKC_Casefolded # Sk   [3] GREEK DIALYTIKA AND VARIA..GREEK VARIA
+ 1FF2..1FF4    ; Changes_When_NFKC_Casefolded # L&   [3] GREEK SMALL LETTER OMEGA WITH VARIA AND YPOGEGRAMMENI..GREEK SMALL LETTER OMEGA WITH OXIA AND YPOGEGRAMMENI
+ 1FF7..1FFC    ; Changes_When_NFKC_Casefolded # L&   [6] GREEK SMALL LETTER OMEGA WITH PERISPOMENI AND YPOGEGRAMMENI..GREEK CAPITAL LETTER OMEGA WITH PROSGEGRAMMENI
+ 1FFD..1FFE    ; Changes_When_NFKC_Casefolded # Sk   [2] GREEK OXIA..GREEK DASIA
+ 2000..200A    ; Changes_When_NFKC_Casefolded # Zs  [11] EN QUAD..HAIR SPACE
+ 200B..200F    ; Changes_When_NFKC_Casefolded # Cf   [5] ZERO WIDTH SPACE..RIGHT-TO-LEFT MARK
+ 2011          ; Changes_When_NFKC_Casefolded # Pd       NON-BREAKING HYPHEN
+ 2017          ; Changes_When_NFKC_Casefolded # Po       DOUBLE LOW LINE
+ 2024..2026    ; Changes_When_NFKC_Casefolded # Po   [3] ONE DOT LEADER..HORIZONTAL ELLIPSIS
+ 202A..202E    ; Changes_When_NFKC_Casefolded # Cf   [5] LEFT-TO-RIGHT EMBEDDING..RIGHT-TO-LEFT OVERRIDE
+ 202F          ; Changes_When_NFKC_Casefolded # Zs       NARROW NO-BREAK SPACE
+ 2033..2034    ; Changes_When_NFKC_Casefolded # Po   [2] DOUBLE PRIME..TRIPLE PRIME
+ 2036..2037    ; Changes_When_NFKC_Casefolded # Po   [2] REVERSED DOUBLE PRIME..REVERSED TRIPLE PRIME
+ 203C          ; Changes_When_NFKC_Casefolded # Po       DOUBLE EXCLAMATION MARK
+ 203E          ; Changes_When_NFKC_Casefolded # Po       OVERLINE
+ 2047..2049    ; Changes_When_NFKC_Casefolded # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
+ 2057          ; Changes_When_NFKC_Casefolded # Po       QUADRUPLE PRIME
+ 205F          ; Changes_When_NFKC_Casefolded # Zs       MEDIUM MATHEMATICAL SPACE
+ 2060..2064    ; Changes_When_NFKC_Casefolded # Cf   [5] WORD JOINER..INVISIBLE PLUS
+ 2065          ; Changes_When_NFKC_Casefolded # Cn       <reserved-2065>
+ 2066..206F    ; Changes_When_NFKC_Casefolded # Cf  [10] LEFT-TO-RIGHT ISOLATE..NOMINAL DIGIT SHAPES
+ 2070          ; Changes_When_NFKC_Casefolded # No       SUPERSCRIPT ZERO
+ 2071          ; Changes_When_NFKC_Casefolded # Lm       SUPERSCRIPT LATIN SMALL LETTER I
+ 2074..2079    ; Changes_When_NFKC_Casefolded # No   [6] SUPERSCRIPT FOUR..SUPERSCRIPT NINE
+ 207A..207C    ; Changes_When_NFKC_Casefolded # Sm   [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+ 207D          ; Changes_When_NFKC_Casefolded # Ps       SUPERSCRIPT LEFT PARENTHESIS
+ 207E          ; Changes_When_NFKC_Casefolded # Pe       SUPERSCRIPT RIGHT PARENTHESIS
+ 207F          ; Changes_When_NFKC_Casefolded # Lm       SUPERSCRIPT LATIN SMALL LETTER N
+ 2080..2089    ; Changes_When_NFKC_Casefolded # No  [10] SUBSCRIPT ZERO..SUBSCRIPT NINE
+ 208A..208C    ; Changes_When_NFKC_Casefolded # Sm   [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+ 208D          ; Changes_When_NFKC_Casefolded # Ps       SUBSCRIPT LEFT PARENTHESIS
+ 208E          ; Changes_When_NFKC_Casefolded # Pe       SUBSCRIPT RIGHT PARENTHESIS
+ 2090..209C    ; Changes_When_NFKC_Casefolded # Lm  [13] LATIN SUBSCRIPT SMALL LETTER A..LATIN SUBSCRIPT SMALL LETTER T
+ 20A8          ; Changes_When_NFKC_Casefolded # Sc       RUPEE SIGN
+ 2100..2101    ; Changes_When_NFKC_Casefolded # So   [2] ACCOUNT OF..ADDRESSED TO THE SUBJECT
+ 2102          ; Changes_When_NFKC_Casefolded # L&       DOUBLE-STRUCK CAPITAL C
+ 2103          ; Changes_When_NFKC_Casefolded # So       DEGREE CELSIUS
+ 2105..2106    ; Changes_When_NFKC_Casefolded # So   [2] CARE OF..CADA UNA
+ 2107          ; Changes_When_NFKC_Casefolded # L&       EULER CONSTANT
+ 2109          ; Changes_When_NFKC_Casefolded # So       DEGREE FAHRENHEIT
+ 210A..2113    ; Changes_When_NFKC_Casefolded # L&  [10] SCRIPT SMALL G..SCRIPT SMALL L
+ 2115          ; Changes_When_NFKC_Casefolded # L&       DOUBLE-STRUCK CAPITAL N
+ 2116          ; Changes_When_NFKC_Casefolded # So       NUMERO SIGN
+ 2119..211D    ; Changes_When_NFKC_Casefolded # L&   [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+ 2120..2122    ; Changes_When_NFKC_Casefolded # So   [3] SERVICE MARK..TRADE MARK SIGN
+ 2124          ; Changes_When_NFKC_Casefolded # L&       DOUBLE-STRUCK CAPITAL Z
+ 2126          ; Changes_When_NFKC_Casefolded # L&       OHM SIGN
+ 2128          ; Changes_When_NFKC_Casefolded # L&       BLACK-LETTER CAPITAL Z
+ 212A..212D    ; Changes_When_NFKC_Casefolded # L&   [4] KELVIN SIGN..BLACK-LETTER CAPITAL C
+ 212F..2134    ; Changes_When_NFKC_Casefolded # L&   [6] SCRIPT SMALL E..SCRIPT SMALL O
+ 2135..2138    ; Changes_When_NFKC_Casefolded # Lo   [4] ALEF SYMBOL..DALET SYMBOL
+ 2139          ; Changes_When_NFKC_Casefolded # L&       INFORMATION SOURCE
+ 213B          ; Changes_When_NFKC_Casefolded # So       FACSIMILE SIGN
+ 213C..213F    ; Changes_When_NFKC_Casefolded # L&   [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+ 2140          ; Changes_When_NFKC_Casefolded # Sm       DOUBLE-STRUCK N-ARY SUMMATION
+ 2145..2149    ; Changes_When_NFKC_Casefolded # L&   [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+ 2150..215F    ; Changes_When_NFKC_Casefolded # No  [16] VULGAR FRACTION ONE SEVENTH..FRACTION NUMERATOR ONE
+ 2160..217F    ; Changes_When_NFKC_Casefolded # Nl  [32] ROMAN NUMERAL ONE..SMALL ROMAN NUMERAL ONE THOUSAND
+ 2183          ; Changes_When_NFKC_Casefolded # L&       ROMAN NUMERAL REVERSED ONE HUNDRED
+ 2189          ; Changes_When_NFKC_Casefolded # No       VULGAR FRACTION ZERO THIRDS
+ 222C..222D    ; Changes_When_NFKC_Casefolded # Sm   [2] DOUBLE INTEGRAL..TRIPLE INTEGRAL
+ 222F..2230    ; Changes_When_NFKC_Casefolded # Sm   [2] SURFACE INTEGRAL..VOLUME INTEGRAL
+ 2329          ; Changes_When_NFKC_Casefolded # Ps       LEFT-POINTING ANGLE BRACKET
+ 232A          ; Changes_When_NFKC_Casefolded # Pe       RIGHT-POINTING ANGLE BRACKET
+ 2460..249B    ; Changes_When_NFKC_Casefolded # No  [60] CIRCLED DIGIT ONE..NUMBER TWENTY FULL STOP
+ 249C..24E9    ; Changes_When_NFKC_Casefolded # So  [78] PARENTHESIZED LATIN SMALL LETTER A..CIRCLED LATIN SMALL LETTER Z
+ 24EA          ; Changes_When_NFKC_Casefolded # No       CIRCLED DIGIT ZERO
+ 2A0C          ; Changes_When_NFKC_Casefolded # Sm       QUADRUPLE INTEGRAL OPERATOR
+ 2A74..2A76    ; Changes_When_NFKC_Casefolded # Sm   [3] DOUBLE COLON EQUAL..THREE CONSECUTIVE EQUALS SIGNS
+ 2ADC          ; Changes_When_NFKC_Casefolded # Sm       FORKING
+ 2C00..2C2F    ; Changes_When_NFKC_Casefolded # L&  [48] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI
+ 2C60          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH DOUBLE BAR
+ 2C62..2C64    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER L WITH MIDDLE TILDE..LATIN CAPITAL LETTER R WITH TAIL
+ 2C67          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER H WITH DESCENDER
+ 2C69          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH DESCENDER
+ 2C6B          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Z WITH DESCENDER
+ 2C6D..2C70    ; Changes_When_NFKC_Casefolded # L&   [4] LATIN CAPITAL LETTER ALPHA..LATIN CAPITAL LETTER TURNED ALPHA
+ 2C72          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER W WITH HOOK
+ 2C75          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER HALF H
+ 2C7C..2C7D    ; Changes_When_NFKC_Casefolded # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
+ 2C7E..2C80    ; Changes_When_NFKC_Casefolded # L&   [3] LATIN CAPITAL LETTER S WITH SWASH TAIL..COPTIC CAPITAL LETTER ALFA
+ 2C82          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER VIDA
+ 2C84          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER GAMMA
+ 2C86          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER DALDA
+ 2C88          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER EIE
+ 2C8A          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER SOU
+ 2C8C          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER ZATA
+ 2C8E          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER HATE
+ 2C90          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER THETHE
+ 2C92          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER IAUDA
+ 2C94          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER KAPA
+ 2C96          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER LAULA
+ 2C98          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER MI
+ 2C9A          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER NI
+ 2C9C          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER KSI
+ 2C9E          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER O
+ 2CA0          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER PI
+ 2CA2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER RO
+ 2CA4          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER SIMA
+ 2CA6          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER TAU
+ 2CA8          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER UA
+ 2CAA          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER FI
+ 2CAC          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER KHI
+ 2CAE          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER PSI
+ 2CB0          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OOU
+ 2CB2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P ALEF
+ 2CB4          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC AIN
+ 2CB6          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC EIE
+ 2CB8          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P KAPA
+ 2CBA          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P NI
+ 2CBC          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC NI
+ 2CBE          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC OOU
+ 2CC0          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER SAMPI
+ 2CC2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER CROSSED SHEI
+ 2CC4          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC SHEI
+ 2CC6          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC ESH
+ 2CC8          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER AKHMIMIC KHEI
+ 2CCA          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER DIALECT-P HORI
+ 2CCC          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HORI
+ 2CCE          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HA
+ 2CD0          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER L-SHAPED HA
+ 2CD2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HEI
+ 2CD4          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC HAT
+ 2CD6          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC GANGIA
+ 2CD8          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC DJA
+ 2CDA          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD COPTIC SHIMA
+ 2CDC          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN SHIMA
+ 2CDE          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN NGI
+ 2CE0          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN NYI
+ 2CE2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER OLD NUBIAN WAU
+ 2CEB          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC SHEI
+ 2CED          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER CRYPTOGRAMMIC GANGIA
+ 2CF2          ; Changes_When_NFKC_Casefolded # L&       COPTIC CAPITAL LETTER BOHAIRIC KHEI
+ 2D6F          ; Changes_When_NFKC_Casefolded # Lm       TIFINAGH MODIFIER LETTER LABIALIZATION MARK
+ 2E9F          ; Changes_When_NFKC_Casefolded # So       CJK RADICAL MOTHER
+ 2EF3          ; Changes_When_NFKC_Casefolded # So       CJK RADICAL C-SIMPLIFIED TURTLE
+ 2F00..2FD5    ; Changes_When_NFKC_Casefolded # So [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
+ 3000          ; Changes_When_NFKC_Casefolded # Zs       IDEOGRAPHIC SPACE
+ 3036          ; Changes_When_NFKC_Casefolded # So       CIRCLED POSTAL MARK
+ 3038..303A    ; Changes_When_NFKC_Casefolded # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
+ 309B..309C    ; Changes_When_NFKC_Casefolded # Sk   [2] KATAKANA-HIRAGANA VOICED SOUND MARK..KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK
+ 309F          ; Changes_When_NFKC_Casefolded # Lo       HIRAGANA DIGRAPH YORI
+ 30FF          ; Changes_When_NFKC_Casefolded # Lo       KATAKANA DIGRAPH KOTO
+ 3131..318E    ; Changes_When_NFKC_Casefolded # Lo  [94] HANGUL LETTER KIYEOK..HANGUL LETTER ARAEAE
+ 3192..3195    ; Changes_When_NFKC_Casefolded # No   [4] IDEOGRAPHIC ANNOTATION ONE MARK..IDEOGRAPHIC ANNOTATION FOUR MARK
+ 3196..319F    ; Changes_When_NFKC_Casefolded # So  [10] IDEOGRAPHIC ANNOTATION TOP MARK..IDEOGRAPHIC ANNOTATION MAN MARK
+ 3200..321E    ; Changes_When_NFKC_Casefolded # So  [31] PARENTHESIZED HANGUL KIYEOK..PARENTHESIZED KOREAN CHARACTER O HU
+ 3220..3229    ; Changes_When_NFKC_Casefolded # No  [10] PARENTHESIZED IDEOGRAPH ONE..PARENTHESIZED IDEOGRAPH TEN
+ 322A..3247    ; Changes_When_NFKC_Casefolded # So  [30] PARENTHESIZED IDEOGRAPH MOON..CIRCLED IDEOGRAPH KOTO
+ 3250          ; Changes_When_NFKC_Casefolded # So       PARTNERSHIP SIGN
+ 3251..325F    ; Changes_When_NFKC_Casefolded # No  [15] CIRCLED NUMBER TWENTY ONE..CIRCLED NUMBER THIRTY FIVE
+ 3260..327E    ; Changes_When_NFKC_Casefolded # So  [31] CIRCLED HANGUL KIYEOK..CIRCLED HANGUL IEUNG U
+ 3280..3289    ; Changes_When_NFKC_Casefolded # No  [10] CIRCLED IDEOGRAPH ONE..CIRCLED IDEOGRAPH TEN
+ 328A..32B0    ; Changes_When_NFKC_Casefolded # So  [39] CIRCLED IDEOGRAPH MOON..CIRCLED IDEOGRAPH NIGHT
+ 32B1..32BF    ; Changes_When_NFKC_Casefolded # No  [15] CIRCLED NUMBER THIRTY SIX..CIRCLED NUMBER FIFTY
+ 32C0..33FF    ; Changes_When_NFKC_Casefolded # So [320] IDEOGRAPHIC TELEGRAPH SYMBOL FOR JANUARY..SQUARE GAL
+ A640          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ZEMLYA
+ A642          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DZELO
+ A644          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED DZE
+ A646          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTA
+ A648          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DJERV
+ A64A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER MONOGRAPH UK
+ A64C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BROAD OMEGA
+ A64E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER NEUTRAL YER
+ A650          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER YERU WITH BACK YER
+ A652          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED YAT
+ A654          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED YU
+ A656          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED A
+ A658          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER CLOSED LITTLE YUS
+ A65A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BLENDED YUS
+ A65C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER IOTIFIED CLOSED LITTLE YUS
+ A65E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER YN
+ A660          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER REVERSED TSE
+ A662          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SOFT DE
+ A664          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SOFT EL
+ A666          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SOFT EM
+ A668          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER MONOCULAR O
+ A66A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER BINOCULAR O
+ A66C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DOUBLE MONOCULAR O
+ A680          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DWE
+ A682          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DZWE
+ A684          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER ZHWE
+ A686          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER CCHE
+ A688          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DZZE
+ A68A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER TE WITH MIDDLE HOOK
+ A68C          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER TWE
+ A68E          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER TSWE
+ A690          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER TSSE
+ A692          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER TCHE
+ A694          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER HWE
+ A696          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER SHWE
+ A698          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER DOUBLE O
+ A69A          ; Changes_When_NFKC_Casefolded # L&       CYRILLIC CAPITAL LETTER CROSSED O
+ A69C..A69D    ; Changes_When_NFKC_Casefolded # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
+ A722          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL ALEF
+ A724          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER EGYPTOLOGICAL AIN
+ A726          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER HENG
+ A728          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER TZ
+ A72A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER TRESILLO
+ A72C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER CUATRILLO
+ A72E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER CUATRILLO WITH COMMA
+ A732          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AA
+ A734          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AO
+ A736          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AU
+ A738          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AV
+ A73A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AV WITH HORIZONTAL BAR
+ A73C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER AY
+ A73E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER REVERSED C WITH DOT
+ A740          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH STROKE
+ A742          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH DIAGONAL STROKE
+ A744          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH STROKE AND DIAGONAL STROKE
+ A746          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER BROKEN L
+ A748          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER L WITH HIGH STROKE
+ A74A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH LONG STROKE OVERLAY
+ A74C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER O WITH LOOP
+ A74E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER OO
+ A750          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER P WITH STROKE THROUGH DESCENDER
+ A752          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER P WITH FLOURISH
+ A754          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER P WITH SQUIRREL TAIL
+ A756          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Q WITH STROKE THROUGH DESCENDER
+ A758          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER Q WITH DIAGONAL STROKE
+ A75A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R ROTUNDA
+ A75C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER RUM ROTUNDA
+ A75E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER V WITH DIAGONAL STROKE
+ A760          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER VY
+ A762          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER VISIGOTHIC Z
+ A764          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER THORN WITH STROKE
+ A766          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER THORN WITH STROKE THROUGH DESCENDER
+ A768          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER VEND
+ A76A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER ET
+ A76C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER IS
+ A76E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER CON
+ A770          ; Changes_When_NFKC_Casefolded # Lm       MODIFIER LETTER US
+ A779          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER INSULAR D
+ A77B          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER INSULAR F
+ A77D..A77E    ; Changes_When_NFKC_Casefolded # L&   [2] LATIN CAPITAL LETTER INSULAR G..LATIN CAPITAL LETTER TURNED INSULAR G
+ A780          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER TURNED L
+ A782          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER INSULAR R
+ A784          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER INSULAR S
+ A786          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER INSULAR T
+ A78B          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER SALTILLO
+ A78D          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER TURNED H
+ A790          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH DESCENDER
+ A792          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER C WITH BAR
+ A796          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER B WITH FLOURISH
+ A798          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER F WITH STROKE
+ A79A          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER VOLAPUK AE
+ A79C          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER VOLAPUK OE
+ A79E          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER VOLAPUK UE
+ A7A0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER G WITH OBLIQUE STROKE
+ A7A2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER K WITH OBLIQUE STROKE
+ A7A4          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER N WITH OBLIQUE STROKE
+ A7A6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER R WITH OBLIQUE STROKE
+ A7A8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH OBLIQUE STROKE
+ A7AA..A7AE    ; Changes_When_NFKC_Casefolded # L&   [5] LATIN CAPITAL LETTER H WITH HOOK..LATIN CAPITAL LETTER SMALL CAPITAL I
+ A7B0..A7B4    ; Changes_When_NFKC_Casefolded # L&   [5] LATIN CAPITAL LETTER TURNED K..LATIN CAPITAL LETTER BETA
+ A7B6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER OMEGA
+ A7B8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER U WITH STROKE
+ A7BA          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL A
+ A7BC          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL I
+ A7BE          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER GLOTTAL U
+ A7C0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER OLD POLISH O
+ A7C2          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER ANGLICANA W
+ A7C4..A7C7    ; Changes_When_NFKC_Casefolded # L&   [4] LATIN CAPITAL LETTER C WITH PALATAL HOOK..LATIN CAPITAL LETTER D WITH SHORT STROKE OVERLAY
+ A7C9          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY
+ A7D0          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER CLOSED INSULAR G
+ A7D6          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER MIDDLE SCOTS S
+ A7D8          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER SIGMOID S
+ A7F2..A7F4    ; Changes_When_NFKC_Casefolded # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
+ A7F5          ; Changes_When_NFKC_Casefolded # L&       LATIN CAPITAL LETTER REVERSED HALF H
+ A7F8..A7F9    ; Changes_When_NFKC_Casefolded # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
+ AB5C..AB5F    ; Changes_When_NFKC_Casefolded # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; Changes_When_NFKC_Casefolded # Lm       MODIFIER LETTER SMALL TURNED W
+ AB70..ABBF    ; Changes_When_NFKC_Casefolded # L&  [80] CHEROKEE SMALL LETTER A..CHEROKEE SMALL LETTER YA
+ F900..FA0D    ; Changes_When_NFKC_Casefolded # Lo [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+ FA10          ; Changes_When_NFKC_Casefolded # Lo       CJK COMPATIBILITY IDEOGRAPH-FA10
+ FA12          ; Changes_When_NFKC_Casefolded # Lo       CJK COMPATIBILITY IDEOGRAPH-FA12
+ FA15..FA1E    ; Changes_When_NFKC_Casefolded # Lo  [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+ FA20          ; Changes_When_NFKC_Casefolded # Lo       CJK COMPATIBILITY IDEOGRAPH-FA20
+ FA22          ; Changes_When_NFKC_Casefolded # Lo       CJK COMPATIBILITY IDEOGRAPH-FA22
+ FA25..FA26    ; Changes_When_NFKC_Casefolded # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+ FA2A..FA6D    ; Changes_When_NFKC_Casefolded # Lo  [68] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA6D
+ FA70..FAD9    ; Changes_When_NFKC_Casefolded # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+ FB00..FB06    ; Changes_When_NFKC_Casefolded # L&   [7] LATIN SMALL LIGATURE FF..LATIN SMALL LIGATURE ST
+ FB13..FB17    ; Changes_When_NFKC_Casefolded # L&   [5] ARMENIAN SMALL LIGATURE MEN NOW..ARMENIAN SMALL LIGATURE MEN XEH
+ FB1D          ; Changes_When_NFKC_Casefolded # Lo       HEBREW LETTER YOD WITH HIRIQ
+ FB1F..FB28    ; Changes_When_NFKC_Casefolded # Lo  [10] HEBREW LIGATURE YIDDISH YOD YOD PATAH..HEBREW LETTER WIDE TAV
+ FB29          ; Changes_When_NFKC_Casefolded # Sm       HEBREW LETTER ALTERNATIVE PLUS SIGN
+ FB2A..FB36    ; Changes_When_NFKC_Casefolded # Lo  [13] HEBREW LETTER SHIN WITH SHIN DOT..HEBREW LETTER ZAYIN WITH DAGESH
+ FB38..FB3C    ; Changes_When_NFKC_Casefolded # Lo   [5] HEBREW LETTER TET WITH DAGESH..HEBREW LETTER LAMED WITH DAGESH
+ FB3E          ; Changes_When_NFKC_Casefolded # Lo       HEBREW LETTER MEM WITH DAGESH
+ FB40..FB41    ; Changes_When_NFKC_Casefolded # Lo   [2] HEBREW LETTER NUN WITH DAGESH..HEBREW LETTER SAMEKH WITH DAGESH
+ FB43..FB44    ; Changes_When_NFKC_Casefolded # Lo   [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
+ FB46..FBB1    ; Changes_When_NFKC_Casefolded # Lo [108] HEBREW LETTER TSADI WITH DAGESH..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
+ FBD3..FD3D    ; Changes_When_NFKC_Casefolded # Lo [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
+ FD50..FD8F    ; Changes_When_NFKC_Casefolded # Lo  [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
+ FD92..FDC7    ; Changes_When_NFKC_Casefolded # Lo  [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDF0..FDFB    ; Changes_When_NFKC_Casefolded # Lo  [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
+ FDFC          ; Changes_When_NFKC_Casefolded # Sc       RIAL SIGN
+ FE00..FE0F    ; Changes_When_NFKC_Casefolded # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
+ FE10..FE16    ; Changes_When_NFKC_Casefolded # Po   [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
+ FE17          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
+ FE18          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRAKCET
+ FE19          ; Changes_When_NFKC_Casefolded # Po       PRESENTATION FORM FOR VERTICAL HORIZONTAL ELLIPSIS
+ FE30          ; Changes_When_NFKC_Casefolded # Po       PRESENTATION FORM FOR VERTICAL TWO DOT LEADER
+ FE31..FE32    ; Changes_When_NFKC_Casefolded # Pd   [2] PRESENTATION FORM FOR VERTICAL EM DASH..PRESENTATION FORM FOR VERTICAL EN DASH
+ FE33..FE34    ; Changes_When_NFKC_Casefolded # Pc   [2] PRESENTATION FORM FOR VERTICAL LOW LINE..PRESENTATION FORM FOR VERTICAL WAVY LOW LINE
+ FE35          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT PARENTHESIS
+ FE36          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT PARENTHESIS
+ FE37          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT CURLY BRACKET
+ FE38          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CURLY BRACKET
+ FE39          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT TORTOISE SHELL BRACKET
+ FE3A          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT TORTOISE SHELL BRACKET
+ FE3B          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT BLACK LENTICULAR BRACKET
+ FE3C          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT BLACK LENTICULAR BRACKET
+ FE3D          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT DOUBLE ANGLE BRACKET
+ FE3E          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT DOUBLE ANGLE BRACKET
+ FE3F          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT ANGLE BRACKET
+ FE40          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT ANGLE BRACKET
+ FE41          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT CORNER BRACKET
+ FE42          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT CORNER BRACKET
+ FE43          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT WHITE CORNER BRACKET
+ FE44          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT WHITE CORNER BRACKET
+ FE47          ; Changes_When_NFKC_Casefolded # Ps       PRESENTATION FORM FOR VERTICAL LEFT SQUARE BRACKET
+ FE48          ; Changes_When_NFKC_Casefolded # Pe       PRESENTATION FORM FOR VERTICAL RIGHT SQUARE BRACKET
+ FE49..FE4C    ; Changes_When_NFKC_Casefolded # Po   [4] DASHED OVERLINE..DOUBLE WAVY OVERLINE
+ FE4D..FE4F    ; Changes_When_NFKC_Casefolded # Pc   [3] DASHED LOW LINE..WAVY LOW LINE
+ FE50..FE52    ; Changes_When_NFKC_Casefolded # Po   [3] SMALL COMMA..SMALL FULL STOP
+ FE54..FE57    ; Changes_When_NFKC_Casefolded # Po   [4] SMALL SEMICOLON..SMALL EXCLAMATION MARK
+ FE58          ; Changes_When_NFKC_Casefolded # Pd       SMALL EM DASH
+ FE59          ; Changes_When_NFKC_Casefolded # Ps       SMALL LEFT PARENTHESIS
+ FE5A          ; Changes_When_NFKC_Casefolded # Pe       SMALL RIGHT PARENTHESIS
+ FE5B          ; Changes_When_NFKC_Casefolded # Ps       SMALL LEFT CURLY BRACKET
+ FE5C          ; Changes_When_NFKC_Casefolded # Pe       SMALL RIGHT CURLY BRACKET
+ FE5D          ; Changes_When_NFKC_Casefolded # Ps       SMALL LEFT TORTOISE SHELL BRACKET
+ FE5E          ; Changes_When_NFKC_Casefolded # Pe       SMALL RIGHT TORTOISE SHELL BRACKET
+ FE5F..FE61    ; Changes_When_NFKC_Casefolded # Po   [3] SMALL NUMBER SIGN..SMALL ASTERISK
+ FE62          ; Changes_When_NFKC_Casefolded # Sm       SMALL PLUS SIGN
+ FE63          ; Changes_When_NFKC_Casefolded # Pd       SMALL HYPHEN-MINUS
+ FE64..FE66    ; Changes_When_NFKC_Casefolded # Sm   [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+ FE68          ; Changes_When_NFKC_Casefolded # Po       SMALL REVERSE SOLIDUS
+ FE69          ; Changes_When_NFKC_Casefolded # Sc       SMALL DOLLAR SIGN
+ FE6A..FE6B    ; Changes_When_NFKC_Casefolded # Po   [2] SMALL PERCENT SIGN..SMALL COMMERCIAL AT
+ FE70..FE72    ; Changes_When_NFKC_Casefolded # Lo   [3] ARABIC FATHATAN ISOLATED FORM..ARABIC DAMMATAN ISOLATED FORM
+ FE74          ; Changes_When_NFKC_Casefolded # Lo       ARABIC KASRATAN ISOLATED FORM
+ FE76..FEFC    ; Changes_When_NFKC_Casefolded # Lo [135] ARABIC FATHA ISOLATED FORM..ARABIC LIGATURE LAM WITH ALEF FINAL FORM
+ FEFF          ; Changes_When_NFKC_Casefolded # Cf       ZERO WIDTH NO-BREAK SPACE
+ FF01..FF03    ; Changes_When_NFKC_Casefolded # Po   [3] FULLWIDTH EXCLAMATION MARK..FULLWIDTH NUMBER SIGN
+ FF04          ; Changes_When_NFKC_Casefolded # Sc       FULLWIDTH DOLLAR SIGN
+ FF05..FF07    ; Changes_When_NFKC_Casefolded # Po   [3] FULLWIDTH PERCENT SIGN..FULLWIDTH APOSTROPHE
+ FF08          ; Changes_When_NFKC_Casefolded # Ps       FULLWIDTH LEFT PARENTHESIS
+ FF09          ; Changes_When_NFKC_Casefolded # Pe       FULLWIDTH RIGHT PARENTHESIS
+ FF0A          ; Changes_When_NFKC_Casefolded # Po       FULLWIDTH ASTERISK
+ FF0B          ; Changes_When_NFKC_Casefolded # Sm       FULLWIDTH PLUS SIGN
+ FF0C          ; Changes_When_NFKC_Casefolded # Po       FULLWIDTH COMMA
+ FF0D          ; Changes_When_NFKC_Casefolded # Pd       FULLWIDTH HYPHEN-MINUS
+ FF0E..FF0F    ; Changes_When_NFKC_Casefolded # Po   [2] FULLWIDTH FULL STOP..FULLWIDTH SOLIDUS
+ FF10..FF19    ; Changes_When_NFKC_Casefolded # Nd  [10] FULLWIDTH DIGIT ZERO..FULLWIDTH DIGIT NINE
+ FF1A..FF1B    ; Changes_When_NFKC_Casefolded # Po   [2] FULLWIDTH COLON..FULLWIDTH SEMICOLON
+ FF1C..FF1E    ; Changes_When_NFKC_Casefolded # Sm   [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+ FF1F..FF20    ; Changes_When_NFKC_Casefolded # Po   [2] FULLWIDTH QUESTION MARK..FULLWIDTH COMMERCIAL AT
+ FF21..FF3A    ; Changes_When_NFKC_Casefolded # L&  [26] FULLWIDTH LATIN CAPITAL LETTER A..FULLWIDTH LATIN CAPITAL LETTER Z
+ FF3B          ; Changes_When_NFKC_Casefolded # Ps       FULLWIDTH LEFT SQUARE BRACKET
+ FF3C          ; Changes_When_NFKC_Casefolded # Po       FULLWIDTH REVERSE SOLIDUS
+ FF3D          ; Changes_When_NFKC_Casefolded # Pe       FULLWIDTH RIGHT SQUARE BRACKET
+ FF3E          ; Changes_When_NFKC_Casefolded # Sk       FULLWIDTH CIRCUMFLEX ACCENT
+ FF3F          ; Changes_When_NFKC_Casefolded # Pc       FULLWIDTH LOW LINE
+ FF40          ; Changes_When_NFKC_Casefolded # Sk       FULLWIDTH GRAVE ACCENT
+ FF41..FF5A    ; Changes_When_NFKC_Casefolded # L&  [26] FULLWIDTH LATIN SMALL LETTER A..FULLWIDTH LATIN SMALL LETTER Z
+ FF5B          ; Changes_When_NFKC_Casefolded # Ps       FULLWIDTH LEFT CURLY BRACKET
+ FF5C          ; Changes_When_NFKC_Casefolded # Sm       FULLWIDTH VERTICAL LINE
+ FF5D          ; Changes_When_NFKC_Casefolded # Pe       FULLWIDTH RIGHT CURLY BRACKET
+ FF5E          ; Changes_When_NFKC_Casefolded # Sm       FULLWIDTH TILDE
+ FF5F          ; Changes_When_NFKC_Casefolded # Ps       FULLWIDTH LEFT WHITE PARENTHESIS
+ FF60          ; Changes_When_NFKC_Casefolded # Pe       FULLWIDTH RIGHT WHITE PARENTHESIS
+ FF61          ; Changes_When_NFKC_Casefolded # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
+ FF62          ; Changes_When_NFKC_Casefolded # Ps       HALFWIDTH LEFT CORNER BRACKET
+ FF63          ; Changes_When_NFKC_Casefolded # Pe       HALFWIDTH RIGHT CORNER BRACKET
+ FF64..FF65    ; Changes_When_NFKC_Casefolded # Po   [2] HALFWIDTH IDEOGRAPHIC COMMA..HALFWIDTH KATAKANA MIDDLE DOT
+ FF66..FF6F    ; Changes_When_NFKC_Casefolded # Lo  [10] HALFWIDTH KATAKANA LETTER WO..HALFWIDTH KATAKANA LETTER SMALL TU
+ FF70          ; Changes_When_NFKC_Casefolded # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ FF71..FF9D    ; Changes_When_NFKC_Casefolded # Lo  [45] HALFWIDTH KATAKANA LETTER A..HALFWIDTH KATAKANA LETTER N
+ FF9E..FF9F    ; Changes_When_NFKC_Casefolded # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
+ FFA0..FFBE    ; Changes_When_NFKC_Casefolded # Lo  [31] HALFWIDTH HANGUL FILLER..HALFWIDTH HANGUL LETTER HIEUH
+ FFC2..FFC7    ; Changes_When_NFKC_Casefolded # Lo   [6] HALFWIDTH HANGUL LETTER A..HALFWIDTH HANGUL LETTER E
+ FFCA..FFCF    ; Changes_When_NFKC_Casefolded # Lo   [6] HALFWIDTH HANGUL LETTER YEO..HALFWIDTH HANGUL LETTER OE
+ FFD2..FFD7    ; Changes_When_NFKC_Casefolded # Lo   [6] HALFWIDTH HANGUL LETTER YO..HALFWIDTH HANGUL LETTER YU
+ FFDA..FFDC    ; Changes_When_NFKC_Casefolded # Lo   [3] HALFWIDTH HANGUL LETTER EU..HALFWIDTH HANGUL LETTER I
+ FFE0..FFE1    ; Changes_When_NFKC_Casefolded # Sc   [2] FULLWIDTH CENT SIGN..FULLWIDTH POUND SIGN
+ FFE2          ; Changes_When_NFKC_Casefolded # Sm       FULLWIDTH NOT SIGN
+ FFE3          ; Changes_When_NFKC_Casefolded # Sk       FULLWIDTH MACRON
+ FFE4          ; Changes_When_NFKC_Casefolded # So       FULLWIDTH BROKEN BAR
+ FFE5..FFE6    ; Changes_When_NFKC_Casefolded # Sc   [2] FULLWIDTH YEN SIGN..FULLWIDTH WON SIGN
+ FFE8          ; Changes_When_NFKC_Casefolded # So       HALFWIDTH FORMS LIGHT VERTICAL
+ FFE9..FFEC    ; Changes_When_NFKC_Casefolded # Sm   [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+ FFED..FFEE    ; Changes_When_NFKC_Casefolded # So   [2] HALFWIDTH BLACK SQUARE..HALFWIDTH WHITE CIRCLE
+ FFF0..FFF8    ; Changes_When_NFKC_Casefolded # Cn   [9] <reserved-FFF0>..<reserved-FFF8>
+ 10400..10427  ; Changes_When_NFKC_Casefolded # L&  [40] DESERET CAPITAL LETTER LONG I..DESERET CAPITAL LETTER EW
+ 104B0..104D3  ; Changes_When_NFKC_Casefolded # L&  [36] OSAGE CAPITAL LETTER A..OSAGE CAPITAL LETTER ZHA
+ 10570..1057A  ; Changes_When_NFKC_Casefolded # L&  [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A  ; Changes_When_NFKC_Casefolded # L&  [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592  ; Changes_When_NFKC_Casefolded # L&   [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595  ; Changes_When_NFKC_Casefolded # L&   [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10781..10785  ; Changes_When_NFKC_Casefolded # Lm   [5] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Changes_When_NFKC_Casefolded # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Changes_When_NFKC_Casefolded # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 10C80..10CB2  ; Changes_When_NFKC_Casefolded # L&  [51] OLD HUNGARIAN CAPITAL LETTER A..OLD HUNGARIAN CAPITAL LETTER US
+ 118A0..118BF  ; Changes_When_NFKC_Casefolded # L&  [32] WARANG CITI CAPITAL LETTER NGAA..WARANG CITI CAPITAL LETTER VIYO
+ 16E40..16E5F  ; Changes_When_NFKC_Casefolded # L&  [32] MEDEFAIDRIN CAPITAL LETTER M..MEDEFAIDRIN CAPITAL LETTER Y
+ 1BCA0..1BCA3  ; Changes_When_NFKC_Casefolded # Cf   [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ 1D15E..1D164  ; Changes_When_NFKC_Casefolded # So   [7] MUSICAL SYMBOL HALF NOTE..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+ 1D173..1D17A  ; Changes_When_NFKC_Casefolded # Cf   [8] MUSICAL SYMBOL BEGIN BEAM..MUSICAL SYMBOL END PHRASE
+ 1D1BB..1D1C0  ; Changes_When_NFKC_Casefolded # So   [6] MUSICAL SYMBOL MINIMA..MUSICAL SYMBOL FUSA BLACK
+ 1D400..1D454  ; Changes_When_NFKC_Casefolded # L&  [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+ 1D456..1D49C  ; Changes_When_NFKC_Casefolded # L&  [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+ 1D49E..1D49F  ; Changes_When_NFKC_Casefolded # L&   [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+ 1D4A2         ; Changes_When_NFKC_Casefolded # L&       MATHEMATICAL SCRIPT CAPITAL G
+ 1D4A5..1D4A6  ; Changes_When_NFKC_Casefolded # L&   [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+ 1D4A9..1D4AC  ; Changes_When_NFKC_Casefolded # L&   [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+ 1D4AE..1D4B9  ; Changes_When_NFKC_Casefolded # L&  [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+ 1D4BB         ; Changes_When_NFKC_Casefolded # L&       MATHEMATICAL SCRIPT SMALL F
+ 1D4BD..1D4C3  ; Changes_When_NFKC_Casefolded # L&   [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+ 1D4C5..1D505  ; Changes_When_NFKC_Casefolded # L&  [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+ 1D507..1D50A  ; Changes_When_NFKC_Casefolded # L&   [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+ 1D50D..1D514  ; Changes_When_NFKC_Casefolded # L&   [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+ 1D516..1D51C  ; Changes_When_NFKC_Casefolded # L&   [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+ 1D51E..1D539  ; Changes_When_NFKC_Casefolded # L&  [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+ 1D53B..1D53E  ; Changes_When_NFKC_Casefolded # L&   [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+ 1D540..1D544  ; Changes_When_NFKC_Casefolded # L&   [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+ 1D546         ; Changes_When_NFKC_Casefolded # L&       MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+ 1D54A..1D550  ; Changes_When_NFKC_Casefolded # L&   [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+ 1D552..1D6A5  ; Changes_When_NFKC_Casefolded # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+ 1D6A8..1D6C0  ; Changes_When_NFKC_Casefolded # L&  [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+ 1D6C1         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL BOLD NABLA
+ 1D6C2..1D6DA  ; Changes_When_NFKC_Casefolded # L&  [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+ 1D6DB         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+ 1D6DC..1D6FA  ; Changes_When_NFKC_Casefolded # L&  [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+ 1D6FB         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL ITALIC NABLA
+ 1D6FC..1D714  ; Changes_When_NFKC_Casefolded # L&  [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+ 1D715         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+ 1D716..1D734  ; Changes_When_NFKC_Casefolded # L&  [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+ 1D735         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL BOLD ITALIC NABLA
+ 1D736..1D74E  ; Changes_When_NFKC_Casefolded # L&  [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+ 1D74F         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D750..1D76E  ; Changes_When_NFKC_Casefolded # L&  [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+ 1D76F         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL SANS-SERIF BOLD NABLA
+ 1D770..1D788  ; Changes_When_NFKC_Casefolded # L&  [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+ 1D789         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+ 1D78A..1D7A8  ; Changes_When_NFKC_Casefolded # L&  [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+ 1D7A9         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+ 1D7AA..1D7C2  ; Changes_When_NFKC_Casefolded # L&  [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+ 1D7C3         ; Changes_When_NFKC_Casefolded # Sm       MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+ 1D7C4..1D7CB  ; Changes_When_NFKC_Casefolded # L&   [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+ 1D7CE..1D7FF  ; Changes_When_NFKC_Casefolded # Nd  [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+ 1E030..1E06D  ; Changes_When_NFKC_Casefolded # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E900..1E921  ; Changes_When_NFKC_Casefolded # L&  [34] ADLAM CAPITAL LETTER ALIF..ADLAM CAPITAL LETTER SHA
+ 1EE00..1EE03  ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC MATHEMATICAL ALEF..ARABIC MATHEMATICAL DAL
+ 1EE05..1EE1F  ; Changes_When_NFKC_Casefolded # Lo  [27] ARABIC MATHEMATICAL WAW..ARABIC MATHEMATICAL DOTLESS QAF
+ 1EE21..1EE22  ; Changes_When_NFKC_Casefolded # Lo   [2] ARABIC MATHEMATICAL INITIAL BEH..ARABIC MATHEMATICAL INITIAL JEEM
+ 1EE24         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL INITIAL HEH
+ 1EE27         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL INITIAL HAH
+ 1EE29..1EE32  ; Changes_When_NFKC_Casefolded # Lo  [10] ARABIC MATHEMATICAL INITIAL YEH..ARABIC MATHEMATICAL INITIAL QAF
+ 1EE34..1EE37  ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC MATHEMATICAL INITIAL SHEEN..ARABIC MATHEMATICAL INITIAL KHAH
+ 1EE39         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL INITIAL DAD
+ 1EE3B         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL INITIAL GHAIN
+ 1EE42         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED JEEM
+ 1EE47         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED HAH
+ 1EE49         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED YEH
+ 1EE4B         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED LAM
+ 1EE4D..1EE4F  ; Changes_When_NFKC_Casefolded # Lo   [3] ARABIC MATHEMATICAL TAILED NOON..ARABIC MATHEMATICAL TAILED AIN
+ 1EE51..1EE52  ; Changes_When_NFKC_Casefolded # Lo   [2] ARABIC MATHEMATICAL TAILED SAD..ARABIC MATHEMATICAL TAILED QAF
+ 1EE54         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED SHEEN
+ 1EE57         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED KHAH
+ 1EE59         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED DAD
+ 1EE5B         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED GHAIN
+ 1EE5D         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED DOTLESS NOON
+ 1EE5F         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL TAILED DOTLESS QAF
+ 1EE61..1EE62  ; Changes_When_NFKC_Casefolded # Lo   [2] ARABIC MATHEMATICAL STRETCHED BEH..ARABIC MATHEMATICAL STRETCHED JEEM
+ 1EE64         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL STRETCHED HEH
+ 1EE67..1EE6A  ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC MATHEMATICAL STRETCHED HAH..ARABIC MATHEMATICAL STRETCHED KAF
+ 1EE6C..1EE72  ; Changes_When_NFKC_Casefolded # Lo   [7] ARABIC MATHEMATICAL STRETCHED MEEM..ARABIC MATHEMATICAL STRETCHED QAF
+ 1EE74..1EE77  ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC MATHEMATICAL STRETCHED SHEEN..ARABIC MATHEMATICAL STRETCHED KHAH
+ 1EE79..1EE7C  ; Changes_When_NFKC_Casefolded # Lo   [4] ARABIC MATHEMATICAL STRETCHED DAD..ARABIC MATHEMATICAL STRETCHED DOTLESS BEH
+ 1EE7E         ; Changes_When_NFKC_Casefolded # Lo       ARABIC MATHEMATICAL STRETCHED DOTLESS FEH
+ 1EE80..1EE89  ; Changes_When_NFKC_Casefolded # Lo  [10] ARABIC MATHEMATICAL LOOPED ALEF..ARABIC MATHEMATICAL LOOPED YEH
+ 1EE8B..1EE9B  ; Changes_When_NFKC_Casefolded # Lo  [17] ARABIC MATHEMATICAL LOOPED LAM..ARABIC MATHEMATICAL LOOPED GHAIN
+ 1EEA1..1EEA3  ; Changes_When_NFKC_Casefolded # Lo   [3] ARABIC MATHEMATICAL DOUBLE-STRUCK BEH..ARABIC MATHEMATICAL DOUBLE-STRUCK DAL
+ 1EEA5..1EEA9  ; Changes_When_NFKC_Casefolded # Lo   [5] ARABIC MATHEMATICAL DOUBLE-STRUCK WAW..ARABIC MATHEMATICAL DOUBLE-STRUCK YEH
+ 1EEAB..1EEBB  ; Changes_When_NFKC_Casefolded # Lo  [17] ARABIC MATHEMATICAL DOUBLE-STRUCK LAM..ARABIC MATHEMATICAL DOUBLE-STRUCK GHAIN
+ 1F100..1F10A  ; Changes_When_NFKC_Casefolded # No  [11] DIGIT ZERO FULL STOP..DIGIT NINE COMMA
+ 1F110..1F12E  ; Changes_When_NFKC_Casefolded # So  [31] PARENTHESIZED LATIN CAPITAL LETTER A..CIRCLED WZ
+ 1F130..1F14F  ; Changes_When_NFKC_Casefolded # So  [32] SQUARED LATIN CAPITAL LETTER A..SQUARED WC
+ 1F16A..1F16C  ; Changes_When_NFKC_Casefolded # So   [3] RAISED MC SIGN..RAISED MR SIGN
+ 1F190         ; Changes_When_NFKC_Casefolded # So       SQUARE DJ
+ 1F200..1F202  ; Changes_When_NFKC_Casefolded # So   [3] SQUARE HIRAGANA HOKA..SQUARED KATAKANA SA
+ 1F210..1F23B  ; Changes_When_NFKC_Casefolded # So  [44] SQUARED CJK UNIFIED IDEOGRAPH-624B..SQUARED CJK UNIFIED IDEOGRAPH-914D
+ 1F240..1F248  ; Changes_When_NFKC_Casefolded # So   [9] TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-672C..TORTOISE SHELL BRACKETED CJK UNIFIED IDEOGRAPH-6557
+ 1F250..1F251  ; Changes_When_NFKC_Casefolded # So   [2] CIRCLED IDEOGRAPH ADVANTAGE..CIRCLED IDEOGRAPH ACCEPT
+ 1FBF0..1FBF9  ; Changes_When_NFKC_Casefolded # Nd  [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
+ 2F800..2FA1D  ; Changes_When_NFKC_Casefolded # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+ E0000         ; Changes_When_NFKC_Casefolded # Cn       <reserved-E0000>
+ E0001         ; Changes_When_NFKC_Casefolded # Cf       LANGUAGE TAG
+ E0002..E001F  ; Changes_When_NFKC_Casefolded # Cn  [30] <reserved-E0002>..<reserved-E001F>
+ E0020..E007F  ; Changes_When_NFKC_Casefolded # Cf  [96] TAG SPACE..CANCEL TAG
+ E0080..E00FF  ; Changes_When_NFKC_Casefolded # Cn [128] <reserved-E0080>..<reserved-E00FF>
+ E0100..E01EF  ; Changes_When_NFKC_Casefolded # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
+ E01F0..E0FFF  ; Changes_When_NFKC_Casefolded # Cn [3600] <reserved-E01F0>..<reserved-E0FFF>
+ 
+ # Total code points: 10491
+ 
+ # EOF
diff -Nrcpad gcc-12.2.0/contrib/unicode/EastAsianWidth.txt gcc-13.1.0/contrib/unicode/EastAsianWidth.txt
*** gcc-12.2.0/contrib/unicode/EastAsianWidth.txt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unicode/EastAsianWidth.txt	Wed Apr 26 07:09:39 2023
***************
*** 1,11 ****
! # EastAsianWidth-13.0.0.txt
! # Date: 2029-01-21, 18:14:00 GMT [KW, LI]
! # © 2020 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
! # For terms of use, see http://www.unicode.org/terms_of_use.html
  #
  # Unicode Character Database
! # For documentation, see http://www.unicode.org/reports/tr44/
  #
  # East_Asian_Width Property
  #
--- 1,11 ----
! # EastAsianWidth-15.0.0.txt
! # Date: 2022-05-24, 17:40:20 GMT [KW, LI]
! # © 2022 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
! # For terms of use, see https://www.unicode.org/terms_of_use.html
  #
  # Unicode Character Database
! # For documentation, see https://www.unicode.org/reports/tr44/
  #
  # East_Asian_Width Property
  #
***************
*** 37,43 ****
  # with ranges of code points, the code point count in square brackets.
  #
  # For more information, see UAX #11: East Asian Width,
! # at http://www.unicode.org/reports/tr11/
  #
  # @missing: 0000..10FFFF; N
  0000..001F;N     # Cc    [32] <control-0000>..<control-001F>
--- 37,43 ----
  # with ranges of code points, the code point count in square brackets.
  #
  # For more information, see UAX #11: East Asian Width,
! # at https://www.unicode.org/reports/tr11/
  #
  # @missing: 0000..10FFFF; N
  0000..001F;N     # Cc    [32] <control-0000>..<control-001F>
***************
*** 273,279 ****
  0610..061A;N     # Mn    [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
  061B;N           # Po         ARABIC SEMICOLON
  061C;N           # Cf         ARABIC LETTER MARK
! 061E..061F;N     # Po     [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
  0620..063F;N     # Lo    [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
  0640;N           # Lm         ARABIC TATWEEL
  0641..064A;N     # Lo    [10] ARABIC LETTER FEH..ARABIC LETTER YEH
--- 273,279 ----
  0610..061A;N     # Mn    [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
  061B;N           # Po         ARABIC SEMICOLON
  061C;N           # Cf         ARABIC LETTER MARK
! 061D..061F;N     # Po     [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
  0620..063F;N     # Lo    [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
  0640;N           # Lm         ARABIC TATWEEL
  0641..064A;N     # Lo    [10] ARABIC LETTER FEH..ARABIC LETTER YEH
***************
*** 331,339 ****
  0859..085B;N     # Mn     [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
  085E;N           # Po         MANDAIC PUNCTUATION
  0860..086A;N     # Lo    [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
! 08A0..08B4;N     # Lo    [21] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER KAF WITH DOT BELOW
! 08B6..08C7;N     # Lo    [18] ARABIC LETTER BEH WITH SMALL MEEM ABOVE..ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE
! 08D3..08E1;N     # Mn    [15] ARABIC SMALL LOW WAW..ARABIC SMALL HIGH SIGN SAFHA
  08E2;N           # Cf         ARABIC DISPUTED END OF AYAH
  08E3..08FF;N     # Mn    [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
  0900..0902;N     # Mn     [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
--- 331,344 ----
  0859..085B;N     # Mn     [3] MANDAIC AFFRICATION MARK..MANDAIC GEMINATION MARK
  085E;N           # Po         MANDAIC PUNCTUATION
  0860..086A;N     # Lo    [11] SYRIAC LETTER MALAYALAM NGA..SYRIAC LETTER MALAYALAM SSA
! 0870..0887;N     # Lo    [24] ARABIC LETTER ALEF WITH ATTACHED FATHA..ARABIC BASELINE ROUND DOT
! 0888;N           # Sk         ARABIC RAISED ROUND DOT
! 0889..088E;N     # Lo     [6] ARABIC LETTER NOON WITH INVERTED SMALL V..ARABIC VERTICAL TAIL
! 0890..0891;N     # Cf     [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
! 0898..089F;N     # Mn     [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
! 08A0..08C8;N     # Lo    [41] ARABIC LETTER BEH WITH SMALL V BELOW..ARABIC LETTER GRAF
! 08C9;N           # Lm         ARABIC SMALL FARSI YEH
! 08CA..08E1;N     # Mn    [24] ARABIC SMALL HIGH FARSI YEH..ARABIC SMALL HIGH SIGN SAFHA
  08E2;N           # Cf         ARABIC DISPUTED END OF AYAH
  08E3..08FF;N     # Mn    [29] ARABIC TURNED DAMMA BELOW..ARABIC MARK SIDEWAYS NOON GHUNNA
  0900..0902;N     # Mn     [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
***************
*** 490,495 ****
--- 495,501 ----
  0C0E..0C10;N     # Lo     [3] TELUGU LETTER E..TELUGU LETTER AI
  0C12..0C28;N     # Lo    [23] TELUGU LETTER O..TELUGU LETTER NA
  0C2A..0C39;N     # Lo    [16] TELUGU LETTER PA..TELUGU LETTER HA
+ 0C3C;N           # Mn         TELUGU SIGN NUKTA
  0C3D;N           # Lo         TELUGU SIGN AVAGRAHA
  0C3E..0C40;N     # Mn     [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
  0C41..0C44;N     # Mc     [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
***************
*** 497,502 ****
--- 503,509 ----
  0C4A..0C4D;N     # Mn     [4] TELUGU VOWEL SIGN O..TELUGU SIGN VIRAMA
  0C55..0C56;N     # Mn     [2] TELUGU LENGTH MARK..TELUGU AI LENGTH MARK
  0C58..0C5A;N     # Lo     [3] TELUGU LETTER TSA..TELUGU LETTER RRRA
+ 0C5D;N           # Lo         TELUGU LETTER NAKAARA POLLU
  0C60..0C61;N     # Lo     [2] TELUGU LETTER VOCALIC RR..TELUGU LETTER VOCALIC LL
  0C62..0C63;N     # Mn     [2] TELUGU VOWEL SIGN VOCALIC L..TELUGU VOWEL SIGN VOCALIC LL
  0C66..0C6F;N     # Nd    [10] TELUGU DIGIT ZERO..TELUGU DIGIT NINE
***************
*** 522,532 ****
  0CCA..0CCB;N     # Mc     [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
  0CCC..0CCD;N     # Mn     [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
  0CD5..0CD6;N     # Mc     [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
! 0CDE;N           # Lo         KANNADA LETTER FA
  0CE0..0CE1;N     # Lo     [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
  0CE2..0CE3;N     # Mn     [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
  0CE6..0CEF;N     # Nd    [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
  0CF1..0CF2;N     # Lo     [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
  0D00..0D01;N     # Mn     [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
  0D02..0D03;N     # Mc     [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
  0D04..0D0C;N     # Lo     [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
--- 529,540 ----
  0CCA..0CCB;N     # Mc     [2] KANNADA VOWEL SIGN O..KANNADA VOWEL SIGN OO
  0CCC..0CCD;N     # Mn     [2] KANNADA VOWEL SIGN AU..KANNADA SIGN VIRAMA
  0CD5..0CD6;N     # Mc     [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
! 0CDD..0CDE;N     # Lo     [2] KANNADA LETTER NAKAARA POLLU..KANNADA LETTER FA
  0CE0..0CE1;N     # Lo     [2] KANNADA LETTER VOCALIC RR..KANNADA LETTER VOCALIC LL
  0CE2..0CE3;N     # Mn     [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
  0CE6..0CEF;N     # Nd    [10] KANNADA DIGIT ZERO..KANNADA DIGIT NINE
  0CF1..0CF2;N     # Lo     [2] KANNADA SIGN JIHVAMULIYA..KANNADA SIGN UPADHMANIYA
+ 0CF3;N           # Mc         KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
  0D00..0D01;N     # Mn     [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
  0D02..0D03;N     # Mc     [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
  0D04..0D0C;N     # Lo     [9] MALAYALAM LETTER VEDIC ANUSVARA..MALAYALAM LETTER VOCALIC L
***************
*** 588,594 ****
  0EBD;N           # Lo         LAO SEMIVOWEL SIGN NYO
  0EC0..0EC4;N     # Lo     [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
  0EC6;N           # Lm         LAO KO LA
! 0EC8..0ECD;N     # Mn     [6] LAO TONE MAI EK..LAO NIGGAHITA
  0ED0..0ED9;N     # Nd    [10] LAO DIGIT ZERO..LAO DIGIT NINE
  0EDC..0EDF;N     # Lo     [4] LAO HO NO..LAO LETTER KHMU NYO
  0F00;N           # Lo         TIBETAN SYLLABLE OM
--- 596,602 ----
  0EBD;N           # Lo         LAO SEMIVOWEL SIGN NYO
  0EC0..0EC4;N     # Lo     [5] LAO VOWEL SIGN E..LAO VOWEL SIGN AI
  0EC6;N           # Lm         LAO KO LA
! 0EC8..0ECE;N     # Mn     [7] LAO TONE MAI EK..LAO YAMAKKAN
  0ED0..0ED9;N     # Nd    [10] LAO DIGIT ZERO..LAO DIGIT NINE
  0EDC..0EDF;N     # Lo     [4] LAO HO NO..LAO LETTER KHMU NYO
  0F00;N           # Lo         TIBETAN SYLLABLE OM
***************
*** 709,719 ****
  16EB..16ED;N     # Po     [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
  16EE..16F0;N     # Nl     [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
  16F1..16F8;N     # Lo     [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
! 1700..170C;N     # Lo    [13] TAGALOG LETTER A..TAGALOG LETTER YA
! 170E..1711;N     # Lo     [4] TAGALOG LETTER LA..TAGALOG LETTER HA
  1712..1714;N     # Mn     [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
  1720..1731;N     # Lo    [18] HANUNOO LETTER A..HANUNOO LETTER HA
! 1732..1734;N     # Mn     [3] HANUNOO VOWEL SIGN I..HANUNOO SIGN PAMUDPOD
  1735..1736;N     # Po     [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
  1740..1751;N     # Lo    [18] BUHID LETTER A..BUHID LETTER HA
  1752..1753;N     # Mn     [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
--- 717,729 ----
  16EB..16ED;N     # Po     [3] RUNIC SINGLE PUNCTUATION..RUNIC CROSS PUNCTUATION
  16EE..16F0;N     # Nl     [3] RUNIC ARLAUG SYMBOL..RUNIC BELGTHOR SYMBOL
  16F1..16F8;N     # Lo     [8] RUNIC LETTER K..RUNIC LETTER FRANKS CASKET AESC
! 1700..1711;N     # Lo    [18] TAGALOG LETTER A..TAGALOG LETTER HA
  1712..1714;N     # Mn     [3] TAGALOG VOWEL SIGN I..TAGALOG SIGN VIRAMA
+ 1715;N           # Mc         TAGALOG SIGN PAMUDPOD
+ 171F;N           # Lo         TAGALOG LETTER ARCHAIC RA
  1720..1731;N     # Lo    [18] HANUNOO LETTER A..HANUNOO LETTER HA
! 1732..1733;N     # Mn     [2] HANUNOO VOWEL SIGN I..HANUNOO VOWEL SIGN U
! 1734;N           # Mc         HANUNOO SIGN PAMUDPOD
  1735..1736;N     # Po     [2] PHILIPPINE SINGLE PUNCTUATION..PHILIPPINE DOUBLE PUNCTUATION
  1740..1751;N     # Lo    [18] BUHID LETTER A..BUHID LETTER HA
  1752..1753;N     # Mn     [2] BUHID VOWEL SIGN I..BUHID VOWEL SIGN U
***************
*** 741,746 ****
--- 751,757 ----
  1807..180A;N     # Po     [4] MONGOLIAN SIBE SYLLABLE BOUNDARY MARKER..MONGOLIAN NIRUGU
  180B..180D;N     # Mn     [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
  180E;N           # Cf         MONGOLIAN VOWEL SEPARATOR
+ 180F;N           # Mn         MONGOLIAN FREE VARIATION SELECTOR FOUR
  1810..1819;N     # Nd    [10] MONGOLIAN DIGIT ZERO..MONGOLIAN DIGIT NINE
  1820..1842;N     # Lo    [35] MONGOLIAN LETTER A..MONGOLIAN LETTER CHI
  1843;N           # Lm         MONGOLIAN LETTER TODO LONG VOWEL SIGN
***************
*** 796,802 ****
  1AA8..1AAD;N     # Po     [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
  1AB0..1ABD;N     # Mn    [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
  1ABE;N           # Me         COMBINING PARENTHESES OVERLAY
! 1ABF..1AC0;N     # Mn     [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
  1B00..1B03;N     # Mn     [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
  1B04;N           # Mc         BALINESE SIGN BISAH
  1B05..1B33;N     # Lo    [47] BALINESE LETTER AKARA..BALINESE LETTER HA
--- 807,813 ----
  1AA8..1AAD;N     # Po     [6] TAI THAM SIGN KAAN..TAI THAM SIGN CAANG
  1AB0..1ABD;N     # Mn    [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
  1ABE;N           # Me         COMBINING PARENTHESES OVERLAY
! 1ABF..1ACE;N     # Mn    [16] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER INSULAR T
  1B00..1B03;N     # Mn     [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
  1B04;N           # Mc         BALINESE SIGN BISAH
  1B05..1B33;N     # Lo    [47] BALINESE LETTER AKARA..BALINESE LETTER HA
***************
*** 808,819 ****
  1B3D..1B41;N     # Mc     [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
  1B42;N           # Mn         BALINESE VOWEL SIGN PEPET
  1B43..1B44;N     # Mc     [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
! 1B45..1B4B;N     # Lo     [7] BALINESE LETTER KAF SASAK..BALINESE LETTER ASYURA SASAK
  1B50..1B59;N     # Nd    [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
  1B5A..1B60;N     # Po     [7] BALINESE PANTI..BALINESE PAMENENG
  1B61..1B6A;N     # So    [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
  1B6B..1B73;N     # Mn     [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
  1B74..1B7C;N     # So     [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
  1B80..1B81;N     # Mn     [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
  1B82;N           # Mc         SUNDANESE SIGN PANGWISAD
  1B83..1BA0;N     # Lo    [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
--- 819,831 ----
  1B3D..1B41;N     # Mc     [5] BALINESE VOWEL SIGN LA LENGA TEDUNG..BALINESE VOWEL SIGN TALING REPA TEDUNG
  1B42;N           # Mn         BALINESE VOWEL SIGN PEPET
  1B43..1B44;N     # Mc     [2] BALINESE VOWEL SIGN PEPET TEDUNG..BALINESE ADEG ADEG
! 1B45..1B4C;N     # Lo     [8] BALINESE LETTER KAF SASAK..BALINESE LETTER ARCHAIC JNYA
  1B50..1B59;N     # Nd    [10] BALINESE DIGIT ZERO..BALINESE DIGIT NINE
  1B5A..1B60;N     # Po     [7] BALINESE PANTI..BALINESE PAMENENG
  1B61..1B6A;N     # So    [10] BALINESE MUSICAL SYMBOL DONG..BALINESE MUSICAL SYMBOL DANG GEDE
  1B6B..1B73;N     # Mn     [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
  1B74..1B7C;N     # So     [9] BALINESE MUSICAL SYMBOL RIGHT-HAND OPEN DUG..BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING
+ 1B7D..1B7E;N     # Po     [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
  1B80..1B81;N     # Mn     [2] SUNDANESE SIGN PANYECEK..SUNDANESE SIGN PANGLAYAR
  1B82;N           # Mc         SUNDANESE SIGN PANGWISAD
  1B83..1BA0;N     # Lo    [30] SUNDANESE LETTER A..SUNDANESE LETTER HA
***************
*** 872,879 ****
  1D79..1D7F;N     # Ll     [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE
  1D80..1D9A;N     # Ll    [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
  1D9B..1DBF;N     # Lm    [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
! 1DC0..1DF9;N     # Mn    [58] COMBINING DOTTED GRAVE ACCENT..COMBINING WIDE INVERTED BRIDGE BELOW
! 1DFB..1DFF;N     # Mn     [5] COMBINING DELETION MARK..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
  1E00..1EFF;N     # L&   [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
  1F00..1F15;N     # L&    [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
  1F18..1F1D;N     # Lu     [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
--- 884,890 ----
  1D79..1D7F;N     # Ll     [7] LATIN SMALL LETTER INSULAR G..LATIN SMALL LETTER UPSILON WITH STROKE
  1D80..1D9A;N     # Ll    [27] LATIN SMALL LETTER B WITH PALATAL HOOK..LATIN SMALL LETTER EZH WITH RETROFLEX HOOK
  1D9B..1DBF;N     # Lm    [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
! 1DC0..1DFF;N     # Mn    [64] COMBINING DOTTED GRAVE ACCENT..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
  1E00..1EFF;N     # L&   [256] LATIN CAPITAL LETTER A WITH RING BELOW..LATIN SMALL LETTER Y WITH LOOP
  1F00..1F15;N     # L&    [22] GREEK SMALL LETTER ALPHA WITH PSILI..GREEK SMALL LETTER EPSILON WITH DASIA AND OXIA
  1F18..1F1D;N     # Lu     [6] GREEK CAPITAL LETTER EPSILON WITH PSILI..GREEK CAPITAL LETTER EPSILON WITH DASIA AND OXIA
***************
*** 965,971 ****
  20A9;H           # Sc         WON SIGN
  20AA..20AB;N     # Sc     [2] NEW SHEQEL SIGN..DONG SIGN
  20AC;A           # Sc         EURO SIGN
! 20AD..20BF;N     # Sc    [19] KIP SIGN..BITCOIN SIGN
  20D0..20DC;N     # Mn    [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
  20DD..20E0;N     # Me     [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
  20E1;N           # Mn         COMBINING LEFT RIGHT ARROW ABOVE
--- 976,982 ----
  20A9;H           # Sc         WON SIGN
  20AA..20AB;N     # Sc     [2] NEW SHEQEL SIGN..DONG SIGN
  20AC;A           # Sc         EURO SIGN
! 20AD..20C0;N     # Sc    [20] KIP SIGN..SOM SIGN
  20D0..20DC;N     # Mn    [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
  20DD..20E0;N     # Me     [4] COMBINING ENCLOSING CIRCLE..COMBINING ENCLOSING CIRCLE BACKSLASH
  20E1;N           # Mn         COMBINING LEFT RIGHT ARROW ABOVE
***************
*** 1338,1345 ****
  2B5A..2B73;N     # So    [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
  2B76..2B95;N     # So    [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
  2B97..2BFF;N     # So   [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL
! 2C00..2C2E;N     # Lu    [47] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE
! 2C30..2C5E;N     # Ll    [47] GLAGOLITIC SMALL LETTER AZU..GLAGOLITIC SMALL LETTER LATINATE MYSLITE
  2C60..2C7B;N     # L&    [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E
  2C7C..2C7D;N     # Lm     [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
  2C7E..2C7F;N     # Lu     [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL
--- 1349,1355 ----
  2B5A..2B73;N     # So    [26] SLANTED NORTH ARROW WITH HOOKED HEAD..DOWNWARDS TRIANGLE-HEADED ARROW TO BAR
  2B76..2B95;N     # So    [32] NORTH WEST TRIANGLE-HEADED ARROW TO BAR..RIGHTWARDS BLACK ARROW
  2B97..2BFF;N     # So   [105] SYMBOL FOR TYPE A ELECTRONICS..HELLSCHREIBER PAUSE SYMBOL
! 2C00..2C5F;N     # L&    [96] GLAGOLITIC CAPITAL LETTER AZU..GLAGOLITIC SMALL LETTER CAUDATE CHRIVI
  2C60..2C7B;N     # L&    [28] LATIN CAPITAL LETTER L WITH DOUBLE BAR..LATIN LETTER SMALL CAPITAL TURNED E
  2C7C..2C7D;N     # Lm     [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
  2C7E..2C7F;N     # Lu     [2] LATIN CAPITAL LETTER S WITH SWASH TAIL..LATIN CAPITAL LETTER Z WITH SWASH TAIL
***************
*** 1407,1413 ****
  2E42;N           # Ps         DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F;N     # Po    [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
  2E50..2E51;N     # So     [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
! 2E52;N           # Po         TIRONIAN SIGN CAPITAL ET
  2E80..2E99;W     # So    [26] CJK RADICAL REPEAT..CJK RADICAL RAP
  2E9B..2EF3;W     # So    [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
  2F00..2FD5;W     # So   [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
--- 1417,1432 ----
  2E42;N           # Ps         DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F;N     # Po    [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
  2E50..2E51;N     # So     [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
! 2E52..2E54;N     # Po     [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK
! 2E55;N           # Ps         LEFT SQUARE BRACKET WITH STROKE
! 2E56;N           # Pe         RIGHT SQUARE BRACKET WITH STROKE
! 2E57;N           # Ps         LEFT SQUARE BRACKET WITH DOUBLE STROKE
! 2E58;N           # Pe         RIGHT SQUARE BRACKET WITH DOUBLE STROKE
! 2E59;N           # Ps         TOP HALF LEFT PARENTHESIS
! 2E5A;N           # Pe         TOP HALF RIGHT PARENTHESIS
! 2E5B;N           # Ps         BOTTOM HALF LEFT PARENTHESIS
! 2E5C;N           # Pe         BOTTOM HALF RIGHT PARENTHESIS
! 2E5D;N           # Pd         OBLIQUE HYPHEN
  2E80..2E99;W     # So    [26] CJK RADICAL REPEAT..CJK RADICAL RAP
  2E9B..2EF3;W     # So    [89] CJK RADICAL CHOKE..CJK RADICAL C-SIMPLIFIED TURTLE
  2F00..2FD5;W     # So   [214] KANGXI RADICAL ONE..KANGXI RADICAL FLUTE
***************
*** 1485,1492 ****
  3300..33FF;W     # So   [256] SQUARE APAATO..SQUARE GAL
  3400..4DBF;W     # Lo  [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
  4DC0..4DFF;N     # So    [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
! 4E00..9FFC;W     # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
! 9FFD..9FFF;W     # Cn     [3] <reserved-9FFD>..<reserved-9FFF>
  A000..A014;W     # Lo    [21] YI SYLLABLE IT..YI SYLLABLE E
  A015;W           # Lm         YI SYLLABLE WU
  A016..A48C;W     # Lo  [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
--- 1504,1510 ----
  3300..33FF;W     # So   [256] SQUARE APAATO..SQUARE GAL
  3400..4DBF;W     # Lo  [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
  4DC0..4DFF;N     # So    [64] HEXAGRAM FOR THE CREATIVE HEAVEN..HEXAGRAM FOR BEFORE COMPLETION
! 4E00..9FFF;W     # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
  A000..A014;W     # Lo    [21] YI SYLLABLE IT..YI SYLLABLE E
  A015;W           # Lm         YI SYLLABLE WU
  A016..A48C;W     # Lo  [1143] YI SYLLABLE BIT..YI SYLLABLE YYR
*************** A788;N           # Lm         MODIFIER L
*** 1525,1532 ****
  A789..A78A;N     # Sk     [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
  A78B..A78E;N     # L&     [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
  A78F;N           # Lo         LATIN LETTER SINOLOGICAL DOT
! A790..A7BF;N     # L&    [48] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER GLOTTAL U
! A7C2..A7CA;N     # L&     [9] LATIN CAPITAL LETTER ANGLICANA W..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
  A7F5..A7F6;N     # L&     [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
  A7F7;N           # Lo         LATIN EPIGRAPHIC LETTER SIDEWAYS I
  A7F8..A7F9;N     # Lm     [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
--- 1543,1553 ----
  A789..A78A;N     # Sk     [2] MODIFIER LETTER COLON..MODIFIER LETTER SHORT EQUALS SIGN
  A78B..A78E;N     # L&     [4] LATIN CAPITAL LETTER SALTILLO..LATIN SMALL LETTER L WITH RETROFLEX HOOK AND BELT
  A78F;N           # Lo         LATIN LETTER SINOLOGICAL DOT
! A790..A7CA;N     # L&    [59] LATIN CAPITAL LETTER N WITH DESCENDER..LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY
! A7D0..A7D1;N     # L&     [2] LATIN CAPITAL LETTER CLOSED INSULAR G..LATIN SMALL LETTER CLOSED INSULAR G
! A7D3;N           # Ll         LATIN SMALL LETTER DOUBLE THORN
! A7D5..A7D9;N     # L&     [5] LATIN SMALL LETTER DOUBLE WYNN..LATIN SMALL LETTER SIGMOID S
! A7F2..A7F4;N     # Lm     [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
  A7F5..A7F6;N     # L&     [2] LATIN CAPITAL LETTER REVERSED HALF H..LATIN SMALL LETTER REVERSED HALF H
  A7F7;N           # Lo         LATIN EPIGRAPHIC LETTER SIDEWAYS I
  A7F8..A7F9;N     # Lm     [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
*************** FB40..FB41;N     # Lo     [2] HEBREW LET
*** 1682,1696 ****
  FB43..FB44;N     # Lo     [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
  FB46..FB4F;N     # Lo    [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
  FB50..FBB1;N     # Lo    [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
! FBB2..FBC1;N     # Sk    [16] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL SMALL TAH BELOW
  FBD3..FD3D;N     # Lo   [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
  FD3E;N           # Pe         ORNATE LEFT PARENTHESIS
  FD3F;N           # Ps         ORNATE RIGHT PARENTHESIS
  FD50..FD8F;N     # Lo    [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
  FD92..FDC7;N     # Lo    [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
  FDF0..FDFB;N     # Lo    [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
  FDFC;N           # Sc         RIAL SIGN
! FDFD;N           # So         ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM
  FE00..FE0F;A     # Mn    [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
  FE10..FE16;W     # Po     [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
  FE17;W           # Ps         PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
--- 1703,1719 ----
  FB43..FB44;N     # Lo     [2] HEBREW LETTER FINAL PE WITH DAGESH..HEBREW LETTER PE WITH DAGESH
  FB46..FB4F;N     # Lo    [10] HEBREW LETTER TSADI WITH DAGESH..HEBREW LIGATURE ALEF LAMED
  FB50..FBB1;N     # Lo    [98] ARABIC LETTER ALEF WASLA ISOLATED FORM..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE FINAL FORM
! FBB2..FBC2;N     # Sk    [17] ARABIC SYMBOL DOT ABOVE..ARABIC SYMBOL WASLA ABOVE
  FBD3..FD3D;N     # Lo   [363] ARABIC LETTER NG ISOLATED FORM..ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM
  FD3E;N           # Pe         ORNATE LEFT PARENTHESIS
  FD3F;N           # Ps         ORNATE RIGHT PARENTHESIS
+ FD40..FD4F;N     # So    [16] ARABIC LIGATURE RAHIMAHU ALLAAH..ARABIC LIGATURE RAHIMAHUM ALLAAH
  FD50..FD8F;N     # Lo    [64] ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM..ARABIC LIGATURE MEEM WITH KHAH WITH MEEM INITIAL FORM
  FD92..FDC7;N     # Lo    [54] ARABIC LIGATURE MEEM WITH JEEM WITH KHAH INITIAL FORM..ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM
+ FDCF;N           # So         ARABIC LIGATURE SALAAMUHU ALAYNAA
  FDF0..FDFB;N     # Lo    [12] ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM..ARABIC LIGATURE JALLAJALALOUHOU
  FDFC;N           # Sc         RIAL SIGN
! FDFD..FDFF;N     # So     [3] ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM..ARABIC LIGATURE AZZA WA JALL
  FE00..FE0F;A     # Mn    [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
  FE10..FE16;W     # Po     [7] PRESENTATION FORM FOR VERTICAL COMMA..PRESENTATION FORM FOR VERTICAL QUESTION MARK
  FE17;W           # Ps         PRESENTATION FORM FOR VERTICAL LEFT WHITE LENTICULAR BRACKET
*************** FFFD;A           # So         REPLACEMEN
*** 1839,1847 ****
--- 1862,1881 ----
  10500..10527;N   # Lo    [40] ELBASAN LETTER A..ELBASAN LETTER KHE
  10530..10563;N   # Lo    [52] CAUCASIAN ALBANIAN LETTER ALT..CAUCASIAN ALBANIAN LETTER KIW
  1056F;N          # Po         CAUCASIAN ALBANIAN CITATION MARK
+ 10570..1057A;N   # Lu    [11] VITHKUQI CAPITAL LETTER A..VITHKUQI CAPITAL LETTER GA
+ 1057C..1058A;N   # Lu    [15] VITHKUQI CAPITAL LETTER HA..VITHKUQI CAPITAL LETTER RE
+ 1058C..10592;N   # Lu     [7] VITHKUQI CAPITAL LETTER SE..VITHKUQI CAPITAL LETTER XE
+ 10594..10595;N   # Lu     [2] VITHKUQI CAPITAL LETTER Y..VITHKUQI CAPITAL LETTER ZE
+ 10597..105A1;N   # Ll    [11] VITHKUQI SMALL LETTER A..VITHKUQI SMALL LETTER GA
+ 105A3..105B1;N   # Ll    [15] VITHKUQI SMALL LETTER HA..VITHKUQI SMALL LETTER RE
+ 105B3..105B9;N   # Ll     [7] VITHKUQI SMALL LETTER SE..VITHKUQI SMALL LETTER XE
+ 105BB..105BC;N   # Ll     [2] VITHKUQI SMALL LETTER Y..VITHKUQI SMALL LETTER ZE
  10600..10736;N   # Lo   [311] LINEAR A SIGN AB001..LINEAR A SIGN A664
  10740..10755;N   # Lo    [22] LINEAR A SIGN A701 A..LINEAR A SIGN A732 JE
  10760..10767;N   # Lo     [8] LINEAR A SIGN A800..LINEAR A SIGN A807
+ 10780..10785;N   # Lm     [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0;N   # Lm    [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA;N   # Lm     [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
  10800..10805;N   # Lo     [6] CYPRIOT SYLLABLE A..CYPRIOT SYLLABLE JA
  10808;N          # Lo         CYPRIOT SYLLABLE JO
  1080A..10835;N   # Lo    [44] CYPRIOT SYLLABLE KA..CYPRIOT SYLLABLE WO
*************** FFFD;A           # So         REPLACEMEN
*** 1913,1918 ****
--- 1947,1953 ----
  10EAB..10EAC;N   # Mn     [2] YEZIDI COMBINING HAMZA MARK..YEZIDI COMBINING MADDA MARK
  10EAD;N          # Pd         YEZIDI HYPHENATION MARK
  10EB0..10EB1;N   # Lo     [2] YEZIDI LETTER LAM WITH DOT ABOVE..YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE
+ 10EFD..10EFF;N   # Mn     [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
  10F00..10F1C;N   # Lo    [29] OLD SOGDIAN LETTER ALEPH..OLD SOGDIAN LETTER FINAL TAW WITH VERTICAL TAIL
  10F1D..10F26;N   # No    [10] OLD SOGDIAN NUMBER ONE..OLD SOGDIAN FRACTION ONE HALF
  10F27;N          # Lo         OLD SOGDIAN LIGATURE AYIN-DALETH
*************** FFFD;A           # So         REPLACEMEN
*** 1920,1925 ****
--- 1955,1963 ----
  10F46..10F50;N   # Mn    [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
  10F51..10F54;N   # No     [4] SOGDIAN NUMBER ONE..SOGDIAN NUMBER ONE HUNDRED
  10F55..10F59;N   # Po     [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+ 10F70..10F81;N   # Lo    [18] OLD UYGHUR LETTER ALEPH..OLD UYGHUR LETTER LESH
+ 10F82..10F85;N   # Mn     [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+ 10F86..10F89;N   # Po     [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
  10FB0..10FC4;N   # Lo    [21] CHORASMIAN LETTER ALEPH..CHORASMIAN LETTER TAW
  10FC5..10FCB;N   # No     [7] CHORASMIAN NUMBER ONE..CHORASMIAN NUMBER ONE HUNDRED
  10FE0..10FF6;N   # Lo    [23] ELYMAIC LETTER ALEPH..ELYMAIC LIGATURE ZAYIN-YODH
*************** FFFD;A           # So         REPLACEMEN
*** 1931,1936 ****
--- 1969,1978 ----
  11047..1104D;N   # Po     [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
  11052..11065;N   # No    [20] BRAHMI NUMBER ONE..BRAHMI NUMBER ONE THOUSAND
  11066..1106F;N   # Nd    [10] BRAHMI DIGIT ZERO..BRAHMI DIGIT NINE
+ 11070;N          # Mn         BRAHMI SIGN OLD TAMIL VIRAMA
+ 11071..11072;N   # Lo     [2] BRAHMI LETTER OLD TAMIL SHORT E..BRAHMI LETTER OLD TAMIL SHORT O
+ 11073..11074;N   # Mn     [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 11075;N          # Lo         BRAHMI LETTER OLD TAMIL LLA
  1107F;N          # Mn         BRAHMI NUMBER JOINER
  11080..11081;N   # Mn     [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA
  11082;N          # Mc         KAITHI SIGN VISARGA
*************** FFFD;A           # So         REPLACEMEN
*** 1942,1947 ****
--- 1984,1990 ----
  110BB..110BC;N   # Po     [2] KAITHI ABBREVIATION SIGN..KAITHI ENUMERATION SIGN
  110BD;N          # Cf         KAITHI NUMBER SIGN
  110BE..110C1;N   # Po     [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
+ 110C2;N          # Mn         KAITHI VOWEL SIGN VOCALIC R
  110CD;N          # Cf         KAITHI NUMBER SIGN ABOVE
  110D0..110E8;N   # Lo    [25] SORA SOMPENG LETTER SAH..SORA SOMPENG LETTER MAE
  110F0..110F9;N   # Nd    [10] SORA SOMPENG DIGIT ZERO..SORA SOMPENG DIGIT NINE
*************** FFFD;A           # So         REPLACEMEN
*** 1987,1992 ****
--- 2030,2037 ----
  11236..11237;N   # Mn     [2] KHOJKI SIGN NUKTA..KHOJKI SIGN SHADDA
  11238..1123D;N   # Po     [6] KHOJKI DANDA..KHOJKI ABBREVIATION SIGN
  1123E;N          # Mn         KHOJKI SIGN SUKUN
+ 1123F..11240;N   # Lo     [2] KHOJKI LETTER QA..KHOJKI LETTER SHORT I
+ 11241;N          # Mn         KHOJKI VOWEL SIGN VOCALIC R
  11280..11286;N   # Lo     [7] MULTANI LETTER A..MULTANI LETTER GA
  11288;N          # Lo         MULTANI LETTER GHA
  1128A..1128D;N   # Lo     [4] MULTANI LETTER CA..MULTANI LETTER JJA
*************** FFFD;A           # So         REPLACEMEN
*** 2076,2081 ****
--- 2121,2127 ----
  116B6;N          # Mc         TAKRI SIGN VIRAMA
  116B7;N          # Mn         TAKRI SIGN NUKTA
  116B8;N          # Lo         TAKRI LETTER ARCHAIC KHA
+ 116B9;N          # Po         TAKRI ABBREVIATION SIGN
  116C0..116C9;N   # Nd    [10] TAKRI DIGIT ZERO..TAKRI DIGIT NINE
  11700..1171A;N   # Lo    [27] AHOM LETTER KA..AHOM LETTER ALTERNATE BA
  1171D..1171F;N   # Mn     [3] AHOM CONSONANT SIGN MEDIAL LA..AHOM CONSONANT SIGN MEDIAL LIGATING RA
*************** FFFD;A           # So         REPLACEMEN
*** 2087,2092 ****
--- 2133,2139 ----
  1173A..1173B;N   # No     [2] AHOM NUMBER TEN..AHOM NUMBER TWENTY
  1173C..1173E;N   # Po     [3] AHOM SIGN SMALL SECTION..AHOM SIGN RULAI
  1173F;N          # So         AHOM SYMBOL VI
+ 11740..11746;N   # Lo     [7] AHOM LETTER CA..AHOM LETTER LLA
  11800..1182B;N   # Lo    [44] DOGRA LETTER A..DOGRA LETTER RRA
  1182C..1182E;N   # Mc     [3] DOGRA VOWEL SIGN AA..DOGRA VOWEL SIGN II
  1182F..11837;N   # Mn     [9] DOGRA VOWEL SIGN U..DOGRA SIGN ANUSVARA
*************** FFFD;A           # So         REPLACEMEN
*** 2145,2151 ****
--- 2192,2200 ----
  11A9A..11A9C;N   # Po     [3] SOYOMBO MARK TSHEG..SOYOMBO MARK DOUBLE SHAD
  11A9D;N          # Lo         SOYOMBO MARK PLUTA
  11A9E..11AA2;N   # Po     [5] SOYOMBO HEAD MARK WITH MOON AND SUN AND TRIPLE FLAME..SOYOMBO TERMINAL MARK-2
+ 11AB0..11ABF;N   # Lo    [16] CANADIAN SYLLABICS NATTILIK HI..CANADIAN SYLLABICS SPA
  11AC0..11AF8;N   # Lo    [57] PAU CIN HAU LETTER PA..PAU CIN HAU GLOTTAL STOP FINAL
+ 11B00..11B09;N   # Po    [10] DEVANAGARI HEAD MARK..DEVANAGARI SIGN MINDU
  11C00..11C08;N   # Lo     [9] BHAIKSUKI LETTER A..BHAIKSUKI LETTER VOCALIC L
  11C0A..11C2E;N   # Lo    [37] BHAIKSUKI LETTER E..BHAIKSUKI LETTER HA
  11C2F;N          # Mc         BHAIKSUKI VOWEL SIGN AA
*************** FFFD;A           # So         REPLACEMEN
*** 2191,2196 ****
--- 2240,2258 ----
  11EF3..11EF4;N   # Mn     [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
  11EF5..11EF6;N   # Mc     [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
  11EF7..11EF8;N   # Po     [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+ 11F00..11F01;N   # Mn     [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F02;N          # Lo         KAWI SIGN REPHA
+ 11F03;N          # Mc         KAWI SIGN VISARGA
+ 11F04..11F10;N   # Lo    [13] KAWI LETTER A..KAWI LETTER O
+ 11F12..11F33;N   # Lo    [34] KAWI LETTER KA..KAWI LETTER JNYA
+ 11F34..11F35;N   # Mc     [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+ 11F36..11F3A;N   # Mn     [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F3E..11F3F;N   # Mc     [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+ 11F40;N          # Mn         KAWI VOWEL SIGN EU
+ 11F41;N          # Mc         KAWI SIGN KILLER
+ 11F42;N          # Mn         KAWI CONJOINER
+ 11F43..11F4F;N   # Po    [13] KAWI DANDA..KAWI PUNCTUATION CLOSING SPIRAL
+ 11F50..11F59;N   # Nd    [10] KAWI DIGIT ZERO..KAWI DIGIT NINE
  11FB0;N          # Lo         LISU LETTER YHA
  11FC0..11FD4;N   # No    [21] TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH..TAMIL FRACTION DOWNSCALING FACTOR KIIZH
  11FD5..11FDC;N   # So     [8] TAMIL SIGN NEL..TAMIL SIGN MUKKURUNI
*************** FFFD;A           # So         REPLACEMEN
*** 2201,2213 ****
  12400..1246E;N   # Nl   [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
  12470..12474;N   # Po     [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
  12480..12543;N   # Lo   [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
! 13000..1342E;N   # Lo  [1071] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH AA032
! 13430..13438;N   # Cf     [9] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END SEGMENT
  14400..14646;N   # Lo   [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
  16800..16A38;N   # Lo   [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
  16A40..16A5E;N   # Lo    [31] MRO LETTER TA..MRO LETTER TEK
  16A60..16A69;N   # Nd    [10] MRO DIGIT ZERO..MRO DIGIT NINE
  16A6E..16A6F;N   # Po     [2] MRO DANDA..MRO DOUBLE DANDA
  16AD0..16AED;N   # Lo    [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
  16AF0..16AF4;N   # Mn     [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
  16AF5;N          # Po         BASSA VAH FULL STOP
--- 2263,2282 ----
  12400..1246E;N   # Nl   [111] CUNEIFORM NUMERIC SIGN TWO ASH..CUNEIFORM NUMERIC SIGN NINE U VARIANT FORM
  12470..12474;N   # Po     [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
  12480..12543;N   # Lo   [196] CUNEIFORM SIGN AB TIMES NUN TENU..CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU
! 12F90..12FF0;N   # Lo    [97] CYPRO-MINOAN SIGN CM001..CYPRO-MINOAN SIGN CM114
! 12FF1..12FF2;N   # Po     [2] CYPRO-MINOAN SIGN CM301..CYPRO-MINOAN SIGN CM302
! 13000..1342F;N   # Lo  [1072] EGYPTIAN HIEROGLYPH A001..EGYPTIAN HIEROGLYPH V011D
! 13430..1343F;N   # Cf    [16] EGYPTIAN HIEROGLYPH VERTICAL JOINER..EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE
! 13440;N          # Mn         EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY
! 13441..13446;N   # Lo     [6] EGYPTIAN HIEROGLYPH FULL BLANK..EGYPTIAN HIEROGLYPH WIDE LOST SIGN
! 13447..13455;N   # Mn    [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
  14400..14646;N   # Lo   [583] ANATOLIAN HIEROGLYPH A001..ANATOLIAN HIEROGLYPH A530
  16800..16A38;N   # Lo   [569] BAMUM LETTER PHASE-A NGKUE MFON..BAMUM LETTER PHASE-F VUEQ
  16A40..16A5E;N   # Lo    [31] MRO LETTER TA..MRO LETTER TEK
  16A60..16A69;N   # Nd    [10] MRO DIGIT ZERO..MRO DIGIT NINE
  16A6E..16A6F;N   # Po     [2] MRO DANDA..MRO DOUBLE DANDA
+ 16A70..16ABE;N   # Lo    [79] TANGSA LETTER OZ..TANGSA LETTER ZA
+ 16AC0..16AC9;N   # Nd    [10] TANGSA DIGIT ZERO..TANGSA DIGIT NINE
  16AD0..16AED;N   # Lo    [30] BASSA VAH LETTER ENNI..BASSA VAH LETTER I
  16AF0..16AF4;N   # Mn     [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
  16AF5;N          # Po         BASSA VAH FULL STOP
*************** FFFD;A           # So         REPLACEMEN
*** 2240,2248 ****
  18800..18AFF;W   # Lo   [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768
  18B00..18CD5;W   # Lo   [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
  18D00..18D08;W   # Lo     [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
  1B000..1B0FF;W   # Lo   [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2
! 1B100..1B11E;W   # Lo    [31] HENTAIGANA LETTER RE-3..HENTAIGANA LETTER N-MU-MO-2
  1B150..1B152;W   # Lo     [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
  1B164..1B167;W   # Lo     [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
  1B170..1B2FB;W   # Lo   [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
  1BC00..1BC6A;N   # Lo   [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
--- 2309,2322 ----
  18800..18AFF;W   # Lo   [768] TANGUT COMPONENT-001..TANGUT COMPONENT-768
  18B00..18CD5;W   # Lo   [470] KHITAN SMALL SCRIPT CHARACTER-18B00..KHITAN SMALL SCRIPT CHARACTER-18CD5
  18D00..18D08;W   # Lo     [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
+ 1AFF0..1AFF3;W   # Lm     [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB;W   # Lm     [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE;W   # Lm     [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
  1B000..1B0FF;W   # Lo   [256] KATAKANA LETTER ARCHAIC E..HENTAIGANA LETTER RE-2
! 1B100..1B122;W   # Lo    [35] HENTAIGANA LETTER RE-3..KATAKANA LETTER ARCHAIC WU
! 1B132;W          # Lo         HIRAGANA LETTER SMALL KO
  1B150..1B152;W   # Lo     [3] HIRAGANA LETTER SMALL WI..HIRAGANA LETTER SMALL WO
+ 1B155;W          # Lo         KATAKANA LETTER SMALL KO
  1B164..1B167;W   # Lo     [4] KATAKANA LETTER SMALL WI..KATAKANA LETTER SMALL N
  1B170..1B2FB;W   # Lo   [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
  1BC00..1BC6A;N   # Lo   [107] DUPLOYAN LETTER H..DUPLOYAN LETTER VOCALIC M
*************** FFFD;A           # So         REPLACEMEN
*** 2253,2258 ****
--- 2327,2335 ----
  1BC9D..1BC9E;N   # Mn     [2] DUPLOYAN THICK LETTER SELECTOR..DUPLOYAN DOUBLE MARK
  1BC9F;N          # Po         DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1BCA0..1BCA3;N   # Cf     [4] SHORTHAND FORMAT LETTER OVERLAP..SHORTHAND FORMAT UP STEP
+ 1CF00..1CF2D;N   # Mn    [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+ 1CF30..1CF46;N   # Mn    [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
+ 1CF50..1CFC3;N   # So   [116] ZNAMENNY NEUME KRYUK..ZNAMENNY NEUME PAUK
  1D000..1D0F5;N   # So   [246] BYZANTINE MUSICAL SYMBOL PSILI..BYZANTINE MUSICAL SYMBOL GORGON NEO KATO
  1D100..1D126;N   # So    [39] MUSICAL SYMBOL SINGLE BARLINE..MUSICAL SYMBOL DRUM CLEF-2
  1D129..1D164;N   # So    [60] MUSICAL SYMBOL MULTIPLE MEASURE REST..MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
*************** FFFD;A           # So         REPLACEMEN
*** 2266,2275 ****
  1D185..1D18B;N   # Mn     [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
  1D18C..1D1A9;N   # So    [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
  1D1AA..1D1AD;N   # Mn     [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
! 1D1AE..1D1E8;N   # So    [59] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KIEVAN FLAT SIGN
  1D200..1D241;N   # So    [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
  1D242..1D244;N   # Mn     [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
  1D245;N          # So         GREEK MUSICAL LEIMMA
  1D2E0..1D2F3;N   # No    [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
  1D300..1D356;N   # So    [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
  1D360..1D378;N   # No    [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
--- 2343,2353 ----
  1D185..1D18B;N   # Mn     [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
  1D18C..1D1A9;N   # So    [30] MUSICAL SYMBOL RINFORZANDO..MUSICAL SYMBOL DEGREE SLASH
  1D1AA..1D1AD;N   # Mn     [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
! 1D1AE..1D1EA;N   # So    [61] MUSICAL SYMBOL PEDAL MARK..MUSICAL SYMBOL KORON
  1D200..1D241;N   # So    [66] GREEK VOCAL NOTATION SYMBOL-1..GREEK INSTRUMENTAL NOTATION SYMBOL-54
  1D242..1D244;N   # Mn     [3] COMBINING GREEK MUSICAL TRISEME..COMBINING GREEK MUSICAL PENTASEME
  1D245;N          # So         GREEK MUSICAL LEIMMA
+ 1D2C0..1D2D3;N   # No    [20] KAKTOVIK NUMERAL ZERO..KAKTOVIK NUMERAL NINETEEN
  1D2E0..1D2F3;N   # No    [20] MAYAN NUMERAL ZERO..MAYAN NUMERAL NINETEEN
  1D300..1D356;N   # So    [87] MONOGRAM FOR EARTH..TETRAGRAM FOR FOSTERING
  1D360..1D378;N   # No    [25] COUNTING ROD UNIT DIGIT ONE..TALLY MARK FIVE
*************** FFFD;A           # So         REPLACEMEN
*** 2326,2346 ****
--- 2404,2440 ----
  1DA87..1DA8B;N   # Po     [5] SIGNWRITING COMMA..SIGNWRITING PARENTHESIS
  1DA9B..1DA9F;N   # Mn     [5] SIGNWRITING FILL MODIFIER-2..SIGNWRITING FILL MODIFIER-6
  1DAA1..1DAAF;N   # Mn    [15] SIGNWRITING ROTATION MODIFIER-2..SIGNWRITING ROTATION MODIFIER-16
+ 1DF00..1DF09;N   # Ll    [10] LATIN SMALL LETTER FENG DIGRAPH WITH TRILL..LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK
+ 1DF0A;N          # Lo         LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK
+ 1DF0B..1DF1E;N   # Ll    [20] LATIN SMALL LETTER ESH WITH DOUBLE BAR..LATIN SMALL LETTER S WITH CURL
+ 1DF25..1DF2A;N   # Ll     [6] LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK..LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK
  1E000..1E006;N   # Mn     [7] COMBINING GLAGOLITIC LETTER AZU..COMBINING GLAGOLITIC LETTER ZHIVETE
  1E008..1E018;N   # Mn    [17] COMBINING GLAGOLITIC LETTER ZEMLJA..COMBINING GLAGOLITIC LETTER HERU
  1E01B..1E021;N   # Mn     [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
  1E023..1E024;N   # Mn     [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
  1E026..1E02A;N   # Mn     [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E030..1E06D;N   # Lm    [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
+ 1E08F;N          # Mn         COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
  1E100..1E12C;N   # Lo    [45] NYIAKENG PUACHUE HMONG LETTER MA..NYIAKENG PUACHUE HMONG LETTER W
  1E130..1E136;N   # Mn     [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
  1E137..1E13D;N   # Lm     [7] NYIAKENG PUACHUE HMONG SIGN FOR PERSON..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
  1E140..1E149;N   # Nd    [10] NYIAKENG PUACHUE HMONG DIGIT ZERO..NYIAKENG PUACHUE HMONG DIGIT NINE
  1E14E;N          # Lo         NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ
  1E14F;N          # So         NYIAKENG PUACHUE HMONG CIRCLED CA
+ 1E290..1E2AD;N   # Lo    [30] TOTO LETTER PA..TOTO LETTER A
+ 1E2AE;N          # Mn         TOTO SIGN RISING TONE
  1E2C0..1E2EB;N   # Lo    [44] WANCHO LETTER AA..WANCHO LETTER YIH
  1E2EC..1E2EF;N   # Mn     [4] WANCHO TONE TUP..WANCHO TONE KOINI
  1E2F0..1E2F9;N   # Nd    [10] WANCHO DIGIT ZERO..WANCHO DIGIT NINE
  1E2FF;N          # Sc         WANCHO NGUN SIGN
+ 1E4D0..1E4EA;N   # Lo    [27] NAG MUNDARI LETTER O..NAG MUNDARI LETTER ELL
+ 1E4EB;N          # Lm         NAG MUNDARI SIGN OJOD
+ 1E4EC..1E4EF;N   # Mn     [4] NAG MUNDARI SIGN MUHOR..NAG MUNDARI SIGN SUTUH
+ 1E4F0..1E4F9;N   # Nd    [10] NAG MUNDARI DIGIT ZERO..NAG MUNDARI DIGIT NINE
+ 1E7E0..1E7E6;N   # Lo     [7] ETHIOPIC SYLLABLE HHYA..ETHIOPIC SYLLABLE HHYO
+ 1E7E8..1E7EB;N   # Lo     [4] ETHIOPIC SYLLABLE GURAGE HHWA..ETHIOPIC SYLLABLE HHWE
+ 1E7ED..1E7EE;N   # Lo     [2] ETHIOPIC SYLLABLE GURAGE MWI..ETHIOPIC SYLLABLE GURAGE MWEE
+ 1E7F0..1E7FE;N   # Lo    [15] ETHIOPIC SYLLABLE GURAGE QWI..ETHIOPIC SYLLABLE GURAGE PWEE
  1E800..1E8C4;N   # Lo   [197] MENDE KIKAKUI SYLLABLE M001 KI..MENDE KIKAKUI SYLLABLE M060 NYON
  1E8C7..1E8CF;N   # No     [9] MENDE KIKAKUI DIGIT ONE..MENDE KIKAKUI DIGIT NINE
  1E8D0..1E8D6;N   # Mn     [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
*************** FFFD;A           # So         REPLACEMEN
*** 2465,2477 ****
  1F6D0..1F6D2;W   # So     [3] PLACE OF WORSHIP..SHOPPING TROLLEY
  1F6D3..1F6D4;N   # So     [2] STUPA..PAGODA
  1F6D5..1F6D7;W   # So     [3] HINDU TEMPLE..ELEVATOR
  1F6E0..1F6EA;N   # So    [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE
  1F6EB..1F6EC;W   # So     [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING
  1F6F0..1F6F3;N   # So     [4] SATELLITE..PASSENGER SHIP
  1F6F4..1F6FC;W   # So     [9] SCOOTER..ROLLER SKATE
! 1F700..1F773;N   # So   [116] ALCHEMICAL SYMBOL FOR QUINTESSENCE..ALCHEMICAL SYMBOL FOR HALF OUNCE
! 1F780..1F7D8;N   # So    [89] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NEGATIVE CIRCLED SQUARE
  1F7E0..1F7EB;W   # So    [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
  1F800..1F80B;N   # So    [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
  1F810..1F847;N   # So    [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
  1F850..1F859;N   # So    [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
--- 2559,2574 ----
  1F6D0..1F6D2;W   # So     [3] PLACE OF WORSHIP..SHOPPING TROLLEY
  1F6D3..1F6D4;N   # So     [2] STUPA..PAGODA
  1F6D5..1F6D7;W   # So     [3] HINDU TEMPLE..ELEVATOR
+ 1F6DC..1F6DF;W   # So     [4] WIRELESS..RING BUOY
  1F6E0..1F6EA;N   # So    [11] HAMMER AND WRENCH..NORTHEAST-POINTING AIRPLANE
  1F6EB..1F6EC;W   # So     [2] AIRPLANE DEPARTURE..AIRPLANE ARRIVING
  1F6F0..1F6F3;N   # So     [4] SATELLITE..PASSENGER SHIP
  1F6F4..1F6FC;W   # So     [9] SCOOTER..ROLLER SKATE
! 1F700..1F776;N   # So   [119] ALCHEMICAL SYMBOL FOR QUINTESSENCE..LUNAR ECLIPSE
! 1F77B..1F77F;N   # So     [5] HAUMEA..ORCUS
! 1F780..1F7D9;N   # So    [90] BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE..NINE POINTED WHITE STAR
  1F7E0..1F7EB;W   # So    [12] LARGE ORANGE CIRCLE..LARGE BROWN SQUARE
+ 1F7F0;W          # So         HEAVY EQUALS SIGN
  1F800..1F80B;N   # So    [12] LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD..DOWNWARDS ARROW WITH LARGE TRIANGLE ARROWHEAD
  1F810..1F847;N   # So    [56] LEFTWARDS ARROW WITH SMALL EQUILATERAL ARROWHEAD..DOWNWARDS HEAVY ARROW
  1F850..1F859;N   # So    [10] LEFTWARDS SANS-SERIF ARROW..UP DOWN SANS-SERIF ARROW
*************** FFFD;A           # So         REPLACEMEN
*** 2483,2507 ****
  1F93B;N          # So         MODERN PENTATHLON
  1F93C..1F945;W   # So    [10] WRESTLERS..GOAL NET
  1F946;N          # So         RIFLE
! 1F947..1F978;W   # So    [50] FIRST PLACE MEDAL..DISGUISED FACE
! 1F97A..1F9CB;W   # So    [82] FACE WITH PLEADING EYES..BUBBLE TEA
! 1F9CD..1F9FF;W   # So    [51] STANDING PERSON..NAZAR AMULET
  1FA00..1FA53;N   # So    [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
  1FA60..1FA6D;N   # So    [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
! 1FA70..1FA74;W   # So     [5] BALLET SHOES..THONG SANDAL
! 1FA78..1FA7A;W   # So     [3] DROP OF BLOOD..STETHOSCOPE
! 1FA80..1FA86;W   # So     [7] YO-YO..NESTING DOLLS
! 1FA90..1FAA8;W   # So    [25] RINGED PLANET..ROCK
! 1FAB0..1FAB6;W   # So     [7] FLY..FEATHER
! 1FAC0..1FAC2;W   # So     [3] ANATOMICAL HEART..PEOPLE HUGGING
! 1FAD0..1FAD6;W   # So     [7] BLUEBERRIES..TEAPOT
  1FB00..1FB92;N   # So   [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
  1FB94..1FBCA;N   # So    [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
  1FBF0..1FBF9;N   # Nd    [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
! 20000..2A6DD;W   # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
! 2A6DE..2A6FF;W   # Cn    [34] <reserved-2A6DE>..<reserved-2A6FF>
! 2A700..2B734;W   # Lo  [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
! 2B735..2B73F;W   # Cn    [11] <reserved-2B735>..<reserved-2B73F>
  2B740..2B81D;W   # Lo   [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B81E..2B81F;W   # Cn     [2] <reserved-2B81E>..<reserved-2B81F>
  2B820..2CEA1;W   # Lo  [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
--- 2580,2602 ----
  1F93B;N          # So         MODERN PENTATHLON
  1F93C..1F945;W   # So    [10] WRESTLERS..GOAL NET
  1F946;N          # So         RIFLE
! 1F947..1F9FF;W   # So   [185] FIRST PLACE MEDAL..NAZAR AMULET
  1FA00..1FA53;N   # So    [84] NEUTRAL CHESS KING..BLACK CHESS KNIGHT-BISHOP
  1FA60..1FA6D;N   # So    [14] XIANGQI RED GENERAL..XIANGQI BLACK SOLDIER
! 1FA70..1FA7C;W   # So    [13] BALLET SHOES..CRUTCH
! 1FA80..1FA88;W   # So     [9] YO-YO..FLUTE
! 1FA90..1FABD;W   # So    [46] RINGED PLANET..WING
! 1FABF..1FAC5;W   # So     [7] GOOSE..PERSON WITH CROWN
! 1FACE..1FADB;W   # So    [14] MOOSE..PEA POD
! 1FAE0..1FAE8;W   # So     [9] MELTING FACE..SHAKING FACE
! 1FAF0..1FAF8;W   # So     [9] HAND WITH INDEX FINGER AND THUMB CROSSED..RIGHTWARDS PUSHING HAND
  1FB00..1FB92;N   # So   [147] BLOCK SEXTANT-1..UPPER HALF INVERSE MEDIUM SHADE AND LOWER HALF BLOCK
  1FB94..1FBCA;N   # So    [55] LEFT HALF INVERSE MEDIUM SHADE AND RIGHT HALF BLOCK..WHITE UP-POINTING CHEVRON
  1FBF0..1FBF9;N   # Nd    [10] SEGMENTED DIGIT ZERO..SEGMENTED DIGIT NINE
! 20000..2A6DF;W   # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
! 2A6E0..2A6FF;W   # Cn    [32] <reserved-2A6E0>..<reserved-2A6FF>
! 2A700..2B739;W   # Lo  [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
! 2B73A..2B73F;W   # Cn     [6] <reserved-2B73A>..<reserved-2B73F>
  2B740..2B81D;W   # Lo   [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B81E..2B81F;W   # Cn     [2] <reserved-2B81E>..<reserved-2B81F>
  2B820..2CEA1;W   # Lo  [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
*************** FFFD;A           # So         REPLACEMEN
*** 2512,2518 ****
  2FA1E..2FA1F;W   # Cn     [2] <reserved-2FA1E>..<reserved-2FA1F>
  2FA20..2FFFD;W   # Cn  [1502] <reserved-2FA20>..<reserved-2FFFD>
  30000..3134A;W   # Lo  [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
! 3134B..3FFFD;W   # Cn [60595] <reserved-3134B>..<reserved-3FFFD>
  E0001;N          # Cf         LANGUAGE TAG
  E0020..E007F;N   # Cf    [96] TAG SPACE..CANCEL TAG
  E0100..E01EF;A   # Mn   [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
--- 2607,2615 ----
  2FA1E..2FA1F;W   # Cn     [2] <reserved-2FA1E>..<reserved-2FA1F>
  2FA20..2FFFD;W   # Cn  [1502] <reserved-2FA20>..<reserved-2FFFD>
  30000..3134A;W   # Lo  [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
! 3134B..3134F;W   # Cn     [5] <reserved-3134B>..<reserved-3134F>
! 31350..323AF;W   # Lo  [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
! 323B0..3FFFD;W   # Cn [56398] <reserved-323B0>..<reserved-3FFFD>
  E0001;N          # Cf         LANGUAGE TAG
  E0020..E007F;N   # Cf    [96] TAG SPACE..CANCEL TAG
  E0100..E01EF;A   # Mn   [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
diff -Nrcpad gcc-12.2.0/contrib/unicode/NameAliases.txt gcc-13.1.0/contrib/unicode/NameAliases.txt
*** gcc-12.2.0/contrib/unicode/NameAliases.txt	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/contrib/unicode/NameAliases.txt	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,570 ----
+ # NameAliases-15.0.0.txt
+ # Date: 2022-07-26, 20:13:00 GMT [KW]
+ # © 2022 Unicode®, Inc.
+ # For terms of use, see https://www.unicode.org/terms_of_use.html
+ #
+ # Unicode Character Database
+ # For documentation, see https://www.unicode.org/reports/tr44/
+ #
+ # This file is a normative contributory data file in the
+ # Unicode Character Database.
+ #
+ # This file defines the formal name aliases for Unicode characters.
+ #
+ # For informative aliases, see NamesList.txt
+ #
+ # The formal name aliases are divided into five types, each with a distinct label.
+ #
+ # Type Labels:
+ #
+ # 1. correction
+ #      Corrections for serious problems in the character names
+ # 2. control
+ #      ISO 6429 names for C0 and C1 control functions, and other
+ #      commonly occurring names for control codes
+ # 3. alternate
+ #      A few widely used alternate names for format characters
+ # 4. figment
+ #      Several documented labels for C1 control code points which
+ #      were never actually approved in any standard
+ # 5. abbreviation
+ #      Commonly occurring abbreviations (or acronyms) for control codes,
+ #      format characters, spaces, and variation selectors
+ #
+ # The formal name aliases are part of the Unicode character namespace, which
+ # includes the character names and the names of named character sequences.
+ # The inclusion of ISO 6429 names and other commonly occurring names and
+ # abbreviations for control codes and format characters as formal name aliases
+ # is to help avoid name collisions between Unicode character names and the
+ # labels which commonly appear in text and/or in implementations such as regex, for
+ # control codes (which for historical reasons have no Unicode character name)
+ # or for format characters.
+ #
+ # For documentation, see NamesList.html and https://www.unicode.org/reports/tr44/
+ #
+ # FORMAT
+ #
+ # Each line has three fields, as described here:
+ #
+ # First field:  Code point
+ # Second field: Alias
+ # Third field:  Type
+ #
+ # The type labels used are defined above. As for property values, comparisons
+ # of type labels should ignore case.
+ #
+ # The type labels can be mapped to other strings for display, if desired.
+ #
+ # In case multiple aliases are assigned, additional aliases
+ # are provided on separate lines. Parsers of this data file should
+ # take note that the same code point can (and does) occur more than once.
+ #
+ # Note that currently the only instances of multiple aliases of the same
+ # type for a single code point are either of type "control" or "abbreviation".
+ # An alias of type "abbreviation" can, in principle, be added for any code
+ # point, although currently aliases of type "correction" do not have
+ # any additional aliases of type "abbreviation". Such relationships
+ # are not enforced by stability policies.
+ #
+ #-----------------------------------------------------------------
+ 
+ 0000;NULL;control
+ 0000;NUL;abbreviation
+ 0001;START OF HEADING;control
+ 0001;SOH;abbreviation
+ 0002;START OF TEXT;control
+ 0002;STX;abbreviation
+ 0003;END OF TEXT;control
+ 0003;ETX;abbreviation
+ 0004;END OF TRANSMISSION;control
+ 0004;EOT;abbreviation
+ 0005;ENQUIRY;control
+ 0005;ENQ;abbreviation
+ 0006;ACKNOWLEDGE;control
+ 0006;ACK;abbreviation
+ 
+ # Note that no formal name alias for the ISO 6429 "BELL" is
+ # provided for U+0007, because of the existing name collision
+ # with U+1F514 BELL.
+ 
+ 0007;ALERT;control
+ 0007;BEL;abbreviation
+ 
+ 0008;BACKSPACE;control
+ 0008;BS;abbreviation
+ 0009;CHARACTER TABULATION;control
+ 0009;HORIZONTAL TABULATION;control
+ 0009;HT;abbreviation
+ 0009;TAB;abbreviation
+ 000A;LINE FEED;control
+ 000A;NEW LINE;control
+ 000A;END OF LINE;control
+ 000A;LF;abbreviation
+ 000A;NL;abbreviation
+ 000A;EOL;abbreviation
+ 000B;LINE TABULATION;control
+ 000B;VERTICAL TABULATION;control
+ 000B;VT;abbreviation
+ 000C;FORM FEED;control
+ 000C;FF;abbreviation
+ 000D;CARRIAGE RETURN;control
+ 000D;CR;abbreviation
+ 000E;SHIFT OUT;control
+ 000E;LOCKING-SHIFT ONE;control
+ 000E;SO;abbreviation
+ 000F;SHIFT IN;control
+ 000F;LOCKING-SHIFT ZERO;control
+ 000F;SI;abbreviation
+ 0010;DATA LINK ESCAPE;control
+ 0010;DLE;abbreviation
+ 0011;DEVICE CONTROL ONE;control
+ 0011;DC1;abbreviation
+ 0012;DEVICE CONTROL TWO;control
+ 0012;DC2;abbreviation
+ 0013;DEVICE CONTROL THREE;control
+ 0013;DC3;abbreviation
+ 0014;DEVICE CONTROL FOUR;control
+ 0014;DC4;abbreviation
+ 0015;NEGATIVE ACKNOWLEDGE;control
+ 0015;NAK;abbreviation
+ 0016;SYNCHRONOUS IDLE;control
+ 0016;SYN;abbreviation
+ 0017;END OF TRANSMISSION BLOCK;control
+ 0017;ETB;abbreviation
+ 0018;CANCEL;control
+ 0018;CAN;abbreviation
+ 0019;END OF MEDIUM;control
+ 0019;EOM;abbreviation
+ 0019;EM;abbreviation
+ 001A;SUBSTITUTE;control
+ 001A;SUB;abbreviation
+ 001B;ESCAPE;control
+ 001B;ESC;abbreviation
+ 001C;INFORMATION SEPARATOR FOUR;control
+ 001C;FILE SEPARATOR;control
+ 001C;FS;abbreviation
+ 001D;INFORMATION SEPARATOR THREE;control
+ 001D;GROUP SEPARATOR;control
+ 001D;GS;abbreviation
+ 001E;INFORMATION SEPARATOR TWO;control
+ 001E;RECORD SEPARATOR;control
+ 001E;RS;abbreviation
+ 001F;INFORMATION SEPARATOR ONE;control
+ 001F;UNIT SEPARATOR;control
+ 001F;US;abbreviation
+ 0020;SP;abbreviation
+ 007F;DELETE;control
+ 007F;DEL;abbreviation
+ 
+ # PADDING CHARACTER and HIGH OCTET PRESET represent
+ # architectural concepts initially proposed for early
+ # drafts of ISO/IEC 10646-1. They were never actually
+ # approved or standardized: hence their designation
+ # here as the "figment" type. Formal name aliases
+ # (and corresponding abbreviations) for these code
+ # points are included here because these names leaked
+ # out from the draft documents and were published in
+ # at least one RFC whose names for code points were
+ # implemented in Perl regex expressions.
+ 
+ 0080;PADDING CHARACTER;figment
+ 0080;PAD;abbreviation
+ 0081;HIGH OCTET PRESET;figment
+ 0081;HOP;abbreviation
+ 
+ 0082;BREAK PERMITTED HERE;control
+ 0082;BPH;abbreviation
+ 0083;NO BREAK HERE;control
+ 0083;NBH;abbreviation
+ 0084;INDEX;control
+ 0084;IND;abbreviation
+ 0085;NEXT LINE;control
+ 0085;NEL;abbreviation
+ 0086;START OF SELECTED AREA;control
+ 0086;SSA;abbreviation
+ 0087;END OF SELECTED AREA;control
+ 0087;ESA;abbreviation
+ 0088;CHARACTER TABULATION SET;control
+ 0088;HORIZONTAL TABULATION SET;control
+ 0088;HTS;abbreviation
+ 0089;CHARACTER TABULATION WITH JUSTIFICATION;control
+ 0089;HORIZONTAL TABULATION WITH JUSTIFICATION;control
+ 0089;HTJ;abbreviation
+ 008A;LINE TABULATION SET;control
+ 008A;VERTICAL TABULATION SET;control
+ 008A;VTS;abbreviation
+ 008B;PARTIAL LINE FORWARD;control
+ 008B;PARTIAL LINE DOWN;control
+ 008B;PLD;abbreviation
+ 008C;PARTIAL LINE BACKWARD;control
+ 008C;PARTIAL LINE UP;control
+ 008C;PLU;abbreviation
+ 008D;REVERSE LINE FEED;control
+ 008D;REVERSE INDEX;control
+ 008D;RI;abbreviation
+ 008E;SINGLE SHIFT TWO;control
+ 008E;SINGLE-SHIFT-2;control
+ 008E;SS2;abbreviation
+ 008F;SINGLE SHIFT THREE;control
+ 008F;SINGLE-SHIFT-3;control
+ 008F;SS3;abbreviation
+ 0090;DEVICE CONTROL STRING;control
+ 0090;DCS;abbreviation
+ 0091;PRIVATE USE ONE;control
+ 0091;PRIVATE USE-1;control
+ 0091;PU1;abbreviation
+ 0092;PRIVATE USE TWO;control
+ 0092;PRIVATE USE-2;control
+ 0092;PU2;abbreviation
+ 0093;SET TRANSMIT STATE;control
+ 0093;STS;abbreviation
+ 0094;CANCEL CHARACTER;control
+ 0094;CCH;abbreviation
+ 0095;MESSAGE WAITING;control
+ 0095;MW;abbreviation
+ 0096;START OF GUARDED AREA;control
+ 0096;START OF PROTECTED AREA;control
+ 0096;SPA;abbreviation
+ 0097;END OF GUARDED AREA;control
+ 0097;END OF PROTECTED AREA;control
+ 0097;EPA;abbreviation
+ 0098;START OF STRING;control
+ 0098;SOS;abbreviation
+ 
+ # SINGLE GRAPHIC CHARACTER INTRODUCER is another
+ # architectural concept from early drafts of ISO/IEC 10646-1
+ # which was never approved and standardized.
+ 
+ 0099;SINGLE GRAPHIC CHARACTER INTRODUCER;figment
+ 0099;SGC;abbreviation
+ 
+ 009A;SINGLE CHARACTER INTRODUCER;control
+ 009A;SCI;abbreviation
+ 009B;CONTROL SEQUENCE INTRODUCER;control
+ 009B;CSI;abbreviation
+ 009C;STRING TERMINATOR;control
+ 009C;ST;abbreviation
+ 009D;OPERATING SYSTEM COMMAND;control
+ 009D;OSC;abbreviation
+ 009E;PRIVACY MESSAGE;control
+ 009E;PM;abbreviation
+ 009F;APPLICATION PROGRAM COMMAND;control
+ 009F;APC;abbreviation
+ 00A0;NBSP;abbreviation
+ 00AD;SHY;abbreviation
+ 01A2;LATIN CAPITAL LETTER GHA;correction
+ 01A3;LATIN SMALL LETTER GHA;correction
+ 034F;CGJ;abbreviation
+ 0616;ARABIC SMALL HIGH LIGATURE ALEF WITH YEH BARREE;correction
+ 061C;ALM;abbreviation
+ 0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction
+ 0CDE;KANNADA LETTER LLLA;correction
+ 0E9D;LAO LETTER FO FON;correction
+ 0E9F;LAO LETTER FO FAY;correction
+ 0EA3;LAO LETTER RO;correction
+ 0EA5;LAO LETTER LO;correction
+ 0FD0;TIBETAN MARK BKA- SHOG GI MGO RGYAN;correction
+ 11EC;HANGUL JONGSEONG YESIEUNG-KIYEOK;correction
+ 11ED;HANGUL JONGSEONG YESIEUNG-SSANGKIYEOK;correction
+ 11EE;HANGUL JONGSEONG SSANGYESIEUNG;correction
+ 11EF;HANGUL JONGSEONG YESIEUNG-KHIEUKH;correction
+ 180B;FVS1;abbreviation
+ 180C;FVS2;abbreviation
+ 180D;FVS3;abbreviation
+ 180E;MVS;abbreviation
+ 180F;FVS4;abbreviation
+ 1BBD;SUNDANESE LETTER ARCHAIC I;correction
+ 200B;ZWSP;abbreviation
+ 200C;ZWNJ;abbreviation
+ 200D;ZWJ;abbreviation
+ 200E;LRM;abbreviation
+ 200F;RLM;abbreviation
+ 202A;LRE;abbreviation
+ 202B;RLE;abbreviation
+ 202C;PDF;abbreviation
+ 202D;LRO;abbreviation
+ 202E;RLO;abbreviation
+ 202F;NNBSP;abbreviation
+ 205F;MMSP;abbreviation
+ 2060;WJ;abbreviation
+ 2066;LRI;abbreviation
+ 2067;RLI;abbreviation
+ 2068;FSI;abbreviation
+ 2069;PDI;abbreviation
+ 2118;WEIERSTRASS ELLIPTIC FUNCTION;correction
+ 2448;MICR ON US SYMBOL;correction
+ 2449;MICR DASH SYMBOL;correction
+ 2B7A;LEFTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction
+ 2B7C;RIGHTWARDS TRIANGLE-HEADED ARROW WITH DOUBLE VERTICAL STROKE;correction
+ A015;YI SYLLABLE ITERATION MARK;correction
+ AA6E;MYANMAR LETTER KHAMTI LLA;correction
+ FE00;VS1;abbreviation
+ FE01;VS2;abbreviation
+ FE02;VS3;abbreviation
+ FE03;VS4;abbreviation
+ FE04;VS5;abbreviation
+ FE05;VS6;abbreviation
+ FE06;VS7;abbreviation
+ FE07;VS8;abbreviation
+ FE08;VS9;abbreviation
+ FE09;VS10;abbreviation
+ FE0A;VS11;abbreviation
+ FE0B;VS12;abbreviation
+ FE0C;VS13;abbreviation
+ FE0D;VS14;abbreviation
+ FE0E;VS15;abbreviation
+ FE0F;VS16;abbreviation
+ FE18;PRESENTATION FORM FOR VERTICAL RIGHT WHITE LENTICULAR BRACKET;correction
+ FEFF;BYTE ORDER MARK;alternate
+ FEFF;BOM;abbreviation
+ FEFF;ZWNBSP;abbreviation
+ 122D4;CUNEIFORM SIGN NU11 TENU;correction
+ 122D5;CUNEIFORM SIGN NU11 OVER NU11 BUR OVER BUR;correction
+ 16E56;MEDEFAIDRIN CAPITAL LETTER H;correction
+ 16E57;MEDEFAIDRIN CAPITAL LETTER NG;correction
+ 16E76;MEDEFAIDRIN SMALL LETTER H;correction
+ 16E77;MEDEFAIDRIN SMALL LETTER NG;correction
+ 1B001;HENTAIGANA LETTER E-1;correction
+ 1D0C5;BYZANTINE MUSICAL SYMBOL FTHORA SKLIRON CHROMA VASIS;correction
+ E0100;VS17;abbreviation
+ E0101;VS18;abbreviation
+ E0102;VS19;abbreviation
+ E0103;VS20;abbreviation
+ E0104;VS21;abbreviation
+ E0105;VS22;abbreviation
+ E0106;VS23;abbreviation
+ E0107;VS24;abbreviation
+ E0108;VS25;abbreviation
+ E0109;VS26;abbreviation
+ E010A;VS27;abbreviation
+ E010B;VS28;abbreviation
+ E010C;VS29;abbreviation
+ E010D;VS30;abbreviation
+ E010E;VS31;abbreviation
+ E010F;VS32;abbreviation
+ E0110;VS33;abbreviation
+ E0111;VS34;abbreviation
+ E0112;VS35;abbreviation
+ E0113;VS36;abbreviation
+ E0114;VS37;abbreviation
+ E0115;VS38;abbreviation
+ E0116;VS39;abbreviation
+ E0117;VS40;abbreviation
+ E0118;VS41;abbreviation
+ E0119;VS42;abbreviation
+ E011A;VS43;abbreviation
+ E011B;VS44;abbreviation
+ E011C;VS45;abbreviation
+ E011D;VS46;abbreviation
+ E011E;VS47;abbreviation
+ E011F;VS48;abbreviation
+ E0120;VS49;abbreviation
+ E0121;VS50;abbreviation
+ E0122;VS51;abbreviation
+ E0123;VS52;abbreviation
+ E0124;VS53;abbreviation
+ E0125;VS54;abbreviation
+ E0126;VS55;abbreviation
+ E0127;VS56;abbreviation
+ E0128;VS57;abbreviation
+ E0129;VS58;abbreviation
+ E012A;VS59;abbreviation
+ E012B;VS60;abbreviation
+ E012C;VS61;abbreviation
+ E012D;VS62;abbreviation
+ E012E;VS63;abbreviation
+ E012F;VS64;abbreviation
+ E0130;VS65;abbreviation
+ E0131;VS66;abbreviation
+ E0132;VS67;abbreviation
+ E0133;VS68;abbreviation
+ E0134;VS69;abbreviation
+ E0135;VS70;abbreviation
+ E0136;VS71;abbreviation
+ E0137;VS72;abbreviation
+ E0138;VS73;abbreviation
+ E0139;VS74;abbreviation
+ E013A;VS75;abbreviation
+ E013B;VS76;abbreviation
+ E013C;VS77;abbreviation
+ E013D;VS78;abbreviation
+ E013E;VS79;abbreviation
+ E013F;VS80;abbreviation
+ E0140;VS81;abbreviation
+ E0141;VS82;abbreviation
+ E0142;VS83;abbreviation
+ E0143;VS84;abbreviation
+ E0144;VS85;abbreviation
+ E0145;VS86;abbreviation
+ E0146;VS87;abbreviation
+ E0147;VS88;abbreviation
+ E0148;VS89;abbreviation
+ E0149;VS90;abbreviation
+ E014A;VS91;abbreviation
+ E014B;VS92;abbreviation
+ E014C;VS93;abbreviation
+ E014D;VS94;abbreviation
+ E014E;VS95;abbreviation
+ E014F;VS96;abbreviation
+ E0150;VS97;abbreviation
+ E0151;VS98;abbreviation
+ E0152;VS99;abbreviation
+ E0153;VS100;abbreviation
+ E0154;VS101;abbreviation
+ E0155;VS102;abbreviation
+ E0156;VS103;abbreviation
+ E0157;VS104;abbreviation
+ E0158;VS105;abbreviation
+ E0159;VS106;abbreviation
+ E015A;VS107;abbreviation
+ E015B;VS108;abbreviation
+ E015C;VS109;abbreviation
+ E015D;VS110;abbreviation
+ E015E;VS111;abbreviation
+ E015F;VS112;abbreviation
+ E0160;VS113;abbreviation
+ E0161;VS114;abbreviation
+ E0162;VS115;abbreviation
+ E0163;VS116;abbreviation
+ E0164;VS117;abbreviation
+ E0165;VS118;abbreviation
+ E0166;VS119;abbreviation
+ E0167;VS120;abbreviation
+ E0168;VS121;abbreviation
+ E0169;VS122;abbreviation
+ E016A;VS123;abbreviation
+ E016B;VS124;abbreviation
+ E016C;VS125;abbreviation
+ E016D;VS126;abbreviation
+ E016E;VS127;abbreviation
+ E016F;VS128;abbreviation
+ E0170;VS129;abbreviation
+ E0171;VS130;abbreviation
+ E0172;VS131;abbreviation
+ E0173;VS132;abbreviation
+ E0174;VS133;abbreviation
+ E0175;VS134;abbreviation
+ E0176;VS135;abbreviation
+ E0177;VS136;abbreviation
+ E0178;VS137;abbreviation
+ E0179;VS138;abbreviation
+ E017A;VS139;abbreviation
+ E017B;VS140;abbreviation
+ E017C;VS141;abbreviation
+ E017D;VS142;abbreviation
+ E017E;VS143;abbreviation
+ E017F;VS144;abbreviation
+ E0180;VS145;abbreviation
+ E0181;VS146;abbreviation
+ E0182;VS147;abbreviation
+ E0183;VS148;abbreviation
+ E0184;VS149;abbreviation
+ E0185;VS150;abbreviation
+ E0186;VS151;abbreviation
+ E0187;VS152;abbreviation
+ E0188;VS153;abbreviation
+ E0189;VS154;abbreviation
+ E018A;VS155;abbreviation
+ E018B;VS156;abbreviation
+ E018C;VS157;abbreviation
+ E018D;VS158;abbreviation
+ E018E;VS159;abbreviation
+ E018F;VS160;abbreviation
+ E0190;VS161;abbreviation
+ E0191;VS162;abbreviation
+ E0192;VS163;abbreviation
+ E0193;VS164;abbreviation
+ E0194;VS165;abbreviation
+ E0195;VS166;abbreviation
+ E0196;VS167;abbreviation
+ E0197;VS168;abbreviation
+ E0198;VS169;abbreviation
+ E0199;VS170;abbreviation
+ E019A;VS171;abbreviation
+ E019B;VS172;abbreviation
+ E019C;VS173;abbreviation
+ E019D;VS174;abbreviation
+ E019E;VS175;abbreviation
+ E019F;VS176;abbreviation
+ E01A0;VS177;abbreviation
+ E01A1;VS178;abbreviation
+ E01A2;VS179;abbreviation
+ E01A3;VS180;abbreviation
+ E01A4;VS181;abbreviation
+ E01A5;VS182;abbreviation
+ E01A6;VS183;abbreviation
+ E01A7;VS184;abbreviation
+ E01A8;VS185;abbreviation
+ E01A9;VS186;abbreviation
+ E01AA;VS187;abbreviation
+ E01AB;VS188;abbreviation
+ E01AC;VS189;abbreviation
+ E01AD;VS190;abbreviation
+ E01AE;VS191;abbreviation
+ E01AF;VS192;abbreviation
+ E01B0;VS193;abbreviation
+ E01B1;VS194;abbreviation
+ E01B2;VS195;abbreviation
+ E01B3;VS196;abbreviation
+ E01B4;VS197;abbreviation
+ E01B5;VS198;abbreviation
+ E01B6;VS199;abbreviation
+ E01B7;VS200;abbreviation
+ E01B8;VS201;abbreviation
+ E01B9;VS202;abbreviation
+ E01BA;VS203;abbreviation
+ E01BB;VS204;abbreviation
+ E01BC;VS205;abbreviation
+ E01BD;VS206;abbreviation
+ E01BE;VS207;abbreviation
+ E01BF;VS208;abbreviation
+ E01C0;VS209;abbreviation
+ E01C1;VS210;abbreviation
+ E01C2;VS211;abbreviation
+ E01C3;VS212;abbreviation
+ E01C4;VS213;abbreviation
+ E01C5;VS214;abbreviation
+ E01C6;VS215;abbreviation
+ E01C7;VS216;abbreviation
+ E01C8;VS217;abbreviation
+ E01C9;VS218;abbreviation
+ E01CA;VS219;abbreviation
+ E01CB;VS220;abbreviation
+ E01CC;VS221;abbreviation
+ E01CD;VS222;abbreviation
+ E01CE;VS223;abbreviation
+ E01CF;VS224;abbreviation
+ E01D0;VS225;abbreviation
+ E01D1;VS226;abbreviation
+ E01D2;VS227;abbreviation
+ E01D3;VS228;abbreviation
+ E01D4;VS229;abbreviation
+ E01D5;VS230;abbreviation
+ E01D6;VS231;abbreviation
+ E01D7;VS232;abbreviation
+ E01D8;VS233;abbreviation
+ E01D9;VS234;abbreviation
+ E01DA;VS235;abbreviation
+ E01DB;VS236;abbreviation
+ E01DC;VS237;abbreviation
+ E01DD;VS238;abbreviation
+ E01DE;VS239;abbreviation
+ E01DF;VS240;abbreviation
+ E01E0;VS241;abbreviation
+ E01E1;VS242;abbreviation
+ E01E2;VS243;abbreviation
+ E01E3;VS244;abbreviation
+ E01E4;VS245;abbreviation
+ E01E5;VS246;abbreviation
+ E01E6;VS247;abbreviation
+ E01E7;VS248;abbreviation
+ E01E8;VS249;abbreviation
+ E01E9;VS250;abbreviation
+ E01EA;VS251;abbreviation
+ E01EB;VS252;abbreviation
+ E01EC;VS253;abbreviation
+ E01ED;VS254;abbreviation
+ E01EE;VS255;abbreviation
+ E01EF;VS256;abbreviation
+ 
+ # EOF
diff -Nrcpad gcc-12.2.0/contrib/unicode/PropList.txt gcc-13.1.0/contrib/unicode/PropList.txt
*** gcc-12.2.0/contrib/unicode/PropList.txt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unicode/PropList.txt	Wed Apr 26 07:09:39 2023
***************
*** 1,11 ****
! # PropList-13.0.0.txt
! # Date: 2019-11-27, 03:13:28 GMT
! # © 2019 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
! # For terms of use, see http://www.unicode.org/terms_of_use.html
  #
  # Unicode Character Database
! #   For documentation, see http://www.unicode.org/reports/tr44/
  
  # ================================================
  
--- 1,11 ----
! # PropList-15.0.0.txt
! # Date: 2022-08-05, 22:17:16 GMT
! # © 2022 Unicode®, Inc.
  # Unicode and the Unicode Logo are registered trademarks of Unicode, Inc. in the U.S. and other countries.
! # For terms of use, see https://www.unicode.org/terms_of_use.html
  #
  # Unicode Character Database
! #   For documentation, see https://www.unicode.org/reports/tr44/
  
  # ================================================
  
***************
*** 54,59 ****
--- 54,60 ----
  2E1A          ; Dash # Pd       HYPHEN WITH DIAERESIS
  2E3A..2E3B    ; Dash # Pd   [2] TWO-EM DASH..THREE-EM DASH
  2E40          ; Dash # Pd       DOUBLE HYPHEN
+ 2E5D          ; Dash # Pd       OBLIQUE HYPHEN
  301C          ; Dash # Pd       WAVE DASH
  3030          ; Dash # Pd       WAVY DASH
  30A0          ; Dash # Pd       KATAKANA-HIRAGANA DOUBLE HYPHEN
*************** FE63          ; Dash # Pd       SMALL HY
*** 63,69 ****
  FF0D          ; Dash # Pd       FULLWIDTH HYPHEN-MINUS
  10EAD         ; Dash # Pd       YEZIDI HYPHENATION MARK
  
! # Total code points: 29
  
  # ================================================
  
--- 64,70 ----
  FF0D          ; Dash # Pd       FULLWIDTH HYPHEN-MINUS
  10EAD         ; Dash # Pd       YEZIDI HYPHENATION MARK
  
! # Total code points: 30
  
  # ================================================
  
*************** FF63          ; Quotation_Mark # Pe
*** 126,132 ****
  05C3          ; Terminal_Punctuation # Po       HEBREW PUNCTUATION SOF PASUQ
  060C          ; Terminal_Punctuation # Po       ARABIC COMMA
  061B          ; Terminal_Punctuation # Po       ARABIC SEMICOLON
! 061E..061F    ; Terminal_Punctuation # Po   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
  06D4          ; Terminal_Punctuation # Po       ARABIC FULL STOP
  0700..070A    ; Terminal_Punctuation # Po  [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
  070C          ; Terminal_Punctuation # Po       SYRIAC HARKLEAN METOBELUS
--- 127,133 ----
  05C3          ; Terminal_Punctuation # Po       HEBREW PUNCTUATION SOF PASUQ
  060C          ; Terminal_Punctuation # Po       ARABIC COMMA
  061B          ; Terminal_Punctuation # Po       ARABIC SEMICOLON
! 061D..061F    ; Terminal_Punctuation # Po   [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
  06D4          ; Terminal_Punctuation # Po       ARABIC FULL STOP
  0700..070A    ; Terminal_Punctuation # Po  [11] SYRIAC END OF PARAGRAPH..SYRIAC CONTRACTION
  070C          ; Terminal_Punctuation # Po       SYRIAC HARKLEAN METOBELUS
*************** FF63          ; Quotation_Mark # Pe
*** 150,155 ****
--- 151,157 ----
  1AA8..1AAB    ; Terminal_Punctuation # Po   [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
  1B5A..1B5B    ; Terminal_Punctuation # Po   [2] BALINESE PANTI..BALINESE PAMADA
  1B5D..1B5F    ; Terminal_Punctuation # Po   [3] BALINESE CARIK PAMUNGKAH..BALINESE CARIK PAREREN
+ 1B7D..1B7E    ; Terminal_Punctuation # Po   [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
  1C3B..1C3F    ; Terminal_Punctuation # Po   [5] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION TSHOOK
  1C7E..1C7F    ; Terminal_Punctuation # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
  203C..203D    ; Terminal_Punctuation # Po   [2] DOUBLE EXCLAMATION MARK..INTERROBANG
*************** FF63          ; Quotation_Mark # Pe
*** 159,164 ****
--- 161,167 ----
  2E41          ; Terminal_Punctuation # Po       REVERSED COMMA
  2E4C          ; Terminal_Punctuation # Po       MEDIEVAL COMMA
  2E4E..2E4F    ; Terminal_Punctuation # Po   [2] PUNCTUS ELEVATUS MARK..CORNISH VERSE DIVIDER
+ 2E53..2E54    ; Terminal_Punctuation # Po   [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
  3001..3002    ; Terminal_Punctuation # Po   [2] IDEOGRAPHIC COMMA..IDEOGRAPHIC FULL STOP
  A4FE..A4FF    ; Terminal_Punctuation # Po   [2] LISU PUNCTUATION COMMA..LISU PUNCTUATION FULL STOP
  A60D..A60F    ; Terminal_Punctuation # Po   [3] VAI COMMA..VAI QUESTION MARK
*************** FF64          ; Terminal_Punctuation # P
*** 189,194 ****
--- 192,198 ----
  10B3A..10B3F  ; Terminal_Punctuation # Po   [6] TINY TWO DOTS OVER ONE DOT PUNCTUATION..LARGE ONE RING OVER TWO RINGS PUNCTUATION
  10B99..10B9C  ; Terminal_Punctuation # Po   [4] PSALTER PAHLAVI SECTION MARK..PSALTER PAHLAVI FOUR DOTS WITH DOT
  10F55..10F59  ; Terminal_Punctuation # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+ 10F86..10F89  ; Terminal_Punctuation # Po   [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
  11047..1104D  ; Terminal_Punctuation # Po   [7] BRAHMI DANDA..BRAHMI PUNCTUATION LOTUS
  110BE..110C1  ; Terminal_Punctuation # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
  11141..11143  ; Terminal_Punctuation # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
*************** FF64          ; Terminal_Punctuation # P
*** 211,216 ****
--- 215,221 ----
  11C41..11C43  ; Terminal_Punctuation # Po   [3] BHAIKSUKI DANDA..BHAIKSUKI WORD SEPARATOR
  11C71         ; Terminal_Punctuation # Po       MARCHEN MARK SHAD
  11EF7..11EF8  ; Terminal_Punctuation # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+ 11F43..11F44  ; Terminal_Punctuation # Po   [2] KAWI DANDA..KAWI DOUBLE DANDA
  12470..12474  ; Terminal_Punctuation # Po   [5] CUNEIFORM PUNCTUATION SIGN OLD ASSYRIAN WORD DIVIDER..CUNEIFORM PUNCTUATION SIGN DIAGONAL QUADCOLON
  16A6E..16A6F  ; Terminal_Punctuation # Po   [2] MRO DANDA..MRO DOUBLE DANDA
  16AF5         ; Terminal_Punctuation # Po       BASSA VAH FULL STOP
*************** FF64          ; Terminal_Punctuation # P
*** 220,226 ****
  1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
  
! # Total code points: 267
  
  # ================================================
  
--- 225,231 ----
  1BC9F         ; Terminal_Punctuation # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA87..1DA8A  ; Terminal_Punctuation # Po   [4] SIGNWRITING COMMA..SIGNWRITING COLON
  
! # Total code points: 278
  
  # ================================================
  
*************** FF41..FF46    ; Hex_Digit # L&   [6] FUL
*** 503,508 ****
--- 508,514 ----
  0BD7          ; Other_Alphabetic # Mc       TAMIL AU LENGTH MARK
  0C00          ; Other_Alphabetic # Mn       TELUGU SIGN COMBINING CANDRABINDU ABOVE
  0C01..0C03    ; Other_Alphabetic # Mc   [3] TELUGU SIGN CANDRABINDU..TELUGU SIGN VISARGA
+ 0C04          ; Other_Alphabetic # Mn       TELUGU SIGN COMBINING ANUSVARA ABOVE
  0C3E..0C40    ; Other_Alphabetic # Mn   [3] TELUGU VOWEL SIGN AA..TELUGU VOWEL SIGN II
  0C41..0C44    ; Other_Alphabetic # Mc   [4] TELUGU VOWEL SIGN U..TELUGU VOWEL SIGN VOCALIC RR
  0C46..0C48    ; Other_Alphabetic # Mn   [3] TELUGU VOWEL SIGN E..TELUGU VOWEL SIGN AI
*************** FF41..FF46    ; Hex_Digit # L&   [6] FUL
*** 520,525 ****
--- 526,532 ----
  0CCC          ; Other_Alphabetic # Mn       KANNADA VOWEL SIGN AU
  0CD5..0CD6    ; Other_Alphabetic # Mc   [2] KANNADA LENGTH MARK..KANNADA AI LENGTH MARK
  0CE2..0CE3    ; Other_Alphabetic # Mn   [2] KANNADA VOWEL SIGN VOCALIC L..KANNADA VOWEL SIGN VOCALIC LL
+ 0CF3          ; Other_Alphabetic # Mc       KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT
  0D00..0D01    ; Other_Alphabetic # Mn   [2] MALAYALAM SIGN COMBINING ANUSVARA ABOVE..MALAYALAM SIGN CANDRABINDU
  0D02..0D03    ; Other_Alphabetic # Mc   [2] MALAYALAM SIGN ANUSVARA..MALAYALAM SIGN VISARGA
  0D3E..0D40    ; Other_Alphabetic # Mc   [3] MALAYALAM VOWEL SIGN AA..MALAYALAM VOWEL SIGN II
*************** FF41..FF46    ; Hex_Digit # L&   [6] FUL
*** 544,550 ****
  0ECD          ; Other_Alphabetic # Mn       LAO NIGGAHITA
  0F71..0F7E    ; Other_Alphabetic # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
  0F7F          ; Other_Alphabetic # Mc       TIBETAN SIGN RNAM BCAD
! 0F80..0F81    ; Other_Alphabetic # Mn   [2] TIBETAN VOWEL SIGN REVERSED I..TIBETAN VOWEL SIGN REVERSED II
  0F8D..0F97    ; Other_Alphabetic # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
  0F99..0FBC    ; Other_Alphabetic # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
  102B..102C    ; Other_Alphabetic # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
--- 551,557 ----
  0ECD          ; Other_Alphabetic # Mn       LAO NIGGAHITA
  0F71..0F7E    ; Other_Alphabetic # Mn  [14] TIBETAN VOWEL SIGN AA..TIBETAN SIGN RJES SU NGA RO
  0F7F          ; Other_Alphabetic # Mc       TIBETAN SIGN RNAM BCAD
! 0F80..0F83    ; Other_Alphabetic # Mn   [4] TIBETAN VOWEL SIGN REVERSED I..TIBETAN SIGN SNA LDAN
  0F8D..0F97    ; Other_Alphabetic # Mn  [11] TIBETAN SUBJOINED SIGN LCE TSA CAN..TIBETAN SUBJOINED LETTER JA
  0F99..0FBC    ; Other_Alphabetic # Mn  [36] TIBETAN SUBJOINED LETTER NYA..TIBETAN SUBJOINED LETTER FIXED-FORM RA
  102B..102C    ; Other_Alphabetic # Mc   [2] MYANMAR VOWEL SIGN TALL AA..MYANMAR VOWEL SIGN AA
*************** FF41..FF46    ; Hex_Digit # L&   [6] FUL
*** 600,605 ****
--- 607,613 ----
  1A6D..1A72    ; Other_Alphabetic # Mc   [6] TAI THAM VOWEL SIGN OY..TAI THAM VOWEL SIGN THAM AI
  1A73..1A74    ; Other_Alphabetic # Mn   [2] TAI THAM VOWEL SIGN OA ABOVE..TAI THAM SIGN MAI KANG
  1ABF..1AC0    ; Other_Alphabetic # Mn   [2] COMBINING LATIN SMALL LETTER W BELOW..COMBINING LATIN SMALL LETTER TURNED W BELOW
+ 1ACC..1ACE    ; Other_Alphabetic # Mn   [3] COMBINING LATIN SMALL LETTER INSULAR G..COMBINING LATIN SMALL LETTER INSULAR T
  1B00..1B03    ; Other_Alphabetic # Mn   [4] BALINESE SIGN ULU RICEM..BALINESE SIGN SURANG
  1B04          ; Other_Alphabetic # Mc       BALINESE SIGN BISAH
  1B35          ; Other_Alphabetic # Mc       BALINESE VOWEL SIGN TEDUNG
*************** FB1E          ; Other_Alphabetic # Mn
*** 686,695 ****
--- 694,706 ----
  11001         ; Other_Alphabetic # Mn       BRAHMI SIGN ANUSVARA
  11002         ; Other_Alphabetic # Mc       BRAHMI SIGN VISARGA
  11038..11045  ; Other_Alphabetic # Mn  [14] BRAHMI VOWEL SIGN AA..BRAHMI VOWEL SIGN AU
+ 11073..11074  ; Other_Alphabetic # Mn   [2] BRAHMI VOWEL SIGN OLD TAMIL SHORT E..BRAHMI VOWEL SIGN OLD TAMIL SHORT O
+ 11080..11081  ; Other_Alphabetic # Mn   [2] KAITHI SIGN CANDRABINDU..KAITHI SIGN ANUSVARA
  11082         ; Other_Alphabetic # Mc       KAITHI SIGN VISARGA
  110B0..110B2  ; Other_Alphabetic # Mc   [3] KAITHI VOWEL SIGN AA..KAITHI VOWEL SIGN II
  110B3..110B6  ; Other_Alphabetic # Mn   [4] KAITHI VOWEL SIGN U..KAITHI VOWEL SIGN AI
  110B7..110B8  ; Other_Alphabetic # Mc   [2] KAITHI VOWEL SIGN O..KAITHI VOWEL SIGN AU
+ 110C2         ; Other_Alphabetic # Mn       KAITHI VOWEL SIGN VOCALIC R
  11100..11102  ; Other_Alphabetic # Mn   [3] CHAKMA SIGN CANDRABINDU..CHAKMA SIGN VISARGA
  11127..1112B  ; Other_Alphabetic # Mn   [5] CHAKMA VOWEL SIGN A..CHAKMA VOWEL SIGN UU
  1112C         ; Other_Alphabetic # Mc       CHAKMA VOWEL SIGN E
*************** FB1E          ; Other_Alphabetic # Mn
*** 708,713 ****
--- 719,725 ----
  11234         ; Other_Alphabetic # Mn       KHOJKI SIGN ANUSVARA
  11237         ; Other_Alphabetic # Mn       KHOJKI SIGN SHADDA
  1123E         ; Other_Alphabetic # Mn       KHOJKI SIGN SUKUN
+ 11241         ; Other_Alphabetic # Mn       KHOJKI VOWEL SIGN VOCALIC R
  112DF         ; Other_Alphabetic # Mn       KHUDAWADI SIGN ANUSVARA
  112E0..112E2  ; Other_Alphabetic # Mc   [3] KHUDAWADI VOWEL SIGN AA..KHUDAWADI VOWEL SIGN II
  112E3..112E8  ; Other_Alphabetic # Mn   [6] KHUDAWADI VOWEL SIGN U..KHUDAWADI VOWEL SIGN AU
*************** FB1E          ; Other_Alphabetic # Mn
*** 800,805 ****
--- 812,823 ----
  11D96         ; Other_Alphabetic # Mc       GUNJALA GONDI SIGN VISARGA
  11EF3..11EF4  ; Other_Alphabetic # Mn   [2] MAKASAR VOWEL SIGN I..MAKASAR VOWEL SIGN U
  11EF5..11EF6  ; Other_Alphabetic # Mc   [2] MAKASAR VOWEL SIGN E..MAKASAR VOWEL SIGN O
+ 11F00..11F01  ; Other_Alphabetic # Mn   [2] KAWI SIGN CANDRABINDU..KAWI SIGN ANUSVARA
+ 11F03         ; Other_Alphabetic # Mc       KAWI SIGN VISARGA
+ 11F34..11F35  ; Other_Alphabetic # Mc   [2] KAWI VOWEL SIGN AA..KAWI VOWEL SIGN ALTERNATE AA
+ 11F36..11F3A  ; Other_Alphabetic # Mn   [5] KAWI VOWEL SIGN I..KAWI VOWEL SIGN VOCALIC R
+ 11F3E..11F3F  ; Other_Alphabetic # Mc   [2] KAWI VOWEL SIGN E..KAWI VOWEL SIGN AI
+ 11F40         ; Other_Alphabetic # Mn       KAWI VOWEL SIGN EU
  16F4F         ; Other_Alphabetic # Mn       MIAO SIGN CONSONANT MODIFIER BAR
  16F51..16F87  ; Other_Alphabetic # Mc  [55] MIAO SIGN ASPIRATION..MIAO VOWEL SIGN UI
  16F8F..16F92  ; Other_Alphabetic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
*************** FB1E          ; Other_Alphabetic # Mn
*** 810,821 ****
  1E01B..1E021  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
  1E023..1E024  ; Other_Alphabetic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
  1E026..1E02A  ; Other_Alphabetic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
  1E947         ; Other_Alphabetic # Mn       ADLAM HAMZA
  1F130..1F149  ; Other_Alphabetic # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
  1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
  1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
  
! # Total code points: 1398
  
  # ================================================
  
--- 828,840 ----
  1E01B..1E021  ; Other_Alphabetic # Mn   [7] COMBINING GLAGOLITIC LETTER SHTA..COMBINING GLAGOLITIC LETTER YATI
  1E023..1E024  ; Other_Alphabetic # Mn   [2] COMBINING GLAGOLITIC LETTER YU..COMBINING GLAGOLITIC LETTER SMALL YUS
  1E026..1E02A  ; Other_Alphabetic # Mn   [5] COMBINING GLAGOLITIC LETTER YO..COMBINING GLAGOLITIC LETTER FITA
+ 1E08F         ; Other_Alphabetic # Mn       COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I
  1E947         ; Other_Alphabetic # Mn       ADLAM HAMZA
  1F130..1F149  ; Other_Alphabetic # So  [26] SQUARED LATIN CAPITAL LETTER A..SQUARED LATIN CAPITAL LETTER Z
  1F150..1F169  ; Other_Alphabetic # So  [26] NEGATIVE CIRCLED LATIN CAPITAL LETTER A..NEGATIVE CIRCLED LATIN CAPITAL LETTER Z
  1F170..1F189  ; Other_Alphabetic # So  [26] NEGATIVE SQUARED LATIN CAPITAL LETTER A..NEGATIVE SQUARED LATIN CAPITAL LETTER Z
  
! # Total code points: 1425
  
  # ================================================
  
*************** FB1E          ; Other_Alphabetic # Mn
*** 824,830 ****
  3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
  3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
  3400..4DBF    ; Ideographic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
! 4E00..9FFC    ; Ideographic # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
  F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
  FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
  16FE4         ; Ideographic # Mn       KHITAN SMALL SCRIPT FILLER
--- 843,849 ----
  3021..3029    ; Ideographic # Nl   [9] HANGZHOU NUMERAL ONE..HANGZHOU NUMERAL NINE
  3038..303A    ; Ideographic # Nl   [3] HANGZHOU NUMERAL TEN..HANGZHOU NUMERAL THIRTY
  3400..4DBF    ; Ideographic # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
! 4E00..9FFF    ; Ideographic # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
  F900..FA6D    ; Ideographic # Lo [366] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA6D
  FA70..FAD9    ; Ideographic # Lo [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
  16FE4         ; Ideographic # Mn       KHITAN SMALL SCRIPT FILLER
*************** FA70..FAD9    ; Ideographic # Lo [106] C
*** 832,846 ****
  18800..18CD5  ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
  18D00..18D08  ; Ideographic # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
  1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
! 20000..2A6DD  ; Ideographic # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
! 2A700..2B734  ; Ideographic # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B740..2B81D  ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
  30000..3134A  ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
  
! # Total code points: 101652
  
  # ================================================
  
--- 851,866 ----
  18800..18CD5  ; Ideographic # Lo [1238] TANGUT COMPONENT-001..KHITAN SMALL SCRIPT CHARACTER-18CD5
  18D00..18D08  ; Ideographic # Lo   [9] TANGUT IDEOGRAPH-18D00..TANGUT IDEOGRAPH-18D08
  1B170..1B2FB  ; Ideographic # Lo [396] NUSHU CHARACTER-1B170..NUSHU CHARACTER-1B2FB
! 20000..2A6DF  ; Ideographic # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
! 2A700..2B739  ; Ideographic # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
  2B740..2B81D  ; Ideographic # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Ideographic # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Ideographic # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  2F800..2FA1D  ; Ideographic # Lo [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
  30000..3134A  ; Ideographic # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; Ideographic # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
  
! # Total code points: 105854
  
  # ================================================
  
*************** FA70..FAD9    ; Ideographic # Lo [106] C
*** 885,890 ****
--- 905,913 ----
  07EB..07F3    ; Diacritic # Mn   [9] NKO COMBINING SHORT HIGH TONE..NKO COMBINING DOUBLE DOT ABOVE
  07F4..07F5    ; Diacritic # Lm   [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
  0818..0819    ; Diacritic # Mn   [2] SAMARITAN MARK OCCLUSION..SAMARITAN MARK DAGESH
+ 0898..089F    ; Diacritic # Mn   [8] ARABIC SMALL HIGH WORD AL-JUZ..ARABIC HALF MADDA OVER MADDA
+ 08C9          ; Diacritic # Lm       ARABIC SMALL FARSI YEH
+ 08CA..08D2    ; Diacritic # Mn   [9] ARABIC SMALL HIGH FARSI YEH..ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW
  08E3..08FE    ; Diacritic # Mn  [28] ARABIC TURNED DAMMA BELOW..ARABIC DAMMA WITH DOT
  093C          ; Diacritic # Mn       DEVANAGARI SIGN NUKTA
  094D          ; Diacritic # Mn       DEVANAGARI SIGN VIRAMA
*************** FA70..FAD9    ; Ideographic # Lo [106] C
*** 901,906 ****
--- 924,930 ----
  0B4D          ; Diacritic # Mn       ORIYA SIGN VIRAMA
  0B55          ; Diacritic # Mn       ORIYA SIGN OVERLINE
  0BCD          ; Diacritic # Mn       TAMIL SIGN VIRAMA
+ 0C3C          ; Diacritic # Mn       TELUGU SIGN NUKTA
  0C4D          ; Diacritic # Mn       TELUGU SIGN VIRAMA
  0CBC          ; Diacritic # Mn       KANNADA SIGN NUKTA
  0CCD          ; Diacritic # Mn       KANNADA SIGN VIRAMA
*************** FA70..FAD9    ; Ideographic # Lo [106] C
*** 928,939 ****
--- 952,967 ----
  108F          ; Diacritic # Mc       MYANMAR SIGN RUMAI PALAUNG TONE-5
  109A..109B    ; Diacritic # Mc   [2] MYANMAR SIGN KHAMTI TONE-1..MYANMAR SIGN KHAMTI TONE-3
  135D..135F    ; Diacritic # Mn   [3] ETHIOPIC COMBINING GEMINATION AND VOWEL LENGTH MARK..ETHIOPIC COMBINING GEMINATION MARK
+ 1714          ; Diacritic # Mn       TAGALOG SIGN VIRAMA
+ 1715          ; Diacritic # Mc       TAGALOG SIGN PAMUDPOD
  17C9..17D3    ; Diacritic # Mn  [11] KHMER SIGN MUUSIKATOAN..KHMER SIGN BATHAMASAT
  17DD          ; Diacritic # Mn       KHMER SIGN ATTHACAN
  1939..193B    ; Diacritic # Mn   [3] LIMBU SIGN MUKPHRENG..LIMBU SIGN SA-I
  1A75..1A7C    ; Diacritic # Mn   [8] TAI THAM SIGN TONE-1..TAI THAM SIGN KHUEN-LUE KARAN
  1A7F          ; Diacritic # Mn       TAI THAM COMBINING CRYPTOGRAMMIC DOT
  1AB0..1ABD    ; Diacritic # Mn  [14] COMBINING DOUBLED CIRCUMFLEX ACCENT..COMBINING PARENTHESES BELOW
+ 1ABE          ; Diacritic # Me       COMBINING PARENTHESES OVERLAY
+ 1AC1..1ACB    ; Diacritic # Mn  [11] COMBINING LEFT PARENTHESIS ABOVE LEFT..COMBINING TRIPLE ACUTE ACCENT
  1B34          ; Diacritic # Mn       BALINESE SIGN REREKAN
  1B44          ; Diacritic # Mc       BALINESE ADEG ADEG
  1B6B..1B73    ; Diacritic # Mn   [9] BALINESE MUSICAL SYMBOL COMBINING TEGEH..BALINESE MUSICAL SYMBOL COMBINING GONG
*************** FA70..FAD9    ; Ideographic # Lo [106] C
*** 952,959 ****
  1CF8..1CF9    ; Diacritic # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
  1D2C..1D6A    ; Diacritic # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
  1DC4..1DCF    ; Diacritic # Mn  [12] COMBINING MACRON-ACUTE..COMBINING ZIGZAG BELOW
! 1DF5..1DF9    ; Diacritic # Mn   [5] COMBINING UP TACK ABOVE..COMBINING WIDE INVERTED BRIDGE BELOW
! 1DFD..1DFF    ; Diacritic # Mn   [3] COMBINING ALMOST EQUAL TO BELOW..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
  1FBD          ; Diacritic # Sk       GREEK KORONIS
  1FBF..1FC1    ; Diacritic # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
  1FCD..1FCF    ; Diacritic # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
--- 980,986 ----
  1CF8..1CF9    ; Diacritic # Mn   [2] VEDIC TONE RING ABOVE..VEDIC TONE DOUBLE RING ABOVE
  1D2C..1D6A    ; Diacritic # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
  1DC4..1DCF    ; Diacritic # Mn  [12] COMBINING MACRON-ACUTE..COMBINING ZIGZAG BELOW
! 1DF5..1DFF    ; Diacritic # Mn  [11] COMBINING UP TACK ABOVE..COMBINING RIGHT ARROWHEAD AND DOWN ARROWHEAD BELOW
  1FBD          ; Diacritic # Sk       GREEK KORONIS
  1FBF..1FC1    ; Diacritic # Sk   [3] GREEK PSILI..GREEK DIALYTIKA AND PERISPOMENI
  1FCD..1FCF    ; Diacritic # Sk   [3] GREEK PSILI AND VARIA..GREEK PSILI AND PERISPOMENI
*************** FF70          ; Diacritic # Lm       HAL
*** 1008,1017 ****
--- 1035,1051 ----
  FF9E..FF9F    ; Diacritic # Lm   [2] HALFWIDTH KATAKANA VOICED SOUND MARK..HALFWIDTH KATAKANA SEMI-VOICED SOUND MARK
  FFE3          ; Diacritic # Sk       FULLWIDTH MACRON
  102E0         ; Diacritic # Mn       COPTIC EPACT THOUSANDS MARK
+ 10780..10785  ; Diacritic # Lm   [6] MODIFIER LETTER SMALL CAPITAL AA..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Diacritic # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Diacritic # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
  10AE5..10AE6  ; Diacritic # Mn   [2] MANICHAEAN ABBREVIATION MARK ABOVE..MANICHAEAN ABBREVIATION MARK BELOW
  10D22..10D23  ; Diacritic # Lo   [2] HANIFI ROHINGYA MARK SAKIN..HANIFI ROHINGYA MARK NA KHONNA
  10D24..10D27  ; Diacritic # Mn   [4] HANIFI ROHINGYA SIGN HARBAHAY..HANIFI ROHINGYA SIGN TASSI
+ 10EFD..10EFF  ; Diacritic # Mn   [3] ARABIC SMALL LOW WORD SAKTA..ARABIC SMALL LOW WORD MADDA
  10F46..10F50  ; Diacritic # Mn  [11] SOGDIAN COMBINING DOT BELOW..SOGDIAN COMBINING STROKE BELOW
+ 10F82..10F85  ; Diacritic # Mn   [4] OLD UYGHUR COMBINING DOT ABOVE..OLD UYGHUR COMBINING TWO DOTS BELOW
+ 11046         ; Diacritic # Mn       BRAHMI VIRAMA
+ 11070         ; Diacritic # Mn       BRAHMI SIGN OLD TAMIL VIRAMA
  110B9..110BA  ; Diacritic # Mn   [2] KAITHI SIGN VIRAMA..KAITHI SIGN NUKTA
  11133..11134  ; Diacritic # Mn   [2] CHAKMA VIRAMA..CHAKMA MAAYYAA
  11173         ; Diacritic # Mn       MAHAJANI SIGN NUKTA
*************** FFE3          ; Diacritic # Sk       FUL
*** 1044,1066 ****
  11D42         ; Diacritic # Mn       MASARAM GONDI SIGN NUKTA
  11D44..11D45  ; Diacritic # Mn   [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
  11D97         ; Diacritic # Mn       GUNJALA GONDI VIRAMA
  16AF0..16AF4  ; Diacritic # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
  16B30..16B36  ; Diacritic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
  16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
  16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
  16FF0..16FF1  ; Diacritic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
  1D167..1D169  ; Diacritic # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
  1D16D..1D172  ; Diacritic # Mc   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
  1D17B..1D182  ; Diacritic # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
  1D185..1D18B  ; Diacritic # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
  1D1AA..1D1AD  ; Diacritic # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
  1E130..1E136  ; Diacritic # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
  1E2EC..1E2EF  ; Diacritic # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
  1E8D0..1E8D6  ; Diacritic # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
  1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
  
! # Total code points: 882
  
  # ================================================
  
--- 1078,1108 ----
  11D42         ; Diacritic # Mn       MASARAM GONDI SIGN NUKTA
  11D44..11D45  ; Diacritic # Mn   [2] MASARAM GONDI SIGN HALANTA..MASARAM GONDI VIRAMA
  11D97         ; Diacritic # Mn       GUNJALA GONDI VIRAMA
+ 13447..13455  ; Diacritic # Mn  [15] EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START..EGYPTIAN HIEROGLYPH MODIFIER DAMAGED
  16AF0..16AF4  ; Diacritic # Mn   [5] BASSA VAH COMBINING HIGH TONE..BASSA VAH COMBINING HIGH-LOW TONE
  16B30..16B36  ; Diacritic # Mn   [7] PAHAWH HMONG MARK CIM TUB..PAHAWH HMONG MARK CIM TAUM
  16F8F..16F92  ; Diacritic # Mn   [4] MIAO TONE RIGHT..MIAO TONE BELOW
  16F93..16F9F  ; Diacritic # Lm  [13] MIAO LETTER TONE-2..MIAO LETTER REFORMED TONE-8
  16FF0..16FF1  ; Diacritic # Mc   [2] VIETNAMESE ALTERNATE READING MARK CA..VIETNAMESE ALTERNATE READING MARK NHAY
+ 1AFF0..1AFF3  ; Diacritic # Lm   [4] KATAKANA LETTER MINNAN TONE-2..KATAKANA LETTER MINNAN TONE-5
+ 1AFF5..1AFFB  ; Diacritic # Lm   [7] KATAKANA LETTER MINNAN TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-5
+ 1AFFD..1AFFE  ; Diacritic # Lm   [2] KATAKANA LETTER MINNAN NASALIZED TONE-7..KATAKANA LETTER MINNAN NASALIZED TONE-8
+ 1CF00..1CF2D  ; Diacritic # Mn  [46] ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT..ZNAMENNY COMBINING MARK KRYZH ON LEFT
+ 1CF30..1CF46  ; Diacritic # Mn  [23] ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO..ZNAMENNY PRIZNAK MODIFIER ROG
  1D167..1D169  ; Diacritic # Mn   [3] MUSICAL SYMBOL COMBINING TREMOLO-1..MUSICAL SYMBOL COMBINING TREMOLO-3
  1D16D..1D172  ; Diacritic # Mc   [6] MUSICAL SYMBOL COMBINING AUGMENTATION DOT..MUSICAL SYMBOL COMBINING FLAG-5
  1D17B..1D182  ; Diacritic # Mn   [8] MUSICAL SYMBOL COMBINING ACCENT..MUSICAL SYMBOL COMBINING LOURE
  1D185..1D18B  ; Diacritic # Mn   [7] MUSICAL SYMBOL COMBINING DOIT..MUSICAL SYMBOL COMBINING TRIPLE TONGUE
  1D1AA..1D1AD  ; Diacritic # Mn   [4] MUSICAL SYMBOL COMBINING DOWN BOW..MUSICAL SYMBOL COMBINING SNAP PIZZICATO
+ 1E030..1E06D  ; Diacritic # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
  1E130..1E136  ; Diacritic # Mn   [7] NYIAKENG PUACHUE HMONG TONE-B..NYIAKENG PUACHUE HMONG TONE-D
+ 1E2AE         ; Diacritic # Mn       TOTO SIGN RISING TONE
  1E2EC..1E2EF  ; Diacritic # Mn   [4] WANCHO TONE TUP..WANCHO TONE KOINI
  1E8D0..1E8D6  ; Diacritic # Mn   [7] MENDE KIKAKUI COMBINING NUMBER TEENS..MENDE KIKAKUI COMBINING NUMBER MILLIONS
  1E944..1E946  ; Diacritic # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  1E948..1E94A  ; Diacritic # Mn   [3] ADLAM CONSONANT MODIFIER..ADLAM NUKTA
  
! # Total code points: 1144
  
  # ================================================
  
*************** AA70          ; Extender # Lm       MYAN
*** 1088,1093 ****
--- 1130,1136 ----
  AADD          ; Extender # Lm       TAI VIET SYMBOL SAM
  AAF3..AAF4    ; Extender # Lm   [2] MEETEI MAYEK SYLLABLE REPETITION MARK..MEETEI MAYEK WORD REPETITION MARK
  FF70          ; Extender # Lm       HALFWIDTH KATAKANA-HIRAGANA PROLONGED SOUND MARK
+ 10781..10782  ; Extender # Lm   [2] MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON..MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON
  1135D         ; Extender # Lo       GRANTHA SIGN PLUTA
  115C6..115C8  ; Extender # Po   [3] SIDDHAM REPETITION MARK-1..SIDDHAM REPETITION MARK-3
  11A98         ; Extender # Mn       SOYOMBO GEMINATION MARK
*************** FF70          ; Extender # Lm       HALF
*** 1097,1103 ****
  1E13C..1E13D  ; Extender # Lm   [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
  1E944..1E946  ; Extender # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  
! # Total code points: 48
  
  # ================================================
  
--- 1140,1146 ----
  1E13C..1E13D  ; Extender # Lm   [2] NYIAKENG PUACHUE HMONG SIGN XW XW..NYIAKENG PUACHUE HMONG SYLLABLE LENGTHENER
  1E944..1E946  ; Extender # Mn   [3] ADLAM ALIF LENGTHENER..ADLAM GEMINATION MARK
  
! # Total code points: 50
  
  # ================================================
  
*************** FF70          ; Extender # Lm       HALF
*** 1108,1113 ****
--- 1151,1157 ----
  02E0..02E4    ; Other_Lowercase # Lm   [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
  0345          ; Other_Lowercase # Mn       COMBINING GREEK YPOGEGRAMMENI
  037A          ; Other_Lowercase # Lm       GREEK YPOGEGRAMMENI
+ 10FC          ; Other_Lowercase # Lm       MODIFIER LETTER GEORGIAN NAR
  1D2C..1D6A    ; Other_Lowercase # Lm  [63] MODIFIER LETTER CAPITAL A..GREEK SUBSCRIPT SMALL LETTER CHI
  1D78          ; Other_Lowercase # Lm       MODIFIER LETTER CYRILLIC EN
  1D9B..1DBF    ; Other_Lowercase # Lm  [37] MODIFIER LETTER SMALL TURNED ALPHA..MODIFIER LETTER SMALL THETA
*************** FF70          ; Extender # Lm       HALF
*** 1119,1128 ****
  2C7C..2C7D    ; Other_Lowercase # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
  A69C..A69D    ; Other_Lowercase # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
  A770          ; Other_Lowercase # Lm       MODIFIER LETTER US
  A7F8..A7F9    ; Other_Lowercase # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
  AB5C..AB5F    ; Other_Lowercase # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
  
! # Total code points: 189
  
  # ================================================
  
--- 1163,1179 ----
  2C7C..2C7D    ; Other_Lowercase # Lm   [2] LATIN SUBSCRIPT SMALL LETTER J..MODIFIER LETTER CAPITAL V
  A69C..A69D    ; Other_Lowercase # Lm   [2] MODIFIER LETTER CYRILLIC HARD SIGN..MODIFIER LETTER CYRILLIC SOFT SIGN
  A770          ; Other_Lowercase # Lm       MODIFIER LETTER US
+ A7F2..A7F4    ; Other_Lowercase # Lm   [3] MODIFIER LETTER CAPITAL C..MODIFIER LETTER CAPITAL Q
  A7F8..A7F9    ; Other_Lowercase # Lm   [2] MODIFIER LETTER CAPITAL H WITH STROKE..MODIFIER LETTER SMALL LIGATURE OE
  AB5C..AB5F    ; Other_Lowercase # Lm   [4] MODIFIER LETTER SMALL HENG..MODIFIER LETTER SMALL U WITH LEFT HOOK
+ AB69          ; Other_Lowercase # Lm       MODIFIER LETTER SMALL TURNED W
+ 10780         ; Other_Lowercase # Lm       MODIFIER LETTER SMALL CAPITAL AA
+ 10783..10785  ; Other_Lowercase # Lm   [3] MODIFIER LETTER SMALL AE..MODIFIER LETTER SMALL B WITH HOOK
+ 10787..107B0  ; Other_Lowercase # Lm  [42] MODIFIER LETTER SMALL DZ DIGRAPH..MODIFIER LETTER SMALL V WITH RIGHT HOOK
+ 107B2..107BA  ; Other_Lowercase # Lm   [9] MODIFIER LETTER SMALL CAPITAL Y..MODIFIER LETTER SMALL S WITH CURL
+ 1E030..1E06D  ; Other_Lowercase # Lm  [62] MODIFIER LETTER CYRILLIC SMALL A..MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE
  
! # Total code points: 311
  
  # ================================================
  
*************** E0020..E007F  ; Other_Grapheme_Extend #
*** 1211,1217 ****
  # ================================================
  
  3400..4DBF    ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
! 4E00..9FFC    ; Unified_Ideograph # Lo [20989] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFC
  FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
  FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
  FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
--- 1262,1268 ----
  # ================================================
  
  3400..4DBF    ; Unified_Ideograph # Lo [6592] CJK UNIFIED IDEOGRAPH-3400..CJK UNIFIED IDEOGRAPH-4DBF
! 4E00..9FFF    ; Unified_Ideograph # Lo [20992] CJK UNIFIED IDEOGRAPH-4E00..CJK UNIFIED IDEOGRAPH-9FFF
  FA0E..FA0F    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA0E..CJK COMPATIBILITY IDEOGRAPH-FA0F
  FA11          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA11
  FA13..FA14    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA13..CJK COMPATIBILITY IDEOGRAPH-FA14
*************** FA1F          ; Unified_Ideograph # Lo
*** 1219,1232 ****
  FA21          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA21
  FA23..FA24    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
  FA27..FA29    ; Unified_Ideograph # Lo   [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
! 20000..2A6DD  ; Unified_Ideograph # Lo [42718] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DD
! 2A700..2B734  ; Unified_Ideograph # Lo [4149] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B734
  2B740..2B81D  ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  30000..3134A  ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
  
! # Total code points: 92856
  
  # ================================================
  
--- 1270,1284 ----
  FA21          ; Unified_Ideograph # Lo       CJK COMPATIBILITY IDEOGRAPH-FA21
  FA23..FA24    ; Unified_Ideograph # Lo   [2] CJK COMPATIBILITY IDEOGRAPH-FA23..CJK COMPATIBILITY IDEOGRAPH-FA24
  FA27..FA29    ; Unified_Ideograph # Lo   [3] CJK COMPATIBILITY IDEOGRAPH-FA27..CJK COMPATIBILITY IDEOGRAPH-FA29
! 20000..2A6DF  ; Unified_Ideograph # Lo [42720] CJK UNIFIED IDEOGRAPH-20000..CJK UNIFIED IDEOGRAPH-2A6DF
! 2A700..2B739  ; Unified_Ideograph # Lo [4154] CJK UNIFIED IDEOGRAPH-2A700..CJK UNIFIED IDEOGRAPH-2B739
  2B740..2B81D  ; Unified_Ideograph # Lo [222] CJK UNIFIED IDEOGRAPH-2B740..CJK UNIFIED IDEOGRAPH-2B81D
  2B820..2CEA1  ; Unified_Ideograph # Lo [5762] CJK UNIFIED IDEOGRAPH-2B820..CJK UNIFIED IDEOGRAPH-2CEA1
  2CEB0..2EBE0  ; Unified_Ideograph # Lo [7473] CJK UNIFIED IDEOGRAPH-2CEB0..CJK UNIFIED IDEOGRAPH-2EBE0
  30000..3134A  ; Unified_Ideograph # Lo [4939] CJK UNIFIED IDEOGRAPH-30000..CJK UNIFIED IDEOGRAPH-3134A
+ 31350..323AF  ; Unified_Ideograph # Lo [4192] CJK UNIFIED IDEOGRAPH-31350..CJK UNIFIED IDEOGRAPH-323AF
  
! # Total code points: 97058
  
  # ================================================
  
*************** E0001         ; Deprecated # Cf       LA
*** 1291,1298 ****
  1D62A..1D62B  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J
  1D65E..1D65F  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
  1D692..1D693  ; Soft_Dotted # L&   [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J
  
! # Total code points: 46
  
  # ================================================
  
--- 1343,1353 ----
  1D62A..1D62B  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF ITALIC SMALL I..MATHEMATICAL SANS-SERIF ITALIC SMALL J
  1D65E..1D65F  ; Soft_Dotted # L&   [2] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL I..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL J
  1D692..1D693  ; Soft_Dotted # L&   [2] MATHEMATICAL MONOSPACE SMALL I..MATHEMATICAL MONOSPACE SMALL J
+ 1DF1A         ; Soft_Dotted # L&       LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK
+ 1E04C..1E04D  ; Soft_Dotted # Lm   [2] MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I..MODIFIER LETTER CYRILLIC SMALL JE
+ 1E068         ; Soft_Dotted # Lm       CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I
  
! # Total code points: 50
  
  # ================================================
  
*************** AABB..AABC    ; Logical_Order_Exception
*** 1330,1336 ****
  002E          ; Sentence_Terminal # Po       FULL STOP
  003F          ; Sentence_Terminal # Po       QUESTION MARK
  0589          ; Sentence_Terminal # Po       ARMENIAN FULL STOP
! 061E..061F    ; Sentence_Terminal # Po   [2] ARABIC TRIPLE DOT PUNCTUATION MARK..ARABIC QUESTION MARK
  06D4          ; Sentence_Terminal # Po       ARABIC FULL STOP
  0700..0702    ; Sentence_Terminal # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
  07F9          ; Sentence_Terminal # Po       NKO EXCLAMATION MARK
--- 1385,1391 ----
  002E          ; Sentence_Terminal # Po       FULL STOP
  003F          ; Sentence_Terminal # Po       QUESTION MARK
  0589          ; Sentence_Terminal # Po       ARMENIAN FULL STOP
! 061D..061F    ; Sentence_Terminal # Po   [3] ARABIC END OF TEXT MARK..ARABIC QUESTION MARK
  06D4          ; Sentence_Terminal # Po       ARABIC FULL STOP
  0700..0702    ; Sentence_Terminal # Po   [3] SYRIAC END OF PARAGRAPH..SYRIAC SUBLINEAR FULL STOP
  07F9          ; Sentence_Terminal # Po       NKO EXCLAMATION MARK
*************** AABB..AABC    ; Logical_Order_Exception
*** 1349,1360 ****
--- 1404,1417 ----
  1AA8..1AAB    ; Sentence_Terminal # Po   [4] TAI THAM SIGN KAAN..TAI THAM SIGN SATKAANKUU
  1B5A..1B5B    ; Sentence_Terminal # Po   [2] BALINESE PANTI..BALINESE PAMADA
  1B5E..1B5F    ; Sentence_Terminal # Po   [2] BALINESE CARIK SIKI..BALINESE CARIK PAREREN
+ 1B7D..1B7E    ; Sentence_Terminal # Po   [2] BALINESE PANTI LANTANG..BALINESE PAMADA LANTANG
  1C3B..1C3C    ; Sentence_Terminal # Po   [2] LEPCHA PUNCTUATION TA-ROL..LEPCHA PUNCTUATION NYET THYOOM TA-ROL
  1C7E..1C7F    ; Sentence_Terminal # Po   [2] OL CHIKI PUNCTUATION MUCAAD..OL CHIKI PUNCTUATION DOUBLE MUCAAD
  203C..203D    ; Sentence_Terminal # Po   [2] DOUBLE EXCLAMATION MARK..INTERROBANG
  2047..2049    ; Sentence_Terminal # Po   [3] DOUBLE QUESTION MARK..EXCLAMATION QUESTION MARK
  2E2E          ; Sentence_Terminal # Po       REVERSED QUESTION MARK
  2E3C          ; Sentence_Terminal # Po       STENOGRAPHIC FULL STOP
+ 2E53..2E54    ; Sentence_Terminal # Po   [2] MEDIEVAL EXCLAMATION MARK..MEDIEVAL QUESTION MARK
  3002          ; Sentence_Terminal # Po       IDEOGRAPHIC FULL STOP
  A4FF          ; Sentence_Terminal # Po       LISU PUNCTUATION FULL STOP
  A60E..A60F    ; Sentence_Terminal # Po   [2] VAI FULL STOP..VAI QUESTION MARK
*************** FF1F          ; Sentence_Terminal # Po
*** 1375,1380 ****
--- 1432,1438 ----
  FF61          ; Sentence_Terminal # Po       HALFWIDTH IDEOGRAPHIC FULL STOP
  10A56..10A57  ; Sentence_Terminal # Po   [2] KHAROSHTHI PUNCTUATION DANDA..KHAROSHTHI PUNCTUATION DOUBLE DANDA
  10F55..10F59  ; Sentence_Terminal # Po   [5] SOGDIAN PUNCTUATION TWO VERTICAL BARS..SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT
+ 10F86..10F89  ; Sentence_Terminal # Po   [4] OLD UYGHUR PUNCTUATION BAR..OLD UYGHUR PUNCTUATION FOUR DOTS
  11047..11048  ; Sentence_Terminal # Po   [2] BRAHMI DANDA..BRAHMI DOUBLE DANDA
  110BE..110C1  ; Sentence_Terminal # Po   [4] KAITHI SECTION MARK..KAITHI DOUBLE DANDA
  11141..11143  ; Sentence_Terminal # Po   [3] CHAKMA DANDA..CHAKMA QUESTION MARK
*************** FF61          ; Sentence_Terminal # Po
*** 1395,1400 ****
--- 1453,1459 ----
  11A9B..11A9C  ; Sentence_Terminal # Po   [2] SOYOMBO MARK SHAD..SOYOMBO MARK DOUBLE SHAD
  11C41..11C42  ; Sentence_Terminal # Po   [2] BHAIKSUKI DANDA..BHAIKSUKI DOUBLE DANDA
  11EF7..11EF8  ; Sentence_Terminal # Po   [2] MAKASAR PASSIMBANG..MAKASAR END OF SECTION
+ 11F43..11F44  ; Sentence_Terminal # Po   [2] KAWI DANDA..KAWI DOUBLE DANDA
  16A6E..16A6F  ; Sentence_Terminal # Po   [2] MRO DANDA..MRO DOUBLE DANDA
  16AF5         ; Sentence_Terminal # Po       BASSA VAH FULL STOP
  16B37..16B38  ; Sentence_Terminal # Po   [2] PAHAWH HMONG SIGN VOS THOM..PAHAWH HMONG SIGN VOS TSHAB CEEB
*************** FF61          ; Sentence_Terminal # Po
*** 1403,1417 ****
  1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
  
! # Total code points: 143
  
  # ================================================
  
  180B..180D    ; Variation_Selector # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
  FE00..FE0F    ; Variation_Selector # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
  E0100..E01EF  ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
  
! # Total code points: 259
  
  # ================================================
  
--- 1462,1477 ----
  1BC9F         ; Sentence_Terminal # Po       DUPLOYAN PUNCTUATION CHINOOK FULL STOP
  1DA88         ; Sentence_Terminal # Po       SIGNWRITING FULL STOP
  
! # Total code points: 154
  
  # ================================================
  
  180B..180D    ; Variation_Selector # Mn   [3] MONGOLIAN FREE VARIATION SELECTOR ONE..MONGOLIAN FREE VARIATION SELECTOR THREE
+ 180F          ; Variation_Selector # Mn       MONGOLIAN FREE VARIATION SELECTOR FOUR
  FE00..FE0F    ; Variation_Selector # Mn  [16] VARIATION SELECTOR-1..VARIATION SELECTOR-16
  E0100..E01EF  ; Variation_Selector # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
  
! # Total code points: 260
  
  # ================================================
  
*************** E0100..E01EF  ; Variation_Selector # Mn
*** 1644,1651 ****
  2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F    ; Pattern_Syntax # Po  [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
  2E50..2E51    ; Pattern_Syntax # So   [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
! 2E52          ; Pattern_Syntax # Po       TIRONIAN SIGN CAPITAL ET
! 2E53..2E7F    ; Pattern_Syntax # Cn  [45] <reserved-2E53>..<reserved-2E7F>
  3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
  3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
  3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
--- 1704,1720 ----
  2E42          ; Pattern_Syntax # Ps       DOUBLE LOW-REVERSED-9 QUOTATION MARK
  2E43..2E4F    ; Pattern_Syntax # Po  [13] DASH WITH LEFT UPTURN..CORNISH VERSE DIVIDER
  2E50..2E51    ; Pattern_Syntax # So   [2] CROSS PATTY WITH RIGHT CROSSBAR..CROSS PATTY WITH LEFT CROSSBAR
! 2E52..2E54    ; Pattern_Syntax # Po   [3] TIRONIAN SIGN CAPITAL ET..MEDIEVAL QUESTION MARK
! 2E55          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH STROKE
! 2E56          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH STROKE
! 2E57          ; Pattern_Syntax # Ps       LEFT SQUARE BRACKET WITH DOUBLE STROKE
! 2E58          ; Pattern_Syntax # Pe       RIGHT SQUARE BRACKET WITH DOUBLE STROKE
! 2E59          ; Pattern_Syntax # Ps       TOP HALF LEFT PARENTHESIS
! 2E5A          ; Pattern_Syntax # Pe       TOP HALF RIGHT PARENTHESIS
! 2E5B          ; Pattern_Syntax # Ps       BOTTOM HALF LEFT PARENTHESIS
! 2E5C          ; Pattern_Syntax # Pe       BOTTOM HALF RIGHT PARENTHESIS
! 2E5D          ; Pattern_Syntax # Pd       OBLIQUE HYPHEN
! 2E5E..2E7F    ; Pattern_Syntax # Cn  [34] <reserved-2E5E>..<reserved-2E7F>
  3001..3003    ; Pattern_Syntax # Po   [3] IDEOGRAPHIC COMMA..DITTO MARK
  3008          ; Pattern_Syntax # Ps       LEFT ANGLE BRACKET
  3009          ; Pattern_Syntax # Pe       RIGHT ANGLE BRACKET
*************** FE45..FE46    ; Pattern_Syntax # Po   [2
*** 1682,1692 ****
  0600..0605    ; Prepended_Concatenation_Mark # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
  06DD          ; Prepended_Concatenation_Mark # Cf       ARABIC END OF AYAH
  070F          ; Prepended_Concatenation_Mark # Cf       SYRIAC ABBREVIATION MARK
  08E2          ; Prepended_Concatenation_Mark # Cf       ARABIC DISPUTED END OF AYAH
  110BD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN
  110CD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN ABOVE
  
! # Total code points: 11
  
  # ================================================
  
--- 1751,1762 ----
  0600..0605    ; Prepended_Concatenation_Mark # Cf   [6] ARABIC NUMBER SIGN..ARABIC NUMBER MARK ABOVE
  06DD          ; Prepended_Concatenation_Mark # Cf       ARABIC END OF AYAH
  070F          ; Prepended_Concatenation_Mark # Cf       SYRIAC ABBREVIATION MARK
+ 0890..0891    ; Prepended_Concatenation_Mark # Cf   [2] ARABIC POUND MARK ABOVE..ARABIC PIASTRE MARK ABOVE
  08E2          ; Prepended_Concatenation_Mark # Cf       ARABIC DISPUTED END OF AYAH
  110BD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN
  110CD         ; Prepended_Concatenation_Mark # Cf       KAITHI NUMBER SIGN ABOVE
  
! # Total code points: 13
  
  # ================================================
  
diff -Nrcpad gcc-12.2.0/contrib/unicode/README gcc-13.1.0/contrib/unicode/README
*** gcc-12.2.0/contrib/unicode/README	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unicode/README	Wed Apr 26 07:09:39 2023
***************
*** 1,15 ****
  This directory contains a mechanism for GCC to have its own internal
! implementation of wcwidth functionality.  (cpp_wcwidth () in libcpp/charset.c).
  
! The idea is to produce the necessary lookup table
! (../../libcpp/generated_cpp_wcwidth.h) in a reproducible way, starting from the
! following files that are distributed by the Unicode Consortium:
  
  ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
  ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
  ftp://ftp.unicode.org/Public/UNIDATA/PropList.txt
  
! These three files have been added to source control in this directory;
  please see unicode-license.txt for the relevant copyright information.
  
  In order to keep in sync with glibc's wcwidth as much as possible, it is
--- 1,22 ----
  This directory contains a mechanism for GCC to have its own internal
! implementation of wcwidth functionality (cpp_wcwidth () in libcpp/charset.c),
! as well as a mechanism to update the information about codepoints permitted in
! identifiers, which is encoded in libcpp/ucnid.h, and mapping between Unicode
! names and codepoints, which is encoded in libcpp/uname2c.h.
  
! The idea is to produce the necessary lookup tables
! (../../libcpp/{ucnid.h,uname2c.h,generated_cpp_wcwidth.h}) in a reproducible
! way, starting from the following files that are distributed by the Unicode
! Consortium:
  
  ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
  ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
  ftp://ftp.unicode.org/Public/UNIDATA/PropList.txt
+ ftp://ftp.unicode.org/Public/UNIDATA/DerivedNormalizationProps.txt
+ ftp://ftp.unicode.org/Public/UNIDATA/DerivedCoreProperties.txt
+ ftp://ftp.unicode.org/Public/UNIDATA/NameAliases.txt
  
! These files have been added to source control in this directory;
  please see unicode-license.txt for the relevant copyright information.
  
  In order to keep in sync with glibc's wcwidth as much as possible, it is
*************** localedata/unicode-gen/unicode_utils.py
*** 23,44 ****
  localedata/unicode-gen/utf8_gen.py
  
  And the most recent versions added to GCC are from glibc git commit:
! f6032247061fb37d59565f2e9667e242c8a98e76
  
! Finally, the script gen_wcwidth.py found here contains the GCC-specific code to
  map glibc's output to the lookup tables we require.  This script should not need
  to change, unless there are structural changes to the Unicode data files or to
! the glibc code.
  
! The procedure to update GCC's wcwidth tables is the following:
  
! 1.  Update the three Unicode data files from the above URLs.
  
  2.  Update the two glibc files in from_glibc/ from glibc's git.  Update
      the commit number above in this README.
  
  3.  Run ./gen_wcwidth.py X.Y > ../../libcpp/generated_cpp_wcwidth.h
      (where X.Y is the version of the Unicode standard corresponding to the
!     Unicode data files being used, most recently, 13.0.0).
  
! After that, GCC's wcwidth will match the most recent glibc.
--- 30,73 ----
  localedata/unicode-gen/utf8_gen.py
  
  And the most recent versions added to GCC are from glibc git commit:
! 4c721f24fc190d1dc935eb0bab283de7cf13182e
  
! The script gen_wcwidth.py found here contains the GCC-specific code to
  map glibc's output to the lookup tables we require.  This script should not need
  to change, unless there are structural changes to the Unicode data files or to
! the glibc code.  Similarly, makeucnid.cc in ../../libcpp contains the logic to
! produce ucnid.h.
  
! The procedure to update GCC's Unicode support is the following:
  
! 1.  Update the five Unicode data files from the above URLs.
  
  2.  Update the two glibc files in from_glibc/ from glibc's git.  Update
      the commit number above in this README.
  
  3.  Run ./gen_wcwidth.py X.Y > ../../libcpp/generated_cpp_wcwidth.h
      (where X.Y is the version of the Unicode standard corresponding to the
!     Unicode data files being used, most recently, 15.0.0).
  
! 4.  Update Unicode Copyright years in libcpp/makeucnid.cc and in
!     libcpp/makeuname2c.cc up to the year in which the Unicode
!     standard has been released.
! 
! 5.  Compile makeucnid, e.g. with:
!       g++ -O2 ../../libcpp/makeucnid.cc -o ../../libcpp/makeucnid
! 
! 6.  Generate ucnid.h as follows:
!       ../../libcpp/makeucnid ../../libcpp/ucnid.tab UnicodeData.txt \
! 	DerivedNormalizationProps.txt DerivedCoreProperties.txt \
! 	> ../../libcpp/ucnid.h
! 
! 7.  Read the corresponding Unicode's standard and update correspondingly
!     generated_ranges table in libcpp/makeuname2c.cc (in Unicode 15 all
!     the needed information was in Table 4-8).
! 
! 8.  Compile makeuname2c, e.g. with:
!       g++ -O2 ../../libcpp/makeuname2c.cc -o ../../libcpp/makeuname2c
! 
! 9:  Generate uname2c.h as follows:
!       ../../libcpp/makeuname2c UnicodeData.txt NameAliases.txt \
! 	> ../../libcpp/uname2c.h
diff -Nrcpad gcc-12.2.0/contrib/unicode/UnicodeData.txt gcc-13.1.0/contrib/unicode/UnicodeData.txt
*** gcc-12.2.0/contrib/unicode/UnicodeData.txt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unicode/UnicodeData.txt	Wed Apr 26 07:09:39 2023
***************
*** 1525,1530 ****
--- 1525,1531 ----
  061A;ARABIC SMALL KASRA;Mn;32;NSM;;;;;N;;;;;
  061B;ARABIC SEMICOLON;Po;0;AL;;;;;N;;;;;
  061C;ARABIC LETTER MARK;Cf;0;AL;;;;;N;;;;;
+ 061D;ARABIC END OF TEXT MARK;Po;0;AL;;;;;N;;;;;
  061E;ARABIC TRIPLE DOT PUNCTUATION MARK;Po;0;AL;;;;;N;;;;;
  061F;ARABIC QUESTION MARK;Po;0;AL;;;;;N;;;;;
  0620;ARABIC LETTER KASHMIRI YEH;Lo;0;AL;;;;;N;;;;;
***************
*** 2089,2094 ****
--- 2090,2136 ----
  0868;SYRIAC LETTER MALAYALAM LLA;Lo;0;AL;;;;;N;;;;;
  0869;SYRIAC LETTER MALAYALAM LLLA;Lo;0;AL;;;;;N;;;;;
  086A;SYRIAC LETTER MALAYALAM SSA;Lo;0;AL;;;;;N;;;;;
+ 0870;ARABIC LETTER ALEF WITH ATTACHED FATHA;Lo;0;AL;;;;;N;;;;;
+ 0871;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA;Lo;0;AL;;;;;N;;;;;
+ 0872;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;;
+ 0873;ARABIC LETTER ALEF WITH LEFT MIDDLE STROKE;Lo;0;AL;;;;;N;;;;;
+ 0874;ARABIC LETTER ALEF WITH ATTACHED KASRA;Lo;0;AL;;;;;N;;;;;
+ 0875;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA;Lo;0;AL;;;;;N;;;;;
+ 0876;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+ 0877;ARABIC LETTER ALEF WITH ATTACHED RIGHT ROUND DOT;Lo;0;AL;;;;;N;;;;;
+ 0878;ARABIC LETTER ALEF WITH ATTACHED LEFT ROUND DOT;Lo;0;AL;;;;;N;;;;;
+ 0879;ARABIC LETTER ALEF WITH ATTACHED ROUND DOT BELOW;Lo;0;AL;;;;;N;;;;;
+ 087A;ARABIC LETTER ALEF WITH DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+ 087B;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+ 087C;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+ 087D;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND DOT ABOVE;Lo;0;AL;;;;;N;;;;;
+ 087E;ARABIC LETTER ALEF WITH ATTACHED TOP RIGHT FATHA AND LEFT RING;Lo;0;AL;;;;;N;;;;;
+ 087F;ARABIC LETTER ALEF WITH RIGHT MIDDLE STROKE AND LEFT RING;Lo;0;AL;;;;;N;;;;;
+ 0880;ARABIC LETTER ALEF WITH ATTACHED BOTTOM RIGHT KASRA AND LEFT RING;Lo;0;AL;;;;;N;;;;;
+ 0881;ARABIC LETTER ALEF WITH ATTACHED RIGHT HAMZA;Lo;0;AL;;;;;N;;;;;
+ 0882;ARABIC LETTER ALEF WITH ATTACHED LEFT HAMZA;Lo;0;AL;;;;;N;;;;;
+ 0883;ARABIC TATWEEL WITH OVERSTRUCK HAMZA;Lo;0;AL;;;;;N;;;;;
+ 0884;ARABIC TATWEEL WITH OVERSTRUCK WAW;Lo;0;AL;;;;;N;;;;;
+ 0885;ARABIC TATWEEL WITH TWO DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+ 0886;ARABIC LETTER THIN YEH;Lo;0;AL;;;;;N;;;;;
+ 0887;ARABIC BASELINE ROUND DOT;Lo;0;AL;;;;;N;;;;;
+ 0888;ARABIC RAISED ROUND DOT;Sk;0;AL;;;;;N;;;;;
+ 0889;ARABIC LETTER NOON WITH INVERTED SMALL V;Lo;0;AL;;;;;N;;;;;
+ 088A;ARABIC LETTER HAH WITH INVERTED SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
+ 088B;ARABIC LETTER TAH WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+ 088C;ARABIC LETTER TAH WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
+ 088D;ARABIC LETTER KEHEH WITH TWO DOTS VERTICALLY BELOW;Lo;0;AL;;;;;N;;;;;
+ 088E;ARABIC VERTICAL TAIL;Lo;0;AL;;;;;N;;;;;
+ 0890;ARABIC POUND MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+ 0891;ARABIC PIASTRE MARK ABOVE;Cf;0;AN;;;;;N;;;;;
+ 0898;ARABIC SMALL HIGH WORD AL-JUZ;Mn;230;NSM;;;;;N;;;;;
+ 0899;ARABIC SMALL LOW WORD ISHMAAM;Mn;220;NSM;;;;;N;;;;;
+ 089A;ARABIC SMALL LOW WORD IMAALA;Mn;220;NSM;;;;;N;;;;;
+ 089B;ARABIC SMALL LOW WORD TASHEEL;Mn;220;NSM;;;;;N;;;;;
+ 089C;ARABIC MADDA WAAJIB;Mn;230;NSM;;;;;N;;;;;
+ 089D;ARABIC SUPERSCRIPT ALEF MOKHASSAS;Mn;230;NSM;;;;;N;;;;;
+ 089E;ARABIC DOUBLED MADDA;Mn;230;NSM;;;;;N;;;;;
+ 089F;ARABIC HALF MADDA OVER MADDA;Mn;230;NSM;;;;;N;;;;;
  08A0;ARABIC LETTER BEH WITH SMALL V BELOW;Lo;0;AL;;;;;N;;;;;
  08A1;ARABIC LETTER BEH WITH HAMZA ABOVE;Lo;0;AL;;;;;N;;;;;
  08A2;ARABIC LETTER JEEM WITH TWO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
***************
*** 2110,2115 ****
--- 2152,2158 ----
  08B2;ARABIC LETTER ZAIN WITH INVERTED V ABOVE;Lo;0;AL;;;;;N;;;;;
  08B3;ARABIC LETTER AIN WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
  08B4;ARABIC LETTER KAF WITH DOT BELOW;Lo;0;AL;;;;;N;;;;;
+ 08B5;ARABIC LETTER QAF WITH DOT BELOW AND NO DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
  08B6;ARABIC LETTER BEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;
  08B7;ARABIC LETTER PEH WITH SMALL MEEM ABOVE;Lo;0;AL;;;;;N;;;;;
  08B8;ARABIC LETTER TEH WITH SMALL TEH ABOVE;Lo;0;AL;;;;;N;;;;;
***************
*** 2128,2133 ****
--- 2171,2187 ----
  08C5;ARABIC LETTER JEEM WITH THREE DOTS ABOVE;Lo;0;AL;;;;;N;;;;;
  08C6;ARABIC LETTER JEEM WITH THREE DOTS BELOW;Lo;0;AL;;;;;N;;;;;
  08C7;ARABIC LETTER LAM WITH SMALL ARABIC LETTER TAH ABOVE;Lo;0;AL;;;;;N;;;;;
+ 08C8;ARABIC LETTER GRAF;Lo;0;AL;;;;;N;;;;;
+ 08C9;ARABIC SMALL FARSI YEH;Lm;0;AL;;;;;N;;;;;
+ 08CA;ARABIC SMALL HIGH FARSI YEH;Mn;230;NSM;;;;;N;;;;;
+ 08CB;ARABIC SMALL HIGH YEH BARREE WITH TWO DOTS BELOW;Mn;230;NSM;;;;;N;;;;;
+ 08CC;ARABIC SMALL HIGH WORD SAH;Mn;230;NSM;;;;;N;;;;;
+ 08CD;ARABIC SMALL HIGH ZAH;Mn;230;NSM;;;;;N;;;;;
+ 08CE;ARABIC LARGE ROUND DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 08CF;ARABIC LARGE ROUND DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+ 08D0;ARABIC SUKUN BELOW;Mn;220;NSM;;;;;N;;;;;
+ 08D1;ARABIC LARGE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;;
+ 08D2;ARABIC LARGE ROUND DOT INSIDE CIRCLE BELOW;Mn;220;NSM;;;;;N;;;;;
  08D3;ARABIC SMALL LOW WAW;Mn;220;NSM;;;;;N;;;;;
  08D4;ARABIC SMALL HIGH WORD AR-RUB;Mn;230;NSM;;;;;N;;;;;
  08D5;ARABIC SMALL HIGH SAD;Mn;230;NSM;;;;;N;;;;;
***************
*** 2786,2791 ****
--- 2840,2846 ----
  0C37;TELUGU LETTER SSA;Lo;0;L;;;;;N;;;;;
  0C38;TELUGU LETTER SA;Lo;0;L;;;;;N;;;;;
  0C39;TELUGU LETTER HA;Lo;0;L;;;;;N;;;;;
+ 0C3C;TELUGU SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
  0C3D;TELUGU SIGN AVAGRAHA;Lo;0;L;;;;;N;;;;;
  0C3E;TELUGU VOWEL SIGN AA;Mn;0;NSM;;;;;N;;;;;
  0C3F;TELUGU VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
***************
*** 2806,2811 ****
--- 2861,2867 ----
  0C58;TELUGU LETTER TSA;Lo;0;L;;;;;N;;;;;
  0C59;TELUGU LETTER DZA;Lo;0;L;;;;;N;;;;;
  0C5A;TELUGU LETTER RRRA;Lo;0;L;;;;;N;;;;;
+ 0C5D;TELUGU LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;;
  0C60;TELUGU LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
  0C61;TELUGU LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
  0C62;TELUGU VOWEL SIGN VOCALIC L;Mn;0;NSM;;;;;N;;;;;
***************
*** 2901,2906 ****
--- 2957,2963 ----
  0CCD;KANNADA SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
  0CD5;KANNADA LENGTH MARK;Mc;0;L;;;;;N;;;;;
  0CD6;KANNADA AI LENGTH MARK;Mc;0;L;;;;;N;;;;;
+ 0CDD;KANNADA LETTER NAKAARA POLLU;Lo;0;L;;;;;N;;;;;
  0CDE;KANNADA LETTER FA;Lo;0;L;;;;;N;;;;;
  0CE0;KANNADA LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
  0CE1;KANNADA LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
***************
*** 2918,2923 ****
--- 2975,2981 ----
  0CEF;KANNADA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  0CF1;KANNADA SIGN JIHVAMULIYA;Lo;0;L;;;;;N;;;;;
  0CF2;KANNADA SIGN UPADHMANIYA;Lo;0;L;;;;;N;;;;;
+ 0CF3;KANNADA SIGN COMBINING ANUSVARA ABOVE RIGHT;Mc;0;L;;;;;N;;;;;
  0D00;MALAYALAM SIGN COMBINING ANUSVARA ABOVE;Mn;0;NSM;;;;;N;;;;;
  0D01;MALAYALAM SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
  0D02;MALAYALAM SIGN ANUSVARA;Mc;0;L;;;;;N;;;;;
***************
*** 3282,3287 ****
--- 3340,3346 ----
  0ECB;LAO TONE MAI CATAWA;Mn;122;NSM;;;;;N;;;;;
  0ECC;LAO CANCELLATION MARK;Mn;0;NSM;;;;;N;;;;;
  0ECD;LAO NIGGAHITA;Mn;0;NSM;;;;;N;;;;;
+ 0ECE;LAO YAMAKKAN;Mn;0;NSM;;;;;N;;;;;
  0ED0;LAO DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
  0ED1;LAO DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
  0ED2;LAO DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
***************
*** 5258,5263 ****
--- 5317,5323 ----
  170A;TAGALOG LETTER BA;Lo;0;L;;;;;N;;;;;
  170B;TAGALOG LETTER MA;Lo;0;L;;;;;N;;;;;
  170C;TAGALOG LETTER YA;Lo;0;L;;;;;N;;;;;
+ 170D;TAGALOG LETTER RA;Lo;0;L;;;;;N;;;;;
  170E;TAGALOG LETTER LA;Lo;0;L;;;;;N;;;;;
  170F;TAGALOG LETTER WA;Lo;0;L;;;;;N;;;;;
  1710;TAGALOG LETTER SA;Lo;0;L;;;;;N;;;;;
***************
*** 5265,5270 ****
--- 5325,5332 ----
  1712;TAGALOG VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
  1713;TAGALOG VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
  1714;TAGALOG SIGN VIRAMA;Mn;9;NSM;;;;;N;;;;;
+ 1715;TAGALOG SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;;
+ 171F;TAGALOG LETTER ARCHAIC RA;Lo;0;L;;;;;N;;;;;
  1720;HANUNOO LETTER A;Lo;0;L;;;;;N;;;;;
  1721;HANUNOO LETTER I;Lo;0;L;;;;;N;;;;;
  1722;HANUNOO LETTER U;Lo;0;L;;;;;N;;;;;
***************
*** 5285,5291 ****
  1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
  1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
  1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
! 1734;HANUNOO SIGN PAMUDPOD;Mn;9;NSM;;;;;N;;;;;
  1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
  1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
  1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
--- 5347,5353 ----
  1731;HANUNOO LETTER HA;Lo;0;L;;;;;N;;;;;
  1732;HANUNOO VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
  1733;HANUNOO VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
! 1734;HANUNOO SIGN PAMUDPOD;Mc;9;L;;;;;N;;;;;
  1735;PHILIPPINE SINGLE PUNCTUATION;Po;0;L;;;;;N;;;;;
  1736;PHILIPPINE DOUBLE PUNCTUATION;Po;0;L;;;;;N;;;;;
  1740;BUHID LETTER A;Lo;0;L;;;;;N;;;;;
***************
*** 5455,5460 ****
--- 5517,5523 ----
  180C;MONGOLIAN FREE VARIATION SELECTOR TWO;Mn;0;NSM;;;;;N;;;;;
  180D;MONGOLIAN FREE VARIATION SELECTOR THREE;Mn;0;NSM;;;;;N;;;;;
  180E;MONGOLIAN VOWEL SEPARATOR;Cf;0;BN;;;;;N;;;;;
+ 180F;MONGOLIAN FREE VARIATION SELECTOR FOUR;Mn;0;NSM;;;;;N;;;;;
  1810;MONGOLIAN DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
  1811;MONGOLIAN DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
  1812;MONGOLIAN DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
***************
*** 6059,6064 ****
--- 6122,6141 ----
  1ABE;COMBINING PARENTHESES OVERLAY;Me;0;NSM;;;;;N;;;;;
  1ABF;COMBINING LATIN SMALL LETTER W BELOW;Mn;220;NSM;;;;;N;;;;;
  1AC0;COMBINING LATIN SMALL LETTER TURNED W BELOW;Mn;220;NSM;;;;;N;;;;;
+ 1AC1;COMBINING LEFT PARENTHESIS ABOVE LEFT;Mn;230;NSM;;;;;N;;;;;
+ 1AC2;COMBINING RIGHT PARENTHESIS ABOVE RIGHT;Mn;230;NSM;;;;;N;;;;;
+ 1AC3;COMBINING LEFT PARENTHESIS BELOW LEFT;Mn;220;NSM;;;;;N;;;;;
+ 1AC4;COMBINING RIGHT PARENTHESIS BELOW RIGHT;Mn;220;NSM;;;;;N;;;;;
+ 1AC5;COMBINING SQUARE BRACKETS ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 1AC6;COMBINING NUMBER SIGN ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 1AC7;COMBINING INVERTED DOUBLE ARCH ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 1AC8;COMBINING PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 1AC9;COMBINING DOUBLE PLUS SIGN ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 1ACA;COMBINING DOUBLE PLUS SIGN BELOW;Mn;220;NSM;;;;;N;;;;;
+ 1ACB;COMBINING TRIPLE ACUTE ACCENT;Mn;230;NSM;;;;;N;;;;;
+ 1ACC;COMBINING LATIN SMALL LETTER INSULAR G;Mn;230;NSM;;;;;N;;;;;
+ 1ACD;COMBINING LATIN SMALL LETTER INSULAR R;Mn;230;NSM;;;;;N;;;;;
+ 1ACE;COMBINING LATIN SMALL LETTER INSULAR T;Mn;230;NSM;;;;;N;;;;;
  1B00;BALINESE SIGN ULU RICEM;Mn;0;NSM;;;;;N;;;;;
  1B01;BALINESE SIGN ULU CANDRA;Mn;0;NSM;;;;;N;;;;;
  1B02;BALINESE SIGN CECEK;Mn;0;NSM;;;;;N;;;;;
***************
*** 6135,6140 ****
--- 6212,6218 ----
  1B49;BALINESE LETTER VE SASAK;Lo;0;L;;;;;N;;;;;
  1B4A;BALINESE LETTER ZAL SASAK;Lo;0;L;;;;;N;;;;;
  1B4B;BALINESE LETTER ASYURA SASAK;Lo;0;L;;;;;N;;;;;
+ 1B4C;BALINESE LETTER ARCHAIC JNYA;Lo;0;L;;;;;N;;;;;
  1B50;BALINESE DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
  1B51;BALINESE DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
  1B52;BALINESE DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
***************
*** 6180,6185 ****
--- 6258,6265 ----
  1B7A;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLAK;So;0;L;;;;;N;;;;;
  1B7B;BALINESE MUSICAL SYMBOL LEFT-HAND CLOSED PLUK;So;0;L;;;;;N;;;;;
  1B7C;BALINESE MUSICAL SYMBOL LEFT-HAND OPEN PING;So;0;L;;;;;N;;;;;
+ 1B7D;BALINESE PANTI LANTANG;Po;0;L;;;;;N;;;;;
+ 1B7E;BALINESE PAMADA LANTANG;Po;0;L;;;;;N;;;;;
  1B80;SUNDANESE SIGN PANYECEK;Mn;0;NSM;;;;;N;;;;;
  1B81;SUNDANESE SIGN PANGLAYAR;Mn;0;NSM;;;;;N;;;;;
  1B82;SUNDANESE SIGN PANGWISAD;Mc;0;L;;;;;N;;;;;
***************
*** 6778,6783 ****
--- 6858,6864 ----
  1DF7;COMBINING KAVYKA ABOVE LEFT;Mn;228;NSM;;;;;N;;;;;
  1DF8;COMBINING DOT ABOVE LEFT;Mn;228;NSM;;;;;N;;;;;
  1DF9;COMBINING WIDE INVERTED BRIDGE BELOW;Mn;220;NSM;;;;;N;;;;;
+ 1DFA;COMBINING DOT BELOW LEFT;Mn;218;NSM;;;;;N;;;;;
  1DFB;COMBINING DELETION MARK;Mn;230;NSM;;;;;N;;;;;
  1DFC;COMBINING DOUBLE INVERTED BREVE BELOW;Mn;233;NSM;;;;;N;;;;;
  1DFD;COMBINING ALMOST EQUAL TO BELOW;Mn;220;NSM;;;;;N;;;;;
***************
*** 7457,7462 ****
--- 7538,7544 ----
  20BD;RUBLE SIGN;Sc;0;ET;;;;;N;;;;;
  20BE;LARI SIGN;Sc;0;ET;;;;;N;;;;;
  20BF;BITCOIN SIGN;Sc;0;ET;;;;;N;;;;;
+ 20C0;SOM SIGN;Sc;0;ET;;;;;N;;;;;
  20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
  20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
  20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
***************
*** 10300,10305 ****
--- 10382,10388 ----
  2C2C;GLAGOLITIC CAPITAL LETTER SHTAPIC;Lu;0;L;;;;;N;;;;2C5C;
  2C2D;GLAGOLITIC CAPITAL LETTER TROKUTASTI A;Lu;0;L;;;;;N;;;;2C5D;
  2C2E;GLAGOLITIC CAPITAL LETTER LATINATE MYSLITE;Lu;0;L;;;;;N;;;;2C5E;
+ 2C2F;GLAGOLITIC CAPITAL LETTER CAUDATE CHRIVI;Lu;0;L;;;;;N;;;;2C5F;
  2C30;GLAGOLITIC SMALL LETTER AZU;Ll;0;L;;;;;N;;;2C00;;2C00
  2C31;GLAGOLITIC SMALL LETTER BUKY;Ll;0;L;;;;;N;;;2C01;;2C01
  2C32;GLAGOLITIC SMALL LETTER VEDE;Ll;0;L;;;;;N;;;2C02;;2C02
***************
*** 10347,10352 ****
--- 10430,10436 ----
  2C5C;GLAGOLITIC SMALL LETTER SHTAPIC;Ll;0;L;;;;;N;;;2C2C;;2C2C
  2C5D;GLAGOLITIC SMALL LETTER TROKUTASTI A;Ll;0;L;;;;;N;;;2C2D;;2C2D
  2C5E;GLAGOLITIC SMALL LETTER LATINATE MYSLITE;Ll;0;L;;;;;N;;;2C2E;;2C2E
+ 2C5F;GLAGOLITIC SMALL LETTER CAUDATE CHRIVI;Ll;0;L;;;;;N;;;2C2F;;2C2F
  2C60;LATIN CAPITAL LETTER L WITH DOUBLE BAR;Lu;0;L;;;;;N;;;;2C61;
  2C61;LATIN SMALL LETTER L WITH DOUBLE BAR;Ll;0;L;;;;;N;;;2C60;;2C60
  2C62;LATIN CAPITAL LETTER L WITH MIDDLE TILDE;Lu;0;L;;;;;N;;;;026B;
***************
*** 10795,10800 ****
--- 10879,10895 ----
  2E50;CROSS PATTY WITH RIGHT CROSSBAR;So;0;ON;;;;;N;;;;;
  2E51;CROSS PATTY WITH LEFT CROSSBAR;So;0;ON;;;;;N;;;;;
  2E52;TIRONIAN SIGN CAPITAL ET;Po;0;ON;;;;;N;;;;;
+ 2E53;MEDIEVAL EXCLAMATION MARK;Po;0;ON;;;;;N;;;;;
+ 2E54;MEDIEVAL QUESTION MARK;Po;0;ON;;;;;N;;;;;
+ 2E55;LEFT SQUARE BRACKET WITH STROKE;Ps;0;ON;;;;;Y;;;;;
+ 2E56;RIGHT SQUARE BRACKET WITH STROKE;Pe;0;ON;;;;;Y;;;;;
+ 2E57;LEFT SQUARE BRACKET WITH DOUBLE STROKE;Ps;0;ON;;;;;Y;;;;;
+ 2E58;RIGHT SQUARE BRACKET WITH DOUBLE STROKE;Pe;0;ON;;;;;Y;;;;;
+ 2E59;TOP HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+ 2E5A;TOP HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+ 2E5B;BOTTOM HALF LEFT PARENTHESIS;Ps;0;ON;;;;;Y;;;;;
+ 2E5C;BOTTOM HALF RIGHT PARENTHESIS;Pe;0;ON;;;;;Y;;;;;
+ 2E5D;OBLIQUE HYPHEN;Pd;0;ON;;;;;N;;;;;
  2E80;CJK RADICAL REPEAT;So;0;ON;;;;;N;;;;;
  2E81;CJK RADICAL CLIFF;So;0;ON;;;;;N;;;;;
  2E82;CJK RADICAL SECOND ONE;So;0;ON;;;;;N;;;;;
***************
*** 12204,12210 ****
  4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
  4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
  4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
! 9FFC;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
  A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
  A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
  A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
--- 12299,12305 ----
  4DFE;HEXAGRAM FOR AFTER COMPLETION;So;0;ON;;;;;N;;;;;
  4DFF;HEXAGRAM FOR BEFORE COMPLETION;So;0;ON;;;;;N;;;;;
  4E00;<CJK Ideograph, First>;Lo;0;L;;;;;N;;;;;
! 9FFF;<CJK Ideograph, Last>;Lo;0;L;;;;;N;;;;;
  A000;YI SYLLABLE IT;Lo;0;L;;;;;N;;;;;
  A001;YI SYLLABLE IX;Lo;0;L;;;;;N;;;;;
  A002;YI SYLLABLE I;Lo;0;L;;;;;N;;;;;
*************** A7BC;LATIN CAPITAL LETTER GLOTTAL I;Lu;0
*** 14149,14154 ****
--- 14244,14251 ----
  A7BD;LATIN SMALL LETTER GLOTTAL I;Ll;0;L;;;;;N;;;A7BC;;A7BC
  A7BE;LATIN CAPITAL LETTER GLOTTAL U;Lu;0;L;;;;;N;;;;A7BF;
  A7BF;LATIN SMALL LETTER GLOTTAL U;Ll;0;L;;;;;N;;;A7BE;;A7BE
+ A7C0;LATIN CAPITAL LETTER OLD POLISH O;Lu;0;L;;;;;N;;;;A7C1;
+ A7C1;LATIN SMALL LETTER OLD POLISH O;Ll;0;L;;;;;N;;;A7C0;;A7C0
  A7C2;LATIN CAPITAL LETTER ANGLICANA W;Lu;0;L;;;;;N;;;;A7C3;
  A7C3;LATIN SMALL LETTER ANGLICANA W;Ll;0;L;;;;;N;;;A7C2;;A7C2
  A7C4;LATIN CAPITAL LETTER C WITH PALATAL HOOK;Lu;0;L;;;;;N;;;;A794;
*************** A7C7;LATIN CAPITAL LETTER D WITH SHORT S
*** 14158,14163 ****
--- 14255,14271 ----
  A7C8;LATIN SMALL LETTER D WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C7;;A7C7
  A7C9;LATIN CAPITAL LETTER S WITH SHORT STROKE OVERLAY;Lu;0;L;;;;;N;;;;A7CA;
  A7CA;LATIN SMALL LETTER S WITH SHORT STROKE OVERLAY;Ll;0;L;;;;;N;;;A7C9;;A7C9
+ A7D0;LATIN CAPITAL LETTER CLOSED INSULAR G;Lu;0;L;;;;;N;;;;A7D1;
+ A7D1;LATIN SMALL LETTER CLOSED INSULAR G;Ll;0;L;;;;;N;;;A7D0;;A7D0
+ A7D3;LATIN SMALL LETTER DOUBLE THORN;Ll;0;L;;;;;N;;;;;
+ A7D5;LATIN SMALL LETTER DOUBLE WYNN;Ll;0;L;;;;;N;;;;;
+ A7D6;LATIN CAPITAL LETTER MIDDLE SCOTS S;Lu;0;L;;;;;N;;;;A7D7;
+ A7D7;LATIN SMALL LETTER MIDDLE SCOTS S;Ll;0;L;;;;;N;;;A7D6;;A7D6
+ A7D8;LATIN CAPITAL LETTER SIGMOID S;Lu;0;L;;;;;N;;;;A7D9;
+ A7D9;LATIN SMALL LETTER SIGMOID S;Ll;0;L;;;;;N;;;A7D8;;A7D8
+ A7F2;MODIFIER LETTER CAPITAL C;Lm;0;L;<super> 0043;;;;N;;;;;
+ A7F3;MODIFIER LETTER CAPITAL F;Lm;0;L;<super> 0046;;;;N;;;;;
+ A7F4;MODIFIER LETTER CAPITAL Q;Lm;0;L;<super> 0051;;;;N;;;;;
  A7F5;LATIN CAPITAL LETTER REVERSED HALF H;Lu;0;L;;;;;N;;;;A7F6;
  A7F6;LATIN SMALL LETTER REVERSED HALF H;Ll;0;L;;;;;N;;;A7F5;;A7F5
  A7F7;LATIN EPIGRAPHIC LETTER SIDEWAYS I;Lo;0;L;;;;;N;;;;;
*************** FBBE;ARABIC SYMBOL TWO DOTS VERTICALLY B
*** 15794,15799 ****
--- 15902,15908 ----
  FBBF;ARABIC SYMBOL RING;Sk;0;AL;;;;;N;;;;;
  FBC0;ARABIC SYMBOL SMALL TAH ABOVE;Sk;0;AL;;;;;N;;;;;
  FBC1;ARABIC SYMBOL SMALL TAH BELOW;Sk;0;AL;;;;;N;;;;;
+ FBC2;ARABIC SYMBOL WASLA ABOVE;Sk;0;AL;;;;;N;;;;;
  FBD3;ARABIC LETTER NG ISOLATED FORM;Lo;0;AL;<isolated> 06AD;;;;N;;;;;
  FBD4;ARABIC LETTER NG FINAL FORM;Lo;0;AL;<final> 06AD;;;;N;;;;;
  FBD5;ARABIC LETTER NG INITIAL FORM;Lo;0;AL;<initial> 06AD;;;;N;;;;;
*************** FD3C;ARABIC LIGATURE ALEF WITH FATHATAN
*** 16159,16164 ****
--- 16268,16289 ----
  FD3D;ARABIC LIGATURE ALEF WITH FATHATAN ISOLATED FORM;Lo;0;AL;<isolated> 0627 064B;;;;N;;;;;
  FD3E;ORNATE LEFT PARENTHESIS;Pe;0;ON;;;;;N;;;;;
  FD3F;ORNATE RIGHT PARENTHESIS;Ps;0;ON;;;;;N;;;;;
+ FD40;ARABIC LIGATURE RAHIMAHU ALLAAH;So;0;ON;;;;;N;;;;;
+ FD41;ARABIC LIGATURE RADI ALLAAHU ANH;So;0;ON;;;;;N;;;;;
+ FD42;ARABIC LIGATURE RADI ALLAAHU ANHAA;So;0;ON;;;;;N;;;;;
+ FD43;ARABIC LIGATURE RADI ALLAAHU ANHUM;So;0;ON;;;;;N;;;;;
+ FD44;ARABIC LIGATURE RADI ALLAAHU ANHUMAA;So;0;ON;;;;;N;;;;;
+ FD45;ARABIC LIGATURE RADI ALLAAHU ANHUNNA;So;0;ON;;;;;N;;;;;
+ FD46;ARABIC LIGATURE SALLALLAAHU ALAYHI WA-AALIH;So;0;ON;;;;;N;;;;;
+ FD47;ARABIC LIGATURE ALAYHI AS-SALAAM;So;0;ON;;;;;N;;;;;
+ FD48;ARABIC LIGATURE ALAYHIM AS-SALAAM;So;0;ON;;;;;N;;;;;
+ FD49;ARABIC LIGATURE ALAYHIMAA AS-SALAAM;So;0;ON;;;;;N;;;;;
+ FD4A;ARABIC LIGATURE ALAYHI AS-SALAATU WAS-SALAAM;So;0;ON;;;;;N;;;;;
+ FD4B;ARABIC LIGATURE QUDDISA SIRRAH;So;0;ON;;;;;N;;;;;
+ FD4C;ARABIC LIGATURE SALLALLAHU ALAYHI WAAALIHEE WA-SALLAM;So;0;ON;;;;;N;;;;;
+ FD4D;ARABIC LIGATURE ALAYHAA AS-SALAAM;So;0;ON;;;;;N;;;;;
+ FD4E;ARABIC LIGATURE TABAARAKA WA-TAAALAA;So;0;ON;;;;;N;;;;;
+ FD4F;ARABIC LIGATURE RAHIMAHUM ALLAAH;So;0;ON;;;;;N;;;;;
  FD50;ARABIC LIGATURE TEH WITH JEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062C 0645;;;;N;;;;;
  FD51;ARABIC LIGATURE TEH WITH HAH WITH JEEM FINAL FORM;Lo;0;AL;<final> 062A 062D 062C;;;;N;;;;;
  FD52;ARABIC LIGATURE TEH WITH HAH WITH JEEM INITIAL FORM;Lo;0;AL;<initial> 062A 062D 062C;;;;N;;;;;
*************** FDC4;ARABIC LIGATURE AIN WITH JEEM WITH
*** 16277,16282 ****
--- 16402,16408 ----
  FDC5;ARABIC LIGATURE SAD WITH MEEM WITH MEEM INITIAL FORM;Lo;0;AL;<initial> 0635 0645 0645;;;;N;;;;;
  FDC6;ARABIC LIGATURE SEEN WITH KHAH WITH YEH FINAL FORM;Lo;0;AL;<final> 0633 062E 064A;;;;N;;;;;
  FDC7;ARABIC LIGATURE NOON WITH JEEM WITH YEH FINAL FORM;Lo;0;AL;<final> 0646 062C 064A;;;;N;;;;;
+ FDCF;ARABIC LIGATURE SALAAMUHU ALAYNAA;So;0;ON;;;;;N;;;;;
  FDF0;ARABIC LIGATURE SALLA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0635 0644 06D2;;;;N;;;;;
  FDF1;ARABIC LIGATURE QALA USED AS KORANIC STOP SIGN ISOLATED FORM;Lo;0;AL;<isolated> 0642 0644 06D2;;;;N;;;;;
  FDF2;ARABIC LIGATURE ALLAH ISOLATED FORM;Lo;0;AL;<isolated> 0627 0644 0644 0647;;;;N;;;;;
*************** FDFA;ARABIC LIGATURE SALLALLAHOU ALAYHE
*** 16291,16296 ****
--- 16417,16424 ----
  FDFB;ARABIC LIGATURE JALLAJALALOUHOU;Lo;0;AL;<isolated> 062C 0644 0020 062C 0644 0627 0644 0647;;;;N;ARABIC LETTER JALLAJALALOUHOU;;;;
  FDFC;RIAL SIGN;Sc;0;AL;<isolated> 0631 06CC 0627 0644;;;;N;;;;;
  FDFD;ARABIC LIGATURE BISMILLAH AR-RAHMAN AR-RAHEEM;So;0;ON;;;;;N;;;;;
+ FDFE;ARABIC LIGATURE SUBHAANAHU WA TAAALAA;So;0;ON;;;;;N;;;;;
+ FDFF;ARABIC LIGATURE AZZA WA JALL;So;0;ON;;;;;N;;;;;
  FE00;VARIATION SELECTOR-1;Mn;0;NSM;;;;;N;;;;;
  FE01;VARIATION SELECTOR-2;Mn;0;NSM;;;;;N;;;;;
  FE02;VARIATION SELECTOR-3;Mn;0;NSM;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 17798,17803 ****
--- 17926,18001 ----
  10562;CAUCASIAN ALBANIAN LETTER PIWR;Lo;0;L;;;;;N;;;;;
  10563;CAUCASIAN ALBANIAN LETTER KIW;Lo;0;L;;;;;N;;;;;
  1056F;CAUCASIAN ALBANIAN CITATION MARK;Po;0;L;;;;;N;;;;;
+ 10570;VITHKUQI CAPITAL LETTER A;Lu;0;L;;;;;N;;;;10597;
+ 10571;VITHKUQI CAPITAL LETTER BBE;Lu;0;L;;;;;N;;;;10598;
+ 10572;VITHKUQI CAPITAL LETTER BE;Lu;0;L;;;;;N;;;;10599;
+ 10573;VITHKUQI CAPITAL LETTER CE;Lu;0;L;;;;;N;;;;1059A;
+ 10574;VITHKUQI CAPITAL LETTER CHE;Lu;0;L;;;;;N;;;;1059B;
+ 10575;VITHKUQI CAPITAL LETTER DE;Lu;0;L;;;;;N;;;;1059C;
+ 10576;VITHKUQI CAPITAL LETTER DHE;Lu;0;L;;;;;N;;;;1059D;
+ 10577;VITHKUQI CAPITAL LETTER EI;Lu;0;L;;;;;N;;;;1059E;
+ 10578;VITHKUQI CAPITAL LETTER E;Lu;0;L;;;;;N;;;;1059F;
+ 10579;VITHKUQI CAPITAL LETTER FE;Lu;0;L;;;;;N;;;;105A0;
+ 1057A;VITHKUQI CAPITAL LETTER GA;Lu;0;L;;;;;N;;;;105A1;
+ 1057C;VITHKUQI CAPITAL LETTER HA;Lu;0;L;;;;;N;;;;105A3;
+ 1057D;VITHKUQI CAPITAL LETTER HHA;Lu;0;L;;;;;N;;;;105A4;
+ 1057E;VITHKUQI CAPITAL LETTER I;Lu;0;L;;;;;N;;;;105A5;
+ 1057F;VITHKUQI CAPITAL LETTER IJE;Lu;0;L;;;;;N;;;;105A6;
+ 10580;VITHKUQI CAPITAL LETTER JE;Lu;0;L;;;;;N;;;;105A7;
+ 10581;VITHKUQI CAPITAL LETTER KA;Lu;0;L;;;;;N;;;;105A8;
+ 10582;VITHKUQI CAPITAL LETTER LA;Lu;0;L;;;;;N;;;;105A9;
+ 10583;VITHKUQI CAPITAL LETTER LLA;Lu;0;L;;;;;N;;;;105AA;
+ 10584;VITHKUQI CAPITAL LETTER ME;Lu;0;L;;;;;N;;;;105AB;
+ 10585;VITHKUQI CAPITAL LETTER NE;Lu;0;L;;;;;N;;;;105AC;
+ 10586;VITHKUQI CAPITAL LETTER NJE;Lu;0;L;;;;;N;;;;105AD;
+ 10587;VITHKUQI CAPITAL LETTER O;Lu;0;L;;;;;N;;;;105AE;
+ 10588;VITHKUQI CAPITAL LETTER PE;Lu;0;L;;;;;N;;;;105AF;
+ 10589;VITHKUQI CAPITAL LETTER QA;Lu;0;L;;;;;N;;;;105B0;
+ 1058A;VITHKUQI CAPITAL LETTER RE;Lu;0;L;;;;;N;;;;105B1;
+ 1058C;VITHKUQI CAPITAL LETTER SE;Lu;0;L;;;;;N;;;;105B3;
+ 1058D;VITHKUQI CAPITAL LETTER SHE;Lu;0;L;;;;;N;;;;105B4;
+ 1058E;VITHKUQI CAPITAL LETTER TE;Lu;0;L;;;;;N;;;;105B5;
+ 1058F;VITHKUQI CAPITAL LETTER THE;Lu;0;L;;;;;N;;;;105B6;
+ 10590;VITHKUQI CAPITAL LETTER U;Lu;0;L;;;;;N;;;;105B7;
+ 10591;VITHKUQI CAPITAL LETTER VE;Lu;0;L;;;;;N;;;;105B8;
+ 10592;VITHKUQI CAPITAL LETTER XE;Lu;0;L;;;;;N;;;;105B9;
+ 10594;VITHKUQI CAPITAL LETTER Y;Lu;0;L;;;;;N;;;;105BB;
+ 10595;VITHKUQI CAPITAL LETTER ZE;Lu;0;L;;;;;N;;;;105BC;
+ 10597;VITHKUQI SMALL LETTER A;Ll;0;L;;;;;N;;;10570;;10570
+ 10598;VITHKUQI SMALL LETTER BBE;Ll;0;L;;;;;N;;;10571;;10571
+ 10599;VITHKUQI SMALL LETTER BE;Ll;0;L;;;;;N;;;10572;;10572
+ 1059A;VITHKUQI SMALL LETTER CE;Ll;0;L;;;;;N;;;10573;;10573
+ 1059B;VITHKUQI SMALL LETTER CHE;Ll;0;L;;;;;N;;;10574;;10574
+ 1059C;VITHKUQI SMALL LETTER DE;Ll;0;L;;;;;N;;;10575;;10575
+ 1059D;VITHKUQI SMALL LETTER DHE;Ll;0;L;;;;;N;;;10576;;10576
+ 1059E;VITHKUQI SMALL LETTER EI;Ll;0;L;;;;;N;;;10577;;10577
+ 1059F;VITHKUQI SMALL LETTER E;Ll;0;L;;;;;N;;;10578;;10578
+ 105A0;VITHKUQI SMALL LETTER FE;Ll;0;L;;;;;N;;;10579;;10579
+ 105A1;VITHKUQI SMALL LETTER GA;Ll;0;L;;;;;N;;;1057A;;1057A
+ 105A3;VITHKUQI SMALL LETTER HA;Ll;0;L;;;;;N;;;1057C;;1057C
+ 105A4;VITHKUQI SMALL LETTER HHA;Ll;0;L;;;;;N;;;1057D;;1057D
+ 105A5;VITHKUQI SMALL LETTER I;Ll;0;L;;;;;N;;;1057E;;1057E
+ 105A6;VITHKUQI SMALL LETTER IJE;Ll;0;L;;;;;N;;;1057F;;1057F
+ 105A7;VITHKUQI SMALL LETTER JE;Ll;0;L;;;;;N;;;10580;;10580
+ 105A8;VITHKUQI SMALL LETTER KA;Ll;0;L;;;;;N;;;10581;;10581
+ 105A9;VITHKUQI SMALL LETTER LA;Ll;0;L;;;;;N;;;10582;;10582
+ 105AA;VITHKUQI SMALL LETTER LLA;Ll;0;L;;;;;N;;;10583;;10583
+ 105AB;VITHKUQI SMALL LETTER ME;Ll;0;L;;;;;N;;;10584;;10584
+ 105AC;VITHKUQI SMALL LETTER NE;Ll;0;L;;;;;N;;;10585;;10585
+ 105AD;VITHKUQI SMALL LETTER NJE;Ll;0;L;;;;;N;;;10586;;10586
+ 105AE;VITHKUQI SMALL LETTER O;Ll;0;L;;;;;N;;;10587;;10587
+ 105AF;VITHKUQI SMALL LETTER PE;Ll;0;L;;;;;N;;;10588;;10588
+ 105B0;VITHKUQI SMALL LETTER QA;Ll;0;L;;;;;N;;;10589;;10589
+ 105B1;VITHKUQI SMALL LETTER RE;Ll;0;L;;;;;N;;;1058A;;1058A
+ 105B3;VITHKUQI SMALL LETTER SE;Ll;0;L;;;;;N;;;1058C;;1058C
+ 105B4;VITHKUQI SMALL LETTER SHE;Ll;0;L;;;;;N;;;1058D;;1058D
+ 105B5;VITHKUQI SMALL LETTER TE;Ll;0;L;;;;;N;;;1058E;;1058E
+ 105B6;VITHKUQI SMALL LETTER THE;Ll;0;L;;;;;N;;;1058F;;1058F
+ 105B7;VITHKUQI SMALL LETTER U;Ll;0;L;;;;;N;;;10590;;10590
+ 105B8;VITHKUQI SMALL LETTER VE;Ll;0;L;;;;;N;;;10591;;10591
+ 105B9;VITHKUQI SMALL LETTER XE;Ll;0;L;;;;;N;;;10592;;10592
+ 105BB;VITHKUQI SMALL LETTER Y;Ll;0;L;;;;;N;;;10594;;10594
+ 105BC;VITHKUQI SMALL LETTER ZE;Ll;0;L;;;;;N;;;10595;;10595
  10600;LINEAR A SIGN AB001;Lo;0;L;;;;;N;;;;;
  10601;LINEAR A SIGN AB002;Lo;0;L;;;;;N;;;;;
  10602;LINEAR A SIGN AB003;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 18139,18144 ****
--- 18337,18399 ----
  10765;LINEAR A SIGN A805;Lo;0;L;;;;;N;;;;;
  10766;LINEAR A SIGN A806;Lo;0;L;;;;;N;;;;;
  10767;LINEAR A SIGN A807;Lo;0;L;;;;;N;;;;;
+ 10780;MODIFIER LETTER SMALL CAPITAL AA;Lm;0;L;;;;;N;;;;;
+ 10781;MODIFIER LETTER SUPERSCRIPT TRIANGULAR COLON;Lm;0;L;<super> 02D0;;;;N;;;;;
+ 10782;MODIFIER LETTER SUPERSCRIPT HALF TRIANGULAR COLON;Lm;0;L;<super> 02D1;;;;N;;;;;
+ 10783;MODIFIER LETTER SMALL AE;Lm;0;L;<super> 00E6;;;;N;;;;;
+ 10784;MODIFIER LETTER SMALL CAPITAL B;Lm;0;L;<super> 0299;;;;N;;;;;
+ 10785;MODIFIER LETTER SMALL B WITH HOOK;Lm;0;L;<super> 0253;;;;N;;;;;
+ 10787;MODIFIER LETTER SMALL DZ DIGRAPH;Lm;0;L;<super> 02A3;;;;N;;;;;
+ 10788;MODIFIER LETTER SMALL DZ DIGRAPH WITH RETROFLEX HOOK;Lm;0;L;<super> AB66;;;;N;;;;;
+ 10789;MODIFIER LETTER SMALL DZ DIGRAPH WITH CURL;Lm;0;L;<super> 02A5;;;;N;;;;;
+ 1078A;MODIFIER LETTER SMALL DEZH DIGRAPH;Lm;0;L;<super> 02A4;;;;N;;;;;
+ 1078B;MODIFIER LETTER SMALL D WITH TAIL;Lm;0;L;<super> 0256;;;;N;;;;;
+ 1078C;MODIFIER LETTER SMALL D WITH HOOK;Lm;0;L;<super> 0257;;;;N;;;;;
+ 1078D;MODIFIER LETTER SMALL D WITH HOOK AND TAIL;Lm;0;L;<super> 1D91;;;;N;;;;;
+ 1078E;MODIFIER LETTER SMALL REVERSED E;Lm;0;L;<super> 0258;;;;N;;;;;
+ 1078F;MODIFIER LETTER SMALL CLOSED REVERSED OPEN E;Lm;0;L;<super> 025E;;;;N;;;;;
+ 10790;MODIFIER LETTER SMALL FENG DIGRAPH;Lm;0;L;<super> 02A9;;;;N;;;;;
+ 10791;MODIFIER LETTER SMALL RAMS HORN;Lm;0;L;<super> 0264;;;;N;;;;;
+ 10792;MODIFIER LETTER SMALL CAPITAL G;Lm;0;L;<super> 0262;;;;N;;;;;
+ 10793;MODIFIER LETTER SMALL G WITH HOOK;Lm;0;L;<super> 0260;;;;N;;;;;
+ 10794;MODIFIER LETTER SMALL CAPITAL G WITH HOOK;Lm;0;L;<super> 029B;;;;N;;;;;
+ 10795;MODIFIER LETTER SMALL H WITH STROKE;Lm;0;L;<super> 0127;;;;N;;;;;
+ 10796;MODIFIER LETTER SMALL CAPITAL H;Lm;0;L;<super> 029C;;;;N;;;;;
+ 10797;MODIFIER LETTER SMALL HENG WITH HOOK;Lm;0;L;<super> 0267;;;;N;;;;;
+ 10798;MODIFIER LETTER SMALL DOTLESS J WITH STROKE AND HOOK;Lm;0;L;<super> 0284;;;;N;;;;;
+ 10799;MODIFIER LETTER SMALL LS DIGRAPH;Lm;0;L;<super> 02AA;;;;N;;;;;
+ 1079A;MODIFIER LETTER SMALL LZ DIGRAPH;Lm;0;L;<super> 02AB;;;;N;;;;;
+ 1079B;MODIFIER LETTER SMALL L WITH BELT;Lm;0;L;<super> 026C;;;;N;;;;;
+ 1079C;MODIFIER LETTER SMALL CAPITAL L WITH BELT;Lm;0;L;<super> 1DF04;;;;N;;;;;
+ 1079D;MODIFIER LETTER SMALL L WITH RETROFLEX HOOK AND BELT;Lm;0;L;<super> A78E;;;;N;;;;;
+ 1079E;MODIFIER LETTER SMALL LEZH;Lm;0;L;<super> 026E;;;;N;;;;;
+ 1079F;MODIFIER LETTER SMALL LEZH WITH RETROFLEX HOOK;Lm;0;L;<super> 1DF05;;;;N;;;;;
+ 107A0;MODIFIER LETTER SMALL TURNED Y;Lm;0;L;<super> 028E;;;;N;;;;;
+ 107A1;MODIFIER LETTER SMALL TURNED Y WITH BELT;Lm;0;L;<super> 1DF06;;;;N;;;;;
+ 107A2;MODIFIER LETTER SMALL O WITH STROKE;Lm;0;L;<super> 00F8;;;;N;;;;;
+ 107A3;MODIFIER LETTER SMALL CAPITAL OE;Lm;0;L;<super> 0276;;;;N;;;;;
+ 107A4;MODIFIER LETTER SMALL CLOSED OMEGA;Lm;0;L;<super> 0277;;;;N;;;;;
+ 107A5;MODIFIER LETTER SMALL Q;Lm;0;L;<super> 0071;;;;N;;;;;
+ 107A6;MODIFIER LETTER SMALL TURNED R WITH LONG LEG;Lm;0;L;<super> 027A;;;;N;;;;;
+ 107A7;MODIFIER LETTER SMALL TURNED R WITH LONG LEG AND RETROFLEX HOOK;Lm;0;L;<super> 1DF08;;;;N;;;;;
+ 107A8;MODIFIER LETTER SMALL R WITH TAIL;Lm;0;L;<super> 027D;;;;N;;;;;
+ 107A9;MODIFIER LETTER SMALL R WITH FISHHOOK;Lm;0;L;<super> 027E;;;;N;;;;;
+ 107AA;MODIFIER LETTER SMALL CAPITAL R;Lm;0;L;<super> 0280;;;;N;;;;;
+ 107AB;MODIFIER LETTER SMALL TC DIGRAPH WITH CURL;Lm;0;L;<super> 02A8;;;;N;;;;;
+ 107AC;MODIFIER LETTER SMALL TS DIGRAPH;Lm;0;L;<super> 02A6;;;;N;;;;;
+ 107AD;MODIFIER LETTER SMALL TS DIGRAPH WITH RETROFLEX HOOK;Lm;0;L;<super> AB67;;;;N;;;;;
+ 107AE;MODIFIER LETTER SMALL TESH DIGRAPH;Lm;0;L;<super> 02A7;;;;N;;;;;
+ 107AF;MODIFIER LETTER SMALL T WITH RETROFLEX HOOK;Lm;0;L;<super> 0288;;;;N;;;;;
+ 107B0;MODIFIER LETTER SMALL V WITH RIGHT HOOK;Lm;0;L;<super> 2C71;;;;N;;;;;
+ 107B2;MODIFIER LETTER SMALL CAPITAL Y;Lm;0;L;<super> 028F;;;;N;;;;;
+ 107B3;MODIFIER LETTER GLOTTAL STOP WITH STROKE;Lm;0;L;<super> 02A1;;;;N;;;;;
+ 107B4;MODIFIER LETTER REVERSED GLOTTAL STOP WITH STROKE;Lm;0;L;<super> 02A2;;;;N;;;;;
+ 107B5;MODIFIER LETTER BILABIAL CLICK;Lm;0;L;<super> 0298;;;;N;;;;;
+ 107B6;MODIFIER LETTER DENTAL CLICK;Lm;0;L;<super> 01C0;;;;N;;;;;
+ 107B7;MODIFIER LETTER LATERAL CLICK;Lm;0;L;<super> 01C1;;;;N;;;;;
+ 107B8;MODIFIER LETTER ALVEOLAR CLICK;Lm;0;L;<super> 01C2;;;;N;;;;;
+ 107B9;MODIFIER LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lm;0;L;<super> 1DF0A;;;;N;;;;;
+ 107BA;MODIFIER LETTER SMALL S WITH CURL;Lm;0;L;<super> 1DF1E;;;;N;;;;;
  10800;CYPRIOT SYLLABLE A;Lo;0;R;;;;;N;;;;;
  10801;CYPRIOT SYLLABLE E;Lo;0;R;;;;;N;;;;;
  10802;CYPRIOT SYLLABLE I;Lo;0;R;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19140,19145 ****
--- 19395,19403 ----
  10EAD;YEZIDI HYPHENATION MARK;Pd;0;R;;;;;N;;;;;
  10EB0;YEZIDI LETTER LAM WITH DOT ABOVE;Lo;0;R;;;;;N;;;;;
  10EB1;YEZIDI LETTER YOT WITH CIRCUMFLEX ABOVE;Lo;0;R;;;;;N;;;;;
+ 10EFD;ARABIC SMALL LOW WORD SAKTA;Mn;220;NSM;;;;;N;;;;;
+ 10EFE;ARABIC SMALL LOW WORD QASR;Mn;220;NSM;;;;;N;;;;;
+ 10EFF;ARABIC SMALL LOW WORD MADDA;Mn;220;NSM;;;;;N;;;;;
  10F00;OLD SOGDIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
  10F01;OLD SOGDIAN LETTER FINAL ALEPH;Lo;0;R;;;;;N;;;;;
  10F02;OLD SOGDIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19222,19227 ****
--- 19480,19511 ----
  10F57;SOGDIAN PUNCTUATION CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
  10F58;SOGDIAN PUNCTUATION TWO CIRCLES WITH DOTS;Po;0;AL;;;;;N;;;;;
  10F59;SOGDIAN PUNCTUATION HALF CIRCLE WITH DOT;Po;0;AL;;;;;N;;;;;
+ 10F70;OLD UYGHUR LETTER ALEPH;Lo;0;R;;;;;N;;;;;
+ 10F71;OLD UYGHUR LETTER BETH;Lo;0;R;;;;;N;;;;;
+ 10F72;OLD UYGHUR LETTER GIMEL-HETH;Lo;0;R;;;;;N;;;;;
+ 10F73;OLD UYGHUR LETTER WAW;Lo;0;R;;;;;N;;;;;
+ 10F74;OLD UYGHUR LETTER ZAYIN;Lo;0;R;;;;;N;;;;;
+ 10F75;OLD UYGHUR LETTER FINAL HETH;Lo;0;R;;;;;N;;;;;
+ 10F76;OLD UYGHUR LETTER YODH;Lo;0;R;;;;;N;;;;;
+ 10F77;OLD UYGHUR LETTER KAPH;Lo;0;R;;;;;N;;;;;
+ 10F78;OLD UYGHUR LETTER LAMEDH;Lo;0;R;;;;;N;;;;;
+ 10F79;OLD UYGHUR LETTER MEM;Lo;0;R;;;;;N;;;;;
+ 10F7A;OLD UYGHUR LETTER NUN;Lo;0;R;;;;;N;;;;;
+ 10F7B;OLD UYGHUR LETTER SAMEKH;Lo;0;R;;;;;N;;;;;
+ 10F7C;OLD UYGHUR LETTER PE;Lo;0;R;;;;;N;;;;;
+ 10F7D;OLD UYGHUR LETTER SADHE;Lo;0;R;;;;;N;;;;;
+ 10F7E;OLD UYGHUR LETTER RESH;Lo;0;R;;;;;N;;;;;
+ 10F7F;OLD UYGHUR LETTER SHIN;Lo;0;R;;;;;N;;;;;
+ 10F80;OLD UYGHUR LETTER TAW;Lo;0;R;;;;;N;;;;;
+ 10F81;OLD UYGHUR LETTER LESH;Lo;0;R;;;;;N;;;;;
+ 10F82;OLD UYGHUR COMBINING DOT ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 10F83;OLD UYGHUR COMBINING DOT BELOW;Mn;220;NSM;;;;;N;;;;;
+ 10F84;OLD UYGHUR COMBINING TWO DOTS ABOVE;Mn;230;NSM;;;;;N;;;;;
+ 10F85;OLD UYGHUR COMBINING TWO DOTS BELOW;Mn;220;NSM;;;;;N;;;;;
+ 10F86;OLD UYGHUR PUNCTUATION BAR;Po;0;R;;;;;N;;;;;
+ 10F87;OLD UYGHUR PUNCTUATION TWO BARS;Po;0;R;;;;;N;;;;;
+ 10F88;OLD UYGHUR PUNCTUATION TWO DOTS;Po;0;R;;;;;N;;;;;
+ 10F89;OLD UYGHUR PUNCTUATION FOUR DOTS;Po;0;R;;;;;N;;;;;
  10FB0;CHORASMIAN LETTER ALEPH;Lo;0;R;;;;;N;;;;;
  10FB1;CHORASMIAN LETTER SMALL ALEPH;Lo;0;R;;;;;N;;;;;
  10FB2;CHORASMIAN LETTER BETH;Lo;0;R;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19381,19386 ****
--- 19665,19676 ----
  1106D;BRAHMI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
  1106E;BRAHMI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
  1106F;BRAHMI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+ 11070;BRAHMI SIGN OLD TAMIL VIRAMA;Mn;9;NSM;;;;;N;;;;;
+ 11071;BRAHMI LETTER OLD TAMIL SHORT E;Lo;0;L;;;;;N;;;;;
+ 11072;BRAHMI LETTER OLD TAMIL SHORT O;Lo;0;L;;;;;N;;;;;
+ 11073;BRAHMI VOWEL SIGN OLD TAMIL SHORT E;Mn;0;NSM;;;;;N;;;;;
+ 11074;BRAHMI VOWEL SIGN OLD TAMIL SHORT O;Mn;0;NSM;;;;;N;;;;;
+ 11075;BRAHMI LETTER OLD TAMIL LLA;Lo;0;L;;;;;N;;;;;
  1107F;BRAHMI NUMBER JOINER;Mn;9;NSM;;;;;N;;;;;
  11080;KAITHI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
  11081;KAITHI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19448,19453 ****
--- 19738,19744 ----
  110BF;KAITHI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
  110C0;KAITHI DANDA;Po;0;L;;;;;N;;;;;
  110C1;KAITHI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+ 110C2;KAITHI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
  110CD;KAITHI NUMBER SIGN ABOVE;Cf;0;L;;;;;N;;;;;
  110D0;SORA SOMPENG LETTER SAH;Lo;0;L;;;;;N;;;;;
  110D1;SORA SOMPENG LETTER TAH;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 19772,19777 ****
--- 20063,20071 ----
  1123C;KHOJKI DOUBLE SECTION MARK;Po;0;L;;;;;N;;;;;
  1123D;KHOJKI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
  1123E;KHOJKI SIGN SUKUN;Mn;0;NSM;;;;;N;;;;;
+ 1123F;KHOJKI LETTER QA;Lo;0;L;;;;;N;;;;;
+ 11240;KHOJKI LETTER SHORT I;Lo;0;L;;;;;N;;;;;
+ 11241;KHOJKI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
  11280;MULTANI LETTER A;Lo;0;L;;;;;N;;;;;
  11281;MULTANI LETTER I;Lo;0;L;;;;;N;;;;;
  11282;MULTANI LETTER U;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 20385,20390 ****
--- 20679,20685 ----
  116B6;TAKRI SIGN VIRAMA;Mc;9;L;;;;;N;;;;;
  116B7;TAKRI SIGN NUKTA;Mn;7;NSM;;;;;N;;;;;
  116B8;TAKRI LETTER ARCHAIC KHA;Lo;0;L;;;;;N;;;;;
+ 116B9;TAKRI ABBREVIATION SIGN;Po;0;L;;;;;N;;;;;
  116C0;TAKRI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
  116C1;TAKRI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
  116C2;TAKRI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 20453,20458 ****
--- 20748,20760 ----
  1173D;AHOM SIGN SECTION;Po;0;L;;;;;N;;;;;
  1173E;AHOM SIGN RULAI;Po;0;L;;;;;N;;;;;
  1173F;AHOM SYMBOL VI;So;0;L;;;;;N;;;;;
+ 11740;AHOM LETTER CA;Lo;0;L;;;;;N;;;;;
+ 11741;AHOM LETTER TTA;Lo;0;L;;;;;N;;;;;
+ 11742;AHOM LETTER TTHA;Lo;0;L;;;;;N;;;;;
+ 11743;AHOM LETTER DDA;Lo;0;L;;;;;N;;;;;
+ 11744;AHOM LETTER DDHA;Lo;0;L;;;;;N;;;;;
+ 11745;AHOM LETTER NNA;Lo;0;L;;;;;N;;;;;
+ 11746;AHOM LETTER LLA;Lo;0;L;;;;;N;;;;;
  11800;DOGRA LETTER A;Lo;0;L;;;;;N;;;;;
  11801;DOGRA LETTER AA;Lo;0;L;;;;;N;;;;;
  11802;DOGRA LETTER I;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 20889,20894 ****
--- 21191,21212 ----
  11AA0;SOYOMBO HEAD MARK WITH MOON AND SUN;Po;0;L;;;;;N;;;;;
  11AA1;SOYOMBO TERMINAL MARK-1;Po;0;L;;;;;N;;;;;
  11AA2;SOYOMBO TERMINAL MARK-2;Po;0;L;;;;;N;;;;;
+ 11AB0;CANADIAN SYLLABICS NATTILIK HI;Lo;0;L;;;;;N;;;;;
+ 11AB1;CANADIAN SYLLABICS NATTILIK HII;Lo;0;L;;;;;N;;;;;
+ 11AB2;CANADIAN SYLLABICS NATTILIK HO;Lo;0;L;;;;;N;;;;;
+ 11AB3;CANADIAN SYLLABICS NATTILIK HOO;Lo;0;L;;;;;N;;;;;
+ 11AB4;CANADIAN SYLLABICS NATTILIK HA;Lo;0;L;;;;;N;;;;;
+ 11AB5;CANADIAN SYLLABICS NATTILIK HAA;Lo;0;L;;;;;N;;;;;
+ 11AB6;CANADIAN SYLLABICS NATTILIK SHRI;Lo;0;L;;;;;N;;;;;
+ 11AB7;CANADIAN SYLLABICS NATTILIK SHRII;Lo;0;L;;;;;N;;;;;
+ 11AB8;CANADIAN SYLLABICS NATTILIK SHRO;Lo;0;L;;;;;N;;;;;
+ 11AB9;CANADIAN SYLLABICS NATTILIK SHROO;Lo;0;L;;;;;N;;;;;
+ 11ABA;CANADIAN SYLLABICS NATTILIK SHRA;Lo;0;L;;;;;N;;;;;
+ 11ABB;CANADIAN SYLLABICS NATTILIK SHRAA;Lo;0;L;;;;;N;;;;;
+ 11ABC;CANADIAN SYLLABICS SPE;Lo;0;L;;;;;N;;;;;
+ 11ABD;CANADIAN SYLLABICS SPI;Lo;0;L;;;;;N;;;;;
+ 11ABE;CANADIAN SYLLABICS SPO;Lo;0;L;;;;;N;;;;;
+ 11ABF;CANADIAN SYLLABICS SPA;Lo;0;L;;;;;N;;;;;
  11AC0;PAU CIN HAU LETTER PA;Lo;0;L;;;;;N;;;;;
  11AC1;PAU CIN HAU LETTER KA;Lo;0;L;;;;;N;;;;;
  11AC2;PAU CIN HAU LETTER LA;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 20946,20951 ****
--- 21264,21279 ----
  11AF6;PAU CIN HAU LOW-FALLING TONE LONG FINAL;Lo;0;L;;;;;N;;;;;
  11AF7;PAU CIN HAU LOW-FALLING TONE FINAL;Lo;0;L;;;;;N;;;;;
  11AF8;PAU CIN HAU GLOTTAL STOP FINAL;Lo;0;L;;;;;N;;;;;
+ 11B00;DEVANAGARI HEAD MARK;Po;0;L;;;;;N;;;;;
+ 11B01;DEVANAGARI HEAD MARK WITH HEADSTROKE;Po;0;L;;;;;N;;;;;
+ 11B02;DEVANAGARI SIGN BHALE;Po;0;L;;;;;N;;;;;
+ 11B03;DEVANAGARI SIGN BHALE WITH HOOK;Po;0;L;;;;;N;;;;;
+ 11B04;DEVANAGARI SIGN EXTENDED BHALE;Po;0;L;;;;;N;;;;;
+ 11B05;DEVANAGARI SIGN EXTENDED BHALE WITH HOOK;Po;0;L;;;;;N;;;;;
+ 11B06;DEVANAGARI SIGN WESTERN FIVE-LIKE BHALE;Po;0;L;;;;;N;;;;;
+ 11B07;DEVANAGARI SIGN WESTERN NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
+ 11B08;DEVANAGARI SIGN REVERSED NINE-LIKE BHALE;Po;0;L;;;;;N;;;;;
+ 11B09;DEVANAGARI SIGN MINDU;Po;0;L;;;;;N;;;;;
  11C00;BHAIKSUKI LETTER A;Lo;0;L;;;;;N;;;;;
  11C01;BHAIKSUKI LETTER AA;Lo;0;L;;;;;N;;;;;
  11C02;BHAIKSUKI LETTER I;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 21274,21279 ****
--- 21602,21693 ----
  11EF6;MAKASAR VOWEL SIGN O;Mc;0;L;;;;;N;;;;;
  11EF7;MAKASAR PASSIMBANG;Po;0;L;;;;;N;;;;;
  11EF8;MAKASAR END OF SECTION;Po;0;L;;;;;N;;;;;
+ 11F00;KAWI SIGN CANDRABINDU;Mn;0;NSM;;;;;N;;;;;
+ 11F01;KAWI SIGN ANUSVARA;Mn;0;NSM;;;;;N;;;;;
+ 11F02;KAWI SIGN REPHA;Lo;0;L;;;;;N;;;;;
+ 11F03;KAWI SIGN VISARGA;Mc;0;L;;;;;N;;;;;
+ 11F04;KAWI LETTER A;Lo;0;L;;;;;N;;;;;
+ 11F05;KAWI LETTER AA;Lo;0;L;;;;;N;;;;;
+ 11F06;KAWI LETTER I;Lo;0;L;;;;;N;;;;;
+ 11F07;KAWI LETTER II;Lo;0;L;;;;;N;;;;;
+ 11F08;KAWI LETTER U;Lo;0;L;;;;;N;;;;;
+ 11F09;KAWI LETTER UU;Lo;0;L;;;;;N;;;;;
+ 11F0A;KAWI LETTER VOCALIC R;Lo;0;L;;;;;N;;;;;
+ 11F0B;KAWI LETTER VOCALIC RR;Lo;0;L;;;;;N;;;;;
+ 11F0C;KAWI LETTER VOCALIC L;Lo;0;L;;;;;N;;;;;
+ 11F0D;KAWI LETTER VOCALIC LL;Lo;0;L;;;;;N;;;;;
+ 11F0E;KAWI LETTER E;Lo;0;L;;;;;N;;;;;
+ 11F0F;KAWI LETTER AI;Lo;0;L;;;;;N;;;;;
+ 11F10;KAWI LETTER O;Lo;0;L;;;;;N;;;;;
+ 11F12;KAWI LETTER KA;Lo;0;L;;;;;N;;;;;
+ 11F13;KAWI LETTER KHA;Lo;0;L;;;;;N;;;;;
+ 11F14;KAWI LETTER GA;Lo;0;L;;;;;N;;;;;
+ 11F15;KAWI LETTER GHA;Lo;0;L;;;;;N;;;;;
+ 11F16;KAWI LETTER NGA;Lo;0;L;;;;;N;;;;;
+ 11F17;KAWI LETTER CA;Lo;0;L;;;;;N;;;;;
+ 11F18;KAWI LETTER CHA;Lo;0;L;;;;;N;;;;;
+ 11F19;KAWI LETTER JA;Lo;0;L;;;;;N;;;;;
+ 11F1A;KAWI LETTER JHA;Lo;0;L;;;;;N;;;;;
+ 11F1B;KAWI LETTER NYA;Lo;0;L;;;;;N;;;;;
+ 11F1C;KAWI LETTER TTA;Lo;0;L;;;;;N;;;;;
+ 11F1D;KAWI LETTER TTHA;Lo;0;L;;;;;N;;;;;
+ 11F1E;KAWI LETTER DDA;Lo;0;L;;;;;N;;;;;
+ 11F1F;KAWI LETTER DDHA;Lo;0;L;;;;;N;;;;;
+ 11F20;KAWI LETTER NNA;Lo;0;L;;;;;N;;;;;
+ 11F21;KAWI LETTER TA;Lo;0;L;;;;;N;;;;;
+ 11F22;KAWI LETTER THA;Lo;0;L;;;;;N;;;;;
+ 11F23;KAWI LETTER DA;Lo;0;L;;;;;N;;;;;
+ 11F24;KAWI LETTER DHA;Lo;0;L;;;;;N;;;;;
+ 11F25;KAWI LETTER NA;Lo;0;L;;;;;N;;;;;
+ 11F26;KAWI LETTER PA;Lo;0;L;;;;;N;;;;;
+ 11F27;KAWI LETTER PHA;Lo;0;L;;;;;N;;;;;
+ 11F28;KAWI LETTER BA;Lo;0;L;;;;;N;;;;;
+ 11F29;KAWI LETTER BHA;Lo;0;L;;;;;N;;;;;
+ 11F2A;KAWI LETTER MA;Lo;0;L;;;;;N;;;;;
+ 11F2B;KAWI LETTER YA;Lo;0;L;;;;;N;;;;;
+ 11F2C;KAWI LETTER RA;Lo;0;L;;;;;N;;;;;
+ 11F2D;KAWI LETTER LA;Lo;0;L;;;;;N;;;;;
+ 11F2E;KAWI LETTER WA;Lo;0;L;;;;;N;;;;;
+ 11F2F;KAWI LETTER SHA;Lo;0;L;;;;;N;;;;;
+ 11F30;KAWI LETTER SSA;Lo;0;L;;;;;N;;;;;
+ 11F31;KAWI LETTER SA;Lo;0;L;;;;;N;;;;;
+ 11F32;KAWI LETTER HA;Lo;0;L;;;;;N;;;;;
+ 11F33;KAWI LETTER JNYA;Lo;0;L;;;;;N;;;;;
+ 11F34;KAWI VOWEL SIGN AA;Mc;0;L;;;;;N;;;;;
+ 11F35;KAWI VOWEL SIGN ALTERNATE AA;Mc;0;L;;;;;N;;;;;
+ 11F36;KAWI VOWEL SIGN I;Mn;0;NSM;;;;;N;;;;;
+ 11F37;KAWI VOWEL SIGN II;Mn;0;NSM;;;;;N;;;;;
+ 11F38;KAWI VOWEL SIGN U;Mn;0;NSM;;;;;N;;;;;
+ 11F39;KAWI VOWEL SIGN UU;Mn;0;NSM;;;;;N;;;;;
+ 11F3A;KAWI VOWEL SIGN VOCALIC R;Mn;0;NSM;;;;;N;;;;;
+ 11F3E;KAWI VOWEL SIGN E;Mc;0;L;;;;;N;;;;;
+ 11F3F;KAWI VOWEL SIGN AI;Mc;0;L;;;;;N;;;;;
+ 11F40;KAWI VOWEL SIGN EU;Mn;0;NSM;;;;;N;;;;;
+ 11F41;KAWI SIGN KILLER;Mc;9;L;;;;;N;;;;;
+ 11F42;KAWI CONJOINER;Mn;9;NSM;;;;;N;;;;;
+ 11F43;KAWI DANDA;Po;0;L;;;;;N;;;;;
+ 11F44;KAWI DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+ 11F45;KAWI PUNCTUATION SECTION MARKER;Po;0;L;;;;;N;;;;;
+ 11F46;KAWI PUNCTUATION ALTERNATE SECTION MARKER;Po;0;L;;;;;N;;;;;
+ 11F47;KAWI PUNCTUATION FLOWER;Po;0;L;;;;;N;;;;;
+ 11F48;KAWI PUNCTUATION SPACE FILLER;Po;0;L;;;;;N;;;;;
+ 11F49;KAWI PUNCTUATION DOT;Po;0;L;;;;;N;;;;;
+ 11F4A;KAWI PUNCTUATION DOUBLE DOT;Po;0;L;;;;;N;;;;;
+ 11F4B;KAWI PUNCTUATION TRIPLE DOT;Po;0;L;;;;;N;;;;;
+ 11F4C;KAWI PUNCTUATION CIRCLE;Po;0;L;;;;;N;;;;;
+ 11F4D;KAWI PUNCTUATION FILLED CIRCLE;Po;0;L;;;;;N;;;;;
+ 11F4E;KAWI PUNCTUATION SPIRAL;Po;0;L;;;;;N;;;;;
+ 11F4F;KAWI PUNCTUATION CLOSING SPIRAL;Po;0;L;;;;;N;;;;;
+ 11F50;KAWI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+ 11F51;KAWI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+ 11F52;KAWI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+ 11F53;KAWI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+ 11F54;KAWI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+ 11F55;KAWI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+ 11F56;KAWI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+ 11F57;KAWI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+ 11F58;KAWI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+ 11F59;KAWI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  11FB0;LISU LETTER YHA;Lo;0;L;;;;;N;;;;;
  11FC0;TAMIL FRACTION ONE THREE-HUNDRED-AND-TWENTIETH;No;0;L;;;;1/320;N;;;;;
  11FC1;TAMIL FRACTION ONE ONE-HUNDRED-AND-SIXTIETH;No;0;L;;;;1/160;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 22560,22565 ****
--- 22974,23078 ----
  12541;CUNEIFORM SIGN ZA7;Lo;0;L;;;;;N;;;;;
  12542;CUNEIFORM SIGN ZU OVER ZU PLUS SAR;Lo;0;L;;;;;N;;;;;
  12543;CUNEIFORM SIGN ZU5 TIMES THREE DISH TENU;Lo;0;L;;;;;N;;;;;
+ 12F90;CYPRO-MINOAN SIGN CM001;Lo;0;L;;;;;N;;;;;
+ 12F91;CYPRO-MINOAN SIGN CM002;Lo;0;L;;;;;N;;;;;
+ 12F92;CYPRO-MINOAN SIGN CM004;Lo;0;L;;;;;N;;;;;
+ 12F93;CYPRO-MINOAN SIGN CM005;Lo;0;L;;;;;N;;;;;
+ 12F94;CYPRO-MINOAN SIGN CM006;Lo;0;L;;;;;N;;;;;
+ 12F95;CYPRO-MINOAN SIGN CM007;Lo;0;L;;;;;N;;;;;
+ 12F96;CYPRO-MINOAN SIGN CM008;Lo;0;L;;;;;N;;;;;
+ 12F97;CYPRO-MINOAN SIGN CM009;Lo;0;L;;;;;N;;;;;
+ 12F98;CYPRO-MINOAN SIGN CM010;Lo;0;L;;;;;N;;;;;
+ 12F99;CYPRO-MINOAN SIGN CM011;Lo;0;L;;;;;N;;;;;
+ 12F9A;CYPRO-MINOAN SIGN CM012;Lo;0;L;;;;;N;;;;;
+ 12F9B;CYPRO-MINOAN SIGN CM012B;Lo;0;L;;;;;N;;;;;
+ 12F9C;CYPRO-MINOAN SIGN CM013;Lo;0;L;;;;;N;;;;;
+ 12F9D;CYPRO-MINOAN SIGN CM015;Lo;0;L;;;;;N;;;;;
+ 12F9E;CYPRO-MINOAN SIGN CM017;Lo;0;L;;;;;N;;;;;
+ 12F9F;CYPRO-MINOAN SIGN CM019;Lo;0;L;;;;;N;;;;;
+ 12FA0;CYPRO-MINOAN SIGN CM021;Lo;0;L;;;;;N;;;;;
+ 12FA1;CYPRO-MINOAN SIGN CM023;Lo;0;L;;;;;N;;;;;
+ 12FA2;CYPRO-MINOAN SIGN CM024;Lo;0;L;;;;;N;;;;;
+ 12FA3;CYPRO-MINOAN SIGN CM025;Lo;0;L;;;;;N;;;;;
+ 12FA4;CYPRO-MINOAN SIGN CM026;Lo;0;L;;;;;N;;;;;
+ 12FA5;CYPRO-MINOAN SIGN CM027;Lo;0;L;;;;;N;;;;;
+ 12FA6;CYPRO-MINOAN SIGN CM028;Lo;0;L;;;;;N;;;;;
+ 12FA7;CYPRO-MINOAN SIGN CM029;Lo;0;L;;;;;N;;;;;
+ 12FA8;CYPRO-MINOAN SIGN CM030;Lo;0;L;;;;;N;;;;;
+ 12FA9;CYPRO-MINOAN SIGN CM033;Lo;0;L;;;;;N;;;;;
+ 12FAA;CYPRO-MINOAN SIGN CM034;Lo;0;L;;;;;N;;;;;
+ 12FAB;CYPRO-MINOAN SIGN CM035;Lo;0;L;;;;;N;;;;;
+ 12FAC;CYPRO-MINOAN SIGN CM036;Lo;0;L;;;;;N;;;;;
+ 12FAD;CYPRO-MINOAN SIGN CM037;Lo;0;L;;;;;N;;;;;
+ 12FAE;CYPRO-MINOAN SIGN CM038;Lo;0;L;;;;;N;;;;;
+ 12FAF;CYPRO-MINOAN SIGN CM039;Lo;0;L;;;;;N;;;;;
+ 12FB0;CYPRO-MINOAN SIGN CM040;Lo;0;L;;;;;N;;;;;
+ 12FB1;CYPRO-MINOAN SIGN CM041;Lo;0;L;;;;;N;;;;;
+ 12FB2;CYPRO-MINOAN SIGN CM044;Lo;0;L;;;;;N;;;;;
+ 12FB3;CYPRO-MINOAN SIGN CM046;Lo;0;L;;;;;N;;;;;
+ 12FB4;CYPRO-MINOAN SIGN CM047;Lo;0;L;;;;;N;;;;;
+ 12FB5;CYPRO-MINOAN SIGN CM049;Lo;0;L;;;;;N;;;;;
+ 12FB6;CYPRO-MINOAN SIGN CM050;Lo;0;L;;;;;N;;;;;
+ 12FB7;CYPRO-MINOAN SIGN CM051;Lo;0;L;;;;;N;;;;;
+ 12FB8;CYPRO-MINOAN SIGN CM052;Lo;0;L;;;;;N;;;;;
+ 12FB9;CYPRO-MINOAN SIGN CM053;Lo;0;L;;;;;N;;;;;
+ 12FBA;CYPRO-MINOAN SIGN CM054;Lo;0;L;;;;;N;;;;;
+ 12FBB;CYPRO-MINOAN SIGN CM055;Lo;0;L;;;;;N;;;;;
+ 12FBC;CYPRO-MINOAN SIGN CM056;Lo;0;L;;;;;N;;;;;
+ 12FBD;CYPRO-MINOAN SIGN CM058;Lo;0;L;;;;;N;;;;;
+ 12FBE;CYPRO-MINOAN SIGN CM059;Lo;0;L;;;;;N;;;;;
+ 12FBF;CYPRO-MINOAN SIGN CM060;Lo;0;L;;;;;N;;;;;
+ 12FC0;CYPRO-MINOAN SIGN CM061;Lo;0;L;;;;;N;;;;;
+ 12FC1;CYPRO-MINOAN SIGN CM062;Lo;0;L;;;;;N;;;;;
+ 12FC2;CYPRO-MINOAN SIGN CM063;Lo;0;L;;;;;N;;;;;
+ 12FC3;CYPRO-MINOAN SIGN CM064;Lo;0;L;;;;;N;;;;;
+ 12FC4;CYPRO-MINOAN SIGN CM066;Lo;0;L;;;;;N;;;;;
+ 12FC5;CYPRO-MINOAN SIGN CM067;Lo;0;L;;;;;N;;;;;
+ 12FC6;CYPRO-MINOAN SIGN CM068;Lo;0;L;;;;;N;;;;;
+ 12FC7;CYPRO-MINOAN SIGN CM069;Lo;0;L;;;;;N;;;;;
+ 12FC8;CYPRO-MINOAN SIGN CM070;Lo;0;L;;;;;N;;;;;
+ 12FC9;CYPRO-MINOAN SIGN CM071;Lo;0;L;;;;;N;;;;;
+ 12FCA;CYPRO-MINOAN SIGN CM072;Lo;0;L;;;;;N;;;;;
+ 12FCB;CYPRO-MINOAN SIGN CM073;Lo;0;L;;;;;N;;;;;
+ 12FCC;CYPRO-MINOAN SIGN CM074;Lo;0;L;;;;;N;;;;;
+ 12FCD;CYPRO-MINOAN SIGN CM075;Lo;0;L;;;;;N;;;;;
+ 12FCE;CYPRO-MINOAN SIGN CM075B;Lo;0;L;;;;;N;;;;;
+ 12FCF;CYPRO-MINOAN SIGN CM076;Lo;0;L;;;;;N;;;;;
+ 12FD0;CYPRO-MINOAN SIGN CM078;Lo;0;L;;;;;N;;;;;
+ 12FD1;CYPRO-MINOAN SIGN CM079;Lo;0;L;;;;;N;;;;;
+ 12FD2;CYPRO-MINOAN SIGN CM080;Lo;0;L;;;;;N;;;;;
+ 12FD3;CYPRO-MINOAN SIGN CM081;Lo;0;L;;;;;N;;;;;
+ 12FD4;CYPRO-MINOAN SIGN CM082;Lo;0;L;;;;;N;;;;;
+ 12FD5;CYPRO-MINOAN SIGN CM083;Lo;0;L;;;;;N;;;;;
+ 12FD6;CYPRO-MINOAN SIGN CM084;Lo;0;L;;;;;N;;;;;
+ 12FD7;CYPRO-MINOAN SIGN CM085;Lo;0;L;;;;;N;;;;;
+ 12FD8;CYPRO-MINOAN SIGN CM086;Lo;0;L;;;;;N;;;;;
+ 12FD9;CYPRO-MINOAN SIGN CM087;Lo;0;L;;;;;N;;;;;
+ 12FDA;CYPRO-MINOAN SIGN CM088;Lo;0;L;;;;;N;;;;;
+ 12FDB;CYPRO-MINOAN SIGN CM089;Lo;0;L;;;;;N;;;;;
+ 12FDC;CYPRO-MINOAN SIGN CM090;Lo;0;L;;;;;N;;;;;
+ 12FDD;CYPRO-MINOAN SIGN CM091;Lo;0;L;;;;;N;;;;;
+ 12FDE;CYPRO-MINOAN SIGN CM092;Lo;0;L;;;;;N;;;;;
+ 12FDF;CYPRO-MINOAN SIGN CM094;Lo;0;L;;;;;N;;;;;
+ 12FE0;CYPRO-MINOAN SIGN CM095;Lo;0;L;;;;;N;;;;;
+ 12FE1;CYPRO-MINOAN SIGN CM096;Lo;0;L;;;;;N;;;;;
+ 12FE2;CYPRO-MINOAN SIGN CM097;Lo;0;L;;;;;N;;;;;
+ 12FE3;CYPRO-MINOAN SIGN CM098;Lo;0;L;;;;;N;;;;;
+ 12FE4;CYPRO-MINOAN SIGN CM099;Lo;0;L;;;;;N;;;;;
+ 12FE5;CYPRO-MINOAN SIGN CM100;Lo;0;L;;;;;N;;;;;
+ 12FE6;CYPRO-MINOAN SIGN CM101;Lo;0;L;;;;;N;;;;;
+ 12FE7;CYPRO-MINOAN SIGN CM102;Lo;0;L;;;;;N;;;;;
+ 12FE8;CYPRO-MINOAN SIGN CM103;Lo;0;L;;;;;N;;;;;
+ 12FE9;CYPRO-MINOAN SIGN CM104;Lo;0;L;;;;;N;;;;;
+ 12FEA;CYPRO-MINOAN SIGN CM105;Lo;0;L;;;;;N;;;;;
+ 12FEB;CYPRO-MINOAN SIGN CM107;Lo;0;L;;;;;N;;;;;
+ 12FEC;CYPRO-MINOAN SIGN CM108;Lo;0;L;;;;;N;;;;;
+ 12FED;CYPRO-MINOAN SIGN CM109;Lo;0;L;;;;;N;;;;;
+ 12FEE;CYPRO-MINOAN SIGN CM110;Lo;0;L;;;;;N;;;;;
+ 12FEF;CYPRO-MINOAN SIGN CM112;Lo;0;L;;;;;N;;;;;
+ 12FF0;CYPRO-MINOAN SIGN CM114;Lo;0;L;;;;;N;;;;;
+ 12FF1;CYPRO-MINOAN SIGN CM301;Po;0;L;;;;;N;;;;;
+ 12FF2;CYPRO-MINOAN SIGN CM302;Po;0;L;;;;;N;;;;;
  13000;EGYPTIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
  13001;EGYPTIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
  13002;EGYPTIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 23631,23636 ****
--- 24144,24150 ----
  1342C;EGYPTIAN HIEROGLYPH AA030;Lo;0;L;;;;;N;;;;;
  1342D;EGYPTIAN HIEROGLYPH AA031;Lo;0;L;;;;;N;;;;;
  1342E;EGYPTIAN HIEROGLYPH AA032;Lo;0;L;;;;;N;;;;;
+ 1342F;EGYPTIAN HIEROGLYPH V011D;Lo;0;L;;;;;N;;;;;
  13430;EGYPTIAN HIEROGLYPH VERTICAL JOINER;Cf;0;L;;;;;N;;;;;
  13431;EGYPTIAN HIEROGLYPH HORIZONTAL JOINER;Cf;0;L;;;;;N;;;;;
  13432;EGYPTIAN HIEROGLYPH INSERT AT TOP START;Cf;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 23640,23645 ****
--- 24154,24188 ----
  13436;EGYPTIAN HIEROGLYPH OVERLAY MIDDLE;Cf;0;L;;;;;N;;;;;
  13437;EGYPTIAN HIEROGLYPH BEGIN SEGMENT;Cf;0;L;;;;;N;;;;;
  13438;EGYPTIAN HIEROGLYPH END SEGMENT;Cf;0;L;;;;;N;;;;;
+ 13439;EGYPTIAN HIEROGLYPH INSERT AT MIDDLE;Cf;0;L;;;;;N;;;;;
+ 1343A;EGYPTIAN HIEROGLYPH INSERT AT TOP;Cf;0;L;;;;;N;;;;;
+ 1343B;EGYPTIAN HIEROGLYPH INSERT AT BOTTOM;Cf;0;L;;;;;N;;;;;
+ 1343C;EGYPTIAN HIEROGLYPH BEGIN ENCLOSURE;Cf;0;L;;;;;N;;;;;
+ 1343D;EGYPTIAN HIEROGLYPH END ENCLOSURE;Cf;0;L;;;;;N;;;;;
+ 1343E;EGYPTIAN HIEROGLYPH BEGIN WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;;
+ 1343F;EGYPTIAN HIEROGLYPH END WALLED ENCLOSURE;Cf;0;L;;;;;N;;;;;
+ 13440;EGYPTIAN HIEROGLYPH MIRROR HORIZONTALLY;Mn;0;NSM;;;;;N;;;;;
+ 13441;EGYPTIAN HIEROGLYPH FULL BLANK;Lo;0;L;;;;;N;;;;;
+ 13442;EGYPTIAN HIEROGLYPH HALF BLANK;Lo;0;L;;;;;N;;;;;
+ 13443;EGYPTIAN HIEROGLYPH LOST SIGN;Lo;0;L;;;;;N;;;;;
+ 13444;EGYPTIAN HIEROGLYPH HALF LOST SIGN;Lo;0;L;;;;;N;;;;;
+ 13445;EGYPTIAN HIEROGLYPH TALL LOST SIGN;Lo;0;L;;;;;N;;;;;
+ 13446;EGYPTIAN HIEROGLYPH WIDE LOST SIGN;Lo;0;L;;;;;N;;;;;
+ 13447;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START;Mn;0;NSM;;;;;N;;;;;
+ 13448;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START;Mn;0;NSM;;;;;N;;;;;
+ 13449;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START;Mn;0;NSM;;;;;N;;;;;
+ 1344A;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP END;Mn;0;NSM;;;;;N;;;;;
+ 1344B;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP;Mn;0;NSM;;;;;N;;;;;
+ 1344C;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM START AND TOP END;Mn;0;NSM;;;;;N;;;;;
+ 1344D;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND TOP;Mn;0;NSM;;;;;N;;;;;
+ 1344E;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM END;Mn;0;NSM;;;;;N;;;;;
+ 1344F;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP START AND BOTTOM END;Mn;0;NSM;;;;;N;;;;;
+ 13450;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM;Mn;0;NSM;;;;;N;;;;;
+ 13451;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT START AND BOTTOM;Mn;0;NSM;;;;;N;;;;;
+ 13452;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT END;Mn;0;NSM;;;;;N;;;;;
+ 13453;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT TOP AND END;Mn;0;NSM;;;;;N;;;;;
+ 13454;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED AT BOTTOM AND END;Mn;0;NSM;;;;;N;;;;;
+ 13455;EGYPTIAN HIEROGLYPH MODIFIER DAMAGED;Mn;0;NSM;;;;;N;;;;;
  14400;ANATOLIAN HIEROGLYPH A001;Lo;0;L;;;;;N;;;;;
  14401;ANATOLIAN HIEROGLYPH A002;Lo;0;L;;;;;N;;;;;
  14402;ANATOLIAN HIEROGLYPH A003;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 24835,24840 ****
--- 25378,25472 ----
  16A69;MRO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  16A6E;MRO DANDA;Po;0;L;;;;;N;;;;;
  16A6F;MRO DOUBLE DANDA;Po;0;L;;;;;N;;;;;
+ 16A70;TANGSA LETTER OZ;Lo;0;L;;;;;N;;;;;
+ 16A71;TANGSA LETTER OC;Lo;0;L;;;;;N;;;;;
+ 16A72;TANGSA LETTER OQ;Lo;0;L;;;;;N;;;;;
+ 16A73;TANGSA LETTER OX;Lo;0;L;;;;;N;;;;;
+ 16A74;TANGSA LETTER AZ;Lo;0;L;;;;;N;;;;;
+ 16A75;TANGSA LETTER AC;Lo;0;L;;;;;N;;;;;
+ 16A76;TANGSA LETTER AQ;Lo;0;L;;;;;N;;;;;
+ 16A77;TANGSA LETTER AX;Lo;0;L;;;;;N;;;;;
+ 16A78;TANGSA LETTER VZ;Lo;0;L;;;;;N;;;;;
+ 16A79;TANGSA LETTER VC;Lo;0;L;;;;;N;;;;;
+ 16A7A;TANGSA LETTER VQ;Lo;0;L;;;;;N;;;;;
+ 16A7B;TANGSA LETTER VX;Lo;0;L;;;;;N;;;;;
+ 16A7C;TANGSA LETTER EZ;Lo;0;L;;;;;N;;;;;
+ 16A7D;TANGSA LETTER EC;Lo;0;L;;;;;N;;;;;
+ 16A7E;TANGSA LETTER EQ;Lo;0;L;;;;;N;;;;;
+ 16A7F;TANGSA LETTER EX;Lo;0;L;;;;;N;;;;;
+ 16A80;TANGSA LETTER IZ;Lo;0;L;;;;;N;;;;;
+ 16A81;TANGSA LETTER IC;Lo;0;L;;;;;N;;;;;
+ 16A82;TANGSA LETTER IQ;Lo;0;L;;;;;N;;;;;
+ 16A83;TANGSA LETTER IX;Lo;0;L;;;;;N;;;;;
+ 16A84;TANGSA LETTER UZ;Lo;0;L;;;;;N;;;;;
+ 16A85;TANGSA LETTER UC;Lo;0;L;;;;;N;;;;;
+ 16A86;TANGSA LETTER UQ;Lo;0;L;;;;;N;;;;;
+ 16A87;TANGSA LETTER UX;Lo;0;L;;;;;N;;;;;
+ 16A88;TANGSA LETTER AWZ;Lo;0;L;;;;;N;;;;;
+ 16A89;TANGSA LETTER AWC;Lo;0;L;;;;;N;;;;;
+ 16A8A;TANGSA LETTER AWQ;Lo;0;L;;;;;N;;;;;
+ 16A8B;TANGSA LETTER AWX;Lo;0;L;;;;;N;;;;;
+ 16A8C;TANGSA LETTER UIZ;Lo;0;L;;;;;N;;;;;
+ 16A8D;TANGSA LETTER UIC;Lo;0;L;;;;;N;;;;;
+ 16A8E;TANGSA LETTER UIQ;Lo;0;L;;;;;N;;;;;
+ 16A8F;TANGSA LETTER UIX;Lo;0;L;;;;;N;;;;;
+ 16A90;TANGSA LETTER FINAL NG;Lo;0;L;;;;;N;;;;;
+ 16A91;TANGSA LETTER LONG UEX;Lo;0;L;;;;;N;;;;;
+ 16A92;TANGSA LETTER SHORT UEZ;Lo;0;L;;;;;N;;;;;
+ 16A93;TANGSA LETTER SHORT AWX;Lo;0;L;;;;;N;;;;;
+ 16A94;TANGSA LETTER UEC;Lo;0;L;;;;;N;;;;;
+ 16A95;TANGSA LETTER UEZ;Lo;0;L;;;;;N;;;;;
+ 16A96;TANGSA LETTER UEQ;Lo;0;L;;;;;N;;;;;
+ 16A97;TANGSA LETTER UEX;Lo;0;L;;;;;N;;;;;
+ 16A98;TANGSA LETTER UIUZ;Lo;0;L;;;;;N;;;;;
+ 16A99;TANGSA LETTER UIUC;Lo;0;L;;;;;N;;;;;
+ 16A9A;TANGSA LETTER UIUQ;Lo;0;L;;;;;N;;;;;
+ 16A9B;TANGSA LETTER UIUX;Lo;0;L;;;;;N;;;;;
+ 16A9C;TANGSA LETTER MZ;Lo;0;L;;;;;N;;;;;
+ 16A9D;TANGSA LETTER MC;Lo;0;L;;;;;N;;;;;
+ 16A9E;TANGSA LETTER MQ;Lo;0;L;;;;;N;;;;;
+ 16A9F;TANGSA LETTER MX;Lo;0;L;;;;;N;;;;;
+ 16AA0;TANGSA LETTER KA;Lo;0;L;;;;;N;;;;;
+ 16AA1;TANGSA LETTER KHA;Lo;0;L;;;;;N;;;;;
+ 16AA2;TANGSA LETTER GA;Lo;0;L;;;;;N;;;;;
+ 16AA3;TANGSA LETTER NGA;Lo;0;L;;;;;N;;;;;
+ 16AA4;TANGSA LETTER SA;Lo;0;L;;;;;N;;;;;
+ 16AA5;TANGSA LETTER YA;Lo;0;L;;;;;N;;;;;
+ 16AA6;TANGSA LETTER WA;Lo;0;L;;;;;N;;;;;
+ 16AA7;TANGSA LETTER PA;Lo;0;L;;;;;N;;;;;
+ 16AA8;TANGSA LETTER NYA;Lo;0;L;;;;;N;;;;;
+ 16AA9;TANGSA LETTER PHA;Lo;0;L;;;;;N;;;;;
+ 16AAA;TANGSA LETTER BA;Lo;0;L;;;;;N;;;;;
+ 16AAB;TANGSA LETTER MA;Lo;0;L;;;;;N;;;;;
+ 16AAC;TANGSA LETTER NA;Lo;0;L;;;;;N;;;;;
+ 16AAD;TANGSA LETTER HA;Lo;0;L;;;;;N;;;;;
+ 16AAE;TANGSA LETTER LA;Lo;0;L;;;;;N;;;;;
+ 16AAF;TANGSA LETTER HTA;Lo;0;L;;;;;N;;;;;
+ 16AB0;TANGSA LETTER TA;Lo;0;L;;;;;N;;;;;
+ 16AB1;TANGSA LETTER DA;Lo;0;L;;;;;N;;;;;
+ 16AB2;TANGSA LETTER RA;Lo;0;L;;;;;N;;;;;
+ 16AB3;TANGSA LETTER NHA;Lo;0;L;;;;;N;;;;;
+ 16AB4;TANGSA LETTER SHA;Lo;0;L;;;;;N;;;;;
+ 16AB5;TANGSA LETTER CA;Lo;0;L;;;;;N;;;;;
+ 16AB6;TANGSA LETTER TSA;Lo;0;L;;;;;N;;;;;
+ 16AB7;TANGSA LETTER GHA;Lo;0;L;;;;;N;;;;;
+ 16AB8;TANGSA LETTER HTTA;Lo;0;L;;;;;N;;;;;
+ 16AB9;TANGSA LETTER THA;Lo;0;L;;;;;N;;;;;
+ 16ABA;TANGSA LETTER XA;Lo;0;L;;;;;N;;;;;
+ 16ABB;TANGSA LETTER FA;Lo;0;L;;;;;N;;;;;
+ 16ABC;TANGSA LETTER DHA;Lo;0;L;;;;;N;;;;;
+ 16ABD;TANGSA LETTER CHA;Lo;0;L;;;;;N;;;;;
+ 16ABE;TANGSA LETTER ZA;Lo;0;L;;;;;N;;;;;
+ 16AC0;TANGSA DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+ 16AC1;TANGSA DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+ 16AC2;TANGSA DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+ 16AC3;TANGSA DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+ 16AC4;TANGSA DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+ 16AC5;TANGSA DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+ 16AC6;TANGSA DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+ 16AC7;TANGSA DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+ 16AC8;TANGSA DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+ 16AC9;TANGSA DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  16AD0;BASSA VAH LETTER ENNI;Lo;0;L;;;;;N;;;;;
  16AD1;BASSA VAH LETTER KA;Lo;0;L;;;;;N;;;;;
  16AD2;BASSA VAH LETTER SE;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 26487,26492 ****
--- 27119,27137 ----
  18CD5;KHITAN SMALL SCRIPT CHARACTER-18CD5;Lo;0;L;;;;;N;;;;;
  18D00;<Tangut Ideograph Supplement, First>;Lo;0;L;;;;;N;;;;;
  18D08;<Tangut Ideograph Supplement, Last>;Lo;0;L;;;;;N;;;;;
+ 1AFF0;KATAKANA LETTER MINNAN TONE-2;Lm;0;L;;;;;N;;;;;
+ 1AFF1;KATAKANA LETTER MINNAN TONE-3;Lm;0;L;;;;;N;;;;;
+ 1AFF2;KATAKANA LETTER MINNAN TONE-4;Lm;0;L;;;;;N;;;;;
+ 1AFF3;KATAKANA LETTER MINNAN TONE-5;Lm;0;L;;;;;N;;;;;
+ 1AFF5;KATAKANA LETTER MINNAN TONE-7;Lm;0;L;;;;;N;;;;;
+ 1AFF6;KATAKANA LETTER MINNAN TONE-8;Lm;0;L;;;;;N;;;;;
+ 1AFF7;KATAKANA LETTER MINNAN NASALIZED TONE-1;Lm;0;L;;;;;N;;;;;
+ 1AFF8;KATAKANA LETTER MINNAN NASALIZED TONE-2;Lm;0;L;;;;;N;;;;;
+ 1AFF9;KATAKANA LETTER MINNAN NASALIZED TONE-3;Lm;0;L;;;;;N;;;;;
+ 1AFFA;KATAKANA LETTER MINNAN NASALIZED TONE-4;Lm;0;L;;;;;N;;;;;
+ 1AFFB;KATAKANA LETTER MINNAN NASALIZED TONE-5;Lm;0;L;;;;;N;;;;;
+ 1AFFD;KATAKANA LETTER MINNAN NASALIZED TONE-7;Lm;0;L;;;;;N;;;;;
+ 1AFFE;KATAKANA LETTER MINNAN NASALIZED TONE-8;Lm;0;L;;;;;N;;;;;
  1B000;KATAKANA LETTER ARCHAIC E;Lo;0;L;;;;;N;;;;;
  1B001;HIRAGANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
  1B002;HENTAIGANA LETTER A-1;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 26774,26782 ****
--- 27419,27433 ----
  1B11C;HENTAIGANA LETTER WO-7;Lo;0;L;;;;;N;;;;;
  1B11D;HENTAIGANA LETTER N-MU-MO-1;Lo;0;L;;;;;N;;;;;
  1B11E;HENTAIGANA LETTER N-MU-MO-2;Lo;0;L;;;;;N;;;;;
+ 1B11F;HIRAGANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;;
+ 1B120;KATAKANA LETTER ARCHAIC YI;Lo;0;L;;;;;N;;;;;
+ 1B121;KATAKANA LETTER ARCHAIC YE;Lo;0;L;;;;;N;;;;;
+ 1B122;KATAKANA LETTER ARCHAIC WU;Lo;0;L;;;;;N;;;;;
+ 1B132;HIRAGANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;;
  1B150;HIRAGANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
  1B151;HIRAGANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
  1B152;HIRAGANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
+ 1B155;KATAKANA LETTER SMALL KO;Lo;0;L;;;;;N;;;;;
  1B164;KATAKANA LETTER SMALL WI;Lo;0;L;;;;;N;;;;;
  1B165;KATAKANA LETTER SMALL WE;Lo;0;L;;;;;N;;;;;
  1B166;KATAKANA LETTER SMALL WO;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 27324,27329 ****
--- 27975,28165 ----
  1BCA1;SHORTHAND FORMAT CONTINUING OVERLAP;Cf;0;BN;;;;;N;;;;;
  1BCA2;SHORTHAND FORMAT DOWN STEP;Cf;0;BN;;;;;N;;;;;
  1BCA3;SHORTHAND FORMAT UP STEP;Cf;0;BN;;;;;N;;;;;
+ 1CF00;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF01;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF02;ZNAMENNY COMBINING MARK TSATA ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF03;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF04;ZNAMENNY COMBINING MARK NIZKO ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF05;ZNAMENNY COMBINING MARK SREDNE ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF06;ZNAMENNY COMBINING MARK MALO POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF07;ZNAMENNY COMBINING MARK POVYSHE ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF08;ZNAMENNY COMBINING MARK VYSOKO ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF09;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF0A;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF0B;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF0C;ZNAMENNY COMBINING MARK GORAZDO NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF0D;ZNAMENNY COMBINING MARK NIZKO S KRYZHEM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF0E;ZNAMENNY COMBINING MARK TSATA ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF0F;ZNAMENNY COMBINING MARK GORAZDO NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF10;ZNAMENNY COMBINING MARK NIZKO ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF11;ZNAMENNY COMBINING MARK SREDNE ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF12;ZNAMENNY COMBINING MARK MALO POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF13;ZNAMENNY COMBINING MARK POVYSHE ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF14;ZNAMENNY COMBINING MARK VYSOKO ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF15;ZNAMENNY COMBINING MARK MALO POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF16;ZNAMENNY COMBINING MARK POVYSHE S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF17;ZNAMENNY COMBINING MARK VYSOKO S KHOKHLOM ON RIGHT;Mn;0;NSM;;;;;N;;;;;
+ 1CF18;ZNAMENNY COMBINING MARK TSATA S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+ 1CF19;ZNAMENNY COMBINING MARK MALO POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+ 1CF1A;ZNAMENNY COMBINING MARK STRANNO MALO POVYSHE;Mn;0;NSM;;;;;N;;;;;
+ 1CF1B;ZNAMENNY COMBINING MARK POVYSHE S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+ 1CF1C;ZNAMENNY COMBINING MARK POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;;
+ 1CF1D;ZNAMENNY COMBINING MARK VYSOKO S KRYZHEM;Mn;0;NSM;;;;;N;;;;;
+ 1CF1E;ZNAMENNY COMBINING MARK MALO POVYSHE STRANNO;Mn;0;NSM;;;;;N;;;;;
+ 1CF1F;ZNAMENNY COMBINING MARK GORAZDO VYSOKO;Mn;0;NSM;;;;;N;;;;;
+ 1CF20;ZNAMENNY COMBINING MARK ZELO;Mn;0;NSM;;;;;N;;;;;
+ 1CF21;ZNAMENNY COMBINING MARK ON;Mn;0;NSM;;;;;N;;;;;
+ 1CF22;ZNAMENNY COMBINING MARK RAVNO;Mn;0;NSM;;;;;N;;;;;
+ 1CF23;ZNAMENNY COMBINING MARK TIKHAYA;Mn;0;NSM;;;;;N;;;;;
+ 1CF24;ZNAMENNY COMBINING MARK BORZAYA;Mn;0;NSM;;;;;N;;;;;
+ 1CF25;ZNAMENNY COMBINING MARK UDARKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF26;ZNAMENNY COMBINING MARK PODVERTKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF27;ZNAMENNY COMBINING MARK LOMKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF28;ZNAMENNY COMBINING MARK KUPNAYA;Mn;0;NSM;;;;;N;;;;;
+ 1CF29;ZNAMENNY COMBINING MARK KACHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF2A;ZNAMENNY COMBINING MARK ZEVOK;Mn;0;NSM;;;;;N;;;;;
+ 1CF2B;ZNAMENNY COMBINING MARK SKOBA;Mn;0;NSM;;;;;N;;;;;
+ 1CF2C;ZNAMENNY COMBINING MARK RAZSEKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF2D;ZNAMENNY COMBINING MARK KRYZH ON LEFT;Mn;0;NSM;;;;;N;;;;;
+ 1CF30;ZNAMENNY COMBINING TONAL RANGE MARK MRACHNO;Mn;0;NSM;;;;;N;;;;;
+ 1CF31;ZNAMENNY COMBINING TONAL RANGE MARK SVETLO;Mn;0;NSM;;;;;N;;;;;
+ 1CF32;ZNAMENNY COMBINING TONAL RANGE MARK TRESVETLO;Mn;0;NSM;;;;;N;;;;;
+ 1CF33;ZNAMENNY COMBINING MARK ZADERZHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF34;ZNAMENNY COMBINING MARK DEMESTVENNY ZADERZHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF35;ZNAMENNY COMBINING MARK OTSECHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF36;ZNAMENNY COMBINING MARK PODCHASHIE;Mn;0;NSM;;;;;N;;;;;
+ 1CF37;ZNAMENNY COMBINING MARK PODCHASHIE WITH VERTICAL STROKE;Mn;0;NSM;;;;;N;;;;;
+ 1CF38;ZNAMENNY COMBINING MARK CHASHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF39;ZNAMENNY COMBINING MARK CHASHKA POLNAYA;Mn;0;NSM;;;;;N;;;;;
+ 1CF3A;ZNAMENNY COMBINING MARK OBLACHKO;Mn;0;NSM;;;;;N;;;;;
+ 1CF3B;ZNAMENNY COMBINING MARK SOROCHYA NOZHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF3C;ZNAMENNY COMBINING MARK TOCHKA;Mn;0;NSM;;;;;N;;;;;
+ 1CF3D;ZNAMENNY COMBINING MARK DVOETOCHIE;Mn;0;NSM;;;;;N;;;;;
+ 1CF3E;ZNAMENNY COMBINING ATTACHING VERTICAL OMET;Mn;0;NSM;;;;;N;;;;;
+ 1CF3F;ZNAMENNY COMBINING MARK CURVED OMET;Mn;0;NSM;;;;;N;;;;;
+ 1CF40;ZNAMENNY COMBINING MARK KRYZH;Mn;0;NSM;;;;;N;;;;;
+ 1CF41;ZNAMENNY COMBINING LOWER TONAL RANGE INDICATOR;Mn;0;NSM;;;;;N;;;;;
+ 1CF42;ZNAMENNY PRIZNAK MODIFIER LEVEL-2;Mn;0;NSM;;;;;N;;;;;
+ 1CF43;ZNAMENNY PRIZNAK MODIFIER LEVEL-3;Mn;0;NSM;;;;;N;;;;;
+ 1CF44;ZNAMENNY PRIZNAK MODIFIER DIRECTION FLIP;Mn;0;NSM;;;;;N;;;;;
+ 1CF45;ZNAMENNY PRIZNAK MODIFIER KRYZH;Mn;0;NSM;;;;;N;;;;;
+ 1CF46;ZNAMENNY PRIZNAK MODIFIER ROG;Mn;0;NSM;;;;;N;;;;;
+ 1CF50;ZNAMENNY NEUME KRYUK;So;0;L;;;;;N;;;;;
+ 1CF51;ZNAMENNY NEUME KRYUK TIKHY;So;0;L;;;;;N;;;;;
+ 1CF52;ZNAMENNY NEUME PARAKLIT;So;0;L;;;;;N;;;;;
+ 1CF53;ZNAMENNY NEUME DVA V CHELNU;So;0;L;;;;;N;;;;;
+ 1CF54;ZNAMENNY NEUME KLYUCH;So;0;L;;;;;N;;;;;
+ 1CF55;ZNAMENNY NEUME ZANOZHEK;So;0;L;;;;;N;;;;;
+ 1CF56;ZNAMENNY NEUME STOPITSA;So;0;L;;;;;N;;;;;
+ 1CF57;ZNAMENNY NEUME STOPITSA S OCHKOM;So;0;L;;;;;N;;;;;
+ 1CF58;ZNAMENNY NEUME PEREVODKA;So;0;L;;;;;N;;;;;
+ 1CF59;ZNAMENNY NEUME PEREVODKA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CF5A;ZNAMENNY NEUME STOPITSA WITH SOROCHYA NOZHKA;So;0;L;;;;;N;;;;;
+ 1CF5B;ZNAMENNY NEUME CHELYUSTKA;So;0;L;;;;;N;;;;;
+ 1CF5C;ZNAMENNY NEUME PALKA;So;0;L;;;;;N;;;;;
+ 1CF5D;ZNAMENNY NEUME ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CF5E;ZNAMENNY NEUME GOLUBCHIK BORZY;So;0;L;;;;;N;;;;;
+ 1CF5F;ZNAMENNY NEUME GOLUBCHIK TIKHY;So;0;L;;;;;N;;;;;
+ 1CF60;ZNAMENNY NEUME GOLUBCHIK MRACHNY;So;0;L;;;;;N;;;;;
+ 1CF61;ZNAMENNY NEUME GOLUBCHIK SVETLY;So;0;L;;;;;N;;;;;
+ 1CF62;ZNAMENNY NEUME GOLUBCHIK TRESVETLY;So;0;L;;;;;N;;;;;
+ 1CF63;ZNAMENNY NEUME VRAKHIYA PROSTAYA;So;0;L;;;;;N;;;;;
+ 1CF64;ZNAMENNY NEUME VRAKHIYA MRACHNAYA;So;0;L;;;;;N;;;;;
+ 1CF65;ZNAMENNY NEUME VRAKHIYA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF66;ZNAMENNY NEUME VRAKHIYA TRESVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF67;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA PROSTAYA;So;0;L;;;;;N;;;;;
+ 1CF68;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA MRACHNAYA;So;0;L;;;;;N;;;;;
+ 1CF69;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF6A;ZNAMENNY NEUME VRAKHIYA KLYUCHEVAYA TRESVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF6B;ZNAMENNY NEUME DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CF6C;ZNAMENNY NEUME REVERSED CHELYUSTKA;So;0;L;;;;;N;;;;;
+ 1CF6D;ZNAMENNY NEUME DERBITSA;So;0;L;;;;;N;;;;;
+ 1CF6E;ZNAMENNY NEUME KHAMILO;So;0;L;;;;;N;;;;;
+ 1CF6F;ZNAMENNY NEUME CHASHKA;So;0;L;;;;;N;;;;;
+ 1CF70;ZNAMENNY NEUME PODCHASHIE;So;0;L;;;;;N;;;;;
+ 1CF71;ZNAMENNY NEUME SKAMEYTSA MRACHNAYA;So;0;L;;;;;N;;;;;
+ 1CF72;ZNAMENNY NEUME SKAMEYTSA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF73;ZNAMENNY NEUME SKAMEYTSA TRESVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF74;ZNAMENNY NEUME SKAMEYTSA TIKHAYA;So;0;L;;;;;N;;;;;
+ 1CF75;ZNAMENNY NEUME DEMESTVENNY KLYUCH;So;0;L;;;;;N;;;;;
+ 1CF76;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF77;ZNAMENNY NEUME SKAMEYTSA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CF78;ZNAMENNY NEUME SKAMEYTSA KLYUCHEVAYA TIKHAYA;So;0;L;;;;;N;;;;;
+ 1CF79;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA PROSTAYA;So;0;L;;;;;N;;;;;
+ 1CF7A;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CF7B;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CF7C;ZNAMENNY NEUME SKAMEYTSA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;;
+ 1CF7D;ZNAMENNY NEUME SLOZHITIE;So;0;L;;;;;N;;;;;
+ 1CF7E;ZNAMENNY NEUME SLOZHITIE S ZAPYATOY;So;0;L;;;;;N;;;;;
+ 1CF7F;ZNAMENNY NEUME SLOZHITIE ZAKRYTOE;So;0;L;;;;;N;;;;;
+ 1CF80;ZNAMENNY NEUME SLOZHITIE S KRYZHEM;So;0;L;;;;;N;;;;;
+ 1CF81;ZNAMENNY NEUME KRYZH;So;0;L;;;;;N;;;;;
+ 1CF82;ZNAMENNY NEUME ROG;So;0;L;;;;;N;;;;;
+ 1CF83;ZNAMENNY NEUME FITA;So;0;L;;;;;N;;;;;
+ 1CF84;ZNAMENNY NEUME KOBYLA;So;0;L;;;;;N;;;;;
+ 1CF85;ZNAMENNY NEUME ZMEYTSA;So;0;L;;;;;N;;;;;
+ 1CF86;ZNAMENNY NEUME STATYA;So;0;L;;;;;N;;;;;
+ 1CF87;ZNAMENNY NEUME STATYA S ZAPYATOY;So;0;L;;;;;N;;;;;
+ 1CF88;ZNAMENNY NEUME STATYA S KRYZHEM;So;0;L;;;;;N;;;;;
+ 1CF89;ZNAMENNY NEUME STATYA S ZAPYATOY I KRYZHEM;So;0;L;;;;;N;;;;;
+ 1CF8A;ZNAMENNY NEUME STATYA S KRYZHEM I ZAPYATOY;So;0;L;;;;;N;;;;;
+ 1CF8B;ZNAMENNY NEUME STATYA ZAKRYTAYA;So;0;L;;;;;N;;;;;
+ 1CF8C;ZNAMENNY NEUME STATYA ZAKRYTAYA S ZAPYATOY;So;0;L;;;;;N;;;;;
+ 1CF8D;ZNAMENNY NEUME STATYA S ROGOM;So;0;L;;;;;N;;;;;
+ 1CF8E;ZNAMENNY NEUME STATYA S DVUMYA ZAPYATYMI;So;0;L;;;;;N;;;;;
+ 1CF8F;ZNAMENNY NEUME STATYA S ZAPYATOY I PODCHASHIEM;So;0;L;;;;;N;;;;;
+ 1CF90;ZNAMENNY NEUME POLKULIZMY;So;0;L;;;;;N;;;;;
+ 1CF91;ZNAMENNY NEUME STATYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CF92;ZNAMENNY NEUME STRELA PROSTAYA;So;0;L;;;;;N;;;;;
+ 1CF93;ZNAMENNY NEUME STRELA MRACHNOTIKHAYA;So;0;L;;;;;N;;;;;
+ 1CF94;ZNAMENNY NEUME STRELA KRYZHEVAYA;So;0;L;;;;;N;;;;;
+ 1CF95;ZNAMENNY NEUME STRELA POLUPOVODNAYA;So;0;L;;;;;N;;;;;
+ 1CF96;ZNAMENNY NEUME STRELA POVODNAYA;So;0;L;;;;;N;;;;;
+ 1CF97;ZNAMENNY NEUME STRELA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CF98;ZNAMENNY NEUME STRELA KLYUCHEPOVODNAYA;So;0;L;;;;;N;;;;;
+ 1CF99;ZNAMENNY NEUME STRELA KLYUCHENEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CF9A;ZNAMENNY NEUME STRELA TIKHAYA PUTNAYA;So;0;L;;;;;N;;;;;
+ 1CF9B;ZNAMENNY NEUME STRELA DVOECHELNAYA;So;0;L;;;;;N;;;;;
+ 1CF9C;ZNAMENNY NEUME STRELA DVOECHELNOKRYZHEVAYA;So;0;L;;;;;N;;;;;
+ 1CF9D;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA;So;0;L;;;;;N;;;;;
+ 1CF9E;ZNAMENNY NEUME STRELA DVOECHELNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;;
+ 1CF9F;ZNAMENNY NEUME STRELA DVOECHELNOPOVODNAYA KLYUCHEVAYA;So;0;L;;;;;N;;;;;
+ 1CFA0;ZNAMENNY NEUME STRELA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CFA1;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CFA2;ZNAMENNY NEUME STRELA GROMNAYA;So;0;L;;;;;N;;;;;
+ 1CFA3;ZNAMENNY NEUME STRELA GROMOPOVODNAYA;So;0;L;;;;;N;;;;;
+ 1CFA4;ZNAMENNY NEUME STRELA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CFA5;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;;
+ 1CFA6;ZNAMENNY NEUME STRELA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;;
+ 1CFA7;ZNAMENNY NEUME MECHIK;So;0;L;;;;;N;;;;;
+ 1CFA8;ZNAMENNY NEUME MECHIK POVODNY;So;0;L;;;;;N;;;;;
+ 1CFA9;ZNAMENNY NEUME MECHIK KLYUCHEVOY;So;0;L;;;;;N;;;;;
+ 1CFAA;ZNAMENNY NEUME MECHIK KLYUCHEPOVODNY;So;0;L;;;;;N;;;;;
+ 1CFAB;ZNAMENNY NEUME MECHIK KLYUCHENEPOSTOYANNY;So;0;L;;;;;N;;;;;
+ 1CFAC;ZNAMENNY NEUME STRELA TRYASOGLASNAYA;So;0;L;;;;;N;;;;;
+ 1CFAD;ZNAMENNY NEUME STRELA TRYASOPOVODNAYA;So;0;L;;;;;N;;;;;
+ 1CFAE;ZNAMENNY NEUME STRELA TRYASOSTRELNAYA;So;0;L;;;;;N;;;;;
+ 1CFAF;ZNAMENNY NEUME OSOKA;So;0;L;;;;;N;;;;;
+ 1CFB0;ZNAMENNY NEUME OSOKA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CFB1;ZNAMENNY NEUME OSOKA TRESVETLAYA;So;0;L;;;;;N;;;;;
+ 1CFB2;ZNAMENNY NEUME OSOKA KRYUKOVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CFB3;ZNAMENNY NEUME OSOKA KLYUCHEVAYA SVETLAYA;So;0;L;;;;;N;;;;;
+ 1CFB4;ZNAMENNY NEUME OSOKA KLYUCHEVAYA NEPOSTOYANNAYA;So;0;L;;;;;N;;;;;
+ 1CFB5;ZNAMENNY NEUME STRELA KRYUKOVAYA;So;0;L;;;;;N;;;;;
+ 1CFB6;ZNAMENNY NEUME STRELA KRYUKOVAYA POVODNAYA;So;0;L;;;;;N;;;;;
+ 1CFB7;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CFB8;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH SINGLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CFB9;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMNAYA;So;0;L;;;;;N;;;;;
+ 1CFBA;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA;So;0;L;;;;;N;;;;;
+ 1CFBB;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOPOVODNAYA WITH DOUBLE ZAPYATAYA;So;0;L;;;;;N;;;;;
+ 1CFBC;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA;So;0;L;;;;;N;;;;;
+ 1CFBD;ZNAMENNY NEUME STRELA KRYUKOVAYA GROMOKRYZHEVAYA POVODNAYA;So;0;L;;;;;N;;;;;
+ 1CFBE;ZNAMENNY NEUME STRELA KRYUKOVAYA TRYASKA;So;0;L;;;;;N;;;;;
+ 1CFBF;ZNAMENNY NEUME KUFISMA;So;0;L;;;;;N;;;;;
+ 1CFC0;ZNAMENNY NEUME OBLAKO;So;0;L;;;;;N;;;;;
+ 1CFC1;ZNAMENNY NEUME DUDA;So;0;L;;;;;N;;;;;
+ 1CFC2;ZNAMENNY NEUME NEMKA;So;0;L;;;;;N;;;;;
+ 1CFC3;ZNAMENNY NEUME PAUK;So;0;L;;;;;N;;;;;
  1D000;BYZANTINE MUSICAL SYMBOL PSILI;So;0;L;;;;;N;;;;;
  1D001;BYZANTINE MUSICAL SYMBOL DASEIA;So;0;L;;;;;N;;;;;
  1D002;BYZANTINE MUSICAL SYMBOL PERISPOMENI;So;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 27801,27806 ****
--- 28637,28644 ----
  1D1E6;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM DOWN;So;0;L;;;;;N;;;;;
  1D1E7;MUSICAL SYMBOL KIEVAN EIGHTH NOTE STEM UP;So;0;L;;;;;N;;;;;
  1D1E8;MUSICAL SYMBOL KIEVAN FLAT SIGN;So;0;L;;;;;N;;;;;
+ 1D1E9;MUSICAL SYMBOL SORI;So;0;ON;;;;;N;;;;;
+ 1D1EA;MUSICAL SYMBOL KORON;So;0;ON;;;;;N;;;;;
  1D200;GREEK VOCAL NOTATION SYMBOL-1;So;0;ON;;;;;N;;;;;
  1D201;GREEK VOCAL NOTATION SYMBOL-2;So;0;ON;;;;;N;;;;;
  1D202;GREEK VOCAL NOTATION SYMBOL-3;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 27871,27876 ****
--- 28709,28734 ----
  1D243;COMBINING GREEK MUSICAL TETRASEME;Mn;230;NSM;;;;;N;;;;;
  1D244;COMBINING GREEK MUSICAL PENTASEME;Mn;230;NSM;;;;;N;;;;;
  1D245;GREEK MUSICAL LEIMMA;So;0;ON;;;;;N;;;;;
+ 1D2C0;KAKTOVIK NUMERAL ZERO;No;0;L;;;;0;N;;;;;
+ 1D2C1;KAKTOVIK NUMERAL ONE;No;0;L;;;;1;N;;;;;
+ 1D2C2;KAKTOVIK NUMERAL TWO;No;0;L;;;;2;N;;;;;
+ 1D2C3;KAKTOVIK NUMERAL THREE;No;0;L;;;;3;N;;;;;
+ 1D2C4;KAKTOVIK NUMERAL FOUR;No;0;L;;;;4;N;;;;;
+ 1D2C5;KAKTOVIK NUMERAL FIVE;No;0;L;;;;5;N;;;;;
+ 1D2C6;KAKTOVIK NUMERAL SIX;No;0;L;;;;6;N;;;;;
+ 1D2C7;KAKTOVIK NUMERAL SEVEN;No;0;L;;;;7;N;;;;;
+ 1D2C8;KAKTOVIK NUMERAL EIGHT;No;0;L;;;;8;N;;;;;
+ 1D2C9;KAKTOVIK NUMERAL NINE;No;0;L;;;;9;N;;;;;
+ 1D2CA;KAKTOVIK NUMERAL TEN;No;0;L;;;;10;N;;;;;
+ 1D2CB;KAKTOVIK NUMERAL ELEVEN;No;0;L;;;;11;N;;;;;
+ 1D2CC;KAKTOVIK NUMERAL TWELVE;No;0;L;;;;12;N;;;;;
+ 1D2CD;KAKTOVIK NUMERAL THIRTEEN;No;0;L;;;;13;N;;;;;
+ 1D2CE;KAKTOVIK NUMERAL FOURTEEN;No;0;L;;;;14;N;;;;;
+ 1D2CF;KAKTOVIK NUMERAL FIFTEEN;No;0;L;;;;15;N;;;;;
+ 1D2D0;KAKTOVIK NUMERAL SIXTEEN;No;0;L;;;;16;N;;;;;
+ 1D2D1;KAKTOVIK NUMERAL SEVENTEEN;No;0;L;;;;17;N;;;;;
+ 1D2D2;KAKTOVIK NUMERAL EIGHTEEN;No;0;L;;;;18;N;;;;;
+ 1D2D3;KAKTOVIK NUMERAL NINETEEN;No;0;L;;;;19;N;;;;;
  1D2E0;MAYAN NUMERAL ZERO;No;0;L;;;;0;N;;;;;
  1D2E1;MAYAN NUMERAL ONE;No;0;L;;;;1;N;;;;;
  1D2E2;MAYAN NUMERAL TWO;No;0;L;;;;2;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 29671,29676 ****
--- 30529,30571 ----
  1DAAD;SIGNWRITING ROTATION MODIFIER-14;Mn;0;NSM;;;;;N;;;;;
  1DAAE;SIGNWRITING ROTATION MODIFIER-15;Mn;0;NSM;;;;;N;;;;;
  1DAAF;SIGNWRITING ROTATION MODIFIER-16;Mn;0;NSM;;;;;N;;;;;
+ 1DF00;LATIN SMALL LETTER FENG DIGRAPH WITH TRILL;Ll;0;L;;;;;N;;;;;
+ 1DF01;LATIN SMALL LETTER REVERSED SCRIPT G;Ll;0;L;;;;;N;;;;;
+ 1DF02;LATIN LETTER SMALL CAPITAL TURNED G;Ll;0;L;;;;;N;;;;;
+ 1DF03;LATIN SMALL LETTER REVERSED K;Ll;0;L;;;;;N;;;;;
+ 1DF04;LATIN LETTER SMALL CAPITAL L WITH BELT;Ll;0;L;;;;;N;;;;;
+ 1DF05;LATIN SMALL LETTER LEZH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF06;LATIN SMALL LETTER TURNED Y WITH BELT;Ll;0;L;;;;;N;;;;;
+ 1DF07;LATIN SMALL LETTER REVERSED ENG;Ll;0;L;;;;;N;;;;;
+ 1DF08;LATIN SMALL LETTER TURNED R WITH LONG LEG AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF09;LATIN SMALL LETTER T WITH HOOK AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF0A;LATIN LETTER RETROFLEX CLICK WITH RETROFLEX HOOK;Lo;0;L;;;;;N;;;;;
+ 1DF0B;LATIN SMALL LETTER ESH WITH DOUBLE BAR;Ll;0;L;;;;;N;;;;;
+ 1DF0C;LATIN SMALL LETTER ESH WITH DOUBLE BAR AND CURL;Ll;0;L;;;;;N;;;;;
+ 1DF0D;LATIN SMALL LETTER TURNED T WITH CURL;Ll;0;L;;;;;N;;;;;
+ 1DF0E;LATIN LETTER INVERTED GLOTTAL STOP WITH CURL;Ll;0;L;;;;;N;;;;;
+ 1DF0F;LATIN LETTER STRETCHED C WITH CURL;Ll;0;L;;;;;N;;;;;
+ 1DF10;LATIN LETTER SMALL CAPITAL TURNED K;Ll;0;L;;;;;N;;;;;
+ 1DF11;LATIN SMALL LETTER L WITH FISHHOOK;Ll;0;L;;;;;N;;;;;
+ 1DF12;LATIN SMALL LETTER DEZH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF13;LATIN SMALL LETTER L WITH BELT AND PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF14;LATIN SMALL LETTER ENG WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF15;LATIN SMALL LETTER TURNED R WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF16;LATIN SMALL LETTER R WITH FISHHOOK AND PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF17;LATIN SMALL LETTER TESH DIGRAPH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF18;LATIN SMALL LETTER EZH WITH PALATAL HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF19;LATIN SMALL LETTER DEZH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF1A;LATIN SMALL LETTER I WITH STROKE AND RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF1B;LATIN SMALL LETTER O WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF1C;LATIN SMALL LETTER TESH DIGRAPH WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF1D;LATIN SMALL LETTER C WITH RETROFLEX HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF1E;LATIN SMALL LETTER S WITH CURL;Ll;0;L;;;;;N;;;;;
+ 1DF25;LATIN SMALL LETTER D WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF26;LATIN SMALL LETTER L WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF27;LATIN SMALL LETTER N WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF28;LATIN SMALL LETTER R WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF29;LATIN SMALL LETTER S WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
+ 1DF2A;LATIN SMALL LETTER T WITH MID-HEIGHT LEFT HOOK;Ll;0;L;;;;;N;;;;;
  1E000;COMBINING GLAGOLITIC LETTER AZU;Mn;230;NSM;;;;;N;;;;;
  1E001;COMBINING GLAGOLITIC LETTER BUKY;Mn;230;NSM;;;;;N;;;;;
  1E002;COMBINING GLAGOLITIC LETTER VEDE;Mn;230;NSM;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 29709,29714 ****
--- 30604,30672 ----
  1E028;COMBINING GLAGOLITIC LETTER BIG YUS;Mn;230;NSM;;;;;N;;;;;
  1E029;COMBINING GLAGOLITIC LETTER IOTATED BIG YUS;Mn;230;NSM;;;;;N;;;;;
  1E02A;COMBINING GLAGOLITIC LETTER FITA;Mn;230;NSM;;;;;N;;;;;
+ 1E030;MODIFIER LETTER CYRILLIC SMALL A;Lm;0;L;<super> 0430;;;;N;;;;;
+ 1E031;MODIFIER LETTER CYRILLIC SMALL BE;Lm;0;L;<super> 0431;;;;N;;;;;
+ 1E032;MODIFIER LETTER CYRILLIC SMALL VE;Lm;0;L;<super> 0432;;;;N;;;;;
+ 1E033;MODIFIER LETTER CYRILLIC SMALL GHE;Lm;0;L;<super> 0433;;;;N;;;;;
+ 1E034;MODIFIER LETTER CYRILLIC SMALL DE;Lm;0;L;<super> 0434;;;;N;;;;;
+ 1E035;MODIFIER LETTER CYRILLIC SMALL IE;Lm;0;L;<super> 0435;;;;N;;;;;
+ 1E036;MODIFIER LETTER CYRILLIC SMALL ZHE;Lm;0;L;<super> 0436;;;;N;;;;;
+ 1E037;MODIFIER LETTER CYRILLIC SMALL ZE;Lm;0;L;<super> 0437;;;;N;;;;;
+ 1E038;MODIFIER LETTER CYRILLIC SMALL I;Lm;0;L;<super> 0438;;;;N;;;;;
+ 1E039;MODIFIER LETTER CYRILLIC SMALL KA;Lm;0;L;<super> 043A;;;;N;;;;;
+ 1E03A;MODIFIER LETTER CYRILLIC SMALL EL;Lm;0;L;<super> 043B;;;;N;;;;;
+ 1E03B;MODIFIER LETTER CYRILLIC SMALL EM;Lm;0;L;<super> 043C;;;;N;;;;;
+ 1E03C;MODIFIER LETTER CYRILLIC SMALL O;Lm;0;L;<super> 043E;;;;N;;;;;
+ 1E03D;MODIFIER LETTER CYRILLIC SMALL PE;Lm;0;L;<super> 043F;;;;N;;;;;
+ 1E03E;MODIFIER LETTER CYRILLIC SMALL ER;Lm;0;L;<super> 0440;;;;N;;;;;
+ 1E03F;MODIFIER LETTER CYRILLIC SMALL ES;Lm;0;L;<super> 0441;;;;N;;;;;
+ 1E040;MODIFIER LETTER CYRILLIC SMALL TE;Lm;0;L;<super> 0442;;;;N;;;;;
+ 1E041;MODIFIER LETTER CYRILLIC SMALL U;Lm;0;L;<super> 0443;;;;N;;;;;
+ 1E042;MODIFIER LETTER CYRILLIC SMALL EF;Lm;0;L;<super> 0444;;;;N;;;;;
+ 1E043;MODIFIER LETTER CYRILLIC SMALL HA;Lm;0;L;<super> 0445;;;;N;;;;;
+ 1E044;MODIFIER LETTER CYRILLIC SMALL TSE;Lm;0;L;<super> 0446;;;;N;;;;;
+ 1E045;MODIFIER LETTER CYRILLIC SMALL CHE;Lm;0;L;<super> 0447;;;;N;;;;;
+ 1E046;MODIFIER LETTER CYRILLIC SMALL SHA;Lm;0;L;<super> 0448;;;;N;;;;;
+ 1E047;MODIFIER LETTER CYRILLIC SMALL YERU;Lm;0;L;<super> 044B;;;;N;;;;;
+ 1E048;MODIFIER LETTER CYRILLIC SMALL E;Lm;0;L;<super> 044D;;;;N;;;;;
+ 1E049;MODIFIER LETTER CYRILLIC SMALL YU;Lm;0;L;<super> 044E;;;;N;;;;;
+ 1E04A;MODIFIER LETTER CYRILLIC SMALL DZZE;Lm;0;L;<super> A689;;;;N;;;;;
+ 1E04B;MODIFIER LETTER CYRILLIC SMALL SCHWA;Lm;0;L;<super> 04D9;;;;N;;;;;
+ 1E04C;MODIFIER LETTER CYRILLIC SMALL BYELORUSSIAN-UKRAINIAN I;Lm;0;L;<super> 0456;;;;N;;;;;
+ 1E04D;MODIFIER LETTER CYRILLIC SMALL JE;Lm;0;L;<super> 0458;;;;N;;;;;
+ 1E04E;MODIFIER LETTER CYRILLIC SMALL BARRED O;Lm;0;L;<super> 04E9;;;;N;;;;;
+ 1E04F;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U;Lm;0;L;<super> 04AF;;;;N;;;;;
+ 1E050;MODIFIER LETTER CYRILLIC SMALL PALOCHKA;Lm;0;L;<super> 04CF;;;;N;;;;;
+ 1E051;CYRILLIC SUBSCRIPT SMALL LETTER A;Lm;0;L;<sub> 0430;;;;N;;;;;
+ 1E052;CYRILLIC SUBSCRIPT SMALL LETTER BE;Lm;0;L;<sub> 0431;;;;N;;;;;
+ 1E053;CYRILLIC SUBSCRIPT SMALL LETTER VE;Lm;0;L;<sub> 0432;;;;N;;;;;
+ 1E054;CYRILLIC SUBSCRIPT SMALL LETTER GHE;Lm;0;L;<sub> 0433;;;;N;;;;;
+ 1E055;CYRILLIC SUBSCRIPT SMALL LETTER DE;Lm;0;L;<sub> 0434;;;;N;;;;;
+ 1E056;CYRILLIC SUBSCRIPT SMALL LETTER IE;Lm;0;L;<sub> 0435;;;;N;;;;;
+ 1E057;CYRILLIC SUBSCRIPT SMALL LETTER ZHE;Lm;0;L;<sub> 0436;;;;N;;;;;
+ 1E058;CYRILLIC SUBSCRIPT SMALL LETTER ZE;Lm;0;L;<sub> 0437;;;;N;;;;;
+ 1E059;CYRILLIC SUBSCRIPT SMALL LETTER I;Lm;0;L;<sub> 0438;;;;N;;;;;
+ 1E05A;CYRILLIC SUBSCRIPT SMALL LETTER KA;Lm;0;L;<sub> 043A;;;;N;;;;;
+ 1E05B;CYRILLIC SUBSCRIPT SMALL LETTER EL;Lm;0;L;<sub> 043B;;;;N;;;;;
+ 1E05C;CYRILLIC SUBSCRIPT SMALL LETTER O;Lm;0;L;<sub> 043E;;;;N;;;;;
+ 1E05D;CYRILLIC SUBSCRIPT SMALL LETTER PE;Lm;0;L;<sub> 043F;;;;N;;;;;
+ 1E05E;CYRILLIC SUBSCRIPT SMALL LETTER ES;Lm;0;L;<sub> 0441;;;;N;;;;;
+ 1E05F;CYRILLIC SUBSCRIPT SMALL LETTER U;Lm;0;L;<sub> 0443;;;;N;;;;;
+ 1E060;CYRILLIC SUBSCRIPT SMALL LETTER EF;Lm;0;L;<sub> 0444;;;;N;;;;;
+ 1E061;CYRILLIC SUBSCRIPT SMALL LETTER HA;Lm;0;L;<sub> 0445;;;;N;;;;;
+ 1E062;CYRILLIC SUBSCRIPT SMALL LETTER TSE;Lm;0;L;<sub> 0446;;;;N;;;;;
+ 1E063;CYRILLIC SUBSCRIPT SMALL LETTER CHE;Lm;0;L;<sub> 0447;;;;N;;;;;
+ 1E064;CYRILLIC SUBSCRIPT SMALL LETTER SHA;Lm;0;L;<sub> 0448;;;;N;;;;;
+ 1E065;CYRILLIC SUBSCRIPT SMALL LETTER HARD SIGN;Lm;0;L;<sub> 044A;;;;N;;;;;
+ 1E066;CYRILLIC SUBSCRIPT SMALL LETTER YERU;Lm;0;L;<sub> 044B;;;;N;;;;;
+ 1E067;CYRILLIC SUBSCRIPT SMALL LETTER GHE WITH UPTURN;Lm;0;L;<sub> 0491;;;;N;;;;;
+ 1E068;CYRILLIC SUBSCRIPT SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Lm;0;L;<sub> 0456;;;;N;;;;;
+ 1E069;CYRILLIC SUBSCRIPT SMALL LETTER DZE;Lm;0;L;<sub> 0455;;;;N;;;;;
+ 1E06A;CYRILLIC SUBSCRIPT SMALL LETTER DZHE;Lm;0;L;<sub> 045F;;;;N;;;;;
+ 1E06B;MODIFIER LETTER CYRILLIC SMALL ES WITH DESCENDER;Lm;0;L;<super> 04AB;;;;N;;;;;
+ 1E06C;MODIFIER LETTER CYRILLIC SMALL YERU WITH BACK YER;Lm;0;L;<super> A651;;;;N;;;;;
+ 1E06D;MODIFIER LETTER CYRILLIC SMALL STRAIGHT U WITH STROKE;Lm;0;L;<super> 04B1;;;;N;;;;;
+ 1E08F;COMBINING CYRILLIC SMALL LETTER BYELORUSSIAN-UKRAINIAN I;Mn;230;NSM;;;;;N;;;;;
  1E100;NYIAKENG PUACHUE HMONG LETTER MA;Lo;0;L;;;;;N;;;;;
  1E101;NYIAKENG PUACHUE HMONG LETTER TSA;Lo;0;L;;;;;N;;;;;
  1E102;NYIAKENG PUACHUE HMONG LETTER NTA;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 29780,29785 ****
--- 30738,30774 ----
  1E149;NYIAKENG PUACHUE HMONG DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  1E14E;NYIAKENG PUACHUE HMONG LOGOGRAM NYAJ;Lo;0;L;;;;;N;;;;;
  1E14F;NYIAKENG PUACHUE HMONG CIRCLED CA;So;0;L;;;;;N;;;;;
+ 1E290;TOTO LETTER PA;Lo;0;L;;;;;N;;;;;
+ 1E291;TOTO LETTER BA;Lo;0;L;;;;;N;;;;;
+ 1E292;TOTO LETTER TA;Lo;0;L;;;;;N;;;;;
+ 1E293;TOTO LETTER DA;Lo;0;L;;;;;N;;;;;
+ 1E294;TOTO LETTER KA;Lo;0;L;;;;;N;;;;;
+ 1E295;TOTO LETTER GA;Lo;0;L;;;;;N;;;;;
+ 1E296;TOTO LETTER MA;Lo;0;L;;;;;N;;;;;
+ 1E297;TOTO LETTER NA;Lo;0;L;;;;;N;;;;;
+ 1E298;TOTO LETTER NGA;Lo;0;L;;;;;N;;;;;
+ 1E299;TOTO LETTER SA;Lo;0;L;;;;;N;;;;;
+ 1E29A;TOTO LETTER CHA;Lo;0;L;;;;;N;;;;;
+ 1E29B;TOTO LETTER YA;Lo;0;L;;;;;N;;;;;
+ 1E29C;TOTO LETTER WA;Lo;0;L;;;;;N;;;;;
+ 1E29D;TOTO LETTER JA;Lo;0;L;;;;;N;;;;;
+ 1E29E;TOTO LETTER HA;Lo;0;L;;;;;N;;;;;
+ 1E29F;TOTO LETTER RA;Lo;0;L;;;;;N;;;;;
+ 1E2A0;TOTO LETTER LA;Lo;0;L;;;;;N;;;;;
+ 1E2A1;TOTO LETTER I;Lo;0;L;;;;;N;;;;;
+ 1E2A2;TOTO LETTER BREATHY I;Lo;0;L;;;;;N;;;;;
+ 1E2A3;TOTO LETTER IU;Lo;0;L;;;;;N;;;;;
+ 1E2A4;TOTO LETTER BREATHY IU;Lo;0;L;;;;;N;;;;;
+ 1E2A5;TOTO LETTER U;Lo;0;L;;;;;N;;;;;
+ 1E2A6;TOTO LETTER E;Lo;0;L;;;;;N;;;;;
+ 1E2A7;TOTO LETTER BREATHY E;Lo;0;L;;;;;N;;;;;
+ 1E2A8;TOTO LETTER EO;Lo;0;L;;;;;N;;;;;
+ 1E2A9;TOTO LETTER BREATHY EO;Lo;0;L;;;;;N;;;;;
+ 1E2AA;TOTO LETTER O;Lo;0;L;;;;;N;;;;;
+ 1E2AB;TOTO LETTER AE;Lo;0;L;;;;;N;;;;;
+ 1E2AC;TOTO LETTER BREATHY AE;Lo;0;L;;;;;N;;;;;
+ 1E2AD;TOTO LETTER A;Lo;0;L;;;;;N;;;;;
+ 1E2AE;TOTO SIGN RISING TONE;Mn;230;NSM;;;;;N;;;;;
  1E2C0;WANCHO LETTER AA;Lo;0;L;;;;;N;;;;;
  1E2C1;WANCHO LETTER A;Lo;0;L;;;;;N;;;;;
  1E2C2;WANCHO LETTER BA;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 29839,29844 ****
--- 30828,30903 ----
  1E2F8;WANCHO DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
  1E2F9;WANCHO DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
  1E2FF;WANCHO NGUN SIGN;Sc;0;ET;;;;;N;;;;;
+ 1E4D0;NAG MUNDARI LETTER O;Lo;0;L;;;;;N;;;;;
+ 1E4D1;NAG MUNDARI LETTER OP;Lo;0;L;;;;;N;;;;;
+ 1E4D2;NAG MUNDARI LETTER OL;Lo;0;L;;;;;N;;;;;
+ 1E4D3;NAG MUNDARI LETTER OY;Lo;0;L;;;;;N;;;;;
+ 1E4D4;NAG MUNDARI LETTER ONG;Lo;0;L;;;;;N;;;;;
+ 1E4D5;NAG MUNDARI LETTER A;Lo;0;L;;;;;N;;;;;
+ 1E4D6;NAG MUNDARI LETTER AJ;Lo;0;L;;;;;N;;;;;
+ 1E4D7;NAG MUNDARI LETTER AB;Lo;0;L;;;;;N;;;;;
+ 1E4D8;NAG MUNDARI LETTER ANY;Lo;0;L;;;;;N;;;;;
+ 1E4D9;NAG MUNDARI LETTER AH;Lo;0;L;;;;;N;;;;;
+ 1E4DA;NAG MUNDARI LETTER I;Lo;0;L;;;;;N;;;;;
+ 1E4DB;NAG MUNDARI LETTER IS;Lo;0;L;;;;;N;;;;;
+ 1E4DC;NAG MUNDARI LETTER IDD;Lo;0;L;;;;;N;;;;;
+ 1E4DD;NAG MUNDARI LETTER IT;Lo;0;L;;;;;N;;;;;
+ 1E4DE;NAG MUNDARI LETTER IH;Lo;0;L;;;;;N;;;;;
+ 1E4DF;NAG MUNDARI LETTER U;Lo;0;L;;;;;N;;;;;
+ 1E4E0;NAG MUNDARI LETTER UC;Lo;0;L;;;;;N;;;;;
+ 1E4E1;NAG MUNDARI LETTER UD;Lo;0;L;;;;;N;;;;;
+ 1E4E2;NAG MUNDARI LETTER UK;Lo;0;L;;;;;N;;;;;
+ 1E4E3;NAG MUNDARI LETTER UR;Lo;0;L;;;;;N;;;;;
+ 1E4E4;NAG MUNDARI LETTER E;Lo;0;L;;;;;N;;;;;
+ 1E4E5;NAG MUNDARI LETTER ENN;Lo;0;L;;;;;N;;;;;
+ 1E4E6;NAG MUNDARI LETTER EG;Lo;0;L;;;;;N;;;;;
+ 1E4E7;NAG MUNDARI LETTER EM;Lo;0;L;;;;;N;;;;;
+ 1E4E8;NAG MUNDARI LETTER EN;Lo;0;L;;;;;N;;;;;
+ 1E4E9;NAG MUNDARI LETTER ETT;Lo;0;L;;;;;N;;;;;
+ 1E4EA;NAG MUNDARI LETTER ELL;Lo;0;L;;;;;N;;;;;
+ 1E4EB;NAG MUNDARI SIGN OJOD;Lm;0;L;;;;;N;;;;;
+ 1E4EC;NAG MUNDARI SIGN MUHOR;Mn;232;NSM;;;;;N;;;;;
+ 1E4ED;NAG MUNDARI SIGN TOYOR;Mn;232;NSM;;;;;N;;;;;
+ 1E4EE;NAG MUNDARI SIGN IKIR;Mn;220;NSM;;;;;N;;;;;
+ 1E4EF;NAG MUNDARI SIGN SUTUH;Mn;230;NSM;;;;;N;;;;;
+ 1E4F0;NAG MUNDARI DIGIT ZERO;Nd;0;L;;0;0;0;N;;;;;
+ 1E4F1;NAG MUNDARI DIGIT ONE;Nd;0;L;;1;1;1;N;;;;;
+ 1E4F2;NAG MUNDARI DIGIT TWO;Nd;0;L;;2;2;2;N;;;;;
+ 1E4F3;NAG MUNDARI DIGIT THREE;Nd;0;L;;3;3;3;N;;;;;
+ 1E4F4;NAG MUNDARI DIGIT FOUR;Nd;0;L;;4;4;4;N;;;;;
+ 1E4F5;NAG MUNDARI DIGIT FIVE;Nd;0;L;;5;5;5;N;;;;;
+ 1E4F6;NAG MUNDARI DIGIT SIX;Nd;0;L;;6;6;6;N;;;;;
+ 1E4F7;NAG MUNDARI DIGIT SEVEN;Nd;0;L;;7;7;7;N;;;;;
+ 1E4F8;NAG MUNDARI DIGIT EIGHT;Nd;0;L;;8;8;8;N;;;;;
+ 1E4F9;NAG MUNDARI DIGIT NINE;Nd;0;L;;9;9;9;N;;;;;
+ 1E7E0;ETHIOPIC SYLLABLE HHYA;Lo;0;L;;;;;N;;;;;
+ 1E7E1;ETHIOPIC SYLLABLE HHYU;Lo;0;L;;;;;N;;;;;
+ 1E7E2;ETHIOPIC SYLLABLE HHYI;Lo;0;L;;;;;N;;;;;
+ 1E7E3;ETHIOPIC SYLLABLE HHYAA;Lo;0;L;;;;;N;;;;;
+ 1E7E4;ETHIOPIC SYLLABLE HHYEE;Lo;0;L;;;;;N;;;;;
+ 1E7E5;ETHIOPIC SYLLABLE HHYE;Lo;0;L;;;;;N;;;;;
+ 1E7E6;ETHIOPIC SYLLABLE HHYO;Lo;0;L;;;;;N;;;;;
+ 1E7E8;ETHIOPIC SYLLABLE GURAGE HHWA;Lo;0;L;;;;;N;;;;;
+ 1E7E9;ETHIOPIC SYLLABLE HHWI;Lo;0;L;;;;;N;;;;;
+ 1E7EA;ETHIOPIC SYLLABLE HHWEE;Lo;0;L;;;;;N;;;;;
+ 1E7EB;ETHIOPIC SYLLABLE HHWE;Lo;0;L;;;;;N;;;;;
+ 1E7ED;ETHIOPIC SYLLABLE GURAGE MWI;Lo;0;L;;;;;N;;;;;
+ 1E7EE;ETHIOPIC SYLLABLE GURAGE MWEE;Lo;0;L;;;;;N;;;;;
+ 1E7F0;ETHIOPIC SYLLABLE GURAGE QWI;Lo;0;L;;;;;N;;;;;
+ 1E7F1;ETHIOPIC SYLLABLE GURAGE QWEE;Lo;0;L;;;;;N;;;;;
+ 1E7F2;ETHIOPIC SYLLABLE GURAGE QWE;Lo;0;L;;;;;N;;;;;
+ 1E7F3;ETHIOPIC SYLLABLE GURAGE BWI;Lo;0;L;;;;;N;;;;;
+ 1E7F4;ETHIOPIC SYLLABLE GURAGE BWEE;Lo;0;L;;;;;N;;;;;
+ 1E7F5;ETHIOPIC SYLLABLE GURAGE KWI;Lo;0;L;;;;;N;;;;;
+ 1E7F6;ETHIOPIC SYLLABLE GURAGE KWEE;Lo;0;L;;;;;N;;;;;
+ 1E7F7;ETHIOPIC SYLLABLE GURAGE KWE;Lo;0;L;;;;;N;;;;;
+ 1E7F8;ETHIOPIC SYLLABLE GURAGE GWI;Lo;0;L;;;;;N;;;;;
+ 1E7F9;ETHIOPIC SYLLABLE GURAGE GWEE;Lo;0;L;;;;;N;;;;;
+ 1E7FA;ETHIOPIC SYLLABLE GURAGE GWE;Lo;0;L;;;;;N;;;;;
+ 1E7FB;ETHIOPIC SYLLABLE GURAGE FWI;Lo;0;L;;;;;N;;;;;
+ 1E7FC;ETHIOPIC SYLLABLE GURAGE FWEE;Lo;0;L;;;;;N;;;;;
+ 1E7FD;ETHIOPIC SYLLABLE GURAGE PWI;Lo;0;L;;;;;N;;;;;
+ 1E7FE;ETHIOPIC SYLLABLE GURAGE PWEE;Lo;0;L;;;;;N;;;;;
  1E800;MENDE KIKAKUI SYLLABLE M001 KI;Lo;0;R;;;;;N;;;;;
  1E801;MENDE KIKAKUI SYLLABLE M002 KA;Lo;0;R;;;;;N;;;;;
  1E802;MENDE KIKAKUI SYLLABLE M003 KU;Lo;0;R;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 31886,31891 ****
--- 32945,32954 ----
  1F6D5;HINDU TEMPLE;So;0;ON;;;;;N;;;;;
  1F6D6;HUT;So;0;ON;;;;;N;;;;;
  1F6D7;ELEVATOR;So;0;ON;;;;;N;;;;;
+ 1F6DC;WIRELESS;So;0;ON;;;;;N;;;;;
+ 1F6DD;PLAYGROUND SLIDE;So;0;ON;;;;;N;;;;;
+ 1F6DE;WHEEL;So;0;ON;;;;;N;;;;;
+ 1F6DF;RING BUOY;So;0;ON;;;;;N;;;;;
  1F6E0;HAMMER AND WRENCH;So;0;ON;;;;;N;;;;;
  1F6E1;SHIELD;So;0;ON;;;;;N;;;;;
  1F6E2;OIL DRUM;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32028,32033 ****
--- 33091,33104 ----
  1F771;ALCHEMICAL SYMBOL FOR MONTH;So;0;ON;;;;;N;;;;;
  1F772;ALCHEMICAL SYMBOL FOR HALF DRAM;So;0;ON;;;;;N;;;;;
  1F773;ALCHEMICAL SYMBOL FOR HALF OUNCE;So;0;ON;;;;;N;;;;;
+ 1F774;LOT OF FORTUNE;So;0;ON;;;;;N;;;;;
+ 1F775;OCCULTATION;So;0;ON;;;;;N;;;;;
+ 1F776;LUNAR ECLIPSE;So;0;ON;;;;;N;;;;;
+ 1F77B;HAUMEA;So;0;ON;;;;;N;;;;;
+ 1F77C;MAKEMAKE;So;0;ON;;;;;N;;;;;
+ 1F77D;GONGGONG;So;0;ON;;;;;N;;;;;
+ 1F77E;QUAOAR;So;0;ON;;;;;N;;;;;
+ 1F77F;ORCUS;So;0;ON;;;;;N;;;;;
  1F780;BLACK LEFT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
  1F781;BLACK UP-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
  1F782;BLACK RIGHT-POINTING ISOSCELES RIGHT TRIANGLE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32117,32122 ****
--- 33188,33194 ----
  1F7D6;NEGATIVE CIRCLED TRIANGLE;So;0;ON;;;;;N;;;;;
  1F7D7;CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
  1F7D8;NEGATIVE CIRCLED SQUARE;So;0;ON;;;;;N;;;;;
+ 1F7D9;NINE POINTED WHITE STAR;So;0;ON;;;;;N;;;;;
  1F7E0;LARGE ORANGE CIRCLE;So;0;ON;;;;;N;;;;;
  1F7E1;LARGE YELLOW CIRCLE;So;0;ON;;;;;N;;;;;
  1F7E2;LARGE GREEN CIRCLE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32129,32134 ****
--- 33201,33207 ----
  1F7E9;LARGE GREEN SQUARE;So;0;ON;;;;;N;;;;;
  1F7EA;LARGE PURPLE SQUARE;So;0;ON;;;;;N;;;;;
  1F7EB;LARGE BROWN SQUARE;So;0;ON;;;;;N;;;;;
+ 1F7F0;HEAVY EQUALS SIGN;So;0;ON;;;;;N;;;;;
  1F800;LEFTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
  1F801;UPWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
  1F802;RIGHTWARDS ARROW WITH SMALL TRIANGLE ARROWHEAD;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32400,32405 ****
--- 33473,33479 ----
  1F976;FREEZING FACE;So;0;ON;;;;;N;;;;;
  1F977;NINJA;So;0;ON;;;;;N;;;;;
  1F978;DISGUISED FACE;So;0;ON;;;;;N;;;;;
+ 1F979;FACE HOLDING BACK TEARS;So;0;ON;;;;;N;;;;;
  1F97A;FACE WITH PLEADING EYES;So;0;ON;;;;;N;;;;;
  1F97B;SARI;So;0;ON;;;;;N;;;;;
  1F97C;LAB COAT;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32482,32487 ****
--- 33556,33562 ----
  1F9C9;MATE DRINK;So;0;ON;;;;;N;;;;;
  1F9CA;ICE CUBE;So;0;ON;;;;;N;;;;;
  1F9CB;BUBBLE TEA;So;0;ON;;;;;N;;;;;
+ 1F9CC;TROLL;So;0;ON;;;;;N;;;;;
  1F9CD;STANDING PERSON;So;0;ON;;;;;N;;;;;
  1F9CE;KNEELING PERSON;So;0;ON;;;;;N;;;;;
  1F9CF;DEAF PERSON;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32636,32644 ****
--- 33711,33724 ----
  1FA72;BRIEFS;So;0;ON;;;;;N;;;;;
  1FA73;SHORTS;So;0;ON;;;;;N;;;;;
  1FA74;THONG SANDAL;So;0;ON;;;;;N;;;;;
+ 1FA75;LIGHT BLUE HEART;So;0;ON;;;;;N;;;;;
+ 1FA76;GREY HEART;So;0;ON;;;;;N;;;;;
+ 1FA77;PINK HEART;So;0;ON;;;;;N;;;;;
  1FA78;DROP OF BLOOD;So;0;ON;;;;;N;;;;;
  1FA79;ADHESIVE BANDAGE;So;0;ON;;;;;N;;;;;
  1FA7A;STETHOSCOPE;So;0;ON;;;;;N;;;;;
+ 1FA7B;X-RAY;So;0;ON;;;;;N;;;;;
+ 1FA7C;CRUTCH;So;0;ON;;;;;N;;;;;
  1FA80;YO-YO;So;0;ON;;;;;N;;;;;
  1FA81;KITE;So;0;ON;;;;;N;;;;;
  1FA82;PARACHUTE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32646,32651 ****
--- 33726,33733 ----
  1FA84;MAGIC WAND;So;0;ON;;;;;N;;;;;
  1FA85;PINATA;So;0;ON;;;;;N;;;;;
  1FA86;NESTING DOLLS;So;0;ON;;;;;N;;;;;
+ 1FA87;MARACAS;So;0;ON;;;;;N;;;;;
+ 1FA88;FLUTE;So;0;ON;;;;;N;;;;;
  1FA90;RINGED PLANET;So;0;ON;;;;;N;;;;;
  1FA91;CHAIR;So;0;ON;;;;;N;;;;;
  1FA92;RAZOR;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32671,32676 ****
--- 33753,33765 ----
  1FAA6;HEADSTONE;So;0;ON;;;;;N;;;;;
  1FAA7;PLACARD;So;0;ON;;;;;N;;;;;
  1FAA8;ROCK;So;0;ON;;;;;N;;;;;
+ 1FAA9;MIRROR BALL;So;0;ON;;;;;N;;;;;
+ 1FAAA;IDENTIFICATION CARD;So;0;ON;;;;;N;;;;;
+ 1FAAB;LOW BATTERY;So;0;ON;;;;;N;;;;;
+ 1FAAC;HAMSA;So;0;ON;;;;;N;;;;;
+ 1FAAD;FOLDING HAND FAN;So;0;ON;;;;;N;;;;;
+ 1FAAE;HAIR PICK;So;0;ON;;;;;N;;;;;
+ 1FAAF;KHANDA;So;0;ON;;;;;N;;;;;
  1FAB0;FLY;So;0;ON;;;;;N;;;;;
  1FAB1;WORM;So;0;ON;;;;;N;;;;;
  1FAB2;BEETLE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32678,32686 ****
--- 33767,33788 ----
  1FAB4;POTTED PLANT;So;0;ON;;;;;N;;;;;
  1FAB5;WOOD;So;0;ON;;;;;N;;;;;
  1FAB6;FEATHER;So;0;ON;;;;;N;;;;;
+ 1FAB7;LOTUS;So;0;ON;;;;;N;;;;;
+ 1FAB8;CORAL;So;0;ON;;;;;N;;;;;
+ 1FAB9;EMPTY NEST;So;0;ON;;;;;N;;;;;
+ 1FABA;NEST WITH EGGS;So;0;ON;;;;;N;;;;;
+ 1FABB;HYACINTH;So;0;ON;;;;;N;;;;;
+ 1FABC;JELLYFISH;So;0;ON;;;;;N;;;;;
+ 1FABD;WING;So;0;ON;;;;;N;;;;;
+ 1FABF;GOOSE;So;0;ON;;;;;N;;;;;
  1FAC0;ANATOMICAL HEART;So;0;ON;;;;;N;;;;;
  1FAC1;LUNGS;So;0;ON;;;;;N;;;;;
  1FAC2;PEOPLE HUGGING;So;0;ON;;;;;N;;;;;
+ 1FAC3;PREGNANT MAN;So;0;ON;;;;;N;;;;;
+ 1FAC4;PREGNANT PERSON;So;0;ON;;;;;N;;;;;
+ 1FAC5;PERSON WITH CROWN;So;0;ON;;;;;N;;;;;
+ 1FACE;MOOSE;So;0;ON;;;;;N;;;;;
+ 1FACF;DONKEY;So;0;ON;;;;;N;;;;;
  1FAD0;BLUEBERRIES;So;0;ON;;;;;N;;;;;
  1FAD1;BELL PEPPER;So;0;ON;;;;;N;;;;;
  1FAD2;OLIVE;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32688,32693 ****
--- 33790,33818 ----
  1FAD4;TAMALE;So;0;ON;;;;;N;;;;;
  1FAD5;FONDUE;So;0;ON;;;;;N;;;;;
  1FAD6;TEAPOT;So;0;ON;;;;;N;;;;;
+ 1FAD7;POURING LIQUID;So;0;ON;;;;;N;;;;;
+ 1FAD8;BEANS;So;0;ON;;;;;N;;;;;
+ 1FAD9;JAR;So;0;ON;;;;;N;;;;;
+ 1FADA;GINGER ROOT;So;0;ON;;;;;N;;;;;
+ 1FADB;PEA POD;So;0;ON;;;;;N;;;;;
+ 1FAE0;MELTING FACE;So;0;ON;;;;;N;;;;;
+ 1FAE1;SALUTING FACE;So;0;ON;;;;;N;;;;;
+ 1FAE2;FACE WITH OPEN EYES AND HAND OVER MOUTH;So;0;ON;;;;;N;;;;;
+ 1FAE3;FACE WITH PEEKING EYE;So;0;ON;;;;;N;;;;;
+ 1FAE4;FACE WITH DIAGONAL MOUTH;So;0;ON;;;;;N;;;;;
+ 1FAE5;DOTTED LINE FACE;So;0;ON;;;;;N;;;;;
+ 1FAE6;BITING LIP;So;0;ON;;;;;N;;;;;
+ 1FAE7;BUBBLES;So;0;ON;;;;;N;;;;;
+ 1FAE8;SHAKING FACE;So;0;ON;;;;;N;;;;;
+ 1FAF0;HAND WITH INDEX FINGER AND THUMB CROSSED;So;0;ON;;;;;N;;;;;
+ 1FAF1;RIGHTWARDS HAND;So;0;ON;;;;;N;;;;;
+ 1FAF2;LEFTWARDS HAND;So;0;ON;;;;;N;;;;;
+ 1FAF3;PALM DOWN HAND;So;0;ON;;;;;N;;;;;
+ 1FAF4;PALM UP HAND;So;0;ON;;;;;N;;;;;
+ 1FAF5;INDEX POINTING AT THE VIEWER;So;0;ON;;;;;N;;;;;
+ 1FAF6;HEART HANDS;So;0;ON;;;;;N;;;;;
+ 1FAF7;LEFTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;;
+ 1FAF8;RIGHTWARDS PUSHING HAND;So;0;ON;;;;;N;;;;;
  1FB00;BLOCK SEXTANT-1;So;0;ON;;;;;N;;;;;
  1FB01;BLOCK SEXTANT-2;So;0;ON;;;;;N;;;;;
  1FB02;BLOCK SEXTANT-12;So;0;ON;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 32901,32909 ****
  1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
  1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
  20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
! 2A6DD;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
  2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
! 2B734;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
  2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;
  2B81D;<CJK Ideograph Extension D, Last>;Lo;0;L;;;;;N;;;;;
  2B820;<CJK Ideograph Extension E, First>;Lo;0;L;;;;;N;;;;;
--- 34026,34034 ----
  1FBF8;SEGMENTED DIGIT EIGHT;Nd;0;EN;<font> 0038;8;8;8;N;;;;;
  1FBF9;SEGMENTED DIGIT NINE;Nd;0;EN;<font> 0039;9;9;9;N;;;;;
  20000;<CJK Ideograph Extension B, First>;Lo;0;L;;;;;N;;;;;
! 2A6DF;<CJK Ideograph Extension B, Last>;Lo;0;L;;;;;N;;;;;
  2A700;<CJK Ideograph Extension C, First>;Lo;0;L;;;;;N;;;;;
! 2B739;<CJK Ideograph Extension C, Last>;Lo;0;L;;;;;N;;;;;
  2B740;<CJK Ideograph Extension D, First>;Lo;0;L;;;;;N;;;;;
  2B81D;<CJK Ideograph Extension D, Last>;Lo;0;L;;;;;N;;;;;
  2B820;<CJK Ideograph Extension E, First>;Lo;0;L;;;;;N;;;;;
*************** FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N
*** 33454,33459 ****
--- 34579,34586 ----
  2FA1D;CJK COMPATIBILITY IDEOGRAPH-2FA1D;Lo;0;L;2A600;;;;N;;;;;
  30000;<CJK Ideograph Extension G, First>;Lo;0;L;;;;;N;;;;;
  3134A;<CJK Ideograph Extension G, Last>;Lo;0;L;;;;;N;;;;;
+ 31350;<CJK Ideograph Extension H, First>;Lo;0;L;;;;;N;;;;;
+ 323AF;<CJK Ideograph Extension H, Last>;Lo;0;L;;;;;N;;;;;
  E0001;LANGUAGE TAG;Cf;0;BN;;;;;N;;;;;
  E0020;TAG SPACE;Cf;0;BN;;;;;N;;;;;
  E0021;TAG EXCLAMATION MARK;Cf;0;BN;;;;;N;;;;;
diff -Nrcpad gcc-12.2.0/contrib/unicode/from_glibc/unicode_utils.py gcc-13.1.0/contrib/unicode/from_glibc/unicode_utils.py
*** gcc-12.2.0/contrib/unicode/from_glibc/unicode_utils.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unicode/from_glibc/unicode_utils.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Utilities to generate Unicode data for glibc from upstream Unicode data.
  #
! # Copyright (C) 2014-2020 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
--- 1,6 ----
  # Utilities to generate Unicode data for glibc from upstream Unicode data.
  #
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
diff -Nrcpad gcc-12.2.0/contrib/unicode/from_glibc/utf8_gen.py gcc-13.1.0/contrib/unicode/from_glibc/utf8_gen.py
*** gcc-12.2.0/contrib/unicode/from_glibc/utf8_gen.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unicode/from_glibc/utf8_gen.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/python3
  # -*- coding: utf-8 -*-
! # Copyright (C) 2014-2020 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
--- 1,6 ----
  #!/usr/bin/python3
  # -*- coding: utf-8 -*-
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  # This file is part of the GNU C Library.
  #
  # The GNU C Library is free software; you can redistribute it and/or
diff -Nrcpad gcc-12.2.0/contrib/unused_functions.py gcc-13.1.0/contrib/unused_functions.py
*** gcc-12.2.0/contrib/unused_functions.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/unused_functions.py	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  #
! # Copyright (c) 2018 Free Software Foundation
  # Contributed by Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
  # Inspired by bloat-o-meter from busybox.
  
--- 1,7 ----
  #!/usr/bin/env python
  # -*- coding: utf-8 -*-
  #
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  # Contributed by Bernhard Reutner-Fischer <aldot@gcc.gnu.org>
  # Inspired by bloat-o-meter from busybox.
  
diff -Nrcpad gcc-12.2.0/contrib/update-copyright.py gcc-13.1.0/contrib/update-copyright.py
*** gcc-12.2.0/contrib/update-copyright.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/update-copyright.py	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/usr/bin/env python3
  #
! # Copyright (C) 2013-2022 Free Software Foundation, Inc.
  #
  # This script is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
--- 1,6 ----
  #!/usr/bin/env python3
  #
! # Copyright (C) 2013-2023 Free Software Foundation, Inc.
  #
  # This script is free software; you can redistribute it and/or modify
  # it under the terms of the GNU General Public License as published by
*************** class TestsuiteFilter (GenericFilter):
*** 596,601 ****
--- 596,603 ----
                  '.go',
                  '.inc',
                  '.java',
+                 '.mod',
+                 '.rs'
                  ])
  
      def skip_file (self, dir, filename):
*************** class LibPhobosFilter (GenericFilter):
*** 636,643 ****
          GenericFilter.__init__ (self)
  
          self.skip_files |= set ([
!                 # Source module imported from upstream.
                  'object.d',
                  ])
  
          self.skip_dirs |= set ([
--- 638,646 ----
          GenericFilter.__init__ (self)
  
          self.skip_files |= set ([
!                 # Source modules imported from upstream.
                  'object.d',
+                 '__builtins.di'
                  ])
  
          self.skip_dirs |= set ([
*************** class LibStdCxxFilter (GenericFilter):
*** 680,685 ****
--- 683,701 ----
              return re.compile ('// \(C\) Copyright Jeremy Siek')
          return GenericFilter.get_line_filter (self, dir, filename)
  
+ class ContribFilter(GenericFilter):
+     def __init__ (self):
+         GenericFilter.__init__ (self)
+ 
+         self.skip_files |= set ([
+                 # A different copyrights.
+                 'unicode-license.txt',
+                 'Info.plist',
+                 # Contains CR (^M).
+                 'repro_fail',
+                 'test_patches.txt',
+                 ])
+ 
  class GCCCopyright (Copyright):
      def __init__ (self, errors):
          Copyright.__init__ (self, errors)
*************** class GCCCopyright (Copyright):
*** 699,704 ****
--- 715,721 ----
          self.add_external_author ('Advanced Micro Devices Inc.')
          self.add_external_author ('Ami Tavory and Vladimir Dreizin, IBM-HRL.')
          self.add_external_author ('Cavium Networks.')
+         self.add_external_author ('David Malcolm')
          self.add_external_author ('Faraday Technology Corp.')
          self.add_external_author ('Florida State University')
          self.add_external_author ('Gerard Jungman')
*************** class GCCCopyright (Copyright):
*** 720,725 ****
--- 737,743 ----
          self.add_external_author ('Stephen L. Moshier')
          self.add_external_author ('Sun Microsystems, Inc. All rights reserved.')
          self.add_external_author ('The D Language Foundation, All Rights Reserved')
+         self.add_external_author ('The fast_float authors')
          self.add_external_author ('The Go Authors.  All rights reserved.')
          self.add_external_author ('The Go Authors. All rights reserved.')
          self.add_external_author ('The Go Authors.')
*************** class GCCCmdLine (CmdLine):
*** 738,744 ****
          # boehm-gc is imported from upstream.
          self.add_dir ('c++tools')
          self.add_dir ('config', ConfigFilter())
!         # contrib isn't really part of GCC.
          self.add_dir ('fixincludes')
          self.add_dir ('gcc', GCCFilter())
          self.add_dir (os.path.join ('gcc', 'testsuite'), TestsuiteFilter())
--- 756,762 ----
          # boehm-gc is imported from upstream.
          self.add_dir ('c++tools')
          self.add_dir ('config', ConfigFilter())
!         self.add_dir ('contrib', ContribFilter())
          self.add_dir ('fixincludes')
          self.add_dir ('gcc', GCCFilter())
          self.add_dir (os.path.join ('gcc', 'testsuite'), TestsuiteFilter())
*************** class GCCCmdLine (CmdLine):
*** 760,766 ****
          self.add_dir ('libiberty')
          self.add_dir ('libitm')
          self.add_dir ('libobjc')
-         # liboffloadmic is imported from upstream.
          self.add_dir ('libphobos', LibPhobosFilter())
          self.add_dir ('libquadmath')
          # libsanitizer is imported from upstream.
--- 778,783 ----
*************** class GCCCmdLine (CmdLine):
*** 773,778 ****
--- 790,796 ----
  
          self.default_dirs = [
              'c++tools',
+             'contrib',
              'gcc',
              'include',
              'libada',
diff -Nrcpad gcc-12.2.0/contrib/vim-gcc-dev/ftdetect/gcc-dev.vim gcc-13.1.0/contrib/vim-gcc-dev/ftdetect/gcc-dev.vim
*** gcc-12.2.0/contrib/vim-gcc-dev/ftdetect/gcc-dev.vim	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/vim-gcc-dev/ftdetect/gcc-dev.vim	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  " Vim file type detection rules for GCC development
  "
! " Copyright (C) 2018 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
--- 1,6 ----
  " Vim file type detection rules for GCC development
  "
! " Copyright (C) 2018-2023 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/vim-gcc-dev/syntax/gcc-match.vim gcc-13.1.0/contrib/vim-gcc-dev/syntax/gcc-match.vim
*** gcc-12.2.0/contrib/vim-gcc-dev/syntax/gcc-match.vim	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/vim-gcc-dev/syntax/gcc-match.vim	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  " Vim syntax highlighting rules for GCC match-and-simplify language.
  "
! " Copyright (C) 2018 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
--- 1,6 ----
  " Vim syntax highlighting rules for GCC match-and-simplify language.
  "
! " Copyright (C) 2018-2023 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/vim-gcc-dev/syntax/gcc-rtl.vim gcc-13.1.0/contrib/vim-gcc-dev/syntax/gcc-rtl.vim
*** gcc-12.2.0/contrib/vim-gcc-dev/syntax/gcc-rtl.vim	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/vim-gcc-dev/syntax/gcc-rtl.vim	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  " Syntax highlighting rules for RTL dump files (for Vim).
  "
! " Copyright (C) 2018 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
--- 1,6 ----
  " Syntax highlighting rules for RTL dump files (for Vim).
  "
! " Copyright (C) 2018-2023 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/vim-gcc-dev/syntax/gimple.vim gcc-13.1.0/contrib/vim-gcc-dev/syntax/gimple.vim
*** gcc-12.2.0/contrib/vim-gcc-dev/syntax/gimple.vim	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/vim-gcc-dev/syntax/gimple.vim	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  " Syntax highlighting rules for GIMPLE dump files (for Vim).
  "
! " Copyright (C) 2015 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
--- 1,6 ----
  " Syntax highlighting rules for GIMPLE dump files (for Vim).
  "
! " Copyright (C) 2015-2023 Free Software Foundation, Inc.
  "
  " This script is free software; you can redistribute it and/or modify
  " it under the terms of the GNU General Public License as published by
diff -Nrcpad gcc-12.2.0/contrib/vimrc gcc-13.1.0/contrib/vimrc
*** gcc-12.2.0/contrib/vimrc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/contrib/vimrc	Wed Apr 26 07:09:39 2023
***************
*** 11,17 ****
  "   $ make vimrc
  " from GCC build folder.
  " 
! " Copyright (C) 2014 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
--- 11,17 ----
  "   $ make vimrc
  " from GCC build folder.
  " 
! " Copyright (C) 2014-2023 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
diff -Nrcpad gcc-12.2.0/fixincludes/ChangeLog gcc-13.1.0/fixincludes/ChangeLog
*** gcc-12.2.0/fixincludes/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/fixincludes/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,10 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-02-27  John David Anglin  <danglin@gcc.gnu.org>
  
--- 1,94 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-03-28  Xi Ruoyao  <xry111@xry111.site>
  
! 	PR other/109293
! 	* configure.ac (AC_CHECK_DECLS): Add memmem.
! 	* configure: Regenerate.
! 	* config.h.in: Regenerate.
! 	* system.h (memmem): Declare if HAVE_DECL_MEMMEM is zero.
! 
! 2023-02-17  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
! 
! 	* inclhack.def (solaris_math_12): Add bypass.
! 	* fixincl.x: Regenerate.
! 
! 2023-01-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	* fixincl.x: Regenerate.
! 	* inclhack.def (darwin_objc_runtime_1): New hack.
! 	* tests/base/objc/runtime.h: New file.
! 
! 2023-01-21  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR target/107568
! 	* fixincl.x: Regenerate.
! 	* inclhack.def: Add a fix for MacOS13 SDK function deprecations
! 	in stdio.h.
! 	* tests/base/stdio.h (__deprecated_msg): New test.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	Revert:
! 	2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* Makefile.in: Set and use PICFLAG and LD_PICFLAG.  Use the "pic"
! 	build of libiberty if PICFLAG is set.
! 	* configure.ac:
! 	* configure: Regenerate.
! 
! 2022-11-23  Marek Polacek  <polacek@redhat.com>
! 
! 	* Makefile.in: Set and use PICFLAG and LD_PICFLAG.  Use the "pic"
! 	build of libiberty if PICFLAG is set.
! 	* configure.ac:
! 	* configure: Regenerate.
! 
! 2022-10-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR bootstrap/107059
! 	* inclhack.def (glibc_cxx_floatn_5): New.
! 	* fixincl.x: Regenerated.
! 	* tests/base/bits/floatn.h: Regenerated.
! 
! 2022-10-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR bootstrap/107059
! 	* inclhack.def (glibc_cxx_floatn_2): Handle #elif the same as #if.
! 	(glibc_cxx_floatn_4): New.
! 	* fixincl.x: Regenerated.
! 	* tests/base/bits/floatn.h: Regenerated.
! 
! 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
! 	glibc_cxx_floatn_3): Add to files also "*/bits/floatn.h"
! 	and "*/bits/floatn-common.h".
! 	* fixincl.x: Regenerated.
! 
! 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106652
! 	PR c++/85518
! 	* inclhack.def (glibc_cxx_floatn_1, glibc_cxx_floatn_2,
! 	glibc_cxx_floatn_3): New fixes.
! 	* tests/base/bits/floatn.h: New file.
! 	* fixincl.x: Regenerated.
! 
! 2022-08-31  Martin Liska  <mliska@suse.cz>
! 
! 	* configure: Regenerate.
! 
! 2022-08-31  Martin Liska  <mliska@suse.cz>
! 
! 	* configure: Regenerate.
! 
! 2022-08-25  Martin Liska  <mliska@suse.cz>
! 
! 	* config.h.in: Regenerate.
! 	* configure: Regenerate.
  
  2022-02-27  John David Anglin  <danglin@gcc.gnu.org>
  
***************
*** 67,74 ****
  	PR other/21823
  	PR bootstrap/80047
  	* fixincl.c (process): Simplify the handling for highly
! 	  unlikely access() failure, to avoid using non-standard
! 	  extensions.
  
  2021-08-30  John David Anglin  <danglin@gcc.gnu.org>
  
--- 151,158 ----
  	PR other/21823
  	PR bootstrap/80047
  	* fixincl.c (process): Simplify the handling for highly
! 	unlikely access() failure, to avoid using non-standard
! 	extensions.
  
  2021-08-30  John David Anglin  <danglin@gcc.gnu.org>
  
***************
*** 86,93 ****
  
  	PR other/91085
  	* fixfixes.c (check_has_inc): New static function.
! 	  (machine_name_fix): Don't replace header names in
! 	  __has_include(...).
  	* inclhack.def (machine_name): Adjust test.
  	* tests/base/testing.h: Update.
  
--- 170,177 ----
  
  	PR other/91085
  	* fixfixes.c (check_has_inc): New static function.
! 	(machine_name_fix): Don't replace header names in
! 	__has_include(...).
  	* inclhack.def (machine_name): Adjust test.
  	* tests/base/testing.h: Update.
  
diff -Nrcpad gcc-12.2.0/fixincludes/config.h.in gcc-13.1.0/fixincludes/config.h.in
*** gcc-12.2.0/fixincludes/config.h.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/config.h.in	Wed Apr 26 07:09:39 2023
***************
*** 1,397 ****
  /* config.h.in.  Generated from configure.ac by autoheader.  */
  
  /* Defined to the executable file extension on the host system */
- #ifndef USED_FOR_TARGET
  #undef EXE_EXT
- #endif
- 
  
  /* Define to 1 if you have the `clearerr_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_CLEARERR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `abort', and to 0 if you don't.
     */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_ABORT
- #endif
- 
  
  /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
     don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_ASPRINTF
- #endif
- 
  
  /* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_BASENAME
- #endif
- 
  
  /* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_CLEARERR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `errno', and to 0 if you don't.
     */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_ERRNO
- #endif
- 
  
  /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
     don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FEOF_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FERROR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FFLUSH_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fgetc_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FGETC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FGETS_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fileno_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FILENO_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fprintf_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FPRINTF_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FPUTC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FPUTS_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FREAD_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_FWRITE_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_GETCHAR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
     don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_GETC_UNLOCKED
- #endif
  
  
  /* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
     you don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_PUTCHAR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
     don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_PUTC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
     don't. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_DECL_VASPRINTF
- #endif
- 
  
  /* Define to 1 if you have the <fcntl.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FCNTL_H
- #endif
- 
  
  /* Define to 1 if you have the `feof_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FEOF_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `ferror_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FERROR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fflush_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FFLUSH_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fgetc_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FGETC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fgets_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FGETS_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fileno_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FILENO_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fprintf_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FPRINTF_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fputc_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FPUTC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fputs_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FPUTS_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fread_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FREAD_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `fwrite_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_FWRITE_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `getchar_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_GETCHAR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `getc_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_GETC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the <inttypes.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_INTTYPES_H
- #endif
- 
  
  /* Define to 1 if you have the <memory.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_MEMORY_H
- #endif
- 
  
  /* Define if mmap with MAP_ANON(YMOUS) works. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_MMAP_ANON
- #endif
- 
  
  /* Define if mmap of /dev/zero works. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_MMAP_DEV_ZERO
- #endif
- 
  
  /* Define if read-only mmap of a plain file works. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_MMAP_FILE
- #endif
- 
  
  /* Define to 1 if you have the `putchar_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_PUTCHAR_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the `putc_unlocked' function. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_PUTC_UNLOCKED
- #endif
- 
  
  /* Define to 1 if you have the <stddef.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_STDDEF_H
- #endif
- 
  
  /* Define to 1 if you have the <stdint.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_STDINT_H
- #endif
- 
  
  /* Define to 1 if you have the <stdlib.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_STDLIB_H
- #endif
- 
  
  /* Define to 1 if you have the <strings.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_STRINGS_H
- #endif
- 
  
  /* Define to 1 if you have the <string.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_STRING_H
- #endif
- 
  
  /* Define to 1 if you have the <sys/file.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_SYS_FILE_H
- #endif
- 
  
  /* Define to 1 if you have the <sys/stat.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_SYS_STAT_H
- #endif
- 
  
  /* Define to 1 if you have the <sys/types.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_SYS_TYPES_H
- #endif
- 
  
  /* Define to 1 if you have the <unistd.h> header file. */
- #ifndef USED_FOR_TARGET
  #undef HAVE_UNISTD_H
- #endif
- 
  
  /* Define to the address where bug reports for this package should be sent. */
- #ifndef USED_FOR_TARGET
  #undef PACKAGE_BUGREPORT
- #endif
- 
  
  /* Define to the full name of this package. */
- #ifndef USED_FOR_TARGET
  #undef PACKAGE_NAME
- #endif
- 
  
  /* Define to the full name and version of this package. */
- #ifndef USED_FOR_TARGET
  #undef PACKAGE_STRING
- #endif
- 
  
  /* Define to the one symbol short name of this package. */
- #ifndef USED_FOR_TARGET
  #undef PACKAGE_TARNAME
- #endif
- 
  
  /* Define to the home page for this package. */
- #ifndef USED_FOR_TARGET
  #undef PACKAGE_URL
- #endif
- 
  
  /* Define to the version of this package. */
- #ifndef USED_FOR_TARGET
  #undef PACKAGE_VERSION
- #endif
- 
  
  /* Defined to the best working sed program on the host system */
- #ifndef USED_FOR_TARGET
  #undef SED_PROGRAM
- #endif
- 
  
  /* Define if testing and fixing are done by separate process */
- #ifndef USED_FOR_TARGET
  #undef SEPARATE_FIX_PROC
- #endif
- 
  
  /* Define to 1 if you have the ANSI C header files. */
- #ifndef USED_FOR_TARGET
  #undef STDC_HEADERS
- #endif
- 
  
  /* Enable extensions on AIX 3, Interix.  */
  #ifndef _ALL_SOURCE
--- 1,215 ----
  /* config.h.in.  Generated from configure.ac by autoheader.  */
  
  /* Defined to the executable file extension on the host system */
  #undef EXE_EXT
  
  /* Define to 1 if you have the `clearerr_unlocked' function. */
  #undef HAVE_CLEARERR_UNLOCKED
  
  /* Define to 1 if you have the declaration of `abort', and to 0 if you don't.
     */
  #undef HAVE_DECL_ABORT
  
  /* Define to 1 if you have the declaration of `asprintf', and to 0 if you
     don't. */
  #undef HAVE_DECL_ASPRINTF
  
  /* Define to 1 if you have the declaration of `basename(char *)', and to 0 if
     you don't. */
  #undef HAVE_DECL_BASENAME
  
  /* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_CLEARERR_UNLOCKED
  
  /* Define to 1 if you have the declaration of `errno', and to 0 if you don't.
     */
  #undef HAVE_DECL_ERRNO
  
  /* Define to 1 if you have the declaration of `feof_unlocked', and to 0 if you
     don't. */
  #undef HAVE_DECL_FEOF_UNLOCKED
  
  /* Define to 1 if you have the declaration of `ferror_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FERROR_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fflush_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FFLUSH_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fgetc_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FGETC_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fgets_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FGETS_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fileno_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FILENO_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fprintf_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FPRINTF_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fputc_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FPUTC_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fputs_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FPUTS_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fread_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FREAD_UNLOCKED
  
  /* Define to 1 if you have the declaration of `fwrite_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_FWRITE_UNLOCKED
  
  /* Define to 1 if you have the declaration of `getchar_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_GETCHAR_UNLOCKED
  
  /* Define to 1 if you have the declaration of `getc_unlocked', and to 0 if you
     don't. */
  #undef HAVE_DECL_GETC_UNLOCKED
  
+ /* Define to 1 if you have the declaration of `memmem', and to 0 if you don't.
+    */
+ #undef HAVE_DECL_MEMMEM
  
  /* Define to 1 if you have the declaration of `putchar_unlocked', and to 0 if
     you don't. */
  #undef HAVE_DECL_PUTCHAR_UNLOCKED
  
  /* Define to 1 if you have the declaration of `putc_unlocked', and to 0 if you
     don't. */
  #undef HAVE_DECL_PUTC_UNLOCKED
  
  /* Define to 1 if you have the declaration of `vasprintf', and to 0 if you
     don't. */
  #undef HAVE_DECL_VASPRINTF
  
  /* Define to 1 if you have the <fcntl.h> header file. */
  #undef HAVE_FCNTL_H
  
  /* Define to 1 if you have the `feof_unlocked' function. */
  #undef HAVE_FEOF_UNLOCKED
  
  /* Define to 1 if you have the `ferror_unlocked' function. */
  #undef HAVE_FERROR_UNLOCKED
  
  /* Define to 1 if you have the `fflush_unlocked' function. */
  #undef HAVE_FFLUSH_UNLOCKED
  
  /* Define to 1 if you have the `fgetc_unlocked' function. */
  #undef HAVE_FGETC_UNLOCKED
  
  /* Define to 1 if you have the `fgets_unlocked' function. */
  #undef HAVE_FGETS_UNLOCKED
  
  /* Define to 1 if you have the `fileno_unlocked' function. */
  #undef HAVE_FILENO_UNLOCKED
  
  /* Define to 1 if you have the `fprintf_unlocked' function. */
  #undef HAVE_FPRINTF_UNLOCKED
  
  /* Define to 1 if you have the `fputc_unlocked' function. */
  #undef HAVE_FPUTC_UNLOCKED
  
  /* Define to 1 if you have the `fputs_unlocked' function. */
  #undef HAVE_FPUTS_UNLOCKED
  
  /* Define to 1 if you have the `fread_unlocked' function. */
  #undef HAVE_FREAD_UNLOCKED
  
  /* Define to 1 if you have the `fwrite_unlocked' function. */
  #undef HAVE_FWRITE_UNLOCKED
  
  /* Define to 1 if you have the `getchar_unlocked' function. */
  #undef HAVE_GETCHAR_UNLOCKED
  
  /* Define to 1 if you have the `getc_unlocked' function. */
  #undef HAVE_GETC_UNLOCKED
  
  /* Define to 1 if you have the <inttypes.h> header file. */
  #undef HAVE_INTTYPES_H
  
  /* Define to 1 if you have the <memory.h> header file. */
  #undef HAVE_MEMORY_H
  
  /* Define if mmap with MAP_ANON(YMOUS) works. */
  #undef HAVE_MMAP_ANON
  
  /* Define if mmap of /dev/zero works. */
  #undef HAVE_MMAP_DEV_ZERO
  
  /* Define if read-only mmap of a plain file works. */
  #undef HAVE_MMAP_FILE
  
  /* Define to 1 if you have the `putchar_unlocked' function. */
  #undef HAVE_PUTCHAR_UNLOCKED
  
  /* Define to 1 if you have the `putc_unlocked' function. */
  #undef HAVE_PUTC_UNLOCKED
  
  /* Define to 1 if you have the <stddef.h> header file. */
  #undef HAVE_STDDEF_H
  
  /* Define to 1 if you have the <stdint.h> header file. */
  #undef HAVE_STDINT_H
  
  /* Define to 1 if you have the <stdlib.h> header file. */
  #undef HAVE_STDLIB_H
  
  /* Define to 1 if you have the <strings.h> header file. */
  #undef HAVE_STRINGS_H
  
  /* Define to 1 if you have the <string.h> header file. */
  #undef HAVE_STRING_H
  
  /* Define to 1 if you have the <sys/file.h> header file. */
  #undef HAVE_SYS_FILE_H
  
  /* Define to 1 if you have the <sys/stat.h> header file. */
  #undef HAVE_SYS_STAT_H
  
  /* Define to 1 if you have the <sys/types.h> header file. */
  #undef HAVE_SYS_TYPES_H
  
  /* Define to 1 if you have the <unistd.h> header file. */
  #undef HAVE_UNISTD_H
  
  /* Define to the address where bug reports for this package should be sent. */
  #undef PACKAGE_BUGREPORT
  
  /* Define to the full name of this package. */
  #undef PACKAGE_NAME
  
  /* Define to the full name and version of this package. */
  #undef PACKAGE_STRING
  
  /* Define to the one symbol short name of this package. */
  #undef PACKAGE_TARNAME
  
  /* Define to the home page for this package. */
  #undef PACKAGE_URL
  
  /* Define to the version of this package. */
  #undef PACKAGE_VERSION
  
  /* Defined to the best working sed program on the host system */
  #undef SED_PROGRAM
  
  /* Define if testing and fixing are done by separate process */
  #undef SEPARATE_FIX_PROC
  
  /* Define to 1 if you have the ANSI C header files. */
  #undef STDC_HEADERS
  
  /* Enable extensions on AIX 3, Interix.  */
  #ifndef _ALL_SOURCE
***************
*** 416,453 ****
  
  
  /* Define to 1 if on MINIX. */
- #ifndef USED_FOR_TARGET
  #undef _MINIX
- #endif
- 
  
  /* Define to 2 if the system does not provide POSIX.1 features except with
     this defined. */
- #ifndef USED_FOR_TARGET
  #undef _POSIX_1_SOURCE
- #endif
- 
  
  /* Define to 1 if you need to in order for `stat' and other things to work. */
- #ifndef USED_FOR_TARGET
  #undef _POSIX_SOURCE
- #endif
- 
  
  /* Define to xatexit if the host system does not support atexit */
- #ifndef USED_FOR_TARGET
  #undef atexit
- #endif
- 
  
  /* Define to empty if `const' does not conform to ANSI C. */
- #ifndef USED_FOR_TARGET
  #undef const
- #endif
- 
  
  /* Define to xexit if the host system does not support atexit */
- #ifndef USED_FOR_TARGET
  #undef exit
- #endif
- 
--- 234,253 ----
diff -Nrcpad gcc-12.2.0/fixincludes/configure gcc-13.1.0/fixincludes/configure
*** gcc-12.2.0/fixincludes/configure	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/configure	Wed Apr 26 07:09:39 2023
*************** ac_configure="$SHELL $ac_aux_dir/configu
*** 2644,2650 ****
  
  # _LT_DARWIN_LINKER_FEATURES
  # --------------------------
! # Checks for linker and compiler features on darwin
  
  
  # _LT_SYS_MODULE_PATH_AIX
--- 2644,2650 ----
  
  # _LT_DARWIN_LINKER_FEATURES
  # --------------------------
! # Checks for linker and compiler features on Darwin / macOS / iOS
  
  
  # _LT_SYS_MODULE_PATH_AIX
*************** fi
*** 5043,5048 ****
--- 5043,5058 ----
  cat >>confdefs.h <<_ACEOF
  #define HAVE_DECL_VASPRINTF $ac_have_decl
  _ACEOF
+ ac_fn_c_check_decl "$LINENO" "memmem" "ac_cv_have_decl_memmem" "$ac_includes_default"
+ if test "x$ac_cv_have_decl_memmem" = xyes; then :
+   ac_have_decl=1
+ else
+   ac_have_decl=0
+ fi
+ 
+ cat >>confdefs.h <<_ACEOF
+ #define HAVE_DECL_MEMMEM $ac_have_decl
+ _ACEOF
  
  ac_fn_c_check_decl "$LINENO" "clearerr_unlocked" "ac_cv_have_decl_clearerr_unlocked" "$ac_includes_default"
  if test "x$ac_cv_have_decl_clearerr_unlocked" = xyes; then :
diff -Nrcpad gcc-12.2.0/fixincludes/configure.ac gcc-13.1.0/fixincludes/configure.ac
*** gcc-12.2.0/fixincludes/configure.ac	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/configure.ac	Wed Apr 26 07:09:39 2023
*************** define(fixincludes_UNLOCKED_FUNCS, clear
*** 88,94 ****
    fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
    putchar_unlocked putc_unlocked)
  AC_CHECK_FUNCS(fixincludes_UNLOCKED_FUNCS)
! AC_CHECK_DECLS([abort, asprintf, basename(char *), errno, vasprintf])
  AC_CHECK_DECLS(m4_split(m4_normalize(fixincludes_UNLOCKED_FUNCS)))
  
  # Checks for typedefs, structures, and compiler characteristics.
--- 88,94 ----
    fread_unlocked fwrite_unlocked getchar_unlocked getc_unlocked dnl
    putchar_unlocked putc_unlocked)
  AC_CHECK_FUNCS(fixincludes_UNLOCKED_FUNCS)
! AC_CHECK_DECLS([abort, asprintf, basename(char *), errno, vasprintf, memmem])
  AC_CHECK_DECLS(m4_split(m4_normalize(fixincludes_UNLOCKED_FUNCS)))
  
  # Checks for typedefs, structures, and compiler characteristics.
diff -Nrcpad gcc-12.2.0/fixincludes/fixincl.x gcc-13.1.0/fixincludes/fixincl.x
*** gcc-12.2.0/fixincludes/fixincl.x	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/fixincl.x	Wed Apr 26 07:09:39 2023
***************
*** 2,12 ****
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  February 27, 2022 at 07:47:03 PM by AutoGen 5.18.16
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Sun Feb 27 19:47:03 UTC 2022
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
--- 2,12 ----
   *
   * DO NOT EDIT THIS FILE   (fixincl.x)
   *
!  * It has been AutoGen-ed  January 22, 2023 at 09:03:29 PM by AutoGen 5.18.12
   * From the definitions    inclhack.def
   * and the template file   fixincl
   */
! /* DO NOT SVN-MERGE THIS FILE, EITHER Sun Jan 22 21:03:29 CET 2023
   *
   * You must regenerate it.  Use the ./genfixes script.
   *
***************
*** 15,21 ****
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 267 fixup descriptions.
   *
   * See README for more information.
   *
--- 15,21 ----
   * certain ANSI-incompatible system header files which are fixed to work
   * correctly with ANSI C and placed in a directory that GNU C will search.
   *
!  * This file contains 274 fixup descriptions.
   *
   * See README for more information.
   *
*************** int vfscanf(FILE *, const char *, __buil
*** 2610,2615 ****
--- 2610,2655 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Apple_Local_Stdio_Fn_Deprecation fix
+  */
+ tSCC zApple_Local_Stdio_Fn_DeprecationName[] =
+      "apple_local_stdio_fn_deprecation";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zApple_Local_Stdio_Fn_DeprecationList[] =
+   "stdio.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzApple_Local_Stdio_Fn_DeprecationMachs[] = {
+         "*-*-*darwin2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zApple_Local_Stdio_Fn_DeprecationSelect0[] =
+        "__deprecated_msg([^\n\
+ ]*)$";
+ 
+ #define    APPLE_LOCAL_STDIO_FN_DEPRECATION_TEST_CT  1
+ static tTestDesc aApple_Local_Stdio_Fn_DeprecationTests[] = {
+   { TT_EGREP,    zApple_Local_Stdio_Fn_DeprecationSelect0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Apple_Local_Stdio_Fn_Deprecation
+  */
+ static const char* apzApple_Local_Stdio_Fn_DeprecationPatch[] = {
+     "format",
+     "#if defined(__APPLE_LOCAL_DEPRECATIONS)\n\
+ %0\n\
+ #endif",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Ctrl_Quotes_Def fix
   */
  tSCC zCtrl_Quotes_DefName[] =
*************** static const char* apzDarwin_Os_Trace_2P
*** 3046,3051 ****
--- 3086,3138 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Darwin_Objc_Runtime_1 fix
+  */
+ tSCC zDarwin_Objc_Runtime_1Name[] =
+      "darwin_objc_runtime_1";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zDarwin_Objc_Runtime_1List[] =
+   "objc/runtime.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ tSCC* apzDarwin_Objc_Runtime_1Machs[] = {
+         "*-*-darwin2*",
+         (const char*)NULL };
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zDarwin_Objc_Runtime_1Select0[] =
+        "OBJC_EXPORT void.*\n\
+ objc_enumerateClasses.*\n\
+ .*\n\
+ .*\n\
+ .*\n\
+ .*void \\(\\^ _Nonnull block.*\n\
+ .*\n\
+ .*\n\
+ .*OBJC_REFINED_FOR_SWIFT.*";
+ 
+ #define    DARWIN_OBJC_RUNTIME_1_TEST_CT  1
+ static tTestDesc aDarwin_Objc_Runtime_1Tests[] = {
+   { TT_EGREP,    zDarwin_Objc_Runtime_1Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Darwin_Objc_Runtime_1
+  */
+ static const char* apzDarwin_Objc_Runtime_1Patch[] = {
+     "format",
+     "#if __BLOCKS__\n\
+ %0\n\
+ #endif",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Darwin_Os_Trace_3 fix
   */
  tSCC zDarwin_Os_Trace_3Name[] =
*************** static const char* apzGlibc_C99_Inline_4
*** 4107,4112 ****
--- 4194,4402 ----
  
  /* * * * * * * * * * * * * * * * * * * * * * * * * *
   *
+  *  Description of Glibc_Cxx_Floatn_1 fix
+  */
+ tSCC zGlibc_Cxx_Floatn_1Name[] =
+      "glibc_cxx_floatn_1";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zGlibc_Cxx_Floatn_1List[] =
+   "bits/floatn.h\0bits/floatn-common.h\0*/bits/floatn.h\0*/bits/floatn-common.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ #define apzGlibc_Cxx_Floatn_1Machs (const char**)NULL
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zGlibc_Cxx_Floatn_1Select0[] =
+        "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n\
+ (([ \t]*/\\*[^\n\
+ ]*\\*/\n\
+ )?([ \t]*#[ \t]*if[^\n\
+ ]*\n\
+ )?[ \t]*#[ \t]*define __f(16|32|64|128)x?\\()";
+ 
+ #define    GLIBC_CXX_FLOATN_1_TEST_CT  1
+ static tTestDesc aGlibc_Cxx_Floatn_1Tests[] = {
+   { TT_EGREP,    zGlibc_Cxx_Floatn_1Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Glibc_Cxx_Floatn_1
+  */
+ static const char* apzGlibc_Cxx_Floatn_1Patch[] = {
+     "format",
+     "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n\
+ %2",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Glibc_Cxx_Floatn_2 fix
+  */
+ tSCC zGlibc_Cxx_Floatn_2Name[] =
+      "glibc_cxx_floatn_2";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zGlibc_Cxx_Floatn_2List[] =
+   "bits/floatn.h\0bits/floatn-common.h\0*/bits/floatn.h\0*/bits/floatn-common.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ #define apzGlibc_Cxx_Floatn_2Machs (const char**)NULL
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zGlibc_Cxx_Floatn_2Select0[] =
+        "^([ \t]*#[ \t]*(el)?if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n\
+ (([ \t]*/\\*[^\n\
+ ]*\\*/\n\
+ )?[ \t]*typedef[ \t]+[^\n\
+ ]*[ \t]+_Float(16|32|64|128)x?([ \t]+__attribute__ \\(\\(__mode__ \\(__HF__\\)\\)\\))?;)";
+ 
+ #define    GLIBC_CXX_FLOATN_2_TEST_CT  1
+ static tTestDesc aGlibc_Cxx_Floatn_2Tests[] = {
+   { TT_EGREP,    zGlibc_Cxx_Floatn_2Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Glibc_Cxx_Floatn_2
+  */
+ static const char* apzGlibc_Cxx_Floatn_2Patch[] = {
+     "format",
+     "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n\
+ %3",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Glibc_Cxx_Floatn_3 fix
+  */
+ tSCC zGlibc_Cxx_Floatn_3Name[] =
+      "glibc_cxx_floatn_3";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zGlibc_Cxx_Floatn_3List[] =
+   "bits/floatn.h\0bits/floatn-common.h\0*/bits/floatn.h\0*/bits/floatn-common.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ #define apzGlibc_Cxx_Floatn_3Machs (const char**)NULL
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zGlibc_Cxx_Floatn_3Select0[] =
+        "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n\
+ (([ \t]*/\\*[^\n\
+ ]*\n\
+ ?[^\n\
+ ]*\\*/\n\
+ )?([ \t]*#[ \t]*if[^\n\
+ ]*\n\
+ )?([ \t]*typedef[ \t]+[^\n\
+ ]*;\n\
+ )?[ \t]*#[ \t]*define __CFLOAT(16|32|64|128)X?[ \t]+)";
+ 
+ #define    GLIBC_CXX_FLOATN_3_TEST_CT  1
+ static tTestDesc aGlibc_Cxx_Floatn_3Tests[] = {
+   { TT_EGREP,    zGlibc_Cxx_Floatn_3Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Glibc_Cxx_Floatn_3
+  */
+ static const char* apzGlibc_Cxx_Floatn_3Patch[] = {
+     "format",
+     "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n\
+ %2",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Glibc_Cxx_Floatn_4 fix
+  */
+ tSCC zGlibc_Cxx_Floatn_4Name[] =
+      "glibc_cxx_floatn_4";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zGlibc_Cxx_Floatn_4List[] =
+   "bits/floatn.h\0*/bits/floatn.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ #define apzGlibc_Cxx_Floatn_4Machs (const char**)NULL
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zGlibc_Cxx_Floatn_4Select0[] =
+        "^([ \t]*#[ \t]*if __LDBL_MANT_DIG__ == 113 && )defined __cplusplus\n\
+ (([ \t]*/\\*[^\n\
+ ]*\\*/\n\
+ )?[ \t]*typedef[ \t]+[^\n\
+ ]*[ \t]+_Float128;)";
+ 
+ #define    GLIBC_CXX_FLOATN_4_TEST_CT  1
+ static tTestDesc aGlibc_Cxx_Floatn_4Tests[] = {
+   { TT_EGREP,    zGlibc_Cxx_Floatn_4Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Glibc_Cxx_Floatn_4
+  */
+ static const char* apzGlibc_Cxx_Floatn_4Patch[] = {
+     "format",
+     "%1defined __cplusplus && !__GNUC_PREREQ (13, 0)\n\
+ %2",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
+  *  Description of Glibc_Cxx_Floatn_5 fix
+  */
+ tSCC zGlibc_Cxx_Floatn_5Name[] =
+      "glibc_cxx_floatn_5";
+ 
+ /*
+  *  File name selection pattern
+  */
+ tSCC zGlibc_Cxx_Floatn_5List[] =
+   "bits/floatn.h\0bits/floatn-common.h\0*/bits/floatn.h\0*/bits/floatn-common.h\0";
+ /*
+  *  Machine/OS name selection pattern
+  */
+ #define apzGlibc_Cxx_Floatn_5Machs (const char**)NULL
+ 
+ /*
+  *  content selection pattern - do fix if pattern found
+  */
+ tSCC zGlibc_Cxx_Floatn_5Select0[] =
+        "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n\
+ ([ \t]*#[ \t]+error \"_Float128[xX] supported but no )";
+ 
+ #define    GLIBC_CXX_FLOATN_5_TEST_CT  1
+ static tTestDesc aGlibc_Cxx_Floatn_5Tests[] = {
+   { TT_EGREP,    zGlibc_Cxx_Floatn_5Select0, (regex_t*)NULL }, };
+ 
+ /*
+  *  Fix Command Arguments for Glibc_Cxx_Floatn_5
+  */
+ static const char* apzGlibc_Cxx_Floatn_5Patch[] = {
+     "format",
+     "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n\
+ %2",
+     (char*)NULL };
+ 
+ /* * * * * * * * * * * * * * * * * * * * * * * * * *
+  *
   *  Description of Glibc_Mutex_Init fix
   */
  tSCC zGlibc_Mutex_InitName[] =
*************** tSCC* apzSolaris_Math_12Machs[] = {
*** 8259,8266 ****
  tSCC zSolaris_Math_12Select0[] =
         "#undef.*_GLIBCXX_USE_C99_MATH";
  
! #define    SOLARIS_MATH_12_TEST_CT  1
  static tTestDesc aSolaris_Math_12Tests[] = {
    { TT_EGREP,    zSolaris_Math_12Select0, (regex_t*)NULL }, };
  
  /*
--- 8549,8563 ----
  tSCC zSolaris_Math_12Select0[] =
         "#undef.*_GLIBCXX_USE_C99_MATH";
  
! /*
!  *  content bypass pattern - skip fix if pattern found
!  */
! tSCC zSolaris_Math_12Bypass0[] =
!        "__MATH_PREEMPTS_GLIBCXX_C99_MATH";
! 
! #define    SOLARIS_MATH_12_TEST_CT  2
  static tTestDesc aSolaris_Math_12Tests[] = {
+   { TT_NEGREP,   zSolaris_Math_12Bypass0, (regex_t*)NULL },
    { TT_EGREP,    zSolaris_Math_12Select0, (regex_t*)NULL }, };
  
  /*
*************** static const char* apzX11_SprintfPatch[]
*** 10872,10880 ****
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          305
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            267
  
  /*
   *  Enumerate the fixes
--- 11169,11177 ----
   *
   *  List of all fixes
   */
! #define REGEX_COUNT          313
  #define MACH_LIST_SIZE_LIMIT 187
! #define FIX_COUNT            274
  
  /*
   *  Enumerate the fixes
*************** typedef enum {
*** 10941,10946 ****
--- 11238,11244 ----
      BROKEN_CABS_FIXIDX,
      BROKEN_NAN_FIXIDX,
      BSD_STDIO_ATTRS_CONFLICT_FIXIDX,
+     APPLE_LOCAL_STDIO_FN_DEPRECATION_FIXIDX,
      CTRL_QUOTES_DEF_FIXIDX,
      CTRL_QUOTES_USE_FIXIDX,
      CXX_UNREADY_FIXIDX,
*************** typedef enum {
*** 10952,10957 ****
--- 11250,11256 ----
      DARWIN_LONGJMP_NORETURN_FIXIDX,
      DARWIN_OS_TRACE_1_FIXIDX,
      DARWIN_OS_TRACE_2_FIXIDX,
+     DARWIN_OBJC_RUNTIME_1_FIXIDX,
      DARWIN_OS_TRACE_3_FIXIDX,
      DARWIN_OS_BASE_1_FIXIDX,
      DARWIN_DISPATCH_OBJECT_1_FIXIDX,
*************** typedef enum {
*** 10977,10982 ****
--- 11276,11286 ----
      GLIBC_C99_INLINE_2_FIXIDX,
      GLIBC_C99_INLINE_3_FIXIDX,
      GLIBC_C99_INLINE_4_FIXIDX,
+     GLIBC_CXX_FLOATN_1_FIXIDX,
+     GLIBC_CXX_FLOATN_2_FIXIDX,
+     GLIBC_CXX_FLOATN_3_FIXIDX,
+     GLIBC_CXX_FLOATN_4_FIXIDX,
+     GLIBC_CXX_FLOATN_5_FIXIDX,
      GLIBC_MUTEX_INIT_FIXIDX,
      GLIBC_STDINT_FIXIDX,
      GLIBC_STRNCPY_FIXIDX,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 11455,11460 ****
--- 11759,11769 ----
       BSD_STDIO_ATTRS_CONFLICT_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aBsd_Stdio_Attrs_ConflictTests,   apzBsd_Stdio_Attrs_ConflictPatch, 0 },
  
+   {  zApple_Local_Stdio_Fn_DeprecationName,    zApple_Local_Stdio_Fn_DeprecationList,
+      apzApple_Local_Stdio_Fn_DeprecationMachs,
+      APPLE_LOCAL_STDIO_FN_DEPRECATION_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aApple_Local_Stdio_Fn_DeprecationTests,   apzApple_Local_Stdio_Fn_DeprecationPatch, 0 },
+ 
    {  zCtrl_Quotes_DefName,    zCtrl_Quotes_DefList,
       apzCtrl_Quotes_DefMachs,
       CTRL_QUOTES_DEF_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 11510,11515 ****
--- 11819,11829 ----
       DARWIN_OS_TRACE_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aDarwin_Os_Trace_2Tests,   apzDarwin_Os_Trace_2Patch, 0 },
  
+   {  zDarwin_Objc_Runtime_1Name,    zDarwin_Objc_Runtime_1List,
+      apzDarwin_Objc_Runtime_1Machs,
+      DARWIN_OBJC_RUNTIME_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aDarwin_Objc_Runtime_1Tests,   apzDarwin_Objc_Runtime_1Patch, 0 },
+ 
    {  zDarwin_Os_Trace_3Name,    zDarwin_Os_Trace_3List,
       apzDarwin_Os_Trace_3Machs,
       DARWIN_OS_TRACE_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
*************** tFixDesc fixDescList[ FIX_COUNT ] = {
*** 11635,11640 ****
--- 11949,11979 ----
       GLIBC_C99_INLINE_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
       aGlibc_C99_Inline_4Tests,   apzGlibc_C99_Inline_4Patch, 0 },
  
+   {  zGlibc_Cxx_Floatn_1Name,    zGlibc_Cxx_Floatn_1List,
+      apzGlibc_Cxx_Floatn_1Machs,
+      GLIBC_CXX_FLOATN_1_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aGlibc_Cxx_Floatn_1Tests,   apzGlibc_Cxx_Floatn_1Patch, 0 },
+ 
+   {  zGlibc_Cxx_Floatn_2Name,    zGlibc_Cxx_Floatn_2List,
+      apzGlibc_Cxx_Floatn_2Machs,
+      GLIBC_CXX_FLOATN_2_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aGlibc_Cxx_Floatn_2Tests,   apzGlibc_Cxx_Floatn_2Patch, 0 },
+ 
+   {  zGlibc_Cxx_Floatn_3Name,    zGlibc_Cxx_Floatn_3List,
+      apzGlibc_Cxx_Floatn_3Machs,
+      GLIBC_CXX_FLOATN_3_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aGlibc_Cxx_Floatn_3Tests,   apzGlibc_Cxx_Floatn_3Patch, 0 },
+ 
+   {  zGlibc_Cxx_Floatn_4Name,    zGlibc_Cxx_Floatn_4List,
+      apzGlibc_Cxx_Floatn_4Machs,
+      GLIBC_CXX_FLOATN_4_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aGlibc_Cxx_Floatn_4Tests,   apzGlibc_Cxx_Floatn_4Patch, 0 },
+ 
+   {  zGlibc_Cxx_Floatn_5Name,    zGlibc_Cxx_Floatn_5List,
+      apzGlibc_Cxx_Floatn_5Machs,
+      GLIBC_CXX_FLOATN_5_TEST_CT, FD_MACH_ONLY | FD_SUBROUTINE,
+      aGlibc_Cxx_Floatn_5Tests,   apzGlibc_Cxx_Floatn_5Patch, 0 },
+ 
    {  zGlibc_Mutex_InitName,    zGlibc_Mutex_InitList,
       apzGlibc_Mutex_InitMachs,
       GLIBC_MUTEX_INIT_TEST_CT, FD_MACH_ONLY,
diff -Nrcpad gcc-12.2.0/fixincludes/inclhack.def gcc-13.1.0/fixincludes/inclhack.def
*** gcc-12.2.0/fixincludes/inclhack.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/inclhack.def	Wed Apr 26 07:09:39 2023
*************** fix = {
*** 1269,1274 ****
--- 1269,1286 ----
      test_text = '#define  vfscanf	__svfscanf';
  };
  
+ fix = {
+     hackname  = apple_local_stdio_fn_deprecation;
+     mach      = "*-*-*darwin2*";
+     files     = stdio.h;
+     select    = "__deprecated_msg([^\n]*)$";
+     c_fix     = format;
+     c_fix_arg = "#if defined(__APPLE_LOCAL_DEPRECATIONS)\n"
+                 "%0\n"
+                 "#endif";
+     test_text = '__deprecated_msg("This function is provided for compat...")';
+ };
+ 
  /*
   *  Fix various macros used to define ioctl numbers.
   *  The traditional syntax was:
*************** fix = {
*** 1480,1485 ****
--- 1492,1532 ----
  };
  
  /*
+  *  macOSX 13.0 SDK objc/runtime.h uses Apple Blocks extension without a guard.
+  */
+ 
+ fix = {
+   hackname  = darwin_objc_runtime_1;
+   mach      = "*-*-darwin2*";
+   files     = objc/runtime.h;
+   select    =   <<- _EOSelect_
+ 	OBJC_EXPORT void.*
+ 	objc_enumerateClasses.*
+ 	.*
+ 	.*
+ 	.*
+ 	.*void \(\^ _Nonnull block.*
+ 	.*
+ 	.*
+ 	.*OBJC_REFINED_FOR_SWIFT.*
+ 	_EOSelect_;
+   c_fix     = format;
+   c_fix_arg = "#if __BLOCKS__\n%0\n#endif";
+   test_text = <<- _OBJC_RUNTIME_1
+ OBJC_EXPORT void
+ objc_enumerateClasses(const void * _Nullable image,
+                       const char * _Nullable namePrefix,
+                       Protocol * _Nullable conformingTo,
+                       Class _Nullable subclassing,
+                       void (^ _Nonnull block)(Class _Nonnull aClass, BOOL * _Nonnull stop)
+                       OBJC_NOESCAPE)
+ OBJC_AVAILABLE(13.0, 16.0, 16.0, 9.0, 7.0)
+ OBJC_REFINED_FOR_SWIFT;
+ _OBJC_RUNTIME_1;
+ };
+ 
+ 
+ /*
   *  In Mac OS X 10.1[012] <os/trace.h>, need to guard users of
   *  os_trace_payload_t typedef, too.
   */
*************** fix = {
*** 2015,2020 ****
--- 2062,2200 ----
  	EOT;
  };
  
+ /*  glibc-2.27 to 2.36 assume GCC 7 or later supports some or all
+  *  of _Float{16,32,64,128} and _Float{32,64,128}x keywords for C,
+  *  but doesn't for C++.
+  */
+ fix = {
+     hackname  = glibc_cxx_floatn_1;
+     files     = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
+     select    = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
+ 		"(([ \t]*/\\*[^\n]*\\*/\n)?"
+ 		"([ \t]*#[ \t]*if[^\n]*\n)?"
+ 		"[ \t]*#[ \t]*define __f(16|32|64|128)x?\\()";
+     c_fix     = format;
+     c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%2";
+     test_text = <<-EOT
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	/* The literal suffix f128 exists only since GCC 7.0.  */
+ 	#   define __f128(x) x##l
+ 	#  else
+ 	#   define __f128(x) x##f128
+ 	#  endif
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	/* The literal suffix (f128) exist for powerpc only since GCC 7.0.  */
+ 	#   if __LDBL_MANT_DIG__ == 113
+ 	#    define __f128(x) x##l
+ 	#   else
+ 	#    define __f128(x) x##q
+ 	#   endif
+ 	#  else
+ 	#   define __f128(x) x##f128
+ 	#  endif
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	#   ifdef __NO_LONG_DOUBLE_MATH
+ 	#    define __f64(x) x##l
+ 	#   else
+ 	#    define __f64(x) x
+ 	#   endif
+ 	#  else
+ 	#   define __f64(x) x##f64
+ 	#  endif
+ 	EOT;
+ };
+ 
+ fix = {
+     hackname  = glibc_cxx_floatn_2;
+     files     = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
+     select    = "^([ \t]*#[ \t]*(el)?if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
+ 		"(([ \t]*/\\*[^\n]*\\*/\n)?"
+ 		"[ \t]*typedef[ \t]+[^\n]*[ \t]+_Float(16|32|64|128)x?([ \t]+__attribute__ \\(\\(__mode__ \\(__HF__\\)\\)\\))?;)";
+     c_fix     = format;
+     c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%3";
+     test_text = <<-EOT
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
+ 	#  endif
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	typedef __float128 _Float128;
+ 	#  endif
+ 	#  if 0
+ 	#  elif !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	typedef __float128 _Float128;
+ 	#  endif
+ 	EOT;
+ };
+ 
+ fix = {
+     hackname  = glibc_cxx_floatn_3;
+     files     = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
+     select    = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
+ 		"(([ \t]*/\\*[^\n]*\n?[^\n]*\\*/\n)?"
+ 		"([ \t]*#[ \t]*if[^\n]*\n)?"
+ 		"([ \t]*typedef[ \t]+[^\n]*;\n)?"
+ 		"[ \t]*#[ \t]*define __CFLOAT(16|32|64|128)X?[ \t]+)";
+     c_fix     = format;
+     c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%2";
+     test_text = <<-EOT
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	#   define __CFLOAT128 _Complex long double
+ 	#  else
+ 	#   define __CFLOAT128 _Complex _Float128
+ 	#  endif
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	/* Add a typedef for older GCC compilers which don't natively support
+ 	   _Complex _Float128.  */
+ 	typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
+ 	#   define __CFLOAT128 __cfloat128
+ 	#  else
+ 	#   define __CFLOAT128 _Complex _Float128
+ 	#  endif
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	#   ifdef __NO_LONG_DOUBLE_MATH
+ 	#    define __CFLOAT64 _Complex long double
+ 	#   else
+ 	#    define __CFLOAT64 _Complex double
+ 	#   endif
+ 	#  else
+ 	#   define __CFLOAT64 _Complex _Float64
+ 	#  endif
+ 	EOT;
+ };
+ 
+ fix = {
+     hackname  = glibc_cxx_floatn_4;
+     files     = bits/floatn.h, "*/bits/floatn.h";
+     select    = "^([ \t]*#[ \t]*if __LDBL_MANT_DIG__ == 113 && )defined __cplusplus\n"
+ 		"(([ \t]*/\\*[^\n]*\\*/\n)?"
+ 		"[ \t]*typedef[ \t]+[^\n]*[ \t]+_Float128;)";
+     c_fix     = format;
+     c_fix_arg = "%1defined __cplusplus && !__GNUC_PREREQ (13, 0)\n%2";
+     test_text = <<-EOT
+ 	#  if __LDBL_MANT_DIG__ == 113 && defined __cplusplus
+ 	typedef long double _Float128;
+ 	#   define __CFLOAT128 _Complex long double
+ 	#  endif
+ 	EOT;
+ };
+ 
+ fix = {
+     hackname  = glibc_cxx_floatn_5;
+     files     = bits/floatn.h, bits/floatn-common.h, "*/bits/floatn.h", "*/bits/floatn-common.h";
+     select    = "^([ \t]*#[ \t]*if !__GNUC_PREREQ \\(7, 0\\) \\|\\| )defined __cplusplus\n"
+ 		"([ \t]*#[ \t]+error \"_Float128[xX] supported but no )";
+     c_fix     = format;
+     c_fix_arg = "%1(defined __cplusplus && !__GNUC_PREREQ (13, 0))\n%2";
+     test_text = <<-EOT
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	#   error "_Float128X supported but no constant suffix"
+ 	#  endif
+ 	#  if !__GNUC_PREREQ (7, 0) || defined __cplusplus
+ 	#   error "_Float128x supported but no type"
+ 	#  endif
+ 	EOT;
+ };
+ 
  /*  glibc-2.3.5 defines pthread mutex initializers incorrectly,
   *  so we replace them with versions that correspond to the
   *  definition.
*************** fix = {
*** 4126,4131 ****
--- 4306,4312 ----
      files     = math.h;
      mach      = '*-*-solaris2*';
      select    = '#undef.*_GLIBCXX_USE_C99_MATH';
+     bypass    = '__MATH_PREEMPTS_GLIBCXX_C99_MATH';
      sed       = "/#undef[ \t]*_GLIBCXX_USE_C99_MATH/d";
      test_text = << _EOText_
  #if __cplusplus >= 201103L
diff -Nrcpad gcc-12.2.0/fixincludes/system.h gcc-13.1.0/fixincludes/system.h
*** gcc-12.2.0/fixincludes/system.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/system.h	Wed Apr 26 07:09:39 2023
*************** extern int errno;
*** 209,214 ****
--- 209,218 ----
  extern void abort (void);
  #endif
  
+ #if defined (HAVE_DECL_MEMMEM) && !HAVE_DECL_MEMMEM
+ extern void *memmem (const void *, size_t, const void *, size_t);
+ #endif
+ 
  #if HAVE_SYS_STAT_H
  # include <sys/stat.h>
  #endif
diff -Nrcpad gcc-12.2.0/fixincludes/tests/base/bits/floatn.h gcc-13.1.0/fixincludes/tests/base/bits/floatn.h
*** gcc-12.2.0/fixincludes/tests/base/bits/floatn.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/fixincludes/tests/base/bits/floatn.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,96 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/bits/floatn.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( GLIBC_CXX_FLOATN_1_CHECK )
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ /* The literal suffix f128 exists only since GCC 7.0.  */
+ #   define __f128(x) x##l
+ #  else
+ #   define __f128(x) x##f128
+ #  endif
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ /* The literal suffix (f128) exist for powerpc only since GCC 7.0.  */
+ #   if __LDBL_MANT_DIG__ == 113
+ #    define __f128(x) x##l
+ #   else
+ #    define __f128(x) x##q
+ #   endif
+ #  else
+ #   define __f128(x) x##f128
+ #  endif
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ #   ifdef __NO_LONG_DOUBLE_MATH
+ #    define __f64(x) x##l
+ #   else
+ #    define __f64(x) x
+ #   endif
+ #  else
+ #   define __f64(x) x##f64
+ #  endif
+ #endif  /* GLIBC_CXX_FLOATN_1_CHECK */
+ 
+ 
+ #if defined( GLIBC_CXX_FLOATN_2_CHECK )
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
+ #  endif
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ typedef __float128 _Float128;
+ #  endif
+ #  if 0
+ #  elif !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ typedef __float128 _Float128;
+ #  endif
+ #endif  /* GLIBC_CXX_FLOATN_2_CHECK */
+ 
+ 
+ #if defined( GLIBC_CXX_FLOATN_3_CHECK )
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ #   define __CFLOAT128 _Complex long double
+ #  else
+ #   define __CFLOAT128 _Complex _Float128
+ #  endif
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ /* Add a typedef for older GCC compilers which don't natively support
+    _Complex _Float128.  */
+ typedef _Complex float __cfloat128 __attribute__ ((__mode__ (__TC__)));
+ #   define __CFLOAT128 __cfloat128
+ #  else
+ #   define __CFLOAT128 _Complex _Float128
+ #  endif
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ #   ifdef __NO_LONG_DOUBLE_MATH
+ #    define __CFLOAT64 _Complex long double
+ #   else
+ #    define __CFLOAT64 _Complex double
+ #   endif
+ #  else
+ #   define __CFLOAT64 _Complex _Float64
+ #  endif
+ #endif  /* GLIBC_CXX_FLOATN_3_CHECK */
+ 
+ 
+ #if defined( GLIBC_CXX_FLOATN_4_CHECK )
+ #  if __LDBL_MANT_DIG__ == 113 && defined __cplusplus && !__GNUC_PREREQ (13, 0)
+ typedef long double _Float128;
+ #   define __CFLOAT128 _Complex long double
+ #  endif
+ #endif  /* GLIBC_CXX_FLOATN_4_CHECK */
+ 
+ 
+ #if defined( GLIBC_CXX_FLOATN_5_CHECK )
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ #   error "_Float128X supported but no constant suffix"
+ #  endif
+ #  if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
+ #   error "_Float128x supported but no type"
+ #  endif
+ #endif  /* GLIBC_CXX_FLOATN_5_CHECK */
diff -Nrcpad gcc-12.2.0/fixincludes/tests/base/objc/runtime.h gcc-13.1.0/fixincludes/tests/base/objc/runtime.h
*** gcc-12.2.0/fixincludes/tests/base/objc/runtime.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/fixincludes/tests/base/objc/runtime.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /*  DO NOT EDIT THIS FILE.
+ 
+     It has been auto-edited by fixincludes from:
+ 
+ 	"fixinc/tests/inc/objc/runtime.h"
+ 
+     This had to be done to correct non-standard usages in the
+     original, manufacturer supplied header file.  */
+ 
+ 
+ 
+ #if defined( DARWIN_OBJC_RUNTIME_1_CHECK )
+ #if __BLOCKS__
+ OBJC_EXPORT void
+ objc_enumerateClasses(const void * _Nullable image,
+                       const char * _Nullable namePrefix,
+                       Protocol * _Nullable conformingTo,
+                       Class _Nullable subclassing,
+                       void (^ _Nonnull block)(Class _Nonnull aClass, BOOL * _Nonnull stop)
+                       OBJC_NOESCAPE)
+ OBJC_AVAILABLE(13.0, 16.0, 16.0, 9.0, 7.0)
+ OBJC_REFINED_FOR_SWIFT;
+ #endif
+ #endif  /* DARWIN_OBJC_RUNTIME_1_CHECK */
diff -Nrcpad gcc-12.2.0/fixincludes/tests/base/stdio.h gcc-13.1.0/fixincludes/tests/base/stdio.h
*** gcc-12.2.0/fixincludes/tests/base/stdio.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/fixincludes/tests/base/stdio.h	Wed Apr 26 07:09:39 2023
*************** int vfscanf(FILE *, const char *, __buil
*** 41,46 ****
--- 41,53 ----
  #endif  /* BSD_STDIO_ATTRS_CONFLICT_CHECK */
  
  
+ #if defined( APPLE_LOCAL_STDIO_FN_DEPRECATION_CHECK )
+ #if defined(__APPLE_LOCAL_DEPRECATIONS)
+ __deprecated_msg("This function is provided for compat...")
+ #endif
+ #endif  /* APPLE_LOCAL_STDIO_FN_DEPRECATION_CHECK */
+ 
+ 
  #if defined( HPUX10_STDIO_DECLARATIONS_CHECK )
  #  define _iob __iob
  
diff -Nrcpad gcc-12.2.0/gcc/ABOUT-GCC-NLS gcc-13.1.0/gcc/ABOUT-GCC-NLS
*** gcc-12.2.0/gcc/ABOUT-GCC-NLS	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ABOUT-GCC-NLS	Wed Apr 26 07:09:39 2023
*************** configure GCC with --enable-maintainer-m
*** 49,55 ****
  rebuilt.
  
  
! Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 49,55 ----
  rebuilt.
  
  
! Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/BASE-VER gcc-13.1.0/gcc/BASE-VER
*** gcc-12.2.0/gcc/BASE-VER	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/gcc/BASE-VER	Wed Apr 26 07:10:02 2023
***************
*** 1 ****
! 12.2.0
--- 1 ----
! 13.1.0
diff -Nrcpad gcc-12.2.0/gcc/ChangeLog gcc-13.1.0/gcc/ChangeLog
*** gcc-12.2.0/gcc/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/gcc/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,11055 ****
! 2022-08-19  Release Manager
! 
! 	* GCC 12.2.0 released.
! 
! 2022-08-17  Ilya Leoshkevich  <iii@linux.ibm.com>
! 
! 	Backported from master:
! 	2022-08-04  Ilya Leoshkevich  <iii@linux.ibm.com>
! 
! 	* config/s390/vector.md (V_HW_FT): New iterator.
! 	* config/s390/vx-builtins.md (vsel<mode>): Use V_HW_FT instead
! 	of V_HW.
! 
! 2022-08-12  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2022-07-26  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR c/106016
! 	* expr.cc (count_type_elements): Handle OPAQUE_TYPE.
! 
! 2022-08-11  Andre Simoes Dias Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	Backported from master:
! 	2022-07-25  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	* config/aarch64/aarch64.md (rbit<mode>2): Rename this ...
! 	(@aarch64_rbit<mode>): ... to this and change it in...
! 	(ffs<mode>2,ctz<mode>2): ... here.
! 	(@aarch64_rev16<mode>): New.
! 	* config/aarch64/aarch64-builtins.cc: (aarch64_builtins):
! 	Define the following enum AARCH64_REV16, AARCH64_REV16L,
! 	AARCH64_REV16LL, AARCH64_RBIT, AARCH64_RBITL, AARCH64_RBITLL.
! 	(aarch64_init_data_intrinsics): New.
! 	(aarch64_general_init_builtins): Add call to
! 	aarch64_init_data_intrinsics.
! 	(aarch64_expand_builtin_data_intrinsic): New.
! 	(aarch64_general_expand_builtin): Add call to
! 	aarch64_expand_builtin_data_intrinsic.
! 	* config/aarch64/arm_acle.h (__clz, __clzl, __clzll, __cls, __clsl,
! 	__clsll, __rbit, __rbitl, __rbitll, __rev, __revl, __revll, __rev16,
! 	__rev16l, __rev16ll, __ror, __rorl, __rorll, __revsh): New.
! 
! 2022-08-10  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	Backported from master:
! 	2022-08-09  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	PR middle-end/106492
! 	* omp-low.cc (lower_rec_input_clauses): Add missing folding
! 	to data type of linear-clause list item.
! 
! 2022-08-10  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-08-10  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/106513
! 	* gimple-ssa-store-merging.cc (do_shift_rotate): Use uint64_t
! 	for head_marker.
! 
! 2022-08-10  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-08-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR lto/106540
! 	PR lto/106334
! 	* lto-streamer-in.cc (lto_read_tree_1): Use lto_input_tree_1
! 	to input DECL_INITIAL, avoiding to commit drefs.
! 
! 2022-08-05   Michael Meissner  <meissner@linux.ibm.com>
! 
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Remove code
! 	setting -mblock-ops-vector-pair.  Back port patch from trunk on 8/3.
! 
! 2022-08-02  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	Backported from master:
! 	2022-07-25  Peter Bergner  <bergner@linux.ibm.com>
! 		    Kewen Lin  <linkw@linux.ibm.com>
! 
! 	PR testsuite/106345
! 	* config/rs6000/rs6000.h (DRIVER_SELF_SPECS): Adjust -mdejagnu-cpu
! 	to filter out all -mtune options.
! 
! 2022-08-02  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	Backported from master:
! 	2022-07-26  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	PR target/106091
! 	* config/rs6000/rs6000-p8swap.cc (replace_swapped_aligned_store): Copy
! 	REG_EH_REGION when replacing one store insn having it.
! 	(replace_swapped_aligned_load): Likewise.
! 
! 2022-07-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-07-29  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/106449
! 	* omp-expand.cc (expand_omp_simd): Fix up handling of pointer
! 	iterators in non-rectangular simd loops.  Unshare fd->loops[i].n2
! 	or n2 before regimplifying it inside of a condition.
! 
! 2022-07-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-07-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/106261
! 	* cgraphunit.cc (cgraph_node::assemble_thunks_and_aliases): Don't
! 	output asm thunks for -dx.
! 
! 2022-07-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-07-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/106144
! 	* wide-int.cc (wi::shifted_mask): If end >= prec, return right after
! 	emitting element for shift or if shift is 0 first element after start.
! 	(wide_int_cc_tests): Add tests for equivalency of wi::mask and
! 	wi::shifted_mask with 0 start.
! 
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* json.cc (string::print): Fix escaping of '\'.
! 
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* doc/invoke.texi (-fdump-analyzer-feasibility): Mention the
! 	fpath.txt output.
! 
! 2022-07-27  Maciej W. Rozycki  <macro@embecosm.com>
! 
! 	Backported from master:
! 	2022-07-27  Maciej W. Rozycki  <macro@embecosm.com>
! 
! 	* config/riscv/riscv.md (stack_protect_set_<mode>): Remove
! 	duplicate backslashes.
! 
! 2022-07-27  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-07-26  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/106189
! 	* gimple-array-bounds.cc (array_bounds_checker::check_mem_ref):
! 	Divide using offset_ints.
! 
! 2022-07-27  Joseph Myers  <joseph@codesourcery.com>
! 
! 	Backported from master:
! 	2022-06-30  Joseph Myers  <joseph@codesourcery.com>
! 
! 	PR lto/106129
! 	* lto-wrapper.cc (find_option): Add argument start.
! 	(merge_and_complain): Loop over existing_opt_index and
! 	existing_opt2_index for Xassembler check.  Update calls to
! 	find_option.
! 	(find_and_merge_options): Add argument first to determine whether
! 	to merge options with those passed in *opts.
! 	(run_gcc): Update calls to find_and_merge_options.
! 
! 2022-07-27  Andrew Pinski  <apinski@marvell.com>
! 
! 	Backported from master:
! 	2022-07-09  Andrew Pinski  <apinski@marvell.com>
! 
! 	PR tree-optimization/106087
! 	* tree-ssa-dce.cc (simple_dce_from_worklist): Check
! 	to make sure the statement is only defining one operand.
! 
! 2022-07-27  Tamar Christina  <tamar.christina@arm.com>
! 
! 	Backported from master:
! 	2022-07-08  Tamar Christina  <tamar.christina@arm.com>
! 
! 	PR tree-optimization/106063
! 	* match.pd: Do not apply pattern after veclower is not supported.
! 
! 2022-07-27  Alexandre Oliva  <oliva@adacore.com>
! 
! 	Backported from master:
! 	2022-06-03  Alexandre Oliva  <oliva@adacore.com>
! 
! 	PR tree-optimization/105665
! 	PR tree-optimization/100810
! 	* tree-ssa-loop-ivopts.cc
! 	(ssa_name_maybe_undef_p, ssa_name_set_maybe_undef): New.
! 	(ssa_name_any_use_dominates_bb_p, mark_ssa_maybe_undefs): New.
! 	(find_ssa_undef): Check precomputed flag and intervening uses.
! 	(tree_ssa_iv_optimize): Call mark_ssa_maybe_undefs.
! 
! 2022-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	Backported from master:
! 	2022-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* config/rs6000/rtems.h (CPLUSPLUS_CPP_SPEC): Undef.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/106331
! 	* builtins.cc (get_memory_rtx): Compute alignment from
! 	the original address and set MEM_OFFSET to unknown when
! 	we create a MEM_EXPR from the base object of the address.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-07-01  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/106131
! 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Force alias-set
! 	zero when offsetting the read looking through an aggregate
! 	copy.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-06-29  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/106112
! 	* tree-ssa-sccvn.cc (valueized_wider_op): Properly extend
! 	a constant operand according to its type.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-06-20  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/106027
! 	* fold-const.cc (fold_to_nonsharp_ineq_using_bound): Use the
! 	type of the prevailing comparison for the new comparison type.
! 	(fold_binary_loc): Use proper types for the A < X && A + 1 > Y
! 	to A < X && A >= Y folding.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-06-15  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105971
! 	* tree-ssa-alias.cc (refs_may_alias_p_2): Put bail-out for
! 	FUNCTION_DECL and LABEL_DECL refs after decl-decl disambiguation
! 	to leak less surprising alias results.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-06-15  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105969
! 	* gimple-ssa-sprintf.cc (get_origin_and_offset_r): Avoid division
! 	by zero in overflow check.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-06-14  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/105965
! 	* match.pd (view_convert CONSTRUCTOR): Handle single-element
! 	CTOR case.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-06-14  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105946
! 	* tree-ssa-uninit.cc (maybe_warn_pass_by_reference):
! 	Do not look at arguments not specified in the function call.
! 
! 2022-07-19  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-07-11  Richard Biener  <rguenthert@suse.de>
! 
! 	PR target/105459
! 	* config/i386/i386-options.cc (ix86_set_current_function):
! 	Rebuild the target optimization node whenever necessary,
! 	not only when the optimization node didn't change.
! 
! 2022-07-14   Michael Meissner  <meissner@linux.ibm.com>
! 
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Do
! 	not generate block copies with vector pair instructions if we are
! 	tuning for power10.  Back port from master branch.
! 
! 2022-07-14  Surya Kumari Jangala  <jskumari@linux.vnet.ibm.com>
! 
! 	Backported from master:
! 	2022-06-14  Surya Kumari Jangala  <jskumari@linux.ibm.com>
! 
! 	PR rtl-optimization/105041
! 	* regrename.cc (check_new_reg_p): Use nregs value from du chain.
! 
! 2022-07-11  Martin Jambor  <mjambor@suse.cz>
! 
! 	Backported from master:
! 	2022-07-04  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR tree-optimization/105860
! 	* tree-sra.cc (build_reconstructed_reference): Start expr
! 	traversal only just below the outermost union.
! 
! 2022-07-10  Xi Ruoyao  <xry111@xry111.site>
! 
! 	Backported from master:
! 	2022-07-10  Xi Ruoyao  <xry111@xry111.site>
! 
! 	* config/loongarch/loongarch.md (mulsidi3_64bit): Use mulw.d.w
! 	instead of mul.d.
! 
! 2022-07-09  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/105930
! 	* config/i386/i386.md (*<any_or>di3_doubleword): Split after
! 	reload.  Use rtx_equal_p to avoid creating memory-to-memory moves,
! 	and emit NOTE_INSN_DELETED if operand[2] is zero (i.e. with -O0).
! 
! 2022-07-08  Lulu Cheng  <chenglulu@loongson.cn>
! 
! 	Backported from master:
! 	2022-07-08  Lulu Cheng  <chenglulu@loongson.cn>
! 
! 	* config/loongarch/loongarch.cc (loongarch_compute_frame_info):
! 	Modify fp_sp_offset and gp_sp_offset's calculation method,
! 	when frame->mask or frame->fmask is zero, don't minus UNITS_PER_WORD
! 	or UNITS_PER_FP_REG.
! 
! 2022-07-04  Andrew MacLeod  <amacleod@redhat.com>
! 
! 	PR tree-optimization/106114
! 	* gimple-range-fold.cc (fold_using_range::relation_fold_and_or): Check
! 	statement operands instead of GORI cache.
! 
! 2022-07-04  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Marek Polacek  <polacek@redhat.com>
! 	    Segher Boessenkool  <segher@kernel.crashing.org>
! 	    Kewen Lin  <linkw@linux.ibm.com>
! 
! 	PR target/105991
! 	* config/rs6000/rs6000.md (rotl<mode>3_insert_3): Check that
! 	exact_log2 doesn't return -1 (or zero).
! 	(plus_xor): New code iterator.
! 	(*rotl<mode>3_insert_3_<code>): New define_insn_and_split.
! 
! 2022-07-04  Xi Ruoyao  <xry111@xry111.site>
! 
! 	Backported from master:
! 	2022-07-03  Xi Ruoyao  <xry111@xry111.site>
! 		    Lulu Cheng  <chenglulu@loongson.cn>
! 
! 	* config/loongarch/loongarch.cc (loongarch_check_zero_div_p):
! 	New static function.
! 	(loongarch_idiv_insns): Use loongarch_check_zero_div_p instead
! 	of TARGET_CHECK_ZERO_DIV.
! 	(loongarch_output_division): Likewise.
! 	* common/config/loongarch/loongarch-common.cc
! 	(TARGET_DEFAULT_TARGET_FLAGS): Remove unneeded hook.
! 	* doc/invoke.texi: Update to match the new behavior.
! 
! 2022-07-03  Roger Sayle  <roger@nextmovesoftware.com>
! 
! 	PR target/106122
! 	* config/i386/i386.md (peephole2): Avoid generating pop %esp
! 	when optimizing for size.
! 
! 2022-07-02  Sergei Trofimovich  <siarheit@google.com>
! 
! 	Backported from master:
! 	2022-06-29  Sergei Trofimovich  <siarheit@google.com>
! 
! 	PR c++/106102
! 	* system.h: Introduce INCLUDE_PTHREAD_H macros to include <pthread.h>.
! 
! 2022-07-01  Vladimir Makarov  <vmakarov@gcc.gnu.org>
! 
! 	Backported from master:
! 	2022-05-28  Vladimir Makarov  <vmakarov@gcc.gnu.org>
! 
! 	PR target/103722
! 	* config/sh/sh.cc (sh_register_move_cost): Avoid cost "2" (which
! 	is special) for various scenarios.
! 
! 2022-06-29  Richard Biener  <rguenther@suse.de>
! 
! 	Backported from master:
! 	2022-05-11  Richard Biener  <rguenther@suse.de>
! 
! 	PR bootstrap/105551
! 	* opts.cc (finish_options): Also disable var-tracking if
! 	!DWARF2_DEBUGGING_INFO.
! 
! 2022-06-29  Lulu Cheng  <chenglulu@loongson.cn>
! 
! 	Backported from master:
! 	2022-06-29  Lulu Cheng  <chenglulu@loongson.cn>
! 
! 	PR target/106097
! 	* config/loongarch/loongarch.cc (loongarch_build_integer):
! 	Remove undefined behavior from code.
! 
! 2022-06-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-06-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/106032
! 	* ifcvt.cc (noce_try_sign_mask): Punt if !t_unconditional, and
! 	t may_trap_or_fault_p, even if it is cheap.
! 
! 2022-06-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-06-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/106030
! 	* expr.cc (expand_cond_expr_using_cmove): Pass NULL_RTX instead of
! 	temp to expand_operands if mode has been promoted.
! 
! 2022-06-28  Xi Ruoyao  <xry111@xry111.site>
! 
! 	Backported from master:
! 	2022-06-28  Xi Ruoyao  <xry111@xry111.site>
! 
! 	PR target/106096
! 	* config/loongarch/loongarch.h (REG_CLASS_CONTENTS): Exclude
! 	$r13 from SIBCALL_REGS.
! 	* config/loongarch/loongarch.cc (loongarch_regno_to_class):
! 	Change $r13 to JIRL_REGS.
! 
! 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	Backported from master:
! 	2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
! 
! 	* config/tilepro/gen-mul-tables.cc (tilegx_emit): Adjust loop
! 	condition to avoid overflow.
! 
! 2022-06-23  Martin Liska  <mliska@suse.cz>
! 
! 	Backported from master:
! 	2022-06-23  Martin Liska  <mliska@suse.cz>
! 
! 	PR ipa/105600
! 	* ipa-icf.cc (sem_item_optimizer::filter_removed_items):
! 	Skip variables with body_removed.
! 
! 2022-06-23  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 
! 	Backported from master:
! 	2022-06-21  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 
! 	PR tree-optimization/105736
! 	* tree-object-size.cc (addr_object_size): Return size_unknown
! 	when object offset computation returns an error.
! 
! 2022-06-23  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	Backported from master:
! 	2022-06-15  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/105254
! 	PR tree-optimization/105940
! 	Revert:
! 	* config/aarch64/aarch64.cc
! 	(aarch64_vector_costs::determine_suggested_unroll_factor): Take a
! 	loop_vec_info as argument.  Restrict the unroll factor to values
! 	that divide the VF.
! 	(aarch64_vector_costs::finish_cost): Update call accordingly.
! 
! 2022-06-23  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	Backported from master:
! 	2022-06-14  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	PR tree-optimization/105940
! 	* tree-vect-loop.cc (vect_analyze_loop_2): Move the place of
! 	applying suggested_unroll_factor after start_over.
! 
! 2022-06-21  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2022-06-20  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	PR target/105960
! 	* config/i386/i386.cc (ix86_function_ok_for_sibcall): Return
! 	false if PIC register is used when calling ifunc functions.
! 
! 2022-06-20  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	Backported from master:
! 	2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/105209
! 	* config/alpha/alpha-protos.h (alpha_store_data_bypass_p): New.
! 	* config/alpha/alpha.cc (alpha_store_data_bypass_p): New function.
! 	(alpha_store_data_bypass_p_1): Ditto.
! 	* config/alpha/ev4.md: Use alpha_store_data_bypass_p instead
! 	of generic store_data_bypass_p.
! 	(ev4_ist_c): Remove insn reservation.
! 
! 2022-06-20  Uros Bizjak  <ubizjak@gmail.com>
! 
! 	Backported from master:
! 	2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/105970
! 	* config/i386/i386.cc (ix86_function_arg): Assert that
! 	the mode of pointer argumet is equal to ptr_mode, not Pmode.
! 
! 2022-06-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-06-18  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/105998
! 	* varasm.cc (narrowing_initializer_constant_valid_p): Check
! 	SCALAR_INT_MODE_P instead of INTEGRAL_MODE_P, also break on
! 	! INTEGRAL_TYPE_P and do the same check also on op{0,1}'s type.
! 
! 2022-06-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	Backported from master:
! 	2022-06-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/105951
! 	* tree-ssa-ccp.cc (optimize_atomic_bit_test_and,
! 	optimize_atomic_op_fetch_cmp_0): Remember gimple_call_fn (call)
! 	as last argument to the internal functions.
! 	* builtins.cc (expand_ifn_atomic_bit_test_and): Adjust for the
! 	extra call argument to ifns.  If expand_atomic_fetch_op fails for the
! 	lhs == NULL_TREE case, fall through into the optab code with
! 	gen_reg_rtx (mode) as target.  If second expand_atomic_fetch_op
! 	fails, construct a CALL_EXPR and expand that.
! 	(expand_ifn_atomic_op_fetch_cmp_0): Adjust for the extra call argument
! 	to ifns.  If expand_atomic_fetch_op fails, construct a CALL_EXPR and
! 	expand that.
! 
! 2022-06-19  Jan Hubicka  <jh@suse.cz>
! 
! 	Backported from master:
! 	2022-06-14  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR ipa/105739
! 	* ipa-prop.cc (ipa_load_from_parm_agg): Punt on volatile loads.
! 
! 2022-06-16  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	Backported from master:
! 	2022-06-15  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/105981
! 	* config/arm/arm.cc (gen_cpymem_ldrd_strd): Rename low_reg and hi_reg
! 	to first_reg and second_reg respectively.  Initialize them correctly
! 	when generating big-endian code.
! 
! 2022-06-15  Simon Wright  <simon@pushface.org>
! 
! 	Backported from master:
! 	2022-06-12  Simon Wright  <simon@pushface.org>
! 
! 	PR target/104871
! 	* config/darwin-driver.cc (darwin_find_version_from_kernel): If the OS
! 	version is darwin20 (macOS 11) or greater, truncate the version to the
! 	major number.
! 
! 2022-06-15  Mark Mentovai  <mark@mentovai.com>
! 
! 	Backported from master:
! 	2022-06-12  Mark Mentovai  <mark@mentovai.com>
! 
! 	* config/darwin-c.cc: Make -mmacosx-version-min more future-proof.
! 
! 2022-06-15  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	Backported from master:
! 	2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
! 
! 	PR target/105599
! 	* config/darwin.h: Move versions-specific handling of multiply_defined
! 	from SUBTARGET_DRIVER_SELF_SPECS to LINK_SPEC.
! 
! 2022-06-15  liuhongt  <hongtao.liu@intel.com>
! 
! 	PR target/105953
! 	* config/i386/sse.md (*avx_cmp<mode>3_ltint_not): Force_reg
! 	operands[3].
! 
! 2022-06-14  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	Backported from master:
! 	2022-06-13  H.J. Lu  <hjl.tools@gmail.com>
! 
! 	* common/config/i386/cpuinfo.h (get_available_features): Require
! 	AVX for F16C and VAES.
! 
! 2022-06-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 
! 	Backported from master:
! 	2022-06-02  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 
! 	* config/riscv/riscv.cc (riscv_build_integer_1): Rewrite value as
! 	(-1 << 31) for the single-bit case, when operating on (1 << 31)
! 	in SImode.
! 	* config/riscv/riscv.h (SINGLE_BIT_MASK_OPERAND): Allow for
! 	any single-bit value, moving the special case for (1 << 31) to
! 	riscv_build_integer_1 (in riscv.c).
! 
! 2022-06-08  Max Filippov  <jcmvbkbc@gmail.com>
! 
! 	Backported from master:
! 	2022-06-08  Max Filippov  <jcmvbkbc@gmail.com>
! 
! 	PR target/105879
! 	* config/xtensa/xtensa.md (movdi): Rename 'first' and 'second'
! 	to 'lowpart' and 'highpart' so that they match 'gen_lowpart' and
! 	'gen_highpart' bitwise semantics and fix order of highpart and
! 	lowpart depending on target endianness.
! 
! 2022-06-08  liuhongt  <hongtao.liu@intel.com>
! 
! 	PR target/105854
! 	* config/i386/sse.md (ssse3_palignrdi): Change alternative 2
! 	from Yv to Yw.
! 
! 2022-06-02  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 
! 	Backported from master:
! 	2022-05-13  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 		    Manolis Tsamis  <manolis.tsamis@vrull.eu>
  
! 	* config/riscv/riscv.h (CLZ_DEFINED_VALUE_AT_ZERO): Implement.
! 	(CTZ_DEFINED_VALUE_AT_ZERO): Same.
! 	* doc/sourcebuild.texi: add documentation for RISC-V specific
! 	test target keywords
  
! 2022-06-02  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
! 	2022-06-01  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105786
! 	* tree-loop-distribution.cc
! 	(loop_distribution::transform_reduction_loop): Only do strlen
! 	replacement for integer type reductions.
  
! 2022-06-02  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-27  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105726
! 	* gimple-ssa-warn-restrict.cc (builtin_memref::set_base_and_offset):
! 	Constrain array-of-flexarray case more.
  
! 2022-06-02  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
! 	2022-05-24  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/105711
! 	* expmed.cc (extract_bit_field_as_subreg): Add op0_mode parameter
! 	and use it.
! 	(extract_bit_field_1): Pass down the mode of op0 to
! 	extract_bit_field_as_subreg.
  
! 2022-06-02  Martin Sebor  <msebor@redhat.com>
  
  	Backported from master:
! 	2022-05-24  Martin Sebor  <msebor@redhat.com>
! 		    Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/105604
! 	* gimple-ssa-sprintf.cc (set_aggregate_size_and_offset): Add comments.
! 	(get_origin_and_offset_r): Remove null handling.  Handle variable array
! 	sizes.
! 	(get_origin_and_offset): Handle null argument here.  Simplify.
! 	(alias_offset): Update comment.
! 	* pointer-query.cc (field_at_offset): Update comment.  Handle members
! 	of variable-length types.
  
! 2022-06-02  Vineet Gupta  <vineetg@rivosinc.com>
  
  	Backported from master:
! 	2022-05-24  Vineet Gupta  <vineetg@rivosinc.com>
! 
! 	* config/riscv/riscv.cc: (struct riscv_tune_param): Add
! 	  fmv_cost.
! 	(rocket_tune_info): Add default fmv_cost 8.
! 	(sifive_7_tune_info): Ditto.
! 	(thead_c906_tune_info): Ditto.
! 	(optimize_size_tune_info): Ditto.
! 	(riscv_register_move_cost): Use fmv_cost for int<->fp moves.
  
! 2022-05-30  Martin Jambor  <mjambor@suse.cz>
  
! 	Backported from master:
! 	2022-05-27  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/105639
! 	* ipa-prop.cc (propagate_controlled_uses): Check type of the
! 	constant before adding a LOAD reference.
  
! 2022-05-30  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2022-05-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/105729
! 	* fold-const.cc (fold_unary_loc): Don't optimize (X &) ((Y *) z + w)
! 	to (X &) z + w if -fsanitize=null during GENERIC folding.
  
! 2022-05-30  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2022-05-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/105714
! 	* asan.cc (has_stmt_been_instrumented_p): For assignments which
! 	are both stores and loads, return true only if both destination
! 	and source have been instrumented.
  
! 2022-05-30  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2022-05-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/105635
! 	* pointer-query.cc (gimple_parm_array_size): Return NULL if var
! 	doesn't have pointer or reference type.
  
! 2022-05-26  Simon Cook  <simon.cook@embecosm.com>
  
! 	Backported from master:
! 	2022-05-25  Simon Cook  <simon.cook@embecosm.com>
  
! 	* config/riscv/arch-canonicalize: Only add mafd extension if
! 	base was rv32/rv64g.
  
! 2022-05-26  Kito Cheng  <kito.cheng@sifive.com>
  
! 	Backported from master:
! 	2022-05-09  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/arch-canonicalize: Handle g correctly.
  
! 2022-05-24  Qing Zhao  <qing.zhao@oracle.com>
  
! 	Backported from master:
! 	2022-05-09  Qing Zhao  <qing.zhao@oracle.com>
  
! 	PR target/101891
! 	* config/i386/i386.cc (zero_call_used_regno_mode): use V2SImode
! 	as a generic MMX mode instead of V4HImode.
! 	(zero_all_mm_registers): Use SET to zero instead of MOV for
! 	zeroing scratch registers.
! 	(ix86_zero_call_used_regs): Likewise.
  
! 2022-05-24  Bruno Haible  <bruno@clisp.org>
  
! 	Backported from master:
! 	2022-05-24  Bruno Haible  <bruno@clisp.org>
  
! 	PR other/105527
! 	* doc/install.texi (Configuration): Add more details about --with-zstd.
! 	Document --with-zstd-include and --with-zstd-lib
  
! 2022-05-24  Martin Liska  <mliska@suse.cz>
  
! 	Backported from master:
! 	2022-05-11  Martin Liska  <mliska@suse.cz>
  
! 	PR other/105527
! 	* doc/install.texi: Document the configure option --with-zstd.
  
! 2022-05-20  Peter Bergner  <bergner@linux.ibm.com>
  
! 	Backported from master:
! 	2022-05-18  Peter Bergner  <bergner@linux.ibm.com>
! 		    Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/105556
! 	* config/rs6000/mma.md (mma_<vv>, mma_<avv>, mma_<pv>, mma_<apv>,
! 	mma_<vvi4i4i8>, mma_<avvi4i4i8>, mma_<vvi4i4i2>, mma_<avvi4i4i2>,
! 	mma_<vvi4i4>, mma_<avvi4i4>, mma_<pvi4i2>, mma_<apvi4i2>,
! 	mma_<vvi4i4i4>, mma_<avvi4i4i4>): Replace "wa" constraints with "v,?wa".
! 	Update other operands accordingly.
  
! 2022-05-20  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103116
! 	* tree-vect-stmts.cc (get_group_load_store_type): Handle the
! 	case we need peeling for gaps even though GROUP_GAP is zero.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105618
! 	* tree-ssa-sink.cc (statement_sink_location): For virtual
! 	PHI uses ignore those defining the used virtual operand.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-12  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/105577
! 	* dse.cc (rest_of_handle_dse): Make sure to purge dead EH
! 	edges before running fast DCE via df_analyze.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105562
! 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Disambiguate
! 	against all CLOBBER defs if there's not an obvious must-alias
! 	and we are not doing redundant store elimination.
! 	(vn_walk_cb_data::redundant_store_removal_p): New field.
! 	(vn_reference_lookup_pieces): Initialize it.
! 	(vn_reference_lookup): Add argument to specify if we are
! 	doing redundant store removal.
! 	(eliminate_dom_walker::eliminate_stmt): Specify we do.
! 	* tree-ssa-sccvn.h (vn_reference_lookup): Adjust.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-11  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/105559
! 	* cfgrtl.cc (delete_insn_and_edges): Only perform search to BB_END
! 	for non-debug insns.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-10  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/105537
! 	* toplev.cc (process_options): Move flag_var_tracking
! 	handling ...
! 	* opts.cc (finish_options): ... here.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-10  Richard Biener  <rguenther@suse.de>
  
! 	* flags.h (dwarf_debuginfo_p): Add opts argument, guard
! 	API with !GENERATOR_FILE.
! 	* opts.cc (global_options): Poison.
! 	(global_options_set): Likewise.
! 	(finish_options): Refer to options via opts.
  
! 2022-05-19  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-04-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105431
! 	* tree-ssa-math-opts.cc (powi_as_mults_1): Make n unsigned.
! 	(powi_as_mults): Use absu_hwi.
! 	(gimple_expand_builtin_powi): Remove now pointless n != -n
! 	check.
  
! 2022-05-18  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/105458
! 	* value-relation.cc (path_oracle::register_relation): Merge, then check
! 	for equivalence.
  
! 2022-05-16  Sebastian Pop  <spop@amazon.com>
  
! 	PR target/105162
! 	* config/aarch64/aarch64-protos.h (atomic_ool_names): Increase dimension
! 	of str array.
! 	* config/aarch64/aarch64.cc (aarch64_atomic_ool_func): Call
! 	memmodel_from_int and handle MEMMODEL_SYNC_*.
! 	(DEF0): Add __aarch64_*_sync functions.
  
! 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* dwarf2out.cc (loc_list_from_tree_1) <TRUTH_NOT_EXPR>: Do a logical
! 	instead of a bitwise negation.
! 	<COND_EXPR>: Swap the operands if the condition is TRUTH_NOT_EXPR.
  
! 2022-05-13  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* tree-sra.cc (sra_modify_assign): Check that scalar storage order
! 	is the same on the LHS and RHS before rewriting one with the model
! 	of the other.
  
! 2022-05-13  Alexandre Oliva  <oliva@adacore.com>
  
! 	Backported from master:
! 	2022-05-13  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR rtl-optimization/105455
! 	* gimple-harden-conditionals.cc (insert_check_and_trap): Set
! 	probabilities for newly-conditional edges.
  
! 2022-05-11  Martin Jambor  <mjambor@suse.cz>
  
! 	Backported from master:
! 	2022-04-29  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/100413
! 	* cgraph.cc (cgraph_node::remove): Release body of the node this
! 	is clone_of if appropriate.
  
! 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2022-05-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/105528
! 	* gimple-isel.cc (gimple_expand_vec_set_expr): After gsi_remove
! 	set *gsi to gsi_for_stmt (ass_stmt).  Fix up function comment.
  
! 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/105292
! 	* config/sparc/sparc.cc (sparc_vectorize_vec_perm_const): Return
! 	true only for 8-byte vector modes.
  
! 2022-05-06  Michael Meissner  <meissner@linux.ibm.com>
  
! 	Backported from master:
! 	2022-05-06   Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/102059
! 	* config/rs6000/rs6000.cc (rs6000_can_inline_p): Ignore -mpower8-fusion
! 	and -mpower10-fusion options for inlining purposes.
  
! 2022-05-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-04-29  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/105376
! 	* tree.cc (build_real): Special case dconst* arguments
! 	for decimal floating point types.
  
! 2022-05-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105484
! 	* gimple-isel.cc (gimple_expand_vec_set_expr): Clean EH, return
! 	whether the CFG changed.
! 	(gimple_expand_vec_exprs): When the CFG changed, clean it up.
  
! 2022-05-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-03  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/105461
! 	* opts.cc (finish_options): Match the condition to
! 	disable flag_var_tracking to that of process_options.
  
! 2022-05-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-03  Richard Biener  <rguenther@suse.de>
  
! 	* opts.cc: #undef OPTIONS_SET_P.
! 	(finish_options): Use opts_set instead of OPTIONS_SET_P.
  
! 2022-05-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-02  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105437
! 	* tree-vect-slp.cc (vect_schedule_slp_node): Handle the
! 	case where last_stmt alters control flow.
  
! 2022-05-06  Richard Biener  <rguenther@suse.de>
  
! 	Backported from master:
! 	2022-05-03  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105394
! 	* tree-vect-generic.cc (expand_vector_condition): Adjust
! 	comp_width for non-integer mode masks as well.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
! 2022-05-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	Backported from master:
! 	2022-05-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* system.h: Include initializer_list.
  
! 2022-04-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR lto/105399
! 	* cgraph.cc (cgraph_node::verify_node): Don't verify
! 	semantic_interposition flag against
! 	opt_for_fn (decl, flag_semantic_interposition) for aliases in lto1.
  
! 2022-04-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/105331
! 	* config/i386/i386.cc (ix86_gimplify_va_arg): Mark va_arg_tmp
! 	temporary TREE_ADDRESSABLE before trying to gimplify ADDR_EXPR
! 	of it.
  
! 2022-04-28  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/install.texi (Configuration): Remove misleading text
! 	around LE PowerPC Linux multilibs.
  
! 2022-04-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	PR d/103528
! 	* doc/install.texi (Tools/packages necessary for building GCC)
! 	(GDC): Document libphobos requirement.
! 	(Host/target specific installation notes for GCC, *-*-solaris2*):
! 	Document libphobos and GDC specifics.
  
! 2022-04-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105219
! 	* tree-vect-loop.cc (vect_transform_loop): Disable
! 	special code narrowing the vectorized epilogue max
! 	iterations when peeling for alignment or gaps was in effect.
  
! 2022-04-28  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	* config/loongarch/loongarch.cc
! 	(loongarch_flatten_aggregate_field): Ignore empty fields for
! 	RECORD_TYPE.
  
! 2022-04-27  Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/loongarch/loongarch.md: Add fdiv define_expand template,
! 	then generate floating-point division and floating-point reciprocal
! 	instructions.
  
! 2022-04-27  Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/loongarch/loongarch.md: Add '(clobber (mem:BLK (scratch)))'
! 	to PLV instruction templates.
  
! 2022-04-27  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104492
! 	* gimple-ssa-warn-access.cc
! 	(pass_waccess::warn_invalid_pointer): Exclude equality compare
! 	diagnostics for all kind of invalidations.
! 	(pass_waccess::check_dangling_uses): Fix post-dominator query.
! 	(pass_waccess::check_pointer_uses): Likewise.
  
! 2022-04-27  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	PR target/102024
! 	* config/s390/s390-protos.h (s390_function_arg_vector): Remove
! 	prototype.
! 	* config/s390/s390.cc (s390_single_field_struct_p): New function.
! 	(s390_function_arg_vector): Invoke s390_single_field_struct_p.
! 	(s390_function_arg_float): Likewise.
  
! 2022-04-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/105396
! 	* asan.cc (asan_redzone_buffer::emit_redzone_byte): Handle the case
! 	where offset is bigger than off but smaller than m_prev_offset + 32
! 	bits by pushing one or more 0 bytes.  Sink the
! 	m_shadow_bytes.safe_push (value); flush_if_full (); statements from
! 	all cases to the end of the function.
  
! 2022-04-27  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/105271
! 	* config/rs6000/rs6000-builtins.def (NEG_V2DI): Move to [power8-vector]
! 	stanza.
  
! 2022-04-26  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* config/gcn/gcn.cc (gcn_print_lds_decl): Make "gang-private
! 	data-share memory exhausted" error more verbose.
  
! 2022-04-26  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/105364
! 	* lto-wrapper.cc (print_lto_docs_link): Use global_dc.
! 	(run_gcc): Parse OPT_fdiagnostics_urls_.
! 	(main): Initialize global_dc.
  
! 2022-04-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/105314
! 	* ifcvt.cc (noce_try_store_flag_mask): Don't require that the non-zero
! 	operand is equal to if_info->x, instead use the non-zero operand
! 	as one of the operands of AND with if_info->x as target.
  
! 2022-04-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/105374
! 	* tree-ssa-reassoc.cc (eliminate_redundant_comparison): Punt if
! 	!fold_convertible_p rather than assuming fold_convert must succeed.
  
! 2022-04-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/105367
! 	* config/i386/i386.cc (ix86_veclibabi_svml, ix86_veclibabi_acml): Pass
! 	el_mode == DFmode ? double_type_node : float_type_node instead of
! 	TREE_TYPE (type_in) as first arguments to mathfn_built_in.
  
! 2022-04-25  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/104308
! 	* gimple-fold.cc (gimple_fold_builtin_memory_op): Explicitly set
! 	the location of new_stmt in all places that don't already set it,
! 	whether explicitly, or via a call to gsi_replace.
  
! 2022-04-25  Paul A. Clarke  <pc@us.ibm.com>
  
! 	* doc/extend.texi (Other Builtins): Correct reference to 'modff'.
  
! 2022-04-25  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/105276
! 	* gimple-range.cc (gimple_ranger::prefill_stmt_dependencies): Include
! 	existing global range with calculated value.
  
! 2022-04-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105368
! 	* tree-ssa-math-opts.cc (powi_cost): Use absu_hwi.
  
! 2022-04-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/100810
! 	* tree-ssa-loop-ivopts.cc (struct iv_cand): Add involves_undefs flag.
! 	(find_ssa_undef): New function.
! 	(add_candidate_1): Avoid adding derived candidates with
! 	undefined SSA names and mark the original ones.
! 	(determine_group_iv_cost_generic): Reject rewriting
! 	uses with a different IV when that involves undefined SSA names.
  
! 2022-04-25  Steven G. Kargl  <kargl@gcc.gnu.org>
  
! 	PR target/89125
! 	* config/freebsd.h: Define TARGET_LIBC_HAS_FUNCTION to be
! 	bsd_libc_has_function.
! 	* targhooks.cc (bsd_libc_has_function): New function.
! 	Expand the supported math functions to inclue C99 libm.
! 	* targhooks.h (bsd_libc_has_function): New Prototype.
  
! 2022-04-25  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/105231
! 	* combine.cc (distribute_notes): Assert that a REG_EH_REGION
! 	with landing pad > 0 is from i3.  Put any REG_EH_REGION note
! 	on i3 or drop it if the insn can not trap.
! 	(try_combine): Ensure that we can merge REG_EH_REGION notes
! 	with non-call exceptions.  Ensure we are not splitting a
! 	trapping part of an insn with non-call exceptions when there
! 	is any REG_EH_REGION note to preserve.
  
! 2022-04-25  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	PR target/105339
! 	* config/i386/avx512fintrin.h (_mm512_scalef_round_pd):
! 	Add parentheses for parameters and djust format.
! 	(_mm512_mask_scalef_round_pd): Ditto.
! 	(_mm512_maskz_scalef_round_pd): Ditto.
! 	(_mm512_scalef_round_ps): Ditto.
! 	(_mm512_mask_scalef_round_ps): Ditto.
! 	(_mm512_maskz_scalef_round_ps): Ditto.
! 	(_mm_scalef_round_sd): Use _mm_undefined_pd.
! 	(_mm_scalef_round_ss): Use _mm_undefined_ps.
! 	(_mm_mask_scalef_round_sd): New macro.
! 	(_mm_mask_scalef_round_ss): Ditto.
! 	(_mm_maskz_scalef_round_sd): Ditto.
! 	(_mm_maskz_scalef_round_ss): Ditto.
  
! 2022-04-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/105338
! 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Handle
! 	op0 == cst1 ? op0 : op3 like op0 == cst1 ? cst1 : op3 for the non-cmov
! 	cases.
  
! 2022-04-22  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/105334
! 	* config/rs6000/rs6000.md (pack<mode> for FMOVE128): New expander.
! 	(pack<mode> for FMOVE128): Rename and split the insn_and_split to...
! 	(pack<mode>_hard for FMOVE128): ... this...
! 	(pack<mode>_soft for FMOVE128): ... and this.
  
! 2022-04-22  Paul A. Clarke  <pc@us.ibm.com>
  
! 	* doc/extend.texi: Correct "This" to "These".
  
! 2022-04-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/105333
! 	* rtlanal.cc (replace_rtx): Use simplify_subreg or
! 	simplify_unary_operation if CONST_SCALAR_INT_P rather than just
! 	CONST_INT_P.
  
! 2022-04-21  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/103197
! 	PR target/102146
! 	* config/rs6000/rs6000.md (zero_extendqi<mode>2 for EXTQI): Disparage
! 	the "Z" alternatives in {l,st}{f,xs}iwzx.
! 	(zero_extendhi<mode>2 for EXTHI): Ditto.
! 	(zero_extendsi<mode>2 for EXTSI): Ditto.
! 	(*movsi_internal1): Ditto.
! 	(*mov<mode>_internal1 for QHI): Ditto.
! 	(movsd_hardfloat): Ditto.
  
! 2022-04-21  Martin Liska  <mliska@suse.cz>
  
! 	* configure.ac: Enable compressed debug sections for mold
! 	linker.
  	* configure: Regenerate.
  
! 2022-04-21  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR debug/105203
! 	* emit-rtl.cc (emit_copy_of_insn_after): Don't call mark_jump_label
! 	on DEBUG_INSNs.
! 
! 2022-04-20  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/104912
! 	* tree-vect-loop-manip.cc (vect_loop_versioning): Split
! 	the cost model check to a separate BB to make sure it is
! 	checked first and not combined with other version checks.
! 
! 2022-04-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105312
! 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Query both
! 	VCOND and VCONDU for EQ and NE.
  
! 2022-04-20  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/103818
! 	* ipa-modref-tree.cc (modref_access_node::closer_pair_p): Use
! 	poly_offset_int to avoid overflow.
! 	(modref_access_node::update2): likewise.
  
! 2022-04-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/105306
! 	* cgraph.cc (cgraph_node::create): Set node->semantic_interposition
! 	to opt_for_fn (decl, flag_semantic_interposition).
! 	* cgraphclones.cc (cgraph_node::create_clone): Copy over
! 	semantic_interposition flag.
  
! 2022-04-19  Sergei Trofimovich  <siarheit@google.com>
  
! 	PR gcov-profile/105282
! 	* value-prof.cc (stream_out_histogram_value): Allow negative counts
! 	on HIST_TYPE_INDIR_CALL.
  
! 2022-04-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/105257
! 	* config/sparc/sparc.cc (epilogue_renumber): If ORIGINAL_REGNO,
! 	use gen_raw_REG instead of gen_rtx_REG and copy over also
! 	ORIGINAL_REGNO.  Use return 0; instead of /* fallthrough */.
  
! 2022-04-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104010
! 	PR tree-optimization/103941
! 	* tree-vect-slp.cc (vect_bb_slp_scalar_cost): When
! 	we run into stmts in patterns continue walking those
! 	for uses outside of the vectorized region instead of
! 	marking the lane live.
  
! 2022-04-18  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* doc/install.texi <CRIS>: Remove references to removed websites and
! 	adjust for cris-*-elf being the only remaining toolchain.
  
! 2022-04-18  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* doc/invoke.texi <CRIS>: Remove references to options for removed
! 	subtarget cris-axis-linux-gnu and tweak wording accordingly.
  
! 2022-04-16  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific): Adjust mingw-w64 download link.
  
! 2022-04-15  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	* config/i386/smmintrin.h: Correct target pragma from sse4.1
! 	and sse4.2 to crc32 for crc32 intrinsics.
  
! 2022-04-14  Indu Bhagat  <indu.bhagat@oracle.com>
  
! 	PR debug/105089
! 	* ctfc.cc (ctf_dvd_ignore_insert): New function.
! 	(ctf_dvd_ignore_lookup): Likewise.
! 	(ctf_add_variable): Keep track of non-defining decl DIEs.
! 	(new_ctf_container): Initialize the new hash-table.
! 	(ctfc_delete_container): Empty hash-table.
! 	* ctfc.h (struct ctf_container): Add new hash-table.
! 	(ctf_dvd_ignore_lookup): New declaration.
! 	(ctf_add_variable): Add additional argument.
! 	* ctfout.cc (ctf_dvd_preprocess_cb): Skip adding CTF variable
! 	record for non-defining decl for which a defining decl exists
! 	in the same TU.
! 	(ctf_preprocess): Defer updating the number of global objts
! 	until here.
! 	(output_ctf_header): Use ctfc_vars_list_count as some CTF
! 	variables may not make it to the final output.
! 	(output_ctf_vars): Likewise.
! 	* dwarf2ctf.cc (gen_ctf_variable): Skip generating CTF variable
! 	if this is known to be a non-defining decl DIE.
  
! 2022-04-14  Indu Bhagat  <indu.bhagat@oracle.com>
  
! 	* ctfc.h (struct ctf_container): Introduce a new member.
! 	* ctfout.cc (ctf_list_add_ctf_vars): Use it instead of static
  	variable.
  
! 2022-04-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105247
! 	* simplify-rtx.cc (simplify_const_binary_operation): For shifts
! 	or rotates by VOIDmode constant integer shift count use word_mode
! 	for the operand if int_mode is narrower than word.
! 
! 2022-04-14  Robin Dapp  <rdapp@linux.ibm.com>
! 
! 	* config/s390/s390.cc (s390_get_sched_attrmask): Add z16.
! 	(s390_get_unit_mask): Likewise.
! 	(s390_is_fpd): Likewise.
! 	(s390_is_fxd): Likewise.
! 	* config/s390/s390.h (s390_tune_attr): Set max tune level to z16.
! 	* config/s390/s390.md (z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15):
! 	Add z16.
! 	(z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16):
! 	Likewise.
! 	* config/s390/3931.md: New file.
! 
! 2022-04-13  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/105254
! 	* config/aarch64/aarch64.cc
! 	(aarch64_vector_costs::determine_suggested_unroll_factor): Take a
! 	loop_vec_info as argument.  Restrict the unroll factor to values
! 	that divide the VF.
! 	(aarch64_vector_costs::finish_cost): Update call accordingly.
! 
! 2022-04-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105263
! 	* tree-ssa-reassoc.cc (try_special_add_to_ops): Do not consume
! 	negates in multiplication chains with DFP.
! 
! 2022-04-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/105253
! 	* tree.cc (tree_builtin_call_types_compatible_p): If PROP_gimple,
! 	use useless_type_conversion_p checks instead of TYPE_MAIN_VARIANT
! 	comparisons or tree_nop_conversion_p checks.
! 
! 2022-04-13  Hongyu Wang  <hongyu.wang@intel.com>
! 
! 	PR target/103069
! 	* config/i386/i386-expand.cc (ix86_expand_cmpxchg_loop):
! 	  Add missing set to target_val at pause label.
! 
! 2022-04-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105234
! 	* attribs.cc (decl_attributes): Don't set
! 	DECL_FUNCTION_SPECIFIC_TARGET if target_option_default_node is
! 	NULL.
! 
! 2022-04-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105250
! 	* fold-const.cc (fold_convertible_p): Revert
! 	r12-7979-geaaf77dd85c333, instead check for size equality
! 	of the vector types involved.
! 
! 2022-04-13  Richard Biener  <rguenther@suse.de>
! 
! 	Revert:
! 	2022-04-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/104912
! 	* tree-vect-loop-manip.cc (vect_loop_versioning): Split
! 	the cost model check to a separate BB to make sure it is
! 	checked first and not combined with other version checks.
! 
! 2022-04-13  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/104912
! 	* tree-vect-loop-manip.cc (vect_loop_versioning): Split
! 	the cost model check to a separate BB to make sure it is
! 	checked first and not combined with other version checks.
! 
! 2022-04-13  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* tree-scalar-evolution.cc (expression_expensive_p): Fix a comment typo.
! 
! 2022-04-12  Antoni Boucher  <bouanto@zoho.com>
! 
! 	PR jit/104072
! 	* reginfo.cc: New functions (clear_global_regs_cache,
! 	reginfo_cc_finalize) to avoid an issue where compiling the same
! 	code multiple times gives an error about assigning the same
! 	register to 2 global variables.
! 	* rtl.h: New function (reginfo_cc_finalize).
! 	* toplev.cc: Call it.
! 
! 2022-04-12  Antoni Boucher  <bouanto@zoho.com>
! 
! 	PR jit/104071
! 	* toplev.cc: Call the new function tree_cc_finalize in
! 	toplev::finalize.
! 	* tree.cc: New functions (clear_nonstandard_integer_type_cache
! 	and tree_cc_finalize) to clear the cache of non-standard integer
! 	types to avoid having issues with some optimizations of
! 	bitcast where the SSA_NAME will have a size of a cached
! 	integer type that should have been invalidated, causing a
! 	comparison of integer constant to fail.
! 	* tree.h: New function (tree_cc_finalize).
! 
! 2022-04-12  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	PR target/97348
! 	* config/nvptx/nvptx.h (ASM_SPEC): Don't set.
! 	* config/nvptx/nvptx.opt (misa): Adjust comment.
! 
! 2022-04-12  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Revert:
! 	2022-03-03  Tom de Vries  <tdevries@suse.de>
! 
! 	* config/nvptx/nvptx.h (ASM_SPEC): Add %{misa=sm_30:--no-verify}.
! 
! 2022-04-12  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	Revert:
! 	2022-03-31  Tom de Vries  <tdevries@suse.de>
! 
! 	* config/nvptx/nvptx.h (ASM_SPEC): Use "-m sm_35" for -misa=sm_30.
! 
! 2022-04-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR ipa/104303
! 	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do not
! 	include local escaped memory as obviously necessary stores.
! 
! 2022-04-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105235
! 	* tree-ssa-math-opts.cc (execute_cse_conv_1): Clean EH and
! 	return whether the CFG changed.
! 	(execute_cse_sincos_1): Adjust.
! 
! 2022-04-12  Przemyslaw Wirkus  <Przemyslaw.Wirkus@arm.com>
! 
! 	PR target/104144
! 	* config/arm/t-aprofile (MULTI_ARCH_OPTS_A): Remove Armv9-a options.
! 	(MULTI_ARCH_DIRS_A): Remove Armv9-a diretories.
! 	(MULTILIB_REQUIRED): Don't require Armv9-a libraries.
! 	(MULTILIB_MATCHES): Treat Armv9-a as equivalent to Armv8-a.
! 	(MULTILIB_REUSE): Remove remap rules for Armv9-a.
! 	* config/arm/t-multilib (v9_a_nosimd_variants): Delete.
! 	(MULTILIB_MATCHES): Remove mappings for v9_a_nosimd_variants.
! 
! 2022-04-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105232
! 	* tree.cc (component_ref_size): Bail out for too large
! 	or non-constant sizes.
! 
! 2022-04-12  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105226
! 	* tree-vect-loop-manip.cc (vect_loop_versioning): Verify
! 	we can split the exit of an outer loop we choose to version.
! 
! 2022-04-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* config/i386/i386-expand.cc (ix86_emit_i387_sinh, ix86_emit_i387_cosh,
! 	ix86_emit_i387_tanh, ix86_emit_i387_asinh, ix86_emit_i387_acosh,
! 	ix86_emit_i387_atanh, ix86_emit_i387_log1p, ix86_emit_i387_round,
! 	ix86_emit_swdivsf, ix86_emit_swsqrtsf,
! 	ix86_expand_atomic_fetch_op_loop, ix86_expand_cmpxchg_loop):
! 	Formatting fix.
! 	* config/i386/i386.cc (warn_once_call_ms2sysv_xlogues): Likewise.
! 
! 2022-04-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105214
! 	* config/i386/i386-expand.cc (ix86_emit_i387_log1p): Call
! 	do_pending_stack_adjust.
! 
! 2022-04-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/105211
! 	* builtins.cc (expand_builtin_int_roundingfn_2): If mathfn_built_in_1
! 	fails for TREE_TYPE (arg), retry it with
! 	TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (fndecl))) and if even that
! 	fails, emit call normally.
! 
! 2022-04-12  Andreas Krebbel  <krebbel@linux.ibm.com>
! 
! 	* common/config/s390/s390-common.cc: Rename PF_ARCH14 to PF_Z16.
! 	* config.gcc: Add z16 as march/mtune switch.
! 	* config/s390/driver-native.cc (s390_host_detect_local_cpu):
! 	Recognize z16 with -march=native.
! 	* config/s390/s390-opts.h (enum processor_type): Rename
! 	PROCESSOR_ARCH14 to PROCESSOR_3931_Z16.
! 	* config/s390/s390.cc (PROCESSOR_ARCH14): Rename to ...
! 	(PROCESSOR_3931_Z16): ... throughout the file.
! 	(s390_processor processor_table): Add z16 as cpu string.
! 	* config/s390/s390.h (enum processor_flags): Rename PF_ARCH14 to
! 	PF_Z16.
! 	(TARGET_CPU_ARCH14): Rename to ...
! 	(TARGET_CPU_Z16): ... this.
! 	(TARGET_CPU_ARCH14_P): Rename to ...
! 	(TARGET_CPU_Z16_P): ... this.
! 	(TARGET_ARCH14): Rename to ...
! 	(TARGET_Z16): ... this.
! 	(TARGET_ARCH14_P): Rename to ...
! 	(TARGET_Z16_P): ... this.
! 	* config/s390/s390.md (cpu_facility): Rename arch14 to z16 and
! 	check TARGET_Z16 instead of TARGET_ARCH14.
! 	* config/s390/s390.opt: Add z16 to processor_type.
! 	* doc/invoke.texi: Document z16 and arch14.
! 
! 2022-04-12  chenglulu  <chenglulu@loongson.cn>
! 
! 	* config/loongarch/loongarch.cc: Fix bug for
! 	tmpdir-g++.dg-struct-layout-1/t033.
! 
! 2022-04-11  Peter Bergner  <bergner@linux.ibm.com>
! 
! 	PR target/104894
! 	* config/rs6000/rs6000.cc (rs6000_sibcall_aix): Handle pcrel sibcalls
! 	to longcall functions.
! 
! 2022-04-11  Jason Merrill  <jason@redhat.com>
! 
! 	* ipa-free-lang-data.cc (free_lang_data_in_decl): Fix typos.
! 
! 2022-04-11  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/105213
! 	PR target/103623
! 	* config/rs6000/rs6000.md (unpack<mode>_nodm): Add m,r,i alternative.
! 
! 2022-04-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/105218
! 	* tree-ssa-phiopt.cc (value_replacement): If middle_bb has
! 	more than one predecessor or phi's bb more than 2 predecessors,
! 	reset phi result uses instead of adding a debug temp.
! 
! 2022-04-11  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	PR target/104853
! 	* config.gcc: Pass -misa-spec to arch-canonicalize and
! 	multilib-generator.
! 	* config/riscv/arch-canonicalize: Adding -misa-spec option.
! 	(SUPPORTED_ISA_SPEC): New.
! 	(arch_canonicalize): New argument `isa_spec`.
! 	Handle multiple ISA spec versions.
! 	* config/riscv/multilib-generator: Adding -misa-spec option.
! 
! 2022-04-11  Kito Cheng  <kito.cheng@sifive.com>
! 
! 	* config/riscv/arch-canonicalize: Add TODO item.
! 	(IMPLIED_EXT): Sync.
! 	(arch_canonicalize): Checking until no change.
! 
! 2022-04-11  Tamar Christina  <tamar.christina@arm.com>
! 
! 	PR target/105197
! 	* tree-vect-stmts.cc (vectorizable_condition): Prevent cond swap when
! 	not masked.
! 
! 2022-04-11  Jason Merrill  <jason@redhat.com>
! 
! 	PR c++/100370
! 	* pointer-query.cc (compute_objsize_r) [POINTER_PLUS_EXPR]: Require
! 	deref == -1.
! 
! 2022-04-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/104639
! 	* tree-ssa-phiopt.cc: Include tree-ssa-propagate.h.
! 	(value_replacement): Optimize (x != cst1 ? x : cst2) != cst3
! 	into x != cst3.
! 
! 2022-04-11  Jeff Law  <jeffreyalaw@gmail.com>
! 
! 	* config/bfin/bfin.md (rol_one): Fix pattern to indicate the
! 	sign bit of the source ends up in CC.
! 
! 2022-04-09  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR ipa/103376
! 	* cgraphunit.cc (cgraph_node::analyze): update semantic_interposition
! 	flag.
! 
! 2022-04-09  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* ipa-modref.cc (ipa_merge_modref_summary_after_inlining): Propagate
! 	nondeterministic and side_effects flags.
! 
! 2022-04-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	PR target/105157
! 	* config.gcc: Shift ext_mask by TARGET_CPU_NBITS.
! 	* config/aarch64/aarch64.h (TARGET_CPU_NBITS): New macro.
! 	(TARGET_CPU_MASK): Likewise.
! 	(TARGET_CPU_DEFAULT): Use TARGET_CPU_NBITS.
! 	* config/aarch64/aarch64.cc (aarch64_get_tune_cpu): Use TARGET_CPU_MASK.
! 	(aarch64_get_arch): Likewise.
! 	(aarch64_override_options): Use TARGET_CPU_NBITS.
! 
! 2022-04-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105198
! 	* tree-predcom.cc (find_looparound_phi): Check whether
! 	the found memory location of the entry value is clobbered
! 	inbetween the value we want to use and loop entry.
! 
! 2022-04-08  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/105189
! 	* fold-const.cc (make_range_step): Fix up handling of
! 	(unsigned) x +[low, -] ranges for signed x if low fits into
! 	typeof (x).
! 
! 2022-04-08  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105175
! 	* tree-vect-stmts.cc (vectorizable_operation): Suppress
! 	-Wvector-operation-performance if using emulated vectors.
! 	* tree-vect-generic.cc (expand_vector_piecewise): Do not diagnose
! 	-Wvector-operation-performance when suppressed.
! 	(expand_vector_parallel): Likewise.
! 	(expand_vector_comparison): Likewise.
! 	(expand_vector_condition): Likewise.
! 	(lower_vec_perm): Likewise.
! 	(expand_vector_conversion): Likewise.
! 
! 2022-04-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	PR target/104409
! 	* config/aarch64/aarch64-builtins.cc (handle_arm_acle_h): New.
! 	(aarch64_general_init_builtins): Move LS64 code.
! 	* config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): Support
! 	arm_acle.h
! 	* config/aarch64/aarch64-protos.h (handle_arm_acle_h): New.
! 	* config/aarch64/arm_acle.h: Add pragma GCC aarch64 "arm_acle.h".
! 
! 2022-04-07  Richard Biener  <rguenther@suse.de>
! 	    Jan Hubicka  <hubicka@ucw.cz>
! 
! 	PR ipa/104303
! 	* tree-ssa-alias.h (ptr_deref_may_alias_global_p,
! 	ref_may_alias_global_p, ref_may_alias_global_p,
! 	stmt_may_clobber_global_p, pt_solution_includes_global): Add
! 	bool parameters indicating whether escaped locals should be
! 	considered global.
! 	* tree-ssa-structalias.cc (pt_solution_includes_global):
! 	When the new escaped_nonlocal_p flag is true also consider
! 	pt->vars_contains_escaped.
! 	* tree-ssa-alias.cc (ptr_deref_may_alias_global_p):
! 	Pass down new escaped_nonlocal_p flag.
! 	(ref_may_alias_global_p): Likewise.
! 	(stmt_may_clobber_global_p): Likewise.
! 	(ref_may_alias_global_p_1): Likewise.  For decls also
! 	query the escaped solution if true.
! 	(ref_may_access_global_memory_p): Remove.
! 	(modref_may_conflict): Use ref_may_alias_global_p with
! 	escaped locals considered global.
! 	(ref_maybe_used_by_stmt_p): Adjust.
! 	* ipa-fnsummary.cc (points_to_local_or_readonly_memory_p):
! 	Likewise.
! 	* tree-ssa-dse.cc (dse_classify_store): Likewise.
! 	* trans-mem.cc (thread_private_new_memory): Likewise, but
! 	consider escaped locals global.
! 	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Likewise.
! 
! 2022-04-07  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105185
! 	* tree-ssa-sccvn.cc (visit_reference_op_call): Simplify
! 	modref query again.
! 
! 2022-04-07  Tamar Christina  <tamar.christina@arm.com>
! 
! 	PR target/104049
! 	* config/aarch64/aarch64-simd.md
! 	(aarch64_reduc_plus_internal<mode>): Fix RTL and rename to...
! 	(reduc_plus_scal_<mode>): ... This.
! 	(reduc_plus_scal_v4sf): Moved.
! 	(aarch64_reduc_plus_internalv2si): Fix RTL and rename to...
! 	(reduc_plus_scal_v2si): ... This.
! 
! 2022-04-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/102586
! 	* langhooks.h (struct lang_hooks_for_types): Add classtype_as_base
! 	langhook.
! 	* langhooks-def.h (LANG_HOOKS_CLASSTYPE_AS_BASE): Define.
! 	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
! 	* gimple-fold.cc (clear_padding_type): Use ftype instead of
! 	TREE_TYPE (field) some more.  For artificial FIELD_DECLs without
! 	name try the lang_hooks.types.classtype_as_base langhook and
! 	if it returns non-NULL, use that instead of ftype for recursive call.
! 
! 2022-04-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/105150
! 	* tree.cc (tree_builtin_call_types_compatible_p): New function.
! 	(get_call_combined_fn): Use it.
! 
! 2022-04-07  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/105165
! 	* tree-complex.cc (expand_complex_asm): Sorry for asm goto
! 	_Complex outputs.
! 
! 2022-04-07  liuhongt  <hongtao.liu@intel.com>
! 
! 	* config/i386/sse.md (<sse2_avx2>_andnot<mode>3_mask):
! 	Removed.
! 	(<sse>_andnot<mode>3<mask_name>): Disable V*HFmode patterns
! 	for mask_applied.
! 	(<code><mode>3<mask_name>): Ditto.
! 	(*<code><mode>3<mask_name>): Ditto.
! 	(VFB_128_256): Adjust condition of V8HF/V16HFmode according to
! 	real instruction.
! 	(VFB_512): Ditto.
! 	(VFB): Ditto.
! 
! 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR rtl-optimization/104985
! 	* combine.cc (struct undo): Add where.regno member.
! 	(do_SUBST_MODE): Rename to ...
! 	(subst_mode): ... this.  Change first argument from rtx * into int,
! 	operate on regno_reg_rtx[regno] and save regno into where.regno.
! 	(SUBST_MODE): Remove.
! 	(try_combine): Use subst_mode instead of SUBST_MODE, change first
! 	argument from regno_reg_rtx[whatever] to whatever.  For UNDO_MODE, use
! 	regno_reg_rtx[undo->where.regno] instead of *undo->where.r.
! 	(undo_to_marker): For UNDO_MODE, use regno_reg_rtx[undo->where.regno]
! 	instead of *undo->where.r.
! 	(simplify_set): Use subst_mode instead of SUBST_MODE, change first
! 	argument from regno_reg_rtx[whatever] to whatever.
! 
! 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105069
! 	* config/sh/sh.opt (mdiv=): Add Save.
! 
! 2022-04-06  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/105096
! 	* common.opt: Document properly based on what it does.
! 	* gcc.cc (display_help): Unify with what we have in common.opt.
! 	* opts.cc (common_handle_option): Do not print undocumented
! 	options.
  
! 2022-04-06  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	* config/mips/mips.cc (mips_fpr_return_fields): Ignore
! 	cxx17_empty_base_field_p fields and set an indicator.
! 	(mips_return_in_msb): Adjust for mips_fpr_return_fields change.
! 	(mips_function_value_1): Inform psABI change about C++17 empty
! 	bases.
  
! 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/105150
! 	* gimple.cc (gimple_builtin_call_types_compatible_p): Use
! 	builtin_decl_explicit here...
! 	(gimple_call_builtin_p, gimple_call_combined_fn): ... rather than
  	here.
  
! 2022-04-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105173
! 	* tree-ssa-reassoc.cc (find_insert_point): Get extra
! 	insert_before output argument and compute it.
! 	(insert_stmt_before_use): Adjust.
! 	(rewrite_expr_tree): Likewise.
! 
! 2022-04-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR ipa/105166
! 	* ipa-modref-tree.cc (modref_access_node::get_ao_ref ): Bail
! 	out for non-pointer arguments.
! 
! 2022-04-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105163
! 	* tree-ssa-reassoc.cc (repropagate_negates): Avoid propagating
! 	negated abnormals.
! 
! 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/105150
! 	* gimple.cc (gimple_call_builtin_p, gimple_call_combined_fn):
! 	For BUILT_IN_NORMAL calls, call gimple_builtin_call_types_compatible_p
! 	preferrably on builtin_decl_explicit decl rather than fndecl.
! 	* tree-ssa-strlen.cc (valid_builtin_call): Don't call
! 	gimple_builtin_call_types_compatible_p here.
! 
! 2022-04-06  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR tree-optimization/103761
! 	* tree-vect-stmts.cc (check_load_store_for_partial_vectors): Replace
! 	the ncopies parameter with an slp_node parameter.  Calculate the
! 	number of vectors based on it and vectype.  Rename lambda to
! 	group_memory_nvectors.
! 	(vectorizable_store, vectorizable_load): Update calls accordingly.
! 
! 2022-04-06  Martin Liska  <mliska@suse.cz>
! 
! 	* doc/invoke.texi: Document it.
! 
! 2022-04-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105148
! 	* tree-ssa-loop-ivopts.cc (idx_record_use): Walk raw operands
! 	2 and 3 of ARRAY_REFs.
! 
! 2022-04-06  Roger Sayle  <roger@nextmovesoftware.com>
! 
! 	* config/i386/sse.md (ANDNOT_MODE): New mode iterator for TF and V1TI.
! 	(*andnottf3): Replace with...
! 	(*andnot<mode>3): New define_insn using ANDNOT_MODE.
! 
! 2022-04-06  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105142
! 	* gimple-fold.h (maybe_fold_and_comparisons): Add defaulted
! 	basic-block parameter.
! 	(maybe_fold_or_comparisons): Likewise.
! 	* gimple-fold.cc (follow_outer_ssa_edges): New.
! 	(maybe_fold_comparisons_from_match_pd): Use follow_outer_ssa_edges
! 	when an outer condition basic-block is specified.
! 	(and_comparisons_1, and_var_with_comparison,
! 	and_var_with_comparison_1, or_comparisons_1,
! 	or_var_with_comparison, or_var_with_comparison_1): Receive and pass
! 	down the outer condition basic-block.
! 	* tree-ssa-ifcombine.cc (ifcombine_ifandif): Pass down the
! 	basic-block of the outer condition.
! 
! 2022-04-06  Kewen Lin  <linkw@linux.ibm.com>
! 
! 	PR target/105002
! 	* config/rs6000/rs6000.cc (rs6000_maybe_emit_maxc_minc): Support more
! 	comparison codes UNLT/UNLE/UNGT/UNGE.
! 
! 2022-04-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* doc/extend.texi (Common Function Attributes): Document that
! 	'access' does not imply 'nonnull'.
! 
! 2022-04-05  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/105139
! 	* config/i386/mmx.md (*movv2qi_internal):
! 	Change insn mode of alternative 5 to HF for TARGET_AVX512FP16.
! 
! 2022-04-05  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* config/aarch64/aarch64.md (aarch64_cpymemdi): Turn into a
! 	define_expand and turn operands 0 and 1 from REGs to MEMs.
! 	(*aarch64_cpymemdi): New pattern.
! 	(aarch64_setmemdi): Turn into a define_expand and turn operand 0
! 	from a REG to a MEM.
! 	(*aarch64_setmemdi): New pattern.
! 	* config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Use
! 	copy_to_mode_reg on all three registers.  Replace the original
! 	MEM addresses rather than creating wild reads and writes.
! 	(aarch64_expand_setmem_mops): Likewise for the size and for the
! 	destination memory and address.
! 
! 2022-04-05  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/103147
! 	* config/aarch64/aarch64-protos.h (aarch64_simd_switcher): New class.
! 	* config/aarch64/aarch64-sve-builtins.h (sve_switcher): Inherit
! 	from aarch64_simd_switcher.
! 	* config/aarch64/aarch64-builtins.cc (aarch64_simd_tuple_modes):
! 	New variable.
! 	(aarch64_lookup_simd_builtin_type): Use it instead of TYPE_MODE.
! 	(register_tuple_type): Add more asserts.  Expect the alignment
! 	of the structure to be subject to flag_pack_struct and
! 	maximum_field_alignment.  Set aarch64_simd_tuple_modes.
! 	(aarch64_simd_switcher::aarch64_simd_switcher): New function.
! 	(aarch64_simd_switcher::~aarch64_simd_switcher): Likewise.
! 	(handle_arm_neon_h): Hold an aarch64_simd_switcher throughout.
! 	(aarch64_general_init_builtins): Hold an aarch64_simd_switcher
! 	while calling aarch64_init_simd_builtins.
! 	* config/aarch64/aarch64-sve-builtins.cc (sve_switcher::sve_switcher)
! 	(sve_switcher::~sve_switcher): Remove code now performed by
! 	aarch64_simd_switcher.
! 
! 2022-04-05  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	PR target/104897
! 	* config/aarch64/aarch64-sve-builtins.cc
! 	(function_resolver::infer_vector_or_tuple_type): Use error_n
! 	for "%d vectors" messages.
! 
! 2022-04-05  Chung-Lin Tang  <cltang@codesourcery.com>
! 
! 	* omp-low.cc (lower_omp_target): Use outer context looked-up 'var' as
! 	argument to lang_hooks.decls.omp_array_data, instead of 'ovar' from
! 	current clause.
! 
! 2022-04-05  Richard Biener  <rguenther@suse.de>
! 
! 	PR c/105151
! 	* passes.def (pass_walloca): Move early instance into
! 	pass_build_ssa_passes to make SSA form available.
! 
! 2022-04-05  liuhongt  <hongtao.liu@intel.com>
! 
! 	PR target/101908
! 	* config/i386/i386.cc (ix86_split_stlf_stall_load): New
! 	function
! 	(ix86_reorg): Call ix86_split_stlf_stall_load.
! 	* config/i386/i386.opt (-param=x86-stlf-window-ninsns=): New
! 	param.
! 
! 2022-04-05  Alexandre Oliva  <oliva@adacore.com>
! 
! 	* targhooks.cc (default_zero_call_used_regs): Attempt to group
! 	regs that the target refuses to use in their natural modes.
! 	(zcur_select_mode_rtx): New.
! 	* regs.h (struct target_regs): Add x_hard_regno_max_nregs.
! 	(hard_regno_max_nregs): Define.
! 	* reginfo.cc (init_reg_modes_target): Set hard_regno_max_nregs.
! 
! 2022-04-04  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* doc/match-and-simplify.texi: Fix typos.
! 
! 2022-04-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105144
! 	* config/aarch64/t-aarch64 (s-aarch64-tune-md): Do move-if-change
! 	only if configured with --enable-maintainer-mode, otherwise compare
! 	tmp-aarch64-tune.md with $(srcdir)/config/aarch64/aarch64-tune.md and
! 	if they differ, emit a message and fail.
! 
! 2022-04-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105144
! 	* config/aarch64/t-aarch64 (s-mddeps): Depend on s-aarch64-tune-md.
! 	* config/aarch64/aarch64-tune.md: Regenerated.
! 
! 2022-04-04  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/105132
! 	* tree-vect-stmts.cc (vectorizable_operation): Check that
! 	the input vectors have the same number of elements.
! 
! 2022-04-04  Richard Biener  <rguenther@suse.de>
! 
! 	PR middle-end/105140
! 	* fold-const.cc (fold_convertible_p): Allow a TYPE_P arg.
! 
! 2022-04-03  Jeff Law  <jeffreyalaw@gmail.com>
! 
! 	PR target/104987
! 	* config/iq2000/iq2000.md (bbi): New attribute,  default to no.
! 	(delay slot descripts): Use different delay slot description when
! 	the insn as the "bbi" attribute.
! 	(bbi, bbin patterns): Set the bbi attribute to yes.
! 
! 2022-04-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR target/105123
! 	* config/i386/i386-expand.cc (ix86_expand_vector_init_general): Avoid
! 	using word as target for expand_simple_binop when doing ASHIFT and
! 	IOR.
! 
! 2022-04-02  Xi Ruoyao  <xry111@mengyan1223.wang>
! 
! 	* config/mips/mips.cc (mips_function_arg): Check if DECL_SIZE is
! 	NULL before dereferencing it.
! 
! 2022-04-01  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* config/i386/i386.cc (zero_all_st_registers): Return the value of
! 	num_of_st.
! 	(ix86_zero_call_used_regs): Update zeroed_hardregs set according to
! 	the return value of zero_all_st_registers.
! 	* doc/tm.texi: Update the documentation of TARGET_ZERO_CALL_USED_REGS.
! 	* function.cc (gen_call_used_regs_seq): Add an assertion.
! 	* target.def: Update the documentation of TARGET_ZERO_CALL_USED_REGS.
! 
! 2022-04-01  Xi Ruoyao  <xry111@mengyan1223.wang>
! 
! 	PR target/102024
! 	* config/mips/mips.cc (mips_function_arg): Ignore zero-width
! 	fields, and inform if it causes a psABI change.
! 
! 2022-04-01  Xi Ruoyao  <xry111@mengyan1223.wang>
! 
! 	PR target/102024
! 	* config/mips/mips.cc (mips_fpr_return_fields): Detect C++
! 	zero-width bit-fields and set up an indicator.
! 	(mips_return_in_msb): Adapt for mips_fpr_return_fields change.
! 	(mips_function_value_1): Diagnose when the presense of a C++
! 	zero-width bit-field changes function returning in GCC 12.
! 
! 2022-04-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/104645
! 	* tree-ssa-phiopt.cc (value_replacement): If assign has
! 	CONVERT_EXPR_CODE_P rhs_code, treat it like a preparation
! 	statement with constant evaluation.
! 
! 2022-04-01  YunQiang Su  <yunqiang.su@cipunited.com>
! 
! 	* config/mips/mips.cc (mips_expand_prologue):
! 	  IPL is 8bit for MCU ASE.
! 
! 2022-03-31  Bill Schmidt  <wschmidt@linux.ibm.com>
! 
! 	PR target/104004
! 	* config/rs6000/rs6000-builtins.def (MFFSL): Mark nosoft.
! 	(MTFSB0): Likewise.
! 	(MTFSB1): Likewise.
! 	(SET_FPSCR_RN): Likewise.
! 	(SET_FPSCR_DRN): Mark nosoft and no32bit.
! 
! 2022-03-31  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* doc/options.texi (Option file format): Clarifications around
! 	option definition records' help texts.
! 
! 2022-03-31  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* optc-gen.awk <END>: Fix "Multiple different help strings" error
! 	diagnostic.
! 
! 2022-03-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
! 
! 	* config/aarch64/aarch64.cc (aarch64_vector_costs): Define
! 	determine_suggested_unroll_factor and m_has_avg.
! 	(determine_suggested_unroll_factor): New function.
! 	(aarch64_vector_costs::add_stmt_cost): Check for a qualifying pattern
! 	to set m_nosve_pattern.
! 	(aarch64_vector_costs::finish_costs): Use
! 	determine_suggested_unroll_factor.
! 	* config/aarch64/aarch64.opt (aarch64-vect-unroll-limit): New.
! 	* doc/invoke.texi: (aarch64-vect-unroll-limit): Document new option.
! 
! 2022-03-31  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/103083
! 	* ipa-prop.h (ipa_ancestor_jf_data): New flag keep_null;
! 	(ipa_get_jf_ancestor_keep_null): New function.
! 	* ipa-prop.cc (ipa_set_ancestor_jf): Initialize keep_null field of the
! 	ancestor function.
! 	(compute_complex_assign_jump_func): Pass false to keep_null
! 	parameter of ipa_set_ancestor_jf.
! 	(compute_complex_ancestor_jump_func): Pass true to keep_null
! 	parameter of ipa_set_ancestor_jf.
! 	(update_jump_functions_after_inlining): Carry over keep_null from the
! 	original ancestor jump-function or merge them.
! 	(ipa_write_jump_function): Stream keep_null flag.
! 	(ipa_read_jump_function): Likewise.
! 	(ipa_print_node_jump_functions_for_edge): Print the new flag.
! 	* ipa-cp.cc (class ipcp_bits_lattice): Make various getters const.  New
! 	member function known_nonzero_p.
! 	(ipcp_bits_lattice::known_nonzero_p): New.
! 	(ipcp_bits_lattice::meet_with_1): New parameter drop_all_ones,
! 	observe it.
! 	(ipcp_bits_lattice::meet_with): Likewise.
! 	(propagate_bits_across_jump_function): Simplify.  Pass true in
! 	drop_all_ones when it is necessary.
! 	(propagate_aggs_across_jump_function): Take care of keep_null
! 	flag.
! 	(ipa_get_jf_ancestor_result): Propagate NULL accross keep_null
! 	jump functions.
  
! 2022-03-31  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/102513
! 	* ipa-cp.cc (decide_whether_version_node): Skip scalar values
! 	which do not fit the known value_range.
  
! 2022-03-31  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/103171
! 	* ipa-prop.cc (propagate_controlled_uses): Add a LOAD reference
! 	always when an ADDR_EXPR constant is known to reach a load because
! 	of inlining, not just when removing an ADDR reference.
  
! 2022-03-31  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105109
! 	* tree-ssa.cc (execute_update_addresses_taken): Suppress
! 	diagnostics on the load of the other complex component.
  
! 2022-03-31  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.h (ASM_SPEC): Use "-m sm_35" for -misa=sm_30.
  
! 2022-03-31  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/105091
! 	* gimple-expr.cc (mark_addressable): Handle TARGET_MEM_REF
! 	bases.
  
! 2022-03-31  Richard Biener  <rguenther@suse.de>
  
  	Revert:
! 	2021-09-13  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/102125
! 	* gimple-fold.c (gimple_fold_builtin_memory_op): Allow folding
! 	memcpy if the size is not more than MOVE_MAX * MOVE_RATIO.
! 
! 2022-03-31  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* gcov-io.cc (gcov_read_string): Reword documentation comment.
! 
! 2022-03-30  Bill Schmidt  <wschmidt@linux.ibm.com>
! 
! 	* config/rs6000/rs6000-builtins.def (NEG_V16QI): Move to [altivec]
! 	stanza.
! 	(NEG_V4SF): Likewise.
! 	(NEG_V4SI): Likewise.
! 	(NEG_V8HI): Likewise.
! 	(NEG_V2DF): Move to [vsx] stanza.
! 	(NEG_V2DI): Likewise.
! 
! 2022-03-30  Vladimir N. Makarov  <vmakarov@redhat.com>
! 
! 	PR middle-end/105032
! 	* lra-assigns.cc (find_reload_regno_insns): Modify loop condition.
! 
! 2022-03-30  Tom de Vries  <tdevries@suse.de>
! 	    Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* doc/invoke.texi (march): Document __PTX_SM__.
! 	 (mptx): Document __PTX_ISA_VERSION_MAJOR__ and
! 	 __PTX_ISA_VERSION_MINOR__.
! 
! 2022-03-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/105093
! 	* ubsan.cc (instrument_object_size): If t is equal to inner and
! 	is a decl other than global var, punt.  When emitting call to
! 	UBSAN_OBJECT_SIZE ifn, make sure base is addressable.
! 
! 2022-03-30  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/105094
! 	* gimple-ssa-store-merging.cc (mem_valid_for_store_merging): Punt if
! 	bitsize <= 0 rather than just == 0.
! 
! 2022-03-30  Tom de Vries  <tdevries@suse.de>
! 
! 	* doc/invoke.texi (misa, mptx): Update.
! 	(march, march-map): Add.
! 
! 2022-03-30  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	* opt-functions.awk (n_args): New function.
! 	(lang_enabled_by): Merge function into...
! 	* optc-gen.awk <END>: ... sole user here.
! 	Improve diagnostics.
! 
! 2022-03-29  Marek Polacek  <polacek@redhat.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/103597
! 	* gimplify.cc (collect_fallthrough_labels): Don't push UNUSED_LABEL_Ps
! 	into labels.  Maybe set prev to the statement preceding UNUSED_LABEL_P.
! 	(gimplify_cond_expr): Set UNUSED_LABEL_P.
! 	* tree.h (UNUSED_LABEL_P): New.
! 
! 2022-03-29   Michael Meissner  <meissner@linux.ibm.com>
! 
! 	* config/rs6000/vsx.md (vsx_extract_<mode>): Allow destination to
! 	be any VSX register.
! 
! 2022-03-29  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/102024
! 	* config/aarch64/aarch64.cc (aapcs_vfp_sub_candidate): Handle
! 	zero-sized bit-fields.  Detect cases where a warning may be needed.
! 	(aarch64_vfp_is_call_or_return_candidate): Emit a note if a
! 	zero-sized bit-field has caused parameter passing to change.
! 
! 2022-03-29  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/102024
! 	* config/arm/arm.cc (aapcs_vfp_sub_candidate): Handle zero-sized
! 	bit-fields.  Detect cases where a warning may be needed.
! 	(aapcs_vfp_is_call_or_return_candidate): Emit a note if
! 	a zero-sized bit-field has caused parameter passing to change.
! 
! 2022-03-29  Richard Earnshaw  <rearnsha@arm.com>
! 
! 	PR target/96882
! 	* config/arm/arm.cc (arm_get_pcs_model): Disable selection of
! 	ARM_PCS_AAPCS_LOCAL.
! 
! 2022-03-29  Tom de Vries  <tdevries@suse.de>
! 
! 	PR target/104857
! 	* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Emit
! 	__PTX_ISA_VERSION_MAJOR__ and __PTX_ISA_VERSION_MINOR__.
! 	* config/nvptx/nvptx.cc (ptx_version_to_number): New function.
! 	* config/nvptx/nvptx-protos.h (ptx_version_to_number): Declare.
! 
! 2022-03-29  Tom de Vries  <tdevries@suse.de>
! 
! 	* config/nvptx/nvptx.opt (m64): Update help text to reflect that it
! 	is ignored.
! 
! 2022-03-29  Tom de Vries  <tdevries@suse.de>
! 
! 	PR target/104714
! 	* config/nvptx/nvptx.opt (march-map=*): Add aliases.
! 
! 2022-03-29  Jan Hubicka  <hubicka@ucw.cz>
! 
! 	* config/i386/i386-builtins.cc (ix86_vectorize_builtin_gather): Test
! 	TARGET_USE_GATHER_2PARTS and TARGET_USE_GATHER_4PARTS.
! 	* config/i386/i386.h (TARGET_USE_GATHER_2PARTS): New macro.
! 	(TARGET_USE_GATHER_4PARTS): New macro.
! 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): New tune
! 	(X86_TUNE_USE_GATHER_4PARTS): New tune
! 
! 2022-03-29  Tom de Vries  <tdevries@suse.de>
! 
! 	* config/nvptx/nvptx.opt (march): Add alias of misa.
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* doc/install.texi: Add LoongArch options section.
! 	* doc/invoke.texi: Add LoongArch options section.
! 	* doc/md.texi: Add LoongArch options section.
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/loongarch/loongarch-c.cc
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/loongarch/larchintrin.h: New file.
! 	* config/loongarch/loongarch-builtins.cc: New file.
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/host-linux.cc: Add LoongArch support.
! 	* config/loongarch/loongarch-protos.h: New file.
! 	* config/loongarch/loongarch-tune.h: Likewise.
! 	* config/loongarch/loongarch.cc: Likewise.
! 	* config/loongarch/loongarch.h: Likewise.
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/loongarch/constraints.md: New file.
! 	* config/loongarch/generic.md: New file.
! 	* config/loongarch/la464.md: New file.
! 	* config/loongarch/loongarch-ftypes.def: New file.
! 	* config/loongarch/loongarch-modes.def: New file.
! 	* config/loongarch/loongarch.md: New file.
! 	* config/loongarch/predicates.md: New file.
! 	* config/loongarch/sync.md: New file.
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* configure: Regenerate file.
  
! 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
! 	    Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* common/config/loongarch/loongarch-common.cc: New file.
! 	* config/loongarch/genopts/genstr.sh: New file.
! 	* config/loongarch/genopts/loongarch-strings: New file.
! 	* config/loongarch/genopts/loongarch.opt.in: New file.
! 	* config/loongarch/loongarch-str.h: New file.
! 	* config/loongarch/gnu-user.h: New file.
! 	* config/loongarch/linux.h: New file.
! 	* config/loongarch/loongarch-cpu.cc: New file.
! 	* config/loongarch/loongarch-cpu.h: New file.
! 	* config/loongarch/loongarch-def.c: New file.
! 	* config/loongarch/loongarch-def.h: New file.
! 	* config/loongarch/loongarch-driver.cc: New file.
! 	* config/loongarch/loongarch-driver.h: New file.
! 	* config/loongarch/loongarch-opts.cc: New file.
! 	* config/loongarch/loongarch-opts.h: New file.
! 	* config/loongarch/loongarch.opt: New file.
! 	* config/loongarch/t-linux: New file.
! 	* config/loongarch/t-loongarch: New file.
! 	* config.gcc: Add LoongArch support.
! 	* configure.ac: Add LoongArch support.
  
! 2022-03-29  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* opt-functions.awk (lang_enabled_by): Fix 'enabledby_negargs'
! 	typo.
  
! 2022-03-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105080
! 	* tree-ssa-strlen.cc (printf_strlen_execute): Always init
! 	loops and SCEV.
  
! 2022-03-28  Indu Bhagat  <indu.bhagat@oracle.com>
  
! 	* ctfout.cc (ctf_preprocess): Use ctfc_get_num_ctf_vars instead.
! 	(output_ctf_vars): Likewise.
  
! 2022-03-28  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/59426
! 	* doc/extend.texi: Refer to __is_trivial instead of __is_pod.
  
! 2022-03-28  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/105068
! 	* config/i386/sse.md (*ssse3_pshufbv8qi3): Also replace "Yv" with
! 	"Yw" in clobber.
  
! 2022-03-28  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104818
! 	* config/nvptx/gen-opt.sh (ptx_isa): Improve help text.
! 	* config/nvptx/nvptx-gen.opt: Regenerate.
! 	* config/nvptx/nvptx.opt (misa, mptx, ptx_version): Improve help text.
! 	* config/nvptx/t-nvptx (s-nvptx-gen-opt): Add missing dependency on
! 	gen-opt.sh.
  
! 2022-03-28  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/104308
! 	* gimple-fold.cc (gimple_fold_builtin_memory_op): When optimizing
! 	to loads then stores, set the location of the new load stmt.
  
! 2022-03-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105070
! 	* tree-switch-conversion.h
! 	(bit_test_cluster::hoist_edge_and_branch_if_true): Add location
! 	argument.
! 	* tree-switch-conversion.cc
! 	(bit_test_cluster::hoist_edge_and_branch_if_true): Annotate
! 	cond with location.
! 	(bit_test_cluster::emit): Annotate all generated expressions
! 	with location.
  
! 2022-03-28  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64-cores.def: Update Neoverse N2 core entry.
  
! 2022-03-28  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/105066
! 	* config/i386/sse.md (vec_set<mode>_0): Change attr "isa" of
! 	alternative 4 from sse4_noavx to noavx.
  
! 2022-03-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/105056
! 	* tree-predcom.cc (component::component): Initialize also comp_step.
  
! 2022-03-27  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/105068
! 	* config/i386/sse.md (*ssse3_pshufbv8qi3): Replace "Yv" with
! 	"Yw".
  
! 2022-03-26  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR middle-end/104885
! 	* calls.cc (mark_stack_region_used): Check that the region
! 	is within the allocated size of stack_usage_map.
  
! 2022-03-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/103775
! 	* recog.cc (check_invalid_inc_dec): New function.
! 	(insn_invalid_p): Return 1 if REG_INC operand overlaps
! 	any stored REGs.
  
! 2022-03-26  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/105058
! 	* config/i386/sse.md (loadiwkey): Replace "v" with "x".
! 	(aes<aesklvariant>u8): Likewise.
  
! 2022-03-26  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/105052
! 	* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>wv4hi3):
! 	Replace "Yv" with "x".
! 	(ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
! 	(ssse3_psign<mode>3): Likewise.
  
! 2022-03-26  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* reload.cc (find_reloads): Align comment with code where
! 	considering the intersection of register classes then tweaking the
! 	regclass for the current alternative or rejecting it.
  
! 2022-03-25  Christophe Lyon  <christohe.lyon@arm.com>
  
! 	PR target/104882
! 	Revert
! 	2021-06-11  Christophe Lyon  <christophe.lyon@linaro.org>
  
! 	* config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): Delete.
! 	(mve_vec_unpack<US>_hi_<mode>): Delete.
! 	(@mve_vec_pack_trunc_lo_<mode>): Delete.
! 	(mve_vmovntq_<supf><mode>): Remove '@' prefix.
! 	* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move back
! 	from vec-common.md.
! 	(vec_unpack<US>_lo_<mode>): Likewise.
! 	(vec_pack_trunc_<mode>): Rename from
! 	neon_quad_vec_pack_trunc_<mode>.
! 	* config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): Delete.
! 	(vec_unpack<US>_lo_<mode>): Delete.
! 	(vec_pack_trunc_<mode>): Delete.
  
! 2022-03-25  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR middle-end/104971
! 	* lra-lives.cc (process_bb_lives): Check hard_regs_live for hard
! 	regs to clear remove_p flag.
  
! 2022-03-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105053
! 	* tree-vect-loop.cc (vect_create_epilog_for_reduction): Pick
! 	the correct live-out stmt for a reduction chain.
  
! 2022-03-25  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/105049
! 	* tree.cc (uniform_vector_p): Recurse for VECTOR_CST or
! 	CONSTRUCTOR first elements.
  
! 2022-03-25  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR analyzer/103533
! 	* doc/invoke.texi (Static Analyzer Options): Move
! 	@ignore block after @gccoptlist's '}' for 'make pdf'.
  
! 2022-03-25  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/104954
! 	* doc/invoke.texi (Static Analyzer Options): Add
! 	-fdump-analyzer-untracked.
  
! 2022-03-25  Avinash Sonawane  <rootkea@gmail.com>
  
! 	PR analyzer/103533
! 	* doc/invoke.texi: Document that enabling taint analyzer
! 	checker disables some warnings from `-fanalyzer`.
  
! 2022-03-24  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR debug/104564
! 	* gimple-harden-conditionals.cc (detach_value): Keep temps
! 	anonymous.
  
! 2022-03-24  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR middle-end/104975
! 	* gimple-harden-conditionals.cc
! 	(pass_harden_compares::execute): Force split in case of
! 	multiple edges.
  
! 2022-03-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/105035
! 	* fold-const.cc (operand_equal_p) <case COMPONENT_REF>: If either
! 	field0 or field1 is not a FIELD_DECL, return false.
  
! 2022-03-24  Richard Biener  <rguenther@suse.de>
  
! 	* tree-predcom.cc (chain::chain): Add CTOR.
! 	(component::component): Likewise.
! 	(pcom_worker::release_chain): Use delete.
! 	(release_components): Likewise.
! 	(pcom_worker::filter_suitable_components): Likewise.
! 	(pcom_worker::split_data_refs_to_components): Use new.
! 	(make_invariant_chain): Likewise.
! 	(make_rooted_chain): Likewise.
! 	(pcom_worker::combine_chains): Likewise.
! 	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
! 	Make sure to release previously constructed scalar_results.
! 	* tree-vect-stmts.cc (vectorizable_load): Use auto_vec
! 	for vec_offsets.
! 	* vr-values.cc (simplify_using_ranges::~simplify_using_ranges):
! 	Release m_flag_set_edges.
  
! 2022-03-24  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
! 	PR tree-optimization/104970
! 	* tree-object-size.cc (parm_object_size): Restrict size
! 	computation scenarios to explicit access attributes.
  
! 2022-03-24  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/104967
! 	* config/rs6000/rs6000-c.cc (find_instance): Skip instances with null
! 	function types.
  
! 2022-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR target/102125
! 	* gimple-fold.cc (gimple_fold_builtin_memory_op): Allow the
! 	use of movmisalign when either the source or destination
! 	decl is properly aligned.
  
! 2022-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/105028
! 	* ira-color.cc (form_threads_from_copies): Remove unnecessary
! 	copying of the sorted_copies tail.
  
! 2022-03-23  Martin Liska  <mliska@suse.cz>
  
! 	* config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
! 	Use %qs in format.
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal):
! 	Reword the error message.
  
! 2022-03-23  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/104976
! 	* config/i386/sse.md (ssePSmodelower): New.
! 	(*avx_cmp<mode>3_ltint_not): Force_reg operand before
! 	lowpart_subreg to avoid NULL_RTX.
! 	(<avx512>_fmaddc_<mode>_mask1<round_expand_name>,
! 	<avx512>_fcmaddc_<mode>_mask1<round_expand_name>,
! 	fma_<mode>_fmaddc_bcst, fma_<mode>_fcmaddc_bcst,
! 	<avx512>_<complexopname>_<mode>_mask<round_name>,
! 	avx512fp16_fcmaddcsh_v8hf_mask1<round_expand_name>,
! 	avx512fp16_fcmaddcsh_v8hf_mask3<round_expand_name>,
! 	avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>,
! 	avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>,
! 	float<floatunssuffix><mode>v4hf2,
! 	float<floatunssuffix>v2div2hf2,
! 	fix<fixunssuffix>_truncv4hf<mode>2,
! 	fix<fixunssuffix>_truncv2hfv2di2, extendv4hf<mode>2,
! 	extendv2hfv2df2,
! 	trunc<mode>v4hf2,truncv2dfv2hf2,
! 	*avx512bw_permvar_truncv16siv16hi_1,
! 	*avx512bw_permvar_truncv16siv16hi_1_hf,
! 	*avx512f_permvar_truncv8siv8hi_1,
! 	*avx512f_permvar_truncv8siv8hi_1_hf,
! 	*avx512f_vpermvar_truncv8div8si_1,
! 	*avx512f_permvar_truncv32hiv32qi_1,
! 	*avx512f_permvar_truncv16hiv16qi_1,
! 	*avx512f_permvar_truncv4div4si_1,
! 	*avx512f_pshufb_truncv8hiv8qi_1,
! 	*avx512f_pshufb_truncv4siv4hi_1,
! 	*avx512f_pshufd_truncv2div2si_1,
! 	sdot_prod<mode>, avx2_pblend<ssemodesuffix>_1,
! 	ashrv2di3,ashrv2di3,usdot_prod<mode>): Ditto.
  
! 2022-03-22  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104925
! 	* config/nvptx/nvptx.md (define_insn "nvptx_uniform_warp_check"):
! 	Use % as register prefix.
  
! 2022-03-22  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (nvptx_scalar_mode_supported_p)
! 	(nvptx_libgcc_floating_mode_supported_p): Only enable HFmode for
! 	mexperimental.
  
! 2022-03-22  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.opt (mexperimental): New option.
  
! 2022-03-22  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104957
! 	* config/nvptx/nvptx-protos.h (nvptx_asm_output_def_from_decls): Declare.
! 	* config/nvptx/nvptx.cc (write_fn_proto_1): Don't add function marker
! 	for alias.
! 	(SET_ASM_OP, NVPTX_ASM_OUTPUT_DEF): New macro def.
! 	(nvptx_asm_output_def_from_decls): New function.
! 	* config/nvptx/nvptx.h (ASM_OUTPUT_DEF): New macro def, define to
! 	gcc_unreachable ().
! 	(ASM_OUTPUT_DEF_FROM_DECLS): New macro def, define to
! 	nvptx_asm_output_def_from_decls.
! 	* config/nvptx/nvptx.opt (malias): New opt.
  
! 2022-03-22  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104916
! 	PR target/104783
! 	* config/nvptx/nvptx.md (define_expand "omp_simt_exit"): Emit warp
! 	sync (or uniform warp check for mptx < 6.0).
  
! 2022-03-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/105012
! 	* tree-if-conv.cc (ifcvt_local_dce): Only call
! 	dse_classify_store when we have a VDEF.
  
! 2022-03-22  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104902
! 	* config/nvptx/nvptx.cc (handle_ptx_version_option):
! 	Fix option wrapping in an error message.
  
! 2022-03-22  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104903
! 	* config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
! 	Wrap const keyword.
  
! 2022-03-22  Martin Liska  <mliska@suse.cz>
  
! 	* config/v850/v850-c.cc (pop_data_area): Fix typo in pragma
! 	name.
  
! 2022-03-22  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104898
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal):
! 	Use %qs instead of (%qs).
  
! 2022-03-22  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104898
! 	* config/i386/i386-options.cc (ix86_option_override_internal):
! 	  Use '%qs' instead of '(%qs)'.
  
! 2022-03-22  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104898
! 	* config/aarch64/aarch64.cc (aarch64_handle_attr_arch):
! 	Use 'qs' and remove usage '(%qs)'.
! 	(aarch64_handle_attr_cpu): Likewise.
! 	(aarch64_handle_attr_tune): Likewise.
! 	(aarch64_handle_attr_isa_flags): Likewise.
  
! 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
! 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64.cc (neoversev1_regmove_cost): New tuning
! 	struct.
! 	(neoversev1_tunings): Use neoversev1_regmove_cost and update store_int
! 	cost.
! 	(neoverse512tvb_tunings): Likewise.
  
! 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
! 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64.cc (demeter_addrcost_table,
! 	demeter_regmove_cost, demeter_advsimd_vector_cost,
! 	demeter_sve_vector_cost, demeter_scalar_issue_info,
! 	demeter_advsimd_issue_info, demeter_sve_issue_info,
! 	demeter_vec_issue_info, demeter_vector_cost,
! 	demeter_tunings): New tuning structs.
! 	(aarch64_ve_op_count::rename_cycles_per_iter): Enable for demeter
! 	tuning.
! 	* config/aarch64/aarch64-cores.def: Add entry for demeter.
! 	* config/aarch64/aarch64-tune.md (tune): Add demeter to list.
  
! 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
! 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (struct cpu_memmov_cost): New struct.
! 	(struct tune_params): Change type of memmov_cost to use cpu_memmov_cost.
! 	* config/aarch64/aarch64.cc (aarch64_memory_move_cost): Update all
! 	tunings to use cpu_memmov_cost struct.
  
! 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
! 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64.cc (neoversen2_addrcost_table,
! 	neoversen2_regmove_cost, neoversen2_advsimd_vector_cost,
! 	neoversen2_sve_vector_cost, neoversen2_scalar_issue_info,
! 	neoversen2_advsimd_issue_info, neoversen2_sve_issue_info,
! 	neoversen2_vec_issue_info, neoversen2_tunings): New structs.
! 	(neoversen2_tunings): Use new structs and update tuning flags.
! 	(aarch64_vec_op_count::rename_cycles_per_iter): Enable for neoversen2
! 	tuning.
  
! 2022-03-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH9): Add FP16 feature
! 	bit.
  
! 2022-03-22  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/104982
! 	* config/i386/i386.md (*jcc_bt<mode>_mask): Extend the
! 	following splitter to reversed condition.
  
! 2022-03-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/104989
! 	* calls.cc (expand_call): Don't set ECF_NORETURN in flags after
! 	sorry for passing too large argument, instead set sibcall_failure
! 	for pass == 0, or a new normal_failure flag otherwise.  If
! 	normal_failure is set, don't assert all stack has been deallocated
! 	at the end and throw away the whole insn sequence.
  
! 2022-03-22  Qian Jianhua  <qianjh@cn.fujitsu.com>
  
! 	* print-tree.cc: Change array length
  
! 2022-03-22  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	PR target/104978
! 	* config/i386/sse.md
! 	(avx512fp16_fmaddcsh_v8hf_mask1<round_expand_name):
! 	Use avx512f_movsf_mask instead of vmovaps or vblend, and
! 	force_reg before lowpart_subreg.
! 	(avx512fp16_fcmaddcsh_v8hf_mask1<round_expand_name): Likewise.
  
! 2022-03-21  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/105000
! 	* common/config/i386/i386-common.cc
! 	(OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Replace
! 	OPTION_MASK_ISA2_AVX512F_UNSET with OPTION_MASK_ISA2_SSE_UNSET.
  
! 2022-03-21  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/104998
! 	* common/config/i386/cpuinfo.h (get_available_features): Pass
! 	0x19 to __cpuid for bit_AESKLE.  Enable FEATURE_AESKLE only if
! 	bit_AESKLE is set.
  
! 2022-03-21  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR middle-end/104869
! 	* rtl-ssa/accesses.h (clobber_group::prev_clobber): Declare.
! 	(clobber_group::next_clobber): Likewise.
! 	(def_lookup::prev_def): Rename to...
! 	(def_lookup::last_def_of_prev_group): ...this.
! 	(def_lookup::next_def): Rename to...
! 	(def_lookup::first_def_of_next_group): ...this.
! 	(def_lookup::matching_or_prev_def): Rename to...
! 	(def_lookup::matching_set_or_last_def_of_prev_group): ...this.
! 	(def_lookup::matching_or_next_def): Rename to...
! 	(def_lookup::matching_set_or_first_def_of_next_group): ...this.
! 	(def_lookup::prev_def): New function, taking the lookup insn as
! 	argument.
! 	(def_lookup::next_def): Likewise.
! 	* rtl-ssa/member-fns.inl (def_lookup::prev_def): Rename to...
! 	(def_lookup::last_def_of_prev_group): ...this.
! 	(def_lookup::next_def): Rename to...
! 	(def_lookup::first_def_of_next_group): ...this.
! 	(def_lookup::matching_or_prev_def): Rename to...
! 	(def_lookup::matching_set_or_last_def_of_prev_group): ...this.
! 	(def_lookup::matching_or_next_def): Rename to...
! 	(def_lookup::matching_set_or_first_def_of_next_group): ...this.
! 	* rtl-ssa/movement.h (restrict_movement_for_dead_range): Update after
! 	above renaming.
! 	* rtl-ssa/accesses.cc (clobber_group::prev_clobber): New function.
! 	(clobber_group::next_clobber): Likewise.
! 	(def_lookup::prev_def): Likewise.
! 	(def_lookup::next_def): Likewise.
! 	(function_info::make_use_available): Pass the lookup insn to
! 	def_lookup::prev_def and def_lookup::next_def.
  
! 2022-03-21  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document min-pagesize parameter.
  
! 2022-03-21  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Dump
! 	we are estimating niter of loop.
  
! 2022-03-21  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.cc (riscv_ext_flag_table):
! 	Update flag name and mask name.
! 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Define
! 	misc macro for vector extensions.
! 	* config/riscv/riscv-opts.h (MASK_VECTOR_EEW_32): Rename to ...
! 	(MASK_VECTOR_ELEN_32): ... this.
! 	(MASK_VECTOR_EEW_64): Rename to ...
! 	(MASK_VECTOR_ELEN_64): ... this.
! 	(MASK_VECTOR_EEW_FP_32): Rename to ...
! 	(MASK_VECTOR_ELEN_FP_32): ... this.
! 	(MASK_VECTOR_EEW_FP_64): Rename to ...
! 	(MASK_VECTOR_ELEN_FP_64): ... this.
! 	(TARGET_VECTOR_ELEN_32): New.
! 	(TARGET_VECTOR_ELEN_64): Ditto.
! 	(TARGET_VECTOR_ELEN_FP_32): Ditto.
! 	(TARGET_VECTOR_ELEN_FP_64): Ditto.
! 	(TARGET_MIN_VLEN): Ditto.
! 	* config/riscv/riscv.opt (riscv_vector_eew_flags): Rename to ...
! 	(riscv_vector_elen_flags): ... this.
  
! 2022-03-21  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	PR target/104977
! 	* config/i386/sse.md
! 	(avx512fp16_fma<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
! 	Correct round operand for intel dialect.
  
! 2022-03-19  Arthur Cohen  <arthur.cohen@embecosm.com>
  
! 	* diagnostic.cc (diagnostic_cc_tests): Rename to...
! 	(c_diagnostic_cc_tests): ...this.
! 	* opt-problem.cc (opt_problem_cc_tests): Rename to...
! 	(c_opt_problem_cc_tests): ...this.
! 	* selftest-run-tests.cc (selftest::run_tests): No longer run
! 	opt_problem_cc_tests or diagnostic_cc_tests.
! 	* selftest.h (diagnostic_cc_tests): Remove declaration.
! 	(opt_problem_cc_tests): Likewise.
  
! 2022-03-19  Marc Nieper-Wißkirchen  <marc@nieper-wisskirchen.de>
  
! 	PR jit/63854
! 	* hash-traits.h (struct typed_const_free_remove): New.
! 	(struct free_string_hash): New.
! 	* pass_manager.h: Use free_string_hash.
! 	* passes.cc (pass_manager::register_pass_name): Use free_string_hash.
! 	(pass_manager::~pass_manager): Delete allocated m_name_to_pass_map.
  
! 2022-03-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104971
! 	* config/i386/i386-expand.cc
! 	(ix86_expand_builtin) <case IX86_BUILTIN_READ_FLAGS>: If ignore,
! 	don't push/pop anything and just return const0_rtx.
  
! 2022-03-18  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/104961
! 	* lra-assigns.cc (find_reload_regno_insns): Process reload pseudo clobber.
  
! 2022-03-18  Jason Merrill  <jason@redhat.com>
  
! 	* tree.h (IDENTIFIER_LENGTH): Add comment.
  
! 2022-03-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/99578
! 	PR middle-end/100680
! 	PR tree-optimization/100834
! 	* params.opt (--param=min-pagesize=): New parameter.
! 	* pointer-query.cc
! 	(compute_objsize_r) <case ARRAY_REF>: Formatting fix.
! 	(compute_objsize_r) <case INTEGER_CST>: Use maximum object size instead
! 	of zero for pointer constants equal or larger than min-pagesize.
  
! 2022-03-18  Tom de Vries  <tdevries@suse.de>
  
! 	* gimplify.cc (gimplify_omp_for): Set location using 'input_location'.
! 	Set gfor location only when dealing with a OMP_TASKLOOP.
  
! 2022-03-18  Tom de Vries  <tdevries@suse.de>
  
! 	* gimplify.cc (gimplify_omp_for): Set taskloop location.
  
! 2022-03-18  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104952
! 	* omp-low.cc (lower_rec_input_clauses): Make sure GOMP_SIMT_XCHG_BFLY
! 	is executed unconditionally.
  
! 2022-03-18  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/104974
! 	* config/i386/i386.md (*movhi_internal): Set attr type from HI
! 	to HF for alternative 12 under TARGET_AVX512FP16.
  
! 2022-03-18  Cui,Lili  <lili.cui@intel.com>
  
! 	PR target/104963
! 	* config/i386/i386.h (PTA_SAPPHIRERAPIDS): change it to base on ICX.
! 	* doc/invoke.texi: Update documents for Intel sapphirerapids.
  
! 2022-03-17  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR target/86722
! 	PR tree-optimization/90356
! 	* config/i386/i386.md (*movtf_internal): Don't guard
! 	standard_sse_constant_p clause by optimize_function_for_size_p.
! 	(*movdf_internal): Likewise.
! 	(*movsf_internal): Likewise.
  
! 2022-03-17  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/102943
! 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Find range via
! 	dominators and apply intermediary outgoing edge ranges.
  
! 2022-03-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104960
! 	* passes.def: Add pass parameter to pass_sink_code, mark
! 	last one to unsplit edges.
! 	* tree-ssa-sink.cc (pass_sink_code::set_pass_param): New.
! 	(pass_sink_code::execute): Always execute TODO_cleanup_cfg
! 	when we need to unsplit edges.
  
! 2022-03-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/103984
! 	* gimplify.cc (gimplify_target_expr): Gimplify type sizes and
! 	TARGET_EXPR_INITIAL into a temporary sequence, then push clobbers
! 	and asan unpoisioning, then append the temporary sequence and
! 	finally the TARGET_EXPR_CLEANUP clobbers.
  
! 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/i386/sse.md: Delete corrupt character/typo.
  
! 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR target/94680
! 	* config/i386/sse.md (sse2_movq128): New define_expand to
! 	preserve previous named instruction.
! 	(*sse2_movq128_<mode>): Renamed from sse2_movq128, and
! 	generalized to VI8F_128 (both V2DI and V2DF).
  
! 2022-03-16  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
! 	PR tree-optimization/104941
! 	* tree-object-size.cc (size_for_offset): Make useless conversion
! 	check lighter and assign result of fold_convert to OFFSET.
  
! 2022-03-16  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/104890
! 	* config/i386/x86gprintrin.h: Also check _SOFT_FLOAT before
! 	pushing target("general-regs-only").
  
! 2022-03-16  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.cc (riscv_ext_version_table):
! 	Add version info for zk, zks and zkn.
  
! 2022-03-16  LiaoShihua  <shihua@iscas.ac.cn>
  
! 	* common/config/riscv/riscv-common.cc
! 	(riscv_combine_info): New.
! 	(riscv_subset_list::handle_combine_ext): Combine back into zk to
! 	maintain the canonical order in isa strings.
! 	(riscv_subset_list::parse): Ditto.
! 	* config/riscv/riscv-subset.h (handle_combine_ext): New.
  
! 2022-03-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/102008
! 	* passes.def: Move the added code sinking pass before the
! 	preceeding phiopt pass.
  
! 2022-03-16  Patrick Palka  <ppalka@redhat.com>
  
! 	PR c++/96780
! 	* doc/invoke.texi (C++ Dialect Options): Document
! 	-ffold-simple-inlines.
  
! 2022-03-16  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
! 	PR tree-optimization/104942
! 	* tree-object-size.cc (alloc_object_size): Remove STRIP_NOPS.
  
! 2022-03-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104910
! 	* config/aarch64/aarch64.cc (aarch64_load_symref_appropriately): Copy
! 	imm rtx.
  
! 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	* gimple-match-head.cc (single_use): Implement inline using a
! 	single loop.
  
! 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* match.pd (X CMP X -> true): Test tree_expr_maybe_nan_p
! 	instead of HONOR_NANS.
! 	(X LTGT X -> false): Enable if X is not tree_expr_maybe_nan_p, as
! 	this can't trap/signal.
  
! 2022-03-16  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/104946
! 	* config/i386/i386-builtin.def (BDESC): Add
! 	CODE_FOR_sse4_1_blendvpd for IX86_BUILTIN_BLENDVPD.
! 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Don't fold
! 	__builtin_ia32_blendvpd w/o sse4.2
  
! 2022-03-15  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/104923
! 	* config/rs6000/predicates.md (mma_disassemble_output_operand): Restrict
! 	acceptable MEM addresses.
  
! 2022-03-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/91229
! 	* config/riscv/riscv.cc (riscv_pass_aggregate_in_fpr_pair_p,
! 	riscv_pass_aggregate_in_fpr_and_gpr_p): Pass OPT_Wpsabi instead of 0
! 	to warning calls.
  
! 2022-03-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104890
! 	* config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Use no-mmx,no-sse
! 	instead of general-regs-only.
  
! 2022-03-15  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Marc Glisse  <marc.glisse@inria.fr>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/101895
! 	* match.pd (vec_same_elem_p): Handle CONSTRUCTOR_EXPR def.
! 	(plus (vec_perm (mult ...) ...) ...): New reordering simplification.
  
! 2022-03-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/104814
! 	* ifcvt.cc (find_if_case_1, find_if_case_2): Punt if test_bb doesn't
! 	end with onlyjump_p.  Assume BB_END (test_bb) is always non-NULL.
  
! 2022-03-15  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/104436
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
! 	Check for warning suppression.  Avoid by-value arguments transformed
! 	into by-transparent-reference.
  
! 2022-03-14  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (peephole2 xorl;movb -> movzbl): Disable
! 	transformation when *zero_extend<mode>si2 is not available.
  
! 2022-03-14  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	* config/mips/mips.h (SUBTARGET_SHADOW_OFFSET): Define.
! 	* config/mips/mips.cc (mips_option_override): Make
! 	-fsanitize=address imply -fasynchronous-unwind-tables.  This is
! 	needed by libasan for stack backtrace on MIPS.
! 	(mips_asan_shadow_offset): Return SUBTARGET_SHADOW_OFFSET.
  
! 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/104778
! 	* lra.cc (lra_substitute_pseudo): For debug_p mode, simplify
! 	SUBREG, ZERO_EXTEND, SIGN_EXTEND, FLOAT or UNSIGNED_FLOAT if recursive
! 	call simplified the first operand into VOIDmode constant.
  
! 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/102586
! 	* doc/extend.texi (__builtin_clear_padding): Clearify that for C++
! 	argument type should be pointer to trivially-copyable type unless it
! 	is address of a variable or parameter.
  
! 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99754
! 	* config/i386/emmintrin.h (_mm_loadu_si32): Put loaded value into
! 	first 	rather than last element of the vector, use __m32_u to do
! 	a really unaligned load, use just 0 instead of (int)0.
! 	(_mm_loadu_si16): Put loaded value into first rather than last
! 	element of the vector, use __m16_u to do a really unaligned load,
! 	use just 0 instead of (short)0.
  
! 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/104899
! 	* config/bfin/bfin.cc (bfin_handle_longcall_attribute): Fix a typo
! 	in diagnostic message - cannott -> cannot.  Use %< and %> around
! 	names of attribute.  Avoid too long line.
! 	* range-op.cc (operator_logical_and::op1_range): Fix up a typo
! 	in comment - cannott -> cannot.  Use 2 spaces after . instead of one.
  
! 2022-03-14  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/104666
! 	* config/i386/i386-expand.cc
! 	(ix86_check_builtin_isa_match):	New func.
! 	(ix86_expand_builtin): Move code to
! 	ix86_check_builtin_isa_match and call it.
! 	* config/i386/i386-protos.h
! 	(ix86_check_builtin_isa_match): Declare.
! 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Don't fold
! 	builtin into gimple when isa mismatches.
  
! 2022-03-13  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* doc/invoke.texi: Fix typos.
! 	* doc/tm.texi.in: Remove duplicated word.
  	* doc/tm.texi: Regenerate.
  
! 2022-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
! 
! 	PR target/104829
! 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Don't output
! 	"ppc" and "ppc64" based on rs6000_cpu.
! 
! 2022-03-12  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	PR middle-end/100280
! 	PR middle-end/104892
! 	* omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
! 	Remove special handling of 'GOMP_MAP_FORCE_TOFROM'.
! 
! 2022-03-12  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	PR middle-end/100280
! 	PR middle-end/104086
! 	* omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
! 	Mark variables used in 'present' clauses as addressable.
! 	* omp-low.cc (scan_sharing_clauses) <OMP_CLAUSE_MAP>: Gracefully
! 	handle duplicate 'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE'.
! 
! 2022-03-12  Thomas Schwinge  <thomas@codesourcery.com>
! 
! 	PR other/65095
! 	* tree-core.h (user_omp_claus_code_name): Declare function.
! 	* tree.cc (user_omp_clause_code_name): New function.
! 
! 2022-03-12  Roger Sayle  <roger@nextmovesoftware.com>
! 
! 	PR middle-end/98420
! 	* match.pd (minus @0 @0): Additional checks for -fno-rounding-math
! 	(the defaut) or -fno-signed-zeros.
! 
! 2022-03-12   Michael Meissner  <meissner@linux.ibm.com>
! 
! 	PR target/104868
! 	* config/rs6000/vsx.md (extendditi2): Use a 'b' constraint when
! 	moving from a GPR register to an Altivec register.
! 
! 2022-03-11  Roger Sayle  <roger@nextmovesoftware.com>
! 
! 	PR tree-optimization/98335
! 	* config/i386/i386.md (peephole2): Eliminate redundant insv.
! 	Combine movl followed by movb.  Transform xorl followed by
! 	a suitable movb or movw into the equivalent movz[bw]l.
! 
! 2022-03-11  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/98335
! 	* builtins.cc (get_object_alignment_2): Export.
! 	* builtins.h (get_object_alignment_2): Likewise.
! 	* tree-ssa-alias.cc (ao_ref_alignment): New.
! 	* tree-ssa-alias.h (ao_ref_alignment): Declare.
! 	* tree-ssa-dse.cc (compute_trims): Improve logic deciding whether
! 	to align head/tail, writing more bytes but using fewer store insns.
! 
! 2022-03-11  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/104880
! 	* tree-ssa.cc (execute_update_address_taken): Remember if we
! 	optimistically made something not addressable and
! 	prepare to undo it.
! 
! 2022-03-11  Richard Biener  <rguenther@suse.de>
! 
! 	PR target/104762
! 	* config/i386/i386.cc (ix86_builtin_vectorization_cost): Do not
! 	cost the first lane of SSE pieces as inserts for vec_construct.
! 
! 2022-03-10  Roger Sayle  <roger@nextmovesoftware.com>
! 
! 	PR c++/84964
! 	* calls.cc (expand_call): Ignore stack adjustments after sorry.
! 
! 2022-03-10  Vladimir N. Makarov  <vmakarov@redhat.com>
! 
! 	PR target/103074
! 	* lra-constraints.cc (split_reg): Set up
! 	check_and_force_assignment_correctness_p when splitting hard
! 	register live range.
! 
! 2022-03-10  Martin Jambor  <mjambor@suse.cz>
! 
! 	PR ipa/104813
! 	* ipa-cp.cc (create_specialized_node): Move removal of
! 	self-recursive calls from callers vector before refrence
! 	adjustments.
! 
! 2022-03-10  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/102943
! 	* gimple-range-cache.cc (sbr_sparse_bitmap::bitvec):
! 	Make a bitmap_head.
! 	(sbr_sparse_bitmap::sbr_sparse_bitmap): Adjust and switch
! 	to tree view.
! 	(sbr_sparse_bitmap::set_bb_range): Adjust.
! 	(sbr_sparse_bitmap::get_bb_range): Likewise.
! 
! 2022-03-10  Richard Biener  <rguenther@suse.de>
! 
! 	PR tree-optimization/102943
! 	* tree-ssa-dom.cc (back_propagate_equivalences): Only
! 	populate the dominance bitmap if fast queries are not
! 	available.  Use a tree view bitmap.
! 	(record_temporary_equivalences): Cache the dominance bitmap
! 	across all equivalences on the edge.
! 
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
! 
! 	PR target/104840
! 	* config/nvptx/nvptx.md (define_attr "predicable"): Use no,yes instead
! 	of false,true.
! 
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
! 
! 	PR target/104783
! 	* config/nvptx/nvptx.cc (nvptx_init_unisimt_predicate)
! 	(nvptx_output_unisimt_switch): Handle unisimt_outside_simt_predicate.
! 	(nvptx_get_unisimt_outside_simt_predicate): New function.
! 	(predicate_insn): New function, factored out of ...
! 	(nvptx_reorg_uniform_simt): ... here.  Predicate all emitted insns.
! 	* config/nvptx/nvptx.h (struct machine_function): Add
! 	unisimt_outside_simt_predicate field.
! 	* config/nvptx/nvptx.md (define_insn "nvptx_warpsync")
! 	(define_insn "nvptx_uniform_warp_check"): Make predicable.
! 
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
! 
! 	* config/nvptx/nvptx.cc (nvptx_unisimt_handle_set): Handle unused
! 	result.
  
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104815
! 	* config/nvptx/nvptx.cc (nvptx_print_operand): Handle 'x' operand
! 	modifier.
! 	* config/nvptx/nvptx.md: Use %x0 destination operand in atom insns.
  
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.md (define_insn "atomic_fetch_<logic><mode>"):
! 	Emit atom.and.b64 instead of atom.b64.and.
  
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Move mptx=3.1 ...
! 	(MULTILIB_OPTIONS): ... here.
  
! 2022-03-10  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104758
! 	* config/nvptx/nvptx.opt (misa): Set default to sm_30.
! 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Remove misa=sm_30.
  
! 2022-03-10  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/90115
! 	PR middle-end/102330
! 	PR middle-end/104774
! 	* omp-low.cc (oacc_privatization_candidate_p)
! 	(oacc_privatization_scan_clause_chain)
! 	(oacc_privatization_scan_decl_chain, lower_oacc_private_marker):
! 	Analyze 'lookup_decl'-translated DECL.
  
! 2022-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/99708
! 	* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Remove
! 	RS6000_BTI_ptr_ieee128_float and RS6000_BTI_ptr_ibm128_float.
! 	(ptr_ieee128_float_type_node, ptr_ibm128_float_type_node): Remove.
! 	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Return
! 	"**NULL**" if type_node is NULL first.  Handle
! 	ieee128_float_type_node.
! 	(rs6000_init_builtins): Don't initialize ptr_ieee128_float_type_node
! 	and ptr_ibm128_float_type_node.  Set ibm128_float_type_node and
! 	ieee128_float_type_node to NULL rather than long_double_type_node if
! 	they aren't supported.  Do support __ibm128 even if
! 	!TARGET_FLOAT128_TYPE when long double is double double.
! 	(rs6000_expand_builtin): Error if bif_is_ibm128 and
! 	!ibm128_float_type_node.  Remap RS6000_BIF_{,UN}PACK_IF to
! 	RS6000_BIF_{,UN}PACK_TF much earlier and only use bif_is_ibm128 check
! 	for it.
! 	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Define
! 	__SIZEOF_FLOAT128__ here and only iff __float128 macro is defined.
! 	(rs6000_cpu_cpp_builtins): Don't define __SIZEOF_FLOAT128__ here.
! 	Define __SIZEOF_IBM128__=16 if ieee128_float_type_node is non-NULL.
! 	Formatting fix.
! 	* config/rs6000/rs6000-gen-builtins.cc: Document ibm128 attribute.
! 	(struct attrinfo): Add isibm128 member.
! 	(TYPE_MAP_SIZE): Remove.
! 	(type_map): Use [] instead of [TYPE_MAP_SIZE].  For "if" use
! 	ibm128_float_type_node only if it is non-NULL, otherwise fall back
! 	to long_double_type_node.  Remove "pif" entry.
! 	(parse_bif_attrs): Handle ibm128 attribute and print it for debugging.
! 	(write_decls): Output bif_ibm128_bit and bif_is_ibm128.
! 	(write_type_node): Use sizeof type_map / sizeof type_map[0]
! 	instead of TYPE_MAP_SIZE.
! 	(write_bif_static_init): Handle isibm128.
! 	* config/rs6000/rs6000-builtins.def: Document ibm128 attribute.
! 	(__builtin_pack_ibm128, __builtin_unpack_ibm128): Add ibm128
! 	attribute.
  
! 2022-03-09  Richard Biener  <rguenther@suse.de>
  
! 	* cfgexpand.cc (expand_gimple_asm): Special-case MEM_REF
! 	with non-decl operand, avoiding a copy.
  
! 2022-03-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104781
! 	* config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define for ia32.
  
! 2022-03-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104786
! 	* cfgexpand.cc (expand_asm_stmt): Do not generate a copy
! 	for VLAs without an upper size bound.
  
! 2022-03-09  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	PR tree-optimization/104851
! 	* optabs-query.cc (supports_vec_convert_optab_p): Fix off-by-one
! 	error.
  
! 2022-03-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/104711
! 	* doc/invoke.texi (-Wextra): Document that -Wshift-negative-value
! 	is enabled by it only for C++11 to C++17 rather than for C++03 or
! 	later.
! 	(-Wshift-negative-value): Similarly (except here we stated
! 	that it is enabled for C++11 or later).
  
! 2022-03-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/104839
! 	* simplify-rtx.cc (simplify_unary_operation_1) <case SIGN_EXTEND>:
! 	Use SRP_SIGNED instead of incorrect 1 in SUBREG_PROMOTED_SET.
! 	(simplify_unary_operation_1) <case ZERO_EXTEND>: Use SRP_UNSIGNED
! 	instead of incorrect 0 in SUBREG_PROMOTED_SET.
  
! 2022-03-09  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	PR target/104842
! 	* config/mips/mips.h (LUI_OPERAND): Cast the input to an unsigned
! 	value before adding an offset.
  
! 2022-03-08  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* config/arm/arm-builtins.cc
! 	(arm_binop_none_none_unone_qualifiers): Delete.
! 	(BINOP_NONE_NONE_UNONE_QUALIFIERS): Delete.
  
! 2022-03-08  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR translation/104552
! 	* config/host-darwin.cc (darwin_gt_pch_get_address): Amend
! 	the PCH out of memory error message punctuation and wording.
  
! 2022-03-08  Marek Polacek  <polacek@redhat.com>
  
! 	PR rtl-optimization/104777
! 	* rtl.cc (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if
! 	ASM_OPERANDS_LABEL_VEC has at least one element.
  
! 2022-03-08  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/104781
! 	* config/i386/i386.cc (ix86_expand_epilogue): Sorry if there is
! 	stack realignment or regparm nested function with EH return.
  
! 2022-03-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR target/104790
! 	* config/arm/arm.h (MVE_STN_LDW_MODE): New MACRO.
! 	* config/arm/arm.cc (mve_vector_mem_operand): Relax constraint on base
! 	register for non widening loads or narrowing stores.
  
! 2022-03-08  Eric Gallager  <egallager@gcc.gnu.org>
  
! 	PR translation/104552
! 	* params.opt: Fix typo.
  
! 2022-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/84201
! 	* params.opt (-param=vect-induction-float): Add.
! 	* doc/invoke.texi (vect-induction-float): Document.
! 	* tree-vect-loop.cc (vectorizable_induction): Honor
! 	param_vect_induction_float.
  
! 2022-03-08  Martin Jambor  <mjambor@suse.cz>
  
! 	PR translation/104552
! 	* params.opt (ipa-cp-recursive-freq-factor): Remove repeated word
! 	"that" in the description.
  
! 2022-03-08  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104825
! 	* tree-ssa-sccvn.cc (visit_reference_op_call): Properly
! 	guard modref get_ao_ref on a pointer typed argument.
  
! 2022-03-08  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/sse.md (*vec_dupv4si): Disable memory operand
! 	for !TARGET_INTER_UNIT_MOVES_TO_VEC when prefer_for_speed.
  
! 2022-03-07  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (C++ Modules): Remove anachronism.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/104381
! 	* opts.cc (finish_options): If debug info is disabled
! 	(debug_info_level) and -fvar-tracking is unset, disable it.
  
! 2022-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree-ssa-propagate.cc: Fix up duplicated word issue in a comment.
! 	* config/riscv/riscv.cc: Likewise.
! 	* config/darwin.h: Likewise.
! 	* config/i386/i386.cc: Likewise.
! 	* config/aarch64/thunderx3t110.md: Likewise.
! 	* config/aarch64/fractional-cost.h: Likewise.
! 	* config/vax/vax.cc: Likewise.
! 	* config/rs6000/pcrel-opt.md: Likewise.
! 	* config/rs6000/predicates.md: Likewise.
! 	* ctfc.h: Likewise.
! 	* tree-ssa-uninit.cc: Likewise.
! 	* value-relation.h: Likewise.
! 	* gimple-range-gori.cc: Likewise.
! 	* ipa-polymorphic-call.cc: Likewise.
! 	* pointer-query.cc: Likewise.
! 	* ipa-sra.cc: Likewise.
! 	* internal-fn.cc: Likewise.
! 	* varasm.cc: Likewise.
! 	* gimple-ssa-warn-access.cc: Likewise.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104794
! 	* config/arm/arm.cc (arm_option_override_internal): Add missing
! 	space.
  
! 2022-03-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104782
! 	* tree-vect-slp.cc (vectorize_slp_instance_root_stmt):
! 	Re-instantiate r10-5979 fix, add comment.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104797
! 	* config/msp430/msp430.cc (msp430_expand_delay_cycles): Remove
! 	parenthesis from built-in name.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104794
! 	* config/arm/arm.cc (arm_option_override_internal): Fix quoting
! 	of options in error messages.
! 	(arm_option_reconfigure_globals): Likewise.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR target/104794
! 	* config/arm/arm-builtins.cc (arm_expand_builtin): Reuse error
! 	message.  Fix ARM_BUILTIN_WRORHI and ARM_BUILTIN_WRORH that can
! 	have only range [0,32].
  
! 2022-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104775
! 	* config/s390/s390.md (*cmp_and_trap_unsigned_int<mode>): Use
! 	S constraint instead of T in the last alternative.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	* plugin.cc (default_plugin_dir_name): Remove <dir> from error
! 	message.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR translation/90148
! 	* config/rs6000/rs6000.cc (rs6000_linux64_override_options): Put
! 	quote to a proper place.
! 	* plugin.cc (default_plugin_dir_name): Likewise.
  
! 2022-03-07  Martin Liska  <mliska@suse.cz>
  
! 	PR target/99297
! 	* config/rx/rx.cc (rx_expand_builtin_mvtc): Fix translation
! 	string.
  
! 2022-03-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104779
! 	* config/i386/sse.md (avx512dq_mul<mode>3<mask_name>): New
! 	define_expand pattern.  Rename define_insn to ...
! 	(*avx512dq_mul<mode>3<mask_name>): ... this.
! 	(<code><mode>3_mask): New any_logic define_expand pattern.
! 	(<mask_codefor><code><mode>3<mask_name>): Rename to ...
! 	(*<code><mode>3<mask_name>): ... this.
  
! 2022-03-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p): Remove
! 	visited bitmap and its use.  Also punt on EDGE_ABNORMAL edges.
  
! 2022-03-05  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR testsuite/104732
! 	* config/i386/i386.md (SWIM1248x): Renamed from SWIM1248s.
! 	Include DI mode unconditionally.
! 	(*anddi3_doubleword): Remove && TARGET_STV && TARGET_SSE2 condition,
! 	i.e. always split on !TARGET_64BIT.
! 	(*<any_or>di3_doubleword): Likewise.
! 	(*one_cmpldi2_doubleword): Likewise.
! 	(and<mode>3 expander): Update to use SWIM1248x from SWIM1248s.
! 	(<any_or><mode>3 expander): Likewise.
! 	(one_cmpl<mode>2 expander): Likewise.
  
! 2022-03-05   Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/104698
! 	* config/rs6000/vsx.md (UNSPEC_MTVSRD_DITI_W1): Delete.
! 	(mtvsrdd_diti_w1): Delete.
! 	(extendditi2): Convert from define_expand to
! 	define_insn_and_split.  Replace with code to deal with both GPR
! 	registers and with altivec registers.
  
! 2022-03-04  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Restructure a
! 	bit.  Handle most older CPUs.
  
! 2022-03-04  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/darwin.cc (darwin_fold_builtin): Make fcode an int to
! 	avoid a mismatch with DECL_MD_FUNCTION_CODE().
  
! 2022-03-04  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR target/104117
! 	* config/rs6000/darwin.md (@machopic_high_<mode>): New.
! 	(@machopic_low_<mode>): New.
! 	* config/rs6000/predicates.md (macho_pic_address): New.
! 	* config/rs6000/rs6000.cc (rs6000_legitimize_address): Do not
! 	apply the TLS processing to Darwin.
! 	* lra-constraints.cc (process_address_1): Revert the changes
! 	in r12-7209.
  
! 2022-03-04  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/87496
! 	PR target/104208
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Make the
! 	ISA 2.06 requirement for -mabi=ieeelongdouble conditional on
! 	-mlong-double-128.
! 	Move the -mabi=ieeelongdouble and -mabi=ibmlongdouble error checking
! 	from here...
! 	* common/config/rs6000/rs6000-common.cc (rs6000_handle_option):
! 	... to here.
  
! 2022-03-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104529
! 	* gimplify.cc (gimplify_init_constructor): Clear TREE_READONLY
! 	on automatic objects which will be runtime initialized.
  
! 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/100280
! 	PR middle-end/104132
! 	PR middle-end/104133
! 	* omp-low.cc (task_shared_vars): Rename to
! 	'make_addressable_vars'.  Adjust all users.
! 	(scan_sharing_clauses) <OMP_CLAUSE_MAP> Use it for
! 	'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE' DECLs, too.
  
! 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/100280
! 	* tree.h (OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE): New.
! 	* tree-core.h: Document it.
! 	* omp-low.cc (scan_sharing_clauses) <OMP_CLAUSE_MAP>: Handle
! 	'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE'.
! 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
! 	Set 'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE' instead of
! 	'TREE_ADDRESSABLE'.
  
! 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/100280
! 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
! 	Add diagnostic: "note: OpenACC 'kernels' decomposition: variable
! 	'[...]' declared in block made addressable".
  
! 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	PR middle-end/100400
! 	PR middle-end/103836
! 	PR middle-end/104061
! 	* omp-oacc-kernels-decompose.cc (decompose_kernels_region_body):
! 	Catch 'GIMPLE_DEBUG'.
  
! 2022-03-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/104627
! 	* tree.cc (warn_deprecated_use): For types prefer to use node
! 	and only use TYPE_MAIN_VARIANT (node) if TYPE_STUB_DECL (node) is
! 	NULL.
  
! 2022-03-04  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/104704
! 	* config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Always return
! 	a pseudo register.
  
! 2022-03-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/104761
! 	* gimple-ssa-warn-access.cc (pass_waccess::execute): Call
! 	mark_dfs_back_edges.
  
! 2022-03-03  Martin Liska  <mliska@suse.cz>
  
! 	* configure.ac: Use linker plug-in by default.
! 	* configure: Regenerate.
  
! 2022-03-03  Martin Liska  <mliska@suse.cz>
  
! 	* configure.ac: Now ld.mold support LTO plugin API, use it.
! 	* configure: Regenerate.
  
! 2022-03-03  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Add mptx=3.1.
  
! 2022-03-03  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104758
! 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Add misa=sm_30.
  
! 2022-03-03  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.h (ASM_SPEC): Add %{misa=sm_30:--no-verify}.
  
! 2022-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104757
! 	* gimplify.cc (gimplify_omp_loop): Call gimplify_expr rather than
! 	gimplify_omp_for.
! 	(gimplify_expr) <case OMP_SIMD>: Temporarily disable
! 	gimplify_ctxp->into_ssa around call to gimplify_omp_for.
  
! 2022-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104558
! 	* calls.cc (store_one_arg): When not calling emit_push_insn
! 	because size_rtx is const0_rtx, call at least anti_adjust_stack
! 	on arg->locate.alignment_pad if !argblock and the alignment might
! 	be non-zero.
  
! 2022-03-02  Alexandre Oliva  <oliva@adacore.com>
  
! 	* lra-constraints.cc (undo_optional_reloads): Recognize and
! 	drop insns of multi-word move sequences, tolerate removal
! 	iteration on an already-removed clobber, and refuse to
! 	substitute original pseudos into clobbers.
  
! 2022-03-02  Qing Zhao  <qing.zhao@oracle.com>
  
! 	PR middle-end/102276
! 	* common.opt (-Wtrivial-auto-var-init): New option.
! 	* doc/invoke.texi (-Wtrivial-auto-var-init): Document new option.
! 	(-ftrivial-auto-var-init): Update option;
! 	* gimplify.cc (emit_warn_switch_unreachable): New function.
! 	(warn_switch_unreachable_r): Rename to ...
! 	(warn_switch_unreachable_and_auto_init_r): This.
! 	(maybe_warn_switch_unreachable): Rename to ...
! 	(maybe_warn_switch_unreachable_and_auto_init): This.
! 	(gimplify_switch_expr): Update calls to renamed function.
  
! 2022-03-02  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/104686
! 	* ira-color.cc (object_conflicts_with_allocno_p): New function
! 	using a bitvector test instead of iterating when possible.
! 	(allocnos_conflict_p): Choose the best allocno to iterate over
! 	object conflicts.
! 	(update_conflict_hard_regno_costs): Do allocnos_conflict_p test
! 	last.
  
! 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* cfg.cc (dump_edge_info): Dump goto_locus if present.
  
! 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/104589
! 	* cfgrtl.cc (fixup_reorder_chain): Use loc_equal instead of direct
! 	INSN_LOCATION comparison with goto_locus.
  
! 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree-ssa-strlen.cc (strlen_pass::handle_assign,
! 	strlen_pass::before_dom_children): Comment spelling fixes.
  
! 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* ipa-modref-tree.cc (modref_access_node::contains,
! 	modref_access_node::closer_pair_p, modref_access_node::insert,
! 	modref_access_node::insert_kill): Comment spelling fixes.
! 	* ipa-modref.cc: Likewise.
! 	(modref_summary::finalize, ignore_nondeterminism_p,
! 	class modref_access_analysis,
! 	modref_access_analysis::set_side_effects,
! 	modref_access_analysis::set_nondeterministic,
! 	modref_access_analysis::record_global_memory_load,
! 	modref_access_analysis::propagate, modref_access_analysis::analyze,
! 	struct escape_point, class modref_lattice, modref_lattice::merge,
! 	modref_lattice::merge_deref, class modref_eaf_analysis,
! 	modref_eaf_analysis::merge_call_lhs_flags,
! 	modref_eaf_analysis::analyze_ssa_name, modref_eaf_analysis::propagate,
! 	modref_eaf_analysis::record_escape_points, remap_kills,
! 	update_escape_summary, remove_useless_summaries,
! 	ipa_merge_modref_summary_after_inlining, pass_ipa_modref::execute):
! 	Likewise.
! 	* ipa-modref.h (struct modref_summary, interposable_eaf_flags):
! 	Likewise.
! 	* ipa-modref-tree.h (enum modref_special_parms,
! 	struct modref_access_node): Likewise.
  
! 2022-03-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104715
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses): Don't
! 	unnecessarily test if ptr is a SSA_NAME, it has to be.  Only push lhs
! 	of a call if gimple_call_return_arg is equal to ptr, not just when it
! 	is non-NULL.
  
! 2022-03-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimple-ssa-warn-access.cc (warn_string_no_nul,
! 	maybe_warn_nonstring_arg, fndecl_alloc_p, new_delete_mismatch_p,
! 	matching_alloc_calls_p, maybe_warn_alloc_args_overflow,
! 	pass_waccess::check_alloca, pass_waccess::check_strcat,
! 	memmodel_to_uhwi, fntype_argno_type,
! 	pass_waccess::maybe_check_access_sizes,
! 	pass_waccess::check_call_access,
! 	pass_waccess::maybe_check_dealloc_call, pass_waccess::check_stmt):
! 	Comment spelling fixes.
  
! 2022-03-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104716
! 	* tree-loop-distribution.cc (find_seed_stmts_for_distribution):
! 	Check if we can copy the loop.
  
! 2022-03-01  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR middle-end/104721
! 	* cfgexpand.cc (expand_gimple_basic_block): Clear
! 	currently_expanding_gimple_stmt when returning inside the loop.
  
! 2022-03-01  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/104533
! 	* multiple_target.cc (get_attr_len): Move to tree.c.
! 	(expand_target_clones): Remove single value checking.
! 	* tree.cc (get_target_clone_attr_len): New fn.
! 	* tree.h (get_target_clone_attr_len): Likewise.
  
! 2022-03-01  Martin Liska  <mliska@suse.cz>
  
! 	PR gcov-profile/104677
! 	* doc/invoke.texi: Document more .gcda file name generation.
  
! 2022-03-01  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/102429
! 	* config/nvptx/nvptx.cc (nvptx_gen_shuffle): Handle DCmode and CDImode.
! 	* config/nvptx/nvptx.md
! 	(define_predicate "nvptx_register_or_complex_di_df_register_operand"):
! 	New predicate.
! 	(define_expand "omp_simt_xchg_bfly", define_expand "omp_simt_xchg_idx"):
! 	Use nvptx_register_or_complex_di_df_register_operand.
  
! 2022-03-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config.gcc (nvptx*-*-*): Add nvptx/nvptx-gen.opt to extra_options.
! 	* config/nvptx/gen-copyright.sh: New file.
! 	* config/nvptx/gen-h.sh: New file.
! 	* config/nvptx/gen-opt.sh: New file.
! 	* config/nvptx/nvptx.h (TARGET_SM35, TARGET_SM53, TARGET_SM70)
! 	(TARGET_SM75, TARGET_SM80): Move ...
! 	* config/nvptx/nvptx-gen.h: ... here.  New file, generate.
! 	* config/nvptx/nvptx.opt (Enum ptx_isa): Move ...
! 	* config/nvptx/nvptx-gen.opt: ... here.  New file, generate.
! 	* config/nvptx/t-nvptx ($(srcdir)/config/nvptx/nvptx-gen.h)
! 	($(srcdir)/config/nvptx/nvptx-gen.opt): New make target.
  
! 2022-03-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/gen-omp-device-properties.sh: New file.
! 	* config/nvptx/t-omp-device: Use gen-omp-device-properties.sh.
  
! 2022-03-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx-sm.def: New file.
! 	* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Use nvptx-sm.def.
! 	* config/nvptx/nvptx-opts.h (enum ptx_isa): Same.
! 	* config/nvptx/nvptx.cc (sm_version_to_string)
! 	(nvptx_omp_device_kind_arch_isa): Same.
  
! 2022-03-01  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	PR rtl-optimization/104154
! 	* config/arc/arc.cc (gen_compare_reg):  Return the CC-mode
! 	comparison ifcvt passed us.
  
! 2022-03-01  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	PR target/104664
! 	* config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
! 	  Use vec_setv8hf_0 for HF to V8HFmode move instead of subreg.
  
! 2022-02-28  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR tree-optimization/91384
! 	* config/i386/i386.md (peephole2): Eliminate final testl insn
! 	from the sequence *movsi_internal, *negsi_1, *cmpsi_ccno_1 by
! 	transforming using *negsi_2 for the negation.
  
! 2022-02-28  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR middle-end/80270
! 	* expmed.cc (extract_integral_bit_field): If OP0 is a hard
! 	register, copy it to a pseudo before calling simplify_gen_subreg.
  
! 2022-02-28  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/104637
! 	* lra-assigns.cc (lra_split_hard_reg_for): Split hard regs as many
! 	as possible on one subpass.
  
! 2022-02-28  Qing Zhao  <qing.zhao@oracle.com>
  
! 	PR middle-end/104550
! 	* gimple-fold.cc (clear_padding_flush): Suppress warnings for new
! 	created uses.
  
! 2022-02-28  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/104648
! 	* main.cc (main): Use flag_checking instead of CHECKING_P
! 	and run toplev::finalize only if there is not error seen.
  
! 2022-02-28  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-pre.cc (compute_avail): Revert part of last change.
  
! 2022-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104700
! 	* tree-ssa-pre.cc (get_or_alloc_expr_for): Remove and inline
! 	into ...
! 	(find_or_generate_expression): ... here, simplifying code.
  
! 2022-02-28  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add
! 	PTX_VERSION_default.
! 	* config/nvptx/nvptx.cc (handle_ptx_version_option): Handle
! 	PTX_VERSION_default.
! 	* config/nvptx/nvptx.opt: Add EnumValue "_" / PTX_VERSION_default.
  
! 2022-02-28  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/104686
! 	* ira-int.h (minmax_set_iter_cond): Use ctz_hwi to elide loop
! 	skipping bits that are zero.
! 	(ira_object_conflict_iter_cond): Likewise.
  
! 2022-02-28  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	* config/i386/avx512fintrin.h (_MM_TERNLOG_ENUM): New enum.
! 	(_mm512_ternarylogic_epi64): Truncate imm to unsigned
! 	char to avoid error when using ~enum as parameter.
! 	(_mm512_mask_ternarylogic_epi64): Likewise.
! 	(_mm512_maskz_ternarylogic_epi64): Likewise.
! 	(_mm512_ternarylogic_epi32): Likewise.
! 	(_mm512_mask_ternarylogic_epi32): Likewise.
! 	(_mm512_maskz_ternarylogic_epi32): Likewise.
! 	* config/i386/avx512vlintrin.h (_mm256_ternarylogic_epi64):
! 	Adjust imm param type to unsigned char.
! 	(_mm256_mask_ternarylogic_epi64): Likewise.
! 	(_mm256_maskz_ternarylogic_epi64): Likewise.
! 	(_mm256_ternarylogic_epi32): Likewise.
! 	(_mm256_mask_ternarylogic_epi32): Likewise.
! 	(_mm256_maskz_ternarylogic_epi32): Likewise.
! 	(_mm_ternarylogic_epi64): Likewise.
! 	(_mm_mask_ternarylogic_epi64): Likewise.
! 	(_mm_maskz_ternarylogic_epi64): Likewise.
! 	(_mm_ternarylogic_epi32): Likewise.
! 	(_mm_mask_ternarylogic_epi32): Likewise.
! 	(_mm_maskz_ternarylogic_epi32): Likewise.
  
! 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
! 	    Marc Glisse  <marc.glisse@inria.fr>
  
! 	PR tree-optimization/104675
! 	* match.pd (t * 2U / 2 -> t & (~0 / 2), t / 2U * 2 -> t & ~1):
! 	Restrict simplifications to INTEGRAL_TYPE_P.
  
! 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104681
! 	* config/rs6000/vector.md (movmisalign<mode>): Use rs6000_emit_move.
  
! 2022-02-25  Claudiu Zissulescu  <claziss@synopsys.com>
  
! 	* config/arc/arc.cc (gen_compare_reg): Return NULL_RTX if the
! 	comparison is not valid.
! 	* config/arc/arc.md (movsicc): Fail if comparison is not valid.
! 	(movdicc): Likewise.
! 	(movsfcc): Likewise.
! 	(movdfcc): Likewise.
  
! 2022-02-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103037
! 	* tree-ssa-sccvn.h (alloc_vn_nary_op_noinit): Declare.
! 	(vn_nary_length_from_stmt): Likewise.
! 	(init_vn_nary_op_from_stmt): Likewise.
! 	(vn_nary_op_compute_hash): Likewise.
! 	* tree-ssa-sccvn.cc (alloc_vn_nary_op_noinit): Export.
! 	(vn_nary_length_from_stmt): Likewise.
! 	(init_vn_nary_op_from_stmt): Likewise.
! 	(vn_nary_op_compute_hash): Likewise.
! 	* tree-ssa-pre.cc (pre_expr_obstack): New obstack.
! 	(get_or_alloc_expr_for_nary): Pass in the value-id to use,
! 	(re-)compute the hash value and if the expression is not
! 	found allocate it from pre_expr_obstack.
! 	(phi_translate_1): Do not insert the NARY found in the
! 	VN tables but build a PRE expression from the valueized
! 	NARY with the value-id we eventually found.
! 	(find_or_generate_expression): Assert we have an entry
! 	for constant values.
! 	(compute_avail): Insert not valueized expressions into
! 	EXP_GEN using the value-id from the VN tables.
! 	(init_pre): Allocate pre_expr_obstack.
! 	(fini_pre): Free pre_expr_obstack.
  
! 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104674
! 	* config/i386/i386.h (enum ix86_stack_slot): Add SLOT_FLOATxFDI_387.
! 	* config/i386/i386.md (splitter to floatdi<mode>2_i387_with_xmm): Use
! 	SLOT_FLOATxFDI_387 rather than SLOT_TEMP.
  
! 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	* warning-control.cc (get_nowarn_spec): Comment spelling fix.
  
! 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104679
! 	* internal-fn.cc (expand_SPACESHIP): Call do_pending_stack_adjust.
  
! 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104675
! 	* match.pd (-A - 1 -> ~A, -1 - A -> ~A): Don't simplify for
! 	COMPLEX_TYPE.
  
! 2022-02-25  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR target/104121
! 	PR target/103302
! 	* expr.cc (emit_move_multi_word): Restore clobbers during LRA.
  
! 2022-02-25  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR middle-end/104540
! 	* dwarf2cfi.cc (cfi_oprnd_equal_p): Cope with NULL
! 	dw_cfi_cfa_loc.
  
! 2022-02-25  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR tree-optimization/103856
! 	* gimple-harden-conditionals.cc (non_eh_succ_edge): Enable the
! 	eh edge to be requested through an extra parameter.
! 	(pass_harden_compares::execute): Copy PHI args in the EH dest
! 	block for the new EH edge added for the inverted compare.
  
! 2022-02-24  Palmer Dabbelt  <palmer@rivosinc.com>
  
! 	* doc/invoke.texi (RISC-V -mcmodel=medany): Document the degree
! 	of position independence that -mcmodel=medany affords.
  
! 2022-02-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	PR target/104656
! 	* configure.ac: --disable-gcov if targetting bpf-*.
! 	* configure: Regenerate.
  
! 2022-02-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104676
! 	* tree-loop-distribution.cc (loop_distribution::execute):
! 	Do a full scev_reset.
  
! 2022-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104601
! 	* tree-ssa-sccvn.cc (visit_reference_op_call): For calls with
! 	non-SSA_NAME lhs value number vdef to itself instead of e.g. the
! 	vuse value number.
  
! 2022-02-24  Tom de Vries  <tdevries@suse.de>
! 	    Tobias Burnus  <tobias@codesourcery.com>
  
! 	* config/nvptx/nvptx.cc (nvptx_omp_device_kind_arch_isa): Handle
! 	sm_70, sm_75 and sm_80.
! 	* config/nvptx/t-omp-device: Add sm_53, sm_70, sm_75 and sm_80.
  
! 2022-02-24  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.md (define_insn "rotlsi3", define_insn
! 	"rotrsi3"): New define_insn.
  
! 2022-02-24  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (gen_comment): Use
! 	DECL_SOURCE_LOCATION (cfun->decl) instead of cfun->function_start_locus.
  
! 2022-02-24  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/sse.md (<code>v1ti3): Add suffix and replace
! 	isa attr of alternative 2 from avx to avx512vl.
  
! 2022-02-23  Richard Biener  <rguenther@suse.de>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104644
! 	* doc/match-and-simplify.texi: Amend ! documentation.
! 	* genmatch.cc (expr::gen_transform): Code-generate ! support
! 	for GENERIC.
! 	(parser::parse_expr): Allow ! for GENERIC.
! 	* match.pd (cmp (bswap @0) INTEGER_CST@1): Use ! modifier on
! 	bswap.
  
! 2022-02-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/101636
! 	* tree-vect-slp.cc (vect_print_slp_tree): Dump the
! 	vector type of the node.
! 	(vect_slp_analyze_operations): Make sure the CTOR
! 	is vectorized with an expected type.
! 	(vectorize_slp_instance_root_stmt): Revert r10-5979 fix.
  
! 2022-02-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/104633
! 	* gimple-warn-recursion.cc (pass_warn_recursion::find_function_exit):
! 	Don't warn about calls to corresponding builtin from extern inline
! 	gnu_inline wrappers.
  
! 2022-02-23  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR target/104489
! 	* config/nvptx/nvptx.md (*movhf_insn): Add subregs_ok attribute.
  
! 2022-02-23  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/arm/vfp.md (thumb2_movhi_vfp, thumb2_movhi_fp16): Fix
! 	typo.
  
! 2022-02-23  Cui,Lili  <lili.cui@intel.com>
  
! 	* doc/invoke.texi: Update documents for Intel architectures.
  
! 2022-02-22  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/i386/i386-expand.cc (ix86_expand_cmpxchg_loop): Restore
! 	bootstrap.
  
! 2022-02-22  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* omp-low.cc (omp_build_component_ref): Move function...
! 	* omp-general.cc (omp_build_component_ref): ... here.  Remove
! 	'static'.
! 	* omp-general.h (omp_build_component_ref): Declare function.
! 	* omp-oacc-neuter-broadcast.cc (oacc_build_component_ref): Remove
! 	function.
! 	(build_receiver_ref, build_sender_ref): Call
! 	'omp_build_component_ref' instead.
  
! 2022-02-22  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* omp-oacc-neuter-broadcast.cc (record_field_map_t): Further
! 	simplify.  Adjust all users.
  
! 2022-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
  
! 	PR target/88134
! 	* config/rs6000/rs6000.cc (atomic_hold_decl, atomic_clear_decl,
! 	atomic_update_decl): Add GTY markup.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* config/arm/arm.h (REG_CLASS_CONTENTS): Add VPR_REG to ALL_REGS.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/arm/arm-builtins.cc (CX_UNARY_UNONE_QUALIFIERS): Use
! 	predicate.
! 	(CX_BINARY_UNONE_QUALIFIERS): Likewise.
! 	(CX_TERNARY_UNONE_QUALIFIERS): Likewise.
! 	(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Delete.
! 	(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Delete.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Delete.
! 	* config/arm/arm_mve_builtins.def: Use predicated qualifiers.
! 	* config/arm/mve.md: Use VxBI instead of HI.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/arm/arm-builtins.cc (STRSBS_P_QUALIFIERS): Use predicate
! 	qualifier.
! 	(STRSBU_P_QUALIFIERS): Likewise.
! 	(LDRGBS_Z_QUALIFIERS): Likewise.
! 	(LDRGBU_Z_QUALIFIERS): Likewise.
! 	(LDRGBWBXU_Z_QUALIFIERS): Likewise.
! 	(LDRGBWBS_Z_QUALIFIERS): Likewise.
! 	(LDRGBWBU_Z_QUALIFIERS): Likewise.
! 	(STRSBWBS_P_QUALIFIERS): Likewise.
! 	(STRSBWBU_P_QUALIFIERS): Likewise.
! 	* config/arm/mve.md: Use VxBI instead of HI.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/arm/arm-builtins.cc (TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Change to ...
! 	(TERNOP_UNONE_UNONE_NONE_PRED_QUALIFIERS): ... this.
! 	(TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(TERNOP_UNONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
! 	(TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(TERNOP_NONE_NONE_IMM_PRED_QUALIFIERS): ... this.
! 	(TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Change to ...
! 	(TERNOP_NONE_NONE_UNONE_PRED_QUALIFIERS): ... this.
! 	(QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS): Change to ...
! 	(QUADOP_UNONE_UNONE_NONE_NONE_PRED_QUALIFIERS): ... this.
! 	(QUADOP_NONE_NONE_NONE_NONE_PRED_QUALIFIERS): New.
! 	(QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(QUADOP_NONE_NONE_NONE_IMM_PRED_QUALIFIERS): ... this.
! 	(QUADOP_UNONE_UNONE_UNONE_UNONE_PRED_QUALIFIERS): New.
! 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(QUADOP_UNONE_UNONE_NONE_IMM_PRED_QUALIFIERS): ... this.
! 	(QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(QUADOP_NONE_NONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(QUADOP_UNONE_UNONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
! 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Change to ...
! 	(QUADOP_UNONE_UNONE_UNONE_NONE_PRED_QUALIFIERS): ... this.
! 	(STRS_P_QUALIFIERS): Use predicate qualifier.
! 	(STRU_P_QUALIFIERS): Likewise.
! 	(STRSU_P_QUALIFIERS): Likewise.
! 	(STRSS_P_QUALIFIERS): Likewise.
! 	(LDRGS_Z_QUALIFIERS): Likewise.
! 	(LDRGU_Z_QUALIFIERS): Likewise.
! 	(LDRS_Z_QUALIFIERS): Likewise.
! 	(LDRU_Z_QUALIFIERS): Likewise.
! 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
! 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
! 	(BINOP_NONE_NONE_PRED_QUALIFIERS): New.
! 	(BINOP_UNONE_UNONE_PRED_QUALIFIERS): New.
! 	* config/arm/arm_mve_builtins.def: Use new predicated qualifiers.
! 	* config/arm/mve.md: Use MVE_VPRED instead of HI.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/arm/arm-builtins.cc (BINOP_UNONE_NONE_NONE_QUALIFIERS):
! 	Delete.
! 	(TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Change to ...
! 	(TERNOP_PRED_NONE_NONE_PRED_QUALIFIERS): ... this.
! 	(TERNOP_PRED_UNONE_UNONE_PRED_QUALIFIERS): New.
! 	* config/arm/arm_mve_builtins.def (vcmp*q_n_, vcmp*q_m_f): Use new
! 	predicated qualifiers.
! 	* config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>)
! 	(mve_vcmp*q_m_f<mode>): Use MVE_VPRED instead of HI.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	* config/arm/arm-protos.h (arm_get_mask_mode): New prototype.
! 	(arm_expand_vector_compare): Update prototype.
! 	* config/arm/arm.cc (TARGET_VECTORIZE_GET_MASK_MODE): New.
! 	(arm_vector_mode_supported_p): Add support for VxBI modes.
! 	(arm_expand_vector_compare): Remove useless generation of vpsel.
! 	(arm_expand_vcond): Fix select operands.
! 	(arm_get_mask_mode): New.
! 	* config/arm/mve.md (vec_cmp<mode><MVE_vpred>): New.
! 	(vec_cmpu<mode><MVE_vpred>): New.
! 	(vcond_mask_<mode><MVE_vpred>): New.
! 	* config/arm/vec-common.md (vec_cmp<mode><v_cmp_result>)
! 	(vec_cmpu<mode><mode, vcond_mask_<mode><v_cmp_result>): Move to ...
! 	* config/arm/neon.md (vec_cmp<mode><v_cmp_result>)
! 	(vec_cmpu<mode><mode, vcond_mask_<mode><v_cmp_result>): ... here
! 	and disable for MVE.
! 	* doc/sourcebuild.texi (arm_mve): Document new effective-target.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/arm/arm-builtins.cc (BINOP_PRED_UNONE_UNONE_QUALIFIERS)
! 	(BINOP_PRED_NONE_NONE_QUALIFIERS)
! 	(TERNOP_NONE_NONE_NONE_PRED_QUALIFIERS)
! 	(TERNOP_UNONE_UNONE_UNONE_PRED_QUALIFIERS): New.
! 	* config/arm/arm-protos.h (mve_bool_vec_to_const): New.
! 	* config/arm/arm.cc (arm_hard_regno_mode_ok): Handle new VxBI
! 	modes.
! 	(arm_mode_to_pred_mode): New.
! 	(arm_expand_vector_compare): Use the right VxBI mode instead of
! 	HI.
! 	(arm_expand_vcond): Likewise.
! 	(simd_valid_immediate): Handle MODE_VECTOR_BOOL.
! 	(mve_bool_vec_to_const): New.
! 	(neon_make_constant): Call mve_bool_vec_to_const when needed.
! 	* config/arm/arm_mve_builtins.def (vcmpneq_, vcmphiq_, vcmpcsq_)
! 	(vcmpltq_, vcmpleq_, vcmpgtq_, vcmpgeq_, vcmpeqq_, vcmpneq_f)
! 	(vcmpltq_f, vcmpleq_f, vcmpgtq_f, vcmpgeq_f, vcmpeqq_f, vpselq_u)
! 	(vpselq_s, vpselq_f): Use new predicated qualifiers.
! 	* config/arm/constraints.md (DB): New.
! 	* config/arm/iterators.md (MVE_7, MVE_7_HI): New mode iterators.
! 	(MVE_VPRED, MVE_vpred): New attribute iterators.
! 	* config/arm/mve.md (@mve_vcmp<mve_cmp_op>q_<mode>)
! 	(@mve_vcmp<mve_cmp_op>q_f<mode>, @mve_vpselq_<supf><mode>)
! 	(@mve_vpselq_f<mode>): Use MVE_VPRED instead of HI.
! 	(@mve_vpselq_<supf>v2di): Define separately.
! 	(mov<mode>): New expander for VxBI modes.
! 	* config/arm/vfp.md (thumb2_movhi_vfp, thumb2_movhi_fp16): Use
! 	MVE_7_HI iterator and add support for DB constraint.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
! 	    Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/100757
! 	PR target/101325
! 	* config/aarch64/aarch64-modes.def (VNx16BI, VNx8BI, VNx4BI,
! 	VNx2BI): Update definition.
! 	* config/arm/arm-builtins.cc (arm_init_simd_builtin_types): Add new
! 	simd types.
! 	(arm_init_builtin): Map predicate vectors arguments to HImode.
! 	(arm_expand_builtin_args): Move HImode predicate arguments to VxBI
! 	rtx. Move return value to HImode rtx.
! 	* config/arm/arm-builtins.h (arm_type_qualifiers): Add qualifier_predicate.
! 	* config/arm/arm-modes.def (B2I, B4I, V16BI, V8BI, V4BI): New modes.
! 	* config/arm/arm-simd-builtin-types.def (Pred1x16_t,
! 	Pred2x8_t,Pred4x4_t): New.
! 	* emit-rtl.cc (init_emit_once): Handle all boolean modes.
! 	* genmodes.cc (mode_data): Add boolean field.
! 	(blank_mode): Initialize it.
! 	(make_complex_modes): Fix handling of boolean modes.
! 	(make_vector_modes): Likewise.
! 	(VECTOR_BOOL_MODE): Use new COMPONENT parameter.
! 	(make_vector_bool_mode): Likewise.
! 	(BOOL_MODE): New.
! 	(make_bool_mode): New.
! 	(emit_insn_modes_h): Fix generation of boolean modes.
! 	(emit_class_narrowest_mode): Likewise.
! 	* machmode.def: (VECTOR_BOOL_MODE): Document new COMPONENT
! 	parameter.  Use new BOOL_MODE instead of FRACTIONAL_INT_MODE to
! 	define BImode.
! 	* rtx-vector-builder.cc (rtx_vector_builder::find_cached_value):
! 	Fix handling of constm1_rtx for VECTOR_BOOL.
! 	* simplify-rtx.cc (native_encode_rtx): Fix support for VECTOR_BOOL.
! 	(native_decode_vector_rtx): Likewise.
! 	(test_vector_ops_duplicate): Skip vec_merge test
! 	with vectors of booleans.
! 	* varasm.cc (output_constant_pool_2): Likewise.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Use V_elem mode
! 	for operand 1.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* config/arm/arm.cc (arm_class_likely_spilled_p): Handle VPR_REG.
  
! 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* config/arm/arm.h (reg_class): Add GENERAL_AND_VPR_REGS.
! 	(REG_CLASS_NAMES): Likewise.
! 	(REG_CLASS_CONTENTS): Likewise.
! 	(CLASS_MAX_NREGS): Handle VPR.
! 	* config/arm/arm.cc (arm_hard_regno_nregs): Handle VPR.
  
! 2022-02-22  Tobias Burnus  <tobias@codesourcery.com>
! 	    Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Handle SM70.
! 	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm):
! 	Likewise.
! 	* config/nvptx/nvptx.opt (misa): Add sm_70 alias PTX_ISA_SM70.
  
! 2022-02-22  Tobias Burnus  <tobias@codesourcery.com>
! 	    Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.opt (mptx): Add 6.0 alias PTX_VERSION_6_0.
! 	* doc/invoke.texi (-mptx): Update for new values and defaults.
  
! 2022-02-22  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (gen_comment): New function.
! 	(workaround_uninit_method_1, workaround_uninit_method_2)
! 	(workaround_uninit_method_3): : Use gen_comment.
! 	* config/nvptx/nvptx.opt (mptx-comment): New option.
  
! 2022-02-22  Richard Biener  <rguenther@suse.de>
  
! 	* tree-vect-slp.cc (vect_build_slp_tree_2): Dump the def used
! 	for a splat.
  
! 2022-02-22  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	* fold-const.cc (ctor_single_nonzero_element): New function to
! 	return the single non-zero element of a (vector) constructor.
! 	* fold-const.h (ctor_single_nonzero_element): Prototype here.
! 	* match.pd (reduc (constructor@0)): Simplify reductions of a
! 	constructor containing a single non-zero element.
! 	(reduc (@0 op VECTOR_CST) ->  (reduc @0) op CONST): Simplify
! 	reductions of vector operations of the same operator with
! 	constant vector operands.
  
! 2022-02-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104604
! 	* gimple-range-fold.cc (adjust_imagpart_expr, adjust_realpart_expr):
! 	Only check if gimple_assign_rhs1 is COMPLEX_CST if
! 	gimple_assign_rhs_code is COMPLEX_CST.
  
! 2022-02-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104612
! 	* config/i386/i386-expand.cc (ix86_expand_copysign): Call force_reg
! 	on input operands before calling lowpart_subreg on it.  For output
! 	operand, use a vmode pseudo as destination and then move its lowpart
! 	subreg into operands[0] if lowpart_subreg fails on dest.
! 	(ix86_expand_xorsign): Likewise.
  
! 2022-02-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104582
! 	PR target/99881
! 	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
! 	Cost GPR to vector register moves for integer vector construction.
  
! 2022-02-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104582
! 	* tree-vectorizer.h (stmt_info_for_cost::node): New field.
! 	(vector_costs::add_stmt_cost): Add SLP node parameter.
! 	(dump_stmt_cost): Likewise.
! 	(add_stmt_cost): Likewise, new overload and adjust.
! 	(add_stmt_costs): Adjust.
! 	(record_stmt_cost): New overload.
! 	* tree-vectorizer.cc (dump_stmt_cost): Dump the SLP node.
! 	(vector_costs::add_stmt_cost): Adjust.
! 	* tree-vect-loop.cc (vect_estimate_min_profitable_iters):
! 	Adjust.
! 	* tree-vect-slp.cc (vect_prologue_cost_for_slp): Record
! 	the SLP node for costing.
! 	(vectorizable_slp_permutation): Likewise.
! 	* tree-vect-stmts.cc (record_stmt_cost): Adjust and add
! 	new overloads.
! 	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
! 	Adjust.
! 	* config/aarch64/aarch64.cc (aarch64_vector_costs::add_stmt_cost):
! 	Adjust.
! 	* config/rs6000/rs6000.cc (rs6000_vector_costs::add_stmt_cost):
! 	Adjust.
! 	(rs6000_cost_data::adjust_vect_cost_per_loop): Likewise.
  
! 2022-02-22  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104582
! 	* tree-vectorizer.h (add_stmt_cost): New overload.
! 	(record_stmt_cost): Likewise.
! 	* tree-vect-loop.cc (vect_compute_single_scalar_iteration_cost):
! 	Use add_stmt_costs.
! 	(vect_get_known_peeling_cost): Use new overloads.
! 	(vect_estimate_min_profitable_iters): Likewise.  Consistently
! 	use scalar_stmt for costing versioning checks.
! 	* tree-vect-stmts.cc (record_stmt_cost): New overload.
  
! 2022-02-22  Hongyu Wang  <hongyu.wang@intel.com>
  
! 	PR target/103069
! 	* config/i386/i386-expand.cc (ix86_expand_atomic_fetch_op_loop):
! 	Split atomic fetch and loop part.
! 	(ix86_expand_cmpxchg_loop): New expander for cmpxchg loop.
! 	* config/i386/i386-protos.h (ix86_expand_cmpxchg_loop): New
! 	prototype.
! 	* config/i386/sync.md (atomic_compare_and_swap<mode>): Call new
! 	expander under TARGET_RELAX_CMPXCHG_LOOP.
! 	(atomic_compare_and_swap<mode>): Likewise for doubleword modes.
  
! 2022-02-21  Dan Li  <ashimida@linux.alibaba.com>
  
! 	* config/aarch64/aarch64.cc (SLOT_REQUIRED):
! 	Change wb_candidate[12] to wb_push_candidate[12].
! 	(aarch64_layout_frame): Likewise, and
! 	change callee_adjust when scs is enabled.
! 	(aarch64_save_callee_saves):
! 	Change wb_candidate[12] to wb_push_candidate[12].
! 	(aarch64_restore_callee_saves):
! 	Change wb_candidate[12] to wb_pop_candidate[12].
! 	(aarch64_get_separate_components):
! 	Change wb_candidate[12] to wb_push_candidate[12].
! 	(aarch64_expand_prologue): Push x30 onto SCS before it's
! 	pushed onto stack.
! 	(aarch64_expand_epilogue): Pop x30 frome SCS, while
! 	preventing it from being popped from the regular stack again.
! 	(aarch64_override_options_internal): Add SCS compile option check.
! 	(TARGET_HAVE_SHADOW_CALL_STACK): New hook.
! 	* config/aarch64/aarch64.h (struct GTY): Add is_scs_enabled,
! 	wb_pop_candidate[12], and rename wb_candidate[12] to
! 	wb_push_candidate[12].
! 	* config/aarch64/aarch64.md (scs_push): New template.
! 	(scs_pop): Likewise.
! 	* doc/invoke.texi: Document -fsanitize=shadow-call-stack.
! 	* doc/tm.texi: Regenerate.
! 	* doc/tm.texi.in: Add hook have_shadow_call_stack.
! 	* flag-types.h (enum sanitize_code):
! 	Add SANITIZE_SHADOW_CALL_STACK.
! 	* opts.cc (parse_sanitizer_options): Add shadow-call-stack
! 	and exclude SANITIZE_SHADOW_CALL_STACK.
! 	* target.def: New hook.
! 	* toplev.cc (process_options): Add SCS compile option check.
! 	* ubsan.cc (ubsan_expand_null_ifn): Enum type conversion.
  
! 2022-02-21  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104440
! 	* config/nvptx/nvptx.cc (workaround_uninit_method_1)
! 	(workaround_uninit_method_2, workaround_uninit_method_3)
! 	(workaround_uninit): New function.
! 	(nvptx_reorg): Use workaround_uninit.
! 	* config/nvptx/nvptx.opt (minit-regs): New option.
  
! 2022-02-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR rtl-optimization/104498
! 	* alias.cc (compare_base_symbol_refs): Correct distance computation
! 	when swapping x and y.
  
! 2022-02-21  Andrew Pinski  <apinski@marvell.com>
  
! 	PR c/104506
! 	* tree-ssa.cc (tree_ssa_useless_type_conversion):
! 	Check the inner type before calling useless_type_conversion_p.
  
! 2022-02-19  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (nvptx_reorg_uniform_simt): Handle SET insn.
! 	* config/nvptx/nvptx.md
! 	(define_insn "nvptx_atomic_store<mode>"): Rename to ...
! 	(define_insn "nvptx_atomic_store_sm70<mode>"): This.
! 	(define_insn "nvptx_atomic_store<mode>"): New define_insn.
! 	(define_expand "atomic_store<mode>"): Handle rename.  Use
! 	nvptx_atomic_store instead of atomic_exchange.
  
! 2022-02-19  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (nvptx_reorg_uniform_simt): Handle all
! 	insns with atomic attribute.  Assert that all handled insns are
! 	PARALLELs.
! 	* config/nvptx/nvptx.md (define_insn "nvptx_atomic_store<mode>"):
! 	Set atomic attribute to false.
  
! 2022-02-19  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (nvptx_unisimt_handle_set): Change return
! 	type to bool.
! 	(nvptx_reorg_uniform_simt): Insert nvptx_uniform_warp_check or
! 	nvptx_warpsync, if necessary.
  
! 2022-02-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/102656
! 	* asan.cc (instrument_derefs): If inner is a RESULT_DECL and access is
! 	known to be within bounds, treat it like automatic variables.
! 	If instrumenting access and inner is {VAR,PARM,RESULT}_DECL from
! 	current function and !TREE_STATIC which is not TREE_ADDRESSABLE, mark
! 	it addressable.
  
! 2022-02-18  Pat Haugen  <pthaugen@linux.ibm.com>
  
! 	* config/rs6000/rs6000.opt (mpower10-fusion): Mark Undocumented.
! 	(mpower10-fusion-ld-cmpi, mpower10-fusion-2logical,
! 	mpower10-fusion-logical-add, mpower10-fusion-add-logical,
! 	mpower10-fusion-2add, mpower10-fusion-2store): Remove.
! 	* config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER,
! 	OTHER_P9_VECTOR_MASKS): Remove Power10 fusion sub-options.
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal,
! 	power10_sched_reorder): Likewise.
! 	* config/rs6000/genfusion.pl (gen_ld_cmpi_p10, gen_logical_addsubf,
! 	gen_addadd): Likewise
! 	* config/rs6000/fusion.md: Regenerate.
  
! 2022-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104257
! 	PR target/104598
! 	* config/rs6000/mm_malloc.h (_mm_malloc): Call posix_memalign
! 	rather than __posix_memalign.
  
! 2022-02-18  Richard Biener  <rguenther@suse.de>
  
! 	PR target/104581
! 	* config/i386/i386.cc (ix86_avx_u128_mode_source): Remove.
! 	(ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY instead
! 	of calling ix86_avx_u128_mode_source which would eventually
! 	have returned AVX_U128_ANY in some very special case.
  
! 2022-02-18  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/96881
! 	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Comment
! 	CLOBBER handling.
! 	(control_parents_preserved_p): New function.
! 	(eliminate_unnecessary_stmts): Check that we preserved control
! 	parents before retaining a CLOBBER.
! 	(perform_tree_ssa_dce): Pass down aggressive flag
! 	to eliminate_unnecessary_stmts.
  
! 2022-02-17  Jason Merrill  <jason@redhat.com>
  
! 	* tree.cc (warn_deprecated_use): Look for TYPE_STUB_DECL
! 	on TYPE_MAIN_VARIANT.
  
! 2022-02-17  Paul A. Clarke  <pc@us.ibm.com>
  
! 	PR target/104257
! 	* config/rs6000/bmi2intrin.h: Uglify local variables.
! 	* config/rs6000/emmintrin.h: Likewise.
! 	* config/rs6000/mm_malloc.h: Likewise.
! 	* config/rs6000/mmintrin.h: Likewise.
! 	* config/rs6000/pmmintrin.h: Likewise.
! 	* config/rs6000/smmintrin.h: Likewise.
! 	* config/rs6000/tmmintrin.h: Likewise.
! 	* config/rs6000/xmmintrin.h: Likewise.
  
! 2022-02-17  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	PR target/104335
! 	* config/rs6000/rs6000.cc (rs6000_emit_int_cmove): Return false
! 	if the expected comparison's first operand is of mode MODE_CC.
  
! 2022-02-17  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/104447
! 	* lra-constraints.cc (spill_hard_reg_in_range): Initiate ignore
! 	hard reg set by lra_no_alloc_regs.
  
! 2022-02-17  liuhongt  <hongtao.liu@intel.com>
  
! 	PR tree-optimization/104551
! 	PR tree-optimization/103771
! 	* match.pd (cond_expr_convert_p): Add types_match check when
! 	convert is extension.
! 	* tree-vect-patterns.cc
! 	(gimple_cond_expr_convert_p): Adjust comments.
! 	(vect_recog_cond_expr_convert_pattern): Ditto.
  
! 2022-02-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/104557
! 	* valtrack.cc (debug_lowpart_subreg): Don't call gen_rtx_raw_SUBREG
! 	if expr has VOIDmode.
  
! 2022-02-17  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/cpuid.h (bit_MPX): Removed.
! 	(bit_BNDREGS): Ditto.
! 	(bit_BNDCSR): Ditto.
  
! 2022-02-17  Michael Meissner  <meissner@the-meissners.org>
  
! 	PR target/99708
! 	* config/rs6000/rs6000-c.cc (rs6000_cpu_cpp_builtins): Define
! 	__SIZEOF_IBM128__ if the IBM 128-bit long double type is created.
! 	Define __SIZEOF_FLOAT128__ if the IEEE 128-bit floating point type
! 	is created.
  
! 2022-02-16  Andrew MacLeod  <amacleod@redhat.com>
  
! 	* gimple-range-gori.cc (gori_compute::condexpr_adjust): Use
! 	range_compatible_p instead of direct type comparison.
  
! 2022-02-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/104544
! 	* combine.cc (try_combine): When looking for insn whose links
! 	should be updated from i3 to i2, don't stop on debug insns, instead
! 	skip over them.
  
! 2022-02-16  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/100056
! 	* config/aarch64/iterators.md (LOGICAL_OR_PLUS): New iterator.
! 	* config/aarch64/aarch64.md: Extend the PR100056 patterns
! 	to handle plus in the same way as ior, if the operands have
! 	no set bits in common.
  
! 2022-02-15  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/104526
! 	* gimple-range-fold.cc (fold_using_range::range_of_cond_expr): Call
! 	new routine.
! 	* gimple-range-gori.cc (range_def_chain::get_def_chain): Force a build
! 	of dependency chain if there isn't one.
! 	(gori_compute::condexpr_adjust): New.
! 	* gimple-range-gori.h (class gori_compute): New prototype.
  
! 2022-02-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/100874
! 	* config/aarch64/aarch64-protos.h (aarch64_maxmin_plus_const):
! 	Declare.
! 	* config/aarch64/aarch64.cc (aarch64_maxmin_plus_const): New function.
! 	* config/aarch64/aarch64.md (*aarch64_minmax_plus): New pattern.
  
! 2022-02-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vectorizer.h (vect_scalar_ops_slice): New struct.
! 	(vect_scalar_ops_slice_hash): Likewise.
! 	(vect_scalar_ops_slice::op): New function.
! 	* tree-vect-slp.cc (vect_scalar_ops_slice::all_same_p): New function.
! 	(vect_scalar_ops_slice_hash::hash): Likewise.
! 	(vect_scalar_ops_slice_hash::equal): Likewise.
! 	(vect_prologue_cost_for_slp): Check for duplicate vectors.
! 	* config/aarch64/aarch64.cc
! 	(aarch64_vector_costs::m_stp_sequence_cost): New member variable.
! 	(aarch64_aligned_constant_offset_p): New function.
! 	(aarch64_stp_sequence_cost): Likewise.
! 	(aarch64_vector_costs::add_stmt_cost): Handle new STP heuristic.
! 	(aarch64_vector_costs::finish_cost): Likewise.
  
! 2022-02-15  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vect-slp.cc (vect_bb_vectorization_profitable_p): Fix
! 	use after free.
  
! 2022-02-15  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104543
! 	* gimple-loop-jam.cc (unroll_jam_possible_p): Check outer loop exits
! 	come after the inner loop.
  
! 2022-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104536
! 	* config/i386/host-cygwin.cc (cygwin_gt_pch_get_address): Use
! 	cannot instead of can%'t in diagnostics.  Formatting fixes.
  
! 2022-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104522
! 	* fold-const.h (native_interpret_real): Declare.
! 	* fold-const.cc (native_interpret_real): No longer static.  Don't
! 	perform MODE_COMPOSITE_P verification here.
! 	(native_interpret_expr) <case REAL_TYPE>: But perform it here instead
! 	for all modes.
! 	* gimple-fold.cc (clear_padding_type): Call native_interpret_real
! 	instead of native_interpret_expr.
! 	* simplify-rtx.cc (simplify_immed_subreg): Perform the native_encode_rtx
! 	and comparison verification for all FLOAT_MODE_P modes, not just
! 	MODE_COMPOSITE_P.
  
! 2022-02-15  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104519
! 	* fold-const.cc (multiple_of_p): Remove never true condition.
! 	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Use
! 	the appropriate types for determining whether the difference
! 	of final and base is a multiple of the step.
  
! 2022-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/104517
! 	* omp-low.cc (task_cpyfns): New variable.
! 	(delete_omp_context): Don't call finalize_task_copyfn from here.
! 	(create_task_copyfn): Push task_stmt into task_cpyfns.
! 	(execute_lower_omp): Call finalize_task_copyfn here on entries from
! 	task_cpyfns vector and release the vector.
  
! 2022-02-14  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/104355
! 	* doc/invoke.texi (-Warray-bounds): Update documentation.
  
! 2022-02-14  Michael Meissner  <meissner@the-meissners.org>
  
! 	PR target/104253
! 	* config/rs6000/rs6000.cc (init_float128_ibm): Update the
! 	conversion functions used to convert IFmode types.
  
! 2022-02-14  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.cc (gcn_expand_reduc_scalar): Use force_reg.
  
! 2022-02-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104528
! 	* tree-ssa.h (find_released_ssa_name): Declare.
! 	* tree-ssa.cc (find_released_ssa_name): Export.
! 	* cfgloop.cc (verify_loop_structure): Look for released
! 	SSA names in loops nb_iterations.
! 	* tree-ssa-dse.cc (pass_dse::execute): Release number of iteration
! 	estimates.
  
! 2022-02-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104511
! 	* tree-ssa-forwprop.cc (simplify_vector_constructor): Avoid
! 	touching DFP <-> FP conversions.
  
! 2022-02-14  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104497
! 	* gimplify.cc (gimplify_compound_lval): Make sure the
! 	base is a non-register if needed and possible.
  
! 2022-02-13  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/103771
! 	* match.pd (cond_expr_convert_p): New match.
! 	* tree-vect-patterns.cc (gimple_cond_expr_convert_p): Declare.
! 	(vect_recog_cond_expr_convert_pattern): New.
  
! 2022-02-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/104449
! 	* asan.cc: Include tree-eh.h.
! 	(handle_builtin_alloca): Handle the case when __builtin_alloca or
! 	__builtin_alloca_with_align can throw.
  
! 2022-02-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104502
! 	* config/i386/i386.md (cvtsd2ss splitter): If operands[1] is xmm16+
! 	and AVX512VL isn't available, move operands[1] to operands[0] first.
  
! 2022-02-12  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/79754
! 	* config/i386/i386.cc (type_natural_mode):
! 	Skip decimal float vector modes.
  
! 2022-02-11  Iain Sandoe  <iain@sandoe.co.uk>
! 	    Vladimir Makarov  <vmakarov@redhat.com>
  
! 	PR target/104117
! 	* config/rs6000/rs6000.cc (darwin_rs6000_legitimate_lo_sum_const_p):
! 	Check for UNSPEC_MACHOPIC_OFFSET wrappers on symbolic addresses when
! 	emitting PIC code.
! 	(legitimate_lo_sum_address_p): Likewise.
! 	* lra-constraints.cc (process_address_1): Do not attempt to emit a reg
! 	load from an invalid lo_sum address.
  
! 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104499
! 	* match.pd ((X & Y) CMP 0 -> X CMP2 ~Y): Use view_convert instead
! 	of convert.
  
! 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree.cc (build_common_builtin_nodes): Fix up formatting in
! 	__builtin_clear_padding decl creation.
! 	* gimplify.cc (gimple_add_padding_init_for_auto_var): Encode
! 	for_auto_init in the value of 2nd BUILT_IN_CLEAR_PADDING
! 	argument rather than in 3rd argument.
! 	(gimplify_call_expr): Likewise.  Fix up comment formatting.
! 	* gimple-fold.cc (gimple_fold_builtin_clear_padding): Expect
! 	2 arguments instead of 3, take for_auto_init from the value
! 	of 2nd argument.
  
! 2022-02-11  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR rtl-optimization/104400
! 	* lra-constraints.cc (process_alt_operands): Don't make union of
! 	this_alternative_exclude_start_hard_regs when reg class in insn
! 	alternative covers other reg classes in the same alternative.
  
! 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104446
! 	* combine.cc (subst): Don't substitute CONST_INTs into RTX_AUTOINC
! 	operands.
  
! 2022-02-11  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104496
! 	* internal-fn.cc (vectorized_internal_fn_supported_p):
! 	Bail out for integer mode vector types.
  
! 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/104459
! 	* df-scan.cc (df_insn_change_bb): Don't call df_set_bb_dirty when
! 	moving DEBUG_INSNs between bbs.
  
! 2022-02-11  liuhongt  <hongtao.liu@intel.com>
  
! 	PR tree-optimization/104479
! 	* match.pd (uncond_op + vec_cond -> cond_op): Add single_use
! 	for the dest of uncond_op.
  
! 2022-02-11  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104456
! 	* config/nvptx/nvptx.cc (prevent_branch_around_nothing): Handle asm
! 	insn.
  
! 2022-02-10  Qing Zhao  <qing.zhao@oracle.com>
  
! 	PR middle-end/100775
! 	* function.cc (gen_call_used_regs_seq): Call
! 	df_update_exit_block_uses when updating df.
  
! 2022-02-10  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/104469
! 	* config/i386/sse.md (vec_unpacks_float_lo_v4si):
! 	Change operand 1 constraint to register_operand.
  
! 2022-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104373
! 	* tree-ssa-sccvn.h (do_rpo_vn): New export exposing the
! 	walk kind.
! 	* tree-ssa-sccvn.cc (do_rpo_vn): Export, get the default
! 	walk kind as argument.
! 	(run_rpo_vn): Adjust.
! 	(pass_fre::execute): Likewise.
! 	* tree-ssa-uninit.cc (warn_uninitialized_vars): Skip
! 	blocks not reachable.
! 	(execute_late_warn_uninitialized): Mark all edges as
! 	executable.
! 	(execute_early_warn_uninitialized): Use VN to compute
! 	executable edges.
! 	(pass_data_early_warn_uninitialized): Enable a dump file,
! 	change dump name to warn_uninit.
  
! 2022-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104467
! 	* match.pd (vector extract simplification): Multiply the
! 	number of CTOR elements with the number of element elements.
  
! 2022-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104466
! 	* tree-ssa-alias.cc (refs_may_alias_p_2): Use rbase1/rbase2
! 	for the MR_DEPENDENCE checks as intended.
  
! 2022-02-10  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.md (define_insn "nvptx_atomic_store<mode>"): New
! 	define_insn.
! 	(define_expand "atomic_store<mode>"): Use nvptx_atomic_store<mode> for
! 	TARGET_SM70.
! 	(define_c_enum "unspecv"): Add UNSPECV_ST.
  
! 2022-02-10  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx-protos.h (nvptx_mem_maybe_shared_p): Declare.
! 	* config/nvptx/nvptx.cc (nvptx_mem_data_area): New static function.
! 	(nvptx_mem_maybe_shared_p): New function.
! 	* config/nvptx/nvptx.md (define_expand "atomic_store<mode>"): New
! 	define_expand.
  
! 2022-02-10  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/97005
! 	* config/nvptx/nvptx.md (define_insn "sub<mode>3"): Workaround
! 	driver JIT bug by using sub.s16 instead of sub.u16.
  
! 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.md (copysign<mode>3): Allow immediate
! 	floating point constants as operands 1 and/or 2.
  
! 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR target/104345
! 	* config/nvptx/nvptx.md (sel_true<mode>): Fix indentation.
! 	(sel_false<mode>): Likewise.
! 	(define_code_iterator eqne): New code iterator for EQ and NE.
! 	(*selp<mode>_neg_<code>): New define_insn_and_split to optimize
! 	the negation of a selp instruction.
! 	(*selp<mode>_not_<code>): New define_insn_and_split to optimize
! 	the bitwise not of a selp instruction.
! 	(*setcc_int<mode>): Use set instruction for neg:SI of a selp.
  
! 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.md (any_logic): Move code iterator earlier
! 	in machine description.
! 	(logic): Move code attribute earlier in machine description.
! 	(ilogic): New code attribute, like logic but "ior" for IOR.
! 	(and<mode>3, ior<mode>3, xor<mode>3): Delete. Replace with...
! 	(<ilogic><mode>3): New define_insn for HSDIM logic operations.
! 	(<ilogic>bi3): New define_insn for BI mode logic operations.
! 	(define_split): Lower logic operations from integer modes to
! 	BI mode predicate operations.
  
! 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.md (UNSPEC_ISINF): New UNSPEC.
! 	(one_cmplbi2): New define_insn for not.pred.
! 	(mulditi3): New define_expand for signed widening multiply.
! 	(umulditi3): New define_expand for unsigned widening multiply.
! 	(smul<mode>3_highpart): New define_insn for signed highpart mult.
! 	(umul<mode>3_highpart): New define_insn for unsigned highpart mult.
! 	(*smulhi3_highpart_2): Renamed from smulhi3_highpart.
! 	(*smulsi3_highpart_2): Renamed from smulsi3_highpart.
! 	(*umulhi3_highpart_2): Renamed from umulhi3_highpart.
! 	(*umulsi3_highpart_2): Renamed from umulsi3_highpart.
! 	(*setcc<mode>_from_not_bi): New define_insn.
! 	(*setcc_isinf<mode>): New define_insn for testp.infinite.
! 	(isinf<mode>2): New define_expand.
  
! 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.md (cmp<mode>): Renamed from *cmp<mode>.
! 	(setcc<mode>_from_bi): Additionally support QImode.
! 	(extendbi<mode>2): Additionally support QImode.
! 	(zero_extendbi<mode>2): Additionally support QImode.
! 	(any_sbinary, any_ubinary, any_sunary, any_uunary): New code
! 	iterators for signed and unsigned, binary and unary operations.
! 	(<sbinary>qi3, <ubinary>qi3, <sunary>qi2, <uunary>qi2): New
! 	expanders to perform QImode operations using SImode instructions.
! 	(cstoreqi4): New define_expand.
! 	(*ext_truncsi2_qi): New define_insn.
! 	(*zext_truncsi2_qi): New define_insn.
  
! 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.md (*cmpf): New define_insn.
! 	(cstorehf4): New define_expand.
! 	(fmahf4): New define_insn.
! 	(neghf2): New define_insn.
! 	(abshf2): New define_insn.
  
! 2022-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific): Change the www.bitwizard.nl
! 	reference to use https.
  
! 2022-02-10  Marcel Vollweiler  <marcel@codesourcery.com>
  
! 	* gimplify.cc (gimplify_scan_omp_clauses): Added cases for
! 	OMP_CLAUSE_HAS_DEVICE_ADDR
! 	and handle array sections.
! 	(gimplify_adjust_omp_clauses): Added OMP_CLAUSE_HAS_DEVICE_ADDR case.
! 	* omp-low.cc (scan_sharing_clauses): Handle OMP_CLAUSE_HAS_DEVICE_ADDR.
! 	(lower_omp_target): Same.
! 	* tree-core.h (enum omp_clause_code): Same.
! 	* tree-nested.cc (convert_nonlocal_omp_clauses): Same.
! 	(convert_local_omp_clauses): Same.
! 	* tree-pretty-print.cc (dump_omp_clause): Same.
! 	* tree.cc: Same.
  
! 2022-02-10  Eugene Rozenfeld  <erozen@microsoft.com>
  
! 	* auto-profile.cc (afdo_indirect_call): Don't attempt to promote indirect calls
! 	that will result in direct recursive calls.
  
! 2022-02-10  Andrew Pinski  <apinski@marvell.com>
  
! 	PR target/104474
! 	* config/aarch64/aarch64.cc
! 	(aarch64_sve_expand_vector_init_handle_trailing_constants):
! 	Use CONST0_RTX instead of const0_rtx for the non-constant elements.
  
! 2022-02-09  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/104462
! 	* common/config/i386/i386-common.cc (OPTION_MASK_ISA2_XSAVE_UNSET):
! 	Also include OPTION_MASK_ISA2_AVX2_UNSET.
  
! 2022-02-09  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/104458
! 	* config/i386/i386-expand.cc (ix86_split_idivmod):
! 	Force operands[2] and operands[3] into a register..
  
! 2022-02-09  Jeff Law  <jeffreyalaw@gmail.com>
  
! 	PR target/97040
! 	* config/v850/v850.md (*v850_fnmasf4): Renamed from fnmasf4.
! 	(*v850_fnmssf4): Renamed from fnmssf4
  
! 2022-02-09  Ian Lance Taylor  <iant@golang.org>
  
! 	* godump.cc (go_force_record_alignment): Really name the alignment
! 	field "_" (complete 2021-12-29 change).
  
! 2022-02-09  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/rs6000-builtins.def (VREPLACE_UN_UV2DI): Change
! 	function prototype.
! 	(VREPLACE_UN_UV4SI): Likewise.
! 	(VREPLACE_UN_V2DF): Likewise.
! 	(VREPLACE_UN_V2DI): Likewise.
! 	(VREPLACE_UN_V4SF): Likewise.
! 	(VREPLACE_UN_V4SI): Likewise.
! 	* config/rs6000/rs6000-overload.def (VEC_REPLACE_UN): Change all
! 	function prototypes.
! 	* config/rs6000/vsx.md (vreplace_un_<mode>): Remove define_expand.
! 	(vreplace_un_<mode>): New define_insn.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/iterators.md (VDCSIF): New mode iterator.
! 	(VDBL): Handle SF.
! 	(single_wx, single_type, single_dtype, dblq): New mode attributes.
! 	* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): Extend
! 	from VDC to VDCSIF.
! 	(store_pair_lanes<mode>): Likewise.
! 	(*aarch64_combine_internal<mode>): Likewise.
! 	(*aarch64_combine_internal_be<mode>): Likewise.
! 	(*aarch64_combinez<mode>): Likewise.
! 	(*aarch64_combinez_be<mode>): Likewise.
! 	* config/aarch64/aarch64.cc (aarch64_classify_address): Handle
! 	8-byte modes for ADDR_QUERY_LDP_STP_N.
! 	(aarch64_print_operand): Likewise for %y.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (@aarch64_split_simd_mov<mode>):
! 	Use aarch64_combine instead of move_lo/hi_quad.  Tabify.
! 	(move_lo_quad_<mode>, aarch64_simd_move_hi_quad_<mode>): Delete.
! 	(aarch64_simd_move_hi_quad_be_<mode>, move_hi_quad_<mode>): Delete.
! 	(vec_pack_trunc_<mode>): Take general_operand elements and use
! 	aarch64_combine rather than move_lo/hi_quad to combine them.
! 	(vec_pack_trunc_df): Likewise.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_split_simd_combine):
! 	Delete.
! 	* config/aarch64/aarch64-simd.md (@aarch64_combinez<mode>): Rename
! 	to...
! 	(*aarch64_combinez<mode>): ...this.
! 	(@aarch64_combinez_be<mode>): Rename to...
! 	(*aarch64_combinez_be<mode>): ...this.
! 	(@aarch64_vec_concat<mode>): New expander.
! 	(aarch64_combine<mode>): Use it.
! 	(@aarch64_simd_combine<mode>): Delete.
! 	* config/aarch64/aarch64.cc (aarch64_split_simd_combine): Delete.
! 	(aarch64_expand_vector_init): Use aarch64_vec_concat.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/predicates.md (aarch64_reg_or_mem_pair_operand):
! 	New predicate.
! 	* config/aarch64/aarch64-simd.md (*aarch64_combine_internal<mode>)
! 	(*aarch64_combine_internal_be<mode>): New patterns.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>)
! 	(move_lo_quad_internal_be_<mode>): Delete.
! 	(move_lo_quad_<mode>): Use aarch64_combine<Vhalf> instead of the above.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch64_mergeable_load_pair_p):
! 	Declare.
! 	* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): Use
! 	aarch64_mergeable_load_pair_p instead of inline check.
! 	* config/aarch64/aarch64.cc (aarch64_expand_vector_init): Likewise.
! 	(aarch64_check_consecutive_mems): Allow the reversed parameter
! 	to be null.
! 	(aarch64_mergeable_load_pair_p): New function.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (vec_set<mode>): Allow the
! 	element to be an aarch64_simd_nonimmediate_operand.
  
! 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
! 	aarch64_simd_nonimmediate_operand instead of
! 	aarch64_simd_general_operand.
! 	(@aarch64_combinez<mode>): Use nonimmediate_operand instead of
! 	general_operand.
! 	(@aarch64_combinez_be<mode>): Likewise.
  
! 2022-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104464
! 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Postpone
! 	throwing check to after unproblematic replacement.
  
! 2022-02-09  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR tree-optimization/104420
! 	* match.pd (mult @0 real_zerop): Tweak conditions for constant
! 	folding X*0.0 (or X*-0.0) to HONOR_SIGNED_ZEROS when appropriate.
  
! 2022-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/104407
! 	* dwarf2out.cc (mangle_referenced_decls): New function.
! 	(tree_add_const_value_attribute): Don't call rtl_for_decl_init if
! 	early_dwarf.  Instead walk the initializer and try to mangle vars or
! 	functions referenced from it.
  
! 2022-02-09  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/104288
! 	* gimple-range-cache.cc (non_null_ref::set_nonnull): New.
! 	(non_null_ref::adjust_range): Move to header.
! 	(ranger_cache::range_of_def): Don't check non-null.
! 	(ranger_cache::entry_range): Don't check non-null.
! 	(ranger_cache::range_on_edge): Check for nonnull on normal edges.
! 	(ranger_cache::update_to_nonnull): New.
! 	(non_null_loadstore): New.
! 	(ranger_cache::block_apply_nonnull): New.
! 	* gimple-range-cache.h (class non_null_ref): Update prototypes.
! 	(non_null_ref::adjust_range): Move to here and inline.
! 	(class ranger_cache): Update prototypes.
! 	* gimple-range-path.cc (path_range_query::range_defined_in_block): Do
! 	not search dominators.
! 	(path_range_query::adjust_for_non_null_uses): Ditto.
! 	* gimple-range.cc (gimple_ranger::range_of_expr): Check on-entry for
! 	def overrides.  Do not check nonnull.
! 	(gimple_ranger::range_on_entry): Check dominators for nonnull.
! 	(gimple_ranger::range_on_edge): Check for nonnull on normal edges..
! 	(gimple_ranger::register_side_effects): New.
! 	* gimple-range.h (gimple_ranger::register_side_effects): New.
! 	* tree-vrp.cc (rvrp_folder::fold_stmt): Call register_side_effects.
  
! 2022-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104445
! 	PR tree-optimization/102832
! 	* optabs-query.h (can_vec_extract): New.
! 	* optabs-query.cc (can_vec_extract): Likewise.
! 	* tree-vect-loop.cc (vect_find_reusable_accumulator): Check
! 	we can extract a hi/lo part from the larger vector, rework
! 	check iteration from larger to smaller sizes.
  
! 2022-02-09  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/35513
! 	PR target/100593
! 	* config/i386/gnu-property.cc: Include "i386-protos.h".
! 	(file_end_indicate_exec_stack_and_gnu_property): Generate
! 	a GNU_PROPERTY_1_NEEDED note for -mno-direct-extern-access or
! 	nodirect_extern_access attribute.
! 	* config/i386/i386-options.cc
! 	(handle_nodirect_extern_access_attribute): New function.
! 	(ix86_attribute_table): Add nodirect_extern_access attribute.
! 	* config/i386/i386-protos.h (ix86_force_load_from_GOT_p): Add a
! 	bool argument.
! 	(ix86_has_no_direct_extern_access): New.
! 	* config/i386/i386.cc (ix86_has_no_direct_extern_access): New.
! 	(ix86_force_load_from_GOT_p): Add a bool argument to indicate
! 	call operand.  Force non-call load from GOT for
! 	-mno-direct-extern-access or nodirect_extern_access attribute.
! 	(legitimate_pic_address_disp_p): Avoid copy relocation in PIE
! 	for -mno-direct-extern-access or nodirect_extern_access attribute.
! 	(ix86_print_operand): Pass true to ix86_force_load_from_GOT_p
! 	for call operand.
! 	(asm_preferred_eh_data_format): Use PC-relative format for
! 	-mno-direct-extern-access to avoid copy relocation.  Check
! 	ptr_mode instead of TARGET_64BIT when selecting DW_EH_PE_sdata4.
! 	(ix86_binds_local_p): Set ix86_has_no_direct_extern_access to
! 	true for -mno-direct-extern-access or nodirect_extern_access
! 	attribute.  Don't treat protected data as extern and avoid copy
! 	relocation on common symbol with -mno-direct-extern-access or
! 	nodirect_extern_access attribute.
! 	(ix86_reloc_rw_mask): New to avoid copy relocation for
! 	-mno-direct-extern-access.
! 	(TARGET_ASM_RELOC_RW_MASK): New.
! 	* config/i386/i386.opt: Add -mdirect-extern-access.
! 	* doc/extend.texi: Document nodirect_extern_access attribute.
! 	* doc/invoke.texi: Document -m[no-]direct-extern-access.
  
! 2022-02-09  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/104441
! 	* config/i386/i386.cc (ix86_avx_u128_mode_source): New function.
! 	(ix86_avx_u128_mode_needed): Return AVX_U128_ANY for debug INSN.
! 	Call ix86_avx_u128_mode_source to check mode for each component
! 	of source operand.
  
! 2022-02-09  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/104451
! 	* config/i386/sse.md (<insn><mode>3): lowpart_subreg
! 	operands[2] from SImode to QImode.
  
! 2022-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104450
! 	* gimple-isel.cc: Pass cfun around.
! 	(+gimple_expand_vec_cond_expr): Do not combine a throwing
! 	comparison with the select.
  
! 2022-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR target/104453
! 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Guard shift
! 	folding for NULL LHS.
  
! 2022-02-08  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	PR rtl-optimization/104198
! 	PR rtl-optimization/104153
! 	* ifcvt.cc (noce_convert_multiple_sets_1): Copy rtx instead of
! 	using it directly.  Rework comparison handling and always
! 	perform a second pass.
  
! 2022-02-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/102140
! 	* config/rs6000/rs6000.cc (vspltis_shifted): Return false also if
! 	split1 pass has finished already.
  
! 2022-02-08  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/rs6000-builtins.def (VMSUMCUD): New.
! 	* config/rs6000/rs6000-overload.def (VEC_MSUMC): New.
! 	* config/rs6000/vsx.md (UNSPEC_VMSUMCUD): New constant.
! 	(vmsumcud): New define_insn.
  
! 2022-02-08  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx-opts.h (enum ptx_isa): Add PTX_ISA_SM70.
! 	* config/nvptx/nvptx.h (TARGET_SM70): Define.
  
! 2022-02-08  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* config/s390/s390.cc (s390_rtx_costs): Increase costs for load
! 	on condition.
! 	* config/s390/s390.md: Use paradoxical subreg.
  
! 2022-02-08  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* combine.cc (reg_subword_p): Check for paradoxical subreg.
  
! 2022-02-08  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104283
! 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add PTX_VERSION_3_0
! 	and PTX_VERSION_4_2.
! 	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm)
! 	(default_ptx_version_option, ptx_version_to_string)
! 	(sm_version_to_string, handle_ptx_version_option): New function.
! 	(nvptx_option_override): Call handle_ptx_version_option.
! 	(nvptx_file_start): Use ptx_version_to_string and sm_version_to_string.
! 	* config/nvptx/nvptx.md (define_insn "nvptx_shuffle<mode>")
! 	(define_insn "nvptx_vote_ballot"): Use TARGET_PTX_6_0.
! 	* config/nvptx/nvptx.opt (mptx): Remove 'Init'.
  
! 2022-02-08  Maciej W. Rozycki  <macro@embecosm.com>
  
! 	* doc/install.texi (Configuration): Document `--with-isa-spec='
! 	RISC-V option.
! 	* doc/invoke.texi (Option Summary): List `-misa-spec=' RISC-V
! 	option.
! 	(RISC-V Options): Document it.
  
! 2022-02-08  Maciej W. Rozycki  <macro@embecosm.com>
  
! 	* config/riscv/t-riscv (riscv-sr.o): Add $(TM_H) dependency.
  
! 2022-02-08  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (write_fn_proto_1): Handle 'main (int)'.
  
! 2022-02-08  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/104364
! 	* config/nvptx/nvptx-protos.h (nvptx_mem_local_p): Declare.
! 	* config/nvptx/nvptx.cc (nvptx_reorg_uniform_simt): Assert that
! 	change is validated.
! 	(nvptx_mem_local_p): New function.
! 	* config/nvptx/nvptx.md: Use nvptx_mem_local_p.
! 	(define_c_enum "unspecv"): Add UNSPECV_CAS_LOCAL.
! 	(define_insn "atomic_compare_and_swap<mode>_1_local"): New
! 	non-atomic, non-predicable define_insn, factored out of ...
! 	(define_insn "atomic_compare_and_swap<mode>_1"): ... here.
! 	Make predicable again.
! 	(define_expand "atomic_compare_and_swap<mode>"): Use
! 	atomic_compare_and_swap<mode>_1_local.
  
! 2022-02-08  liuhongt  <hongtao.liu@intel.com>
  
! 	PR rtl-optimization/104059
! 	* regcprop.cc (copyprop_hardreg_forward_1): Don't propagate
! 	for a more expensive reg-reg move.
  
! 2022-02-07  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/arm/arm_neon.h (vusdotq_s32, vusdot_laneq_s32,
! 	vusdotq_laneq_s32, vsudot_laneq_s32, vsudotq_laneq_s32): New
! 	* config/arm/arm_neon_builtins.def (usdot): Add V16QI.
! 	(usdot_laneq, sudot_laneq): New.
! 	* config/arm/neon.md (neon_<sup>dot_laneq<vsi2qi>): New.
! 	(neon_<sup>dot_lane<vsi2qi>): Remote unneeded code.
  
! 2022-02-07  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/arm/arm_neon.h (vdot_laneq_u32, vdotq_laneq_u32,
! 	vdot_laneq_s32, vdotq_laneq_s32): New.
! 	* config/arm/arm_neon_builtins.def (sdot_laneq, udot_laneq): New.
! 	* config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
! 	(<sup>dot_prod<vsi2qi>): Re-order rtl.
! 	(neon_<sup>dot_lane<vsi2qi>): Fix rtl order and endiannes.
! 	(neon_<sup>dot_laneq<vsi2qi>): New.
  
! 2022-02-07  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	PR target/104327
! 	* config/s390/s390.cc (s390_can_inline_p): Accept a few more flags
! 	if always_inline is set. Don't inline when tune differs without
! 	always_inline.
  
! 2022-02-07  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/104402
! 	* gimple-expr.cc (is_gimple_condexpr): _Complex typed
! 	compares are not valid.
! 	* tree-cfg.cc (verify_gimple_assign_ternary): For COND_EXPR
! 	check is_gimple_condexpr.
  
! 2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/103627
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Move the
! 	hunk affecting VSX and ALTIVEC to appropriate place.
  
! 2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/103627
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Disable
! 	MMA if !TARGET_VSX.
  
! 2022-02-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/89074
! 	PR c++/104033
! 	* fold-const.h (folding_initializer): Adjust comment.
! 	(folding_cxx_constexpr): Declare.
! 	* fold-const.cc (folding_initializer): Adjust comment.
! 	(folding_cxx_constexpr): New variable.
! 	(address_compare): Restrict the decl vs. STRING_CST
! 	or vice versa or STRING_CST vs. STRING_CST or
! 	is_global_var != is_global_var optimizations to !folding_cxx_constexpr.
! 	Punt for FUNCTION_DECLs with non-zero offsets.  If folding_initializer,
! 	assume non-aliased functions have non-zero size and have different
! 	addresses.  For folding_cxx_constexpr, punt on comparisons of start
! 	of some object and end of another one, regardless whether it is a decl
! 	or string literal.  Also punt for folding_cxx_constexpr on
! 	STRING_CST vs. STRING_CST comparisons if the two literals could be
! 	overlapping.
  
! 2022-02-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104389
! 	* match.pd (x * 0 -> 0): Punt if x maybe infinite and NaNs are
! 	honored.
  
! 2022-02-05  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* configure.ac: Fix detection for zifencei support.
! 	* configure: Regenerate.
  
! 2022-02-05  Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/104219
! 	* config.gcc (riscv*-*-*): Normalize the with_isa_spec value.
! 	(all_defaults): Add isa_spec.
! 	* config/riscv/riscv.h (OPTION_DEFAULT_SPECS): Add isa_spec.
  
! 2022-02-04  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/rs6000-c.cc (resolve_vec_mul): Accept args and types
! 	parameters instead of arglist and nargs.  Simplify accordingly.  Remove
! 	unnecessary test for argument count mismatch.
! 	(resolve_vec_cmpne): Likewise.
! 	(resolve_vec_adde_sube): Likewise.
! 	(resolve_vec_addec_subec): Likewise.
! 	(altivec_resolve_overloaded_builtin): Move overload special handling
! 	after the gathering of arguments into args[] and types[] and the test
! 	for correct number of arguments.  Don't perform the test for correct
! 	number of arguments for certain special cases.  Call the other special
! 	cases with args and types instead of arglist and nargs.
  
! 2022-02-04  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	PR target/100808
! 	* doc/extend.texi (Basic PowerPC Built-in Functions Available on ISA
! 	3.1): Provide consistent type names.  Remove unnecessary semicolons.
! 	Fix bad line breaks.
  
! 2022-02-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104380
! 	* config/rs6000/rs6000.cc (rs6000_mangle_decl_assembler_name): Also
! 	adjust mangling of __builtin*printf_chk.
  
! 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/cpp.texi (Variadic Macros): Replace C++2a with C++20.
  
! 2022-02-04  Richard Biener  <rguenther@suse.de>
! 	    Bin Cheng   <bin.cheng@linux.alibaba.com>
  
! 	PR tree-optimization/100499
! 	* fold-const.h (multiple_of_p): Add nowrap parameter, defaulted
! 	to true.
! 	* fold-const.cc (multiple_of_p): Likewise.  Honor it for
! 	MULT_EXPR, PLUS_EXPR and MINUS_EXPR and pass it along,
! 	switching to false for conversions.
! 	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Do not
! 	claim the outermost expression does not wrap when calling
! 	multiple_of_p.  Refactor the check done to check the
! 	original IV, avoiding a bias that might wrap.
  
! 2022-02-04  Richard Biener  <rguenther@suse.de>
  
! 	* fold-const.cc (multiple_of_p): Re-write and move LSHIFT_EXPR
! 	handling.
  
! 2022-02-04  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR debug/104366
! 	* dwarf2out.cc (dwarf2out_finish): Empty base_types.
! 	(dwarf2out_early_finish): Likewise.
  
! 2022-02-04  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR tree-optimization/104356
! 	* match.pd (X / bool_range_Y is X): Add guard.
! 	(X / X is one): Likewise.
! 	(X / abs (X) is X < 0 ? -1 : 1): Likewise.
! 	(X / -X is -1): Likewise.
! 	(1 / X -> X == 1): Likewise.
  
! 2022-02-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103641
! 	* tree-vect-patterns.cc (vect_synth_mult_by_constant):
! 	Pass the vector mode to choose_mult_variant.
  
! 2022-02-04  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR rtl-optimization/101885
! 	* combine.cc (try_combine): When splitting a parallel into two
! 	sequential sets, check not only that the first doesn't clobber
! 	the second but also that the second doesn't clobber the first.
  
! 2022-02-04  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/90348
! 	PR middle-end/104092
! 	* tree-core.h (clobber_kind): New enum.
! 	(tree_base::u::bits::address_space): Document use in CONSTRUCTORs.
! 	* tree.h (CLOBBER_KIND): Add.
! 	(build_clobber): Add clobber kind argument, defaulted to
! 	CLOBBER_UNDEF.
! 	* tree.cc (build_clobber): Likewise.
! 	* gimple.h (gimple_clobber_p): New overload with specified kind.
! 	* tree-streamer-in.cc (streamer_read_tree_bitfields): Stream
! 	CLOBBER_KIND.
! 	* tree-streamer-out.cc (streamer_write_tree_bitfields):
! 	Likewise.
! 	* tree-pretty-print.cc (dump_generic_node): Mark EOL CLOBBERs.
! 	* gimplify.cc (gimplify_bind_expr): Build storage end-of-life clobbers
! 	with CLOBBER_EOL.
! 	(gimplify_target_expr): Likewise.
! 	* tree-inline.cc (expand_call_inline): Likewise.
! 	* tree-ssa-ccp.cc (insert_clobber_before_stack_restore): Likewise.
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_stmt): Only treat
! 	CLOBBER_EOL clobbers as ending lifetime of storage.
  
! 2022-02-04  Martin Sebor  <msebor@redhat.com>
  
! 	* pointer-query.h (pointer_query::cache_type): Use auto_vec for auto
! 	cleanup.
  
! 2022-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/104260
! 	* passes.def (pass_warn_access): Adjust pass placement.
  
! 2022-02-03  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/104362
! 	* config/i386/i386.cc (find_drap_reg): For 32bit targets
! 	return DI_REG if function uses __builtin_eh_return.
  
! 2022-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-warn-restrict.cc (class pass_wrestrict): Outline ctor.
! 	(pass_wrestrict::m_ptr_qry): New member.
! 	(wrestrict_walk): Rename...
! 	(pass_wrestrict::check_block): ...to this.
! 	(pass_wrestrict::execute): Set up and tear down pointer_query and
! 	ranger.
! 	(builtin_memref::builtin_memref): Change ctor argument.  Simplify.
! 	(builtin_access::builtin_access): Same.
! 	(builtin_access::m_ptr_qry): New member.
! 	(check_call): Rename...
! 	(pass_wrestrict::check_call): ...to this.
! 	(check_bounds_or_overlap): Change argument.
! 	* gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Same.
  
! 2022-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-array-bounds.cc (array_bounds_checker::array_bounds_checker):
! 	Define ctor.
! 	(array_bounds_checker::get_value_range): Use new member.
! 	(array_bounds_checker::check_mem_ref): Same.
! 	* gimple-array-bounds.h (array_bounds_checker::array_bounds_checker):
! 	Outline ctor.
! 	(array_bounds_checker::m_ptr_query): New member.
  
! 2022-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-warn-access.cc (pass_waccess::pass_waccess): Remove
! 	pointer_query cache.
! 	* pointer-query.cc (pointer_query::pointer_query): Remove cache
! 	argument.  Zero-initialize new cache member.
! 	(pointer_query::get_ref): Replace cache pointer with direct access.
! 	(pointer_query::put_ref): Same.
! 	(pointer_query::flush_cache): Same.
! 	(pointer_query::dump): Same.
! 	* pointer-query.h (class pointer_query): Remove cache argument from
! 	ctor.  Change cache pointer to cache subobject member.
! 	* tree-ssa-strlen.cc: Remove pointer_query cache.
  
! 2022-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/104119
! 	* gimple-ssa-sprintf.cc (struct directive): Change argument type.
! 	(format_none): Same.
! 	(format_percent): Same.
! 	(format_integer): Same.
! 	(format_floating): Same.
! 	(get_string_length): Same.
! 	(format_character): Same.
! 	(format_string): Same.
! 	(format_plain): Same.
! 	(format_directive): Same.
! 	(compute_format_length): Same.
! 	(handle_printf_call): Same.
! 	* tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.   Call
! 	get_maxbound.
! 	(get_range_strlen_phi): Same.
! 	(get_maxbound): New function.
! 	(strlen_pass::get_len_or_size): Adjust to parameter change.
! 	* tree-ssa-strlen.h (get_range_strlen_dynamic): Change argument type.
  
! 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	PR target/103686
! 	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin):	Remove
! 	test for !rs6000_fold_gimple.
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Likewise.
! 	* config/rs6000/rs6000.opt (mfold-gimple): Remove.
  
! 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	PR target/95082
! 	* config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Handle
! 	endianness for vclzlsbb and vctzlsbb.
! 	* config/rs6000/rs6000-builtins.def (VCLZLSBB_V16QI): Change
! 	default pattern and indicate a different pattern will be used for
! 	big endian.
! 	(VCLZLSBB_V4SI): Likewise.
! 	(VCLZLSBB_V8HI): Likewise.
! 	(VCTZLSBB_V16QI): Likewise.
! 	(VCTZLSBB_V4SI): Likewise.
! 	(VCTZLSBB_V8HI): Likewise.
  
! 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config.gcc (powerpc*-*-*): Add rs6000-builtin.o to extra_objs.
! 	* config/rs6000/rs6000-builtin.cc: New file, containing code moved
! 	from other files.
! 	* config/rs6000/rs6000-call.cc (cpu_is_info): Move to
! 	rs6000-builtin.cc.
! 	(cpu_supports_info): Likewise.
! 	(rs6000_type_string): Likewise.
! 	(altivec_expand_predicate_builtin): Likewise.
! 	(rs6000_htm_spr_icode): Likewise.
! 	(altivec_expand_vec_init_builtin): Likewise.
! 	(get_element_number): Likewise.
! 	(altivec_expand_vec_set_builtin): Likewise.
! 	(altivec_expand_vec_ext_builtin): Likewise.
! 	(rs6000_invalid_builtin): Likewise.
! 	(rs6000_fold_builtin): Likewise.
! 	(fold_build_vec_cmp): Likewise.
! 	(fold_compare_helper): Likewise.
! 	(map_to_integral_tree_type): Likewise.
! 	(fold_mergehl_helper): Likewise.
! 	(fold_mergeeo_helper): Likewise.
! 	(rs6000_builtin_valid_without_lhs): Likewise.
! 	(rs6000_builtin_is_supported): Likewise.
! 	(rs6000_gimple_fold_mma_builtin): Likewise.
! 	(rs6000_gimple_fold_builtin): Likewise.
! 	(rs6000_expand_ldst_mask): Likewise.
! 	(cpu_expand_builtin): Likewise.
! 	(elemrev_icode): Likewise.
! 	(ldv_expand_builtin): Likewise.
! 	(lxvrse_expand_builtin): Likewise.
! 	(lxvrze_expand_builtin): Likewise.
! 	(stv_expand_builtin): Likewise.
! 	(mma_expand_builtin): Likewise.
! 	(htm_spr_num): Likewise.
! 	(htm_expand_builtin): Likewise.
! 	(rs6000_expand_builtin): Likewise.
! 	(rs6000_vector_type): Likewise.
! 	(rs6000_init_builtins): Likewise.  Remove initialization of
! 	builtin_mode_to_type entries.
! 	(rs6000_builtin_decl): Move to rs6000-builtin.cc.
! 	* config/rs6000/rs6000.cc (rs6000_builtin_mask_for_load): New
! 	external declaration.
! 	(rs6000_builtin_md_vectorized_function): Likewise.
! 	(rs6000_builtin_reciprocal): Likewise.
! 	(altivec_builtin_mask_for_load): Move to rs6000-builtin.cc.
! 	(rs6000_builtin_types): Likewise.
! 	(builtin_mode_to_type): Remove.
! 	(rs6000_builtin_mask_for_load): Move to rs6000-builtin.cc.  Remove
! 	static qualifier.
! 	(rs6000_builtin_md_vectorized_function): Likewise.
! 	(rs6000_builtin_reciprocal): Likewise.
! 	* config/rs6000/rs6000.h (builtin_mode_to_type): Remove.
! 	* config/rs6000/t-rs6000 (rs6000-builtin.o): New target.
  
! 2022-02-03  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/104337
! 	* tree-nrv.cc (pass_nrv::execute): Remove tieing result and found
! 	together via DECL_ABSTRACT_ORIGIN.
  
! 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/rs6000-call.cc (rs6000_expand_builtin): Revise error
! 	message for RES_BITS case.
  
! 2022-02-03  Aldy Hernandez  <aldyh@redhat.com>
  
! 	* gimple-range-fold.cc (fur_list::fur_list): Set m_local[1] correctly.
  
! 2022-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/arm/arm.opt (mfix-cortex-a57-aes-1742098,
! 	mfix-cortex-a72-aes-1655431): Ensure description ends with full stop.
  
! 2022-02-03  Aldy Hernandez  <aldyh@redhat.com>
  
! 	* cfganal.cc (verify_marked_backedges): New.
! 	* cfganal.h (verify_marked_backedges): New.
! 	* gimple-range-path.cc (path_range_query::path_range_query):
! 	Verify freshness of back edges.
! 	* tree-ssa-loop-ch.cc (ch_base::copy_headers): Call
! 	mark_dfs_back_edges.
! 	* tree-ssa-threadbackward.cc (back_threader::back_threader): Move
! 	path_range_query construction after backedges have been
! 	updated.
  
! 2022-02-03  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (movmisalign<mode>): Extend from
! 	VALL to VALL_F16.
  
! 2022-02-03  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/iterators.md (VALL_F16MOV): Delete.
! 	* config/aarch64/aarch64-simd.md (mov<mode>): Use VALL_F16 instead
! 	of VALL_F16MOV.
  
! 2022-02-03  Martin Liska  <mliska@suse.cz>
  
! 	* config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
! 	Change subject and object in the error message.
! 	* config/s390/s390.cc (s390_valid_target_attribute_inner_p):
! 	Likewise.
  
! 2022-02-03  Martin Liska  <mliska@suse.cz>
  
! 	* config/s390/s390.cc (s390_valid_target_attribute_inner_p):
! 	Use the error message for i386 target.
  
! 2022-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104334
! 	* range-op.cc (range_operator::wi_fold_in_parts): Change lh_range
! 	and rh_range type to widest_int and subtract in widest_int.  Remove
! 	ov_rh, ov_lh and sign vars, always perform comparisons as signed
! 	and use >, < and == operators for it.
  
! 2022-02-03  Martin Sebor  <msebor@redhat.com>
  
! 	* common.opt (-Wuse-after-free): Correct typos.
  
! 2022-02-02  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/104270
! 	* doc/invoke.texi (-ftrivial-auto-var-init=): Add reference to
! 	-Wanalyzer-use-of-uninitialized-value to paragraph documenting that
! 	-ftrivial-auto-var-init= doesn't suppress warnings.
  
! 2022-02-02  Martin Liska  <mliska@suse.cz>
  
! 	* dwarf2out.cc (TEXT_SECTION_NAME): Remove unused macro.
  
! 2022-02-02  Bernd Kuhls  <bernd.kuhls@t-online.de>
  
! 	PR target/94372
! 	* config/or1k/linux.h (CPP_SPEC): Define.
  
! 2022-02-02  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/102819
! 	PR tree-optimization/103169
! 	* config/arm/vec-common.md (cml<fcmac1><conj_op><mode>4): Use
! 	canonical order.
  
! 2022-02-02  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/102819
! 	PR tree-optimization/103169
! 	* config/aarch64/aarch64-simd.md (cml<fcmac1><conj_op><mode>4): Use
! 	canonical order.
! 	* config/aarch64/aarch64-sve.md (cml<fcmac1><conj_op><mode>4): Likewise.
  
! 2022-02-02  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR tree-optimization/102819
! 	PR tree-optimization/103169
! 	* doc/md.texi: Update docs for cfms, cfma.
! 	* tree-data-ref.h (same_data_refs): Accept optional offset.
! 	* tree-vect-slp-patterns.cc (is_linear_load_p): Fix issue with repeating
! 	patterns.
! 	(vect_normalize_conj_loc): Remove.
! 	(is_eq_or_top): Change to take two nodes.
! 	(enum _conj_status, compatible_complex_nodes_p,
! 	vect_validate_multiplication): New.
! 	(class complex_add_pattern, complex_add_pattern::matches,
! 	complex_add_pattern::recognize, class complex_mul_pattern,
! 	complex_mul_pattern::recognize, class complex_fms_pattern,
! 	complex_fms_pattern::recognize, class complex_operations_pattern,
! 	complex_operations_pattern::recognize, addsub_pattern::recognize): Pass
! 	new cache.
! 	(complex_fms_pattern::matches, complex_mul_pattern::matches): Pass new
! 	cache and use new validation code.
! 	* tree-vect-slp.cc (vect_match_slp_patterns_2, vect_match_slp_patterns,
! 	vect_analyze_slp): Pass along cache.
! 	(compatible_calls_p): Expose.
! 	* tree-vectorizer.h (compatible_calls_p, slp_node_hash,
! 	slp_compat_nodes_map_t): New.
! 	(class vect_pattern): Update signatures include new cache.
  
! 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.cc (cris_preferred_reload_class): Reject
! 	"eliminated" registers and small-enough constants unless
! 	reloaded into a class that is a subset of GENERAL_REGS.
! 	* config/cris/cris.md (attribute "cpu_variant"): New.
! 	(attribute "enabled"): Conditionalize on a matching attribute
! 	cpu_variant, if specified.
! 	("*movsi_internal<setcc><setnz><setnzvc>"): For moves to and from
! 	memory, add cpu-variant-enabled variants for "r" alternatives on
! 	the far side of the "x" alternatives, preferring the "x" ones
! 	only for variants where MOF is present (in addition to SRP).
  
! 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.cc (cris_register_move_cost): Remove special pre-ira
! 	extra cost for ALL_REGS.
  
! 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/constraints.md (define_register_constraint "b"): Now
! 	GENERAL_REGS.
! 	* config/cris/cris.md (CRIS_ACR_REGNUM): Remove.
! 	* config/cris/cris.h: (reg_class, REG_CLASS_NAMES)
! 	(REG_CLASS_CONTENTS): Remove ACR_REGS, SPEC_ACR_REGS, GENNONACR_REGS,
! 	and SPEC_GENNONACR_REGS.
! 	* config/cris/cris.cc (cris_preferred_reload_class): Don't mention
! 	ACR_REGS and return GENERAL_REGS instead of GENNONACR_REGS.
  
! 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.md ("*movsi_internal<setcc><setnz><setnzvc>"):
! 	Conditionalize on (sub-)register operands or operand 1 being 0.
  
! 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.h (TARGET_DEFAULT): Don't include MASK_MUL_BUG.
! 	(MUL_BUG_ASM_DEFAULT): New macro.
! 	(MAYBE_AS_NO_MUL_BUG_ABORT): Define in terms of MUL_BUG_ASM_DEFAULT.
! 	* doc/invoke.texi (CRIS Options, -mmul-bug-workaround): Adjust
! 	accordingly.
  
! 2022-02-01  Eugene Rozenfeld  <erozen@microsoft.com>
  
! 	* opts.cc (common_handle_option): Don't set param_early_inliner_max_iterations
! 	to 10 for AutoFDO.
  
! 2022-02-01  Eugene Rozenfeld  <erozen@microsoft.com>
  
! 	* auto-profile.cc (auto_profile): Hard-code the number of iterations (10).
  
! 2022-02-01  Andrew Pinski  <apinski@marvell.com>
  
! 	* doc/install.texi:
  
! 2022-02-01  Ilya Leoshkevich  <iii@linux.ibm.com>
  
! 	* config/s390/s390.cc (s390_code_end): Do not switch back to
! 	code section.
  
! 2022-02-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104323
! 	* config/rs6000/t-rs6000 (EXTRA_GTYPE_DEPS): Append rs6000-builtins.h
! 	rather than $(srcdir)/config/rs6000/rs6000-builtins.def.
! 	* config/rs6000/rs6000-gen-builtins.cc (write_decls): Don't use
! 	GTY((user)) for struct bifdata and struct ovlddata.  Instead add
! 	GTY((skip(""))) to members with pointer and enum types that don't need
! 	to be tracked.  Add GTY(()) to rs6000_builtin_info and rs6000_instance_info
! 	declarations.  Don't emit gt_ggc_mx and gt_pch_nx declarations.
! 	(write_extern_fntype, write_fntype): Remove.
! 	(write_fntype_init): Emit the fntype vars as automatic vars instead
! 	of file scope ones.
! 	(write_header_file): Don't iterate with write_extern_fntype.
! 	(write_init_file): Don't iterate with write_fntype.  Don't emit
! 	gt_ggc_mx and gt_pch_nx definitions.
  
! 2022-02-01  Jason Merrill  <jason@redhat.com>
  
! 	* tree.h (struct tree_vec_map_cache_hasher): Move from...
! 	* tree.cc (struct tree_vec_map_cache_hasher): ...here.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (nvptx_single): Use nvptx_uniform_warp_check.
! 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
! 	UNSPECV_UNIFORM_WARP_CHECK.
! 	(define_insn "nvptx_uniform_warp_check"): New define_insn.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (nvptx_single): Use nvptx_warpsync.
! 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
! 	UNSPECV_WARPSYNC.
! 	(define_insn "nvptx_warpsync"): New define_insn.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.opt (mptx): Set to PTX_VERSION_6_3 by default.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add PTX_VERSION_6_0.
! 	* config/nvptx/nvptx.h (TARGET_PTX_6_0): New macro.
! 	* config/nvptx/nvptx.md (define_insn "nvptx_barsync"): Use barrier
! 	insn for TARGET_PTX_6_0.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	PR target/100428
! 	* config/nvptx/nvptx.cc (prevent_branch_around_nothing): Handle nop
! 	insn.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.md (define_insn "atomic_compare_and_swap<mode>_1")
! 	(define_insn "atomic_exchange<mode>")
! 	(define_insn "atomic_fetch_add<mode>")
! 	(define_insn "atomic_fetch_addsf")
! 	(define_insn "atomic_fetch_<logic><mode>"): Output non-atomic version
! 	if memory operands is frame-relative.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* config/nvptx/nvptx.cc (enum nvptx_builtins): Add
! 	NVPTX_BUILTIN_MEMBAR_GL and NVPTX_BUILTIN_MEMBAR_CTA.
! 	(VOID): New macro.
! 	(nvptx_init_builtins): Add MEMBAR_GL and MEMBAR_CTA.
! 	(nvptx_expand_builtin): Handle NVPTX_BUILTIN_MEMBAR_GL and
! 	NVPTX_BUILTIN_MEMBAR_CTA.
! 	(nvptx_lockfull_update): Add level parameter.  Emit barriers.
! 	(nvptx_reduction_update, nvptx_goacc_reduction_fini): Update call to
! 	nvptx_lockfull_update.
! 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
! 	UNSPECV_MEMBAR_GL.
! 	(define_expand "nvptx_membar_gl"): New expand.
! 	(define_insn "*nvptx_membar_gl"): New insn.
  
! 2022-02-01  Martin Liska  <mliska@suse.cz>
  
! 	* doc/install.texi: Remove option for GCC < 4.8.
  
! 2022-02-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104307
! 	* tree-vect-generic.cc (expand_vector_comparison): Don't push debug
! 	stmts to uses vector, just set vec_cond_expr_only to false for
! 	non-VEC_COND_EXPRs instead of pushing them into uses.  Treat
! 	VEC_COND_EXPRs that use lhs not just in rhs1, but rhs2 or rhs3 too
! 	like non-VEC_COND_EXPRs.
  
! 2022-02-01  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/rs6000-overload.def (VEC_ABSD): Remove #ifdef token.
! 	(VEC_BLENDV): Likewise.
! 	(VEC_BPERM): Likewise.
! 	(VEC_CFUGE): Likewise.
! 	(VEC_CIPHER_BE): Likewise.
! 	(VEC_CIPHERLAST_BE): Likewise.
! 	(VEC_CLRL): Likewise.
! 	(VEC_CLRR): Likewise.
! 	(VEC_CMPNEZ): Likewise.
! 	(VEC_CNTLZ): Likewise.
! 	(VEC_CNTLZM): Likewise.
! 	(VEC_CNTTZM): Likewise.
! 	(VEC_CNTLZ_LSBB): Likewise.
! 	(VEC_CNTM): Likewise.
! 	(VEC_CNTTZ): Likewise.
! 	(VEC_CNTTZ_LSBB): Likewise.
! 	(VEC_CONVERT_4F32_8F16): Likewise.
! 	(VEC_DIV): Likewise.
! 	(VEC_DIVE): Likewise.
! 	(VEC_EQV): Likewise.
! 	(VEC_EXPANDM): Likewise.
! 	(VEC_EXTRACT_FP_FROM_SHORTH): Likewise.
! 	(VEC_EXTRACT_FP_FROM_SHORTL): Likewise.
! 	(VEC_EXTRACTH): Likewise.
! 	(VEC_EXTRACTL): Likewise.
! 	(VEC_EXTRACTM): Likewise.
! 	(VEC_EXTRACT4B): Likewise.
! 	(VEC_EXTULX): Likewise.
! 	(VEC_EXTURX): Likewise.
! 	(VEC_FIRSTMATCHINDEX): Likewise.
! 	(VEC_FIRSTMACHOREOSINDEX): Likewise.
! 	(VEC_FIRSTMISMATCHINDEX): Likewise.
! 	(VEC_FIRSTMISMATCHOREOSINDEX): Likewise.
! 	(VEC_GB): Likewise.
! 	(VEC_GENBM): Likewise.
! 	(VEC_GENHM): Likewise.
! 	(VEC_GENWM): Likewise.
! 	(VEC_GENDM): Likewise.
! 	(VEC_GENQM): Likewise.
! 	(VEC_GENPCVM): Likewise.
! 	(VEC_GNB): Likewise.
! 	(VEC_INSERTH): Likewise.
! 	(VEC_INSERTL): Likewise.
! 	(VEC_INSERT4B): Likewise.
! 	(VEC_LXVL): Likewise.
! 	(VEC_MERGEE): Likewise.
! 	(VEC_MERGEO): Likewise.
! 	(VEC_MOD): Likewise.
! 	(VEC_MSUB): Likewise.
! 	(VEC_MULH): Likewise.
! 	(VEC_NAND): Likewise.
! 	(VEC_NCIPHER_BE): Likewise.
! 	(VEC_NCIPHERLAST_BE): Likewise.
! 	(VEC_NEARBYINT): Likewise.
! 	(VEC_NMADD): Likewise.
! 	(VEC_ORC): Likewise.
! 	(VEC_PDEP): Likewise.
! 	(VEC_PERMX): Likewise.
! 	(VEC_PEXT): Likewise.
! 	(VEC_POPCNT): Likewise.
! 	(VEC_PARITY_LSBB): Likewise.
! 	(VEC_REPLACE_ELT): Likewise.
! 	(VEC_REPLACE_UN): Likewise.
! 	(VEC_REVB): Likewise.
! 	(VEC_RINT): Likewise.
! 	(VEC_RLMI): Likewise.
! 	(VEC_RLNM): Likewise.
! 	(VEC_SBOX_BE): Likewise.
! 	(VEC_SIGNEXTI): Likewise.
! 	(VEC_SIGNEXTLL): Likewise.
! 	(VEC_SIGNEXTQ): Likewise.
! 	(VEC_SLDB): Likewise.
! 	(VEC_SLV): Likewise.
! 	(VEC_SPLATI): Likewise.
! 	(VEC_SPLATID): Likewise.
! 	(VEC_SPLATI_INS): Likewise.
! 	(VEC_SQRT): Likewise.
! 	(VEC_SRDB): Likewise.
! 	(VEC_SRV): Likewise.
! 	(VEC_STRIL): Likewise.
! 	(VEC_STRIL_P): Likewise.
! 	(VEC_STRIR): Likewise.
! 	(VEC_STRIR_P): Likewise.
! 	(VEC_STXVL): Likewise.
! 	(VEC_TERNARYLOGIC): Likewise.
! 	(VEC_TEST_LSBB_ALL_ONES): Likewise.
! 	(VEC_TEST_LSBB_ALL_ZEROS): Likewise.
! 	(VEC_VEE): Likewise.
! 	(VEC_VES): Likewise.
! 	(VEC_VIE): Likewise.
! 	(VEC_VPRTYB): Likewise.
! 	(VEC_VSCEEQ): Likewise.
! 	(VEC_VSCEGT): Likewise.
! 	(VEC_VSCELT): Likewise.
! 	(VEC_VSCEUO): Likewise.
! 	(VEC_VSEE): Likewise.
! 	(VEC_VSES): Likewise.
! 	(VEC_VSIE): Likewise.
! 	(VEC_VSTDC): Likewise.
! 	(VEC_VSTDCN): Likewise.
! 	(VEC_VTDC): Likewise.
! 	(VEC_XL): Likewise.
! 	(VEC_XL_BE): Likewise.
! 	(VEC_XL_LEN_R): Likewise.
! 	(VEC_XL_SEXT): Likewise.
! 	(VEC_XL_ZEXT): Likewise.
! 	(VEC_XST): Likewise.
! 	(VEC_XST_BE): Likewise.
! 	(VEC_XST_LEN_R): Likewise.
! 	(VEC_XST_TRUNC): Likewise.
! 	(VEC_XXPERMDI): Likewise.
! 	(VEC_XXSLDWI): Likewise.
! 	(VEC_TSTSFI_EQ_DD): Likewise.
! 	(VEC_TSTSFI_EQ_TD): Likewise.
! 	(VEC_TSTSFI_GT_DD): Likewise.
! 	(VEC_TSTSFI_GT_TD): Likewise.
! 	(VEC_TSTSFI_LT_DD): Likewise.
! 	(VEC_TSTSFI_LT_TD): Likewise.
! 	(VEC_TSTSFI_OV_DD): Likewise.
! 	(VEC_TSTSFI_OV_TD): Likewise.
! 	(VEC_VADDCUQ): Likewise.
! 	(VEC_VADDECUQ): Likewise.
! 	(VEC_VADDEUQM): Likewise.
! 	(VEC_VADDUDM): Likewise.
! 	(VEC_VADDUQM): Likewise.
! 	(VEC_VBPERMQ): Likewise.
! 	(VEC_VCLZB): Likewise.
! 	(VEC_VCLZD): Likewise.
! 	(VEC_VCLZH): Likewise.
! 	(VEC_VCLZW): Likewise.
! 	(VEC_VCTZB): Likewise.
! 	(VEC_VCTZD): Likewise.
! 	(VEC_VCTZH): Likewise.
! 	(VEC_VCTZW): Likewise.
! 	(VEC_VEEDP): Likewise.
! 	(VEC_VEESP): Likewise.
! 	(VEC_VESDP): Likewise.
! 	(VEC_VESSP): Likewise.
! 	(VEC_VIEDP): Likewise.
! 	(VEC_VIESP): Likewise.
! 	(VEC_VPKSDSS): Likewise.
! 	(VEC_VPKSDUS): Likewise.
! 	(VEC_VPKUDUM): Likewise.
! 	(VEC_VPKUDUS): Likewise.
! 	(VEC_VPOPCNT): Likewise.
! 	(VEC_VPOPCNTB): Likewise.
! 	(VEC_VPOPCNTD): Likewise.
! 	(VEC_VPOPCNTH): Likewise.
! 	(VEC_VPOPCNTW): Likewise.
! 	(VEC_VPRTYBD): Likewise.
! 	(VEC_VPRTYBQ): Likewise.
! 	(VEC_VPRTYBW): Likewise.
! 	(VEC_VRLD): Likewise.
! 	(VEC_VSLD): Likewise.
! 	(VEC_VSRAD): Likewise.
! 	(VEC_VSRD): Likewise.
! 	(VEC_VSTDCDP): Likewise.
! 	(VEC_VSTDCNDP): Likewise.
! 	(VEC_VSTDCNQP): Likewise.
! 	(VEC_VSTDCNSP): Likewise.
! 	(VEC_VSTDCQP): Likewise.
! 	(VEC_VSTDCSP): Likewise.
! 	(VEC_VSUBECUQ): Likewise.
! 	(VEC_VSUBEUQM): Likewise.
! 	(VEC_VSUBUDM): Likewise.
! 	(VEC_VSUBUQM): Likewise.
! 	(VEC_VTDCDP): Likewise.
! 	(VEC_VTDCSP): Likewise.
! 	(VEC_VUPKHSW): Likewise.
! 	(VEC_VUPKLSW): Likewise.
  
! 2022-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	PR rtl-optimization/101260
! 	* regcprop.cc (maybe_mode_change): Invoke mode_change_ok also for
! 	copy_regno.
  
! 2022-02-01  Xi Ruoyao  <xry111@mengyan1223.wang>
  
! 	PR middle-end/95115
! 	* fold-const.cc (const_binop): Do not fold NaN result from
! 	  non-NaN operands.
  
! 2022-02-01  Tom de Vries  <tdevries@suse.de>
  
! 	* tree-loop-distribution.cc (generate_reduction_builtin_1): Check for
! 	-ftree-loop-distribute-patterns.
! 	(loop_distribution::execute): Don't call transform_reduction_loop for
! 	-fno-tree-loop-distribute-patterns.
  
! 2022-01-31  Andrew Pinski  <apinski@marvell.com>
  
! 	* fold-const.h (operand_compare::operand_equal_p):
! 	Fix comment about OEP_* flags.
  
! 2022-01-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104298
! 	* config/rs6000/aix.h (OPTION_GLIBC): Remove.
! 	* config/rs6000/darwin.h (OPTION_GLIBC): Likewise.
! 	* config/rs6000/option-defaults.h (OPTION_GLIBC): Define to 0
! 	if not already defined.
  
! 2022-01-31  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/104232
! 	* gimple-ssa-warn-access.cc (pointers_related_p): Add argument.
! 	Handle PHIs.  Add a synonymous overload.
! 	(pass_waccess::check_pointer_uses): Call pointers_related_p.
  
! 2022-01-31  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/100499
! 	* fold-const.cc (multiple_of_p): Pass the correct type of
! 	the expression to the recursive invocation of multiple_of_p
! 	for conversions and use CASE_CONVERT.
  
! 2022-01-31  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/104189
! 	* config/sparc/linux64.h (TARGET_DEFAULT): Add MASK_V8PLUS.
  
! 2022-01-31  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/100499
! 	* tree-cfg.cc (verify_gimple_assign_ternary): Use multiple_p
! 	on poly-ints instead of multiple_of_p.
! 	* tree-ssa.cc (maybe_rewrite_mem_ref_base): Likewise.
! 	(non_rewritable_mem_ref_base): Likewise.
! 	(non_rewritable_lvalue_p): Likewise.
! 	(execute_update_addresses_taken): Likewise.
  
! 2022-01-29  Jakub Jelinek  <jakub@redhat.com>
! 	    Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/104279
! 	PR tree-optimization/104280
! 	PR tree-optimization/104281
! 	* match.pd (1 / X -> X == 1 for unsigned X): Build eq with
! 	boolean_type_node and convert to type.  Formatting fixes.
  
! 2022-01-28  Yoshinori Sato  <yo-satoh@sios.com>
  
! 	* config/sh/t-linux (MULTILIB_EXCEPTIONS): Add m1, mb/m1 and m2a.
  
! 2022-01-28  Navid Rahimi  <navidrahimi@microsoft.com>
  
! 	PR tree-optimization/103514
! 	* match.pd (a & b) ^ (a == b) -> !(a | b): New optimization.
! 	(a & b) == (a ^ b) -> !(a | b): New optimization.
  
! 2022-01-28  Marek Polacek  <polacek@redhat.com>
  
! 	* doc/invoke.texi: Update -Wbidi-chars documentation.
  
! 2022-01-28  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* config/rs6000/darwin.h (OPTION_GLIBC): Define to 0.
  
! 2022-01-28  Zhao Wei Liew  <zhaoweiliew@gmail.com>
  
! 	PR tree-optimization/95424
! 	* match.pd: Simplify 1 / X where X is an integer.
  
! 2022-01-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104263
! 	* gimple-ssa-store-merging.cc (get_status_for_store_merging): For
! 	cfun->can_throw_non_call_exceptions && cfun->eh test whether
! 	last non-debug stmt in the bb is store_valid_for_store_merging_p
! 	rather than last stmt.
  
! 2022-01-28  Martin Liska  <mliska@suse.cz>
  
! 	* diagnostic.cc (diagnostic_action_after_output): Remove extra
! 	newline.
  
! 2022-01-28  Martin Liska  <mliska@suse.cz>
  
! 	* config/rs6000/host-darwin.cc (segv_crash_handler):
! 	Do not use leading capital letter.
! 	(segv_handler): Likewise.
! 	* ipa-sra.cc (verify_splitting_accesses): Likewise.
! 	* varasm.cc (get_section): Likewise.
  
! 2022-01-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104267
! 	* tree-vect-stmts.cc (vectorizable_call): Properly use the
! 	per-argument determined vector type for externals and
! 	invariants.
  
! 2022-01-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104263
! 	* tree-cfg.cc (gimple_purge_dead_abnormal_call_edges):
! 	Purge edges also when !cfun->has_nonlocal_label
! 	and !cfun->calls_setjmp.
  
! 2022-01-28  Maciej W. Rozycki  <macro@embecosm.com>
  
! 	* config/riscv/riscv.md: Document `auipc' and `bitmanip' `type'
! 	attributes.
  
! 2022-01-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR lto/104237
! 	* cfgrtl.cc (loc_equal): New function.
! 	(unique_locus_on_edge_between_p): Use it.
  
! 2022-01-28  Richard Biener  <rguenther@suse.de>
  
! 	* cfganal.h (mark_dfs_back_edges): Provide API with struct
! 	function argument.
! 	* cfganal.cc (mark_dfs_back_edges): Take a struct function
! 	to work on, add a wrapper passing cfun.
! 	* graph.cc (draw_cfg_nodes_no_loops): Replace stray cfun
! 	uses with fun which is already passed.
! 	(draw_cfg_edges): Likewise.
! 	(draw_cfg_nodes_for_loop): Do not use draw_cfg_nodes_for_loop
! 	for fun != cfun.
  
! 2022-01-27  Patrick Palka  <ppalka@redhat.com>
  
! 	PR c++/99895
! 	* tree.cc (build_call_vec): Add const to second parameter.
! 	* tree.h (build_call_vec): Likewise.
  
! 2022-01-27  Martin Liska  <mliska@suse.cz>
  
! 	PR web/104254
! 	* diagnostic.cc (diagnostic_initialize):
! 	Initialize report_bug flag.
! 	(diagnostic_action_after_output):
! 	Explain that -freport-bug option can be used for pre-processed
! 	file creation.  Make the message shorter.
! 	(error_recursion): Rename Internal to internal.
! 	* diagnostic.h (struct diagnostic_context): New field.
! 	* opts.cc (common_handle_option): Init the field here.
  
! 2022-01-27  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/103702
! 	* config/rs6000/rs6000.cc
! 	(rs6000_cost_data::update_target_cost_per_stmt): Fix one wrong
! 	assertion with early return.
  
! 2022-01-27  Chung-Lin Tang  <cltang@codesourcery.com>
  
! 	PR middle-end/103642
! 	* gimplify.cc (gimplify_scan_omp_clauses): Do not do indir_p handling
! 	for non-pointer or non-reference-to-pointer cases.
  
! 2022-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/104196
! 	* gimple-fold.h (rewrite_to_defined_overflow): Add IN_PLACE argument.
! 	* gimple-fold.cc (rewrite_to_defined_overflow): Likewise.  If true,
! 	return NULL and emit needed stmts before and after stmt.
! 	* tree-ssa-reassoc.cc (update_range_test): For inter-bb range opt
! 	pick as operand_entry that will hold the merged test the one feeding
! 	earliest condition, ensure that by swapping range->idx with some
! 	other range's idx if needed.  If seq is non-NULL, don't actually swap
! 	it but instead rewrite stmts with undefined overflow in between
! 	the two locations.
! 	(maybe_optimize_range_tests): Set ops[]->id to bb->index with the
! 	corresponding condition even if they have non-NULL ops[]->op.
! 	Formatting fix.
  
! 2022-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104239
! 	* config/rs6000/emmintrin.h (_mm_sad_epu8): Use __asm__ instead of
! 	asm.
! 	* config/rs6000/smmintrin.h (_mm_minpos_epu16): Declare iterator
! 	before for loop instead of for init clause.
! 	* config/rs6000/bmi2intrin.h (_pext_u64): Likewise.
  
! 2022-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104239
! 	* config/rs6000/bmiintrin.h: Test _X86GPRINTRIN_H_INCLUDED instead of
! 	_X86INTRIN_H_INCLUDED and adjust #error wording.
! 	* config/rs6000/bmi2intrin.h: Likewise.
  
! 2022-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/104194
! 	* dwarf2out.cc (long_double_as_float128): New function.
! 	(modified_type_die): For powerpc64le IEEE 754 quad long double
! 	and complex long double emit those as DW_TAG_typedef to
! 	_Float128 or complex _Float128 base type.
  
! 2022-01-26  Marek Polacek  <polacek@redhat.com>
  
! 	PR target/104213
! 	* gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer): Don't
! 	warn when the SSA_NAME_VAR of REF has supressed -Wuse-after-free.
  
! 2022-01-26  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-modref-tree.cc (modref_access_node::update):
! 	Remove "--param param=foo" with "--param foo".
! 	(modref_access_node::insert): Likewise.
! 	(modref_access_node::insert_kill): Likewise.
! 	* ipa-modref-tree.h (struct modref_ref_node): Likewise.
! 	(struct modref_base_node): Likewise.
! 	(struct modref_tree): Likewise.
  
! 2022-01-26  Raoni Fassina Firmino  <raoni@linux.ibm.com>
  
! 	PR target/94193
! 	* builtins.cc (expand_builtin_feclear_feraise_except): Add op0
! 	predicate check.
  
! 2022-01-25  Martin Sebor  <msebor@redhat.com>
  
! 	PR tree-optimization/104203
! 	* gimple-ssa-warn-access.cc (pass_data pass_data_waccess): Use
! 	TV_WARN_ACCESS.
! 	* pointer-query.cc (access_ref::merge_ref): Change return type.
! 	Convert failure to a conservative success.
! 	(access_ref::get_ref): Adjust to the change above.  Short-circuit
! 	PHI evaluation after first failure turned into conservative success.
! 	* pointer-query.h (access_ref::merge_ref): Change return type.
! 	* timevar.def (TV_WARN_ACCESS): New timer variable.
  
! 2022-01-25  David Edelsohn  <dje.gcc@gmail.com>
  
! 	* config/rs6000/aix.h (OPTION_GLIBC): Define as 0.
  
! 2022-01-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104214
! 	* tree-ssa-loop-niter.cc (number_of_iterations_cond): Use
! 	stronger guarantees for relational pointer compares when
! 	rewriting BASE0 + STEP0 cmp BASE1 + STEP1 as
! 	BASE0 + STEP0 - STEP1 cmp BASE1.
  
! 2022-01-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104172
! 	* config/rs6000/rs6000-internal.h (rs6000_passes_ieee128): Don't
! 	declare.
! 	* config/rs6000/rs6000.cc (rs6000_passes_ieee128,
! 	ieee128_mangling_gcc_8_1): Remove.
! 	(TARGET_ASM_GLOBALIZE_DECL_NAME): Don't redefine.
! 	(rs6000_mangle_type): Return "u9__ieee128" instead of
! 	ieee128_mangling_gcc_8_1 ? "U10__float128" : "u9__ieee128".
! 	(rs6000_globalize_decl_name): Remove.
! 	* config/rs6000/rs6000-call.cc (init_cumulative_args,
! 	rs6000_function_arg_advance_1): Don't set rs6000_passes_ieee128.
  
! 2022-01-24  Martin Sebor  <msebor@redhat.com>
  
! 	* pointer-query.cc (pointer_query::dump): Remove duplicate
! 	block.
  
! 2022-01-24  Marek Polacek  <polacek@redhat.com>
  
! 	PR preprocessor/104030
! 	* doc/invoke.texi: Update documentation for -Wbidi-chars.
  
! 2022-01-24  Raoni Fassina Firmino  <raoni@linux.ibm.com>
  
! 	PR target/94193
! 	* builtins.cc (expand_builtin_fegetround): New function.
! 	(expand_builtin_feclear_feraise_except): New function.
! 	(expand_builtin): Add cases for BUILT_IN_FEGETROUND,
! 	BUILT_IN_FECLEAREXCEPT and BUILT_IN_FERAISEEXCEPT.
! 	* config/rs6000/rs6000.md (fegetroundsi): New pattern.
! 	(feclearexceptsi): New Pattern.
! 	(feraiseexceptsi): New Pattern.
! 	* doc/extend.texi: Add a new introductory paragraph about the
! 	new builtins.
! 	* doc/md.texi: (fegetround@var{m}): Document new optab.
! 	(feclearexcept@var{m}): Document new optab.
! 	(feraiseexcept@var{m}): Document new optab.
! 	* optabs.def (fegetround_optab): New optab.
! 	(feclearexcept_optab): New optab.
! 	(feraiseexcept_optab): New optab.
  
! 2022-01-24  Richard Biener  <rguenther@suse.de>
! 	    Jiufu Guo  <guojiufu@linux.ibm.com>
  
! 	PR tree-optimization/100740
! 	PR tree-optimization/101508
! 	PR tree-optimization/101972
! 	PR tree-optimization/102131
! 	* tree-ssa-loop-niter.cc (number_of_iterations_cond): Properly
! 	constrain BASE0 + STEP0 cmp BASE1 + STEP1 to
! 	BASE0 + STEP0 - STEP1 cmp BASE1 transform.
  
! 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/104158
! 	* opt-functions.awk (var_set): Handle EnumBitSet property.
! 	* optc-gen.awk: Don't disallow RejectNegative if EnumBitSet is
! 	specified.
! 	* opts.h (enum cl_enum_var_value): New type.
! 	* opts-common.cc (decode_cmdline_option): Use CLEV_* values.
! 	Handle CLEV_BITSET.
! 	(cmdline_handle_error): Handle CLEV_BITSET.
! 	* opts.cc (test_enum_sets): Also test EnumBitSet requirements.
! 	* doc/options.texi (EnumBitSet): Document.
! 	* common.opt (fsanitize-coverage=): Use EnumBitSet instead of
! 	EnumSet.
! 	(trace-pc, trace-cmp): Drop Set properties.
  
! 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/104158
! 	* common.opt (flag_sanitize_coverage): Remove Variable entry.
! 	(fsanitize-coverage=): Remove RejectNegative property, add
! 	Var(flag_sanitize_coverage) and EnumSet properties.
! 	(trace-pc): Add Set(1) property.
! 	(trace-cmp): Add Set(2) property.
! 	* opts.cc (common_handle_option): Don't handle
! 	OPT_fsanitize_coverage_.
  
! 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/104158
! 	* opt-functions.awk (var_set): Handle EnumSet property.
! 	* optc-gen.awk: Don't disallow RejectNegative if EnumSet is
! 	specified.
! 	* opt-read.awk: Handle Set property.
! 	* opts.h (CL_ENUM_SET_SHIFT, CL_ERR_ENUM_SET_ARG): Define.
! 	(struct cl_decoded_option): Mention enum in value description.
! 	Add mask member.
! 	(set_option): Add mask argument defaulted to 0.
! 	* opts.cc (test_enum_sets): New function.
! 	(opts_cc_tests): Call it.
! 	* opts-common.cc (enum_arg_to_value): Change return argument
! 	from bool to int, on success return index into the cl_enum_arg
! 	array, on failure -1.  Add len argument, if non-0, use strncmp
! 	instead of strcmp.
! 	(opt_enum_arg_to_value): Adjust caller.
! 	(decode_cmdline_option): Handle EnumSet represented as
! 	CLVC_ENUM with non-zero var_value.  Initialize decoded->mask.
! 	(decode_cmdline_options_to_array): CLear opt_array[0].mask.
! 	(handle_option): Pass decoded->mask to set_options last argument.
! 	(generate_option): Clear decoded->mask.
! 	(generate_option_input_file): Likewise.
! 	(cmdline_handle_error): Handle CL_ERR_ENUM_SET_ARG.
! 	(set_option): Add mask argument, use it for CLVC_ENUM.
! 	(control_warning_option): Adjust enum_arg_to_value caller.
! 	* doc/options.texi: Document Set and EnumSet properties.
  
! 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR bootstrap/104170
! 	* config/linux.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
! 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
! 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
! 	using OPTION_*_P macros.
! 	* config/alpha/linux.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
! 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
! 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
! 	using OPTION_*_P macros.
! 	* config/rs6000/linux.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
! 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
! 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
! 	using OPTION_*_P macros.
! 	* config/rs6000/linux64.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
! 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
! 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
! 	using OPTION_*_P macros.
! 	* config/fuchsia.h (OPTION_MUSL_P): Redefine.
! 	* config/glibc-stdint.h (OPTION_MUSL_P): Define if not defined.
! 	* common/config/s390/s390-common.cc (s390_supports_split_stack): Re-add
! 	ATTRIBUTE_UNUSED to opts parameter.  If OPTION_GLIBC_P is defined, use
! 	OPTION_GLIBC_P (opts) as condition, otherwise assume if (false).
! 	* common/config/i386/i386-common.cc (ix86_supports_split_stack): If
! 	OPTION_GLIBC_P is defined use !OPTION_GLIBC_P (opts) as condition,
! 	otherwise assume if (true).
  
! 2022-01-24  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.cc (riscv_subset_list::to_string):
! 	Skip zicsr and zifencei if I-ext is 2.0.
  
! 2022-01-24  Jia-Wei Chen  <jiawei@iscas.ac.cn>
  
! 	* config.gcc: Modify default isa_spec version.
  
! 2022-01-24  Jiufu Guo  <guojiufu@linux.ibm.com>
  
! 	PR tree-optimization/102087
! 	* tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
! 	Correct PLUS result type.
  
! 2022-01-24  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/104188
! 	* config/i386/predicates.md (bcst_mem_operand): Also check mode
! 	of memory broadcast.
  
! 2022-01-23  Andrew Pinski  <apinski@marvell.com>
  
! 	PR target/64821
! 	* config/aarch64/aarch64-builtins.cc
! 	(aarch64_general_gimple_fold_builtin): Handle
! 	__builtin_aarch64_sqrt* and simplify into SQRT internal
! 	function.
  
! 2022-01-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/104176
! 	* opts-global.cc (handle_common_deferred_options): Quote
! 	--enable-plugin in diagnostics to avoid -Werror=format-diag.
  
! 2022-01-21  Michael Meissner  <meissner@the-meissners.org>
  
! 	PR target/104136
! 	* config/rs6000/rs6000-protos.h (prefixed_xxsplti_p): Delete.
! 	* config/rs6000/rs6000.cc (prefixed_xxsplti_p): Delete.
! 	* config/rs6000/rs6000.md (prefixed attribute): Delete section
! 	that sets the prefixed attribute for xxspltiw, xxspltidp, and
! 	xxsplti32dx instructions.
! 	(movsf_hardfloat): Explicitly set the prefixed attribute
! 	when xxspltiw and xxspltidp instructions are generated.
! 	(mov<mode>_hardfloat32): Likewise.
! 	(mov<mode>_hardfloat64): Likewise.
! 	* config/rs6000/vsx.md (vsx_mov<mode>_64bit): Explicitly set the
! 	prefixed attribute for xxspltiw and xxspltidp instructions.
! 	(vsx_mov<mode>_32bit): Likewise.
  
! 2022-01-21  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR bootstrap/104170
! 	* common/config/i386/i386-common.cc (ix86_supports_split_stack):
! 	Return true only on glibc.
! 	* config/i386/gnu-user-common.h (STACK_CHECK_STATIC_BUILTIN):
! 	Revert commit c163647ffbc.
! 	* config/i386/gnu.h (TARGET_LIBC_PROVIDES_SSP): Likewise.
  
! 2022-01-21  Sören Tempel  <soeren@soeren-tempel.net>
  
! 	* common/config/s390/s390-common.cc (s390_supports_split_stack):
! 	Only support split-stack on glibc targets.
! 	* config/i386/gnu-user-common.h (STACK_CHECK_STATIC_BUILTIN): Ditto.
! 	* config/i386/gnu.h (defined): Ditto.
  
! 2022-01-21  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	* config/rs6000/rs6000-overload.def (VEC_SLDW): Add instances for
! 	vector float and vector double.
  
! 2022-01-21  Bill Seurer  <seurer@gcc.gnu.org>
  
! 	* config/rs6000/rs6000.cc (rs6000_get_function_versions_dispatcher):
! 	Fix mention of ifunc in string.
  
! 2022-01-21  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR middle-end/104140
! 	* tree-ssa-math-opts.cc (convert_mult_to_highpart): Check that the
! 	operands of the widening multiplication are either both signed or
! 	both unsigned, and abort the conversion if mismatched.
! 	* doc/generic.texi (WIDEN_MULT_EXPR): Describe expression node.
! 	(MULT_HIGHPART_EXPR): Clarify that operands must have the same
! 	signedness.
! 	* tree.def (MULT_HIGHPART_EXPR): Document both operands must have
! 	integer types with the same precision and signedness.
! 	(WIDEN_MULT_EXPR): Document that operands must have integer types
! 	with the same precision, but possibly differing signedness.
! 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Defend against
! 	riscv_current_subset_list returning a NULL pointer (empty list).
  
! 2022-01-21  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	PR target/103676
! 	* ira.h (struct target_ira): Add member
! 	x_ira_exclude_class_mode_regs.
! 	(ira_exclude_class_mode_regs): New macro.
! 	* lra.h (lra_create_new_reg): Add arg exclude_start_hard_regs and
! 	move from here ...
! 	* lra-int.h: ... to here.
! 	(lra_create_new_reg_with_unique_value): Add arg
! 	exclude_start_hard_regs.
! 	(class lra_reg): Add member exclude_start_hard_regs.
! 	* lra-assigns.cc (find_hard_regno_for_1): Setup
! 	impossible_start_hard_regs from exclude_start_hard_regs.
! 	* lra-constraints.cc (get_reload_reg): Add arg exclude_start_hard_regs and pass
! 	it lra_create_new_reg[_with_unique_value].
! 	(match_reload): Ditto.
! 	(check_and_process_move): Pass NULL
! 	exclude_start_hard_regs to lra_create_new_reg_with_unique_value.
! 	(goal_alt_exclude_start_hard_regs): New static variable.
! 	(process_addr_reg, simplify_operand_subreg): Pass NULL
! 	exclude_start_hard_regs to lra_create_new_reg_with_unique_value
! 	and get_reload_reg.
! 	(process_alt_operands): Setup goal_alt_exclude_start_hard_regs.
! 	Use this_alternative_exclude_start_hard_regs additionally to find
! 	winning operand alternative.
! 	(base_to_reg, base_plus_disp_to_reg, index_part_to_reg): Pass NULL
! 	exclude_start_hard_regs to lra_create_new_reg.
! 	(process_address_1, emit_inc): Ditto.
! 	(curr_insn_transform): Pass exclude_start_hard_regs value to
! 	lra_create_new_reg, get_reload_reg, match_reload.
! 	(inherit_reload_reg, split_reg): Pass NULL exclude_start_hard_regs
! 	to lra_create_new_reg.
! 	(process_invariant_for_inheritance): Ditto.
! 	* lra-remat.cc (update_scratch_ops): Ditto.
! 	* lra.cc (lra_create_new_reg_with_unique_value): Add arg
! 	exclude_start_hard_regs.  Setup the corresponding member of
! 	lra reg info.
! 	(lra_create_new_reg): Add arg exclude_start_hard_regs and pass it
! 	to lra_create_new_reg_with_unique_value.
! 	(initialize_lra_reg_info_element): Initialize member
! 	exclude_start_hard_regs.
! 	(get_scratch_reg): Pass NULL to lra_create_new_reg.
! 	* ira.cc (setup_prohibited_class_mode_regs): Rename to
! 	setup_prohibited_and_exclude_class_mode_regs and calculate
! 	ira_exclude_class_mode_regs.
  
! 2022-01-21  Martin Liska  <mliska@suse.cz>
  
! 	* configure.ac: Detect ld_is_mold and use it for
! 	comdat_group=yes and gcc_cv_ld_hidden=yes.
! 	* configure: Regenerate.
  
! 2022-01-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/100089
! 	* tree-vect-slp.cc (vect_slp_region): Reject BB vectorization
! 	of if-converted loops with unvectorized COND_EXPRs for
! 	all but the unlimited cost models.
  
! 2022-01-21  Ard Biesheuvel  <ardb@kernel.org>
  
! 	* config/arm/arm-opts.h (enum stack_protector_guard): New.
! 	* config/arm/arm-protos.h (arm_stack_protect_tls_canary_mem):
! 	New.
! 	* config/arm/arm.cc (TARGET_STACK_PROTECT_GUARD): Define.
! 	(arm_option_override_internal): Handle and put in error checks.
! 	for stack protector guard options.
! 	(arm_option_reconfigure_globals): Likewise.
! 	(arm_stack_protect_tls_canary_mem): New.
! 	(arm_stack_protect_guard): New.
! 	* config/arm/arm.md (stack_protect_set): New.
! 	(stack_protect_set_tls): Likewise.
! 	(stack_protect_test): Likewise.
! 	(stack_protect_test_tls): Likewise.
! 	(reload_tp_hard): Likewise.
! 	* config/arm/arm.opt (-mstack-protector-guard): New
! 	(-mstack-protector-guard-offset): New.
! 	* doc/invoke.texi: Document new options.
  
! 2022-01-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104156
! 	* tree-ssa-loop-unswitch.cc (tree_unswitch_outer_loop):
! 	Collect and reset debug stmts with out-of-loop uses when
! 	hoisting guards.
! 	(find_loop_guard): Adjust.
! 	(empty_bb_without_guard_p): Likewise.  Ignore debug stmts.
! 	(used_outside_loop_p): Push debug uses to a vector of
! 	debug stmts to reset.
! 	(hoist_guard): Adjust -fopt-info category.
  
! 2022-01-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104152
! 	* tree-vect-slp.cc (vect_build_slp_tree_2): Add missing
! 	can_duplicate_and_interleave_p check.
  
! 2022-01-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
! 	Avoid passing var to warning_at when the format string doesn't
! 	refer to it.
  
! 2022-01-21  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/103721
! 	* gimple-range-path.cc
! 	(path_range_query::relations_may_be_invalidated): New.
! 	(path_range_query::compute_ranges_in_block): Reset relations if
! 	they may be invalidated.
! 	(path_range_query::maybe_register_phi_relation): Exit if relations
! 	may be invalidated on incoming edge.
! 	(path_range_query::compute_phi_relations): Pass incoming PHI edge
! 	to maybe_register_phi_relation.
! 	* gimple-range-path.h (relations_may_be_invalidated): New.
! 	(maybe_register_phi_relation): Pass edge instead of tree.
! 	* tree-ssa-threadbackward.cc (back_threader::back_threader):
! 	Mark DFS edges.
! 	* value-relation.cc (path_oracle::path_oracle): Call
! 	mark_dfs_back_edges.
! 	(path_oracle::register_relation): Add SSA names to m_registered
! 	bitmap.
! 	(path_oracle::reset_path): Clear m_registered bitmap.
! 	* value-relation.h (path_oracle::set_root_oracle): New.
  
! 2022-01-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/102478
! 	* optabs.cc (prepare_cmp_insn): If !can_create_pseudo_p (), don't
! 	force_reg constants and for -fnon-call-exceptions fail if copy_to_reg
! 	would be needed.
  
! 2022-01-20  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/100786
! 	* gimple-fold.cc (get_symbol_constant_value): Only return
! 	values of compatible type to the symbol.
  
! 2022-01-20  Andrew MacLeod  <amacleod@redhat.com>
  
! 	* value-relation.cc (relation_oracle::valid_equivs): Query and add
! 	if valid members of a set.
! 	(equiv_oracle::register_equiv): Call valid_equivs rather than
! 	bitmap direct operations.
! 	(path_oracle::register_equiv): Ditto.
! 	* value-relation.h (relation_oracle::valid_equivs): New prototype.
  
! 2022-01-20  Richard Biener  <rguenther@suse.de>
  
! 	PR target/100784
! 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Check for
! 	LHS before folding __builtin_ia32_shufpd and friends.
  
! 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config/arm/crypto.md (aes_op_protect): Allow moves from core
! 	registers and from memory.
! 	(aes_op_protect_misalign_load): New pattern.
! 	(aes_op_protect_neon_vld1v16qi): New pattern.
  
! 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config/arm/crypto.md (crypto_<CRYPTO_AESMC:crypto_pattern>_protected):
! 	New pattern.
! 	(aarch32_crypto_aese_fused_protected): Likewise.
! 	(aarch32_crypto_aesd_fused_protected): Likewise.
  
! 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config/arm/crypto.md (crypto_<CRYPTO_AES:crypto_pattern>): Convert
! 	to define_expand.  Add mitigation for the Cortex-A AES erratum
! 	when enabled.
! 	(*crypto_<CRYPTO_AES:crypto_pattern>_insn): New pattern, based
! 	on original crypto_<CRYPTO_AES:crypto_pattern> insn.
! 	(aes_op_protect): New pattern.
! 	* config/arm/unspecs.md (unspec): Add UNSPEC_AES_PROTECT.
  
! 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config/arm/arm-cpus.in (quirk_aes_1742098): New quirk feature
! 	(ALL_QUIRKS): Add it.
! 	(cortex-a57, cortex-a72): Enable it.
! 	(cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
! 	* config/arm/arm.opt (mfix-cortex-a57-aes-1742098): New command-line
! 	option.
! 	(mfix-cortex-a72-aes-1655431): New option alias.
! 	* config/arm/arm.cc (arm_option_override): Handle default settings
! 	for AES erratum switch.
! 	* doc/invoke.texi (Arm Options): Document new options.
  
! 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config/arm/crypto.md (crypto_<CYRPTO_AES:crypto_pattern>): Use
! 	<crypto_mode> rather than hard-coding the mode.
! 	(crypto_<CRYPTO_AESMC:crypto_pattern>): Fix white space.
! 	(crypto_<CRYPTO_AES:crypto_pattern>): Likewise.
! 	(*aarch32_crypto_aese_fused): Likewise.
! 	(*aarch32_crypto_aesd_fused): Likewise.
! 	(crypto_<CRYPTO_BINARY:crypto_pattern>): Likewise.
! 	(crypto_<CRYPTO_TERNARY:crypto_pattern>): Likewise.
! 	(crypto_sha1h_lb): Likewise.
! 	(crypto_vmullp64): Likewise.
! 	(crypto_<CRYPTO_SELECTING:crypto_pattern>): Likewise.
! 	(crypto_<CRYPTO_SELECTING:crypto_pattern>_lb): Likewise.
  
! 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
  
! 	* config/arm/crypto.md (crypto_<CRYPTO_AESMC:crypto_pattern>): Add
! 	iterator to pattern name to disambiguate.
! 	(crypto_<CRYPTO_AES:crypto_pattern>): Likewise.
! 	(crypto_<CRYPTO_BINARY:crypto_pattern>): Likewise.
! 	(crypto_<CRYPTO_TERNARY:crypto_pattern>): Likewise.
! 	(crypto_<CRYPTO_SELECTING:crypto_pattern>): Likewise.
! 	(crypto_<CRYPTO_SELECTING:crypto_pattern>_lb): Likewise.
  
! 2022-01-20  Martin Liska  <mliska@suse.cz>
  
! 	PR bootstrap/104135
! 	* emit-rtl.cc (make_insn_raw): Fix -Wformat-diag warnings.
! 	* rtl.cc: Partially disable -Wformat-diag for RTL checking
! 	error messages.
  
! 2022-01-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/103874
! 	* dwarf2out.cc (index_rnglists): For !HAVE_AS_LEB128 and
! 	block_num > 0, index entry even if !have_multiple_function_sections.
  
! 2022-01-20  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/103771
! 	* tree-vect-stmts.cc (supportable_narrowing_operation): Enhance
! 	integral mode mask pack by multi steps which takes
! 	vec_pack_sbool_trunc_optab as start when elements number is
! 	less than BITS_PER_UNITS.
  
! 2022-01-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104114
! 	* tree-vect-generic.cc (expand_vector_piecewise): Do not diagnose
! 	single element vector decomposition.
  
! 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* ifcvt.cc (noce_convert_multiple_sets_1): New function.
! 	(noce_convert_multiple_sets): Call function a second time if we can
! 	improve the first try.
  
! 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* ifcvt.cc (cond_exec_get_condition): New parameter to allow getting the
! 	reversed comparison.
! 	(try_emit_cmove_seq): New function to facilitate creating a cmov
! 	sequence.
! 	(noce_convert_multiple_sets): Create two sequences and use the less
! 	expensive one.
  
! 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* rtl.h (struct rtx_comparison): New struct that holds an rtx
! 	comparison.
! 	* config/rs6000/rs6000.cc (rs6000_emit_minmax): Use struct instead of
! 	single parameters.
! 	(rs6000_emit_swsqrt): Likewise.
! 	* expmed.cc (expand_sdiv_pow2): Likewise.
! 	(emit_store_flag): Likewise.
! 	* expr.cc (expand_cond_expr_using_cmove): Likewise.
! 	(expand_expr_real_2): Likewise.
! 	* ifcvt.cc (noce_emit_cmove): Add compare and reversed compare
! 	parameters.
! 	* optabs.cc (emit_conditional_move_1): New function.
! 	(expand_doubleword_shift_condmove): Use struct.
! 	(emit_conditional_move): Use struct and allow to call directly
! 	without going through preparation steps.
! 	* optabs.h (emit_conditional_move): Use struct.
  
! 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* ifcvt.cc (bb_ok_for_noce_convert_multiple_sets): Estimate insns costs.
! 	(noce_process_if_block): Use potential costs.
  
! 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* ifcvt.cc (noce_convert_multiple_sets): Allow constants.
! 	(bb_ok_for_noce_convert_multiple_sets): Likewise.
  
! 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* ifcvt.cc (need_cmov_or_rewire): New function.
! 	(noce_convert_multiple_sets): Call it.
  
! 2022-01-19  David Malcolm  <dmalcolm@redhat.com>
  
! 	* attribs.cc (attribute_c_tests): Rename to...
! 	(attribs_cc_tests): ...this.
! 	* bitmap.cc (bitmap_c_tests): Rename to...
! 	(bitmap_cc_tests): ...this.
! 	* cgraph.cc (cgraph_c_finalize): Rename to...
! 	(cgraph_cc_finalize): ...this.
! 	(cgraph_c_tests): Rename to...
! 	(cgraph_cc_tests): ...this.
! 	* cgraph.h (cgraph_c_finalize): Rename to...
! 	(cgraph_cc_finalize): ...this.
! 	(cgraphunit_c_finalize): Rename to...
! 	(cgraphunit_cc_finalize): ...this.
! 	* cgraphunit.cc (cgraphunit_c_finalize): Rename to...
! 	(cgraphunit_cc_finalize): ...this.
! 	* convert.cc (convert_c_tests): Rename to...
! 	(convert_cc_tests): ...this.
! 	* dbgcnt.cc (dbgcnt_c_tests): Rename to...
! 	(dbgcnt_cc_tests): ...this.
! 	* diagnostic-show-locus.cc (diagnostic_show_locus_c_tests): Rename to...
! 	(diagnostic_show_locus_cc_tests): ...this.
! 	* diagnostic.cc (diagnostic_c_tests): Rename to...
! 	(diagnostic_cc_tests): ...this.
! 	* dumpfile.cc (dumpfile_c_tests): Rename to...
! 	(dumpfile_cc_tests): ...this.
! 	* dwarf2out.cc (dwarf2out_c_finalize): Rename to...
! 	(dwarf2out_cc_finalize): ...this.
! 	* dwarf2out.h (dwarf2out_c_finalize): Rename to...
! 	(dwarf2out_cc_finalize): ...this.
! 	* edit-context.cc (edit_context_c_tests): Rename to...
! 	(edit_context_cc_tests): ...this.
! 	* et-forest.cc (et_forest_c_tests): Rename to...
! 	(et_forest_cc_tests): ...this.
! 	* fibonacci_heap.cc (fibonacci_heap_c_tests): Rename to...
! 	(fibonacci_heap_cc_tests): ...this.
! 	* fold-const.cc (fold_const_c_tests): Rename to...
! 	(fold_const_cc_tests): ...this.
! 	* function-tests.cc (function_tests_c_tests): Rename to...
! 	(function_tests_cc_tests): ...this.
! 	* gcse.cc (gcse_c_finalize): Rename to...
! 	(gcse_cc_finalize): ...this.
! 	* gcse.h (gcse_c_finalize): Rename to...
! 	(gcse_cc_finalize): ...this.
! 	* ggc-tests.cc (ggc_tests_c_tests): Rename to...
! 	(ggc_tests_cc_tests): ...this.
! 	* gimple-ssa-store-merging.cc (store_merging_c_tests): Rename to...
! 	(store_merging_cc_tests): ...this.
! 	* gimple.cc (gimple_c_tests): Rename to...
! 	(gimple_cc_tests): ...this.
! 	* hash-map-tests.cc (hash_map_tests_c_tests): Rename to...
! 	(hash_map_tests_cc_tests): ...this.
! 	* hash-set-tests.cc (hash_set_tests_c_tests): Rename to...
! 	(hash_set_tests_cc_tests): ...this.
! 	* input.cc (input_c_tests): Rename to...
! 	(input_cc_tests): ...this.
! 	* ipa-cp.cc (ipa_cp_c_finalize): Rename to...
! 	(ipa_cp_cc_finalize): ...this.
! 	* ipa-fnsummary.cc (ipa_fnsummary_c_finalize): Rename to...
! 	(ipa_fnsummary_cc_finalize): ...this.
! 	* ipa-fnsummary.h (ipa_fnsummary_c_finalize): Rename to...
! 	(ipa_fnsummary_cc_finalize): ...this.
! 	* ipa-modref-tree.cc (ipa_modref_tree_c_tests): Rename to...
! 	(ipa_modref_tree_cc_tests): ...this.
! 	* ipa-modref-tree.h (modref_c_tests): Delete bogus decl.
! 	* ipa-modref.cc (ipa_modref_c_finalize): Rename to...
! 	(ipa_modref_cc_finalize): ...this.
! 	* ipa-modref.h (ipa_modref_c_finalize): Rename to...
! 	(ipa_modref_cc_finalize): ...this.
! 	* ipa-prop.h (ipa_cp_c_finalize): Rename to...
! 	(ipa_cp_cc_finalize): ...this.
! 	* ipa-reference.cc (ipa_reference_c_finalize): Rename to...
! 	(ipa_reference_cc_finalize): ...this.
! 	* ipa-reference.h (ipa_reference_c_finalize): Rename to...
! 	(ipa_reference_cc_finalize): ...this.
! 	* ira-costs.cc (ira_costs_c_finalize): Rename to...
! 	(ira_costs_cc_finalize): ...this.
! 	* ira.h (ira_costs_c_finalize): Rename to...
! 	(ira_costs_cc_finalize): ...this.
! 	* opt-suggestions.cc (opt_proposer_c_tests): Rename to...
! 	(opt_suggestions_cc_tests): ...this.
! 	* opts.cc (opts_c_tests): Rename to...
! 	(opts_cc_tests): ...this.
! 	* predict.cc (predict_c_tests): Rename to...
! 	(predict_cc_tests): ...this.
! 	* pretty-print.cc (pretty_print_c_tests): Rename to...
! 	(pretty_print_cc_tests): ...this.
! 	* read-rtl-function.cc (read_rtl_function_c_tests): Rename to...
! 	(read_rtl_function_cc_tests): ...this.
! 	* rtl-tests.cc (rtl_tests_c_tests): Rename to...
! 	(rtl_tests_cc_tests): ...this.
! 	* sbitmap.cc (sbitmap_c_tests): Rename to...
! 	(sbitmap_cc_tests): ...this.
! 	* selftest-run-tests.cc (selftest::run_tests): Update calls for
! 	_c_ to _cc_ function renamings; fix names of attribs and
! 	opt-suggestions tests.
! 	* selftest.cc (selftest_c_tests): Rename to...
! 	(selftest_cc_tests): ...this.
! 	* selftest.h (attribute_c_tests): Rename to...
! 	(attribs_cc_tests): ...this.
! 	(bitmap_c_tests): Rename to...
! 	(bitmap_cc_tests): ...this.
! 	(cgraph_c_tests): Rename to...
! 	(cgraph_cc_tests): ...this.
! 	(convert_c_tests): Rename to...
! 	(convert_cc_tests): ...this.
! 	(diagnostic_c_tests): Rename to...
! 	(diagnostic_cc_tests): ...this.
! 	(diagnostic_show_locus_c_tests): Rename to...
! 	(diagnostic_show_locus_cc_tests): ...this.
! 	(dumpfile_c_tests): Rename to...
! 	(dumpfile_cc_tests): ...this.
! 	(edit_context_c_tests): Rename to...
! 	(edit_context_cc_tests): ...this.
! 	(et_forest_c_tests): Rename to...
! 	(et_forest_cc_tests): ...this.
! 	(fibonacci_heap_c_tests): Rename to...
! 	(fibonacci_heap_cc_tests): ...this.
! 	(fold_const_c_tests): Rename to...
! 	(fold_const_cc_tests): ...this.
! 	(function_tests_c_tests): Rename to...
! 	(function_tests_cc_tests): ...this.
! 	(ggc_tests_c_tests): Rename to...
! 	(ggc_tests_cc_tests): ...this.
! 	(gimple_c_tests): Rename to...
! 	(gimple_cc_tests): ...this.
! 	(hash_map_tests_c_tests): Rename to...
! 	(hash_map_tests_cc_tests): ...this.
! 	(hash_set_tests_c_tests): Rename to...
! 	(hash_set_tests_cc_tests): ...this.
! 	(input_c_tests): Rename to...
! 	(input_cc_tests): ...this.
! 	(opts_c_tests): Rename to...
! 	(opts_cc_tests): ...this.
! 	(predict_c_tests): Rename to...
! 	(predict_cc_tests): ...this.
! 	(pretty_print_c_tests): Rename to...
! 	(pretty_print_cc_tests): ...this.
! 	(read_rtl_function_c_tests): Rename to...
! 	(read_rtl_function_cc_tests): ...this.
! 	(rtl_tests_c_tests): Rename to...
! 	(rtl_tests_cc_tests): ...this.
! 	(sbitmap_c_tests): Rename to...
! 	(sbitmap_cc_tests): ...this.
! 	(selftest_c_tests): Rename to...
! 	(selftest_cc_tests): ...this.
! 	(simplify_rtx_c_tests): Rename to...
! 	(simplify_rtx_cc_tests): ...this.
! 	(spellcheck_c_tests): Rename to...
! 	(spellcheck_cc_tests): ...this.
! 	(spellcheck_tree_c_tests): Rename to...
! 	(spellcheck_tree_cc_tests): ...this.
! 	(sreal_c_tests): Rename to...
! 	(sreal_cc_tests): ...this.
! 	(store_merging_c_tests): Rename to...
! 	(store_merging_cc_tests): ...this.
! 	(tree_c_tests): Rename to...
! 	(tree_cc_tests): ...this.
! 	(tree_cfg_c_tests): Rename to...
! 	(tree_cfg_cc_tests): ...this.
! 	(typed_splay_tree_c_tests): Rename to...
! 	(typed_splay_tree_cc_tests): ...this.
! 	(vec_c_tests): Rename to...
! 	(vec_cc_tests): ...this.
! 	(vec_perm_indices_c_tests): Rename to...
! 	(vec_perm_indices_cc_tests): ..this.
! 	(opt_proposer_c_tests): Rename to...
! 	(opt_suggestions_cc_tests): ...this.
! 	(dbgcnt_c_tests): Rename to...
! 	(dbgcnt_cc_tests): ...this.
! 	(ipa_modref_tree_c_tests): Rename to...
! 	(ipa_modref_tree_cc_tests): ...this.
! 	* simplify-rtx.cc (simplify_rtx_c_tests): Rename to...
! 	(simplify_rtx_cc_tests): ...this.
! 	* spellcheck-tree.cc (spellcheck_tree_c_tests): Rename to...
! 	(spellcheck_tree_cc_tests): ...this.
! 	* spellcheck.cc (spellcheck_c_tests): Rename to...
! 	(spellcheck_cc_tests): ...this.
! 	* sreal.cc (sreal_c_tests): Rename to...
! 	(sreal_cc_tests): ...this.
! 	* toplev.cc (toplev::finalize): Update calls for _c_ to _cc_
! 	function renamings.
! 	* tree-cfg.cc (tree_cfg_c_tests): Rename to...
! 	(tree_cfg_cc_tests): ...this.
! 	* tree.cc (tree_c_tests): Rename to...
! 	(tree_cc_tests): ...this.
! 	* typed-splay-tree.cc (typed_splay_tree_c_tests): Rename to...
! 	(typed_splay_tree_cc_tests): ...this.
! 	* vec-perm-indices.cc (vec_perm_indices_c_tests): Rename to...
! 	(vec_perm_indices_cc_tests): ...this.
! 	* vec.cc (vec_c_tests): Rename to...
! 	(vec_cc_tests): ...this.
  
! 2022-01-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR tree-optimization/103997
! 	* tree-vect-loop.cc (vect_analyze_loop): Fix mode skipping for epilogue
! 	vectorization.
  
! 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/102860
! 	* match.pd (x %[fl] y -> x % y): New simplification for
! 	unsigned integral types.
! 	* optabs-tree.cc (optab_for_tree_code): Return unknown_optab
! 	for {CEIL,FLOOR,ROUND}_{DIV,MOD}_EXPR with VECTOR_TYPE.
  
! 2022-01-19  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104112
! 	* tree-vect-loop.cc (vect_find_reusable_accumulator): Check
! 	for required intermediate vector types.
  
! 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Add default:.
  
! 2022-01-19  Martin Liska  <mliska@suse.cz>
  
! 	* configure.ac: Remove -Wno-error=format-diag.
! 	* configure: Regenerate.
  
! 2022-01-19  Martin Liska  <mliska@suse.cz>
  
! 	* config/riscv/riscv.cc (riscv_handle_type_attribute):
! 	Update one -Wformat-diag string in warning message.
  
! 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/104103
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_call): Don't check
! 	.ASAN_MARK calls.
  
! 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/89074
! 	* fold-const.cc (address_compare): Consider different STRING_CSTs
! 	with the same lengths that memcmp the same as equal, not different.
  
! 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/sse.md (*aes<aeswideklvariant>u*): Use %0 instead of
! 	{%0}.
  
! 2022-01-19  Martin Liska  <mliska@suse.cz>
! 	    Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* config/nvptx/nvptx.cc (nvptx_goacc_validate_dims_1): Update
! 	warning messages.
  
! 2022-01-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	PR target/104090
! 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Use also
! 	rs6000_cpu.
  
! 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/104104
! 	* config/i386/sse.md
! 	(<avx512>_<complexopname>_<mode><maskc_name><round_name>,
! 	avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>,
! 	avx512dq_mul<mode>3<mask_name>, <avx2_avx512>_permvar<mode><mask_name>,
! 	avx2_perm<mode>_1<mask_name>, avx512f_perm<mode>_1<mask_name>,
! 	avx512dq_rangep<mode><mask_name><round_saeonly_name>,
! 	avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
! 	<avx512>_getmant<mode><mask_name><round_saeonly_name>,
! 	avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
! 	Use vxorps\t%x0, %x0, %x0 instead of vxorps\t{%x0, %x0, %x0}.
  
! 2022-01-19  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/104069
! 	* gimple-ssa-warn-access.cc (pointers_related_p): Return false for
! 	an unknown result as documented.
  
! 2022-01-18  Andrew Pinski  <apinski@marvell.com>
  
! 	* ipa-split.cc (visit_bb): Fix comment before the
! 	warning/error attribute checking code.
  
! 2022-01-18  David Faust  <david.faust@oracle.com>
  
! 	* config/bpf/coreout.cc (bpf_core_reloc_add): Do not account
! 	for base strtab offset yet as it may change.
! 	(output_asm_btfext_core_reloc): Do so here instead.
! 	(output_btfext_core_sections): Likewise.
  
! 2022-01-18  David Faust  <david.faust@oracle.com>
  
! 	* config/bpf/coreout.cc (output_btfext_header): Account for
! 	4-byte record size in core_relo_len.
! 	(output_btfext_core_sections): Only write record size once.
! 	* config/bpf/coreout.h (btf_ext_section_header): Delete unused
! 	member.
  
! 2022-01-18  Maciej W. Rozycki  <macro@embecosm.com>
  
! 	* common/config/riscv/riscv-common.cc
! 	(riscv_subset_list::parse_multiletter_ext): Move pointer
! 	arithmetic ahead of `free'.
  
! 2022-01-18  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/104007
! 	* gimplify.cc (gimple_push_cleanup): Handle eh_only in conditional
! 	context.
  
! 2022-01-18  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	PR middle-end/103163
! 	* emit-rtl.cc (init_emit_regs): Initialize stack_limit_rtx here...
! 	(init_emit_once): ...not here.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* collect2.cc (scan_libraries): Fix -Wformat-diag issues.
! 	* config/aarch64/aarch64-builtins.cc (aarch64_simd_expand_builtin): Likewise.
! 	* config/arc/arc.md: Likewise.
! 	* config/avr/avr.cc (avr_section_type_flags): Likewise.
! 	* config/bfin/bfin.cc (bfin_option_override): Likewise.
! 	(bfin_handle_longcall_attribute): Likewise.
! 	* config/cris/cris.h (FUNCTION_PROFILER): Likewise.
! 	* config/frv/frv.cc (frv_expand_builtin): Likewise.
! 	* config/ia64/ia64-c.cc (ia64_hpux_handle_builtin_pragma): Likewise.
! 	* config/iq2000/iq2000.cc (save_restore_insns): Likewise.
! 	(iq2000_print_operand_address): Likewise.
! 	(iq2000_print_operand): Likewise.
! 	* config/m32c/m32c-pragma.cc (m32c_pragma_memregs): Likewise.
! 	(m32c_pragma_address): Likewise.
! 	* config/m68k/m68k.cc (m68k_handle_fndecl_attribute): Likewise.
! 	* config/mips/mips.cc (mips_handle_interrupt_attr): Likewise.
! 	(mips_set_compression_mode): Likewise.
! 	* config/mmix/mmix.cc (mmix_function_profiler): Likewise.
! 	(mmix_print_operand): Likewise.
! 	(mmix_output_shiftvalue_op_from_str): Likewise.
! 	(mmix_output_shifted_value): Likewise.
! 	* config/msp430/driver-msp430.cc (msp430_select_hwmult_lib): Likewise.
! 	* config/msp430/msp430.cc (msp430_option_override): Likewise.
! 	(msp430_attr): Likewise.
! 	(msp430_expand_delay_cycles): Likewise.
! 	(msp430_expand_builtin): Likewise.
! 	* config/rs6000/aix73.h: Likewise.
! 	* config/rs6000/rtems.h (INVALID_64BIT): Likewise.
! 	* config/rx/rx.cc (rx_expand_builtin_mvtc): Likewise.
! 	(valid_psw_flag): Likewise.
! 	* config/sh/sh.cc (parse_validate_atomic_model_option): Likewise.
! 	* config/stormy16/stormy16.cc (xstormy16_function_profiler): Likewise.
! 	(xstormy16_expand_builtin_va_start): Likewise.
! 	(xstormy16_handle_below100_attribute): Likewise.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/vms/vms-c.cc (vms_pragma_nostandard): Fix -Wformat-diag
! 	warning.
! 	(vms_pragma_standard): Likewise.
! 	(vms_pragma_extern_prefix): Likewise.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/xtensa/xtensa.cc (print_operand): Fix warnings.
! 	(print_operand_address): Likewise.
! 	(xtensa_multibss_section_type_flags): Likewise.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Change
! 	wording of an error message.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/v850/v850-c.cc (pop_data_area): Fix -Wformat-diag
! 	warning.
! 	(ghs_pragma_section): Likewise.
! 	(ghs_pragma_interrupt): Likewise.
! 	(ghs_pragma_starttda): Likewise.
! 	(ghs_pragma_startsda): Likewise.
! 	(ghs_pragma_startzda): Likewise.
! 	(ghs_pragma_endtda): Likewise.
! 	(ghs_pragma_endsda): Likewise.
! 	(ghs_pragma_endzda): Likewise.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/nds32/nds32-intrinsic.cc (nds32_expand_builtin_impl):
! 	Fix warnings.
! 	* config/nds32/nds32-intrinsic.md: Likewise.
! 	* config/nds32/nds32-isr.cc (nds32_check_isr_attrs_conflict): Likewise.
! 	* config/nds32/nds32.cc (nds32_print_operand): Likewise.
! 	(nds32_insert_attributes): Likewise.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/nvptx/nvptx.cc (nvptx_goacc_validate_dims_1): Wrap
! 	keyword.
! 	* config/nvptx/nvptx.md: Remove trailing dot.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* common/config/riscv/riscv-common.cc (riscv_subset_list::add):
! 	Wrap keywords with quotes and remove trailing dots.
! 	(riscv_subset_list::parsing_subset_version): Likewise.
! 	(riscv_subset_list::parse_std_ext): Likewise.
! 	(riscv_subset_list::parse_multiletter_ext): Likewise.
! 	* config/riscv/riscv.cc (riscv_handle_type_attribute): Likewise.
  
! 2022-01-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* tree-vect-loop.cc (vect_estimate_min_profitable_iters): Pass new
! 	argument suggested_unroll_factor.
! 	(vect_analyze_loop_costing): Likewise.
! 	(_loop_vec_info::_loop_vec_info): Initialize new member
! 	suggested_unroll_factor.
! 	(vect_determine_partial_vectors_and_peeling): Make epilogue of unrolled
! 	main loop use partial vectors.
! 	(vect_analyze_loop_2): Pass and use new argument
! 	suggested_unroll_factor.
! 	(vect_analyze_loop_1): Change to intialize local
! 	suggested_unroll_factor and use it.
! 	(vectorizable_reduction): Don't use single_defuse_cycle when unrolling.
! 	* tree-vectorizer.h (_loop_vec_info::_loop_vec_info): Add new member
! 	suggested_unroll_factor.
! 	(vector_costs::vector_costs): Add new member m_suggested_unroll_factor.
! 	(vector_costs::suggested_unroll_factor): New getter function.
! 	(finish_cost): Set return argument suggested_unroll_factor.
  
! 2022-01-18  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/104038
! 	* doc/invoke.texi (relation-block-limit): New.
! 	* params.opt (relation-block-limit): New.
! 	* value-relation.cc (dom_oracle::register_relation): Check for NULL
! 	record before invoking transitive registery.
! 	(dom_oracle::set_one_relation): Check limit before creating record.
! 	(dom_oracle::register_transitives): Stop when no record created.
! 	* value-relation.h (relation_chain_head::m_num_relations): New.
  
! 2022-01-18  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/103989
! 	* ipa-inline.cc (inline_small_functions): Do not enqueue call
! 	edges originating in functions compiled with -Og.
  
! 2022-01-18  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/103989
! 	* passes.def (pass_all_optimizations_g): Remove pass_modref
! 	and pass_local_pure_const.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/s390/s390.cc: Fix -Wformat-diag warnings.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/s390/s390-c.cc (s390_expand_overloaded_builtin): Wrap
! 	keyword in quotes.
! 	(s390_resolve_overloaded_builtin): Remove trailing dot.
! 	* config/s390/s390.cc (s390_const_operand_ok): Use - for range.
! 	(s390_expand_builtin): Remove trailing dot.
! 	(s390_emit_prologue): Likewise, use semicolon.
! 	(s390_option_override_internal): Update keyword.
! 	* varasm.cc (do_assemble_alias): Wrap keyword in quotes.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* config/rs6000/rs6000-call.cc (rs6000_expand_builtin): Wrap
! 	keywords and use %qs instead of %<%s%>.
  
! 2022-01-18  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103987
! 	* tree-ssa-dse.cc (dse_optimize_call): Properly guard modref
! 	query with a pointer check.
  
! 2022-01-18  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/104005
! 	* config/aarch64/aarch64.cc (aarch64_check_consecutive_mems):
! 	When using MEM_EXPR, require the base to be a decl.
  
! 2022-01-18  Richard Biener  <rguenther@suse.de>
  
! 	* cgraph.h (struct cgraph_simd_clone_arg): Re-arrange fields to
! 	avoid padding.
! 	* function.h (struct function): Likewise.
  
! 2022-01-18  Arnaud Charlet  <charlet@adacore.com>
  
! 	* doc/install.texi: Update prerequisites for GNAT
  
! 2022-01-18  Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/101941
! 	* ipa-split.cc (visit_bb): Disallow function calls where
! 	the function has either error or warning attribute.
  
! 2022-01-18  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/104064
! 	* tree-vect-data-refs.cc (vect_analyze_data_ref_accesses): Check
! 	DR_INIT fits in a signed HWI, represent the difference from the
! 	first DR in unsigned.
  
! 2022-01-17  Martin Liska  <mliska@suse.cz>
  
! 	* Makefile.in: Rename .c names to .cc.
! 	* config.gcc: Likewise.
! 	* configure: Regenerate. Likewise.
! 	* configure.ac: Likewise.
! 	* gengtype.cc (set_gc_used): Likewise.
! 	(source_dot_c_frul): Likewise.
! 	(source_dot_cc_frul): Likewise.
! 	(struct file_rule_st): Likewise.
! 	(close_output_files): Likewise.
! 	* config/avr/t-avr: Use CXXFLAGS_* and CXX_FOR_BUILD.
  
! 2022-01-17  Martin Liska  <mliska@suse.cz>
  
! 	* Makefile.in: Rename .c names to .cc.
! 	* alias.h: Likewise.
! 	* asan.cc: Likewise.
! 	* auto-profile.h: Likewise.
! 	* basic-block.h (struct basic_block_d): Likewise.
! 	* btfout.cc: Likewise.
! 	* builtins.cc (expand_builtin_longjmp): Likewise.
! 	(validate_arg): Likewise.
! 	(access_ref::offset_bounded): Likewise.
! 	* caller-save.cc (reg_restore_code): Likewise.
! 	(setup_save_areas): Likewise.
! 	* calls.cc (initialize_argument_information): Likewise.
! 	(expand_call): Likewise.
! 	(emit_library_call_value_1): Likewise.
! 	* cfg-flags.def (RTL): Likewise.
! 	(SIBCALL): Likewise.
! 	(CAN_FALLTHRU): Likewise.
! 	* cfganal.cc (post_order_compute): Likewise.
! 	* cfgcleanup.cc (try_simplify_condjump): Likewise.
! 	(merge_blocks_move_predecessor_nojumps): Likewise.
! 	(merge_blocks_move_successor_nojumps): Likewise.
! 	(merge_blocks_move): Likewise.
! 	(old_insns_match_p): Likewise.
! 	(try_crossjump_bb): Likewise.
! 	* cfgexpand.cc (expand_gimple_stmt): Likewise.
! 	* cfghooks.cc (split_block_before_cond_jump): Likewise.
! 	(profile_record_check_consistency): Likewise.
! 	* cfghooks.h: Likewise.
! 	* cfgrtl.cc (pass_free_cfg::execute): Likewise.
! 	(rtl_can_merge_blocks): Likewise.
! 	(try_redirect_by_replacing_jump): Likewise.
! 	(make_pass_outof_cfg_layout_mode): Likewise.
! 	(cfg_layout_can_merge_blocks_p): Likewise.
! 	* cgraph.cc (release_function_body): Likewise.
! 	(cgraph_node::get_fun): Likewise.
! 	* cgraph.h (struct cgraph_node): Likewise.
! 	(asmname_hasher::equal): Likewise.
! 	(cgraph_inline_failed_type): Likewise.
! 	(thunk_adjust): Likewise.
! 	(dump_callgraph_transformation): Likewise.
! 	(record_references_in_initializer): Likewise.
! 	(ipa_discover_variable_flags): Likewise.
! 	* cgraphclones.cc (GTY): Likewise.
! 	* cgraphunit.cc (symbol_table::finalize_compilation_unit): Likewise.
! 	* collect-utils.h (GCC_COLLECT_UTILS_H): Likewise.
! 	* collect2-aix.h (GCC_COLLECT2_AIX_H): Likewise.
! 	* collect2.cc (maybe_run_lto_and_relink): Likewise.
! 	* combine-stack-adj.cc: Likewise.
! 	* combine.cc (setup_incoming_promotions): Likewise.
! 	(combine_simplify_rtx): Likewise.
! 	(count_rtxs): Likewise.
! 	* common.opt: Likewise.
! 	* common/config/aarch64/aarch64-common.cc: Likewise.
! 	* common/config/arm/arm-common.cc (arm_asm_auto_mfpu): Likewise.
! 	* common/config/avr/avr-common.cc: Likewise.
! 	* common/config/i386/i386-isas.h (struct _isa_names_table): Likewise.
! 	* conditions.h: Likewise.
! 	* config.gcc: Likewise.
! 	* config/aarch64/aarch64-builtins.cc (aarch64_resolve_overloaded_memtag): Likewise.
! 	* config/aarch64/aarch64-protos.h (aarch64_classify_address): Likewise.
! 	(aarch64_get_extension_string_for_isa_flags): Likewise.
! 	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
! 	* config/aarch64/aarch64.cc (aarch64_regmode_natural_size): Likewise.
! 	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Likewise.
! 	(aarch64_option_valid_attribute_p): Likewise.
! 	(aarch64_short_vector_p): Likewise.
! 	(aarch64_float_const_representable_p): Likewise.
! 	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
! 	(ASM_OUTPUT_POOL_EPILOGUE): Likewise.
! 	(GTY): Likewise.
! 	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
! 	* config/aarch64/driver-aarch64.cc (contains_core_p): Likewise.
! 	* config/aarch64/t-aarch64: Likewise.
! 	* config/aarch64/x-aarch64: Likewise.
! 	* config/aarch64/x-darwin: Likewise.
! 	* config/alpha/alpha-protos.h: Likewise.
! 	* config/alpha/alpha.cc (alpha_scalar_mode_supported_p): Likewise.
! 	* config/alpha/alpha.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
! 	(enum reg_class): Likewise.
! 	* config/alpha/alpha.md: Likewise.
! 	* config/alpha/driver-alpha.cc (AMASK_LOCKPFTCHOK): Likewise.
! 	* config/alpha/x-alpha: Likewise.
! 	* config/arc/arc-protos.h (arc_eh_uses): Likewise.
! 	* config/arc/arc.cc (ARC_OPT): Likewise.
! 	(arc_ccfsm_advance): Likewise.
! 	(arc_arg_partial_bytes): Likewise.
! 	(conditionalize_nonjump): Likewise.
! 	* config/arc/arc.md: Likewise.
! 	* config/arc/builtins.def: Likewise.
! 	* config/arc/t-arc: Likewise.
! 	* config/arm/arm-c.cc (arm_resolve_overloaded_builtin): Likewise.
! 	(arm_pragma_target_parse): Likewise.
! 	* config/arm/arm-protos.h (save_restore_target_globals): Likewise.
! 	(arm_cpu_cpp_builtins): Likewise.
! 	* config/arm/arm.cc (vfp3_const_double_index): Likewise.
! 	(shift_op): Likewise.
! 	(thumb2_final_prescan_insn): Likewise.
! 	(arm_final_prescan_insn): Likewise.
! 	(arm_asm_output_labelref): Likewise.
! 	(arm_small_register_classes_for_mode_p): Likewise.
! 	* config/arm/arm.h: Likewise.
! 	* config/arm/arm.md: Likewise.
! 	* config/arm/driver-arm.cc: Likewise.
! 	* config/arm/symbian.h: Likewise.
! 	* config/arm/t-arm: Likewise.
! 	* config/arm/thumb1.md: Likewise.
! 	* config/arm/x-arm: Likewise.
! 	* config/avr/avr-c.cc (avr_register_target_pragmas): Likewise.
! 	* config/avr/avr-fixed.md: Likewise.
! 	* config/avr/avr-log.cc (avr_log_vadump): Likewise.
! 	* config/avr/avr-mcus.def: Likewise.
! 	* config/avr/avr-modes.def (FRACTIONAL_INT_MODE): Likewise.
! 	* config/avr/avr-passes.def (INSERT_PASS_BEFORE): Likewise.
! 	* config/avr/avr-protos.h (make_avr_pass_casesi): Likewise.
! 	* config/avr/avr.cc (avr_option_override): Likewise.
! 	(avr_build_builtin_va_list): Likewise.
! 	(avr_mode_dependent_address_p): Likewise.
! 	(avr_function_arg_advance): Likewise.
! 	(avr_asm_output_aligned_decl_common): Likewise.
! 	* config/avr/avr.h (RETURN_ADDR_RTX): Likewise.
! 	(SUPPORTS_INIT_PRIORITY): Likewise.
! 	* config/avr/avr.md: Likewise.
! 	* config/avr/builtins.def: Likewise.
! 	* config/avr/gen-avr-mmcu-specs.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
! 	* config/avr/gen-avr-mmcu-texi.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
! 	(main): Likewise.
! 	* config/avr/t-avr: Likewise.
! 	* config/bfin/bfin.cc (frame_related_constant_load): Likewise.
! 	* config/bpf/bpf-protos.h (GCC_BPF_PROTOS_H): Likewise.
! 	* config/bpf/bpf.h (enum reg_class): Likewise.
! 	* config/bpf/t-bpf: Likewise.
! 	* config/c6x/c6x-protos.h (GCC_C6X_PROTOS_H): Likewise.
! 	* config/cr16/cr16-protos.h: Likewise.
! 	* config/cris/cris.cc (cris_address_cost): Likewise.
! 	(cris_side_effect_mode_ok): Likewise.
! 	(cris_init_machine_status): Likewise.
! 	(cris_emit_movem_store): Likewise.
! 	* config/cris/cris.h (INDEX_REG_CLASS): Likewise.
! 	(enum reg_class): Likewise.
! 	(struct cum_args): Likewise.
! 	* config/cris/cris.opt: Likewise.
! 	* config/cris/sync.md: Likewise.
! 	* config/csky/csky.cc (csky_expand_prologue): Likewise.
! 	* config/darwin-c.cc: Likewise.
! 	* config/darwin-f.cc: Likewise.
! 	* config/darwin-sections.def (zobj_const_section): Likewise.
! 	* config/darwin.cc (output_objc_section_asm_op): Likewise.
! 	(fprintf): Likewise.
! 	* config/darwin.h (GTY): Likewise.
! 	* config/elfos.h: Likewise.
! 	* config/epiphany/epiphany-sched.md: Likewise.
! 	* config/epiphany/epiphany.cc (epiphany_function_value): Likewise.
! 	* config/epiphany/epiphany.h (GTY): Likewise.
! 	(NO_FUNCTION_CSE): Likewise.
! 	* config/epiphany/mode-switch-use.cc: Likewise.
! 	* config/epiphany/predicates.md: Likewise.
! 	* config/epiphany/t-epiphany: Likewise.
! 	* config/fr30/fr30-protos.h: Likewise.
! 	* config/frv/frv-protos.h: Likewise.
! 	* config/frv/frv.cc (TLS_BIAS): Likewise.
! 	* config/frv/frv.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
! 	* config/ft32/ft32-protos.h: Likewise.
! 	* config/gcn/gcn-hsa.h (ASM_APP_OFF): Likewise.
! 	* config/gcn/gcn.cc (gcn_init_libfuncs): Likewise.
! 	* config/gcn/mkoffload.cc (copy_early_debug_info): Likewise.
! 	* config/gcn/t-gcn-hsa: Likewise.
! 	* config/gcn/t-omp-device: Likewise.
! 	* config/h8300/h8300-protos.h (GCC_H8300_PROTOS_H): Likewise.
! 	(same_cmp_following_p): Likewise.
! 	* config/h8300/h8300.cc (F): Likewise.
! 	* config/h8300/h8300.h (struct cum_arg): Likewise.
! 	(BRANCH_COST): Likewise.
! 	* config/i386/cygming.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
! 	* config/i386/djgpp.h (TARGET_ASM_LTO_END): Likewise.
! 	* config/i386/dragonfly.h (NO_PROFILE_COUNTERS): Likewise.
! 	* config/i386/driver-i386.cc (detect_caches_intel): Likewise.
! 	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
! 	* config/i386/i386-c.cc (ix86_target_macros): Likewise.
! 	* config/i386/i386-expand.cc (get_mode_wider_vector): Likewise.
! 	* config/i386/i386-options.cc (ix86_set_func_type): Likewise.
! 	* config/i386/i386-protos.h (ix86_extract_perm_from_pool_constant): Likewise.
! 	(ix86_register_pragmas): Likewise.
! 	(ix86_d_has_stdcall_convention): Likewise.
! 	(i386_pe_seh_init_sections): Likewise.
! 	* config/i386/i386.cc (ix86_function_arg_regno_p): Likewise.
! 	(ix86_function_value_regno_p): Likewise.
! 	(ix86_compute_frame_layout): Likewise.
! 	(legitimize_pe_coff_symbol): Likewise.
! 	(output_pic_addr_const): Likewise.
! 	* config/i386/i386.h (defined): Likewise.
! 	(host_detect_local_cpu): Likewise.
! 	(CONSTANT_ADDRESS_P): Likewise.
! 	(DEFAULT_LARGE_SECTION_THRESHOLD): Likewise.
! 	(struct machine_frame_state): Likewise.
! 	* config/i386/i386.md: Likewise.
! 	* config/i386/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
! 	* config/i386/mmx.md: Likewise.
! 	* config/i386/sse.md: Likewise.
! 	* config/i386/t-cygming: Likewise.
! 	* config/i386/t-djgpp: Likewise.
! 	* config/i386/t-gnu-property: Likewise.
! 	* config/i386/t-i386: Likewise.
! 	* config/i386/t-intelmic: Likewise.
! 	* config/i386/t-omp-device: Likewise.
! 	* config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Likewise.
! 	(i386_pe_adjust_class_at_definition): Likewise.
! 	* config/i386/winnt.cc (gen_stdcall_or_fastcall_suffix): Likewise.
! 	(i386_pe_mangle_decl_assembler_name): Likewise.
! 	(i386_pe_encode_section_info): Likewise.
! 	* config/i386/x-cygwin: Likewise.
! 	* config/i386/x-darwin: Likewise.
! 	* config/i386/x-i386: Likewise.
! 	* config/i386/x-mingw32: Likewise.
! 	* config/i386/x86-tune-sched-core.cc: Likewise.
! 	* config/i386/x86-tune.def: Likewise.
! 	* config/i386/xm-djgpp.h (STANDARD_STARTFILE_PREFIX_1): Likewise.
! 	* config/ia64/freebsd.h: Likewise.
! 	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Likewise.
! 	* config/ia64/ia64-protos.h (ia64_except_unwind_info): Likewise.
! 	* config/ia64/ia64.cc (ia64_function_value_regno_p): Likewise.
! 	(ia64_secondary_reload_class): Likewise.
! 	(bundling): Likewise.
! 	* config/ia64/ia64.h: Likewise.
! 	* config/ia64/ia64.md: Likewise.
! 	* config/ia64/predicates.md: Likewise.
! 	* config/ia64/sysv4.h: Likewise.
! 	* config/ia64/t-ia64: Likewise.
! 	* config/iq2000/iq2000.h (FUNCTION_MODE): Likewise.
! 	* config/iq2000/iq2000.md: Likewise.
! 	* config/linux.h (TARGET_HAS_BIONIC): Likewise.
! 	(if): Likewise.
! 	* config/m32c/m32c.cc (m32c_function_needs_enter): Likewise.
! 	* config/m32c/m32c.h (MAX_REGS_PER_ADDRESS): Likewise.
! 	* config/m32c/t-m32c: Likewise.
! 	* config/m32r/m32r-protos.h: Likewise.
! 	* config/m32r/m32r.cc (m32r_print_operand): Likewise.
! 	* config/m32r/m32r.h: Likewise.
! 	* config/m32r/m32r.md: Likewise.
! 	* config/m68k/m68k-isas.def: Likewise.
! 	* config/m68k/m68k-microarchs.def: Likewise.
! 	* config/m68k/m68k-protos.h (strict_low_part_peephole_ok): Likewise.
! 	(m68k_epilogue_uses): Likewise.
! 	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
! 	(m68k_sched_adjust_cost): Likewise.
! 	(m68k_sched_md_init): Likewise.
! 	* config/m68k/m68k.h (__transfer_from_trampoline): Likewise.
! 	(enum m68k_function_kind): Likewise.
! 	* config/m68k/m68k.md: Likewise.
! 	* config/m68k/m68kemb.h: Likewise.
! 	* config/m68k/uclinux.h (ENDFILE_SPEC): Likewise.
! 	* config/mcore/mcore-protos.h: Likewise.
! 	* config/mcore/mcore.cc (mcore_expand_insv): Likewise.
! 	(mcore_expand_prolog): Likewise.
! 	* config/mcore/mcore.h (TARGET_MCORE): Likewise.
! 	* config/mcore/mcore.md: Likewise.
! 	* config/microblaze/microblaze-protos.h: Likewise.
! 	* config/microblaze/microblaze.cc (microblaze_legitimate_pic_operand): Likewise.
! 	(microblaze_function_prologue): Likewise.
! 	(microblaze_function_epilogue): Likewise.
! 	(microblaze_select_section): Likewise.
! 	(microblaze_asm_output_mi_thunk): Likewise.
! 	(microblaze_eh_return): Likewise.
! 	* config/microblaze/microblaze.h: Likewise.
! 	* config/microblaze/microblaze.md: Likewise.
! 	* config/microblaze/t-microblaze: Likewise.
! 	* config/mips/driver-native.cc: Likewise.
! 	* config/mips/loongson2ef.md: Likewise.
! 	* config/mips/mips-protos.h (mips_expand_vec_cmp_expr): Likewise.
! 	* config/mips/mips.cc (mips_rtx_costs): Likewise.
! 	(mips_output_filename): Likewise.
! 	(mips_output_function_prologue): Likewise.
! 	(mips_output_function_epilogue): Likewise.
! 	(mips_output_mi_thunk): Likewise.
! 	* config/mips/mips.h: Likewise.
! 	* config/mips/mips.md: Likewise.
! 	* config/mips/t-mips: Likewise.
! 	* config/mips/x-native: Likewise.
! 	* config/mmix/mmix-protos.h: Likewise.
! 	* config/mmix/mmix.cc (mmix_option_override): Likewise.
! 	(mmix_dbx_register_number): Likewise.
! 	(mmix_expand_prologue): Likewise.
! 	* config/mmix/mmix.h: Likewise.
! 	* config/mmix/mmix.md: Likewise.
! 	* config/mmix/predicates.md: Likewise.
! 	* config/mn10300/mn10300.cc (mn10300_symbolic_operand): Likewise.
! 	(mn10300_legitimate_pic_operand_p): Likewise.
! 	* config/mn10300/mn10300.h (enum reg_class): Likewise.
! 	(NO_FUNCTION_CSE): Likewise.
! 	* config/moxie/moxie-protos.h: Likewise.
! 	* config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Likewise.
! 	* config/msp430/msp430-devices.cc (extract_devices_dir_from_exec_prefix): Likewise.
! 	* config/msp430/msp430.cc (msp430_gimplify_va_arg_expr): Likewise.
! 	(msp430_incoming_return_addr_rtx): Likewise.
! 	* config/msp430/msp430.h (msp430_get_linker_devices_include_path): Likewise.
! 	* config/msp430/t-msp430: Likewise.
! 	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
! 	(nds32_rtx_costs_size_prefer): Likewise.
! 	(nds32_init_rtx_costs): Likewise.
! 	* config/nds32/nds32-doubleword.md: Likewise.
! 	* config/nds32/nds32.cc (nds32_memory_move_cost): Likewise.
! 	(nds32_builtin_decl): Likewise.
! 	* config/nds32/nds32.h (enum nds32_16bit_address_type): Likewise.
! 	(enum nds32_isr_nested_type): Likewise.
! 	(enum reg_class): Likewise.
! 	* config/nds32/predicates.md: Likewise.
! 	* config/nds32/t-nds32: Likewise.
! 	* config/nios2/nios2.cc (nios2_pragma_target_parse): Likewise.
! 	* config/nvptx/nvptx-protos.h: Likewise.
! 	* config/nvptx/nvptx.cc (nvptx_goacc_expand_var_decl): Likewise.
! 	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Likewise.
! 	* config/nvptx/t-nvptx: Likewise.
! 	* config/nvptx/t-omp-device: Likewise.
! 	* config/pa/elf.h: Likewise.
! 	* config/pa/pa-linux.h (GLOBAL_ASM_OP): Likewise.
! 	* config/pa/pa-netbsd.h (GLOBAL_ASM_OP): Likewise.
! 	* config/pa/pa-openbsd.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
! 	* config/pa/pa-protos.h (pa_eh_return_handler_rtx): Likewise.
! 	(pa_legitimize_reload_address): Likewise.
! 	(pa_can_use_return_insn): Likewise.
! 	* config/pa/pa.cc (mem_shadd_or_shadd_rtx_p): Likewise.
! 	(som_output_text_section_asm_op): Likewise.
! 	* config/pa/pa.h (PROFILE_BEFORE_PROLOGUE): Likewise.
! 	* config/pa/pa.md: Likewise.
! 	* config/pa/som.h: Likewise.
! 	* config/pa/t-pa: Likewise.
! 	* config/pdp11/pdp11.cc (decode_pdp11_d): Likewise.
! 	* config/pdp11/pdp11.h: Likewise.
! 	* config/pdp11/pdp11.md: Likewise.
! 	* config/pdp11/t-pdp11: Likewise.
! 	* config/pru/pru.md: Likewise.
! 	* config/pru/t-pru: Likewise.
! 	* config/riscv/riscv-protos.h (NUM_SYMBOL_TYPES): Likewise.
! 	(riscv_gpr_save_operation_p): Likewise.
! 	(riscv_d_register_target_info): Likewise.
! 	(riscv_init_builtins): Likewise.
! 	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
! 	* config/riscv/riscv.h (CSW_MAX_OFFSET): Likewise.
! 	* config/riscv/t-riscv: Likewise.
! 	* config/rl78/rl78.cc (rl78_asm_ctor_dtor): Likewise.
! 	* config/rl78/t-rl78: Likewise.
! 	* config/rs6000/aix.h: Likewise.
! 	* config/rs6000/aix71.h (ASM_SPEC_COMMON): Likewise.
! 	* config/rs6000/aix72.h (ASM_SPEC_COMMON): Likewise.
! 	* config/rs6000/aix73.h (ASM_SPEC_COMMON): Likewise.
! 	* config/rs6000/darwin.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
! 	* config/rs6000/driver-rs6000.cc: Likewise.
! 	* config/rs6000/freebsd.h: Likewise.
! 	* config/rs6000/freebsd64.h: Likewise.
! 	* config/rs6000/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
! 	* config/rs6000/rbtree.cc: Likewise.
! 	* config/rs6000/rbtree.h: Likewise.
! 	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
! 	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Likewise.
! 	(rs6000_expand_builtin): Likewise.
! 	(rs6000_init_builtins): Likewise.
! 	* config/rs6000/rs6000-cpus.def: Likewise.
! 	* config/rs6000/rs6000-gen-builtins.cc (write_init_ovld_table): Likewise.
! 	* config/rs6000/rs6000-internal.h (ALTIVEC_REG_BIT): Likewise.
! 	(quad_address_offset_p): Likewise.
! 	* config/rs6000/rs6000-logue.cc (interesting_frame_related_regno): Likewise.
! 	(rs6000_emit_epilogue): Likewise.
! 	* config/rs6000/rs6000-overload.def: Likewise.
! 	* config/rs6000/rs6000-p8swap.cc: Likewise.
! 	* config/rs6000/rs6000-protos.h (GCC_RS6000_PROTOS_H): Likewise.
! 	(rs6000_const_f32_to_i32): Likewise.
! 	* config/rs6000/rs6000.cc (legitimate_lo_sum_address_p): Likewise.
! 	(rs6000_debug_legitimize_address): Likewise.
! 	(rs6000_mode_dependent_address): Likewise.
! 	(rs6000_adjust_priority): Likewise.
! 	(rs6000_c_mode_for_suffix): Likewise.
! 	* config/rs6000/rs6000.h (defined): Likewise.
! 	(LONG_DOUBLE_TYPE_SIZE): Likewise.
! 	* config/rs6000/rs6000.md: Likewise.
! 	* config/rs6000/sysv4.h: Likewise.
! 	* config/rs6000/t-linux: Likewise.
! 	* config/rs6000/t-linux64: Likewise.
! 	* config/rs6000/t-rs6000: Likewise.
! 	* config/rs6000/x-darwin: Likewise.
! 	* config/rs6000/x-darwin64: Likewise.
! 	* config/rs6000/x-rs6000: Likewise.
! 	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Likewise.
! 	* config/rx/rx.cc (rx_expand_builtin): Likewise.
! 	* config/s390/constraints.md: Likewise.
! 	* config/s390/driver-native.cc: Likewise.
! 	* config/s390/htmxlintrin.h: Likewise.
! 	* config/s390/s390-builtins.def (B_DEF): Likewise.
! 	(OB_DEF_VAR): Likewise.
! 	* config/s390/s390-builtins.h: Likewise.
! 	* config/s390/s390-c.cc: Likewise.
! 	* config/s390/s390-opts.h: Likewise.
! 	* config/s390/s390-protos.h (s390_check_symref_alignment): Likewise.
! 	(s390_register_target_pragmas): Likewise.
! 	* config/s390/s390.cc (s390_init_builtins): Likewise.
! 	(s390_expand_plus_operand): Likewise.
! 	(s390_expand_atomic): Likewise.
! 	(s390_valid_target_attribute_inner_p): Likewise.
! 	* config/s390/s390.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
! 	* config/s390/s390.md: Likewise.
! 	* config/s390/t-s390: Likewise.
! 	* config/s390/vx-builtins.md: Likewise.
! 	* config/s390/x-native: Likewise.
! 	* config/sh/divtab-sh4-300.cc (main): Likewise.
! 	* config/sh/divtab-sh4.cc (main): Likewise.
! 	* config/sh/divtab.cc (main): Likewise.
! 	* config/sh/elf.h: Likewise.
! 	* config/sh/sh-protos.h (sh_fsca_int2sf): Likewise.
! 	* config/sh/sh.cc (SYMBOL_FLAG_FUNCVEC_FUNCTION): Likewise.
! 	(sh_struct_value_rtx): Likewise.
! 	(sh_remove_reg_dead_or_unused_notes): Likewise.
! 	* config/sh/sh.h (MIN_UNITS_PER_WORD): Likewise.
! 	* config/sh/t-sh: Likewise.
! 	* config/sol2-protos.h (solaris_override_options): Likewise.
! 	* config/sol2.h: Likewise.
! 	* config/sparc/driver-sparc.cc: Likewise.
! 	* config/sparc/freebsd.h: Likewise.
! 	* config/sparc/sparc-protos.h (make_pass_work_around_errata): Likewise.
! 	* config/sparc/sparc.cc (sparc_output_mi_thunk): Likewise.
! 	(sparc_asan_shadow_offset): Likewise.
! 	* config/sparc/sparc.h: Likewise.
! 	* config/sparc/sparc.md: Likewise.
! 	* config/sparc/t-sparc: Likewise.
! 	* config/sparc/x-sparc: Likewise.
! 	* config/stormy16/stormy16.cc (xstormy16_mode_dependent_address_p): Likewise.
! 	* config/t-darwin: Likewise.
! 	* config/t-dragonfly: Likewise.
! 	* config/t-freebsd: Likewise.
! 	* config/t-glibc: Likewise.
! 	* config/t-linux: Likewise.
! 	* config/t-netbsd: Likewise.
! 	* config/t-openbsd: Likewise.
! 	* config/t-pnt16-warn: Likewise.
! 	* config/t-sol2: Likewise.
! 	* config/t-vxworks: Likewise.
! 	* config/t-winnt: Likewise.
! 	* config/tilegx/t-tilegx: Likewise.
! 	* config/tilegx/tilegx-c.cc: Likewise.
! 	* config/tilegx/tilegx-protos.h (tilegx_function_profiler): Likewise.
! 	* config/tilegx/tilegx.md: Likewise.
! 	* config/tilepro/t-tilepro: Likewise.
! 	* config/tilepro/tilepro-c.cc: Likewise.
! 	* config/v850/t-v850: Likewise.
! 	* config/v850/v850-protos.h: Likewise.
! 	* config/v850/v850.cc (F): Likewise.
! 	* config/v850/v850.h (enum reg_class): Likewise.
! 	(SLOW_BYTE_ACCESS): Likewise.
! 	* config/vax/vax.cc (vax_mode_dependent_address_p): Likewise.
! 	* config/vax/vax.h (enum reg_class): Likewise.
! 	* config/vax/vax.md: Likewise.
! 	* config/visium/visium.cc (visium_legitimate_address_p): Likewise.
! 	* config/visium/visium.h: Likewise.
! 	* config/vms/t-vms: Likewise.
! 	* config/vms/vms-crtlmap.map: Likewise.
! 	* config/vms/vms-protos.h (vms_c_get_vms_ver): Likewise.
! 	* config/vx-common.h: Likewise.
! 	* config/x-darwin: Likewise.
! 	* config/x-hpux: Likewise.
! 	* config/x-linux: Likewise.
! 	* config/x-netbsd: Likewise.
! 	* config/x-openbsd: Likewise.
! 	* config/x-solaris: Likewise.
! 	* config/xtensa/xtensa-protos.h (xtensa_mem_offset): Likewise.
! 	* config/xtensa/xtensa.cc (xtensa_option_override): Likewise.
! 	* config/xtensa/xtensa.h: Likewise.
! 	* configure.ac: Likewise.
! 	* context.cc: Likewise.
! 	* convert.h: Likewise.
! 	* coretypes.h: Likewise.
! 	* coverage.cc: Likewise.
! 	* coverage.h: Likewise.
! 	* cppdefault.h (struct default_include): Likewise.
! 	* cprop.cc (local_cprop_pass): Likewise.
! 	(one_cprop_pass): Likewise.
! 	* cse.cc (hash_rtx_cb): Likewise.
! 	(fold_rtx): Likewise.
! 	* ctfc.h (ctfc_get_num_vlen_bytes): Likewise.
! 	* data-streamer.h (bp_unpack_var_len_int): Likewise.
! 	(streamer_write_widest_int): Likewise.
! 	* dbgcnt.def: Likewise.
! 	* dbxout.cc (dbxout_early_global_decl): Likewise.
! 	(dbxout_common_check): Likewise.
! 	* dbxout.h: Likewise.
! 	* debug.h (struct gcc_debug_hooks): Likewise.
! 	(dump_go_spec_init): Likewise.
! 	* df-core.cc: Likewise.
! 	* df-scan.cc (df_insn_info_delete): Likewise.
! 	(df_insn_delete): Likewise.
! 	* df.h (debug_df_chain): Likewise.
! 	(can_move_insns_across): Likewise.
! 	* dfp.cc (decimal_from_binary): Likewise.
! 	* diagnostic-color.cc: Likewise.
! 	* diagnostic-event-id.h: Likewise.
! 	* diagnostic-show-locus.cc (test_one_liner_labels): Likewise.
! 	* diagnostic.cc (bt_callback): Likewise.
! 	(num_digits): Likewise.
! 	* doc/avr-mmcu.texi: Likewise.
! 	* doc/cfg.texi: Likewise.
! 	* doc/contrib.texi: Likewise.
! 	* doc/cppinternals.texi: Likewise.
! 	* doc/extend.texi: Likewise.
! 	* doc/generic.texi: Likewise.
! 	* doc/gimple.texi: Likewise.
! 	* doc/gty.texi: Likewise.
! 	* doc/invoke.texi: Likewise.
! 	* doc/loop.texi: Likewise.
! 	* doc/lto.texi: Likewise.
! 	* doc/match-and-simplify.texi: Likewise.
! 	* doc/md.texi: Likewise.
! 	* doc/optinfo.texi: Likewise.
! 	* doc/options.texi: Likewise.
! 	* doc/passes.texi: Likewise.
! 	* doc/plugins.texi: Likewise.
! 	* doc/rtl.texi: Likewise.
! 	* doc/sourcebuild.texi: Likewise.
! 	* doc/tm.texi: Likewise.
! 	* doc/tm.texi.in: Likewise.
! 	* doc/tree-ssa.texi: Likewise.
! 	* dojump.cc (do_jump): Likewise.
! 	* dojump.h: Likewise.
! 	* dumpfile.cc (test_impl_location): Likewise.
! 	(test_capture_of_dump_calls): Likewise.
! 	* dumpfile.h (enum dump_kind): Likewise.
! 	(class dump_location_t): Likewise.
! 	(dump_enabled_p): Likewise.
! 	(enable_rtl_dump_file): Likewise.
! 	(dump_combine_total_stats): Likewise.
! 	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
! 	* dwarf2ctf.h (ctf_debug_finish): Likewise.
! 	* dwarf2out.cc (dwarf2out_begin_prologue): Likewise.
! 	(struct loc_descr_context): Likewise.
! 	(rtl_for_decl_location): Likewise.
! 	(gen_subprogram_die): Likewise.
! 	(gen_label_die): Likewise.
! 	(is_trivial_indirect_ref): Likewise.
! 	(dwarf2out_late_global_decl): Likewise.
! 	(dwarf_file_hasher::hash): Likewise.
! 	(dwarf2out_end_source_file): Likewise.
! 	(dwarf2out_define): Likewise.
! 	(dwarf2out_early_finish): Likewise.
! 	* dwarf2out.h (struct dw_fde_node): Likewise.
! 	(struct dw_discr_list_node): Likewise.
! 	(output_loc_sequence_raw): Likewise.
! 	* emit-rtl.cc (gen_raw_REG): Likewise.
! 	(maybe_set_max_label_num): Likewise.
! 	* emit-rtl.h (struct rtl_data): Likewise.
! 	* errors.cc (internal_error): Likewise.
! 	(trim_filename): Likewise.
! 	* et-forest.cc: Likewise.
! 	* except.cc (init_eh_for_function): Likewise.
! 	* explow.cc (promote_ssa_mode): Likewise.
! 	(get_dynamic_stack_size): Likewise.
! 	* explow.h: Likewise.
! 	* expmed.h: Likewise.
! 	* expr.cc (safe_from_p): Likewise.
! 	(expand_expr_real_2): Likewise.
! 	(expand_expr_real_1): Likewise.
! 	* file-prefix-map.cc (remap_filename): Likewise.
! 	* final.cc (app_enable): Likewise.
! 	(make_pass_compute_alignments): Likewise.
! 	(final_scan_insn_1): Likewise.
! 	(final_scan_insn): Likewise.
! 	* fixed-value.h (fixed_from_string): Likewise.
! 	* flag-types.h (NO_DEBUG): Likewise.
! 	(DWARF2_DEBUG): Likewise.
! 	(VMS_DEBUG): Likewise.
! 	(BTF_DEBUG): Likewise.
! 	(enum ctf_debug_info_levels): Likewise.
! 	* fold-const.cc (const_binop): Likewise.
! 	(fold_binary_loc): Likewise.
! 	(fold_checksum_tree): Likewise.
! 	* fp-test.cc: Likewise.
! 	* function.cc (expand_function_end): Likewise.
! 	* function.h (struct function): Likewise.
! 	* fwprop.cc (should_replace_address): Likewise.
! 	* gcc-main.cc: Likewise.
! 	* gcc-rich-location.h (class gcc_rich_location): Likewise.
! 	* gcc-symtab.h: Likewise.
! 	* gcc.cc (MIN_FATAL_STATUS): Likewise.
! 	(driver_handle_option): Likewise.
! 	(quote_spec_arg): Likewise.
! 	(driver::finalize): Likewise.
! 	* gcc.h (set_input): Likewise.
! 	* gcov-dump.cc: Likewise.
! 	* gcov.cc (solve_flow_graph): Likewise.
! 	* gcse-common.cc: Likewise.
! 	* gcse.cc (make_pass_rtl_hoist): Likewise.
! 	* genattr-common.cc: Likewise.
! 	* genattrtab.cc (min_fn): Likewise.
! 	(write_const_num_delay_slots): Likewise.
! 	* genautomata.cc: Likewise.
! 	* genconditions.cc (write_one_condition): Likewise.
! 	* genconstants.cc: Likewise.
! 	* genemit.cc (gen_exp): Likewise.
! 	* generic-match-head.cc: Likewise.
! 	* genextract.cc: Likewise.
! 	* gengenrtl.cc (always_void_p): Likewise.
! 	* gengtype-parse.cc (gtymarker_opt): Likewise.
! 	* gengtype-state.cc (state_writer::state_writer): Likewise.
! 	(write_state_trailer): Likewise.
! 	(equals_type_number): Likewise.
! 	(read_state): Likewise.
! 	* gengtype.cc (open_base_files): Likewise.
! 	(struct file_rule_st): Likewise.
! 	(header_dot_h_frul): Likewise.
! 	* gengtype.h: Likewise.
! 	* genmatch.cc (main): Likewise.
! 	* genmddeps.cc: Likewise.
! 	* genmodes.cc (emit_mode_inner): Likewise.
! 	(emit_mode_unit_size): Likewise.
! 	* genpeep.cc (gen_peephole): Likewise.
! 	* genpreds.cc (write_tm_preds_h): Likewise.
! 	* genrecog.cc (validate_pattern): Likewise.
! 	(write_header): Likewise.
! 	(main): Likewise.
! 	* gensupport.cc (change_subst_attribute): Likewise.
! 	(traverse_c_tests): Likewise.
! 	(add_predicate): Likewise.
! 	(init_predicate_table): Likewise.
! 	* gensupport.h (struct optab_pattern): Likewise.
! 	(get_num_insn_codes): Likewise.
! 	(maybe_eval_c_test): Likewise.
! 	(struct pred_data): Likewise.
! 	* ggc-internal.h: Likewise.
! 	* gimple-fold.cc (maybe_fold_reference): Likewise.
! 	(get_range_strlen_tree): Likewise.
! 	* gimple-fold.h (gimple_stmt_integer_valued_real_p): Likewise.
! 	* gimple-low.cc: Likewise.
! 	* gimple-match-head.cc (directly_supported_p): Likewise.
! 	* gimple-pretty-print.h: Likewise.
! 	* gimple-ssa-sprintf.cc (format_percent): Likewise.
! 	(adjust_range_for_overflow): Likewise.
! 	* gimple-streamer.h: Likewise.
! 	* gimple.h (struct GTY): Likewise.
! 	(is_gimple_resx): Likewise.
! 	* gimplify.cc (gimplify_expr): Likewise.
! 	(gimplify_init_constructor): Likewise.
! 	(omp_construct_selector_matches): Likewise.
! 	(gimplify_omp_target_update): Likewise.
! 	(gimplify_omp_ordered): Likewise.
! 	(gimplify_va_arg_expr): Likewise.
! 	* graphite-isl-ast-to-gimple.cc (should_copy_to_new_region): Likewise.
! 	* haifa-sched.cc (increase_insn_priority): Likewise.
! 	(try_ready): Likewise.
! 	(sched_create_recovery_edges): Likewise.
! 	* ifcvt.cc (find_if_case_1): Likewise.
! 	(find_if_case_2): Likewise.
! 	* inchash.h: Likewise.
! 	* incpath.cc (add_env_var_paths): Likewise.
! 	* input.cc (dump_location_info): Likewise.
! 	(assert_loceq): Likewise.
! 	(test_lexer_string_locations_concatenation_1): Likewise.
! 	(test_lexer_string_locations_concatenation_2): Likewise.
! 	(test_lexer_string_locations_concatenation_3): Likewise.
! 	* input.h (BUILTINS_LOCATION): Likewise.
! 	(class string_concat_db): Likewise.
! 	* internal-fn.cc (expand_MUL_OVERFLOW): Likewise.
! 	(expand_LOOP_VECTORIZED): Likewise.
! 	* ipa-cp.cc (make_pass_ipa_cp): Likewise.
! 	* ipa-fnsummary.cc (remap_freqcounting_preds_after_dup): Likewise.
! 	(ipa_fn_summary_t::duplicate): Likewise.
! 	(make_pass_ipa_fn_summary): Likewise.
! 	* ipa-fnsummary.h (enum ipa_hints_vals): Likewise.
! 	* ipa-free-lang-data.cc (fld_simplified_type): Likewise.
! 	(free_lang_data_in_decl): Likewise.
! 	* ipa-inline.cc (compute_inlined_call_time): Likewise.
! 	(inline_always_inline_functions): Likewise.
! 	* ipa-inline.h (free_growth_caches): Likewise.
! 	(inline_account_function_p): Likewise.
! 	* ipa-modref.cc (modref_access_analysis::analyze_stmt): Likewise.
! 	(modref_eaf_analysis::analyze_ssa_name): Likewise.
! 	* ipa-param-manipulation.cc (ipa_param_body_adjustments::mark_dead_statements): Likewise.
! 	(ipa_param_body_adjustments::remap_with_debug_expressions): Likewise.
! 	* ipa-prop.cc (ipa_set_node_agg_value_chain): Likewise.
! 	* ipa-prop.h (IPA_UNDESCRIBED_USE): Likewise.
! 	(unadjusted_ptr_and_unit_offset): Likewise.
! 	* ipa-reference.cc (make_pass_ipa_reference): Likewise.
! 	* ipa-reference.h (GCC_IPA_REFERENCE_H): Likewise.
! 	* ipa-split.cc (consider_split): Likewise.
! 	* ipa-sra.cc (isra_read_node_info): Likewise.
! 	* ipa-utils.h (struct ipa_dfs_info): Likewise.
! 	(recursive_call_p): Likewise.
! 	(ipa_make_function_pure): Likewise.
! 	* ira-build.cc (ira_create_allocno): Likewise.
! 	(ira_flattening): Likewise.
! 	* ira-color.cc (do_coloring): Likewise.
! 	(update_curr_costs): Likewise.
! 	* ira-conflicts.cc (process_regs_for_copy): Likewise.
! 	* ira-int.h (struct ira_emit_data): Likewise.
! 	(ira_prohibited_mode_move_regs): Likewise.
! 	(ira_get_dup_out_num): Likewise.
! 	(ira_destroy): Likewise.
! 	(ira_tune_allocno_costs): Likewise.
! 	(ira_implicitly_set_insn_hard_regs): Likewise.
! 	(ira_build_conflicts): Likewise.
! 	(ira_color): Likewise.
! 	* ira-lives.cc (process_bb_node_lives): Likewise.
! 	* ira.cc (class ira_spilled_reg_stack_slot): Likewise.
! 	(setup_uniform_class_p): Likewise.
! 	(def_dominates_uses): Likewise.
! 	* ira.h (ira_nullify_asm_goto): Likewise.
! 	* langhooks.cc (lhd_post_options): Likewise.
! 	* langhooks.h (class substring_loc): Likewise.
! 	(struct lang_hooks_for_tree_inlining): Likewise.
! 	(struct lang_hooks_for_types): Likewise.
! 	(struct lang_hooks): Likewise.
! 	* libfuncs.h (synchronize_libfunc): Likewise.
! 	* loop-doloop.cc (doloop_condition_get): Likewise.
! 	* loop-init.cc (fix_loop_structure): Likewise.
! 	* loop-invariant.cc: Likewise.
! 	* lower-subreg.h: Likewise.
! 	* lra-constraints.cc (curr_insn_transform): Likewise.
! 	* lra-int.h (struct lra_insn_reg): Likewise.
! 	(lra_undo_inheritance): Likewise.
! 	(lra_setup_reload_pseudo_preferenced_hard_reg): Likewise.
! 	(lra_split_hard_reg_for): Likewise.
! 	(lra_coalesce): Likewise.
! 	(lra_final_code_change): Likewise.
! 	* lra-spills.cc (lra_final_code_change): Likewise.
! 	* lra.cc (lra_process_new_insns): Likewise.
! 	* lto-compress.h (struct lto_compression_stream): Likewise.
! 	* lto-streamer-out.cc (DFS::DFS_write_tree_body): Likewise.
! 	(write_symbol): Likewise.
! 	* lto-streamer.h (enum LTO_tags): Likewise.
! 	(lto_value_range_error): Likewise.
! 	(lto_append_block): Likewise.
! 	(lto_streamer_hooks_init): Likewise.
! 	(stream_read_tree_ref): Likewise.
! 	(lto_prepare_function_for_streaming): Likewise.
! 	(select_what_to_stream): Likewise.
! 	(omp_lto_input_declare_variant_alt): Likewise.
! 	(cl_optimization_stream_in): Likewise.
! 	* lto-wrapper.cc (append_compiler_options): Likewise.
! 	* machmode.def: Likewise.
! 	* machmode.h (struct int_n_data_t): Likewise.
! 	* main.cc (main): Likewise.
! 	* match.pd: Likewise.
! 	* omp-builtins.def (BUILT_IN_GOMP_CRITICAL_NAME_END): Likewise.
! 	(BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): Likewise.
! 	* omp-expand.cc (expand_omp_atomic_fetch_op): Likewise.
! 	(make_pass_expand_omp_ssa): Likewise.
! 	* omp-low.cc (struct omp_context): Likewise.
! 	(struct omp_taskcopy_context): Likewise.
! 	(lower_omp): Likewise.
! 	* omp-oacc-neuter-broadcast.cc (omp_sese_active_worker_call): Likewise.
! 	(mask_name): Likewise.
! 	(omp_sese_dump_pars): Likewise.
! 	(worker_single_simple): Likewise.
! 	* omp-offload.cc (omp_finish_file): Likewise.
! 	(execute_oacc_loop_designation): Likewise.
! 	* optabs-query.cc (lshift_cheap_p): Likewise.
! 	* optc-gen.awk: Likewise.
! 	* optc-save-gen.awk: Likewise.
! 	* optinfo-emit-json.cc (optrecord_json_writer::optrecord_json_writer): Likewise.
! 	* opts-common.cc: Likewise.
! 	* output.h (app_enable): Likewise.
! 	(output_operand_lossage): Likewise.
! 	(insn_current_reference_address): Likewise.
! 	(get_insn_template): Likewise.
! 	(output_quoted_string): Likewise.
! 	* pass_manager.h (struct register_pass_info): Likewise.
! 	* plugin.cc: Likewise.
! 	* plugin.def (PLUGIN_ANALYZER_INIT): Likewise.
! 	* plugin.h (invoke_plugin_callbacks): Likewise.
! 	* pointer-query.cc (handle_mem_ref): Likewise.
! 	* postreload-gcse.cc (alloc_mem): Likewise.
! 	* predict.h (enum prediction): Likewise.
! 	(add_reg_br_prob_note): Likewise.
! 	* prefix.h: Likewise.
! 	* profile.h (get_working_sets): Likewise.
! 	* read-md.cc: Likewise.
! 	* read-md.h (struct mapping): Likewise.
! 	(class md_reader): Likewise.
! 	(class noop_reader): Likewise.
! 	* read-rtl-function.cc (function_reader::create_function): Likewise.
! 	(function_reader::extra_parsing_for_operand_code_0): Likewise.
! 	* read-rtl.cc (initialize_iterators): Likewise.
! 	* real.cc: Likewise.
! 	* real.h (struct real_value): Likewise.
! 	(format_helper::format_helper): Likewise.
! 	(real_hash): Likewise.
! 	(real_can_shorten_arithmetic): Likewise.
! 	* recog.cc (struct target_recog): Likewise.
! 	(offsettable_nonstrict_memref_p): Likewise.
! 	(constrain_operands): Likewise.
! 	* recog.h (MAX_RECOG_ALTERNATIVES): Likewise.
! 	(which_op_alt): Likewise.
! 	(struct insn_gen_fn): Likewise.
! 	* reg-notes.def (REG_NOTE): Likewise.
! 	* reg-stack.cc: Likewise.
! 	* regs.h (reg_is_parm_p): Likewise.
! 	* regset.h: Likewise.
! 	* reload.cc (push_reload): Likewise.
! 	(find_reloads): Likewise.
! 	(find_reloads_address_1): Likewise.
! 	(find_replacement): Likewise.
! 	(refers_to_regno_for_reload_p): Likewise.
! 	(refers_to_mem_for_reload_p): Likewise.
! 	* reload.h (push_reload): Likewise.
! 	(deallocate_reload_reg): Likewise.
! 	* reload1.cc (emit_input_reload_insns): Likewise.
! 	* reorg.cc (relax_delay_slots): Likewise.
! 	* rtl.def (UNKNOWN): Likewise.
! 	(SEQUENCE): Likewise.
! 	(BARRIER): Likewise.
! 	(ASM_OPERANDS): Likewise.
! 	(EQ_ATTR_ALT): Likewise.
! 	* rtl.h (struct GTY): Likewise.
! 	(LABEL_NAME): Likewise.
! 	(LABEL_ALT_ENTRY_P): Likewise.
! 	(SUBREG_BYTE): Likewise.
! 	(get_stack_check_protect): Likewise.
! 	(dump_rtx_statistics): Likewise.
! 	(unwrap_const_vec_duplicate): Likewise.
! 	(subreg_promoted_mode): Likewise.
! 	(gen_lowpart_common): Likewise.
! 	(operand_subword): Likewise.
! 	(immed_wide_int_const): Likewise.
! 	(decide_function_section): Likewise.
! 	(active_insn_p): Likewise.
! 	(delete_related_insns): Likewise.
! 	(try_split): Likewise.
! 	(val_signbit_known_clear_p): Likewise.
! 	(simplifiable_subregs): Likewise.
! 	(set_insn_deleted): Likewise.
! 	(subreg_get_info): Likewise.
! 	(remove_free_EXPR_LIST_node): Likewise.
! 	(finish_subregs_of_mode): Likewise.
! 	(get_mem_attrs): Likewise.
! 	(lookup_constant_def): Likewise.
! 	(rtx_to_tree_code): Likewise.
! 	(hash_rtx): Likewise.
! 	(condjump_in_parallel_p): Likewise.
! 	(validate_subreg): Likewise.
! 	(make_compound_operation): Likewise.
! 	(schedule_ebbs): Likewise.
! 	(print_inline_rtx): Likewise.
! 	(fixup_args_size_notes): Likewise.
! 	(expand_dec): Likewise.
! 	(prepare_copy_insn): Likewise.
! 	(mark_elimination): Likewise.
! 	(valid_mode_changes_for_regno): Likewise.
! 	(make_debug_expr_from_rtl): Likewise.
! 	(delete_vta_debug_insns): Likewise.
! 	(simplify_using_condition): Likewise.
! 	(set_insn_locations): Likewise.
! 	(fatal_insn_not_found): Likewise.
! 	(word_register_operation_p): Likewise.
! 	* rtlanal.cc (get_call_fndecl): Likewise.
! 	(side_effects_p): Likewise.
! 	(subreg_nregs): Likewise.
! 	(rtx_cost): Likewise.
! 	(canonicalize_condition): Likewise.
! 	* rtlanal.h (rtx_properties::try_to_add_note): Likewise.
! 	* run-rtl-passes.cc (run_rtl_passes): Likewise.
! 	* sanitizer.def (BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Likewise.
! 	* sched-deps.cc (add_dependence_1): Likewise.
! 	* sched-ebb.cc (begin_move_insn): Likewise.
! 	(add_deps_for_risky_insns): Likewise.
! 	(advance_target_bb): Likewise.
! 	* sched-int.h (reemit_notes): Likewise.
! 	(struct _haifa_insn_data): Likewise.
! 	(HID): Likewise.
! 	(DEP_CANCELLED): Likewise.
! 	(debug_ds): Likewise.
! 	(number_in_ready): Likewise.
! 	(schedule_ebbs_finish): Likewise.
! 	(find_modifiable_mems): Likewise.
! 	* sched-rgn.cc (debug_rgn_dependencies): Likewise.
! 	* sel-sched-dump.cc (dump_lv_set): Likewise.
! 	* sel-sched-dump.h: Likewise.
! 	* sel-sched-ir.cc (sel_insn_rtx_cost): Likewise.
! 	(setup_id_reg_sets): Likewise.
! 	(has_dependence_p): Likewise.
! 	(sel_num_cfg_preds_gt_1): Likewise.
! 	(bb_ends_ebb_p): Likewise.
! 	* sel-sched-ir.h (struct _list_node): Likewise.
! 	(struct idata_def): Likewise.
! 	(bb_next_bb): Likewise.
! 	* sel-sched.cc (vinsn_writes_one_of_regs_p): Likewise.
! 	(choose_best_pseudo_reg): Likewise.
! 	(verify_target_availability): Likewise.
! 	(can_speculate_dep_p): Likewise.
! 	(sel_rank_for_schedule): Likewise.
! 	* selftest-run-tests.cc (selftest::run_tests): Likewise.
! 	* selftest.h (class auto_fix_quotes): Likewise.
! 	* shrink-wrap.cc (handle_simple_exit): Likewise.
! 	* shrink-wrap.h: Likewise.
! 	* simplify-rtx.cc (simplify_context::simplify_associative_operation): Likewise.
! 	(simplify_context::simplify_gen_vec_select): Likewise.
! 	* spellcheck-tree.h: Likewise.
! 	* spellcheck.h: Likewise.
! 	* statistics.h (struct function): Likewise.
! 	* stmt.cc (conditional_probability): Likewise.
! 	* stmt.h: Likewise.
! 	* stor-layout.h: Likewise.
! 	* streamer-hooks.h: Likewise.
! 	* stringpool.h: Likewise.
! 	* symtab.cc (symbol_table::change_decl_assembler_name): Likewise.
! 	* target.def (HOOK_VECTOR_END): Likewise.
! 	(type.): Likewise.
! 	* target.h (union cumulative_args_t): Likewise.
! 	(by_pieces_ninsns): Likewise.
! 	(class predefined_function_abi): Likewise.
! 	* targhooks.cc (default_translate_mode_attribute): Likewise.
! 	* timevar.def: Likewise.
! 	* timevar.h (class timer): Likewise.
! 	* toplev.h (enable_rtl_dump_file): Likewise.
! 	* trans-mem.cc (collect_bb2reg): Likewise.
! 	* tree-call-cdce.cc (gen_conditions_for_pow): Likewise.
! 	* tree-cfg.cc (remove_bb): Likewise.
! 	(verify_gimple_debug): Likewise.
! 	(remove_edge_and_dominated_blocks): Likewise.
! 	(push_fndecl): Likewise.
! 	* tree-cfgcleanup.h (GCC_TREE_CFGCLEANUP_H): Likewise.
! 	* tree-complex.cc (expand_complex_multiplication): Likewise.
! 	(expand_complex_div_straight): Likewise.
! 	* tree-core.h (enum tree_index): Likewise.
! 	(enum operand_equal_flag): Likewise.
! 	* tree-eh.cc (honor_protect_cleanup_actions): Likewise.
! 	* tree-if-conv.cc (if_convertible_gimple_assign_stmt_p): Likewise.
! 	* tree-inline.cc (initialize_inlined_parameters): Likewise.
! 	* tree-inline.h (force_value_to_type): Likewise.
! 	* tree-nested.cc (get_chain_decl): Likewise.
! 	(walk_all_functions): Likewise.
! 	* tree-object-size.h: Likewise.
! 	* tree-outof-ssa.cc: Likewise.
! 	* tree-parloops.cc (create_parallel_loop): Likewise.
! 	* tree-pretty-print.cc (print_generic_expr_to_str): Likewise.
! 	(dump_generic_node): Likewise.
! 	* tree-profile.cc (tree_profiling): Likewise.
! 	* tree-sra.cc (maybe_add_sra_candidate): Likewise.
! 	* tree-ssa-address.cc: Likewise.
! 	* tree-ssa-alias.cc: Likewise.
! 	* tree-ssa-alias.h (ao_ref::max_size_known_p): Likewise.
! 	(dump_alias_stats): Likewise.
! 	* tree-ssa-ccp.cc: Likewise.
! 	* tree-ssa-coalesce.h: Likewise.
! 	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
! 	* tree-ssa-loop-manip.cc (copy_phi_node_args): Likewise.
! 	* tree-ssa-loop-unswitch.cc: Likewise.
! 	* tree-ssa-math-opts.cc: Likewise.
! 	* tree-ssa-operands.cc (class operands_scanner): Likewise.
! 	* tree-ssa-pre.cc: Likewise.
! 	* tree-ssa-reassoc.cc (optimize_ops_list): Likewise.
! 	(debug_range_entry): Likewise.
! 	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
! 	* tree-ssa-sccvn.h (TREE_SSA_SCCVN_H): Likewise.
! 	* tree-ssa-scopedtables.cc (add_expr_commutative): Likewise.
! 	(equal_mem_array_ref_p): Likewise.
! 	* tree-ssa-strlen.cc (is_strlen_related_p): Likewise.
! 	* tree-ssa-strlen.h (get_range_strlen_dynamic): Likewise.
! 	* tree-ssa-tail-merge.cc (stmt_local_def): Likewise.
! 	* tree-ssa-ter.h: Likewise.
! 	* tree-ssa-threadupdate.h (enum bb_dom_status): Likewise.
! 	* tree-streamer-in.cc (lto_input_ts_block_tree_pointers): Likewise.
! 	* tree-streamer-out.cc (pack_ts_block_value_fields): Likewise.
! 	(write_ts_block_tree_pointers): Likewise.
! 	* tree-streamer.h (struct streamer_tree_cache_d): Likewise.
! 	(streamer_read_tree_bitfields): Likewise.
! 	(streamer_write_integer_cst): Likewise.
! 	* tree-vect-patterns.cc (apply_binop_and_append_stmt): Likewise.
! 	(vect_synth_mult_by_constant): Likewise.
! 	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
! 	* tree-vectorizer.cc: Likewise.
! 	* tree-vectorizer.h (class auto_purge_vect_location): Likewise.
! 	(vect_update_inits_of_drs): Likewise.
! 	(vect_get_mask_type_for_stmt): Likewise.
! 	(vect_rgroup_iv_might_wrap_p): Likewise.
! 	(cse_and_gimplify_to_preheader): Likewise.
! 	(vect_free_slp_tree): Likewise.
! 	(vect_pattern_recog): Likewise.
! 	(vect_stmt_dominates_stmt_p): Likewise.
! 	* tree.cc (initialize_tree_contains_struct): Likewise.
! 	(need_assembler_name_p): Likewise.
! 	(type_with_interoperable_signedness): Likewise.
! 	* tree.def (SWITCH_EXPR): Likewise.
! 	* tree.h (TYPE_SYMTAB_ADDRESS): Likewise.
! 	(poly_int_tree_p): Likewise.
! 	(inlined_function_outer_scope_p): Likewise.
! 	(tree_code_for_canonical_type_merging): Likewise.
! 	* value-prof.cc: Likewise.
! 	* value-prof.h (get_nth_most_common_value): Likewise.
! 	(find_func_by_profile_id): Likewise.
! 	* value-range.cc (vrp_operand_equal_p): Likewise.
! 	* value-range.h: Likewise.
! 	* var-tracking.cc: Likewise.
! 	* varasm.cc (default_function_section): Likewise.
! 	(function_section_1): Likewise.
! 	(assemble_variable): Likewise.
! 	(handle_vtv_comdat_section): Likewise.
! 	* vec.h (struct vec_prefix): Likewise.
! 	* vmsdbgout.cc (full_name): Likewise.
! 	* vtable-verify.cc: Likewise.
! 	* vtable-verify.h (struct vtv_graph_node): Likewise.
! 	* xcoffout.cc: Likewise.
! 	* xcoffout.h (DEBUG_SYMS_TEXT): Likewise.
  
! 2022-01-17  Martin Liska  <mliska@suse.cz>
  
! 	* adjust-alignment.c: Moved to...
! 	* adjust-alignment.cc: ...here.
! 	* alias.c: Moved to...
! 	* alias.cc: ...here.
! 	* alloc-pool.c: Moved to...
! 	* alloc-pool.cc: ...here.
! 	* asan.c: Moved to...
! 	* asan.cc: ...here.
! 	* attribs.c: Moved to...
! 	* attribs.cc: ...here.
! 	* auto-inc-dec.c: Moved to...
! 	* auto-inc-dec.cc: ...here.
! 	* auto-profile.c: Moved to...
! 	* auto-profile.cc: ...here.
! 	* bb-reorder.c: Moved to...
! 	* bb-reorder.cc: ...here.
! 	* bitmap.c: Moved to...
! 	* bitmap.cc: ...here.
! 	* btfout.c: Moved to...
! 	* btfout.cc: ...here.
! 	* builtins.c: Moved to...
! 	* builtins.cc: ...here.
! 	* caller-save.c: Moved to...
! 	* caller-save.cc: ...here.
! 	* calls.c: Moved to...
! 	* calls.cc: ...here.
! 	* ccmp.c: Moved to...
! 	* ccmp.cc: ...here.
! 	* cfg.c: Moved to...
! 	* cfg.cc: ...here.
! 	* cfganal.c: Moved to...
! 	* cfganal.cc: ...here.
! 	* cfgbuild.c: Moved to...
! 	* cfgbuild.cc: ...here.
! 	* cfgcleanup.c: Moved to...
! 	* cfgcleanup.cc: ...here.
! 	* cfgexpand.c: Moved to...
! 	* cfgexpand.cc: ...here.
! 	* cfghooks.c: Moved to...
! 	* cfghooks.cc: ...here.
! 	* cfgloop.c: Moved to...
! 	* cfgloop.cc: ...here.
! 	* cfgloopanal.c: Moved to...
! 	* cfgloopanal.cc: ...here.
! 	* cfgloopmanip.c: Moved to...
! 	* cfgloopmanip.cc: ...here.
! 	* cfgrtl.c: Moved to...
! 	* cfgrtl.cc: ...here.
! 	* cgraph.c: Moved to...
! 	* cgraph.cc: ...here.
! 	* cgraphbuild.c: Moved to...
! 	* cgraphbuild.cc: ...here.
! 	* cgraphclones.c: Moved to...
! 	* cgraphclones.cc: ...here.
! 	* cgraphunit.c: Moved to...
! 	* cgraphunit.cc: ...here.
! 	* collect-utils.c: Moved to...
! 	* collect-utils.cc: ...here.
! 	* collect2-aix.c: Moved to...
! 	* collect2-aix.cc: ...here.
! 	* collect2.c: Moved to...
! 	* collect2.cc: ...here.
! 	* combine-stack-adj.c: Moved to...
! 	* combine-stack-adj.cc: ...here.
! 	* combine.c: Moved to...
! 	* combine.cc: ...here.
! 	* common/common-targhooks.c: Moved to...
! 	* common/common-targhooks.cc: ...here.
! 	* common/config/aarch64/aarch64-common.c: Moved to...
! 	* common/config/aarch64/aarch64-common.cc: ...here.
! 	* common/config/alpha/alpha-common.c: Moved to...
! 	* common/config/alpha/alpha-common.cc: ...here.
! 	* common/config/arc/arc-common.c: Moved to...
! 	* common/config/arc/arc-common.cc: ...here.
! 	* common/config/arm/arm-common.c: Moved to...
! 	* common/config/arm/arm-common.cc: ...here.
! 	* common/config/avr/avr-common.c: Moved to...
! 	* common/config/avr/avr-common.cc: ...here.
! 	* common/config/bfin/bfin-common.c: Moved to...
! 	* common/config/bfin/bfin-common.cc: ...here.
! 	* common/config/bpf/bpf-common.c: Moved to...
! 	* common/config/bpf/bpf-common.cc: ...here.
! 	* common/config/c6x/c6x-common.c: Moved to...
! 	* common/config/c6x/c6x-common.cc: ...here.
! 	* common/config/cr16/cr16-common.c: Moved to...
! 	* common/config/cr16/cr16-common.cc: ...here.
! 	* common/config/cris/cris-common.c: Moved to...
! 	* common/config/cris/cris-common.cc: ...here.
! 	* common/config/csky/csky-common.c: Moved to...
! 	* common/config/csky/csky-common.cc: ...here.
! 	* common/config/default-common.c: Moved to...
! 	* common/config/default-common.cc: ...here.
! 	* common/config/epiphany/epiphany-common.c: Moved to...
! 	* common/config/epiphany/epiphany-common.cc: ...here.
! 	* common/config/fr30/fr30-common.c: Moved to...
! 	* common/config/fr30/fr30-common.cc: ...here.
! 	* common/config/frv/frv-common.c: Moved to...
! 	* common/config/frv/frv-common.cc: ...here.
! 	* common/config/gcn/gcn-common.c: Moved to...
! 	* common/config/gcn/gcn-common.cc: ...here.
! 	* common/config/h8300/h8300-common.c: Moved to...
! 	* common/config/h8300/h8300-common.cc: ...here.
! 	* common/config/i386/i386-common.c: Moved to...
! 	* common/config/i386/i386-common.cc: ...here.
! 	* common/config/ia64/ia64-common.c: Moved to...
! 	* common/config/ia64/ia64-common.cc: ...here.
! 	* common/config/iq2000/iq2000-common.c: Moved to...
! 	* common/config/iq2000/iq2000-common.cc: ...here.
! 	* common/config/lm32/lm32-common.c: Moved to...
! 	* common/config/lm32/lm32-common.cc: ...here.
! 	* common/config/m32r/m32r-common.c: Moved to...
! 	* common/config/m32r/m32r-common.cc: ...here.
! 	* common/config/m68k/m68k-common.c: Moved to...
! 	* common/config/m68k/m68k-common.cc: ...here.
! 	* common/config/mcore/mcore-common.c: Moved to...
! 	* common/config/mcore/mcore-common.cc: ...here.
! 	* common/config/microblaze/microblaze-common.c: Moved to...
! 	* common/config/microblaze/microblaze-common.cc: ...here.
! 	* common/config/mips/mips-common.c: Moved to...
! 	* common/config/mips/mips-common.cc: ...here.
! 	* common/config/mmix/mmix-common.c: Moved to...
! 	* common/config/mmix/mmix-common.cc: ...here.
! 	* common/config/mn10300/mn10300-common.c: Moved to...
! 	* common/config/mn10300/mn10300-common.cc: ...here.
! 	* common/config/msp430/msp430-common.c: Moved to...
! 	* common/config/msp430/msp430-common.cc: ...here.
! 	* common/config/nds32/nds32-common.c: Moved to...
! 	* common/config/nds32/nds32-common.cc: ...here.
! 	* common/config/nios2/nios2-common.c: Moved to...
! 	* common/config/nios2/nios2-common.cc: ...here.
! 	* common/config/nvptx/nvptx-common.c: Moved to...
! 	* common/config/nvptx/nvptx-common.cc: ...here.
! 	* common/config/or1k/or1k-common.c: Moved to...
! 	* common/config/or1k/or1k-common.cc: ...here.
! 	* common/config/pa/pa-common.c: Moved to...
! 	* common/config/pa/pa-common.cc: ...here.
! 	* common/config/pdp11/pdp11-common.c: Moved to...
! 	* common/config/pdp11/pdp11-common.cc: ...here.
! 	* common/config/pru/pru-common.c: Moved to...
! 	* common/config/pru/pru-common.cc: ...here.
! 	* common/config/riscv/riscv-common.c: Moved to...
! 	* common/config/riscv/riscv-common.cc: ...here.
! 	* common/config/rs6000/rs6000-common.c: Moved to...
! 	* common/config/rs6000/rs6000-common.cc: ...here.
! 	* common/config/rx/rx-common.c: Moved to...
! 	* common/config/rx/rx-common.cc: ...here.
! 	* common/config/s390/s390-common.c: Moved to...
! 	* common/config/s390/s390-common.cc: ...here.
! 	* common/config/sh/sh-common.c: Moved to...
! 	* common/config/sh/sh-common.cc: ...here.
! 	* common/config/sparc/sparc-common.c: Moved to...
! 	* common/config/sparc/sparc-common.cc: ...here.
! 	* common/config/tilegx/tilegx-common.c: Moved to...
! 	* common/config/tilegx/tilegx-common.cc: ...here.
! 	* common/config/tilepro/tilepro-common.c: Moved to...
! 	* common/config/tilepro/tilepro-common.cc: ...here.
! 	* common/config/v850/v850-common.c: Moved to...
! 	* common/config/v850/v850-common.cc: ...here.
! 	* common/config/vax/vax-common.c: Moved to...
! 	* common/config/vax/vax-common.cc: ...here.
! 	* common/config/visium/visium-common.c: Moved to...
! 	* common/config/visium/visium-common.cc: ...here.
! 	* common/config/xstormy16/xstormy16-common.c: Moved to...
! 	* common/config/xstormy16/xstormy16-common.cc: ...here.
! 	* common/config/xtensa/xtensa-common.c: Moved to...
! 	* common/config/xtensa/xtensa-common.cc: ...here.
! 	* compare-elim.c: Moved to...
! 	* compare-elim.cc: ...here.
! 	* config/aarch64/aarch64-bti-insert.c: Moved to...
! 	* config/aarch64/aarch64-bti-insert.cc: ...here.
! 	* config/aarch64/aarch64-builtins.c: Moved to...
! 	* config/aarch64/aarch64-builtins.cc: ...here.
! 	* config/aarch64/aarch64-c.c: Moved to...
! 	* config/aarch64/aarch64-c.cc: ...here.
! 	* config/aarch64/aarch64-d.c: Moved to...
! 	* config/aarch64/aarch64-d.cc: ...here.
! 	* config/aarch64/aarch64.c: Moved to...
! 	* config/aarch64/aarch64.cc: ...here.
! 	* config/aarch64/cortex-a57-fma-steering.c: Moved to...
! 	* config/aarch64/cortex-a57-fma-steering.cc: ...here.
! 	* config/aarch64/driver-aarch64.c: Moved to...
! 	* config/aarch64/driver-aarch64.cc: ...here.
! 	* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
! 	* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
! 	* config/aarch64/host-aarch64-darwin.c: Moved to...
! 	* config/aarch64/host-aarch64-darwin.cc: ...here.
! 	* config/alpha/alpha.c: Moved to...
! 	* config/alpha/alpha.cc: ...here.
! 	* config/alpha/driver-alpha.c: Moved to...
! 	* config/alpha/driver-alpha.cc: ...here.
! 	* config/arc/arc-c.c: Moved to...
! 	* config/arc/arc-c.cc: ...here.
! 	* config/arc/arc.c: Moved to...
! 	* config/arc/arc.cc: ...here.
! 	* config/arc/driver-arc.c: Moved to...
! 	* config/arc/driver-arc.cc: ...here.
! 	* config/arm/aarch-common.c: Moved to...
! 	* config/arm/aarch-common.cc: ...here.
! 	* config/arm/arm-builtins.c: Moved to...
! 	* config/arm/arm-builtins.cc: ...here.
! 	* config/arm/arm-c.c: Moved to...
! 	* config/arm/arm-c.cc: ...here.
! 	* config/arm/arm-d.c: Moved to...
! 	* config/arm/arm-d.cc: ...here.
! 	* config/arm/arm.c: Moved to...
! 	* config/arm/arm.cc: ...here.
! 	* config/arm/driver-arm.c: Moved to...
! 	* config/arm/driver-arm.cc: ...here.
! 	* config/avr/avr-c.c: Moved to...
! 	* config/avr/avr-c.cc: ...here.
! 	* config/avr/avr-devices.c: Moved to...
! 	* config/avr/avr-devices.cc: ...here.
! 	* config/avr/avr-log.c: Moved to...
! 	* config/avr/avr-log.cc: ...here.
! 	* config/avr/avr.c: Moved to...
! 	* config/avr/avr.cc: ...here.
! 	* config/avr/driver-avr.c: Moved to...
! 	* config/avr/driver-avr.cc: ...here.
! 	* config/avr/gen-avr-mmcu-specs.c: Moved to...
! 	* config/avr/gen-avr-mmcu-specs.cc: ...here.
! 	* config/avr/gen-avr-mmcu-texi.c: Moved to...
! 	* config/avr/gen-avr-mmcu-texi.cc: ...here.
! 	* config/bfin/bfin.c: Moved to...
! 	* config/bfin/bfin.cc: ...here.
! 	* config/bpf/bpf.c: Moved to...
! 	* config/bpf/bpf.cc: ...here.
! 	* config/bpf/coreout.c: Moved to...
! 	* config/bpf/coreout.cc: ...here.
! 	* config/c6x/c6x.c: Moved to...
! 	* config/c6x/c6x.cc: ...here.
! 	* config/cr16/cr16.c: Moved to...
! 	* config/cr16/cr16.cc: ...here.
! 	* config/cris/cris.c: Moved to...
! 	* config/cris/cris.cc: ...here.
! 	* config/csky/csky.c: Moved to...
! 	* config/csky/csky.cc: ...here.
! 	* config/darwin-c.c: Moved to...
! 	* config/darwin-c.cc: ...here.
! 	* config/darwin-d.c: Moved to...
! 	* config/darwin-d.cc: ...here.
! 	* config/darwin-driver.c: Moved to...
! 	* config/darwin-driver.cc: ...here.
! 	* config/darwin-f.c: Moved to...
! 	* config/darwin-f.cc: ...here.
! 	* config/darwin.c: Moved to...
! 	* config/darwin.cc: ...here.
! 	* config/default-c.c: Moved to...
! 	* config/default-c.cc: ...here.
! 	* config/default-d.c: Moved to...
! 	* config/default-d.cc: ...here.
! 	* config/dragonfly-d.c: Moved to...
! 	* config/dragonfly-d.cc: ...here.
! 	* config/epiphany/epiphany.c: Moved to...
! 	* config/epiphany/epiphany.cc: ...here.
! 	* config/epiphany/mode-switch-use.c: Moved to...
! 	* config/epiphany/mode-switch-use.cc: ...here.
! 	* config/epiphany/resolve-sw-modes.c: Moved to...
! 	* config/epiphany/resolve-sw-modes.cc: ...here.
! 	* config/fr30/fr30.c: Moved to...
! 	* config/fr30/fr30.cc: ...here.
! 	* config/freebsd-d.c: Moved to...
! 	* config/freebsd-d.cc: ...here.
! 	* config/frv/frv.c: Moved to...
! 	* config/frv/frv.cc: ...here.
! 	* config/ft32/ft32.c: Moved to...
! 	* config/ft32/ft32.cc: ...here.
! 	* config/gcn/driver-gcn.c: Moved to...
! 	* config/gcn/driver-gcn.cc: ...here.
! 	* config/gcn/gcn-run.c: Moved to...
! 	* config/gcn/gcn-run.cc: ...here.
! 	* config/gcn/gcn-tree.c: Moved to...
! 	* config/gcn/gcn-tree.cc: ...here.
! 	* config/gcn/gcn.c: Moved to...
! 	* config/gcn/gcn.cc: ...here.
! 	* config/gcn/mkoffload.c: Moved to...
! 	* config/gcn/mkoffload.cc: ...here.
! 	* config/glibc-c.c: Moved to...
! 	* config/glibc-c.cc: ...here.
! 	* config/glibc-d.c: Moved to...
! 	* config/glibc-d.cc: ...here.
! 	* config/h8300/h8300.c: Moved to...
! 	* config/h8300/h8300.cc: ...here.
! 	* config/host-darwin.c: Moved to...
! 	* config/host-darwin.cc: ...here.
! 	* config/host-hpux.c: Moved to...
! 	* config/host-hpux.cc: ...here.
! 	* config/host-linux.c: Moved to...
! 	* config/host-linux.cc: ...here.
! 	* config/host-netbsd.c: Moved to...
! 	* config/host-netbsd.cc: ...here.
! 	* config/host-openbsd.c: Moved to...
! 	* config/host-openbsd.cc: ...here.
! 	* config/host-solaris.c: Moved to...
! 	* config/host-solaris.cc: ...here.
! 	* config/i386/djgpp.c: Moved to...
! 	* config/i386/djgpp.cc: ...here.
! 	* config/i386/driver-i386.c: Moved to...
! 	* config/i386/driver-i386.cc: ...here.
! 	* config/i386/driver-mingw32.c: Moved to...
! 	* config/i386/driver-mingw32.cc: ...here.
! 	* config/i386/gnu-property.c: Moved to...
! 	* config/i386/gnu-property.cc: ...here.
! 	* config/i386/host-cygwin.c: Moved to...
! 	* config/i386/host-cygwin.cc: ...here.
! 	* config/i386/host-i386-darwin.c: Moved to...
! 	* config/i386/host-i386-darwin.cc: ...here.
! 	* config/i386/host-mingw32.c: Moved to...
! 	* config/i386/host-mingw32.cc: ...here.
! 	* config/i386/i386-builtins.c: Moved to...
! 	* config/i386/i386-builtins.cc: ...here.
! 	* config/i386/i386-c.c: Moved to...
! 	* config/i386/i386-c.cc: ...here.
! 	* config/i386/i386-d.c: Moved to...
! 	* config/i386/i386-d.cc: ...here.
! 	* config/i386/i386-expand.c: Moved to...
! 	* config/i386/i386-expand.cc: ...here.
! 	* config/i386/i386-features.c: Moved to...
! 	* config/i386/i386-features.cc: ...here.
! 	* config/i386/i386-options.c: Moved to...
! 	* config/i386/i386-options.cc: ...here.
! 	* config/i386/i386.c: Moved to...
! 	* config/i386/i386.cc: ...here.
! 	* config/i386/intelmic-mkoffload.c: Moved to...
! 	* config/i386/intelmic-mkoffload.cc: ...here.
! 	* config/i386/msformat-c.c: Moved to...
! 	* config/i386/msformat-c.cc: ...here.
! 	* config/i386/winnt-cxx.c: Moved to...
! 	* config/i386/winnt-cxx.cc: ...here.
! 	* config/i386/winnt-d.c: Moved to...
! 	* config/i386/winnt-d.cc: ...here.
! 	* config/i386/winnt-stubs.c: Moved to...
! 	* config/i386/winnt-stubs.cc: ...here.
! 	* config/i386/winnt.c: Moved to...
! 	* config/i386/winnt.cc: ...here.
! 	* config/i386/x86-tune-sched-atom.c: Moved to...
! 	* config/i386/x86-tune-sched-atom.cc: ...here.
! 	* config/i386/x86-tune-sched-bd.c: Moved to...
! 	* config/i386/x86-tune-sched-bd.cc: ...here.
! 	* config/i386/x86-tune-sched-core.c: Moved to...
! 	* config/i386/x86-tune-sched-core.cc: ...here.
! 	* config/i386/x86-tune-sched.c: Moved to...
! 	* config/i386/x86-tune-sched.cc: ...here.
! 	* config/ia64/ia64-c.c: Moved to...
! 	* config/ia64/ia64-c.cc: ...here.
! 	* config/ia64/ia64.c: Moved to...
! 	* config/ia64/ia64.cc: ...here.
! 	* config/iq2000/iq2000.c: Moved to...
! 	* config/iq2000/iq2000.cc: ...here.
! 	* config/linux.c: Moved to...
! 	* config/linux.cc: ...here.
! 	* config/lm32/lm32.c: Moved to...
! 	* config/lm32/lm32.cc: ...here.
! 	* config/m32c/m32c-pragma.c: Moved to...
! 	* config/m32c/m32c-pragma.cc: ...here.
! 	* config/m32c/m32c.c: Moved to...
! 	* config/m32c/m32c.cc: ...here.
! 	* config/m32r/m32r.c: Moved to...
! 	* config/m32r/m32r.cc: ...here.
! 	* config/m68k/m68k.c: Moved to...
! 	* config/m68k/m68k.cc: ...here.
! 	* config/mcore/mcore.c: Moved to...
! 	* config/mcore/mcore.cc: ...here.
! 	* config/microblaze/microblaze-c.c: Moved to...
! 	* config/microblaze/microblaze-c.cc: ...here.
! 	* config/microblaze/microblaze.c: Moved to...
! 	* config/microblaze/microblaze.cc: ...here.
! 	* config/mips/driver-native.c: Moved to...
! 	* config/mips/driver-native.cc: ...here.
! 	* config/mips/frame-header-opt.c: Moved to...
! 	* config/mips/frame-header-opt.cc: ...here.
! 	* config/mips/mips-d.c: Moved to...
! 	* config/mips/mips-d.cc: ...here.
! 	* config/mips/mips.c: Moved to...
! 	* config/mips/mips.cc: ...here.
! 	* config/mmix/mmix.c: Moved to...
! 	* config/mmix/mmix.cc: ...here.
! 	* config/mn10300/mn10300.c: Moved to...
! 	* config/mn10300/mn10300.cc: ...here.
! 	* config/moxie/moxie.c: Moved to...
! 	* config/moxie/moxie.cc: ...here.
! 	* config/msp430/driver-msp430.c: Moved to...
! 	* config/msp430/driver-msp430.cc: ...here.
! 	* config/msp430/msp430-c.c: Moved to...
! 	* config/msp430/msp430-c.cc: ...here.
! 	* config/msp430/msp430-devices.c: Moved to...
! 	* config/msp430/msp430-devices.cc: ...here.
! 	* config/msp430/msp430.c: Moved to...
! 	* config/msp430/msp430.cc: ...here.
! 	* config/nds32/nds32-cost.c: Moved to...
! 	* config/nds32/nds32-cost.cc: ...here.
! 	* config/nds32/nds32-fp-as-gp.c: Moved to...
! 	* config/nds32/nds32-fp-as-gp.cc: ...here.
! 	* config/nds32/nds32-intrinsic.c: Moved to...
! 	* config/nds32/nds32-intrinsic.cc: ...here.
! 	* config/nds32/nds32-isr.c: Moved to...
! 	* config/nds32/nds32-isr.cc: ...here.
! 	* config/nds32/nds32-md-auxiliary.c: Moved to...
! 	* config/nds32/nds32-md-auxiliary.cc: ...here.
! 	* config/nds32/nds32-memory-manipulation.c: Moved to...
! 	* config/nds32/nds32-memory-manipulation.cc: ...here.
! 	* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
! 	* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
! 	* config/nds32/nds32-predicates.c: Moved to...
! 	* config/nds32/nds32-predicates.cc: ...here.
! 	* config/nds32/nds32-relax-opt.c: Moved to...
! 	* config/nds32/nds32-relax-opt.cc: ...here.
! 	* config/nds32/nds32-utils.c: Moved to...
! 	* config/nds32/nds32-utils.cc: ...here.
! 	* config/nds32/nds32.c: Moved to...
! 	* config/nds32/nds32.cc: ...here.
! 	* config/netbsd-d.c: Moved to...
! 	* config/netbsd-d.cc: ...here.
! 	* config/netbsd.c: Moved to...
! 	* config/netbsd.cc: ...here.
! 	* config/nios2/nios2.c: Moved to...
! 	* config/nios2/nios2.cc: ...here.
! 	* config/nvptx/mkoffload.c: Moved to...
! 	* config/nvptx/mkoffload.cc: ...here.
! 	* config/nvptx/nvptx-c.c: Moved to...
! 	* config/nvptx/nvptx-c.cc: ...here.
! 	* config/nvptx/nvptx.c: Moved to...
! 	* config/nvptx/nvptx.cc: ...here.
! 	* config/openbsd-d.c: Moved to...
! 	* config/openbsd-d.cc: ...here.
! 	* config/or1k/or1k.c: Moved to...
! 	* config/or1k/or1k.cc: ...here.
! 	* config/pa/pa-d.c: Moved to...
! 	* config/pa/pa-d.cc: ...here.
! 	* config/pa/pa.c: Moved to...
! 	* config/pa/pa.cc: ...here.
! 	* config/pdp11/pdp11.c: Moved to...
! 	* config/pdp11/pdp11.cc: ...here.
! 	* config/pru/pru-passes.c: Moved to...
! 	* config/pru/pru-passes.cc: ...here.
! 	* config/pru/pru-pragma.c: Moved to...
! 	* config/pru/pru-pragma.cc: ...here.
! 	* config/pru/pru.c: Moved to...
! 	* config/pru/pru.cc: ...here.
! 	* config/riscv/riscv-builtins.c: Moved to...
! 	* config/riscv/riscv-builtins.cc: ...here.
! 	* config/riscv/riscv-c.c: Moved to...
! 	* config/riscv/riscv-c.cc: ...here.
! 	* config/riscv/riscv-d.c: Moved to...
! 	* config/riscv/riscv-d.cc: ...here.
! 	* config/riscv/riscv-shorten-memrefs.c: Moved to...
! 	* config/riscv/riscv-shorten-memrefs.cc: ...here.
! 	* config/riscv/riscv-sr.c: Moved to...
! 	* config/riscv/riscv-sr.cc: ...here.
! 	* config/riscv/riscv.c: Moved to...
! 	* config/riscv/riscv.cc: ...here.
! 	* config/rl78/rl78-c.c: Moved to...
! 	* config/rl78/rl78-c.cc: ...here.
! 	* config/rl78/rl78.c: Moved to...
! 	* config/rl78/rl78.cc: ...here.
! 	* config/rs6000/driver-rs6000.c: Moved to...
! 	* config/rs6000/driver-rs6000.cc: ...here.
! 	* config/rs6000/host-darwin.c: Moved to...
! 	* config/rs6000/host-darwin.cc: ...here.
! 	* config/rs6000/host-ppc64-darwin.c: Moved to...
! 	* config/rs6000/host-ppc64-darwin.cc: ...here.
! 	* config/rs6000/rbtree.c: Moved to...
! 	* config/rs6000/rbtree.cc: ...here.
! 	* config/rs6000/rs6000-c.c: Moved to...
! 	* config/rs6000/rs6000-c.cc: ...here.
! 	* config/rs6000/rs6000-call.c: Moved to...
! 	* config/rs6000/rs6000-call.cc: ...here.
! 	* config/rs6000/rs6000-d.c: Moved to...
! 	* config/rs6000/rs6000-d.cc: ...here.
! 	* config/rs6000/rs6000-gen-builtins.c: Moved to...
! 	* config/rs6000/rs6000-gen-builtins.cc: ...here.
! 	* config/rs6000/rs6000-linux.c: Moved to...
! 	* config/rs6000/rs6000-linux.cc: ...here.
! 	* config/rs6000/rs6000-logue.c: Moved to...
! 	* config/rs6000/rs6000-logue.cc: ...here.
! 	* config/rs6000/rs6000-p8swap.c: Moved to...
! 	* config/rs6000/rs6000-p8swap.cc: ...here.
! 	* config/rs6000/rs6000-pcrel-opt.c: Moved to...
! 	* config/rs6000/rs6000-pcrel-opt.cc: ...here.
! 	* config/rs6000/rs6000-string.c: Moved to...
! 	* config/rs6000/rs6000-string.cc: ...here.
! 	* config/rs6000/rs6000.c: Moved to...
! 	* config/rs6000/rs6000.cc: ...here.
! 	* config/rx/rx.c: Moved to...
! 	* config/rx/rx.cc: ...here.
! 	* config/s390/driver-native.c: Moved to...
! 	* config/s390/driver-native.cc: ...here.
! 	* config/s390/s390-c.c: Moved to...
! 	* config/s390/s390-c.cc: ...here.
! 	* config/s390/s390-d.c: Moved to...
! 	* config/s390/s390-d.cc: ...here.
! 	* config/s390/s390.c: Moved to...
! 	* config/s390/s390.cc: ...here.
! 	* config/sh/divtab-sh4-300.c: Moved to...
! 	* config/sh/divtab-sh4-300.cc: ...here.
! 	* config/sh/divtab-sh4.c: Moved to...
! 	* config/sh/divtab-sh4.cc: ...here.
! 	* config/sh/divtab.c: Moved to...
! 	* config/sh/divtab.cc: ...here.
! 	* config/sh/sh-c.c: Moved to...
! 	* config/sh/sh-c.cc: ...here.
! 	* config/sh/sh.c: Moved to...
! 	* config/sh/sh.cc: ...here.
! 	* config/sol2-c.c: Moved to...
! 	* config/sol2-c.cc: ...here.
! 	* config/sol2-cxx.c: Moved to...
! 	* config/sol2-cxx.cc: ...here.
! 	* config/sol2-d.c: Moved to...
! 	* config/sol2-d.cc: ...here.
! 	* config/sol2-stubs.c: Moved to...
! 	* config/sol2-stubs.cc: ...here.
! 	* config/sol2.c: Moved to...
! 	* config/sol2.cc: ...here.
! 	* config/sparc/driver-sparc.c: Moved to...
! 	* config/sparc/driver-sparc.cc: ...here.
! 	* config/sparc/sparc-c.c: Moved to...
! 	* config/sparc/sparc-c.cc: ...here.
! 	* config/sparc/sparc-d.c: Moved to...
! 	* config/sparc/sparc-d.cc: ...here.
! 	* config/sparc/sparc.c: Moved to...
! 	* config/sparc/sparc.cc: ...here.
! 	* config/stormy16/stormy16.c: Moved to...
! 	* config/stormy16/stormy16.cc: ...here.
! 	* config/tilegx/mul-tables.c: Moved to...
! 	* config/tilegx/mul-tables.cc: ...here.
! 	* config/tilegx/tilegx-c.c: Moved to...
! 	* config/tilegx/tilegx-c.cc: ...here.
! 	* config/tilegx/tilegx.c: Moved to...
! 	* config/tilegx/tilegx.cc: ...here.
! 	* config/tilepro/mul-tables.c: Moved to...
! 	* config/tilepro/mul-tables.cc: ...here.
! 	* config/tilepro/tilepro-c.c: Moved to...
! 	* config/tilepro/tilepro-c.cc: ...here.
! 	* config/tilepro/tilepro.c: Moved to...
! 	* config/tilepro/tilepro.cc: ...here.
! 	* config/v850/v850-c.c: Moved to...
! 	* config/v850/v850-c.cc: ...here.
! 	* config/v850/v850.c: Moved to...
! 	* config/v850/v850.cc: ...here.
! 	* config/vax/vax.c: Moved to...
! 	* config/vax/vax.cc: ...here.
! 	* config/visium/visium.c: Moved to...
! 	* config/visium/visium.cc: ...here.
! 	* config/vms/vms-c.c: Moved to...
! 	* config/vms/vms-c.cc: ...here.
! 	* config/vms/vms-f.c: Moved to...
! 	* config/vms/vms-f.cc: ...here.
! 	* config/vms/vms.c: Moved to...
! 	* config/vms/vms.cc: ...here.
! 	* config/vxworks-c.c: Moved to...
! 	* config/vxworks-c.cc: ...here.
! 	* config/vxworks.c: Moved to...
! 	* config/vxworks.cc: ...here.
! 	* config/winnt-c.c: Moved to...
! 	* config/winnt-c.cc: ...here.
! 	* config/xtensa/xtensa.c: Moved to...
! 	* config/xtensa/xtensa.cc: ...here.
! 	* context.c: Moved to...
! 	* context.cc: ...here.
! 	* convert.c: Moved to...
! 	* convert.cc: ...here.
! 	* coverage.c: Moved to...
! 	* coverage.cc: ...here.
! 	* cppbuiltin.c: Moved to...
! 	* cppbuiltin.cc: ...here.
! 	* cppdefault.c: Moved to...
! 	* cppdefault.cc: ...here.
! 	* cprop.c: Moved to...
! 	* cprop.cc: ...here.
! 	* cse.c: Moved to...
! 	* cse.cc: ...here.
! 	* cselib.c: Moved to...
! 	* cselib.cc: ...here.
! 	* ctfc.c: Moved to...
! 	* ctfc.cc: ...here.
! 	* ctfout.c: Moved to...
! 	* ctfout.cc: ...here.
! 	* data-streamer-in.c: Moved to...
! 	* data-streamer-in.cc: ...here.
! 	* data-streamer-out.c: Moved to...
! 	* data-streamer-out.cc: ...here.
! 	* data-streamer.c: Moved to...
! 	* data-streamer.cc: ...here.
! 	* dbgcnt.c: Moved to...
! 	* dbgcnt.cc: ...here.
! 	* dbxout.c: Moved to...
! 	* dbxout.cc: ...here.
! 	* dce.c: Moved to...
! 	* dce.cc: ...here.
! 	* ddg.c: Moved to...
! 	* ddg.cc: ...here.
! 	* debug.c: Moved to...
! 	* debug.cc: ...here.
! 	* df-core.c: Moved to...
! 	* df-core.cc: ...here.
! 	* df-problems.c: Moved to...
! 	* df-problems.cc: ...here.
! 	* df-scan.c: Moved to...
! 	* df-scan.cc: ...here.
! 	* dfp.c: Moved to...
! 	* dfp.cc: ...here.
! 	* diagnostic-color.c: Moved to...
! 	* diagnostic-color.cc: ...here.
! 	* diagnostic-show-locus.c: Moved to...
! 	* diagnostic-show-locus.cc: ...here.
! 	* diagnostic-spec.c: Moved to...
! 	* diagnostic-spec.cc: ...here.
! 	* diagnostic.c: Moved to...
! 	* diagnostic.cc: ...here.
! 	* dojump.c: Moved to...
! 	* dojump.cc: ...here.
! 	* dominance.c: Moved to...
! 	* dominance.cc: ...here.
! 	* domwalk.c: Moved to...
! 	* domwalk.cc: ...here.
! 	* double-int.c: Moved to...
! 	* double-int.cc: ...here.
! 	* dse.c: Moved to...
! 	* dse.cc: ...here.
! 	* dumpfile.c: Moved to...
! 	* dumpfile.cc: ...here.
! 	* dwarf2asm.c: Moved to...
! 	* dwarf2asm.cc: ...here.
! 	* dwarf2cfi.c: Moved to...
! 	* dwarf2cfi.cc: ...here.
! 	* dwarf2ctf.c: Moved to...
! 	* dwarf2ctf.cc: ...here.
! 	* dwarf2out.c: Moved to...
! 	* dwarf2out.cc: ...here.
! 	* early-remat.c: Moved to...
! 	* early-remat.cc: ...here.
! 	* edit-context.c: Moved to...
! 	* edit-context.cc: ...here.
! 	* emit-rtl.c: Moved to...
! 	* emit-rtl.cc: ...here.
! 	* errors.c: Moved to...
! 	* errors.cc: ...here.
! 	* et-forest.c: Moved to...
! 	* et-forest.cc: ...here.
! 	* except.c: Moved to...
! 	* except.cc: ...here.
! 	* explow.c: Moved to...
! 	* explow.cc: ...here.
! 	* expmed.c: Moved to...
! 	* expmed.cc: ...here.
! 	* expr.c: Moved to...
! 	* expr.cc: ...here.
! 	* fibonacci_heap.c: Moved to...
! 	* fibonacci_heap.cc: ...here.
! 	* file-find.c: Moved to...
! 	* file-find.cc: ...here.
! 	* file-prefix-map.c: Moved to...
! 	* file-prefix-map.cc: ...here.
! 	* final.c: Moved to...
! 	* final.cc: ...here.
! 	* fixed-value.c: Moved to...
! 	* fixed-value.cc: ...here.
! 	* fold-const-call.c: Moved to...
! 	* fold-const-call.cc: ...here.
! 	* fold-const.c: Moved to...
! 	* fold-const.cc: ...here.
! 	* fp-test.c: Moved to...
! 	* fp-test.cc: ...here.
! 	* function-tests.c: Moved to...
! 	* function-tests.cc: ...here.
! 	* function.c: Moved to...
! 	* function.cc: ...here.
! 	* fwprop.c: Moved to...
! 	* fwprop.cc: ...here.
! 	* gcc-ar.c: Moved to...
! 	* gcc-ar.cc: ...here.
! 	* gcc-main.c: Moved to...
! 	* gcc-main.cc: ...here.
! 	* gcc-rich-location.c: Moved to...
! 	* gcc-rich-location.cc: ...here.
! 	* gcc.c: Moved to...
! 	* gcc.cc: ...here.
! 	* gcov-dump.c: Moved to...
! 	* gcov-dump.cc: ...here.
! 	* gcov-io.c: Moved to...
! 	* gcov-io.cc: ...here.
! 	* gcov-tool.c: Moved to...
! 	* gcov-tool.cc: ...here.
! 	* gcov.c: Moved to...
! 	* gcov.cc: ...here.
! 	* gcse-common.c: Moved to...
! 	* gcse-common.cc: ...here.
! 	* gcse.c: Moved to...
! 	* gcse.cc: ...here.
! 	* genattr-common.c: Moved to...
! 	* genattr-common.cc: ...here.
! 	* genattr.c: Moved to...
! 	* genattr.cc: ...here.
! 	* genattrtab.c: Moved to...
! 	* genattrtab.cc: ...here.
! 	* genautomata.c: Moved to...
! 	* genautomata.cc: ...here.
! 	* gencfn-macros.c: Moved to...
! 	* gencfn-macros.cc: ...here.
! 	* gencheck.c: Moved to...
! 	* gencheck.cc: ...here.
! 	* genchecksum.c: Moved to...
! 	* genchecksum.cc: ...here.
! 	* gencodes.c: Moved to...
! 	* gencodes.cc: ...here.
! 	* genconditions.c: Moved to...
! 	* genconditions.cc: ...here.
! 	* genconfig.c: Moved to...
! 	* genconfig.cc: ...here.
! 	* genconstants.c: Moved to...
! 	* genconstants.cc: ...here.
! 	* genemit.c: Moved to...
! 	* genemit.cc: ...here.
! 	* genenums.c: Moved to...
! 	* genenums.cc: ...here.
! 	* generic-match-head.c: Moved to...
! 	* generic-match-head.cc: ...here.
! 	* genextract.c: Moved to...
! 	* genextract.cc: ...here.
! 	* genflags.c: Moved to...
! 	* genflags.cc: ...here.
! 	* gengenrtl.c: Moved to...
! 	* gengenrtl.cc: ...here.
! 	* gengtype-parse.c: Moved to...
! 	* gengtype-parse.cc: ...here.
! 	* gengtype-state.c: Moved to...
! 	* gengtype-state.cc: ...here.
! 	* gengtype.c: Moved to...
! 	* gengtype.cc: ...here.
! 	* genhooks.c: Moved to...
! 	* genhooks.cc: ...here.
! 	* genmatch.c: Moved to...
! 	* genmatch.cc: ...here.
! 	* genmddeps.c: Moved to...
! 	* genmddeps.cc: ...here.
! 	* genmddump.c: Moved to...
! 	* genmddump.cc: ...here.
! 	* genmodes.c: Moved to...
! 	* genmodes.cc: ...here.
! 	* genopinit.c: Moved to...
! 	* genopinit.cc: ...here.
! 	* genoutput.c: Moved to...
! 	* genoutput.cc: ...here.
! 	* genpeep.c: Moved to...
! 	* genpeep.cc: ...here.
! 	* genpreds.c: Moved to...
! 	* genpreds.cc: ...here.
! 	* genrecog.c: Moved to...
! 	* genrecog.cc: ...here.
! 	* gensupport.c: Moved to...
! 	* gensupport.cc: ...here.
! 	* gentarget-def.c: Moved to...
! 	* gentarget-def.cc: ...here.
! 	* genversion.c: Moved to...
! 	* genversion.cc: ...here.
! 	* ggc-common.c: Moved to...
! 	* ggc-common.cc: ...here.
! 	* ggc-none.c: Moved to...
! 	* ggc-none.cc: ...here.
! 	* ggc-page.c: Moved to...
! 	* ggc-page.cc: ...here.
! 	* ggc-tests.c: Moved to...
! 	* ggc-tests.cc: ...here.
! 	* gimple-builder.c: Moved to...
! 	* gimple-builder.cc: ...here.
! 	* gimple-expr.c: Moved to...
! 	* gimple-expr.cc: ...here.
! 	* gimple-fold.c: Moved to...
! 	* gimple-fold.cc: ...here.
! 	* gimple-iterator.c: Moved to...
! 	* gimple-iterator.cc: ...here.
! 	* gimple-laddress.c: Moved to...
! 	* gimple-laddress.cc: ...here.
! 	* gimple-loop-jam.c: Moved to...
! 	* gimple-loop-jam.cc: ...here.
! 	* gimple-low.c: Moved to...
! 	* gimple-low.cc: ...here.
! 	* gimple-match-head.c: Moved to...
! 	* gimple-match-head.cc: ...here.
! 	* gimple-pretty-print.c: Moved to...
! 	* gimple-pretty-print.cc: ...here.
! 	* gimple-ssa-backprop.c: Moved to...
! 	* gimple-ssa-backprop.cc: ...here.
! 	* gimple-ssa-evrp-analyze.c: Moved to...
! 	* gimple-ssa-evrp-analyze.cc: ...here.
! 	* gimple-ssa-evrp.c: Moved to...
! 	* gimple-ssa-evrp.cc: ...here.
! 	* gimple-ssa-isolate-paths.c: Moved to...
! 	* gimple-ssa-isolate-paths.cc: ...here.
! 	* gimple-ssa-nonnull-compare.c: Moved to...
! 	* gimple-ssa-nonnull-compare.cc: ...here.
! 	* gimple-ssa-split-paths.c: Moved to...
! 	* gimple-ssa-split-paths.cc: ...here.
! 	* gimple-ssa-sprintf.c: Moved to...
! 	* gimple-ssa-sprintf.cc: ...here.
! 	* gimple-ssa-store-merging.c: Moved to...
! 	* gimple-ssa-store-merging.cc: ...here.
! 	* gimple-ssa-strength-reduction.c: Moved to...
! 	* gimple-ssa-strength-reduction.cc: ...here.
! 	* gimple-ssa-warn-alloca.c: Moved to...
! 	* gimple-ssa-warn-alloca.cc: ...here.
! 	* gimple-ssa-warn-restrict.c: Moved to...
! 	* gimple-ssa-warn-restrict.cc: ...here.
! 	* gimple-streamer-in.c: Moved to...
! 	* gimple-streamer-in.cc: ...here.
! 	* gimple-streamer-out.c: Moved to...
! 	* gimple-streamer-out.cc: ...here.
! 	* gimple-walk.c: Moved to...
! 	* gimple-walk.cc: ...here.
! 	* gimple-warn-recursion.c: Moved to...
! 	* gimple-warn-recursion.cc: ...here.
! 	* gimple.c: Moved to...
! 	* gimple.cc: ...here.
! 	* gimplify-me.c: Moved to...
! 	* gimplify-me.cc: ...here.
! 	* gimplify.c: Moved to...
! 	* gimplify.cc: ...here.
! 	* godump.c: Moved to...
! 	* godump.cc: ...here.
! 	* graph.c: Moved to...
! 	* graph.cc: ...here.
! 	* graphds.c: Moved to...
! 	* graphds.cc: ...here.
! 	* graphite-dependences.c: Moved to...
! 	* graphite-dependences.cc: ...here.
! 	* graphite-isl-ast-to-gimple.c: Moved to...
! 	* graphite-isl-ast-to-gimple.cc: ...here.
! 	* graphite-optimize-isl.c: Moved to...
! 	* graphite-optimize-isl.cc: ...here.
! 	* graphite-poly.c: Moved to...
! 	* graphite-poly.cc: ...here.
! 	* graphite-scop-detection.c: Moved to...
! 	* graphite-scop-detection.cc: ...here.
! 	* graphite-sese-to-poly.c: Moved to...
! 	* graphite-sese-to-poly.cc: ...here.
! 	* graphite.c: Moved to...
! 	* graphite.cc: ...here.
! 	* haifa-sched.c: Moved to...
! 	* haifa-sched.cc: ...here.
! 	* hash-map-tests.c: Moved to...
! 	* hash-map-tests.cc: ...here.
! 	* hash-set-tests.c: Moved to...
! 	* hash-set-tests.cc: ...here.
! 	* hash-table.c: Moved to...
! 	* hash-table.cc: ...here.
! 	* hooks.c: Moved to...
! 	* hooks.cc: ...here.
! 	* host-default.c: Moved to...
! 	* host-default.cc: ...here.
! 	* hw-doloop.c: Moved to...
! 	* hw-doloop.cc: ...here.
! 	* hwint.c: Moved to...
! 	* hwint.cc: ...here.
! 	* ifcvt.c: Moved to...
! 	* ifcvt.cc: ...here.
! 	* inchash.c: Moved to...
! 	* inchash.cc: ...here.
! 	* incpath.c: Moved to...
! 	* incpath.cc: ...here.
! 	* init-regs.c: Moved to...
! 	* init-regs.cc: ...here.
! 	* input.c: Moved to...
! 	* input.cc: ...here.
! 	* internal-fn.c: Moved to...
! 	* internal-fn.cc: ...here.
! 	* intl.c: Moved to...
! 	* intl.cc: ...here.
! 	* ipa-comdats.c: Moved to...
! 	* ipa-comdats.cc: ...here.
! 	* ipa-cp.c: Moved to...
! 	* ipa-cp.cc: ...here.
! 	* ipa-devirt.c: Moved to...
! 	* ipa-devirt.cc: ...here.
! 	* ipa-fnsummary.c: Moved to...
! 	* ipa-fnsummary.cc: ...here.
! 	* ipa-icf-gimple.c: Moved to...
! 	* ipa-icf-gimple.cc: ...here.
! 	* ipa-icf.c: Moved to...
! 	* ipa-icf.cc: ...here.
! 	* ipa-inline-analysis.c: Moved to...
! 	* ipa-inline-analysis.cc: ...here.
! 	* ipa-inline-transform.c: Moved to...
! 	* ipa-inline-transform.cc: ...here.
! 	* ipa-inline.c: Moved to...
! 	* ipa-inline.cc: ...here.
! 	* ipa-modref-tree.c: Moved to...
! 	* ipa-modref-tree.cc: ...here.
! 	* ipa-modref.c: Moved to...
! 	* ipa-modref.cc: ...here.
! 	* ipa-param-manipulation.c: Moved to...
! 	* ipa-param-manipulation.cc: ...here.
! 	* ipa-polymorphic-call.c: Moved to...
! 	* ipa-polymorphic-call.cc: ...here.
! 	* ipa-predicate.c: Moved to...
! 	* ipa-predicate.cc: ...here.
! 	* ipa-profile.c: Moved to...
! 	* ipa-profile.cc: ...here.
! 	* ipa-prop.c: Moved to...
! 	* ipa-prop.cc: ...here.
! 	* ipa-pure-const.c: Moved to...
! 	* ipa-pure-const.cc: ...here.
! 	* ipa-ref.c: Moved to...
! 	* ipa-ref.cc: ...here.
! 	* ipa-reference.c: Moved to...
! 	* ipa-reference.cc: ...here.
! 	* ipa-split.c: Moved to...
! 	* ipa-split.cc: ...here.
! 	* ipa-sra.c: Moved to...
! 	* ipa-sra.cc: ...here.
! 	* ipa-utils.c: Moved to...
! 	* ipa-utils.cc: ...here.
! 	* ipa-visibility.c: Moved to...
! 	* ipa-visibility.cc: ...here.
! 	* ipa.c: Moved to...
! 	* ipa.cc: ...here.
! 	* ira-build.c: Moved to...
! 	* ira-build.cc: ...here.
! 	* ira-color.c: Moved to...
! 	* ira-color.cc: ...here.
! 	* ira-conflicts.c: Moved to...
! 	* ira-conflicts.cc: ...here.
! 	* ira-costs.c: Moved to...
! 	* ira-costs.cc: ...here.
! 	* ira-emit.c: Moved to...
! 	* ira-emit.cc: ...here.
! 	* ira-lives.c: Moved to...
! 	* ira-lives.cc: ...here.
! 	* ira.c: Moved to...
! 	* ira.cc: ...here.
! 	* jump.c: Moved to...
! 	* jump.cc: ...here.
! 	* langhooks.c: Moved to...
! 	* langhooks.cc: ...here.
! 	* lcm.c: Moved to...
! 	* lcm.cc: ...here.
! 	* lists.c: Moved to...
! 	* lists.cc: ...here.
! 	* loop-doloop.c: Moved to...
! 	* loop-doloop.cc: ...here.
! 	* loop-init.c: Moved to...
! 	* loop-init.cc: ...here.
! 	* loop-invariant.c: Moved to...
! 	* loop-invariant.cc: ...here.
! 	* loop-iv.c: Moved to...
! 	* loop-iv.cc: ...here.
! 	* loop-unroll.c: Moved to...
! 	* loop-unroll.cc: ...here.
! 	* lower-subreg.c: Moved to...
! 	* lower-subreg.cc: ...here.
! 	* lra-assigns.c: Moved to...
! 	* lra-assigns.cc: ...here.
! 	* lra-coalesce.c: Moved to...
! 	* lra-coalesce.cc: ...here.
! 	* lra-constraints.c: Moved to...
! 	* lra-constraints.cc: ...here.
! 	* lra-eliminations.c: Moved to...
! 	* lra-eliminations.cc: ...here.
! 	* lra-lives.c: Moved to...
! 	* lra-lives.cc: ...here.
! 	* lra-remat.c: Moved to...
! 	* lra-remat.cc: ...here.
! 	* lra-spills.c: Moved to...
! 	* lra-spills.cc: ...here.
! 	* lra.c: Moved to...
! 	* lra.cc: ...here.
! 	* lto-cgraph.c: Moved to...
! 	* lto-cgraph.cc: ...here.
! 	* lto-compress.c: Moved to...
! 	* lto-compress.cc: ...here.
! 	* lto-opts.c: Moved to...
! 	* lto-opts.cc: ...here.
! 	* lto-section-in.c: Moved to...
! 	* lto-section-in.cc: ...here.
! 	* lto-section-out.c: Moved to...
! 	* lto-section-out.cc: ...here.
! 	* lto-streamer-in.c: Moved to...
! 	* lto-streamer-in.cc: ...here.
! 	* lto-streamer-out.c: Moved to...
! 	* lto-streamer-out.cc: ...here.
! 	* lto-streamer.c: Moved to...
! 	* lto-streamer.cc: ...here.
! 	* lto-wrapper.c: Moved to...
! 	* lto-wrapper.cc: ...here.
! 	* main.c: Moved to...
! 	* main.cc: ...here.
! 	* mcf.c: Moved to...
! 	* mcf.cc: ...here.
! 	* mode-switching.c: Moved to...
! 	* mode-switching.cc: ...here.
! 	* modulo-sched.c: Moved to...
! 	* modulo-sched.cc: ...here.
! 	* multiple_target.c: Moved to...
! 	* multiple_target.cc: ...here.
! 	* omp-expand.c: Moved to...
! 	* omp-expand.cc: ...here.
! 	* omp-general.c: Moved to...
! 	* omp-general.cc: ...here.
! 	* omp-low.c: Moved to...
! 	* omp-low.cc: ...here.
! 	* omp-offload.c: Moved to...
! 	* omp-offload.cc: ...here.
! 	* omp-simd-clone.c: Moved to...
! 	* omp-simd-clone.cc: ...here.
! 	* opt-suggestions.c: Moved to...
! 	* opt-suggestions.cc: ...here.
! 	* optabs-libfuncs.c: Moved to...
! 	* optabs-libfuncs.cc: ...here.
! 	* optabs-query.c: Moved to...
! 	* optabs-query.cc: ...here.
! 	* optabs-tree.c: Moved to...
! 	* optabs-tree.cc: ...here.
! 	* optabs.c: Moved to...
! 	* optabs.cc: ...here.
! 	* opts-common.c: Moved to...
! 	* opts-common.cc: ...here.
! 	* opts-global.c: Moved to...
! 	* opts-global.cc: ...here.
! 	* opts.c: Moved to...
! 	* opts.cc: ...here.
! 	* passes.c: Moved to...
! 	* passes.cc: ...here.
! 	* plugin.c: Moved to...
! 	* plugin.cc: ...here.
! 	* postreload-gcse.c: Moved to...
! 	* postreload-gcse.cc: ...here.
! 	* postreload.c: Moved to...
! 	* postreload.cc: ...here.
! 	* predict.c: Moved to...
! 	* predict.cc: ...here.
! 	* prefix.c: Moved to...
! 	* prefix.cc: ...here.
! 	* pretty-print.c: Moved to...
! 	* pretty-print.cc: ...here.
! 	* print-rtl-function.c: Moved to...
! 	* print-rtl-function.cc: ...here.
! 	* print-rtl.c: Moved to...
! 	* print-rtl.cc: ...here.
! 	* print-tree.c: Moved to...
! 	* print-tree.cc: ...here.
! 	* profile-count.c: Moved to...
! 	* profile-count.cc: ...here.
! 	* profile.c: Moved to...
! 	* profile.cc: ...here.
! 	* read-md.c: Moved to...
! 	* read-md.cc: ...here.
! 	* read-rtl-function.c: Moved to...
! 	* read-rtl-function.cc: ...here.
! 	* read-rtl.c: Moved to...
! 	* read-rtl.cc: ...here.
! 	* real.c: Moved to...
! 	* real.cc: ...here.
! 	* realmpfr.c: Moved to...
! 	* realmpfr.cc: ...here.
! 	* recog.c: Moved to...
! 	* recog.cc: ...here.
! 	* ree.c: Moved to...
! 	* ree.cc: ...here.
! 	* reg-stack.c: Moved to...
! 	* reg-stack.cc: ...here.
! 	* regcprop.c: Moved to...
! 	* regcprop.cc: ...here.
! 	* reginfo.c: Moved to...
! 	* reginfo.cc: ...here.
! 	* regrename.c: Moved to...
! 	* regrename.cc: ...here.
! 	* regstat.c: Moved to...
! 	* regstat.cc: ...here.
! 	* reload.c: Moved to...
! 	* reload.cc: ...here.
! 	* reload1.c: Moved to...
! 	* reload1.cc: ...here.
! 	* reorg.c: Moved to...
! 	* reorg.cc: ...here.
! 	* resource.c: Moved to...
! 	* resource.cc: ...here.
! 	* rtl-error.c: Moved to...
! 	* rtl-error.cc: ...here.
! 	* rtl-tests.c: Moved to...
! 	* rtl-tests.cc: ...here.
! 	* rtl.c: Moved to...
! 	* rtl.cc: ...here.
! 	* rtlanal.c: Moved to...
! 	* rtlanal.cc: ...here.
! 	* rtlhash.c: Moved to...
! 	* rtlhash.cc: ...here.
! 	* rtlhooks.c: Moved to...
! 	* rtlhooks.cc: ...here.
! 	* rtx-vector-builder.c: Moved to...
! 	* rtx-vector-builder.cc: ...here.
! 	* run-rtl-passes.c: Moved to...
! 	* run-rtl-passes.cc: ...here.
! 	* sancov.c: Moved to...
! 	* sancov.cc: ...here.
! 	* sanopt.c: Moved to...
! 	* sanopt.cc: ...here.
! 	* sbitmap.c: Moved to...
! 	* sbitmap.cc: ...here.
! 	* sched-deps.c: Moved to...
! 	* sched-deps.cc: ...here.
! 	* sched-ebb.c: Moved to...
! 	* sched-ebb.cc: ...here.
! 	* sched-rgn.c: Moved to...
! 	* sched-rgn.cc: ...here.
! 	* sel-sched-dump.c: Moved to...
! 	* sel-sched-dump.cc: ...here.
! 	* sel-sched-ir.c: Moved to...
! 	* sel-sched-ir.cc: ...here.
! 	* sel-sched.c: Moved to...
! 	* sel-sched.cc: ...here.
! 	* selftest-diagnostic.c: Moved to...
! 	* selftest-diagnostic.cc: ...here.
! 	* selftest-rtl.c: Moved to...
! 	* selftest-rtl.cc: ...here.
! 	* selftest-run-tests.c: Moved to...
! 	* selftest-run-tests.cc: ...here.
! 	* selftest.c: Moved to...
! 	* selftest.cc: ...here.
! 	* sese.c: Moved to...
! 	* sese.cc: ...here.
! 	* shrink-wrap.c: Moved to...
! 	* shrink-wrap.cc: ...here.
! 	* simplify-rtx.c: Moved to...
! 	* simplify-rtx.cc: ...here.
! 	* sparseset.c: Moved to...
! 	* sparseset.cc: ...here.
! 	* spellcheck-tree.c: Moved to...
! 	* spellcheck-tree.cc: ...here.
! 	* spellcheck.c: Moved to...
! 	* spellcheck.cc: ...here.
! 	* sreal.c: Moved to...
! 	* sreal.cc: ...here.
! 	* stack-ptr-mod.c: Moved to...
! 	* stack-ptr-mod.cc: ...here.
! 	* statistics.c: Moved to...
! 	* statistics.cc: ...here.
! 	* stmt.c: Moved to...
! 	* stmt.cc: ...here.
! 	* stor-layout.c: Moved to...
! 	* stor-layout.cc: ...here.
! 	* store-motion.c: Moved to...
! 	* store-motion.cc: ...here.
! 	* streamer-hooks.c: Moved to...
! 	* streamer-hooks.cc: ...here.
! 	* stringpool.c: Moved to...
! 	* stringpool.cc: ...here.
! 	* substring-locations.c: Moved to...
! 	* substring-locations.cc: ...here.
! 	* symtab.c: Moved to...
! 	* symtab.cc: ...here.
! 	* target-globals.c: Moved to...
! 	* target-globals.cc: ...here.
! 	* targhooks.c: Moved to...
! 	* targhooks.cc: ...here.
! 	* timevar.c: Moved to...
! 	* timevar.cc: ...here.
! 	* toplev.c: Moved to...
! 	* toplev.cc: ...here.
! 	* tracer.c: Moved to...
! 	* tracer.cc: ...here.
! 	* trans-mem.c: Moved to...
! 	* trans-mem.cc: ...here.
! 	* tree-affine.c: Moved to...
! 	* tree-affine.cc: ...here.
! 	* tree-call-cdce.c: Moved to...
! 	* tree-call-cdce.cc: ...here.
! 	* tree-cfg.c: Moved to...
! 	* tree-cfg.cc: ...here.
! 	* tree-cfgcleanup.c: Moved to...
! 	* tree-cfgcleanup.cc: ...here.
! 	* tree-chrec.c: Moved to...
! 	* tree-chrec.cc: ...here.
! 	* tree-complex.c: Moved to...
! 	* tree-complex.cc: ...here.
! 	* tree-data-ref.c: Moved to...
! 	* tree-data-ref.cc: ...here.
! 	* tree-dfa.c: Moved to...
! 	* tree-dfa.cc: ...here.
! 	* tree-diagnostic.c: Moved to...
! 	* tree-diagnostic.cc: ...here.
! 	* tree-dump.c: Moved to...
! 	* tree-dump.cc: ...here.
! 	* tree-eh.c: Moved to...
! 	* tree-eh.cc: ...here.
! 	* tree-emutls.c: Moved to...
! 	* tree-emutls.cc: ...here.
! 	* tree-if-conv.c: Moved to...
! 	* tree-if-conv.cc: ...here.
! 	* tree-inline.c: Moved to...
! 	* tree-inline.cc: ...here.
! 	* tree-into-ssa.c: Moved to...
! 	* tree-into-ssa.cc: ...here.
! 	* tree-iterator.c: Moved to...
! 	* tree-iterator.cc: ...here.
! 	* tree-loop-distribution.c: Moved to...
! 	* tree-loop-distribution.cc: ...here.
! 	* tree-nested.c: Moved to...
! 	* tree-nested.cc: ...here.
! 	* tree-nrv.c: Moved to...
! 	* tree-nrv.cc: ...here.
! 	* tree-object-size.c: Moved to...
! 	* tree-object-size.cc: ...here.
! 	* tree-outof-ssa.c: Moved to...
! 	* tree-outof-ssa.cc: ...here.
! 	* tree-parloops.c: Moved to...
! 	* tree-parloops.cc: ...here.
! 	* tree-phinodes.c: Moved to...
! 	* tree-phinodes.cc: ...here.
! 	* tree-predcom.c: Moved to...
! 	* tree-predcom.cc: ...here.
! 	* tree-pretty-print.c: Moved to...
! 	* tree-pretty-print.cc: ...here.
! 	* tree-profile.c: Moved to...
! 	* tree-profile.cc: ...here.
! 	* tree-scalar-evolution.c: Moved to...
! 	* tree-scalar-evolution.cc: ...here.
! 	* tree-sra.c: Moved to...
! 	* tree-sra.cc: ...here.
! 	* tree-ssa-address.c: Moved to...
! 	* tree-ssa-address.cc: ...here.
! 	* tree-ssa-alias.c: Moved to...
! 	* tree-ssa-alias.cc: ...here.
! 	* tree-ssa-ccp.c: Moved to...
! 	* tree-ssa-ccp.cc: ...here.
! 	* tree-ssa-coalesce.c: Moved to...
! 	* tree-ssa-coalesce.cc: ...here.
! 	* tree-ssa-copy.c: Moved to...
! 	* tree-ssa-copy.cc: ...here.
! 	* tree-ssa-dce.c: Moved to...
! 	* tree-ssa-dce.cc: ...here.
! 	* tree-ssa-dom.c: Moved to...
! 	* tree-ssa-dom.cc: ...here.
! 	* tree-ssa-dse.c: Moved to...
! 	* tree-ssa-dse.cc: ...here.
! 	* tree-ssa-forwprop.c: Moved to...
! 	* tree-ssa-forwprop.cc: ...here.
! 	* tree-ssa-ifcombine.c: Moved to...
! 	* tree-ssa-ifcombine.cc: ...here.
! 	* tree-ssa-live.c: Moved to...
! 	* tree-ssa-live.cc: ...here.
! 	* tree-ssa-loop-ch.c: Moved to...
! 	* tree-ssa-loop-ch.cc: ...here.
! 	* tree-ssa-loop-im.c: Moved to...
! 	* tree-ssa-loop-im.cc: ...here.
! 	* tree-ssa-loop-ivcanon.c: Moved to...
! 	* tree-ssa-loop-ivcanon.cc: ...here.
! 	* tree-ssa-loop-ivopts.c: Moved to...
! 	* tree-ssa-loop-ivopts.cc: ...here.
! 	* tree-ssa-loop-manip.c: Moved to...
! 	* tree-ssa-loop-manip.cc: ...here.
! 	* tree-ssa-loop-niter.c: Moved to...
! 	* tree-ssa-loop-niter.cc: ...here.
! 	* tree-ssa-loop-prefetch.c: Moved to...
! 	* tree-ssa-loop-prefetch.cc: ...here.
! 	* tree-ssa-loop-split.c: Moved to...
! 	* tree-ssa-loop-split.cc: ...here.
! 	* tree-ssa-loop-unswitch.c: Moved to...
! 	* tree-ssa-loop-unswitch.cc: ...here.
! 	* tree-ssa-loop.c: Moved to...
! 	* tree-ssa-loop.cc: ...here.
! 	* tree-ssa-math-opts.c: Moved to...
! 	* tree-ssa-math-opts.cc: ...here.
! 	* tree-ssa-operands.c: Moved to...
! 	* tree-ssa-operands.cc: ...here.
! 	* tree-ssa-phiopt.c: Moved to...
! 	* tree-ssa-phiopt.cc: ...here.
! 	* tree-ssa-phiprop.c: Moved to...
! 	* tree-ssa-phiprop.cc: ...here.
! 	* tree-ssa-pre.c: Moved to...
! 	* tree-ssa-pre.cc: ...here.
! 	* tree-ssa-propagate.c: Moved to...
! 	* tree-ssa-propagate.cc: ...here.
! 	* tree-ssa-reassoc.c: Moved to...
! 	* tree-ssa-reassoc.cc: ...here.
! 	* tree-ssa-sccvn.c: Moved to...
! 	* tree-ssa-sccvn.cc: ...here.
! 	* tree-ssa-scopedtables.c: Moved to...
! 	* tree-ssa-scopedtables.cc: ...here.
! 	* tree-ssa-sink.c: Moved to...
! 	* tree-ssa-sink.cc: ...here.
! 	* tree-ssa-strlen.c: Moved to...
! 	* tree-ssa-strlen.cc: ...here.
! 	* tree-ssa-structalias.c: Moved to...
! 	* tree-ssa-structalias.cc: ...here.
! 	* tree-ssa-tail-merge.c: Moved to...
! 	* tree-ssa-tail-merge.cc: ...here.
! 	* tree-ssa-ter.c: Moved to...
! 	* tree-ssa-ter.cc: ...here.
! 	* tree-ssa-threadbackward.c: Moved to...
! 	* tree-ssa-threadbackward.cc: ...here.
! 	* tree-ssa-threadedge.c: Moved to...
! 	* tree-ssa-threadedge.cc: ...here.
! 	* tree-ssa-threadupdate.c: Moved to...
! 	* tree-ssa-threadupdate.cc: ...here.
! 	* tree-ssa-uncprop.c: Moved to...
! 	* tree-ssa-uncprop.cc: ...here.
! 	* tree-ssa-uninit.c: Moved to...
! 	* tree-ssa-uninit.cc: ...here.
! 	* tree-ssa.c: Moved to...
! 	* tree-ssa.cc: ...here.
! 	* tree-ssanames.c: Moved to...
! 	* tree-ssanames.cc: ...here.
! 	* tree-stdarg.c: Moved to...
! 	* tree-stdarg.cc: ...here.
! 	* tree-streamer-in.c: Moved to...
! 	* tree-streamer-in.cc: ...here.
! 	* tree-streamer-out.c: Moved to...
! 	* tree-streamer-out.cc: ...here.
! 	* tree-streamer.c: Moved to...
! 	* tree-streamer.cc: ...here.
! 	* tree-switch-conversion.c: Moved to...
! 	* tree-switch-conversion.cc: ...here.
! 	* tree-tailcall.c: Moved to...
! 	* tree-tailcall.cc: ...here.
! 	* tree-vect-data-refs.c: Moved to...
! 	* tree-vect-data-refs.cc: ...here.
! 	* tree-vect-generic.c: Moved to...
! 	* tree-vect-generic.cc: ...here.
! 	* tree-vect-loop-manip.c: Moved to...
! 	* tree-vect-loop-manip.cc: ...here.
! 	* tree-vect-loop.c: Moved to...
! 	* tree-vect-loop.cc: ...here.
! 	* tree-vect-patterns.c: Moved to...
! 	* tree-vect-patterns.cc: ...here.
! 	* tree-vect-slp-patterns.c: Moved to...
! 	* tree-vect-slp-patterns.cc: ...here.
! 	* tree-vect-slp.c: Moved to...
! 	* tree-vect-slp.cc: ...here.
! 	* tree-vect-stmts.c: Moved to...
! 	* tree-vect-stmts.cc: ...here.
! 	* tree-vector-builder.c: Moved to...
! 	* tree-vector-builder.cc: ...here.
! 	* tree-vectorizer.c: Moved to...
! 	* tree-vectorizer.cc: ...here.
! 	* tree-vrp.c: Moved to...
! 	* tree-vrp.cc: ...here.
! 	* tree.c: Moved to...
! 	* tree.cc: ...here.
! 	* tsan.c: Moved to...
! 	* tsan.cc: ...here.
! 	* typed-splay-tree.c: Moved to...
! 	* typed-splay-tree.cc: ...here.
! 	* ubsan.c: Moved to...
! 	* ubsan.cc: ...here.
! 	* valtrack.c: Moved to...
! 	* valtrack.cc: ...here.
! 	* value-prof.c: Moved to...
! 	* value-prof.cc: ...here.
! 	* var-tracking.c: Moved to...
! 	* var-tracking.cc: ...here.
! 	* varasm.c: Moved to...
! 	* varasm.cc: ...here.
! 	* varpool.c: Moved to...
! 	* varpool.cc: ...here.
! 	* vec-perm-indices.c: Moved to...
! 	* vec-perm-indices.cc: ...here.
! 	* vec.c: Moved to...
! 	* vec.cc: ...here.
! 	* vmsdbgout.c: Moved to...
! 	* vmsdbgout.cc: ...here.
! 	* vr-values.c: Moved to...
! 	* vr-values.cc: ...here.
! 	* vtable-verify.c: Moved to...
! 	* vtable-verify.cc: ...here.
! 	* web.c: Moved to...
! 	* web.cc: ...here.
! 	* xcoffout.c: Moved to...
! 	* xcoffout.cc: ...here.
  
! 2022-01-17  qing zhao  <qing.zhao@oracle.com>
  
! 	* tree-ssa-uninit.c (warn_uninit): Delete the 4th parameter. Handle
! 	.DEFERRED_INIT call with an anonymous SSA_NAME specially.
! 	(check_defs): Handle .DEFERRED_INIT call with an anonymous SSA_NAME
! 	specially.
! 	(warn_uninit_phi_uses): Delete the 4th actual when call warn_uninit.
! 	(warn_uninitialized_vars): Likewise.
! 	(warn_uninitialized_phi): Likewise.
  
! 2022-01-17  Jason Merrill  <jason@redhat.com>
  
! 	* diagnostic.h (struct diagnostic_context): Add includes_seen.
! 	* diagnostic.c (diagnostic_initialize): Initialize it.
! 	(diagnostic_finish): Clean it up.
! 	(includes_seen): New function.
! 	(diagnostic_report_current_module): Use it.
  
! 2022-01-17  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/101292
! 	* diagnostic-spec.c (copy_warning): Make sure to not
! 	reference old hashtable content on possible resize.
! 	* warning-control.cc (copy_warning): Likewise.
  
! 2022-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/103973
! 	* tree-cfg.h (cond_only_block_p): Declare.
! 	* tree-ssa-phiopt.c (cond_only_block_p): Move function to ...
! 	* tree-cfg.c (cond_only_block_p): ... here.  No longer static.
! 	* optabs.def (spaceship_optab): New optab.
! 	* internal-fn.def (SPACESHIP): New internal function.
! 	* internal-fn.h (expand_SPACESHIP): Declare.
! 	* internal-fn.c (expand_PHI): Formatting fix.
! 	(expand_SPACESHIP): New function.
! 	* tree-ssa-math-opts.c (optimize_spaceship): New function.
! 	(math_opts_dom_walker::after_dom_children): Use it.
! 	* config/i386/i386.md (spaceship<mode>3): New define_expand.
! 	* config/i386/i386-protos.h (ix86_expand_fp_spaceship): Declare.
! 	* config/i386/i386-expand.c (ix86_expand_fp_spaceship): New function.
! 	* doc/md.texi (spaceship@var{m}3): Document.
  
! 2022-01-17  Kewen Lin  <linkw@linux.ibm.com>
  
! 	* config/rs6000/altivec.md (altivec_vreveti2): Remove.
! 	* config/rs6000/vsx.md (*vsx_extract_si, *vsx_extract_si_<uns>float_df,
! 	*vsx_extract_si_<uns>float_<mode>, *vsx_insert_extract_v4sf_p9): Use
! 	known constant values to simplify code.
  
! 2022-01-17  Haochen Gui  <guihaoc@gcc.gnu.org>
  
! 	PR target/103124
! 	* config/rs6000/vsx.md (split pattern for TI to V1TI move): Defined.
  
! 2022-01-16  wwwhhhyyy  <hongyu.wang@intel.com>
  
! 	* config/i386/i386.h (TARGET_DEST_FALSE_DEP_FOR_GLC): New macro.
! 	* config/i386/sse.md (<avx512>_<complexopname>_<mode><maskc_name><round_name>):
! 	Insert zero-idiom in output template when attr enabled, set new attribute to
! 	true for non-mask/maskz insn.
! 	(avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
! 	Likewise.
! 	(avx512dq_mul<mode>3<mask_name>): Likewise.
! 	(<avx2_avx512>_permvar<mode><mask_name>): Likewise.
! 	(avx2_perm<mode>_1<mask_name>): Likewise.
! 	(avx512f_perm<mode>_1<mask_name>): Likewise.
! 	(avx512dq_rangep<mode><mask_name><round_saeonly_name>): Likewise.
! 	(avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>):
  	Likewise.
! 	(<avx512>_getmant<mode><mask_name><round_saeonly_name>): Likewise.
! 	(avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
  	Likewise.
- 	* config/i386/subst.md (mask3_dest_false_dep_for_glc_cond): New
- 	subst_attr.
- 	(mask4_dest_false_dep_for_glc_cond): Likewise.
- 	(mask6_dest_false_dep_for_glc_cond): Likewise.
- 	(mask10_dest_false_dep_for_glc_cond): Likewise.
- 	(maskc_dest_false_dep_for_glc_cond): Likewise.
- 	(mask_scalar4_dest_false_dep_for_glc_cond): Likewise.
- 	(mask_scalarc_dest_false_dep_for_glc_cond): Likewise.
- 	* config/i386/x86-tune.def (X86_TUNE_DEST_FALSE_DEP_FOR_GLC): New
- 	DEF_TUNE enabled for m_SAPPHIRERAPIDS and m_ALDERLAKE
- 
- 2022-01-15  Martin Sebor  <msebor@redhat.com>
- 
- 	PR c/63272
- 	* diagnostic-spec.c (nowarn_spec_t::nowarn_spec_t): Handle
- 	-Wdangling-pointer.
- 	* doc/invoke.texi (-Wdangling-pointer): Document new option.
- 	* gimple-ssa-warn-access.cc (pass_waccess::clone): Set new member.
- 	(pass_waccess::check_pointer_uses): New function.
- 	(pass_waccess::gimple_call_return_arg): New function.
- 	(pass_waccess::gimple_call_return_arg_ref): New function.
- 	(pass_waccess::check_call_dangling): New function.
- 	(pass_waccess::check_dangling_uses): New function overloads.
- 	(pass_waccess::check_dangling_stores): New function.
- 	(pass_waccess::check_dangling_stores): New function.
- 	(pass_waccess::m_clobbers): New data member.
- 	(pass_waccess::m_func): New data member.
- 	(pass_waccess::m_run_number): New data member.
- 	(pass_waccess::m_check_dangling_p): New data member.
- 	(pass_waccess::check_alloca): Check m_early_checks_p.
- 	(pass_waccess::check_alloc_size_call): Same.
- 	(pass_waccess::check_strcat): Same.
- 	(pass_waccess::check_strncat): Same.
- 	(pass_waccess::check_stxcpy): Same.
- 	(pass_waccess::check_stxncpy): Same.
- 	(pass_waccess::check_strncmp): Same.
- 	(pass_waccess::check_memop_access): Same.
- 	(pass_waccess::check_read_access): Same.
- 	(pass_waccess::check_builtin): Call check_pointer_uses.
- 	(pass_waccess::warn_invalid_pointer): Add arguments.
- 	(is_auto_decl): New function.
- 	(pass_waccess::check_stmt): New function.
- 	(pass_waccess::check_block): Call check_stmt.
- 	(pass_waccess::execute): Call check_dangling_uses,
- 	check_dangling_stores.  Empty m_clobbers.
- 	* passes.def (pass_warn_access): Invoke pass two more times.
- 
- 2022-01-15  Martin Sebor  <msebor@redhat.com>
- 
- 	PR tree-optimization/80532
- 	* common.opt (-Wuse-after-free): New options.
- 	* diagnostic-spec.c (nowarn_spec_t::nowarn_spec_t): Handle
- 	OPT_Wreturn_local_addr and OPT_Wuse_after_free_.
- 	* diagnostic-spec.h (NW_DANGLING): New enumerator.
- 	* doc/invoke.texi (-Wuse-after-free): Document new option.
- 	* gimple-ssa-warn-access.cc (pass_waccess::check_call): Rename...
- 	(pass_waccess::check_call_access): ...to this.
- 	(pass_waccess::check): Rename...
- 	(pass_waccess::check_block): ...to this.
- 	(pass_waccess::check_pointer_uses): New function.
- 	(pass_waccess::gimple_call_return_arg): New function.
- 	(pass_waccess::warn_invalid_pointer): New function.
- 	(pass_waccess::check_builtin): Handle free and realloc.
- 	(gimple_use_after_inval_p): New function.
- 	(get_realloc_lhs): New function.
- 	(maybe_warn_mismatched_realloc): New function.
- 	(pointers_related_p): New function.
- 	(pass_waccess::check_call): Call check_pointer_uses.
- 	(pass_waccess::execute): Compute and free dominance info.
- 
- 2022-01-15  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	* config/i386/i386-expand.c (ix86_expand_sse_movcc): Use
- 	expand_simple_unop and expand_simple_binop instead of manually
- 	constructing NOT, AND and IOR RTXes.  Use vector_all_ones_operand
- 	consistently.  Eliminate common subexpressions and simplify code.
- 	* config/i386/sse.md (<any_logic:code><MODEF:mode>3): New expander.
- 	(<any_logic:code><MODEF:mode>3): Make public.
- 
- 2022-01-14  Eric Botcazou  <ebotcazou@adacore.com>
- 
- 	* ipa-param-manipulation.c (ipa_dump_adjusted_parameters): Dump
- 	reverse flag as "reverse" for the sake of consistency.
- 	* ipa-sra.c: Fix copyright year.
- 	(ipa_sra_function_summaries::duplicate): Copy the reverse flag.
- 	(dump_isra_access): Tweak dump line.
- 	(isra_write_node_summary): Write the reverse flag.
- 	(isra_read_node_info): Read it.
- 	(pull_accesses_from_callee): Test its consistency and copy it.
- 
- 2022-01-14  Richard Sandiford  <richard.sandiford@arm.com>
- 
- 	PR middle-end/104026
- 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
- 	partial_load_store_bias.
- 
- 2022-01-14  Martin Sebor  <msebor@redhat.com>
- 
- 	PR middle-end/101475
- 	* pointer-query.cc (handle_component_ref): Use the size of
- 	the enclosing object if it's smaller than the member.
- 
- 2022-01-14  Martin Liska  <mliska@suse.cz>
- 
- 	* configure: Regenerate.
- 
- 2022-01-14  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	* config/i386/i386.md (*add<mode>_1_slp"):
- 	Mark alternative 1 output operand earlyclobbered.
- 	(*sub<mode>_1_slp): Ditto.
- 	(*and<mode>_1_slp): Ditto.
- 	(*<code><mode>_1_slp): Ditto.
- 	(*neg<mode>_1_slp): Ditto.
- 	(*one_cmpl<mode>_1_slp): Ditto.
- 	(*ashl<mode>3_1_slp): Ditto.
- 	(*<insn><mode>3_1_slp): Ditto.
- 	(*<insn><mode>3_1_slp): Ditto.
- 
- 2022-01-14  Kewen Lin  <linkw@linux.ibm.com>
- 
- 	PR tree-optimization/104015
- 	* tree-vect-loop.c (vect_analyze_loop): Check
- 	param_vect_partial_vector_usage for supports_partial_vectors.
- 
- 2022-01-14  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR c++/89074
- 	* fold-const.c (address_compare): Punt on comparison of address of
- 	one object with address of end of another object if
- 	folding_initializer.
- 
- 2022-01-14  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR target/98737
- 	* tree-ssa-forwprop.c (simplify_builtin_call): Canonicalize
- 	__atomic_fetch_op (p, x, y) op x into __atomic_op_fetch (p, x, y)
- 	and __atomic_op_fetch (p, x, y) iop x into
- 	__atomic_fetch_op (p, x, y).
- 
- 2022-01-14  Claudiu Zissulescu  <claziss@synopsys.com>
- 
- 	* config/arc/arc.h (DWARF_FRAME_REGNUM): Update definition.
- 	(DWARF_FRAME_RETURN_COLUMN): Use RETURN_ADDR_REGNUM macro.
- 	(INCOMING_RETURN_ADDR_RTX): Likewise.
- 	(DWARF_ALT_FRAME_RETURN_COLUMN): Define.
- 
- 2022-01-14  Claudiu Zissulescu  <claziss@synopsys.com>
- 
- 	* config/arc/arc.c (arc_compute_frame_size): Remove condition when
- 	computin checking accumulator regs.
- 	(arc_expand_prologue): Update comments.
- 	(arc_expand_epilogue): Likewise.
- 
- 2022-01-14  Roger Sayle  <roger@nextmovesoftware.com>
- 	    Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	* config/i386/i386-expand.c (ix86_expand_v1ti_to_ti): Use force_reg.
- 	(ix86_expand_ti_to_v1ti): Use force_reg.
- 	(ix86_expand_v1ti_shift): Use force_reg.
- 	(ix86_expand_v1ti_rotate): Use force_reg.
- 	(ix86_expand_v1ti_ashiftrt): Provide new three operation
- 	implementations for shifts by 111..126 bits.  Use force_reg.
- 
- 2022-01-14  Martin Liska  <mliska@suse.cz>
- 
- 	* common/config/arm/arm-common.c (arm_target_mode): Fix
- 	warning: unterminated quoting directive [-Wformat=].
- 
- 2022-01-14  Siddhesh Poyarekar  <siddhesh@gotplt.org>
- 
- 	PR tree-optimization/104009
- 	* tree-object-size.c (compute_builtin_object_size): Bail out on
- 	negative offset.
- 	(plus_stmt_object_size): Return maximum of wholesize and minimum
- 	of 0 for negative offset.
- 
- 2022-01-14  liuhongt  <hongtao.liu@intel.com>
- 
- 	PR target/104001
- 	PR target/94790
- 	PR target/104014
- 	* config/i386/i386.md (*xor2andn): Refine predicate of
- 	operands[0] from nonimmediate_operand to
- 	register_operand, remove TARGET_AVX512BW from condition.
- 
- 2022-01-14  David Malcolm  <dmalcolm@redhat.com>
- 
- 	* doc/extend.texi (Function Attributes): Note that "tainted_args" can
- 	be used on field decls.
- 	(Common Function Attributes): Add entry on "tainted_args" attribute.
- 
- 2022-01-13  Anthony Sharp  <anthonysharp15@gmail.com>
- 	    Jason Merrill  <jason@redhat.com>
- 
- 	PR c++/70417
- 	* doc/invoke.texi: Documentation for Wmissing-template-keyword.
- 
- 2022-01-13  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/103861
- 	* config/i386/i386.md (*ashlqi_ext<mode>_2): New insn pattern.
- 	(*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
- 	* config/i386/mmx.md (<any_shift:insn>v2qi):
- 	New insn_and_split pattern.
- 
- 2022-01-13  Robin Dapp  <rdapp@linux.ibm.com>
- 
- 	* internal-fn.c (expand_partial_load_optab_fn): Add bias.
- 	(expand_partial_store_optab_fn): Likewise.
- 	(internal_len_load_store_bias): New function.
- 	* internal-fn.h (VECT_PARTIAL_BIAS_UNSUPPORTED): New define.
- 	(internal_len_load_store_bias): New function.
- 	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): Set bias.
- 	(vect_set_loop_condition_partial_vectors): Add header_seq parameter.
- 	* tree-vect-loop.c (vect_verify_loop_lens): Verify bias.
- 	(vect_estimate_min_profitable_iters): Account for bias.
- 	(vect_get_loop_len): Add bias-adjusted length.
- 	* tree-vect-stmts.c (vectorizable_store): Use.
- 	(vectorizable_load): Use.
- 	* tree-vectorizer.h (struct rgroup_controls): Add bias-adjusted length.
- 	(LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS): New macro.
- 	* config/rs6000/vsx.md: Use const0 bias predicate.
- 	* doc/md.texi: Document bias value.
- 
- 2022-01-13  Andrew MacLeod  <amacleod@redhat.com>
- 
- 	PR tree-optimization/83072
- 	PR tree-optimization/83073
- 	PR tree-optimization/97909
- 	* fold-const.c (expr_not_equal_to): Use a multi-range class.
- 
- 2022-01-13  Andrew MacLeod  <amacleod@redhat.com>
- 
- 	PR tree-optimization/96707
- 	* range-op.cc (operator_rshift::lhs_op1_relation): New.
- 
- 2022-01-13  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	* config/i386/mmx.md (negv2qi): Disparage GPR alternative a bit.
- 	Disable for TARGET_PARTIAL_REG_STALL unless optimizing for size.
- 	(negv2qi splitters): Use lowpart_subreg instead of
- 	gen_lowpart to create subreg.
- 	(<plusminus:insn>v2qi3): Disparage GPR alternative a bit.
- 	Disable for TARGET_PARTIAL_REG_STALL unless optimizing for size.
- 	(<plusminus:insn>v2qi3 splitters): Use lowpart_subreg instead of
- 	gen_lowpart to create subreg.
- 	* config/i386/i386.md (*subqi_ext<mode>_2): Move.
- 
- 2022-01-13  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/104003
- 	* config/i386/mmx.md (*xop_pcmov_<mode>): Use VI_16_32 mode iterator.
- 
- 2022-01-13  Martin Liska  <mliska@suse.cz>
- 
- 	* common/config/arm/arm-common.c (arm_target_mode): Wrap
- 	keywords with %<, %> and remove trailing punctuation char.
- 	(arm_canon_arch_option_1): Likewise.
- 	(arm_asm_auto_mfpu): Likewise.
- 	* config/arm/arm-builtins.c (arm_expand_builtin): Likewise.
- 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Likewise.
- 	(use_vfp_abi): Likewise.
- 	(aapcs_vfp_is_call_or_return_candidate): Likewise.
- 	(arm_handle_cmse_nonsecure_entry): Likewise.
- 	(arm_handle_cmse_nonsecure_call): Likewise.
- 	(thumb1_md_asm_adjust): Likewise.
- 
- 2022-01-13  Paul A. Clarke  <pc@us.ibm.com>
- 
- 	* config/rs6000/smmintrin.h (_mm_round_pd, _mm_round_ps,
- 	_mm_round_sd, _mm_round_ss, _MM_FROUND_TO_NEAREST_INT,
- 	_MM_FROUND_TO_ZERO, _MM_FROUND_TO_POS_INF, _MM_FROUND_TO_NEG_INF,
- 	_MM_FROUND_CUR_DIRECTION, _MM_FROUND_RAISE_EXC, _MM_FROUND_NO_EXC,
- 	_MM_FROUND_NINT, _MM_FROUND_FLOOR, _MM_FROUND_CEIL, _MM_FROUND_TRUNC,
- 	_MM_FROUND_RINT, _MM_FROUND_NEARBYINT): New.
- 	(_mm_ceil_pd, _mm_ceil_ps, _mm_ceil_sd, _mm_ceil_ss, _mm_floor_pd,
- 	_mm_floor_ps, _mm_floor_sd, _mm_floor_ss): Convert from function to
- 	macro.
- 
- 2022-01-13  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR tree-optimization/103989
- 	* tree-inline.c (setup_one_parameter): Don't copy parms with
- 	empty type.
- 
- 2022-01-13  Thomas Schwinge  <thomas@codesourcery.com>
- 
- 	* tree-streamer-out.c (pack_ts_base_value_fields): Don't pack
- 	'TYPE_ADDR_SPACE' for offloading.
- 	* tree-streamer-in.c (unpack_ts_base_value_fields): Don't unpack
- 	'TYPE_ADDR_SPACE' for offloading.
- 
- 2022-01-13  Julian Brown  <julian@codesourcery.com>
- 	    Thomas Schwinge  <thomas@codesourcery.com>
- 
- 	* omp-oacc-kernels-decompose.cc (add_wait): New function, split out
- 	of...
- 	(add_async_clauses_and_wait): ...here. Call new outlined function.
- 	(decompose_kernels_region_body): Add wait at the end of
- 	explicitly-asynchronous kernels regions.
- 
- 2022-01-13  Thomas Schwinge  <thomas@codesourcery.com>
- 
- 	PR middle-end/100280
- 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
- 	Mark variables used in synthesized data clauses as addressable.
- 
- 2022-01-13  Martin Liska  <mliska@suse.cz>
- 
- 	* config/epiphany/epiphany.c (epiphany_mode_priority):
- 	Use gcc_unreachable for not handled cases.
- 
- 2022-01-13  Martin Liska  <mliska@suse.cz>
- 
- 	* config/epiphany/epiphany.c (epiphany_handle_interrupt_attribute):
- 	Use %qs format specifier.
- 	(epiphany_override_options): Wrap keyword in %<, %>.
- 
- 2022-01-13  Haochen Jiang  <haochen.jiang@intel.com>
- 
- 	PR target/94790
- 	* config/i386/i386.md (*xor2andn): New define_insn_and_split.
- 
- 2022-01-13  Xionghu Luo  <luoxhu@linux.ibm.com>
- 
- 	* config/rs6000/altivec.md (sldoi_to_mov<mode>): New.
- 
- 2022-01-12  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/100637
- 	PR target/103861
- 	* config/i386/i386-expand.c (ix86_emit_vec_binop): New static function.
- 	(ix86_expand_sse_movcc): Use ix86_emit_vec_binop instead of gen_rtx_X
- 	when constructing vector logic RTXes.
- 	(expand_vec_perm_pshufb2): Ditto.
- 	* config/i386/mmx.md (negv2qi): Disparage GPR alternative a bit.
- 	(<plusminus:insn>v2qi3): Ditto.
- 	(vcond<mode><mode>): Re-enable for TARGET_SSE2.
- 	(vcondu<mode><mode>): Ditto.
- 	(vcond_mask_<mode><mode>): Ditto.
- 	(one_cmpl<VI_32:mode>2): Remove expander.
- 	(one_cmpl<VI_16_32:mode>2): Rename from one_cmplv2qi.
- 	Use VI_16_32 mode iterator.
- 	(one_cmpl<VI_16_32:mode>2 splitters): Use VI_16_32 mode iterator.
- 	Use lowpart_subreg instead of gen_lowpart to create subreg.
- 	(*andnot<VI_16_32:mode>3): Merge from "*andnot<VI_32:mode>" and
- 	"*andnotv2qi3" insn patterns using VI_16_32 mode iterator.
- 	Disparage GPR alternative a bit.  Add CC clobber.
- 	(*andnot<VI_16_32:mode>3 splitters): Use VI_16_32 mode iterator.
- 	Use lowpart_subreg instead of gen_lowpart to create subreg.
- 	(*<any_logic:code><VI_16_32:mode>3): Merge from
- 	"*<any_logic:code><VI_32:mode>" and "*<any_logic:code>v2qi3" insn patterns
- 	using VI_16_32 mode iterator.  Disparage GPR alternative a bit.
- 	Add CC clobber.
- 	(*<any_logic:code><VI_16_32:mode>3 splitters):Use VI_16_32 mode
- 	iterator.  Use lowpart_subreg instead of gen_lowpart to create subreg.
- 
- 2022-01-12  Clément Chigot  <clement.chigot@atos.net>
- 
- 	* configure.ac: Check sizeof ino_t and dev_t.
- 	(HOST_STAT_FOR_64BIT_INODES): New AC_DEFINE to provide stat
- 	syscall being able to handle 64bit inodes.
- 	* config.in: Regenerate.
- 	* configure: Regenerate.
- 	* incpath.c (HOST_STAT_FOR_64BIT_INODES): New define.
- 	(remove_duplicates): Use it.
- 
- 2022-01-12  Andrew MacLeod  <amacleod@redhat.com>
- 
- 	PR tree-optimization/103551
- 	* tree-vrp.c (execute_ranger_vrp): Always set EDGE_EXECUTABLE.
- 
- 2022-01-12  Richard Biener  <rguenther@suse.de>
- 
- 	PR tree-optimization/103990
- 	* tree-pass.h (tail_merge_optimize): Drop unused argument.
- 	* tree-ssa-tail-merge.c (tail_merge_optimize): Likewise.
- 	* tree-ssa-pre.c (pass_pre::execute): Retain TODO_cleanup_cfg
- 	and adjust call to tail_merge_optimize.
- 
- 2022-01-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
- 
- 	* tree-vect-loop.c (vect-analyze-loop): Handle scenario where target
- 	does not add autovectorize_vector_modes.
- 
- 2022-01-12  Martin Liska  <mliska@suse.cz>
- 
- 	* config/aarch64/aarch64.c (aarch64_parse_boolean_options): Use
- 	%qs where possible.
- 	(aarch64_parse_sve_width_string): Likewise.
- 	(aarch64_override_options_internal): Likewise.
- 	(aarch64_print_hint_for_extensions): Likewise.
- 	(aarch64_validate_sls_mitigation): Likewise.
- 	(aarch64_handle_attr_arch): Likewise.
- 	(aarch64_handle_attr_cpu): Likewise.
- 	(aarch64_handle_attr_tune): Likewise.
- 	(aarch64_handle_attr_isa_flags): Likewise.
- 
- 2022-01-12  Martin Liska  <mliska@suse.cz>
- 
- 	* config.gcc: Include elfos.h before ${tm_file}.
- 
- 2022-01-12  Hans-Peter Nilsson  <hp@axis.com>
- 
- 	* config/cris/cris.c: Quote identifiers in parameters to error
- 	and internal_error, and remove extraneous spaces with punctuation.
- 	* config/cris/cris.h (CRIS_ASSERT): When passing on stringified
- 	expression to internal_error, pass it as a parameter instead of
- 	appending it to the format part.
- 
- 2022-01-12  Hans-Peter Nilsson  <hp@axis.com>
- 
- 	* config/cris/cris.c (cris_postdbr_cmpelim): Parenthesize
- 	parameter to as_a.
- 
- 2022-01-11  qing zhao  <qing.zhao@oracle.com>
- 
- 	* gimplify.c (gimple_add_init_for_auto_var): Delete the 3rd argument.
- 	Change the 3rd argument of function .DEFERRED_INIT to the name of the
- 	decl.
- 	(gimplify_decl_expr): Delete the 3rd argument when call
- 	gimple_add_init_for_auto_var.
- 	* internal-fn.c (expand_DEFERRED_INIT): Update comments to reflect
- 	the 3rd argument change of function .DEFERRED_INIT.
- 	* tree-cfg.c (verify_gimple_call): Update comments and verification
- 	to reflect the 3rd argument change of function .DEFERRED_INIT.
- 	* tree-sra.c (generate_subtree_deferred_init): Delete the 3rd argument.
- 	(sra_modify_deferred_init): Change the 3rd argument of function
- 	.DEFERRED_INIT to the name of the decl.
- 
- 2022-01-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
- 
- 	* flag-types.h (enum gfc_convert): Add flags for
- 	conversion.
- 
- 2022-01-11  Michael Meissner  <meissner@the-meissners.org>
- 
- 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
- 	checks for only C/C++ front ends before allowing the long double
- 	format to change without a warning.
- 
- 2022-01-11  Richard Sandiford  <richard.sandiford@arm.com>
- 
- 	PR rtl-optimization/103974
- 	* ira-int.h (ira_subloop_allocnos_can_differ_p): Take an
- 	extra argument, default true, that says whether old-reload
- 	targets should be excluded.
- 	* ira-color.c (color_pass): Pass false.
- 
- 2022-01-11  Uroš Bizjak  <ubizjak@gmail.com>
- 
- 	PR target/103861
- 	* config/i386/mmx.md (vcond<mode><mode>):
- 	Use VI_16_32 mode iterator.  Enable for TARGET_SSE4_1.
- 	(vcondu<mode><mode>): Ditto.
- 	(vcond_mask_<mode><mode>): Ditto.
- 	(mmx_pblendvb_v8qi): Rename from mmx_pblendvb64.
- 	(mmx_pblendvb_<mode>): Rename from mmx_pblendvb32.
- 	Use VI_16_32 mode iterator.
- 	* config/i386/i386-expand.c (ix86_expand_sse_movcc):
- 	Update for rename.  Handle V2QImode.
- 	(expand_vec_perm_blend): Update for rename.
- 
- 2022-01-11  Jakub Jelinek  <jakub@redhat.com>
- 
- 	PR c++/101597
- 	* tree.def (OBJ_TYPE_REF): Document type of OBJ_TYPE_REF_TOKEN.
  
! 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 
! 	PR middle-end/70090
! 	* tree-object-size.c (size_valid_p): New function.
! 	(size_for_offset): Remove OFFSET constness assertion.
! 	(addr_object_size): Build dynamic expressions for object
! 	sizes and use size_valid_p to decide if it is valid for the
! 	given OBJECT_SIZE_TYPE.
! 	(compute_builtin_object_size): Allow dynamic offsets when
! 	computing size at O0.
! 	(call_object_size): Call size_valid_p.
! 	(plus_stmt_object_size): Allow non-constant offset and use
! 	size_valid_p to decide if it is valid for the given
! 	OBJECT_SIZE_TYPE.
! 
! 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 
! 	PR middle-end/70090
! 	* tree-object-size.c (alloc_object_size): Make and return
! 	non-constant size expression.
! 	(call_object_size): Return expression or unknown based on
! 	whether dynamic object size is requested.
! 
! 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 
! 	PR middle-end/70090
! 	* tree-object-size.c: Include tree-dfa.h.
! 	(parm_object_size): New function.
! 	(collect_object_sizes_for): Call it.
! 
! 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 
! 	PR middle-end/70090
! 	* builtins.c (fold_builtin_object_size): Adjust for dynamic size
! 	expressions.
! 	* tree-object-size.c: Include gimplify-me.h.
! 	(struct object_size_info): New member UNKNOWNS.
! 	(size_initval_p, size_usable_p, object_sizes_get_raw): New
! 	functions.
! 	(object_sizes_get): Return suitable gimple variable for
! 	object size.
! 	(bundle_sizes): New function.
! 	(object_sizes_set): Use it and handle dynamic object size
! 	expressions.
! 	(object_sizes_set_temp): New function.
! 	(size_for_offset): Adjust for dynamic size expressions.
! 	(emit_phi_nodes, propagate_unknowns, gimplify_size_expressions):
! 	New functions.
! 	(compute_builtin_object_size): Call gimplify_size_expressions
! 	for OST_DYNAMIC.
! 	(dynamic_object_size): New function.
! 	(cond_expr_object_size): Use it.
! 	(phi_dynamic_object_size): New function.
! 	(collect_object_sizes_for): Call it for OST_DYNAMIC.  Adjust to
! 	accommodate dynamic object sizes.
! 
! 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR tree-optimization/103961
! 	* tree-object-size.c (plus_stmt_object_size): Always avoid
! 	computing offset for -1 size.
! 
! 2022-01-11  Andrew MacLeod  <amacleod@redhat.com>
! 
! 	PR tree-optimization/103821
! 	* range-op.cc (range_operator::fold_range): Only do precise ranges
! 	when there are not too many subranges.
! 
! 2022-01-11  Richard Sandiford  <richard.sandiford@arm.com>
! 
! 	* ira-costs.c (ira_tune_allocno_costs): Fix missing rclass
! 	definition in IRA_HARD_REGNO_ADD_COST_MULTIPLIER code.
! 
! 2022-01-11  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Richard Biener  <rguenther@suse.de>
! 
! 	* tree-ssa-math-opts.c (struct widen_mul_stats): Add a
! 	highpart_mults_inserted field.
! 	(convert_mult_to_highpart): New function to convert right shift
! 	of a widening multiply into a MULT_HIGHPART_EXPR.
! 	(math_opts_dom_walker::after_dom_children) [RSHIFT_EXPR]:
! 	Call new convert_mult_to_highpart function.
! 	(pass_optimize_widening_mul::execute): Add a statistics counter
! 	for tracking "highpart multiplications inserted" events.
! 
! 2022-01-11  Xionghu Luo  <luoxhu@linux.ibm.com>
  
! 	PR target/102239
! 	* config/rs6000/rs6000-protos.h (rs6000_is_valid_rotate_dot_mask): New
! 	declare.
! 	* config/rs6000/rs6000.c (rs6000_is_valid_rotate_dot_mask): New
  	function.
! 	* config/rs6000/rs6000.md (*branch_anddi3_dot): New.
! 
! 2022-01-11  Olivier Hainque  <hainque@adacore.com>
! 
! 	* gcc.c (driver_handle_option): State --sysroot as
! 	validated.
  
! 2022-01-11  Kewen Lin  <linkw@linux.ibm.com>
  
! 	* config/rs6000/rs6000.c (rs6000_disable_incompatible_switches): Remove
! 	useless related to option -mno-power10.
  
! 2022-01-11  Haochen Jiang  <haochen.jiang@intel.com>
  
! 	PR target/53652
! 	* config/i386/sse.md (*andnot<mode>3): Extend predicate of
! 	operands[1] from register_operand to vector_operand.
  
! 2022-01-10  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/103861
! 	* config/i386/i386-expand.c (ix86_expand_int_sse_cmp):
! 	Handle V2QImode.
! 	* config/i386/mmx.md (<sat_plusminus:insn><mode>3):
! 	Use VI1_16_32 mode iterator.
! 	(*eq<mode>3): Ditto.
! 	(*gt<mode>3): Ditto.
! 	(*xop_maskcmp<mode>3): Ditto.
! 	(*xop_maskcmp_uns<mode>3): Ditto.
! 	(vec_cmp<mode><mode>): Ditto.
! 	(vec_cmpu<mode><mode>): Ditto.
  
! 2022-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103948
! 	* tree-vect-generic.c (expand_vector_condition): Return true if
! 	all ones vector is returned for true, all zeros vector for false
! 	and the target defines corresponding vec_cmp{,u}MN named RTX pattern.
  
! 2022-01-10  Paul A. Clarke  <pc@us.ibm.com>
  
! 	* config/rs6000/smmintrin.h (_mm_blendv_epi8): Use vec_blendv
! 	when _ARCH_PWR10. Use signed types.
! 	(_mm_blendv_ps): Use vec_blendv when _ARCH_PWR10.
! 	(_mm_blendv_pd): Likewise.
  
! 2022-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* tree-vectorizer.c (better_epilogue_loop_than_p): Round factors up for
! 	epilogue costing.
! 	* tree-vect-loop.c (vect_analyze_loop): Re-analyze all modes for
! 	epilogues, unless we are guaranteed that we can't have partial vectors.
! 	* genopinit.c: (partial_vectors_supported): Generate new function.
  
! 2022-01-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/102024
! 	* config/i386/i386.c (classify_argument): Add zero_width_bitfields
! 	argument, when seeing DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD bitfields,
! 	always ignore them, when seeing other zero sized bitfields, either
! 	set zero_width_bitfields to 1 and ignore it or if equal to 2 process
! 	it.  Pass it to recursive calls.  Add wrapper
! 	with old arguments and diagnose ABI differences for C structures
! 	with zero width bitfields.  Formatting fixes.
  
! 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98782
! 	* ira-int.h (ira_soft_conflict): Declare.
! 	* ira-color.c (max_soft_conflict_loop_depth): New constant.
! 	(ira_soft_conflict): New function.
! 	(spill_soft_conflicts): Likewise.
! 	(assign_hard_reg): Use them to handle the case described by
! 	the comment above ira_soft_conflict.
! 	(improve_allocation): Likewise.
! 	* ira.c (check_allocation): Allow allocnos with "soft" conflicts
! 	to share the same register.
  
! 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98782
! 	* ira-int.h (ira_caller_save_cost): New function.
! 	(ira_caller_save_loop_spill_p): Likewise.
! 	* ira-build.c (ira_propagate_hard_reg_costs): Test whether it is
! 	cheaper to spill a call-clobbered register throughout a loop rather
! 	than spill it around each individual call.  If so, treat all
! 	call-clobbered registers as conflicts and...
! 	(propagate_allocno_info): ...do not propagate call information
! 	from the child to the parent.
! 	* ira-color.c (move_spill_restore): Update accordingly.
! 	* ira-costs.c (ira_tune_allocno_costs): Use ira_caller_save_cost.
  
! 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98782
! 	* ira-int.h (ira_allocno::might_conflict_with_parent_p): New field.
! 	(ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P): New macro.
! 	(ira_single_region_allocno_p): New function.
! 	(ira_total_conflict_hard_regs): Likewise.
! 	* ira-build.c (ira_create_allocno): Initialize
! 	ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P.
! 	(ira_propagate_hard_reg_costs): New function.
! 	(propagate_allocno_info): Use it.  Try to avoid propagating
! 	hard register conflicts to parent allocnos if we can handle
! 	the conflicts by spilling instead.  Limit the propagated
! 	register costs to the cost of spilling throughout the child loop.
! 	* ira-color.c (color_pass): Use ira_single_region_allocno_p to
! 	test whether a child and parent allocno can share the same
! 	register.
! 	(move_spill_restore): Adjust for the new behavior of
! 	propagate_allocno_info.
  
! 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98782
! 	* ira-int.h (ira_subloop_allocnos_can_differ_p): New function,
! 	extracted from...
! 	* ira-color.c (color_pass): ...here.
  
! 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98782
! 	* ira-color.c (color_pass): Add comments to describe the spill costs.
! 	(move_spill_restore): Likewise.  Fix reversed calculation.
  
! 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/98782
! 	* ira-int.h (ira_loop_border_costs): New class.
! 	* ira-color.c (ira_loop_border_costs::ira_loop_border_costs):
! 	New constructor.
! 	(calculate_allocno_spill_cost): Use ira_loop_border_costs.
! 	(color_pass): Likewise.
! 	(move_spill_restore): Likewise.
  
! 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/103465
! 	* coretypes.h (unwind_info_type): Swap UI_SEH and UI_TARGET.
  
! 2022-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/100359
! 	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
! 	Allow non-growing peeling with !allow_peel and UL_ALL.
  
! 2022-01-08  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/i386/i386-expand.c (ix86_expand_vector_move): Add
! 	special case for TImode to V1TImode moves, going via V2DImode.
  
! 2022-01-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/89074
! 	* match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): New GENERIC
! 	simplification.
  
! 2022-01-08  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/analyzer.texi
! 	(Special Functions for Debugging the Analyzer): Document
! 	__analyzer_dump_escaped.
  
! 2022-01-08  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/analyzer.texi (Other Debugging Techniques): Document
! 	region::is_named_decl_p.
  
! 2022-01-07  Andrew Pinski  <apinski@marvell.com>
  
! 	PR target/102941
! 	* config/arm/aarch-common.c (arm_md_asm_adjust):
! 	Use a temp if !REG_P.
  
! 2022-01-07  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/mmx.md (*move<V_32:mode>_internal): Add isa attribute.
! 	(*movv2qi_internal): Remve sse2 requirement for alternatives 4,5.
  
! 2022-01-07  liuhongt  <hongtao.liu@intel.com>
  
! 	PR rtl-optimization/103750
! 	* fwprop.c (forward_propagate_into): Allow propagations from
! 	inner loop to outer loop.
  
! 2022-01-07  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.md (*cnot<mode>2): New define_insn.
  
! 2022-01-07  Haochen Gui  <guihaoc@gcc.gnu.org>
  
! 	* config/rs6000/rs6000.md (rs6000_mffscrni): Define.
! 	(rs6000_set_fpscr_rn): Change the type of operand[0] from DI to SI.
! 	Call gen_rs6000_mffscrni when operand[0] is a const_0_to_3_operand.
  
! 2022-01-07  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/sse.md
! 	(*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Extend to
! 	UNSPEC_PCMP_UNSIGNED.
  
! 2022-01-07  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/103753
! 	* config/i386/i386-expand.c (ix86_expand_vector_set): Not use
! 	gen_avx2_pblendph_1 when elt == 0.
! 	* config/i386/sse.md (avx2_pblendph): Rename to ..
! 	(avx2_pblend<ssemodesuffix>_1).. this, and extend to V16HI.
! 	(*avx2_pblendw): Rename to ..
! 	(*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF.
! 	(avx2_pblendw): Rename to ..
! 	(*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF.
! 	(blendsuf): Removed.
! 	(sse4_1_pblend<blendsuf>): Renamed to ..
! 	(sse4_1_pblend<ssemodesuffix>): .. this.
  
! 2022-01-06  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/103925
! 	* config/i386/i386.c (ix86_output_indirect_function_return):
! 	Generate INT3 after indirect jmp for -mharden-sls=indirect-jmp.
  
! 2022-01-06  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/102952
! 	* config/i386/i386-opts.h (harden_sls): Replace
! 	harden_sls_indirect_branch with harden_sls_indirect_jmp.
! 	* config/i386/i386.c (ix86_output_jmp_thunk_or_indirect):
! 	Likewise.
! 	(ix86_output_indirect_jmp): Likewise.
! 	(ix86_output_call_insn): Likewise.
! 	* config/i386/i386.opt: Replace indirect-branch with
! 	indirect-jmp.  Replace harden_sls_indirect_branch with
! 	harden_sls_indirect_jmp.
! 	* doc/invoke.texi (-harden-sls=): Replace indirect-branch with
! 	indirect-jmp.
  
! 2022-01-06  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.c (ix86_output_ssemov) <MODE_DI>:
! 	Add %q modifier for operands in general registers.
! 	<MODE_SI>: Add %q modifier for operands in general registers.
! 	* config/i386/i386.md (*movhi_internal): Change type attribute of
! 	xmm-gpr interunit alternatives 9,10 to ssemov and mode attribute
! 	to SImode for non-avx512fp16 targets.
! 	(*movhf_internal): Ditto for xmm-gpr interunit alternatives 6,8.
! 	* config/i386/mmx.md (*movv2qi_internal):
! 	Ditto for xmm-gpr interunit alternatives 8,9.
  
! 2022-01-06  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.c (riscv_implied_info): Add
! 	vector extensions.
! 	(riscv_ext_version_table): Add version info for vector extensions.
! 	(riscv_ext_flag_table): Add option mask for vector extensions.
! 	* config/riscv/riscv-opts.h (MASK_VECTOR_EEW_32): New.
! 	(MASK_VECTOR_EEW_64): New.
! 	(MASK_VECTOR_EEW_FP_32): New.
! 	(MASK_VECTOR_EEW_FP_64): New.
! 	(MASK_ZVL32B): New.
! 	(MASK_ZVL64B): New.
! 	(MASK_ZVL128B): New.
! 	(MASK_ZVL256B): New.
! 	(MASK_ZVL512B): New.
! 	(MASK_ZVL1024B): New.
! 	(MASK_ZVL2048B): New.
! 	(MASK_ZVL4096B): New.
! 	(MASK_ZVL8192B): New.
! 	(MASK_ZVL16384B): New.
! 	(MASK_ZVL32768B): New.
! 	(MASK_ZVL65536B): New.
! 	(TARGET_ZVL32B): New.
! 	(TARGET_ZVL64B): New.
! 	(TARGET_ZVL128B): New.
! 	(TARGET_ZVL256B): New.
! 	(TARGET_ZVL512B): New.
! 	(TARGET_ZVL1024B): New.
! 	(TARGET_ZVL2048B): New.
! 	(TARGET_ZVL4096B): New.
! 	(TARGET_ZVL8192B): New.
! 	(TARGET_ZVL16384B): New.
! 	(TARGET_ZVL32768B): New.
! 	(TARGET_ZVL65536B): New.
! 	* config/riscv/riscv.opt (Mask(VECTOR)): New.
! 	(riscv_vector_eew_flags): New.
! 	(riscv_zvl_flags): New.
  
! 2022-01-06  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.c
! 	(riscv_subset_list::parse_multiletter_ext): Allow ext. name has
! 	digit.
  
! 2022-01-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/103899
! 	* expr.c (expand_expr_real_1): Add a workaround for bogus uninit
! 	warning by moving context variable to the only spot where it is used
! 	and moving gcc_assert into if body.
  
! 2022-01-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/103908
! 	* ifcvt.c (bb_valid_for_noce_process_p): Punt on bbs ending with
! 	asm goto.
  
! 2022-01-05  Bill Schmidt  <wschmidt@linux.ibm.com>
  
! 	PR target/103622
! 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
! 	Skip over instances with undefined function types.
  
! 2022-01-05  Andrew Pinski  <apinski@marvell.com>
  
! 	PR target/103910
! 	* config/i386/i386.h (x86_mfence): Mark with GTY.
  
! 2022-01-05  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/103861
! 	* config/i386/mmx.md (VI_16_32): New mode iterator.
! 	(VI1_16_32): Ditto.
! 	(mmxvecsize): Handle V2QI mode.
! 	(<smaxmin:code><mode>3): Rename from <smaxmin:code>v4qi3.
! 	Use VI1_16_32 mode iterator.
! 	(<umaxmin:code><mode>3): Rename from <umaxmin:code>v4qi3.
! 	Use VI1_16_32 mode iterator.
! 	(abs<mode>2): Use VI_16_32 mode iterator.
! 	(uavgv2qi3_ceil): New insn pattern.
  
! 2022-01-05  Martin Sebor  <msebor@redhat.com>
  
! 	* gimple-ssa-warn-access.cc (pass_waccess::maybe_warn_memmodel): Use
! 	%qs to avoid -Wformat-diag.
  
! 2022-01-05  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/103915
! 	* config/i386/mmx.md (one_cmplv2qi2): Change
! 	alternatives 1,2 type from sselog to sselog1.
  
! 2022-01-05  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/103905
! 	* config/i386/i386-expand.c (expand_vec_perm_pshufb): Fix number of
! 	narrow mode remapped elements for !one_operand_p case.
  
! 2022-01-05  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103816
! 	* tree-vect-data-refs.c (vect_analyze_group_access_1): Also
! 	check DR_GROUP_GAP compute for overflow and representability.
  
! 2022-01-05  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR fortran/103691
! 	* gimple-fold.c (fold_stmt_1): Don't call maybe_fold_reference
! 	for DEBUG stmts with ADDR_EXPR gimple_debug_bind_get_value,
! 	it can do unwanted rhs folding like &a[0] into &2.0 etc.
  
! 2022-01-05  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR ipa/102059
! 	* config/rs6000/rs6000.c (TARGET_NEED_IPA_FN_TARGET_INFO): New macro.
! 	(TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise.
! 	(rs6000_need_ipa_fn_target_info): New function.
! 	(rs6000_update_ipa_fn_target_info): Likewise.
! 	(rs6000_can_inline_p): Adjust for ipa function summary target info.
! 	* config/rs6000/rs6000.h (RS6000_FN_TARGET_INFO_HTM): New macro.
! 	* ipa-fnsummary.c (ipa_dump_fn_summary): Adjust for ipa function
! 	summary target info.
! 	(analyze_function_body): Adjust for ipa function summary target info
! 	and call hook rs6000_need_ipa_fn_target_info and
! 	rs6000_update_ipa_fn_target_info.
! 	(ipa_merge_fn_summary_after_inlining): Adjust for ipa function summary
! 	target info.
! 	(inline_read_section): Likewise.
! 	(ipa_fn_summary_write): Likewise.
! 	* ipa-fnsummary.h (ipa_fn_summary::target_info): New member.
! 	* doc/tm.texi: Regenerate.
! 	* doc/tm.texi.in (TARGET_UPDATE_IPA_FN_TARGET_INFO): Document new hook.
! 	(TARGET_NEED_IPA_FN_TARGET_INFO): Likewise.
! 	* target.def (update_ipa_fn_target_info): New hook.
! 	(need_ipa_fn_target_info): Likewise.
! 	* targhooks.c (default_need_ipa_fn_target_info): New function.
! 	(default_update_ipa_fn_target_info): Likewise.
! 	* targhooks.h (default_update_ipa_fn_target_info): New declare.
! 	(default_need_ipa_fn_target_info): Likewise.
  
! 2022-01-04  Martin Sebor  <msebor@redhat.com>
  
! 	PR middle-end/99612
! 	* builtins.c (get_memmodel): Move warning code to
! 	gimple-ssa-warn-access.cc.
! 	(expand_builtin_atomic_compare_exchange): Same.
! 	(expand_ifn_atomic_compare_exchange): Same.
! 	(expand_builtin_atomic_load): Same.
! 	(expand_builtin_atomic_store): Same.
! 	(expand_builtin_atomic_clear): Same.
! 	* doc/extend.texi (__atomic_exchange_n): Update valid memory
! 	models.
! 	* gimple-ssa-warn-access.cc (memmodel_to_uhwi): New function.
! 	(struct memmodel_pair): New struct.
! 	(memmodel_name): New function.
! 	(pass_waccess::maybe_warn_memmodel): New function.
! 	(pass_waccess::check_atomic_memmodel): New function.
! 	(pass_waccess::check_atomic_builtin): Handle memory model.
! 	* input.c (expansion_point_location_if_in_system_header): Return
! 	original location if expansion location is in a system header.
  
! 2022-01-04  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/103861
! 	* config/i386/mmx.md (one_cmplv2qi3): New insn pattern.
! 	(one_cmplv2qi3 splitters): New post-reload splitters.
! 	(*andnotv2qi3): New insn pattern.
! 	(andnotv2qi3 splitters): New post-reload splitters.
! 	(<any_logic:code>v2qi3): New insn pattern.
! 	(<any_logic:insn>v2qi3 splitters): New post-reload splitters.
  
! 2022-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103800
! 	* tree-vect-loop.c (vectorizable_phi): Remove assert and
! 	expand comment.
  
! 2022-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103690
! 	* tree-pass.h (tail_merge_optimize): Adjust.
! 	* tree-ssa-tail-merge.c (tail_merge_optimize): Pass in whether
! 	to re-split critical edges, move CFG cleanup ...
! 	* tree-ssa-pre.c (pass_pre::execute): ... here, before
! 	simple_dce_from_worklist and delay freeing inserted_exprs from
! 	...
! 	(fini_pre): .. here.
  
! 2022-01-04  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/nvptx/nvptx.h (STORE_FLAG_VALUE): Change to 1.
! 	* config/nvptx/nvptx.md (movbi): Use P1 constraint for true.
! 	(setcc_from_bi): Remove SImode specific pattern.
! 	(setcc<mode>_from_bi): Provide more general HSDIM pattern.
! 	(extendbi<mode>2, zeroextendbi<mode>2): Provide instructions
! 	for sign- and zero-extending BImode predicates to integers.
! 	(setcc_int<mode>): Remove previous (-1-based) instructions.
! 	(cstorebi4): Remove BImode to SImode specific expander.
! 	(cstore<mode>4): Fix indentation.  Expand using setccsi_from_bi.
! 	(cstore<mode>4): For both integer and floating point modes.
  
! 2022-01-04  Olivier Hainque  <hainque@adacore.com>
  
! 	* gcc.c (driver_handle_option): do_save --sysroot.
  
! 2022-01-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/103864
! 	PR tree-optimization/103544
! 	* tree-vect-slp.c (vect_analyze_slp_instance): Exclude
! 	reductions wrapped in conversions from SLP handling.
! 	(vect_analyze_slp): Revert PR103544 change.
  
! 2022-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/103860
! 	* shrink-wrap.c (try_shrink_wrapping): Don't call can_get_prologue
! 	uselessly for blocks for which it has been called already.
  
! 2022-01-04  Cui,Lili  <lili.cui@intel.com>
  
! 	* common/config/i386/cpuinfo.h (get_intel_cpu): Add new model values
! 	to Alderlake and Rocketlake.
  
! 2022-01-04  Chung-Lin Tang  <cltang@codesourcery.com>
  
! 	PR middle-end/103643
! 	* gimplify.c (gimplify_omp_affinity): Adjust gimplify_expr of entire
! 	OMP_CLAUSE_DECL to use 'is_gimple_lvalue, fb_lvalue'
  
! 2022-01-04  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/103895
! 	* config/i386/sse.md (*bit_and_float_vector_all_ones):
! 	Force_reg operand 1 to avoid ICE.
  
! 2022-01-04  Jason Merrill  <jason@redhat.com>
  
! 	* tree-pretty-print.c (do_niy): Add spc parameter.
! 	(NIY): Pass it.
! 	(print_call_name): Add spc local variable.
  
! 2022-01-03  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/103894
! 	* config/i386/mmx.md (mov<V_32:mode>): Remove TARGET_SSE2 constraint.
! 	(mov<V_32:mode>_internal): Ditto.
! 	(*push<V_32:mode>_rex64): Ditto.
! 	(movmisalign<V_32:mode>): Ditto.
! 	(*push<V_32:mode>_rex64 splitter): Enable for
! 	TARGET_64BIT && TARGET_SSE.
! 	(*push<V_32:mode>2): Remove insn pattern.
  
! 2022-01-03  Andrew Pinski  <apinski@marvell.com>
  
! 	PR c/33193
! 	* doc/extend.texi: Extend the documentation about Complex
! 	types for casting and also rewrite the __real__/__imag__
! 	expression portion to use tables.
! 	Move __builtin_complex to the Complex type section.
  
! 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/98737
! 	* internal-fn.def (ATOMIC_ADD_FETCH_CMP_0, ATOMIC_SUB_FETCH_CMP_0,
! 	ATOMIC_AND_FETCH_CMP_0, ATOMIC_OR_FETCH_CMP_0, ATOMIC_XOR_FETCH_CMP_0):
! 	New internal fns.
! 	* internal-fn.h (ATOMIC_OP_FETCH_CMP_0_EQ, ATOMIC_OP_FETCH_CMP_0_NE,
! 	ATOMIC_OP_FETCH_CMP_0_LT, ATOMIC_OP_FETCH_CMP_0_LE,
! 	ATOMIC_OP_FETCH_CMP_0_GT, ATOMIC_OP_FETCH_CMP_0_GE): New enumerators.
! 	* internal-fn.c (expand_ATOMIC_ADD_FETCH_CMP_0,
! 	expand_ATOMIC_SUB_FETCH_CMP_0, expand_ATOMIC_AND_FETCH_CMP_0,
! 	expand_ATOMIC_OR_FETCH_CMP_0, expand_ATOMIC_XOR_FETCH_CMP_0): New
! 	functions.
! 	* optabs.def (atomic_add_fetch_cmp_0_optab,
! 	atomic_sub_fetch_cmp_0_optab, atomic_and_fetch_cmp_0_optab,
! 	atomic_or_fetch_cmp_0_optab, atomic_xor_fetch_cmp_0_optab): New
! 	direct optabs.
! 	* builtins.h (expand_ifn_atomic_op_fetch_cmp_0): Declare.
! 	* builtins.c (expand_ifn_atomic_op_fetch_cmp_0): New function.
! 	* tree-ssa-ccp.c: Include internal-fn.h.
! 	(optimize_atomic_bit_test_and): Add . before internal fn call
! 	in function comment.  Change return type from void to bool and
! 	return true only if successfully replaced.
! 	(optimize_atomic_op_fetch_cmp_0): New function.
! 	(pass_fold_builtins::execute): Use optimize_atomic_op_fetch_cmp_0
! 	for BUILT_IN_ATOMIC_{ADD,SUB,AND,OR,XOR}_FETCH_{1,2,4,8,16} and
! 	BUILT_IN_SYNC_{ADD,SUB,AND,OR,XOR}_AND_FETCH_{1,2,4,8,16},
! 	for *XOR* ones only if optimize_atomic_bit_test_and failed.
! 	* config/i386/sync.md (atomic_<plusminus_mnemonic>_fetch_cmp_0<mode>,
! 	atomic_<logic>_fetch_cmp_0<mode>): New define_expand patterns.
! 	(atomic_add_fetch_cmp_0<mode>_1, atomic_sub_fetch_cmp_0<mode>_1,
! 	atomic_<logic>_fetch_cmp_0<mode>_1): New define_insn patterns.
! 	* doc/md.texi (atomic_add_fetch_cmp_0<mode>,
! 	atomic_sub_fetch_cmp_0<mode>, atomic_and_fetch_cmp_0<mode>,
! 	atomic_or_fetch_cmp_0<mode>, atomic_xor_fetch_cmp_0<mode>): Document
! 	new named patterns.
  
! 2022-01-03  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/103851
! 	* tree-cfg.c (move_sese_region_to_fn): Always release SSA names.
  
! 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/94716
! 	* symtab.c: Include fold-const.h.
! 	(symtab_node::equal_address_to): If folding_initializer is true,
! 	handle it like memory_accessed.  Simplify.
  
! 2022-01-03  Martin Liska  <mliska@suse.cz>
  
! 	* doc/extend.texi: Use ; for function declarations.
  
! 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/103600
! 	* symtab.c (symtab_node::equal_address_to): Return 0 if one of
! 	VAR_DECLs has "non overlapping" attribute and rs1 != rs2.
  
! 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gcc.c (process_command): Update copyright notice dates.
! 	* gcov-dump.c (print_version): Ditto.
! 	* gcov.c (print_version): Ditto.
! 	* gcov-tool.c (print_version): Ditto.
! 	* gengtype.c (create_file): Ditto.
  	* doc/cpp.texi: Bump @copying's copyright year.
  	* doc/cppinternals.texi: Ditto.
  	* doc/gcc.texi: Ditto.
--- 1,7608 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-04-25  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2023-04-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/109566
! 	* config/rs6000/rs6000.cc (rs6000_is_valid_rotate_dot_mask): For
! 	!TARGET_64BIT, don't return true if UINTVAL (mask) << (63 - nb)
! 	is larger than signed int maximum.
  
! 2023-04-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* doc/install.texi: Consistently use Solaris rather than Solaris 2.
! 	Remove explicit Solaris 11 references.
! 	Markup fixes.
! 	(Options specification, --with-gnu-as): as and gas always differ
! 	on Solaris.
! 	Remove /usr/ccs/bin reference.
! 	(Installing GCC: Binaries, Solaris (SPARC, Intel)): Remove.
! 	(i?86-*-solaris2*): Merge assembler, linker recommendations ...
! 	(*-*-solaris2*): ... here.
! 	Update bundled GCC versions.
! 	Don't refer to pre-built binaries.
! 	Remove /bin/sh warning.
! 	Update assembler, linker recommendations.
! 	Document GNAT bootstrap compiler.
! 	(sparc-sun-solaris2*): Remove non-UltraSPARC reference.
! 	(sparc64-*-solaris2*): Move content...
! 	(sparcv9-*-solaris2*): ...here.
! 	Add GDC for 64-bit bootstrap compilers.
  
! 2023-04-22  Jakub Jelinek  <jakub@redhat.com>
  
  	Backported from master:
! 	2023-04-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109583
! 	* match.pd (fneg/fadd simplify): Don't call related_vector_mode
! 	if vec_mode is not VECTOR_MODE_P.
  
! 2023-04-21  Lulu Cheng  <chenglulu@loongson.cn>
  
  	Backported from master:
! 	2023-04-18  Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* doc/extend.texi: Add section for LoongArch Base Built-in functions.
  
! 2023-04-21  Andrew MacLeod  <amacleod@redhat.com>
  
  	Backported from master:
! 	2023-04-20  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109564
! 	* gimple-range-fold.cc (fold_using_range::range_of_phi): Do no ignore
! 	UNDEFINED range names when deciding if all PHI arguments are the same,
  
! 2023-04-20  Alejandro Colomar  <alx.manpages@gmail.com>
  
! 	* doc/extend.texi (Common Function Attributes): Remove duplicate
! 	word.
  
! 2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
  
  	Backported from master:
! 	2023-04-19  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* doc/install.texi (enable-decimal-float): Add AArch64.
  
! 2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
  
  	Backported from master:
! 	2023-04-18  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* doc/extend.texi (Target Builtins): Add RISC-V Vector
! 	Intrinsics.
! 	(RISC-V Vector Intrinsics): Document GCC implemented which
! 	version of RISC-V vector intrinsics and its reference.
  
! 2023-04-18  Richard Biener  <rguenther@suse.de>
  
  	Backported from master:
! 	2023-04-18  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109539
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
! 	Re-implement pointer relatedness for PHIs.
  
! 2023-04-17  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/107769
! 	PR ipa/109318
! 	* cgraph.h (symtab_node::find_reference): Add parameter use_type.
! 	* ipa-prop.h (ipa_pass_through_data): New flag refdesc_decremented.
! 	(ipa_zap_jf_refdesc): New function.
! 	(ipa_get_jf_pass_through_refdesc_decremented): Likewise.
! 	(ipa_set_jf_pass_through_refdesc_decremented): Likewise.
! 	* ipa-cp.cc (ipcp_discover_new_direct_edges): Provide a value for
! 	the new parameter of find_reference.
! 	(adjust_references_in_caller): Likewise. Make sure the constant jump
! 	function is not used to decrement a refdec counter again.  Only
! 	decrement refdesc counters when the pass_through jump function allows
! 	it.  Added a detailed dump when decrementing refdesc counters.
! 	* ipa-prop.cc (ipa_print_node_jump_functions_for_edge): Dump new flag.
! 	(ipa_set_jf_simple_pass_through): Initialize the new flag.
! 	(ipa_set_jf_unary_pass_through): Likewise.
! 	(ipa_set_jf_arith_pass_through): Likewise.
! 	(remove_described_reference): Provide a value for the new parameter of
! 	find_reference.
! 	(update_jump_functions_after_inlining): Zap refdesc of new jfunc if
! 	the previous pass_through had a flag mandating that we do so.
! 	(propagate_controlled_uses): Likewise.  Only decrement refdesc
! 	counters when the pass_through jump function allows it.
! 	(ipa_edge_args_sum_t::duplicate): Provide a value for the new
! 	parameter of find_reference.
! 	(ipa_write_jump_function): Assert the new flag does not have to be
! 	streamed.
! 	* symtab.cc (symtab_node::find_reference): Add parameter use_type, use
! 	it in searching.
  
! 2023-04-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 	    Di Zhao  <di.zhao@amperecomputing.com>
  
! 	* config/aarch64/aarch64-tuning-flags.def (AARCH64_EXTRA_TUNING_OPTION):
! 	Add AARCH64_EXTRA_TUNE_NO_LDP_COMBINE.
! 	* config/aarch64/aarch64.cc (aarch64_operands_ok_for_ldpstp):
! 	Check for the above tuning option when processing loads.
  
! 2023-04-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109524
! 	* tree-vrp.cc (remove_unreachable::m_list): Change to a
! 	vector of pairs of block indices.
! 	(remove_unreachable::maybe_register_block): Adjust.
! 	(remove_unreachable::remove_and_update_globals): Likewise.
! 	Deal with removed blocks.
  
! 2023-04-16  Jeff Law  <jlaw@ventanamicro>
  
! 	PR target/109508
! 	* config/riscv/riscv.cc (riscv_expand_conditional_move): For
! 	TARGET_SFB_ALU, force the true arm into a register.
  
! 2023-04-15  John David Anglin  <danglin@gcc.gnu.org>
  
! 	PR target/104989
! 	* config/pa/pa-protos.h (pa_function_arg_size): Update prototype.
! 	* config/pa/pa.cc (pa_function_arg): Return NULL_RTX if argument
! 	size is zero.
! 	(pa_arg_partial_bytes): Don't call pa_function_arg_size twice.
! 	(pa_function_arg_size): Change return type to int.  Return zero
! 	for arguments larger than 1 GB.  Update comments.
  
! 2023-04-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109154
! 	* tree-if-conv.cc (predicate_scalar_phi): For complex PHIs, emit just
! 	args_len - 1 COND_EXPRs rather than args_len.  Formatting fix.
  
! 2023-04-15  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/109514
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
! 	Overhaul lhs_ref.ref analysis.
  
! 2023-04-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109502
! 	* tree-vect-stmts.cc (vectorizable_assignment): Fix
! 	check for conversion between mask and non-mask types.
  
! 2023-04-14  Jeff Law  <jlaw@ventanamicro.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/108947
! 	PR target/109040
! 	* combine.cc (simplify_and_const_int_1): Compute nonzero_bits in
! 	word_mode rather than mode if WORD_REGISTER_OPERATIONS and mode is
! 	smaller than word_mode.
! 	* simplify-rtx.cc (simplify_context::simplify_binary_operation_1)
! 	<case AND>: Likewise.
  
! 2023-04-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	* loop-iv.cc (iv_number_of_iterations): Use gen_int_mode instead
! 	of GEN_INT.
  
! 2023-04-13  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108139
! 	PR tree-optimization/109462
! 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Remove
! 	equivalency check for PHI nodes.
! 	* gimple-range-fold.cc (fold_using_range::range_of_phi): Ensure def
! 	does not dominate single-arg equivalency edges.
  
! 2023-04-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/108910
! 	* config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Do
! 	not trust TYPE_ALIGN for pointer types; use POINTER_SIZE instead.
  
! 2023-04-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109491
! 	* tree-ssa-sccvn.cc (expressions_equal_p): Restore the
! 	NULL operands test.
  
! 2023-04-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	PR target/109479
! 	* config/riscv/riscv-vector-builtins-types.def (vint8mf8_t): Fix predicate.
! 	(vint16mf4_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint64m1_t): Ditto.
! 	(vint64m2_t): Ditto.
! 	(vint64m4_t): Ditto.
! 	(vint64m8_t): Ditto.
! 	(vuint8mf8_t): Ditto.
! 	(vuint16mf4_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	(vfloat32mf2_t): Ditto.
! 	(vbool64_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (register_builtin_type): Add comments.
! 	(register_vector_type): Ditto.
! 	(check_required_extensions): Fix condition.
! 	* config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_ZVE64): Remove it.
! 	(RVV_REQUIRE_ELEN_64): New define.
! 	(RVV_REQUIRE_MIN_VLEN_64): Ditto.
! 	* config/riscv/riscv-vector-switch.def (TARGET_VECTOR_FP32): Remove it.
! 	(TARGET_VECTOR_FP64): Ditto.
! 	(ENTRY): Fix predicate.
! 	* config/riscv/vector-iterators.md: Fix predicate.
  
! 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109410
! 	* tree-ssa-reassoc.cc (build_and_add_sum): Split edge from entry
! 	block if first statement of the function is a call to returns_twice
! 	function.
  
! 2023-04-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/109458
! 	* config/i386/i386.cc: Include rtl-error.h.
! 	(ix86_print_operand): For z modifier warning, use warning_for_asm
! 	if this_is_asm_operands.  For Z modifier errors, use %c and code
! 	instead of hardcoded Z.
  
! 2023-04-12  Costas Argyris  <costas.argyris@gmail.com>
  
! 	* config/i386/x-mingw32-utf8: Remove extrataneous $@
  
! 2023-04-12  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109462
! 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
! 	check for equivalences if NAME is a phi node.
  
! 2023-04-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109473
! 	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
! 	Convert scalar result to the computation type before performing
! 	the reduction adjustment.
  
! 2023-04-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109469
! 	* tree-vect-slp.cc (vect_slp_function): Skip region starts with
! 	a returns-twice call.
  
! 2023-04-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109434
! 	* tree-ssa-dse.cc (initialize_ao_ref_for_dse): Properly
! 	handle possibly throwing calls when processing the LHS
! 	and may-defs are not OK.
  
! 2023-04-11  Lin Sinan  <mynameisxiaou@gmail.com>
  
! 	* config/riscv/predicates.md (uimm_extra_bit_or_twobits): Adjust
! 	predicate to avoid splitting arith constants.
  
! 2023-04-11  Yanzhang Wang  <yanzhang.wang@intel.com>
! 	    Pan Li  <pan2.li@intel.com>
! 	    Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/109104
! 	* config/riscv/riscv-protos.h (emit_hard_vlmax_vsetvl): New.
! 	* config/riscv/riscv-v.cc (emit_hard_vlmax_vsetvl): New.
! 	(emit_vlmax_vsetvl): Use emit_hard_vlmax_vsetvl.
! 	* config/riscv/riscv.cc (vector_zero_call_used_regs): New.
! 	(riscv_zero_call_used_regs): New.
! 	(TARGET_ZERO_CALL_USED_REGS): New.
  
! 2023-04-11  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/108241
! 	* opts.cc (finish_options): Drop also
! 	x_flag_var_tracking_assignments.
  
! 2023-04-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR tree-optimization/108888
! 	* tree-if-conv.cc (predicate_statements): Fix gimple call check.
  
! 2023-04-11  Haochen Gui  <guihaoc@gcc.gnu.org>
  
! 	PR target/108812
! 	* config/rs6000/vsx.md (vsx_sign_extend_qi_<mode>): Rename to...
! 	(vsx_sign_extend_v16qi_<mode>): ... this.
! 	(vsx_sign_extend_hi_<mode>): Rename to...
! 	(vsx_sign_extend_v8hi_<mode>): ... this.
! 	(vsx_sign_extend_si_v2di): Rename to...
! 	(vsx_sign_extend_v4si_v2di): ... this.
! 	(vsignextend_qi_<mode>): Remove.
! 	(vsignextend_hi_<mode>): Remove.
! 	(vsignextend_si_v2di): Remove.
! 	(vsignextend_v2di_v1ti): Remove.
! 	(*xxspltib_<mode>_split): Replace gen_vsx_sign_extend_qi_v2di with
! 	gen_vsx_sign_extend_v16qi_v2di and gen_vsx_sign_extend_qi_v4si
! 	with gen_vsx_sign_extend_v16qi_v4si.
! 	* config/rs6000/rs6000.md (split for DI constant generation):
! 	Replace gen_vsx_sign_extend_qi_si with gen_vsx_sign_extend_v16qi_si.
! 	(split for HSDI constant generation): Replace gen_vsx_sign_extend_qi_di
! 	with gen_vsx_sign_extend_v16qi_di and gen_vsx_sign_extend_qi_si
! 	with gen_vsx_sign_extend_v16qi_si.
! 	* config/rs6000/rs6000-builtins.def (__builtin_altivec_vsignextsb2d):
! 	Set bif-pattern to vsx_sign_extend_v16qi_v2di.
! 	(__builtin_altivec_vsignextsb2w): Set bif-pattern to
! 	vsx_sign_extend_v16qi_v4si.
! 	(__builtin_altivec_visgnextsh2d): Set bif-pattern to
! 	vsx_sign_extend_v8hi_v2di.
! 	(__builtin_altivec_vsignextsh2w): Set bif-pattern to
! 	vsx_sign_extend_v8hi_v4si.
! 	(__builtin_altivec_vsignextsw2d): Set bif-pattern to
! 	vsx_sign_extend_si_v2di.
! 	(__builtin_altivec_vsignext): Set bif-pattern to
! 	vsx_sign_extend_v2di_v1ti.
! 	* config/rs6000/rs6000-builtin.cc (lxvrse_expand_builtin): Replace
! 	gen_vsx_sign_extend_qi_v2di with gen_vsx_sign_extend_v16qi_v2di,
! 	gen_vsx_sign_extend_hi_v2di with gen_vsx_sign_extend_v8hi_v2di and
! 	gen_vsx_sign_extend_si_v2di with gen_vsx_sign_extend_v4si_v2di.
  
! 2023-04-10   Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/70243
! 	* config/rs6000/vsx.md (vsx_fmav4sf4): Do not generate vmaddfp.
! 	(vsx_nfmsv4sf4): Do not generate vnmsubfp.
  
! 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
  
! 	* config/i386/i386.h (PTA_GRANITERAPIDS): Add PTA_AMX_COMPLEX.
  
! 2023-04-10  Haochen Jiang  <haochen.jiang@intel.com>
  
! 	* common/config/i386/cpuinfo.h (get_available_features):
! 	Detect AMX-COMPLEX.
! 	* common/config/i386/i386-common.cc
! 	(OPTION_MASK_ISA2_AMX_COMPLEX_SET,
! 	OPTION_MASK_ISA2_AMX_COMPLEX_UNSET): New.
! 	(ix86_handle_option): Handle -mamx-complex.
! 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
! 	Add FEATURE_AMX_COMPLEX.
! 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
! 	amx-complex.
! 	* config.gcc: Add amxcomplexintrin.h.
! 	* config/i386/cpuid.h (bit_AMX_COMPLEX): New.
! 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
! 	__AMX_COMPLEX__.
! 	* config/i386/i386-isa.def (AMX_COMPLEX): Add DEF_PTA(AMX_COMPLEX).
! 	* config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
! 	Handle amx-complex.
! 	* config/i386/i386.opt: Add option -mamx-complex.
! 	* config/i386/immintrin.h: Include amxcomplexintrin.h.
! 	* doc/extend.texi: Document amx-complex.
! 	* doc/invoke.texi: Document -mamx-complex.
! 	* doc/sourcebuild.texi: Document target amx-complex.
! 	* config/i386/amxcomplexintrin.h: New file.
  
! 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109392
! 	* tree-vect-generic.cc (tree_vec_extract): Handle failure
! 	of maybe_push_res_to_seq better.
  
! 2023-04-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	* Makefile.in (CORETYPES_H): Depend on align.h, poly-int.h and
! 	poly-int-types.h.
! 	(SYSTEM_H): Depend on $(HASHTAB_H).
! 	* config/riscv/t-riscv (build/genrvv-type-indexer.o): Remove unused
! 	dependency on $(RTL_BASE_H), remove redundant dependency on
! 	insn-modes.h.
  
! 2023-04-06  Richard Earnshaw  <rearnsha@arm.com>
  
! 	PR target/107674
! 	* config/arm/arm.cc (arm_effective_regno): New function.
! 	(mve_vector_mem_operand): Use it.
  
! 2023-04-06  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109417
! 	* gimple-range-gori.cc (gori_compute::may_recompute_p): Check if
! 	dependency is in SSA_NAME_FREE_LIST.
  
! 2023-04-06  Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/109427
! 	* params.opt (-param=vect-induction-float=):
! 	Fix option attribute typo for IntegerRange.
  
! 2023-04-05  Jeff Law  <jlaw@ventanamicro>
  
! 	PR target/108892
! 	* combine.cc (combine_instructions): Force re-recognition when
! 	after restoring the body of an insn to its original form.
  
! 2023-04-05  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/108959
! 	* ipa-sra.cc (zap_useless_ipcp_results): New function.
! 	(process_isra_node_results): Call it.
  
! 2023-04-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md: Fix incorrect operand order.
  
! 2023-04-05  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc
! 	(pass_vsetvl::compute_local_backward_infos): Update user vsetvl in local
! 	demand fusion.
  
! 2023-04-05  Li Xu  <xuli1@eswincomputing.com>
  
! 	* config/riscv/riscv-vector-builtins.def: Fix typo.
! 	* config/riscv/riscv.cc (riscv_dwarf_poly_indeterminate_value): Ditto.
! 	* config/riscv/vector-iterators.md: Ditto.
  
! 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* doc/md.texi (Including Patterns): Fix page break.
  
! 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109386
! 	* range-op-float.cc (foperator_lt::op1_range, foperator_lt::op2_range,
! 	foperator_le::op1_range, foperator_le::op2_range,
! 	foperator_gt::op1_range, foperator_gt::op2_range,
! 	foperator_ge::op1_range, foperator_ge::op2_range): Make r varying for
! 	BRS_FALSE case even if the other op is maybe_isnan, not just
! 	known_isnan.
! 	(foperator_unordered_lt::op1_range, foperator_unordered_lt::op2_range,
! 	foperator_unordered_le::op1_range, foperator_unordered_le::op2_range,
! 	foperator_unordered_gt::op1_range, foperator_unordered_gt::op2_range,
! 	foperator_unordered_ge::op1_range, foperator_unordered_ge::op2_range):
! 	Make r varying for BRS_TRUE case even if the other op is maybe_isnan,
! 	not just known_isnan.
  
! 2023-04-04  Marek Polacek  <polacek@redhat.com>
  
! 	PR sanitizer/109107
! 	* fold-const.cc (fold_binary_loc): Use TYPE_OVERFLOW_SANITIZED
! 	when associating.
! 	* match.pd: Use TYPE_OVERFLOW_SANITIZED.
  
! 2023-04-04  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	* config/arm/mve.md (mve_vcvtq_n_to_f_<supf><mode>): Swap operands.
! 	(mve_vcreateq_f<mode>): Swap operands.
  
! 2023-04-04  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (one_cmpl<mode>2<exec>): New.
  
! 2023-04-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/109384
! 	* common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
! 	Reword diagnostics about zfinx conflict with f, formatting fixes.
  
! 2023-04-04  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* config/sol2.h (LIB_SPEC): Don't link with -lpthread.
  
! 2023-04-04  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109304
! 	* tree-profile.cc (tree_profiling): Use symtab node
! 	availability to decide whether to skip adjusting calls.
! 	Do not adjust calls to internal functions.
  
! 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/108807
! 	* config/rs6000/rs6000.cc (rs6000_expand_vector_set_var_p9): Fix gen
! 	function for permutation control vector by considering big endianness.
  
! 2023-04-04  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/108699
! 	* config/rs6000/altivec.md (*p9v_parity<mode>2): Rename to ...
! 	(rs6000_vprtyb<mode>2): ... this.
! 	* config/rs6000/rs6000-builtins.def (VPRTYBD): Replace parityv2di2 with
! 	rs6000_vprtybv2di2.
! 	(VPRTYBW): Replace parityv4si2 with rs6000_vprtybv4si2.
! 	(VPRTYBQ): Replace parityv1ti2 with rs6000_vprtybv1ti2.
! 	* config/rs6000/vector.md (parity<mode>2 with VEC_IP): Expand with
! 	popcountv16qi2 and the corresponding rs6000_vprtyb<mode>2.
  
! 2023-04-04  Hans-Peter Nilsson  <hp@axis.com>
! 	    Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/md.texi (Insn Splitting): Tweak wording for readability.
  
! 2023-04-03  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/109303
! 	* ipa-prop.cc (determine_known_aggregate_parts): Check that the
! 	offset + size will be representable in unsigned int.
  
! 2023-04-03  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
  
! 	* configure.ac (ZSTD_LIB): Move before zstd.h check.
! 	Unset gcc_cv_header_zstd_h without libzstd.
! 	* configure: Regenerate.
  
! 2023-04-03  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document new param.
  
! 2023-04-03  Cupertino Miranda  <cupertino.miranda@oracle.com>
  
! 	* doc/sourcebuild.texi (const_volatile_readonly_section): Document
! 	new check_effective_target function.
  
! 2023-04-03  Li Xu  <xuli1@eswincomputing.com>
  
! 	* config/riscv/riscv-vector-builtins.def (vuint32m8_t): Fix typo.
! 	(vfloat32m8_t): Likewise
  
! 2023-04-03  liuhongt  <hongtao.liu@intel.com>
  
! 	* doc/md.texi: Document signbitm2.
  
! 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/vector.md: Fix RA constraint.
  
! 2023-04-02  Juzhe-Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-protos.h (gen_avl_for_scalar_move): New function.
! 	* config/riscv/riscv-v.cc (gen_avl_for_scalar_move): New function.
! 	* config/riscv/vector.md: Fix scalar move bug.
  
! 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* range-op-float.cc (foperator_equal::fold_range): If at least
! 	one of the op ranges is not singleton and neither is NaN and all
! 	4 bounds are zero, return [1, 1].
! 	(foperator_not_equal::fold_range): In the same case return [0, 0].
  
! 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	* range-op-float.cc (foperator_equal::fold_range): Perform the
! 	non-singleton handling regardless of maybe_isnan (op1, op2).
! 	(foperator_not_equal::fold_range): Likewise.
! 	(foperator_lt::fold_range, foperator_le::fold_range,
! 	foperator_gt::fold_range, foperator_ge::fold_range): Perform the
! 	real_* comparison check which results in range_false (type)
! 	even if maybe_isnan (op1, op2).  Simplify.
! 	(foperator_ltgt): New class.
! 	(fop_ltgt): New variable.
! 	(floating_op_table::floating_op_table): Handle LTGT_EXPR using
! 	fop_ltgt.
  
! 2023-04-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/109254
! 	* builtins.cc (apply_args_size): If targetm.calls.get_raw_arg_mode
! 	returns VOIDmode, handle it like if the register isn't used for
! 	passing arguments at all.
! 	(apply_result_size): If targetm.calls.get_raw_result_mode returns
! 	VOIDmode, handle it like if the register isn't used for returning
! 	results at all.
! 	* target.def (get_raw_result_mode, get_raw_arg_mode): Document what it
! 	means to return VOIDmode.
! 	* doc/tm.texi: Regenerated.
! 	* config/aarch64/aarch64.cc (aarch64_function_value_regno_p): Return
! 	TARGET_SVE for P0_REGNUM.
! 	(aarch64_function_arg_regno_p): Also return true for p0-p3.
! 	(aarch64_get_reg_raw_mode): Return VOIDmode for PR_REGNUM_P regs.
  
! 2023-03-31  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* lra-constraints.cc: (combine_reload_insn): New function.
  
! 2023-03-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/91645
! 	* range-op-float.cc (foperator_unordered_lt::fold_range,
! 	foperator_unordered_le::fold_range,
! 	foperator_unordered_gt::fold_range,
! 	foperator_unordered_ge::fold_range,
! 	foperator_unordered_equal::fold_range): Call the ordered
! 	fold_range on ranges with cleared NaNs.
! 	* value-query.cc (range_query::get_tree_range): Handle also
! 	COMPARISON_CLASS_P trees.
  
! 2023-03-31  Kito Cheng  <kito.cheng@sifive.com>
! 	    Andrew Pinski  <pinskia@gmail.com>
  
! 	PR target/109328
! 	* config/riscv/t-riscv: Add missing dependencies.
  
! 2023-03-31  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/i386.cc (inline_memory_move_cost): Return 100
! 	for MASK_REGS when MODE_SIZE > 8.
  
! 2023-03-31  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/85048
! 	* config/i386/i386-builtin.def (BDESC): Adjust icode name from
! 	ufloat/ufix to floatuns/fixuns.
! 	* config/i386/i386-expand.cc
! 	(ix86_expand_vector_convert_uns_vsivsf): Adjust comments.
! 	* config/i386/sse.md
! 	(ufloat<sseintvecmodelower><mode>2<mask_name><round_name>):
! 	Renamed	to ..
! 	(<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>):.. this.
! 	(<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>):
! 	Renamed to ..
! 	(<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>):
! 	.. this.
! 	(<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>):
! 	Renamed to ..
! 	(fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>):.. this.
! 	(ufloat<si2dfmodelower><mode>2<mask_name>): Renamed to ..
! 	(floatuns<si2dfmodelower><mode>2<mask_name>): .. this.
! 	(ufloatv2siv2df2<mask_name>): Renamed to ..
! 	(<mask_codefor>floatunsv2siv2df2<mask_name>): .. this.
! 	(ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
! 	Renamed to ..
! 	(fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>):
! 	.. this.
! 	(ufix_notruncv2dfv2si2): Renamed to ..
! 	(fixuns_notruncv2dfv2si2):.. this.
! 	(ufix_notruncv2dfv2si2_mask): Renamed to ..
! 	(fixuns_notruncv2dfv2si2_mask): .. this.
! 	(*ufix_notruncv2dfv2si2_mask_1): Renamed to ..
! 	(*fixuns_notruncv2dfv2si2_mask_1): .. this.
! 	(ufix_truncv2dfv2si2): Renamed to ..
! 	(*fixuns_truncv2dfv2si2): .. this.
! 	(ufix_truncv2dfv2si2_mask): Renamed to ..
! 	(fixuns_truncv2dfv2si2_mask): .. this.
! 	(*ufix_truncv2dfv2si2_mask_1): Renamed to ..
! 	(*fixuns_truncv2dfv2si2_mask_1): .. this.
! 	(ufix_truncv4dfv4si2<mask_name>): Renamed to ..
! 	(fixuns_truncv4dfv4si2<mask_name>): .. this.
! 	(ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
! 	Renamed to ..
! 	(fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>):
! 	.. this.
! 	(ufix_trunc<mode><sseintvecmodelower>2<mask_name>): Renamed to ..
! 	(<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>):
! 	.. this.
  
! 2023-03-30  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109154
! 	* gimple-range-gori.cc (gori_compute::may_recompute_p): Add depth limit.
! 	* gimple-range-gori.h (may_recompute_p): Add depth param.
! 	* params.opt (ranger-recompute-depth): New param.
  
! 2023-03-30  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/107897
! 	PR c++/108887
! 	* cgraph.h: Move reset() from cgraph_node to symtab_node.
! 	* cgraphunit.cc (symtab_node::reset): Adjust.  Also call
! 	remove_from_same_comdat_group.
  
! 2023-03-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/107561
! 	* gimple-ssa-warn-access.cc (get_size_range): Add flags
! 	argument and pass it on.
! 	(check_access): When querying for the size range pass
! 	SR_ALLOW_ZERO when the known destination size is zero.
  
! 2023-03-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109342
! 	* tree-ssa-sccvn.cc (vn_nary_op_get_predicated_value): New
! 	overload for edge.  When that edge is a backedge use
! 	dominated_by_p directly.
  
! 2023-03-30  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/i386-expand.cc (expand_vec_perm_blend): Generate
! 	vpblendd instead of vpblendw for V4SI under avx2.
  
! 2023-03-29  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.cc (cris_rtx_costs) [CONST_INT]: Return 0
! 	for many quick operands, for register-sized modes.
  
! 2023-03-29  Jiawei  <jiawei@iscas.ac.cn>
  
! 	* common/config/riscv/riscv-common.cc (riscv_subset_list::parse):
! 	New check.
  
! 2023-03-29  Martin Liska  <mliska@suse.cz>
  
! 	PR bootstrap/109310
! 	* configure.ac: Emit a warning for deprecated option
! 	--enable-link-mutex.
  	* configure: Regenerate.
  
! 2023-03-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109331
! 	* tree-ssa-forwprop.cc (pass_forwprop::execute): When we
! 	discover a taken edge make sure to cleanup the CFG.
  
! 2023-03-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109327
! 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Deal with
! 	already removed stmts when draining to_remove.
  
! 2023-03-29  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/106124
! 	* dwarf2out.cc (lookup_type_die): Reset TREE_ASM_WRITTEN
! 	so we can re-create the DIE for the type if required.
  
! 2023-03-29  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109301
! 	* tree-ssa-math-opts.cc (pass_data_cse_sincos): Change
! 	properties_provided from PROP_gimple_opt_math to 0.
! 	(pass_data_expand_powcabs): Change properties_provided from 0 to
! 	PROP_gimple_opt_math.
  
! 2023-03-29  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109154
! 	* tree-if-conv.cc (gen_phi_arg_condition): Handle single
! 	inverted condition specially by inverting at the caller.
! 	(gen_phi_arg_condition): Swap COND_EXPR arms if requested.
  
! 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/107002
! 	* diagnostic-show-locus.cc (column_range::column_range): Factor
! 	out assertion conditional into...
! 	(column_range::valid_p): ...this new function.
! 	(line_corrections::add_hint): Don't attempt to consolidate hints
! 	if it would lead to invalid column_range instances.
  
! 2023-03-28  Kito Cheng  <kito.cheng@sifive.com>
  
! 	PR target/109312
! 	* config/riscv/riscv-c.cc (riscv_ext_version_value): New.
! 	(riscv_cpu_cpp_builtins): Define __riscv_v_intrinsic and
! 	minor refactor.
  
! 2023-03-28  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR rtl-optimization/109187
! 	* haifa-sched.cc (autopref_rank_for_schedule): Avoid use of overflowing
! 	subtraction in three-way comparison.
  
! 2023-03-28  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109265
! 	PR tree-optimization/109274
! 	* gimple-range-gori.cc (gori_compute::compute_operand_range): Do
! 	not create a relation record is op1 and op2 are the same symbol.
! 	(gori_compute::compute_operand1_range): Pass op1 == op2 to the
! 	handler for this stmt, but create a new record only if this statement
! 	generates a relation based on the ranges.
! 	(gori_compute::compute_operand2_range): Ditto.
! 	* value-relation.h (value_relation::set_relation): Always create the
! 	record that is requested.
  
! 2023-03-28  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/107087
! 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Track
! 	executable regions to avoid useless work and to better
! 	propagate degenerate PHIs.
  
! 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
  
! 	* config/i386/x-mingw32-utf8: update comments.
  
! 2023-03-28  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/109072
! 	* config/aarch64/aarch64-protos.h (aarch64_vector_load_decl): Declare.
! 	* config/aarch64/aarch64.h (machine_function::vector_load_decls): New
  	variable.
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_record_vector_load_arg):
+ 	New function.
+ 	(aarch64_general_gimple_fold_builtin): Delay folding of vld1 until
+ 	after inlining.  Record which decls are loaded from.  Fix handling
+ 	of vops for loads and stores.
+ 	* config/aarch64/aarch64.cc (aarch64_vector_load_decl): New function.
+ 	(aarch64_accesses_vector_load_decl_p): Likewise.
+ 	(aarch64_vector_costs::m_stores_to_vector_load_decl): New member
+ 	variable.
+ 	(aarch64_vector_costs::add_stmt_cost): If the function has a vld1
+ 	that loads from a decl, treat vector stores to those decls as
+ 	zero cost.
+ 	(aarch64_vector_costs::finish_cost): ...and in that case,
+ 	if the vector code does nothing more than a store, give the
+ 	prologue a zero cost as well.
  
! 2023-03-28  Richard Biener  <rguenther@suse.de>
  
! 	PR bootstrap/84402
! 	PR tree-optimization/108129
! 	* genmatch.cc (lower_for): For (match ...) delay
! 	substituting into the match operator if possible.
! 	(dt_operand::gen_gimple_expr): For user_id look at the
! 	first substitute for determining how to access operands.
! 	(dt_operand::gen_generic_expr): Likewise.
! 	(dt_node::gen_kids): Properly sort user_ids according
! 	to their substitutes.
! 	(dt_node::gen_kids_1): Code-generate user_id matching.
  
! 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
! 	    Jonathan Wakely  <jwakely@redhat.com>
  
! 	* gcov-tool.cc (do_merge, do_merge_stream, do_rewrite, do_overlap):
! 	Use subcommand rather than sub-command in function comments.
  
! 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109154
! 	* value-range.h (frange::flush_denormals_to_zero): Make it public
! 	rather than private.
! 	* value-range.cc (frange::set): Don't call flush_denormals_to_zero
  	here.
+ 	* range-op-float.cc (range_operator_float::fold_range): Call
+ 	flush_denormals_to_zero.
  
! 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/106190
! 	* sanopt.cc (pass_sanopt::execute): Return TODO_cleanup_cfg if any
! 	of the IFN_{UB,HWA,A}SAN_* internal fns are lowered.
  
! 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	* range-op-float.cc (float_widen_lhs_range): Use pass get_nan_state
! 	as 4th argument to set to avoid clear_nan and union_ calls.
  
! 2023-03-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/109276
! 	* config/i386/i386.cc (assign_386_stack_local): For DImode
! 	with SLOT_FLOATxFDI_387 and -m32 -mpreferred-stack-boundary=2 pass
! 	align 32 rather than 0 to assign_stack_local.
  
! 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/109140
! 	* config/sparc/sparc.cc (sparc_expand_vcond): Call signed_condition
! 	on operand #3 to get the final condition code.  Use std::swap.
! 	* config/sparc/sparc.md (vcondv8qiv8qi): New VIS 4 expander.
! 	(fucmp<gcond:code>8<P:mode>_vis): Move around.
! 	(fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis): Likewise.
! 	(vcondu<GCM:mode><GCM:mode>): New VIS 4 expander.
  
! 2023-03-28  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* doc/gm2.texi: Add missing Next, Previous and Top fields to most
! 	top-level sections.
  
! 2023-03-28  Costas Argyris  <costas.argyris@gmail.com>
  
! 	* config.host: Pull in i386/x-mingw32-utf8 Makefile
! 	fragment and reference utf8rc-mingw32.o explicitly
! 	for mingw hosts.
! 	* config/i386/sym-mingw32.cc: prevent name mangling of
! 	stub symbol.
! 	* config/i386/x-mingw32-utf8: Make utf8rc-mingw32.o
! 	depend on manifest file explicitly.
  
! 2023-03-28  Richard Biener  <rguenther@suse.de>
  
  	Revert:
! 	2023-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/109237
! 	* cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
  
! 2023-03-28  Richard Biener  <rguenther@suse.de>
  
! 	* common.opt (gdwarf): Remove Negative(gdwarf-).
  
! 2023-03-28  Richard Biener  <rguenther@suse.de>
  
! 	* common.opt (gdwarf): Add RejectNegative.
! 	(gdwarf-): Likewise.
! 	(ggdb): Likewise.
! 	(gvms): Likewise.
  
! 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/constraints.md ("T"): Correct to
! 	define_memory_constraint.
  
! 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.md (BW2): New mode-iterator.
! 	(lra_szext_decomposed, lra_szext_decomposed_indirect_with_offset): New
! 	peephole2s.
  
! 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/cris.md ("*add<mode>3_addi"): Improve to bail only
! 	for possible eliminable compares.
  
! 2023-03-28  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* config/cris/constraints.md ("R"): Remove unused constraint.
  
! 2023-03-27  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR gcov-profile/109297
! 	* gcov-tool.cc (merge_usage): Fix "subcomand" typo.
! 	(merge_stream_usage): Likewise.
! 	(overlap_usage): Likewise.
  
! 2023-03-27  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	PR target/109296
! 	* config/riscv/thead.md: Add missing mode specifiers.
  
! 2023-03-27  Philipp Tomsich  <philipp.tomsich@vrull.eu>
! 	    Jiangning Liu  <jiangning.liu@amperecomputing.com>
! 	    Manolis Tsamis  <manolis.tsamis@vrull.eu>
  
! 	* config/aarch64/aarch64.cc: Update vector costs for ampere1.
  
! 2023-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR rtl-optimization/109237
! 	* cfgcleanup.cc (bb_is_just_return): Walk insns backwards.
  
! 2023-03-27  Richard Biener  <rguenther@suse.de>
  
! 	PR lto/109263
! 	* lto-wrapper.cc (run_gcc): Parse alternate debug options
! 	as well, they always enable debug.
  
! 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/109167
! 	* config/rs6000/emmintrin.h (_mm_bslli_si128): Move the implementation
! 	from ...
! 	(_mm_slli_si128): ... here.  Change to call _mm_bslli_si128 directly.
  
! 2023-03-27  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/109082
! 	* config/rs6000/emmintrin.h (_mm_bslli_si128): Check __N is not less
! 	than zero when calling vec_sld.
! 	(_mm_bsrli_si128): Return __A if __N is zero, check __N is bigger than
! 	zero when calling vec_sld.
! 	(_mm_slli_si128): Return __A if _imm5 is zero, check _imm5 is bigger
! 	than zero when calling vec_sld.
  
! 2023-03-27  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/generic.texi (OpenMP): Document OMP_SIMD, OMP_DISTRIBUTE,
! 	OMP_TASKLOOP, and OMP_LOOP with OMP_FOR.  Document how collapsed
! 	loops are represented and which fields are vectors.  Add
! 	documentation for OMP_FOR_PRE_BODY field.  Document internal
! 	form of non-rectangular loops and OMP_FOR_NON_RECTANGULAR.
! 	* tree.def (OMP_FOR): Make documentation consistent with the
! 	Texinfo manual, to fill some gaps and correct errors.
  
! 2023-03-26  Andreas Schwab  <schwab@linux-m68k.org>
  
! 	PR target/106282
! 	* config/m68k/m68k.h (FINAL_PRESCAN_INSN): Define.
! 	* config/m68k/m68k.cc (m68k_final_prescan_insn): Define.
! 	(handle_move_double): Call it before handle_movsi.
! 	* config/m68k/m68k-protos.h: Declare it.
  
! 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109230
! 	* match.pd (fneg/fadd simplify): Verify also odd permutation indexes.
  
! 2023-03-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/105685
! 	* predict.cc (compute_function_frequency): Don't call
! 	warn_function_cold if function already has cold attribute.
  
! 2023-03-26  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi: Remove anachronistic note
! 	related to languages built and separate source tarballs.
  
! 2023-03-25  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/109098
! 	* diagnostic-format-sarif.cc (read_until_eof): Delete.
! 	(maybe_read_file): Delete.
! 	(sarif_builder::maybe_make_artifact_content_object): Use
! 	get_source_file_content rather than maybe_read_file.
! 	Reject it if it's not valid UTF-8.
! 	* input.cc (file_cache_slot::get_full_file_content): New.
! 	(get_source_file_content): New.
! 	(selftest::check_cpp_valid_utf8_p): New.
! 	(selftest::test_cpp_valid_utf8_p): New.
! 	(selftest::input_cc_tests): Call selftest::test_cpp_valid_utf8_p.
! 	* input.h (get_source_file_content): New prototype.
  
! 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/analyzer.texi (Debugging the Analyzer): Add notes on useful
! 	debugging options.
! 	(Special Functions for Debugging the Analyzer): Convert to a
! 	table, and rewrite in places.
! 	(Other Debugging Techniques): Add notes on how to compare two
! 	different exploded graphs.
  
! 2023-03-24  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR other/109163
! 	* json.cc: Update comments to indicate that we now preserve
! 	insertion order of keys within objects.
! 	(object::print): Traverse keys in insertion order.
! 	(object::set): Preserve insertion order of keys.
! 	(selftest::test_writing_objects): Add an additional key to verify
! 	that we preserve insertion order.
! 	* json.h (object::m_keys): New field.
  
! 2023-03-24  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109238
! 	* gimple-range-cache.cc (ranger_cache::resolve_dom): Ignore
! 	predecessors which this block dominates.
  
! 2023-03-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/106912
! 	* tree-profile.cc (tree_profiling): Update stmts only when
! 	profiling or testing coverage.  Make sure to update calls
! 	fntype, stripping 'const' there.
  
! 2023-03-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/109258
! 	* builtins.cc (inline_expand_builtin_bytecmp): Return NULL_RTX early
! 	if target == const0_rtx.
  
! 2023-03-24  Alexandre Oliva  <oliva@adacore.com>
  
! 	* doc/sourcebuild.texi (weak_undefined, posix_memalign):
! 	Document options and effective targets.
  
! 2023-03-24  Costas Argyris  <costas.argyris@gmail.com>
  
! 	* config/i386/x-mingw32-utf8: Make HOST_EXTRA_OBJS_SYMBOL
! 	optional.
  
! 2023-03-23  Pat Haugen  <pthaugen@linux.ibm.com>
  
! 	* config/rs6000/rs6000.md (*mod<mode>3, umod<mode>3): Add
! 	non-earlyclobber alternative.
  
! 2023-03-23  Andrew Pinski  <apinski@marvell.com>
  
! 	PR c/84900
! 	* fold-const.cc (maybe_lvalue_p): Treat COMPOUND_LITERAL_EXPR
! 	as a lvalue.
  
! 2023-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/107569
! 	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
! 	Do not push SSA names with zero uses as available leader.
! 	(process_bb): Likewise.
  
! 2023-03-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109262
! 	* tree-ssa-forwprop.cc (pass_forwprop::execute): When
! 	combining a piecewise complex load avoid touching loads
! 	that throw internally.  Use fun, not cfun throughout.
  
! 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	* value-range.cc (irange::irange_union, irange::intersect): Fix
! 	comment spelling bugs.
! 	* gimple-range-trace.cc (range_tracer::do_header): Likewise.
! 	* gimple-range-trace.h: Likewise.
! 	* gimple-range-edge.cc: Likewise.
! 	(gimple_outgoing_range_stmt_p,
! 	gimple_outgoing_range::switch_edge_range,
! 	gimple_outgoing_range::edge_range_p): Likewise.
! 	* gimple-range.cc (gimple_ranger::prefill_stmt_dependencies,
! 	gimple_ranger::fold_stmt, gimple_ranger::register_transitive_infer,
! 	assume_query::assume_query, assume_query::calculate_phi): Likewise.
! 	* gimple-range-edge.h: Likewise.
! 	* value-range.h (Value_Range::set, Value_Range::lower_bound,
! 	Value_Range::upper_bound, frange::set_undefined): Likewise.
! 	* gimple-range-gori.h (range_def_chain::depend, gori_map::m_outgoing,
! 	gori_compute): Likewise.
! 	* gimple-range-fold.h (fold_using_range): Likewise.
! 	* gimple-range-path.cc (path_range_query::compute_ranges_in_phis):
! 	Likewise.
! 	* gimple-range-gori.cc (range_def_chain::in_chain_p,
! 	range_def_chain::dump, gori_map::calculate_gori,
! 	gori_compute::compute_operand_range_switch,
! 	gori_compute::logical_combine, gori_compute::refine_using_relation,
! 	gori_compute::compute_operand1_range, gori_compute::may_recompute_p):
! 	Likewise.
! 	* gimple-range.h: Likewise.
! 	(enable_ranger): Likewise.
! 	* range-op.h (empty_range_varying): Likewise.
! 	* value-query.h (value_query): Likewise.
! 	* gimple-range-cache.cc (block_range_cache::set_bb_range,
! 	block_range_cache::dump, ssa_global_cache::clear_global_range,
! 	temporal_cache::temporal_value, temporal_cache::current_p,
! 	ranger_cache::range_of_def, ranger_cache::propagate_updated_value,
! 	ranger_cache::range_from_dom, ranger_cache::register_inferred_value):
! 	Likewise.
! 	* gimple-range-fold.cc (fur_edge::get_phi_operand,
! 	fur_stmt::get_operand, gimple_range_adjustment,
! 	fold_using_range::range_of_phi,
! 	fold_using_range::relation_fold_and_or): Likewise.
! 	* value-range-storage.h (irange_storage_slot::MAX_INTS): Likewise.
! 	* value-query.cc (range_query::value_of_expr,
! 	range_query::value_on_edge, range_query::query_relation): Likewise.
! 	* tree-vrp.cc (remove_unreachable::remove_and_update_globals,
! 	intersect_range_with_nonzero_bits): Likewise.
! 	* gimple-range-infer.cc (gimple_infer_range::check_assume_func,
! 	exit_range): Likewise.
! 	* value-relation.h: Likewise.
! 	(equiv_oracle, relation_trio::relation_trio, value_relation,
! 	value_relation::value_relation, pe_min): Likewise.
! 	* range-op-float.cc (range_operator_float::rv_fold,
! 	frange_arithmetic, foperator_unordered_equal::op1_range,
! 	foperator_div::rv_fold): Likewise.
! 	* gimple-range-op.cc (cfn_clz::fold_range): Likewise.
! 	* value-relation.cc (equiv_oracle::query_relation,
! 	equiv_oracle::register_equiv, equiv_oracle::add_equiv_to_block,
! 	value_relation::apply_transitive, relation_chain_head::find_relation,
! 	dom_oracle::query_relation, dom_oracle::find_relation_block,
! 	dom_oracle::find_relation_dom, path_oracle::register_equiv): Likewise.
! 	* range-op.cc (range_operator::wi_fold_in_parts_equiv,
! 	create_possibly_reversed_range, adjust_op1_for_overflow,
! 	operator_mult::wi_fold, operator_exact_divide::op1_range,
! 	operator_cast::lhs_op1_relation, operator_cast::fold_pair,
! 	operator_cast::fold_range, operator_abs::wi_fold, range_op_cast_tests,
! 	range_op_lshift_tests): Likewise.
  
! 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn.cc (gcn_class_max_nregs): Handle vectors in SGPRs.
! 	(move_callee_saved_registers): Detect the bug condition early.
  
! 2023-03-23  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-protos.h (gcn_stepped_zero_int_parallel_p): New.
! 	* config/gcn/gcn-valu.md (V_1REG_ALT): New.
! 	(V_2REG_ALT): New.
! 	(vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop): New.
! 	(vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop): New.
! 	(vec_extract<V_ALL:mode><V_ALL_ALT:mode>): Use new patterns.
! 	* config/gcn/gcn.cc (gcn_stepped_zero_int_parallel_p): New.
! 	* config/gcn/predicates.md (ascending_zero_int_parallel): New.
  
! 2023-03-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109176
! 	* tree-vect-generic.cc (expand_vector_condition): If a has
! 	vector boolean type and is a comparison, also check if both
! 	the comparison and VEC_COND_EXPR could be successfully expanded
! 	individually.
  
! 2023-03-23  Pan Li  <pan2.li@intel.com>
! 	    Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	PR target/108654
! 	PR target/108185
! 	* config/riscv/riscv-modes.def (ADJUST_BYTESIZE): Adjust size
! 	for vector mask modes.
! 	* config/riscv/riscv.cc (riscv_v_adjust_bytesize): New.
! 	* config/riscv/riscv.h (riscv_v_adjust_bytesize): New.
  
! 2023-03-23  Songhe Zhu  <zhusonghe@eswincomputing.com>
  
! 	* config/riscv/multilib-generator: Adjusting the loop of 'alt' in 'alts'.
  
! 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	PR target/109244
! 	* config/riscv/riscv-protos.h (emit_vlmax_vsetvl): Define as global.
! 	(emit_vlmax_op): Ditto.
! 	* config/riscv/riscv-v.cc (get_sew): New function.
! 	(emit_vlmax_vsetvl): Adapt function.
! 	(emit_pred_op): Ditto.
! 	(emit_vlmax_op): Ditto.
! 	(emit_nonvlmax_op): Ditto.
! 	(legitimize_move): Fix LRA ICE.
! 	(gen_no_side_effects_vsetvl_rtx): Adapt function.
! 	* config/riscv/vector.md (@mov<V_FRACT:mode><P:mode>_lra): New pattern.
! 	(@mov<VB:mode><P:mode>_lra): Ditto.
! 	(*mov<V_FRACT:mode><P:mode>_lra): Ditto.
! 	(*mov<VB:mode><P:mode>_lra): Ditto.
  
! 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	PR target/109228
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vlenb): Add
! 	__riscv_vlenb support.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vlenb): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct vlenb_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc: Ditto.
  
! 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bugs.
! 	(pass_vsetvl::compute_local_backward_infos): Fix bugs.
! 	(pass_vsetvl::need_vsetvl): Fix bugs.
! 	(pass_vsetvl::backward_demand_fusion): Fix bugs.
! 	(pass_vsetvl::demand_fusion): Fix bugs.
! 	(eliminate_insn): Fix bugs.
! 	(insert_vsetvl): Ditto.
! 	(pass_vsetvl::emit_local_forward_vsetvls): Ditto.
! 	* config/riscv/riscv-vsetvl.h (enum vsetvl_type): Ditto.
! 	* config/riscv/vector.md: Ditto.
  
! 2023-03-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc: Fix ternary bug.
! 	* config/riscv/vector-iterators.md (nmsac): Ditto.
! 	(nmsub): Ditto.
! 	(msac): Ditto.
! 	(msub): Ditto.
! 	(nmadd): Ditto.
! 	(nmacc): Ditto.
! 	* config/riscv/vector.md (@pred_mul_<optab><mode>): Ditto.
! 	(@pred_mul_plus<mode>): Ditto.
! 	(*pred_madd<mode>): Ditto.
! 	(*pred_macc<mode>): Ditto.
! 	(*pred_mul_plus<mode>): Ditto.
! 	(@pred_mul_plus<mode>_scalar): Ditto.
! 	(*pred_madd<mode>_scalar): Ditto.
! 	(*pred_macc<mode>_scalar): Ditto.
! 	(*pred_mul_plus<mode>_scalar): Ditto.
! 	(*pred_madd<mode>_extended_scalar): Ditto.
! 	(*pred_macc<mode>_extended_scalar): Ditto.
! 	(*pred_mul_plus<mode>_extended_scalar): Ditto.
! 	(@pred_minus_mul<mode>): Ditto.
! 	(*pred_<madd_nmsub><mode>): Ditto.
! 	(*pred_nmsub<mode>): Ditto.
! 	(*pred_<macc_nmsac><mode>): Ditto.
! 	(*pred_nmsac<mode>): Ditto.
! 	(*pred_mul_<optab><mode>): Ditto.
! 	(*pred_minus_mul<mode>): Ditto.
! 	(@pred_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_minus_mul<mode>_scalar): Ditto.
! 	(*pred_<madd_nmsub><mode>_scalar): Ditto.
! 	(*pred_nmsub<mode>_scalar): Ditto.
! 	(*pred_<macc_nmsac><mode>_scalar): Ditto.
! 	(*pred_nmsac<mode>_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_scalar): Ditto.
! 	(*pred_minus_mul<mode>_scalar): Ditto.
! 	(*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
! 	(*pred_nmsub<mode>_extended_scalar): Ditto.
! 	(*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
! 	(*pred_nmsac<mode>_extended_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_extended_scalar): Ditto.
! 	(*pred_minus_mul<mode>_extended_scalar): Ditto.
! 	(*pred_<madd_msub><mode>): Ditto.
! 	(*pred_<macc_msac><mode>): Ditto.
! 	(*pred_<madd_msub><mode>_scalar): Ditto.
! 	(*pred_<macc_msac><mode>_scalar): Ditto.
! 	(@pred_neg_mul_<optab><mode>): Ditto.
! 	(@pred_mul_neg_<optab><mode>): Ditto.
! 	(*pred_<nmadd_msub><mode>): Ditto.
! 	(*pred_<nmsub_nmadd><mode>): Ditto.
! 	(*pred_<nmacc_msac><mode>): Ditto.
! 	(*pred_<nmsac_nmacc><mode>): Ditto.
! 	(*pred_neg_mul_<optab><mode>): Ditto.
! 	(*pred_mul_neg_<optab><mode>): Ditto.
! 	(@pred_neg_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_mul_neg_<optab><mode>_scalar): Ditto.
! 	(*pred_<nmadd_msub><mode>_scalar): Ditto.
! 	(*pred_<nmsub_nmadd><mode>_scalar): Ditto.
! 	(*pred_<nmacc_msac><mode>_scalar): Ditto.
! 	(*pred_<nmsac_nmacc><mode>_scalar): Ditto.
! 	(*pred_neg_mul_<optab><mode>_scalar): Ditto.
! 	(*pred_mul_neg_<optab><mode>_scalar): Ditto.
! 	(@pred_widen_neg_mul_<optab><mode>): Ditto.
! 	(@pred_widen_mul_neg_<optab><mode>): Ditto.
! 	(@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_widen_mul_neg_<optab><mode>_scalar): Ditto.
  
! 2023-03-23  liuhongt  <hongtao.liu@intel.com>
  
! 	* builtins.cc (builtin_memset_read_str): Replace
! 	targetm.gen_memset_scratch_rtx with gen_reg_rtx.
! 	(builtin_memset_gen_str): Ditto.
! 	* config/i386/i386-expand.cc
! 	(ix86_convert_const_wide_int_to_broadcast): Replace
! 	ix86_gen_scratch_sse_rtx with gen_reg_rtx.
! 	(ix86_expand_vector_move): Ditto.
! 	* config/i386/i386-protos.h (ix86_gen_scratch_sse_rtx):
! 	Removed.
! 	* config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Removed.
! 	(TARGET_GEN_MEMSET_SCRATCH_RTX): Removed.
! 	* doc/tm.texi: Remove TARGET_GEN_MEMSET_SCRATCH_RTX.
! 	* doc/tm.texi.in: Ditto.
! 	* target.def: Ditto.
  
! 2023-03-22  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* lra.cc (lra): Do not repeat inheritance and live range splitting
! 	when asm error is found.
  
! 2023-03-22  Andrew Jenner  <andrew@codesourcery.com>
  
! 	* config/gcn/gcn-protos.h (gcn_expand_dpp_swap_pairs_insn)
! 	(gcn_expand_dpp_distribute_even_insn)
! 	(gcn_expand_dpp_distribute_odd_insn): Declare.
! 	* config/gcn/gcn-valu.md (@dpp_swap_pairs<mode>)
! 	(@dpp_distribute_even<mode>, @dpp_distribute_odd<mode>)
! 	(cmul<conj_op><mode>3, cml<addsub_as><mode>4, vec_addsub<mode>3)
! 	(cadd<rot><mode>3, vec_fmaddsub<mode>4, vec_fmsubadd<mode>4)
! 	(fms<mode>4<exec>, fms<mode>4_negop2<exec>, fms<mode>4)
! 	(fms<mode>4_negop2): New patterns.
! 	* config/gcn/gcn.cc (gcn_expand_dpp_swap_pairs_insn)
! 	(gcn_expand_dpp_distribute_even_insn)
! 	(gcn_expand_dpp_distribute_odd_insn): New functions.
! 	* config/gcn/gcn.md: Add entries to unspec enum.
  
! 2023-03-22  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/109008
! 	* value-range.cc (frange::set): Add nan_state argument.
! 	* value-range.h (class nan_state): New.
! 	(frange::get_nan_state): New.
  
! 2023-03-22  Martin Liska  <mliska@suse.cz>
  
! 	* configure: Regenerate.
  
! 2023-03-21  Joseph Myers  <joseph@codesourcery.com>
  
! 	* stor-layout.cc (finalize_type_size): Copy TYPE_TYPELESS_STORAGE
! 	to variants.
  
! 2023-03-21  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/109192
! 	* gimple-range-gori.cc (gori_compute::compute_operand_range):
! 	Terminate gori calculations if a relation is not relevant.
! 	* value-relation.h (value_relation::set_relation): Allow
! 	equality between op1 and op2 if they are the same.
  
! 2023-03-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109219
! 	* tree-vect-loop.cc (vectorizable_reduction): Check
! 	slp_node, not STMT_SLP_TYPE.
! 	* tree-vect-stmts.cc (vectorizable_condition): Likewise.
! 	* tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
! 	Remove assertion on STMT_SLP_TYPE.
  
! 2023-03-21  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109215
! 	* tree.h (enum special_array_member): Adjust comments for int_0
! 	and trail_0.
! 	* tree.cc (component_ref_sam_type): Clear zero_elts if memtype
! 	has zero sized element type and the array has variable number of
! 	elements or constant one or more elements.
! 	(component_ref_size): Adjust comments, formatting fix.
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* configure.ac: Add check for the Texinfo 6.8
! 	CONTENTS_OUTPUT_LOCATION customization variable and set it if
! 	supported.
! 	* configure: Regenerate.
! 	* Makefile.in (MAKEINFO_TOC_INLINE_FLAG): New variable.  Set by
! 	configure.ac to -c CONTENTS_OUTPUT_LOCATION=inline if
! 	CONTENTS_OUTPUT_LOCATION support is detected, empty otherwise.
! 	($(build_htmldir)/%/index.html): Pass MAKEINFO_TOC_INLINE_FLAG.
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/extend.texi: Associate use_hazard_barrier_return index
! 	entry with its attribute.
! 	* doc/invoke.texi: Associate -fcanon-prefix-map index entry with
! 	its attribute
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/implement-c.texi: Remove usage of @gol.
! 	* doc/invoke.texi: Ditto.
! 	* doc/sourcebuild.texi: Ditto.
! 	* doc/include/gcc-common.texi: Remove @gol.  In new Makeinfo and
! 	texinfo.tex versions, the bug it was working around appears to
! 	be gone.
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/include/texinfo.tex: Update to 2023-01-17.19.
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/include/gcc-common.texi: Add @defbuiltin{,x} and
! 	@enddefbuiltin for defining built-in functions.
! 	* doc/extend.texi: Apply @defbuiltin{,x} to many, but not all,
! 	places where it should be used.
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/extend.texi (Formatted Output Function Checking): New
! 	subsection for  grouping together printf et al.
! 	(Exception handling) Fix missing @ sign before copyright
! 	header, which lead to the copyright line leaking into
! 	'(gcc)Exception handling'.
! 	* doc/gcc.texi: Set document language to en_US.
! 	(@copying): Wrap front cover texts in quotations, move in manual
! 	description text.
  
! 2023-03-21  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/gcc.texi: Add the Indices appendix, to make texinfo
! 	generate nice indices overview page.
  
! 2023-03-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109170
! 	* gimple-range-op.cc (cfn_pass_through_arg1): New.
! 	(gimple_range_op_handler::maybe_builtin_call): Handle
! 	__builtin_expect via cfn_pass_through_arg1.
  
! 2023-03-20   Michael Meissner  <meissner@linux.ibm.com>
  
! 	PR target/109067
! 	* config/rs6000/rs6000.cc (create_complex_muldiv): Delete.
! 	(init_float128_ieee): Delete code to switch complex multiply and divide
! 	for long double.
! 	(complex_multiply_builtin_code): New helper function.
! 	(complex_divide_builtin_code): Likewise.
! 	(rs6000_mangle_decl_assembler_name): Add support for mangling the name
! 	of complex 128-bit multiply and divide built-in functions.
  
! 2023-03-20  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR target/109178
! 	* config/rs6000/rs6000-builtin.cc (stv_expand_builtin): Use tmode.
  
! 2023-03-19  Jonny Grant  <jg@jguk.org>
  
! 	* doc/extend.texi (Common Function Attributes) <nonnull>:
! 	Correct typo.
  
! 2023-03-18  Peter Bergner  <bergner@linux.ibm.com>
  
! 	PR rtl-optimization/109179
! 	* lra-constraints.cc (combine_reload_insn): Enforce TO is not a debug
! 	insn or note.  Move the tests earlier to guard lra_get_insn_recog_data.
  
! 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/105554
! 	* function.h (push_struct_function): Add ABSTRACT_P argument defaulted
! 	to false.
! 	* function.cc (push_struct_function): Add ABSTRACT_P argument, pass it
! 	to allocate_struct_function instead of false.
! 	* tree-inline.cc (initialize_cfun): Don't copy DECL_ARGUMENTS
! 	nor DECL_RESULT here.  Pass true as ABSTRACT_P to
! 	push_struct_function.  Call targetm.target_option.relayout_function
! 	after it.
! 	(tree_function_versioning): Formatting fix.
  
! 2023-03-17  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* lra-constraints.cc: Include hooks.h.
! 	(combine_reload_insn): New function.
! 	(lra_constraints): Call it.
  
! 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-v.cc (legitimize_move): Allow undef value
! 	as legitimate value.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::use_ternop_insn): Fix bugs of ternary intrinsic.
! 	(function_expander::use_widen_ternop_insn): Ditto.
! 	* config/riscv/vector.md (@vundefined<mode>): New pattern.
! 	(pred_mul_<optab><mode>_undef_merge): Remove.
! 	(*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
! 	(pred_neg_mul_<optab><mode>_undef_merge): Ditto.
! 	(*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
  
! 2023-03-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	PR target/109092
! 	* config/riscv/riscv.md: Fix subreg bug.
  
! 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/108685
! 	* omp-expand.cc (expand_omp_for_ordered_loops): Add L0_BB argument,
! 	use its loop_father rather than BODY_BB's loop_father.
! 	(expand_omp_for_generic): Adjust expand_omp_for_ordered_loops caller.
! 	If broken_loop with ordered > collapse and at least one of those
! 	extra loops aren't guaranteed to have at least one iteration, change
! 	l0_bb's loop_father to entry_bb's loop_father.  Set cont_bb's
! 	loop_father to l0_bb's loop_father rather than l1_bb's.
  
! 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR plugins/108634
! 	* gdbhooks.py (TreePrinter.to_string): Wrap
! 	gdb.parse_and_eval('tree_code_type') in a try block, parse
! 	and eval 'tree_code_type_tmpl<0>::tree_code_type' instead if it
! 	raises exception.  Update comments for the recent tree_code_type
! 	changes.
  
! 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/extend.texi (BPF Built-in Functions): Fix numerous markup
! 	issues.  Add more line breaks to example so it doesn't overflow
! 	the margins.
  
! 2023-03-17  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/extend.texi (Common Function Attributes) <access>: Fix bad
! 	line breaks in examples.
! 	<malloc>: Fix bad line breaks in running text, also copy-edit
! 	for consistency.
! 	(Extended Asm) <Generic Operand Modifiers>: Fix @multitable width.
! 	* doc/invoke.texi (Option Summary) <Developer Options>: Fix misplaced
! 	@gol.
! 	(C++ Dialect Options) <-fcontracts>: Add line break in example.
! 	<-Wctad-maybe-unsupported>: Likewise.
! 	<-Winvalid-constexpr>: Likewise.
! 	(Warning Options) <-Wdangling-pointer>: Likewise.
! 	<-Winterference-size>: Likewise.
! 	<-Wvla-parameter>: Likewise.
! 	(Static Analyzer Options): Fix bad line breaks in running text,
! 	plus add some missing markup.
! 	(Optimize Options) <openacc-privatization>: Fix more bad line
! 	breaks in running text.
  
! 2023-03-16  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386-expand.cc (expand_vec_perm_pblendv):
! 	Handle 8-byte modes only with TARGET_MMX_WITH_SSE.
! 	(expand_vec_perm_2perm_pblendv): Ditto.
  
! 2023-03-16  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/106133
! 	* gcc.cc (driver_handle_option): Use x_main_input_basename
! 	if x_dump_base_name is null.
! 	* opts.cc (common_handle_option): Likewise.
  
! 2023-03-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109123
! 	* gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
! 	Do not emit -Wuse-after-free late.
! 	(pass_waccess::check_call): Always check call pointer uses.
  
! 2023-03-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109141
! 	* tree-dfa.h (renumber_gimple_stmt_uids_in_block): New.
! 	* tree-dfa.cc (renumber_gimple_stmt_uids_in_block): Split
! 	out from ...
! 	(renumber_gimple_stmt_uids): ... here and
! 	(renumber_gimple_stmt_uids_in_blocks): ... here.
! 	* gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p):
! 	Use renumber_gimple_stmt_uids_in_block to also assign UIDs
! 	to PHIs.
! 	(pass_waccess::check_pointer_uses): Process all PHIs.
  
! 2023-03-15  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/109097
! 	* diagnostic-format-sarif.cc (class sarif_invocation): New.
! 	(class sarif_ice_notification): New.
! 	(sarif_builder::m_invocation_obj): New field.
! 	(sarif_invocation::add_notification_for_ice): New.
! 	(sarif_invocation::prepare_to_flush): New.
! 	(sarif_ice_notification::sarif_ice_notification): New.
! 	(sarif_builder::sarif_builder): Add m_invocation_obj.
! 	(sarif_builder::end_diagnostic): Special-case DK_ICE and
! 	DK_ICE_NOBT.
! 	(sarif_builder::flush_to_file): Call prepare_to_flush on
! 	m_invocation_obj.  Pass the latter to make_top_level_object.
! 	(sarif_builder::make_result_object): Move creation of "locations"
! 	array to...
! 	(sarif_builder::make_locations_arr): ...this new function.
! 	(sarif_builder::make_top_level_object): Add "invocation_obj" param
! 	and pass it to make_run_object.
! 	(sarif_builder::make_run_object): Add "invocation_obj" param and
! 	use it.
! 	(sarif_ice_handler): New callback.
! 	(diagnostic_output_format_init_sarif): Wire up sarif_ice_handler.
! 	* diagnostic.cc (diagnostic_initialize): Initialize new field
! 	"ice_handler_cb".
! 	(diagnostic_action_after_output): If it is set, make one attempt
! 	to call ice_handler_cb.
! 	* diagnostic.h (diagnostic_context::ice_handler_cb): New field.
  
! 2023-03-15  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386-expand.cc (expand_vec_perm_blend):
! 	Handle 8-byte modes only with TARGET_MMX_WITH_SSE. Handle V2SFmode
! 	and fix V2HImode handling.
! 	(expand_vec_perm_1): Try to emit BLEND instruction
! 	before MOVSS/MOVSD.
! 	* config/i386/mmx.md (*mmx_blendps): New insn pattern.
  
! 2023-03-15  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* omp-low.cc (omp_runtime_api_call): Add omp_in_explicit_task.
  
! 2023-03-15  Richard Biener  <rguenther@suse.de>
  
! 	* gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses):
! 	Do not diagnose clobbers.
  
! 2023-03-15  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109139
! 	* tree-ssa-live.cc (remove_unused_locals): Look at the
! 	base address for unused decls on the LHS of .DEFERRED_INIT.
  
! 2023-03-15  Xi Ruoyao  <xry111@xry111.site>
  
! 	PR other/109086
! 	* builtins.cc (inline_string_cmp): Force the character
! 	difference into "result" pseudo-register, instead of reassign
! 	the pseudo-register.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config.gcc: Add thead.o to RISC-V extra_objs.
! 	* config/riscv/peephole.md: Add mempair peephole passes.
! 	* config/riscv/riscv-protos.h (riscv_split_64bit_move_p): New
! 	prototype.
! 	(th_mempair_operands_p): Likewise.
! 	(th_mempair_order_operands): Likewise.
! 	(th_mempair_prepare_save_restore_operands): Likewise.
! 	(th_mempair_save_restore_regs): Likewise.
! 	(th_mempair_output_move): Likewise.
! 	* config/riscv/riscv.cc (riscv_save_reg): Move code.
! 	(riscv_restore_reg): Move code.
! 	(riscv_for_each_saved_reg): Add code to emit mempair insns.
! 	* config/riscv/t-riscv: Add thead.cc.
! 	* config/riscv/thead.md (*th_mempair_load_<GPR:mode>2):
! 	New insn.
! 	(*th_mempair_store_<GPR:mode>2): Likewise.
! 	(*th_mempair_load_extendsidi2): Likewise.
! 	(*th_mempair_load_zero_extendsidi2): Likewise.
! 	* config/riscv/thead.cc: New file.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/constraints.md (TARGET_XTHEADFMV ? FP_REGS : NO_REGS)
! 	New constraint "th_f_fmv".
! 	(TARGET_XTHEADFMV ? GR_REGS : NO_REGS): New constraint
! 	"th_r_fmv".
! 	* config/riscv/riscv.cc (riscv_split_doubleword_move):
! 	Add split code for XTheadFmv.
! 	(riscv_secondary_memory_needed): XTheadFmv does not need
! 	secondary memory.
! 	* config/riscv/riscv.md: Add new UNSPEC_XTHEADFMV and
! 	UNSPEC_XTHEADFMV_HW. Add support for XTheadFmv to
! 	movdf_hardfloat_rv32.
! 	* config/riscv/thead.md (th_fmv_hw_w_x): New INSN.
! 	(th_fmv_x_w): New INSN.
! 	(th_fmv_x_hw): New INSN.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/riscv.md (maddhisi4): New expand.
! 	(msubhisi4): New expand.
! 	* config/riscv/thead.md (*th_mula<mode>): New pattern.
! 	(*th_mulawsi): New pattern.
! 	(*th_mulawsi2): New pattern.
! 	(*th_maddhisi4): New pattern.
! 	(*th_sextw_maddhisi4): New pattern.
! 	(*th_muls<mode>): New pattern.
! 	(*th_mulswsi): New pattern.
! 	(*th_mulswsi2): New pattern.
! 	(*th_msubhisi4): New pattern.
! 	(*th_sextw_msubhisi4): New pattern.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/iterators.md (TARGET_64BIT): Add GPR2 iterator.
! 	* config/riscv/riscv-protos.h (riscv_expand_conditional_move):
! 	Add prototype.
! 	* config/riscv/riscv.cc (riscv_rtx_costs): Add costs for
! 	XTheadCondMov.
! 	(riscv_expand_conditional_move): New function.
! 	(riscv_expand_conditional_move_onesided): New function.
! 	* config/riscv/riscv.md: Add support for XTheadCondMov.
! 	* config/riscv/thead.md (*th_cond_mov<GPR:mode><GPR2:mode>): Add
! 	support for XTheadCondMov.
! 	(*th_cond_gpr_mov<GPR:mode><GPR2:mode>): Likewise.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/bitmanip.md (clzdi2): New expand.
! 	(clzsi2): New expand.
! 	(ctz<mode>2): New expand.
! 	(popcount<mode>2): New expand.
! 	(<bitmanip_optab>si2): Rename INSN.
! 	(*<bitmanip_optab>si2): Hide INSN name.
! 	(<bitmanip_optab>di2): Rename INSN.
! 	(*<bitmanip_optab>di2): Hide INSN name.
! 	(rotrsi3): Remove INSN.
! 	(rotr<mode>3): Add expand.
! 	(*rotrsi3): New INSN.
! 	(rotrdi3): Rename INSN.
! 	(*rotrdi3): Hide INSN name.
! 	(rotrsi3_sext): Rename INSN.
! 	(*rotrsi3_sext): Hide INSN name.
! 	(bswap<mode>2): Remove INSN.
! 	(bswapdi2): Add expand.
! 	(bswapsi2): Add expand.
! 	(*bswap<mode>2): Hide INSN name.
! 	* config/riscv/riscv.cc (riscv_rtx_costs): Add costs for sign
! 	extraction.
! 	* config/riscv/riscv.md (extv<mode>): New expand.
! 	(extzv<mode>): New expand.
! 	* config/riscv/thead.md (*th_srri<mode>3): New INSN.
! 	(*th_ext<mode>): New INSN.
! 	(*th_extu<mode>): New INSN.
! 	(*th_clz<mode>2): New INSN.
! 	(*th_rev<mode>2): New INSN.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/riscv.cc (riscv_rtx_costs): Add xthead:tst cost.
! 	* config/riscv/thead.md (*th_tst<mode>3): New INSN.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/riscv.md: Include thead.md
! 	* config/riscv/thead.md: New file.
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* config/riscv/riscv-cores.def (RISCV_CORE): Add "thead-c906".
  
! 2023-03-15  Christoph Müllner  <christoph.muellner@vrull.eu>
  
! 	* common/config/riscv/riscv-common.cc: Add xthead* extensions.
! 	* config/riscv/riscv-opts.h (MASK_XTHEADBA): New.
! 	(MASK_XTHEADBB): New.
! 	(MASK_XTHEADBS): New.
! 	(MASK_XTHEADCMO): New.
! 	(MASK_XTHEADCONDMOV): New.
! 	(MASK_XTHEADFMEMIDX): New.
! 	(MASK_XTHEADFMV): New.
! 	(MASK_XTHEADINT): New.
! 	(MASK_XTHEADMAC): New.
! 	(MASK_XTHEADMEMIDX): New.
! 	(MASK_XTHEADMEMPAIR): New.
! 	(MASK_XTHEADSYNC): New.
! 	(TARGET_XTHEADBA): New.
! 	(TARGET_XTHEADBB): New.
! 	(TARGET_XTHEADBS): New.
! 	(TARGET_XTHEADCMO): New.
! 	(TARGET_XTHEADCONDMOV): New.
! 	(TARGET_XTHEADFMEMIDX): New.
! 	(TARGET_XTHEADFMV): New.
! 	(TARGET_XTHEADINT): New.
! 	(TARGET_XTHEADMAC): New.
! 	(TARGET_XTHEADMEMIDX): New.
! 	(TARGET_XTHEADMEMPAIR): new.
! 	(TARGET_XTHEADSYNC): New.
! 	* config/riscv/riscv.opt: Add riscv_xthead_subext.
  
! 2023-03-15  Hu, Lin1  <lin1.hu@intel.com>
  
! 	PR target/109117
! 	* config/i386/i386-builtin.def (__builtin_ia32_vaesdec_v16qi,
! 	__builtin_ia32_vaesdeclast_v16qi,__builtin_ia32_vaesenc_v16qi,
! 	__builtin_ia32_vaesenclast_v16qi): Require OPTION_MASK_ISA_AVX512VL.
  
! 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/109109
! 	* config/i386/i386-expand.cc (split_double_concat): Fix splitting
! 	when lo is equal to dhi and hi is a MEM which uses dlo register.
  
! 2023-03-14  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/107925
! 	* ipa-cp.cc (update_profiling_info): Drop counts of orig_node to
! 	global0 instead of zeroing when it does not have as many counts as
! 	it should.
  
! 2023-03-14  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/107925
! 	* ipa-cp.cc (update_specialized_profile): Drop orig_node_count to
! 	ipa count, remove assert, lenient_count_portion_handling, dump
! 	also orig_node_count.
  
! 2023-03-14  Uros Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386-expand.cc (expand_vec_perm_movs):
! 	Handle V2SImode for TARGET_MMX_WITH_SSE.
! 	* config/i386/mmx.md (*mmx_movss_<mode>): Rename from *mmx_movss
! 	using V2FI mode iterator to handle both V2SI and V2SF modes.
  
! 2023-03-14  Sam James  <sam@gentoo.org>
  
! 	* config/riscv/genrvv-type-indexer.cc: Avoid calloc() poisoning on musl by
! 	including <sstream> earlier.
! 	* system.h: Add INCLUDE_SSTREAM.
  
! 2023-03-14  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-live.cc (remove_unused_locals): Do not treat
! 	the .DEFERRED_INIT of a variable as use, instead remove
! 	that if it is the only use.
  
! 2023-03-14  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/107762
! 	* expr.cc (emit_group_store): Revert latest change.
  
! 2023-03-14  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR tree-optimization/109005
! 	* tree-if-conv.cc (get_bitfield_rep): Replace BLKmode check with
! 	aggregate type check.
  
! 2023-03-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109115
! 	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Don't use
! 	r.upper_bound () on r.undefined_p () range.
  
! 2023-03-14  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR tree-optimization/106896
! 	* profile-count.cc (profile_count::to_sreal_scale): Synchronize
! 	implementatoin with probability_in; avoid some asserts.
  
! 2023-03-13  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	* config/xtensa/linux.h (TARGET_ASM_FILE_END): New macro.
  
! 2023-03-13  Sean Bright  <sean@seanbright.com>
  
! 	* doc/invoke.texi (Warning Options): Remove errant 'See'
! 	before @xref.
  
! 2023-03-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.h (REG_OK_STRICT, REG_OK_FOR_INDEX_P,
! 	REG_OK_FOR_BASE_P): Remove.
  
! 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector-iterators.md (=vd,vr): Fine tune.
! 	(=vd,vd,vr,vr): Ditto.
! 	* config/riscv/vector.md: Ditto.
  
! 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::use_compare_insn): Add operand predicate check.
  
! 2023-03-13  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md: Fine tune RA constraints.
  
! 2023-03-13  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* config/gcn/mkoffload.cc (main): Pass -save-temps on for the
! 	hsaco assemble/link.
  
! 2023-03-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109046
! 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Combine
! 	piecewise complex loads.
  
! 2023-03-12  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/aarch64/aarch64.h (aarch64_bf16_type_node): Remove.
! 	(aarch64_bf16_ptr_type_node): Adjust comment.
! 	* config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr): Use
! 	bfloat16_type_node rather than aarch64_bf16_type_node.
! 	(aarch64_libgcc_floating_mode_supported_p,
! 	aarch64_scalar_mode_supported_p): Also support BFmode.
! 	(aarch64_invalid_conversion, aarch64_invalid_unary_op): Remove.
! 	(aarch64_invalid_binary_op): Remove BFmode related rejections.
! 	(TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP): Don't redefine.
! 	* config/aarch64/aarch64-builtins.cc (aarch64_bf16_type_node): Remove.
! 	(aarch64_int_or_fp_type): Use bfloat16_type_node rather than
! 	aarch64_bf16_type_node.
! 	(aarch64_init_simd_builtin_types): Likewise.
! 	(aarch64_init_bf16_types): Likewise.  Don't create bfloat16_type_node,
! 	which is created in tree.cc already.
! 	* config/aarch64/aarch64-sve-builtins.def (svbfloat16_t): Likewise.
  
! 2023-03-12  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR middle-end/109031
! 	* tree-chrec.cc (chrec_apply): When folding "{a, +, a} (x-1)",
! 	ensure that the type of x is as wide or wider than the type of a.
  
! 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/108583
! 	* config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): Remove.
! 	(*bitmask_shift_plus<mode>): New.
! 	* config/aarch64/aarch64-sve2.md (*bitmask_shift_plus<mode>): New.
! 	(@aarch64_bitmask_udiv<mode>3): Remove.
! 	* config/aarch64/aarch64.cc
! 	(aarch64_vectorize_can_special_div_by_constant,
! 	TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Removed.
! 	(TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT,
! 	aarch64_vectorize_preferred_div_as_shifts_over_mult): New.
  
! 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/108583
! 	* target.def (preferred_div_as_shifts_over_mult): New.
! 	* doc/tm.texi.in: Document it.
  	* doc/tm.texi: Regenerate.
+ 	* targhooks.cc (default_preferred_div_as_shifts_over_mult): New.
+ 	* targhooks.h (default_preferred_div_as_shifts_over_mult): New.
+ 	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Use it.
  
! 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
! 	    Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/108583
! 	* tree-ssa-math-opts.cc (convert_mult_to_fma): Inhibit FMA in case not
! 	single use.
  
! 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
! 	    Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR target/108583
! 	* gimple-range-op.h (gimple_range_op_handler): Add maybe_non_standard.
! 	* gimple-range-op.cc (gimple_range_op_handler::gimple_range_op_handler):
! 	Use it.
! 	(gimple_range_op_handler::maybe_non_standard): New.
! 	* range-op.cc (class operator_widen_plus_signed,
! 	operator_widen_plus_signed::wi_fold, class operator_widen_plus_unsigned,
! 	operator_widen_plus_unsigned::wi_fold, class operator_widen_mult_signed,
! 	operator_widen_mult_signed::wi_fold, class operator_widen_mult_unsigned,
! 	operator_widen_mult_unsigned::wi_fold,
! 	ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
! 	ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New.
! 	* range-op.h (ptr_op_widen_mult_signed, ptr_op_widen_mult_unsigned,
! 	ptr_op_widen_plus_signed, ptr_op_widen_plus_unsigned): New
  
! 2023-03-12  Tamar Christina  <tamar.christina@arm.com>
  
! 	PR target/108583
! 	* doc/tm.texi (TARGET_VECTORIZE_CAN_SPECIAL_DIV_BY_CONST): Remove.
! 	* doc/tm.texi.in: Likewise.
! 	* explow.cc (round_push, align_dynamic_address): Revert previous patch.
! 	* expmed.cc (expand_divmod): Likewise.
! 	* expmed.h (expand_divmod): Likewise.
! 	* expr.cc (force_operand, expand_expr_divmod): Likewise.
! 	* optabs.cc (expand_doubleword_mod, expand_doubleword_divmod): Likewise.
! 	* target.def (can_special_div_by_const): Remove.
! 	* target.h: Remove tree-core.h include
! 	* targhooks.cc (default_can_special_div_by_const): Remove.
! 	* targhooks.h (default_can_special_div_by_const): Remove.
! 	* tree-vect-generic.cc (expand_vector_operation): Remove hook.
! 	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Remove hook.
! 	* tree-vect-stmts.cc (vectorizable_operation): Remove hook.
  
! 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/install.texi2html: Fix issue number typo in comment.
  
! 2023-03-12  Gaius Mulley  <gaiusmod2@gmail.com>
  
! 	* doc/gm2.texi (Elementary data types): Equivalence BOOLEAN with
! 	bool.
  
! 2023-03-12  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/invoke.texi (Optimize Options):  Add markup to
! 	description of asan-kernel-mem-intrinsic-prefix, and clarify
! 	wording slightly.
  
! 2023-03-11  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/extend.texi (Named Address Spaces): Drop a redundant link
! 	to AVR-LibC.
  
! 2023-03-11  Jeff Law  <jlaw@ventanamicro>
  
! 	PR web/88860
! 	* doc/extend.texi: Clarify Attribute Syntax a bit.
  
! 2023-03-11  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* doc/install.texi (Prerequisites): Suggest using newer versions
! 	of Texinfo.
! 	(Final install): Clean up and modernize discussion of how to
! 	build or obtain the GCC manuals.
! 	* doc/install.texi2html: Update comment to point to the PR instead
! 	of "makeinfo 4.7 brokenness" (it's not specific to that version).
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/107703
! 	* optabs.cc (expand_fix): For conversions from BFmode to integral,
! 	use shifts to convert it to SFmode first and then convert SFmode
! 	to integral.
  
! 2023-03-10  Andrew Pinski  <apinski@marvell.com>
  
! 	* config/aarch64/aarch64.md: Add a new define_split
! 	to help combine.
  
! 2023-03-10  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-structalias.cc (solve_graph): Immediately
! 	iterate self-cycles.
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109008
! 	* range-op-float.cc (float_widen_lhs_range): If not
! 	-frounding-math and not IBM double double format, extend lhs
! 	range just by 0.5ulp rather than 1ulp in each direction.
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/107998
! 	* config.gcc (x86_64-*-cygwin*): Don't add i386/t-cygwin-w64 into
! 	$tmake_file.
! 	* config/i386/t-cygwin-w64: Remove.
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR plugins/108634
! 	* tree-core.h (tree_code_type, tree_code_length): For C++11 or
! 	C++14, don't declare as extern const arrays.
! 	(tree_code_type_tmpl, tree_code_length_tmpl): New types with
! 	static constexpr member arrays for C++11 or C++14.
! 	* tree.h (TREE_CODE_CLASS): For C++11 or C++14 use
! 	tree_code_type_tmpl <0>::tree_code_type instead of tree_code_type.
! 	(TREE_CODE_LENGTH): For C++11 or C++14 use
! 	tree_code_length_tmpl <0>::tree_code_length instead of
! 	tree_code_length.
! 	* tree.cc (tree_code_type, tree_code_length): Remove.
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/108464
! 	* common.opt (fcanon-prefix-map): New option.
! 	* opts.cc: Include file-prefix-map.h.
! 	(flag_canon_prefix_map): New variable.
! 	(common_handle_option): Handle OPT_fcanon_prefix_map.
! 	(gen_command_line_string): Ignore OPT_fcanon_prefix_map.
! 	* file-prefix-map.h (flag_canon_prefix_map): Declare.
! 	* file-prefix-map.cc (struct file_prefix_map): Add canonicalize
! 	member.
! 	(add_prefix_map): Initialize canonicalize member from
! 	flag_canon_prefix_map, and if true canonicalize it using lrealpath.
! 	(remap_filename): Revert 2022-11-01 and 2022-11-07 changes,
! 	use lrealpath result only for map->canonicalize map entries.
! 	* lto-opts.cc (lto_write_options): Ignore OPT_fcanon_prefix_map.
! 	* opts-global.cc (handle_common_deferred_options): Clear
! 	flag_canon_prefix_map at the start and handle OPT_fcanon_prefix_map.
! 	* doc/invoke.texi (-fcanon-prefix-map): Document.
! 	(-ffile-prefix-map, -fdebug-prefix-map, -fprofile-prefix-map): Add
! 	see also for -fcanon-prefix-map.
! 	* doc/cppopts.texi (-fmacro-prefix-map): Likewise.
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/108079
! 	* cgraphunit.cc (check_global_declaration): Don't warn for unused
! 	variables which have OPT_Wunused_variable warning suppressed.
  
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/109008
! 	* range-op-float.cc (float_widen_lhs_range): If lb is
! 	minimum representable finite number or ub is maximum
! 	representable finite number, instead of widening it to
! 	-inf or inf widen it to negative or positive 0x0.8p+(EMAX+1).
! 	Temporarily clear flag_finite_math_only when canonicalizing
! 	the widened range.
  
! 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-builtins.cc (riscv_gimple_fold_builtin): New function.
! 	* config/riscv/riscv-protos.h (riscv_gimple_fold_builtin): Ditto.
! 	(gimple_fold_builtin):  Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class read_vl): New class.
! 	(class vleff): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (read_vl): Ditto.
! 	(vleff): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct read_vl_def): Ditto.
! 	(struct fault_load_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(rvv_arg_type_info::get_tree_type): Add size_ptr.
! 	(gimple_folder::gimple_folder): New class.
! 	(gimple_folder::fold): Ditto.
! 	(gimple_fold_builtin): New function.
! 	(get_read_vl_instance): Ditto.
! 	(get_read_vl_decl): Ditto.
! 	* config/riscv/riscv-vector-builtins.def (size_ptr): Add size_ptr.
! 	* config/riscv/riscv-vector-builtins.h (class gimple_folder): New class.
! 	(get_read_vl_instance): New function.
! 	(get_read_vl_decl):  Ditto.
! 	* config/riscv/riscv-vsetvl.cc (fault_first_load_p): Ditto.
! 	(read_vl_insn_p): Ditto.
! 	(available_occurrence_p): Ditto.
! 	(backward_propagate_worthwhile_p): Ditto.
! 	(gen_vsetvl_pat): Adapt for vleff support.
! 	(get_forward_read_vl_insn): New function.
! 	(get_backward_fault_first_load_insn): Ditto.
! 	(source_equal_p): Adapt for vleff support.
! 	(first_ratio_invalid_for_second_sew_p): Remove.
! 	(first_ratio_invalid_for_second_lmul_p): Ditto.
! 	(first_lmul_less_than_second_lmul_p): Ditto.
! 	(first_ratio_less_than_second_ratio_p): Ditto.
! 	(support_relaxed_compatible_p): New function.
! 	(vector_insn_info::operator>): Remove.
! 	(vector_insn_info::operator>=): Refine.
! 	(vector_insn_info::parse_insn): Adapt for vleff support.
! 	(vector_insn_info::compatible_p): Ditto.
! 	(vector_insn_info::update_fault_first_load_avl): New function.
! 	(pass_vsetvl::transfer_after): Adapt for vleff support.
! 	(pass_vsetvl::demand_fusion): Ditto.
! 	(pass_vsetvl::cleanup_insns): Ditto.
! 	* config/riscv/riscv-vsetvl.def (DEF_INCOMPATIBLE_COND): Remove
! 	redundant condtions.
! 	* config/riscv/riscv-vsetvl.h (struct demands_cond): New function.
! 	* config/riscv/riscv.cc (TARGET_GIMPLE_FOLD_BUILTIN): New target hook.
! 	* config/riscv/riscv.md: Adapt for vleff support.
! 	* config/riscv/t-riscv: Ditto.
! 	* config/riscv/vector-iterators.md: New iterator.
! 	* config/riscv/vector.md (read_vlsi): New pattern.
! 	(read_vldi_zero_extend): Ditto.
! 	(@pred_fault_load<mode>): Ditto.
  
! 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::use_ternop_insn): Use maybe_gen_insn instead.
! 	(function_expander::use_widen_ternop_insn): Ditto.
! 	* optabs.cc (maybe_gen_insn): Extend nops handling.
  
! 2023-03-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc: Split indexed load
! 	patterns according to RVV ISA.
! 	* config/riscv/vector-iterators.md: New iterators.
! 	* config/riscv/vector.md
! 	(@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Remove.
! 	(@pred_indexed_<order>load<mode>_same_eew): New pattern.
! 	(@pred_indexed_<order>load<mode>_x2_greater_eew): Ditto.
! 	(@pred_indexed_<order>load<mode>_x4_greater_eew): Ditto.
! 	(@pred_indexed_<order>load<mode>_x8_greater_eew): Ditto.
! 	(@pred_indexed_<order>load<mode>_x2_smaller_eew): Ditto.
! 	(@pred_indexed_<order>load<mode>_x4_smaller_eew): Ditto.
! 	(@pred_indexed_<order>load<mode>_x8_smaller_eew): Ditto.
! 	(@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Remove.
! 	(@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
  
! 2023-03-10  Michael Collison  <collison@rivosinc.com>
  
! 	* tree-vect-loop-manip.cc (vect_do_peeling): Use
! 	result of constant_lower_bound instead of vf for the lower
! 	bound of the epilog loop trip count.
  
! 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
  
! 	* passes.cc (emergency_dump_function): Finish graph generation.
  
! 2023-03-09  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64.md (tbranch_<code><mode>3): Restrict to SHORT
! 	and bottom bit only.
  
! 2023-03-09  Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/108980
! 	* gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
! 	Reorgnize the call to warning for not strict flexible arrays
! 	to be before the check of warned.
  
! 2023-03-09  Jason Merrill  <jason@redhat.com>
  
! 	* doc/extend.texi: Comment out __is_deducible docs.
  
! 2023-03-09  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/105841
! 	* doc/extend.texi (Type Traits):: Document __is_deducible.
  
! 2023-03-09  Costas Argyris  <costas.argyris@gmail.com>
  
! 	PR driver/108865
! 	* config.host: add object for x86_64-*-mingw*.
! 	* config/i386/sym-mingw32.cc: dummy file to attach
! 	symbol.
! 	* config/i386/utf8-mingw32.rc: windres resource file.
! 	* config/i386/winnt-utf8.manifest: XML manifest to
! 	enable UTF-8.
! 	* config/i386/x-mingw32: reference to x-mingw32-utf8.
! 	* config/i386/x-mingw32-utf8: Makefile fragment to
! 	embed UTF-8 manifest.
  
! 2023-03-09  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* lra-constraints.cc (process_alt_operands): Use operand modes for
! 	clobbered regs instead of the biggest access mode.
  
! 2023-03-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/108995
! 	* fold-const.cc (extract_muldiv_1): Avoid folding
! 	(CST * b) / CST2 when sanitizing overflow and we rely on
! 	overflow being undefined.
  
! 2023-03-09  Jakub Jelinek  <jakub@redhat.com>
! 	    Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109008
! 	* range-op-float.cc (float_widen_lhs_range): New function.
! 	(foperator_plus::op1_range, foperator_minus::op1_range,
! 	foperator_minus::op2_range, foperator_mult::op1_range,
! 	foperator_div::op1_range, foperator_div::op2_range): Use it.
  
! 2023-03-07  Jonathan Grant  <jg@jguk.org>
  
! 	PR sanitizer/81649
! 	* doc/invoke.texi (Instrumentation Options):  Clarify
! 	LeakSanitizer behavior.
  
! 2023-03-07  Benson Muite  <benson_muite@emailplus.org>
  
! 	* doc/install.texi (Prerequisites): Add link to gmplib.org.
  
! 2023-03-07  Pan Li  <pan2.li@intel.com>
! 	    Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	PR target/108185
! 	PR target/108654
! 	* config/riscv/riscv-modes.def (ADJUST_PRECISION): Adjust VNx*BI
! 	modes.
! 	* config/riscv/riscv.cc (riscv_v_adjust_precision): New.
! 	* config/riscv/riscv.h (riscv_v_adjust_precision): New.
! 	* genmodes.cc (adj_precision): New.
! 	(ADJUST_PRECISION): New.
! 	(emit_mode_adjustments): Handle ADJUST_PRECISION.
  
! 2023-03-07  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* doc/sourcebuild.texi: Document check_effective_target_tail_call.
  
! 2023-03-06  Paul-Antoine Arras  <pa@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (<expander><mode>3_exec): Add patterns for
! 	{s|u}{max|min} in QI, HI and DI modes.
! 	(<expander><mode>3): Add pattern for {s|u}{max|min} in DI mode.
! 	(cond_<fexpander><mode>): Add pattern for cond_f{max|min}.
! 	(cond_<expander><mode>): Add pattern for cond_{s|u}{max|min}.
! 	* config/gcn/gcn.cc (gcn_spill_class): Allow the exec register to be
! 	saved in SGPRs.
  
! 2023-03-06  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109025
! 	* tree-vect-loop.cc (vect_is_simple_reduction): Verify
! 	the inner LC PHI use is the inner loop PHI latch definition
! 	before classifying an outer PHI as double reduction.
  
! 2023-03-06  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR target/108429
! 	* config/i386/x86-tune.def (X86_TUNE_USE_SCATTER_2PARTS): Enable for
! 	generic.
! 	(X86_TUNE_USE_SCATTER_4PARTS): Likewise.
! 	(X86_TUNE_USE_SCATTER): Likewise.
  
! 2023-03-06  Xi Ruoyao  <xry111@xry111.site>
  
! 	PR target/109000
! 	* config/loongarch/loongarch.h (FP_RETURN): Use
! 	TARGET_*_FLOAT_ABI instead of TARGET_*_FLOAT.
! 	(UNITS_PER_FP_ARG): Likewise.
  
! 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (reg_available_p): Fix bug.
! 	(pass_vsetvl::backward_demand_fusion): Ditto.
  
! 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
! 	    SiYu Wu  <siyu@isrc.iscas.ac.cn>
  
! 	* config/riscv/crypto.md (riscv_sm3p0_<mode>): Add ZKSED's and ZKSH's
! 	instructions.
! 	(riscv_sm3p1_<mode>): New.
! 	(riscv_sm4ed_<mode>): New.
! 	(riscv_sm4ks_<mode>): New.
! 	* config/riscv/riscv-builtins.cc (AVAIL): Add ZKSED's and ZKSH's AVAIL.
! 	* config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): Add ZKSED's and
! 	ZKSH's built-in functions.
  
! 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
! 	    SiYu Wu  <siyu@isrc.iscas.ac.cn>
  
! 	* config/riscv/crypto.md (riscv_sha256sig0_<mode>): Add ZKNH's instructions.
! 	(riscv_sha256sig1_<mode>): New.
! 	(riscv_sha256sum0_<mode>): New.
! 	(riscv_sha256sum1_<mode>): New.
! 	(riscv_sha512sig0h): New.
! 	(riscv_sha512sig0l): New.
! 	(riscv_sha512sig1h): New.
! 	(riscv_sha512sig1l): New.
! 	(riscv_sha512sum0r): New.
! 	(riscv_sha512sum1r): New.
! 	(riscv_sha512sig0): New.
! 	(riscv_sha512sig1): New.
! 	(riscv_sha512sum0): New.
! 	(riscv_sha512sum1): New.
! 	* config/riscv/riscv-builtins.cc (AVAIL): And ZKNH's AVAIL.
! 	* config/riscv/riscv-scalar-crypto.def (RISCV_BUILTIN): And ZKNH's
! 	built-in functions.
! 	(DIRECT_BUILTIN): Add new.
  
! 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
! 	    SiYu Wu  <siyu@isrc.iscas.ac.cn>
  
! 	* config/riscv/constraints.md (D03): Add constants of bs and rnum.
! 	(DsA): New.
! 	* config/riscv/crypto.md (riscv_aes32dsi): Add ZKND's and ZKNE's instructions.
! 	(riscv_aes32dsmi): New.
! 	(riscv_aes64ds): New.
! 	(riscv_aes64dsm): New.
! 	(riscv_aes64im): New.
! 	(riscv_aes64ks1i): New.
! 	(riscv_aes64ks2): New.
! 	(riscv_aes32esi): New.
! 	(riscv_aes32esmi): New.
! 	(riscv_aes64es): New.
! 	(riscv_aes64esm): New.
! 	* config/riscv/riscv-builtins.cc (AVAIL): Add ZKND's and ZKNE's AVAIL.
! 	* config/riscv/riscv-scalar-crypto.def (DIRECT_BUILTIN): Add ZKND's and
! 	ZKNE's built-in functions.
  
! 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
! 	    SiYu Wu  <siyu@isrc.iscas.ac.cn>
  
! 	* config/riscv/bitmanip.md: Add ZBKB's instructions.
! 	* config/riscv/riscv-builtins.cc (AVAIL): Add new.
! 	* config/riscv/riscv.md: Add new type for crypto instructions.
! 	* config/riscv/crypto.md: Add Scalar Cryptography extension's machine
! 	description file.
! 	* config/riscv/riscv-scalar-crypto.def: Add Scalar Cryptography
! 	extension's built-in function file.
  
! 2023-03-05  Liao Shihua  <shihua@iscas.ac.cn>
! 	    SiYu Wu  <siyu@isrc.iscas.ac.cn>
  
! 	* config/riscv/riscv-builtins.cc (RISCV_FTYPE_NAME2): New.
! 	(RISCV_FTYPE_NAME3): New.
! 	(RISCV_ATYPE_QI): New.
! 	(RISCV_ATYPE_HI): New.
! 	(RISCV_FTYPE_ATYPES2): New.
! 	(RISCV_FTYPE_ATYPES3): New.
! 	* config/riscv/riscv-ftypes.def (2): New.
! 	(3): New.
  
! 2023-03-05  Vineet Gupta  <vineetg@rivosinc.com>
  
! 	* config/riscv/riscv.cc (riscv_rtx_costs): Fixed IN_RANGE() to
! 	use exact_log2().
  
! 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/predicates.md (vector_any_register_operand): New predicate.
! 	* config/riscv/riscv-c.cc (riscv_check_builtin_call): New function.
! 	(riscv_register_pragmas): Add builtin function check call.
! 	* config/riscv/riscv-protos.h (RVV_VUNDEF): Adapt macro.
! 	(check_builtin_call): New function.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vundefined): New class.
! 	(class vreinterpret): Ditto.
! 	(class vlmul_ext): Ditto.
! 	(class vlmul_trunc): Ditto.
! 	(class vset): Ditto.
! 	(class vget): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vluxei8): Change name.
! 	(vluxei16): Ditto.
! 	(vluxei32): Ditto.
! 	(vluxei64): Ditto.
! 	(vloxei8): Ditto.
! 	(vloxei16): Ditto.
! 	(vloxei32): Ditto.
! 	(vloxei64): Ditto.
! 	(vsuxei8): Ditto.
! 	(vsuxei16): Ditto.
! 	(vsuxei32): Ditto.
! 	(vsuxei64): Ditto.
! 	(vsoxei8): Ditto.
! 	(vsoxei16): Ditto.
! 	(vsoxei32): Ditto.
! 	(vsoxei64): Ditto.
! 	(vundefined): Add new intrinsic.
! 	(vreinterpret): Ditto.
! 	(vlmul_ext): Ditto.
! 	(vlmul_trunc): Ditto.
! 	(vset): Ditto.
! 	(vget): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def): New class.
! 	(struct narrow_alu_def): Ditto.
! 	(struct reduc_alu_def): Ditto.
! 	(struct vundefined_def): Ditto.
! 	(struct misc_def): Ditto.
! 	(struct vset_def): Ditto.
! 	(struct vget_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EEW8_INTERPRET_OPS): New def.
! 	(DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_LMUL1_OPS): Ditto.
! 	(DEF_RVV_LMUL2_OPS): Ditto.
! 	(DEF_RVV_LMUL4_OPS): Ditto.
! 	(vint16mf4_t): Ditto.
! 	(vint16mf2_t): Ditto.
! 	(vint16m1_t): Ditto.
! 	(vint16m2_t): Ditto.
! 	(vint16m4_t): Ditto.
! 	(vint16m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint32m1_t): Ditto.
! 	(vint32m2_t): Ditto.
! 	(vint32m4_t): Ditto.
! 	(vint32m8_t): Ditto.
! 	(vint64m1_t): Ditto.
! 	(vint64m2_t): Ditto.
! 	(vint64m4_t): Ditto.
! 	(vint64m8_t): Ditto.
! 	(vuint16mf4_t): Ditto.
! 	(vuint16mf2_t): Ditto.
! 	(vuint16m1_t): Ditto.
! 	(vuint16m2_t): Ditto.
! 	(vuint16m4_t): Ditto.
! 	(vuint16m8_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	(vint8mf4_t): Ditto.
! 	(vint8mf2_t): Ditto.
! 	(vint8m1_t): Ditto.
! 	(vint8m2_t): Ditto.
! 	(vint8m4_t): Ditto.
! 	(vint8m8_t): Ditto.
! 	(vuint8mf4_t): Ditto.
! 	(vuint8mf2_t): Ditto.
! 	(vuint8m1_t): Ditto.
! 	(vuint8m2_t): Ditto.
! 	(vuint8m4_t): Ditto.
! 	(vuint8m8_t): Ditto.
! 	(vint8mf8_t): Ditto.
! 	(vuint8mf8_t): Ditto.
! 	(vfloat32mf2_t): Ditto.
! 	(vfloat32m1_t): Ditto.
! 	(vfloat32m2_t): Ditto.
! 	(vfloat32m4_t): Ditto.
! 	(vfloat64m1_t): Ditto.
! 	(vfloat64m2_t): Ditto.
! 	(vfloat64m4_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Ditto.
! 	(DEF_RVV_EEW8_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_EEW16_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_EEW32_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_EEW64_INTERPRET_OPS): Ditto.
! 	(DEF_RVV_X2_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X4_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X8_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X16_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X32_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_X64_VLMUL_EXT_OPS): Ditto.
! 	(DEF_RVV_LMUL1_OPS): Ditto.
! 	(DEF_RVV_LMUL2_OPS): Ditto.
! 	(DEF_RVV_LMUL4_OPS): Ditto.
! 	(DEF_RVV_TYPE_INDEX): Ditto.
! 	(required_extensions_p): Adapt for new intrinsic support/
! 	(get_required_extensions): New function.
! 	(check_required_extensions): Ditto.
! 	(unsigned_base_type_p): Remove.
! 	(rvv_arg_type_info::get_scalar_ptr_type): New function.
! 	(get_mode_for_bitsize): Remove.
! 	(rvv_arg_type_info::get_scalar_const_ptr_type): New function.
! 	(rvv_arg_type_info::get_base_vector_type): Ditto.
! 	(rvv_arg_type_info::get_function_type_index): Ditto.
! 	(DEF_RVV_BASE_TYPE): New def.
! 	(function_builder::apply_predication): New class.
! 	(function_expander::mask_mode): Ditto.
! 	(function_checker::function_checker): Ditto.
! 	(function_checker::report_non_ice): Ditto.
! 	(function_checker::report_out_of_range): Ditto.
! 	(function_checker::require_immediate): Ditto.
! 	(function_checker::require_immediate_range): Ditto.
! 	(function_checker::check): Ditto.
! 	(check_builtin_call): Ditto.
! 	* config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): New def.
! 	(DEF_RVV_BASE_TYPE): Ditto.
! 	(DEF_RVV_TYPE_INDEX): Ditto.
! 	(vbool64_t): Ditto.
! 	(vbool32_t): Ditto.
! 	(vbool16_t): Ditto.
! 	(vbool8_t): Ditto.
! 	(vbool4_t): Ditto.
! 	(vbool2_t): Ditto.
! 	(vbool1_t): Ditto.
! 	(vuint8mf8_t): Ditto.
! 	(vuint8mf4_t): Ditto.
! 	(vuint8mf2_t): Ditto.
! 	(vuint8m1_t): Ditto.
! 	(vuint8m2_t): Ditto.
! 	(vint8m4_t): Ditto.
! 	(vuint8m4_t): Ditto.
! 	(vint8m8_t): Ditto.
! 	(vuint8m8_t): Ditto.
! 	(vint16mf4_t): Ditto.
! 	(vuint16mf2_t): Ditto.
! 	(vuint16m1_t): Ditto.
! 	(vuint16m2_t): Ditto.
! 	(vuint16m4_t): Ditto.
! 	(vuint16m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	(vfloat32mf2_t): Ditto.
! 	(vfloat32m1_t): Ditto.
! 	(vfloat32m2_t): Ditto.
! 	(vfloat32m4_t): Ditto.
! 	(vfloat32m8_t): Ditto.
! 	(vfloat64m1_t): Ditto.
! 	(vfloat64m4_t): Ditto.
! 	(vector): Move it def.
! 	(scalar): Ditto.
! 	(mask): Ditto.
! 	(signed_vector): Ditto.
! 	(unsigned_vector): Ditto.
! 	(unsigned_scalar): Ditto.
! 	(vector_ptr): Ditto.
! 	(scalar_ptr): Ditto.
! 	(scalar_const_ptr): Ditto.
! 	(void): Ditto.
! 	(size): Ditto.
! 	(ptrdiff): Ditto.
! 	(unsigned_long): Ditto.
! 	(long): Ditto.
! 	(eew8_index): Ditto.
! 	(eew16_index): Ditto.
! 	(eew32_index): Ditto.
! 	(eew64_index): Ditto.
! 	(shift_vector): Ditto.
! 	(double_trunc_vector): Ditto.
! 	(quad_trunc_vector): Ditto.
! 	(oct_trunc_vector): Ditto.
! 	(double_trunc_scalar): Ditto.
! 	(double_trunc_signed_vector): Ditto.
! 	(double_trunc_unsigned_vector): Ditto.
! 	(double_trunc_unsigned_scalar): Ditto.
! 	(double_trunc_float_vector): Ditto.
! 	(float_vector): Ditto.
! 	(lmul1_vector): Ditto.
! 	(widen_lmul1_vector): Ditto.
! 	(eew8_interpret): Ditto.
! 	(eew16_interpret): Ditto.
! 	(eew32_interpret): Ditto.
! 	(eew64_interpret): Ditto.
! 	(vlmul_ext_x2): Ditto.
! 	(vlmul_ext_x4): Ditto.
! 	(vlmul_ext_x8): Ditto.
! 	(vlmul_ext_x16): Ditto.
! 	(vlmul_ext_x32): Ditto.
! 	(vlmul_ext_x64): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (DEF_RVV_BASE_TYPE): New def.
! 	(struct function_type_info): New function.
! 	(struct rvv_arg_type_info): Ditto.
! 	(class function_checker): New class.
! 	(rvv_arg_type_info::get_scalar_type): New function.
! 	(rvv_arg_type_info::get_vector_type): Ditto.
! 	(function_expander::ret_mode): New function.
! 	(function_checker::arg_mode): Ditto.
! 	(function_checker::ret_mode): Ditto.
! 	* config/riscv/t-riscv: Add generator.
! 	* config/riscv/vector-iterators.md: New iterators.
! 	* config/riscv/vector.md (vundefined<mode>): New pattern.
! 	(@vundefined<mode>): Ditto.
! 	(@vreinterpret<mode>): Ditto.
! 	(@vlmul_extx2<mode>): Ditto.
! 	(@vlmul_extx4<mode>): Ditto.
! 	(@vlmul_extx8<mode>): Ditto.
! 	(@vlmul_extx16<mode>): Ditto.
! 	(@vlmul_extx32<mode>): Ditto.
! 	(@vlmul_extx64<mode>): Ditto.
! 	(*vlmul_extx2<mode>): Ditto.
! 	(*vlmul_extx4<mode>): Ditto.
! 	(*vlmul_extx8<mode>): Ditto.
! 	(*vlmul_extx16<mode>): Ditto.
! 	(*vlmul_extx32<mode>): Ditto.
! 	(*vlmul_extx64<mode>): Ditto.
! 	* config/riscv/genrvv-type-indexer.cc: New file.
  
! 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-protos.h (enum vlen_enum): New enum.
! 	(slide1_sew64_helper): New function.
! 	* config/riscv/riscv-v.cc (compute_vlmax): Ditto.
! 	(get_unknown_min_value): Ditto.
! 	(force_vector_length_operand): Ditto.
! 	(gen_no_side_effects_vsetvl_rtx): Ditto.
! 	(get_vl_x2_rtx): Ditto.
! 	(slide1_sew64_helper): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class slideop): New class.
! 	(class vrgather): Ditto.
! 	(class vrgatherei16): Ditto.
! 	(class vcompress): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vslideup): Ditto.
! 	(vslidedown): Ditto.
! 	(vslide1up): Ditto.
! 	(vslide1down): Ditto.
! 	(vfslide1up): Ditto.
! 	(vfslide1down): Ditto.
! 	(vrgather): Ditto.
! 	(vrgatherei16): Ditto.
! 	(vcompress): Ditto.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_EI16_OPS): New macro.
! 	(vint8mf8_t): Ditto.
! 	(vint8mf4_t): Ditto.
! 	(vint8mf2_t): Ditto.
! 	(vint8m1_t): Ditto.
! 	(vint8m2_t): Ditto.
! 	(vint8m4_t): Ditto.
! 	(vint16mf4_t): Ditto.
! 	(vint16mf2_t): Ditto.
! 	(vint16m1_t): Ditto.
! 	(vint16m2_t): Ditto.
! 	(vint16m4_t): Ditto.
! 	(vint16m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint32m1_t): Ditto.
! 	(vint32m2_t): Ditto.
! 	(vint32m4_t): Ditto.
! 	(vint32m8_t): Ditto.
! 	(vint64m1_t): Ditto.
! 	(vint64m2_t): Ditto.
! 	(vint64m4_t): Ditto.
! 	(vint64m8_t): Ditto.
! 	(vuint8mf8_t): Ditto.
! 	(vuint8mf4_t): Ditto.
! 	(vuint8mf2_t): Ditto.
! 	(vuint8m1_t): Ditto.
! 	(vuint8m2_t): Ditto.
! 	(vuint8m4_t): Ditto.
! 	(vuint16mf4_t): Ditto.
! 	(vuint16mf2_t): Ditto.
! 	(vuint16m1_t): Ditto.
! 	(vuint16m2_t): Ditto.
! 	(vuint16m4_t): Ditto.
! 	(vuint16m8_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	(vfloat32mf2_t): Ditto.
! 	(vfloat32m1_t): Ditto.
! 	(vfloat32m2_t): Ditto.
! 	(vfloat32m4_t): Ditto.
! 	(vfloat32m8_t): Ditto.
! 	(vfloat64m1_t): Ditto.
! 	(vfloat64m2_t): Ditto.
! 	(vfloat64m4_t): Ditto.
! 	(vfloat64m8_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_EI16_OPS): Ditto.
! 	* config/riscv/riscv.md: Adjust RVV instruction types.
! 	* config/riscv/vector-iterators.md (down): New iterator.
! 	(=vd,vr): New attribute.
! 	(UNSPEC_VSLIDE1UP): New unspec.
! 	* config/riscv/vector.md (@pred_slide<ud><mode>): New pattern.
! 	(*pred_slide<ud><mode>): Ditto.
! 	(*pred_slide<ud><mode>_extended): Ditto.
! 	(@pred_gather<mode>): Ditto.
! 	(@pred_gather<mode>_scalar): Ditto.
! 	(@pred_gatherei16<mode>): Ditto.
! 	(@pred_compress<mode>): Ditto.
  
! 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins.cc: Remove void_type_node.
  
! 2023-03-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/constraints.md (Wb1): New constraint.
! 	* config/riscv/predicates.md
! 	(vector_least_significant_set_mask_operand): New predicate.
! 	(vector_broadcast_mask_operand): Ditto.
! 	* config/riscv/riscv-protos.h (enum vlmul_type): Adjust.
! 	(gen_scalar_move_mask): New function.
! 	* config/riscv/riscv-v.cc (gen_scalar_move_mask): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vmv): New class.
! 	(class vmv_s): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmv_x): Ditto.
! 	(vmv_s): Ditto.
! 	(vfmv_f): Ditto.
! 	(vfmv_s): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct scalar_move_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (function_expander::mask_mode): Ditto.
! 	(function_expander::use_exact_insn): New function.
! 	(function_expander::use_contiguous_load_insn): New function.
! 	(function_expander::use_contiguous_store_insn): New function.
! 	(function_expander::use_ternop_insn): New function.
! 	(function_expander::use_widen_ternop_insn): New function.
! 	(function_expander::use_scalar_move_insn): New function.
! 	* config/riscv/riscv-vector-builtins.def (s): New operand suffix.
! 	* config/riscv/riscv-vector-builtins.h
! 	(function_expander::add_scalar_move_mask_operand): New class.
! 	* config/riscv/riscv-vsetvl.cc (ignore_vlmul_insn_p): New function.
! 	(scalar_move_insn_p): Ditto.
! 	(has_vsetvl_killed_avl_p): Ditto.
! 	(anticipatable_occurrence_p): Ditto.
! 	(insert_vsetvl): Ditto.
! 	(get_vl_vtype_info): Ditto.
! 	(calculate_sew): Ditto.
! 	(calculate_vlmul): Ditto.
! 	(incompatible_avl_p): Ditto.
! 	(different_sew_p): Ditto.
! 	(different_lmul_p): Ditto.
! 	(different_ratio_p): Ditto.
! 	(different_tail_policy_p): Ditto.
! 	(different_mask_policy_p): Ditto.
! 	(possible_zero_avl_p): Ditto.
! 	(first_ratio_invalid_for_second_sew_p): Ditto.
! 	(first_ratio_invalid_for_second_lmul_p): Ditto.
! 	(second_ratio_invalid_for_first_sew_p): Ditto.
! 	(second_ratio_invalid_for_first_lmul_p): Ditto.
! 	(second_sew_less_than_first_sew_p): Ditto.
! 	(first_sew_less_than_second_sew_p): Ditto.
! 	(compare_lmul): Ditto.
! 	(second_lmul_less_than_first_lmul_p): Ditto.
! 	(first_lmul_less_than_second_lmul_p): Ditto.
! 	(first_ratio_less_than_second_ratio_p): Ditto.
! 	(second_ratio_less_than_first_ratio_p): Ditto.
! 	(DEF_INCOMPATIBLE_COND): Ditto.
! 	(greatest_sew): Ditto.
! 	(first_sew): Ditto.
! 	(second_sew): Ditto.
! 	(first_vlmul): Ditto.
! 	(second_vlmul): Ditto.
! 	(first_ratio): Ditto.
! 	(second_ratio): Ditto.
! 	(vlmul_for_first_sew_second_ratio): Ditto.
! 	(ratio_for_second_sew_first_vlmul): Ditto.
! 	(DEF_SEW_LMUL_FUSE_RULE): Ditto.
! 	(always_unavailable): Ditto.
! 	(avl_unavailable_p): Ditto.
! 	(sew_unavailable_p): Ditto.
! 	(lmul_unavailable_p): Ditto.
! 	(ge_sew_unavailable_p): Ditto.
! 	(ge_sew_lmul_unavailable_p): Ditto.
! 	(ge_sew_ratio_unavailable_p): Ditto.
! 	(DEF_UNAVAILABLE_COND): Ditto.
! 	(same_sew_lmul_demand_p): Ditto.
! 	(propagate_avl_across_demands_p): Ditto.
! 	(reg_available_p): Ditto.
! 	(avl_info::has_non_zero_avl): Ditto.
! 	(vl_vtype_info::has_non_zero_avl): Ditto.
! 	(vector_insn_info::operator>=): Refactor.
! 	(vector_insn_info::parse_insn): Adjust for scalar move.
! 	(vector_insn_info::demand_vl_vtype): Remove.
! 	(vector_insn_info::compatible_p): New function.
! 	(vector_insn_info::compatible_avl_p): Ditto.
! 	(vector_insn_info::compatible_vtype_p): Ditto.
! 	(vector_insn_info::available_p): Ditto.
! 	(vector_insn_info::merge): Ditto.
! 	(vector_insn_info::fuse_avl): Ditto.
! 	(vector_insn_info::fuse_sew_lmul): Ditto.
! 	(vector_insn_info::fuse_tail_policy): Ditto.
! 	(vector_insn_info::fuse_mask_policy): Ditto.
! 	(vector_insn_info::dump): Ditto.
! 	(vector_infos_manager::release): Ditto.
! 	(pass_vsetvl::compute_local_backward_infos): Adjust for scalar move support.
! 	(pass_vsetvl::get_backward_fusion_type): Adjust for scalar move support.
! 	(pass_vsetvl::hard_empty_block_p): Ditto.
! 	(pass_vsetvl::backward_demand_fusion): Ditto.
! 	(pass_vsetvl::forward_demand_fusion): Ditto.
! 	(pass_vsetvl::refine_vsetvls): Ditto.
! 	(pass_vsetvl::cleanup_vsetvls): Ditto.
! 	(pass_vsetvl::commit_vsetvls): Ditto.
! 	(pass_vsetvl::propagate_avl): Ditto.
! 	* config/riscv/riscv-vsetvl.h (enum demand_status): New class.
! 	(struct demands_pair): Ditto.
! 	(struct demands_cond): Ditto.
! 	(struct demands_fuse_rule): Ditto.
! 	* config/riscv/vector-iterators.md: New iterator.
! 	* config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
! 	(*pred_broadcast<mode>): Ditto.
! 	(*pred_broadcast<mode>_extended_scalar): Ditto.
! 	(@pred_extract_first<mode>): Ditto.
! 	(*pred_extract_first<mode>): Ditto.
! 	(@pred_extract_first_trunc<mode>): Ditto.
! 	* config/riscv/riscv-vsetvl.def: New file.
  
! 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
  
! 	* config/riscv/bitmanip.md: allow 0 constant in max/min
! 	pattern.
  
! 2023-03-05  Lin Sinan  <sinan.lin@linux.alibaba.com>
  
! 	* config/riscv/bitmanip.md: Fix wrong index in the check.
  
! 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/109006
! 	* vec.cc (test_auto_alias): Adjust comment for removal of
! 	m_vecdata.
! 	* read-rtl-function.cc (function_reader::parse_block): Likewise.
! 	* gdbhooks.py: Likewise.
  
! 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR testsuite/108973
! 	* selftest-diagnostic.cc
! 	(test_diagnostic_context::test_diagnostic_context): Set
! 	caret_max_width to 80.
  
! 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
  
! 	* gimple-ssa-warn-access.cc
! 	(pass_waccess::check_dangling_stores): Skip non-stores.
  
! 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
  
! 	* config/arm/vfp.md (*thumb2_movsi_vfp): Drop blank after tab
! 	after vmsr and vmrs, and lower the case of P0.
  
! 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR middle-end/109006
! 	* gdbhooks.py (VecPrinter): Handle vec<T> as well as vec<T>*.
  
! 2023-03-03  Jonathan Wakely  <jwakely@redhat.com>
  
! 	PR middle-end/109006
! 	* gdbhooks.py (VecPrinter): Adjust for new vec layout.
  
! 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c/108986
! 	* gimple-ssa-warn-access.cc (pass_waccess::maybe_check_access_sizes):
! 	Return immediately if OPT_Wnonnull or OPT_Wstringop_overflow_ is
! 	suppressed on stmt.  For [static %E] warning, print access_nelts
! 	rather than access_size.  Fix up comment wording.
  
! 2023-03-03  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* config/s390/driver-native.cc (s390_host_detect_local_cpu): Use
! 	arch14 instead of z16.
  
! 2023-03-03  Anthony Green  <green@moxielogic.com>
  
! 	* config/moxie/moxie.cc (TARGET_LRA_P): Remove.
  
! 2023-03-03  Anthony Green  <green@moxielogic.com>
  
! 	* config/moxie/constraints.md (A, B, W): Change
! 	define_constraint to define_memory_constraint.
  
! 2023-03-03  Xi Ruoyao  <xry111@xry111.site>
  
! 	* toplev.cc (process_options): Fix the spelling of
! 	"-fstack-clash-protection".
  
! 2023-03-03  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/109002
! 	* tree-ssa-pre.cc (compute_partial_antic_aux): Properly
! 	PHI-translate ANTIC_IN.
  
! 2023-03-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108988
! 	* gimple-fold.cc (gimple_fold_builtin_fputs): Fold len to
! 	size_type_node before passing it as argument to fwrite.  Formatting
! 	fixes.
  
! 2023-03-03  Richard Biener  <rguenther@suse.de>
  
! 	PR target/108738
! 	* config/i386/i386.opt (--param x86-stv-max-visits): New param.
! 	* doc/invoke.texi (--param x86-stv-max-visits): Document it.
! 	* config/i386/i386-features.h (scalar_chain::max_visits): New.
! 	(scalar_chain::build): Add bitmap parameter, return boolean.
! 	(scalar_chain::add_insn): Likewise.
! 	(scalar_chain::analyze_register_chain): Likewise.
! 	* config/i386/i386-features.cc (scalar_chain::scalar_chain):
! 	Initialize max_visits.
! 	(scalar_chain::analyze_register_chain): When we exhaust
! 	max_visits, abort.  Also abort when running into any
! 	disallowed insn.
! 	(scalar_chain::add_insn): Propagate abort.
! 	(scalar_chain::build): Likewise.  When aborting amend
! 	the set of disallowed insn with the insns set.
! 	(convert_scalars_to_vector): Adjust.  Do not convert aborted
! 	chains.
  
! 2023-03-03  Richard Biener  <rguenther@suse.de>
  
! 	PR debug/108772
! 	* dwarf2out.cc (dwarf2out_late_global_decl): Do not
! 	generate a DIE for a function scope static.
  
! 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
  
! 	* config/vx-common.h (WINT_TYPE): Alias to "wchar_t".
  
! 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/108883
! 	* target.h (emit_support_tinfos_callback): New typedef.
! 	* targhooks.h (default_emit_support_tinfos): Declare.
! 	* targhooks.cc (default_emit_support_tinfos): New function.
! 	* target.def (emit_support_tinfos): New target hook.
! 	* doc/tm.texi.in (emit_support_tinfos): Document it.
! 	* doc/tm.texi: Regenerated.
! 	* config/i386/i386.cc (ix86_emit_support_tinfos): New function.
! 	(TARGET_EMIT_SUPPORT_TINFOS): Redefine.
  
! 2023-03-02  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira-costs.cc: Include print-rtl.h.
! 	(record_reg_classes, scan_one_insn): Add code to print debug info.
! 	(record_operand_costs): Find and use smaller cost for hard reg
! 	move.
  
! 2023-03-02  Kwok Cheung Yeung  <kcy@codesourcery.com>
! 	    Paul-Antoine Arras  <pa@codesourcery.com>
  
! 	* builtins.cc (mathfn_built_in_explicit): New.
! 	* config/gcn/gcn.cc: Include case-cfn-macros.h.
! 	(mathfn_built_in_explicit): Add prototype.
! 	(gcn_vectorize_builtin_vectorized_function): New.
! 	(gcn_libc_has_function): New.
! 	(TARGET_LIBC_HAS_FUNCTION): Define.
! 	(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Define.
  
! 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/108979
! 	* tree-vect-stmts.cc (vectorizable_operation): Don't mask
! 	operations on invariants.
  
! 2023-03-02  Robin Dapp  <rdapp@linux.ibm.com>
  
! 	* config/s390/predicates.md (vll_bias_operand): Add -1 bias.
! 	* config/s390/s390.cc (s390_option_override_internal): Make
! 	partial vector usage the default from z13 on.
! 	* config/s390/vector.md (len_load_v16qi): Add.
! 	(len_store_v16qi): Add.
  
! 2023-03-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	* simplify-rtx.cc (simplify_context::simplify_subreg): Use byte instead
! 	of constant 0 offset.
  
! 2023-03-02  Robert Suchanek  <robert.suchanek@imgtec.com>
  
! 	* config/mips/mips.cc (mips_set_text_contents_type): Use HOST_WIDE_INT
! 	instead of long.
! 	* config/mips/mips-protos.h (mips_set_text_contents_type): Likewise.
  
! 2023-03-02  Junxian Zhu  <zhujunxian@oss.cipunited.com>
  
! 	* config.gcc: add -with-{no-}msa build option.
! 	* config/mips/mips.h: Likewise.
! 	* doc/install.texi: Likewise.
  
! 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/108603
! 	* explow.cc (convert_memory_address_addr_space_1): Only wrap
! 	the result of a recursive call in a CONST if no instructions
! 	were emitted.
  
! 2023-03-02  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/108430
! 	* tree-vect-stmts.cc (vectorizable_condition): Fix handling
! 	of inverted condition.
  
! 2023-03-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/108934
! 	* fold-const.cc (native_interpret_expr) <case REAL_CST>: Before memcmp
! 	comparison copy the bytes from ptr to a temporary buffer and clearing
! 	padding bits in there.
  
! 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR middle-end/108545
! 	* gimplify.cc (struct tree_operand_hash_no_se): New.
! 	(omp_index_mapping_groups_1, omp_index_mapping_groups,
! 	omp_reindex_mapping_groups, omp_mapped_by_containing_struct,
! 	omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
! 	oacc_resolve_clause_dependencies, omp_build_struct_sibling_lists,
! 	gimplify_scan_omp_clauses): Use tree_operand_hash_no_se instead
! 	of tree_operand_hash.
  
! 2023-03-01  LIU Hao  <lh_mouse@126.com>
  
! 	PR pch/14940
! 	* config/i386/host-mingw32.cc (mingw32_gt_pch_get_address):
! 	Remove the size limit `pch_VA_max_size`
  
! 2023-03-01  Tobias Burnus  <tobias@codesourcery.com>
  
! 	PR middle-end/108546
! 	* omp-low.cc (lower_omp_target): Remove optional handling
! 	on the receiver side, i.e. inside target (data), for
! 	use_device_ptr.
  
! 2023-03-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/108967
! 	* cfgexpand.cc (expand_debug_expr): Handle WIDEN_{PLUS,MINUS}_EXPR
! 	and VEC_WIDEN_{PLUS,MINUS}_{HI,LO}_EXPR.
  
! 2023-03-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108970
! 	* tree-vect-loop-manip.cc (slpeel_can_duplicate_loop_p):
! 	Check we can copy the BBs.
! 	(slpeel_tree_duplicate_loop_to_edge_cfg): Avoid redundant
! 	check.
! 	(vect_do_peeling): Streamline error handling.
  
! 2023-03-01  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108950
! 	* tree-vect-patterns.cc (vect_recog_widen_sum_pattern):
! 	Check oprnd0 is defined in the loop.
! 	* tree-vect-loop.cc (vectorizable_reduction): Record all
! 	operands vector types, compute that of invariants and
! 	properly update their SLP nodes.
  
! 2023-03-01  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/108240
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Allow
! 	implicit powerpc64 setting to be unset if 64 bit is enabled implicitly.
  
! 2023-02-28  Qing Zhao  <qing.zhao@oracle.com>
  
! 	PR middle-end/107411
! 	PR middle-end/107411
! 	* gimplify.cc (gimple_add_init_for_auto_var): Use sprintf to replace
! 	xasprintf.
! 	* tree-ssa-uninit.cc (warn_uninit): Handle the case when the
! 	LHS varaible of a .DEFERRED_INIT call doesn't have a DECL_NAME.
  
! 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/108894
! 	* ubsan.cc (ubsan_expand_bounds_ifn): Emit index >= bound
! 	comparison rather than index > bound.
! 	* gimple-fold.cc (gimple_fold_call): Use tree_int_cst_lt
! 	rather than tree_int_cst_le for IFN_UBSAN_BOUND comparison.
! 	* doc/invoke.texi (-fsanitize=bounds): Document that whether
! 	flexible array member-like arrays are instrumented or not depends
! 	on -fstrict-flex-arrays* options of strict_flex_array attributes.
! 	(-fsanitize=bounds-strict): Document that flexible array members
! 	are not instrumented.
  
! 2023-02-27  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/108922
! 	Revert:
! 	* config/i386/i386.md (fmodxf3): Enable for flag_finite_math_only only.
! 	(fmod<mode>3): Ditto.
! 	(fpremxf4_i387): Ditto.
! 	(reminderxf3): Ditto.
! 	(reminder<mode>3): Ditto.
! 	(fprem1xf4_i387): Ditto.
  
! 2023-02-27  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* simplify-rtx.cc (simplify_unary_operation_1) <case FFS>: Avoid
! 	generating FFS with mismatched operand and result modes, by using
! 	an explicit SIGN_EXTEND/ZERO_EXTEND.
! 	<case POPCOUNT>: Likewise, for POPCOUNT of ZERO_EXTEND.
! 	<case PARITY>: Likewise, for PARITY of {ZERO,SIGN}_EXTEND.
  
! 2023-02-27  Patrick Palka  <ppalka@redhat.com>
  
! 	* hash-table.h (gt_pch_nx(hash_table<D>)): Remove static.
! 	* lra-int.h (lra_change_class): Likewise.
! 	* recog.h (which_op_alt): Likewise.
! 	* sel-sched-ir.h (sel_bb_empty_or_nop_p): Declare inline
! 	instead of static.
  
! 2023-02-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa-protos.h (xtensa_match_CLAMPS_imms_p):
! 	New prototype.
! 	* config/xtensa/xtensa.cc (xtensa_match_CLAMPS_imms_p):
! 	New function.
! 	* config/xtensa/xtensa.h (TARGET_CLAMPS): New macro definition.
! 	* config/xtensa/xtensa.md (*xtensa_clamps): New insn pattern.
  
! 2023-02-27  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	* config/xtensa/xtensa-dynconfig.cc (xtensa_get_config_v2)
! 	(xtensa_get_config_v3): New functions.
  
! 2023-02-27  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_abs<mode>): Fix typo in comment.
  
! 2023-02-27  Lulu Cheng  <chenglulu@loongson.cn>
  
! 	* config/host-linux.cc (TRY_EMPTY_VM_SPACE): Modify the value of
! 	the macro to 0x1000000000.
  
! 2023-02-25  Gaius Mulley  <gaiusmod2@gmail.com>
  
! 	PR modula2/108261
! 	* doc/gm2.texi (-fm2-pathname): New option documented.
! 	(-fm2-pathnameI): New option documented.
! 	(-fm2-prefix=): New option documented.
! 	(-fruntime-modules=): Update default module list.
  
! 2023-02-25  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	PR target/108919
! 	* config/xtensa/xtensa-protos.h
! 	(xtensa_prepare_expand_call): Rename to xtensa_expand_call.
! 	* config/xtensa/xtensa.cc (xtensa_prepare_expand_call): Rename
! 	to xtensa_expand_call.
! 	(xtensa_expand_call): Emit the call and add a clobber expression
! 	for the static chain to it in case of windowed ABI.
! 	* config/xtensa/xtensa.md (call, call_value, sibcall)
! 	(sibcall_value): Call xtensa_expand_call and complete expansion
! 	right after that call.
  
! 2023-02-24  Richard Biener  <rguenther@suse.de>
  
! 	* vec.h (vec<T, A, vl_embed>::m_vecdata): Remove.
! 	(vec<T, A, vl_embed>::m_vecpfx): Align as T to avoid
! 	changing alignment of vec<T, A, vl_embed> and simplifying
! 	address.
! 	(vec<T, A, vl_embed>::address): Compute as this + 1.
! 	(vec<T, A, vl_embed>::embedded_size): Use sizeof the
! 	vector instead of the offset of the m_vecdata member.
! 	(auto_vec<T, N>::m_data): Turn storage into
! 	uninitialized unsigned char.
! 	(auto_vec<T, N>::auto_vec): Allow allocation of one
! 	stack member.  Initialize m_vec in a special way to
! 	avoid later stringop overflow diagnostics.
! 	* vec.cc (test_auto_alias): New.
! 	(vec_cc_tests): Call it.
  
! 2023-02-24  Richard Biener  <rguenther@suse.de>
  
! 	* vec.h (vec<T, A, vl_embed>::lower_bound): Adjust to
! 	take a const reference to the object, use address to
! 	access data.
! 	(vec<T, A, vl_embed>::contains): Use address to access data.
! 	(vec<T, A, vl_embed>::operator[]): Use address instead of
! 	m_vecdata to access data.
! 	(vec<T, A, vl_embed>::iterate): Likewise.
! 	(vec<T, A, vl_embed>::copy): Likewise.
! 	(vec<T, A, vl_embed>::quick_push): Likewise.
! 	(vec<T, A, vl_embed>::pop): Likewise.
! 	(vec<T, A, vl_embed>::quick_insert): Likewise.
! 	(vec<T, A, vl_embed>::ordered_remove): Likewise.
! 	(vec<T, A, vl_embed>::unordered_remove): Likewise.
! 	(vec<T, A, vl_embed>::block_remove): Likewise.
! 	(vec<T, A, vl_heap>::address): Likewise.
  
! 2023-02-24  Martin Liska  <mliska@suse.cz>
  
! 	PR sanitizer/108834
! 	* asan.cc (asan_add_global): Use proper TU name for normal
! 	global variables (and aux_base_name for the artificial one).
  
! 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	* config/i386/i386-builtin.def: Update description of BDESC
! 	and BDESC_FIRST in file comment to include mask2.
  
! 2023-02-24  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-cores.def (FLAGS): Update comment.
  
! 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/108854
! 	* cgraphclones.cc (duplicate_thunk_for_node): If no parameter
! 	changes are needed, copy at least DECL_ARGUMENTS PARM_DECL
! 	nodes and adjust their DECL_CONTEXT.
  
! 2023-02-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/108881
! 	* config/i386/i386-builtin.def (__builtin_ia32_cvtne2ps2bf16_v16bf,
! 	__builtin_ia32_cvtne2ps2bf16_v16bf_mask,
! 	__builtin_ia32_cvtne2ps2bf16_v16bf_maskz,
! 	__builtin_ia32_cvtne2ps2bf16_v8bf,
! 	__builtin_ia32_cvtne2ps2bf16_v8bf_mask,
! 	__builtin_ia32_cvtne2ps2bf16_v8bf_maskz,
! 	__builtin_ia32_cvtneps2bf16_v8sf_mask,
! 	__builtin_ia32_cvtneps2bf16_v8sf_maskz,
! 	__builtin_ia32_cvtneps2bf16_v4sf_mask,
! 	__builtin_ia32_cvtneps2bf16_v4sf_maskz,
! 	__builtin_ia32_dpbf16ps_v8sf, __builtin_ia32_dpbf16ps_v8sf_mask,
! 	__builtin_ia32_dpbf16ps_v8sf_maskz, __builtin_ia32_dpbf16ps_v4sf,
! 	__builtin_ia32_dpbf16ps_v4sf_mask,
! 	__builtin_ia32_dpbf16ps_v4sf_maskz): Require also
! 	OPTION_MASK_ISA_AVX512VL.
  
! 2023-02-24  Sebastian Huber  <sebastian.huber@embedded-brains.de>
  
! 	* config/riscv/t-rtems: Keep only -mcmodel=medany 64-bit multilibs.
! 	Add non-compact 32-bit multilibs.
  
! 2023-02-24  Junxian Zhu  <zhujunxian@oss.cipunited.com>
  
! 	* config/mips/mips.md (*clo<mode>2): New pattern.
  
! 2023-02-24  Prachi Godbole  <prachi.godbole@imgtec.com>
  
! 	* config/mips/mips.h (machine_function): New variable
! 	use_hazard_barrier_return_p.
! 	* config/mips/mips.md (UNSPEC_JRHB): New unspec.
! 	(mips_hb_return_internal): New insn pattern.
! 	* config/mips/mips.cc (mips_attribute_table): Add attribute
! 	use_hazard_barrier_return.
! 	(mips_use_hazard_barrier_return_p): New static function.
! 	(mips_function_attr_inlinable_p): Likewise.
! 	(mips_compute_frame_info): Set use_hazard_barrier_return_p.
! 	Emit error for unsupported architecture choice.
! 	(mips_function_ok_for_sibcall, mips_can_use_return_insn):
! 	Return false for use_hazard_barrier_return.
! 	(mips_expand_epilogue): Emit hazard barrier return.
! 	* doc/extend.texi: Document use_hazard_barrier_return.
  
! 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	* config/xtensa/xtensa-dynconfig.cc (config.h, system.h)
! 	(coretypes.h, diagnostic.h, intl.h): Use "..." instead of <...>
! 	for the gcc-internal headers.
  
! 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	* config/xtensa/t-xtensa (xtensa-dynconfig.o): Use $(COMPILE)
! 	and $(POSTCOMPILE) instead of manual dependency listing.
! 	* config/xtensa/xtensa-dynconfig.c: Rename to ...
! 	* config/xtensa/xtensa-dynconfig.cc: ... this.
  
! 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/cfg.texi: Reorder index entries around @items.
! 	* doc/cpp.texi: Ditto.
! 	* doc/cppenv.texi: Ditto.
! 	* doc/cppopts.texi: Ditto.
! 	* doc/generic.texi: Ditto.
! 	* doc/install.texi: Ditto.
! 	* doc/extend.texi: Ditto.
! 	* doc/invoke.texi: Ditto.
! 	* doc/md.texi: Ditto.
! 	* doc/rtl.texi: Ditto.
! 	* doc/tm.texi.in: Ditto.
! 	* doc/trouble.texi: Ditto.
! 	* doc/tm.texi: Regenerate.
  
! 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md: New peephole2 pattern that eliminates
! 	the occurrence of general-purpose register used only once and for
! 	transferring intermediate value.
  
! 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.cc (machine_function): Add new member
! 	'eliminated_callee_saved_bmp'.
! 	(xtensa_can_eliminate_callee_saved_reg_p): New function to
! 	determine whether the register can be eliminated or not.
! 	(xtensa_expand_prologue): Add invoking the above function and
! 	elimination the use of callee-saved register by using its stack
! 	slot through the stack pointer (or the frame pointer if needed)
! 	directly.
! 	(xtensa_expand_prologue): Modify to not emit register restoration
! 	insn from its stack slot if the register is already eliminated.
  
! 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR translation/108890
! 	* config/xtensa/xtensa-dynconfig.c (xtensa_load_config): Drop _()s
! 	around fatal_error format strings.
  
! 2023-02-23  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-structalias.cc (handle_lhs_call): Do not
! 	re-create rhsc, only truncate it.
  
! 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/106258
! 	* ipa-prop.cc (try_make_edge_direct_virtual_call): Handle
! 	BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
  
! 2023-02-23  Richard Biener  <rguenther@suse.de>
  
! 	* tree-if-conv.cc (tree_if_conversion): Properly manage
! 	memory of refs and the contained data references.
  
! 2023-02-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108888
! 	* tree-if-conv.cc (if_convertible_stmt_p): Set PLF_2 on
! 	calls to predicate.
! 	(predicate_statements): Only predicate calls with PLF_2.
  
! 2023-02-23  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md
! 	(zero_cost_loop_start, zero_cost_loop_end, loop_end):
! 	Add missing "SI:" to PLUS RTXes.
  
! 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	PR target/108876
! 	* config/xtensa/xtensa.cc (xtensa_expand_epilogue):
! 	Emit (use (reg:SI A0_REG)) at the end in the sibling call
! 	(i.e. the same place as (return) in the normal call).
  
! 2023-02-23  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	Revert:
! 	2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	PR target/108876
! 	* config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
! 	for A0_REG.
! 	* config/xtensa/xtensa.md (sibcall, sibcall_internal)
! 	(sibcall_value, sibcall_value_internal): Add 'use' expression
! 	for A0_REG.
  
! 2023-02-23  Arsen Arsenović  <arsen@aarsen.me>
  
! 	* doc/cppdiropts.texi: Reorder @opindex commands to precede
! 	@items they relate to.
! 	* doc/cppopts.texi: Ditto.
! 	* doc/cppwarnopts.texi: Ditto.
! 	* doc/invoke.texi: Ditto.
! 	* doc/lto.texi: Ditto.
  
! 2023-02-22  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* internal-fn.cc (expand_MASK_CALL): New.
! 	* internal-fn.def (MASK_CALL): New.
! 	* internal-fn.h (expand_MASK_CALL): New prototype.
! 	* omp-simd-clone.cc (simd_clone_adjust_argument_types): Set vector_type
! 	for mask arguments also.
! 	* tree-if-conv.cc: Include cgraph.h.
! 	(if_convertible_stmt_p): Do if conversions for calls to SIMD calls.
! 	(predicate_statements): Convert functions to IFN_MASK_CALL.
! 	* tree-vect-loop.cc (vect_get_datarefs_in_loop): Recognise
! 	IFN_MASK_CALL as a SIMD function call.
! 	* tree-vect-stmts.cc (vectorizable_simd_clone_call): Handle
! 	IFN_MASK_CALL as an inbranch SIMD function call.
! 	Generate the mask vector arguments.
  
! 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (class reducop): New class.
! 	(class widen_reducop): Ditto.
! 	(class freducop): Ditto.
! 	(class widen_freducop): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vredsum): Add reduction support.
! 	(vredmaxu): Ditto.
! 	(vredmax): Ditto.
! 	(vredminu): Ditto.
! 	(vredmin): Ditto.
! 	(vredand): Ditto.
! 	(vredor): Ditto.
! 	(vredxor): Ditto.
! 	(vwredsum): Ditto.
! 	(vwredsumu): Ditto.
! 	(vfredusum): Ditto.
! 	(vfredosum): Ditto.
! 	(vfredmax): Ditto.
! 	(vfredmin): Ditto.
! 	(vfwredosum): Ditto.
! 	(vfwredusum): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct reduc_alu_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WI_OPS): New macro.
! 	(DEF_RVV_WU_OPS): Ditto.
! 	(DEF_RVV_WF_OPS): Ditto.
! 	(vint8mf8_t): Ditto.
! 	(vint8mf4_t): Ditto.
! 	(vint8mf2_t): Ditto.
! 	(vint8m1_t): Ditto.
! 	(vint8m2_t): Ditto.
! 	(vint8m4_t): Ditto.
! 	(vint8m8_t): Ditto.
! 	(vint16mf4_t): Ditto.
! 	(vint16mf2_t): Ditto.
! 	(vint16m1_t): Ditto.
! 	(vint16m2_t): Ditto.
! 	(vint16m4_t): Ditto.
! 	(vint16m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint32m1_t): Ditto.
! 	(vint32m2_t): Ditto.
! 	(vint32m4_t): Ditto.
! 	(vint32m8_t): Ditto.
! 	(vuint8mf8_t): Ditto.
! 	(vuint8mf4_t): Ditto.
! 	(vuint8mf2_t): Ditto.
! 	(vuint8m1_t): Ditto.
! 	(vuint8m2_t): Ditto.
! 	(vuint8m4_t): Ditto.
! 	(vuint8m8_t): Ditto.
! 	(vuint16mf4_t): Ditto.
! 	(vuint16mf2_t): Ditto.
! 	(vuint16m1_t): Ditto.
! 	(vuint16m2_t): Ditto.
! 	(vuint16m4_t): Ditto.
! 	(vuint16m8_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vfloat32mf2_t): Ditto.
! 	(vfloat32m1_t): Ditto.
! 	(vfloat32m2_t): Ditto.
! 	(vfloat32m4_t): Ditto.
! 	(vfloat32m8_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_WI_OPS): Ditto.
! 	(DEF_RVV_WU_OPS): Ditto.
! 	(DEF_RVV_WF_OPS): Ditto.
! 	(required_extensions_p): Add reduction support.
! 	(rvv_arg_type_info::get_base_vector_type): Ditto.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
! 	* config/riscv/riscv.md: Ditto.
! 	* config/riscv/vector-iterators.md (minu): Ditto.
! 	* config/riscv/vector.md (@pred_reduc_<reduc><mode><vlmul1>): New patern.
! 	(@pred_reduc_<reduc><mode><vlmul1_zve32>): Ditto.
! 	(@pred_widen_reduc_plus<v_su><mode><vwlmul1>): Ditto.
! 	(@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>):Ditto.
! 	(@pred_reduc_plus<order><mode><vlmul1>): Ditto.
! 	(@pred_reduc_plus<order><mode><vlmul1_zve32>): Ditto.
! 	(@pred_widen_reduc_plus<order><mode><vwlmul1>): Ditto.
  
! 2023-02-22  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/iterators.md: New iterator.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New class.
! 	(enum ternop_type): New enum.
! 	(class vmacc): New class.
! 	(class imac): Ditto.
! 	(class vnmsac): Ditto.
! 	(enum widen_ternop_type): New enum.
! 	(class vmadd): Ditto.
! 	(class vnmsub): Ditto.
! 	(class iwmac): Ditto.
! 	(class vwmacc): Ditto.
! 	(class vwmaccu): Ditto.
! 	(class vwmaccsu): Ditto.
! 	(class vwmaccus): Ditto.
! 	(class reverse_binop): Ditto.
! 	(class vfmacc): Ditto.
! 	(class vfnmsac): Ditto.
! 	(class vfmadd): Ditto.
! 	(class vfnmsub): Ditto.
! 	(class vfnmacc): Ditto.
! 	(class vfmsac): Ditto.
! 	(class vfnmadd): Ditto.
! 	(class vfmsub): Ditto.
! 	(class vfwmacc): Ditto.
! 	(class vfwnmacc): Ditto.
! 	(class vfwmsac): Ditto.
! 	(class vfwnmsac): Ditto.
! 	(class float_misc): Ditto.
! 	(class fcmp): Ditto.
! 	(class vfclass): Ditto.
! 	(class vfcvt_x): Ditto.
! 	(class vfcvt_rtz_x): Ditto.
! 	(class vfcvt_f): Ditto.
! 	(class vfwcvt_x): Ditto.
! 	(class vfwcvt_rtz_x): Ditto.
! 	(class vfwcvt_f): Ditto.
! 	(class vfncvt_x): Ditto.
! 	(class vfncvt_rtz_x): Ditto.
! 	(class vfncvt_f): Ditto.
! 	(class vfncvt_rod_f): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h:
! 	* config/riscv/riscv-vector-builtins-functions.def (vzext): Ditto.
! 	(vsext): Ditto.
! 	(vfadd): Ditto.
! 	(vfsub): Ditto.
! 	(vfrsub): Ditto.
! 	(vfwadd): Ditto.
! 	(vfwsub): Ditto.
! 	(vfmul): Ditto.
! 	(vfdiv): Ditto.
! 	(vfrdiv): Ditto.
! 	(vfwmul): Ditto.
! 	(vfmacc): Ditto.
! 	(vfnmsac): Ditto.
! 	(vfmadd): Ditto.
! 	(vfnmsub): Ditto.
! 	(vfnmacc): Ditto.
! 	(vfmsac): Ditto.
! 	(vfnmadd): Ditto.
! 	(vfmsub): Ditto.
! 	(vfwmacc): Ditto.
! 	(vfwnmacc): Ditto.
! 	(vfwmsac): Ditto.
! 	(vfwnmsac): Ditto.
! 	(vfsqrt): Ditto.
! 	(vfrsqrt7): Ditto.
! 	(vfrec7): Ditto.
! 	(vfmin): Ditto.
! 	(vfmax): Ditto.
! 	(vfsgnj): Ditto.
! 	(vfsgnjn): Ditto.
! 	(vfsgnjx): Ditto.
! 	(vfneg): Ditto.
! 	(vfabs): Ditto.
! 	(vmfeq): Ditto.
! 	(vmfne): Ditto.
! 	(vmflt): Ditto.
! 	(vmfle): Ditto.
! 	(vmfgt): Ditto.
! 	(vmfge): Ditto.
! 	(vfclass): Ditto.
! 	(vfmerge): Ditto.
! 	(vfmv_v): Ditto.
! 	(vfcvt_x): Ditto.
! 	(vfcvt_xu): Ditto.
! 	(vfcvt_rtz_x): Ditto.
! 	(vfcvt_rtz_xu): Ditto.
! 	(vfcvt_f): Ditto.
! 	(vfwcvt_x): Ditto.
! 	(vfwcvt_xu): Ditto.
! 	(vfwcvt_rtz_x): Ditto.
! 	(vfwcvt_rtz_xu): Ditto.
! 	(vfwcvt_f): Ditto.
! 	(vfncvt_x): Ditto.
! 	(vfncvt_xu): Ditto.
! 	(vfncvt_rtz_x): Ditto.
! 	(vfncvt_rtz_xu): Ditto.
! 	(vfncvt_f): Ditto.
! 	(vfncvt_rod_f): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
! 	(struct move_def): Ditto.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTF_OPS): New macro.
! 	(DEF_RVV_CONVERT_I_OPS): Ditto.
! 	(DEF_RVV_CONVERT_U_OPS): Ditto.
! 	(DEF_RVV_WCONVERT_I_OPS): Ditto.
! 	(DEF_RVV_WCONVERT_U_OPS): Ditto.
! 	(DEF_RVV_WCONVERT_F_OPS): Ditto.
! 	(vfloat64m1_t): Ditto.
! 	(vfloat64m2_t): Ditto.
! 	(vfloat64m4_t): Ditto.
! 	(vfloat64m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint32m1_t): Ditto.
! 	(vint32m2_t): Ditto.
! 	(vint32m4_t): Ditto.
! 	(vint32m8_t): Ditto.
! 	(vint64m1_t): Ditto.
! 	(vint64m2_t): Ditto.
! 	(vint64m4_t): Ditto.
! 	(vint64m8_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_CONVERT_I_OPS): Ditto.
! 	(DEF_RVV_CONVERT_U_OPS): Ditto.
! 	(DEF_RVV_WCONVERT_I_OPS): Ditto.
! 	(DEF_RVV_WCONVERT_U_OPS): Ditto.
! 	(DEF_RVV_WCONVERT_F_OPS): Ditto.
! 	(DEF_RVV_F_OPS): Ditto.
! 	(DEF_RVV_WEXTF_OPS): Ditto.
! 	(required_extensions_p): Adjust for floating-point support.
! 	(check_required_extensions): Ditto.
! 	(unsigned_base_type_p): Ditto.
! 	(get_mode_for_bitsize): Ditto.
! 	(rvv_arg_type_info::get_base_vector_type): Ditto.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	* config/riscv/riscv-vector-builtins.def (v_f): New define.
! 	(f): New define.
! 	(f_v): New define.
! 	(xu_v): New define.
! 	(f_w): New define.
! 	(xu_w): New define.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): New enum.
! 	(function_expander::arg_mode): New function.
! 	* config/riscv/vector-iterators.md (sof): New iterator.
! 	(vfrecp): Ditto.
! 	(copysign): Ditto.
! 	(n): Ditto.
! 	(msac): Ditto.
! 	(msub): Ditto.
! 	(fixuns_trunc): Ditto.
! 	(floatuns): Ditto.
! 	* config/riscv/vector.md (@pred_broadcast<mode>): New pattern.
! 	(@pred_<optab><mode>): Ditto.
! 	(@pred_<optab><mode>_scalar): Ditto.
! 	(@pred_<optab><mode>_reverse_scalar): Ditto.
! 	(@pred_<copysign><mode>): Ditto.
! 	(@pred_<copysign><mode>_scalar): Ditto.
! 	(@pred_mul_<optab><mode>): Ditto.
! 	(pred_mul_<optab><mode>_undef_merge): Ditto.
! 	(*pred_<madd_nmsub><mode>): Ditto.
! 	(*pred_<macc_nmsac><mode>): Ditto.
! 	(*pred_mul_<optab><mode>): Ditto.
! 	(@pred_mul_<optab><mode>_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
! 	(*pred_<madd_nmsub><mode>_scalar): Ditto.
! 	(*pred_<macc_nmsac><mode>_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_neg_mul_<optab><mode>): Ditto.
! 	(pred_neg_mul_<optab><mode>_undef_merge): Ditto.
! 	(*pred_<nmadd_msub><mode>): Ditto.
! 	(*pred_<nmacc_msac><mode>): Ditto.
! 	(*pred_neg_mul_<optab><mode>): Ditto.
! 	(@pred_neg_mul_<optab><mode>_scalar): Ditto.
! 	(*pred_neg_mul_<optab><mode>_undef_merge_scalar): Ditto.
! 	(*pred_<nmadd_msub><mode>_scalar): Ditto.
! 	(*pred_<nmacc_msac><mode>_scalar): Ditto.
! 	(*pred_neg_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_<misc_op><mode>): Ditto.
! 	(@pred_class<mode>): Ditto.
! 	(@pred_dual_widen_<optab><mode>): Ditto.
! 	(@pred_dual_widen_<optab><mode>_scalar): Ditto.
! 	(@pred_single_widen_<plus_minus:optab><mode>): Ditto.
! 	(@pred_single_widen_<plus_minus:optab><mode>_scalar): Ditto.
! 	(@pred_widen_mul_<optab><mode>): Ditto.
! 	(@pred_widen_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_widen_neg_mul_<optab><mode>): Ditto.
! 	(@pred_widen_neg_mul_<optab><mode>_scalar): Ditto.
! 	(@pred_cmp<mode>): Ditto.
! 	(*pred_cmp<mode>): Ditto.
! 	(*pred_cmp<mode>_narrow): Ditto.
! 	(@pred_cmp<mode>_scalar): Ditto.
! 	(*pred_cmp<mode>_scalar): Ditto.
! 	(*pred_cmp<mode>_scalar_narrow): Ditto.
! 	(@pred_eqne<mode>_scalar): Ditto.
! 	(*pred_eqne<mode>_scalar): Ditto.
! 	(*pred_eqne<mode>_scalar_narrow): Ditto.
! 	(@pred_merge<mode>_scalar): Ditto.
! 	(@pred_fcvt_x<v_su>_f<mode>): Ditto.
! 	(@pred_<fix_cvt><mode>): Ditto.
! 	(@pred_<float_cvt><mode>): Ditto.
! 	(@pred_widen_fcvt_x<v_su>_f<mode>): Ditto.
! 	(@pred_widen_<fix_cvt><mode>): Ditto.
! 	(@pred_widen_<float_cvt><mode>): Ditto.
! 	(@pred_extend<mode>): Ditto.
! 	(@pred_narrow_fcvt_x<v_su>_f<mode>): Ditto.
! 	(@pred_narrow_<fix_cvt><mode>): Ditto.
! 	(@pred_narrow_<float_cvt><mode>): Ditto.
! 	(@pred_trunc<mode>): Ditto.
! 	(@pred_rod_trunc<mode>): Ditto.
  
! 2023-02-22  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/106258
! 	* cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee,
! 	cgraph_update_edges_for_call_stmt_node, cgraph_node::verify_node):
! 	Handle BUILT_IN_UNREACHABLE_TRAP like BUILT_IN_UNREACHABLE.
! 	* cgraphclones.cc (cgraph_node::create_clone): Likewise.
  
! 2023-02-22  Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* common.opt (-Wcomplain-wrong-lang): New.
! 	* doc/invoke.texi (-Wno-complain-wrong-lang): Document it.
! 	* opts-common.cc (prune_options): Handle it.
! 	* opts-global.cc (complain_wrong_lang): Use it.
  
! 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR analyzer/108830
! 	* doc/invoke.texi: Document -fno-analyzer-suppress-followups.
  
! 2023-02-21  Max Filippov  <jcmvbkbc@gmail.com>
  
! 	PR target/108876
! 	* config/xtensa/xtensa.cc (xtensa_expand_epilogue): Drop emit_use
! 	for A0_REG.
! 	* config/xtensa/xtensa.md (sibcall, sibcall_internal)
! 	(sibcall_value, sibcall_value_internal): Add 'use' expression
! 	for A0_REG.
  
! 2023-02-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108691
! 	* tree-ssa-dce.cc (eliminate_unnecessary_stmts): Remove
! 	assert about calls_setjmp not becoming true when it was false.
  
! 2023-02-21  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108793
! 	* tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
! 	Use convert operands to niter_type when computing num.
  
! 2023-02-21  Richard Biener  <rguenther@suse.de>
  
! 	Revert:
! 	2023-02-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108691
! 	* tree-cfg.cc (notice_special_calls): When the CFG is built
! 	honor gimple_call_ctrl_altering_p.
! 	* cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
! 	temporarily if the call is not control-altering.
! 	* calls.cc (emit_call_1): Do not add REG_SETJMP if
! 	cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
  
! 2023-02-21  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.cc (xtensa_call_save_reg): Change to return
! 	true if register A0 (return address register) when -Og is specified.
  
! 2023-02-20  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/predicates.md
! 	(general_x64constmem_operand): New predicate.
! 	* config/i386/i386.md (*cmpqi_ext<mode>_1):
! 	Use nonimm_x64constmem_operand.
! 	(*cmpqi_ext<mode>_3): Use general_x64constmem_operand.
! 	(*addqi_ext<mode>_1): Ditto.
! 	(*testqi_ext<mode>_1): Ditto.
! 	(*andqi_ext<mode>_1): Ditto.
! 	(*andqi_ext<mode>_1_cc): Ditto.
! 	(*<any_or:code>qi_ext<mode>_1): Ditto.
! 	(*xorqi_ext<mode>_1_cc): Ditto.
  
! 2023-02-20  Jakub Jelinek  <jakub2redhat.com>
  
! 	PR target/108862
! 	* config/rs6000/rs6000.md (umaddditi4): Swap gen_maddlddi4 with
! 	gen_umadddi4_highpart{,_le}.
  
! 2023-02-20  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv.md (prefetch): Use r instead of p for the
! 	address operand.
! 	(riscv_prefetchi_<mode>): Ditto.
  
! 2023-02-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108816
! 	* tree-vect-loop-manip.cc (vect_loop_versioning): Adjust
! 	versioning condition split prerequesite, assert required
! 	invariant.
  
! 2023-02-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108825
! 	* tree-ssa-loop-manip.cc (verify_loop_closed_ssa): For
! 	loop-local verfication only verify there's no pending SSA
! 	update.
  
! 2023-02-20  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108819
! 	* tree-ssa-loop-niter.cc (number_of_iterations_cltz): Check
! 	we have an SSA name as iv_2 as expected.
  
! 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108819
! 	* tree-ssa-reassoc.cc (update_ops): Fold new stmt in place.
  
! 2023-02-18  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/108832
! 	* config/i386/i386-protos.h (ix86_replace_reg_with_reg): Declare.
! 	* config/i386/i386-expand.cc (ix86_replace_reg_with_reg): New
! 	function.
! 	* config/i386/i386.md: Replace replace_rtx calls in all peephole2s
! 	with ix86_replace_reg_with_reg.
  
! 2023-02-18  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/invoke.texi (AVR Options): Update link to AVR-LibC.
  
! 2023-02-18  Xi Ruoyao  <xry111@xry111.site>
  
! 	* config.gcc (triplet_abi): Set its value based on $with_abi,
! 	instead of $target.
! 	(la_canonical_triplet): Set it after $triplet_abi is set
! 	correctly.
! 	* config/loongarch/t-linux (MULTILIB_OSDIRNAMES): Make the
! 	multiarch tuple for lp64d "loongarch64-linux-gnu" (without
! 	"f64" suffix).
  
! 2023-02-18  Andrew Pinski  <apinski@marvell.com>
  
! 	* match.pd: Remove #if GIMPLE around the
! 	"1 - a" pattern
  
! 2023-02-18  Andrew Pinski  <apinski@marvell.com>
  
! 	* value-query.h (get_range_query): Return the global ranges
! 	for a nullptr func.
  
! 2023-02-17  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
! 	* doc/invoke.texi (@item -Wall): Fix typo in
! 	-Wuse-after-free.
  
! 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/108831
! 	* config/i386/predicates.md
! 	(nonimm_x64constmem_operand): New predicate.
! 	* config/i386/i386.md (*addqi_ext<mode>_0): New insn pattern.
! 	(*subqi_ext<mode>_0): Ditto.
! 	(*andqi_ext<mode>_0): Ditto.
! 	(*<any_or:code>qi_ext<mode>_0): Ditto.
  
! 2023-02-17  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/108805
! 	* simplify-rtx.cc (simplify_context::simplify_subreg): Use
! 	int_outermode instead of GET_MODE (tem) to prevent
! 	VOIDmode from entering simplify_gen_subreg.
  
! 2023-02-17  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108821
! 	* tree-ssa-loop-im.cc (sm_seq_valid_bb): We can also not
! 	move volatile accesses.
  
! 2023-02-17  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa.cc (ssa_undefined_value_p): Assert we are not
! 	called on virtual operands.
! 	* tree-ssa-sccvn.cc (vn_phi_lookup): Guard
! 	ssa_undefined_value_p calls.
! 	(vn_phi_insert): Likewise.
! 	(set_ssa_val_to): Likewise.
! 	(visit_phi): Avoid extra work with equivalences for
! 	virtual operand PHIs.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (class mask_logic): New
! 	class.
! 	(class mask_nlogic): Ditto.
! 	(class mask_notlogic): Ditto.
! 	(class vmmv): Ditto.
! 	(class vmclr): Ditto.
! 	(class vmset): Ditto.
! 	(class vmnot): Ditto.
! 	(class vcpop): Ditto.
! 	(class vfirst): Ditto.
! 	(class mask_misc): Ditto.
! 	(class viota): Ditto.
! 	(class vid): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmand): Ditto.
! 	(vmnand): Ditto.
! 	(vmandn): Ditto.
! 	(vmxor): Ditto.
! 	(vmor): Ditto.
! 	(vmnor): Ditto.
! 	(vmorn): Ditto.
! 	(vmxnor): Ditto.
! 	(vmmv): Ditto.
! 	(vmclr): Ditto.
! 	(vmset): Ditto.
! 	(vmnot): Ditto.
! 	(vcpop): Ditto.
! 	(vfirst): Ditto.
! 	(vmsbf): Ditto.
! 	(vmsif): Ditto.
! 	(vmsof): Ditto.
! 	(viota): Ditto.
! 	(vid): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Ditto.
! 	(struct mask_alu_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc: Ditto.
! 	* config/riscv/riscv-vsetvl.cc (pass_vsetvl::cleanup_insns): Fix bug
! 	for dest it scalar RVV intrinsics.
! 	* config/riscv/vector-iterators.md (sof): New iterator.
! 	* config/riscv/vector.md (@pred_<optab>n<mode>): New pattern.
! 	(@pred_<optab>not<mode>): New pattern.
! 	(@pred_popcount<VB:mode><P:mode>): New pattern.
! 	(@pred_ffs<VB:mode><P:mode>): New pattern.
! 	(@pred_<misc_op><mode>): New pattern.
! 	(@pred_iota<mode>): New pattern.
! 	(@pred_series<mode>): New pattern.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-functions.def (vadc): Rename.
! 	(vsbc): Ditto.
! 	(vmerge): Ditto.
! 	(vmv_v): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc: Ditto.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-protos.h (sew64_scalar_helper): New function.
! 	* config/riscv/riscv-v.cc (has_vi_variant_p): Adjust.
! 	(sew64_scalar_helper): New function.
! 	* config/riscv/vector.md: Normalization.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-functions.def (vsetvlmax): Rearrange.
! 	(vsm): Ditto.
! 	(vsse): Ditto.
! 	(vsoxei64): Ditto.
! 	(vsub): Ditto.
! 	(vand): Ditto.
! 	(vor): Ditto.
! 	(vxor): Ditto.
! 	(vsll): Ditto.
! 	(vsra): Ditto.
! 	(vsrl): Ditto.
! 	(vmin): Ditto.
! 	(vmax): Ditto.
! 	(vminu): Ditto.
! 	(vmaxu): Ditto.
! 	(vmul): Ditto.
! 	(vmulh): Ditto.
! 	(vmulhu): Ditto.
! 	(vmulhsu): Ditto.
! 	(vdiv): Ditto.
! 	(vrem): Ditto.
! 	(vdivu): Ditto.
! 	(vremu): Ditto.
! 	(vnot): Ditto.
! 	(vsext): Ditto.
! 	(vzext): Ditto.
! 	(vwadd): Ditto.
! 	(vwsub): Ditto.
! 	(vwmul): Ditto.
! 	(vwmulu): Ditto.
! 	(vwmulsu): Ditto.
! 	(vwaddu): Ditto.
! 	(vwsubu): Ditto.
! 	(vsbc): Ditto.
! 	(vmsbc): Ditto.
! 	(vnsra): Ditto.
! 	(vmerge): Ditto.
! 	(vmv_v): Ditto.
! 	(vmsne): Ditto.
! 	(vmslt): Ditto.
! 	(vmsgt): Ditto.
! 	(vmsle): Ditto.
! 	(vmsge): Ditto.
! 	(vmsltu): Ditto.
! 	(vmsgtu): Ditto.
! 	(vmsleu): Ditto.
! 	(vmsgeu): Ditto.
! 	(vnmsac): Ditto.
! 	(vmadd): Ditto.
! 	(vnmsub): Ditto.
! 	(vwmacc): Ditto.
! 	(vsadd): Ditto.
! 	(vssub): Ditto.
! 	(vssubu): Ditto.
! 	(vaadd): Ditto.
! 	(vasub): Ditto.
! 	(vasubu): Ditto.
! 	(vsmul): Ditto.
! 	(vssra): Ditto.
! 	(vssrl): Ditto.
! 	(vnclip): Ditto.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md (@pred_<optab><mode>): Rearrange.
! 	(@pred_<optab><mode>_scalar): Ditto.
! 	(*pred_<optab><mode>_scalar): Ditto.
! 	(*pred_<optab><mode>_extended_scalar): Ditto.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-protos.h (riscv_run_selftests): Remove 'extern'.
! 	(init_builtins): Ditto.
! 	(mangle_builtin_type): Ditto.
! 	(verify_type_context): Ditto.
! 	(handle_pragma_vector):  Ditto.
! 	(builtin_decl): Ditto.
! 	(expand_builtin): Ditto.
! 	(const_vec_all_same_in_range_p): Ditto.
! 	(legitimize_move): Ditto.
! 	(emit_vlmax_op): Ditto.
! 	(emit_nonvlmax_op): Ditto.
! 	(get_vlmul): Ditto.
! 	(get_ratio): Ditto.
! 	(get_ta): Ditto.
! 	(get_ma): Ditto.
! 	(get_avl_type): Ditto.
! 	(calculate_ratio): Ditto.
! 	(enum vlmul_type): Ditto.
! 	(simm5_p): Ditto.
! 	(neg_simm5_p): Ditto.
! 	(has_vi_variant_p): Ditto.
  
! 2023-02-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-protos.h (simm32_p): Remove.
! 	* config/riscv/riscv-v.cc (simm32_p): Ditto.
! 	* config/riscv/vector.md: Use immediate_operand
! 	instead of riscv_vector::simm32_p.
  
! 2023-02-16  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/invoke.texi (Optimize Options): Reword the explanation
! 	getting minimal, maximal and default values of a parameter.
  
! 2023-02-16  Patrick Palka  <ppalka@redhat.com>
  
! 	* addresses.h: Mechanically drop 'static' from 'static inline'
! 	functions via s/^static inline/inline/g.
! 	* asan.h: Likewise.
! 	* attribs.h: Likewise.
! 	* basic-block.h: Likewise.
! 	* bitmap.h: Likewise.
! 	* cfghooks.h: Likewise.
! 	* cfgloop.h: Likewise.
! 	* cgraph.h: Likewise.
! 	* cselib.h: Likewise.
! 	* data-streamer.h: Likewise.
! 	* debug.h: Likewise.
! 	* df.h: Likewise.
! 	* diagnostic.h: Likewise.
! 	* dominance.h: Likewise.
! 	* dumpfile.h: Likewise.
! 	* emit-rtl.h: Likewise.
! 	* except.h: Likewise.
! 	* expmed.h: Likewise.
! 	* expr.h: Likewise.
! 	* fixed-value.h: Likewise.
! 	* gengtype.h: Likewise.
! 	* gimple-expr.h: Likewise.
! 	* gimple-iterator.h: Likewise.
! 	* gimple-predict.h: Likewise.
! 	* gimple-range-fold.h: Likewise.
! 	* gimple-ssa.h: Likewise.
! 	* gimple.h: Likewise.
! 	* graphite.h: Likewise.
! 	* hard-reg-set.h: Likewise.
! 	* hash-map.h: Likewise.
! 	* hash-set.h: Likewise.
! 	* hash-table.h: Likewise.
! 	* hwint.h: Likewise.
! 	* input.h: Likewise.
! 	* insn-addr.h: Likewise.
! 	* internal-fn.h: Likewise.
! 	* ipa-fnsummary.h: Likewise.
! 	* ipa-icf-gimple.h: Likewise.
! 	* ipa-inline.h: Likewise.
! 	* ipa-modref.h: Likewise.
! 	* ipa-prop.h: Likewise.
! 	* ira-int.h: Likewise.
! 	* ira.h: Likewise.
! 	* lra-int.h: Likewise.
! 	* lra.h: Likewise.
! 	* lto-streamer.h: Likewise.
! 	* memmodel.h: Likewise.
! 	* omp-general.h: Likewise.
! 	* optabs-query.h: Likewise.
! 	* optabs.h: Likewise.
! 	* plugin.h: Likewise.
! 	* pretty-print.h: Likewise.
! 	* range.h: Likewise.
! 	* read-md.h: Likewise.
! 	* recog.h: Likewise.
! 	* regs.h: Likewise.
! 	* rtl-iter.h: Likewise.
! 	* rtl.h: Likewise.
! 	* sbitmap.h: Likewise.
! 	* sched-int.h: Likewise.
! 	* sel-sched-ir.h: Likewise.
! 	* sese.h: Likewise.
! 	* sparseset.h: Likewise.
! 	* ssa-iterators.h: Likewise.
! 	* system.h: Likewise.
! 	* target-globals.h: Likewise.
! 	* target.h: Likewise.
! 	* timevar.h: Likewise.
! 	* tree-chrec.h: Likewise.
! 	* tree-data-ref.h: Likewise.
! 	* tree-iterator.h: Likewise.
! 	* tree-outof-ssa.h: Likewise.
! 	* tree-phinodes.h: Likewise.
! 	* tree-scalar-evolution.h: Likewise.
! 	* tree-sra.h: Likewise.
! 	* tree-ssa-alias.h: Likewise.
! 	* tree-ssa-live.h: Likewise.
! 	* tree-ssa-loop-manip.h: Likewise.
! 	* tree-ssa-loop.h: Likewise.
! 	* tree-ssa-operands.h: Likewise.
! 	* tree-ssa-propagate.h: Likewise.
! 	* tree-ssa-sccvn.h: Likewise.
! 	* tree-ssa.h: Likewise.
! 	* tree-ssanames.h: Likewise.
! 	* tree-streamer.h: Likewise.
! 	* tree-switch-conversion.h: Likewise.
! 	* tree-vectorizer.h: Likewise.
! 	* tree.h: Likewise.
! 	* wide-int.h: Likewise.
  
! 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108657
! 	* tree-ssa-dse.cc (initialize_ao_ref_for_dse): If lhs of stmt
! 	exists and is not a SSA_NAME, call ao_ref_init even if the stmt
! 	is a call to internal or builtin function.
  
! 2023-02-16  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/invoke.texi (C++ Dialect Options): Suggest adding a
! 	using-declaration to unhide functions.
  
! 2023-02-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108783
! 	* tree-ssa-reassoc.cc (eliminate_redundant_comparison): If lcode
! 	is equal to TREE_CODE (t), op1 to newop1 and op2 to newop2, set
! 	t to curr->op.  Otherwise, punt if either newop1 or newop2 are
! 	SSA_NAME_OCCURS_IN_ABNORMAL_PHI SSA_NAMEs.
  
! 2023-02-16  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108791
! 	* tree-ssa-forwprop.cc (optimize_vector_load): Build
! 	the ADDR_EXPR of a TARGET_MEM_REF using a more meaningful
! 	type.
  
! 2023-02-15  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR target/90458
! 	* config/i386/i386.cc (ix86_compute_frame_layout): Disable the
! 	effects of -fstack-clash-protection for TARGET_STACK_PROBE.
! 	(ix86_expand_prologue): Likewise.
  
! 2023-02-15  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
  
! 	* config/bpf/bpf.cc (bpf_option_override): Fix doubled space.
  
! 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (*cmpqi_ext<mode>_1): Use
! 	int248_register_operand predicate in zero_extract sub-RTX.
! 	(*cmpqi_ext<mode>_2): Ditto.
! 	(*cmpqi_ext<mode>_3): Ditto.
! 	(*cmpqi_ext<mode>_4): Ditto.
! 	(*extzvqi_mem_rex64): Ditto.
! 	(*extzvqi): Ditto.
! 	(*insvqi_1_mem_rex64): Ditto.
! 	(@insv<mode>_1): Ditto.
! 	(*insvqi_1): Ditto.
! 	(*insvqi_2): Ditto.
! 	(*insvqi_3): Ditto.
! 	(*extendqi<SWI24:mode>_ext_1): Ditto.
! 	(*addqi_ext<mode>_1): Ditto.
! 	(*addqi_ext<mode>_2): Ditto.
! 	(*subqi_ext<mode>_2): Ditto.
! 	(*testqi_ext<mode>_1): Ditto.
! 	(*testqi_ext<mode>_2): Ditto.
! 	(*andqi_ext<mode>_1): Ditto.
! 	(*andqi_ext<mode>_1_cc): Ditto.
! 	(*andqi_ext<mode>_2): Ditto.
! 	(*<any_or:code>qi_ext<mode>_1): Ditto.
! 	(*<any_or:code>qi_ext<mode>_2): Ditto.
! 	(*xorqi_ext<mode>_1_cc): Ditto.
! 	(*negqi_ext<mode>_2): Ditto.
! 	(*ashlqi_ext<mode>_2): Ditto.
! 	(*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
  
! 2023-02-15  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/predicates.md (int248_register_operand):
! 	Rename from extr_register_operand.
! 	* config/i386/i386.md (*extv<mode>): Update for renamed predicate.
! 	(*extzx<mode>): Ditto.
! 	(*ashl<dwi>3_doubleword_mask): Use int248_register_operand predicate.
! 	(*ashl<mode>3_mask): Ditto.
! 	(*<any_shiftrt:insn><mode>3_mask): Ditto.
! 	(*<any_shiftrt:insn><dwi>3_doubleword_mask): Ditto.
! 	(*<any_rotate:insn><mode>3_mask): Ditto.
! 	(*<btsc><mode>_mask): Ditto.
! 	(*btr<mode>_mask): Ditto.
! 	(*jcc_bt<mode>_mask_1): Ditto.
  
! 2023-02-15  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/26854
! 	* df-core.cc (df_worklist_propagate_forward): Put later
! 	blocks on worklist and only earlier blocks on pending.
! 	(df_worklist_propagate_backward): Likewise.
! 	(df_worklist_dataflow_doublequeue): Change the iteration
! 	to process new blocks in the same iteration if that
! 	maintains the iteration order.
  
! 2023-02-15  Marek Polacek  <polacek@redhat.com>
  
! 	PR middle-end/106080
! 	* gimple-ssa-warn-access.cc (is_auto_decl): Remove.  Use auto_var_p
! 	instead.
  
! 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/predicates.md: Refine codes.
! 	* config/riscv/riscv-protos.h (RVV_VUNDEF): New macro.
! 	* config/riscv/riscv-v.cc: Refine codes.
! 	* config/riscv/riscv-vector-builtins-bases.cc (enum ternop_type): New
! 	enum.
! 	(class imac): New class.
! 	(enum widen_ternop_type): New enum.
! 	(class iwmac): New class.
! 	(BASE): New class.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmacc): Ditto.
! 	(vnmsac): Ditto.
! 	(vmadd): Ditto.
! 	(vnmsub): Ditto.
! 	(vwmacc): Ditto.
! 	(vwmaccu): Ditto.
! 	(vwmaccsu): Ditto.
! 	(vwmaccus): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_builder::apply_predication): Adjust for multiply-add support.
! 	(function_expander::add_vundef_operand): Refine codes.
! 	(function_expander::use_ternop_insn): New function.
! 	(function_expander::use_widen_ternop_insn): Ditto.
! 	* config/riscv/riscv-vector-builtins.h: New function.
! 	* config/riscv/vector.md (@pred_mul_<optab><mode>): New pattern.
! 	(pred_mul_<optab><mode>_undef_merge): Ditto.
! 	(*pred_<madd_nmsub><mode>): Ditto.
! 	(*pred_<macc_nmsac><mode>): Ditto.
! 	(*pred_mul_<optab><mode>): Ditto.
! 	(@pred_mul_<optab><mode>_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_undef_merge_scalar): Ditto.
! 	(*pred_<madd_nmsub><mode>_scalar): Ditto.
! 	(*pred_<macc_nmsac><mode>_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_undef_merge_extended_scalar): Ditto.
! 	(*pred_<madd_nmsub><mode>_extended_scalar): Ditto.
! 	(*pred_<macc_nmsac><mode>_extended_scalar): Ditto.
! 	(*pred_mul_<optab><mode>_extended_scalar): Ditto.
! 	(@pred_widen_mul_plus<su><mode>): Ditto.
! 	(@pred_widen_mul_plus<su><mode>_scalar): Ditto.
! 	(@pred_widen_mul_plussu<mode>): Ditto.
! 	(@pred_widen_mul_plussu<mode>_scalar): Ditto.
! 	(@pred_widen_mul_plusus<mode>_scalar): Ditto.
  
! 2023-02-15  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/predicates.md (vector_mask_operand): Refine the codes.
! 	(vector_all_trues_mask_operand): New predicate.
! 	(vector_undef_operand): New predicate.
! 	(ltge_operator): New predicate.
! 	(comparison_except_ltge_operator): New predicate.
! 	(comparison_except_eqge_operator): New predicate.
! 	(ge_operator): New predicate.
! 	* config/riscv/riscv-v.cc (has_vi_variant_p): Add compare support.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class icmp): New class.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmseq): Ditto.
! 	(vmsne): Ditto.
! 	(vmslt): Ditto.
! 	(vmsgt): Ditto.
! 	(vmsle): Ditto.
! 	(vmsge): Ditto.
! 	(vmsltu): Ditto.
! 	(vmsgtu): Ditto.
! 	(vmsleu): Ditto.
! 	(vmsgeu): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc
! 	(struct return_mask_def): Adjust for compare support.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::use_compare_insn): New function.
! 	* config/riscv/riscv-vector-builtins.h
! 	(function_expander::add_integer_operand): Ditto.
! 	* config/riscv/riscv.cc (riscv_print_operand): Add compare support.
! 	* config/riscv/riscv.md: Add vector min/max attributes.
! 	* config/riscv/vector-iterators.md (xnor): New iterator.
! 	* config/riscv/vector.md (@pred_cmp<mode>): New pattern.
! 	(*pred_cmp<mode>): Ditto.
! 	(*pred_cmp<mode>_narrow): Ditto.
! 	(@pred_ltge<mode>): Ditto.
! 	(*pred_ltge<mode>): Ditto.
! 	(*pred_ltge<mode>_narrow): Ditto.
! 	(@pred_cmp<mode>_scalar): Ditto.
! 	(*pred_cmp<mode>_scalar): Ditto.
! 	(*pred_cmp<mode>_scalar_narrow): Ditto.
! 	(@pred_eqne<mode>_scalar): Ditto.
! 	(*pred_eqne<mode>_scalar): Ditto.
! 	(*pred_eqne<mode>_scalar_narrow): Ditto.
! 	(*pred_cmp<mode>_extended_scalar): Ditto.
! 	(*pred_cmp<mode>_extended_scalar_narrow): Ditto.
! 	(*pred_eqne<mode>_extended_scalar): Ditto.
! 	(*pred_eqne<mode>_extended_scalar_narrow): Ditto.
! 	(@pred_ge<mode>_scalar): Ditto.
! 	(@pred_<optab><mode>): Ditto.
! 	(@pred_n<optab><mode>): Ditto.
! 	(@pred_<optab>n<mode>): Ditto.
! 	(@pred_not<mode>): Ditto.
  
! 2023-02-15  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/108679
! 	* ipa-sra.cc (push_param_adjustments_for_index): Do not omit
! 	creation of non-scalar replacements even if IPA-CP knows their
! 	contents.
  
! 2023-02-15  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/108787
! 	PR target/103109
! 	* config/rs6000/rs6000.md (<u>maddditi4): Change into umaddditi4 only
! 	expander, change operand 3 to be TImode, emit maddlddi4 and
! 	umadddi4_highpart{,_le} with its low half and finally add the high
! 	half to the result.
  
! 2023-02-15  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document --param=asan-kernel-mem-intrinsic-prefix.
  
! 2023-02-15  Richard Biener  <rguenther@suse.de>
  
! 	* sanopt.cc (sanitize_asan_mark_unpoison): Use bitmap
! 	for with_poison and alias worklist to it.
! 	(sanitize_asan_mark_poison): Likewise.
  
! 2023-02-15  Richard Biener  <rguenther@suse.de>
  
! 	PR target/108738
! 	* config/i386/i386-features.cc (scalar_chain::add_to_queue):
! 	Combine bitmap test and set.
! 	(scalar_chain::add_insn): Likewise.
! 	(scalar_chain::analyze_register_chain): Remove redundant
! 	attempt to add to queue and instead strengthen assert.
! 	Sink common attempts to mark the def dual-mode.
! 	(scalar_chain::add_to_queue): Remove redundant insn bitmap
! 	check.
  
! 2023-02-15  Richard Biener  <rguenther@suse.de>
  
! 	PR target/108738
! 	* config/i386/i386-features.cc (convert_scalars_to_vector):
! 	Switch candidates bitmaps to tree view before building the chains.
  
! 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* reload1.cc (gen_reload): Correct rtx parameter for fatal_insn
! 	"failure trying to reload" call.
  
! 2023-02-15  Hans-Peter Nilsson  <hp@axis.com>
  
! 	* gdbinit.in (phrs): New command.
! 	* sel-sched-dump.cc (debug_hard_reg_set): Remove debug-function.
! 	* ira-color.cc (debug_hard_reg_set): New, calling print_hard_reg_set.
  
! 2023-02-14  David Faust  <david.faust@oracle.com>
  
! 	PR target/108790
! 	* config/bpf/constraints.md (q): New memory constraint.
! 	* config/bpf/bpf.md (zero_extendhidi2): Use it here.
! 	(zero_extendqidi2): Likewise.
! 	(zero_extendsidi2): Likewise.
! 	(*mov<MM:mode>): Likewise.
  
! 2023-02-14  Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/108355
! 	PR tree-optimization/96921
! 	* match.pd: Add pattern for "1 - bool_val".
  
! 2023-02-14  Richard Biener  <rguenther@suse.de>
  
! 	* tree-ssa-sccvn.cc (vn_phi_compute_hash): Key skipping
! 	basic block index hashing on the availability of ->cclhs.
! 	(vn_phi_eq): Avoid re-doing sanity checks for CSE but
! 	rely on ->cclhs availability.
! 	(vn_phi_lookup): Set ->cclhs only when we are eventually
! 	going to CSE the PHI.
! 	(vn_phi_insert): Likewise.
  
! 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gimplify.cc (gimplify_save_expr): Add missing guard.
  
! 2023-02-14  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108782
! 	* tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
! 	Make sure we're not vectorizing an inner loop.
  
! 2023-02-14  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/108777
! 	* params.opt (-param=asan-kernel-mem-intrinsic-prefix=): New param.
! 	* asan.h (asan_memfn_rtl): Declare.
! 	* asan.cc (asan_memfn_rtls): New variable.
! 	(asan_memfn_rtl): New function.
! 	* builtins.cc (expand_builtin): If
! 	param_asan_kernel_mem_intrinsic_prefix and function is
! 	kernel-{,hw}address sanitized, emit calls to
! 	__{,hw}asan_{memcpy,memmove,memset} rather than
! 	{memcpy,memmove,memset}.  Use sanitize_flags_p (SANITIZE_ADDRESS)
! 	instead of flag_sanitize & SANITIZE_ADDRESS to check if
! 	asan_intercepted_p functions shouldn't be expanded inline.
  
! 2023-02-14  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/96373
! 	* tree-vect-stmts.cc (vectorizable_operation): Predicate trapping
! 	operations on the loop mask.  Reject partial vectors if this isn't
! 	possible.
  
! 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/108681
! 	* lra-spills.cc (lra_final_code_change): Extend subreg replacement
! 	code to handle bare uses and clobbers.
  
! 2023-02-13  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira.cc (ira_update_equiv_info_by_shuffle_insn): Clear equiv
! 	caller_save_p flag when clearing defined_p flag.
! 	(setup_reg_equiv): Ditto.
! 	* lra-constraints.cc (lra_constraints): Ditto.
  
! 2023-02-13  Uroš Bizjak  <ubizjak@gmail.com>
  
! 	PR target/108516
! 	* config/i386/predicates.md (extr_register_operand):
! 	New special predicate.
! 	* config/i386/i386.md (*extv<mode>): Use extr_register_operand
! 	as operand 1 predicate.
! 	(*exzv<mode>): Ditto.
! 	(*extendqi<SWI24:mode>_ext_1): New insn pattern.
  
! 2023-02-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/28614
! 	* tree-ssa-sccvn.cc (can_track_predicate_on_edge): Avoid
! 	walking all edges in most cases.
! 	(vn_nary_op_insert_pieces_predicated): Avoid repeated
! 	calls to can_track_predicate_on_edge unless checking is
! 	enabled.
! 	(process_bb): Instead call it once here for each edge
! 	we register possibly multiple predicates on.
  
! 2023-02-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108691
! 	* tree-cfg.cc (notice_special_calls): When the CFG is built
! 	honor gimple_call_ctrl_altering_p.
! 	* cfgexpand.cc (expand_call_stmt): Clear cfun->calls_setjmp
! 	temporarily if the call is not control-altering.
! 	* calls.cc (emit_call_1): Do not add REG_SETJMP if
! 	cfun->calls_setjmp is not set.  Do not alter cfun->calls_setjmp.
  
! 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	PR target/108102
! 	* config/s390/s390.cc (s390_bb_fallthru_entry_likely): Remove.
! 	(struct s390_sched_state): Initialise to zero.
! 	(s390_sched_variable_issue): For better debuggability also emit
! 	the current side.
! 	(s390_sched_init): Unconditionally reset scheduler state.
  
! 2023-02-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* ifcvt.h (noce_if_info::cond_inverted): New field.
! 	* ifcvt.cc (cond_move_convert_if_block): Swap the then and else
! 	values when cond_inverted is true.
! 	(noce_find_if_block): Allow the condition to be inverted when
! 	handling conditional moves.
  
! 2023-02-13  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	* config/s390/predicates.md (execute_operation): Use
! 	constrain_operands instead of extract_constrain_insn in order to
! 	determine wheter there exists a valid alternative.
  
! 2023-02-13  Claudiu Zissulescu  <claziss@gmail.com>
  
! 	* common/config/arc/arc-common.cc (arc_option_optimization_table):
! 	Remove millicode from list.
  
! 2023-02-13  Martin Liska  <mliska@suse.cz>
  
! 	* doc/invoke.texi: Document ira-simple-lra-insn-threshold.
  
! 2023-02-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/106722
! 	* tree-ssa-dce.cc (mark_last_stmt_necessary): Return
! 	whether we marked a stmt.
! 	(mark_control_dependent_edges_necessary): When
! 	mark_last_stmt_necessary didn't mark any stmt make sure
! 	to mark its control dependent edges.
! 	(propagate_necessity): Likewise.
  
! 2023-02-13  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv.h (RISCV_DWARF_VLENB): New.
! 	(DWARF_FRAME_REGISTERS): New.
! 	(DWARF_REG_TO_UNWIND_COLUMN): New.
  
! 2023-02-12  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/sourcebuild.texi: Remove (broken) direct reference to
! 	"The GNU configure and build system".
  
! 2023-02-12  Jin Ma  <jinma@linux.alibaba.com>
  
! 	* config/riscv/riscv.cc (riscv_adjust_libcall_cfi_prologue): Change
! 	gen_add3_insn to gen_rtx_SET.
! 	(riscv_adjust_libcall_cfi_epilogue): Likewise.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (class sat_op): New class.
! 	(class vnclip): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vaadd): Ditto.
! 	(vasub): Ditto.
! 	(vaaddu): Ditto.
! 	(vasubu): Ditto.
! 	(vsmul): Ditto.
! 	(vssra): Ditto.
! 	(vssrl): Ditto.
! 	(vnclipu): Ditto.
! 	(vnclip): Ditto.
! 	* config/riscv/vector-iterators.md (su): Add instruction.
! 	(aadd): Ditto.
! 	(vaalu): Ditto.
! 	* config/riscv/vector.md (@pred_<sat_op><mode>): New pattern.
! 	(@pred_<sat_op><mode>_scalar): Ditto.
! 	(*pred_<sat_op><mode>_scalar): Ditto.
! 	(*pred_<sat_op><mode>_extended_scalar): Ditto.
! 	(@pred_narrow_clip<v_su><mode>): Ditto.
! 	(@pred_narrow_clip<v_su><mode>_scalar): Ditto.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/constraints.md (Wbr): Remove unused constraint.
! 	* config/riscv/predicates.md: Fix move operand predicate.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vnshift): New class.
! 	(class vncvt_x): Ditto.
! 	(class vmerge): Ditto.
! 	(class vmv_v): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vsra): Ditto.
! 	(vsrl): Ditto.
! 	(vnsrl): Ditto.
! 	(vnsra): Ditto.
! 	(vncvt_x): Ditto.
! 	(vmerge): Ditto.
! 	(vmv_v): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct narrow_alu_def): Ditto.
! 	(struct move_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): New variable.
! 	(DEF_RVV_WEXTU_OPS): Ditto
! 	* config/riscv/riscv-vector-builtins.def (x_x_w): Fix type for suffix.
! 	(v_v): Ditto.
! 	(v_x): Ditto.
! 	(x_w): Ditto.
! 	(x): Ditto.
! 	* config/riscv/riscv.cc (riscv_print_operand): Refine ASM printting rule.
! 	* config/riscv/vector-iterators.md (nmsac):New iterator.
! 	(nmsub): New iterator.
! 	* config/riscv/vector.md (@pred_merge<mode>): New pattern.
! 	(@pred_merge<mode>_scalar): New pattern.
! 	(*pred_merge<mode>_scalar): New pattern.
! 	(*pred_merge<mode>_extended_scalar): New pattern.
! 	(@pred_narrow_<optab><mode>): New pattern.
! 	(@pred_narrow_<optab><mode>_scalar): New pattern.
! 	(@pred_trunc<mode>): New pattern.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vmadc): New class.
! 	(class vmsbc): Ditto.
! 	(BASE): Define new class.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmadc): New define.
! 	(vmsbc): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct return_mask_def):
! 	New class.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::use_exact_insn): Adjust for new support
! 	* config/riscv/riscv-vector-builtins.h
! 	(function_base::has_merge_operand_p): New function.
! 	* config/riscv/vector-iterators.md: New iterator.
! 	* config/riscv/vector.md (@pred_madc<mode>): New pattern.
! 	(@pred_msbc<mode>): Ditto.
! 	(@pred_madc<mode>_scalar): Ditto.
! 	(@pred_msbc<mode>_scalar): Ditto.
! 	(*pred_madc<mode>_scalar): Ditto.
! 	(*pred_madc<mode>_extended_scalar): Ditto.
! 	(*pred_msbc<mode>_scalar): Ditto.
! 	(*pred_msbc<mode>_extended_scalar): Ditto.
! 	(@pred_madc<mode>_overflow): Ditto.
! 	(@pred_msbc<mode>_overflow): Ditto.
! 	(@pred_madc<mode>_overflow_scalar): Ditto.
! 	(@pred_msbc<mode>_overflow_scalar): Ditto.
! 	(*pred_madc<mode>_overflow_scalar): Ditto.
! 	(*pred_madc<mode>_overflow_extended_scalar): Ditto.
! 	(*pred_msbc<mode>_overflow_scalar): Ditto.
! 	(*pred_msbc<mode>_overflow_extended_scalar): Ditto.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-protos.h (simm5_p): Add vadc/vsbc support.
! 	* config/riscv/riscv-v.cc (simm32_p): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vadc): New class.
! 	(class vsbc): Ditto.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vadc): Ditto.
! 	(vsbc): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc
! 	(struct no_mask_policy_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(rvv_arg_type_info::get_base_vector_type): Add vadc/vsbc support.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	(function_expander::use_exact_insn): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
! 	(function_base::use_mask_predication_p): New function.
! 	* config/riscv/vector-iterators.md: New iterator.
! 	* config/riscv/vector.md (@pred_adc<mode>): New pattern.
! 	(@pred_sbc<mode>): Ditto.
! 	(@pred_adc<mode>_scalar): Ditto.
! 	(@pred_sbc<mode>_scalar): Ditto.
! 	(*pred_adc<mode>_scalar): Ditto.
! 	(*pred_adc<mode>_extended_scalar): Ditto.
! 	(*pred_sbc<mode>_scalar): Ditto.
! 	(*pred_sbc<mode>_extended_scalar): Ditto.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md: use "zero" reg.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (class widen_binop): New
! 	class.
! 	(class vwmulsu): Ditto.
! 	(class vwcvt): Ditto.
! 	(BASE): Add integer widening support.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto
! 	* config/riscv/riscv-vector-builtins-functions.def (vwadd): New class.
! 	(vwsub): New class.
! 	(vwmul): New class.
! 	(vwmulu): New class.
! 	(vwmulsu): New class.
! 	(vwaddu): New class.
! 	(vwsubu): New class.
! 	(vwcvt_x): New class.
! 	(vwcvtu_x): New class.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): New
! 	class.
! 	(struct widen_alu_def): New class.
! 	(SHAPE): New class.
! 	* config/riscv/riscv-vector-builtins-shapes.h: New class.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(rvv_arg_type_info::get_base_vector_type): Add integer widening support.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	* config/riscv/riscv-vector-builtins.def (x_x_v): Change into "x_v"
! 	(x_v): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add integer
! 	widening support.
! 	* config/riscv/riscv-vsetvl.cc (change_insn): Fix reg_equal use bug.
! 	* config/riscv/riscv.h (X0_REGNUM): New constant.
! 	* config/riscv/vector-iterators.md: New iterators.
! 	* config/riscv/vector.md
! 	(@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>): New
! 	pattern.
! 	(@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar):
! 	Ditto.
! 	(@pred_single_widen_<plus_minus:optab><any_extend:su><mode>): Ditto.
! 	(@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar):
! 	Ditto.
! 	(@pred_widen_mulsu<mode>): Ditto.
! 	(@pred_widen_mulsu<mode>_scalar): Ditto.
! 	(@pred_<optab><mode>): Ditto.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
! 	    kito-cheng  <kito.cheng@sifive.com>
  
! 	* common/config/riscv/riscv-common.cc: Add flag for 'V' extension.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vmulh): New class.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmulh): Add vmulh
! 	API support.
! 	(vmulhu): Ditto.
! 	(vmulhsu): Ditto.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_FULL_V_I_OPS):
! 	New macro.
! 	(DEF_RVV_FULL_V_U_OPS): Ditto.
! 	(vint8mf8_t): Ditto.
! 	(vint8mf4_t): Ditto.
! 	(vint8mf2_t): Ditto.
! 	(vint8m1_t): Ditto.
! 	(vint8m2_t): Ditto.
! 	(vint8m4_t): Ditto.
! 	(vint8m8_t): Ditto.
! 	(vint16mf4_t): Ditto.
! 	(vint16mf2_t): Ditto.
! 	(vint16m1_t): Ditto.
! 	(vint16m2_t): Ditto.
! 	(vint16m4_t): Ditto.
! 	(vint16m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint32m1_t): Ditto.
! 	(vint32m2_t): Ditto.
! 	(vint32m4_t): Ditto.
! 	(vint32m8_t): Ditto.
! 	(vint64m1_t): Ditto.
! 	(vint64m2_t): Ditto.
! 	(vint64m4_t): Ditto.
! 	(vint64m8_t): Ditto.
! 	(vuint8mf8_t): Ditto.
! 	(vuint8mf4_t): Ditto.
! 	(vuint8mf2_t): Ditto.
! 	(vuint8m1_t): Ditto.
! 	(vuint8m2_t): Ditto.
! 	(vuint8m4_t): Ditto.
! 	(vuint8m8_t): Ditto.
! 	(vuint16mf4_t): Ditto.
! 	(vuint16mf2_t): Ditto.
! 	(vuint16m1_t): Ditto.
! 	(vuint16m2_t): Ditto.
! 	(vuint16m4_t): Ditto.
! 	(vuint16m8_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_FULL_V_I_OPS): Ditto.
! 	(DEF_RVV_FULL_V_U_OPS): Ditto.
! 	(check_required_extensions): Add vmulh support.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (RVV_REQUIRE_FULL_V): Ditto.
! 	(enum rvv_base_type): Ditto.
! 	* config/riscv/riscv.opt: Add 'V' extension flag.
! 	* config/riscv/vector-iterators.md (su): New iterator.
! 	* config/riscv/vector.md (@pred_mulh<v_su><mode>): New pattern.
! 	(@pred_mulh<v_su><mode>_scalar): Ditto.
! 	(*pred_mulh<v_su><mode>_scalar): Ditto.
! 	(*pred_mulh<v_su><mode>_extended_scalar): Ditto.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/iterators.md: Add sign_extend/zero_extend.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class ext): New class.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Add vsext/vzext support.
! 	* config/riscv/riscv-vector-builtins-functions.def (vsext): New macro
! 	define.
! 	(vzext): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct alu_def): Adjust
! 	for vsext/vzext support.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_WEXTI_OPS): New
! 	macro define.
! 	(DEF_RVV_QEXTI_OPS): Ditto.
! 	(DEF_RVV_OEXTI_OPS): Ditto.
! 	(DEF_RVV_WEXTU_OPS): Ditto.
! 	(DEF_RVV_QEXTU_OPS): Ditto.
! 	(DEF_RVV_OEXTU_OPS): Ditto.
! 	(vint16mf4_t): Ditto.
! 	(vint16mf2_t): Ditto.
! 	(vint16m1_t): Ditto.
! 	(vint16m2_t): Ditto.
! 	(vint16m4_t): Ditto.
! 	(vint16m8_t): Ditto.
! 	(vint32mf2_t): Ditto.
! 	(vint32m1_t): Ditto.
! 	(vint32m2_t): Ditto.
! 	(vint32m4_t): Ditto.
! 	(vint32m8_t): Ditto.
! 	(vint64m1_t): Ditto.
! 	(vint64m2_t): Ditto.
! 	(vint64m4_t): Ditto.
! 	(vint64m8_t): Ditto.
! 	(vuint16mf4_t): Ditto.
! 	(vuint16mf2_t): Ditto.
! 	(vuint16m1_t): Ditto.
! 	(vuint16m2_t): Ditto.
! 	(vuint16m4_t): Ditto.
! 	(vuint16m8_t): Ditto.
! 	(vuint32mf2_t): Ditto.
! 	(vuint32m1_t): Ditto.
! 	(vuint32m2_t): Ditto.
! 	(vuint32m4_t): Ditto.
! 	(vuint32m8_t): Ditto.
! 	(vuint64m1_t): Ditto.
! 	(vuint64m2_t): Ditto.
! 	(vuint64m4_t): Ditto.
! 	(vuint64m8_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_WEXTI_OPS): Ditto.
! 	(DEF_RVV_QEXTI_OPS): Ditto.
! 	(DEF_RVV_OEXTI_OPS): Ditto.
! 	(DEF_RVV_WEXTU_OPS): Ditto.
! 	(DEF_RVV_QEXTU_OPS): Ditto.
! 	(DEF_RVV_OEXTU_OPS): Ditto.
! 	(rvv_arg_type_info::get_base_vector_type): Add sign_exted/zero_extend
! 	support.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Ditto.
! 	* config/riscv/vector-iterators.md (z): New attribute.
! 	* config/riscv/vector.md (@pred_<optab><mode>_vf2): New pattern.
! 	(@pred_<optab><mode>_vf4): Ditto.
! 	(@pred_<optab><mode>_vf8): Ditto.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/iterators.md: Add saturating Addition && Subtraction.
! 	* config/riscv/riscv-v.cc (has_vi_variant_p): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vsadd): New def.
! 	(vssub): Ditto.
! 	(vsaddu): Ditto.
! 	(vssubu): Ditto.
! 	* config/riscv/vector-iterators.md (sll.vi): Adjust for Saturating
! 	support.
! 	(sll.vv): Ditto.
! 	(%3,%v4): Ditto.
! 	(%3,%4): Ditto.
! 	* config/riscv/vector.md (@pred_<optab><mode>): New pattern.
! 	(@pred_<optab><mode>_scalar): New pattern.
! 	(*pred_<optab><mode>_scalar): New pattern.
! 	(*pred_<optab><mode>_extended_scalar): New pattern.
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/iterators.md: Add neg and not.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class unop): New class.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vadd): Rename binop
! 	into alu.
! 	(vsub): Ditto.
! 	(vand): Ditto.
! 	(vor): Ditto.
! 	(vxor): Ditto.
! 	(vsll): Ditto.
! 	(vsra): Ditto.
! 	(vsrl): Ditto.
! 	(vmin): Ditto.
! 	(vmax): Ditto.
! 	(vminu): Ditto.
! 	(vmaxu): Ditto.
! 	(vmul): Ditto.
! 	(vdiv): Ditto.
! 	(vrem): Ditto.
! 	(vdivu): Ditto.
! 	(vremu): Ditto.
! 	(vrsub): Ditto.
! 	(vneg): Ditto.
! 	(vnot): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): Ditto.
! 	(struct alu_def): Ditto.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc: Support unary C/C/++.
! 	* config/riscv/vector-iterators.md: New iterator.
! 	* config/riscv/vector.md (@pred_<optab><mode>): New pattern
  
! 2023-02-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (pass_vsetvl::compute_probabilities): Skip exit block.
  
! 2023-02-11  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/108605
! 	* ipa-cp.cc (ipa_agg_value_from_jfunc): Return NULL_TREE also if
! 	item->offset bit position is too large to be representable as
! 	unsigned int byte position.
  
! 2023-02-11  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/extend.texi (Other Builtins): Adjust link to WG14 N965.
  
! 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira.cc (update_equiv_regs): Set up ira_reg_equiv for
! 	valid_combine only when ira_use_lra_p is true.
  
! 2023-02-10  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* params.opt (ira-simple-lra-insn-threshold): Add new param.
! 	* ira.cc (ira): Use the param to switch on simple LRA.
  
! 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108687
! 	* gimple-range-cache.cc (ranger_cache::range_on_edge): Revert
! 	back to RFD_NONE mode for calculations.
! 	(ranger_cache::propagate_cache): Call the internal edge range API
! 	with RFD_READ_ONLY instead of changing the external routine.
  
! 2023-02-10  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108520
! 	* gimple-range-infer.cc (check_assume_func): Invoke
! 	gimple_range_global directly instead using global_range_query.
! 	* value-query.cc (get_range_global): Add function context and
! 	avoid calling nonnull_arg_p if not cfun.
! 	(gimple_range_global): Add function context pointer.
! 	* value-query.h (imple_range_global): Add function context.
  
! 2023-02-10  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/constraints.md (Wdm): Adjust constraint.
! 	(Wbr): New constraint.
! 	* config/riscv/predicates.md (reg_or_int_operand): New predicate.
! 	* config/riscv/riscv-protos.h (emit_pred_op): Remove function.
! 	(emit_vlmax_op): New function.
! 	(emit_nonvlmax_op): Ditto.
! 	(simm32_p): Ditto.
! 	(neg_simm5_p): Ditto.
! 	(has_vi_variant_p): Ditto.
! 	* config/riscv/riscv-v.cc (emit_pred_op): Adjust function.
! 	(emit_vlmax_op): New function.
! 	(emit_nonvlmax_op): Ditto.
! 	(expand_const_vector): Adjust function.
! 	(legitimize_move): Ditto.
! 	(simm32_p): New function.
! 	(simm5_p): Ditto.
! 	(neg_simm5_p): Ditto.
! 	(has_vi_variant_p): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class vrsub): New class.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vmin): Remove
! 	unsigned cases.
! 	(vmax): Ditto.
! 	(vminu): Remove signed cases.
! 	(vmaxu): Ditto.
! 	(vdiv): Remove unsigned cases.
! 	(vrem): Ditto.
! 	(vdivu): Remove signed cases.
! 	(vremu): Ditto.
! 	(vadd): Adjust.
! 	(vsub): Ditto.
! 	(vrsub): New class.
! 	(vand): Adjust.
! 	(vor): Ditto.
! 	(vxor): Ditto.
! 	(vmul): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_U_OPS): New macro.
! 	* config/riscv/riscv.h: change VL/VTYPE as fixed reg.
! 	* config/riscv/vector-iterators.md: New iterators.
! 	* config/riscv/vector.md (@pred_broadcast<mode>): Adjust pattern for vx
! 	support.
! 	(@pred_<optab><mode>_scalar): New pattern.
! 	(@pred_sub<mode>_reverse_scalar): Ditto.
! 	(*pred_<optab><mode>_scalar): Ditto.
! 	(*pred_<optab><mode>_extended_scalar): Ditto.
! 	(*pred_sub<mode>_reverse_scalar): Ditto.
! 	(*pred_sub<mode>_extended_reverse_scalar): Ditto.
  
! 2023-02-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108724
! 	* tree-vect-stmts.cc (vectorizable_operation): Avoid
! 	using word_mode vectors when vector lowering will
! 	decompose them to elementwise operations.
  
! 2023-02-10  Jakub Jelinek  <jakub@redhat.com>
  
! 	Revert:
! 	2023-02-09  Martin Liska  <mliska@suse.cz>
  
! 	PR target/100758
! 	* doc/extend.texi: Document that the function
! 	does not work correctly for old VIA processors.
  
! 2023-02-10  Andrew Pinski  <apinski@marvell.com>
! 	    Andrew Macleod   <amacleod@redhat.com>
  
! 	PR tree-optimization/108684
! 	* tree-ssa-dce.cc (simple_dce_from_worklist):
! 	Check all ssa names and not just non-vdef ones
! 	before accepting the inline-asm.
! 	Call unlink_stmt_vdef on the statement before
! 	removing it.
  
! 2023-02-09  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
! 	* ira.cc (validate_equiv_mem): Check memref address variance.
! 	(no_equiv): Clear caller_save_p flag.
! 	(update_equiv_regs): Define caller save equivalence for
! 	valid_combine.
! 	(setup_reg_equiv): Clear defined_p flag for caller save equivalence.
! 	* lra-constraints.cc (lra_copy_reg_equiv): Add new arg
! 	call_save_p.  Use caller save equivalence depending on the arg.
! 	(split_reg): Adjust the call.
  
! 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/100758
! 	* common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Formatting fixes.
! 	(cpu_indicator_init): Call get_available_features for all CPUs with
! 	max_level >= 1, rather than just Intel, AMD or Zhaoxin.  Formatting
! 	fixes.
  
! 2023-02-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108688
! 	* match.pd (bit_field_ref [bit_insert]): Simplify BIT_FIELD_REF
! 	of BIT_INSERT_EXPR extracting exactly all inserted bits even
! 	when without mode precision.  Formatting fixes.
  
! 2023-02-09  Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/108688
! 	* match.pd (bit_field_ref [bit_insert]): Avoid generating
! 	BIT_FIELD_REFs of non-mode-precision integral operands.
  
! 2023-02-09  Martin Liska  <mliska@suse.cz>
  
! 	PR target/100758
! 	* doc/extend.texi: Document that the function
! 	does not work correctly for old VIA processors.
  
! 2023-02-09  Andreas Schwab  <schwab@suse.de>
  
! 	* lto-wrapper.cc (merge_and_complain): Handle
! 	-funwind-tables and -fasynchronous-unwind-tables.
! 	(append_compiler_options): Likewise.
  
! 2023-02-09  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/26854
! 	* tree-into-ssa.cc (update_ssa): Turn blocks_to_update to tree
! 	view around insert_updated_phi_nodes_for.
! 	* tree-ssa-alias.cc (maybe_skip_until): Allocate visited bitmap
! 	in tree view.
! 	(walk_aliased_vdefs_1): Likewise.
  
! 2023-02-08  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/include/gpl_v3.texi: Change fsf.org to www.fsf.org.
  
! 2023-02-08  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	PR target/108505
! 	* config.gcc (tm_mlib_file): Define new variable.
  
! 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108692
! 	* tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
! 	widened_code which is different from code, don't call
! 	vect_look_through_possible_promotion but instead just check op is
! 	SSA_NAME with integral type for which vect_is_simple_use is true
! 	and call set_op on this_unprom.
  
! 2023-02-08  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/aarch64/aarch64-protos.h (aarch_ra_sign_key): Remove
! 	declaration.
! 	* config/aarch64/aarch64.cc (aarch_ra_sign_key): Remove
! 	definition.
! 	* config/aarch64/aarch64.opt (aarch64_ra_sign_key): Rename
! 	to 'aarch_ra_sign_key'.
! 	* config/arm/aarch-common.cc (aarch_ra_sign_key): Remove
! 	declaration.
! 	* config/arm/arm-protos.h (aarch_ra_sign_key): Likewise.
! 	* config/arm/arm.cc (enum aarch_key_type): Remove definition.
! 	* config/arm/arm.opt: Define.
  
! 2023-02-08  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/108316
! 	* tree-vect-stmts.cc (get_load_store_type): When using
! 	internal functions for gather/scatter, make sure that the type
! 	of the offset argument is consistent with the offset vector type.
  
! 2023-02-08  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	Revert:
! 	2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
! 	* ira.cc (validate_equiv_mem): Check memref address variance.
! 	(update_equiv_regs): Define caller save equivalence for
! 	valid_combine.
! 	(setup_reg_equiv): Clear defined_p flag for caller save equivalence.
! 	* lra-constraints.cc (lra_copy_reg_equiv): Add new arg
! 	call_save_p.  Use caller save equivalence depending on the arg.
! 	(split_reg): Adjust the call.
  
! 2023-02-08  Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree.def (SAD_EXPR): Remove outdated comment about missing
! 	WIDEN_MINUS_EXPR.
  
! 2023-02-07  Marek Polacek  <polacek@redhat.com>
  
! 	* doc/invoke.texi: Update -fchar8_t documentation.
  
! 2023-02-07  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* ira.h (struct ira_reg_equiv_s): Add new field caller_save_p.
! 	* ira.cc (validate_equiv_mem): Check memref address variance.
! 	(update_equiv_regs): Define caller save equivalence for
! 	valid_combine.
! 	(setup_reg_equiv): Clear defined_p flag for caller save equivalence.
! 	* lra-constraints.cc (lra_copy_reg_equiv): Add new arg
! 	call_save_p.  Use caller save equivalence depending on the arg.
! 	(split_reg): Adjust the call.
  
! 2023-02-07  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/26854
! 	* gimple-fold.cc (has_use_on_stmt): Look at stmt operands
! 	instead of immediate uses.
  
! 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/106923
! 	* ipa-split.cc (execute_split_functions): Don't split returns_twice
! 	functions.
  
! 2023-02-07  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/106433
! 	* cgraph.cc (set_const_flag_1): Recurse on simd clones too.
! 	(cgraph_node::set_pure_flag): Call set_pure_flag_1 on simd clones too.
  
! 2023-02-07  Jan Hubicka  <jh@suse.cz>
  
! 	* config/i386/x86-tune.def (X86_TUNE_AVX256_OPTIMAL): Turn off
! 	for znver4.
  
! 2023-02-06  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/mkoffload.cc (gcn_stack_size): New global variable.
! 	(process_asm): Create a constructor for GCN_STACK_SIZE.
! 	(main): Parse the -mstack-size option.
  
! 2023-02-06  Alex Coplan  <alex.coplan@arm.com>
  
! 	PR target/104921
! 	* config/aarch64/aarch64-simd.md (aarch64_bfmlal<bt>_lane<q>v4sf):
! 	Use correct constraint for operand 3.
  
! 2023-02-06  Martin Jambor  <mjambor@suse.cz>
  
! 	* ipa-sra.cc (adjust_parameter_descriptions): Fix a typo in a dump.
  
! 2023-02-06  Xi Ruoyao  <xry111@xry111.site>
  
! 	* config/loongarch/loongarch.md (bytepick_w_ashift_amount):
! 	New define_int_iterator.
! 	(bytepick_d_ashift_amount): Likewise.
! 	(bytepick_imm): New define_int_attr.
! 	(bytepick_w_lshiftrt_amount): Likewise.
! 	(bytepick_d_lshiftrt_amount): Likewise.
! 	(bytepick_w_<bytepick_imm>): New define_insn template.
! 	(bytepick_w_<bytepick_imm>_extend): Likewise.
! 	(bytepick_d_<bytepick_imm>): Likewise.
! 	(bytepick_w): Remove unused define_insn.
! 	(bytepick_d): Likewise.
! 	(UNSPEC_BYTEPICK_W): Remove unused unspec.
! 	(UNSPEC_BYTEPICK_D): Likewise.
! 	* config/loongarch/predicates.md (const_0_to_3_operand):
! 	Remove unused define_predicate.
! 	(const_0_to_7_operand): Likewise.
  
! 2023-02-06  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108655
! 	* ubsan.cc (sanitize_unreachable_fn): For -funreachable-traps
! 	or -fsanitize=unreachable -fsanitize-trap=unreachable return
! 	BUILT_IN_UNREACHABLE_TRAP decl rather than BUILT_IN_TRAP.
  
! 2023-02-05  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/install.texi (Specific): Remove PW32.
  
! 2023-02-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108647
! 	* range-op.cc (operator_equal::op1_range,
! 	operator_not_equal::op1_range): Don't test op2 bound
! 	equality if op2.undefined_p (), instead set_varying.
! 	(operator_lt::op1_range, operator_le::op1_range,
! 	operator_gt::op1_range, operator_ge::op1_range): Return false if
! 	op2.undefined_p ().
! 	(operator_lt::op2_range, operator_le::op2_range,
! 	operator_gt::op2_range, operator_ge::op2_range): Return false if
! 	op1.undefined_p ().
  
! 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/108639
! 	* value-range.cc (irange::legacy_equal_p): Compare nonzero bits as
! 	widest_int.
! 	(irange::operator==): Same.
  
! 2023-02-03  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/108647
! 	* range-op-float.cc (foperator_lt::op1_range): Handle undefined ranges.
! 	(foperator_lt::op2_range): Same.
! 	(foperator_le::op1_range): Same.
! 	(foperator_le::op2_range): Same.
! 	(foperator_gt::op1_range): Same.
! 	(foperator_gt::op2_range): Same.
! 	(foperator_ge::op1_range): Same.
! 	(foperator_ge::op2_range): Same.
! 	(foperator_unordered_lt::op1_range): Same.
! 	(foperator_unordered_lt::op2_range): Same.
! 	(foperator_unordered_le::op1_range): Same.
! 	(foperator_unordered_le::op2_range): Same.
! 	(foperator_unordered_gt::op1_range): Same.
! 	(foperator_unordered_gt::op2_range): Same.
! 	(foperator_unordered_ge::op1_range): Same.
! 	(foperator_unordered_ge::op2_range): Same.
  
! 2023-02-03  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/107570
! 	* tree-vrp.cc (remove_and_update_globals): Reset SCEV.
  
! 2023-02-03  Gaius Mulley  <gaiusmod2@gmail.com>
  
! 	* doc/gm2.texi (Internals): Remove from menu.
! 	(Using): Comment out ifnohtml conditional.
! 	(Documentation): Use gcc url.
! 	(License): Node simplified.
! 	(Copying): New node.  Include gpl_v3_without_node.
! 	(Contributing): Node simplified.
! 	(Internals): Commented out.
! 	(Libraries): Node simplified.
! 	(Indices): Ditto.
! 	(Contents): Ditto.
! 	(Functions): Ditto.
  
! 2023-02-03  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	* config/arm/mve.md (mve_vabavq_p_<supf><mode>): Add length
! 	attribute.
! 	(mve_vqshluq_m_n_s<mode>): Likewise.
! 	(mve_vshlq_m_<supf><mode>): Likewise.
! 	(mve_vsriq_m_n_<supf><mode>): Likewise.
! 	(mve_vsubq_m_<supf><mode>): Likewise.
  
! 2023-02-03  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/108384
! 	* ipa-sra.cc (push_param_adjustments_for_index): Remove a size check
! 	when comparing to an IPA-CP value.
! 	(dump_list_of_param_indices): New function.
! 	(adjust_parameter_descriptions): Check for mismatching IPA-CP values.
! 	Dump removed candidates using dump_list_of_param_indices.
! 	* ipa-param-manipulation.cc
! 	(ipa_param_body_adjustments::modify_expression): Add assert checking
! 	sizes of a VIEW_CONVERT_EXPR will match.
! 	(ipa_param_body_adjustments::modify_assignment): Likewise.
  
! 2023-02-03  Monk Chiang  <monk.chiang@sifive.com>
  
! 	* config/riscv/riscv.h: Remove VL_REGS, VTYPE_REGS class.
! 	* config/riscv/riscv.cc: Ditto.
  
! 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector-iterators.md (sll.vi): Fix constraint bug.
! 	(sll.vv): Ditto.
! 	(%3,%4): Ditto.
! 	(%3,%v4): Ditto.
! 	* config/riscv/vector.md: Ditto.
  
! 2023-02-03  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/predicates.md (pmode_reg_or_uimm5_operand): New predicate.
! 	* config/riscv/riscv-vector-builtins-bases.cc: New class.
! 	* config/riscv/riscv-vector-builtins-functions.def (vsll): Ditto.
! 	(vsra): Ditto.
! 	(vsrl): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc: Ditto.
! 	* config/riscv/vector.md (@pred_<optab><mode>_scalar): New pattern.
  
! 2023-02-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* toplev.cc (toplev::main): Only print the version information header
! 	from toplevel main().
  
! 2023-02-02  Paul-Antoine Arras  <pa@codesourcery.com>
  
! 	* config/gcn/gcn-valu.md (cond_<expander><mode>): Add
! 	cond_{ashl|ashr|lshr}
  
! 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/108086
! 	* rtl-ssa/insns.h (insn_info): Make m_num_defs a full unsigned int.
! 	Adjust size-related commentary accordingly.
  
! 2023-02-02  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR rtl-optimization/108508
! 	* rtl-ssa/accesses.cc (function_info::split_clobber_group): When
! 	the splay tree search gives the first clobber in the second group,
! 	make sure that the root of the first clobber group is updated
! 	correctly.  Enter the new clobber group into the definition splay
! 	tree.
  
! 2023-02-02  Jin Ma  <jinma@linux.alibaba.com>
  
! 	* common/config/riscv/riscv-common.cc (riscv_compute_multilib):
! 	Fix finding best match score.
  
! 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/106746
! 	PR rtl-optimization/108463
! 	PR target/108484
! 	* cselib.cc (cselib_current_insn): Move declaration earlier.
! 	(cselib_hasher::equal): For debug only locs, temporarily override
! 	cselib_current_insn to their l->setting_insn for the
! 	rtx_equal_for_cselib_1 call, so that unsuccessful comparisons don't
! 	promote some debug locs.
! 	* sched-deps.cc (sched_analyze_2) <case MEM>: For MEMs in DEBUG_INSNs
! 	when using cselib call cselib_lookup_from_insn on the address but
! 	don't substitute it.
  
! 2023-02-02  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/108625
! 	* genmatch.cc (expr::gen_transform): Also disallow resimplification
! 	from pushing to lseq with force_leaf.
! 	(dt_simplify::gen_1): Likewise.
  
! 2023-02-02  Andrew Stubbs  <ams@codesourcery.com>
  
! 	* config/gcn/gcn-run.cc: Include libgomp-gcn.h.
! 	(struct kernargs): Replace the common content with kernargs_abi.
! 	(struct heap): Delete.
! 	(main): Read GCN_STACK_SIZE envvar.
! 	Allocate space for the device stacks.
! 	Write the new kernargs fields.
! 	* config/gcn/gcn.cc (gcn_option_override): Remove stack_size_opt.
! 	(default_requested_args): Remove PRIVATE_SEGMENT_BUFFER_ARG and
! 	PRIVATE_SEGMENT_WAVE_OFFSET_ARG.
! 	(gcn_addr_space_convert): Mask the QUEUE_PTR_ARG content.
! 	(gcn_expand_prologue): Move the TARGET_PACKED_WORK_ITEMS to the top.
! 	Set up the stacks from the values in the kernargs, not private.
! 	(gcn_expand_builtin_1): Match the stack configuration in the prologue.
! 	(gcn_hsa_declare_function_name): Turn off the private segment.
! 	(gcn_conditional_register_usage): Ensure QUEUE_PTR is fixed.
! 	* config/gcn/gcn.h (FIXED_REGISTERS): Fix the QUEUE_PTR register.
! 	* config/gcn/gcn.opt (mstack-size): Change the description.
  
! 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR target/108443
! 	* config/arm/arm.h (VALID_MVE_PRED_MODE): Add V2QI.
! 	* config/arm/arm.cc (thumb2_legitimate_address_p): Use HImode for
! 	addressing MVE predicate modes.
! 	(mve_bool_vec_to_const): Change to represent correct MVE predicate
! 	format.
! 	(arm_hard_regno_mode_ok): Use VALID_MVE_PRED_MODE instead of checking
! 	modes.
! 	(arm_vector_mode_supported_p): Likewise.
! 	(arm_mode_to_pred_mode): Add V2QI.
! 	* config/arm/arm-builtins.cc (UNOP_PRED_UNONE_QUALIFIERS): New
! 	qualifier.
! 	(UNOP_PRED_PRED_QUALIFIERS): New qualifier
! 	(BINOP_PRED_UNONE_PRED_QUALIFIERS): New qualifier.
! 	(v2qi_UP): New macro.
! 	(v4bi_UP): New macro.
! 	(v8bi_UP): New macro.
! 	(v16bi_UP): New macro.
! 	(arm_expand_builtin_args): Make it able to expand the new predicate
! 	modes.
! 	* config/arm/arm-modes.def (V2QI): New mode.
! 	* config/arm/arm-simd-builtin-types.def (Pred1x16_t, Pred2x8_t
! 	Pred4x4_t): Remove unused predicate builtin types.
! 	* config/arm/arm_mve.h (__arm_vctp16q, __arm_vctp32q, __arm_vctp64q,
! 	__arm_vctp8q, __arm_vpnot, __arm_vctp8q_m, __arm_vctp64q_m,
! 	__arm_vctp32q_m, __arm_vctp16q_m): Use predicate modes.
! 	* config/arm/arm_mve_builtins.def (vctp16q, vctp32q, vctp64q, vctp8q,
! 	vpnot, vctp8q_m, vctp16q_m, vctp32q_m, vctp64q_m): Likewise.
! 	* config/arm/constraints.md (DB): Check for VALID_MVE_PRED_MODE instead
! 	of MODE_VECTOR_BOOL.
! 	* config/arm/iterators.md (MVE_7, MVE_7_HI): Add V2QI
! 	(MVE_VPRED): Likewise.
! 	(MVE_vpred): Add V2QI and map upper case predicate modes to lower case.
! 	(MVE_vctp): New mode attribute.
! 	(mode1): Remove.
! 	(VCTPQ): Remove.
! 	(VCTPQ_M): Remove.
! 	* config/arm/mve.md (mve_vctp<mode1>qhi): Rename this...
! 	(mve_vctp<MVE_vctp>q<MVE_vpred>): ... to this. And use new mode
! 	attributes.
! 	(mve_vpnothi): Rename this...
! 	(mve_vpnotv16bi): ... to this.
! 	(mve_vctp<mode1>q_mhi): Rename this...
! 	(mve_vctp<MVE_vctp>q_m<MVE_vpred>):... to this.
! 	(mve_vldrdq_gather_base_z_<supf>v2di,
! 	mve_vldrdq_gather_offset_z_<supf>v2di,
! 	mve_vldrdq_gather_shifted_offset_z_<supf>v2di,
! 	mve_vstrdq_scatter_base_p_<supf>v2di,
! 	mve_vstrdq_scatter_offset_p_<supf>v2di,
! 	mve_vstrdq_scatter_offset_p_<supf>v2di_insn,
! 	mve_vstrdq_scatter_shifted_offset_p_<supf>v2di,
! 	mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn,
! 	mve_vstrdq_scatter_base_wb_p_<supf>v2di,
! 	mve_vldrdq_gather_base_wb_z_<supf>v2di,
! 	mve_vldrdq_gather_base_nowb_z_<supf>v2di,
! 	mve_vldrdq_gather_base_wb_z_<supf>v2di_insn):  Use V2QI insead of HI for
! 	predicates.
! 	* config/arm/unspecs.md (VCTP8Q, VCTP16Q, VCTP32Q, VCTP64Q): Replace
! 	these...
! 	(VCTP): ... with this.
! 	(VCTP8Q_M, VCTP16Q_M, VCTP32Q_M, VCTP64Q_M): Replace these...
! 	(VCTP_M): ... with this.
! 	* config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Use
! 	VALID_MVE_PRED_MODE instead of checking for MODE_VECTOR_BOOL class.
  
! 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR target/107674
! 	* config/arm/arm.cc (arm_hard_regno_mode_ok): Use new MACRO.
! 	(arm_modes_tieable_p): Make MVE predicate modes tieable.
! 	* config/arm/arm.h (VALID_MVE_PRED_MODE):  New define.
! 	* simplify-rtx.cc (simplify_context::simplify_subreg): Teach
! 	simplify_subreg to simplify subregs where the outermode is not scalar.
  
! 2023-02-02  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR target/107674
! 	* config/arm/arm-builtins.cc (arm_simd_builtin_type): Rewrite to use
! 	new qualifiers parameter and use unsigned short type for MVE predicate.
! 	(arm_init_builtin): Call arm_simd_builtin_type with qualifiers
! 	parameter.
! 	(arm_init_crypto_builtins): Likewise.
  
! 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/107300
! 	* builtins.def (BUILT_IN_UNREACHABLE_TRAP): New builtin.
! 	* internal-fn.def (TRAP): Remove.
! 	* internal-fn.cc (expand_TRAP): Remove.
! 	* tree.cc (build_common_builtin_nodes): Define
! 	BUILT_IN_UNREACHABLE_TRAP if not yet defined.
! 	(builtin_decl_unreachable): Use BUILT_IN_UNREACHABLE_TRAP
! 	instead of BUILT_IN_TRAP.
! 	* gimple.cc (gimple_build_builtin_unreachable): Remove
! 	emitting internal function for BUILT_IN_TRAP.
! 	* asan.cc (maybe_instrument_call): Handle BUILT_IN_UNREACHABLE_TRAP.
! 	* cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Handle
! 	BUILT_IN_UNREACHABLE_TRAP instead of BUILT_IN_TRAP.
! 	* ipa-devirt.cc (possible_polymorphic_call_target_p): Handle
! 	BUILT_IN_UNREACHABLE_TRAP.
! 	* builtins.cc (expand_builtin, is_inexpensive_builtin): Likewise.
! 	* tree-cfg.cc (verify_gimple_call,
! 	pass_warn_function_return::execute): Likewise.
! 	* attribs.cc (decl_attributes): Don't report exclusions on
! 	BUILT_IN_UNREACHABLE_TRAP either.
  
! 2023-02-02  liuhongt  <hongtao.liu@intel.com>
  
! 	PR tree-optimization/108601
! 	* tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Removed.
! 	* tree-vect-loop.cc
! 	(vectorizable_nonlinear_induction): Remove
! 	vect_can_peel_nonlinear_iv_p.
! 	(vect_can_peel_nonlinear_iv_p): Don't peel
! 	nonlinear iv(mult or shift) for epilog when vf is not
! 	constant and moved the defination to ..
! 	* tree-vect-loop-manip.cc (vect_can_peel_nonlinear_iv_p):
! 	.. Here.
  
! 2023-02-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/108435
! 	* tree-nested.cc (convert_nonlocal_omp_clauses)
! 	<case OMP_CLAUSE_LASTPRIVATE>: If info->new_local_var_chain and *seq
! 	is not a GIMPLE_BIND, wrap the sequence into a new GIMPLE_BIND
! 	before calling declare_vars.
! 	(convert_nonlocal_omp_clauses) <case OMP_CLAUSE_LINEAR>: Merge
! 	with the OMP_CLAUSE_LASTPRIVATE handling except for whether
! 	seq is initialized to &OMP_CLAUSE_LASTPRIVATE_GIMPLE_SEQ (clause)
! 	or &OMP_CLAUSE_LINEAR_GIMPLE_SEQ (clause).
  
! 2023-02-01  Tamar Christina  <tamar.christina@arm.com>
  
! 	* common/config/aarch64/aarch64-common.cc
! 	(struct aarch64_option_extension): Add native_detect and document struct
! 	a bit more.
! 	(all_extensions): Set new field native_detect.
! 	* config/aarch64/aarch64.cc (struct aarch64_option_extension): Delete
! 	unused struct.
  
! 2023-02-01  Martin Liska  <mliska@suse.cz>
  
! 	* ipa-devirt.cc (odr_types_equivalent_p): Respect *warned
! 	value if set.
  
! 2023-02-01  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108356
! 	* gimple-range-cache.cc (ranger_cache::range_on_edge): Always
! 	do a search of the DOM tree for a range.
  
! 2023-02-01  Martin Liska  <mliska@suse.cz>
  
! 	PR ipa/108509
! 	* cgraphunit.cc (walk_polymorphic_call_targets): Insert
! 	ony non-null values.
! 	* ipa.cc (walk_polymorphic_call_targets): Likewise.
  
! 2023-02-01  Martin Liska  <mliska@suse.cz>
  
! 	PR driver/108572
! 	* gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Report error only for
! 	-gz=zstd.
  
! 2023-02-01  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR debug/108573
! 	* ree.cc (combine_reaching_defs): Don't return false for paradoxical
! 	subregs in DEBUG_INSNs.
  
! 2023-02-01  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* compare-elim.cc (find_flags_uses_in_insn): Guard use of SET_SRC.
  
! 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390.cc (s390_restore_gpr_p): New function.
! 	(s390_preserve_gpr_arg_in_range_p): New function.
! 	(s390_preserve_gpr_arg_p): New function.
! 	(s390_preserve_fpr_arg_p): New function.
! 	(s390_register_info_stdarg_fpr): Rename to ...
! 	(s390_register_info_arg_fpr): ... this. Add -mpreserve-args handling.
! 	(s390_register_info_stdarg_gpr): Rename to ...
! 	(s390_register_info_arg_gpr): ... this. Add -mpreserve-args handling.
! 	(s390_register_info): Use the renamed functions above.
! 	(s390_optimize_register_info): Likewise.
! 	(save_fpr): Generate CFI for -mpreserve-args.
! 	(save_gprs): Generate CFI for -mpreserve-args. Drop return value.
! 	(s390_emit_prologue): Adjust to changed calling convention of save_gprs.
! 	(s390_optimize_prologue): Likewise.
! 	* config/s390/s390.opt: New option -mpreserve-args
  
! 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390.cc (save_gprs): Use gen_frame_mem.
! 	(restore_gprs): Likewise.
! 	(s390_emit_stack_tie): Make the stack_tie to be dependent on the
! 	frame pointer if a frame-pointer is used.
! 	(s390_emit_prologue): Emit stack_tie when frame-pointer is needed.
! 	* config/s390/s390.md (stack_tie): Add a register operand and
! 	rename to ...
! 	(@stack_tie<mode>): ... this.
  
! 2023-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* dwarf2cfi.cc (dwarf2out_frame_debug_cfa_restore): Add
! 	EMIT_CFI parameter.
! 	(dwarf2out_frame_debug): Add case for REG_CFA_NORESTORE.
! 	* reg-notes.def (REG_CFA_NOTE): New reg note definition.
  
! 2023-02-01  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/108500
! 	* dominance.cc (assign_dfs_numbers): Replace recursive DFS
! 	with tree traversal algorithm.
  
! 2023-02-01  Jason Merrill  <jason@redhat.com>
  
! 	* doc/invoke.texi: Document -Wno-changes-meaning.
  
! 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
  
! 	* doc/invoke.texi (Static Analyzer Options): Add notes about
! 	limitations of -fanalyzer.
  
! 2023-01-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/constraints.md (vj): New.
! 	(vk): Ditto
! 	* config/riscv/iterators.md: Add more opcode.
! 	* config/riscv/predicates.md (vector_arith_operand): New.
! 	(vector_neg_arith_operand): New.
! 	(vector_shift_operand): New.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class binop): New.
! 	* config/riscv/riscv-vector-builtins-bases.h: (vadd): New.
! 	(vsub): Ditto.
! 	(vand): Ditto.
! 	(vor): Ditto.
! 	(vxor): Ditto.
! 	(vsll): Ditto.
! 	(vsra): Ditto.
! 	(vsrl): Ditto.
! 	(vmin): Ditto.
! 	(vmax): Ditto.
! 	(vminu): Ditto.
! 	(vmaxu): Ditto.
! 	(vmul): Ditto.
! 	(vdiv): Ditto.
! 	(vrem): Ditto.
! 	(vdivu): Ditto.
! 	(vremu): Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vadd): New.
! 	(vsub): Ditto.
! 	(vand): Ditto.
! 	(vor): Ditto.
! 	(vxor): Ditto.
! 	(vsll): Ditto.
! 	(vsra): Ditto.
! 	(vsrl): Ditto.
! 	(vmin): Ditto.
! 	(vmax): Ditto.
! 	(vminu): Ditto.
! 	(vmaxu): Ditto.
! 	(vmul): Ditto.
! 	(vdiv): Ditto.
! 	(vrem): Ditto.
! 	(vdivu): Ditto.
! 	(vremu): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct binop_def): New.
! 	* config/riscv/riscv-vector-builtins-shapes.h (binop): New.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New.
! 	(DEF_RVV_U_OPS): New.
! 	(rvv_arg_type_info::get_base_vector_type): Handle
! 	RVV_BASE_shift_vector.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Add
! 	RVV_BASE_shift_vector.
! 	* config/riscv/riscv.cc (riscv_print_operand): Handle 'V'.
! 	* config/riscv/vector-iterators.md: Handle more opcode.
! 	* config/riscv/vector.md (@pred_<optab><mode>): New.
  
! 2023-01-31  Philipp Tomsich  <philipp.tomsich@vrull.eu>
  
! 	PR target/108589
! 	* config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Check
! 	REG_P on SET_DEST.
  
! 2023-01-31  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/108608
! 	* tree-vect-loop.cc (vect_transform_reduction): Handle single
! 	def-use cycles that involve function calls rather than tree codes.
  
! 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108385
! 	* gimple-range-gori.cc (gori_compute::compute_operand_range):
! 	Allow VARYING computations to continue if there is a relation.
! 	* range-op.cc (pointer_plus_operator::op2_range): New.
  
! 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108359
! 	* range-op.cc (range_operator::wi_fold_in_parts_equiv): New.
! 	(range_operator::fold_range): If op1 is equivalent to op2 then
! 	invoke new fold_in_parts_equiv to operate on sub-components.
! 	* range-op.h (wi_fold_in_parts_equiv): New prototype.
  
! 2023-01-31  Andrew MacLeod  <amacleod@redhat.com>
  
! 	* gimple-range-gori.cc (gori_compute::compute_operand_range): Do
! 	not abort calculations if there is a valid relation available.
! 	(gori_compute::refine_using_relation): Pass correct relation trio.
! 	(gori_compute::compute_operand1_range): Create trio and use it.
! 	(gori_compute::compute_operand2_range): Ditto.
! 	* range-op.cc (operator_plus::op1_range): Use correct trio member.
! 	(operator_minus::op1_range): Use correct trio member.
! 	* value-relation.cc (value_relation::create_trio): New.
! 	* value-relation.h (value_relation::create_trio): New prototype.
  
! 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/108599
! 	* config/i386/i386-expand.cc
! 	(ix86_convert_const_wide_int_to_broadcast): Return nullptr if
! 	CONST_WIDE_INT_NUNITS (op) times HOST_BITS_PER_WIDE_INT isn't
! 	equal to bitsize of mode.
  
! 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/108596
! 	* bb-reorder.cc (fix_up_fall_thru_edges): Handle the case where cur_bb
! 	ends with asm goto and has a crossing fallthrough edge to the same bb
! 	that contains at least one of its labels by restoring EDGE_CROSSING
! 	flag even on possible edge from cur_bb to new_bb successor.
  
! 2023-01-31  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/105593
! 	* config/i386/avx512erintrin.h (_mm512_exp2a23_round_pd,
! 	_mm512_exp2a23_round_ps, _mm512_rcp28_round_pd, _mm512_rcp28_round_ps,
! 	_mm512_rsqrt28_round_pd, _mm512_rsqrt28_round_ps): Use
! 	_mm512_undefined_pd () or _mm512_undefined_ps () instead of using
! 	uninitialized automatic variable __W.
  
! 2023-01-31  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/include/fdl.texi: Change fsf.org to www.fsf.org.
  
! 2023-01-30  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-protos.h (get_vector_mode): New function.
! 	* config/riscv/riscv-v.cc (get_vector_mode): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.cc (enum lst_type): New enum.
! 	(class loadstore): Adjust for indexed loads/stores support.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: New function declare.
! 	* config/riscv/riscv-vector-builtins-functions.def (vluxei8): Ditto.
! 	(vluxei16): Ditto.
! 	(vluxei32): Ditto.
! 	(vluxei64): Ditto.
! 	(vloxei8): Ditto.
! 	(vloxei16): Ditto.
! 	(vloxei32): Ditto.
! 	(vloxei64): Ditto.
! 	(vsuxei8): Ditto.
! 	(vsuxei16): Ditto.
! 	(vsuxei32): Ditto.
! 	(vsuxei64): Ditto.
! 	(vsoxei8): Ditto.
! 	(vsoxei16): Ditto.
! 	(vsoxei32): Ditto.
! 	(vsoxei64): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc
! 	(struct indexed_loadstore_def): New class.
! 	(SHAPE): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (required_extensions_p): Adjust
! 	for indexed loads/stores support.
! 	(check_required_extensions): Ditto.
! 	(rvv_arg_type_info::get_base_vector_type): New function.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	(function_builder::add_unique_function): Adjust for indexed loads/stores
! 	support.
! 	(function_expander::use_exact_insn): New function.
! 	* config/riscv/riscv-vector-builtins.h (enum rvv_base_type): Adjust for
! 	indexed loads/stores support.
! 	(struct rvv_arg_type_info): Ditto.
! 	(function_expander::index_mode): New function.
! 	(function_base::apply_tail_policy_p): Ditto.
! 	(function_base::apply_mask_policy_p): Ditto.
! 	* config/riscv/vector-iterators.md (unspec): New unspec.
! 	* config/riscv/vector.md (unspec): Ditto.
! 	(@pred_indexed_<order>load<VNX1_QHSD:mode><VNX1_QHSDI:mode>): New
! 	pattern.
! 	(@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
! 	(@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
! 	(@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI:mode>): Ditto.
! 	(@pred_indexed_<order>load<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
! 	(@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q:mode>): Ditto.
  
! 2023-01-30  Flavio Cruz  <flaviocruz@gmail.com>
  
! 	* config.gcc: Recognize x86_64-*-gnu* targets and include
! 	i386/gnu64.h.
! 	* config/i386/gnu64.h: Define configuration for new target
! 	including ld.so location.
  
! 2023-01-30  Philipp Tomsich  <philipp.tomsich@vrull.eu>
  
! 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
! 	ampere1a to include SM4.
  
! 2023-01-30  Andrew Pinski  <apinski@marvell.com>
  
! 	PR tree-optimization/108582
! 	* tree-ssa-phiopt.cc (match_simplify_replacement): Add check
! 	for middlebb to have no phi nodes.
  
! 2023-01-30  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108574
! 	* tree-ssa-sccvn.cc (visit_phi): Instead of swapping
! 	sameval and def, ignore the equivalence if there's the
! 	danger of oscillating between two values.
  
! 2023-01-30  Andreas Schwab  <schwab@suse.de>
  
! 	* common/config/riscv/riscv-common.cc
! 	(riscv_option_optimization_table)
! 	[TARGET_DEFAULT_ASYNC_UNWIND_TABLES]: Enable
! 	-fasynchronous-unwind-tables and -funwind-tables.
! 	* config.gcc (riscv*-*-linux*): Define
! 	TARGET_DEFAULT_ASYNC_UNWIND_TABLES.
  
! 2023-01-30  YunQiang Su  <yunqiang.su@cipunited.com>
  
! 	* Makefile.in (CROSS_SYSTEM_HEADER_DIR): set according the
! 	value of includedir.
  
! 2023-01-30  Richard Biener  <rguenther@suse.de>
  
! 	PR ipa/108511
! 	* cgraph.cc (possibly_call_in_translation_unit_p): Relax
! 	assert.
  
! 2023-01-30  liuhongt  <hongtao.liu@intel.com>
  
! 	* config/i386/i386.opt: Change AVX512FP16 to AVX512-FP16.
! 	* doc/invoke.texi: Ditto.
  
! 2023-01-29  Jan Hubicka  <hubicka@ucw.cz>
  
! 	* ipa-utils.cc: Include calls.h, cfgloop.h and cfganal.h
! 	(stmt_may_terminate_function_p): If assuming return or EH
! 	volatile asm is safe.
! 	(find_always_executed_bbs): Fix handling of terminating BBS and
! 	infinite loops; add debug output.
! 	* tree-ssa-alias.cc (stmt_kills_ref_p): Fix debug output
  
! 2023-01-28  Philipp Tomsich  <philipp.tomsich@vrull.eu>
  
! 	* config/aarch64/aarch64.cc (aarch64_uxt_size): fix an
! 	off-by-one in checking the permissible shift-amount.
  
! 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/extend.texi (Named Address Spaces): Update link to the
! 	AVR-Libc manual.
  
! 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/standards.texi (Standards): Fix markup.
  
! 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/standards.texi (Standards): Update link to Objective-C book.
  
! 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/invoke.texi (Instrumentation Options): Update reference to
! 	AddressSanitizer.
  
! 2023-01-28  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/standards.texi: Update Go1 link.
  
! 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/predicates.md (pmode_reg_or_0_operand): New predicate.
! 	* config/riscv/riscv-vector-builtins-bases.cc (class loadstore):
! 	Support vlse/vsse.
! 	(BASE): Ditto.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vlse): New class.
! 	(vsse): New class.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::use_contiguous_load_insn): Support vlse/vsse.
! 	* config/riscv/vector.md (@pred_strided_load<mode>): New md pattern.
! 	(@pred_strided_store<mode>): Ditto.
  
! 2023-01-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md (tail_policy_op_idx): Remove.
! 	(mask_policy_op_idx): Remove.
! 	(avl_type_op_idx): Remove.
  
! 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR tree-optimization/96373
! 	* tree.h (sign_mask_for): Declare.
! 	* tree.cc (sign_mask_for): New function.
! 	(signed_or_unsigned_type_for): For vector types, try to use the
! 	related_int_vector_mode.
! 	* genmatch.cc (commutative_op): Handle conditional internal functions.
! 	* match.pd: Fold an IFN_COND_MUL+copysign into an IFN_COND_XOR+and.
  
! 2023-01-27  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* tree-vectorizer.cc (vector_costs::compare_inside_loop_cost):
! 	Use the likely minimum VF when bounding the denominators to
! 	the estimated number of iterations.
  
! 2023-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* doc/invoke.texi (-shared): Clarify effect on -ffast-math
! 	and -Ofast FP environment side-effects.
  
! 2023-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/mips/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
! 	Don't add crtfastmath.o for -shared.
  
! 2023-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/ia64/linux.h (ENDFILE_SPEC): Don't add crtfastmath.o
! 	for -shared.
  
! 2023-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/alpha/linux.h (ENDFILE_SPEC): Don't add
! 	crtfastmath.o for -shared.
  
! 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108306
! 	* range-op.cc (operator_lshift::fold_range): Return [0, 0] not
! 	varying for shifts that are always out of void range.
! 	(operator_rshift::fold_range): Return [0, 0] not
! 	varying for shifts that are always out of void range.
  
! 2023-01-27  Andrew MacLeod  <amacleod@redhat.com>
  
! 	PR tree-optimization/108447
! 	* gimple-range-fold.cc (old_using_range::relation_fold_and_or):
! 	Do not attempt to fold HONOR_NAN types.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def):
! 	Remove _m suffix for "vop_m" C++ overloaded API name.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (BASE): Add vlm/vsm support.
! 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
! 	* config/riscv/riscv-vector-builtins-functions.def (vlm): New define.
! 	(vsm): Ditto.
! 	* config/riscv/riscv-vector-builtins-shapes.cc (struct loadstore_def): Add vlm/vsm support.
! 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_B_OPS): Ditto.
! 	(vbool64_t): Ditto.
! 	(vbool32_t): Ditto.
! 	(vbool16_t): Ditto.
! 	(vbool8_t): Ditto.
! 	(vbool4_t): Ditto.
! 	(vbool2_t): Ditto.
! 	(vbool1_t): Ditto.
! 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_B_OPS): Ditto.
! 	(rvv_arg_type_info::get_tree_type): Ditto.
! 	(function_expander::use_contiguous_load_insn): Ditto.
! 	* config/riscv/vector.md (@pred_store<mode>): Ditto.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (vsetvl_insn_p): Add condition to avoid ICE.
! 	(vsetvl_discard_result_insn_p): New function.
! 	(reg_killed_by_bb_p): rename to find_reg_killed_by.
! 	(find_reg_killed_by): New name.
! 	(get_vl): allow it to be called by more functions.
! 	(has_vsetvl_killed_avl_p): Add condition.
! 	(get_avl): allow it to be called by more functions.
! 	(insn_should_be_added_p): New function.
! 	(get_all_nonphi_defs): Refine function.
! 	(get_all_sets): Ditto.
! 	(get_same_bb_set): New function.
! 	(any_insn_in_bb_p): Ditto.
! 	(any_set_in_bb_p): Ditto.
! 	(get_vl_vtype_info): Add VLMAX forward optimization.
! 	(source_equal_p): Fix issues.
! 	(extract_single_source): Refine.
! 	(avl_info::multiple_source_equal_p): New function.
! 	(avl_info::operator==): Adjust for final version.
! 	(vl_vtype_info::operator==): Ditto.
! 	(vl_vtype_info::same_avl_p): Ditto.
! 	(vector_insn_info::parse_insn): Ditto.
! 	(vector_insn_info::available_p): New function.
! 	(vector_insn_info::merge): Adjust for final version.
! 	(vector_insn_info::dump): Add hard_empty.
! 	(pass_vsetvl::hard_empty_block_p): New function.
! 	(pass_vsetvl::backward_demand_fusion): Adjust for final version.
! 	(pass_vsetvl::forward_demand_fusion): Ditto.
! 	(pass_vsetvl::demand_fusion): Ditto.
! 	(pass_vsetvl::cleanup_illegal_dirty_blocks): New function.
! 	(pass_vsetvl::compute_local_properties): Adjust for final version.
! 	(pass_vsetvl::can_refine_vsetvl_p): Ditto.
! 	(pass_vsetvl::refine_vsetvls): Ditto.
! 	(pass_vsetvl::commit_vsetvls): Ditto.
! 	(pass_vsetvl::propagate_avl): New function.
! 	(pass_vsetvl::lazy_vsetvl): Adjust for new version.
! 	* config/riscv/riscv-vsetvl.h (enum def_type): New enum.
  
! 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/108560
! 	* doc/extend.texi: Fix up return type of __builtin_va_arg_pack_len
! 	from size_t to int.
  
! 2023-01-27  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR ipa/106061
! 	* cgraph.cc (cgraph_edge::verify_corresponds_to_fndecl): Allow
! 	redirection of calls to __builtin_trap in addition to redirection
! 	to __builtin_unreachable.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (before_p): Fix bug.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (gen_vsetvl_pat): Refine function args.
! 	(emit_vsetvl_insn): Ditto.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md: Fix constraints.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector-iterators.md: Add TARGET_MIN_VLEN > 32 predicates.
  
! 2023-01-27  Patrick Palka  <ppalka@redhat.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	* tree-core.h (tree_code_type, tree_code_length): For
! 	C++17 and later, add inline keyword, otherwise don't define
! 	the arrays, but declare extern arrays.
! 	* tree.cc (tree_code_type, tree_code_length): Define these
! 	arrays for C++14 and older.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.h: Change it into public.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Reorder VSETVL
! 	pass.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (pass_vsetvl::execute): Always call split_all_insns.
  
! 2023-01-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md: Fix incorrect attributes.
  
! 2023-01-27  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/loongarch/gnu-user.h (GNU_USER_TARGET_MATHFILE_SPEC):
! 	Don't add crtfastmath.o for -shared.
  
! 2023-01-27  Alexandre Oliva  <oliva@gnu.org>
  
! 	* doc/options.texi (option, RejectNegative): Mention that
! 	-g-started options are also implicitly negatable.
  
! 2023-01-26  Kito Cheng  <kito.cheng@sifive.com>
  
! 	* config/riscv/riscv-vector-builtins.cc (register_builtin_types):
! 	Use get_typenode_from_name to get fixed-width integer type
! 	nodes.
! 	* config/riscv/riscv-vector-builtins.def: Update define with
! 	fixed-width integer type nodes.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (same_bb_and_before_p): Remove it.
! 	(real_insn_and_same_bb_p): New function.
! 	(same_bb_and_after_or_equal_p): Remove it.
! 	(before_p): New function.
! 	(reg_killed_by_bb_p): Ditto.
! 	(has_vsetvl_killed_avl_p): Ditto.
! 	(get_vl): Move location so that we can call it.
! 	(anticipatable_occurrence_p): Fix issue of AVL=REG support.
! 	(available_occurrence_p): Ditto.
! 	(dominate_probability_p): Remove it.
! 	(can_backward_propagate_p): Remove it.
! 	(get_all_nonphi_defs): New function.
! 	(get_all_predecessors): Ditto.
! 	(any_insn_in_bb_p): Ditto.
! 	(insert_vsetvl): Adjust AVL REG.
! 	(source_equal_p): New function.
! 	(extract_single_source): Ditto.
! 	(avl_info::single_source_equal_p): Ditto.
! 	(avl_info::operator==): Adjust for AVL=REG.
! 	(vl_vtype_info::same_avl_p): Ditto.
! 	(vector_insn_info::set_demand_info): Remove it.
! 	(vector_insn_info::compatible_p): Adjust for AVL=REG.
! 	(vector_insn_info::compatible_avl_p): New function.
! 	(vector_insn_info::merge): Adjust AVL=REG.
! 	(vector_insn_info::dump): Ditto.
! 	(pass_vsetvl::merge_successors): Remove it.
! 	(enum fusion_type): New enum.
! 	(pass_vsetvl::get_backward_fusion_type): New function.
! 	(pass_vsetvl::backward_demand_fusion): Adjust for AVL=REG.
! 	(pass_vsetvl::forward_demand_fusion): Ditto.
! 	(pass_vsetvl::demand_fusion): Ditto.
! 	(pass_vsetvl::prune_expressions): Ditto.
! 	(pass_vsetvl::compute_local_properties): Ditto.
! 	(pass_vsetvl::cleanup_vsetvls): Ditto.
! 	(pass_vsetvl::commit_vsetvls): Ditto.
! 	(pass_vsetvl::init): Ditto.
! 	* config/riscv/riscv-vsetvl.h (enum fusion_type): New enum.
! 	(enum merge_type): New enum.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc
! 	(vector_infos_manager::vector_infos_manager): Add probability.
! 	(vector_infos_manager::dump): Ditto.
! 	(pass_vsetvl::compute_probabilities): Ditto.
! 	* config/riscv/riscv-vsetvl.h (struct vector_block_info): Ditto.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (vector_insn_info::operator==): Remove dirty_pat.
! 	(vector_insn_info::merge): Ditto.
! 	(vector_insn_info::dump): Ditto.
! 	(pass_vsetvl::merge_successors): Ditto.
! 	(pass_vsetvl::backward_demand_fusion): Ditto.
! 	(pass_vsetvl::forward_demand_fusion): Ditto.
! 	(pass_vsetvl::commit_vsetvls): Ditto.
! 	* config/riscv/riscv-vsetvl.h: Ditto.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (add_label_notes): Rename insn to
! 	rinsn.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (pass_vsetvl::backward_demand_fusion): Refine codes.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (pass_vsetvl::forward_demand_fusion):
! 	Add pre-check for redundant flow.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (vector_infos_manager::create_bitmap_vectors): New function.
! 	(vector_infos_manager::free_bitmap_vectors): Ditto.
! 	(pass_vsetvl::pre_vsetvl): Adjust codes.
! 	* config/riscv/riscv-vsetvl.h: New function declaration.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (can_backward_propagate_p): Fix for null iter_bb.
! 	(vector_insn_info::set_demand_info): New function.
! 	(pass_vsetvl::emit_local_forward_vsetvls): Adjust for refinement of Phase 3.
! 	(pass_vsetvl::merge_successors): Ditto.
! 	(pass_vsetvl::compute_global_backward_infos): Ditto.
! 	(pass_vsetvl::backward_demand_fusion): Ditto.
! 	(pass_vsetvl::forward_demand_fusion): Ditto.
! 	(pass_vsetvl::demand_fusion): New function.
! 	(pass_vsetvl::lazy_vsetvl): Adjust for refinement of phase 3.
! 	* config/riscv/riscv-vsetvl.h: New function declaration.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (vector_insn_info::operator>=): Fix available condition.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (change_vsetvl_insn): New function.
! 	(pass_vsetvl::compute_global_backward_infos): Simplify codes.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (loop_basic_block_p): Adjust function.
! 	(backward_propagate_worthwhile_p): Fix non-worthwhile.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (change_insn): Adjust in_group in validate_change.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vsetvl.cc (vector_infos_manager::all_same_avl_p): New function.
! 	(pass_vsetvl::can_refine_vsetvl_p): Add AVL check.
! 	(pass_vsetvl::commit_vsetvls): Ditto.
! 	* config/riscv/riscv-vsetvl.h: New function declaration.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/vector.md:
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins-bases.cc (class loadstore): use
! 	pred_store for vse.
! 	* config/riscv/riscv-vector-builtins.cc
! 	(function_expander::add_mem_operand): Refine function.
! 	(function_expander::use_contiguous_load_insn): Adjust new
! 	implementation.
! 	(function_expander::use_contiguous_store_insn): Ditto.
! 	* config/riscv/riscv-vector-builtins.h: Refine function.
! 	* config/riscv/vector.md (@pred_store<mode>): New pattern.
  
! 2023-01-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
  
! 	* config/riscv/riscv-vector-builtins.cc: Change to scalar pointer.
  
! 2023-01-26  Marek Polacek  <polacek@redhat.com>
  
! 	PR middle-end/108543
! 	* opts.cc (parse_sanitizer_options): Don't always clear SANITIZE_ADDRESS
! 	if it was previously set.
  
! 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108540
! 	* range-op-float.cc (foperator_equal::fold_range): If both op1 and op2
! 	are singletons, use range_true even if op1 != op2
! 	when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
! 	even if intersection of the ranges is empty and one has
! 	zero low bound and another zero high bound, use range_true_and_false
! 	rather than range_false.
! 	(foperator_not_equal::fold_range): If both op1 and op2
! 	are singletons, use range_false even if op1 != op2
! 	when one range is [-0.0, -0.0] and another [0.0, 0.0].  Similarly,
! 	even if intersection of the ranges is empty and one has
! 	zero low bound and another zero high bound, use range_true_and_false
! 	rather than range_true.
  
! 2023-01-26  Jakub Jelinek  <jakub@redhat.com>
  
! 	* value-relation.cc (kind_string): Add const.
! 	(rr_negate_table, rr_swap_table, rr_intersect_table,
! 	rr_union_table, rr_transitive_table): Add static const, change
! 	element type from relation_kind to unsigned char.
! 	(relation_negate, relation_swap, relation_intersect, relation_union,
! 	relation_transitive): Cast rr_*_table element to relation_kind.
! 	(relation_to_code): Add static const.
! 	(relation_tests): Assert VREL_LAST is smaller than UCHAR_MAX.
  
! 2023-01-26  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108547
! 	* gimple-predicate-analysis.cc (value_sat_pred_p):
! 	Use widest_int.
  
! 2023-01-26  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
! 	PR tree-optimization/108522
! 	* tree-object-size.cc (compute_object_offset): Make EXPR
! 	argument non-const.  Call component_ref_field_offset.
  
! 2023-01-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
  
! 	* config/aarch64/aarch64-option-extensions.def (cssc): Specify
! 	FEATURE_STRING field.
  
! 2023-01-26  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/sourcebuild.texi: Refer to projects as GCC and GDB.
  
! 2023-01-25  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR modula2/102343
! 	PR modula2/108182
! 	* gcc.cc: Provide default specs for Modula-2 so that when the
! 	language is not built-in better diagnostics are emitted for
! 	attempts to use .mod or .m2i file extensions.
  
! 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/mve.md (mve_vqnegq_s<mode>): Fix spacing.
  
! 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/mve.md (mve_vqabsq_s<mode>): Fix spacing.
  
! 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/mve.md (mve_vnegq_f<mode>, mve_vnegq_s<mode>):
! 	Fix spacing.
  
! 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/mve.md (@mve_vclzq_s<mode>): Fix spacing.
  
! 2023-01-25  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/mve.md (mve_vclsq_s<mode>): Fix spacing.
  
! 2023-01-25  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108523
! 	* tree-ssa-sccvn.cc (visit_phi): Avoid using the exclusive
! 	backedge value for the result when using predication to
! 	prove equivalence.
  
! 2023-01-25  Richard Biener  <rguenther@suse.de>
  
! 	* doc/lto.texi (Command line options): Reword and update reference
! 	to removed lto_read_all_file_options.
  
! 2023-01-25  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.md (umax<mode>3): Separate the CNT and CSSC
! 	tests.
  
! 2023-01-25  Gerald Pfeifer  <gerald@pfeifer.com>
  
! 	* doc/contrib.texi: Add Jose E. Marchesi.
  
! 2023-01-25  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108498
! 	* gimple-ssa-store-merging.cc (class store_operand_info):
! 	End coment with full stop rather than comma.
! 	(split_group): Likewise.
! 	(merged_store_group::apply_stores): Clear string_concatenation if
! 	start or end aren't on a byte boundary.
  
! 2023-01-25  Siddhesh Poyarekar  <siddhesh@gotplt.org>
! 	    Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108522
! 	* tree-object-size.cc (compute_object_offset): Use
! 	TREE_OPERAND(ref, 2) for COMPONENT_REF when available.
  
! 2023-01-24  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md:
! 	Fix exit from loops detecting references before overwriting in the
! 	split pattern.
  
! 2023-01-24  Vladimir N. Makarov  <vmakarov@redhat.com>
  
! 	* lra-constraints.cc (get_hard_regno): Remove final_p arg.  Always
! 	do elimination but only for hard register.
! 	(operands_match_p, uses_hard_regs_p, process_alt_operands): Adjust
! 	calls of get_hard_regno.
  
! 2023-01-24  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
  
! 	* config/s390/s390-d.cc (s390_d_target_versions): Fix detection
! 	of CPU version.
  
! 2023-01-24  Andre Vieira  <andre.simoesdiasvieira@arm.com>
  
! 	PR target/108177
! 	* config/arm/mve.md (mve_vstrbq_p_<supf><mode>, mve_vstrhq_p_fv8hf,
! 	mve_vstrhq_p_<supf><mode>, mve_vstrwq_p_<supf>v4si): Add memory operand
! 	as input operand.
  
! 2023-01-24  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config.gcc(csky-*-linux*): Define CSKY_ENABLE_MULTILIB
! 	and only include 'csky/t-csky-linux' when enable multilib.
! 	* config/csky/csky-linux-elf.h(SYSROOT_SUFFIX_SPEC): Don't
! 	define it when disable multilib.
  
! 2023-01-24  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108500
! 	* dominance.h (calculate_dominance_info): Add parameter
! 	to indicate fast-query compute, defaulted to true.
! 	* dominance.cc (calculate_dominance_info): Honor
! 	fast-query compute parameter.
! 	* tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Do
! 	not compute the dominator fast-query DFS numbers.
  
! 2023-01-24  Eric Biggers  <ebiggers@google.com>
  
! 	PR bootstrap/90543
! 	* optc-save-gen.awk: Fix copy-and-paste error.
  
! 2023-01-24  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/108474
! 	* cgraphbuild.cc: Include gimplify.h.
! 	(record_reference): Replace VAR_DECLs with DECL_HAS_VALUE_EXPR_P with
! 	their corresponding DECL_VALUE_EXPR expressions after unsharing.
  
! 2023-01-24  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	PR target/108505
! 	* config.gcc (tm_file): Move the variable out of loop.
  
! 2023-01-24  Lulu Cheng  <chenglulu@loongson.cn>
! 	    Yang Yujie  <yangyujie@loongson.cn>
  
! 	PR target/107731
! 	* config/loongarch/loongarch.cc (loongarch_classify_address):
! 	Add precessint for CONST_INT.
! 	(loongarch_print_operand_reloc): Operand modifier 'c' is supported.
! 	(loongarch_print_operand): Increase the processing of '%c'.
! 	* doc/extend.texi: Adds documents for LoongArch operand modifiers.
! 	And port the public operand modifiers information to this document.
  
! 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* doc/invoke.texi (-mbranch-protection): Update documentation.
  
! 2023-01-23  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/sparc/freebsd.h (ENDFILE_SPEC): Don't add crtfastmath.o
! 	for -shared.
! 	* config/sparc/linux.h (ENDFILE_SPEC): Likewise.
! 	* config/sparc/linux64.h (ENDFILE_SPEC): Likewise.
! 	* config/sparc/sp-elf.h (ENDFILE_SPEC): Likewise.
! 	* config/sparc/sp64-elf.h (ENDFILE_SPEC): Likewise.
  
! 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/aout.h (ra_auth_code): Add entry in enum.
! 	* config/arm/arm.cc (emit_multi_reg_push): Add RA_AUTH_CODE register
! 	to dwarf frame expression.
! 	(arm_emit_multi_reg_pop): Restore RA_AUTH_CODE register.
! 	(arm_expand_prologue): Update frame related information and reg notes
! 	for pac/pacbit insn.
! 	(arm_regno_class): Check for pac pseudo reigster.
! 	(arm_dbx_register_number): Assign ra_auth_code register number in dwarf.
! 	(arm_init_machine_status): Set pacspval_needed to zero.
! 	(arm_debugger_regno): Check for PAC register.
! 	(arm_unwind_emit_sequence): Print .save directive with ra_auth_code
! 	register.
! 	(arm_unwind_emit_set): Add entry for IP_REGNUM in switch case.
! 	(arm_unwind_emit): Update REG_CFA_REGISTER case._
! 	* config/arm/arm.h (FIRST_PSEUDO_REGISTER): Modify.
! 	(DWARF_PAC_REGNUM): Define.
! 	(IS_PAC_REGNUM): Likewise.
! 	(enum reg_class): Add PAC_REG entry.
! 	(machine_function): Add pacbti_needed state to structure.
! 	* config/arm/arm.md (RA_AUTH_CODE): Define.
  
! 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config.gcc ($tm_file): Update variable.
! 	* config/arm/arm-mlib.h: Create new header file.
! 	* config/arm/t-rmprofile (MULTI_ARCH_DIRS_RM): Rename mbranch-protection
! 	multilib arch directory.
! 	(MULTILIB_REUSE): Add multilib reuse rules.
! 	(MULTILIB_MATCHES): Add multilib match rules.
  
! 2023-01-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* config/arm/arm-cpus.in (cortex-m85): Define new CPU.
! 	* config/arm/arm-tables.opt: Regenerate.
! 	* config/arm/arm-tune.md: Likewise.
! 	* doc/invoke.texi (Arm Options): Document -mcpu=cortex-m85.
! 	* (-mfix-cmse-cve-2021-35465): Likewise.
  
! 2023-01-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108482
! 	* tree-vect-generic.cc (expand_vector_operations): Fold remaining
! 	.LOOP_DIST_ALIAS calls.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config.gcc (arm*-*-*): Add 'aarch-bti-insert.o' object.
! 	* config/arm/arm-protos.h: Update.
! 	* config/arm/aarch-common-protos.h: Declare
! 	'aarch_bti_arch_check'.
! 	* config/arm/arm.cc (aarch_bti_enabled) Update.
! 	(aarch_bti_j_insn_p, aarch_pac_insn_p, aarch_gen_bti_c)
! 	(aarch_gen_bti_j, aarch_bti_arch_check): New functions.
! 	* config/arm/arm.md (bti_nop): New insn.
! 	* config/arm/t-arm (PASSES_EXTRA): Add 'arm-passes.def'.
! 	(aarch-bti-insert.o): New target.
! 	* config/arm/unspecs.md (VUNSPEC_BTI_NOP): New unspec.
! 	* config/arm/aarch-bti-insert.cc (rest_of_insert_bti): Verify arch
! 	compatibility.
! 	(gate): Make use of 'aarch_bti_arch_check'.
! 	* config/arm/arm-passes.def: New file.
! 	* config/aarch64/aarch64.cc (aarch_bti_arch_check): New function.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config.gcc (aarch64*-*-*): Rename 'aarch64-bti-insert.o' into
! 	'aarch-bti-insert.o'.
! 	* config/aarch64/aarch64-protos.h: Remove 'aarch64_bti_enabled'
! 	proto.
! 	* config/aarch64/aarch64.cc (aarch_bti_enabled): Rename.
! 	(aarch_bti_j_insn_p, aarch_pac_insn_p): New functions.
! 	(aarch64_output_mi_thunk)
! 	(aarch64_print_patchable_function_entry)
! 	(aarch64_file_end_indicate_exec_stack): Update renamed function
! 	calls to renamed functions.
! 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Likewise.
! 	* config/aarch64/t-aarch64 (aarch-bti-insert.o): Update
! 	target.
! 	* config/aarch64/aarch64-bti-insert.cc: Delete.
! 	* config/arm/aarch-bti-insert.cc: New file including and
! 	generalizing code from aarch64-bti-insert.cc.
! 	* config/arm/aarch-common-protos.h: Update.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/arm.h (arm_arch8m_main): Declare it.
! 	* config/arm/arm-protos.h (arm_current_function_pac_enabled_p):
! 	Declare it.
! 	* config/arm/arm.cc (arm_arch8m_main): Define it.
! 	(arm_option_reconfigure_globals): Set arm_arch8m_main.
! 	(arm_compute_frame_layout, arm_expand_prologue)
! 	(thumb2_expand_return, arm_expand_epilogue)
! 	(arm_conditional_register_usage): Update for pac codegen.
! 	(arm_current_function_pac_enabled_p): New function.
! 	(aarch_bti_enabled) New function.
! 	(use_return_insn): Return zero when pac is enabled.
! 	* config/arm/arm.md (pac_ip_lr_sp, pacbti_ip_lr_sp, aut_ip_lr_sp):
! 	Add new patterns.
! 	* config/arm/unspecs.md (UNSPEC_PAC_NOP)
! 	(VUNSPEC_PACBTI_NOP, VUNSPEC_AUT_NOP): Add unspecs.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
  
! 	* config/arm/t-rmprofile: Add multilib rules for march +pacbti and
! 	mbranch-protection.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
  
! 	* config/arm/arm.cc (arm_file_start): Emit EABI attributes for
! 	Tag_PAC_extension, Tag_BTI_extension, TAG_BTI_use, TAG_PACRET_use.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
! 	    Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* ginclude/unwind-arm-common.h (_Unwind_VRS_RegClass): Introduce
! 	new pseudo register class _UVRSC_PAC.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
  
! 	* config/arm/arm-c.cc (arm_cpu_builtins): Define
! 	__ARM_FEATURE_BTI_DEFAULT, __ARM_FEATURE_PAC_DEFAULT,
! 	__ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
  
! 	* doc/sourcebuild.texi: Document arm_pacbti_hw.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
! 	    Richard Earnshaw  <Richard.Earnshaw@arm.com>
  
! 	* config/arm/arm.cc (arm_configure_build_target): Parse and validate
! 	-mbranch-protection option and initialize appropriate data structures.
! 	* config/arm/arm.opt (-mbranch-protection): New option.
! 	* doc/invoke.texi (Arm Options): Document it.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
  
! 	* config/arm/arm.h (TARGET_HAVE_PACBTI): New macro.
! 	* config/arm/arm-cpus.in (pacbti): New feature.
! 	* doc/invoke.texi (Arm Options): Document it.
  
! 2023-01-23  Andrea Corallo  <andrea.corallo@arm.com>
! 	    Tejas Belagod   <tbelagod@arm.com>
  
! 	* common/config/aarch64/aarch64-common.cc: Include aarch-common.h.
! 	(all_architectures): Fix comment.
! 	(aarch64_parse_extension): Rename return type, enum value names.
! 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Rename
! 	factored out aarch_ra_sign_scope and aarch_ra_sign_key variables.
! 	Also rename corresponding enum values.
! 	* config/aarch64/aarch64-opts.h (aarch64_function_type): Factor
! 	out aarch64_function_type and move it to common code as
! 	aarch_function_type in aarch-common.h.
! 	* config/aarch64/aarch64-protos.h: Include common types header,
! 	move out types aarch64_parse_opt_result and aarch64_key_type to
! 	aarch-common.h
! 	* config/aarch64/aarch64.cc: Move mbranch-protection parsing types
! 	and functions out into aarch-common.h and aarch-common.cc.  Fix up
! 	all the name changes resulting from the move.
! 	* config/aarch64/aarch64.md: Fix up aarch64_ra_sign_key type name change
! 	and enum value.
! 	* config/aarch64/aarch64.opt: Include aarch-common.h to import
! 	type move.  Fix up name changes from factoring out common code and
! 	data.
! 	* config/arm/aarch-common-protos.h: Export factored out routines to both
! 	backends.
! 	* config/arm/aarch-common.cc: Include newly factored out types.
! 	Move all mbranch-protection code and data structures from
! 	aarch64.cc.
! 	* config/arm/aarch-common.h: New header that declares types shared
! 	between aarch32 and aarch64 backends.
! 	* config/arm/arm-protos.h: Declare types and variables that are
! 	made common to aarch64 and aarch32 backends - aarch_ra_sign_key,
! 	aarch_ra_sign_scope and aarch_enable_bti.
! 	* config/arm/arm.opt (config/arm/aarch-common.h): Include header.
! 	(aarch_ra_sign_scope, aarch_enable_bti): Declare variable.
! 	* config/arm/arm.cc: Add missing includes.
  
! 2023-01-23  Tobias Burnus  <tobias@codesourcery.com>
  
! 	* doc/install.texi (amdgcn, nvptx): Require newlib 4.3.0.
  
! 2023-01-23  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108449
! 	* cgraphunit.cc (check_global_declaration): Do not turn
! 	undefined statics into externs.
  
! 2023-01-22  Dimitar Dimitrov  <dimitar@dinux.eu>
  
! 	* config/pru/pru.h (CLZ_DEFINED_VALUE_AT_ZERO): Fix value for QI
! 	and HI input modes.
! 	* config/pru/pru.md (clz): Fix generated code for QI and HI
! 	input modes.
  
! 2023-01-22  Cupertino Miranda  <cupertino.miranda@oracle.com>
  
! 	* config/v850/v850.cc (v850_select_section): Put const volatile
! 	objects into read-only sections.
  
! 2023-01-20  Tejas Belagod  <tejas.belagod@arm.com>
  
! 	* config/aarch64/arm_neon.h (vmull_p64, vmull_high_p64, vaeseq_u8,
! 	vaesdq_u8, vaesmcq_u8, vaesimcq_u8): Gate under "nothing+aes".
! 	(vsha1*_u32, vsha256*_u32): Gate under "nothing+sha2".
  
! 2023-01-20  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108457
! 	* tree-ssa-loop-niter.cc (build_cltz_expr): Use
! 	SCALAR_INT_TYPE_MODE (utype) directly as C[LT]Z_DEFINED_VALUE_AT_ZERO
! 	argument instead of a temporary.  Formatting fixes.
  
! 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108447
! 	* value-relation.cc (rr_union_table): Fix VREL_UNDEFINED row order.
! 	(relation_tests): Add self-tests for relation_{intersect,union}
! 	commutativity.
! 	* selftest.h (relation_tests): Declare.
! 	* function-tests.cc (test_ranges): Call it.
  
! 2023-01-19  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/108436
! 	* config/i386/i386-expand.cc (ix86_expand_builtin): Check
! 	invalid third argument to __builtin_ia32_prefetch.
  
! 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/108459
! 	* omp-expand.cc (expand_omp_for_init_counts): Use fold_build1 rather
! 	than fold_unary for NEGATE_EXPR.
  
! 2023-01-19  Christophe Lyon  <christophe.lyon@arm.com>
  
! 	PR target/108411
! 	* config/aarch64/aarch64.cc (aarch64_layout_arg): Improve
! 	comment. Move assert about alignment a bit later.
  
! 2023-01-19  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108440
! 	* tree-ssa-forwprop.cc: Include gimple-range.h.
! 	(simplify_rotate): For the forms with T2 wider than T and shift counts of
! 	Y and B - Y add & (B - 1) masking for the rotate count if Y could be equal
! 	to B.  For the forms with T2 wider than T and shift counts of
! 	Y and (-Y) & (B - 1), don't punt if range could be [B, B2], but only if
! 	range doesn't guarantee Y < B or Y = N * B.  If range doesn't guarantee
! 	Y < B, also add & (B - 1) masking for the rotate count.  Use lazily created
! 	pass specific ranger instead of get_global_range_query.
! 	(pass_forwprop::execute): Disable that ranger at the end of pass if it has
! 	been created.
  
! 2023-01-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
! 	exact_log2 (INTVAL (operands[2])) >= 0 as condition for gating
! 	the pattern.
! 	(aarch64_simd_vec_copy_lane<mode>): Likewise.
! 	(aarch64_simd_vec_copy_lane_<vswap_width_name><mode>): Likewise.
  
! 2023-01-19  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR debug/106746
! 	* sched-deps.cc (sched_analyze_2): Skip cselib address lookup
! 	within debug insns.
  
! 2023-01-18  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/107944
! 	* cgraph.cc (cgraph_node::remove): Check whether nodes up the
! 	lcone_of chain also do not need the body.
  
! 2023-01-18  Richard Biener  <rguenther@suse.de>
  
! 	Revert:
! 	2022-12-16  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/108086
! 	* tree-inline.cc (remap_ssa_name): Do not unshare the
! 	result from the decl_map.
  
! 2023-01-18  Murray Steele  <murray.steele@arm.com>
  
! 	PR target/108442
! 	* config/arm/arm_mve.h (__arm_vst1q_p_u8): Use prefixed intrinsic
! 	function.
! 	(__arm_vst1q_p_s8): Likewise.
! 	(__arm_vld1q_z_u8): Likewise.
! 	(__arm_vld1q_z_s8): Likewise.
! 	(__arm_vst1q_p_u16): Likewise.
! 	(__arm_vst1q_p_s16): Likewise.
! 	(__arm_vld1q_z_u16): Likewise.
! 	(__arm_vld1q_z_s16): Likewise.
! 	(__arm_vst1q_p_u32): Likewise.
! 	(__arm_vst1q_p_s32): Likewise.
! 	(__arm_vld1q_z_u32): Likewise.
! 	(__arm_vld1q_z_s32): Likewise.
! 	(__arm_vld1q_z_f16): Likewise.
! 	(__arm_vst1q_p_f16): Likewise.
! 	(__arm_vld1q_z_f32): Likewise.
! 	(__arm_vst1q_p_f32): Likewise.
  
! 2023-01-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md (xorsi3_internal):
! 	Rename from the original of "xorsi3".
! 	(xorsi3): New expansion pattern that emits addition rather than
! 	bitwise-XOR when the second source is a constant of -2147483648
! 	if TARGET_DENSITY.
  
! 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
! 	    Andrew Pinski  <apinski@marvell.com>
  
! 	PR target/108396
! 	* config/rs6000/rs6000-overload.def (VEC_VSUBCUQ): Fix typo
! 	vec_vsubcuqP with vec_vsubcuq.
  
! 2023-01-18  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/108348
! 	* config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
! 	support for invalid uses of MMA opaque type in function arguments.
  
! 2023-01-18  liuhongt  <hongtao.liu@intel.com>
  
! 	PR target/55522
! 	* config/i386/cygwin.h (ENDFILE_SPEC): Link crtfastmath.o
! 	whenever -mdaz-ftz is specified. Don't link crtfastmath.o when
! 	-share or -mno-daz-ftz is specified.
! 	* config/i386/darwin.h (ENDFILE_SPEC): Ditto.
! 	* config/i386/mingw32.h (ENDFILE_SPEC): Ditto.
  
! 2023-01-17  Jose E. Marchesi  <jose.marchesi@oracle.com>
  
! 	* config/bpf/bpf.cc (bpf_option_override): Disable
! 	-fstack-protector.
  
! 2023-01-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/106523
! 	* tree-ssa-forwprop.cc (simplify_rotate): For the
! 	patterns with (-Y) & (B - 1) in one operand's shift
! 	count and Y in another, if T2 has wider precision than T,
! 	punt if Y could have a value in [B, B2 - 1] range.
  
! 2023-01-16  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR target/105980
! 	* config/i386/i386.cc (x86_output_mi_thunk): Disable
! 	-mforce-indirect-call for PIC in 32-bit mode.
  
! 2023-01-16  Jan Hubicka  <hubicka@ucw.cz>
  
! 	PR ipa/106077
! 	* ipa-modref.cc (modref_access_analysis::analyze): Use
! 	find_always_executed_bbs.
! 	* ipa-sra.cc (process_scan_results): Likewise.
! 	* ipa-utils.cc (stmt_may_terminate_function_p): New function.
! 	(find_always_executed_bbs): New function.
! 	* ipa-utils.h (stmt_may_terminate_function_p): Declare.
! 	(find_always_executed_bbs): Declare.
  
! 2023-01-16  Jan Hubicka  <jh@suse.cz>
  
! 	* config/i386/i386.cc (ix86_vectorize_builtin_scatter): Guard scatter
! 	by TARGET_USE_SCATTER.
! 	* config/i386/i386.h (TARGET_USE_SCATTER_2PARTS,
! 	TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New macros.
! 	* config/i386/x86-tune.def (TARGET_USE_SCATTER_2PARTS,
! 	TARGET_USE_SCATTER_4PARTS, TARGET_USE_SCATTER): New tunes.
! 	(X86_TUNE_AVOID_256FMA_CHAINS, X86_TUNE_AVOID_512FMA_CHAINS): Disable
! 	for znver4.  (X86_TUNE_USE_GATHER): Disable for zen4.
  
! 2023-01-16  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/sol2.h (ENDFILE_SPEC): Don't add crtfastmath.o for -shared.
  
! 2023-01-16  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
  
! 	PR target/96795
! 	PR target/107515
! 	* config/arm/arm_mve.h (__ARM_mve_coerce2): Split types.
! 	(__ARM_mve_coerce3): Likewise.
  
! 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
  
! 	* tree-ssa-loop-niter.cc (build_popcount_expr): Add IFN support.
  
! 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
  
! 	* tree-ssa-loop-niter.cc (number_of_iterations_cltz): New.
! 	(number_of_iterations_bitcount): Add call to the above.
! 	(number_of_iterations_exit_assumptions): Add EQ_EXPR case for
! 	c[lt]z idiom recognition.
  
! 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
  
! 	* doc/sourcebuild.texi: Add missing target attributes.
  
! 2023-01-16  Andrew Carlotti  <andrew.carlotti@arm.com>
  
! 	PR tree-optimization/94793
! 	* tree-scalar-evolution.cc (expression_expensive_p): Add checks
! 	for c[lt]z optabs.
! 	* tree-ssa-loop-niter.cc (build_cltz_expr): New.
! 	(number_of_iterations_cltz_complement): New.
! 	(number_of_iterations_bitcount): Add call to the above.
  
! 2023-01-16  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* doc/extend.texi (Common Function Attributes): Fix grammar.
  
! 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR other/108413
! 	* config/riscv/riscv-vsetvl.h: Add space in between Copyright and (C).
! 	* config/riscv/riscv-vsetvl.cc: Likewise.
  
! 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR c++/105593
! 	* config/i386/xmmintrin.h (_mm_undefined_ps): Temporarily
! 	disable -Winit-self using pragma GCC diagnostic ignored.
! 	* config/i386/emmintrin.h (_mm_undefined_pd, _mm_undefined_si128):
! 	Likewise.
! 	* config/i386/avxintrin.h (_mm256_undefined_pd, _mm256_undefined_ps,
! 	_mm256_undefined_si256): Likewise.
! 	* config/i386/avx512fintrin.h (_mm512_undefined_pd,
! 	_mm512_undefined_ps, _mm512_undefined_epi32): Likewise.
! 	* config/i386/avx512fp16intrin.h (_mm_undefined_ph,
! 	_mm256_undefined_ph, _mm512_undefined_ph): Likewise.
  
! 2023-01-16  Kewen Lin  <linkw@linux.ibm.com>
  
! 	PR target/108272
! 	* config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): Add the
! 	support for invalid uses in inline asm, factor out the checking and
! 	erroring to lambda function check_and_error_invalid_use.
  
! 2023-01-15  Aldy Hernandez  <aldyh@redhat.com>
  
! 	PR tree-optimization/107608
! 	* range-op-float.cc (range_operator_float::fold_range): Avoid
! 	folding into INF when flag_trapping_math.
! 	* value-range.h (frange::known_isinf): Return false for possible NANs.
  
! 2023-01-15  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config.gcc (csky-*-*): Support --with-float=softfp.
  
! 2023-01-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa-protos.h (order_regs_for_local_alloc):
! 	Rename to xtensa_adjust_reg_alloc_order.
! 	* config/xtensa/xtensa.cc (xtensa_adjust_reg_alloc_order):
! 	Ditto.  And also remove code to reorder register numbers for
! 	leaf functions, rename the tables, and adjust the allocation
! 	order for the call0 ABI to use register A0 more.
! 	(xtensa_leaf_regs): Remove.
! 	* config/xtensa/xtensa.h (REG_ALLOC_ORDER): Cosmetics.
! 	(order_regs_for_local_alloc): Rename as the above.
! 	(LEAF_REGISTERS, LEAF_REG_REMAP, leaf_function): Remove.
  
! 2023-01-14  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
  
! 	* config/aarch64/aarch64-sve.md (aarch64_vec_duplicate_vq<mode>_le):
! 	Change to define_insn_and_split to fold ldr+dup to ld1rq.
! 	* config/aarch64/predicates.md (aarch64_sve_dup_ld1rq_operand): New.
  
! 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
  
! 	* hash-table.h (is_deleted): Precheck !is_empty.
! 	(mark_deleted): Postcheck !is_empty.
! 	(copy constructor): Test is_empty before is_deleted.
  
! 2023-01-14  Alexandre Oliva  <oliva@adacore.com>
  
! 	PR target/40457
! 	* config/arm/arm.md (movmisaligndi): Prefer aligned SImode
! 	moves.
  
! 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR rtl-optimization/108274
! 	* function.cc (thread_prologue_and_epilogue_insns): Also update the
! 	DF information for calls in a few more cases.
  
! 2023-01-13  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa-linux.h (TARGET_SYNC_LIBCALL): Delete define.
! 	* config/pa/pa.cc (pa_init_libfuncs): Use MAX_SYNC_LIBFUNC_SIZE
! 	define.
! 	* config/pa/pa.h (TARGET_SYNC_LIBCALLS): Use flag_sync_libcalls.
! 	(MAX_SYNC_LIBFUNC_SIZE): Define.
! 	(TARGET_CPU_CPP_BUILTINS): Define __SOFTFP__ when soft float is
! 	enabled.
! 	* config/pa/pa.md (atomic_storeqi): Emit __atomic_exchange_1
! 	libcall when sync libcalls are disabled.
! 	(atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
! 	(atomic_loaddi): Emit __atomic_load_8 libcall when sync libcalls
! 	are disabled on 32-bit target.
! 	* config/pa/pa.opt (matomic-libcalls): New option.
! 	* doc/invoke.texi (HPPA Options): Update.
  
! 2023-01-13  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR rtl-optimization/108117
! 	PR rtl-optimization/108132
! 	* sched-deps.cc (deps_analyze_insn): Do not schedule across
! 	calls before reload.
  
! 2023-01-13  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
  
! 	* common/config/arm/arm-common.cc (arm_canon_arch_option_1): Ignore cde
! 	options for -mlibarch.
! 	* config/arm/arm-cpus.in (begin cpu cortex-m55): Add cde options.
! 	* doc/invoke.texi (CDE): Document options for Cortex-M55 CPU.
  
! 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
  
! 	* attribs.cc (strict_flex_array_level_of): Move this function to ...
! 	* attribs.h (strict_flex_array_level_of): Remove the declaration.
! 	* gimple-array-bounds.cc (array_bounds_checker::check_array_ref):
! 	replace the referece to strict_flex_array_level_of with
! 	DECL_NOT_FLEXARRAY.
! 	* tree.cc (component_ref_size): Likewise.
  
! 2023-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/arm/linux-eabi.h (ENDFILE_SPEC): Don't add
! 	crtfastmath.o for -shared.
! 	* config/arm/unknown-elf.h (STARTFILE_SPEC): Likewise.
  
! 2023-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR target/55522
! 	* config/aarch64/aarch64-elf-raw.h (ENDFILE_SPEC): Don't add
! 	crtfastmath.o for -shared.
! 	* config/aarch64/aarch64-freebsd.h (GNU_USER_TARGET_MATHFILE_SPEC):
  	Likewise.
! 	* config/aarch64/aarch64-linux.h (GNU_USER_TARGET_MATHFILE_SPEC):
  	Likewise.
  
! 2023-01-13  Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.cc (aarch64_dwarf_frame_reg_mode): New
  	function.
! 	(TARGET_DWARF_FRAME_REG_MODE): Define.
  
! 2023-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR target/107209
! 	* config/aarch64/aarch64.cc (aarch64_gimple_fold_builtin): Don't
! 	update EH info on the fly.
  
! 2023-01-13  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108387
! 	* tree-ssa-sccvn.cc (visit_nary_op): Check for SSA_NAME
! 	value before inserting expression into the tables.
  
! 2023-01-12  Andrew Pinski  <apinski@marvell.com>
! 	    Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR tree-optimization/92342
! 	* match.pd ((m1 CMP m2) * d -> (m1 CMP m2) ? d : 0):
! 	Use tcc_comparison and :c for the multiply.
! 	(b & -(a CMP c) -> (a CMP c)?b:0): New pattern.
  
! 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
! 	    Richard Sandiford  <richard.sandiford@arm.com>
  
! 	PR target/105549
! 	* config/aarch64/aarch64.cc (aarch64_function_arg_alignment):
! 	Check DECL_PACKED for bitfield.
! 	(aarch64_layout_arg): Warn when parameter passing ABI changes.
! 	(aarch64_function_arg_boundary): Do not warn here.
! 	(aarch64_gimplify_va_arg_expr): Warn when parameter passing ABI
! 	changes.
  
! 2023-01-12  Christophe Lyon  <christophe.lyon@arm.com>
! 	    Richard Sandiford  <richard.sandiford@arm.com>
  
! 	* config/aarch64/aarch64.cc (aarch64_function_arg_alignment): Fix
! 	comment.
! 	(aarch64_layout_arg): Factorize warning conditions.
! 	(aarch64_function_arg_boundary): Fix typo.
! 	* function.cc (currently_expanding_function_start): New variable.
! 	(expand_function_start): Handle
! 	currently_expanding_function_start.
! 	* function.h (currently_expanding_function_start): Declare.
  
! 2023-01-12  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/99412
! 	* tree-ssa-reassoc.cc (is_phi_for_stmt): Remove.
! 	(swap_ops_for_binary_stmt): Remove reduction handling.
! 	(rewrite_expr_tree_parallel): Adjust.
! 	(reassociate_bb): Likewise.
! 	* tree-parloops.cc (build_new_reduction): Handle MINUS_EXPR.
  
! 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md (ctzsi2, ffssi2):
! 	Rearrange the emitting codes.
  
! 2023-01-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md (*btrue):
! 	Correct value of the attribute "length" that depends on
! 	TARGET_DENSITY and operands, and add '?' character to the register
! 	constraint of the compared operand.
  
! 2023-01-12  Alexandre Oliva  <oliva@adacore.com>
  
! 	* hash-table.h (expand): Check elements and deleted counts.
! 	(verify): Likewise.
  
! 2023-01-11  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR tree-optimization/71343
! 	* tree-ssa-sccvn.cc (visit_nary_op) <case LSHIFT_EXPR>: Make
! 	the value number of the expression X << C the same as the value
! 	number for the multiplication X * (1<<C).
  
! 2023-01-11  David Faust  <david.faust@oracle.com>
  
! 	PR target/108293
! 	* config/bpf/bpf.cc (bpf_print_operand): Correct handling for
! 	floating point modes.
  
! 2023-01-11  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR tree-optimization/108199
! 	* tree-sra.cc (sra_modify_expr): Deal with reverse storage order
! 	for bit-field references.
  
! 2023-01-11  Kewen Lin  <linkw@linux.ibm.com>
  
! 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Make
! 	OPTION_MASK_P10_FUSION implicit setting honour Power10 tuning setting.
! 	* config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER): Remove
! 	OPTION_MASK_P10_FUSION.
  
! 2023-01-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/107767
! 	* tree-cfgcleanup.cc (phi_alternatives_equal): Export.
! 	* tree-cfgcleanup.h (phi_alternatives_equal): Declare.
! 	* tree-switch-conversion.cc (switch_conversion::collect):
! 	Count unique non-default targets accounting for later
! 	merging opportunities.
  
! 2023-01-11  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/107976
! 	* params.opt: Limit JT params.
! 	* stmt.cc (emit_case_dispatch_table): Use auto_vec.
  
! 2023-01-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108352
! 	* tree-ssa-threadbackward.cc
! 	(back_threader_profitability::profitable_path_p): Adjust
! 	heuristic that allows non-multi-way branch threads creating
! 	irreducible loops.
! 	* doc/invoke.texi (--param fsm-scale-path-blocks): Remove.
! 	(--param fsm-scale-path-stmts): Adjust.
! 	* params.opt (--param=fsm-scale-path-blocks=): Remove.
! 	(-param=fsm-scale-path-stmts=): Adjust description.
  
! 2023-01-11  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108353
! 	* tree-ssa-propagate.cc (cfg_blocks_back, ssa_edge_worklist_back):
! 	Remove.
! 	(add_ssa_edge): Simplify.
! 	(add_control_edge): Likewise.
! 	(ssa_prop_init): Likewise.
! 	(ssa_prop_fini): Likewise.
! 	(ssa_propagation_engine::ssa_propagate): Likewise.
  
! 2023-01-11  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390.md (*not<mode>): New pattern.
  
! 2023-01-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.cc (xtensa_insn_cost):
! 	Let insn cost for size be obtained by applying COSTS_N_INSNS()
! 	to instruction length and then dividing by 3.
  
! 2023-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/106293
! 	* tree-ssa-dse.cc (dse_classify_store): Use a worklist to
! 	process degenerate PHI defs.
  
! 2023-01-10  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR rtl-optimization/106421
! 	* cprop.cc (bypass_block): Check that DEST is local to this
! 	function (non-NULL) before calling find_edge.
  
! 2023-01-10  Martin Jambor  <mjambor@suse.cz>
  
! 	PR ipa/108110
! 	* ipa-param-manipulation.h (ipa_param_body_adjustments): New members
! 	sort_replacements, lookup_first_base_replacement and
! 	m_sorted_replacements_p.
! 	* ipa-param-manipulation.cc: Define INCLUDE_ALGORITHM.
! 	(ipa_param_body_adjustments::register_replacement): Set
! 	m_sorted_replacements_p to false.
! 	(compare_param_body_replacement): New function.
! 	(ipa_param_body_adjustments::sort_replacements): Likewise.
! 	(ipa_param_body_adjustments::common_initialization): Call
! 	sort_replacements.
! 	(ipa_param_body_adjustments::ipa_param_body_adjustments): Initialize
! 	m_sorted_replacements_p.
! 	(ipa_param_body_adjustments::lookup_replacement_1): Rework to use
! 	std::lower_bound.
! 	(ipa_param_body_adjustments::lookup_first_base_replacement): New
! 	function.
! 	(ipa_param_body_adjustments::modify_call_stmt): Use
! 	lookup_first_base_replacement.
! 	* omp-simd-clone.cc (ipa_simd_modify_function_body): Call
! 	adjustments->sort_replacements.
  
! 2023-01-10  Richard Biener  <rguenther@suse.de>
  
! 	PR tree-optimization/108314
! 	* tree-vect-stmts.cc (vectorizable_condition): Do not
! 	perform BIT_NOT_EXPR optimization for EXTRACT_LAST_REDUCTION.
  
! 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config/csky/csky-linux-elf.h (SYSROOT_SUFFIX_SPEC): New.
  
! 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config/csky/csky.h (MULTILIB_DEFAULTS): Fix float abi option.
  
! 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config/csky/csky.cc (csky_cpu_cpp_builtins): Add builtin
! 	defines for soft float abi.
  
! 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config/csky/csky.md (smart_bseti): Change condition to CSKY_ISA_FEATURE (E1).
! 	(smart_bclri): Likewise.
! 	(fast_bseti): Change condition to CSKY_ISA_FEATURE (E2).
! 	(fast_bclri): Likewise.
! 	(fast_cmpnesi_i): Likewise.
! 	(*fast_cmpltsi_i): Likewise.
! 	(*fast_cmpgeusi_i): Likewise.
  
! 2023-01-10  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
  
! 	* config/csky/csky_insn_fpuv3.md (l<frm_pattern><fixsuop><mode>si2): Test
! 	flag_fp_int_builtin_inexact || !flag_trapping_math.
! 	(<frm_pattern><mode>2): Likewise.
  
! 2023-01-10  Andreas Krebbel  <krebbel@linux.ibm.com>
  
! 	* config/s390/s390.cc (s390_register_info): Check call_used_regs
! 	instead of hard-coding the register numbers for call saved
! 	registers.
! 	(s390_optimize_register_info): Likewise.
  
! 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* doc/gm2.texi (Overview): Fix @node markers.
! 	(Using): Likewise.  Remove subsections that were moved to Overview
! 	from the menu and move others around.
  
! 2023-01-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/108209
! 	* genmatch.cc (commutative_op): Fix return value for
! 	user-id with non-commutative first replacement.
  
! 2023-01-09  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR target/107453
! 	* calls.cc (expand_call): For calls with
! 	TYPE_NO_NAMED_ARGS_STDARG_P (funtype) use zero for n_named_args.
! 	Formatting fix.
  
! 2023-01-09  Richard Biener  <rguenther@suse.de>
  
! 	PR middle-end/69482
! 	* cfgexpand.cc (discover_nonconstant_array_refs_r): Volatile
! 	qualified accesses also force objects to memory.
  
! 2023-01-09  Martin Liska  <mliska@suse.cz>
  
! 	PR lto/108330
! 	* lto-cgraph.cc (compute_ltrans_boundary): Do not insert
! 	NULL (deleleted value) to a hash_set.
  
! 2023-01-08  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.md (*splice_bits):
! 	New insn_and_split pattern.
  
! 2023-01-07  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
  
! 	* config/xtensa/xtensa.cc
! 	(xtensa_split_imm_two_addends, xtensa_emit_add_imm):
! 	New helper functions.
! 	(xtensa_set_return_address, xtensa_output_mi_thunk):
! 	Change to use the helper function.
! 	(xtensa_emit_adjust_stack_ptr): Ditto.
! 	And also change to try reusing the content of scratch register
! 	A9 if the register is not modified in the function body.
  
! 2023-01-07  LIU Hao  <lh_mouse@126.com>
  
! 	PR middle-end/108300
! 	* config/xtensa/xtensa-dynconfig.c: Define `WIN32_LEAN_AND_MEAN`
! 	before <windows.h>.
! 	* diagnostic-color.cc: Likewise.
! 	* plugin.cc: Likewise.
! 	* prefix.cc: Likewise.
  
! 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
  
! 	* doc/extend.texi (__builtin_tgmath): Do not restate standard rule
! 	for handling real integer types.
  
! 2023-01-06  Tamar Christina  <tamar.christina@arm.com>
  
! 	Revert:
! 	2022-12-12  Tamar Christina  <tamar.christina@arm.com>
  
! 	* config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
! 	(mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
! 	aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
! 	@aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
! 	reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
! 	aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
! 	vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
! 	(aarch64_simd_dupv2hf): New.
! 	* config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
! 	Add E_V2HFmode.
! 	* config/aarch64/iterators.md (VHSDF_P): New.
! 	(V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
! 	Vel, q, vp): Add V2HF.
! 	* config/arm/types.md (neon_fp_reduc_add_h): New.
  
! 2023-01-06  Martin Liska  <mliska@suse.cz>
  
! 	PR middle-end/107966
! 	* doc/options.texi: Fix Var documentation in internal manual.
  
! 2023-01-05  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	Revert:
! 	2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
! 	RTL expansion to allow condition (mask) to be shared/reused,
! 	by avoiding overwriting pseudos and adding REG_EQUAL notes.
  
! 2023-01-05  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	* common.opt: Add -static-libgm2.
! 	* config/darwin.h (LINK_SPEC): Handle static-libgm2.
! 	* doc/gm2.texi: Document static-libgm2.
! 	* gcc.cc (driver_handle_option): Allow static-libgm2.
  
! 2023-01-05  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
  
! 	* common/config/i386/i386-common.cc (processor_alias_table):
! 	Use CPU_ZNVER4 for znver4.
! 	* config/i386/i386.md: Add znver4.md.
! 	* config/i386/znver4.md: New.
  
! 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR tree-optimization/108253
! 	* tree-vrp.cc (maybe_set_nonzero_bits): Handle var with pointer
! 	types.
  
! 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/108237
! 	* generic-match-head.cc: Include tree-pass.h.
! 	(canonicalize_math_p, optimize_vectors_before_lowering_p): Define
! 	to false if cfun and cfun->curr_properties has PROP_gimple_opt_math
! 	resp. PROP_gimple_lvec property set.
  
! 2023-01-04  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR sanitizer/108256
! 	* convert.cc (do_narrow): Punt for MULT_EXPR if original
! 	type doesn't wrap around and -fsanitize=signed-integer-overflow
! 	is on.
! 	* fold-const.cc (fold_unary_loc) <CASE_CONVERT>: Likewise.
  
! 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
  
! 	* common/config/i386/cpuinfo.h (get_intel_cpu): Handle Emeraldrapids.
! 	* common/config/i386/i386-common.cc: Add Emeraldrapids.
  
! 2023-01-04  Hu, Lin1  <lin1.hu@intel.com>
  
! 	* common/config/i386/cpuinfo.h (get_intel_cpu): Remove case 0xb5
! 	for meteorlake.
  
! 2023-01-03  Sandra Loosemore  <sandra@codesourcery.com>
  
! 	* cgraph.h (struct cgraph_node): Add gc_candidate bit, modify
! 	default constructor to initialize it.
! 	* cgraphunit.cc (expand_all_functions): Save gc_candidate functions
! 	for last and iterate to handle recursive calls.  Delete leftover
! 	candidates at the end.
! 	* omp-simd-clone.cc (simd_clone_create): Set gc_candidate bit
! 	on local clones.
! 	* tree-vect-stmts.cc (vectorizable_simd_clone_call): Clear
! 	gc_candidate bit when a clone is used.
  
! 2023-01-03  Florian Weimer  <fweimer@redhat.com>
  
! 	Revert:
! 	2023-01-02  Florian Weimer  <fweimer@redhat.com>
  
! 	* dwarf2cfi.cc (init_return_column_size): Remove.
! 	(init_one_dwarf_reg_size): Adjust.
! 	(generate_dwarf_reg_sizes): New function.  Extracted
! 	from expand_builtin_init_dwarf_reg_sizes.
! 	(expand_builtin_init_dwarf_reg_sizes): Call
! 	generate_dwarf_reg_sizes.
! 	* target.def (init_dwarf_reg_sizes_extra): Adjust
! 	hook signature.
! 	* config/msp430/msp430.cc
! 	(msp430_init_dwarf_reg_sizes_extra): Adjust.
! 	* config/rs6000/rs6000.cc
! 	(rs6000_init_dwarf_reg_sizes_extra): Likewise.
! 	* doc/tm.texi: Update.
  
! 2023-01-03  Florian Weimer  <fweimer@redhat.com>
  
! 	Revert:
! 	2023-01-02  Florian Weimer  <fweimer@redhat.com>
  
! 	* debug.h (dwarf_reg_sizes_constant): Declare.
! 	* dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
  
! 2023-01-03  Siddhesh Poyarekar  <siddhesh@gotplt.org>
  
! 	PR tree-optimization/105043
! 	* doc/extend.texi (Object Size Checking): Split out into two
! 	subsections and mention _FORTIFY_SOURCE.
  
! 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Rewrite
! 	RTL expansion to allow condition (mask) to be shared/reused,
! 	by avoiding overwriting pseudos and adding REG_EQUAL notes.
  
! 2023-01-03  Roger Sayle  <roger@nextmovesoftware.com>
  
! 	PR target/108229
! 	* config/i386/i386-features.cc
! 	(general_scalar_chain::compute_convert_gain) <case PLUS>: Consider
! 	the gain/cost of converting a MEM operand.
  
! 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR middle-end/108264
! 	* expr.cc (store_expr): For stores into SUBREG_PROMOTED_* targets
! 	from source which doesn't have scalar integral mode first convert
! 	it to outer_mode.
  
! 2023-01-03  Jakub Jelinek  <jakub@redhat.com>
  
! 	PR rtl-optimization/108263
! 	* cfgrtl.cc (fixup_reorder_chain): Avoid trying to redirect
! 	asm goto to EXIT.
  
! 2023-01-02  Alexander Monakov  <amonakov@ispras.ru>
  
! 	PR target/87832
! 	* config/i386/lujiazui.md (lujiazui_div): New automaton.
! 	(lua_div): New unit.
! 	(lua_idiv_qi): Correct unit in the reservation.
! 	(lua_idiv_qi_load): Ditto.
! 	(lua_idiv_hi): Ditto.
! 	(lua_idiv_hi_load): Ditto.
! 	(lua_idiv_si): Ditto.
! 	(lua_idiv_si_load): Ditto.
! 	(lua_idiv_di): Ditto.
! 	(lua_idiv_di_load): Ditto.
! 	(lua_fdiv_SF): Ditto.
! 	(lua_fdiv_SF_load): Ditto.
! 	(lua_fdiv_DF): Ditto.
! 	(lua_fdiv_DF_load): Ditto.
! 	(lua_fdiv_XF): Ditto.
! 	(lua_fdiv_XF_load): Ditto.
! 	(lua_ssediv_SF): Ditto.
! 	(lua_ssediv_load_SF): Ditto.
! 	(lua_ssediv_V4SF): Ditto.
! 	(lua_ssediv_load_V4SF): Ditto.
! 	(lua_ssediv_V8SF): Ditto.
! 	(lua_ssediv_load_V8SF): Ditto.
! 	(lua_ssediv_SD): Ditto.
! 	(lua_ssediv_load_SD): Ditto.
! 	(lua_ssediv_V2DF): Ditto.
! 	(lua_ssediv_load_V2DF): Ditto.
! 	(lua_ssediv_V4DF): Ditto.
! 	(lua_ssediv_load_V4DF): Ditto.
  
! 2023-01-02  Florian Weimer  <fweimer@redhat.com>
  
! 	* debug.h (dwarf_reg_sizes_constant): Declare.
! 	* dwarf2cfi.cc (dwarf_reg_sizes_constant): New function.
  
! 2023-01-02  Florian Weimer  <fweimer@redhat.com>
  
! 	* dwarf2cfi.cc (init_return_column_size): Remove.
! 	(init_one_dwarf_reg_size): Adjust.
! 	(generate_dwarf_reg_sizes): New function.  Extracted
! 	from expand_builtin_init_dwarf_reg_sizes.
! 	(expand_builtin_init_dwarf_reg_sizes): Call
! 	generate_dwarf_reg_sizes.
! 	* target.def (init_dwarf_reg_sizes_extra): Adjust
! 	hook signature.
! 	* config/msp430/msp430.cc
! 	(msp430_init_dwarf_reg_sizes_extra): Adjust.
! 	* config/rs6000/rs6000.cc
! 	(rs6000_init_dwarf_reg_sizes_extra): Likewise.
! 	* doc/tm.texi: Update.
  
! 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
  
! 	* gcc.cc (process_command): Update copyright notice dates.
! 	* gcov-dump.cc (print_version): Ditto.
! 	* gcov.cc (print_version): Ditto.
! 	* gcov-tool.cc (print_version): Ditto.
! 	* gengtype.cc (create_file): Ditto.
  	* doc/cpp.texi: Bump @copying's copyright year.
  	* doc/cppinternals.texi: Ditto.
  	* doc/gcc.texi: Ditto.
***************
*** 11058,11089 ****
  	* doc/install.texi: Ditto.
  	* doc/invoke.texi: Ditto.
  
! 2022-01-02  Uroš Bizjak  <ubizjak@gmail.com>
! 
! 	PR target/103861
! 	* config/i386/i386.h (VALID_SSE2_REG_MODE): Add V2QImode.
! 	(VALID_INT_MODE_P): Ditto.
! 	* config/i386/i386.c (ix86_secondary_reload): Handle
! 	V2QImode reloads from SSE register to memory.
! 	(vector_mode_supported_p): Always return true for V2QImode.
! 	* config/i386/i386.md (*subqi_ext<mode>_2): New insn pattern.
! 	(*negqi_ext<mode>_2): Ditto.
! 	* config/i386/mmx.md (movv2qi): New expander.
! 	(movmisalignv2qi): Ditto.
! 	(*movv2qi_internal): New insn pattern.
! 	(*pushv2qi2): Ditto.
! 	(negv2qi2 and splitters): Ditto.
! 	(<plusminus:insn>v2qi3 and splitters): Ditto.
! 
! 2022-01-02  John David Anglin  <danglin@gcc.gnu.org>
  
! 	* config/pa/pa.md (atomic_storeq): Use optab_libfunc to access
! 	sync_lock_test_and_set libfunc. Call convert_memory_address to
! 	convert memory address to Pmode.
! 	(atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
  
  
! Copyright (C) 2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 7611,7628 ----
  	* doc/install.texi: Ditto.
  	* doc/invoke.texi: Ditto.
  
! 2023-01-01  Roger Sayle  <roger@nextmovesoftware.com>
! 	    Uroš Bizjak  <ubizjak@gmail.com>
  
! 	* config/i386/i386.md (extendditi2): New define_insn.
! 	(define_split): Use DWIH mode iterator to treat new extendditi2
! 	identically to existing extendsidi2_1.
! 	(define_peephole2): Likewise.
! 	(define_peephole2): Likewise.
! 	(define_Split): Likewise.
  
  
! Copyright (C) 2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/ChangeLog-2022 gcc-13.1.0/gcc/ChangeLog-2022
*** gcc-12.2.0/gcc/ChangeLog-2022	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ChangeLog-2022	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,35086 ----
+ 2022-12-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 	    Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR modula2/107612
+ 	* Makefile.in: Make the configured libintl includes avaiable in INCINTL.
+ 	(BUILD_CPPFLAGS): Use INCINTL.
+ 
+ 2022-12-30  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* hash-table.h (check_complete_insertion, check_insert_slot):
+ 	New hash_table methods.
+ 	(m_inserting_slot): New hash_table field.
+ 	(begin, hash_table ctors, ~hash_table): Check previous insert.
+ 	(expand, empty_slow, clear_slot, find_with_hash): Likewise.
+ 	(remote_elt_with_hash, traverse_noresize): Likewise.
+ 	(gt_pch_nx): Likewise.
+ 	(find_slot_with_hash): Likewise.  Record requested insert.
+ 
+ 2022-12-30  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	PR target/107714
+ 	* config/arm/arm-protos.h (mve_struct_mem_operand): New protoype.
+ 	* config/arm/arm.cc (mve_struct_mem_operand): New function.
+ 	* config/arm/constraints.md (Ug): New constraint.
+ 	* config/arm/mve.md (mve_vst4q<mode>): Change constraint.
+ 	(mve_vst2q<mode>): Likewise.
+ 	(mve_vld4q<mode>): Likewise.
+ 	(mve_vld2q<mode>): Likewise.
+ 	* config/arm/predicates.md (mve_struct_operand): New predicate.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* hash-map.h (put, get_or_insert): Check that added entry
+ 	doesn't look deleted either.
+ 	* hash-set.h (add): Likewise.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-parloops.cc (take_address_of): Skip INSERT if !gsi.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* hash-map.h (put, get_or_insert): Check that entry does not
+ 	look empty after insertion.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* hash-set.h (add): Check that the inserted entry does not
+ 	look empty.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* trans-mem.cc (split_bb_make_tm_edge): Record new node in
+ 	tm_restart.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* postreload-gcse.cc (lookup_expr_in_table): Use NO_INSERT.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-inline.cc (declare_return_variable): Don't remap NULL
+ 	default def of result.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-ssa-loop-niter.cc (expand_simple_operands): Refrain
+ 	from caching NULL TREE_OPERANDs.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-inline.cc (insert_decl_map): Skip mapping a NULL decl
+ 	as value to itself.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* varpool.cc (symbol_table::remove_unreferenced_decls): Do not
+ 	add NULL vnodes to referenced table.
+ 
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* tree-ssa-scopedtables.cc
+ 	(avail_exprs_stack::lookup_avail_expr): Finish hash table
+ 	insertion before further lookups.
+ 
+ 2022-12-29  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_return_in_memory): Use
+ 	GP_RETURN_* instead of magic constant.
+ 
+ 2022-12-29  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_expand_prologue): Fix to check
+ 	DF availability before use of DF_* macros.
+ 
+ 2022-12-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (*clzsi2_lzcnt_zext_2): define_insn_and_split
+ 	to match ZERO_EXTEND form of *clzsi2_lzcnt_zext.
+ 	(*clzsi2_lzcnt_zext_2_falsedep): Likewise, new define_insn to match
+ 	ZERO_EXTEND form of *clzsi2_lzcnt_zext_falsedep.
+ 	(*bmi2_bzhi_zero_extendsidi_5): Likewise, new define_insn to match
+ 	ZERO_EXTEND form of *bmi2_bzhi_zero_extendsidi.
+ 	(*popcountsi2_zext_2): Likewise, new define_insn_and_split to match
+ 	ZERO_EXTEND form of *popcountsi2_zext.
+ 	(*popcountsi2_zext_2_falsedep): Likewise, new define_insn to match
+ 	ZERO_EXTEND form of *popcountsi2_zext_falsedep.
+ 	(*popcounthi2_2): Likewise, new define_insn_and_split to match
+ 	ZERO_EXTEND form of *popcounthi2.
+ 	(define_peephole2): ZERO_EXTEND variant of HImode popcount&1 using
+ 	parity flag peephole2.
+ 
+ 2022-12-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-expand.cc (ix86_split_ashl): Call
+ 	ix86_expand_clear to generate an xor instruction.
+ 
+ 2022-12-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/108137
+ 	* tree-ssa-strlen.cc (get_range_strlen_phi): Reject anything
+ 	different from INTEGER_CST.
+ 
+ 2022-12-28  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-vsetvl.h (vl_vtype_info::get_avl_info):
+ 	Return const reference rather than value.
+ 
+ 2022-12-27  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/riscv/riscv.md: Add missing modes to last patch.t
+ 
+ 2022-12-27  Raphael Moreira Zinsly  <rzinsly@ventanamicro.com>
+ 
+ 	PR target/95632
+ 	PR target/106602
+ 	* config/riscv/riscv.md: New pattern to simulate complex
+ 	const_int loads.
+ 
+ 2022-12-27  Christoph Müllner  <christoph.muellner@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (riscv_next_saved_reg): New function.
+ 	(riscv_is_eh_return_data_register): New function.
+ 	(riscv_for_each_saved_reg): Restructure loop.
+ 
+ 2022-12-27  Christoph Müllner  <christoph.muellner@vrull.eu>
+ 
+ 	* config/riscv/riscv.md: Sync comments with code.
+ 
+ 2022-12-27  jinma  <jinma@linux.alibaba.com>
+ 
+ 	* common/config/riscv/riscv-common.cc:
+ 
+ 2022-12-27  Jonathan Yong  <10walls@gmail.com>
+ 
+ 	* configure.ac: use grep -i for case insensitive test.
+ 	* configure: Regenerate.
+ 
+ 2022-12-27  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.md (unspec): Extract UNSPEC_* constants
+ 	into this enum.
+ 	(unspecv): Extract UNSPECV_* constants into this enum.
+ 
+ 2022-12-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (set_frame_ptr): Fix to reflect
+ 	TARGET_DENSITY.
+ 
+ 2022-12-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.h (GP_RETURN, GP_RETURN_REG_COUNT):
+ 	Change to GP_RETURN_FIRST and GP_RETURN_LAST, respectively.
+ 	* config/xtensa/xtensa.cc (xtensa_function_value,
+ 	xtensa_libcall_value, xtensa_function_value_regno_p): Ditto.
+ 
+ 2022-12-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_expand_prologue): Modify to
+ 	exit the inspection loops as soon as the necessity of stack
+ 	pointer is found.
+ 
+ 2022-12-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/elf.h: Tabify, and trim trailing spaces.
+ 	* config/xtensa/linux.h: Likewise.
+ 	* config/xtensa/uclinux.h: Likewise.
+ 	* config/xtensa/xtensa-dynconfig.c: Likewise.
+ 	* config/xtensa/xtensa.cc: Likewise.
+ 	* config/xtensa/xtensa.h: Likewise.
+ 	* config/xtensa/xtensa.md: Likewise.
+ 
+ 2022-12-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vsetvl.cc
+ 	(pass_vsetvl::compute_global_backward_infos): Change to visit CFG.
+ 	(pass_vsetvl::prune_expressions): Ditto.
+ 
+ 2022-12-27  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vsetvl.cc (change_insn): Remove pp_print.
+ 	(avl_info::avl_info): Add copy function.
+ 	(vector_insn_info::dump): Remove pp_print.
+ 	* config/riscv/riscv-vsetvl.h: Add copy function.
+ 
+ 2022-12-27  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/106680
+ 	* common/config/rs6000/rs6000-common.cc (rs6000_handle_option): Remove
+ 	the adjustment for option powerpc64 in -m64 handling, and remove the
+ 	whole -m32 handling.
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): When no
+ 	explicit powerpc64 option is provided, enable it for -m64.  For 32 bit
+ 	and OS_MISSING_POWERPC64, disable powerpc64 if it's enabled but not
+ 	specified explicitly.
+ 
+ 2022-12-26  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/55522
+ 	PR target/36821
+ 	* config/i386/gnu-user-common.h (GNU_USER_TARGET_MATHFILE_SPEC):
+ 	Link crtfastmath.o whenever -mdaz-ftz is specified. Don't link
+ 	crtfastmath.o when -share or -mno-daz-ftz is specified.
+ 	* config/i386/i386.opt (mdaz-ftz): New option.
+ 	* doc/invoke.texi (x86 options): Document mftz-daz.
+ 
+ 2022-12-25  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_movss): Update
+ 	CODE_FOR_sse_movss to CODE_FOR_sse_movss_v4sf.
+ 	(__builtin_ia32_movsd): Likewise, update CODE_FOR_sse2_movsd to
+ 	CODE_FOR_sse2_movsd_v2df.
+ 	* config/i386/i386-expand.cc (split_convert_uns_si_sse): Update
+ 	gen_sse_movss call to gen_sse_movss_v4sf, and gen_sse2_movsd call
+ 	to gen_sse2_movsd_v2df.
+ 	(expand_vec_perm_movs): Also allow V4SImode with TARGET_SSE and
+ 	V2DImode with TARGET_SSE2.
+ 	* config/i386/sse.md
+ 	(avx512fp16_fcmaddcsh_v8hf_mask3<round_expand_name>): Update
+ 	gen_sse_movss call to gen_sse_movss_v4sf.
+ 	(avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>): Likewise.
+ 	(sse_movss_<mode>): Renamed from sse_movss using VI4F_128 mode
+ 	iterator to handle both V4SF and V4SI.
+ 	(sse2_movsd_<mode>): Likewise, renamed from sse2_movsd using
+ 	VI8F_128 mode iterator to handle both V2DF and V2DI.
+ 
+ 2022-12-23  Jakub Jelinek  <jakub@redhat.com>
+ 	    Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-phiopt.cc (value_replacement): Instead of resetting
+ 	phires range info, union it with carg.
+ 
+ 2022-12-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/108068
+ 	* tree.h (real_maybe_zerop): Declare.
+ 	* tree.cc (real_maybe_zerop): Define.
+ 	* tree-ssa-dom.cc (record_edge_info): Use it instead of
+ 	real_zerop or TREE_CODE (op1) == SSA_NAME || real_zerop.  Always set
+ 	can_infer_simple_equiv to false for decimal floating point types.
+ 
+ 2022-12-23  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/107548
+ 	* config/i386/i386-features.cc (scalar_chain::add_insn): The
+ 	operands of a VEC_SELECT don't need to added to the scalar chain.
+ 	(general_scalar_chain::compute_convert_gain) <case VEC_SELECT>:
+ 	Provide gains for performing STV on a VEC_SELECT.
+ 	(general_scalar_chain::convert_insn): Convert VEC_SELECT to pshufd,
+ 	psrldq or no-op.
+ 	(general_scalar_to_vector_candidate_p): Handle VEC_SELECT of a
+ 	single element from a vector register to a scalar register.
+ 
+ 2022-12-23  H.J. Lu  <hjl.tools@gmail.com>
+ 	    Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106933
+ 	PR target/106959
+ 	* config/i386/i386-features.cc (single_def_chain_p): New predicate
+ 	function to check that a pseudo's use-def chain is in SSA form.
+ 	(timode_scalar_to_vector_candidate_p): Check that TImode regs that
+ 	are SET_DEST or SET_SRC of an insn match/are single_def_chain_p.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/vector.md: Fix contraints.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-protos.h (get_avl_type_rtx): New function.
+ 	* config/riscv/riscv-v.cc (get_avl_type_rtx): Ditto.
+ 	* config/riscv/riscv-vector-builtins-bases.cc (class loadstore): New
+ 	class.
+ 	(BASE): Ditto.
+ 	* config/riscv/riscv-vector-builtins-bases.h: Ditto.
+ 	* config/riscv/riscv-vector-builtins-functions.def (vle): Ditto.
+ 	(vse): Ditto.
+ 	* config/riscv/riscv-vector-builtins-shapes.cc (build_one): Ditto.
+ 	(struct loadstore_def): Ditto.
+ 	(SHAPE): Ditto.
+ 	* config/riscv/riscv-vector-builtins-shapes.h: Ditto.
+ 	* config/riscv/riscv-vector-builtins-types.def (DEF_RVV_U_OPS): New
+ 	macro.
+ 	(DEF_RVV_F_OPS): Ditto.
+ 	(vuint8mf8_t): Add corresponding mask type.
+ 	(vuint8mf4_t): Ditto.
+ 	(vuint8mf2_t): Ditto.
+ 	(vuint8m1_t): Ditto.
+ 	(vuint8m2_t): Ditto.
+ 	(vuint8m4_t): Ditto.
+ 	(vuint8m8_t): Ditto.
+ 	(vuint16mf4_t): Ditto.
+ 	(vuint16mf2_t): Ditto.
+ 	(vuint16m1_t): Ditto.
+ 	(vuint16m2_t): Ditto.
+ 	(vuint16m4_t): Ditto.
+ 	(vuint16m8_t): Ditto.
+ 	(vuint32mf2_t): Ditto.
+ 	(vuint32m1_t): Ditto.
+ 	(vuint32m2_t): Ditto.
+ 	(vuint32m4_t): Ditto.
+ 	(vuint32m8_t): Ditto.
+ 	(vuint64m1_t): Ditto.
+ 	(vuint64m2_t): Ditto.
+ 	(vuint64m4_t): Ditto.
+ 	(vuint64m8_t): Ditto.
+ 	(vfloat32mf2_t): Ditto.
+ 	(vfloat32m1_t): Ditto.
+ 	(vfloat32m2_t): Ditto.
+ 	(vfloat32m4_t): Ditto.
+ 	(vfloat32m8_t): Ditto.
+ 	(vfloat64m1_t): Ditto.
+ 	(vfloat64m2_t): Ditto.
+ 	(vfloat64m4_t): Ditto.
+ 	(vfloat64m8_t): Ditto.
+ 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Adjust for new
+ 	macro.
+ 	(DEF_RVV_I_OPS): Ditto.
+ 	(DEF_RVV_U_OPS): New macro.
+ 	(DEF_RVV_F_OPS): New macro.
+ 	(use_real_mask_p): New function.
+ 	(use_real_merge_p): Ditto.
+ 	(get_tail_policy_for_pred): Ditto.
+ 	(get_mask_policy_for_pred): Ditto.
+ 	(function_builder::apply_predication): Ditto.
+ 	(function_builder::append_base_name): Ditto.
+ 	(function_builder::append_sew): Ditto.
+ 	(function_expander::add_vundef_operand): Ditto.
+ 	(function_expander::add_mem_operand): Ditto.
+ 	(function_expander::use_contiguous_load_insn): Ditto.
+ 	(function_expander::use_contiguous_store_insn): Ditto.
+ 	* config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Adjust for
+ 	adding mask type.
+ 	(vbool64_t): Ditto.
+ 	(vbool32_t): Ditto.
+ 	(vbool16_t): Ditto.
+ 	(vbool8_t): Ditto.
+ 	(vbool4_t): Ditto.
+ 	(vbool2_t): Ditto.
+ 	(vbool1_t): Ditto.
+ 	(vint8mf8_t): Ditto.
+ 	(vint8mf4_t): Ditto.
+ 	(vint8mf2_t): Ditto.
+ 	(vint8m1_t): Ditto.
+ 	(vint8m2_t): Ditto.
+ 	(vint8m4_t): Ditto.
+ 	(vint8m8_t): Ditto.
+ 	(vint16mf4_t): Ditto.
+ 	(vint16mf2_t): Ditto.
+ 	(vint16m1_t): Ditto.
+ 	(vint16m2_t): Ditto.
+ 	(vint16m4_t): Ditto.
+ 	(vint16m8_t): Ditto.
+ 	(vint32mf2_t): Ditto.
+ 	(vint32m1_t): Ditto.
+ 	(vint32m2_t): Ditto.
+ 	(vint32m4_t): Ditto.
+ 	(vint32m8_t): Ditto.
+ 	(vint64m1_t): Ditto.
+ 	(vint64m2_t): Ditto.
+ 	(vint64m4_t): Ditto.
+ 	(vint64m8_t): Ditto.
+ 	(vfloat32mf2_t): Ditto.
+ 	(vfloat32m1_t): Ditto.
+ 	(vfloat32m2_t): Ditto.
+ 	(vfloat32m4_t): Ditto.
+ 	(vfloat32m8_t): Ditto.
+ 	(vfloat64m1_t): Ditto.
+ 	(vfloat64m4_t): Ditto.
+ 	* config/riscv/riscv-vector-builtins.h
+ 	(function_expander::add_output_operand): New function.
+ 	(function_expander::add_all_one_mask_operand): Ditto.
+ 	(function_expander::add_fixed_operand): Ditto.
+ 	(function_expander::vector_mode): Ditto.
+ 	(function_base::apply_vl_p): Ditto.
+ 	(function_base::can_be_overloaded_p): Ditto.
+ 	* config/riscv/riscv-vsetvl.cc (get_vl): Remove restrict of supporting
+ 	AVL is not VLMAX.
+ 	* config/riscv/t-riscv: Add include file.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins-shapes.cc (struct vsetvl_def): Add
+ 	"__riscv_" prefix.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Change it to no side effects.
+ 	* config/riscv/vector.md (@vsetvl<mode>_no_side_effects): New pattern.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Remove side effects.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vsetvl.cc (anticipatable_occurrence_p): Fix
+ 	incorrect annotations.
+ 	(available_occurrence_p): Ditto.
+ 	(backward_propagate_worthwhile_p): Ditto.
+ 	(can_backward_propagate_p): Ditto.
+ 
+ 2022-12-23  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vsetvl.cc (vlmax_avl_insn_p): Fix multi-line
+ 	conditional.
+ 	(vsetvl_insn_p): Ditto.
+ 	(same_bb_and_before_p): Ditto.
+ 	(same_bb_and_after_or_equal_p): Ditto.
+ 
+ 2022-12-22  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* doc/md.texi: Move example code remark next to it's code block.
+ 
+ 2022-12-22  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* doc/md.texi: Fix inconsistent example name.
+ 
+ 2022-12-22  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* doc/md.texi: Fix incorrect pxref.
+ 
+ 2022-12-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/106482
+ 	* doc/install.texi (ISO C++11 Compiler): Document GCC version
+ 	known to work.
+ 
+ 2022-12-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/108166
+ 	* tree-ssa-phiopt.cc (value_replacement): For the maybe_equal_p
+ 	case turned into equal_p reset SSA_NAME_RANGE_INFO of phi result.
+ 
+ 2022-12-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/108193
+ 	* cse.cc (compute_const_anchors): Change n type to
+ 	unsigned HOST_WIDE_INT, adjust comparison against it to avoid
+ 	warnings.  Formatting fix.
+ 	(insert_const_anchor): Use gen_int_mode instead of GEN_INT.
+ 
+ 2022-12-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107451
+ 	* tree-vect-stmts.cc (vectorizable_load): Avoid loading
+ 	SLP group members from group numbers in excess of the
+ 	vectorization factor.
+ 
+ 2022-12-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/aarch64/t-aarch64 (TM_H): Don't add aarch64-cores.def,
+ 	add aarch64-fusion-pairs.def, aarch64-tuning-flags.def and
+ 	aarch64-option-extensions.def.
+ 	(OPTIONS_H_EXTRA): Don't add aarch64-fusion-pairs.def nor
+ 	aarch64-tuning-flags.def.
+ 
+ 2022-12-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386-expand.cc (ix86_expand_set_or_cpymem): Add
+ 	TARGET_AVX512_SPLIT_REGS
+ 	* config/i386/i386-options.cc (ix86_option_override_internal):
+ 	Honor x86_TONE_AVOID_256FMA_CHAINS.
+ 	* config/i386/i386.cc (ix86_vec_cost): Honor TARGET_AVX512_SPLIT_REGS.
+ 	(ix86_reassociation_width): Likewise.
+ 	* config/i386/i386.h (TARGET_AVX512_SPLIT_REGS): New tune.
+ 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): Disable
+ 	for znver4.
+ 	(X86_TUNE_USE_GATHER_4PARTS): Likewise.
+ 	(X86_TUNE_AVOID_256FMA_CHAINS): Set for znver4.
+ 	(X86_TUNE_AVOID_512FMA_CHAINS): New utne; set for znver4.
+ 	(X86_TUNE_AVX256_OPTIMAL): Add znver4.
+ 	(X86_TUNE_AVX512_SPLIT_REGS): New tune.
+ 	(X86_TUNE_AVX256_MOVE_BY_PIECES): Add znver1-3.
+ 	(X86_TUNE_AVX256_STORE_BY_PIECES): Add znver1-3.
+ 	(X86_TUNE_AVX512_MOVE_BY_PIECES): Add znver4.
+ 	(X86_TUNE_AVX512_STORE_BY_PIECES): Add znver4.
+ 
+ 2022-12-22  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/x86-tune-costs.h (znver4_cost): Upate costs of FP and SSE
+ 	moves, division multiplication, gathers, L2 cache size, and more
+ 	complex FP instrutions.
+ 
+ 2022-12-21  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/105532
+ 	* match.pd (~(X >> Y) -> ~X >> Y): Check if it is an integral
+ 	type before calling tree_nonzero_bits.
+ 	(popcount(X) + popcount(Y)): Likewise.
+ 	(popcount(X&C1)): Likewise.
+ 
+ 2022-12-21  Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_print_operand): Add 'p' case, adjust
+ 	comments.
+ 	(enum nvptx_builtins): Add NVPTX_BUILTIN_BAR_RED_AND,
+ 	NVPTX_BUILTIN_BAR_RED_OR, and NVPTX_BUILTIN_BAR_RED_POPC.
+ 	(nvptx_expand_bar_red): New function.
+ 	(nvptx_init_builtins):
+ 	Add DEFs of __builtin_nvptx_bar_red_[and/or/popc].
+ 	(nvptx_expand_builtin): Use nvptx_expand_bar_red to expand
+ 	NVPTX_BUILTIN_BAR_RED_[AND/OR/POPC] cases.
+ 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
+ 	UNSPECV_BARRED_AND, UNSPECV_BARRED_OR, and UNSPECV_BARRED_POPC.
+ 	(BARRED): New int iterator.
+ 	(barred_op,barred_mode,barred_ptxtype): New int attrs.
+ 	(nvptx_barred_<barred_op>): New define_insn.
+ 
+ 2022-12-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/107994
+ 	* gimplify.cc (gimplify_expr): Catch errorneous comparison
+ 	operand.
+ 
+ 2022-12-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* lto-opts.cc (lto_write_options): Also skip -fwhole-program.
+ 
+ 2022-12-21  Jan Hubicka  <jh@suse.cz>
+ 
+ 	* lto-cgraph.cc (lto_output_node): When doing WPA in incremental link
+ 	pass down resolution info.
+ 
+ 2022-12-21  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* doc/invoke.texi: Fix documentation of -fwhole-program with LTO
+ 	and document behaviour for incremental linking.
+ 
+ 2022-12-21  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Fix the
+ 	location for OPTION_MASK_P10_FUSION flag setting.
+ 
+ 2022-12-21  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* fold-const.cc (fold_convert_const_real_from_real): Treat floating
+ 	point conversion to a type with same mode as copy instead of normal
+ 	convertFormat.
+ 
+ 2022-12-21  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/106736
+ 	* config/rs6000/mma.md (define_expand movoo): Call function
+ 	rs6000_opaque_type_invalid_use_p to check and emit error message for
+ 	the invalid use of opaque type.
+ 	(define_expand movxo): Likewise.
+ 	* config/rs6000/rs6000-protos.h
+ 	(rs6000_opaque_type_invalid_use_p): New function declaration.
+ 	(currently_expanding_gimple_stmt): New extern declaration.
+ 	* config/rs6000/rs6000.cc (rs6000_opaque_type_invalid_use_p): New
+ 	function.
+ 
+ 2022-12-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	* fold-const.cc (fold_convert_loc): Check return value of
+ 	protected_set_expr_location_unshare.
+ 
+ 2022-12-21  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/84471
+ 	PR c++/107504
+ 	* fold-const.cc (protected_set_expr_location_unshare): Not static.
+ 	* tree.h: Declare it.
+ 	* tree.cc (decl_value_expr_insert): Use it.
+ 
+ 2022-12-20  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/101886
+ 	* tree.cc (walk_tree_1) <case TREE_VEC>: Walk the elements
+ 	in forward instead of reverse order.
+ 	<case VECTOR_CST>: Likewise.
+ 
+ 2022-12-20  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/108139
+ 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Do not
+ 	use equivalences originating from PHIS.
+ 
+ 2022-12-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR d/104749
+ 	* doc/install.texi (GDC): Document GDC 9.4 or later is required
+ 	to build the D language frontend.
+ 
+ 2022-12-20  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/103743
+ 	* config/rs6000/rs6000-protos.h (can_be_rotated_to_lowbits): New.
+ 	(can_be_rotated_to_positive_16bits): New.
+ 	(can_be_rotated_to_negative_15bits): New.
+ 	* config/rs6000/rs6000.cc (can_be_rotated_to_lowbits): New definition.
+ 	(can_be_rotated_to_positive_16bits): New definition.
+ 	(can_be_rotated_to_negative_15bits): New definition.
+ 	* config/rs6000/rs6000.md (*rotate_on_cmpdi): New define_insn_and_split.
+ 	(eqne): Move earlier.
+ 
+ 2022-12-19  Jason Merrill  <jason@redhat.com>
+ 
+ 	* sort.cc: Disable -Wconditionally-supported in
+ 	CHECKING_P code.
+ 
+ 2022-12-19  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/64867
+ 	* configure.ac (strict_warn): Add -Wconditionally-supported.
+ 	* configure: Regenerate.
+ 
+ 2022-12-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/108164
+ 	* tree-vect-loop-manip.cc (vect_update_ivs_after_vectorizer):
+ 	Perform vect_step_op_add update in the appropriate type.
+ 
+ 2022-12-19  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-c.cc (__ARM_FEATURE_CLZ): Fix definition of
+ 	preprocessor macro when target has CLZ in another ISA.
+ 
+ 2022-12-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/vector.md: Remove vste.
+ 
+ 2022-12-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config.gcc: Add riscv-vsetvl.o.
+ 	* config/riscv/riscv-passes.def (INSERT_PASS_BEFORE): Add VSETVL PASS
+ 	location.
+ 	* config/riscv/riscv-protos.h (make_pass_vsetvl): New function.
+ 	(enum avl_type): New enum.
+ 	(get_ta): New function.
+ 	(get_ma): Ditto.
+ 	(get_avl_type): Ditto.
+ 	(calculate_ratio): Ditto.
+ 	(enum tail_policy): New enum.
+ 	(enum mask_policy): Ditto.
+ 	* config/riscv/riscv-v.cc (calculate_ratio): New function.
+ 	(emit_pred_op): change the VLMAX mov codgen.
+ 	(get_ta): New function.
+ 	(get_ma): Ditto.
+ 	(enum tail_policy): Change enum.
+ 	(get_prefer_tail_policy): New function.
+ 	(enum mask_policy): Change enum.
+ 	(get_prefer_mask_policy): New function.
+ 	* config/riscv/t-riscv: Add riscv-vsetvl.o
+ 	* config/riscv/vector.md: Adjust attribute and pattern for VSETVL
+ 	PASS.
+ 	(@vlmax_avl<mode>): Ditto.
+ 	(@vsetvl<mode>_no_side_effects): Delete.
+ 	(vsetvl_vtype_change_only): New MD pattern.
+ 	(@vsetvl_discard_result<mode>): Ditto.
+ 	* config/riscv/riscv-vsetvl.cc: New file.
+ 	* config/riscv/riscv-vsetvl.h: New file.
+ 
+ 2022-12-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-switch.def (ENTRY): Correct attributes.
+ 
+ 2022-12-19  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	PR target/108140
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_expand_builtin_data_intrinsic): Handle NULL target.
+ 
+ 2022-12-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/gnu-user.h (LIBHWASAN_EARLY_SPEC): Add libhwasan_preinit.o
+ 	to link spec if not -shared.
+ 
+ 2022-12-19  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-v.cc (emit_vlmax_vsetvl): Pass through VLMUL enum
+ 	instead of machine mode.
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Ditto.
+ 	* config/riscv/riscv.cc (riscv_print_operand): Print LMUL by enum vlmul
+ 	instead of machine mode.
+ 
+ 2022-12-19  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/106708
+ 	* config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Add using
+ 	"li; x?oris" to build constant.
+ 
+ 2022-12-19  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/55522
+ 	* config/i386/gnu-user-common.h (GNU_USER_TARGET_MATHFILE_SPEC):
+ 	Don't add crtfastmath.o for -shared.
+ 	* doc/invoke.texi (-shared): Add related documentation.
+ 
+ 2022-12-18  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* config.gcc: Determine Solaris minor version.
+ 	Obsolete *-*-solaris2.11.[0-3]*.
+ 	* doc/install.texi (Specific, *-*-solaris2*): Document it.
+ 
+ 2022-12-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000-logue.cc (rs6000_output_function_epilogue):
+ 	Handle GNU Rust for the tbtab lang field.
+ 
+ 2022-12-16  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.cc (pa_option_override): Disable -fstack-protector.
+ 
+ 2022-12-16  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	Revert:
+ 	2022-12-15  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* ira-costs.cc: Include print-rtl.h.
+ 	(record_reg_classes, scan_one_insn): Add code to print debug info.
+ 	* ira.cc (ira_init_register_move_cost): Check that at least one hard
+ 	reg of the mode are in the class contents to calculate the
+ 	register move costs.
+ 
+ 2022-12-16  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	* doc/invoke.texi: Document -Wstrict-flex-arrays option.
+ 	* gimple-array-bounds.cc (check_out_of_bounds_and_warn): Add two more
+ 	arguments.
+ 	(array_bounds_checker::check_array_ref): Issue warnings for
+ 	-Wstrict-flex-arrays.
+ 	* opts.cc (finish_options): Issue warning for unsupported combination
+ 	of -Wstrict_flex_arrays and -fstrict-flex-array.
+ 	* tree-vrp.cc (execute_ranger_vrp): Enable the pass when
+ 	warn_strict_flex_array is true.
+ 
+ 2022-12-16  Palmer Dabbelt  <palmer@rivosinc.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_option_override): Fix comment
+ 	wording.
+ 
+ 2022-12-16  Palmer Dabbelt  <palmer@rivosinc.com>
+ 
+ 	* doc/extend.texi (__builtin_riscv_pause): Imply
+ 	Xgnuzihintpausestate.
+ 
+ 2022-12-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/108086
+ 	* tree-inline.cc (remap_ssa_name): Do not unshare the
+ 	result from the decl_map.
+ 
+ 2022-12-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/108086
+ 	* tree-inline.cc (copy_bb): Remove handling of (foo *)&this->m
+ 	substitution which is done in remap_gimple_op_r via
+ 	re-gimplifying.
+ 
+ 2022-12-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/106751
+ 	* loop-invariant.cc (move_invariant_reg): If preheader bb ends
+ 	with a JUMP_INSN, split the preheader edge and emit invariants
+ 	into the new preheader basic block.
+ 
+ 2022-12-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/108086
+ 	* tree-inline.cc (remap_gimple_stmt): Add stmts to the
+ 	sequence without updating them.  Simplify x == x detection.
+ 
+ 2022-12-16  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/cmpccxaddintrin.h
+ 	(__cmpccxadd_epi32): Rename to _cmpccxadd_epi32.
+ 	(__cmpccxadd_epi64): Rename to _cmpccxadd_epi64.
+ 
+ 2022-12-15  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* ira-costs.cc: Include print-rtl.h.
+ 	(record_reg_classes, scan_one_insn): Add code to print debug info.
+ 	* ira.cc (ira_init_register_move_cost): Check that at least one hard
+ 	reg of the mode are in the class contents to calculate the
+ 	register move costs.
+ 
+ 2022-12-15  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	* doc/extend.texi (__builtin_dynamic_object_size): Document
+ 	builtin.
+ 	* doc/passes.texi
+ 	(Optimize calls to @code{__builtin_object_size}): Also mention
+ 	__builtin_dynamic_object_size.
+ 
+ 2022-12-15  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* doc/invoke.texi (-fsanitize=object-size): Use
+ 	__builtin_dynamic_object_size instead of
+ 	__builtin_object_size.
+ 
+ 2022-12-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/108086
+ 	* tree-inline.cc (copy_edges_for_bb): Walk stmts backwards for
+ 	splitting the block to avoid quadratic behavior with setting
+ 	stmts BB on multliple splits.
+ 
+ 2022-12-15  Spacetown  <michael.foerderer@gmx.de>
+ 
+ 	PR gcov-profile/107537
+ 	* gcov.cc (output_branch_count): Add annotation '(fallthrough)'
+ 	or '(throw)' also to uncovered branches.
+ 
+ 2022-12-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/108086
+ 	* tree-inline.cc (copy_edges_for_bb): Do not update all
+ 	stmts again.
+ 
+ 2022-12-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/108095
+ 	* tree-into-ssa.cc (maybe_register_def): Insert debug stmt
+ 	on all non-EH edges from asm goto if they have a single
+ 	predecessor rather than asserting there is at most one such edge.
+ 	Test whether there are no PHI nodes next to the single predecessor
+ 	test.
+ 
+ 2022-12-14  David Faust  <david.faust@oracle.com>
+ 
+ 	PR target/106773
+ 	* btfout.cc (get_section_name): New function.
+ 	(btf_collect_datasec): Use it here. Process functions, marking them
+ 	'extern' and generating DATASEC entries for them as appropriate. Move
+ 	creation of BTF_KIND_FUNC records to here...
+ 	(btf_dtd_emit_preprocess_cb): ... from here.
+ 
+ 2022-12-14  David Faust  <david.faust@oracle.com>
+ 
+ 	PR target/106773
+ 	* btfout.cc (btf_collect_datasec): Correct size of void entries.
+ 	(btf_dvd_emit_preprocess_cb): Do not skip emitting variables which
+ 	refer to void types.
+ 	(btf_init_postprocess): Create 'const void' type record if needed and
+ 	adjust variables to refer to it as appropriate.
+ 
+ 2022-12-14  David Faust  <david.faust@oracle.com>
+ 
+ 	PR target/106773
+ 	* btfout.cc (btf_collect_datasec): Mark extern variables as such.
+ 	(btf_dvd_emit_preprocess_cb): Skip non-defining extern variable decl
+ 	if there is a defining decl for the same variable.
+ 	(btf_asm_varent): Accomodate 'extern' linkage.
+ 
+ 2022-12-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-sra.cc (create_parameter_descriptors): Consider the first
+ 	parameter of a method safe to dereference.
+ 
+ 2022-12-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-sra.cc (loaded_decls): Adjust comment.
+ 	(scan_expr_access): Also detect assignments of address of local
+ 	variables to a variable.  Bail out early on SSA_NAMEs and
+ 	constants as an optimization.
+ 
+ 2022-12-14  Gaius Mulley  <gaiusmod2@gmail.com>
+ 
+ 	* configure.ac (HAVE_PYTHON): Test for Python3 added.
+ 	* dwarf2out.cc (gen_compile_unit_die): Check language_string
+ 	and language to DW_LANG_Modula2.
+ 	* doc/install.texi: Add m2 as a language.
+ 	(--disable-libgm2): Documented.  Add make check-m2 to testing selected
+ 	tests.
+ 	* doc/sourcebuild.texi (GM2): New prerequisite item.
+ 	(Python3 modules) New item.
+ 	(libgm2) Added.
+ 	(gcc/m2) Added.
+ 	* configure: Rebuilt.
+ 	* config.in: Rebuilt.
+ 	* doc/gm2.texi: New file.
+ 
+ 2022-12-14  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* doc/invoke.texi (ipa-sra-ptrwrap-growth-factor): Fix the
+ 	description.
+ 	* params.opt (ipa-sra-ptrwrap-growth-factor): Likewise.
+ 
+ 2022-12-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/107988
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_vectorize_can_special_div_by_constant): Ensure input and output
+ 	RTL are registers.
+ 
+ 2022-12-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Document ipa-sra-ptrwrap-growth-factor.
+ 
+ 2022-12-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107617
+ 	* tree-ssa-sccvn.cc (vn_walk_cb_data::push_partial_def):
+ 	Handle negative pd.rhs_off.
+ 	(vn_reference_lookup_3): Properly provide pd.rhs_off
+ 	for .LEN_STORE on big-endian targets.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-param-manipulation.cc
+ 	(ipa_param_body_adjustments::modify_expression): Bail out early if
+ 	there are no replacements.
+ 	(ipa_param_body_adjustments::modify_assignment): Likewise.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-sra.cc (isra_param_desc): New fields safe_size,
+ 	conditionally_dereferenceable and safe_size_set.
+ 	(struct gensum_param_desc): New field conditionally_dereferenceable.
+ 	(struct isra_param_flow): Updated comment of field unit_size.
+ 	(ipa_sra_function_summaries::duplicate): Copy the new fields.
+ 	(isra_call_summary::dump): Dump unit_size when representing safe_size.
+ 	(dump_gensum_param_descriptor): Dump new flag.
+ 	(dump_isra_param_descriptor): Dump new fields.
+ 	(isra_analyze_call): Fill unit_size when it represents known safe
+ 	size.
+ 	(check_gensum_access): Instead of disqualifying pointers which are not
+ 	always dereference, mark them as conditionally dereferencable if loads
+ 	are frequent enough.
+ 	(process_scan_results): Copy the conditionally_dereferenceable flag.
+ 	(isra_write_node_summary): Stream new fields, or assert they are not
+ 	initialized yet.
+ 	(isra_read_node_info): Stream new fields.
+ 	(update_safe_size): New function.
+ 	(propagate_param_hints_accross_call): Propagate safe_sizes.
+ 	(propagate_hints_to_all_callees): New function.
+ 	(adjust_parameter_descriptions): Check conditionally_dereferenceable
+ 	candidates, rework dumping.
+ 	(ipa_sra_analysis): Move most of hint propagation for one node to
+ 	propagate_hints_to_all_callees.  Add another loop to stabilize within
+ 	SCCs and another one to verify.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-sra.cc (isra_param_desc): New field not_specially_constructed.
+ 	(struct isra_param_flow): New field constructed_for_calls.
+ 	(isra_call_summary::dump): Dump the new flag.
+ 	(loaded_decls): New variable.
+ 	(dump_isra_param_descriptor): New parameter hints, dump
+ 	not_specially_constructed if it is true.
+ 	(dump_isra_param_descriptors): New parameter hints, pass it to
+ 	dump_isra_param_descriptor.
+ 	(ipa_sra_function_summaries::duplicate): Duplicate new flag.
+ 	(create_parameter_descriptors): Adjust comment.
+ 	(get_gensum_param_desc): Bail out when decl2desc is NULL.
+ 	(scan_expr_access): Add loaded local variables to loaded_decls.
+ 	(scan_function): Survive if final_bbs is NULL.
+ 	(isra_analyze_call): Compute constructed_for_calls flag.
+ 	(process_scan_results): Be optimistic about size limits.  Do not dump
+ 	computed param hints when dumpint IPA-SRA structures.
+ 	(isra_write_edge_summary): Stream constructed_for_calls.
+ 	(isra_read_edge_summary): Likewise.
+ 	(ipa_sra_dump_all_summaries): New parameter hints, pass it to
+ 	dump_isra_param_descriptor.
+ 	(flip_all_hints_pessimistic): New function.
+ 	(flip_all_param_hints_pessimistic): Likewise.
+ 	(propagate_param_hints): Likewise.
+ 	(disable_unavailable_parameters): Renamed to
+ 	adjust_parameter_descriptions.  Expand size limits for parameters
+ 	which are specially contstructed by all callers.  Check limits again.p
+ 	(ipa_sra_analysis): Pass required hints to ipa_sra_dump_all_summaries.
+ 	Add hint propagation.
+ 	(ipa_sra_summarize_function): Initialize and destory loaded_decls,
+ 	rearrange so that scan_function is called even when there are no
+ 	candidates.
+ 	* params.opt (ipa-sra-ptrwrap-growth-factor): New parameter.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-sra.cc (ipa_sra_analysis): Move top-down analysis before
+ 	bottom-up analysis.  Replace FOR_EACH_VEC_ELT with C++11 iteration.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/103585
+ 	* params.opt (ipa-sra-deref-prob-threshold): New parameter.
+ 	* doc/invoke.texi (ipa-sra-deref-prob-threshold): Document it.
+ 	* ipa-sra.cc (struct gensum_param_access): New field load_count.
+ 	(struct gensum_param_desc): New field safe_ref, adjusted comments.
+ 	(by_ref_count): Renamed to unsafe_by_ref_count, adjusted all uses.
+ 	(dump_gensum_access): Dump the new field.
+ 	(dump_gensum_param_descriptor): Likewise.
+ 	(create_parameter_descriptors): Set safe_ref field, move setting
+ 	by_ref forward.  Only increment unsafe_by_ref_count for unsafe
+ 	by_ref parameters.
+ 	(allocate_access): Initialize new field.
+ 	(mark_param_dereference): Adjust indentation.  Only add data to
+ 	bb_dereferences for unsafe by_ref parameters.
+ 	(scan_expr_access): For loads, accumulate BB counts.
+ 	(dereference_probable_p): New function.
+ 	(check_gensum_access): Fix leading comment, add parameter FUN.
+ 	Check cumulative counts of loads for safe by_ref accesses instead
+ 	of dereferences.
+ 	(process_scan_results): Do not propagate dereference distances for
+ 	safe by_ref parameters.  Pass fun to check_gensum_access.  Safe
+ 	by_ref params do not need the postdominance check.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-cp.cc (clone_for_param_removal_p): New function.
+ 	(estimate_local_effects): Call it before considering cloning
+ 	just to remove unused parameters.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/103227
+ 	* ipa-param-manipulation.h (class ipa_param_adjustments): Removed
+ 	member function get_updated_index_or_split.
+ 	(class ipa_param_body_adjustments): New overload of
+ 	register_replacement, new member function append_init_stmts, new
+ 	member m_split_agg_csts_inits.
+ 	* ipa-param-manipulation.cc: Include ipa-prop.h.
+ 	(ipa_param_adjustments::get_updated_index_or_split): Removed.
+ 	(ipa_param_body_adjustments::register_replacement): New overload, use
+ 	it from the older one.
+ 	(ipa_param_body_adjustments::common_initialization): Added the
+ 	capability to create replacements for conflicting IPA-CP discovered
+ 	constants.
+ 	(ipa_param_body_adjustments::ipa_param_body_adjustments): Construct
+ 	the new member.
+ 	(ipa_param_body_adjustments::append_init_stmts): New function.
+ 	* ipa-sra.cc: Include ipa-prop.h.
+ 	(push_param_adjustments_for_index): Require IPA-CP transformation
+ 	summary as a parameter, do not create replacements which are known to
+ 	have constant values.
+ 	(process_isra_node_results): Find and pass to the above function the
+ 	IPA-CP transformation summary.
+ 	* ipa-prop.cc (adjust_agg_replacement_values): Remove the
+ 	functionality replacing IPA-SRA created scalar parameters with
+ 	constants.  Simplify, do not require parameter descriptors, do not
+ 	return anything.
+ 	(ipcp_transform_function): Simplify now that
+ 	adjust_agg_replacement_values does not change cfg.  Move definition
+ 	and initialization of descriptors lower.
+ 	* tree-inline.cc (tree_function_versioning): Call append_init_stmts of
+ 	param_body_adjs, if there are any.
+ 
+ 2022-12-13  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.cc (useful_ipcp_transformation_info_p): New function.
+ 	(write_ipcp_transformation_info): Added a parameter, simplified
+ 	given that is known not to be NULL.
+ 	(ipcp_write_transformation_summaries): Write out all useful
+ 	transformation summaries.
+ 	(read_ipcp_transformation_info): Simplify given that some info
+ 	will be read.
+ 	(read_replacements_section): Remove assert.
+ 	* lto-cgraph.cc (add_node_to): Also set encode_body for clones.
+ 	* lto-streamer-out.cc (lto_output): Do not output virtual clones.
+ 
+ 2022-12-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/108044
+ 	* config/i386/i386.md (*concat<half><mode>3_5, *concat<mode><dwi>3_6,
+ 	*concat<mode><dwi>3_7): Split alternative with =ro output constraint
+ 	into =r,o,o and use Wd input constraint for the last alternative which
+ 	is enabled for TARGET_64BIT.  Reject ix86_endbr_immediate_operand
+ 	in the input constant.
+ 
+ 2022-12-13  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (tbranch_<code><mode>3): Use gen_int_mode.
+ 
+ 2022-12-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/108064
+ 	* tree-vect-patterns.cc (vect_recog_rotate_pattern): Pass uvectype
+ 	as 4th argument to append_pattern_def_seq for statements with lhs
+ 	with utype type.
+ 
+ 2022-12-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105801
+ 	* tree-ssa-ccp.cc (likely_value): .DEFERRED_INIT produces
+ 	UNDEFINED.
+ 	* doc/invoke.texi (ftrivial-auto-var-init): Explicitely
+ 	mention we treat variables without an initializer as
+ 	undefined also for optimization purposes.
+ 
+ 2022-12-13  Tom Tromey  <tom@tromey.com>
+ 	    Mark Wielaard  <mark@klomp.org>
+ 	    Marc Poulhiès  <dkm@kataplop.net>
+ 
+ 	* dwarf2out.cc (is_rust): New.
+ 	(base_type_die): Use DW_ATE_UTF for the Rust 'char' type.
+ 	(gen_compile_unit_die): Handle "GNU Rust".
+ 
+ 2022-12-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/108076
+ 	* tree-if-conv.cc (if_convertible_loop_p_1): Reject blocks
+ 	with non-local or forced labels that we later remove
+ 	labels from.
+ 
+ 2022-12-13  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.md (cbranchcc4): New expander.
+ 
+ 2022-12-13  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* optabs.cc (prepare_cmp_insn): Return a NULL rtx other than
+ 	assertion failure when targets don't have cbranch optab or
+ 	predicate check fails.
+ 
+ 2022-12-12  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_rtx_costs): Add correct costs
+ 	for 24-bit and 12-bit shifted immediate add/sub.
+ 	(TARGET_CONST_ANCHOR): Define.
+ 	* config/aarch64/predicates.md (aarch64_pluslong_immediate):
+ 	Fix range check.
+ 
+ 2022-12-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* match.pd: Add new rule.
+ 
+ 2022-12-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_can_change_mode_class): Restrict
+ 	conversions between partial struct types properly.
+ 
+ 2022-12-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (*tb<optab><mode>1): Rename to...
+ 	(*tb<optab><ALLI:mode><GPI:mode>1): ... this.
+ 	(tbranch_<code><mode>4): New.
+ 	* config/aarch64/iterators.md(ZEROM, zerom): New.
+ 
+ 2022-12-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* dojump.cc (do_jump): Pass along value.
+ 	(do_jump_by_parts_greater_rtx): Likewise.
+ 	(do_jump_by_parts_zero_rtx): Likewise.
+ 	(do_jump_by_parts_equality_rtx): Likewise.
+ 	(do_compare_rtx_and_jump): Likewise.
+ 	(do_compare_and_jump): Likewise.
+ 	* dojump.h (do_compare_rtx_and_jump): New.
+ 	* optabs.cc (emit_cmp_and_jump_insn_1): Refactor to take optab to check.
+ 	(validate_test_and_branch): New.
+ 	(emit_cmp_and_jump_insns): Optiobally take a value, and when value is
+ 	supplied then check if it's suitable for tbranch.
+ 	* optabs.def (tbranch_eq$a4, tbranch_ne$a4): New.
+ 	* doc/md.texi (tbranch_@var{op}@var{mode}4): Document it.
+ 	* optabs.h (emit_cmp_and_jump_insns): New.
+ 	* tree.h (tree_zero_one_valued_p): New.
+ 
+ 2022-12-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (*aarch64_simd_movv2hf): New.
+ 	(mov<mode>, movmisalign<mode>, aarch64_dup_lane<mode>,
+ 	aarch64_store_lane0<mode>, aarch64_simd_vec_set<mode>,
+ 	@aarch64_simd_vec_copy_lane<mode>, vec_set<mode>,
+ 	reduc_<optab>_scal_<mode>, reduc_<fmaxmin>_scal_<mode>,
+ 	aarch64_reduc_<optab>_internal<mode>, aarch64_get_lane<mode>,
+ 	vec_init<mode><Vel>, vec_extract<mode><Vel>): Support V2HF.
+ 	(aarch64_simd_dupv2hf): New.
+ 	* config/aarch64/aarch64.cc (aarch64_classify_vector_mode):
+ 	Add E_V2HFmode.
+ 	* config/aarch64/iterators.md (VHSDF_P): New.
+ 	(V2F, VMOVE, nunits, Vtype, Vmtype, Vetype, stype, VEL,
+ 	Vel, q, vp): Add V2HF.
+ 	* config/arm/types.md (neon_fp_reduc_add_h): New.
+ 
+ 2022-12-12  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
+ 	__ARM_FEATURE_PAUTH and __ARM_FEATURE_BTI when appropriate.
+ 	* config/aarch64/aarch64.h (TARGET_BTI): Define.
+ 
+ 2022-12-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.cc (dt_simplify::gen): Revert last change.
+ 	* match.pd: Revert simplification of CONSTUCTOR leaf handling.
+ 	(&x cmp SSA_NAME): Handle ADDR_EXPR in SSA defs.
+ 	* fold-const.cc (split_address_to_core_and_offset): Handle
+ 	ADDR_EXPRs in SSA defs.
+ 	(address_compare): Likewise.
+ 
+ 2022-12-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89317
+ 	* tree-ssa-ccp.cc (ccp_fold): Handle GIMPLE_COND via
+ 	gimple_fold_stmt_to_constant_1.
+ 	* match.pd (&a != &a + c): Apply to pointer_plus with non-ADDR_EXPR
+ 	base as well.
+ 
+ 2022-12-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/89317
+ 	* match.pd ((p + b) - &p->c -> b - offsetof(c)): New patterns.
+ 
+ 2022-12-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.cc (dt_node::gen_kids): Handle ADDR_EXPR in both
+ 	the GENERIC and GIMPLE op position.
+ 	(dt_simplify::gen): Capture both GENERIC and GIMPLE op
+ 	position for ADDR_EXPR and CONSTRUCTOR.
+ 	* match.pd: Simplify CONSTRUCTOR leaf handling.
+ 
+ 2022-12-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106904
+ 	* tree.h (strip_zero_offset_components): Declare.
+ 	* tree.cc (strip_zero_offset_components): Define.
+ 	* tree-vect-data-refs.cc (vect_create_addr_base_for_vector_ref):
+ 	Strip zero offset components before building the address.
+ 
+ 2022-12-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107997
+ 	* tree-ssa-loop-ivopts.cc: Include cfganal.h.
+ 	(create_new_iv) <case IP_END>: If ip_end_pos bb is non-empty and ends
+ 	with a stmt which ends bb, instead of adding iv update after it split
+ 	the latch edge and insert iterator into the new latch bb.
+ 
+ 2022-12-09  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_emit_set_const): Remove copy_rtx.
+ 	(rs6000_emit_set_long_const): Likewise.
+ 
+ 2022-12-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/i386-builtins.cc (fold_builtin_cpu): Use same path
+ 	as for PR103661.
+ 	* doc/extend.texi: Fix "x86-64" use.
+ 
+ 2022-12-09  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rtems.h (SUBTARGET_CC1_SPEC): Rename to...
+ 	(OS_CC1_SPEC): ...this.
+ 	* gcc.cc (SUBTARGET_CC1_SPEC): Rename to...
+ 	(OS_CC1_SPEC): ...this.
+ 
+ 2022-12-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Update for renaming of
+ 	analyzer/region-model-impl-calls.cc to analyzer/kf.cc.
+ 
+ 2022-12-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* doc/invoke.texi (x86 options): Document
+ 	-mlam={none,u48,u57}.
+ 	* config/i386/i386-opts.h (enum lam_type): New enum.
+ 	* config/i386/i386.cc (ix86_memtag_can_tag_addresses): New.
+ 	(ix86_memtag_set_tag): Ditto.
+ 	(ix86_memtag_extract_tag): Ditto.
+ 	(ix86_memtag_add_tag): Ditto.
+ 	(ix86_memtag_tag_size): Ditto.
+ 	(ix86_memtag_untagged_pointer): Ditto.
+ 	(TARGET_MEMTAG_CAN_TAG_ADDRESSES): New.
+ 	(TARGET_MEMTAG_ADD_TAG): Ditto.
+ 	(TARGET_MEMTAG_SET_TAG): Ditto.
+ 	(TARGET_MEMTAG_EXTRACT_TAG): Ditto.
+ 	(TARGET_MEMTAG_UNTAGGED_POINTER): Ditto.
+ 	(TARGET_MEMTAG_TAG_SIZE): Ditto.
+ 	(IX86_HWASAN_SHIFT): Ditto.
+ 	(IX86_HWASAN_TAG_SIZE): Ditto.
+ 	* config/i386/i386-expand.cc (ix86_expand_call): Untag code
+ 	pointer.
+ 	* config/i386/i386-options.cc (ix86_option_override_internal):
+ 	Error when enable -mlam=[u48|u57] for 32-bit code.
+ 	* config/i386/i386.opt: Add -mlam=[none|u48|u57].
+ 	* config/i386/i386-protos.h (ix86_memtag_untagged_pointer):
+ 	Declare.
+ 	(ix86_memtag_can_tag_addresses): Ditto.
+ 
+ 2022-12-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/invoke.texi (-fsanitize=address): Suggest options to improve
+ 	stack traces.
+ 
+ 2022-12-08  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	PR ipa/108000
+ 	* ipa-cp.cc (ipcp_propagate_stage): Fix profile count comparison
+ 
+ 2022-12-08  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.md (bswap<mode>2): New define_insn.
+ 
+ 2022-12-08  Sebastian Pop  <spop@amazon.com>
+ 
+ 	PR target/98776
+ 	* config/aarch64/aarch64-protos.h (aarch64_output_patchable_area):
+ 	Declared.
+ 	* config/aarch64/aarch64.cc (aarch64_print_patchable_function_entry):
+ 	Emit an UNSPECV_PATCHABLE_AREA pseudo instruction.
+ 	(aarch64_output_patchable_area): New.
+ 	* config/aarch64/aarch64.md (UNSPECV_PATCHABLE_AREA): New.
+ 	(patchable_area): Define.
+ 
+ 2022-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/106719
+ 	* cfgbuild.cc (find_bb_boundaries): If there are NOTEs in between
+ 	debug_insn (seen after flow_transfer_insn) and insn, move NOTEs
+ 	before all the DEBUG_INSNs and split after NOTEs.  If there are
+ 	other insns like jump table data, clear debug_insn.
+ 
+ 2022-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107627
+ 	* config/i386/i386.md (HALF, half): New mode attributes.
+ 	(*concat<half><mode>3_5, *concat<mode><dwi>3_6,
+ 	*concat<mode><dwi>3_7): New define_insn_and_split patterns.
+ 
+ 2022-12-08  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/107985
+ 	* gimple-range-op.cc
+ 	(gimple_range_op_handler::gimple_range_op_handler): Check if type
+ 	of the operands is supported.
+ 	* gimple-range.cc (gimple_ranger::prefill_stmt_dependencies): Do
+ 	not assert if here is no range-op handler.
+ 
+ 2022-12-08  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	* config/rs6000/predicates.md: Use sext_hwi.
+ 	* config/rs6000/rs6000.cc (num_insns_constant_gpr): Likewise.
+ 	(darwin_rs6000_legitimate_lo_sum_const_p): Likewise.
+ 	(mem_operand_gpr): Likewise.
+ 	(mem_operand_ds_form): Likewise.
+ 	(rs6000_legitimize_address): Likewise.
+ 	(rs6000_emit_set_const): Likewise.
+ 	(rs6000_emit_set_long_const): Likewise.
+ 	(print_operand): Likewise.
+ 	(constant_generates_xxspltiw): Remove unnecessary expressions.
+ 	* config/rs6000/rs6000.md: Use sext_hwi.
+ 
+ 2022-12-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107699
+ 	* match.pd (&a !=/== &a.b + c -> (&a - &a.b) !=/== c): New
+ 	pattern variant.
+ 
+ 2022-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* range-op-float.cc (frange_nextafter): For MODE_COMPOSITE_P from
+ 	denormal or zero, use real_nextafter on DFmode with conversions
+ 	around it.
+ 	(frange_arithmetic): For mode_composite, on top of rounding in the
+ 	right direction accept extra 1ulp error for PLUS/MINUS_EXPR, extra
+ 	2ulps error for MULT_EXPR and extra 3ulps error for RDIV_EXPR.
+ 
+ 2022-12-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107967
+ 	* range-op-float.cc (frange_arithmetic): Fix a thinko - if
+ 	inf is negative, use nextafter if !real_less (&result, &value)
+ 	rather than if real_less (&result, &value).  If result is +-INF
+ 	while value is finite and -fno-rounding-math, don't do rounding
+ 	if !inexact or if result is significantly above max representable
+ 	value or below min representable value.
+ 
+ 2022-12-07  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config.gcc (xtensa*-*-*): Add xtensa-dynconfig.o to extra_objs.
+ 	* config/xtensa/t-xtensa (TM_H): Add xtensa-dynconfig.h.
+ 	(xtensa-dynconfig.o): New rule.
+ 	* config/xtensa/xtensa-dynconfig.c: New file.
+ 	* config/xtensa/xtensa-protos.h (xtensa_get_config_strings): New
+ 	declaration.
+ 	* config/xtensa/xtensa.h (xtensa-config.h): Replace #include
+ 	with xtensa-dynconfig.h
+ 	(XCHAL_HAVE_MUL32_HIGH, XCHAL_HAVE_RELEASE_SYNC)
+ 	(XCHAL_HAVE_S32C1I, XCHAL_HAVE_THREADPTR)
+ 	(XCHAL_HAVE_FP_POSTINC): Drop definitions.
+ 	(TARGET_DIV32): Replace with __XCHAL_HAVE_DIV32.
+ 	(TARGET_CPU_CPP_BUILTINS): Add new 'builtin' variable and loop
+ 	through string array returned by the xtensa_get_config_strings
+ 	function call.
+ 
+ 2022-12-07  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	PR target/108006
+ 	* config/aarch64/aarch64.cc (aarch64_expand_sve_const_vector):
+ 	Fix call to aarch64_move_imm to use SI/DI.
+ 
+ 2022-12-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/105676
+ 	* ipa-pure-const.cc (ipa_make_function_pure): Skip also
+ 	for functions already being const.
+ 
+ 2022-12-07  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/x86-tune.def (X86_TUNE_AVOID_256FMA_CHAINS): Add
+ 	m_SAPPHIRERAPIDS, m_ALDERLAKE and m_CORE_ATOM.
+ 
+ 2022-12-07  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/107920
+ 	* config/aarch64/aarch64-sve-builtins-base.cc: Use
+ 	gsi_replace_with_seq_vops to handle virtual operands, and gate
+ 	the transform on !flag_non_call_exceptions.
+ 	* gimple-fold.cc (gsi_replace_with_seq_vops): Make function non static.
+ 	* gimple-fold.h (gsi_replace_with_seq_vops): Declare.
+ 
+ 2022-12-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107970
+ 	* config/i386/mmx.md (btruncv2sf2): Add TARGET_MMX_WITH_SSE to
+ 	the condition.
+ 
+ 2022-12-06  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_bitmask_imm): Use unsigned type.
+ 	(aarch64_is_mov_xn_imm): New function.
+ 	(aarch64_move_imm): Refactor, assert mode is SImode or DImode.
+ 	(aarch64_internal_mov_immediate): Assert mode is SImode or DImode.
+ 	Simplify special cases.
+ 	(aarch64_uimm12_shift): Simplify code.
+ 	(aarch64_clamp_to_uimm12_shift): Likewise.
+ 	(aarch64_movw_imm): Rename to aarch64_is_movz.
+ 	(aarch64_float_const_rtx_p): Pass either SImode or DImode to
+ 	aarch64_internal_mov_immediate.
+ 	(aarch64_rtx_costs): Likewise.
+ 	* config/aarch64/aarch64.md (movdi_aarch64): Merge 'N' and 'M'
+ 	constraints into single 'O'.
+ 	(mov<mode>_aarch64): Likewise.
+ 	* config/aarch64/aarch64-protos.h (aarch64_move_imm): Use unsigned.
+ 	(aarch64_bitmask_imm): Likewise.
+ 	(aarch64_uimm12_shift): Likewise.
+ 	(aarch64_is_mov_xn_imm): New prototype.
+ 	* config/aarch64/constraints.md: Add 'O' for 32/64-bit immediates,
+ 	limit 'N' to 64-bit only moves.
+ 
+ 2022-12-06  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	* attribs.cc (strict_flex_array_level_of): New function.
+ 	* attribs.h (strict_flex_array_level_of): Prototype for new function.
+ 	* doc/invoke.texi: Update -Warray-bounds by specifying the impact from
+ 	-fstrict-flex-arrays. Also update -Warray-bounds=2 by eliminating its
+ 	impact on treating trailing arrays as flexible array members.
+ 	* gimple-array-bounds.cc (get_up_bounds_for_array_ref): New function.
+ 	(check_out_of_bounds_and_warn): New function.
+ 	(array_bounds_checker::check_array_ref): Update with call to the above
+ 	new functions.
+ 	* tree.cc (array_ref_flexible_size_p): Add one new argument.
+ 	(component_ref_sam_type): New function.
+ 	(component_ref_size): Control with level of strict-flex-array.
+ 	* tree.h (array_ref_flexible_size_p): Update prototype.
+ 	(enum struct special_array_member): Add two new enum values.
+ 	(component_ref_sam_type): New prototype.
+ 
+ 2022-12-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi: Drop out-of-date ideas for other checkers.
+ 
+ 2022-12-06  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/call-details.o,
+ 	analyzer/kf-analyzer.o, and kf-lang-cp.o.
+ 
+ 2022-12-06  Marcel Vollweiler  <marcel@codesourcery.com>
+ 
+ 	* gimplify.cc (optimize_target_teams): Set initial num_teams_upper
+ 	to "-2" instead of "1" for non-existing num_teams clause in order to
+ 	disambiguate from the case of an existing num_teams clause with value 1.
+ 
+ 2022-12-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/107987
+ 	* config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>,
+ 	@mve_vcmp<mve_cmp_op>q_n_f<mode>): Apply vec_duplicate to scalar
+ 	operand.
+ 
+ 2022-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107969
+ 	* config/i386/i386.md (cbranchbf4, cstorebf4): Guard expanders
+ 	with the same condition as cbranchsf4 or cstoresf4 expanders.
+ 
+ 2022-12-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104475
+ 	* pointer-query.h (access_ref::ref_nullptr_p): New flag.
+ 	* pointer-query.cc (access_ref::access_ref): Initialize
+ 	ref_nullptr_p.
+ 	(compute_objsize_r): Set ref_nullptr_p if we treat it that way.
+ 	(access_ref::inform_access): If ref was treated as nullptr
+ 	based, indicate that.
+ 
+ 2022-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107972
+ 	* range-op-float.cc (frange_drop_infs): New function.
+ 	(float_binary_op_range_finish): Add DIV_OP2 argument.  If DIV_OP2 is
+ 	false and lhs is finite or if DIV_OP2 is true and lhs is non-zero and
+ 	not NAN, r must be finite too.
+ 	(foperator_div::op2_range): Pass true to DIV_OP2 of
+ 	float_binary_op_range_finish.
+ 
+ 2022-12-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107975
+ 	* range-op-float.cc (foperator_mult::op1_range,
+ 	foperator_div::op1_range, foperator_div::op2_range): Just
+ 	return float_binary_op_range_finish result if lhs is known
+ 	NAN, or the other operand is known NAN or UNDEFINED.
+ 
+ 2022-12-06  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_expand_vector_init): Use dup
+ 	and zip1 for interleaving elements in vector initializer.
+ 
+ 2022-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/40635
+ 	* tree-into-ssa.cc (rewrite_update_phi_arguments): Only
+ 	update the argument when the reaching definition is different
+ 	from the current argument.  Keep an existing argument
+ 	location.
+ 
+ 2022-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106868
+ 	* gimple-ssa-warn-access.cc (pass_waccess::gimple_call_return_arg_ref):
+ 	Inline into single user ...
+ 	(pass_waccess::check_dangling_uses): ... here and adjust the
+ 	call and the PHI case to require that ref.aref is the address
+ 	of the decl.
+ 
+ 2022-12-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/106805
+ 	* match.pd (cmp @0 REAL_CST@1): Don't optimize x cmp NaN
+ 	or NaN cmp x to false/true for cmp >/>=/</<= if -ftrapping-math.
+ 
+ 2022-12-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107879
+ 	* range-op-float.cc (foperator_mult::op1_range): If both
+ 	lhs and op2 ranges contain zero or both ranges contain
+ 	some infinity, set r range to zero_to_inf_range depending on
+ 	signbit_known_p.
+ 	(foperator_div::op2_range): Similarly for lhs and op1 ranges.
+ 	(foperator_div::op1_range): If lhs range contains zero and op2
+ 	range contains some infinity or vice versa, set r range to
+ 	zero_to_inf_range depending on signbit_known_p.
+ 	(foperator_div::rv_fold): Fix up condition for returning known NAN.
+ 
+ 2022-12-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107833
+ 	PR tree-optimization/107839
+ 	* cfghooks.cc: Include tree.h.
+ 	* tree-ssa-loop-im.cc (movement_possibility): Wrap and
+ 	make stmts using any ssa_name_maybe_undef_p operand
+ 	to preserve execution.
+ 	(loop_invariant_motion_in_fun): Call mark_ssa_maybe_undefs
+ 	to init maybe-undefined status.
+ 	* tree-ssa-loop-ivopts.cc (ssa_name_maybe_undef_p,
+ 	ssa_name_set_maybe_undef, ssa_name_any_use_dominates_bb_p,
+ 	mark_ssa_maybe_undefs): Move ...
+ 	* tree-ssa.cc: ... here.
+ 	* tree-ssa.h (ssa_name_any_use_dominates_bb_p,
+ 	mark_ssa_maybe_undefs): Declare.
+ 	(ssa_name_maybe_undef_p, ssa_name_set_maybe_undef): Define.
+ 
+ 2022-12-05  Andrew Pinski  <pinskia@gmail.com>
+ 
+ 	PR tree-optimization/107956
+ 	* tree-vect-patterns.cc (vect_recog_mask_conversion_pattern):
+ 	Check for NULL LHS on masked loads.
+ 
+ 2022-12-05  Kewen Lin  <linkw@linux.ibm.com>
+ 	    Richard Sandiford   <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/107412
+ 	* gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Use
+ 	untruncated type for the length, and avoid to_constant and tree
+ 	arithmetic for subtraction.
+ 
+ 2022-12-02  Bernhard Reutner-Fischer  <rep.dot.nop@gmail.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	* function.cc (init_function_start): Use DECL_RESULT location
+ 	for -Waggregate-return warning.
+ 
+ 2022-12-02  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* fold-const.cc (fold_unary_loc): Check TREE_TYPE of node.
+ 	(tree_invalid_nonnegative_warnv_p): Likewise.
+ 
+ 2022-12-02  Jason Merrill  <jason@redhat.com>
+ 
+ 	* gcc.cc (validate_switches): Reset suffix/starred on loop.
+ 
+ 2022-12-02  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	* lra-constraints.cc (curr_insn_transform): Check available hard
+ 	regs for pseudo and its subreg to decide what to reload.
+ 
+ 2022-12-02  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-expand.cc
+ 	(ix86_expand_fast_convert_bf_to_sf): Use extendbfsf2_1 for
+ 	nonimmediate operand.
+ 
+ 2022-12-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-12-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/106577
+ 	* config/i386/i386-expand.cc (ix86_vector_duplicate_value): Save/restore
+ 	recog_data around recog_memoized calls.
+ 
+ 2022-12-02  Michael Collison  <collison@rivosinc.com>
+ 
+ 	* match.pd ((x & 0x1) == 0) ? y : z <op> y
+ 	-> (-(typeof(y))(x & 0x1) & z) <op> y.
+ 
+ 2022-12-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107946
+ 	* params.opt (-param=max-unswitch-depth=): New.
+ 	* doc/invoke.texi (--param=max-unswitch-depth): Document.
+ 	* tree-ssa-loop-unswitch.cc (init_loop_unswitch_info): Honor
+ 	--param=max-unswitch-depth
+ 
+ 2022-12-02  Eric Gallager  <egallager@gcc.gnu.org>
+ 
+ 	PR bootstrap/59447
+ 	* configure: Regenerate.
+ 	* configure.ac: Document --with-dwarf2 flag as also
+ 	applying to later DWARF standards.
+ 	* doc/install.texi: Likewise.
+ 
+ 2022-12-02  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107934
+ 	* config/i386/i386.md (extendbfsf2_1): Change type from
+ 	sseishft to sseishft1.
+ 
+ 2022-12-01  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* varasm.cc (assemble_variable): Fix type confusion bug when
+ 	checking for ".vtable_map_vars" section.
+ 
+ 2022-12-01  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-v.cc (emit_pred_op): Adapt for mask mode.
+ 	* config/riscv/vector.md: Remove Tail && make policy operand for mask mode mov.
+ 
+ 2022-12-01  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-protos.h (enum vlmul_type): New enum.
+ 	(get_vlmul): New function.
+ 	(get_ratio): Ditto.
+ 	* config/riscv/riscv-v.cc (struct mode_vtype_group): New struct.
+ 	(ENTRY): Adapt for attributes.
+ 	(enum vlmul_type): New enum.
+ 	(get_vlmul): New function.
+ 	(get_ratio): New function.
+ 	* config/riscv/riscv-vector-switch.def (ENTRY): Adapt for attributes.
+ 	* config/riscv/riscv.cc (ENTRY): Ditto.
+ 	* config/riscv/vector.md (false,true): Add attributes.
+ 
+ 2022-12-01  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/constraints.md (Wdm): New constraint.
+ 	* config/riscv/predicates.md (direct_broadcast_operand): New predicate.
+ 	* config/riscv/riscv-protos.h (RVV_VLMAX): New macro.
+ 	(emit_pred_op): Refine function.
+ 	* config/riscv/riscv-selftests.cc (run_const_vector_selftests): New function.
+ 	(run_broadcast_selftests): Ditto.
+ 	(BROADCAST_TEST): New tests.
+ 	(riscv_run_selftests): More tests.
+ 	* config/riscv/riscv-v.cc (emit_pred_move): Refine function.
+ 	(emit_vlmax_vsetvl): Ditto.
+ 	(emit_pred_op): Ditto.
+ 	(expand_const_vector): New function.
+ 	(legitimize_move): Add constant vector support.
+ 	* config/riscv/riscv.cc (riscv_print_operand): New asm print rule for const vector.
+ 	* config/riscv/riscv.h (X0_REGNUM): New macro.
+ 	* config/riscv/vector-iterators.md: New attribute.
+ 	* config/riscv/vector.md (vec_duplicate<mode>): New pattern.
+ 	(@pred_broadcast<mode>): New pattern.
+ 
+ 2022-12-01  Paul-Antoine Arras  <pa@codesourcery.com>
+ 
+ 	* config/gcn/gcn-opts.h (TARGET_FIJI): -march=fiji.
+ 	(TARGET_VEGA10): -march=gfx900.
+ 	(TARGET_VEGA20): -march=gfx906.
+ 	(TARGET_GFX908): -march=gfx908.
+ 	(TARGET_GFX90a): -march=gfx90a.
+ 	* config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS): Define a builtin that
+ 	uniquely maps to '-march'.
+ 
+ 2022-12-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107937
+ 	* gimple-predicate-analysis.h (predicate::is_true): New.
+ 	(predicate::is_false): Likewise.
+ 	(predicate::empty_val): Likewise.
+ 	(uninit_analysis::uninit_analysis): Properly initialize
+ 	def_preds.
+ 	* gimple-predicate-analysis.cc (simplify_1b): Indicate
+ 	whether the chain became empty.
+ 	(predicate::simplify): Release emptied chain before removing it.
+ 	(predicate::normalize): Replace temporary object with assertion.
+ 	(uninit_analysis::is_use_guarded): Deal with predicates
+ 	that simplify to true/false.
+ 
+ 2022-12-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107935
+ 	* tree-ssa-sccvn.cc (visit_phi): Honor forced VARYING on
+ 	backedges.
+ 
+ 2022-12-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107627
+ 	* config/i386/i386.md (*concat<mode><dwi>3_1, *concat<mode><dwi>3_2):
+ 	For operands which are zero_extend arguments allow memory if
+ 	output operand is a register.
+ 	(*concat<mode><dwi>3_3, *concat<mode><dwi>3_4): Likewise.  If
+ 	both input operands are memory, use early clobber on output operand.
+ 	* config/i386/i386-expand.cc (split_double_concat): Deal with corner
+ 	cases where one input is memory and the other is not and the address
+ 	of the memory input uses a register we'd overwrite before loading
+ 	the memory into a register.
+ 
+ 2022-12-01  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000-call.cc (swap_endian_selector_for_mode):
+ 	Corrects comments of this function and make them clear.
+ 
+ 2022-12-01  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107863
+ 	* config/i386/i386-expand.cc (ix86_expand_vec_set_builtin):
+ 	Convert op1 to target mode whenever mode mismatch.
+ 
+ 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106626
+ 	* diagnostic-path.h
+ 	(diagnostic_path::get_first_event_in_a_function): New decl.
+ 	* diagnostic.cc (diagnostic_path::get_first_event_in_a_function):
+ 	New.
+ 	(diagnostic_path::interprocedural_p): Ignore leading events that
+ 	are outside of any function.
+ 
+ 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/bounds-checking.o.
+ 
+ 2022-12-01  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	PR target/100866
+ 	* config/rs6000/rs6000-call.cc (swap_endian_selector_for_mode):
+ 	Generate permute index directly for little endian targets.
+ 	* config/rs6000/vsx.md (revb_<mode>): Call vprem directly with
+ 	corresponding permute indexes.
+ 
+ 2022-11-30  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (addvdi3): Force operand 2 to a register.
+ 	Remove "addi,tsv,*" instruction from unamed pattern.
+ 	(subvdi3): Force operand 1 to a register.
+ 	Remove "subi,tsv" instruction from from unamed pattern.
+ 
+ 2022-11-30  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (aarch64_cpymemdi): Specify clobber of CC reg.
+ 	(*aarch64_cpymemdi): Likewise.
+ 	(aarch64_movmemdi): Likewise.
+ 	(aarch64_setmemdi): Likewise.
+ 	(*aarch64_setmemdi): Likewise.
+ 
+ 2022-11-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-switch-conversion.cc (bit_test_cluster::emit): Remove
+ 	dead variable bt_range.
+ 
+ 2022-11-30  Iskander Shakirzyanov  <iskander@ispras.ru>
+ 	    Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
+ 
+ 	PR driver/107787
+ 	* common.opt (Warray-bounds): Turn into alias of
+ 	-Warray-bounds=1.
+ 	* builtins.cc (c_strlen): Use OPT_Warray_bounds_
+ 	instead of OPT_Warray_bounds.
+ 	* diagnostic-spec.cc (nowarn_spec_t::nowarn_spec_t): Ditto.
+ 	* gimple-array-bounds.cc (array_bounds_checker::check_array_ref,
+ 	array_bounds_checker::check_mem_ref,
+ 	array_bounds_checker::check_addr_expr,
+ 	array_bounds_checker::check_array_bounds): Ditto.
+ 	* gimple-ssa-warn-restrict.cc (maybe_diag_access_bounds): Ditto.
+ 
+ 2022-11-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/101301
+ 	PR tree-optimization/103680
+ 	* tree-switch-conversion.cc (bit_test_cluster::emit):
+ 	Handle correctly remaining probability.
+ 	(switch_decision_tree::try_switch_expansion): Fix BB's count
+ 	where a cluster expansion happens.
+ 	(switch_decision_tree::emit_cmp_and_jump_insns): Fill up also
+ 	BB count.
+ 	(switch_decision_tree::do_jump_if_equal): Likewise.
+ 	(switch_decision_tree::emit_case_nodes): Handle special case
+ 	for BT expansion which can also fallback to a default BB.
+ 	* tree-switch-conversion.h (cluster::cluster): Add
+ 	m_default_prob probability.
+ 
+ 2022-11-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107919
+ 	* gimple-predicate-analysis.cc (simplify_1): Rename to ...
+ 	(simplify_1a): .. this.
+ 	(simplify_1b): New.
+ 	(predicate::simplify): Call both simplify_1a and simplify_1b.
+ 
+ 2022-11-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-uninit.cc (find_uninit_use): Dump the edge for a
+ 	PHI node.
+ 
+ 2022-11-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107919
+ 	* gimple-predicate-analysis.cc (predicate::simplify_2):
+ 	Handle predicates of arbitrary length.
+ 
+ 2022-11-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107835
+ 	* tree-chrec.cc (chrec_apply): Don't handle "{a, +, a} (x-1)"
+ 	as "a*x" if type is a pointer type.
+ 
+ 2022-11-30  Paul-Antoine Arras  <pa@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_omp_device_kind_arch_isa): Add gfx803.
+ 	* config/gcn/t-omp-device: Add gfx803.
+ 
+ 2022-11-30  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/linux.h (STACK_CHECK_MOVING_SP):
+ 	Define this macro to 1.
+ 	* config/loongarch/loongarch.cc (STACK_CLASH_PROTECTION_GUARD_SIZE):
+ 	Size of guard page.
+ 	(loongarch_first_stack_step): Return the size of the first drop stack
+ 	according to whether stack checking is performed.
+ 	(loongarch_emit_probe_stack_range): Adjust the method of stack checking in prologue.
+ 	(loongarch_output_probe_stack_range): Delete useless code.
+ 	(loongarch_expand_prologue): Adjust the method of stack checking in prologue.
+ 	(loongarch_option_override_internal): Enforce that interval is the same
+ 	size as size so the mid-end does the right thing.
+ 	* config/loongarch/loongarch.h (STACK_CLASH_MAX_UNROLL_PAGES):
+ 	New macro decide whether to loop stack detection.
+ 
+ 2022-11-30  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/103546
+ 	* doc/invoke.texi (Static Analyzer Options): Add isatty, ferror,
+ 	fileno, and getc to the list of functions known to the analyzer.
+ 
+ 2022-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107852
+ 	* tree-ssa-sccvn.cc (visit_phi): Use equivalences recorded
+ 	as predicated values to elide more redundant PHIs.
+ 
+ 2022-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106995
+ 	* tree-if-conv.cc (pass_if_conversion::execute): Also redirect the
+ 	versioning condition to the original loop if this very loop
+ 	vanished during CFG cleanup.
+ 
+ 2022-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107898
+ 	* gimple-ssa-warn-alloca.cc (alloca_call_type): Check
+ 	the type of the alloca argument is compatible with size_t
+ 	before querying ranges.
+ 
+ 2022-11-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/107897
+ 	* multiple_target.cc (pass_target_clone::gate): Disable
+ 	after errors.
+ 
+ 2022-11-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-11-29  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	* configure.ac: add description for
+ 	AC_DEFINE(ENABLE_MULTIARCH, 1)
+ 
+ 2022-11-28  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* match.pd ((A / (1 << B)) -> (A >> B).):
+ 	Fix comment.
+ 
+ 2022-11-28  Sinan  <sinan.lin@linux.alibaba.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_build_integer): Improve some cases
+ 	of loading 64bit constants for rv32.
+ 
+ 2022-11-28  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_emit_int_order_test): Use EQ 0
+ 	rather that XOR 1 for LE and LEU operations.
+ 
+ 2022-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107896
+ 	* tree-vect-stmts.cc (supportable_widening_operation):
+ 	Handle non-vector mode intermediate mode.
+ 
+ 2022-11-28  Frolov Daniil  <frolov.da@phystech.edu>
+ 
+ 	* gimple-ssa-sprintf.cc (fmtresult::type_max_digits): Handle
+ 	base == 2.
+ 	(tree_digits): Likewise.
+ 	(format_integer): Likewise.
+ 	(parse_directive): Add cases for %b and %B directives.
+ 
+ 2022-11-28  Fei Gao  <gaofei@eswincomputing.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_first_stack_step): Fix computation
+ 	of MIN_FIRST_STEP to cover FP save area too.
+ 
+ 2022-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107493
+ 	* tree-scalar-evolution.cc (scev_dfs::follow_ssa_edge_expr):
+ 	Only handle no-op and sign-changing conversions.
+ 
+ 2022-11-28  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_expand_builtin_1): Work on s1 instead
+ 	of s[0:1] and use USE to prevent removal of setting that register.
+ 	* config/gcn/gcn.md (prologue_use_di): Remove.
+ 
+ 2022-11-28  Yuri Gribov  <y.gribov@samsung.com>
+ 
+ 	PR sanitizer/106558
+ 	* sanopt.cc: Do not optimize out checks for non-SSA addresses.
+ 
+ 2022-11-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/106875
+ 	* config/i386/i386.opt (x_ix86_abi): Remove TargetSave.
+ 	(ix86_abi): Replace it with TargetVariable.
+ 	* config/i386/i386-options.cc (ix86_function_specific_save,
+ 	ix86_function_specific_restore): Don't save and restore x_ix86_abi.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vrmlaldavhq_<supf>v4si,
+ 	mve_vrmlaldavhaq_<supf>v4si): Fix spacing vs tabs.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vmlaldavaq_<supf><mode>)
+ 	(mve_vmlaldavaxq_s<mode>, mve_vmlaldavaxq_p_<supf><mode>): Fix
+ 	spacing vs tabs.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vsubq_n_f<mode>): Fix spacing.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vaddlvq_p_<supf>v4si)
+ 	(mve_vaddq_n_<supf><mode>, mve_vaddvaq_<supf><mode>)
+ 	(mve_vaddlvaq_<supf>v4si, mve_vaddq_n_f<mode>)
+ 	(mve_vaddlvaq_p_<supf>v4si, mve_vaddq<mode>, mve_vaddq_f<mode>):
+ 	Fix spacing.
+ 
+ 2022-11-28  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	* config/arm/arm_mve.h (__arm_vsubq_x FP): New overloads.
+ 	(__arm_vsubq_x Integer): New.
+ 
+ 2022-11-28  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	PR target/107515
+ 	* config/arm/arm_mve.h (__ARM_mve_typeid): Add float types.
+ 
+ 2022-11-28  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	PR target/96795
+ 	* config/arm/arm_mve.h (__arm_vaddq): Fix Overloading.
+ 	(__arm_vmulq): Likewise.
+ 	(__arm_vcmpeqq): Likewise.
+ 	(__arm_vcmpneq): Likewise.
+ 	(__arm_vmaxnmavq): Likewise.
+ 	(__arm_vmaxnmvq): Likewise.
+ 	(__arm_vminnmavq): Likewise.
+ 	(__arm_vsubq): Likewise.
+ 	(__arm_vminnmvq): Likewise.
+ 	(__arm_vrshlq): Likewise.
+ 	(__arm_vqsubq): Likewise.
+ 	(__arm_vqdmulltq): Likewise.
+ 	(__arm_vqdmullbq): Likewise.
+ 	(__arm_vqdmulhq): Likewise.
+ 	(__arm_vqaddq): Likewise.
+ 	(__arm_vhaddq): Likewise.
+ 	(__arm_vhsubq): Likewise.
+ 	(__arm_vqdmlashq): Likewise.
+ 	(__arm_vqrdmlahq): Likewise.
+ 	(__arm_vmlasq): Likewise.
+ 	(__arm_vqdmlahq): Likewise.
+ 	(__arm_vmaxnmavq_p): Likewise.
+ 	(__arm_vmaxnmvq_p): Likewise.
+ 	(__arm_vminnmavq_p): Likewise.
+ 	(__arm_vminnmvq_p): Likewise.
+ 	(__arm_vfmasq_m): Likewise.
+ 	(__arm_vsetq_lane): Likewise.
+ 	(__arm_vcmpneq_m): Likewise.
+ 	(__arm_vhaddq_x): Likewise.
+ 	(__arm_vhsubq_x): Likewise.
+ 	(__arm_vqrdmlashq_m): Likewise.
+ 	(__arm_vqdmlashq_m): Likewise.
+ 	(__arm_vmlaldavaxq_p): Likewise.
+ 	(__arm_vmlasq_m): Likewise.
+ 	(__arm_vqdmulhq_m): Likewise.
+ 	(__arm_vqdmulltq_m): Likewise.
+ 	(__arm_viwdupq_m): Likewise.
+ 	(__arm_viwdupq_u16): Likewise.
+ 	(__arm_viwdupq_u32): Likewise.
+ 	(__arm_viwdupq_u8): Likewise.
+ 	(__arm_vdwdupq_m): Likewise.
+ 	(__arm_vdwdupq_u16): Likewise.
+ 	(__arm_vdwdupq_u32): Likewise.
+ 	(__arm_vdwdupq_u8): Likewise.
+ 	(__arm_vaddlvaq): Likewise.
+ 	(__arm_vaddlvaq_p): Likewise.
+ 	(__arm_vaddvaq): Likewise.
+ 	(__arm_vaddvaq_p): Likewise.
+ 	(__arm_vcmphiq_m): Likewise.
+ 	(__arm_vmladavaq_p): Likewise.
+ 	(__arm_vmladavaxq): Likewise.
+ 	(__arm_vmlaldavaxq): Likewise.
+ 	(__arm_vrmlaldavhaq_p): Likewise.
+ 
+ 2022-11-28  Stam Markianos-Wright  <stam.markianos-wright@arm.com>
+ 
+ 	PR target/96795
+ 	* config/arm/arm_mve.h (__arm_vaddq_m_n_s8): Change types.
+ 	(__arm_vaddq_m_n_s32): Likewise.
+ 	(__arm_vaddq_m_n_s16): Likewise.
+ 	(__arm_vaddq_m_n_u8): Likewise.
+ 	(__arm_vaddq_m_n_u32): Likewise.
+ 	(__arm_vaddq_m_n_u16): Likewise.
+ 	(__arm_vaddq_m): Fix Overloading.
+ 	(__ARM_mve_coerce3): New.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vabsq_f<mode>): Fix spacing.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (@mve_vcmp<mve_cmp_op>q_<mode>): Fix
+ 	spacing.
+ 	* config/arm/arm_mve.h (__arm_vcmpgtq_m, __arm_vcmpleq_m)
+ 	(__arm_vcmpltq_m, __arm_vcmpneq_m): Add missing defines.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vdupq_n_f<mode>)
+ 	(mve_vdupq_n_<supf><mode>, mve_vdupq_m_n_<supf><mode>)
+ 	(mve_vdupq_m_n_f<mode>): Fix spacing.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vdwdupq_m_wb_u<mode>_insn): Fix spacing.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vddupq_u<mode>_insn): Fix 'vddup.u'
+ 	spacing.
+ 	(mve_vddupq_m_wb_u<mode>_insn): Likewise.
+ 
+ 2022-11-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/vfp.md (*thumb2_movhi_vfp, *thumb2_movhi_fp16): Fix
+ 	'vmsr' spacing and reg capitalization.
+ 
+ 2022-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107876
+ 	* tree-ssa-loop-unswitch.cc (clean_up_after_unswitching): Wipe
+ 	dominator info if we removed an edge.
+ 
+ 2022-11-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107867
+ 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Handle
+ 	abnormal cleanup after substitution.
+ 
+ 2022-11-28  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (enum loongarch_load_imm_method):
+ 	Remove the member METHOD_INSV that is not currently used.
+ 	(struct loongarch_integer_op): Define a new member curr_value,
+ 	that records the value of the number stored in the destination
+ 	register immediately after the current instruction has run.
+ 	(loongarch_build_integer): Assign a value to the curr_value member variable.
+ 	(loongarch_move_integer): Adds information for the immediate load instruction.
+ 	* config/loongarch/loongarch.md (*movdi_32bit): Redefine as define_insn_and_split.
+ 	(*movdi_64bit): Likewise.
+ 	(*movsi_internal): Likewise.
+ 	(*movhi_internal): Likewise.
+ 	* config/loongarch/predicates.md: Return true as long as it is CONST_INT, ensure
+ 	that the immediate number is not optimized by decomposition during expand
+ 	optimization loop.
+ 
+ 2022-11-28  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107748
+ 	* config/i386/avx512bf16intrin.h (_mm_cvtsbh_ss): Refined.
+ 	* config/i386/i386-builtin-types.def (FLOAT_FTYPE_BFLOAT16):
+ 	New function type.
+ 	* config/i386/i386-builtin.def (BDESC): New builtin.
+ 	* config/i386/i386-expand.cc (ix86_expand_args_builtin):
+ 	Handle the builtin.
+ 	* config/i386/i386.md (extendbfsf2): New expander.
+ 	(extendbfsf2_1): New define_insn.
+ 	(truncsfbf2): Ditto.
+ 
+ 2022-11-26  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/103356
+ 	* match.pd: ((~a) == b -> a ^ b): New pattern.
+ 
+ 2022-11-25  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* common.opt (fopenmp-target-simd-clone): New option.
+ 	(target_simd_clone_device): New enum to go with it.
+ 	* doc/invoke.texi (-fopenmp-target-simd-clone): Document.
+ 	* flag-types.h (enum omp_target_simd_clone_device_kind): New.
+ 	* omp-simd-clone.cc (auto_simd_fail): New function.
+ 	(auto_simd_check_stmt): New function.
+ 	(plausible_type_for_simd_clone): New function.
+ 	(ok_for_auto_simd_clone): New function.
+ 	(simd_clone_create): Add force_local argument, make the symbol
+ 	have internal linkage if it is true.
+ 	(expand_simd_clones): Also check for cloneable functions with
+ 	"omp declare target".  Pass explicit_p argument to
+ 	simd_clone.compute_vecsize_and_simdlen target hook.
+ 	* opts.cc (default_options_table): Add -fopenmp-target-simd-clone.
+ 	* target.def (TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN):
+ 	Add bool explicit_p argument.
+ 	* doc/tm.texi: Regenerated.
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_simd_clone_compute_vecsize_and_simdlen): Update.
+ 	* config/gcn/gcn.cc
+ 	(gcn_simd_clone_compute_vecsize_and_simdlen): Update.
+ 	* config/i386/i386.cc
+ 	(ix86_simd_clone_compute_vecsize_and_simdlen): Update.
+ 
+ 2022-11-25  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/107830
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_vectorize_can_special_div_by_constant): Check validity during
+ 	codegen phase as well.
+ 
+ 2022-11-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* range-op.cc (operator_bitwise_xor::op1_range): Fix thinko.
+ 
+ 2022-11-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107865
+ 	* tree-cfg.cc (move_sese_region_to_fn): Free the number of
+ 	iterations of moved loops.
+ 
+ 2022-11-25  Kewen.Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR target/99889
+ 	* config/rs6000/rs6000.cc (rs6000_print_patchable_function_entry):
+ 	Adjust to call function default_print_patchable_function_entry.
+ 	* targhooks.cc (default_print_patchable_function_entry_1): Remove and
+ 	move the flags preparation ...
+ 	(default_print_patchable_function_entry): ... here, adjust to use
+ 	current_function_funcdef_no for label no.
+ 	* targhooks.h (default_print_patchable_function_entry_1): Remove.
+ 	* varasm.cc (default_elf_asm_named_section): Adjust code for
+ 	__patchable_function_entries section support with LPFE label.
+ 
+ 2022-11-24  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	PR tree-optimization/107413
+ 	* config/aarch64/aarch64.cc (struct tune_params): Add
+ 	fma_reassoc_width to all CPU tuning structures.
+ 	(aarch64_reassociation_width): Use fma_reassoc_width.
+ 	* config/aarch64/aarch64-protos.h (struct tune_params): Add
+ 	fma_reassoc_width.
+ 
+ 2022-11-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/107317
+ 	* asan.cc: Include diagnostic-core.h.
+ 	(asan_emit_stack_protection): Return NULL early if seen_error ().
+ 
+ 2022-11-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* vr-values.cc (simplify_using_ranges::compare_names): Remove.
+ 	(vrp_evaluate_conditional_warnv_with_ops): Remove call to
+ 	compare_names.
+ 	(simplify_using_ranges::vrp_visit_cond_stmt): Remove use_equiv_p
+ 	argument to vrp_evaluate_conditional_warnv_with_ops.
+ 	* vr-values.h (class simplify_using_ranges): Remove
+ 	compare_names.
+ 	Remove use_equiv_p to vrp_evaluate_conditional_warnv_with_ops.
+ 
+ 2022-11-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-vrp.cc (overflow_comparison_p_1): Remove follow_assert_exprs.
+ 	(overflow_comparison_p): Remove use_equiv_p.
+ 	* tree-vrp.h (overflow_comparison_p): Same.
+ 	* vr-values.cc (vrp_evaluate_conditional_warnv_with_ops): Remove
+ 	use_equiv_p argument to overflow_comparison_p.
+ 
+ 2022-11-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* doc/gimple.texi: Remove ASSERT_EXPR references.
+ 	* fold-const.cc (tree_expr_nonzero_warnv_p): Same.
+ 	(fold_binary_loc): Same.
+ 	(tree_expr_nonnegative_warnv_p): Same.
+ 	* gimple-array-bounds.cc (get_base_decl): Same.
+ 	* gimple-pretty-print.cc (dump_unary_rhs): Same.
+ 	* gimple.cc (get_gimple_rhs_num_ops): Same.
+ 	* pointer-query.cc (handle_ssa_name): Same.
+ 	* tree-cfg.cc (verify_gimple_assign_single): Same.
+ 	* tree-pretty-print.cc (dump_generic_node): Same.
+ 	* tree-scalar-evolution.cc (scev_dfs::follow_ssa_edge_expr):Same.
+ 	(interpret_rhs_expr): Same.
+ 	* tree-ssa-operands.cc (operands_scanner::get_expr_operands): Same.
+ 	* tree-ssa-propagate.cc
+ 	(substitute_and_fold_dom_walker::before_dom_children): Same.
+ 	* tree-ssa-threadedge.cc: Same.
+ 	* tree-vrp.cc (overflow_comparison_p): Same.
+ 	* tree.def (ASSERT_EXPR): Add note.
+ 	* tree.h (ASSERT_EXPR_VAR): Remove.
+ 	(ASSERT_EXPR_COND): Remove.
+ 	* vr-values.cc (simplify_using_ranges::vrp_visit_cond_stmt):
+ 	Remove comment.
+ 
+ 2022-11-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in: Remove value-range-equiv.o
+ 	* gimple-array-bounds.cc
+ 	(array_bounds_checker::array_bounds_checker): Remove comment.
+ 	* tree-vrp.cc (supported_types_p): Remove use of value_range_equiv.
+ 	* value-query.cc (class equiv_allocator): Same.
+ 	(range_query::allocate_value_range_equiv): Remove.
+ 	(range_query::free_value_range_equiv): Remove.
+ 	(range_query::get_value_range): Remove.
+ 	* value-query.h (class range_query): Remove get_value_range.
+ 	Remove allocate_value_range_equiv.
+ 	Remove free_value_range_equiv.
+ 	* vr-values.cc (compare_ranges): Replace value_range_equiv with
+ 	value_range.
+ 	(simplify_using_ranges::get_vr_for_comparison): Same.
+ 	(simplify_using_ranges::compare_names): Same.
+ 	* vr-values.h: Remove value_range_equiv references.
+ 	* value-range-equiv.cc: Removed.
+ 	* value-range-equiv.h: Removed.
+ 
+ 2022-11-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* doc/invoke.texi: Remove docs for max-vrp-switch-assertions,
+ 	vrp1-mode, and vrp2-mode.
+ 	* params.opt: Same.
+ 	* range-op.cc (masked_increment): Move from tree-vrp.cc.
+ 	* tree-vrp.cc (class live_names): Remove.
+ 	(live_names::init_bitmap_if_needed): Remove.
+ 	(live_names::block_has_live_names_p): Remove.
+ 	(live_names::clear_block): Remove.
+ 	(live_names::merge): Remove.
+ 	(live_names::set): Remove.
+ 	(live_names::clear): Remove.
+ 	(live_names::live_names): Remove.
+ 	(live_names::~live_names): Remove.
+ 	(live_names::live_on_block_p): Remove.
+ 	(live_names::live_on_edge_p): Remove.
+ 	(get_single_symbol): Make static.
+ 	(build_symbolic_expr): Remove.
+ 	(adjust_symbolic_bound): Remove.
+ 	(combine_bound): Remove.
+ 	(set_value_range_with_overflow): Remove.
+ 	(extract_range_from_pointer_plus_expr): Remove.
+ 	(extract_range_from_plus_minus_expr): Remove.
+ 	(drop_undefines_to_varying): Remove.
+ 	(range_fold_binary_symbolics_p): Remove.
+ 	(range_fold_unary_symbolics_p): Remove.
+ 	(range_fold_binary_expr): Remove.
+ 	(infer_value_range): Remove.
+ 	(dump_assert_info): Remove.
+ 	(dump_asserts_info): Remove.
+ 	(add_assert_info): Remove.
+ 	(extract_code_and_val_from_cond_with_ops): Remove.
+ 	(masked_increment): Move to range-op.cc.
+ 	(register_edge_assert_for_2): Remove.
+ 	(find_case_label_index): Remove.
+ 	(find_case_label_range): Remove.
+ 	(register_edge_assert_for_1): Remove.
+ 	(is_masked_range_test): Remove.
+ 	(register_edge_assert_for): Remove.
+ 	(stmt_interesting_for_vrp): Remove.
+ 	(struct case_info): Remove.
+ 	(struct assert_locus): Remove.
+ 	(class vrp_asserts): Remove.
+ 	(vrp_asserts::build_assert_expr_for): Remove.
+ 	(vrp_asserts::dump): Remove.
+ 	(vrp_asserts::register_new_assert_for): Remove.
+ 	(vrp_asserts::finish_register_edge_assert_for): Remove.
+ 	(vrp_asserts::find_conditional_asserts): Remove.
+ 	(vrp_asserts::compare_case_labels): Remove.
+ 	(vrp_asserts::find_switch_asserts): Remove.
+ 	(vrp_asserts::find_assert_locations_in_bb): Remove.
+ 	(vrp_asserts::find_assert_locations): Remove.
+ 	(vrp_asserts::process_assert_insertions_for): Remove.
+ 	(vrp_asserts::compare_assert_loc): Remove.
+ 	(vrp_asserts::process_assert_insertions): Remove.
+ 	(vrp_asserts::insert_range_assertions): Remove.
+ 	(vrp_asserts::all_imm_uses_in_stmt_or_feed_cond): Remove.
+ 	(vrp_asserts::remove_range_assertions): Remove.
+ 	(class vrp_prop): Remove.
+ 	(vrp_prop::initialize): Remove.
+ 	(enum ssa_prop_result): Remove.
+ 	(vrp_prop::visit_stmt): Remove.
+ 	(vrp_prop::visit_phi): Remove.
+ 	(vrp_prop::finalize): Remove.
+ 	(class vrp_folder): Remove.
+ 	(vrp_folder::fold_predicate_in): Remove.
+ 	(vrp_folder::fold_stmt): Remove.
+ 	(vrp_folder::simplify_casted_conds): Remove.
+ 	(execute_vrp): Remove.
+ 	* tree-vrp.h (struct assert_info): Remove.
+ 	(register_edge_assert_for): Remove.
+ 	(stmt_interesting_for_vrp): Remove.
+ 	(infer_value_range): Remove.
+ 	(get_single_symbol): Remove.
+ 	(masked_increment): Remove.
+ 	(execute_ranger_vrp): Remove.
+ 	* vr-values.cc (set_value_range_to_nonnegative): Remove.
+ 	(set_value_range_to_truthvalue): Remove.
+ 	(vr_values::get_lattice_entry): Remove.
+ 	(vr_values::get_value_range): Remove.
+ 	(vr_values::range_of_expr): Remove.
+ 	(vr_values::value_of_expr): Remove.
+ 	(vr_values::value_on_edge): Remove.
+ 	(vr_values::value_of_stmt): Remove.
+ 	(vr_values::set_def_to_varying): Remove.
+ 	(vr_values::set_defs_to_varying): Remove.
+ 	(vr_values::update_value_range): Remove.
+ 	(symbolic_range_based_on_p): Remove.
+ 	(gimple_assign_nonzero_p): Remove.
+ 	(gimple_stmt_nonzero_p): Remove.
+ 	(vr_values::vrp_stmt_computes_nonzero): Remove.
+ 	(vr_values::op_with_constant_singleton_value_range): Remove.
+ 	(vr_values::extract_range_for_var_from_comparison_expr): Remove.
+ 	(vr_values::extract_range_from_assert): Remove.
+ 	(vr_values::extract_range_from_ssa_name): Remove.
+ 	(vr_values::extract_range_from_binary_expr): Remove.
+ 	(vr_values::extract_range_from_unary_expr): Remove.
+ 	(vr_values::extract_range_from_cond_expr): Remove.
+ 	(vr_values::extract_range_from_comparison): Remove.
+ 	(vr_values::extract_range_from_ubsan_builtin): Remove.
+ 	(vr_values::extract_range_basic): Remove.
+ 	(vr_values::extract_range_from_assignment): Remove.
+ 	(vr_values::adjust_range_with_scev): Remove.
+ 	(vr_values::dump): Remove.
+ 	(vr_values::vr_values): Remove.
+ 	(vr_values::~vr_values): Remove.
+ 	(vrp_valueize): Remove.
+ 	(vrp_valueize_1): Remove.
+ 	(get_output_for_vrp): Remove.
+ 	(vr_values::vrp_visit_assignment_or_call): Remove.
+ 	(simplify_using_ranges::vrp_evaluate_conditional): Remove.
+ 	(vr_values::vrp_visit_switch_stmt): Remove.
+ 	(vr_values::extract_range_from_stmt): Remove.
+ 	(vr_values::extract_range_from_phi_node): Remove.
+ 	(simplify_using_ranges::fold_cond): Add FIXME note.
+ 	(vr_values::set_vr_value): Remove.
+ 	(vr_values::swap_vr_value): Remove.
+ 	* vr-values.h (class vr_values): Remove.
+ 	(get_output_for_vrp): Remove.
+ 
+ 2022-11-24  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/107692
+ 	* common/config/i386/i386-common.cc (ix86_optimization_table):
+ 	Enable loop unroll O2, disable -fweb and -frename-registers
+ 	by default.
+ 	* config/i386/i386-options.cc
+ 	(ix86_override_options_after_change):
+ 	Disable small loop unroll when funroll-loops enabled, reset
+ 	cunroll_grow_size when it is not explicitly enabled.
+ 	(ix86_option_override_internal): Call
+ 	ix86_override_options_after_change instead of calling
+ 	ix86_recompute_optlev_based_flags and ix86_default_align
+ 	separately.
+ 	* config/i386/i386.cc (ix86_loop_unroll_adjust): Adjust unroll
+ 	factor if -munroll-only-small-loops enabled.
+ 	* loop-init.cc (pass_rtl_unroll_loops::gate): Do not enable
+ 	loop unrolling for -O2-speed.
+ 	(pass_rtl_unroll_loops::execute): Rmove
+ 	targetm.loop_unroll_adjust check.
+ 
+ 2022-11-23  Ramana Radhakrishnan  <ramana.gcc@gmail.com>
+ 
+ 	* config/arm/types.md: Update comment.
+ 	(is_neon_type): Add neon_fcmla, neon_fcadd.
+ 
+ 2022-11-23  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (C++ Dialect Options): Recommend using
+ 	-Wdelete-non-virtual-dtor instead of -Wnon-virtual-dtor.
+ 
+ 2022-11-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/107722
+ 	* diagnostic.cc (test_diagnostic_get_location_text): Test
+ 	special_fname_builtin () rather than "<built-in>" and expect
+ 	special_fname_builtin () concatenated with ":" for it.
+ 
+ 2022-11-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Set DO_LINK_MUTEX.
+ 
+ 2022-11-23  Lulu Cheng  <chenglulu@loongson.cn>
+ 	    xujiahao  <xujiahao@loongson.cn>
+ 
+ 	* config/loongarch/constraints.md (ZD): New constraint.
+ 	* config/loongarch/loongarch-def.c: Initial number of parallel prefetch.
+ 	* config/loongarch/loongarch-tune.h (struct loongarch_cache):
+ 	Define number of parallel prefetch.
+ 	* config/loongarch/loongarch.cc (loongarch_option_override_internal):
+ 	Set up parameters to be used in prefetching algorithm.
+ 	* config/loongarch/loongarch.md (prefetch): New template.
+ 
+ 2022-11-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Revert:
+ 	2022-11-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
+ 	Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
+ 	ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
+ 	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
+ 	(--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
+ 	check.
+ 	* configure: Regenerate.
+ 	* doc/install.texi: Document --enable-host-pie.
+ 
+ 2022-11-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	Revert:
+ 	2022-11-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* configure.ac (--enable-host-bind-now): New check.  Add
+ 	-Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
+ 	* configure: Regenerate.
+ 	* doc/install.texi: Document --enable-host-bind-now.
+ 
+ 2022-11-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* configure.ac (--enable-host-bind-now): New check.  Add
+ 	-Wl,-z,now to LD_PICFLAG if --enable-host-bind-now.
+ 	* configure: Regenerate.
+ 	* doc/install.texi: Document --enable-host-bind-now.
+ 
+ 2022-11-23  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* Makefile.in: Set LD_PICFLAG.  Use it.  Set enable_host_pie.
+ 	Remove NO_PIE_CFLAGS and NO_PIE_FLAG.  Pass LD_PICFLAG to
+ 	ALL_LINKERFLAGS.  Use the "pic" build of libiberty if --enable-host-pie.
+ 	* configure.ac (--enable-host-shared): Don't set PICFLAG here.
+ 	(--enable-host-pie): New check.  Set PICFLAG and LD_PICFLAG after this
+ 	check.
+ 	* configure: Regenerate.
+ 	* doc/install.texi: Document --enable-host-pie.
+ 
+ 2022-11-22  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* tree-ssa-dom.cc (record_edge_info): Fix thinko in last commit.
+ 
+ 2022-11-22  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* tree-ssa-dom.cc (record_edge_info): Fix comment typos.
+ 
+ 2022-11-22  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_get_separate_components): Do not
+ 	do shrink-wrapping for a frame with a variable size.
+ 
+ 2022-11-22  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	* tree-object-size.cc (todo): New variable.
+ 	(object_sizes_execute): Use it.
+ 	(strdup_object_size): New function.
+ 	(call_object_size): Use it.
+ 
+ 2022-11-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-loop-distribution.cc (loop_distribution::classify_builtin_ldst):
+ 	Bail out if source and destination do not have the same storage order.
+ 
+ 2022-11-22  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-sra.cc (ipa_sra_dump_all_summaries): Dump edge summaries even
+ 	for non-candidates.
+ 
+ 2022-11-22  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-cp.cc (push_agg_values_from_edge): Do not consider constants
+ 	in unused aggregate parameters.
+ 
+ 2022-11-22  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-param-manipulation.h (ipa_param_body_adjustments): Removed
+ 	member m_split_modifications_p.
+ 	* ipa-param-manipulation.cc
+ 	(ipa_param_body_adjustments::common_initialization): Do not set
+ 	m_split_modifications_p.
+ 	(ipa_param_body_adjustments::ipa_param_body_adjustments): Remove
+ 	initializations of m_split_modifications_p.
+ 	(ipa_param_body_adjustments::modify_call_stmt): Check that
+ 	m_replacements is empty instead of m_split_modifications_p.
+ 
+ 2022-11-22  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/107661
+ 	* ipa-cp.cc (push_agg_values_from_edge): New parameter
+ 	optimize_self_recursion, use it to decide whether to pass interim to
+ 	the helper function.
+ 	(find_aggregate_values_for_callers_subset): Pass true in the new
+ 	parameter of push_agg_values_from_edge.
+ 	(cgraph_edge_brings_all_agg_vals_for_node): Pass false in the new
+ 	parameter of push_agg_values_from_edge.
+ 
+ 2022-11-22  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-builtins.def (FIRST_CALL_THIS_THREAD_P,
+ 	GET_STACK_LIMIT): Add new builtins.
+ 	* config/gcn/gcn.cc (gcn_expand_builtin_1): Expand them.
+ 	* config/gcn/gcn.md (prologue_use): Add "register_operand" as
+ 	arg to match_operand.
+ 	(prologue_use_di): New; DI insn_and_split variant of the former.
+ 
+ 2022-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107803
+ 	* tree-ssa-propagate.cc (substitute_and_fold_dom_walker): Add
+ 	need_ab_cleanup member.
+ 	(substitute_and_fold_dom_walker::before_dom_children): When
+ 	a stmt can no longer transfer control flow abnormally set
+ 	need_ab_cleanup.
+ 	(substitute_and_fold_engine::substitute_and_fold): Cleanup
+ 	abnormal control flow.
+ 
+ 2022-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107672
+ 	* tree-vect-stmts.cc (supportable_widening_operation): Avoid
+ 	type_for_mode on vector modes.
+ 
+ 2022-11-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107766
+ 	* tree-vect-slp-patterns.cc (complex_mul_pattern::matches):
+ 	Use *node to check for FP vector types.
+ 
+ 2022-11-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/mmx.md (*mov<mode>_internal): Add
+ 	ix86_hard_reg_move_ok to condition.
+ 
+ 2022-11-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386.cc (ix86_can_change_mode_class): Also guard
+ 	size of TO.
+ 	(ix86_hard_regno_mode_ok): Remove VALID_AVX512FP16_SCALAR_MODE
+ 	* config/i386/i386.h (VALID_AVX512FP16_SCALAR_MODE): Merged to
+ 	..
+ 	(VALID_AVX512F_SCALAR_MODE): .. this, also add HImode.
+ 	(VALID_SSE_REG_MODE): Add DI/HImode.
+ 
+ 2022-11-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rtems.h (SUBTARGET_CC1_SPEC): Undef and define.
+ 
+ 2022-11-21  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcc.cc (SUBTARGET_CC1_SPEC): Define if not defined.
+ 	(cc1_spec): Append SUBTARGET_CC1_SPEC.
+ 
+ 2022-11-21  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* doc/sourcebuild.texi (sockets): Document new check.
+ 
+ 2022-11-21  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* tree-ssa-loop.h (tree_niter_desc): Update comment.
+ 
+ 2022-11-21  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* tree-ssa-loop-niter.cc
+ 	(number_of_iterations_exit_assumptions): Modify to call...
+ 	(number_of_iterations_bitcount): ...this new function.
+ 	(number_of_iterations_popcount): Now called by the above.
+ 	Refactor, and extract popcount expression builder to...
+ 	(build_popcount_expr): this new function.
+ 
+ 2022-11-21  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* tree-ssa-loop-niter.cc (ssa_defined_by_minus_one_stmt_p): Move
+ 	(number_of_iterations_popcount): Move, and remove separate prototype.
+ 
+ 2022-11-21  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_exit_assumptions):
+ 	Move at_stmt assignment.
+ 
+ 2022-11-21  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* genmultilib: Fix options and dirnames/osdirnames sanity check.
+ 
+ 2022-11-21  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	PR target/107786
+ 	* config/riscv/riscv.md
+ 	(*branch<ANYI:mode>_shiftedarith_equals_zero): Wrap ANYI
+ 	in a subreg, as our branch instructions only supports X.
+ 
+ 2022-11-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107748
+ 	* config/i386/avx512fp16intrin.h (_mm512_castph512_ph128,
+ 	_mm512_castph512_ph256, _mm512_castph128_ph512,
+ 	_mm512_castph256_ph512, _mm512_set1_pch): Uglify names of local
+ 	variables and union members.
+ 	* config/i386/avx512fp16vlintrin.h (_mm256_castph256_ph128,
+ 	_mm256_castph128_ph256, _mm256_set1_pch, _mm_set1_pch): Likewise.
+ 	* config/i386/smmintrin.h (_mm_extract_ps): Likewise.
+ 
+ 2022-11-21  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* genmultilib: Add sanity check.
+ 
+ 2022-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/arm/arm.cc (arm_attribute_table) <cmse_nonsecure_call>:
+ 	Change decl_required field to false.
+ 	(arm_handle_cmse_nonsecure_call): Deal with a TYPE node.
+ 
+ 2022-11-21  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* gimplify.cc (gimplify_modify_expr): If
+ 	either *from_p or *to_p were error_operand
+ 	return early.
+ 
+ 2022-11-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-builtins.cc (def_builtin): Handle "shared"
+ 	avx512bf16vl-avxneconvert builtins.
+ 
+ 2022-11-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107183
+ 	* reg-stack.cc (next_flags_user): Add DEBUG_SEEN argument.
+ 	If >= 0 and a DEBUG_INSN would be otherwise returned, set
+ 	DEBUG_SEEN to 1 and ignore it.
+ 	(swap_rtx_condition): Add DEBUG_SEEN argument.  In >= 0
+ 	mode only set DEBUG_SEEN to 1 if problematic DEBUG_ISNSs
+ 	were seen and revert all changes on success in that case.
+ 	Don't try to recog_memoized DEBUG_INSNs.
+ 	(compare_for_stack_reg): Adjust swap_rtx_condition caller.
+ 	If it returns true and debug_seen is 1, call swap_rtx_condition
+ 	again with debug_seen -1.
+ 
+ 2022-11-20  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	PR other/104044
+ 	* config/mn10300/mn10300.cc (mn10300_print_operand): Remove
+ 	extraneous semicolon.
+ 	* config/nvptx/nvptx.cc (nvptx_goacc_reduction_fini): Likewise.
+ 
+ 2022-11-19  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR middle-end/14840
+ 	* tree-core.h (tree_code_type): Constexprify
+ 	by including all-tree.def.
+ 	(tree_code_length): Likewise.
+ 	* tree.cc (tree_code_type): Remove.
+ 	(tree_code_length): Remove.
+ 
+ 2022-11-19  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.h (STARTFILE_SPEC): Fix 'crt0.o' for
+ 	'-mmainkernel'.
+ 
+ 2022-11-19  Jonathan Wakely  <jwakely@redhat.com>
+ 	    LIU Hao  <lh_mouse@126.com>
+ 
+ 	* system.h [INCLUDE_MUTEX]: Include header for std::mutex.
+ 
+ 2022-11-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107628
+ 	* config/i386/i386-protos.h (ix86_expand_fast_convert_bf_to_sf):
+ 	Declare.
+ 	* config/i386/i386-expand.cc (ix86_expand_fast_convert_bf_to_sf): New
+ 	function.
+ 	* config/i386/i386.md (cbranchbf4, cstorebf4): Use it.
+ 
+ 2022-11-19  Jeff Chapman II  <jchapman@lock3software.com>
+ 	    Andrew Sutton   <asutton@lock3software.com>
+ 	    Andrew Marmaduke  <amarmaduke@lock3software.com>
+ 	    Michael Lopez  <mlopez@lock3software.com>
+ 	    Jason Merrill   <jason@redhat.com>
+ 
+ 	* doc/invoke.texi: Document contracts flags.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md (*minmax): Additional pattern for
+ 	min/max against constants that are extension-invariant.
+ 	* config/riscv/iterators.md (minmax_optab): Add an iterator
+ 	that has only min and max rtl.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md
+ 	(*branch<X:mode>_mask_twobits_equals_singlebit):
+ 	Handle "if ((a & T) == C)" using Zbs, when T has 2 bits set and C
+ 	has one	of these tow bits set.
+ 	* config/riscv/predicates.md (const_twobits_not_arith_operand):
+ 	New predicate.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md (*<or_optab>i<mode>_extrabit):
+ 	New pattern for binvi+binvi/xori and bseti+bseti/ori
+ 	(*andi<mode>_extrabit): New pattern for bclri+bclri/andi
+ 	* config/riscv/iterators.md (any_or): Match or and ior
+ 	* config/riscv/predicates.md (const_twobits_operand):
+ 	New predicate.
+ 	(uimm_extra_bit_operand): New predicate.
+ 	(uimm_extra_bit_or_twobits): New predicate.
+ 	(not_uimm_extra_bit_operand): New predicate.
+ 	(not_uimm_extra_bit_or_nottwobits): New predicate.
+ 	* config/riscv/riscv.h (UIMM_EXTRA_BIT_OPERAND):
+ 	Helper for the uimm_extra_bit_operand and
+ 	not_uimm_extra_bit_operand predicates.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md: Handle corner-cases for combine
+ 	when chaining slli(.uw)? + addw
+ 	* config/riscv/riscv-protos.h (riscv_shamt_matches_mask_p):
+ 	Define prototype.
+ 	* config/riscv/riscv.cc (riscv_shamt_matches_mask_p):
+ 	Helper for evaluating the relationship between two operands.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md: Add a define_split to optimize
+ 	slliw + addiw + divw into sh[123]add + divw.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/predicates.md (shifted_const_arith_operand): New predicate.
+ 	(uimm_extra_bit_operand): New predicate.
+ 	* config/riscv/riscv.md (*branch<ANYI:mode>_shiftedarith_equals_zero):
+ 	New pattern.
+ 	(*branch<ANYI:mode>_shiftedmask_equals_zero): New pattern.
+ 
+ 2022-11-18  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md (*bsetidisi): New pattern.
+ 
+ 2022-11-18  Richard Purdie  <richard.purdie@linuxfoundation.org>
+ 
+ 	* doc/invoke.texi: Document prefix-maps don't affect directives.
+ 
+ 2022-11-18  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR middle-end/107705
+ 	* function.cc (aggregate_value_p): Return 0 if
+ 	the function type was an error operand.
+ 
+ 2022-11-18  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR c/106764
+ 	PR c/106765
+ 	PR c/107307
+ 	* gimplify.cc (gimplify_compound_lval): Return GS_ERROR
+ 	if gimplify_expr had return GS_ERROR.
+ 	(gimplify_call_expr): Likewise.
+ 
+ 2022-11-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/atomics.md (*aarch64_atomic_load<ALLX:mode>_rcpc_sext):
+ 	Use <GPI:w>  for destination format.
+ 	* config/aarch64/iterators.md (w_sz): Delete.
+ 
+ 2022-11-18  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (TARGET_RCPC2): Define.
+ 	* config/aarch64/atomics.md (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
+ 	Adjust output template.
+ 	(*aarch64_atomic_load<ALLX:mode>_rcpc_sex): Guard on TARGET_RCPC2.
+ 	Adjust output template.
+ 	* config/aarch64/iterators.md (w_sz): New mode attr.
+ 
+ 2022-11-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107647
+ 	* tree-vect-slp-patterns.cc (addsub_pattern::recognize): Only
+ 	allow FMA generation with -ffp-contract=fast for FP types.
+ 	(complex_mul_pattern::matches): Likewise.
+ 
+ 2022-11-18  Jinyang He  <hejinyang@loongson.cn>
+ 
+ 	PR target/107713
+ 	* config/loongarch/sync.md
+ 	(atomic_cas_value_exchange_7_<mode>): New define_insn.
+ 	(atomic_exchange): Use atomic_cas_value_exchange_7_si instead of
+ 	atomic_cas_value_cmp_and_7_si.
+ 
+ 2022-11-17  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR middle-end/107734
+ 	* match.pd (perm + vector op pattern): Clear the sbitmap before
+ 	use.
+ 
+ 2022-11-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107732
+ 	* range-op-float.cc (foperator_abs::op1_range): Early exit when
+ 	result is undefined.
+ 
+ 2022-11-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md (*bclri<mode>_nottwobits): New pattern.
+ 	(*bclridisi_nottwobits): New pattern, handling the sign-bit.
+ 	* config/riscv/predicates.md (const_nottwobits_operand):
+ 	New predicate.
+ 
+ 2022-11-17  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md: Add a splitter to generate
+ 	polarity-reversed masks from a set bit using bexti + addi.
+ 
+ 2022-11-17  mtsamis  <manolis.tsamis@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (struct machine_function): Add array to store
+ 	register wrapping information.
+ 	(riscv_for_each_saved_reg): Skip registers that are wrapped separetely.
+ 	(riscv_get_separate_components): New function.
+ 	(riscv_components_for_bb): Likewise.
+ 	(riscv_disqualify_components): Likewise.
+ 	(riscv_process_components): Likewise.
+ 	(riscv_emit_prologue_components): Likewise.
+ 	(riscv_emit_epilogue_components): Likewise.
+ 	(riscv_set_handled_components): Likewise.
+ 	(TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS): Define.
+ 	(TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB): Likewise.
+ 	(TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS): Likewise.
+ 	(TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS): Likewise.
+ 	(TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS): Likewise.
+ 	(TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS): Likewise.
+ 
+ 2022-11-17  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/atomics.md (*aarch64_atomic_load<ALLX:mode>_rcpc_zext):
+ 	Add mode size check to condition.
+ 	(*aarch64_atomic_load<ALLX:mode>_rcpc_sext): Likewise.
+ 
+ 2022-11-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/68097
+ 	* gimple-fold.cc (gimple_stmt_nonnegative_warnv_p): Call
+ 	range_of_stmt for floats.
+ 
+ 2022-11-17  Lili Cui  <lili.cui@intel.com>
+ 
+ 	* config/i386/x86-tune.def
+ 	(X86_TUNE_AVX256_MOVE_BY_PIECES): Add alderlake.
+ 	(X86_TUNE_AVX256_STORE_BY_PIECES): Ditto.
+ 
+ 2022-11-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/107717
+ 	* match.pd: Ensure same SSA_NAME.
+ 
+ 2022-11-17  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* match.pd: Replace GET_MODE_WIDER_MODE with
+ 	custom code.
+ 
+ 2022-11-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (range_operator_float::fold_range): Make check
+ 	for maybe_isnan more readable.
+ 
+ 2022-11-17  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* gimple-fold.cc (gimple_fold_partial_load_store_mem_ref): Use
+ 	tree_fits_shwi_p rather than tree_fits_uhwi_p as bias is signed.
+ 
+ 2022-11-17  Jia-Wei Chen  <jiawei@iscas.ac.cn>
+ 
+ 	* config/riscv/riscv.cc (riscv_expand_epilogue):
+ 	Do not emit useless add sp, sp, 0 instrutions.
+ 
+ 2022-11-17  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/sh/sh_treg_combine.cc: Include tm-preds.h.
+ 	(t_reg_operand): Remove bogus prototype.
+ 	(negt_reg_operand): Likewise.
+ 
+ 2022-11-16  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/106649
+ 	* doc/invoke.texi: Document -Winvalid-constexpr.
+ 
+ 2022-11-16  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md: Add split covering
+ 	"(a & (1 << BIT_NO)) ? 0 : 1".
+ 
+ 2022-11-16  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md (*bext<mode>): Add an additional
+ 	pattern that allows the 3rd argument to zero_extract to be
+ 	an Xmode register operand.
+ 
+ 2022-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107686
+ 	* tree-ssa-forwprop.cc (optimize_vector_load): Restrict
+ 	VEC_UNPACK support to integral typed bitfield refs.
+ 
+ 2022-11-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/107679
+ 	* tree-into-ssa.cc (maybe_register_def): Use new temporary if
+ 	we require an uninitialized value for a parameter decl.
+ 
+ 2022-11-16  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR target/107676
+ 	* doc/invoke.texi (-mrelax-cmpxchg-loop): Reword description.
+ 
+ 2022-11-16  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR target/87832
+ 	* config/i386/znver.md: (znver1_fp_op_mul): Correct cycles in
+ 	the reservation.
+ 	(znver1_fp_op_mul_load): Ditto.
+ 	(znver1_mmx_mul): Ditto.
+ 	(znver1_mmx_load): Ditto.
+ 	(znver1_ssemul_ss_ps): Ditto.
+ 	(znver1_ssemul_ss_ps_load): Ditto.
+ 	(znver1_ssemul_avx256_ps): Ditto.
+ 	(znver1_ssemul_avx256_ps_load): Ditto.
+ 	(znver1_ssemul_sd_pd): Ditto.
+ 	(znver1_ssemul_sd_pd_load): Ditto.
+ 	(znver2_ssemul_sd_pd): Ditto.
+ 	(znver2_ssemul_sd_pd_load): Ditto.
+ 	(znver1_ssemul_avx256_pd): Ditto.
+ 	(znver1_ssemul_avx256_pd_load): Ditto.
+ 	(znver1_sseimul): Ditto.
+ 	(znver1_sseimul_avx256): Ditto.
+ 	(znver1_sseimul_load): Ditto.
+ 	(znver1_sseimul_avx256_load): Ditto.
+ 	(znver1_sseimul_di): Ditto.
+ 	(znver1_sseimul_load_di): Ditto.
+ 
+ 2022-11-16  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR target/87832
+ 	* config/i386/znver.md (znver1_fdiv): New automaton.
+ 	(znver1-fdiv): New unit.
+ 	(znver1_fp_op_div): Correct unit and cycles in the reservation.
+ 	(znver1_fp_op_div_load): Ditto.
+ 	(znver1_fp_op_idiv_load): Ditto.
+ 	(znver2_fp_op_idiv_load): Ditto.
+ 	(znver1_ssediv_ss_ps): Ditto.
+ 	(znver1_ssediv_ss_ps_load): Ditto.
+ 	(znver1_ssediv_sd_pd): Ditto.
+ 	(znver1_ssediv_sd_pd_load): Ditto.
+ 	(znver1_ssediv_avx256_ps): Ditto.
+ 	(znver1_ssediv_avx256_ps_load): Ditto.
+ 	(znver1_ssediv_avx256_pd): Ditto.
+ 	(znver1_ssediv_avx256_pd_load): Ditto.
+ 
+ 2022-11-16  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-builtins.def (KERNARG_PTR): Add.
+ 	* config/gcn/gcn.cc (gcn_init_builtin_types): Change siptr_type_node,
+ 	sfptr_type_node and voidptr_type_node from FLAT to ADDR_SPACE_DEFAULT.
+ 	(gcn_expand_builtin_1): Handle GCN_BUILTIN_KERNARG_PTR.
+ 	(gcn_oacc_dim_size): Return in ADDR_SPACE_FLAT.
+ 
+ 2022-11-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/checker-event.o.
+ 
+ 2022-11-16  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	PR target/107645
+ 	* config/m68k/predicates.md (symbolic_operand): Return false
+ 	when UNSPEC is under the CONST node.
+ 
+ 2022-11-16  Christoph Müllner  <christoph.muellner@vrull.eu>
+ 
+ 	* doc/invoke.texi: Fix PRU/RISC-V option list formatting.
+ 
+ 2022-11-16  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/nvptx/mkoffload.cc (process): Recognize '$nohost$...'
+ 	besides tailing '$nohost' as being for reverse offload.
+ 
+ 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107668
+ 	* range-op-float.cc (float_binary_op_range_finish): Set VARYING
+ 	also when r is UNDEFINED.
+ 
+ 2022-11-16  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR rtl-optimization/90259
+ 	* function.cc (rest_of_handle_thread_prologue_and_epilogue): Add
+ 	parameter fun, and call function purge_all_dead_edges.
+ 	(pass_thread_prologue_and_epilogue::execute): Name unamed parameter
+ 	as fun, and use it for rest_of_handle_thread_prologue_and_epilogue.
+ 
+ 2022-11-15  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv-builtins.cc (struct riscv_builtin_description):
+ 	add the pause machine-dependent builtin with no result and no
+ 	arguments; mark it as always present (pause is a true hint
+ 	that encodes into a fence-insn, if not supported with the new
+ 	pause semantics).
+ 	* config/riscv/riscv-ftypes.def: Add type for void -> void.
+ 	* config/riscv/riscv.md (riscv_pause): Add risc_pause and
+ 	UNSPECV_PAUSE
+ 	* doc/extend.texi: Document __builtin_riscv_pause.
+ 	* optabs.cc (maybe_gen_insn): Allow nops == 0 (void -> void).
+ 
+ 2022-11-15  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.cc (bpf_expand_builtin): Avoid use of uninitialized
+ 	variable in error case.
+ 
+ 2022-11-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106140
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-Wanalyzer-fd-phase-mismatch and -Wanalyzer-fd-type-mismatch.  Add
+ 	"socket", "bind", "listen", "accept", and "connect" to the list of
+ 	functions known to the analyzer.
+ 
+ 2022-11-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106302
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/analyzer-language.o.
+ 	(GTFILES): Add analyzer/analyzer-language.cc.
+ 	* doc/analyzer.texi: Document __analyzer_dump_named_constant.
+ 
+ 2022-11-15  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* json.h (class string): Add M_LEN member to store the length of
+ 	the data.  Add constructor taking an explicit length.
+ 	* json.cc (string::string):  Implement the new constructor.
+ 	(string::print): Support printing strings that are not
+ 	null-terminated.  Escape embdedded null bytes on output.
+ 	(test_writing_strings): Test the new null-byte-related features of
+ 	json::string.
+ 
+ 2022-11-15  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* diagnostic.cc (diagnostic_get_location_text): Use
+ 	special_fname_builtin () rather than a hardcoded string (which was
+ 	also incorrectly left untranslated previously.)
+ 	* input.cc (special_fname_builtin): New function.
+ 	(expand_location_1): Use special_fname_builtin () rather than a
+ 	hard-coded string.
+ 	(test_builtins): Likewise.
+ 	* input.h (special_fname_builtin): Declare.
+ 
+ 2022-11-15  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* tree-diagnostic.cc (maybe_unwind_expanded_macro_loc): Handle ad-hoc
+ 	location in return value of linemap_resolve_location().
+ 
+ 2022-11-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/cpp.texi (Pragmas): Use @item and @itemx for region
+ 	pragmas.
+ 
+ 2022-11-15  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* ira-color.cc (assign_hard_reg): Remove duplicate `memset' over
+ 	`full_costs'.
+ 
+ 2022-11-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/atomics.md
+ 	(*aarch64_atomic_load<ALLX:mode>_rcpc_zext): New pattern.
+ 	(*aarch64_atomic_load<ALLX:mode>_rcpc_sext): New pattern.
+ 
+ 2022-11-15  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 	    Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_ISA_RCPC): New Macro.
+ 	(TARGET_RCPC): New Macro.
+ 	* config/aarch64/atomics.md (atomic_load<mode>): Change into an expand.
+ 	(aarch64_atomic_load<mode>_rcpc): New define_insn for ldapr.
+ 	(aarch64_atomic_load<mode>): Rename of old define_insn for ldar.
+ 	* config/aarch64/iterators.md (UNSPEC_LDAP): New unspec enum value.
+ 	* doc/invoke.texi (rcpc): Ammend documentation to mention the effects
+ 	on code generation.
+ 
+ 2022-11-15  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/98167
+ 	* match.pd: New perm + vector op patterns for int and fp vector.
+ 
+ 2022-11-15  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/invoke.texi: Remove Score option section.
+ 
+ 2022-11-15  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/extend.texi: Remove picoChip builtin section.
+ 	* doc/invoke.texi: Remove picoChip option section.
+ 
+ 2022-11-15  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/extend.texi: Remove MeP documentation.
+ 	* doc/invoke.texi: Remove MeP Options documentation.
+ 
+ 2022-11-15  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/invoke.texi: Fix opindex for mcall-aixdesc and mcall-openbsd.
+ 
+ 2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	Revert:
+ 	2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv-cores.def (RISCV_TUNE): Add ventana-vt1.
+ 	(RISCV_CORE): Ditto.
+ 	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Ditto.
+ 	* config/riscv/riscv.cc: Add tune_info for ventana-vt1.
+ 	* doc/invoke.texi: Document -mcpu= and -mtune with ventana-vt1.
+ 
+ 2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	Revert:
+ 	2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (enum riscv_fusion_pairs): Add symbolic
+ 	constants to identify supported fusion patterns.
+ 	(struct riscv_tune_param): Add fusible_op field.
+ 	(riscv_macro_fusion_p): Implement.
+ 	(riscv_fusion_enabled_p): Implement.
+ 	(riscv_macro_fusion_pair_p): Implement and recognize fusible
+ 	idioms for Ventana VT1.
+ 	(TARGET_SCHED_MACRO_FUSION_P): Point to riscv_macro_fusion_p.
+ 	(TARGET_SCHED_MACRO_FUSION_PAIR_P): Point to
+ 	riscv_macro_fusion_pair_p.
+ 
+ 2022-11-14  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* ira-build.cc (create_insn_allocnos): Fix documentation.
+ 
+ 2022-11-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* match.pd: Remove returns.
+ 
+ 2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md (orcb<mode>2): Add orc.b as an
+ 	unspec.
+ 	* config/riscv/riscv.md: Add UNSPEC_ORC_B.
+ 
+ 2022-11-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* target.def: Fix typo.
+ 
+ 2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (enum riscv_fusion_pairs): Add symbolic
+ 	constants to identify supported fusion patterns.
+ 	(struct riscv_tune_param): Add fusible_op field.
+ 	(riscv_macro_fusion_p): Implement.
+ 	(riscv_fusion_enabled_p): Implement.
+ 	(riscv_macro_fusion_pair_p): Implement and recognize fusible
+ 	idioms for Ventana VT1.
+ 	(TARGET_SCHED_MACRO_FUSION_P): Point to riscv_macro_fusion_p.
+ 	(TARGET_SCHED_MACRO_FUSION_PAIR_P): Point to
+ 	riscv_macro_fusion_pair_p.
+ 
+ 2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv-cores.def (RISCV_TUNE): Add ventana-vt1.
+ 	(RISCV_CORE): Ditto.
+ 	* config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Ditto.
+ 	* config/riscv/riscv.cc: Add tune_info for ventana-vt1.
+ 	* doc/invoke.texi: Document -mcpu= and -mtune with ventana-vt1.
+ 
+ 2022-11-14  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (cssc): Define.
+ 	* config/aarch64/aarch64.h (AARCH64_ISA_CSSC): Define.
+ 	(TARGET_CSSC): Likewise.
+ 	* config/aarch64/aarch64.md (*aarch64_abs<mode>2_cssc_ins): New define_insn.
+ 	(abs<mode>2): Adjust for the above.
+ 	(aarch64_umax<mode>3_insn): New define_insn.
+ 	(umax<mode>3): Adjust for the above.
+ 	(*aarch64_popcount<mode>2_cssc_insn): New define_insn.
+ 	(popcount<mode>2): Adjust for the above.
+ 	(<optab><mode>3): New define_insn.
+ 	* config/aarch64/constraints.md (Usm): Define.
+ 	(Uum): Likewise.
+ 	* doc/invoke.texi (AArch64 options): Document +cssc.
+ 	* config/aarch64/iterators.md (MAXMIN_NOUMAX): New code iterator.
+ 	* config/aarch64/predicates.md (aarch64_sminmax_immediate): Define.
+ 	(aarch64_sminmax_operand): Likewise.
+ 	(aarch64_uminmax_immediate): Likewise.
+ 	(aarch64_uminmax_operand): Likewise.
+ 
+ 2022-11-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve2.md (@aarch64_bitmask_udiv<mode>3): New.
+ 
+ 2022-11-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (@aarch64_bitmask_udiv<mode>3): New.
+ 	* config/aarch64/aarch64.cc (aarch64_vectorize_can_special_div_by_constant): New.
+ 
+ 2022-11-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* expmed.h (expand_divmod): Pass tree operands down in addition to RTX.
+ 	* expmed.cc (expand_divmod): Likewise.
+ 	* explow.cc (round_push, align_dynamic_address): Likewise.
+ 	* expr.cc (force_operand, expand_expr_divmod): Likewise.
+ 	* optabs.cc (expand_doubleword_mod, expand_doubleword_divmod):
+ 	Likewise.
+ 	* target.h: Include tree-core.
+ 	* target.def (can_special_div_by_const): New.
+ 	* targhooks.cc (default_can_special_div_by_const): New.
+ 	* targhooks.h (default_can_special_div_by_const): New.
+ 	* tree-vect-generic.cc (expand_vector_operation): Use it.
+ 	* doc/tm.texi.in: Document it.
+ 	* doc/tm.texi: Regenerate.
+ 	* tree-vect-patterns.cc (vect_recog_divmod_pattern): Check for support.
+ 	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
+ 
+ 2022-11-14  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* generic-match-head.cc: Include langooks.
+ 	* gimple-match-head.cc: Likewise.
+ 	* match.pd: Add fneg/fadd rule.
+ 
+ 2022-11-14  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (cortex-x1c): Define new CPU.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Likewise.
+ 	* doc/invoke.texi: Document Cortex-X1C CPU.
+ 
+ 2022-11-14  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-X3
+ 	CPU.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/invoke.texi: Document Cortex-X3 CPU.
+ 
+ 2022-11-14  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/invoke.texi: Fix @opindex
+ 	for m80387 option.
+ 
+ 2022-11-14  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/invoke.texi: Remove the front - from
+ 	some @opindex.
+ 
+ 2022-11-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add ampere1a.
+ 	* config/aarch64/aarch64-cost-tables.h: Add ampere1a_extra_costs.
+ 	* config/aarch64/aarch64-fusion-pairs.def (AARCH64_FUSION_PAIR):
+ 	Define a new fusion pair for A+B+1/A-B-1 (i.e., add/subtract two
+ 	registers and then +1/-1).
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* config/aarch64/aarch64.cc (aarch_macro_fusion_pair_p): Implement
+ 	idiom-matcher for the new fusion pair.
+ 	* doc/invoke.texi: Add ampere1a.
+ 
+ 2022-11-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd: Remove duplicates.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/contrib.texi: Port from Sphinx.
+ 	* doc/cpp.texi: Likewise.
+ 	* doc/install.texi: Likewise.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/character-sets.rst: New file.
+ 	* doc/cpp/conditional-syntax.rst: New file.
+ 	* doc/cpp/conditional-uses.rst: New file.
+ 	* doc/cpp/conditionals.rst: New file.
+ 	* doc/cpp/conf.py: New file.
+ 	* doc/cpp/copyright.rst: New file.
+ 	* doc/cpp/deleted-code.rst: New file.
+ 	* doc/cpp/diagnostics.rst: New file.
+ 	* doc/cpp/environment-variables.rst: New file.
+ 	* doc/cpp/gnu-free-documentation-license.rst: New file.
+ 	* doc/cpp/header-files.rst: New file.
+ 	* doc/cpp/header-files/alternatives-to-wrapper-ifndef.rst: New file.
+ 	* doc/cpp/header-files/computed-includes.rst: New file.
+ 	* doc/cpp/header-files/include-operation.rst: New file.
+ 	* doc/cpp/header-files/include-syntax.rst: New file.
+ 	* doc/cpp/header-files/once-only-headers.rst: New file.
+ 	* doc/cpp/header-files/search-path.rst: New file.
+ 	* doc/cpp/header-files/system-headers.rst: New file.
+ 	* doc/cpp/header-files/wrapper-headers.rst: New file.
+ 	* doc/cpp/implementation-defined-behavior.rst: New file.
+ 	* doc/cpp/implementation-details.rst: New file.
+ 	* doc/cpp/implementation-limits.rst: New file.
+ 	* doc/cpp/index.rst: New file.
+ 	* doc/cpp/indices-and-tables.rst: New file.
+ 	* doc/cpp/initial-processing.rst: New file.
+ 	* doc/cpp/invocation.rst: New file.
+ 	* doc/cpp/line-control.rst: New file.
+ 	* doc/cpp/macros.rst: New file.
+ 	* doc/cpp/macros/concatenation.rst: New file.
+ 	* doc/cpp/macros/directives-within-macro-arguments.rst: New file.
+ 	* doc/cpp/macros/function-like-macros.rst: New file.
+ 	* doc/cpp/macros/macro-arguments.rst: New file.
+ 	* doc/cpp/macros/macro-pitfalls.rst: New file.
+ 	* doc/cpp/macros/object-like-macros.rst: New file.
+ 	* doc/cpp/macros/predefined-macros.rst: New file.
+ 	* doc/cpp/macros/stringizing.rst: New file.
+ 	* doc/cpp/macros/undefining-and-redefining-macros.rst: New file.
+ 	* doc/cpp/macros/variadic-macros.rst: New file.
+ 	* doc/cpp/obsolete-features.rst: New file.
+ 	* doc/cpp/other-directives.rst: New file.
+ 	* doc/cpp/overview.rst: New file.
+ 	* doc/cpp/pragmas.rst: New file.
+ 	* doc/cpp/preprocessor-output.rst: New file.
+ 	* doc/cpp/the-preprocessing-language.rst: New file.
+ 	* doc/cpp/tokenization.rst: New file.
+ 	* doc/cpp/traditional-lexical-analysis.rst: New file.
+ 	* doc/cpp/traditional-macros.rst: New file.
+ 	* doc/cpp/traditional-miscellany.rst: New file.
+ 	* doc/cpp/traditional-mode.rst: New file.
+ 	* doc/cpp/traditional-warnings.rst: New file.
+ 	* doc/cppinternals/conf.py: New file.
+ 	* doc/cppinternals/copyright.rst: New file.
+ 	* doc/cppinternals/cppinternals.rst: New file.
+ 	* doc/cppinternals/cpplib.rst: New file.
+ 	* doc/cppinternals/files.rst: New file.
+ 	* doc/cppinternals/index.rst: New file.
+ 	* doc/cppinternals/indices-and-tables.rst: New file.
+ 	* doc/cppinternals/internal-representation-of-macros.rst: New file.
+ 	* doc/cppinternals/just-which-line-number-anyway.rst: New file.
+ 	* doc/cppinternals/lexing-a-line.rst: New file.
+ 	* doc/cppinternals/lexing-a-token.rst: New file.
+ 	* doc/cppinternals/looking-for-a-function-like-macros-opening-parenthesis.rst: New file.
+ 	* doc/cppinternals/macro-expansion-overview.rst: New file.
+ 	* doc/cppinternals/marking-tokens-ineligible-for-future-expansion.rst: New file.
+ 	* doc/cppinternals/multiple-include-optimization.rst: New file.
+ 	* doc/cppinternals/overview.rst: New file.
+ 	* doc/cppinternals/representation-of-line-numbers.rst: New file.
+ 	* doc/cppinternals/scanning-the-replacement-list-for-macros-to-expand.rst: New file.
+ 	* doc/gcc/binary-compatibility.rst: New file.
+ 	* doc/gcc/c++-implementation-defined-behavior.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/architecture.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/arrays-and-pointers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/characters.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/declarators.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/environment.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/floating-point.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/hints.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/identifiers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/integers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/library-functions.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/locale-specific-behavior.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/preprocessing-directives.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/qualifiers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/statements.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst:
+ 	New file.
+ 	* doc/gcc/c-implementation-defined-behavior/translation.rst: New file.
+ 	* doc/gcc/conditionally-supported-behavior.rst: New file.
+ 	* doc/gcc/conf.py: New file.
+ 	* doc/gcc/contributing-to-gcc-development.rst: New file.
+ 	* doc/gcc/contributors-to-gcc.rst: New file.
+ 	* doc/gcc/copyright.rst: New file.
+ 	* doc/gcc/exception-handling.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/backwards-compatibility.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-concepts.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/deprecated-features.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/function-multiversioning.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/restricting-pointer-aliasing.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/type-traits.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/vague-linkage.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/wheres-the-template.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/128-bit-integers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/additional-floating-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/alternate-keywords.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/an-inline-function-is-as-fast-as-a-macro.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/arithmetic-on-void-and-function-pointers.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-length-zero.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-variable-length.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/attribute-syntax.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/binary-constants-using-the-0b-prefix.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-for-memory-model-aware-atomic-operations.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-to-perform-arithmetic-with-overflow-checking.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/c++-style-comments.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/case-ranges.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/cast-to-a-union-type.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/complex-numbers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/compound-literals.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/conditionals-with-omitted-operands.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/constructing-function-calls.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/decimal-floating-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/aarch64-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/amd-gcn-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arc-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arm-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/avr-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/blackfin-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/bpf-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/c-sky-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/common-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/epiphany-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/h8-300-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/ia-64-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32c-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32r-d-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m68k-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mcore-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mep-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microblaze-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microsoft-windows-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mips-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/msp430-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nds32-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nios-ii-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nvidia-ptx-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/powerpc-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/risc-v-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rl78-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rx-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/s-390-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/sh-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/symbian-os-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/v850-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/visium-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/x86-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/xstormy16-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/designated-initializers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/determining-the-alignment-of-functions-types-or-variables.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/dollar-signs-in-identifier-names.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/double-word-integers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/enumerator-attributes.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/fixed-point-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/format-checks-specific-to-particular-target-machines.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/function-names-as-strings.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/getting-the-return-or-frame-address-of-a-function.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/half-precision-floating-point.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/hex-floats.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/how-to-use-inline-assembly-language-in-c-code.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/incomplete-enum-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/label-attributes.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/labels-as-values.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/legacy-sync-built-in-functions-for-atomic-memory-access.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/locally-declared-labels.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/macros-with-a-variable-number-of-arguments.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/mixed-declarations-labels-and-code.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/named-address-spaces.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/nested-functions.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-constant-initializers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-lvalue-arrays-may-have-subscripts.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/nonlocal-gotos.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/object-size-checking-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/other-built-in-functions-provided-by-gcc.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointer-arguments-in-variadic-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointers-to-arrays-with-qualifiers-work-as-expected.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/pragmas-accepted-by-gcc.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/prototypes-and-old-style-function-definitions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/referring-to-a-type-with-typeof.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/slightly-looser-rules-for-escaped-newlines.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-variables.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/statement-attributes.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/statements-and-declarations-in-expressions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/structures-with-no-members.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/support-for-offsetof.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/aarch64-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/alpha-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/altera-nios-ii-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-simd-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-armv8-m-security-extensions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-c-language-extensions-acle.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-floating-point-status-and-control-intrinsics.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-iwmmxt-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/avr-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/basic-powerpc-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/blackfin-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/bpf-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/fr-v-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-dsp-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-loongson-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-paired-single-support.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-simd-architecture-msa-support.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/msp430-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/nds32-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/other-mips-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/picochip-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-altivec-vsx-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-atomic-memory-operation-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-hardware-transactional-memory-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-matrix-multiply-assist-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/pru-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/risc-v-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/rx-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/s-390-system-z-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sh-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sparc-vis-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/ti-c6x-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-control-flow-protection-intrinsics.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-transactional-memory-intrinsics.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/the-character-esc-in-constants.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/thread-local-storage.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/unnamed-structure-and-union-fields.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/using-vector-instructions-through-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/when-is-a-volatile-object-accessed.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/x86-specific-memory-model-extensions-for-transactional-memory.rst:
+ 	New file.
+ 	* doc/gcc/funding.rst: New file.
+ 	* doc/gcc/gcc-command-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/c++-modules.rst: New file.
+ 	* doc/gcc/gcc-command-options/compiling-c++-programs.rst: New file.
+ 	* doc/gcc/gcc-command-options/description.rst: New file.
+ 	* doc/gcc/gcc-command-options/environment-variables-affecting-gcc.rst: New file.
+ 	* doc/gcc/gcc-command-options/gcc-developer-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/adapteva-epiphany-options.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/amd-gcn-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arm-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-mmcu.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/blackfin-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c-sky-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c6x-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/cris-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/darwin-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/dec-alpha-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ebpf-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/fr30-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/frv-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ft32-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/gnu-linux-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/h8-300-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/hppa-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ia-64-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ibm-rs-6000-and-powerpc-options.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/lm32-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/loongarch-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32c-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32r-d-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m680x0-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mcore-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mep-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/microblaze-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mips-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mmix-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mn10300-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/moxie-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/msp430-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nds32-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nios-ii-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nvidia-ptx-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/openrisc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/options-for-system-v.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pdp-11-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/picochip-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/powerpc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pru-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/risc-v-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rl78-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rx-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/s-390-and-zseries-options.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/score-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sh-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/solaris-2-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sparc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/v850-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vax-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/visium-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vms-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vxworks-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-windows-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xstormy16-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xtensa-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/zseries-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/option-summary.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-c-dialect.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-objective-c-and-objective-c++-dialects.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-preprocessor.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-code-generation-conventions.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-debugging-your-program.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-directory-search.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-linking.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-that-control-optimization.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst: New file.
+ 	* doc/gcc/gcc-command-options/passing-options-to-the-assembler.rst: New file.
+ 	* doc/gcc/gcc-command-options/program-instrumentation-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/specifying-subprocesses-and-the-switches-to-pass-to-them.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/using-precompiled-headers.rst: New file.
+ 	* doc/gcc/gcc.rst: New file.
+ 	* doc/gcc/gcov-dump.rst: New file.
+ 	* doc/gcc/gcov-tool.rst: New file.
+ 	* doc/gcc/gcov.rst: New file.
+ 	* doc/gcc/gcov/brief-description-of-gcov-data-files.rst: New file.
+ 	* doc/gcc/gcov/data-file-relocation-to-support-cross-profiling.rst: New file.
+ 	* doc/gcc/gcov/introduction-to-gcov.rst: New file.
+ 	* doc/gcc/gcov/invoking-gcov.rst: New file.
+ 	* doc/gcc/gcov/profiling-and-test-coverage-in-freestanding-environments.rst: New file.
+ 	* doc/gcc/gcov/using-gcov-with-gcc-optimization.rst: New file.
+ 	* doc/gcc/general-public-license-3.rst: New file.
+ 	* doc/gcc/gnu-free-documentation-license.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/compatibilityalias.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/constant-string-objects.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/exceptions.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/fast-enumeration.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/garbage-collection.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/gnu-objective-c-runtime-api.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/load-executing-code-before-main.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/synchronization.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/type-encoding.rst: New file.
+ 	* doc/gcc/gnu.rst: New file.
+ 	* doc/gcc/have-you-found-a-bug.rst: New file.
+ 	* doc/gcc/how-and-where-to-report-bugs.rst: New file.
+ 	* doc/gcc/how-to-get-help-with-gcc.rst: New file.
+ 	* doc/gcc/index.rst: New file.
+ 	* doc/gcc/indices-and-tables.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst:
+ 	New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst:
+ 	New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst:
+ 	New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/fixed-header-files.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/interoperation.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/standard-libraries.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst:
+ 	New file.
+ 	* doc/gcc/language-standards-supported-by-gcc.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/c++-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/c-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/d-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/go-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst:
+ 	New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/references-for-other-languages.rst: New file.
+ 	* doc/gcc/lto-dump.rst: New file.
+ 	* doc/gcc/programming-languages-supported-by-gcc.rst: New file.
+ 	* doc/gcc/reporting-bugs.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/alias-analysis.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/annotations.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/memory-model.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/static-single-assignment.rst:
+ 	New file.
+ 	* doc/gccint/analysis-and-representation-of-loops.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/data-dependency-analysis.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/iv-analysis-on-rtl.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-closed-ssa-form.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-manipulation.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-querying.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-representation.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/number-of-iterations-analysis.rst:
+ 	New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/scalar-evolutions.rst: New file.
+ 	* doc/gccint/analyzer-internals.rst: New file.
+ 	* doc/gccint/collect2.rst: New file.
+ 	* doc/gccint/conf.py: New file.
+ 	* doc/gccint/contributing-to-gcc-development.rst: New file.
+ 	* doc/gccint/contributors-to-gcc.rst: New file.
+ 	* doc/gccint/control-flow-graph.rst: New file.
+ 	* doc/gccint/control-flow-graph/basic-blocks.rst: New file.
+ 	* doc/gccint/control-flow-graph/edges.rst: New file.
+ 	* doc/gccint/control-flow-graph/liveness-information.rst: New file.
+ 	* doc/gccint/control-flow-graph/maintaining-the-cfg.rst: New file.
+ 	* doc/gccint/control-flow-graph/profile-information.rst: New file.
+ 	* doc/gccint/copyright.rst: New file.
+ 	* doc/gccint/debugging-the-analyzer.rst: New file.
+ 	* doc/gccint/funding.rst: New file.
+ 	* doc/gccint/gcc-and-portability.rst: New file.
+ 	* doc/gccint/general-public-license-3.rst: New file.
+ 	* doc/gccint/generic.rst: New file.
+ 	* doc/gccint/generic/attributes-in-trees.rst: New file.
+ 	* doc/gccint/generic/c-and-c++-trees.rst: New file.
+ 	* doc/gccint/generic/declarations.rst: New file.
+ 	* doc/gccint/generic/deficiencies.rst: New file.
+ 	* doc/gccint/generic/expressions.rst: New file.
+ 	* doc/gccint/generic/functions.rst: New file.
+ 	* doc/gccint/generic/language-dependent-trees.rst: New file.
+ 	* doc/gccint/generic/overview.rst: New file.
+ 	* doc/gccint/generic/statements.rst: New file.
+ 	* doc/gccint/generic/types.rst: New file.
+ 	* doc/gccint/gimple-api.rst: New file.
+ 	* doc/gccint/gimple.rst: New file.
+ 	* doc/gccint/gimple/adding-a-new-gimple-statement-code.rst: New file.
+ 	* doc/gccint/gimple/class-hierarchy-of-gimple-statements.rst: New file.
+ 	* doc/gccint/gimple/exception-handling.rst: New file.
+ 	* doc/gccint/gimple/gimple-instruction-set.rst: New file.
+ 	* doc/gccint/gimple/gimple-sequences.rst: New file.
+ 	* doc/gccint/gimple/manipulating-gimple-statements.rst: New file.
+ 	* doc/gccint/gimple/operands.rst: New file.
+ 	* doc/gccint/gimple/sequence-iterators.rst: New file.
+ 	* doc/gccint/gimple/statement-and-operand-traversals.rst: New file.
+ 	* doc/gccint/gimple/temporaries.rst: New file.
+ 	* doc/gccint/gimple/tuple-representation.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleasm.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleassign.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplebind.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecall.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecatch.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecond.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpledebug.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleehfilter.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplegoto.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplelabel.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplenop.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicload.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicstore.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcontinue.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcritical.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompfor.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompmaster.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompordered.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompparallel.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompreturn.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsection.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsections.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsingle.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplephi.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleresx.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplereturn.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleswitch.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpletry.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplewithcleanupexpr.rst: New file.
+ 	* doc/gccint/gnu-free-documentation-license.rst: New file.
+ 	* doc/gccint/guidelines-for-diagnostics.rst: New file.
+ 	* doc/gccint/guidelines-for-options.rst: New file.
+ 	* doc/gccint/host-common.rst: New file.
+ 	* doc/gccint/host-configuration.rst: New file.
+ 	* doc/gccint/host-filesystem.rst: New file.
+ 	* doc/gccint/host-makefile-fragments.rst: New file.
+ 	* doc/gccint/host-misc.rst: New file.
+ 	* doc/gccint/index.rst: New file.
+ 	* doc/gccint/indices-and-tables.rst: New file.
+ 	* doc/gccint/interfacing-to-gcc-output.rst: New file.
+ 	* doc/gccint/introduction.rst: New file.
+ 	* doc/gccint/language-front-ends-in-gcc.rst: New file.
+ 	* doc/gccint/link-time-optimization.rst: New file.
+ 	* doc/gccint/link-time-optimization/design-overview.rst: New file.
+ 	* doc/gccint/link-time-optimization/internal-flags-controlling-lto1.rst: New file.
+ 	* doc/gccint/link-time-optimization/lto-file-sections.rst: New file.
+ 	* doc/gccint/link-time-optimization/using-summary-information-in-ipa-passes.rst: New file.
+ 	* doc/gccint/link-time-optimization/whole-program-assumptions-linker-plugin-and-symbol-visibilities.rst:
+ 	New file.
+ 	* doc/gccint/machine-descriptions.rst: New file.
+ 	* doc/gccint/machine-descriptions/c-statements-for-assembler-output.rst: New file.
+ 	* doc/gccint/machine-descriptions/canonicalization-of-instructions.rst: New file.
+ 	* doc/gccint/machine-descriptions/conditional-execution.rst: New file.
+ 	* doc/gccint/machine-descriptions/constant-definitions.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-how-to-split-instructions.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-jump-instruction-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-looping-instruction-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-rtl-sequences-for-code-generation.rst: New file.
+ 	* doc/gccint/machine-descriptions/everything-about-instruction-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/example-of-defineinsn.rst: New file.
+ 	* doc/gccint/machine-descriptions/including-patterns-in-machine-descriptions.rst: New file.
+ 	* doc/gccint/machine-descriptions/instruction-attributes.rst: New file.
+ 	* doc/gccint/machine-descriptions/interdependence-of-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/iterators.rst: New file.
+ 	* doc/gccint/machine-descriptions/machine-specific-peephole-optimizers.rst: New file.
+ 	* doc/gccint/machine-descriptions/operand-constraints.rst: New file.
+ 	* doc/gccint/machine-descriptions/output-templates-and-operand-substitution.rst: New file.
+ 	* doc/gccint/machine-descriptions/overview-of-how-the-machine-description-is-used.rst:
+ 	New file.
+ 	* doc/gccint/machine-descriptions/predicates.rst: New file.
+ 	* doc/gccint/machine-descriptions/rtl-template.rst: New file.
+ 	* doc/gccint/machine-descriptions/rtl-templates-transformations.rst: New file.
+ 	* doc/gccint/machine-descriptions/standard-pattern-names-for-generation.rst: New file.
+ 	* doc/gccint/machine-descriptions/when-the-order-of-patterns-matters.rst: New file.
+ 	* doc/gccint/makefile-fragments.rst: New file.
+ 	* doc/gccint/match-and-simplify.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information/how-to-invoke-the-garbage-collector.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/marking-roots-for-the-garbage-collector.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/source-files-containing-type-information.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/support-for-inheritance.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information/support-for-user-provided-gc-marking-routines.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/the-inside-of-a-gty.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information/troubleshooting-the-garbage-collector.rst:
+ 	New file.
+ 	* doc/gccint/option-file-format.rst: New file.
+ 	* doc/gccint/option-properties.rst: New file.
+ 	* doc/gccint/option-specification-files.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/gimplification-pass.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/inter-procedural-optimization-passes.rst:
+ 	New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/optimization-info.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/parsing-pass.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/pass-manager.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/rtl-passes.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/tree-ssa-passes.rst: New file.
+ 	* doc/gccint/plugins.rst: New file.
+ 	* doc/gccint/plugins/building-gcc-plugins.rst: New file.
+ 	* doc/gccint/plugins/controlling-which-passes-are-being-run.rst: New file.
+ 	* doc/gccint/plugins/giving-information-about-a-plugin.rst: New file.
+ 	* doc/gccint/plugins/interacting-with-the-gcc-garbage-collector.rst: New file.
+ 	* doc/gccint/plugins/interacting-with-the-pass-manager.rst: New file.
+ 	* doc/gccint/plugins/keeping-track-of-available-passes.rst: New file.
+ 	* doc/gccint/plugins/loading-plugins.rst: New file.
+ 	* doc/gccint/plugins/plugin-api.rst: New file.
+ 	* doc/gccint/plugins/recording-information-about-pass-execution.rst: New file.
+ 	* doc/gccint/plugins/registering-custom-attributes-or-pragmas.rst: New file.
+ 	* doc/gccint/rtl-representation.rst: New file.
+ 	* doc/gccint/rtl-representation/access-to-operands.rst: New file.
+ 	* doc/gccint/rtl-representation/access-to-special-operands.rst: New file.
+ 	* doc/gccint/rtl-representation/assembler-instructions-as-expressions.rst: New file.
+ 	* doc/gccint/rtl-representation/bit-fields.rst: New file.
+ 	* doc/gccint/rtl-representation/comparison-operations.rst: New file.
+ 	* doc/gccint/rtl-representation/constant-expression-types.rst: New file.
+ 	* doc/gccint/rtl-representation/conversions.rst: New file.
+ 	* doc/gccint/rtl-representation/declarations.rst: New file.
+ 	* doc/gccint/rtl-representation/embedded-side-effects-on-addresses.rst: New file.
+ 	* doc/gccint/rtl-representation/flags-in-an-rtl-expression.rst: New file.
+ 	* doc/gccint/rtl-representation/insns.rst: New file.
+ 	* doc/gccint/rtl-representation/machine-modes.rst: New file.
+ 	* doc/gccint/rtl-representation/on-the-side-ssa-form-for-rtl.rst: New file.
+ 	* doc/gccint/rtl-representation/reading-rtl.rst: New file.
+ 	* doc/gccint/rtl-representation/registers-and-memory.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-classes-and-formats.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-expressions-for-arithmetic.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-object-types.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-representation-of-function-call-insns.rst: New file.
+ 	* doc/gccint/rtl-representation/side-effect-expressions.rst: New file.
+ 	* doc/gccint/rtl-representation/structure-sharing-assumptions.rst: New file.
+ 	* doc/gccint/rtl-representation/variable-location-debug-information-in-rtl.rst: New file.
+ 	* doc/gccint/rtl-representation/vector-operations.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/alignment-of-polyints.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/arithmetic-on-polyints.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/comparisons-involving-polyint.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/computing-bounds-on-polyints.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/consequences-of-using-polyint.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/converting-polyints.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/guidelines-for-using-polyint.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/miscellaneous-polyint-routines.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/overview-of-polyint.rst: New file.
+ 	* doc/gccint/source-tree-structure-and-build-system.rst: New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/configure-terms-and-history.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory.rst: New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-language-front-end.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-target-back-end.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/build-system-in-the-gcc-directory.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/building-documentation.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/configuration-in-the-gcc-directory.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/headers-installed-by-gcc.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/library-source-files-and-headers-under-the-gcc-directory.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/makefile-targets.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/subdirectories-of-gcc.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/top-level-source-directory.rst:
+ 	New file.
+ 	* doc/gccint/standard-header-file-directories.rst: New file.
+ 	* doc/gccint/static-analyzer.rst: New file.
+ 	* doc/gccint/target-macros.rst: New file.
+ 	* doc/gccint/target-macros/adding-support-for-named-address-spaces.rst: New file.
+ 	* doc/gccint/target-macros/addressing-modes.rst: New file.
+ 	* doc/gccint/target-macros/adjusting-the-instruction-scheduler.rst: New file.
+ 	* doc/gccint/target-macros/anchored-addresses.rst: New file.
+ 	* doc/gccint/target-macros/c++-abi-parameters.rst: New file.
+ 	* doc/gccint/target-macros/condition-code-status.rst: New file.
+ 	* doc/gccint/target-macros/controlling-debugging-information-format.rst: New file.
+ 	* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst: New file.
+ 	* doc/gccint/target-macros/cross-compilation-and-floating-point.rst: New file.
+ 	* doc/gccint/target-macros/d-abi-parameters.rst: New file.
+ 	* doc/gccint/target-macros/defining-coprocessor-specifics-for-mips-targets.rst: New file.
+ 	* doc/gccint/target-macros/defining-data-structures-for-per-function-information.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-target-specific-uses-of-attribute.rst: New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language.rst: New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-alignment.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/how-initialization-functions-are-handled.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-dispatch-tables.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-uninitialized-variables.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/describing-relative-costs-of-operations.rst: New file.
+ 	* doc/gccint/target-macros/dividing-the-output-into-sections-texts-data.rst: New file.
+ 	* doc/gccint/target-macros/emulating-tls.rst: New file.
+ 	* doc/gccint/target-macros/implementing-the-varargs-macros.rst: New file.
+ 	* doc/gccint/target-macros/implicit-calls-to-library-routines.rst: New file.
+ 	* doc/gccint/target-macros/layout-of-source-language-data-types.rst: New file.
+ 	* doc/gccint/target-macros/miscellaneous-parameters.rst: New file.
+ 	* doc/gccint/target-macros/mode-switching-instructions.rst: New file.
+ 	* doc/gccint/target-macros/parameters-for-precompiled-header-validity-checking.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/position-independent-code.rst: New file.
+ 	* doc/gccint/target-macros/register-classes.rst: New file.
+ 	* doc/gccint/target-macros/register-usage.rst: New file.
+ 	* doc/gccint/target-macros/run-time-target-specification.rst: New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions.rst: New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/caller-saves-register-allocation.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/eliminating-frame-pointer-and-arg-pointer.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/exception-handling-support.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/function-entry-and-exit.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/generating-code-for-profiling.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-large-values-are-returned.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-scalar-function-values-are-returned.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/miscellaneous-register-hooks.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/permitting-tail-calls.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/shrink-wrapping-separate-components.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/specifying-how-stack-checking-is-done.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/stack-smashing-protection.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/storage-layout.rst: New file.
+ 	* doc/gccint/target-macros/support-for-nested-functions.rst: New file.
+ 	* doc/gccint/target-macros/the-global-targetm-variable.rst: New file.
+ 	* doc/gccint/target-makefile-fragments.rst: New file.
+ 	* doc/gccint/testsuites.rst: New test.
+ 	* doc/gccint/testsuites/ada-language-testsuites.rst: New test.
+ 	* doc/gccint/testsuites/c-language-testsuites.rst: New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests.rst: New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/commands-for-use-in-dg-final.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/features-for-dg-add-options.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/keywords-describing-target-attributes.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/selecting-targets-to-which-a-test-applies.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/syntax-and-descriptions-of-test-directives.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/variants-of-dg-require-support.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/idioms-used-in-testsuite-code.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-binary-compatibility.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-gcov.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-gimple-passes.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-link-time-optimizations.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-profile-directed-optimizations.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-rtl-passes.rst: New test.
+ 	* doc/gccint/testsuites/support-for-torture-testing-using-multiple-options.rst: New test.
+ 	* doc/gccint/the-gcc-low-level-runtime-library.rst: New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/language-independent-routines-for-exception-handling.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/miscellaneous-runtime-library-routines.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-decimal-floating-point-emulation.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-fixed-point-fractional-emulation.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-floating-point-emulation.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-integer-arithmetic.rst:
+ 	New file.
+ 	* doc/gccint/the-language.rst: New file.
+ 	* doc/gccint/user-experience-guidelines.rst: New file.
+ 	* doc/install/binaries.rst: New file.
+ 	* doc/install/building.rst: New file.
+ 	* doc/install/building/building-a-cross-compiler.rst: New file.
+ 	* doc/install/building/building-a-native-compiler.rst: New file.
+ 	* doc/install/building/building-in-parallel.rst: New file.
+ 	* doc/install/building/building-the-ada-compiler.rst: New file.
+ 	* doc/install/building/building-the-d-compiler.rst: New file.
+ 	* doc/install/building/building-with-profile-feedback.rst: New file.
+ 	* doc/install/conf.py: New file.
+ 	* doc/install/configuration.rst: New file.
+ 	* doc/install/copyright.rst: New file.
+ 	* doc/install/downloading-gcc.rst: New file.
+ 	* doc/install/final-installation.rst: New file.
+ 	* doc/install/gnu-free-documentation-license.rst: New file.
+ 	* doc/install/host-target-specific-installation-notes-for-gcc.rst: New file.
+ 	* doc/install/how-can-you-run-the-testsuite-on-selected-tests.rst: New test.
+ 	* doc/install/how-to-interpret-test-results.rst: New file.
+ 	* doc/install/index.rst: New file.
+ 	* doc/install/indices-and-tables.rst: New file.
+ 	* doc/install/installing-gcc.rst: New file.
+ 	* doc/install/passing-options-and-running-multiple-testsuites.rst: New test.
+ 	* doc/install/prerequisites.rst: New file.
+ 	* doc/install/submitting-test-results.rst: New file.
+ 	* doc/install/testing.rst: New file.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst: Revert.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/common-target.def: Port to RST.
+ 	* target.def: Port to RST.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/adding-support-for-named-address-spaces.rst: Use tm.rst.in file.
+ 	* doc/gccint/target-macros/addressing-modes.rst: Likewise.
+ 	* doc/gccint/target-macros/adjusting-the-instruction-scheduler.rst: Likewise.
+ 	* doc/gccint/target-macros/anchored-addresses.rst: Likewise.
+ 	* doc/gccint/target-macros/c++-abi-parameters.rst: Likewise.
+ 	* doc/gccint/target-macros/condition-code-status.rst: Likewise.
+ 	* doc/gccint/target-macros/controlling-debugging-information-format.rst: Likewise.
+ 	* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst: Likewise.
+ 	* doc/gccint/target-macros/d-abi-parameters.rst: Likewise.
+ 	* doc/gccint/target-macros/defining-target-specific-uses-of-attribute.rst: Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-dispatch-tables.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/describing-relative-costs-of-operations.rst: Likewise.
+ 	* doc/gccint/target-macros/dividing-the-output-into-sections-texts-data.rst: Likewise.
+ 	* doc/gccint/target-macros/emulating-tls.rst: Likewise.
+ 	* doc/gccint/target-macros/implementing-the-varargs-macros.rst: Likewise.
+ 	* doc/gccint/target-macros/implicit-calls-to-library-routines.rst: Likewise.
+ 	* doc/gccint/target-macros/layout-of-source-language-data-types.rst: Likewise.
+ 	* doc/gccint/target-macros/miscellaneous-parameters.rst: Likewise.
+ 	* doc/gccint/target-macros/mode-switching-instructions.rst: Likewise.
+ 	* doc/gccint/target-macros/parameters-for-precompiled-header-validity-checking.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/register-classes.rst: Likewise.
+ 	* doc/gccint/target-macros/register-usage.rst: Likewise.
+ 	* doc/gccint/target-macros/run-time-target-specification.rst: Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/eliminating-frame-pointer-and-arg-pointer.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/function-entry-and-exit.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/generating-code-for-profiling.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-large-values-are-returned.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-scalar-function-values-are-returned.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/miscellaneous-register-hooks.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/permitting-tail-calls.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/shrink-wrapping-separate-components.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/specifying-how-stack-checking-is-done.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/stack-smashing-protection.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/storage-layout.rst: Likewise.
+ 	* doc/gccint/target-macros/support-for-nested-functions.rst: Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Support Sphinx based documentation.
+ 	* configure: Regenerate.
+ 	* configure.ac: Support Sphinx based documentation.
+ 	* genhooks.cc (struct s_hook): Emit tm.rst.in file.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/tm.rst.in: New file.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/analyzer.texi: Removed.
+ 	* doc/avr-mmcu.texi: Removed.
+ 	* doc/bugreport.texi: Removed.
+ 	* doc/cfg.texi: Removed.
+ 	* doc/collect2.texi: Removed.
+ 	* doc/compat.texi: Removed.
+ 	* doc/configfiles.texi: Removed.
+ 	* doc/configterms.texi: Removed.
+ 	* doc/contrib.texi: Removed.
+ 	* doc/contribute.texi: Removed.
+ 	* doc/cpp.texi: Removed.
+ 	* doc/cppdiropts.texi: Removed.
+ 	* doc/cppenv.texi: Removed.
+ 	* doc/cppinternals.texi: Removed.
+ 	* doc/cppopts.texi: Removed.
+ 	* doc/cppwarnopts.texi: Removed.
+ 	* doc/extend.texi: Removed.
+ 	* doc/fragments.texi: Removed.
+ 	* doc/frontends.texi: Removed.
+ 	* doc/gcc.texi: Removed.
+ 	* doc/gccint.texi: Removed.
+ 	* doc/gcov-dump.texi: Removed.
+ 	* doc/gcov-tool.texi: Removed.
+ 	* doc/gcov.texi: Removed.
+ 	* doc/generic.texi: Removed.
+ 	* doc/gimple.texi: Removed.
+ 	* doc/gnu.texi: Removed.
+ 	* doc/gty.texi: Removed.
+ 	* doc/headerdirs.texi: Removed.
+ 	* doc/hostconfig.texi: Removed.
+ 	* doc/implement-c.texi: Removed.
+ 	* doc/implement-cxx.texi: Removed.
+ 	* doc/include/fdl.texi: Removed.
+ 	* doc/include/funding.texi: Removed.
+ 	* doc/include/gcc-common.texi: Removed.
+ 	* doc/include/gpl_v3.texi: Removed.
+ 	* doc/install.texi: Removed.
+ 	* doc/interface.texi: Removed.
+ 	* doc/invoke.texi: Removed.
+ 	* doc/languages.texi: Removed.
+ 	* doc/libgcc.texi: Removed.
+ 	* doc/loop.texi: Removed.
+ 	* doc/lto-dump.texi: Removed.
+ 	* doc/lto.texi: Removed.
+ 	* doc/makefile.texi: Removed.
+ 	* doc/match-and-simplify.texi: Removed.
+ 	* doc/md.texi: Removed.
+ 	* doc/objc.texi: Removed.
+ 	* doc/optinfo.texi: Removed.
+ 	* doc/options.texi: Removed.
+ 	* doc/passes.texi: Removed.
+ 	* doc/plugins.texi: Removed.
+ 	* doc/poly-int.texi: Removed.
+ 	* doc/portability.texi: Removed.
+ 	* doc/rtl.texi: Removed.
+ 	* doc/service.texi: Removed.
+ 	* doc/sourcebuild.texi: Removed.
+ 	* doc/standards.texi: Removed.
+ 	* doc/tm.texi: Removed.
+ 	* doc/tree-ssa.texi: Removed.
+ 	* doc/trouble.texi: Removed.
+ 	* doc/ux.texi: Removed.
+ 	* doc/tm.texi.in: Removed.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* target.def: Use proper lexers for target macros.
+ 	* doc/gccint/target-macros/tm.rst.in: Re-generate.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Support --with-sphinx-build.
+ 	* configure.ac:
+ 	* configure: Regenerate.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst:
+ 	Fix cross manual refs.
+ 	* doc/gcc/language-standards-supported-by-gcc/references-for-other-languages.rst:
+ 	Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
+ 	Do not include tm.rst.in.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/run-time-target-specification.rst:
+ 	Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
+ 	Port to RST.
+ 	* doc/gccint/target-macros/storage-layout.rst: Likewise.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst: Sync with master.
+ 	* doc/gcc/gcc-command-options/option-summary.rst: Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Support installation if sphinx-build is missing.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Add vpath default for .rst files.
+ 	* config/avr/avr-devices.cc: For port RST.
+ 	* config/avr/avr-mcus.def: Update path.
+ 	* config/avr/gen-avr-mmcu-texi.cc: Moved to...
+ 	* config/avr/gen-avr-mmcu-rst.cc: ...here.
+ 	* config/avr/t-avr: Update to rst.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-mmcu.rst: Re-generate.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.cc (get_option_html_page): Port to sphinx URLs.
+ 	(get_option_url): Likewise.
+ 	(test_get_option_html_page): Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/character-sets.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/conditional-syntax.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/conditional-uses.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/conditionals.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/deleted-code.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/diagnostics.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/environment-variables.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/alternatives-to-wrapper-ifndef.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/computed-includes.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/include-operation.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/include-syntax.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/once-only-headers.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/search-path.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/system-headers.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/wrapper-headers.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/implementation-defined-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/implementation-details.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/implementation-limits.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/index.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/initial-processing.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/invocation.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/line-control.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/concatenation.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/directives-within-macro-arguments.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/function-like-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/macro-arguments.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/macro-pitfalls.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/object-like-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/predefined-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/stringizing.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/undefining-and-redefining-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/variadic-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/obsolete-features.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/other-directives.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/overview.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/pragmas.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/preprocessor-output.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/the-preprocessing-language.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/tokenization.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-lexical-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-miscellany.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-mode.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-warnings.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/cppinternals.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/cpplib.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/files.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/index.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/internal-representation-of-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/just-which-line-number-anyway.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/lexing-a-line.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/lexing-a-token.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/looking-for-a-function-like-macros-opening-parenthesis.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/macro-expansion-overview.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/marking-tokens-ineligible-for-future-expansion.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/multiple-include-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/overview.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/representation-of-line-numbers.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/scanning-the-replacement-list-for-macros-to-expand.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/binary-compatibility.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c++-implementation-defined-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/architecture.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/arrays-and-pointers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/characters.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/declarators.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/environment.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/floating-point.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/hints.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/identifiers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/integers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/library-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/locale-specific-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/preprocessing-directives.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/qualifiers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/statements.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/translation.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/conditionally-supported-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/contributing-to-gcc-development.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/contributors-to-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/exception-handling.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/backwards-compatibility.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-concepts.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/deprecated-features.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/function-multiversioning.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/restricting-pointer-aliasing.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/type-traits.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/vague-linkage.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/wheres-the-template.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/128-bit-integers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/additional-floating-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/alternate-keywords.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/an-inline-function-is-as-fast-as-a-macro.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/arithmetic-on-void-and-function-pointers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-length-zero.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-variable-length.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/attribute-syntax.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/binary-constants-using-the-0b-prefix.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-for-memory-model-aware-atomic-operations.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-to-perform-arithmetic-with-overflow-checking.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/c++-style-comments.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/case-ranges.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/cast-to-a-union-type.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/complex-numbers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/compound-literals.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/conditionals-with-omitted-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/constructing-function-calls.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/decimal-floating-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/aarch64-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/amd-gcn-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arc-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arm-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/avr-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/blackfin-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/bpf-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/c-sky-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/common-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/epiphany-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/h8-300-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/ia-64-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32c-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32r-d-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m68k-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mcore-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mep-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microblaze-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microsoft-windows-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mips-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/msp430-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nds32-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nios-ii-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nvidia-ptx-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/powerpc-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/risc-v-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rl78-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rx-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/s-390-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/sh-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/symbian-os-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/v850-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/visium-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/x86-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/xstormy16-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/designated-initializers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/determining-the-alignment-of-functions-types-or-variables.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/dollar-signs-in-identifier-names.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/double-word-integers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/enumerator-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/fixed-point-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/format-checks-specific-to-particular-target-machines.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/function-names-as-strings.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/getting-the-return-or-frame-address-of-a-function.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/half-precision-floating-point.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/hex-floats.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/how-to-use-inline-assembly-language-in-c-code.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/incomplete-enum-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/label-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/labels-as-values.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/legacy-sync-built-in-functions-for-atomic-memory-access.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/locally-declared-labels.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/macros-with-a-variable-number-of-arguments.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/mixed-declarations-labels-and-code.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/named-address-spaces.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/nested-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-constant-initializers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-lvalue-arrays-may-have-subscripts.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/nonlocal-gotos.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/object-size-checking-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/other-built-in-functions-provided-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointer-arguments-in-variadic-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointers-to-arrays-with-qualifiers-work-as-expected.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/pragmas-accepted-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/prototypes-and-old-style-function-definitions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/referring-to-a-type-with-typeof.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/slightly-looser-rules-for-escaped-newlines.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-variables.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/statement-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/statements-and-declarations-in-expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/structures-with-no-members.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/support-for-offsetof.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/aarch64-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/alpha-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/altera-nios-ii-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-simd-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-armv8-m-security-extensions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-c-language-extensions-acle.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-floating-point-status-and-control-intrinsics.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-iwmmxt-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/avr-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/basic-powerpc-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/blackfin-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/bpf-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/fr-v-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-dsp-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-loongson-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-paired-single-support.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-simd-architecture-msa-support.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/msp430-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/nds32-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/other-mips-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/picochip-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-altivec-vsx-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-atomic-memory-operation-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-hardware-transactional-memory-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-matrix-multiply-assist-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/pru-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/risc-v-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/rx-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/s-390-system-z-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sh-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sparc-vis-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/ti-c6x-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-control-flow-protection-intrinsics.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-transactional-memory-intrinsics.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/the-character-esc-in-constants.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/thread-local-storage.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/unnamed-structure-and-union-fields.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/using-vector-instructions-through-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/when-is-a-volatile-object-accessed.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/x86-specific-memory-model-extensions-for-transactional-memory.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/funding.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/compiling-c++-programs.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/description.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/environment-variables-affecting-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/gcc-developer-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/adapteva-epiphany-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/amd-gcn-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arm-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/blackfin-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c-sky-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c6x-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/cris-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/darwin-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/dec-alpha-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ebpf-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/fr30-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/frv-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ft32-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/gnu-linux-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/h8-300-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/hppa-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ia-64-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ibm-rs-6000-and-powerpc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/lm32-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/loongarch-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32c-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32r-d-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m680x0-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mcore-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mep-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/microblaze-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mips-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mmix-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mn10300-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/moxie-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/msp430-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nds32-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nios-ii-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nvidia-ptx-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/openrisc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/options-for-system-v.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pdp-11-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/picochip-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/powerpc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pru-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/risc-v-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rl78-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rx-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/s-390-and-zseries-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/score-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sh-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/solaris-2-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sparc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/v850-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vax-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/visium-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vms-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vxworks-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-windows-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xstormy16-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xtensa-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/zseries-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-c-dialect.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-objective-c-and-objective-c++-dialects.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-preprocessor.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-code-generation-conventions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-debugging-your-program.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-directory-search.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-linking.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-that-control-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/passing-options-to-the-assembler.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/program-instrumentation-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/specifying-subprocesses-and-the-switches-to-pass-to-them.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/using-precompiled-headers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov-dump.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov-tool.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/brief-description-of-gcov-data-files.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/data-file-relocation-to-support-cross-profiling.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/introduction-to-gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/invoking-gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/profiling-and-test-coverage-in-freestanding-environments.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/using-gcov-with-gcc-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/general-public-license-3.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/compatibilityalias.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/constant-string-objects.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/exceptions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/fast-enumeration.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/garbage-collection.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/gnu-objective-c-runtime-api.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/load-executing-code-before-main.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/synchronization.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/type-encoding.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/have-you-found-a-bug.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/how-and-where-to-report-bugs.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/how-to-get-help-with-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/index.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/fixed-header-files.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/interoperation.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/standard-libraries.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/c++-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/c-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/d-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/go-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/lto-dump.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/programming-languages-supported-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/reporting-bugs.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/alias-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/annotations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/memory-model.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/static-single-assignment.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/data-dependency-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/iv-analysis-on-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-closed-ssa-form.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-manipulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-querying.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-representation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/number-of-iterations-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/scalar-evolutions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analyzer-internals.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/collect2.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/contributing-to-gcc-development.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/contributors-to-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/basic-blocks.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/edges.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/liveness-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/maintaining-the-cfg.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/profile-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/debugging-the-analyzer.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/funding.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gcc-and-portability.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/general-public-license-3.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/attributes-in-trees.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/c-and-c++-trees.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/declarations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/deficiencies.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/functions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/language-dependent-trees.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/overview.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/statements.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple-api.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/adding-a-new-gimple-statement-code.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/class-hierarchy-of-gimple-statements.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/exception-handling.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/gimple-instruction-set.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/gimple-sequences.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/manipulating-gimple-statements.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/sequence-iterators.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/statement-and-operand-traversals.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/temporaries.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-representation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleasm.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleassign.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplebind.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecall.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecatch.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecond.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpledebug.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleehfilter.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplegoto.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplelabel.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplenop.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicload.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicstore.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcontinue.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcritical.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompfor.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompmaster.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompordered.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompparallel.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompreturn.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsection.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsections.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsingle.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplephi.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleresx.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplereturn.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleswitch.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpletry.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplewithcleanupexpr.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/guidelines-for-diagnostics.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/guidelines-for-options.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-common.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-configuration.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-filesystem.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-makefile-fragments.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-misc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/index.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/interfacing-to-gcc-output.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/introduction.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/language-front-ends-in-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/design-overview.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/internal-flags-controlling-lto1.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/lto-file-sections.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/using-summary-information-in-ipa-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/whole-program-assumptions-linker-plugin-and-symbol-visibilities.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/c-statements-for-assembler-output.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/canonicalization-of-instructions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/conditional-execution.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/constant-definitions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-how-to-split-instructions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-jump-instruction-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-looping-instruction-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-rtl-sequences-for-code-generation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/everything-about-instruction-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/example-of-defineinsn.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/including-patterns-in-machine-descriptions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/instruction-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/interdependence-of-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/iterators.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/machine-specific-peephole-optimizers.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/operand-constraints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/output-templates-and-operand-substitution.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/overview-of-how-the-machine-description-is-used.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/predicates.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/rtl-template.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/rtl-templates-transformations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/standard-pattern-names-for-generation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/when-the-order-of-patterns-matters.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/makefile-fragments.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/match-and-simplify.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/how-to-invoke-the-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/marking-roots-for-the-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/source-files-containing-type-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/support-for-inheritance.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/support-for-user-provided-gc-marking-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/the-inside-of-a-gty.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/troubleshooting-the-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/option-file-format.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/option-properties.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/option-specification-files.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/gimplification-pass.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/inter-procedural-optimization-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/optimization-info.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/parsing-pass.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/pass-manager.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/rtl-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/tree-ssa-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/building-gcc-plugins.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/controlling-which-passes-are-being-run.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/giving-information-about-a-plugin.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/interacting-with-the-gcc-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/interacting-with-the-pass-manager.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/keeping-track-of-available-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/loading-plugins.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/plugin-api.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/recording-information-about-pass-execution.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/registering-custom-attributes-or-pragmas.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/access-to-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/access-to-special-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/assembler-instructions-as-expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/bit-fields.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/comparison-operations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/constant-expression-types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/conversions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/declarations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/embedded-side-effects-on-addresses.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/flags-in-an-rtl-expression.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/insns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/machine-modes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/on-the-side-ssa-form-for-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/reading-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/registers-and-memory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-classes-and-formats.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-expressions-for-arithmetic.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-object-types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-representation-of-function-call-insns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/side-effect-expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/structure-sharing-assumptions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/variable-location-debug-information-in-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/vector-operations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/alignment-of-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/arithmetic-on-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/comparisons-involving-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/computing-bounds-on-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/consequences-of-using-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/converting-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/guidelines-for-using-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/miscellaneous-polyint-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/overview-of-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/configure-terms-and-history.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-language-front-end.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-target-back-end.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/build-system-in-the-gcc-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/configuration-in-the-gcc-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/headers-installed-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/library-source-files-and-headers-under-the-gcc-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/makefile-targets.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/subdirectories-of-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/top-level-source-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/standard-header-file-directories.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/static-analyzer.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/controlling-debugging-information-format.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/cross-compilation-and-floating-point.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-coprocessor-specifics-for-mips-targets.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-data-structures-for-per-function-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-alignment.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/how-initialization-functions-are-handled.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-uninitialized-variables.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/implicit-calls-to-library-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/layout-of-source-language-data-types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/position-independent-code.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/register-usage.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/caller-saves-register-allocation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/exception-handling-support.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/support-for-nested-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/the-global-targetm-variable.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-makefile-fragments.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/ada-language-testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/c-language-testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/commands-for-use-in-dg-final.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/features-for-dg-add-options.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/keywords-describing-target-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/selecting-targets-to-which-a-test-applies.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/syntax-and-descriptions-of-test-directives.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/variants-of-dg-require-support.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/idioms-used-in-testsuite-code.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-binary-compatibility.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-gimple-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-link-time-optimizations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-profile-directed-optimizations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-rtl-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-torture-testing-using-multiple-options.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/language-independent-routines-for-exception-handling.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/miscellaneous-runtime-library-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-decimal-floating-point-emulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-fixed-point-fractional-emulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-floating-point-emulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-integer-arithmetic.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-language.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/user-experience-guidelines.rst:
+ 	Add trailing newline.
+ 	* doc/install/binaries.rst:
+ 	Add trailing newline.
+ 	* doc/install/building.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-a-cross-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-a-native-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-in-parallel.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-the-ada-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-the-d-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-with-profile-feedback.rst:
+ 	Add trailing newline.
+ 	* doc/install/configuration.rst:
+ 	Add trailing newline.
+ 	* doc/install/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/install/downloading-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/install/final-installation.rst:
+ 	Add trailing newline.
+ 	* doc/install/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/install/host-target-specific-installation-notes-for-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/install/how-can-you-run-the-testsuite-on-selected-tests.rst:
+ 	Add trailing newline.
+ 	* doc/install/how-to-interpret-test-results.rst:
+ 	Add trailing newline.
+ 	* doc/install/index.rst:
+ 	Add trailing newline.
+ 	* doc/install/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/install/installing-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/install/passing-options-and-running-multiple-testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/install/prerequisites.rst:
+ 	Add trailing newline.
+ 	* doc/install/submitting-test-results.rst:
+ 	Add trailing newline.
+ 	* doc/install/testing.rst:
+ 	Add trailing newline.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Use new install URL.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst:
+ 	Use intersphinx link.
+ 	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
+ 	Use new URL.
+ 	* doc/gccint/source-tree-structure-and-build-system.rst: Use
+ 	intersphinx link.
+ 	* doc/install/host-target-specific-installation-notes-for-gcc.rst: Likewise.
+ 	* doc/install/installing-gcc.rst: Likewise.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 		    Sinan  <sinan.lin@linux.alibaba.com>
+ 
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst:
+ 	Add missing variable name.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/conf.py: Add newline at last line.
+ 	* doc/cppinternals/conf.py: Add newline at last line.
+ 	* doc/gcc/conf.py: Add newline at last line.
+ 	* doc/gccint/conf.py: Add newline at last line.
+ 	* doc/install/conf.py: Add newline at last line.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
+ 	Revert.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/pragmas.rst: Revert.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst: Revert.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst: Revert.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst: Revert.
+ 	* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst: Revert.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/install/testing.rst: Remove anachronism about separate
+ 	source tarballs.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/107620
+ 	* configure: Regenerate.
+ 	* configure.ac: Always set sphinx-build.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/option-summary.rst: Revert.
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst: Revert.
+ 
+ 2022-11-14  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_AMX_INT8_SET): Add AMX-TILE dependency.
+ 	(OPTION_MASK_ISA2_AMX_BF16_SET): Ditto.
+ 	(OPTION_MASK_ISA2_AMX_FP16_SET): Ditto.
+ 	(OPTION_MASK_ISA2_AMX_TILE_UNSET): Disable AMX_{INT8,
+ 	BF16, FP16} when disable AMX_TILE.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst:
+ 	Revert.
+ 	* doc/gcc/gcc-command-options/option-summary.rst:
+ 	Revert.
+ 
+ 2022-11-14  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* common/config/i386/i386-common.cc (ix86_optimization_table):
+ 	Enable small loop unroll at O2 by default.
+ 	* config/i386/i386.cc (ix86_loop_unroll_adjust): Adjust unroll
+ 	factor if -munroll-only-small-loops enabled and -funroll-loops/
+ 	-funroll-all-loops are disabled.
+ 	* config/i386/i386.h (struct processor_costs): Add 2 field
+ 	small_unroll_ninsns and small_unroll_factor.
+ 	* config/i386/i386.opt: Add -munroll-only-small-loops.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst:
+ 	Document -munroll-only-small-loops.
+ 	* doc/gcc/gcc-command-options/option-summary.rst: Likewise.
+ 	* loop-init.cc (pass_rtl_unroll_loops::gate): Enable rtl
+ 	loop unrolling for -O2-speed and above if target hook
+ 	loop_unroll_adjust exists.
+ 	(pass_rtl_unroll_loops::execute): Set UAP_UNROLL flag
+ 	when target hook loop_unroll_adjust exists.
+ 	* config/i386/x86-tune-costs.h: Update all processor costs
+ 	with small_unroll_ninsns = 4 and small_unroll_factor = 2.
+ 
+ 2022-11-13  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106235
+ 	* doc/gcc/gcc-command-options/option-summary.rst: Add
+ 	-Wno-analyzer-tainted-assertion.
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
+ 	Add -Wno-analyzer-tainted-assertion.
+ 
+ 2022-11-13  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md: New define_split.
+ 
+ 2022-11-13  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Recognize shNadd,
+ 	if expressed as a plus and multiplication with a power-of-2.
+ 	Split costing for MINUS from PLUS.
+ 
+ 2022-11-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/107620
+ 	* configure: Regenerate.
+ 	* configure.ac: Always set sphinx-build.
+ 
+ 2022-11-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h [__STDC_VERSION__ > 201710L]
+ 	(__STDC_VERSION_FLOAT_H__): New macro.
+ 	* ginclude/stdarg.h [__STDC_VERSION__ > 201710L]
+ 	(__STDC_VERSION_STDARG_H__): New macro.
+ 	* ginclude/stdatomic.h [__STDC_VERSION__ > 201710L]
+ 	(__STDC_VERSION_STDATOMIC_H__): New macro.
+ 	* ginclude/stddef.h [__STDC_VERSION__ > 201710L]
+ 	(__STDC_VERSION_STDDEF_H__): New macro.
+ 	* ginclude/stdint-gcc.h [__STDC_VERSION__ > 201710L]
+ 	(__STDC_VERSION_STDINT_H__): New macro.
+ 	* glimits.h [__STDC_VERSION__ > 201710L]
+ 	(__STDC_VERSION_LIMITS_H__): New macro.
+ 
+ 2022-11-13  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/install/testing.rst: Remove anachronism about separate
+ 	source tarballs.
+ 
+ 2022-11-12  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* dfp.cc (decimal_from_binary): Convert a canonical NaN to a
+ 	canonical NaN.
+ 
+ 2022-11-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (range_tests_signbit): Move to set from here...
+ 	(range_tests_signed_zeros): ...to here.
+ 
+ 2022-11-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (build_lt): Adjust with frange_nextafter
+ 	instead of default to a closed range.
+ 	(build_gt): Same.
+ 
+ 2022-11-12  Aldy Hernandez  <aldyh@redhat.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* range-op-float.cc (float_binary_op_range_finish): New function.
+ 	(foperator_plus::op1_range): New.
+ 	(foperator_plus::op2_range): New.
+ 	(foperator_minus::op1_range): New.
+ 	(foperator_minus::op2_range): New.
+ 	(foperator_mult::op1_range): New.
+ 	(foperator_mult::op2_range): New.
+ 	(foperator_div::op1_range): New.
+ 	(foperator_div::op2_range): New.
+ 
+ 2022-11-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107569
+ 	* range-op-float.cc (zero_p, contains_p, singleton_inf_p,
+ 	signbit_known_p, zero_range, inf_range, zero_to_inf_range): New
+ 	functions.
+ 	(foperator_mult_div_base): New class.
+ 	(foperator_mult, foperator_div): Derive from that and use
+ 	protected static method from it as well as above new functions
+ 	to simplify the code.
+ 
+ 2022-11-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107569
+ 	* range-op-float.cc (foperator_div): New class.
+ 	(floating_op_table::floating_op_table): Use foperator_div
+ 	for RDIV_EXPR.
+ 
+ 2022-11-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107569
+ 	PR tree-optimization/107591
+ 	* range-op.h (range_operator_float::rv_fold): Add relation_kind
+ 	argument.
+ 	* range-op-float.cc (range_operator_float::fold_range): Name
+ 	last argument trio and pass trio.op1_op2 () as last argument to
+ 	rv_fold.
+ 	(range_operator_float::rv_fold): Add relation_kind argument.
+ 	(foperator_plus::rv_fold, foperator_minus::rv_fold): Likewise.
+ 	(foperator_mult): New class.
+ 	(floating_op_table::floating_op_table): Use foperator_mult for
+ 	MULT_EXPR.
+ 
+ 2022-11-12  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (UNSPEC_FLOGB): New unspec.
+ 	(type): Add flogb.
+ 	(logb_non_negative<mode>2): New instruction template.
+ 	(logb<mode>2): New define_expand.
+ 
+ 2022-11-12  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (UNSPEC_FSCALEB): New unspec.
+ 	(type): Add fscaleb.
+ 	(IMODE): New mode attr.
+ 	(ldexp<mode>3): New instruction template.
+ 
+ 2022-11-12  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (UNSPEC_FTINT): New unspec.
+ 	(UNSPEC_FTINTRM): Likewise.
+ 	(UNSPEC_FTINTRP): Likewise.
+ 	(LRINT): New define_int_iterator.
+ 	(lrint_pattern): New define_int_attr.
+ 	(lrint_submenmonic): Likewise.
+ 	(lrint_allow_inexact): Likewise.
+ 	(ANYFI): New define_mode_iterator.
+ 	(lrint<ANYF><ANYFI>): New instruction template.
+ 
+ 2022-11-12  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (frint_<fmt>): Rename to ..
+ 	(rint<mode>2): .. this.
+ 
+ 2022-11-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106147
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
+ 	Add -Wanalyzer-infinite-recursion.
+ 	* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst
+ 	(-Winfinite-recursion): Mention -Wanalyzer-infinite-recursion.
+ 
+ 2022-11-11  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106147
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/infinite-recursion.o.
+ 
+ 2022-11-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/107523
+ 	* gimple-range.cc (gimple_ranger::update_stmt): Use fur_stmt
+ 	rather than fur_depend.
+ 
+ 2022-11-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* tree-vrp.cc (rvrp_folder::rvrp_folder): Init m_last_bb_stmt.
+ 	(rvrp_folder::pre_fold_bb): Set m_last_bb_stmt.
+ 	(rvrp_folder::pre_fold_stmt): Check for transitive inferred ranges.
+ 	(rvrp_folder::fold_stmt): Check in pre_fold_stmt instead.
+ 
+ 2022-11-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-X1C
+ 	CPU.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst:
+ 	Document Cortex-X1C CPU.
+ 
+ 2022-11-11  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Add Cortex-A715
+ 	CPU.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst:
+ 	Document Cortex-A715 CPU.
+ 
+ 2022-11-11  Richard Biener  <rguenther@suse.de>
+ 	    Nikita Voronov  <nik_1357@mail.ru>
+ 
+ 	PR tree-optimization/107554
+ 	* tree-ssa-strlen.cc (strlen_pass::count_nonzero_bytes):
+ 	Use unsigned HOST_WIDE_INT type for the strlen.
+ 
+ 2022-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105142
+ 	* gimple-fold.cc (fosa_unwind): New global.
+ 	(follow_outer_ssa_edges): When the SSA definition to follow
+ 	is does not dominate fosa_bb, temporarily clear flow-sensitive
+ 	info.  Make sure to not expand stmts with not defined overflow.
+ 	(maybe_fold_comparisons_from_match_pd): Set up unwind stack
+ 	for follow_outer_ssa_edges and unwind flow-sensitive info
+ 	clearing after matching.
+ 
+ 2022-11-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_mult::fold_range): Remove.
+ 	(operator_div::fold_range): Remove.
+ 	(operator_bitwise_and): Remove.
+ 
+ 2022-11-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (update_known_bitmask): Avoid unnecessary intersection.
+ 
+ 2022-11-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (range_operator::fold_range): Call
+ 	update_known_bitmask.
+ 	(operator_bitwise_and::fold_range): Avoid setting nonzero bits
+ 	when range is undefined.
+ 
+ 2022-11-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (class operator_div): Remove tree code.
+ 	(operator_div::wi_op_overflows): Handle EXACT_DIV_EXPR as
+ 	TRUNC_DIV_EXPR.
+ 
+ 2022-11-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc: (range_op_table::set): Set m_code.
+ 	(integral_table::integral_table): Handle shared entries.
+ 	(pointer_table::pointer_table): Same.
+ 	* range-op.h (class range_operator): Add m_code.
+ 
+ 2022-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107618
+ 	* tree-ssa-copy.cc (stmt_may_generate_copy): Simulate all
+ 	assignments with a single SSA use.
+ 	(copy_prop_visit_assignment): Use gimple_fold_stmt_to_constant_1
+ 	to perform simple constant folding.
+ 	(copy_prop::visit_stmt): Visit all assignments.
+ 
+ 2022-11-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84646
+ 	* tree-ssa-dce.cc (pass_dce::set_pass_param): Add param
+ 	wheter to run update-address-taken.
+ 	(pass_dce::execute): Honor it.
+ 	* passes.def: Exchange last DCE and CD-DCE invocations.
+ 	Swap pass_tail_calls and the last DCE.
+ 
+ 2022-11-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 	    Monk Chiang  <monk.chiang@sifive.com>
+ 
+ 	* config/riscv/riscv-v.cc (emit_pred_move): Adjust for scalable register spilling.
+ 	(legitimize_move): Ditto.
+ 	* config/riscv/riscv.cc (riscv_v_adjust_scalable_frame): New function.
+ 	(riscv_first_stack_step): Adjust for scalable register spilling.
+ 	(riscv_expand_prologue): Ditto.
+ 	(riscv_expand_epilogue): Ditto.
+ 	(riscv_dwarf_poly_indeterminate_value): New function.
+ 	(TARGET_DWARF_POLY_INDETERMINATE_VALUE): New target hook support for register spilling.
+ 	* config/riscv/riscv.h (RISCV_DWARF_VLENB): New macro.
+ 	(RISCV_PROLOGUE_TEMP2_REGNUM): Ditto.
+ 	(RISCV_PROLOGUE_TEMP2): Ditto.
+ 	* config/riscv/vector-iterators.md: New iterators.
+ 	* config/riscv/vector.md (*mov<mode>): Fix it for register spilling.
+ 	(*mov<mode>_whole): New pattern.
+ 	(*mov<mode>_fract): New pattern.
+ 	(@pred_mov<mode>): Fix it for register spilling.
+ 
+ 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c/85487
+ 	* doc/cpp/pragmas.rst (Pragmas): Document region pragmas.
+ 
+ 2022-11-11  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/i386-builtin.def (BDESC): Add
+ 	OPTION_MASK_ISA2_PREFETCHI for prefetchi builtin.
+ 	* config/i386/i386-expand.cc (ix86_expand_builtin):
+ 	Add ISA check before emit_insn.
+ 	* config/i386/prfchiintrin.h: Add target for intrin.
+ 
+ 2022-11-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/99671
+ 	* tristate.h (tristate::is_unknown): New.
+ 
+ 2022-11-10  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
+ 	Add -Wanalyzer-deref-before-check.
+ 
+ 2022-11-10  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst:
+ 	Extend the description of -Wdangling-reference.
+ 
+ 2022-11-10  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/bfin/bfin.h (SLOW_SHORT_ACCESS): Delete.
+ 	* config/i386/i386.h (SLOW_SHORT_ACCESS): Delete.
+ 	* system.h: Poison SLOW_SHORT_ACCESS
+ 
+ 2022-11-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set_nonnegative): Remove NAN sign handling.
+ 	(range_tests_signed_zeros): Adjust test.
+ 
+ 2022-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84646
+ 	* tree-ssa-forwprop.cc (pass_forwprop::execute): Improve
+ 	copy propagation across PHIs.
+ 
+ 2022-11-10  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv-cores.def (RISCV_TUNE): Update
+ 	sifive-7-series to point to the sifive_7 pipeline description.
+ 
+ 2022-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84646
+ 	* tree-ssa-ccp.cc (set_lattice_value): Make sure we
+ 	allow a const -> copy transition and avoid using meet
+ 	in that case.
+ 
+ 2022-11-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/conf.py: Add newline at last line.
+ 	* doc/cppinternals/conf.py: Add newline at last line.
+ 	* doc/gcc/conf.py: Add newline at last line.
+ 	* doc/gccint/conf.py: Add newline at last line.
+ 	* doc/install/conf.py: Add newline at last line.
+ 
+ 2022-11-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-unswitch.cc (init_loop_unswitch_info): First collect
+ 	candidates and determine the outermost loop to unswitch.
+ 	(tree_ssa_unswitch_loops): First perform all guard hoisting,
+ 	then perform unswitching on innermost loop predicates.
+ 	(find_unswitching_predicates_for_bb): Keep track of the
+ 	outermost loop to unswitch.
+ 	(evaluate_bbs): Adjust exit test.
+ 	(tree_unswitch_single_loop): Dump whether we unswitched an outer
+ 	loop.
+ 	(tree_unswitch_loop): Remove assert we unswitch only innermost
+ 	loops.
+ 
+ 2022-11-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107585
+ 	PR target/107546
+ 	* config/i386/i386-expand.cc (ix86_expand_int_sse_cmp): Use
+ 	gen_int_mode rather than GEN_INT.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 	    Sinan  <sinan.lin@linux.alibaba.com>
+ 
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst:
+ 	Add missing variable name.
+ 
+ 2022-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-storage.cc (frange_storage_slot::get_frange): Clear
+ 	NAN if appropriate.
+ 	* value-range.cc (range_tests_floats): New test.
+ 
+ 2022-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (class foperator_plus): Remove op[12]_range.
+ 	(class foperator_minus): Same.
+ 
+ 2022-11-09  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	* gimple-array-bounds.cc (trailing_array): Replace
+ 	array_at_struct_end_p with new name and update comments.
+ 	* gimple-fold.cc (get_range_strlen_tree): Likewise.
+ 	* gimple-ssa-warn-restrict.cc (builtin_memref::builtin_memref):
+ 	Likewise.
+ 	* graphite-sese-to-poly.cc (bounds_are_valid): Likewise.
+ 	* tree-if-conv.cc (idx_within_array_bound): Likewise.
+ 	* tree-object-size.cc (addr_object_size): Likewise.
+ 	* tree-ssa-alias.cc (component_ref_to_zero_sized_trailing_array_p):
+ 	Likewise.
+ 	(stmt_kills_ref_p): Likewise.
+ 	* tree-ssa-loop-niter.cc (idx_infer_loop_bounds): Likewise.
+ 	* tree-ssa-strlen.cc (maybe_set_strlen_range): Likewise.
+ 	* tree.cc (array_at_struct_end_p): Rename to ...
+ 	(array_ref_flexible_size_p): ... this.
+ 	(component_ref_size): Replace array_at_struct_end_p with new name.
+ 	* tree.h (array_at_struct_end_p): Rename to ...
+ 	(array_ref_flexible_size_p): ... this.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Use new install URL.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst:
+ 	Use intersphinx link.
+ 	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
+ 	Use new URL.
+ 	* doc/gccint/source-tree-structure-and-build-system.rst: Use
+ 	intersphinx link.
+ 	* doc/install/host-target-specific-installation-notes-for-gcc.rst: Likewise.
+ 	* doc/install/installing-gcc.rst: Likewise.
+ 
+ 2022-11-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84646
+ 	* tree-ssa-threadbackward.cc (back_threader::maybe_register_path):
+ 	Remove premature cycle rejection.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/character-sets.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/conditional-syntax.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/conditional-uses.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/conditionals.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/deleted-code.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/diagnostics.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/environment-variables.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/alternatives-to-wrapper-ifndef.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/computed-includes.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/include-operation.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/include-syntax.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/once-only-headers.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/search-path.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/system-headers.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/header-files/wrapper-headers.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/implementation-defined-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/implementation-details.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/implementation-limits.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/index.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/initial-processing.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/invocation.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/line-control.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/concatenation.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/directives-within-macro-arguments.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/function-like-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/macro-arguments.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/macro-pitfalls.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/object-like-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/predefined-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/stringizing.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/undefining-and-redefining-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/macros/variadic-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/obsolete-features.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/other-directives.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/overview.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/pragmas.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/preprocessor-output.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/the-preprocessing-language.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/tokenization.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-lexical-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-miscellany.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-mode.rst:
+ 	Add trailing newline.
+ 	* doc/cpp/traditional-warnings.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/cppinternals.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/cpplib.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/files.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/index.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/internal-representation-of-macros.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/just-which-line-number-anyway.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/lexing-a-line.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/lexing-a-token.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/looking-for-a-function-like-macros-opening-parenthesis.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/macro-expansion-overview.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/marking-tokens-ineligible-for-future-expansion.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/multiple-include-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/overview.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/representation-of-line-numbers.rst:
+ 	Add trailing newline.
+ 	* doc/cppinternals/scanning-the-replacement-list-for-macros-to-expand.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/binary-compatibility.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c++-implementation-defined-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/architecture.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/arrays-and-pointers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/characters.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/declarators.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/environment.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/floating-point.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/hints.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/identifiers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/integers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/library-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/locale-specific-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/preprocessing-directives.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/qualifiers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/statements.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/c-implementation-defined-behavior/translation.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/conditionally-supported-behavior.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/contributing-to-gcc-development.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/contributors-to-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/exception-handling.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/backwards-compatibility.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-concepts.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/deprecated-features.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/function-multiversioning.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/restricting-pointer-aliasing.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/type-traits.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/vague-linkage.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c++-language/wheres-the-template.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/128-bit-integers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/additional-floating-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/alternate-keywords.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/an-inline-function-is-as-fast-as-a-macro.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/arithmetic-on-void-and-function-pointers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-length-zero.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-variable-length.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/attribute-syntax.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/binary-constants-using-the-0b-prefix.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-for-memory-model-aware-atomic-operations.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-to-perform-arithmetic-with-overflow-checking.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/c++-style-comments.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/case-ranges.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/cast-to-a-union-type.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/complex-numbers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/compound-literals.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/conditionals-with-omitted-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/constructing-function-calls.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/decimal-floating-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/aarch64-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/amd-gcn-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arc-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arm-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/avr-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/blackfin-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/bpf-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/c-sky-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/common-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/epiphany-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/h8-300-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/ia-64-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32c-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32r-d-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m68k-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mcore-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mep-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microblaze-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microsoft-windows-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mips-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/msp430-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nds32-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nios-ii-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nvidia-ptx-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/powerpc-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/risc-v-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rl78-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rx-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/s-390-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/sh-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/symbian-os-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/v850-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/visium-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/x86-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/xstormy16-function-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/designated-initializers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/determining-the-alignment-of-functions-types-or-variables.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/dollar-signs-in-identifier-names.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/double-word-integers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/enumerator-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/fixed-point-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/format-checks-specific-to-particular-target-machines.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/function-names-as-strings.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/getting-the-return-or-frame-address-of-a-function.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/half-precision-floating-point.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/hex-floats.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/how-to-use-inline-assembly-language-in-c-code.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/incomplete-enum-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/label-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/labels-as-values.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/legacy-sync-built-in-functions-for-atomic-memory-access.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/locally-declared-labels.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/macros-with-a-variable-number-of-arguments.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/mixed-declarations-labels-and-code.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/named-address-spaces.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/nested-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-constant-initializers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-lvalue-arrays-may-have-subscripts.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/nonlocal-gotos.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/object-size-checking-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/other-built-in-functions-provided-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointer-arguments-in-variadic-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointers-to-arrays-with-qualifiers-work-as-expected.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/pragmas-accepted-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/prototypes-and-old-style-function-definitions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/referring-to-a-type-with-typeof.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/slightly-looser-rules-for-escaped-newlines.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-types.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-variables.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/statement-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/statements-and-declarations-in-expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/structures-with-no-members.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/support-for-offsetof.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/aarch64-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/alpha-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/altera-nios-ii-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-simd-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-armv8-m-security-extensions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-c-language-extensions-acle.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-floating-point-status-and-control-intrinsics.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-iwmmxt-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/avr-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/basic-powerpc-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/blackfin-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/bpf-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/fr-v-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-dsp-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-loongson-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-paired-single-support.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-simd-architecture-msa-support.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/msp430-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/nds32-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/other-mips-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/picochip-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-altivec-vsx-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-atomic-memory-operation-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-hardware-transactional-memory-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-matrix-multiply-assist-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/pru-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/risc-v-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/rx-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/s-390-system-z-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sh-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sparc-vis-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/ti-c6x-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-control-flow-protection-intrinsics.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-transactional-memory-intrinsics.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/the-character-esc-in-constants.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/thread-local-storage.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/unnamed-structure-and-union-fields.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/using-vector-instructions-through-built-in-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/when-is-a-volatile-object-accessed.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/extensions-to-the-c-language-family/x86-specific-memory-model-extensions-for-transactional-memory.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/funding.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/compiling-c++-programs.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/description.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/environment-variables-affecting-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/gcc-developer-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/adapteva-epiphany-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/amd-gcn-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arm-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/blackfin-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c-sky-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c6x-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/cris-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/darwin-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/dec-alpha-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ebpf-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/fr30-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/frv-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ft32-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/gnu-linux-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/h8-300-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/hppa-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ia-64-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ibm-rs-6000-and-powerpc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/lm32-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/loongarch-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32c-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32r-d-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m680x0-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mcore-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mep-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/microblaze-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mips-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mmix-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mn10300-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/moxie-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/msp430-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nds32-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nios-ii-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nvidia-ptx-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/openrisc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/options-for-system-v.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pdp-11-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/picochip-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/powerpc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pru-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/risc-v-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rl78-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rx-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/s-390-and-zseries-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/score-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sh-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/solaris-2-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sparc-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/v850-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vax-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/visium-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vms-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vxworks-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-windows-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xstormy16-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xtensa-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/zseries-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-c-dialect.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-objective-c-and-objective-c++-dialects.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-preprocessor.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-code-generation-conventions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-debugging-your-program.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-directory-search.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-for-linking.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-that-control-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/passing-options-to-the-assembler.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/program-instrumentation-options.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/specifying-subprocesses-and-the-switches-to-pass-to-them.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc-command-options/using-precompiled-headers.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov-dump.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov-tool.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/brief-description-of-gcov-data-files.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/data-file-relocation-to-support-cross-profiling.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/introduction-to-gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/invoking-gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/profiling-and-test-coverage-in-freestanding-environments.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gcov/using-gcov-with-gcc-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/general-public-license-3.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/compatibilityalias.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/constant-string-objects.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/exceptions.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/fast-enumeration.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/garbage-collection.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/gnu-objective-c-runtime-api.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/load-executing-code-before-main.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/synchronization.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu-objective-c-features/type-encoding.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/gnu.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/have-you-found-a-bug.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/how-and-where-to-report-bugs.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/how-to-get-help-with-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/index.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/fixed-header-files.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/interoperation.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/standard-libraries.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/c++-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/c-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/d-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/go-language.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/lto-dump.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/programming-languages-supported-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gcc/reporting-bugs.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/alias-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/annotations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/memory-model.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/static-single-assignment.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/data-dependency-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/iv-analysis-on-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-closed-ssa-form.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-manipulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-querying.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-representation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/number-of-iterations-analysis.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analysis-and-representation-of-loops/scalar-evolutions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/analyzer-internals.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/collect2.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/contributing-to-gcc-development.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/contributors-to-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/basic-blocks.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/edges.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/liveness-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/maintaining-the-cfg.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/control-flow-graph/profile-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/debugging-the-analyzer.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/funding.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gcc-and-portability.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/general-public-license-3.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/attributes-in-trees.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/c-and-c++-trees.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/declarations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/deficiencies.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/functions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/language-dependent-trees.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/overview.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/statements.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/generic/types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple-api.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/adding-a-new-gimple-statement-code.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/class-hierarchy-of-gimple-statements.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/exception-handling.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/gimple-instruction-set.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/gimple-sequences.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/manipulating-gimple-statements.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/sequence-iterators.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/statement-and-operand-traversals.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/temporaries.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-representation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleasm.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleassign.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplebind.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecall.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecatch.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecond.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpledebug.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleehfilter.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplegoto.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplelabel.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplenop.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicload.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicstore.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcontinue.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcritical.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompfor.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompmaster.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompordered.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompparallel.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompreturn.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsection.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsections.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsingle.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplephi.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleresx.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplereturn.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleswitch.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpletry.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplewithcleanupexpr.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/guidelines-for-diagnostics.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/guidelines-for-options.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-common.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-configuration.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-filesystem.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-makefile-fragments.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/host-misc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/index.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/interfacing-to-gcc-output.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/introduction.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/language-front-ends-in-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/design-overview.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/internal-flags-controlling-lto1.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/lto-file-sections.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/using-summary-information-in-ipa-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/link-time-optimization/whole-program-assumptions-linker-plugin-and-symbol-visibilities.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/c-statements-for-assembler-output.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/canonicalization-of-instructions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/conditional-execution.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/constant-definitions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-how-to-split-instructions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-jump-instruction-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-looping-instruction-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/defining-rtl-sequences-for-code-generation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/everything-about-instruction-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/example-of-defineinsn.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/including-patterns-in-machine-descriptions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/instruction-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/interdependence-of-patterns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/iterators.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/machine-specific-peephole-optimizers.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/operand-constraints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/output-templates-and-operand-substitution.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/overview-of-how-the-machine-description-is-used.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/predicates.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/rtl-template.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/rtl-templates-transformations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/standard-pattern-names-for-generation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/machine-descriptions/when-the-order-of-patterns-matters.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/makefile-fragments.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/match-and-simplify.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/how-to-invoke-the-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/marking-roots-for-the-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/source-files-containing-type-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/support-for-inheritance.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/support-for-user-provided-gc-marking-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/the-inside-of-a-gty.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/memory-management-and-type-information/troubleshooting-the-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/option-file-format.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/option-properties.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/option-specification-files.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/gimplification-pass.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/inter-procedural-optimization-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/optimization-info.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/parsing-pass.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/pass-manager.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/rtl-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/passes-and-files-of-the-compiler/tree-ssa-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/building-gcc-plugins.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/controlling-which-passes-are-being-run.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/giving-information-about-a-plugin.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/interacting-with-the-gcc-garbage-collector.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/interacting-with-the-pass-manager.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/keeping-track-of-available-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/loading-plugins.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/plugin-api.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/recording-information-about-pass-execution.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/plugins/registering-custom-attributes-or-pragmas.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/access-to-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/access-to-special-operands.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/assembler-instructions-as-expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/bit-fields.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/comparison-operations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/constant-expression-types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/conversions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/declarations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/embedded-side-effects-on-addresses.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/flags-in-an-rtl-expression.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/insns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/machine-modes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/on-the-side-ssa-form-for-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/reading-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/registers-and-memory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-classes-and-formats.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-expressions-for-arithmetic.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-object-types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/rtl-representation-of-function-call-insns.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/side-effect-expressions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/structure-sharing-assumptions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/variable-location-debug-information-in-rtl.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/rtl-representation/vector-operations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/alignment-of-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/arithmetic-on-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/comparisons-involving-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/computing-bounds-on-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/consequences-of-using-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/converting-polyints.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/guidelines-for-using-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/miscellaneous-polyint-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/overview-of-polyint.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/configure-terms-and-history.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-language-front-end.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-target-back-end.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/build-system-in-the-gcc-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/configuration-in-the-gcc-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/headers-installed-by-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/library-source-files-and-headers-under-the-gcc-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/makefile-targets.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/subdirectories-of-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/source-tree-structure-and-build-system/top-level-source-directory.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/standard-header-file-directories.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/static-analyzer.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/controlling-debugging-information-format.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/cross-compilation-and-floating-point.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-coprocessor-specifics-for-mips-targets.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-data-structures-for-per-function-information.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-alignment.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/how-initialization-functions-are-handled.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-uninitialized-variables.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/implicit-calls-to-library-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/layout-of-source-language-data-types.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/position-independent-code.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/register-usage.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/caller-saves-register-allocation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/exception-handling-support.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/support-for-nested-functions.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-macros/the-global-targetm-variable.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/target-makefile-fragments.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/ada-language-testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/c-language-testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/commands-for-use-in-dg-final.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/features-for-dg-add-options.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/keywords-describing-target-attributes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/selecting-targets-to-which-a-test-applies.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/syntax-and-descriptions-of-test-directives.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/variants-of-dg-require-support.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/idioms-used-in-testsuite-code.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-binary-compatibility.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-gcov.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-gimple-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-link-time-optimizations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-profile-directed-optimizations.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-testing-rtl-passes.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/testsuites/support-for-torture-testing-using-multiple-options.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/language-independent-routines-for-exception-handling.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/miscellaneous-runtime-library-routines.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-decimal-floating-point-emulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-fixed-point-fractional-emulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-floating-point-emulation.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-integer-arithmetic.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/the-language.rst:
+ 	Add trailing newline.
+ 	* doc/gccint/user-experience-guidelines.rst:
+ 	Add trailing newline.
+ 	* doc/install/binaries.rst:
+ 	Add trailing newline.
+ 	* doc/install/building.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-a-cross-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-a-native-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-in-parallel.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-the-ada-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-the-d-compiler.rst:
+ 	Add trailing newline.
+ 	* doc/install/building/building-with-profile-feedback.rst:
+ 	Add trailing newline.
+ 	* doc/install/configuration.rst:
+ 	Add trailing newline.
+ 	* doc/install/copyright.rst:
+ 	Add trailing newline.
+ 	* doc/install/downloading-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/install/final-installation.rst:
+ 	Add trailing newline.
+ 	* doc/install/gnu-free-documentation-license.rst:
+ 	Add trailing newline.
+ 	* doc/install/host-target-specific-installation-notes-for-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/install/how-can-you-run-the-testsuite-on-selected-tests.rst:
+ 	Add trailing newline.
+ 	* doc/install/how-to-interpret-test-results.rst:
+ 	Add trailing newline.
+ 	* doc/install/index.rst:
+ 	Add trailing newline.
+ 	* doc/install/indices-and-tables.rst:
+ 	Add trailing newline.
+ 	* doc/install/installing-gcc.rst:
+ 	Add trailing newline.
+ 	* doc/install/passing-options-and-running-multiple-testsuites.rst:
+ 	Add trailing newline.
+ 	* doc/install/prerequisites.rst:
+ 	Add trailing newline.
+ 	* doc/install/submitting-test-results.rst:
+ 	Add trailing newline.
+ 	* doc/install/testing.rst:
+ 	Add trailing newline.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.cc (get_option_html_page): Port to sphinx URLs.
+ 	(get_option_url): Likewise.
+ 	(test_get_option_html_page): Likewise.
+ 
+ 2022-11-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107569
+ 	* range-op-float.cc (foperator_abs::op1_range): Clear NaNs
+ 	from the negatives frange before unioning it into r.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Add vpath default for .rst files.
+ 	* config/avr/avr-devices.cc: For port RST.
+ 	* config/avr/avr-mcus.def: Update path.
+ 	* config/avr/gen-avr-mmcu-texi.cc: Moved to...
+ 	* config/avr/gen-avr-mmcu-rst.cc: ...here.
+ 	* config/avr/t-avr: Update to rst.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-mmcu.rst: Re-generate.
+ 
+ 2022-11-09  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Add BSWAP.
+ 
+ 2022-11-09  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_emit_int_compare):
+ 	Avoid signed overflow.
+ 
+ 2022-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_plus::op1_range): New.
+ 	(foperator_plus::op2_range): New.
+ 	(foperator_minus::op1_range): New.
+ 	(foperator_minus::op2_range): New.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Support installation if sphinx-build is missing.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
+ 	Port to RST.
+ 	* doc/gccint/target-macros/storage-layout.rst: Likewise.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst: Sync with master.
+ 	* doc/gcc/gcc-command-options/option-summary.rst: Likewise.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
+ 	Do not include tm.rst.in.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/run-time-target-specification.rst:
+ 	Likewise.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst:
+ 	Fix cross manual refs.
+ 	* doc/gcc/language-standards-supported-by-gcc/references-for-other-languages.rst:
+ 	Likewise.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Support --with-sphinx-build.
+ 	* configure.ac:
+ 	* configure: Regenerate.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* target.def: Use proper lexers for target macros.
+ 	* doc/gccint/target-macros/tm.rst.in: Re-generate.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/analyzer.texi: Removed.
+ 	* doc/avr-mmcu.texi: Removed.
+ 	* doc/bugreport.texi: Removed.
+ 	* doc/cfg.texi: Removed.
+ 	* doc/collect2.texi: Removed.
+ 	* doc/compat.texi: Removed.
+ 	* doc/configfiles.texi: Removed.
+ 	* doc/configterms.texi: Removed.
+ 	* doc/contrib.texi: Removed.
+ 	* doc/contribute.texi: Removed.
+ 	* doc/cpp.texi: Removed.
+ 	* doc/cppdiropts.texi: Removed.
+ 	* doc/cppenv.texi: Removed.
+ 	* doc/cppinternals.texi: Removed.
+ 	* doc/cppopts.texi: Removed.
+ 	* doc/cppwarnopts.texi: Removed.
+ 	* doc/extend.texi: Removed.
+ 	* doc/fragments.texi: Removed.
+ 	* doc/frontends.texi: Removed.
+ 	* doc/gcc.texi: Removed.
+ 	* doc/gccint.texi: Removed.
+ 	* doc/gcov-dump.texi: Removed.
+ 	* doc/gcov-tool.texi: Removed.
+ 	* doc/gcov.texi: Removed.
+ 	* doc/generic.texi: Removed.
+ 	* doc/gimple.texi: Removed.
+ 	* doc/gnu.texi: Removed.
+ 	* doc/gty.texi: Removed.
+ 	* doc/headerdirs.texi: Removed.
+ 	* doc/hostconfig.texi: Removed.
+ 	* doc/implement-c.texi: Removed.
+ 	* doc/implement-cxx.texi: Removed.
+ 	* doc/include/fdl.texi: Removed.
+ 	* doc/include/funding.texi: Removed.
+ 	* doc/include/gcc-common.texi: Removed.
+ 	* doc/include/gpl_v3.texi: Removed.
+ 	* doc/install.texi: Removed.
+ 	* doc/interface.texi: Removed.
+ 	* doc/invoke.texi: Removed.
+ 	* doc/languages.texi: Removed.
+ 	* doc/libgcc.texi: Removed.
+ 	* doc/loop.texi: Removed.
+ 	* doc/lto-dump.texi: Removed.
+ 	* doc/lto.texi: Removed.
+ 	* doc/makefile.texi: Removed.
+ 	* doc/match-and-simplify.texi: Removed.
+ 	* doc/md.texi: Removed.
+ 	* doc/objc.texi: Removed.
+ 	* doc/optinfo.texi: Removed.
+ 	* doc/options.texi: Removed.
+ 	* doc/passes.texi: Removed.
+ 	* doc/plugins.texi: Removed.
+ 	* doc/poly-int.texi: Removed.
+ 	* doc/portability.texi: Removed.
+ 	* doc/rtl.texi: Removed.
+ 	* doc/service.texi: Removed.
+ 	* doc/sourcebuild.texi: Removed.
+ 	* doc/standards.texi: Removed.
+ 	* doc/tm.texi: Removed.
+ 	* doc/tree-ssa.texi: Removed.
+ 	* doc/trouble.texi: Removed.
+ 	* doc/ux.texi: Removed.
+ 	* doc/tm.texi.in: Removed.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/tm.rst.in: New file.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Support Sphinx based documentation.
+ 	* configure: Regenerate.
+ 	* configure.ac: Support Sphinx based documentation.
+ 	* genhooks.cc (struct s_hook): Emit tm.rst.in file.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gccint/target-macros/adding-support-for-named-address-spaces.rst: Use tm.rst.in file.
+ 	* doc/gccint/target-macros/addressing-modes.rst: Likewise.
+ 	* doc/gccint/target-macros/adjusting-the-instruction-scheduler.rst: Likewise.
+ 	* doc/gccint/target-macros/anchored-addresses.rst: Likewise.
+ 	* doc/gccint/target-macros/c++-abi-parameters.rst: Likewise.
+ 	* doc/gccint/target-macros/condition-code-status.rst: Likewise.
+ 	* doc/gccint/target-macros/controlling-debugging-information-format.rst: Likewise.
+ 	* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst: Likewise.
+ 	* doc/gccint/target-macros/d-abi-parameters.rst: Likewise.
+ 	* doc/gccint/target-macros/defining-target-specific-uses-of-attribute.rst: Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-dispatch-tables.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/describing-relative-costs-of-operations.rst: Likewise.
+ 	* doc/gccint/target-macros/dividing-the-output-into-sections-texts-data.rst: Likewise.
+ 	* doc/gccint/target-macros/emulating-tls.rst: Likewise.
+ 	* doc/gccint/target-macros/implementing-the-varargs-macros.rst: Likewise.
+ 	* doc/gccint/target-macros/implicit-calls-to-library-routines.rst: Likewise.
+ 	* doc/gccint/target-macros/layout-of-source-language-data-types.rst: Likewise.
+ 	* doc/gccint/target-macros/miscellaneous-parameters.rst: Likewise.
+ 	* doc/gccint/target-macros/mode-switching-instructions.rst: Likewise.
+ 	* doc/gccint/target-macros/parameters-for-precompiled-header-validity-checking.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/register-classes.rst: Likewise.
+ 	* doc/gccint/target-macros/register-usage.rst: Likewise.
+ 	* doc/gccint/target-macros/run-time-target-specification.rst: Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/eliminating-frame-pointer-and-arg-pointer.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/function-entry-and-exit.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/generating-code-for-profiling.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-large-values-are-returned.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-scalar-function-values-are-returned.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/miscellaneous-register-hooks.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/permitting-tail-calls.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/shrink-wrapping-separate-components.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/specifying-how-stack-checking-is-done.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/stack-smashing-protection.rst:
+ 	Likewise.
+ 	* doc/gccint/target-macros/storage-layout.rst: Likewise.
+ 	* doc/gccint/target-macros/support-for-nested-functions.rst: Likewise.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/common-target.def: Port to RST.
+ 	* target.def: Port to RST.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/cpp/character-sets.rst: New file.
+ 	* doc/cpp/conditional-syntax.rst: New file.
+ 	* doc/cpp/conditional-uses.rst: New file.
+ 	* doc/cpp/conditionals.rst: New file.
+ 	* doc/cpp/conf.py: New file.
+ 	* doc/cpp/copyright.rst: New file.
+ 	* doc/cpp/deleted-code.rst: New file.
+ 	* doc/cpp/diagnostics.rst: New file.
+ 	* doc/cpp/environment-variables.rst: New file.
+ 	* doc/cpp/gnu-free-documentation-license.rst: New file.
+ 	* doc/cpp/header-files.rst: New file.
+ 	* doc/cpp/header-files/alternatives-to-wrapper-ifndef.rst: New file.
+ 	* doc/cpp/header-files/computed-includes.rst: New file.
+ 	* doc/cpp/header-files/include-operation.rst: New file.
+ 	* doc/cpp/header-files/include-syntax.rst: New file.
+ 	* doc/cpp/header-files/once-only-headers.rst: New file.
+ 	* doc/cpp/header-files/search-path.rst: New file.
+ 	* doc/cpp/header-files/system-headers.rst: New file.
+ 	* doc/cpp/header-files/wrapper-headers.rst: New file.
+ 	* doc/cpp/implementation-defined-behavior.rst: New file.
+ 	* doc/cpp/implementation-details.rst: New file.
+ 	* doc/cpp/implementation-limits.rst: New file.
+ 	* doc/cpp/index.rst: New file.
+ 	* doc/cpp/indices-and-tables.rst: New file.
+ 	* doc/cpp/initial-processing.rst: New file.
+ 	* doc/cpp/invocation.rst: New file.
+ 	* doc/cpp/line-control.rst: New file.
+ 	* doc/cpp/macros.rst: New file.
+ 	* doc/cpp/macros/concatenation.rst: New file.
+ 	* doc/cpp/macros/directives-within-macro-arguments.rst: New file.
+ 	* doc/cpp/macros/function-like-macros.rst: New file.
+ 	* doc/cpp/macros/macro-arguments.rst: New file.
+ 	* doc/cpp/macros/macro-pitfalls.rst: New file.
+ 	* doc/cpp/macros/object-like-macros.rst: New file.
+ 	* doc/cpp/macros/predefined-macros.rst: New file.
+ 	* doc/cpp/macros/stringizing.rst: New file.
+ 	* doc/cpp/macros/undefining-and-redefining-macros.rst: New file.
+ 	* doc/cpp/macros/variadic-macros.rst: New file.
+ 	* doc/cpp/obsolete-features.rst: New file.
+ 	* doc/cpp/other-directives.rst: New file.
+ 	* doc/cpp/overview.rst: New file.
+ 	* doc/cpp/pragmas.rst: New file.
+ 	* doc/cpp/preprocessor-output.rst: New file.
+ 	* doc/cpp/the-preprocessing-language.rst: New file.
+ 	* doc/cpp/tokenization.rst: New file.
+ 	* doc/cpp/traditional-lexical-analysis.rst: New file.
+ 	* doc/cpp/traditional-macros.rst: New file.
+ 	* doc/cpp/traditional-miscellany.rst: New file.
+ 	* doc/cpp/traditional-mode.rst: New file.
+ 	* doc/cpp/traditional-warnings.rst: New file.
+ 	* doc/cppinternals/conf.py: New file.
+ 	* doc/cppinternals/copyright.rst: New file.
+ 	* doc/cppinternals/cppinternals.rst: New file.
+ 	* doc/cppinternals/cpplib.rst: New file.
+ 	* doc/cppinternals/files.rst: New file.
+ 	* doc/cppinternals/index.rst: New file.
+ 	* doc/cppinternals/indices-and-tables.rst: New file.
+ 	* doc/cppinternals/internal-representation-of-macros.rst: New file.
+ 	* doc/cppinternals/just-which-line-number-anyway.rst: New file.
+ 	* doc/cppinternals/lexing-a-line.rst: New file.
+ 	* doc/cppinternals/lexing-a-token.rst: New file.
+ 	* doc/cppinternals/looking-for-a-function-like-macros-opening-parenthesis.rst: New file.
+ 	* doc/cppinternals/macro-expansion-overview.rst: New file.
+ 	* doc/cppinternals/marking-tokens-ineligible-for-future-expansion.rst: New file.
+ 	* doc/cppinternals/multiple-include-optimization.rst: New file.
+ 	* doc/cppinternals/overview.rst: New file.
+ 	* doc/cppinternals/representation-of-line-numbers.rst: New file.
+ 	* doc/cppinternals/scanning-the-replacement-list-for-macros-to-expand.rst: New file.
+ 	* doc/gcc/binary-compatibility.rst: New file.
+ 	* doc/gcc/c++-implementation-defined-behavior.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/architecture.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/arrays-and-pointers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/characters.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/declarators.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/environment.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/floating-point.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/hints.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/identifiers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/integers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/library-functions.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/locale-specific-behavior.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/preprocessing-directives.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/qualifiers.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/statements.rst: New file.
+ 	* doc/gcc/c-implementation-defined-behavior/structures-unions-enumerations-and-bit-fields.rst:
+ 	New file.
+ 	* doc/gcc/c-implementation-defined-behavior/translation.rst: New file.
+ 	* doc/gcc/conditionally-supported-behavior.rst: New file.
+ 	* doc/gcc/conf.py: New file.
+ 	* doc/gcc/contributing-to-gcc-development.rst: New file.
+ 	* doc/gcc/contributors-to-gcc.rst: New file.
+ 	* doc/gcc/copyright.rst: New file.
+ 	* doc/gcc/exception-handling.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/backwards-compatibility.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-concepts.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-interface-and-implementation-pragmas.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/c++-specific-variable-function-and-type-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/deprecated-features.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/extracting-the-function-pointer-from-a-bound-pointer-to-member-function.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/function-multiversioning.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/restricting-pointer-aliasing.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/type-traits.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/vague-linkage.rst: New file.
+ 	* doc/gcc/extensions-to-the-c++-language/when-is-a-volatile-c++-object-accessed.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c++-language/wheres-the-template.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/128-bit-integers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/additional-floating-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/alternate-keywords.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/an-inline-function-is-as-fast-as-a-macro.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/arithmetic-on-void-and-function-pointers.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-length-zero.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/arrays-of-variable-length.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/attribute-syntax.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/binary-constants-using-the-0b-prefix.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-for-memory-model-aware-atomic-operations.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/built-in-functions-to-perform-arithmetic-with-overflow-checking.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/c++-style-comments.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/case-ranges.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/cast-to-a-union-type.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/complex-numbers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/compound-literals.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/conditionals-with-omitted-operands.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/constructing-function-calls.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/decimal-floating-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/aarch64-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/amd-gcn-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arc-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/arm-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/avr-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/blackfin-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/bpf-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/c-sky-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/common-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/epiphany-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/h8-300-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/ia-64-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32c-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m32r-d-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/m68k-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mcore-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mep-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microblaze-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/microsoft-windows-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/mips-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/msp430-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nds32-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nios-ii-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/nvidia-ptx-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/powerpc-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/risc-v-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rl78-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/rx-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/s-390-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/sh-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/symbian-os-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/v850-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/visium-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/x86-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/declaring-attributes-of-functions/xstormy16-function-attributes.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/designated-initializers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/determining-the-alignment-of-functions-types-or-variables.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/dollar-signs-in-identifier-names.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/double-word-integers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/enumerator-attributes.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/fixed-point-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/format-checks-specific-to-particular-target-machines.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/function-names-as-strings.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/getting-the-return-or-frame-address-of-a-function.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/half-precision-floating-point.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/hex-floats.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/how-to-use-inline-assembly-language-in-c-code.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/incomplete-enum-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/label-attributes.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/labels-as-values.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/legacy-sync-built-in-functions-for-atomic-memory-access.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/locally-declared-labels.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/macros-with-a-variable-number-of-arguments.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/mixed-declarations-labels-and-code.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/named-address-spaces.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/nested-functions.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-constant-initializers.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/non-lvalue-arrays-may-have-subscripts.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/nonlocal-gotos.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/object-size-checking-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/other-built-in-functions-provided-by-gcc.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointer-arguments-in-variadic-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/pointers-to-arrays-with-qualifiers-work-as-expected.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/pragmas-accepted-by-gcc.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/prototypes-and-old-style-function-definitions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/referring-to-a-type-with-typeof.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/slightly-looser-rules-for-escaped-newlines.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-types.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/specifying-attributes-of-variables.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/statement-attributes.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/statements-and-declarations-in-expressions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/structures-with-no-members.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/support-for-offsetof.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/aarch64-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/alpha-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/altera-nios-ii-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arc-simd-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-armv8-m-security-extensions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-c-language-extensions-acle.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-floating-point-status-and-control-intrinsics.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/arm-iwmmxt-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/avr-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/basic-powerpc-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/blackfin-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/bpf-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/fr-v-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-dsp-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-loongson-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-paired-single-support.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/mips-simd-architecture-msa-support.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/msp430-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/nds32-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/other-mips-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/picochip-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-altivec-vsx-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-atomic-memory-operation-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-hardware-transactional-memory-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/powerpc-matrix-multiply-assist-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/pru-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/risc-v-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/rx-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/s-390-system-z-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sh-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/sparc-vis-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/ti-c6x-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-control-flow-protection-intrinsics.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/target-builtins/x86-transactional-memory-intrinsics.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/the-character-esc-in-constants.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/thread-local-storage.rst: New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/unnamed-structure-and-union-fields.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/using-vector-instructions-through-built-in-functions.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/when-is-a-volatile-object-accessed.rst:
+ 	New file.
+ 	* doc/gcc/extensions-to-the-c-language-family/x86-specific-memory-model-extensions-for-transactional-memory.rst:
+ 	New file.
+ 	* doc/gcc/funding.rst: New file.
+ 	* doc/gcc/gcc-command-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/c++-modules.rst: New file.
+ 	* doc/gcc/gcc-command-options/compiling-c++-programs.rst: New file.
+ 	* doc/gcc/gcc-command-options/description.rst: New file.
+ 	* doc/gcc/gcc-command-options/environment-variables-affecting-gcc.rst: New file.
+ 	* doc/gcc/gcc-command-options/gcc-developer-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/aarch64-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/adapteva-epiphany-options.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/amd-gcn-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/arm-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-mmcu.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/avr-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/blackfin-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c-sky-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/c6x-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/cris-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/darwin-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/dec-alpha-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ebpf-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/fr30-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/frv-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ft32-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/gnu-linux-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/h8-300-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/hppa-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ia-64-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/ibm-rs-6000-and-powerpc-options.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/lm32-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/loongarch-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32c-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m32r-d-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/m680x0-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mcore-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mep-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/microblaze-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mips-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mmix-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/mn10300-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/moxie-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/msp430-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nds32-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nios-ii-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/nvidia-ptx-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/openrisc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/options-for-system-v.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pdp-11-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/picochip-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/powerpc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/pru-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/risc-v-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rl78-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/rx-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/s-390-and-zseries-options.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/score-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sh-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/solaris-2-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/sparc-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/v850-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vax-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/visium-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vms-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/vxworks-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/x86-windows-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xstormy16-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/xtensa-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/machine-dependent-options/zseries-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/option-summary.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-c++-dialect.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-c-dialect.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-objective-c-and-objective-c++-dialects.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-kind-of-output.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-controlling-the-preprocessor.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-code-generation-conventions.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-debugging-your-program.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-directory-search.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-for-linking.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-that-control-optimization.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-that-control-static-analysis.rst: New file.
+ 	* doc/gcc/gcc-command-options/options-to-control-diagnostic-messages-formatting.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/options-to-request-or-suppress-warnings.rst: New file.
+ 	* doc/gcc/gcc-command-options/passing-options-to-the-assembler.rst: New file.
+ 	* doc/gcc/gcc-command-options/program-instrumentation-options.rst: New file.
+ 	* doc/gcc/gcc-command-options/specifying-subprocesses-and-the-switches-to-pass-to-them.rst:
+ 	New file.
+ 	* doc/gcc/gcc-command-options/using-precompiled-headers.rst: New file.
+ 	* doc/gcc/gcc.rst: New file.
+ 	* doc/gcc/gcov-dump.rst: New file.
+ 	* doc/gcc/gcov-tool.rst: New file.
+ 	* doc/gcc/gcov.rst: New file.
+ 	* doc/gcc/gcov/brief-description-of-gcov-data-files.rst: New file.
+ 	* doc/gcc/gcov/data-file-relocation-to-support-cross-profiling.rst: New file.
+ 	* doc/gcc/gcov/introduction-to-gcov.rst: New file.
+ 	* doc/gcc/gcov/invoking-gcov.rst: New file.
+ 	* doc/gcc/gcov/profiling-and-test-coverage-in-freestanding-environments.rst: New file.
+ 	* doc/gcc/gcov/using-gcov-with-gcc-optimization.rst: New file.
+ 	* doc/gcc/general-public-license-3.rst: New file.
+ 	* doc/gcc/gnu-free-documentation-license.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/compatibilityalias.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/constant-string-objects.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/exceptions.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/fast-enumeration.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/garbage-collection.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/gnu-objective-c-runtime-api.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/load-executing-code-before-main.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/messaging-with-the-gnu-objective-c-runtime.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/synchronization.rst: New file.
+ 	* doc/gcc/gnu-objective-c-features/type-encoding.rst: New file.
+ 	* doc/gcc/gnu.rst: New file.
+ 	* doc/gcc/have-you-found-a-bug.rst: New file.
+ 	* doc/gcc/how-and-where-to-report-bugs.rst: New file.
+ 	* doc/gcc/how-to-get-help-with-gcc.rst: New file.
+ 	* doc/gcc/index.rst: New file.
+ 	* doc/gcc/indices-and-tables.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/actual-bugs-we-havent-fixed-yet.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/certain-changes-we-dont-want-to-make.rst:
+ 	New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/common-misunderstandings-with-gnu-c.rst:
+ 	New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/disappointments-and-misunderstandings.rst:
+ 	New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/fixed-header-files.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/incompatibilities-of-gcc.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/interoperation.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/standard-libraries.rst: New file.
+ 	* doc/gcc/known-causes-of-trouble-with-gcc/warning-messages-and-error-messages.rst:
+ 	New file.
+ 	* doc/gcc/language-standards-supported-by-gcc.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/c++-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/c-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/d-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/go-language.rst: New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/objective-c-and-objective-c++-languages.rst:
+ 	New file.
+ 	* doc/gcc/language-standards-supported-by-gcc/references-for-other-languages.rst: New file.
+ 	* doc/gcc/lto-dump.rst: New file.
+ 	* doc/gcc/programming-languages-supported-by-gcc.rst: New file.
+ 	* doc/gcc/reporting-bugs.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/alias-analysis.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/annotations.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/memory-model.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/ssa-operands.rst: New file.
+ 	* doc/gccint/analysis-and-optimization-of-gimple-tuples/static-single-assignment.rst:
+ 	New file.
+ 	* doc/gccint/analysis-and-representation-of-loops.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/data-dependency-analysis.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/iv-analysis-on-rtl.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-closed-ssa-form.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-manipulation.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-querying.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/loop-representation.rst: New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/number-of-iterations-analysis.rst:
+ 	New file.
+ 	* doc/gccint/analysis-and-representation-of-loops/scalar-evolutions.rst: New file.
+ 	* doc/gccint/analyzer-internals.rst: New file.
+ 	* doc/gccint/collect2.rst: New file.
+ 	* doc/gccint/conf.py: New file.
+ 	* doc/gccint/contributing-to-gcc-development.rst: New file.
+ 	* doc/gccint/contributors-to-gcc.rst: New file.
+ 	* doc/gccint/control-flow-graph.rst: New file.
+ 	* doc/gccint/control-flow-graph/basic-blocks.rst: New file.
+ 	* doc/gccint/control-flow-graph/edges.rst: New file.
+ 	* doc/gccint/control-flow-graph/liveness-information.rst: New file.
+ 	* doc/gccint/control-flow-graph/maintaining-the-cfg.rst: New file.
+ 	* doc/gccint/control-flow-graph/profile-information.rst: New file.
+ 	* doc/gccint/copyright.rst: New file.
+ 	* doc/gccint/debugging-the-analyzer.rst: New file.
+ 	* doc/gccint/funding.rst: New file.
+ 	* doc/gccint/gcc-and-portability.rst: New file.
+ 	* doc/gccint/general-public-license-3.rst: New file.
+ 	* doc/gccint/generic.rst: New file.
+ 	* doc/gccint/generic/attributes-in-trees.rst: New file.
+ 	* doc/gccint/generic/c-and-c++-trees.rst: New file.
+ 	* doc/gccint/generic/declarations.rst: New file.
+ 	* doc/gccint/generic/deficiencies.rst: New file.
+ 	* doc/gccint/generic/expressions.rst: New file.
+ 	* doc/gccint/generic/functions.rst: New file.
+ 	* doc/gccint/generic/language-dependent-trees.rst: New file.
+ 	* doc/gccint/generic/overview.rst: New file.
+ 	* doc/gccint/generic/statements.rst: New file.
+ 	* doc/gccint/generic/types.rst: New file.
+ 	* doc/gccint/gimple-api.rst: New file.
+ 	* doc/gccint/gimple.rst: New file.
+ 	* doc/gccint/gimple/adding-a-new-gimple-statement-code.rst: New file.
+ 	* doc/gccint/gimple/class-hierarchy-of-gimple-statements.rst: New file.
+ 	* doc/gccint/gimple/exception-handling.rst: New file.
+ 	* doc/gccint/gimple/gimple-instruction-set.rst: New file.
+ 	* doc/gccint/gimple/gimple-sequences.rst: New file.
+ 	* doc/gccint/gimple/manipulating-gimple-statements.rst: New file.
+ 	* doc/gccint/gimple/operands.rst: New file.
+ 	* doc/gccint/gimple/sequence-iterators.rst: New file.
+ 	* doc/gccint/gimple/statement-and-operand-traversals.rst: New file.
+ 	* doc/gccint/gimple/temporaries.rst: New file.
+ 	* doc/gccint/gimple/tuple-representation.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleasm.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleassign.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplebind.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecall.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecatch.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplecond.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpledebug.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleehfilter.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplegoto.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplelabel.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplenop.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicload.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompatomicstore.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcontinue.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompcritical.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompfor.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompmaster.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompordered.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompparallel.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompreturn.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsection.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsections.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleompsingle.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplephi.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleresx.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplereturn.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpleswitch.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimpletry.rst: New file.
+ 	* doc/gccint/gimple/tuple-specific-accessors/gimplewithcleanupexpr.rst: New file.
+ 	* doc/gccint/gnu-free-documentation-license.rst: New file.
+ 	* doc/gccint/guidelines-for-diagnostics.rst: New file.
+ 	* doc/gccint/guidelines-for-options.rst: New file.
+ 	* doc/gccint/host-common.rst: New file.
+ 	* doc/gccint/host-configuration.rst: New file.
+ 	* doc/gccint/host-filesystem.rst: New file.
+ 	* doc/gccint/host-makefile-fragments.rst: New file.
+ 	* doc/gccint/host-misc.rst: New file.
+ 	* doc/gccint/index.rst: New file.
+ 	* doc/gccint/indices-and-tables.rst: New file.
+ 	* doc/gccint/interfacing-to-gcc-output.rst: New file.
+ 	* doc/gccint/introduction.rst: New file.
+ 	* doc/gccint/language-front-ends-in-gcc.rst: New file.
+ 	* doc/gccint/link-time-optimization.rst: New file.
+ 	* doc/gccint/link-time-optimization/design-overview.rst: New file.
+ 	* doc/gccint/link-time-optimization/internal-flags-controlling-lto1.rst: New file.
+ 	* doc/gccint/link-time-optimization/lto-file-sections.rst: New file.
+ 	* doc/gccint/link-time-optimization/using-summary-information-in-ipa-passes.rst: New file.
+ 	* doc/gccint/link-time-optimization/whole-program-assumptions-linker-plugin-and-symbol-visibilities.rst:
+ 	New file.
+ 	* doc/gccint/machine-descriptions.rst: New file.
+ 	* doc/gccint/machine-descriptions/c-statements-for-assembler-output.rst: New file.
+ 	* doc/gccint/machine-descriptions/canonicalization-of-instructions.rst: New file.
+ 	* doc/gccint/machine-descriptions/conditional-execution.rst: New file.
+ 	* doc/gccint/machine-descriptions/constant-definitions.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-how-to-split-instructions.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-jump-instruction-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-looping-instruction-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/defining-rtl-sequences-for-code-generation.rst: New file.
+ 	* doc/gccint/machine-descriptions/everything-about-instruction-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/example-of-defineinsn.rst: New file.
+ 	* doc/gccint/machine-descriptions/including-patterns-in-machine-descriptions.rst: New file.
+ 	* doc/gccint/machine-descriptions/instruction-attributes.rst: New file.
+ 	* doc/gccint/machine-descriptions/interdependence-of-patterns.rst: New file.
+ 	* doc/gccint/machine-descriptions/iterators.rst: New file.
+ 	* doc/gccint/machine-descriptions/machine-specific-peephole-optimizers.rst: New file.
+ 	* doc/gccint/machine-descriptions/operand-constraints.rst: New file.
+ 	* doc/gccint/machine-descriptions/output-templates-and-operand-substitution.rst: New file.
+ 	* doc/gccint/machine-descriptions/overview-of-how-the-machine-description-is-used.rst:
+ 	New file.
+ 	* doc/gccint/machine-descriptions/predicates.rst: New file.
+ 	* doc/gccint/machine-descriptions/rtl-template.rst: New file.
+ 	* doc/gccint/machine-descriptions/rtl-templates-transformations.rst: New file.
+ 	* doc/gccint/machine-descriptions/standard-pattern-names-for-generation.rst: New file.
+ 	* doc/gccint/machine-descriptions/when-the-order-of-patterns-matters.rst: New file.
+ 	* doc/gccint/makefile-fragments.rst: New file.
+ 	* doc/gccint/match-and-simplify.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information/how-to-invoke-the-garbage-collector.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/marking-roots-for-the-garbage-collector.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/source-files-containing-type-information.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/support-for-inheritance.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information/support-for-user-provided-gc-marking-routines.rst:
+ 	New file.
+ 	* doc/gccint/memory-management-and-type-information/the-inside-of-a-gty.rst: New file.
+ 	* doc/gccint/memory-management-and-type-information/troubleshooting-the-garbage-collector.rst:
+ 	New file.
+ 	* doc/gccint/option-file-format.rst: New file.
+ 	* doc/gccint/option-properties.rst: New file.
+ 	* doc/gccint/option-specification-files.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/gimplification-pass.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/inter-procedural-optimization-passes.rst:
+ 	New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/optimization-info.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/parsing-pass.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/pass-manager.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/rtl-passes.rst: New file.
+ 	* doc/gccint/passes-and-files-of-the-compiler/tree-ssa-passes.rst: New file.
+ 	* doc/gccint/plugins.rst: New file.
+ 	* doc/gccint/plugins/building-gcc-plugins.rst: New file.
+ 	* doc/gccint/plugins/controlling-which-passes-are-being-run.rst: New file.
+ 	* doc/gccint/plugins/giving-information-about-a-plugin.rst: New file.
+ 	* doc/gccint/plugins/interacting-with-the-gcc-garbage-collector.rst: New file.
+ 	* doc/gccint/plugins/interacting-with-the-pass-manager.rst: New file.
+ 	* doc/gccint/plugins/keeping-track-of-available-passes.rst: New file.
+ 	* doc/gccint/plugins/loading-plugins.rst: New file.
+ 	* doc/gccint/plugins/plugin-api.rst: New file.
+ 	* doc/gccint/plugins/recording-information-about-pass-execution.rst: New file.
+ 	* doc/gccint/plugins/registering-custom-attributes-or-pragmas.rst: New file.
+ 	* doc/gccint/rtl-representation.rst: New file.
+ 	* doc/gccint/rtl-representation/access-to-operands.rst: New file.
+ 	* doc/gccint/rtl-representation/access-to-special-operands.rst: New file.
+ 	* doc/gccint/rtl-representation/assembler-instructions-as-expressions.rst: New file.
+ 	* doc/gccint/rtl-representation/bit-fields.rst: New file.
+ 	* doc/gccint/rtl-representation/comparison-operations.rst: New file.
+ 	* doc/gccint/rtl-representation/constant-expression-types.rst: New file.
+ 	* doc/gccint/rtl-representation/conversions.rst: New file.
+ 	* doc/gccint/rtl-representation/declarations.rst: New file.
+ 	* doc/gccint/rtl-representation/embedded-side-effects-on-addresses.rst: New file.
+ 	* doc/gccint/rtl-representation/flags-in-an-rtl-expression.rst: New file.
+ 	* doc/gccint/rtl-representation/insns.rst: New file.
+ 	* doc/gccint/rtl-representation/machine-modes.rst: New file.
+ 	* doc/gccint/rtl-representation/on-the-side-ssa-form-for-rtl.rst: New file.
+ 	* doc/gccint/rtl-representation/reading-rtl.rst: New file.
+ 	* doc/gccint/rtl-representation/registers-and-memory.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-classes-and-formats.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-expressions-for-arithmetic.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-object-types.rst: New file.
+ 	* doc/gccint/rtl-representation/rtl-representation-of-function-call-insns.rst: New file.
+ 	* doc/gccint/rtl-representation/side-effect-expressions.rst: New file.
+ 	* doc/gccint/rtl-representation/structure-sharing-assumptions.rst: New file.
+ 	* doc/gccint/rtl-representation/variable-location-debug-information-in-rtl.rst: New file.
+ 	* doc/gccint/rtl-representation/vector-operations.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/alignment-of-polyints.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/arithmetic-on-polyints.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/comparisons-involving-polyint.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/computing-bounds-on-polyints.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/consequences-of-using-polyint.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/converting-polyints.rst: New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/guidelines-for-using-polyint.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/miscellaneous-polyint-routines.rst:
+ 	New file.
+ 	* doc/gccint/sizes-and-offsets-as-runtime-invariants/overview-of-polyint.rst: New file.
+ 	* doc/gccint/source-tree-structure-and-build-system.rst: New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/configure-terms-and-history.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory.rst: New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-language-front-end.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/anatomy-of-a-target-back-end.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/build-system-in-the-gcc-directory.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/building-documentation.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/configuration-in-the-gcc-directory.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/headers-installed-by-gcc.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/library-source-files-and-headers-under-the-gcc-directory.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/makefile-targets.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/the-gcc-subdirectory/subdirectories-of-gcc.rst:
+ 	New file.
+ 	* doc/gccint/source-tree-structure-and-build-system/top-level-source-directory.rst:
+ 	New file.
+ 	* doc/gccint/standard-header-file-directories.rst: New file.
+ 	* doc/gccint/static-analyzer.rst: New file.
+ 	* doc/gccint/target-macros.rst: New file.
+ 	* doc/gccint/target-macros/adding-support-for-named-address-spaces.rst: New file.
+ 	* doc/gccint/target-macros/addressing-modes.rst: New file.
+ 	* doc/gccint/target-macros/adjusting-the-instruction-scheduler.rst: New file.
+ 	* doc/gccint/target-macros/anchored-addresses.rst: New file.
+ 	* doc/gccint/target-macros/c++-abi-parameters.rst: New file.
+ 	* doc/gccint/target-macros/condition-code-status.rst: New file.
+ 	* doc/gccint/target-macros/controlling-debugging-information-format.rst: New file.
+ 	* doc/gccint/target-macros/controlling-the-compilation-driver-gcc.rst: New file.
+ 	* doc/gccint/target-macros/cross-compilation-and-floating-point.rst: New file.
+ 	* doc/gccint/target-macros/d-abi-parameters.rst: New file.
+ 	* doc/gccint/target-macros/defining-coprocessor-specifics-for-mips-targets.rst: New file.
+ 	* doc/gccint/target-macros/defining-data-structures-for-per-function-information.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-target-specific-uses-of-attribute.rst: New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language.rst: New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-alignment.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/assembler-commands-for-exception-regions.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/how-initialization-functions-are-handled.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/macros-controlling-initialization-routines.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-and-generation-of-labels.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-assembler-instructions.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-data.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-dispatch-tables.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/output-of-uninitialized-variables.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/defining-the-output-assembler-language/the-overall-framework-of-an-assembler-file.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/describing-relative-costs-of-operations.rst: New file.
+ 	* doc/gccint/target-macros/dividing-the-output-into-sections-texts-data.rst: New file.
+ 	* doc/gccint/target-macros/emulating-tls.rst: New file.
+ 	* doc/gccint/target-macros/implementing-the-varargs-macros.rst: New file.
+ 	* doc/gccint/target-macros/implicit-calls-to-library-routines.rst: New file.
+ 	* doc/gccint/target-macros/layout-of-source-language-data-types.rst: New file.
+ 	* doc/gccint/target-macros/miscellaneous-parameters.rst: New file.
+ 	* doc/gccint/target-macros/mode-switching-instructions.rst: New file.
+ 	* doc/gccint/target-macros/parameters-for-precompiled-header-validity-checking.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/position-independent-code.rst: New file.
+ 	* doc/gccint/target-macros/register-classes.rst: New file.
+ 	* doc/gccint/target-macros/register-usage.rst: New file.
+ 	* doc/gccint/target-macros/run-time-target-specification.rst: New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions.rst: New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/basic-stack-layout.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/caller-saves-register-allocation.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/eliminating-frame-pointer-and-arg-pointer.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/exception-handling-support.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/function-entry-and-exit.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/generating-code-for-profiling.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-large-values-are-returned.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/how-scalar-function-values-are-returned.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/miscellaneous-register-hooks.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-arguments-in-registers.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/passing-function-arguments-on-the-stack.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/permitting-tail-calls.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/registers-that-address-the-stack-frame.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/shrink-wrapping-separate-components.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/specifying-how-stack-checking-is-done.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/stack-layout-and-calling-conventions/stack-smashing-protection.rst:
+ 	New file.
+ 	* doc/gccint/target-macros/storage-layout.rst: New file.
+ 	* doc/gccint/target-macros/support-for-nested-functions.rst: New file.
+ 	* doc/gccint/target-macros/the-global-targetm-variable.rst: New file.
+ 	* doc/gccint/target-makefile-fragments.rst: New file.
+ 	* doc/gccint/testsuites.rst: New test.
+ 	* doc/gccint/testsuites/ada-language-testsuites.rst: New test.
+ 	* doc/gccint/testsuites/c-language-testsuites.rst: New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests.rst: New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/commands-for-use-in-dg-final.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/features-for-dg-add-options.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/keywords-describing-target-attributes.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/selecting-targets-to-which-a-test-applies.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/syntax-and-descriptions-of-test-directives.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/directives-used-within-dejagnu-tests/variants-of-dg-require-support.rst:
+ 	New test.
+ 	* doc/gccint/testsuites/idioms-used-in-testsuite-code.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-binary-compatibility.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-gcov.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-gimple-passes.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-link-time-optimizations.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-profile-directed-optimizations.rst: New test.
+ 	* doc/gccint/testsuites/support-for-testing-rtl-passes.rst: New test.
+ 	* doc/gccint/testsuites/support-for-torture-testing-using-multiple-options.rst: New test.
+ 	* doc/gccint/the-gcc-low-level-runtime-library.rst: New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/language-independent-routines-for-exception-handling.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/miscellaneous-runtime-library-routines.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-decimal-floating-point-emulation.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-fixed-point-fractional-emulation.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-floating-point-emulation.rst:
+ 	New file.
+ 	* doc/gccint/the-gcc-low-level-runtime-library/routines-for-integer-arithmetic.rst:
+ 	New file.
+ 	* doc/gccint/the-language.rst: New file.
+ 	* doc/gccint/user-experience-guidelines.rst: New file.
+ 	* doc/install/binaries.rst: New file.
+ 	* doc/install/building.rst: New file.
+ 	* doc/install/building/building-a-cross-compiler.rst: New file.
+ 	* doc/install/building/building-a-native-compiler.rst: New file.
+ 	* doc/install/building/building-in-parallel.rst: New file.
+ 	* doc/install/building/building-the-ada-compiler.rst: New file.
+ 	* doc/install/building/building-the-d-compiler.rst: New file.
+ 	* doc/install/building/building-with-profile-feedback.rst: New file.
+ 	* doc/install/conf.py: New file.
+ 	* doc/install/configuration.rst: New file.
+ 	* doc/install/copyright.rst: New file.
+ 	* doc/install/downloading-gcc.rst: New file.
+ 	* doc/install/final-installation.rst: New file.
+ 	* doc/install/gnu-free-documentation-license.rst: New file.
+ 	* doc/install/host-target-specific-installation-notes-for-gcc.rst: New file.
+ 	* doc/install/how-can-you-run-the-testsuite-on-selected-tests.rst: New test.
+ 	* doc/install/how-to-interpret-test-results.rst: New file.
+ 	* doc/install/index.rst: New file.
+ 	* doc/install/indices-and-tables.rst: New file.
+ 	* doc/install/installing-gcc.rst: New file.
+ 	* doc/install/passing-options-and-running-multiple-testsuites.rst: New test.
+ 	* doc/install/prerequisites.rst: New file.
+ 	* doc/install/submitting-test-results.rst: New file.
+ 	* doc/install/testing.rst: New file.
+ 
+ 2022-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (class foperator_minus): New.
+ 	(floating_op_table::floating_op_table): Add MINUS_EXPR entry.
+ 
+ 2022-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (range_operator_float::fold_range): Abstract
+ 	out from foperator_plus.
+ 	(range_operator_float::rv_fold): New.
+ 	(foperator_plus::fold_range): Remove.
+ 	(foperator_plus::rv_fold): New.
+ 	(propagate_nans): Remove.
+ 	* range-op.h (class range_operator_float): Add rv_fold.
+ 
+ 2022-11-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_plus::fold_range): Set NAN for
+ 	addition of different signed infinities.
+ 	(range_op_float_tests): New test.
+ 
+ 2022-11-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107540
+ 	* config/i386/sse.md (avx512f_movddup512<mask_name>): Change
+ 	type from sselog to sselog1.
+ 	(avx_movddup256<mask_name>): Ditto.
+ 
+ 2022-11-08  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.cc (struct core_walk_data): Add field `which'...
+ 	(bpf_resolve_overloaded_builtin): ... set it here. Use values of enum
+ 	bpf_builtins for error checks.
+ 	(bpf_core_walk): Use values of enum bpf_builtins.
+ 	(bpf_core_newdecl): Likewise.
+ 	(bpf_expand_builtin): Likewise.
+ 
+ 2022-11-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/24021
+ 	* range-op-float.cc (propagate_nans): New.
+ 	(frange_nextafter): New.
+ 	(frange_arithmetic): New.
+ 	(class foperator_plus): New.
+ 	(floating_op_table::floating_op_table): Add PLUS_EXPR entry.
+ 
+ 2022-11-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* real.cc (real_isdenormal): New.
+ 	(encode_ieee_single): Call real_isdenormal.
+ 	(encode_ieee_double): Same.
+ 	(encode_ieee_extended): Same.
+ 	(encode_ieee_quad): Same.
+ 	(encode_ieee_half): Same.
+ 	(encode_arm_bfloat_half): Same.
+ 	* real.h (real_isdenormal): Add mode argument.  Rewrite for
+ 	normalized values.
+ 	* value-range.cc (frange::flush_denormals_to_zero): Pass mode to
+ 	real_isdenormal.
+ 
+ 2022-11-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107389
+ 	* gimple-low.cc (lower_builtin_assume_aligned): New.
+ 	(lower_stmt): Call it.
+ 
+ 2022-11-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_div::fold_range): Call
+ 	update_known_bitmask.
+ 	* tree-ssa-ccp.cc (bit_value_binop): Handle divisions by powers of
+ 	2 as a right shift.
+ 
+ 2022-11-08  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_expand_builtin_1): Expand first argument
+ 	of GCN_BUILTIN_LDEXPV to V64DFmode.
+ 
+ 2022-11-08  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* config/gcn/gcn-builtins.def (FABSV, FLOORVF, FLOORV): New builtins.
+ 	* config/gcn/gcn.cc (gcn_expand_builtin_1): Expand GCN_BUILTIN_FABSV,
+ 	GCN_BUILTIN_FLOORVF and GCN_BUILTIN_FLOORV.
+ 
+ 2022-11-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (irange_to_masked_value): New.
+ 	(update_known_bitmask): New.
+ 	(operator_mult::fold_range): Call update_known_bitmask.
+ 
+ 2022-11-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107547
+ 	* tree-call-cdce.cc (get_no_error_domain): Handle CASE_FLT_FN_FLOATN_NX
+ 	of BUILT_IN_{ACOS,ASIN,ACOSH,ATANH,LOG,LOG2,LOG10,LOG1P}.  Handle
+ 	BUILT_IN_{COSH,SINH,EXP,EXPM1,EXP2}F{16,32,64,128}.
+ 
+ 2022-11-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107546
+ 	* config/i386/predicates.md (vector_or_const_vector_operand): New
+ 	predicate.
+ 	* config/i386/sse.md (vec_cmp<mode><sseintvecmodelower>,
+ 	vec_cmpv2div2di, vec_cmpu<mode><sseintvecmodelower>,
+ 	vec_cmpuv2div2di): Use nonimmediate_or_const_vector_operand
+ 	predicate instead of nonimmediate_operand and
+ 	vector_or_const_vector_operand instead of vector_operand.
+ 	* config/i386/i386-expand.cc (ix86_expand_int_sse_cmp): For
+ 	LE/LEU or GE/GEU with CONST_VECTOR cop1 try to transform those
+ 	into LE/LEU or GT/GTU with larger or smaller by one cop1 if
+ 	there is no wrap-around.  Force CONST_VECTOR cop0 or cop1 into
+ 	REG.  Formatting fix.
+ 
+ 2022-11-08  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	PR rtl-optimization/107482
+ 	* ira-color.cc (assign_hard_reg): Only call
+ 	update_costs_from_copies when retry_p is false.
+ 
+ 2022-11-08  konglin1  <lingling.kong@intel.com>
+ 
+ 	Revert:
+ 	2022-11-07  konglin1  <lingling.kong@intel.com>
+ 
+ 	* config/i386/i386.opt:Add -mprefer-remote-atomic.
+ 	* config/i386/sync.md (atomic_<plus_logic><mode>):
+ 	New define_expand.
+ 	(atomic_add<mode>): Rename to below one.
+ 	(atomic_add<mode>_1): To this.
+ 	(atomic_<logic><mode>): Ditto.
+ 	(atomic_<logic><mode>_1): Ditto.
+ 	* doc/invoke.texi: Add -mprefer-remote-atomic.
+ 
+ 2022-11-08  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/i386-options.cc (m_CORE_ATOM): New.
+ 	* config/i386/x86-tune.def
+ 	(X86_TUNE_SCHEDULE): Initial tune for CORE_ATOM.
+ 	(X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
+ 	(X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
+ 	(X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
+ 	(X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
+ 	(X86_TUNE_DEST_FALSE_DEP_FOR_GLC): Ditto.
+ 	(X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
+ 	(X86_TUNE_USE_LEAVE): Ditto.
+ 	(X86_TUNE_PUSH_MEMORY): Ditto.
+ 	(X86_TUNE_USE_INCDEC): Ditto.
+ 	(X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
+ 	(X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Ditto.
+ 	(X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
+ 	(X86_TUNE_USE_SAHF): Ditto.
+ 	(X86_TUNE_USE_BT): Ditto.
+ 	(X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): Ditto.
+ 	(X86_TUNE_ONE_IF_CONV_INSN): Ditto.
+ 	(X86_TUNE_AVOID_MFENCE): Ditto.
+ 	(X86_TUNE_USE_SIMODE_FIOP): Ditto.
+ 	(X86_TUNE_EXT_80387_CONSTANTS): Ditto.
+ 	(X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto.
+ 	(X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
+ 	(X86_TUNE_SSE_TYPELESS_STORES): Ditto.
+ 	(X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
+ 	(X86_TUNE_AVOID_4BYTE_PREFIXES): Ditto.
+ 	(X86_TUNE_USE_GATHER_2PARTS): Ditto.
+ 	(X86_TUNE_USE_GATHER_4PARTS): Ditto.
+ 	(X86_TUNE_USE_GATHER): Ditto.
+ 
+ 2022-11-08  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/104530
+ 	* gimple-range-cache.cc (ranger_cache::register_inferred_value):
+ 	New.  Split from:
+ 	(ranger_cache::apply_inferred_ranges): Move setting cache to
+ 	separate function.
+ 	* gimple-range-cache.h (register_inferred_value): New prototype.
+ 	* gimple-range-infer.cc (infer_range_manager::has_range_p): New.
+ 	* gimple-range-infer.h (has_range_p): New prototype.
+ 	* gimple-range.cc (register_transitive_inferred_ranges): New.
+ 	* gimple-range.h (register_transitive_inferred_ranges): New proto.
+ 	* tree-vrp.cc (rvrp_folder::fold_stmt): Check for transitive inferred
+ 	ranges at the end of the block before folding final stmt.
+ 
+ 2022-11-07  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.cc (handle_attr_preserve): Use maybe_make_core_relo().
+ 
+ 2022-11-07  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/55157
+ 	* range-op.cc (operator_mult::wi_fold): Optimize multiplications
+ 	by powers of 2.
+ 
+ 2022-11-07  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/102566
+ 	* tree-ssa-ccp.cc (optimize_atomic_bit_test_and): Also handle
+ 	if (_5 < 0) and if (_5 >= 0).
+ 
+ 2022-11-07  Richard Purdie  <richard.purdie@linuxfoundation.org>
+ 
+ 	* file-prefix-map.cc (remap_filename): Handle NULL filenames.
+ 
+ 2022-11-07  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR tree-optimization/107505
+ 	* tree-ssa-sink.cc (statement_sink_location): Additionally
+ 	reject ECF_RETURNS_TWICE calls.
+ 
+ 2022-11-07  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107541
+ 	* range-op.cc (operator_div::fold_range): Restrict power of 2
+ 	optimization to positive numbers.
+ 
+ 2022-11-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-unswitch.cc (unswitch_predicate::count): New.
+ 	(unswitch_predicate::unswitch_predicate): Initialize count.
+ 	(init_loop_unswitch_info): First collect candidates and
+ 	determine the outermost loop to unswitch.
+ 	(tree_ssa_unswitch_loops): First perform all guard hoisting,
+ 	then perform unswitching on innermost loop predicates.
+ 	(find_unswitching_predicates_for_bb): Keep track of the
+ 	most profitable predicate to unswitch on.
+ 	(tree_unswitch_single_loop): Unswitch given predicate if
+ 	not NULL.
+ 
+ 2022-11-07  Martin Liska  <mliska@suse.cz>
+ 	    Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/invoke.texi: Improve wording.
+ 
+ 2022-11-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* range-op.cc: Add final override keywords.
+ 
+ 2022-11-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/107412
+ 	* gimple-fold.cc (gimple_fold_mask_load_store_mem_ref): Rename to ...
+ 	(gimple_fold_partial_load_store_mem_ref): ... this, add one parameter
+ 	mask_p indicating it's for mask or length, and add some handlings for
+ 	IFN LEN_{LOAD,STORE}.
+ 	(gimple_fold_mask_load): Rename to ...
+ 	(gimple_fold_partial_load): ... this, add one parameter mask_p.
+ 	(gimple_fold_mask_store): Rename to ...
+ 	(gimple_fold_partial_store): ... this, add one parameter mask_p.
+ 	(gimple_fold_call): Add the handlings for IFN LEN_{LOAD,STORE},
+ 	and adjust calls on gimple_fold_mask_load_store_mem_ref to
+ 	gimple_fold_partial_load_store_mem_ref.
+ 
+ 2022-11-07  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h
+ 	(get_intel_cpu): Handle Grand Ridge.
+ 	* common/config/i386/i386-common.cc
+ 	(processor_names): Add grandridge.
+ 	(processor_alias_table): Ditto.
+ 	* common/config/i386/i386-cpuinfo.h:
+ 	(enum processor_types): Add INTEL_GRANDRIDGE.
+ 	* config.gcc: Add -march=grandridge.
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu):
+ 	Handle grandridge.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal):
+ 	Ditto.
+ 	* config/i386/i386-options.cc (m_GRANDRIDGE): New define.
+ 	(processor_cost_table): Add grandridge.
+ 	* config/i386/i386.h (enum processor_type):
+ 	Add PROCESSOR_GRANDRIDGE.
+ 	(PTA_GRANDRIDGE): Ditto.
+ 	* doc/extend.texi: Add grandridge.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2022-11-07  konglin1  <lingling.kong@intel.com>
+ 
+ 	* config/i386/i386.opt:Add -mprefer-remote-atomic.
+ 	* config/i386/sync.md (atomic_<plus_logic><mode>):
+ 	New define_expand.
+ 	(atomic_add<mode>): Rename to below one.
+ 	(atomic_add<mode>_1): To this.
+ 	(atomic_<logic><mode>): Ditto.
+ 	(atomic_<logic><mode>_1): Ditto.
+ 	* doc/invoke.texi: Add -mprefer-remote-atomic.
+ 
+ 2022-11-07  konglin1  <lingling.kong@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect raoint.
+ 	* common/config/i386/i386-common.cc (OPTION_MASK_ISA2_RAOINT_SET,
+ 	OPTION_MASK_ISA2_RAOINT_UNSET): New.
+ 	(ix86_handle_option): Handle -mraoint.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_RAOINT.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
+ 	raoint.
+ 	* config.gcc: Add raointintrin.h
+ 	* config/i386/cpuid.h (bit_RAOINT): New.
+ 	* config/i386/i386-builtin.def (BDESC): Add new builtins.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+ 	__RAOINT__.
+ 	* config/i386/i386-isa.def (RAOINT): Add DEF_PTA(RAOINT).
+ 	* config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
+ 	Add -mraoint.
+ 	* config/i386/sync.md (rao_a<raointop><mode>): New define insn.
+ 	* config/i386/i386.opt: Add option -mraoint.
+ 	* config/i386/x86gprintrin.h: Include raointintrin.h.
+ 	* doc/extend.texi: Document raoint.
+ 	* doc/invoke.texi: Document -mraoint.
+ 	* doc/sourcebuild.texi: Document target raoint.
+ 	* config/i386/raointintrin.h: New file.
+ 
+ 2022-11-07  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h
+ 	(get_intel_cpu): Handle Granite Rapids.
+ 	* common/config/i386/i386-common.cc:
+ 	(processor_names): Add graniterapids.
+ 	(processor_alias_table): Ditto.
+ 	* common/config/i386/i386-cpuinfo.h
+ 	(enum processor_subtypes): Add INTEL_GRANTIERAPIDS.
+ 	* config.gcc: Add -march=graniterapids.
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu):
+ 	Handle graniterapids.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal):
+ 	Ditto.
+ 	* config/i386/i386-options.cc (m_GRANITERAPIDS): New.
+ 	(processor_cost_table): Add graniterapids.
+ 	* config/i386/i386.h (enum processor_type):
+ 	Add PROCESSOR_GRANITERAPIDS.
+ 	(PTA_GRANITERAPIDS): Ditto.
+ 	* doc/extend.texi: Add graniterapids.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2022-11-07  Haochen Jiang  <haochen.jiang@intel.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect PREFETCHI.
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_PREFETCHI_SET,
+ 	OPTION_MASK_ISA2_PREFETCHI_UNSET): New.
+ 	(ix86_handle_option): Handle -mprefetchi.
+ 	* common/config/i386/i386-cpuinfo.h
+ 	(enum processor_features): Add FEATURE_PREFETCHI.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY
+ 	for prefetchi.
+ 	* config.gcc: Add prfchiintrin.h.
+ 	* config/i386/cpuid.h (bit_PREFETCHI): New.
+ 	* config/i386/i386-builtin-types.def:
+ 	Add DEF_FUNCTION_TYPE (VOID, PCVOID, INT)
+ 	and DEF_FUNCTION_TYPE (VOID, PCVOID, INT, INT, INT).
+ 	* config/i386/i386-builtin.def (BDESC): Add new builtins.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal):
+ 	Define __PREFETCHI__.
+ 	* config/i386/i386-expand.cc: Handle new builtins.
+ 	* config/i386/i386-isa.def (PREFETCHI):
+ 	Add DEF_PTA(PREFETCHI).
+ 	* config/i386/i386-options.cc
+ 	(ix86_valid_target_attribute_inner_p): Handle prefetchi.
+ 	* config/i386/i386.md (prefetchi): New define_insn.
+ 	* config/i386/i386.opt: Add option -mprefetchi.
+ 	* config/i386/predicates.md (local_func_symbolic_operand):
+ 	New predicates.
+ 	* config/i386/x86gprintrin.h: Include prfchiintrin.h.
+ 	* config/i386/xmmintrin.h (enum _mm_hint): New enum for
+ 	prefetchi.
+ 	(_mm_prefetch): Handle the highest bit of enum.
+ 	* doc/extend.texi: Document prefetchi.
+ 	* doc/invoke.texi: Document -mprefetchi.
+ 	* doc/sourcebuild.texi: Document target prefetchi.
+ 	* config/i386/prfchiintrin.h: New file.
+ 
+ 2022-11-06  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* optabs.cc (can_vec_set_var_idx_p): Use operand[2]
+ 	mode when checking vec_set_optab.
+ 
+ 2022-11-06  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (UNSPEC_FCOPYSIGN): New unspec.
+ 	(type): Add fcopysign.
+ 	(copysign<mode>3): New instruction template.
+ 
+ 2022-11-06  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
+ 
+ 	* multiple_target.cc (expand_target_clones): Free memory.
+ 
+ 2022-11-06  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
+ 
+ 	* cgraph.cc (cgraph_node::make_local): Remove redundant set_section.
+ 	* multiple_target.cc (create_dispatcher_calls): Likewise.
+ 
+ 2022-11-05  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c/41041
+ 	* doc/cppopts.texi: Document -fwide-exec-charset defaults
+ 	correctly.
+ 
+ 2022-11-05  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* common.opt (fmultiflags): New.
+ 	* doc/invoke.texi: Document it.
+ 	* gcc.cc (driver_self_specs): Discard it.
+ 	* opts.cc (common_handle_option): Ignore it in the driver.
+ 
+ 2022-11-04  Jeff Chapman II  <jchapman@lock3software.com>
+ 	    Jason Merrill   <jason@redhat.com>
+ 
+ 	* input.cc (get_source_text_between): New fn.
+ 	* input.h (get_source_text_between): Declare.
+ 
+ 2022-11-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107342
+ 	* range-op.cc (operator_mult::fold_range): New.
+ 	(operator_div::fold_range): New.
+ 
+ 2022-11-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fold-const.cc (operand_compare::operand_equal_p) <COMPONENT_REF>:
+ 	Do not take into account operand 2.
+ 	(operand_compare::hash_operand) <COMPONENT_REF>: Likewise.
+ 
+ 2022-11-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* expr.cc (emit_group_store): Do not use subword paradoxical subregs
+ 
+ 2022-11-04  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve2.md: Fix typo in Cryptographic
+ 	extensions comment.
+ 
+ 2022-11-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config.gcc [target *-intelmic-* | *-intelmicemul-*]: Remove.
+ 	* config/i386/i386-options.cc (ix86_omp_device_kind_arch_isa)
+ 	[ACCEL_COMPILER]: Remove.
+ 	* config/i386/intelmic-mkoffload.cc: Remove.
+ 	* config/i386/intelmic-offload.h: Likewise.
+ 	* config/i386/t-intelmic: Likewise.
+ 	* config/i386/t-omp-device: Likewise.
+ 	* configure.ac [target *-intelmic-* | *-intelmicemul-*]: Remove.
+ 	* configure: Regenerate.
+ 	* doc/install.texi (--enable-offload-targets=[...]): Update.
+ 	* doc/sourcebuild.texi: Remove 'liboffloadmic' documentation.
+ 
+ 2022-11-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* Makefile.in (OBJS): Remove 'dbxout.o'.
+ 	* config/nvptx/nvptx.cc: Don't '#include "dbxout.h"'.
+ 	* dbxout.cc: Remove.
+ 	* dbxout.h: Likewise.
+ 	* target-def.h (TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR):
+ 	Default to 'default_asm_out_constructor',
+ 	'default_asm_out_destructor'.
+ 	* targhooks.cc (default_asm_out_constructor)
+ 	(default_asm_out_destructor): New.
+ 	* targhooks.h (default_asm_out_constructor)
+ 	(default_asm_out_destructor): Declare.
+ 
+ 2022-11-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* Makefile.in (OBJS): Add 'dbxout.o'.
+ 	* config/nvptx/nvptx.cc: '#include "dbxout.h"'.
+ 	* dbxout.cc: New.
+ 	* dbxout.h: Likewise.
+ 	* target-def.h (TARGET_ASM_CONSTRUCTOR, TARGET_ASM_DESTRUCTOR):
+ 	Default to 'default_stabs_asm_out_constructor',
+ 	'default_stabs_asm_out_destructor'.
+ 
+ 2022-11-04  Hongyu Wang  <hongyu.wang@intel.com>
+ 	    Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features): Detect
+ 	amx-fp16.
+ 	* common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AMX_FP16_SET,
+ 	OPTION_MASK_ISA2_AMX_FP16_UNSET): New macros.
+ 	(ix86_handle_option): Handle -mamx-fp16.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_AMX_FP16.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
+ 	amx-fp16.
+ 	* config.gcc: Add amxfp16intrin.h.
+ 	* config/i386/cpuid.h (bit_AMX_FP16): New.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+ 	__AMX_FP16__.
+ 	* config/i386/i386-isa.def: Add DEF_PTA for AMX_FP16.
+ 	* config/i386/i386-options.cc (isa2_opts): Add -mamx-fp16.
+ 	(ix86_valid_target_attribute_inner_p): Add new ATTR.
+ 	(ix86_option_override_internal): Handle AMX-FP16.
+ 	* config/i386/i386.opt: Add -mamx-fp16.
+ 	* config/i386/immintrin.h: Include amxfp16intrin.h.
+ 	* doc/extend.texi: Document -mamx-fp16.
+ 	* doc/invoke.texi: Document amx-fp16.
+ 	* doc/sourcebuild.texi: Document amx_fp16.
+ 	* config/i386/amxfp16intrin.h: New file.
+ 
+ 2022-11-04  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_intel_cpu):
+ 	Add Sierra Forest.
+ 	* common/config/i386/i386-common.cc
+ 	(processor_names): Add Sierra Forest.
+ 	(processor_alias_table): Ditto.
+ 	* common/config/i386/i386-cpuinfo.h
+ 	(enum processor_types): Add INTEL_SIERRAFOREST.
+ 	* config.gcc: Add -march=sierraforest.
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu):
+ 	Handle Sierra Forest.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal):
+ 	Ditto.
+ 	* config/i386/i386-options.cc (m_SIERRAFOREST): New define.
+ 	(processor_cost_table): Add sierra forest.
+ 	* config/i386/i386.h (enum processor_type):
+ 	Add PROCESSOR_SIERRA_FOREST.
+ 	(PTA_SIERRAFOREST): Ditto.
+ 	* doc/extend.texi: Add sierra forest.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2022-11-04  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect cmpccxadd.
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_CMPCCXADD_SET,
+ 	OPTION_MASK_ISA2_CMPCCXADD_UNSET): New.
+ 	(ix86_handle_option): Handle -mcmpccxadd.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_CMPCCXADD.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
+ 	cmpccxadd.
+ 	* config.gcc: Add cmpccxaddintrin.h.
+ 	* config/i386/cpuid.h (bit_CMPCCXADD): New.
+ 	* config/i386/i386-builtin-types.def:
+ 	Add DEF_FUNCTION_TYPE(INT, PINT, INT, INT, INT)
+ 	and DEF_FUNCTION_TYPE(LONGLONG, PLONGLONG, LONGLONG, LONGLONG, INT).
+ 	* config/i386/i386-builtin.def (BDESC): Add new builtins.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+ 	__CMPCCXADD__.
+ 	* config/i386/i386-expand.cc (ix86_expand_special_args_builtin):
+ 	Add new parameter to indicate constant position.
+ 	Handle INT_FTYPE_PINT_INT_INT_INT
+ 	and LONGLONG_FTYPE_PLONGLONG_LONGLONG_LONGLONG_INT.
+ 	* config/i386/i386-isa.def (CMPCCXADD): Add DEF_PTA(CMPCCXADD).
+ 	* config/i386/i386-options.cc (isa2_opts): Add -mcmpccxadd.
+ 	(ix86_valid_target_attribute_inner_p): Handle cmpccxadd.
+ 	* config/i386/i386.opt: Add option -mcmpccxadd.
+ 	* config/i386/sync.md (cmpccxadd_<mode>): New define insn.
+ 	* config/i386/x86gprintrin.h: Include cmpccxaddintrin.h.
+ 	* doc/extend.texi: Document cmpccxadd.
+ 	* doc/invoke.texi: Document -mcmpccxadd.
+ 	* doc/sourcebuild.texi: Document target cmpccxadd.
+ 	* config/i386/cmpccxaddintrin.h: New file.
+ 
+ 2022-11-03  Jason Merrill  <jason@redhat.com>
+ 
+ 	* doc/invoke.texi: -fconcepts no longer implies
+ 	-fconcepts-ts before C++20.
+ 
+ 2022-11-03  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (math_unop_insn): New attribute.
+ 	(<math_unop><mode>2, <math_unop><mode>2<exec>, <math_unop><mode>2,
+ 	<math_unop><mode>2<exec>, *<math_unop><mode>2_insn,
+ 	*<math_unop><mode>2<exec>_insn): Use math_unop_insn to generate
+ 	assembler output.
+ 
+ 2022-11-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.cc (gimple_ranger::update_stmt): New.
+ 	* gimple-range.h (gimple_ranger::update_stmt): New prototype.
+ 	* tree-ssa-operands.cc (update_stmt_operands): Notify range
+ 	query that stmt has changed.
+ 	* value-query.h (range_query::update_stmt): New.
+ 
+ 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* make-unique.h: New file.
+ 
+ 2022-11-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/107404
+ 	* config/i386/i386.md (eliminate reg-reg move by inverting the
+ 	condition of a cmove #2 peephole2): Check if eliminated move
+ 	initialized a register, used in the moved instruction.
+ 
+ 2022-11-03  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	PR target/107510
+ 	* config/gcn/gcn.cc (gcn_expand_reduc_scalar): Remove duplicate
+ 	UNSPEC_SMIN_DPP_SHR conditionals.
+ 
+ 2022-11-02  Christoph Müllner  <christoph.muellner@vrull.eu>
+ 
+ 	* common/config/riscv/riscv-common.cc: Add zawrs extension.
+ 	* config/riscv/riscv-opts.h (MASK_ZAWRS): New.
+ 	(TARGET_ZAWRS): New.
+ 	* config/riscv/riscv.opt: New.
+ 
+ 2022-11-02  Rasmus Villemoes  <rv@rasmusvillemoes.dk>
+ 
+ 	PR driver/93371
+ 	* gcc.cc (ASM_MAP): Honour -ffile-prefix-map.
+ 
+ 2022-11-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::contains_p): Fix signed zero handling.
+ 	(range_tests_signed_zeros): New test.
+ 
+ 2022-11-02  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	* builtins.cc (mathfn_built_in_2): #undef HUGE_VAL, NAN.
+ 
+ 2022-11-02  Xionghu Luo  <xionghuluo@tencent.com>
+ 
+ 	PR target/100866
+ 	* config/rs6000/altivec.md: (*altivec_vrl<VI_char>): Named to...
+ 	(altivec_vrl<VI_char>): ...this.
+ 	* config/rs6000/vsx.md (revb_<mode>): Call vspltish and vrlh when
+ 	target is Power8 and mode is V8HI.
+ 
+ 2022-11-01  David Seifert  <soap@gentoo.org>
+ 
+ 	* configure.ac: Add AC_CACHE_CHECK(..., gcc_cv_sys_sdt_h).
+ 	* configure: Regenerate.
+ 
+ 2022-11-01  Richard Purdie  <richard.purdie@linuxfoundation.org>
+ 
+ 	* file-prefix-map.cc (remap_filename): Allow remapping of relative paths.
+ 
+ 2022-11-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107490
+ 	* range-op-float.cc (foperator_unordered_lt::op1_range): Handle
+ 	NANs.
+ 	(foperator_unordered_lt::op2_range): Same.
+ 	(foperator_unordered_le::op1_range): Same.
+ 	(foperator_unordered_le::op2_range): Same.
+ 	(foperator_unordered_gt::op1_range): Same.
+ 	(foperator_unordered_gt::op2_range): Same.
+ 	(foperator_unordered_ge::op1_range): Same.
+ 	(foperator_unordered_ge::op2_range): Same.
+ 
+ 2022-11-01  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/107497
+ 	* tree-vrp.cc (remove_unreachable::remove_and_update_globals):
+ 	Check that ssa-name still exists before accessing it.
+ 
+ 2022-11-01  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* params.opt (param_vrp1_mode): Make ranger default.
+ 
+ 2022-11-01  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* tree-vrp.cc (class remove_unreachable): New.
+ 	(remove_unreachable::maybe_register_block): New.
+ 	(remove_unreachable::remove_and_update_globals): New.
+ 	(rvrp_folder::rvrp_folder): Initialize m_unreachable.
+ 	(rvrp_folder::post_fold_bb): Maybe register unreachable block.
+ 	(rvrp_folder::m_unreachable): New member.
+ 	(execute_ranger_vrp): Add final_pass flag, remove unreachables.
+ 
+ 2022-11-01  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Allow
+ 	exit block to be specified.
+ 	(ranger_cache::range_from_dom): If exit block is specified, use
+ 	the immediate predecessor instead of the dominator to start.
+ 	* gimple-range.cc (gimple_ranger::range_on_exit): Allow query
+ 	for exit block.
+ 
+ 2022-11-01  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range.cc (irange::intersect_nonzero_bits): If new
+ 	non-zero mask is the same as original, flag no change.
+ 
+ 2022-11-01  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR target/87832
+ 	* config/i386/znver.md (znver1_idiv): New automaton.
+ 	(znver1-idiv): New unit.
+ 	(znver1_idiv_DI): Correct unit and cycles in the reservation.
+ 	(znver1_idiv_SI): Ditto.
+ 	(znver1_idiv_HI): Ditto.
+ 	(znver1_idiv_QI): Ditto.
+ 	(znver1_idiv_mem_DI): Ditto.
+ 	(znver1_idiv_mem_SI): Ditto.
+ 	(znver1_idiv_mem_HI): Ditto.
+ 	(znver1_idiv_mem_QI): Ditto.
+ 	(znver3_idiv_DI): Ditto.
+ 	(znver3_idiv_SI): Ditto.
+ 	(znver3_idiv_HI): Ditto.
+ 	(znver3_idiv_QI): Ditto.
+ 	(znver3_idiv_mem_DI): Ditto.
+ 	(znver3_idiv_mem_SI): Ditto.
+ 	(znver3_idiv_mem_HI): Ditto.
+ 	(znver3_idiv_mem_QI): Ditto.
+ 
+ 2022-11-01  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107057
+ 	* config/i386/sse.md (*vec_interleave_highv2df): Remove
+ 	constraint 1.
+ 	(*vec_interleave_lowv2df): Ditto.
+ 	(vec_concatv2df): Ditto.
+ 	(*avx512f_unpcklpd512<mask_name>): Ditto and renamed to ..
+ 	(avx512f_unpcklpd512<mask_name>): .. this.
+ 	(avx512f_movddup512<mask_name>): Change to define_insn.
+ 	(avx_movddup256<mask_name>): Ditto.
+ 	(*avx_unpcklpd256<mask_name>): Remove constraint 1 and renamed
+ 	to ..
+ 	(avx_unpcklpd256<mask_name>): .. this.
+ 	* config/i386/i386.cc (ix86_vec_interleave_v2df_operator_ok):
+ 	Disallow MEM_P (op1) && MEM_P (op2).
+ 
+ 2022-11-01  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/55583
+ 	* config/i386/i386.md (*x86_64_shld_1): Rename to ..
+ 	(x86_64_shld_1): .. this.
+ 	(*x86_shld_1): Rename to ..
+ 	(x86_shld_1): .. this.
+ 	(*x86_64_shrd_1): Rename to ..
+ 	(x86_64_shrd_1): .. this.
+ 	(*x86_shrd_1): Rename to ..
+ 	(x86_shrd_1): .. this.
+ 	(*x86_64_shld_shrd_1_nozext): New pre_reload splitter.
+ 	(*x86_shld_shrd_1_nozext): Ditto.
+ 	(*x86_64_shrd_shld_1_nozext): Ditto.
+ 	(*x86_shrd_shld_1_nozext): Ditto.
+ 
+ 2022-11-01  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	* ipa-inline-analysis.cc (do_estimate_edge_time): Add function attribute
+ 	judgement for INLINE_HINT_known_hot hint.
+ 
+ 2022-10-31  Guillermo E. Martinez  <guillermo.e.martinez@oracle.com>
+ 
+ 	* btfout.cc (btf_calc_num_vbytes): Compute enumeration size depending of
+ 	enumerator type btf_enum{,64}.
+ 	(btf_asm_type): Update btf_kflag according to enumeration type sign
+ 	using dtd_enum_unsigned field for both:  BTF_KIND_ENUM{,64}.
+ 	(btf_asm_enum_const): New argument to represent the size of
+ 	the BTF enum type, writing the enumerator constant value for
+ 	32 bits, if it's 64 bits then explicitly writes lower 32-bits
+ 	value and higher 32-bits value.
+ 	(output_asm_btf_enum_list): Add enumeration size argument.
+ 	* ctfc.cc (ctf_add_enum): New argument to represent CTF enum
+ 	basic information.
+ 	(ctf_add_generic): Use of ei_{name. size, unsigned} to build the
+ 	dtd structure containing enumeration information.
+ 	(ctf_add_enumerator): Update comment mention support for BTF
+ 	enumeration in 64-bits.
+ 	* dwarf2ctf.cc (gen_ctf_enumeration_type): Extract signedness
+ 	for enumeration type and use it in ctf_add_enum.
+ 	* ctfc.h (ctf_dmdef): Update dmd_value to HOST_WIDE_INT to allow
+ 	use 32/64 bits enumerators.
+ 	information.
+ 	(ctf_dtdef): New field to describe enum signedness.
+ 
+ 2022-10-31  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Change constexpr back to CONSTEXPR.
+ 	* config/riscv/riscv-vector-builtins-shapes.cc (SHAPE): Ditto.
+ 	* config/riscv/riscv-vector-builtins.cc (struct registered_function_hasher): Ditto.
+ 	* config/riscv/riscv-vector-builtins.h (struct rvv_arg_type_info): Ditto.
+ 
+ 2022-10-31  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (fminmaxop): New iterator.
+ 	(<fexpander><mode>3): New define_expand.
+ 	(<fexpander><mode>3<exec>): Likewise.
+ 	(reduc_<fexpander>_scal_<mode>): Likewise.
+ 	* config/gcn/gcn.md (fexpander): New attribute.
+ 
+ 2022-10-31  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (V64_SI): Delete iterator.
+ 	(V64_DI): Likewise.
+ 	(V64_1REG): Likewise.
+ 	(V64_INT_1REG): Likewise.
+ 	(V64_2REG): Likewise.
+ 	(V64_ALL): Likewise.
+ 	(V64_FP): Likewise.
+ 	(reduc_<reduc_op>_scal_<mode>): Use V_ALL. Use gen_vec_extract.
+ 	(fold_left_plus_<mode>): Use V_FP.
+ 	(*<reduc_op>_dpp_shr_<mode>): Use V_1REG.
+ 	(*<reduc_op>_dpp_shr_<mode>): Use V_DI.
+ 	(*plus_carry_dpp_shr_<mode>): Use V_INT_1REG.
+ 	(*plus_carry_in_dpp_shr_<mode>): Use V_SI.
+ 	(*plus_carry_dpp_shr_<mode>): Use V_DI.
+ 	(mov_from_lane63_<mode>): Delete.
+ 	(mov_from_lane63_<mode>): Delete.
+ 	* config/gcn/gcn.cc (gcn_expand_reduc_scalar): Support partial vectors.
+ 	* config/gcn/gcn.md (unspec): Remove UNSPEC_MOV_FROM_LANE63.
+ 
+ 2022-10-31  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_simd_clone_compute_vecsize_and_simdlen):
+ 	Set base_type as ARG_UNUSED.
+ 
+ 2022-10-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* builtin-types.def (BT_COMPLEX_FLOAT16, BT_COMPLEX_FLOAT32,
+ 	BT_COMPLEX_FLOAT64, BT_COMPLEX_FLOAT128, BT_COMPLEX_FLOAT32X,
+ 	BT_COMPLEX_FLOAT64X, BT_COMPLEX_FLOAT128X,
+ 	BT_FN_COMPLEX_FLOAT16_COMPLEX_FLOAT16,
+ 	BT_FN_COMPLEX_FLOAT32_COMPLEX_FLOAT32,
+ 	BT_FN_COMPLEX_FLOAT64_COMPLEX_FLOAT64,
+ 	BT_FN_COMPLEX_FLOAT128_COMPLEX_FLOAT128,
+ 	BT_FN_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X,
+ 	BT_FN_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X,
+ 	BT_FN_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X,
+ 	BT_FN_FLOAT16_COMPLEX_FLOAT16, BT_FN_FLOAT32_COMPLEX_FLOAT32,
+ 	BT_FN_FLOAT64_COMPLEX_FLOAT64, BT_FN_FLOAT128_COMPLEX_FLOAT128,
+ 	BT_FN_FLOAT32X_COMPLEX_FLOAT32X, BT_FN_FLOAT64X_COMPLEX_FLOAT64X,
+ 	BT_FN_FLOAT128X_COMPLEX_FLOAT128X,
+ 	BT_FN_COMPLEX_FLOAT16_COMPLEX_FLOAT16_COMPLEX_FLOAT16,
+ 	BT_FN_COMPLEX_FLOAT32_COMPLEX_FLOAT32_COMPLEX_FLOAT32,
+ 	BT_FN_COMPLEX_FLOAT64_COMPLEX_FLOAT64_COMPLEX_FLOAT64,
+ 	BT_FN_COMPLEX_FLOAT128_COMPLEX_FLOAT128_COMPLEX_FLOAT128,
+ 	BT_FN_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X,
+ 	BT_FN_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X,
+ 	BT_FN_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X): New.
+ 	* builtins.def (CABS_TYPE, CACOSH_TYPE, CARG_TYPE, CASINH_TYPE,
+ 	CPOW_TYPE, CPROJ_TYPE): Define and undefine later.
+ 	(BUILT_IN_CABS, BUILT_IN_CACOSH, BUILT_IN_CACOS, BUILT_IN_CARG,
+ 	BUILT_IN_CASINH, BUILT_IN_CASIN, BUILT_IN_CATANH, BUILT_IN_CATAN,
+ 	BUILT_IN_CCOSH, BUILT_IN_CCOS, BUILT_IN_CEXP, BUILT_IN_CLOG,
+ 	BUILT_IN_CPOW, BUILT_IN_CPROJ, BUILT_IN_CSINH, BUILT_IN_CSIN,
+ 	BUILT_IN_CSQRT, BUILT_IN_CTANH, BUILT_IN_CTAN): Add
+ 	DEF_EXT_LIB_FLOATN_NX_BUILTINS.
+ 	* fold-const-call.cc (fold_const_call_sc, fold_const_call_cc,
+ 	fold_const_call_ccc): Add various CASE_CFN_*_FN: cases when
+ 	CASE_CFN_* is present.
+ 	* gimple-ssa-backprop.cc (backprop::process_builtin_call_use):
+ 	Likewise.
+ 	* builtins.cc (expand_builtin, fold_builtin_1): Likewise.
+ 	* fold-const.cc (negate_mathfn_p, tree_expr_finite_p,
+ 	tree_expr_maybe_signaling_nan_p, tree_expr_maybe_nan_p,
+ 	tree_expr_maybe_real_minus_zero_p, tree_call_nonnegative_warnv_p):
+ 	Likewise.
+ 
+ 2022-10-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* builtin-types.def (BT_FN_BFLOAT16_BFLOAT16_BFLOAT16): New.
+ 	* builtins.def (BUILT_IN_NEXTAFTERF16B): New builtin.
+ 	* fold-const-call.cc (fold_const_call_sss): Handle
+ 	CFN_BUILT_IN_NEXTAFTERF16B.
+ 
+ 2022-10-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* builtin-types.def (BT_FLOAT16_PTR, BT_FLOAT32_PTR, BT_FLOAT64_PTR,
+ 	BT_FLOAT128_PTR, BT_FLOAT32X_PTR, BT_FLOAT64X_PTR, BT_FLOAT128X_PTR):
+ 	New DEF_PRIMITIVE_TYPE.
+ 	(BT_FN_INT_FLOAT16, BT_FN_INT_FLOAT32, BT_FN_INT_FLOAT64,
+ 	BT_FN_INT_FLOAT128, BT_FN_INT_FLOAT32X, BT_FN_INT_FLOAT64X,
+ 	BT_FN_INT_FLOAT128X, BT_FN_LONG_FLOAT16, BT_FN_LONG_FLOAT32,
+ 	BT_FN_LONG_FLOAT64, BT_FN_LONG_FLOAT128, BT_FN_LONG_FLOAT32X,
+ 	BT_FN_LONG_FLOAT64X, BT_FN_LONG_FLOAT128X, BT_FN_LONGLONG_FLOAT16,
+ 	BT_FN_LONGLONG_FLOAT32, BT_FN_LONGLONG_FLOAT64,
+ 	BT_FN_LONGLONG_FLOAT128, BT_FN_LONGLONG_FLOAT32X,
+ 	BT_FN_LONGLONG_FLOAT64X, BT_FN_LONGLONG_FLOAT128X): New
+ 	DEF_FUNCTION_TYPE_1.
+ 	(BT_FN_FLOAT16_FLOAT16_FLOAT16PTR, BT_FN_FLOAT32_FLOAT32_FLOAT32PTR,
+ 	BT_FN_FLOAT64_FLOAT64_FLOAT64PTR, BT_FN_FLOAT128_FLOAT128_FLOAT128PTR,
+ 	BT_FN_FLOAT32X_FLOAT32X_FLOAT32XPTR,
+ 	BT_FN_FLOAT64X_FLOAT64X_FLOAT64XPTR,
+ 	BT_FN_FLOAT128X_FLOAT128X_FLOAT128XPTR, BT_FN_FLOAT16_FLOAT16_INT,
+ 	BT_FN_FLOAT32_FLOAT32_INT, BT_FN_FLOAT64_FLOAT64_INT,
+ 	BT_FN_FLOAT128_FLOAT128_INT, BT_FN_FLOAT32X_FLOAT32X_INT,
+ 	BT_FN_FLOAT64X_FLOAT64X_INT, BT_FN_FLOAT128X_FLOAT128X_INT,
+ 	BT_FN_FLOAT16_FLOAT16_INTPTR, BT_FN_FLOAT32_FLOAT32_INTPTR,
+ 	BT_FN_FLOAT64_FLOAT64_INTPTR, BT_FN_FLOAT128_FLOAT128_INTPTR,
+ 	BT_FN_FLOAT32X_FLOAT32X_INTPTR, BT_FN_FLOAT64X_FLOAT64X_INTPTR,
+ 	BT_FN_FLOAT128X_FLOAT128X_INTPTR, BT_FN_FLOAT16_FLOAT16_LONG,
+ 	BT_FN_FLOAT32_FLOAT32_LONG, BT_FN_FLOAT64_FLOAT64_LONG,
+ 	BT_FN_FLOAT128_FLOAT128_LONG, BT_FN_FLOAT32X_FLOAT32X_LONG,
+ 	BT_FN_FLOAT64X_FLOAT64X_LONG, BT_FN_FLOAT128X_FLOAT128X_LONG): New
+ 	DEF_FUNCTION_TYPE_2.
+ 	(BT_FN_FLOAT16_FLOAT16_FLOAT16_INTPTR,
+ 	BT_FN_FLOAT32_FLOAT32_FLOAT32_INTPTR,
+ 	BT_FN_FLOAT64_FLOAT64_FLOAT64_INTPTR,
+ 	BT_FN_FLOAT128_FLOAT128_FLOAT128_INTPTR,
+ 	BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_INTPTR,
+ 	BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_INTPTR,
+ 	BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_INTPTR): New DEF_FUNCTION_TYPE_3.
+ 	* builtins.def (ACOSH_TYPE, ATAN2_TYPE, ATANH_TYPE, COSH_TYPE,
+ 	FDIM_TYPE, HUGE_VAL_TYPE, HYPOT_TYPE, ILOGB_TYPE, LDEXP_TYPE,
+ 	LGAMMA_TYPE, LLRINT_TYPE, LOG10_TYPE, LRINT_TYPE, MODF_TYPE,
+ 	NEXTAFTER_TYPE, REMQUO_TYPE, SCALBLN_TYPE, SCALBN_TYPE, SINH_TYPE):
+ 	Define and undefine later.
+ 	(FMIN_TYPE, SQRT_TYPE): Undefine at a later line.
+ 	(INF_TYPE): Define at a later line.
+ 	(BUILT_IN_ACOSH, BUILT_IN_ACOS, BUILT_IN_ASINH, BUILT_IN_ASIN,
+ 	BUILT_IN_ATAN2, BUILT_IN_ATANH, BUILT_IN_ATAN, BUILT_IN_CBRT,
+ 	BUILT_IN_COSH, BUILT_IN_COS, BUILT_IN_ERFC, BUILT_IN_ERF,
+ 	BUILT_IN_EXP2, BUILT_IN_EXP, BUILT_IN_EXPM1, BUILT_IN_FDIM,
+ 	BUILT_IN_FMOD, BUILT_IN_FREXP, BUILT_IN_HYPOT, BUILT_IN_ILOGB,
+ 	BUILT_IN_LDEXP, BUILT_IN_LGAMMA, BUILT_IN_LLRINT, BUILT_IN_LLROUND,
+ 	BUILT_IN_LOG10, BUILT_IN_LOG1P, BUILT_IN_LOG2, BUILT_IN_LOGB,
+ 	BUILT_IN_LOG, BUILT_IN_LRINT, BUILT_IN_LROUND, BUILT_IN_MODF,
+ 	BUILT_IN_NEXTAFTER, BUILT_IN_POW, BUILT_IN_REMAINDER, BUILT_IN_REMQUO,
+ 	BUILT_IN_SCALBLN, BUILT_IN_SCALBN, BUILT_IN_SINH, BUILT_IN_SIN,
+ 	BUILT_IN_TANH, BUILT_IN_TAN, BUILT_IN_TGAMMA): Add
+ 	DEF_EXT_LIB_FLOATN_NX_BUILTINS.
+ 	(BUILT_IN_HUGE_VAL): Use HUGE_VAL_TYPE instead of INF_TYPE in
+ 	DEF_GCC_FLOATN_NX_BUILTINS.
+ 	* fold-const-call.cc (fold_const_call_ss): Add various CASE_CFN_*_FN:
+ 	cases when CASE_CFN_* is present.
+ 	(fold_const_call_sss): Likewise.
+ 	* builtins.cc (mathfn_built_in_2): Use CASE_MATHFN_FLOATN instead of
+ 	CASE_MATHFN for various builtins in SEQ_OF_CASE_MATHFN macro.
+ 	(builtin_with_linkage_p): Add CASE_FLT_FN_FLOATN_NX for various
+ 	builtins next to CASE_FLT_FN.
+ 	* fold-const.cc (tree_call_nonnegative_warnv_p): Add CASE_CFN_*_FN:
+ 	next to CASE_CFN_*: for various builtins.
+ 	* tree-call-cdce.cc (can_test_argument_range): Add
+ 	CASE_FLT_FN_FLOATN_NX next to CASE_FLT_FN for various builtins.
+ 	(edom_only_function): Likewise.
+ 
+ 2022-10-31  konglin1  <lingling.kong@intel.com>
+ 
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_AVXNECONVERT_SET,
+ 	OPTION_MASK_ISA2_AVXNECONVERT_UNSET): New.
+ 	(ix86_handle_option): Handle -mavxneconvert, unset
+ 	avxneconvert when avx2 is disabled.
+ 	* common/config/i386/i386-cpuinfo.h (processor_types): Add
+ 	FEATURE_AVXNECONVERT.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
+ 	avxneconvert.
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect avxneconvert.
+ 	* config.gcc: Add avxneconvertintrin.h
+ 	* config/i386/avxneconvertintrin.h: New.
+ 	* config/i386/avx512bf16vlintrin.h (_mm256_cvtneps_pbh):
+ 	Unified builtin with avxneconvert.
+ 	(_mm_cvtneps_pbh): Ditto.
+ 	* config/i386/cpuid.h (bit_AVXNECONVERT): New.
+ 	* config/i386/i386-builtin-types.def: Add
+ 	DEF_POINTER_TYPE (PCV8HF, V8HF, CONST),
+ 	DEF_POINTER_TYPE (PCV8BF, V8BF, CONST),
+ 	DEF_POINTER_TYPE (PCV16HF, V16HF, CONST),
+ 	DEF_POINTER_TYPE (PCV16BF, V16BF, CONST),
+ 	DEF_FUNCTION_TYPE (V4SF, PCBFLOAT16),
+ 	DEF_FUNCTION_TYPE (V4SF, PCFLOAT16),
+ 	DEF_FUNCTION_TYPE (V8SF, PCBFLOAT16),
+ 	DEF_FUNCTION_TYPE (V8SF, PCFLOAT16),
+ 	DEF_FUNCTION_TYPE (V4SF, PCV8BF),
+ 	DEF_FUNCTION_TYPE (V4SF, PCV8HF),
+ 	DEF_FUNCTION_TYPE (V8SF, PCV16HF),
+ 	DEF_FUNCTION_TYPE (V8SF, PCV16BF),
+ 	* config/i386/i386-builtin.def: Add new builtins.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+ 	__AVXNECONVERT__.
+ 	* config/i386/i386-expand.cc (ix86_expand_special_args_builtin):
+ 	Handle V4SF_FTYPE_PCBFLOAT16,V8SF_FTYPE_PCBFLOAT16, V4SF_FTYPE_PCFLOAT16,
+ 	V8SF_FTYPE_PCFLOAT16,V4SF_FTYPE_PCV8BF,
+ 	V4SF_FTYPE_PCV8HF,V8SF_FTYPE_PCV16BF,V8SF_FTYPE_PCV16HF.
+ 	* config/i386/i386-isa.def : Add DEF_PTA(AVXNECONVERT) New.
+ 	* config/i386/i386-options.cc (isa2_opts): Add -mavxneconvert.
+ 	(ix86_valid_target_attribute_inner_p): Handle avxneconvert.
+ 	* config/i386/i386.md: Add attr avx512bf16vl and avxneconvert.
+ 	* config/i386/i386.opt: Add option -mavxneconvert.
+ 	* config/i386/immintrin.h: Inculde avxneconvertintrin.h.
+ 	* config/i386/sse.md (vbcstnebf162ps_<mode>): New define_insn.
+ 	(vbcstnesh2ps_<mode>): Ditto.
+ 	(vcvtnee<bf16_ph>2ps_<mode>):Ditto.
+ 	(vcvtneo<bf16_ph>2ps_<mode>):Ditto.
+ 	(vcvtneps2bf16_v4sf): Ditto.
+ 	(*vcvtneps2bf16_v4sf): Ditto.
+ 	(vcvtneps2bf16_v8sf): Ditto.
+ 	* doc/invoke.texi: Document -mavxneconvert.
+ 	* doc/extend.texi: Document avxneconvert.
+ 	* doc/sourcebuild.texi: Document target avxneconvert.
+ 
+ 2022-10-31  konglin1  <lingling.kong@intel.com>
+ 
+ 	* config/i386/avx512bf16intrin.h (__attribute__): Change short to bf16.
+ 	(_mm_cvtsbh_ss): Ditto.
+ 	(_mm512_cvtne2ps_pbh): Ditto.
+ 	(_mm512_mask_cvtne2ps_pbh): Ditto.
+ 	(_mm512_maskz_cvtne2ps_pbh): Ditto.
+ 	* config/i386/avx512bf16vlintrin.h (__attribute__): Ditto.
+ 	(_mm256_cvtne2ps_pbh): Ditto.
+ 	(_mm256_mask_cvtne2ps_pbh): Ditto.
+ 	(_mm256_maskz_cvtne2ps_pbh): Ditto.
+ 	(_mm_cvtne2ps_pbh): Ditto.
+ 	(_mm_mask_cvtne2ps_pbh): Ditto.
+ 	(_mm_maskz_cvtne2ps_pbh): Ditto.
+ 	(_mm_cvtness_sbh): Ditto.
+ 	* config/i386/i386-builtin-types.def (V8BF): Add new
+ 	DEF_VECTOR_TYPE for BFmode.
+ 	(V16BF): Ditto.
+ 	(V32BF): Ditto.
+ 	* config/i386/i386-builtin.def (BDESC): Fixed builtins.
+ 	* config/i386/i386-expand.cc (ix86_expand_args_builtin): Changed
+ 	avx512bf16 ix86_builtin_func_type included HI to BF.
+ 	* config/i386/immintrin.h: Add SSE2 depend for avx512bf16.
+ 	* config/i386/sse.md (TARGET_AVX512VL): Changed HI vector to BF
+ 	vector.
+ 	(avx512f_cvtneps2bf16_v4sf): New define_expand.
+ 	(*avx512f_cvtneps2bf16_v4sf): New define_insn.
+ 	(avx512f_cvtneps2bf16_v4sf_maskz):Ditto.
+ 	(avx512f_cvtneps2bf16_v4sf_mask): Ditto.
+ 	(avx512f_cvtneps2bf16_v4sf_mask_1): Ditto.
+ 
+ 2022-10-31  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107261
+ 	* config/i386/i386-modes.def (VECTOR_MODE): Support V2BFmode.
+ 	* config/i386/i386.cc (classify_argument): Handle V4BFmode and
+ 	V2BFmode.
+ 	(ix86_convert_const_vector_to_integer): Ditto.
+ 	* config/i386/i386.h (VALID_AVX512FP16_REG_MODE): Remove
+ 	V2BFmode.
+ 	(VALID_SSE2_REG_MODE): Add V4BFmode and V2BFmode.
+ 	(VALID_MMX_REG_MODE): Add V4BFmode.
+ 	* config/i386/i386.md (mode): Add V4BF and V2BF.
+ 	(MODE_SIZE): Ditto.
+ 	* config/i386/mmx.md (MMXMODE) Add V4BF.
+ 	(V_32): Add V2BF.
+ 	(V_16_32_64): Add V4BF and V2BF.
+ 	(mmxinsnmode): Add V4BF and V2BF.
+ 	(*mov<mode>_internal): Hanlde V4BFmode and V2BFmode.
+ 
+ 2022-10-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* configure.ac (sjlj-exceptions): Restore dropped line.
+ 	* configure: Regenerate.
+ 
+ 2022-10-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* alias.cc (init_alias_analysis): Do not record sets to the hard
+ 	frame pointer if the frame pointer has not been eliminated.
+ 
+ 2022-10-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/darwin-d.cc (TARGET_D_MINFO_START_NAME): Rename to ...
+ 	(TARGET_D_MINFO_SECTION_START): ...this.
+ 	(TARGET_D_MINFO_END_NAME): Rename to ...
+ 	(TARGET_D_MINFO_SECTION_END): ... this.
+ 	* config/elfos.h (TARGET_D_MINFO_SECTION): Remove.
+ 	(TARGET_D_MINFO_START_NAME): Remove.
+ 	(TARGET_D_MINFO_END_NAME): Remove.
+ 	* config/i386/cygwin-d.cc (TARGET_D_MINFO_SECTION): Remove.
+ 	(TARGET_D_MINFO_START_NAME): Remove.
+ 	(TARGET_D_MINFO_END_NAME): Remove.
+ 	* config/i386/winnt-d.cc (TARGET_D_MINFO_SECTION): Remove.
+ 	(TARGET_D_MINFO_START_NAME): Remove.
+ 	(TARGET_D_MINFO_END_NAME): Remove.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (TARGET_D_MINFO_START_NAME): Rename to ...
+ 	(TARGET_D_MINFO_SECTION_START): ...this.
+ 	(TARGET_D_MINFO_END_NAME): Rename to ...
+ 	(TARGET_D_MINFO_SECTION_END): ...this.
+ 
+ 2022-10-29  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config.gcc: Split out glibc-d.o into linux-d.o, kfreebsd-d.o,
+ 	kopensolaris-d.o, and gnu-d.o.  Split out cygwin-d.o from winnt-d.o.
+ 	* config/arm/linux-eabi.h (EXTRA_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/i386/cygwin.h (EXTRA_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/i386/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/i386/mingw32.h (EXTRA_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/i386/t-cygming: Add cygwin-d.o.
+ 	* config/i386/winnt-d.cc (winnt_d_os_builtins): Only add
+ 	MinGW-specific version condition.
+ 	* config/kfreebsd-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/kopensolaris-gnu.h (GNU_USER_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/linux-android.h (ANDROID_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/linux.h (GNU_USER_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/mips/linux-common.h (EXTRA_TARGET_D_OS_VERSIONS): Remove.
+ 	* config/t-glibc: Remove glibc-d.o, add gnu-d.o, kfreebsd-d.o,
+ 	kopensolaris-d.o.
+ 	* config/t-linux: Add linux-d.o.
+ 	* config/glibc-d.cc: Remove file.
+ 	* config/gnu-d.cc: New file.
+ 	* config/i386/cygwin-d.cc: New file.
+ 	* config/kfreebsd-d.cc: New file.
+ 	* config/kopensolaris-d.cc: New file.
+ 	* config/linux-d.cc: New file.
+ 
+ 2022-10-29  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/h8300.cc (pre_incdec_with_reg): Make reg argument
+ 	an unsigned int
+ 	* config/h8300/h8300-protos.h (pre_incdec_with_reg): Adjust prototype.
+ 
+ 2022-10-28  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_setup_incoming_varargs):
+ 	Check TYPE_NO_NAMED_ARGS_STDARG_P.
+ 	* config/alpha/alpha.cc (alpha_setup_incoming_varargs): Likewise.
+ 	* config/arc/arc.cc (arc_setup_incoming_varargs): Likewise.
+ 	* config/arm/arm.cc (arm_setup_incoming_varargs): Likewise.
+ 	* config/csky/csky.cc (csky_setup_incoming_varargs): Likewise.
+ 	* config/epiphany/epiphany.cc (epiphany_setup_incoming_varargs):
+ 	Likewise.
+ 	* config/fr30/fr30.cc (fr30_setup_incoming_varargs): Likewise.
+ 	* config/frv/frv.cc (frv_setup_incoming_varargs): Likewise.
+ 	* config/ft32/ft32.cc (ft32_setup_incoming_varargs): Likewise.
+ 	* config/i386/i386.cc (ix86_setup_incoming_varargs): Likewise.
+ 	* config/ia64/ia64.cc (ia64_setup_incoming_varargs): Likewise.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_setup_incoming_varargs): Likewise.
+ 	* config/m32r/m32r.cc (m32r_setup_incoming_varargs): Likewise.
+ 	* config/mcore/mcore.cc (mcore_setup_incoming_varargs): Likewise.
+ 	* config/mips/mips.cc (mips_setup_incoming_varargs): Likewise.
+ 	* config/mmix/mmix.cc (mmix_setup_incoming_varargs): Likewise.
+ 	* config/nds32/nds32.cc (nds32_setup_incoming_varargs): Likewise.
+ 	* config/nios2/nios2.cc (nios2_setup_incoming_varargs): Likewise.
+ 	* config/riscv/riscv.cc (riscv_setup_incoming_varargs): Likewise.
+ 	* config/rs6000/rs6000-call.cc (setup_incoming_varargs): Likewise.
+ 	* config/sh/sh.cc (sh_setup_incoming_varargs): Likewise.
+ 	* config/visium/visium.cc (visium_setup_incoming_varargs):
+ 	Likewise.
+ 	* config/vms/vms-c.cc (vms_c_common_override_options): Do not set
+ 	flag_allow_parameterless_variadic_functions.
+ 	* doc/invoke.texi (-fallow-parameterless-variadic-functions): Do
+ 	not document option.
+ 	* function.cc (assign_parms): Call assign_parms_setup_varargs for
+ 	TYPE_NO_NAMED_ARGS_STDARG_P case.
+ 	* ginclude/stdarg.h [__STDC_VERSION__ > 201710L] (va_start): Make
+ 	variadic macro.  Pass second argument of 0 to __builtin_va_start.
+ 	* target.def (setup_incoming_varargs): Update documentation.
+ 	* doc/tm.texi: Regenerate.
+ 	* tree-core.h (struct tree_type_common): Add
+ 	no_named_args_stdarg_p.
+ 	* tree-streamer-in.cc (unpack_ts_type_common_value_fields): Unpack
+ 	TYPE_NO_NAMED_ARGS_STDARG_P.
+ 	* tree-streamer-out.cc (pack_ts_type_common_value_fields): Pack
+ 	TYPE_NO_NAMED_ARGS_STDARG_P.
+ 	* tree.cc (type_cache_hasher::equal): Compare
+ 	TYPE_NO_NAMED_ARGS_STDARG_P.
+ 	(build_function_type): Add argument no_named_args_stdarg_p.
+ 	(build_function_type_list_1, build_function_type_array_1)
+ 	(reconstruct_complex_type): Update calls to build_function_type.
+ 	(stdarg_p, prototype_p): Return true for (...) functions.
+ 	(gimple_canonical_types_compatible_p): Compare
+ 	TYPE_NO_NAMED_ARGS_STDARG_P.
+ 	* tree.h (TYPE_NO_NAMED_ARGS_STDARG_P): New.
+ 	(build_function_type): Update prototype.
+ 
+ 2022-10-28  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/107346
+ 	* tree-vect-data-refs.cc (vect_check_gather_scatter): Reject offsets
+ 	that aren't multiples of BITS_PER_UNIT.
+ 
+ 2022-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107407
+ 	* tree-ssa-dse.cc (dse_classify_store): Perform backedge
+ 	varying index check when collecting PHI uses rather than
+ 	after optimizing processing of the candidate defs.
+ 
+ 2022-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107447
+ 	* tree-ssa-loop-im.cc (determine_max_movement): Do not
+ 	hoist returns-twice calls.
+ 
+ 2022-10-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107435
+ 	* tree-vect-loop.cc (vectorizable_recurr): Convert initial
+ 	value to vector component type.
+ 
+ 2022-10-28  Julian Brown  <julian@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/90115
+ 	* omp-low.cc (oacc_privatization_candidate_p): Artificial vars are not
+ 	privatization candidates.
+ 
+ 2022-10-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/107298
+ 	* doc/invoke.texi: Document sanitizers can trigger warnings.
+ 
+ 2022-10-28  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* doc/makefile.texi (Makefile Targets): Document
+ 	'distclean-stage[N]'.
+ 
+ 2022-10-28  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (range_tests_floats): Use HONOR_INFINITIES.
+ 
+ 2022-10-27  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* config/aarch64/aarch64.h (DONT_USE_BUILTIN_SETJMP): Delete.
+ 
+ 2022-10-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/107172
+ 	* config/i386/i386.md (UNSPEC_CC_NE): New.
+ 	Replace ne:CCC/ne:CCO with UNSPEC_CC_NE in neg patterns.
+ 
+ 2022-10-27  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* tree-ssa-phiopt.cc: Include tree-ssa-dce.h
+ 	(replace_phi_edge_with_variable):
+ 	New argument, dce_ssa_names. Call simple_dce_from_worklist.
+ 	(match_simplify_replacement): If we inserted a sequence,
+ 	mark the lhs of the new sequence to be possible dce.
+ 	Always move the statement and mark the lhs (if it is a name)
+ 	as possible to remove.
+ 
+ 2022-10-27  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h: Replace constexpr with
+ 	CONSTEXPR.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc: Likewise.
+ 	* config/aarch64/aarch64.cc: Likewise.
+ 	* config/aarch64/driver-aarch64.cc: Likewise
+ 
+ 2022-10-27  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107394
+ 	* value-range-storage.cc (frange_storage_slot::get_frange): Use
+ 	frange constructor.
+ 
+ 2022-10-27  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* optc-save-gen.awk: Clarify 'Init' option property usage for
+ 	streaming optimization.
+ 
+ 2022-10-27  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 	    Yvan ROUX  <yvan.roux@foss.st.com>
+ 
+ 	* ira.cc: Resize array after reg number increased.
+ 
+ 2022-10-27  Jiawei  <jiawei@iscas.ac.cn>
+ 	    Sinan Lin  <sinan@isrc.iscas.ac.cn>
+ 
+ 	* config/riscv/constraints.md (TARGET_ZFINX ? GR_REGS): Set GPRS
+ 	use while Zfinx is enable.
+ 	* config/riscv/riscv.cc (riscv_hard_regno_mode_ok): Limit odd
+ 	registers use when Zdinx enable in RV32 cases.
+ 	(riscv_option_override): New target enable MASK_FDIV.
+ 	(riscv_libgcc_floating_mode_supported_p): New error info when
+ 	use incompatible arch&abi.
+ 	(riscv_excess_precision): New target enable FLOAT16.
+ 
+ 2022-10-27  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* config/riscv/iterators.md (TARGET_ZFINX):New target.
+ 	(TARGET_ZDINX): Ditto.
+ 	(TARGET_ZHINX): Ditto.
+ 	* config/riscv/riscv-builtins.cc (AVAIL): Ditto.
+ 	(riscv_atomic_assign_expand_fenv): Ditto.
+ 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Ditto.
+ 	* config/riscv/riscv.md: Ditto.
+ 
+ 2022-10-27  Jiawei  <jiawei@iscas.ac.cn>
+ 	    Sinan Lin  <sinan@isrc.iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc: New extensions.
+ 	* config/riscv/arch-canonicalize: New imply relations.
+ 	* config/riscv/riscv-opts.h (MASK_ZFINX): New mask.
+ 	(MASK_ZDINX): Ditto.
+ 	(MASK_ZHINX): Ditto.
+ 	(MASK_ZHINXMIN): Ditto.
+ 	(TARGET_ZFINX): New target.
+ 	(TARGET_ZDINX): Ditto.
+ 	(TARGET_ZHINX): Ditto.
+ 	(TARGET_ZHINXMIN): Ditto.
+ 	* config/riscv/riscv.opt: New target variable.
+ 
+ 2022-10-26  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/bpf.cc: Support __builtin_preserve_field_info.
+ 	(enum bpf_builtins): Add new builtin.
+ 	(bpf_init_builtins): Likewise.
+ 	(bpf_core_field_info): New function.
+ 	(bpf_expand_builtin): Accomodate new builtin. Refactor adding new
+ 	relocation to...
+ 	(maybe_make_core_relo): ... here. New function.
+ 	(bpf_resolve_overloaded_builtin): Accomodate new builtin.
+ 	(bpf_core_newdecl): Likewise.
+ 	(bpf_core_walk): Likewise.
+ 	(bpf_core_is_maybe_aggregate_access): Improve logic.
+ 	(struct core_walk_data): New.
+ 	* config/bpf/coreout.cc (bpf_core_reloc_add): Allow adding different
+ 	relocation kinds.
+ 	* config/bpf/coreout.h: Analogous change.
+ 	* doc/extend.texi: Document BPF __builtin_preserve_field_info.
+ 
+ 2022-10-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/106393
+ 	* doc/invoke.texi: Document -Wdangling-reference.
+ 
+ 2022-10-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (movdi):
+ 	Copy operands[0...1] to ops[0...3] and then use the latter before
+ 	calling xtensa_split_DI_reg_imm() and emitting insns.
+ 
+ 2022-10-26  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR other/107353
+ 	* ipa-visibility.cc (function_and_variable_visibility):
+ 	Conditionally upgrade TLS model instead of asserting.
+ 
+ 2022-10-26  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fold_using_range::fold_stmt): Check if
+ 	stmt is non-negative and adjust the range.
+ 
+ 2022-10-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/i386/cpuinfo.h (has_cpu_feature): Add comment.
+ 	(reset_cpu_feature): New.
+ 	(get_zhaoxin_cpu): Use reset_cpu_feature.
+ 
+ 2022-10-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.cc (riscv_expand_epilogue): Fix statement.
+ 
+ 2022-10-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	PR target/107357
+ 	* config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Set to minimum size.
+ 	(ADJUST_NUNITS): Adjust according to -march.
+ 	(ADJUST_BYTESIZE): Ditto.
+ 	* config/riscv/riscv-protos.h (riscv_v_ext_enabled_vector_mode_p):
+ 	Remove.
+ 	(riscv_v_ext_vector_mode_p): Change function implementation.
+ 	* config/riscv/riscv-vector-builtins.cc (rvv_switcher::rvv_switcher):
+ 	Change to riscv_v_ext_vector_mode_p.
+ 	(register_builtin_type): Ditto.
+ 	* config/riscv/riscv.cc (riscv_v_ext_vector_mode_p): Change to enabled
+ 	modes.
+ 	(ENTRY): Ditto.
+ 	(riscv_v_ext_enabled_vector_mode_p): Remove.
+ 	(riscv_v_adjust_nunits): New function.
+ 	(riscv_vector_mode_supported_p): Use riscv_v_ext_vector_mode_p instead.
+ 	* config/riscv/riscv.h (riscv_v_adjust_nunits): New function.
+ 
+ 2022-10-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config.gcc (riscv*): Add riscv-v.o to extra_objs.
+ 	* config/riscv/constraints.md (vu): New constraint.
+ 	(vi): Ditto.
+ 	(Wc0): Ditto.
+ 	(Wc1): Ditto.
+ 	* config/riscv/predicates.md (vector_length_operand): New.
+ 	(reg_or_mem_operand): Ditto.
+ 	(vector_move_operand): Ditto.
+ 	(vector_mask_operand): Ditto.
+ 	(vector_merge_operand): Ditto.
+ 	* config/riscv/riscv-protos.h (riscv_regmode_natural_size) New.
+ 	(riscv_vector::const_vec_all_same_in_range_p): Ditto.
+ 	(riscv_vector::legitimize_move): Ditto.
+ 	(tail_policy): Ditto.
+ 	(mask_policy): Ditto.
+ 	* config/riscv/riscv-v.cc: New.
+ 	* config/riscv/riscv-vector-builtins-bases.cc
+ 	(vsetvl::expand): Refactor how LMUL encoding.
+ 	* config/riscv/riscv.cc (riscv_print_operand): Update how LMUL
+ 	print and mask operand print.
+ 	(riscv_regmode_natural_size): New.
+ 	* config/riscv/riscv.h (REGMODE_NATURAL_SIZE): New.
+ 	* config/riscv/riscv.md (mode): Add vector modes.
+ 	* config/riscv/t-riscv (riscv-v.o) New.
+ 	* config/riscv/vector-iterators.md: New.
+ 	* config/riscv/vector.md (vundefined<mode>): New.
+ 	(mov<mode>): New.
+ 	(*mov<mode>): New.
+ 	(@vsetvl<mode>_no_side_effects): New.
+ 	(@pred_mov<mode>): New.
+ 
+ 2022-10-26  Monk Chiang  <monk.chiang@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_version_table):
+ 	Add svinval and svnapot extension.
+ 	(riscv_ext_flag_table): Ditto.
+ 	* config/riscv/riscv-opts.h (MASK_SVINVAL): New.
+ 	(MASK_SVNAPOT): Ditto.
+ 	(TARGET_SVINVAL): Ditto.
+ 	(TARGET_SVNAPOT): Ditto.
+ 	* config/riscv/riscv.opt (riscv_sv_subext): New.
+ 
+ 2022-10-26  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-modes.def: Adjust table indentation in commnet.
+ 
+ 2022-10-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-10-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Use HONOR_*.
+ 	(frange::verify_range): Same.
+ 	* value-range.h (frange_val_min): Same.
+ 	(frange_val_max): Same.
+ 
+ 2022-10-26  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/106460
+ 	* config/rs6000/rs6000.cc (rs6000_cannot_force_const_mem): Return true
+ 	for HIGH code rtx.
+ 
+ 2022-10-26  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_version_table):
+ 	Add `h`.
+ 	(riscv_supported_std_ext): Ditto.
+ 	(multi_letter_subset_rank): Remove `h`.
+ 	(riscv_subset_list::parse_std_ext): Handle `h` as single letter
+ 	extension.
+ 	(riscv_subset_list::parse): Ditto.
+ 
+ 2022-10-25  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* auto-profile.cc (get_combined_location): Include discriminator in the
+ 	returned combined location.
+ 	(read_function_instance): Read discriminators from profiles.
+ 
+ 2022-10-25  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/107304
+ 	* expr.cc (get_inner_reference): Always use TYPE_MODE for vector
+ 	field with vector raw mode.
+ 
+ 2022-10-25  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (CCEITHER): Delete.
+ 	(CCANY): New.
+ 	(un): Delete.
+ 	(isel_<un>signed_<GPR:mode>): Rename to...
+ 	(isel_<CCANY:mode>_<GPR:mode>): ... this.  Adjust.
+ 	(*isel_reversed_<un>signed_<GPR:mode>): Rename to...
+ 	(*isel_reversed_<CCANY:mode>_<GPR:mode>): ... this.  Adjust.
+ 	(setbc_<un>signed_<GPR:mode>): Rename to...
+ 	(setbc_<CCANY:mode>_<GPR:mode>C): ... this.  Adjust."
+ 	(*setbcr_<un>signed_<GPR:mode>): Rename to ...
+ 	(*setbcr_<CCANY:mode>_<GPR:mode>): ... this.  Adjust.
+ 	(*setnbc_<un>signed_<GPR:mode>): Rename to ...
+ 	(*setnbc_<CCANY:mode>_<GPR:mode>): ... this.  Adjust.
+ 	(*setnbcr_<un>signed_<GPR:mode>): Rename to ...
+ 	(*setnbcr_<CCANY:mode>_<GPR:mode>): ... this.  Adjust.
+ 	(eq<mode>3 for GPR): Adjust.
+ 	(ne<mode>3 for GPR): Adjust.
+ 	* config/rs6000/rs6000-string.cc (do_isel): Adjust.
+ 	* config/rs6000/rs6000.cc (rs6000_emit_int_cmove): Adjust.
+ 
+ 2022-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107176
+ 	PR tree-optimization/66375
+ 	PR tree-optimization/42512
+ 	* tree-scalar-evolution.cc (follow_ssa_edge_expr): Revert
+ 	the PR66375 fix, do not not associate PLUS_EXPR to be able
+ 	to use tail-recursion.
+ 	(follow_ssa_edge_binary): Likewise.
+ 	(interpret_loop_phi): Revert PR42512 fix, do not throw
+ 	away analyze_evolution_in_loop result after the fact.
+ 	(follow_ssa_edge_expr): When reaching halting_phi initalize
+ 	the evolution to the symbolic value of the PHI result.
+ 	(add_to_evolution_1): When adding the first evolution verify
+ 	we can handle the expression wrapping the symbolic evolution
+ 	and replace that in full using the initial condition.
+ 	(class scev_dfs): New, contains ...
+ 	(follow_ssa_edge_expr, follow_ssa_edge_binary,
+ 	follow_ssa_edge_in_condition_phi_branch,
+ 	follow_ssa_edge_in_condition_phi,
+ 	follow_ssa_edge_inner_loop_phi,
+ 	add_to_evolution, add_to_evolution_1): ... these with
+ 	loop and halting_phi arguments in class data.
+ 	(scev_dfs::get_ev): New toplevel DFS entry, start with
+ 	a chrec_dont_know evolution.
+ 	(analyze_evolution_in_loop): Use scev_dfs.
+ 
+ 2022-10-25  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* profile.cc (branch_prob): Be prepared for ignored functions with
+ 	DECL_SOURCE_LOCATION set to UNKNOWN_LOCATION.
+ 
+ 2022-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-scalar-evolution.cc (follow_ssa_edge_expr): Move
+ 	STRIP_USELESS_TYPE_CONVERSIONS to where it matters.
+ 
+ 2022-10-25  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
+ 
+ 	* common/config/i386/i386-common.cc (processor_alias_table): Use
+ 	CPU_ZNVER3 for znver4.
+ 	* config/i386/znver.md: Remove znver4 reservations.
+ 
+ 2022-10-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.cc (gimple_boolify): Fix comment typos, prduce -> produce
+ 	and There -> These.
+ 
+ 2022-10-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107368
+ 	* gimplify.cc (gimplify_call_expr): For complex IFN_ASSUME
+ 	conditions call gimple_boolify on the condition.
+ 
+ 2022-10-25  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	* config.gcc: add -with-compact-branches=policy build option.
+ 	* doc/install.texi: Likewise.
+ 	* config/mips/mips.h: Likewise.
+ 
+ 2022-10-25  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	* config/mips/mips.cc (mips_option_override): not trigger error
+ 	for compact-branches=always for pre-R6.
+ 	* config/mips/mips.h (TARGET_RTP_PIC): not trigger error for
+ 	compact-branches=always for pre-R6.
+ 	(TARGET_CB_NEVER): Likewise.
+ 	(TARGET_CB_ALWAYS): Likewise.
+ 	(struct mips_cpu_info): define macros for compact branch policy.
+ 	* doc/invoke.texi: Document "always" with pre-R6.
+ 
+ 2022-10-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107369
+ 	* gimplify.cc (gimplify_call_expr): If seen_error, handle complex
+ 	IFN_ASSUME the same as for -O0.
+ 
+ 2022-10-25  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	* configure.ac: AC_DEFINE(ENABLE_MULTIARCH, 1)
+ 	* configure: Regenerated.
+ 	* config.in: Regenerated.
+ 	* config/mips/mips.h: don't define STANDARD_STARTFILE_PREFIX_1
+ 	if ENABLE_MULTIARCH is defined.
+ 	* config/mips/t-linux64: define correct multiarch path when
+ 	multiarch is enabled.
+ 
+ 2022-10-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100756
+ 	* tree-ssa-loop-niter.cc (expand_simple_operations): Also
+ 	expand multiplications by invariants.
+ 
+ 2022-10-25  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/107338
+ 	* tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern): Move
+ 	shfit_n calculation before the adjustments for widening loads.
+ 
+ 2022-10-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_get_valid_option_values): Get out of ifdef.
+ 
+ 2022-10-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/107364
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_vendor):
+ 	Fix pedantic warning.
+ 
+ 2022-10-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR analyzer/107366
+ 	* diagnostic-format-sarif.cc
+ 	(sarif_builder::maybe_make_physical_location_object): Gracefully
+ 	reject locations with NULL filename.
+ 
+ 2022-10-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/106300
+ 	* doc/invoke.texi (Static Analyzer Options): Add "pipe" and
+ 	"pipe2" to the list of functions the analyzer has hardcoded
+ 	knowledge of.
+ 
+ 2022-10-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree.h (build_string_literal): New one-argument overloads that
+ 	take tree (identifier) and const char *.
+ 	* builtins.cc (fold_builtin_FILE)
+ 	(fold_builtin_FUNCTION)
+ 	* gimplify.cc (gimple_add_init_for_auto_var)
+ 	* vtable-verify.cc (verify_bb_vtables): Simplify calls.
+ 
+ 2022-10-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/107364
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_vendor):
+ 	Reorder enum values as BUILTIN_VENDOR_MAX should not point
+ 	in the middle of the valid enum values.
+ 
+ 2022-10-24  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/107276
+ 	* tree.cc (maybe_wrap_with_location): Don't create a location wrapper
+ 	when the type is erroneous.
+ 
+ 2022-10-24  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/106583
+ 	* config/aarch64/aarch64.cc (aarch64_internal_mov_immediate)
+ 	Add support for a bitmask immediate with 2 MOVKs.
+ 	(aarch64_check_bitmask): New function after refactorization.
+ 	(aarch64_bitmask_imm): Simplify replication of small modes.
+ 	Split function into 64-bit only version for efficiency.
+ 	(aarch64_move_imm): Move near other immediate functions.
+ 	(aarch64_uimm12_shift): Likewise.
+ 	(aarch64_clamp_to_uimm12_shift): Likewise.
+ 	(aarch64_movk_shift): Likewise.
+ 	(aarch64_replicate_bitmask_imm): Likewise.
+ 	(aarch64_and_split_imm1): Likewise.
+ 	(aarch64_and_split_imm2): Likewise.
+ 	(aarch64_and_bitmask_imm): Likewise.
+ 	(aarch64_movw_imm): Likewise.
+ 
+ 2022-10-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107355
+ 	* range-op-float.cc (foperator_abs::op1_range): Handle NAN.
+ 
+ 2022-10-24  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/107236
+ 	* omp-expand.cc (expand_omp_target): Set calls_declare_variant_alt
+ 	in DECL_CONTEXT and not to cfun->decl.
+ 	* cgraphclones.cc (cgraph_node::create_clone): Copy also the
+ 	node's calls_declare_variant_alt value.
+ 
+ 2022-10-24  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_tunes): New.
+ 	(riscv_get_valid_option_values): New.
+ 	(TARGET_GET_VALID_OPTION_VALUES): New.
+ 	* config/riscv/riscv-cores.def (RISCV_TUNE): New, define options
+ 	for tune here.
+ 	(RISCV_CORE): Fix comment.
+ 	* config/riscv/riscv.cc (riscv_tune_info_table): Move definition to
+ 	riscv-cores.def.
+ 
+ 2022-10-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107365
+ 	* value-range.cc (frange::verify_range): Predicate NAN check in
+ 	VARYING range on HONOR_NANS instead of flag_finite_math_only.
+ 	(range_tests_floats): Same.
+ 	(range_tests_floats_various): New.
+ 	(range_tests): Call range_tests_floats_various.
+ 
+ 2022-10-24  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 	    Yvan ROUX  <yvan.roux@foss.st.com>
+ 
+ 	* lto-wrapper.cc: Quote paths in makefile.
+ 
+ 2022-10-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.cc (riscv_legitimize_move): Support (set (mem) (const_poly_int)).
+ 
+ 2022-10-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins-bases.cc: Replace CONSTEXPR
+ 	with constexpr throughout.
+ 	* config/riscv/riscv-vector-builtins-shapes.cc (SHAPE): Likewise.
+ 	* config/riscv/riscv-vector-builtins.cc
+ 	(struct registered_function_hasher): Likewise.
+ 	* config/riscv/riscv-vector-builtins.h (struct rvv_arg_type_info):
+ 	Likewise.
+ 
+ 2022-10-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-switch.def (ENTRY): Remove unused TI/TF vector modes.
+ 
+ 2022-10-24  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.h (REG_CLASS_CONTENTS): Fix ALL_REGS.
+ 
+ 2022-10-22  Michael Eager  <eager@eagercon.com>
+ 
+ 	* config/microblaze/microblaze.cc
+ 	(microblaze_legitimize_address): Initialize 'reg' to NULL, check for NULL.
+ 	(microblaze_address_insns): Replace abort() with gcc_unreachable().
+ 	(print_operand_address): Same.
+ 	(microblaze_expand_move): Initialize 'p1' to NULL, check for NULL.
+ 	(get_branch_target): Replace abort() with gcc_unreachable().
+ 
+ 2022-10-22  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (range_tests_floats): Predicate [-Inf, +Inf] test
+ 	with !flag_finite_math_only.
+ 
+ 2022-10-22  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_conditional_register_usage):
+ 	Remove register A0 from FIXED_REGS if the CALL0 ABI.
+ 	(xtensa_expand_epilogue): Change to emit '(use (reg:SI A0_REG))'
+ 	unconditionally after restoring callee-saved registers for
+ 	sibling-call functions, in order to prevent misleading that
+ 	register A0 is free to use.
+ 
+ 2022-10-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107322
+ 	* config/i386/i386-expand.cc (ix86_prepare_fp_compare_args): For
+ 	BFmode comparisons promote arguments to SFmode and recurse.
+ 	(ix86_expand_int_movcc, ix86_expand_fp_movcc): Return false early
+ 	if comparison operands are BFmode and operands[1] is not
+ 	ix86_fp_comparison_operator.
+ 
+ 2022-10-21  Tejas Joshi  <TejasSanjay.Joshi@amd.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_amd_cpu): Recognize znver4.
+ 	* common/config/i386/i386-common.cc (processor_names): Add znver4.
+ 	(processor_alias_table): Add znver4 and modularize old znvers.
+ 	* common/config/i386/i386-cpuinfo.h (processor_subtypes):
+ 	AMDFAM19H_ZNVER4.
+ 	* config.gcc (x86_64-*-* |...): Likewise.
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu): Let
+ 	-march=native recognize znver4 cpus.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Add znver4.
+ 	* config/i386/i386-options.cc (m_ZNVER4): New definition.
+ 	(m_ZNVER): Include m_ZNVER4.
+ 	(processor_cost_table): Add znver4.
+ 	* config/i386/i386.cc (ix86_reassociation_width): Likewise.
+ 	* config/i386/i386.h (processor_type): Add PROCESSOR_ZNVER4.
+ 	(PTA_ZNVER1): New definition.
+ 	(PTA_ZNVER2): Likewise.
+ 	(PTA_ZNVER3): Likewise.
+ 	(PTA_ZNVER4): Likewise.
+ 	* config/i386/i386.md (define_attr "cpu"): Add znver4 and rename
+ 	md file.
+ 	* config/i386/x86-tune-costs.h (znver4_cost): New definition.
+ 	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Add znver4.
+ 	(ix86_adjust_cost): Likewise.
+ 	* config/i386/znver1.md: Rename to znver.md.
+ 	* config/i386/znver.md: Add new reservations for znver4.
+ 	* doc/extend.texi: Add details about znver4.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2022-10-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107323
+ 	* tree-loop-distribution.cc (pg_unmark_merged_alias_ddrs):
+ 	New function.
+ 	(loop_distribution::break_alias_scc_partitions): Revert
+ 	postorder save/restore from the PR94125 fix.  Instead
+ 	make sure to not ignore edges from SCCs we are going to
+ 	merge.
+ 
+ 2022-10-21  Monk Chiang  <monk.chiang@sifive.com>
+ 
+ 	* config/riscv/riscv.md: Add atomic type attribute.
+ 	* config/riscv/sync.md: Add atomic type for atomic instructions.
+ 
+ 2022-10-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/54346
+ 	* match.pd ((vec_perm (vec_perm@0 @1 @2 VECTOR_CST) @0 VECTOR_CST)):
+ 	Optimize nested VEC_PERM_EXPRs even if target can't handle the
+ 	new one provided we don't increase number of VEC_PERM_EXPRs the
+ 	target can't handle.
+ 
+ 2022-10-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config.gcc: Add riscv-vector-builtins-bases.o and riscv-vector-builtins-shapes.o
+ 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_I_OPS): New macro.
+ 	(DEF_RVV_FUNCTION): Ditto.
+ 	(handle_pragma_vector): Add intrinsic framework.
+ 	* config/riscv/riscv.cc (riscv_print_operand): Add operand print for vsetvl/vsetvlmax.
+ 	* config/riscv/riscv.md: include vector.md.
+ 	* config/riscv/t-riscv: Add riscv-vector-builtins-bases.o and riscv-vector-builtins-shapes.o
+ 	* config/riscv/riscv-vector-builtins-bases.cc: New file.
+ 	* config/riscv/riscv-vector-builtins-bases.h: New file.
+ 	* config/riscv/riscv-vector-builtins-functions.def: New file.
+ 	* config/riscv/riscv-vector-builtins-shapes.cc: New file.
+ 	* config/riscv/riscv-vector-builtins-shapes.h: New file.
+ 	* config/riscv/riscv-vector-builtins-types.def: New file.
+ 	* config/riscv/vector.md: New file.
+ 
+ 2022-10-21  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config.gcc: Add gt files since function_instance is GTY ((user)).
+ 	* config/riscv/riscv-builtins.cc (riscv_init_builtins): Add RVV intrinsic framework.
+ 	(riscv_builtin_decl): Ditto.
+ 	(riscv_expand_builtin): Ditto.
+ 	* config/riscv/riscv-protos.h (builtin_decl): New function.
+ 	(expand_builtin): Ditto.
+ 	(enum riscv_builtin_class): New enum to classify RVV intrinsic and RISC-V general built-in.
+ 	* config/riscv/riscv-vector-builtins.cc (class GTY): New declaration.
+ 	(struct registered_function_hasher): New struct.
+ 	(DEF_RVV_OP_TYPE): New macro.
+ 	(DEF_RVV_TYPE): Ditto.
+ 	(DEF_RVV_PRED_TYPE): Ditto.
+ 	(GTY): New declaration.
+ 	(add_attribute): New function.
+ 	(check_required_extensions): Ditto.
+ 	(rvv_arg_type_info::get_tree_type): Ditto.
+ 	(function_instance::function_instance): Ditto.
+ 	(function_instance::operator==): Ditto.
+ 	(function_instance::any_type_float_p): Ditto.
+ 	(function_instance::get_return_type): Ditto.
+ 	(function_instance::get_arg_type): Ditto.
+ 	(function_instance::hash): Ditto.
+ 	(function_instance::call_properties): Ditto.
+ 	(function_instance::reads_global_state_p): Ditto.
+ 	(function_instance::modifies_global_state_p): Ditto.
+ 	(function_instance::could_trap_p): Ditto.
+ 	(function_builder::function_builder): Ditto.
+ 	(function_builder::~function_builder): Ditto.
+ 	(function_builder::allocate_argument_types): Ditto.
+ 	(function_builder::register_function_group): Ditto.
+ 	(function_builder::append_name): Ditto.
+ 	(function_builder::finish_name): Ditto.
+ 	(function_builder::get_attributes): Ditto.
+ 	(function_builder::add_function): Ditto.
+ 	(function_builder::add_unique_function): Ditto.
+ 	(function_call_info::function_call_info): Ditto.
+ 	(function_expander::function_expander): Ditto.
+ 	(function_expander::add_input_operand): Ditto.
+ 	(function_expander::generate_insn): Ditto.
+ 	(registered_function_hasher::hash): Ditto.
+ 	(registered_function_hasher::equal): Ditto.
+ 	(builtin_decl): Ditto.
+ 	(expand_builtin): Ditto.
+ 	(gt_ggc_mx): Define for using GCC garbage collect.
+ 	(gt_pch_nx): Define for using GCC garbage collect.
+ 	* config/riscv/riscv-vector-builtins.def (DEF_RVV_OP_TYPE): New macro.
+ 	(DEF_RVV_PRED_TYPE): Ditto.
+ 	(vbool64_t): Add suffix.
+ 	(vbool32_t): Ditto.
+ 	(vbool16_t): Ditto.
+ 	(vbool8_t): Ditto.
+ 	(vbool4_t): Ditto.
+ 	(vbool2_t): Ditto.
+ 	(vbool1_t): Ditto.
+ 	(vint8mf8_t): Ditto.
+ 	(vuint8mf8_t): Ditto.
+ 	(vint8mf4_t): Ditto.
+ 	(vuint8mf4_t): Ditto.
+ 	(vint8mf2_t): Ditto.
+ 	(vuint8mf2_t): Ditto.
+ 	(vint8m1_t): Ditto.
+ 	(vuint8m1_t): Ditto.
+ 	(vint8m2_t): Ditto.
+ 	(vuint8m2_t): Ditto.
+ 	(vint8m4_t): Ditto.
+ 	(vuint8m4_t): Ditto.
+ 	(vint8m8_t): Ditto.
+ 	(vuint8m8_t): Ditto.
+ 	(vint16mf4_t): Ditto.
+ 	(vuint16mf4_t): Ditto.
+ 	(vint16mf2_t): Ditto.
+ 	(vuint16mf2_t): Ditto.
+ 	(vint16m1_t): Ditto.
+ 	(vuint16m1_t): Ditto.
+ 	(vint16m2_t): Ditto.
+ 	(vuint16m2_t): Ditto.
+ 	(vint16m4_t): Ditto.
+ 	(vuint16m4_t): Ditto.
+ 	(vint16m8_t): Ditto.
+ 	(vuint16m8_t): Ditto.
+ 	(vint32mf2_t): Ditto.
+ 	(vuint32mf2_t): Ditto.
+ 	(vint32m1_t): Ditto.
+ 	(vuint32m1_t): Ditto.
+ 	(vint32m2_t): Ditto.
+ 	(vuint32m2_t): Ditto.
+ 	(vint32m4_t): Ditto.
+ 	(vuint32m4_t): Ditto.
+ 	(vint32m8_t): Ditto.
+ 	(vuint32m8_t): Ditto.
+ 	(vint64m1_t): Ditto.
+ 	(vuint64m1_t): Ditto.
+ 	(vint64m2_t): Ditto.
+ 	(vuint64m2_t): Ditto.
+ 	(vint64m4_t): Ditto.
+ 	(vuint64m4_t): Ditto.
+ 	(vint64m8_t): Ditto.
+ 	(vuint64m8_t): Ditto.
+ 	(vfloat32mf2_t): Ditto.
+ 	(vfloat32m1_t): Ditto.
+ 	(vfloat32m2_t): Ditto.
+ 	(vfloat32m4_t): Ditto.
+ 	(vfloat32m8_t): Ditto.
+ 	(vfloat64m1_t): Ditto.
+ 	(vfloat64m2_t): Ditto.
+ 	(vfloat64m4_t): Ditto.
+ 	(vfloat64m8_t): Ditto.
+ 	(vv): Ditto.
+ 	(vx): Ditto.
+ 	(v): Ditto.
+ 	(wv): Ditto.
+ 	(wx): Ditto.
+ 	(x_x_v): Ditto.
+ 	(vf2): Ditto.
+ 	(vf4): Ditto.
+ 	(vf8): Ditto.
+ 	(vvm): Ditto.
+ 	(vxm): Ditto.
+ 	(x_x_w): Ditto.
+ 	(v_v): Ditto.
+ 	(v_x): Ditto.
+ 	(vs): Ditto.
+ 	(mm): Ditto.
+ 	(m): Ditto.
+ 	(vf): Ditto.
+ 	(vm): Ditto.
+ 	(wf): Ditto.
+ 	(vfm): Ditto.
+ 	(v_f): Ditto.
+ 	(ta): Ditto.
+ 	(tu): Ditto.
+ 	(ma): Ditto.
+ 	(mu): Ditto.
+ 	(tama): Ditto.
+ 	(tamu): Ditto.
+ 	(tuma): Ditto.
+ 	(tumu): Ditto.
+ 	(tam): Ditto.
+ 	(tum): Ditto.
+ 	* config/riscv/riscv-vector-builtins.h (GCC_RISCV_VECTOR_BUILTINS_H): New macro.
+ 	(RVV_REQUIRE_RV64BIT): Ditto.
+ 	(RVV_REQUIRE_ZVE64): Ditto.
+ 	(RVV_REQUIRE_ELEN_FP_32): Ditto.
+ 	(RVV_REQUIRE_ELEN_FP_64): Ditto.
+ 	(enum operand_type_index): New enum.
+ 	(DEF_RVV_OP_TYPE): New macro.
+ 	(enum predication_type_index): New enum.
+ 	(DEF_RVV_PRED_TYPE): New macro.
+ 	(enum rvv_base_type): New enum.
+ 	(struct rvv_builtin_suffixes): New struct.
+ 	(struct rvv_arg_type_info): Ditto.
+ 	(struct rvv_type_info): Ditto.
+ 	(struct rvv_op_info): Ditto.
+ 	(class registered_function): New class.
+ 	(class function_base): Ditto.
+ 	(class function_shape): Ditto.
+ 	(struct function_group_info): New struct.
+ 	(class GTY): New class.
+ 	(class function_builder): Ditto.
+ 	(class function_call_info): Ditto.
+ 	(function_call_info::function_returns_void_p): New function.
+ 	(class function_expander): New class.
+ 	(function_instance::operator!=): New function.
+ 	(function_expander::expand): Ditto.
+ 	(function_expander::add_input_operand): Ditto.
+ 	(function_base::call_properties): Ditto.
+ 
+ 2022-10-21  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* config/i386/sse.md (ssedvecmode): Rename from VI1SI.
+ 	(ssedvecmodelower): Rename from vi1si.
+ 	(sdot_prod<mode>): New define_expand.
+ 	(udot_prod<mode>): Ditto.
+ 
+ 2022-10-21  Kong Lingling  <lingling.kong@intel.com>
+ 	    Hongyu Wang  <hongyu.wang@intel.com>
+ 	    Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features): Detect
+ 	avxvnniint8.
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_AVXVNNIINT8_SET): New.
+ 	(OPTION_MASK_ISA2_AVXVNNIINT8_UNSET): Ditto.
+ 	(ix86_handle_option): Handle -mavxvnniint8.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_features):
+ 	Add FEATURE_AVXVNNIINT8.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
+ 	avxvnniint8.
+ 	* config.gcc: Add avxvnniint8intrin.h.
+ 	* config/i386/avxvnniint8intrin.h: New file.
+ 	* config/i386/cpuid.h (bit_AVXVNNIINT8): New.
+ 	* config/i386/i386-builtin.def: Add new builtins.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+ 	__AVXVNNIINT8__.
+ 	* config/i386/i386-options.cc (isa2_opts): Add -mavxvnniint8.
+ 	(ix86_valid_target_attribute_inner_p): Handle avxvnniint8.
+ 	* config/i386/i386-isa.def: Add DEF_PTA(AVXVNNIINT8) New..
+ 	* config/i386/i386.opt: Add option -mavxvnniint8.
+ 	* config/i386/immintrin.h: Include avxvnniint8intrin.h.
+ 	* config/i386/sse.md (UNSPEC_VPMADDUBSWACCD
+ 	UNSPEC_VPMADDUBSWACCSSD,UNSPEC_VPMADDWDACCD,
+ 	UNSPEC_VPMADDWDACCSSD): Rename according to new style.
+ 	(vpdp<vpdotprodtype>_<mode>): New define_insn.
+ 	* doc/extend.texi: Document avxvnniint8.
+ 	* doc/invoke.texi: Document -mavxvnniint8.
+ 	* doc/sourcebuild.texi: Document target avxvnniint8.
+ 
+ 2022-10-21  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA_AVXIFMA_SET, OPTION_MASK_ISA2_AVXIFMA_UNSET,
+ 	OPTION_MASK_ISA2_AVX2_UNSET): New macro.
+ 	(ix86_handle_option): Handle -mavxifma.
+ 	* common/config/i386/i386-cpuinfo.h (processor_types): Add
+ 	FEATURE_AVXIFMA.
+ 	* common/config/i386/i386-isas.h: Add ISA_NAME_TABLE_ENTRY for
+ 	avxifma.
+ 	* common/config/i386/cpuinfo.h (get_available_features):
+ 	Detect avxifma.
+ 	* config.gcc: Add avxifmaintrin.h
+ 	* config/i386/avx512ifmavlintrin.h: (_mm_madd52lo_epu64): Change
+ 	to macro.
+ 	(_mm_madd52hi_epu64): Likewise.
+ 	(_mm256_madd52lo_epu64): Likewise.
+ 	(_mm256_madd52hi_epu64): Likewise.
+ 	* config/i386/avxifmaintrin.h: New header.
+ 	* config/i386/cpuid.h (bit_AVXIFMA): New.
+ 	* config/i386/i386-builtin.def: Add new builtins, and correct
+ 	pattern names for AVX512IFMA.
+ 	* config/i386/i386-builtins.cc (def_builtin): Handle AVX-IFMA
+ 	builtins like AVX-VNNI.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Define
+ 	__AVXIFMA__.
+ 	* config/i386/i386-expand.cc (ix86_check_builtin_isa_match):
+ 	Relax ISA masks for AVXIFMA.
+ 	* config/i386/i386-isa.def: Add AVXIFMA.
+ 	* config/i386/i386-options.cc (isa2_opts): Add -mavxifma.
+ 	(ix86_valid_target_attribute_inner_p): Handle avxifma.
+ 	* config/i386/i386.md (isa): Add attr avxifma and avxifmavl.
+ 	* config/i386/i386.opt: Add option -mavxifma.
+ 	* config/i386/immintrin.h: Inculde avxifmaintrin.h.
+ 	* config/i386/sse.md (avx_vpmadd52<vpmadd52type>_<mode>):
+ 	Remove.
+ 	(vpamdd52<vpmadd52type><mode><sd_maskz_name>): Remove.
+ 	(vpamdd52huq<mode>_maskz): Rename to ...
+ 	(vpmadd52huq<mode>_maskz): ... this.
+ 	(vpamdd52luq<mode>_maskz): Rename to ...
+ 	(vpmadd52luq<mode>_maskz): ... this.
+ 	(vpmadd52<vpmadd52type><mode>): New define_insn.
+ 	(vpmadd52<vpmadd52type>v8di): Likewise.
+ 	(vpmadd52<vpmadd52type><mode>_maskz_1): Likewise.
+ 	(vpamdd52<vpmadd52type><mode>_mask): Rename to ...
+ 	(vpmadd52<vpmadd52type><mode>_mask): ... this.
+ 	* doc/invoke.texi: Document -mavxifma.
+ 	* doc/extend.texi: Document avxifma.
+ 	* doc/sourcebuild.texi: Document target avxifma.
+ 
+ 2022-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR c++/106654
+ 	* value-query.cc (get_range_global): Handle non integer ranges for
+ 	default def SSA names.
+ 
+ 2022-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_unordered_lt::op1_range): New.
+ 	(foperator_unordered_lt::op2_range): New.
+ 
+ 2022-10-20  Artem Klimov  <jakmobius@gmail.com>
+ 	    Alexander Monakov   <amonakov@gcc.gnu.org>
+ 
+ 	PR middle-end/99619
+ 	* ipa-visibility.cc (function_and_variable_visibility): Promote
+ 	TLS access model afer visibility optimizations.
+ 	* varasm.cc (have_optimized_refs): New helper.
+ 	(optimize_dyn_tls_for_decl_p): New helper. Use it ...
+ 	(decl_default_tls_model): ... here in place of 'optimize' check.
+ 
+ 2022-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_unordered_le::op1_range): Adjust
+ 	false side with a NAN operand.
+ 	(foperator_unordered_le::op2_range): Same.
+ 	(foperator_unordered_gt::op1_range): Same.
+ 	(foperator_unordered_gt::op2_range): Same.
+ 	(foperator_unordered_ge::op1_range): Same.
+ 	(foperator_unordered_ge::op2_range): Same.
+ 	(foperator_unordered_equal::op1_range): Same.
+ 
+ 2022-10-20  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/107326
+ 	* tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern): Change
+ 	vectype when widening container.
+ 
+ 2022-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (frange::set_varying): Do not set NAN flags for
+ 	!HONOR_NANS.
+ 	* value-range.cc (frange::normalize_kind): Adjust for no NAN when
+ 	!HONOR_NANS.
+ 	(frange::verify_range): Same.
+ 	* range-op-float.cc (maybe_isnan): Remove flag_finite_math_only check.
+ 
+ 2022-10-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (finite_operand_p): Remove.
+ 	(finite_operands_p): Rename to...
+ 	(maybe_isnan): ...this.
+ 	(frelop_early_resolve): Use maybe_isnan instead of finite_operands_p.
+ 	(foperator_equal::fold_range): Same.
+ 	(foperator_equal::op1_range): Same.
+ 	(foperator_not_equal::fold_range): Same.
+ 	(foperator_lt::fold_range): Same.
+ 	(foperator_le::fold_range): Same.
+ 	(foperator_gt::fold_range): Same.
+ 	(foperator_ge::fold_range): Same.
+ 
+ 2022-10-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* passes.cc (pass_manager::register_pass): Fix a comment
+ 	typo - copmilation -> compilation.
+ 
+ 2022-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop.cc (vect_phi_first_order_recurrence_p):
+ 	Disallow latch PHI defs.
+ 	(vectorizable_recurr): Revert previous change.
+ 
+ 2022-10-20  Julian Brown  <julian@codesourcery.com>
+ 
+ 	PR target/105421
+ 	* config/gcn/gcn.cc (gcn_detect_incoming_pointer_arg): Any pointer
+ 	argument forces FLAT addressing mode, not just
+ 	pointer-to-non-aggregate.
+ 
+ 2022-10-20  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* configure.ac (AC_CONFIG_MACRO_DIRS): Instantiate.
+ 	* configure: Regenerate.
+ 
+ 2022-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins.h
+ 	(gimple_folder::fold_to_cstu): New member function.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(gimple_folder::fold_to_cstu): Define.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc
+ 	(svcnt_bhwd_impl::fold): Use it.
+ 
+ 2022-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-functions.h (quiet)
+ 	(rtx_code_function, rtx_code_function_rotated, unspec_based_function)
+ 	(unspec_based_function_rotated, unspec_based_function_exact_insn)
+ 	(unspec_based_fused_function, unspec_based_fused_lane_function):
+ 	Replace constructors with using directives.
+ 	* config/aarch64/aarch64-sve-builtins-base.cc (svcnt_bhwd_pat_impl)
+ 	(svcreate_impl, svdotprod_lane_impl, svget_impl, svld1_extend_impl)
+ 	(svld1_gather_extend_impl, svld234_impl, svldff1_gather_extend)
+ 	(svset_impl, svst1_scatter_truncate_impl, svst1_truncate_impl)
+ 	(svst234_impl, svundef_impl): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc
+ 	(svldnt1_gather_extend_impl, svmovl_lb_impl): Likewise.
+ 	(svstnt1_scatter_truncate_impl): Likewise.
+ 
+ 2022-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc: Replace CONSTEXPR
+ 	with constexpr throughout.
+ 	* config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc: Likewise.
+ 
+ 2022-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-sve.md (*aarch64_brk<brk_op>_cc): Remove
+ 	merging alternative.
+ 	(*aarch64_brk<brk_op>_ptest): Likewise.
+ 
+ 2022-10-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (SVE_BRKP): New iterator.
+ 	* config/aarch64/aarch64-sve.md (*aarch64_brkn_cc): New pattern.
+ 	(*aarch64_brkn_ptest): Likewise.
+ 	(*aarch64_brk<brk_op>_cc): Restrict to SVE_BRKP.
+ 	(*aarch64_brk<brk_op>_ptest): Likewise.
+ 
+ 2022-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/107305
+ 	PR c/107306
+ 	* tree-cfg.h (verify_gimple_in_seq): Add parameter to
+ 	indicate whether to emit an ICE.  Add return value.
+ 	(verify_gimple_in_cfg): Likewise.
+ 	* tree-cfg.cc (verify_gimple_in_seq): Likewise.
+ 	(verify_gimple_in_cfg): Likewise.
+ 
+ 2022-10-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107240
+ 	* tree-vect-patterns.cc (vect_recog_bit_insert_pattern): Attempt to
+ 	simplify shifted value first.
+ 
+ 2022-10-20  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-gori.h (compute_operand_range): Make public.
+ 	* gimple-range-infer.cc (gimple_infer_range::check_assume_func): New.
+ 	(gimple_infer_range::gimple_infer_range): Check for assume calls.
+ 	* gimple-range-infer.h (check_assume_func): Add prototype.
+ 	* gimple-range.cc (assume_query::assume_range_p): New.
+ 	(assume_query::range_of_expr): New.
+ 	(assume_query::assume_query): New.
+ 	(assume_query::calculate_op): New.
+ 	(assume_query::calculate_phi): New.
+ 	(assume_query::check_taken_edge): New.
+ 	(assume_query::calculate_stmt): New.
+ 	(assume_query::dump): New.
+ 	* gimple-range.h (class assume_query): New.
+ 	* tree-vrp.cc (pass_assumptions::execute): Add processing.
+ 
+ 2022-10-19  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (build_le): Document result.
+ 	(build_lt): Same.
+ 	(build_ge): Same.
+ 	(foperator_ge::op2_range): Check result of build_*.
+ 	(foperator_unordered_le::op1_range): Same.
+ 	(foperator_unordered_le::op2_range): Same.
+ 	(foperator_unordered_gt::op1_range): Same.
+ 	(foperator_unordered_gt::op2_range): Same.
+ 	(foperator_unordered_ge::op1_range): Same.
+ 	(foperator_unordered_ge::op2_range): Same.
+ 
+ 2022-10-19  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/85043
+ 	* doc/invoke.texi: Update documentation of -Wuseless-cast.
+ 
+ 2022-10-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Use
+ 	Value_Range not int_range_max.
+ 
+ 2022-10-19  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107312
+ 	* range.h (range_true_and_false): Special case 1-bit signed types.
+ 	* value-range.cc (range_tests_misc): New test.
+ 
+ 2022-10-19  LIU Hao  <lh_mouse@126.com>
+ 
+ 	* config/i386/mingw-mcfgthread.h: New file
+ 	* config/i386/mingw32.h: Add builtin macro and default libraries
+ 	for mcfgthread when thread model is `mcf`
+ 	* config.gcc: Include 'i386/mingw-mcfgthread.h' when thread model
+ 	is `mcf`
+ 	* configure.ac: Recognize `mcf` as a valid thread model
+ 	* config.in: Regenerate
+ 	* configure: Regenerate
+ 
+ 2022-10-19  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	* gengtype.cc (output_escaped_param): Add missing const.
+ 	(get_string_option): Add missing check for option type.
+ 	(walk_type): Support new "string_length" GTY option.
+ 	(write_types_process_field): Likewise.
+ 	* ggc-common.cc (gt_pch_note_object): Add optional length argument.
+ 	* ggc.h (gt_pch_note_object): Adjust prototype for new argument.
+ 	(gt_pch_n_S2): Declare...
+ 	* stringpool.cc (gt_pch_n_S2): ...new function.
+ 	* doc/gty.texi: Document new GTY((string_length)) option.
+ 
+ 2022-10-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/extend.texi: Remove useless @tie{} directives.
+ 
+ 2022-10-19  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/107206
+ 	* tree-sra.cc (struct access): New field grp_result_of_prop_from_lhs.
+ 	(analyze_access_subtree): Do not create replacements for accesses with
+ 	this flag when not toally scalarizing.
+ 	(propagate_subaccesses_from_lhs): Set the new flag.
+ 
+ 2022-10-19  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	PR target/106355
+ 	* config/s390/s390.cc (s390_call_saved_register_used): For a
+ 	parameter with BLKmode fix determining number of consecutive
+ 	registers.
+ 
+ 2022-10-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa-protos.h
+ 	(xtensa_split1_finished_p, xtensa_split_DI_reg_imm): New prototypes.
+ 	* config/xtensa/xtensa.cc
+ 	(xtensa_split1_finished_p, xtensa_split_DI_reg_imm, xtensa_lra_p):
+ 	New functions.
+ 	(TARGET_LRA_P): Replace the dummy hook with xtensa_lra_p.
+ 	(xt_true_regnum): Rework.
+ 	* config/xtensa/xtensa.h (CALL_REALLY_USED_REGISTERS):
+ 	Switch from CALL_USED_REGISTERS, and revise the comment.
+ 	* config/xtensa/constraints.md (Y):
+ 	Use !xtensa_split1_finished_p() instead of can_create_pseudo_p().
+ 	* config/xtensa/predicates.md (move_operand): Ditto.
+ 	* config/xtensa/xtensa.md: Add two new split patterns:
+ 	- splits DImode immediate load into two SImode ones
+ 	- puts out-of-constraint SImode constants into the constant pool
+ 	* config/xtensa/xtensa.opt (-mlra): New target-specific option
+ 	for testing purpose.
+ 
+ 2022-10-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.md: Move reload_completed and check operands for REG_P.
+ 
+ 2022-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/107262
+ 	* expr.cc (convert_mode_scalar): For BFmode -> SFmode conversions
+ 	of constants, use simplify_unary_operation if fromi has VOIDmode
+ 	instead of recursive convert_mode_scalar.
+ 
+ 2022-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/106990
+ 	* match.pd ((~X - ~Y) -> Y - X, -x & 1 -> x & 1): Guard with
+ 	!TYPE_OVERFLOW_SANITIZED (type).
+ 
+ 2022-10-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386-builtins.cc (ix86_bf16_ptr_type_node): Remove.
+ 	(ix86_bf16_type_node): New variable.
+ 	(ix86_register_bf16_builtin_type): If bfloat16_type_node is NULL
+ 	from generic code, set only ix86_bf16_type_node to a new REAL_TYPE
+ 	rather than bfloat16_type_node, otherwise set ix86_bf16_type_node
+ 	to bfloat16_type_node.  Register __bf16 on ix86_bf16_type_node
+ 	rather than bfloat16_type_node.  Don't initialize unused
+ 	ix86_bf16_ptr_type_node.
+ 	* config/i386/i386-builtin-types.def (BFLOAT16): Use
+ 	ix86_bf16_type_node rather than bfloat16_type_node.
+ 
+ 2022-10-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106781
+ 	* cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): Copy
+ 	LHS removal from fixup_noreturn_call.
+ 
+ 2022-10-19  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107271
+ 	* config/i386/i386-expand.cc (ix86_vec_perm_index_canon): New.
+ 	(expand_vec_perm_shufps_shufps): Call
+ 	ix86_vec_perm_index_canon
+ 
+ 2022-10-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.h (ipa_agg_value): Remove type.
+ 	(ipa_agg_value_set): Likewise.
+ 	(ipa_copy_agg_values): Remove function.
+ 	(ipa_release_agg_values): Likewise.
+ 	(ipa_auto_call_arg_values) Add a forward declaration.
+ 	(ipa_call_arg_values): Likewise.
+ 	(class ipa_argagg_value_list): New constructors, added member function
+ 	value_for_index_p.
+ 	(class ipa_auto_call_arg_values): Removed the destructor and member
+ 	function safe_aggval_at.  Use ipa_argagg_values for m_known_aggs.
+ 	(class ipa_call_arg_values): Removed member function safe_aggval_at.
+ 	Use ipa_argagg_values for m_known_aggs.
+ 	(ipa_get_indirect_edge_target): Removed declaration.
+ 	(ipa_find_agg_cst_for_param): Likewise.
+ 	(ipa_find_agg_cst_from_init): New declaration.
+ 	(ipa_agg_value_from_jfunc): Likewise.
+ 	(ipa_agg_value_set_from_jfunc): Removed declaration.
+ 	(ipa_push_agg_values_from_jfunc): New declaration.
+ 	* ipa-cp.cc (ipa_agg_value_from_node): Renamed to
+ 	ipa_agg_value_from_jfunc, made public.
+ 	(ipa_agg_value_set_from_jfunc): Removed.
+ 	(ipa_push_agg_values_from_jfunc): New function.
+ 	(ipa_get_indirect_edge_target_1): Removed known_aggs parameter, use
+ 	avs for this purpose too.
+ 	(ipa_get_indirect_edge_target): Removed the overload working on
+ 	ipa_auto_call_arg_values, use ipa_argagg_value_list in the remaining
+ 	one.
+ 	(devirtualization_time_bonus): Use ipa_argagg_value_list and
+ 	ipa_get_indirect_edge_target_1 instead of
+ 	ipa_get_indirect_edge_target.
+ 	(context_independent_aggregate_values): Removed function.
+ 	(gather_context_independent_values): Work on ipa_argagg_value_list.
+ 	(estimate_local_effects): Likewise, define some iterator variables
+ 	only in the construct where necessary.
+ 	(ipcp_discover_new_direct_edges): Adjust the call to
+ 	ipa_get_indirect_edge_target_1.
+ 	(push_agg_values_for_index_from_edge): Adjust the call
+ 	ipa_agg_value_from_node which has been renamed to
+ 	ipa_agg_value_from_jfunc.
+ 	* ipa-fnsummary.cc (evaluate_conditions_for_known_args): Work on
+ 	ipa_argagg_value_list.
+ 	(evaluate_properties_for_edge): Replace manual filling in aggregate
+ 	values with call to ipa_push_agg_values_from_jfunc.
+ 	(estimate_calls_size_and_time): Work on ipa_argagg_value_list.
+ 	(ipa_cached_call_context::duplicate_from): Likewise.
+ 	(ipa_cached_call_context::release): Likewise.
+ 	(ipa_call_context::equal_to): Likewise.
+ 	* ipa-prop.cc (ipa_find_agg_cst_from_init): Make public.
+ 	(ipa_find_agg_cst_for_param): Removed function.
+ 	(ipa_find_agg_cst_from_jfunc_items): New function.
+ 	(try_make_edge_direct_simple_call): Replace calls to
+ 	ipa_agg_value_set_from_jfunc and ipa_find_agg_cst_for_param with
+ 	ipa_find_agg_cst_from_init and ipa_find_agg_cst_from_jfunc_items.
+ 	(try_make_edge_direct_virtual_call): Replace calls to
+ 	ipa_agg_value_set_from_jfunc and ipa_find_agg_cst_for_param with
+ 	simple query of constant jump function and a call to
+ 	ipa_find_agg_cst_from_jfunc_items.
+ 	(ipa_auto_call_arg_values::~ipa_auto_call_arg_values): Removed.
+ 
+ 2022-10-18  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* ipa-prop.h (IPA_PROP_ARG_INDEX_LIMIT_BITS): New.
+ 	(ipcp_transformation): Added forward declaration.
+ 	(ipa_argagg_value): New type.
+ 	(ipa_argagg_value_list): New type.
+ 	(ipa_agg_replacement_value): Removed type.
+ 	(ipcp_transformation): Switch from using ipa_agg_replacement_value
+ 	to ipa_argagg_value_list.
+ 	(ipa_get_agg_replacements_for_node): Removed.
+ 	(ipa_dump_agg_replacement_values): Removed declaration.
+ 	* ipa-cp.cc: Define INCLUDE_ALGORITHM.
+ 	(values_equal_for_ipcp_p): Moved up in the file.
+ 	(ipa_argagg_value_list::dump): New function.
+ 	(ipa_argagg_value_list::debug): Likewise.
+ 	(ipa_argagg_value_list::get_elt): Likewise.
+ 	(ipa_argagg_value_list::get_elt_for_index): Likewise.
+ 	(ipa_argagg_value_list::get_value): New overloaded functions.
+ 	(ipa_argagg_value_list::superset_of_p): New function.
+ 	(new ipa_argagg_value_list::push_adjusted_values): Likewise.
+ 	(push_agg_values_from_plats): Likewise.
+ 	(intersect_argaggs_with): Likewise.
+ 	(get_clone_agg_value): Removed.
+ 	(ipa_agg_value_from_node): Make last parameter const, use
+ 	ipa_argagg_value_list to search values coming from clones.
+ 	(ipa_get_indirect_edge_target_1): Use ipa_argagg_value_list to search
+ 	values coming from clones.
+ 	(ipcp_discover_new_direct_edges): Pass around a vector of
+ 	ipa_argagg_values rather than a link list of replacement values.
+ 	(cgraph_edge_brings_value_p): Use ipa_argagg_value_list to search
+ 	values coming from clones.
+ 	(create_specialized_node): Work with a vector of ipa_argagg_values
+ 	rather than a link list of replacement values.
+ 	(self_recursive_agg_pass_through_p): Make the pointer parameters
+ 	const.
+ 	(copy_plats_to_inter): Removed.
+ 	(intersect_with_plats): Likewise.
+ 	(agg_replacements_to_vector): Likewise.
+ 	(intersect_with_agg_replacements): Likewise.
+ 	(intersect_aggregates_with_edge): Likewise.
+ 	(push_agg_values_for_index_from_edge): Likewise.
+ 	(push_agg_values_from_edge): Likewise.
+ 	(find_aggregate_values_for_callers_subset): Rewrite.
+ 	(cgraph_edge_brings_all_agg_vals_for_node): Likewise.
+ 	(ipcp_val_agg_replacement_ok_p): Use ipa_argagg_value_list to search
+ 	aggregate values.
+ 	(decide_about_value): Work with a vector of ipa_argagg_values rather
+ 	than a link list of replacement values.
+ 	(decide_whether_version_node): Likewise.
+ 	(ipa_analyze_node): Check number of parameters, assert that there
+ 	are no descriptors when bailing out.
+ 	* ipa-prop.cc (ipa_set_node_agg_value_chain): Switch to a vector of
+ 	ipa_argagg_value.
+ 	(ipa_node_params_t::duplicate): Removed superfluous handling of
+ 	ipa_agg_replacement_values.  Name of src parameter removed because
+ 	it is no longer used.
+ 	(ipcp_transformation_t::duplicate): Replaced duplication of
+ 	ipa_agg_replacement_values with copying vector m_agg_values.
+ 	(ipa_dump_agg_replacement_values): Removed.
+ 	(write_ipcp_transformation_info): Stream the new data-structure
+ 	instead of the old.
+ 	(read_ipcp_transformation_info): Likewise.
+ 	(adjust_agg_replacement_values): Work with ipa_argagg_values instead
+ 	of linked lists of ipa_agg_replacement_values, copy the items and
+ 	truncate the vector as necessary to keep it sorted instead of marking
+ 	items as invalid.  Return one bool if CFG should be updated.
+ 	(ipcp_modif_dom_walker): Store ipcp_transformation instead of
+ 	linked list of ipa_agg_replacement_values.
+ 	(ipcp_modif_dom_walker::before_dom_children): Use
+ 	ipa_argagg_value_list instead of walking a list of
+ 	ipa_agg_replacement_values.
+ 	(ipcp_transform_function): Switch to the new data structure, adjust
+ 	dumping.
+ 
+ 2022-10-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107302
+ 	* tree-vect-loop.cc (vectorizable_recurrence): Fix vec_perm
+ 	placement for a PHI latch def.
+ 
+ 2022-10-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/107275
+ 	* tree-if-conv.cc (if_convertible_loop_p_1): Move
+ 	find_data_references_in_loop call from here...
+ 	(if_convertible_loop_p): And move data-reference vector initialization
+ 	from here...
+ 	(tree_if_conversion):... to here.
+ 
+ 2022-10-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/106654
+ 	* gimple.def (GIMPLE_ASSUME): New statement kind.
+ 	* gimple.h (struct gimple_statement_assume): New type.
+ 	(is_a_helper <gimple_statement_assume *>::test,
+ 	is_a_helper <const gimple_statement_assume *>::test): New.
+ 	(gimple_build_assume): Declare.
+ 	(gimple_has_substatements): Return true for GIMPLE_ASSUME.
+ 	(gimple_assume_guard, gimple_assume_set_guard,
+ 	gimple_assume_guard_ptr, gimple_assume_body_ptr, gimple_assume_body):
+ 	New inline functions.
+ 	* gsstruct.def (GSS_ASSUME): New.
+ 	* gimple.cc (gimple_build_assume): New function.
+ 	(gimple_copy): Handle GIMPLE_ASSUME.
+ 	* gimple-pretty-print.cc (dump_gimple_assume): New function.
+ 	(pp_gimple_stmt_1): Handle GIMPLE_ASSUME.
+ 	* gimple-walk.cc (walk_gimple_op): Handle GIMPLE_ASSUME.
+ 	* omp-low.cc (WALK_SUBSTMTS): Likewise.
+ 	(lower_omp_1): Likewise.
+ 	* omp-oacc-kernels-decompose.cc (adjust_region_code_walk_stmt_fn):
+ 	Likewise.
+ 	* tree-cfg.cc (verify_gimple_stmt, verify_gimple_in_seq_2): Likewise.
+ 	* function.h (struct function): Add assume_function bitfield.
+ 	* gimplify.cc (gimplify_call_expr): If the assumption isn't
+ 	simple enough, expand it into GIMPLE_ASSUME wrapped block or
+ 	for -O0 drop it.
+ 	* gimple-low.cc: Include attribs.h.
+ 	(create_assumption_fn): New function.
+ 	(struct lower_assumption_data): New type.
+ 	(find_assumption_locals_r, assumption_copy_decl,
+ 	adjust_assumption_stmt_r, adjust_assumption_stmt_op,
+ 	lower_assumption): New functions.
+ 	(lower_stmt): Handle GIMPLE_ASSUME.
+ 	* tree-ssa-ccp.cc (pass_fold_builtins::execute): Remove
+ 	IFN_ASSUME calls.
+ 	* lto-streamer-out.cc (output_struct_function_base): Pack
+ 	assume_function bit.
+ 	* lto-streamer-in.cc (input_struct_function_base): And unpack it.
+ 	* cgraphunit.cc (cgraph_node::expand): Don't verify assume_function
+ 	has TREE_ASM_WRITTEN set and don't release its body.
+ 	(symbol_table::compile): Allow assume functions not to have released
+ 	body.
+ 	* internal-fn.cc (expand_ASSUME): Remove gcc_unreachable.
+ 	* passes.cc (execute_one_pass): For TODO_discard_function don't
+ 	release body of assume functions.
+ 	* cgraph.cc (cgraph_node::verify_node): Don't verify cgraph nodes
+ 	of PROP_assumptions_done functions.
+ 	* tree-pass.h (PROP_assumptions_done): Define.
+ 	(TODO_discard_function): Adjust comment.
+ 	(make_pass_assumptions): Declare.
+ 	* passes.def (pass_assumptions): Add.
+ 	* timevar.def (TV_TREE_ASSUMPTIONS): New.
+ 	* tree-inline.cc (remap_gimple_stmt): Handle GIMPLE_ASSUME.
+ 	* tree-vrp.cc (pass_data_assumptions): New variable.
+ 	(pass_assumptions): New class.
+ 	(make_pass_assumptions): New function.
+ 
+ 2022-10-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107301
+ 	* gimple-ssa-isolate-paths.cc (handle_return_addr_local_phi_arg):
+ 	Check whether we can duplicate the block.
+ 	(find_implicit_erroneous_behavior): Likewise.
+ 
+ 2022-10-18  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/107273
+ 	* value-relation.cc (equiv_oracle::add_partial_equiv): Merge
+ 	instead of copying precison of each member.
+ 
+ 2022-10-17  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	PR target/101697
+ 	* config/h8300/combiner.md: Replace '<' preincment constraint with
+ 	ZA/Z1..ZH/Z7 combinations.
+ 	* config/h8300/movepush.md: Similarly
+ 
+ 2022-10-17  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/constraints.md (Za..Zh): New constraints for
+ 	autoinc addresses using a specific register.
+ 	* config/h8300/h8300.cc (pre_incdec_with_reg): New function.
+ 	* config/h8300/h8300-protos.h (pre_incdec_with_reg): Add prototype.
+ 
+ 2022-10-17  Jeff Law  <jlaw@ventanamicro.com>
+ 
+ 	* config/i386/cet.c: Remove accidental commit.
+ 	* config/i386/driver-mingw32.c: Likewise.
+ 	* config/i386/i386-builtins.c: Likewise.
+ 	* config/i386/i386-d.c:  Likewise.
+ 	* config/i386/i386-expand.c: Likewise.
+ 	* config/i386/i386-features.c: Likewise.
+ 	* config/i386/i386-options.c: Likewise.
+ 	* config/i386/t-cet: Likewise.
+ 	* config/i386/x86-tune-sched-atom.c: Likewise.
+ 	* config/i386/x86-tune-sched-bd.c: Likewise.
+ 	* config/i386/x86-tune-sched-core.c: Likewise.
+ 	* config/i386/x86-tune-sched.c: Likewise.
+ 
+ 2022-10-17  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* common/config/h8300/h8300-common.cc (h8300_option_optimization_table):
+ 	Enable redundant extension elimination at -O2 and above.
+ 	* config/i386/cet.c: New file.
+ 	* config/i386/driver-mingw32.c: New file.
+ 	* config/i386/i386-builtins.c: New file.
+ 	* config/i386/i386-d.c: New file.
+ 	* config/i386/i386-expand.c: New file.
+ 	* config/i386/i386-features.c: New file.
+ 	* config/i386/i386-options.c: New file.
+ 	* config/i386/t-cet: New file.
+ 	* config/i386/x86-tune-sched-atom.c: New file.
+ 	* config/i386/x86-tune-sched-bd.c: New file.
+ 	* config/i386/x86-tune-sched-core.c: New file.
+ 	* config/i386/x86-tune-sched.c: New file.
+ 
+ 2022-10-17  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/extensions.md (CCZN setting zero extended load): Add
+ 	missing splitter.
+ 
+ 2022-10-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107293
+ 	* tree-ssa-dom.cc
+ 	(dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
+ 	Check that condition post-dominates the definition point.
+ 
+ 2022-10-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107286
+ 	* value-range.cc (range_tests_floats): Do not test for -Inf when
+ 	flag_finite_math_only.
+ 
+ 2022-10-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fold_using_range::range_of_range_op):
+ 	Provide relation_trio class.
+ 	* gimple-range-gori.cc (gori_compute::refine_using_relation):
+ 	Provide relation_trio class.
+ 	(gori_compute::refine_using_relation): Ditto.
+ 	(gori_compute::compute_operand1_range): Provide lhs_op2 and
+ 	op1_op2 relations via relation_trio class.
+ 	(gori_compute::compute_operand2_range): Ditto.
+ 	* gimple-range-op.cc (gimple_range_op_handler::calc_op1): Use
+ 	relation_trio instead of relation_kind.
+ 	(gimple_range_op_handler::calc_op2): Ditto.
+ 	(*::fold_range): Ditto.
+ 	* gimple-range-op.h (gimple_range_op::calc_op1): Adjust prototypes.
+ 	(gimple_range_op::calc_op2): Adjust prototypes.
+ 	* range-op-float.cc (*::fold_range): Use relation_trio instead of
+ 	relation_kind.
+ 	(*::op1_range): Ditto.
+ 	(*::op2_range): Ditto.
+ 	* range-op.cc (*::fold_range): Use relation_trio instead of
+ 	relation_kind.
+ 	(*::op1_range): Ditto.
+ 	(*::op2_range): Ditto.
+ 	* range-op.h (class range_operator): Adjust prototypes.
+ 	(class range_operator_float): Ditto.
+ 	(class range_op_handler): Adjust prototypes.
+ 	(relop_early_resolve): Pickup op1_op2 relation from relation_trio.
+ 	* value-relation.cc (VREL_LAST): Adjust use to be one past the end of
+ 	the enum.
+ 	(relation_oracle::validate_relation): Use relation_trio in call
+ 	to fold_range.
+ 	* value-relation.h (enum relation_kind_t): Add VREL_LAST as
+ 	final element.
+ 	(class relation_trio): New.
+ 	(TRIO_VARYING, TRIO_SHIFT, TRIO_MASK): New.
+ 
+ 2022-10-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_not_equal::op1_range): Check for
+ 	VREL_EQ after singleton.
+ 	(foperator_unordered::op1_range): Set VARYING before calling
+ 	clear_nan().
+ 	(foperator_ordered::op1_range): Set rather than clear NAN if both
+ 	operands are the same.
+ 
+ 2022-10-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-relation.cc (value_relation::dump): Change message.
+ 	* value-relation.h (value_relation::set_relation): If op1 is the
+ 	same as op2 do not create a relation.
+ 
+ 2022-10-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (VnMODE): Use 'case E_QImode:' instead of
+ 	'case QImode:', etc.
+ 
+ 2022-10-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* gimple-expr.cc (mark_addressable_2): Tag as 'static'.
+ 
+ 2022-10-17  Richard Biener  <rguenther@suse.de>
+ 	    Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	PR tree-optimization/99409
+ 	PR tree-optimization/99394
+ 	* tree-vectorizer.h (vect_def_type::vect_first_order_recurrence): Add.
+ 	(stmt_vec_info_type::recurr_info_type): Likewise.
+ 	(vectorizable_recurr): New function.
+ 	* tree-vect-loop.cc (vect_phi_first_order_recurrence_p): New
+ 	function.
+ 	(vect_analyze_scalar_cycles_1): Look for first order
+ 	recurrences.
+ 	(vect_analyze_loop_operations): Handle them.
+ 	(vect_transform_loop): Likewise.
+ 	(vectorizable_recurr): New function.
+ 	(maybe_set_vectorized_backedge_value): Handle the backedge value
+ 	setting in the first order recurrence PHI and the permutes.
+ 	* tree-vect-stmts.cc (vect_analyze_stmt): Handle first order
+ 	recurrences.
+ 	(vect_transform_stmt): Likewise.
+ 	(vect_is_simple_use): Likewise.
+ 	(vect_is_simple_use): Likewise.
+ 	* tree-vect-slp.cc (vect_get_and_check_slp_defs): Likewise.
+ 	(vect_build_slp_tree_2): Likewise.
+ 	(vect_schedule_scc): Handle the backedge value setting in the
+ 	first order recurrence PHI and the permutes.
+ 
+ 2022-10-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/t-riscv: Change Tab into 2 space.
+ 
+ 2022-10-17  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins.cc (mangle_builtin_type): Move down the function.
+ 
+ 2022-10-17  Arsen Arsenovic  <arsen@aarsen.me>
+ 
+ 	* config.gcc: --target=*-elf --without-{newlib,headers} should
+ 	provide stdint.h.
+ 
+ 2022-10-17  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h:
+ 	(get_intel_cpu): Handle Meteorlake.
+ 	* common/config/i386/i386-common.cc:
+ 	(processor_alias_table): Add Meteorlake.
+ 
+ 2022-10-17  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h:
+ 	(get_intel_cpu): Handle Raptorlake.
+ 	* common/config/i386/i386-common.cc:
+ 	(processor_alias_table): Add Raptorlake.
+ 
+ 2022-10-16  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/constraints.md (Z0..Z7): New register
+ 	constraints.
+ 	* config/h8300/h8300.h (reg_class): Add new classes.
+ 	(REG_CLASS_NAMES): Similarly.
+ 	(REG_CLASS_CONTENTS): Similarly.
+ 
+ 2022-10-16  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/constraints.md (Zz constraint): Renamed
+ 	from "z".
+ 	* config/h8300/movepush.md (movqi_h8sx, movhi_h8sx): Adjust
+ 	constraint to use Zz instead of Z.
+ 
+ 2022-10-16  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/h8300.cc (h8300_register_move_cost): Fix typo.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Implement distinction between
+ 	HONOR_SIGNED_ZEROS and MODE_HAS_SIGNED_ZEROS.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-op.cc (class cfn_copysign): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Add
+ 	CFN_BUILT_IN_COPYSIGN*.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* real.h (real_isdenormal): Check rvc_normal.
+ 	* value-range.cc (range_tests_floats): New test.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-op.cc
+ 	(gimple_range_op_handler::maybe_builtin_call): Replace
+ 	CFN_BUILTIN_SIGNBIT* cases with CASE_FLT_FN.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Normalize ranges for both bounds.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Drop -0.0 for !HONOR_SIGNED_ZEROS.
+ 
+ 2022-10-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-op.cc
+ 	(gimple_range_op_handler::maybe_builtin_call): Add
+ 	CFN_BUILT_IN_SIGNBIT[FL]* entries.
+ 
+ 2022-10-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107254
+ 	* tree-vect-slp.cc (vect_slp_analyze_node_operations_1):
+ 	For permutes also analyze live lanes.
+ 	(vect_schedule_slp_node): For permutes also code generate
+ 	live lane extracts.
+ 
+ 2022-10-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/107248
+ 	* config/sparc/sparc.cc (sparc_expand_prologue): Emit a frame
+ 	blockage for leaf functions.
+ 	(sparc_flat_expand_prologue): Emit frame instead of full blockage.
+ 	(sparc_expand_epilogue): Emit a frame blockage for leaf functions.
+ 	(sparc_flat_expand_epilogue): Emit frame instead of full blockage.
+ 
+ 2022-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (enum tree_index): Add TI_BFLOAT16_TYPE.
+ 	* tree.h (bfloat16_type_node): Define.
+ 	* tree.cc (excess_precision_type): Promote bfloat16_type_mode
+ 	like float16_type_mode.
+ 	(build_common_tree_nodes): Initialize bfloat16_type_node if
+ 	BFmode is supported.
+ 	* expmed.h (maybe_expand_shift): Declare.
+ 	* expmed.cc (maybe_expand_shift): No longer static.
+ 	* expr.cc (convert_mode_scalar): Don't ICE on BF -> HF or HF -> BF
+ 	conversions.  If there is no optab, handle BF -> {DF,XF,TF,HF}
+ 	conversions as separate BF -> SF -> {DF,XF,TF,HF} conversions, add
+ 	-ffast-math generic implementation for BF -> SF and SF -> BF
+ 	conversions.
+ 	* builtin-types.def (BT_BFLOAT16, BT_FN_BFLOAT16_CONST_STRING): New.
+ 	* builtins.def (BUILT_IN_NANSF16B): New builtin.
+ 	* fold-const-call.cc (fold_const_call): Handle CFN_BUILT_IN_NANSF16B.
+ 	* config/i386/i386.cc (classify_argument): Handle E_BCmode.
+ 	(ix86_libgcc_floating_mode_supported_p): Also return true for BFmode
+ 	for -msse2.
+ 	(ix86_mangle_type): Mangle BFmode as DF16b.
+ 	(ix86_invalid_conversion, ix86_invalid_unary_op,
+ 	ix86_invalid_binary_op): Remove.
+ 	(TARGET_INVALID_CONVERSION, TARGET_INVALID_UNARY_OP,
+ 	TARGET_INVALID_BINARY_OP): Don't redefine.
+ 	* config/i386/i386-builtins.cc (ix86_bf16_type_node): Remove.
+ 	(ix86_register_bf16_builtin_type): Use bfloat16_type_node rather than
+ 	ix86_bf16_type_node, only create it if still NULL.
+ 	* config/i386/i386-builtin-types.def (BFLOAT16): Likewise.
+ 	* config/i386/i386.md (cbranchbf4, cstorebf4): New expanders.
+ 
+ 2022-10-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/323
+ 	PR c++/107097
+ 	* doc/invoke.texi (-fexcess-precision=standard): Mention that the
+ 	option now also works in C++.
+ 
+ 2022-10-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-ssa-warn-access.cc (pass_waccess::check_call): Return
+ 	early for calls made from thunks.
+ 
+ 2022-10-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* expr.cc (emit_group_stote): Fix handling of modes of different
+ 	sizes for big-endian targets in latest change and add commentary.
+ 
+ 2022-10-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* output.h (assemble_vtv_preinit_initializer): Remove.
+ 	* varasm.cc (assemble_vtv_preinit_initializer): Remove.
+ 
+ 2022-10-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/102540
+ 	PR tree-optimization/102872
+ 	* gimple-range-cache.cc (ranger_cache::fill_block_cache):
+ 	Handle partial equivs.
+ 	(ranger_cache::range_from_dom): Cleanup dump output.
+ 
+ 2022-10-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op.cc (operator_cast::lhs_op1_relation): New.
+ 	(operator_bitwise_and::lhs_op1_relation): New.
+ 
+ 2022-10-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Use
+ 	iterator.
+ 	* value-relation.cc
+ 	(equiv_relation_iterator::equiv_relation_iterator): New.
+ 	(equiv_relation_iterator::next): New.
+ 	(equiv_relation_iterator::get_name): New.
+ 	* value-relation.h (class relation_oracle): Privatize some methods.
+ 	(class equiv_relation_iterator): New.
+ 	(FOR_EACH_EQUIVALENCE): New.
+ 	(FOR_EACH_PARTIAL_EQUIV): New.
+ 	(FOR_EACH_PARTIAL_AND_FULL_EQUIV): New.
+ 
+ 2022-10-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-relation.cc (equiv_chain::dump): Don't print empty
+ 	equivalences.
+ 	(equiv_oracle::equiv_oracle): Allocate a partial equiv table.
+ 	(equiv_oracle::~equiv_oracle): Release the partial equiv table.
+ 	(equiv_oracle::add_partial_equiv): New.
+ 	(equiv_oracle::partial_equiv_set): New.
+ 	(equiv_oracle::partial_equiv): New.
+ 	(equiv_oracle::query_relation): Check for partial equivs too.
+ 	(equiv_oracle::dump): Also dump partial equivs.
+ 	(dom_oracle::register_relation): Handle partial equivs.
+ 	(dom_oracle::query_relation): Check for partial equivs.
+ 	* value-relation.h (enum relation_kind_t): Add partial equivs.
+ 	(relation_partial_equiv_p): New.
+ 	(relation_equiv_p): New.
+ 	(class pe_slice): New.
+ 	(class equiv_oracle): Add prototypes.
+ 	(pe_to_bits): New.
+ 	(bits_to_pe): New.
+ 	(pe_min): New.
+ 
+ 2022-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107247
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
+ 	Reduce multi vector SLP reduction accumulators.  Check
+ 	the adjusted number of accumulator vectors against
+ 	one for the re-use in the epilogue.
+ 
+ 2022-10-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* genmodes.cc (emit_mode_wider): Emit previous content of
+ 	mode_wider array into mode_next array and for mode_wider
+ 	emit always VOIDmode for !CLASS_HAS_WIDER_MODES_P classes,
+ 	otherwise skip through modes with the same precision.
+ 	* machmode.h (mode_next): Declare.
+ 	(GET_MODE_NEXT_MODE): New inline function.
+ 	(mode_iterator::get_next, mode_iterator::get_known_next): New
+ 	function templates.
+ 	(FOR_EACH_MODE_IN_CLASS): Use get_next instead of get_wider.
+ 	(FOR_EACH_MODE): Use get_known_next instead of get_known_wider.
+ 	(FOR_EACH_MODE_FROM): Use get_next instead of get_wider.
+ 	(FOR_EACH_WIDER_MODE_FROM): Define.
+ 	(FOR_EACH_NEXT_MODE): Define.
+ 	* expmed.cc (emit_store_flag_1): Use FOR_EACH_WIDER_MODE_FROM
+ 	instead of FOR_EACH_MODE_FROM.
+ 	* optabs.cc (prepare_cmp_insn): Likewise.  Remove redundant
+ 	!CLASS_HAS_WIDER_MODES_P check.
+ 	(prepare_float_lib_cmp): Use FOR_EACH_WIDER_MODE_FROM instead of
+ 	FOR_EACH_MODE_FROM.
+ 	* config/i386/i386-expand.cc (get_mode_wider_vector): Use
+ 	GET_MODE_NEXT_MODE instead of GET_MODE_WIDER_MODE.
+ 
+ 2022-10-13  Wilco Dijkstra  <wdijkstr@arm.com>
+ 
+ 	PR target/105773
+ 	* config/aarch64/aarch64.cc (aarch64_select_cc_mode): Allow
+ 	GT/LE for merging compare with zero into AND.
+ 	(aarch64_get_condition_code_1): Add CC_NZVmode support.
+ 	* config/aarch64/aarch64-modes.def: Add CC_NZV.
+ 	* config/aarch64/aarch64.md: Use CC_NZV in cmp+and patterns.
+ 
+ 2022-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107160
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
+ 	Do not register accumulator if we failed to reduce it
+ 	to a single vector.
+ 
+ 2022-10-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (range_operator_float::op1_op2_relation): New.
+ 	(class foperator_equal): Add using.
+ 	(class foperator_not_equal): Same.
+ 	(class foperator_lt): Same.
+ 	(class foperator_le): Same.
+ 	(class foperator_gt): Same.
+ 	(class foperator_ge): Same.
+ 	* range-op.cc (range_op_handler::op1_op2_relation): New.
+ 	* range-op.h (range_operator_float::op1_op2_relation): New.
+ 
+ 2022-10-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* genmatch.cc (parser::parse_c_expr): Diagnose 'return'.
+ 	* match.pd: Replace 'return' statements in with expressions
+ 	with appropriate variants.
+ 
+ 2022-10-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/107229
+ 	* tree-if-conv.cc (get_bitfield_rep): Fix bitposition calculation.
+ 
+ 2022-10-13  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/107226
+ 	* tree-vect-patterns.cc (vect_recog_bitfield_ref_pattern): Reject
+ 	BITFIELD_REF's with non integral typed first operands.
+ 
+ 2022-10-13  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h (FLT_IS_IEC_60559, DBL_IS_IEC_60559)
+ 	(LDBL_IS_IEC_60559): Update comment.
+ 
+ 2022-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (class foperator_negate): New.
+ 	(floating_op_table::floating_op_table): Add NEGATE_EXPR
+ 	(range_op_float_tests): Add negate tests.
+ 
+ 2022-10-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins.h: Remove unused macro.
+ 
+ 2022-10-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins.cc (DEF_RVV_TYPE): Apply
+ 	clang-format.
+ 	(add_vector_type_attribute): Ditto.
+ 	* config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Apply
+ 	clang-format.
+ 	* config/riscv/riscv-vector-builtins.h (DEF_RVV_TYPE): Apply
+ 	clang-format.
+ 
+ 2022-10-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins.cc (builtin_types): Redefine
+ 	vector types.
+ 	(build_const_pointer): New function.
+ 	(register_builtin_type): Ditto.
+ 	(DEF_RVV_TYPE): Simplify macro.
+ 	(register_vector_type): Refine implementation.
+ 	* config/riscv/riscv-vector-builtins.h (rvv_builtin_types_t): New.
+ 
+ 2022-10-12  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins.h (class rvv_switcher): Move to
+ 	this to ....
+ 	* config/riscv/riscv-vector-builtins.cc (class rvv_switcher):
+ 	here.
+ 
+ 2022-10-12  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu):
+ 	Move sapphirerapids out of AVX512_VP2INTERSECT.
+ 	* config/i386/i386.h: Remove AVX512_VP2INTERSECT from PTA_SAPPHIRERAPIDS
+ 	* doc/invoke.texi: Remove AVX512_VP2INTERSECT from SAPPHIRERAPIDS
+ 
+ 2022-10-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcov-io.cc (gcov_write_summary): Rename to ...
+ 	(gcov_write_object_summary): ... this.
+ 	* gcov-io.h (GCOV_TAG_OBJECT_SUMMARY_LENGTH): Rename from ...
+ 	(GCOV_TAG_SUMMARY_LENGTH): ... this.
+ 
+ 2022-10-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (frange_float): New.
+ 	(range_op_float_tests): New.
+ 	* range-op.cc (range_op_tests): Call range_op_float_tests.
+ 
+ 2022-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (frange::nan_signbit_p): New.
+ 
+ 2022-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set_nonnegative): Pass bool to
+ 	update_nan.
+ 	* value-range.h: Disallow conversion to bool in update_nan().
+ 
+ 2022-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (frange::frange): Add constructor taking type.
+ 
+ 2022-10-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc: Add relation_kind = VREL_VARYING to all
+ 	methods.
+ 
+ 2022-10-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-gori.cc (gori_compute::logical_combine): Avoid
+ 	calling tracer.trailer().
+ 
+ 2022-10-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/107185
+ 	* config/i386/i386.md (*notxor<mode>_1): Use MASK_REG_P (x) instead of
+ 	MASK_REGNO_P (REGNO (x)).
+ 
+ 2022-10-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (class foperator_abs): New.
+ 	(floating_op_table::floating_op_table): Add ABS_EXPR entry.
+ 
+ 2022-10-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_unordered_le::op1_range): New.
+ 	(foperator_unordered_le::op2_range): New.
+ 	(foperator_unordered_gt::op1_range): New.
+ 	(foperator_unordered_gt::op2_range): New.
+ 	(foperator_unordered_ge::op1_range): New.
+ 	(foperator_unordered_ge::op2_range): New.
+ 	(foperator_unordered_equal::op1_range): New.
+ 
+ 2022-10-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (class foperator_unordered_lt): New.
+ 	(class foperator_relop_unknown): Remove
+ 	(class foperator_unordered_le): New.
+ 	(class foperator_unordered_gt): New.
+ 	(class foperator_unordered_ge): New.
+ 	(class foperator_unordered_equal): New.
+ 	(floating_op_table::floating_op_table): Replace all UN_EXPR
+ 	entries with their appropriate fop_unordered_* counterpart.
+ 
+ 2022-10-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_equal::op1_range): Move BRS_TRUE case up.
+ 	(operator_lt::op2_range): Same.
+ 	(operator_le::op2_range): Same.
+ 	(operator_gt::op2_range): Same.
+ 	(operator_ge::op2_range): Same.
+ 
+ 2022-10-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107212
+ 	* tree-vect-loop.cc (vectorizable_reduction): Make sure to
+ 	set STMT_VINFO_REDUC_DEF for all live lanes in a SLP
+ 	reduction.
+ 	(vectorizable_live_operation): Do not pun to the SLP
+ 	node representative for reduction epilogue generation.
+ 
+ 2022-10-11  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (neg<mode>2): New define_expand.
+ 
+ 2022-10-11  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (vec_init<V_ALL:mode><V_ALL_ALT:mode>): New.
+ 	* config/gcn/gcn.cc (GEN_VN): Add andvNsi3, subvNsi3.
+ 	(GEN_VNM): Add gathervNm_expr.
+ 	(GEN_VN_NOEXEC): Add vec_seriesvNsi.
+ 	(gcn_expand_vector_init): Add initialization of vectors from smaller
+ 	vectors.
+ 
+ 2022-10-11  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-protos.h (get_exec): Add prototypes for two variants.
+ 	* config/gcn/gcn-valu.md
+ 	(vec_extract<V_ALL:mode><V_ALL_ALT:mode>): New define_expand.
+ 	* config/gcn/gcn.cc (get_exec): Export the existing function. Add a
+ 	new overload variant.
+ 
+ 2022-10-11  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md
+ 	(<cvt_name><VCVT_MODE:mode><VCVT_FMODE:mode>2<exec>): Use MODE_VF.
+ 	(<cvt_name><VCVT_FMODE:mode><VCVT_IMODE:mode>2<exec>): Likewise.
+ 	* config/gcn/gcn.h (MODE_VF): New macro.
+ 
+ 2022-10-11  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-modes.def (VECTOR_MODE): Add new modes
+ 	V32QI, V32HI, V32SI, V32DI, V32TI, V32HF, V32SF, V32DF,
+ 	V16QI, V16HI, V16SI, V16DI, V16TI, V16HF, V16SF, V16DF,
+ 	V8QI, V8HI, V8SI, V8DI, V8TI, V8HF, V8SF, V8DF,
+ 	V4QI, V4HI, V4SI, V4DI, V4TI, V4HF, V4SF, V4DF,
+ 	V2QI, V2HI, V2SI, V2DI, V2TI, V2HF, V2SF, V2DF.
+ 	(ADJUST_ALIGNMENT): Likewise.
+ 	* config/gcn/gcn-protos.h (gcn_full_exec): Delete.
+ 	(gcn_full_exec_reg): Delete.
+ 	(gcn_scalar_exec): Delete.
+ 	(gcn_scalar_exec_reg): Delete.
+ 	(vgpr_1reg_mode_p): Use inner mode to identify vector registers.
+ 	(vgpr_2reg_mode_p): Likewise.
+ 	(vgpr_vector_mode_p): Use VECTOR_MODE_P.
+ 	* config/gcn/gcn-valu.md (V_QI, V_HI, V_HF, V_SI, V_SF, V_DI, V_DF,
+ 	V_QIHI, V_1REG, V_INT_1REG, V_INT_1REG_ALT, V_FP_1REG, V_2REG, V_noQI,
+ 	V_noHI, V_INT_noQI, V_INT_noHI, V_ALL, V_ALL_ALT, V_INT, V_FP):
+ 	Add additional vector modes.
+ 	(V64_SI, V64_DI, V64_ALL, V64_FP): New iterators.
+ 	(scalar_mode, SCALAR_MODE, vnsi, VnSI, vndi, VnDI, sdwa):
+ 	Add additional vector mode mappings.
+ 	(mov<mode>): Implement vector length conversions.
+ 	(ldexp<mode>3<exec>): Use VnSI.
+ 	(frexp<mode>_exp2<exec>): Likewise.
+ 	(VCVT_MODE, VCVT_FMODE, VCVT_IMODE): Add additional vector modes.
+ 	(reduc_<reduc_op>_scal_<mode>): Use V64_ALL.
+ 	(fold_left_plus_<mode>): Use V64_FP.
+ 	(*<reduc_op>_dpp_shr_<mode>): Use V64_1REG.
+ 	(*<reduc_op>_dpp_shr_<mode>): Use V64_DI.
+ 	(*plus_carry_dpp_shr_<mode>): Use V64_INT_1REG.
+ 	(*plus_carry_in_dpp_shr_<mode>): Use V64_SI.
+ 	(*plus_carry_dpp_shr_<mode>): Use V64_DI.
+ 	(mov_from_lane63_<mode>): Use V64_2REG.
+ 	* config/gcn/gcn.cc (VnMODE): New function.
+ 	(gcn_can_change_mode_class): Support multiple vector sizes.
+ 	(gcn_modes_tieable_p): Likewise.
+ 	(gcn_operand_part): Likewise.
+ 	(gcn_scalar_exec): Delete function.
+ 	(gcn_scalar_exec_reg): Delete function.
+ 	(gcn_full_exec): Delete function.
+ 	(gcn_full_exec_reg): Delete function.
+ 	(gcn_inline_fp_constant_p): Support multiple vector sizes.
+ 	(gcn_fp_constant_p): Likewise.
+ 	(A): New macro.
+ 	(GEN_VN_NOEXEC): New macro.
+ 	(GEN_VNM_NOEXEC): New macro.
+ 	(GEN_VN): New macro.
+ 	(GEN_VNM): New macro.
+ 	(GET_VN_FN): New macro.
+ 	(CODE_FOR): New macro.
+ 	(CODE_FOR_OP): New macro.
+ 	(gen_mov_with_exec): Delete function.
+ 	(gen_duplicate_load): Delete function.
+ 	(gcn_expand_vector_init): Support multiple vector sizes.
+ 	(strided_constant): Likewise.
+ 	(gcn_addr_space_legitimize_address): Likewise.
+ 	(gcn_expand_scalar_to_vector_address): Likewise.
+ 	(gcn_expand_scaled_offsets): Likewise.
+ 	(gcn_secondary_reload): Likewise.
+ 	(gcn_valid_cvt_p): Likewise.
+ 	(gcn_expand_builtin_1): Likewise.
+ 	(gcn_make_vec_perm_address): Likewise.
+ 	(gcn_vectorize_vec_perm_const): Likewise.
+ 	(gcn_vector_mode_supported_p): Likewise.
+ 	(gcn_autovectorize_vector_modes): New hook.
+ 	(gcn_related_vector_mode): Support multiple vector sizes.
+ 	(gcn_expand_dpp_shr_insn): Add FIXME comment.
+ 	(gcn_md_reorg): Support multiple vector sizes.
+ 	(print_reg): Likewise.
+ 	(print_operand): Likewise.
+ 	(TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES): New hook.
+ 
+ 2022-10-11  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* tree-if-conv.cc (if_convertible_loop_p_1): Move ordering of loop bb's from
+ 	here...
+ 	(tree_if_conversion): ... to here.  Also call bitfield lowering when
+ 	appropriate.
+ 	(version_loop_for_if_conversion): Adapt to enable loop versioning when we only
+ 	need to lower bitfields.
+ 	(ifcvt_split_critical_edges): Relax condition of expected loop form as this is
+ 	checked earlier.
+ 	(get_bitfield_rep): New function.
+ 	(lower_bitfield): Likewise.
+ 	(bitfields_to_lower_p): Likewise.
+ 	(need_to_lower_bitfields): New global boolean.
+ 	(need_to_ifcvt): Likewise.
+ 	* tree-vect-data-refs.cc (vect_find_stmt_data_reference): Improve diagnostic
+ 	message.
+ 	* tree-vect-patterns.cc (vect_recog_temp_ssa_var): Add default value for last
+ 	parameter.
+ 	(vect_recog_bitfield_ref_pattern): New.
+ 	(vect_recog_bit_insert_pattern): New.
+ 
+ 2022-10-11  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107093
+ 	* config/i386/i386.md (*notxor<mode>_1): New post_reload
+ 	define_insn_and_split.
+ 	(*notxorqi_1): Ditto.
+ 
+ 2022-10-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107195
+ 	* value-range.cc (irange::set_range_from_nonzero_bits): Set range
+ 	to [0,0] when nonzero mask is 0.
+ 
+ 2022-10-11  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-10-11  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config.gcc (*vxworks*): Add t-slibgcc fragment
+ 	if enable_shared.
+ 
+ 2022-10-11  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h (VX_LGCC_EH_SO0, VX_LGCC_EH_SO1): New
+ 	internal macros.
+ 	(VXWORKS_LIBGCC_SPEC): Use them and document.
+ 
+ 2022-10-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gimple-range-op.cc: Add override keyword.
+ 
+ 2022-10-11  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	PR debug/107193
+ 	* tree-cfg.cc (assign_discriminators): Move declaration of cur_locus_e
+ 	out of the loop.
+ 
+ 2022-10-11  Liwei Xu  <liwei.xu@intel.com>
+ 	    liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/54346
+ 	* match.pd: Merge the index of VCST then generates the new vec_perm.
+ 
+ 2022-10-11  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	PR rtl-optimization/107182
+ 	* cfgrtl.cc (fixup_reorder_chain): When optimizing a jump to a
+ 	return, clear EDGE_CROSSING on the appropriate edge.
+ 
+ 2022-10-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-vector-builtins.cc (struct vector_type_info): Move
+ 	from config/riscv/riscv-vector-builtins.h.
+ 	(DEF_RVV_TYPE): Change USER_NAME to NAME.
+ 	(register_vector_type): Change user_name to name.
+ 	* config/riscv/riscv-vector-builtins.def (DEF_RVV_TYPE): Change
+ 	USER_NAME to NAME.
+ 	* config/riscv/riscv-vector-builtins.h (struct vector_type_info): Move
+ 	to riscv-vector-builtins.cc.
+ 	(DEF_RVV_TYPE): Change USER_NAME to NAME.
+ 
+ 2022-10-11  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.md: Add vsetvl instruction type.
+ 
+ 2022-10-10  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* common.opt (-fabi-version=): Document 18.
+ 	* doc/invoke.texi (-fabi-version): Document 18.
+ 
+ 2022-10-10  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	PR other/99723
+ 	* toplev.cc (toplev::main): Don't run self tests in case of
+ 	previous error.
+ 
+ 2022-10-10  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-c.cc: Add newline to the end of file.
+ 
+ 2022-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (class foperator_identity): Make members public.
+ 	(class foperator_equal): Same.
+ 	(class foperator_not_equal): Same.
+ 	(class foperator_lt): Same.
+ 	(class foperator_le): Same.
+ 	(class foperator_gt): Same.
+ 	(class foperator_ge): Same.
+ 	(class foperator_unordered): Same.
+ 	(class foperator_ordered): Same.
+ 
+ 2022-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (frange::maybe_isnan): New.
+ 
+ 2022-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_not_equal::op1_range): Set NAN on
+ 	TRUE side for x != x.
+ 
+ 2022-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_unordered::op1_range): Set NAN when
+ 	operands are equal and result is TRUE.
+ 
+ 2022-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range.h (range_true): Return int_range<2>.
+ 	(range_false): Same.
+ 	(range_true_and_false): Same.
+ 
+ 2022-10-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-op.cc: Add op1_range entry for __builtin_signbit.
+ 
+ 2022-10-10  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/107185
+ 	* config/i386/i386.md (lrint<MODEF:mode><SWI48:mode>2): Swap
+ 	predicate of operands[0] and operands[1].
+ 
+ 2022-10-10  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* common/config/arc/arc-common.cc (arc_option_optimization_table):
+ 	Remove Rcq and Rcw options.
+ 	* config/arc/arc.opt (mRcq): Ignore option, preserve it for
+ 	backwards compatibility.
+ 	(mRcw): Likewise.
+ 	* doc/invoke.texi (mRcw, mRcq): Update document.
+ 
+ 2022-10-10  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* config/arc/arc.cc (arc_check_short_reg_p): New function.
+ 	(arc_address_cost): Replace satisfies_constraint_Rcq with the
+ 	above new function.
+ 	(arc_output_addsi): Likewise.
+ 	(split_addsi): Likewise.
+ 	(split_subsi): Likewise.
+ 	* config/arc/arc.md (movqi_insn): Remove Rcq constraint.
+ 	(movhi_insn): Likewise.
+ 	(movsi_insn): Likewise.
+ 	(tst_movb): Likewise.
+ 	(tst): Likewise.
+ 	(tst_bitfield): Likewise.
+ 	(abssi2): Likewise.
+ 	(addsi3_mixed): Likewise.
+ 	(mulhisi3_reg): Likewise.
+ 	(umulhisi3_reg): Likewise.
+ 	(mulsi_600): Likewise.
+ 	(mul64): Likewise.
+ 	(subsi3_insn): Likewise.
+ 	(bicsi3_insn): Likewise.
+ 	(xorsi3): Likewise.
+ 	(negsi2): Likewise.
+ 	(one_cmplsi2): Likewise.
+ 	(lshrsi3_insn): Likewise.
+ 	(cmpsi_cc_insn_mixed): Likewise.
+ 	(cmpsi_cc_zn_insn): Likewise.
+ 	(btst): Likewise.
+ 	(cmpsi_cc_z_insn): Likewise.
+ 	(cmpsi_cc_c_insn): Likewise.
+ 	(indirect_jump): Likewise.
+ 	(casesi_jump): Likewise.
+ 	(call_i): Likewise.
+ 	(call_value_i): Likewise.
+ 	(bbit): Likewise.
+ 	(abssf2): Likewise.
+ 	(ashlsi2_cnt1): Likewise.
+ 	(lshrsi3_cnt1): Likewise.
+ 	(ashrsi3_cnt1): Likewise.
+ 	* config/arc/constraints.md (Rcq): Remove.
+ 
+ 2022-10-10  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* config/arc/arc.md (smaxsi3): Remove Rcw.
+ 	(sminsi3): Likewise.
+ 	(addsi3_mixed): Likewise.
+ 	(add_f_2): Likewise.
+ 	(subsi3_insn): Likewise.
+ 	(sub_f): Likewise.
+ 	(sub_n): Likewise.
+ 	(bset): Likewise.
+ 	(bxor): Likewise.
+ 	(bclr): Likewise.
+ 	(bset_insn): Likewise.
+ 	(bxor_insn): Likewise.
+ 	(bclr_insn): Likewise.
+ 	(bmsk_insn): Likewise.
+ 	(bicsi3_insn): Likewise.
+ 	(xorsi3): Likewise.
+ 	(negsi2): Likewise.
+ 	(lshrsi3_insn): Likewise.
+ 	(abssf2): Likewise.
+ 	(negsf2): Likewise.
+ 	* config/arc/constraints.md(Rcw): Remove it.
+ 
+ 2022-10-10  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* config/arc/arc.md(mulsi3_700): Remove Rcr.
+ 	(mulsi3_highpart): Likewise.
+ 	(umulsi3_highpart_i): Likewise.
+ 	(umulsi3_highpart_int): Likewise.
+ 	(macd): Likewise.
+ 	(macdu): Likewise.
+ 	* config/arc/constraints.md (Rcr): Remove it.
+ 
+ 2022-10-10  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* config/arc/arc.cc (arc_save_callee_enter): Use negative offsets.
+ 
+ 2022-10-09  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR target/106562
+ 	* config/pru/pru-protos.h (pru_noteq_condition): New
+ 	function declaration.
+ 	* config/pru/pru.cc (pru_noteq_condition): New function.
+ 	* config/pru/pru.md (cbranchdi4): Define new pattern.
+ 
+ 2022-10-09  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.md (lshrdi3): New expand pattern.
+ 	(ashldi3): Ditto.
+ 
+ 2022-10-09  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	* config.gcc: set with_arch to default_mips_arch if no defined.
+ 	* config/mips/driver-native.cc (host_detect_local_cpu):
+ 	try getauxval(AT_BASE_PLATFORM) and _MIPS_ARCH, too.
+ 	pass -mnan=2008 if __mips_nan2008__ is defined.
+ 	* config.in: define HAVE_SYS_AUXV_H and HAVE_GETAUXVAL.
+ 	* configure.ac: detect sys/auxv.h and getauxval.
+ 	* configure: regenerated.
+ 
+ 2022-10-07  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* tree-cfg.cc (assign_discriminators): Set discriminators for call stmts
+ 	on the same line within the same basic block.
+ 
+ 2022-10-07  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR tree-optimization/101836
+ 	* tree-object-size.cc (addr_object_size): Use array_at_struct_end_p
+ 	to determine a flexible array member reference.
+ 
+ 2022-10-07  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	* doc/extend.texi: Document strict_flex_array attribute.
+ 	* doc/invoke.texi: Document -fstrict-flex-arrays[=n] option.
+ 	* print-tree.cc (print_node): Print new bit decl_not_flexarray.
+ 	* tree-core.h (struct tree_decl_common): New bit field
+ 	decl_not_flexarray.
+ 	* tree-streamer-in.cc (unpack_ts_decl_common_value_fields): Stream
+ 	in new bit decl_not_flexarray.
+ 	* tree-streamer-out.cc (pack_ts_decl_common_value_fields): Stream
+ 	out new bit decl_not_flexarray.
+ 	* tree.cc (array_at_struct_end_p): Update it with the new bit field
+ 	decl_not_flexarray.
+ 	* tree.h (DECL_NOT_FLEXARRAY): New flag.
+ 
+ 2022-10-07  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks/_vxworks-versions.h: Use OS specific
+ 	paths in #include of version.h.
+ 
+ 2022-10-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts.cc (finish_options): Print sorry message only
+ 	for -flive-patching=inline-only-static.
+ 
+ 2022-10-07  Jason Merrill  <jason@redhat.com>
+ 
+ 	* gimplify.cc (gimplify_modify_expr_rhs): Don't optimize
+ 	x = *(A*)&<expr> to x = <expr> for a TREE_ADDRESSABLE type.
+ 
+ 2022-10-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107153
+ 	* tree-cfg.cc (gimple_duplicate_sese_tail): Do not update
+ 	SSA form here.
+ 	* tree-parloops.cc (gen_parallel_loop): Update SSA form
+ 	after to-exit-first transform, no PHI insertion is necessary.
+ 	(pass_parallelize_loops::execute): Force re-write of the
+ 	virtual operand SSA web.
+ 
+ 2022-10-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* value-range.cc (irange::irange_contains_p): Fix comment typo.
+ 
+ 2022-10-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* function.cc (thread_prologue_and_epilogue_insns): Update only
+ 	entry and exit blocks when not optimizing.  Remove dead statement.
+ 
+ 2022-10-07  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::irange_set): Convert nonzero mask to
+ 	tree.
+ 	(irange::irange_set_anti_range): Same.
+ 	(irange::set): Same.
+ 	(irange::verify_range): Same.
+ 	(irange::contains_p): Same.
+ 	(irange::invert): Same.
+ 	(irange::set_range_from_nonzero_bits): Same.
+ 	(irange::set_nonzero_bits): Same.
+ 	(mask_to_wi): Same.
+ 	(irange::intersect_nonzero_bits): Same.
+ 	(irange::union_nonzero_bits): Same.
+ 	* value-range.h (irange::varying_compatible_p): Same.
+ 	(gt_ggc_mx): Same.
+ 	(gt_pch_nx): Same.
+ 	(irange::set_undefined): Same.
+ 	(irange::set_varying): Same.
+ 
+ 2022-10-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/i386-protos.h (ix86_binary_operator_ok): Add array
+ 	size to function parameter.
+ 	(ix86_unary_operator_ok): Likewise.
+ 
+ 2022-10-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* auto-profile.cc (get_inline_stack): Remove unused variable.
+ 
+ 2022-10-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ipa-prop.h (ipa_constant_data): Fix comment typo.
+ 	* value-range.cc (irange::irange_contains_p): Likewise.
+ 	* value-relation.cc (dom_oracle::set_one_relation): Likewise.
+ 	* gimple-predicate-analysis.cc (predicate::simplify_4): Likewise.
+ 	* tree-inline.cc (remap_ssa_name): Likewise.
+ 
+ 2022-10-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* attribs.h (is_attribute_namespace_p): New inline function.
+ 	(lookup_attribute): Document meaning of ATTR_NS equal to "".
+ 	* attribs.cc (remove_attribute): Use is_attribute_namespace_p.
+ 	(private_lookup_attribute): For ATTR_NS "" match either standard
+ 	attribute or "gnu" namespace one.
+ 
+ 2022-10-07  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h (DWARF_VERSION_DEFAULT): Adjust from
+ 	4 to 3 for VxWorks >= 7.
+ 
+ 2022-10-07  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* defaults.h (DWARF_DEFAULT_VERSION): Define if not
+ 	defined already.
+ 	* common.opt (gdwarf-): Use it.
+ 	* doc/tm.texi.in (DWARF_DEFAULT_VERSION): Document.
+ 	* doc/tm.texi: Update accordingly.
+ 	* config/vxworks.h (DWARF_DEFAULT_VERSION): Redefine.
+ 	* config/vxworks.cc: Remove code setting dwarf_version, now
+ 	handled by the DWARF_DEFAULT_VERSION redefinition.
+ 
+ 2022-10-07  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* ginclude/stddef.h: #undef offsetof before #define.
+ 
+ 2022-10-06  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107170
+ 	* vr-values.cc (vr_values::range_of_expr):  Do not die on
+ 	unsupported types.
+ 
+ 2022-10-06  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* doc/invoke.texi (-fno-asm): Update description of effects on
+ 	typeof keyword.
+ 
+ 2022-10-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimple-loop-jam.cc (tree_loop_unroll_and_jam): Bail out for a self
+ 	dependency that is a write-after-write if the access function is not
+ 	affine or constant.
+ 
+ 2022-10-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* df-scan.cc (df_ref_create_structure): Minor cleanup.
+ 
+ 2022-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/107115
+ 	* expr.cc (store_expr): Check mems_same_for_tbaa_p before
+ 	eliding a seemingly redundant store.
+ 
+ 2022-10-06  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/atomics.md (*atomic_load<ALLX:mode>_zext<SD_HSDI:mode>):
+ 	New pattern.
+ 
+ 2022-10-06  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/aarch64/aarch64-cores.def (AARCH64_CORE): Update
+ 	Ampere-1 core entry.
+ 
+ 2022-10-06  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/aarch64/driver-aarch64.cc (readline): Fix off-by-one.
+ 
+ 2022-10-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107107
+ 	* tree-ssa-sccvn.cc (visit_reference_op_store): Do not
+ 	affect value-numbering when doing the tail merging
+ 	MODIFY_EXPR lookup.
+ 
+ 2022-10-06  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/linux.h (LINK_SPEC): Remove max-page-size and
+ 	common-pave-size.
+ 
+ 2022-10-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/106654
+ 	* internal-fn.def (ASSUME): New internal function.
+ 	* internal-fn.h (expand_ASSUME): Declare.
+ 	* internal-fn.cc (expand_ASSUME): Define.
+ 	* gimplify.cc (gimplify_call_expr): Gimplify IFN_ASSUME.
+ 	* fold-const.h (simple_condition_p): Declare.
+ 	* fold-const.cc (simple_operand_p_2): Rename to ...
+ 	(simple_condition_p): ... this.  Remove forward declaration.
+ 	No longer static.  Adjust function comment and fix a typo in it.
+ 	Adjust recursive call.
+ 	(simple_operand_p): Adjust function comment.
+ 	(fold_truth_andor): Adjust simple_operand_p_2 callers to call
+ 	simple_condition_p.
+ 	* doc/extend.texi: Document assume attribute.  Move fallthrough
+ 	attribute example to its section.
+ 
+ 2022-10-06  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	PR rtl-optimization/107088
+ 	* cselib.cc (new_cselib_val): Skip BImode while keeping track of
+ 	subvalue relations.
+ 
+ 2022-10-06  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Call set_nan unconditionally.
+ 	(range_tests_nan): Adjust tests.
+ 	(range_tests_signed_zeros): Same.
+ 	(range_tests_floats): Same.
+ 	* value-range.h (frange::update_nan): Guard with HONOR_NANS.
+ 	(frange::set_nan): Set undefined if !HONOR_NANS.
+ 
+ 2022-10-06  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_lt::fold_range): Remove extra check
+ 	to finite_operands_p.
+ 	(foperator_le::fold_range): Same.
+ 	(foperator_gt::fold_range): Same.
+ 	(foperator_ge::fold_range): Same.
+ 
+ 2022-10-06  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-pretty-print.cc (vrange_printer::print_real_value):
+ 	Avoid printing INF and NAN twice.
+ 
+ 2022-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/constraints.md (wD): Delete.
+ 	* doc/md.texi (Machine Constraints): Adjust.
+ 
+ 2022-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>): Replace define_insn by a
+ 	define_expand.  Split the contents to...
+ 	(*vsx_extract_<mode>_0): ... this.  Rewrite.
+ 	(*vsx_extract_<mode>_1): ... and this.  Rewrite.
+ 
+ 2022-10-05  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/vsx.md (*vsx_extract_<mode>_store): Use "n" instead of
+ 	"wD" constraint.
+ 
+ 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/107060
+ 	* doc/analyzer.texi (__analyzer_get_unknown_ptr): Document.
+ 
+ 2022-10-05  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config.gcc: Add riscv_vector.h.
+ 	* config/riscv/riscv-builtins.cc: Add RVV builtin types support.
+ 	* config/riscv/riscv-c.cc (riscv_pragma_intrinsic): New function.
+ 	(riscv_register_pragmas): Ditto.
+ 	* config/riscv/riscv-protos.h (riscv_register_pragmas): Ditto.
+ 	(init_builtins): Move declaration from riscv-vector-builtins.h to riscv-protos.h.
+ 	(mangle_builtin_type): Ditto.
+ 	(verify_type_context): Ditto.
+ 	(handle_pragma_vector): New function.
+ 	* config/riscv/riscv-vector-builtins.cc (GTY): New variable.
+ 	(register_vector_type): New function.
+ 	(init_builtins): Add RVV builtin types support.
+ 	(handle_pragma_vector): New function.
+ 	* config/riscv/riscv-vector-builtins.h (GCC_RISCV_V_BUILTINS_H): Change
+ 	name according to file name.
+ 	(GCC_RISCV_VECTOR_BUILTINS_H): Ditto.
+ 	(init_builtins): Remove declaration in riscv-vector-builtins.h.
+ 	(mangle_builtin_type): Ditto.
+ 	(verify_type_context): Ditto.
+ 	* config/riscv/riscv.cc: Adjust for RVV builtin types support.
+ 	* config/riscv/riscv.h (REGISTER_TARGET_PRAGMAS): New macro.
+ 	* config/riscv/t-riscv: Remove redundant file including.
+ 	* config/riscv/riscv_vector.h: New file.
+ 
+ 2022-10-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_cast::fold_range): Handle truncating casts
+ 	for nonzero masks.
+ 
+ 2022-10-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c/107156
+ 	* attribs.h (lookup_attribute_by_prefix): Support the attribute
+ 	starting with underscore (_Noreturn).
+ 
+ 2022-10-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107052
+ 	* gimple-range-op.cc (cfn_popcount::fold_range): Take into account
+ 	nonzero bit mask.
+ 
+ 2022-10-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107052
+ 	* range-op.cc (operator_cast::fold_range): Set nonzero mask.
+ 
+ 2022-10-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/106698
+ 	* pointer-query.cc (handle_array_ref): Fix handling of low bound.
+ 
+ 2022-10-05  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins):
+ 	Remove __riscv_cmodel_pic, that deprecated in last version.
+ 
+ 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/107072
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/call-summary.o.
+ 
+ 2022-10-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* attribs.h (remove_attribute): Declare overload with additional
+ 	attr_ns argument.
+ 	(private_lookup_attribute): Declare overload with additional
+ 	attr_ns and attr_ns_len arguments.
+ 	(lookup_attribute): New overload with additional attr_ns argument.
+ 	* attribs.cc (remove_attribute): New overload with additional
+ 	attr_ns argument.
+ 	(private_lookup_attribute): New overload with additional
+ 	attr_ns and attr_ns_len arguments.
+ 
+ 2022-10-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* attribs.cc (handle_ignored_attributes_option, decl_attributes,
+ 	common_function_versions): Use auto_diagnostic_group.
+ 
+ 2022-10-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::set_nonzero_bits): Remove assert.
+ 
+ 2022-10-04  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_ISA_RCPC): New macro.
+ 	* config/aarch64/aarch64-arches.def (armv8.3-a): Include RCPC.
+ 	* config/aarch64/aarch64-cores.def (thunderx3t110, zeus, neoverse-v1)
+ 	(neoverse-512tvb, saphira): Remove RCPC from these Armv8.3-A+ cores.
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Define
+ 	__ARM_FEATURE_RCPC when appropriate.
+ 
+ 2022-10-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi (-fopenmp): Mention C++ attribut syntax.
+ 	(-fopenmp-simd): Likewise; update permitted directives.
+ 
+ 2022-10-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/install.texi (Specific): Add missing items to bullet list.
+ 	(amdgcn): Update LLVM requirements, use version not date for newlib.
+ 	(nvptx): Use version not git hash for newlib.
+ 
+ 2022-10-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-storage.cc (irange_storage_slot::set_irange): Remove
+ 	special case.
+ 	* value-range.cc (irange::irange_set): Adjust for nonzero mask
+ 	being a wide int.
+ 	(irange::irange_set_anti_range): Same.
+ 	(irange::set): Same.
+ 	(irange::verify_range): Same.
+ 	(irange::legacy_equal_p): Same.
+ 	(irange::operator==): Same.
+ 	(irange::contains_p): Same.
+ 	(irange::legacy_intersect): Same.
+ 	(irange::legacy_union): Same.
+ 	(irange::irange_single_pair_union): Call union_nonzero_bits.
+ 	(irange::irange_union): Same.
+ 	(irange::irange_intersect): Call intersect_nonzero_bits.
+ 	(irange::intersect): Adjust for nonzero mask being a wide int.
+ 	(irange::invert): Same.
+ 	(irange::set_nonzero_bits): Same.
+ 	(irange::get_nonzero_bits_from_range): New.
+ 	(irange::set_range_from_nonzero_bits): New.
+ 	(irange::get_nonzero_bits): Adjust for nonzero mask being a wide
+ 	int.
+ 	(irange::intersect_nonzero_bits): Same.
+ 	(irange::union_nonzero_bits): Same.
+ 	(range_tests_nonzero_bits): Remove test.
+ 	* value-range.h (irange::varying_compatible_p): Adjust for nonzero
+ 	mask being a wide int.
+ 	(gt_ggc_mx): Same.
+ 	(gt_pch_nx): Same.
+ 	(irange::set_undefined): Same.
+ 	(irange::set_varying): Same.
+ 	(irange::normalize_kind): Same.
+ 
+ 2022-10-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107130
+ 	* gimple-range-op.cc (class cfn_popcount): Call op_cfn_ffs.
+ 	(class cfn_ffs): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Separate out
+ 	CASE_CFN_FFS into its own case.
+ 
+ 2022-10-03  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	* config/i386/t-i386: Add build-time dependencies against
+ 	i386-builtin-types.inc to i386-builtins.o, i386-expand.o,
+ 	i386-features.o.
+ 
+ 2022-10-03  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (while_ultsidi): Limit mask length using
+ 	operand 3.
+ 	* doc/md.texi (while_ult): Document new operand 3 usage.
+ 	* internal-fn.cc (expand_while_optab_fn): Set operand 3 when lhs_type
+ 	maps to a non-vector mode.
+ 
+ 2022-10-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/107109
+ 	* range-op.cc (adjust_op1_for_overflow): Don't process undefined.
+ 
+ 2022-10-03  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vrev64q_m_<supf><mode>): Add early
+ 	clobber.
+ 	(mve_vrev64q_m_f<mode>): Likewise.
+ 
+ 2022-10-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::set_nonzero_bits): Do not pessimize range.
+ 	(range_tests_nonzero_bits): New test.
+ 
+ 2022-10-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::operator==): Early bail on m_num_ranges
+ 	equal to 0.
+ 
+ 2022-10-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::legacy_equal_p): Remove nonozero mask
+ 	check when comparing VR_VARYING ranges.
+ 
+ 2022-10-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Do not compare
+ 	incompatible ranges in ipa-prop.
+ 
+ 2022-10-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107121
+ 	* tree-cfg.cc (verify_gimple_call): Fix a typo in diagnostics,
+ 	DEFFERED_INIT -> DEFERRED_INIT.
+ 
+ 2022-10-02  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* config/vxworks-driver.cc: New.
+ 	* config.gcc (*vxworks*): Add vxworks-driver.o in extra_gcc_objs.
+ 	* config/t-vxworks: Add vxworks-driver.o.
+ 	* config/vxworks.h (GCC_DRIVER_HOST_INITIALIZATION): New.
+ 
+ 2022-10-02  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h (VX_CRTBEGIN_SPEC, VX_CRTEND_SPEC): If
+ 	HAVE_INITFINI_ARRAY_SUPPORT, pick crtstuff objects regardless
+ 	of ENABLE_SHARED_LIBGCC.
+ 
+ 2022-10-01  Stafford Horne  <shorne@gmail.com>
+ 
+ 	* config/or1k/or1k.cc (TARGET_HAVE_TLS): Only define if
+ 	HAVE_AS_TLS is defined.
+ 
+ 2022-10-01  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* gimplify.cc (omp_group_base): Fix IF_PRESENT (no_create)
+ 	handling.
+ 
+ 2022-10-01  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/h8300/h8300.md (HSI2): New iterator.
+ 	(eqne_invert): Similarly.
+ 	* config/h8300/testcompare.md (testhi_upper_z): New pattern.
+ 	(cmpqi_z, cmphi_z, cmpsi_z): Likewise.
+ 	(store_z_qi, store_z_i_qi, store_z_hi, store_z_hi_sb): New
+ 	define_insn_and_splits and/or define_insns.
+ 	(store_z_hi_neg, store_z_hi_and, store_z_<mode>): Likewise.
+ 	(store_z_<mode>_neg, store_z_<mode>_and, store_z): Likewise.
+ 
+ 2022-10-01  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* tree-ssa-dom.cc (record_edge_info): Install correct version of
+ 	patch.
+ 
+ 2022-10-01  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* dwarf2out.cc (add_call_src_coords_attributes): Emit discriminators for inlined call sites.
+ 
+ 2022-09-30  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* tree-ssa-dom.cc (single_block_loop_p): New function.
+ 	(record_edge_info): Also record equivalences for the outgoing
+ 	edge of a single block loop where the condition is an invariant.
+ 
+ 2022-09-30  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* tree-ssa-dom.cc (free_dom_edge_info): Clear e->aux too.
+ 	(free_all_edge_infos): Do not clear e->aux here.
+ 
+ 2022-09-30  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* target.def (TARGET_C_EXCESS_PRECISION): Document
+ 	-fexcess-precision=16.
+ 
+ 2022-09-30  Palmer Dabbelt  <palmer@rivosinc.com>
+ 
+ 	* doc/tm.texi (TARGET_C_EXCESS_PRECISION): Add 16.
+ 
+ 2022-09-30  Palmer Dabbelt  <palmer@rivosinc.com>
+ 
+ 	PR target/106815
+ 	* config/riscv/riscv.cc (riscv_excess_precision): Add support
+ 	for EXCESS_PRECISION_TYPE_FLOAT16.
+ 
+ 2022-09-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/107080
+ 	* config/arm/arm.cc (arm_mangle_type): Mangle just __fp16 as Dh
+ 	and _Float16 as DF16_.
+ 	* config/csky/csky.cc (csky_init_builtins): Fix a comment typo.
+ 	(csky_mangle_type): Mangle __fp16 as Dh and _Float16 as DF16_
+ 	rather than mangling __fp16 as __fp16.
+ 
+ 2022-09-30  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	PR preprocessor/69543
+ 	* tree-ssa-uninit.cc (warn_uninit): Stop stripping macro tracking
+ 	information away from the diagnostic location.
+ 	(maybe_warn_read_write_only): Likewise.
+ 	(maybe_warn_operand): Likewise.
+ 
+ 2022-09-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/107080
+ 	* config/aarch64/aarch64.cc (aarch64_mangle_type): Mangle just __fp16
+ 	as Dh and _Float16 as DF16_.
+ 
+ 2022-09-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/107080
+ 	* config/i386/i386.cc (ix86_mangle_type): Always return NULL
+ 	for float128_type_node or float64x_type_node, don't check
+ 	float128t_type_node later on.
+ 	* config/ia64/ia64.cc (ia64_mangle_type): Always return NULL
+ 	for float128_type_node or float64x_type_node.
+ 	* config/rs6000/rs6000.cc (rs6000_mangle_type): Likewise.
+ 	Don't check float128_type_node later on.
+ 	* config/s390/s390.cc (s390_mangle_type): Don't use
+ 	TYPE_MAIN_VARIANT on type which was set to TYPE_MAIN_VARIANT
+ 	a few lines earlier.
+ 
+ 2022-09-30  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 	    Yvan ROUX   <yvan.roux@foss.st.com>
+ 
+ 	* doc/sourcebuild.texi: Document new vma_equals_lma effective
+ 	target check.
+ 
+ 2022-09-30  Jiawei  <jiawei@iscas.ac.cn>
+ 
+ 	* config/riscv/riscv.cc (riscv_file_start): New .option.
+ 	* config/riscv/riscv.opt: New options.
+ 	* doc/invoke.texi: New definations.
+ 
+ 2022-09-30  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/99888
+ 	PR target/105649
+ 	* doc/invoke.texi (option -fpatchable-function-entry): Adjust the
+ 	documentation for PowerPC ELFv2 ABI dual entry points.
+ 	* config/rs6000/rs6000-internal.h
+ 	(rs6000_print_patchable_function_entry): New function declaration.
+ 	* config/rs6000/rs6000-logue.cc (rs6000_output_function_prologue):
+ 	Support patchable-function-entry by emitting nops before and after
+ 	local entry for the function that needs global entry.
+ 	* config/rs6000/rs6000.cc (rs6000_print_patchable_function_entry): Skip
+ 	the function that needs global entry till global entry has been
+ 	emitted.
+ 	* config/rs6000/rs6000.h (struct machine_function): New bool member
+ 	global_entry_emitted.
+ 
+ 2022-09-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/107095
+ 	* tree-ssa-dse.cc (initialize_ao_ref_for_dse): Use data arg
+ 	for .MASK_STORE size.
+ 
+ 2022-09-29  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op.cc (plus_minus_ranges): New.
+ 	(adjust_op1_for_overflow): New.
+ 	(operator_plus::op1_range): Use new adjustment.
+ 	(operator_plus::op2_range): Ditto.
+ 	(operator_minus::op1_range): Ditto.
+ 	* value-relation.h (relation_lt_le_gt_ge_p): New.
+ 
+ 2022-09-29  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-gori.cc (gori_compute::refine_using_relation): New.
+ 	(gori_compute::compute_operand1_range): Invoke
+ 	refine_using_relation when applicable.
+ 	(gori_compute::compute_operand2_range): Ditto.
+ 	* gimple-range-gori.h (class gori_compute): Adjust prototypes.
+ 
+ 2022-09-29  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-gori.cc (ori_compute::compute_operand_range):
+ 	Create a relation record and pass it along when possible.
+ 	(gori_compute::compute_operand1_range): Pass relation along.
+ 	(gori_compute::compute_operand2_range): Ditto.
+ 	(gori_compute::compute_operand1_and_operand2_range): Ditto.
+ 	* gimple-range-gori.h (class gori_compute): Adjust prototypes.
+ 	* gimple-range-op.cc (gimple_range_op_handler::calc_op1): Pass
+ 	relation to op1_range call.
+ 	(gimple_range_op_handler::calc_op2): Pass relation to op2_range call.
+ 	* gimple-range-op.h (class gimple_range_op_handler): Adjust
+ 	prototypes.
+ 
+ 2022-09-29  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-relation.cc (class value_relation): Move to .h file.
+ 	(value_relation::set_relation): Ditto.
+ 	(value_relation::value_relation): ditto.
+ 	* value-relation.h (class value_relation): Move from .cc file.
+ 	(value_relation::set_relation): Ditto
+ 	(value_relation::value_relation): Ditto.
+ 
+ 2022-09-29  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op.cc (operator_minus::op2_range): Check for undefined.
+ 	(operator_mult::op1_range): Ditto.
+ 	(operator_exact_divide::op1_range): Ditto.
+ 	(operator_lshift::op1_range): Ditto.
+ 	(operator_rshift::op1_range): Ditto.
+ 	(operator_cast::op1_range): Ditto.
+ 	(operator_bitwise_and::op1_range): Ditto.
+ 	(operator_bitwise_or::op1_range): Ditto.
+ 	(operator_trunc_mod::op1_range): Ditto.
+ 	(operator_trunc_mod::op2_range): Ditto.
+ 	(operator_bitwise_not::op1_range): Ditto.
+ 	(pointer_or_operator::op1_range): Ditto.
+ 	(range_op_handler::op1_range): Ditto.
+ 	(range_op_handler::op2_range): Ditto.
+ 
+ 2022-09-29  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_simd_clone_compute_vecsize_and_simdlen):
+ 	Remove unused elt_bits variable.
+ 
+ 2022-09-29  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vxworks.h: Add comment on our use of
+ 	HAVE_INITFINI_ARRAY_SUPPORT.
+ 
+ 2022-09-29  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/aarch64/t-aarch64-vxworks: Request multilib
+ 	variants for mcmodel=large.
+ 
+ 2022-09-29  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/rs6000/vxworks.h (TARGET_FLOAT128_ENABLE_TYPE): Remove
+ 	resetting to 0.
+ 
+ 2022-09-29  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* config/vx-common.h (DWARF2_UNWIND_INFO): #define to 0
+ 	when ARM_UNWIND_INFO is set.
+ 
+ 2022-09-29  Julian Brown  <julian@codesourcery.com>
+ 
+ 	PR middle-end/107028
+ 	* gimplify.cc (omp_check_mapping_compatibility,
+ 	oacc_resolve_clause_dependencies): New functions.
+ 	(omp_accumulate_sibling_list): Remove redundant duplicate clause
+ 	detection for OpenACC.
+ 	(build_struct_sibling_lists): Skip deleted groups.  Don't build sibling
+ 	list for struct variables that are fully mapped on the same directive
+ 	for OpenACC.
+ 	(gimplify_scan_omp_clauses): Call oacc_resolve_clause_dependencies.
+ 
+ 2022-09-29  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR middle-end/25521
+ 	* varasm.cc (categorize_decl_for_section): Place `const volatile'
+ 	objects in read-only sections.
+ 	(default_select_section): Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-data-ref.cc (dr_may_alias_p): Use to_poly_widest instead
+ 	of to_widest.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (TARGET_CRYPTO, TARGET_SHA3, TARGET_SM4)
+ 	(TARGET_DOTPROD): Don't depend on TARGET_SIMD.
+ 	(TARGET_AES, TARGET_SHA2): Likewise.  Remove TARGET_CRYPTO test.
+ 	(TARGET_FP_F16INST): Don't depend on TARGET_FLOAT.
+ 	(TARGET_SVE2, TARGET_SVE_F32MM, TARGET_SVE_F64MM): Don't depend
+ 	on TARGET_SVE.
+ 	(TARGET_SVE2_AES, TARGET_SVE2_BITPERM, TARGET_SVE2_SHA3)
+ 	(TARGET_SVE2_SM4): Don't depend on TARGET_SVE2.
+ 	(TARGET_F32MM, TARGET_F64MM): Delete.
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Guard
+ 	float macros with just TARGET_FLOAT rather than TARGET_FLOAT
+ 	|| TARGET_SIMD.
+ 	* config/aarch64/aarch64-simd.md (copysign<mode>3): Depend
+ 	only on TARGET_SIMD, rather than TARGET_FLOAT && TARGET_SIMD.
+ 	(aarch64_crypto_aes<aes_op>v16qi): Depend only on TARGET_AES,
+ 	rather than TARGET_SIMD && TARGET_AES.
+ 	(aarch64_crypto_aes<aesmc_op>v16qi): Likewise.
+ 	(*aarch64_crypto_aese_fused): Likewise.
+ 	(*aarch64_crypto_aesd_fused): Likewise.
+ 	(aarch64_crypto_pmulldi): Likewise.
+ 	(aarch64_crypto_pmullv2di): Likewise.
+ 	(aarch64_crypto_sha1hsi): Likewise TARGET_SHA2.
+ 	(aarch64_crypto_sha1hv4si): Likewise.
+ 	(aarch64_be_crypto_sha1hv4si): Likewise.
+ 	(aarch64_crypto_sha1su1v4si): Likewise.
+ 	(aarch64_crypto_sha1<sha1_op>v4si): Likewise.
+ 	(aarch64_crypto_sha1su0v4si): Likewise.
+ 	(aarch64_crypto_sha256h<sha256_op>v4si): Likewise.
+ 	(aarch64_crypto_sha256su0v4si): Likewise.
+ 	(aarch64_crypto_sha256su1v4si): Likewise.
+ 	(aarch64_crypto_sha512h<sha512_op>qv2di): Likewise TARGET_SHA3.
+ 	(aarch64_crypto_sha512su0qv2di): Likewise.
+ 	(aarch64_crypto_sha512su1qv2di, eor3q<mode>4): Likewise.
+ 	(aarch64_rax1qv2di, aarch64_xarqv2di, bcaxq<mode>4): Likewise.
+ 	(aarch64_sm3ss1qv4si): Likewise TARGET_SM4.
+ 	(aarch64_sm3tt<sm3tt_op>qv4si): Likewise.
+ 	(aarch64_sm3partw<sm3part_op>qv4si): Likewise.
+ 	(aarch64_sm4eqv4si, aarch64_sm4ekeyqv4si): Likewise.
+ 	* config/aarch64/aarch64.md (<FLOATUORS:optab>dihf2)
+ 	(copysign<GPF:mode>3, copysign<GPF:mode>3_insn)
+ 	(xorsign<mode>3): Remove redundant TARGET_FLOAT condition.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.opt (aarch64_asm_isa_flags): New variable.
+ 	* config/aarch64/aarch64.h (aarch64_asm_isa_flags)
+ 	(aarch64_isa_flags): Redefine as read-only macros.
+ 	(TARGET_SIMD, TARGET_FLOAT, TARGET_SVE): Don't depend on
+ 	!TARGET_GENERAL_REGS_ONLY.
+ 	* common/config/aarch64/aarch64-common.cc
+ 	(aarch64_set_asm_isa_flags): New function.
+ 	(aarch64_handle_option): Call it when updating -mgeneral-regs.
+ 	* config/aarch64/aarch64-protos.h (aarch64_simd_switcher): Replace
+ 	m_old_isa_flags with m_old_asm_isa_flags.
+ 	(aarch64_set_asm_isa_flags): Declare.
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_simd_switcher::aarch64_simd_switcher)
+ 	(aarch64_simd_switcher::~aarch64_simd_switcher): Save and restore
+ 	aarch64_asm_isa_flags instead of aarch64_isa_flags.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(check_required_extensions): Use aarch64_asm_isa_flags instead
+ 	of aarch64_isa_flags.
+ 	* config/aarch64/aarch64.cc (aarch64_set_asm_isa_flags): New function.
+ 	(aarch64_override_options, aarch64_handle_attr_arch)
+ 	(aarch64_handle_attr_cpu, aarch64_handle_attr_isa_flags): Use
+ 	aarch64_set_asm_isa_flags to set the ISA flags.
+ 	(aarch64_option_print, aarch64_declare_function_name)
+ 	(aarch64_start_file): Use aarch64_asm_isa_flags instead
+ 	of aarch64_isa_flags.
+ 	(aarch64_can_inline_p): Check aarch64_asm_isa_flags as well as
+ 	aarch64_isa_flags.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* common/config/aarch64/aarch64-common.cc (all_extensions):
+ 	Include the feature flag in flags_on and flags_off.
+ 	(aarch64_parse_extension): Update accordingly.
+ 	(aarch64_get_extension_string_for_isa_flags): Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* common/config/aarch64/aarch64-common.cc: Use aarch64_feature_flags
+ 	for feature flags throughout.
+ 	* config/aarch64/aarch64-protos.h: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.h: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc: Likewise.
+ 	* config/aarch64/aarch64.cc: Likewise.
+ 	* config/aarch64/aarch64.opt: Likewise.
+ 	* config/aarch64/driver-aarch64.cc: Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* common/config/aarch64/aarch64-common.cc (aarch64_option_extension)
+ 	(processor_name_to_arch, arch_to_arch_name): Remove const from
+ 	member variables.
+ 	(all_extensions, all_cores, all_architectures): Make a constexpr.
+ 	* config/aarch64/aarch64.cc (processor): Remove const from
+ 	member variables.
+ 	(all_architectures): Make a constexpr.
+ 	* config/aarch64/driver-aarch64.cc (aarch64_core_data)
+ 	(aarch64_arch_driver_info): Remove const from member variables.
+ 	(aarch64_cpu_data, aarch64_arches): Make a constexpr.
+ 	(get_arch_from_id): Return a pointer to const.
+ 	(host_detect_local_cpu): Update accordingly.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* common/config/aarch64/aarch64-common.cc (processor_name_to_arch)
+ 	(arch_to_arch_name): Use const char * instead of std::string.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* common/config/aarch64/aarch64-common.cc
+ 	(TARGET_OPTION_INIT_STRUCT): Delete.
+ 	(aarch64_option_extension): Remove is_synthetic_flag.
+ 	(all_extensions): Update accordingly.
+ 	(all_extensions_by_on, opt_ext, opt_ext_cmp): Delete.
+ 	(aarch64_option_init_struct, aarch64_contains_opt): Delete.
+ 	(aarch64_get_extension_string_for_isa_flags): Rewrite to use
+ 	all_extensions instead of all_extensions_on.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def: Switch to a new format.
+ 	* config/aarch64/aarch64-cores.def: Use the same format to specify
+ 	lists of features.
+ 	* config/aarch64/aarch64-arches.def: Likewise, moving that information
+ 	from aarch64.h.
+ 	* config/aarch64/aarch64-opts.h (aarch64_feature_flags): New typedef.
+ 	* config/aarch64/aarch64.h (aarch64_feature): New class enum.
+ 	Turn AARCH64_FL_* macros into constexprs, getting the definitions
+ 	from aarch64-option-extensions.def.  Remove AARCH64_FL_FOR_* macros.
+ 	* common/config/aarch64/aarch64-common.cc: Include
+ 	aarch64-feature-deps.h.
+ 	(all_extensions): Update for new .def format.
+ 	(all_extensions_by_on, all_cores, all_architectures): Likewise.
+ 	* config/aarch64/driver-aarch64.cc: Include aarch64-feature-deps.h.
+ 	(aarch64_extensions): Update for new .def format.
+ 	(aarch64_cpu_data, aarch64_arches): Likewise.
+ 	* config/aarch64/aarch64.cc: Include aarch64-feature-deps.h.
+ 	(all_architectures, all_cores): Update for new .def format.
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(check_required_extensions): Likewise.
+ 	* config/aarch64/aarch64-feature-deps.h: New file.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def: Move crypto
+ 	after sha2.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-option-extensions.def (dotprod): Depend
+ 	on fp as well as simd.
+ 	(sha3): Likewise.
+ 	(aes): Likewise.  Make +noaes disable crypto.
+ 	(sha2): Likewise +nosha2.  Also make +nosha2 disable sha3 and
+ 	sve2-sha3.
+ 	(sve2-sha3): Depend on sha2 as well as sha3.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/107025
+ 	* config/aarch64/aarch64.h (oAARCH64_FL_RCPC8_4): Delete.
+ 	(AARCH64_FL_FOR_V8_4A): Update accordingly.
+ 	(AARCH64_ISA_RCPC8_4): Use AARCH64_FL_V8_4A directly.
+ 	* config/aarch64/aarch64-cores.def (thunderx3t110): Remove
+ 	AARCH64_FL_RCPC8_4.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Remove AARCH64_FL_FOR_<ARCH>
+ 	from the flags field.
+ 	* common/config/aarch64/aarch64-common.cc (all_cores): Add it
+ 	here instead.
+ 	* config/aarch64/aarch64.cc (all_cores): Likewise.
+ 	* config/aarch64/driver-aarch64.cc (all_cores): Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config.gcc: Remove dead aarch64-option-extensions.def code.
+ 	* config/aarch64/aarch64-arches.def: Update comment.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-arches.def: Add a leading "V" to the
+ 	ARCH_IDENT fields.
+ 	* config/aarch64/aarch64-cores.def: Update accordingly.
+ 	* common/config/aarch64/aarch64-common.cc (all_cores): Likewise.
+ 	* config/aarch64/aarch64.cc (all_cores): Likewise.
+ 	* config/aarch64/driver-aarch64.cc (aarch64_arches): Skip the
+ 	leading "V".
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH8): Rename to...
+ 	(AARCH64_FL_FOR_V8A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_1): Rename to...
+ 	(AARCH64_FL_FOR_V8_1A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_2): Rename to...
+ 	(AARCH64_FL_FOR_V8_2A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_3): Rename to...
+ 	(AARCH64_FL_FOR_V8_3A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_4): Rename to...
+ 	(AARCH64_FL_FOR_V8_4A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_5): Rename to...
+ 	(AARCH64_FL_FOR_V8_5A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_6): Rename to...
+ 	(AARCH64_FL_FOR_V8_6A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_7): Rename to...
+ 	(AARCH64_FL_FOR_V8_7A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_8): Rename to...
+ 	(AARCH64_FL_FOR_V8_8A): ...this.
+ 	(AARCH64_FL_FOR_ARCH8_R): Rename to...
+ 	(AARCH64_FL_FOR_V8R): ...this.
+ 	(AARCH64_FL_FOR_ARCH9): Rename to...
+ 	(AARCH64_FL_FOR_V9A): ...this.
+ 	(AARCH64_FL_FOR_ARCH9_1): Rename to...
+ 	(AARCH64_FL_FOR_V9_1A): ...this.
+ 	(AARCH64_FL_FOR_ARCH9_2): Rename to...
+ 	(AARCH64_FL_FOR_V9_2A): ...this.
+ 	(AARCH64_FL_FOR_ARCH9_3): Rename to...
+ 	(AARCH64_FL_FOR_V9_3A): ...this.
+ 	* common/config/aarch64/aarch64-common.cc (all_cores): Update
+ 	accordingly.
+ 	* config/aarch64/aarch64-arches.def: Likewise.
+ 	* config/aarch64/aarch64-cores.def: Likewise.
+ 	* config/aarch64/aarch64.cc (all_cores): Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_FL_V8_1, AARCH64_FL_V8_2)
+ 	(AARCH64_FL_V8_3, AARCH64_FL_V8_4, AARCH64_FL_V8_5, AARCH64_FL_V8_6)
+ 	(AARCH64_FL_V9, AARCH64_FL_V8_7, AARCH64_FL_V8_8, AARCH64_FL_V9_1)
+ 	(AARCH64_FL_V9_2, AARCH64_FL_V9_3): Add "A" to the end of the name.
+ 	(AARCH64_FL_V8_R): Rename to AARCH64_FL_V8R.
+ 	(AARCH64_FL_FOR_ARCH8_1, AARCH64_FL_FOR_ARCH8_2): Update accordingly.
+ 	(AARCH64_FL_FOR_ARCH8_3, AARCH64_FL_FOR_ARCH8_4): Likewise.
+ 	(AARCH64_FL_FOR_ARCH8_5, AARCH64_FL_FOR_ARCH8_6): Likewise.
+ 	(AARCH64_FL_FOR_ARCH8_7, AARCH64_FL_FOR_ARCH8_8): Likewise.
+ 	(AARCH64_FL_FOR_ARCH8_R, AARCH64_FL_FOR_ARCH9): Likewise.
+ 	(AARCH64_FL_FOR_ARCH9_1, AARCH64_FL_FOR_ARCH9_2): Likewise.
+ 	(AARCH64_FL_FOR_ARCH9_3, AARCH64_ISA_V8_2A, AARCH64_ISA_V8_3A)
+ 	(AARCH64_ISA_V8_4A, AARCH64_ISA_V8_5A, AARCH64_ISA_V8_6A): Likewise.
+ 	(AARCH64_ISA_V8R, AARCH64_ISA_V9A, AARCH64_ISA_V9_1A): Likewise.
+ 	(AARCH64_ISA_V9_2A, AARCH64_ISA_V9_3A): Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_ISA_V8_2, AARCH64_ISA_V8_3)
+ 	(AARCH64_ISA_V8_4, AARCH64_ISA_V8_5, AARCH64_ISA_V8_6)
+ 	(AARCH64_ISA_V9, AARCH64_ISA_V9_1, AARCH64_ISA_V9_2)
+ 	(AARCH64_ISA_V9_3): Add "A" to the end of the name.
+ 	(AARCH64_ISA_V8_R): Rename to AARCH64_ISA_V8R.
+ 	(TARGET_ARMV8_3, TARGET_JSCVT, TARGET_FRINT, TARGET_MEMTAG): Update
+ 	accordingly.
+ 	* common/config/aarch64/aarch64-common.cc
+ 	(aarch64_get_extension_string_for_isa_flags): Likewise.
+ 	* config/aarch64/aarch64-c.cc
+ 	(aarch64_define_unconditional_macros): Likewise.
+ 
+ 2022-09-29  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* Makefile.in (GTFILES): Add OPTIONS_H_EXTRA.
+ 
+ 2022-09-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/107059
+ 	* cppdefault.cc (cpp_include_defaults): If SYSROOT_HEADERS_SUFFIX_SPEC
+ 	isn't defined, add FIXED_INCLUDE_DIR entry with multilib flag 2
+ 	before FIXED_INCLUDE_DIR entry with multilib flag 0.
+ 	* gcc.cc (do_spec_1): If multiarch_dir, add
+ 	include-fixed/multiarch_dir paths before include-fixed paths.
+ 
+ 2022-09-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/106897
+ 	* common.opt: Add -gz=zstd value.
+ 	* configure.ac: Detect --compress-debug-sections=zstd
+ 	for both linker and assembler.
+ 	* configure: Regenerate.
+ 	* gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Handle -gz=zstd.
+ 	(ASM_COMPRESS_DEBUG_SPEC): Likewise.
+ 
+ 2022-09-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105646
+ 	* tree-ssa-uninit.cc (warn_uninitialized_vars): Pre-compute
+ 	the set of fallthru reachable blocks from function entry
+ 	and use that to determine wlims.always_executed.
+ 
+ 2022-09-29  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/107055
+ 	* tree-vect-loop-manip.cc (vect_can_advance_ivs_p): Check for
+ 	nonlinear induction variables.
+ 	* tree-vect-loop.cc (vect_can_peel_nonlinear_iv_p): New
+ 	functions.
+ 	(vectorizable_nonlinear_induction): Put part codes into
+ 	vect_can_peel_nonlinear_iv_p.
+ 	* tree-vectorizer.h (vect_can_peel_nonlinear_iv_p): Declare.
+ 
+ 2022-09-28  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* basic-block.h: Remove discriminator from basic blocks.
+ 	* cfghooks.cc (split_block_1): Remove discriminator from basic blocks.
+ 	* final.cc (final_start_function_1): Switch from per-bb to per statement
+ 	discriminator.
+ 	(final_scan_insn_1): Don't keep track of basic block discriminators.
+ 	(compute_discriminator): Switch from basic block discriminators to
+ 	instruction discriminators.
+ 	(insn_discriminator): New function to return instruction discriminator.
+ 	(notice_source_line): Use insn_discriminator.
+ 	* gimple-pretty-print.cc (dump_gimple_bb_header): Remove dumping of
+ 	basic block discriminators.
+ 	* gimple-streamer-in.cc (input_bb): Remove reading of basic block
+ 	discriminators.
+ 	* gimple-streamer-out.cc (output_bb): Remove writing of basic block
+ 	discriminators.
+ 	* input.cc (make_location): Pass 0 discriminator to COMBINE_LOCATION_DATA.
+ 	(location_with_discriminator): New function to combine locus with
+ 	a discriminator.
+ 	(has_discriminator): New function to check if a location has a discriminator.
+ 	(get_discriminator_from_loc): New function to get the discriminator
+ 	from a location.
+ 	* input.h: Declarations of new functions.
+ 	* lto-streamer-in.cc (cmp_loc): Use discriminators in location comparison.
+ 	(apply_location_cache): Keep track of current discriminator.
+ 	(input_location_and_block): Read discriminator from stream.
+ 	* lto-streamer-out.cc (clear_line_info): Set current discriminator to
+ 	UINT_MAX.
+ 	(lto_output_location_1): Write discriminator to stream.
+ 	* lto-streamer.h: Add discriminator to cached_location.
+ 	Add current_discr to lto_location_cache.
+ 	Add current_discr to output_block.
+ 	* print-rtl.cc (print_rtx_operand_code_i): Print discriminator.
+ 	* rtl.h: Add extern declaration of insn_discriminator.
+ 	* tree-cfg.cc (assign_discriminator): New function to assign a unique
+ 	discriminator value to all statements in a basic block that have the given
+ 	line number.
+ 	(assign_discriminators): Assign discriminators to statement locations.
+ 	* tree-pretty-print.cc (dump_location): Dump discriminators.
+ 	* tree.cc (set_block): Preserve discriminator when setting block.
+ 	(set_source_range): Preserve discriminator when setting source range.
+ 
+ 2022-09-28  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/107061
+ 	* config/i386/predicates.md (encodekey128_operation): Check
+ 	XMM4-XMM6 as clobbered.
+ 	(encodekey256_operation): Likewise.
+ 	* config/i386/sse.md (encodekey128u32): Clobber XMM4-XMM6.
+ 	(encodekey256u32): Likewise.
+ 
+ 2022-09-28  Ju-Zhe Zhong  <juzhe.zhong@rivai.ai>
+ 
+ 	* config.gcc: Add riscv-vector-builtins.o.
+ 	* config/riscv/riscv-builtins.cc (riscv_init_builtins): Add RVV builtin function.
+ 	* config/riscv/riscv-protos.h (riscv_v_ext_enabled_vector_mode_p): New function.
+ 	* config/riscv/riscv.cc (ENTRY): New macro.
+ 	(riscv_v_ext_enabled_vector_mode_p): New function.
+ 	(riscv_mangle_type): Add RVV mangle.
+ 	(riscv_vector_mode_supported_p): Adjust RVV machine mode.
+ 	(riscv_verify_type_context): Add context check for RVV.
+ 	(riscv_vector_alignment): Add RVV alignment target hook support.
+ 	(TARGET_VECTOR_MODE_SUPPORTED_P): New target hook support.
+ 	(TARGET_VERIFY_TYPE_CONTEXT): Ditto.
+ 	(TARGET_VECTOR_ALIGNMENT): Ditto.
+ 	* config/riscv/t-riscv: Add riscv-vector-builtins.o
+ 	* config/riscv/riscv-vector-builtins.cc: New file.
+ 	* config/riscv/riscv-vector-builtins.def: New file.
+ 	* config/riscv/riscv-vector-builtins.h: New file.
+ 	* config/riscv/riscv-vector-switch.def: New file.
+ 
+ 2022-09-28  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* var-tracking.cc (vt_add_function_parameter): Add entry values
+ 	up to maximal register mode.
+ 
+ 2022-09-28  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>
+ 
+ 	* cselib.cc (new_cselib_val): Keep track of further subvalue
+ 	relations.
+ 
+ 2022-09-28  Andrea Corallo  <andrea.corallo@arm.com>
+ 
+ 	* config/arm/arm-c.cc (arm_cpu_builtins): Define
+ 	__ARM_FEATURE_AES and __ARM_FEATURE_SHA2.
+ 
+ 2022-09-28  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR tree-optimization/105414
+ 	* config/loongarch/loongarch.md (UNSPEC_FMAX): New unspec.
+ 	(UNSPEC_FMIN): Likewise.
+ 	(fmax<mode>3): Use UNSPEC_FMAX instead of smax.
+ 	(fmin<mode>3): Use UNSPEC_FMIN instead of smin.
+ 
+ 2022-09-28  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_asan_shadow_offset):
+ 	Fixed typo in "asan_mapping.h".
+ 
+ 2022-09-28  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/58245
+ 	* calls.cc: Include "tree-eh.h".
+ 	(expand_call): Check stack canary before throwing exception.
+ 
+ 2022-09-27  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* ipa-cp.cc (good_cloning_opportunity_p): Fix profile count comparison.
+ 
+ 2022-09-27  Kim Kuparinen  <kim.kuparinen@rightware.com>
+ 
+ 	* doc/invoke.texi: Update ABI version info.
+ 
+ 2022-09-27  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-op.cc (cfn_popcount): Calculate the popcount of a
+ 	singleton.
+ 
+ 2022-09-27  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::set_nonzero_bits): Set range when known.
+ 
+ 2022-09-27  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (irange::set): New version taking wide_int_ref.
+ 
+ 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/107029
+ 	* tree-ssa-reassoc.cc (optimize_range_tests_cmp_bitwise): Treat
+ 	OFFSET_TYPE like POINTER_TYPE, except that OFFSET_TYPE may be
+ 	signed and so can trigger even the (b % 4) == 3 case.
+ 
+ 2022-09-27  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* cfgrtl.cc (fixup_reorder_chain): Verify that simple_return
+ 	and return are available before trying to use them.
+ 
+ 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/106652
+ 	PR c++/85518
+ 	* tree-core.h (enum tree_index): Add TI_FLOAT128T_TYPE
+ 	enumerator.
+ 	* tree.h (float128t_type_node): Define.
+ 	* tree.cc (build_common_tree_nodes): Initialize float128t_type_node.
+ 	* builtins.def (DEF_FLOATN_BUILTIN): Adjust comment now that
+ 	_Float<N> is supported in C++ too.
+ 	* config/i386/i386.cc (ix86_mangle_type): Only mangle as "g"
+ 	float128t_type_node.
+ 	* config/i386/i386-builtins.cc (ix86_init_builtin_types): Use
+ 	float128t_type_node for __float128 instead of float128_type_node
+ 	and create it if NULL.
+ 	* config/i386/avx512fp16intrin.h (_mm_setzero_ph, _mm256_setzero_ph,
+ 	_mm512_setzero_ph, _mm_set_sh, _mm_load_sh): Use 0.0f16 instead of
+ 	0.0f.
+ 	* config/ia64/ia64.cc (ia64_init_builtins): Use
+ 	float128t_type_node for __float128 instead of float128_type_node
+ 	and create it if NULL.
+ 	* config/rs6000/rs6000-c.cc (is_float128_p): Also return true
+ 	for float128t_type_node if non-NULL.
+ 	* config/rs6000/rs6000.cc (rs6000_mangle_type): Don't mangle
+ 	float128_type_node as "u9__ieee128".
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Use
+ 	float128t_type_node for __float128 instead of float128_type_node
+ 	and create it if NULL.
+ 
+ 2022-09-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Add missing dash for
+ 	Wanalyzer-exposure-through-uninit-copy.
+ 
+ 2022-09-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107009
+ 	* range-op.cc (operator_bitwise_and::op1_range): Optimize 0 = x & MASK.
+ 	(range_op_bitwise_and_tests): New test.
+ 
+ 2022-09-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/107009
+ 	* tree-ssa-dom.cc
+ 	(dom_opt_dom_walker::set_global_ranges_from_unreachable_edges):
+ 	Iterate over exports.
+ 
+ 2022-09-26  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config.gcc (with_arch) [nvptx]: Allow '--with-arch' to override
+ 	the default.
+ 	* config/nvptx/gen-multilib-matches.sh: New.
+ 	* config/nvptx/t-nvptx (MULTILIB_OPTIONS, MULTILIB_MATCHES)
+ 	(MULTILIB_EXCEPTIONS): Handle this.
+ 	* doc/install.texi (Specific) <nvptx-*-none>: Document this.
+ 	* doc/invoke.texi (Nvidia PTX Options): Likewise.
+ 
+ 2022-09-26  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config.gcc (TM_MULTILIB_CONFIG) [nvptx]: Set to '$with_arch'.
+ 	* config/nvptx/t-nvptx (MULTILIB_OPTIONS, MULTILIB_MATCHES)
+ 	(MULTILIB_EXCEPTIONS): Handle it.
+ 
+ 2022-09-26  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config.gcc (with_arch) [nvptx]: Set to 'sm_30'.
+ 	* config/nvptx/nvptx.cc (nvptx_option_override): Assert that
+ 	'-misa' appeared.
+ 	* config/nvptx/nvptx.h (OPTION_DEFAULT_SPECS): Define.
+ 	* config/nvptx/nvptx.opt (misa=): Remove 'Init'.
+ 
+ 2022-09-26  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Define.
+ 
+ 2022-09-26  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* cfgcleanup.cc (bb_is_just_return): No longer static.
+ 	* cfgcleanup.h (bb_is_just_return): Add prototype.
+ 	* cfgrtl.cc (fixup_reorder_chain): Do not create an
+ 	unconditional jump to a return block.  Conditionally
+ 	remove unreachable blocks.
+ 
+ 2022-09-26  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/106982
+ 	* omp-low.cc (lower_oacc_reductions): Add some unshare_expr.
+ 
+ 2022-09-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/s390/s390.cc (s390_rtx_costs): Remove dest variable
+ 	and use only dst.
+ 
+ 2022-09-26  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-arches.def (armv9.1-a): Define.
+ 	(armv9.2-a): Likewise.
+ 	(armv9.3-a): Likewise.
+ 	* config/aarch64/aarch64.h (AARCH64_FL_V9_1): Likewise.
+ 	(AARCH64_FL_V9_2): Likewise.
+ 	(AARCH64_FL_V9_3): Likewise.
+ 	(AARCH64_FL_FOR_ARCH9_1): Likewise.
+ 	(AARCH64_FL_FOR_ARCH9_2): Likewise.
+ 	(AARCH64_FL_FOR_ARCH9_3): Likewise.
+ 	(AARCH64_ISA_V9_1): Likewise.
+ 	(AARCH64_ISA_V9_2): Likewise.
+ 	(AARCH64_ISA_V9_3): Likewise.
+ 	* doc/invoke.texi (AArch64 Options): Document armv9.1-a, armv9.2-a,
+ 	armv9.3-a values to -march.
+ 
+ 2022-09-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-range.cc (tree_compare): Remove unused function.
+ 
+ 2022-09-26  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/96072
+ 	* config/rs6000/rs6000-logue.cc (rs6000_emit_epilogue): Update the
+ 	condition for adding REG_CFA_DEF_CFA reg note with
+ 	frame_pointer_needed_indeed.
+ 
+ 2022-09-26  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/100645
+ 	* config/rs6000/vector.md (vec_shr_<mode>): Replace condition
+ 	TARGET_ALTIVEC with VECTOR_UNIT_ALTIVEC_OR_VSX_P.
+ 
+ 2022-09-26  Hongtao Liu  <hongtao.liu@intel.com>
+ 	    Liwei Xu  <liwei.xu@intel.com>
+ 
+ 	PR target/53346
+ 	* config/i386/i386-expand.cc (expand_vec_perm_shufps_shufps):
+ 	New function.
+ 	(ix86_expand_vec_perm_const_1): Insert
+ 	expand_vec_perm_shufps_shufps at the end of 2-instruction
+ 	expand sequence.
+ 
+ 2022-09-25  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* doc/sourcebuild.texi: Fix chapter level.
+ 
+ 2022-09-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/107001
+ 	* omp-low.cc (lower_omp_taskgroup): Don't add GOMP_RETURN statement
+ 	at the end.
+ 	* omp-expand.cc (build_omp_regions_1): Clarify GF_OMP_TARGET_KIND_DATA
+ 	is not stand-alone directive.  For GIMPLE_OMP_TASKGROUP, also don't
+ 	update parent.
+ 	(omp_make_gimple_edges) <case GIMPLE_OMP_TASKGROUP>: Reset
+ 	cur_region back after new_omp_region.
+ 
+ 2022-09-23  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* config/riscv/riscv.h (LOCAL_SYM_P): New.
+ 	(USE_LOAD_ADDRESS_MACRO): Simplify by calling LOCAL_SYM_P.
+ 
+ 2022-09-23  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv-modes.def (VECTOR_BOOL_MODE): Add RVV mask modes.
+ 	(ADJUST_NUNITS): Adjust nunits using riscv_vector_chunks.
+ 	(ADJUST_ALIGNMENT): Adjust alignment.
+ 	(ADJUST_BYTESIZE): Adjust bytesize using riscv_vector_chunks.
+ 	(RVV_MODES): New macro.
+ 	(VECTOR_MODE_WITH_PREFIX): Add RVV vector modes.
+ 	(VECTOR_MODES_WITH_PREFIX): Add RVV vector modes.
+ 
+ 2022-09-23  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* common/config/riscv/riscv-common.cc: Change "static void" to "void".
+ 	* config.gcc: Add riscv-selftests.o
+ 	* config/riscv/predicates.md: Allow const_poly_int.
+ 	* config/riscv/riscv-protos.h (riscv_reinit): New function.
+ 	(riscv_parse_arch_string): change as exten function.
+ 	(riscv_run_selftests): New function.
+ 	* config/riscv/riscv.cc (riscv_cannot_force_const_mem): Don't allow poly
+ 	into const pool.
+ 	(riscv_report_v_required): New function.
+ 	(riscv_expand_op): New function.
+ 	(riscv_expand_mult_with_const_int): New function.
+ 	(riscv_legitimize_poly_move): Ditto.
+ 	(riscv_legitimize_move): New function.
+ 	(riscv_hard_regno_mode_ok): Add VL/VTYPE register allocation and fix
+ 	vector RA.
+ 	(riscv_convert_vector_bits): Fix riscv_vector_chunks configuration for
+ 	-marh no 'v'.
+ 	(riscv_reinit): New function.
+ 	(TARGET_RUN_TARGET_SELFTESTS): New target hook support.
+ 	* config/riscv/t-riscv: Add riscv-selftests.o.
+ 	* config/riscv/riscv-selftests.cc: New file.
+ 
+ 2022-09-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106922
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Allow
+ 	an arbitrary number of same valued skipped stores.
+ 
+ 2022-09-23  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Swap setters such that the one
+ 	accepting REAL_VALUE_TYPE does all the work.
+ 
+ 2022-09-23  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def (neoverse-v2): New entry.
+ 	(demeter): Update tunings to neoversev2.
+ 	* config/aarch64/aarch64-tune.md: Regenerate.
+ 	* config/aarch64/aarch64.cc (demeter_addrcost_table): Rename to
+ 	neoversev2_addrcost_table.
+ 	(demeter_regmove_cost): Rename to neoversev2_addrcost_table.
+ 	(demeter_advsimd_vector_cost): Rename to neoversev2_advsimd_vector_cost.
+ 	(demeter_sve_vector_cost): Rename to neoversev2_sve_vector_cost.
+ 	(demeter_scalar_issue_info): Rename to neoversev2_scalar_issue_info.
+ 	(demeter_advsimd_issue_info): Rename to neoversev2_advsimd_issue_info.
+ 	(demeter_sve_issue_info): Rename to neoversev2_sve_issue_info.
+ 	(demeter_vec_issue_info): Rename to neoversev2_vec_issue_info.
+ 	Update references to above.
+ 	(demeter_vector_cost): Rename to neoversev2_vector_cost.
+ 	(demeter_tunings): Rename to neoversev2_tunings.
+ 	(aarch64_vec_op_count::rename_cycles_per_iter): Use
+ 	neoversev2_sve_issue_info instead of demeter_sve_issue_info.
+ 	* doc/invoke.texi (AArch64 Options): Document neoverse-v2.
+ 
+ 2022-09-23  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (build_le): Use vrp_val_*.
+ 	(build_lt): Same.
+ 	(build_ge): Same.
+ 	(build_gt): Same.
+ 	* value-range.cc (frange::set): Chop ranges outside of the
+ 	representable numbers for -ffinite-math-only.
+ 	(frange::normalize_kind): Use vrp_val*.
+ 	(frange::verify_range): Same.
+ 	(frange::set_nonnegative): Same.
+ 	(range_tests_floats): Remove tests that depend on -INF and +INF.
+ 	* value-range.h (real_max_representable): Add prototype.
+ 	(real_min_representable): Same.
+ 	(vrp_val_max): Set max representable number for
+ 	-ffinite-math-only.
+ 	(vrp_val_min): Same but for min.
+ 	(frange::set_varying): Use vrp_val*.
+ 
+ 2022-09-23  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* real.cc (debug): New.
+ 
+ 2022-09-23  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-pretty-print.cc (vrange_printer::print_real_value): New.
+ 	(vrange_printer::visit): Call print_real_value.
+ 	* value-range-pretty-print.h: New print_real_value.
+ 
+ 2022-09-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common.opt: Update -flto-compression-level documentation.
+ 	* opts.cc (print_filtered_help): Do not append range to an
+ 	option that uses \t syntax.
+ 
+ 2022-09-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* attribs.cc (decl_attributes): Improve diagnostics, instead of
+ 	saying expected between 1 and 1, found 2 just say expected 1, found 2.
+ 
+ 2022-09-23  Hu, Lin1  <lin1.hu@intel.com>
+ 
+ 	PR target/94962
+ 	* config/i386/constraints.md (BH): New define_constraint.
+ 	* config/i386/i386.cc (standard_sse_constant_p): Add return
+ 	3/4 when operand matches new predicate.
+ 	(standard_sse_constant_opcode): Add new alternative branch to
+ 	return "vpcmpeqd".
+ 	* config/i386/predicates.md
+ 	(vector_all_ones_zero_extend_half_operand): New define_predicate.
+ 	(vector_all_ones_zero_extend_quarter_operand): Ditto.
+ 	* config/i386/sse.md: Add constraint to insn "mov<mode>_internal".
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_range_op): Handle no operands.
+ 	(range_of_call): Do not check for builtins.
+ 	(fold_using_range::range_of_builtin_call): Delete.
+ 	(fold_using_range::range_of_builtin_int_call): Delete.
+ 	* gimple-range-fold.h: Adjust prototypes.
+ 	* gimple-range-op.cc (class cfn_parity): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_GOACC_DIM_*.
+ 	* gimple-range-op.cc (class cfn_goacc_dim): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_BUILT_IN_STRLEN.
+ 	* gimple-range-op.cc (class cfn_strlen): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_ubsan_call): Delete.
+ 	(range_of_builtin_int_call): Remove cases for
+ 	CFN_BUILT_IN_UBSAN_CHECK.
+ 	* gimple-range-op.cc (class cfn_ubsan): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_BUILT_IN_CLRSB.
+ 	* gimple-range-op.cc (class cfn_clrsb): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_CTZ.
+ 	* gimple-range-op.cc (class cfn_ctz): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_CLZ.
+ 	* gimple-range-op.cc (class cfn_clz): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_FFS and CFN_POPCOUNT.
+ 	* gimple-range-op.cc (class cfn_pocount): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (get_letter_range): Move to new class.
+ 	(range_of_builtin_int_call): Remove case for CFN_BUILT_IN_TOUPPER
+ 	and CFN_BUILT_IN_TOLOWER.
+ 	* gimple-range-op.cc (class cfn_toupper_tolower): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Remove case
+ 	for CFN_BUILT_IN_SIGNBIT.
+ 	* gimple-range-op.cc (class cfn_signbit): New.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc
+ 	(fold_using_range::range_of_builtin_int_call): Remove case for
+ 	CFN_BUILT_IN_CONSTANT_P.
+ 	* gimple-range-op.cc (gimple_range_op_handler::supported_p):
+ 	Check if a call also creates a range-op object.
+ 	(gimple_range_op_handler): Also check builtin calls.
+ 	(class cfn_constant_float_p): New.  Float CFN_BUILT_IN_CONSTANT_P.
+ 	(class cfn_constant_p): New.  Integral CFN_BUILT_IN_CONSTANT_P.
+ 	(gimple_range_op_handler::maybe_builtin_call): Set arguments and
+ 	handler for supported built-in calls.
+ 	* gimple-range-op.h (maybe_builtin_call): New prototype.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (range_of_range_op): Set result to
+ 	VARYING if the call to fold_range fails.
+ 	* tree-data-ref.cc (compute_distributive_range): Ditto.
+ 	* tree-vrp.cc (range_fold_binary_expr): Ditto.
+ 	(range_fold_unary_expr): Ditto.
+ 	* value-query.cc (range_query::get_tree_range): Ditto.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op-float.cc (range_operator_float::fold_range): New base
+ 	method for "int = float op int".
+ 	* range-op.cc (range_op_handler::fold_range): New case.
+ 	* range-op.h: Update prototypes.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-op.cc (gimple_range_op_handler::calc_op1): Use
+ 	operand 1 for second range if there is no operand 2.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add gimple-range-op.o.
+ 	* gimple-range-edge.cc (gimple_outgoing_range_stmt_p): Use
+ 	gimple_range_op_handler.
+ 	* gimple-range-fold.cc (gimple_range_base_of_assignment): Move
+ 	to a method in gimple_range_op_handler.
+ 	(gimple_range_operand1): Ditto.
+ 	(gimple_range_operand2): Ditto.
+ 	(fold_using_range::fold_stmt): Use gimple_range_op_handler.
+ 	(fold_using_range::range_of_range_op): Ditto.
+ 	(fold_using_range::relation_fold_and_or): Ditto.
+ 	(fur_source::register_outgoing_edges): Ditto.
+ 	(gimple_range_ssa_names): Relocate to gimple-range-op.cc.
+ 	* gimple-range-fold.h: Adjust prototypes.
+ 	* gimple-range-gori.cc (gimple_range_calc_op1): Move
+ 	to a method in gimple_range_op_handler.
+ 	(gimple_range_calc_op2): Ditto.
+ 	(gori_compute::compute_operand_range): Use
+ 	gimple_range_op_handler.
+ 	(gori_compute::compute_logical_operands): Ditto.
+ 	(compute_operand1_range): Ditto.
+ 	(gori_compute::compute_operand2_range): Ditto.
+ 	(gori_compute::compute_operand1_and_operand2_range): Ditto.
+ 	* gimple-range-gori.h: Adjust protoypes.
+ 	* gimple-range-op.cc: New.  Supply gimple_range_op_handler methods.
+ 	* gimple-range-op.h: New.  Supply gimple_range_op_handler class.
+ 	* gimple-range.cc (gimple_ranger::prefill_name): Use
+ 	gimple_range_op_handler.
+ 	(gimple_ranger::prefill_stmt_dependencies): Ditto.
+ 	* gimple-range.h: Include gimple-range-op.h.
+ 	* range-op.cc (range_op_handler::range_op_handler): Adjust and
+ 	remove gimple * parameter option.
+ 	* range-op.h: Adjust prototypes.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* range-op.cc (range_op_handler::set_op_handler): Set new fields.
+ 	(ange_op_handler::range_op_handler): Likewise.
+ 	(range_op_handler::operator bool): Remove.
+ 	(range_op_handler::fold_range): Use appropriate handler.
+ 	(range_op_handler::op1_range): Likewise.
+ 	(range_op_handler::op2_range): Likewise.
+ 	(range_op_handler::lhs_op1_relation): Likewise.
+ 	(range_op_handler::lhs_op2_relation): Likewise.
+ 	(range_op_handler::op1_op2_relation): Likewise.
+ 	* range-op.h (class range_op_handler): Store handler pointers.
+ 	(range_op_handler:: operator bool): Inline.
+ 
+ 2022-09-22  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* tree-ssa-threadbackward.cc
+ 	(back_threader::find_paths_to_names): Replace sequence with
+ 	a call to gimple_range_ssa_names.
+ 
+ 2022-09-22  Martin Liska  <mliska@suse.cz>
+ 	    Fangrui Song  <i@maskray.me>
+ 
+ 	* configure: Regenerate.
+ 	* configure.ac: Simplify to gcc_cv_ld_compress_debug={0,1}
+ 	and gcc_cv_as_compress_debug={0,1}.
+ 	* doc/invoke.texi: Document the removal.
+ 	* gcc.cc (LINK_COMPRESS_DEBUG_SPEC): Simplify and ignore
+ 	zlib-gnu.
+ 	(ASM_COMPRESS_DEBUG_SPEC): Likewise.
+ 
+ 2022-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106922
+ 	* tree-ssa-sccvn.cc (vn_walk_cb_data::same_val): New member.
+ 	(vn_walk_cb_data::finish): Perform delayed verification of
+ 	a skipped may-alias.
+ 	(vn_reference_lookup_pieces): Likewise.
+ 	(vn_reference_lookup): Likewise.
+ 	(vn_reference_lookup_3): When skipping stores of the same
+ 	value also handle constant stores that are more than a
+ 	single VDEF away by delaying the verification.
+ 
+ 2022-09-22  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.cc (TARGET_MAX_ANCHOR_OFFSET): New
+ 	definition.
+ 
+ 2022-09-22  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_can_output_mi_thunk)
+ 	(xtensa_output_mi_thunk): New functions.
+ 	(TARGET_ASM_CAN_OUTPUT_MI_THUNK)
+ 	(TARGET_ASM_OUTPUT_MI_THUNK): New macro definitions.
+ 	(xtensa_prepare_expand_call): Use fixed register a8 as temporary
+ 	when called with reload_completed set to 1.
+ 
+ 2022-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/99407
+ 	* tree-ssa-dse.cc (dse_stmt_to_dr_map): New global.
+ 	(dse_classify_store): Use data-ref analysis to disambiguate more uses.
+ 	(pass_dse::use_dr_analysis_p): New pass parameter.
+ 	(pass_dse::set_pass_param): Implement.
+ 	(pass_dse::execute): Allocate and deallocate dse_stmt_to_dr_map.
+ 	* passes.def: Allow DR analysis for the DSE pass before loop.
+ 
+ 2022-09-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.cc (can_track_predicate_on_edge): New
+ 	function split out from ...
+ 	(vn_nary_op_insert_pieces_predicated): ... here.
+ 
+ 2022-09-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/106994
+ 	* config/i386/mmx.md (floorv2sf2): Fix typo, use
+ 	register_operand instead of vector_operand for operands[1].
+ 
+ 2022-09-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/106967
+ 	* value-range.cc (frange::set): Set known NANs to undefined for
+ 	flag_finite_math_only.
+ 
+ 2022-09-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::combine_zeros): Call set_undefined.
+ 	(frange::intersect_nans): Same.
+ 	(frange::intersect): Same.
+ 	(frange::verify_range): Undefined ranges do not have a type.
+ 	* value-range.h (frange::set_undefined): Clear NAN flags and type.
+ 
+ 2022-09-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106984
+ 	* tsan.cc (instrument_builtin_call): Build the COND_EXPR condition in
+ 	a separate statement.
+ 
+ 2022-09-21  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (HAVE_LOCAL_CPU_DETECT,
+ 	EXTRA_SPEC_FUNCTIONS, MCPU_MTUNE_NATIVE_SPECS): Move definitions up before
+ 	OPTION_DEFAULT_SPECS.
+ 	(MCPU_MTUNE_NATIVE_SPECS): Pass "cpu" to
+ 	local_cpu_detect when rewriting -march=native and no -mcpu or -mtune
+ 	is given.
+ 	(CONFIG_TUNE_SPEC): Define.
+ 	(OPTION_DEFAULT_SPECS): Use CONFIG_TUNE_SPEC for "tune".
+ 
+ 2022-09-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/106967
+ 	* range-op-float.cc (foperator_equal::fold_range): Adjust for NAN.
+ 	(foperator_equal::op1_range): Same.
+ 	(foperator_not_equal::fold_range): Same.
+ 	(foperator_not_equal::op1_range): Same.
+ 	(foperator_lt::fold_range): Same.
+ 	(foperator_lt::op1_range): Same.
+ 	(foperator_lt::op2_range): Same.
+ 	(foperator_le::fold_range): Same.
+ 	(foperator_le::op1_range): Same.
+ 	(foperator_le::op2_range): Same.
+ 	(foperator_gt::fold_range): Same.
+ 	(foperator_gt::op1_range): Same.
+ 	(foperator_gt::op2_range): Same.
+ 	(foperator_ge::fold_range): Same.
+ 	(foperator_ge::op1_range): Same.
+ 	(foperator_ge::op2_range): Same.
+ 	(foperator_unordered::op1_range): Same.
+ 	(foperator_ordered::fold_range): Same.
+ 	(foperator_ordered::op1_range): Same.
+ 	(build_le): Assert that we don't have a NAN.
+ 	(build_lt): Same.
+ 	(build_gt): Same.
+ 	(build_ge): Same.
+ 
+ 2022-09-21  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/106963
+ 	* tree-vect-loop.cc (vect_create_nonlinear_iv_init): Use
+ 	vec_gen_perm_mask_any instead of vec_gen_perm_mask_check.
+ 
+ 2022-09-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (frange::maybe_isnan): Return false for
+ 	undefined ranges.
+ 
+ 2022-09-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set_nonnegative): Set +NAN.
+ 	(range_tests_signed_zeros): New test.
+ 	* value-range.h (frange::update_nan): New overload to set NAN sign.
+ 
+ 2022-09-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/106491
+ 	* config/aarch64/aarch64-sve-builtins.cc (scalar_types)
+ 	(acle_vector_types, acle_svpattern, acle_svprfop): Add GTY
+ 	markup to (new) extern declarations instead of to the main
+ 	definition.
+ 
+ 2022-09-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/106794
+ 	PR tree-optimization/106914
+ 	* tree-vect-slp.cc (vect_optimize_slp_pass::internal_node_cost):
+ 	Only consider loads that already have a permutation.
+ 	(vect_optimize_slp_pass::start_choosing_layouts): Assert that
+ 	loads with permutations are leaf nodes.  Prevent any kind of grouped
+ 	access from changing layout if it doesn't have a load permutation.
+ 
+ 2022-09-20  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-data-refs.cc (vect_check_gather_scatter): Restrict
+ 	early-out optimisation to SSA_NAMEs.
+ 
+ 2022-09-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ctfc.cc (ctf_add_string): Replace "the the" with "the".
+ 	* doc/md.texi: Likewise.
+ 	* gimple-range-infer.cc (non_null_loadstore): Likewise.
+ 
+ 2022-09-20  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/106910
+ 	* config/i386/mmx.md (nearbyintv2sf2): New expander.
+ 	(rintv2sf2): Ditto.
+ 	(ceilv2sf2): Ditto.
+ 	(lceilv2sfv2si2): Ditto.
+ 	(floorv2sf2): Ditto.
+ 	(lfloorv2sfv2si2): Ditto.
+ 	(btruncv2sf2): Ditto.
+ 	(lrintv2sfv2si2): Ditto.
+ 	(roundv2sf2): Ditto.
+ 	(lroundv2sfv2si2): Ditto.
+ 	(*mmx_roundv2sf2): New define_insn.
+ 
+ 2022-09-20  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR middle-end/105735
+ 	* tree-scalar-evolution.cc
+ 	(analyze_and_compute_bitop_with_inv_effect): New function.
+ 	(final_value_replacement_loop): Enhanced to handle bitop
+ 	with inv induction.
+ 
+ 2022-09-20  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/gnu-user.h (GNU_USER_TARGET_LINK_SPEC): For
+ 	-static-pie, pass -static -pie --no-dynamic-linker -z text to
+ 	the linker, and do not pass --dynamic-linker.
+ 
+ 2022-09-20  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::flush_denormals_to_zero): New.
+ 	(frange::set): Call flush_denormals_to_zero.
+ 	* value-range.h (class frange): Add flush_denormals_to_zero.
+ 
+ 2022-09-20  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Adjust for
+ 	latest Intel processors.
+ 
+ 2022-09-20  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/106887
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
+ 	Fixed V16BF mode case.
+ 
+ 2022-09-19  Torbjörn SVENSSON  <torbjorn.svensson@foss.st.com>
+ 
+ 	* targhooks.cc (default_zero_call_used_regs): Improve sorry
+ 	message.
+ 
+ 2022-09-18  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* gimplify.cc (omp_segregate_mapping_groups): Update comment.
+ 	(gimplify_adjust_omp_clauses): Move ATTACH and
+ 	ATTACH_ZERO_LENGTH_ARRAY_SECTION nodes to the end of the clause list
+ 	for offloaded OpenMP regions.
+ 
+ 2022-09-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/106831
+ 	* value-range.cc (frange::singleton_p): Avoid propagating long
+ 	doubles that may have multiple representations.
+ 
+ 2022-09-18  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (frange_add_zeros): Replace set_signbit with
+ 	union of zero.
+ 	* value-query.cc (range_query::get_tree_range): Remove set_signbit
+ 	use.
+ 	* value-range-pretty-print.cc (vrange_printer::print_frange_prop):
+ 	Remove.
+ 	(vrange_printer::print_frange_nan): New.
+ 	* value-range-pretty-print.h (print_frange_prop): Remove.
+ 	(print_frange_nan): New.
+ 	* value-range-storage.cc (frange_storage_slot::set_frange): Set
+ 	kind and NAN fields.
+ 	(frange_storage_slot::get_frange): Restore kind and NAN fields.
+ 	* value-range-storage.h (class frange_storage_slot): Add kind and
+ 	NAN fields.
+ 	* value-range.cc (frange::update_nan): Remove.
+ 	(frange::set_signbit): Remove.
+ 	(frange::set): Adjust for NAN fields.
+ 	(frange::normalize_kind): Remove m_props.
+ 	(frange::combine_zeros): New.
+ 	(frange::union_nans): New.
+ 	(frange::union_): Handle new NAN fields.
+ 	(frange::intersect_nans): New.
+ 	(frange::intersect): Handle new NAN fields.
+ 	(frange::operator=): Same.
+ 	(frange::operator==): Same.
+ 	(frange::contains_p): Same.
+ 	(frange::singleton_p): Remove special case for signed zeros.
+ 	(frange::verify_range): Adjust for new NAN fields.
+ 	(frange::set_zero): Handle signed zeros.
+ 	(frange::set_nonnegative): Same.
+ 	(range_tests_nan): Adjust tests.
+ 	(range_tests_signed_zeros): Same.
+ 	(range_tests_signbit): Same.
+ 	(range_tests_floats): Same.
+ 	* value-range.h (class fp_prop): Remove.
+ 	(FP_PROP_ACCESSOR): Remove.
+ 	(class frange_props): Remove
+ 	(frange::lower_bound): NANs don't have endpoints.
+ 	(frange::upper_bound): Same.
+ 	(frange_props::operator==): Remove.
+ 	(frange_props::union_): Remove.
+ 	(frange_props::intersect): Remove.
+ 	(frange::update_nan): New.
+ 	(frange::clear_nan): New.
+ 	(frange::undefined_p): New.
+ 	(frange::set_nan): New.
+ 	(frange::known_finite): Adjust for new NAN representation.
+ 	(frange::maybe_isnan): Same.
+ 	(frange::known_isnan): Same.
+ 	(frange::signbit_p): Same.
+ 	* gimple-range-fold.cc (range_of_builtin_int_call): Rename
+ 	known_signbit_p into signbit_p.
+ 
+ 2022-09-17  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
+ 
+ 	* config/csky/csky.h (FUNCTION_ARG_REGNO_P): Cast REGNO to (int)
+ 	to prevent warning.
+ 
+ 2022-09-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/106958
+ 	* tree-ssa-reassoc.cc (optimize_range_tests_cmp_bitwise): If
+ 	id >= l, cast op to type1, otherwise to pointer_sized_int_node.
+ 	If type has pointer type, cast exp to pointer_sized_int_node
+ 	even when id < l.
+ 
+ 2022-09-16  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/106910
+ 	* config/i386/i386-builtins.cc
+ 	(ix86_builtin_vectorized_function): Modernized with
+ 	corresponding expanders.
+ 	* config/i386/sse.md (lrint<mode><sseintvecmodelower>2): New
+ 	expander.
+ 	(floor<mode>2): Ditto.
+ 	(lfloor<mode><sseintvecmodelower>2): Ditto.
+ 	(ceil<mode>2): Ditto.
+ 	(lceil<mode><sseintvecmodelower>2): Ditto.
+ 	(btrunc<mode>2): Ditto.
+ 	(lround<mode><sseintvecmodelower>2): Ditto.
+ 	(exp2<mode>2): Ditto.
+ 
+ 2022-09-15  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/float.h (INFINITY): Define only if
+ 	[__FLT_HAS_INFINITY__].
+ 
+ 2022-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106922
+ 	* tree-ssa-pre.cc (translate_vuse_through_block): Only
+ 	keep the VUSE if its def dominates PHIBLOCK.
+ 	(prune_clobbered_mems): Rewrite logic so we check whether
+ 	a value dies in a block when the VUSE def doesn't dominate it.
+ 
+ 2022-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree.cc (build_common_tree_nodes): Initialize void_list_node
+ 	here.
+ 
+ 2022-09-15  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR target/106550
+ 	* config/rs6000/rs6000.cc (rs6000_emit_set_long_const): Use pli.
+ 
+ 2022-09-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (frange_add_zeros): New.
+ 	(build_le): Call frange_add_zeros.
+ 	(build_ge): Same.
+ 	(foperator_equal::op1_range): Same.
+ 	(foperator_not_equal::op1_range): Same.
+ 
+ 2022-09-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (build_le): Accept frange instead of number.
+ 	(build_lt): Same.
+ 	(build_ge): Same.
+ 	(build_gt): Same.
+ 	(foperator_lt::op1_range): Pass full range to build_*.
+ 	(foperator_lt::op2_range): Same.
+ 	(foperator_le::op1_range): Same.
+ 	(foperator_le::op2_range): Same.
+ 	(foperator_gt::op1_range): Same.
+ 	(foperator_gt::op2_range): Same.
+ 	(foperator_ge::op1_range): Same.
+ 	(foperator_ge::op2_range): Same.
+ 
+ 2022-09-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Use set_nan.
+ 	* value-range.h (frange::set_nan): Inline code originally in
+ 	set().
+ 
+ 2022-09-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (frange_set_nan): Remove.
+ 	(build_lt): Use set_nan, update_nan, clear_nan.
+ 	(build_gt): Same.
+ 	(foperator_equal::op1_range): Same.
+ 	(foperator_not_equal::op1_range): Same.
+ 	(foperator_lt::op1_range): Same.
+ 	(foperator_lt::op2_range): Same.
+ 	(foperator_le::op1_range): Same.
+ 	(foperator_le::op2_range): Same.
+ 	(foperator_gt::op1_range): Same.
+ 	(foperator_gt::op2_range): Same.
+ 	(foperator_ge::op1_range): Same.
+ 	(foperator_ge::op2_range): Same.
+ 	(foperator_unordered::op1_range): Same.
+ 	(foperator_ordered::op1_range): Same.
+ 	* value-query.cc (range_query::get_tree_range): Same.
+ 	* value-range.cc (frange::set_nan): Same.
+ 	(frange::update_nan): Same.
+ 	(frange::union_): Same.
+ 	(frange::intersect): Same.
+ 	(range_tests_nan): Same.
+ 	(range_tests_signed_zeros): Same.
+ 	(range_tests_signbit): Same.
+ 	(range_tests_floats): Same.
+ 	* value-range.h (class frange): Add update_nan and clear_nan.
+ 	(frange::set_nan): New.
+ 
+ 2022-09-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-query.cc (range_query::get_tree_range): Remove check for overflow.
+ 	* value-range-pretty-print.cc (vrange_printer::visit): Move read
+ 	of type until after undefined_p is checked.
+ 	* value-range.cc (frange::set): Remove asserts for REAL_CST.
+ 	(frange::contains_p): Tidy up.
+ 	(range_tests_nan):  Add comment.
+ 	* value-range.h (frange::type): Check for undefined_p.
+ 	(frange::set_undefined): Remove set of endpoints.
+ 
+ 2022-09-14  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* gimplify.cc (omp_group_last): Allow GOMP_MAP_ATTACH_DETACH after
+ 	GOMP_MAP_STRUCT (for reindexing).
+ 	(omp_gather_mapping_groups): Reimplement using...
+ 	(omp_gather_mapping_groups_1): This new function.  Stop processing at
+ 	GATHER_SENTINEL.
+ 	(omp_group_base): Allow GOMP_MAP_TO_PSET without any following node.
+ 	(omp_index_mapping_groups): Reimplement using...
+ 	(omp_index_mapping_groups_1): This new function.  Handle
+ 	REINDEX_SENTINEL.
+ 	(omp_reindex_mapping_groups, omp_mapped_by_containing_struct): New
+ 	functions.
+ 	(omp_tsort_mapping_groups_1): Adjust handling of base group being the
+ 	same as current group.  Use omp_mapped_by_containing_struct.
+ 	(omp_build_struct_sibling_lists): Use omp_mapped_by_containing_struct
+ 	and omp_reindex_mapping_groups.  Robustify group deletion for reordered
+ 	lists.
+ 	(gimplify_scan_omp_clauses): Update calls to
+ 	omp_build_struct_sibling_lists.
+ 
+ 2022-09-14  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* gimplify.cc (gimplify_omp_var_data): Remove GOVD_MAP_HAS_ATTACHMENTS.
+ 	(GOMP_FIRSTPRIVATE_IMPLICIT): Renumber.
+ 	(insert_struct_comp_map): Refactor function into...
+ 	(build_omp_struct_comp_nodes): This new function.  Remove list handling
+ 	and improve self-documentation.
+ 	(extract_base_bit_offset): Remove BASE_REF, OFFSETP parameters.  Move
+ 	code to strip outer parts of address out of function, but strip no-op
+ 	conversions.
+ 	(omp_mapping_group): Add DELETED field for use during reindexing.
+ 	(omp_strip_components_and_deref, omp_strip_indirections): New functions.
+ 	(omp_group_last, omp_group_base): Add GOMP_MAP_STRUCT handling.
+ 	(omp_gather_mapping_groups): Initialise DELETED field for new groups.
+ 	(omp_index_mapping_groups): Notice DELETED groups when (re)indexing.
+ 	(omp_siblist_insert_node_after, omp_siblist_move_node_after,
+ 	omp_siblist_move_nodes_after, omp_siblist_move_concat_nodes_after): New
+ 	helper functions.
+ 	(omp_accumulate_sibling_list): New function to build up GOMP_MAP_STRUCT
+ 	node groups for sibling lists. Outlined from gimplify_scan_omp_clauses.
+ 	(omp_build_struct_sibling_lists): New function.
+ 	(gimplify_scan_omp_clauses): Remove struct_map_to_clause,
+ 	struct_seen_clause, struct_deref_set.  Call
+ 	omp_build_struct_sibling_lists as pre-pass instead of handling sibling
+ 	lists in the function's main processing loop.
+ 	(gimplify_adjust_omp_clauses_1): Remove GOVD_MAP_HAS_ATTACHMENTS
+ 	handling, unused now.
+ 	* omp-low.cc (scan_sharing_clauses): Handle pointer-type indirect
+ 	struct references, and references to pointers to structs also.
+ 
+ 2022-09-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106938
+ 	* tree-cfg.cc (execute_fixup_cfg): Purge dead abnormal
+ 	edges for all last stmts in a block.  Do EH cleanup
+ 	only on the last stmt in a block.
+ 
+ 2022-09-14  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/106936
+ 	* value-query.cc (range_query::get_value_range): Remove assert.
+ 
+ 2022-09-14  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
+ 
+ 	* config/mips/mips.cc (mips_option_override): Drop unused variable.
+ 
+ 2022-09-14  Julian Brown  <julian@codesourcery.com>
+ 
+ 	* gimplify.cc (is_or_contains_p, omp_target_reorder_clauses): Delete
+ 	functions.
+ 	(omp_tsort_mark): Add enum.
+ 	(omp_mapping_group): Add struct.
+ 	(debug_mapping_group, omp_get_base_pointer, omp_get_attachment,
+ 	omp_group_last, omp_gather_mapping_groups, omp_group_base,
+ 	omp_index_mapping_groups, omp_containing_struct,
+ 	omp_tsort_mapping_groups_1, omp_tsort_mapping_groups,
+ 	omp_segregate_mapping_groups, omp_reorder_mapping_groups): New
+ 	functions.
+ 	(gimplify_scan_omp_clauses): Call above functions instead of
+ 	omp_target_reorder_clauses, unless we've seen an error.
+ 	* omp-low.cc (scan_sharing_clauses): Avoid strict test if we haven't
+ 	sorted mapping groups.
+ 
+ 2022-09-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/106878
+ 	* tree-cfg.cc (verify_gimple_assign_binary): Disallow pointer,
+ 	reference or OFFSET_TYPE BIT_IOR_EXPR, BIT_XOR_EXPR or, unless
+ 	the second argument is INTEGER_CST, BIT_AND_EXPR.
+ 	* match.pd ((type) X op CST -> (type) (X op ((type-x) CST)),
+ 	(type) (((type2) X) op Y) -> (X op (type) Y)): Punt for
+ 	POINTER_TYPE_P or OFFSET_TYPE.
+ 	* tree-ssa-reassoc.cc (optimize_range_tests_cmp_bitwise): For
+ 	pointers cast them to pointer sized integers first.
+ 
+ 2022-09-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106934
+ 	* tree-ssa.cc (non_rewritable_mem_ref_base): Avoid BIT_FIELD_REFs
+ 	of bitfields.
+ 	(maybe_rewrite_mem_ref_base): Likewise.
+ 
+ 2022-09-14  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/106905
+ 	* tree-vect-loop.cc (vectorizable_nonlinear_induction): Return
+ 	false when !vect_use_loop_mask_for_alignment_p (loop_vinfo) &&
+ 	LOOP_VINFO_PEELING_FOR_ALIGNMENT (loop_vinfo) < 0.
+ 
+ 2022-09-13  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106877
+ 	* reg-stack.cc (move_for_stack_reg): Check for any_malformed_asm
+ 	in gcc_assert.
+ 
+ 2022-09-13  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	Revert:
+ 	2022-09-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (TARGET_CONSTANT_OK_FOR_CPROP_P):
+ 	New macro definition.
+ 	(xtensa_constant_ok_for_cprop_p):
+ 	Implement the hook as mentioned above.
+ 
+ 2022-09-13  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/104482
+ 	* config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin): Fix
+ 	the equality check for argument number, and move this hunk ahead.
+ 
+ 2022-09-13  Kewen.Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR target/105485
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Add
+ 	the handling for unresolved overloaded builtin function.
+ 	(rs6000_expand_builtin): Likewise.
+ 
+ 2022-09-13  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.cc (class rs6000_cost_data): Add new members
+ 	m_nstores, m_reduc_factor, m_gather_load and member function
+ 	determine_suggested_unroll_factor.
+ 	(rs6000_cost_data::update_target_cost_per_stmt): Update for m_nstores,
+ 	m_reduc_factor and m_gather_load.
+ 	(rs6000_cost_data::determine_suggested_unroll_factor): New function.
+ 	(rs6000_cost_data::finish_cost): Use determine_suggested_unroll_factor.
+ 	* config/rs6000/rs6000.opt (rs6000-vect-unroll-limit): New parameter.
+ 	(rs6000-vect-unroll-issue): Likewise.
+ 	(rs6000-vect-unroll-reduc-threshold): Likewise.
+ 	* doc/invoke.texi (rs6000-vect-unroll-limit): Document new parameter.
+ 
+ 2022-09-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106909
+ 	* gimple-fold.cc (gimple_fold_call): Clear the ctrl-altering
+ 	flag of a unreachable call.
+ 
+ 2022-09-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106913
+ 	* tree-ssa-uninit.cc (warn_uninitialized_vars): Do not set
+ 	ft_reachable on EXIT_BLOCK.
+ 
+ 2022-09-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_classify_vector_mode): Use
+ 	TARGET_FLOAT instead of TARGET_SIMD.
+ 	(aarch64_vectorize_related_mode): Restrict ADVSIMD handling to
+ 	TARGET_SIMD.
+ 	(aarch64_hard_regno_mode_ok): Don't allow tuples of 2 64-bit vectors
+ 	in GPRs.
+ 	(aarch64_classify_address): Treat little-endian structure moves
+ 	like big-endian for TARGET_FLOAT && !TARGET_SIMD.
+ 	(aarch64_secondary_memory_needed): New function.
+ 	(aarch64_secondary_reload): Handle 128-bit Advanced SIMD vectors
+ 	in the same way as TF, TI and TD.
+ 	(aarch64_rtx_mult_cost): Restrict ADVSIMD handling to TARGET_SIMD.
+ 	(aarch64_rtx_costs): Likewise.
+ 	(aarch64_register_move_cost): Treat a pair of 64-bit vectors
+ 	separately from a single 128-bit vector.  Handle the cost implied
+ 	by aarch64_secondary_memory_needed.
+ 	(aarch64_simd_valid_immediate): Restrict ADVSIMD handling to
+ 	TARGET_SIMD.
+ 	(aarch64_expand_vec_perm_const_1): Likewise.
+ 	(TARGET_SECONDARY_MEMORY_NEEDED): New macro.
+ 	* config/aarch64/iterators.md (VTX): New iterator.
+ 	* config/aarch64/aarch64.md (arches): Add fp_q as a synonym of simd.
+ 	(arch_enabled): Adjust accordingly.
+ 	(@aarch64_reload_mov<TX:mode>): Extend to...
+ 	(@aarch64_reload_mov<VTX:mode>): ...this.
+ 	* config/aarch64/aarch64-simd.md (mov<mode>): Require TARGET_FLOAT
+ 	rather than TARGET_SIMD.
+ 	(movmisalign<mode>): Likewise.
+ 	(load_pair<DREG:mode><DREG2:mode>): Likewise.
+ 	(vec_store_pair<DREG:mode><DREG2:mode>): Likewise.
+ 	(load_pair<VQ:mode><VQ2:mode>): Likewise.
+ 	(vec_store_pair<VQ:mode><VQ2:mode>): Likewise.
+ 	(@aarch64_split_simd_mov<mode>): Likewise.
+ 	(aarch64_get_low<mode>): Likewise.
+ 	(aarch64_get_high<mode>): Likewise.
+ 	(aarch64_get_half<mode>): Likewise.  Canonicalize to a move for
+ 	lowpart extracts.
+ 	(*aarch64_simd_mov<VDMOV:mode>): Require TARGET_FLOAT rather than
+ 	TARGET_SIMD.  Use different w<-w and r<-w instructions for
+ 	!TARGET_SIMD.  Disable immediate moves for !TARGET_SIMD but
+ 	add an alternative specifically for w<-Z.
+ 	(*aarch64_simd_mov<VQMOV:mode>): Require TARGET_FLOAT rather than
+ 	TARGET_SIMD.  Likewise for the associated define_splits.  Disable
+ 	FPR moves and immediate moves for !TARGET_SIMD but add an alternative
+ 	specifically for w<-Z.
+ 	(aarch64_simd_mov_from_<mode>high): Require TARGET_FLOAT rather than
+ 	TARGET_SIMD.  Restrict the existing alternatives to TARGET_SIMD
+ 	but add a new r<-w one for !TARGET_SIMD.
+ 	(*aarch64_get_high<mode>): New pattern.
+ 	(load_pair_lanes<mode>): Require TARGET_FLOAT rather than TARGET_SIMD.
+ 	(store_pair_lanes<mode>): Likewise.
+ 	(*aarch64_combine_internal<mode>): Likewise.  Restrict existing
+ 	w<-w, w<-r and w<-m alternatives to TARGET_SIMD but add a new w<-r
+ 	alternative for !TARGET_SIMD.
+ 	(*aarch64_combine_internal_be<mode>): Likewise.
+ 	(aarch64_combinez<mode>): Require TARGET_FLOAT rather than TARGET_SIMD.
+ 	Remove bogus arch attribute.
+ 	(*aarch64_combinez_be<mode>): Likewise.
+ 	(@aarch64_vec_concat<mode>): Require TARGET_FLOAT rather than
+ 	TARGET_SIMD.
+ 	(aarch64_combine<mode>): Likewise.
+ 	(aarch64_rev_reglist<mode>): Likewise.
+ 	(mov<mode>): Likewise.
+ 	(*aarch64_be_mov<VSTRUCT_2D:mode>): Extend to TARGET_FLOAT &&
+ 	!TARGET_SIMD, regardless of endianness.  Extend associated
+ 	define_splits in the same way, both for this pattern and the
+ 	ones below.
+ 	(*aarch64_be_mov<VSTRUCT_2Qmode>): Likewise.  Restrict w<-w
+ 	alternative to TARGET_SIMD.
+ 	(*aarch64_be_movoi): Likewise.
+ 	(*aarch64_be_movci): Likewise.
+ 	(*aarch64_be_movxi): Likewise.
+ 	(*aarch64_be_mov<VSTRUCT_4QD:mode>): Extend to TARGET_FLOAT
+ 	&& !TARGET_SIMD, regardless of endianness.  Restrict w<-w alternative
+ 	to TARGET_SIMD for tuples of 128-bit vectors.
+ 	(*aarch64_be_mov<VSTRUCT_4QD:mode>): Likewise.
+ 	* config/aarch64/aarch64-ldpstp.md: Remove TARGET_SIMD condition
+ 	from DREG STP peephole.  Change TARGET_SIMD to TARGET_FLOAT in
+ 	the VQ and VP_2E LDP and STP peepholes.
+ 
+ 2022-09-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (movv8di): Remove TARGET_SIMD
+ 	condition.  Likewise for the related define_split.  Tweak formatting.
+ 
+ 2022-09-12  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (TARGET_CONSTANT_OK_FOR_CPROP_P):
+ 	New macro definition.
+ 	(xtensa_constant_ok_for_cprop_p):
+ 	Implement the hook as mentioned above.
+ 
+ 2022-09-12  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/stdatomic.h [defined __STDC_VERSION__ &&
+ 	__STDC_VERSION__ > 201710L] (ATOMIC_VAR_INIT): Do not define.
+ 
+ 2022-09-12  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/nvptx/mkoffload.cc (process): Replace a fatal_error by
+ 	a warning + not enabling offloading if -misa=sm_30 prevents
+ 	reverse offload.
+ 	(main): Use tool_name as progname for diagnostic.
+ 	* config/gcn/mkoffload.cc (main): Likewise.
+ 
+ 2022-09-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set_signbit): Avoid changing sign when
+ 	already in the correct sign.
+ 
+ 2022-09-12  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_function_value_regno_p):
+ 	Recognize all 4 return registers.
+ 	* config/xtensa/xtensa.h (GP_RETURN_REG_COUNT): New definition.
+ 	* config/xtensa/xtensa.md (untyped_call): New pattern.
+ 
+ 2022-09-12  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/extend.texi (Floating Types): Fix "_float128" typo.
+ 
+ 2022-09-10  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_constantsynth):
+ 	Add new pattern for the abovementioned case.
+ 
+ 2022-09-10  Akari Takahashi  <akaritakahashioss@gmail.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.cc (get_memref_parts): Regularize some code.
+ 
+ 2022-09-09  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md: Rewrite the split pattern that performs
+ 	the abovementioned process so that insns that overwrite clobbered
+ 	register no longer need to be contiguous.
+ 	(DSC): Remove as no longer needed.
+ 
+ 2022-09-09  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (machine_function): New boolean member as
+ 	a flag that controls whether to emit the insns for stack pointer
+ 	adjustment inside of the pro/epilogue.
+ 	(xtensa_emit_adjust_stack_ptr): New function to share the common
+ 	codes and to emit insns if not inhibited.
+ 	(xtensa_expand_epilogue): Change to use the function mentioned
+ 	above when using the CALL0 ABI.
+ 	(xtensa_expand_prologue): Ditto.
+ 	And also change to set the inhibit flag used by
+ 	xtensa_emit_adjust_stack_ptr() to true if the stack pointer is only
+ 	used for its own adjustment.
+ 
+ 2022-09-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-Wanalyzer-exposure-through-uninit-copy.
+ 
+ 2022-09-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (ANALYZER_OBJS): Add
+ 	analyzer/known-function-manager.o.
+ 
+ 2022-09-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/nvptx/mkoffload.cc (struct id_map): Add 'dim' member.
+ 	(record_id): Store func name without quotes, store dim separately.
+ 	(process): For GOMP_REQUIRES_REVERSE_OFFLOAD, check that -march is
+ 	at least sm_35, create '$offload_func_table' global array and init
+ 	with reverse-offload function addresses.
+ 	* config/nvptx/nvptx.cc (write_fn_proto_1, write_fn_proto): New
+ 	force_public attribute to force .visible.
+ 	(nvptx_declare_function_name): For "omp target
+ 	device_ancestor_nohost" attribut, force .visible/TREE_PUBLIC.
+ 
+ 2022-09-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.cc (process_asm): Create .offload_func_table,
+ 	similar to pre-existing .offload_var_table.
+ 
+ 2022-09-09  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/stddef.h [__STDC_VERSION__ > 201710L] (unreachable):
+ 	New macro.
+ 
+ 2022-09-09  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR middle-end/106833
+ 	* tree.cc (verify_opaque_type): New function.
+ 	(verify_type): Call verify_opaque_type for OPAQUE_TYPE.
+ 
+ 2022-09-09  Kwok Cheung Yeung  <kcy@codesourcery.com>
+ 
+ 	* config/gcn/gcn-builtins.def (FABSVF, LDEXPVF, LDEXPV, FREXPVF_EXP,
+ 	FREXPVF_MANT, FREXPV_EXP, FREXPV_MANT): Add new builtins.
+ 	* config/gcn/gcn-protos.h (gcn_dconst1over2pi): New prototype.
+ 	* config/gcn/gcn-valu.md (MATH_UNOP_1OR2REG, MATH_UNOP_1REG,
+ 	MATH_UNOP_TRIG): New iterators.
+ 	(math_unop): New attributes.
+ 	(<math_unop><mode>2, <math_unop><mode>2<exec>,
+ 	<math_unop><mode>2, <math_unop><mode>2<exec>,
+ 	*<math_unop><mode>2_insn, *<math_unop><mode>2<exec>_insn,
+ 	ldexp<mode>3, ldexp<mode>3<exec>,
+ 	frexp<mode>_exp2, frexp<mode>_mant2,
+ 	frexp<mode>_exp2<exec>, frexp<mode>_mant2<exec>): New instructions.
+ 	(<math_unop><mode>2, <math_unop><mode>2<exec>): New expanders.
+ 	* config/gcn/gcn.cc (init_ext_gcn_constants): Update definition of
+ 	dconst1over2pi.
+ 	(gcn_dconst1over2pi): New.
+ 	(gcn_builtin_type_index): Add entry for v64df type.
+ 	(v64df_type_node): New.
+ 	(gcn_init_builtin_types): Initialize v64df_type_node.
+ 	(gcn_expand_builtin_1): Expand new builtins to instructions.
+ 	(print_operand): Fix assembler output for 1/(2*PI) constant.
+ 	* config/gcn/gcn.md (unspec): Add new entries.
+ 
+ 2022-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106722
+ 	* tree-predcom.cc (ref_at_iteration): Do not associate the
+ 	constant part of the offset into the MEM_REF offset
+ 	operand, across a non-zero offset.
+ 
+ 2022-09-09  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (RISCV_USE_CUSTOMISED_MULTI_LIB):
+ 	Move forward for cover all all necessary functions for suppress
+ 	unused function warnings.
+ 	(riscv_multi_lib_check): Move forward, and tweak message to suppress
+ 	-Werror=format-diag warning.
+ 
+ 2022-09-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106881
+ 	* gimple-predicate-analysis.cc (simple_control_dep_chain):
+ 	Add only non-fallthru edges and avoid the same set of edges
+ 	as compute_control_dep_chain_pdom does.
+ 
+ 2022-09-09  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
+ 
+ 	* doc/tm.texi.in (TARGET_OVERRIDES_FORMAT_ATTRIBUTES): Document requirement
+ 	of TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT being defined as well.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2022-09-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* optc-save-gen.awk: Always compare array option values with memcmp.
+ 
+ 2022-09-08  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	PR c++/106838
+ 	* doc/extend.texi (Type Traits): Fix requirements. Document
+ 	__is_aggregate and __is_final.
+ 
+ 2022-09-08  Tim Lange  <mail@tim-lange.me>
+ 
+ 	PR analyzer/106625
+ 	* doc/invoke.texi:
+ 	State that the checker also reasons about symbolic values.
+ 
+ 2022-09-08  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/106886
+ 	* tree-vect-slp.cc (vect_optimize_slp_pass::get_result_with_layout):
+ 	Fix copying of scalar stmts.
+ 
+ 2022-09-08  Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	* config/nios2/linux.h (MUSL_DYNAMIC_LINKER): Add #undef before #define.
+ 
+ 2022-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106870
+ 	* gimple-harden-conditionals.cc (insert_check_and_trap):
+ 	Set the control-altering flag on the built IFN_TRAP.
+ 	* gimple.cc (gimple_build_builtin_unreachable): Likewise.
+ 	* tree-cfg.cc (handle_abnormal_edges): Set the control-altering
+ 	flag on the .ABNORMAL_DISPATCHER call.
+ 	* tree-cfgcleanup.cc (cleanup_call_ctrl_altering_flag): Avoid
+ 	resetting the control altering flag for ECF_NORETURN calls.
+ 	(cleanup_control_flow_bb): Set the control altering flag on
+ 	discovered noreturn calls.
+ 	* symtab-thunks.cc (expand_thunk): Set the control altering
+ 	flag for the noreturn tailcall case.
+ 	* tree-eh.cc (lower_resx): Likewisw for trap and unwind_resume
+ 	calls.
+ 
+ 2022-09-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.cc (expand_omp_ordered_sink): Add CONT_BB argument.
+ 	Add doacross(sink:omp_cur_iteration-1) support.
+ 	(expand_omp_ordered_source_sink): Clear counts[fd->ordered + 1].
+ 	Adjust expand_omp_ordered_sink caller.
+ 	(expand_omp_for_ordered_loops): If counts[fd->ordered + 1] is
+ 	non-NULL, set that variable to true at the start of outermost
+ 	non-collapsed loop and set it to false at the end of innermost
+ 	ordered loop.
+ 	(expand_omp_for_generic): If fd->ordered, allocate
+ 	1 + (fd->ordered - fd->collapse) further elements in counts array.
+ 	Copy to counts + 2 + fd->ordered the counts of fd->collapse ..
+ 	fd->ordered - 1 loop if any.
+ 
+ 2022-09-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106881
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain_pdom):
+ 	Add only non-fallthru edges and avoid the same set of edges
+ 	as the caller does.
+ 
+ 2022-09-08  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc
+ 	(fold_using_range::range_of_builtin_int_call): Use fpclassify like API.
+ 	* range-op-float.cc (finite_operand_p): Same.
+ 	(finite_operands_p): Same.
+ 	(foperator_lt::fold_range): Same.
+ 	(foperator_le::fold_range): Same.
+ 	(foperator_gt::fold_range): Same.
+ 	(foperator_ge::fold_range): Same.
+ 	(foperator_unordered::fold_range): Same.
+ 	(foperator_unordered::op1_range): Same.
+ 	(foperator_ordered::fold_range): Same.
+ 	* value-range.cc (frange::set_nan): Same.
+ 	(frange::set_signbit): Same.
+ 	(frange::union_): Same.
+ 	(frange::intersect): Same.
+ 	(frange::operator==): Same.
+ 	(frange::singleton_p): Same.
+ 	(frange::verify_range): Same.
+ 	(range_tests_nan): Same.
+ 	(range_tests_floats): Same.
+ 	* value-range.h(frange::known_finite): New.
+ 	(frange::maybe_inf): New.
+ 	(frange::known_inf): New.
+ 	(frange::maybe_nan): New.
+ 	(frange::known_nan): New.
+ 	(frange::known_signbit): New.
+ 
+ 2022-09-08  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/darwin-d.cc: Include tm.h.
+ 	* config/dragonfly-d.cc: Likewise.
+ 	* config/freebsd-d.cc: Remove memmodel.h.
+ 	* config/glibc-d.cc: Likewise.
+ 	* config/netbsd-d.cc: Include tm.h.
+ 	* config/openbsd-d.cc: Likewise.
+ 	* config/sol2-d.cc: Likewise.
+ 
+ 2022-09-08  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vqshluq_n_s<mode>): Use
+ 	MVE_pred/MVE_constraint instead of mve_imm_7/Ra.
+ 	(mve_vqshluq_m_n_s<mode>): Likewise.
+ 	(mve_vqrshrnbq_n_<supf><mode>): Use MVE_pred3/MVE_constraint3
+ 	instead of mve_imm_8/Rb.
+ 	(mve_vqrshrunbq_n_s<mode>): Likewise.
+ 	(mve_vqrshrntq_n_<supf><mode>): Likewise.
+ 	(mve_vqrshruntq_n_s<mode>): Likewise.
+ 	(mve_vrshrnbq_n_<supf><mode>): Likewise.
+ 	(mve_vrshrntq_n_<supf><mode>): Likewise.
+ 	(mve_vqrshrnbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqrshrntq_m_n_<supf><mode>): Likewise.
+ 	(mve_vrshrnbq_m_n_<supf><mode>): Likewise.
+ 	(mve_vrshrntq_m_n_<supf><mode>): Likewise.
+ 	(mve_vqrshrunbq_m_n_s<mode>): Likewise.
+ 	(mve_vsriq_n_<supf><mode): Use MVE_pred2/MVE_constraint2 instead
+ 	of mve_imm_selective_upto_8/Rg.
+ 	(mve_vsriq_m_n_<supf><mode>): Likewise.
+ 
+ 2022-09-08  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (splitter for set to and_mask constants):
+ 	Use int_reg_operand (instead of int_reg_operand_not_pseudo).
+ 	(splitter for multi-insn constant loads): Ditto.
+ 
+ 2022-09-08  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rs6000/rtems.h (CPP_OS_DEFAULT_SPEC): Define __PPC_VRSAVE__ if
+ 	-mvrsave is present.
+ 	* config/rs6000/t-rtems: Add -mvrsave multilib variants for
+ 	-mcpu=e6500.
+ 
+ 2022-09-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Restore detection of  HAVE_XCOFF_DWARF_EXTRAS.
+ 	* config/rs6000/rs6000.cc (HAVE_XCOFF_DWARF_EXTRAS): Reset it.
+ 	* configure: Regenerate.
+ 	* config.in: Regenerate.
+ 
+ 2022-09-07  Surya Kumari Jangala  <jskumari@linux.ibm.com>
+ 
+ 	PR rtl-optimization/105586
+ 	* sched-rgn.cc (save_state_for_fallthru_edge): New function.
+ 	(schedule_region): Use it for all blocks.
+ 
+ 2022-09-07  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* ginclude/stdalign.h [defined __STDC_VERSION__ &&
+ 	__STDC_VERSION__ > 201710L]: Disable all content.
+ 	* ginclude/stdbool.h [defined __STDC_VERSION__ && __STDC_VERSION__
+ 	> 201710L] (bool, true, false): Do not define.
+ 
+ 2022-09-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/106855
+ 	* collect2.cc (scan_prog_file): Restore if XCOFF_DEBUGGING_INFO.
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal):
+ 	Restore usage of XCOFF_DEBUGGING_INFO.
+ 	* config/rs6000/xcoff.h (XCOFF_DEBUGGING_INFO): Restore.
+ 	* dwarf2asm.cc (XCOFF_DEBUGGING_INFO): Restore support for
+ 	XCOFF_DEBUGGING_INFO.
+ 	(dw2_asm_output_nstring): Likewise.
+ 	(USE_LINKONCE_INDIRECT): Likewise.
+ 	* dwarf2out.cc (XCOFF_DEBUGGING_INFO): Likewise.
+ 	(HAVE_XCOFF_DWARF_EXTRAS): Likewise.
+ 	(output_fde): Likewise.
+ 	(output_call_frame_info): Likewise.
+ 	(have_macinfo): Likewise.
+ 	(add_AT_loc_list): Likewise.
+ 	(add_AT_view_list): Likewise.
+ 	(output_compilation_unit_header): Likewise.
+ 	(output_pubnames): Likewise.
+ 	(output_aranges): Likewise.
+ 	(output_line_info): Likewise.
+ 	(output_macinfo): Likewise.
+ 	(dwarf2out_finish): Likewise.
+ 	(dwarf2out_early_finish): Likewise.
+ 
+ 2022-09-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106866
+ 	* tree-ssa-dce.cc (eliminate_unnecessary_stmts): When
+ 	we changed cfun->calls_setjmp make sure to purge all
+ 	abnormal call edges.
+ 
+ 2022-09-07  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
+ 
+ 	* config/csky/csky.cc (csky_emit_compare_float): Fix the expanding of
+ 	float LE comparing with zero for fpuv3.
+ 	* config/csky/csky.h (TARGET_SUPPORT_FPV2): New, true if any fpuv2
+ 	features are enabled.
+ 
+ 2022-09-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106860
+ 	* tree-ssa-loop-split.cc (split_loop): Find the exit to
+ 	latch edge from the loop exit edge instead of from the
+ 	latch.  Verify we're going to find it.
+ 
+ 2022-09-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (dfs_mark_dominating_region):
+ 	Adjust to take the region exit source as argument.
+ 	(uninit_analysis::init_from_phi_def): Adjust.
+ 	(uninit_analysis::init_use_preds): Mark the dominating region
+ 	before computing control dependences.
+ 
+ 2022-09-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (*mov<SHORT:mode>_aarch64): Extend
+ 	w<-w, r<-w and w<-r alternatives to !simd, using 32-bit moves
+ 	in that case.  Extend w<-r to w<-Z.
+ 	(*mov<HFBF:mode>_aarch64): Likewise, but with Y instead of Z.
+ 	(*movti_aarch64): Use an FMOV from XZR for w<-Z if MOVI is not
+ 	available.
+ 	(define_split): Do not apply the floating-point immediate-to-register
+ 	split to zeros, even if MOVI is not available.
+ 
+ 2022-09-07  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_conditional_register_usage):
+ 	Disallow use of FPRs in register asms for !TARGET_FLOAT.
+ 
+ 2022-09-07  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/106828
+ 	* config/loongarch/loongarch.cc (loongarch_asan_shadow_offset): New.
+ 	(TARGET_ASAN_SHADOW_OFFSET): New.
+ 
+ 2022-09-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wno-unicode): Document.
+ 
+ 2022-09-07  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (const_scalar_int splitter): Remove.
+ 
+ 2022-09-07  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md: (constant splitters): Use "(pc)" as the
+ 	replacements.
+ 
+ 2022-09-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/103144
+ 	* tree-vect-loop.cc (vect_is_nonlinear_iv_evolution): New function.
+ 	(vect_analyze_scalar_cycles_1): Detect nonlinear iv by upper function.
+ 	(vect_create_nonlinear_iv_init): New function.
+ 	(vect_peel_nonlinear_iv_init): Ditto.
+ 	(vect_create_nonlinear_iv_step): Ditto
+ 	(vect_create_nonlinear_iv_vec_step): Ditto
+ 	(vect_update_nonlinear_iv): Ditto
+ 	(vectorizable_nonlinear_induction): Ditto.
+ 	(vectorizable_induction): Call
+ 	vectorizable_nonlinear_induction when induction_type is not
+ 	vect_step_op_add.
+ 	* tree-vect-loop-manip.cc (vect_update_ivs_after_vectorizer):
+ 	Update nonlinear iv for epilogue loop.
+ 	* tree-vectorizer.h (enum vect_induction_op_type): New enum.
+ 	(STMT_VINFO_LOOP_PHI_EVOLUTION_TYPE): New Macro.
+ 
+ 2022-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106754
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain_pdom):
+ 	New function, split out from compute_control_dep_chain.  Handle
+ 	loop-exit like conditions here by pushing to the control vector.
+ 	(compute_control_dep_chain): Adjust and streamline dumping.
+ 	In the wrapper perform a post-dominator walk as well.
+ 	(uninit_analysis::init_use_preds): Remove premature early exit.
+ 
+ 2022-09-06  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	* config/xtensa/linux.h (LINK_SPEC): Add static-pie.
+ 
+ 2022-09-06  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (build_le): Handle NANs and going past infinity.
+ 	(build_lt): Same.
+ 	(build_ge): Same.
+ 	(build_gt): Same.
+ 	(foperator_lt::op1_range): Avoid adjustments to range if build_*
+ 	returned false.
+ 	(foperator_lt::op2_range): Same.
+ 	(foperator_le::op1_range): Same.
+ 	(foperator_le::op2_range): Same.
+ 	(foperator_gt::op1_range): Same.
+ 	(foperator_gt::op2_range): Same.
+ 
+ 2022-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain):
+ 	Add output flag to indicate whether we possibly have dropped
+ 	any chains.  Return whether the info is complete from the
+ 	wrapping overload.
+ 	(uninit_analysis::init_use_preds): Adjust accordingly, with
+ 	a workaround for PR106754.
+ 	(uninit_analysis::init_from_phi_def): Properly guard the
+ 	case where we complete an empty chain.
+ 
+ 2022-09-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
+ 
+ 	* config/msp430/msp430.cc (msp430_single_op_cost): Document unused argument.
+ 
+ 2022-09-06  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* tree-ssa-forwprop.cc (simplify_permutation): Set res_type to a vector
+ 	type with same element type as arg0, and length as op2.
+ 
+ 2022-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106844
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain):
+ 	Return whether we found a chain.
+ 
+ 2022-09-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106841
+ 	* tree-vect-slp.cc (vect_detect_hybrid_slp): Also process
+ 	scatter/gather offset.
+ 
+ 2022-09-06  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
+ 
+ 	* config/bpf/bpf.h (REGNO_REG_CLASS): Reference arguments as (void).
+ 
+ 2022-09-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple.h (enum gf_mask): Add GF_OMP_ORDERED_STANDALONE enumerator.
+ 	(gimple_omp_subcode):  Use GIMPLE_OMP_ORDERED instead of
+ 	GIMPLE_OMP_TEAMS as upper bound.
+ 	(gimple_omp_ordered_standalone_p, gimple_omp_ordered_standalone): New
+ 	inline functions.
+ 	* gimplify.cc (find_standalone_omp_ordered): Look for OMP_ORDERED with
+ 	NULL OMP_ORDERED_BODY rather than with OMP_DOACROSS clause.
+ 	(gimplify_expr): Call gimple_omp_ordered_standalone for OMP_ORDERED
+ 	with NULL OMP_ORDERED_BODY.
+ 	* omp-low.cc (check_omp_nesting_restrictions): Use
+ 	gimple_omp_ordered_standalone_p test instead of
+ 	omp_find_clause (..., OMP_CLAUSE_DOACROSS).
+ 	(lower_omp_ordered): Likewise.
+ 	* omp-expand.cc (expand_omp, build_omp_regions_1,
+ 	omp_make_gimple_edges): Likewise.
+ 
+ 2022-09-06  Xianmiao Qu  <cooper.qu@linux.alibaba.com>
+ 
+ 	* config/csky/csky.md (cskyv2_addcc): Fix missing operand.
+ 	(cskyv2_addcc_invert): Likewise.
+ 
+ 2022-09-06  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.cc (bpf_expand_prologue): Remove unused automatic
+ 	`insn'.
+ 	(bpf_expand_epilogue): Likewise.
+ 
+ 2022-09-06  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-builtin.def (IX86_BUILTIN_CVTPS2PH512):
+ 	Map to CODE_FOR_avx512f_vcvtps2ph512_mask_sae.
+ 	* config/i386/sse.md (<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Extend to ..
+ 	(<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>): .. this.
+ 	(avx512f_vcvtps2ph512_mask_sae): New expander
+ 
+ 2022-09-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc
+ 	(fold_using_range::range_of_builtin_int_call): Ignore sign bit
+ 	when there's the possibility of a NAN.
+ 
+ 2022-09-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc
+ 	(fold_using_range::range_of_builtin_int_call): Fold a set signbit
+ 	in __builtin_signbit to nonzero.
+ 
+ 2022-09-05  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR target/106453
+ 	* config/i386/i386.md (sse4_2_crc32di): Model that only low 32
+ 	bits of operand 0 are consumed, and the result is zero-extended
+ 	to 64 bits.
+ 
+ 2022-09-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR middle-end/106831
+ 	* value-range.h (frange::supports_p): Disable decimal floats.
+ 	* range-op-float.cc (frange_drop_inf): Remove DECIMAL_FLOAT_MODE_P
+ 	check.
+ 	(frange_drop_ninf): Same.
+ 
+ 2022-09-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR middle-end/106824
+ 	* value-range.cc (frange::set_nan): Set undefined when updating a
+ 	NAN to a non-NAN.
+ 
+ 2022-09-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_option_override): Fix wrong
+ 	condition for MASK_DIV and simplify incompatible checking.
+ 	* config/riscv/riscv.md (muldi3): Adding parentheses.
+ 
+ 2022-09-05  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_validate_march): Check if invalid arch
+ 	string is a valid -mcpu string and emit hint.
+ 
+ 2022-09-05  LiaoShihua  <shihua@iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc: Add Zmmul.
+ 	* config/riscv/riscv-opts.h (MASK_ZMMUL): New.
+ 	(TARGET_ZMMUL): Ditto.
+ 	* config/riscv/riscv.cc (riscv_option_override):Ditto.
+ 	* config/riscv/riscv.md: Add Zmmul
+ 	* config/riscv/riscv.opt: Ditto.
+ 
+ 2022-09-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-cfg.h (get_cases_for_edge): Declare.
+ 	* tree-cfg.cc (get_cases_for_edge): Export.
+ 	* tree-ssa-uninit.cc (execute_late_warn_uninitialized):
+ 	Start and end recording case labels.
+ 	* gimple-predicate-analysis.cc (MAX_SWITCH_CASES): Remove.
+ 	(predicate::init_from_control_deps): Use get_cases_for_edge.
+ 
+ 2022-09-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (MAX_POSTDOM_CHECK): Remove.
+ 	(compute_control_dep_chain): Move uninit-control-dep-attempts
+ 	checking where it also counts the post-dominator check
+ 	invocations.
+ 
+ 2022-09-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.h (predicate::debug): New.
+ 	(predicate::dump): Add FILE * argument, add base overload.
+ 	* gimple-predicate-analysis.cc (debug): New.
+ 	(dump_pred_info): Add FILE * argument.
+ 	(dump_pred_chain): Likewise.
+ 	(predicate::dump): Split out preamble into overload.  Add
+ 	FILE * argument.
+ 	(predicate::debug): New.
+ 	(predicate::simplify): Adjust.
+ 	(predicate::normalize): Likewise.
+ 	(predicate::init_from_control_deps): Likewise.
+ 
+ 2022-09-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_init_simd_builtins): Remove prototype.
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_simd_builtins_initialized_p): Delete.
+ 	(aarch64_init_simd_builtins): Make static.  Remove protection
+ 	against multiple calls.
+ 	* config/aarch64/aarch64-c.cc (aarch64_pragma_target_parse): Remove
+ 	lazy SIMD builtin initialization.
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_option_valid_attribute_p): Likewise.
+ 
+ 2022-09-05  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/genopts/loongarch.opt.in: Add
+ 	-mdirect-extern-access option.
+ 	* config/loongarch/loongarch.opt: Regenerate.
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_symbol_binds_local_p): Return true if
+ 	TARGET_DIRECT_EXTERN_ACCESS.
+ 	(loongarch_option_override_internal): Complain if
+ 	-mdirect-extern-access is used with -fPIC or -fpic.
+ 	* doc/invoke.texi: Document -mdirect-extern-access for
+ 	LoongArch.
+ 
+ 2022-09-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/tm.texi.in: Rename DEBUGGER_REGISTER_NUMBER to
+ 	DEBUGGER_REGNO.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2022-09-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_dbx_regno):
+ 	Rename DBX_REGISTER_NUMBER to DEBUGGER_REGNO.
+ 	(aarch64_debugger_regno): Likewise.
+ 	* config/aarch64/aarch64.cc (aarch64_dbx_regno): Likewise.
+ 	(aarch64_debugger_regno): Likewise.
+ 	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(DWARF_FRAME_REGNUM): Likewise.
+ 	* config/alpha/alpha.h (DWARF_FRAME_REGNUM): Likewise.
+ 	* config/arc/arc.cc (arc_init_reg_tables): Likewise.
+ 	* config/arc/arc.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/arm/arm-protos.h (arm_dbx_regno): Likewise.
+ 	(arm_debugger_regno): Likewise.
+ 	* config/arm/arm.cc (arm_dbx_regno): Likewise.
+ 	(arm_debugger_regno): Likewise.
+ 	* config/arm/arm.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/bfin/bfin.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/c6x/c6x.cc: Likewise.
+ 	* config/c6x/c6x.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/cris/cris.h (enum reg_class): Likewise.
+ 	(DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/csky/csky.cc (enum reg_class): Likewise.
+ 	* config/csky/csky.h (DWARF_FRAME_REGNUM): Likewise.
+ 	(DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/frv/frv.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/gcn/gcn-hsa.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/gcn/gcn.cc (print_operand): Likewise.
+ 	* config/i386/bsd.h (ASM_QUAD): Likewise.
+ 	* config/i386/cygming.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(DWARF_FRAME_REGNUM): Likewise.
+ 	* config/i386/darwin.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/djgpp.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/dragonfly.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/freebsd.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/gas.h: Likewise.
+ 	* config/i386/gnu-user.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/i386.cc (enum reg_class): Likewise.
+ 	* config/i386/i386.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/i386elf.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/iamcu.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/lynx.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/netbsd-elf.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/nto.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/openbsdelf.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/vxworks.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/i386/x86-64.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/ia64/ia64-protos.h (ia64_dbx_regno): Likewise.
+ 	(ia64_debugger_regno): Likewise.
+ 	* config/ia64/ia64.cc (ia64_output_function_prologue): Likewise.
+ 	(ia64_dbx_regno): Likewise.
+ 	(ia64_debugger_regno): Likewise.
+ 	(process_cfa_adjust_cfa): Likewise.
+ 	(process_cfa_register): Likewise.
+ 	(ia64_asm_unwind_emit): Likewise.
+ 	* config/ia64/ia64.h: Likewise.
+ 	* config/ia64/sysv4.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/lm32/lm32.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/m32c/m32c.cc (m32c_eh_return_stackadj_rtx): Likewise.
+ 	* config/m32c/m32c.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/m68k/linux.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/m68k/m68k.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(__transfer_from_trampoline): Likewise.
+ 	* config/m68k/m68kelf.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/m68k/netbsd-elf.h (M68K_STATIC_CHAIN_REG_NAME): Likewise.
+ 	(DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/microblaze/microblaze.cc (microblaze_option_override): Likewise.
+ 	* config/microblaze/microblaze.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(GP_DBX_FIRST): Likewise.
+ 	(GP_DEBUGGER_FIRST): Likewise.
+ 	* config/mips/vxworks.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/mmix/mmix-protos.h (mmix_dbx_regno): Likewise.
+ 	(mmix_debugger_regno): Likewise.
+ 	* config/mmix/mmix.cc (mmix_dbx_regno): Likewise.
+ 	(mmix_debugger_regno): Likewise.
+ 	* config/mmix/mmix.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/nds32/nds32-protos.h (nds32_dbx_regno): Likewise.
+ 	(nds32_debugger_regno): Likewise.
+ 	* config/nds32/nds32.cc (nds32_dbx_regno): Likewise.
+ 	(nds32_debugger_regno): Likewise.
+ 	(nds32_use_blocks_for_constant_p): Likewise.
+ 	* config/nds32/nds32.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/nvptx/nvptx.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/or1k/or1k.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/pa/pa32-regs.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/pa/pa64-regs.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/rs6000/rs6000-protos.h (rs6000_dbx_regno): Likewise.
+ 	(rs6000_debugger_regno): Likewise.
+ 	* config/rs6000/rs6000.cc (rs6000_dbx_regno): Likewise.
+ 	(rs6000_debugger_regno): Likewise.
+ 	* config/rs6000/rs6000.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(DWARF2_FRAME_REG_OUT): Likewise.
+ 	* config/s390/s390.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/sh/elf.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/sh/linux.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/sh/sh.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(SH_DBX_REGISTER_NUMBER): Likewise.
+ 	(SH_DEBUGGER_REGNO): Likewise.
+ 	* config/visium/visium.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/xtensa/elf.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/xtensa/linux.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/xtensa/uclinux.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* config/xtensa/xtensa-protos.h (xtensa_dbx_regno): Likewise.
+ 	(xtensa_debugger_regno): Likewise.
+ 	* config/xtensa/xtensa.cc (xtensa_dbx_regno): Likewise.
+ 	(xtensa_debugger_regno): Likewise.
+ 	* config/xtensa/xtensa.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	* defaults.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(DEBUGGER_REGNO): Likewise.
+ 	(DWARF_FRAME_REGNUM): Likewise.
+ 	* doc/tm.texi: Likewise.
+ 	* doc/tm.texi.in: Likewise.
+ 	* dwarf2out.cc (dbx_reg_number): Likewise.
+ 	(debugger_reg_number): Likewise.
+ 	(reg_loc_descriptor): Likewise.
+ 	(multiple_reg_loc_descriptor): Likewise.
+ 	(mem_loc_descriptor): Likewise.
+ 	* except.cc: Likewise.
+ 
+ 2022-09-05  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/106742
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
+ 	Handle V8BF mode.
+ 	(expand_vec_perm_broadcast_1): Ditto.
+ 	* config/i386/sse.md (avx512fmaskhalfmode): Add BF vector mode.
+ 	(vec_set<mode>_0): Add @ to it.
+ 	(@vec_set<mode>_0): Ditto.
+ 	(vec_interleave_high<mode><mask_name>): Ditto.
+ 	(@vec_interleave_high<mode><mask_name>): Ditto.
+ 	(vec_interleave_low<mode><mask_name>): Ditto.
+ 	(@vec_interleave_low<mode><mask_name>): Ditto.
+ 	* config/i386/subst.md (SUBST_V): Add BF vector mode.
+ 
+ 2022-09-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (early_nan_resolve): Remove.
+ 	(frange::intersect): Handle NANs.
+ 
+ 2022-09-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::union_): Do not drop properties when
+ 	unioning a NAN with something else.
+ 	(range_tests_signed_zeros): Add tests.
+ 
+ 2022-09-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* real.cc (encode_ieee_single): Use real_isdenormal.
+ 	(encode_ieee_double): Same.
+ 	(encode_ieee_extended): Same.
+ 	(encode_ieee_quad): Same.
+ 	(encode_ieee_half): Same.
+ 	(encode_arm_bfloat_half): Same.
+ 	* real.h (real_isdenormal): New.
+ 
+ 2022-09-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::singleton_p): Move NAN check to the top.
+ 
+ 2022-09-03  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
+ 
+ 	* config/nvptx/nvptx.h (ASM_OUTPUT_DEF): Reference macro arguments.
+ 
+ 2022-09-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (enum omp_clause_code): Add OMP_CLAUSE_DOACROSS.
+ 	(enum omp_clause_depend_kind): Remove OMP_CLAUSE_DEPEND_SOURCE
+ 	and OMP_CLAUSE_DEPEND_SINK, add OMP_CLAUSE_DEPEND_INVALID.
+ 	(enum omp_clause_doacross_kind): New type.
+ 	(struct tree_omp_clause): Add subcode.doacross_kind member.
+ 	* tree.h (OMP_CLAUSE_DEPEND_SINK_NEGATIVE): Remove.
+ 	(OMP_CLAUSE_DOACROSS_KIND): Define.
+ 	(OMP_CLAUSE_DOACROSS_SINK_NEGATIVE): Define.
+ 	(OMP_CLAUSE_DOACROSS_DEPEND): Define.
+ 	(OMP_CLAUSE_ORDERED_DOACROSS): Define.
+ 	* tree.cc (omp_clause_num_ops, omp_clause_code_name): Add
+ 	OMP_CLAUSE_DOACROSS entries.
+ 	* tree-nested.cc (convert_nonlocal_omp_clauses,
+ 	convert_local_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
+ 	* tree-pretty-print.cc (dump_omp_clause): Don't handle
+ 	OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.  Handle
+ 	OMP_CLAUSE_DOACROSS.
+ 	* gimplify.cc (gimplify_omp_depend): Don't handle
+ 	OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.
+ 	(gimplify_scan_omp_clauses): Likewise.  Handle OMP_CLAUSE_DOACROSS.
+ 	(gimplify_adjust_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
+ 	(find_standalone_omp_ordered): New function.
+ 	(gimplify_omp_for): When OMP_CLAUSE_ORDERED is present, search
+ 	body for OMP_ORDERED with OMP_CLAUSE_DOACROSS and if found,
+ 	set OMP_CLAUSE_ORDERED_DOACROSS.
+ 	(gimplify_omp_ordered): Don't handle OMP_CLAUSE_DEPEND_SINK or
+ 	OMP_CLAUSE_DEPEND_SOURCE, instead check OMP_CLAUSE_DOACROSS, adjust
+ 	diagnostics that presence or absence of ordered clause parameter
+ 	is irrelevant.  Handle doacross(sink:omp_cur_iteration-1).  Use
+ 	actual user name of the clause - doacross or depend - in diagnostics.
+ 	* omp-general.cc (omp_extract_for_data): Don't set fd->ordered
+ 	if !OMP_CLAUSE_ORDERED_DOACROSS (t).  If
+ 	OMP_CLAUSE_ORDERED_DOACROSS (t) but !OMP_CLAUSE_ORDERED_EXPR (t),
+ 	set fd->ordered to -1 and set it after the loop in that case to
+ 	fd->collapse.
+ 	* omp-low.cc (check_omp_nesting_restrictions): Don't handle
+ 	OMP_CLAUSE_DEPEND_SOURCE nor OMP_CLAUSE_DEPEND_SINK, instead check
+ 	OMP_CLAUSE_DOACROSS.  Use actual user name of the clause - doacross
+ 	or depend - in diagnostics.  Diagnose mixing of stand-alone and
+ 	block associated ordered constructs binding to the same loop.
+ 	(lower_omp_ordered_clauses): Don't handle OMP_CLAUSE_DEPEND_SINK,
+ 	instead handle OMP_CLAUSE_DOACROSS.
+ 	(lower_omp_ordered): Look for OMP_CLAUSE_DOACROSS instead of
+ 	OMP_CLAUSE_DEPEND.
+ 	(lower_depend_clauses): Don't handle OMP_CLAUSE_DEPEND_SOURCE and
+ 	OMP_CLAUSE_DEPEND_SINK.
+ 	* omp-expand.cc (expand_omp_ordered_sink): Emit a sorry for
+ 	doacross(sink:omp_cur_iteration-1).
+ 	(expand_omp_ordered_source_sink): Use
+ 	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
+ 	OMP_CLAUSE_DEPEND_SINK_NEGATIVE.  Use actual user name of the clause
+ 	- doacross or depend - in diagnostics.
+ 	(expand_omp): Look for OMP_CLAUSE_DOACROSS clause instead of
+ 	OMP_CLAUSE_DEPEND.
+ 	(build_omp_regions_1): Likewise.
+ 	(omp_make_gimple_edges): Likewise.
+ 	* lto-streamer-out.cc (hash_tree): Handle OMP_CLAUSE_DOACROSS.
+ 	* tree-streamer-in.cc (unpack_ts_omp_clause_value_fields): Likewise.
+ 	* tree-streamer-out.cc (pack_ts_omp_clause_value_fields): Likewise.
+ 
+ 2022-09-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR c/90885
+ 	* doc/invoke.texi (Warning Options): Add -Wxor-used-as-pow.
+ 
+ 2022-09-02  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	PR d/105659
+ 	* config.gcc: Set tm_d_file to ${cpu_type}/${cpu_type}-d.h.
+ 	* config/aarch64/aarch64-d.cc: Include tm_d.h.
+ 	* config/aarch64/aarch64-protos.h (aarch64_d_target_versions): Move to
+ 	config/aarch64/aarch64-d.h.
+ 	(aarch64_d_register_target_info): Likewise.
+ 	* config/aarch64/aarch64.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* config/arm/arm-d.cc: Include tm_d.h and arm-protos.h instead of
+ 	tm_p.h.
+ 	* config/arm/arm-protos.h (arm_d_target_versions): Move to
+ 	config/arm/arm-d.h.
+ 	(arm_d_register_target_info): Likewise.
+ 	* config/arm/arm.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* config/default-d.cc: Remove memmodel.h include.
+ 	* config/freebsd-d.cc: Include tm_d.h instead of tm_p.h.
+ 	* config/glibc-d.cc: Likewise.
+ 	* config/i386/i386-d.cc: Include tm_d.h.
+ 	* config/i386/i386-protos.h (ix86_d_target_versions): Move to
+ 	config/i386/i386-d.h.
+ 	(ix86_d_register_target_info): Likewise.
+ 	(ix86_d_has_stdcall_convention): Likewise.
+ 	* config/i386/i386.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	(TARGET_D_HAS_STDCALL_CONVENTION): Likewise.
+ 	* config/i386/winnt-d.cc: Include tm_d.h instead of tm_p.h.
+ 	* config/mips/mips-d.cc: Include tm_d.h.
+ 	* config/mips/mips-protos.h (mips_d_target_versions): Move to
+ 	config/mips/mips-d.h.
+ 	(mips_d_register_target_info): Likewise.
+ 	* config/mips/mips.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* config/netbsd-d.cc: Include tm_d.h instead of tm.h and memmodel.h.
+ 	* config/openbsd-d.cc: Likewise.
+ 	* config/pa/pa-d.cc: Include tm_d.h.
+ 	* config/pa/pa-protos.h (pa_d_target_versions): Move to
+ 	config/pa/pa-d.h.
+ 	(pa_d_register_target_info): Likewise.
+ 	* config/pa/pa.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* config/riscv/riscv-d.cc: Include tm_d.h.
+ 	* config/riscv/riscv-protos.h (riscv_d_target_versions): Move to
+ 	config/riscv/riscv-d.h.
+ 	(riscv_d_register_target_info): Likewise.
+ 	* config/riscv/riscv.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* config/rs6000/rs6000-d.cc: Include tm_d.h.
+ 	* config/rs6000/rs6000-protos.h (rs6000_d_target_versions): Move to
+ 	config/rs6000/rs6000-d.h.
+ 	(rs6000_d_register_target_info): Likewise.
+ 	* config/rs6000/rs6000.h (TARGET_D_CPU_VERSIONS) Likewise.:
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO) Likewise.:
+ 	* config/s390/s390-d.cc: Include tm_d.h.
+ 	* config/s390/s390-protos.h (s390_d_target_versions): Move to
+ 	config/s390/s390-d.h.
+ 	(s390_d_register_target_info): Likewise.
+ 	* config/s390/s390.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* config/sol2-d.cc: Include tm_d.h instead of tm.h and memmodel.h.
+ 	* config/sparc/sparc-d.cc: Include tm_d.h.
+ 	* config/sparc/sparc-protos.h (sparc_d_target_versions): Move to
+ 	config/sparc/sparc-d.h.
+ 	(sparc_d_register_target_info): Likewise.
+ 	* config/sparc/sparc.h (TARGET_D_CPU_VERSIONS): Likewise.
+ 	(TARGET_D_REGISTER_CPU_TARGET_INFO): Likewise.
+ 	* configure: Regenerate.
+ 	* configure.ac (tm_d_file): Remove defaults.h.
+ 	(tm_d_include_list): Remove options.h and insn-constants.h.
+ 	* config/aarch64/aarch64-d.h: New file.
+ 	* config/arm/arm-d.h: New file.
+ 	* config/i386/i386-d.h: New file.
+ 	* config/mips/mips-d.h: New file.
+ 	* config/pa/pa-d.h: New file.
+ 	* config/riscv/riscv-d.h: New file.
+ 	* config/rs6000/rs6000-d.h: New file.
+ 	* config/s390/s390-d.h: New file.
+ 	* config/sparc/sparc-d.h: New file.
+ 
+ 2022-09-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* builtins.cc (fold_builtin_inf): Convert use of real_info to dconstinf.
+ 	(fold_builtin_fpclassify): Same.
+ 	* fold-const-call.cc (fold_const_call_cc): Same.
+ 	* match.pd: Same.
+ 	* omp-low.cc (omp_reduction_init_op): Same.
+ 	* realmpfr.cc (real_from_mpfr): Same.
+ 	* tree.cc (build_complex_inf): Same.
+ 
+ 2022-09-02  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin): Use
+ 	NOP_EXPR for MMA pointer casting.
+ 
+ 2022-09-02  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.cc (vect_optimize_slp_pass::internal_node_cost):
+ 	Reduce the fallback cost to 1.  Only use it if the number of
+ 	input lanes is equal to the number of output lanes.
+ 
+ 2022-09-02  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/106787
+ 	* tree-vect-slp.cc (vect_map_to_instance): New function, split out
+ 	from...
+ 	(vect_bb_partition_graph_r): ...here.  Replace the visited set
+ 	with a map from nodes to instances.  Ensure that a node only
+ 	appears in one partition.
+ 	(vect_bb_partition_graph): Update accordingly.
+ 
+ 2022-09-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* timevar.def (TV_TREE_RPO_VN): New.
+ 	* tree-ssa-sccvn.h (do_rpo_vn): Remove one overload.
+ 	* tree-ssa-sccvn.cc (do_rpo_vn_1): Rename the worker.
+ 	(do_rpo_vn): Unify the public API, track with TV_TREE_RPO_VN.
+ 	(pass_fre::execute): Adjust.
+ 	* tree-ssa-uninit.cc (execute_early_warn_uninitialized): Adjust.
+ 
+ 2022-09-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106809
+ 	* tree-ssa-sccvn.cc (dominaged_by_p_w_unex): Check we have
+ 	more than one successor before doing extra work.
+ 
+ 2022-09-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc: Include <vector>.
+ 	(struct riscv_multi_lib_info_t): New.
+ 	(riscv_subset_list::match_score): Ditto.
+ 	(find_last_appear_switch): Ditto.
+ 	(prefixed_with): Ditto.
+ 	(struct multi_lib_info_t): Ditto.
+ 	(riscv_current_arch_str): Ditto.
+ 	(riscv_current_abi_str): Ditto.
+ 	(riscv_multi_lib_info_t::parse): Ditto.
+ 	(riscv_check_cond): Ditto.
+ 	(riscv_check_conds): Ditto.
+ 	(riscv_compute_multilib): Ditto.
+ 	(TARGET_COMPUTE_MULTILIB): Defined.
+ 	* config/riscv/elf.h (LIB_SPEC): Call riscv_multi_lib_check if
+ 	doing link.
+ 	(RISCV_USE_CUSTOMISED_MULTI_LIB): New.
+ 	* config/riscv/riscv.h (riscv_multi_lib_check): New.
+ 	(EXTRA_SPEC_FUNCTIONS): Add riscv_multi_lib_check.
+ 	* config/riscv/riscv-subset.h (riscv_subset_list::match_score): New.
+ 
+ 2022-09-02  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/common-target.def (compute_multilib): New.
+ 	* common/common-targhooks.h (default_compute_multilib): New.
+ 	* common/common-targhooks.cc (default_compute_multilib): New.
+ 	* doc/tm.texi.in (TARGET_COMPUTE_MULTILIB): New.
+ 	* doc/tm.texi: Regen.
+ 	* gcc.cc: Include common/common-target.h.
+ 	(set_multilib_dir) Call targetm_common.compute_multilib.
+ 	(SWITCH_LIVE): Move to opts.h.
+ 	(SWITCH_FALSE): Ditto.
+ 	(SWITCH_IGNORE): Ditto.
+ 	(SWITCH_IGNORE_PERMANENTLY): Ditto.
+ 	(SWITCH_KEEP_FOR_GCC): Ditto.
+ 	(struct switchstr): Ditto.
+ 	* opts.h (SWITCH_LIVE): Move from gcc.c.
+ 	(SWITCH_FALSE): Ditto.
+ 	(SWITCH_IGNORE): Ditto.
+ 	(SWITCH_IGNORE_PERMANENTLY): Ditto.
+ 	(SWITCH_KEEP_FOR_GCC): Ditto.
+ 	(struct switchstr): Ditto.
+ 
+ 2022-09-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/pdp11/pdp11.h (PREFERRED_DEBUGGING_TYPE): Disable
+ 	debugging format.
+ 
+ 2022-09-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Remove -gstabs option support, DBX-related
+ 	macros and DBX debugging info support.
+ 	* collect2.cc (scan_prog_file): Likewise.
+ 	* common.opt: Likewise.
+ 	* config.gcc: Likewise.
+ 	* config.in: Likewise.
+ 	* config/aarch64/aarch64-elf.h (DBX_DEBUGGING_INFO): Likewise.
+ 	* config/alpha/alpha.cc: Likewise.
+ 	* config/alpha/elf.h (ASM_SPEC): Likewise.
+ 	* config/arc/arc.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/arm/aout.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/arm/netbsd-elf.h (DBX_CONTIN_LENGTH): Likewise.
+ 	* config/darwin.h (DSYMUTIL_SPEC): Likewise.
+ 	(ASM_DEBUG_SPEC): Likewise.
+ 	(DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_USE_BINCL): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	(DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END): Likewise.
+ 	* config/epiphany/epiphany.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/i386/bsd.h (DBX_NO_XREFS): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/i386/gas.h (DBX_NO_XREFS): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/ia64/ia64.h: Likewise.
+ 	* config/ia64/sysv4.h (DBX_DEBUGGING_INFO): Likewise.
+ 	* config/m68k/linux.h (DBX_CONTIN_LENGTH): Likewise.
+ 	* config/m68k/openbsd.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	(DBX_CONTIN_CHAR): Likewise.
+ 	* config/mips/mips.cc (mips_output_filename): Likewise.
+ 	(mips_option_override): Likewise.
+ 	* config/mips/mips.h (SUBTARGET_ASM_DEBUGGING_SPEC): Likewise.
+ 	(DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	(DBX_REGISTER_NUMBER): Likewise.
+ 	(GP_DBX_FIRST): Likewise.
+ 	(FP_DBX_FIRST): Likewise.
+ 	(MD_DBX_FIRST): Likewise.
+ 	* config/nvptx/nvptx.cc: Likewise.
+ 	* config/openbsd.h (DBX_NO_XREFS): Likewise.
+ 	* config/pa/pa-64.h (DBX_DEBUGGING_INFO): Likewise.
+ 	* config/pa/pa.h (ASSEMBLER_DIALECT): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/pa/som.h (PREFERRED_DEBUGGING_TYPE): Likewise.
+ 	(DBX_USE_BINCL): Likewise.
+ 	(DBX_LINES_FUNCTION_RELATIVE): Likewise.
+ 	(DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END): Likewise.
+ 	* config/pdp11/pdp11.cc: Likewise.
+ 	* config/pdp11/pdp11.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(PREFERRED_DEBUGGING_TYPE): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	* config/rs6000/rs6000-builtin.cc: Likewise.
+ 	* config/rs6000/rs6000-call.cc: Likewise.
+ 	* config/rs6000/rs6000-logue.cc (defined): Likewise.
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Likewise.
+ 	(HAVE_XCOFF_DWARF_EXTRAS): Likewise.
+ 	(rs6000_xcoff_declare_function_name): Likewise.
+ 	* config/rs6000/sysv4.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_FUNCTION_FIRST): Likewise.
+ 	* config/rs6000/xcoff.h (XCOFF_DEBUGGING_INFO): Likewise.
+ 	* config/rx/rx.h (DBX_DEBUGGING_INFO): Likewise.
+ 	* config/sh/elf.h (DBX_LINES_FUNCTION_RELATIVE): Likewise.
+ 	(DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END): Likewise.
+ 	* config/sol2.h (NO_DBX_BNSYM_ENSYM): Likewise.
+ 	* config/sparc/freebsd.h (DBX_CONTIN_CHAR): Likewise.
+ 	* config/sparc/netbsd-elf.h (DBX_CONTIN_CHAR): Likewise.
+ 	* config/sparc/sparc.h (DBX_CONTIN_LENGTH): Likewise.
+ 	* config/vax/vax.cc (vax_file_start): Likewise.
+ 	* config/vax/vax.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(DBX_CONTIN_LENGTH): Likewise.
+ 	(DBX_CONTIN_CHAR): Likewise.
+ 	(DBX_NO_XREFS): Likewise.
+ 	(DBX_STATIC_STAB_DATA_SECTION): Likewise.
+ 	* config/vx-common.h (DBX_DEBUGGING_INFO): Likewise.
+ 	(XCOFF_DEBUGGING_INFO): Likewise.
+ 	* configure: Regenerate. Likewise.
+ 	* configure.ac: Likewise.
+ 	* debug.h: Likewise.
+ 	* doc/install.texi: Likewise.
+ 	* doc/invoke.texi: Likewise.
+ 	* doc/passes.texi: Likewise.
+ 	* doc/tm.texi: Likewise.
+ 	* doc/tm.texi.in: Likewise.
+ 	* dwarf2asm.cc (XCOFF_DEBUGGING_INFO): Likewise.
+ 	(dw2_asm_output_nstring): Likewise.
+ 	(USE_LINKONCE_INDIRECT): Likewise.
+ 	* dwarf2out.cc (XCOFF_DEBUGGING_INFO): Likewise.
+ 	(HAVE_XCOFF_DWARF_EXTRAS): Likewise.
+ 	(output_fde): Likewise.
+ 	(output_call_frame_info): Likewise.
+ 	(have_macinfo): Likewise.
+ 	(add_AT_loc_list): Likewise.
+ 	(add_AT_view_list): Likewise.
+ 	(output_compilation_unit_header): Likewise.
+ 	(output_pubnames): Likewise.
+ 	(output_aranges): Likewise.
+ 	(output_line_info): Likewise.
+ 	(output_macinfo): Likewise.
+ 	(dwarf2out_finish): Likewise.
+ 	(dwarf2out_early_finish): Likewise.
+ 	* final.cc (final_scan_insn_1): Likewise.
+ 	(rest_of_handle_final): Likewise.
+ 	* flag-types.h (enum debug_info_type): Likewise.
+ 	(DBX_DEBUG): Likewise.
+ 	(XCOFF_DEBUG): Likewise.
+ 	* function.cc (defined): Likewise.
+ 	* gcc.cc (defined): Likewise.
+ 	(ASM_DEBUG_SPEC): Likewise.
+ 	(ASM_DEBUG_OPTION_SPEC): Likewise.
+ 	* opts.cc (common_handle_option): Likewise.
+ 	(set_debug_level): Likewise.
+ 	* system.h (fancy_abort): Likewise.
+ 	* target-def.h (TARGET_ASM_CONSTRUCTOR): Likewise.
+ 	(TARGET_ASM_DESTRUCTOR): Likewise.
+ 	* toplev.cc (defined): Likewise.
+ 	* varasm.cc: Likewise.
+ 	* config/dbxcoff.h: Removed.
+ 	* config/dbxelf.h: Removed.
+ 	* dbxout.cc: Removed.
+ 	* dbxout.h: Removed.
+ 	* gstab.h: Removed.
+ 	* stab.def: Removed.
+ 	* xcoffout.cc: Removed.
+ 	* xcoffout.h: Removed.
+ 
+ 2022-09-02  Simon Rainer  <gcc.gnu@vvalter.com>
+ 
+ 	PR ipa/106627
+ 	* config/i386/i386-features.cc (ix86_get_function_versions_dispatcher):
+ 	Set TREE_NOTHROW correctly for dispatcher declaration.
+ 	* config/rs6000/rs6000.cc (rs6000_get_function_versions_dispatcher):
+ 	Likewise.
+ 
+ 2022-09-01  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR other/106782
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_vector_costs::prefer_unrolled_loop): Replace %u with
+ 	HOST_WIDE_INT_PRINT_UNSIGNED.
+ 
+ 2022-09-01  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.cc (vect_build_slp_tree_2): When building a
+ 	VEC_PERM_EXPR of an existing vector, set the SLP_TREE_LANES
+ 	to the number of vector elements, if that's a known constant.
+ 	(vect_optimize_slp_pass::is_compatible_layout): Remove associated
+ 	comment about zero SLP_TREE_LANES.
+ 	(vect_optimize_slp_pass::start_choosing_layouts): Iterate over
+ 	all partition members when looking for potential layouts.
+ 	Handle existing permutes of fixed-length vectors.
+ 
+ 2022-09-01  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/106707
+ 	* config/i386/i386.md (moves to/from AX_REG into xchg peephole2):
+ 	Do not convert a move pattern where both operands are AX_REG.
+ 
+ 2022-09-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (build_le): Convert to dconst*inf.
+ 	(build_ge): Same.
+ 	* value-range.cc (frange::set_signbit): Same.
+ 	(frange::normalize_kind): Same.
+ 	(range_tests_floats): Same.
+ 	* value-range.h (vrp_val_max): Same.
+ 	(vrp_val_min): Same.
+ 	(frange::set_varying): Same.
+ 
+ 2022-09-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* emit-rtl.cc (init_emit_once): Initialize dconstinf and
+ 	dconstninf.
+ 	* real.h: Add dconstinf and dconstninf.
+ 
+ 2022-09-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain):
+ 	Remove cycle detection, instead avoid walking backedges.
+ 
+ 2022-09-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain):
+ 	New wrapping overload.
+ 	(uninit_analysis::init_use_preds): Simplify.
+ 	(uninit_analysis::init_from_phi_def): Likewise.
+ 
+ 2022-09-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc
+ 	(fold_using_range::range_of_builtin_int_call): Add case for
+ 	CFN_BUILT_IN_SIGNBIT.
+ 
+ 2022-09-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_equal::op1_range): Do not copy sign
+ 	bit.
+ 	(foperator_not_equal::op1_range): Same.
+ 	* value-query.cc (range_query::get_tree_range): Set sign bit.
+ 	* value-range-pretty-print.cc (vrange_printer::visit): Dump sign bit.
+ 	* value-range.cc (frange::set_signbit): New.
+ 	(frange::set): Adjust for sign bit.
+ 	(frange::normalize_kind): Same.
+ 	(frange::union_): Remove useless comment.
+ 	(frange::intersect): Same.
+ 	(frange::contains_p): Adjust for sign bit.
+ 	(frange::singleton_p): Same.
+ 	(frange::verify_range): Same.
+ 	(range_tests_signbit): New tests.
+ 	(range_tests_floats): Call range_tests_signbit.
+ 	* value-range.h (class frange_props): Add signbit
+ 	(class frange): Same.
+ 
+ 2022-09-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/106782
+ 	* dumpfile.h (dump_printf_loc): Use ATTRIBUTE_GCC_DUMP_PRINTF (3, 4)
+ 	instead of ATTRIBUTE_GCC_DUMP_PRINTF (3, 0).
+ 	* tree-parloops.cc (parloops_is_slp_reduction): Cast pointers to
+ 	derived types of gimple to gimple * to avoid -Wformat warnings.
+ 	* tree-vect-loop-manip.cc (vect_set_loop_condition,
+ 	vect_update_ivs_after_vectorizer): Likewise.
+ 	* tree-vect-stmts.cc (vectorizable_load): Likewise.
+ 	* tree-vect-patterns.cc (vect_split_statement,
+ 	vect_recog_mulhs_pattern, vect_recog_average_pattern,
+ 	vect_determine_precisions_from_range,
+ 	vect_determine_precisions_from_users): Likewise.
+ 	* gimple-loop-versioning.cc
+ 	(loop_versioning::analyze_term_using_scevs): Likewise.
+ 	* tree-vect-slp.cc (vect_build_slp_tree_1): Likewise.
+ 	(vect_build_slp_tree): Cast slp_tree to void * to avoid
+ 	-Wformat warnings.
+ 	(optimize_load_redistribution_1, vect_match_slp_patterns,
+ 	vect_build_slp_instance, vect_optimize_slp_pass::materialize,
+ 	vect_optimize_slp_pass::dump, vect_slp_convert_to_external,
+ 	vect_slp_analyze_node_operations, vect_bb_partition_graph): Likewise.
+ 	(vect_print_slp_tree): Likewise.  Also use
+ 	HOST_WIDE_INT_PRINT_UNSIGNED instead of %u.
+ 	* tree-vect-loop.cc (vect_determine_vectorization_factor,
+ 	vect_analyze_scalar_cycles_1, vect_analyze_loop_operations,
+ 	vectorizable_induction, vect_transform_loop): Cast pointers to derived
+ 	types of gimple to gimple * to avoid -Wformat warnings.
+ 	(vect_analyze_loop_2): Cast slp_tree to void * to avoid
+ 	-Wformat warnings.
+ 	(vect_estimate_min_profitable_iters): Use HOST_WIDE_INT_PRINT_UNSIGNED
+ 	instead of %d.
+ 	* tree-vect-slp-patterns.cc (vect_pattern_validate_optab): Use %G
+ 	instead of %T and STMT_VINFO_STMT (SLP_TREE_REPRESENTATIVE (node))
+ 	instead of SLP_TREE_DEF_TYPE (node).
+ 
+ 2022-09-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/106655
+ 	* doc/invoke.texi (-Winvalid-utf8): Document it.
+ 
+ 2022-09-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/106785
+ 	* value-range.cc (range_tests_nan): Adjust tests for !HONOR_NANS.
+ 	(range_tests_floats): Same.
+ 
+ 2022-09-01  konglin1  <lingling.kong@intel.com>
+ 
+ 	* tree-if-conv.cc (is_cond_scalar_reduction): Add MULT_EXPR
+ 	recognition.
+ 
+ 2022-09-01  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/101322
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_mma_builtin):
+ 	Enforce the use of a valid MMA pointer type.
+ 
+ 2022-09-01  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.cc (riscv_conditional_register_usage): Add vector
+ 	registers.
+ 
+ 2022-09-01  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.cc (riscv_const_insns): Add cost of poly_int.
+ 	(riscv_output_move): Add csrr vlenb assembly.
+ 	* config/riscv/riscv.md (move_type): Add csrr vlenb type.
+ 	(ext): New attribute.
+ 	(ext_enabled): Ditto.
+ 	(enabled): Ditto.
+ 
+ 2022-09-01  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/constraints.md (TARGET_VECTOR ? V_REGS : NO_REGS): Add
+ 	"vr" constraint.
+ 	(TARGET_VECTOR ? VD_REGS : NO_REGS): Add "vd" constraint.
+ 	(TARGET_VECTOR ? VM_REGS : NO_REGS): Add "vm" constraint.
+ 	(vp): Add poly constraint.
+ 
+ 2022-09-01  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.h (enum reg_class): Change vype to vtype.
+ 
+ 2022-09-01  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.cc (riscv_convert_vector_bits): Change
+ 	configuration according to TARGET_MIN_VLEN.
+ 	* config/riscv/riscv.h (UNITS_PER_FP_REG): Fix comment.
+ 
+ 2022-08-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config.build: Remove deprecated ports.
+ 	* config.gcc: Likewise.
+ 	* config.host: Likewise.
+ 	* configure.ac: Likewise.
+ 	* configure: Regenerate.
+ 	* config/pa/pa-hpux10.h: Removed.
+ 	* config/pa/pa-hpux10.opt: Removed.
+ 	* config/pa/t-dce-thr: Removed.
+ 
+ 2022-08-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Always install limits.h and syslimits.h to
+ 	include folder.
+ 	* configure.ac: Assign STMP_FIXINC blank if
+ 	--disable-fixincludes is used.
+ 	* configure: Regenerate.
+ 
+ 2022-08-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (predicate::init_from_control_deps):
+ 	Assert the guard_bb isn't empty and has more than one successor.
+ 	Drop appropriate parts of the predicate when an edge fails to
+ 	register a predicate.
+ 	(predicate::dump): Dump empty predicate as TRUE.
+ 
+ 2022-08-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/90994
+ 	* gimple-predicate-analysis.cc (predicate::init_from_control_deps):
+ 	Ignore exceptional control flow and skip the edge for the purpose of
+ 	predicate generation also for non-calls.
+ 
+ 2022-08-31  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-storage.cc (frange_storage_slot::set_frange): Save
+ 	endpoints.
+ 	(frange_storage_slot::get_frange): Restore endpoints.
+ 	* value-range-storage.h (class frange_storage_slot): Add endpoint
+ 	fields.
+ 
+ 2022-08-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/106789
+ 	* range-op-float.cc (default_frelop_fold_range): Remove the
+ 	function.
+ 
+ 2022-08-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-range.h: Add more override keywords.
+ 
+ 2022-08-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-range.h: Add override.
+ 
+ 2022-08-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/65244
+ 	* gimple-predicate-analysis.h (predicate::init_from_control_deps):
+ 	Add argument to specify whether the predicate is for the USE.
+ 	* gimple-predicate-analysis.cc (predicate::init_from_control_deps):
+ 	Also include predicates effective fallthru control edges when
+ 	the predicate is for the USE.
+ 
+ 2022-08-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/73550
+ 	* gimple-predicate-analysis.cc (predicate::init_from_control_deps):
+ 	Sanitize debug dumping.  Handle case labels with a CASE_HIGH.
+ 	(predicate::dump): Adjust for better readability.
+ 
+ 2022-08-31  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-simd-clone.cc (simd_clone_adjust_return_type,
+ 	simd_clone_adjust_argument_types): Use known_eq (veclen, 0U)
+ 	instead of known_eq (veclen, 0) to avoid -Wsign-compare warnings.
+ 
+ 2022-08-31  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.cc (vect_optimize_slp_pass::dump): Remove bogus
+ 	argument.
+ 
+ 2022-08-31  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Simply
+ 	initialize const_vf to 0.
+ 
+ 2022-08-31  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config.gcc: Remove cr16.
+ 
+ 2022-08-30  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	* vec.h (array_slice): Add constructors for non-const reference to
+ 	heap vector and pointers to heap vectors.
+ 
+ 2022-08-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (early_nan_resolve): Change comment.
+ 	(frange::union_): Handle union when one side is a NAN.
+ 	(range_tests_nan): Add tests for NAN union.
+ 
+ 2022-08-30  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_simd_clone_compute_vecsize_and_simdlen): New.
+ 	(gcn_simd_clone_adjust): New.
+ 	(gcn_simd_clone_usable): New.
+ 	(TARGET_SIMD_CLONE_ADJUST): New.
+ 	(TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN): New.
+ 	(TARGET_SIMD_CLONE_USABLE): New.
+ 
+ 2022-08-30  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* doc/tm.texi: Regenerate.
+ 	* omp-simd-clone.cc (simd_clone_adjust_return_type): Allow zero
+ 	vecsize.
+ 	(simd_clone_adjust_argument_types): Likewise.
+ 	* target.def (compute_vecsize_and_simdlen): Document the new
+ 	vecsize_int and vecsize_float semantics.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* expmed.cc (store_bit_field_1): Fix byte offset calculation
+ 	for undefined structures.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* params.opt (-param=vect-max-layout-candidates=): New parameter.
+ 	* doc/invoke.texi (vect-max-layout-candidates): Document it.
+ 	* tree-vectorizer.h (auto_lane_permutation_t): New typedef.
+ 	(auto_load_permutation_t): Likewise.
+ 	* tree-vect-slp.cc (vect_slp_node_weight): New function.
+ 	(slpg_layout_cost): New class.
+ 	(slpg_vertex): Replace perm_in and perm_out with partition,
+ 	out_degree, weight and out_weight.
+ 	(slpg_partition_info, slpg_partition_layout_costs): New classes.
+ 	(vect_optimize_slp_pass): Likewise, cannibalizing some part of
+ 	the previous vect_optimize_slp.
+ 	(vect_optimize_slp): Use it.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* hash-traits.h (vec_hash_base): New class.
+ 	(vec_free_hash_base): Likewise.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* hash-traits.h (int_hash_base): New struct, split out from...
+ 	(int_hash): ...this class, which now inherits from int_hash_base.
+ 	* hash-map-traits.h (unbounded_hashmap_traits): Take a template
+ 	parameter for the key that provides hash and equality functions.
+ 	(unbounded_int_hashmap_traits): Turn into a type alias of
+ 	unbounded_hashmap_traits.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* graphds.cc (graphds_scc): Add a pass-back parameter for the
+ 	final node order.
+ 	* graphds.h (graphds_scc): Update prototype accordingly.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.cc (vect_transform_slp_perm_load_1): Split out from...
+ 	(vect_transform_slp_perm_load): ...here.  Use SLP_TREE_VECTYPE instead
+ 	of STMT_VINFO_VECTYPE.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.cc (vectorizable_slp_permutation_1): Split out from...
+ 	(vectorizable_slp_permutation): ...here.
+ 
+ 2022-08-30  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-stmts.cc (get_related_vectype_for_scalar_type): Check
+ 	that the requested number of units is interoperable with the requested
+ 	prevailing mode.
+ 
+ 2022-08-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config.gcc: Remove the port.
+ 	* config/m32c/rtems.h: Removed.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/73550
+ 	* gimple-predicate-analysis.cc (predicate::init_from_control_deps):
+ 	Do not apply MAX_NUM_CHAINS again.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (format_edge_vec): Dump
+ 	both source and destination.
+ 	(dump_dep_chains): Remove.
+ 	(uninit_analysis::init_use_preds): Remove redundant
+ 	dumping of chains.
+ 
+ 2022-08-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-storage.cc (frange_storage_slot::get_frange): Use
+ 	frange_nan.
+ 	* value-range.cc (frange::set_nan): New.
+ 	(frange_nan): Move to header file.
+ 	(range_tests_nan): Adjust frange_nan callers to pass type.
+ 	New test.
+ 	* value-range.h (FRANGE_PROP_ACCESSOR): Remove.
+ 	(frange_nan): New.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/67196
+ 	* gimple-predicate-analysis.cc (uninit_analysis::is_use_guarded):
+ 	Simplify and normalize use prediates before first use.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (dump_pred_chain): Fix
+ 	parentizing and AND prepending.
+ 	(predicate::dump): Do not dump the GENERIC expanded
+ 	predicate, properly parentize and prepend ORs to the
+ 	piecewise predicate dump.
+ 	(build_pred_expr): Remove.
+ 
+ 2022-08-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (finite_operand_p): New.
+ 	(build_le): New.
+ 	(build_lt): New.
+ 	(build_ge): New.
+ 	(build_gt): New.
+ 	(foperator_equal::fold_range): New implementation with endpoints.
+ 	(foperator_equal::op1_range): Same.
+ 	(foperator_not_equal::fold_range): Same.
+ 	(foperator_not_equal::op1_range): Same.
+ 	(foperator_lt::fold_range): Same.
+ 	(foperator_lt::op1_range): Same.
+ 	(foperator_lt::op2_range): Same.
+ 	(foperator_le::fold_range): Same.
+ 	(foperator_le::op1_range): Same.
+ 	(foperator_le::op2_range): Same.
+ 	(foperator_gt::fold_range): Same.
+ 	(foperator_gt::op1_range): Same.
+ 	(foperator_gt::op2_range): Same.
+ 	(foperator_ge::fold_range): Same.
+ 	(foperator_ge::op1_range): Same.
+ 	(foperator_ge::op2_range): Same.
+ 
+ 2022-08-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (frange_set_nan): New.
+ 	(frange_drop_inf): New.
+ 	(frange_drop_ninf): New.
+ 	(foperator_equal::op1_range): Adjust for endpoints.
+ 	(foperator_lt::op1_range): Same.
+ 	(foperator_lt::op2_range): Same.
+ 	(foperator_gt::op1_range): Same.
+ 	(foperator_gt::op2_range): Same.
+ 	(foperator_unordered::op1_range): Same.
+ 	* value-query.cc (range_query::get_tree_range): Same.
+ 	* value-range-pretty-print.cc (vrange_printer::visit): Same.
+ 	* value-range-storage.cc (frange_storage_slot::get_frange): Same.
+ 	* value-range.cc (frange::set): Same.
+ 	(frange::normalize_kind): Same.
+ 	(frange::union_): Same.
+ 	(frange::intersect): Same.
+ 	(frange::operator=): Same.
+ 	(early_nan_resolve): New.
+ 	(frange::contains_p): New.
+ 	(frange::singleton_p): New.
+ 	(frange::set_nonzero): New.
+ 	(frange::nonzero_p): New.
+ 	(frange::set_zero): New.
+ 	(frange::zero_p): New.
+ 	(frange::set_nonnegative): New.
+ 	(frange_float): New.
+ 	(frange_nan): New.
+ 	(range_tests_nan): New.
+ 	(range_tests_signed_zeros): New.
+ 	(range_tests_floats): New.
+ 	(range_tests): New.
+ 	* value-range.h (frange::lower_bound): New.
+ 	(frange::upper_bound): New.
+ 	(vrp_val_min): Use real_inf with a sign instead of negating inf.
+ 	(frange::frange): New.
+ 	(frange::set_varying): Adjust for endpoints.
+ 	(real_max_representable): New.
+ 	(real_min_representable): New.
+ 
+ 2022-08-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* match.pd ((cmp @0 zerop) real_zerop (negate@1 @0)): Add variant
+ 	for real zero.
+ 
+ 2022-08-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/s390/s390.cc (s390_rtx_costs): Use proper type as
+ 	argument.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-uninit.cc (warn_uninitialized_vars): Pre-compute
+ 	the set of fallthru reachable blocks from function entry
+ 	and use that to determine wlims.always_executed.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/56654
+ 	* tree-ssa-uninit.cc (cand_cmp): New.
+ 	(find_uninit_use): First process all PHIs and collect candidate
+ 	stmts, then sort those after RPO.
+ 	(warn_uninitialized_phi): Pass on bb_to_rpo.
+ 	(execute_late_warn_uninitialized): Compute and pass on
+ 	reverse lookup of RPO number from basic block index.
+ 
+ 2022-08-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.h (uninit_analysis::operator()):
+ 	Remove.
+ 	* gimple-predicate-analysis.cc
+ 	(uninit_analysis::collect_phi_def_edges): Use phi_arg_set,
+ 	simplify a bit.
+ 	* tree-ssa-uninit.cc (defined_args): New global.
+ 	(compute_uninit_opnds_pos): Mask with the recorded set
+ 	of guarded maybe-uninitialized uses.
+ 	(uninit_undef_val_t::operator()): Remove.
+ 	(find_uninit_use): Process all PHI uses, recording the
+ 	guarded ones and marking the PHI result as uninitialized
+ 	consistently.
+ 	(warn_uninitialized_phi): Adjust.
+ 	(execute_late_warn_uninitialized): Get rid of the PHI worklist
+ 	and instead walk the function in RPO order.
+ 	* spellcheck.h (best_match::m_best_candidate_len): Initialize.
+ 
+ 2022-08-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/106744
+ 	* tree-ssa-phiopt.cc (minmax_replacement): Correct arguments.
+ 
+ 2022-08-30  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* expmed.cc (store_bit_field_1): Initialize regnum to 0.
+ 
+ 2022-08-29  David Faust  <david.faust@oracle.com>
+ 
+ 	PR target/106745
+ 	* config/bpf/coreout.cc (bpf_core_get_sou_member_index): Fix
+ 	computation of index for anonymous members.
+ 
+ 2022-08-29  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* config/bpf/bpf.cc (bpf_target_macros): Define __bpf__ as a
+ 	target macro.
+ 
+ 2022-08-29  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/106748
+ 	* config/i386/i386-expand.cc
+ 	(ix86_avx256_split_vector_move_misalign): Handle E_V16BFmode.
+ 	* config/i386/sse.md (V_256H): Add V16BF.
+ 
+ 2022-08-29  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.cc (s390_address_cost): Declare.
+ 	(s390_hard_regno_nregs): Declare.
+ 	(s390_rtx_costs): Add handling for REG and MEM in SET.
+ 
+ 2022-08-29  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.cc (expand_perm_with_vpdi): Recognize swap pattern.
+ 	(is_reverse_perm_mask): New function.
+ 	(expand_perm_with_rot): Recognize reverse pattern.
+ 	(expand_perm_with_vstbrq): New function.
+ 	(expand_perm_with_vster): Use vler/vster for element reversal on z15.
+ 	(vectorize_vec_perm_const_1): Use.
+ 	(s390_vectorize_vec_perm_const): Add expand functions.
+ 	* config/s390/vx-builtins.md: Prefer vster over vler.
+ 
+ 2022-08-29  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.md: Remove UNSPEC_VEC_EXTRACT.
+ 	* config/s390/vector.md: Rewrite patterns to use vec_select.
+ 	* config/s390/vx-builtins.md (vec_scatter_element<V_HW_2:mode>_SI):
+ 	Likewise.
+ 
+ 2022-08-29  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	PR target/100869
+ 	* config/s390/vector.md (@vpdi4_2<mode>): New pattern.
+ 	(rotl<mode>3_di): New pattern.
+ 	* config/s390/vx-builtins.md: Use vpdi and verll for reversing
+ 	elements.
+ 
+ 2022-08-29  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.cc (s390_issue_rate): Add z15.
+ 
+ 2022-08-29  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* common/config/s390/s390-common.cc: Enable -funroll-loops and
+ 	-munroll-only-small-loops for OPT_LEVELS_2_PLUS_SPEED_ONLY.
+ 	* config/s390/s390.cc (s390_loop_unroll_adjust): Do not unroll
+ 	loops larger than 12 instructions.
+ 	(s390_override_options_after_change): Set unroll options.
+ 	(s390_option_override_internal): Likewise.
+ 	* config/s390/s390.opt: Document munroll-only-small-loops.
+ 
+ 2022-08-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (is_loop_exit,
+ 	find_control_equiv_block): Inline into single caller ...
+ 	(uninit_analysis::init_use_preds): ... here and refactor.
+ 
+ 2022-08-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (compute_control_dep_chain):
+ 	Inline is_loop_exit and refactor, add comment about
+ 	loop exits.
+ 
+ 2022-08-29  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_frame_info): Introduce `reset(void)`;
+ 	(riscv_frame_info::reset(void)): New.
+ 	(riscv_compute_frame_info): Use riscv_frame_info::reset instead
+ 	of memset when clean frame.
+ 
+ 2022-08-29  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.cc (riscv_v_ext_vector_mode_p): New function.
+ 	(riscv_classify_address): Disallow PLUS/LO_SUM/CONST_INT address types for RVV.
+ 	(riscv_address_insns): Add RVV modes condition.
+ 	(riscv_binary_cost): Ditto.
+ 	(riscv_rtx_costs): Adjust cost for RVV.
+ 	(riscv_secondary_memory_needed): Add RVV modes condition.
+ 	(riscv_hard_regno_nregs): Add RVV register allocation.
+ 	(riscv_hard_regno_mode_ok): Add RVV register allocation.
+ 	(riscv_class_max_nregs): Add RVV register allocation.
+ 	* config/riscv/riscv.h (DWARF_FRAME_REGNUM): Add VL/VTYPE and vector registers in Dwarf.
+ 	(UNITS_PER_V_REG): New macro.
+ 	(FIRST_PSEUDO_REGISTER): Adjust first pseudo num for RVV.
+ 	(V_REG_FIRST): New macro.
+ 	(V_REG_LAST): Ditto.
+ 	(V_REG_NUM): Ditto.
+ 	(V_REG_P): Ditto.
+ 	(VL_REG_P): Ditto.
+ 	(VTYPE_REG_P): Ditto.
+ 	(RISCV_DWARF_VL): Ditto.
+ 	(RISCV_DWARF_VTYPE): Ditto.
+ 	(enum reg_class): Add RVV register types.
+ 	(REG_CLASS_CONTENTS): Add RVV register types.
+ 	* config/riscv/riscv.md: Add VL/VTYPE register number constants.
+ 
+ 2022-08-29  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/riscv.md: Add new type for vector instructions.
+ 
+ 2022-08-28  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/106017
+ 	* config/rs6000/rs6000.cc (rs6000_invalid_conversion): Remove handling
+ 	of MMA pointer conversions.
+ 
+ 2022-08-27  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/i386/gcc-auto-profile: Regenerate.
+ 
+ 2022-08-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* real.cc (real_iszero): New.
+ 	* real.h (real_iszero): New.
+ 
+ 2022-08-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* real.cc (real_isinf): New overload.
+ 	(real_inf): Add sign argument.
+ 	* real.h (real_isinf): New overload.
+ 	(real_inf): Add sign argument.
+ 
+ 2022-08-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/81159
+ 	* doc/invoke.texi: Document -Wself-move.
+ 
+ 2022-08-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (vrange::set): Set varying.
+ 	(vrange::set_nonzero): Same.
+ 	(vrange::set_zero): Same.
+ 	(vrange::set_nonnegative): Same.
+ 
+ 2022-08-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_equal::op1_range): Do not blindly
+ 	copy op2 range when honoring signed zeros.
+ 
+ 2022-08-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-threadbackward.cc (possibly_profitable_path_p): Always
+ 	add newline.
+ 	(profitable_path_p): Same.
+ 
+ 2022-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.h
+ 	(uninit_analysis::use_cannot_happen): Remove.
+ 	* gimple-predicate-analysis.cc (can_be_invalidated_p): Remove.
+ 	(uninit_analysis::use_cannot_happen): Likewise.
+ 	(uninit_analysis::is_use_guarded): Do not call
+ 	use_cannot_happen.
+ 	(dump_predicates): Remove.
+ 	(simple_control_dep_chain): Remove edge overload.
+ 
+ 2022-08-26  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* internal-fn.cc (expand_GOMP_TARGET_REV): New.
+ 	* internal-fn.def (GOMP_TARGET_REV): New.
+ 	* lto-cgraph.cc (lto_output_node, verify_node_partition): Mark
+ 	'omp target device_ancestor_host' as in_other_partition and don't
+ 	error if absent.
+ 	* omp-low.cc (create_omp_child_function): Mark as 'noclone'.
+ 	* omp-expand.cc (expand_omp_target): For reverse offload, remove
+ 	sorry, use device = GOMP_DEVICE_HOST_FALLBACK and create
+ 	empty-body nohost function.
+ 	* omp-offload.cc (execute_omp_device_lower): Handle
+ 	IFN_GOMP_TARGET_REV.
+ 	(pass_omp_target_link::execute): For ACCEL_COMPILER, don't
+ 	nullify fn argument for reverse offload
+ 
+ 2022-08-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* builtins.def (BUILT_IN_ISSIGNALING): New built-in.
+ 	* builtins.cc (expand_builtin_issignaling): New function.
+ 	(expand_builtin_signbit): Don't overwrite target.
+ 	(expand_builtin): Handle BUILT_IN_ISSIGNALING.
+ 	(fold_builtin_classify): Likewise.
+ 	(fold_builtin_1): Likewise.
+ 	* optabs.def (issignaling_optab): New.
+ 	* fold-const-call.cc (fold_const_call_ss): Handle
+ 	BUILT_IN_ISSIGNALING.
+ 	* config/i386/i386.md (issignalingxf2): New expander.
+ 	* doc/extend.texi (__builtin_issignaling): Document.
+ 	(__builtin_isinf, __builtin_isnan): Clarify behavior with
+ 	-ffinite-math-only.
+ 	* doc/md.texi (issignaling<mode>2): Likewise.
+ 
+ 2022-08-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/106099
+ 	* internal-fn.def (TRAP): Add ECF_LOOPING_CONST_OR_PURE flag.
+ 	* tree-cfg.cc (execute_fixup_cfg): Add IFN_TRAP instead of
+ 	__builtin_trap to avoid the need of vops.
+ 
+ 2022-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (dfs_mark_dominating_region):
+ 	New helper.
+ 	(compute_control_dep_chain): Adjust to honor marked region
+ 	if provided.
+ 	(uninit_analysis::init_from_phi_def): Pre-mark the dominating
+ 	region to improve compute_control_dep_chain walking.
+ 	* vec.h (vec<T, va_heap, vl_ptr>::allocated): Add forwarder.
+ 
+ 2022-08-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc
+ 	(uninit_analysis::collect_phi_def_edges): Only expand a
+ 	PHI def edge when it is possibly undefined.
+ 
+ 2022-08-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/extend.texi: Remove cr16 related stuff.
+ 	* doc/install.texi: Likewise.
+ 	* doc/invoke.texi: Likewise.
+ 	* doc/md.texi: Likewise.
+ 	* function-tests.cc (test_expansion_to_rtl): Likewise.
+ 	* common/config/cr16/cr16-common.cc: Removed.
+ 	* config/cr16/constraints.md: Removed.
+ 	* config/cr16/cr16-protos.h: Removed.
+ 	* config/cr16/cr16.cc: Removed.
+ 	* config/cr16/cr16.h: Removed.
+ 	* config/cr16/cr16.md: Removed.
+ 	* config/cr16/cr16.opt: Removed.
+ 	* config/cr16/predicates.md: Removed.
+ 	* config/cr16/t-cr16: Removed.
+ 
+ 2022-08-26  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/106704
+ 	* config/i386/i386-builtin.def (BDESC): Add
+ 	CODE_FOR_avx_blendvpd256/CODE_FOR_avx_blendvps256 to
+ 	corresponding builtins.
+ 	* config/i386/i386.cc (ix86_gimple_fold_builtin):
+ 	Don't fold IX86_BUILTIN_PBLENDVB256, IX86_BUILTIN_BLENDVPS256,
+ 	IX86_BUILTIN_BLENDVPD256 w/o TARGET_AVX2.
+ 
+ 2022-08-25  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* ginclude/stddef.h: Define nullptr_t.
+ 
+ 2022-08-25  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* gimplify.cc (gimplify_modify_expr): Convert initialization from
+ 	a variable-size CONSTRUCTOR to memset before call to
+ 	gimplify_modify_expr_rhs.
+ 
+ 2022-08-25  Jason Merrill  <jason@redhat.com>
+ 
+ 	* dwarf2out.cc (base_type_die): Also use DW_ATE_UTF for char8_t.
+ 
+ 2022-08-25  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/106101
+ 	* config/s390/predicates.md (subreg_register_operand): New
+ 	predicate.
+ 	* config/s390/s390-protos.h (s390_gen_lowpart_subreg): New
+ 	function prototype.
+ 	* config/s390/s390.cc (s390_gen_lowpart_subreg): New function.
+ 	(s390_expand_insv): Use s390_gen_lowpart_subreg instead of
+ 	gen_lowpart.
+ 	* config/s390/s390.md ("*get_tp_64", "*zero_extendhisi2_31")
+ 	("*zero_extendqisi2_31", "*zero_extendqihi2_31"): Likewise.
+ 	("movstrictqi", "movstricthi", "movstrictsi"): Use the
+ 	subreg_register_operand predicate instead of register_operand.
+ 
+ 2022-08-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch-protos.h (loongarch_symbol_type):
+ 	Add SYMBOL_PCREL64 and change the description for SYMBOL_PCREL.
+ 	* config/loongarch/loongarch.cc (loongarch_attribute_table):
+ 	New attribute table.
+ 	(TARGET_ATTRIBUTE_TABLE): Define the target hook.
+ 	(loongarch_handle_model_attribute): New static function.
+ 	(loongarch_classify_symbol): Take TARGET_CMODEL_EXTREME and the
+ 	model attribute of SYMBOL_REF_DECL into account returning
+ 	SYMBOL_PCREL or SYMBOL_PCREL64.
+ 	(loongarch_use_anchors_for_symbol_p): New static function.
+ 	(TARGET_USE_ANCHORS_FOR_SYMBOL_P): Define the target hook.
+ 	(loongarch_symbol_extreme_p): New static function.
+ 	(loongarch_symbolic_constant_p): Handle SYMBOL_PCREL64.
+ 	(loongarch_symbol_insns): Likewise.
+ 	(loongarch_split_symbol_type): Likewise.
+ 	(loongarch_split_symbol): Check SYMBOL_PCREL64 instead of
+ 	TARGET_CMODEL_EXTREME for PC-relative addressing.
+ 	(loongarch_print_operand_reloc): Likewise.
+ 	* doc/extend.texi (Variable Attributes): Document new
+ 	LoongArch specific attribute.
+ 
+ 2022-08-25  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_classify_symbol):
+ 	Return early if the rtx is not SYMBOL_REF.
+ 
+ 2022-08-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106737
+ 	* tree-parloops.cc (transform_to_exit_first_loop_alt): Do not
+ 	verify SSA form.
+ 
+ 2022-08-25  Chenghua Xu  <xuchenghua@loongson.cn>
+ 
+ 	PR target/106459
+ 	* config/loongarch/loongarch.cc (loongarch_build_integer):
+ 	Use HOST_WIDE_INT.
+ 	* config/loongarch/loongarch.h (IMM_REACH): Likewise.
+ 	(HWIT_1U): New Defined.
+ 	(LU12I_OPERAND): Use HOST_WIDE_INT.
+ 	(LU32I_OPERAND): Likewise.
+ 	(LU52I_OPERAND): Likewise.
+ 	(HWIT_UC_0xFFF): Likwise.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/106632
+ 	PR target/106588
+ 	* config/riscv/bitmanip.md (*shNadduw): Use n constraint
+ 	instead of i.
+ 	(*slliuw): Likewise.
+ 	(*bexti): Likewise. Also add a check for operands[2] to be less
+ 	than the mode bitsize.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/constraints.md (DbS): New constraint.
+ 	(DnS): New constraint.
+ 	* config/riscv/bitmanip.md (*bset<mode>_1_mask): Use new constraint.
+ 	(*bclr<mode>): Likewise.
+ 	(*binvi<mode>): Likewise.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/106586
+ 	* config/riscv/predicates.md (single_bit_mask_operand):
+ 	Use SINGLE_BIT_MASK_OPERAND instead of directly calling pow2p_hwi.
+ 	(not_single_bit_mask_operand): Likewise.
+ 	* config/riscv/riscv.cc (riscv_build_integer_1): Don't special case
+ 	1<<31 for 32bits as it is already handled.
+ 	Call trunc_int_for_mode on the upper part after the subtraction.
+ 	(riscv_move_integer): Call trunc_int_for_mode before generating
+ 	the integer just make sure the constant has been sign extended
+ 	corectly.
+ 	(riscv_emit_int_compare): Call trunc_int_for_mode after doing the
+ 	addition for the new rhs.
+ 	* config/riscv/riscv.h (SINGLE_BIT_MASK_OPERAND): If !TARGET64BIT,
+ 	then mask off the upper 32bits of the HWI as it will be sign extended.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/constraints.md (DsS): New constraint.
+ 	(DsD): New constraint.
+ 	* config/riscv/iterators.md (shiftm1c): New iterator.
+ 	* config/riscv/bitmanip.md (*bset<mode>_mask):
+ 	Use shiftm1c.
+ 	(*bset<mode>_1_mask): Likewise.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/constraints.md (Ds3): New constraint.
+ 	* config/riscv/predicates.md (imm123_operand): New predicate.
+ 	* config/riscv/bitmanip.md (*shNadd): Use Ds3 and imm123_operand.
+ 	(*shNadduw): Likewise.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_print_operand):
+ 	Handle '~'.
+ 	(riscv_print_operand_punct_valid_p): New function
+ 	(TARGET_PRINT_OPERAND_PUNCT_VALID_P): Define.
+ 	* config/riscv/bitmanip.md (<bitmanip_optab>si2/clz_ctz_pcnt):
+ 	Use %~ instead of conditional the pattern on TARGET_64BIT.
+ 	(rotrsi3): Likewise.
+ 	(rotlsi3): Likewise.
+ 	* config/riscv/riscv.md: Add ~ to the list of modifiers.
+ 	(addsi3): Use %~ instead of conditional the pattern on TARGET_64BIT.
+ 	(subsi3): Likewise.
+ 	(negsi2): Likewise.
+ 	(mulsi3): Likewise.
+ 	(optab>si3/any_div): Likewise.
+ 	(*add<mode>hi3): Likewise.
+ 	(<optab>si3/any_shift): Likewise.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_print_operand): Make a mention to
+ 	keep the list in riscv.md in sync with this list.
+ 	* config/riscv/riscv.md: Add list of modifiers as comments.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/sync.md (any_atomic, atomic_optab): Move to ...
+ 	* config/riscv/iterators.md: Here.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/bitmanip.md
+ 	(bitmanip_bitwise, bitmanip_minmax, clz_ctz_pcna,
+ 	tbitmanip_optab, bitmanip_insn, shiftm1): Move to ...
+ 	* config/riscv/iterators.md: Here.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/riscv.md (GPR): Move to new file.
+ 	(P, X, BR): Likewise.
+ 	(MOVE32, MOVE64, SHORT): Likewise.
+ 	(HISI, SUPERQI, SUBX): Likewise.
+ 	(ANYI, ANYF, SOFTF): Likewise.
+ 	(size, load, default_load): Likewise.
+ 	(softload, store, softstore): Likewise.
+ 	(reg, fmt, ifmt, amo): Likewise.
+ 	(UNITMODE, HALFMODE): Likewise.
+ 	(RINT, rint_pattern, rint_rm): Likewise.
+ 	(QUIET_COMPARISON, quiet_pattern, QUIET_PATTERN): Likewise.
+ 	(any_extend, any_shiftrt, any_shift): Likewise.
+ 	(any_bitwise): Likewise.
+ 	(any_div, any_mod): Likewise.
+ 	(any_gt, any_ge, any_lt, any_le): Likewise.
+ 	(u, su): Likewise.
+ 	(optab, insn): Likewise.
+ 	* config/riscv/iterators.md: New file.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/106601
+ 	* config/riscv/bitmanip.md (bswaphi2): New pattern.
+ 
+ 2022-08-24  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/106600
+ 	* config/riscv/bitmanip.md (bswap<mode>2): Remove
+ 	condition on TARGET_64BIT as X is already conditional there.
+ 
+ 2022-08-24  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* tree.cc (build_real): Give DFP dconst0 the minimum quantum
+ 	exponent for the type.
+ 
+ 2022-08-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR target/106733
+ 	* config/bpf/bpf.cc (bpf_legitimate_address_p): Recognize integer
+ 	constants as legitimate addresses for functions.
+ 	(bpf_small_register_classes_for_mode_p): Define target hook.
+ 
+ 2022-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc: Move predicate normalization
+ 	after the comment documenting it.
+ 
+ 2022-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.h (predicate): Split out
+ 	non-predicate related functionality into ..
+ 	(uninit_analysis): .. this new class.
+ 	* gimple-predicate-analysis.cc: Refactor into two classes.
+ 	* tree-ssa-uninit.cc (find_uninit_use): Use uninit_analysis.
+ 
+ 2022-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (predicate::use_cannot_happen):
+ 	Do simple_control_dep_chain only up to cd_root, add the PHI
+ 	operand edge to the chains like init_from_phi_def does.
+ 	(predicate::is_use_guarded): Speedup early out, avoid half-way
+ 	initializing the PHI def predicate.
+ 
+ 2022-08-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/106721
+ 	* config/i386/sse.md (shuffletype): Add V32BF, V16BF and V8BF entries.
+ 	Change V32HF, V16HF and V8HF entries from "f" to "i".
+ 	(iptr): Add V32BF, V16BF, V8BF and BF entries.
+ 	(i128vldq): Add V16HF and V16BF entries.
+ 	(avx512er_vmrcp28<mode><mask_name><round_saeonly_name>): Fix typo,
+ 	mask_opernad3 -> mask_operand3.
+ 
+ 2022-08-24  Martin Liska  <mliska@suse.cz>
+ 	    Jørgen Kvalsvik  <j@lambda.is>
+ 
+ 	* gcov.cc (add_line_counts): Add group functions to coverage
+ 	summary.
+ 	(accumulate_line_counts): Similarly for files.
+ 
+ 2022-08-24  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/genopts/loongarch-strings: Support code model medium.
+ 	* config/loongarch/genopts/loongarch.opt.in: Likewise.
+ 	* config/loongarch/loongarch-def.c: Likewise.
+ 	* config/loongarch/loongarch-def.h (CMODEL_LARGE): Likewise.
+ 	(CMODEL_EXTREME): Likewise.
+ 	(N_CMODEL_TYPES): Likewise.
+ 	(CMODEL_MEDIUM): Likewise.
+ 	* config/loongarch/loongarch-opts.cc: Likewise.
+ 	* config/loongarch/loongarch-opts.h (TARGET_CMODEL_MEDIUM): Likewise.
+ 	* config/loongarch/loongarch-str.h (STR_CMODEL_MEDIUM): Likewise.
+ 	* config/loongarch/loongarch.cc (loongarch_call_tls_get_addr):
+ 	Tls symbol Loading support medium mode.
+ 	(loongarch_legitimize_call_address): When medium mode, make a symbolic
+ 	jump with two instructions.
+ 	(loongarch_option_override_internal): Support medium.
+ 	* config/loongarch/loongarch.md (@pcalau12i<mode>): New template.
+ 	(@sibcall_internal_1<mode>): New function call templates added to support
+ 	medium mode.
+ 	(@sibcall_value_internal_1<mode>): Likewise.
+ 	(@sibcall_value_multiple_internal_1<mode>): Likewise.
+ 	(@call_internal_1<mode>): Likewise.
+ 	(@call_value_internal_1<mode>): Likewise.
+ 	(@call_value_multiple_internal_1<mode>): Likewise.
+ 	* config/loongarch/loongarch.opt: Support medium.
+ 	* config/loongarch/predicates.md: Add processing about medium mode.
+ 	* doc/invoke.texi: Document for '-mcmodel=medium'.
+ 
+ 2022-08-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (predicate::use_cannot_happen):
+ 	Start the compute_control_dep_chain walk from the immediate
+ 	dominator of the PHI.
+ 
+ 2022-08-23  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/106714
+ 	* config/i386/amxtileintrin.h (_tile_loadd_internal): Cast to
+ 	__PTRDIFF_TYPE__.
+ 	(_tile_stream_loadd_internal): Likewise.
+ 	(_tile_stored_internal): Likewise.
+ 
+ 2022-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106722
+ 	* gimple-predicate-analysis.h (MAX_NUM_CHAINS, MAX_CHAIN_LEN,
+ 	MAX_POSTDOM_CHECK, MAX_SWITCH_CASES): Move ...
+ 	* gimple-predicate-analysis.cc: ... here and document.
+ 	(simple_control_dep_chain): New function, factored from
+ 	predicate::use_cannot_happen.
+ 	(predicate::use_cannot_happen): Adjust.
+ 	(predicate::predicate): Use simple_control_dep_chain as fallback.
+ 
+ 2022-08-23  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (foperator_equal::op1_range): Set range to
+ 	range of op2.
+ 
+ 2022-08-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (is_loop_exit): Split out
+ 	from ...
+ 	(is_non_loop_exit_postdominating): ... here.  Remove after
+ 	inlining ...
+ 	(find_control_equiv_block): ... here.
+ 	(compute_control_dep_chain): ... and here.
+ 	(predicate::is_use_guarded): Do not excempt loop exits
+ 	from short-cutting the case of the use post-dominating the
+ 	PHI definition.
+ 
+ 2022-08-23  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106687
+ 	* range-op.cc (operator_minus::lhs_op1_relation): Return VREL_LE
+ 	for the VREL_GT case as well.
+ 
+ 2022-08-22  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.md (pru_<code>di3): New alternative for
+ 	two operands but without earlyclobber.
+ 
+ 2022-08-22  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* config/pru/pru.md (prumov<mode>, mov<mode>): Add
+ 	variants for loading -1 consts.
+ 
+ 2022-08-22  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	PR target/106564
+ 	* config/pru/constraints.md (Um): New constraint for -1.
+ 	(Uf): New constraint for IOR fill-bytes constants.
+ 	(Uz): New constraint for AND zero-bytes constants.
+ 	* config/pru/predicates.md (const_fillbytes_operand): New
+ 	predicate for IOR fill-bytes constants.
+ 	(const_zerobytes_operand): New predicate for AND zero-bytes
+ 	constants.
+ 	* config/pru/pru-protos.h (pru_output_sign_extend): Remove.
+ 	(struct pru_byterange): New struct to describe a byte range.
+ 	(pru_calc_byterange): New declaration.
+ 	* config/pru/pru.cc (pru_rtx_costs): Add penalty for
+ 	64-bit zero-extend.
+ 	(pru_output_sign_extend): Remove.
+ 	(pru_calc_byterange): New helper function to extract byte
+ 	range info from a constant.
+ 	(pru_print_operand): Remove 'y' and 'z' print modifiers.
+ 	* config/pru/pru.md (zero_extendqidi2): New pattern.
+ 	(zero_extendhidi2): New pattern.
+ 	(zero_extendsidi2): New pattern.
+ 	(extend<EQS0:mode><EQD:mode>2): Rewrite as an expand.
+ 	(@pru_ior_fillbytes<mode>): New pattern.
+ 	(@pru_and_zerobytes<mode>): New pattern.
+ 	(<code>di3): Rewrite as an expand and handle ZERO and FILL
+ 	special cases.
+ 	(pru_<code>di3): New name for <code>di3.
+ 	(@cbranch_qbbx_const_<BIT_TEST:code><HIDI:mode>): New pattern to
+ 	handle bit-test for 64-bit registers.
+ 
+ 2022-08-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.h (predicate::m_use_expr): Remove.
+ 	(predicate::def_expr): Likewise.
+ 	(predicate::use_expr): Likewise.
+ 	(predicate::expr): Likewise.
+ 	* gimple-predicate-analysis.cc (predicate::def_expr): Remove.
+ 	(predicate::use_expr): Likewise.
+ 	(predicate::expr): Likewise.
+ 	(predicate::is_use_guarded): Do not build m_use_expr.
+ 
+ 2022-08-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/106700
+ 	* configure.ac: Detect O_NONBLOCK flag for open.
+ 	* config.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* opts-common.cc (jobserver_info::connect): Set is_connected
+ 	properly based on O_NONBLOCK.
+ 	* opts-jobserver.h (struct jobserver_info): Add is_connected
+ 	member variable.
+ 
+ 2022-08-22  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* simplify-rtx.cc (test_vector_subregs_fore_back): Make first value
+ 	and repeat value different.
+ 
+ 2022-08-22  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR lto/106686
+ 	* lto-wrapper.cc (free_array_of_ptrs): Move before tool_cleanup.
+ 	(tool_cleanup): Unlink offload_names.
+ 	(compile_offload_image): Take filename argument to set it early.
+ 	(compile_images_for_offload_targets): Update call; set
+ 	offload_names to NULL after freeing the array.
+ 
+ 2022-08-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105937
+ 	* tree-ssa-uninit.cc (find_uninit_use): Do not queue PHIs
+ 	on backedges.
+ 	(execute_late_warn_uninitialized): Mark backedges.
+ 
+ 2022-08-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-predicate-analysis.cc (predicate::use_cannot_happen):
+ 	If the use is guarded with multiple predicate paths compute
+ 	the predicates intersection before going forward.  When
+ 	compute_control_dep_chain wasn't able to come up with at
+ 	least one path from function entry to the PHI edge compute
+ 	a conservative sparse path instead.
+ 
+ 2022-08-20  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-opts.cc: Allow cmodel to be extreme.
+ 	* config/loongarch/loongarch.cc (loongarch_call_tls_get_addr):
+ 	Add extreme support for TLS GD and LD types.
+ 	(loongarch_legitimize_tls_address): Add extreme support for TLS LE
+ 	and IE.
+ 	(loongarch_split_symbol): When compiling with -mcmodel=extreme,
+ 	the symbol address will be obtained through five instructions.
+ 	(loongarch_print_operand_reloc): Add support.
+ 	(loongarch_print_operand): Add support.
+ 	(loongarch_print_operand_address): Add support.
+ 	(loongarch_option_override_internal): Set '-mcmodel=extreme' option
+ 	incompatible with '-mno-explicit-relocs'.
+ 	* config/loongarch/loongarch.md (@lui_l_hi20<mode>):
+ 	Loads bits 12-31 of data into registers.
+ 	(lui_h_lo20): Load bits 32-51 of the data and spell bits 0-31 of
+ 	the source register.
+ 	(lui_h_hi12): Load bits 52-63 of the data and spell bits 0-51 of
+ 	the source register.
+ 	* config/loongarch/predicates.md: Symbols need to be decomposed
+ 	when defining the macro TARGET_CMODEL_EXTREME
+ 	* doc/invoke.texi: Modify the description information of cmodel in the document.
+ 	Document -W[no-]extreme-plt.
+ 
+ 2022-08-19  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.cc (main): Add omp_requires_file and dbgobj to
+ 	files_to_cleanup.
+ 	* config/i386/intelmic-mkoffload.cc (prepare_target_image): Add
+ 	omp_requires_file to temp_files.
+ 	* config/nvptx/mkoffload.cc (omp_requires_file): New global static var.
+ 	(main): Remove local omp_requires_file var.
+ 	(tool_cleanup): Handle omp_requires_file.
+ 
+ 2022-08-19  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-path.cc (path_range_query::path_range_query):
+ 	Remove constructor that takes edge.
+ 	* gimple-range-path.h (class path_range_query): Same.
+ 	* tree-ssa-loop-ch.cc (edge_range_query): New.
+ 	(entry_loop_condition_is_static): Call edge_range_query.
+ 
+ 2022-08-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.h
+ 	(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS):
+ 	Add new register class "ISC_REGS".
+ 	* config/xtensa/constraints.md (c): Add new register constraint.
+ 	* config/xtensa/xtensa.md (define_constants): Remove "A11_REG".
+ 	(sibcall_internal, sibcall_value_internal):
+ 	Change to use the new register constraint, and remove two split
+ 	patterns for fixups that are no longer needed.
+ 
+ 2022-08-18  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md (*mov<GPR:mode><X:mode>cc): Fix output
+ 	pattern formatting.
+ 
+ 2022-08-18  Tim Lange  <mail@tim-lange.me>
+ 
+ 	PR analyzer/106181
+ 	* doc/invoke.texi: Add Wanalyzer-imprecise-fp-arithmetic.
+ 
+ 2022-08-18  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-path.cc (path_range_query::path_range_query): Add
+ 	various constructors to take a path.
+ 	(path_range_query::~path_range_query): Remove m_alloced_ranger.
+ 	(path_range_query::range_on_path_entry): Adjust for m_ranger being
+ 	a reference.
+ 	(path_range_query::set_path): Rename to...
+ 	(path_range_query::reset_path): ...this and call compute_ranges.
+ 	(path_range_query::ssa_range_in_phi): Adjust for m_ranger
+ 	reference.
+ 	(path_range_query::range_defined_in_block): Same.
+ 	(path_range_query::compute_ranges_in_block): Same.
+ 	(path_range_query::adjust_for_non_null_uses): Same.
+ 	(path_range_query::compute_exit_dependencies): Use m_path instead
+ 	of argument.
+ 	(path_range_query::compute_ranges): Remove path argument.
+ 	(path_range_query::range_of_stmt): Adjust for m_ranger reference.
+ 	(path_range_query::compute_outgoing_relations): Same.
+ 	* gimple-range-path.h (class path_range_query): Add various
+ 	constructors.
+ 	Make compute_ranges and compute_exit_dependencies private.
+ 	Rename set_path to reset_path.
+ 	Make m_ranger a reference.
+ 	Remove m_alloced_ranger.
+ 	* tree-ssa-dom.cc (pass_dominator::execute): Adjust constructor to
+ 	path_range_query.
+ 	* tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Take a
+ 	ranger and instantiate a new path_range_query every time.
+ 	(ch_base::copy_headers): Pass ranger instead of path_range_query.
+ 	* tree-ssa-threadbackward.cc (class back_threader): Remove m_solver.
+ 	(back_threader::~back_threader): Remove m_solver.
+ 	(back_threader::find_taken_edge_switch): Adjust for m_ranger
+ 	reference.
+ 	(back_threader::find_taken_edge_cond): Same.
+ 	(back_threader::dump): Remove m_solver.
+ 	(back_threader::back_threader): Move verify_marked_backedges
+ 	here from the path_range_query constructor.
+ 	* tree-ssa-threadedge.cc (hybrid_jt_simplifier::simplify): Move
+ 	some code from compute_ranges_from_state here.
+ 	(hybrid_jt_simplifier::compute_ranges_from_state): Rename...
+ 	(hybrid_jt_simplifier::compute_exit_dependencies): ...to this.
+ 	* tree-ssa-threadedge.h (class hybrid_jt_simplifier): Rename
+ 	compute_ranges_from_state to compute_exit_dependencies.
+ 	Remove m_path.
+ 
+ 2022-08-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106617
+ 	* match.pd ((a ? b : c) > d -> a ? (b > d) : (c > d)): Fix
+ 	guard, disable on GENERIC to not cause quadratic behavior
+ 	with the fold-const.cc implementation and the use of !
+ 
+ 2022-08-18  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR gcov-profile/106659
+ 	* gcov-dump.cc (INCLUDE_VECTOR): Include vector.h with
+ 	INCLUDE_VECTOR.
+ 
+ 2022-08-18  konglin1  <lingling.kong@intel.com>
+ 
+ 	* config/i386/i386-expand.cc (ix86_expand_sse_movcc): Handle vector
+ 	BFmode.
+ 	(ix86_expand_vector_init_duplicate): Support vector BFmode.
+ 	(ix86_expand_vector_init_one_nonzero): Ditto.
+ 	(ix86_expand_vector_init_one_var): Ditto.
+ 	(ix86_expand_vector_init_concat): Ditto.
+ 	(ix86_expand_vector_init_interleave): Ditto.
+ 	(ix86_expand_vector_init_general): Ditto.
+ 	(ix86_expand_vector_init): Ditto.
+ 	(ix86_expand_vector_set_var): Ditto.
+ 	(ix86_expand_vector_set): Ditto.
+ 	(ix86_expand_vector_extract): Ditto.
+ 	* config/i386/i386.cc (classify_argument): Add BF vector modes.
+ 	(function_arg_64): Ditto.
+ 	(ix86_gimplify_va_arg): Ditto.
+ 	(ix86_get_ssemov): Ditto.
+ 	* config/i386/i386.h (VALID_AVX256_REG_MODE): Add BF vector modes.
+ 	(VALID_AVX512F_REG_MODE): Ditto.
+ 	(host_detect_local_cpu): Ditto.
+ 	(VALID_SSE2_REG_MODE): Ditto.
+ 	* config/i386/i386.md: Add BF vector modes.
+ 	(MODE_SIZE): Ditto.
+ 	(ssemodesuffix): Add bf suffix for BF vector modes.
+ 	(ssevecmode): Ditto.
+ 	* config/i386/sse.md (VMOVE): Adjust for BF vector modes.
+ 	(VI12HFBF_AVX512VL): Ditto.
+ 	(V_256_512): Ditto.
+ 	(VF_AVX512HFBF16): Ditto.
+ 	(VF_AVX512BWHFBF16): Ditto.
+ 	(VIHFBF): Ditto.
+ 	(avx512): Ditto.
+ 	(VIHFBF_256): Ditto.
+ 	(VIHFBF_AVX512BW): Ditto.
+ 	(VI2F_256_512):Ditto.
+ 	(V8_128):Ditto.
+ 	(V16_256): Ditto.
+ 	(V32_512): Ditto.
+ 	(sseinsnmode): Ditto.
+ 	(sseconstm1): Ditto.
+ 	(sseintmodesuffix): New mode_attr.
+ 	(avx512fmaskmode): Ditto.
+ 	(avx512fmaskmodelower): Ditto.
+ 	(ssedoublevecmode): Ditto.
+ 	(ssehalfvecmode): Ditto.
+ 	(ssehalfvecmodelower): Ditto.
+ 	(ssescalarmode): Add vector BFmode mapping.
+ 	(ssescalarmodelower): Ditto.
+ 	(ssexmmmode): Ditto.
+ 	(ternlogsuffix): Ditto.
+ 	(ssescalarsize): Ditto.
+ 	(sseintprefix): Ditto.
+ 	(i128): Ditto.
+ 	(xtg_mode): Ditto.
+ 	(bcstscalarsuff): Ditto.
+ 	(<avx512>_blendm<mode>): New define_insn for BFmode.
+ 	(<avx512>_store<mode>_mask): Ditto.
+ 	(vcond_mask_<mode><avx512fmaskmodelower>): Ditto.
+ 	(vec_set<mode>_0): New define_insn for BF vector set.
+ 	(V8BFH_128): New mode_iterator for BFmode.
+ 	(avx512fp16_mov<mode>): Ditto.
+ 	(vec_set<mode>): New define_insn for BF vector set.
+ 	(@vec_extract_hi_<mode>): Ditto.
+ 	(@vec_extract_lo_<mode>): Ditto.
+ 	(vec_set_hi_<mode>): Ditto.
+ 	(vec_set_lo_<mode>): Ditto.
+ 	(*vec_extract<mode>_0): New define_insn_and_split for BF
+ 	vector extract.
+ 	(*vec_extract<mode>): New define_insn.
+ 	(VEC_EXTRACT_MODE): Add BF vector modes.
+ 	(PINSR_MODE): Add V8BF.
+ 	(sse2p4_1): Ditto.
+ 	(pinsr_evex_isa): Ditto.
+ 	(<sse2p4_1>_pinsr<ssemodesuffix>): Adjust to support
+ 	insert for V8BFmode.
+ 	(pbroadcast_evex_isa): Add BF vector modes.
+ 	(AVX2_VEC_DUP_MODE): Ditto.
+ 	(VEC_INIT_MODE): Ditto.
+ 	(VEC_INIT_HALF_MODE): Ditto.
+ 	(avx2_pbroadcast<mode>): Adjust to support BF vector mode
+ 	broadcast.
+ 	(avx2_pbroadcast<mode>_1): Ditto.
+ 	(<avx512>_vec_dup<mode>_1): Ditto.
+ 	(<mask_codefor><avx512>_vec_dup_gpr<mode><mask_name>):
+ 	Ditto.
+ 
+ 2022-08-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-08-18  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	PR target/103109
+ 	* config/rs6000/rs6000.md (<u>maddditi4): New pattern for multiply-add.
+ 	(<u>madddi4_highpart): New.
+ 	(<u>madddi4_highpart_le): New.
+ 
+ 2022-08-18  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-path.cc
+ 	(path_range_query::compute_exit_dependencies): Use
+ 	gimple_range_ssa_names.
+ 
+ 2022-08-18  zhongjuzhe  <juzhe.zhong@rivai.ai>
+ 
+ 	* config/riscv/predicates.md: Adjust runtime invariant.
+ 	* config/riscv/riscv-modes.def (MAX_BITSIZE_MODE_ANY_MODE): New.
+ 	(NUM_POLY_INT_COEFFS): New.
+ 	* config/riscv/riscv-protos.h (riscv_initial_elimination_offset):Adjust
+ 	runtime invariant.
+ 	* config/riscv/riscv-sr.cc (riscv_remove_unneeded_save_restore_calls):
+ 	Adjust runtime invariant.
+ 	* config/riscv/riscv.cc (struct riscv_frame_info): Adjust runtime
+ 	invariant.
+ 	(enum riscv_microarchitecture_type): Ditto.
+ 	(riscv_valid_offset_p): Ditto.
+ 	(riscv_valid_lo_sum_p): Ditto.
+ 	(riscv_address_insns): Ditto.
+ 	(riscv_load_store_insns): Ditto.
+ 	(riscv_legitimize_move): Ditto.
+ 	(riscv_binary_cost): Ditto.
+ 	(riscv_rtx_costs): Ditto.
+ 	(riscv_output_move): Ditto.
+ 	(riscv_extend_comparands): Ditto.
+ 	(riscv_flatten_aggregate_field): Ditto.
+ 	(riscv_get_arg_info): Ditto.
+ 	(riscv_pass_by_reference): Ditto.
+ 	(riscv_elf_select_rtx_section): Ditto.
+ 	(riscv_stack_align): Ditto.
+ 	(riscv_compute_frame_info): Ditto.
+ 	(riscv_initial_elimination_offset): Ditto.
+ 	(riscv_set_return_address): Ditto.
+ 	(riscv_for_each_saved_reg): Ditto.
+ 	(riscv_first_stack_step): Ditto.
+ 	(riscv_expand_prologue): Ditto.
+ 	(riscv_expand_epilogue): Ditto.
+ 	(riscv_can_use_return_insn): Ditto.
+ 	(riscv_secondary_memory_needed): Ditto.
+ 	(riscv_hard_regno_nregs): Ditto.
+ 	(riscv_convert_vector_bits): New.
+ 	(riscv_option_override): Adjust runtime invariant.
+ 	(riscv_promote_function_mode): Ditto.
+ 	* config/riscv/riscv.h (POLY_SMALL_OPERAND_P): New.
+ 	(BITS_PER_RISCV_VECTOR): New.
+ 	(BYTES_PER_RISCV_VECTOR): New.
+ 	* config/riscv/riscv.md: Adjust runtime invariant.
+ 
+ 2022-08-18  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_call_tls_get_addr):
+ 	Get __tls_get_addr address through got table when disable plt.
+ 
+ 2022-08-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_expand_prologue):
+ 	Use an "addmi" machine instruction for updating the stack pointer
+ 	rather than addition/subtraction via hard register A9, if the amount
+ 	of change satisfies the literal value conditions of that instruction
+ 	when the CALL0 ABI is used.
+ 	(xtensa_expand_epilogue): Ditto.
+ 	And also inhibit the stack pointer addition of constant zero.
+ 
+ 2022-08-17  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106640
+ 	* config/i386/i386-features.cc
+ 	(timde_scalar_chain::compute_convert_gain): Replace incorrect use
+ 	of XINT with INTVAL (XEXP (src, 1)).
+ 
+ 2022-08-17  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-path.cc
+ 	(path_range_query::compute_ranges_in_block): Remove
+ 	set_root_oracle call.
+ 	(path_range_query::compute_ranges): Pass ranger oracle to
+ 	reset_path.
+ 	* value-relation.cc (path_oracle::reset_path): Set root oracle.
+ 	* value-relation.h (path_oracle::reset_path): Add root oracle
+ 	argument.
+ 
+ 2022-08-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/89780
+ 	* diagnostic-spec.cc (nowarn_spec_t::nowarn_spec_t): Handle
+ 	OPT_Wpessimizing_move and OPT_Wredundant_move.
+ 	* diagnostic-spec.h (nowarn_spec_t): Add NW_REDUNDANT enumerator.
+ 
+ 2022-08-17  Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/46539
+ 	* common.opt (static-libquadmath): New option.
+ 	* gcc.cc (driver_handle_option): Always accept -static-libquadmath.
+ 	* config/darwin.h (LINK_SPEC): Handle -static-libquadmath.
+ 
+ 2022-08-17  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* lto-cgraph.cc (input_offload_tables): Improve requires diagnostic
+ 	when filenames come out identically.
+ 
+ 2022-08-17  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/106548
+ 	* omp-low.cc (lower_rec_input_clauses): Use build_outer_var_ref
+ 	for 'simd' linear-step values that are variable.
+ 
+ 2022-08-17  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	PR c++/104493
+ 	* gimplify.cc (omp_notice_variable): Call omp_mappable_type
+ 	instead of removed langhook.
+ 	* omp-general.h (omp_mappable_type): New prototype.
+ 	* omp-general.cc (omp_mappable_type):  New; moved from ...
+ 	* langhooks.cc (lhd_omp_mappable_type): ... here.
+ 	* langhooks-def.h (lhd_omp_mappable_type,
+ 	LANG_HOOKS_OMP_MAPPABLE_TYPE): Remove.
+ 	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Remote the latter.
+ 	* langhooks.h (struct lang_hooks_for_types): Remove
+ 	omp_mappable_type.
+ 
+ 2022-08-17  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config.gcc (arm): Define with_float to hard if target name ends
+ 	with 'hf'.
+ 
+ 2022-08-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-threadbackward.cc
+ 	(back_threader_profitability): Split profitable_path_p
+ 	into possibly_profitable_path_p and itself, keep state
+ 	as new members.
+ 	(back_threader::m_profit): Remove.
+ 	(back_threader::find_paths): Likewise.
+ 	(back_threader::maybe_register_path): Take profitability
+ 	instance as parameter.
+ 	(back_threader::find_paths_to_names): Likewise.  Use
+ 	possibly_profitable_path_p and avoid the path range query
+ 	when the path is currently too large.
+ 	(back_threader::find_paths): Fold into ...
+ 	(back_threader::maybe_thread_block): ... this.
+ 	(get_gimple_control_stmt): Remove.
+ 	(back_threader_profitability::possibly_profitable_path_p):
+ 	Split out from profitable_path_p, do early profitability
+ 	checks.
+ 	(back_threader_profitability::profitable_path_p): Do final
+ 	profitability path after the taken edge has been determined.
+ 
+ 2022-08-17  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (fmax<mode>3): New RTL pattern.
+ 	(fmin<mode>3): Likewise.
+ 
+ 2022-08-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (gimple_range_ssa_names): New.
+ 	* gimple-range-fold.h (gimple_range_ssa_names): New prototype.
+ 	* gimple-range-gori.cc (range_def_chain::get_def_chain): Move
+ 	code to new routine.
+ 
+ 2022-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/106637
+ 	* doc/install.texi: Remove link to www.bullfreeware.com
+ 
+ 2022-08-16  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_implied_info): Add
+ 	zfh and zfhmin.
+ 	(riscv_ext_version_table): Ditto.
+ 	(riscv_ext_flag_table): Ditto.
+ 	* config/riscv/riscv-opts.h (MASK_ZFHMIN): New.
+ 	(MASK_ZFH): Ditto.
+ 	(TARGET_ZFHMIN): Ditto.
+ 	(TARGET_ZFH): Ditto.
+ 	* config/riscv/riscv.cc (riscv_output_move): Handle HFmode move
+ 	for zfh and zfhmin.
+ 	(riscv_emit_float_compare): Handle HFmode.
+ 	* config/riscv/riscv.md (ANYF): Add HF.
+ 	(SOFTF): Add HF.
+ 	(load): Ditto.
+ 	(store): Ditto.
+ 	(truncsfhf2): New.
+ 	(truncdfhf2): Ditto.
+ 	(extendhfsf2): Ditto.
+ 	(extendhfdf2): Ditto.
+ 	(*movhf_hardfloat): Ditto.
+ 	(*movhf_softfloat): Make sure not ZFHMIN.
+ 	* config/riscv/riscv.opt (riscv_zf_subext): New.
+ 
+ 2022-08-16  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/riscv-builtins.cc: include stringpool.h
+ 	(riscv_float16_type_node): New.
+ 	(riscv_init_builtin_types): Ditto.
+ 	(riscv_init_builtins): Call riscv_init_builtin_types.
+ 	* config/riscv/riscv-modes.def (HF): New.
+ 	* config/riscv/riscv.cc (riscv_output_move): Handle HFmode.
+ 	(riscv_mangle_type): New.
+ 	(riscv_scalar_mode_supported_p): Ditto.
+ 	(riscv_libgcc_floating_mode_supported_p): Ditto.
+ 	(riscv_excess_precision): Ditto.
+ 	(riscv_floatn_mode): Ditto.
+ 	(riscv_init_libfuncs): Ditto.
+ 	(TARGET_MANGLE_TYPE): Ditto.
+ 	(TARGET_SCALAR_MODE_SUPPORTED_P): Ditto.
+ 	(TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P): Ditto.
+ 	(TARGET_INIT_LIBFUNCS): Ditto.
+ 	(TARGET_C_EXCESS_PRECISION): Ditto.
+ 	(TARGET_FLOATN_MODE): Ditto.
+ 	* config/riscv/riscv.md (mode): Add HF.
+ 	(softload): Add HF.
+ 	(softstore): Ditto.
+ 	(fmt): Ditto.
+ 	(UNITMODE): Ditto.
+ 	(movhf): New.
+ 	(*movhf_softfloat): New.
+ 
+ 2022-08-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths_to_names):
+ 	Do not walk further if we are leaving the current loop.
+ 
+ 2022-08-16  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR driver/106624
+ 	* gcc.cc (driver::detect_jobserver): Allocate storage xputenv()
+ 	argument using xstrdup().
+ 
+ 2022-08-16  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-path.cc (path_range_query::import_p): Rename to...
+ 	(path_range_query::exit_dependency_p): ...this.
+ 	(path_range_query::dump): Rename imports to exit dependencies.
+ 	(path_range_query::compute_ranges_in_phis): Same.
+ 	(path_range_query::compute_ranges_in_block): Same.
+ 	(path_range_query::adjust_for_non_null_uses): Same.
+ 	(path_range_query::compute_ranges): Same.
+ 	(path_range_query::compute_phi_relations): Same.
+ 	(path_range_query::add_to_imports): Rename to...
+ 	(path_range_query::add_to_exit_dependencies): ...this.
+ 	(path_range_query::compute_imports): Rename to...
+ 	(path_range_query::compute_exit_dependencies): ...this.
+ 	* gimple-range-path.h (class path_range_query): Rename imports to
+ 	exit dependencies.
+ 
+ 2022-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-range-storage.h (class obstack_vrange_allocator): Mark
+ 	the class as final.
+ 	(class ggc_vrange_allocator): Likewise.
+ 
+ 2022-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-range-equiv.h (class value_range_equiv): Add virtual
+ 	destructor.
+ 	* value-range.h: Likewise.
+ 
+ 2022-08-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106630
+ 	* match.pd ((T)(x * CST) -> (T)x * CST): Restrict to
+ 	narrowing conversions.
+ 
+ 2022-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-range-equiv.h (class value_range_equiv):
+ 
+ 2022-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/i386-features.h (class general_scalar_chain): Add
+ 	final override for a method.
+ 	(class timode_scalar_chain): Likewise.
+ 
+ 2022-08-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* doc/invoke.texi (max-jump-thread-paths): Adjust.
+ 
+ 2022-08-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts-common.cc (jobserver_info::connect): Open fifo
+ 	in non-blocking mode.
+ 
+ 2022-08-16  Kewen.Lin  <linkw@gcc.gnu.org>
+ 
+ 	PR target/103353
+ 	* config/rs6000/mma.md (define_expand movoo): Move TARGET_MMA condition
+ 	check to preparation statements and add handlings for !TARGET_MMA.
+ 	(define_expand movxo): Likewise.
+ 
+ 2022-08-16  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/106322
+ 	* tree-vect-stmts.cc (vectorizable_call): Don't allow
+ 	vect_emulated_vector_p type for both vectype_in and vectype_out.
+ 
+ 2022-08-16  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* common/config/xtensa/xtensa-common.cc
+ 	(xtensa_option_optimization_table): Add OPT_fsplit_wide_types_early
+ 	for OPT_LEVELS_ALL in order to restore pre-GCC10 behavior.
+ 
+ 2022-08-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106621
+ 	* value-range.cc (irange::set): Check for POLY_INT_CST early.
+ 
+ 2022-08-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.cc
+ 	(timode_scalar_chain::compute_convert_gain): Provide costs for
+ 	shifts and rotates.
+ 	(timode_scalar_chain::convert_insn): Handle ASHIFTRT, ROTATERT
+ 	and ROTATE just like existing ASHIFT and LSHIFTRT cases.
+ 	(timode_scalar_to_vector_candidate_p): Handle all shifts and
+ 	rotates by integer constants between 0 and 127.
+ 
+ 2022-08-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.cc
+ 	(timode_scalar_chain::compute_convert_gain): Provide gains for
+ 	comparisons against 0/-1, including "*testti" patterns.
+ 
+ 2022-08-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/64992
+ 	PR tree-optimization/98956
+ 	* match.pd (ne (lshift @0 @1) 0): Simplify (X << C) != 0 to X
+ 	when X is zero_one_valued_p and the shift constant C is valid.
+ 	(eq (lshift @0 @1) 0): Likewise, simplify (X << C) == 0 to !X
+ 	when X is zero_one_valued_p and the shift constant C is valid.
+ 
+ 2022-08-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/71343
+ 	* match.pd (op (lshift @0 @1) (lshift @2 @1)): Optimize the
+ 	expression (X<<C) + (Y<<C) to (X+Y)<<C for multiple operators.
+ 	(op (rshift @0 @1) (rshift @2 @1)): Likewise, simplify (X>>C)^(Y>>C)
+ 	to (X^Y)>>C for binary logical operators, AND, IOR and XOR.
+ 
+ 2022-08-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-range-path.cc (range_on_path_entry): Just
+ 	call range_on_entry.
+ 
+ 2022-08-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/106590
+ 	* ifcvt.cc (check_for_cc_cmp_clobbers): New function.
+ 	(noce_convert_multiple_sets_1): If SEQ sets or clobbers any regs
+ 	mentioned in cc_cmp or rev_cc_cmp, don't consider seq2 for any
+ 	further conditional moves.
+ 
+ 2022-08-15  konglin1  <lingling.kong@intel.com>
+ 
+ 	* config/i386/i386-builtin-types.def (BFLOAT16): New primitive type.
+ 	* config/i386/i386-builtins.cc : Support __bf16 type for i386 backend.
+ 	(ix86_register_bf16_builtin_type): New function.
+ 	(ix86_bf16_type_node): New.
+ 	(ix86_bf16_ptr_type_node): Ditto.
+ 	(ix86_init_builtin_types): Add ix86_register_bf16_builtin_type function call.
+ 	* config/i386/i386-modes.def (FLOAT_MODE): Add BFmode.
+ 	(ADJUST_FLOAT_FORMAT): Ditto.
+ 	* config/i386/i386.cc (classify_argument): Handle BFmode.
+ 	(construct_container): Ditto.
+ 	(function_value_32): Return __bf16 by %xmm0.
+ 	(function_value_64): Return __bf16 by SSE register.
+ 	(ix86_output_ssemov): Handle BFmode.
+ 	(ix86_legitimate_constant_p): Disable BFmode constant double.
+ 	(ix86_secondary_reload): Require gpr as intermediate register
+ 	to store __bf16 from sse register when sse4 is not available.
+ 	(ix86_scalar_mode_supported_p): Enable __bf16 under sse2.
+ 	(ix86_mangle_type): Add manlging for __bf16 type.
+ 	(ix86_invalid_conversion): New function for target hook.
+ 	(ix86_invalid_unary_op): Ditto.
+ 	(ix86_invalid_binary_op): Ditto.
+ 	(TARGET_INVALID_CONVERSION): New define for target hook.
+ 	(TARGET_INVALID_UNARY_OP): Ditto.
+ 	(TARGET_INVALID_BINARY_OP): Ditto.
+ 	* config/i386/i386.h (host_detect_local_cpu): Add BFmode.
+ 	* config/i386/i386.md ("mode"): Add BFmode.
+ 	(MODE_SIZE): Ditto.
+ 	(X87MODEFH): Ditto.
+ 	(HFBF): Add new define_mode_iterator.
+ 	(*pushhf_rex64): Change for BFmode.
+ 	(*push<mode>_rex64): Ditto.
+ 	(*pushhf): Ditto.
+ 	(*push<mode>): Ditto.
+ 	(MODESH): Ditto.
+ 	(hfbfconstf): Add new define_mode_attr.
+ 	(*mov<mode>_internal): Add BFmode.
+ 
+ 2022-08-13  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/predicates.md (const_0_to_255_not_mul_8_operand):
+ 	New predicate for values between 0/1 and 255, not multiples of 8.
+ 	* config/i386/sse.md (ashlv1ti3): Delay lowering of logical left
+ 	shifts by constant bit counts.
+ 	(*ashlvti3_internal): New define_insn_and_split that lowers
+ 	logical left shifts by constant bit counts, that aren't multiples
+ 	of 8, before reload.
+ 	(lshrv1ti3): Delay lowering of logical right shifts by constant.
+ 	(*lshrv1ti3_internal): New define_insn_and_split that lowers
+ 	logical right shifts by constant bit counts, that aren't multiples
+ 	of 8, before reload.
+ 	(ashrv1ti3):: Delay lowering of arithmetic right shifts by
+ 	constant bit counts.
+ 	(*ashrv1ti3_internal): New define_insn_and_split that lowers
+ 	arithmetic right shifts by constant bit counts before reload.
+ 	(rotlv1ti3): Delay lowering of rotate left by constant.
+ 	(*rotlv1ti3_internal): New define_insn_and_split that lowers
+ 	rotate left by constant bits counts before reload.
+ 	(rotrv1ti3): Delay lowering of rotate right by constant.
+ 	(*rotrv1ti3_internal): New define_insn_and_split that lowers
+ 	rotate right by constant bits counts before reload.
+ 
+ 2022-08-12  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>
+ 
+ 	* doc/invoke.texi (Arm Options): Document -mcpu=cortex-m55 options.
+ 
+ 2022-08-12  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR middle-end/106057
+ 	* ipa-devirt.cc (type_or_derived_type_possibly_instantiated_p): New
+ 	function.
+ 	(possible_polymorphic_call_targets): Use it.
+ 
+ 2022-08-12  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* tree-ssa-loop.h: Improve comment
+ 
+ 2022-08-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/106506
+ 	* tree-ssa-phiopt.cc (spaceship_replacement): Don't punt for
+ 	is_cast or orig_use_lhs cases if phi_bb has 3 predecessors.
+ 
+ 2022-08-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106593
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths):
+ 	If the imports from the conditional do not satisfy
+ 	gimple_range_ssa_p don't try to thread anything.
+ 
+ 2022-08-12  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/106524
+ 	* config/aarch64/aarch64-sve.md (*fcmuo<mode>_nor_combine,
+ 	*fcmuo<mode>_bic_combine): Don't accept comparisons against zero.
+ 
+ 2022-08-12  Tim Lange  <mail@tim-lange.me>
+ 
+ 	PR analyzer/106000
+ 	* doc/invoke.texi: Add Wanalyzer-out-of-bounds.
+ 
+ 2022-08-12  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/aarch64/aarch64.md: Remove comment
+ 	about MD_INCLUDES as it is out of date and not needed.
+ 
+ 2022-08-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-range-path.cc (path_range_query::compute_imports):
+ 	Restrict walking SSA defs to blocks inside the path.  Track
+ 	the same operands as range_def_chain::get_def_chain does.
+ 
+ 2022-08-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106514
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths_to_names):
+ 	Compute and unwind both m_imports and interesting on the fly during
+ 	path discovery.
+ 	(back_threader::find_paths): Compute the original m_imports
+ 	from just the SSA uses of the exit conditional.  Drop
+ 	handling single_succ_to_potentially_threadable_block.
+ 	* gimple-range-path.cc (path_range_query::ssa_range_in_phi): Handle
+ 	constant PHI arguments without crashing.  Use PHI_ARG_DEF_FROM_EDGE.
+ 
+ 2022-08-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-range-path.h (path_range_query::compute_imports):
+ 	Take path as argument, not the exit block.
+ 	* gimple-range-path.cc (path_range_query::compute_imports):
+ 	Likewise, and adjust, avoiding possibly stale m_path.
+ 	(path_range_query::compute_outgoing_relations): Register
+ 	relations for all conditionals.
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths):
+ 	Adjust.
+ 
+ 2022-08-11  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_init_builtins): Fix the
+ 	oversight on ENB_CELL by simplifying with rs6000_builtin_is_supported.
+ 	(rs6000_expand_builtin): Simplify with rs6000_builtin_is_supported.
+ 
+ 2022-08-11  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-internal.h (rs6000_global_entry_point_needed_p):
+ 	Remove function declaration.
+ 
+ 2022-08-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106513
+ 	* gimple-ssa-store-merging.cc (do_shift_rotate): Use uint64_t
+ 	for head_marker.
+ 
+ 2022-08-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/106328
+ 	* opts-jobserver.h (struct jobserver_info): Add pipefd.
+ 	(jobserver_info::connect): New.
+ 	(jobserver_info::disconnect): Likewise.
+ 	(jobserver_info::get_token): Likewise.
+ 	(jobserver_info::return_token): Likewise.
+ 	* opts-common.cc: Implement the new functions.
+ 
+ 2022-08-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts-jobserver.h: Add one member.
+ 	* opts-common.cc (jobserver_info::jobserver_info): Parse FIFO
+ 	format of --jobserver-auth.
+ 
+ 2022-08-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc.cc (driver::detect_jobserver): Remove and move to
+ 	jobserver.h.
+ 	* lto-wrapper.cc (jobserver_active_p): Likewise.
+ 	(run_gcc): Likewise.
+ 	* opts-jobserver.h: New file.
+ 	* opts-common.cc (jobserver_info::jobserver_info): New function.
+ 
+ 2022-08-09  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.cc (scalar_chain::convert_compare):
+ 	Create new pseudos only when/if needed.  Add support for TEST,
+ 	i.e. (COMPARE (AND x y) (const_int 0)), using UNSPEC_PTEST.
+ 	When broadcasting V2DImode and V4SImode use new pseudo register.
+ 	(timode_scalar_chain::convert_op): Do nothing if operand is
+ 	already V1TImode.  Avoid generating useless SUBREG conversions,
+ 	i.e. (SUBREG:V1TImode (REG:V1TImode) 0).  Handle CONST_WIDE_INT
+ 	in addition to CONST_INT by using CONST_SCALAR_INT_P.
+ 	(convertible_comparison_p): Use CONST_SCALAR_INT_P to match both
+ 	CONST_WIDE_INT and CONST_INT.  Recognize new *testti_doubleword
+ 	pattern as an STV candidate.
+ 	(timode_scalar_to_vector_candidate_p): Allow CONST_SCALAR_INT_P
+ 	operands in binary logic operations.
+ 	* config/i386/i386.cc (ix86_rtx_costs) <case UNSPEC>: Add costs
+ 	for UNSPEC_PTEST; a PTEST that performs an AND has the same cost
+ 	as regular PTEST, i.e. cost->sse_op.
+ 	* config/i386/i386.md (*testti_doubleword): New pre-reload
+ 	define_insn_and_split that recognizes comparison of TI mode AND
+ 	against zero.
+ 	* config/i386/sse.md (*ptest<mode>_and): New pre-reload
+ 	define_insn_and_split that recognizes UNSPEC_PTEST of identical
+ 	AND operands.
+ 
+ 2022-08-09  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/21137
+ 	PR tree-optimization/98954
+ 	* fold-const.cc (fold_binary_loc): Remove optimizations to
+ 	optimize ((X >> C1) & C2) ==/!= 0.
+ 	* match.pd (cmp (bit_and (lshift @0 @1) @2) @3): Remove wi::ctz
+ 	check, and handle all values of INTEGER_CSTs @2 and @3.
+ 	(cmp (bit_and (rshift @0 @1) @2) @3): Likewise, remove wi::clz
+ 	checks, and handle all values of INTEGER_CSTs @2 and @3.
+ 
+ 2022-08-09  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (Static Analyzer Options): Add notes on which
+ 	functions the analyzer has hardcoded knowledge of.
+ 
+ 2022-08-09  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_function_value): Allow vector return values.
+ 	(num_arg_regs): Allow vector arguments.
+ 	(gcn_function_arg): Likewise.
+ 	(gcn_function_arg_advance): Likewise.
+ 	(gcn_arg_partial_bytes): Likewise.
+ 	(gcn_return_in_memory): Likewise.
+ 	(gcn_expand_epilogue): Get return value from v8.
+ 	* config/gcn/gcn.h (RETURN_VALUE_REG): Set to v8.
+ 	(FIRST_PARM_REG): USE FIRST_SGPR_REG for clarity.
+ 	(FIRST_VPARM_REG): New.
+ 	(FUNCTION_ARG_REGNO_P): Allow vector parameters.
+ 	(struct gcn_args): Add vnum field.
+ 	(LIBCALL_VALUE): All vector return values.
+ 	* config/gcn/gcn.md (gcn_call_value): Add vector constraints.
+ 	(gcn_call_value_indirect): Likewise.
+ 
+ 2022-08-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* omp-expand.cc (expand_omp_atomic_load): Emit GIMPLE
+ 	directly.  Avoid update_ssa when in SSA form.
+ 	(expand_omp_atomic_store): Likewise.
+ 	(expand_omp_atomic_fetch_op): Avoid update_ssa when in SSA
+ 	form.
+ 	(expand_omp_atomic_pipeline): Likewise.
+ 	(expand_omp_atomic_mutex): Likewise.
+ 	* tree-parloops.cc (gen_parallel_loop): Use
+ 	TODO_update_ssa_no_phi after loop_version.
+ 
+ 2022-08-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* doc/invoke.texi (max-fsm-thread-length): Remove.
+ 	* params.opt (max-fsm-thread-length): Likewise.
+ 	* tree-ssa-threadbackward.cc
+ 	(back_threader_profitability::profitable_path_p): Do not
+ 	check max-fsm-thread-length.
+ 
+ 2022-08-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106514
+ 	* params.opt (max-jump-thread-paths): New.
+ 	* doc/invoke.texi (max-jump-thread-paths): Document.
+ 	* tree-ssa-threadbackward.cc (back_threader::find_paths_to_names):
+ 	Honor max-jump-thread-paths, take overall_path argument.
+ 	(back_threader::find_paths): Pass 1 as initial overall_path.
+ 
+ 2022-08-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR middle-end/106492
+ 	* omp-low.cc (lower_rec_input_clauses): Add missing folding
+ 	to data type of linear-clause list item.
+ 
+ 2022-08-08  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106556
+ 	* gimple-range-gori.cc (gori_compute::condexpr_adjust): Use the
+ 	type of the cond_expr operands being evaluted.
+ 
+ 2022-08-08  Tom Honermann  <tom@honermann.net>
+ 
+ 	* ginclude/stdatomic.h (atomic_char8_t,
+ 	ATOMIC_CHAR8_T_LOCK_FREE): New typedef and macro.
+ 
+ 2022-08-08  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR middle-end/103645
+ 	* gimplify.cc (gimplify_init_constructor): Don't build/add
+ 	gimple assignment of an empty type.
+ 
+ 2022-08-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/106540
+ 	PR lto/106334
+ 	* dwarf2out.cc (dwarf2out_register_external_die): Restore
+ 	original assert.
+ 	* lto-streamer-in.cc (lto_read_tree_1): Use lto_input_tree_1
+ 	to input DECL_INITIAL, avoiding to commit drefs.
+ 
+ 2022-08-07  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (*cmp<dwi>_doubleword): Change predicate
+ 	for x86_64_hilo_general_operand to general operand.  Call
+ 	force_reg on parts that are not x86_64_immediate_operand.
+ 
+ 2022-08-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/105947
+ 	* doc/invoke.texi: Add -Wanalyzer-jump-through-null.
+ 
+ 2022-08-05  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* expmed.cc (emit_store_flag_1): Move code to expand double word
+ 	equality and inequality against zero or -1, using word operations,
+ 	to after trying to use the backend's cstore<mode>4 optab/expander.
+ 
+ 2022-08-05  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/106534
+ 	* tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Guard the
+ 	value_replacement and store_elim from diamonds.
+ 
+ 2022-08-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-threadbackward.cc (back_threader::maybe_register_path):
+ 	Check whether the registry register_path rejected the path.
+ 	(back_threader_registry::register_path): Return whether
+ 	register_jump_thread succeeded.
+ 
+ 2022-08-05  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/106514
+ 	* value-range.cc (unsupported_range::unsupported_range): Move...
+ 	* value-range.h (unsupported_range::unsupported_range): ...here.
+ 	(unsupported_range::set_undefined): New.
+ 
+ 2022-08-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106533
+ 	* tree-loop-distribution.cc (loop_distribution::execute): Continue
+ 	analyzing the inner loops when find_seed_stmts_for_distribution
+ 	fails.
+ 
+ 2022-08-05  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* config/riscv/predicates.md (splittable_const_int_operand):
+ 	Remove the check for TARGET_64BIT for single bit const values.
+ 
+ 2022-08-04  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106514
+ 	* gimple-range-path.cc (path_range_query::compute_ranges_in_block):
+ 	Use EXECUTE_IF_AND_IN_BITMAP to loop over 2 bitmaps.
+ 
+ 2022-08-04  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* match.pd: New bit_not rule.
+ 
+ 2022-08-04  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR middle-end/106519
+ 	* tree-ssa-phiopt.cc (tree_ssa_phiopt_worker): Check final phi edge for
+ 	diamond shapes.
+ 
+ 2022-08-04  Sam Feifer  <sfeifer@redhat.com>
+ 
+ 	PR tree-optimization/106243
+ 	* match.pd (-x & 1): New simplification.
+ 
+ 2022-08-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106521
+ 	* gimple-loop-jam.cc (tree_loop_unroll_and_jam): Perform
+ 	CFG cleanup manually before rewriting into LC SSA.
+ 
+ 2022-08-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-threadbackward.cc (populate_worklist): Remove.
+ 	(back_threader::resolve_phi): Likewise.
+ 	(back_threader::find_paths_to_names): Rewrite greedy search.
+ 
+ 2022-08-04  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/vector.md (V_HW_FT): New iterator.
+ 	* config/s390/vx-builtins.md (vsel<mode>): Use V_HW_FT instead
+ 	of V_HW.
+ 
+ 2022-08-03   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Remove code
+ 	setting -mblock-ops-vector-pair.
+ 
+ 2022-08-03  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106514
+ 	* value-relation.cc (path_oracle::killing_def) Do not walk the
+ 	equivalence set clearing bits.
+ 
+ 2022-08-03  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* tree-ssa-phiopt.cc (minmax_replacement): Optionally search for the phi
+ 	sequence of a three-way conditional.
+ 	(replace_phi_edge_with_variable): Support diamonds.
+ 	(tree_ssa_phiopt_worker): Detect diamond phi structure for three-way
+ 	min/max.
+ 	(strip_bit_not, invert_minmax_code): New.
+ 
+ 2022-08-03  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR rtl-optimization/106187
+ 	* alias.h (mems_same_for_tbaa_p): Declare.
+ 	* alias.cc (mems_same_for_tbaa_p): New function.
+ 	* dse.cc (record_store): Use it instead of open-coding
+ 	alias check.
+ 	* cselib.h (cselib_redundant_set_p): Declare.
+ 	* cselib.cc: Include alias.h
+ 	(cselib_redundant_set_p): New function.
+ 	* cfgcleanup.cc: (mark_effect): Use cselib_redundant_set_p instead
+ 	of rtx_equal_for_cselib_p.
+ 	* postreload.cc (reload_cse_simplify): Use cselib_redundant_set_p.
+ 	(reload_cse_noop_set_p): Delete.
+ 
+ 2022-08-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gcov-dump.texi: Document the new option.
+ 	* gcov-dump.cc (main): Parse the new option.
+ 	(print_usage): Show the option.
+ 	(tag_counters): Sort key:value pairs of TOP N counter.
+ 
+ 2022-08-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* profile.cc (compute_branch_probabilities): Do not collect
+ 	stats unless TDF_DETAILS.
+ 
+ 2022-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/47949
+ 	* config/i386/i386.md (peephole2): New peephole2 to convert
+ 	SWI48 moves to/from %rax/%eax where the src is dead to xchg,
+ 	when optimizing for minimal size with -Oz.
+ 
+ 2022-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (*cmp<dwi>_doubleword): Add a special case
+ 	to split comparisons against -1 using AND and CMP -1 instructions.
+ 
+ 2022-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.cc (compute_convert_gain): Add gain
+ 	for converting suitable TImode shift to a V1TImode shift.
+ 	(timode_scalar_chain::convert_insn): Add support for converting
+ 	suitable ASHIFT and LSHIFTRT.
+ 	(timode_scalar_to_vector_candidate_p): Consider logical shifts
+ 	by integer constants that are multiples of 8 to be candidates.
+ 
+ 2022-08-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 	    Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* simplify-rtx.cc (simplify_unary_operation_1) <ABS>: Add
+ 	optimizations for CLRSB, PARITY, POPCOUNT, SS_ABS and LSHIFTRT
+ 	that are all positive to complement the existing FFS and
+ 	idempotent ABS simplifications.
+ 	<SIGN_EXTEND>: Canonicalize SIGN_EXTEND to ZERO_EXTEND when
+ 	val_signbit_known_clear_p is true of the operand.
+ 	Simplify sign extensions of SUBREG truncations of operands
+ 	that are already suitably (zero) extended.
+ 	<ZERO_EXTEND>: Simplify zero extensions of SUBREG truncations
+ 	of operands that are already suitably zero extended.
+ 
+ 2022-08-02  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106510
+ 	* gimple-range-fold.cc (fur_source::register_outgoing_edges):
+ 	Check for unsupported statements early.
+ 
+ 2022-08-02  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106474
+ 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Query
+ 	range of equivalences that may contribute to the range.
+ 
+ 2022-08-02  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	* btfout.cc (output_asm_btf_vlen_bytes): Do not use the CHAR
+ 	encoding bit in BTF.
+ 
+ 2022-08-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fold_using_range::range_of_phi): Remove
+ 	irange check.
+ 	(tree_lower_bound): New.
+ 	(tree_upper_bound): New.
+ 	(fold_using_range::range_of_ssa_name_with_loop_info): Convert to
+ 	vrange.
+ 	* gimple-range-fold.h (range_of_ssa_name_with_loop_info): Change
+ 	argument to vrange.
+ 
+ 2022-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-threadbackward.cc
+ 	(back_threader_profitability::profitable_path_p): Apply
+ 	size constraints to all paths again.
+ 
+ 2022-08-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op-float.cc (finite_operands_p): New.
+ 	(frelop_early_resolve): New.
+ 	(default_frelop_fold_range): New.
+ 	(class foperator_equal): New.
+ 	(class foperator_not_equal): New.
+ 	(class foperator_lt): New.
+ 	(class foperator_le): New.
+ 	(class foperator_gt): New.
+ 	(class foperator_ge): New.
+ 	(class foperator_unordered): New.
+ 	(class foperator_ordered): New.
+ 	(class foperator_relop_unknown): New.
+ 	(floating_op_table::floating_op_table): Add above classes to
+ 	floating op table.
+ 	* value-range.h (frange::supports_p): Enable.
+ 
+ 2022-08-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-core.h (struct tree_ssa_name): Add frange_info and
+ 	reshuffle the rest.
+ 	* value-range-storage.cc (vrange_storage::alloc_slot): Add case
+ 	for frange.
+ 	(vrange_storage::set_vrange): Same.
+ 	(vrange_storage::get_vrange): Same.
+ 	(vrange_storage::fits_p): Same.
+ 	(frange_storage_slot::alloc_slot): New.
+ 	(frange_storage_slot::set_frange): New.
+ 	(frange_storage_slot::get_frange): New.
+ 	(frange_storage_slot::fits_p): New.
+ 	* value-range-storage.h (class frange_storage_slot): New.
+ 
+ 2022-08-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* ipa-prop.cc (ipa_compute_jump_functions_for_edge): Limit ranger
+ 	query to integrals.
+ 
+ 2022-08-02  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (frange::set): Initialize m_props and cleanup.
+ 
+ 2022-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106497
+ 	* tree-ssa-threadupdate.cc (fwd_jt_path_registry::update_cfg):
+ 	Also verify we can copy EDGE_COPY_SRC_JOINER_BLOCK.
+ 
+ 2022-08-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* profile.cc (compute_branch_probabilities): Dump details only
+ 	if TDF_DETAILS.
+ 	* symtab.cc (symtab_node::dump_base): Do not dump pointer unless
+ 	TDF_ADDRESS is used, it makes comparison harder.
+ 
+ 2022-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106498
+ 	* omp-expand.cc (expand_omp_taskreg): Do not perform virtual
+ 	SSA update here.
+ 	(expand_omp_for): Or here.
+ 	(execute_expand_omp): Instead schedule it here together
+ 	with CFG cleanup via TODO.
+ 
+ 2022-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/106334
+ 	* dwarf2out.cc (dwarf2out_register_external_die): Adjust
+ 	assert.
+ 
+ 2022-08-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106495
+ 	* tree-ssa-threadbackward.cc
+ 	(back_threader_profitability::profitable_path_p): If known_edge
+ 	is probably never executed avoid threading.
+ 
+ 2022-08-01  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-Wanalyzer-putenv-of-auto-var): Fix copy&paste
+ 	error.
+ 
+ 2022-08-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/106481
+ 	* config/i386/i386-features.cc (timode_scalar_chain::convert_insn):
+ 	Convert a CONST_SCALAR_INT_P in a REG_EQUAL note into a V1TImode
+ 	CONST_VECTOR.
+ 
+ 2022-08-01  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/83782
+ 	* config/i386/i386.cc (ix86_ifunc_ref_local_ok): New.
+ 	(TARGET_IFUNC_REF_LOCAL_OK): Use it.
+ 
+ 2022-08-01  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR debug/106263
+ 	* ctfc.h (struct ctf_dtdef): Add field linkage.
+ 	* ctfc.cc (ctf_add_function): Set ctti_linkage.
+ 	* dwarf2ctf.cc (gen_ctf_function_type): Pass a linkage for
+ 	function types and subprograms.
+ 	* btfout.cc (btf_asm_func_type): Emit linkage information for the
+ 	function.
+ 	(btf_dtd_emit_preprocess_cb): Propagate the linkage information
+ 	for functions.
+ 
+ 2022-08-01  Andrew Stubbs  <ams@codesourcery.com>
+ 	    Jakub Jelinek   <jakub@redhat.com>
+ 
+ 	* omp-simd-clone.cc (simd_clone_adjust): Convert shift_cnt to match
+ 	the mask type.
+ 
+ 2022-08-01  Sam Feifer  <sfeifer@redhat.com>
+ 
+ 	PR tree-optimization/104992
+ 	* match.pd (x / y * y == x): New simplification.
+ 
+ 2022-08-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (tree_compare): New.
+ 	(frange::set): Make more general.
+ 	(frange::normalize_kind): Cleanup and return bool.
+ 	(frange::union_): Use normalize_kind return value.
+ 	(frange::intersect): Same.
+ 	(frange::verify_range): Remove unnecessary else.
+ 	* value-range.h (vrp_val_max): Move before frange class.
+ 	(vrp_val_min): Same.
+ 	(frange::frange): Remove set to m_type.
+ 
+ 2022-08-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (vrange::supports_type_p): Use const_tree.
+ 	(irange::supports_type_p): Same.
+ 	(frange::supports_type_p): Same.
+ 	* value-range.h (Value_Range::supports_type_p): Same.
+ 	(irange::supports_p): Same.
+ 
+ 2022-08-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fold_using_range::range_of_phi): Only
+ 	query SCEV for integers.
+ 	(fold_using_range::range_of_ssa_name_with_loop_info): Remove
+ 	irange check.
+ 
+ 2022-07-31  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (define_expand <any_rotate>ti3): For
+ 	rotations by 64 bits use new rot[lr]64ti2_doubleword pattern.
+ 	(rot[lr]64ti2_doubleword): New post-reload splitter.
+ 
+ 2022-07-31  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/106450
+ 	* config/i386/i386-features.cc (timode_check_non_convertible_regs):
+ 	Do nothing if REGNO is set in the REGS bitmap, or is a hard reg.
+ 	(timode_remove_non_convertible_regs): Update comment.
+ 	Call timode_check_non_convertible_reg on all TImode register
+ 	DEFs and USEs in each instruction.
+ 
+ 2022-07-30  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md: Change hard register number used in
+ 	the split patterns for indirect sibling call fixups from 10 to 11,
+ 	the last free one for the CALL0 ABI.
+ 
+ 2022-07-30  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_rtx_costs):
+ 	Add new case for IF_THEN_ELSE.
+ 
+ 2022-07-29  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn-valu.md (V_INT_noHI): New iterator.
+ 	(<expander><mode>3<exec>): Use V_INT_noHI.
+ 	(v<expander><mode>3<exec>): Likewise.
+ 
+ 2022-07-29  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.md (one_cmpldi2): New.
+ 
+ 2022-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105679
+ 	* tree-ssa-threadbackward.cc
+ 	(back_threader_profitability::profitable_path_p): Avoid threading
+ 	when the entry edge is probably never executed.
+ 
+ 2022-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106422
+ 	* tree-ssa-threadupdate.cc (fwd_jt_path_registry::update_cfg):
+ 	Check whether we can copy thread blocks and cancel the thread if not.
+ 
+ 2022-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/106449
+ 	* omp-expand.cc (expand_omp_simd): Fix up handling of pointer
+ 	iterators in non-rectangular simd loops.  Unshare fd->loops[i].n2
+ 	or n2 before regimplifying it inside of a condition.
+ 
+ 2022-07-29  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.cc (expand_omp_for_init_counts, expand_omp_for_init_vars,
+ 	extract_omp_for_update_vars, expand_omp_for_ordered_loops,
+ 	expand_omp_simd): Don't fold_convert second argument to
+ 	fold_build_pointer_plus to sizetype.
+ 
+ 2022-07-29  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config.in: Regenerate.
+ 	* config/loongarch/loongarch.h (ASM_PREFERRED_EH_DATA_FORMAT):
+ 	Select the value of the macro definition according to whether
+ 	HAVE_AS_EH_FRAME_PCREL_ENCODING_SUPPORT is defined.
+ 	* configure: Regenerate.
+ 	* configure.ac: Reinstate HAVE_AS_EH_FRAME_PCREL_ENCODING_SUPPORT test.
+ 
+ 2022-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-ssa-warn-restrict.cc (builtin_memref::set_base_and_offset):
+ 	Use CONVERT_EXPR_CODE_P.
+ 
+ 2022-07-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-patterns.cc (vect_recog_bool_pattern): Use
+ 	get_vectype_for_scalar_type instead of
+ 	vect_get_vector_types_for_stmt.
+ 
+ 2022-07-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/105893
+ 	* doc/invoke.texi: Add -Wanalyzer-putenv-of-auto-var.
+ 
+ 2022-07-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fdiagnostics-show-cwe): Use uref rather than
+ 	url.
+ 	(Static Analyzer Options): Likewise.  Add urefs for all of the
+ 	warnings that have associated CWE identifiers.
+ 
+ 2022-07-28  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* doc/implement-c.texi (Floating point implementation): Mention
+ 	`-fno-trapping-math' in the context of FENV_ACCESS pragma.
+ 	* doc/invoke.texi (Optimize Options): Clarify FENV_ACCESS pragma
+ 	implication in the descriptions of `-fno-trapping-math' and
+ 	`-frounding-math'.
+ 
+ 2022-07-28  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md (UNSPECV_FSNVSNAN): New constant.
+ 	(QUIET_PATTERN): New int attribute.
+ 	(f<quiet_pattern>_quiet<ANYF:mode><X:mode>4): Emit the intended
+ 	RTL insns entirely within the preparation statements.
+ 	(*f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_default)
+ 	(*f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_snan): Remove
+ 	insns.
+ 	(*riscv_fsnvsnan<mode>2): New insn.
+ 
+ 2022-07-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106457
+ 	* tree.cc (array_at_struct_end_p): Handle array objects
+ 	specially.
+ 
+ 2022-07-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/106099
+ 	* internal-fn.def (TRAP): New internal fn.
+ 	* internal-fn.h (expand_TRAP): Declare.
+ 	* internal-fn.cc (expand_TRAP): Define.
+ 	* gimple.cc (gimple_build_builtin_unreachable): For BUILT_IN_TRAP,
+ 	use internal fn rather than builtin.
+ 
+ 2022-07-27  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* doc/loop.texi: Refer to LOOPS_HAVE_RECORDED_EXITS instead.
+ 
+ 2022-07-27  WANG Xuerui  <i@xen0n.name>
+ 
+ 	* doc/invoke.texi: Document -m[no-]explicit-relocs for
+ 	LoongArch.
+ 
+ 2022-07-27  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md (stack_protect_set_<mode>): Remove
+ 	duplicate backslashes.
+ 
+ 2022-07-27  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.cc (riscv_rtx_costs) <IF_THEN_ELSE>: New
+ 	case.
+ 
+ 2022-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/106261
+ 	* cgraphunit.cc (cgraph_node::assemble_thunks_and_aliases): Don't
+ 	output asm thunks for -dx.
+ 
+ 2022-07-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/106332
+ 	* opts-common.cc (candidates_list_and_hint): Add gcc_assert
+ 	that candidates is not an empty vector.
+ 
+ 2022-07-27  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* configure.ac (HAVE_AS_EXPLICIT_RELOCS): Define to 1 if the
+ 	assembler supports explicit relocation for LoongArch.
+ 	* configure: Regenerate.
+ 	* config/loongarch/loongarch-opts.h (HAVE_AS_EXPLICIT_RELOCS):
+ 	Define to 0 if not defined.
+ 	* config/loongarch/genopts/loongarch.opt.in
+ 	(TARGET_EXPLICIT_RELOCS): Default to HAVE_AS_EXPLICIT_RELOCS.
+ 	* config/loongarch/loongarch.opt: Regenerate.
+ 
+ 2022-07-26  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR c/106016
+ 	* expr.cc (count_type_elements): Handle OPAQUE_TYPE.
+ 
+ 2022-07-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-opts.cc: Modify the output message string
+ 	of the warning.
+ 
+ 2022-07-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/tm.texi.in: Fix placement of defmac.
+ 	* doc/tm.texi: Copy.
+ 
+ 2022-07-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/tm.texi.in: Fix cross @defmac and @hook.
+ 	* doc/tm.texi: Copy.
+ 
+ 2022-07-26  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/106444
+ 	* value-range-pretty-print.cc (vrange_printer::visit): Handle
+ 	legacy ranges.
+ 	(vrange_printer::print_irange_bound): Work on wide_int's.
+ 	* value-range-pretty-print.h (print_irange_bound): Same.
+ 	* value-range.cc (irange::get_nonzero_bits): Handle legacy ranges.
+ 
+ 2022-07-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-alias.cc (ptr_derefs_may_alias_p): If ptr1
+ 	points to a constant continue checking ptr2.
+ 
+ 2022-07-26  Andrew Carlotti  <Andrew.Carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(MODE_d_bf16, MODE_d_f16, MODE_d_f32, MODE_d_f64, MODE_d_s8)
+ 	(MODE_d_s16, MODE_d_s32, MODE_d_s64, MODE_d_u8, MODE_d_u16)
+ 	(MODE_d_u32, MODE_d_u64, MODE_d_p8, MODE_d_p16, MODE_d_p64)
+ 	(MODE_q_bf16, MODE_q_f16, MODE_q_f32, MODE_q_f64, MODE_q_s8)
+ 	(MODE_q_s16, MODE_q_s32, MODE_q_s64, MODE_q_u8, MODE_q_u16)
+ 	(MODE_q_u32, MODE_q_u64, MODE_q_p8, MODE_q_p16, MODE_q_p64)
+ 	(MODE_q_p128): Define macro to map to corresponding mode name.
+ 	(QUAL_bf16, QUAL_f16, QUAL_f32, QUAL_f64, QUAL_s8, QUAL_s16)
+ 	(QUAL_s32, QUAL_s64, QUAL_u8, QUAL_u16, QUAL_u32, QUAL_u64)
+ 	(QUAL_p8, QUAL_p16, QUAL_p64, QUAL_p128): Define macro to map to
+ 	corresponding qualifier name.
+ 	(LENGTH_d, LENGTH_q): Define macro to map to "" or "q" suffix.
+ 	(SIMD_INTR_MODE, SIMD_INTR_QUAL, SIMD_INTR_LENGTH_CHAR): Macro
+ 	functions for the above mappings
+ 	(VREINTERPRET_BUILTIN2, VREINTERPRET_BUILTINS1, VREINTERPRET_BUILTINS)
+ 	(VREINTERPRETQ_BUILTIN2, VREINTERPRETQ_BUILTINS1)
+ 	(VREINTERPRETQ_BUILTINS, VREINTERPRET_BUILTIN)
+ 	(AARCH64_SIMD_VREINTERPRET_BUILTINS): New macros to create definitions
+ 	for all vreinterpret intrinsics
+ 	(enum aarch64_builtins): Add vreinterpret function codes
+ 	(aarch64_init_simd_intrinsics): New
+ 	(handle_arm_neon_h): Improved comment.
+ 	(aarch64_general_fold_builtin): Fold vreinterpret calls
+ 	* config/aarch64/arm_neon.h
+ 	(vreinterpret_p8_f16, vreinterpret_p8_f64, vreinterpret_p8_s8)
+ 	(vreinterpret_p8_s16, vreinterpret_p8_s32, vreinterpret_p8_s64)
+ 	(vreinterpret_p8_f32, vreinterpret_p8_u8, vreinterpret_p8_u16)
+ 	(vreinterpret_p8_u32, vreinterpret_p8_u64, vreinterpret_p8_p16)
+ 	(vreinterpret_p8_p64, vreinterpretq_p8_f64, vreinterpretq_p8_s8)
+ 	(vreinterpretq_p8_s16, vreinterpretq_p8_s32, vreinterpretq_p8_s64)
+ 	(vreinterpretq_p8_f16, vreinterpretq_p8_f32, vreinterpretq_p8_u8)
+ 	(vreinterpretq_p8_u16, vreinterpretq_p8_u32, vreinterpretq_p8_u64)
+ 	(vreinterpretq_p8_p16, vreinterpretq_p8_p64, vreinterpretq_p8_p128)
+ 	(vreinterpret_p16_f16, vreinterpret_p16_f64, vreinterpret_p16_s8)
+ 	(vreinterpret_p16_s16, vreinterpret_p16_s32, vreinterpret_p16_s64)
+ 	(vreinterpret_p16_f32, vreinterpret_p16_u8, vreinterpret_p16_u16)
+ 	(vreinterpret_p16_u32, vreinterpret_p16_u64, vreinterpret_p16_p8)
+ 	(vreinterpret_p16_p64, vreinterpretq_p16_f64, vreinterpretq_p16_s8)
+ 	(vreinterpretq_p16_s16, vreinterpretq_p16_s32, vreinterpretq_p16_s64)
+ 	(vreinterpretq_p16_f16, vreinterpretq_p16_f32, vreinterpretq_p16_u8)
+ 	(vreinterpretq_p16_u16, vreinterpretq_p16_u32, vreinterpretq_p16_u64)
+ 	(vreinterpretq_p16_p8, vreinterpretq_p16_p64, vreinterpretq_p16_p128)
+ 	(vreinterpret_p64_f16, vreinterpret_p64_f64, vreinterpret_p64_s8)
+ 	(vreinterpret_p64_s16, vreinterpret_p64_s32, vreinterpret_p64_s64)
+ 	(vreinterpret_p64_f32, vreinterpret_p64_u8, vreinterpret_p64_u16)
+ 	(vreinterpret_p64_u32, vreinterpret_p64_u64, vreinterpret_p64_p8)
+ 	(vreinterpret_p64_p16, vreinterpretq_p64_f64, vreinterpretq_p64_s8)
+ 	(vreinterpretq_p64_s16, vreinterpretq_p64_s32, vreinterpretq_p64_s64)
+ 	(vreinterpretq_p64_f16, vreinterpretq_p64_f32, vreinterpretq_p64_p128)
+ 	(vreinterpretq_p64_u8, vreinterpretq_p64_u16, vreinterpretq_p64_p16)
+ 	(vreinterpretq_p64_u32, vreinterpretq_p64_u64, vreinterpretq_p64_p8)
+ 	(vreinterpretq_p128_p8, vreinterpretq_p128_p16, vreinterpretq_p128_f16)
+ 	(vreinterpretq_p128_f32, vreinterpretq_p128_p64, vreinterpretq_p128_s64)
+ 	(vreinterpretq_p128_u64, vreinterpretq_p128_s8, vreinterpretq_p128_s16)
+ 	(vreinterpretq_p128_s32, vreinterpretq_p128_u8, vreinterpretq_p128_u16)
+ 	(vreinterpretq_p128_u32, vreinterpret_f16_f64, vreinterpret_f16_s8)
+ 	(vreinterpret_f16_s16, vreinterpret_f16_s32, vreinterpret_f16_s64)
+ 	(vreinterpret_f16_f32, vreinterpret_f16_u8, vreinterpret_f16_u16)
+ 	(vreinterpret_f16_u32, vreinterpret_f16_u64, vreinterpret_f16_p8)
+ 	(vreinterpret_f16_p16, vreinterpret_f16_p64, vreinterpretq_f16_f64)
+ 	(vreinterpretq_f16_s8, vreinterpretq_f16_s16, vreinterpretq_f16_s32)
+ 	(vreinterpretq_f16_s64, vreinterpretq_f16_f32, vreinterpretq_f16_u8)
+ 	(vreinterpretq_f16_u16, vreinterpretq_f16_u32, vreinterpretq_f16_u64)
+ 	(vreinterpretq_f16_p8, vreinterpretq_f16_p128, vreinterpretq_f16_p16)
+ 	(vreinterpretq_f16_p64, vreinterpret_f32_f16, vreinterpret_f32_f64)
+ 	(vreinterpret_f32_s8, vreinterpret_f32_s16, vreinterpret_f32_s32)
+ 	(vreinterpret_f32_s64, vreinterpret_f32_u8, vreinterpret_f32_u16)
+ 	(vreinterpret_f32_u32, vreinterpret_f32_u64, vreinterpret_f32_p8)
+ 	(vreinterpret_f32_p16, vreinterpret_f32_p64, vreinterpretq_f32_f16)
+ 	(vreinterpretq_f32_f64, vreinterpretq_f32_s8, vreinterpretq_f32_s16)
+ 	(vreinterpretq_f32_s32, vreinterpretq_f32_s64, vreinterpretq_f32_u8)
+ 	(vreinterpretq_f32_u16, vreinterpretq_f32_u32, vreinterpretq_f32_u64)
+ 	(vreinterpretq_f32_p8, vreinterpretq_f32_p16, vreinterpretq_f32_p64)
+ 	(vreinterpretq_f32_p128, vreinterpret_f64_f16, vreinterpret_f64_f32)
+ 	(vreinterpret_f64_p8, vreinterpret_f64_p16, vreinterpret_f64_p64)
+ 	(vreinterpret_f64_s8, vreinterpret_f64_s16, vreinterpret_f64_s32)
+ 	(vreinterpret_f64_s64, vreinterpret_f64_u8, vreinterpret_f64_u16)
+ 	(vreinterpret_f64_u32, vreinterpret_f64_u64, vreinterpretq_f64_f16)
+ 	(vreinterpretq_f64_f32, vreinterpretq_f64_p8, vreinterpretq_f64_p16)
+ 	(vreinterpretq_f64_p64, vreinterpretq_f64_s8, vreinterpretq_f64_s16)
+ 	(vreinterpretq_f64_s32, vreinterpretq_f64_s64, vreinterpretq_f64_u8)
+ 	(vreinterpretq_f64_u16, vreinterpretq_f64_u32, vreinterpretq_f64_u64)
+ 	(vreinterpret_s64_f16, vreinterpret_s64_f64, vreinterpret_s64_s8)
+ 	(vreinterpret_s64_s16, vreinterpret_s64_s32, vreinterpret_s64_f32)
+ 	(vreinterpret_s64_u8, vreinterpret_s64_u16, vreinterpret_s64_u32)
+ 	(vreinterpret_s64_u64, vreinterpret_s64_p8, vreinterpret_s64_p16)
+ 	(vreinterpret_s64_p64, vreinterpretq_s64_f64, vreinterpretq_s64_s8)
+ 	(vreinterpretq_s64_s16, vreinterpretq_s64_s32, vreinterpretq_s64_f16)
+ 	(vreinterpretq_s64_f32, vreinterpretq_s64_u8, vreinterpretq_s64_u16)
+ 	(vreinterpretq_s64_u32, vreinterpretq_s64_u64, vreinterpretq_s64_p8)
+ 	(vreinterpretq_s64_p16, vreinterpretq_s64_p64, vreinterpretq_s64_p128)
+ 	(vreinterpret_u64_f16, vreinterpret_u64_f64, vreinterpret_u64_s8)
+ 	(vreinterpret_u64_s16, vreinterpret_u64_s32, vreinterpret_u64_s64)
+ 	(vreinterpret_u64_f32, vreinterpret_u64_u8, vreinterpret_u64_u16)
+ 	(vreinterpret_u64_u32, vreinterpret_u64_p8, vreinterpret_u64_p16)
+ 	(vreinterpret_u64_p64, vreinterpretq_u64_f64, vreinterpretq_u64_s8)
+ 	(vreinterpretq_u64_s16, vreinterpretq_u64_s32, vreinterpretq_u64_s64)
+ 	(vreinterpretq_u64_f16, vreinterpretq_u64_f32, vreinterpretq_u64_u8)
+ 	(vreinterpretq_u64_u16, vreinterpretq_u64_u32, vreinterpretq_u64_p8)
+ 	(vreinterpretq_u64_p16, vreinterpretq_u64_p64, vreinterpretq_u64_p128)
+ 	(vreinterpret_s8_f16, vreinterpret_s8_f64, vreinterpret_s8_s16)
+ 	(vreinterpret_s8_s32, vreinterpret_s8_s64, vreinterpret_s8_f32)
+ 	(vreinterpret_s8_u8, vreinterpret_s8_u16, vreinterpret_s8_u32)
+ 	(vreinterpret_s8_u64, vreinterpret_s8_p8, vreinterpret_s8_p16)
+ 	(vreinterpret_s8_p64, vreinterpretq_s8_f64, vreinterpretq_s8_s16)
+ 	(vreinterpretq_s8_s32, vreinterpretq_s8_s64, vreinterpretq_s8_f16)
+ 	(vreinterpretq_s8_f32, vreinterpretq_s8_u8, vreinterpretq_s8_u16)
+ 	(vreinterpretq_s8_u32, vreinterpretq_s8_u64, vreinterpretq_s8_p8)
+ 	(vreinterpretq_s8_p16, vreinterpretq_s8_p64, vreinterpretq_s8_p128)
+ 	(vreinterpret_s16_f16, vreinterpret_s16_f64, vreinterpret_s16_s8)
+ 	(vreinterpret_s16_s32, vreinterpret_s16_s64, vreinterpret_s16_f32)
+ 	(vreinterpret_s16_u8, vreinterpret_s16_u16, vreinterpret_s16_u32)
+ 	(vreinterpret_s16_u64, vreinterpret_s16_p8, vreinterpret_s16_p16)
+ 	(vreinterpret_s16_p64, vreinterpretq_s16_f64, vreinterpretq_s16_s8)
+ 	(vreinterpretq_s16_s32, vreinterpretq_s16_s64, vreinterpretq_s16_f16)
+ 	(vreinterpretq_s16_f32, vreinterpretq_s16_u8, vreinterpretq_s16_u16)
+ 	(vreinterpretq_s16_u32, vreinterpretq_s16_u64, vreinterpretq_s16_p8)
+ 	(vreinterpretq_s16_p16, vreinterpretq_s16_p64, vreinterpretq_s16_p128)
+ 	(vreinterpret_s32_f16, vreinterpret_s32_f64, vreinterpret_s32_s8)
+ 	(vreinterpret_s32_s16, vreinterpret_s32_s64, vreinterpret_s32_f32)
+ 	(vreinterpret_s32_u8, vreinterpret_s32_u16, vreinterpret_s32_u32)
+ 	(vreinterpret_s32_u64, vreinterpret_s32_p8, vreinterpret_s32_p16)
+ 	(vreinterpret_s32_p64, vreinterpretq_s32_f64, vreinterpretq_s32_s8)
+ 	(vreinterpretq_s32_s16, vreinterpretq_s32_s64, vreinterpretq_s32_f16)
+ 	(vreinterpretq_s32_f32, vreinterpretq_s32_u8, vreinterpretq_s32_u16)
+ 	(vreinterpretq_s32_u32, vreinterpretq_s32_u64, vreinterpretq_s32_p8)
+ 	(vreinterpretq_s32_p16, vreinterpretq_s32_p64, vreinterpretq_s32_p128)
+ 	(vreinterpret_u8_f16, vreinterpret_u8_f64, vreinterpret_u8_s8)
+ 	(vreinterpret_u8_s16, vreinterpret_u8_s32, vreinterpret_u8_s64)
+ 	(vreinterpret_u8_f32, vreinterpret_u8_u16, vreinterpret_u8_u32)
+ 	(vreinterpret_u8_u64, vreinterpret_u8_p8, vreinterpret_u8_p16)
+ 	(vreinterpret_u8_p64, vreinterpretq_u8_f64, vreinterpretq_u8_s8)
+ 	(vreinterpretq_u8_s16, vreinterpretq_u8_s32, vreinterpretq_u8_s64)
+ 	(vreinterpretq_u8_f16, vreinterpretq_u8_f32, vreinterpretq_u8_u16)
+ 	(vreinterpretq_u8_u32, vreinterpretq_u8_u64, vreinterpretq_u8_p8)
+ 	(vreinterpretq_u8_p16, vreinterpretq_u8_p64, vreinterpretq_u8_p128)
+ 	(vreinterpret_u16_f16, vreinterpret_u16_f64, vreinterpret_u16_s8)
+ 	(vreinterpret_u16_s16, vreinterpret_u16_s32, vreinterpret_u16_s64)
+ 	(vreinterpret_u16_f32, vreinterpret_u16_u8, vreinterpret_u16_u32)
+ 	(vreinterpret_u16_u64, vreinterpret_u16_p8, vreinterpret_u16_p16)
+ 	(vreinterpret_u16_p64, vreinterpretq_u16_f64, vreinterpretq_u16_s8)
+ 	(vreinterpretq_u16_s16, vreinterpretq_u16_s32, vreinterpretq_u16_s64)
+ 	(vreinterpretq_u16_f16, vreinterpretq_u16_f32, vreinterpretq_u16_u8)
+ 	(vreinterpretq_u16_u32, vreinterpretq_u16_u64, vreinterpretq_u16_p8)
+ 	(vreinterpretq_u16_p16, vreinterpretq_u16_p64, vreinterpretq_u16_p128)
+ 	(vreinterpret_u32_f16, vreinterpret_u32_f64, vreinterpret_u32_s8)
+ 	(vreinterpret_u32_s16, vreinterpret_u32_s32, vreinterpret_u32_s64)
+ 	(vreinterpret_u32_f32, vreinterpret_u32_u8, vreinterpret_u32_u16)
+ 	(vreinterpret_u32_u64, vreinterpret_u32_p8, vreinterpret_u32_p16)
+ 	(vreinterpret_u32_p64, vreinterpretq_u32_f64, vreinterpretq_u32_s8)
+ 	(vreinterpretq_u32_s16, vreinterpretq_u32_s32, vreinterpretq_u32_s64)
+ 	(vreinterpretq_u32_f16, vreinterpretq_u32_f32, vreinterpretq_u32_u8)
+ 	(vreinterpretq_u32_u16, vreinterpretq_u32_u64, vreinterpretq_u32_p8)
+ 	(vreinterpretq_u32_p16, vreinterpretq_u32_p64, vreinterpretq_u32_p128)
+ 	(vreinterpretq_f64_p128, vreinterpretq_p128_f64, vreinterpret_bf16_u8)
+ 	(vreinterpret_bf16_u16, vreinterpret_bf16_u32, vreinterpret_bf16_u64)
+ 	(vreinterpret_bf16_s8, vreinterpret_bf16_s16, vreinterpret_bf16_s32)
+ 	(vreinterpret_bf16_s64, vreinterpret_bf16_p8, vreinterpret_bf16_p16)
+ 	(vreinterpret_bf16_p64, vreinterpret_bf16_f16, vreinterpret_bf16_f32)
+ 	(vreinterpret_bf16_f64, vreinterpretq_bf16_u8, vreinterpretq_bf16_u16)
+ 	(vreinterpretq_bf16_u32, vreinterpretq_bf16_u64, vreinterpretq_bf16_s8)
+ 	(vreinterpretq_bf16_s16, vreinterpretq_bf16_s32, vreinterpretq_bf16_s64)
+ 	(vreinterpretq_bf16_p8, vreinterpretq_bf16_p16, vreinterpretq_bf16_p64)
+ 	(vreinterpretq_bf16_p128, vreinterpretq_bf16_f16)
+ 	(vreinterpretq_bf16_f32, vreinterpretq_bf16_f64, vreinterpret_s8_bf16)
+ 	(vreinterpret_s16_bf16, vreinterpret_s32_bf16, vreinterpret_s64_bf16)
+ 	(vreinterpret_u8_bf16, vreinterpret_u16_bf16, vreinterpret_u32_bf16)
+ 	(vreinterpret_u64_bf16, vreinterpret_f16_bf16, vreinterpret_f32_bf16)
+ 	(vreinterpret_f64_bf16, vreinterpret_p8_bf16, vreinterpret_p16_bf16)
+ 	(vreinterpret_p64_bf16, vreinterpretq_s8_bf16, vreinterpretq_s16_bf16)
+ 	(vreinterpretq_s32_bf16, vreinterpretq_s64_bf16, vreinterpretq_u8_bf16)
+ 	(vreinterpretq_u16_bf16, vreinterpretq_u32_bf16, vreinterpretq_u64_bf16)
+ 	(vreinterpretq_f16_bf16, vreinterpretq_f32_bf16, vreinterpretq_f64_bf16)
+ 	(vreinterpretq_p8_bf16, vreinterpretq_p16_bf16, vreinterpretq_p64_bf16)
+ 	(vreinterpretq_p128_bf16): Delete
+ 
+ 2022-07-26  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_simd_builtin_std_type): Rename to...
+ 	(aarch64_int_or_fp_type): ...this, and allow irrelevant qualifiers.
+ 	(aarch64_lookup_simd_builtin_type): Rename to...
+ 	(aarch64_simd_builtin_type): ...this. Add const/pointer
+ 	support, and extract table lookup to...
+ 	(aarch64_lookup_simd_type_in_table): ...this function.
+ 	(aarch64_init_crc32_builtins): Update to use aarch64_simd_builtin_type.
+ 	(aarch64_init_fcmla_laneq_builtins): Ditto.
+ 	(aarch64_init_simd_builtin_functions): Ditto.
+ 
+ 2022-07-26  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_general_gimple_fold_builtin): Add combine.
+ 
+ 2022-07-26  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106189
+ 	* gimple-array-bounds.cc (array_bounds_checker::check_mem_ref):
+ 	Divide using offset_ints.
+ 
+ 2022-07-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* common/config/loongarch/loongarch-common.cc:
+ 	Enable '-fsection-anchors' when O1 and more advanced optimization.
+ 	* config/loongarch/genopts/loongarch.opt.in: Add new option
+ 	'-mexplicit-relocs', and enable by default.
+ 	* config/loongarch/loongarch-protos.h (loongarch_split_move_insn_p):
+ 	Delete function declaration.
+ 	(loongarch_split_move_insn): Delete function declaration.
+ 	(loongarch_split_symbol_type): Add function declaration.
+ 	* config/loongarch/loongarch.cc (enum loongarch_address_type):
+ 	Add new address type 'ADDRESS_LO_SUM'.
+ 	(loongarch_classify_symbolic_expression): New function definitions.
+ 	Classify the base of symbolic expression X, given that X appears in
+ 	context CONTEXT.
+ 	(loongarch_symbol_insns): Add a judgment condition TARGET_EXPLICIT_RELOCS.
+ 	(loongarch_split_symbol_type): New function definitions.
+ 	Determines whether the symbol load should be split into two instructions.
+ 	(loongarch_valid_lo_sum_p): New function definitions.
+ 	Return true if a LO_SUM can address a value of mode MODE when the LO_SUM
+ 	symbol has type SYMBOL_TYPE.
+ 	(loongarch_classify_address): Add handling of 'LO_SUM'.
+ 	(loongarch_address_insns): Add handling of 'ADDRESS_LO_SUM'.
+ 	(loongarch_signed_immediate_p): Sort code.
+ 	(loongarch_12bit_offset_address_p): Return true if address type is ADDRESS_LO_SUM.
+ 	(loongarch_const_insns): Add handling of 'HIGH'.
+ 	(loongarch_split_move_insn_p): Add the static attribute to the function.
+ 	(loongarch_emit_set): New function definitions.
+ 	(loongarch_call_tls_get_addr): Add symbol handling when defining TARGET_EXPLICIT_RELOCS.
+ 	(loongarch_legitimize_tls_address): Add symbol handling when defining the
+ 	TARGET_EXPLICIT_RELOCS macro.
+ 	(loongarch_split_symbol): New function definitions. Split symbol.
+ 	(loongarch_legitimize_address): Add codes see if the address can split into a high part
+ 	and a LO_SUM.
+ 	(loongarch_legitimize_const_move): Add codes split moves of symbolic constants into
+ 	high and low.
+ 	(loongarch_split_move_insn): Delete function definitions.
+ 	(loongarch_output_move): Add support for HIGH and LO_SUM.
+ 	(loongarch_print_operand_reloc): New function definitions.
+ 	Print symbolic operand OP, which is part of a HIGH or LO_SUM in context CONTEXT.
+ 	(loongarch_memmodel_needs_release_fence): Sort code.
+ 	(loongarch_print_operand): Rearrange alphabetical order and add H and L to support HIGH
+ 	and LOW output.
+ 	(loongarch_print_operand_address): Add handling of 'ADDRESS_LO_SUM'.
+ 	(TARGET_MIN_ANCHOR_OFFSET): Define macro to -IMM_REACH/2.
+ 	(TARGET_MAX_ANCHOR_OFFSET): Define macro to IMM_REACH/2-1.
+ 	* config/loongarch/loongarch.md (movti): Delete the template.
+ 	(*movti): Delete the template.
+ 	(movtf): Delete the template.
+ 	(*movtf): Delete the template.
+ 	(*low<mode>): New template of normal symbol low address.
+ 	(@tls_low<mode>): New template of tls symbol low address.
+ 	(@ld_from_got<mode>): New template load address from got table.
+ 	(@ori_l_lo12<mode>): New template.
+ 	* config/loongarch/loongarch.opt: Update from loongarch.opt.in.
+ 	* config/loongarch/predicates.md: Add support for symbol_type HIGH.
+ 
+ 2022-07-26  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/constraints.md (a): Delete the constraint.
+ 	(b): A constant call not local address.
+ 	(h): Delete the constraint.
+ 	(t): Delete the constraint.
+ 	* config/loongarch/loongarch-opts.cc (loongarch_config_target):
+ 	Remove cModel type support other than normal.
+ 	* config/loongarch/loongarch-protos.h (enum loongarch_symbol_type):
+ 	Add new symbol type 'SYMBOL_PCREL', 'SYMBOL_TLS_IE' and 'SYMBOL_TLS_LE'.
+ 	(loongarch_split_symbol): Delete useless function declarations.
+ 	(loongarch_split_symbol_type): Delete useless function declarations.
+ 	* config/loongarch/loongarch.cc (enum loongarch_address_type):
+ 	Delete unnecessary comment information.
+ 	(loongarch_symbol_binds_local_p): Modified the judgment order of label
+ 	and symbol.
+ 	(loongarch_classify_symbol): Return symbol type. If symbol is a label,
+ 	or symbol is a local symbol return SYMBOL_PCREL. If is a tls symbol,
+ 	return SYMBOL_TLS. If is a not local symbol return SYMBOL_GOT_DISP.
+ 	(loongarch_symbolic_constant_p): Add handling of 'SYMBOL_TLS_IE'
+ 	'SYMBOL_TLS_LE' and 'SYMBOL_PCREL'.
+ 	(loongarch_symbol_insns): Add handling of 'SYMBOL_TLS_IE' 'SYMBOL_TLS_LE'
+ 	and 'SYMBOL_PCREL'.
+ 	(loongarch_address_insns): Sort code.
+ 	(loongarch_12bit_offset_address_p): Sort code.
+ 	(loongarch_14bit_shifted_offset_address_p): Sort code.
+ 	(loongarch_call_tls_get_addr): Sort code.
+ 	(loongarch_legitimize_tls_address): Sort code.
+ 	(loongarch_output_move): Remove schema support for cmodel other than normal.
+ 	(loongarch_memmodel_needs_release_fence): Sort code.
+ 	(loongarch_print_operand): Sort code.
+ 	* config/loongarch/loongarch.h (LARCH_U12BIT_OFFSET_P):
+ 	Rename to LARCH_12BIT_OFFSET_P.
+ 	(LARCH_12BIT_OFFSET_P): New macro.
+ 	* config/loongarch/loongarch.md: Reimplement the function call. Remove schema
+ 	support for cmodel other than normal.
+ 	* config/loongarch/predicates.md (is_const_call_weak_symbol): Delete this predicate.
+ 	(is_const_call_plt_symbol): Delete this predicate.
+ 	(is_const_call_global_noplt_symbol): Delete this predicate.
+ 	(is_const_call_no_local_symbol): New predicate, determines whether it is a local
+ 	symbol or label.
+ 
+ 2022-07-26  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/106091
+ 	* config/rs6000/rs6000-p8swap.cc (replace_swapped_aligned_store): Copy
+ 	REG_EH_REGION when replacing one store insn having it.
+ 	(replace_swapped_aligned_load): Likewise.
+ 
+ 2022-07-25  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add range-op-float.o.
+ 	* range-op.cc (get_float_handler): New.
+ 	(range_op_handler::range_op_handler): Save code and type for
+ 	delayed querying.
+ 	(range_op_handler::oeprator bool): Move from header file, and
+ 	add support for floats.
+ 	(range_op_handler::fold_range): Add support for floats.
+ 	(range_op_handler::op1_range): Same.
+ 	(range_op_handler::op2_range): Same.
+ 	(range_op_handler::lhs_op1_relation): Same.
+ 	(range_op_handler::lhs_op2_relation): Same.
+ 	(range_op_handler::op1_op2_relation): Same.
+ 	* range-op.h (class range_operator_float): New.
+ 	(class floating_op_table): New.
+ 	* value-query.cc (range_query::get_tree_range): Add case for
+ 	REAL_CST.
+ 	* range-op-float.cc: New file.
+ 
+ 2022-07-25  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/91681
+ 	* config/i386/i386-expand.cc (split_double_concat): A new helper
+ 	function for setting a double word value from two word values.
+ 	* config/i386/i386-protos.h (split_double_concat): Prototype here.
+ 	* config/i386/i386.md (zero_extendditi2): New define_insn_and_split.
+ 	(*add<dwi>3_doubleword_zext): New define_insn_and_split.
+ 	(*sub<dwi>3_doubleword_zext): New define_insn_and_split.
+ 	(*concat<mode><dwi>3_1): New define_insn_and_split replacing
+ 	previous define_split for implementing DST = (HI<<32)|LO as
+ 	pair of move instructions, setting lopart and hipart.
+ 	(*concat<mode><dwi>3_2): Likewise.
+ 	(*concat<mode><dwi>3_3): Likewise, where HI is zero_extended.
+ 	(*concat<mode><dwi>3_4): Likewise, where HI is zero_extended.
+ 
+ 2022-07-25  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR middle-end/106432
+ 	* gimple-range.cc (gimple_ranger::range_on_edge): Return false
+ 	when the result range type is unsupported.
+ 
+ 2022-07-25  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* config/rs6000/rtems.h (CPLUSPLUS_CPP_SPEC): Undef.
+ 
+ 2022-07-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106414
+ 	* match.pd (~(x ^ y) -> x == y): Restrict to single bit
+ 	precision types.
+ 
+ 2022-07-25  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (rbit<mode>2): Rename this ...
+ 	(@aarch64_rbit<mode>): ... to this and change it in...
+ 	(ffs<mode>2,ctz<mode>2): ... here.
+ 	(@aarch64_rev16<mode>): New.
+ 	* config/aarch64/aarch64-builtins.cc: (aarch64_builtins):
+ 	Define the following enum AARCH64_REV16, AARCH64_REV16L,
+ 	AARCH64_REV16LL, AARCH64_RBIT, AARCH64_RBITL, AARCH64_RBITLL.
+ 	(aarch64_init_data_intrinsics): New.
+ 	(aarch64_general_init_builtins): Add call to
+ 	aarch64_init_data_intrinsics.
+ 	(aarch64_expand_builtin_data_intrinsic): New.
+ 	(aarch64_general_expand_builtin): Add call to
+ 	aarch64_expand_builtin_data_intrinsic.
+ 	* config/aarch64/arm_acle.h (__clz, __clzl, __clzll, __cls, __clsl,
+ 	__clsll, __rbit, __rbitl, __rbitll, __rev, __revl, __revll, __rev16,
+ 	__rev16l, __rev16ll, __ror, __rorl, __rorll, __revsh): New.
+ 
+ 2022-07-25  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/extend.texi: Remove trailing whitespaces.
+ 	* doc/invoke.texi: Likewise.
+ 
+ 2022-07-25  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-pretty-print.cc (vrange_printer::visit): New.
+ 	(vrange_printer::print_frange_prop): New.
+ 	* value-range-pretty-print.h (class vrange_printer): Add visit and
+ 	print_frange_prop.
+ 	* value-range-storage.h (vrange_allocator::alloc_vrange): Handle frange.
+ 	(vrange_allocator::alloc_frange): New.
+ 	* value-range.cc (vrange::operator=): Handle frange.
+ 	(vrange::operator==): Same.
+ 	(frange::accept): New.
+ 	(frange::set): New.
+ 	(frange::normalize_kind): New.
+ 	(frange::union_): New.
+ 	(frange::intersect): New.
+ 	(frange::operator=): New.
+ 	(frange::operator==): New.
+ 	(frange::supports_type_p): New.
+ 	(frange::verify_range): New.
+ 	* value-range.h (enum value_range_discriminator): Handle frange.
+ 	(class fp_prop): New.
+ 	(FP_PROP_ACCESSOR): New.
+ 	(class frange_props): New.
+ 	(FRANGE_PROP_ACCESSOR): New.
+ 	(class frange): New.
+ 	(Value_Range::init): Handle frange.
+ 	(Value_Range::operator=): Same.
+ 	(Value_Range::supports_type_p): Same.
+ 	(frange_props::operator==): New.
+ 	(frange_props::union_): New.
+ 	(frange_props::intersect): New
+ 	(frange::frange): New.
+ 	(frange::type): New.
+ 	(frange::set_varying): New.
+ 	(frange::set_undefined): New.
+ 
+ 2022-07-25  Peter Bergner  <bergner@linux.ibm.com>
+ 	    Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR testsuite/106345
+ 	* config/rs6000/rs6000.h (DRIVER_SELF_SPECS): Adjust -mdejagnu-cpu
+ 	to filter out all -mtune options.
+ 
+ 2022-07-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-query.cc (range_query::get_value_range): Add assert.
+ 	* vr-values.cc (vr_values::range_of_expr): Make sure we don't ICE
+ 	on unsupported types in vr_values.
+ 	(simplify_using_ranges::simplify): Same.
+ 
+ 2022-07-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssanames.cc (get_nonzero_bits): Return -1 for unsupported
+ 	types.
+ 	* value-query.cc (get_ssa_name_range_info): Remove precision check.
+ 
+ 2022-07-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-relation.cc (value_relation::set_relation): Remove assert.
+ 	(path_oracle::register_relation): Exit when trying to register
+ 	same SSA name relations.
+ 
+ 2022-07-24  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::edge_range): Convert to vrange.
+ 	(ranger_cache::range_from_dom): Same.
+ 	* tree-ssa-dom.cc
+ 	(dom_opt_dom_walker::set_global_ranges_from_unreachable_edges): Same.
+ 
+ 2022-07-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/106303
+ 	PR target/106347
+ 	* config/i386/i386-features.cc (make_vector_copies): Move from
+ 	general_scalar_chain to scalar_chain.
+ 	(convert_reg): Likewise.
+ 	(convert_insn_common): New scalar_chain method split out from
+ 	general_scalar_chain convert_insn.
+ 	(convert_registers): Move from general_scalar_chain to
+ 	scalar_chain.
+ 	(scalar_chain::convert): Call convert_insn_common before calling
+ 	convert_insn.
+ 	(timode_remove_non_convertible_regs): Iterate until there are
+ 	no further changes to the candidates.
+ 	* config/i386/i386-features.h (scalar_chain::hash_map): Move
+ 	from general_scalar_chain.
+ 	(scalar_chain::convert_reg): Likewise.
+ 	(scalar_chain::convert_insn_common): New shared method.
+ 	(scalar_chain::make_vector_copies): Move from general_scalar_chain.
+ 	(scalar_chain::convert_registers): Likewise.  No longer virtual.
+ 	(general_scalar_chain::hash_map): Delete.  Moved to scalar_chain.
+ 	(general_scalar_chain::convert_reg): Likewise.
+ 	(general_scalar_chain::make_vector_copies): Likewise.
+ 	(general_scalar_chain::convert_registers): Delete virtual method.
+ 	(timode_scalar_chain::convert_registers): Likewise.
+ 
+ 2022-07-23  Immad Mir  <mirimmad@outlook.com>
+ 
+ 	* doc/extend.texi: Add fd_arg, fd_arg_read and fd_arg_write under
+ 	"Common Function Attributes" section.
+ 	* doc/invoke.texi: Add docs to -Wanalyzer-fd-access-mode-mismatch,
+ 	-Wanalyzer-use-after-close, -Wanalyzer-fd-use-without-check that these
+ 	warnings may be emitted through usage of three function attributes used
+ 	for static analysis of file descriptors namely fd_arg, fd_arg_read and
+ 	fd_arg_write.
+ 
+ 2022-07-22  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (*masktrue_const_bitcmpl):
+ 	Add a new insn_and_split pattern, and a few split patterns for
+ 	spacial cases.
+ 
+ 2022-07-22  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* graphds.cc (graphds_scc): Fix algorithm attribution.
+ 
+ 2022-07-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106403
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Move stored
+ 	value valueization after check for IFN_MASKED_STORE or
+ 	IFN_LEN_STORE.
+ 
+ 2022-07-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106397
+ 	* tree-ssa-loop-prefetch.cc (emit_mfence_after_loop): Do
+ 	not update SSA form here.
+ 	(mark_nontemporal_stores): Return whether we marked any
+ 	non-temporal stores and inserted mfence.
+ 	(loop_prefetch_arrays): Note when we need to update SSA.
+ 	(tree_ssa_prefetch_arrays): Perform required (LC) SSA update
+ 	at the end of the pass.
+ 
+ 2022-07-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106387
+ 	* tree-vect-stmts.cc (vectorizable_load): Use make_ssa_name
+ 	if ptr is not an SSA name.
+ 
+ 2022-07-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/106038
+ 	* config/i386/mmx.md (<code><mode>3): New define_expand, it's
+ 	original "<code><mode>3".
+ 	(*<code><mode>3): New define_insn, it's original
+ 	"<code><mode>3" be extended to handle memory and immediate
+ 	operand with ix86_binary_operator_ok. Also adjust define_split
+ 	after it.
+ 	(mmxinsnmode): New mode attribute.
+ 	(*mov<mode>_imm): Refactor with mmxinsnmode.
+ 	* config/i386/predicates.md
+ 	(register_or_x86_64_const_vector_operand): New predicate.
+ 
+ 2022-07-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/altivec.md:
+ 	(vstrir_code_<mode>): Rename to...
+ 	(vstrir_direct_<mode>): ... this.
+ 	(vstrir_p_code_<mode>): Rename to...
+ 	(vstrir_p_direct_<mode>): ... this.
+ 	(vstril_code_<mode>): Rename to...
+ 	(vstril_direct_<mode>): ... this.
+ 	(vstril_p_code_<mode>): Rename to...
+ 	(vstril_p_direct_<mode>): ... this.
+ 
+ 2022-07-22  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.cc: Update comments.
+ 	(rs6000_target_modify_macros): Remove bu_mask references.
+ 	(rs6000_define_or_undefine_macro): Replace bu_mask reference
+ 	with a rs6000_cpu value check.
+ 	(rs6000_cpu_cpp_builtins): Remove rs6000_builtin_mask_calculate()
+ 	parameter from call to rs6000_target_modify_macros.
+ 	* config/rs6000/rs6000-protos.h (rs6000_target_modify_macros,
+ 	rs6000_target_modify_macros_ptr): Remove parameter from extern
+ 	for the prototype.
+ 	* config/rs6000/rs6000.cc (rs6000_target_modify_macros_ptr): Remove
+ 	parameter from prototype, update calls to this function.
+ 	(rs6000_print_builtin_options): Remove prototype, call and function.
+ 	(rs6000_builtin_mask_calculate): Remove function.
+ 	(rs6000_debug_reg_global): Remove call to rs6000_print_builtin_options.
+ 	(rs6000_option_override_internal): Remove rs6000_builtin_mask var
+ 	and builtin_mask debug output.
+ 	(rs6000_builtin_mask_names): Remove.
+ 	(rs6000_pragma_target_parse): Remove prev_bumask, cur_bumask,
+ 	diff_bumask references; Update calls to rs6000_target_modify_ptr.
+ 	* config/rs6000/rs6000.opt (rs6000_builtin_mask): Remove.
+ 
+ 2022-07-21  Sam Feifer  <sfeifer@redhat.com>
+ 
+ 	PR tree-optimization/94920
+ 	* match.pd (x >= 0 ? x : 0) + (x <= 0 ? -x : 0): New simplification.
+ 	(x <= 0 ? -x : 0): New simplification.
+ 
+ 2022-07-21  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	Revert:
+ 	2022-07-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* tree-ssa-forwprop.cc (simplify_permutation): Use lhs type
+ 	instead of TREE_TYPE (arg0) as result type in folding VEC_PERM_EXPR.
+ 
+ 2022-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106379
+ 	* match.pd (~(a ^ b) -> a == b): New pattern.
+ 
+ 2022-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106378
+ 	* tree-ssa-dse.cc (initialize_ao_ref_for_dse): Handle
+ 	LEN_STORE, add mode to initialize a may-def and handle
+ 	MASK_STORE that way.
+ 	(dse_optimize_stmt): Query may-defs.  Handle internal
+ 	functions LEN_STORE and MASK_STORE similar to how
+ 	we handle memory builtins but without byte tracking.
+ 
+ 2022-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106365
+ 	* tree-ssa-sccvn.cc (pd_data::rhs_off): New field determining
+ 	the offset to start encoding of RHS from.
+ 	(vn_walk_cb_data::vn_walk_cb_data): Initialize it.
+ 	(vn_walk_cb_data::push_partial_def): Allow the first partial
+ 	definition to be fully providing the def.  Offset RHS
+ 	before encoding if requested.
+ 	(vn_reference_lookup_3): Initialize def_rhs everywhere.
+ 	Add support for .MASK_STORE and .LEN_STORE (partial) definitions.
+ 
+ 2022-07-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-alias.cc (ref_maybe_used_by_call_p_1): Special-case
+ 	store internal functions and IFN_MASK_LOAD, IFN_LEN_LOAD
+ 	and IFN_MASK_LOAD_LANES.
+ 	(call_may_clobber_ref_p_1): Special-case IFN_MASK_STORE,
+ 	IFN_LEN_STORE and IFN_MASK_STORE_LANES.
+ 
+ 2022-07-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	PR rtl-optimization/101347
+ 	* builtins.cc (expand_builtin) [BUILT_IN_SETJMP_SETUP]: Move
+ 	population of nonlocal_goto_handler_labels from here ...
+ 	(expand_builtin) [BUILT_IN_SETJMP_RECEIVER]: ... to here.
+ 	* rtlanal.cc (remove_node_from_insn_list): Verify that a
+ 	duplicate is not present in the remainder of the list.
+ 
+ 2022-07-20  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* rtl.h (remove_node_from_expr_list): Remove declaration.
+ 	* rtlanal.cc (remove_node_from_expr_list): Remove (no uses).
+ 
+ 2022-07-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-data-refs.cc (bump_vector_ptr): Return an
+ 	invariant updated address when the input was invariant.
+ 
+ 2022-07-20  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* passes.def: (Split pass_cse_sincos to pass_expand_powcabs
+ 	and pass_cse_sincos, and move pass_cse_sincos after vectorizer).
+ 	* timevar.def (TV_TREE_POWCABS): New timevar.
+ 	* tree-pass.h (make_pass_expand_powcabs): Split from pass_cse_sincos.
+ 	* tree-ssa-math-opts.cc (gimple_expand_builtin_cabs): Ditto.
+ 	(class pass_expand_powcabs): Ditto.
+ 	(pass_expand_powcabs::execute): Ditto.
+ 	(make_pass_expand_powcabs): Ditto.
+ 	(pass_cse_sincos::execute): Remove pow/cabs expand part.
+ 	(make_pass_cse_sincos): Ditto.
+ 
+ 2022-07-20  Richard Biener  <richard.guenther@gmail.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/106010
+ 	* tree-complex.cc (init_dont_simulate_again): Lower complex
+ 	type move.
+ 	(expand_complex_move): Also expand COMPLEX_CST for rhs.
+ 
+ 2022-07-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Check
+ 	for incoming ranges on join nodes and add to worklist.
+ 
+ 2022-07-19  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::resolve_dom): New.
+ 	(ranger_cache::range_from_dom): Put all nodes to be calculated
+ 	in the worklist and resolve after the dom walk.
+ 	* gimple-range-cache.h (resolve_dom): New prototype.
+ 
+ 2022-07-19  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* tree-cfg.cc (gimple_verify_flow_info): Check placement of
+ 	returns_twice calls.
+ 
+ 2022-07-19  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* cfghooks.cc (duplicate_block): Expand comment.
+ 	* tree-cfg.cc (gimple_can_duplicate_bb_p): Reject blocks with
+ 	calls that may return twice.
+ 
+ 2022-07-19  Alexander Monakov  <amonakov@ispras.ru>
+ 
+ 	* tree-ssa-sink.cc (select_best_block): Punt if selected block
+ 	has incoming abnormal edges.
+ 
+ 2022-07-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/extend.texi: Remove trailing :.
+ 
+ 2022-07-19  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* tree-ssa-forwprop.cc (simplify_permutation): Use lhs type
+ 	instead of TREE_TYPE (arg0) as result type in folding VEC_PERM_EXPR.
+ 
+ 2022-07-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106331
+ 	* builtins.cc (get_memory_rtx): Compute alignment from
+ 	the original address and set MEM_OFFSET to unknown when
+ 	we create a MEM_EXPR from the base object of the address.
+ 
+ 2022-07-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR lto/106334
+ 	* dwarf2out.cc (dwarf2out_register_external_die): Allow
+ 	map entry re-use during WPA.
+ 
+ 2022-07-19  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/106264
+ 	* builtins.cc (fold_builtin_frexp): Call suppress_warning on
+ 	COMPOUND_EXPR to silence spurious warning if result isn't used.
+ 	(fold_builtin_modf): Likewise.
+ 	(do_mpfr_remquo): Likewise.
+ 
+ 2022-07-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_rtx_costs):
+ 	Change the relative cost of '(set (reg) (const_int N))' where
+ 	N fits into signed 12-bit from 4 to 0 if optimizing for size.
+ 	And use the appropriate macro instead of the bare number 4.
+ 
+ 2022-07-18  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106280
+ 	* value-relation.cc (dom_oracle::register_relation): Register
+ 	transitives only when it is possible for there to be one.
+ 	(dom_oracle::set_one_relation): Return NULL if this is an
+ 	existing relation.
+ 
+ 2022-07-18  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* doc/invoke.texi (RISC-V Options): Add index references for
+ 	`mrelax' and `mriscv-attribute'.
+ 
+ 2022-07-18  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* doc/invoke.texi (Option Summary): Add missing second space
+ 	around `-mstack-protector-guard-reg='.
+ 
+ 2022-07-18  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* doc/invoke.texi (Option Summary): Fix `-mno-riscv-attribute'.
+ 	(RISC-V Options): Likewise, and `-mriscv-attribute'.
+ 
+ 2022-07-18  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* config/arc/arc-arch.h (arc_tune_attr): Add
+ 	ARC_TUNE_ARCHS4X_REL31A variant.
+ 	* config/arc/arc.cc (arc_override_options): Tune options for
+ 	release 310a.
+ 	(arc_sched_issue_rate): Use correct enum.
+ 	(arc600_corereg_hazard): Textual change.
+ 	(arc_hazard): Add release 310a tunning.
+ 	* config/arc/arc.md (tune): Update and take into consideration new
+ 	tune option.
+ 	(tune_dspmpy): Likewise.
+ 	(tune_store): New attribute.
+ 	* config/arc/arc.opt (mtune): New tune option.
+ 	* config/arc/arcHS4x.md (hs4x_brcc0, hs4x_brcc1): New cpu units.
+ 	(hs4x_brcc_op): New instruction rezervation.
+ 	(hs4x_data_store_1_op): Likewise.
+ 	* config/arc/arc-cpus.def (hs4x_rel31): New cpu variant.
+ 	* config/arc/arc-tables.opt: Regenerate.
+ 	* config/arc/t-multilib: Likewise.
+ 	* doc/invoke.texi (ARC): Update mcpu and tune sections.
+ 
+ 2022-07-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-loop-distribution.cc (loop_distribution::distribute_loop):
+ 	When computing cost-based merging do not disregard builtin
+ 	classified partitions in some cases.
+ 
+ 2022-07-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/106253
+ 	* config/arm/arm-builtins.cc (arm_builtin_vectorized_function):
+ 	Delete.
+ 	* config/arm/arm-protos.h (arm_builtin_vectorized_function): Delete.
+ 	* config/arm/arm.cc (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION):
+ 	Delete.
+ 	* config/arm/arm_neon_builtins.def (copysignf): Delete.
+ 	* config/arm/iterators.md (nvrint_pattern): New attribute.
+ 	* config/arm/neon.md (<NEON_VRINT:nvrint_pattern><VCVTF:mode>2):
+ 	New pattern.
+ 	(l<NEON_VCVT:nvrint_pattern><su_optab><VCVTF:mode><v_cmp_result>2):
+ 	Likewise.
+ 	(neon_copysignf<mode>): Rename to...
+ 	(copysign<mode>3): ...this.
+ 
+ 2022-07-18  Claudiu Zissulescu  <claziss@gmail.com>
+ 
+ 	* config/arc/arc.cc (arc_expand_epilogue): Adjust the frame
+ 	pointer first when in interrupts.
+ 
+ 2022-07-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-loop-distribution.cc (copy_loop_before): Add
+ 	the ability to replace the original LC PHI defs.
+ 	(generate_loops_for_partition): Pass through a flag
+ 	whether to redirect original LC PHI defs.
+ 	(generate_code_for_partition): Likewise.
+ 	(loop_distribution::distribute_loop): Compute the partition
+ 	that should provide the LC PHI defs for common reductions
+ 	and pass that down.
+ 
+ 2022-07-18  Richard Ball  <richard.ball@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_evpc_trn): Use std:swap.
+ 	(aarch64_evpc_uzp): Likewise.
+ 	(aarch64_evpc_zip): Likewise.
+ 
+ 2022-07-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106231
+ 	* config/i386/i386.md (*ctzsidi2_<s>ext): New insn_and_split
+ 	to recognize any_extend:DI of ctz:SI which is implicitly extended.
+ 	(*ctzsidi2_<s>ext_falsedep): New define_insn to model a DImode
+ 	extended ctz:SI that has preceding xor to break false dependency.
+ 
+ 2022-07-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/predicates.md (x86_64_const_vector_operand):
+ 	Check the operand's mode matches the specified mode argument.
+ 
+ 2022-07-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/sse.md (kunpckhi): Add UNSPEC_MASKOP unspec.
+ 	(kunpcksi): Likewise, add UNSPEC_MASKOP unspec.
+ 	(kunpckdi): Likewise, add UNSPEC_MASKOP unspec.
+ 	(vec_pack_trunc_qi): Update to specify the now required
+ 	UNSPEC_MASKOP unspec.
+ 	(vec_pack_trunc_<mode>): Likewise.
+ 
+ 2022-07-16  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md
+ 	(*masktrue_const_pow2_minus_one, *masktrue_const_negative_pow2,
+ 	*masktrue_const_shifted_mask): If the immediate for bitwise AND is
+ 	represented as '-(1 << N)', decrease the lower bound of N from 12
+ 	to 1.  And the other immediate for conditional branch is now no
+ 	longer limited to zero, but also one of some positive integers.
+ 	Finally, remove the checks of some conditions, because the comparison
+ 	expressions that don't satisfy such checks are determined as
+ 	compile-time constants and thus will be optimized away before
+ 	RTL expansion.
+ 
+ 2022-07-16  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_emit_constantsynth): Remove.
+ 	(xtensa_constantsynth_2insn): Change to try all three synthetic
+ 	methods and to use the one that fits the immediate value of
+ 	the seed into a Narrow Move Immediate instruction "MOVI.N"
+ 	when the Code Density Option is configured.
+ 
+ 2022-07-15  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/85620
+ 	* config/i386/i386.cc (ix86_function_ok_for_sibcall): Return
+ 	false if callee has indirect_return attribute and caller
+ 	doesn't.
+ 
+ 2022-07-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106273
+ 	* config/i386/i386.md (*andn<dwi>3_doubleword_bmi): Update the
+ 	constraints to reflect the output is earlyclobber, unless it is
+ 	the same register (pair) as one of the operands.
+ 
+ 2022-07-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (Static Analyzer Options): Add the new fd
+ 	warnings to the initial gccoptlist, and to the list of those
+ 	disabled by -fanalyzer-checker=taint.
+ 
+ 2022-07-15  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(enum aarch64_type_qualifiers): Remove qualifier_internal.
+ 	(aarch64_init_simd_builtin_functions): Remove qualifier_internal check.
+ 
+ 2022-07-15  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(v1di_UP): Add V1DI mode to _UP macros.
+ 	* config/aarch64/aarch64-modes.def (VECTOR_MODE): Add V1DI mode.
+ 	* config/aarch64/aarch64-simd-builtin-types.def: Use V1DI mode.
+ 	* config/aarch64/aarch64-simd.md
+ 	(vec_extractv2dfv1df): Replace with...
+ 	(vec_extract<mode><V1half>): ...this.
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_classify_vector_mode): Add V1DI mode.
+ 	* config/aarch64/iterators.md
+ 	(VQ_2E, V1HALF, V1half): New.
+ 	(nunits): Add V1DI mode.
+ 
+ 2022-07-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106278
+ 	* config/i386/i386-features.cc (general_scalar_chain::convert_insn):
+ 	Fix indentation whitespace.
+ 	(timode_scalar_chain::fix_debug_reg_uses): Likewise.
+ 	(timode_scalar_chain::convert_insn): Delete dead code.
+ 	Update TImode REG_EQUAL_NOTE even if the SET_DEST is already V1TI.
+ 	Fix indentation whitespace.
+ 	(convertible_comparison_p): Likewise.
+ 	(timode_scalar_to_vector_candidate_p): Likewise.
+ 
+ 2022-07-15  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-pretty-print.cc (dump_ssaname_info): Use pp_vrange.
+ 
+ 2022-07-15  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add value-range-pretty-print.o.
+ 	* pretty-print.h (pp_vrange): New.
+ 	* value-range.cc (vrange::dump): Call pp version.
+ 	(unsupported_range::dump): Move to its own file.
+ 	(dump_bound_with_infinite_markers): Same.
+ 	(irange::dump): Same.
+ 	(irange::dump_bitmasks): Same.
+ 	(vrange::debug): Remove.
+ 	* value-range.h: Remove virtual designation for dump methods.
+ 	Remove dump_bitmasks method.
+ 	* value-range-pretty-print.cc: New file.
+ 	* value-range-pretty-print.h: New file.
+ 
+ 2022-07-15  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::accept): New.
+ 	(unsupported_range::accept): New.
+ 	* value-range.h (class vrange_visitor): New.
+ 	(class vrange): Add accept method.
+ 	(class unsupported_range): Same.
+ 	(class Value_Range): Same.
+ 
+ 2022-07-15  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* diagnostic-format-json.cc (json_from_location_range): Adjust
+ 	to new label_text API.
+ 	* diagnostic-format-sarif.cc (sarif_builder::make_location_object):
+ 	Likewise.
+ 	* diagnostic-show-locus.cc (struct pod_label_text): Likewise.
+ 	(layout::print_any_labels): Likewise.
+ 	* tree-diagnostic-path.cc (class path_label): Likewise.
+ 	(struct event_range): Likewise.
+ 	(default_tree_diagnostic_path_printer): Likewise.
+ 	(default_tree_make_json_for_path): Likewise.
+ 
+ 2022-07-15  konglin1  <lingling.kong@intel.com>
+ 
+ 	PR target/106113
+ 	* config/i386/i386-builtin.def (BDESC): Fix [u]comi{ss,sd}
+ 	comparison due to intrinsics changed over time.
+ 	* config/i386/i386-expand.cc (ix86_ssecom_setcc):
+ 	Add unordered check and mode for sse comi codegen.
+ 	(ix86_expand_sse_comi): Add unordered check and check a different
+ 	CCmode.
+ 	(ix86_expand_sse_comi_round):Extract unordered check and mode part
+ 	in ix86_ssecom_setcc.
+ 
+ 2022-07-15  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_vectorize_vec_perm_const): Use
+ 	op_mode instead of vmode in calls to force_reg for op0 and op1.
+ 
+ 2022-07-14  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR tree-optimization/103798
+ 	* tree-ssa-forwprop.cc: Include "tree-ssa-strlen.h".
+ 	(simplify_builtin_call): Inline memchr with constant strings of
+ 	no more than the bytes of a word.
+ 	* tree-ssa-strlen.cc (use_in_zero_equality): Make it global.
+ 	* tree-ssa-strlen.h (use_in_zero_equality): New.
+ 
+ 2022-07-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gimplify.cc (lookup_tmp_var): Add NOT_GIMPLE_REG boolean parameter
+ 	and set DECL_NOT_GIMPLE_REG_P on the variable according to it.
+ 	(internal_get_tmp_var): Add NOT_GIMPLE_REG boolean parameter and
+ 	pass it in the call to lookup_tmp_var.
+ 	(get_formal_tmp_var): Pass false in the call to lookup_tmp_var.
+ 	(get_initialized_tmp_var): Likewise.
+ 	(prepare_gimple_addressable): Call internal_get_tmp_var instead of
+ 	get_initialized_tmp_var with NOT_GIMPLE_REG set to true.
+ 
+ 2022-07-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gimple.texi: Close properly a deftypefn.
+ 
+ 2022-07-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gimple.texi: Close properly a deftypefn.
+ 
+ 2022-07-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md:
+ 	In FP constant synthesis split pattern, subcontract to
+ 	avoid_constant_pool_reference() as in the case of integer,
+ 	because it can handle well too.  And cast to int32_t before
+ 	calling xtensa_constantsynth() in order to ignore upper 32-bit.
+ 
+ 2022-07-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (operator_lt::fold_range): Use nonzero bits.
+ 
+ 2022-07-13  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::copy_to_legacy): Set nonzero mask.
+ 	(irange::legacy_intersect): Clear nonzero mask.
+ 	(irange::legacy_union): Same.
+ 	(irange::invert): Same.
+ 
+ 2022-07-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-dom.h (record_temporary_equivalences): Remove.
+ 	* tree-ssa-dom.cc (dom_jt_state::m_blocks_on_stack): New.
+ 	(dom_jt_state::get_blocks_on_stack): Likewise.
+ 	(dom_opt_dom_walker::dom_opt_dom_walker): Take dom_jt_state.
+ 	(back_propagate_equivalences): Remove dominator bitmap
+ 	compute and instead use passed in m_blocks_on_stack.
+ 	(record_temporary_equivalences): Likewise.
+ 	(record_equivalences_from_incoming_edge): Likewise.
+ 	(dom_opt_dom_walker::before_dom_children): Maintain and
+ 	pass down blocks on stack.
+ 	(dom_opt_dom_walker::after_dom_children): Likewise.
+ 
+ 2022-07-13  Andrew Carlotti  <andrew.carlotti@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_general_gimple_fold_builtin): Add fixup for invalid GIMPLE.
+ 
+ 2022-07-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106249
+ 	* tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop):
+ 	Only verify LC SSA of the new_loop if we created it.
+ 	Use TODO_update_ssa_nophi for the SSA update after versioning
+ 	the loop.
+ 
+ 2022-07-12  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (unsigned_singleton_p): Remove.
+ 	(operator_bitwise_and::remove_impossible_ranges): Remove.
+ 	(operator_bitwise_and::fold_range): Set nonzero bits.  *
+ 	* value-range.cc (irange::get_nonzero_bits): Remove
+ 	legacy_mode_p assert.
+ 	(irange::dump_bitmasks): Remove legacy_mode_p check.
+ 
+ 2022-07-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/106253
+ 	* predict.h (insn_optimization_type): Declare.
+ 	* predict.cc (insn_optimization_type): New function.
+ 	* internal-fn.def (IFN_ICEIL, IFN_IFLOOR, IFN_IRINT, IFN_IROUND)
+ 	(IFN_LCEIL, IFN_LFLOOR, IFN_LRINT, IFN_LROUND, IFN_LLCEIL)
+ 	(IFN_LLFLOOR, IFN_LLRINT, IFN_LLROUND): New internal functions.
+ 	* internal-fn.cc (unary_convert_direct): New macro.
+ 	(expand_convert_optab_fn): New function.
+ 	(expand_unary_convert_optab_fn): New macro.
+ 	(direct_unary_convert_optab_supported_p): Likewise.
+ 	* optabs.cc (expand_sfix_optab): Pass insn_optimization_type to
+ 	convert_optab_handler.
+ 	* config/aarch64/aarch64-protos.h
+ 	(aarch64_builtin_vectorized_function): Delete.
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_builtin_vectorized_function): Delete.
+ 	* config/aarch64/aarch64.cc
+ 	(TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Delete.
+ 	* config/i386/i386.cc (ix86_optab_supported_p): Handle lround_optab.
+ 	* config/i386/i386.md (lround<X87MODEF:mode><SWI248x:mode>2): Remove
+ 	optimize_insn_for_size_p test.
+ 
+ 2022-07-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop-manip.cc (create_lcssa_for_virtual_phi):
+ 	Remove.
+ 	(vect_do_peeling): Do not call it, adjust comment.
+ 
+ 2022-07-12  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_builtin_vectorized_function): Remove handling of
+ 	floor, ceil, trunc, round, nearbyint, sqrt, clz and ctz.
+ 
+ 2022-07-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106234
+ 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Check dominator
+ 	cache value before recursively resolving it.
+ 
+ 2022-07-11  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.h (scalar_chain): Add fields
+ 	insns_conv, n_sse_to_integer and n_integer_to_sse to this
+ 	parent class, moved from general_scalar_chain.
+ 	(scalar_chain::convert_compare): Protected method moved
+ 	from general_scalar_chain.
+ 	(mark_dual_mode_def): Make protected, not private virtual.
+ 	(scalar_chain:convert_op): New private virtual method.
+ 	(general_scalar_chain::general_scalar_chain): Simplify constructor.
+ 	(general_scalar_chain::~general_scalar_chain): Delete destructor.
+ 	(general_scalar_chain): Move insns_conv, n_sse_to_integer and
+ 	n_integer_to_sse fields to parent class, scalar_chain.
+ 	(general_scalar_chain::mark_dual_mode_def): Delete prototype.
+ 	(general_scalar_chain::convert_compare): Delete prototype.
+ 	(timode_scalar_chain::compute_convert_gain): Remove simplistic
+ 	implementation, convert to a method prototype.
+ 	(timode_scalar_chain::mark_dual_mode_def): Delete prototype.
+ 	(timode_scalar_chain::convert_op): Prototype new virtual method.
+ 	* config/i386/i386-features.cc (scalar_chain::scalar_chain):
+ 	Allocate insns_conv and initialize n_sse_to_integer and
+ 	n_integer_to_sse fields in constructor.
+ 	(scalar_chain::scalar_chain): Free insns_conv in destructor.
+ 	(general_scalar_chain::general_scalar_chain): Delete
+ 	constructor, now defined in the class declaration.
+ 	(general_scalar_chain::~general_scalar_chain): Delete destructor.
+ 	(scalar_chain::mark_dual_mode_def): Renamed from
+ 	general_scalar_chain::mark_dual_mode_def.
+ 	(timode_scalar_chain::mark_dual_mode_def): Delete.
+ 	(scalar_chain::convert_compare): Renamed from
+ 	general_scalar_chain::convert_compare.
+ 	(timode_scalar_chain::compute_convert_gain): New method to
+ 	determine the gain from converting a TImode chain to V1TImode.
+ 	(timode_scalar_chain::convert_op): New method to convert an
+ 	operand from TImode to V1TImode.
+ 	(timode_scalar_chain::convert_insn) <case REG>: Only PUT_MODE
+ 	on REG_EQUAL notes that were originally TImode (not CONST_INT).
+ 	Handle AND, ANDN, XOR, IOR, NOT and COMPARE.
+ 	(timode_mem_p): Helper predicate to check where operand is
+ 	memory reference with sufficient alignment for TImode STV.
+ 	(timode_scalar_to_vector_candidate_p): Use convertible_comparison_p
+ 	to check whether COMPARE is convertible.  Handle SET_DESTs that
+ 	that are REG_P or MEM_P and SET_SRCs that are REG, CONST_INT,
+ 	CONST_WIDE_INT, MEM, AND, ANDN, IOR, XOR or NOT.
+ 
+ 2022-07-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/106250
+ 	* tree-vect-loop.cc (vectorizable_reduction): Reinstate final
+ 	argument to directly_supported_p.
+ 
+ 2022-07-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-into-ssa.cc (update_ssa): Do not forcefully
+ 	re-compute dominance fast queries for TODO_update_ssa_no_phi.
+ 
+ 2022-07-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106228
+ 	* tree-vect-data-refs.cc (vect_setup_realignment): Adjust
+ 	VUSE compute for the non-loop case.
+ 
+ 2022-07-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-into-ssa.cc (rewrite_mode::REWRITE_UPDATE_REGION): New.
+ 	(rewrite_update_dom_walker::rewrite_update_dom_walker): Update.
+ 	(rewrite_update_dom_walker::m_in_region_flag): New.
+ 	(rewrite_update_dom_walker::before_dom_children): If the region
+ 	to update is marked, STOP at exits.
+ 	(rewrite_blocks): For REWRITE_UPDATE_REGION mark the region
+ 	to be updated.
+ 	(dump_update_ssa): Use bitmap_empty_p.
+ 	(update_ssa): Likewise.  Use REWRITE_UPDATE_REGION when
+ 	TODO_update_ssa_no_phi.
+ 	* tree-cfgcleanup.cc (cleanup_tree_cfg_noloop): Account
+ 	pending update_ssa to the caller.
+ 
+ 2022-07-11  Richard Biener  <rguenthert@suse.de>
+ 
+ 	PR target/105459
+ 	* config/i386/i386-options.cc (ix86_set_current_function):
+ 	Rebuild the target optimization node whenever necessary,
+ 	not only when the optimization node didn't change.
+ 
+ 2022-07-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106228
+ 	* tree-vect-data-refs.cc (vect_setup_realignment): Properly
+ 	set a VUSE operand on the emitted load.
+ 
+ 2022-07-11  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range.cc (gimple_ranger::export_global_ranges): Remove
+ 	verification against legacy value_range.
+ 	(gimple_ranger::register_inferred_ranges): Same.
+ 	(gimple_ranger::export_global_ranges): Rename update_global_range
+ 	to set_range_info.
+ 	* tree-core.h (struct range_info_def): Remove.
+ 	(struct irange_storage_slot): New.
+ 	(struct tree_base): Remove SSA_NAME_ANTI_RANGE_P documentation.
+ 	(struct tree_ssa_name): Add vrange_storage support.
+ 	* tree-ssanames.cc (range_info_p): New.
+ 	(range_info_fits_p): New.
+ 	(range_info_alloc): New.
+ 	(range_info_free): New.
+ 	(range_info_get_range): New.
+ 	(range_info_set_range): New.
+ 	(set_range_info_raw): Remove.
+ 	(set_range_info): Adjust to use vrange_storage.
+ 	(set_nonzero_bits): Same.
+ 	(get_nonzero_bits): Same.
+ 	(duplicate_ssa_name_range_info): Remove overload taking
+ 	value_range_kind.
+ 	Rewrite tree overload to use vrange_storage.
+ 	(duplicate_ssa_name_fn): Adjust to use vrange_storage.
+ 	* tree-ssanames.h (struct range_info_def): Remove.
+ 	(set_range_info): Adjust prototype to take vrange.
+ 	* tree-vrp.cc (vrp_asserts::remove_range_assertions): Call
+ 	duplicate_ssa_name_range_info.
+ 	* tree.h (SSA_NAME_ANTI_RANGE_P): Remove.
+ 	(SSA_NAME_RANGE_TYPE): Remove.
+ 	* value-query.cc (get_ssa_name_range_info): Adjust to use
+ 	vrange_storage.
+ 	(update_global_range): Remove.
+ 	(get_range_global): Remove as_a<irange>.
+ 	* value-query.h (update_global_range): Remove.
+ 	* tree-ssa-dom.cc (set_global_ranges_from_unreachable_edges):
+ 	Rename update_global_range to set_range_info.
+ 	* value-range-storage.cc (vrange_storage::alloc_slot): Remove
+ 	gcc_unreachable.
+ 
+ 2022-07-10  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::operator=): Call verify_range.
+ 	(irange::irange_set): Normalize kind after everything else has
+ 	been set.
+ 	(irange::irange_set_anti_range): Same.
+ 	(irange::set): Same.
+ 	(irange::verify_range): Disallow nonzero masks for VARYING.
+ 	(irange::irange_union): Call verify_range.
+ 	Handle nonzero masks better.
+ 	(irange::irange_intersect): Same.
+ 	(irange::set_nonzero_bits): Calculate mask if either range has an
+ 	explicit mask.
+ 	(irange::intersect_nonzero_bits): Same.
+ 	(irange::union_nonzero_bits): Same.
+ 	(range_tests_nonzero_bits): New.
+ 	(range_tests): Call range_tests_nonzero_bits.
+ 	* value-range.h (class irange): Remove set_nonzero_bits method
+ 	with trees.
+ 	(irange::varying_compatible_p): Set nonzero mask.
+ 
+ 2022-07-10  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (<any_div>di3_fake): Describe
+ 	the sign-extend of result in the RTL template.
+ 	(<any_div><mode>3): Adjust for <any_div>di3_fake change.
+ 
+ 2022-07-10  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_check_zero_div_p):
+ 	Remove static, for use in the machine description file.
+ 	* config/loongarch/loongarch-protos.h:
+ 	(loongarch_check_zero_div_p): Add prototype.
+ 	* config/loongarch/loongarch.md (enabled): New attr.
+ 	(*<optab><mode>3): Add (=r,r,r) and (=&r,0,r) alternatives for
+ 	idiv.  Conditionally enable the alternatives using
+ 	loongarch_check_zero_div_p.
+ 	(<optab>di3_fake): Likewise.
+ 
+ 2022-07-10  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	* config/loongarch/loongarch.md (mulsidi3_64bit): Use mulw.d.w
+ 	instead of mul.d.
+ 
+ 2022-07-09  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (irange::irange_single_pair_union): Set
+ 	VR_VARYING when appropriate.
+ 
+ 2022-07-09  Vit Kabele  <vit.kabele@sysgo.com>
+ 
+ 	* stor-layout.cc (finalize_record_size): Extend warning message.
+ 
+ 2022-07-09  Sam Feifer  <sfeifer@redhat.com>
+ 
+ 	PR tree-optimization/98304
+ 	* match.pd (n - (((n > C1) ? n : C1) & -C2)): New simplification.
+ 
+ 2022-07-09  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* expr.cc (store_expr): Identify trailing NULs in a STRING_CST
+ 	initializer and use clear_storage rather than copying the
+ 	NULs to the destination array.
+ 
+ 2022-07-09  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (define_peephole2): Use match_operand of
+ 	flags_reg_operand to capture and preserve the mode of FLAGS_REG.
+ 	(define_peephole2): Likewise.
+ 	(define_peephole2): Likewise...
+ 
+ 2022-07-09  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-features.cc (convert_compare): Add support
+ 	for *testdi_not_doubleword pattern, "(compare (and (not ...)))"
+ 	by generating a pandn followed by ptest.
+ 	(convertible_comparison_p): Recognize both *cmpdi_doubleword and
+ 	recent *testdi_not_doubleword comparison patterns.
+ 
+ 2022-07-09  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/s390/s390.cc (s390_expand_atomic): Pass false to store_bit_field to
+ 	indicate that the value is not undefined.
+ 
+ 2022-07-09  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/106087
+ 	* tree-ssa-dce.cc (simple_dce_from_worklist): Check
+ 	to make sure the statement is only defining one operand.
+ 
+ 2022-07-08  Lewis Hyatt  <lhyatt@gmail.com>
+ 
+ 	PR preprocessor/91733
+ 	* input.cc (find_end_of_line): New helper function.
+ 	(file_cache_slot::get_next_line): Recognize \r as a line ending.
+ 	* diagnostic-show-locus.cc (test_escaping_bytes_1): Adapt selftest
+ 	since \r will now be interpreted as a line-ending.
+ 
+ 2022-07-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR sanitizer/106132
+ 	* opts.cc (finish_options): Use 2 calls to
+ 	report_conflicting_sanitizer_options.
+ 
+ 2022-07-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106226
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Assert that
+ 	no SSA update is needed.  Move virtual SSA update ...
+ 	* tree-vectorizer.cc (pass_vectorize::execute): ... here,
+ 	via forced virtual renaming when TODO_update_ssa_only_virtuals
+ 	is queued.
+ 	(vect_transform_loops): Return TODO_update_ssa_only_virtuals
+ 	when virtual SSA update is required.
+ 	(try_vectorize_loop_1): Adjust.
+ 	* tree-vect-stmts.cc (vectorizable_simd_clone_call): Allow
+ 	virtual renaming if the ABI forces an aggregate return
+ 	but the original call did not have a virtual definition.
+ 
+ 2022-07-08  Martin Liska  <mliska@suse.cz>
+ 
+ 	* toplev.cc (init_asm_output): Do not init asm_out_file.
+ 
+ 2022-07-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/106063
+ 	* match.pd: Do not apply pattern after veclower is not supported.
+ 
+ 2022-07-08  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* lto-cgraph.cc (input_offload_tables) <LTO_symtab_edge>: Correct
+ 	'fn2' computation.
+ 
+ 2022-07-08  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* expmed.cc (store_bit_field_1): Add parameter that indicates if value is
+ 	still undefined and if so emit a subreg move instead.
+ 	(store_integral_bit_field): Likewise.
+ 	(store_bit_field): Likewise.
+ 	* expr.h (write_complex_part): Likewise.
+ 	* expmed.h (store_bit_field): Add new parameter.
+ 	* builtins.cc (expand_ifn_atomic_compare_exchange_into_call): Use new
+ 	parameter.
+ 	(expand_ifn_atomic_compare_exchange): Likewise.
+ 	* calls.cc (store_unaligned_arguments_into_pseudos): Likewise.
+ 	* emit-rtl.cc (validate_subreg): Likewise.
+ 	* expr.cc (emit_group_store): Likewise.
+ 	(copy_blkmode_from_reg): Likewise.
+ 	(copy_blkmode_to_reg): Likewise.
+ 	(clear_storage_hints): Likewise.
+ 	(write_complex_part):  Likewise.
+ 	(emit_move_complex_parts): Likewise.
+ 	(expand_assignment): Likewise.
+ 	(store_expr): Likewise.
+ 	(store_field): Likewise.
+ 	(expand_expr_real_2): Likewise.
+ 	* ifcvt.cc (noce_emit_move_insn): Likewise.
+ 	* internal-fn.cc (expand_arith_set_overflow): Likewise.
+ 	(expand_arith_overflow_result_store): Likewise.
+ 	(expand_addsub_overflow): Likewise.
+ 	(expand_neg_overflow): Likewise.
+ 	(expand_mul_overflow): Likewise.
+ 	(expand_arith_overflow): Likewise.
+ 
+ 2022-07-08  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/106180
+ 	* config/i386/sse.md (sse2_cvtps2pd<mask_name>_1):
+ 	Rename from *sse2_cvtps2pd<mask_name>_1.
+ 	(vec_unpacks_lo_v4sf): Add handler for memory operand.
+ 
+ 2022-07-08  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_compute_frame_info):
+ 	Modify fp_sp_offset and gp_sp_offset's calculation method,
+ 	when frame->mask or frame->fmask is zero, don't minus UNITS_PER_WORD
+ 	or UNITS_PER_FP_REG.
+ 
+ 2022-07-07  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* diagnostic-format-json.cc (json_from_location_range): Update for
+ 	removal of label_text::maybe_free in favor of automatic memory
+ 	management.
+ 	* diagnostic-format-sarif.cc
+ 	(sarif_builder::make_location_object): Likewise.
+ 	* diagnostic-show-locus.cc (struct pod_label_text): New.
+ 	(class line_label): Convert m_text from label_text to pod_label_text.
+ 	(layout::print_any_labels): Move "text" to the line_label.
+ 	* tree-diagnostic-path.cc (path_label::get_text): Update for
+ 	removal of label_text::maybe_free in favor of automatic memory
+ 	management.
+ 	(event_range::print): Likewise.
+ 	(default_tree_diagnostic_path_printer): Likewise.
+ 	(default_tree_make_json_for_path): Likewise.
+ 
+ 2022-07-07  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* statistics.cc (get_function_name): Add check to see if fn is not NULL.
+ 
+ 2022-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-into-ssa.cc (iterating_old_ssa_names): New.
+ 	(add_new_name_mapping): Grow {new,old}_ssa_names separately
+ 	and only when actually needed.  Assert we are not growing
+ 	the old_ssa_names set when iterating over it.
+ 	(update_ssa): Remove old_ssa_names copying and empty_p
+ 	query, note we are iterating over it and expect no set changes.
+ 
+ 2022-07-07  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/i386/intelmic-mkoffload.cc (generate_host_descr_file)
+ 	(prepare_target_image, main): Handle OpenMP 'requires'.
+ 	(generate_host_descr_file): Switch to 'GOMP_offload_register_ver',
+ 	'GOMP_offload_unregister_ver'.
+ 
+ 2022-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/106219
+ 	* config/i386/i386-builtins.cc (ix86_add_new_builtins): Properly
+ 	set DECL_PURE_P.
+ 
+ 2022-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-manip.cc (add_exit_phis_var): Return the
+ 	number of LC PHIs inserted.
+ 	(add_exit_phis): Return whether any variable required
+ 	multiple LC PHI nodes.
+ 	(rewrite_into_loop_closed_ssa_1): Use TODO_update_ssa_no_phi
+ 	when possible.
+ 
+ 2022-07-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-manip.cc (compute_live_loop_exits): Take
+ 	the def loop exit block bitmap as argument instead of
+ 	re-computing it here.
+ 	(add_exit_phis_var): Adjust.
+ 	(loop_name_cmp): New function.
+ 	(add_exit_phis): Sort variables to insert LC PHI nodes
+ 	after definition loop, for each definition loop compute
+ 	the exit block bitmap once.
+ 	(get_loops_exit): Remove.
+ 	(rewrite_into_loop_closed_ssa_1): Do not pre-record
+ 	all loop exit blocks into bitmaps.  Record loop exits
+ 	if required.
+ 
+ 2022-07-07  Dimitrije Milosevic  <Dimitrije.Milosevic@Syrmia.com>
+ 
+ 	* config/mips/mips.cc (mips_asan_shadow_offset): Reformat
+ 	to handle the N32 ABI.
+ 	* config/mips/mips.h (SUBTARGET_SHADOW_OFFSET): Remove
+ 	the macro, as it is not needed anymore.
+ 
+ 2022-07-06  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.cc (process_obj): Clarify 'target_data' ->
+ 	'[...]_data'.
+ 	* config/nvptx/mkoffload.cc (process): Likewise.
+ 
+ 2022-07-06  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-general.h (enum omp_requires): Use 'GOMP_REQUIRES_[...]'.
+ 
+ 2022-07-05  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-relation.cc (relation_to_code): New vector.
+ 	(relation_oracle::validate_relation): New.
+ 	(set_relation): Allow ssa1 == ssa2 to be registered.
+ 	* value-relation.h (validate_relation): New prototype.
+ 	(query_relation): Make internal variant protected.
+ 
+ 2022-07-05  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.cc (ix86_rtx_costs) <COMPARE>: Provide costs
+ 	for double word comparisons and tests (comparisons against zero).
+ 	* config/i386/i386.md (*test<mode>_not_doubleword): Split DWI
+ 	and;cmp into andn;cmp $0 as a pre-reload splitter.
+ 	(*andn<dwi>3_doubleword_bmi): Use <dwi> instead of <mode> in name.
+ 	(*<any_or><dwi>3_doubleword): Likewise.
+ 
+ 2022-07-05  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Hongtao Liu  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_palignr128): Change
+ 	CODE_FOR_ssse3_palignrti to CODE_FOR_ssse3_palignrv1ti.
+ 	* config/i386/i386-expand.cc (expand_vec_perm_palignr): Use V1TImode
+ 	and gen_ssse3_palignv1ti instead of TImode.
+ 	* config/i386/sse.md (SSESCALARMODE): Delete.
+ 	(define_mode_attr ssse3_avx2): Handle V1TImode instead of TImode.
+ 	(<ssse3_avx2>_palignr<mode>): Use VIMAX_AVX2_AVX512BW as a mode
+ 	iterator instead of SSESCALARMODE.
+ 	(ssse3_palignrdi): Optimize cases where operands[3] is 0 or 64,
+ 	using a single move instruction (if required).
+ 
+ 2022-07-05  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR rtl-optimization/96692
+ 	* config/i386/i386.md (define_split): Split ((A | B) ^ C) ^ D
+ 	as (X & ~Y) ^ Z on target BMI when either C or D is A or B.
+ 
+ 2022-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106198
+ 	* tree-cfgcleanup.cc (repair_loop_structures): Always do a
+ 	full LC SSA rewrite but only if any blocks changed loop
+ 	depth.
+ 
+ 2022-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-manip.cc (find_uses_to_rename_def): Remove.
+ 	(find_uses_to_rename_in_loop): Likewise.
+ 	(rewrite_into_loop_closed_ssa_1): Remove loop parameter and
+ 	uses.
+ 	(rewrite_into_loop_closed_ssa): Adjust.
+ 
+ 2022-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106186
+ 	* tree-ssa-propagate.cc (clean_up_loop_closed_phi):
+ 	Properly handle virtual PHI nodes.
+ 
+ 2022-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106196
+ 	* tree-vect-stmts.cc (vect_finish_stmt_generation): Properly
+ 	handle aggregate returns of calls for VDEF updates.
+ 
+ 2022-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop-manip.cc (vect_set_loop_condition_normal):
+ 	Maintain LC SSA.
+ 
+ 2022-07-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-patterns.cc (vect_convert_input): Expect the input
+ 	type to be signed for optab_vector_mixed_sign.  Update the vectype
+ 	at the same time as type.
+ 	(vect_recog_dot_prod_pattern): Update accordingly.  If usdot isn't
+ 	available, try sdot instead.
+ 	* tree-vect-loop.cc (vect_is_emulated_mixed_dot_prod): New function.
+ 	(vect_model_reduction_cost): Model the cost of implementing usdot
+ 	using sdot.
+ 	(vectorizable_reduction): Likewise.  Skip target support test
+ 	for lane reductions.
+ 	(vect_emulate_mixed_dot_prod): New function.
+ 	(vect_transform_reduction): Use it to emulate usdot via sdot.
+ 
+ 2022-07-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106182
+ 	* loop-init.cc (fix_loop_structure): Return the number
+ 	of newly discovered plus the number of deleted loops.
+ 	* tree-cfgcleanup.cc (repair_loop_structures): Adjust
+ 	variable name.
+ 
+ 2022-07-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc
+ 	(fold_using_range::range_of_ssa_name_with_loop_info): Restrict the
+ 	call to SCEV for irange supported types.
+ 	(fold_using_range::range_of_builtin_int_call): Convert to vrange.
+ 	* gimple-range.cc (gimple_ranger::prefill_stmt_dependencies): Same.
+ 	* tree-ssa-dom.cc (cprop_operand): Same.
+ 
+ 2022-07-04  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/104489
+ 	* calls.cc (precompute_register_parameters): Allow promotion
+ 	of floating point values to be passed in wider integer modes
+ 	by calling new convert_float_to_wider_int.
+ 	(expand_call): Allow floating point results to be returned in
+ 	wider integer modes by calling new convert wider_int_to_float.
+ 	* cfgexpand.cc (expand_value_return): Allow backends to promote
+ 	a scalar floating point return value to a wider integer mode
+ 	by calling new convert_float_to_wider_int.
+ 	* expr.cc (convert_float_to_wider_int): New function.
+ 	(convert_wider_int_to_float): Likewise.
+ 	(expand_expr_real_1) <expand_decl_rtl>: Allow backends to promote
+ 	scalar FP PARM_DECLs to wider integer modes, by calling new
+ 	convert_wider_int_to_float.
+ 	* expr.h (convert_modes): Name arguments for improved documentation.
+ 	(convert_float_to_wider_int): Prototype new function here.
+ 	(convert_wider_int_to_float): Likewise.
+ 	* function.cc (assign_parm_setup_stack): Allow floating point
+ 	values to be passed on the stack as wider integer modes by
+ 	calling new convert_wider_int_to_float.
+ 
+ 2022-07-04  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR tree-optimization/105860
+ 	* tree-sra.cc (build_reconstructed_reference): Start expr
+ 	traversal only just below the outermost union.
+ 
+ 2022-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Revert assert
+ 	and update virtual SSA form again.  Assert we do so for
+ 	a known set of transforms only.
+ 	* tree-vectorizer.h (vec_info::any_known_not_updated_vssa): New.
+ 	* tree-vect-stmts.cc (vectorizable_load): When vectorizing
+ 	using load-lanes allow virtual SSA update.
+ 
+ 2022-07-04  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Chung-Lin Tang  <cltang@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.cc (process_asm): Write '#include <stdint.h>'.
+ 	(process_obj): Pass omp_requires_mask to GOMP_offload_register_ver.
+ 	(main): Ask lto1 to obtain omp_requires_mask and pass it on.
+ 	* config/nvptx/mkoffload.cc (process, main): Likewise.
+ 	* lto-cgraph.cc (omp_requires_to_name): New.
+ 	(input_offload_tables): Save omp_requires_mask.
+ 	(output_offload_tables): Read it, check for consistency,
+ 	save value for mkoffload.
+ 	* omp-low.cc (lower_omp_target): Force output_offloadtables
+ 	call for OMP_REQUIRES_TARGET_USED.
+ 
+ 2022-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Assert that
+ 	no SSA update is needed instead of updating virtual SSA
+ 	form.
+ 	* tree-vect-stmts.cc (vectorizable_load): For hoisted
+ 	invariant load use the loop entry virtual use.
+ 	For emulated gather loads use the virtual use of the
+ 	original stmt like vect_finish_stmt_generation would do.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-pretty-print.cc (dump_generic_node) <ARRAY_TYPE>: Add guard
+ 	for direct circularity.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.cc (gen_array_type_die): Use the default lower bound of
+ 	the language for vector types.
+ 
+ 2022-07-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-storage.cc (irange_storage_slot::set_irange): Set
+ 	nonzero bits in irange.
+ 	(irange_storage_slot::get_irange): Get nonzero bits from irange.
+ 	* value-range.cc (irange::operator=): Set nonzero bits.
+ 	(irange::irange_set): Same.
+ 	(irange::irange_set_anti_range): Same.
+ 	(irange::set): Same.
+ 	(irange::verify_range): Same.
+ 	(irange::legacy_equal_p): Check nonzero bits.
+ 	(irange::equal_p): Same.
+ 	(irange::contains_p): Handle nonzero bits.
+ 	(irange::irange_union): Same.
+ 	(irange::irange_intersect): Same.
+ 	(irange::dump): Same.
+ 	(irange::set_nonzero_bits): New.
+ 	(irange::get_nonzero_bits): New.
+ 	(irange::intersect_nonzero_bits): New.
+ 	(irange::union_nonzero_bits): New.
+ 	(irange::dump_bitmasks): New.
+ 	* value-range.h (class irange): Add m_nonzero_mask.
+ 	(gt_ggc_mx): Handle nonzero bits.
+ 	(gt_pch_nx): Same.
+ 	(irange::set_undefined): Set nonzero bits.
+ 	(irange::set_varying): Same.
+ 	(irange::normalize_kind): Call set_undefined.
+ 
+ 2022-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-manip.h
+ 	(rewrite_virtuals_into_loop_closed_ssa): Remove.
+ 	(rewrite_into_loop_closed_ssa_1): Likewise.
+ 	* tree-ssa-loop-manip.cc (rewrite_into_loop_closed_ssa_1):
+ 	Make static.
+ 	(rewrite_into_loop_closed_ssa): Remove loop overload,
+ 	always rewrite virtuals into LC SSA.
+ 	(check_loop_closed_ssa_bb): Also check virtuals.
+ 	* tree-ssa-dce.cc (remove_dead_phis): Preserve virtual
+ 	LC PHIs when in LC SSA.
+ 	* gimple-loop-jam.cc (fuse_loops): Do not rewrite into
+ 	loop-closed SSA here, but ...
+ 	(tree_loop_unroll_and_jam): ... here once.
+ 	* tree-if-conv.cc (version_loop_for_if_conversion): Use
+ 	the cheaper TODO_update_ssa_no_phi.
+ 	* tree-loop-distribution.cc (version_loop_by_alias_check):
+ 	Likewise.
+ 	* tree-ssa-loop-unswitch.cc (tree_unswitch_single_loop):
+ 	Likewise.
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Likewise.
+ 	(tree_unswitch_outer_loop): Do not rewrite virtuals into
+ 	LC ssa.
+ 	* tree-parloops.cc (transform_to_exit_first_loop_alt):
+ 	Likewise.
+ 	(pass_parallelize_loops::execute): After finishing rewrite
+ 	into LC SSA again because we do not maintain it properly.
+ 
+ 2022-07-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106055
+ 	* graphite.cc (canonicalize_loop_closed_ssa): Check whether
+ 	we can propagate.
+ 
+ 2022-07-04  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/43618
+ 	* config/i386/sse.md (extendv2sfv2df2): New define_expand.
+ 	(sse2_cvtps2pd_<mask_name>): Change constraint of operands[1].
+ 	(*sse2_cvtps2pd_<mask_name>_1): Rename from extendvsdfv2df2.
+ 
+ 2022-07-04  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Use operator!=.
+ 	* ipa-prop.cc (struct ipa_vr_ggc_hash_traits): Same.
+ 	* tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Use set
+ 	with two arguments.
+ 	(find_unswitching_predicates_for_bb): Same.
+ 	* tree-vrp.cc (range_fold_unary_symbolics_p): Same.
+ 	* value-range-equiv.cc (value_range_equiv::equal_p): Use operator==.
+ 	* value-range.cc (irange::equal_p): Rename to...
+ 	(irange::operator==): ...this.
+ 	* value-range.h (irange::set): Remove.
+ 	(irange::operator==): Remove.
+ 	(irange::set_zero): Use set with two arguments.
+ 	* vr-values.cc (vr_values::extract_range_from_binary_expr): Same.
+ 	(vr_values::extract_range_from_unary_expr): Same.
+ 	(check_for_binary_op_overflow): Same.
+ 	(bounds_of_var_in_loop): Same.
+ 
+ 2022-07-03  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/106022
+ 	* config/i386/i386-protos.h (ix86_convert_const_vector_to_integer):
+ 	New.
+ 	* config/i386/i386.cc (ix86_convert_const_vector_to_integer):
+ 	New.
+ 	* config/i386/mmx.md (V_16_32_64): New.
+ 	(*mov<mode>_imm): New patterns for stores with 16-bit, 32-bit
+ 	and 64-bit constant vector.
+ 	* config/i386/predicates.md (x86_64_const_vector_operand): New.
+ 
+ 2022-07-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.cc: Include value-range-storage.h.
+ 	* gimple-range-cache.h (class block_range_cache): Add "class" to
+ 	m_range_allocator.
+ 	* gimple-range-edge.cc
+ 	(gimple_outgoing_range::gimple_outgoing_range): Allocate allocator.
+ 	(gimple_outgoing_range::~gimple_outgoing_range): Free allocator.
+ 	(gimple_outgoing_range::calc_switch_ranges): Dereference allocator.
+ 	* gimple-range-edge.h: Add "class" to m_range_allocator.
+ 	* gimple-range-infer.cc
+ 	(infer_range_manager::infer_range_manager): Allocate allocator.
+ 	(infer_range_manager::~infer_range_manager): Free allocator.
+ 	(infer_range_manager::get_nonzero): Dereference allocator.
+ 	(infer_range_manager::add_range): Same.
+ 	* gimple-range-infer.h (class vrange_allocator): Add "class" to
+ 	m_range_allocator.
+ 	* value-range-storage.h (class vrange_allocator): Move from
+ 	value-range.h.
+ 	(class obstack_vrange_allocator): Same.
+ 	(class ggc_vrange_allocator): Same.
+ 	(vrange_allocator::alloc_vrange): Same.
+ 	(vrange_allocator::alloc_irange): Same.
+ 	* value-range.h (class vrange_allocator): Move to value-range-storage.h.
+ 	(class obstack_vrange_allocator): Same.
+ 	(class ggc_vrange_allocator): Same.
+ 
+ 2022-07-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add value-range-storage.o.
+ 	(GTFILES): Add value-range-storage.h.
+ 	* gengtype.cc (open_base_files): Add value-range-storage.h.
+ 	* value-range-storage.cc: New file.
+ 	* value-range-storage.h: New file.
+ 
+ 2022-07-03  Xi Ruoyao  <xry111@xry111.site>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc (loongarch_check_zero_div_p):
+ 	New static function.
+ 	(loongarch_idiv_insns): Use loongarch_check_zero_div_p instead
+ 	of TARGET_CHECK_ZERO_DIV.
+ 	(loongarch_output_division): Likewise.
+ 	* common/config/loongarch/loongarch-common.cc
+ 	(TARGET_DEFAULT_TARGET_FLAGS): Remove unneeded hook.
+ 	* doc/invoke.texi: Update to match the new behavior.
+ 
+ 2022-07-03  Ian Lance Taylor  <iant@golang.org>
+ 
+ 	* tree-ssa-dse.cc (dse_optimize_stmt): Only delete a trapping
+ 	statement if -fdelete-dead-exceptions.
+ 
+ 2022-07-02  Tim Lange  <mail@tim-lange.me>
+ 
+ 	PR analyzer/105900
+ 	* doc/invoke.texi: Added Wanalyzer-allocation-size.
+ 
+ 2022-07-02  Immad Mir  <mirimmad17@gmail.com>
+ 
+ 	PR analyzer/106003
+ 	* Makefile.in (ANALYZER_OBJS): Add sm-fd.o.
+ 	* doc/invoke.texi:  Add -Wanalyzer-fd-double-close, -Wanalyzer-fd-leak,
+ 	-Wanalyzer-fd-access-mode-mismatch, -Wanalyzer-fd-use-without-check,
+ 	-Wanalyzer-fd-use-after-close.
+ 
+ 2022-07-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* wide-int.h (struct trailing_wide_ints): Add m_num_elements.
+ 	(trailing_wide_ints::set_precision): Add num_elements argument.
+ 	(trailing_wide_ints::extra_size): Same.
+ 
+ 2022-07-01  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*andn<mode>3_doubleword_bmi):
+ 	Use "r" constraint for operand 1.
+ 
+ 2022-07-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-into-ssa.cc (rewrite_update_dom_walker::before_dom_children):
+ 	Do not look at interesting_blocks which is a copy of
+ 	blocks_to_update.
+ 	(update_ssa): Do not initialize it.
+ 	(pass_build_ssa::execute): Set interesting_blocks to NULL
+ 	after releasing it.
+ 
+ 2022-07-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Revert
+ 	back to using maybe_ne (off, -1).
+ 
+ 2022-07-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-sccvn.cc (vn_nary_op_insert_into): Make
+ 	checking dominance check conditional on flag_checking.
+ 
+ 2022-07-01  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/gcn-protos.h (print_operand_address): Remove register
+ 	keyword on 'rtx addr' argument.
+ 
+ 2022-07-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*andn<mode>3_doubleword_bmi): Add constraints
+ 	to post-reload define_insn_and_split.
+ 
+ 2022-07-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/106144
+ 	* wide-int.cc (wi::shifted_mask): If end >= prec, return right after
+ 	emitting element for shift or if shift is 0 first element after start.
+ 	(wide_int_cc_tests): Add tests for equivalency of wi::mask and
+ 	wi::shifted_mask with 0 start.
+ 
+ 2022-07-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/106122
+ 	* config/i386/i386.md (peephole2): Avoid generating pop %esp
+ 	when optimizing for size.
+ 
+ 2022-07-01  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (general_szext_operand): Add TImode
+ 	support using x86_64_hilo_general_operand predicate.
+ 	(*cmp<dwi>_doubleword): Use x86_64_hilo_general_operand predicate.
+ 	(*add<dwi>3_doubleword): Improved optimization of zero addition.
+ 	(and<mode>3): Use SDWIM mode iterator to add support for double
+ 	word bit-wise AND in TImode.  Use force_reg when double word
+ 	immediate operand isn't x86_64_hilo_general_operand.
+ 	(and<dwi>3_doubleword): Generalized from anddi3_doubleword and
+ 	converted into a post-reload splitter.
+ 	(*andndi3_doubleword): Previous define_insn deleted.
+ 	(*andn<mode>3_doubleword_bmi): New define_insn_and_split for
+ 	TARGET_BMI that splits post-reload.
+ 	(*andn<mode>3_doubleword): New define_insn_and_split for
+ 	!TARGET_BMI, that lowers/splits before reload.
+ 	(<any_or><mode>3): Use SDWIM mode iterator to add suppport for
+ 	double word bit-wise XOR and bit-wise IOR in TImode.  Use
+ 	force_reg when double word immediate operand isn't
+ 	x86_64_hilo_general_operand.
+ 	(*<any_or>di3_doubleword): Generalized from <any_or>di3_doubleword.
+ 	(one_cmpl<mode>2): Use SDWIM mode iterator to add support for
+ 	double word bit-wise NOT in TImode.
+ 	(one_cmpl<dwi>2_doubleword): Generalize from one_cmpldi2_doubleword
+ 	and converted into a post-reload splitter.
+ 
+ 2022-07-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/105874
+ 	* expr.cc (expand_expr_real_1) <normal_inner_ref>: Force
+ 	EXPAND_MEMORY for the expansion of the inner reference only
+ 	in the usual cases where a memory reference is required.
+ 
+ 2022-07-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106131
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Force alias-set
+ 	zero when offsetting the read looking through an aggregate
+ 	copy.
+ 
+ 2022-07-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR tree-optimization/106126
+ 	* gimple-if-to-switch.cc (struct condition_info): Save
+ 	has_side_effect.
+ 	(find_conditions): Parse all BBs.
+ 	(pass_if_to_switch::execute): Allow only side effects for first
+ 	BB.
+ 
+ 2022-07-01  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	* common/config/i386/i386-common.cc (OPTION_MASK_ISA2_AVX512F_UNSET):
+ 	Add OPTION_MASK_ISA2_AVX512BW_UNSET, remove
+ 	OPTION_MASK_ISA2_AVX512BF16_UNSET and
+ 	OPTION_MASK_ISA2_AVX512FP16_UNSET.
+ 
+ 2022-06-30  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	PR lto/106129
+ 	* lto-wrapper.cc (find_option): Add argument start.
+ 	(merge_and_complain): Loop over existing_opt_index and
+ 	existing_opt2_index for Xassembler check.  Update calls to
+ 	find_option.
+ 	(find_and_merge_options): Add argument first to determine whether
+ 	to merge options with those passed in *opts.
+ 	(run_gcc): Update calls to find_and_merge_options.
+ 
+ 2022-06-30  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.cc (block_range_cache::block_range_cache):
+ 	Rename vrange_allocator to obstack_vrange_allocator.
+ 	(ssa_global_cache::ssa_global_cache): Same.
+ 	* gimple-range-edge.h (class gimple_outgoing_range): Same.
+ 	* gimple-range-infer.h (class infer_range_manager): Same.
+ 	* value-range.h (class vrange_allocator): Make abstract.
+ 	(class obstack_vrange_allocator): Inherit from vrange_allocator.
+ 	(class ggc_vrange_allocator): New.
+ 
+ 2022-06-30  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (swap_mode): Rename from *swap<mode> to
+ 	provide gen_swapsi.
+ 	(<any_rotate>di3): Handle !TARGET_64BIT rotations by 32 bits
+ 	via new gen_<insn>32di2_doubleword below.
+ 	(<anyrotate>32di2_doubleword): New define_insn_and_split
+ 	that splits after reload as either a pair of move instructions
+ 	or an xchgl (using gen_swapsi).
+ 
+ 2022-06-30  Richard Biener  <rguenther@suse.de>
+ 
+ 	* domwalk.h (dom_walker::dom_walker): Update comment to
+ 	reflect reality and new special argument value for
+ 	bb_index_to_rpo.
+ 	* domwalk.cc (dom_walker::dom_walker): Recognize -1
+ 	bb_index_to_rpo.
+ 	* tree-into-ssa.cc
+ 	(rewrite_update_dom_walker::rewrite_update_dom_walker): Tell
+ 	dom_walker to not use RPO.
+ 
+ 2022-06-30  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-ssa-dom.cc (pass_dominator::execute): Remove m_ranger as
+ 	it is unused.
+ 
+ 2022-06-30  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/106114
+ 	* gimple-range-fold.cc (fold_using_range::relation_fold_and_or): Check
+ 	statement operands instead of GORI cache.
+ 
+ 2022-06-30  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	PR target/106095
+ 	* config/i386/sse.md: Fix asm generation.
+ 
+ 2022-06-29  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR c++/106102
+ 	* system.h: Introduce INCLUDE_PTHREAD_H macros to include <pthread.h>.
+ 
+ 2022-06-29  Joseph Myers  <joseph@codesourcery.com>
+ 
+ 	* config/nios2/nios2.cc (nios2_load_pic_address): Use gen_rtx_MEM
+ 	not gen_const_mem for UNSPEC_PIC_CALL_SYM.
+ 
+ 2022-06-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/106082
+ 	* combine.cc (distribute_notes): Preserve notes when
+ 	they indicate a call doesn't perform a non-local goto.
+ 
+ 2022-06-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/106112
+ 	* tree-ssa-sccvn.cc (valueized_wider_op): Properly extend
+ 	a constant operand according to its type.
+ 
+ 2022-06-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Remove removed evrp-mode.
+ 
+ 2022-06-29  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	PR target/106097
+ 	* config/loongarch/loongarch.cc (loongarch_build_integer):
+ 	Remove undefined behavior from code.
+ 
+ 2022-06-28  Dimitar Dimitrov  <dimitar@dinux.eu>
+ 
+ 	* doc/sourcebuild.texi: Document new no_alignment_constraints
+ 	effective target check.
+ 
+ 2022-06-28  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* Makefile.in: Remove gimple-ssa-evrp.o and gimple-ssa-evrp-analyze.o.
+ 	* flag-types.h (enum evrp_mode): Remove.
+ 	* params.opt: Remove --param=evrp-mode.
+ 	* tree-vrp.cc (make_pass_early_vrp): New.
+ 	(pass_vrp::execute): Call early VRP instance.
+ 	* gimple-ssa-evrp-analyze.cc: Removed.
+ 	* gimple-ssa-evrp-analyze.h: Removed.
+ 	* gimple-ssa-evrp.cc: Removed.
+ 
+ 2022-06-28  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* Makefile.in (TFLAGS): New.
+ 	(GCC_FOR_TARGET): Add TFLAGS.
+ 	(FLAGS_TO_PASS): Pass TFLAGS down.
+ 
+ 2022-06-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-split.cc (fix_loop_bb_probability): Do not
+ 	call update_ssa.
+ 
+ 2022-06-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-into-ssa.cc (insert_updated_phi_nodes_for): Use
+ 	mark_block_for_update.
+ 	(update_ssa): Adjust.
+ 
+ 2022-06-28  Xi Ruoyao  <xry111@xry111.site>
+ 
+ 	PR target/106096
+ 	* config/loongarch/loongarch.h (REG_CLASS_CONTENTS): Exclude
+ 	$r13 from SIBCALL_REGS.
+ 	* config/loongarch/loongarch.cc (loongarch_regno_to_class):
+ 	Change $r13 to JIRL_REGS.
+ 
+ 2022-06-28  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Remove
+ 	irange::supports_p.
+ 
+ 2022-06-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106053
+ 	* match.pd ((T)a == (T)b): Avoid folding away sign
+ 	changes in a comparison if we'd truncate to a boolean.
+ 
+ 2022-06-28  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.md (*rotl<mode>3_insert_4): Replace mode
+ 	iterator GPR with SImode, adjust the condition and output template,
+ 	rename to ...
+ 	(*rotlsi3_insert_4): ... this.
+ 
+ 2022-06-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* genmatch.cc: Add "final" and "override" to various vfunc
+ 	implementations, removing redundant "virtual" as appropriate.
+ 	* gensupport.cc: Likewise.
+ 	* gimple-range-cache.h: Likewise.
+ 	* ipa-icf-gimple.h: Likewise.
+ 	* ipa-icf.h: Likewise.
+ 	* read-md.h: Likewise.
+ 	* read-rtl-function.cc: Likewise.
+ 	* tree-ssa-loop-ch.cc: Likewise.
+ 	* tree-ssa-sccvn.cc: Likewise.
+ 
+ 2022-06-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* config/i386/i386-features.h: Add "final" and "override" to
+ 	scalar_chain vfunc implementations as appropriate.
+ 
+ 2022-06-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* tree-switch-conversion.h: Add "final" and "override" to cluster
+ 	vfunc implementations as appropriate.
+ 
+ 2022-06-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* expr.cc: Add "final" and "override" to op_by_pieces_d vfunc
+ 	implementations as appropriate.
+ 
+ 2022-06-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* compare-elim.cc: Add "final" and "override" to dom_walker vfunc
+ 	implementations, removing redundant "virtual" as appropriate.
+ 	* gimple-ssa-strength-reduction.cc: Likewise.
+ 	* ipa-prop.cc: Likewise.
+ 	* rtl-ssa/blocks.cc: Likewise.
+ 	* tree-into-ssa.cc: Likewise.
+ 	* tree-ssa-dom.cc: Likewise.
+ 	* tree-ssa-math-opts.cc: Likewise.
+ 	* tree-ssa-phiopt.cc: Likewise.
+ 	* tree-ssa-propagate.cc: Likewise.
+ 	* tree-ssa-sccvn.cc: Likewise.
+ 	* tree-ssa-strlen.cc: Likewise.
+ 	* tree-ssa-uncprop.cc: Likewise.
+ 
+ 2022-06-27  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* adjust-alignment.cc: Add "final" and "override" to opt_pass
+ 	vfunc implementations, removing redundant "virtual" as
+ 	appropriate.
+ 	* asan.cc: Likewise.
+ 	* auto-inc-dec.cc: Likewise.
+ 	* auto-profile.cc: Likewise.
+ 	* bb-reorder.cc: Likewise.
+ 	* cfgcleanup.cc: Likewise.
+ 	* cfgexpand.cc: Likewise.
+ 	* cfgrtl.cc: Likewise.
+ 	* cgraphbuild.cc: Likewise.
+ 	* combine-stack-adj.cc: Likewise.
+ 	* combine.cc: Likewise.
+ 	* compare-elim.cc: Likewise.
+ 	* config/i386/i386-features.cc: Likewise.
+ 	* coroutine-passes.cc: Likewise.
+ 	* cprop.cc: Likewise.
+ 	* cse.cc: Likewise.
+ 	* dce.cc: Likewise.
+ 	* df-core.cc: Likewise.
+ 	* dse.cc: Likewise.
+ 	* dwarf2cfi.cc: Likewise.
+ 	* early-remat.cc: Likewise.
+ 	* except.cc: Likewise.
+ 	* final.cc: Likewise.
+ 	* function.cc: Likewise.
+ 	* fwprop.cc: Likewise.
+ 	* gcse.cc: Likewise.
+ 	* gimple-harden-conditionals.cc: Likewise.
+ 	* gimple-if-to-switch.cc: Likewise.
+ 	* gimple-isel.cc: Likewise.
+ 	* gimple-laddress.cc: Likewise.
+ 	* gimple-loop-interchange.cc: Likewise.
+ 	* gimple-loop-jam.cc: Likewise.
+ 	* gimple-loop-versioning.cc: Likewise.
+ 	* gimple-low.cc: Likewise.
+ 	* gimple-ssa-backprop.cc: Likewise.
+ 	* gimple-ssa-evrp.cc: Likewise.
+ 	* gimple-ssa-isolate-paths.cc: Likewise.
+ 	* gimple-ssa-nonnull-compare.cc: Likewise.
+ 	* gimple-ssa-split-paths.cc: Likewise.
+ 	* gimple-ssa-store-merging.cc: Likewise.
+ 	* gimple-ssa-strength-reduction.cc: Likewise.
+ 	* gimple-ssa-warn-access.cc: Likewise.
+ 	* gimple-ssa-warn-alloca.cc: Likewise.
+ 	* gimple-ssa-warn-restrict.cc: Likewise.
+ 	* gimple-warn-recursion.cc: Likewise.
+ 	* graphite.cc: Likewise.
+ 	* ifcvt.cc: Likewise.
+ 	* init-regs.cc: Likewise.
+ 	* ipa-comdats.cc: Likewise.
+ 	* ipa-cp.cc: Likewise.
+ 	* ipa-devirt.cc: Likewise.
+ 	* ipa-fnsummary.cc: Likewise.
+ 	* ipa-free-lang-data.cc: Likewise.
+ 	* ipa-icf.cc: Likewise.
+ 	* ipa-inline.cc: Likewise.
+ 	* ipa-modref.cc: Likewise.
+ 	* ipa-profile.cc: Likewise.
+ 	* ipa-pure-const.cc: Likewise.
+ 	* ipa-reference.cc: Likewise.
+ 	* ipa-split.cc: Likewise.
+ 	* ipa-sra.cc: Likewise.
+ 	* ipa-visibility.cc: Likewise.
+ 	* ipa.cc: Likewise.
+ 	* ira.cc: Likewise.
+ 	* jump.cc: Likewise.
+ 	* loop-init.cc: Likewise.
+ 	* lower-subreg.cc: Likewise.
+ 	* mode-switching.cc: Likewise.
+ 	* modulo-sched.cc: Likewise.
+ 	* multiple_target.cc: Likewise.
+ 	* omp-expand.cc: Likewise.
+ 	* omp-low.cc: Likewise.
+ 	* omp-oacc-kernels-decompose.cc: Likewise.
+ 	* omp-oacc-neuter-broadcast.cc: Likewise.
+ 	* omp-offload.cc: Likewise.
+ 	* omp-simd-clone.cc: Likewise.
+ 	* passes.cc: Likewise.
+ 	* postreload-gcse.cc: Likewise.
+ 	* postreload.cc: Likewise.
+ 	* predict.cc: Likewise.
+ 	* recog.cc: Likewise.
+ 	* ree.cc: Likewise.
+ 	* reg-stack.cc: Likewise.
+ 	* regcprop.cc: Likewise.
+ 	* reginfo.cc: Likewise.
+ 	* regrename.cc: Likewise.
+ 	* reorg.cc: Likewise.
+ 	* sancov.cc: Likewise.
+ 	* sanopt.cc: Likewise.
+ 	* sched-rgn.cc: Likewise.
+ 	* stack-ptr-mod.cc: Likewise.
+ 	* store-motion.cc: Likewise.
+ 	* tracer.cc: Likewise.
+ 	* trans-mem.cc: Likewise.
+ 	* tree-call-cdce.cc: Likewise.
+ 	* tree-cfg.cc: Likewise.
+ 	* tree-cfgcleanup.cc: Likewise.
+ 	* tree-complex.cc: Likewise.
+ 	* tree-eh.cc: Likewise.
+ 	* tree-emutls.cc: Likewise.
+ 	* tree-if-conv.cc: Likewise.
+ 	* tree-into-ssa.cc: Likewise.
+ 	* tree-loop-distribution.cc: Likewise.
+ 	* tree-nrv.cc: Likewise.
+ 	* tree-object-size.cc: Likewise.
+ 	* tree-parloops.cc: Likewise.
+ 	* tree-predcom.cc: Likewise.
+ 	* tree-profile.cc: Likewise.
+ 	* tree-sra.cc: Likewise.
+ 	* tree-ssa-ccp.cc: Likewise.
+ 	* tree-ssa-copy.cc: Likewise.
+ 	* tree-ssa-dce.cc: Likewise.
+ 	* tree-ssa-dom.cc: Likewise.
+ 	* tree-ssa-dse.cc: Likewise.
+ 	* tree-ssa-forwprop.cc: Likewise.
+ 	* tree-ssa-ifcombine.cc: Likewise.
+ 	* tree-ssa-loop-ch.cc: Likewise.
+ 	* tree-ssa-loop-im.cc: Likewise.
+ 	* tree-ssa-loop-ivcanon.cc: Likewise.
+ 	* tree-ssa-loop-prefetch.cc: Likewise.
+ 	* tree-ssa-loop-split.cc: Likewise.
+ 	* tree-ssa-loop-unswitch.cc: Likewise.
+ 	* tree-ssa-loop.cc: Likewise.
+ 	* tree-ssa-math-opts.cc: Likewise.
+ 	* tree-ssa-phiopt.cc: Likewise.
+ 	* tree-ssa-phiprop.cc: Likewise.
+ 	* tree-ssa-pre.cc: Likewise.
+ 	* tree-ssa-reassoc.cc: Likewise.
+ 	* tree-ssa-sccvn.cc: Likewise.
+ 	* tree-ssa-sink.cc: Likewise.
+ 	* tree-ssa-strlen.cc: Likewise.
+ 	* tree-ssa-structalias.cc: Likewise.
+ 	* tree-ssa-uncprop.cc: Likewise.
+ 	* tree-ssa-uninit.cc: Likewise.
+ 	* tree-ssanames.cc: Likewise.
+ 	* tree-stdarg.cc: Likewise.
+ 	* tree-switch-conversion.cc: Likewise.
+ 	* tree-tailcall.cc: Likewise.
+ 	* tree-vect-generic.cc: Likewise.
+ 	* tree-vectorizer.cc: Likewise.
+ 	* tree-vrp.cc: Likewise.
+ 	* tsan.cc: Likewise.
+ 	* ubsan.cc: Likewise.
+ 	* var-tracking.cc: Likewise.
+ 	* vtable-verify.cc: Likewise.
+ 	* web.cc: Likewise.
+ 
+ 2022-06-27  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.md (*movbi): Remove assembler bug workarounds.
+ 	(jump): Likewise.
+ 	(movdi_symbol_save_scc): Likewise.
+ 
+ 2022-06-27  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/7061
+ 	* config/i386/i386.md (*highpartdisi2): New define_insn_and_split.
+ 
+ 2022-06-27  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/94026
+ 	* match.pd (((X << C1) & C2) eq/ne C3): New simplification.
+ 	(((X >> C1) & C2) eq/ne C3): Likewise.
+ 
+ 2022-06-27  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* statistics.cc: Include tree.h.
+ 	(get_function_name): New function.
+ 	(statistics_fini_pass_2): Call get_function_name instead of
+ 	current_function_name.
+ 	(statistics_counter_event): Call get_function_name instead of
+ 	function_name.
+ 	(statistics_histogram_event): Likewise.
+ 
+ 2022-06-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md:
+ 	Suppress unnecessary emitting nop insn in the split patterns for
+ 	integer/FP constant synthesis, and add new peephole2 pattern that
+ 	folds such synthesized additions.
+ 
+ 2022-06-25  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssa-dom.cc (dom_jt_state): Pass ranger to constructor
+ 	instead of evrp.
+ 	(dom_jt_state::push): Remove m_evrp.
+ 	(dom_jt_state::pop): Same.
+ 	(dom_jt_state::record_ranges_from_stmt): Remove.
+ 	(dom_jt_state::register_equiv): Remove updating of evrp ranges.
+ 	(class dom_jt_simplifier): Pass ranger to constructor.
+ 	Inherit from hybrid_jt_simplifier.
+ 	(dom_jt_simplifier::simplify): Convert to ranger.
+ 	(pass_dominator::execute): Same.
+ 	(all_uses_feed_or_dominated_by_stmt): New.
+ 	(dom_opt_dom_walker::set_global_ranges_from_unreachable_edges): New.
+ 	(dom_opt_dom_walker::before_dom_children): Call
+ 	set_global_ranges_from_unreachable_edges.
+ 	Do not call record_ranges_from_stmt.
+ 	(dom_opt_dom_walker::after_dom_children): Remove evrp use.
+ 	(cprop_operand): Use int_range<> instead of value_range.
+ 	(dom_opt_dom_walker::fold_cond): New.
+ 	(dom_opt_dom_walker::optimize_stmt): Pass ranger to
+ 	cprop_into_stmt.
+ 	Use fold_cond() instead of vrp_visit_cond_stmt().
+ 	* tree-ssa-threadedge.cc (jt_state::register_equivs_stmt): Do not
+ 	pass state to simplifier.
+ 	* vr-values.h (class vr_values): Make fold_cond public.
+ 
+ 2022-06-25  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* common/config/tilegx/tilegx-common.cc: Removed.
+ 	* common/config/tilepro/tilepro-common.cc: Removed.
+ 	* config.gcc: Remove tilegx and tilepro entries.
+ 	* config/tilegx/constraints.md: Removed.
+ 	* config/tilegx/feedback.h: Removed.
+ 	* config/tilegx/linux.h: Removed.
+ 	* config/tilegx/mul-tables.cc: Removed.
+ 	* config/tilegx/predicates.md: Removed.
+ 	* config/tilegx/sync.md: Removed.
+ 	* config/tilegx/t-tilegx: Removed.
+ 	* config/tilegx/tilegx-builtins.h: Removed.
+ 	* config/tilegx/tilegx-c.cc: Removed.
+ 	* config/tilegx/tilegx-generic.md: Removed.
+ 	* config/tilegx/tilegx-modes.def: Removed.
+ 	* config/tilegx/tilegx-multiply.h: Removed.
+ 	* config/tilegx/tilegx-opts.h: Removed.
+ 	* config/tilegx/tilegx-protos.h: Removed.
+ 	* config/tilegx/tilegx.cc: Removed.
+ 	* config/tilegx/tilegx.h: Removed.
+ 	* config/tilegx/tilegx.md: Removed.
+ 	* config/tilegx/tilegx.opt: Removed.
+ 	* config/tilepro/constraints.md: Removed.
+ 	* config/tilepro/feedback.h: Removed.
+ 	* config/tilepro/gen-mul-tables.cc: Removed.
+ 	* config/tilepro/linux.h: Removed.
+ 	* config/tilepro/mul-tables.cc: Removed.
+ 	* config/tilepro/predicates.md: Removed.
+ 	* config/tilepro/t-tilepro: Removed.
+ 	* config/tilepro/tilepro-builtins.h: Removed.
+ 	* config/tilepro/tilepro-c.cc: Removed.
+ 	* config/tilepro/tilepro-generic.md: Removed.
+ 	* config/tilepro/tilepro-modes.def: Removed.
+ 	* config/tilepro/tilepro-multiply.h: Removed.
+ 	* config/tilepro/tilepro-protos.h: Removed.
+ 	* config/tilepro/tilepro.cc: Removed.
+ 	* config/tilepro/tilepro.h: Removed.
+ 	* config/tilepro/tilepro.md: Removed.
+ 	* config/tilepro/tilepro.opt: Removed.
+ 	* configure.ac: Remove tilegx and tilepro entries.
+ 	* configure: Rebuilt.
+ 	* doc/extend.texi: Remove tilegx and tilepro entries.
+ 	* doc/install.texi: Remove tilegx and tilepro entries.
+ 	* doc/invoke.texi: Remove tilegx and tilepro entries.
+ 	* doc/md.texi: Remove tilegx and tilepro entries.
+ 
+ 2022-06-25  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* regcprop.cc (pass_cprop_hardreg::execute): Perform a third
+ 	iteration over each basic block that was updated by the second
+ 	iteration.
+ 
+ 2022-06-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87729
+ 	PR c++/20423
+ 	* doc/invoke.texi: Document changes.
+ 
+ 2022-06-24  Iain Buclaw  <ibuclaw@gdcproject.org>
+ 
+ 	* config/tilepro/gen-mul-tables.cc (tilegx_emit): Adjust loop
+ 	condition to avoid overflow.
+ 
+ 2022-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/aix71.h (MASK_PPC_GPOPT, MASK_PPC_GFXOPT): Replace with
+ 	OPTION_MASK_PPC_GPOPT, OPTION_MASK_PPC_GFXOPT.
+ 	* config/rs6000/darwin.h (MASK_PPC_GFXOPT): Replace with
+ 	OPTION_MASK_PPC_GFXOPT.
+ 	* config/rs6000/darwin64-biarch.h (MASK_PPC_GFXOPT): Same.
+ 	* config/rs6000/default64.h (MASK_PPC_GPOPT, MASK_PPC_GFXOPT): Replace with
+ 	OPTION_MASK_PPC_GPOPT, OPTION_MASK_PPC_GFXOPT.
+ 	* config/rs6000/rs6000-c.cc: Update comment.
+ 	* config/rs6000/rs6000-cpus.def: Update RS6000_CPU macro calls.
+ 	* config/rs6000/rs6000.cc (rs6000_darwin_file_start): Replace
+ 	MASK_PPC_GPOPT with OPTION_MASK_PPC_GPOPT.
+ 	(rs6000_builtin_mask_names): Replace MASK_PPC_GFXOPT, MASK_POPCNTB
+ 	with OPTION_MASK_PPC_GFXOPT, OPTION_MASK_POPCNTB.
+ 	* config/rs6000/rs6000.h: (MASK_P8_VECTOR, MASK_P9_VECTOR,
+ 	MASK_P9_MISC, MASK_POPCNTB, MASK_POPCNTD, MASK_PPC_GFXOPT,
+ 	MASK_PPC_GPOPT, MASK_RECIP_PRECISION, MASK_SOFT_FLOAT,
+ 	MASK_VSX, MASK_POWER10, MASK_P10_FUSION): Delete.
+ 
+ 2022-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/aix71.h (TARGET_DEFAULT): Replace MASK_MFCRF with
+ 	OPTION_MASK_MFCRF.
+ 	* config/rs6000/darwin.h (TARGET_DEFAULT): Replace MASK_MULTIPLE with
+ 	OPTION_MASK_MULTIPLE.
+ 	* config/rs6000/darwin64-biarch.h (TARGET_DEFAULT): Same.
+ 	* config/rs6000/default64.h (TARGET_DEFAULT): Replace MASK_MFCRF with
+ 	OPTION_MASK_MFCRF.
+ 	* config/rs6000/eabi.h (TARGET_DEFAULT): Replace MASK_EABI with
+ 	OPTION_MASK_EABI.
+ 	* config/rs6000/eabialtivec.h (TARGET_DEFAULT): Same.
+ 	* config/rs6000/linuxaltivec.h (TARGET_DEFAULT): Replace
+ 	MASK_ALTIVEC with OPTION_MASK_ALTIVEC.
+ 	* config/rs6000/rs6000-cpus.def (MASK_ALTIVEC, MASK_CMPB,
+ 	MASK_CRYPTO, MASK_DFP, MASK_DIRECT_MOVE, MASK_DLMZB, MASK_EABI,
+ 	MASK_FLOAT128_KEYWORD, MASK_FLOAT128_HW, MASK_FPRND,
+ 	MASK_P8_FUSION, MASK_HARD_FLOAT, MASK_HTM, MASK_ISEL, MASK_MFCRF,
+ 	MASK_MMA, MASK_MULHW, MASK_MULTIPLE, MASK_NO_UPDATE):
+ 	Replace with
+ 	OPTION_MASK_ALTIVEC, OPTION_MASK_CMPB, OPTION_MASK_CRYPTO,
+ 	OPTION_MASK_DFP, OPTION_MASK_DIRECT_MOVE, OPTION_MASK_DLMZB,
+ 	OPTION_MASK_EABI, OPTION_MASK_FLOAT128_KEYWORD,
+ 	OPTION_MASK_FLOAT128_HW, OPTION_MASK_FPRND, OPTION_MASK_P8_FUSION,
+ 	OPTION_MASK_HARD_FLOAT, OPTION_MASK_HTM, OPTION_MASK_ISEL,
+ 	OPTION_MASK_MFCRF, OPTION_MASK_MMA, OPTION_MASK_MULHW,
+ 	OPTION_MASK_MULTIPLE, OPTION_MASK_NO_UPDATE.
+ 	* config/rs6000/rs6000.cc (rs6000_darwin_file_start): Replace
+ 	MASK_MFCRF, MASK_ALTIVEC with OPTION_MASK_MFCRF, OPTION_MASK_ALTIVEC.
+ 	* config/rs6000/rs6000.h (TARGET_DEFAULT): Replace MASK_MULTIPLE
+ 	with OPTION_MASK_MULTIPLE.
+ 	(MASK_ALTIVEC, MASK_CMPB, MASK_CRYPTO, MASK_DFP,
+ 	MASK_DIRECT_MOVE, MASK_DLMZB, MASK_EABI, MASK_FLOAT128_KEYWORD,
+ 	MASK_FLOAT128_HW, MASK_FPRND, MASK_P8_FUSION, MASK_HARD_FLOAT,
+ 	MASK_HTM, MASK_ISEL, MASK_MFCRF, MASK_MMA, MASK_MULHW,
+ 	MASK_MULTIPLE, MASK_NO_UPDATE): Delete.
+ 	* config/rs6000/vxworks.h (TARGET_DEFAULT): Replace MASK_EABI
+ 	with OPTION_MASK_EABI.
+ 
+ 2022-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.cc (RS6000_BTM_ALTIVEC, RS6000_BTM_CMPB,
+ 	RS6000_BTM_VSX, RS6000_BTM_FRE, RS6000_BTM_P8_VECTOR,
+ 	RS6000_BTM_P9_VECTOR, RS6000_BTM_P9_MISC, RS6000_BTM_MODULO,
+ 	RS6000_BTM_CRYPTO, RS6000_BTM_HTM): Replace with OPTION_MASK_ALTIVEC,
+ 	OPTION_MASK_CMPB, OPTION_MASK_VSX, OPTION_MASK_POPCNTB,
+ 	OPTION_MASK_P8_VECTOR, OPTION_MASK_P9_VECTOR, OPTION_MASK_P9_MISC,
+ 	OPTION_MASK_MODULO, OPTION_MASK_CRYPTO, OPTION_MASK_HTM.
+ 	* config/rs6000/rs6000.h (RS6000_BTM_MODULO, RS6000_BTM_ALTIVEC,
+ 	RS6000_BTM_CMPB, RS6000_BTM_VSX, RS6000_BTM_P8_VECTOR,
+ 	RS6000_BTM_P9_VECTOR, RS6000_BTM_P9_MISC, RS6000_BTM_CRYPTO,
+ 	RS6000_BTM_HTM, RS6000_BTM_FRE): Remove.
+ 
+ 2022-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.cc: Update comments.
+ 	* config/rs6000/rs6000.cc (RS6000_BTM_FRES, RS6000_BTM_FRSQRTE,
+ 	RS6000_BTM_FRSQRTES, RS6000_BTM_POPCNTD, RS6000_BTM_CELL,
+ 	RS6000_BTM_64BIT, RS6000_BTM_POWERPC64, RS6000_BTM_DFP,
+ 	RS6000_BTM_HARD_FLOAT,RS6000_BTM_LDBL128, RS6000_BTM_FLOAT128,
+ 	RS6000_BTM_FLOAT128_HW, RS6000_BTM_MMA, RS6000_BTM_P10): Replace
+ 	with OPTION_MASK_PPC_GFXOPT, OPTION_MASK_PPC_GFXOPT,
+ 	OPTION_MASK_POPCNTB, OPTION_MASK_POPCNTD,
+ 	OPTION_MASK_FPRND, MASK_64BIT, MASK_POWERPC64,
+ 	OPTION_MASK_DFP, OPTION_MASK_SOFT_FLOAT, OPTION_MASK_MULTIPLE,
+ 	OPTION_MASK_FLOAT128_KEYWORD, OPTION_MASK_FLOAT128_HW,
+ 	OPTION_MASK_MMA, OPTION_MASK_POWER10.
+ 	* config/rs6000/rs6000.h (RS6000_BTM_FRES, RS6000_BTM_FRSQRTE,
+ 	RS6000_BTM_FRSQRTES, RS6000_BTM_POPCNTD, RS6000_BTM_CELL,
+ 	RS6000_BTM_DFP, RS6000_BTM_HARD_FLOAT, RS6000_BTM_LDBL128,
+ 	RS6000_BTM_64BIT, RS6000_BTM_POWERPC64, RS6000_BTM_FLOAT128,
+ 	RS6000_BTM_FLOAT128_HW, RS6000_BTM_MMA, RS6000_BTM_P10): Delete.
+ 
+ 2022-06-24  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000.h (RS6000_BTM_COMMON, RS6000_BTM_ALWAYS,
+ 	MASK_REGNAMES, OPTION_MASK_REGNAMES, MASK_PROTOTYPE,
+ 	OPTION_MASK_PROTOTYPE, MASK_UPDATE, OPTION_MASK_UPDATE): Remove.
+ 
+ 2022-06-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106070
+ 	* match.pd (a != b ? a : b): Fix translation of
+ 	operand_equal_for_comparison_p.
+ 
+ 2022-06-24  Jan Hubicka  <jh@suse.cz>
+ 
+ 	PR ipa/106057
+ 	* tree-ssa-alias.cc (stmt_kills_ref_p): Check for external throw.
+ 
+ 2022-06-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/106059
+ 	* profile-count.h: *= and /= operators need to modify this
+ 	object.
+ 
+ 2022-06-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105930
+ 	* config/i386/i386.md (*<any_or>di3_doubleword): Split after
+ 	reload.  Use rtx_equal_p to avoid creating memory-to-memory moves,
+ 	and emit NOTE_INSN_DELETED if operand[2] is zero (i.e. with -O0).
+ 
+ 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* common.opt (nostdlib++): New.
+ 	* doc/invoke.texi (-nostdlib++): Document it.
+ 
+ 2022-06-24  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/sourcebuild.texi (Environment attributes): Document
+ 	two_plus_gigs.
+ 
+ 2022-06-23  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* common.opt (fdiagnostics-show-rules): New option.
+ 	* diagnostic-format-json.cc (diagnostic_output_format_init_json):
+ 	Fix up context->show_rules.
+ 	* diagnostic-format-sarif.cc
+ 	(diagnostic_output_format_init_sarif): Likewise.
+ 	* diagnostic-metadata.h (diagnostic_metadata::rule): New class.
+ 	(diagnostic_metadata::precanned_rule): New class.
+ 	(diagnostic_metadata::add_rule): New.
+ 	(diagnostic_metadata::get_num_rules): New.
+ 	(diagnostic_metadata::get_rule): New.
+ 	(diagnostic_metadata::m_rules): New field.
+ 	* diagnostic.cc (diagnostic_initialize): Initialize show_rules.
+ 	(print_any_rules): New.
+ 	(diagnostic_report_diagnostic): Call it.
+ 	* diagnostic.h (diagnostic_context::show_rules): New field.
+ 	* doc/invoke.texi (-fno-diagnostics-show-rules): New option.
+ 	* opts.cc (common_handle_option): Handle
+ 	OPT_fdiagnostics_show_rules.
+ 	* toplev.cc (general_init): Set up global_dc->show_rules.
+ 
+ 2022-06-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR c++/106062
+ 	* ubsan.cc (sanitize_unreachable_fn): Change order of calls
+ 	in order to initialize UBSAN built-ins.
+ 
+ 2022-06-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/105600
+ 	* ipa-icf.cc (sem_item_optimizer::filter_removed_items):
+ 	Skip variables with body_removed.
+ 
+ 2022-06-23  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md:(sse4_2_pcmpestr): Replace REGNO with
+ 	reg_or_subregno.
+ 	(sse4_2_pcmpistr): Ditto.
+ 
+ 2022-06-23  Xionghu Luo  <xionghuluo@tencent.com>
+ 
+ 	* cgraph.cc (cgraph_edge::redirect_call_stmt_to_callee): Fix
+ 	typo.
+ 	* tree-ssa-loop-ivopts.cc (struct iv_cand): Likewise.
+ 	* tree-switch-conversion.h: Likewise.
+ 
+ 2022-06-22  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/104642
+ 	* common.opt: Add -funreachable-traps.
+ 	* doc/invoke.texi (-funreachable-traps): Document it.
+ 	* opts.cc (finish_options): Enable at -O0 or -Og.
+ 	* tree.cc (build_common_builtin_nodes): Add __builtin_trap.
+ 	(builtin_decl_unreachable, build_builtin_unreachable): New.
+ 	* tree.h: Declare them.
+ 	* ubsan.cc (sanitize_unreachable_fn): Factor out.
+ 	(ubsan_instrument_unreachable): Use
+ 	gimple_build_builtin_unreachable.
+ 	* ubsan.h (sanitize_unreachable_fn): Declare.
+ 	* gimple.cc (gimple_build_builtin_unreachable): New.
+ 	* gimple.h: Declare it.
+ 	* builtins.cc (expand_builtin_unreachable): Add assert.
+ 	(fold_builtin_0): Call build_builtin_unreachable.
+ 	* sanopt.cc: Don't run for just SANITIZE_RETURN
+ 	or SANITIZE_UNREACHABLE when trapping.
+ 	* cgraphunit.cc (walk_polymorphic_call_targets): Use new
+ 	unreachable functions.
+ 	* gimple-fold.cc (gimple_fold_call)
+ 	(gimple_get_virt_method_for_vtable)
+ 	* ipa-fnsummary.cc (redirect_to_unreachable)
+ 	* ipa-prop.cc (ipa_make_edge_direct_to_target)
+ 	(ipa_impossible_devirt_target)
+ 	* ipa.cc (walk_polymorphic_call_targets)
+ 	* tree-cfg.cc (pass_warn_function_return::execute)
+ 	(execute_fixup_cfg)
+ 	* tree-ssa-loop-ivcanon.cc (remove_exits_and_undefined_stmts)
+ 	(unloop_loops)
+ 	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt):
+ 	Likewise.
+ 
+ 2022-06-22  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/106019
+ 	* tree-data-ref.cc (dr_may_alias_p): Try using the
+ 	innermost_loop_behavior to disambiguate non-loop queries.
+ 
+ 2022-06-22  Palmer Dabbelt  <palmer@rivosinc.com>
+ 
+ 	* doc/invoke.texi (RISC-V): Document -mtune=thead-c906.
+ 
+ 2022-06-22  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (bswapsi2_internal):
+ 	Enlarge the buffer that is obviously smaller than the template
+ 	string given to sprintf().
+ 
+ 2022-06-21  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Marek Polacek  <polacek@redhat.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 	    Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/105991
+ 	* config/rs6000/rs6000.md (rotl<mode>3_insert_3): Check that
+ 	exact_log2 doesn't return -1 (or zero).
+ 	(plus_xor): New code iterator.
+ 	(*rotl<mode>3_insert_3_<code>): New define_insn_and_split.
+ 
+ 2022-06-21  Nathan Sidwell  <nathan@acm.org>
+ 
+ 	* doc/invoke.texi (C++ Modules): Remove language-linkage
+ 	as missing feature.
+ 
+ 2022-06-21  Arjun Shankar  <arjun@redhat.com>
+ 
+ 	PR tree-optimization/94899
+ 	* match.pd (X + C < Y + C -> (signed) X < (signed) Y, if C is
+ 	0x80000000): New simplification.
+ 
+ 2022-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/106032
+ 	* ifcvt.cc (noce_try_sign_mask): Punt if !t_unconditional, and
+ 	t may_trap_or_fault_p, even if it is cheap.
+ 
+ 2022-06-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/106030
+ 	* expr.cc (expand_cond_expr_using_cmove): Pass NULL_RTX instead of
+ 	temp to expand_operands if mode has been promoted.
+ 
+ 2022-06-21  Xionghu Luo  <xionghuluo@tencent.com>
+ 
+ 	PR target/105740
+ 	* gimple-if-to-switch.cc (find_conditions): Don't skip the first
+ 	condition bb.
+ 
+ 2022-06-21  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/105736
+ 	* tree-object-size.cc (addr_object_size): Return size_unknown
+ 	when object offset computation returns an error.
+ 
+ 2022-06-20  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105960
+ 	* config/i386/i386.cc (ix86_function_ok_for_sibcall): Return
+ 	false if PIC register is used when calling ifunc functions.
+ 
+ 2022-06-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/106027
+ 	* fold-const.cc (fold_to_nonsharp_ineq_using_bound): Use the
+ 	type of the prevailing comparison for the new comparison type.
+ 	(fold_binary_loc): Use proper types for the A < X && A + 1 > Y
+ 	to A < X && A >= Y folding.
+ 
+ 2022-06-20  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/105940
+ 	* tree-vect-loop.cc (vect_analyze_loop_2): Add new parameter
+ 	slp_done_for_suggested_uf and adjust with it accordingly.
+ 	(vect_analyze_loop_1): Add new variable slp_done_for_suggested_uf,
+ 	pass it down to vect_analyze_loop_2 for the initial analysis and
+ 	applying suggested unroll factor.
+ 	(vect_is_simple_reduction): Add parameter slp and adjust with it.
+ 	(vect_analyze_scalar_cycles_1): Add parameter slp and pass down.
+ 	(vect_analyze_scalar_cycles): Likewise.
+ 
+ 2022-06-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	* bb-reorder.cc (find_traces_1_round): Add operators / and * and
+ 	use them.
+ 	(better_edge_p): Likewise.
+ 	* cfgloop.cc (find_subloop_latch_edge_by_profile): Likewise.
+ 	* cfgloopmanip.cc (scale_loop_profile): Likewise.
+ 	* cfgrtl.cc (force_nonfallthru_and_redirect): Likewise.
+ 	* cgraph.cc (cgraph_edge::maybe_hot_p): Likewise.
+ 	* config/sh/sh.cc (expand_cbranchdi4): Likewise.
+ 	* dojump.cc (do_compare_rtx_and_jump): Likewise.
+ 	* final.cc (compute_alignments): Likewise.
+ 	* ipa-cp.cc (update_counts_for_self_gen_clones): Likewise.
+ 	(decide_about_value): Likewise.
+ 	* ipa-inline-analysis.cc (do_estimate_edge_time): Likewise.
+ 	* loop-unroll.cc (unroll_loop_runtime_iterations): Likewise.
+ 	* modulo-sched.cc (sms_schedule): Likewise.
+ 	* omp-expand.cc (extract_omp_for_update_vars): Likewise.
+ 	(expand_omp_ordered_sink): Likewise.
+ 	(expand_omp_for_ordered_loops): Likewise.
+ 	(expand_omp_for_static_nochunk): Likewise.
+ 	* predict.cc (maybe_hot_count_p): Likewise.
+ 	(probably_never_executed): Likewise.
+ 	(set_even_probabilities): Likewise.
+ 	(handle_missing_profiles): Likewise.
+ 	(expensive_function_p): Likewise.
+ 	* profile-count.h: Likewise.
+ 	* profile.cc (compute_branch_probabilities): Likewise.
+ 	* stmt.cc (emit_case_dispatch_table): Likewise.
+ 	* symtab-thunks.cc (expand_thunk): Likewise.
+ 	* tree-ssa-loop-manip.cc (tree_transform_and_unroll_loop): Likewise.
+ 	* tree-ssa-sink.cc (select_best_block): Likewise.
+ 	* tree-switch-conversion.cc (switch_decision_tree::analyze_switch_statement): Likewise.
+ 	(switch_decision_tree::balance_case_nodes): Likewise.
+ 	(switch_decision_tree::emit_case_nodes): Likewise.
+ 	* tree-vect-loop.cc (scale_profile_for_vect_loop): Likewise.
+ 
+ 2022-06-20  yulong  <shiyulong@iscas.ac.cn>
+ 
+ 	* config/riscv/riscv-builtins.cc (RISCV_ATYPE_VOID_PTR): New.
+ 	* config/riscv/riscv-cmo.def (RISCV_BUILTIN): Changed the FUNCTION_TYPE
+ 	of RISCV_BUILTIN.
+ 	* config/riscv/riscv-ftypes.def (0): Remove unused.
+ 	(1): New.
+ 
+ 2022-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_is_insn_L32R_p):
+ 	Consider relaxed MOVI instructions as L32R.
+ 
+ 2022-06-19  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_emit_move_sequence):
+ 	Use can_create_pseudo_p(), instead of using individual
+ 	reload_in_progress and reload_completed.
+ 	(xtensa_expand_block_set_small_loop): Use xtensa_simm8x256(),
+ 	the existing predicate function.
+ 	(xtensa_is_insn_L32R_p, gen_int_relational, xtensa_emit_sibcall):
+ 	Use the standard RTX code predicate macros such as MEM_P,
+ 	SYMBOL_REF_P and/or CONST_INT_P.
+ 	* config/xtensa/xtensa.md: Avoid using numeric literals	to determine
+ 	if callee-saved register, at the split patterns for indirect sibcall
+ 	fixups.
+ 
+ 2022-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* common.opt (flag_sanitize_trap): New variable.
+ 	(fsanitize-trap=, fsanitize-trap): New options.
+ 	(fsanitize-undefined-trap-on-error): Change into deprecated alias
+ 	for -fsanitize-trap=all.
+ 	* opts.h (struct sanitizer_opts_s): Add can_trap member.
+ 	* opts.cc (finish_options): Complain about unsupported
+ 	-fsanitize-trap= options.
+ 	(sanitizer_opts): Add can_trap values to all entries.
+ 	(get_closest_sanitizer_option): Ignore -fsanitize-trap=
+ 	options which have can_trap false.
+ 	(parse_sanitizer_options): Add support for -fsanitize-trap=.
+ 	For -fsanitize-trap=all, enable
+ 	SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT.  Disallow
+ 	-fsanitize-trap=vptr here.
+ 	(common_handle_option): Handle OPT_fsanitize_trap_ and
+ 	OPT_fsanitize_trap.
+ 	* sanopt.cc (maybe_optimize_ubsan_null_ifn): Check
+ 	flag_sanitize_trap & SANITIZE_{NULL,ALIGNMENT} instead of
+ 	flag_sanitize_undefined_trap_on_error.
+ 	* gcc.cc (sanitize_spec_function): Use
+ 	flag_sanitize & ~flag_sanitize_trap instead of flag_sanitize
+ 	and drop use of flag_sanitize_undefined_trap_on_error in
+ 	"undefined" handling.
+ 	* ubsan.cc (ubsan_instrument_unreachable): Use
+ 	flag_sanitize_trap & SANITIZE_??? instead of
+ 	flag_sanitize_undefined_trap_on_error.
+ 	(ubsan_expand_bounds_ifn, ubsan_expand_null_ifn,
+ 	ubsan_expand_objsize_ifn, ubsan_expand_ptr_ifn,
+ 	ubsan_build_overflow_builtin, instrument_bool_enum_load,
+ 	ubsan_instrument_float_cast, instrument_nonnull_arg,
+ 	instrument_nonnull_return, instrument_builtin): Likewise.
+ 	* doc/invoke.texi (-fsanitize-trap=, -fsanitize-trap): Document.
+ 	(-fsanitize-undefined-trap-on-error): Document as deprecated
+ 	alias of -fsanitize-trap.
+ 
+ 2022-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/105998
+ 	* varasm.cc (narrowing_initializer_constant_valid_p): Check
+ 	SCALAR_INT_MODE_P instead of INTEGRAL_MODE_P, also break on
+ 	! INTEGRAL_TYPE_P and do the same check also on op{0,1}'s type.
+ 
+ 2022-06-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/105835
+ 	* match.pd (convert (mult zero_one_valued_p@1 INTEGER_CST@2)):
+ 	Narrow integer multiplication by a zero_one_valued_p operand.
+ 	(convert (cond @1 INTEGER_CST@2 INTEGER_CST@3)): Push integer
+ 	conversions inside COND_EXPR where both data operands are
+ 	integer constants.
+ 
+ 2022-06-18  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/constraints.md (Y):
+ 	Change to include integer constants until reload begins.
+ 	* config/xtensa/predicates.md (move_operand): Ditto.
+ 	* config/xtensa/xtensa.cc (xtensa_emit_move_sequence):
+ 	Change to allow storing integer constants into litpool only after
+ 	reload begins.
+ 
+ 2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105209
+ 	* config/alpha/alpha-protos.h (alpha_store_data_bypass_p): New.
+ 	* config/alpha/alpha.cc (alpha_store_data_bypass_p): New function.
+ 	(alpha_store_data_bypass_p_1): Ditto.
+ 	* config/alpha/ev4.md: Use alpha_store_data_bypass_p instead
+ 	of generic store_data_bypass_p.
+ 	(ev4_ist_c): Remove insn reservation.
+ 
+ 2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105970
+ 	* config/i386/i386.cc (ix86_function_arg): Assert that
+ 	the mode of pointer argumet is equal to ptr_mode, not Pmode.
+ 
+ 2022-06-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105993
+ 	* config/i386/sse.md (vpmov splitter): Use (match_dup ...)
+ 	instead of REGNO comparisons in combine splitter.
+ 
+ 2022-06-17  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_invalid_conversion): Correct some
+ 	types.
+ 
+ 2022-06-17  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/bitmanip.md: Supress warning.
+ 
+ 2022-06-17  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/106004
+ 	* config/arm/arm.cc (arm_print_operand, case 'V'): Use UINTVAL.
+ 	Clear bits in the mask above bit 31.
+ 
+ 2022-06-17  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/mve.md (*mve_mov<mode>): Re-order constraints
+ 	to avoid spilling trivial literals to the constant pool.
+ 
+ 2022-06-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc (warn_string_no_nul): Add
+ 	auto_diagnostic_group to group any warning with its note.
+ 	(maybe_warn_for_bound): Likewise.
+ 	(check_access): Likewise.
+ 	(warn_dealloc_offset): Likewise.
+ 	(pass_waccess::maybe_warn_memmodel): Likewise.
+ 	(pass_waccess::maybe_check_dealloc_call): Likewise.
+ 	(pass_waccess::warn_invalid_pointer): Likewise.
+ 	(pass_waccess::check_dangling_stores): Likewise.
+ 
+ 2022-06-16  Jason Merrill  <jason@redhat.com>
+ 
+ 	* opts.cc (common_handle_option) [OPT_fsanitize_]: Set
+ 	opts_set->x_flag_sanitize.
+ 
+ 2022-06-16  Jason Merrill  <jason@redhat.com>
+ 
+ 	* flags.h (issue_strict_overflow_warning): Comment #endif.
+ 
+ 2022-06-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::apply_inferred_ranges): If name
+ 	was invaraint before, clear the invariant bit.
+ 	* gimple-range-gori.cc (gori_map::set_range_invariant): Add a flag.
+ 	* gimple-range-gori.h (gori_map::set_range_invariant): Adjust prototype.
+ 
+ 2022-06-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* tree-ssa-propagate.cc (before_dom_children): Call value_of_stmt.
+ 
+ 2022-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105983
+ 	* match.pd (y == XXX_MIN || x < y -> x <= y - 1,
+ 	y != XXX_MIN && x >= y -> x > y - 1): Use :cs instead of :s
+ 	on non-equality comparisons.
+ 
+ 2022-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105984
+ 	* match.pd (__builtin_mul_overflow_p (x, cst, (stype) 0) ->
+ 	x > stype_max / cst || x < stype_min / cst): fold_convert @1
+ 	to TREE_TYPE (@0) just once and test for negative divisor
+ 	also on that folded constant instead of on @1.
+ 
+ 2022-06-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/105951
+ 	* tree-ssa-ccp.cc (optimize_atomic_bit_test_and,
+ 	optimize_atomic_op_fetch_cmp_0): Remember gimple_call_fn (call)
+ 	as last argument to the internal functions.
+ 	* builtins.cc (expand_ifn_atomic_bit_test_and): Adjust for the
+ 	extra call argument to ifns.  If expand_atomic_fetch_op fails for the
+ 	lhs == NULL_TREE case, fall through into the optab code with
+ 	gen_reg_rtx (mode) as target.  If second expand_atomic_fetch_op
+ 	fails, construct a CALL_EXPR and expand that.
+ 	(expand_ifn_atomic_op_fetch_cmp_0): Adjust for the extra call argument
+ 	to ifns.  If expand_atomic_fetch_op fails, construct a CALL_EXPR and
+ 	expand that.
+ 
+ 2022-06-16  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	PR target/103316
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin): Enable
+ 	gimple folding for RS6000_BIF_VCMPEQUT, RS6000_BIF_VCMPNET,
+ 	RS6000_BIF_CMPGE_1TI, RS6000_BIF_CMPGE_U1TI, RS6000_BIF_VCMPGTUT,
+ 	RS6000_BIF_VCMPGTST, RS6000_BIF_CMPLE_1TI, RS6000_BIF_CMPLE_U1TI.
+ 	* config/rs6000/vector.md (VEC_IC): New mode iterator.  Add support
+ 	for new Power10 V1TI instructions.
+ 	(vec_cmp<mode><mode>): Set mode iterator to VEC_IC.
+ 	(vec_cmpu<mode><mode>): Likewise.
+ 	(vector_nlt<mode>): Set mode iterator to VEC_IC.
+ 	(vector_nltv1ti): Remove.
+ 	(vector_gtu<mode>): Set mode iterator to VEC_IC.
+ 	(vector_gtuv1ti): Remove.
+ 	(vector_nltu<mode>): Set mode iterator to VEC_IC.
+ 	(vector_nltuv1ti): Remove.
+ 	(vector_geu<mode>): Set mode iterator to VEC_IC.
+ 	(vector_ngt<mode>): Likewise.
+ 	(vector_ngtv1ti): Remove.
+ 	(vector_ngtu<mode>): Set mode iterator to VEC_IC.
+ 	(vector_ngtuv1ti): Remove.
+ 	(vector_gtu_<mode>_p): Set mode iterator to VEC_IC.
+ 	(vector_gtu_v1ti_p): Remove.
+ 	(vrotl<mode>3): Set mode iterator to VEC_IC.  Emit insns for V1TI.
+ 	(vrotlv1ti3): Remove.
+ 	(vashr<mode>3): Set mode iterator to VEC_IC.  Emit insns for V1TI.
+ 	(vashrv1ti3): Remove.
+ 
+ 2022-06-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gengtype-state.cc (read_a_state_token): Do not skip extra
+ 	character after escaped sequence.
+ 
+ 2022-06-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/105564
+ 	* spellcheck.cc (test_find_closest_string): Add new test.
+ 	* spellcheck.h (class best_match): Prefer a difference in
+ 	trailing sign symbol.
+ 
+ 2022-06-16  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/53533
+ 	* match.pd: Simplify (B * v + C) * D -> BD * v + CD and
+ 	(v + B) * C + D -> C * v + BCD when B,C,D are all INTEGER_CST,
+ 	and there's no overflow or !TYPE_OVERFLOW_UNDEFINED.
+ 
+ 2022-06-15  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (DSC): New split pattern and mode iterator.
+ 
+ 2022-06-15  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/predicates.md (reload_operand):
+ 	New predicate.
+ 	* config/xtensa/xtensa.md: New peephole2 pattern.
+ 
+ 2022-06-15  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (*round_up_to_even):
+ 	New insn-and-split pattern.
+ 	(*signed_ge_zero): Ditto.
+ 
+ 2022-06-15  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa-protos.h (xtensa_prepare_expand_call,
+ 	xtensa_emit_sibcall): New prototypes.
+ 	(xtensa_expand_epilogue): Add new argument that specifies whether
+ 	or not sibling call.
+ 	* config/xtensa/xtensa.cc (TARGET_FUNCTION_OK_FOR_SIBCALL):
+ 	New macro definition.
+ 	(xtensa_prepare_expand_call): New function in order to share
+ 	the common code.
+ 	(xtensa_emit_sibcall, xtensa_function_ok_for_sibcall):
+ 	New functions.
+ 	(xtensa_expand_epilogue): Add new argument sibcall_p and use it
+ 	for sibling call handling.
+ 	* config/xtensa/xtensa.md (call, call_value):
+ 	Use xtensa_prepare_expand_call.
+ 	(call_internal, call_value_internal):
+ 	Add the condition in order to be disabled if sibling call.
+ 	(sibcall, sibcall_value, sibcall_epilogue): New expansions.
+ 	(sibcall_internal, sibcall_value_internal): New insn patterns,
+ 	and split ones in order to take care of the indirect sibcalls.
+ 
+ 2022-06-15  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* doc/invoke.texi: Document -mextra-l32r-costs= option.
+ 
+ 2022-06-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/105962
+ 	* doc/invoke.texi: Add -fno-analyzer-undo-inlining.
+ 	* tree-diagnostic-path.cc (default_tree_diagnostic_path_printer):
+ 	Extend -fdiagnostics-path-format=separate-events so that with
+ 	-fdiagnostics-show-path-depths it prints fndecls as well as stack
+ 	depths.
+ 
+ 2022-06-15  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* value-relation.h: Add "final" and "override" to relation_oracle
+ 	vfunc implementations as appropriate.
+ 
+ 2022-06-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/105975
+ 	Revert everything apart from the expand_fn_using_insn and
+ 	expand_direct_optab_fn changes from:
+ 	* internal-fn.def (DEF_INTERNAL_INSN_FN): New macro.
+ 	(GOMP_SIMT_ENTER_ALLOC, GOMP_SIMT_EXIT, GOMP_SIMT_LANE)
+ 	(GOMP_SIMT_LAST_LANE, GOMP_SIMT_ORDERED_PRED, GOMP_SIMT_VOTE_ANY)
+ 	(GOMP_SIMT_XCHG_BFLY, GOMP_SIMT_XCHG_IDX): Use it.
+ 	* internal-fn.h (direct_internal_fn_info::directly_mapped): New
+ 	member variable.
+ 	(direct_internal_fn_info::vectorizable): Reduce to 1 bit.
+ 	(direct_internal_fn_p): Also return true for internal functions
+ 	that map directly to instructions defined target-insns.def.
+ 	(direct_internal_fn): Adjust comment accordingly.
+ 	* internal-fn.cc (direct_insn, optab1, optab2, vectorizable_optab1)
+ 	(vectorizable_optab2): New local macros.
+ 	(not_direct): Initialize directly_mapped.
+ 	(mask_load_direct, load_lanes_direct, mask_load_lanes_direct)
+ 	(gather_load_direct, len_load_direct, mask_store_direct)
+ 	(store_lanes_direct, mask_store_lanes_direct, vec_cond_mask_direct)
+ 	(vec_cond_direct, scatter_store_direct, len_store_direct)
+ 	(vec_set_direct, unary_direct, binary_direct, ternary_direct)
+ 	(cond_unary_direct, cond_binary_direct, cond_ternary_direct)
+ 	(while_direct, fold_extract_direct, fold_left_direct)
+ 	(mask_fold_left_direct, check_ptrs_direct): Use the macros above.
+ 	(expand_GOMP_SIMT_ENTER_ALLOC, expand_GOMP_SIMT_EXIT): Delete
+ 	(expand_GOMP_SIMT_LANE, expand_GOMP_SIMT_LAST_LANE): Likewise;
+ 	(expand_GOMP_SIMT_ORDERED_PRED, expand_GOMP_SIMT_VOTE_ANY): Likewise.
+ 	(expand_GOMP_SIMT_XCHG_BFLY, expand_GOMP_SIMT_XCHG_IDX): Likewise.
+ 	(direct_internal_fn_types): Handle functions that map to instructions
+ 	defined in target-insns.def.
+ 	(direct_internal_fn_types): Likewise.
+ 	(direct_internal_fn_supported_p): Likewise.
+ 	(internal_fn_expanders): Likewise.
+ 	(expand_fn_using_insn): New function,
+ 	split out and adapted from...
+ 	(expand_direct_optab_fn): ...here.
+ 	(expand_GOMP_SIMT_ENTER_ALLOC): Use it.
+ 	(expand_GOMP_SIMT_EXIT): Likewise.
+ 	(expand_GOMP_SIMT_LANE): Likewise.
+ 	(expand_GOMP_SIMT_LAST_LANE): Likewise.
+ 	(expand_GOMP_SIMT_ORDERED_PRED): Likewise.
+ 	(expand_GOMP_SIMT_VOTE_ANY): Likewise.
+ 	(expand_GOMP_SIMT_XCHG_BFLY): Likewise.
+ 	(expand_GOMP_SIMT_XCHG_IDX): Likewise.
+ 
+ 2022-06-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/105981
+ 	* config/arm/arm.cc (gen_cpymem_ldrd_strd): Rename low_reg and hi_reg
+ 	to first_reg and second_reg respectively.  Initialize them correctly
+ 	when generating big-endian code.
+ 
+ 2022-06-15  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/105974
+ 	* config/arm/arm.cc (arm_bfi_1_p): Use UINTVAL instead of XUINT.
+ 
+ 2022-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105971
+ 	* tree-ssa-alias.cc (refs_may_alias_p_2): Put bail-out for
+ 	FUNCTION_DECL and LABEL_DECL refs after decl-decl disambiguation
+ 	to leak less surprising alias results.
+ 
+ 2022-06-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105969
+ 	* gimple-ssa-sprintf.cc (get_origin_and_offset_r): Avoid division
+ 	by zero in overflow check.
+ 
+ 2022-06-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/105254
+ 	PR tree-optimization/105940
+ 	Revert:
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_vector_costs::determine_suggested_unroll_factor): Take a
+ 	loop_vec_info as argument.  Restrict the unroll factor to values
+ 	that divide the VF.
+ 	(aarch64_vector_costs::finish_cost): Update call accordingly.
+ 
+ 2022-06-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* read-rtl.cc (find_int): Substitute symbolic constants
+ 	before converting the string to an integer.
+ 
+ 2022-06-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd (convert (lshift @1 INTEGER_CST@2)): Narrow integer
+ 	left shifts by a constant when the result is truncated, and the
+ 	shift constant is well-defined.
+ 	* tree-vect-patterns.cc (vect_recog_rotate_pattern): Add
+ 	support for rotations of signed integer types, by lowering
+ 	using unsigned vector shifts.
+ 
+ 2022-06-15  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105953
+ 	* config/i386/sse.md (*avx_cmp<mode>3_ltint_not): Force_reg
+ 	operands[3].
+ 
+ 2022-06-14  Surya Kumari Jangala  <jskumari@linux.ibm.com>
+ 
+ 	PR rtl-optimization/105041
+ 	* regrename.cc (check_new_reg_p): Use nregs value from du chain.
+ 
+ 2022-06-14  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/vsx.md (VS_scalar): Delete.
+ 	(rest of file): Adjust.
+ 
+ 2022-06-14  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/105739
+ 	* ipa-prop.cc (ipa_load_from_parm_agg): Punt on volatile loads.
+ 
+ 2022-06-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/bitmanip.md: Add split to handle opportunities
+ 	for slli + sh[123]add.uw
+ 
+ 2022-06-14  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/predicates.md (consecutive_bits_operand):
+ 	Implement new predicate.
+ 
+ 2022-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105946
+ 	* tree-ssa-uninit.cc (maybe_warn_pass_by_reference):
+ 	Do not look at arguments not specified in the function call.
+ 
+ 2022-06-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105965
+ 	* match.pd (view_convert CONSTRUCTOR): Handle single-element
+ 	CTOR case.
+ 
+ 2022-06-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* warning-control.cc (copy_warning) [generic version]: Do not erase
+ 	the warning data of the destination location when the no-warning
+ 	bit is not set on the source.
+ 	(copy_warning) [tree version]: Return early if TO is equal to FROM.
+ 	(copy_warning) [gimple version]: Likewise.
+ 
+ 2022-06-14  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/105940
+ 	* tree-vect-loop.cc (vect_analyze_loop_2): Move the place of
+ 	applying suggested_unroll_factor after start_over.
+ 
+ 2022-06-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/predicates.md (shifted_mask_operand):
+ 	New predicate.
+ 	* config/xtensa/xtensa.md (*andsi3_const_pow2_minus_one):
+ 	New insn-and-split pattern.
+ 	(*andsi3_const_negative_pow2, *andsi3_const_shifted_mask,
+ 	*masktrue_const_pow2_minus_one, *masktrue_const_negative_pow2,
+ 	*masktrue_const_shifted_mask): Ditto.
+ 
+ 2022-06-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (*masktrue_bitcmpl): New insn pattern.
+ 
+ 2022-06-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa-protos.h (xtensa_emit_branch):
+ 	Remove the first argument.
+ 	(xtensa_emit_bit_branch): Remove it because now called only from the
+ 	output statement of *bittrue insn pattern.
+ 	* config/xtensa/xtensa.cc (gen_int_relational): Remove the last
+ 	argument 'p_invert', and make so that the condition is reversed by
+ 	itself as needed.
+ 	(xtensa_expand_conditional_branch): Share the common path, and remove
+ 	condition inversion code.
+ 	(xtensa_emit_branch, xtensa_emit_movcc): Simplify by removing the
+ 	"false side" pattern.
+ 	(xtensa_emit_bit_branch): Remove it because of the abovementioned
+ 	reason, and move the function body to *bittrue insn pattern.
+ 	* config/xtensa/xtensa.md (*bittrue): Transplant the output
+ 	statement from removed xtensa_emit_bit_branch().
+ 	(*bfalse, *ubfalse, *bitfalse, *maskfalse): Remove the "false side"
+ 	insn patterns.
+ 
+ 2022-06-14  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/predicates.md (logical_shift_operator,
+ 	xtensa_shift_per_byte_operator): New predicates.
+ 	* config/xtensa/xtensa-protos.h (xtensa_shlrd_which_direction):
+ 	New prototype.
+ 	* config/xtensa/xtensa.cc (xtensa_shlrd_which_direction):
+ 	New helper function for funnel shift patterns.
+ 	* config/xtensa/xtensa.md (ior_op): New code iterator.
+ 	(*ashlsi3_1): Replace with new split pattern.
+ 	(*shift_per_byte): Unify *ashlsi3_3x, *ashrsi3_3x and *lshrsi3_3x.
+ 	(*shift_per_byte_omit_AND_0, *shift_per_byte_omit_AND_1):
+ 	New insn-and-split patterns that redirect to *xtensa_shift_per_byte,
+ 	in order to omit unnecessary bitwise AND operation.
+ 	(*shlrd_reg_<code>, *shlrd_const_<code>, *shlrd_per_byte_<code>,
+ 	*shlrd_per_byte_<code>_omit_AND):
+ 	New insn patterns for funnel shifts.
+ 
+ 2022-06-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree-cfg.cc (pass_warn_function_return::execute): Also check
+ 	BUILT_IN_TRAP.
+ 
+ 2022-06-13  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md (length): Remove the explicit setting
+ 	for "fcmp".
+ 
+ 2022-06-13  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_available_features): Require
+ 	AVX for F16C and VAES.
+ 
+ 2022-06-13  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105927
+ 	* config/i386/predicates.md (register_no_elim_operand):
+ 	Return true for subreg of a memory operand.
+ 
+ 2022-06-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* internal-fn.def (DEF_INTERNAL_INSN_FN): New macro.
+ 	(GOMP_SIMT_ENTER_ALLOC, GOMP_SIMT_EXIT, GOMP_SIMT_LANE)
+ 	(GOMP_SIMT_LAST_LANE, GOMP_SIMT_ORDERED_PRED, GOMP_SIMT_VOTE_ANY)
+ 	(GOMP_SIMT_XCHG_BFLY, GOMP_SIMT_XCHG_IDX): Use it.
+ 	* internal-fn.h (direct_internal_fn_info::directly_mapped): New
+ 	member variable.
+ 	(direct_internal_fn_info::vectorizable): Reduce to 1 bit.
+ 	(direct_internal_fn_p): Also return true for internal functions
+ 	that map directly to instructions defined target-insns.def.
+ 	(direct_internal_fn): Adjust comment accordingly.
+ 	* internal-fn.cc (direct_insn, optab1, optab2, vectorizable_optab1)
+ 	(vectorizable_optab2): New local macros.
+ 	(not_direct): Initialize directly_mapped.
+ 	(mask_load_direct, load_lanes_direct, mask_load_lanes_direct)
+ 	(gather_load_direct, len_load_direct, mask_store_direct)
+ 	(store_lanes_direct, mask_store_lanes_direct, vec_cond_mask_direct)
+ 	(vec_cond_direct, scatter_store_direct, len_store_direct)
+ 	(vec_set_direct, unary_direct, binary_direct, ternary_direct)
+ 	(cond_unary_direct, cond_binary_direct, cond_ternary_direct)
+ 	(while_direct, fold_extract_direct, fold_left_direct)
+ 	(mask_fold_left_direct, check_ptrs_direct): Use the macros above.
+ 	(expand_GOMP_SIMT_ENTER_ALLOC, expand_GOMP_SIMT_EXIT): Delete
+ 	(expand_GOMP_SIMT_LANE, expand_GOMP_SIMT_LAST_LANE): Likewise;
+ 	(expand_GOMP_SIMT_ORDERED_PRED, expand_GOMP_SIMT_VOTE_ANY): Likewise.
+ 	(expand_GOMP_SIMT_XCHG_BFLY, expand_GOMP_SIMT_XCHG_IDX): Likewise.
+ 	(direct_internal_fn_types): Handle functions that map to instructions
+ 	defined in target-insns.def.
+ 	(direct_internal_fn_types): Likewise.
+ 	(direct_internal_fn_supported_p): Likewise.
+ 	(internal_fn_expanders): Likewise.
+ 
+ 2022-06-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* internal-fn.cc (expand_fn_using_insn): New function,
+ 	split out and adapted from...
+ 	(expand_direct_optab_fn): ...here.
+ 	(expand_GOMP_SIMT_ENTER_ALLOC): Use it.
+ 	(expand_GOMP_SIMT_EXIT): Likewise.
+ 	(expand_GOMP_SIMT_LANE): Likewise.
+ 	(expand_GOMP_SIMT_LAST_LANE): Likewise.
+ 	(expand_GOMP_SIMT_ORDERED_PRED): Likewise.
+ 	(expand_GOMP_SIMT_VOTE_ANY): Likewise.
+ 	(expand_GOMP_SIMT_XCHG_BFLY): Likewise.
+ 	(expand_GOMP_SIMT_XCHG_IDX): Likewise.
+ 
+ 2022-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-expand.cc (expand_omp_target): Remap user provided
+ 	device clause arguments, -1 to -2 and -2 to -3, either
+ 	at compile time if constant, or at runtime.
+ 
+ 2022-06-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* common.opt (finstrument-functions): Set explicit value.
+ 	(-finstrument-functions-once): New option.
+ 	* doc/invoke.texi (Program Instrumentation Options): Document it.
+ 	* gimplify.cc (build_instrumentation_call): New static function.
+ 	(gimplify_function_tree): Call it to emit the instrumentation calls
+ 	if -finstrument-functions[-once] is specified.
+ 
+ 2022-06-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.cc (output_one_line_info_table): Initialize prev_addr.
+ 	* gimple.h (gimple_set_location): Do not copy warning data from
+ 	the previous location when it is UNKNOWN_LOCATION.
+ 	* optabs.cc (expand_widen_pattern_expr): Always set oprnd{1,2}.
+ 
+ 2022-06-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105911
+ 	* config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
+ 	*<insn><dwi>3_doubleword_mask): Use operands[3] masked with
+ 	(<MODE_SIZE> * BITS_PER_UNIT) - 1 as AND operand instead of
+ 	operands[3] unmodified.
+ 
+ 2022-06-12  Simon Wright  <simon@pushface.org>
+ 
+ 	PR target/104871
+ 	* config/darwin-driver.cc (darwin_find_version_from_kernel): If the OS
+ 	version is darwin20 (macOS 11) or greater, truncate the version to the
+ 	major number.
+ 
+ 2022-06-12  Mark Mentovai  <mark@mentovai.com>
+ 
+ 	* config/darwin-c.cc: Make -mmacosx-version-min more future-proof.
+ 
+ 2022-06-12  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	PR target/96463
+ 	* config/aarch64/aarch64-sve-builtins-base.cc: Include ssa.h.
+ 	(svld1rq_impl::fold): Define.
+ 	* config/aarch64/aarch64.cc (expand_vec_perm_d): Define new members
+ 	op_mode and op_vec_flags.
+ 	(aarch64_evpc_reencode): Initialize newd.op_mode and
+ 	newd.op_vec_flags.
+ 	(aarch64_evpc_sve_dup): New function.
+ 	(aarch64_expand_vec_perm_const_1): Gate existing calls to
+ 	aarch64_evpc_* functions under d->vmode == d->op_mode,
+ 	and call aarch64_evpc_sve_dup.
+ 	(aarch64_vectorize_vec_perm_const): Remove assert
+ 	d->vmode != d->op_mode, and initialize d.op_mode and d.op_vec_flags.
+ 	* tree-cfg.cc (verify_gimple_assign_ternary): Allow different
+ 	vector types for lhs and rhs in VEC_PERM_EXPR if rhs3 is
+ 	constant.
+ 
+ 2022-06-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa-protos.h (xtensa_constantsynth):
+ 	New prototype.
+ 	* config/xtensa/xtensa.cc (xtensa_emit_constantsynth,
+ 	xtensa_constantsynth_2insn, xtensa_constantsynth_rtx_SLLI,
+ 	xtensa_constantsynth_rtx_ADDSUBX, xtensa_constantsynth):
+ 	New backend functions that process the abovementioned logic.
+ 	(xtensa_emit_move_sequence): Revert the previous changes.
+ 	* config/xtensa/xtensa.md: New split patterns for integer
+ 	and floating-point, as the frontend part.
+ 
+ 2022-06-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_rtx_costs): Correct wrong case
+ 	for ABS and NEG, add missing case for BSWAP and CLRSB, and
+ 	double the costs for integer divisions using libfuncs if
+ 	optimizing for speed, in order to take advantage of fast constant
+ 	division by multiplication.
+ 	(TARGET_INSN_COST): New macro definition.
+ 	(xtensa_is_insn_L32R_p, xtensa_insn_cost): New functions for
+ 	calculating relative costs of a RTL insns, for both of speed and
+ 	size.
+ 	* config/xtensa/xtensa.md (return, nop, trap): Correct values of
+ 	the attribute "length" that depends on TARGET_DENSITY.
+ 	(define_asm_attributes, blockage, frame_blockage): Add missing
+ 	attributes.
+ 	* config/xtensa/xtensa.opt (-mextra-l32r-costs=): New machine-
+ 	dependent option, however, preparatory work for now.
+ 
+ 2022-06-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_expand_block_set_small_loop):
+ 	Pass through the block length / loop count conditions if
+ 	zero-overhead looping is configured and active,
+ 
+ 2022-06-11  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (mulsidi3, umulsidi3):
+ 	Split into individual signedness, in order to use libcall
+ 	"__umulsidi3" but not the other.
+ 	(<u>mulhisi3): Merge into one by using code iterator.
+ 	(<u>mulsidi3, mulhisi3, umulhisi3): Remove.
+ 
+ 2022-06-11   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Do
+ 	not generate block copies with vector pair instructions if we are
+ 	tuning for power10.
+ 
+ 2022-06-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/7061
+ 	* expr.cc (emit_group_store): For groups that consist of a single
+ 	scalar integer register that hold a complex mode value, use
+ 	gen_lowpart to generate a SUBREG to "view_convert" to the complex
+ 	mode.  For modes of different sizes, first convert to an integer
+ 	mode of the appropriate size.
+ 
+ 2022-06-09  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (clrsbsi2): New insn pattern.
+ 
+ 2022-06-09  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (*andsi3_bitcmpl):
+ 	New insn_and_split pattern.
+ 
+ 2022-06-09  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (one_cmplsi2):
+ 	Rearrange as an insn_and_split pattern.
+ 
+ 2022-06-09  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (bswaphi2): New insn pattern.
+ 
+ 2022-06-09  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md (FP_ISA3): Delete.
+ 	(float<QHI:mode><FP_ISA3:mode>2): Rename to...
+ 	(float<QHI:mode><SFDF:mode>2): ... this.  Adjust.
+ 	(*float<QHI:mode><FP_ISA3:mode>2_internal): Rename to...
+ 	(*float<QHI:mode><SFDF:mode>2_internal): ... this.  Adjust.
+ 	(floatuns<QHI:mode><FP_ISA3:mode>2): Rename to...
+ 	(floatuns<QHI:mode><SFDF:mode>2): ... this.  Adjust.
+ 	(*floatuns<QHI:mode><FP_ISA3:mode>2_internal): Rename to...
+ 	(*floatuns<QHI:mode><SFDF:mode>2_internal): ... this.  Adjust.
+ 
+ 2022-06-09  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md
+ 	(*f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_default)
+ 	(*f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_snan): Emit a tab
+ 	rather than space with FSFLAGS.
+ 
+ 2022-06-09  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-offload.cc (omp_discover_declare_target_tgt_fn_r,
+ 	omp_discover_declare_target_fn_r): Don't walk reverse-offload
+ 	target regions.
+ 
+ 2022-06-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* doc/invoke.texi (-Waddress): Fix a typo in small example.
+ 	Fix typos inptr_t -> intptr_t and uinptr_t -> uintptr_t.
+ 
+ 2022-06-09  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	PR target/105493
+ 	* config/i386/x86-tune-costs.h (skylake_cost): Raise the gpr load cost
+ 	from 4 to 6 and gpr store cost from 6 to 8. Change SSE loads and
+ 	unaligned loads cost from {6, 6, 6, 10, 20} to {8, 8, 8, 8, 16}.
+ 	(icelake_cost): Ditto.
+ 	(alderlake_cost): Raise the gpr store cost from 6 to 8 and SSE loads,
+ 	stores and unaligned stores cost from {6, 6, 6, 10, 15} to
+ 	{8, 8, 8, 10, 15}.
+ 
+ 2022-06-09  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.md (define_split for bswapdi load): Merge shift
+ 	and ior insns to one rotate and mask insn.
+ 	(define_split for bswapdi register): Likewise.
+ 
+ 2022-06-08  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/105874
+ 	* expr.cc (expand_expr_real_1) <normal_inner_ref>:  New local
+ 	variable tem_modifier for calculating the expand_modifier enum to
+ 	use for expanding tem.  If tem is a VAR_DECL, use EXPAND_MEMORY.
+ 
+ 2022-06-08  Max Filippov  <jcmvbkbc@gmail.com>
+ 
+ 	PR target/105879
+ 	* config/xtensa/xtensa.md (movdi): Rename 'first' and 'second'
+ 	to 'lowpart' and 'highpart' so that they match 'gen_lowpart' and
+ 	'gen_highpart' bitwise semantics and fix order of highpart and
+ 	lowpart depending on target endianness.
+ 
+ 2022-06-08  Chung-Ju Wu  <jasonwucj@gmail.com>
+ 
+ 	* config/arm/arm-cpus.in (star-mc1): New cpu.
+ 	* config/arm/arm-tables.opt: Regenerate.
+ 	* config/arm/arm-tune.md: Regenerate.
+ 	* doc/invoke.texi: Update docs.
+ 
+ 2022-06-08  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105513
+ 	PR target/105504
+ 	* config/i386/i386.md (*movsi_internal): Change alternative
+ 	from *v to ?v.
+ 	(*movdi_internal): Ditto.
+ 	* config/i386/sse.md (vec_set<mode>_0): Change alternative *r
+ 	to ?r.
+ 	(*vec_extractv4sf_mem): Ditto.
+ 	(*vec_extracthf): Ditto.
+ 
+ 2022-06-07  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/105090
+ 	* config/arm/arm.cc (arm_bfi_1_p): New function.
+ 	(arm_bfi_p): New function.
+ 	(arm_rtx_costs_internal): Add costs for BFI idioms.
+ 	(arm_print_operand [case 'V']): Format output for BFI/BFC masks.
+ 	* config/arm/constraints.md (Dj): New constraint.
+ 	* config/arm/arm.md (arm_andsi3_insn): Add alternative to use BFC.
+ 	(insv_zero): Convert to an insn with a split.
+ 	(*bfi, *bfi_alt1, *bfi_alt2, *bfi_alt3): New patterns.
+ 
+ 2022-06-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105854
+ 	* config/i386/sse.md (ssse3_palignrdi): Change alternative 2
+ 	from Yv to Yw.
+ 
+ 2022-06-07  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/105853
+ 	PR target/105856
+ 	* calls.cc (load_register_parameters): Call store_constructor
+ 	and int_expr_size directly instead of expanding via expand_expr.
+ 	* expr.cc (static void store_constructor): Don't prototype here.
+ 	(static HOST_WIDE_INT int_expr_size): Likewise.
+ 	(store_constructor): No longer static.
+ 	(int_expr_size): Likewise, no longer static.
+ 	* expr.h (store_constructor): Prototype here.
+ 	(int_expr_size): Prototype here.
+ 
+ 2022-06-07  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	Revert:
+ 	2022-06-03  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* Makefile.in (ORIGINAL_OBJCOPY_FOR_TARGET): New.
+ 	* configure.ac: Check for objcopy, producing
+ 	ORIGINAL_OBJCOPY_FOR_TARGET.
+ 	* configure: Update accordingly.
+ 	* exec-tool.in (ORIGINAL_OBJCOPY_FOR_TARGET): New.
+ 	Handle objcopy.
+ 
+ 2022-06-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.h (OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER): Define.
+ 	* tree-pretty-print.cc (dump_omp_clause) <case OMP_CLAUSE_LINEAR>:
+ 	Adjust clause printing style depending on
+ 	OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER.
+ 
+ 2022-06-07  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* config/i386/i386-builtin.def (__builtin_ia32_psadbw256):
+ 	Change type.
+ 	* config/i386/i386-builtin-types.def: New function type
+ 	(V4DI, V32QI, V32QI).
+ 	* config/i386/i386-expand.cc (ix86_expand_args_builtin): Handle
+ 	V4DI_FTYPE_V32QI_V32QI.
+ 
+ 2022-06-07  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* config/i386/i386.cc (ix86_attr_length_vex_default): Take REX.B
+ 	into account for reg-only insns.
+ 
+ 2022-06-07  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.cc (ix86_rtx_costs): Add a new case for
+ 	IF_THEN_ELSE, and provide costs for TARGET_XOP's vpcmov and
+ 	TARGET_CMOVE's (scalar integer) conditional moves.
+ 	* config/i386/sse.md (define_split): Recognize XOP's vpcmov
+ 	from its equivalent (canonical) pxor;pand;pxor sequence.
+ 
+ 2022-06-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* machmode.def (VECTOR_MODES_WITH_PREFIX): Update document for
+ 	parameter ORDER.
+ 
+ 2022-06-06  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* configure.ac: Reinstate HAVE_GAS_ARM_EXTENDED_ARCH test.
+ 
+ 2022-06-04  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/95126
+ 	* calls.cc (load_register_parameters): When loading a suitable
+ 	immediate_const_ctor_p VAR_DECL into a single word_mode register,
+ 	construct it directly in a pseudo rather than read it (by parts)
+ 	from memory.
+ 	* expr.cc (int_expr_size): Make tree argument a const_tree.
+ 	(immediate_const_ctor_p): Helper predicate.  Return true for
+ 	simple constructors that may be materialized in a register.
+ 	(expand_expr_real_1) [VAR_DECL]: When expanding a constant
+ 	VAR_DECL with a suitable immediate_const_ctor_p constructor
+ 	use store_constructor to materialize it directly in a pseudo.
+ 	* expr.h (immediate_const_ctor_p): Prototype here.
+ 	* varasm.cc (initializer_constant_valid_for_bitfield_p): Change
+ 	VALUE argument from tree to const_tree.
+ 	* varasm.h (initializer_constant_valid_for_bitfield_p): Update
+ 	prototype.
+ 
+ 2022-06-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105825
+ 	* config/i386/i386.md (*ashl<dwi>3_doubleword_mask,
+ 	*<insn><dwi>3_doubleword_mask): If top bit of mask is clear, but lower
+ 	bits of mask aren't all set, use operands[2] mode for the AND
+ 	operation instead of always SImode.
+ 
+ 2022-06-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/30314
+ 	PR middle-end/105777
+ 	* match.pd (__builtin_mul_overflow_p (x, cst, (stype) 0) ->
+ 	x > stype_max / cst || x < stype_min / cst): New simplification.
+ 
+ 2022-06-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Use
+ 	Value_Range.
+ 	* gimple-range.cc (gimple_ranger::register_inferred_ranges): Same.
+ 	* value-range.h (Value_Range::Value_Range): Implement copy
+ 	constructor for Value_Range.
+ 
+ 2022-06-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (struct vrange_traits): Remove.
+ 	(is_a): Rewrite without vrange_traits.
+ 	(as_a): Same.
+ 
+ 2022-06-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.cc (vrange::contains_p): Implement.
+ 	(vrange::type): Return void.
+ 	(vrange::supports_type_p): Implement.
+ 	(irange::fits_p): Same.
+ 	(vrange::set_undefined): Same.
+ 	(irange::set_nonnegative): Same.
+ 	(vrange::set_varying): Same.
+ 	(vrange::union_): Same.
+ 	(unsupported_range::set): Move to vrange.
+ 	(unsupported_range::type): Move to vrange.
+ 	(vrange::intersect): Implement for varying and undefined.
+ 	(vrange::zero_p): Implement.
+ 	(unsupported_range::supports_type_p): Move to vrange.
+ 	(vrange::nonzero_p): Implement.
+ 	(unsupported_range::set_undefined): Move to vrange.
+ 	(unsupported_range::set_varying): Same.
+ 	(unsupported_range::dump): Same.
+ 	(unsupported_range::union_): Same.  Implement for varying and
+ 	undefined.
+ 	(unsupported_range::intersect): Move to vrange.
+ 	(unsupported_range::zero_p): Same.
+ 	(unsupported_range::nonzero_p): Same.
+ 	(unsupported_range::set_nonzero): Same.
+ 	(unsupported_range::set_zero): Same.
+ 	(unsupported_range::set_nonnegative): Same.
+ 	(unsupported_range::fits_p): Same.
+ 	* value-range.h (class vrange): Remove abstract markers for most
+ 	methods.
+ 	(class unsupported_range): Remove most methods as they will now be
+ 	inherited from vrange.
+ 
+ 2022-06-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-edge.cc (gimple_outgoing_range_stmt_p): Adjust for
+ 	an object level supports_type_p for irange and a static
+ 	Value_Range::supports_type_p.
+ 	* gimple-range-fold.cc (fold_using_range::range_of_range_op): Same.
+ 	(fold_using_range::range_of_address): Same.
+ 	(fold_using_range::range_of_builtin_call): Same.
+ 	* gimple-range-fold.h (gimple_range_type): Same.
+ 	(gimple_range_ssa_p): Same.
+ 	* gimple-range-path.cc (path_range_query::internal_range_of_expr):
+ 	Same.
+ 	(path_range_query::range_of_stmt): Same.
+ 	(path_range_query::add_to_imports): Same.
+ 	* gimple-range.cc (gimple_ranger::range_on_edge): Same.
+ 	(gimple_ranger::export_global_ranges): Same.
+ 	* gimple-ssa-evrp-analyze.cc
+ 	(evrp_range_analyzer::record_ranges_from_phis):  Same.
+ 	* range-op.cc (range_operator::wi_fold): Same.
+ 	(range_operator::fold_range): Same.
+ 	* tree-ssa-loop-ch.cc (entry_loop_condition_is_static): Same.
+ 	* tree-ssa-loop-unswitch.cc (struct unswitch_predicate): Same.
+ 	(evaluate_control_stmt_using_entry_checks): Same.
+ 	* tree-ssa-threadedge.cc
+ 	(hybrid_jt_simplifier::compute_ranges_from_state): Same.
+ 	* tree-vrp.cc (supported_types_p): Same.
+ 	* value-query.cc (range_query::value_of_expr): Same.
+ 	(range_query::value_on_edge): Same.
+ 	(range_query::value_of_stmt): Same.
+ 	(range_query::get_tree_range): Same.
+ 	(get_range_global): Same.
+ 	(global_range_query::range_of_expr): Same.
+ 	* value-range-equiv.h (class value_range_equiv): Same.
+ 	* value-range.cc (irange::supports_type_p): Same.
+ 	(unsupported_range::supports_type_p): Same.
+ 	* value-range.h (enum value_range_discriminator): Same.
+ 	(Value_Range::init): Same.
+ 	(Value_Range::supports_type_p): Same.
+ 	(irange::supports_type_p): Same.
+ 	(irange::supports_p): Same.
+ 	(vrange::supports_type_p): Same.
+ 	(vrange_allocator::alloc_vrange): Same.
+ 
+ 2022-06-03  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* Makefile.in (ORIGINAL_OBJCOPY_FOR_TARGET): New.
+ 	* configure.ac: Check for objcopy, producing
+ 	ORIGINAL_OBJCOPY_FOR_TARGET.
+ 	* configure: Update accordingly.
+ 	* exec-tool.in (ORIGINAL_OBJCOPY_FOR_TARGET): New.
+ 	Handle objcopy.
+ 
+ 2022-06-03  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* config/i386/mmx.md (mmx_psadbw): Convert to expander.
+ 	(*mmx_psadbw): New. Mark as commutative.
+ 	* config/i386/sse.md (<sse2_avx2>_psadbw): Convert to expander.
+ 	(*<sse2_avx2>_psadbw): New. Mark as commutative.
+ 
+ 2022-06-03  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR tree-optimization/105665
+ 	PR tree-optimization/100810
+ 	* tree-ssa-loop-ivopts.cc
+ 	(ssa_name_maybe_undef_p, ssa_name_set_maybe_undef): New.
+ 	(ssa_name_any_use_dominates_bb_p, mark_ssa_maybe_undefs): New.
+ 	(find_ssa_undef): Check precomputed flag and intervening uses.
+ 	(tree_ssa_iv_optimize): Call mark_ssa_maybe_undefs.
+ 
+ 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add tree-diagnostic-client-data-hooks.o and
+ 	tree-logical-location.o.
+ 	(OBJS-libcommon): Add diagnostic-format-sarif.o; reorder.
+ 	(CFLAGS-tree-diagnostic-client-data-hooks.o): Add TARGET_NAME.
+ 	* common.opt (fdiagnostics-format=): Add sarif-stderr and sarif-file.
+ 	(sarif-stderr, sarif-file): New enum values.
+ 	* diagnostic-client-data-hooks.h: New file.
+ 	* diagnostic-format-sarif.cc: New file.
+ 	* diagnostic-path.h (enum diagnostic_event::verb): New enum.
+ 	(enum diagnostic_event::noun): New enum.
+ 	(enum diagnostic_event::property): New enum.
+ 	(struct diagnostic_event::meaning): New struct.
+ 	(diagnostic_event::get_logical_location): New vfunc.
+ 	(diagnostic_event::get_meaning): New vfunc.
+ 	(simple_diagnostic_event::get_logical_location): New vfunc impl.
+ 	(simple_diagnostic_event::get_meaning): New vfunc impl.
+ 	* diagnostic.cc: Include "diagnostic-client-data-hooks.h".
+ 	(diagnostic_initialize): Initialize m_client_data_hooks.
+ 	(diagnostic_finish): Clean up m_client_data_hooks.
+ 	(diagnostic_event::meaning::dump_to_pp): New.
+ 	(diagnostic_event::meaning::maybe_get_verb_str): New.
+ 	(diagnostic_event::meaning::maybe_get_noun_str): New.
+ 	(diagnostic_event::meaning::maybe_get_property_str): New.
+ 	(get_cwe_url): Make non-static.
+ 	(diagnostic_output_format_init): Handle
+ 	DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR and
+ 	DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE.
+ 	* diagnostic.h (enum diagnostics_output_format): Add
+ 	DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR and
+ 	DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE.
+ 	(class diagnostic_client_data_hooks): New forward decl.
+ 	(class logical_location): New forward decl.
+ 	(diagnostic_context::m_client_data_hooks): New field.
+ 	(diagnostic_output_format_init_sarif_stderr): New decl.
+ 	(diagnostic_output_format_init_sarif_file): New decl.
+ 	(get_cwe_url): New decl.
+ 	* doc/invoke.texi (-fdiagnostics-format=): Add sarif-stderr and
+ 	sarif-file.
+ 	* doc/sourcebuild.texi (Scan a particular file): Add
+ 	scan-sarif-file and scan-sarif-file-not.
+ 	* langhooks-def.h (lhd_get_sarif_source_language): New decl.
+ 	(LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE): New macro.
+ 	(LANG_HOOKS_INITIALIZER): Add
+ 	LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE.
+ 	* langhooks.cc (lhd_get_sarif_source_language): New.
+ 	* langhooks.h (lang_hooks::get_sarif_source_language): New field.
+ 	* logical-location.h: New file.
+ 	* plugin.cc (struct for_each_plugin_closure): New.
+ 	(for_each_plugin_cb): New.
+ 	(for_each_plugin): New.
+ 	* plugin.h (for_each_plugin): New decl.
+ 	* tree-diagnostic-client-data-hooks.cc: New file.
+ 	* tree-diagnostic.cc: Include "diagnostic-client-data-hooks.h".
+ 	(tree_diagnostics_defaults): Populate m_client_data_hooks.
+ 	* tree-logical-location.cc: New file.
+ 	* tree-logical-location.h: New file.
+ 
+ 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* common.opt (fdiagnostics-format=): Add json-stderr and json-file
+ 	to description.
+ 	(DIAGNOSTICS_OUTPUT_FORMAT_JSON): Rename to...
+ 	(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR): ...this.
+ 	(diagnostics_output_format): Add json-stderr and json-file.
+ 	* diagnostic-format-json.cc (json_flush_to_file): New.
+ 	(json_final_cb): Convert to...
+ 	(json_flush_to_file): ...this, ...
+ 	(json_stderr_final_cb): ...this, and...
+ 	(json_file_final_cb): ...this.
+ 	(diagnostic_output_format_init): Move to diagnostic.cc.
+ 	(json_output_base_file_name): New.
+ 	(diagnostic_output_format_init_json): New.
+ 	(diagnostic_output_format_init_json_stderr): New.
+ 	(diagnostic_output_format_init_json_file): New.
+ 	* diagnostic.cc (diagnostic_output_format_init): Move here from
+ 	diagnostic-format-json.cc; update for changes to enum.
+ 	* diagnostic.h (enum diagnostics_output_format): Rename
+ 	DIAGNOSTICS_OUTPUT_FORMAT_JSON to
+ 	DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR, and add
+ 	DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE.
+ 	(diagnostic_output_format_init): Add base_file_name param.
+ 	(diagnostic_output_format_init_json_stderr): New decl.
+ 	(diagnostic_output_format_init_json_file): New dec.
+ 	* doc/invoke.texi (-fdiagnostics-format=): Add "json-stderr" and
+ 	"json-file".  Rewrite so that the existing "json" is a synonym of
+ 	"json-stderr".
+ 	* gcc.cc (driver_handle_option): Pass dump_base_name to
+ 	diagnostic_output_format_init.
+ 	* opts.cc (common_handle_option): Likewise.
+ 
+ 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* json.cc (string::print): Fix escaping of '\'.
+ 
+ 2022-06-02  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 
+ 	* config/riscv/riscv.cc (riscv_build_integer_1): Rewrite value as
+ 	(-1 << 31) for the single-bit case, when operating on (1 << 31)
+ 	in SImode.
+ 	* config/riscv/riscv.h (SINGLE_BIT_MASK_OPERAND): Allow for
+ 	any single-bit value, moving the special case for (1 << 31) to
+ 	riscv_build_integer_1 (in riscv.c).
+ 
+ 2022-06-02  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/105791
+ 	* config/i386/sse.md (V_128_256):Add V1TI and V2TI.
+ 	(define_mode_attr avxsizesuffix): Add support for V1TI and V2TI.
+ 
+ 2022-06-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105778
+ 	* config/i386/i386.md (*ashl<dwi>3_doubleword_mask): Remove :SI
+ 	from AND and its operands and just verify operands[2] has HImode,
+ 	SImode or for TARGET_64BIT DImode.  Allow operands[3] to be a mask
+ 	with all low 6 (64-bit) or 5 (32-bit) bits set and in that case
+ 	just throw away the masking.  Use force_reg before calling
+ 	gen_lowpart.
+ 	(*ashl<dwi>3_doubleword_mask_1): Allow operands[3] to be a mask
+ 	with all low 6 (64-bit) or 5 (32-bit) bits set and in that case
+ 	just throw away the masking.
+ 	(*ashl<mode>3_doubleword): Rename to ...
+ 	(ashl<mode>3_doubleword): ... this.
+ 	(*ashl<mode>3_mask): Remove :SI from AND and its operands and just
+ 	verify operands[2] has HImode, SImode or for TARGET_64BIT DImode.
+ 	Use force_reg before calling gen_lowpart.
+ 	(*<insn><mode>3_mask): Likewise.
+ 	(*<insn><dwi>3_doubleword_mask): Likewise.  Allow operands[3] to be
+ 	a mask with all low 6 (64-bit) or 5 (32-bit) bits set and in that
+ 	case just throw away the masking.  Use force_reg before calling
+ 	gen_lowpart.
+ 	(*<insn><dwi>3_doubleword_mask_1): Allow operands[3] to be a mask
+ 	with all low 6 (64-bit) or 5 (32-bit) bits set and in that case just
+ 	throw away the masking.
+ 	(*<insn><mode>3_doubleword): Rename to ...
+ 	(<insn><mode>3_doubleword): ... this.
+ 	(*<insn><mode>3_mask): Remove :SI from AND and its operands and just
+ 	verify operands[2] has HImode, SImode or for TARGET_64BIT DImode.
+ 	Use force_reg before calling gen_lowpart.
+ 	(splitter after it): Remove :SI from AND and its operands and just
+ 	verify operands[2] has HImode, SImode or for TARGET_64BIT DImode.
+ 	(*<btsc><mode>_mask, *<btsc><mode>_mask): Remove :SI from AND and its
+ 	operands and just verify operands[1] has HImode, SImode or for
+ 	TARGET_64BIT DImode.  Use force_reg before calling gen_lowpart.
+ 	(*jcc_bt<mode>_mask_1): New define_insn_and_split pattern.
+ 	* config/i386/i386.cc (ix86_rtx_costs): For ZERO_EXTRACT with
+ 	ZERO_EXTEND QI->SI in last operand ignore the cost of the ZERO_EXTEND.
+ 
+ 2022-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101668
+ 	* tree-vect-slp.cc (vect_build_slp_tree_1): Allow BIT_FIELD_REFs
+ 	for vector types with compatible lane types.
+ 	(vect_build_slp_tree_2): Deal with this.
+ 	(vect_add_slp_permutation): Adjust.  Emit lowpart/concat
+ 	special cases without VEC_PERM.
+ 	(vectorizable_slp_permutation): Select the operand vector
+ 	type and relax requirements.  Handle identity permutes
+ 	with mismatching operand types.
+ 	* optabs-query.cc (can_vec_perm_const_p): Only allow variable
+ 	permutes for op_mode == mode.
+ 
+ 2022-06-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105802
+ 	* tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
+ 	Make sure to also compute the range in the type of the switch index.
+ 
+ 2022-06-01  David Seifert  <soap@gentoo.org>
+ 
+ 	PR plugins/95648
+ 	* configure: Regenerate.
+ 
+ 2022-06-01  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR rtl-optimization/105638
+ 	* df-core.cc (df_find_single_def_src): Moved and renamed from
+ 	find_single_def_src in loop-iv.cc.  Change the argument to rtx
+ 	and use rtx_equal_p.  Return null for partial or conditional
+ 	defs.
+ 	* df.h (df_find_single_def_src): New prototype.
+ 	* dse.cc (record_store): Use the constant source if the source
+ 	register is set only once.
+ 	* loop-iv.cc (find_single_def_src): Moved to df-core.cc.
+ 	(replace_single_def_regs): Replace find_single_def_src with
+ 	df_find_single_def_src.
+ 
+ 2022-06-01  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config/aarch64/aarch64.opt (explicit_tune_core): Rename to
+ 	selected_tune.
+ 	(explicit_arch): Rename to selected_arch.
+ 	(x_aarch64_override_tune_string): Remove.
+ 	(aarch64_ra_sign_key): Add as TargetVariable so it gets saved/restored.
+ 	(aarch64_override_tune_string): Add Save so it gets saved/restored.
+ 	* config/aarch64/aarch64.h (aarch64_architecture_version): Remove.
+ 	* config/aarch64/aarch64.cc (aarch64_architecture_version): Remove.
+ 	(processor): Remove archtecture_version field.
+ 	(selected_arch): Remove global.
+ 	(selected_cpu): Remove global.
+ 	(selected_tune): Remove global.
+ 	(aarch64_ra_sign_key): Move global to aarch64.opt so it is saved.
+ 	(aarch64_override_options_internal): Use aarch64_get_tune_cpu.
+ 	(aarch64_override_options): Further simplify code to only set
+ 	selected_arch and selected_tune globals.
+ 	(aarch64_option_save): Remove now that target options are saved.
+ 	(aarch64_option_restore): Remove redundant target option restores.
+ 	* config/aarch64/aarch64-c.cc (aarch64_update_cpp_builtins): Use
+ 	AARCH64_ISA_V9.
+ 	* config/aarch64/aarch64-opts.h (aarch64_key_type): Add, moved from...
+ 	* config/aarch64/aarch64-protos.h (aarch64_key_type): Remove.
+ 	(aarch64_ra_sign_key): Remove.
+ 
+ 2022-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/30314
+ 	* match.pd (__builtin_mul_overflow_p (x, cst, (utype) 0) ->
+ 	x > ~(utype)0 / cst): New simplification.
+ 
+ 2022-06-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105786
+ 	* tree-loop-distribution.cc
+ 	(loop_distribution::transform_reduction_loop): Only do strlen
+ 	replacement for integer type reductions.
+ 
+ 2022-06-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105770
+ 	* tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb): Cast
+ 	CASE_LOW and CASE_HIGH to TREE_TYPE (idx) before comparisons with idx.
+ 
+ 2022-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ssa_block_ranges::dump): Convert to vrange.
+ 	(sbr_vector::sbr_vector): Same.
+ 	(sbr_vector::grow): Same.
+ 	(sbr_vector::set_bb_range): Same.
+ 	(sbr_vector::get_bb_range): Same.
+ 	(sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
+ 	(sbr_sparse_bitmap::set_bb_range): Same.
+ 	(sbr_sparse_bitmap::get_bb_range): Same.
+ 	(block_range_cache::set_bb_range): Same.
+ 	(block_range_cache::get_bb_range): Same.
+ 	(block_range_cache::dump): Same.
+ 	(ssa_global_cache::get_global_range): Same.
+ 	(ssa_global_cache::set_global_range): Same.
+ 	(ssa_global_cache::clear): Same.
+ 	(ssa_global_cache::dump): Same.
+ 	(ranger_cache::get_global_range): Same.
+ 	(ranger_cache::set_global_range): Same.
+ 	(ranger_cache::range_of_def): Same.
+ 	(ranger_cache::entry_range): Same.
+ 	(ranger_cache::exit_range): Same.
+ 	(ranger_cache::edge_range): Same.
+ 	(ranger_cache::range_of_expr): Same.
+ 	(ranger_cache::range_on_edge): Same.
+ 	(ranger_cache::block_range): Same.
+ 	(ranger_cache::propagate_cache): Same.
+ 	(ranger_cache::fill_block_cache): Same.
+ 	(ranger_cache::range_from_dom): Same.
+ 	* gimple-range-cache.h: Same.
+ 	* gimple-range-edge.cc (gimple_outgoing_range::get_edge_range):
+ 	Same.
+ 	(gimple_outgoing_range::switch_edge_range): Same.
+ 	(gimple_outgoing_range::edge_range_p): Same.
+ 	* gimple-range-edge.h: Same.
+ 	* gimple-range-fold.cc (fur_source::get_operand): Same.
+ 	(fur_source::get_phi_operand): Same.
+ 	(fur_edge::get_operand): Same.
+ 	(fur_edge::get_phi_operand): Same.
+ 	(fur_stmt::get_operand): Same.
+ 	(fur_stmt::get_phi_operand): Same.
+ 	(fur_list::fur_list): Same.
+ 	(fur_list::get_operand): Same.
+ 	(fur_list::get_phi_operand): Same.
+ 	(fold_range): Same.
+ 	(adjust_imagpart_expr): Same.
+ 	(adjust_realpart_expr): Same.
+ 	(gimple_range_adjustment): Same.
+ 	(fold_using_range::fold_stmt): Same.
+ 	(fold_using_range::range_of_range_op): Same.
+ 	(fold_using_range::range_of_address): Same.
+ 	(fold_using_range::range_of_phi): Same.
+ 	(fold_using_range::range_of_call): Same.
+ 	(fold_using_range::range_of_builtin_call): Same.
+ 	(fold_using_range::range_of_builtin_int_call): Same.
+ 	(fold_using_range::range_of_cond_expr): Same.
+ 	(fur_source::register_outgoing_edges): Same.
+ 	* gimple-range-fold.h (fold_range): Same.
+ 	(gimple_range_type): Same.
+ 	(gimple_range_ssa_p): Same.
+ 	* gimple-range-gori.cc (gimple_range_calc_op1): Same.
+ 	(gimple_range_calc_op2): Same.
+ 	(gori_compute::compute_operand_range_switch): Same.
+ 	(gori_compute::compute_operand_range): Same.
+ 	(gori_compute::logical_combine): Same.
+ 	(gori_compute::compute_logical_operands): Same.
+ 	(gori_compute::compute_operand1_range): Same.
+ 	(gori_compute::compute_operand2_range): Same.
+ 	(gori_compute::compute_operand1_and_operand2_range): Same.
+ 	(gori_compute::outgoing_edge_range_p): Same.
+ 	(gori_compute::condexpr_adjust): Same.
+ 	* gimple-range-gori.h (gimple_range_calc_op1): Same.
+ 	(gimple_range_calc_op2): Same.
+ 	* gimple-range-path.cc (path_range_query::get_cache): Same.
+ 	(path_range_query::set_cache): Same.
+ 	(path_range_query::range_on_path_entry): Same.
+ 	(path_range_query::internal_range_of_expr): Same.
+ 	(path_range_query::range_of_expr): Same.
+ 	(path_range_query::ssa_range_in_phi): Same.
+ 	(path_range_query::range_defined_in_block): Same.
+ 	(path_range_query::compute_ranges_in_phis): Same.
+ 	(path_range_query::compute_ranges_in_block): Same.
+ 	(path_range_query::add_to_imports): Same.
+ 	(path_range_query::range_of_stmt): Same.
+ 	* gimple-range-path.h: Same.
+ 	* gimple-range-infer.cc (gimple_infer_range::add_range): Same.
+ 	(gimple_infer_range::~side_effect_manager): Same.
+ 	(gimple_infer_range::get_nonzero): Same.
+ 	(gimple_infer_range::maybe_adjust_range): Same.
+ 	(gimple_infer_range::add_range): Same.
+ 	* gimple-range-infer.h: Same.
+ 	* gimple-range-tests.cc: Same.
+ 	* gimple-range-trace.cc (range_tracer::trailer): Same.
+ 	(debug_seed_ranger): Same.
+ 	* gimple-range-trace.h: Same.
+ 	* gimple-range.cc (gimple_ranger::range_of_expr): Same.
+ 	(gimple_ranger::range_on_entry): Same.
+ 	(gimple_ranger::range_on_exit): Same.
+ 	(gimple_ranger::range_on_edge): Same.
+ 	(gimple_ranger::fold_range_internal): Same.
+ 	(gimple_ranger::range_of_stmt): Same.
+ 	(gimple_ranger::prefill_name): Same.
+ 	(gimple_ranger::prefill_stmt_dependencies): Same.
+ 	(gimple_ranger::export_global_ranges): Same.
+ 	(gimple_ranger::dump_bb): Same.
+ 	* gimple-range.h: Same.
+ 	* gimple-ssa-warn-access.cc (check_nul_terminated_array): Same.
+ 	(memmodel_to_uhwi): Same.
+ 	* tree-ssa-loop-niter.cc (refine_value_range_using_guard): Same.
+ 	(determine_value_range): Same.
+ 	(record_nonwrapping_iv): Same.
+ 	(infer_loop_bounds_from_signedness): Same.
+ 	(scev_var_range_cant_overflow): Same.
+ 	* tree-ssa-threadedge.cc (hybrid_jt_simplifier::simplify): Same.
+ 	* value-query.cc (range_query::range_on_edge): Same.
+ 	(range_query::range_of_stmt): Same.
+ 	(range_query::value_of_expr): Same.
+ 	(range_query::value_on_edge): Same.
+ 	(range_query::value_of_stmt): Same.
+ 	(range_query::get_tree_range): Same.
+ 	(update_global_range): Same.
+ 	(get_range_global): Same.
+ 	(gimple_range_global): Same.
+ 	(global_range_query::range_of_expr): Same.
+ 	(range_query::query_relation): Same.
+ 	* value-query.h (gimple_range_global): Same.
+ 	(update_global_range): Same.
+ 	* vr-values.cc (vr_values::range_of_expr): Same.
+ 	(bounds_of_var_in_loop): Same.
+ 	(simplify_using_ranges::vrp_visit_cond_stmt): Same.
+ 	* vr-values.h (class vr_values): Same.
+ 	* tree-ssa-loop-unswitch.cc (unswitch_predicate): Same.
+ 
+ 2022-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.cc (sbr_vector::sbr_vector): Adjust for
+ 	vrange allocator.
+ 	(sbr_vector::grow): Same.
+ 	(sbr_vector::set_bb_range): Same.
+ 	(sbr_sparse_bitmap::sbr_sparse_bitmap): Same.
+ 	(sbr_sparse_bitmap::set_bb_range): Same.
+ 	(block_range_cache::~block_range_cache): Same.
+ 	(block_range_cache::set_bb_range): Same.
+ 	(ssa_global_cache::ssa_global_cache): Same.
+ 	(ssa_global_cache::~ssa_global_cache): Same.
+ 	(ssa_global_cache::set_global_range): Same.
+ 	* gimple-range-cache.h (block_range_cache): Same.
+ 	(ssa_global_cache): Same.
+ 	* gimple-range-edge.cc
+ 	(gimple_outgoing_range::calc_switch_ranges): Same.
+ 	* gimple-range-edge.h (gimple_outgoing_range): Same.
+ 	* gimple-range-infer.cc (infer_range_manager::get_nonzero):
+ 	Same.
+ 	(infer_range_manager::add_range): Same.
+ 	* gimple-range-infer.h (class infer_range_manager): Same.
+ 	* value-range.h (class irange_allocator): Rename to...
+ 	(class vrange_allocator): ...this.
+ 	(irange_allocator::irange_allocator): New.
+ 	(vrange_allocator::vrange_allocator): New.
+ 	(irange_allocator::~irange_allocator): New.
+ 	(vrange_allocator::~vrange_allocator): New.
+ 	(irange_allocator::get_memory): Rename to...
+ 	(vrange_allocator::alloc): ...this.
+ 	(vrange_allocator::alloc_vrange): Rename from...
+ 	(irange_allocator::allocate): ...this.
+ 	(vrange_allocator::alloc_irange): New.
+ 
+ 2022-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-edge.cc (gimple_outgoing_range_stmt_p): Adjust for
+ 	vrange and convert range_op_handler function calls to use the
+ 	identically named object.
+ 	* gimple-range-fold.cc (gimple_range_operand1): Same.
+ 	(gimple_range_operand2): Same.
+ 	(fold_using_range::fold_stmt): Same.
+ 	(fold_using_range::range_of_range_op): Same.
+ 	(fold_using_range::range_of_builtin_ubsan_call): Same.
+ 	(fold_using_range::relation_fold_and_or): Same.
+ 	(fur_source::register_outgoing_edges): Same.
+ 	* gimple-range-fold.h (gimple_range_handler): Remove.
+ 	* gimple-range-gori.cc (gimple_range_calc_op1): Adjust for vrange.
+ 	(gimple_range_calc_op2): Same.
+ 	(range_def_chain::get_def_chain): Same.
+ 	(gori_compute::compute_operand_range): Same.
+ 	(gori_compute::condexpr_adjust): Same.
+ 	* gimple-range.cc (gimple_ranger::prefill_name): Same.
+ 	(gimple_ranger::prefill_stmt_dependencies): Same.
+ 	* range-op.cc (get_bool_state): Same.
+ 	(class operator_equal): Add using clause.
+ 	(class operator_not_equal): Same.
+ 	(class operator_lt): Same.
+ 	(class operator_le): Same.
+ 	(class operator_gt): Same.
+ 	(class operator_ge): Same.
+ 	(class operator_plus): Same.
+ 	(class operator_minus): Same.
+ 	(class operator_mult): Same.
+ 	(class operator_exact_divide): Same.
+ 	(class operator_lshift): Same.
+ 	(class operator_rshift): Same.
+ 	(class operator_cast): Same.
+ 	(class operator_logical_and): Same.
+ 	(class operator_bitwise_and): Same.
+ 	(class operator_logical_or): Same.
+ 	(class operator_bitwise_or): Same.
+ 	(class operator_bitwise_xor): Same.
+ 	(class operator_trunc_mod): Same.
+ 	(class operator_logical_not): Same.
+ 	(class operator_bitwise_not): Same.
+ 	(class operator_cst): Same.
+ 	(class operator_identity): Same.
+ 	(class operator_unknown): Same.
+ 	(class operator_abs): Same.
+ 	(class operator_negate): Same.
+ 	(class operator_addr_expr): Same.
+ 	(class pointer_or_operator): Same.
+ 	(operator_plus::op1_range): Adjust for vrange.
+ 	(operator_minus::op1_range): Same.
+ 	(operator_mult::op1_range): Same.
+ 	(operator_cast::op1_range): Same.
+ 	(operator_bitwise_not::fold_range): Same.
+ 	(operator_negate::fold_range): Same.
+ 	(range_op_handler): Rename to...
+ 	(get_handler): ...this.
+ 	(range_op_handler::range_op_handler): New.
+ 	(range_op_handler::fold_range): New.
+ 	(range_op_handler::op1_range): New.
+ 	(range_op_handler::op2_range): New.
+ 	(range_op_handler::lhs_op1_relation): New.
+ 	(range_op_handler::lhs_op2_relation): New.
+ 	(range_op_handler::op1_op2_relation): New.
+ 	(range_cast): Adjust for vrange.
+ 	* range-op.h (range_op_handler): Remove function.
+ 	(range_cast): Adjust for vrange.
+ 	(class range_op_handler): New.
+ 	(get_bool_state): Adjust for vrange.
+ 	(empty_range_varying): Same.
+ 	(relop_early_resolve): Same.
+ 	* tree-data-ref.cc (compute_distributive_range): Same.
+ 	* tree-vrp.cc (get_range_op_handler): Remove.
+ 	(range_fold_binary_symbolics_p): Use range_op_handler class
+ 	instead of get_range_op_handler.
+ 	(range_fold_unary_symbolics_p): Same.
+ 	(range_fold_binary_expr): Same.
+ 	(range_fold_unary_expr): Same.
+ 	* value-query.cc (range_query::get_tree_range): Adjust for vrange.
+ 
+ 2022-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.h (gimple_range_type): Check type before
+ 	calling supports_type_p.
+ 	* gimple-range-path.cc (path_range_query::range_of_stmt): Same.
+ 	* value-query.cc (range_query::get_tree_range): Same.
+ 	* value-range.cc (Value_Range::lower_bound): New.
+ 	(Value_Range::upper_bound): New.
+ 	(Value_Range::dump): New.
+ 	* value-range.h (class Value_Range): New.
+ 	(irange::supports_type_p): Do not check if type is non-zero.
+ 
+ 2022-06-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range-equiv.cc (value_range_equiv::set): New.
+ 	* value-range-equiv.h (class value_range_equiv): Make set method
+ 	virtual.
+ 	Remove default bitmap argument from set method.
+ 	* value-range.cc (vrange::contains_p): New.
+ 	(vrange::singleton_p): New.
+ 	(vrange::operator=): New.
+ 	(vrange::operator==): New.
+ 	(irange::fits_p): Move to .cc file.
+ 	(irange::set_nonnegative): New.
+ 	(unsupported_range::unsupported_range): New.
+ 	(unsupported_range::set): New.
+ 	(unsupported_range::type): New.
+ 	(unsupported_range::set_undefined): New.
+ 	(unsupported_range::set_varying): New.
+ 	(unsupported_range::dump): New.
+ 	(unsupported_range::union_): New.
+ 	(unsupported_range::intersect): New.
+ 	(unsupported_range::zero_p): New.
+ 	(unsupported_range::nonzero_p): New.
+ 	(unsupported_range::set_nonzero): New.
+ 	(unsupported_range::set_zero): New.
+ 	(unsupported_range::set_nonnegative): New.
+ 	(unsupported_range::fits_p): New.
+ 	(irange::set): Call irange::set_undefined.
+ 	(irange::verify_range): Check discriminator field.
+ 	(irange::dump): Dump [irange] marker.
+ 	(irange::debug): Move to...
+ 	(vrange::debug): ...here.
+ 	(dump_value_range): Accept vrange.
+ 	(debug): Same.
+ 	* value-range.h (enum value_range_discriminator): New.
+ 	(class vrange): New.
+ 	(class unsupported_range): New.
+ 	(struct vrange_traits): New.
+ 	(is_a): New.
+ 	(as_a): New.
+ 	(class irange): Inherit from vrange.
+ 	(dump_value_range): Adjust for vrange.
+ 	(irange::kind): Rename to...
+ 	(vrange::kind): ...this.
+ 	(irange::varying_p): Rename to...
+ 	(vrange::varying_p): ...this.
+ 	(irange::undefined_p): Rename to...
+ 	(vrange::undefined_p): ...this.
+ 	(irange::irange): Set discriminator.
+ 	(irange::union_): Convert to irange before passing to irange
+ 	method.
+ 	(irange::intersect): Same.
+ 	(vrange::supports_type_p): New.
+ 	* vr-values.cc (vr_values::extract_range_from_binary_expr): Pass
+ 	NULL bitmap argument to value_range_equiv::set.
+ 	(vr_values::extract_range_basic): Same.
+ 
+ 2022-06-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105763
+ 	* tree-ssa-loop-unswitch.cc (find_unswitching_predicates_for_bb):
+ 	Check gimple_range_ssa_p.
+ 
+ 2022-05-31  Jason Merrill  <jason@redhat.com>
+ 
+ 	* Makefile.in (TAGS): Look at libcpp/*.cc.
+ 
+ 2022-05-31  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_gimplify_va_arg_expr):
+ 	Prefix mode names with E_.
+ 
+ 2022-05-31  Alan Modra  <amodra@gmail.com>
+ 
+ 	* dwarf2out.cc (gen_namelist_decl): Adjust to suit correct
+ 	spelling of DW_AT_namelist_item.
+ 
+ 2022-05-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* omp-low.cc (build_outer_var_ref): For code == OMP_CLAUSE_ALLOCATE
+ 	allow var to be private in the outer context.
+ 	(lower_private_allocate): Pass OMP_CLAUSE_ALLOCATE as last argument
+ 	to build_outer_var_ref.
+ 
+ 2022-05-30  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.cc (ix86_modes_tieable_p): Allow SCmode to be
+ 	tieable with DImode on TARGET_64BIT, and SCmode tieable with
+ 	V2SFmode, and DCmode with V2DFmode.
+ 
+ 2022-05-30  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/101617
+ 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Add a
+ 	special case (indicated by negate_cc_compare_p) to generate a
+ 	-1/0 mask using neg;sbb.
+ 	* config/i386/i386.md (x86_neg<mode>_ccc): New define_expand
+ 	to generate an *x86_neg<mode>_ccc instruction.
+ 	(x86_mov<mode>cc_0_m1_neg): Likewise, a new define_expand to
+ 	generate a *x86_mov<mode>cc_0_m1_neg instruction.
+ 
+ 2022-05-30  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* rtlanal.cc (rtx_cost) <MULT>: Treat FMA, SS_MULT, US_MULT,
+ 	SMUL_HIGHPART and UMUL_HIGHPART as having the same cost as MULT.
+ 	<DIV>: Likewise, SS_DIV and US_DIV have the same default as DIV.
+ 
+ 2022-05-30  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/70321
+ 	* config/i386/i386-expand.cc (ix86_expand_branch): Don't decompose
+ 	DI mode equality/inequality using XOR here.  Instead generate a
+ 	COMPARE for doubleword modes (DImode on !TARGET_64BIT or TImode).
+ 	* config/i386/i386-features.cc (gen_gpr_to_xmm_move_src): Use
+ 	gen_rtx_SUBREG when NUNITS is 1, i.e. for TImode to V1TImode.
+ 	(general_scalar_chain::convert_compare): New function to convert
+ 	scalar equality/inequality comparison into vector operations.
+ 	(general_scalar_chain::convert_insn) [COMPARE]: Refactor. Call
+ 	new convert_compare helper method.
+ 	(convertible_comparion_p): Update to match doubleword COMPARE
+ 	of two register, memory or integer constant operands.
+ 	* config/i386/i386-features.h (general_scalar_chain::convert_compare):
+ 	Prototype/declare member function here.
+ 	* config/i386/i386.md (cstore<mode>4): Change mode to SDWIM, but
+ 	only allow new doubleword modes for EQ and NE operators.
+ 	(*cmp<dwi>_doubleword): New define_insn_and_split, to split a
+ 	doubleword comparison into a pair of XORs followed by an IOR to
+ 	set the (zero) flags register, optimizing the XORs if possible.
+ 	* config/i386/sse.md (V_AVX): Include V1TI and V2TI in mode
+ 	iterator; V_AVX is (currently) only used by ptest.
+ 	(sse4_1 mode attribute): Update to support V1TI and V2TI.
+ 
+ 2022-05-30  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md: Remove constraints when used with
+ 	const_int_operand, const0_operand, const_1_operand, constm1_operand,
+ 	const8_operand, const128_operand, const248_operand, const123_operand,
+ 	const2367_operand, const1248_operand, const359_operand,
+ 	const_4_or_8_to_11_operand, const48_operand, const_0_to_1_operand,
+ 	const_0_to_3_operand, const_0_to_4_operand, const_0_to_5_operand,
+ 	const_0_to_7_operand, const_0_to_15_operand, const_0_to_31_operand,
+ 	const_0_to_63_operand, const_0_to_127_operand, const_0_to_255_operand,
+ 	const_0_to_255_mul_8_operand, const_1_to_31_operand,
+ 	const_1_to_63_operand, const_2_to_3_operand, const_4_to_5_operand,
+ 	const_4_to_7_operand, const_6_to_7_operand, const_8_to_9_operand,
+ 	const_8_to_11_operand, const_8_to_15_operand, const_10_to_11_operand,
+ 	const_12_to_13_operand, const_12_to_15_operand, const_14_to_15_operand,
+ 	const_16_to_19_operand, const_16_to_31_operand, const_20_to_23_operand,
+ 	const_24_to_27_operand and const_28_to_31_operand.
+ 	* config/i386/mmx.md: Ditto.
+ 	* config/i386/sse.md: Ditto.
+ 	* config/i386/subst.md: Ditto.
+ 	* config/i386/sync.md: Ditto.
+ 
+ 2022-05-30  Jan Beulich  <jbeulich@suse.com>
+ 
+ 	* config/i386/i386.md (bmi2_umul<mode><dwi>3_1): Correct MEM_P()
+ 	arguments.
+ 
+ 2022-05-30  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* config/arm/arm.cc (arm_vectorize_vec_perm_const): Adjust prototype.
+ 
+ 2022-05-29  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/105599
+ 	* config/darwin.h: Move versions-specific handling of multiply_defined
+ 	from SUBTARGET_DRIVER_SELF_SPECS to LINK_SPEC.
+ 
+ 2022-05-29  Eric Gallager  <egallager@gcc.gnu.org>
+ 
+ 	PR other/82383
+ 	* doc/sourcebuild.texi: Add entries for the c++tools,
+ 	gotools, libbacktrace, libcc1, libcody, liboffloadmic,
+ 	and libsanitizer directories. Remove entry for boehm-gc.
+ 	Fix alphabetization for libquadmath.
+ 
+ 2022-05-28  Joel Holdsworth  <jholdsworth@nvidia.com>
+ 
+ 	* config/avr/avr-mcus.def: Add device definitions.
+ 	* doc/avr-mmcu.texi: Corresponding changes.
+ 	* config/avr/gen-avr-mmcu-texi.cc: Added support for avr
+ 	device prefix.
+ 	* config/avr/gen-avr-mmcu-specs.cc: Prevent -mmcu=avr* flags
+ 	from leaking into cc1.
+ 
+ 2022-05-28  Vladimir Makarov  <vmakarov@gcc.gnu.org>
+ 
+ 	PR target/103722
+ 	* config/sh/sh.cc (sh_register_move_cost): Avoid cost "2" (which
+ 	is special) for various scenarios.
+ 
+ 2022-05-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.h (REAL_LIBGCC_SPEC): Update the comment block
+ 	describing this macro.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-dfa.cc (get_ref_base_and_extent): Avoid shift.
+ 
+ 2022-05-27  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/105639
+ 	* ipa-prop.cc (propagate_controlled_uses): Check type of the
+ 	constant before adding a LOAD reference.
+ 
+ 2022-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (enum omp_clause_code): Rename OMP_CLAUSE_TO_DECLARE
+ 	to OMP_CLAUSE_ENTER.
+ 	* tree.h (OMP_CLAUSE_ENTER_TO): Define.
+ 	* tree.cc (omp_clause_num_ops, omp_clause_code_name): Rename
+ 	OMP_CLAUSE_TO_DECLARE to OMP_CLAUSE_ENTER.
+ 	* tree-pretty-print.cc (dump_omp_clause): Handle OMP_CLAUSE_ENTER
+ 	instead of OMP_CLAUSE_TO_DECLARE, if OMP_CLAUSE_ENTER_TO, print
+ 	"to" instead of "enter".
+ 	* tree-nested.cc (convert_nonlocal_omp_clauses,
+ 	convert_local_omp_clauses): Handle OMP_CLAUSE_ENTER instead of
+ 	OMP_CLAUSE_TO_DECLARE.
+ 
+ 2022-05-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105726
+ 	* gimple-ssa-warn-restrict.cc (builtin_memref::set_base_and_offset):
+ 	Constrain array-of-flexarray case more.
+ 
+ 2022-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105729
+ 	* fold-const.cc (fold_unary_loc): Don't optimize (X &) ((Y *) z + w)
+ 	to (X &) z + w if -fsanitize=null during GENERIC folding.
+ 
+ 2022-05-27  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* match.pd (match_zero_one_valued_p): New predicate.
+ 	(mult @0 @1): Use zero_one_valued_p for optimization to the
+ 	expression "bit_and @0 @1".
+ 	(bit_and (negate zero_one_valued_p@0) @1): Optimize to MULT_EXPR.
+ 	(plus @0 (mult (minus @1 @0) zero_one_valued_p@2)): New transform.
+ 	(minus @0 (mult (minus @0 @1) zero_one_valued_p@2)): Likewise.
+ 	(bit_xor @0 (mult (bit_xor @0 @1) zero_one_valued_p@2)): Likewise.
+ 	Remove three redundant transforms obsoleted by the three above.
+ 
+ 2022-05-27  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (*test<mode>_not): New define_insn_and_split
+ 	to split a combined "and;cmp" sequence into "not;test".
+ 
+ 2022-05-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (bswapsi2): New expansion pattern.
+ 	(bswapsi2_internal): Revise the template and condition, and add
+ 	detection code for preceding the same insn in order to omit a
+ 	"SSAI 8" instruction of the latter.
+ 	(bswapdi2): Suppress built-in insn expansion with the corresponding
+ 	library call when optimizing for size.
+ 
+ 2022-05-27  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa-protos.h
+ 	(xtensa_expand_block_set_unrolled_loop,
+ 	xtensa_expand_block_set_small_loop): New prototypes.
+ 	* config/xtensa/xtensa.cc (xtensa_sizeof_MOVI,
+ 	xtensa_expand_block_set_unrolled_loop,
+ 	xtensa_expand_block_set_small_loop): New functions.
+ 	* config/xtensa/xtensa.md (setmemsi): New expansion pattern.
+ 	* config/xtensa/xtensa.opt (mlongcalls): Add target mask.
+ 
+ 2022-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.cc (xtensa_expand_block_move):
+ 	Make instruction counting more accurate, and simplify emitting insns.
+ 
+ 2022-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/constraints.md (M, O): Use the macro.
+ 	* config/xtensa/predicates.md (addsubx_operand, extui_fldsz_operand,
+ 	sext_fldsz_operand): Ditto.
+ 	* config/xtensa/xtensa.cc (xtensa_simm8, xtensa_simm8x256,
+ 	xtensa_simm12b, xtensa_uimm8, xtensa_uimm8x2, xtensa_uimm8x4,
+ 	xtensa_mask_immediate, smalloffset_mem_p, printx, xtensa_call_save_reg,
+ 	xtensa_expand_prologue): Ditto.
+ 	* config/xtensa/xtensa.h (FUNCTION_ARG_REGNO_P): Ditto.
+ 
+ 2022-05-26  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/predicates.md (extui_fldsz_operand): Simplify.
+ 	* config/xtensa/xtensa.cc (xtensa_mask_immediate, print_operand):
+ 	Ditto.
+ 
+ 2022-05-25  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc: Adjust comments.
+ 	* gimple-range-infer.cc: Adjust comments.
+ 	* gimple-range-infer.h: Adjust comments.
+ 	* gimple-range.cc: Adjust comments.
+ 
+ 2022-05-25  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Use gimple-range-infer.o.
+ 	* gimple-range-cache.cc (ranger_cache::fill_block_cache): Change msg.
+ 	(ranger_cache::range_from_dom): Rename var side_effect to infer.
+ 	(ranger_cache::apply_inferred_ranges): Rename from apply_side_effects.
+ 	* gimple-range-cache.h: Include gimple-range-infer.h.
+ 	(class ranger_cache): Adjust prototypes, use infer_range_manager.
+ 	* gimple-range-infer.cc: Rename from gimple-range-side-effects.cc.
+ 	(gimple_infer_range::*): Rename from stmt_side_effects.
+ 	(infer_range_manager::*): Rename from side_effect_manager.
+ 	* gimple-range-side-effect.cc: Rename.
+ 	* gimple-range-side-effect.h: Rename.
+ 	* gimple-range-infer.h: Rename from gimple-range-side-effects.h.
+ 	(class gimple_infer_range): Rename from stmt_side_effects.
+ 	(class infer_range_manager): Rename from side_effect_manager.
+ 	* gimple-range.cc (gimple_ranger::register_inferred_ranges): Rename
+ 	from register_side_effects.
+ 	* gimple-range.h (register_inferred_ranges): Adjust prototype.
+ 	* range-op.h: Adjust comment.
+ 	* tree-vrp.cc (rvrp_folder::pre_fold_bb): Use register_inferred_ranges.
+ 	(rvrp_folder::post_fold_bb): Use register_inferred_ranges.
+ 
+ 2022-05-25  Simon Cook  <simon.cook@embecosm.com>
+ 
+ 	* config/riscv/arch-canonicalize: Only add mafd extension if
+ 	base was rv32/rv64g.
+ 
+ 2022-05-25  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi (AMD GCN Options): Add gfx908/gfx90a.
+ 
+ 2022-05-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105714
+ 	* asan.cc (has_stmt_been_instrumented_p): For assignments which
+ 	are both stores and loads, return true only if both destination
+ 	and source have been instrumented.
+ 
+ 2022-05-25  Martin Liska  <mliska@suse.cz>
+ 	    Richard Biener   <rguenther@suse.de>
+ 
+ 	* dbgcnt.def (DEBUG_COUNTER): Add loop_unswitch counter.
+ 	* params.opt (max-unswitch-level): Remove.
+ 	* doc/invoke.texi (max-unswitch-level): Likewise.
+ 	* tree-cfg.cc (gimple_lv_add_condition_to_bb): Support not
+ 	gimplified expressions.
+ 	* tree-ssa-loop-unswitch.cc (struct unswitch_predicate): New.
+ 	(tree_may_unswitch_on): Rename to ...
+ 	(find_unswitching_predicates_for_bb): ... this and handle
+ 	switch statements.
+ 	(get_predicates_for_bb): Likewise.
+ 	(set_predicates_for_bb): Likewise.
+ 	(init_loop_unswitch_info): Likewise.
+ 	(tree_ssa_unswitch_loops): Prepare stuff before calling
+ 	tree_unswitch_single_loop.
+ 	(tree_unswitch_single_loop): Rework the function using
+ 	pre-computed predicates and with a per original loop cost model.
+ 	(merge_last): New.
+ 	(add_predicate_to_path): Likewise.
+ 	(find_range_for_lhs): Likewise.
+ 	(simplify_using_entry_checks): Rename to ...
+ 	(evaluate_control_stmt_using_entry_checks): ... this, handle
+ 	switch statements and improve simplifications using ranger.
+ 	(simplify_loop_version): Rework using
+ 	evaluate_control_stmt_using_entry_checks.
+ 	(evaluate_bbs): New.
+ 	(evaluate_loop_insns_for_predicate): Likewise.
+ 	(tree_unswitch_loop): Adjust to allow switch statements and
+ 	pass in the edge to unswitch.
+ 	(clean_up_after_unswitching): New.
+ 	(pass_tree_unswitch::execute): Pass down fun.
+ 
+ 2022-05-24  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* tree-vect-loop-manip.cc (vect_do_peeling): Save/restore profile
+ 	counts for the epilog loop.
+ 
+ 2022-05-24  Martin Sebor  <msebor@redhat.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105604
+ 	* gimple-ssa-sprintf.cc (set_aggregate_size_and_offset): Add comments.
+ 	(get_origin_and_offset_r): Remove null handling.  Handle variable array
+ 	sizes.
+ 	(get_origin_and_offset): Handle null argument here.  Simplify.
+ 	(alias_offset): Update comment.
+ 	* pointer-query.cc (field_at_offset): Update comment.  Handle members
+ 	of variable-length types.
+ 
+ 2022-05-24  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
+ 
+ 	* target.def (vec_perm_const): Define new parameter op_mode and
+ 	update doc.
+ 	* doc/tm.texi: Regenerate.
+ 	* config/aarch64/aarch64.cc (aarch64_vectorize_vec_perm_const): Adjust
+ 	vec_perm_const hook to add new parameter op_mode and return false
+ 	if result and operand modes do not match.
+ 	* config/arm/arm.cc (arm_vectorize_vec_perm_const): Likewise.
+ 	* config/gcn/gcn.cc (gcn_vectorize_vec_perm_const): Likewise.
+ 	* config/ia64/ia64.cc (ia64_vectorize_vec_perm_const): Likewise.
+ 	* config/mips/mips.cc (mips_vectorize_vec_perm_const): Likewise.
+ 	* config/rs6000/rs6000.cc (rs6000_vectorize_vec_perm_const): Likewise
+ 	* config/s390/s390.cc (s390_vectorize_vec_perm_const): Likewise.
+ 	* config/sparc/sparc.cc (sparc_vectorize_vec_perm_const): Likewise.
+ 	* config/i386/i386-expand.cc (ix86_vectorize_vec_perm_const): Likewise.
+ 	* config/i386/i386-expand.h (ix86_vectorize_vec_perm_const): Adjust
+ 	prototype.
+ 	* config/i386/sse.md (ashrv4di3): Adjust call to vec_perm_const hook.
+ 	(ashrv2di3): Likewise.
+ 	* optabs.cc (expand_vec_perm_const): Likewise.
+ 	* optabs-query.h (can_vec_perm_const_p): Adjust prototype.
+ 	* optabs-query.cc (can_vec_perm_const_p): Define new parameter
+ 	op_mode and pass it to vec_perm_const hook.
+ 	(can_mult_highpart_p): Adjust call to can_vec_perm_const_p.
+ 	* match.pd (vec_perm X Y CST): Likewise.
+ 	* tree-ssa-forwprop.cc (simplify_vector_constructor): Likewise.
+ 	* tree-vect-data-refs.cc (vect_grouped_store_supported): Likewise.
+ 	(vect_grouped_load_supported): Likewise.
+ 	(vect_shift_permute_load_chain): Likewise.
+ 	* tree-vect-generic.cc (lower_vec_perm): Likewise.
+ 	* tree-vect-loop-manip.cc (interleave_supported_p): Likewise.
+ 	* tree-vect-loop.cc (have_whole_vector_shift): Likewise.
+ 	* tree-vect-patterns.cc (vect_recog_rotate_pattern): Likewise.
+ 	* tree-vect-slp.cc (can_duplicate_and_interleave_p): Likewise.
+ 	(vect_transform_slp_perm_load): Likewise.
+ 	(vectorizable_slp_permutation): Likewise.
+ 	* tree-vect-stmts.cc (perm_mask_for_reverse): Likewise.
+ 	(vectorizable_bswap): Likewise.
+ 	(scan_store_can_perm_p): Likewise.
+ 	(vect_gen_perm_mask_checked): Likewise.
+ 
+ 2022-05-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104816
+ 	* config/i386/i386.opt: Remove Undocumented.
+ 	* doc/invoke.texi: Document -mcet-switch.
+ 
+ 2022-05-24  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config.gcc (amdgcn): Accept --with-arch=gfx908 and gfx90a.
+ 	* config/gcn/gcn-opts.h (enum gcn_isa): New.
+ 	(TARGET_GCN3): Use enum gcn_isa.
+ 	(TARGET_GCN3_PLUS): Likewise.
+ 	(TARGET_GCN5): Likewise.
+ 	(TARGET_GCN5_PLUS): Likewise.
+ 	(TARGET_CDNA1): New.
+ 	(TARGET_CDNA1_PLUS): New.
+ 	(TARGET_CDNA2): New.
+ 	(TARGET_CDNA2_PLUS): New.
+ 	(TARGET_M0_LDS_LIMIT): New.
+ 	(TARGET_PACKED_WORK_ITEMS): New.
+ 	* config/gcn/gcn.cc (gcn_isa): Change to enum gcn_isa.
+ 	(gcn_option_override): Recognise CDNA ISA variants.
+ 	(gcn_omp_device_kind_arch_isa): Support gfx90a.
+ 	(gcn_expand_prologue): Make m0 init optional.
+ 	Add support for packed work items.
+ 	(output_file_start): Support gfx90a.
+ 	(gcn_hsa_declare_function_name): Support gfx90a metadata.
+ 	* config/gcn/gcn.h (TARGET_CPU_CPP_BUILTINS):Add __CDNA1__ and
+ 	__CDNA2__.
+ 	* config/gcn/gcn.md (<su>mulsi3_highpart): Use TARGET_GCN5_PLUS.
+ 	(<su>mulsi3_highpart_imm): Likewise.
+ 	(<su>mulsidi3): Likewise.
+ 	(<su>mulsidi3_imm): Likewise.
+ 	* config/gcn/gcn.opt (gpu_type): Add gfx90a.
+ 	* config/gcn/mkoffload.cc (EF_AMDGPU_MACH_AMDGCN_GFX90a): New.
+ 	(main): Support gfx90a.
+ 	* config/gcn/t-gcn-hsa: Add gfx90a multilib.
+ 	* config/gcn/t-omp-device: Add gfx90a isa.
+ 
+ 2022-05-24  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config.in: Regenerate.
+ 	* config/gcn/gcn-hsa.h (X_FIJI): Delete.
+ 	(X_900): Delete.
+ 	(X_906): Delete.
+ 	(X_908): Delete.
+ 	(S_FIJI): Delete.
+ 	(S_900): Delete.
+ 	(S_906): Delete.
+ 	(S_908): Delete.
+ 	(NO_XNACK): New macro.
+ 	(NO_SRAM_ECC): New macro.
+ 	(SRAMOPT): Keep only v4 variant.
+ 	(HSACO3_SELECT_OPT): Delete.
+ 	(DRIVER_SELF_SPECS): Delete.
+ 	(ASM_SPEC): Remove LLVM 9 support.
+ 	* config/gcn/gcn-valu.md
+ 	(gather<mode>_insn_2offsets<exec>): Remove assembler bug workaround.
+ 	(scatter<mode>_insn_2offsets<exec_scatter>): Likewise.
+ 	* config/gcn/gcn.cc (output_file_start): Remove LLVM 9 support.
+ 	(print_operand_address): Remove assembler bug workaround.
+ 	* config/gcn/mkoffload.cc (EF_AMDGPU_XNACK_V3): Delete.
+ 	(EF_AMDGPU_SRAM_ECC_V3): Delete.
+ 	(SET_XNACK_ON): Delete v3 variants.
+ 	(SET_XNACK_OFF): Delete v3 variants.
+ 	(TEST_XNACK): Delete v3 variants.
+ 	(SET_SRAM_ECC_ON): Delete v3 variants.
+ 	(SET_SRAM_ECC_ANY): Delete v3 variants.
+ 	(SET_SRAM_ECC_OFF): Delete v3 variants.
+ 	(SET_SRAM_ECC_UNSUPPORTED): Delete v3 variants.
+ 	(TEST_SRAM_ECC_ANY): Delete v3 variants.
+ 	(TEST_SRAM_ECC_ON): Delete v3 variants.
+ 	(copy_early_debug_info): Remove v3 support.
+ 	(main): Remove v3 support.
+ 	* configure: Regenerate.
+ 	* configure.ac: Replace all GCN feature checks with a version check.
+ 
+ 2022-05-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (peephole2): Convert xor;neg;adc;neg,
+ 	i.e. a double word negation of a zero extended operand, to
+ 	neg;sbb.
+ 
+ 2022-05-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/105668
+ 	* config/i386/i386-expand.cc (ix86_expand_sse_movcc): Support
+ 	V1TImode, just like V2DImode.
+ 	* config/i386/sse.md (vcond_mask_<mode><sseintvecmodelower>):
+ 	Use VI_128 mode iterator instead of VI124_128 to include V2DI.
+ 	(vcond_mask_v2div2di): Delete.
+ 	(vcond_mask_v1tiv1ti): New define_expand.
+ 
+ 2022-05-24  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* genpreds.cc (write_lookup_constraint_1): Avoid generating a call
+ 	to strncmp for strings of length one.
+ 
+ 2022-05-24  ShiYulong  <shiyulong@iscas.ac.cn>
+ 
+ 	* config/riscv/predicates.md (imm5_operand): Add a new operand type for
+ 	prefetch instructions.
+ 	* config/riscv/riscv-builtins.cc (AVAIL): Add new AVAILs for CMO ISA
+ 	Extensions.
+ 	(RISCV_ATYPE_SI): New.
+ 	(RISCV_ATYPE_DI): New.
+ 	* config/riscv/riscv-ftypes.def (0): New.
+ 	(1): New.
+ 	* config/riscv/riscv.md (riscv_clean_<mode>): New.
+ 	(riscv_flush_<mode>): New.
+ 	(riscv_inval_<mode>): New.
+ 	(riscv_zero_<mode>): New.
+ 	(prefetch): New.
+ 	(riscv_prefetchi_<mode>): New.
+ 	* config/riscv/riscv-cmo.def: New file.
+ 
+ 2022-05-24  ShiYulong  <shiyulong@iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc: Add zicbom, zicboz, zicbop extensions.
+ 	* config/riscv/riscv-opts.h (MASK_ZICBOZ): New.
+ 	(MASK_ZICBOM): New.
+ 	(MASK_ZICBOP): New.
+ 	(TARGET_ZICBOZ): New.
+ 	(TARGET_ZICBOM): New.
+ 	(TARGET_ZICBOP): New.
+ 	* config/riscv/riscv.opt (riscv_zicmo_subext): New.
+ 
+ 2022-05-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* tree-vect-slp-patterns.cc: Add "final" and "override" to
+ 	vect_pattern::build impls as appropriate.
+ 
+ 2022-05-24  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* ipa-cp.cc: Add "final" and "override" to call_summary_base vfunc
+ 	implementations, removing redundant "virtual" as appropriate.
+ 	* ipa-fnsummary.h: Likewise.
+ 	* ipa-modref.cc: Likewise.
+ 	* ipa-param-manipulation.cc: Likewise.
+ 	* ipa-profile.cc: Likewise.
+ 	* ipa-prop.h: Likewise.
+ 	* ipa-pure-const.cc: Likewise.
+ 	* ipa-reference.cc: Likewise.
+ 	* ipa-sra.cc: Likewise.
+ 	* symbol-summary.h: Likewise.
+ 	* symtab-thunks.cc: Likewise.
+ 
+ 2022-05-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-05-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* expmed.cc (emit_store_flag_1): Mitigate -Wmaybe-uninitialized
+ 	warning.
+ 
+ 2022-05-24  Martin Liska  <mliska@suse.cz>
+ 
+ 	* expmed.cc (emit_store_flag_1): Mitigate -Wmaybe-uninitialized
+ 	warning.
+ 
+ 2022-05-24  Bruno Haible  <bruno@clisp.org>
+ 
+ 	PR other/105527
+ 	* doc/install.texi (Configuration): Add more details about --with-zstd.
+ 	Document --with-zstd-include and --with-zstd-lib
+ 
+ 2022-05-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105711
+ 	* expmed.cc (extract_bit_field_as_subreg): Add op0_mode parameter
+ 	and use it.
+ 	(extract_bit_field_1): Pass down the mode of op0 to
+ 	extract_bit_field_as_subreg.
+ 
+ 2022-05-24  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* config/riscv/riscv.cc: (struct riscv_tune_param): Add
+ 	fmv_cost.
+ 	(rocket_tune_info): Add default fmv_cost 8.
+ 	(sifive_7_tune_info): Ditto.
+ 	(thead_c906_tune_info): Ditto.
+ 	(optimize_size_tune_info): Ditto.
+ 	(riscv_register_move_cost): Use fmv_cost for int<->fp moves.
+ 
+ 2022-05-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/105378
+ 	* omp-builtins.def (BUILT_IN_GOMP_TASKWAIT_DEPEND_NOWAIT): New
+ 	builtin.
+ 	* gimplify.cc (gimplify_omp_task): Diagnose taskwait with nowait
+ 	clause but no depend clauses.
+ 	* omp-expand.cc (expand_taskwait_call): Use
+ 	BUILT_IN_GOMP_TASKWAIT_DEPEND_NOWAIT rather than
+ 	BUILT_IN_GOMP_TASKWAIT_DEPEND if nowait clause is present.
+ 
+ 2022-05-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100221
+ 	* tree-ssa-dse.cc (contains_phi_arg): New function.
+ 	(dse_classify_store): Postpone PHI defs that feed another PHI in defs.
+ 
+ 2022-05-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105629
+ 	* tree-ssa-phiopt.cc (spaceship_replacement): Allow
+ 	a sign-extending conversion.
+ 
+ 2022-05-24  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/105627
+ 	* config/rs6000/rs6000-p8swap.cc (union_defs): Assert def_insn can't
+ 	be a debug insn.
+ 	(union_uses): Skip debug use_insn.
+ 
+ 2022-05-23  Vineet Gupta  <vineetg@rivosinc.com>
+ 
+ 	* config/riscv/predicates.md (const_0_operand): Remove
+ 	const_double.
+ 	* config/riscv/riscv.cc (riscv_rtx_costs): Add check for
+ 	CONST_DOUBLE.
+ 	* config/riscv/riscv.h (TARGET_SUPPORTS_WIDE_INT): New define.
+ 
+ 2022-05-23  Mayshao  <mayshao-oc@zhaoxin.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_zhaoxin_cpu): Detect
+ 	the specific type of Zhaoxin CPU, and return Zhaoxin CPU name.
+ 	(cpu_indicator_init): Handle Zhaoxin processors.
+ 	* common/config/i386/i386-common.cc: Add lujiazui.
+ 	* common/config/i386/i386-cpuinfo.h (enum processor_vendor): Add
+ 	VENDOR_ZHAOXIN.
+ 	(enum processor_types): Add ZHAOXIN_FAM7H.
+ 	(enum processor_subtypes): Add ZHAOXIN_FAM7H_LUJIAZUI.
+ 	* config.gcc: Add lujiazui.
+ 	* config/i386/cpuid.h (signature_SHANGHAI_ebx): Add
+ 	Signatures for zhaoxin
+ 	(signature_SHANGHAI_ecx): Ditto.
+ 	(signature_SHANGHAI_edx): Ditto.
+ 	* config/i386/driver-i386.cc (host_detect_local_cpu): Let
+ 	-march=native recognize lujiazui processors.
+ 	* config/i386/i386-c.cc (ix86_target_macros_internal): Add lujiazui.
+ 	* config/i386/i386-options.cc (m_LUJIAZUI): New_definition.
+ 	* config/i386/i386.h (enum processor_type): Ditto.
+ 	* config/i386/i386.md: Add lujiazui.
+ 	* config/i386/x86-tune-costs.h (struct processor_costs): Add
+ 	lujiazui costs.
+ 	* config/i386/x86-tune-sched.cc (ix86_issue_rate): Add lujiazui.
+ 	(ix86_adjust_cost): Ditto.
+ 	* config/i386/x86-tune.def (X86_TUNE_SCHEDULE): Add lujiazui Tunnings.
+ 	(X86_TUNE_PARTIAL_REG_DEPENDENCY): Ditto.
+ 	(X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY): Ditto.
+ 	(X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY): Ditto.
+ 	(X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY): Ditto.
+ 	(X86_TUNE_MOVX): Ditto.
+ 	(X86_TUNE_MEMORY_MISMATCH_STALL): Ditto.
+ 	(X86_TUNE_FUSE_CMP_AND_BRANCH_32): Ditto.
+ 	(X86_TUNE_FUSE_CMP_AND_BRANCH_64): Ditto.
+ 	(X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS): Ditto.
+ 	(X86_TUNE_FUSE_ALU_AND_BRANCH): Ditto.
+ 	(X86_TUNE_ACCUMULATE_OUTGOING_ARGS): Ditto.
+ 	(X86_TUNE_USE_LEAVE): Ditto.
+ 	(X86_TUNE_PUSH_MEMORY): Ditto.
+ 	(X86_TUNE_LCP_STALL): Ditto.
+ 	(X86_TUNE_USE_INCDEC): Ditto.
+ 	(X86_TUNE_INTEGER_DFMODE_MOVES): Ditto.
+ 	(X86_TUNE_OPT_AGU): Ditto.
+ 	(X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB): Ditto.
+ 	(X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES): Ditto.
+ 	(X86_TUNE_USE_SAHF): Ditto.
+ 	(X86_TUNE_USE_BT): Ditto.
+ 	(X86_TUNE_AVOID_FALSE_DEP_FOR_BMI): Ditto.
+ 	(X86_TUNE_ONE_IF_CONV_INSN): Ditto.
+ 	(X86_TUNE_AVOID_MFENCE): Ditto.
+ 	(X86_TUNE_EXPAND_ABS): Ditto.
+ 	(X86_TUNE_USE_SIMODE_FIOP): Ditto.
+ 	(X86_TUNE_USE_FFREEP): Ditto.
+ 	(X86_TUNE_EXT_80387_CONSTANTS): Ditto.
+ 	(X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL): Ditto.
+ 	(X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL): Ditto.
+ 	(X86_TUNE_SSE_TYPELESS_STORES): Ditto.
+ 	(X86_TUNE_SSE_LOAD0_BY_PXOR): Ditto.
+ 	* doc/extend.texi: Add details about lujiazui.
+ 	* doc/invoke.texi: Add details about lujiazui.
+ 	* config/i386/lujiazui.md: Introduce lujiazui cpu and include new md file.
+ 
+ 2022-05-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/tilepro/gen-mul-tables.cc (ARRAY_SIZE): Add new macro.
+ 
+ 2022-05-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-forwprop.cc (forward_propagate_into_cond): Remove.
+ 	(pass_forwprop::execute): Do not propagate into COND_EXPR conditions.
+ 
+ 2022-05-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-expr.cc (is_gimple_condexpr): Remove.
+ 	* gimple-expr.h (is_gimple_condexpr): Likewise.
+ 	* gimplify.cc (gimplify_expr): Remove is_gimple_condexpr usage.
+ 	* tree-if-conv.cc (set_bb_predicate): Likewie.
+ 	(add_to_predicate_list): Likewise.
+ 	(gen_phi_arg_condition): Likewise.
+ 	(predicate_scalar_phi): Likewise.
+ 	(predicate_statements): Likewise.
+ 
+ 2022-05-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-expr.cc (is_gimple_condexpr): Equate to is_gimple_val.
+ 	* gimplify.cc (gimplify_pure_cond_expr): Gimplify the condition
+ 	as is_gimple_val.
+ 	* gimple-fold.cc (valid_gimple_rhs_p): Simplify.
+ 	* tree-cfg.cc (verify_gimple_assign_ternary): Likewise.
+ 	* gimple-loop-interchange.cc (loop_cand::undo_simple_reduction):
+ 	Build the condition of the COND_EXPR separately.
+ 	* tree-ssa-loop-im.cc (move_computations_worker): Likewise.
+ 	* tree-vect-generic.cc (expand_vector_condition): Likewise.
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
+ 	Likewise.
+ 	* vr-values.cc (simplify_using_ranges::simplify): Likewise.
+ 	* tree-vect-patterns.cc: Add comment indicating we are
+ 	building invalid COND_EXPRs and why.
+ 	* omp-expand.cc (expand_omp_simd): Gimplify the condition
+ 	to the COND_EXPR separately.
+ 	(expand_omp_atomic_cas): Note part that should be unreachable
+ 	now.
+ 	* tree-ssa-forwprop.cc (forward_propagate_into_cond): Adjust
+ 	condition for valid replacements.
+ 	* tree-if-conv.cc (predicate_bbs): Simulate previous
+ 	re-folding of the condition in folded COND_EXPRs which
+ 	is necessary because of unfolded GIMPLE_CONDs in the IL
+ 	as in for example gcc.dg/fold-bopcond-1.c.
+ 	* gimple-range-gori.cc (gori_compute::condexpr_adjust):
+ 	Handle that the comparison is now in the def stmt of
+ 	the select operand.  Required by gcc.dg/pr104526.c.
+ 
+ 2022-05-23  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR fortran/104949
+ 	* langhooks-def.h (lhd_omp_array_size): New.
+ 	(LANG_HOOKS_OMP_ARRAY_SIZE): Define.
+ 	(LANG_HOOKS_DECLS): Add it.
+ 	* langhooks.cc (lhd_omp_array_size): New.
+ 	* langhooks.h (struct lang_hooks_for_decls): Add hook.
+ 	* omp-low.cc (scan_sharing_clauses, lower_omp_target):
+ 	Handle GOMP_MAP_FIRSTPRIVATE for array descriptors.
+ 
+ 2022-05-23  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.cc (ix86_rtx_costs) <case AND>: Split from
+ 	XOR/IOR case.  Account for two instructions for double-word
+ 	operations.  In case of vector pandn, account for single
+ 	instruction.  Likewise for integer andn with TARGET_BMI.
+ 	<case NOT>: Vector NOT requires more than 1 instruction (pxor).
+ 	<case NEG>: Double-word negation requires 3 instructions.
+ 
+ 2022-05-23  Tsukasa OI  <research_trasio@irq.a4lg.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_supported_std_ext):
+ 	Fix "K" extension prefix to be placed before "J".
+ 	* config/riscv/arch-canonicalize: Likewise.
+ 
+ 2022-05-23  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/x86-tune-costs.h (skylake_cost): Increase gpr
+ 	<-> mask cost from 5 to 6.
+ 	(icelake_cost): Ditto.
+ 
+ 2022-05-20  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config/aarch64/aarch64.md
+ 	(and_<SHIFT:optab><mode>3_compare0): Support rotate left.
+ 	(and_<SHIFT:optab>si3_compare0_uxtw): Likewise.
+ 	(<LOGICAL:optab>_<SHIFT:optab><mode>3): Likewise.
+ 	(<LOGICAL:optab>_<SHIFT:optab>si3_uxtw): Likewise.
+ 	(one_cmpl_<optab><mode>2): Likewise.
+ 	(<LOGICAL:optab>_one_cmpl_<SHIFT:optab><mode>3): Likewise.
+ 	(<LOGICAL:optab>_one_cmpl_<SHIFT:optab>sidi_uxtw): New pattern.
+ 	(eor_one_cmpl_<SHIFT:optab><mode>3_alt): Support rotate left.
+ 	(eor_one_cmpl_<SHIFT:optab>sidi3_alt_ze): Likewise.
+ 	(and_one_cmpl_<SHIFT:optab><mode>3_compare0): Likewise.
+ 	(and_one_cmpl_<SHIFT:optab>si3_compare0_uxtw): Likewise.
+ 	(and_one_cmpl_<SHIFT:optab><mode>3_compare0_no_reuse): Likewise.
+ 	(and_<SHIFT:optab><mode>3nr_compare0): Likewise.
+ 	(*<optab>si3_insn_uxtw): Use SHIFT_no_rotate.
+ 	(rolsi3_insn_uxtw): New pattern.
+ 	* config/aarch64/iterators.md (SHIFT): Add rotate left.
+ 	(SHIFT_no_rotate): Add new iterator.
+ 	(SHIFT:shift): Print rotate left as ror.
+ 	(is_rotl): Add test for left rotate.
+ 
+ 2022-05-20  Wilco Dijkstra  <wilco.dijkstra@arm.com>
+ 
+ 	* config.gcc (aarch64*-*-*): Simplify --with-cpu and --with-arch
+ 	processing.  Add support for architectural extensions.
+ 	* config/aarch64/aarch64.h (TARGET_CPU_DEFAULT): Remove
+ 	AARCH64_CPU_DEFAULT_FLAGS.
+ 	(TARGET_CPU_NBITS): Remove.
+ 	(TARGET_CPU_MASK): Remove.
+ 	* config/aarch64/aarch64.cc (AARCH64_CPU_DEFAULT_FLAGS): Remove define.
+ 	(get_tune_cpu): Assert CPU is always valid.
+ 	(get_arch): Assert architecture is always valid.
+ 	(aarch64_override_options): Cleanup CPU selection code and simplify logic.
+ 	(aarch64_option_restore): Remove unnecessary checks on tune.
+ 
+ 2022-05-20  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* config/aarch64/aarch64-sve-builtins-base.cc: Replace uses of
+ 	"FINAL" and "OVERRIDE" with "final" and "override".
+ 	* config/aarch64/aarch64-sve-builtins-functions.h: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-shapes.cc: Likewise.
+ 	* config/aarch64/aarch64-sve-builtins-sve2.cc: Likewise.
+ 	* diagnostic-path.h: Likewise.
+ 	* digraph.cc: Likewise.
+ 	* gcc-rich-location.h: Likewise.
+ 	* gimple-array-bounds.cc: Likewise.
+ 	* gimple-loop-versioning.cc: Likewise.
+ 	* gimple-range-cache.cc: Likewise.
+ 	* gimple-range-cache.h: Likewise.
+ 	* gimple-range-fold.cc: Likewise.
+ 	* gimple-range-fold.h: Likewise.
+ 	* gimple-range-tests.cc: Likewise.
+ 	* gimple-range.h: Likewise.
+ 	* gimple-ssa-evrp.cc: Likewise.
+ 	* input.cc: Likewise.
+ 	* json.h: Likewise.
+ 	* read-rtl-function.cc: Likewise.
+ 	* tree-complex.cc: Likewise.
+ 	* tree-diagnostic-path.cc: Likewise.
+ 	* tree-ssa-ccp.cc: Likewise.
+ 	* tree-ssa-copy.cc: Likewise.
+ 	* tree-vrp.cc: Likewise.
+ 	* value-query.h: Likewise.
+ 	* vr-values.h: Likewise.
+ 
+ 2022-05-20  Marcel Vollweiler  <marcel@codesourcery.com>
+ 
+ 	* omp-low.cc (omp_runtime_api_call): Added target_memcpy_async and
+ 	target_memcpy_rect_async to omp_runtime_apis array.
+ 
+ 2022-05-20  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* doc/sourcebuild.texi (Decimal floating point attributes): Document
+ 	dfp_bid effective-target.
+ 
+ 2022-05-20  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_split_128bit_move): Handle DFP modes.
+ 	(aarch64_mode_valid_for_sched_fusion_p): Likewise.
+ 	(aarch64_classify_address): Likewise.
+ 	(aarch64_legitimize_address_displacement): Likewise.
+ 	(aarch64_reinterpret_float_as_int): Likewise.
+ 	(aarch64_float_const_zero_rtx_p): Likewise.
+ 	(aarch64_can_const_movi_rtx_p): Likewise.
+ 	(aarch64_anchor_offset): Likewise.
+ 	(aarch64_secondary_reload): Likewise.
+ 	(aarch64_rtx_costs): Likewise.
+ 	(aarch64_legitimate_constant_p): Likewise.
+ 	(aarch64_gimplify_va_arg_expr): Likewise.
+ 	(aapcs_vfp_sub_candidate): Likewise.
+ 	(aarch64_vfp_is_call_or_return_candidate): Likewise.
+ 	(aarch64_output_scalar_simd_mov_immediate): Likewise.
+ 	(aarch64_gen_adjusted_ldpstp): Likewise.
+ 	(aarch64_scalar_mode_supported_p): Accept DFP modes if enabled.
+ 	* config/aarch64/aarch64.md
+ 	(movsf_aarch64): Use SFD iterator and rename into
+ 	mov<mode>_aarch64.
+ 	(movdf_aarch64): Use DFD iterator and rename into
+ 	mov<mode>_aarch64.
+ 	(movtf_aarch64): Use TFD iterator and rename into
+ 	mov<mode>_aarch64.
+ 	(split pattern for move TF mode): Use TFD iterator.
+ 	* config/aarch64/iterators.md
+ 	(GPF_TF_F16_MOV): Add DFP modes.
+ 	(SFD, DFD, TFD): New iterators.
+ 	(GPF_TF): Add DFP modes.
+ 	(TX, DX, DX2): Likewise.
+ 
+ 2022-05-20  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-05-19  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/98865
+ 	* expr.cc (expand_expr_real_2) [MULT_EXPR]:  Expand X*Y as X&Y
+ 	when both X and Y are [0, 1], X*Y as X&-Y when Y is [0,1] and
+ 	likewise X*Y as -X&Y when X is [0,1] using tree_nonzero_bits.
+ 
+ 2022-05-19  Will Schmidt  <will_schmidt@vnet.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtins.def: Rephrase
+ 	to remove RS6000_BTC_SPECIAL from comment.
+ 	* config/rs6000/rs6000.h (RS6000_BTC_UNARY, RS6000_BTC_BINARY,
+ 	RS6000_BTC_TERNARY, RS6000_BTC_QUATERNARY,
+ 	RS6000_BTC_QUINARY, RS6000_BTC_SENARY, RS6000_BTC_OPND_MASK,
+ 	RS6000_BTC_SPECIAL, RS6000_BTC_PREDICATE, RS6000_BTC_ABS,
+ 	RS6000_BTC_DST, RS6000_BTC_TYPE_MASK, RS6000_BTC_MISC,
+ 	RS6000_BTC_CONST, RS6000_BTC_PURE, RS6000_BTC_FP,
+ 	RS6000_BTC_QUAD, RS6000_BTC_PAIR, RS6000_BTC_QUADPAIR,
+ 	RS6000_BTC_ATTR_MASK, RS6000_BTC_SPR, RS6000_BTC_VOID,
+ 	RS6000_BTC_CR, RS6000_BTC_OVERLOADED, RS6000_BTC_GIMPLE,
+ 	RS6000_BTC_MISC_MASK, RS6000_BTC_MEM, RS6000_BTC_SAT,
+ 	RS6000_BTM_ALWAYS): Delete.
+ 
+ 2022-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* omp-expand.cc (expand_omp_atomic_cas): Do not short-cut
+ 	computation of the new value.
+ 
+ 2022-05-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.cc (get_or_alloc_expression_id): Remove.
+ 	(add_to_value): Use get_expression_id.
+ 	(bitmap_insert_into_set): Likewise.
+ 	(bitmap_value_insert_into_set): Likewise.
+ 
+ 2022-05-19  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fanalyzer-checker=): Add
+ 	-Wanalyzer-va-list-leak and -Wanalyzer-va-list-use-after-va-end to
+ 	the list of analyzer warnings disabled by
+ 	-fanalyzer-checker=taint.
+ 
+ 2022-05-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/105630
+ 	* cfgexpand.cc (expand_debug_expr): For VAR_DECL, punt for
+ 	global vars without symtab node even when they have DECL_RTL
+ 	set.
+ 
+ 2022-05-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/105635
+ 	* pointer-query.cc (gimple_parm_array_size): Return NULL if var
+ 	doesn't have pointer or reference type.
+ 
+ 2022-05-18  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/105131
+ 	* doc/invoke.texi: Document -Wenum-int-mismatch.
+ 
+ 2022-05-18  Uros Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/gnu-user-common.h (defined): Only define
+ 	TARGET_CAN_SPLIT_STACK for glibc targets.
+ 	* config/i386/gnu.h (defined): Ditto.
+ 
+ 2022-05-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.cc (ix86_rtx_costs) [MULT]: When mode size
+ 	is wider than word_mode, a multiplication costs three word_mode
+ 	multiplications and two word_mode additions.
+ 
+ 2022-05-18  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (define_split):  Split *andsi_1
+ 	and *andn_si_ccno after reload with -Oz.
+ 
+ 2022-05-18  Frederik Harwath  <frederik@codesourcery.com>
+ 
+ 	* graphite-scop-detection.cc (scop_detection::can_represent_loop):
+ 	Output reason for failure to dump file.
+ 	(scop_detection::harmful_loop_in_region): Likewise.
+ 	(scop_detection::graphite_can_represent_expr): Likewise.
+ 	(scop_detection::stmt_has_simple_data_refs_p): Likewise.
+ 	(scop_detection::stmt_simple_for_scop_p): Likewise.
+ 	(print_sese_loop_numbers): New function.
+ 	(scop_detection::add_scop): Use from here.
+ 
+ 2022-05-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR middle-end/103462
+ 	* match.pd (bitwise_induction_p): New match.
+ 	* tree-scalar-evolution.cc (gimple_bitwise_induction_p):
+ 	Declare.
+ 	(analyze_and_compute_bitwise_induction_effect): New function.
+ 	(enum bit_op_kind): New enum.
+ 	(final_value_replacement_loop): Enhanced to handle bitwise
+ 	induction.
+ 
+ 2022-05-18  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	PR target/95737
+ 	* config/rs6000/rs6000.md (*subfsi3_carry_in_xx_64): New.
+ 
+ 2022-05-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104375
+ 	* config/i386/i386.md (*bmi2_bzhi_zero_extendsidi_4): New
+ 	define_insn.
+ 
+ 2022-05-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104610
+ 	* config/i386/i386-expand.cc (ix86_expand_branch): Use ptest
+ 	for QImode when code is EQ or NE.
+ 	* config/i386/i386.md (cbranchoi4): New expander.
+ 
+ 2022-05-18  Peter Bergner  <bergner@linux.ibm.com>
+ 	    Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/105556
+ 	* config/rs6000/mma.md (mma_<vv>, mma_<avv>, mma_<pv>, mma_<apv>,
+ 	mma_<vvi4i4i8>, mma_<avvi4i4i8>, mma_<vvi4i4i2>, mma_<avvi4i4i2>,
+ 	mma_<vvi4i4>, mma_<avvi4i4>, mma_<pvi4i2>, mma_<apvi4i2>,
+ 	mma_<vvi4i4i4>, mma_<avvi4i4i4>): Replace "wa" constraints with "v,?wa".
+ 	Update other operands accordingly.
+ 
+ 2022-05-17  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* godump.cc (go_output_typedef): Use the DECL_INITIAL of the TREE_VALUE.
+ 
+ 2022-05-17  Pat Haugen  <pthaugen@linux.ibm.com>
+ 
+ 	PR target/99685
+ 	* config/rs6000/rs6000-call.cc (rs6000_function_arg_advance_1): Bump
+ 	register count when not splitting IEEE 128-bit Complex.
+ 
+ 2022-05-17  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-low.cc (check_omp_nesting_restrictions): Skip warning for
+ 	target inside target if inner is reverse offload.
+ 
+ 2022-05-17  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/gcn/mkoffload.cc (process_obj): Revert: Use ARRAY_SIZE.
+ 	* config/nvptx/mkoffload.cc (process): Likewise.
+ 
+ 2022-05-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* Makefile.in (OBJS): Add gimple-range-side-effect.o.
+ 	* gimple-range-cache.cc (non_null_ref::non_null_ref): Delete.
+ 	(non_null_ref::~non_null_ref): Delete.
+ 	(non_null_ref::set_nonnull): Delete.
+ 	(non_null_ref::non_null_deref_p): Delete.
+ 	(non_null_ref::process_name): Delete.
+ 	(ranger_cache::ranger_cache): Initialize m_exit object.
+ 	(ranger_cache::fill_block_cache): Use m_exit object intead of nonnull.
+ 	(ranger_cache::range_from_dom): Use side_effect class and m_exit object.
+ 	(ranger_cache::update_to_nonnull): Delete.
+ 	(non_null_loadstore): Delete.
+ 	(ranger_cache::block_apply_nonnull): Delete.
+ 	(ranger_cache::apply_side_effects): New.
+ 	* gimple-range-cache.h (class non_null_ref): Delete.
+ 	(non_null_ref::adjust_range): Delete.
+ 	(class ranger_cache): Adjust prototypes, add side effect manager.
+ 	* gimple-range-path.cc (path_range_query::range_defined_in_block): Use
+ 	side effect manager for queries.
+ 	(path_range_query::adjust_for_non_null_uses): Ditto.
+ 	* gimple-range-path.h (class path_range_query): Delete non_null_ref.
+ 	* gimple-range-side-effect.cc: New.
+ 	* gimple-range-side-effect.h: New.
+ 	* gimple-range.cc (gimple_ranger::gimple_ranger): Update contructor.
+ 	(gimple_ranger::range_of_expr): Check def block for override value.
+ 	(gimple_ranger::range_on_entry): Don't scan dominators for non-null.
+ 	(gimple_ranger::range_on_edge): Check for outgoing side-effects.
+ 	(gimple_ranger::register_side_effects): Call apply_side_effects.
+ 	(enable_ranger): Update contructor.
+ 	* gimple-range.h (class gimple_ranger): Update prototype.
+ 	(enable_ranger): Update prototype.
+ 	* tree-vrp.cc (execute_ranger_vrp): Invoke without immediate-use flag.
+ 
+ 2022-05-17  Giuliano Belinassi  <gbelinassi@suse.de>
+ 
+ 	PR c++/105169
+ 	* targhooks.cc (default_print_patchable_function_entry_1): Handle COMDAT case.
+ 	* varasm.cc (switch_to_comdat_section): New
+ 	(handle_vtv_comdat_section): Call switch_to_comdat_section.
+ 	* varasm.h: Declare switch_to_comdat_section.
+ 
+ 2022-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfgloopmanip.cc (duplicate_loop_body_to_header_edge): Do
+ 	not clear bb->aux of the copied blocks.
+ 
+ 2022-05-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/105458
+ 	* value-relation.cc (path_oracle::register_relation): Merge, then check
+ 	for equivalence.
+ 
+ 2022-05-17  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105624
+ 	Revert:
+ 	* config/i386/i386.md: Remove constraints when used with
+ 	const_int_operand, const0_operand, const_1_operand, constm1_operand,
+ 	const8_operand, const128_operand, const248_operand, const123_operand,
+ 	const2367_operand, const1248_operand, const359_operand,
+ 	const_4_or_8_to_11_operand, const48_operand, const_0_to_1_operand,
+ 	const_0_to_3_operand, const_0_to_4_operand, const_0_to_5_operand,
+ 	const_0_to_7_operand, const_0_to_15_operand, const_0_to_31_operand,
+ 	const_0_to_63_operand, const_0_to_127_operand, const_0_to_255_operand,
+ 	const_0_to_255_mul_8_operand, const_1_to_31_operand,
+ 	const_1_to_63_operand, const_2_to_3_operand, const_4_to_5_operand,
+ 	const_4_to_7_operand, const_6_to_7_operand, const_8_to_9_operand,
+ 	const_8_to_11_operand, const_8_to_15_operand, const_10_to_11_operand,
+ 	const_12_to_13_operand, const_12_to_15_operand, const_14_to_15_operand,
+ 	const_16_to_19_operand, const_16_to_31_operand, const_20_to_23_operand,
+ 	const_24_to_27_operand and const_28_to_31_operand.
+ 	* config/i386/mmx.md: Ditto.
+ 	* config/i386/sse.md: Ditto.
+ 	* config/i386/subst.md: Ditto.
+ 	* config/i386/sync.md: Ditto.
+ 
+ 2022-05-17  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* diagnostic.cc: Don't advise to call 'abort' instead of
+ 	'internal_error'.
+ 	* system.h: Advise to call 'internal_error' instead of 'abort' or
+ 	'fancy_abort'.
+ 
+ 2022-05-17  Frederik Harwath  <frederik@codesourcery.com>
+ 
+ 	* graphite-sese-to-poly.cc (build_poly_sr_1): Fix a typo and
+ 	a reference to a variable which does not exist.
+ 	* graphite-isl-ast-to-gimple.cc (gsi_insert_earliest): Fix typo
+ 	in comment.
+ 
+ 2022-05-17  Frederik Harwath  <frederik@codesourcery.com>
+ 
+ 	* graphite-sese-to-poly.cc (isl_id_for_ssa_name): Rename to ...
+ 	(isl_id_for_parameter): ... this new function name.
+ 	(build_scop_context): Adjust function use.
+ 
+ 2022-05-17  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR target/105602
+ 	* config/gcn/t-omp-device (arch): Add 'amdgcn' besides existing 'gcn'.
+ 	* config/gcn/gcn.cc (gcn_omp_device_kind_arch_isa): Likewise.
+ 
+ 2022-05-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-core.h (enum omp_clause_depend_kind): Add
+ 	OMP_CLAUSE_DEPEND_INOUTSET.
+ 	* tree-pretty-print.cc (dump_omp_clause): Handle
+ 	OMP_CLAUSE_DEPEND_INOUTSET.
+ 	* gimplify.cc (gimplify_omp_depend): Likewise.
+ 	* omp-low.cc (lower_depend_clauses): Likewise.
+ 
+ 2022-05-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105613
+ 	* config/i386/sse.md (vec_cmpeqv2div2di, vec_cmpeqv1tiv1ti): Use
+ 	andv4si3 only for EQ, for NE use iorv4si3 instead.
+ 
+ 2022-05-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105618
+ 	* tree-ssa-sink.cc (statement_sink_location): For virtual
+ 	PHI uses ignore those defining the used virtual operand.
+ 
+ 2022-05-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssa-forwprop.cc (simplify_bitfield_ref): Spelling fix:
+ 	hanlde -> handle.  Fix up comment formatting.
+ 
+ 2022-05-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105033
+ 	* config/i386/sse.md (*vec_concatv4si): Extend to ..
+ 	(*vec_concat<mode>): .. V16QI and V8HImode.
+ 	(*vec_concatv16qi_permt2): New pre_reload define_insn_and_split.
+ 	(*vec_concatv8hi_permt2): Ditto.
+ 
+ 2022-05-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/105591
+ 	* tree-ssa-forwprop.cc (simplify_bitfield_ref): Clamp
+ 	vec_perm_expr index.
+ 
+ 2022-05-16  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c/105492
+ 	* attribs.cc (decl_attributes): Fix broken typedefs here.
+ 
+ 2022-05-16  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/105103
+ 	* Makefile.in (ANALYZER_OBJS): Add analyzer/varargs.o.
+ 	* doc/invoke.texi: Add -Wanalyzer-va-arg-type-mismatch,
+ 	-Wanalyzer-va-list-exhausted, -Wanalyzer-va-list-leak, and
+ 	-Wanalyzer-va-list-use-after-va-end.
+ 
+ 2022-05-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-match.h (gimple_build): Move code_helper overloads ...
+ 	* gimple-fold.h (gimple_build): ... here.
+ 	(gimple_build): Transition to new worker API.  Provide
+ 	overloads from sequence-based API.
+ 	(gimple_convert): Likewise.
+ 	(gimple_convert_to_ptrofftype): Likewise.
+ 	(gimple_build_vector_from_val): Likewise.
+ 	(gimple_build_vector): Likewise.
+ 	(gimple_build_round_up): Likewise.
+ 	* gimple-fold.cc (gimple_build_insert_seq): New helper.
+ 	(gimple_build): Use it.  Transition combined_fn and code_helper
+ 	API parts.
+ 	(gimple_convert): Transition to new worker API.
+ 	(gimple_convert_to_ptrofftype): Likewise.
+ 	(gimple_build_vector_from_val): Likewise.
+ 	(gimple_build_vector): Likewise.
+ 	(gimple_build_round_up): Likewise.
+ 
+ 2022-05-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-match.h (code_helper): Move class ...
+ 	* tree.h (code_helper): ... here.
+ 
+ 2022-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts-global.cc (write_langs): Add comment.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* dwarf2out.cc (loc_list_from_tree_1) <TRUTH_NOT_EXPR>: Do a logical
+ 	instead of a bitwise negation.
+ 	<COND_EXPR>: Swap the operands if the condition is TRUTH_NOT_EXPR.
+ 
+ 2022-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* attribs.cc (diag_attr_exclusions): Use ARRAY_SIZE.
+ 	(decls_mismatched_attributes): Likewise.
+ 	* builtins.cc (c_strlen): Likewise.
+ 	* cfg.cc (DEF_BASIC_BLOCK_FLAG): Likewise.
+ 	* common/config/aarch64/aarch64-common.cc (aarch64_option_init_struct): Likewise.
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_lookup_simd_builtin_type): Likewise.
+ 	(aarch64_init_simd_builtin_types): Likewise.
+ 	(aarch64_init_builtin_rsqrt): Likewise.
+ 	* config/aarch64/aarch64.cc (is_madd_op): Likewise.
+ 	* config/arm/arm-builtins.cc (arm_lookup_simd_builtin_type): Likewise.
+ 	(arm_init_simd_builtin_types): Likewise.
+ 	* config/avr/gen-avr-mmcu-texi.cc (mcus[ARRAY_SIZE): Likewise.
+ 	(c_prefix): Likewise.
+ 	(main): Likewise.
+ 	* config/c6x/c6x.cc (N_SAVE_ORDER): Likewise.
+ 	* config/darwin-c.cc (darwin_register_frameworks): Likewise.
+ 	* config/gcn/mkoffload.cc (process_obj): Likewise.
+ 	* config/i386/i386-builtins.cc (get_builtin_code_for_version): Likewise.
+ 	(fold_builtin_cpu): Likewise.
+ 	* config/m32c/m32c.cc (PUSHM_N): Likewise.
+ 	* config/nvptx/mkoffload.cc (process): Likewise.
+ 	* config/rs6000/driver-rs6000.cc (host_detect_local_cpu): Likewise.
+ 	* config/s390/s390.cc (NR_C_MODES): Likewise.
+ 	* config/tilepro/gen-mul-tables.cc (find_sequences): Likewise.
+ 	(create_insn_code_compression_table): Likewise.
+ 	* config/vms/vms.cc (NBR_CRTL_NAMES): Likewise.
+ 	* diagnostic-format-json.cc (json_from_expanded_location): Likewise.
+ 	* dwarf2out.cc (ARRAY_SIZE): Likewise.
+ 	* genhooks.cc (emit_documentation): Likewise.
+ 	(emit_init_macros): Likewise.
+ 	* gimple-ssa-sprintf.cc (format_floating): Likewise.
+ 	* gimple-ssa-warn-access.cc (memmodel_name): Likewise.
+ 	* godump.cc (keyword_hash_init): Likewise.
+ 	* hash-table.cc (hash_table_higher_prime_index): Likewise.
+ 	* input.cc (for_each_line_table_case): Likewise.
+ 	* ipa-free-lang-data.cc (free_lang_data): Likewise.
+ 	* ipa-inline.cc (sanitize_attrs_match_for_inline_p): Likewise.
+ 	* optc-save-gen.awk: Likewise.
+ 	* spellcheck.cc (test_metric_conditions): Likewise.
+ 	* tree-vect-slp-patterns.cc (sizeof): Likewise.
+ 	(ARRAY_SIZE): Likewise.
+ 	* tree.cc (build_common_tree_nodes): Likewise.
+ 
+ 2022-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* opts-global.cc (write_langs): Allocate at least one byte.
+ 
+ 2022-05-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd (A cmp B ? A : B -> min/max): New patterns
+ 	carried over from fold_cond_expr_with_comparison.
+ 
+ 2022-05-16  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105587
+ 	* config/i386/i386-expand.cc
+ 	(expand_vec_perm_pslldq_psrldq_por): Fail when (d->perm[i] ==
+ 	d->perm[i-1] + 1) && d->perm[i] == nelt && start != -1.
+ 
+ 2022-05-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md: Remove constraints when used with
+ 	const_int_operand, const0_operand, const_1_operand, constm1_operand,
+ 	const8_operand, const128_operand, const248_operand, const123_operand,
+ 	const2367_operand, const1248_operand, const359_operand,
+ 	const_4_or_8_to_11_operand, const48_operand, const_0_to_1_operand,
+ 	const_0_to_3_operand, const_0_to_4_operand, const_0_to_5_operand,
+ 	const_0_to_7_operand, const_0_to_15_operand, const_0_to_31_operand,
+ 	const_0_to_63_operand, const_0_to_127_operand, const_0_to_255_operand,
+ 	const_0_to_255_mul_8_operand, const_1_to_31_operand,
+ 	const_1_to_63_operand, const_2_to_3_operand, const_4_to_5_operand,
+ 	const_4_to_7_operand, const_6_to_7_operand, const_8_to_9_operand,
+ 	const_8_to_11_operand, const_8_to_15_operand, const_10_to_11_operand,
+ 	const_12_to_13_operand, const_12_to_15_operand, const_14_to_15_operand,
+ 	const_16_to_19_operand, const_16_to_31_operand, const_20_to_23_operand,
+ 	const_24_to_27_operand and const_28_to_31_operand.
+ 	* config/i386/mmx.md: Ditto.
+ 	* config/i386/sse.md: Ditto.
+ 	* config/i386/subst.md: Ditto.
+ 	* config/i386/sync.md: Ditto.
+ 
+ 2022-05-13  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/sse.md (vec_cmpeqv2div2di): Enable for TARGET_SSE2.
+ 	For !TARGET_SSE4_1, expand as a V4SI vector comparison, followed
+ 	by a pshufd and pand.
+ 	(vec_cmpeqv1tiv1ti): New define_expand implementing V1TImode
+ 	vector equality as a V2DImode vector comparison (see above),
+ 	followed by a pshufd and pand.
+ 
+ 2022-05-13  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/83907
+ 	* tree-ssa-strlen.cc (handle_builtin_memset): Record a strinfo
+ 	for memset with an constant char value.
+ 	(handle_store): Improved handling of stores with a first byte
+ 	of zero, but not storing_all_zeros_p.
+ 
+ 2022-05-13  Philipp Tomsich  <philipp.tomsich@vrull.eu>
+ 	    Manolis Tsamis  <manolis.tsamis@vrull.eu>
+ 
+ 	* config/riscv/riscv.h (CLZ_DEFINED_VALUE_AT_ZERO): Implement.
+ 	(CTZ_DEFINED_VALUE_AT_ZERO): Same.
+ 	* doc/sourcebuild.texi: add documentation for RISC-V specific
+ 	test target keywords
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/105597
+ 	* range-op.cc (operator_minus::lhs_op1_relation): Use op1 instead
+ 	of the lhs and make sure it is not undefined.
+ 
+ 2022-05-13  Sebastian Pop  <spop@amazon.com>
+ 
+ 	PR target/105162
+ 	* config/aarch64/aarch64-protos.h (atomic_ool_names): Increase dimension
+ 	of str array.
+ 	* config/aarch64/aarch64.cc (aarch64_atomic_ool_func): Call
+ 	memmodel_from_int and handle MEMMODEL_SYNC_*.
+ 	(DEF0): Add __aarch64_*_sync functions.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fold_using_range::range_of_phi): Use new VREL_*
+ 	enumerated values.
+ 	* gimple-range-path.cc (maybe_register_phi_relation): Ditto.
+ 	* range-op.cc (*::lhs_op1_relation): Return relation_kind, and use
+ 	new VREL enumerated values.
+ 	(*::lhs_op2_relation): Ditto.
+ 	(*::op1_op2_relation): Ditto.
+ 	(*::fold_range): Use new VREL enumerated values.
+ 	(minus_op1_op2_relation_effect): Ditto.
+ 	(range_relational_tests): Ditto.
+ 	* range-op.h (fold_range, op1_range, op2_range): Use VREL_VARYING.
+ 	(lhs_op1_relation, lhs_op2_relation, op1_op2_relation): Return
+ 	relation_kind.
+ 	(*_op1_op2_relation): Return relation_kind.
+ 	(relop_early_resolve): Use VREL_UNDEFINED.
+ 	* value-query.cc (range_query::query_relation): Use VREL_VARYING.
+ 	* value-relation.cc (VREL_LAST): Change enumerated value.
+ 	(vrel_range_assert): Delete.
+ 	(print_relation): Remove range assert.
+ 	(rr_negate_table): Adjust table to use new enumerated values..
+ 	(relation_negate): Remove range assert.
+ 	(rr_swap_table): Adjust.
+ 	(relation_swap): Remove range assert.
+ 	(rr_intersect_table): Adjust.
+ 	(relation_intersect): Remove range assert.
+ 	(rr_union_table): Adjust.
+ 	(relation_union): Remove range assert.
+ 	(rr_transitive_table): Adjust.
+ 	(relation_transitive): Remove range assert.
+ 	(equiv_oracle::query_relation): Use new VREL enumerated values.
+ 	(equiv_oracle::register_relation): Ditto.
+ 	(relation_oracle::register_stmt): Ditto.
+ 	(dom_oracle::set_one_relation): Ditto.
+ 	(dom_oracle::register_transitives): Ditto.
+ 	(dom_oracle::query_relation): Ditto.
+ 	(path_oracle::register_relation): Ditto.
+ 	(path_oracle::query_relation): Ditto.
+ 	* value-relation.h (enum relation_kind_t): New relation_kind.
+ 	(*_op1_op2_relation): Adjust prototypes.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-edge.cc (calc_switch_ranges): Check union return value.
+ 	* value-range.cc (irange::legacy_verbose_union_): Add return value.
+ 	(irange::irange_single_pair_union): New.
+ 	(irange::irange_union): Add return value.
+ 	* value-range.h (class irange): Adjust prototypes.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-range.cc (irange::legacy_verbose_intersect): Add return value.
+ 	(irange::irange_contains_p): New.
+ 	(irange::irange_intersect): Add return value.
+ 	* value-range.h (class irange): Adjust prototypes.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::get_global_range): Return the
+ 	had_global value instead.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/104547
+ 	* gimple-range-fold.cc (fold_using_range::range_of_range_op): Add
+ 	the op1/op2 relation to the relation call.
+ 	* range-op.cc (*::lhs_op1_relation): Add param.
+ 	(*::lhs_op2_relation): Ditto.
+ 	(operator_minus::lhs_op1_relation): New.
+ 	(range_relational_tests): Add relation param.
+ 	* range-op.h (lhs_op1_relation, lhs_op2_relation): Adjust prototype.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range.cc (gimple_ranger::register_side_effects): First check
+ 	if the DEF should be exported as a global.
+ 	* tree-vrp.cc (rvrp_folder::pre_fold_bb): Process PHI side effects,
+ 	which will export globals.
+ 	(execute_ranger_vrp): Remove call to export_global_ranges.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-relation.cc (path_oracle::reset_path): Clear killing_defs.
+ 
+ 2022-05-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-cache.cc (ranger_cache::ranger_cache): Start with
+ 	worlist truncated.
+ 	(ranger_cache::entry_range): Add rfd_mode parameter.
+ 	(ranger_cache::exit_range): Ditto.
+ 	(ranger_cache::edge_range): New.  Incorporate from range_on_edge.
+ 	(ranger_cache::range_of_expr): Adjust call to entry_range.
+ 	(ranger_cache::range_on_edge): Split to edge_range and call.
+ 	(ranger_cache::fill_block_cache): Always invoke range_from_dom.
+ 	(ranger_cache::range_from_dom): Make reentrant, add search mode, handle
+ 	mutiple predecessors.
+ 	(ranger_cache::update_to_nonnull): Adjust call to exit_range.
+ 	* gimple-range-cache.h (ranger_cache): Add enum rfd_mode.  Adjust
+ 	prototypes.
+ 
+ 2022-05-13  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gimple-harden-conditionals.cc: Include sbitmap.h.
+ 	(pass_harden_conditional_branches::execute): Skip new blocks.
+ 	(pass_harden_compares::execute): Likewise.
+ 
+ 2022-05-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/105463
+ 	* config/arm/mve.md (*movmisalign<mode>_mve_store): Use
+ 	mve_memory_operand.
+ 	(*movmisalign<mode>_mve_load): Likewise.
+ 	* config/arm/vec-common.md (movmisalign<mode>): Convert to generator
+ 	form...
+ 	(@movmisalign<mode>): ... thus.  Use generic predicates and then
+ 	rework operands if they are not valid.  For MVE rework to a
+ 	narrower element size if the alignment is not high enough.
+ 
+ 2022-05-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm.cc (mve_vector_mem_operand): Allow SP_REGNUM
+ 	when there is no write-back.  Fix use when strict is true.
+ 
+ 2022-05-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.h (TARGET_HAS_NO_HW_DIVIDE): New macro
+ 	definition.
+ 
+ 2022-05-13  Takayuki 'January June' Suwa  <jjsuwa_sys3175@yahoo.co.jp>
+ 
+ 	* config/xtensa/xtensa.md (extvsi, extvsi_internal, extzvsi,
+ 	extzvsi_internal): Rename from extv, extv_internal, extzv and
+ 	extzv_internal, respectively.
+ 
+ 2022-05-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* tree-sra.cc (sra_modify_assign): Check that scalar storage order
+ 	is the same on the LHS and RHS before rewriting one with the model
+ 	of the other.
+ 
+ 2022-05-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-fold.cc (gimple_build): Adjust for new
+ 	main API.
+ 	* gimple-fold.h (gimple_build): New main APIs with
+ 	iterator, insert direction and iterator update.
+ 	(gimple_build): New forwarder template.
+ 	(clear_padding_type_may_have_padding_p): Remove.
+ 	(clear_type_padding_in_mask): Likewise.
+ 	(arith_overflowed_p): Likewise.
+ 	* fold-const.h (clear_padding_type_may_have_padding_p): Declare.
+ 	(clear_type_padding_in_mask): Likewise.
+ 	(arith_overflowed_p): Likewise.
+ 	* tree-vect-generic.cc (gimplify_build3): Use main gimple_build API.
+ 	(gimplify_build2): Likewise.
+ 	(gimplify_build1): Likewise.
+ 	* ubsan.cc (ubsan_expand_ptr_ifn): Likewise, avoid extra
+ 	compare stmt.
+ 	* gengtype.cc (open_base_files): Re-order includes.
+ 	* builtins.cc: Re-order gimple-fold.h include.
+ 	* calls.cc: Likewise.
+ 	* cgraphbuild.cc: Likewise.
+ 	* cgraphunit.cc: Likewise.
+ 	* config/rs6000/rs6000-builtin.cc: Likewise.
+ 	* config/rs6000/rs6000-call.cc: Likewise.
+ 	* config/rs6000/rs6000.cc: Likewise.
+ 	* config/s390/s390.cc: Likewise.
+ 	* expr.cc: Likewise.
+ 	* fold-const.cc: Likewise.
+ 	* function-tests.cc: Likewise.
+ 	* gimple-match-head.cc: Likewise.
+ 	* gimple-range-fold.cc: Likewise.
+ 	* gimple-ssa-evrp-analyze.cc: Likewise.
+ 	* gimple-ssa-evrp.cc: Likewise.
+ 	* gimple-ssa-sprintf.cc: Likewise.
+ 	* gimple-ssa-warn-access.cc: Likewise.
+ 	* gimplify.cc: Likewise.
+ 	* graphite-isl-ast-to-gimple.cc: Likewise.
+ 	* ipa-cp.cc: Likewise.
+ 	* ipa-devirt.cc: Likewise.
+ 	* ipa-prop.cc: Likewise.
+ 	* omp-low.cc: Likewise.
+ 	* pointer-query.cc: Likewise.
+ 	* range-op.cc: Likewise.
+ 	* tree-cfg.cc: Likewise.
+ 	* tree-if-conv.cc: Likewise.
+ 	* tree-inline.cc: Likewise.
+ 	* tree-object-size.cc: Likewise.
+ 	* tree-ssa-ccp.cc: Likewise.
+ 	* tree-ssa-dom.cc: Likewise.
+ 	* tree-ssa-forwprop.cc: Likewise.
+ 	* tree-ssa-ifcombine.cc: Likewise.
+ 	* tree-ssa-loop-ivcanon.cc: Likewise.
+ 	* tree-ssa-math-opts.cc: Likewise.
+ 	* tree-ssa-pre.cc: Likewise.
+ 	* tree-ssa-propagate.cc: Likewise.
+ 	* tree-ssa-reassoc.cc: Likewise.
+ 	* tree-ssa-sccvn.cc: Likewise.
+ 	* tree-ssa-strlen.cc: Likewise.
+ 	* tree-ssa.cc: Likewise.
+ 	* value-pointer-equiv.cc: Likewise.
+ 	* vr-values.cc: Likewise.
+ 
+ 2022-05-13  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR rtl-optimization/105455
+ 	* gimple-harden-conditionals.cc (insert_check_and_trap): Set
+ 	probabilities for newly-conditional edges.
+ 
+ 2022-05-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/102583
+ 	* tree-ssa-forwprop.cc (simplify_bitfield_ref): Extended to a
+ 	contiguous stride in the VEC_PERM_EXPR.
+ 
+ 2022-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/105577
+ 	* dse.cc (rest_of_handle_dse): Make sure to purge dead EH
+ 	edges before running fast DCE via df_analyze.
+ 
+ 2022-05-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105562
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup_3): Disambiguate
+ 	against all CLOBBER defs if there's not an obvious must-alias
+ 	and we are not doing redundant store elimination.
+ 	(vn_walk_cb_data::redundant_store_removal_p): New field.
+ 	(vn_reference_lookup_pieces): Initialize it.
+ 	(vn_reference_lookup): Add argument to specify if we are
+ 	doing redundant store removal.
+ 	(eliminate_dom_walker::eliminate_stmt): Specify we do.
+ 	* tree-ssa-sccvn.h (vn_reference_lookup): Adjust.
+ 
+ 2022-05-12  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/104371
+ 	* config/i386/sse.md (vi1avx2const): New define_mode_attr.
+ 	(pxor/pcmpeqb/pmovmskb/cmp 0xffff to ptest splitter):
+ 	New define_split pattern.
+ 
+ 2022-05-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimplify.cc (gimplify_omp_depend): Don't build_fold_addr_expr
+ 	if null_pointer_node.
+ 	(gimplify_scan_omp_clauses): Likewise.
+ 	* tree-pretty-print.cc (dump_omp_clause): Print null_pointer_node
+ 	as omp_all_memory.
+ 
+ 2022-05-11  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* tree.h (TREE_VEC_BEGIN): Define.
+ 	(TREE_VEC_END): Correct 'length' member access.
+ 	(class tree_vec_range): Define.
+ 
+ 2022-05-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md: Use wa instead of <Fv>.
+ 
+ 2022-05-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.md: Use d instead of <Ff>.
+ 
+ 2022-05-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/constraints.md (register_constraint "f"): Use
+ 	RS6000_CONSTRAINT_d.
+ 	* config/rs6000/rs6000.cc (rs6000_debug_reg_global): Do not handle
+ 	RS6000_CONSTRAINT_f.
+ 	(rs6000_init_hard_regno_mode_ok): Ditto.  Reorder and simplify a bit.
+ 	* config/rs6000/rs6000.h (r6000_reg_class_enum): Delete
+ 	RS6000_CONSTRAINT_d.
+ 
+ 2022-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-fold.h (gimple_build): Use variadic template
+ 	functions for the gimple_build API forwarders without
+ 	location_t argument.
+ 
+ 2022-05-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* asan.cc (initialize_sanitizer_builtins): Register
+ 	__builtin_dynamic_object_size if necessary.
+ 
+ 2022-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/105559
+ 	* cfgrtl.cc (delete_insn_and_edges): Only perform search to BB_END
+ 	for non-debug insns.
+ 
+ 2022-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	* generic-match-head.cc: Include tree-eh.h.
+ 	* match.pd ((cond ...) cmp X): New simplification inspired
+ 	by fold_binary_op_with_conditional_arg.
+ 	(eq/ne (cmp ...) true/false): Likewise.
+ 
+ 2022-05-11  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* doc/install.texi: Don't document '--with-hsa-runtime',
+ 	'--with-hsa-runtime-include', '--with-hsa-runtime-lib'.
+ 
+ 2022-05-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR other/105527
+ 	* doc/install.texi: Document the configure option --with-zstd.
+ 
+ 2022-05-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/i386/cpuinfo.h (has_cpu_feature): Directly
+ 	compute index in cpu_features2.
+ 	(set_cpu_feature): Likewise.
+ 	* config/i386/i386-builtins.cc (fold_builtin_cpu): Also remove
+ 	loop for cpu_features2 and use NOP_EXPRs.
+ 
+ 2022-05-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR bootstrap/105551
+ 	* opts.cc (finish_options): Also disable var-tracking if
+ 	!DWARF2_DEBUGGING_INFO.
+ 
+ 2022-05-11  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104915
+ 	* config/i386/sse.md (*vec_set<mode>_0_zero_extendhi): New
+ 	pre_reload define_insn_and_split.
+ 	(*vec_setv2di_0_zero_extendhi_1): Ditto.
+ 	(*vec_set<mode>_0_zero_extendsi): Ditto.
+ 	(*vec_setv2di_0_zero_extendsi_1): Ditto.
+ 	(ssewvecmode): New mode attr.
+ 	(ssewvecmodelower): Ditto.
+ 	(ssepackmodelower): Ditto.
+ 
+ 2022-05-11  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/constraints.md (register constraint v): Use
+ 	rs6000_constraints[RS6000_CONSTRAINT_v] instead of ALTIVEC_REGS.
+ 
+ 2022-05-11  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/105355
+ 	* config/riscv/riscv.opt: Remove Separate from
+ 	-msmall-data-limit=.
+ 	* optc-gen.awk: Report error for the described situation.
+ 	* gcc.cc: Use Separate syntax.
+ 	* opts.cc (gen_command_line_string): Change option name.
+ 
+ 2022-05-11  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	PR target/105414
+ 	* match.pd (minmax): Skip constant folding for fmin/fmax when both
+ 	arguments are sNaN or one is sNaN and another is NaN.
+ 
+ 2022-05-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105528
+ 	* gimple-isel.cc (gimple_expand_vec_set_expr): After gsi_remove
+ 	set *gsi to gsi_for_stmt (ass_stmt).  Fix up function comment.
+ 
+ 2022-05-10  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* doc/md.texi (Defining Mode Iterators): Correct example replacement
+ 	text.
+ 
+ 2022-05-10  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md (UNSPEC_FMIN, UNSPEC_FMAX): New
+ 	constants.
+ 	(fmin<mode>3, fmax<mode>3): New insns.
+ 
+ 2022-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-if-conv.cc (fold_build_cond_expr): Use
+ 	match-and-simplify to simplify the condition.
+ 	(ifcvt_follow_ssa_use_edges): Remove.
+ 	(predicate_scalar_phi): Use follow_all_ssa_edges.
+ 
+ 2022-05-10  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100400
+ 	* omp-oacc-kernels-decompose.cc
+ 	(visit_loops_in_gang_single_region) <GIMPLE_OMP_FOR>: Explicitly
+ 	call 'internal_error'.
+ 
+ 2022-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105537
+ 	* toplev.cc (process_options): Move flag_var_tracking
+ 	handling ...
+ 	* opts.cc (finish_options): ... here.
+ 
+ 2022-05-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* basic-block.h (struct basic_block_d): Use void *
+ 	instead PTR.
+ 	* cfgloop.h: Likewise.
+ 	* cgraph.h: Likewise.
+ 	* gengtype-state.cc (state_ident_by_name): Likewise.
+ 	(record_type): Likewise.
+ 	(read_state_already_seen_type): Likewise.
+ 	* gengtype.cc (dump_type): Likewise.
+ 	(input_file_by_name): Likewise.
+ 	(main): Likewise.
+ 	* ggc-common.cc (ggc_cleared_alloc_ptr_array_two_args): Likewise.
+ 	* ipa-utils.h (struct ipa_dfs_info): Likewise.
+ 	* plugin.cc (htab_hash_plugin): Likewise.
+ 
+ 2022-05-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	* flags.h (dwarf_debuginfo_p): Add opts argument, guard
+ 	API with !GENERATOR_FILE.
+ 	* opts.cc (global_options): Poison.
+ 	(global_options_set): Likewise.
+ 	(finish_options): Refer to options via opts.
+ 
+ 2022-05-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 	    Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386.md (*testqi_1_maybe_si): Prefer shorter SImode
+ 	alternative when optimizing for size and the immediate operand is
+ 	const_0_to_127_operand.
+ 	(*andqi_2_maybe_si): Likewise.
+ 	* config/i386/predicates.md (const_0_to_127_operand): New predicate.
+ 
+ 2022-05-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* tree-chrec.cc (chrec_apply): Attempt to fold the linear chrec
+ 	"{a, +, a} (x-1)" as "a*x", as the number of loop iterations, x-1,
+ 	can't be negative.
+ 
+ 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/105292
+ 	* config/sparc/sparc.cc (sparc_vectorize_vec_perm_const): Return
+ 	true only for 8-byte vector modes.
+ 
+ 2022-05-10  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* ubsan.cc (ubsan_expand_objsize_ifn): Allow non-constant SIZE.
+ 	(instrument_object_size): Get dynamic object size expression.
+ 
+ 2022-05-10  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR preprocessor/101168
+ 	* config/rs6000/rs6000-c.cc (rs6000_macro_to_expand):
+ 	Avoid empty identifier.
+ 
+ 2022-05-09  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR target/101891
+ 	* config/i386/i386.cc (zero_call_used_regno_mode): use V2SImode
+ 	as a generic MMX mode instead of V4HImode.
+ 	(zero_all_mm_registers): Use SET to zero instead of MOV for
+ 	zeroing scratch registers.
+ 	(ix86_zero_call_used_regs): Likewise.
+ 
+ 2022-05-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105354
+ 	* config/i386/i386-expand.cc
+ 	(expand_vec_perm_pslldq_psrldq_por): New function.
+ 	(ix86_expand_vec_perm_const_1): Try
+ 	expand_vec_perm_pslldq_psrldq_por for both 3-instruction and
+ 	4/5-instruction sequence.
+ 
+ 2022-05-09  Martin Liška  <mliska@suse.cz>
+ 
+ 	* basic-block.h (STATIC_ASSERT): Use normal STATIC_ASSERT.
+ 	* system.h (STATIC_ASSERT): Define as static_assert for C++
+ 	and fallback to array index in C.
+ 
+ 2022-05-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105517
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup): Make sure the accumulated
+ 	offset can be represented in the POINTER_PLUS_EXPR IL.
+ 	(vn_reference_insert): Likewise.
+ 	* poly-int.h (sext_hwi): Add poly version of sext_hwi.
+ 
+ 2022-05-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* match.pd: Remove #if GIMPLE guards around ! using patterns.
+ 
+ 2022-05-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105072
+ 	* config/i386/sse.md (*sse4_1_<code>v2qiv2di2<mask_name>_1):
+ 	New define_insn.
+ 	(*sse4_1_zero_extendv2qiv2di2_2): New pre_reload
+ 	define_insn_and_split.
+ 
+ 2022-05-09  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* cgraph.cc (cgraph_node::get_create): Don't dump if the current
+ 	symtab state is PARSING.
+ 
+ 2022-05-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* system.h (LIKELY): Define.
+ 	(UNLIKELY): Likewise.
+ 	* domwalk.cc (sort_bbs_postorder): Use {,UN}LIKELY
+ 	macros.
+ 	* dse.cc (set_position_unneeded): Likewise.
+ 	(set_all_positions_unneeded): Likewise.
+ 	(any_positions_needed_p): Likewise.
+ 	(all_positions_needed_p): Likewise.
+ 	* expmed.cc (flip_storage_order): Likewise.
+ 	* genmatch.cc (dt_simplify::gen_1): Likewise.
+ 	* ggc-common.cc (gt_pch_save): Likewise.
+ 	* print-rtl.cc: Likewise.
+ 	* rtl-iter.h (T>::array_type::~array_type): Likewise.
+ 	(T>::next): Likewise.
+ 	* rtl-ssa/internals.inl: Likewise.
+ 	* rtl-ssa/member-fns.inl: Likewise.
+ 	* rtlanal.cc (T>::add_subrtxes_to_queue): Likewise.
+ 	(rtx_properties::try_to_add_dest): Likewise.
+ 	* rtlanal.h (growing_rtx_properties::repeat): Likewise.
+ 	(vec_rtx_properties_base::~vec_rtx_properties_base): Likewise.
+ 	* simplify-rtx.cc (simplify_replace_fn_rtx): Likewise.
+ 	* sort.cc (likely): Likewise.
+ 	(mergesort): Likewise.
+ 	* wide-int.h (wi::eq_p): Likewise.
+ 	(wi::ltu_p): Likewise.
+ 	(wi::cmpu): Likewise.
+ 	(wi::bit_and): Likewise.
+ 	(wi::bit_and_not): Likewise.
+ 	(wi::bit_or): Likewise.
+ 	(wi::bit_or_not): Likewise.
+ 	(wi::bit_xor): Likewise.
+ 	(wi::add): Likewise.
+ 	(wi::sub): Likewise.
+ 
+ 2022-05-09  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/arch-canonicalize: Handle g correctly.
+ 
+ 2022-05-07  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/101833
+ 	PR c++/47634
+ 	* tree-core.h (struct attribute_spec): Update comment for HANDLER.
+ 
+ 2022-05-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	* diagnostic-color.cc: Add fnname and targs color entries.
+ 	* doc/invoke.texi: Document them.
+ 
+ 2022-05-06  Jason Merrill  <jason@redhat.com>
+ 
+ 	* vec.h (vec::iterate): Fix comment.
+ 
+ 2022-05-06   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/102059
+ 	* config/rs6000/rs6000.cc (rs6000_can_inline_p): Ignore -mpower8-fusion
+ 	and -mpower10-fusion options for inlining purposes.
+ 
+ 2022-05-06  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/aarch64/iterators.md (GPF_TF_F16): Delete.
+ 
+ 2022-05-06  Marcel Vollweiler  <marcel@codesourcery.com>
+ 
+ 	* omp-low.cc (omp_runtime_api_call): Added target_is_accessible to
+ 	omp_runtime_apis array.
+ 
+ 2022-05-06  Hafiz Abid Qadeer  <abidh@codesourcery.com>
+ 
+ 	* omp-low.cc (omp_maybe_offloaded_ctx): New prototype.
+ 	(scan_sharing_clauses):  Check a restriction on allocate clause.
+ 
+ 2022-05-05  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	* gimplify.cc (gimplify_omp_for): Update messages for SCHEDULED
+ 	and ORDERED clause conflict errors.  Add check for GRAINSIZE and
+ 	NUM_TASKS on TASKLOOP.
+ 
+ 2022-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* genautomata.cc (create_composed_state): Remove dead code.
+ 	* graphite-poly.cc (print_pdrs): Likewise.
+ 	* lto-wrapper.cc (run_gcc): Likewise.
+ 	* tree-switch-conversion.cc (switch_decision_tree::balance_case_nodes):
+ 	Likewise.
+ 
+ 2022-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* tree-profile.cc (gimple_gen_ic_profiler): Prefix names with
+ 	PROF_*.
+ 	(gimple_gen_time_profiler): Likewise.
+ 
+ 2022-05-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* value-prof.cc (stream_out_histogram_value): Remove sanity
+ 	checking.
+ 
+ 2022-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104162
+ 	* tree-ssa-sccvn.cc (vn_reference_lookup): Handle
+ 	&MEM[_1 + 5].a[i] like a POINTER_PLUS_EXPR if the offset
+ 	becomes invariant.
+ 	(vn_reference_insert): Likewise.
+ 
+ 2022-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-core.h (tree_real_cst::real_cst_ptr): Remove pointer
+ 	to real_value field.
+ 	(tree_real_cst::value): Add real_value field.
+ 	* tree.h (TREE_REAL_CST_PTR): Adjust.
+ 	* tree.cc (build_real): Remove separate allocation.
+ 	* tree-streamer-in.cc (unpack_ts_real_cst_value_fields):
+ 	Likewise.
+ 
+ 2022-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-ifcombine.cc (bb_no_side_effects_p): Avoid executing
+ 	divisions with undefined overflow unconditionally.
+ 	(pass_tree_ifcombine::execute): Rewrite stmts with undefined
+ 	overflow to defined.
+ 
+ 2022-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105484
+ 	* gimple-isel.cc (gimple_expand_vec_set_expr): Clean EH, return
+ 	whether the CFG changed.
+ 	(gimple_expand_vec_exprs): When the CFG changed, clean it up.
+ 
+ 2022-05-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104595
+ 	* tree-vect-patterns.cc (vect_recog_bool_pattern): For
+ 	COND_EXPR do not fail if check_bool_pattern returns false.
+ 
+ 2022-05-04  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* omp-low.cc (lower_omp_target): Fix use_device_{addr,ptr} with list
+ 	item that is in an outer data-sharing clause.
+ 
+ 2022-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104658
+ 	* tree-vect-slp.cc (vect_slp_convert_to_external): Do not
+ 	create VECTOR_BOOLEAN_TYPE_P extern defs.  Reset the vector
+ 	type on nodes we promote.
+ 	(vectorizable_bb_reduc_epilogue): Deal with externalized
+ 	root.
+ 	* tree-vect-stmts.cc (vect_maybe_update_slp_op_vectype): Do
+ 	not allow VECTOR_BOOLEAN_TYPE_P extern defs.
+ 
+ 2022-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103116
+ 	* tree-vect-stmts.cc (get_group_load_store_type): Handle the
+ 	case we need peeling for gaps even though GROUP_GAP is zero.
+ 
+ 2022-05-04  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gengtype-state.cc (read_a_state_token): Remove dead code.
+ 	* ipa-profile.cc (ipa_profile_read_summary_section): Likewise.
+ 
+ 2022-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimplify.cc (gimplify_init_constructor): First gimplify,
+ 	then simplify the result to a VECTOR_CST.
+ 
+ 2022-05-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* genconditions.cc (write_conditions): Append a { nullptr, -1 }
+ 	element at the end of insn_conditions.
+ 	(write_writer): Use ARRAY_SIZE (insn_conditions) - 1 instead of
+ 	ARRAY_SIZE (insn_conditions).
+ 
+ 2022-05-04  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/104662
+ 	* config/arm/arm.cc (simd_valid_immediate): Exit when input is a
+ 	vector of booleans and MVE is not enabled.
+ 
+ 2022-05-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/105158
+ 	* tree-cfgcleanup.cc (move_debug_stmts_from_forwarder):
+ 	Move debug stmts to the predecessor if moving to the
+ 	destination is not possible.
+ 	(remove_forwarder_block): Adjust.
+ 	(remove_forwarder_block_with_phi): Likewise.
+ 
+ 2022-05-03  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/102950
+ 	* range-op.cc (wi_optimize_signed_bitwise_op): New function to
+ 	determine bounds of bitwise operations on signed types.
+ 	(operator_bitwise_and::wi_fold): Call the above function.
+ 	(operator_bitwise_or::wi_fold): Likewise.
+ 	(operator_bitwise_xor::wi_fold): Likewise.  Additionally, the
+ 	result can't be zero if the operands can't be equal.
+ 
+ 2022-05-03  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.cc (darwin_label_is_anonymous_local_objc_name): Make
+ 	protocol class methods linker-visible.
+ 
+ 2022-05-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105079
+ 	* config/i386/sse.md (*vec_extract<mode>_0_mem): New pre-reload
+ 	define_insn_and_split pattern.
+ 
+ 2022-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105083
+ 	* tree-scalar-evolution.cc (scev_initialize): Verify we
+ 	have appropriate loop state.
+ 	* tree-ssa-dce.cc (perform_tree_ssa_dce): Re-order SCEV and
+ 	loop init and finalization.
+ 
+ 2022-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105461
+ 	* opts.cc (finish_options): Match the condition to
+ 	disable flag_var_tracking to that of process_options.
+ 
+ 2022-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	* opts.cc: #undef OPTIONS_SET_P.
+ 	(finish_options): Use opts_set instead of OPTIONS_SET_P.
+ 
+ 2022-05-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105394
+ 	* tree-vect-generic.cc (expand_vector_condition): Adjust
+ 	comp_width for non-integer mode masks as well.
+ 
+ 2022-05-03  Marcel Vollweiler  <marcel@codesourcery.com>
+ 
+ 	* omp-low.cc (omp_runtime_api_call): Added get_mapped_ptr to
+ 	omp_runtime_apis array.
+ 
+ 2022-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-scalar-evolution.cc (expression_expensive_p):
+ 	Never consider mismatched calls as cheap.
+ 
+ 2022-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104240
+ 	* tree-vect-slp.cc (op1_op0_map): New.
+ 	(vect_get_operand_map): Handle compares.
+ 	(vect_build_slp_tree_1): Support swapped operands for
+ 	tcc_comparison.
+ 
+ 2022-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/105415
+ 	* cfgexpand.cc (expand_debug_expr): Don't make_decl_rtl_for_debug
+ 	if there is no symtab node for the VAR_DECL.
+ 
+ 2022-05-02  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-io.cc (gcov_rewrite):  Clear the file error status.
+ 
+ 2022-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105437
+ 	* tree-vect-slp.cc (vect_schedule_slp_node): Handle the
+ 	case where last_stmt alters control flow.
+ 
+ 2022-05-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	* dojump.cc (do_jump): Use CASE_CONVERT.
+ 	* tree-ssa-dom.cc (edge_info::derive_equivalences): Likewise.
+ 
+ 2022-05-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* system.h: Include initializer_list.
+ 
+ 2022-05-01  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/constraints.md (Y constraint): Fix comment.
+ 
+ 2022-05-01  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* tree-ssanames.cc (set_range_info): Denormalize VR_VARYING to
+ 	VR_RANGE before passing a piecewise range to set_range_info_raw.
+ 
+ 2022-04-30  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	* gengtype.cc (adjust_field_tree_exp): Remove.
+ 	(adjust_field_type): Don't handle the "tree_exp" special attribute.
+ 	* tree-core.h (struct tree_exp): Remove "special" and "desc"
+ 	attributes.  Add "length" attribute.
+ 
+ 2022-04-29  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/100413
+ 	* cgraph.cc (cgraph_node::remove): Release body of the node this
+ 	is clone_of if appropriate.
+ 
+ 2022-04-29  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/51954
+ 	* config/i386/i386.md (adcl/neg -> sbb peephole): New peephole2.
+ 
+ 2022-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-expr.cc (is_gimple_condexpr): Adjust comment.
+ 	(canonicalize_cond_expr_cond): Move here from gimple.cc,
+ 	allow both COND_EXPR and GIMPLE_COND forms.
+ 	* gimple-expr.h (canonicalize_cond_expr_cond): Declare.
+ 	* gimple.cc (canonicalize_cond_expr_cond): Remove here.
+ 	* gimple.h (canonicalize_cond_expr_cond): Likewise.
+ 	* gimple-loop-versioning.cc (loop_versioning::version_loop):
+ 	Use is_gimple_condexpr_for_cond.
+ 	* tree-parloops.cc (gen_parallel_loop): Likewise.
+ 	* tree-ssa-ifcombine.cc (ifcombine_ifandif): Check for
+ 	a proper cond expr after canonicalize_cond_expr_cond.
+ 	Use is_gimple_condexpr_for_cond where appropriate.
+ 	* tree-ssa-loop-manip.cc (determine_exit_conditions): Likewise.
+ 	* tree-vect-loop-manip.cc (slpeel_add_loop_guard): Likewise.
+ 
+ 2022-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-iterator.h (gsi_after_labels): Add overload for
+ 	gimple_seq.
+ 	(gsi_start_1): Rename to gsi_start and take a reference.
+ 	(gsi_last_1): Likewise.
+ 	* gimple-iterator.cc (gsi_for_stmt): Use gsi_start.
+ 	* omp-low.cc (lower_rec_input_clauses): Likewise.
+ 	(lower_omp_scan): Likewise.
+ 
+ 2022-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105431
+ 	* tree-ssa-math-opts.cc (powi_as_mults_1): Make n unsigned.
+ 	(powi_as_mults): Use absu_hwi.
+ 	(gimple_expand_builtin_powi): Remove now pointless n != -n
+ 	check.
+ 
+ 2022-04-29  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* range-op.cc (empty_range_varying): Move to range-op.h.
+ 	(range_true): Move to range.h.
+ 	(range_false): Same.
+ 	(range_true_and_false): Same.
+ 	(enum bool_range_state): Move to range-op.h.
+ 	(relop_early_resolve): Same.
+ 	(operator_equal::op1_op2_relation): Abstract code to...
+ 	(equal_op1_op2_relation): ...here.
+ 	(operator_not_equal::op1_op2_relation): Abstract code to...
+ 	(not_equal_op1_op2_relation): ...here.
+ 	(operator_lt::op1_op2_relation): Abstract code to...
+ 	(lt_op1_op2_relation): ...here.
+ 	(operator_le::op1_op2_relation): Abstract code to...
+ 	(le_op1_op2_relation): ...here.
+ 	(operator_gt::op1_op2_relation): Abstract code to...
+ 	(gt_op1_op2_relation): ...here.
+ 	(operator_ge::op1_op2_relation): Abstract code to...
+ 	(ge_op1_op2_relation): ...here.
+ 	(class range_op_table): Move to range-op.h.
+ 	* range-op.h (equal_op1_op2_relation): Moved from range-op.cc.
+ 	(not_equal_op1_op2_relation): Same.
+ 	(lt_op1_op2_relation): Same.
+ 	(le_op1_op2_relation): Same.
+ 	(gt_op1_op2_relation): Same.
+ 	(ge_op1_op2_relation): Same.
+ 	(enum bool_range_state): Same.
+ 	(get_bool_state): Same.
+ 	(empty_range_varying): Same.
+ 	(relop_early_resolve): Same.
+ 	(class range_op_table): Same.
+ 	* range.h (range_true): Same.
+ 	(range_false): Same.
+ 	(range_true_and_false): Same.
+ 
+ 2022-04-29  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-fold.cc (size_must_be_zero_p): Use reference
+ 	instead of pointer
+ 	* gimple-ssa-evrp-analyze.cc
+ 	(evrp_range_analyzer::record_ranges_from_incoming_edge): Rename
+ 	intersect to legacy_verbose_intersect.
+ 	* ipa-cp.cc (ipcp_vr_lattice::meet_with_1): Use reference instead
+ 	of pointer.
+ 	* tree-ssa-dom.cc (dom_jt_simplifier::simplify): Use value_range
+ 	instead of value_range_equiv.
+ 	* tree-vrp.cc (extract_range_from_plus_minus_expr): Use reference
+ 	instead of pointer.
+ 	(find_case_label_range): Same.
+ 	* value-range-equiv.cc (value_range_equiv::intersect): Rename to...
+ 	(value_range_equiv::legacy_verbose_intersect): ...this.
+ 	(value_range_equiv::union_): Rename to...
+ 	(value_range_equiv::legacy_verbose_union_): ...this.
+ 	* value-range-equiv.h (class value_range_equiv): Rename union and
+ 	intersect to legacy_verbose_{intersect,union}.
+ 	* value-range.cc (irange::union_): Rename to...
+ 	(irange::legacy_verbose_union_): ...this.
+ 	(irange::intersect): Rename to...
+ 	(irange::legacy_verbose_intersect): ...this.
+ 	* value-range.h (irange::union_): Rename union_ to
+ 	legacy_verbose_union.
+ 	(irange::intersect): Rename intersect to legacy_verbose_intersect.
+ 	* vr-values.cc (vr_values::update_value_range): Same.
+ 	(vr_values::extract_range_for_var_from_comparison_expr): Same.
+ 	(vr_values::extract_range_from_cond_expr): Rename union_ to
+ 	legacy_verbose_union.
+ 	(vr_values::extract_range_from_phi_node): Same.
+ 
+ 2022-04-29  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-ssa-evrp-analyze.cc
+ 	(evrp_range_analyzer::set_ssa_range_info): Use *range_info methods
+ 	that take a range.
+ 	* gimple-ssa-sprintf.cc (try_substitute_return_value): Same.
+ 	* ipa-prop.cc (ipcp_update_vr): Same.
+ 	* tree-inline.cc (remap_ssa_name): Same.
+ 	* tree-ssa-copy.cc (fini_copy_prop): Same.
+ 	* tree-ssa-math-opts.cc (optimize_spaceship): Same.
+ 	* tree-ssa-phiopt.cc (replace_phi_edge_with_variable): Same.
+ 	* tree-ssa-pre.cc (insert_into_preds_of_block): Same.
+ 	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Same.
+ 	* tree-ssa-strlen.cc (set_strlen_range): Same.
+ 	(strlen_pass::handle_builtin_string_cmp): Same.
+ 	* tree-ssanames.cc (set_range_info): Make static.
+ 	(duplicate_ssa_name_range_info): Make static and add a new variant
+ 	calling the static.
+ 	* tree-ssanames.h (set_range_info): Remove version taking wide ints.
+ 	(duplicate_ssa_name_range_info): Remove version taking a
+ 	range_info_def and replace with a version taking SSA names.
+ 	* tree-vect-loop-manip.cc (vect_gen_vector_loop_niters): Use *range_info methods
+ 	that take a range.
+ 	(vect_do_peeling): Same.
+ 	* tree-vrp.cc (vrp_asserts::remove_range_assertions): Same.
+ 	* vr-values.cc (simplify_truth_ops_using_ranges): Same.
+ 
+ 2022-04-29  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* value-range.h (irange::irange): Use set_undefined.
+ 
+ 2022-04-29  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-cache.h (non_null_ref::adjust_range): Do not use
+ 	irange::intersect (wide_int, wide_int).
+ 	* gimple-range-fold.cc (adjust_pointer_diff_expr): Same.
+ 	(adjust_imagpart_expr): Same.
+ 	* value-range.h (irange::intersect (wide_int, wide_int)): Make
+ 	private.
+ 
+ 2022-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104322
+ 	* tree-vect-loop.cc (vectorizable_reduction): Remove dead code.
+ 
+ 2022-04-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105376
+ 	* tree.cc (build_real): Special case dconst* arguments
+ 	for decimal floating point types.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* doc/gcov.texi (Profiling and Test Coverage in Freestanding
+ 	Environments): New section.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* doc/gcov-tool.texi: Document merge-stream subcommand.
+ 	* doc/invoke.texi (fprofile-info-section): Mention merge-stream
+ 	subcommand of gcov-tool.
+ 	* gcov-tool.cc (gcov_profile_merge_stream): Declare.
+ 	(print_merge_stream_usage_message): New.
+ 	(merge_stream_usage): Likewise.
+ 	(do_merge_stream): Likewise.
+ 	(print_usage): Call print_merge_stream_usage_message().
+ 	(main): Call do_merge_stream() to execute merge-stream subcommand.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-io.cc (gcov_file_error): New enum.
+ 	(gcov_var): Use gcov_file_error enum for the error member.
+ 	(gcov_open): Use GCOV_FILE_NO_ERROR.
+ 	(gcov_close): Use GCOV_FILE_WRITE_ERROR.
+ 	(gcov_write): Likewise.
+ 	(gcov_write_unsigned): Likewise.
+ 	(gcov_write_string): Likewise.
+ 	(gcov_read_bytes): Set error code if EOF is reached.
+ 	(gcov_read_counter): Use GCOV_FILE_COUNTER_OVERFLOW.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-io.cc (GCOV_MODE_STDIN): Define.
+ 	(gcov_position): For gcov-tool, return calculated position if file is
+ 	stdin.
+ 	(gcov_open):  For gcov-tool, use stdin if filename is NULL.
+ 	(gcov_close): For gcov-tool, do not close stdin.
+ 	(gcov_read_bytes): For gcov-tool, update position if file is stdin.
+ 	(gcov_sync): For gcov-tool, discard input if file is stdin.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* doc/invoke.texi (fprofile-info-section): Mention
+ 	__gcov_filename_to_gcfn().  Use "freestanding" to match with C11
+ 	standard language.  Fix minor example code issues.
+ 	* gcov-io.h (GCOV_FILENAME_MAGIC): Define and document.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-io.cc (gcov_seek): Make it static.
+ 	* gcov-io.h (struct gcov_summary): Do not mention gcov_seek().
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-tool.cc (gcov_do_dump): Add mode parameter.
+ 	(gcov_output_files): Open files for reading and writing.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-io.cc (gcov_open): Always use the mode parameter.
+ 	* gcov-io.h (gcov_open): Declare it unconditionally.
+ 
+ 2022-04-28  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-tool.cc (gcov_profile_merge): Adjust return type.
+ 	(profile_merge): Allow merging of directories which contain no profile
+ 	files.
+ 
+ 2022-04-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/invoke.texi (-fdump-analyzer-feasibility): Mention the
+ 	fpath.txt output.
+ 
+ 2022-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Create a
+ 	temporary only if out overlaps compare_op, not when it overlaps
+ 	op0 or op1.
+ 
+ 2022-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/105399
+ 	* cgraph.cc (cgraph_node::verify_node): Don't verify
+ 	semantic_interposition flag against
+ 	opt_for_fn (decl, flag_semantic_interposition) for aliases in lto1.
+ 
+ 2022-04-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105331
+ 	* config/i386/i386.cc (ix86_gimplify_va_arg): Mark va_arg_tmp
+ 	temporary TREE_ADDRESSABLE before trying to gimplify ADDR_EXPR
+ 	of it.
+ 
+ 2022-04-28  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/install.texi (Configuration): Remove misleading text
+ 	around LE PowerPC Linux multilibs.
+ 
+ 2022-04-28  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+ 
+ 	PR d/103528
+ 	* doc/install.texi (Tools/packages necessary for building GCC)
+ 	(GDC): Document libphobos requirement.
+ 	(Host/target specific installation notes for GCC, *-*-solaris2*):
+ 	Document libphobos and GDC specifics.
+ 
+ 2022-04-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105219
+ 	* tree-vect-loop.cc (vect_transform_loop): Disable
+ 	special code narrowing the vectorized epilogue max
+ 	iterations when peeling for alignment or gaps was in effect.
+ 
+ 2022-04-28  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	* config/loongarch/loongarch.cc
+ 	(loongarch_flatten_aggregate_field): Ignore empty fields for
+ 	RECORD_TYPE.
+ 
+ 2022-04-27  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.md: Add fdiv define_expand template,
+ 	then generate floating-point division and floating-point reciprocal
+ 	instructions.
+ 
+ 2022-04-27  Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.md: Add '(clobber (mem:BLK (scratch)))'
+ 	to PLV instruction templates.
+ 
+ 2022-04-27  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104492
+ 	* gimple-ssa-warn-access.cc
+ 	(pass_waccess::warn_invalid_pointer): Exclude equality compare
+ 	diagnostics for all kind of invalidations.
+ 	(pass_waccess::check_dangling_uses): Fix post-dominator query.
+ 	(pass_waccess::check_pointer_uses): Likewise.
+ 
+ 2022-04-27  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/102024
+ 	* config/s390/s390-protos.h (s390_function_arg_vector): Remove
+ 	prototype.
+ 	* config/s390/s390.cc (s390_single_field_struct_p): New function.
+ 	(s390_function_arg_vector): Invoke s390_single_field_struct_p.
+ 	(s390_function_arg_float): Likewise.
+ 
+ 2022-04-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105396
+ 	* asan.cc (asan_redzone_buffer::emit_redzone_byte): Handle the case
+ 	where offset is bigger than off but smaller than m_prev_offset + 32
+ 	bits by pushing one or more 0 bytes.  Sink the
+ 	m_shadow_bytes.safe_push (value); flush_if_full (); statements from
+ 	all cases to the end of the function.
+ 
+ 2022-04-27  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/105271
+ 	* config/rs6000/rs6000-builtins.def (NEG_V2DI): Move to [power8-vector]
+ 	stanza.
+ 
+ 2022-04-26  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_print_lds_decl): Make "gang-private
+ 	data-share memory exhausted" error more verbose.
+ 
+ 2022-04-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR lto/105364
+ 	* lto-wrapper.cc (print_lto_docs_link): Use global_dc.
+ 	(run_gcc): Parse OPT_fdiagnostics_urls_.
+ 	(main): Initialize global_dc.
+ 
+ 2022-04-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105314
+ 	* ifcvt.cc (noce_try_store_flag_mask): Don't require that the non-zero
+ 	operand is equal to if_info->x, instead use the non-zero operand
+ 	as one of the operands of AND with if_info->x as target.
+ 
+ 2022-04-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105374
+ 	* tree-ssa-reassoc.cc (eliminate_redundant_comparison): Punt if
+ 	!fold_convertible_p rather than assuming fold_convert must succeed.
+ 
+ 2022-04-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105367
+ 	* config/i386/i386.cc (ix86_veclibabi_svml, ix86_veclibabi_acml): Pass
+ 	el_mode == DFmode ? double_type_node : float_type_node instead of
+ 	TREE_TYPE (type_in) as first arguments to mathfn_built_in.
+ 
+ 2022-04-25  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/104308
+ 	* gimple-fold.cc (gimple_fold_builtin_memory_op): Explicitly set
+ 	the location of new_stmt in all places that don't already set it,
+ 	whether explicitly, or via a call to gsi_replace.
+ 
+ 2022-04-25  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	* doc/extend.texi (Other Builtins): Correct reference to 'modff'.
+ 
+ 2022-04-25  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/105276
+ 	* gimple-range.cc (gimple_ranger::prefill_stmt_dependencies): Include
+ 	existing global range with calculated value.
+ 
+ 2022-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105368
+ 	* tree-ssa-math-opts.cc (powi_cost): Use absu_hwi.
+ 
+ 2022-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100810
+ 	* tree-ssa-loop-ivopts.cc (struct iv_cand): Add involves_undefs flag.
+ 	(find_ssa_undef): New function.
+ 	(add_candidate_1): Avoid adding derived candidates with
+ 	undefined SSA names and mark the original ones.
+ 	(determine_group_iv_cost_generic): Reject rewriting
+ 	uses with a different IV when that involves undefined SSA names.
+ 
+ 2022-04-25  Steven G. Kargl  <kargl@gcc.gnu.org>
+ 
+ 	PR target/89125
+ 	* config/freebsd.h: Define TARGET_LIBC_HAS_FUNCTION to be
+ 	bsd_libc_has_function.
+ 	* targhooks.cc (bsd_libc_has_function): New function.
+ 	Expand the supported math functions to inclue C99 libm.
+ 	* targhooks.h (bsd_libc_has_function): New Prototype.
+ 
+ 2022-04-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/105231
+ 	* combine.cc (distribute_notes): Assert that a REG_EH_REGION
+ 	with landing pad > 0 is from i3.  Put any REG_EH_REGION note
+ 	on i3 or drop it if the insn can not trap.
+ 	(try_combine): Ensure that we can merge REG_EH_REGION notes
+ 	with non-call exceptions.  Ensure we are not splitting a
+ 	trapping part of an insn with non-call exceptions when there
+ 	is any REG_EH_REGION note to preserve.
+ 
+ 2022-04-25  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/105339
+ 	* config/i386/avx512fintrin.h (_mm512_scalef_round_pd):
+ 	Add parentheses for parameters and djust format.
+ 	(_mm512_mask_scalef_round_pd): Ditto.
+ 	(_mm512_maskz_scalef_round_pd): Ditto.
+ 	(_mm512_scalef_round_ps): Ditto.
+ 	(_mm512_mask_scalef_round_ps): Ditto.
+ 	(_mm512_maskz_scalef_round_ps): Ditto.
+ 	(_mm_scalef_round_sd): Use _mm_undefined_pd.
+ 	(_mm_scalef_round_ss): Use _mm_undefined_ps.
+ 	(_mm_mask_scalef_round_sd): New macro.
+ 	(_mm_mask_scalef_round_ss): Ditto.
+ 	(_mm_maskz_scalef_round_sd): Ditto.
+ 	(_mm_maskz_scalef_round_ss): Ditto.
+ 
+ 2022-04-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105338
+ 	* config/i386/i386-expand.cc (ix86_expand_int_movcc): Handle
+ 	op0 == cst1 ? op0 : op3 like op0 == cst1 ? cst1 : op3 for the non-cmov
+ 	cases.
+ 
+ 2022-04-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/105334
+ 	* config/rs6000/rs6000.md (pack<mode> for FMOVE128): New expander.
+ 	(pack<mode> for FMOVE128): Rename and split the insn_and_split to...
+ 	(pack<mode>_hard for FMOVE128): ... this...
+ 	(pack<mode>_soft for FMOVE128): ... and this.
+ 
+ 2022-04-22  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	* doc/extend.texi: Correct "This" to "These".
+ 
+ 2022-04-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105333
+ 	* rtlanal.cc (replace_rtx): Use simplify_subreg or
+ 	simplify_unary_operation if CONST_SCALAR_INT_P rather than just
+ 	CONST_INT_P.
+ 
+ 2022-04-21  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/103197
+ 	PR target/102146
+ 	* config/rs6000/rs6000.md (zero_extendqi<mode>2 for EXTQI): Disparage
+ 	the "Z" alternatives in {l,st}{f,xs}iwzx.
+ 	(zero_extendhi<mode>2 for EXTHI): Ditto.
+ 	(zero_extendsi<mode>2 for EXTSI): Ditto.
+ 	(*movsi_internal1): Ditto.
+ 	(*mov<mode>_internal1 for QHI): Ditto.
+ 	(movsd_hardfloat): Ditto.
+ 
+ 2022-04-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Enable compressed debug sections for mold
+ 	linker.
+ 	* configure: Regenerate.
+ 
+ 2022-04-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/105203
+ 	* emit-rtl.cc (emit_copy_of_insn_after): Don't call mark_jump_label
+ 	on DEBUG_INSNs.
+ 
+ 2022-04-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104912
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Split
+ 	the cost model check to a separate BB to make sure it is
+ 	checked first and not combined with other version checks.
+ 
+ 2022-04-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105312
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Query both
+ 	VCOND and VCONDU for EQ and NE.
+ 
+ 2022-04-20  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/103818
+ 	* ipa-modref-tree.cc (modref_access_node::closer_pair_p): Use
+ 	poly_offset_int to avoid overflow.
+ 	(modref_access_node::update2): likewise.
+ 
+ 2022-04-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR ipa/105306
+ 	* cgraph.cc (cgraph_node::create): Set node->semantic_interposition
+ 	to opt_for_fn (decl, flag_semantic_interposition).
+ 	* cgraphclones.cc (cgraph_node::create_clone): Copy over
+ 	semantic_interposition flag.
+ 
+ 2022-04-19  Sergei Trofimovich  <siarheit@google.com>
+ 
+ 	PR gcov-profile/105282
+ 	* value-prof.cc (stream_out_histogram_value): Allow negative counts
+ 	on HIST_TYPE_INDIR_CALL.
+ 
+ 2022-04-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105257
+ 	* config/sparc/sparc.cc (epilogue_renumber): If ORIGINAL_REGNO,
+ 	use gen_raw_REG instead of gen_rtx_REG and copy over also
+ 	ORIGINAL_REGNO.  Use return 0; instead of /* fallthrough */.
+ 
+ 2022-04-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104010
+ 	PR tree-optimization/103941
+ 	* tree-vect-slp.cc (vect_bb_slp_scalar_cost): When
+ 	we run into stmts in patterns continue walking those
+ 	for uses outside of the vectorized region instead of
+ 	marking the lane live.
+ 
+ 2022-04-18  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* doc/install.texi <CRIS>: Remove references to removed websites and
+ 	adjust for cris-*-elf being the only remaining toolchain.
+ 
+ 2022-04-18  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* doc/invoke.texi <CRIS>: Remove references to options for removed
+ 	subtarget cris-axis-linux-gnu and tweak wording accordingly.
+ 
+ 2022-04-16  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific): Adjust mingw-w64 download link.
+ 
+ 2022-04-15  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/smmintrin.h: Correct target pragma from sse4.1
+ 	and sse4.2 to crc32 for crc32 intrinsics.
+ 
+ 2022-04-14  Indu Bhagat  <indu.bhagat@oracle.com>
+ 
+ 	PR debug/105089
+ 	* ctfc.cc (ctf_dvd_ignore_insert): New function.
+ 	(ctf_dvd_ignore_lookup): Likewise.
+ 	(ctf_add_variable): Keep track of non-defining decl DIEs.
+ 	(new_ctf_container): Initialize the new hash-table.
+ 	(ctfc_delete_container): Empty hash-table.
+ 	* ctfc.h (struct ctf_container): Add new hash-table.
+ 	(ctf_dvd_ignore_lookup): New declaration.
+ 	(ctf_add_variable): Add additional argument.
+ 	* ctfout.cc (ctf_dvd_preprocess_cb): Skip adding CTF variable
+ 	record for non-defining decl for which a defining decl exists
+ 	in the same TU.
+ 	(ctf_preprocess): Defer updating the number of global objts
+ 	until here.
+ 	(output_ctf_header): Use ctfc_vars_list_count as some CTF
+ 	variables may not make it to the final output.
+ 	(output_ctf_vars): Likewise.
+ 	* dwarf2ctf.cc (gen_ctf_variable): Skip generating CTF variable
+ 	if this is known to be a non-defining decl DIE.
+ 
+ 2022-04-14  Indu Bhagat  <indu.bhagat@oracle.com>
+ 
+ 	* ctfc.h (struct ctf_container): Introduce a new member.
+ 	* ctfout.cc (ctf_list_add_ctf_vars): Use it instead of static
+ 	variable.
+ 
+ 2022-04-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105247
+ 	* simplify-rtx.cc (simplify_const_binary_operation): For shifts
+ 	or rotates by VOIDmode constant integer shift count use word_mode
+ 	for the operand if int_mode is narrower than word.
+ 
+ 2022-04-14  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.cc (s390_get_sched_attrmask): Add z16.
+ 	(s390_get_unit_mask): Likewise.
+ 	(s390_is_fpd): Likewise.
+ 	(s390_is_fxd): Likewise.
+ 	* config/s390/s390.h (s390_tune_attr): Set max tune level to z16.
+ 	* config/s390/s390.md (z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15):
+ 	Add z16.
+ 	(z900,z990,z9_109,z9_ec,z10,z196,zEC12,z13,z14,z15,z16):
+ 	Likewise.
+ 	* config/s390/3931.md: New file.
+ 
+ 2022-04-13  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/105254
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_vector_costs::determine_suggested_unroll_factor): Take a
+ 	loop_vec_info as argument.  Restrict the unroll factor to values
+ 	that divide the VF.
+ 	(aarch64_vector_costs::finish_cost): Update call accordingly.
+ 
+ 2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105263
+ 	* tree-ssa-reassoc.cc (try_special_add_to_ops): Do not consume
+ 	negates in multiplication chains with DFP.
+ 
+ 2022-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/105253
+ 	* tree.cc (tree_builtin_call_types_compatible_p): If PROP_gimple,
+ 	use useless_type_conversion_p checks instead of TYPE_MAIN_VARIANT
+ 	comparisons or tree_nop_conversion_p checks.
+ 
+ 2022-04-13  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/103069
+ 	* config/i386/i386-expand.cc (ix86_expand_cmpxchg_loop):
+ 	Add missing set to target_val at pause label.
+ 
+ 2022-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105234
+ 	* attribs.cc (decl_attributes): Don't set
+ 	DECL_FUNCTION_SPECIFIC_TARGET if target_option_default_node is
+ 	NULL.
+ 
+ 2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105250
+ 	* fold-const.cc (fold_convertible_p): Revert
+ 	r12-7979-geaaf77dd85c333, instead check for size equality
+ 	of the vector types involved.
+ 
+ 2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	Revert:
+ 	2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104912
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Split
+ 	the cost model check to a separate BB to make sure it is
+ 	checked first and not combined with other version checks.
+ 
+ 2022-04-13  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104912
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Split
+ 	the cost model check to a separate BB to make sure it is
+ 	checked first and not combined with other version checks.
+ 
+ 2022-04-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-scalar-evolution.cc (expression_expensive_p): Fix a comment typo.
+ 
+ 2022-04-12  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	PR jit/104072
+ 	* reginfo.cc: New functions (clear_global_regs_cache,
+ 	reginfo_cc_finalize) to avoid an issue where compiling the same
+ 	code multiple times gives an error about assigning the same
+ 	register to 2 global variables.
+ 	* rtl.h: New function (reginfo_cc_finalize).
+ 	* toplev.cc: Call it.
+ 
+ 2022-04-12  Antoni Boucher  <bouanto@zoho.com>
+ 
+ 	PR jit/104071
+ 	* toplev.cc: Call the new function tree_cc_finalize in
+ 	toplev::finalize.
+ 	* tree.cc: New functions (clear_nonstandard_integer_type_cache
+ 	and tree_cc_finalize) to clear the cache of non-standard integer
+ 	types to avoid having issues with some optimizations of
+ 	bitcast where the SSA_NAME will have a size of a cached
+ 	integer type that should have been invalidated, causing a
+ 	comparison of integer constant to fail.
+ 	* tree.h: New function (tree_cc_finalize).
+ 
+ 2022-04-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR target/97348
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Don't set.
+ 	* config/nvptx/nvptx.opt (misa): Adjust comment.
+ 
+ 2022-04-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Revert:
+ 	2022-03-03  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Add %{misa=sm_30:--no-verify}.
+ 
+ 2022-04-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	Revert:
+ 	2022-03-31  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Use "-m sm_35" for -misa=sm_30.
+ 
+ 2022-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/104303
+ 	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Do not
+ 	include local escaped memory as obviously necessary stores.
+ 
+ 2022-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105235
+ 	* tree-ssa-math-opts.cc (execute_cse_conv_1): Clean EH and
+ 	return whether the CFG changed.
+ 	(execute_cse_sincos_1): Adjust.
+ 
+ 2022-04-12  Przemyslaw Wirkus  <Przemyslaw.Wirkus@arm.com>
+ 
+ 	PR target/104144
+ 	* config/arm/t-aprofile (MULTI_ARCH_OPTS_A): Remove Armv9-a options.
+ 	(MULTI_ARCH_DIRS_A): Remove Armv9-a diretories.
+ 	(MULTILIB_REQUIRED): Don't require Armv9-a libraries.
+ 	(MULTILIB_MATCHES): Treat Armv9-a as equivalent to Armv8-a.
+ 	(MULTILIB_REUSE): Remove remap rules for Armv9-a.
+ 	* config/arm/t-multilib (v9_a_nosimd_variants): Delete.
+ 	(MULTILIB_MATCHES): Remove mappings for v9_a_nosimd_variants.
+ 
+ 2022-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105232
+ 	* tree.cc (component_ref_size): Bail out for too large
+ 	or non-constant sizes.
+ 
+ 2022-04-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105226
+ 	* tree-vect-loop-manip.cc (vect_loop_versioning): Verify
+ 	we can split the exit of an outer loop we choose to version.
+ 
+ 2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/i386-expand.cc (ix86_emit_i387_sinh, ix86_emit_i387_cosh,
+ 	ix86_emit_i387_tanh, ix86_emit_i387_asinh, ix86_emit_i387_acosh,
+ 	ix86_emit_i387_atanh, ix86_emit_i387_log1p, ix86_emit_i387_round,
+ 	ix86_emit_swdivsf, ix86_emit_swsqrtsf,
+ 	ix86_expand_atomic_fetch_op_loop, ix86_expand_cmpxchg_loop):
+ 	Formatting fix.
+ 	* config/i386/i386.cc (warn_once_call_ms2sysv_xlogues): Likewise.
+ 
+ 2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105214
+ 	* config/i386/i386-expand.cc (ix86_emit_i387_log1p): Call
+ 	do_pending_stack_adjust.
+ 
+ 2022-04-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/105211
+ 	* builtins.cc (expand_builtin_int_roundingfn_2): If mathfn_built_in_1
+ 	fails for TREE_TYPE (arg), retry it with
+ 	TREE_VALUE (TYPE_ARG_TYPES (TREE_TYPE (fndecl))) and if even that
+ 	fails, emit call normally.
+ 
+ 2022-04-12  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	* common/config/s390/s390-common.cc: Rename PF_ARCH14 to PF_Z16.
+ 	* config.gcc: Add z16 as march/mtune switch.
+ 	* config/s390/driver-native.cc (s390_host_detect_local_cpu):
+ 	Recognize z16 with -march=native.
+ 	* config/s390/s390-opts.h (enum processor_type): Rename
+ 	PROCESSOR_ARCH14 to PROCESSOR_3931_Z16.
+ 	* config/s390/s390.cc (PROCESSOR_ARCH14): Rename to ...
+ 	(PROCESSOR_3931_Z16): ... throughout the file.
+ 	(s390_processor processor_table): Add z16 as cpu string.
+ 	* config/s390/s390.h (enum processor_flags): Rename PF_ARCH14 to
+ 	PF_Z16.
+ 	(TARGET_CPU_ARCH14): Rename to ...
+ 	(TARGET_CPU_Z16): ... this.
+ 	(TARGET_CPU_ARCH14_P): Rename to ...
+ 	(TARGET_CPU_Z16_P): ... this.
+ 	(TARGET_ARCH14): Rename to ...
+ 	(TARGET_Z16): ... this.
+ 	(TARGET_ARCH14_P): Rename to ...
+ 	(TARGET_Z16_P): ... this.
+ 	* config/s390/s390.md (cpu_facility): Rename arch14 to z16 and
+ 	check TARGET_Z16 instead of TARGET_ARCH14.
+ 	* config/s390/s390.opt: Add z16 to processor_type.
+ 	* doc/invoke.texi: Document z16 and arch14.
+ 
+ 2022-04-12  chenglulu  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch.cc: Fix bug for
+ 	tmpdir-g++.dg-struct-layout-1/t033.
+ 
+ 2022-04-11  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/104894
+ 	* config/rs6000/rs6000.cc (rs6000_sibcall_aix): Handle pcrel sibcalls
+ 	to longcall functions.
+ 
+ 2022-04-11  Jason Merrill  <jason@redhat.com>
+ 
+ 	* ipa-free-lang-data.cc (free_lang_data_in_decl): Fix typos.
+ 
+ 2022-04-11  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/105213
+ 	PR target/103623
+ 	* config/rs6000/rs6000.md (unpack<mode>_nodm): Add m,r,i alternative.
+ 
+ 2022-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105218
+ 	* tree-ssa-phiopt.cc (value_replacement): If middle_bb has
+ 	more than one predecessor or phi's bb more than 2 predecessors,
+ 	reset phi result uses instead of adding a debug temp.
+ 
+ 2022-04-11  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/104853
+ 	* config.gcc: Pass -misa-spec to arch-canonicalize and
+ 	multilib-generator.
+ 	* config/riscv/arch-canonicalize: Adding -misa-spec option.
+ 	(SUPPORTED_ISA_SPEC): New.
+ 	(arch_canonicalize): New argument `isa_spec`.
+ 	Handle multiple ISA spec versions.
+ 	* config/riscv/multilib-generator: Adding -misa-spec option.
+ 
+ 2022-04-11  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* config/riscv/arch-canonicalize: Add TODO item.
+ 	(IMPLIED_EXT): Sync.
+ 	(arch_canonicalize): Checking until no change.
+ 
+ 2022-04-11  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/105197
+ 	* tree-vect-stmts.cc (vectorizable_condition): Prevent cond swap when
+ 	not masked.
+ 
+ 2022-04-11  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/100370
+ 	* pointer-query.cc (compute_objsize_r) [POINTER_PLUS_EXPR]: Require
+ 	deref == -1.
+ 
+ 2022-04-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104639
+ 	* tree-ssa-phiopt.cc: Include tree-ssa-propagate.h.
+ 	(value_replacement): Optimize (x != cst1 ? x : cst2) != cst3
+ 	into x != cst3.
+ 
+ 2022-04-11  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	* config/bfin/bfin.md (rol_one): Fix pattern to indicate the
+ 	sign bit of the source ends up in CC.
+ 
+ 2022-04-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/103376
+ 	* cgraphunit.cc (cgraph_node::analyze): update semantic_interposition
+ 	flag.
+ 
+ 2022-04-09  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* ipa-modref.cc (ipa_merge_modref_summary_after_inlining): Propagate
+ 	nondeterministic and side_effects flags.
+ 
+ 2022-04-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/105157
+ 	* config.gcc: Shift ext_mask by TARGET_CPU_NBITS.
+ 	* config/aarch64/aarch64.h (TARGET_CPU_NBITS): New macro.
+ 	(TARGET_CPU_MASK): Likewise.
+ 	(TARGET_CPU_DEFAULT): Use TARGET_CPU_NBITS.
+ 	* config/aarch64/aarch64.cc (aarch64_get_tune_cpu): Use TARGET_CPU_MASK.
+ 	(aarch64_get_arch): Likewise.
+ 	(aarch64_override_options): Use TARGET_CPU_NBITS.
+ 
+ 2022-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105198
+ 	* tree-predcom.cc (find_looparound_phi): Check whether
+ 	the found memory location of the entry value is clobbered
+ 	inbetween the value we want to use and loop entry.
+ 
+ 2022-04-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105189
+ 	* fold-const.cc (make_range_step): Fix up handling of
+ 	(unsigned) x +[low, -] ranges for signed x if low fits into
+ 	typeof (x).
+ 
+ 2022-04-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105175
+ 	* tree-vect-stmts.cc (vectorizable_operation): Suppress
+ 	-Wvector-operation-performance if using emulated vectors.
+ 	* tree-vect-generic.cc (expand_vector_piecewise): Do not diagnose
+ 	-Wvector-operation-performance when suppressed.
+ 	(expand_vector_parallel): Likewise.
+ 	(expand_vector_comparison): Likewise.
+ 	(expand_vector_condition): Likewise.
+ 	(lower_vec_perm): Likewise.
+ 	(expand_vector_conversion): Likewise.
+ 
+ 2022-04-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/104409
+ 	* config/aarch64/aarch64-builtins.cc (handle_arm_acle_h): New.
+ 	(aarch64_general_init_builtins): Move LS64 code.
+ 	* config/aarch64/aarch64-c.cc (aarch64_pragma_aarch64): Support
+ 	arm_acle.h
+ 	* config/aarch64/aarch64-protos.h (handle_arm_acle_h): New.
+ 	* config/aarch64/arm_acle.h: Add pragma GCC aarch64 "arm_acle.h".
+ 
+ 2022-04-07  Richard Biener  <rguenther@suse.de>
+ 	    Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	PR ipa/104303
+ 	* tree-ssa-alias.h (ptr_deref_may_alias_global_p,
+ 	ref_may_alias_global_p, ref_may_alias_global_p,
+ 	stmt_may_clobber_global_p, pt_solution_includes_global): Add
+ 	bool parameters indicating whether escaped locals should be
+ 	considered global.
+ 	* tree-ssa-structalias.cc (pt_solution_includes_global):
+ 	When the new escaped_nonlocal_p flag is true also consider
+ 	pt->vars_contains_escaped.
+ 	* tree-ssa-alias.cc (ptr_deref_may_alias_global_p):
+ 	Pass down new escaped_nonlocal_p flag.
+ 	(ref_may_alias_global_p): Likewise.
+ 	(stmt_may_clobber_global_p): Likewise.
+ 	(ref_may_alias_global_p_1): Likewise.  For decls also
+ 	query the escaped solution if true.
+ 	(ref_may_access_global_memory_p): Remove.
+ 	(modref_may_conflict): Use ref_may_alias_global_p with
+ 	escaped locals considered global.
+ 	(ref_maybe_used_by_stmt_p): Adjust.
+ 	* ipa-fnsummary.cc (points_to_local_or_readonly_memory_p):
+ 	Likewise.
+ 	* tree-ssa-dse.cc (dse_classify_store): Likewise.
+ 	* trans-mem.cc (thread_private_new_memory): Likewise, but
+ 	consider escaped locals global.
+ 	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Likewise.
+ 
+ 2022-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105185
+ 	* tree-ssa-sccvn.cc (visit_reference_op_call): Simplify
+ 	modref query again.
+ 
+ 2022-04-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR target/104049
+ 	* config/aarch64/aarch64-simd.md
+ 	(aarch64_reduc_plus_internal<mode>): Fix RTL and rename to...
+ 	(reduc_plus_scal_<mode>): ... This.
+ 	(reduc_plus_scal_v4sf): Moved.
+ 	(aarch64_reduc_plus_internalv2si): Fix RTL and rename to...
+ 	(reduc_plus_scal_v2si): ... This.
+ 
+ 2022-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/102586
+ 	* langhooks.h (struct lang_hooks_for_types): Add classtype_as_base
+ 	langhook.
+ 	* langhooks-def.h (LANG_HOOKS_CLASSTYPE_AS_BASE): Define.
+ 	(LANG_HOOKS_FOR_TYPES_INITIALIZER): Add it.
+ 	* gimple-fold.cc (clear_padding_type): Use ftype instead of
+ 	TREE_TYPE (field) some more.  For artificial FIELD_DECLs without
+ 	name try the lang_hooks.types.classtype_as_base langhook and
+ 	if it returns non-NULL, use that instead of ftype for recursive call.
+ 
+ 2022-04-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105150
+ 	* tree.cc (tree_builtin_call_types_compatible_p): New function.
+ 	(get_call_combined_fn): Use it.
+ 
+ 2022-04-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105165
+ 	* tree-complex.cc (expand_complex_asm): Sorry for asm goto
+ 	_Complex outputs.
+ 
+ 2022-04-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md (<sse2_avx2>_andnot<mode>3_mask):
+ 	Removed.
+ 	(<sse>_andnot<mode>3<mask_name>): Disable V*HFmode patterns
+ 	for mask_applied.
+ 	(<code><mode>3<mask_name>): Ditto.
+ 	(*<code><mode>3<mask_name>): Ditto.
+ 	(VFB_128_256): Adjust condition of V8HF/V16HFmode according to
+ 	real instruction.
+ 	(VFB_512): Ditto.
+ 	(VFB): Ditto.
+ 
+ 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104985
+ 	* combine.cc (struct undo): Add where.regno member.
+ 	(do_SUBST_MODE): Rename to ...
+ 	(subst_mode): ... this.  Change first argument from rtx * into int,
+ 	operate on regno_reg_rtx[regno] and save regno into where.regno.
+ 	(SUBST_MODE): Remove.
+ 	(try_combine): Use subst_mode instead of SUBST_MODE, change first
+ 	argument from regno_reg_rtx[whatever] to whatever.  For UNDO_MODE, use
+ 	regno_reg_rtx[undo->where.regno] instead of *undo->where.r.
+ 	(undo_to_marker): For UNDO_MODE, use regno_reg_rtx[undo->where.regno]
+ 	instead of *undo->where.r.
+ 	(simplify_set): Use subst_mode instead of SUBST_MODE, change first
+ 	argument from regno_reg_rtx[whatever] to whatever.
+ 
+ 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105069
+ 	* config/sh/sh.opt (mdiv=): Add Save.
+ 
+ 2022-04-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR driver/105096
+ 	* common.opt: Document properly based on what it does.
+ 	* gcc.cc (display_help): Unify with what we have in common.opt.
+ 	* opts.cc (common_handle_option): Do not print undocumented
+ 	options.
+ 
+ 2022-04-06  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	* config/mips/mips.cc (mips_fpr_return_fields): Ignore
+ 	cxx17_empty_base_field_p fields and set an indicator.
+ 	(mips_return_in_msb): Adjust for mips_fpr_return_fields change.
+ 	(mips_function_value_1): Inform psABI change about C++17 empty
+ 	bases.
+ 
+ 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105150
+ 	* gimple.cc (gimple_builtin_call_types_compatible_p): Use
+ 	builtin_decl_explicit here...
+ 	(gimple_call_builtin_p, gimple_call_combined_fn): ... rather than
+ 	here.
+ 
+ 2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105173
+ 	* tree-ssa-reassoc.cc (find_insert_point): Get extra
+ 	insert_before output argument and compute it.
+ 	(insert_stmt_before_use): Adjust.
+ 	(rewrite_expr_tree): Likewise.
+ 
+ 2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/105166
+ 	* ipa-modref-tree.cc (modref_access_node::get_ao_ref ): Bail
+ 	out for non-pointer arguments.
+ 
+ 2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105163
+ 	* tree-ssa-reassoc.cc (repropagate_negates): Avoid propagating
+ 	negated abnormals.
+ 
+ 2022-04-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105150
+ 	* gimple.cc (gimple_call_builtin_p, gimple_call_combined_fn):
+ 	For BUILT_IN_NORMAL calls, call gimple_builtin_call_types_compatible_p
+ 	preferrably on builtin_decl_explicit decl rather than fndecl.
+ 	* tree-ssa-strlen.cc (valid_builtin_call): Don't call
+ 	gimple_builtin_call_types_compatible_p here.
+ 
+ 2022-04-06  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR tree-optimization/103761
+ 	* tree-vect-stmts.cc (check_load_store_for_partial_vectors): Replace
+ 	the ncopies parameter with an slp_node parameter.  Calculate the
+ 	number of vectors based on it and vectype.  Rename lambda to
+ 	group_memory_nvectors.
+ 	(vectorizable_store, vectorizable_load): Update calls accordingly.
+ 
+ 2022-04-06  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Document it.
+ 
+ 2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105148
+ 	* tree-ssa-loop-ivopts.cc (idx_record_use): Walk raw operands
+ 	2 and 3 of ARRAY_REFs.
+ 
+ 2022-04-06  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/sse.md (ANDNOT_MODE): New mode iterator for TF and V1TI.
+ 	(*andnottf3): Replace with...
+ 	(*andnot<mode>3): New define_insn using ANDNOT_MODE.
+ 
+ 2022-04-06  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105142
+ 	* gimple-fold.h (maybe_fold_and_comparisons): Add defaulted
+ 	basic-block parameter.
+ 	(maybe_fold_or_comparisons): Likewise.
+ 	* gimple-fold.cc (follow_outer_ssa_edges): New.
+ 	(maybe_fold_comparisons_from_match_pd): Use follow_outer_ssa_edges
+ 	when an outer condition basic-block is specified.
+ 	(and_comparisons_1, and_var_with_comparison,
+ 	and_var_with_comparison_1, or_comparisons_1,
+ 	or_var_with_comparison, or_var_with_comparison_1): Receive and pass
+ 	down the outer condition basic-block.
+ 	* tree-ssa-ifcombine.cc (ifcombine_ifandif): Pass down the
+ 	basic-block of the outer condition.
+ 
+ 2022-04-06  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/105002
+ 	* config/rs6000/rs6000.cc (rs6000_maybe_emit_maxc_minc): Support more
+ 	comparison codes UNLT/UNLE/UNGT/UNGE.
+ 
+ 2022-04-05  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/extend.texi (Common Function Attributes): Document that
+ 	'access' does not imply 'nonnull'.
+ 
+ 2022-04-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/105139
+ 	* config/i386/mmx.md (*movv2qi_internal):
+ 	Change insn mode of alternative 5 to HF for TARGET_AVX512FP16.
+ 
+ 2022-04-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64.md (aarch64_cpymemdi): Turn into a
+ 	define_expand and turn operands 0 and 1 from REGs to MEMs.
+ 	(*aarch64_cpymemdi): New pattern.
+ 	(aarch64_setmemdi): Turn into a define_expand and turn operand 0
+ 	from a REG to a MEM.
+ 	(*aarch64_setmemdi): New pattern.
+ 	* config/aarch64/aarch64.cc (aarch64_expand_cpymem_mops): Use
+ 	copy_to_mode_reg on all three registers.  Replace the original
+ 	MEM addresses rather than creating wild reads and writes.
+ 	(aarch64_expand_setmem_mops): Likewise for the size and for the
+ 	destination memory and address.
+ 
+ 2022-04-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/103147
+ 	* config/aarch64/aarch64-protos.h (aarch64_simd_switcher): New class.
+ 	* config/aarch64/aarch64-sve-builtins.h (sve_switcher): Inherit
+ 	from aarch64_simd_switcher.
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_simd_tuple_modes):
+ 	New variable.
+ 	(aarch64_lookup_simd_builtin_type): Use it instead of TYPE_MODE.
+ 	(register_tuple_type): Add more asserts.  Expect the alignment
+ 	of the structure to be subject to flag_pack_struct and
+ 	maximum_field_alignment.  Set aarch64_simd_tuple_modes.
+ 	(aarch64_simd_switcher::aarch64_simd_switcher): New function.
+ 	(aarch64_simd_switcher::~aarch64_simd_switcher): Likewise.
+ 	(handle_arm_neon_h): Hold an aarch64_simd_switcher throughout.
+ 	(aarch64_general_init_builtins): Hold an aarch64_simd_switcher
+ 	while calling aarch64_init_simd_builtins.
+ 	* config/aarch64/aarch64-sve-builtins.cc (sve_switcher::sve_switcher)
+ 	(sve_switcher::~sve_switcher): Remove code now performed by
+ 	aarch64_simd_switcher.
+ 
+ 2022-04-05  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/104897
+ 	* config/aarch64/aarch64-sve-builtins.cc
+ 	(function_resolver::infer_vector_or_tuple_type): Use error_n
+ 	for "%d vectors" messages.
+ 
+ 2022-04-05  Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	* omp-low.cc (lower_omp_target): Use outer context looked-up 'var' as
+ 	argument to lang_hooks.decls.omp_array_data, instead of 'ovar' from
+ 	current clause.
+ 
+ 2022-04-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR c/105151
+ 	* passes.def (pass_walloca): Move early instance into
+ 	pass_build_ssa_passes to make SSA form available.
+ 
+ 2022-04-05  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/101908
+ 	* config/i386/i386.cc (ix86_split_stlf_stall_load): New
+ 	function
+ 	(ix86_reorg): Call ix86_split_stlf_stall_load.
+ 	* config/i386/i386.opt (-param=x86-stlf-window-ninsns=): New
+ 	param.
+ 
+ 2022-04-05  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* targhooks.cc (default_zero_call_used_regs): Attempt to group
+ 	regs that the target refuses to use in their natural modes.
+ 	(zcur_select_mode_rtx): New.
+ 	* regs.h (struct target_regs): Add x_hard_regno_max_nregs.
+ 	(hard_regno_max_nregs): Define.
+ 	* reginfo.cc (init_reg_modes_target): Set hard_regno_max_nregs.
+ 
+ 2022-04-04  Alex Coplan  <alex.coplan@arm.com>
+ 
+ 	* doc/match-and-simplify.texi: Fix typos.
+ 
+ 2022-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105144
+ 	* config/aarch64/t-aarch64 (s-aarch64-tune-md): Do move-if-change
+ 	only if configured with --enable-maintainer-mode, otherwise compare
+ 	tmp-aarch64-tune.md with $(srcdir)/config/aarch64/aarch64-tune.md and
+ 	if they differ, emit a message and fail.
+ 
+ 2022-04-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105144
+ 	* config/aarch64/t-aarch64 (s-mddeps): Depend on s-aarch64-tune-md.
+ 	* config/aarch64/aarch64-tune.md: Regenerated.
+ 
+ 2022-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105132
+ 	* tree-vect-stmts.cc (vectorizable_operation): Check that
+ 	the input vectors have the same number of elements.
+ 
+ 2022-04-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105140
+ 	* fold-const.cc (fold_convertible_p): Allow a TYPE_P arg.
+ 
+ 2022-04-03  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	PR target/104987
+ 	* config/iq2000/iq2000.md (bbi): New attribute,  default to no.
+ 	(delay slot descripts): Use different delay slot description when
+ 	the insn as the "bbi" attribute.
+ 	(bbi, bbin patterns): Set the bbi attribute to yes.
+ 
+ 2022-04-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/105123
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_init_general): Avoid
+ 	using word as target for expand_simple_binop when doing ASHIFT and
+ 	IOR.
+ 
+ 2022-04-02  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	* config/mips/mips.cc (mips_function_arg): Check if DECL_SIZE is
+ 	NULL before dereferencing it.
+ 
+ 2022-04-01  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	* config/i386/i386.cc (zero_all_st_registers): Return the value of
+ 	num_of_st.
+ 	(ix86_zero_call_used_regs): Update zeroed_hardregs set according to
+ 	the return value of zero_all_st_registers.
+ 	* doc/tm.texi: Update the documentation of TARGET_ZERO_CALL_USED_REGS.
+ 	* function.cc (gen_call_used_regs_seq): Add an assertion.
+ 	* target.def: Update the documentation of TARGET_ZERO_CALL_USED_REGS.
+ 
+ 2022-04-01  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR target/102024
+ 	* config/mips/mips.cc (mips_function_arg): Ignore zero-width
+ 	fields, and inform if it causes a psABI change.
+ 
+ 2022-04-01  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR target/102024
+ 	* config/mips/mips.cc (mips_fpr_return_fields): Detect C++
+ 	zero-width bit-fields and set up an indicator.
+ 	(mips_return_in_msb): Adapt for mips_fpr_return_fields change.
+ 	(mips_function_value_1): Diagnose when the presense of a C++
+ 	zero-width bit-field changes function returning in GCC 12.
+ 
+ 2022-04-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104645
+ 	* tree-ssa-phiopt.cc (value_replacement): If assign has
+ 	CONVERT_EXPR_CODE_P rhs_code, treat it like a preparation
+ 	statement with constant evaluation.
+ 
+ 2022-04-01  YunQiang Su  <yunqiang.su@cipunited.com>
+ 
+ 	* config/mips/mips.cc (mips_expand_prologue):
+ 	IPL is 8bit for MCU ASE.
+ 
+ 2022-03-31  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/104004
+ 	* config/rs6000/rs6000-builtins.def (MFFSL): Mark nosoft.
+ 	(MTFSB0): Likewise.
+ 	(MTFSB1): Likewise.
+ 	(SET_FPSCR_RN): Likewise.
+ 	(SET_FPSCR_DRN): Mark nosoft and no32bit.
+ 
+ 2022-03-31  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* doc/options.texi (Option file format): Clarifications around
+ 	option definition records' help texts.
+ 
+ 2022-03-31  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* optc-gen.awk <END>: Fix "Multiple different help strings" error
+ 	diagnostic.
+ 
+ 2022-03-31  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (aarch64_vector_costs): Define
+ 	determine_suggested_unroll_factor and m_has_avg.
+ 	(determine_suggested_unroll_factor): New function.
+ 	(aarch64_vector_costs::add_stmt_cost): Check for a qualifying pattern
+ 	to set m_nosve_pattern.
+ 	(aarch64_vector_costs::finish_costs): Use
+ 	determine_suggested_unroll_factor.
+ 	* config/aarch64/aarch64.opt (aarch64-vect-unroll-limit): New.
+ 	* doc/invoke.texi: (aarch64-vect-unroll-limit): Document new option.
+ 
+ 2022-03-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/103083
+ 	* ipa-prop.h (ipa_ancestor_jf_data): New flag keep_null;
+ 	(ipa_get_jf_ancestor_keep_null): New function.
+ 	* ipa-prop.cc (ipa_set_ancestor_jf): Initialize keep_null field of the
+ 	ancestor function.
+ 	(compute_complex_assign_jump_func): Pass false to keep_null
+ 	parameter of ipa_set_ancestor_jf.
+ 	(compute_complex_ancestor_jump_func): Pass true to keep_null
+ 	parameter of ipa_set_ancestor_jf.
+ 	(update_jump_functions_after_inlining): Carry over keep_null from the
+ 	original ancestor jump-function or merge them.
+ 	(ipa_write_jump_function): Stream keep_null flag.
+ 	(ipa_read_jump_function): Likewise.
+ 	(ipa_print_node_jump_functions_for_edge): Print the new flag.
+ 	* ipa-cp.cc (class ipcp_bits_lattice): Make various getters const.  New
+ 	member function known_nonzero_p.
+ 	(ipcp_bits_lattice::known_nonzero_p): New.
+ 	(ipcp_bits_lattice::meet_with_1): New parameter drop_all_ones,
+ 	observe it.
+ 	(ipcp_bits_lattice::meet_with): Likewise.
+ 	(propagate_bits_across_jump_function): Simplify.  Pass true in
+ 	drop_all_ones when it is necessary.
+ 	(propagate_aggs_across_jump_function): Take care of keep_null
+ 	flag.
+ 	(ipa_get_jf_ancestor_result): Propagate NULL accross keep_null
+ 	jump functions.
+ 
+ 2022-03-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/102513
+ 	* ipa-cp.cc (decide_whether_version_node): Skip scalar values
+ 	which do not fit the known value_range.
+ 
+ 2022-03-31  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/103171
+ 	* ipa-prop.cc (propagate_controlled_uses): Add a LOAD reference
+ 	always when an ADDR_EXPR constant is known to reach a load because
+ 	of inlining, not just when removing an ADDR reference.
+ 
+ 2022-03-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105109
+ 	* tree-ssa.cc (execute_update_addresses_taken): Suppress
+ 	diagnostics on the load of the other complex component.
+ 
+ 2022-03-31  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Use "-m sm_35" for -misa=sm_30.
+ 
+ 2022-03-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/105091
+ 	* gimple-expr.cc (mark_addressable): Handle TARGET_MEM_REF
+ 	bases.
+ 
+ 2022-03-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	Revert:
+ 	2021-09-13  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102125
+ 	* gimple-fold.c (gimple_fold_builtin_memory_op): Allow folding
+ 	memcpy if the size is not more than MOVE_MAX * MOVE_RATIO.
+ 
+ 2022-03-31  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* gcov-io.cc (gcov_read_string): Reword documentation comment.
+ 
+ 2022-03-30  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtins.def (NEG_V16QI): Move to [altivec]
+ 	stanza.
+ 	(NEG_V4SF): Likewise.
+ 	(NEG_V4SI): Likewise.
+ 	(NEG_V8HI): Likewise.
+ 	(NEG_V2DF): Move to [vsx] stanza.
+ 	(NEG_V2DI): Likewise.
+ 
+ 2022-03-30  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR middle-end/105032
+ 	* lra-assigns.cc (find_reload_regno_insns): Modify loop condition.
+ 
+ 2022-03-30  Tom de Vries  <tdevries@suse.de>
+ 	    Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi (march): Document __PTX_SM__.
+ 	(mptx): Document __PTX_ISA_VERSION_MAJOR__ and
+ 	__PTX_ISA_VERSION_MINOR__.
+ 
+ 2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/105093
+ 	* ubsan.cc (instrument_object_size): If t is equal to inner and
+ 	is a decl other than global var, punt.  When emitting call to
+ 	UBSAN_OBJECT_SIZE ifn, make sure base is addressable.
+ 
+ 2022-03-30  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105094
+ 	* gimple-ssa-store-merging.cc (mem_valid_for_store_merging): Punt if
+ 	bitsize <= 0 rather than just == 0.
+ 
+ 2022-03-30  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* doc/invoke.texi (misa, mptx): Update.
+ 	(march, march-map): Add.
+ 
+ 2022-03-30  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* opt-functions.awk (n_args): New function.
+ 	(lang_enabled_by): Merge function into...
+ 	* optc-gen.awk <END>: ... sole user here.
+ 	Improve diagnostics.
+ 
+ 2022-03-29  Marek Polacek  <polacek@redhat.com>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/103597
+ 	* gimplify.cc (collect_fallthrough_labels): Don't push UNUSED_LABEL_Ps
+ 	into labels.  Maybe set prev to the statement preceding UNUSED_LABEL_P.
+ 	(gimplify_cond_expr): Set UNUSED_LABEL_P.
+ 	* tree.h (UNUSED_LABEL_P): New.
+ 
+ 2022-03-29   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	* config/rs6000/vsx.md (vsx_extract_<mode>): Allow destination to
+ 	be any VSX register.
+ 
+ 2022-03-29  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102024
+ 	* config/aarch64/aarch64.cc (aapcs_vfp_sub_candidate): Handle
+ 	zero-sized bit-fields.  Detect cases where a warning may be needed.
+ 	(aarch64_vfp_is_call_or_return_candidate): Emit a note if a
+ 	zero-sized bit-field has caused parameter passing to change.
+ 
+ 2022-03-29  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/102024
+ 	* config/arm/arm.cc (aapcs_vfp_sub_candidate): Handle zero-sized
+ 	bit-fields.  Detect cases where a warning may be needed.
+ 	(aapcs_vfp_is_call_or_return_candidate): Emit a note if
+ 	a zero-sized bit-field has caused parameter passing to change.
+ 
+ 2022-03-29  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	PR target/96882
+ 	* config/arm/arm.cc (arm_get_pcs_model): Disable selection of
+ 	ARM_PCS_AAPCS_LOCAL.
+ 
+ 2022-03-29  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104857
+ 	* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Emit
+ 	__PTX_ISA_VERSION_MAJOR__ and __PTX_ISA_VERSION_MINOR__.
+ 	* config/nvptx/nvptx.cc (ptx_version_to_number): New function.
+ 	* config/nvptx/nvptx-protos.h (ptx_version_to_number): Declare.
+ 
+ 2022-03-29  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.opt (m64): Update help text to reflect that it
+ 	is ignored.
+ 
+ 2022-03-29  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104714
+ 	* config/nvptx/nvptx.opt (march-map=*): Add aliases.
+ 
+ 2022-03-29  Jan Hubicka  <hubicka@ucw.cz>
+ 
+ 	* config/i386/i386-builtins.cc (ix86_vectorize_builtin_gather): Test
+ 	TARGET_USE_GATHER_2PARTS and TARGET_USE_GATHER_4PARTS.
+ 	* config/i386/i386.h (TARGET_USE_GATHER_2PARTS): New macro.
+ 	(TARGET_USE_GATHER_4PARTS): New macro.
+ 	* config/i386/x86-tune.def (X86_TUNE_USE_GATHER_2PARTS): New tune
+ 	(X86_TUNE_USE_GATHER_4PARTS): New tune
+ 
+ 2022-03-29  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.opt (march): Add alias of misa.
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* doc/install.texi: Add LoongArch options section.
+ 	* doc/invoke.texi: Add LoongArch options section.
+ 	* doc/md.texi: Add LoongArch options section.
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/loongarch-c.cc
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/larchintrin.h: New file.
+ 	* config/loongarch/loongarch-builtins.cc: New file.
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/host-linux.cc: Add LoongArch support.
+ 	* config/loongarch/loongarch-protos.h: New file.
+ 	* config/loongarch/loongarch-tune.h: Likewise.
+ 	* config/loongarch/loongarch.cc: Likewise.
+ 	* config/loongarch/loongarch.h: Likewise.
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* config/loongarch/constraints.md: New file.
+ 	* config/loongarch/generic.md: New file.
+ 	* config/loongarch/la464.md: New file.
+ 	* config/loongarch/loongarch-ftypes.def: New file.
+ 	* config/loongarch/loongarch-modes.def: New file.
+ 	* config/loongarch/loongarch.md: New file.
+ 	* config/loongarch/predicates.md: New file.
+ 	* config/loongarch/sync.md: New file.
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* configure: Regenerate file.
+ 
+ 2022-03-29  Chenghua Xu  <xuchenghua@loongson.cn>
+ 	    Lulu Cheng  <chenglulu@loongson.cn>
+ 
+ 	* common/config/loongarch/loongarch-common.cc: New file.
+ 	* config/loongarch/genopts/genstr.sh: New file.
+ 	* config/loongarch/genopts/loongarch-strings: New file.
+ 	* config/loongarch/genopts/loongarch.opt.in: New file.
+ 	* config/loongarch/loongarch-str.h: New file.
+ 	* config/loongarch/gnu-user.h: New file.
+ 	* config/loongarch/linux.h: New file.
+ 	* config/loongarch/loongarch-cpu.cc: New file.
+ 	* config/loongarch/loongarch-cpu.h: New file.
+ 	* config/loongarch/loongarch-def.c: New file.
+ 	* config/loongarch/loongarch-def.h: New file.
+ 	* config/loongarch/loongarch-driver.cc: New file.
+ 	* config/loongarch/loongarch-driver.h: New file.
+ 	* config/loongarch/loongarch-opts.cc: New file.
+ 	* config/loongarch/loongarch-opts.h: New file.
+ 	* config/loongarch/loongarch.opt: New file.
+ 	* config/loongarch/t-linux: New file.
+ 	* config/loongarch/t-loongarch: New file.
+ 	* config.gcc: Add LoongArch support.
+ 	* configure.ac: Add LoongArch support.
+ 
+ 2022-03-29  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* opt-functions.awk (lang_enabled_by): Fix 'enabledby_negargs'
+ 	typo.
+ 
+ 2022-03-29  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105080
+ 	* tree-ssa-strlen.cc (printf_strlen_execute): Always init
+ 	loops and SCEV.
+ 
+ 2022-03-28  Indu Bhagat  <indu.bhagat@oracle.com>
+ 
+ 	* ctfout.cc (ctf_preprocess): Use ctfc_get_num_ctf_vars instead.
+ 	(output_ctf_vars): Likewise.
+ 
+ 2022-03-28  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/59426
+ 	* doc/extend.texi: Refer to __is_trivial instead of __is_pod.
+ 
+ 2022-03-28  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105068
+ 	* config/i386/sse.md (*ssse3_pshufbv8qi3): Also replace "Yv" with
+ 	"Yw" in clobber.
+ 
+ 2022-03-28  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104818
+ 	* config/nvptx/gen-opt.sh (ptx_isa): Improve help text.
+ 	* config/nvptx/nvptx-gen.opt: Regenerate.
+ 	* config/nvptx/nvptx.opt (misa, mptx, ptx_version): Improve help text.
+ 	* config/nvptx/t-nvptx (s-nvptx-gen-opt): Add missing dependency on
+ 	gen-opt.sh.
+ 
+ 2022-03-28  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/104308
+ 	* gimple-fold.cc (gimple_fold_builtin_memory_op): When optimizing
+ 	to loads then stores, set the location of the new load stmt.
+ 
+ 2022-03-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105070
+ 	* tree-switch-conversion.h
+ 	(bit_test_cluster::hoist_edge_and_branch_if_true): Add location
+ 	argument.
+ 	* tree-switch-conversion.cc
+ 	(bit_test_cluster::hoist_edge_and_branch_if_true): Annotate
+ 	cond with location.
+ 	(bit_test_cluster::emit): Annotate all generated expressions
+ 	with location.
+ 
+ 2022-03-28  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64-cores.def: Update Neoverse N2 core entry.
+ 
+ 2022-03-28  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/105066
+ 	* config/i386/sse.md (vec_set<mode>_0): Change attr "isa" of
+ 	alternative 4 from sse4_noavx to noavx.
+ 
+ 2022-03-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/105056
+ 	* tree-predcom.cc (component::component): Initialize also comp_step.
+ 
+ 2022-03-27  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105068
+ 	* config/i386/sse.md (*ssse3_pshufbv8qi3): Replace "Yv" with
+ 	"Yw".
+ 
+ 2022-03-26  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/104885
+ 	* calls.cc (mark_stack_region_used): Check that the region
+ 	is within the allocated size of stack_usage_map.
+ 
+ 2022-03-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103775
+ 	* recog.cc (check_invalid_inc_dec): New function.
+ 	(insn_invalid_p): Return 1 if REG_INC operand overlaps
+ 	any stored REGs.
+ 
+ 2022-03-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105058
+ 	* config/i386/sse.md (loadiwkey): Replace "v" with "x".
+ 	(aes<aesklvariant>u8): Likewise.
+ 
+ 2022-03-26  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105052
+ 	* config/i386/sse.md (ssse3_ph<plusminus_mnemonic>wv4hi3):
+ 	Replace "Yv" with "x".
+ 	(ssse3_ph<plusminus_mnemonic>dv2si3): Likewise.
+ 	(ssse3_psign<mode>3): Likewise.
+ 
+ 2022-03-26  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* reload.cc (find_reloads): Align comment with code where
+ 	considering the intersection of register classes then tweaking the
+ 	regclass for the current alternative or rejecting it.
+ 
+ 2022-03-25  Christophe Lyon  <christohe.lyon@arm.com>
+ 
+ 	PR target/104882
+ 	Revert
+ 	2021-06-11  Christophe Lyon  <christophe.lyon@linaro.org>
+ 
+ 	* config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): Delete.
+ 	(mve_vec_unpack<US>_hi_<mode>): Delete.
+ 	(@mve_vec_pack_trunc_lo_<mode>): Delete.
+ 	(mve_vmovntq_<supf><mode>): Remove '@' prefix.
+ 	* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move back
+ 	from vec-common.md.
+ 	(vec_unpack<US>_lo_<mode>): Likewise.
+ 	(vec_pack_trunc_<mode>): Rename from
+ 	neon_quad_vec_pack_trunc_<mode>.
+ 	* config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): Delete.
+ 	(vec_unpack<US>_lo_<mode>): Delete.
+ 	(vec_pack_trunc_<mode>): Delete.
+ 
+ 2022-03-25  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR middle-end/104971
+ 	* lra-lives.cc (process_bb_lives): Check hard_regs_live for hard
+ 	regs to clear remove_p flag.
+ 
+ 2022-03-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105053
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction): Pick
+ 	the correct live-out stmt for a reduction chain.
+ 
+ 2022-03-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/105049
+ 	* tree.cc (uniform_vector_p): Recurse for VECTOR_CST or
+ 	CONSTRUCTOR first elements.
+ 
+ 2022-03-25  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	PR analyzer/103533
+ 	* doc/invoke.texi (Static Analyzer Options): Move
+ 	@ignore block after @gccoptlist's '}' for 'make pdf'.
+ 
+ 2022-03-25  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/104954
+ 	* doc/invoke.texi (Static Analyzer Options): Add
+ 	-fdump-analyzer-untracked.
+ 
+ 2022-03-25  Avinash Sonawane  <rootkea@gmail.com>
+ 
+ 	PR analyzer/103533
+ 	* doc/invoke.texi: Document that enabling taint analyzer
+ 	checker disables some warnings from `-fanalyzer`.
+ 
+ 2022-03-24  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR debug/104564
+ 	* gimple-harden-conditionals.cc (detach_value): Keep temps
+ 	anonymous.
+ 
+ 2022-03-24  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR middle-end/104975
+ 	* gimple-harden-conditionals.cc
+ 	(pass_harden_compares::execute): Force split in case of
+ 	multiple edges.
+ 
+ 2022-03-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/105035
+ 	* fold-const.cc (operand_equal_p) <case COMPONENT_REF>: If either
+ 	field0 or field1 is not a FIELD_DECL, return false.
+ 
+ 2022-03-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-predcom.cc (chain::chain): Add CTOR.
+ 	(component::component): Likewise.
+ 	(pcom_worker::release_chain): Use delete.
+ 	(release_components): Likewise.
+ 	(pcom_worker::filter_suitable_components): Likewise.
+ 	(pcom_worker::split_data_refs_to_components): Use new.
+ 	(make_invariant_chain): Likewise.
+ 	(make_rooted_chain): Likewise.
+ 	(pcom_worker::combine_chains): Likewise.
+ 	* tree-vect-loop.cc (vect_create_epilog_for_reduction):
+ 	Make sure to release previously constructed scalar_results.
+ 	* tree-vect-stmts.cc (vectorizable_load): Use auto_vec
+ 	for vec_offsets.
+ 	* vr-values.cc (simplify_using_ranges::~simplify_using_ranges):
+ 	Release m_flag_set_edges.
+ 
+ 2022-03-24  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/104970
+ 	* tree-object-size.cc (parm_object_size): Restrict size
+ 	computation scenarios to explicit access attributes.
+ 
+ 2022-03-24  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/104967
+ 	* config/rs6000/rs6000-c.cc (find_instance): Skip instances with null
+ 	function types.
+ 
+ 2022-03-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/102125
+ 	* gimple-fold.cc (gimple_fold_builtin_memory_op): Allow the
+ 	use of movmisalign when either the source or destination
+ 	decl is properly aligned.
+ 
+ 2022-03-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/105028
+ 	* ira-color.cc (form_threads_from_copies): Remove unnecessary
+ 	copying of the sorted_copies tail.
+ 
+ 2022-03-23  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
+ 	Use %qs in format.
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal):
+ 	Reword the error message.
+ 
+ 2022-03-23  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104976
+ 	* config/i386/sse.md (ssePSmodelower): New.
+ 	(*avx_cmp<mode>3_ltint_not): Force_reg operand before
+ 	lowpart_subreg to avoid NULL_RTX.
+ 	(<avx512>_fmaddc_<mode>_mask1<round_expand_name>,
+ 	<avx512>_fcmaddc_<mode>_mask1<round_expand_name>,
+ 	fma_<mode>_fmaddc_bcst, fma_<mode>_fcmaddc_bcst,
+ 	<avx512>_<complexopname>_<mode>_mask<round_name>,
+ 	avx512fp16_fcmaddcsh_v8hf_mask1<round_expand_name>,
+ 	avx512fp16_fcmaddcsh_v8hf_mask3<round_expand_name>,
+ 	avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>,
+ 	avx512fp16_fmaddcsh_v8hf_mask3<round_expand_name>,
+ 	float<floatunssuffix><mode>v4hf2,
+ 	float<floatunssuffix>v2div2hf2,
+ 	fix<fixunssuffix>_truncv4hf<mode>2,
+ 	fix<fixunssuffix>_truncv2hfv2di2, extendv4hf<mode>2,
+ 	extendv2hfv2df2,
+ 	trunc<mode>v4hf2,truncv2dfv2hf2,
+ 	*avx512bw_permvar_truncv16siv16hi_1,
+ 	*avx512bw_permvar_truncv16siv16hi_1_hf,
+ 	*avx512f_permvar_truncv8siv8hi_1,
+ 	*avx512f_permvar_truncv8siv8hi_1_hf,
+ 	*avx512f_vpermvar_truncv8div8si_1,
+ 	*avx512f_permvar_truncv32hiv32qi_1,
+ 	*avx512f_permvar_truncv16hiv16qi_1,
+ 	*avx512f_permvar_truncv4div4si_1,
+ 	*avx512f_pshufb_truncv8hiv8qi_1,
+ 	*avx512f_pshufb_truncv4siv4hi_1,
+ 	*avx512f_pshufd_truncv2div2si_1,
+ 	sdot_prod<mode>, avx2_pblend<ssemodesuffix>_1,
+ 	ashrv2di3,ashrv2di3,usdot_prod<mode>): Ditto.
+ 
+ 2022-03-22  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104925
+ 	* config/nvptx/nvptx.md (define_insn "nvptx_uniform_warp_check"):
+ 	Use % as register prefix.
+ 
+ 2022-03-22  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_scalar_mode_supported_p)
+ 	(nvptx_libgcc_floating_mode_supported_p): Only enable HFmode for
+ 	mexperimental.
+ 
+ 2022-03-22  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.opt (mexperimental): New option.
+ 
+ 2022-03-22  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104957
+ 	* config/nvptx/nvptx-protos.h (nvptx_asm_output_def_from_decls): Declare.
+ 	* config/nvptx/nvptx.cc (write_fn_proto_1): Don't add function marker
+ 	for alias.
+ 	(SET_ASM_OP, NVPTX_ASM_OUTPUT_DEF): New macro def.
+ 	(nvptx_asm_output_def_from_decls): New function.
+ 	* config/nvptx/nvptx.h (ASM_OUTPUT_DEF): New macro def, define to
+ 	gcc_unreachable ().
+ 	(ASM_OUTPUT_DEF_FROM_DECLS): New macro def, define to
+ 	nvptx_asm_output_def_from_decls.
+ 	* config/nvptx/nvptx.opt (malias): New opt.
+ 
+ 2022-03-22  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104916
+ 	PR target/104783
+ 	* config/nvptx/nvptx.md (define_expand "omp_simt_exit"): Emit warp
+ 	sync (or uniform warp check for mptx < 6.0).
+ 
+ 2022-03-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/105012
+ 	* tree-if-conv.cc (ifcvt_local_dce): Only call
+ 	dse_classify_store when we have a VDEF.
+ 
+ 2022-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104902
+ 	* config/nvptx/nvptx.cc (handle_ptx_version_option):
+ 	Fix option wrapping in an error message.
+ 
+ 2022-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104903
+ 	* config/rs6000/rs6000-c.cc (altivec_resolve_overloaded_builtin):
+ 	Wrap const keyword.
+ 
+ 2022-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/v850/v850-c.cc (pop_data_area): Fix typo in pragma
+ 	name.
+ 
+ 2022-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104898
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal):
+ 	Use %qs instead of (%qs).
+ 
+ 2022-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104898
+ 	* config/i386/i386-options.cc (ix86_option_override_internal):
+ 	Use '%qs' instead of '(%qs)'.
+ 
+ 2022-03-22  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104898
+ 	* config/aarch64/aarch64.cc (aarch64_handle_attr_arch):
+ 	Use 'qs' and remove usage '(%qs)'.
+ 	(aarch64_handle_attr_cpu): Likewise.
+ 	(aarch64_handle_attr_tune): Likewise.
+ 	(aarch64_handle_attr_isa_flags): Likewise.
+ 
+ 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
+ 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (neoversev1_regmove_cost): New tuning
+ 	struct.
+ 	(neoversev1_tunings): Use neoversev1_regmove_cost and update store_int
+ 	cost.
+ 	(neoverse512tvb_tunings): Likewise.
+ 
+ 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
+ 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (demeter_addrcost_table,
+ 	demeter_regmove_cost, demeter_advsimd_vector_cost,
+ 	demeter_sve_vector_cost, demeter_scalar_issue_info,
+ 	demeter_advsimd_issue_info, demeter_sve_issue_info,
+ 	demeter_vec_issue_info, demeter_vector_cost,
+ 	demeter_tunings): New tuning structs.
+ 	(aarch64_ve_op_count::rename_cycles_per_iter): Enable for demeter
+ 	tuning.
+ 	* config/aarch64/aarch64-cores.def: Add entry for demeter.
+ 	* config/aarch64/aarch64-tune.md (tune): Add demeter to list.
+ 
+ 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
+ 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (struct cpu_memmov_cost): New struct.
+ 	(struct tune_params): Change type of memmov_cost to use cpu_memmov_cost.
+ 	* config/aarch64/aarch64.cc (aarch64_memory_move_cost): Update all
+ 	tunings to use cpu_memmov_cost struct.
+ 
+ 2022-03-22  Tamar Christina  <tamar.christina@arm.com>
+ 	    Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64.cc (neoversen2_addrcost_table,
+ 	neoversen2_regmove_cost, neoversen2_advsimd_vector_cost,
+ 	neoversen2_sve_vector_cost, neoversen2_scalar_issue_info,
+ 	neoversen2_advsimd_issue_info, neoversen2_sve_issue_info,
+ 	neoversen2_vec_issue_info, neoversen2_tunings): New structs.
+ 	(neoversen2_tunings): Use new structs and update tuning flags.
+ 	(aarch64_vec_op_count::rename_cycles_per_iter): Enable for neoversen2
+ 	tuning.
+ 
+ 2022-03-22  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* config/aarch64/aarch64.h (AARCH64_FL_FOR_ARCH9): Add FP16 feature
+ 	bit.
+ 
+ 2022-03-22  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104982
+ 	* config/i386/i386.md (*jcc_bt<mode>_mask): Extend the
+ 	following splitter to reversed condition.
+ 
+ 2022-03-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104989
+ 	* calls.cc (expand_call): Don't set ECF_NORETURN in flags after
+ 	sorry for passing too large argument, instead set sibcall_failure
+ 	for pass == 0, or a new normal_failure flag otherwise.  If
+ 	normal_failure is set, don't assert all stack has been deallocated
+ 	at the end and throw away the whole insn sequence.
+ 
+ 2022-03-22  Qian Jianhua  <qianjh@cn.fujitsu.com>
+ 
+ 	* print-tree.cc: Change array length
+ 
+ 2022-03-22  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/104978
+ 	* config/i386/sse.md
+ 	(avx512fp16_fmaddcsh_v8hf_mask1<round_expand_name):
+ 	Use avx512f_movsf_mask instead of vmovaps or vblend, and
+ 	force_reg before lowpart_subreg.
+ 	(avx512fp16_fcmaddcsh_v8hf_mask1<round_expand_name): Likewise.
+ 
+ 2022-03-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/105000
+ 	* common/config/i386/i386-common.cc
+ 	(OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET): Replace
+ 	OPTION_MASK_ISA2_AVX512F_UNSET with OPTION_MASK_ISA2_SSE_UNSET.
+ 
+ 2022-03-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104998
+ 	* common/config/i386/cpuinfo.h (get_available_features): Pass
+ 	0x19 to __cpuid for bit_AESKLE.  Enable FEATURE_AESKLE only if
+ 	bit_AESKLE is set.
+ 
+ 2022-03-21  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/104869
+ 	* rtl-ssa/accesses.h (clobber_group::prev_clobber): Declare.
+ 	(clobber_group::next_clobber): Likewise.
+ 	(def_lookup::prev_def): Rename to...
+ 	(def_lookup::last_def_of_prev_group): ...this.
+ 	(def_lookup::next_def): Rename to...
+ 	(def_lookup::first_def_of_next_group): ...this.
+ 	(def_lookup::matching_or_prev_def): Rename to...
+ 	(def_lookup::matching_set_or_last_def_of_prev_group): ...this.
+ 	(def_lookup::matching_or_next_def): Rename to...
+ 	(def_lookup::matching_set_or_first_def_of_next_group): ...this.
+ 	(def_lookup::prev_def): New function, taking the lookup insn as
+ 	argument.
+ 	(def_lookup::next_def): Likewise.
+ 	* rtl-ssa/member-fns.inl (def_lookup::prev_def): Rename to...
+ 	(def_lookup::last_def_of_prev_group): ...this.
+ 	(def_lookup::next_def): Rename to...
+ 	(def_lookup::first_def_of_next_group): ...this.
+ 	(def_lookup::matching_or_prev_def): Rename to...
+ 	(def_lookup::matching_set_or_last_def_of_prev_group): ...this.
+ 	(def_lookup::matching_or_next_def): Rename to...
+ 	(def_lookup::matching_set_or_first_def_of_next_group): ...this.
+ 	* rtl-ssa/movement.h (restrict_movement_for_dead_range): Update after
+ 	above renaming.
+ 	* rtl-ssa/accesses.cc (clobber_group::prev_clobber): New function.
+ 	(clobber_group::next_clobber): Likewise.
+ 	(def_lookup::prev_def): Likewise.
+ 	(def_lookup::next_def): Likewise.
+ 	(function_info::make_use_available): Pass the lookup insn to
+ 	def_lookup::prev_def and def_lookup::next_def.
+ 
+ 2022-03-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/invoke.texi: Document min-pagesize parameter.
+ 
+ 2022-03-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-loop-niter.cc (estimate_numbers_of_iterations): Dump
+ 	we are estimating niter of loop.
+ 
+ 2022-03-21  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_flag_table):
+ 	Update flag name and mask name.
+ 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Define
+ 	misc macro for vector extensions.
+ 	* config/riscv/riscv-opts.h (MASK_VECTOR_EEW_32): Rename to ...
+ 	(MASK_VECTOR_ELEN_32): ... this.
+ 	(MASK_VECTOR_EEW_64): Rename to ...
+ 	(MASK_VECTOR_ELEN_64): ... this.
+ 	(MASK_VECTOR_EEW_FP_32): Rename to ...
+ 	(MASK_VECTOR_ELEN_FP_32): ... this.
+ 	(MASK_VECTOR_EEW_FP_64): Rename to ...
+ 	(MASK_VECTOR_ELEN_FP_64): ... this.
+ 	(TARGET_VECTOR_ELEN_32): New.
+ 	(TARGET_VECTOR_ELEN_64): Ditto.
+ 	(TARGET_VECTOR_ELEN_FP_32): Ditto.
+ 	(TARGET_VECTOR_ELEN_FP_64): Ditto.
+ 	(TARGET_MIN_VLEN): Ditto.
+ 	* config/riscv/riscv.opt (riscv_vector_eew_flags): Rename to ...
+ 	(riscv_vector_elen_flags): ... this.
+ 
+ 2022-03-21  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/104977
+ 	* config/i386/sse.md
+ 	(avx512fp16_fma<complexopname>sh_v8hf<mask_scalarcz_name><round_scalarcz_name>):
+ 	Correct round operand for intel dialect.
+ 
+ 2022-03-19  Arthur Cohen  <arthur.cohen@embecosm.com>
+ 
+ 	* diagnostic.cc (diagnostic_cc_tests): Rename to...
+ 	(c_diagnostic_cc_tests): ...this.
+ 	* opt-problem.cc (opt_problem_cc_tests): Rename to...
+ 	(c_opt_problem_cc_tests): ...this.
+ 	* selftest-run-tests.cc (selftest::run_tests): No longer run
+ 	opt_problem_cc_tests or diagnostic_cc_tests.
+ 	* selftest.h (diagnostic_cc_tests): Remove declaration.
+ 	(opt_problem_cc_tests): Likewise.
+ 
+ 2022-03-19  Marc Nieper-Wißkirchen  <marc@nieper-wisskirchen.de>
+ 
+ 	PR jit/63854
+ 	* hash-traits.h (struct typed_const_free_remove): New.
+ 	(struct free_string_hash): New.
+ 	* pass_manager.h: Use free_string_hash.
+ 	* passes.cc (pass_manager::register_pass_name): Use free_string_hash.
+ 	(pass_manager::~pass_manager): Delete allocated m_name_to_pass_map.
+ 
+ 2022-03-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104971
+ 	* config/i386/i386-expand.cc
+ 	(ix86_expand_builtin) <case IX86_BUILTIN_READ_FLAGS>: If ignore,
+ 	don't push/pop anything and just return const0_rtx.
+ 
+ 2022-03-18  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/104961
+ 	* lra-assigns.cc (find_reload_regno_insns): Process reload pseudo clobber.
+ 
+ 2022-03-18  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree.h (IDENTIFIER_LENGTH): Add comment.
+ 
+ 2022-03-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/99578
+ 	PR middle-end/100680
+ 	PR tree-optimization/100834
+ 	* params.opt (--param=min-pagesize=): New parameter.
+ 	* pointer-query.cc
+ 	(compute_objsize_r) <case ARRAY_REF>: Formatting fix.
+ 	(compute_objsize_r) <case INTEGER_CST>: Use maximum object size instead
+ 	of zero for pointer constants equal or larger than min-pagesize.
+ 
+ 2022-03-18  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* gimplify.cc (gimplify_omp_for): Set location using 'input_location'.
+ 	Set gfor location only when dealing with a OMP_TASKLOOP.
+ 
+ 2022-03-18  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* gimplify.cc (gimplify_omp_for): Set taskloop location.
+ 
+ 2022-03-18  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104952
+ 	* omp-low.cc (lower_rec_input_clauses): Make sure GOMP_SIMT_XCHG_BFLY
+ 	is executed unconditionally.
+ 
+ 2022-03-18  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104974
+ 	* config/i386/i386.md (*movhi_internal): Set attr type from HI
+ 	to HF for alternative 12 under TARGET_AVX512FP16.
+ 
+ 2022-03-18  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	PR target/104963
+ 	* config/i386/i386.h (PTA_SAPPHIRERAPIDS): change it to base on ICX.
+ 	* doc/invoke.texi: Update documents for Intel sapphirerapids.
+ 
+ 2022-03-17  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/86722
+ 	PR tree-optimization/90356
+ 	* config/i386/i386.md (*movtf_internal): Don't guard
+ 	standard_sse_constant_p clause by optimize_function_for_size_p.
+ 	(*movdf_internal): Likewise.
+ 	(*movsf_internal): Likewise.
+ 
+ 2022-03-17  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/102943
+ 	* gimple-range-cache.cc (ranger_cache::range_from_dom): Find range via
+ 	dominators and apply intermediary outgoing edge ranges.
+ 
+ 2022-03-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104960
+ 	* passes.def: Add pass parameter to pass_sink_code, mark
+ 	last one to unsplit edges.
+ 	* tree-ssa-sink.cc (pass_sink_code::set_pass_param): New.
+ 	(pass_sink_code::execute): Always execute TODO_cleanup_cfg
+ 	when we need to unsplit edges.
+ 
+ 2022-03-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/103984
+ 	* gimplify.cc (gimplify_target_expr): Gimplify type sizes and
+ 	TARGET_EXPR_INITIAL into a temporary sequence, then push clobbers
+ 	and asan unpoisioning, then append the temporary sequence and
+ 	finally the TARGET_EXPR_CLEANUP clobbers.
+ 
+ 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/sse.md: Delete corrupt character/typo.
+ 
+ 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/94680
+ 	* config/i386/sse.md (sse2_movq128): New define_expand to
+ 	preserve previous named instruction.
+ 	(*sse2_movq128_<mode>): Renamed from sse2_movq128, and
+ 	generalized to VI8F_128 (both V2DI and V2DF).
+ 
+ 2022-03-16  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/104941
+ 	* tree-object-size.cc (size_for_offset): Make useless conversion
+ 	check lighter and assign result of fold_convert to OFFSET.
+ 
+ 2022-03-16  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104890
+ 	* config/i386/x86gprintrin.h: Also check _SOFT_FLOAT before
+ 	pushing target("general-regs-only").
+ 
+ 2022-03-16  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_ext_version_table):
+ 	Add version info for zk, zks and zkn.
+ 
+ 2022-03-16  LiaoShihua  <shihua@iscas.ac.cn>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_combine_info): New.
+ 	(riscv_subset_list::handle_combine_ext): Combine back into zk to
+ 	maintain the canonical order in isa strings.
+ 	(riscv_subset_list::parse): Ditto.
+ 	* config/riscv/riscv-subset.h (handle_combine_ext): New.
+ 
+ 2022-03-16  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102008
+ 	* passes.def: Move the added code sinking pass before the
+ 	preceeding phiopt pass.
+ 
+ 2022-03-16  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/96780
+ 	* doc/invoke.texi (C++ Dialect Options): Document
+ 	-ffold-simple-inlines.
+ 
+ 2022-03-16  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/104942
+ 	* tree-object-size.cc (alloc_object_size): Remove STRIP_NOPS.
+ 
+ 2022-03-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104910
+ 	* config/aarch64/aarch64.cc (aarch64_load_symref_appropriately): Copy
+ 	imm rtx.
+ 
+ 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* gimple-match-head.cc (single_use): Implement inline using a
+ 	single loop.
+ 
+ 2022-03-16  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* match.pd (X CMP X -> true): Test tree_expr_maybe_nan_p
+ 	instead of HONOR_NANS.
+ 	(X LTGT X -> false): Enable if X is not tree_expr_maybe_nan_p, as
+ 	this can't trap/signal.
+ 
+ 2022-03-16  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104946
+ 	* config/i386/i386-builtin.def (BDESC): Add
+ 	CODE_FOR_sse4_1_blendvpd for IX86_BUILTIN_BLENDVPD.
+ 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Don't fold
+ 	__builtin_ia32_blendvpd w/o sse4.2
+ 
+ 2022-03-15  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/104923
+ 	* config/rs6000/predicates.md (mma_disassemble_output_operand): Restrict
+ 	acceptable MEM addresses.
+ 
+ 2022-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/91229
+ 	* config/riscv/riscv.cc (riscv_pass_aggregate_in_fpr_pair_p,
+ 	riscv_pass_aggregate_in_fpr_and_gpr_p): Pass OPT_Wpsabi instead of 0
+ 	to warning calls.
+ 
+ 2022-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104890
+ 	* config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Use no-mmx,no-sse
+ 	instead of general-regs-only.
+ 
+ 2022-03-15  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Marc Glisse  <marc.glisse@inria.fr>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101895
+ 	* match.pd (vec_same_elem_p): Handle CONSTRUCTOR_EXPR def.
+ 	(plus (vec_perm (mult ...) ...) ...): New reordering simplification.
+ 
+ 2022-03-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104814
+ 	* ifcvt.cc (find_if_case_1, find_if_case_2): Punt if test_bb doesn't
+ 	end with onlyjump_p.  Assume BB_END (test_bb) is always non-NULL.
+ 
+ 2022-03-15  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/104436
+ 	* gimple-ssa-warn-access.cc (pass_waccess::check_dangling_stores):
+ 	Check for warning suppression.  Avoid by-value arguments transformed
+ 	into by-transparent-reference.
+ 
+ 2022-03-14  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (peephole2 xorl;movb -> movzbl): Disable
+ 	transformation when *zero_extend<mode>si2 is not available.
+ 
+ 2022-03-14  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	* config/mips/mips.h (SUBTARGET_SHADOW_OFFSET): Define.
+ 	* config/mips/mips.cc (mips_option_override): Make
+ 	-fsanitize=address imply -fasynchronous-unwind-tables.  This is
+ 	needed by libasan for stack backtrace on MIPS.
+ 	(mips_asan_shadow_offset): Return SUBTARGET_SHADOW_OFFSET.
+ 
+ 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104778
+ 	* lra.cc (lra_substitute_pseudo): For debug_p mode, simplify
+ 	SUBREG, ZERO_EXTEND, SIGN_EXTEND, FLOAT or UNSIGNED_FLOAT if recursive
+ 	call simplified the first operand into VOIDmode constant.
+ 
+ 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/102586
+ 	* doc/extend.texi (__builtin_clear_padding): Clearify that for C++
+ 	argument type should be pointer to trivially-copyable type unless it
+ 	is address of a variable or parameter.
+ 
+ 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/99754
+ 	* config/i386/emmintrin.h (_mm_loadu_si32): Put loaded value into
+ 	first 	rather than last element of the vector, use __m32_u to do
+ 	a really unaligned load, use just 0 instead of (int)0.
+ 	(_mm_loadu_si16): Put loaded value into first rather than last
+ 	element of the vector, use __m16_u to do a really unaligned load,
+ 	use just 0 instead of (short)0.
+ 
+ 2022-03-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/104899
+ 	* config/bfin/bfin.cc (bfin_handle_longcall_attribute): Fix a typo
+ 	in diagnostic message - cannott -> cannot.  Use %< and %> around
+ 	names of attribute.  Avoid too long line.
+ 	* range-op.cc (operator_logical_and::op1_range): Fix up a typo
+ 	in comment - cannott -> cannot.  Use 2 spaces after . instead of one.
+ 
+ 2022-03-14  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104666
+ 	* config/i386/i386-expand.cc
+ 	(ix86_check_builtin_isa_match):	New func.
+ 	(ix86_expand_builtin): Move code to
+ 	ix86_check_builtin_isa_match and call it.
+ 	* config/i386/i386-protos.h
+ 	(ix86_check_builtin_isa_match): Declare.
+ 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Don't fold
+ 	builtin into gimple when isa mismatches.
+ 
+ 2022-03-13  Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* doc/invoke.texi: Fix typos.
+ 	* doc/tm.texi.in: Remove duplicated word.
+ 	* doc/tm.texi: Regenerate.
+ 
+ 2022-03-12  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/104829
+ 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Don't output
+ 	"ppc" and "ppc64" based on rs6000_cpu.
+ 
+ 2022-03-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100280
+ 	PR middle-end/104892
+ 	* omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
+ 	Remove special handling of 'GOMP_MAP_FORCE_TOFROM'.
+ 
+ 2022-03-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100280
+ 	PR middle-end/104086
+ 	* omp-oacc-kernels-decompose.cc (omp_oacc_kernels_decompose_1):
+ 	Mark variables used in 'present' clauses as addressable.
+ 	* omp-low.cc (scan_sharing_clauses) <OMP_CLAUSE_MAP>: Gracefully
+ 	handle duplicate 'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE'.
+ 
+ 2022-03-12  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR other/65095
+ 	* tree-core.h (user_omp_claus_code_name): Declare function.
+ 	* tree.cc (user_omp_clause_code_name): New function.
+ 
+ 2022-03-12  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/98420
+ 	* match.pd (minus @0 @0): Additional checks for -fno-rounding-math
+ 	(the defaut) or -fno-signed-zeros.
+ 
+ 2022-03-12   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/104868
+ 	* config/rs6000/vsx.md (extendditi2): Use a 'b' constraint when
+ 	moving from a GPR register to an Altivec register.
+ 
+ 2022-03-11  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/98335
+ 	* config/i386/i386.md (peephole2): Eliminate redundant insv.
+ 	Combine movl followed by movb.  Transform xorl followed by
+ 	a suitable movb or movw into the equivalent movz[bw]l.
+ 
+ 2022-03-11  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/98335
+ 	* builtins.cc (get_object_alignment_2): Export.
+ 	* builtins.h (get_object_alignment_2): Likewise.
+ 	* tree-ssa-alias.cc (ao_ref_alignment): New.
+ 	* tree-ssa-alias.h (ao_ref_alignment): Declare.
+ 	* tree-ssa-dse.cc (compute_trims): Improve logic deciding whether
+ 	to align head/tail, writing more bytes but using fewer store insns.
+ 
+ 2022-03-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104880
+ 	* tree-ssa.cc (execute_update_address_taken): Remember if we
+ 	optimistically made something not addressable and
+ 	prepare to undo it.
+ 
+ 2022-03-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/104762
+ 	* config/i386/i386.cc (ix86_builtin_vectorization_cost): Do not
+ 	cost the first lane of SSE pieces as inserts for vec_construct.
+ 
+ 2022-03-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR c++/84964
+ 	* calls.cc (expand_call): Ignore stack adjustments after sorry.
+ 
+ 2022-03-10  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/103074
+ 	* lra-constraints.cc (split_reg): Set up
+ 	check_and_force_assignment_correctness_p when splitting hard
+ 	register live range.
+ 
+ 2022-03-10  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR ipa/104813
+ 	* ipa-cp.cc (create_specialized_node): Move removal of
+ 	self-recursive calls from callers vector before refrence
+ 	adjustments.
+ 
+ 2022-03-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102943
+ 	* gimple-range-cache.cc (sbr_sparse_bitmap::bitvec):
+ 	Make a bitmap_head.
+ 	(sbr_sparse_bitmap::sbr_sparse_bitmap): Adjust and switch
+ 	to tree view.
+ 	(sbr_sparse_bitmap::set_bb_range): Adjust.
+ 	(sbr_sparse_bitmap::get_bb_range): Likewise.
+ 
+ 2022-03-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/102943
+ 	* tree-ssa-dom.cc (back_propagate_equivalences): Only
+ 	populate the dominance bitmap if fast queries are not
+ 	available.  Use a tree view bitmap.
+ 	(record_temporary_equivalences): Cache the dominance bitmap
+ 	across all equivalences on the edge.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104840
+ 	* config/nvptx/nvptx.md (define_attr "predicable"): Use no,yes instead
+ 	of false,true.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104783
+ 	* config/nvptx/nvptx.cc (nvptx_init_unisimt_predicate)
+ 	(nvptx_output_unisimt_switch): Handle unisimt_outside_simt_predicate.
+ 	(nvptx_get_unisimt_outside_simt_predicate): New function.
+ 	(predicate_insn): New function, factored out of ...
+ 	(nvptx_reorg_uniform_simt): ... here.  Predicate all emitted insns.
+ 	* config/nvptx/nvptx.h (struct machine_function): Add
+ 	unisimt_outside_simt_predicate field.
+ 	* config/nvptx/nvptx.md (define_insn "nvptx_warpsync")
+ 	(define_insn "nvptx_uniform_warp_check"): Make predicable.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_unisimt_handle_set): Handle unused
+ 	result.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104815
+ 	* config/nvptx/nvptx.cc (nvptx_print_operand): Handle 'x' operand
+ 	modifier.
+ 	* config/nvptx/nvptx.md: Use %x0 destination operand in atom insns.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md (define_insn "atomic_fetch_<logic><mode>"):
+ 	Emit atom.and.b64 instead of atom.b64.and.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Move mptx=3.1 ...
+ 	(MULTILIB_OPTIONS): ... here.
+ 
+ 2022-03-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104758
+ 	* config/nvptx/nvptx.opt (misa): Set default to sm_30.
+ 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Remove misa=sm_30.
+ 
+ 2022-03-10  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/90115
+ 	PR middle-end/102330
+ 	PR middle-end/104774
+ 	* omp-low.cc (oacc_privatization_candidate_p)
+ 	(oacc_privatization_scan_clause_chain)
+ 	(oacc_privatization_scan_decl_chain, lower_oacc_private_marker):
+ 	Analyze 'lookup_decl'-translated DECL.
+ 
+ 2022-03-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/99708
+ 	* config/rs6000/rs6000.h (enum rs6000_builtin_type_index): Remove
+ 	RS6000_BTI_ptr_ieee128_float and RS6000_BTI_ptr_ibm128_float.
+ 	(ptr_ieee128_float_type_node, ptr_ibm128_float_type_node): Remove.
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_type_string): Return
+ 	"**NULL**" if type_node is NULL first.  Handle
+ 	ieee128_float_type_node.
+ 	(rs6000_init_builtins): Don't initialize ptr_ieee128_float_type_node
+ 	and ptr_ibm128_float_type_node.  Set ibm128_float_type_node and
+ 	ieee128_float_type_node to NULL rather than long_double_type_node if
+ 	they aren't supported.  Do support __ibm128 even if
+ 	!TARGET_FLOAT128_TYPE when long double is double double.
+ 	(rs6000_expand_builtin): Error if bif_is_ibm128 and
+ 	!ibm128_float_type_node.  Remap RS6000_BIF_{,UN}PACK_IF to
+ 	RS6000_BIF_{,UN}PACK_TF much earlier and only use bif_is_ibm128 check
+ 	for it.
+ 	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Define
+ 	__SIZEOF_FLOAT128__ here and only iff __float128 macro is defined.
+ 	(rs6000_cpu_cpp_builtins): Don't define __SIZEOF_FLOAT128__ here.
+ 	Define __SIZEOF_IBM128__=16 if ieee128_float_type_node is non-NULL.
+ 	Formatting fix.
+ 	* config/rs6000/rs6000-gen-builtins.cc: Document ibm128 attribute.
+ 	(struct attrinfo): Add isibm128 member.
+ 	(TYPE_MAP_SIZE): Remove.
+ 	(type_map): Use [] instead of [TYPE_MAP_SIZE].  For "if" use
+ 	ibm128_float_type_node only if it is non-NULL, otherwise fall back
+ 	to long_double_type_node.  Remove "pif" entry.
+ 	(parse_bif_attrs): Handle ibm128 attribute and print it for debugging.
+ 	(write_decls): Output bif_ibm128_bit and bif_is_ibm128.
+ 	(write_type_node): Use sizeof type_map / sizeof type_map[0]
+ 	instead of TYPE_MAP_SIZE.
+ 	(write_bif_static_init): Handle isibm128.
+ 	* config/rs6000/rs6000-builtins.def: Document ibm128 attribute.
+ 	(__builtin_pack_ibm128, __builtin_unpack_ibm128): Add ibm128
+ 	attribute.
+ 
+ 2022-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfgexpand.cc (expand_gimple_asm): Special-case MEM_REF
+ 	with non-decl operand, avoiding a copy.
+ 
+ 2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104781
+ 	* config/i386/i386.h (LIBGCC2_UNWIND_ATTRIBUTE): Define for ia32.
+ 
+ 2022-03-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104786
+ 	* cfgexpand.cc (expand_asm_stmt): Do not generate a copy
+ 	for VLAs without an upper size bound.
+ 
+ 2022-03-09  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR tree-optimization/104851
+ 	* optabs-query.cc (supports_vec_convert_optab_p): Fix off-by-one
+ 	error.
+ 
+ 2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104711
+ 	* doc/invoke.texi (-Wextra): Document that -Wshift-negative-value
+ 	is enabled by it only for C++11 to C++17 rather than for C++03 or
+ 	later.
+ 	(-Wshift-negative-value): Similarly (except here we stated
+ 	that it is enabled for C++11 or later).
+ 
+ 2022-03-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104839
+ 	* simplify-rtx.cc (simplify_unary_operation_1) <case SIGN_EXTEND>:
+ 	Use SRP_SIGNED instead of incorrect 1 in SUBREG_PROMOTED_SET.
+ 	(simplify_unary_operation_1) <case ZERO_EXTEND>: Use SRP_UNSIGNED
+ 	instead of incorrect 0 in SUBREG_PROMOTED_SET.
+ 
+ 2022-03-09  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR target/104842
+ 	* config/mips/mips.h (LUI_OPERAND): Cast the input to an unsigned
+ 	value before adding an offset.
+ 
+ 2022-03-08  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/arm-builtins.cc
+ 	(arm_binop_none_none_unone_qualifiers): Delete.
+ 	(BINOP_NONE_NONE_UNONE_QUALIFIERS): Delete.
+ 
+ 2022-03-08  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR translation/104552
+ 	* config/host-darwin.cc (darwin_gt_pch_get_address): Amend
+ 	the PCH out of memory error message punctuation and wording.
+ 
+ 2022-03-08  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR rtl-optimization/104777
+ 	* rtl.cc (classify_insn): For ASM_OPERANDS, return JUMP_INSN only if
+ 	ASM_OPERANDS_LABEL_VEC has at least one element.
+ 
+ 2022-03-08  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104781
+ 	* config/i386/i386.cc (ix86_expand_epilogue): Sorry if there is
+ 	stack realignment or regparm nested function with EH return.
+ 
+ 2022-03-08  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR target/104790
+ 	* config/arm/arm.h (MVE_STN_LDW_MODE): New MACRO.
+ 	* config/arm/arm.cc (mve_vector_mem_operand): Relax constraint on base
+ 	register for non widening loads or narrowing stores.
+ 
+ 2022-03-08  Eric Gallager  <egallager@gcc.gnu.org>
+ 
+ 	PR translation/104552
+ 	* params.opt: Fix typo.
+ 
+ 2022-03-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/84201
+ 	* params.opt (-param=vect-induction-float): Add.
+ 	* doc/invoke.texi (vect-induction-float): Document.
+ 	* tree-vect-loop.cc (vectorizable_induction): Honor
+ 	param_vect_induction_float.
+ 
+ 2022-03-08  Martin Jambor  <mjambor@suse.cz>
+ 
+ 	PR translation/104552
+ 	* params.opt (ipa-cp-recursive-freq-factor): Remove repeated word
+ 	"that" in the description.
+ 
+ 2022-03-08  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104825
+ 	* tree-ssa-sccvn.cc (visit_reference_op_call): Properly
+ 	guard modref get_ao_ref on a pointer typed argument.
+ 
+ 2022-03-08  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md (*vec_dupv4si): Disable memory operand
+ 	for !TARGET_INTER_UNIT_MOVES_TO_VEC when prefer_for_speed.
+ 
+ 2022-03-07  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/invoke.texi (C++ Modules): Remove anachronism.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR middle-end/104381
+ 	* opts.cc (finish_options): If debug info is disabled
+ 	(debug_info_level) and -fvar-tracking is unset, disable it.
+ 
+ 2022-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssa-propagate.cc: Fix up duplicated word issue in a comment.
+ 	* config/riscv/riscv.cc: Likewise.
+ 	* config/darwin.h: Likewise.
+ 	* config/i386/i386.cc: Likewise.
+ 	* config/aarch64/thunderx3t110.md: Likewise.
+ 	* config/aarch64/fractional-cost.h: Likewise.
+ 	* config/vax/vax.cc: Likewise.
+ 	* config/rs6000/pcrel-opt.md: Likewise.
+ 	* config/rs6000/predicates.md: Likewise.
+ 	* ctfc.h: Likewise.
+ 	* tree-ssa-uninit.cc: Likewise.
+ 	* value-relation.h: Likewise.
+ 	* gimple-range-gori.cc: Likewise.
+ 	* ipa-polymorphic-call.cc: Likewise.
+ 	* pointer-query.cc: Likewise.
+ 	* ipa-sra.cc: Likewise.
+ 	* internal-fn.cc: Likewise.
+ 	* varasm.cc: Likewise.
+ 	* gimple-ssa-warn-access.cc: Likewise.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104794
+ 	* config/arm/arm.cc (arm_option_override_internal): Add missing
+ 	space.
+ 
+ 2022-03-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104782
+ 	* tree-vect-slp.cc (vectorize_slp_instance_root_stmt):
+ 	Re-instantiate r10-5979 fix, add comment.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104797
+ 	* config/msp430/msp430.cc (msp430_expand_delay_cycles): Remove
+ 	parenthesis from built-in name.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104794
+ 	* config/arm/arm.cc (arm_option_override_internal): Fix quoting
+ 	of options in error messages.
+ 	(arm_option_reconfigure_globals): Likewise.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/104794
+ 	* config/arm/arm-builtins.cc (arm_expand_builtin): Reuse error
+ 	message.  Fix ARM_BUILTIN_WRORHI and ARM_BUILTIN_WRORH that can
+ 	have only range [0,32].
+ 
+ 2022-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104775
+ 	* config/s390/s390.md (*cmp_and_trap_unsigned_int<mode>): Use
+ 	S constraint instead of T in the last alternative.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	* plugin.cc (default_plugin_dir_name): Remove <dir> from error
+ 	message.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR translation/90148
+ 	* config/rs6000/rs6000.cc (rs6000_linux64_override_options): Put
+ 	quote to a proper place.
+ 	* plugin.cc (default_plugin_dir_name): Likewise.
+ 
+ 2022-03-07  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR target/99297
+ 	* config/rx/rx.cc (rx_expand_builtin_mvtc): Fix translation
+ 	string.
+ 
+ 2022-03-07  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104779
+ 	* config/i386/sse.md (avx512dq_mul<mode>3<mask_name>): New
+ 	define_expand pattern.  Rename define_insn to ...
+ 	(*avx512dq_mul<mode>3<mask_name>): ... this.
+ 	(<code><mode>3_mask): New any_logic define_expand pattern.
+ 	(<mask_codefor><code><mode>3<mask_name>): Rename to ...
+ 	(*<code><mode>3<mask_name>): ... this.
+ 
+ 2022-03-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc (pass_waccess::use_after_inval_p): Remove
+ 	visited bitmap and its use.  Also punt on EDGE_ABNORMAL edges.
+ 
+ 2022-03-05  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR testsuite/104732
+ 	* config/i386/i386.md (SWIM1248x): Renamed from SWIM1248s.
+ 	Include DI mode unconditionally.
+ 	(*anddi3_doubleword): Remove && TARGET_STV && TARGET_SSE2 condition,
+ 	i.e. always split on !TARGET_64BIT.
+ 	(*<any_or>di3_doubleword): Likewise.
+ 	(*one_cmpldi2_doubleword): Likewise.
+ 	(and<mode>3 expander): Update to use SWIM1248x from SWIM1248s.
+ 	(<any_or><mode>3 expander): Likewise.
+ 	(one_cmpl<mode>2 expander): Likewise.
+ 
+ 2022-03-05   Michael Meissner  <meissner@linux.ibm.com>
+ 
+ 	PR target/104698
+ 	* config/rs6000/vsx.md (UNSPEC_MTVSRD_DITI_W1): Delete.
+ 	(mtvsrdd_diti_w1): Delete.
+ 	(extendditi2): Convert from define_expand to
+ 	define_insn_and_split.  Replace with code to deal with both GPR
+ 	registers and with altivec registers.
+ 
+ 2022-03-04  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Restructure a
+ 	bit.  Handle most older CPUs.
+ 
+ 2022-03-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/darwin.cc (darwin_fold_builtin): Make fcode an int to
+ 	avoid a mismatch with DECL_MD_FUNCTION_CODE().
+ 
+ 2022-03-04  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	PR target/104117
+ 	* config/rs6000/darwin.md (@machopic_high_<mode>): New.
+ 	(@machopic_low_<mode>): New.
+ 	* config/rs6000/predicates.md (macho_pic_address): New.
+ 	* config/rs6000/rs6000.cc (rs6000_legitimize_address): Do not
+ 	apply the TLS processing to Darwin.
+ 	* lra-constraints.cc (process_address_1): Revert the changes
+ 	in r12-7209.
+ 
+ 2022-03-04  Peter Bergner  <bergner@linux.ibm.com>
+ 
+ 	PR target/87496
+ 	PR target/104208
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Make the
+ 	ISA 2.06 requirement for -mabi=ieeelongdouble conditional on
+ 	-mlong-double-128.
+ 	Move the -mabi=ieeelongdouble and -mabi=ibmlongdouble error checking
+ 	from here...
+ 	* common/config/rs6000/rs6000-common.cc (rs6000_handle_option):
+ 	... to here.
+ 
+ 2022-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104529
+ 	* gimplify.cc (gimplify_init_constructor): Clear TREE_READONLY
+ 	on automatic objects which will be runtime initialized.
+ 
+ 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100280
+ 	PR middle-end/104132
+ 	PR middle-end/104133
+ 	* omp-low.cc (task_shared_vars): Rename to
+ 	'make_addressable_vars'.  Adjust all users.
+ 	(scan_sharing_clauses) <OMP_CLAUSE_MAP> Use it for
+ 	'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE' DECLs, too.
+ 
+ 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100280
+ 	* tree.h (OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE): New.
+ 	* tree-core.h: Document it.
+ 	* omp-low.cc (scan_sharing_clauses) <OMP_CLAUSE_MAP>: Handle
+ 	'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE'.
+ 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
+ 	Set 'OMP_CLAUSE_MAP_DECL_MAKE_ADDRESSABLE' instead of
+ 	'TREE_ADDRESSABLE'.
+ 
+ 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100280
+ 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
+ 	Add diagnostic: "note: OpenACC 'kernels' decomposition: variable
+ 	'[...]' declared in block made addressable".
+ 
+ 2022-03-04  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100400
+ 	PR middle-end/103836
+ 	PR middle-end/104061
+ 	* omp-oacc-kernels-decompose.cc (decompose_kernels_region_body):
+ 	Catch 'GIMPLE_DEBUG'.
+ 
+ 2022-03-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104627
+ 	* tree.cc (warn_deprecated_use): For types prefer to use node
+ 	and only use TYPE_MAIN_VARIANT (node) if TYPE_STUB_DECL (node) is
+ 	NULL.
+ 
+ 2022-03-04  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104704
+ 	* config/i386/i386.cc (ix86_gen_scratch_sse_rtx): Always return
+ 	a pseudo register.
+ 
+ 2022-03-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/104761
+ 	* gimple-ssa-warn-access.cc (pass_waccess::execute): Call
+ 	mark_dfs_back_edges.
+ 
+ 2022-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Use linker plug-in by default.
+ 	* configure: Regenerate.
+ 
+ 2022-03-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Now ld.mold support LTO plugin API, use it.
+ 	* configure: Regenerate.
+ 
+ 2022-03-03  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Add mptx=3.1.
+ 
+ 2022-03-03  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104758
+ 	* config/nvptx/t-nvptx (MULTILIB_EXTRA_OPTS): Add misa=sm_30.
+ 
+ 2022-03-03  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.h (ASM_SPEC): Add %{misa=sm_30:--no-verify}.
+ 
+ 2022-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104757
+ 	* gimplify.cc (gimplify_omp_loop): Call gimplify_expr rather than
+ 	gimplify_omp_for.
+ 	(gimplify_expr) <case OMP_SIMD>: Temporarily disable
+ 	gimplify_ctxp->into_ssa around call to gimplify_omp_for.
+ 
+ 2022-03-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104558
+ 	* calls.cc (store_one_arg): When not calling emit_push_insn
+ 	because size_rtx is const0_rtx, call at least anti_adjust_stack
+ 	on arg->locate.alignment_pad if !argblock and the alignment might
+ 	be non-zero.
+ 
+ 2022-03-02  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* lra-constraints.cc (undo_optional_reloads): Recognize and
+ 	drop insns of multi-word move sequences, tolerate removal
+ 	iteration on an already-removed clobber, and refuse to
+ 	substitute original pseudos into clobbers.
+ 
+ 2022-03-02  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR middle-end/102276
+ 	* common.opt (-Wtrivial-auto-var-init): New option.
+ 	* doc/invoke.texi (-Wtrivial-auto-var-init): Document new option.
+ 	(-ftrivial-auto-var-init): Update option;
+ 	* gimplify.cc (emit_warn_switch_unreachable): New function.
+ 	(warn_switch_unreachable_r): Rename to ...
+ 	(warn_switch_unreachable_and_auto_init_r): This.
+ 	(maybe_warn_switch_unreachable): Rename to ...
+ 	(maybe_warn_switch_unreachable_and_auto_init): This.
+ 	(gimplify_switch_expr): Update calls to renamed function.
+ 
+ 2022-03-02  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/104686
+ 	* ira-color.cc (object_conflicts_with_allocno_p): New function
+ 	using a bitvector test instead of iterating when possible.
+ 	(allocnos_conflict_p): Choose the best allocno to iterate over
+ 	object conflicts.
+ 	(update_conflict_hard_regno_costs): Do allocnos_conflict_p test
+ 	last.
+ 
+ 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* cfg.cc (dump_edge_info): Dump goto_locus if present.
+ 
+ 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104589
+ 	* cfgrtl.cc (fixup_reorder_chain): Use loc_equal instead of direct
+ 	INSN_LOCATION comparison with goto_locus.
+ 
+ 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree-ssa-strlen.cc (strlen_pass::handle_assign,
+ 	strlen_pass::before_dom_children): Comment spelling fixes.
+ 
+ 2022-03-02  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* ipa-modref-tree.cc (modref_access_node::contains,
+ 	modref_access_node::closer_pair_p, modref_access_node::insert,
+ 	modref_access_node::insert_kill): Comment spelling fixes.
+ 	* ipa-modref.cc: Likewise.
+ 	(modref_summary::finalize, ignore_nondeterminism_p,
+ 	class modref_access_analysis,
+ 	modref_access_analysis::set_side_effects,
+ 	modref_access_analysis::set_nondeterministic,
+ 	modref_access_analysis::record_global_memory_load,
+ 	modref_access_analysis::propagate, modref_access_analysis::analyze,
+ 	struct escape_point, class modref_lattice, modref_lattice::merge,
+ 	modref_lattice::merge_deref, class modref_eaf_analysis,
+ 	modref_eaf_analysis::merge_call_lhs_flags,
+ 	modref_eaf_analysis::analyze_ssa_name, modref_eaf_analysis::propagate,
+ 	modref_eaf_analysis::record_escape_points, remap_kills,
+ 	update_escape_summary, remove_useless_summaries,
+ 	ipa_merge_modref_summary_after_inlining, pass_ipa_modref::execute):
+ 	Likewise.
+ 	* ipa-modref.h (struct modref_summary, interposable_eaf_flags):
+ 	Likewise.
+ 	* ipa-modref-tree.h (enum modref_special_parms,
+ 	struct modref_access_node): Likewise.
+ 
+ 2022-03-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104715
+ 	* gimple-ssa-warn-access.cc (pass_waccess::check_pointer_uses): Don't
+ 	unnecessarily test if ptr is a SSA_NAME, it has to be.  Only push lhs
+ 	of a call if gimple_call_return_arg is equal to ptr, not just when it
+ 	is non-NULL.
+ 
+ 2022-03-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc (warn_string_no_nul,
+ 	maybe_warn_nonstring_arg, fndecl_alloc_p, new_delete_mismatch_p,
+ 	matching_alloc_calls_p, maybe_warn_alloc_args_overflow,
+ 	pass_waccess::check_alloca, pass_waccess::check_strcat,
+ 	memmodel_to_uhwi, fntype_argno_type,
+ 	pass_waccess::maybe_check_access_sizes,
+ 	pass_waccess::check_call_access,
+ 	pass_waccess::maybe_check_dealloc_call, pass_waccess::check_stmt):
+ 	Comment spelling fixes.
+ 
+ 2022-03-01  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104716
+ 	* tree-loop-distribution.cc (find_seed_stmts_for_distribution):
+ 	Check if we can copy the loop.
+ 
+ 2022-03-01  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR middle-end/104721
+ 	* cfgexpand.cc (expand_gimple_basic_block): Clear
+ 	currently_expanding_gimple_stmt when returning inside the loop.
+ 
+ 2022-03-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/104533
+ 	* multiple_target.cc (get_attr_len): Move to tree.c.
+ 	(expand_target_clones): Remove single value checking.
+ 	* tree.cc (get_target_clone_attr_len): New fn.
+ 	* tree.h (get_target_clone_attr_len): Likewise.
+ 
+ 2022-03-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR gcov-profile/104677
+ 	* doc/invoke.texi: Document more .gcda file name generation.
+ 
+ 2022-03-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/102429
+ 	* config/nvptx/nvptx.cc (nvptx_gen_shuffle): Handle DCmode and CDImode.
+ 	* config/nvptx/nvptx.md
+ 	(define_predicate "nvptx_register_or_complex_di_df_register_operand"):
+ 	New predicate.
+ 	(define_expand "omp_simt_xchg_bfly", define_expand "omp_simt_xchg_idx"):
+ 	Use nvptx_register_or_complex_di_df_register_operand.
+ 
+ 2022-03-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config.gcc (nvptx*-*-*): Add nvptx/nvptx-gen.opt to extra_options.
+ 	* config/nvptx/gen-copyright.sh: New file.
+ 	* config/nvptx/gen-h.sh: New file.
+ 	* config/nvptx/gen-opt.sh: New file.
+ 	* config/nvptx/nvptx.h (TARGET_SM35, TARGET_SM53, TARGET_SM70)
+ 	(TARGET_SM75, TARGET_SM80): Move ...
+ 	* config/nvptx/nvptx-gen.h: ... here.  New file, generate.
+ 	* config/nvptx/nvptx.opt (Enum ptx_isa): Move ...
+ 	* config/nvptx/nvptx-gen.opt: ... here.  New file, generate.
+ 	* config/nvptx/t-nvptx ($(srcdir)/config/nvptx/nvptx-gen.h)
+ 	($(srcdir)/config/nvptx/nvptx-gen.opt): New make target.
+ 
+ 2022-03-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/gen-omp-device-properties.sh: New file.
+ 	* config/nvptx/t-omp-device: Use gen-omp-device-properties.sh.
+ 
+ 2022-03-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx-sm.def: New file.
+ 	* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Use nvptx-sm.def.
+ 	* config/nvptx/nvptx-opts.h (enum ptx_isa): Same.
+ 	* config/nvptx/nvptx.cc (sm_version_to_string)
+ 	(nvptx_omp_device_kind_arch_isa): Same.
+ 
+ 2022-03-01  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	PR rtl-optimization/104154
+ 	* config/arc/arc.cc (gen_compare_reg):  Return the CC-mode
+ 	comparison ifcvt passed us.
+ 
+ 2022-03-01  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/104664
+ 	* config/i386/i386-expand.cc (ix86_expand_vector_init_duplicate):
+ 	Use vec_setv8hf_0 for HF to V8HFmode move instead of subreg.
+ 
+ 2022-02-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/91384
+ 	* config/i386/i386.md (peephole2): Eliminate final testl insn
+ 	from the sequence *movsi_internal, *negsi_1, *cmpsi_ccno_1 by
+ 	transforming using *negsi_2 for the negation.
+ 
+ 2022-02-28  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR middle-end/80270
+ 	* expmed.cc (extract_integral_bit_field): If OP0 is a hard
+ 	register, copy it to a pseudo before calling simplify_gen_subreg.
+ 
+ 2022-02-28  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/104637
+ 	* lra-assigns.cc (lra_split_hard_reg_for): Split hard regs as many
+ 	as possible on one subpass.
+ 
+ 2022-02-28  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR middle-end/104550
+ 	* gimple-fold.cc (clear_padding_flush): Suppress warnings for new
+ 	created uses.
+ 
+ 2022-02-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR ipa/104648
+ 	* main.cc (main): Use flag_checking instead of CHECKING_P
+ 	and run toplev::finalize only if there is not error seen.
+ 
+ 2022-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-pre.cc (compute_avail): Revert part of last change.
+ 
+ 2022-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104700
+ 	* tree-ssa-pre.cc (get_or_alloc_expr_for): Remove and inline
+ 	into ...
+ 	(find_or_generate_expression): ... here, simplifying code.
+ 
+ 2022-02-28  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add
+ 	PTX_VERSION_default.
+ 	* config/nvptx/nvptx.cc (handle_ptx_version_option): Handle
+ 	PTX_VERSION_default.
+ 	* config/nvptx/nvptx.opt: Add EnumValue "_" / PTX_VERSION_default.
+ 
+ 2022-02-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR rtl-optimization/104686
+ 	* ira-int.h (minmax_set_iter_cond): Use ctz_hwi to elide loop
+ 	skipping bits that are zero.
+ 	(ira_object_conflict_iter_cond): Likewise.
+ 
+ 2022-02-28  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/avx512fintrin.h (_MM_TERNLOG_ENUM): New enum.
+ 	(_mm512_ternarylogic_epi64): Truncate imm to unsigned
+ 	char to avoid error when using ~enum as parameter.
+ 	(_mm512_mask_ternarylogic_epi64): Likewise.
+ 	(_mm512_maskz_ternarylogic_epi64): Likewise.
+ 	(_mm512_ternarylogic_epi32): Likewise.
+ 	(_mm512_mask_ternarylogic_epi32): Likewise.
+ 	(_mm512_maskz_ternarylogic_epi32): Likewise.
+ 	* config/i386/avx512vlintrin.h (_mm256_ternarylogic_epi64):
+ 	Adjust imm param type to unsigned char.
+ 	(_mm256_mask_ternarylogic_epi64): Likewise.
+ 	(_mm256_maskz_ternarylogic_epi64): Likewise.
+ 	(_mm256_ternarylogic_epi32): Likewise.
+ 	(_mm256_mask_ternarylogic_epi32): Likewise.
+ 	(_mm256_maskz_ternarylogic_epi32): Likewise.
+ 	(_mm_ternarylogic_epi64): Likewise.
+ 	(_mm_mask_ternarylogic_epi64): Likewise.
+ 	(_mm_maskz_ternarylogic_epi64): Likewise.
+ 	(_mm_ternarylogic_epi32): Likewise.
+ 	(_mm_mask_ternarylogic_epi32): Likewise.
+ 	(_mm_maskz_ternarylogic_epi32): Likewise.
+ 
+ 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 	    Marc Glisse  <marc.glisse@inria.fr>
+ 
+ 	PR tree-optimization/104675
+ 	* match.pd (t * 2U / 2 -> t & (~0 / 2), t / 2U * 2 -> t & ~1):
+ 	Restrict simplifications to INTEGRAL_TYPE_P.
+ 
+ 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104681
+ 	* config/rs6000/vector.md (movmisalign<mode>): Use rs6000_emit_move.
+ 
+ 2022-02-25  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.cc (gen_compare_reg): Return NULL_RTX if the
+ 	comparison is not valid.
+ 	* config/arc/arc.md (movsicc): Fail if comparison is not valid.
+ 	(movdicc): Likewise.
+ 	(movsfcc): Likewise.
+ 	(movdfcc): Likewise.
+ 
+ 2022-02-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103037
+ 	* tree-ssa-sccvn.h (alloc_vn_nary_op_noinit): Declare.
+ 	(vn_nary_length_from_stmt): Likewise.
+ 	(init_vn_nary_op_from_stmt): Likewise.
+ 	(vn_nary_op_compute_hash): Likewise.
+ 	* tree-ssa-sccvn.cc (alloc_vn_nary_op_noinit): Export.
+ 	(vn_nary_length_from_stmt): Likewise.
+ 	(init_vn_nary_op_from_stmt): Likewise.
+ 	(vn_nary_op_compute_hash): Likewise.
+ 	* tree-ssa-pre.cc (pre_expr_obstack): New obstack.
+ 	(get_or_alloc_expr_for_nary): Pass in the value-id to use,
+ 	(re-)compute the hash value and if the expression is not
+ 	found allocate it from pre_expr_obstack.
+ 	(phi_translate_1): Do not insert the NARY found in the
+ 	VN tables but build a PRE expression from the valueized
+ 	NARY with the value-id we eventually found.
+ 	(find_or_generate_expression): Assert we have an entry
+ 	for constant values.
+ 	(compute_avail): Insert not valueized expressions into
+ 	EXP_GEN using the value-id from the VN tables.
+ 	(init_pre): Allocate pre_expr_obstack.
+ 	(fini_pre): Free pre_expr_obstack.
+ 
+ 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104674
+ 	* config/i386/i386.h (enum ix86_stack_slot): Add SLOT_FLOATxFDI_387.
+ 	* config/i386/i386.md (splitter to floatdi<mode>2_i387_with_xmm): Use
+ 	SLOT_FLOATxFDI_387 rather than SLOT_TEMP.
+ 
+ 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* warning-control.cc (get_nowarn_spec): Comment spelling fix.
+ 
+ 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104679
+ 	* internal-fn.cc (expand_SPACESHIP): Call do_pending_stack_adjust.
+ 
+ 2022-02-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104675
+ 	* match.pd (-A - 1 -> ~A, -1 - A -> ~A): Don't simplify for
+ 	COMPLEX_TYPE.
+ 
+ 2022-02-25  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR target/104121
+ 	PR target/103302
+ 	* expr.cc (emit_move_multi_word): Restore clobbers during LRA.
+ 
+ 2022-02-25  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR middle-end/104540
+ 	* dwarf2cfi.cc (cfi_oprnd_equal_p): Cope with NULL
+ 	dw_cfi_cfa_loc.
+ 
+ 2022-02-25  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	PR tree-optimization/103856
+ 	* gimple-harden-conditionals.cc (non_eh_succ_edge): Enable the
+ 	eh edge to be requested through an extra parameter.
+ 	(pass_harden_compares::execute): Copy PHI args in the EH dest
+ 	block for the new EH edge added for the inverted compare.
+ 
+ 2022-02-24  Palmer Dabbelt  <palmer@rivosinc.com>
+ 
+ 	* doc/invoke.texi (RISC-V -mcmodel=medany): Document the degree
+ 	of position independence that -mcmodel=medany affords.
+ 
+ 2022-02-24  Jose E. Marchesi  <jose.marchesi@oracle.com>
+ 
+ 	PR target/104656
+ 	* configure.ac: --disable-gcov if targetting bpf-*.
+ 	* configure: Regenerate.
+ 
+ 2022-02-24  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104676
+ 	* tree-loop-distribution.cc (loop_distribution::execute):
+ 	Do a full scev_reset.
+ 
+ 2022-02-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104601
+ 	* tree-ssa-sccvn.cc (visit_reference_op_call): For calls with
+ 	non-SSA_NAME lhs value number vdef to itself instead of e.g. the
+ 	vuse value number.
+ 
+ 2022-02-24  Tom de Vries  <tdevries@suse.de>
+ 	    Tobias Burnus  <tobias@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_omp_device_kind_arch_isa): Handle
+ 	sm_70, sm_75 and sm_80.
+ 	* config/nvptx/t-omp-device: Add sm_53, sm_70, sm_75 and sm_80.
+ 
+ 2022-02-24  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md (define_insn "rotlsi3", define_insn
+ 	"rotrsi3"): New define_insn.
+ 
+ 2022-02-24  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (gen_comment): Use
+ 	DECL_SOURCE_LOCATION (cfun->decl) instead of cfun->function_start_locus.
+ 
+ 2022-02-24  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md (<code>v1ti3): Add suffix and replace
+ 	isa attr of alternative 2 from avx to avx512vl.
+ 
+ 2022-02-23  Richard Biener  <rguenther@suse.de>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104644
+ 	* doc/match-and-simplify.texi: Amend ! documentation.
+ 	* genmatch.cc (expr::gen_transform): Code-generate ! support
+ 	for GENERIC.
+ 	(parser::parse_expr): Allow ! for GENERIC.
+ 	* match.pd (cmp (bswap @0) INTEGER_CST@1): Use ! modifier on
+ 	bswap.
+ 
+ 2022-02-23  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/101636
+ 	* tree-vect-slp.cc (vect_print_slp_tree): Dump the
+ 	vector type of the node.
+ 	(vect_slp_analyze_operations): Make sure the CTOR
+ 	is vectorized with an expected type.
+ 	(vectorize_slp_instance_root_stmt): Revert r10-5979 fix.
+ 
+ 2022-02-23  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c/104633
+ 	* gimple-warn-recursion.cc (pass_warn_recursion::find_function_exit):
+ 	Don't warn about calls to corresponding builtin from extern inline
+ 	gnu_inline wrappers.
+ 
+ 2022-02-23  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/104489
+ 	* config/nvptx/nvptx.md (*movhf_insn): Add subregs_ok attribute.
+ 
+ 2022-02-23  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/arm/vfp.md (thumb2_movhi_vfp, thumb2_movhi_fp16): Fix
+ 	typo.
+ 
+ 2022-02-23  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	* doc/invoke.texi: Update documents for Intel architectures.
+ 
+ 2022-02-22  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-expand.cc (ix86_expand_cmpxchg_loop): Restore
+ 	bootstrap.
+ 
+ 2022-02-22  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-low.cc (omp_build_component_ref): Move function...
+ 	* omp-general.cc (omp_build_component_ref): ... here.  Remove
+ 	'static'.
+ 	* omp-general.h (omp_build_component_ref): Declare function.
+ 	* omp-oacc-neuter-broadcast.cc (oacc_build_component_ref): Remove
+ 	function.
+ 	(build_receiver_ref, build_sender_ref): Call
+ 	'omp_build_component_ref' instead.
+ 
+ 2022-02-22  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-oacc-neuter-broadcast.cc (record_field_map_t): Further
+ 	simplify.  Adjust all users.
+ 
+ 2022-02-22  Segher Boessenkool  <segher@kernel.crashing.org>
+ 
+ 	PR target/88134
+ 	* config/rs6000/rs6000.cc (atomic_hold_decl, atomic_clear_decl,
+ 	atomic_update_decl): Add GTY markup.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/arm.h (REG_CLASS_CONTENTS): Add VPR_REG to ALL_REGS.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/arm/arm-builtins.cc (CX_UNARY_UNONE_QUALIFIERS): Use
+ 	predicate.
+ 	(CX_BINARY_UNONE_QUALIFIERS): Likewise.
+ 	(CX_TERNARY_UNONE_QUALIFIERS): Likewise.
+ 	(TERNOP_NONE_NONE_NONE_UNONE_QUALIFIERS): Delete.
+ 	(QUADOP_NONE_NONE_NONE_NONE_UNONE_QUALIFIERS): Delete.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_UNONE_QUALIFIERS): Delete.
+ 	* config/arm/arm_mve_builtins.def: Use predicated qualifiers.
+ 	* config/arm/mve.md: Use VxBI instead of HI.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/arm/arm-builtins.cc (STRSBS_P_QUALIFIERS): Use predicate
+ 	qualifier.
+ 	(STRSBU_P_QUALIFIERS): Likewise.
+ 	(LDRGBS_Z_QUALIFIERS): Likewise.
+ 	(LDRGBU_Z_QUALIFIERS): Likewise.
+ 	(LDRGBWBXU_Z_QUALIFIERS): Likewise.
+ 	(LDRGBWBS_Z_QUALIFIERS): Likewise.
+ 	(LDRGBWBU_Z_QUALIFIERS): Likewise.
+ 	(STRSBWBS_P_QUALIFIERS): Likewise.
+ 	(STRSBWBU_P_QUALIFIERS): Likewise.
+ 	* config/arm/mve.md: Use VxBI instead of HI.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/arm/arm-builtins.cc (TERNOP_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Change to ...
+ 	(TERNOP_UNONE_UNONE_NONE_PRED_QUALIFIERS): ... this.
+ 	(TERNOP_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(TERNOP_UNONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(TERNOP_NONE_NONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(TERNOP_NONE_NONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(TERNOP_NONE_NONE_UNONE_UNONE_QUALIFIERS): Change to ...
+ 	(TERNOP_NONE_NONE_UNONE_PRED_QUALIFIERS): ... this.
+ 	(QUADOP_UNONE_UNONE_NONE_NONE_UNONE_QUALIFIERS): Change to ...
+ 	(QUADOP_UNONE_UNONE_NONE_NONE_PRED_QUALIFIERS): ... this.
+ 	(QUADOP_NONE_NONE_NONE_NONE_PRED_QUALIFIERS): New.
+ 	(QUADOP_NONE_NONE_NONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(QUADOP_NONE_NONE_NONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(QUADOP_UNONE_UNONE_UNONE_UNONE_PRED_QUALIFIERS): New.
+ 	(QUADOP_UNONE_UNONE_NONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(QUADOP_UNONE_UNONE_NONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(QUADOP_NONE_NONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(QUADOP_NONE_NONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(QUADOP_UNONE_UNONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(QUADOP_UNONE_UNONE_UNONE_NONE_UNONE_QUALIFIERS): Change to ...
+ 	(QUADOP_UNONE_UNONE_UNONE_NONE_PRED_QUALIFIERS): ... this.
+ 	(STRS_P_QUALIFIERS): Use predicate qualifier.
+ 	(STRU_P_QUALIFIERS): Likewise.
+ 	(STRSU_P_QUALIFIERS): Likewise.
+ 	(STRSS_P_QUALIFIERS): Likewise.
+ 	(LDRGS_Z_QUALIFIERS): Likewise.
+ 	(LDRGU_Z_QUALIFIERS): Likewise.
+ 	(LDRS_Z_QUALIFIERS): Likewise.
+ 	(LDRU_Z_QUALIFIERS): Likewise.
+ 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_UNONE_QUALIFIERS): Change to ...
+ 	(QUINOP_UNONE_UNONE_UNONE_UNONE_IMM_PRED_QUALIFIERS): ... this.
+ 	(BINOP_NONE_NONE_PRED_QUALIFIERS): New.
+ 	(BINOP_UNONE_UNONE_PRED_QUALIFIERS): New.
+ 	* config/arm/arm_mve_builtins.def: Use new predicated qualifiers.
+ 	* config/arm/mve.md: Use MVE_VPRED instead of HI.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/arm/arm-builtins.cc (BINOP_UNONE_NONE_NONE_QUALIFIERS):
+ 	Delete.
+ 	(TERNOP_UNONE_NONE_NONE_UNONE_QUALIFIERS): Change to ...
+ 	(TERNOP_PRED_NONE_NONE_PRED_QUALIFIERS): ... this.
+ 	(TERNOP_PRED_UNONE_UNONE_PRED_QUALIFIERS): New.
+ 	* config/arm/arm_mve_builtins.def (vcmp*q_n_, vcmp*q_m_f): Use new
+ 	predicated qualifiers.
+ 	* config/arm/mve.md (mve_vcmp<mve_cmp_op>q_n_<mode>)
+ 	(mve_vcmp*q_m_f<mode>): Use MVE_VPRED instead of HI.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	* config/arm/arm-protos.h (arm_get_mask_mode): New prototype.
+ 	(arm_expand_vector_compare): Update prototype.
+ 	* config/arm/arm.cc (TARGET_VECTORIZE_GET_MASK_MODE): New.
+ 	(arm_vector_mode_supported_p): Add support for VxBI modes.
+ 	(arm_expand_vector_compare): Remove useless generation of vpsel.
+ 	(arm_expand_vcond): Fix select operands.
+ 	(arm_get_mask_mode): New.
+ 	* config/arm/mve.md (vec_cmp<mode><MVE_vpred>): New.
+ 	(vec_cmpu<mode><MVE_vpred>): New.
+ 	(vcond_mask_<mode><MVE_vpred>): New.
+ 	* config/arm/vec-common.md (vec_cmp<mode><v_cmp_result>)
+ 	(vec_cmpu<mode><mode, vcond_mask_<mode><v_cmp_result>): Move to ...
+ 	* config/arm/neon.md (vec_cmp<mode><v_cmp_result>)
+ 	(vec_cmpu<mode><mode, vcond_mask_<mode><v_cmp_result>): ... here
+ 	and disable for MVE.
+ 	* doc/sourcebuild.texi (arm_mve): Document new effective-target.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/arm/arm-builtins.cc (BINOP_PRED_UNONE_UNONE_QUALIFIERS)
+ 	(BINOP_PRED_NONE_NONE_QUALIFIERS)
+ 	(TERNOP_NONE_NONE_NONE_PRED_QUALIFIERS)
+ 	(TERNOP_UNONE_UNONE_UNONE_PRED_QUALIFIERS): New.
+ 	* config/arm/arm-protos.h (mve_bool_vec_to_const): New.
+ 	* config/arm/arm.cc (arm_hard_regno_mode_ok): Handle new VxBI
+ 	modes.
+ 	(arm_mode_to_pred_mode): New.
+ 	(arm_expand_vector_compare): Use the right VxBI mode instead of
+ 	HI.
+ 	(arm_expand_vcond): Likewise.
+ 	(simd_valid_immediate): Handle MODE_VECTOR_BOOL.
+ 	(mve_bool_vec_to_const): New.
+ 	(neon_make_constant): Call mve_bool_vec_to_const when needed.
+ 	* config/arm/arm_mve_builtins.def (vcmpneq_, vcmphiq_, vcmpcsq_)
+ 	(vcmpltq_, vcmpleq_, vcmpgtq_, vcmpgeq_, vcmpeqq_, vcmpneq_f)
+ 	(vcmpltq_f, vcmpleq_f, vcmpgtq_f, vcmpgeq_f, vcmpeqq_f, vpselq_u)
+ 	(vpselq_s, vpselq_f): Use new predicated qualifiers.
+ 	* config/arm/constraints.md (DB): New.
+ 	* config/arm/iterators.md (MVE_7, MVE_7_HI): New mode iterators.
+ 	(MVE_VPRED, MVE_vpred): New attribute iterators.
+ 	* config/arm/mve.md (@mve_vcmp<mve_cmp_op>q_<mode>)
+ 	(@mve_vcmp<mve_cmp_op>q_f<mode>, @mve_vpselq_<supf><mode>)
+ 	(@mve_vpselq_f<mode>): Use MVE_VPRED instead of HI.
+ 	(@mve_vpselq_<supf>v2di): Define separately.
+ 	(mov<mode>): New expander for VxBI modes.
+ 	* config/arm/vfp.md (thumb2_movhi_vfp, thumb2_movhi_fp16): Use
+ 	MVE_7_HI iterator and add support for DB constraint.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 	    Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/100757
+ 	PR target/101325
+ 	* config/aarch64/aarch64-modes.def (VNx16BI, VNx8BI, VNx4BI,
+ 	VNx2BI): Update definition.
+ 	* config/arm/arm-builtins.cc (arm_init_simd_builtin_types): Add new
+ 	simd types.
+ 	(arm_init_builtin): Map predicate vectors arguments to HImode.
+ 	(arm_expand_builtin_args): Move HImode predicate arguments to VxBI
+ 	rtx. Move return value to HImode rtx.
+ 	* config/arm/arm-builtins.h (arm_type_qualifiers): Add qualifier_predicate.
+ 	* config/arm/arm-modes.def (B2I, B4I, V16BI, V8BI, V4BI): New modes.
+ 	* config/arm/arm-simd-builtin-types.def (Pred1x16_t,
+ 	Pred2x8_t,Pred4x4_t): New.
+ 	* emit-rtl.cc (init_emit_once): Handle all boolean modes.
+ 	* genmodes.cc (mode_data): Add boolean field.
+ 	(blank_mode): Initialize it.
+ 	(make_complex_modes): Fix handling of boolean modes.
+ 	(make_vector_modes): Likewise.
+ 	(VECTOR_BOOL_MODE): Use new COMPONENT parameter.
+ 	(make_vector_bool_mode): Likewise.
+ 	(BOOL_MODE): New.
+ 	(make_bool_mode): New.
+ 	(emit_insn_modes_h): Fix generation of boolean modes.
+ 	(emit_class_narrowest_mode): Likewise.
+ 	* machmode.def: (VECTOR_BOOL_MODE): Document new COMPONENT
+ 	parameter.  Use new BOOL_MODE instead of FRACTIONAL_INT_MODE to
+ 	define BImode.
+ 	* rtx-vector-builder.cc (rtx_vector_builder::find_cached_value):
+ 	Fix handling of constm1_rtx for VECTOR_BOOL.
+ 	* simplify-rtx.cc (native_encode_rtx): Fix support for VECTOR_BOOL.
+ 	(native_decode_vector_rtx): Likewise.
+ 	(test_vector_ops_duplicate): Skip vec_merge test
+ 	with vectors of booleans.
+ 	* varasm.cc (output_constant_pool_2): Likewise.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/mve.md (mve_vmvnq_n_<supf><mode>): Use V_elem mode
+ 	for operand 1.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/arm.cc (arm_class_likely_spilled_p): Handle VPR_REG.
+ 
+ 2022-02-22  Christophe Lyon  <christophe.lyon@arm.com>
+ 
+ 	* config/arm/arm.h (reg_class): Add GENERAL_AND_VPR_REGS.
+ 	(REG_CLASS_NAMES): Likewise.
+ 	(REG_CLASS_CONTENTS): Likewise.
+ 	(CLASS_MAX_NREGS): Handle VPR.
+ 	* config/arm/arm.cc (arm_hard_regno_nregs): Handle VPR.
+ 
+ 2022-02-22  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx-c.cc (nvptx_cpu_cpp_builtins): Handle SM70.
+ 	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm):
+ 	Likewise.
+ 	* config/nvptx/nvptx.opt (misa): Add sm_70 alias PTX_ISA_SM70.
+ 
+ 2022-02-22  Tobias Burnus  <tobias@codesourcery.com>
+ 	    Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.opt (mptx): Add 6.0 alias PTX_VERSION_6_0.
+ 	* doc/invoke.texi (-mptx): Update for new values and defaults.
+ 
+ 2022-02-22  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (gen_comment): New function.
+ 	(workaround_uninit_method_1, workaround_uninit_method_2)
+ 	(workaround_uninit_method_3): : Use gen_comment.
+ 	* config/nvptx/nvptx.opt (mptx-comment): New option.
+ 
+ 2022-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-vect-slp.cc (vect_build_slp_tree_2): Dump the def used
+ 	for a splat.
+ 
+ 2022-02-22  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* fold-const.cc (ctor_single_nonzero_element): New function to
+ 	return the single non-zero element of a (vector) constructor.
+ 	* fold-const.h (ctor_single_nonzero_element): Prototype here.
+ 	* match.pd (reduc (constructor@0)): Simplify reductions of a
+ 	constructor containing a single non-zero element.
+ 	(reduc (@0 op VECTOR_CST) ->  (reduc @0) op CONST): Simplify
+ 	reductions of vector operations of the same operator with
+ 	constant vector operands.
+ 
+ 2022-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104604
+ 	* gimple-range-fold.cc (adjust_imagpart_expr, adjust_realpart_expr):
+ 	Only check if gimple_assign_rhs1 is COMPLEX_CST if
+ 	gimple_assign_rhs_code is COMPLEX_CST.
+ 
+ 2022-02-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104612
+ 	* config/i386/i386-expand.cc (ix86_expand_copysign): Call force_reg
+ 	on input operands before calling lowpart_subreg on it.  For output
+ 	operand, use a vmode pseudo as destination and then move its lowpart
+ 	subreg into operands[0] if lowpart_subreg fails on dest.
+ 	(ix86_expand_xorsign): Likewise.
+ 
+ 2022-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104582
+ 	PR target/99881
+ 	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
+ 	Cost GPR to vector register moves for integer vector construction.
+ 
+ 2022-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104582
+ 	* tree-vectorizer.h (stmt_info_for_cost::node): New field.
+ 	(vector_costs::add_stmt_cost): Add SLP node parameter.
+ 	(dump_stmt_cost): Likewise.
+ 	(add_stmt_cost): Likewise, new overload and adjust.
+ 	(add_stmt_costs): Adjust.
+ 	(record_stmt_cost): New overload.
+ 	* tree-vectorizer.cc (dump_stmt_cost): Dump the SLP node.
+ 	(vector_costs::add_stmt_cost): Adjust.
+ 	* tree-vect-loop.cc (vect_estimate_min_profitable_iters):
+ 	Adjust.
+ 	* tree-vect-slp.cc (vect_prologue_cost_for_slp): Record
+ 	the SLP node for costing.
+ 	(vectorizable_slp_permutation): Likewise.
+ 	* tree-vect-stmts.cc (record_stmt_cost): Adjust and add
+ 	new overloads.
+ 	* config/i386/i386.cc (ix86_vector_costs::add_stmt_cost):
+ 	Adjust.
+ 	* config/aarch64/aarch64.cc (aarch64_vector_costs::add_stmt_cost):
+ 	Adjust.
+ 	* config/rs6000/rs6000.cc (rs6000_vector_costs::add_stmt_cost):
+ 	Adjust.
+ 	(rs6000_cost_data::adjust_vect_cost_per_loop): Likewise.
+ 
+ 2022-02-22  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104582
+ 	* tree-vectorizer.h (add_stmt_cost): New overload.
+ 	(record_stmt_cost): Likewise.
+ 	* tree-vect-loop.cc (vect_compute_single_scalar_iteration_cost):
+ 	Use add_stmt_costs.
+ 	(vect_get_known_peeling_cost): Use new overloads.
+ 	(vect_estimate_min_profitable_iters): Likewise.  Consistently
+ 	use scalar_stmt for costing versioning checks.
+ 	* tree-vect-stmts.cc (record_stmt_cost): New overload.
+ 
+ 2022-02-22  Hongyu Wang  <hongyu.wang@intel.com>
+ 
+ 	PR target/103069
+ 	* config/i386/i386-expand.cc (ix86_expand_atomic_fetch_op_loop):
+ 	Split atomic fetch and loop part.
+ 	(ix86_expand_cmpxchg_loop): New expander for cmpxchg loop.
+ 	* config/i386/i386-protos.h (ix86_expand_cmpxchg_loop): New
+ 	prototype.
+ 	* config/i386/sync.md (atomic_compare_and_swap<mode>): Call new
+ 	expander under TARGET_RELAX_CMPXCHG_LOOP.
+ 	(atomic_compare_and_swap<mode>): Likewise for doubleword modes.
+ 
+ 2022-02-21  Dan Li  <ashimida@linux.alibaba.com>
+ 
+ 	* config/aarch64/aarch64.cc (SLOT_REQUIRED):
+ 	Change wb_candidate[12] to wb_push_candidate[12].
+ 	(aarch64_layout_frame): Likewise, and
+ 	change callee_adjust when scs is enabled.
+ 	(aarch64_save_callee_saves):
+ 	Change wb_candidate[12] to wb_push_candidate[12].
+ 	(aarch64_restore_callee_saves):
+ 	Change wb_candidate[12] to wb_pop_candidate[12].
+ 	(aarch64_get_separate_components):
+ 	Change wb_candidate[12] to wb_push_candidate[12].
+ 	(aarch64_expand_prologue): Push x30 onto SCS before it's
+ 	pushed onto stack.
+ 	(aarch64_expand_epilogue): Pop x30 frome SCS, while
+ 	preventing it from being popped from the regular stack again.
+ 	(aarch64_override_options_internal): Add SCS compile option check.
+ 	(TARGET_HAVE_SHADOW_CALL_STACK): New hook.
+ 	* config/aarch64/aarch64.h (struct GTY): Add is_scs_enabled,
+ 	wb_pop_candidate[12], and rename wb_candidate[12] to
+ 	wb_push_candidate[12].
+ 	* config/aarch64/aarch64.md (scs_push): New template.
+ 	(scs_pop): Likewise.
+ 	* doc/invoke.texi: Document -fsanitize=shadow-call-stack.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in: Add hook have_shadow_call_stack.
+ 	* flag-types.h (enum sanitize_code):
+ 	Add SANITIZE_SHADOW_CALL_STACK.
+ 	* opts.cc (parse_sanitizer_options): Add shadow-call-stack
+ 	and exclude SANITIZE_SHADOW_CALL_STACK.
+ 	* target.def: New hook.
+ 	* toplev.cc (process_options): Add SCS compile option check.
+ 	* ubsan.cc (ubsan_expand_null_ifn): Enum type conversion.
+ 
+ 2022-02-21  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104440
+ 	* config/nvptx/nvptx.cc (workaround_uninit_method_1)
+ 	(workaround_uninit_method_2, workaround_uninit_method_3)
+ 	(workaround_uninit): New function.
+ 	(nvptx_reorg): Use workaround_uninit.
+ 	* config/nvptx/nvptx.opt (minit-regs): New option.
+ 
+ 2022-02-21  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR rtl-optimization/104498
+ 	* alias.cc (compare_base_symbol_refs): Correct distance computation
+ 	when swapping x and y.
+ 
+ 2022-02-21  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR c/104506
+ 	* tree-ssa.cc (tree_ssa_useless_type_conversion):
+ 	Check the inner type before calling useless_type_conversion_p.
+ 
+ 2022-02-19  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_reorg_uniform_simt): Handle SET insn.
+ 	* config/nvptx/nvptx.md
+ 	(define_insn "nvptx_atomic_store<mode>"): Rename to ...
+ 	(define_insn "nvptx_atomic_store_sm70<mode>"): This.
+ 	(define_insn "nvptx_atomic_store<mode>"): New define_insn.
+ 	(define_expand "atomic_store<mode>"): Handle rename.  Use
+ 	nvptx_atomic_store instead of atomic_exchange.
+ 
+ 2022-02-19  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_reorg_uniform_simt): Handle all
+ 	insns with atomic attribute.  Assert that all handled insns are
+ 	PARALLELs.
+ 	* config/nvptx/nvptx.md (define_insn "nvptx_atomic_store<mode>"):
+ 	Set atomic attribute to false.
+ 
+ 2022-02-19  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_unisimt_handle_set): Change return
+ 	type to bool.
+ 	(nvptx_reorg_uniform_simt): Insert nvptx_uniform_warp_check or
+ 	nvptx_warpsync, if necessary.
+ 
+ 2022-02-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/102656
+ 	* asan.cc (instrument_derefs): If inner is a RESULT_DECL and access is
+ 	known to be within bounds, treat it like automatic variables.
+ 	If instrumenting access and inner is {VAR,PARM,RESULT}_DECL from
+ 	current function and !TREE_STATIC which is not TREE_ADDRESSABLE, mark
+ 	it addressable.
+ 
+ 2022-02-18  Pat Haugen  <pthaugen@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.opt (mpower10-fusion): Mark Undocumented.
+ 	(mpower10-fusion-ld-cmpi, mpower10-fusion-2logical,
+ 	mpower10-fusion-logical-add, mpower10-fusion-add-logical,
+ 	mpower10-fusion-2add, mpower10-fusion-2store): Remove.
+ 	* config/rs6000/rs6000-cpus.def (ISA_3_1_MASKS_SERVER,
+ 	OTHER_P9_VECTOR_MASKS): Remove Power10 fusion sub-options.
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal,
+ 	power10_sched_reorder): Likewise.
+ 	* config/rs6000/genfusion.pl (gen_ld_cmpi_p10, gen_logical_addsubf,
+ 	gen_addadd): Likewise
+ 	* config/rs6000/fusion.md: Regenerate.
+ 
+ 2022-02-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104257
+ 	PR target/104598
+ 	* config/rs6000/mm_malloc.h (_mm_malloc): Call posix_memalign
+ 	rather than __posix_memalign.
+ 
+ 2022-02-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/104581
+ 	* config/i386/i386.cc (ix86_avx_u128_mode_source): Remove.
+ 	(ix86_avx_u128_mode_needed): Return AVX_U128_DIRTY instead
+ 	of calling ix86_avx_u128_mode_source which would eventually
+ 	have returned AVX_U128_ANY in some very special case.
+ 
+ 2022-02-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/96881
+ 	* tree-ssa-dce.cc (mark_stmt_if_obviously_necessary): Comment
+ 	CLOBBER handling.
+ 	(control_parents_preserved_p): New function.
+ 	(eliminate_unnecessary_stmts): Check that we preserved control
+ 	parents before retaining a CLOBBER.
+ 	(perform_tree_ssa_dce): Pass down aggressive flag
+ 	to eliminate_unnecessary_stmts.
+ 
+ 2022-02-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree.cc (warn_deprecated_use): Look for TYPE_STUB_DECL
+ 	on TYPE_MAIN_VARIANT.
+ 
+ 2022-02-17  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	PR target/104257
+ 	* config/rs6000/bmi2intrin.h: Uglify local variables.
+ 	* config/rs6000/emmintrin.h: Likewise.
+ 	* config/rs6000/mm_malloc.h: Likewise.
+ 	* config/rs6000/mmintrin.h: Likewise.
+ 	* config/rs6000/pmmintrin.h: Likewise.
+ 	* config/rs6000/smmintrin.h: Likewise.
+ 	* config/rs6000/tmmintrin.h: Likewise.
+ 	* config/rs6000/xmmintrin.h: Likewise.
+ 
+ 2022-02-17  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	PR target/104335
+ 	* config/rs6000/rs6000.cc (rs6000_emit_int_cmove): Return false
+ 	if the expected comparison's first operand is of mode MODE_CC.
+ 
+ 2022-02-17  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/104447
+ 	* lra-constraints.cc (spill_hard_reg_in_range): Initiate ignore
+ 	hard reg set by lra_no_alloc_regs.
+ 
+ 2022-02-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/104551
+ 	PR tree-optimization/103771
+ 	* match.pd (cond_expr_convert_p): Add types_match check when
+ 	convert is extension.
+ 	* tree-vect-patterns.cc
+ 	(gimple_cond_expr_convert_p): Adjust comments.
+ 	(vect_recog_cond_expr_convert_pattern): Ditto.
+ 
+ 2022-02-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104557
+ 	* valtrack.cc (debug_lowpart_subreg): Don't call gen_rtx_raw_SUBREG
+ 	if expr has VOIDmode.
+ 
+ 2022-02-17  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/cpuid.h (bit_MPX): Removed.
+ 	(bit_BNDREGS): Ditto.
+ 	(bit_BNDCSR): Ditto.
+ 
+ 2022-02-17  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/99708
+ 	* config/rs6000/rs6000-c.cc (rs6000_cpu_cpp_builtins): Define
+ 	__SIZEOF_IBM128__ if the IBM 128-bit long double type is created.
+ 	Define __SIZEOF_FLOAT128__ if the IEEE 128-bit floating point type
+ 	is created.
+ 
+ 2022-02-16  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* gimple-range-gori.cc (gori_compute::condexpr_adjust): Use
+ 	range_compatible_p instead of direct type comparison.
+ 
+ 2022-02-16  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104544
+ 	* combine.cc (try_combine): When looking for insn whose links
+ 	should be updated from i3 to i2, don't stop on debug insns, instead
+ 	skip over them.
+ 
+ 2022-02-16  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/100056
+ 	* config/aarch64/iterators.md (LOGICAL_OR_PLUS): New iterator.
+ 	* config/aarch64/aarch64.md: Extend the PR100056 patterns
+ 	to handle plus in the same way as ior, if the operands have
+ 	no set bits in common.
+ 
+ 2022-02-15  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/104526
+ 	* gimple-range-fold.cc (fold_using_range::range_of_cond_expr): Call
+ 	new routine.
+ 	* gimple-range-gori.cc (range_def_chain::get_def_chain): Force a build
+ 	of dependency chain if there isn't one.
+ 	(gori_compute::condexpr_adjust): New.
+ 	* gimple-range-gori.h (class gori_compute): New prototype.
+ 
+ 2022-02-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/100874
+ 	* config/aarch64/aarch64-protos.h (aarch64_maxmin_plus_const):
+ 	Declare.
+ 	* config/aarch64/aarch64.cc (aarch64_maxmin_plus_const): New function.
+ 	* config/aarch64/aarch64.md (*aarch64_minmax_plus): New pattern.
+ 
+ 2022-02-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vectorizer.h (vect_scalar_ops_slice): New struct.
+ 	(vect_scalar_ops_slice_hash): Likewise.
+ 	(vect_scalar_ops_slice::op): New function.
+ 	* tree-vect-slp.cc (vect_scalar_ops_slice::all_same_p): New function.
+ 	(vect_scalar_ops_slice_hash::hash): Likewise.
+ 	(vect_scalar_ops_slice_hash::equal): Likewise.
+ 	(vect_prologue_cost_for_slp): Check for duplicate vectors.
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_vector_costs::m_stp_sequence_cost): New member variable.
+ 	(aarch64_aligned_constant_offset_p): New function.
+ 	(aarch64_stp_sequence_cost): Likewise.
+ 	(aarch64_vector_costs::add_stmt_cost): Handle new STP heuristic.
+ 	(aarch64_vector_costs::finish_cost): Likewise.
+ 
+ 2022-02-15  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* tree-vect-slp.cc (vect_bb_vectorization_profitable_p): Fix
+ 	use after free.
+ 
+ 2022-02-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104543
+ 	* gimple-loop-jam.cc (unroll_jam_possible_p): Check outer loop exits
+ 	come after the inner loop.
+ 
+ 2022-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104536
+ 	* config/i386/host-cygwin.cc (cygwin_gt_pch_get_address): Use
+ 	cannot instead of can%'t in diagnostics.  Formatting fixes.
+ 
+ 2022-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104522
+ 	* fold-const.h (native_interpret_real): Declare.
+ 	* fold-const.cc (native_interpret_real): No longer static.  Don't
+ 	perform MODE_COMPOSITE_P verification here.
+ 	(native_interpret_expr) <case REAL_TYPE>: But perform it here instead
+ 	for all modes.
+ 	* gimple-fold.cc (clear_padding_type): Call native_interpret_real
+ 	instead of native_interpret_expr.
+ 	* simplify-rtx.cc (simplify_immed_subreg): Perform the native_encode_rtx
+ 	and comparison verification for all FLOAT_MODE_P modes, not just
+ 	MODE_COMPOSITE_P.
+ 
+ 2022-02-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104519
+ 	* fold-const.cc (multiple_of_p): Remove never true condition.
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Use
+ 	the appropriate types for determining whether the difference
+ 	of final and base is a multiple of the step.
+ 
+ 2022-02-15  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104517
+ 	* omp-low.cc (task_cpyfns): New variable.
+ 	(delete_omp_context): Don't call finalize_task_copyfn from here.
+ 	(create_task_copyfn): Push task_stmt into task_cpyfns.
+ 	(execute_lower_omp): Call finalize_task_copyfn here on entries from
+ 	task_cpyfns vector and release the vector.
+ 
+ 2022-02-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/104355
+ 	* doc/invoke.texi (-Warray-bounds): Update documentation.
+ 
+ 2022-02-14  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/104253
+ 	* config/rs6000/rs6000.cc (init_float128_ibm): Update the
+ 	conversion functions used to convert IFmode types.
+ 
+ 2022-02-14  Andrew Stubbs  <ams@codesourcery.com>
+ 
+ 	* config/gcn/gcn.cc (gcn_expand_reduc_scalar): Use force_reg.
+ 
+ 2022-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104528
+ 	* tree-ssa.h (find_released_ssa_name): Declare.
+ 	* tree-ssa.cc (find_released_ssa_name): Export.
+ 	* cfgloop.cc (verify_loop_structure): Look for released
+ 	SSA names in loops nb_iterations.
+ 	* tree-ssa-dse.cc (pass_dse::execute): Release number of iteration
+ 	estimates.
+ 
+ 2022-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104511
+ 	* tree-ssa-forwprop.cc (simplify_vector_constructor): Avoid
+ 	touching DFP <-> FP conversions.
+ 
+ 2022-02-14  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104497
+ 	* gimplify.cc (gimplify_compound_lval): Make sure the
+ 	base is a non-register if needed and possible.
+ 
+ 2022-02-13  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/103771
+ 	* match.pd (cond_expr_convert_p): New match.
+ 	* tree-vect-patterns.cc (gimple_cond_expr_convert_p): Declare.
+ 	(vect_recog_cond_expr_convert_pattern): New.
+ 
+ 2022-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/104449
+ 	* asan.cc: Include tree-eh.h.
+ 	(handle_builtin_alloca): Handle the case when __builtin_alloca or
+ 	__builtin_alloca_with_align can throw.
+ 
+ 2022-02-12  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104502
+ 	* config/i386/i386.md (cvtsd2ss splitter): If operands[1] is xmm16+
+ 	and AVX512VL isn't available, move operands[1] to operands[0] first.
+ 
+ 2022-02-12  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/79754
+ 	* config/i386/i386.cc (type_natural_mode):
+ 	Skip decimal float vector modes.
+ 
+ 2022-02-11  Iain Sandoe  <iain@sandoe.co.uk>
+ 	    Vladimir Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/104117
+ 	* config/rs6000/rs6000.cc (darwin_rs6000_legitimate_lo_sum_const_p):
+ 	Check for UNSPEC_MACHOPIC_OFFSET wrappers on symbolic addresses when
+ 	emitting PIC code.
+ 	(legitimate_lo_sum_address_p): Likewise.
+ 	* lra-constraints.cc (process_address_1): Do not attempt to emit a reg
+ 	load from an invalid lo_sum address.
+ 
+ 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104499
+ 	* match.pd ((X & Y) CMP 0 -> X CMP2 ~Y): Use view_convert instead
+ 	of convert.
+ 
+ 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* tree.cc (build_common_builtin_nodes): Fix up formatting in
+ 	__builtin_clear_padding decl creation.
+ 	* gimplify.cc (gimple_add_padding_init_for_auto_var): Encode
+ 	for_auto_init in the value of 2nd BUILT_IN_CLEAR_PADDING
+ 	argument rather than in 3rd argument.
+ 	(gimplify_call_expr): Likewise.  Fix up comment formatting.
+ 	* gimple-fold.cc (gimple_fold_builtin_clear_padding): Expect
+ 	2 arguments instead of 3, take for_auto_init from the value
+ 	of 2nd argument.
+ 
+ 2022-02-11  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR rtl-optimization/104400
+ 	* lra-constraints.cc (process_alt_operands): Don't make union of
+ 	this_alternative_exclude_start_hard_regs when reg class in insn
+ 	alternative covers other reg classes in the same alternative.
+ 
+ 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104446
+ 	* combine.cc (subst): Don't substitute CONST_INTs into RTX_AUTOINC
+ 	operands.
+ 
+ 2022-02-11  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104496
+ 	* internal-fn.cc (vectorized_internal_fn_supported_p):
+ 	Bail out for integer mode vector types.
+ 
+ 2022-02-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/104459
+ 	* df-scan.cc (df_insn_change_bb): Don't call df_set_bb_dirty when
+ 	moving DEBUG_INSNs between bbs.
+ 
+ 2022-02-11  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR tree-optimization/104479
+ 	* match.pd (uncond_op + vec_cond -> cond_op): Add single_use
+ 	for the dest of uncond_op.
+ 
+ 2022-02-11  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104456
+ 	* config/nvptx/nvptx.cc (prevent_branch_around_nothing): Handle asm
+ 	insn.
+ 
+ 2022-02-10  Qing Zhao  <qing.zhao@oracle.com>
+ 
+ 	PR middle-end/100775
+ 	* function.cc (gen_call_used_regs_seq): Call
+ 	df_update_exit_block_uses when updating df.
+ 
+ 2022-02-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104469
+ 	* config/i386/sse.md (vec_unpacks_float_lo_v4si):
+ 	Change operand 1 constraint to register_operand.
+ 
+ 2022-02-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104373
+ 	* tree-ssa-sccvn.h (do_rpo_vn): New export exposing the
+ 	walk kind.
+ 	* tree-ssa-sccvn.cc (do_rpo_vn): Export, get the default
+ 	walk kind as argument.
+ 	(run_rpo_vn): Adjust.
+ 	(pass_fre::execute): Likewise.
+ 	* tree-ssa-uninit.cc (warn_uninitialized_vars): Skip
+ 	blocks not reachable.
+ 	(execute_late_warn_uninitialized): Mark all edges as
+ 	executable.
+ 	(execute_early_warn_uninitialized): Use VN to compute
+ 	executable edges.
+ 	(pass_data_early_warn_uninitialized): Enable a dump file,
+ 	change dump name to warn_uninit.
+ 
+ 2022-02-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104467
+ 	* match.pd (vector extract simplification): Multiply the
+ 	number of CTOR elements with the number of element elements.
+ 
+ 2022-02-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104466
+ 	* tree-ssa-alias.cc (refs_may_alias_p_2): Use rbase1/rbase2
+ 	for the MR_DEPENDENCE checks as intended.
+ 
+ 2022-02-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md (define_insn "nvptx_atomic_store<mode>"): New
+ 	define_insn.
+ 	(define_expand "atomic_store<mode>"): Use nvptx_atomic_store<mode> for
+ 	TARGET_SM70.
+ 	(define_c_enum "unspecv"): Add UNSPECV_ST.
+ 
+ 2022-02-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx-protos.h (nvptx_mem_maybe_shared_p): Declare.
+ 	* config/nvptx/nvptx.cc (nvptx_mem_data_area): New static function.
+ 	(nvptx_mem_maybe_shared_p): New function.
+ 	* config/nvptx/nvptx.md (define_expand "atomic_store<mode>"): New
+ 	define_expand.
+ 
+ 2022-02-10  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/97005
+ 	* config/nvptx/nvptx.md (define_insn "sub<mode>3"): Workaround
+ 	driver JIT bug by using sub.s16 instead of sub.u16.
+ 
+ 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (copysign<mode>3): Allow immediate
+ 	floating point constants as operands 1 and/or 2.
+ 
+ 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR target/104345
+ 	* config/nvptx/nvptx.md (sel_true<mode>): Fix indentation.
+ 	(sel_false<mode>): Likewise.
+ 	(define_code_iterator eqne): New code iterator for EQ and NE.
+ 	(*selp<mode>_neg_<code>): New define_insn_and_split to optimize
+ 	the negation of a selp instruction.
+ 	(*selp<mode>_not_<code>): New define_insn_and_split to optimize
+ 	the bitwise not of a selp instruction.
+ 	(*setcc_int<mode>): Use set instruction for neg:SI of a selp.
+ 
+ 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (any_logic): Move code iterator earlier
+ 	in machine description.
+ 	(logic): Move code attribute earlier in machine description.
+ 	(ilogic): New code attribute, like logic but "ior" for IOR.
+ 	(and<mode>3, ior<mode>3, xor<mode>3): Delete. Replace with...
+ 	(<ilogic><mode>3): New define_insn for HSDIM logic operations.
+ 	(<ilogic>bi3): New define_insn for BI mode logic operations.
+ 	(define_split): Lower logic operations from integer modes to
+ 	BI mode predicate operations.
+ 
+ 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (UNSPEC_ISINF): New UNSPEC.
+ 	(one_cmplbi2): New define_insn for not.pred.
+ 	(mulditi3): New define_expand for signed widening multiply.
+ 	(umulditi3): New define_expand for unsigned widening multiply.
+ 	(smul<mode>3_highpart): New define_insn for signed highpart mult.
+ 	(umul<mode>3_highpart): New define_insn for unsigned highpart mult.
+ 	(*smulhi3_highpart_2): Renamed from smulhi3_highpart.
+ 	(*smulsi3_highpart_2): Renamed from smulsi3_highpart.
+ 	(*umulhi3_highpart_2): Renamed from umulhi3_highpart.
+ 	(*umulsi3_highpart_2): Renamed from umulsi3_highpart.
+ 	(*setcc<mode>_from_not_bi): New define_insn.
+ 	(*setcc_isinf<mode>): New define_insn for testp.infinite.
+ 	(isinf<mode>2): New define_expand.
+ 
+ 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (cmp<mode>): Renamed from *cmp<mode>.
+ 	(setcc<mode>_from_bi): Additionally support QImode.
+ 	(extendbi<mode>2): Additionally support QImode.
+ 	(zero_extendbi<mode>2): Additionally support QImode.
+ 	(any_sbinary, any_ubinary, any_sunary, any_uunary): New code
+ 	iterators for signed and unsigned, binary and unary operations.
+ 	(<sbinary>qi3, <ubinary>qi3, <sunary>qi2, <uunary>qi2): New
+ 	expanders to perform QImode operations using SImode instructions.
+ 	(cstoreqi4): New define_expand.
+ 	(*ext_truncsi2_qi): New define_insn.
+ 	(*zext_truncsi2_qi): New define_insn.
+ 
+ 2022-02-10  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (*cmpf): New define_insn.
+ 	(cstorehf4): New define_expand.
+ 	(fmahf4): New define_insn.
+ 	(neghf2): New define_insn.
+ 	(abshf2): New define_insn.
+ 
+ 2022-02-10  Gerald Pfeifer  <gerald@pfeifer.com>
+ 
+ 	* doc/install.texi (Specific): Change the www.bitwizard.nl
+ 	reference to use https.
+ 
+ 2022-02-10  Marcel Vollweiler  <marcel@codesourcery.com>
+ 
+ 	* gimplify.cc (gimplify_scan_omp_clauses): Added cases for
+ 	OMP_CLAUSE_HAS_DEVICE_ADDR
+ 	and handle array sections.
+ 	(gimplify_adjust_omp_clauses): Added OMP_CLAUSE_HAS_DEVICE_ADDR case.
+ 	* omp-low.cc (scan_sharing_clauses): Handle OMP_CLAUSE_HAS_DEVICE_ADDR.
+ 	(lower_omp_target): Same.
+ 	* tree-core.h (enum omp_clause_code): Same.
+ 	* tree-nested.cc (convert_nonlocal_omp_clauses): Same.
+ 	(convert_local_omp_clauses): Same.
+ 	* tree-pretty-print.cc (dump_omp_clause): Same.
+ 	* tree.cc: Same.
+ 
+ 2022-02-10  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* auto-profile.cc (afdo_indirect_call): Don't attempt to promote indirect calls
+ 	that will result in direct recursive calls.
+ 
+ 2022-02-10  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/104474
+ 	* config/aarch64/aarch64.cc
+ 	(aarch64_sve_expand_vector_init_handle_trailing_constants):
+ 	Use CONST0_RTX instead of const0_rtx for the non-constant elements.
+ 
+ 2022-02-09  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104462
+ 	* common/config/i386/i386-common.cc (OPTION_MASK_ISA2_XSAVE_UNSET):
+ 	Also include OPTION_MASK_ISA2_AVX2_UNSET.
+ 
+ 2022-02-09  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104458
+ 	* config/i386/i386-expand.cc (ix86_split_idivmod):
+ 	Force operands[2] and operands[3] into a register..
+ 
+ 2022-02-09  Jeff Law  <jeffreyalaw@gmail.com>
+ 
+ 	PR target/97040
+ 	* config/v850/v850.md (*v850_fnmasf4): Renamed from fnmasf4.
+ 	(*v850_fnmssf4): Renamed from fnmssf4
+ 
+ 2022-02-09  Ian Lance Taylor  <iant@golang.org>
+ 
+ 	* godump.cc (go_force_record_alignment): Really name the alignment
+ 	field "_" (complete 2021-12-29 change).
+ 
+ 2022-02-09  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtins.def (VREPLACE_UN_UV2DI): Change
+ 	function prototype.
+ 	(VREPLACE_UN_UV4SI): Likewise.
+ 	(VREPLACE_UN_V2DF): Likewise.
+ 	(VREPLACE_UN_V2DI): Likewise.
+ 	(VREPLACE_UN_V4SF): Likewise.
+ 	(VREPLACE_UN_V4SI): Likewise.
+ 	* config/rs6000/rs6000-overload.def (VEC_REPLACE_UN): Change all
+ 	function prototypes.
+ 	* config/rs6000/vsx.md (vreplace_un_<mode>): Remove define_expand.
+ 	(vreplace_un_<mode>): New define_insn.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (VDCSIF): New mode iterator.
+ 	(VDBL): Handle SF.
+ 	(single_wx, single_type, single_dtype, dblq): New mode attributes.
+ 	* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): Extend
+ 	from VDC to VDCSIF.
+ 	(store_pair_lanes<mode>): Likewise.
+ 	(*aarch64_combine_internal<mode>): Likewise.
+ 	(*aarch64_combine_internal_be<mode>): Likewise.
+ 	(*aarch64_combinez<mode>): Likewise.
+ 	(*aarch64_combinez_be<mode>): Likewise.
+ 	* config/aarch64/aarch64.cc (aarch64_classify_address): Handle
+ 	8-byte modes for ADDR_QUERY_LDP_STP_N.
+ 	(aarch64_print_operand): Likewise for %y.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (@aarch64_split_simd_mov<mode>):
+ 	Use aarch64_combine instead of move_lo/hi_quad.  Tabify.
+ 	(move_lo_quad_<mode>, aarch64_simd_move_hi_quad_<mode>): Delete.
+ 	(aarch64_simd_move_hi_quad_be_<mode>, move_hi_quad_<mode>): Delete.
+ 	(vec_pack_trunc_<mode>): Take general_operand elements and use
+ 	aarch64_combine rather than move_lo/hi_quad to combine them.
+ 	(vec_pack_trunc_df): Likewise.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_split_simd_combine):
+ 	Delete.
+ 	* config/aarch64/aarch64-simd.md (@aarch64_combinez<mode>): Rename
+ 	to...
+ 	(*aarch64_combinez<mode>): ...this.
+ 	(@aarch64_combinez_be<mode>): Rename to...
+ 	(*aarch64_combinez_be<mode>): ...this.
+ 	(@aarch64_vec_concat<mode>): New expander.
+ 	(aarch64_combine<mode>): Use it.
+ 	(@aarch64_simd_combine<mode>): Delete.
+ 	* config/aarch64/aarch64.cc (aarch64_split_simd_combine): Delete.
+ 	(aarch64_expand_vector_init): Use aarch64_vec_concat.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/predicates.md (aarch64_reg_or_mem_pair_operand):
+ 	New predicate.
+ 	* config/aarch64/aarch64-simd.md (*aarch64_combine_internal<mode>)
+ 	(*aarch64_combine_internal_be<mode>): New patterns.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (move_lo_quad_internal_<mode>)
+ 	(move_lo_quad_internal_be_<mode>): Delete.
+ 	(move_lo_quad_<mode>): Use aarch64_combine<Vhalf> instead of the above.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-protos.h (aarch64_mergeable_load_pair_p):
+ 	Declare.
+ 	* config/aarch64/aarch64-simd.md (load_pair_lanes<mode>): Use
+ 	aarch64_mergeable_load_pair_p instead of inline check.
+ 	* config/aarch64/aarch64.cc (aarch64_expand_vector_init): Likewise.
+ 	(aarch64_check_consecutive_mems): Allow the reversed parameter
+ 	to be null.
+ 	(aarch64_mergeable_load_pair_p): New function.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (vec_set<mode>): Allow the
+ 	element to be an aarch64_simd_nonimmediate_operand.
+ 
+ 2022-02-09  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (aarch64_simd_vec_set<mode>): Use
+ 	aarch64_simd_nonimmediate_operand instead of
+ 	aarch64_simd_general_operand.
+ 	(@aarch64_combinez<mode>): Use nonimmediate_operand instead of
+ 	general_operand.
+ 	(@aarch64_combinez_be<mode>): Likewise.
+ 
+ 2022-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104464
+ 	* gimple-isel.cc (gimple_expand_vec_cond_expr): Postpone
+ 	throwing check to after unproblematic replacement.
+ 
+ 2022-02-09  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR tree-optimization/104420
+ 	* match.pd (mult @0 real_zerop): Tweak conditions for constant
+ 	folding X*0.0 (or X*-0.0) to HONOR_SIGNED_ZEROS when appropriate.
+ 
+ 2022-02-09  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104407
+ 	* dwarf2out.cc (mangle_referenced_decls): New function.
+ 	(tree_add_const_value_attribute): Don't call rtl_for_decl_init if
+ 	early_dwarf.  Instead walk the initializer and try to mangle vars or
+ 	functions referenced from it.
+ 
+ 2022-02-09  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/104288
+ 	* gimple-range-cache.cc (non_null_ref::set_nonnull): New.
+ 	(non_null_ref::adjust_range): Move to header.
+ 	(ranger_cache::range_of_def): Don't check non-null.
+ 	(ranger_cache::entry_range): Don't check non-null.
+ 	(ranger_cache::range_on_edge): Check for nonnull on normal edges.
+ 	(ranger_cache::update_to_nonnull): New.
+ 	(non_null_loadstore): New.
+ 	(ranger_cache::block_apply_nonnull): New.
+ 	* gimple-range-cache.h (class non_null_ref): Update prototypes.
+ 	(non_null_ref::adjust_range): Move to here and inline.
+ 	(class ranger_cache): Update prototypes.
+ 	* gimple-range-path.cc (path_range_query::range_defined_in_block): Do
+ 	not search dominators.
+ 	(path_range_query::adjust_for_non_null_uses): Ditto.
+ 	* gimple-range.cc (gimple_ranger::range_of_expr): Check on-entry for
+ 	def overrides.  Do not check nonnull.
+ 	(gimple_ranger::range_on_entry): Check dominators for nonnull.
+ 	(gimple_ranger::range_on_edge): Check for nonnull on normal edges..
+ 	(gimple_ranger::register_side_effects): New.
+ 	* gimple-range.h (gimple_ranger::register_side_effects): New.
+ 	* tree-vrp.cc (rvrp_folder::fold_stmt): Call register_side_effects.
+ 
+ 2022-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104445
+ 	PR tree-optimization/102832
+ 	* optabs-query.h (can_vec_extract): New.
+ 	* optabs-query.cc (can_vec_extract): Likewise.
+ 	* tree-vect-loop.cc (vect_find_reusable_accumulator): Check
+ 	we can extract a hi/lo part from the larger vector, rework
+ 	check iteration from larger to smaller sizes.
+ 
+ 2022-02-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/35513
+ 	PR target/100593
+ 	* config/i386/gnu-property.cc: Include "i386-protos.h".
+ 	(file_end_indicate_exec_stack_and_gnu_property): Generate
+ 	a GNU_PROPERTY_1_NEEDED note for -mno-direct-extern-access or
+ 	nodirect_extern_access attribute.
+ 	* config/i386/i386-options.cc
+ 	(handle_nodirect_extern_access_attribute): New function.
+ 	(ix86_attribute_table): Add nodirect_extern_access attribute.
+ 	* config/i386/i386-protos.h (ix86_force_load_from_GOT_p): Add a
+ 	bool argument.
+ 	(ix86_has_no_direct_extern_access): New.
+ 	* config/i386/i386.cc (ix86_has_no_direct_extern_access): New.
+ 	(ix86_force_load_from_GOT_p): Add a bool argument to indicate
+ 	call operand.  Force non-call load from GOT for
+ 	-mno-direct-extern-access or nodirect_extern_access attribute.
+ 	(legitimate_pic_address_disp_p): Avoid copy relocation in PIE
+ 	for -mno-direct-extern-access or nodirect_extern_access attribute.
+ 	(ix86_print_operand): Pass true to ix86_force_load_from_GOT_p
+ 	for call operand.
+ 	(asm_preferred_eh_data_format): Use PC-relative format for
+ 	-mno-direct-extern-access to avoid copy relocation.  Check
+ 	ptr_mode instead of TARGET_64BIT when selecting DW_EH_PE_sdata4.
+ 	(ix86_binds_local_p): Set ix86_has_no_direct_extern_access to
+ 	true for -mno-direct-extern-access or nodirect_extern_access
+ 	attribute.  Don't treat protected data as extern and avoid copy
+ 	relocation on common symbol with -mno-direct-extern-access or
+ 	nodirect_extern_access attribute.
+ 	(ix86_reloc_rw_mask): New to avoid copy relocation for
+ 	-mno-direct-extern-access.
+ 	(TARGET_ASM_RELOC_RW_MASK): New.
+ 	* config/i386/i386.opt: Add -mdirect-extern-access.
+ 	* doc/extend.texi: Document nodirect_extern_access attribute.
+ 	* doc/invoke.texi: Document -m[no-]direct-extern-access.
+ 
+ 2022-02-09  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104441
+ 	* config/i386/i386.cc (ix86_avx_u128_mode_source): New function.
+ 	(ix86_avx_u128_mode_needed): Return AVX_U128_ANY for debug INSN.
+ 	Call ix86_avx_u128_mode_source to check mode for each component
+ 	of source operand.
+ 
+ 2022-02-09  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104451
+ 	* config/i386/sse.md (<insn><mode>3): lowpart_subreg
+ 	operands[2] from SImode to QImode.
+ 
+ 2022-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104450
+ 	* gimple-isel.cc: Pass cfun around.
+ 	(+gimple_expand_vec_cond_expr): Do not combine a throwing
+ 	comparison with the select.
+ 
+ 2022-02-09  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/104453
+ 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Guard shift
+ 	folding for NULL LHS.
+ 
+ 2022-02-08  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	PR rtl-optimization/104198
+ 	PR rtl-optimization/104153
+ 	* ifcvt.cc (noce_convert_multiple_sets_1): Copy rtx instead of
+ 	using it directly.  Rework comparison handling and always
+ 	perform a second pass.
+ 
+ 2022-02-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102140
+ 	* config/rs6000/rs6000.cc (vspltis_shifted): Return false also if
+ 	split1 pass has finished already.
+ 
+ 2022-02-08  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-builtins.def (VMSUMCUD): New.
+ 	* config/rs6000/rs6000-overload.def (VEC_MSUMC): New.
+ 	* config/rs6000/vsx.md (UNSPEC_VMSUMCUD): New constant.
+ 	(vmsumcud): New define_insn.
+ 
+ 2022-02-08  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx-opts.h (enum ptx_isa): Add PTX_ISA_SM70.
+ 	* config/nvptx/nvptx.h (TARGET_SM70): Define.
+ 
+ 2022-02-08  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* config/s390/s390.cc (s390_rtx_costs): Increase costs for load
+ 	on condition.
+ 	* config/s390/s390.md: Use paradoxical subreg.
+ 
+ 2022-02-08  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* combine.cc (reg_subword_p): Check for paradoxical subreg.
+ 
+ 2022-02-08  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104283
+ 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add PTX_VERSION_3_0
+ 	and PTX_VERSION_4_2.
+ 	* config/nvptx/nvptx.cc (first_ptx_version_supporting_sm)
+ 	(default_ptx_version_option, ptx_version_to_string)
+ 	(sm_version_to_string, handle_ptx_version_option): New function.
+ 	(nvptx_option_override): Call handle_ptx_version_option.
+ 	(nvptx_file_start): Use ptx_version_to_string and sm_version_to_string.
+ 	* config/nvptx/nvptx.md (define_insn "nvptx_shuffle<mode>")
+ 	(define_insn "nvptx_vote_ballot"): Use TARGET_PTX_6_0.
+ 	* config/nvptx/nvptx.opt (mptx): Remove 'Init'.
+ 
+ 2022-02-08  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* doc/install.texi (Configuration): Document `--with-isa-spec='
+ 	RISC-V option.
+ 	* doc/invoke.texi (Option Summary): List `-misa-spec=' RISC-V
+ 	option.
+ 	(RISC-V Options): Document it.
+ 
+ 2022-02-08  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/t-riscv (riscv-sr.o): Add $(TM_H) dependency.
+ 
+ 2022-02-08  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (write_fn_proto_1): Handle 'main (int)'.
+ 
+ 2022-02-08  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/104364
+ 	* config/nvptx/nvptx-protos.h (nvptx_mem_local_p): Declare.
+ 	* config/nvptx/nvptx.cc (nvptx_reorg_uniform_simt): Assert that
+ 	change is validated.
+ 	(nvptx_mem_local_p): New function.
+ 	* config/nvptx/nvptx.md: Use nvptx_mem_local_p.
+ 	(define_c_enum "unspecv"): Add UNSPECV_CAS_LOCAL.
+ 	(define_insn "atomic_compare_and_swap<mode>_1_local"): New
+ 	non-atomic, non-predicable define_insn, factored out of ...
+ 	(define_insn "atomic_compare_and_swap<mode>_1"): ... here.
+ 	Make predicable again.
+ 	(define_expand "atomic_compare_and_swap<mode>"): Use
+ 	atomic_compare_and_swap<mode>_1_local.
+ 
+ 2022-02-08  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR rtl-optimization/104059
+ 	* regcprop.cc (copyprop_hardreg_forward_1): Don't propagate
+ 	for a more expensive reg-reg move.
+ 
+ 2022-02-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vusdotq_s32, vusdot_laneq_s32,
+ 	vusdotq_laneq_s32, vsudot_laneq_s32, vsudotq_laneq_s32): New
+ 	* config/arm/arm_neon_builtins.def (usdot): Add V16QI.
+ 	(usdot_laneq, sudot_laneq): New.
+ 	* config/arm/neon.md (neon_<sup>dot_laneq<vsi2qi>): New.
+ 	(neon_<sup>dot_lane<vsi2qi>): Remote unneeded code.
+ 
+ 2022-02-07  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	* config/arm/arm_neon.h (vdot_laneq_u32, vdotq_laneq_u32,
+ 	vdot_laneq_s32, vdotq_laneq_s32): New.
+ 	* config/arm/arm_neon_builtins.def (sdot_laneq, udot_laneq): New.
+ 	* config/arm/neon.md (neon_<sup>dot<vsi2qi>): New.
+ 	(<sup>dot_prod<vsi2qi>): Re-order rtl.
+ 	(neon_<sup>dot_lane<vsi2qi>): Fix rtl order and endiannes.
+ 	(neon_<sup>dot_laneq<vsi2qi>): New.
+ 
+ 2022-02-07  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR target/104327
+ 	* config/s390/s390.cc (s390_can_inline_p): Accept a few more flags
+ 	if always_inline is set. Don't inline when tune differs without
+ 	always_inline.
+ 
+ 2022-02-07  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/104402
+ 	* gimple-expr.cc (is_gimple_condexpr): _Complex typed
+ 	compares are not valid.
+ 	* tree-cfg.cc (verify_gimple_assign_ternary): For COND_EXPR
+ 	check is_gimple_condexpr.
+ 
+ 2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103627
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Move the
+ 	hunk affecting VSX and ALTIVEC to appropriate place.
+ 
+ 2022-02-07  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103627
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Disable
+ 	MMA if !TARGET_VSX.
+ 
+ 2022-02-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89074
+ 	PR c++/104033
+ 	* fold-const.h (folding_initializer): Adjust comment.
+ 	(folding_cxx_constexpr): Declare.
+ 	* fold-const.cc (folding_initializer): Adjust comment.
+ 	(folding_cxx_constexpr): New variable.
+ 	(address_compare): Restrict the decl vs. STRING_CST
+ 	or vice versa or STRING_CST vs. STRING_CST or
+ 	is_global_var != is_global_var optimizations to !folding_cxx_constexpr.
+ 	Punt for FUNCTION_DECLs with non-zero offsets.  If folding_initializer,
+ 	assume non-aliased functions have non-zero size and have different
+ 	addresses.  For folding_cxx_constexpr, punt on comparisons of start
+ 	of some object and end of another one, regardless whether it is a decl
+ 	or string literal.  Also punt for folding_cxx_constexpr on
+ 	STRING_CST vs. STRING_CST comparisons if the two literals could be
+ 	overlapping.
+ 
+ 2022-02-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104389
+ 	* match.pd (x * 0 -> 0): Punt if x maybe infinite and NaNs are
+ 	honored.
+ 
+ 2022-02-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* configure.ac: Fix detection for zifencei support.
+ 	* configure: Regenerate.
+ 
+ 2022-02-05  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	PR target/104219
+ 	* config.gcc (riscv*-*-*): Normalize the with_isa_spec value.
+ 	(all_defaults): Add isa_spec.
+ 	* config/riscv/riscv.h (OPTION_DEFAULT_SPECS): Add isa_spec.
+ 
+ 2022-02-04  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-c.cc (resolve_vec_mul): Accept args and types
+ 	parameters instead of arglist and nargs.  Simplify accordingly.  Remove
+ 	unnecessary test for argument count mismatch.
+ 	(resolve_vec_cmpne): Likewise.
+ 	(resolve_vec_adde_sube): Likewise.
+ 	(resolve_vec_addec_subec): Likewise.
+ 	(altivec_resolve_overloaded_builtin): Move overload special handling
+ 	after the gathering of arguments into args[] and types[] and the test
+ 	for correct number of arguments.  Don't perform the test for correct
+ 	number of arguments for certain special cases.  Call the other special
+ 	cases with args and types instead of arglist and nargs.
+ 
+ 2022-02-04  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/100808
+ 	* doc/extend.texi (Basic PowerPC Built-in Functions Available on ISA
+ 	3.1): Provide consistent type names.  Remove unnecessary semicolons.
+ 	Fix bad line breaks.
+ 
+ 2022-02-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104380
+ 	* config/rs6000/rs6000.cc (rs6000_mangle_decl_assembler_name): Also
+ 	adjust mangling of __builtin*printf_chk.
+ 
+ 2022-02-04  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* doc/cpp.texi (Variadic Macros): Replace C++2a with C++20.
+ 
+ 2022-02-04  Richard Biener  <rguenther@suse.de>
+ 	    Bin Cheng   <bin.cheng@linux.alibaba.com>
+ 
+ 	PR tree-optimization/100499
+ 	* fold-const.h (multiple_of_p): Add nowrap parameter, defaulted
+ 	to true.
+ 	* fold-const.cc (multiple_of_p): Likewise.  Honor it for
+ 	MULT_EXPR, PLUS_EXPR and MINUS_EXPR and pass it along,
+ 	switching to false for conversions.
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_ne): Do not
+ 	claim the outermost expression does not wrap when calling
+ 	multiple_of_p.  Refactor the check done to check the
+ 	original IV, avoiding a bias that might wrap.
+ 
+ 2022-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	* fold-const.cc (multiple_of_p): Re-write and move LSHIFT_EXPR
+ 	handling.
+ 
+ 2022-02-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR debug/104366
+ 	* dwarf2out.cc (dwarf2out_finish): Empty base_types.
+ 	(dwarf2out_early_finish): Likewise.
+ 
+ 2022-02-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR tree-optimization/104356
+ 	* match.pd (X / bool_range_Y is X): Add guard.
+ 	(X / X is one): Likewise.
+ 	(X / abs (X) is X < 0 ? -1 : 1): Likewise.
+ 	(X / -X is -1): Likewise.
+ 	(1 / X -> X == 1): Likewise.
+ 
+ 2022-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103641
+ 	* tree-vect-patterns.cc (vect_synth_mult_by_constant):
+ 	Pass the vector mode to choose_mult_variant.
+ 
+ 2022-02-04  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR rtl-optimization/101885
+ 	* combine.cc (try_combine): When splitting a parallel into two
+ 	sequential sets, check not only that the first doesn't clobber
+ 	the second but also that the second doesn't clobber the first.
+ 
+ 2022-02-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/90348
+ 	PR middle-end/104092
+ 	* tree-core.h (clobber_kind): New enum.
+ 	(tree_base::u::bits::address_space): Document use in CONSTRUCTORs.
+ 	* tree.h (CLOBBER_KIND): Add.
+ 	(build_clobber): Add clobber kind argument, defaulted to
+ 	CLOBBER_UNDEF.
+ 	* tree.cc (build_clobber): Likewise.
+ 	* gimple.h (gimple_clobber_p): New overload with specified kind.
+ 	* tree-streamer-in.cc (streamer_read_tree_bitfields): Stream
+ 	CLOBBER_KIND.
+ 	* tree-streamer-out.cc (streamer_write_tree_bitfields):
+ 	Likewise.
+ 	* tree-pretty-print.cc (dump_generic_node): Mark EOL CLOBBERs.
+ 	* gimplify.cc (gimplify_bind_expr): Build storage end-of-life clobbers
+ 	with CLOBBER_EOL.
+ 	(gimplify_target_expr): Likewise.
+ 	* tree-inline.cc (expand_call_inline): Likewise.
+ 	* tree-ssa-ccp.cc (insert_clobber_before_stack_restore): Likewise.
+ 	* gimple-ssa-warn-access.cc (pass_waccess::check_stmt): Only treat
+ 	CLOBBER_EOL clobbers as ending lifetime of storage.
+ 
+ 2022-02-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* pointer-query.h (pointer_query::cache_type): Use auto_vec for auto
+ 	cleanup.
+ 
+ 2022-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/104260
+ 	* passes.def (pass_warn_access): Adjust pass placement.
+ 
+ 2022-02-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104362
+ 	* config/i386/i386.cc (find_drap_reg): For 32bit targets
+ 	return DI_REG if function uses __builtin_eh_return.
+ 
+ 2022-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-warn-restrict.cc (class pass_wrestrict): Outline ctor.
+ 	(pass_wrestrict::m_ptr_qry): New member.
+ 	(wrestrict_walk): Rename...
+ 	(pass_wrestrict::check_block): ...to this.
+ 	(pass_wrestrict::execute): Set up and tear down pointer_query and
+ 	ranger.
+ 	(builtin_memref::builtin_memref): Change ctor argument.  Simplify.
+ 	(builtin_access::builtin_access): Same.
+ 	(builtin_access::m_ptr_qry): New member.
+ 	(check_call): Rename...
+ 	(pass_wrestrict::check_call): ...to this.
+ 	(check_bounds_or_overlap): Change argument.
+ 	* gimple-ssa-warn-restrict.h (check_bounds_or_overlap): Same.
+ 
+ 2022-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-array-bounds.cc (array_bounds_checker::array_bounds_checker):
+ 	Define ctor.
+ 	(array_bounds_checker::get_value_range): Use new member.
+ 	(array_bounds_checker::check_mem_ref): Same.
+ 	* gimple-array-bounds.h (array_bounds_checker::array_bounds_checker):
+ 	Outline ctor.
+ 	(array_bounds_checker::m_ptr_query): New member.
+ 
+ 2022-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc (pass_waccess::pass_waccess): Remove
+ 	pointer_query cache.
+ 	* pointer-query.cc (pointer_query::pointer_query): Remove cache
+ 	argument.  Zero-initialize new cache member.
+ 	(pointer_query::get_ref): Replace cache pointer with direct access.
+ 	(pointer_query::put_ref): Same.
+ 	(pointer_query::flush_cache): Same.
+ 	(pointer_query::dump): Same.
+ 	* pointer-query.h (class pointer_query): Remove cache argument from
+ 	ctor.  Change cache pointer to cache subobject member.
+ 	* tree-ssa-strlen.cc: Remove pointer_query cache.
+ 
+ 2022-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/104119
+ 	* gimple-ssa-sprintf.cc (struct directive): Change argument type.
+ 	(format_none): Same.
+ 	(format_percent): Same.
+ 	(format_integer): Same.
+ 	(format_floating): Same.
+ 	(get_string_length): Same.
+ 	(format_character): Same.
+ 	(format_string): Same.
+ 	(format_plain): Same.
+ 	(format_directive): Same.
+ 	(compute_format_length): Same.
+ 	(handle_printf_call): Same.
+ 	* tree-ssa-strlen.cc (get_range_strlen_dynamic): Same.   Call
+ 	get_maxbound.
+ 	(get_range_strlen_phi): Same.
+ 	(get_maxbound): New function.
+ 	(strlen_pass::get_len_or_size): Adjust to parameter change.
+ 	* tree-ssa-strlen.h (get_range_strlen_dynamic): Change argument type.
+ 
+ 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/103686
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_gimple_fold_builtin):	Remove
+ 	test for !rs6000_fold_gimple.
+ 	* config/rs6000/rs6000.cc (rs6000_option_override_internal): Likewise.
+ 	* config/rs6000/rs6000.opt (mfold-gimple): Remove.
+ 
+ 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/95082
+ 	* config/rs6000/rs6000-builtin.cc (rs6000_expand_builtin): Handle
+ 	endianness for vclzlsbb and vctzlsbb.
+ 	* config/rs6000/rs6000-builtins.def (VCLZLSBB_V16QI): Change
+ 	default pattern and indicate a different pattern will be used for
+ 	big endian.
+ 	(VCLZLSBB_V4SI): Likewise.
+ 	(VCLZLSBB_V8HI): Likewise.
+ 	(VCTZLSBB_V16QI): Likewise.
+ 	(VCTZLSBB_V4SI): Likewise.
+ 	(VCTZLSBB_V8HI): Likewise.
+ 
+ 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config.gcc (powerpc*-*-*): Add rs6000-builtin.o to extra_objs.
+ 	* config/rs6000/rs6000-builtin.cc: New file, containing code moved
+ 	from other files.
+ 	* config/rs6000/rs6000-call.cc (cpu_is_info): Move to
+ 	rs6000-builtin.cc.
+ 	(cpu_supports_info): Likewise.
+ 	(rs6000_type_string): Likewise.
+ 	(altivec_expand_predicate_builtin): Likewise.
+ 	(rs6000_htm_spr_icode): Likewise.
+ 	(altivec_expand_vec_init_builtin): Likewise.
+ 	(get_element_number): Likewise.
+ 	(altivec_expand_vec_set_builtin): Likewise.
+ 	(altivec_expand_vec_ext_builtin): Likewise.
+ 	(rs6000_invalid_builtin): Likewise.
+ 	(rs6000_fold_builtin): Likewise.
+ 	(fold_build_vec_cmp): Likewise.
+ 	(fold_compare_helper): Likewise.
+ 	(map_to_integral_tree_type): Likewise.
+ 	(fold_mergehl_helper): Likewise.
+ 	(fold_mergeeo_helper): Likewise.
+ 	(rs6000_builtin_valid_without_lhs): Likewise.
+ 	(rs6000_builtin_is_supported): Likewise.
+ 	(rs6000_gimple_fold_mma_builtin): Likewise.
+ 	(rs6000_gimple_fold_builtin): Likewise.
+ 	(rs6000_expand_ldst_mask): Likewise.
+ 	(cpu_expand_builtin): Likewise.
+ 	(elemrev_icode): Likewise.
+ 	(ldv_expand_builtin): Likewise.
+ 	(lxvrse_expand_builtin): Likewise.
+ 	(lxvrze_expand_builtin): Likewise.
+ 	(stv_expand_builtin): Likewise.
+ 	(mma_expand_builtin): Likewise.
+ 	(htm_spr_num): Likewise.
+ 	(htm_expand_builtin): Likewise.
+ 	(rs6000_expand_builtin): Likewise.
+ 	(rs6000_vector_type): Likewise.
+ 	(rs6000_init_builtins): Likewise.  Remove initialization of
+ 	builtin_mode_to_type entries.
+ 	(rs6000_builtin_decl): Move to rs6000-builtin.cc.
+ 	* config/rs6000/rs6000.cc (rs6000_builtin_mask_for_load): New
+ 	external declaration.
+ 	(rs6000_builtin_md_vectorized_function): Likewise.
+ 	(rs6000_builtin_reciprocal): Likewise.
+ 	(altivec_builtin_mask_for_load): Move to rs6000-builtin.cc.
+ 	(rs6000_builtin_types): Likewise.
+ 	(builtin_mode_to_type): Remove.
+ 	(rs6000_builtin_mask_for_load): Move to rs6000-builtin.cc.  Remove
+ 	static qualifier.
+ 	(rs6000_builtin_md_vectorized_function): Likewise.
+ 	(rs6000_builtin_reciprocal): Likewise.
+ 	* config/rs6000/rs6000.h (builtin_mode_to_type): Remove.
+ 	* config/rs6000/t-rs6000 (rs6000-builtin.o): New target.
+ 
+ 2022-02-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR debug/104337
+ 	* tree-nrv.cc (pass_nrv::execute): Remove tieing result and found
+ 	together via DECL_ABSTRACT_ORIGIN.
+ 
+ 2022-02-03  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-call.cc (rs6000_expand_builtin): Revise error
+ 	message for RES_BITS case.
+ 
+ 2022-02-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* gimple-range-fold.cc (fur_list::fur_list): Set m_local[1] correctly.
+ 
+ 2022-02-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/arm/arm.opt (mfix-cortex-a57-aes-1742098,
+ 	mfix-cortex-a72-aes-1655431): Ensure description ends with full stop.
+ 
+ 2022-02-03  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	* cfganal.cc (verify_marked_backedges): New.
+ 	* cfganal.h (verify_marked_backedges): New.
+ 	* gimple-range-path.cc (path_range_query::path_range_query):
+ 	Verify freshness of back edges.
+ 	* tree-ssa-loop-ch.cc (ch_base::copy_headers): Call
+ 	mark_dfs_back_edges.
+ 	* tree-ssa-threadbackward.cc (back_threader::back_threader): Move
+ 	path_range_query construction after backedges have been
+ 	updated.
+ 
+ 2022-02-03  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/aarch64-simd.md (movmisalign<mode>): Extend from
+ 	VALL to VALL_F16.
+ 
+ 2022-02-03  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* config/aarch64/iterators.md (VALL_F16MOV): Delete.
+ 	* config/aarch64/aarch64-simd.md (mov<mode>): Use VALL_F16 instead
+ 	of VALL_F16MOV.
+ 
+ 2022-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/i386/i386-options.cc (ix86_valid_target_attribute_inner_p):
+ 	Change subject and object in the error message.
+ 	* config/s390/s390.cc (s390_valid_target_attribute_inner_p):
+ 	Likewise.
+ 
+ 2022-02-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/s390/s390.cc (s390_valid_target_attribute_inner_p):
+ 	Use the error message for i386 target.
+ 
+ 2022-02-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104334
+ 	* range-op.cc (range_operator::wi_fold_in_parts): Change lh_range
+ 	and rh_range type to widest_int and subtract in widest_int.  Remove
+ 	ov_rh, ov_lh and sign vars, always perform comparisons as signed
+ 	and use >, < and == operators for it.
+ 
+ 2022-02-03  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* common.opt (-Wuse-after-free): Correct typos.
+ 
+ 2022-02-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	PR analyzer/104270
+ 	* doc/invoke.texi (-ftrivial-auto-var-init=): Add reference to
+ 	-Wanalyzer-use-of-uninitialized-value to paragraph documenting that
+ 	-ftrivial-auto-var-init= doesn't suppress warnings.
+ 
+ 2022-02-02  Martin Liska  <mliska@suse.cz>
+ 
+ 	* dwarf2out.cc (TEXT_SECTION_NAME): Remove unused macro.
+ 
+ 2022-02-02  Bernd Kuhls  <bernd.kuhls@t-online.de>
+ 
+ 	PR target/94372
+ 	* config/or1k/linux.h (CPP_SPEC): Define.
+ 
+ 2022-02-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/102819
+ 	PR tree-optimization/103169
+ 	* config/arm/vec-common.md (cml<fcmac1><conj_op><mode>4): Use
+ 	canonical order.
+ 
+ 2022-02-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/102819
+ 	PR tree-optimization/103169
+ 	* config/aarch64/aarch64-simd.md (cml<fcmac1><conj_op><mode>4): Use
+ 	canonical order.
+ 	* config/aarch64/aarch64-sve.md (cml<fcmac1><conj_op><mode>4): Likewise.
+ 
+ 2022-02-02  Tamar Christina  <tamar.christina@arm.com>
+ 
+ 	PR tree-optimization/102819
+ 	PR tree-optimization/103169
+ 	* doc/md.texi: Update docs for cfms, cfma.
+ 	* tree-data-ref.h (same_data_refs): Accept optional offset.
+ 	* tree-vect-slp-patterns.cc (is_linear_load_p): Fix issue with repeating
+ 	patterns.
+ 	(vect_normalize_conj_loc): Remove.
+ 	(is_eq_or_top): Change to take two nodes.
+ 	(enum _conj_status, compatible_complex_nodes_p,
+ 	vect_validate_multiplication): New.
+ 	(class complex_add_pattern, complex_add_pattern::matches,
+ 	complex_add_pattern::recognize, class complex_mul_pattern,
+ 	complex_mul_pattern::recognize, class complex_fms_pattern,
+ 	complex_fms_pattern::recognize, class complex_operations_pattern,
+ 	complex_operations_pattern::recognize, addsub_pattern::recognize): Pass
+ 	new cache.
+ 	(complex_fms_pattern::matches, complex_mul_pattern::matches): Pass new
+ 	cache and use new validation code.
+ 	* tree-vect-slp.cc (vect_match_slp_patterns_2, vect_match_slp_patterns,
+ 	vect_analyze_slp): Pass along cache.
+ 	(compatible_calls_p): Expose.
+ 	* tree-vectorizer.h (compatible_calls_p, slp_node_hash,
+ 	slp_compat_nodes_map_t): New.
+ 	(class vect_pattern): Update signatures include new cache.
+ 
+ 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.cc (cris_preferred_reload_class): Reject
+ 	"eliminated" registers and small-enough constants unless
+ 	reloaded into a class that is a subset of GENERAL_REGS.
+ 	* config/cris/cris.md (attribute "cpu_variant"): New.
+ 	(attribute "enabled"): Conditionalize on a matching attribute
+ 	cpu_variant, if specified.
+ 	("*movsi_internal<setcc><setnz><setnzvc>"): For moves to and from
+ 	memory, add cpu-variant-enabled variants for "r" alternatives on
+ 	the far side of the "x" alternatives, preferring the "x" ones
+ 	only for variants where MOF is present (in addition to SRP).
+ 
+ 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.cc (cris_register_move_cost): Remove special pre-ira
+ 	extra cost for ALL_REGS.
+ 
+ 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/constraints.md (define_register_constraint "b"): Now
+ 	GENERAL_REGS.
+ 	* config/cris/cris.md (CRIS_ACR_REGNUM): Remove.
+ 	* config/cris/cris.h: (reg_class, REG_CLASS_NAMES)
+ 	(REG_CLASS_CONTENTS): Remove ACR_REGS, SPEC_ACR_REGS, GENNONACR_REGS,
+ 	and SPEC_GENNONACR_REGS.
+ 	* config/cris/cris.cc (cris_preferred_reload_class): Don't mention
+ 	ACR_REGS and return GENERAL_REGS instead of GENNONACR_REGS.
+ 
+ 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.md ("*movsi_internal<setcc><setnz><setnzvc>"):
+ 	Conditionalize on (sub-)register operands or operand 1 being 0.
+ 
+ 2022-02-02  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.h (TARGET_DEFAULT): Don't include MASK_MUL_BUG.
+ 	(MUL_BUG_ASM_DEFAULT): New macro.
+ 	(MAYBE_AS_NO_MUL_BUG_ABORT): Define in terms of MUL_BUG_ASM_DEFAULT.
+ 	* doc/invoke.texi (CRIS Options, -mmul-bug-workaround): Adjust
+ 	accordingly.
+ 
+ 2022-02-01  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* opts.cc (common_handle_option): Don't set param_early_inliner_max_iterations
+ 	to 10 for AutoFDO.
+ 
+ 2022-02-01  Eugene Rozenfeld  <erozen@microsoft.com>
+ 
+ 	* auto-profile.cc (auto_profile): Hard-code the number of iterations (10).
+ 
+ 2022-02-01  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* doc/install.texi:
+ 
+ 2022-02-01  Ilya Leoshkevich  <iii@linux.ibm.com>
+ 
+ 	* config/s390/s390.cc (s390_code_end): Do not switch back to
+ 	code section.
+ 
+ 2022-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104323
+ 	* config/rs6000/t-rs6000 (EXTRA_GTYPE_DEPS): Append rs6000-builtins.h
+ 	rather than $(srcdir)/config/rs6000/rs6000-builtins.def.
+ 	* config/rs6000/rs6000-gen-builtins.cc (write_decls): Don't use
+ 	GTY((user)) for struct bifdata and struct ovlddata.  Instead add
+ 	GTY((skip(""))) to members with pointer and enum types that don't need
+ 	to be tracked.  Add GTY(()) to rs6000_builtin_info and rs6000_instance_info
+ 	declarations.  Don't emit gt_ggc_mx and gt_pch_nx declarations.
+ 	(write_extern_fntype, write_fntype): Remove.
+ 	(write_fntype_init): Emit the fntype vars as automatic vars instead
+ 	of file scope ones.
+ 	(write_header_file): Don't iterate with write_extern_fntype.
+ 	(write_init_file): Don't iterate with write_fntype.  Don't emit
+ 	gt_ggc_mx and gt_pch_nx definitions.
+ 
+ 2022-02-01  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree.h (struct tree_vec_map_cache_hasher): Move from...
+ 	* tree.cc (struct tree_vec_map_cache_hasher): ...here.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_single): Use nvptx_uniform_warp_check.
+ 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
+ 	UNSPECV_UNIFORM_WARP_CHECK.
+ 	(define_insn "nvptx_uniform_warp_check"): New define_insn.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_single): Use nvptx_warpsync.
+ 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
+ 	UNSPECV_WARPSYNC.
+ 	(define_insn "nvptx_warpsync"): New define_insn.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.opt (mptx): Set to PTX_VERSION_6_3 by default.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx-opts.h (enum ptx_version): Add PTX_VERSION_6_0.
+ 	* config/nvptx/nvptx.h (TARGET_PTX_6_0): New macro.
+ 	* config/nvptx/nvptx.md (define_insn "nvptx_barsync"): Use barrier
+ 	insn for TARGET_PTX_6_0.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	PR target/100428
+ 	* config/nvptx/nvptx.cc (prevent_branch_around_nothing): Handle nop
+ 	insn.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.md (define_insn "atomic_compare_and_swap<mode>_1")
+ 	(define_insn "atomic_exchange<mode>")
+ 	(define_insn "atomic_fetch_add<mode>")
+ 	(define_insn "atomic_fetch_addsf")
+ 	(define_insn "atomic_fetch_<logic><mode>"): Output non-atomic version
+ 	if memory operands is frame-relative.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* config/nvptx/nvptx.cc (enum nvptx_builtins): Add
+ 	NVPTX_BUILTIN_MEMBAR_GL and NVPTX_BUILTIN_MEMBAR_CTA.
+ 	(VOID): New macro.
+ 	(nvptx_init_builtins): Add MEMBAR_GL and MEMBAR_CTA.
+ 	(nvptx_expand_builtin): Handle NVPTX_BUILTIN_MEMBAR_GL and
+ 	NVPTX_BUILTIN_MEMBAR_CTA.
+ 	(nvptx_lockfull_update): Add level parameter.  Emit barriers.
+ 	(nvptx_reduction_update, nvptx_goacc_reduction_fini): Update call to
+ 	nvptx_lockfull_update.
+ 	* config/nvptx/nvptx.md (define_c_enum "unspecv"): Add
+ 	UNSPECV_MEMBAR_GL.
+ 	(define_expand "nvptx_membar_gl"): New expand.
+ 	(define_insn "*nvptx_membar_gl"): New insn.
+ 
+ 2022-02-01  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/install.texi: Remove option for GCC < 4.8.
+ 
+ 2022-02-01  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104307
+ 	* tree-vect-generic.cc (expand_vector_comparison): Don't push debug
+ 	stmts to uses vector, just set vec_cond_expr_only to false for
+ 	non-VEC_COND_EXPRs instead of pushing them into uses.  Treat
+ 	VEC_COND_EXPRs that use lhs not just in rhs1, but rhs2 or rhs3 too
+ 	like non-VEC_COND_EXPRs.
+ 
+ 2022-02-01  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-overload.def (VEC_ABSD): Remove #ifdef token.
+ 	(VEC_BLENDV): Likewise.
+ 	(VEC_BPERM): Likewise.
+ 	(VEC_CFUGE): Likewise.
+ 	(VEC_CIPHER_BE): Likewise.
+ 	(VEC_CIPHERLAST_BE): Likewise.
+ 	(VEC_CLRL): Likewise.
+ 	(VEC_CLRR): Likewise.
+ 	(VEC_CMPNEZ): Likewise.
+ 	(VEC_CNTLZ): Likewise.
+ 	(VEC_CNTLZM): Likewise.
+ 	(VEC_CNTTZM): Likewise.
+ 	(VEC_CNTLZ_LSBB): Likewise.
+ 	(VEC_CNTM): Likewise.
+ 	(VEC_CNTTZ): Likewise.
+ 	(VEC_CNTTZ_LSBB): Likewise.
+ 	(VEC_CONVERT_4F32_8F16): Likewise.
+ 	(VEC_DIV): Likewise.
+ 	(VEC_DIVE): Likewise.
+ 	(VEC_EQV): Likewise.
+ 	(VEC_EXPANDM): Likewise.
+ 	(VEC_EXTRACT_FP_FROM_SHORTH): Likewise.
+ 	(VEC_EXTRACT_FP_FROM_SHORTL): Likewise.
+ 	(VEC_EXTRACTH): Likewise.
+ 	(VEC_EXTRACTL): Likewise.
+ 	(VEC_EXTRACTM): Likewise.
+ 	(VEC_EXTRACT4B): Likewise.
+ 	(VEC_EXTULX): Likewise.
+ 	(VEC_EXTURX): Likewise.
+ 	(VEC_FIRSTMATCHINDEX): Likewise.
+ 	(VEC_FIRSTMACHOREOSINDEX): Likewise.
+ 	(VEC_FIRSTMISMATCHINDEX): Likewise.
+ 	(VEC_FIRSTMISMATCHOREOSINDEX): Likewise.
+ 	(VEC_GB): Likewise.
+ 	(VEC_GENBM): Likewise.
+ 	(VEC_GENHM): Likewise.
+ 	(VEC_GENWM): Likewise.
+ 	(VEC_GENDM): Likewise.
+ 	(VEC_GENQM): Likewise.
+ 	(VEC_GENPCVM): Likewise.
+ 	(VEC_GNB): Likewise.
+ 	(VEC_INSERTH): Likewise.
+ 	(VEC_INSERTL): Likewise.
+ 	(VEC_INSERT4B): Likewise.
+ 	(VEC_LXVL): Likewise.
+ 	(VEC_MERGEE): Likewise.
+ 	(VEC_MERGEO): Likewise.
+ 	(VEC_MOD): Likewise.
+ 	(VEC_MSUB): Likewise.
+ 	(VEC_MULH): Likewise.
+ 	(VEC_NAND): Likewise.
+ 	(VEC_NCIPHER_BE): Likewise.
+ 	(VEC_NCIPHERLAST_BE): Likewise.
+ 	(VEC_NEARBYINT): Likewise.
+ 	(VEC_NMADD): Likewise.
+ 	(VEC_ORC): Likewise.
+ 	(VEC_PDEP): Likewise.
+ 	(VEC_PERMX): Likewise.
+ 	(VEC_PEXT): Likewise.
+ 	(VEC_POPCNT): Likewise.
+ 	(VEC_PARITY_LSBB): Likewise.
+ 	(VEC_REPLACE_ELT): Likewise.
+ 	(VEC_REPLACE_UN): Likewise.
+ 	(VEC_REVB): Likewise.
+ 	(VEC_RINT): Likewise.
+ 	(VEC_RLMI): Likewise.
+ 	(VEC_RLNM): Likewise.
+ 	(VEC_SBOX_BE): Likewise.
+ 	(VEC_SIGNEXTI): Likewise.
+ 	(VEC_SIGNEXTLL): Likewise.
+ 	(VEC_SIGNEXTQ): Likewise.
+ 	(VEC_SLDB): Likewise.
+ 	(VEC_SLV): Likewise.
+ 	(VEC_SPLATI): Likewise.
+ 	(VEC_SPLATID): Likewise.
+ 	(VEC_SPLATI_INS): Likewise.
+ 	(VEC_SQRT): Likewise.
+ 	(VEC_SRDB): Likewise.
+ 	(VEC_SRV): Likewise.
+ 	(VEC_STRIL): Likewise.
+ 	(VEC_STRIL_P): Likewise.
+ 	(VEC_STRIR): Likewise.
+ 	(VEC_STRIR_P): Likewise.
+ 	(VEC_STXVL): Likewise.
+ 	(VEC_TERNARYLOGIC): Likewise.
+ 	(VEC_TEST_LSBB_ALL_ONES): Likewise.
+ 	(VEC_TEST_LSBB_ALL_ZEROS): Likewise.
+ 	(VEC_VEE): Likewise.
+ 	(VEC_VES): Likewise.
+ 	(VEC_VIE): Likewise.
+ 	(VEC_VPRTYB): Likewise.
+ 	(VEC_VSCEEQ): Likewise.
+ 	(VEC_VSCEGT): Likewise.
+ 	(VEC_VSCELT): Likewise.
+ 	(VEC_VSCEUO): Likewise.
+ 	(VEC_VSEE): Likewise.
+ 	(VEC_VSES): Likewise.
+ 	(VEC_VSIE): Likewise.
+ 	(VEC_VSTDC): Likewise.
+ 	(VEC_VSTDCN): Likewise.
+ 	(VEC_VTDC): Likewise.
+ 	(VEC_XL): Likewise.
+ 	(VEC_XL_BE): Likewise.
+ 	(VEC_XL_LEN_R): Likewise.
+ 	(VEC_XL_SEXT): Likewise.
+ 	(VEC_XL_ZEXT): Likewise.
+ 	(VEC_XST): Likewise.
+ 	(VEC_XST_BE): Likewise.
+ 	(VEC_XST_LEN_R): Likewise.
+ 	(VEC_XST_TRUNC): Likewise.
+ 	(VEC_XXPERMDI): Likewise.
+ 	(VEC_XXSLDWI): Likewise.
+ 	(VEC_TSTSFI_EQ_DD): Likewise.
+ 	(VEC_TSTSFI_EQ_TD): Likewise.
+ 	(VEC_TSTSFI_GT_DD): Likewise.
+ 	(VEC_TSTSFI_GT_TD): Likewise.
+ 	(VEC_TSTSFI_LT_DD): Likewise.
+ 	(VEC_TSTSFI_LT_TD): Likewise.
+ 	(VEC_TSTSFI_OV_DD): Likewise.
+ 	(VEC_TSTSFI_OV_TD): Likewise.
+ 	(VEC_VADDCUQ): Likewise.
+ 	(VEC_VADDECUQ): Likewise.
+ 	(VEC_VADDEUQM): Likewise.
+ 	(VEC_VADDUDM): Likewise.
+ 	(VEC_VADDUQM): Likewise.
+ 	(VEC_VBPERMQ): Likewise.
+ 	(VEC_VCLZB): Likewise.
+ 	(VEC_VCLZD): Likewise.
+ 	(VEC_VCLZH): Likewise.
+ 	(VEC_VCLZW): Likewise.
+ 	(VEC_VCTZB): Likewise.
+ 	(VEC_VCTZD): Likewise.
+ 	(VEC_VCTZH): Likewise.
+ 	(VEC_VCTZW): Likewise.
+ 	(VEC_VEEDP): Likewise.
+ 	(VEC_VEESP): Likewise.
+ 	(VEC_VESDP): Likewise.
+ 	(VEC_VESSP): Likewise.
+ 	(VEC_VIEDP): Likewise.
+ 	(VEC_VIESP): Likewise.
+ 	(VEC_VPKSDSS): Likewise.
+ 	(VEC_VPKSDUS): Likewise.
+ 	(VEC_VPKUDUM): Likewise.
+ 	(VEC_VPKUDUS): Likewise.
+ 	(VEC_VPOPCNT): Likewise.
+ 	(VEC_VPOPCNTB): Likewise.
+ 	(VEC_VPOPCNTD): Likewise.
+ 	(VEC_VPOPCNTH): Likewise.
+ 	(VEC_VPOPCNTW): Likewise.
+ 	(VEC_VPRTYBD): Likewise.
+ 	(VEC_VPRTYBQ): Likewise.
+ 	(VEC_VPRTYBW): Likewise.
+ 	(VEC_VRLD): Likewise.
+ 	(VEC_VSLD): Likewise.
+ 	(VEC_VSRAD): Likewise.
+ 	(VEC_VSRD): Likewise.
+ 	(VEC_VSTDCDP): Likewise.
+ 	(VEC_VSTDCNDP): Likewise.
+ 	(VEC_VSTDCNQP): Likewise.
+ 	(VEC_VSTDCNSP): Likewise.
+ 	(VEC_VSTDCQP): Likewise.
+ 	(VEC_VSTDCSP): Likewise.
+ 	(VEC_VSUBECUQ): Likewise.
+ 	(VEC_VSUBEUQM): Likewise.
+ 	(VEC_VSUBUDM): Likewise.
+ 	(VEC_VSUBUQM): Likewise.
+ 	(VEC_VTDCDP): Likewise.
+ 	(VEC_VTDCSP): Likewise.
+ 	(VEC_VUPKHSW): Likewise.
+ 	(VEC_VUPKLSW): Likewise.
+ 
+ 2022-02-01  Andreas Krebbel  <krebbel@linux.ibm.com>
+ 
+ 	PR rtl-optimization/101260
+ 	* regcprop.cc (maybe_mode_change): Invoke mode_change_ok also for
+ 	copy_regno.
+ 
+ 2022-02-01  Xi Ruoyao  <xry111@mengyan1223.wang>
+ 
+ 	PR middle-end/95115
+ 	* fold-const.cc (const_binop): Do not fold NaN result from
+ 	non-NaN operands.
+ 
+ 2022-02-01  Tom de Vries  <tdevries@suse.de>
+ 
+ 	* tree-loop-distribution.cc (generate_reduction_builtin_1): Check for
+ 	-ftree-loop-distribute-patterns.
+ 	(loop_distribution::execute): Don't call transform_reduction_loop for
+ 	-fno-tree-loop-distribute-patterns.
+ 
+ 2022-01-31  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* fold-const.h (operand_compare::operand_equal_p):
+ 	Fix comment about OEP_* flags.
+ 
+ 2022-01-31  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104298
+ 	* config/rs6000/aix.h (OPTION_GLIBC): Remove.
+ 	* config/rs6000/darwin.h (OPTION_GLIBC): Likewise.
+ 	* config/rs6000/option-defaults.h (OPTION_GLIBC): Define to 0
+ 	if not already defined.
+ 
+ 2022-01-31  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/104232
+ 	* gimple-ssa-warn-access.cc (pointers_related_p): Add argument.
+ 	Handle PHIs.  Add a synonymous overload.
+ 	(pass_waccess::check_pointer_uses): Call pointers_related_p.
+ 
+ 2022-01-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100499
+ 	* fold-const.cc (multiple_of_p): Pass the correct type of
+ 	the expression to the recursive invocation of multiple_of_p
+ 	for conversions and use CASE_CONVERT.
+ 
+ 2022-01-31  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/104189
+ 	* config/sparc/linux64.h (TARGET_DEFAULT): Add MASK_V8PLUS.
+ 
+ 2022-01-31  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100499
+ 	* tree-cfg.cc (verify_gimple_assign_ternary): Use multiple_p
+ 	on poly-ints instead of multiple_of_p.
+ 	* tree-ssa.cc (maybe_rewrite_mem_ref_base): Likewise.
+ 	(non_rewritable_mem_ref_base): Likewise.
+ 	(non_rewritable_lvalue_p): Likewise.
+ 	(execute_update_addresses_taken): Likewise.
+ 
+ 2022-01-29  Jakub Jelinek  <jakub@redhat.com>
+ 	    Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/104279
+ 	PR tree-optimization/104280
+ 	PR tree-optimization/104281
+ 	* match.pd (1 / X -> X == 1 for unsigned X): Build eq with
+ 	boolean_type_node and convert to type.  Formatting fixes.
+ 
+ 2022-01-28  Yoshinori Sato  <yo-satoh@sios.com>
+ 
+ 	* config/sh/t-linux (MULTILIB_EXCEPTIONS): Add m1, mb/m1 and m2a.
+ 
+ 2022-01-28  Navid Rahimi  <navidrahimi@microsoft.com>
+ 
+ 	PR tree-optimization/103514
+ 	* match.pd (a & b) ^ (a == b) -> !(a | b): New optimization.
+ 	(a & b) == (a ^ b) -> !(a | b): New optimization.
+ 
+ 2022-01-28  Marek Polacek  <polacek@redhat.com>
+ 
+ 	* doc/invoke.texi: Update -Wbidi-chars documentation.
+ 
+ 2022-01-28  Iain Sandoe  <iain@sandoe.co.uk>
+ 
+ 	* config/rs6000/darwin.h (OPTION_GLIBC): Define to 0.
+ 
+ 2022-01-28  Zhao Wei Liew  <zhaoweiliew@gmail.com>
+ 
+ 	PR tree-optimization/95424
+ 	* match.pd: Simplify 1 / X where X is an integer.
+ 
+ 2022-01-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104263
+ 	* gimple-ssa-store-merging.cc (get_status_for_store_merging): For
+ 	cfun->can_throw_non_call_exceptions && cfun->eh test whether
+ 	last non-debug stmt in the bb is store_valid_for_store_merging_p
+ 	rather than last stmt.
+ 
+ 2022-01-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* diagnostic.cc (diagnostic_action_after_output): Remove extra
+ 	newline.
+ 
+ 2022-01-28  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/host-darwin.cc (segv_crash_handler):
+ 	Do not use leading capital letter.
+ 	(segv_handler): Likewise.
+ 	* ipa-sra.cc (verify_splitting_accesses): Likewise.
+ 	* varasm.cc (get_section): Likewise.
+ 
+ 2022-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104267
+ 	* tree-vect-stmts.cc (vectorizable_call): Properly use the
+ 	per-argument determined vector type for externals and
+ 	invariants.
+ 
+ 2022-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104263
+ 	* tree-cfg.cc (gimple_purge_dead_abnormal_call_edges):
+ 	Purge edges also when !cfun->has_nonlocal_label
+ 	and !cfun->calls_setjmp.
+ 
+ 2022-01-28  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* config/riscv/riscv.md: Document `auipc' and `bitmanip' `type'
+ 	attributes.
+ 
+ 2022-01-28  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR lto/104237
+ 	* cfgrtl.cc (loc_equal): New function.
+ 	(unique_locus_on_edge_between_p): Use it.
+ 
+ 2022-01-28  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cfganal.h (mark_dfs_back_edges): Provide API with struct
+ 	function argument.
+ 	* cfganal.cc (mark_dfs_back_edges): Take a struct function
+ 	to work on, add a wrapper passing cfun.
+ 	* graph.cc (draw_cfg_nodes_no_loops): Replace stray cfun
+ 	uses with fun which is already passed.
+ 	(draw_cfg_edges): Likewise.
+ 	(draw_cfg_nodes_for_loop): Do not use draw_cfg_nodes_for_loop
+ 	for fun != cfun.
+ 
+ 2022-01-27  Patrick Palka  <ppalka@redhat.com>
+ 
+ 	PR c++/99895
+ 	* tree.cc (build_call_vec): Add const to second parameter.
+ 	* tree.h (build_call_vec): Likewise.
+ 
+ 2022-01-27  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR web/104254
+ 	* diagnostic.cc (diagnostic_initialize):
+ 	Initialize report_bug flag.
+ 	(diagnostic_action_after_output):
+ 	Explain that -freport-bug option can be used for pre-processed
+ 	file creation.  Make the message shorter.
+ 	(error_recursion): Rename Internal to internal.
+ 	* diagnostic.h (struct diagnostic_context): New field.
+ 	* opts.cc (common_handle_option): Init the field here.
+ 
+ 2022-01-27  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR target/103702
+ 	* config/rs6000/rs6000.cc
+ 	(rs6000_cost_data::update_target_cost_per_stmt): Fix one wrong
+ 	assertion with early return.
+ 
+ 2022-01-27  Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	PR middle-end/103642
+ 	* gimplify.cc (gimplify_scan_omp_clauses): Do not do indir_p handling
+ 	for non-pointer or non-reference-to-pointer cases.
+ 
+ 2022-01-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/104196
+ 	* gimple-fold.h (rewrite_to_defined_overflow): Add IN_PLACE argument.
+ 	* gimple-fold.cc (rewrite_to_defined_overflow): Likewise.  If true,
+ 	return NULL and emit needed stmts before and after stmt.
+ 	* tree-ssa-reassoc.cc (update_range_test): For inter-bb range opt
+ 	pick as operand_entry that will hold the merged test the one feeding
+ 	earliest condition, ensure that by swapping range->idx with some
+ 	other range's idx if needed.  If seq is non-NULL, don't actually swap
+ 	it but instead rewrite stmts with undefined overflow in between
+ 	the two locations.
+ 	(maybe_optimize_range_tests): Set ops[]->id to bb->index with the
+ 	corresponding condition even if they have non-NULL ops[]->op.
+ 	Formatting fix.
+ 
+ 2022-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104239
+ 	* config/rs6000/emmintrin.h (_mm_sad_epu8): Use __asm__ instead of
+ 	asm.
+ 	* config/rs6000/smmintrin.h (_mm_minpos_epu16): Declare iterator
+ 	before for loop instead of for init clause.
+ 	* config/rs6000/bmi2intrin.h (_pext_u64): Likewise.
+ 
+ 2022-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104239
+ 	* config/rs6000/bmiintrin.h: Test _X86GPRINTRIN_H_INCLUDED instead of
+ 	_X86INTRIN_H_INCLUDED and adjust #error wording.
+ 	* config/rs6000/bmi2intrin.h: Likewise.
+ 
+ 2022-01-26  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/104194
+ 	* dwarf2out.cc (long_double_as_float128): New function.
+ 	(modified_type_die): For powerpc64le IEEE 754 quad long double
+ 	and complex long double emit those as DW_TAG_typedef to
+ 	_Float128 or complex _Float128 base type.
+ 
+ 2022-01-26  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR target/104213
+ 	* gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer): Don't
+ 	warn when the SSA_NAME_VAR of REF has supressed -Wuse-after-free.
+ 
+ 2022-01-26  Martin Liska  <mliska@suse.cz>
+ 
+ 	* ipa-modref-tree.cc (modref_access_node::update):
+ 	Remove "--param param=foo" with "--param foo".
+ 	(modref_access_node::insert): Likewise.
+ 	(modref_access_node::insert_kill): Likewise.
+ 	* ipa-modref-tree.h (struct modref_ref_node): Likewise.
+ 	(struct modref_base_node): Likewise.
+ 	(struct modref_tree): Likewise.
+ 
+ 2022-01-26  Raoni Fassina Firmino  <raoni@linux.ibm.com>
+ 
+ 	PR target/94193
+ 	* builtins.cc (expand_builtin_feclear_feraise_except): Add op0
+ 	predicate check.
+ 
+ 2022-01-25  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/104203
+ 	* gimple-ssa-warn-access.cc (pass_data pass_data_waccess): Use
+ 	TV_WARN_ACCESS.
+ 	* pointer-query.cc (access_ref::merge_ref): Change return type.
+ 	Convert failure to a conservative success.
+ 	(access_ref::get_ref): Adjust to the change above.  Short-circuit
+ 	PHI evaluation after first failure turned into conservative success.
+ 	* pointer-query.h (access_ref::merge_ref): Change return type.
+ 	* timevar.def (TV_WARN_ACCESS): New timer variable.
+ 
+ 2022-01-25  David Edelsohn  <dje.gcc@gmail.com>
+ 
+ 	* config/rs6000/aix.h (OPTION_GLIBC): Define as 0.
+ 
+ 2022-01-25  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104214
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_cond): Use
+ 	stronger guarantees for relational pointer compares when
+ 	rewriting BASE0 + STEP0 cmp BASE1 + STEP1 as
+ 	BASE0 + STEP0 - STEP1 cmp BASE1.
+ 
+ 2022-01-25  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104172
+ 	* config/rs6000/rs6000-internal.h (rs6000_passes_ieee128): Don't
+ 	declare.
+ 	* config/rs6000/rs6000.cc (rs6000_passes_ieee128,
+ 	ieee128_mangling_gcc_8_1): Remove.
+ 	(TARGET_ASM_GLOBALIZE_DECL_NAME): Don't redefine.
+ 	(rs6000_mangle_type): Return "u9__ieee128" instead of
+ 	ieee128_mangling_gcc_8_1 ? "U10__float128" : "u9__ieee128".
+ 	(rs6000_globalize_decl_name): Remove.
+ 	* config/rs6000/rs6000-call.cc (init_cumulative_args,
+ 	rs6000_function_arg_advance_1): Don't set rs6000_passes_ieee128.
+ 
+ 2022-01-24  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* pointer-query.cc (pointer_query::dump): Remove duplicate
+ 	block.
+ 
+ 2022-01-24  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR preprocessor/104030
+ 	* doc/invoke.texi: Update documentation for -Wbidi-chars.
+ 
+ 2022-01-24  Raoni Fassina Firmino  <raoni@linux.ibm.com>
+ 
+ 	PR target/94193
+ 	* builtins.cc (expand_builtin_fegetround): New function.
+ 	(expand_builtin_feclear_feraise_except): New function.
+ 	(expand_builtin): Add cases for BUILT_IN_FEGETROUND,
+ 	BUILT_IN_FECLEAREXCEPT and BUILT_IN_FERAISEEXCEPT.
+ 	* config/rs6000/rs6000.md (fegetroundsi): New pattern.
+ 	(feclearexceptsi): New Pattern.
+ 	(feraiseexceptsi): New Pattern.
+ 	* doc/extend.texi: Add a new introductory paragraph about the
+ 	new builtins.
+ 	* doc/md.texi: (fegetround@var{m}): Document new optab.
+ 	(feclearexcept@var{m}): Document new optab.
+ 	(feraiseexcept@var{m}): Document new optab.
+ 	* optabs.def (fegetround_optab): New optab.
+ 	(feclearexcept_optab): New optab.
+ 	(feraiseexcept_optab): New optab.
+ 
+ 2022-01-24  Richard Biener  <rguenther@suse.de>
+ 	    Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR tree-optimization/100740
+ 	PR tree-optimization/101508
+ 	PR tree-optimization/101972
+ 	PR tree-optimization/102131
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_cond): Properly
+ 	constrain BASE0 + STEP0 cmp BASE1 + STEP1 to
+ 	BASE0 + STEP0 - STEP1 cmp BASE1 transform.
+ 
+ 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/104158
+ 	* opt-functions.awk (var_set): Handle EnumBitSet property.
+ 	* optc-gen.awk: Don't disallow RejectNegative if EnumBitSet is
+ 	specified.
+ 	* opts.h (enum cl_enum_var_value): New type.
+ 	* opts-common.cc (decode_cmdline_option): Use CLEV_* values.
+ 	Handle CLEV_BITSET.
+ 	(cmdline_handle_error): Handle CLEV_BITSET.
+ 	* opts.cc (test_enum_sets): Also test EnumBitSet requirements.
+ 	* doc/options.texi (EnumBitSet): Document.
+ 	* common.opt (fsanitize-coverage=): Use EnumBitSet instead of
+ 	EnumSet.
+ 	(trace-pc, trace-cmp): Drop Set properties.
+ 
+ 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/104158
+ 	* common.opt (flag_sanitize_coverage): Remove Variable entry.
+ 	(fsanitize-coverage=): Remove RejectNegative property, add
+ 	Var(flag_sanitize_coverage) and EnumSet properties.
+ 	(trace-pc): Add Set(1) property.
+ 	(trace-cmp): Add Set(2) property.
+ 	* opts.cc (common_handle_option): Don't handle
+ 	OPT_fsanitize_coverage_.
+ 
+ 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR sanitizer/104158
+ 	* opt-functions.awk (var_set): Handle EnumSet property.
+ 	* optc-gen.awk: Don't disallow RejectNegative if EnumSet is
+ 	specified.
+ 	* opt-read.awk: Handle Set property.
+ 	* opts.h (CL_ENUM_SET_SHIFT, CL_ERR_ENUM_SET_ARG): Define.
+ 	(struct cl_decoded_option): Mention enum in value description.
+ 	Add mask member.
+ 	(set_option): Add mask argument defaulted to 0.
+ 	* opts.cc (test_enum_sets): New function.
+ 	(opts_cc_tests): Call it.
+ 	* opts-common.cc (enum_arg_to_value): Change return argument
+ 	from bool to int, on success return index into the cl_enum_arg
+ 	array, on failure -1.  Add len argument, if non-0, use strncmp
+ 	instead of strcmp.
+ 	(opt_enum_arg_to_value): Adjust caller.
+ 	(decode_cmdline_option): Handle EnumSet represented as
+ 	CLVC_ENUM with non-zero var_value.  Initialize decoded->mask.
+ 	(decode_cmdline_options_to_array): CLear opt_array[0].mask.
+ 	(handle_option): Pass decoded->mask to set_options last argument.
+ 	(generate_option): Clear decoded->mask.
+ 	(generate_option_input_file): Likewise.
+ 	(cmdline_handle_error): Handle CL_ERR_ENUM_SET_ARG.
+ 	(set_option): Add mask argument, use it for CLVC_ENUM.
+ 	(control_warning_option): Adjust enum_arg_to_value caller.
+ 	* doc/options.texi: Document Set and EnumSet properties.
+ 
+ 2022-01-24  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR bootstrap/104170
+ 	* config/linux.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
+ 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
+ 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
+ 	using OPTION_*_P macros.
+ 	* config/alpha/linux.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
+ 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
+ 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
+ 	using OPTION_*_P macros.
+ 	* config/rs6000/linux.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
+ 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
+ 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
+ 	using OPTION_*_P macros.
+ 	* config/rs6000/linux64.h (OPTION_GLIBC_P, OPTION_UCLIBC_P,
+ 	OPTION_BIONIC_P, OPTION_MUSL_P): Define.
+ 	(OPTION_GLIBC, OPTION_UCLIBC, OPTION_BIONIC, OPTION_MUSL): Redefine
+ 	using OPTION_*_P macros.
+ 	* config/fuchsia.h (OPTION_MUSL_P): Redefine.
+ 	* config/glibc-stdint.h (OPTION_MUSL_P): Define if not defined.
+ 	* common/config/s390/s390-common.cc (s390_supports_split_stack): Re-add
+ 	ATTRIBUTE_UNUSED to opts parameter.  If OPTION_GLIBC_P is defined, use
+ 	OPTION_GLIBC_P (opts) as condition, otherwise assume if (false).
+ 	* common/config/i386/i386-common.cc (ix86_supports_split_stack): If
+ 	OPTION_GLIBC_P is defined use !OPTION_GLIBC_P (opts) as condition,
+ 	otherwise assume if (true).
+ 
+ 2022-01-24  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_subset_list::to_string):
+ 	Skip zicsr and zifencei if I-ext is 2.0.
+ 
+ 2022-01-24  Jia-Wei Chen  <jiawei@iscas.ac.cn>
+ 
+ 	* config.gcc: Modify default isa_spec version.
+ 
+ 2022-01-24  Jiufu Guo  <guojiufu@linux.ibm.com>
+ 
+ 	PR tree-optimization/102087
+ 	* tree-ssa-loop-niter.cc (number_of_iterations_until_wrap):
+ 	Correct PLUS result type.
+ 
+ 2022-01-24  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/104188
+ 	* config/i386/predicates.md (bcst_mem_operand): Also check mode
+ 	of memory broadcast.
+ 
+ 2022-01-23  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/64821
+ 	* config/aarch64/aarch64-builtins.cc
+ 	(aarch64_general_gimple_fold_builtin): Handle
+ 	__builtin_aarch64_sqrt* and simplify into SQRT internal
+ 	function.
+ 
+ 2022-01-22  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR other/104176
+ 	* opts-global.cc (handle_common_deferred_options): Quote
+ 	--enable-plugin in diagnostics to avoid -Werror=format-diag.
+ 
+ 2022-01-21  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	PR target/104136
+ 	* config/rs6000/rs6000-protos.h (prefixed_xxsplti_p): Delete.
+ 	* config/rs6000/rs6000.cc (prefixed_xxsplti_p): Delete.
+ 	* config/rs6000/rs6000.md (prefixed attribute): Delete section
+ 	that sets the prefixed attribute for xxspltiw, xxspltidp, and
+ 	xxsplti32dx instructions.
+ 	(movsf_hardfloat): Explicitly set the prefixed attribute
+ 	when xxspltiw and xxspltidp instructions are generated.
+ 	(mov<mode>_hardfloat32): Likewise.
+ 	(mov<mode>_hardfloat64): Likewise.
+ 	* config/rs6000/vsx.md (vsx_mov<mode>_64bit): Explicitly set the
+ 	prefixed attribute for xxspltiw and xxspltidp instructions.
+ 	(vsx_mov<mode>_32bit): Likewise.
+ 
+ 2022-01-21  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR bootstrap/104170
+ 	* common/config/i386/i386-common.cc (ix86_supports_split_stack):
+ 	Return true only on glibc.
+ 	* config/i386/gnu-user-common.h (STACK_CHECK_STATIC_BUILTIN):
+ 	Revert commit c163647ffbc.
+ 	* config/i386/gnu.h (TARGET_LIBC_PROVIDES_SSP): Likewise.
+ 
+ 2022-01-21  Sören Tempel  <soeren@soeren-tempel.net>
+ 
+ 	* common/config/s390/s390-common.cc (s390_supports_split_stack):
+ 	Only support split-stack on glibc targets.
+ 	* config/i386/gnu-user-common.h (STACK_CHECK_STATIC_BUILTIN): Ditto.
+ 	* config/i386/gnu.h (defined): Ditto.
+ 
+ 2022-01-21  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000-overload.def (VEC_SLDW): Add instances for
+ 	vector float and vector double.
+ 
+ 2022-01-21  Bill Seurer  <seurer@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_get_function_versions_dispatcher):
+ 	Fix mention of ifunc in string.
+ 
+ 2022-01-21  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	PR middle-end/104140
+ 	* tree-ssa-math-opts.cc (convert_mult_to_highpart): Check that the
+ 	operands of the widening multiplication are either both signed or
+ 	both unsigned, and abort the conversion if mismatched.
+ 	* doc/generic.texi (WIDEN_MULT_EXPR): Describe expression node.
+ 	(MULT_HIGHPART_EXPR): Clarify that operands must have the same
+ 	signedness.
+ 	* tree.def (MULT_HIGHPART_EXPR): Document both operands must have
+ 	integer types with the same precision and signedness.
+ 	(WIDEN_MULT_EXPR): Document that operands must have integer types
+ 	with the same precision, but possibly differing signedness.
+ 	* config/riscv/riscv-c.cc (riscv_cpu_cpp_builtins): Defend against
+ 	riscv_current_subset_list returning a NULL pointer (empty list).
+ 
+ 2022-01-21  Vladimir N. Makarov  <vmakarov@redhat.com>
+ 
+ 	PR target/103676
+ 	* ira.h (struct target_ira): Add member
+ 	x_ira_exclude_class_mode_regs.
+ 	(ira_exclude_class_mode_regs): New macro.
+ 	* lra.h (lra_create_new_reg): Add arg exclude_start_hard_regs and
+ 	move from here ...
+ 	* lra-int.h: ... to here.
+ 	(lra_create_new_reg_with_unique_value): Add arg
+ 	exclude_start_hard_regs.
+ 	(class lra_reg): Add member exclude_start_hard_regs.
+ 	* lra-assigns.cc (find_hard_regno_for_1): Setup
+ 	impossible_start_hard_regs from exclude_start_hard_regs.
+ 	* lra-constraints.cc (get_reload_reg): Add arg exclude_start_hard_regs and pass
+ 	it lra_create_new_reg[_with_unique_value].
+ 	(match_reload): Ditto.
+ 	(check_and_process_move): Pass NULL
+ 	exclude_start_hard_regs to lra_create_new_reg_with_unique_value.
+ 	(goal_alt_exclude_start_hard_regs): New static variable.
+ 	(process_addr_reg, simplify_operand_subreg): Pass NULL
+ 	exclude_start_hard_regs to lra_create_new_reg_with_unique_value
+ 	and get_reload_reg.
+ 	(process_alt_operands): Setup goal_alt_exclude_start_hard_regs.
+ 	Use this_alternative_exclude_start_hard_regs additionally to find
+ 	winning operand alternative.
+ 	(base_to_reg, base_plus_disp_to_reg, index_part_to_reg): Pass NULL
+ 	exclude_start_hard_regs to lra_create_new_reg.
+ 	(process_address_1, emit_inc): Ditto.
+ 	(curr_insn_transform): Pass exclude_start_hard_regs value to
+ 	lra_create_new_reg, get_reload_reg, match_reload.
+ 	(inherit_reload_reg, split_reg): Pass NULL exclude_start_hard_regs
+ 	to lra_create_new_reg.
+ 	(process_invariant_for_inheritance): Ditto.
+ 	* lra-remat.cc (update_scratch_ops): Ditto.
+ 	* lra.cc (lra_create_new_reg_with_unique_value): Add arg
+ 	exclude_start_hard_regs.  Setup the corresponding member of
+ 	lra reg info.
+ 	(lra_create_new_reg): Add arg exclude_start_hard_regs and pass it
+ 	to lra_create_new_reg_with_unique_value.
+ 	(initialize_lra_reg_info_element): Initialize member
+ 	exclude_start_hard_regs.
+ 	(get_scratch_reg): Pass NULL to lra_create_new_reg.
+ 	* ira.cc (setup_prohibited_class_mode_regs): Rename to
+ 	setup_prohibited_and_exclude_class_mode_regs and calculate
+ 	ira_exclude_class_mode_regs.
+ 
+ 2022-01-21  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Detect ld_is_mold and use it for
+ 	comdat_group=yes and gcc_cv_ld_hidden=yes.
+ 	* configure: Regenerate.
+ 
+ 2022-01-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100089
+ 	* tree-vect-slp.cc (vect_slp_region): Reject BB vectorization
+ 	of if-converted loops with unvectorized COND_EXPRs for
+ 	all but the unlimited cost models.
+ 
+ 2022-01-21  Ard Biesheuvel  <ardb@kernel.org>
+ 
+ 	* config/arm/arm-opts.h (enum stack_protector_guard): New.
+ 	* config/arm/arm-protos.h (arm_stack_protect_tls_canary_mem):
+ 	New.
+ 	* config/arm/arm.cc (TARGET_STACK_PROTECT_GUARD): Define.
+ 	(arm_option_override_internal): Handle and put in error checks.
+ 	for stack protector guard options.
+ 	(arm_option_reconfigure_globals): Likewise.
+ 	(arm_stack_protect_tls_canary_mem): New.
+ 	(arm_stack_protect_guard): New.
+ 	* config/arm/arm.md (stack_protect_set): New.
+ 	(stack_protect_set_tls): Likewise.
+ 	(stack_protect_test): Likewise.
+ 	(stack_protect_test_tls): Likewise.
+ 	(reload_tp_hard): Likewise.
+ 	* config/arm/arm.opt (-mstack-protector-guard): New
+ 	(-mstack-protector-guard-offset): New.
+ 	* doc/invoke.texi: Document new options.
+ 
+ 2022-01-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104156
+ 	* tree-ssa-loop-unswitch.cc (tree_unswitch_outer_loop):
+ 	Collect and reset debug stmts with out-of-loop uses when
+ 	hoisting guards.
+ 	(find_loop_guard): Adjust.
+ 	(empty_bb_without_guard_p): Likewise.  Ignore debug stmts.
+ 	(used_outside_loop_p): Push debug uses to a vector of
+ 	debug stmts to reset.
+ 	(hoist_guard): Adjust -fopt-info category.
+ 
+ 2022-01-21  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104152
+ 	* tree-vect-slp.cc (vect_build_slp_tree_2): Add missing
+ 	can_duplicate_and_interleave_p check.
+ 
+ 2022-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc (pass_waccess::warn_invalid_pointer):
+ 	Avoid passing var to warning_at when the format string doesn't
+ 	refer to it.
+ 
+ 2022-01-21  Aldy Hernandez  <aldyh@redhat.com>
+ 
+ 	PR tree-optimization/103721
+ 	* gimple-range-path.cc
+ 	(path_range_query::relations_may_be_invalidated): New.
+ 	(path_range_query::compute_ranges_in_block): Reset relations if
+ 	they may be invalidated.
+ 	(path_range_query::maybe_register_phi_relation): Exit if relations
+ 	may be invalidated on incoming edge.
+ 	(path_range_query::compute_phi_relations): Pass incoming PHI edge
+ 	to maybe_register_phi_relation.
+ 	* gimple-range-path.h (relations_may_be_invalidated): New.
+ 	(maybe_register_phi_relation): Pass edge instead of tree.
+ 	* tree-ssa-threadbackward.cc (back_threader::back_threader):
+ 	Mark DFS edges.
+ 	* value-relation.cc (path_oracle::path_oracle): Call
+ 	mark_dfs_back_edges.
+ 	(path_oracle::register_relation): Add SSA names to m_registered
+ 	bitmap.
+ 	(path_oracle::reset_path): Clear m_registered bitmap.
+ 	* value-relation.h (path_oracle::set_root_oracle): New.
+ 
+ 2022-01-21  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/102478
+ 	* optabs.cc (prepare_cmp_insn): If !can_create_pseudo_p (), don't
+ 	force_reg constants and for -fnon-call-exceptions fail if copy_to_reg
+ 	would be needed.
+ 
+ 2022-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/100786
+ 	* gimple-fold.cc (get_symbol_constant_value): Only return
+ 	values of compatible type to the symbol.
+ 
+ 2022-01-20  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	* value-relation.cc (relation_oracle::valid_equivs): Query and add
+ 	if valid members of a set.
+ 	(equiv_oracle::register_equiv): Call valid_equivs rather than
+ 	bitmap direct operations.
+ 	(path_oracle::register_equiv): Ditto.
+ 	* value-relation.h (relation_oracle::valid_equivs): New prototype.
+ 
+ 2022-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR target/100784
+ 	* config/i386/i386.cc (ix86_gimple_fold_builtin): Check for
+ 	LHS before folding __builtin_ia32_shufpd and friends.
+ 
+ 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/crypto.md (aes_op_protect): Allow moves from core
+ 	registers and from memory.
+ 	(aes_op_protect_misalign_load): New pattern.
+ 	(aes_op_protect_neon_vld1v16qi): New pattern.
+ 
+ 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/crypto.md (crypto_<CRYPTO_AESMC:crypto_pattern>_protected):
+ 	New pattern.
+ 	(aarch32_crypto_aese_fused_protected): Likewise.
+ 	(aarch32_crypto_aesd_fused_protected): Likewise.
+ 
+ 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/crypto.md (crypto_<CRYPTO_AES:crypto_pattern>): Convert
+ 	to define_expand.  Add mitigation for the Cortex-A AES erratum
+ 	when enabled.
+ 	(*crypto_<CRYPTO_AES:crypto_pattern>_insn): New pattern, based
+ 	on original crypto_<CRYPTO_AES:crypto_pattern> insn.
+ 	(aes_op_protect): New pattern.
+ 	* config/arm/unspecs.md (unspec): Add UNSPEC_AES_PROTECT.
+ 
+ 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/arm-cpus.in (quirk_aes_1742098): New quirk feature
+ 	(ALL_QUIRKS): Add it.
+ 	(cortex-a57, cortex-a72): Enable it.
+ 	(cortex-a57.cortex-a53, cortex-a72.cortex-a53): Likewise.
+ 	* config/arm/arm.opt (mfix-cortex-a57-aes-1742098): New command-line
+ 	option.
+ 	(mfix-cortex-a72-aes-1655431): New option alias.
+ 	* config/arm/arm.cc (arm_option_override): Handle default settings
+ 	for AES erratum switch.
+ 	* doc/invoke.texi (Arm Options): Document new options.
+ 
+ 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/crypto.md (crypto_<CYRPTO_AES:crypto_pattern>): Use
+ 	<crypto_mode> rather than hard-coding the mode.
+ 	(crypto_<CRYPTO_AESMC:crypto_pattern>): Fix white space.
+ 	(crypto_<CRYPTO_AES:crypto_pattern>): Likewise.
+ 	(*aarch32_crypto_aese_fused): Likewise.
+ 	(*aarch32_crypto_aesd_fused): Likewise.
+ 	(crypto_<CRYPTO_BINARY:crypto_pattern>): Likewise.
+ 	(crypto_<CRYPTO_TERNARY:crypto_pattern>): Likewise.
+ 	(crypto_sha1h_lb): Likewise.
+ 	(crypto_vmullp64): Likewise.
+ 	(crypto_<CRYPTO_SELECTING:crypto_pattern>): Likewise.
+ 	(crypto_<CRYPTO_SELECTING:crypto_pattern>_lb): Likewise.
+ 
+ 2022-01-20  Richard Earnshaw  <rearnsha@arm.com>
+ 
+ 	* config/arm/crypto.md (crypto_<CRYPTO_AESMC:crypto_pattern>): Add
+ 	iterator to pattern name to disambiguate.
+ 	(crypto_<CRYPTO_AES:crypto_pattern>): Likewise.
+ 	(crypto_<CRYPTO_BINARY:crypto_pattern>): Likewise.
+ 	(crypto_<CRYPTO_TERNARY:crypto_pattern>): Likewise.
+ 	(crypto_<CRYPTO_SELECTING:crypto_pattern>): Likewise.
+ 	(crypto_<CRYPTO_SELECTING:crypto_pattern>_lb): Likewise.
+ 
+ 2022-01-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	PR bootstrap/104135
+ 	* emit-rtl.cc (make_insn_raw): Fix -Wformat-diag warnings.
+ 	* rtl.cc: Partially disable -Wformat-diag for RTL checking
+ 	error messages.
+ 
+ 2022-01-20  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR debug/103874
+ 	* dwarf2out.cc (index_rnglists): For !HAVE_AS_LEB128 and
+ 	block_num > 0, index entry even if !have_multiple_function_sections.
+ 
+ 2022-01-20  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/103771
+ 	* tree-vect-stmts.cc (supportable_narrowing_operation): Enhance
+ 	integral mode mask pack by multi steps which takes
+ 	vec_pack_sbool_trunc_optab as start when elements number is
+ 	less than BITS_PER_UNITS.
+ 
+ 2022-01-20  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104114
+ 	* tree-vect-generic.cc (expand_vector_piecewise): Do not diagnose
+ 	single element vector decomposition.
+ 
+ 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* ifcvt.cc (noce_convert_multiple_sets_1): New function.
+ 	(noce_convert_multiple_sets): Call function a second time if we can
+ 	improve the first try.
+ 
+ 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* ifcvt.cc (cond_exec_get_condition): New parameter to allow getting the
+ 	reversed comparison.
+ 	(try_emit_cmove_seq): New function to facilitate creating a cmov
+ 	sequence.
+ 	(noce_convert_multiple_sets): Create two sequences and use the less
+ 	expensive one.
+ 
+ 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* rtl.h (struct rtx_comparison): New struct that holds an rtx
+ 	comparison.
+ 	* config/rs6000/rs6000.cc (rs6000_emit_minmax): Use struct instead of
+ 	single parameters.
+ 	(rs6000_emit_swsqrt): Likewise.
+ 	* expmed.cc (expand_sdiv_pow2): Likewise.
+ 	(emit_store_flag): Likewise.
+ 	* expr.cc (expand_cond_expr_using_cmove): Likewise.
+ 	(expand_expr_real_2): Likewise.
+ 	* ifcvt.cc (noce_emit_cmove): Add compare and reversed compare
+ 	parameters.
+ 	* optabs.cc (emit_conditional_move_1): New function.
+ 	(expand_doubleword_shift_condmove): Use struct.
+ 	(emit_conditional_move): Use struct and allow to call directly
+ 	without going through preparation steps.
+ 	* optabs.h (emit_conditional_move): Use struct.
+ 
+ 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* ifcvt.cc (bb_ok_for_noce_convert_multiple_sets): Estimate insns costs.
+ 	(noce_process_if_block): Use potential costs.
+ 
+ 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* ifcvt.cc (noce_convert_multiple_sets): Allow constants.
+ 	(bb_ok_for_noce_convert_multiple_sets): Likewise.
+ 
+ 2022-01-19  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* ifcvt.cc (need_cmov_or_rewire): New function.
+ 	(noce_convert_multiple_sets): Call it.
+ 
+ 2022-01-19  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* attribs.cc (attribute_c_tests): Rename to...
+ 	(attribs_cc_tests): ...this.
+ 	* bitmap.cc (bitmap_c_tests): Rename to...
+ 	(bitmap_cc_tests): ...this.
+ 	* cgraph.cc (cgraph_c_finalize): Rename to...
+ 	(cgraph_cc_finalize): ...this.
+ 	(cgraph_c_tests): Rename to...
+ 	(cgraph_cc_tests): ...this.
+ 	* cgraph.h (cgraph_c_finalize): Rename to...
+ 	(cgraph_cc_finalize): ...this.
+ 	(cgraphunit_c_finalize): Rename to...
+ 	(cgraphunit_cc_finalize): ...this.
+ 	* cgraphunit.cc (cgraphunit_c_finalize): Rename to...
+ 	(cgraphunit_cc_finalize): ...this.
+ 	* convert.cc (convert_c_tests): Rename to...
+ 	(convert_cc_tests): ...this.
+ 	* dbgcnt.cc (dbgcnt_c_tests): Rename to...
+ 	(dbgcnt_cc_tests): ...this.
+ 	* diagnostic-show-locus.cc (diagnostic_show_locus_c_tests): Rename to...
+ 	(diagnostic_show_locus_cc_tests): ...this.
+ 	* diagnostic.cc (diagnostic_c_tests): Rename to...
+ 	(diagnostic_cc_tests): ...this.
+ 	* dumpfile.cc (dumpfile_c_tests): Rename to...
+ 	(dumpfile_cc_tests): ...this.
+ 	* dwarf2out.cc (dwarf2out_c_finalize): Rename to...
+ 	(dwarf2out_cc_finalize): ...this.
+ 	* dwarf2out.h (dwarf2out_c_finalize): Rename to...
+ 	(dwarf2out_cc_finalize): ...this.
+ 	* edit-context.cc (edit_context_c_tests): Rename to...
+ 	(edit_context_cc_tests): ...this.
+ 	* et-forest.cc (et_forest_c_tests): Rename to...
+ 	(et_forest_cc_tests): ...this.
+ 	* fibonacci_heap.cc (fibonacci_heap_c_tests): Rename to...
+ 	(fibonacci_heap_cc_tests): ...this.
+ 	* fold-const.cc (fold_const_c_tests): Rename to...
+ 	(fold_const_cc_tests): ...this.
+ 	* function-tests.cc (function_tests_c_tests): Rename to...
+ 	(function_tests_cc_tests): ...this.
+ 	* gcse.cc (gcse_c_finalize): Rename to...
+ 	(gcse_cc_finalize): ...this.
+ 	* gcse.h (gcse_c_finalize): Rename to...
+ 	(gcse_cc_finalize): ...this.
+ 	* ggc-tests.cc (ggc_tests_c_tests): Rename to...
+ 	(ggc_tests_cc_tests): ...this.
+ 	* gimple-ssa-store-merging.cc (store_merging_c_tests): Rename to...
+ 	(store_merging_cc_tests): ...this.
+ 	* gimple.cc (gimple_c_tests): Rename to...
+ 	(gimple_cc_tests): ...this.
+ 	* hash-map-tests.cc (hash_map_tests_c_tests): Rename to...
+ 	(hash_map_tests_cc_tests): ...this.
+ 	* hash-set-tests.cc (hash_set_tests_c_tests): Rename to...
+ 	(hash_set_tests_cc_tests): ...this.
+ 	* input.cc (input_c_tests): Rename to...
+ 	(input_cc_tests): ...this.
+ 	* ipa-cp.cc (ipa_cp_c_finalize): Rename to...
+ 	(ipa_cp_cc_finalize): ...this.
+ 	* ipa-fnsummary.cc (ipa_fnsummary_c_finalize): Rename to...
+ 	(ipa_fnsummary_cc_finalize): ...this.
+ 	* ipa-fnsummary.h (ipa_fnsummary_c_finalize): Rename to...
+ 	(ipa_fnsummary_cc_finalize): ...this.
+ 	* ipa-modref-tree.cc (ipa_modref_tree_c_tests): Rename to...
+ 	(ipa_modref_tree_cc_tests): ...this.
+ 	* ipa-modref-tree.h (modref_c_tests): Delete bogus decl.
+ 	* ipa-modref.cc (ipa_modref_c_finalize): Rename to...
+ 	(ipa_modref_cc_finalize): ...this.
+ 	* ipa-modref.h (ipa_modref_c_finalize): Rename to...
+ 	(ipa_modref_cc_finalize): ...this.
+ 	* ipa-prop.h (ipa_cp_c_finalize): Rename to...
+ 	(ipa_cp_cc_finalize): ...this.
+ 	* ipa-reference.cc (ipa_reference_c_finalize): Rename to...
+ 	(ipa_reference_cc_finalize): ...this.
+ 	* ipa-reference.h (ipa_reference_c_finalize): Rename to...
+ 	(ipa_reference_cc_finalize): ...this.
+ 	* ira-costs.cc (ira_costs_c_finalize): Rename to...
+ 	(ira_costs_cc_finalize): ...this.
+ 	* ira.h (ira_costs_c_finalize): Rename to...
+ 	(ira_costs_cc_finalize): ...this.
+ 	* opt-suggestions.cc (opt_proposer_c_tests): Rename to...
+ 	(opt_suggestions_cc_tests): ...this.
+ 	* opts.cc (opts_c_tests): Rename to...
+ 	(opts_cc_tests): ...this.
+ 	* predict.cc (predict_c_tests): Rename to...
+ 	(predict_cc_tests): ...this.
+ 	* pretty-print.cc (pretty_print_c_tests): Rename to...
+ 	(pretty_print_cc_tests): ...this.
+ 	* read-rtl-function.cc (read_rtl_function_c_tests): Rename to...
+ 	(read_rtl_function_cc_tests): ...this.
+ 	* rtl-tests.cc (rtl_tests_c_tests): Rename to...
+ 	(rtl_tests_cc_tests): ...this.
+ 	* sbitmap.cc (sbitmap_c_tests): Rename to...
+ 	(sbitmap_cc_tests): ...this.
+ 	* selftest-run-tests.cc (selftest::run_tests): Update calls for
+ 	_c_ to _cc_ function renamings; fix names of attribs and
+ 	opt-suggestions tests.
+ 	* selftest.cc (selftest_c_tests): Rename to...
+ 	(selftest_cc_tests): ...this.
+ 	* selftest.h (attribute_c_tests): Rename to...
+ 	(attribs_cc_tests): ...this.
+ 	(bitmap_c_tests): Rename to...
+ 	(bitmap_cc_tests): ...this.
+ 	(cgraph_c_tests): Rename to...
+ 	(cgraph_cc_tests): ...this.
+ 	(convert_c_tests): Rename to...
+ 	(convert_cc_tests): ...this.
+ 	(diagnostic_c_tests): Rename to...
+ 	(diagnostic_cc_tests): ...this.
+ 	(diagnostic_show_locus_c_tests): Rename to...
+ 	(diagnostic_show_locus_cc_tests): ...this.
+ 	(dumpfile_c_tests): Rename to...
+ 	(dumpfile_cc_tests): ...this.
+ 	(edit_context_c_tests): Rename to...
+ 	(edit_context_cc_tests): ...this.
+ 	(et_forest_c_tests): Rename to...
+ 	(et_forest_cc_tests): ...this.
+ 	(fibonacci_heap_c_tests): Rename to...
+ 	(fibonacci_heap_cc_tests): ...this.
+ 	(fold_const_c_tests): Rename to...
+ 	(fold_const_cc_tests): ...this.
+ 	(function_tests_c_tests): Rename to...
+ 	(function_tests_cc_tests): ...this.
+ 	(ggc_tests_c_tests): Rename to...
+ 	(ggc_tests_cc_tests): ...this.
+ 	(gimple_c_tests): Rename to...
+ 	(gimple_cc_tests): ...this.
+ 	(hash_map_tests_c_tests): Rename to...
+ 	(hash_map_tests_cc_tests): ...this.
+ 	(hash_set_tests_c_tests): Rename to...
+ 	(hash_set_tests_cc_tests): ...this.
+ 	(input_c_tests): Rename to...
+ 	(input_cc_tests): ...this.
+ 	(opts_c_tests): Rename to...
+ 	(opts_cc_tests): ...this.
+ 	(predict_c_tests): Rename to...
+ 	(predict_cc_tests): ...this.
+ 	(pretty_print_c_tests): Rename to...
+ 	(pretty_print_cc_tests): ...this.
+ 	(read_rtl_function_c_tests): Rename to...
+ 	(read_rtl_function_cc_tests): ...this.
+ 	(rtl_tests_c_tests): Rename to...
+ 	(rtl_tests_cc_tests): ...this.
+ 	(sbitmap_c_tests): Rename to...
+ 	(sbitmap_cc_tests): ...this.
+ 	(selftest_c_tests): Rename to...
+ 	(selftest_cc_tests): ...this.
+ 	(simplify_rtx_c_tests): Rename to...
+ 	(simplify_rtx_cc_tests): ...this.
+ 	(spellcheck_c_tests): Rename to...
+ 	(spellcheck_cc_tests): ...this.
+ 	(spellcheck_tree_c_tests): Rename to...
+ 	(spellcheck_tree_cc_tests): ...this.
+ 	(sreal_c_tests): Rename to...
+ 	(sreal_cc_tests): ...this.
+ 	(store_merging_c_tests): Rename to...
+ 	(store_merging_cc_tests): ...this.
+ 	(tree_c_tests): Rename to...
+ 	(tree_cc_tests): ...this.
+ 	(tree_cfg_c_tests): Rename to...
+ 	(tree_cfg_cc_tests): ...this.
+ 	(typed_splay_tree_c_tests): Rename to...
+ 	(typed_splay_tree_cc_tests): ...this.
+ 	(vec_c_tests): Rename to...
+ 	(vec_cc_tests): ...this.
+ 	(vec_perm_indices_c_tests): Rename to...
+ 	(vec_perm_indices_cc_tests): ..this.
+ 	(opt_proposer_c_tests): Rename to...
+ 	(opt_suggestions_cc_tests): ...this.
+ 	(dbgcnt_c_tests): Rename to...
+ 	(dbgcnt_cc_tests): ...this.
+ 	(ipa_modref_tree_c_tests): Rename to...
+ 	(ipa_modref_tree_cc_tests): ...this.
+ 	* simplify-rtx.cc (simplify_rtx_c_tests): Rename to...
+ 	(simplify_rtx_cc_tests): ...this.
+ 	* spellcheck-tree.cc (spellcheck_tree_c_tests): Rename to...
+ 	(spellcheck_tree_cc_tests): ...this.
+ 	* spellcheck.cc (spellcheck_c_tests): Rename to...
+ 	(spellcheck_cc_tests): ...this.
+ 	* sreal.cc (sreal_c_tests): Rename to...
+ 	(sreal_cc_tests): ...this.
+ 	* toplev.cc (toplev::finalize): Update calls for _c_ to _cc_
+ 	function renamings.
+ 	* tree-cfg.cc (tree_cfg_c_tests): Rename to...
+ 	(tree_cfg_cc_tests): ...this.
+ 	* tree.cc (tree_c_tests): Rename to...
+ 	(tree_cc_tests): ...this.
+ 	* typed-splay-tree.cc (typed_splay_tree_c_tests): Rename to...
+ 	(typed_splay_tree_cc_tests): ...this.
+ 	* vec-perm-indices.cc (vec_perm_indices_c_tests): Rename to...
+ 	(vec_perm_indices_cc_tests): ...this.
+ 	* vec.cc (vec_c_tests): Rename to...
+ 	(vec_cc_tests): ...this.
+ 
+ 2022-01-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	PR tree-optimization/103997
+ 	* tree-vect-loop.cc (vect_analyze_loop): Fix mode skipping for epilogue
+ 	vectorization.
+ 
+ 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/102860
+ 	* match.pd (x %[fl] y -> x % y): New simplification for
+ 	unsigned integral types.
+ 	* optabs-tree.cc (optab_for_tree_code): Return unknown_optab
+ 	for {CEIL,FLOOR,ROUND}_{DIV,MOD}_EXPR with VECTOR_TYPE.
+ 
+ 2022-01-19  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104112
+ 	* tree-vect-loop.cc (vect_find_reusable_accumulator): Check
+ 	for required intermediate vector types.
+ 
+ 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Add default:.
+ 
+ 2022-01-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure.ac: Remove -Wno-error=format-diag.
+ 	* configure: Regenerate.
+ 
+ 2022-01-19  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/riscv/riscv.cc (riscv_handle_type_attribute):
+ 	Update one -Wformat-diag string in warning message.
+ 
+ 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR middle-end/104103
+ 	* gimple-ssa-warn-access.cc (pass_waccess::check_call): Don't check
+ 	.ASAN_MARK calls.
+ 
+ 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89074
+ 	* fold-const.cc (address_compare): Consider different STRING_CSTs
+ 	with the same lengths that memcmp the same as equal, not different.
+ 
+ 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* config/i386/sse.md (*aes<aeswideklvariant>u*): Use %0 instead of
+ 	{%0}.
+ 
+ 2022-01-19  Martin Liska  <mliska@suse.cz>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_goacc_validate_dims_1): Update
+ 	warning messages.
+ 
+ 2022-01-19  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	PR target/104090
+ 	* config/rs6000/rs6000.cc (rs6000_machine_from_flags): Use also
+ 	rs6000_cpu.
+ 
+ 2022-01-19  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/104104
+ 	* config/i386/sse.md
+ 	(<avx512>_<complexopname>_<mode><maskc_name><round_name>,
+ 	avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>,
+ 	avx512dq_mul<mode>3<mask_name>, <avx2_avx512>_permvar<mode><mask_name>,
+ 	avx2_perm<mode>_1<mask_name>, avx512f_perm<mode>_1<mask_name>,
+ 	avx512dq_rangep<mode><mask_name><round_saeonly_name>,
+ 	avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
+ 	<avx512>_getmant<mode><mask_name><round_saeonly_name>,
+ 	avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
+ 	Use vxorps\t%x0, %x0, %x0 instead of vxorps\t{%x0, %x0, %x0}.
+ 
+ 2022-01-19  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/104069
+ 	* gimple-ssa-warn-access.cc (pointers_related_p): Return false for
+ 	an unknown result as documented.
+ 
+ 2022-01-18  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	* ipa-split.cc (visit_bb): Fix comment before the
+ 	warning/error attribute checking code.
+ 
+ 2022-01-18  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/coreout.cc (bpf_core_reloc_add): Do not account
+ 	for base strtab offset yet as it may change.
+ 	(output_asm_btfext_core_reloc): Do so here instead.
+ 	(output_btfext_core_sections): Likewise.
+ 
+ 2022-01-18  David Faust  <david.faust@oracle.com>
+ 
+ 	* config/bpf/coreout.cc (output_btfext_header): Account for
+ 	4-byte record size in core_relo_len.
+ 	(output_btfext_core_sections): Only write record size once.
+ 	* config/bpf/coreout.h (btf_ext_section_header): Delete unused
+ 	member.
+ 
+ 2022-01-18  Maciej W. Rozycki  <macro@embecosm.com>
+ 
+ 	* common/config/riscv/riscv-common.cc
+ 	(riscv_subset_list::parse_multiletter_ext): Move pointer
+ 	arithmetic ahead of `free'.
+ 
+ 2022-01-18  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/104007
+ 	* gimplify.cc (gimple_push_cleanup): Handle eh_only in conditional
+ 	context.
+ 
+ 2022-01-18  Sandra Loosemore  <sandra@codesourcery.com>
+ 
+ 	PR middle-end/103163
+ 	* emit-rtl.cc (init_emit_regs): Initialize stack_limit_rtx here...
+ 	(init_emit_once): ...not here.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* collect2.cc (scan_libraries): Fix -Wformat-diag issues.
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_simd_expand_builtin): Likewise.
+ 	* config/arc/arc.md: Likewise.
+ 	* config/avr/avr.cc (avr_section_type_flags): Likewise.
+ 	* config/bfin/bfin.cc (bfin_option_override): Likewise.
+ 	(bfin_handle_longcall_attribute): Likewise.
+ 	* config/cris/cris.h (FUNCTION_PROFILER): Likewise.
+ 	* config/frv/frv.cc (frv_expand_builtin): Likewise.
+ 	* config/ia64/ia64-c.cc (ia64_hpux_handle_builtin_pragma): Likewise.
+ 	* config/iq2000/iq2000.cc (save_restore_insns): Likewise.
+ 	(iq2000_print_operand_address): Likewise.
+ 	(iq2000_print_operand): Likewise.
+ 	* config/m32c/m32c-pragma.cc (m32c_pragma_memregs): Likewise.
+ 	(m32c_pragma_address): Likewise.
+ 	* config/m68k/m68k.cc (m68k_handle_fndecl_attribute): Likewise.
+ 	* config/mips/mips.cc (mips_handle_interrupt_attr): Likewise.
+ 	(mips_set_compression_mode): Likewise.
+ 	* config/mmix/mmix.cc (mmix_function_profiler): Likewise.
+ 	(mmix_print_operand): Likewise.
+ 	(mmix_output_shiftvalue_op_from_str): Likewise.
+ 	(mmix_output_shifted_value): Likewise.
+ 	* config/msp430/driver-msp430.cc (msp430_select_hwmult_lib): Likewise.
+ 	* config/msp430/msp430.cc (msp430_option_override): Likewise.
+ 	(msp430_attr): Likewise.
+ 	(msp430_expand_delay_cycles): Likewise.
+ 	(msp430_expand_builtin): Likewise.
+ 	* config/rs6000/aix73.h: Likewise.
+ 	* config/rs6000/rtems.h (INVALID_64BIT): Likewise.
+ 	* config/rx/rx.cc (rx_expand_builtin_mvtc): Likewise.
+ 	(valid_psw_flag): Likewise.
+ 	* config/sh/sh.cc (parse_validate_atomic_model_option): Likewise.
+ 	* config/stormy16/stormy16.cc (xstormy16_function_profiler): Likewise.
+ 	(xstormy16_expand_builtin_va_start): Likewise.
+ 	(xstormy16_handle_below100_attribute): Likewise.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/vms/vms-c.cc (vms_pragma_nostandard): Fix -Wformat-diag
+ 	warning.
+ 	(vms_pragma_standard): Likewise.
+ 	(vms_pragma_extern_prefix): Likewise.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/xtensa/xtensa.cc (print_operand): Fix warnings.
+ 	(print_operand_address): Likewise.
+ 	(xtensa_multibss_section_type_flags): Likewise.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Change
+ 	wording of an error message.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/v850/v850-c.cc (pop_data_area): Fix -Wformat-diag
+ 	warning.
+ 	(ghs_pragma_section): Likewise.
+ 	(ghs_pragma_interrupt): Likewise.
+ 	(ghs_pragma_starttda): Likewise.
+ 	(ghs_pragma_startsda): Likewise.
+ 	(ghs_pragma_startzda): Likewise.
+ 	(ghs_pragma_endtda): Likewise.
+ 	(ghs_pragma_endsda): Likewise.
+ 	(ghs_pragma_endzda): Likewise.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/nds32/nds32-intrinsic.cc (nds32_expand_builtin_impl):
+ 	Fix warnings.
+ 	* config/nds32/nds32-intrinsic.md: Likewise.
+ 	* config/nds32/nds32-isr.cc (nds32_check_isr_attrs_conflict): Likewise.
+ 	* config/nds32/nds32.cc (nds32_print_operand): Likewise.
+ 	(nds32_insert_attributes): Likewise.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/nvptx/nvptx.cc (nvptx_goacc_validate_dims_1): Wrap
+ 	keyword.
+ 	* config/nvptx/nvptx.md: Remove trailing dot.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/riscv/riscv-common.cc (riscv_subset_list::add):
+ 	Wrap keywords with quotes and remove trailing dots.
+ 	(riscv_subset_list::parsing_subset_version): Likewise.
+ 	(riscv_subset_list::parse_std_ext): Likewise.
+ 	(riscv_subset_list::parse_multiletter_ext): Likewise.
+ 	* config/riscv/riscv.cc (riscv_handle_type_attribute): Likewise.
+ 
+ 2022-01-18  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* tree-vect-loop.cc (vect_estimate_min_profitable_iters): Pass new
+ 	argument suggested_unroll_factor.
+ 	(vect_analyze_loop_costing): Likewise.
+ 	(_loop_vec_info::_loop_vec_info): Initialize new member
+ 	suggested_unroll_factor.
+ 	(vect_determine_partial_vectors_and_peeling): Make epilogue of unrolled
+ 	main loop use partial vectors.
+ 	(vect_analyze_loop_2): Pass and use new argument
+ 	suggested_unroll_factor.
+ 	(vect_analyze_loop_1): Change to intialize local
+ 	suggested_unroll_factor and use it.
+ 	(vectorizable_reduction): Don't use single_defuse_cycle when unrolling.
+ 	* tree-vectorizer.h (_loop_vec_info::_loop_vec_info): Add new member
+ 	suggested_unroll_factor.
+ 	(vector_costs::vector_costs): Add new member m_suggested_unroll_factor.
+ 	(vector_costs::suggested_unroll_factor): New getter function.
+ 	(finish_cost): Set return argument suggested_unroll_factor.
+ 
+ 2022-01-18  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/104038
+ 	* doc/invoke.texi (relation-block-limit): New.
+ 	* params.opt (relation-block-limit): New.
+ 	* value-relation.cc (dom_oracle::register_relation): Check for NULL
+ 	record before invoking transitive registery.
+ 	(dom_oracle::set_one_relation): Check limit before creating record.
+ 	(dom_oracle::register_transitives): Stop when no record created.
+ 	* value-relation.h (relation_chain_head::m_num_relations): New.
+ 
+ 2022-01-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/103989
+ 	* ipa-inline.cc (inline_small_functions): Do not enqueue call
+ 	edges originating in functions compiled with -Og.
+ 
+ 2022-01-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ipa/103989
+ 	* passes.def (pass_all_optimizations_g): Remove pass_modref
+ 	and pass_local_pure_const.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/s390/s390.cc: Fix -Wformat-diag warnings.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/s390/s390-c.cc (s390_expand_overloaded_builtin): Wrap
+ 	keyword in quotes.
+ 	(s390_resolve_overloaded_builtin): Remove trailing dot.
+ 	* config/s390/s390.cc (s390_const_operand_ok): Use - for range.
+ 	(s390_expand_builtin): Remove trailing dot.
+ 	(s390_emit_prologue): Likewise, use semicolon.
+ 	(s390_option_override_internal): Update keyword.
+ 	* varasm.cc (do_assemble_alias): Wrap keyword in quotes.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/rs6000/rs6000-call.cc (rs6000_expand_builtin): Wrap
+ 	keywords and use %qs instead of %<%s%>.
+ 
+ 2022-01-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103987
+ 	* tree-ssa-dse.cc (dse_optimize_call): Properly guard modref
+ 	query with a pointer check.
+ 
+ 2022-01-18  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR target/104005
+ 	* config/aarch64/aarch64.cc (aarch64_check_consecutive_mems):
+ 	When using MEM_EXPR, require the base to be a decl.
+ 
+ 2022-01-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	* cgraph.h (struct cgraph_simd_clone_arg): Re-arrange fields to
+ 	avoid padding.
+ 	* function.h (struct function): Likewise.
+ 
+ 2022-01-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/install.texi: Update prerequisites for GNAT
+ 
+ 2022-01-18  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR tree-optimization/101941
+ 	* ipa-split.cc (visit_bb): Disallow function calls where
+ 	the function has either error or warning attribute.
+ 
+ 2022-01-18  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/104064
+ 	* tree-vect-data-refs.cc (vect_analyze_data_ref_accesses): Check
+ 	DR_INIT fits in a signed HWI, represent the difference from the
+ 	first DR in unsigned.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Rename .c names to .cc.
+ 	* config.gcc: Likewise.
+ 	* configure: Regenerate. Likewise.
+ 	* configure.ac: Likewise.
+ 	* gengtype.cc (set_gc_used): Likewise.
+ 	(source_dot_c_frul): Likewise.
+ 	(source_dot_cc_frul): Likewise.
+ 	(struct file_rule_st): Likewise.
+ 	(close_output_files): Likewise.
+ 	* config/avr/t-avr: Use CXXFLAGS_* and CXX_FOR_BUILD.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.in: Rename .c names to .cc.
+ 	* alias.h: Likewise.
+ 	* asan.cc: Likewise.
+ 	* auto-profile.h: Likewise.
+ 	* basic-block.h (struct basic_block_d): Likewise.
+ 	* btfout.cc: Likewise.
+ 	* builtins.cc (expand_builtin_longjmp): Likewise.
+ 	(validate_arg): Likewise.
+ 	(access_ref::offset_bounded): Likewise.
+ 	* caller-save.cc (reg_restore_code): Likewise.
+ 	(setup_save_areas): Likewise.
+ 	* calls.cc (initialize_argument_information): Likewise.
+ 	(expand_call): Likewise.
+ 	(emit_library_call_value_1): Likewise.
+ 	* cfg-flags.def (RTL): Likewise.
+ 	(SIBCALL): Likewise.
+ 	(CAN_FALLTHRU): Likewise.
+ 	* cfganal.cc (post_order_compute): Likewise.
+ 	* cfgcleanup.cc (try_simplify_condjump): Likewise.
+ 	(merge_blocks_move_predecessor_nojumps): Likewise.
+ 	(merge_blocks_move_successor_nojumps): Likewise.
+ 	(merge_blocks_move): Likewise.
+ 	(old_insns_match_p): Likewise.
+ 	(try_crossjump_bb): Likewise.
+ 	* cfgexpand.cc (expand_gimple_stmt): Likewise.
+ 	* cfghooks.cc (split_block_before_cond_jump): Likewise.
+ 	(profile_record_check_consistency): Likewise.
+ 	* cfghooks.h: Likewise.
+ 	* cfgrtl.cc (pass_free_cfg::execute): Likewise.
+ 	(rtl_can_merge_blocks): Likewise.
+ 	(try_redirect_by_replacing_jump): Likewise.
+ 	(make_pass_outof_cfg_layout_mode): Likewise.
+ 	(cfg_layout_can_merge_blocks_p): Likewise.
+ 	* cgraph.cc (release_function_body): Likewise.
+ 	(cgraph_node::get_fun): Likewise.
+ 	* cgraph.h (struct cgraph_node): Likewise.
+ 	(asmname_hasher::equal): Likewise.
+ 	(cgraph_inline_failed_type): Likewise.
+ 	(thunk_adjust): Likewise.
+ 	(dump_callgraph_transformation): Likewise.
+ 	(record_references_in_initializer): Likewise.
+ 	(ipa_discover_variable_flags): Likewise.
+ 	* cgraphclones.cc (GTY): Likewise.
+ 	* cgraphunit.cc (symbol_table::finalize_compilation_unit): Likewise.
+ 	* collect-utils.h (GCC_COLLECT_UTILS_H): Likewise.
+ 	* collect2-aix.h (GCC_COLLECT2_AIX_H): Likewise.
+ 	* collect2.cc (maybe_run_lto_and_relink): Likewise.
+ 	* combine-stack-adj.cc: Likewise.
+ 	* combine.cc (setup_incoming_promotions): Likewise.
+ 	(combine_simplify_rtx): Likewise.
+ 	(count_rtxs): Likewise.
+ 	* common.opt: Likewise.
+ 	* common/config/aarch64/aarch64-common.cc: Likewise.
+ 	* common/config/arm/arm-common.cc (arm_asm_auto_mfpu): Likewise.
+ 	* common/config/avr/avr-common.cc: Likewise.
+ 	* common/config/i386/i386-isas.h (struct _isa_names_table): Likewise.
+ 	* conditions.h: Likewise.
+ 	* config.gcc: Likewise.
+ 	* config/aarch64/aarch64-builtins.cc (aarch64_resolve_overloaded_memtag): Likewise.
+ 	* config/aarch64/aarch64-protos.h (aarch64_classify_address): Likewise.
+ 	(aarch64_get_extension_string_for_isa_flags): Likewise.
+ 	* config/aarch64/aarch64-sve-builtins.cc (function_builder::add_function): Likewise.
+ 	* config/aarch64/aarch64.cc (aarch64_regmode_natural_size): Likewise.
+ 	(aarch64_sched_first_cycle_multipass_dfa_lookahead): Likewise.
+ 	(aarch64_option_valid_attribute_p): Likewise.
+ 	(aarch64_short_vector_p): Likewise.
+ 	(aarch64_float_const_representable_p): Likewise.
+ 	* config/aarch64/aarch64.h (DBX_REGISTER_NUMBER): Likewise.
+ 	(ASM_OUTPUT_POOL_EPILOGUE): Likewise.
+ 	(GTY): Likewise.
+ 	* config/aarch64/cortex-a57-fma-steering.cc: Likewise.
+ 	* config/aarch64/driver-aarch64.cc (contains_core_p): Likewise.
+ 	* config/aarch64/t-aarch64: Likewise.
+ 	* config/aarch64/x-aarch64: Likewise.
+ 	* config/aarch64/x-darwin: Likewise.
+ 	* config/alpha/alpha-protos.h: Likewise.
+ 	* config/alpha/alpha.cc (alpha_scalar_mode_supported_p): Likewise.
+ 	* config/alpha/alpha.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
+ 	(enum reg_class): Likewise.
+ 	* config/alpha/alpha.md: Likewise.
+ 	* config/alpha/driver-alpha.cc (AMASK_LOCKPFTCHOK): Likewise.
+ 	* config/alpha/x-alpha: Likewise.
+ 	* config/arc/arc-protos.h (arc_eh_uses): Likewise.
+ 	* config/arc/arc.cc (ARC_OPT): Likewise.
+ 	(arc_ccfsm_advance): Likewise.
+ 	(arc_arg_partial_bytes): Likewise.
+ 	(conditionalize_nonjump): Likewise.
+ 	* config/arc/arc.md: Likewise.
+ 	* config/arc/builtins.def: Likewise.
+ 	* config/arc/t-arc: Likewise.
+ 	* config/arm/arm-c.cc (arm_resolve_overloaded_builtin): Likewise.
+ 	(arm_pragma_target_parse): Likewise.
+ 	* config/arm/arm-protos.h (save_restore_target_globals): Likewise.
+ 	(arm_cpu_cpp_builtins): Likewise.
+ 	* config/arm/arm.cc (vfp3_const_double_index): Likewise.
+ 	(shift_op): Likewise.
+ 	(thumb2_final_prescan_insn): Likewise.
+ 	(arm_final_prescan_insn): Likewise.
+ 	(arm_asm_output_labelref): Likewise.
+ 	(arm_small_register_classes_for_mode_p): Likewise.
+ 	* config/arm/arm.h: Likewise.
+ 	* config/arm/arm.md: Likewise.
+ 	* config/arm/driver-arm.cc: Likewise.
+ 	* config/arm/symbian.h: Likewise.
+ 	* config/arm/t-arm: Likewise.
+ 	* config/arm/thumb1.md: Likewise.
+ 	* config/arm/x-arm: Likewise.
+ 	* config/avr/avr-c.cc (avr_register_target_pragmas): Likewise.
+ 	* config/avr/avr-fixed.md: Likewise.
+ 	* config/avr/avr-log.cc (avr_log_vadump): Likewise.
+ 	* config/avr/avr-mcus.def: Likewise.
+ 	* config/avr/avr-modes.def (FRACTIONAL_INT_MODE): Likewise.
+ 	* config/avr/avr-passes.def (INSERT_PASS_BEFORE): Likewise.
+ 	* config/avr/avr-protos.h (make_avr_pass_casesi): Likewise.
+ 	* config/avr/avr.cc (avr_option_override): Likewise.
+ 	(avr_build_builtin_va_list): Likewise.
+ 	(avr_mode_dependent_address_p): Likewise.
+ 	(avr_function_arg_advance): Likewise.
+ 	(avr_asm_output_aligned_decl_common): Likewise.
+ 	* config/avr/avr.h (RETURN_ADDR_RTX): Likewise.
+ 	(SUPPORTS_INIT_PRIORITY): Likewise.
+ 	* config/avr/avr.md: Likewise.
+ 	* config/avr/builtins.def: Likewise.
+ 	* config/avr/gen-avr-mmcu-specs.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
+ 	* config/avr/gen-avr-mmcu-texi.cc (IN_GEN_AVR_MMCU_TEXI): Likewise.
+ 	(main): Likewise.
+ 	* config/avr/t-avr: Likewise.
+ 	* config/bfin/bfin.cc (frame_related_constant_load): Likewise.
+ 	* config/bpf/bpf-protos.h (GCC_BPF_PROTOS_H): Likewise.
+ 	* config/bpf/bpf.h (enum reg_class): Likewise.
+ 	* config/bpf/t-bpf: Likewise.
+ 	* config/c6x/c6x-protos.h (GCC_C6X_PROTOS_H): Likewise.
+ 	* config/cr16/cr16-protos.h: Likewise.
+ 	* config/cris/cris.cc (cris_address_cost): Likewise.
+ 	(cris_side_effect_mode_ok): Likewise.
+ 	(cris_init_machine_status): Likewise.
+ 	(cris_emit_movem_store): Likewise.
+ 	* config/cris/cris.h (INDEX_REG_CLASS): Likewise.
+ 	(enum reg_class): Likewise.
+ 	(struct cum_args): Likewise.
+ 	* config/cris/cris.opt: Likewise.
+ 	* config/cris/sync.md: Likewise.
+ 	* config/csky/csky.cc (csky_expand_prologue): Likewise.
+ 	* config/darwin-c.cc: Likewise.
+ 	* config/darwin-f.cc: Likewise.
+ 	* config/darwin-sections.def (zobj_const_section): Likewise.
+ 	* config/darwin.cc (output_objc_section_asm_op): Likewise.
+ 	(fprintf): Likewise.
+ 	* config/darwin.h (GTY): Likewise.
+ 	* config/elfos.h: Likewise.
+ 	* config/epiphany/epiphany-sched.md: Likewise.
+ 	* config/epiphany/epiphany.cc (epiphany_function_value): Likewise.
+ 	* config/epiphany/epiphany.h (GTY): Likewise.
+ 	(NO_FUNCTION_CSE): Likewise.
+ 	* config/epiphany/mode-switch-use.cc: Likewise.
+ 	* config/epiphany/predicates.md: Likewise.
+ 	* config/epiphany/t-epiphany: Likewise.
+ 	* config/fr30/fr30-protos.h: Likewise.
+ 	* config/frv/frv-protos.h: Likewise.
+ 	* config/frv/frv.cc (TLS_BIAS): Likewise.
+ 	* config/frv/frv.h (ASM_OUTPUT_ALIGNED_LOCAL): Likewise.
+ 	* config/ft32/ft32-protos.h: Likewise.
+ 	* config/gcn/gcn-hsa.h (ASM_APP_OFF): Likewise.
+ 	* config/gcn/gcn.cc (gcn_init_libfuncs): Likewise.
+ 	* config/gcn/mkoffload.cc (copy_early_debug_info): Likewise.
+ 	* config/gcn/t-gcn-hsa: Likewise.
+ 	* config/gcn/t-omp-device: Likewise.
+ 	* config/h8300/h8300-protos.h (GCC_H8300_PROTOS_H): Likewise.
+ 	(same_cmp_following_p): Likewise.
+ 	* config/h8300/h8300.cc (F): Likewise.
+ 	* config/h8300/h8300.h (struct cum_arg): Likewise.
+ 	(BRANCH_COST): Likewise.
+ 	* config/i386/cygming.h (DEFAULT_PCC_STRUCT_RETURN): Likewise.
+ 	* config/i386/djgpp.h (TARGET_ASM_LTO_END): Likewise.
+ 	* config/i386/dragonfly.h (NO_PROFILE_COUNTERS): Likewise.
+ 	* config/i386/driver-i386.cc (detect_caches_intel): Likewise.
+ 	* config/i386/freebsd.h (NO_PROFILE_COUNTERS): Likewise.
+ 	* config/i386/i386-c.cc (ix86_target_macros): Likewise.
+ 	* config/i386/i386-expand.cc (get_mode_wider_vector): Likewise.
+ 	* config/i386/i386-options.cc (ix86_set_func_type): Likewise.
+ 	* config/i386/i386-protos.h (ix86_extract_perm_from_pool_constant): Likewise.
+ 	(ix86_register_pragmas): Likewise.
+ 	(ix86_d_has_stdcall_convention): Likewise.
+ 	(i386_pe_seh_init_sections): Likewise.
+ 	* config/i386/i386.cc (ix86_function_arg_regno_p): Likewise.
+ 	(ix86_function_value_regno_p): Likewise.
+ 	(ix86_compute_frame_layout): Likewise.
+ 	(legitimize_pe_coff_symbol): Likewise.
+ 	(output_pic_addr_const): Likewise.
+ 	* config/i386/i386.h (defined): Likewise.
+ 	(host_detect_local_cpu): Likewise.
+ 	(CONSTANT_ADDRESS_P): Likewise.
+ 	(DEFAULT_LARGE_SECTION_THRESHOLD): Likewise.
+ 	(struct machine_frame_state): Likewise.
+ 	* config/i386/i386.md: Likewise.
+ 	* config/i386/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
+ 	* config/i386/mmx.md: Likewise.
+ 	* config/i386/sse.md: Likewise.
+ 	* config/i386/t-cygming: Likewise.
+ 	* config/i386/t-djgpp: Likewise.
+ 	* config/i386/t-gnu-property: Likewise.
+ 	* config/i386/t-i386: Likewise.
+ 	* config/i386/t-intelmic: Likewise.
+ 	* config/i386/t-omp-device: Likewise.
+ 	* config/i386/winnt-cxx.cc (i386_pe_type_dllimport_p): Likewise.
+ 	(i386_pe_adjust_class_at_definition): Likewise.
+ 	* config/i386/winnt.cc (gen_stdcall_or_fastcall_suffix): Likewise.
+ 	(i386_pe_mangle_decl_assembler_name): Likewise.
+ 	(i386_pe_encode_section_info): Likewise.
+ 	* config/i386/x-cygwin: Likewise.
+ 	* config/i386/x-darwin: Likewise.
+ 	* config/i386/x-i386: Likewise.
+ 	* config/i386/x-mingw32: Likewise.
+ 	* config/i386/x86-tune-sched-core.cc: Likewise.
+ 	* config/i386/x86-tune.def: Likewise.
+ 	* config/i386/xm-djgpp.h (STANDARD_STARTFILE_PREFIX_1): Likewise.
+ 	* config/ia64/freebsd.h: Likewise.
+ 	* config/ia64/hpux.h (REGISTER_TARGET_PRAGMAS): Likewise.
+ 	* config/ia64/ia64-protos.h (ia64_except_unwind_info): Likewise.
+ 	* config/ia64/ia64.cc (ia64_function_value_regno_p): Likewise.
+ 	(ia64_secondary_reload_class): Likewise.
+ 	(bundling): Likewise.
+ 	* config/ia64/ia64.h: Likewise.
+ 	* config/ia64/ia64.md: Likewise.
+ 	* config/ia64/predicates.md: Likewise.
+ 	* config/ia64/sysv4.h: Likewise.
+ 	* config/ia64/t-ia64: Likewise.
+ 	* config/iq2000/iq2000.h (FUNCTION_MODE): Likewise.
+ 	* config/iq2000/iq2000.md: Likewise.
+ 	* config/linux.h (TARGET_HAS_BIONIC): Likewise.
+ 	(if): Likewise.
+ 	* config/m32c/m32c.cc (m32c_function_needs_enter): Likewise.
+ 	* config/m32c/m32c.h (MAX_REGS_PER_ADDRESS): Likewise.
+ 	* config/m32c/t-m32c: Likewise.
+ 	* config/m32r/m32r-protos.h: Likewise.
+ 	* config/m32r/m32r.cc (m32r_print_operand): Likewise.
+ 	* config/m32r/m32r.h: Likewise.
+ 	* config/m32r/m32r.md: Likewise.
+ 	* config/m68k/m68k-isas.def: Likewise.
+ 	* config/m68k/m68k-microarchs.def: Likewise.
+ 	* config/m68k/m68k-protos.h (strict_low_part_peephole_ok): Likewise.
+ 	(m68k_epilogue_uses): Likewise.
+ 	* config/m68k/m68k.cc (m68k_call_tls_get_addr): Likewise.
+ 	(m68k_sched_adjust_cost): Likewise.
+ 	(m68k_sched_md_init): Likewise.
+ 	* config/m68k/m68k.h (__transfer_from_trampoline): Likewise.
+ 	(enum m68k_function_kind): Likewise.
+ 	* config/m68k/m68k.md: Likewise.
+ 	* config/m68k/m68kemb.h: Likewise.
+ 	* config/m68k/uclinux.h (ENDFILE_SPEC): Likewise.
+ 	* config/mcore/mcore-protos.h: Likewise.
+ 	* config/mcore/mcore.cc (mcore_expand_insv): Likewise.
+ 	(mcore_expand_prolog): Likewise.
+ 	* config/mcore/mcore.h (TARGET_MCORE): Likewise.
+ 	* config/mcore/mcore.md: Likewise.
+ 	* config/microblaze/microblaze-protos.h: Likewise.
+ 	* config/microblaze/microblaze.cc (microblaze_legitimate_pic_operand): Likewise.
+ 	(microblaze_function_prologue): Likewise.
+ 	(microblaze_function_epilogue): Likewise.
+ 	(microblaze_select_section): Likewise.
+ 	(microblaze_asm_output_mi_thunk): Likewise.
+ 	(microblaze_eh_return): Likewise.
+ 	* config/microblaze/microblaze.h: Likewise.
+ 	* config/microblaze/microblaze.md: Likewise.
+ 	* config/microblaze/t-microblaze: Likewise.
+ 	* config/mips/driver-native.cc: Likewise.
+ 	* config/mips/loongson2ef.md: Likewise.
+ 	* config/mips/mips-protos.h (mips_expand_vec_cmp_expr): Likewise.
+ 	* config/mips/mips.cc (mips_rtx_costs): Likewise.
+ 	(mips_output_filename): Likewise.
+ 	(mips_output_function_prologue): Likewise.
+ 	(mips_output_function_epilogue): Likewise.
+ 	(mips_output_mi_thunk): Likewise.
+ 	* config/mips/mips.h: Likewise.
+ 	* config/mips/mips.md: Likewise.
+ 	* config/mips/t-mips: Likewise.
+ 	* config/mips/x-native: Likewise.
+ 	* config/mmix/mmix-protos.h: Likewise.
+ 	* config/mmix/mmix.cc (mmix_option_override): Likewise.
+ 	(mmix_dbx_register_number): Likewise.
+ 	(mmix_expand_prologue): Likewise.
+ 	* config/mmix/mmix.h: Likewise.
+ 	* config/mmix/mmix.md: Likewise.
+ 	* config/mmix/predicates.md: Likewise.
+ 	* config/mn10300/mn10300.cc (mn10300_symbolic_operand): Likewise.
+ 	(mn10300_legitimate_pic_operand_p): Likewise.
+ 	* config/mn10300/mn10300.h (enum reg_class): Likewise.
+ 	(NO_FUNCTION_CSE): Likewise.
+ 	* config/moxie/moxie-protos.h: Likewise.
+ 	* config/moxie/uclinux.h (TARGET_LIBC_HAS_FUNCTION): Likewise.
+ 	* config/msp430/msp430-devices.cc (extract_devices_dir_from_exec_prefix): Likewise.
+ 	* config/msp430/msp430.cc (msp430_gimplify_va_arg_expr): Likewise.
+ 	(msp430_incoming_return_addr_rtx): Likewise.
+ 	* config/msp430/msp430.h (msp430_get_linker_devices_include_path): Likewise.
+ 	* config/msp430/t-msp430: Likewise.
+ 	* config/nds32/nds32-cost.cc (nds32_rtx_costs_speed_prefer): Likewise.
+ 	(nds32_rtx_costs_size_prefer): Likewise.
+ 	(nds32_init_rtx_costs): Likewise.
+ 	* config/nds32/nds32-doubleword.md: Likewise.
+ 	* config/nds32/nds32.cc (nds32_memory_move_cost): Likewise.
+ 	(nds32_builtin_decl): Likewise.
+ 	* config/nds32/nds32.h (enum nds32_16bit_address_type): Likewise.
+ 	(enum nds32_isr_nested_type): Likewise.
+ 	(enum reg_class): Likewise.
+ 	* config/nds32/predicates.md: Likewise.
+ 	* config/nds32/t-nds32: Likewise.
+ 	* config/nios2/nios2.cc (nios2_pragma_target_parse): Likewise.
+ 	* config/nvptx/nvptx-protos.h: Likewise.
+ 	* config/nvptx/nvptx.cc (nvptx_goacc_expand_var_decl): Likewise.
+ 	* config/nvptx/nvptx.h (TARGET_CPU_CPP_BUILTINS): Likewise.
+ 	* config/nvptx/t-nvptx: Likewise.
+ 	* config/nvptx/t-omp-device: Likewise.
+ 	* config/pa/elf.h: Likewise.
+ 	* config/pa/pa-linux.h (GLOBAL_ASM_OP): Likewise.
+ 	* config/pa/pa-netbsd.h (GLOBAL_ASM_OP): Likewise.
+ 	* config/pa/pa-openbsd.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
+ 	* config/pa/pa-protos.h (pa_eh_return_handler_rtx): Likewise.
+ 	(pa_legitimize_reload_address): Likewise.
+ 	(pa_can_use_return_insn): Likewise.
+ 	* config/pa/pa.cc (mem_shadd_or_shadd_rtx_p): Likewise.
+ 	(som_output_text_section_asm_op): Likewise.
+ 	* config/pa/pa.h (PROFILE_BEFORE_PROLOGUE): Likewise.
+ 	* config/pa/pa.md: Likewise.
+ 	* config/pa/som.h: Likewise.
+ 	* config/pa/t-pa: Likewise.
+ 	* config/pdp11/pdp11.cc (decode_pdp11_d): Likewise.
+ 	* config/pdp11/pdp11.h: Likewise.
+ 	* config/pdp11/pdp11.md: Likewise.
+ 	* config/pdp11/t-pdp11: Likewise.
+ 	* config/pru/pru.md: Likewise.
+ 	* config/pru/t-pru: Likewise.
+ 	* config/riscv/riscv-protos.h (NUM_SYMBOL_TYPES): Likewise.
+ 	(riscv_gpr_save_operation_p): Likewise.
+ 	(riscv_d_register_target_info): Likewise.
+ 	(riscv_init_builtins): Likewise.
+ 	* config/riscv/riscv.cc (riscv_output_mi_thunk): Likewise.
+ 	* config/riscv/riscv.h (CSW_MAX_OFFSET): Likewise.
+ 	* config/riscv/t-riscv: Likewise.
+ 	* config/rl78/rl78.cc (rl78_asm_ctor_dtor): Likewise.
+ 	* config/rl78/t-rl78: Likewise.
+ 	* config/rs6000/aix.h: Likewise.
+ 	* config/rs6000/aix71.h (ASM_SPEC_COMMON): Likewise.
+ 	* config/rs6000/aix72.h (ASM_SPEC_COMMON): Likewise.
+ 	* config/rs6000/aix73.h (ASM_SPEC_COMMON): Likewise.
+ 	* config/rs6000/darwin.h (TARGET_ASM_GLOBALIZE_LABEL): Likewise.
+ 	* config/rs6000/driver-rs6000.cc: Likewise.
+ 	* config/rs6000/freebsd.h: Likewise.
+ 	* config/rs6000/freebsd64.h: Likewise.
+ 	* config/rs6000/lynx.h (ASM_OUTPUT_ALIGN): Likewise.
+ 	* config/rs6000/rbtree.cc: Likewise.
+ 	* config/rs6000/rbtree.h: Likewise.
+ 	* config/rs6000/rs6000-c.cc (rs6000_target_modify_macros): Likewise.
+ 	* config/rs6000/rs6000-call.cc (rs6000_invalid_builtin): Likewise.
+ 	(rs6000_expand_builtin): Likewise.
+ 	(rs6000_init_builtins): Likewise.
+ 	* config/rs6000/rs6000-cpus.def: Likewise.
+ 	* config/rs6000/rs6000-gen-builtins.cc (write_init_ovld_table): Likewise.
+ 	* config/rs6000/rs6000-internal.h (ALTIVEC_REG_BIT): Likewise.
+ 	(quad_address_offset_p): Likewise.
+ 	* config/rs6000/rs6000-logue.cc (interesting_frame_related_regno): Likewise.
+ 	(rs6000_emit_epilogue): Likewise.
+ 	* config/rs6000/rs6000-overload.def: Likewise.
+ 	* config/rs6000/rs6000-p8swap.cc: Likewise.
+ 	* config/rs6000/rs6000-protos.h (GCC_RS6000_PROTOS_H): Likewise.
+ 	(rs6000_const_f32_to_i32): Likewise.
+ 	* config/rs6000/rs6000.cc (legitimate_lo_sum_address_p): Likewise.
+ 	(rs6000_debug_legitimize_address): Likewise.
+ 	(rs6000_mode_dependent_address): Likewise.
+ 	(rs6000_adjust_priority): Likewise.
+ 	(rs6000_c_mode_for_suffix): Likewise.
+ 	* config/rs6000/rs6000.h (defined): Likewise.
+ 	(LONG_DOUBLE_TYPE_SIZE): Likewise.
+ 	* config/rs6000/rs6000.md: Likewise.
+ 	* config/rs6000/sysv4.h: Likewise.
+ 	* config/rs6000/t-linux: Likewise.
+ 	* config/rs6000/t-linux64: Likewise.
+ 	* config/rs6000/t-rs6000: Likewise.
+ 	* config/rs6000/x-darwin: Likewise.
+ 	* config/rs6000/x-darwin64: Likewise.
+ 	* config/rs6000/x-rs6000: Likewise.
+ 	* config/rs6000/xcoff.h (ASM_OUTPUT_LABELREF): Likewise.
+ 	* config/rx/rx.cc (rx_expand_builtin): Likewise.
+ 	* config/s390/constraints.md: Likewise.
+ 	* config/s390/driver-native.cc: Likewise.
+ 	* config/s390/htmxlintrin.h: Likewise.
+ 	* config/s390/s390-builtins.def (B_DEF): Likewise.
+ 	(OB_DEF_VAR): Likewise.
+ 	* config/s390/s390-builtins.h: Likewise.
+ 	* config/s390/s390-c.cc: Likewise.
+ 	* config/s390/s390-opts.h: Likewise.
+ 	* config/s390/s390-protos.h (s390_check_symref_alignment): Likewise.
+ 	(s390_register_target_pragmas): Likewise.
+ 	* config/s390/s390.cc (s390_init_builtins): Likewise.
+ 	(s390_expand_plus_operand): Likewise.
+ 	(s390_expand_atomic): Likewise.
+ 	(s390_valid_target_attribute_inner_p): Likewise.
+ 	* config/s390/s390.h (LONG_DOUBLE_TYPE_SIZE): Likewise.
+ 	* config/s390/s390.md: Likewise.
+ 	* config/s390/t-s390: Likewise.
+ 	* config/s390/vx-builtins.md: Likewise.
+ 	* config/s390/x-native: Likewise.
+ 	* config/sh/divtab-sh4-300.cc (main): Likewise.
+ 	* config/sh/divtab-sh4.cc (main): Likewise.
+ 	* config/sh/divtab.cc (main): Likewise.
+ 	* config/sh/elf.h: Likewise.
+ 	* config/sh/sh-protos.h (sh_fsca_int2sf): Likewise.
+ 	* config/sh/sh.cc (SYMBOL_FLAG_FUNCVEC_FUNCTION): Likewise.
+ 	(sh_struct_value_rtx): Likewise.
+ 	(sh_remove_reg_dead_or_unused_notes): Likewise.
+ 	* config/sh/sh.h (MIN_UNITS_PER_WORD): Likewise.
+ 	* config/sh/t-sh: Likewise.
+ 	* config/sol2-protos.h (solaris_override_options): Likewise.
+ 	* config/sol2.h: Likewise.
+ 	* config/sparc/driver-sparc.cc: Likewise.
+ 	* config/sparc/freebsd.h: Likewise.
+ 	* config/sparc/sparc-protos.h (make_pass_work_around_errata): Likewise.
+ 	* config/sparc/sparc.cc (sparc_output_mi_thunk): Likewise.
+ 	(sparc_asan_shadow_offset): Likewise.
+ 	* config/sparc/sparc.h: Likewise.
+ 	* config/sparc/sparc.md: Likewise.
+ 	* config/sparc/t-sparc: Likewise.
+ 	* config/sparc/x-sparc: Likewise.
+ 	* config/stormy16/stormy16.cc (xstormy16_mode_dependent_address_p): Likewise.
+ 	* config/t-darwin: Likewise.
+ 	* config/t-dragonfly: Likewise.
+ 	* config/t-freebsd: Likewise.
+ 	* config/t-glibc: Likewise.
+ 	* config/t-linux: Likewise.
+ 	* config/t-netbsd: Likewise.
+ 	* config/t-openbsd: Likewise.
+ 	* config/t-pnt16-warn: Likewise.
+ 	* config/t-sol2: Likewise.
+ 	* config/t-vxworks: Likewise.
+ 	* config/t-winnt: Likewise.
+ 	* config/tilegx/t-tilegx: Likewise.
+ 	* config/tilegx/tilegx-c.cc: Likewise.
+ 	* config/tilegx/tilegx-protos.h (tilegx_function_profiler): Likewise.
+ 	* config/tilegx/tilegx.md: Likewise.
+ 	* config/tilepro/t-tilepro: Likewise.
+ 	* config/tilepro/tilepro-c.cc: Likewise.
+ 	* config/v850/t-v850: Likewise.
+ 	* config/v850/v850-protos.h: Likewise.
+ 	* config/v850/v850.cc (F): Likewise.
+ 	* config/v850/v850.h (enum reg_class): Likewise.
+ 	(SLOW_BYTE_ACCESS): Likewise.
+ 	* config/vax/vax.cc (vax_mode_dependent_address_p): Likewise.
+ 	* config/vax/vax.h (enum reg_class): Likewise.
+ 	* config/vax/vax.md: Likewise.
+ 	* config/visium/visium.cc (visium_legitimate_address_p): Likewise.
+ 	* config/visium/visium.h: Likewise.
+ 	* config/vms/t-vms: Likewise.
+ 	* config/vms/vms-crtlmap.map: Likewise.
+ 	* config/vms/vms-protos.h (vms_c_get_vms_ver): Likewise.
+ 	* config/vx-common.h: Likewise.
+ 	* config/x-darwin: Likewise.
+ 	* config/x-hpux: Likewise.
+ 	* config/x-linux: Likewise.
+ 	* config/x-netbsd: Likewise.
+ 	* config/x-openbsd: Likewise.
+ 	* config/x-solaris: Likewise.
+ 	* config/xtensa/xtensa-protos.h (xtensa_mem_offset): Likewise.
+ 	* config/xtensa/xtensa.cc (xtensa_option_override): Likewise.
+ 	* config/xtensa/xtensa.h: Likewise.
+ 	* configure.ac: Likewise.
+ 	* context.cc: Likewise.
+ 	* convert.h: Likewise.
+ 	* coretypes.h: Likewise.
+ 	* coverage.cc: Likewise.
+ 	* coverage.h: Likewise.
+ 	* cppdefault.h (struct default_include): Likewise.
+ 	* cprop.cc (local_cprop_pass): Likewise.
+ 	(one_cprop_pass): Likewise.
+ 	* cse.cc (hash_rtx_cb): Likewise.
+ 	(fold_rtx): Likewise.
+ 	* ctfc.h (ctfc_get_num_vlen_bytes): Likewise.
+ 	* data-streamer.h (bp_unpack_var_len_int): Likewise.
+ 	(streamer_write_widest_int): Likewise.
+ 	* dbgcnt.def: Likewise.
+ 	* dbxout.cc (dbxout_early_global_decl): Likewise.
+ 	(dbxout_common_check): Likewise.
+ 	* dbxout.h: Likewise.
+ 	* debug.h (struct gcc_debug_hooks): Likewise.
+ 	(dump_go_spec_init): Likewise.
+ 	* df-core.cc: Likewise.
+ 	* df-scan.cc (df_insn_info_delete): Likewise.
+ 	(df_insn_delete): Likewise.
+ 	* df.h (debug_df_chain): Likewise.
+ 	(can_move_insns_across): Likewise.
+ 	* dfp.cc (decimal_from_binary): Likewise.
+ 	* diagnostic-color.cc: Likewise.
+ 	* diagnostic-event-id.h: Likewise.
+ 	* diagnostic-show-locus.cc (test_one_liner_labels): Likewise.
+ 	* diagnostic.cc (bt_callback): Likewise.
+ 	(num_digits): Likewise.
+ 	* doc/avr-mmcu.texi: Likewise.
+ 	* doc/cfg.texi: Likewise.
+ 	* doc/contrib.texi: Likewise.
+ 	* doc/cppinternals.texi: Likewise.
+ 	* doc/extend.texi: Likewise.
+ 	* doc/generic.texi: Likewise.
+ 	* doc/gimple.texi: Likewise.
+ 	* doc/gty.texi: Likewise.
+ 	* doc/invoke.texi: Likewise.
+ 	* doc/loop.texi: Likewise.
+ 	* doc/lto.texi: Likewise.
+ 	* doc/match-and-simplify.texi: Likewise.
+ 	* doc/md.texi: Likewise.
+ 	* doc/optinfo.texi: Likewise.
+ 	* doc/options.texi: Likewise.
+ 	* doc/passes.texi: Likewise.
+ 	* doc/plugins.texi: Likewise.
+ 	* doc/rtl.texi: Likewise.
+ 	* doc/sourcebuild.texi: Likewise.
+ 	* doc/tm.texi: Likewise.
+ 	* doc/tm.texi.in: Likewise.
+ 	* doc/tree-ssa.texi: Likewise.
+ 	* dojump.cc (do_jump): Likewise.
+ 	* dojump.h: Likewise.
+ 	* dumpfile.cc (test_impl_location): Likewise.
+ 	(test_capture_of_dump_calls): Likewise.
+ 	* dumpfile.h (enum dump_kind): Likewise.
+ 	(class dump_location_t): Likewise.
+ 	(dump_enabled_p): Likewise.
+ 	(enable_rtl_dump_file): Likewise.
+ 	(dump_combine_total_stats): Likewise.
+ 	* dwarf2asm.cc (dw2_asm_output_delta_uleb128): Likewise.
+ 	* dwarf2ctf.h (ctf_debug_finish): Likewise.
+ 	* dwarf2out.cc (dwarf2out_begin_prologue): Likewise.
+ 	(struct loc_descr_context): Likewise.
+ 	(rtl_for_decl_location): Likewise.
+ 	(gen_subprogram_die): Likewise.
+ 	(gen_label_die): Likewise.
+ 	(is_trivial_indirect_ref): Likewise.
+ 	(dwarf2out_late_global_decl): Likewise.
+ 	(dwarf_file_hasher::hash): Likewise.
+ 	(dwarf2out_end_source_file): Likewise.
+ 	(dwarf2out_define): Likewise.
+ 	(dwarf2out_early_finish): Likewise.
+ 	* dwarf2out.h (struct dw_fde_node): Likewise.
+ 	(struct dw_discr_list_node): Likewise.
+ 	(output_loc_sequence_raw): Likewise.
+ 	* emit-rtl.cc (gen_raw_REG): Likewise.
+ 	(maybe_set_max_label_num): Likewise.
+ 	* emit-rtl.h (struct rtl_data): Likewise.
+ 	* errors.cc (internal_error): Likewise.
+ 	(trim_filename): Likewise.
+ 	* et-forest.cc: Likewise.
+ 	* except.cc (init_eh_for_function): Likewise.
+ 	* explow.cc (promote_ssa_mode): Likewise.
+ 	(get_dynamic_stack_size): Likewise.
+ 	* explow.h: Likewise.
+ 	* expmed.h: Likewise.
+ 	* expr.cc (safe_from_p): Likewise.
+ 	(expand_expr_real_2): Likewise.
+ 	(expand_expr_real_1): Likewise.
+ 	* file-prefix-map.cc (remap_filename): Likewise.
+ 	* final.cc (app_enable): Likewise.
+ 	(make_pass_compute_alignments): Likewise.
+ 	(final_scan_insn_1): Likewise.
+ 	(final_scan_insn): Likewise.
+ 	* fixed-value.h (fixed_from_string): Likewise.
+ 	* flag-types.h (NO_DEBUG): Likewise.
+ 	(DWARF2_DEBUG): Likewise.
+ 	(VMS_DEBUG): Likewise.
+ 	(BTF_DEBUG): Likewise.
+ 	(enum ctf_debug_info_levels): Likewise.
+ 	* fold-const.cc (const_binop): Likewise.
+ 	(fold_binary_loc): Likewise.
+ 	(fold_checksum_tree): Likewise.
+ 	* fp-test.cc: Likewise.
+ 	* function.cc (expand_function_end): Likewise.
+ 	* function.h (struct function): Likewise.
+ 	* fwprop.cc (should_replace_address): Likewise.
+ 	* gcc-main.cc: Likewise.
+ 	* gcc-rich-location.h (class gcc_rich_location): Likewise.
+ 	* gcc-symtab.h: Likewise.
+ 	* gcc.cc (MIN_FATAL_STATUS): Likewise.
+ 	(driver_handle_option): Likewise.
+ 	(quote_spec_arg): Likewise.
+ 	(driver::finalize): Likewise.
+ 	* gcc.h (set_input): Likewise.
+ 	* gcov-dump.cc: Likewise.
+ 	* gcov.cc (solve_flow_graph): Likewise.
+ 	* gcse-common.cc: Likewise.
+ 	* gcse.cc (make_pass_rtl_hoist): Likewise.
+ 	* genattr-common.cc: Likewise.
+ 	* genattrtab.cc (min_fn): Likewise.
+ 	(write_const_num_delay_slots): Likewise.
+ 	* genautomata.cc: Likewise.
+ 	* genconditions.cc (write_one_condition): Likewise.
+ 	* genconstants.cc: Likewise.
+ 	* genemit.cc (gen_exp): Likewise.
+ 	* generic-match-head.cc: Likewise.
+ 	* genextract.cc: Likewise.
+ 	* gengenrtl.cc (always_void_p): Likewise.
+ 	* gengtype-parse.cc (gtymarker_opt): Likewise.
+ 	* gengtype-state.cc (state_writer::state_writer): Likewise.
+ 	(write_state_trailer): Likewise.
+ 	(equals_type_number): Likewise.
+ 	(read_state): Likewise.
+ 	* gengtype.cc (open_base_files): Likewise.
+ 	(struct file_rule_st): Likewise.
+ 	(header_dot_h_frul): Likewise.
+ 	* gengtype.h: Likewise.
+ 	* genmatch.cc (main): Likewise.
+ 	* genmddeps.cc: Likewise.
+ 	* genmodes.cc (emit_mode_inner): Likewise.
+ 	(emit_mode_unit_size): Likewise.
+ 	* genpeep.cc (gen_peephole): Likewise.
+ 	* genpreds.cc (write_tm_preds_h): Likewise.
+ 	* genrecog.cc (validate_pattern): Likewise.
+ 	(write_header): Likewise.
+ 	(main): Likewise.
+ 	* gensupport.cc (change_subst_attribute): Likewise.
+ 	(traverse_c_tests): Likewise.
+ 	(add_predicate): Likewise.
+ 	(init_predicate_table): Likewise.
+ 	* gensupport.h (struct optab_pattern): Likewise.
+ 	(get_num_insn_codes): Likewise.
+ 	(maybe_eval_c_test): Likewise.
+ 	(struct pred_data): Likewise.
+ 	* ggc-internal.h: Likewise.
+ 	* gimple-fold.cc (maybe_fold_reference): Likewise.
+ 	(get_range_strlen_tree): Likewise.
+ 	* gimple-fold.h (gimple_stmt_integer_valued_real_p): Likewise.
+ 	* gimple-low.cc: Likewise.
+ 	* gimple-match-head.cc (directly_supported_p): Likewise.
+ 	* gimple-pretty-print.h: Likewise.
+ 	* gimple-ssa-sprintf.cc (format_percent): Likewise.
+ 	(adjust_range_for_overflow): Likewise.
+ 	* gimple-streamer.h: Likewise.
+ 	* gimple.h (struct GTY): Likewise.
+ 	(is_gimple_resx): Likewise.
+ 	* gimplify.cc (gimplify_expr): Likewise.
+ 	(gimplify_init_constructor): Likewise.
+ 	(omp_construct_selector_matches): Likewise.
+ 	(gimplify_omp_target_update): Likewise.
+ 	(gimplify_omp_ordered): Likewise.
+ 	(gimplify_va_arg_expr): Likewise.
+ 	* graphite-isl-ast-to-gimple.cc (should_copy_to_new_region): Likewise.
+ 	* haifa-sched.cc (increase_insn_priority): Likewise.
+ 	(try_ready): Likewise.
+ 	(sched_create_recovery_edges): Likewise.
+ 	* ifcvt.cc (find_if_case_1): Likewise.
+ 	(find_if_case_2): Likewise.
+ 	* inchash.h: Likewise.
+ 	* incpath.cc (add_env_var_paths): Likewise.
+ 	* input.cc (dump_location_info): Likewise.
+ 	(assert_loceq): Likewise.
+ 	(test_lexer_string_locations_concatenation_1): Likewise.
+ 	(test_lexer_string_locations_concatenation_2): Likewise.
+ 	(test_lexer_string_locations_concatenation_3): Likewise.
+ 	* input.h (BUILTINS_LOCATION): Likewise.
+ 	(class string_concat_db): Likewise.
+ 	* internal-fn.cc (expand_MUL_OVERFLOW): Likewise.
+ 	(expand_LOOP_VECTORIZED): Likewise.
+ 	* ipa-cp.cc (make_pass_ipa_cp): Likewise.
+ 	* ipa-fnsummary.cc (remap_freqcounting_preds_after_dup): Likewise.
+ 	(ipa_fn_summary_t::duplicate): Likewise.
+ 	(make_pass_ipa_fn_summary): Likewise.
+ 	* ipa-fnsummary.h (enum ipa_hints_vals): Likewise.
+ 	* ipa-free-lang-data.cc (fld_simplified_type): Likewise.
+ 	(free_lang_data_in_decl): Likewise.
+ 	* ipa-inline.cc (compute_inlined_call_time): Likewise.
+ 	(inline_always_inline_functions): Likewise.
+ 	* ipa-inline.h (free_growth_caches): Likewise.
+ 	(inline_account_function_p): Likewise.
+ 	* ipa-modref.cc (modref_access_analysis::analyze_stmt): Likewise.
+ 	(modref_eaf_analysis::analyze_ssa_name): Likewise.
+ 	* ipa-param-manipulation.cc (ipa_param_body_adjustments::mark_dead_statements): Likewise.
+ 	(ipa_param_body_adjustments::remap_with_debug_expressions): Likewise.
+ 	* ipa-prop.cc (ipa_set_node_agg_value_chain): Likewise.
+ 	* ipa-prop.h (IPA_UNDESCRIBED_USE): Likewise.
+ 	(unadjusted_ptr_and_unit_offset): Likewise.
+ 	* ipa-reference.cc (make_pass_ipa_reference): Likewise.
+ 	* ipa-reference.h (GCC_IPA_REFERENCE_H): Likewise.
+ 	* ipa-split.cc (consider_split): Likewise.
+ 	* ipa-sra.cc (isra_read_node_info): Likewise.
+ 	* ipa-utils.h (struct ipa_dfs_info): Likewise.
+ 	(recursive_call_p): Likewise.
+ 	(ipa_make_function_pure): Likewise.
+ 	* ira-build.cc (ira_create_allocno): Likewise.
+ 	(ira_flattening): Likewise.
+ 	* ira-color.cc (do_coloring): Likewise.
+ 	(update_curr_costs): Likewise.
+ 	* ira-conflicts.cc (process_regs_for_copy): Likewise.
+ 	* ira-int.h (struct ira_emit_data): Likewise.
+ 	(ira_prohibited_mode_move_regs): Likewise.
+ 	(ira_get_dup_out_num): Likewise.
+ 	(ira_destroy): Likewise.
+ 	(ira_tune_allocno_costs): Likewise.
+ 	(ira_implicitly_set_insn_hard_regs): Likewise.
+ 	(ira_build_conflicts): Likewise.
+ 	(ira_color): Likewise.
+ 	* ira-lives.cc (process_bb_node_lives): Likewise.
+ 	* ira.cc (class ira_spilled_reg_stack_slot): Likewise.
+ 	(setup_uniform_class_p): Likewise.
+ 	(def_dominates_uses): Likewise.
+ 	* ira.h (ira_nullify_asm_goto): Likewise.
+ 	* langhooks.cc (lhd_post_options): Likewise.
+ 	* langhooks.h (class substring_loc): Likewise.
+ 	(struct lang_hooks_for_tree_inlining): Likewise.
+ 	(struct lang_hooks_for_types): Likewise.
+ 	(struct lang_hooks): Likewise.
+ 	* libfuncs.h (synchronize_libfunc): Likewise.
+ 	* loop-doloop.cc (doloop_condition_get): Likewise.
+ 	* loop-init.cc (fix_loop_structure): Likewise.
+ 	* loop-invariant.cc: Likewise.
+ 	* lower-subreg.h: Likewise.
+ 	* lra-constraints.cc (curr_insn_transform): Likewise.
+ 	* lra-int.h (struct lra_insn_reg): Likewise.
+ 	(lra_undo_inheritance): Likewise.
+ 	(lra_setup_reload_pseudo_preferenced_hard_reg): Likewise.
+ 	(lra_split_hard_reg_for): Likewise.
+ 	(lra_coalesce): Likewise.
+ 	(lra_final_code_change): Likewise.
+ 	* lra-spills.cc (lra_final_code_change): Likewise.
+ 	* lra.cc (lra_process_new_insns): Likewise.
+ 	* lto-compress.h (struct lto_compression_stream): Likewise.
+ 	* lto-streamer-out.cc (DFS::DFS_write_tree_body): Likewise.
+ 	(write_symbol): Likewise.
+ 	* lto-streamer.h (enum LTO_tags): Likewise.
+ 	(lto_value_range_error): Likewise.
+ 	(lto_append_block): Likewise.
+ 	(lto_streamer_hooks_init): Likewise.
+ 	(stream_read_tree_ref): Likewise.
+ 	(lto_prepare_function_for_streaming): Likewise.
+ 	(select_what_to_stream): Likewise.
+ 	(omp_lto_input_declare_variant_alt): Likewise.
+ 	(cl_optimization_stream_in): Likewise.
+ 	* lto-wrapper.cc (append_compiler_options): Likewise.
+ 	* machmode.def: Likewise.
+ 	* machmode.h (struct int_n_data_t): Likewise.
+ 	* main.cc (main): Likewise.
+ 	* match.pd: Likewise.
+ 	* omp-builtins.def (BUILT_IN_GOMP_CRITICAL_NAME_END): Likewise.
+ 	(BUILT_IN_GOMP_LOOP_ULL_ORDERED_RUNTIME_NEXT): Likewise.
+ 	* omp-expand.cc (expand_omp_atomic_fetch_op): Likewise.
+ 	(make_pass_expand_omp_ssa): Likewise.
+ 	* omp-low.cc (struct omp_context): Likewise.
+ 	(struct omp_taskcopy_context): Likewise.
+ 	(lower_omp): Likewise.
+ 	* omp-oacc-neuter-broadcast.cc (omp_sese_active_worker_call): Likewise.
+ 	(mask_name): Likewise.
+ 	(omp_sese_dump_pars): Likewise.
+ 	(worker_single_simple): Likewise.
+ 	* omp-offload.cc (omp_finish_file): Likewise.
+ 	(execute_oacc_loop_designation): Likewise.
+ 	* optabs-query.cc (lshift_cheap_p): Likewise.
+ 	* optc-gen.awk: Likewise.
+ 	* optc-save-gen.awk: Likewise.
+ 	* optinfo-emit-json.cc (optrecord_json_writer::optrecord_json_writer): Likewise.
+ 	* opts-common.cc: Likewise.
+ 	* output.h (app_enable): Likewise.
+ 	(output_operand_lossage): Likewise.
+ 	(insn_current_reference_address): Likewise.
+ 	(get_insn_template): Likewise.
+ 	(output_quoted_string): Likewise.
+ 	* pass_manager.h (struct register_pass_info): Likewise.
+ 	* plugin.cc: Likewise.
+ 	* plugin.def (PLUGIN_ANALYZER_INIT): Likewise.
+ 	* plugin.h (invoke_plugin_callbacks): Likewise.
+ 	* pointer-query.cc (handle_mem_ref): Likewise.
+ 	* postreload-gcse.cc (alloc_mem): Likewise.
+ 	* predict.h (enum prediction): Likewise.
+ 	(add_reg_br_prob_note): Likewise.
+ 	* prefix.h: Likewise.
+ 	* profile.h (get_working_sets): Likewise.
+ 	* read-md.cc: Likewise.
+ 	* read-md.h (struct mapping): Likewise.
+ 	(class md_reader): Likewise.
+ 	(class noop_reader): Likewise.
+ 	* read-rtl-function.cc (function_reader::create_function): Likewise.
+ 	(function_reader::extra_parsing_for_operand_code_0): Likewise.
+ 	* read-rtl.cc (initialize_iterators): Likewise.
+ 	* real.cc: Likewise.
+ 	* real.h (struct real_value): Likewise.
+ 	(format_helper::format_helper): Likewise.
+ 	(real_hash): Likewise.
+ 	(real_can_shorten_arithmetic): Likewise.
+ 	* recog.cc (struct target_recog): Likewise.
+ 	(offsettable_nonstrict_memref_p): Likewise.
+ 	(constrain_operands): Likewise.
+ 	* recog.h (MAX_RECOG_ALTERNATIVES): Likewise.
+ 	(which_op_alt): Likewise.
+ 	(struct insn_gen_fn): Likewise.
+ 	* reg-notes.def (REG_NOTE): Likewise.
+ 	* reg-stack.cc: Likewise.
+ 	* regs.h (reg_is_parm_p): Likewise.
+ 	* regset.h: Likewise.
+ 	* reload.cc (push_reload): Likewise.
+ 	(find_reloads): Likewise.
+ 	(find_reloads_address_1): Likewise.
+ 	(find_replacement): Likewise.
+ 	(refers_to_regno_for_reload_p): Likewise.
+ 	(refers_to_mem_for_reload_p): Likewise.
+ 	* reload.h (push_reload): Likewise.
+ 	(deallocate_reload_reg): Likewise.
+ 	* reload1.cc (emit_input_reload_insns): Likewise.
+ 	* reorg.cc (relax_delay_slots): Likewise.
+ 	* rtl.def (UNKNOWN): Likewise.
+ 	(SEQUENCE): Likewise.
+ 	(BARRIER): Likewise.
+ 	(ASM_OPERANDS): Likewise.
+ 	(EQ_ATTR_ALT): Likewise.
+ 	* rtl.h (struct GTY): Likewise.
+ 	(LABEL_NAME): Likewise.
+ 	(LABEL_ALT_ENTRY_P): Likewise.
+ 	(SUBREG_BYTE): Likewise.
+ 	(get_stack_check_protect): Likewise.
+ 	(dump_rtx_statistics): Likewise.
+ 	(unwrap_const_vec_duplicate): Likewise.
+ 	(subreg_promoted_mode): Likewise.
+ 	(gen_lowpart_common): Likewise.
+ 	(operand_subword): Likewise.
+ 	(immed_wide_int_const): Likewise.
+ 	(decide_function_section): Likewise.
+ 	(active_insn_p): Likewise.
+ 	(delete_related_insns): Likewise.
+ 	(try_split): Likewise.
+ 	(val_signbit_known_clear_p): Likewise.
+ 	(simplifiable_subregs): Likewise.
+ 	(set_insn_deleted): Likewise.
+ 	(subreg_get_info): Likewise.
+ 	(remove_free_EXPR_LIST_node): Likewise.
+ 	(finish_subregs_of_mode): Likewise.
+ 	(get_mem_attrs): Likewise.
+ 	(lookup_constant_def): Likewise.
+ 	(rtx_to_tree_code): Likewise.
+ 	(hash_rtx): Likewise.
+ 	(condjump_in_parallel_p): Likewise.
+ 	(validate_subreg): Likewise.
+ 	(make_compound_operation): Likewise.
+ 	(schedule_ebbs): Likewise.
+ 	(print_inline_rtx): Likewise.
+ 	(fixup_args_size_notes): Likewise.
+ 	(expand_dec): Likewise.
+ 	(prepare_copy_insn): Likewise.
+ 	(mark_elimination): Likewise.
+ 	(valid_mode_changes_for_regno): Likewise.
+ 	(make_debug_expr_from_rtl): Likewise.
+ 	(delete_vta_debug_insns): Likewise.
+ 	(simplify_using_condition): Likewise.
+ 	(set_insn_locations): Likewise.
+ 	(fatal_insn_not_found): Likewise.
+ 	(word_register_operation_p): Likewise.
+ 	* rtlanal.cc (get_call_fndecl): Likewise.
+ 	(side_effects_p): Likewise.
+ 	(subreg_nregs): Likewise.
+ 	(rtx_cost): Likewise.
+ 	(canonicalize_condition): Likewise.
+ 	* rtlanal.h (rtx_properties::try_to_add_note): Likewise.
+ 	* run-rtl-passes.cc (run_rtl_passes): Likewise.
+ 	* sanitizer.def (BUILT_IN_ASAN_VERSION_MISMATCH_CHECK): Likewise.
+ 	* sched-deps.cc (add_dependence_1): Likewise.
+ 	* sched-ebb.cc (begin_move_insn): Likewise.
+ 	(add_deps_for_risky_insns): Likewise.
+ 	(advance_target_bb): Likewise.
+ 	* sched-int.h (reemit_notes): Likewise.
+ 	(struct _haifa_insn_data): Likewise.
+ 	(HID): Likewise.
+ 	(DEP_CANCELLED): Likewise.
+ 	(debug_ds): Likewise.
+ 	(number_in_ready): Likewise.
+ 	(schedule_ebbs_finish): Likewise.
+ 	(find_modifiable_mems): Likewise.
+ 	* sched-rgn.cc (debug_rgn_dependencies): Likewise.
+ 	* sel-sched-dump.cc (dump_lv_set): Likewise.
+ 	* sel-sched-dump.h: Likewise.
+ 	* sel-sched-ir.cc (sel_insn_rtx_cost): Likewise.
+ 	(setup_id_reg_sets): Likewise.
+ 	(has_dependence_p): Likewise.
+ 	(sel_num_cfg_preds_gt_1): Likewise.
+ 	(bb_ends_ebb_p): Likewise.
+ 	* sel-sched-ir.h (struct _list_node): Likewise.
+ 	(struct idata_def): Likewise.
+ 	(bb_next_bb): Likewise.
+ 	* sel-sched.cc (vinsn_writes_one_of_regs_p): Likewise.
+ 	(choose_best_pseudo_reg): Likewise.
+ 	(verify_target_availability): Likewise.
+ 	(can_speculate_dep_p): Likewise.
+ 	(sel_rank_for_schedule): Likewise.
+ 	* selftest-run-tests.cc (selftest::run_tests): Likewise.
+ 	* selftest.h (class auto_fix_quotes): Likewise.
+ 	* shrink-wrap.cc (handle_simple_exit): Likewise.
+ 	* shrink-wrap.h: Likewise.
+ 	* simplify-rtx.cc (simplify_context::simplify_associative_operation): Likewise.
+ 	(simplify_context::simplify_gen_vec_select): Likewise.
+ 	* spellcheck-tree.h: Likewise.
+ 	* spellcheck.h: Likewise.
+ 	* statistics.h (struct function): Likewise.
+ 	* stmt.cc (conditional_probability): Likewise.
+ 	* stmt.h: Likewise.
+ 	* stor-layout.h: Likewise.
+ 	* streamer-hooks.h: Likewise.
+ 	* stringpool.h: Likewise.
+ 	* symtab.cc (symbol_table::change_decl_assembler_name): Likewise.
+ 	* target.def (HOOK_VECTOR_END): Likewise.
+ 	(type.): Likewise.
+ 	* target.h (union cumulative_args_t): Likewise.
+ 	(by_pieces_ninsns): Likewise.
+ 	(class predefined_function_abi): Likewise.
+ 	* targhooks.cc (default_translate_mode_attribute): Likewise.
+ 	* timevar.def: Likewise.
+ 	* timevar.h (class timer): Likewise.
+ 	* toplev.h (enable_rtl_dump_file): Likewise.
+ 	* trans-mem.cc (collect_bb2reg): Likewise.
+ 	* tree-call-cdce.cc (gen_conditions_for_pow): Likewise.
+ 	* tree-cfg.cc (remove_bb): Likewise.
+ 	(verify_gimple_debug): Likewise.
+ 	(remove_edge_and_dominated_blocks): Likewise.
+ 	(push_fndecl): Likewise.
+ 	* tree-cfgcleanup.h (GCC_TREE_CFGCLEANUP_H): Likewise.
+ 	* tree-complex.cc (expand_complex_multiplication): Likewise.
+ 	(expand_complex_div_straight): Likewise.
+ 	* tree-core.h (enum tree_index): Likewise.
+ 	(enum operand_equal_flag): Likewise.
+ 	* tree-eh.cc (honor_protect_cleanup_actions): Likewise.
+ 	* tree-if-conv.cc (if_convertible_gimple_assign_stmt_p): Likewise.
+ 	* tree-inline.cc (initialize_inlined_parameters): Likewise.
+ 	* tree-inline.h (force_value_to_type): Likewise.
+ 	* tree-nested.cc (get_chain_decl): Likewise.
+ 	(walk_all_functions): Likewise.
+ 	* tree-object-size.h: Likewise.
+ 	* tree-outof-ssa.cc: Likewise.
+ 	* tree-parloops.cc (create_parallel_loop): Likewise.
+ 	* tree-pretty-print.cc (print_generic_expr_to_str): Likewise.
+ 	(dump_generic_node): Likewise.
+ 	* tree-profile.cc (tree_profiling): Likewise.
+ 	* tree-sra.cc (maybe_add_sra_candidate): Likewise.
+ 	* tree-ssa-address.cc: Likewise.
+ 	* tree-ssa-alias.cc: Likewise.
+ 	* tree-ssa-alias.h (ao_ref::max_size_known_p): Likewise.
+ 	(dump_alias_stats): Likewise.
+ 	* tree-ssa-ccp.cc: Likewise.
+ 	* tree-ssa-coalesce.h: Likewise.
+ 	* tree-ssa-live.cc (remove_unused_scope_block_p): Likewise.
+ 	* tree-ssa-loop-manip.cc (copy_phi_node_args): Likewise.
+ 	* tree-ssa-loop-unswitch.cc: Likewise.
+ 	* tree-ssa-math-opts.cc: Likewise.
+ 	* tree-ssa-operands.cc (class operands_scanner): Likewise.
+ 	* tree-ssa-pre.cc: Likewise.
+ 	* tree-ssa-reassoc.cc (optimize_ops_list): Likewise.
+ 	(debug_range_entry): Likewise.
+ 	* tree-ssa-sccvn.cc (eliminate_dom_walker::eliminate_stmt): Likewise.
+ 	* tree-ssa-sccvn.h (TREE_SSA_SCCVN_H): Likewise.
+ 	* tree-ssa-scopedtables.cc (add_expr_commutative): Likewise.
+ 	(equal_mem_array_ref_p): Likewise.
+ 	* tree-ssa-strlen.cc (is_strlen_related_p): Likewise.
+ 	* tree-ssa-strlen.h (get_range_strlen_dynamic): Likewise.
+ 	* tree-ssa-tail-merge.cc (stmt_local_def): Likewise.
+ 	* tree-ssa-ter.h: Likewise.
+ 	* tree-ssa-threadupdate.h (enum bb_dom_status): Likewise.
+ 	* tree-streamer-in.cc (lto_input_ts_block_tree_pointers): Likewise.
+ 	* tree-streamer-out.cc (pack_ts_block_value_fields): Likewise.
+ 	(write_ts_block_tree_pointers): Likewise.
+ 	* tree-streamer.h (struct streamer_tree_cache_d): Likewise.
+ 	(streamer_read_tree_bitfields): Likewise.
+ 	(streamer_write_integer_cst): Likewise.
+ 	* tree-vect-patterns.cc (apply_binop_and_append_stmt): Likewise.
+ 	(vect_synth_mult_by_constant): Likewise.
+ 	* tree-vect-stmts.cc (vectorizable_operation): Likewise.
+ 	* tree-vectorizer.cc: Likewise.
+ 	* tree-vectorizer.h (class auto_purge_vect_location): Likewise.
+ 	(vect_update_inits_of_drs): Likewise.
+ 	(vect_get_mask_type_for_stmt): Likewise.
+ 	(vect_rgroup_iv_might_wrap_p): Likewise.
+ 	(cse_and_gimplify_to_preheader): Likewise.
+ 	(vect_free_slp_tree): Likewise.
+ 	(vect_pattern_recog): Likewise.
+ 	(vect_stmt_dominates_stmt_p): Likewise.
+ 	* tree.cc (initialize_tree_contains_struct): Likewise.
+ 	(need_assembler_name_p): Likewise.
+ 	(type_with_interoperable_signedness): Likewise.
+ 	* tree.def (SWITCH_EXPR): Likewise.
+ 	* tree.h (TYPE_SYMTAB_ADDRESS): Likewise.
+ 	(poly_int_tree_p): Likewise.
+ 	(inlined_function_outer_scope_p): Likewise.
+ 	(tree_code_for_canonical_type_merging): Likewise.
+ 	* value-prof.cc: Likewise.
+ 	* value-prof.h (get_nth_most_common_value): Likewise.
+ 	(find_func_by_profile_id): Likewise.
+ 	* value-range.cc (vrp_operand_equal_p): Likewise.
+ 	* value-range.h: Likewise.
+ 	* var-tracking.cc: Likewise.
+ 	* varasm.cc (default_function_section): Likewise.
+ 	(function_section_1): Likewise.
+ 	(assemble_variable): Likewise.
+ 	(handle_vtv_comdat_section): Likewise.
+ 	* vec.h (struct vec_prefix): Likewise.
+ 	* vmsdbgout.cc (full_name): Likewise.
+ 	* vtable-verify.cc: Likewise.
+ 	* vtable-verify.h (struct vtv_graph_node): Likewise.
+ 	* xcoffout.cc: Likewise.
+ 	* xcoffout.h (DEBUG_SYMS_TEXT): Likewise.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* adjust-alignment.c: Moved to...
+ 	* adjust-alignment.cc: ...here.
+ 	* alias.c: Moved to...
+ 	* alias.cc: ...here.
+ 	* alloc-pool.c: Moved to...
+ 	* alloc-pool.cc: ...here.
+ 	* asan.c: Moved to...
+ 	* asan.cc: ...here.
+ 	* attribs.c: Moved to...
+ 	* attribs.cc: ...here.
+ 	* auto-inc-dec.c: Moved to...
+ 	* auto-inc-dec.cc: ...here.
+ 	* auto-profile.c: Moved to...
+ 	* auto-profile.cc: ...here.
+ 	* bb-reorder.c: Moved to...
+ 	* bb-reorder.cc: ...here.
+ 	* bitmap.c: Moved to...
+ 	* bitmap.cc: ...here.
+ 	* btfout.c: Moved to...
+ 	* btfout.cc: ...here.
+ 	* builtins.c: Moved to...
+ 	* builtins.cc: ...here.
+ 	* caller-save.c: Moved to...
+ 	* caller-save.cc: ...here.
+ 	* calls.c: Moved to...
+ 	* calls.cc: ...here.
+ 	* ccmp.c: Moved to...
+ 	* ccmp.cc: ...here.
+ 	* cfg.c: Moved to...
+ 	* cfg.cc: ...here.
+ 	* cfganal.c: Moved to...
+ 	* cfganal.cc: ...here.
+ 	* cfgbuild.c: Moved to...
+ 	* cfgbuild.cc: ...here.
+ 	* cfgcleanup.c: Moved to...
+ 	* cfgcleanup.cc: ...here.
+ 	* cfgexpand.c: Moved to...
+ 	* cfgexpand.cc: ...here.
+ 	* cfghooks.c: Moved to...
+ 	* cfghooks.cc: ...here.
+ 	* cfgloop.c: Moved to...
+ 	* cfgloop.cc: ...here.
+ 	* cfgloopanal.c: Moved to...
+ 	* cfgloopanal.cc: ...here.
+ 	* cfgloopmanip.c: Moved to...
+ 	* cfgloopmanip.cc: ...here.
+ 	* cfgrtl.c: Moved to...
+ 	* cfgrtl.cc: ...here.
+ 	* cgraph.c: Moved to...
+ 	* cgraph.cc: ...here.
+ 	* cgraphbuild.c: Moved to...
+ 	* cgraphbuild.cc: ...here.
+ 	* cgraphclones.c: Moved to...
+ 	* cgraphclones.cc: ...here.
+ 	* cgraphunit.c: Moved to...
+ 	* cgraphunit.cc: ...here.
+ 	* collect-utils.c: Moved to...
+ 	* collect-utils.cc: ...here.
+ 	* collect2-aix.c: Moved to...
+ 	* collect2-aix.cc: ...here.
+ 	* collect2.c: Moved to...
+ 	* collect2.cc: ...here.
+ 	* combine-stack-adj.c: Moved to...
+ 	* combine-stack-adj.cc: ...here.
+ 	* combine.c: Moved to...
+ 	* combine.cc: ...here.
+ 	* common/common-targhooks.c: Moved to...
+ 	* common/common-targhooks.cc: ...here.
+ 	* common/config/aarch64/aarch64-common.c: Moved to...
+ 	* common/config/aarch64/aarch64-common.cc: ...here.
+ 	* common/config/alpha/alpha-common.c: Moved to...
+ 	* common/config/alpha/alpha-common.cc: ...here.
+ 	* common/config/arc/arc-common.c: Moved to...
+ 	* common/config/arc/arc-common.cc: ...here.
+ 	* common/config/arm/arm-common.c: Moved to...
+ 	* common/config/arm/arm-common.cc: ...here.
+ 	* common/config/avr/avr-common.c: Moved to...
+ 	* common/config/avr/avr-common.cc: ...here.
+ 	* common/config/bfin/bfin-common.c: Moved to...
+ 	* common/config/bfin/bfin-common.cc: ...here.
+ 	* common/config/bpf/bpf-common.c: Moved to...
+ 	* common/config/bpf/bpf-common.cc: ...here.
+ 	* common/config/c6x/c6x-common.c: Moved to...
+ 	* common/config/c6x/c6x-common.cc: ...here.
+ 	* common/config/cr16/cr16-common.c: Moved to...
+ 	* common/config/cr16/cr16-common.cc: ...here.
+ 	* common/config/cris/cris-common.c: Moved to...
+ 	* common/config/cris/cris-common.cc: ...here.
+ 	* common/config/csky/csky-common.c: Moved to...
+ 	* common/config/csky/csky-common.cc: ...here.
+ 	* common/config/default-common.c: Moved to...
+ 	* common/config/default-common.cc: ...here.
+ 	* common/config/epiphany/epiphany-common.c: Moved to...
+ 	* common/config/epiphany/epiphany-common.cc: ...here.
+ 	* common/config/fr30/fr30-common.c: Moved to...
+ 	* common/config/fr30/fr30-common.cc: ...here.
+ 	* common/config/frv/frv-common.c: Moved to...
+ 	* common/config/frv/frv-common.cc: ...here.
+ 	* common/config/gcn/gcn-common.c: Moved to...
+ 	* common/config/gcn/gcn-common.cc: ...here.
+ 	* common/config/h8300/h8300-common.c: Moved to...
+ 	* common/config/h8300/h8300-common.cc: ...here.
+ 	* common/config/i386/i386-common.c: Moved to...
+ 	* common/config/i386/i386-common.cc: ...here.
+ 	* common/config/ia64/ia64-common.c: Moved to...
+ 	* common/config/ia64/ia64-common.cc: ...here.
+ 	* common/config/iq2000/iq2000-common.c: Moved to...
+ 	* common/config/iq2000/iq2000-common.cc: ...here.
+ 	* common/config/lm32/lm32-common.c: Moved to...
+ 	* common/config/lm32/lm32-common.cc: ...here.
+ 	* common/config/m32r/m32r-common.c: Moved to...
+ 	* common/config/m32r/m32r-common.cc: ...here.
+ 	* common/config/m68k/m68k-common.c: Moved to...
+ 	* common/config/m68k/m68k-common.cc: ...here.
+ 	* common/config/mcore/mcore-common.c: Moved to...
+ 	* common/config/mcore/mcore-common.cc: ...here.
+ 	* common/config/microblaze/microblaze-common.c: Moved to...
+ 	* common/config/microblaze/microblaze-common.cc: ...here.
+ 	* common/config/mips/mips-common.c: Moved to...
+ 	* common/config/mips/mips-common.cc: ...here.
+ 	* common/config/mmix/mmix-common.c: Moved to...
+ 	* common/config/mmix/mmix-common.cc: ...here.
+ 	* common/config/mn10300/mn10300-common.c: Moved to...
+ 	* common/config/mn10300/mn10300-common.cc: ...here.
+ 	* common/config/msp430/msp430-common.c: Moved to...
+ 	* common/config/msp430/msp430-common.cc: ...here.
+ 	* common/config/nds32/nds32-common.c: Moved to...
+ 	* common/config/nds32/nds32-common.cc: ...here.
+ 	* common/config/nios2/nios2-common.c: Moved to...
+ 	* common/config/nios2/nios2-common.cc: ...here.
+ 	* common/config/nvptx/nvptx-common.c: Moved to...
+ 	* common/config/nvptx/nvptx-common.cc: ...here.
+ 	* common/config/or1k/or1k-common.c: Moved to...
+ 	* common/config/or1k/or1k-common.cc: ...here.
+ 	* common/config/pa/pa-common.c: Moved to...
+ 	* common/config/pa/pa-common.cc: ...here.
+ 	* common/config/pdp11/pdp11-common.c: Moved to...
+ 	* common/config/pdp11/pdp11-common.cc: ...here.
+ 	* common/config/pru/pru-common.c: Moved to...
+ 	* common/config/pru/pru-common.cc: ...here.
+ 	* common/config/riscv/riscv-common.c: Moved to...
+ 	* common/config/riscv/riscv-common.cc: ...here.
+ 	* common/config/rs6000/rs6000-common.c: Moved to...
+ 	* common/config/rs6000/rs6000-common.cc: ...here.
+ 	* common/config/rx/rx-common.c: Moved to...
+ 	* common/config/rx/rx-common.cc: ...here.
+ 	* common/config/s390/s390-common.c: Moved to...
+ 	* common/config/s390/s390-common.cc: ...here.
+ 	* common/config/sh/sh-common.c: Moved to...
+ 	* common/config/sh/sh-common.cc: ...here.
+ 	* common/config/sparc/sparc-common.c: Moved to...
+ 	* common/config/sparc/sparc-common.cc: ...here.
+ 	* common/config/tilegx/tilegx-common.c: Moved to...
+ 	* common/config/tilegx/tilegx-common.cc: ...here.
+ 	* common/config/tilepro/tilepro-common.c: Moved to...
+ 	* common/config/tilepro/tilepro-common.cc: ...here.
+ 	* common/config/v850/v850-common.c: Moved to...
+ 	* common/config/v850/v850-common.cc: ...here.
+ 	* common/config/vax/vax-common.c: Moved to...
+ 	* common/config/vax/vax-common.cc: ...here.
+ 	* common/config/visium/visium-common.c: Moved to...
+ 	* common/config/visium/visium-common.cc: ...here.
+ 	* common/config/xstormy16/xstormy16-common.c: Moved to...
+ 	* common/config/xstormy16/xstormy16-common.cc: ...here.
+ 	* common/config/xtensa/xtensa-common.c: Moved to...
+ 	* common/config/xtensa/xtensa-common.cc: ...here.
+ 	* compare-elim.c: Moved to...
+ 	* compare-elim.cc: ...here.
+ 	* config/aarch64/aarch64-bti-insert.c: Moved to...
+ 	* config/aarch64/aarch64-bti-insert.cc: ...here.
+ 	* config/aarch64/aarch64-builtins.c: Moved to...
+ 	* config/aarch64/aarch64-builtins.cc: ...here.
+ 	* config/aarch64/aarch64-c.c: Moved to...
+ 	* config/aarch64/aarch64-c.cc: ...here.
+ 	* config/aarch64/aarch64-d.c: Moved to...
+ 	* config/aarch64/aarch64-d.cc: ...here.
+ 	* config/aarch64/aarch64.c: Moved to...
+ 	* config/aarch64/aarch64.cc: ...here.
+ 	* config/aarch64/cortex-a57-fma-steering.c: Moved to...
+ 	* config/aarch64/cortex-a57-fma-steering.cc: ...here.
+ 	* config/aarch64/driver-aarch64.c: Moved to...
+ 	* config/aarch64/driver-aarch64.cc: ...here.
+ 	* config/aarch64/falkor-tag-collision-avoidance.c: Moved to...
+ 	* config/aarch64/falkor-tag-collision-avoidance.cc: ...here.
+ 	* config/aarch64/host-aarch64-darwin.c: Moved to...
+ 	* config/aarch64/host-aarch64-darwin.cc: ...here.
+ 	* config/alpha/alpha.c: Moved to...
+ 	* config/alpha/alpha.cc: ...here.
+ 	* config/alpha/driver-alpha.c: Moved to...
+ 	* config/alpha/driver-alpha.cc: ...here.
+ 	* config/arc/arc-c.c: Moved to...
+ 	* config/arc/arc-c.cc: ...here.
+ 	* config/arc/arc.c: Moved to...
+ 	* config/arc/arc.cc: ...here.
+ 	* config/arc/driver-arc.c: Moved to...
+ 	* config/arc/driver-arc.cc: ...here.
+ 	* config/arm/aarch-common.c: Moved to...
+ 	* config/arm/aarch-common.cc: ...here.
+ 	* config/arm/arm-builtins.c: Moved to...
+ 	* config/arm/arm-builtins.cc: ...here.
+ 	* config/arm/arm-c.c: Moved to...
+ 	* config/arm/arm-c.cc: ...here.
+ 	* config/arm/arm-d.c: Moved to...
+ 	* config/arm/arm-d.cc: ...here.
+ 	* config/arm/arm.c: Moved to...
+ 	* config/arm/arm.cc: ...here.
+ 	* config/arm/driver-arm.c: Moved to...
+ 	* config/arm/driver-arm.cc: ...here.
+ 	* config/avr/avr-c.c: Moved to...
+ 	* config/avr/avr-c.cc: ...here.
+ 	* config/avr/avr-devices.c: Moved to...
+ 	* config/avr/avr-devices.cc: ...here.
+ 	* config/avr/avr-log.c: Moved to...
+ 	* config/avr/avr-log.cc: ...here.
+ 	* config/avr/avr.c: Moved to...
+ 	* config/avr/avr.cc: ...here.
+ 	* config/avr/driver-avr.c: Moved to...
+ 	* config/avr/driver-avr.cc: ...here.
+ 	* config/avr/gen-avr-mmcu-specs.c: Moved to...
+ 	* config/avr/gen-avr-mmcu-specs.cc: ...here.
+ 	* config/avr/gen-avr-mmcu-texi.c: Moved to...
+ 	* config/avr/gen-avr-mmcu-texi.cc: ...here.
+ 	* config/bfin/bfin.c: Moved to...
+ 	* config/bfin/bfin.cc: ...here.
+ 	* config/bpf/bpf.c: Moved to...
+ 	* config/bpf/bpf.cc: ...here.
+ 	* config/bpf/coreout.c: Moved to...
+ 	* config/bpf/coreout.cc: ...here.
+ 	* config/c6x/c6x.c: Moved to...
+ 	* config/c6x/c6x.cc: ...here.
+ 	* config/cr16/cr16.c: Moved to...
+ 	* config/cr16/cr16.cc: ...here.
+ 	* config/cris/cris.c: Moved to...
+ 	* config/cris/cris.cc: ...here.
+ 	* config/csky/csky.c: Moved to...
+ 	* config/csky/csky.cc: ...here.
+ 	* config/darwin-c.c: Moved to...
+ 	* config/darwin-c.cc: ...here.
+ 	* config/darwin-d.c: Moved to...
+ 	* config/darwin-d.cc: ...here.
+ 	* config/darwin-driver.c: Moved to...
+ 	* config/darwin-driver.cc: ...here.
+ 	* config/darwin-f.c: Moved to...
+ 	* config/darwin-f.cc: ...here.
+ 	* config/darwin.c: Moved to...
+ 	* config/darwin.cc: ...here.
+ 	* config/default-c.c: Moved to...
+ 	* config/default-c.cc: ...here.
+ 	* config/default-d.c: Moved to...
+ 	* config/default-d.cc: ...here.
+ 	* config/dragonfly-d.c: Moved to...
+ 	* config/dragonfly-d.cc: ...here.
+ 	* config/epiphany/epiphany.c: Moved to...
+ 	* config/epiphany/epiphany.cc: ...here.
+ 	* config/epiphany/mode-switch-use.c: Moved to...
+ 	* config/epiphany/mode-switch-use.cc: ...here.
+ 	* config/epiphany/resolve-sw-modes.c: Moved to...
+ 	* config/epiphany/resolve-sw-modes.cc: ...here.
+ 	* config/fr30/fr30.c: Moved to...
+ 	* config/fr30/fr30.cc: ...here.
+ 	* config/freebsd-d.c: Moved to...
+ 	* config/freebsd-d.cc: ...here.
+ 	* config/frv/frv.c: Moved to...
+ 	* config/frv/frv.cc: ...here.
+ 	* config/ft32/ft32.c: Moved to...
+ 	* config/ft32/ft32.cc: ...here.
+ 	* config/gcn/driver-gcn.c: Moved to...
+ 	* config/gcn/driver-gcn.cc: ...here.
+ 	* config/gcn/gcn-run.c: Moved to...
+ 	* config/gcn/gcn-run.cc: ...here.
+ 	* config/gcn/gcn-tree.c: Moved to...
+ 	* config/gcn/gcn-tree.cc: ...here.
+ 	* config/gcn/gcn.c: Moved to...
+ 	* config/gcn/gcn.cc: ...here.
+ 	* config/gcn/mkoffload.c: Moved to...
+ 	* config/gcn/mkoffload.cc: ...here.
+ 	* config/glibc-c.c: Moved to...
+ 	* config/glibc-c.cc: ...here.
+ 	* config/glibc-d.c: Moved to...
+ 	* config/glibc-d.cc: ...here.
+ 	* config/h8300/h8300.c: Moved to...
+ 	* config/h8300/h8300.cc: ...here.
+ 	* config/host-darwin.c: Moved to...
+ 	* config/host-darwin.cc: ...here.
+ 	* config/host-hpux.c: Moved to...
+ 	* config/host-hpux.cc: ...here.
+ 	* config/host-linux.c: Moved to...
+ 	* config/host-linux.cc: ...here.
+ 	* config/host-netbsd.c: Moved to...
+ 	* config/host-netbsd.cc: ...here.
+ 	* config/host-openbsd.c: Moved to...
+ 	* config/host-openbsd.cc: ...here.
+ 	* config/host-solaris.c: Moved to...
+ 	* config/host-solaris.cc: ...here.
+ 	* config/i386/djgpp.c: Moved to...
+ 	* config/i386/djgpp.cc: ...here.
+ 	* config/i386/driver-i386.c: Moved to...
+ 	* config/i386/driver-i386.cc: ...here.
+ 	* config/i386/driver-mingw32.c: Moved to...
+ 	* config/i386/driver-mingw32.cc: ...here.
+ 	* config/i386/gnu-property.c: Moved to...
+ 	* config/i386/gnu-property.cc: ...here.
+ 	* config/i386/host-cygwin.c: Moved to...
+ 	* config/i386/host-cygwin.cc: ...here.
+ 	* config/i386/host-i386-darwin.c: Moved to...
+ 	* config/i386/host-i386-darwin.cc: ...here.
+ 	* config/i386/host-mingw32.c: Moved to...
+ 	* config/i386/host-mingw32.cc: ...here.
+ 	* config/i386/i386-builtins.c: Moved to...
+ 	* config/i386/i386-builtins.cc: ...here.
+ 	* config/i386/i386-c.c: Moved to...
+ 	* config/i386/i386-c.cc: ...here.
+ 	* config/i386/i386-d.c: Moved to...
+ 	* config/i386/i386-d.cc: ...here.
+ 	* config/i386/i386-expand.c: Moved to...
+ 	* config/i386/i386-expand.cc: ...here.
+ 	* config/i386/i386-features.c: Moved to...
+ 	* config/i386/i386-features.cc: ...here.
+ 	* config/i386/i386-options.c: Moved to...
+ 	* config/i386/i386-options.cc: ...here.
+ 	* config/i386/i386.c: Moved to...
+ 	* config/i386/i386.cc: ...here.
+ 	* config/i386/intelmic-mkoffload.c: Moved to...
+ 	* config/i386/intelmic-mkoffload.cc: ...here.
+ 	* config/i386/msformat-c.c: Moved to...
+ 	* config/i386/msformat-c.cc: ...here.
+ 	* config/i386/winnt-cxx.c: Moved to...
+ 	* config/i386/winnt-cxx.cc: ...here.
+ 	* config/i386/winnt-d.c: Moved to...
+ 	* config/i386/winnt-d.cc: ...here.
+ 	* config/i386/winnt-stubs.c: Moved to...
+ 	* config/i386/winnt-stubs.cc: ...here.
+ 	* config/i386/winnt.c: Moved to...
+ 	* config/i386/winnt.cc: ...here.
+ 	* config/i386/x86-tune-sched-atom.c: Moved to...
+ 	* config/i386/x86-tune-sched-atom.cc: ...here.
+ 	* config/i386/x86-tune-sched-bd.c: Moved to...
+ 	* config/i386/x86-tune-sched-bd.cc: ...here.
+ 	* config/i386/x86-tune-sched-core.c: Moved to...
+ 	* config/i386/x86-tune-sched-core.cc: ...here.
+ 	* config/i386/x86-tune-sched.c: Moved to...
+ 	* config/i386/x86-tune-sched.cc: ...here.
+ 	* config/ia64/ia64-c.c: Moved to...
+ 	* config/ia64/ia64-c.cc: ...here.
+ 	* config/ia64/ia64.c: Moved to...
+ 	* config/ia64/ia64.cc: ...here.
+ 	* config/iq2000/iq2000.c: Moved to...
+ 	* config/iq2000/iq2000.cc: ...here.
+ 	* config/linux.c: Moved to...
+ 	* config/linux.cc: ...here.
+ 	* config/lm32/lm32.c: Moved to...
+ 	* config/lm32/lm32.cc: ...here.
+ 	* config/m32c/m32c-pragma.c: Moved to...
+ 	* config/m32c/m32c-pragma.cc: ...here.
+ 	* config/m32c/m32c.c: Moved to...
+ 	* config/m32c/m32c.cc: ...here.
+ 	* config/m32r/m32r.c: Moved to...
+ 	* config/m32r/m32r.cc: ...here.
+ 	* config/m68k/m68k.c: Moved to...
+ 	* config/m68k/m68k.cc: ...here.
+ 	* config/mcore/mcore.c: Moved to...
+ 	* config/mcore/mcore.cc: ...here.
+ 	* config/microblaze/microblaze-c.c: Moved to...
+ 	* config/microblaze/microblaze-c.cc: ...here.
+ 	* config/microblaze/microblaze.c: Moved to...
+ 	* config/microblaze/microblaze.cc: ...here.
+ 	* config/mips/driver-native.c: Moved to...
+ 	* config/mips/driver-native.cc: ...here.
+ 	* config/mips/frame-header-opt.c: Moved to...
+ 	* config/mips/frame-header-opt.cc: ...here.
+ 	* config/mips/mips-d.c: Moved to...
+ 	* config/mips/mips-d.cc: ...here.
+ 	* config/mips/mips.c: Moved to...
+ 	* config/mips/mips.cc: ...here.
+ 	* config/mmix/mmix.c: Moved to...
+ 	* config/mmix/mmix.cc: ...here.
+ 	* config/mn10300/mn10300.c: Moved to...
+ 	* config/mn10300/mn10300.cc: ...here.
+ 	* config/moxie/moxie.c: Moved to...
+ 	* config/moxie/moxie.cc: ...here.
+ 	* config/msp430/driver-msp430.c: Moved to...
+ 	* config/msp430/driver-msp430.cc: ...here.
+ 	* config/msp430/msp430-c.c: Moved to...
+ 	* config/msp430/msp430-c.cc: ...here.
+ 	* config/msp430/msp430-devices.c: Moved to...
+ 	* config/msp430/msp430-devices.cc: ...here.
+ 	* config/msp430/msp430.c: Moved to...
+ 	* config/msp430/msp430.cc: ...here.
+ 	* config/nds32/nds32-cost.c: Moved to...
+ 	* config/nds32/nds32-cost.cc: ...here.
+ 	* config/nds32/nds32-fp-as-gp.c: Moved to...
+ 	* config/nds32/nds32-fp-as-gp.cc: ...here.
+ 	* config/nds32/nds32-intrinsic.c: Moved to...
+ 	* config/nds32/nds32-intrinsic.cc: ...here.
+ 	* config/nds32/nds32-isr.c: Moved to...
+ 	* config/nds32/nds32-isr.cc: ...here.
+ 	* config/nds32/nds32-md-auxiliary.c: Moved to...
+ 	* config/nds32/nds32-md-auxiliary.cc: ...here.
+ 	* config/nds32/nds32-memory-manipulation.c: Moved to...
+ 	* config/nds32/nds32-memory-manipulation.cc: ...here.
+ 	* config/nds32/nds32-pipelines-auxiliary.c: Moved to...
+ 	* config/nds32/nds32-pipelines-auxiliary.cc: ...here.
+ 	* config/nds32/nds32-predicates.c: Moved to...
+ 	* config/nds32/nds32-predicates.cc: ...here.
+ 	* config/nds32/nds32-relax-opt.c: Moved to...
+ 	* config/nds32/nds32-relax-opt.cc: ...here.
+ 	* config/nds32/nds32-utils.c: Moved to...
+ 	* config/nds32/nds32-utils.cc: ...here.
+ 	* config/nds32/nds32.c: Moved to...
+ 	* config/nds32/nds32.cc: ...here.
+ 	* config/netbsd-d.c: Moved to...
+ 	* config/netbsd-d.cc: ...here.
+ 	* config/netbsd.c: Moved to...
+ 	* config/netbsd.cc: ...here.
+ 	* config/nios2/nios2.c: Moved to...
+ 	* config/nios2/nios2.cc: ...here.
+ 	* config/nvptx/mkoffload.c: Moved to...
+ 	* config/nvptx/mkoffload.cc: ...here.
+ 	* config/nvptx/nvptx-c.c: Moved to...
+ 	* config/nvptx/nvptx-c.cc: ...here.
+ 	* config/nvptx/nvptx.c: Moved to...
+ 	* config/nvptx/nvptx.cc: ...here.
+ 	* config/openbsd-d.c: Moved to...
+ 	* config/openbsd-d.cc: ...here.
+ 	* config/or1k/or1k.c: Moved to...
+ 	* config/or1k/or1k.cc: ...here.
+ 	* config/pa/pa-d.c: Moved to...
+ 	* config/pa/pa-d.cc: ...here.
+ 	* config/pa/pa.c: Moved to...
+ 	* config/pa/pa.cc: ...here.
+ 	* config/pdp11/pdp11.c: Moved to...
+ 	* config/pdp11/pdp11.cc: ...here.
+ 	* config/pru/pru-passes.c: Moved to...
+ 	* config/pru/pru-passes.cc: ...here.
+ 	* config/pru/pru-pragma.c: Moved to...
+ 	* config/pru/pru-pragma.cc: ...here.
+ 	* config/pru/pru.c: Moved to...
+ 	* config/pru/pru.cc: ...here.
+ 	* config/riscv/riscv-builtins.c: Moved to...
+ 	* config/riscv/riscv-builtins.cc: ...here.
+ 	* config/riscv/riscv-c.c: Moved to...
+ 	* config/riscv/riscv-c.cc: ...here.
+ 	* config/riscv/riscv-d.c: Moved to...
+ 	* config/riscv/riscv-d.cc: ...here.
+ 	* config/riscv/riscv-shorten-memrefs.c: Moved to...
+ 	* config/riscv/riscv-shorten-memrefs.cc: ...here.
+ 	* config/riscv/riscv-sr.c: Moved to...
+ 	* config/riscv/riscv-sr.cc: ...here.
+ 	* config/riscv/riscv.c: Moved to...
+ 	* config/riscv/riscv.cc: ...here.
+ 	* config/rl78/rl78-c.c: Moved to...
+ 	* config/rl78/rl78-c.cc: ...here.
+ 	* config/rl78/rl78.c: Moved to...
+ 	* config/rl78/rl78.cc: ...here.
+ 	* config/rs6000/driver-rs6000.c: Moved to...
+ 	* config/rs6000/driver-rs6000.cc: ...here.
+ 	* config/rs6000/host-darwin.c: Moved to...
+ 	* config/rs6000/host-darwin.cc: ...here.
+ 	* config/rs6000/host-ppc64-darwin.c: Moved to...
+ 	* config/rs6000/host-ppc64-darwin.cc: ...here.
+ 	* config/rs6000/rbtree.c: Moved to...
+ 	* config/rs6000/rbtree.cc: ...here.
+ 	* config/rs6000/rs6000-c.c: Moved to...
+ 	* config/rs6000/rs6000-c.cc: ...here.
+ 	* config/rs6000/rs6000-call.c: Moved to...
+ 	* config/rs6000/rs6000-call.cc: ...here.
+ 	* config/rs6000/rs6000-d.c: Moved to...
+ 	* config/rs6000/rs6000-d.cc: ...here.
+ 	* config/rs6000/rs6000-gen-builtins.c: Moved to...
+ 	* config/rs6000/rs6000-gen-builtins.cc: ...here.
+ 	* config/rs6000/rs6000-linux.c: Moved to...
+ 	* config/rs6000/rs6000-linux.cc: ...here.
+ 	* config/rs6000/rs6000-logue.c: Moved to...
+ 	* config/rs6000/rs6000-logue.cc: ...here.
+ 	* config/rs6000/rs6000-p8swap.c: Moved to...
+ 	* config/rs6000/rs6000-p8swap.cc: ...here.
+ 	* config/rs6000/rs6000-pcrel-opt.c: Moved to...
+ 	* config/rs6000/rs6000-pcrel-opt.cc: ...here.
+ 	* config/rs6000/rs6000-string.c: Moved to...
+ 	* config/rs6000/rs6000-string.cc: ...here.
+ 	* config/rs6000/rs6000.c: Moved to...
+ 	* config/rs6000/rs6000.cc: ...here.
+ 	* config/rx/rx.c: Moved to...
+ 	* config/rx/rx.cc: ...here.
+ 	* config/s390/driver-native.c: Moved to...
+ 	* config/s390/driver-native.cc: ...here.
+ 	* config/s390/s390-c.c: Moved to...
+ 	* config/s390/s390-c.cc: ...here.
+ 	* config/s390/s390-d.c: Moved to...
+ 	* config/s390/s390-d.cc: ...here.
+ 	* config/s390/s390.c: Moved to...
+ 	* config/s390/s390.cc: ...here.
+ 	* config/sh/divtab-sh4-300.c: Moved to...
+ 	* config/sh/divtab-sh4-300.cc: ...here.
+ 	* config/sh/divtab-sh4.c: Moved to...
+ 	* config/sh/divtab-sh4.cc: ...here.
+ 	* config/sh/divtab.c: Moved to...
+ 	* config/sh/divtab.cc: ...here.
+ 	* config/sh/sh-c.c: Moved to...
+ 	* config/sh/sh-c.cc: ...here.
+ 	* config/sh/sh.c: Moved to...
+ 	* config/sh/sh.cc: ...here.
+ 	* config/sol2-c.c: Moved to...
+ 	* config/sol2-c.cc: ...here.
+ 	* config/sol2-cxx.c: Moved to...
+ 	* config/sol2-cxx.cc: ...here.
+ 	* config/sol2-d.c: Moved to...
+ 	* config/sol2-d.cc: ...here.
+ 	* config/sol2-stubs.c: Moved to...
+ 	* config/sol2-stubs.cc: ...here.
+ 	* config/sol2.c: Moved to...
+ 	* config/sol2.cc: ...here.
+ 	* config/sparc/driver-sparc.c: Moved to...
+ 	* config/sparc/driver-sparc.cc: ...here.
+ 	* config/sparc/sparc-c.c: Moved to...
+ 	* config/sparc/sparc-c.cc: ...here.
+ 	* config/sparc/sparc-d.c: Moved to...
+ 	* config/sparc/sparc-d.cc: ...here.
+ 	* config/sparc/sparc.c: Moved to...
+ 	* config/sparc/sparc.cc: ...here.
+ 	* config/stormy16/stormy16.c: Moved to...
+ 	* config/stormy16/stormy16.cc: ...here.
+ 	* config/tilegx/mul-tables.c: Moved to...
+ 	* config/tilegx/mul-tables.cc: ...here.
+ 	* config/tilegx/tilegx-c.c: Moved to...
+ 	* config/tilegx/tilegx-c.cc: ...here.
+ 	* config/tilegx/tilegx.c: Moved to...
+ 	* config/tilegx/tilegx.cc: ...here.
+ 	* config/tilepro/mul-tables.c: Moved to...
+ 	* config/tilepro/mul-tables.cc: ...here.
+ 	* config/tilepro/tilepro-c.c: Moved to...
+ 	* config/tilepro/tilepro-c.cc: ...here.
+ 	* config/tilepro/tilepro.c: Moved to...
+ 	* config/tilepro/tilepro.cc: ...here.
+ 	* config/v850/v850-c.c: Moved to...
+ 	* config/v850/v850-c.cc: ...here.
+ 	* config/v850/v850.c: Moved to...
+ 	* config/v850/v850.cc: ...here.
+ 	* config/vax/vax.c: Moved to...
+ 	* config/vax/vax.cc: ...here.
+ 	* config/visium/visium.c: Moved to...
+ 	* config/visium/visium.cc: ...here.
+ 	* config/vms/vms-c.c: Moved to...
+ 	* config/vms/vms-c.cc: ...here.
+ 	* config/vms/vms-f.c: Moved to...
+ 	* config/vms/vms-f.cc: ...here.
+ 	* config/vms/vms.c: Moved to...
+ 	* config/vms/vms.cc: ...here.
+ 	* config/vxworks-c.c: Moved to...
+ 	* config/vxworks-c.cc: ...here.
+ 	* config/vxworks.c: Moved to...
+ 	* config/vxworks.cc: ...here.
+ 	* config/winnt-c.c: Moved to...
+ 	* config/winnt-c.cc: ...here.
+ 	* config/xtensa/xtensa.c: Moved to...
+ 	* config/xtensa/xtensa.cc: ...here.
+ 	* context.c: Moved to...
+ 	* context.cc: ...here.
+ 	* convert.c: Moved to...
+ 	* convert.cc: ...here.
+ 	* coverage.c: Moved to...
+ 	* coverage.cc: ...here.
+ 	* cppbuiltin.c: Moved to...
+ 	* cppbuiltin.cc: ...here.
+ 	* cppdefault.c: Moved to...
+ 	* cppdefault.cc: ...here.
+ 	* cprop.c: Moved to...
+ 	* cprop.cc: ...here.
+ 	* cse.c: Moved to...
+ 	* cse.cc: ...here.
+ 	* cselib.c: Moved to...
+ 	* cselib.cc: ...here.
+ 	* ctfc.c: Moved to...
+ 	* ctfc.cc: ...here.
+ 	* ctfout.c: Moved to...
+ 	* ctfout.cc: ...here.
+ 	* data-streamer-in.c: Moved to...
+ 	* data-streamer-in.cc: ...here.
+ 	* data-streamer-out.c: Moved to...
+ 	* data-streamer-out.cc: ...here.
+ 	* data-streamer.c: Moved to...
+ 	* data-streamer.cc: ...here.
+ 	* dbgcnt.c: Moved to...
+ 	* dbgcnt.cc: ...here.
+ 	* dbxout.c: Moved to...
+ 	* dbxout.cc: ...here.
+ 	* dce.c: Moved to...
+ 	* dce.cc: ...here.
+ 	* ddg.c: Moved to...
+ 	* ddg.cc: ...here.
+ 	* debug.c: Moved to...
+ 	* debug.cc: ...here.
+ 	* df-core.c: Moved to...
+ 	* df-core.cc: ...here.
+ 	* df-problems.c: Moved to...
+ 	* df-problems.cc: ...here.
+ 	* df-scan.c: Moved to...
+ 	* df-scan.cc: ...here.
+ 	* dfp.c: Moved to...
+ 	* dfp.cc: ...here.
+ 	* diagnostic-color.c: Moved to...
+ 	* diagnostic-color.cc: ...here.
+ 	* diagnostic-show-locus.c: Moved to...
+ 	* diagnostic-show-locus.cc: ...here.
+ 	* diagnostic-spec.c: Moved to...
+ 	* diagnostic-spec.cc: ...here.
+ 	* diagnostic.c: Moved to...
+ 	* diagnostic.cc: ...here.
+ 	* dojump.c: Moved to...
+ 	* dojump.cc: ...here.
+ 	* dominance.c: Moved to...
+ 	* dominance.cc: ...here.
+ 	* domwalk.c: Moved to...
+ 	* domwalk.cc: ...here.
+ 	* double-int.c: Moved to...
+ 	* double-int.cc: ...here.
+ 	* dse.c: Moved to...
+ 	* dse.cc: ...here.
+ 	* dumpfile.c: Moved to...
+ 	* dumpfile.cc: ...here.
+ 	* dwarf2asm.c: Moved to...
+ 	* dwarf2asm.cc: ...here.
+ 	* dwarf2cfi.c: Moved to...
+ 	* dwarf2cfi.cc: ...here.
+ 	* dwarf2ctf.c: Moved to...
+ 	* dwarf2ctf.cc: ...here.
+ 	* dwarf2out.c: Moved to...
+ 	* dwarf2out.cc: ...here.
+ 	* early-remat.c: Moved to...
+ 	* early-remat.cc: ...here.
+ 	* edit-context.c: Moved to...
+ 	* edit-context.cc: ...here.
+ 	* emit-rtl.c: Moved to...
+ 	* emit-rtl.cc: ...here.
+ 	* errors.c: Moved to...
+ 	* errors.cc: ...here.
+ 	* et-forest.c: Moved to...
+ 	* et-forest.cc: ...here.
+ 	* except.c: Moved to...
+ 	* except.cc: ...here.
+ 	* explow.c: Moved to...
+ 	* explow.cc: ...here.
+ 	* expmed.c: Moved to...
+ 	* expmed.cc: ...here.
+ 	* expr.c: Moved to...
+ 	* expr.cc: ...here.
+ 	* fibonacci_heap.c: Moved to...
+ 	* fibonacci_heap.cc: ...here.
+ 	* file-find.c: Moved to...
+ 	* file-find.cc: ...here.
+ 	* file-prefix-map.c: Moved to...
+ 	* file-prefix-map.cc: ...here.
+ 	* final.c: Moved to...
+ 	* final.cc: ...here.
+ 	* fixed-value.c: Moved to...
+ 	* fixed-value.cc: ...here.
+ 	* fold-const-call.c: Moved to...
+ 	* fold-const-call.cc: ...here.
+ 	* fold-const.c: Moved to...
+ 	* fold-const.cc: ...here.
+ 	* fp-test.c: Moved to...
+ 	* fp-test.cc: ...here.
+ 	* function-tests.c: Moved to...
+ 	* function-tests.cc: ...here.
+ 	* function.c: Moved to...
+ 	* function.cc: ...here.
+ 	* fwprop.c: Moved to...
+ 	* fwprop.cc: ...here.
+ 	* gcc-ar.c: Moved to...
+ 	* gcc-ar.cc: ...here.
+ 	* gcc-main.c: Moved to...
+ 	* gcc-main.cc: ...here.
+ 	* gcc-rich-location.c: Moved to...
+ 	* gcc-rich-location.cc: ...here.
+ 	* gcc.c: Moved to...
+ 	* gcc.cc: ...here.
+ 	* gcov-dump.c: Moved to...
+ 	* gcov-dump.cc: ...here.
+ 	* gcov-io.c: Moved to...
+ 	* gcov-io.cc: ...here.
+ 	* gcov-tool.c: Moved to...
+ 	* gcov-tool.cc: ...here.
+ 	* gcov.c: Moved to...
+ 	* gcov.cc: ...here.
+ 	* gcse-common.c: Moved to...
+ 	* gcse-common.cc: ...here.
+ 	* gcse.c: Moved to...
+ 	* gcse.cc: ...here.
+ 	* genattr-common.c: Moved to...
+ 	* genattr-common.cc: ...here.
+ 	* genattr.c: Moved to...
+ 	* genattr.cc: ...here.
+ 	* genattrtab.c: Moved to...
+ 	* genattrtab.cc: ...here.
+ 	* genautomata.c: Moved to...
+ 	* genautomata.cc: ...here.
+ 	* gencfn-macros.c: Moved to...
+ 	* gencfn-macros.cc: ...here.
+ 	* gencheck.c: Moved to...
+ 	* gencheck.cc: ...here.
+ 	* genchecksum.c: Moved to...
+ 	* genchecksum.cc: ...here.
+ 	* gencodes.c: Moved to...
+ 	* gencodes.cc: ...here.
+ 	* genconditions.c: Moved to...
+ 	* genconditions.cc: ...here.
+ 	* genconfig.c: Moved to...
+ 	* genconfig.cc: ...here.
+ 	* genconstants.c: Moved to...
+ 	* genconstants.cc: ...here.
+ 	* genemit.c: Moved to...
+ 	* genemit.cc: ...here.
+ 	* genenums.c: Moved to...
+ 	* genenums.cc: ...here.
+ 	* generic-match-head.c: Moved to...
+ 	* generic-match-head.cc: ...here.
+ 	* genextract.c: Moved to...
+ 	* genextract.cc: ...here.
+ 	* genflags.c: Moved to...
+ 	* genflags.cc: ...here.
+ 	* gengenrtl.c: Moved to...
+ 	* gengenrtl.cc: ...here.
+ 	* gengtype-parse.c: Moved to...
+ 	* gengtype-parse.cc: ...here.
+ 	* gengtype-state.c: Moved to...
+ 	* gengtype-state.cc: ...here.
+ 	* gengtype.c: Moved to...
+ 	* gengtype.cc: ...here.
+ 	* genhooks.c: Moved to...
+ 	* genhooks.cc: ...here.
+ 	* genmatch.c: Moved to...
+ 	* genmatch.cc: ...here.
+ 	* genmddeps.c: Moved to...
+ 	* genmddeps.cc: ...here.
+ 	* genmddump.c: Moved to...
+ 	* genmddump.cc: ...here.
+ 	* genmodes.c: Moved to...
+ 	* genmodes.cc: ...here.
+ 	* genopinit.c: Moved to...
+ 	* genopinit.cc: ...here.
+ 	* genoutput.c: Moved to...
+ 	* genoutput.cc: ...here.
+ 	* genpeep.c: Moved to...
+ 	* genpeep.cc: ...here.
+ 	* genpreds.c: Moved to...
+ 	* genpreds.cc: ...here.
+ 	* genrecog.c: Moved to...
+ 	* genrecog.cc: ...here.
+ 	* gensupport.c: Moved to...
+ 	* gensupport.cc: ...here.
+ 	* gentarget-def.c: Moved to...
+ 	* gentarget-def.cc: ...here.
+ 	* genversion.c: Moved to...
+ 	* genversion.cc: ...here.
+ 	* ggc-common.c: Moved to...
+ 	* ggc-common.cc: ...here.
+ 	* ggc-none.c: Moved to...
+ 	* ggc-none.cc: ...here.
+ 	* ggc-page.c: Moved to...
+ 	* ggc-page.cc: ...here.
+ 	* ggc-tests.c: Moved to...
+ 	* ggc-tests.cc: ...here.
+ 	* gimple-builder.c: Moved to...
+ 	* gimple-builder.cc: ...here.
+ 	* gimple-expr.c: Moved to...
+ 	* gimple-expr.cc: ...here.
+ 	* gimple-fold.c: Moved to...
+ 	* gimple-fold.cc: ...here.
+ 	* gimple-iterator.c: Moved to...
+ 	* gimple-iterator.cc: ...here.
+ 	* gimple-laddress.c: Moved to...
+ 	* gimple-laddress.cc: ...here.
+ 	* gimple-loop-jam.c: Moved to...
+ 	* gimple-loop-jam.cc: ...here.
+ 	* gimple-low.c: Moved to...
+ 	* gimple-low.cc: ...here.
+ 	* gimple-match-head.c: Moved to...
+ 	* gimple-match-head.cc: ...here.
+ 	* gimple-pretty-print.c: Moved to...
+ 	* gimple-pretty-print.cc: ...here.
+ 	* gimple-ssa-backprop.c: Moved to...
+ 	* gimple-ssa-backprop.cc: ...here.
+ 	* gimple-ssa-evrp-analyze.c: Moved to...
+ 	* gimple-ssa-evrp-analyze.cc: ...here.
+ 	* gimple-ssa-evrp.c: Moved to...
+ 	* gimple-ssa-evrp.cc: ...here.
+ 	* gimple-ssa-isolate-paths.c: Moved to...
+ 	* gimple-ssa-isolate-paths.cc: ...here.
+ 	* gimple-ssa-nonnull-compare.c: Moved to...
+ 	* gimple-ssa-nonnull-compare.cc: ...here.
+ 	* gimple-ssa-split-paths.c: Moved to...
+ 	* gimple-ssa-split-paths.cc: ...here.
+ 	* gimple-ssa-sprintf.c: Moved to...
+ 	* gimple-ssa-sprintf.cc: ...here.
+ 	* gimple-ssa-store-merging.c: Moved to...
+ 	* gimple-ssa-store-merging.cc: ...here.
+ 	* gimple-ssa-strength-reduction.c: Moved to...
+ 	* gimple-ssa-strength-reduction.cc: ...here.
+ 	* gimple-ssa-warn-alloca.c: Moved to...
+ 	* gimple-ssa-warn-alloca.cc: ...here.
+ 	* gimple-ssa-warn-restrict.c: Moved to...
+ 	* gimple-ssa-warn-restrict.cc: ...here.
+ 	* gimple-streamer-in.c: Moved to...
+ 	* gimple-streamer-in.cc: ...here.
+ 	* gimple-streamer-out.c: Moved to...
+ 	* gimple-streamer-out.cc: ...here.
+ 	* gimple-walk.c: Moved to...
+ 	* gimple-walk.cc: ...here.
+ 	* gimple-warn-recursion.c: Moved to...
+ 	* gimple-warn-recursion.cc: ...here.
+ 	* gimple.c: Moved to...
+ 	* gimple.cc: ...here.
+ 	* gimplify-me.c: Moved to...
+ 	* gimplify-me.cc: ...here.
+ 	* gimplify.c: Moved to...
+ 	* gimplify.cc: ...here.
+ 	* godump.c: Moved to...
+ 	* godump.cc: ...here.
+ 	* graph.c: Moved to...
+ 	* graph.cc: ...here.
+ 	* graphds.c: Moved to...
+ 	* graphds.cc: ...here.
+ 	* graphite-dependences.c: Moved to...
+ 	* graphite-dependences.cc: ...here.
+ 	* graphite-isl-ast-to-gimple.c: Moved to...
+ 	* graphite-isl-ast-to-gimple.cc: ...here.
+ 	* graphite-optimize-isl.c: Moved to...
+ 	* graphite-optimize-isl.cc: ...here.
+ 	* graphite-poly.c: Moved to...
+ 	* graphite-poly.cc: ...here.
+ 	* graphite-scop-detection.c: Moved to...
+ 	* graphite-scop-detection.cc: ...here.
+ 	* graphite-sese-to-poly.c: Moved to...
+ 	* graphite-sese-to-poly.cc: ...here.
+ 	* graphite.c: Moved to...
+ 	* graphite.cc: ...here.
+ 	* haifa-sched.c: Moved to...
+ 	* haifa-sched.cc: ...here.
+ 	* hash-map-tests.c: Moved to...
+ 	* hash-map-tests.cc: ...here.
+ 	* hash-set-tests.c: Moved to...
+ 	* hash-set-tests.cc: ...here.
+ 	* hash-table.c: Moved to...
+ 	* hash-table.cc: ...here.
+ 	* hooks.c: Moved to...
+ 	* hooks.cc: ...here.
+ 	* host-default.c: Moved to...
+ 	* host-default.cc: ...here.
+ 	* hw-doloop.c: Moved to...
+ 	* hw-doloop.cc: ...here.
+ 	* hwint.c: Moved to...
+ 	* hwint.cc: ...here.
+ 	* ifcvt.c: Moved to...
+ 	* ifcvt.cc: ...here.
+ 	* inchash.c: Moved to...
+ 	* inchash.cc: ...here.
+ 	* incpath.c: Moved to...
+ 	* incpath.cc: ...here.
+ 	* init-regs.c: Moved to...
+ 	* init-regs.cc: ...here.
+ 	* input.c: Moved to...
+ 	* input.cc: ...here.
+ 	* internal-fn.c: Moved to...
+ 	* internal-fn.cc: ...here.
+ 	* intl.c: Moved to...
+ 	* intl.cc: ...here.
+ 	* ipa-comdats.c: Moved to...
+ 	* ipa-comdats.cc: ...here.
+ 	* ipa-cp.c: Moved to...
+ 	* ipa-cp.cc: ...here.
+ 	* ipa-devirt.c: Moved to...
+ 	* ipa-devirt.cc: ...here.
+ 	* ipa-fnsummary.c: Moved to...
+ 	* ipa-fnsummary.cc: ...here.
+ 	* ipa-icf-gimple.c: Moved to...
+ 	* ipa-icf-gimple.cc: ...here.
+ 	* ipa-icf.c: Moved to...
+ 	* ipa-icf.cc: ...here.
+ 	* ipa-inline-analysis.c: Moved to...
+ 	* ipa-inline-analysis.cc: ...here.
+ 	* ipa-inline-transform.c: Moved to...
+ 	* ipa-inline-transform.cc: ...here.
+ 	* ipa-inline.c: Moved to...
+ 	* ipa-inline.cc: ...here.
+ 	* ipa-modref-tree.c: Moved to...
+ 	* ipa-modref-tree.cc: ...here.
+ 	* ipa-modref.c: Moved to...
+ 	* ipa-modref.cc: ...here.
+ 	* ipa-param-manipulation.c: Moved to...
+ 	* ipa-param-manipulation.cc: ...here.
+ 	* ipa-polymorphic-call.c: Moved to...
+ 	* ipa-polymorphic-call.cc: ...here.
+ 	* ipa-predicate.c: Moved to...
+ 	* ipa-predicate.cc: ...here.
+ 	* ipa-profile.c: Moved to...
+ 	* ipa-profile.cc: ...here.
+ 	* ipa-prop.c: Moved to...
+ 	* ipa-prop.cc: ...here.
+ 	* ipa-pure-const.c: Moved to...
+ 	* ipa-pure-const.cc: ...here.
+ 	* ipa-ref.c: Moved to...
+ 	* ipa-ref.cc: ...here.
+ 	* ipa-reference.c: Moved to...
+ 	* ipa-reference.cc: ...here.
+ 	* ipa-split.c: Moved to...
+ 	* ipa-split.cc: ...here.
+ 	* ipa-sra.c: Moved to...
+ 	* ipa-sra.cc: ...here.
+ 	* ipa-utils.c: Moved to...
+ 	* ipa-utils.cc: ...here.
+ 	* ipa-visibility.c: Moved to...
+ 	* ipa-visibility.cc: ...here.
+ 	* ipa.c: Moved to...
+ 	* ipa.cc: ...here.
+ 	* ira-build.c: Moved to...
+ 	* ira-build.cc: ...here.
+ 	* ira-color.c: Moved to...
+ 	* ira-color.cc: ...here.
+ 	* ira-conflicts.c: Moved to...
+ 	* ira-conflicts.cc: ...here.
+ 	* ira-costs.c: Moved to...
+ 	* ira-costs.cc: ...here.
+ 	* ira-emit.c: Moved to...
+ 	* ira-emit.cc: ...here.
+ 	* ira-lives.c: Moved to...
+ 	* ira-lives.cc: ...here.
+ 	* ira.c: Moved to...
+ 	* ira.cc: ...here.
+ 	* jump.c: Moved to...
+ 	* jump.cc: ...here.
+ 	* langhooks.c: Moved to...
+ 	* langhooks.cc: ...here.
+ 	* lcm.c: Moved to...
+ 	* lcm.cc: ...here.
+ 	* lists.c: Moved to...
+ 	* lists.cc: ...here.
+ 	* loop-doloop.c: Moved to...
+ 	* loop-doloop.cc: ...here.
+ 	* loop-init.c: Moved to...
+ 	* loop-init.cc: ...here.
+ 	* loop-invariant.c: Moved to...
+ 	* loop-invariant.cc: ...here.
+ 	* loop-iv.c: Moved to...
+ 	* loop-iv.cc: ...here.
+ 	* loop-unroll.c: Moved to...
+ 	* loop-unroll.cc: ...here.
+ 	* lower-subreg.c: Moved to...
+ 	* lower-subreg.cc: ...here.
+ 	* lra-assigns.c: Moved to...
+ 	* lra-assigns.cc: ...here.
+ 	* lra-coalesce.c: Moved to...
+ 	* lra-coalesce.cc: ...here.
+ 	* lra-constraints.c: Moved to...
+ 	* lra-constraints.cc: ...here.
+ 	* lra-eliminations.c: Moved to...
+ 	* lra-eliminations.cc: ...here.
+ 	* lra-lives.c: Moved to...
+ 	* lra-lives.cc: ...here.
+ 	* lra-remat.c: Moved to...
+ 	* lra-remat.cc: ...here.
+ 	* lra-spills.c: Moved to...
+ 	* lra-spills.cc: ...here.
+ 	* lra.c: Moved to...
+ 	* lra.cc: ...here.
+ 	* lto-cgraph.c: Moved to...
+ 	* lto-cgraph.cc: ...here.
+ 	* lto-compress.c: Moved to...
+ 	* lto-compress.cc: ...here.
+ 	* lto-opts.c: Moved to...
+ 	* lto-opts.cc: ...here.
+ 	* lto-section-in.c: Moved to...
+ 	* lto-section-in.cc: ...here.
+ 	* lto-section-out.c: Moved to...
+ 	* lto-section-out.cc: ...here.
+ 	* lto-streamer-in.c: Moved to...
+ 	* lto-streamer-in.cc: ...here.
+ 	* lto-streamer-out.c: Moved to...
+ 	* lto-streamer-out.cc: ...here.
+ 	* lto-streamer.c: Moved to...
+ 	* lto-streamer.cc: ...here.
+ 	* lto-wrapper.c: Moved to...
+ 	* lto-wrapper.cc: ...here.
+ 	* main.c: Moved to...
+ 	* main.cc: ...here.
+ 	* mcf.c: Moved to...
+ 	* mcf.cc: ...here.
+ 	* mode-switching.c: Moved to...
+ 	* mode-switching.cc: ...here.
+ 	* modulo-sched.c: Moved to...
+ 	* modulo-sched.cc: ...here.
+ 	* multiple_target.c: Moved to...
+ 	* multiple_target.cc: ...here.
+ 	* omp-expand.c: Moved to...
+ 	* omp-expand.cc: ...here.
+ 	* omp-general.c: Moved to...
+ 	* omp-general.cc: ...here.
+ 	* omp-low.c: Moved to...
+ 	* omp-low.cc: ...here.
+ 	* omp-offload.c: Moved to...
+ 	* omp-offload.cc: ...here.
+ 	* omp-simd-clone.c: Moved to...
+ 	* omp-simd-clone.cc: ...here.
+ 	* opt-suggestions.c: Moved to...
+ 	* opt-suggestions.cc: ...here.
+ 	* optabs-libfuncs.c: Moved to...
+ 	* optabs-libfuncs.cc: ...here.
+ 	* optabs-query.c: Moved to...
+ 	* optabs-query.cc: ...here.
+ 	* optabs-tree.c: Moved to...
+ 	* optabs-tree.cc: ...here.
+ 	* optabs.c: Moved to...
+ 	* optabs.cc: ...here.
+ 	* opts-common.c: Moved to...
+ 	* opts-common.cc: ...here.
+ 	* opts-global.c: Moved to...
+ 	* opts-global.cc: ...here.
+ 	* opts.c: Moved to...
+ 	* opts.cc: ...here.
+ 	* passes.c: Moved to...
+ 	* passes.cc: ...here.
+ 	* plugin.c: Moved to...
+ 	* plugin.cc: ...here.
+ 	* postreload-gcse.c: Moved to...
+ 	* postreload-gcse.cc: ...here.
+ 	* postreload.c: Moved to...
+ 	* postreload.cc: ...here.
+ 	* predict.c: Moved to...
+ 	* predict.cc: ...here.
+ 	* prefix.c: Moved to...
+ 	* prefix.cc: ...here.
+ 	* pretty-print.c: Moved to...
+ 	* pretty-print.cc: ...here.
+ 	* print-rtl-function.c: Moved to...
+ 	* print-rtl-function.cc: ...here.
+ 	* print-rtl.c: Moved to...
+ 	* print-rtl.cc: ...here.
+ 	* print-tree.c: Moved to...
+ 	* print-tree.cc: ...here.
+ 	* profile-count.c: Moved to...
+ 	* profile-count.cc: ...here.
+ 	* profile.c: Moved to...
+ 	* profile.cc: ...here.
+ 	* read-md.c: Moved to...
+ 	* read-md.cc: ...here.
+ 	* read-rtl-function.c: Moved to...
+ 	* read-rtl-function.cc: ...here.
+ 	* read-rtl.c: Moved to...
+ 	* read-rtl.cc: ...here.
+ 	* real.c: Moved to...
+ 	* real.cc: ...here.
+ 	* realmpfr.c: Moved to...
+ 	* realmpfr.cc: ...here.
+ 	* recog.c: Moved to...
+ 	* recog.cc: ...here.
+ 	* ree.c: Moved to...
+ 	* ree.cc: ...here.
+ 	* reg-stack.c: Moved to...
+ 	* reg-stack.cc: ...here.
+ 	* regcprop.c: Moved to...
+ 	* regcprop.cc: ...here.
+ 	* reginfo.c: Moved to...
+ 	* reginfo.cc: ...here.
+ 	* regrename.c: Moved to...
+ 	* regrename.cc: ...here.
+ 	* regstat.c: Moved to...
+ 	* regstat.cc: ...here.
+ 	* reload.c: Moved to...
+ 	* reload.cc: ...here.
+ 	* reload1.c: Moved to...
+ 	* reload1.cc: ...here.
+ 	* reorg.c: Moved to...
+ 	* reorg.cc: ...here.
+ 	* resource.c: Moved to...
+ 	* resource.cc: ...here.
+ 	* rtl-error.c: Moved to...
+ 	* rtl-error.cc: ...here.
+ 	* rtl-tests.c: Moved to...
+ 	* rtl-tests.cc: ...here.
+ 	* rtl.c: Moved to...
+ 	* rtl.cc: ...here.
+ 	* rtlanal.c: Moved to...
+ 	* rtlanal.cc: ...here.
+ 	* rtlhash.c: Moved to...
+ 	* rtlhash.cc: ...here.
+ 	* rtlhooks.c: Moved to...
+ 	* rtlhooks.cc: ...here.
+ 	* rtx-vector-builder.c: Moved to...
+ 	* rtx-vector-builder.cc: ...here.
+ 	* run-rtl-passes.c: Moved to...
+ 	* run-rtl-passes.cc: ...here.
+ 	* sancov.c: Moved to...
+ 	* sancov.cc: ...here.
+ 	* sanopt.c: Moved to...
+ 	* sanopt.cc: ...here.
+ 	* sbitmap.c: Moved to...
+ 	* sbitmap.cc: ...here.
+ 	* sched-deps.c: Moved to...
+ 	* sched-deps.cc: ...here.
+ 	* sched-ebb.c: Moved to...
+ 	* sched-ebb.cc: ...here.
+ 	* sched-rgn.c: Moved to...
+ 	* sched-rgn.cc: ...here.
+ 	* sel-sched-dump.c: Moved to...
+ 	* sel-sched-dump.cc: ...here.
+ 	* sel-sched-ir.c: Moved to...
+ 	* sel-sched-ir.cc: ...here.
+ 	* sel-sched.c: Moved to...
+ 	* sel-sched.cc: ...here.
+ 	* selftest-diagnostic.c: Moved to...
+ 	* selftest-diagnostic.cc: ...here.
+ 	* selftest-rtl.c: Moved to...
+ 	* selftest-rtl.cc: ...here.
+ 	* selftest-run-tests.c: Moved to...
+ 	* selftest-run-tests.cc: ...here.
+ 	* selftest.c: Moved to...
+ 	* selftest.cc: ...here.
+ 	* sese.c: Moved to...
+ 	* sese.cc: ...here.
+ 	* shrink-wrap.c: Moved to...
+ 	* shrink-wrap.cc: ...here.
+ 	* simplify-rtx.c: Moved to...
+ 	* simplify-rtx.cc: ...here.
+ 	* sparseset.c: Moved to...
+ 	* sparseset.cc: ...here.
+ 	* spellcheck-tree.c: Moved to...
+ 	* spellcheck-tree.cc: ...here.
+ 	* spellcheck.c: Moved to...
+ 	* spellcheck.cc: ...here.
+ 	* sreal.c: Moved to...
+ 	* sreal.cc: ...here.
+ 	* stack-ptr-mod.c: Moved to...
+ 	* stack-ptr-mod.cc: ...here.
+ 	* statistics.c: Moved to...
+ 	* statistics.cc: ...here.
+ 	* stmt.c: Moved to...
+ 	* stmt.cc: ...here.
+ 	* stor-layout.c: Moved to...
+ 	* stor-layout.cc: ...here.
+ 	* store-motion.c: Moved to...
+ 	* store-motion.cc: ...here.
+ 	* streamer-hooks.c: Moved to...
+ 	* streamer-hooks.cc: ...here.
+ 	* stringpool.c: Moved to...
+ 	* stringpool.cc: ...here.
+ 	* substring-locations.c: Moved to...
+ 	* substring-locations.cc: ...here.
+ 	* symtab.c: Moved to...
+ 	* symtab.cc: ...here.
+ 	* target-globals.c: Moved to...
+ 	* target-globals.cc: ...here.
+ 	* targhooks.c: Moved to...
+ 	* targhooks.cc: ...here.
+ 	* timevar.c: Moved to...
+ 	* timevar.cc: ...here.
+ 	* toplev.c: Moved to...
+ 	* toplev.cc: ...here.
+ 	* tracer.c: Moved to...
+ 	* tracer.cc: ...here.
+ 	* trans-mem.c: Moved to...
+ 	* trans-mem.cc: ...here.
+ 	* tree-affine.c: Moved to...
+ 	* tree-affine.cc: ...here.
+ 	* tree-call-cdce.c: Moved to...
+ 	* tree-call-cdce.cc: ...here.
+ 	* tree-cfg.c: Moved to...
+ 	* tree-cfg.cc: ...here.
+ 	* tree-cfgcleanup.c: Moved to...
+ 	* tree-cfgcleanup.cc: ...here.
+ 	* tree-chrec.c: Moved to...
+ 	* tree-chrec.cc: ...here.
+ 	* tree-complex.c: Moved to...
+ 	* tree-complex.cc: ...here.
+ 	* tree-data-ref.c: Moved to...
+ 	* tree-data-ref.cc: ...here.
+ 	* tree-dfa.c: Moved to...
+ 	* tree-dfa.cc: ...here.
+ 	* tree-diagnostic.c: Moved to...
+ 	* tree-diagnostic.cc: ...here.
+ 	* tree-dump.c: Moved to...
+ 	* tree-dump.cc: ...here.
+ 	* tree-eh.c: Moved to...
+ 	* tree-eh.cc: ...here.
+ 	* tree-emutls.c: Moved to...
+ 	* tree-emutls.cc: ...here.
+ 	* tree-if-conv.c: Moved to...
+ 	* tree-if-conv.cc: ...here.
+ 	* tree-inline.c: Moved to...
+ 	* tree-inline.cc: ...here.
+ 	* tree-into-ssa.c: Moved to...
+ 	* tree-into-ssa.cc: ...here.
+ 	* tree-iterator.c: Moved to...
+ 	* tree-iterator.cc: ...here.
+ 	* tree-loop-distribution.c: Moved to...
+ 	* tree-loop-distribution.cc: ...here.
+ 	* tree-nested.c: Moved to...
+ 	* tree-nested.cc: ...here.
+ 	* tree-nrv.c: Moved to...
+ 	* tree-nrv.cc: ...here.
+ 	* tree-object-size.c: Moved to...
+ 	* tree-object-size.cc: ...here.
+ 	* tree-outof-ssa.c: Moved to...
+ 	* tree-outof-ssa.cc: ...here.
+ 	* tree-parloops.c: Moved to...
+ 	* tree-parloops.cc: ...here.
+ 	* tree-phinodes.c: Moved to...
+ 	* tree-phinodes.cc: ...here.
+ 	* tree-predcom.c: Moved to...
+ 	* tree-predcom.cc: ...here.
+ 	* tree-pretty-print.c: Moved to...
+ 	* tree-pretty-print.cc: ...here.
+ 	* tree-profile.c: Moved to...
+ 	* tree-profile.cc: ...here.
+ 	* tree-scalar-evolution.c: Moved to...
+ 	* tree-scalar-evolution.cc: ...here.
+ 	* tree-sra.c: Moved to...
+ 	* tree-sra.cc: ...here.
+ 	* tree-ssa-address.c: Moved to...
+ 	* tree-ssa-address.cc: ...here.
+ 	* tree-ssa-alias.c: Moved to...
+ 	* tree-ssa-alias.cc: ...here.
+ 	* tree-ssa-ccp.c: Moved to...
+ 	* tree-ssa-ccp.cc: ...here.
+ 	* tree-ssa-coalesce.c: Moved to...
+ 	* tree-ssa-coalesce.cc: ...here.
+ 	* tree-ssa-copy.c: Moved to...
+ 	* tree-ssa-copy.cc: ...here.
+ 	* tree-ssa-dce.c: Moved to...
+ 	* tree-ssa-dce.cc: ...here.
+ 	* tree-ssa-dom.c: Moved to...
+ 	* tree-ssa-dom.cc: ...here.
+ 	* tree-ssa-dse.c: Moved to...
+ 	* tree-ssa-dse.cc: ...here.
+ 	* tree-ssa-forwprop.c: Moved to...
+ 	* tree-ssa-forwprop.cc: ...here.
+ 	* tree-ssa-ifcombine.c: Moved to...
+ 	* tree-ssa-ifcombine.cc: ...here.
+ 	* tree-ssa-live.c: Moved to...
+ 	* tree-ssa-live.cc: ...here.
+ 	* tree-ssa-loop-ch.c: Moved to...
+ 	* tree-ssa-loop-ch.cc: ...here.
+ 	* tree-ssa-loop-im.c: Moved to...
+ 	* tree-ssa-loop-im.cc: ...here.
+ 	* tree-ssa-loop-ivcanon.c: Moved to...
+ 	* tree-ssa-loop-ivcanon.cc: ...here.
+ 	* tree-ssa-loop-ivopts.c: Moved to...
+ 	* tree-ssa-loop-ivopts.cc: ...here.
+ 	* tree-ssa-loop-manip.c: Moved to...
+ 	* tree-ssa-loop-manip.cc: ...here.
+ 	* tree-ssa-loop-niter.c: Moved to...
+ 	* tree-ssa-loop-niter.cc: ...here.
+ 	* tree-ssa-loop-prefetch.c: Moved to...
+ 	* tree-ssa-loop-prefetch.cc: ...here.
+ 	* tree-ssa-loop-split.c: Moved to...
+ 	* tree-ssa-loop-split.cc: ...here.
+ 	* tree-ssa-loop-unswitch.c: Moved to...
+ 	* tree-ssa-loop-unswitch.cc: ...here.
+ 	* tree-ssa-loop.c: Moved to...
+ 	* tree-ssa-loop.cc: ...here.
+ 	* tree-ssa-math-opts.c: Moved to...
+ 	* tree-ssa-math-opts.cc: ...here.
+ 	* tree-ssa-operands.c: Moved to...
+ 	* tree-ssa-operands.cc: ...here.
+ 	* tree-ssa-phiopt.c: Moved to...
+ 	* tree-ssa-phiopt.cc: ...here.
+ 	* tree-ssa-phiprop.c: Moved to...
+ 	* tree-ssa-phiprop.cc: ...here.
+ 	* tree-ssa-pre.c: Moved to...
+ 	* tree-ssa-pre.cc: ...here.
+ 	* tree-ssa-propagate.c: Moved to...
+ 	* tree-ssa-propagate.cc: ...here.
+ 	* tree-ssa-reassoc.c: Moved to...
+ 	* tree-ssa-reassoc.cc: ...here.
+ 	* tree-ssa-sccvn.c: Moved to...
+ 	* tree-ssa-sccvn.cc: ...here.
+ 	* tree-ssa-scopedtables.c: Moved to...
+ 	* tree-ssa-scopedtables.cc: ...here.
+ 	* tree-ssa-sink.c: Moved to...
+ 	* tree-ssa-sink.cc: ...here.
+ 	* tree-ssa-strlen.c: Moved to...
+ 	* tree-ssa-strlen.cc: ...here.
+ 	* tree-ssa-structalias.c: Moved to...
+ 	* tree-ssa-structalias.cc: ...here.
+ 	* tree-ssa-tail-merge.c: Moved to...
+ 	* tree-ssa-tail-merge.cc: ...here.
+ 	* tree-ssa-ter.c: Moved to...
+ 	* tree-ssa-ter.cc: ...here.
+ 	* tree-ssa-threadbackward.c: Moved to...
+ 	* tree-ssa-threadbackward.cc: ...here.
+ 	* tree-ssa-threadedge.c: Moved to...
+ 	* tree-ssa-threadedge.cc: ...here.
+ 	* tree-ssa-threadupdate.c: Moved to...
+ 	* tree-ssa-threadupdate.cc: ...here.
+ 	* tree-ssa-uncprop.c: Moved to...
+ 	* tree-ssa-uncprop.cc: ...here.
+ 	* tree-ssa-uninit.c: Moved to...
+ 	* tree-ssa-uninit.cc: ...here.
+ 	* tree-ssa.c: Moved to...
+ 	* tree-ssa.cc: ...here.
+ 	* tree-ssanames.c: Moved to...
+ 	* tree-ssanames.cc: ...here.
+ 	* tree-stdarg.c: Moved to...
+ 	* tree-stdarg.cc: ...here.
+ 	* tree-streamer-in.c: Moved to...
+ 	* tree-streamer-in.cc: ...here.
+ 	* tree-streamer-out.c: Moved to...
+ 	* tree-streamer-out.cc: ...here.
+ 	* tree-streamer.c: Moved to...
+ 	* tree-streamer.cc: ...here.
+ 	* tree-switch-conversion.c: Moved to...
+ 	* tree-switch-conversion.cc: ...here.
+ 	* tree-tailcall.c: Moved to...
+ 	* tree-tailcall.cc: ...here.
+ 	* tree-vect-data-refs.c: Moved to...
+ 	* tree-vect-data-refs.cc: ...here.
+ 	* tree-vect-generic.c: Moved to...
+ 	* tree-vect-generic.cc: ...here.
+ 	* tree-vect-loop-manip.c: Moved to...
+ 	* tree-vect-loop-manip.cc: ...here.
+ 	* tree-vect-loop.c: Moved to...
+ 	* tree-vect-loop.cc: ...here.
+ 	* tree-vect-patterns.c: Moved to...
+ 	* tree-vect-patterns.cc: ...here.
+ 	* tree-vect-slp-patterns.c: Moved to...
+ 	* tree-vect-slp-patterns.cc: ...here.
+ 	* tree-vect-slp.c: Moved to...
+ 	* tree-vect-slp.cc: ...here.
+ 	* tree-vect-stmts.c: Moved to...
+ 	* tree-vect-stmts.cc: ...here.
+ 	* tree-vector-builder.c: Moved to...
+ 	* tree-vector-builder.cc: ...here.
+ 	* tree-vectorizer.c: Moved to...
+ 	* tree-vectorizer.cc: ...here.
+ 	* tree-vrp.c: Moved to...
+ 	* tree-vrp.cc: ...here.
+ 	* tree.c: Moved to...
+ 	* tree.cc: ...here.
+ 	* tsan.c: Moved to...
+ 	* tsan.cc: ...here.
+ 	* typed-splay-tree.c: Moved to...
+ 	* typed-splay-tree.cc: ...here.
+ 	* ubsan.c: Moved to...
+ 	* ubsan.cc: ...here.
+ 	* valtrack.c: Moved to...
+ 	* valtrack.cc: ...here.
+ 	* value-prof.c: Moved to...
+ 	* value-prof.cc: ...here.
+ 	* var-tracking.c: Moved to...
+ 	* var-tracking.cc: ...here.
+ 	* varasm.c: Moved to...
+ 	* varasm.cc: ...here.
+ 	* varpool.c: Moved to...
+ 	* varpool.cc: ...here.
+ 	* vec-perm-indices.c: Moved to...
+ 	* vec-perm-indices.cc: ...here.
+ 	* vec.c: Moved to...
+ 	* vec.cc: ...here.
+ 	* vmsdbgout.c: Moved to...
+ 	* vmsdbgout.cc: ...here.
+ 	* vr-values.c: Moved to...
+ 	* vr-values.cc: ...here.
+ 	* vtable-verify.c: Moved to...
+ 	* vtable-verify.cc: ...here.
+ 	* web.c: Moved to...
+ 	* web.cc: ...here.
+ 	* xcoffout.c: Moved to...
+ 	* xcoffout.cc: ...here.
+ 
+ 2022-01-17  qing zhao  <qing.zhao@oracle.com>
+ 
+ 	* tree-ssa-uninit.c (warn_uninit): Delete the 4th parameter. Handle
+ 	.DEFERRED_INIT call with an anonymous SSA_NAME specially.
+ 	(check_defs): Handle .DEFERRED_INIT call with an anonymous SSA_NAME
+ 	specially.
+ 	(warn_uninit_phi_uses): Delete the 4th actual when call warn_uninit.
+ 	(warn_uninitialized_vars): Likewise.
+ 	(warn_uninitialized_phi): Likewise.
+ 
+ 2022-01-17  Jason Merrill  <jason@redhat.com>
+ 
+ 	* diagnostic.h (struct diagnostic_context): Add includes_seen.
+ 	* diagnostic.c (diagnostic_initialize): Initialize it.
+ 	(diagnostic_finish): Clean it up.
+ 	(includes_seen): New function.
+ 	(diagnostic_report_current_module): Use it.
+ 
+ 2022-01-17  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/101292
+ 	* diagnostic-spec.c (copy_warning): Make sure to not
+ 	reference old hashtable content on possible resize.
+ 	* warning-control.cc (copy_warning): Likewise.
+ 
+ 2022-01-17  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/103973
+ 	* tree-cfg.h (cond_only_block_p): Declare.
+ 	* tree-ssa-phiopt.c (cond_only_block_p): Move function to ...
+ 	* tree-cfg.c (cond_only_block_p): ... here.  No longer static.
+ 	* optabs.def (spaceship_optab): New optab.
+ 	* internal-fn.def (SPACESHIP): New internal function.
+ 	* internal-fn.h (expand_SPACESHIP): Declare.
+ 	* internal-fn.c (expand_PHI): Formatting fix.
+ 	(expand_SPACESHIP): New function.
+ 	* tree-ssa-math-opts.c (optimize_spaceship): New function.
+ 	(math_opts_dom_walker::after_dom_children): Use it.
+ 	* config/i386/i386.md (spaceship<mode>3): New define_expand.
+ 	* config/i386/i386-protos.h (ix86_expand_fp_spaceship): Declare.
+ 	* config/i386/i386-expand.c (ix86_expand_fp_spaceship): New function.
+ 	* doc/md.texi (spaceship@var{m}3): Document.
+ 
+ 2022-01-17  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (altivec_vreveti2): Remove.
+ 	* config/rs6000/vsx.md (*vsx_extract_si, *vsx_extract_si_<uns>float_df,
+ 	*vsx_extract_si_<uns>float_<mode>, *vsx_insert_extract_v4sf_p9): Use
+ 	known constant values to simplify code.
+ 
+ 2022-01-17  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	PR target/103124
+ 	* config/rs6000/vsx.md (split pattern for TI to V1TI move): Defined.
+ 
+ 2022-01-16  wwwhhhyyy  <hongyu.wang@intel.com>
+ 
+ 	* config/i386/i386.h (TARGET_DEST_FALSE_DEP_FOR_GLC): New macro.
+ 	* config/i386/sse.md (<avx512>_<complexopname>_<mode><maskc_name><round_name>):
+ 	Insert zero-idiom in output template when attr enabled, set new attribute to
+ 	true for non-mask/maskz insn.
+ 	(avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>):
+ 	Likewise.
+ 	(avx512dq_mul<mode>3<mask_name>): Likewise.
+ 	(<avx2_avx512>_permvar<mode><mask_name>): Likewise.
+ 	(avx2_perm<mode>_1<mask_name>): Likewise.
+ 	(avx512f_perm<mode>_1<mask_name>): Likewise.
+ 	(avx512dq_rangep<mode><mask_name><round_saeonly_name>): Likewise.
+ 	(avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>):
+ 	Likewise.
+ 	(<avx512>_getmant<mode><mask_name><round_saeonly_name>): Likewise.
+ 	(avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
+ 	Likewise.
+ 	* config/i386/subst.md (mask3_dest_false_dep_for_glc_cond): New
+ 	subst_attr.
+ 	(mask4_dest_false_dep_for_glc_cond): Likewise.
+ 	(mask6_dest_false_dep_for_glc_cond): Likewise.
+ 	(mask10_dest_false_dep_for_glc_cond): Likewise.
+ 	(maskc_dest_false_dep_for_glc_cond): Likewise.
+ 	(mask_scalar4_dest_false_dep_for_glc_cond): Likewise.
+ 	(mask_scalarc_dest_false_dep_for_glc_cond): Likewise.
+ 	* config/i386/x86-tune.def (X86_TUNE_DEST_FALSE_DEP_FOR_GLC): New
+ 	DEF_TUNE enabled for m_SAPPHIRERAPIDS and m_ALDERLAKE
+ 
+ 2022-01-15  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR c/63272
+ 	* diagnostic-spec.c (nowarn_spec_t::nowarn_spec_t): Handle
+ 	-Wdangling-pointer.
+ 	* doc/invoke.texi (-Wdangling-pointer): Document new option.
+ 	* gimple-ssa-warn-access.cc (pass_waccess::clone): Set new member.
+ 	(pass_waccess::check_pointer_uses): New function.
+ 	(pass_waccess::gimple_call_return_arg): New function.
+ 	(pass_waccess::gimple_call_return_arg_ref): New function.
+ 	(pass_waccess::check_call_dangling): New function.
+ 	(pass_waccess::check_dangling_uses): New function overloads.
+ 	(pass_waccess::check_dangling_stores): New function.
+ 	(pass_waccess::check_dangling_stores): New function.
+ 	(pass_waccess::m_clobbers): New data member.
+ 	(pass_waccess::m_func): New data member.
+ 	(pass_waccess::m_run_number): New data member.
+ 	(pass_waccess::m_check_dangling_p): New data member.
+ 	(pass_waccess::check_alloca): Check m_early_checks_p.
+ 	(pass_waccess::check_alloc_size_call): Same.
+ 	(pass_waccess::check_strcat): Same.
+ 	(pass_waccess::check_strncat): Same.
+ 	(pass_waccess::check_stxcpy): Same.
+ 	(pass_waccess::check_stxncpy): Same.
+ 	(pass_waccess::check_strncmp): Same.
+ 	(pass_waccess::check_memop_access): Same.
+ 	(pass_waccess::check_read_access): Same.
+ 	(pass_waccess::check_builtin): Call check_pointer_uses.
+ 	(pass_waccess::warn_invalid_pointer): Add arguments.
+ 	(is_auto_decl): New function.
+ 	(pass_waccess::check_stmt): New function.
+ 	(pass_waccess::check_block): Call check_stmt.
+ 	(pass_waccess::execute): Call check_dangling_uses,
+ 	check_dangling_stores.  Empty m_clobbers.
+ 	* passes.def (pass_warn_access): Invoke pass two more times.
+ 
+ 2022-01-15  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR tree-optimization/80532
+ 	* common.opt (-Wuse-after-free): New options.
+ 	* diagnostic-spec.c (nowarn_spec_t::nowarn_spec_t): Handle
+ 	OPT_Wreturn_local_addr and OPT_Wuse_after_free_.
+ 	* diagnostic-spec.h (NW_DANGLING): New enumerator.
+ 	* doc/invoke.texi (-Wuse-after-free): Document new option.
+ 	* gimple-ssa-warn-access.cc (pass_waccess::check_call): Rename...
+ 	(pass_waccess::check_call_access): ...to this.
+ 	(pass_waccess::check): Rename...
+ 	(pass_waccess::check_block): ...to this.
+ 	(pass_waccess::check_pointer_uses): New function.
+ 	(pass_waccess::gimple_call_return_arg): New function.
+ 	(pass_waccess::warn_invalid_pointer): New function.
+ 	(pass_waccess::check_builtin): Handle free and realloc.
+ 	(gimple_use_after_inval_p): New function.
+ 	(get_realloc_lhs): New function.
+ 	(maybe_warn_mismatched_realloc): New function.
+ 	(pointers_related_p): New function.
+ 	(pass_waccess::check_call): Call check_pointer_uses.
+ 	(pass_waccess::execute): Compute and free dominance info.
+ 
+ 2022-01-15  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_sse_movcc): Use
+ 	expand_simple_unop and expand_simple_binop instead of manually
+ 	constructing NOT, AND and IOR RTXes.  Use vector_all_ones_operand
+ 	consistently.  Eliminate common subexpressions and simplify code.
+ 	* config/i386/sse.md (<any_logic:code><MODEF:mode>3): New expander.
+ 	(<any_logic:code><MODEF:mode>3): Make public.
+ 
+ 2022-01-14  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* ipa-param-manipulation.c (ipa_dump_adjusted_parameters): Dump
+ 	reverse flag as "reverse" for the sake of consistency.
+ 	* ipa-sra.c: Fix copyright year.
+ 	(ipa_sra_function_summaries::duplicate): Copy the reverse flag.
+ 	(dump_isra_access): Tweak dump line.
+ 	(isra_write_node_summary): Write the reverse flag.
+ 	(isra_read_node_info): Read it.
+ 	(pull_accesses_from_callee): Test its consistency and copy it.
+ 
+ 2022-01-14  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR middle-end/104026
+ 	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Initialize
+ 	partial_load_store_bias.
+ 
+ 2022-01-14  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/101475
+ 	* pointer-query.cc (handle_component_ref): Use the size of
+ 	the enclosing object if it's smaller than the member.
+ 
+ 2022-01-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* configure: Regenerate.
+ 
+ 2022-01-14  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.md (*add<mode>_1_slp"):
+ 	Mark alternative 1 output operand earlyclobbered.
+ 	(*sub<mode>_1_slp): Ditto.
+ 	(*and<mode>_1_slp): Ditto.
+ 	(*<code><mode>_1_slp): Ditto.
+ 	(*neg<mode>_1_slp): Ditto.
+ 	(*one_cmpl<mode>_1_slp): Ditto.
+ 	(*ashl<mode>3_1_slp): Ditto.
+ 	(*<insn><mode>3_1_slp): Ditto.
+ 	(*<insn><mode>3_1_slp): Ditto.
+ 
+ 2022-01-14  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR tree-optimization/104015
+ 	* tree-vect-loop.c (vect_analyze_loop): Check
+ 	param_vect_partial_vector_usage for supports_partial_vectors.
+ 
+ 2022-01-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89074
+ 	* fold-const.c (address_compare): Punt on comparison of address of
+ 	one object with address of end of another object if
+ 	folding_initializer.
+ 
+ 2022-01-14  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98737
+ 	* tree-ssa-forwprop.c (simplify_builtin_call): Canonicalize
+ 	__atomic_fetch_op (p, x, y) op x into __atomic_op_fetch (p, x, y)
+ 	and __atomic_op_fetch (p, x, y) iop x into
+ 	__atomic_fetch_op (p, x, y).
+ 
+ 2022-01-14  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.h (DWARF_FRAME_REGNUM): Update definition.
+ 	(DWARF_FRAME_RETURN_COLUMN): Use RETURN_ADDR_REGNUM macro.
+ 	(INCOMING_RETURN_ADDR_RTX): Likewise.
+ 	(DWARF_ALT_FRAME_RETURN_COLUMN): Define.
+ 
+ 2022-01-14  Claudiu Zissulescu  <claziss@synopsys.com>
+ 
+ 	* config/arc/arc.c (arc_compute_frame_size): Remove condition when
+ 	computin checking accumulator regs.
+ 	(arc_expand_prologue): Update comments.
+ 	(arc_expand_epilogue): Likewise.
+ 
+ 2022-01-14  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_v1ti_to_ti): Use force_reg.
+ 	(ix86_expand_ti_to_v1ti): Use force_reg.
+ 	(ix86_expand_v1ti_shift): Use force_reg.
+ 	(ix86_expand_v1ti_rotate): Use force_reg.
+ 	(ix86_expand_v1ti_ashiftrt): Provide new three operation
+ 	implementations for shifts by 111..126 bits.  Use force_reg.
+ 
+ 2022-01-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/arm/arm-common.c (arm_target_mode): Fix
+ 	warning: unterminated quoting directive [-Wformat=].
+ 
+ 2022-01-14  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR tree-optimization/104009
+ 	* tree-object-size.c (compute_builtin_object_size): Bail out on
+ 	negative offset.
+ 	(plus_stmt_object_size): Return maximum of wholesize and minimum
+ 	of 0 for negative offset.
+ 
+ 2022-01-14  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/104001
+ 	PR target/94790
+ 	PR target/104014
+ 	* config/i386/i386.md (*xor2andn): Refine predicate of
+ 	operands[0] from nonimmediate_operand to
+ 	register_operand, remove TARGET_AVX512BW from condition.
+ 
+ 2022-01-14  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/extend.texi (Function Attributes): Note that "tainted_args" can
+ 	be used on field decls.
+ 	(Common Function Attributes): Add entry on "tainted_args" attribute.
+ 
+ 2022-01-13  Anthony Sharp  <anthonysharp15@gmail.com>
+ 	    Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/70417
+ 	* doc/invoke.texi: Documentation for Wmissing-template-keyword.
+ 
+ 2022-01-13  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103861
+ 	* config/i386/i386.md (*ashlqi_ext<mode>_2): New insn pattern.
+ 	(*<any_shiftrt:insn>qi_ext<mode>_2): Ditto.
+ 	* config/i386/mmx.md (<any_shift:insn>v2qi):
+ 	New insn_and_split pattern.
+ 
+ 2022-01-13  Robin Dapp  <rdapp@linux.ibm.com>
+ 
+ 	* internal-fn.c (expand_partial_load_optab_fn): Add bias.
+ 	(expand_partial_store_optab_fn): Likewise.
+ 	(internal_len_load_store_bias): New function.
+ 	* internal-fn.h (VECT_PARTIAL_BIAS_UNSUPPORTED): New define.
+ 	(internal_len_load_store_bias): New function.
+ 	* tree-vect-loop-manip.c (vect_set_loop_controls_directly): Set bias.
+ 	(vect_set_loop_condition_partial_vectors): Add header_seq parameter.
+ 	* tree-vect-loop.c (vect_verify_loop_lens): Verify bias.
+ 	(vect_estimate_min_profitable_iters): Account for bias.
+ 	(vect_get_loop_len): Add bias-adjusted length.
+ 	* tree-vect-stmts.c (vectorizable_store): Use.
+ 	(vectorizable_load): Use.
+ 	* tree-vectorizer.h (struct rgroup_controls): Add bias-adjusted length.
+ 	(LOOP_VINFO_PARTIAL_LOAD_STORE_BIAS): New macro.
+ 	* config/rs6000/vsx.md: Use const0 bias predicate.
+ 	* doc/md.texi: Document bias value.
+ 
+ 2022-01-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/83072
+ 	PR tree-optimization/83073
+ 	PR tree-optimization/97909
+ 	* fold-const.c (expr_not_equal_to): Use a multi-range class.
+ 
+ 2022-01-13  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/96707
+ 	* range-op.cc (operator_rshift::lhs_op1_relation): New.
+ 
+ 2022-01-13  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (negv2qi): Disparage GPR alternative a bit.
+ 	Disable for TARGET_PARTIAL_REG_STALL unless optimizing for size.
+ 	(negv2qi splitters): Use lowpart_subreg instead of
+ 	gen_lowpart to create subreg.
+ 	(<plusminus:insn>v2qi3): Disparage GPR alternative a bit.
+ 	Disable for TARGET_PARTIAL_REG_STALL unless optimizing for size.
+ 	(<plusminus:insn>v2qi3 splitters): Use lowpart_subreg instead of
+ 	gen_lowpart to create subreg.
+ 	* config/i386/i386.md (*subqi_ext<mode>_2): Move.
+ 
+ 2022-01-13  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/104003
+ 	* config/i386/mmx.md (*xop_pcmov_<mode>): Use VI_16_32 mode iterator.
+ 
+ 2022-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* common/config/arm/arm-common.c (arm_target_mode): Wrap
+ 	keywords with %<, %> and remove trailing punctuation char.
+ 	(arm_canon_arch_option_1): Likewise.
+ 	(arm_asm_auto_mfpu): Likewise.
+ 	* config/arm/arm-builtins.c (arm_expand_builtin): Likewise.
+ 	* config/arm/arm.c (arm_options_perform_arch_sanity_checks): Likewise.
+ 	(use_vfp_abi): Likewise.
+ 	(aapcs_vfp_is_call_or_return_candidate): Likewise.
+ 	(arm_handle_cmse_nonsecure_entry): Likewise.
+ 	(arm_handle_cmse_nonsecure_call): Likewise.
+ 	(thumb1_md_asm_adjust): Likewise.
+ 
+ 2022-01-13  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	* config/rs6000/smmintrin.h (_mm_round_pd, _mm_round_ps,
+ 	_mm_round_sd, _mm_round_ss, _MM_FROUND_TO_NEAREST_INT,
+ 	_MM_FROUND_TO_ZERO, _MM_FROUND_TO_POS_INF, _MM_FROUND_TO_NEG_INF,
+ 	_MM_FROUND_CUR_DIRECTION, _MM_FROUND_RAISE_EXC, _MM_FROUND_NO_EXC,
+ 	_MM_FROUND_NINT, _MM_FROUND_FLOOR, _MM_FROUND_CEIL, _MM_FROUND_TRUNC,
+ 	_MM_FROUND_RINT, _MM_FROUND_NEARBYINT): New.
+ 	(_mm_ceil_pd, _mm_ceil_ps, _mm_ceil_sd, _mm_ceil_ss, _mm_floor_pd,
+ 	_mm_floor_ps, _mm_floor_sd, _mm_floor_ss): Convert from function to
+ 	macro.
+ 
+ 2022-01-13  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/103989
+ 	* tree-inline.c (setup_one_parameter): Don't copy parms with
+ 	empty type.
+ 
+ 2022-01-13  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* tree-streamer-out.c (pack_ts_base_value_fields): Don't pack
+ 	'TYPE_ADDR_SPACE' for offloading.
+ 	* tree-streamer-in.c (unpack_ts_base_value_fields): Don't unpack
+ 	'TYPE_ADDR_SPACE' for offloading.
+ 
+ 2022-01-13  Julian Brown  <julian@codesourcery.com>
+ 	    Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	* omp-oacc-kernels-decompose.cc (add_wait): New function, split out
+ 	of...
+ 	(add_async_clauses_and_wait): ...here. Call new outlined function.
+ 	(decompose_kernels_region_body): Add wait at the end of
+ 	explicitly-asynchronous kernels regions.
+ 
+ 2022-01-13  Thomas Schwinge  <thomas@codesourcery.com>
+ 
+ 	PR middle-end/100280
+ 	* omp-oacc-kernels-decompose.cc (maybe_build_inner_data_region):
+ 	Mark variables used in synthesized data clauses as addressable.
+ 
+ 2022-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/epiphany/epiphany.c (epiphany_mode_priority):
+ 	Use gcc_unreachable for not handled cases.
+ 
+ 2022-01-13  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/epiphany/epiphany.c (epiphany_handle_interrupt_attribute):
+ 	Use %qs format specifier.
+ 	(epiphany_override_options): Wrap keyword in %<, %>.
+ 
+ 2022-01-13  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/94790
+ 	* config/i386/i386.md (*xor2andn): New define_insn_and_split.
+ 
+ 2022-01-13  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	* config/rs6000/altivec.md (sldoi_to_mov<mode>): New.
+ 
+ 2022-01-12  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/100637
+ 	PR target/103861
+ 	* config/i386/i386-expand.c (ix86_emit_vec_binop): New static function.
+ 	(ix86_expand_sse_movcc): Use ix86_emit_vec_binop instead of gen_rtx_X
+ 	when constructing vector logic RTXes.
+ 	(expand_vec_perm_pshufb2): Ditto.
+ 	* config/i386/mmx.md (negv2qi): Disparage GPR alternative a bit.
+ 	(<plusminus:insn>v2qi3): Ditto.
+ 	(vcond<mode><mode>): Re-enable for TARGET_SSE2.
+ 	(vcondu<mode><mode>): Ditto.
+ 	(vcond_mask_<mode><mode>): Ditto.
+ 	(one_cmpl<VI_32:mode>2): Remove expander.
+ 	(one_cmpl<VI_16_32:mode>2): Rename from one_cmplv2qi.
+ 	Use VI_16_32 mode iterator.
+ 	(one_cmpl<VI_16_32:mode>2 splitters): Use VI_16_32 mode iterator.
+ 	Use lowpart_subreg instead of gen_lowpart to create subreg.
+ 	(*andnot<VI_16_32:mode>3): Merge from "*andnot<VI_32:mode>" and
+ 	"*andnotv2qi3" insn patterns using VI_16_32 mode iterator.
+ 	Disparage GPR alternative a bit.  Add CC clobber.
+ 	(*andnot<VI_16_32:mode>3 splitters): Use VI_16_32 mode iterator.
+ 	Use lowpart_subreg instead of gen_lowpart to create subreg.
+ 	(*<any_logic:code><VI_16_32:mode>3): Merge from
+ 	"*<any_logic:code><VI_32:mode>" and "*<any_logic:code>v2qi3" insn patterns
+ 	using VI_16_32 mode iterator.  Disparage GPR alternative a bit.
+ 	Add CC clobber.
+ 	(*<any_logic:code><VI_16_32:mode>3 splitters):Use VI_16_32 mode
+ 	iterator.  Use lowpart_subreg instead of gen_lowpart to create subreg.
+ 
+ 2022-01-12  Clément Chigot  <clement.chigot@atos.net>
+ 
+ 	* configure.ac: Check sizeof ino_t and dev_t.
+ 	(HOST_STAT_FOR_64BIT_INODES): New AC_DEFINE to provide stat
+ 	syscall being able to handle 64bit inodes.
+ 	* config.in: Regenerate.
+ 	* configure: Regenerate.
+ 	* incpath.c (HOST_STAT_FOR_64BIT_INODES): New define.
+ 	(remove_duplicates): Use it.
+ 
+ 2022-01-12  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/103551
+ 	* tree-vrp.c (execute_ranger_vrp): Always set EDGE_EXECUTABLE.
+ 
+ 2022-01-12  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103990
+ 	* tree-pass.h (tail_merge_optimize): Drop unused argument.
+ 	* tree-ssa-tail-merge.c (tail_merge_optimize): Likewise.
+ 	* tree-ssa-pre.c (pass_pre::execute): Retain TODO_cleanup_cfg
+ 	and adjust call to tail_merge_optimize.
+ 
+ 2022-01-12  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* tree-vect-loop.c (vect-analyze-loop): Handle scenario where target
+ 	does not add autovectorize_vector_modes.
+ 
+ 2022-01-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config/aarch64/aarch64.c (aarch64_parse_boolean_options): Use
+ 	%qs where possible.
+ 	(aarch64_parse_sve_width_string): Likewise.
+ 	(aarch64_override_options_internal): Likewise.
+ 	(aarch64_print_hint_for_extensions): Likewise.
+ 	(aarch64_validate_sls_mitigation): Likewise.
+ 	(aarch64_handle_attr_arch): Likewise.
+ 	(aarch64_handle_attr_cpu): Likewise.
+ 	(aarch64_handle_attr_tune): Likewise.
+ 	(aarch64_handle_attr_isa_flags): Likewise.
+ 
+ 2022-01-12  Martin Liska  <mliska@suse.cz>
+ 
+ 	* config.gcc: Include elfos.h before ${tm_file}.
+ 
+ 2022-01-12  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.c: Quote identifiers in parameters to error
+ 	and internal_error, and remove extraneous spaces with punctuation.
+ 	* config/cris/cris.h (CRIS_ASSERT): When passing on stringified
+ 	expression to internal_error, pass it as a parameter instead of
+ 	appending it to the format part.
+ 
+ 2022-01-12  Hans-Peter Nilsson  <hp@axis.com>
+ 
+ 	* config/cris/cris.c (cris_postdbr_cmpelim): Parenthesize
+ 	parameter to as_a.
+ 
+ 2022-01-11  qing zhao  <qing.zhao@oracle.com>
+ 
+ 	* gimplify.c (gimple_add_init_for_auto_var): Delete the 3rd argument.
+ 	Change the 3rd argument of function .DEFERRED_INIT to the name of the
+ 	decl.
+ 	(gimplify_decl_expr): Delete the 3rd argument when call
+ 	gimple_add_init_for_auto_var.
+ 	* internal-fn.c (expand_DEFERRED_INIT): Update comments to reflect
+ 	the 3rd argument change of function .DEFERRED_INIT.
+ 	* tree-cfg.c (verify_gimple_call): Update comments and verification
+ 	to reflect the 3rd argument change of function .DEFERRED_INIT.
+ 	* tree-sra.c (generate_subtree_deferred_init): Delete the 3rd argument.
+ 	(sra_modify_deferred_init): Change the 3rd argument of function
+ 	.DEFERRED_INIT to the name of the decl.
+ 
+ 2022-01-11  Thomas Koenig  <tkoenig@gcc.gnu.org>
+ 
+ 	* flag-types.h (enum gfc_convert): Add flags for
+ 	conversion.
+ 
+ 2022-01-11  Michael Meissner  <meissner@the-meissners.org>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_option_override_internal): Remove
+ 	checks for only C/C++ front ends before allowing the long double
+ 	format to change without a warning.
+ 
+ 2022-01-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/103974
+ 	* ira-int.h (ira_subloop_allocnos_can_differ_p): Take an
+ 	extra argument, default true, that says whether old-reload
+ 	targets should be excluded.
+ 	* ira-color.c (color_pass): Pass false.
+ 
+ 2022-01-11  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103861
+ 	* config/i386/mmx.md (vcond<mode><mode>):
+ 	Use VI_16_32 mode iterator.  Enable for TARGET_SSE4_1.
+ 	(vcondu<mode><mode>): Ditto.
+ 	(vcond_mask_<mode><mode>): Ditto.
+ 	(mmx_pblendvb_v8qi): Rename from mmx_pblendvb64.
+ 	(mmx_pblendvb_<mode>): Rename from mmx_pblendvb32.
+ 	Use VI_16_32 mode iterator.
+ 	* config/i386/i386-expand.c (ix86_expand_sse_movcc):
+ 	Update for rename.  Handle V2QImode.
+ 	(expand_vec_perm_blend): Update for rename.
+ 
+ 2022-01-11  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/101597
+ 	* tree.def (OBJ_TYPE_REF): Document type of OBJ_TYPE_REF_TOKEN.
+ 
+ 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* tree-object-size.c (size_valid_p): New function.
+ 	(size_for_offset): Remove OFFSET constness assertion.
+ 	(addr_object_size): Build dynamic expressions for object
+ 	sizes and use size_valid_p to decide if it is valid for the
+ 	given OBJECT_SIZE_TYPE.
+ 	(compute_builtin_object_size): Allow dynamic offsets when
+ 	computing size at O0.
+ 	(call_object_size): Call size_valid_p.
+ 	(plus_stmt_object_size): Allow non-constant offset and use
+ 	size_valid_p to decide if it is valid for the given
+ 	OBJECT_SIZE_TYPE.
+ 
+ 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* tree-object-size.c (alloc_object_size): Make and return
+ 	non-constant size expression.
+ 	(call_object_size): Return expression or unknown based on
+ 	whether dynamic object size is requested.
+ 
+ 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* tree-object-size.c: Include tree-dfa.h.
+ 	(parm_object_size): New function.
+ 	(collect_object_sizes_for): Call it.
+ 
+ 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 
+ 	PR middle-end/70090
+ 	* builtins.c (fold_builtin_object_size): Adjust for dynamic size
+ 	expressions.
+ 	* tree-object-size.c: Include gimplify-me.h.
+ 	(struct object_size_info): New member UNKNOWNS.
+ 	(size_initval_p, size_usable_p, object_sizes_get_raw): New
+ 	functions.
+ 	(object_sizes_get): Return suitable gimple variable for
+ 	object size.
+ 	(bundle_sizes): New function.
+ 	(object_sizes_set): Use it and handle dynamic object size
+ 	expressions.
+ 	(object_sizes_set_temp): New function.
+ 	(size_for_offset): Adjust for dynamic size expressions.
+ 	(emit_phi_nodes, propagate_unknowns, gimplify_size_expressions):
+ 	New functions.
+ 	(compute_builtin_object_size): Call gimplify_size_expressions
+ 	for OST_DYNAMIC.
+ 	(dynamic_object_size): New function.
+ 	(cond_expr_object_size): Use it.
+ 	(phi_dynamic_object_size): New function.
+ 	(collect_object_sizes_for): Call it for OST_DYNAMIC.  Adjust to
+ 	accommodate dynamic object sizes.
+ 
+ 2022-01-11  Siddhesh Poyarekar  <siddhesh@gotplt.org>
+ 	    Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/103961
+ 	* tree-object-size.c (plus_stmt_object_size): Always avoid
+ 	computing offset for -1 size.
+ 
+ 2022-01-11  Andrew MacLeod  <amacleod@redhat.com>
+ 
+ 	PR tree-optimization/103821
+ 	* range-op.cc (range_operator::fold_range): Only do precise ranges
+ 	when there are not too many subranges.
+ 
+ 2022-01-11  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	* ira-costs.c (ira_tune_allocno_costs): Fix missing rclass
+ 	definition in IRA_HARD_REGNO_ADD_COST_MULTIPLIER code.
+ 
+ 2022-01-11  Roger Sayle  <roger@nextmovesoftware.com>
+ 	    Richard Biener  <rguenther@suse.de>
+ 
+ 	* tree-ssa-math-opts.c (struct widen_mul_stats): Add a
+ 	highpart_mults_inserted field.
+ 	(convert_mult_to_highpart): New function to convert right shift
+ 	of a widening multiply into a MULT_HIGHPART_EXPR.
+ 	(math_opts_dom_walker::after_dom_children) [RSHIFT_EXPR]:
+ 	Call new convert_mult_to_highpart function.
+ 	(pass_optimize_widening_mul::execute): Add a statistics counter
+ 	for tracking "highpart multiplications inserted" events.
+ 
+ 2022-01-11  Xionghu Luo  <luoxhu@linux.ibm.com>
+ 
+ 	PR target/102239
+ 	* config/rs6000/rs6000-protos.h (rs6000_is_valid_rotate_dot_mask): New
+ 	declare.
+ 	* config/rs6000/rs6000.c (rs6000_is_valid_rotate_dot_mask): New
+ 	function.
+ 	* config/rs6000/rs6000.md (*branch_anddi3_dot): New.
+ 
+ 2022-01-11  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* gcc.c (driver_handle_option): State --sysroot as
+ 	validated.
+ 
+ 2022-01-11  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	* config/rs6000/rs6000.c (rs6000_disable_incompatible_switches): Remove
+ 	useless related to option -mno-power10.
+ 
+ 2022-01-11  Haochen Jiang  <haochen.jiang@intel.com>
+ 
+ 	PR target/53652
+ 	* config/i386/sse.md (*andnot<mode>3): Extend predicate of
+ 	operands[1] from register_operand to vector_operand.
+ 
+ 2022-01-10  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103861
+ 	* config/i386/i386-expand.c (ix86_expand_int_sse_cmp):
+ 	Handle V2QImode.
+ 	* config/i386/mmx.md (<sat_plusminus:insn><mode>3):
+ 	Use VI1_16_32 mode iterator.
+ 	(*eq<mode>3): Ditto.
+ 	(*gt<mode>3): Ditto.
+ 	(*xop_maskcmp<mode>3): Ditto.
+ 	(*xop_maskcmp_uns<mode>3): Ditto.
+ 	(vec_cmp<mode><mode>): Ditto.
+ 	(vec_cmpu<mode><mode>): Ditto.
+ 
+ 2022-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103948
+ 	* tree-vect-generic.c (expand_vector_condition): Return true if
+ 	all ones vector is returned for true, all zeros vector for false
+ 	and the target defines corresponding vec_cmp{,u}MN named RTX pattern.
+ 
+ 2022-01-10  Paul A. Clarke  <pc@us.ibm.com>
+ 
+ 	* config/rs6000/smmintrin.h (_mm_blendv_epi8): Use vec_blendv
+ 	when _ARCH_PWR10. Use signed types.
+ 	(_mm_blendv_ps): Use vec_blendv when _ARCH_PWR10.
+ 	(_mm_blendv_pd): Likewise.
+ 
+ 2022-01-10  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+ 
+ 	* tree-vectorizer.c (better_epilogue_loop_than_p): Round factors up for
+ 	epilogue costing.
+ 	* tree-vect-loop.c (vect_analyze_loop): Re-analyze all modes for
+ 	epilogues, unless we are guaranteed that we can't have partial vectors.
+ 	* genopinit.c: (partial_vectors_supported): Generate new function.
+ 
+ 2022-01-10  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/102024
+ 	* config/i386/i386.c (classify_argument): Add zero_width_bitfields
+ 	argument, when seeing DECL_FIELD_CXX_ZERO_WIDTH_BIT_FIELD bitfields,
+ 	always ignore them, when seeing other zero sized bitfields, either
+ 	set zero_width_bitfields to 1 and ignore it or if equal to 2 process
+ 	it.  Pass it to recursive calls.  Add wrapper
+ 	with old arguments and diagnose ABI differences for C structures
+ 	with zero width bitfields.  Formatting fixes.
+ 
+ 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98782
+ 	* ira-int.h (ira_soft_conflict): Declare.
+ 	* ira-color.c (max_soft_conflict_loop_depth): New constant.
+ 	(ira_soft_conflict): New function.
+ 	(spill_soft_conflicts): Likewise.
+ 	(assign_hard_reg): Use them to handle the case described by
+ 	the comment above ira_soft_conflict.
+ 	(improve_allocation): Likewise.
+ 	* ira.c (check_allocation): Allow allocnos with "soft" conflicts
+ 	to share the same register.
+ 
+ 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98782
+ 	* ira-int.h (ira_caller_save_cost): New function.
+ 	(ira_caller_save_loop_spill_p): Likewise.
+ 	* ira-build.c (ira_propagate_hard_reg_costs): Test whether it is
+ 	cheaper to spill a call-clobbered register throughout a loop rather
+ 	than spill it around each individual call.  If so, treat all
+ 	call-clobbered registers as conflicts and...
+ 	(propagate_allocno_info): ...do not propagate call information
+ 	from the child to the parent.
+ 	* ira-color.c (move_spill_restore): Update accordingly.
+ 	* ira-costs.c (ira_tune_allocno_costs): Use ira_caller_save_cost.
+ 
+ 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98782
+ 	* ira-int.h (ira_allocno::might_conflict_with_parent_p): New field.
+ 	(ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P): New macro.
+ 	(ira_single_region_allocno_p): New function.
+ 	(ira_total_conflict_hard_regs): Likewise.
+ 	* ira-build.c (ira_create_allocno): Initialize
+ 	ALLOCNO_MIGHT_CONFLICT_WITH_PARENT_P.
+ 	(ira_propagate_hard_reg_costs): New function.
+ 	(propagate_allocno_info): Use it.  Try to avoid propagating
+ 	hard register conflicts to parent allocnos if we can handle
+ 	the conflicts by spilling instead.  Limit the propagated
+ 	register costs to the cost of spilling throughout the child loop.
+ 	* ira-color.c (color_pass): Use ira_single_region_allocno_p to
+ 	test whether a child and parent allocno can share the same
+ 	register.
+ 	(move_spill_restore): Adjust for the new behavior of
+ 	propagate_allocno_info.
+ 
+ 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98782
+ 	* ira-int.h (ira_subloop_allocnos_can_differ_p): New function,
+ 	extracted from...
+ 	* ira-color.c (color_pass): ...here.
+ 
+ 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98782
+ 	* ira-color.c (color_pass): Add comments to describe the spill costs.
+ 	(move_spill_restore): Likewise.  Fix reversed calculation.
+ 
+ 2022-01-10  Richard Sandiford  <richard.sandiford@arm.com>
+ 
+ 	PR rtl-optimization/98782
+ 	* ira-int.h (ira_loop_border_costs): New class.
+ 	* ira-color.c (ira_loop_border_costs::ira_loop_border_costs):
+ 	New constructor.
+ 	(calculate_allocno_spill_cost): Use ira_loop_border_costs.
+ 	(color_pass): Likewise.
+ 	(move_spill_restore): Likewise.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR target/103465
+ 	* coretypes.h (unwind_info_type): Swap UI_SEH and UI_TARGET.
+ 
+ 2022-01-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/100359
+ 	* tree-ssa-loop-ivcanon.c (try_unroll_loop_completely):
+ 	Allow non-growing peeling with !allow_peel and UL_ALL.
+ 
+ 2022-01-08  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/i386/i386-expand.c (ix86_expand_vector_move): Add
+ 	special case for TImode to V1TImode moves, going via V2DImode.
+ 
+ 2022-01-08  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/89074
+ 	* match.pd ((ptr) (x p+ y) p+ z -> (ptr) (x p+ (y + z))): New GENERIC
+ 	simplification.
+ 
+ 2022-01-08  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi
+ 	(Special Functions for Debugging the Analyzer): Document
+ 	__analyzer_dump_escaped.
+ 
+ 2022-01-08  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* doc/analyzer.texi (Other Debugging Techniques): Document
+ 	region::is_named_decl_p.
+ 
+ 2022-01-07  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/102941
+ 	* config/arm/aarch-common.c (arm_md_asm_adjust):
+ 	Use a temp if !REG_P.
+ 
+ 2022-01-07  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/mmx.md (*move<V_32:mode>_internal): Add isa attribute.
+ 	(*movv2qi_internal): Remve sse2 requirement for alternatives 4,5.
+ 
+ 2022-01-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR rtl-optimization/103750
+ 	* fwprop.c (forward_propagate_into): Allow propagations from
+ 	inner loop to outer loop.
+ 
+ 2022-01-07  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.md (*cnot<mode>2): New define_insn.
+ 
+ 2022-01-07  Haochen Gui  <guihaoc@gcc.gnu.org>
+ 
+ 	* config/rs6000/rs6000.md (rs6000_mffscrni): Define.
+ 	(rs6000_set_fpscr_rn): Change the type of operand[0] from DI to SI.
+ 	Call gen_rs6000_mffscrni when operand[0] is a const_0_to_3_operand.
+ 
+ 2022-01-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	* config/i386/sse.md
+ 	(*<avx512>_eq<mode>3<mask_scalar_merge_name>_1): Extend to
+ 	UNSPEC_PCMP_UNSIGNED.
+ 
+ 2022-01-07  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/103753
+ 	* config/i386/i386-expand.c (ix86_expand_vector_set): Not use
+ 	gen_avx2_pblendph_1 when elt == 0.
+ 	* config/i386/sse.md (avx2_pblendph): Rename to ..
+ 	(avx2_pblend<ssemodesuffix>_1).. this, and extend to V16HI.
+ 	(*avx2_pblendw): Rename to ..
+ 	(*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF.
+ 	(avx2_pblendw): Rename to ..
+ 	(*avx2_pblend<ssemodesuffix>): .. this, and extend to V16HF.
+ 	(blendsuf): Removed.
+ 	(sse4_1_pblend<blendsuf>): Renamed to ..
+ 	(sse4_1_pblend<ssemodesuffix>): .. this.
+ 
+ 2022-01-06  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/103925
+ 	* config/i386/i386.c (ix86_output_indirect_function_return):
+ 	Generate INT3 after indirect jmp for -mharden-sls=indirect-jmp.
+ 
+ 2022-01-06  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR target/102952
+ 	* config/i386/i386-opts.h (harden_sls): Replace
+ 	harden_sls_indirect_branch with harden_sls_indirect_jmp.
+ 	* config/i386/i386.c (ix86_output_jmp_thunk_or_indirect):
+ 	Likewise.
+ 	(ix86_output_indirect_jmp): Likewise.
+ 	(ix86_output_call_insn): Likewise.
+ 	* config/i386/i386.opt: Replace indirect-branch with
+ 	indirect-jmp.  Replace harden_sls_indirect_branch with
+ 	harden_sls_indirect_jmp.
+ 	* doc/invoke.texi (-harden-sls=): Replace indirect-branch with
+ 	indirect-jmp.
+ 
+ 2022-01-06  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	* config/i386/i386.c (ix86_output_ssemov) <MODE_DI>:
+ 	Add %q modifier for operands in general registers.
+ 	<MODE_SI>: Add %q modifier for operands in general registers.
+ 	* config/i386/i386.md (*movhi_internal): Change type attribute of
+ 	xmm-gpr interunit alternatives 9,10 to ssemov and mode attribute
+ 	to SImode for non-avx512fp16 targets.
+ 	(*movhf_internal): Ditto for xmm-gpr interunit alternatives 6,8.
+ 	* config/i386/mmx.md (*movv2qi_internal):
+ 	Ditto for xmm-gpr interunit alternatives 8,9.
+ 
+ 2022-01-06  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c (riscv_implied_info): Add
+ 	vector extensions.
+ 	(riscv_ext_version_table): Add version info for vector extensions.
+ 	(riscv_ext_flag_table): Add option mask for vector extensions.
+ 	* config/riscv/riscv-opts.h (MASK_VECTOR_EEW_32): New.
+ 	(MASK_VECTOR_EEW_64): New.
+ 	(MASK_VECTOR_EEW_FP_32): New.
+ 	(MASK_VECTOR_EEW_FP_64): New.
+ 	(MASK_ZVL32B): New.
+ 	(MASK_ZVL64B): New.
+ 	(MASK_ZVL128B): New.
+ 	(MASK_ZVL256B): New.
+ 	(MASK_ZVL512B): New.
+ 	(MASK_ZVL1024B): New.
+ 	(MASK_ZVL2048B): New.
+ 	(MASK_ZVL4096B): New.
+ 	(MASK_ZVL8192B): New.
+ 	(MASK_ZVL16384B): New.
+ 	(MASK_ZVL32768B): New.
+ 	(MASK_ZVL65536B): New.
+ 	(TARGET_ZVL32B): New.
+ 	(TARGET_ZVL64B): New.
+ 	(TARGET_ZVL128B): New.
+ 	(TARGET_ZVL256B): New.
+ 	(TARGET_ZVL512B): New.
+ 	(TARGET_ZVL1024B): New.
+ 	(TARGET_ZVL2048B): New.
+ 	(TARGET_ZVL4096B): New.
+ 	(TARGET_ZVL8192B): New.
+ 	(TARGET_ZVL16384B): New.
+ 	(TARGET_ZVL32768B): New.
+ 	(TARGET_ZVL65536B): New.
+ 	* config/riscv/riscv.opt (Mask(VECTOR)): New.
+ 	(riscv_vector_eew_flags): New.
+ 	(riscv_zvl_flags): New.
+ 
+ 2022-01-06  Kito Cheng  <kito.cheng@sifive.com>
+ 
+ 	* common/config/riscv/riscv-common.c
+ 	(riscv_subset_list::parse_multiletter_ext): Allow ext. name has
+ 	digit.
+ 
+ 2022-01-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR tree-optimization/103899
+ 	* expr.c (expand_expr_real_1): Add a workaround for bogus uninit
+ 	warning by moving context variable to the only spot where it is used
+ 	and moving gcc_assert into if body.
+ 
+ 2022-01-06  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103908
+ 	* ifcvt.c (bb_valid_for_noce_process_p): Punt on bbs ending with
+ 	asm goto.
+ 
+ 2022-01-05  Bill Schmidt  <wschmidt@linux.ibm.com>
+ 
+ 	PR target/103622
+ 	* config/rs6000/rs6000-c.c (altivec_resolve_overloaded_builtin):
+ 	Skip over instances with undefined function types.
+ 
+ 2022-01-05  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR target/103910
+ 	* config/i386/i386.h (x86_mfence): Mark with GTY.
+ 
+ 2022-01-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103861
+ 	* config/i386/mmx.md (VI_16_32): New mode iterator.
+ 	(VI1_16_32): Ditto.
+ 	(mmxvecsize): Handle V2QI mode.
+ 	(<smaxmin:code><mode>3): Rename from <smaxmin:code>v4qi3.
+ 	Use VI1_16_32 mode iterator.
+ 	(<umaxmin:code><mode>3): Rename from <umaxmin:code>v4qi3.
+ 	Use VI1_16_32 mode iterator.
+ 	(abs<mode>2): Use VI_16_32 mode iterator.
+ 	(uavgv2qi3_ceil): New insn pattern.
+ 
+ 2022-01-05  Martin Sebor  <msebor@redhat.com>
+ 
+ 	* gimple-ssa-warn-access.cc (pass_waccess::maybe_warn_memmodel): Use
+ 	%qs to avoid -Wformat-diag.
+ 
+ 2022-01-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103915
+ 	* config/i386/mmx.md (one_cmplv2qi2): Change
+ 	alternatives 1,2 type from sselog to sselog1.
+ 
+ 2022-01-05  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103905
+ 	* config/i386/i386-expand.c (expand_vec_perm_pshufb): Fix number of
+ 	narrow mode remapped elements for !one_operand_p case.
+ 
+ 2022-01-05  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103816
+ 	* tree-vect-data-refs.c (vect_analyze_group_access_1): Also
+ 	check DR_GROUP_GAP compute for overflow and representability.
+ 
+ 2022-01-05  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR fortran/103691
+ 	* gimple-fold.c (fold_stmt_1): Don't call maybe_fold_reference
+ 	for DEBUG stmts with ADDR_EXPR gimple_debug_bind_get_value,
+ 	it can do unwanted rhs folding like &a[0] into &2.0 etc.
+ 
+ 2022-01-05  Kewen Lin  <linkw@linux.ibm.com>
+ 
+ 	PR ipa/102059
+ 	* config/rs6000/rs6000.c (TARGET_NEED_IPA_FN_TARGET_INFO): New macro.
+ 	(TARGET_UPDATE_IPA_FN_TARGET_INFO): Likewise.
+ 	(rs6000_need_ipa_fn_target_info): New function.
+ 	(rs6000_update_ipa_fn_target_info): Likewise.
+ 	(rs6000_can_inline_p): Adjust for ipa function summary target info.
+ 	* config/rs6000/rs6000.h (RS6000_FN_TARGET_INFO_HTM): New macro.
+ 	* ipa-fnsummary.c (ipa_dump_fn_summary): Adjust for ipa function
+ 	summary target info.
+ 	(analyze_function_body): Adjust for ipa function summary target info
+ 	and call hook rs6000_need_ipa_fn_target_info and
+ 	rs6000_update_ipa_fn_target_info.
+ 	(ipa_merge_fn_summary_after_inlining): Adjust for ipa function summary
+ 	target info.
+ 	(inline_read_section): Likewise.
+ 	(ipa_fn_summary_write): Likewise.
+ 	* ipa-fnsummary.h (ipa_fn_summary::target_info): New member.
+ 	* doc/tm.texi: Regenerate.
+ 	* doc/tm.texi.in (TARGET_UPDATE_IPA_FN_TARGET_INFO): Document new hook.
+ 	(TARGET_NEED_IPA_FN_TARGET_INFO): Likewise.
+ 	* target.def (update_ipa_fn_target_info): New hook.
+ 	(need_ipa_fn_target_info): Likewise.
+ 	* targhooks.c (default_need_ipa_fn_target_info): New function.
+ 	(default_update_ipa_fn_target_info): Likewise.
+ 	* targhooks.h (default_update_ipa_fn_target_info): New declare.
+ 	(default_need_ipa_fn_target_info): Likewise.
+ 
+ 2022-01-04  Martin Sebor  <msebor@redhat.com>
+ 
+ 	PR middle-end/99612
+ 	* builtins.c (get_memmodel): Move warning code to
+ 	gimple-ssa-warn-access.cc.
+ 	(expand_builtin_atomic_compare_exchange): Same.
+ 	(expand_ifn_atomic_compare_exchange): Same.
+ 	(expand_builtin_atomic_load): Same.
+ 	(expand_builtin_atomic_store): Same.
+ 	(expand_builtin_atomic_clear): Same.
+ 	* doc/extend.texi (__atomic_exchange_n): Update valid memory
+ 	models.
+ 	* gimple-ssa-warn-access.cc (memmodel_to_uhwi): New function.
+ 	(struct memmodel_pair): New struct.
+ 	(memmodel_name): New function.
+ 	(pass_waccess::maybe_warn_memmodel): New function.
+ 	(pass_waccess::check_atomic_memmodel): New function.
+ 	(pass_waccess::check_atomic_builtin): Handle memory model.
+ 	* input.c (expansion_point_location_if_in_system_header): Return
+ 	original location if expansion location is in a system header.
+ 
+ 2022-01-04  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103861
+ 	* config/i386/mmx.md (one_cmplv2qi3): New insn pattern.
+ 	(one_cmplv2qi3 splitters): New post-reload splitters.
+ 	(*andnotv2qi3): New insn pattern.
+ 	(andnotv2qi3 splitters): New post-reload splitters.
+ 	(<any_logic:code>v2qi3): New insn pattern.
+ 	(<any_logic:insn>v2qi3 splitters): New post-reload splitters.
+ 
+ 2022-01-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103800
+ 	* tree-vect-loop.c (vectorizable_phi): Remove assert and
+ 	expand comment.
+ 
+ 2022-01-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103690
+ 	* tree-pass.h (tail_merge_optimize): Adjust.
+ 	* tree-ssa-tail-merge.c (tail_merge_optimize): Pass in whether
+ 	to re-split critical edges, move CFG cleanup ...
+ 	* tree-ssa-pre.c (pass_pre::execute): ... here, before
+ 	simple_dce_from_worklist and delay freeing inserted_exprs from
+ 	...
+ 	(fini_pre): .. here.
+ 
+ 2022-01-04  Roger Sayle  <roger@nextmovesoftware.com>
+ 
+ 	* config/nvptx/nvptx.h (STORE_FLAG_VALUE): Change to 1.
+ 	* config/nvptx/nvptx.md (movbi): Use P1 constraint for true.
+ 	(setcc_from_bi): Remove SImode specific pattern.
+ 	(setcc<mode>_from_bi): Provide more general HSDIM pattern.
+ 	(extendbi<mode>2, zeroextendbi<mode>2): Provide instructions
+ 	for sign- and zero-extending BImode predicates to integers.
+ 	(setcc_int<mode>): Remove previous (-1-based) instructions.
+ 	(cstorebi4): Remove BImode to SImode specific expander.
+ 	(cstore<mode>4): Fix indentation.  Expand using setccsi_from_bi.
+ 	(cstore<mode>4): For both integer and floating point modes.
+ 
+ 2022-01-04  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* gcc.c (driver_handle_option): do_save --sysroot.
+ 
+ 2022-01-04  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR tree-optimization/103864
+ 	PR tree-optimization/103544
+ 	* tree-vect-slp.c (vect_analyze_slp_instance): Exclude
+ 	reductions wrapped in conversions from SLP handling.
+ 	(vect_analyze_slp): Revert PR103544 change.
+ 
+ 2022-01-04  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR rtl-optimization/103860
+ 	* shrink-wrap.c (try_shrink_wrapping): Don't call can_get_prologue
+ 	uselessly for blocks for which it has been called already.
+ 
+ 2022-01-04  Cui,Lili  <lili.cui@intel.com>
+ 
+ 	* common/config/i386/cpuinfo.h (get_intel_cpu): Add new model values
+ 	to Alderlake and Rocketlake.
+ 
+ 2022-01-04  Chung-Lin Tang  <cltang@codesourcery.com>
+ 
+ 	PR middle-end/103643
+ 	* gimplify.c (gimplify_omp_affinity): Adjust gimplify_expr of entire
+ 	OMP_CLAUSE_DECL to use 'is_gimple_lvalue, fb_lvalue'
+ 
+ 2022-01-04  liuhongt  <hongtao.liu@intel.com>
+ 
+ 	PR target/103895
+ 	* config/i386/sse.md (*bit_and_float_vector_all_ones):
+ 	Force_reg operand 1 to avoid ICE.
+ 
+ 2022-01-04  Jason Merrill  <jason@redhat.com>
+ 
+ 	* tree-pretty-print.c (do_niy): Add spc parameter.
+ 	(NIY): Pass it.
+ 	(print_call_name): Add spc local variable.
+ 
+ 2022-01-03  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103894
+ 	* config/i386/mmx.md (mov<V_32:mode>): Remove TARGET_SSE2 constraint.
+ 	(mov<V_32:mode>_internal): Ditto.
+ 	(*push<V_32:mode>_rex64): Ditto.
+ 	(movmisalign<V_32:mode>): Ditto.
+ 	(*push<V_32:mode>_rex64 splitter): Enable for
+ 	TARGET_64BIT && TARGET_SSE.
+ 	(*push<V_32:mode>2): Remove insn pattern.
+ 
+ 2022-01-03  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR c/33193
+ 	* doc/extend.texi: Extend the documentation about Complex
+ 	types for casting and also rewrite the __real__/__imag__
+ 	expression portion to use tables.
+ 	Move __builtin_complex to the Complex type section.
+ 
+ 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR target/98737
+ 	* internal-fn.def (ATOMIC_ADD_FETCH_CMP_0, ATOMIC_SUB_FETCH_CMP_0,
+ 	ATOMIC_AND_FETCH_CMP_0, ATOMIC_OR_FETCH_CMP_0, ATOMIC_XOR_FETCH_CMP_0):
+ 	New internal fns.
+ 	* internal-fn.h (ATOMIC_OP_FETCH_CMP_0_EQ, ATOMIC_OP_FETCH_CMP_0_NE,
+ 	ATOMIC_OP_FETCH_CMP_0_LT, ATOMIC_OP_FETCH_CMP_0_LE,
+ 	ATOMIC_OP_FETCH_CMP_0_GT, ATOMIC_OP_FETCH_CMP_0_GE): New enumerators.
+ 	* internal-fn.c (expand_ATOMIC_ADD_FETCH_CMP_0,
+ 	expand_ATOMIC_SUB_FETCH_CMP_0, expand_ATOMIC_AND_FETCH_CMP_0,
+ 	expand_ATOMIC_OR_FETCH_CMP_0, expand_ATOMIC_XOR_FETCH_CMP_0): New
+ 	functions.
+ 	* optabs.def (atomic_add_fetch_cmp_0_optab,
+ 	atomic_sub_fetch_cmp_0_optab, atomic_and_fetch_cmp_0_optab,
+ 	atomic_or_fetch_cmp_0_optab, atomic_xor_fetch_cmp_0_optab): New
+ 	direct optabs.
+ 	* builtins.h (expand_ifn_atomic_op_fetch_cmp_0): Declare.
+ 	* builtins.c (expand_ifn_atomic_op_fetch_cmp_0): New function.
+ 	* tree-ssa-ccp.c: Include internal-fn.h.
+ 	(optimize_atomic_bit_test_and): Add . before internal fn call
+ 	in function comment.  Change return type from void to bool and
+ 	return true only if successfully replaced.
+ 	(optimize_atomic_op_fetch_cmp_0): New function.
+ 	(pass_fold_builtins::execute): Use optimize_atomic_op_fetch_cmp_0
+ 	for BUILT_IN_ATOMIC_{ADD,SUB,AND,OR,XOR}_FETCH_{1,2,4,8,16} and
+ 	BUILT_IN_SYNC_{ADD,SUB,AND,OR,XOR}_AND_FETCH_{1,2,4,8,16},
+ 	for *XOR* ones only if optimize_atomic_bit_test_and failed.
+ 	* config/i386/sync.md (atomic_<plusminus_mnemonic>_fetch_cmp_0<mode>,
+ 	atomic_<logic>_fetch_cmp_0<mode>): New define_expand patterns.
+ 	(atomic_add_fetch_cmp_0<mode>_1, atomic_sub_fetch_cmp_0<mode>_1,
+ 	atomic_<logic>_fetch_cmp_0<mode>_1): New define_insn patterns.
+ 	* doc/md.texi (atomic_add_fetch_cmp_0<mode>,
+ 	atomic_sub_fetch_cmp_0<mode>, atomic_and_fetch_cmp_0<mode>,
+ 	atomic_or_fetch_cmp_0<mode>, atomic_xor_fetch_cmp_0<mode>): Document
+ 	new named patterns.
+ 
+ 2022-01-03  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR middle-end/103851
+ 	* tree-cfg.c (move_sese_region_to_fn): Always release SSA names.
+ 
+ 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/94716
+ 	* symtab.c: Include fold-const.h.
+ 	(symtab_node::equal_address_to): If folding_initializer is true,
+ 	handle it like memory_accessed.  Simplify.
+ 
+ 2022-01-03  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/extend.texi: Use ; for function declarations.
+ 
+ 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	PR c++/103600
+ 	* symtab.c (symtab_node::equal_address_to): Return 0 if one of
+ 	VAR_DECLs has "non overlapping" attribute and rs1 != rs2.
+ 
+ 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gcc.c (process_command): Update copyright notice dates.
+ 	* gcov-dump.c (print_version): Ditto.
+ 	* gcov.c (print_version): Ditto.
+ 	* gcov-tool.c (print_version): Ditto.
+ 	* gengtype.c (create_file): Ditto.
+ 	* doc/cpp.texi: Bump @copying's copyright year.
+ 	* doc/cppinternals.texi: Ditto.
+ 	* doc/gcc.texi: Ditto.
+ 	* doc/gccint.texi: Ditto.
+ 	* doc/gcov.texi: Ditto.
+ 	* doc/install.texi: Ditto.
+ 	* doc/invoke.texi: Ditto.
+ 
+ 2022-01-02  Uroš Bizjak  <ubizjak@gmail.com>
+ 
+ 	PR target/103861
+ 	* config/i386/i386.h (VALID_SSE2_REG_MODE): Add V2QImode.
+ 	(VALID_INT_MODE_P): Ditto.
+ 	* config/i386/i386.c (ix86_secondary_reload): Handle
+ 	V2QImode reloads from SSE register to memory.
+ 	(vector_mode_supported_p): Always return true for V2QImode.
+ 	* config/i386/i386.md (*subqi_ext<mode>_2): New insn pattern.
+ 	(*negqi_ext<mode>_2): Ditto.
+ 	* config/i386/mmx.md (movv2qi): New expander.
+ 	(movmisalignv2qi): Ditto.
+ 	(*movv2qi_internal): New insn pattern.
+ 	(*pushv2qi2): Ditto.
+ 	(negv2qi2 and splitters): Ditto.
+ 	(<plusminus:insn>v2qi3 and splitters): Ditto.
+ 
+ 2022-01-02  John David Anglin  <danglin@gcc.gnu.org>
+ 
+ 	* config/pa/pa.md (atomic_storeq): Use optab_libfunc to access
+ 	sync_lock_test_and_set libfunc. Call convert_memory_address to
+ 	convert memory address to Pmode.
+ 	(atomic_storehi, atomic_storesi, atomic_storedi): Likewise.
+ 
+ 
+ Copyright (C) 2022 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-12.2.0/gcc/DATESTAMP gcc-13.1.0/gcc/DATESTAMP
*** gcc-12.2.0/gcc/DATESTAMP	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/DATESTAMP	Wed Apr 26 07:09:39 2023
***************
*** 1 ****
! 20220819
--- 1 ----
! 20230426
diff -Nrcpad gcc-12.2.0/gcc/LANGUAGES gcc-13.1.0/gcc/LANGUAGES
*** gcc-12.2.0/gcc/LANGUAGES	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/LANGUAGES	Wed Apr 26 07:09:39 2023
*************** Feb 1, 1998:
*** 57,63 ****
      DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
  
  
! Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 57,63 ----
      DEFTREECODE (CLASS_METHOD_DECL, "class_method_decl", 'd', 0)
  
  
! Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/Makefile.in gcc-13.1.0/gcc/Makefile.in
*** gcc-12.2.0/gcc/Makefile.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/Makefile.in	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  # Makefile for GNU Compiler Collection
  # Run 'configure' to generate Makefile from Makefile.in
  
! # Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,7 ----
  # Makefile for GNU Compiler Collection
  # Run 'configure' to generate Makefile from Makefile.in
  
! # Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** endif
*** 146,153 ****
--- 146,156 ----
  # CFLAGS is for the user to override to, e.g., do a cross build with -O2.
  # TCFLAGS is used for compilations with the GCC just built.
  # T_CFLAGS is used for all compilations and is overridden by t-* files.
+ # TFLAGS is also for the user to override, passed down from the top-level
+ # Makefile.  It is used for all compilations.
  T_CFLAGS =
  TCFLAGS =
+ TFLAGS =
  CFLAGS = @CFLAGS@
  CXXFLAGS = @CXXFLAGS@
  LDFLAGS = @LDFLAGS@
*************** COMPILER += $(CET_HOST_FLAGS)
*** 269,274 ****
--- 272,278 ----
  
  NO_PIE_CFLAGS = @NO_PIE_CFLAGS@
  NO_PIE_FLAG = @NO_PIE_FLAG@
+ DO_LINK_MUTEX = @DO_LINK_MUTEX@
  
  # We don't want to compile the compilers with -fPIE, it make PCH fail.
  COMPILER += $(NO_PIE_CFLAGS)
*************** T_STDINT_GCC_H = $(srcdir)/ginclude/stdi
*** 457,463 ****
  # The GCC to use for compiling crt*.o.
  # Usually the one we just built.
  # Don't use this as a dependency--use $(GCC_PASSES).
! GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -L$(objdir)/../ld
  
  # Set if the compiler was configured with --with-build-sysroot.
  SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
--- 461,467 ----
  # The GCC to use for compiling crt*.o.
  # Usually the one we just built.
  # Don't use this as a dependency--use $(GCC_PASSES).
! GCC_FOR_TARGET = $(STAGE_CC_WRAPPER) ./xgcc -B./ -B$(build_tooldir)/bin/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -L$(objdir)/../ld $(TFLAGS)
  
  # Set if the compiler was configured with --with-build-sysroot.
  SYSROOT_CFLAGS_FOR_TARGET = @SYSROOT_CFLAGS_FOR_TARGET@
*************** LINKER_PLUGIN_API_H = $(srcdir)/../inclu
*** 528,534 ****
  # Default native SYSTEM_HEADER_DIR, to be overridden by targets.
  NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
  # Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
! CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
  
  # autoconf sets SYSTEM_HEADER_DIR to one of the above.
  # Purge it of unnecessary internal relative paths
--- 532,542 ----
  # Default native SYSTEM_HEADER_DIR, to be overridden by targets.
  NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@
  # Default cross SYSTEM_HEADER_DIR, to be overridden by targets.
! ifeq (@includedir@,$(prefix)/include)
!   CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@
! else
!   CROSS_SYSTEM_HEADER_DIR = @includedir@
! endif
  
  # autoconf sets SYSTEM_HEADER_DIR to one of the above.
  # Purge it of unnecessary internal relative paths
*************** htmldir = @htmldir@
*** 725,730 ****
--- 733,739 ----
  USE_NLS = @USE_NLS@
  
  # Internationalization library.
+ INCINTL = @INCINTL@
  LIBINTL = @LIBINTL@
  LIBINTL_DEP = @LIBINTL_DEP@
  
*************** INSTALL_HEADERS=install-headers install-
*** 778,783 ****
--- 787,795 ----
  # Control whether Info documentation is built and installed.
  BUILD_INFO = @BUILD_INFO@
  
+ # Control flags for @contents placement in HTML output
+ MAKEINFO_TOC_INLINE_FLAG = @MAKEINFO_TOC_INLINE_FLAG@
+ 
  # Control whether manpages generated by texi2pod.pl can be rebuilt.
  GENERATED_MANPAGES = @GENERATED_MANPAGES@
  
*************** BUILD_LINKERFLAGS = $(BUILD_CXXFLAGS)
*** 816,822 ****
  # Native linker and preprocessor flags.  For x-fragment overrides.
  BUILD_LDFLAGS=@BUILD_LDFLAGS@
  BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
! 		-I$(srcdir)/../include @INCINTL@ $(CPPINC) $(CPPFLAGS)
  
  # Actual name to use when installing a native compiler.
  GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
--- 828,834 ----
  # Native linker and preprocessor flags.  For x-fragment overrides.
  BUILD_LDFLAGS=@BUILD_LDFLAGS@
  BUILD_CPPFLAGS= -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
! 		-I$(srcdir)/../include $(INCINTL) $(CPPINC) $(CPPFLAGS)
  
  # Actual name to use when installing a native compiler.
  GCC_INSTALL_NAME := $(shell echo gcc|sed '$(program_transform_name)')
*************** TARGET_DEF_H = target-def.h target-hooks
*** 933,939 ****
  C_TARGET_DEF_H = c-family/c-target-def.h c-family/c-target-hooks-def.h \
    $(TREE_H) $(C_COMMON_H) $(HOOKS_H) common/common-targhooks.h
  CORETYPES_H = coretypes.h insn-modes.h signop.h wide-int.h wide-int-print.h \
!   insn-modes-inline.h $(MACHMODE_H) double-int.h
  RTL_BASE_H = $(CORETYPES_H) rtl.h rtl.def reg-notes.def \
    insn-notes.def $(INPUT_H) $(REAL_H) statistics.h $(VEC_H) \
    $(FIXED_VALUE_H) alias.h $(HASHTAB_H)
--- 945,952 ----
  C_TARGET_DEF_H = c-family/c-target-def.h c-family/c-target-hooks-def.h \
    $(TREE_H) $(C_COMMON_H) $(HOOKS_H) common/common-targhooks.h
  CORETYPES_H = coretypes.h insn-modes.h signop.h wide-int.h wide-int-print.h \
!   insn-modes-inline.h $(MACHMODE_H) double-int.h align.h poly-int.h \
!   poly-int-types.h
  RTL_BASE_H = $(CORETYPES_H) rtl.h rtl.def reg-notes.def \
    insn-notes.def $(INPUT_H) $(REAL_H) statistics.h $(VEC_H) \
    $(FIXED_VALUE_H) alias.h $(HASHTAB_H)
*************** C_COMMON_H = c-family/c-common.h c-famil
*** 986,992 ****
  C_PRAGMA_H = c-family/c-pragma.h $(CPPLIB_H)
  C_TREE_H = c/c-tree.h $(C_COMMON_H) $(DIAGNOSTIC_H)
  SYSTEM_H = system.h hwint.h $(srcdir)/../include/libiberty.h \
! 	$(srcdir)/../include/safe-ctype.h $(srcdir)/../include/filenames.h
  PREDICT_H = predict.h predict.def
  CPPLIB_H = $(srcdir)/../libcpp/include/line-map.h \
  	$(srcdir)/../libcpp/include/cpplib.h
--- 999,1006 ----
  C_PRAGMA_H = c-family/c-pragma.h $(CPPLIB_H)
  C_TREE_H = c/c-tree.h $(C_COMMON_H) $(DIAGNOSTIC_H)
  SYSTEM_H = system.h hwint.h $(srcdir)/../include/libiberty.h \
! 	$(srcdir)/../include/safe-ctype.h $(srcdir)/../include/filenames.h \
! 	$(HASHTAB_H)
  PREDICT_H = predict.h predict.def
  CPPLIB_H = $(srcdir)/../libcpp/include/line-map.h \
  	$(srcdir)/../libcpp/include/cpplib.h
*************** BUILD_ERRORS = build/errors.o
*** 1121,1127 ****
  # currently being compiled, in both source trees, to be examined as well.
  # libintl.h will be found in ../intl if we are using the included libintl.
  INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
! 	   -I$(srcdir)/../include @INCINTL@ \
  	   $(CPPINC) $(CODYINC) $(GMPINC) $(DECNUMINC) $(BACKTRACEINC) \
  	   $(ISLINC)
  
--- 1135,1141 ----
  # currently being compiled, in both source trees, to be examined as well.
  # libintl.h will be found in ../intl if we are using the included libintl.
  INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
! 	   -I$(srcdir)/../include $(INCINTL) \
  	   $(CPPINC) $(CODYINC) $(GMPINC) $(DECNUMINC) $(BACKTRACEINC) \
  	   $(ISLINC)
  
*************** FLAGS_TO_PASS = \
*** 1193,1198 ****
--- 1207,1213 ----
  	"MAKEINFOFLAGS=$(MAKEINFOFLAGS)" \
  	"MAKEOVERRIDES=" \
  	"SHELL=$(SHELL)" \
+ 	"TFLAGS=$(TFLAGS)" \
  	"exeext=$(exeext)" \
  	"build_exeext=$(build_exeext)" \
  	"objext=$(objext)" \
*************** C_COMMON_OBJS = c-family/c-common.o c-fa
*** 1245,1256 ****
--- 1260,1276 ----
  ANALYZER_OBJS = \
  	analyzer/analysis-plan.o \
  	analyzer/analyzer.o \
+ 	analyzer/analyzer-language.o \
  	analyzer/analyzer-logging.o \
  	analyzer/analyzer-pass.o \
  	analyzer/analyzer-selftests.o \
  	analyzer/bar-chart.o \
+ 	analyzer/bounds-checking.o \
+ 	analyzer/call-details.o \
  	analyzer/call-info.o \
  	analyzer/call-string.o \
+ 	analyzer/call-summary.o \
+ 	analyzer/checker-event.o \
  	analyzer/checker-path.o \
  	analyzer/complexity.o \
  	analyzer/constraint-manager.o \
*************** ANALYZER_OBJS = \
*** 1258,1274 ****
  	analyzer/engine.o \
  	analyzer/feasible-graph.o \
  	analyzer/function-set.o \
  	analyzer/pending-diagnostic.o \
  	analyzer/program-point.o \
  	analyzer/program-state.o \
  	analyzer/region.o \
  	analyzer/region-model.o \
  	analyzer/region-model-asm.o \
- 	analyzer/region-model-impl-calls.o \
  	analyzer/region-model-manager.o \
  	analyzer/region-model-reachability.o \
  	analyzer/sm.o \
  	analyzer/sm-file.o \
  	analyzer/sm-malloc.o \
  	analyzer/sm-pattern-test.o \
  	analyzer/sm-sensitive.o \
--- 1278,1299 ----
  	analyzer/engine.o \
  	analyzer/feasible-graph.o \
  	analyzer/function-set.o \
+ 	analyzer/infinite-recursion.o \
+ 	analyzer/kf.o \
+ 	analyzer/kf-analyzer.o \
+ 	analyzer/kf-lang-cp.o \
+ 	analyzer/known-function-manager.o \
  	analyzer/pending-diagnostic.o \
  	analyzer/program-point.o \
  	analyzer/program-state.o \
  	analyzer/region.o \
  	analyzer/region-model.o \
  	analyzer/region-model-asm.o \
  	analyzer/region-model-manager.o \
  	analyzer/region-model-reachability.o \
  	analyzer/sm.o \
  	analyzer/sm-file.o \
+ 	analyzer/sm-fd.o \
  	analyzer/sm-malloc.o \
  	analyzer/sm-pattern-test.o \
  	analyzer/sm-sensitive.o \
*************** ANALYZER_OBJS = \
*** 1278,1284 ****
  	analyzer/store.o \
  	analyzer/supergraph.o \
  	analyzer/svalue.o \
! 	analyzer/trimmed-graph.o
  
  # Language-independent object files.
  # We put the *-match.o and insn-*.o files first so that a parallel make
--- 1303,1310 ----
  	analyzer/store.o \
  	analyzer/supergraph.o \
  	analyzer/svalue.o \
! 	analyzer/trimmed-graph.o \
! 	analyzer/varargs.o
  
  # Language-independent object files.
  # We put the *-match.o and insn-*.o files first so that a parallel make
*************** OBJS = \
*** 1347,1353 ****
  	data-streamer.o \
  	data-streamer-in.o \
  	data-streamer-out.o \
- 	dbxout.o \
  	dbgcnt.o \
  	dce.o \
  	ddg.o \
--- 1373,1378 ----
*************** OBJS = \
*** 1409,1418 ****
  	gimple-range-edge.o \
  	gimple-range-fold.o \
  	gimple-range-gori.o \
  	gimple-range-trace.o \
  	gimple-ssa-backprop.o \
- 	gimple-ssa-evrp.o \
- 	gimple-ssa-evrp-analyze.o \
  	gimple-ssa-isolate-paths.o \
  	gimple-ssa-nonnull-compare.o \
  	gimple-ssa-split-paths.o \
--- 1434,1443 ----
  	gimple-range-edge.o \
  	gimple-range-fold.o \
  	gimple-range-gori.o \
+ 	gimple-range-infer.o \
+ 	gimple-range-op.o \
  	gimple-range-trace.o \
  	gimple-ssa-backprop.o \
  	gimple-ssa-isolate-paths.o \
  	gimple-ssa-nonnull-compare.o \
  	gimple-ssa-split-paths.o \
*************** OBJS = \
*** 1543,1548 ****
--- 1568,1574 ----
  	profile-count.o \
  	range.o \
  	range-op.o \
+ 	range-op-float.o \
  	read-md.o \
  	read-rtl.o \
  	read-rtl-function.o \
*************** OBJS = \
*** 1615,1620 ****
--- 1641,1647 ----
  	tree-data-ref.o \
  	tree-dfa.o \
  	tree-diagnostic.o \
+ 	tree-diagnostic-client-data-hooks.o \
  	tree-diagnostic-path.o \
  	tree-dump.o \
  	tree-eh.o \
*************** OBJS = \
*** 1623,1628 ****
--- 1650,1656 ----
  	tree-inline.o \
  	tree-into-ssa.o \
  	tree-iterator.o \
+ 	tree-logical-location.o \
  	tree-loop-distribution.o \
  	tree-nested.o \
  	tree-nrv.o \
*************** OBJS = \
*** 1703,1709 ****
  	value-pointer-equiv.o \
  	value-query.o \
  	value-range.o \
! 	value-range-equiv.o \
  	value-relation.o \
  	value-prof.o \
  	var-tracking.o \
--- 1731,1738 ----
  	value-pointer-equiv.o \
  	value-query.o \
  	value-range.o \
! 	value-range-pretty-print.o \
! 	value-range-storage.o \
  	value-relation.o \
  	value-prof.o \
  	var-tracking.o \
*************** OBJS = \
*** 1717,1723 ****
  	web.o \
  	wide-int.o \
  	wide-int-print.o \
- 	xcoffout.o \
  	$(out_object_file) \
  	$(ANALYZER_OBJS) \
  	$(EXTRA_OBJS) \
--- 1746,1751 ----
*************** OBJS = \
*** 1726,1734 ****
  # Objects in libcommon.a, potentially used by all host binaries and with
  # no target dependencies.
  OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
! 	diagnostic-show-locus.o diagnostic-format-json.o json.o \
  	edit-context.o \
  	pretty-print.o intl.o \
  	sbitmap.o \
  	vec.o input.o hash-table.o ggc-none.o memory-block.o \
  	selftest.o selftest-diagnostic.o sort.o
--- 1754,1765 ----
  # Objects in libcommon.a, potentially used by all host binaries and with
  # no target dependencies.
  OBJS-libcommon = diagnostic-spec.o diagnostic.o diagnostic-color.o \
! 	diagnostic-format-json.o \
! 	diagnostic-format-sarif.o \
! 	diagnostic-show-locus.o \
  	edit-context.o \
  	pretty-print.o intl.o \
+ 	json.o \
  	sbitmap.o \
  	vec.o input.o hash-table.o ggc-none.o memory-block.o \
  	selftest.o selftest-diagnostic.o sort.o
*************** s-bversion: BASE-VER
*** 2366,2371 ****
--- 2397,2403 ----
  	$(STAMP) s-bversion
  
  CFLAGS-toplev.o += -DTARGET_NAME=\"$(target_noncanonical)\"
+ CFLAGS-tree-diagnostic-client-data-hooks.o += -DTARGET_NAME=\"$(target_noncanonical)\"
  CFLAGS-optinfo-emit-json.o += -DTARGET_NAME=\"$(target_noncanonical)\" $(ZLIBINC)
  CFLAGS-analyzer/engine.o += $(ZLIBINC)
  
*************** s-match: build/genmatch$(build_exeext) $
*** 2647,2652 ****
--- 2679,2685 ----
  
  GTFILES = $(CPPLIB_H) $(srcdir)/input.h $(srcdir)/coretypes.h \
    $(host_xm_file_list) \
+   $(OPTIONS_H_EXTRA) \
    $(tm_file_list) $(HASHTAB_H) $(SPLAY_TREE_H) $(srcdir)/bitmap.h \
    $(srcdir)/wide-int.h $(srcdir)/alias.h \
    $(srcdir)/coverage.cc  $(srcdir)/rtl.h \
*************** GTFILES = $(CPPLIB_H) $(srcdir)/input.h
*** 2662,2668 ****
    $(srcdir)/reload.h $(srcdir)/caller-save.cc $(srcdir)/symtab.cc \
    $(srcdir)/alias.cc $(srcdir)/bitmap.cc $(srcdir)/cselib.cc $(srcdir)/cgraph.cc \
    $(srcdir)/ipa-prop.cc $(srcdir)/ipa-cp.cc $(srcdir)/ipa-utils.h \
!   $(srcdir)/ipa-param-manipulation.h $(srcdir)/ipa-sra.cc $(srcdir)/dbxout.cc \
    $(srcdir)/ipa-modref.h $(srcdir)/ipa-modref.cc \
    $(srcdir)/ipa-modref-tree.h \
    $(srcdir)/signop.h \
--- 2695,2701 ----
    $(srcdir)/reload.h $(srcdir)/caller-save.cc $(srcdir)/symtab.cc \
    $(srcdir)/alias.cc $(srcdir)/bitmap.cc $(srcdir)/cselib.cc $(srcdir)/cgraph.cc \
    $(srcdir)/ipa-prop.cc $(srcdir)/ipa-cp.cc $(srcdir)/ipa-utils.h \
!   $(srcdir)/ipa-param-manipulation.h $(srcdir)/ipa-sra.cc \
    $(srcdir)/ipa-modref.h $(srcdir)/ipa-modref.cc \
    $(srcdir)/ipa-modref-tree.h \
    $(srcdir)/signop.h \
*************** GTFILES = $(CPPLIB_H) $(srcdir)/input.h
*** 2708,2713 ****
--- 2741,2747 ----
    $(srcdir)/tree-ssanames.h \
    $(srcdir)/tree-vrp.h \
    $(srcdir)/value-range.h \
+   $(srcdir)/value-range-storage.h \
    $(srcdir)/ipa-prop.h \
    $(srcdir)/trans-mem.cc \
    $(srcdir)/lto-streamer.h \
*************** GTFILES = $(CPPLIB_H) $(srcdir)/input.h
*** 2724,2729 ****
--- 2758,2764 ----
    $(srcdir)/internal-fn.h \
    $(srcdir)/calls.cc \
    $(srcdir)/omp-general.h \
+   $(srcdir)/analyzer/analyzer-language.cc \
    @all_gtfiles@
  
  # Compute the list of GT header files from the corresponding C sources,
*************** stmp-int-hdrs: $(STMP_FIXINC) $(T_GLIMIT
*** 3151,3174 ****
  	set -e; for ml in `cat fixinc_list`; do \
  	  sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
  	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
! 	  fix_dir=include-fixed$${multi_dir}; \
  	  if $(LIMITS_H_TEST) ; then \
  	    cat $(srcdir)/limitx.h $(T_GLIMITS_H) $(srcdir)/limity.h > tmp-xlimits.h; \
  	  else \
  	    cat $(T_GLIMITS_H) > tmp-xlimits.h; \
  	  fi; \
! 	  $(mkinstalldirs) $${fix_dir}; \
! 	  chmod a+rx $${fix_dir} || true; \
  	  $(SHELL) $(srcdir)/../move-if-change \
  	    tmp-xlimits.h  tmp-limits.h; \
! 	  rm -f $${fix_dir}/limits.h; \
! 	  cp -p tmp-limits.h $${fix_dir}/limits.h; \
! 	  chmod a+r $${fix_dir}/limits.h; \
  	done
  # Install the README
! 	rm -f include-fixed/README
! 	cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README
! 	chmod a+r include-fixed/README
  	$(STAMP) $@
  
  .PHONY: install-gcc-tooldir
--- 3186,3212 ----
  	set -e; for ml in `cat fixinc_list`; do \
  	  sysroot_headers_suffix=`echo $${ml} | sed -e 's/;.*$$//'`; \
  	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
! 	  include_dir=include$${multi_dir}; \
  	  if $(LIMITS_H_TEST) ; then \
  	    cat $(srcdir)/limitx.h $(T_GLIMITS_H) $(srcdir)/limity.h > tmp-xlimits.h; \
  	  else \
  	    cat $(T_GLIMITS_H) > tmp-xlimits.h; \
  	  fi; \
! 	  $(mkinstalldirs) $${include_dir}; \
! 	  chmod a+rx $${include_dir} || true; \
  	  $(SHELL) $(srcdir)/../move-if-change \
  	    tmp-xlimits.h  tmp-limits.h; \
! 	  rm -f $${include_dir}/limits.h; \
! 	  cp -p tmp-limits.h $${include_dir}/limits.h; \
! 	  chmod a+r $${include_dir}/limits.h; \
! 	  cp $(srcdir)/gsyslimits.h $${include_dir}/syslimits.h; \
  	done
  # Install the README
! 	if [ x$(STMP_FIXINC) != x ]; then \
! 	  rm -f include-fixed/README; \
! 	  cp $(srcdir)/../fixincludes/README-fixinc include-fixed/README; \
! 	  chmod a+r include-fixed/README; \
! 	fi;
  	$(STAMP) $@
  
  .PHONY: install-gcc-tooldir
*************** stmp-fixinc: gsyslimits.h macro_list fix
*** 3253,3265 ****
  	      cd $(build_objdir)/fixincludes && \
  	      $(SHELL) ./fixinc.sh "$${gcc_dir}/$${fix_dir}" \
  	        $(BUILD_SYSTEM_HEADER_DIR) $(OTHER_FIXINCLUDES_DIRS) ); \
- 	    rm -f $${fix_dir}/syslimits.h; \
- 	    if [ -f $${fix_dir}/limits.h ]; then \
- 	      mv $${fix_dir}/limits.h $${fix_dir}/syslimits.h; \
- 	    else \
- 	      cp $(srcdir)/gsyslimits.h $${fix_dir}/syslimits.h; \
- 	    fi; \
- 	    chmod a+r $${fix_dir}/syslimits.h; \
  	  done; \
  	fi
  	$(STAMP) stmp-fixinc
--- 3291,3296 ----
*************** html:: $(HTMLS_BUILD)
*** 3435,3441 ****
  $(build_htmldir)/%/index.html: %.texi
  	$(mkinstalldirs) $(@D)
  	rm -f $(@D)/*
! 	$(TEXI2HTML) -I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $<
  
  # Duplicate entry to handle renaming of gccinstall
  $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
--- 3466,3473 ----
  $(build_htmldir)/%/index.html: %.texi
  	$(mkinstalldirs) $(@D)
  	rm -f $(@D)/*
! 	$(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \
! 		-I $(abs_docdir) -I $(abs_docdir)/include -o $(@D) $<
  
  # Duplicate entry to handle renaming of gccinstall
  $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES)
*************** install-mkheaders: stmp-int-hdrs install
*** 3977,3983 ****
  	set -e; for ml in `cat fixinc_list`; do \
  	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
  	  $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
! 	  $(INSTALL_DATA) include-fixed$${multi_dir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
  	done
  	$(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
  		$(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
--- 4009,4015 ----
  	set -e; for ml in `cat fixinc_list`; do \
  	  multi_dir=`echo $${ml} | sed -e 's/^[^;]*;//'`; \
  	  $(mkinstalldirs) $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}; \
! 	  $(INSTALL_DATA) include$${multi_dir}/limits.h $(DESTDIR)$(itoolsdatadir)/include$${multi_dir}/limits.h; \
  	done
  	$(INSTALL_SCRIPT) $(srcdir)/../mkinstalldirs \
  		$(DESTDIR)$(itoolsdir)/mkinstalldirs ; \
*************** TAGS: lang.tags
*** 4336,4345 ****
  	    incs="$$incs --include $$dir/TAGS.sub";	\
  	  fi;						\
  	done;						\
! 	$(ETAGS) -o TAGS.sub c-family/*.h c-family/*.cc c-family/*.cc \
! 	      *.h *.c *.cc \
  	      ../include/*.h ../libiberty/*.c \
! 	      ../libcpp/*.c ../libcpp/include/*.h \
  	      --language=none --regex="/\(char\|unsigned int\|int\|bool\|void\|HOST_WIDE_INT\|enum [A-Za-z_0-9]+\) [*]?\([A-Za-z_0-9]+\)/\2/" common.opt	\
  	      --language=none --regex="/\(DEF_RTL_EXPR\|DEFTREECODE\|DEFGSCODE\|DEFTIMEVAR\|DEFPARAM\|DEFPARAMENUM5\)[ ]?(\([A-Za-z_0-9]+\)/\2/" rtl.def tree.def gimple.def timevar.def \
  		; \
--- 4368,4377 ----
  	    incs="$$incs --include $$dir/TAGS.sub";	\
  	  fi;						\
  	done;						\
! 	$(ETAGS) -o TAGS.sub c-family/*.h c-family/*.cc \
! 	      *.h *.cc \
  	      ../include/*.h ../libiberty/*.c \
! 	      ../libcpp/*.cc ../libcpp/include/*.h \
  	      --language=none --regex="/\(char\|unsigned int\|int\|bool\|void\|HOST_WIDE_INT\|enum [A-Za-z_0-9]+\) [*]?\([A-Za-z_0-9]+\)/\2/" common.opt	\
  	      --language=none --regex="/\(DEF_RTL_EXPR\|DEFTREECODE\|DEFGSCODE\|DEFTIMEVAR\|DEFPARAM\|DEFPARAMENUM5\)[ ]?(\([A-Za-z_0-9]+\)/\2/" rtl.def tree.def gimple.def timevar.def \
  		; \
diff -Nrcpad gcc-12.2.0/gcc/README.Portability gcc-13.1.0/gcc/README.Portability
*** gcc-12.2.0/gcc/README.Portability	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/README.Portability	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is intended to contain a few notes about writing C code
  within GCC so that it compiles without error on the full range of
--- 1,4 ----
! Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is intended to contain a few notes about writing C code
  within GCC so that it compiles without error on the full range of
diff -Nrcpad gcc-12.2.0/gcc/acinclude.m4 gcc-13.1.0/gcc/acinclude.m4
*** gcc-12.2.0/gcc/acinclude.m4	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/acinclude.m4	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! dnl Copyright (C) 2005-2022 Free Software Foundation, Inc.
  dnl
  dnl This file is part of GCC.
  dnl
--- 1,4 ----
! dnl Copyright (C) 2005-2023 Free Software Foundation, Inc.
  dnl
  dnl This file is part of GCC.
  dnl
diff -Nrcpad gcc-12.2.0/gcc/ada/ChangeLog gcc-13.1.0/gcc/ada/ChangeLog
*** gcc-12.2.0/gcc/ada/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/gcc/ada/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,3738 ****
! 2022-08-19  Release Manager
! 
! 	* GCC 12.2.0 released.
! 
! 2022-05-06  Release Manager
! 
! 	* GCC 12.1.0 released.
! 
! 2022-04-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
! 
! 	* tracebak.c: Add support for ARM RTEMS. Add support for RTEMS to PPC
! 	ELF.  Add support for RTEMS to SPARC.  Merge aarch64 support of Linux
! 	and RTEMS.
! 
! 2022-04-27  Pierre-Marie de Rodat  <derodat@adacore.com>
! 
! 	PR ada/104027
! 	* gnat1drv.adb: Remove the goto End_Of_Program.
! 
! 2022-03-24  Pascal Obry  <obry@adacore.com>
! 
! 	PR ada/104767
! 	* libgnat/g-sercom__mingw.adb (Close): Reset port handle to -1.
! 	* libgnat/g-sercom__linux.adb (Close): Likewise.
! 
! 2022-03-10  Richard Biener  <rguenther@suse.de>
! 
! 	PR ada/104861
! 	* gcc-interface/Makefile.in (target_noncanonical): Substitute.
! 	(OSCONS_CPP): Pass target_noncanonical as TARGET.
! 
! 2022-02-13  Maciej W. Rozycki  <macro@orcam.me.uk>
! 
! 	PR ada/98724
! 	PR ada/97504
! 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <alpha*-*-linux*>: Use
! 	wraplf version of Aux_Long_Long_Float.
! 
! 2022-01-31  Pierre-Marie de Rodat  <derodat@adacore.com>
  
! 	* doc/share/conf.py: Remove spurious call to ".decode()".
  
! 2022-01-31  Arnaud Charlet  <charlet@adacore.com>
  
! 	PR ada/104027
! 	* gnat1drv.adb (Gnat1drv): Only call Exit_Program when not
! 	generating code, otherwise instead go to End_Of_Program.
  
! 2022-01-28  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/104258
! 	* exp_ch4.adb (Narrow_Large_Operation): Also copy the entity, if
! 	any, when rewriting the operator node.
  
! 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR ada/103538
! 	* gcc-interface/Makefile.in (target_cpu): Set to x32 for
! 	x86_64-linux-gnux32.
  
! 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
  
! 	PR ada/103538
! 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Add
! 	$(TRASYM_DWARF_UNIX_PAIRS),
! 	s-tsmona.adb<libgnat/s-tsmona__linux.adb,
! 	$(GNATRTL_128BIT_PAIRS).
! 	(EXTRA_GNATRTL_NONTASKING_OBJS): Add $(TRASYM_DWARF_UNIX_OBJS)
! 	and $(GNATRTL_128BIT_OBJS).
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* adaint.c: Revert filename changes in comments.
! 	* ctrl_c.c (dummy_handler): Likewise.
! 	* gsocket.h: Likewise.
! 	* init.c (__gnat_error_handler): Likewise.
! 	* libgnarl/s-intman.ads: Likewise.
! 	* libgnarl/s-osinte__android.ads: Likewise.
! 	* libgnarl/s-osinte__darwin.ads: Likewise.
! 	* libgnarl/s-osinte__hpux.ads: Likewise.
! 	* libgnarl/s-osinte__linux.ads: Likewise.
! 	* libgnarl/s-osinte__qnx.ads: Likewise.
! 	* libgnarl/s-taskin.ads: Likewise.
! 	* rtfinal.c: Likewise.
  
! 2022-01-18  Martin Liska  <mliska@suse.cz>
  
! 	* Make-generated.in: Revert renaming changes.
! 	* Makefile.rtl: Likewise.
! 	* adadecode.cc: Moved to...
! 	* adadecode.c: ...here.
! 	* affinity.cc: Moved to...
! 	* affinity.c: ...here.
! 	* argv-lynxos178-raven-cert.cc: Moved to...
! 	* argv-lynxos178-raven-cert.c: ...here.
! 	* argv.cc: Moved to...
! 	* argv.c: ...here.
! 	* aux-io.cc: Moved to...
! 	* aux-io.c: ...here.
! 	* cio.cc: Moved to...
! 	* cio.c: ...here.
! 	* cstreams.cc: Moved to...
! 	* cstreams.c: ...here.
! 	* env.cc: Moved to...
! 	* env.c: ...here.
! 	* exit.cc: Moved to...
! 	* exit.c: ...here.
! 	* expect.cc: Moved to...
! 	* expect.c: ...here.
! 	* final.cc: Moved to...
! 	* final.c: ...here.
! 	* gcc-interface/Makefile.in:
! 	* init.cc: Moved to...
! 	* init.c: ...here.
! 	* initialize.cc: Moved to...
! 	* initialize.c: ...here.
! 	* libgnarl/thread.cc: Moved to...
! 	* libgnarl/thread.c: ...here.
! 	* link.cc: Moved to...
! 	* link.c: ...here.
! 	* locales.cc: Moved to...
! 	* locales.c: ...here.
! 	* mkdir.cc: Moved to...
! 	* mkdir.c: ...here.
! 	* raise.cc: Moved to...
! 	* raise.c: ...here.
! 	* rtfinal.cc: Moved to...
! 	* rtfinal.c: ...here.
! 	* rtinit.cc: Moved to...
! 	* rtinit.c: ...here.
! 	* s-oscons-tmplt.c (CND): Revert renaming changes.
! 	* seh_init.cc: Moved to...
! 	* seh_init.c: ...here.
! 	* sigtramp-armdroid.cc: Moved to...
! 	* sigtramp-armdroid.c: ...here.
! 	* sigtramp-ios.cc: Moved to...
! 	* sigtramp-ios.c: ...here.
! 	* sigtramp-qnx.cc: Moved to...
! 	* sigtramp-qnx.c: ...here.
! 	* sigtramp-vxworks.cc: Moved to...
! 	* sigtramp-vxworks.c: ...here.
! 	* socket.cc: Moved to...
! 	* socket.c: ...here.
! 	* tracebak.cc: Moved to...
! 	* tracebak.c: ...here.
! 	* version.cc: Moved to...
! 	* version.c: ...here.
! 	* vx_stack_info.cc: Moved to...
! 	* vx_stack_info.c: ...here.
  
! 2022-01-17  Martin Liska  <mliska@suse.cz>
  
! 	* Makefile.rtl: Rename .c names to .cc.
! 	* gcc-interface/Make-lang.in: Likewise.
! 	* gcc-interface/Makefile.in: Likewise.
  
! 2022-01-17  Martin Liska  <mliska@suse.cz>
  
! 	* Make-generated.in: Rename .c names to .cc.
! 	* adaint.c: Likewise.
! 	* ctrl_c.c (dummy_handler): Likewise.
  	* gcc-interface/Makefile.in: Likewise.
  	* gcc-interface/config-lang.in: Likewise.
! 	* gcc-interface/decl.cc (concat_name): Likewise.
! 	(init_gnat_decl): Likewise.
! 	* gcc-interface/gigi.h (concat_name): Likewise.
! 	(init_gnat_utils): Likewise.
! 	(build_call_raise_range): Likewise.
! 	(gnat_mark_addressable): Likewise.
! 	(gnat_protect_expr): Likewise.
! 	(gnat_rewrite_reference): Likewise.
! 	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Likewise.
! 	* gcc-interface/utils.cc (GTY): Likewise.
! 	(add_deferred_type_context): Likewise.
! 	(init_gnat_utils): Likewise.
! 	* gcc-interface/utils2.cc (gnat_stable_expr_p): Likewise.
! 	(gnat_protect_expr): Likewise.
! 	(gnat_stabilize_reference_1): Likewise.
! 	(gnat_rewrite_reference): Likewise.
! 	* gsocket.h: Likewise.
! 	* init.cc (__gnat_error_handler): Likewise.
! 	* libgnarl/s-intman.ads: Likewise.
! 	* libgnarl/s-osinte__android.ads: Likewise.
! 	* libgnarl/s-osinte__darwin.ads: Likewise.
! 	* libgnarl/s-osinte__hpux.ads: Likewise.
! 	* libgnarl/s-osinte__linux.ads: Likewise.
! 	* libgnarl/s-osinte__qnx.ads: Likewise.
! 	* libgnarl/s-taskin.ads: Likewise.
! 	* rtfinal.cc: Likewise.
! 	* s-oscons-tmplt.c (CND): Likewise.
! 	* set_targ.ads: Likewise.
! 
! 2022-01-17  Martin Liska  <mliska@suse.cz>
! 
! 	* adadecode.c: Moved to...
! 	* adadecode.cc: ...here.
! 	* affinity.c: Moved to...
! 	* affinity.cc: ...here.
! 	* argv-lynxos178-raven-cert.c: Moved to...
! 	* argv-lynxos178-raven-cert.cc: ...here.
! 	* argv.c: Moved to...
! 	* argv.cc: ...here.
! 	* aux-io.c: Moved to...
! 	* aux-io.cc: ...here.
! 	* cio.c: Moved to...
! 	* cio.cc: ...here.
! 	* cstreams.c: Moved to...
! 	* cstreams.cc: ...here.
! 	* env.c: Moved to...
! 	* env.cc: ...here.
! 	* exit.c: Moved to...
! 	* exit.cc: ...here.
! 	* expect.c: Moved to...
! 	* expect.cc: ...here.
! 	* final.c: Moved to...
! 	* final.cc: ...here.
! 	* gcc-interface/cuintp.c: Moved to...
! 	* gcc-interface/cuintp.cc: ...here.
! 	* gcc-interface/decl.c: Moved to...
! 	* gcc-interface/decl.cc: ...here.
! 	* gcc-interface/misc.c: Moved to...
! 	* gcc-interface/misc.cc: ...here.
! 	* gcc-interface/targtyps.c: Moved to...
! 	* gcc-interface/targtyps.cc: ...here.
! 	* gcc-interface/trans.c: Moved to...
! 	* gcc-interface/trans.cc: ...here.
! 	* gcc-interface/utils.c: Moved to...
! 	* gcc-interface/utils.cc: ...here.
! 	* gcc-interface/utils2.c: Moved to...
! 	* gcc-interface/utils2.cc: ...here.
! 	* init.c: Moved to...
! 	* init.cc: ...here.
! 	* initialize.c: Moved to...
! 	* initialize.cc: ...here.
! 	* libgnarl/thread.c: Moved to...
! 	* libgnarl/thread.cc: ...here.
! 	* link.c: Moved to...
! 	* link.cc: ...here.
! 	* locales.c: Moved to...
! 	* locales.cc: ...here.
! 	* mkdir.c: Moved to...
! 	* mkdir.cc: ...here.
! 	* raise.c: Moved to...
! 	* raise.cc: ...here.
! 	* rtfinal.c: Moved to...
! 	* rtfinal.cc: ...here.
! 	* rtinit.c: Moved to...
! 	* rtinit.cc: ...here.
! 	* seh_init.c: Moved to...
! 	* seh_init.cc: ...here.
! 	* sigtramp-armdroid.c: Moved to...
! 	* sigtramp-armdroid.cc: ...here.
! 	* sigtramp-ios.c: Moved to...
! 	* sigtramp-ios.cc: ...here.
! 	* sigtramp-qnx.c: Moved to...
! 	* sigtramp-qnx.cc: ...here.
! 	* sigtramp-vxworks.c: Moved to...
! 	* sigtramp-vxworks.cc: ...here.
! 	* socket.c: Moved to...
! 	* socket.cc: ...here.
! 	* tracebak.c: Moved to...
! 	* tracebak.cc: ...here.
! 	* version.c: Moved to...
! 	* version.cc: ...here.
! 	* vx_stack_info.c: Moved to...
! 	* vx_stack_info.cc: ...here.
! 
! 2022-01-14  Andrew Pinski  <apinski@marvell.com>
! 
! 	PR ada/104027
! 	* gnat1drv.adb (Gnat1drv): After Back_End.Gen_Or_Update_Object_File
! 	goto End_Of_Program.
! 
! 2022-01-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* gcc-interface/utils2.c (build_binary_op) <EQ_EXPR>: Relax a
! 	little the assertion on designated types of pointer types.
! 
! 2022-01-11  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_ch8.adb (Nvis_Messages): Add generic instance name to
! 	error message.
! 
! 2022-01-11  Etienne Servais  <servais@adacore.com>
! 
! 	* par-ch6.adb (Scan_Body_Or_Expression_Function): Accept left
! 	bracket as token to open an expression function.
! 
! 2022-01-11  Justin Squirek  <squirek@adacore.com>
! 
! 	* sem_warn.adb (Check_References): Add call to Has_Task instead
! 	of checking component type.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_util.ads (Insert_Declaration): Remove spec.
! 	* exp_util.adb (Insert_Declaration): Remove body.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch4.adb (Expand_N_Expression_With_Actions): Avoid
! 	redundant check.
! 	* exp_ch5.adb (Expand_N_If_Statement): Likewise.
! 	* exp_ch7.adb (Process_Declarations): Likewise.
! 	* sem_elab.adb (Freeze_Node_Location): Likewise.
! 	* exp_util.adb (Insert_Actions): Likewise.
! 	(Is_OK_PF_Pragma): Likewise.
! 	(Requires_Cleanup_Actions): Remove early exit; ordinary
! 	processing path will similarly do nothing.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* snames.ads-tmpl: Restore Name_Rpc.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_ch4.adb (Analyze_Allocator): Move DECLARE block inside IF
! 	statement; refill code and comments.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_ch4.adb (Analyze_Allocator): Fix comment.
! 	* sem_eval.ads (Compile-Time Known Values): Likewise.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* snames.ads-tmpl: Remove unreferenced names.
! 
! 2022-01-11  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/s-aridou.adb (Double_Divide): Adjust proof of lemma
! 	Prove_Signs, call lemma for commutation of Big and
! 	multiplication.
! 	(Multiply_With_Ovflo_Check): Adjust postcondition of
! 	Prove_Pos_Int.
! 	(Scaled_Divide): Explicit commutation in the proof of lemma
! 	Prove_Multiplication, add new lemma Prove_Shift_Progress for
! 	congruence property that is not proved in a larger context, add
! 	assertions at the end of the loop to state loop invariant
! 	properties.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_eval.ads (Compile_Time_Known_Value_Or_Aggr): Remove spec.
! 	* sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Remove body.
! 
! 2022-01-11  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/a-strfix.adb (Insert, Overwrite): Add assertions.
! 
! 2022-01-11  Arnaud Charlet  <charlet@adacore.com>
! 
! 	PR ada/79724
! 	* osint.adb (Program_Name): Fix handling of suffixes.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch4.adb (Size_In_Storage_Elements): Remove unnecessary
! 	DECLARE block; refill code and comments.
! 
! 2022-01-11  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* sem_ch3.adb (Analyze_Subtype_Declaration): In the case of an array
! 	copy Packed_Array_Impl_Type manually here.
! 	(Copy_Array_Subtype_Attributes): Do not copy it here.
! 
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch7.adb (Set_Block_Elab_Proc, Unnest_Block, Unnest_Loop,
! 	Unnest_Statement_List): Simplify with Make_Temporary.
! 	* exp_put_image.adb (Build_Image_Call): Likewise.
! 	* inline.adb (Generate_Subprogram_Body): Likewise.
! 	* sem_ch13.adb (Build_Predicate_Functions): Likewise.
! 	* sem_util.adb (New_Copy_Separate_List): Likewise.
! 
! 2022-01-11  Etienne Servais  <servais@adacore.com>
! 
! 	* sem_ch3.adb (Check_Dynamic_Object): Swap check order.
! 
! 2022-01-11  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/s-casuti.adb: Add ghost code.
! 	* libgnat/s-casuti.ads: Add contracts.
! 
! 2022-01-11  Claire Dross  <dross@adacore.com>
! 
! 	* libgnat/a-tiinau.ads: Use a procedure for the Scan parameter
! 	instead of a function with side-effects.
! 	* libgnat/a-tiinau.adb: Idem.
! 	* libgnat/a-wtinau.ads: Idem.
! 	* libgnat/a-wtinau.adb: Idem.
! 	* libgnat/a-ztinau.ads: Idem.
! 	* libgnat/a-ztinau.adb: Idem.
! 	* libgnat/s-valint.ads: Change the function with side-effects
! 	Scan_Integer into a procedure
! 	* libgnat/s-vallli.ads: Idem.
! 	* libgnat/s-valllli.ads: Idem.
! 	* libgnat/s-vallllu.ads: Add SPARK_Mode and pragma to ignore
! 	assertions in instance.
! 	* libgnat/s-valllu.ads: Idem.
! 	* libgnat/s-valuns.ads: Idem.
! 	* libgnat/s-valuei.ads: Use a procedure for the
! 	Scan_Raw_Unsigned parameter instead of a function with
! 	side-effects and change the function with side-effects
! 	Scan_Integer into a procedure.
! 	* libgnat/s-valuei.adb: Idem.
! 	* libgnat/s-valuti.ads: Introduce a ghost function that scans an
! 	exponent and complete the postcondition of Scan_Exponent to also
! 	describe the value of Ptr after the call. Fix the postcondition
! 	of Scan_Underscore. Simplify the definition of
! 	Scan_Natural_Ghost.
! 	* libgnat/s-valuti.adb: Idem.
! 	* libgnat/s-valboo.ads, libgnat/s-valboo.adb: Update calls to
! 	First_Non_Space_Ghost.
! 	* libgnat/s-valueu.ads: Add functional contracts.
! 	* libgnat/s-valueu.adb: Idem.
  
! 2022-01-11  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-expmod.adb (Exp_Modular): Add assertions.
  
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* errout.adb (Error_Msg_CRT): Build message with string
! 	concatenation; it is slightly repetitive but much easier to
! 	read.
  
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch11.adb (Expand_N_Exception_Declaration): Remove explicit
! 	initialization of the exceptF object.
  
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* par-ch3.adb (P_Array_Type_Definition): Use
! 	Error_Msg_GNAT_Extension.
  
! 2022-01-11  Gary Dismukes  <dismukes@adacore.com>
  
! 	* sem_disp.adb (Check_Controlling_Type): Add test for the case
! 	where Subp is a subprogram associated with a protected
! 	subprogram and return Empty, unless Tagged_Type is the
! 	corresponding record type of the protected type.
  
! 2022-01-11  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-veboop.adb: Add ghost code for proof.
! 	* libgnat/s-veboop.ads: Add specification.
  
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_aggr.adb, exp_attr.adb, exp_ch3.adb, exp_ch7.adb,
! 	exp_dist.adb, exp_util.adb, freeze.adb, frontend.adb,
! 	inline.adb, itypes.adb, lib-load.adb, lib-xref.adb,
! 	libgnat/a-cfhase.adb, libgnat/a-cforse.adb,
! 	libgnat/a-chtgbo.adb, libgnat/a-crdlli.adb,
! 	libgnat/a-except.adb, libgnat/a-strfix.adb,
! 	libgnat/a-textio.adb, libgnat/a-tienau.adb,
! 	libgnat/a-tigeau.adb, libgnat/a-witeio.adb,
! 	libgnat/a-wtenau.adb, libgnat/a-wtgeau.adb,
! 	libgnat/a-ztenau.adb, libgnat/a-ztexio.adb,
! 	libgnat/a-ztgeau.adb, libgnat/g-comlin.adb,
! 	libgnat/g-debpoo.adb, libgnat/g-expect.adb,
! 	libgnat/s-fileio.adb, libgnat/s-memory.adb, libgnat/s-mmap.adb,
! 	libgnat/s-objrea.adb, libgnat/s-pehage.adb,
! 	libgnat/s-regpat.adb, libgnat/s-shasto.adb,
! 	libgnat/s-valued.adb, libgnat/s-valuef.adb, par-ch11.adb,
! 	par-ch4.adb, par-ch6.adb, par-ch9.adb, par_sco.adb,
! 	repinfo-input.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb,
! 	sem_ch13.adb, sem_ch4.adb, sem_eval.adb, sem_prag.adb,
! 	sem_res.adb, sem_util.adb, sinput.adb, switch-c.adb: Fix style.
  
! 2022-01-11  Arnaud Charlet  <charlet@adacore.com>
  
! 	* exp_ch9.adb, gen_il-types.ads, make.adb, par-ch12.adb,
! 	sem_ch13.adb: Use membership tests.
  
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* erroutc.ads, erroutc.adb (Is_Runtime_Raise): Global flag to
! 	connect status of initial messages and their continuation; we
! 	already have several flags like this.
! 	(Error_Msg_Object): Add field Warn_Runtime_Raise to connect
! 	error reporting (when problematic code is found) and removal
! 	(when problematic code is determined to be dead).
! 	* errout.adb (Error_Msg_Internal): Handle new field when
! 	recording a continuation message; propagate status from
! 	continuation to the preceding messages.
! 	(To_Be_Removed): For dead code remove both simple warnings and
! 	warnings about constraint errors that have been escalated to
! 	hard errors.
! 	(Set_Msg_Text): Recognize warnings about constraint errors that
! 	are escalated to hard errors.
! 	* errutil.adb (Error_Msg): Handle added field when recording a
! 	new message.
  
! 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* errout.adb (Error_Msg_Internal): Propagate warnings-as-error
! 	flag from continuation message to its preceding messages.
  
! 2022-01-11  Arnaud Charlet  <charlet@adacore.com>
  
! 	* gnatvsn.ads (Current_Year): Update copyright notice, bump to
! 	2022.
! 	* ada_get_targ.adb: Update copyright notice.
! 	* adabkend.adb: Likewise.
! 	* adabkend.ads: Likewise.
! 	* adadecode.c: Likewise.
! 	* adadecode.h: Likewise.
! 	* adaint.c: Likewise.
! 	* adaint.h: Likewise.
! 	* affinity.c: Likewise.
! 	* ali-util.adb: Likewise.
! 	* ali-util.ads: Likewise.
! 	* ali.adb: Likewise.
! 	* ali.ads: Likewise.
! 	* alloc.ads: Likewise.
! 	* argv-lynxos178-raven-cert.c: Likewise.
! 	* argv.c: Likewise.
! 	* aspects.adb: Likewise.
! 	* aspects.ads: Likewise.
! 	* atree.adb: Likewise.
! 	* atree.ads: Likewise.
! 	* atree.h: Likewise.
! 	* aux-io.c: Likewise.
! 	* back_end.adb: Likewise.
! 	* back_end.ads: Likewise.
! 	* backend_utils.adb: Likewise.
! 	* backend_utils.ads: Likewise.
! 	* bcheck.adb: Likewise.
! 	* bcheck.ads: Likewise.
! 	* binde.adb: Likewise.
! 	* binde.ads: Likewise.
! 	* binderr.adb: Likewise.
! 	* binderr.ads: Likewise.
! 	* bindgen.adb: Likewise.
! 	* bindgen.ads: Likewise.
! 	* bindo-augmentors.adb: Likewise.
! 	* bindo-augmentors.ads: Likewise.
! 	* bindo-builders.adb: Likewise.
! 	* bindo-builders.ads: Likewise.
! 	* bindo-diagnostics.adb: Likewise.
! 	* bindo-diagnostics.ads: Likewise.
! 	* bindo-elaborators.adb: Likewise.
! 	* bindo-elaborators.ads: Likewise.
! 	* bindo-graphs.adb: Likewise.
! 	* bindo-graphs.ads: Likewise.
! 	* bindo-units.adb: Likewise.
! 	* bindo-units.ads: Likewise.
! 	* bindo-validators.adb: Likewise.
! 	* bindo-validators.ads: Likewise.
! 	* bindo-writers.adb: Likewise.
! 	* bindo-writers.ads: Likewise.
! 	* bindo.adb: Likewise.
! 	* bindo.ads: Likewise.
! 	* bindusg.adb: Likewise.
! 	* bindusg.ads: Likewise.
! 	* butil.adb: Likewise.
! 	* butil.ads: Likewise.
! 	* cal.c: Likewise.
! 	* casing.adb: Likewise.
! 	* casing.ads: Likewise.
! 	* checks.adb: Likewise.
! 	* checks.ads: Likewise.
! 	* cio.c: Likewise.
! 	* clean.adb: Likewise.
! 	* clean.ads: Likewise.
! 	* comperr.adb: Likewise.
! 	* comperr.ads: Likewise.
! 	* contracts.adb: Likewise.
! 	* contracts.ads: Likewise.
! 	* csets.adb: Likewise.
! 	* csets.ads: Likewise.
! 	* cstand.adb: Likewise.
! 	* cstand.ads: Likewise.
! 	* cstreams.c: Likewise.
! 	* ctrl_c.c: Likewise.
! 	* debug.ads: Likewise.
! 	* debug_a.adb: Likewise.
! 	* debug_a.ads: Likewise.
! 	* einfo-utils.adb: Likewise.
! 	* einfo-utils.ads: Likewise.
! 	* einfo.adb: Likewise.
! 	* einfo.ads: Likewise.
! 	* elists.adb: Likewise.
! 	* elists.ads: Likewise.
! 	* elists.h: Likewise.
! 	* env.c: Likewise.
! 	* env.h: Likewise.
! 	* err_vars.ads: Likewise.
! 	* errno.c: Likewise.
! 	* errout.adb: Likewise.
! 	* errout.ads: Likewise.
! 	* erroutc.adb: Likewise.
! 	* erroutc.ads: Likewise.
! 	* errutil.adb: Likewise.
! 	* errutil.ads: Likewise.
! 	* eval_fat.adb: Likewise.
! 	* eval_fat.ads: Likewise.
! 	* exit.c: Likewise.
! 	* exp_aggr.adb: Likewise.
! 	* exp_aggr.ads: Likewise.
! 	* exp_atag.adb: Likewise.
! 	* exp_atag.ads: Likewise.
! 	* exp_attr.adb: Likewise.
! 	* exp_attr.ads: Likewise.
! 	* exp_cg.adb: Likewise.
! 	* exp_cg.ads: Likewise.
! 	* exp_ch10.ads: Likewise.
! 	* exp_ch11.adb: Likewise.
! 	* exp_ch11.ads: Likewise.
! 	* exp_ch12.adb: Likewise.
! 	* exp_ch12.ads: Likewise.
! 	* exp_ch13.adb: Likewise.
! 	* exp_ch13.ads: Likewise.
! 	* exp_ch2.adb: Likewise.
! 	* exp_ch2.ads: Likewise.
! 	* exp_ch3.adb: Likewise.
! 	* exp_ch3.ads: Likewise.
! 	* exp_ch4.adb: Likewise.
! 	* exp_ch4.ads: Likewise.
! 	* exp_ch5.adb: Likewise.
! 	* exp_ch5.ads: Likewise.
! 	* exp_ch6.adb: Likewise.
! 	* exp_ch6.ads: Likewise.
! 	* exp_ch7.adb: Likewise.
! 	* exp_ch7.ads: Likewise.
! 	* exp_ch8.adb: Likewise.
! 	* exp_ch8.ads: Likewise.
! 	* exp_ch9.adb: Likewise.
! 	* exp_ch9.ads: Likewise.
! 	* exp_code.adb: Likewise.
! 	* exp_code.ads: Likewise.
! 	* exp_dbug.adb: Likewise.
! 	* exp_dbug.ads: Likewise.
! 	* exp_disp.adb: Likewise.
! 	* exp_disp.ads: Likewise.
! 	* exp_dist.adb: Likewise.
! 	* exp_dist.ads: Likewise.
! 	* exp_fixd.adb: Likewise.
! 	* exp_fixd.ads: Likewise.
! 	* exp_imgv.adb: Likewise.
! 	* exp_imgv.ads: Likewise.
! 	* exp_intr.adb: Likewise.
! 	* exp_intr.ads: Likewise.
! 	* exp_pakd.adb: Likewise.
! 	* exp_pakd.ads: Likewise.
! 	* exp_prag.adb: Likewise.
! 	* exp_prag.ads: Likewise.
! 	* exp_put_image.adb: Likewise.
! 	* exp_put_image.ads: Likewise.
! 	* exp_sel.adb: Likewise.
! 	* exp_sel.ads: Likewise.
! 	* exp_smem.adb: Likewise.
! 	* exp_smem.ads: Likewise.
! 	* exp_spark.adb: Likewise.
! 	* exp_spark.ads: Likewise.
! 	* exp_strm.adb: Likewise.
! 	* exp_strm.ads: Likewise.
! 	* exp_tss.adb: Likewise.
! 	* exp_tss.ads: Likewise.
! 	* exp_unst.adb: Likewise.
! 	* exp_unst.ads: Likewise.
! 	* exp_util.adb: Likewise.
! 	* exp_util.ads: Likewise.
! 	* expander.adb: Likewise.
! 	* expander.ads: Likewise.
! 	* expect.c: Likewise.
! 	* fe.h: Likewise.
! 	* final.c: Likewise.
! 	* fmap.adb: Likewise.
! 	* fmap.ads: Likewise.
! 	* fname-sf.adb: Likewise.
! 	* fname-sf.ads: Likewise.
! 	* fname-uf.adb: Likewise.
! 	* fname-uf.ads: Likewise.
! 	* fname.adb: Likewise.
! 	* fname.ads: Likewise.
! 	* freeze.adb: Likewise.
! 	* freeze.ads: Likewise.
! 	* frontend.adb: Likewise.
! 	* frontend.ads: Likewise.
! 	* gen_il-fields.ads: Likewise.
! 	* gen_il-gen-gen_entities.adb: Likewise.
! 	* gen_il-gen-gen_nodes.adb: Likewise.
! 	* gen_il-gen.adb: Likewise.
! 	* gen_il-gen.ads: Likewise.
! 	* gen_il-internals.adb: Likewise.
! 	* gen_il-internals.ads: Likewise.
! 	* gen_il-main.adb: Likewise.
! 	* gen_il-types.ads: Likewise.
! 	* gen_il.adb: Likewise.
! 	* gen_il.ads: Likewise.
! 	* get_scos.adb: Likewise.
! 	* get_scos.ads: Likewise.
! 	* get_targ.adb: Likewise.
! 	* get_targ.ads: Likewise.
! 	* ghost.adb: Likewise.
! 	* ghost.ads: Likewise.
! 	* gnat1drv.adb: Likewise.
! 	* gnat1drv.ads: Likewise.
! 	* gnat_cuda.adb: Likewise.
! 	* gnat_cuda.ads: Likewise.
! 	* gnatbind.adb: Likewise.
! 	* gnatbind.ads: Likewise.
! 	* gnatchop.adb: Likewise.
! 	* gnatclean.adb: Likewise.
! 	* gnatcmd.adb: Likewise.
! 	* gnatcmd.ads: Likewise.
! 	* gnatdll.adb: Likewise.
! 	* gnatfind.adb: Likewise.
! 	* gnatkr.adb: Likewise.
! 	* gnatkr.ads: Likewise.
! 	* gnatlink.adb: Likewise.
! 	* gnatlink.ads: Likewise.
! 	* gnatls.adb: Likewise.
! 	* gnatls.ads: Likewise.
! 	* gnatmake.adb: Likewise.
! 	* gnatmake.ads: Likewise.
! 	* gnatname.adb: Likewise.
! 	* gnatname.ads: Likewise.
! 	* gnatprep.adb: Likewise.
! 	* gnatprep.ads: Likewise.
! 	* gnatvsn.adb: Likewise.
! 	* gnatxref.adb: Likewise.
! 	* gprep.adb: Likewise.
! 	* gprep.ads: Likewise.
! 	* gsocket.h: Likewise.
  	* hostparm.ads: Likewise.
! 	* impunit.adb: Likewise.
! 	* impunit.ads: Likewise.
! 	* indepsw-aix.adb: Likewise.
! 	* indepsw-darwin.adb: Likewise.
! 	* indepsw-gnu.adb: Likewise.
! 	* indepsw.adb: Likewise.
! 	* indepsw.ads: Likewise.
! 	* init.c: Likewise.
! 	* initialize.c: Likewise.
! 	* inline.adb: Likewise.
! 	* inline.ads: Likewise.
! 	* itypes.adb: Likewise.
! 	* itypes.ads: Likewise.
! 	* krunch.adb: Likewise.
! 	* krunch.ads: Likewise.
! 	* layout.adb: Likewise.
! 	* layout.ads: Likewise.
! 	* lib-list.adb: Likewise.
! 	* lib-load.adb: Likewise.
! 	* lib-load.ads: Likewise.
! 	* lib-sort.adb: Likewise.
! 	* lib-util.adb: Likewise.
! 	* lib-util.ads: Likewise.
! 	* lib-writ.adb: Likewise.
! 	* lib-writ.ads: Likewise.
! 	* lib-xref-spark_specific.adb: Likewise.
! 	* lib-xref.adb: Likewise.
! 	* lib-xref.ads: Likewise.
! 	* lib.adb: Likewise.
! 	* lib.ads: Likewise.
! 	* libgnarl/a-astaco.adb: Likewise.
! 	* libgnarl/a-dispat.adb: Likewise.
! 	* libgnarl/a-dynpri.adb: Likewise.
! 	* libgnarl/a-etgrbu.ads: Likewise.
! 	* libgnarl/a-exetim__darwin.adb: Likewise.
! 	* libgnarl/a-exetim__default.ads: Likewise.
! 	* libgnarl/a-exetim__mingw.adb: Likewise.
! 	* libgnarl/a-exetim__mingw.ads: Likewise.
! 	* libgnarl/a-exetim__posix.adb: Likewise.
! 	* libgnarl/a-interr.adb: Likewise.
! 	* libgnarl/a-interr.ads: Likewise.
! 	* libgnarl/a-intnam.ads: Likewise.
! 	* libgnarl/a-intnam__aix.ads: Likewise.
! 	* libgnarl/a-intnam__darwin.ads: Likewise.
! 	* libgnarl/a-intnam__dragonfly.ads: Likewise.
! 	* libgnarl/a-intnam__dummy.ads: Likewise.
! 	* libgnarl/a-intnam__freebsd.ads: Likewise.
! 	* libgnarl/a-intnam__hpux.ads: Likewise.
! 	* libgnarl/a-intnam__linux.ads: Likewise.
! 	* libgnarl/a-intnam__lynxos.ads: Likewise.
! 	* libgnarl/a-intnam__mingw.ads: Likewise.
! 	* libgnarl/a-intnam__qnx.ads: Likewise.
! 	* libgnarl/a-intnam__rtems.ads: Likewise.
! 	* libgnarl/a-intnam__solaris.ads: Likewise.
! 	* libgnarl/a-intnam__vxworks.ads: Likewise.
! 	* libgnarl/a-reatim.adb: Likewise.
! 	* libgnarl/a-reatim.ads: Likewise.
! 	* libgnarl/a-retide.adb: Likewise.
! 	* libgnarl/a-retide.ads: Likewise.
! 	* libgnarl/a-rttiev.adb: Likewise.
! 	* libgnarl/a-rttiev.ads: Likewise.
! 	* libgnarl/a-synbar.adb: Likewise.
! 	* libgnarl/a-synbar.ads: Likewise.
! 	* libgnarl/a-synbar__posix.adb: Likewise.
! 	* libgnarl/a-synbar__posix.ads: Likewise.
! 	* libgnarl/a-sytaco.adb: Likewise.
! 	* libgnarl/a-sytaco.ads: Likewise.
! 	* libgnarl/a-tasatt.adb: Likewise.
! 	* libgnarl/a-tasatt.ads: Likewise.
! 	* libgnarl/a-taside.adb: Likewise.
! 	* libgnarl/a-taside.ads: Likewise.
! 	* libgnarl/a-tasini.adb: Likewise.
! 	* libgnarl/a-tasini.ads: Likewise.
! 	* libgnarl/a-taster.adb: Likewise.
! 	* libgnarl/g-boubuf.adb: Likewise.
! 	* libgnarl/g-boubuf.ads: Likewise.
! 	* libgnarl/g-boumai.ads: Likewise.
! 	* libgnarl/g-semaph.adb: Likewise.
! 	* libgnarl/g-semaph.ads: Likewise.
! 	* libgnarl/g-signal.adb: Likewise.
! 	* libgnarl/g-signal.ads: Likewise.
! 	* libgnarl/g-tastus.ads: Likewise.
! 	* libgnarl/g-thread.adb: Likewise.
! 	* libgnarl/g-thread.ads: Likewise.
! 	* libgnarl/i-vxinco.adb: Likewise.
! 	* libgnarl/i-vxinco.ads: Likewise.
! 	* libgnarl/s-inmaop.ads: Likewise.
! 	* libgnarl/s-inmaop__dummy.adb: Likewise.
! 	* libgnarl/s-inmaop__hwint.adb: Likewise.
! 	* libgnarl/s-inmaop__posix.adb: Likewise.
! 	* libgnarl/s-interr.adb: Likewise.
! 	* libgnarl/s-interr.ads: Likewise.
! 	* libgnarl/s-interr__dummy.adb: Likewise.
! 	* libgnarl/s-interr__hwint.adb: Likewise.
  	* libgnarl/s-interr__sigaction.adb: Likewise.
! 	* libgnarl/s-interr__vxworks.adb: Likewise.
! 	* libgnarl/s-intman.ads: Likewise.
! 	* libgnarl/s-intman__android.adb: Likewise.
! 	* libgnarl/s-intman__dummy.adb: Likewise.
! 	* libgnarl/s-intman__lynxos.adb: Likewise.
! 	* libgnarl/s-intman__mingw.adb: Likewise.
! 	* libgnarl/s-intman__posix.adb: Likewise.
! 	* libgnarl/s-intman__qnx.adb: Likewise.
! 	* libgnarl/s-intman__rtems.adb: Likewise.
! 	* libgnarl/s-intman__rtems.ads: Likewise.
! 	* libgnarl/s-intman__solaris.adb: Likewise.
! 	* libgnarl/s-intman__susv3.adb: Likewise.
! 	* libgnarl/s-intman__vxworks.adb: Likewise.
! 	* libgnarl/s-intman__vxworks.ads: Likewise.
! 	* libgnarl/s-linux.ads: Likewise.
! 	* libgnarl/s-linux__alpha.ads: Likewise.
! 	* libgnarl/s-linux__android.ads: Likewise.
! 	* libgnarl/s-linux__hppa.ads: Likewise.
! 	* libgnarl/s-linux__mips.ads: Likewise.
! 	* libgnarl/s-linux__riscv.ads: Likewise.
! 	* libgnarl/s-linux__sparc.ads: Likewise.
! 	* libgnarl/s-linux__x32.ads: Likewise.
! 	* libgnarl/s-mudido.adb: Likewise.
! 	* libgnarl/s-mudido__affinity.adb: Likewise.
! 	* libgnarl/s-osinte__aix.adb: Likewise.
! 	* libgnarl/s-osinte__aix.ads: Likewise.
! 	* libgnarl/s-osinte__android.adb: Likewise.
! 	* libgnarl/s-osinte__android.ads: Likewise.
! 	* libgnarl/s-osinte__darwin.adb: Likewise.
! 	* libgnarl/s-osinte__darwin.ads: Likewise.
  	* libgnarl/s-osinte__dragonfly.adb: Likewise.
! 	* libgnarl/s-osinte__dragonfly.ads: Likewise.
! 	* libgnarl/s-osinte__dummy.ads: Likewise.
! 	* libgnarl/s-osinte__freebsd.adb: Likewise.
! 	* libgnarl/s-osinte__freebsd.ads: Likewise.
! 	* libgnarl/s-osinte__gnu.adb: Likewise.
! 	* libgnarl/s-osinte__gnu.ads: Likewise.
  	* libgnarl/s-osinte__hpux-dce.adb: Likewise.
! 	* libgnarl/s-osinte__hpux-dce.ads: Likewise.
! 	* libgnarl/s-osinte__hpux.ads: Likewise.
  	* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
! 	* libgnarl/s-osinte__linux.ads: Likewise.
! 	* libgnarl/s-osinte__lynxos178.adb: Likewise.
! 	* libgnarl/s-osinte__lynxos178e.ads: Likewise.
! 	* libgnarl/s-osinte__mingw.ads: Likewise.
! 	* libgnarl/s-osinte__posix.adb: Likewise.
! 	* libgnarl/s-osinte__qnx.adb: Likewise.
! 	* libgnarl/s-osinte__qnx.ads: Likewise.
! 	* libgnarl/s-osinte__rtems.adb: Likewise.
! 	* libgnarl/s-osinte__rtems.ads: Likewise.
! 	* libgnarl/s-osinte__solaris.adb: Likewise.
! 	* libgnarl/s-osinte__solaris.ads: Likewise.
! 	* libgnarl/s-osinte__vxworks.adb: Likewise.
! 	* libgnarl/s-osinte__vxworks.ads: Likewise.
! 	* libgnarl/s-osinte__x32.adb: Likewise.
! 	* libgnarl/s-proinf.adb: Likewise.
! 	* libgnarl/s-proinf.ads: Likewise.
! 	* libgnarl/s-putaim.adb: Likewise.
! 	* libgnarl/s-putaim.ads: Likewise.
! 	* libgnarl/s-qnx.ads: Likewise.
! 	* libgnarl/s-solita.adb: Likewise.
! 	* libgnarl/s-solita.ads: Likewise.
! 	* libgnarl/s-stusta.adb: Likewise.
! 	* libgnarl/s-stusta.ads: Likewise.
! 	* libgnarl/s-taasde.adb: Likewise.
! 	* libgnarl/s-taasde.ads: Likewise.
! 	* libgnarl/s-tadeca.adb: Likewise.
! 	* libgnarl/s-tadeca.ads: Likewise.
! 	* libgnarl/s-tadert.adb: Likewise.
! 	* libgnarl/s-tadert.ads: Likewise.
! 	* libgnarl/s-taenca.adb: Likewise.
! 	* libgnarl/s-taenca.ads: Likewise.
! 	* libgnarl/s-taprob.adb: Likewise.
! 	* libgnarl/s-taprob.ads: Likewise.
! 	* libgnarl/s-taprop.ads: Likewise.
! 	* libgnarl/s-taprop__dummy.adb: Likewise.
! 	* libgnarl/s-taprop__hpux-dce.adb: Likewise.
! 	* libgnarl/s-taprop__linux.adb: Likewise.
! 	* libgnarl/s-taprop__mingw.adb: Likewise.
! 	* libgnarl/s-taprop__posix.adb: Likewise.
! 	* libgnarl/s-taprop__qnx.adb: Likewise.
! 	* libgnarl/s-taprop__rtems.adb: Likewise.
! 	* libgnarl/s-taprop__solaris.adb: Likewise.
! 	* libgnarl/s-taprop__vxworks.adb: Likewise.
! 	* libgnarl/s-tarest.adb: Likewise.
! 	* libgnarl/s-tarest.ads: Likewise.
! 	* libgnarl/s-tasdeb.adb: Likewise.
! 	* libgnarl/s-tasdeb.ads: Likewise.
! 	* libgnarl/s-tasinf.adb: Likewise.
! 	* libgnarl/s-tasinf.ads: Likewise.
! 	* libgnarl/s-tasinf__linux.adb: Likewise.
! 	* libgnarl/s-tasinf__linux.ads: Likewise.
! 	* libgnarl/s-tasinf__mingw.adb: Likewise.
! 	* libgnarl/s-tasinf__mingw.ads: Likewise.
! 	* libgnarl/s-tasinf__solaris.adb: Likewise.
! 	* libgnarl/s-tasinf__solaris.ads: Likewise.
! 	* libgnarl/s-tasinf__vxworks.ads: Likewise.
! 	* libgnarl/s-tasini.adb: Likewise.
! 	* libgnarl/s-tasini.ads: Likewise.
! 	* libgnarl/s-taskin.adb: Likewise.
! 	* libgnarl/s-taskin.ads: Likewise.
! 	* libgnarl/s-taspri__dummy.ads: Likewise.
! 	* libgnarl/s-taspri__hpux-dce.ads: Likewise.
! 	* libgnarl/s-taspri__lynxos.ads: Likewise.
! 	* libgnarl/s-taspri__mingw.ads: Likewise.
  	* libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
! 	* libgnarl/s-taspri__posix.ads: Likewise.
! 	* libgnarl/s-taspri__solaris.ads: Likewise.
! 	* libgnarl/s-taspri__vxworks.ads: Likewise.
! 	* libgnarl/s-tasque.adb: Likewise.
! 	* libgnarl/s-tasque.ads: Likewise.
! 	* libgnarl/s-tasren.adb: Likewise.
! 	* libgnarl/s-tasren.ads: Likewise.
! 	* libgnarl/s-tasres.ads: Likewise.
! 	* libgnarl/s-tassta.adb: Likewise.
! 	* libgnarl/s-tassta.ads: Likewise.
! 	* libgnarl/s-tasuti.adb: Likewise.
! 	* libgnarl/s-tasuti.ads: Likewise.
! 	* libgnarl/s-tataat.adb: Likewise.
! 	* libgnarl/s-tataat.ads: Likewise.
! 	* libgnarl/s-tpinop.adb: Likewise.
! 	* libgnarl/s-tpinop.ads: Likewise.
! 	* libgnarl/s-tpoaal.adb: Likewise.
! 	* libgnarl/s-tpoben.adb: Likewise.
! 	* libgnarl/s-tpoben.ads: Likewise.
! 	* libgnarl/s-tpobmu.adb: Likewise.
! 	* libgnarl/s-tpobmu.ads: Likewise.
! 	* libgnarl/s-tpobop.adb: Likewise.
! 	* libgnarl/s-tpobop.ads: Likewise.
! 	* libgnarl/s-tpopmo.adb: Likewise.
  	* libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
! 	* libgnarl/s-tpopsp__posix.adb: Likewise.
! 	* libgnarl/s-tpopsp__solaris.adb: Likewise.
! 	* libgnarl/s-tpopsp__tls.adb: Likewise.
! 	* libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
  	* libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
! 	* libgnarl/s-tpopsp__vxworks.adb: Likewise.
! 	* libgnarl/s-tporft.adb: Likewise.
! 	* libgnarl/s-tposen.adb: Likewise.
! 	* libgnarl/s-tposen.ads: Likewise.
! 	* libgnarl/s-vxwext.adb: Likewise.
! 	* libgnarl/s-vxwext.ads: Likewise.
  	* libgnarl/s-vxwext__kernel-smp.adb: Likewise.
! 	* libgnarl/s-vxwext__kernel.adb: Likewise.
! 	* libgnarl/s-vxwext__kernel.ads: Likewise.
! 	* libgnarl/s-vxwext__rtp-smp.adb: Likewise.
! 	* libgnarl/s-vxwext__rtp.adb: Likewise.
! 	* libgnarl/s-vxwext__rtp.ads: Likewise.
! 	* libgnarl/s-vxwork__aarch64.ads: Likewise.
! 	* libgnarl/s-vxwork__arm.ads: Likewise.
! 	* libgnarl/s-vxwork__ppc.ads: Likewise.
! 	* libgnarl/s-vxwork__x86.ads: Likewise.
! 	* libgnarl/thread.c: Likewise.
! 	* libgnat/a-assert.adb: Likewise.
! 	* libgnat/a-assert.ads: Likewise.
! 	* libgnat/a-btgbso.adb: Likewise.
! 	* libgnat/a-btgbso.ads: Likewise.
! 	* libgnat/a-calari.adb: Likewise.
! 	* libgnat/a-calari.ads: Likewise.
! 	* libgnat/a-calcon.adb: Likewise.
! 	* libgnat/a-calcon.ads: Likewise.
! 	* libgnat/a-caldel.adb: Likewise.
! 	* libgnat/a-caldel.ads: Likewise.
! 	* libgnat/a-calend.adb: Likewise.
! 	* libgnat/a-calend.ads: Likewise.
! 	* libgnat/a-calfor.adb: Likewise.
! 	* libgnat/a-calfor.ads: Likewise.
! 	* libgnat/a-catizo.adb: Likewise.
! 	* libgnat/a-cbdlli.adb: Likewise.
! 	* libgnat/a-cbdlli.ads: Likewise.
! 	* libgnat/a-cbhama.adb: Likewise.
! 	* libgnat/a-cbhama.ads: Likewise.
! 	* libgnat/a-cbhase.adb: Likewise.
! 	* libgnat/a-cbhase.ads: Likewise.
! 	* libgnat/a-cbmutr.adb: Likewise.
! 	* libgnat/a-cbmutr.ads: Likewise.
! 	* libgnat/a-cborma.adb: Likewise.
! 	* libgnat/a-cborma.ads: Likewise.
! 	* libgnat/a-cborse.adb: Likewise.
! 	* libgnat/a-cborse.ads: Likewise.
! 	* libgnat/a-cbprqu.adb: Likewise.
! 	* libgnat/a-cbprqu.ads: Likewise.
! 	* libgnat/a-cbsyqu.adb: Likewise.
! 	* libgnat/a-cbsyqu.ads: Likewise.
! 	* libgnat/a-cdlili.adb: Likewise.
! 	* libgnat/a-cdlili.ads: Likewise.
! 	* libgnat/a-cfdlli.adb: Likewise.
! 	* libgnat/a-cfdlli.ads: Likewise.
! 	* libgnat/a-cfhama.adb: Likewise.
! 	* libgnat/a-cfhama.ads: Likewise.
! 	* libgnat/a-cfhase.adb: Likewise.
! 	* libgnat/a-cfhase.ads: Likewise.
! 	* libgnat/a-cfinve.adb: Likewise.
! 	* libgnat/a-cfinve.ads: Likewise.
! 	* libgnat/a-cforma.adb: Likewise.
! 	* libgnat/a-cforma.ads: Likewise.
! 	* libgnat/a-cforse.adb: Likewise.
! 	* libgnat/a-cforse.ads: Likewise.
! 	* libgnat/a-cgaaso.adb: Likewise.
! 	* libgnat/a-cgaaso.ads: Likewise.
! 	* libgnat/a-cgarso.adb: Likewise.
! 	* libgnat/a-cgcaso.adb: Likewise.
! 	* libgnat/a-chacon.adb: Likewise.
! 	* libgnat/a-chacon.ads: Likewise.
! 	* libgnat/a-chahan.adb: Likewise.
! 	* libgnat/a-chahan.ads: Likewise.
! 	* libgnat/a-chlat9.ads: Likewise.
! 	* libgnat/a-chtgbk.adb: Likewise.
! 	* libgnat/a-chtgbk.ads: Likewise.
! 	* libgnat/a-chtgbo.adb: Likewise.
! 	* libgnat/a-chtgbo.ads: Likewise.
! 	* libgnat/a-chtgke.adb: Likewise.
! 	* libgnat/a-chtgke.ads: Likewise.
! 	* libgnat/a-chtgop.adb: Likewise.
! 	* libgnat/a-chtgop.ads: Likewise.
! 	* libgnat/a-chzla1.ads: Likewise.
! 	* libgnat/a-chzla9.ads: Likewise.
! 	* libgnat/a-cidlli.adb: Likewise.
! 	* libgnat/a-cidlli.ads: Likewise.
! 	* libgnat/a-cihama.adb: Likewise.
! 	* libgnat/a-cihama.ads: Likewise.
! 	* libgnat/a-cihase.adb: Likewise.
! 	* libgnat/a-cihase.ads: Likewise.
! 	* libgnat/a-cimutr.adb: Likewise.
! 	* libgnat/a-cimutr.ads: Likewise.
! 	* libgnat/a-ciorma.adb: Likewise.
! 	* libgnat/a-ciorma.ads: Likewise.
! 	* libgnat/a-ciormu.adb: Likewise.
! 	* libgnat/a-ciormu.ads: Likewise.
! 	* libgnat/a-ciorse.adb: Likewise.
! 	* libgnat/a-ciorse.ads: Likewise.
! 	* libgnat/a-clrefi.adb: Likewise.
! 	* libgnat/a-clrefi.ads: Likewise.
! 	* libgnat/a-coboho.adb: Likewise.
! 	* libgnat/a-coboho.ads: Likewise.
! 	* libgnat/a-cobove.adb: Likewise.
! 	* libgnat/a-cobove.ads: Likewise.
! 	* libgnat/a-cofove.adb: Likewise.
! 	* libgnat/a-cofove.ads: Likewise.
! 	* libgnat/a-cofuba.adb: Likewise.
! 	* libgnat/a-cofuba.ads: Likewise.
! 	* libgnat/a-cofuma.adb: Likewise.
! 	* libgnat/a-cofuma.ads: Likewise.
! 	* libgnat/a-cofuse.adb: Likewise.
! 	* libgnat/a-cofuse.ads: Likewise.
! 	* libgnat/a-cofuve.adb: Likewise.
! 	* libgnat/a-cofuve.ads: Likewise.
! 	* libgnat/a-cogeso.adb: Likewise.
! 	* libgnat/a-cogeso.ads: Likewise.
! 	* libgnat/a-cohama.adb: Likewise.
! 	* libgnat/a-cohama.ads: Likewise.
! 	* libgnat/a-cohase.adb: Likewise.
! 	* libgnat/a-cohase.ads: Likewise.
! 	* libgnat/a-cohata.ads: Likewise.
! 	* libgnat/a-coinho.adb: Likewise.
! 	* libgnat/a-coinho.ads: Likewise.
! 	* libgnat/a-coinho__shared.adb: Likewise.
! 	* libgnat/a-coinho__shared.ads: Likewise.
! 	* libgnat/a-coinve.adb: Likewise.
! 	* libgnat/a-coinve.ads: Likewise.
! 	* libgnat/a-colien.adb: Likewise.
! 	* libgnat/a-colien.ads: Likewise.
! 	* libgnat/a-colire.adb: Likewise.
! 	* libgnat/a-colire.ads: Likewise.
! 	* libgnat/a-comlin.adb: Likewise.
! 	* libgnat/a-comlin.ads: Likewise.
! 	* libgnat/a-comutr.adb: Likewise.
! 	* libgnat/a-comutr.ads: Likewise.
! 	* libgnat/a-conhel.adb: Likewise.
! 	* libgnat/a-conhel.ads: Likewise.
! 	* libgnat/a-convec.adb: Likewise.
! 	* libgnat/a-convec.ads: Likewise.
! 	* libgnat/a-coorma.adb: Likewise.
! 	* libgnat/a-coorma.ads: Likewise.
! 	* libgnat/a-coormu.adb: Likewise.
! 	* libgnat/a-coormu.ads: Likewise.
! 	* libgnat/a-coorse.adb: Likewise.
! 	* libgnat/a-coorse.ads: Likewise.
! 	* libgnat/a-coprnu.adb: Likewise.
! 	* libgnat/a-coprnu.ads: Likewise.
! 	* libgnat/a-costso.adb: Likewise.
! 	* libgnat/a-costso.ads: Likewise.
! 	* libgnat/a-crbltr.ads: Likewise.
! 	* libgnat/a-crbtgk.adb: Likewise.
! 	* libgnat/a-crbtgk.ads: Likewise.
! 	* libgnat/a-crbtgo.adb: Likewise.
! 	* libgnat/a-crbtgo.ads: Likewise.
! 	* libgnat/a-crdlli.adb: Likewise.
! 	* libgnat/a-crdlli.ads: Likewise.
! 	* libgnat/a-csquin.ads: Likewise.
! 	* libgnat/a-cuprqu.adb: Likewise.
! 	* libgnat/a-cuprqu.ads: Likewise.
! 	* libgnat/a-cusyqu.adb: Likewise.
! 	* libgnat/a-cusyqu.ads: Likewise.
! 	* libgnat/a-cwila1.ads: Likewise.
! 	* libgnat/a-cwila9.ads: Likewise.
! 	* libgnat/a-decima.adb: Likewise.
! 	* libgnat/a-decima.ads: Likewise.
! 	* libgnat/a-decima__128.ads: Likewise.
! 	* libgnat/a-dhfina.adb: Likewise.
! 	* libgnat/a-dhfina.ads: Likewise.
! 	* libgnat/a-diocst.adb: Likewise.
! 	* libgnat/a-diocst.ads: Likewise.
! 	* libgnat/a-direct.adb: Likewise.
! 	* libgnat/a-direct.ads: Likewise.
! 	* libgnat/a-direio.adb: Likewise.
! 	* libgnat/a-direio.ads: Likewise.
! 	* libgnat/a-dirval.adb: Likewise.
! 	* libgnat/a-dirval.ads: Likewise.
! 	* libgnat/a-dirval__mingw.adb: Likewise.
! 	* libgnat/a-einuoc.adb: Likewise.
! 	* libgnat/a-einuoc.ads: Likewise.
! 	* libgnat/a-elchha.adb: Likewise.
! 	* libgnat/a-elchha.ads: Likewise.
! 	* libgnat/a-envvar.adb: Likewise.
! 	* libgnat/a-excach.adb: Likewise.
! 	* libgnat/a-except.adb: Likewise.
! 	* libgnat/a-except.ads: Likewise.
! 	* libgnat/a-exctra.adb: Likewise.
! 	* libgnat/a-exctra.ads: Likewise.
! 	* libgnat/a-exexda.adb: Likewise.
! 	* libgnat/a-exexpr.adb: Likewise.
! 	* libgnat/a-exextr.adb: Likewise.
! 	* libgnat/a-exstat.adb: Likewise.
! 	* libgnat/a-finali.adb: Likewise.
! 	* libgnat/a-finali.ads: Likewise.
! 	* libgnat/a-locale.adb: Likewise.
! 	* libgnat/a-locale.ads: Likewise.
! 	* libgnat/a-nagefl.ads: Likewise.
! 	* libgnat/a-naliop.ads: Likewise.
! 	* libgnat/a-naliop__nolibm.ads: Likewise.
! 	* libgnat/a-nallfl.ads: Likewise.
! 	* libgnat/a-nallfl__wraplf.ads: Likewise.
! 	* libgnat/a-nalofl.ads: Likewise.
! 	* libgnat/a-nashfl.ads: Likewise.
! 	* libgnat/a-nashfl__wraplf.ads: Likewise.
! 	* libgnat/a-nbnbig.adb: Likewise.
! 	* libgnat/a-nbnbin.adb: Likewise.
! 	* libgnat/a-nbnbin__gmp.adb: Likewise.
! 	* libgnat/a-nbnbre.adb: Likewise.
! 	* libgnat/a-ngcefu.adb: Likewise.
! 	* libgnat/a-ngcoar.adb: Likewise.
! 	* libgnat/a-ngcoty.adb: Likewise.
! 	* libgnat/a-ngcoty.ads: Likewise.
! 	* libgnat/a-ngelfu.adb: Likewise.
! 	* libgnat/a-ngelfu.ads: Likewise.
! 	* libgnat/a-ngrear.adb: Likewise.
! 	* libgnat/a-ngrear.ads: Likewise.
! 	* libgnat/a-nuauco.ads: Likewise.
! 	* libgnat/a-nuauco__x86.ads: Likewise.
! 	* libgnat/a-nuaufl.ads: Likewise.
! 	* libgnat/a-nuaufl__wraplf.ads: Likewise.
! 	* libgnat/a-nudira.adb: Likewise.
! 	* libgnat/a-nudira.ads: Likewise.
! 	* libgnat/a-nuflra.adb: Likewise.
! 	* libgnat/a-nuflra.ads: Likewise.
! 	* libgnat/a-numaux.ads: Likewise.
! 	* libgnat/a-rbtgbk.adb: Likewise.
! 	* libgnat/a-rbtgbk.ads: Likewise.
! 	* libgnat/a-rbtgbo.adb: Likewise.
! 	* libgnat/a-rbtgbo.ads: Likewise.
! 	* libgnat/a-rbtgso.adb: Likewise.
! 	* libgnat/a-rbtgso.ads: Likewise.
! 	* libgnat/a-sbecin.adb: Likewise.
! 	* libgnat/a-sbecin.ads: Likewise.
! 	* libgnat/a-sbhcin.adb: Likewise.
! 	* libgnat/a-sbhcin.ads: Likewise.
! 	* libgnat/a-sblcin.adb: Likewise.
! 	* libgnat/a-sblcin.ads: Likewise.
! 	* libgnat/a-secain.adb: Likewise.
! 	* libgnat/a-secain.ads: Likewise.
! 	* libgnat/a-sequio.adb: Likewise.
! 	* libgnat/a-sequio.ads: Likewise.
! 	* libgnat/a-sfecin.ads: Likewise.
! 	* libgnat/a-sfhcin.ads: Likewise.
! 	* libgnat/a-sflcin.ads: Likewise.
! 	* libgnat/a-shcain.adb: Likewise.
! 	* libgnat/a-shcain.ads: Likewise.
! 	* libgnat/a-siocst.adb: Likewise.
! 	* libgnat/a-siocst.ads: Likewise.
! 	* libgnat/a-slcain.adb: Likewise.
! 	* libgnat/a-slcain.ads: Likewise.
! 	* libgnat/a-ssicst.adb: Likewise.
! 	* libgnat/a-ssicst.ads: Likewise.
! 	* libgnat/a-stboha.adb: Likewise.
! 	* libgnat/a-stbubo.adb: Likewise.
! 	* libgnat/a-stbubo.ads: Likewise.
! 	* libgnat/a-stbufi.adb: Likewise.
! 	* libgnat/a-stbufi.ads: Likewise.
! 	* libgnat/a-stbufo.adb: Likewise.
! 	* libgnat/a-stbufo.ads: Likewise.
! 	* libgnat/a-stbuun.adb: Likewise.
! 	* libgnat/a-stbuut.adb: Likewise.
! 	* libgnat/a-stbuut.ads: Likewise.
! 	* libgnat/a-stmaco.ads: Likewise.
! 	* libgnat/a-storio.adb: Likewise.
! 	* libgnat/a-strbou.adb: Likewise.
! 	* libgnat/a-strbou.ads: Likewise.
! 	* libgnat/a-stream.adb: Likewise.
! 	* libgnat/a-stream.ads: Likewise.
! 	* libgnat/a-strfix.adb: Likewise.
! 	* libgnat/a-strhas.adb: Likewise.
! 	* libgnat/a-strmap.adb: Likewise.
! 	* libgnat/a-strmap.ads: Likewise.
! 	* libgnat/a-strsea.adb: Likewise.
! 	* libgnat/a-strsea.ads: Likewise.
! 	* libgnat/a-strsto.ads: Likewise.
! 	* libgnat/a-strsup.adb: Likewise.
! 	* libgnat/a-strsup.ads: Likewise.
! 	* libgnat/a-strunb.adb: Likewise.
! 	* libgnat/a-strunb.ads: Likewise.
! 	* libgnat/a-strunb__shared.adb: Likewise.
! 	* libgnat/a-strunb__shared.ads: Likewise.
! 	* libgnat/a-ststbo.adb: Likewise.
! 	* libgnat/a-ststbo.ads: Likewise.
! 	* libgnat/a-ststio.adb: Likewise.
! 	* libgnat/a-ststio.ads: Likewise.
! 	* libgnat/a-ststun.adb: Likewise.
! 	* libgnat/a-ststun.ads: Likewise.
! 	* libgnat/a-sttebu.adb: Likewise.
! 	* libgnat/a-stunau.adb: Likewise.
! 	* libgnat/a-stunau.ads: Likewise.
! 	* libgnat/a-stunau__shared.adb: Likewise.
! 	* libgnat/a-stunha.adb: Likewise.
! 	* libgnat/a-stuten.adb: Likewise.
! 	* libgnat/a-stwibo.adb: Likewise.
! 	* libgnat/a-stwibo.ads: Likewise.
! 	* libgnat/a-stwifi.adb: Likewise.
! 	* libgnat/a-stwiha.adb: Likewise.
! 	* libgnat/a-stwima.adb: Likewise.
! 	* libgnat/a-stwima.ads: Likewise.
! 	* libgnat/a-stwise.adb: Likewise.
! 	* libgnat/a-stwise.ads: Likewise.
! 	* libgnat/a-stwisu.adb: Likewise.
! 	* libgnat/a-stwisu.ads: Likewise.
! 	* libgnat/a-stwiun.adb: Likewise.
! 	* libgnat/a-stwiun.ads: Likewise.
! 	* libgnat/a-stwiun__shared.adb: Likewise.
! 	* libgnat/a-stwiun__shared.ads: Likewise.
! 	* libgnat/a-stzbou.adb: Likewise.
! 	* libgnat/a-stzbou.ads: Likewise.
! 	* libgnat/a-stzfix.adb: Likewise.
! 	* libgnat/a-stzhas.adb: Likewise.
! 	* libgnat/a-stzmap.adb: Likewise.
! 	* libgnat/a-stzmap.ads: Likewise.
! 	* libgnat/a-stzsea.adb: Likewise.
! 	* libgnat/a-stzsea.ads: Likewise.
! 	* libgnat/a-stzsup.adb: Likewise.
! 	* libgnat/a-stzsup.ads: Likewise.
! 	* libgnat/a-stzunb.adb: Likewise.
! 	* libgnat/a-stzunb.ads: Likewise.
! 	* libgnat/a-stzunb__shared.adb: Likewise.
! 	* libgnat/a-stzunb__shared.ads: Likewise.
! 	* libgnat/a-suecin.adb: Likewise.
! 	* libgnat/a-suecin.ads: Likewise.
! 	* libgnat/a-suenco.adb: Likewise.
! 	* libgnat/a-suenst.adb: Likewise.
! 	* libgnat/a-suewst.adb: Likewise.
! 	* libgnat/a-suezst.adb: Likewise.
! 	* libgnat/a-suhcin.adb: Likewise.
! 	* libgnat/a-suhcin.ads: Likewise.
! 	* libgnat/a-sulcin.adb: Likewise.
! 	* libgnat/a-sulcin.ads: Likewise.
! 	* libgnat/a-suteio.adb: Likewise.
! 	* libgnat/a-suteio.ads: Likewise.
! 	* libgnat/a-suteio__shared.adb: Likewise.
! 	* libgnat/a-swbwha.adb: Likewise.
! 	* libgnat/a-swmwco.ads: Likewise.
! 	* libgnat/a-swunau.adb: Likewise.
! 	* libgnat/a-swunau.ads: Likewise.
! 	* libgnat/a-swunau__shared.adb: Likewise.
! 	* libgnat/a-swuwha.adb: Likewise.
! 	* libgnat/a-swuwti.adb: Likewise.
! 	* libgnat/a-swuwti.ads: Likewise.
! 	* libgnat/a-swuwti__shared.adb: Likewise.
! 	* libgnat/a-szbzha.adb: Likewise.
! 	* libgnat/a-szmzco.ads: Likewise.
! 	* libgnat/a-szunau.adb: Likewise.
! 	* libgnat/a-szunau.ads: Likewise.
! 	* libgnat/a-szunau__shared.adb: Likewise.
! 	* libgnat/a-szuzha.adb: Likewise.
! 	* libgnat/a-szuzti.adb: Likewise.
! 	* libgnat/a-szuzti.ads: Likewise.
! 	* libgnat/a-szuzti__shared.adb: Likewise.
! 	* libgnat/a-tags.adb: Likewise.
! 	* libgnat/a-tags.ads: Likewise.
! 	* libgnat/a-teioed.adb: Likewise.
! 	* libgnat/a-teioed.ads: Likewise.
! 	* libgnat/a-textio.adb: Likewise.
! 	* libgnat/a-textio.ads: Likewise.
! 	* libgnat/a-tiboio.adb: Likewise.
! 	* libgnat/a-ticoau.adb: Likewise.
! 	* libgnat/a-ticoau.ads: Likewise.
! 	* libgnat/a-ticoio.adb: Likewise.
! 	* libgnat/a-ticoio.ads: Likewise.
! 	* libgnat/a-tideau.adb: Likewise.
! 	* libgnat/a-tideau.ads: Likewise.
! 	* libgnat/a-tideio.adb: Likewise.
! 	* libgnat/a-tideio.ads: Likewise.
! 	* libgnat/a-tideio__128.adb: Likewise.
! 	* libgnat/a-tienau.adb: Likewise.
! 	* libgnat/a-tienau.ads: Likewise.
! 	* libgnat/a-tienio.adb: Likewise.
! 	* libgnat/a-tifiau.adb: Likewise.
! 	* libgnat/a-tifiau.ads: Likewise.
! 	* libgnat/a-tifiio.adb: Likewise.
! 	* libgnat/a-tifiio__128.adb: Likewise.
! 	* libgnat/a-tiflau.adb: Likewise.
! 	* libgnat/a-tiflau.ads: Likewise.
! 	* libgnat/a-tiflio.adb: Likewise.
! 	* libgnat/a-tiflio.ads: Likewise.
! 	* libgnat/a-tigeau.adb: Likewise.
! 	* libgnat/a-tigeau.ads: Likewise.
! 	* libgnat/a-tigeli.adb: Likewise.
! 	* libgnat/a-tiinau.adb: Likewise.
! 	* libgnat/a-tiinau.ads: Likewise.
! 	* libgnat/a-tiinio.adb: Likewise.
! 	* libgnat/a-tiinio.ads: Likewise.
! 	* libgnat/a-tiinio__128.adb: Likewise.
! 	* libgnat/a-timoio.adb: Likewise.
! 	* libgnat/a-timoio.ads: Likewise.
! 	* libgnat/a-timoio__128.adb: Likewise.
! 	* libgnat/a-tiocst.adb: Likewise.
! 	* libgnat/a-tiocst.ads: Likewise.
! 	* libgnat/a-tirsfi.adb: Likewise.
! 	* libgnat/a-tirsfi.ads: Likewise.
! 	* libgnat/a-titest.adb: Likewise.
! 	* libgnat/a-undesu.adb: Likewise.
! 	* libgnat/a-wichha.adb: Likewise.
! 	* libgnat/a-wichun.adb: Likewise.
! 	* libgnat/a-wichun.ads: Likewise.
! 	* libgnat/a-witeio.adb: Likewise.
! 	* libgnat/a-witeio.ads: Likewise.
! 	* libgnat/a-wrstfi.adb: Likewise.
! 	* libgnat/a-wrstfi.ads: Likewise.
! 	* libgnat/a-wtcoau.adb: Likewise.
! 	* libgnat/a-wtcoau.ads: Likewise.
! 	* libgnat/a-wtcoio.adb: Likewise.
! 	* libgnat/a-wtcstr.adb: Likewise.
! 	* libgnat/a-wtcstr.ads: Likewise.
! 	* libgnat/a-wtdeau.adb: Likewise.
! 	* libgnat/a-wtdeau.ads: Likewise.
! 	* libgnat/a-wtdeio.adb: Likewise.
! 	* libgnat/a-wtdeio__128.adb: Likewise.
! 	* libgnat/a-wtedit.adb: Likewise.
! 	* libgnat/a-wtedit.ads: Likewise.
! 	* libgnat/a-wtenau.adb: Likewise.
! 	* libgnat/a-wtenau.ads: Likewise.
! 	* libgnat/a-wtenio.adb: Likewise.
! 	* libgnat/a-wtfiau.adb: Likewise.
! 	* libgnat/a-wtfiau.ads: Likewise.
! 	* libgnat/a-wtfiio.adb: Likewise.
! 	* libgnat/a-wtfiio__128.adb: Likewise.
! 	* libgnat/a-wtflau.adb: Likewise.
! 	* libgnat/a-wtflau.ads: Likewise.
! 	* libgnat/a-wtflio.adb: Likewise.
! 	* libgnat/a-wtgeau.adb: Likewise.
! 	* libgnat/a-wtgeau.ads: Likewise.
! 	* libgnat/a-wtinau.adb: Likewise.
! 	* libgnat/a-wtinau.ads: Likewise.
! 	* libgnat/a-wtinio.adb: Likewise.
! 	* libgnat/a-wtinio__128.adb: Likewise.
! 	* libgnat/a-wtmoio.adb: Likewise.
! 	* libgnat/a-wtmoio.ads: Likewise.
! 	* libgnat/a-wtmoio__128.adb: Likewise.
! 	* libgnat/a-wttest.adb: Likewise.
! 	* libgnat/a-wwboio.adb: Likewise.
! 	* libgnat/a-zchhan.adb: Likewise.
! 	* libgnat/a-zchuni.adb: Likewise.
! 	* libgnat/a-zchuni.ads: Likewise.
! 	* libgnat/a-zrstfi.adb: Likewise.
! 	* libgnat/a-zrstfi.ads: Likewise.
! 	* libgnat/a-ztcoau.adb: Likewise.
! 	* libgnat/a-ztcoio.adb: Likewise.
! 	* libgnat/a-ztcstr.adb: Likewise.
! 	* libgnat/a-ztcstr.ads: Likewise.
! 	* libgnat/a-ztdeau.adb: Likewise.
! 	* libgnat/a-ztdeau.ads: Likewise.
! 	* libgnat/a-ztdeio.adb: Likewise.
! 	* libgnat/a-ztdeio__128.adb: Likewise.
! 	* libgnat/a-ztedit.adb: Likewise.
! 	* libgnat/a-ztedit.ads: Likewise.
! 	* libgnat/a-ztenau.adb: Likewise.
! 	* libgnat/a-ztenau.ads: Likewise.
! 	* libgnat/a-ztenio.adb: Likewise.
! 	* libgnat/a-ztexio.adb: Likewise.
! 	* libgnat/a-ztexio.ads: Likewise.
! 	* libgnat/a-ztfiau.adb: Likewise.
! 	* libgnat/a-ztfiau.ads: Likewise.
! 	* libgnat/a-ztfiio.adb: Likewise.
! 	* libgnat/a-ztfiio__128.adb: Likewise.
! 	* libgnat/a-ztflau.adb: Likewise.
! 	* libgnat/a-ztflau.ads: Likewise.
! 	* libgnat/a-ztflio.adb: Likewise.
! 	* libgnat/a-ztgeau.adb: Likewise.
! 	* libgnat/a-ztgeau.ads: Likewise.
! 	* libgnat/a-ztinau.adb: Likewise.
! 	* libgnat/a-ztinau.ads: Likewise.
! 	* libgnat/a-ztinio.adb: Likewise.
! 	* libgnat/a-ztinio__128.adb: Likewise.
! 	* libgnat/a-ztmoio.adb: Likewise.
! 	* libgnat/a-ztmoio__128.adb: Likewise.
! 	* libgnat/a-zttest.adb: Likewise.
! 	* libgnat/a-zzboio.adb: Likewise.
! 	* libgnat/g-allein.ads: Likewise.
! 	* libgnat/g-alleve.adb: Likewise.
! 	* libgnat/g-alleve.ads: Likewise.
! 	* libgnat/g-alleve__hard.adb: Likewise.
! 	* libgnat/g-alleve__hard.ads: Likewise.
! 	* libgnat/g-altcon.adb: Likewise.
! 	* libgnat/g-altcon.ads: Likewise.
! 	* libgnat/g-altive.ads: Likewise.
! 	* libgnat/g-alveop.adb: Likewise.
! 	* libgnat/g-alveop.ads: Likewise.
! 	* libgnat/g-alvety.ads: Likewise.
! 	* libgnat/g-alvevi.ads: Likewise.
! 	* libgnat/g-arrspl.adb: Likewise.
! 	* libgnat/g-arrspl.ads: Likewise.
! 	* libgnat/g-awk.adb: Likewise.
! 	* libgnat/g-awk.ads: Likewise.
! 	* libgnat/g-binenv.adb: Likewise.
! 	* libgnat/g-binenv.ads: Likewise.
! 	* libgnat/g-brapre.ads: Likewise.
! 	* libgnat/g-bubsor.adb: Likewise.
! 	* libgnat/g-bubsor.ads: Likewise.
! 	* libgnat/g-busora.adb: Likewise.
! 	* libgnat/g-busora.ads: Likewise.
! 	* libgnat/g-busorg.adb: Likewise.
! 	* libgnat/g-busorg.ads: Likewise.
! 	* libgnat/g-byorma.adb: Likewise.
! 	* libgnat/g-byorma.ads: Likewise.
! 	* libgnat/g-bytswa.adb: Likewise.
! 	* libgnat/g-bytswa.ads: Likewise.
! 	* libgnat/g-calend.adb: Likewise.
! 	* libgnat/g-calend.ads: Likewise.
! 	* libgnat/g-casuti.adb: Likewise.
! 	* libgnat/g-casuti.ads: Likewise.
! 	* libgnat/g-catiio.adb: Likewise.
! 	* libgnat/g-catiio.ads: Likewise.
! 	* libgnat/g-cgi.adb: Likewise.
! 	* libgnat/g-cgi.ads: Likewise.
! 	* libgnat/g-cgicoo.adb: Likewise.
! 	* libgnat/g-cgicoo.ads: Likewise.
! 	* libgnat/g-cgideb.adb: Likewise.
! 	* libgnat/g-cgideb.ads: Likewise.
! 	* libgnat/g-comlin.adb: Likewise.
! 	* libgnat/g-comlin.ads: Likewise.
! 	* libgnat/g-comver.adb: Likewise.
! 	* libgnat/g-comver.ads: Likewise.
! 	* libgnat/g-cppexc.adb: Likewise.
! 	* libgnat/g-cppexc.ads: Likewise.
! 	* libgnat/g-crc32.adb: Likewise.
! 	* libgnat/g-crc32.ads: Likewise.
! 	* libgnat/g-ctrl_c.adb: Likewise.
! 	* libgnat/g-ctrl_c.ads: Likewise.
! 	* libgnat/g-curexc.ads: Likewise.
! 	* libgnat/g-debpoo.adb: Likewise.
! 	* libgnat/g-debpoo.ads: Likewise.
! 	* libgnat/g-debuti.adb: Likewise.
! 	* libgnat/g-debuti.ads: Likewise.
! 	* libgnat/g-decstr.adb: Likewise.
! 	* libgnat/g-decstr.ads: Likewise.
! 	* libgnat/g-deutst.ads: Likewise.
! 	* libgnat/g-diopit.adb: Likewise.
! 	* libgnat/g-diopit.ads: Likewise.
! 	* libgnat/g-dirope.adb: Likewise.
! 	* libgnat/g-dirope.ads: Likewise.
! 	* libgnat/g-dynhta.adb: Likewise.
! 	* libgnat/g-dynhta.ads: Likewise.
! 	* libgnat/g-dyntab.adb: Likewise.
! 	* libgnat/g-dyntab.ads: Likewise.
! 	* libgnat/g-eacodu.adb: Likewise.
! 	* libgnat/g-encstr.adb: Likewise.
! 	* libgnat/g-encstr.ads: Likewise.
! 	* libgnat/g-enutst.ads: Likewise.
! 	* libgnat/g-excact.adb: Likewise.
! 	* libgnat/g-excact.ads: Likewise.
! 	* libgnat/g-except.ads: Likewise.
! 	* libgnat/g-exctra.adb: Likewise.
! 	* libgnat/g-exctra.ads: Likewise.
! 	* libgnat/g-expect.adb: Likewise.
! 	* libgnat/g-expect.ads: Likewise.
! 	* libgnat/g-exptty.adb: Likewise.
! 	* libgnat/g-exptty.ads: Likewise.
! 	* libgnat/g-flocon.ads: Likewise.
! 	* libgnat/g-forstr.adb: Likewise.
! 	* libgnat/g-forstr.ads: Likewise.
! 	* libgnat/g-graphs.adb: Likewise.
! 	* libgnat/g-graphs.ads: Likewise.
! 	* libgnat/g-heasor.adb: Likewise.
! 	* libgnat/g-heasor.ads: Likewise.
! 	* libgnat/g-hesora.adb: Likewise.
! 	* libgnat/g-hesora.ads: Likewise.
! 	* libgnat/g-hesorg.adb: Likewise.
! 	* libgnat/g-hesorg.ads: Likewise.
! 	* libgnat/g-htable.adb: Likewise.
! 	* libgnat/g-htable.ads: Likewise.
! 	* libgnat/g-io.adb: Likewise.
! 	* libgnat/g-io.ads: Likewise.
! 	* libgnat/g-io_aux.adb: Likewise.
! 	* libgnat/g-io_aux.ads: Likewise.
! 	* libgnat/g-lists.adb: Likewise.
! 	* libgnat/g-lists.ads: Likewise.
! 	* libgnat/g-locfil.adb: Likewise.
! 	* libgnat/g-locfil.ads: Likewise.
! 	* libgnat/g-mbdira.adb: Likewise.
! 	* libgnat/g-mbdira.ads: Likewise.
! 	* libgnat/g-mbflra.adb: Likewise.
! 	* libgnat/g-mbflra.ads: Likewise.
! 	* libgnat/g-md5.adb: Likewise.
! 	* libgnat/g-md5.ads: Likewise.
! 	* libgnat/g-memdum.adb: Likewise.
! 	* libgnat/g-memdum.ads: Likewise.
! 	* libgnat/g-moreex.adb: Likewise.
! 	* libgnat/g-moreex.ads: Likewise.
! 	* libgnat/g-os_lib.adb: Likewise.
! 	* libgnat/g-os_lib.ads: Likewise.
! 	* libgnat/g-pehage.adb: Likewise.
! 	* libgnat/g-pehage.ads: Likewise.
! 	* libgnat/g-rannum.adb: Likewise.
! 	* libgnat/g-rannum.ads: Likewise.
! 	* libgnat/g-regexp.adb: Likewise.
! 	* libgnat/g-regexp.ads: Likewise.
! 	* libgnat/g-regist.adb: Likewise.
! 	* libgnat/g-regist.ads: Likewise.
! 	* libgnat/g-regpat.adb: Likewise.
! 	* libgnat/g-regpat.ads: Likewise.
! 	* libgnat/g-rewdat.adb: Likewise.
! 	* libgnat/g-rewdat.ads: Likewise.
! 	* libgnat/g-sechas.adb: Likewise.
! 	* libgnat/g-sechas.ads: Likewise.
! 	* libgnat/g-sehamd.adb: Likewise.
! 	* libgnat/g-sehamd.ads: Likewise.
! 	* libgnat/g-sehash.adb: Likewise.
! 	* libgnat/g-sehash.ads: Likewise.
! 	* libgnat/g-sercom.adb: Likewise.
! 	* libgnat/g-sercom.ads: Likewise.
! 	* libgnat/g-sercom__linux.adb: Likewise.
! 	* libgnat/g-sercom__mingw.adb: Likewise.
! 	* libgnat/g-sestin.ads: Likewise.
! 	* libgnat/g-sets.adb: Likewise.
! 	* libgnat/g-sets.ads: Likewise.
! 	* libgnat/g-sha1.adb: Likewise.
! 	* libgnat/g-sha1.ads: Likewise.
! 	* libgnat/g-sha224.ads: Likewise.
! 	* libgnat/g-sha256.ads: Likewise.
! 	* libgnat/g-sha384.ads: Likewise.
! 	* libgnat/g-sha512.ads: Likewise.
! 	* libgnat/g-shsh32.adb: Likewise.
! 	* libgnat/g-shsh32.ads: Likewise.
! 	* libgnat/g-shsh64.adb: Likewise.
! 	* libgnat/g-shsh64.ads: Likewise.
! 	* libgnat/g-shshco.adb: Likewise.
! 	* libgnat/g-shshco.ads: Likewise.
! 	* libgnat/g-soccon.ads: Likewise.
! 	* libgnat/g-socket.adb: Likewise.
! 	* libgnat/g-socket.ads: Likewise.
! 	* libgnat/g-socket__dummy.adb: Likewise.
! 	* libgnat/g-socket__dummy.ads: Likewise.
! 	* libgnat/g-socpol.adb: Likewise.
! 	* libgnat/g-socpol.ads: Likewise.
! 	* libgnat/g-socpol__dummy.adb: Likewise.
! 	* libgnat/g-socpol__dummy.ads: Likewise.
! 	* libgnat/g-socthi.adb: Likewise.
! 	* libgnat/g-socthi.ads: Likewise.
! 	* libgnat/g-socthi__dummy.adb: Likewise.
! 	* libgnat/g-socthi__dummy.ads: Likewise.
! 	* libgnat/g-socthi__mingw.adb: Likewise.
! 	* libgnat/g-socthi__mingw.ads: Likewise.
! 	* libgnat/g-socthi__vxworks.adb: Likewise.
! 	* libgnat/g-socthi__vxworks.ads: Likewise.
! 	* libgnat/g-soliop.ads: Likewise.
! 	* libgnat/g-soliop__lynxos.ads: Likewise.
! 	* libgnat/g-soliop__mingw.ads: Likewise.
! 	* libgnat/g-soliop__qnx.ads: Likewise.
! 	* libgnat/g-soliop__solaris.ads: Likewise.
! 	* libgnat/g-sopowa.adb: Likewise.
! 	* libgnat/g-sopowa__mingw.adb: Likewise.
! 	* libgnat/g-sopowa__posix.adb: Likewise.
! 	* libgnat/g-sothco.adb: Likewise.
! 	* libgnat/g-sothco.ads: Likewise.
! 	* libgnat/g-sothco__dummy.adb: Likewise.
! 	* libgnat/g-sothco__dummy.ads: Likewise.
! 	* libgnat/g-souinf.ads: Likewise.
! 	* libgnat/g-spchge.adb: Likewise.
! 	* libgnat/g-spchge.ads: Likewise.
! 	* libgnat/g-speche.adb: Likewise.
! 	* libgnat/g-speche.ads: Likewise.
! 	* libgnat/g-spipat.adb: Likewise.
! 	* libgnat/g-spipat.ads: Likewise.
! 	* libgnat/g-spitbo.adb: Likewise.
! 	* libgnat/g-spitbo.ads: Likewise.
! 	* libgnat/g-spogwa.adb: Likewise.
! 	* libgnat/g-spogwa.ads: Likewise.
! 	* libgnat/g-sptabo.ads: Likewise.
! 	* libgnat/g-sptain.ads: Likewise.
! 	* libgnat/g-sptavs.ads: Likewise.
! 	* libgnat/g-sse.ads: Likewise.
! 	* libgnat/g-ssvety.ads: Likewise.
! 	* libgnat/g-sthcso.adb: Likewise.
! 	* libgnat/g-stheme.adb: Likewise.
! 	* libgnat/g-strhas.ads: Likewise.
! 	* libgnat/g-string.adb: Likewise.
! 	* libgnat/g-string.ads: Likewise.
! 	* libgnat/g-strspl.ads: Likewise.
! 	* libgnat/g-stseme.adb: Likewise.
! 	* libgnat/g-stsifd__sockets.adb: Likewise.
! 	* libgnat/g-table.adb: Likewise.
! 	* libgnat/g-table.ads: Likewise.
! 	* libgnat/g-tasloc.adb: Likewise.
! 	* libgnat/g-tasloc.ads: Likewise.
! 	* libgnat/g-timsta.adb: Likewise.
! 	* libgnat/g-timsta.ads: Likewise.
! 	* libgnat/g-traceb.adb: Likewise.
! 	* libgnat/g-traceb.ads: Likewise.
! 	* libgnat/g-trasym.adb: Likewise.
! 	* libgnat/g-trasym.ads: Likewise.
! 	* libgnat/g-tty.adb: Likewise.
! 	* libgnat/g-tty.ads: Likewise.
! 	* libgnat/g-u3spch.adb: Likewise.
! 	* libgnat/g-u3spch.ads: Likewise.
! 	* libgnat/g-utf_32.adb: Likewise.
! 	* libgnat/g-utf_32.ads: Likewise.
! 	* libgnat/g-wispch.adb: Likewise.
! 	* libgnat/g-wispch.ads: Likewise.
! 	* libgnat/g-wistsp.ads: Likewise.
! 	* libgnat/g-zspche.adb: Likewise.
! 	* libgnat/g-zspche.ads: Likewise.
! 	* libgnat/g-zstspl.ads: Likewise.
! 	* libgnat/gnat.ads: Likewise.
! 	* libgnat/i-c.adb: Likewise.
! 	* libgnat/i-cexten.ads: Likewise.
! 	* libgnat/i-cexten__128.ads: Likewise.
! 	* libgnat/i-cobol.adb: Likewise.
! 	* libgnat/i-cobol.ads: Likewise.
! 	* libgnat/i-cpoint.adb: Likewise.
! 	* libgnat/i-cpoint.ads: Likewise.
! 	* libgnat/i-cstrea.adb: Likewise.
! 	* libgnat/i-cstrea.ads: Likewise.
! 	* libgnat/i-cstrin.adb: Likewise.
! 	* libgnat/i-cstrin.ads: Likewise.
! 	* libgnat/i-fortra.adb: Likewise.
! 	* libgnat/i-pacdec.adb: Likewise.
! 	* libgnat/i-pacdec.ads: Likewise.
! 	* libgnat/i-vxwoio.adb: Likewise.
! 	* libgnat/i-vxwoio.ads: Likewise.
! 	* libgnat/i-vxwork.ads: Likewise.
! 	* libgnat/i-vxwork__x86.ads: Likewise.
! 	* libgnat/interfac.ads: Likewise.
! 	* libgnat/interfac__2020.ads: Likewise.
! 	* libgnat/memtrack.adb: Likewise.
! 	* libgnat/s-addima.adb: Likewise.
! 	* libgnat/s-addima.ads: Likewise.
! 	* libgnat/s-addope.adb: Likewise.
! 	* libgnat/s-addope.ads: Likewise.
! 	* libgnat/s-aoinar.adb: Likewise.
! 	* libgnat/s-aoinar.ads: Likewise.
! 	* libgnat/s-aomoar.adb: Likewise.
! 	* libgnat/s-aomoar.ads: Likewise.
! 	* libgnat/s-aotase.adb: Likewise.
! 	* libgnat/s-aotase.ads: Likewise.
! 	* libgnat/s-aridou.adb: Likewise.
! 	* libgnat/s-aridou.ads: Likewise.
! 	* libgnat/s-arit128.adb: Likewise.
! 	* libgnat/s-arit128.ads: Likewise.
! 	* libgnat/s-arit32.adb: Likewise.
! 	* libgnat/s-arit32.ads: Likewise.
! 	* libgnat/s-arit64.adb: Likewise.
! 	* libgnat/s-arit64.ads: Likewise.
! 	* libgnat/s-assert.adb: Likewise.
! 	* libgnat/s-assert.ads: Likewise.
! 	* libgnat/s-atacco.adb: Likewise.
! 	* libgnat/s-atacco.ads: Likewise.
! 	* libgnat/s-atocou.adb: Likewise.
! 	* libgnat/s-atocou.ads: Likewise.
! 	* libgnat/s-atocou__builtin.adb: Likewise.
! 	* libgnat/s-atoope.ads: Likewise.
! 	* libgnat/s-atopex.adb: Likewise.
! 	* libgnat/s-atopex.ads: Likewise.
! 	* libgnat/s-atopri.adb: Likewise.
! 	* libgnat/s-atopri.ads: Likewise.
! 	* libgnat/s-auxdec.adb: Likewise.
! 	* libgnat/s-auxdec.ads: Likewise.
! 	* libgnat/s-bignum.adb: Likewise.
! 	* libgnat/s-bignum.ads: Likewise.
! 	* libgnat/s-bitfie.ads: Likewise.
! 	* libgnat/s-bitops.adb: Likewise.
! 	* libgnat/s-bitops.ads: Likewise.
! 	* libgnat/s-bituti.adb: Likewise.
! 	* libgnat/s-bituti.ads: Likewise.
! 	* libgnat/s-boarop.ads: Likewise.
! 	* libgnat/s-boustr.adb: Likewise.
! 	* libgnat/s-boustr.ads: Likewise.
! 	* libgnat/s-bytswa.ads: Likewise.
! 	* libgnat/s-carsi8.adb: Likewise.
! 	* libgnat/s-carsi8.ads: Likewise.
! 	* libgnat/s-carun8.adb: Likewise.
! 	* libgnat/s-carun8.ads: Likewise.
! 	* libgnat/s-casi128.adb: Likewise.
! 	* libgnat/s-casi128.ads: Likewise.
! 	* libgnat/s-casi16.adb: Likewise.
! 	* libgnat/s-casi16.ads: Likewise.
! 	* libgnat/s-casi32.adb: Likewise.
! 	* libgnat/s-casi32.ads: Likewise.
! 	* libgnat/s-casi64.adb: Likewise.
! 	* libgnat/s-casi64.ads: Likewise.
! 	* libgnat/s-casuti.adb: Likewise.
! 	* libgnat/s-casuti.ads: Likewise.
! 	* libgnat/s-caun128.adb: Likewise.
! 	* libgnat/s-caun128.ads: Likewise.
! 	* libgnat/s-caun16.adb: Likewise.
! 	* libgnat/s-caun16.ads: Likewise.
! 	* libgnat/s-caun32.adb: Likewise.
! 	* libgnat/s-caun32.ads: Likewise.
! 	* libgnat/s-caun64.adb: Likewise.
! 	* libgnat/s-caun64.ads: Likewise.
! 	* libgnat/s-chepoo.ads: Likewise.
! 	* libgnat/s-commun.adb: Likewise.
! 	* libgnat/s-commun.ads: Likewise.
! 	* libgnat/s-conca2.adb: Likewise.
! 	* libgnat/s-conca2.ads: Likewise.
! 	* libgnat/s-conca3.adb: Likewise.
! 	* libgnat/s-conca3.ads: Likewise.
! 	* libgnat/s-conca4.adb: Likewise.
! 	* libgnat/s-conca4.ads: Likewise.
! 	* libgnat/s-conca5.adb: Likewise.
! 	* libgnat/s-conca5.ads: Likewise.
! 	* libgnat/s-conca6.adb: Likewise.
! 	* libgnat/s-conca6.ads: Likewise.
! 	* libgnat/s-conca7.adb: Likewise.
! 	* libgnat/s-conca7.ads: Likewise.
! 	* libgnat/s-conca8.adb: Likewise.
! 	* libgnat/s-conca8.ads: Likewise.
! 	* libgnat/s-conca9.adb: Likewise.
! 	* libgnat/s-conca9.ads: Likewise.
! 	* libgnat/s-crc32.adb: Likewise.
! 	* libgnat/s-crc32.ads: Likewise.
! 	* libgnat/s-crtl.ads: Likewise.
! 	* libgnat/s-dfmkio.ads: Likewise.
! 	* libgnat/s-dfmopr.ads: Likewise.
! 	* libgnat/s-dgmgop.ads: Likewise.
! 	* libgnat/s-diflio.adb: Likewise.
! 	* libgnat/s-diflio.ads: Likewise.
! 	* libgnat/s-diflmk.ads: Likewise.
! 	* libgnat/s-digemk.ads: Likewise.
! 	* libgnat/s-diinio.adb: Likewise.
! 	* libgnat/s-diinio.ads: Likewise.
! 	* libgnat/s-dilomk.ads: Likewise.
! 	* libgnat/s-dim.ads: Likewise.
! 	* libgnat/s-dimkio.ads: Likewise.
! 	* libgnat/s-dimmks.ads: Likewise.
! 	* libgnat/s-direio.adb: Likewise.
! 	* libgnat/s-direio.ads: Likewise.
! 	* libgnat/s-dlmkio.ads: Likewise.
! 	* libgnat/s-dlmopr.ads: Likewise.
! 	* libgnat/s-dmotpr.ads: Likewise.
! 	* libgnat/s-dorepr.adb: Likewise.
! 	* libgnat/s-dorepr__fma.adb: Likewise.
! 	* libgnat/s-dourea.adb: Likewise.
! 	* libgnat/s-dourea.ads: Likewise.
! 	* libgnat/s-dsaser.ads: Likewise.
! 	* libgnat/s-dwalin.adb: Likewise.
! 	* libgnat/s-dwalin.ads: Likewise.
! 	* libgnat/s-elaall.adb: Likewise.
! 	* libgnat/s-elaall.ads: Likewise.
! 	* libgnat/s-excdeb.adb: Likewise.
! 	* libgnat/s-excdeb.ads: Likewise.
! 	* libgnat/s-except.adb: Likewise.
! 	* libgnat/s-except.ads: Likewise.
! 	* libgnat/s-excmac__arm.adb: Likewise.
! 	* libgnat/s-excmac__arm.ads: Likewise.
! 	* libgnat/s-excmac__gcc.adb: Likewise.
! 	* libgnat/s-excmac__gcc.ads: Likewise.
! 	* libgnat/s-exctab.adb: Likewise.
! 	* libgnat/s-exctab.ads: Likewise.
! 	* libgnat/s-exctra.adb: Likewise.
! 	* libgnat/s-exctra.ads: Likewise.
! 	* libgnat/s-exnflt.ads: Likewise.
! 	* libgnat/s-exnint.adb: Likewise.
! 	* libgnat/s-exnint.ads: Likewise.
! 	* libgnat/s-exnlfl.ads: Likewise.
! 	* libgnat/s-exnllf.adb: Likewise.
! 	* libgnat/s-exnllf.ads: Likewise.
! 	* libgnat/s-exnlli.adb: Likewise.
! 	* libgnat/s-exnlli.ads: Likewise.
! 	* libgnat/s-exnllli.ads: Likewise.
! 	* libgnat/s-expint.adb: Likewise.
! 	* libgnat/s-expint.ads: Likewise.
! 	* libgnat/s-explli.adb: Likewise.
! 	* libgnat/s-explli.ads: Likewise.
! 	* libgnat/s-expllli.ads: Likewise.
! 	* libgnat/s-explllu.ads: Likewise.
! 	* libgnat/s-expllu.adb: Likewise.
! 	* libgnat/s-expllu.ads: Likewise.
! 	* libgnat/s-expmod.adb: Likewise.
! 	* libgnat/s-expmod.ads: Likewise.
! 	* libgnat/s-exponn.adb: Likewise.
! 	* libgnat/s-exponn.ads: Likewise.
! 	* libgnat/s-exponr.adb: Likewise.
! 	* libgnat/s-exponr.ads: Likewise.
! 	* libgnat/s-expont.adb: Likewise.
! 	* libgnat/s-expont.ads: Likewise.
! 	* libgnat/s-exponu.adb: Likewise.
! 	* libgnat/s-exponu.ads: Likewise.
! 	* libgnat/s-expuns.adb: Likewise.
! 	* libgnat/s-expuns.ads: Likewise.
! 	* libgnat/s-fatflt.ads: Likewise.
! 	* libgnat/s-fatgen.adb: Likewise.
! 	* libgnat/s-fatgen.ads: Likewise.
! 	* libgnat/s-fatlfl.ads: Likewise.
! 	* libgnat/s-fatllf.ads: Likewise.
! 	* libgnat/s-ficobl.ads: Likewise.
! 	* libgnat/s-filatt.ads: Likewise.
! 	* libgnat/s-fileio.adb: Likewise.
! 	* libgnat/s-fileio.ads: Likewise.
! 	* libgnat/s-finmas.adb: Likewise.
! 	* libgnat/s-finmas.ads: Likewise.
! 	* libgnat/s-finroo.adb: Likewise.
! 	* libgnat/s-finroo.ads: Likewise.
! 	* libgnat/s-flocon.adb: Likewise.
! 	* libgnat/s-flocon.ads: Likewise.
! 	* libgnat/s-flocon__none.adb: Likewise.
! 	* libgnat/s-fode128.ads: Likewise.
! 	* libgnat/s-fode32.ads: Likewise.
! 	* libgnat/s-fode64.ads: Likewise.
! 	* libgnat/s-fofi128.ads: Likewise.
! 	* libgnat/s-fofi32.ads: Likewise.
! 	* libgnat/s-fofi64.ads: Likewise.
! 	* libgnat/s-fore_d.adb: Likewise.
! 	* libgnat/s-fore_d.ads: Likewise.
! 	* libgnat/s-fore_f.adb: Likewise.
! 	* libgnat/s-fore_f.ads: Likewise.
! 	* libgnat/s-forrea.adb: Likewise.
! 	* libgnat/s-forrea.ads: Likewise.
! 	* libgnat/s-gearop.adb: Likewise.
! 	* libgnat/s-gearop.ads: Likewise.
! 	* libgnat/s-genbig.adb: Likewise.
! 	* libgnat/s-genbig.ads: Likewise.
! 	* libgnat/s-geveop.adb: Likewise.
! 	* libgnat/s-geveop.ads: Likewise.
! 	* libgnat/s-gloloc.adb: Likewise.
! 	* libgnat/s-gloloc.ads: Likewise.
! 	* libgnat/s-gloloc__mingw.adb: Likewise.
! 	* libgnat/s-htable.adb: Likewise.
! 	* libgnat/s-htable.ads: Likewise.
! 	* libgnat/s-imageb.adb: Likewise.
! 	* libgnat/s-imageb.ads: Likewise.
! 	* libgnat/s-imaged.adb: Likewise.
! 	* libgnat/s-imaged.ads: Likewise.
! 	* libgnat/s-imagef.adb: Likewise.
! 	* libgnat/s-imagef.ads: Likewise.
! 	* libgnat/s-imagei.adb: Likewise.
! 	* libgnat/s-imagei.ads: Likewise.
! 	* libgnat/s-imagen.adb: Likewise.
! 	* libgnat/s-imagen.ads: Likewise.
! 	* libgnat/s-imager.adb: Likewise.
! 	* libgnat/s-imager.ads: Likewise.
! 	* libgnat/s-imageu.adb: Likewise.
! 	* libgnat/s-imageu.ads: Likewise.
! 	* libgnat/s-imagew.adb: Likewise.
! 	* libgnat/s-imagew.ads: Likewise.
! 	* libgnat/s-imde128.ads: Likewise.
! 	* libgnat/s-imde32.ads: Likewise.
! 	* libgnat/s-imde64.ads: Likewise.
! 	* libgnat/s-imen16.ads: Likewise.
! 	* libgnat/s-imen32.ads: Likewise.
! 	* libgnat/s-imenu8.ads: Likewise.
! 	* libgnat/s-imfi128.ads: Likewise.
! 	* libgnat/s-imfi32.ads: Likewise.
! 	* libgnat/s-imfi64.ads: Likewise.
! 	* libgnat/s-imgbiu.adb: Likewise.
! 	* libgnat/s-imgbiu.ads: Likewise.
! 	* libgnat/s-imgboo.adb: Likewise.
! 	* libgnat/s-imgboo.ads: Likewise.
! 	* libgnat/s-imgcha.adb: Likewise.
! 	* libgnat/s-imgcha.ads: Likewise.
! 	* libgnat/s-imgflt.ads: Likewise.
! 	* libgnat/s-imgint.adb: Likewise.
! 	* libgnat/s-imgint.ads: Likewise.
! 	* libgnat/s-imglfl.ads: Likewise.
! 	* libgnat/s-imgllb.adb: Likewise.
! 	* libgnat/s-imgllb.ads: Likewise.
! 	* libgnat/s-imgllf.ads: Likewise.
! 	* libgnat/s-imglli.adb: Likewise.
! 	* libgnat/s-imglli.ads: Likewise.
! 	* libgnat/s-imglllb.ads: Likewise.
! 	* libgnat/s-imgllli.ads: Likewise.
! 	* libgnat/s-imglllu.ads: Likewise.
! 	* libgnat/s-imglllw.ads: Likewise.
! 	* libgnat/s-imgllu.adb: Likewise.
! 	* libgnat/s-imgllu.ads: Likewise.
! 	* libgnat/s-imgllw.adb: Likewise.
! 	* libgnat/s-imgllw.ads: Likewise.
! 	* libgnat/s-imgrea.adb: Likewise.
! 	* libgnat/s-imgrea.ads: Likewise.
! 	* libgnat/s-imguns.adb: Likewise.
! 	* libgnat/s-imguns.ads: Likewise.
! 	* libgnat/s-imguti.adb: Likewise.
! 	* libgnat/s-imguti.ads: Likewise.
! 	* libgnat/s-imgwch.adb: Likewise.
! 	* libgnat/s-imgwch.ads: Likewise.
! 	* libgnat/s-imgwiu.adb: Likewise.
! 	* libgnat/s-imgwiu.ads: Likewise.
! 	* libgnat/s-io.adb: Likewise.
! 	* libgnat/s-io.ads: Likewise.
! 	* libgnat/s-llflex.ads: Likewise.
! 	* libgnat/s-maccod.ads: Likewise.
! 	* libgnat/s-mantis.adb: Likewise.
! 	* libgnat/s-mantis.ads: Likewise.
! 	* libgnat/s-mastop.adb: Likewise.
! 	* libgnat/s-mastop.ads: Likewise.
! 	* libgnat/s-memcop.ads: Likewise.
! 	* libgnat/s-memory.adb: Likewise.
! 	* libgnat/s-memory.ads: Likewise.
! 	* libgnat/s-mmap.adb: Likewise.
! 	* libgnat/s-mmap.ads: Likewise.
! 	* libgnat/s-mmauni__long.ads: Likewise.
! 	* libgnat/s-mmosin__mingw.adb: Likewise.
! 	* libgnat/s-mmosin__mingw.ads: Likewise.
! 	* libgnat/s-mmosin__unix.adb: Likewise.
! 	* libgnat/s-mmosin__unix.ads: Likewise.
! 	* libgnat/s-multip.adb: Likewise.
! 	* libgnat/s-objrea.adb: Likewise.
! 	* libgnat/s-objrea.ads: Likewise.
! 	* libgnat/s-optide.adb: Likewise.
! 	* libgnat/s-os_lib.adb: Likewise.
! 	* libgnat/s-os_lib.ads: Likewise.
! 	* libgnat/s-osprim.ads: Likewise.
! 	* libgnat/s-osprim__darwin.adb: Likewise.
! 	* libgnat/s-osprim__lynxos.ads: Likewise.
! 	* libgnat/s-osprim__mingw.adb: Likewise.
! 	* libgnat/s-osprim__posix.adb: Likewise.
! 	* libgnat/s-osprim__posix2008.adb: Likewise.
! 	* libgnat/s-osprim__rtems.adb: Likewise.
! 	* libgnat/s-osprim__solaris.adb: Likewise.
! 	* libgnat/s-osprim__unix.adb: Likewise.
! 	* libgnat/s-osprim__x32.adb: Likewise.
! 	* libgnat/s-pack03.adb: Likewise.
! 	* libgnat/s-pack03.ads: Likewise.
! 	* libgnat/s-pack05.adb: Likewise.
! 	* libgnat/s-pack05.ads: Likewise.
! 	* libgnat/s-pack06.adb: Likewise.
! 	* libgnat/s-pack06.ads: Likewise.
! 	* libgnat/s-pack07.adb: Likewise.
! 	* libgnat/s-pack07.ads: Likewise.
! 	* libgnat/s-pack09.adb: Likewise.
! 	* libgnat/s-pack09.ads: Likewise.
! 	* libgnat/s-pack10.adb: Likewise.
! 	* libgnat/s-pack10.ads: Likewise.
! 	* libgnat/s-pack100.adb: Likewise.
! 	* libgnat/s-pack100.ads: Likewise.
! 	* libgnat/s-pack101.adb: Likewise.
! 	* libgnat/s-pack101.ads: Likewise.
! 	* libgnat/s-pack102.adb: Likewise.
! 	* libgnat/s-pack102.ads: Likewise.
! 	* libgnat/s-pack103.adb: Likewise.
! 	* libgnat/s-pack103.ads: Likewise.
! 	* libgnat/s-pack104.adb: Likewise.
! 	* libgnat/s-pack104.ads: Likewise.
! 	* libgnat/s-pack105.adb: Likewise.
! 	* libgnat/s-pack105.ads: Likewise.
! 	* libgnat/s-pack106.adb: Likewise.
! 	* libgnat/s-pack106.ads: Likewise.
! 	* libgnat/s-pack107.adb: Likewise.
! 	* libgnat/s-pack107.ads: Likewise.
! 	* libgnat/s-pack108.adb: Likewise.
! 	* libgnat/s-pack108.ads: Likewise.
! 	* libgnat/s-pack109.adb: Likewise.
! 	* libgnat/s-pack109.ads: Likewise.
! 	* libgnat/s-pack11.adb: Likewise.
! 	* libgnat/s-pack11.ads: Likewise.
! 	* libgnat/s-pack110.adb: Likewise.
! 	* libgnat/s-pack110.ads: Likewise.
! 	* libgnat/s-pack111.adb: Likewise.
! 	* libgnat/s-pack111.ads: Likewise.
! 	* libgnat/s-pack112.adb: Likewise.
! 	* libgnat/s-pack112.ads: Likewise.
! 	* libgnat/s-pack113.adb: Likewise.
! 	* libgnat/s-pack113.ads: Likewise.
! 	* libgnat/s-pack114.adb: Likewise.
! 	* libgnat/s-pack114.ads: Likewise.
! 	* libgnat/s-pack115.adb: Likewise.
! 	* libgnat/s-pack115.ads: Likewise.
! 	* libgnat/s-pack116.adb: Likewise.
! 	* libgnat/s-pack116.ads: Likewise.
! 	* libgnat/s-pack117.adb: Likewise.
! 	* libgnat/s-pack117.ads: Likewise.
! 	* libgnat/s-pack118.adb: Likewise.
! 	* libgnat/s-pack118.ads: Likewise.
! 	* libgnat/s-pack119.adb: Likewise.
! 	* libgnat/s-pack119.ads: Likewise.
! 	* libgnat/s-pack12.adb: Likewise.
! 	* libgnat/s-pack12.ads: Likewise.
! 	* libgnat/s-pack120.adb: Likewise.
! 	* libgnat/s-pack120.ads: Likewise.
! 	* libgnat/s-pack121.adb: Likewise.
! 	* libgnat/s-pack121.ads: Likewise.
! 	* libgnat/s-pack122.adb: Likewise.
! 	* libgnat/s-pack122.ads: Likewise.
! 	* libgnat/s-pack123.adb: Likewise.
! 	* libgnat/s-pack123.ads: Likewise.
! 	* libgnat/s-pack124.adb: Likewise.
! 	* libgnat/s-pack124.ads: Likewise.
! 	* libgnat/s-pack125.adb: Likewise.
! 	* libgnat/s-pack125.ads: Likewise.
! 	* libgnat/s-pack126.adb: Likewise.
! 	* libgnat/s-pack126.ads: Likewise.
! 	* libgnat/s-pack127.adb: Likewise.
! 	* libgnat/s-pack127.ads: Likewise.
! 	* libgnat/s-pack13.adb: Likewise.
! 	* libgnat/s-pack13.ads: Likewise.
! 	* libgnat/s-pack14.adb: Likewise.
! 	* libgnat/s-pack14.ads: Likewise.
! 	* libgnat/s-pack15.adb: Likewise.
! 	* libgnat/s-pack15.ads: Likewise.
! 	* libgnat/s-pack17.adb: Likewise.
! 	* libgnat/s-pack17.ads: Likewise.
! 	* libgnat/s-pack18.adb: Likewise.
! 	* libgnat/s-pack18.ads: Likewise.
! 	* libgnat/s-pack19.adb: Likewise.
! 	* libgnat/s-pack19.ads: Likewise.
! 	* libgnat/s-pack20.adb: Likewise.
! 	* libgnat/s-pack20.ads: Likewise.
! 	* libgnat/s-pack21.adb: Likewise.
! 	* libgnat/s-pack21.ads: Likewise.
! 	* libgnat/s-pack22.adb: Likewise.
! 	* libgnat/s-pack22.ads: Likewise.
! 	* libgnat/s-pack23.adb: Likewise.
! 	* libgnat/s-pack23.ads: Likewise.
! 	* libgnat/s-pack24.adb: Likewise.
! 	* libgnat/s-pack24.ads: Likewise.
! 	* libgnat/s-pack25.adb: Likewise.
! 	* libgnat/s-pack25.ads: Likewise.
! 	* libgnat/s-pack26.adb: Likewise.
! 	* libgnat/s-pack26.ads: Likewise.
! 	* libgnat/s-pack27.adb: Likewise.
! 	* libgnat/s-pack27.ads: Likewise.
! 	* libgnat/s-pack28.adb: Likewise.
! 	* libgnat/s-pack28.ads: Likewise.
! 	* libgnat/s-pack29.adb: Likewise.
! 	* libgnat/s-pack29.ads: Likewise.
! 	* libgnat/s-pack30.adb: Likewise.
! 	* libgnat/s-pack30.ads: Likewise.
! 	* libgnat/s-pack31.adb: Likewise.
! 	* libgnat/s-pack31.ads: Likewise.
! 	* libgnat/s-pack33.adb: Likewise.
! 	* libgnat/s-pack33.ads: Likewise.
! 	* libgnat/s-pack34.adb: Likewise.
! 	* libgnat/s-pack34.ads: Likewise.
! 	* libgnat/s-pack35.adb: Likewise.
! 	* libgnat/s-pack35.ads: Likewise.
! 	* libgnat/s-pack36.adb: Likewise.
! 	* libgnat/s-pack36.ads: Likewise.
! 	* libgnat/s-pack37.adb: Likewise.
! 	* libgnat/s-pack37.ads: Likewise.
! 	* libgnat/s-pack38.adb: Likewise.
! 	* libgnat/s-pack38.ads: Likewise.
! 	* libgnat/s-pack39.adb: Likewise.
! 	* libgnat/s-pack39.ads: Likewise.
! 	* libgnat/s-pack40.adb: Likewise.
! 	* libgnat/s-pack40.ads: Likewise.
! 	* libgnat/s-pack41.adb: Likewise.
! 	* libgnat/s-pack41.ads: Likewise.
! 	* libgnat/s-pack42.adb: Likewise.
! 	* libgnat/s-pack42.ads: Likewise.
! 	* libgnat/s-pack43.adb: Likewise.
! 	* libgnat/s-pack43.ads: Likewise.
! 	* libgnat/s-pack44.adb: Likewise.
! 	* libgnat/s-pack44.ads: Likewise.
! 	* libgnat/s-pack45.adb: Likewise.
! 	* libgnat/s-pack45.ads: Likewise.
! 	* libgnat/s-pack46.adb: Likewise.
! 	* libgnat/s-pack46.ads: Likewise.
! 	* libgnat/s-pack47.adb: Likewise.
! 	* libgnat/s-pack47.ads: Likewise.
! 	* libgnat/s-pack48.adb: Likewise.
! 	* libgnat/s-pack48.ads: Likewise.
! 	* libgnat/s-pack49.adb: Likewise.
! 	* libgnat/s-pack49.ads: Likewise.
! 	* libgnat/s-pack50.adb: Likewise.
! 	* libgnat/s-pack50.ads: Likewise.
! 	* libgnat/s-pack51.adb: Likewise.
! 	* libgnat/s-pack51.ads: Likewise.
! 	* libgnat/s-pack52.adb: Likewise.
! 	* libgnat/s-pack52.ads: Likewise.
! 	* libgnat/s-pack53.adb: Likewise.
! 	* libgnat/s-pack53.ads: Likewise.
! 	* libgnat/s-pack54.adb: Likewise.
! 	* libgnat/s-pack54.ads: Likewise.
! 	* libgnat/s-pack55.adb: Likewise.
! 	* libgnat/s-pack55.ads: Likewise.
! 	* libgnat/s-pack56.adb: Likewise.
! 	* libgnat/s-pack56.ads: Likewise.
! 	* libgnat/s-pack57.adb: Likewise.
! 	* libgnat/s-pack57.ads: Likewise.
! 	* libgnat/s-pack58.adb: Likewise.
! 	* libgnat/s-pack58.ads: Likewise.
! 	* libgnat/s-pack59.adb: Likewise.
! 	* libgnat/s-pack59.ads: Likewise.
! 	* libgnat/s-pack60.adb: Likewise.
! 	* libgnat/s-pack60.ads: Likewise.
! 	* libgnat/s-pack61.adb: Likewise.
! 	* libgnat/s-pack61.ads: Likewise.
! 	* libgnat/s-pack62.adb: Likewise.
! 	* libgnat/s-pack62.ads: Likewise.
! 	* libgnat/s-pack63.adb: Likewise.
! 	* libgnat/s-pack63.ads: Likewise.
! 	* libgnat/s-pack65.adb: Likewise.
! 	* libgnat/s-pack65.ads: Likewise.
! 	* libgnat/s-pack66.adb: Likewise.
! 	* libgnat/s-pack66.ads: Likewise.
! 	* libgnat/s-pack67.adb: Likewise.
! 	* libgnat/s-pack67.ads: Likewise.
! 	* libgnat/s-pack68.adb: Likewise.
! 	* libgnat/s-pack68.ads: Likewise.
! 	* libgnat/s-pack69.adb: Likewise.
! 	* libgnat/s-pack69.ads: Likewise.
! 	* libgnat/s-pack70.adb: Likewise.
! 	* libgnat/s-pack70.ads: Likewise.
! 	* libgnat/s-pack71.adb: Likewise.
! 	* libgnat/s-pack71.ads: Likewise.
! 	* libgnat/s-pack72.adb: Likewise.
! 	* libgnat/s-pack72.ads: Likewise.
! 	* libgnat/s-pack73.adb: Likewise.
! 	* libgnat/s-pack73.ads: Likewise.
! 	* libgnat/s-pack74.adb: Likewise.
! 	* libgnat/s-pack74.ads: Likewise.
! 	* libgnat/s-pack75.adb: Likewise.
! 	* libgnat/s-pack75.ads: Likewise.
! 	* libgnat/s-pack76.adb: Likewise.
! 	* libgnat/s-pack76.ads: Likewise.
! 	* libgnat/s-pack77.adb: Likewise.
! 	* libgnat/s-pack77.ads: Likewise.
! 	* libgnat/s-pack78.adb: Likewise.
! 	* libgnat/s-pack78.ads: Likewise.
! 	* libgnat/s-pack79.adb: Likewise.
! 	* libgnat/s-pack79.ads: Likewise.
! 	* libgnat/s-pack80.adb: Likewise.
! 	* libgnat/s-pack80.ads: Likewise.
! 	* libgnat/s-pack81.adb: Likewise.
! 	* libgnat/s-pack81.ads: Likewise.
! 	* libgnat/s-pack82.adb: Likewise.
! 	* libgnat/s-pack82.ads: Likewise.
! 	* libgnat/s-pack83.adb: Likewise.
! 	* libgnat/s-pack83.ads: Likewise.
! 	* libgnat/s-pack84.adb: Likewise.
! 	* libgnat/s-pack84.ads: Likewise.
! 	* libgnat/s-pack85.adb: Likewise.
! 	* libgnat/s-pack85.ads: Likewise.
! 	* libgnat/s-pack86.adb: Likewise.
! 	* libgnat/s-pack86.ads: Likewise.
! 	* libgnat/s-pack87.adb: Likewise.
! 	* libgnat/s-pack87.ads: Likewise.
! 	* libgnat/s-pack88.adb: Likewise.
! 	* libgnat/s-pack88.ads: Likewise.
! 	* libgnat/s-pack89.adb: Likewise.
! 	* libgnat/s-pack89.ads: Likewise.
! 	* libgnat/s-pack90.adb: Likewise.
! 	* libgnat/s-pack90.ads: Likewise.
! 	* libgnat/s-pack91.adb: Likewise.
! 	* libgnat/s-pack91.ads: Likewise.
! 	* libgnat/s-pack92.adb: Likewise.
! 	* libgnat/s-pack92.ads: Likewise.
! 	* libgnat/s-pack93.adb: Likewise.
! 	* libgnat/s-pack93.ads: Likewise.
! 	* libgnat/s-pack94.adb: Likewise.
! 	* libgnat/s-pack94.ads: Likewise.
! 	* libgnat/s-pack95.adb: Likewise.
! 	* libgnat/s-pack95.ads: Likewise.
! 	* libgnat/s-pack96.adb: Likewise.
! 	* libgnat/s-pack96.ads: Likewise.
! 	* libgnat/s-pack97.adb: Likewise.
! 	* libgnat/s-pack97.ads: Likewise.
! 	* libgnat/s-pack98.adb: Likewise.
! 	* libgnat/s-pack98.ads: Likewise.
! 	* libgnat/s-pack99.adb: Likewise.
! 	* libgnat/s-pack99.ads: Likewise.
! 	* libgnat/s-parame.adb: Likewise.
! 	* libgnat/s-parame.ads: Likewise.
! 	* libgnat/s-parame__hpux.ads: Likewise.
! 	* libgnat/s-parame__posix2008.ads: Likewise.
! 	* libgnat/s-parame__rtems.adb: Likewise.
! 	* libgnat/s-parame__vxworks.adb: Likewise.
! 	* libgnat/s-parame__vxworks.ads: Likewise.
! 	* libgnat/s-parint.adb: Likewise.
! 	* libgnat/s-parint.ads: Likewise.
! 	* libgnat/s-pehage.adb: Likewise.
! 	* libgnat/s-pehage.ads: Likewise.
! 	* libgnat/s-pooglo.adb: Likewise.
! 	* libgnat/s-pooglo.ads: Likewise.
! 	* libgnat/s-pooloc.adb: Likewise.
! 	* libgnat/s-pooloc.ads: Likewise.
! 	* libgnat/s-poosiz.adb: Likewise.
! 	* libgnat/s-poosiz.ads: Likewise.
! 	* libgnat/s-powflt.ads: Likewise.
! 	* libgnat/s-powlfl.ads: Likewise.
! 	* libgnat/s-powllf.ads: Likewise.
! 	* libgnat/s-purexc.ads: Likewise.
! 	* libgnat/s-putima.adb: Likewise.
! 	* libgnat/s-putima.ads: Likewise.
! 	* libgnat/s-rannum.adb: Likewise.
! 	* libgnat/s-rannum.ads: Likewise.
! 	* libgnat/s-ransee.adb: Likewise.
! 	* libgnat/s-ransee.ads: Likewise.
! 	* libgnat/s-regexp.adb: Likewise.
! 	* libgnat/s-regexp.ads: Likewise.
! 	* libgnat/s-regpat.adb: Likewise.
! 	* libgnat/s-regpat.ads: Likewise.
! 	* libgnat/s-resfil.adb: Likewise.
! 	* libgnat/s-resfil.ads: Likewise.
! 	* libgnat/s-restri.adb: Likewise.
! 	* libgnat/s-restri.ads: Likewise.
! 	* libgnat/s-rident.ads: Likewise.
! 	* libgnat/s-rpc.adb: Likewise.
! 	* libgnat/s-rpc.ads: Likewise.
! 	* libgnat/s-scaval.adb: Likewise.
! 	* libgnat/s-scaval.ads: Likewise.
! 	* libgnat/s-scaval__128.adb: Likewise.
! 	* libgnat/s-scaval__128.ads: Likewise.
! 	* libgnat/s-secsta.adb: Likewise.
! 	* libgnat/s-secsta.ads: Likewise.
! 	* libgnat/s-sequio.adb: Likewise.
! 	* libgnat/s-sequio.ads: Likewise.
! 	* libgnat/s-shabig.ads: Likewise.
! 	* libgnat/s-shasto.adb: Likewise.
! 	* libgnat/s-shasto.ads: Likewise.
! 	* libgnat/s-soflin.adb: Likewise.
! 	* libgnat/s-soflin.ads: Likewise.
! 	* libgnat/s-soliin.adb: Likewise.
! 	* libgnat/s-soliin.ads: Likewise.
! 	* libgnat/s-spsufi.adb: Likewise.
! 	* libgnat/s-spsufi.ads: Likewise.
! 	* libgnat/s-stache.adb: Likewise.
! 	* libgnat/s-stache.ads: Likewise.
! 	* libgnat/s-stalib.adb: Likewise.
! 	* libgnat/s-stalib.ads: Likewise.
! 	* libgnat/s-statxd.adb: Likewise.
! 	* libgnat/s-statxd.ads: Likewise.
! 	* libgnat/s-stausa.adb: Likewise.
! 	* libgnat/s-stausa.ads: Likewise.
! 	* libgnat/s-stchop.adb: Likewise.
! 	* libgnat/s-stchop.ads: Likewise.
! 	* libgnat/s-stchop__limit.ads: Likewise.
! 	* libgnat/s-stchop__vxworks.adb: Likewise.
! 	* libgnat/s-stoele.adb: Likewise.
! 	* libgnat/s-stoele.ads: Likewise.
! 	* libgnat/s-stopoo.adb: Likewise.
! 	* libgnat/s-stopoo.ads: Likewise.
! 	* libgnat/s-stposu.adb: Likewise.
! 	* libgnat/s-stposu.ads: Likewise.
! 	* libgnat/s-stratt.adb: Likewise.
! 	* libgnat/s-stratt.ads: Likewise.
! 	* libgnat/s-strcom.adb: Likewise.
! 	* libgnat/s-strcom.ads: Likewise.
! 	* libgnat/s-strhas.adb: Likewise.
! 	* libgnat/s-strhas.ads: Likewise.
! 	* libgnat/s-string.adb: Likewise.
! 	* libgnat/s-string.ads: Likewise.
! 	* libgnat/s-ststop.adb: Likewise.
! 	* libgnat/s-ststop.ads: Likewise.
! 	* libgnat/s-tasloc.adb: Likewise.
! 	* libgnat/s-tasloc.ads: Likewise.
! 	* libgnat/s-traceb.adb: Likewise.
! 	* libgnat/s-traceb.ads: Likewise.
! 	* libgnat/s-traceb__hpux.adb: Likewise.
! 	* libgnat/s-traceb__mastop.adb: Likewise.
! 	* libgnat/s-traent.adb: Likewise.
! 	* libgnat/s-traent.ads: Likewise.
! 	* libgnat/s-trasym.adb: Likewise.
! 	* libgnat/s-trasym.ads: Likewise.
! 	* libgnat/s-trasym__dwarf.adb: Likewise.
! 	* libgnat/s-tsmona.adb: Likewise.
! 	* libgnat/s-tsmona__linux.adb: Likewise.
! 	* libgnat/s-tsmona__mingw.adb: Likewise.
! 	* libgnat/s-unstyp.ads: Likewise.
! 	* libgnat/s-utf_32.adb: Likewise.
! 	* libgnat/s-utf_32.ads: Likewise.
! 	* libgnat/s-vade128.ads: Likewise.
! 	* libgnat/s-vade32.ads: Likewise.
! 	* libgnat/s-vade64.ads: Likewise.
! 	* libgnat/s-vaen16.ads: Likewise.
! 	* libgnat/s-vaen32.ads: Likewise.
! 	* libgnat/s-vaenu8.ads: Likewise.
! 	* libgnat/s-vafi128.ads: Likewise.
! 	* libgnat/s-vafi32.ads: Likewise.
! 	* libgnat/s-vafi64.ads: Likewise.
! 	* libgnat/s-valboo.adb: Likewise.
! 	* libgnat/s-valboo.ads: Likewise.
! 	* libgnat/s-valcha.adb: Likewise.
! 	* libgnat/s-valcha.ads: Likewise.
! 	* libgnat/s-valflt.ads: Likewise.
! 	* libgnat/s-valint.adb: Likewise.
! 	* libgnat/s-valint.ads: Likewise.
! 	* libgnat/s-vallfl.ads: Likewise.
! 	* libgnat/s-valllf.ads: Likewise.
! 	* libgnat/s-vallli.adb: Likewise.
! 	* libgnat/s-vallli.ads: Likewise.
! 	* libgnat/s-valllli.ads: Likewise.
! 	* libgnat/s-vallllu.ads: Likewise.
! 	* libgnat/s-valllu.adb: Likewise.
! 	* libgnat/s-valllu.ads: Likewise.
! 	* libgnat/s-valrea.adb: Likewise.
! 	* libgnat/s-valrea.ads: Likewise.
! 	* libgnat/s-valued.adb: Likewise.
! 	* libgnat/s-valued.ads: Likewise.
! 	* libgnat/s-valuef.adb: Likewise.
! 	* libgnat/s-valuef.ads: Likewise.
! 	* libgnat/s-valuei.adb: Likewise.
! 	* libgnat/s-valuei.ads: Likewise.
! 	* libgnat/s-valuen.adb: Likewise.
! 	* libgnat/s-valuen.ads: Likewise.
! 	* libgnat/s-valuer.adb: Likewise.
! 	* libgnat/s-valuer.ads: Likewise.
! 	* libgnat/s-valueu.adb: Likewise.
! 	* libgnat/s-valueu.ads: Likewise.
! 	* libgnat/s-valuns.adb: Likewise.
! 	* libgnat/s-valuns.ads: Likewise.
! 	* libgnat/s-valuti.adb: Likewise.
! 	* libgnat/s-valuti.ads: Likewise.
! 	* libgnat/s-valwch.adb: Likewise.
! 	* libgnat/s-valwch.ads: Likewise.
! 	* libgnat/s-veboop.adb: Likewise.
! 	* libgnat/s-veboop.ads: Likewise.
! 	* libgnat/s-vector.ads: Likewise.
! 	* libgnat/s-vercon.adb: Likewise.
! 	* libgnat/s-vercon.ads: Likewise.
! 	* libgnat/s-wchcnv.adb: Likewise.
! 	* libgnat/s-wchcnv.ads: Likewise.
! 	* libgnat/s-wchcon.adb: Likewise.
! 	* libgnat/s-wchcon.ads: Likewise.
! 	* libgnat/s-wchjis.adb: Likewise.
! 	* libgnat/s-wchjis.ads: Likewise.
! 	* libgnat/s-wchstw.adb: Likewise.
! 	* libgnat/s-wchstw.ads: Likewise.
! 	* libgnat/s-wchwts.adb: Likewise.
! 	* libgnat/s-wchwts.ads: Likewise.
! 	* libgnat/s-widboo.adb: Likewise.
! 	* libgnat/s-widboo.ads: Likewise.
! 	* libgnat/s-widcha.adb: Likewise.
! 	* libgnat/s-widcha.ads: Likewise.
! 	* libgnat/s-widenu.adb: Likewise.
! 	* libgnat/s-widenu.ads: Likewise.
! 	* libgnat/s-widint.ads: Likewise.
! 	* libgnat/s-widlli.adb: Likewise.
! 	* libgnat/s-widlli.ads: Likewise.
! 	* libgnat/s-widllli.ads: Likewise.
! 	* libgnat/s-widlllu.ads: Likewise.
! 	* libgnat/s-widllu.adb: Likewise.
! 	* libgnat/s-widllu.ads: Likewise.
! 	* libgnat/s-widthi.adb: Likewise.
! 	* libgnat/s-widthi.ads: Likewise.
! 	* libgnat/s-widthu.adb: Likewise.
! 	* libgnat/s-widthu.ads: Likewise.
! 	* libgnat/s-widuns.ads: Likewise.
! 	* libgnat/s-widwch.adb: Likewise.
! 	* libgnat/s-widwch.ads: Likewise.
! 	* libgnat/s-win32.ads: Likewise.
! 	* libgnat/s-winext.ads: Likewise.
! 	* libgnat/s-wwdcha.adb: Likewise.
! 	* libgnat/s-wwdcha.ads: Likewise.
! 	* libgnat/s-wwdenu.adb: Likewise.
! 	* libgnat/s-wwdenu.ads: Likewise.
! 	* libgnat/s-wwdwch.adb: Likewise.
! 	* libgnat/s-wwdwch.ads: Likewise.
! 	* libgnat/system-aix.ads: Likewise.
! 	* libgnat/system-darwin-arm.ads: Likewise.
! 	* libgnat/system-darwin-ppc.ads: Likewise.
! 	* libgnat/system-darwin-x86.ads: Likewise.
! 	* libgnat/system-djgpp.ads: Likewise.
! 	* libgnat/system-dragonfly-x86_64.ads: Likewise.
! 	* libgnat/system-freebsd.ads: Likewise.
! 	* libgnat/system-hpux-ia64.ads: Likewise.
! 	* libgnat/system-hpux.ads: Likewise.
! 	* libgnat/system-linux-alpha.ads: Likewise.
! 	* libgnat/system-linux-arm.ads: Likewise.
! 	* libgnat/system-linux-hppa.ads: Likewise.
! 	* libgnat/system-linux-ia64.ads: Likewise.
! 	* libgnat/system-linux-m68k.ads: Likewise.
! 	* libgnat/system-linux-mips.ads: Likewise.
! 	* libgnat/system-linux-ppc.ads: Likewise.
! 	* libgnat/system-linux-riscv.ads: Likewise.
! 	* libgnat/system-linux-s390.ads: Likewise.
! 	* libgnat/system-linux-sh4.ads: Likewise.
! 	* libgnat/system-linux-sparc.ads: Likewise.
! 	* libgnat/system-linux-x86.ads: Likewise.
! 	* libgnat/system-lynxos178-ppc.ads: Likewise.
! 	* libgnat/system-lynxos178-x86.ads: Likewise.
! 	* libgnat/system-mingw.ads: Likewise.
! 	* libgnat/system-qnx-aarch64.ads: Likewise.
! 	* libgnat/system-rtems.ads: Likewise.
  	* libgnat/system-solaris-sparc.ads: Likewise.
  	* libgnat/system-solaris-x86.ads: Likewise.
- 	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
- 	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
- 	* libgnat/system-vxworks-arm.ads: Likewise.
- 	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
- 	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
- 	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
  	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
  	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
- 	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
- 	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
- 	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
  	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-aarch64.ads: Likewise.
  	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-arm.ads: Likewise.
- 	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
- 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
- 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
  	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
  	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
- 	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
  	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
  	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
  	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
- 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
  	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
! 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
! 	* link.c: Likewise.
! 	* live.adb: Likewise.
! 	* live.ads: Likewise.
! 	* locales.c: Likewise.
! 	* make.adb: Likewise.
! 	* make.ads: Likewise.
! 	* make_util.adb: Likewise.
! 	* make_util.ads: Likewise.
! 	* makeusg.adb: Likewise.
! 	* makeusg.ads: Likewise.
! 	* mdll-fil.adb: Likewise.
! 	* mdll-fil.ads: Likewise.
! 	* mdll-utl.adb: Likewise.
! 	* mdll-utl.ads: Likewise.
! 	* mdll.adb: Likewise.
! 	* mdll.ads: Likewise.
  	* mingw32.h: Likewise.
  	* mkdir.c: Likewise.
- 	* namet-sp.adb: Likewise.
- 	* namet-sp.ads: Likewise.
- 	* namet.adb: Likewise.
- 	* namet.ads: Likewise.
- 	* namet.h: Likewise.
- 	* nlists.adb: Likewise.
- 	* nlists.ads: Likewise.
- 	* nlists.h: Likewise.
- 	* opt.adb: Likewise.
- 	* opt.ads: Likewise.
- 	* osint-b.adb: Likewise.
- 	* osint-b.ads: Likewise.
- 	* osint-c.adb: Likewise.
- 	* osint-c.ads: Likewise.
- 	* osint-l.adb: Likewise.
- 	* osint-l.ads: Likewise.
- 	* osint-m.adb: Likewise.
- 	* osint-m.ads: Likewise.
- 	* osint.adb: Likewise.
- 	* osint.ads: Likewise.
- 	* output.adb: Likewise.
- 	* output.ads: Likewise.
- 	* par-ch10.adb: Likewise.
- 	* par-ch11.adb: Likewise.
- 	* par-ch12.adb: Likewise.
- 	* par-ch13.adb: Likewise.
- 	* par-ch2.adb: Likewise.
- 	* par-ch3.adb: Likewise.
- 	* par-ch4.adb: Likewise.
- 	* par-ch5.adb: Likewise.
- 	* par-ch6.adb: Likewise.
- 	* par-ch7.adb: Likewise.
- 	* par-ch8.adb: Likewise.
- 	* par-ch9.adb: Likewise.
- 	* par-endh.adb: Likewise.
- 	* par-labl.adb: Likewise.
- 	* par-load.adb: Likewise.
- 	* par-prag.adb: Likewise.
- 	* par-sync.adb: Likewise.
- 	* par-tchk.adb: Likewise.
- 	* par-util.adb: Likewise.
- 	* par.adb: Likewise.
- 	* par.ads: Likewise.
- 	* par_sco.adb: Likewise.
- 	* par_sco.ads: Likewise.
- 	* pprint.adb: Likewise.
- 	* pprint.ads: Likewise.
- 	* prep.adb: Likewise.
- 	* prep.ads: Likewise.
- 	* prepcomp.adb: Likewise.
- 	* prepcomp.ads: Likewise.
- 	* put_scos.adb: Likewise.
- 	* put_scos.ads: Likewise.
- 	* raise-gcc.c: Likewise.
- 	* raise.c: Likewise.
- 	* raise.h: Likewise.
- 	* repinfo-input.adb: Likewise.
- 	* repinfo-input.ads: Likewise.
- 	* repinfo.adb: Likewise.
- 	* repinfo.ads: Likewise.
- 	* repinfo.h: Likewise.
- 	* restrict.adb: Likewise.
- 	* restrict.ads: Likewise.
- 	* rident.ads: Likewise.
  	* rtfinal.c: Likewise.
  	* rtinit.c: Likewise.
- 	* rtsfind.adb: Likewise.
- 	* rtsfind.ads: Likewise.
- 	* runtime.h: Likewise.
- 	* s-oscons-tmplt.c: Likewise.
- 	* sa_messages.adb: Likewise.
- 	* sa_messages.ads: Likewise.
- 	* scans.adb: Likewise.
- 	* scans.ads: Likewise.
- 	* scil_ll.adb: Likewise.
- 	* scil_ll.ads: Likewise.
- 	* scn.adb: Likewise.
- 	* scn.ads: Likewise.
- 	* scng.adb: Likewise.
- 	* scng.ads: Likewise.
- 	* scos.adb: Likewise.
- 	* scos.ads: Likewise.
- 	* scos.h: Likewise.
- 	* sdefault.ads: Likewise.
  	* seh_init.c: Likewise.
- 	* sem.adb: Likewise.
- 	* sem.ads: Likewise.
- 	* sem_aggr.adb: Likewise.
- 	* sem_aggr.ads: Likewise.
- 	* sem_attr.adb: Likewise.
- 	* sem_attr.ads: Likewise.
- 	* sem_aux.adb: Likewise.
- 	* sem_aux.ads: Likewise.
- 	* sem_case.adb: Likewise.
- 	* sem_case.ads: Likewise.
- 	* sem_cat.adb: Likewise.
- 	* sem_cat.ads: Likewise.
- 	* sem_ch10.adb: Likewise.
- 	* sem_ch10.ads: Likewise.
- 	* sem_ch11.adb: Likewise.
- 	* sem_ch11.ads: Likewise.
- 	* sem_ch12.adb: Likewise.
- 	* sem_ch12.ads: Likewise.
- 	* sem_ch13.adb: Likewise.
- 	* sem_ch13.ads: Likewise.
- 	* sem_ch2.adb: Likewise.
- 	* sem_ch2.ads: Likewise.
- 	* sem_ch3.adb: Likewise.
- 	* sem_ch3.ads: Likewise.
- 	* sem_ch4.adb: Likewise.
- 	* sem_ch4.ads: Likewise.
- 	* sem_ch5.adb: Likewise.
- 	* sem_ch5.ads: Likewise.
- 	* sem_ch6.adb: Likewise.
- 	* sem_ch6.ads: Likewise.
- 	* sem_ch7.adb: Likewise.
- 	* sem_ch7.ads: Likewise.
- 	* sem_ch8.adb: Likewise.
- 	* sem_ch8.ads: Likewise.
- 	* sem_ch9.adb: Likewise.
- 	* sem_ch9.ads: Likewise.
- 	* sem_dim.adb: Likewise.
- 	* sem_dim.ads: Likewise.
- 	* sem_disp.adb: Likewise.
- 	* sem_disp.ads: Likewise.
- 	* sem_dist.adb: Likewise.
- 	* sem_dist.ads: Likewise.
- 	* sem_elab.adb: Likewise.
- 	* sem_elab.ads: Likewise.
- 	* sem_elim.adb: Likewise.
- 	* sem_elim.ads: Likewise.
- 	* sem_eval.adb: Likewise.
- 	* sem_eval.ads: Likewise.
- 	* sem_intr.adb: Likewise.
- 	* sem_intr.ads: Likewise.
- 	* sem_mech.adb: Likewise.
- 	* sem_mech.ads: Likewise.
- 	* sem_prag.adb: Likewise.
- 	* sem_prag.ads: Likewise.
- 	* sem_res.adb: Likewise.
- 	* sem_res.ads: Likewise.
- 	* sem_scil.adb: Likewise.
- 	* sem_scil.ads: Likewise.
- 	* sem_smem.adb: Likewise.
- 	* sem_smem.ads: Likewise.
- 	* sem_type.adb: Likewise.
- 	* sem_type.ads: Likewise.
- 	* sem_util.adb: Likewise.
- 	* sem_util.ads: Likewise.
- 	* sem_warn.adb: Likewise.
- 	* sem_warn.ads: Likewise.
- 	* set_targ.adb: Likewise.
- 	* set_targ.ads: Likewise.
- 	* sfn_scan.adb: Likewise.
- 	* sfn_scan.ads: Likewise.
- 	* sigtramp-armdroid.c: Likewise.
- 	* sigtramp-ios.c: Likewise.
- 	* sigtramp-qnx.c: Likewise.
- 	* sigtramp-vxworks-target.h: Likewise.
- 	* sigtramp-vxworks.c: Likewise.
- 	* sigtramp.h: Likewise.
- 	* sinfo-cn.adb: Likewise.
- 	* sinfo-cn.ads: Likewise.
- 	* sinfo-utils.adb: Likewise.
- 	* sinfo-utils.ads: Likewise.
- 	* sinfo.adb: Likewise.
- 	* sinfo.ads: Likewise.
- 	* sinput-c.adb: Likewise.
- 	* sinput-c.ads: Likewise.
- 	* sinput-d.adb: Likewise.
- 	* sinput-d.ads: Likewise.
- 	* sinput-l.adb: Likewise.
- 	* sinput-l.ads: Likewise.
- 	* sinput.adb: Likewise.
- 	* sinput.ads: Likewise.
- 	* socket.c: Likewise.
- 	* spark_xrefs.adb: Likewise.
- 	* spark_xrefs.ads: Likewise.
- 	* sprint.adb: Likewise.
- 	* sprint.ads: Likewise.
- 	* stand.ads: Likewise.
- 	* stringt.adb: Likewise.
- 	* stringt.ads: Likewise.
- 	* stringt.h: Likewise.
- 	* strub.adb: Likewise.
- 	* strub.ads: Likewise.
- 	* style.adb: Likewise.
- 	* style.ads: Likewise.
- 	* styleg.adb: Likewise.
- 	* styleg.ads: Likewise.
- 	* stylesw.adb: Likewise.
- 	* stylesw.ads: Likewise.
- 	* switch-b.adb: Likewise.
- 	* switch-b.ads: Likewise.
- 	* switch-c.adb: Likewise.
- 	* switch-c.ads: Likewise.
- 	* switch-m.adb: Likewise.
- 	* switch-m.ads: Likewise.
- 	* switch.adb: Likewise.
- 	* switch.ads: Likewise.
  	* sysdep.c: Likewise.
- 	* table.adb: Likewise.
- 	* table.ads: Likewise.
- 	* targext.c: Likewise.
- 	* targparm.adb: Likewise.
- 	* targparm.ads: Likewise.
- 	* tbuild.adb: Likewise.
- 	* tbuild.ads: Likewise.
- 	* tempdir.adb: Likewise.
- 	* tempdir.ads: Likewise.
  	* terminals.c: Likewise.
  	* tracebak.c: Likewise.
- 	* treepr.adb: Likewise.
- 	* treepr.ads: Likewise.
- 	* ttypes.ads: Likewise.
- 	* types.adb: Likewise.
- 	* types.ads: Likewise.
- 	* types.h: Likewise.
- 	* uintp.adb: Likewise.
- 	* uintp.ads: Likewise.
- 	* uintp.h: Likewise.
- 	* uname.adb: Likewise.
- 	* uname.ads: Likewise.
- 	* urealp.adb: Likewise.
- 	* urealp.ads: Likewise.
- 	* urealp.h: Likewise.
- 	* usage.adb: Likewise.
- 	* usage.ads: Likewise.
- 	* validsw.adb: Likewise.
- 	* validsw.ads: Likewise.
- 	* vast.adb: Likewise.
- 	* vast.ads: Likewise.
- 	* warnsw.adb: Likewise.
- 	* warnsw.ads: Likewise.
- 	* widechar.adb: Likewise.
- 	* widechar.ads: Likewise.
- 	* xoscons.adb: Likewise.
- 	* xr_tabls.adb: Likewise.
- 	* xr_tabls.ads: Likewise.
- 	* xref_lib.adb: Likewise.
- 	* xref_lib.ads: Likewise.
- 	* xsnamest.adb: Likewise.
- 	* xutil.adb: Likewise.
- 	* xutil.ads: Likewise.
- 
- 2022-01-11  Richard Kenner  <kenner@adacore.com>
- 
- 	* debug.adb: Add documentation for new -gnatd_u and old -gnatd_R
- 	flags used for GNAT LLVM and its CCG.
- 
- 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
- 
- 	* Makefile.rtl (X86_TARGET_PAIRS): Use __builtin variant of
- 	System.Atomic_Counters.
- 	* libgnat/s-atocou__x86.adb: Remove.
- 
- 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
- 
- 	* gcc-interface/trans.c (Identifier_to_gnu): Use correct subtype.
- 	(elaborate_profile): New function.
- 	(Call_to_gnu): Call it on the formals and the result type before
- 	retrieving the translated result type from the subprogram type.
- 
- 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
- 
- 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Fix
- 	computation of boolean result in the unchecked union case.
- 	(components_to_record): Rename MAYBE_UNUSED parameter to IN_VARIANT
- 	and remove local variable of the same name.  Pass NULL recursively
- 	as P_GNU_REP_LIST for nested variants in the unchecked union case.
- 
- 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
- 
- 	* gcc-interface/trans.c (lvalue_required_p) <N_Pragma>: New case.
- 	<N_Pragma_Argument_Association>: Likewise.
- 	(Pragma_to_gnu) <Pragma_Inspection_Point>: Fetch the corresponding
- 	variable of a constant before marking it as addressable.
- 
- 2022-01-10  Arnaud Charlet  <charlet@adacore.com>
- 
- 	* gcc-interface/Make-lang.in (ADA_GENERATED_FILES): Remove
- 	s-casuti.ad?, s-crtl.ad?, s-os_lib.ad?.  Update list of object
- 	files accordingly.
- 
- 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
- 
- 	* libgnat/s-atopri.ads (Atomic_Compare_Exchange): Replaces
- 	deprecated Sync_Compare_And_Swap.
- 	* libgnat/s-atopri.adb (Lock_Free_Try_Write): Switch from __sync
- 	to __atomic builtins.
- 
- 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
- 
- 	* libgnat/s-exponn.adb, libgnat/s-expont.adb,
- 	libgnat/s-exponu.adb, libgnat/s-widthi.adb,
- 	libgnat/s-widthu.adb: Remove CodePeer annotations for pragma
- 	Loop_Variant.
  
! 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_prag.adb (Expand_Pragma_Loop_Variant): Disable expansion
! 	in CodePeer mode.
! 
! 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_util.adb (Is_Child_Or_Sibling): Fix typo in comment.
! 
! 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* exp_pakd.adb (Install_PAT): If the PAT is a scalar type, apply
! 	the canonical adjustment to its alignment.
! 
! 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* libgnat/s-atocou__builtin.adb (Decrement, Increment): Switch
! 	from __sync to __atomic builtins; use 'Address to be consistent
! 	with System.Atomic_Primitives.
  
! 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_pakd.adb (Install_PAT): Do not reset the alignment here.
! 	* layout.adb (Layout_Type): Call Adjust_Esize_Alignment after having
! 	copied the RM_Size onto the Esize when the latter is too small.
  
! 2022-01-10  Justin Squirek  <squirek@adacore.com>
  
! 	* sem_warn.adb (Check_References): Handle arrays of tasks
! 	similar to task objects.
  
! 2022-01-07  Patrick Bernardi  <bernardi@adacore.com>
  
! 	* libgnat/a-direct.adb (Search_Data): Remove type.
! 	(Directory_Vectors): New package instantiation.
! 	(Search_State): New type.
! 	(Fetch_Next_Entry): Remove.
! 	(Close): Remove.
! 	(Finalize): Rewritten.
! 	(Full_Name): Ditto.
! 	(Get_Next_Entry): Return next entry from Search results vector
! 	rather than querying the directory directly using readdir.
! 	(Kind): Rewritten.
! 	(Modification_Time): Rewritten.
! 	(More_Entries): Use Search state cursor to determine if more
! 	entries are available for users to read.
! 	(Simple_Name): Rewritten.
! 	(Size): Rewritten.
! 	(Start_Search_Internal): Rewritten to load the contents of the
! 	directory that matches the pattern and filter into the search
! 	object.
! 	* libgnat/a-direct.ads (Search_Type): New type.
! 	(Search_Ptr): Ditto.
! 	(Directory_Entry_Type): Rewritten to support new Start_Search
! 	procedure.
! 	* libgnat/s-filatt.ads (File_Length_Attr): New function.
  
! 2022-01-07  Etienne Servais  <servais@adacore.com>
  
! 	* sem_attr.adb (Check_Reference): Fix condition.
  
! 2022-01-07  Ghjuvan Lacambre  <lacambre@adacore.com>
  
! 	* libgnarl/s-taprop__mingw.adb (Timed_Sleep): Remove "pragma
! 	Unreferenced" for Result.
! 	(Timed_Delay): Likewise.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* gen_il-gen.adb (Put_Make_Decls): Put pragma Inline in a
! 	dedicated line, so that the current indentation is taken into
! 	account.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_aggr.adb (Build_Array_Aggr_Code): Fix inconsistent style
! 	in comments and code.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_aggr.adb (Gen_Assign): Remove explicit initialization for
! 	components of access types.
! 	(Get_Assoc_Expr): Enable initialization for components of all
! 	types that require simple initialization.
  
! 2022-01-07  Javier Miranda  <miranda@adacore.com>
  
! 	* atree.ads (Traverse_Func_With_Parent): New generic subprogram.
! 	(Traverse_Proc_With_Parent): Likewise.
! 	* atree.adb (Parents_Stack): New table used to traverse trees
! 	passing the parent field of each node.
! 	(Internal_Traverse_With_Parent): New generic subprogram.
! 	(Traverse_Func_With_Parent): Likewise.
! 	(Traverse_Proc_With_Parent): Likewise.
! 	* contracts.adb (Fix_Parents): New subprogram.
! 	(Restore_Original_Selected_Component): Enhanced to fix the
! 	parent field of restored nodes.
! 	(Inherit_Condition): Adding assertions to check the parent field
! 	of inherited conditions and to ensure that the built inherited
! 	condition has no reference to the formals of the parent
  	subprogram.
! 	* sem_util.ads, sem_util.adb (Check_Parents): New subprogram.
! 
! 2022-01-07  Etienne Servais  <servais@adacore.com>
! 
! 	* sem_attr.adb (Check_Placement_In_Test_Case): Fix typo.
! 
! 2022-01-07  Justin Squirek  <squirek@adacore.com>
! 
! 	* comperr.adb (Delete_SCIL_Files): Replace unnecessary
! 	Unreferenced pragma with specific pragma Warnings.
! 	* doc/gnat_rm/implementation_defined_pragmas.rst (Unreferenced):
! 	Add documentation for new behavior.
! 	* gnat_rm.texi: Regenerate.
! 	* erroutc.adb (Set_At): Remove useless assignment.
! 	* exp_ch2.adb (In_Assignment_Context): Deleted.
! 	(Is_Object_Renaming_Name): Replace calls to Is_LHS with calls to
! 	Known_To_Be_Assigned.
! 	(Expand_Current_Value): Replace calls to May_Be_Lvalue with
! 	calls to Known_To_Be_Assigned.
! 	(Expand_Entry_Paramter): Replace calls to In_Assignment_Context
! 	with calls to Known_To_Be_Assigned.
! 	* exp_ch4.adb (Expand_N_Op_Rem): Remove unnecessary Unreferenced
! 	pragma.
! 	* exp_imgv.adb (Build_Enumeration_Image_Tables): Default
! 	initialize S_N.
! 	* ghost.adb (Check_Ghost_Policy): Replace call to May_Be_Lvalue
! 	with call to Known_To_Be_Assigned.
! 	* lib-xref.adb (Is_On_LHS): Deleted.
! 	(OK_To_Set_Referenced): Rewrite subprogram to encompass the new
! 	pragma Unreferenced behavior.
! 	(Process_Deferred_References): Replace call to Is_LHS with call
! 	to Known_To_Be_Assigned.
! 	* libgnarl/s-taasde.adb, libgnarl/s-tasren.adb,
! 	libgnarl/s-tpobop.adb, libgnat/a-calend.adb,
! 	libgnat/a-calfor.adb, libgnat/a-cbdlli.adb,
! 	libgnat/a-cbhama.adb, libgnat/a-cbhase.adb,
! 	libgnat/a-cbmutr.adb, libgnat/a-cborma.adb,
! 	libgnat/a-cborse.adb, libgnat/a-cdlili.adb,
! 	libgnat/a-cfhama.adb, libgnat/a-cforse.adb,
! 	libgnat/a-cidlli.adb, libgnat/a-cihama.adb,
! 	libgnat/a-cihase.adb, libgnat/a-cimutr.adb,
! 	libgnat/a-ciorma.adb, libgnat/a-ciormu.adb,
! 	libgnat/a-ciorse.adb, libgnat/a-cohama.adb,
! 	libgnat/a-cohase.adb, libgnat/a-comutr.adb,
! 	libgnat/a-convec.adb, libgnat/a-coorma.adb,
! 	libgnat/a-coormu.adb, libgnat/a-coorse.adb,
! 	libgnat/a-crdlli.adb, libgnat/a-tigeau.adb,
! 	libgnat/a-wtgeau.adb, libgnat/a-ztgeau.adb,
! 	libgnat/g-calend.adb, libgnat/g-comlin.adb,
! 	libgnat/g-expect.adb, libgnat/g-mbflra.adb,
! 	libgnat/g-spipat.adb, libgnat/s-fatgen.adb,
! 	libgnat/s-fileio.adb, libgnat/s-os_lib.adb,
! 	libgnat/s-regpat.adb, libgnat/s-valued.adb,
! 	libgnat/s-valuer.adb: Remove unnecessary Unreferenced pragmas
! 	* sem_ch10.adb (Process_Spec_Clauses): Remove useless
! 	assignments.
! 	* sem_ch13.adb (Validate_Literal_Aspect): Default initialize I.
! 	* sem_ch3.adb (Build_Derived_Concurrent_Type): Default
! 	initialize Corr_Decl.
! 	* sem_ch8.adb (Undefined): Replace calls to Is_LHS with calls to
! 	Known_To_Be_Assigned.
! 	(In_Abstract_View_Pragma): Likewise.
! 	* sem_eval.adb (Eval_Selected_Component): Replace calls to
! 	Is_LHS with calls to Known_To_Be_Assigned.
! 	* sem_res.adb (Init_Component): Replace calls to May_Be_Lvalue
! 	with calls to Known_To_Be_Assigned.
! 	* sem_util.adb, sem_util.ads (End_Label_Loc): Default initialize
! 	Owner.
! 	(Explain_Limited_Type): Default initialize Expr_Func.
! 	(Find_Actual): Modified to handle entry families.
! 	(Is_LHS): Deleted.
! 	(May_Be_Lvalue): Deleted.
! 	(Known_To_Be_Assigned): Modified and improved to handle all
! 	cases.
! 	* sem_warn.adb (Traverse_Result): Replace calls to May_Be_Lvalue
! 	with calls to Known_To_Be_Assigned.
! 	(Check_Ref): Modify error on unreferenced out parameters to take
! 	into account different warning flags.
  
! 2022-01-07  Javier Miranda  <miranda@adacore.com>
  
! 	* sem_ch3.adb (Reorder_Interfaces): When the conflicting
! 	interface is identified we just replace the interface in the
! 	list of interfaces of the tagged type (instead of adding a
! 	duplicate to the list of interfaces).
  
! 2022-01-07  Dmitriy Anisimkov  <anisimko@adacore.com>
  
! 	* adaint.c (__gnat_kill): Terminate process only in case of
! 	SIGKILL, SIGINT, SIGBREAK, SIGTERM, SIGABRT.  Do not call
! 	OpenProcess if not going to terminate process.
  
! 2022-01-07  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_prag.adb (Expand_Pragma_Inspection_Point): Do a single pass
! 	over the arguments of the pragma.  Set the Address_Taken flag on
! 	them and use the Has_Delayed_Freeze flag to spot those which have
! 	their elaboration delayed.  Reuse the location variable Loc.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* osint.adb (To_Lower): Clarify that only To_Lower function
! 	causes bootstrap issues; fix style.
! 	* treepr.adb (Print_Str_Mixed_Case): Reuse existing case
! 	conversion routine.
! 	(To_Mixed): Rename from Capitalize; reuse System.Case_Util
! 	procedure and explain the bootstrap issue.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch7.adb (Process_Transients_In_Scope): Remove unnecessary
! 	initialization of Must_Hook; change Detect_Subprogram_Call from
! 	function to procedure; adapt caller.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch5.adb, exp_disp.adb, exp_util.adb, par-ch4.adb,
! 	sem_ch13.adb: Remove extra space before THEN that occurs at the
! 	end of a line.
  
! 2022-01-07  Dmitriy Anisimkov  <anisimko@adacore.com>
  
! 	* expect.c (__gnat_waitpid): Use macros WIFEXITED, WEXITSTATUS,
! 	WIFSIGNALED, WTERMSIG, WIFSTOPPED, WSTOPSIG to get exit status
! 	or signal that caused the child process to terminate/stop.  Do
! 	not process exit status in case of error in waitpid call.
! 	* adaint.c (__gnat_kill): Use of GenerateConsoleCtrlEvent is
! 	removed in Windows variant as it actually is not working and was
! 	terminating the calling process.  Set signal number into exit
! 	code parameter of TerminateProcess to work the same like in
! 	Linux.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch5.adb (Expand_N_Case_Statement): Remove explicit
! 	expansion.
  
! 2022-01-07  Etienne Servais  <servais@adacore.com>
  
  	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
! 	Update -gnatwr documentation.
  	* gnat_ugn.texi: Regenerate.
  
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_unst.adb (Unnest_Subprogram): Sync comment with the
! 	current code.
! 
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch4.adb (Raise_Accessibility_Error): Move exception name
! 	to the message string; move << control characters to the end,
! 	for consistency.
! 	* sem_ch6.adb (Analyze_Function_Return): Likewise.
! 	* sem_util.adb (Compile_Time_Constraint_Error): Likewise.
! 	* gcc-interface/decl.c (gnat_to_gnu_entity): Remove quotes
! 	around Storage_Error.
! 	* gcc-interface/trans.c (gnat_to_gnu): Remove quotes around
! 	Constraint_Error.
! 
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* errout.adb (Error_Msg): Move warning suppression code from
! 	Error_Msg_NLE
! 	(Error_Msg_NLE): Warning suppression is now done by the internal
! 	call to Error_Msg.
! 
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Remove unnecessary
! 	guards.
! 	* exp_ch4.adb (Expand_N_If_Expression): Likewise; clarify comment.
! 	* exp_ch5.adb (Expand_N_If_Statement,
! 	Expand_Iterator_Loop_Over_Container): Likewise.
! 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Remove redundant
! 	guard.
! 	* freeze.adb (Freeze_All_Ent): Reduce scope of a local variable.
! 
! 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch3.adb (Build_Init_Procedure): Remove unnecessary guard.
! 	* exp_disp.adb (Make_DT): Likewise.
! 	* sem_ch12.adb (Analyze_Associations): Likewise.
! 
! 2022-01-07  Etienne Servais  <servais@adacore.com>
! 
! 	* sem_res.adb (Resolve_Op_Concat_Arg): Check range when
! 	concatenating scalars.
! 
! 2022-01-07  Bob Duff  <duff@adacore.com>
! 
! 	* treepr.adb (Print_Node_Ref): Change "not Is_Array_Type" to
! 	"Is_Discrete_Type".
! 
! 2022-01-07  Richard Kenner  <kenner@adacore.com>
! 
! 	* libgnat/g-spipat.ads (Boolean_Func, Natural_Func,
! 	VString_Func): Mark as Favor_Top_Level.
! 	* sem_ch13.adb (Validate_Unchecked_Conversion): Avoid using
! 	internal representation if Unchecked_Conversion between
! 	an access to subprogram and System.Address within the same unit.
! 
! 2022-01-07  Bob Duff  <duff@adacore.com>
! 
! 	* treepr.adb (Print_Node_Ref): Print the value if available.
! 
! 2022-01-07  Richard Kenner  <kenner@adacore.com>
! 
! 	* sem_util.ads, sem_util.adb (Get_Fullest_View): Add option to
! 	not recurse and return the next-most-fullest view.
! 
! 2022-01-07  Bob Duff  <duff@adacore.com>
! 
! 	* sem_ch10.adb (Check_Redundant_Withs): Add a warning if a
! 	library unit with's its own ancestor. Note that this warning is
! 	not triggered for something like "with P.R;" in P.Q, because
! 	there the "with P;" is considered implicit.
! 	* fname-sf.adb, libgnarl/s-stusta.adb, libgnarl/s-tasdeb.ads,
! 	libgnat/a-calfor.adb, libgnat/a-tiboio.adb,
! 	libgnat/a-wwboio.adb, libgnat/a-zzboio.adb, libgnat/i-cobol.adb,
! 	libgnat/s-bitops.adb, libgnat/s-bitops.ads,
! 	libgnat/s-direio.adb, libgnat/s-dwalin.adb,
! 	libgnat/s-geveop.adb, libgnat/s-mmosin__unix.adb,
! 	libgnat/s-os_lib.adb, libgnat/s-os_lib.ads,
! 	libgnat/s-pooglo.ads, libgnat/s-secsta.adb,
! 	libgnat/s-shasto.adb, libgnat/s-stausa.ads,
! 	libgnat/s-stratt.ads, libgnat/s-ststop.adb: Remove with of
! 	parent.
! 	* sinfo.ads: Minor comment fix.
! 
! 2022-01-07  Bob Duff  <duff@adacore.com>
! 
! 	* osint-m.adb: Remove with_clause and pragma.
! 
! 2022-01-06  Bob Duff  <duff@adacore.com>
! 
! 	* sem_res.adb (Resolve_Range): Warn on null range, unless we are
! 	inside a generic unit or an instance thereof.
! 	* sem_ch3.adb (Analyze_Subtype_Indication): Minor: avoid double
! 	negative.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* errout.adb (Adjust_Name_Case): Remove unnecessary declare
! 	block.
! 
! 2022-01-06  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/a-ngcoar.adb: Add pragma to ignore assertions in
! 	instance.
! 	* libgnat/a-ngrear.adb: Likewise.
! 	* libgnat/s-gearop.adb: Prove implementation is free of runtime
! 	errors.
! 	* libgnat/s-gearop.ads: Add contracts to protect against runtime
! 	errors in the generic part.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* errout.adb (Remove_Warning_Messages): Use traversal procedure
! 	instead of traversal function, since we discard status of each
! 	step anyway.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch4.adb (Expand_Concatenate): There is no reason for using
! 	declaring, raising and catching an exception; a simple return
! 	statement is enough.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_eval.adb (Eval_Arithmetic_Op): Add Loc parameter to all
! 	calls to Apply_Compile_Time_Constraint_Error related to division
! 	by zero.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* errout.adb (Remove_Warning_Messages): Remove unnecessary guard.
! 	* exp_util.adb (Kill_Dead_Code): Likewise.
! 	* par_sco.adb (Traverse_Declarations_Or_Statements): Likewise.
! 	* sem_ch3.adb (Build_Derived_Record_Type): Likewise.
! 	* sem_ch4.adb (Traverse_Interfaces): Likewise.
! 	* sem_eval.adb (Traverse_Interfaces): Likewise.
! 	* sem_util.adb (Collect_Interfaces): Likewise.
! 	(Has_Non_Null_Statements, Side_Effect_Free_Statements):
! 	Likewise; turn into WHILE loops, for consistency.
! 
! 2022-01-06  Etienne Servais  <servais@adacore.com>
! 
! 	* sem_type.adb (Full_View_Covers): Fix typo.
! 
! 2022-01-06  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* sem_ch12.adb (Insert_Freeze_Node_For_Instance): When going to
! 	the outer level, do not jump over following instantiations in
! 	the list.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* err_vars.ads (Warn_On_Instance): Remove; it was a relic from
! 	the previous handling of warning in instances that was removed
! 	decades ago.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* errout.adb (Error_Msg_Internal): Reorder words.
! 	* erroutc.ads (Is_Warning_Msg): Add closing paren.
! 	* sem_util.adb (Compile_Time_Constraint_Error): Fix casing.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_res.adb (Resolve_String_Literal): Simplify pointer
! 	arithmetic.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_res.adb (Resolve_String_Literal): Avoid unnecessary
! 	conversions inside "<" and ">" bodies.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* checks.adb (Null_Exclusion_Static_Checks,
! 	Selected_Range_Checks): Fix style.
! 
! 2022-01-06  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* sem_ch8.adb (Analyze_Package_Renaming): Do not check for Text_IO
! 	special units when the name of the renaming is a generic instance,
! 	which is the case for package instantiations in the GNAT model.
! 
! 2022-01-06  Steve Baird  <baird@adacore.com>
! 
! 	* sem_util.adb (Build_Discriminant_Reference): In the unexpected
! 	case where we previously would fail an assertion, we instead
! 	revert to the old behavior.
! 
! 2022-01-06  Steve Baird  <baird@adacore.com>
! 
! 	* sem_util.adb (Build_Actual_Subtype_Of_Component): Define a new
! 	local function, Build_Discriminant_Reference, and call it in
! 	each of the three cases where Make_Selected_Component was
! 	previously being called to construct a discriminant reference (2
! 	in Build_Actual_Array_Constraint and 1 in
! 	Build_Actual_Record_Constraint). Instead of unconditionally
! 	using the passed-in object name as the prefix for the new
! 	selected component node, this new function checks to see if
! 	perhaps a prefix of that name should be used instead.
! 
! 2022-01-06  Etienne Servais  <servais@adacore.com>
! 
! 	* atree.adb: Fix typo.
! 	* einfo.ads: Likewise.
! 	* exp_aggr.adb: Likewise.
! 	* exp_ch6.adb: Likewise.
! 	* exp_ch7.adb: Likewise.
! 	* exp_ch9.adb: Likewise.
! 	* exp_prag.adb: Likewise.
! 	* exp_unst.adb: Likewise.
! 	* exp_unst.ads: Likewise.
! 	* exp_util.adb: Likewise.
! 	* par-endh.adb: Likewise.
! 	* par.adb: Likewise.
! 	* restrict.adb: Likewise.
! 	* sem.ads: Likewise.
! 	* sem_ch4.adb: Likewise.
! 	* sem_ch5.adb: Likewise.
! 	* sem_ch6.adb: Likewise.
! 	* sem_ch8.adb: Likewise.
! 	* sem_ch12.adb: Likewise.
! 	* sem_ch13.adb: Likewise.
! 	* sem_dim.adb: Likewise.
! 	* sem_elab.adb: Likewise.
! 	* sem_prag.adb: Likewise.
! 	* sem_res.adb: Likewise.
! 	* sem_util.adb: Likewise.
! 	* sem_util.ads: Likewise.
! 	* sinfo.ads: Likewise.
! 	* sprint.adb: Likewise.
! 	* urealp.adb: Likewise.
! 
! 2022-01-06  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch3.adb (Build_Assignment): Replace current instance of
! 	type with Init_Proc formal.
! 	* sem_attr.adb (OK_Self_Reference): Handle recognition of
! 	Current_Instance to detect certain expansion.
! 	* sem_ch4.adb (Analyze_One_Call): Set actual's type when the
! 	actual in question is a current instance and its corresponding
! 	formal is an incomplete type.
! 	* sem_util.adb (Is_Current_Instance): Add check for incomplete
! 	views and add comment.
! 
! 2022-01-06  Bob Duff  <duff@adacore.com>
! 
! 	* libgnat/s-rident.ads (No_Tagged_Type_Registration): New
! 	restriction identifier.
! 	* restrict.ads (Implementation_Restriction): Add restriction.
! 	* exp_ch7.adb (Process_Declarations): Suppress
! 	tagged-type-related finalization actions if the restriction is
! 	active.  Call RTE_Available last.
! 	* exp_disp.adb (Make_DT): Likewise.
! 	* exp_util.adb (Requires_Cleanup_Actions): Return False for a
! 	tagged type declaration if No_Tagged_Type_Registration is
! 	active.
! 	* sem_attr.adb (Check_Stream_Attribute): Check restriction
! 	No_Tagged_Type_Registration.
! 	* libgnat/a-except.ads (Null_Occurrence): Minor: Initialize, to
! 	avoid stopping at a warning in gdb.
! 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
! 	Document new restriction.
! 	* gnat_rm.texi: Regenerate.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* par-ch4.adb (P_Simple_Expression): Reuse Null_String_Id.
! 	* prep.adb (Parse_Def_File): Likewise; remove Empty_String.
! 
! 2022-01-06  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* stand.ads (Any_Access): Delete.
! 	(Universal_Access): New entity.
! 	* einfo.ads: Remove obsolete reference to Any_Access.
! 	* gen_il-gen-gen_entities.adb: Likewise.
! 	* cstand.adb (Create_Standard): Do not create Any_Access and create
! 	Universal_Access as a full type instead.
! 	* errout.adb (Set_Msg_Insertion_Type_Reference): Do not deal with
! 	Any_Access and deal with Universal_Access instead.
! 	* sem_ch3.adb (Analyze_Object_Declaration): Replace Any_Access with
! 	Universal_Access.
! 	* sem_ch4.adb (Analyze_Null): Likewise.
! 	(Find_Non_Universal_Interpretations): Likewise.
! 	(Find_Equality_Types.Try_One_Interp): Likewise and avoid shadowing
! 	by renaming a local variable of the same name.
! 	* sem_res.adb (Make_Call_Into_Operato): Likewise.
! 	(Resolve_Equality_Op): Likewise.
! 	* sem_type.adb (Covers): Likewise.
! 	(Specific_Type): Likewise.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* treepr.adb (Destroy): Prevent spurious check from CodePeer.
! 
! 2022-01-06  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/s-exponu.adb (Exponu): Add annotation.
! 
! 2022-01-06  Justin Squirek  <squirek@adacore.com>
! 
! 	* exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add comments
! 	regarding special handling of components which depend on
! 	discriminants.
! 	* exp_dist.adb (Build_From_Any_Function): Add Real_Rep actual
! 	for calls to Has_Stream_Attribute_Definition.
! 	(Build_To_Any_Function): Likewise.
! 	(Build_TypeCode_Function): Likewise.
! 	* freeze.adb (Freeze_Entity): Add missing comment for Test_E.
! 	* libgnat/s-utf_32.adb: Remove disabled warning comments and
! 	temporarily inserted pragma warnings.  Remove very old (2006 and
! 	2012) comments about bootstrapping older versions.
! 	* par.adb (P_Identifier): Add new parameter Force_Msg.
! 	* par-ch2.adb (P_Identifier): Restructure and clean up function.
! 	* par-ch3.adb (P_Defining_Identifier): Remove code duplication
! 	for parsing identifiers.
! 	* sem_attr.adb (Stream_Attribute_Available): Add missing
! 	comments and add Real_Rep actual for calls to
! 	Has_Stream_Attribute_Definition.
! 	* sem_cat.adb (Has_Read_Write_Attribute): Add Real_Rep actual
! 	for calls to Has_Stream_Attribute_Definition.
! 	(Has_Stream_Attribute_Definition): Remove local Real_Rep and fix
! 	recursive calls. Add default value for Real_Rep.
! 	* sem_cat.ads (Has_Stream_Attribute_Definition): Add new out
! 	parameter "Real_Rep".
! 	* sem_type.adb (Add_Entry): Add condition to avoid passing
! 	non-function calls to Function_Interp_Has_Abstract_Op.
! 	(Function_Interp_Has_Abstract_Op): Add missing comments and
! 	remove check for Is_Overloadable.
! 	* sem_util.adb (Derivation_Too_Early_To_Inherit): Remove
! 	duplicated code.
! 
! 2022-01-06  Javier Miranda  <miranda@adacore.com>
! 
! 	* contracts.adb (Restore_Original_Selected_Component): New
! 	subprogram that traverses a preanalyzed expression searching for
! 	dispatching calls to functions whose original node was a
! 	selected component, and replacing them with their original node.
! 	This functionality is required because the preanalyis of
! 	dispatching calls using the Object.Operation notation transforms
! 	such calls, and we need the original condition to properly
! 	inherit and extend the condition expression on tagged type
! 	derivations.  This functionality was previously provided by the
! 	routine Install_Original_Selected_Component (as part of
! 	inheriting conditions); now it is performed as part of the
! 	preanalysis of the condition, thus avoiding repeatedly
! 	installing and restoring such nodes.
! 	(Install_Original_Selected_Component): Removed.
! 	(Restore_Dispatching_Calls): Removed.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* treepr.adb (Visit_Node): Simplify repeated call to
! 	Next_Entity.
! 
! 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* treepr.ads (Treepr, Print_Tree_List, Print_Tree_Elist): Fix
! 	style in comments.
! 	* treepr.adb (Serial_Numbers): Hash table instance.
! 	(Hash): Hashing routine.
! 	(Print_Field): Fix style.
! 	(Print_Init): Adapt to simple hash table.
! 	(Print_Term): Likewise.
! 	(Serial_Numbers): Likewise.
! 	(Set_Serial_Number): Likewise.
! 
! 2022-01-06  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/s-expmod.adb: Mark in SPARK. Add ghost code for proof.
! 	* libgnat/s-expmod.ads: Mark in SPARK. Add ghost specifications.
! 
! 2022-01-06  Yannick Moy  <moy@adacore.com>
! 
! 	* libgnat/s-explllu.ads: Mark in SPARK.
! 	* libgnat/s-expllu.ads: Mark in SPARK.
! 	* libgnat/s-exponu.adb: Add loop invariants and needed
! 	assertions.
! 	* libgnat/s-exponu.ads: Add functional contract.
! 	* libgnat/s-expuns.ads: Mark in SPARK.
! 
! 2022-01-05  Steve Baird  <baird@adacore.com>
! 
! 	* exp_ch5.adb (Finish_Binding_Object_Declaration): Fix a bug
! 	that was introduced in the previous commit.  The previous
! 	version initialized a Boolean constant Declare_Copy before the
! 	variable Decl had been initialized properly.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* sem_prag.adb (Adjust_External_Name_Case): Use membership test.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): For
! 	GNATprove build the wrapper as an expression function.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch3.ads (Make_Controlling_Function_Wrappers): Move
! 	declaration from body to spec, so it can be called by
! 	SPARK-specific expansion.
! 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Likewise.
! 	* exp_spark.adb (SPARK_Freeze_Type): Enable expansion of
! 	wrappers for function with controlling result types.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_dbug.adb, sem_dim.adb: Replace Add_Str_To_Name_Buffer with
! 	Add_Char_To_Name_Buffer.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* gnatls.adb (Gnatls): Use Name_Find function.
! 	* targparm.adb (Get_Target_Parameters): Likewise.
! 
! 2022-01-05  Bob Duff  <duff@adacore.com>
! 
! 	* repinfo.adb (List_Entities): The code was assuming that if we
! 	encounter a package in the current scope, then it must be
! 	a (physically) nested package.  That was wrong, because it could
! 	be a child package.  Avoid recursing into child packages; they
! 	have not been annotated with representation information, and
! 	-gnatR2 queries that information.
! 
! 2022-01-05  Marc Poulhiès  <poulhies@adacore.com>
! 
! 	* libgnat/s-sopco3.ads, libgnat/s-sopco3.adb: Remove.
! 	* libgnat/s-sopco4.ads, libgnat/s-sopco4.adb: Remove.
! 	* libgnat/s-sopco5.ads, libgnat/s-sopco5.adb: Remove.
! 	* libgnat/s-strops.ads, libgnat/s-strops.adb: Remove.
! 	* Makefile.rtl (ADA_EXCLUDE_SRCS): Remove occurences of removed
! 	units.
! 	* gcc-interface/Make-lang.in (ada/sdefault.o): Remove
! 	dependencies on removed units.
! 	(GNATBIND_OBJS): Remove occurences of removed units.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch3.adb (Build_Dcheck_Function): Remove extra whitespace.
! 	* libgnarl/s-taskin.adb (Initialize_ATCB): Likewise.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_attr.adb (Build_Array_VS_Func): Remove explicit "IN" in
! 	spec of the generated array validation function; it was
! 	redundant, just like it would be in a user-written code.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
! 
! 	* exp_ch4.adb (Expand_N_Op_Ne): Fix whitespace.
! 	* sem_dim.adb (Expand_Put_Call_With_Symbol): Likewise.
! 	(Reduce): Likewise.
! 
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_aggr.adb (Two_Pass_Aggregate_Expansion): Fix whitespace.
! 	* libgnat/a-cofuve.ads (Add): Likewise.
! 	* sem_ch3.adb (Build_Access_Subprogram_Wrapper): Likewise.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch3.adb (Make_Eq_Body, Make_Neq_Body,
! 	Make_Predefined_Primitive_Eq_Spec,
! 	Make_Predefined_Primitive_Specs): Fix whitespace.
  
! 2022-01-05  Etienne Servais  <servais@adacore.com>
  
! 	* sem_ch3.adb (Analyze_Component_Declaration): Rework condition
! 	to build subtypes.
! 	(Analyze_Object_Declaration): Likewise.
! 	(Should_Build_Subtype): New.
  
! 2022-01-05  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-arit128.adb: Mark in SPARK.
! 	* libgnat/s-arit128.ads: Add functional contracts.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* sem_util.adb (String_From_Numeric_Literal): Simplify using
! 	membership tests and ranges; fix whitespace.
  
! 2022-01-05  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-expint.ads: Mark in SPARK. Adapt to change to
! 	package.
! 	* libgnat/s-explli.ads: Likewise.
! 	* libgnat/s-expllli.ads: Likewise.
! 	* libgnat/s-expont.adb: Add lemmas and ghost code.
! 	* libgnat/s-expont.ads: Add functional contract.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_disp.adb (Gen_Parameters_Profile): Remove redundant guard.
  
! 2022-01-05  Claire Dross  <dross@adacore.com>
  
! 	* libgnat/s-valuti.ads (Starts_As_Exponent_Format_Ghost): Ghost
! 	function to determine if a string is recognized as something
! 	which might be an exponent.
! 	(Is_Opt_Exponent_Format_Ghost): Ghost function to determine if a
! 	string has the correct format for an optional exponent.
! 	(Scan_Exponent): Use ghost functions to factorize contracts.
  
! 2022-01-05  Bob Duff  <duff@adacore.com>
  
! 	* exp_util.ads (Get_Current_Value_Condition): Belt: Add a
! 	postcondition that Val /= Var.
! 	* sem_util.adb (Known_Null): Suspenders: Raise Program_Error if
! 	Get_Current_Value_Condition returned the same value. This will
! 	be enabled even without assertions, because infinite recursion
! 	is a nuisance -- better to crash if this bug ever occurs.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch3.adb (Make_Null_Procedure_Specs): Simplify by reusing
! 	Copy_Subprogram_Spec.
! 	* sem_util.ads (Copy_Subprogram_Spec): Add New_Sloc parameter.
! 	* sem_util.adb (Copy_Subprogram_Spec): Pass New_Sloc to
! 	New_Copy_Tree.
  
! 2022-01-05  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-exnint.ads: Mark in SPARK. Adapt to change to
! 	package.
! 	* libgnat/s-exnlli.ads: Likewise.
! 	* libgnat/s-exnllli.ads: Likewise.
! 	* libgnat/s-exponn.adb: Add lemmas and ghost code. Secial case
! 	value zero as Left or Right to simplify proof.
! 	* libgnat/s-exponn.ads: Transform the generic function into a
! 	generic package with a function inside. Add a functional
! 	contract.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* sem_ch12.adb (Instantiate_Formal_Subprogram): Remove redundant
! 	call to Set_Defining_Unit_Name; a similar call is done few lines
! 	below.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Create
! 	distinct copies of parameter lists for spec and body with
! 	Copy_Parameter_List; cleanup.
! 	(Make_Null_Procedure_Specs): Fix style in comments; remove a
! 	potentially unnecessary initialization of a local variable.
  
! 2022-01-05  Bob Duff  <duff@adacore.com>
  
! 	* einfo-utils.ads, einfo-utils.adb (Renamed_Entity Alias):
! 	Change Node_Id to Entity_Id.
  
! 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* sem_ch12.ads (Build_Function_Wrapper, Build_Operator_Wrapper):
! 	Remove unreferenced spec.
! 	* sem_ch12.adb (Build_Function_Wrapper, Build_Operator_Wrapper):
! 	Remove dead bodies.
  
! 2022-01-05  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-aridou.adb: Apply replacement.
  
! 2022-01-05  Yannick Moy  <moy@adacore.com>
  
! 	* libgnat/s-aridou.adb (Lemma_Word_Commutation): Fix for
! 	instances with other values of Single_Size.
  
! 2022-01-05  Marc Poulhiès  <poulhies@adacore.com>
  
! 	* doc/gnat_rm/implementation_defined_pragmas.rst (Compiler_Unit)
! 	(Compiler_Unit_Warning): Remove.
! 	* gnat-style.texi, gnat_rm.texi, gnat_ugn.texi: Regenerate.
! 	* libgnat/g-dynhta.ads: Add comment indicating this unit is
! 	built during stage1.
! 	* libgnat/g-dyntab.ads: Likewise.
! 	* libgnat/g-graphs.ads: Likewise.
! 	* libgnat/g-lists.ads: Likewise.
! 	* libgnat/g-sets.ads: Likewise.
! 	* libgnat/gnat.ads: Likewise.
! 	* libgnat/s-pehage.ads: Likewise.
! 	* libgnat/s-resfil.ads: Likewise.
! 	* libgnat/s-rident.ads: Likewise.
! 	* libgnat/s-utf_32.ads: Likewise.
! 	* errout.ads: Update comment.
! 	* opt.ads (Opt): Remove Compiler_Unit.
! 	* par-ch5.adb (All_Pragmas): Remove call to Check_Compiler_Unit.
! 	* sem_prag.adb (Analyze_Pragma): Likewise.
! 	* sem_ch4.adb (Non_Static_Choice_Error, Analyze_If_Expression)
! 	(Analyze_Set_Membership, Record_Interp): Likewise.
! 	* sem_ch11.adb (Analyze_Raise_Expression): Likewise.
! 	* sem_ch6.adb: Remove Restric package reference.
! 	(Analyze_Extended_Return_Statement): Remove call to
! 	Check_Compiler_Unit.
! 	* par-prag.adb (Process_Restrictions_Or_Restriction_Warnings):
! 	Remove handling of Pragma_Compiler_Unit[_Warning}.
! 	* restrict.adb (Check_Compiler_Unit): Remove both.
! 	* restrict.ads: Likewise.
! 	* snames.ads-tmpl (Pragma_Id): Remove
! 	Pragma_Compiler_Unit[_Warning].
! 	* libgnat/a-assert.ads: Remove pragma Compiler_Unit_Warning.
! 	* libgnat/a-chlat1.ads: Likewise.
! 	* libgnat/a-elchha.adb: Likewise.
! 	* libgnat/a-elchha.ads: Likewise.
! 	* libgnat/a-ioexce.ads: Likewise.
! 	* libgnat/a-strhas.ads: Likewise.
! 	* libgnat/g-byorma.adb: Likewise.
! 	* libgnat/g-byorma.ads: Likewise.
! 	* libgnat/g-dyntab.adb: Likewise.
! 	* libgnat/g-heasor.ads: Likewise.
! 	* libgnat/g-hesora.adb: Likewise.
! 	* libgnat/g-hesora.ads: Likewise.
! 	* libgnat/g-htable.adb: Likewise.
! 	* libgnat/g-htable.ads: Likewise.
! 	* libgnat/g-spchge.adb: Likewise.
! 	* libgnat/g-spchge.ads: Likewise.
! 	* libgnat/g-speche.adb: Likewise.
! 	* libgnat/g-speche.ads: Likewise.
! 	* libgnat/g-table.ads: Likewise.
! 	* libgnat/g-u3spch.adb: Likewise.
! 	* libgnat/g-u3spch.ads: Likewise.
! 	* libgnat/interfac.ads: Likewise.
! 	* libgnat/s-addope.adb: Likewise.
! 	* libgnat/s-addope.ads: Likewise.
! 	* libgnat/s-assert.adb: Likewise.
! 	* libgnat/s-assert.ads: Likewise.
! 	* libgnat/s-bitops.adb: Likewise.
! 	* libgnat/s-bitops.ads: Likewise.
! 	* libgnat/s-carun8.adb: Likewise.
! 	* libgnat/s-carun8.ads: Likewise.
! 	* libgnat/s-casuti.adb: Likewise.
! 	* libgnat/s-casuti.ads: Likewise.
! 	* libgnat/s-conca2.adb: Likewise.
! 	* libgnat/s-conca2.ads: Likewise.
! 	* libgnat/s-conca3.adb: Likewise.
! 	* libgnat/s-conca3.ads: Likewise.
! 	* libgnat/s-conca4.adb: Likewise.
! 	* libgnat/s-conca4.ads: Likewise.
! 	* libgnat/s-conca5.adb: Likewise.
! 	* libgnat/s-conca5.ads: Likewise.
! 	* libgnat/s-conca6.adb: Likewise.
! 	* libgnat/s-conca6.ads: Likewise.
! 	* libgnat/s-conca7.adb: Likewise.
! 	* libgnat/s-conca7.ads: Likewise.
! 	* libgnat/s-conca8.adb: Likewise.
! 	* libgnat/s-conca8.ads: Likewise.
! 	* libgnat/s-conca9.adb: Likewise.
! 	* libgnat/s-conca9.ads: Likewise.
! 	* libgnat/s-crc32.adb: Likewise.
! 	* libgnat/s-crc32.ads: Likewise.
! 	* libgnat/s-crtl.ads: Likewise.
! 	* libgnat/s-excdeb.adb: Likewise.
! 	* libgnat/s-excdeb.ads: Likewise.
! 	* libgnat/s-except.ads: Likewise.
! 	* libgnat/s-exctab.adb: Likewise.
! 	* libgnat/s-exctab.ads: Likewise.
! 	* libgnat/s-finmas.ads: Likewise.
! 	* libgnat/s-htable.adb: Likewise.
! 	* libgnat/s-htable.ads: Likewise.
! 	* libgnat/s-mastop.adb: Likewise.
! 	* libgnat/s-mastop.ads: Likewise.
! 	* libgnat/s-memory.adb: Likewise.
! 	* libgnat/s-memory.ads: Likewise.
! 	* libgnat/s-os_lib.ads: Likewise.
! 	* libgnat/s-parame.adb: Likewise.
! 	* libgnat/s-parame.ads: Likewise.
! 	* libgnat/s-parame__posix2008.ads: Likewise.
! 	* libgnat/s-purexc.ads: Likewise.
! 	* libgnat/s-resfil.adb: Likewise.
! 	* libgnat/s-restri.adb: Likewise.
! 	* libgnat/s-restri.ads: Likewise.
! 	* libgnat/s-secsta.adb: Likewise.
! 	* libgnat/s-secsta.ads: Likewise.
! 	* libgnat/s-soflin.adb: Likewise.
! 	* libgnat/s-soflin.ads: Likewise.
! 	* libgnat/s-sopco3.adb: Likewise.
! 	* libgnat/s-sopco3.ads: Likewise.
! 	* libgnat/s-sopco4.adb: Likewise.
! 	* libgnat/s-sopco4.ads: Likewise.
! 	* libgnat/s-sopco5.adb: Likewise.
! 	* libgnat/s-sopco5.ads: Likewise.
! 	* libgnat/s-spsufi.ads: Likewise.
! 	* libgnat/s-stache.adb: Likewise.
! 	* libgnat/s-stache.ads: Likewise.
! 	* libgnat/s-stalib.adb: Likewise.
! 	* libgnat/s-stalib.ads: Likewise.
! 	* libgnat/s-stoele.adb: Likewise.
! 	* libgnat/s-stoele.ads: Likewise.
! 	* libgnat/s-strcom.adb: Likewise.
! 	* libgnat/s-strcom.ads: Likewise.
! 	* libgnat/s-strhas.adb: Likewise.
! 	* libgnat/s-string.adb: Likewise.
! 	* libgnat/s-string.ads: Likewise.
! 	* libgnat/s-strops.adb: Likewise.
! 	* libgnat/s-strops.ads: Likewise.
! 	* libgnat/s-ststop.adb: Likewise.
! 	* libgnat/s-ststop.ads: Likewise.
! 	* libgnat/s-traceb.adb: Likewise.
! 	* libgnat/s-traceb.ads: Likewise.
! 	* libgnat/s-traent.adb: Likewise.
! 	* libgnat/s-traent.ads: Likewise.
! 	* libgnat/s-utf_32.adb: Likewise.
! 	* libgnat/s-unstyp.ads: Likewise.
! 	* libgnat/s-wchcnv.adb: Likewise.
! 	* libgnat/s-wchcnv.ads: Likewise.
! 	* libgnat/s-wchcon.adb: Likewise.
! 	* libgnat/s-wchcon.ads: Likewise.
! 	* libgnat/s-wchjis.adb: Likewise.
! 	* libgnat/s-wchjis.ads: Likewise.
  
! 2022-01-05  Arnaud Charlet  <charlet@adacore.com>
  
! 	* osint.adb (File_Names_Equal): Declare To_Lower locally.
! 	* osint.ads (Null_FD): New.
! 	* fmap.adb, sinput-l.adb, targparm.adb: Adapt to changes above.
! 	* switch-b.adb (Scan_Debug_Switches): Use Is_Regular_File to
! 	simplify the bootstrap dependencies.
  
! 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
  
  	* gnat_ugn.texi: Bump @copying's copyright year.
  	* gnat_rm.texi: Likewise.
  
  
! Copyright (C) 2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 1,1498 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-04-15  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR bootstrap/109510
! 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <types>: Do not reset
! 	align to zero in any case.  Set TYPE_USER_ALIGN on the type only if
! 	it is an aggregate type, or else a type whose default alignment is
! 	specifically capped on selected platforms.
  
! 2023-04-14  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR bootstrap/109510
! 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <types>: Reset align
! 	to zero if its value is equal to TYPE_ALIGN and the type is scalar.
! 	Set TYPE_USER_ALIGN on the type only if align is positive.
  
! 2023-03-06  Javier Miranda  <miranda@adacore.com>
  
! 	PR ada/108858
! 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): For functions with
! 	separate spec, if their return type was visible through a limited-
! 	with context clause, their extra formals were not added when the
! 	spec was analyzed.  Now the full view must be available, and the
! 	extra formals can be created and Returns_By_Ref computed.
  
! 2023-03-06  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	PR ada/108909
! 	PR ada/108983
! 	* Make-generated.in: Do not use GNATMAKE.
! 	* gcc-interface/Makefile.in: Ditto.
  
! 2023-02-26  Peter Foley  <pefoley2@pefoley.com>
  
! 	PR ada/108909
! 	* Make-generated.in: Use GNATMAKE.
! 	* gcc-interface/Makefile.in: Ditto.
  
! 2023-02-14  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* gcc-interface/trans.cc (gnat_gimplify_expr): Add missing guard.
  
! 2023-02-14  Dongsheng Song  <dongsheng.song@gmail.com>
  
! 	* adaint.c [Linux]: Include <features.h>.
! 	(__gnat_get_executable_load_address) [Linux]: Enable only for
! 	glibc and uClibc.
  
! 2023-01-16  Marc Poulhiès  <poulhies@adacore.com>
  
! 	* gcc-interface/Make-lang.in: Update copyright years.
  	* gcc-interface/Makefile.in: Likewise.
+ 	* gcc-interface/ada-builtin-types.def: Likewise.
+ 	* gcc-interface/ada-builtins.def: Likewise.
+ 	* gcc-interface/ada-tree.def: Likewise.
+ 	* gcc-interface/ada-tree.h: Likewise.
+ 	* gcc-interface/ada.h: Likewise.
  	* gcc-interface/config-lang.in: Likewise.
! 	* gcc-interface/cuintp.cc: Likewise.
! 	* gcc-interface/decl.cc: Likewise.
! 	* gcc-interface/gadaint.h: Likewise.
! 	* gcc-interface/gigi.h: Likewise.
! 	* gcc-interface/lang-specs.h: Likewise.
! 	* gcc-interface/lang.opt: Likewise.
! 	* gcc-interface/misc.cc: Likewise.
! 	* gcc-interface/system.ads: Likewise.
! 	* gcc-interface/targtyps.cc: Likewise.
! 	* gcc-interface/trans.cc: Likewise.
! 	* gcc-interface/utils.cc: Likewise.
! 	* gcc-interface/utils2.cc: Likewise.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Make_Allocator_For_Return): Fix typo in comment.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Make_Allocator_For_Return): Convert the expression
! 	to the return object's type in the constrained array case as well.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): For a class-wide non-
! 	interface stand-alone object initialized by a function call, call
! 	Remove_Side_Effects on the expression to capture the result.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_util.ads (Has_Tag_Of_Type): Declare.
! 	* exp_util.adb (Has_Tag_Of_Type): Move to package level.  Recurse on
! 	qualified expressions.
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Use a static reference
! 	to the interface tag in more cases for class-wide interface objects.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_util.adb (Make_CW_Equivalent_Type.Has_Tag_Of_Type): Fix pasto.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_util.adb (Is_Temporary_For_Interface_Object): Delete.
! 	(Is_Finalizable_Transient.Is_Aliased): Deal with the specific case
! 	of temporaries generated for interface objects.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Do not generate a back-
! 	and-forth displacement of the object's address when using a renaming
! 	for an interface object with an expression of the same type.
! 	* exp_ch4.adb (Expand_Allocator_Expression): Do not remove the side
! 	effects of the expression up front for the simple allocators. Do not
! 	call the Adjust primitive if the expression is a function call.
! 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Do not expand the call
! 	unnecessarily for a special return object.
! 	(Expand_Simple_Function_Return): Restore the displacement of the
! 	return object's address in the case where the expression is the call
! 	to a function whose result type is a type that needs finalization.
! 	* exp_util.adb (Expand_Subtype_From_Expr): Do not remove the side
! 	effects of the expression before calling Make_Subtype_From_Expr.
! 	(Make_CW_Equivalent_Type): If the expression has the tag of its type
! 	and this type has a uniform size, use 'Object_Size of this type in
! 	lieu of 'Size of the expression to compute the expression's size.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Make_Allocator_For_Return): Put back an interface
! 	conversion for expressions with non-interface class-wide type.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Also optimize aliased
! 	objects if their nominal subtype is not an unconstrained array.
  
! 2023-01-16  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Factor out conditions
! 	needed for an initializating expression that is a function call to
! 	be renamable into the Is_Renamable_Function_Call predicate.
! 	Use it to implement the renaming in the case of class-wide interface
! 	objects.  Remove an interface conversion on all paths, separate and
! 	optimize the renaming path in the special expansion for interfaces.
! 	(Is_Renamable_Function_Call): New predicate.
! 	(Make_Allocator_For_Return): Put back an interface conversion.
! 	* exp_ch6.adb (Apply_CW_Accessibility_Check): Remove useless access
! 	checks on RE_Tag_Ptr.
  
! 2023-01-09  Arnaud Charlet  <charlet@adacore.com>
  
! 	* accessibility.adb, accessibility.ads, ada_get_targ.adb: Update copyright year.
! 	* adabkend.adb, adabkend.ads, adadecode.c, adadecode.h, adaint.c: Likewise.
! 	* adaint.h, affinity.c, ali-util.adb, ali-util.ads, ali.adb: Likewise.
! 	* ali.ads, alloc.ads, argv-lynxos178-raven-cert.c, argv.c: Likewise.
! 	* aspects.adb, aspects.ads, atree.adb, atree.ads, atree.h: Likewise.
! 	* aux-io.c, back_end.adb, back_end.ads, backend_utils.adb: Likewise.
! 	* backend_utils.ads, bcheck.adb, bcheck.ads, binde.adb, binde.ads: Likewise.
! 	* binderr.adb, binderr.ads, bindgen.adb, bindgen.ads: Likewise.
! 	* bindo-augmentors.adb, bindo-augmentors.ads, bindo-builders.adb: Likewise.
! 	* bindo-builders.ads, bindo-diagnostics.adb: Likewise.
! 	* bindo-diagnostics.ads, bindo-elaborators.adb: Likewise.
! 	* bindo-elaborators.ads, bindo-graphs.adb, bindo-graphs.ads: Likewise.
! 	* bindo-units.adb, bindo-units.ads, bindo-validators.adb: Likewise.
! 	* bindo-validators.ads, bindo-writers.adb, bindo-writers.ads: Likewise.
! 	* bindo.adb, bindo.ads, bindusg.adb, bindusg.ads, butil.adb: Likewise.
! 	* butil.ads, cal.c, casing.adb, casing.ads, checks.adb: Likewise.
! 	* checks.ads, cio.c, clean.adb, clean.ads: Likewise.
! 	* comperr.adb, comperr.ads, contracts.adb, contracts.ads: Likewise.
! 	* csets.adb, csets.ads, cstand.adb: Likewise.
! 	* cstand.ads, cstreams.c, ctrl_c.c, debug.adb, debug.ads: Likewise.
! 	* debug_a.adb, debug_a.ads, einfo-utils.adb, einfo-utils.ads: Likewise.
! 	* einfo.adb, einfo.ads, elists.adb, elists.ads, elists.h, env.c: Likewise.
! 	* env.h, err_vars.ads, errno.c, errout.adb, errout.ads: Likewise.
! 	* erroutc.adb, erroutc.ads, errutil.adb, errutil.ads: Likewise.
! 	* eval_fat.adb, eval_fat.ads, exit.c, exp_aggr.adb, exp_aggr.ads: Likewise.
! 	* exp_atag.adb, exp_atag.ads, exp_attr.adb, exp_attr.ads: Likewise.
! 	* exp_cg.adb, exp_cg.ads, exp_ch10.ads, exp_ch11.adb: Likewise.
! 	* exp_ch11.ads, exp_ch12.adb, exp_ch12.ads, exp_ch13.adb: Likewise.
! 	* exp_ch13.ads, exp_ch2.adb, exp_ch2.ads, exp_ch3.adb: Likewise.
! 	* exp_ch3.ads, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, exp_ch5.ads: Likewise.
! 	* exp_ch6.adb, exp_ch6.ads, exp_ch7.adb, exp_ch7.ads, exp_ch8.adb: Likewise.
! 	* exp_ch8.ads, exp_ch9.adb, exp_ch9.ads, exp_code.adb: Likewise.
! 	* exp_code.ads, exp_dbug.adb, exp_dbug.ads, exp_disp.adb: Likewise.
! 	* exp_disp.ads, exp_dist.adb, exp_dist.ads, exp_fixd.adb: Likewise.
! 	* exp_fixd.ads, exp_imgv.adb, exp_imgv.ads, exp_intr.adb: Likewise.
! 	* exp_intr.ads, exp_pakd.adb, exp_pakd.ads, exp_prag.adb: Likewise.
! 	* exp_prag.ads, exp_put_image.adb, exp_put_image.ads, exp_sel.adb: Likewise.
! 	* exp_sel.ads, exp_smem.adb, exp_smem.ads, exp_spark.adb: Likewise.
! 	* exp_spark.ads, exp_strm.adb, exp_strm.ads, exp_tss.adb: Likewise.
! 	* exp_tss.ads, exp_unst.adb, exp_unst.ads, exp_util.adb: Likewise.
! 	* exp_util.ads, expander.adb, expander.ads, expect.c, fe.h: Likewise.
! 	* final.c, fmap.adb, fmap.ads, fname-sf.adb, fname-sf.ads: Likewise.
! 	* fname-uf.adb, fname-uf.ads, fname.adb, fname.ads, freeze.adb: Likewise.
! 	* freeze.ads, frontend.adb, frontend.ads, gen_il-fields.ads: Likewise.
! 	* gen_il-gen-gen_entities.adb, gen_il-gen-gen_nodes.adb: Likewise.
! 	* gen_il-gen.adb, gen_il-gen.ads, gen_il-internals.adb: Likewise.
! 	* gen_il-internals.ads, gen_il-main.adb, gen_il-types.ads: Likewise.
! 	* gen_il.adb, gen_il.ads, get_scos.adb, get_scos.ads: Likewise.
! 	* get_targ.adb, get_targ.ads, ghost.adb, ghost.ads, gnat1drv.adb: Likewise.
! 	* gnat1drv.ads, gnat_cuda.adb, gnat_cuda.ads: Likewise.
! 	* gnatbind.adb, gnatbind.ads, gnatchop.adb: Likewise.
! 	* gnatclean.adb, gnatcmd.adb, gnatcmd.ads, gnatdll.adb: Likewise.
! 	* gnatkr.adb, gnatkr.ads, gnatlink.adb, gnatlink.ads, gnatls.adb: Likewise.
! 	* gnatls.ads, gnatmake.adb, gnatmake.ads, gnatname.adb: Likewise.
! 	* gnatname.ads, gnatprep.adb, gnatprep.ads: Likewise.
! 	* gprep.adb, gprep.ads, gsocket.h: Likewise.
  	* hostparm.ads: Likewise.
! 	* impunit.adb, impunit.ads, indepsw-aix.adb, indepsw-darwin.adb: Likewise.
! 	* indepsw-gnu.adb, indepsw.adb, indepsw.ads, init.c: Likewise.
! 	* initialize.c, inline.adb, inline.ads, itypes.adb, itypes.ads: Likewise.
! 	* krunch.adb, krunch.ads, layout.adb, layout.ads: Likewise.
! 	* lib-list.adb, lib-load.adb, lib-load.ads, lib-sort.adb: Likewise.
! 	* lib-util.adb, lib-util.ads, lib-writ.adb, lib-writ.ads: Likewise.
! 	* lib-xref-spark_specific.adb, lib-xref.adb, lib-xref.ads: Likewise.
! 	* lib.adb, lib.ads, libgnarl/a-astaco.adb, libgnarl/a-dispat.adb: Likewise.
! 	* libgnarl/a-dynpri.adb, libgnarl/a-etgrbu.ads: Likewise.
! 	* libgnarl/a-exetim__darwin.adb, libgnarl/a-exetim__default.ads: Likewise.
! 	* libgnarl/a-exetim__mingw.adb, libgnarl/a-exetim__mingw.ads: Likewise.
! 	* libgnarl/a-exetim__posix.adb, libgnarl/a-interr.adb: Likewise.
! 	* libgnarl/a-interr.ads, libgnarl/a-intnam.ads: Likewise.
! 	* libgnarl/a-intnam__aix.ads, libgnarl/a-intnam__darwin.ads: Likewise.
! 	* libgnarl/a-intnam__dragonfly.ads, libgnarl/a-intnam__dummy.ads: Likewise.
! 	* libgnarl/a-intnam__freebsd.ads, libgnarl/a-intnam__hpux.ads: Likewise.
! 	* libgnarl/a-intnam__linux.ads, libgnarl/a-intnam__lynxos.ads: Likewise.
! 	* libgnarl/a-intnam__mingw.ads, libgnarl/a-intnam__qnx.ads: Likewise.
! 	* libgnarl/a-intnam__rtems.ads, libgnarl/a-intnam__solaris.ads: Likewise.
! 	* libgnarl/a-intnam__vxworks.ads, libgnarl/a-reatim.adb: Likewise.
! 	* libgnarl/a-reatim.ads, libgnarl/a-retide.adb: Likewise.
! 	* libgnarl/a-retide.ads, libgnarl/a-rttiev.adb: Likewise.
! 	* libgnarl/a-rttiev.ads, libgnarl/a-synbar.adb: Likewise.
! 	* libgnarl/a-synbar.ads, libgnarl/a-synbar__posix.adb: Likewise.
! 	* libgnarl/a-synbar__posix.ads, libgnarl/a-sytaco.adb: Likewise.
! 	* libgnarl/a-sytaco.ads, libgnarl/a-tasatt.adb: Likewise.
! 	* libgnarl/a-tasatt.ads, libgnarl/a-taside.adb: Likewise.
! 	* libgnarl/a-taside.ads, libgnarl/a-tasini.adb: Likewise.
! 	* libgnarl/a-tasini.ads, libgnarl/a-taster.adb: Likewise.
! 	* libgnarl/g-boubuf.adb, libgnarl/g-boubuf.ads: Likewise.
! 	* libgnarl/g-boumai.ads, libgnarl/g-semaph.adb: Likewise.
! 	* libgnarl/g-semaph.ads, libgnarl/g-signal.adb: Likewise.
! 	* libgnarl/g-signal.ads, libgnarl/g-tastus.ads: Likewise.
! 	* libgnarl/g-thread.adb, libgnarl/g-thread.ads: Likewise.
! 	* libgnarl/i-vxinco.adb, libgnarl/i-vxinco.ads: Likewise.
! 	* libgnarl/s-inmaop.ads, libgnarl/s-inmaop__dummy.adb: Likewise.
! 	* libgnarl/s-inmaop__hwint.adb, libgnarl/s-inmaop__posix.adb: Likewise.
! 	* libgnarl/s-interr.adb, libgnarl/s-interr.ads: Likewise.
! 	* libgnarl/s-interr__dummy.adb, libgnarl/s-interr__hwint.adb: Likewise.
  	* libgnarl/s-interr__sigaction.adb: Likewise.
! 	* libgnarl/s-interr__vxworks.adb, libgnarl/s-intman.ads: Likewise.
! 	* libgnarl/s-intman__android.adb, libgnarl/s-intman__dummy.adb: Likewise.
! 	* libgnarl/s-intman__lynxos.adb, libgnarl/s-intman__mingw.adb: Likewise.
! 	* libgnarl/s-intman__posix.adb, libgnarl/s-intman__qnx.adb: Likewise.
! 	* libgnarl/s-intman__rtems.adb, libgnarl/s-intman__rtems.ads: Likewise.
! 	* libgnarl/s-intman__solaris.adb, libgnarl/s-intman__susv3.adb: Likewise.
! 	* libgnarl/s-intman__vxworks.adb, libgnarl/s-intman__vxworks.ads: Likewise.
! 	* libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads: Likewise.
! 	* libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads: Likewise.
! 	* libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads: Likewise.
! 	* libgnarl/s-linux__sparc.ads, libgnarl/s-linux__x32.ads: Likewise.
! 	* libgnarl/s-mudido.adb, libgnarl/s-mudido__affinity.adb: Likewise.
! 	* libgnarl/s-osinte__aix.adb, libgnarl/s-osinte__aix.ads: Likewise.
! 	* libgnarl/s-osinte__android.adb, libgnarl/s-osinte__android.ads: Likewise.
! 	* libgnarl/s-osinte__darwin.adb, libgnarl/s-osinte__darwin.ads: Likewise.
  	* libgnarl/s-osinte__dragonfly.adb: Likewise.
! 	* libgnarl/s-osinte__dragonfly.ads, libgnarl/s-osinte__dummy.ads: Likewise.
! 	* libgnarl/s-osinte__freebsd.adb, libgnarl/s-osinte__freebsd.ads: Likewise.
! 	* libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__gnu.ads: Likewise.
  	* libgnarl/s-osinte__hpux-dce.adb: Likewise.
! 	* libgnarl/s-osinte__hpux-dce.ads, libgnarl/s-osinte__hpux.ads: Likewise.
  	* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
! 	* libgnarl/s-osinte__linux.ads, libgnarl/s-osinte__lynxos178.adb: Likewise.
! 	* libgnarl/s-osinte__lynxos178e.ads, libgnarl/s-osinte__mingw.ads: Likewise.
! 	* libgnarl/s-osinte__posix.adb, libgnarl/s-osinte__qnx.adb: Likewise.
! 	* libgnarl/s-osinte__qnx.ads, libgnarl/s-osinte__rtems.adb: Likewise.
! 	* libgnarl/s-osinte__rtems.ads, libgnarl/s-osinte__solaris.adb: Likewise.
! 	* libgnarl/s-osinte__solaris.ads, libgnarl/s-osinte__vxworks.adb: Likewise.
! 	* libgnarl/s-osinte__vxworks.ads, libgnarl/s-osinte__x32.adb: Likewise.
! 	* libgnarl/s-proinf.adb, libgnarl/s-proinf.ads: Likewise.
! 	* libgnarl/s-putaim.adb, libgnarl/s-putaim.ads: Likewise.
! 	* libgnarl/s-qnx.ads, libgnarl/s-solita.adb: Likewise.
! 	* libgnarl/s-solita.ads, libgnarl/s-stusta.adb: Likewise.
! 	* libgnarl/s-stusta.ads, libgnarl/s-taasde.adb: Likewise.
! 	* libgnarl/s-taasde.ads, libgnarl/s-tadeca.adb: Likewise.
! 	* libgnarl/s-tadeca.ads, libgnarl/s-tadert.adb: Likewise.
! 	* libgnarl/s-tadert.ads, libgnarl/s-taenca.adb: Likewise.
! 	* libgnarl/s-taenca.ads, libgnarl/s-taprob.adb: Likewise.
! 	* libgnarl/s-taprob.ads, libgnarl/s-taprop.ads: Likewise.
! 	* libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb: Likewise.
! 	* libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb: Likewise.
! 	* libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb: Likewise.
! 	* libgnarl/s-taprop__rtems.adb, libgnarl/s-taprop__solaris.adb: Likewise.
! 	* libgnarl/s-taprop__vxworks.adb, libgnarl/s-tarest.adb: Likewise.
! 	* libgnarl/s-tarest.ads, libgnarl/s-tasdeb.adb: Likewise.
! 	* libgnarl/s-tasdeb.ads, libgnarl/s-tasinf.adb: Likewise.
! 	* libgnarl/s-tasinf.ads, libgnarl/s-tasinf__linux.adb: Likewise.
! 	* libgnarl/s-tasinf__linux.ads, libgnarl/s-tasinf__mingw.adb: Likewise.
! 	* libgnarl/s-tasinf__mingw.ads, libgnarl/s-tasinf__solaris.adb: Likewise.
! 	* libgnarl/s-tasinf__solaris.ads, libgnarl/s-tasinf__vxworks.ads: Likewise.
! 	* libgnarl/s-tasini.adb, libgnarl/s-tasini.ads: Likewise.
! 	* libgnarl/s-taskin.adb, libgnarl/s-taskin.ads: Likewise.
! 	* libgnarl/s-taspri__dummy.ads, libgnarl/s-taspri__hpux-dce.ads: Likewise.
! 	* libgnarl/s-taspri__lynxos.ads, libgnarl/s-taspri__mingw.ads: Likewise.
  	* libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
! 	* libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads: Likewise.
! 	* libgnarl/s-taspri__vxworks.ads, libgnarl/s-tasque.adb: Likewise.
! 	* libgnarl/s-tasque.ads, libgnarl/s-tasren.adb: Likewise.
! 	* libgnarl/s-tasren.ads, libgnarl/s-tasres.ads: Likewise.
! 	* libgnarl/s-tassta.adb, libgnarl/s-tassta.ads: Likewise.
! 	* libgnarl/s-tasuti.adb, libgnarl/s-tasuti.ads: Likewise.
! 	* libgnarl/s-tataat.adb, libgnarl/s-tataat.ads: Likewise.
! 	* libgnarl/s-tpinop.adb, libgnarl/s-tpinop.ads: Likewise.
! 	* libgnarl/s-tpoaal.adb, libgnarl/s-tpoben.adb: Likewise.
! 	* libgnarl/s-tpoben.ads, libgnarl/s-tpobmu.adb: Likewise.
! 	* libgnarl/s-tpobmu.ads, libgnarl/s-tpobop.adb: Likewise.
! 	* libgnarl/s-tpobop.ads, libgnarl/s-tpopmo.adb: Likewise.
  	* libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
! 	* libgnarl/s-tpopsp__posix.adb, libgnarl/s-tpopsp__solaris.adb: Likewise.
! 	* libgnarl/s-tpopsp__tls.adb, libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
  	* libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
! 	* libgnarl/s-tpopsp__vxworks.adb, libgnarl/s-tporft.adb: Likewise.
! 	* libgnarl/s-tposen.adb, libgnarl/s-tposen.ads: Likewise.
! 	* libgnarl/s-vxwext.adb, libgnarl/s-vxwext.ads: Likewise.
  	* libgnarl/s-vxwext__kernel-smp.adb: Likewise.
! 	* libgnarl/s-vxwext__kernel.adb, libgnarl/s-vxwext__kernel.ads: Likewise.
! 	* libgnarl/s-vxwext__rtp-smp.adb, libgnarl/s-vxwext__rtp.adb: Likewise.
! 	* libgnarl/s-vxwext__rtp.ads, libgnarl/s-vxwork__aarch64.ads: Likewise.
! 	* libgnarl/s-vxwork__arm.ads, libgnarl/s-vxwork__ppc.ads: Likewise.
! 	* libgnarl/s-vxwork__x86.ads, libgnarl/thread.c: Likewise.
! 	* libgnat/a-assert.adb, libgnat/a-assert.ads: Likewise.
! 	* libgnat/a-btgbso.adb, libgnat/a-btgbso.ads: Likewise.
! 	* libgnat/a-calari.adb, libgnat/a-calari.ads: Likewise.
! 	* libgnat/a-calcon.adb, libgnat/a-calcon.ads: Likewise.
! 	* libgnat/a-caldel.adb, libgnat/a-caldel.ads: Likewise.
! 	* libgnat/a-calend.adb, libgnat/a-calend.ads: Likewise.
! 	* libgnat/a-calfor.adb, libgnat/a-calfor.ads: Likewise.
! 	* libgnat/a-catizo.adb, libgnat/a-cbdlli.adb: Likewise.
! 	* libgnat/a-cbdlli.ads, libgnat/a-cbhama.adb: Likewise.
! 	* libgnat/a-cbhama.ads, libgnat/a-cbhase.adb: Likewise.
! 	* libgnat/a-cbhase.ads, libgnat/a-cbmutr.adb: Likewise.
! 	* libgnat/a-cbmutr.ads, libgnat/a-cborma.adb: Likewise.
! 	* libgnat/a-cborma.ads, libgnat/a-cborse.adb: Likewise.
! 	* libgnat/a-cborse.ads, libgnat/a-cbprqu.adb: Likewise.
! 	* libgnat/a-cbprqu.ads, libgnat/a-cbsyqu.adb: Likewise.
! 	* libgnat/a-cbsyqu.ads, libgnat/a-cdlili.adb: Likewise.
! 	* libgnat/a-cdlili.ads, libgnat/a-cfdlli.ads: Likewise.
! 	* libgnat/a-cfhama.ads, libgnat/a-cfhase.ads: Likewise.
! 	* libgnat/a-cfidll.ads, libgnat/a-cfinse.ads: Likewise.
! 	* libgnat/a-cfinve.ads, libgnat/a-cforma.ads: Likewise.
! 	* libgnat/a-cforse.ads, libgnat/a-cgaaso.adb: Likewise.
! 	* libgnat/a-cgaaso.ads, libgnat/a-cgarso.adb: Likewise.
! 	* libgnat/a-cgcaso.adb, libgnat/a-chacon.adb: Likewise.
! 	* libgnat/a-chacon.ads, libgnat/a-chahan.adb: Likewise.
! 	* libgnat/a-chahan.ads, libgnat/a-chlat9.ads: Likewise.
! 	* libgnat/a-chtgbk.adb, libgnat/a-chtgbk.ads: Likewise.
! 	* libgnat/a-chtgbo.adb, libgnat/a-chtgbo.ads: Likewise.
! 	* libgnat/a-chtgfk.adb, libgnat/a-chtgfk.ads: Likewise.
! 	* libgnat/a-chtgfo.adb, libgnat/a-chtgfo.ads: Likewise.
! 	* libgnat/a-chtgke.adb, libgnat/a-chtgke.ads: Likewise.
! 	* libgnat/a-chtgop.adb, libgnat/a-chtgop.ads: Likewise.
! 	* libgnat/a-chzla1.ads, libgnat/a-chzla9.ads: Likewise.
! 	* libgnat/a-cidlli.adb, libgnat/a-cidlli.ads: Likewise.
! 	* libgnat/a-cihama.adb, libgnat/a-cihama.ads: Likewise.
! 	* libgnat/a-cihase.adb, libgnat/a-cihase.ads: Likewise.
! 	* libgnat/a-cimutr.adb, libgnat/a-cimutr.ads: Likewise.
! 	* libgnat/a-ciorma.adb, libgnat/a-ciorma.ads: Likewise.
! 	* libgnat/a-ciormu.adb, libgnat/a-ciormu.ads: Likewise.
! 	* libgnat/a-ciorse.adb, libgnat/a-ciorse.ads: Likewise.
! 	* libgnat/a-clrefi.adb, libgnat/a-clrefi.ads: Likewise.
! 	* libgnat/a-coboho.adb, libgnat/a-coboho.ads: Likewise.
! 	* libgnat/a-cobove.adb, libgnat/a-cobove.ads: Likewise.
! 	* libgnat/a-cofove.ads, libgnat/a-cofuma.ads: Likewise.
! 	* libgnat/a-cofuse.ads, libgnat/a-cofuve.ads: Likewise.
! 	* libgnat/a-cogeso.adb, libgnat/a-cogeso.ads: Likewise.
! 	* libgnat/a-cohama.adb, libgnat/a-cohama.ads: Likewise.
! 	* libgnat/a-cohase.adb, libgnat/a-cohase.ads: Likewise.
! 	* libgnat/a-cohata.ads, libgnat/a-coinho.adb: Likewise.
! 	* libgnat/a-coinho.ads, libgnat/a-coinho__shared.adb: Likewise.
! 	* libgnat/a-coinho__shared.ads, libgnat/a-coinve.adb: Likewise.
! 	* libgnat/a-coinve.ads, libgnat/a-colien.adb: Likewise.
! 	* libgnat/a-colien.ads, libgnat/a-colire.adb: Likewise.
! 	* libgnat/a-colire.ads, libgnat/a-comlin.adb: Likewise.
! 	* libgnat/a-comlin.ads, libgnat/a-comutr.adb: Likewise.
! 	* libgnat/a-comutr.ads, libgnat/a-conhel.adb: Likewise.
! 	* libgnat/a-conhel.ads, libgnat/a-convec.adb: Likewise.
! 	* libgnat/a-convec.ads, libgnat/a-coorma.adb: Likewise.
! 	* libgnat/a-coorma.ads, libgnat/a-coormu.adb: Likewise.
! 	* libgnat/a-coormu.ads, libgnat/a-coorse.adb: Likewise.
! 	* libgnat/a-coorse.ads, libgnat/a-coprnu.adb: Likewise.
! 	* libgnat/a-coprnu.ads, libgnat/a-costso.adb: Likewise.
! 	* libgnat/a-costso.ads, libgnat/a-crbltr.ads: Likewise.
! 	* libgnat/a-crbtgk.adb, libgnat/a-crbtgk.ads: Likewise.
! 	* libgnat/a-crbtgo.adb, libgnat/a-crbtgo.ads: Likewise.
! 	* libgnat/a-crdlli.adb, libgnat/a-crdlli.ads: Likewise.
! 	* libgnat/a-csquin.ads, libgnat/a-cuprqu.adb: Likewise.
! 	* libgnat/a-cuprqu.ads, libgnat/a-cusyqu.adb: Likewise.
! 	* libgnat/a-cusyqu.ads, libgnat/a-cwila1.ads: Likewise.
! 	* libgnat/a-cwila9.ads, libgnat/a-decima.adb: Likewise.
! 	* libgnat/a-decima.ads, libgnat/a-decima__128.ads: Likewise.
! 	* libgnat/a-dhfina.adb, libgnat/a-dhfina.ads: Likewise.
! 	* libgnat/a-diocst.adb, libgnat/a-diocst.ads: Likewise.
! 	* libgnat/a-direct.adb, libgnat/a-direct.ads: Likewise.
! 	* libgnat/a-direio.adb, libgnat/a-direio.ads: Likewise.
! 	* libgnat/a-dirval.adb, libgnat/a-dirval.ads: Likewise.
! 	* libgnat/a-dirval__mingw.adb, libgnat/a-einuoc.adb: Likewise.
! 	* libgnat/a-einuoc.ads, libgnat/a-elchha.adb: Likewise.
! 	* libgnat/a-elchha.ads, libgnat/a-envvar.adb: Likewise.
! 	* libgnat/a-excach.adb, libgnat/a-except.adb: Likewise.
! 	* libgnat/a-except.ads, libgnat/a-exctra.adb: Likewise.
! 	* libgnat/a-exctra.ads, libgnat/a-exexda.adb: Likewise.
! 	* libgnat/a-exexpr.adb, libgnat/a-exextr.adb: Likewise.
! 	* libgnat/a-exstat.adb, libgnat/a-finali.adb: Likewise.
! 	* libgnat/a-finali.ads, libgnat/a-locale.adb: Likewise.
! 	* libgnat/a-locale.ads, libgnat/a-nagefl.ads: Likewise.
! 	* libgnat/a-naliop.ads, libgnat/a-naliop__nolibm.ads: Likewise.
! 	* libgnat/a-nallfl.ads, libgnat/a-nallfl__wraplf.ads: Likewise.
! 	* libgnat/a-nalofl.ads, libgnat/a-nalofl__simd.ads: Likewise.
! 	* libgnat/a-nashfl.ads, libgnat/a-nashfl__wraplf.ads: Likewise.
! 	* libgnat/a-nbnbig.adb, libgnat/a-nbnbin.adb: Likewise.
! 	* libgnat/a-nbnbin__gmp.adb, libgnat/a-nbnbre.adb: Likewise.
! 	* libgnat/a-ngcefu.adb, libgnat/a-ngcoar.adb: Likewise.
! 	* libgnat/a-ngcoty.adb, libgnat/a-ngcoty.ads: Likewise.
! 	* libgnat/a-ngelfu.adb, libgnat/a-ngelfu.ads: Likewise.
! 	* libgnat/a-ngrear.adb, libgnat/a-ngrear.ads: Likewise.
! 	* libgnat/a-nuauco.ads, libgnat/a-nuauco__x86.ads: Likewise.
! 	* libgnat/a-nuaufl.ads, libgnat/a-nuaufl__simd.ads: Likewise.
! 	* libgnat/a-nuaufl__wraplf.ads, libgnat/a-nudira.adb: Likewise.
! 	* libgnat/a-nudira.ads, libgnat/a-nuflra.adb: Likewise.
! 	* libgnat/a-nuflra.ads, libgnat/a-numaux.ads: Likewise.
! 	* libgnat/a-rbtgbk.adb, libgnat/a-rbtgbk.ads: Likewise.
! 	* libgnat/a-rbtgbo.adb, libgnat/a-rbtgbo.ads: Likewise.
! 	* libgnat/a-rbtgso.adb, libgnat/a-rbtgso.ads: Likewise.
! 	* libgnat/a-sbecin.adb, libgnat/a-sbecin.ads: Likewise.
! 	* libgnat/a-sbhcin.adb, libgnat/a-sbhcin.ads: Likewise.
! 	* libgnat/a-sblcin.adb, libgnat/a-sblcin.ads: Likewise.
! 	* libgnat/a-secain.adb, libgnat/a-secain.ads: Likewise.
! 	* libgnat/a-sequio.adb, libgnat/a-sequio.ads: Likewise.
! 	* libgnat/a-sfecin.ads, libgnat/a-sfhcin.ads: Likewise.
! 	* libgnat/a-sflcin.ads, libgnat/a-shcain.adb: Likewise.
! 	* libgnat/a-shcain.ads, libgnat/a-siocst.adb: Likewise.
! 	* libgnat/a-siocst.ads, libgnat/a-slcain.adb: Likewise.
! 	* libgnat/a-slcain.ads, libgnat/a-ssicst.adb: Likewise.
! 	* libgnat/a-ssicst.ads, libgnat/a-stboha.adb: Likewise.
! 	* libgnat/a-stbubo.adb, libgnat/a-stbubo.ads: Likewise.
! 	* libgnat/a-stbufi.adb, libgnat/a-stbufi.ads: Likewise.
! 	* libgnat/a-stbufo.adb, libgnat/a-stbufo.ads: Likewise.
! 	* libgnat/a-stbuun.adb, libgnat/a-stbuut.adb: Likewise.
! 	* libgnat/a-stbuut.ads, libgnat/a-stmaco.ads: Likewise.
! 	* libgnat/a-storio.adb, libgnat/a-strbou.adb: Likewise.
! 	* libgnat/a-strbou.ads, libgnat/a-stream.adb: Likewise.
! 	* libgnat/a-stream.ads, libgnat/a-strfix.adb: Likewise.
! 	* libgnat/a-strhas.adb, libgnat/a-strmap.adb: Likewise.
! 	* libgnat/a-strmap.ads, libgnat/a-strsea.adb: Likewise.
! 	* libgnat/a-strsea.ads, libgnat/a-strsto.ads: Likewise.
! 	* libgnat/a-strsup.adb, libgnat/a-strsup.ads: Likewise.
! 	* libgnat/a-strunb.adb, libgnat/a-strunb.ads: Likewise.
! 	* libgnat/a-strunb__shared.adb, libgnat/a-strunb__shared.ads: Likewise.
! 	* libgnat/a-ststbo.adb, libgnat/a-ststbo.ads: Likewise.
! 	* libgnat/a-ststio.adb, libgnat/a-ststio.ads: Likewise.
! 	* libgnat/a-ststun.adb, libgnat/a-ststun.ads: Likewise.
! 	* libgnat/a-sttebu.adb, libgnat/a-stunau.adb: Likewise.
! 	* libgnat/a-stunau.ads, libgnat/a-stunau__shared.adb: Likewise.
! 	* libgnat/a-stunha.adb, libgnat/a-stuten.adb: Likewise.
! 	* libgnat/a-stwibo.adb, libgnat/a-stwibo.ads: Likewise.
! 	* libgnat/a-stwifi.adb, libgnat/a-stwiha.adb: Likewise.
! 	* libgnat/a-stwima.adb, libgnat/a-stwima.ads: Likewise.
! 	* libgnat/a-stwise.adb, libgnat/a-stwise.ads: Likewise.
! 	* libgnat/a-stwisu.adb, libgnat/a-stwisu.ads: Likewise.
! 	* libgnat/a-stwiun.adb, libgnat/a-stwiun.ads: Likewise.
! 	* libgnat/a-stwiun__shared.adb, libgnat/a-stwiun__shared.ads: Likewise.
! 	* libgnat/a-stzbou.adb, libgnat/a-stzbou.ads: Likewise.
! 	* libgnat/a-stzfix.adb, libgnat/a-stzhas.adb: Likewise.
! 	* libgnat/a-stzmap.adb, libgnat/a-stzmap.ads: Likewise.
! 	* libgnat/a-stzsea.adb, libgnat/a-stzsea.ads: Likewise.
! 	* libgnat/a-stzsup.adb, libgnat/a-stzsup.ads: Likewise.
! 	* libgnat/a-stzunb.adb, libgnat/a-stzunb.ads: Likewise.
! 	* libgnat/a-stzunb__shared.adb, libgnat/a-stzunb__shared.ads: Likewise.
! 	* libgnat/a-suecin.adb, libgnat/a-suecin.ads: Likewise.
! 	* libgnat/a-suenco.adb, libgnat/a-suenst.adb: Likewise.
! 	* libgnat/a-suewst.adb, libgnat/a-suezst.adb: Likewise.
! 	* libgnat/a-suhcin.adb, libgnat/a-suhcin.ads: Likewise.
! 	* libgnat/a-sulcin.adb, libgnat/a-sulcin.ads: Likewise.
! 	* libgnat/a-suteio.adb, libgnat/a-suteio.ads: Likewise.
! 	* libgnat/a-suteio__shared.adb, libgnat/a-swbwha.adb: Likewise.
! 	* libgnat/a-swmwco.ads, libgnat/a-swunau.adb: Likewise.
! 	* libgnat/a-swunau.ads, libgnat/a-swunau__shared.adb: Likewise.
! 	* libgnat/a-swuwha.adb, libgnat/a-swuwti.adb: Likewise.
! 	* libgnat/a-swuwti.ads, libgnat/a-swuwti__shared.adb: Likewise.
! 	* libgnat/a-szbzha.adb, libgnat/a-szmzco.ads: Likewise.
! 	* libgnat/a-szunau.adb, libgnat/a-szunau.ads: Likewise.
! 	* libgnat/a-szunau__shared.adb, libgnat/a-szuzha.adb: Likewise.
! 	* libgnat/a-szuzti.adb, libgnat/a-szuzti.ads: Likewise.
! 	* libgnat/a-szuzti__shared.adb, libgnat/a-tags.adb: Likewise.
! 	* libgnat/a-tags.ads, libgnat/a-teioed.adb, libgnat/a-teioed.ads: Likewise.
! 	* libgnat/a-textio.adb, libgnat/a-textio.ads: Likewise.
! 	* libgnat/a-tiboio.adb, libgnat/a-ticoau.adb: Likewise.
! 	* libgnat/a-ticoau.ads, libgnat/a-ticoio.adb: Likewise.
! 	* libgnat/a-ticoio.ads, libgnat/a-tideau.adb: Likewise.
! 	* libgnat/a-tideau.ads, libgnat/a-tideio.adb: Likewise.
! 	* libgnat/a-tideio.ads, libgnat/a-tideio__128.adb: Likewise.
! 	* libgnat/a-tienau.adb, libgnat/a-tienau.ads: Likewise.
! 	* libgnat/a-tienio.adb, libgnat/a-tifiau.adb: Likewise.
! 	* libgnat/a-tifiau.ads, libgnat/a-tifiio.adb: Likewise.
! 	* libgnat/a-tifiio__128.adb, libgnat/a-tiflau.adb: Likewise.
! 	* libgnat/a-tiflau.ads, libgnat/a-tiflio.adb: Likewise.
! 	* libgnat/a-tiflio.ads, libgnat/a-tigeau.adb: Likewise.
! 	* libgnat/a-tigeau.ads, libgnat/a-tigeli.adb: Likewise.
! 	* libgnat/a-tiinau.adb, libgnat/a-tiinau.ads: Likewise.
! 	* libgnat/a-tiinio.adb, libgnat/a-tiinio.ads: Likewise.
! 	* libgnat/a-tiinio__128.adb, libgnat/a-timoio.adb: Likewise.
! 	* libgnat/a-timoio.ads, libgnat/a-timoio__128.adb: Likewise.
! 	* libgnat/a-tiocst.adb, libgnat/a-tiocst.ads: Likewise.
! 	* libgnat/a-tirsfi.adb, libgnat/a-tirsfi.ads: Likewise.
! 	* libgnat/a-titest.adb, libgnat/a-undesu.adb: Likewise.
! 	* libgnat/a-wichha.adb, libgnat/a-wichun.adb: Likewise.
! 	* libgnat/a-wichun.ads, libgnat/a-witeio.adb: Likewise.
! 	* libgnat/a-witeio.ads, libgnat/a-wrstfi.adb: Likewise.
! 	* libgnat/a-wrstfi.ads, libgnat/a-wtcoau.adb: Likewise.
! 	* libgnat/a-wtcoau.ads, libgnat/a-wtcoio.adb: Likewise.
! 	* libgnat/a-wtcstr.adb, libgnat/a-wtcstr.ads: Likewise.
! 	* libgnat/a-wtdeau.adb, libgnat/a-wtdeau.ads: Likewise.
! 	* libgnat/a-wtdeio.adb, libgnat/a-wtdeio__128.adb: Likewise.
! 	* libgnat/a-wtedit.adb, libgnat/a-wtedit.ads: Likewise.
! 	* libgnat/a-wtenau.adb, libgnat/a-wtenau.ads: Likewise.
! 	* libgnat/a-wtenio.adb, libgnat/a-wtfiau.adb: Likewise.
! 	* libgnat/a-wtfiau.ads, libgnat/a-wtfiio.adb: Likewise.
! 	* libgnat/a-wtfiio__128.adb, libgnat/a-wtflau.adb: Likewise.
! 	* libgnat/a-wtflau.ads, libgnat/a-wtflio.adb: Likewise.
! 	* libgnat/a-wtgeau.adb, libgnat/a-wtgeau.ads: Likewise.
! 	* libgnat/a-wtinau.adb, libgnat/a-wtinau.ads: Likewise.
! 	* libgnat/a-wtinio.adb, libgnat/a-wtinio__128.adb: Likewise.
! 	* libgnat/a-wtmoio.adb, libgnat/a-wtmoio.ads: Likewise.
! 	* libgnat/a-wtmoio__128.adb, libgnat/a-wttest.adb: Likewise.
! 	* libgnat/a-wwboio.adb, libgnat/a-zchhan.adb: Likewise.
! 	* libgnat/a-zchuni.adb, libgnat/a-zchuni.ads: Likewise.
! 	* libgnat/a-zrstfi.adb, libgnat/a-zrstfi.ads: Likewise.
! 	* libgnat/a-ztcoau.adb, libgnat/a-ztcoio.adb: Likewise.
! 	* libgnat/a-ztcstr.adb, libgnat/a-ztcstr.ads: Likewise.
! 	* libgnat/a-ztdeau.adb, libgnat/a-ztdeau.ads: Likewise.
! 	* libgnat/a-ztdeio.adb, libgnat/a-ztdeio__128.adb: Likewise.
! 	* libgnat/a-ztedit.adb, libgnat/a-ztedit.ads: Likewise.
! 	* libgnat/a-ztenau.adb, libgnat/a-ztenau.ads: Likewise.
! 	* libgnat/a-ztenio.adb, libgnat/a-ztexio.adb: Likewise.
! 	* libgnat/a-ztexio.ads, libgnat/a-ztfiau.adb: Likewise.
! 	* libgnat/a-ztfiau.ads, libgnat/a-ztfiio.adb: Likewise.
! 	* libgnat/a-ztfiio__128.adb, libgnat/a-ztflau.adb: Likewise.
! 	* libgnat/a-ztflau.ads, libgnat/a-ztflio.adb: Likewise.
! 	* libgnat/a-ztgeau.adb, libgnat/a-ztgeau.ads: Likewise.
! 	* libgnat/a-ztinau.adb, libgnat/a-ztinau.ads: Likewise.
! 	* libgnat/a-ztinio.adb, libgnat/a-ztinio__128.adb: Likewise.
! 	* libgnat/a-ztmoio.adb, libgnat/a-ztmoio__128.adb: Likewise.
! 	* libgnat/a-zttest.adb, libgnat/a-zzboio.adb: Likewise.
! 	* libgnat/g-allein.ads, libgnat/g-alleve.adb: Likewise.
! 	* libgnat/g-alleve.ads, libgnat/g-alleve__hard.adb: Likewise.
! 	* libgnat/g-alleve__hard.ads, libgnat/g-altcon.adb: Likewise.
! 	* libgnat/g-altcon.ads, libgnat/g-altive.ads: Likewise.
! 	* libgnat/g-alveop.adb, libgnat/g-alveop.ads: Likewise.
! 	* libgnat/g-alvety.ads, libgnat/g-alvevi.ads: Likewise.
! 	* libgnat/g-arrspl.adb, libgnat/g-arrspl.ads, libgnat/g-awk.adb: Likewise.
! 	* libgnat/g-awk.ads, libgnat/g-binenv.adb, libgnat/g-binenv.ads: Likewise.
! 	* libgnat/g-binsea.adb, libgnat/g-binsea.ads: Likewise.
! 	* libgnat/g-brapre.ads, libgnat/g-bubsor.adb: Likewise.
! 	* libgnat/g-bubsor.ads, libgnat/g-busora.adb: Likewise.
! 	* libgnat/g-busora.ads, libgnat/g-busorg.adb: Likewise.
! 	* libgnat/g-busorg.ads, libgnat/g-byorma.adb: Likewise.
! 	* libgnat/g-byorma.ads, libgnat/g-bytswa.adb: Likewise.
! 	* libgnat/g-bytswa.ads, libgnat/g-calend.adb: Likewise.
! 	* libgnat/g-calend.ads, libgnat/g-casuti.adb: Likewise.
! 	* libgnat/g-casuti.ads, libgnat/g-catiio.adb: Likewise.
! 	* libgnat/g-catiio.ads, libgnat/g-cgi.adb, libgnat/g-cgi.ads: Likewise.
! 	* libgnat/g-cgicoo.adb, libgnat/g-cgicoo.ads: Likewise.
! 	* libgnat/g-cgideb.adb, libgnat/g-cgideb.ads: Likewise.
! 	* libgnat/g-comlin.adb, libgnat/g-comlin.ads: Likewise.
! 	* libgnat/g-comver.adb, libgnat/g-comver.ads: Likewise.
! 	* libgnat/g-cppexc.adb, libgnat/g-cppexc.ads, libgnat/g-crc32.adb: Likewise.
! 	* libgnat/g-crc32.ads, libgnat/g-ctrl_c.adb, libgnat/g-ctrl_c.ads: Likewise.
! 	* libgnat/g-curexc.ads, libgnat/g-debpoo.adb: Likewise.
! 	* libgnat/g-debpoo.ads, libgnat/g-debuti.adb: Likewise.
! 	* libgnat/g-debuti.ads, libgnat/g-decstr.adb: Likewise.
! 	* libgnat/g-decstr.ads, libgnat/g-deutst.ads: Likewise.
! 	* libgnat/g-diopit.adb, libgnat/g-diopit.ads: Likewise.
! 	* libgnat/g-dirope.adb, libgnat/g-dirope.ads: Likewise.
! 	* libgnat/g-dynhta.adb, libgnat/g-dynhta.ads: Likewise.
! 	* libgnat/g-dyntab.adb, libgnat/g-dyntab.ads: Likewise.
! 	* libgnat/g-eacodu.adb, libgnat/g-encstr.adb: Likewise.
! 	* libgnat/g-encstr.ads, libgnat/g-enutst.ads: Likewise.
! 	* libgnat/g-excact.adb, libgnat/g-excact.ads: Likewise.
! 	* libgnat/g-except.ads, libgnat/g-exctra.adb: Likewise.
! 	* libgnat/g-exctra.ads, libgnat/g-expect.adb: Likewise.
! 	* libgnat/g-expect.ads, libgnat/g-exptty.adb: Likewise.
! 	* libgnat/g-exptty.ads, libgnat/g-flocon.ads: Likewise.
! 	* libgnat/g-forstr.adb, libgnat/g-forstr.ads: Likewise.
! 	* libgnat/g-gfmafu.ads, libgnat/g-graphs.adb: Likewise.
! 	* libgnat/g-graphs.ads, libgnat/g-heasor.adb: Likewise.
! 	* libgnat/g-heasor.ads, libgnat/g-hesora.adb: Likewise.
! 	* libgnat/g-hesora.ads, libgnat/g-hesorg.adb: Likewise.
! 	* libgnat/g-hesorg.ads, libgnat/g-htable.adb: Likewise.
! 	* libgnat/g-htable.ads, libgnat/g-io.adb, libgnat/g-io.ads: Likewise.
! 	* libgnat/g-io_aux.adb, libgnat/g-io_aux.ads, libgnat/g-lists.adb: Likewise.
! 	* libgnat/g-lists.ads, libgnat/g-locfil.adb, libgnat/g-locfil.ads: Likewise.
! 	* libgnat/g-mbdira.adb, libgnat/g-mbdira.ads: Likewise.
! 	* libgnat/g-mbflra.adb, libgnat/g-mbflra.ads, libgnat/g-md5.adb: Likewise.
! 	* libgnat/g-md5.ads, libgnat/g-memdum.adb, libgnat/g-memdum.ads: Likewise.
! 	* libgnat/g-moreex.adb, libgnat/g-moreex.ads: Likewise.
! 	* libgnat/g-os_lib.adb, libgnat/g-os_lib.ads: Likewise.
! 	* libgnat/g-pehage.adb, libgnat/g-pehage.ads: Likewise.
! 	* libgnat/g-rannum.adb, libgnat/g-rannum.ads: Likewise.
! 	* libgnat/g-regexp.adb, libgnat/g-regexp.ads: Likewise.
! 	* libgnat/g-regist.adb, libgnat/g-regist.ads: Likewise.
! 	* libgnat/g-regpat.adb, libgnat/g-regpat.ads: Likewise.
! 	* libgnat/g-rewdat.adb, libgnat/g-rewdat.ads: Likewise.
! 	* libgnat/g-sechas.adb, libgnat/g-sechas.ads: Likewise.
! 	* libgnat/g-sehamd.adb, libgnat/g-sehamd.ads: Likewise.
! 	* libgnat/g-sehash.adb, libgnat/g-sehash.ads: Likewise.
! 	* libgnat/g-sercom.adb, libgnat/g-sercom.ads: Likewise.
! 	* libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb: Likewise.
! 	* libgnat/g-sestin.ads, libgnat/g-sets.adb, libgnat/g-sets.ads: Likewise.
! 	* libgnat/g-sha1.adb, libgnat/g-sha1.ads, libgnat/g-sha224.ads: Likewise.
! 	* libgnat/g-sha256.ads, libgnat/g-sha384.ads: Likewise.
! 	* libgnat/g-sha512.ads, libgnat/g-shsh32.adb: Likewise.
! 	* libgnat/g-shsh32.ads, libgnat/g-shsh64.adb: Likewise.
! 	* libgnat/g-shsh64.ads, libgnat/g-shshco.adb: Likewise.
! 	* libgnat/g-shshco.ads, libgnat/g-soccon.ads: Likewise.
! 	* libgnat/g-socket.adb, libgnat/g-socket.ads: Likewise.
! 	* libgnat/g-socket__dummy.adb, libgnat/g-socket__dummy.ads: Likewise.
! 	* libgnat/g-socpol.adb, libgnat/g-socpol.ads: Likewise.
! 	* libgnat/g-socpol__dummy.adb, libgnat/g-socpol__dummy.ads: Likewise.
! 	* libgnat/g-socthi.adb, libgnat/g-socthi.ads: Likewise.
! 	* libgnat/g-socthi__dummy.adb, libgnat/g-socthi__dummy.ads: Likewise.
! 	* libgnat/g-socthi__mingw.adb, libgnat/g-socthi__mingw.ads: Likewise.
! 	* libgnat/g-socthi__vxworks.adb, libgnat/g-socthi__vxworks.ads: Likewise.
! 	* libgnat/g-soliop.ads, libgnat/g-soliop__lynxos.ads: Likewise.
! 	* libgnat/g-soliop__mingw.ads, libgnat/g-soliop__qnx.ads: Likewise.
! 	* libgnat/g-soliop__solaris.ads, libgnat/g-sopowa.adb: Likewise.
! 	* libgnat/g-sopowa__mingw.adb, libgnat/g-sopowa__posix.adb: Likewise.
! 	* libgnat/g-sothco.adb, libgnat/g-sothco.ads: Likewise.
! 	* libgnat/g-sothco__dummy.adb, libgnat/g-sothco__dummy.ads: Likewise.
! 	* libgnat/g-souinf.ads, libgnat/g-spchge.adb: Likewise.
! 	* libgnat/g-spchge.ads, libgnat/g-speche.adb: Likewise.
! 	* libgnat/g-speche.ads, libgnat/g-spipat.adb: Likewise.
! 	* libgnat/g-spipat.ads, libgnat/g-spitbo.adb: Likewise.
! 	* libgnat/g-spitbo.ads, libgnat/g-spogwa.adb: Likewise.
! 	* libgnat/g-spogwa.ads, libgnat/g-sptabo.ads: Likewise.
! 	* libgnat/g-sptain.ads, libgnat/g-sptavs.ads, libgnat/g-sse.ads: Likewise.
! 	* libgnat/g-ssvety.ads, libgnat/g-sthcso.adb: Likewise.
! 	* libgnat/g-stheme.adb, libgnat/g-strhas.ads: Likewise.
! 	* libgnat/g-string.adb, libgnat/g-string.ads: Likewise.
! 	* libgnat/g-strspl.ads, libgnat/g-stseme.adb: Likewise.
! 	* libgnat/g-stsifd__sockets.adb, libgnat/g-table.adb: Likewise.
! 	* libgnat/g-table.ads, libgnat/g-tasloc.adb, libgnat/g-tasloc.ads: Likewise.
! 	* libgnat/g-timsta.adb, libgnat/g-timsta.ads: Likewise.
! 	* libgnat/g-traceb.adb, libgnat/g-traceb.ads: Likewise.
! 	* libgnat/g-trasym.adb, libgnat/g-trasym.ads, libgnat/g-tty.adb: Likewise.
! 	* libgnat/g-tty.ads, libgnat/g-u3spch.adb, libgnat/g-u3spch.ads: Likewise.
! 	* libgnat/g-utf_32.adb, libgnat/g-utf_32.ads: Likewise.
! 	* libgnat/g-wispch.adb, libgnat/g-wispch.ads: Likewise.
! 	* libgnat/g-wistsp.ads, libgnat/g-zspche.adb: Likewise.
! 	* libgnat/g-zspche.ads, libgnat/g-zstspl.ads, libgnat/gnat.ads: Likewise.
! 	* libgnat/i-c.adb, libgnat/i-cexten.ads: Likewise.
! 	* libgnat/i-cexten__128.ads, libgnat/i-cobol.adb: Likewise.
! 	* libgnat/i-cobol.ads, libgnat/i-cpoint.adb, libgnat/i-cpoint.ads: Likewise.
! 	* libgnat/i-cstrea.adb, libgnat/i-cstrea.ads: Likewise.
! 	* libgnat/i-cstrin.adb, libgnat/i-cstrin.ads: Likewise.
! 	* libgnat/i-fortra.adb, libgnat/i-pacdec.adb: Likewise.
! 	* libgnat/i-pacdec.ads, libgnat/i-vxwoio.adb: Likewise.
! 	* libgnat/i-vxwoio.ads, libgnat/i-vxwork.ads: Likewise.
! 	* libgnat/i-vxwork__x86.ads, libgnat/interfac.ads: Likewise.
! 	* libgnat/interfac__2020.ads, libgnat/memtrack.adb: Likewise.
! 	* libgnat/s-addima.adb, libgnat/s-addima.ads: Likewise.
! 	* libgnat/s-addope.adb, libgnat/s-addope.ads: Likewise.
! 	* libgnat/s-aoinar.adb, libgnat/s-aoinar.ads: Likewise.
! 	* libgnat/s-aomoar.adb, libgnat/s-aomoar.ads: Likewise.
! 	* libgnat/s-aotase.adb, libgnat/s-aotase.ads: Likewise.
! 	* libgnat/s-aridou.adb, libgnat/s-aridou.ads: Likewise.
! 	* libgnat/s-arit128.adb, libgnat/s-arit128.ads: Likewise.
! 	* libgnat/s-arit32.adb, libgnat/s-arit32.ads: Likewise.
! 	* libgnat/s-arit64.adb, libgnat/s-arit64.ads: Likewise.
! 	* libgnat/s-assert.adb, libgnat/s-assert.ads: Likewise.
! 	* libgnat/s-atacco.adb, libgnat/s-atacco.ads: Likewise.
! 	* libgnat/s-atocou.adb, libgnat/s-atocou.ads: Likewise.
! 	* libgnat/s-atocou__builtin.adb, libgnat/s-atoope.ads: Likewise.
! 	* libgnat/s-atopex.adb, libgnat/s-atopex.ads: Likewise.
! 	* libgnat/s-atopri.adb, libgnat/s-atopri.ads: Likewise.
! 	* libgnat/s-auxdec.adb, libgnat/s-auxdec.ads: Likewise.
! 	* libgnat/s-bignum.adb, libgnat/s-bignum.ads: Likewise.
! 	* libgnat/s-bitfie.ads, libgnat/s-bitops.adb: Likewise.
! 	* libgnat/s-bitops.ads, libgnat/s-bituti.adb: Likewise.
! 	* libgnat/s-bituti.ads, libgnat/s-boarop.ads: Likewise.
! 	* libgnat/s-boustr.adb, libgnat/s-boustr.ads: Likewise.
! 	* libgnat/s-bytswa.ads, libgnat/s-carsi8.adb: Likewise.
! 	* libgnat/s-carsi8.ads, libgnat/s-carun8.adb: Likewise.
! 	* libgnat/s-carun8.ads, libgnat/s-casi128.adb: Likewise.
! 	* libgnat/s-casi128.ads, libgnat/s-casi16.adb: Likewise.
! 	* libgnat/s-casi16.ads, libgnat/s-casi32.adb: Likewise.
! 	* libgnat/s-casi32.ads, libgnat/s-casi64.adb: Likewise.
! 	* libgnat/s-casi64.ads, libgnat/s-casuti.adb: Likewise.
! 	* libgnat/s-casuti.ads, libgnat/s-caun128.adb: Likewise.
! 	* libgnat/s-caun128.ads, libgnat/s-caun16.adb: Likewise.
! 	* libgnat/s-caun16.ads, libgnat/s-caun32.adb: Likewise.
! 	* libgnat/s-caun32.ads, libgnat/s-caun64.adb: Likewise.
! 	* libgnat/s-caun64.ads, libgnat/s-chepoo.ads: Likewise.
! 	* libgnat/s-commun.adb, libgnat/s-commun.ads: Likewise.
! 	* libgnat/s-conca2.adb, libgnat/s-conca2.ads: Likewise.
! 	* libgnat/s-conca3.adb, libgnat/s-conca3.ads: Likewise.
! 	* libgnat/s-conca4.adb, libgnat/s-conca4.ads: Likewise.
! 	* libgnat/s-conca5.adb, libgnat/s-conca5.ads: Likewise.
! 	* libgnat/s-conca6.adb, libgnat/s-conca6.ads: Likewise.
! 	* libgnat/s-conca7.adb, libgnat/s-conca7.ads: Likewise.
! 	* libgnat/s-conca8.adb, libgnat/s-conca8.ads: Likewise.
! 	* libgnat/s-conca9.adb, libgnat/s-conca9.ads, libgnat/s-crc32.adb: Likewise.
! 	* libgnat/s-crc32.ads, libgnat/s-crtl.ads, libgnat/s-dfmkio.ads: Likewise.
! 	* libgnat/s-dfmopr.ads, libgnat/s-dgmgop.ads: Likewise.
! 	* libgnat/s-diflio.adb, libgnat/s-diflio.ads: Likewise.
! 	* libgnat/s-diflmk.ads, libgnat/s-digemk.ads: Likewise.
! 	* libgnat/s-diinio.adb, libgnat/s-diinio.ads: Likewise.
! 	* libgnat/s-dilomk.ads, libgnat/s-dim.ads, libgnat/s-dimkio.ads: Likewise.
! 	* libgnat/s-dimmks.ads, libgnat/s-direio.adb: Likewise.
! 	* libgnat/s-direio.ads, libgnat/s-dlmkio.ads: Likewise.
! 	* libgnat/s-dlmopr.ads, libgnat/s-dmotpr.ads: Likewise.
! 	* libgnat/s-dorepr.adb, libgnat/s-dorepr__fma.adb: Likewise.
! 	* libgnat/s-dourea.adb, libgnat/s-dourea.ads: Likewise.
! 	* libgnat/s-dsaser.ads, libgnat/s-dwalin.adb: Likewise.
! 	* libgnat/s-dwalin.ads, libgnat/s-elaall.adb: Likewise.
! 	* libgnat/s-elaall.ads, libgnat/s-excdeb.adb: Likewise.
! 	* libgnat/s-excdeb.ads, libgnat/s-except.adb: Likewise.
! 	* libgnat/s-except.ads, libgnat/s-excmac__arm.adb: Likewise.
! 	* libgnat/s-excmac__arm.ads, libgnat/s-excmac__gcc.adb: Likewise.
! 	* libgnat/s-excmac__gcc.ads, libgnat/s-exctab.adb: Likewise.
! 	* libgnat/s-exctab.ads, libgnat/s-exctra.adb: Likewise.
! 	* libgnat/s-exctra.ads, libgnat/s-exnflt.ads: Likewise.
! 	* libgnat/s-exnint.adb, libgnat/s-exnint.ads: Likewise.
! 	* libgnat/s-exnlfl.ads, libgnat/s-exnllf.adb: Likewise.
! 	* libgnat/s-exnllf.ads, libgnat/s-exnlli.adb: Likewise.
! 	* libgnat/s-exnlli.ads, libgnat/s-exnllli.ads: Likewise.
! 	* libgnat/s-expint.adb, libgnat/s-expint.ads: Likewise.
! 	* libgnat/s-explli.adb, libgnat/s-explli.ads: Likewise.
! 	* libgnat/s-expllli.ads, libgnat/s-explllu.ads: Likewise.
! 	* libgnat/s-expllu.adb, libgnat/s-expllu.ads: Likewise.
! 	* libgnat/s-expmod.adb, libgnat/s-expmod.ads: Likewise.
! 	* libgnat/s-exponn.adb, libgnat/s-exponn.ads: Likewise.
! 	* libgnat/s-exponr.adb, libgnat/s-exponr.ads: Likewise.
! 	* libgnat/s-expont.adb, libgnat/s-expont.ads: Likewise.
! 	* libgnat/s-exponu.adb, libgnat/s-exponu.ads: Likewise.
! 	* libgnat/s-expuns.adb, libgnat/s-expuns.ads: Likewise.
! 	* libgnat/s-fatflt.ads, libgnat/s-fatgen.adb: Likewise.
! 	* libgnat/s-fatgen.ads, libgnat/s-fatlfl.ads: Likewise.
! 	* libgnat/s-fatllf.ads, libgnat/s-ficobl.ads: Likewise.
! 	* libgnat/s-filatt.ads, libgnat/s-fileio.adb: Likewise.
! 	* libgnat/s-fileio.ads, libgnat/s-finmas.adb: Likewise.
! 	* libgnat/s-finmas.ads, libgnat/s-finroo.adb: Likewise.
! 	* libgnat/s-finroo.ads, libgnat/s-flocon.adb: Likewise.
! 	* libgnat/s-flocon.ads, libgnat/s-flocon__none.adb: Likewise.
! 	* libgnat/s-fode128.ads, libgnat/s-fode32.ads: Likewise.
! 	* libgnat/s-fode64.ads, libgnat/s-fofi128.ads: Likewise.
! 	* libgnat/s-fofi32.ads, libgnat/s-fofi64.ads: Likewise.
! 	* libgnat/s-fore_d.adb, libgnat/s-fore_d.ads: Likewise.
! 	* libgnat/s-fore_f.adb, libgnat/s-fore_f.ads: Likewise.
! 	* libgnat/s-forrea.adb, libgnat/s-forrea.ads: Likewise.
! 	* libgnat/s-gearop.adb, libgnat/s-gearop.ads: Likewise.
! 	* libgnat/s-genbig.adb, libgnat/s-genbig.ads: Likewise.
! 	* libgnat/s-geveop.adb, libgnat/s-geveop.ads: Likewise.
! 	* libgnat/s-gloloc.adb, libgnat/s-gloloc.ads: Likewise.
! 	* libgnat/s-gloloc__mingw.adb, libgnat/s-htable.adb: Likewise.
! 	* libgnat/s-htable.ads, libgnat/s-imageb.adb: Likewise.
! 	* libgnat/s-imageb.ads, libgnat/s-imaged.adb: Likewise.
! 	* libgnat/s-imaged.ads, libgnat/s-imagef.adb: Likewise.
! 	* libgnat/s-imagef.ads, libgnat/s-imagei.adb: Likewise.
! 	* libgnat/s-imagei.ads, libgnat/s-imagen.adb: Likewise.
! 	* libgnat/s-imagen.ads, libgnat/s-imager.adb: Likewise.
! 	* libgnat/s-imager.ads, libgnat/s-imageu.adb: Likewise.
! 	* libgnat/s-imageu.ads, libgnat/s-imagew.adb: Likewise.
! 	* libgnat/s-imagew.ads, libgnat/s-imde128.ads: Likewise.
! 	* libgnat/s-imde32.ads, libgnat/s-imde64.ads: Likewise.
! 	* libgnat/s-imen16.ads, libgnat/s-imen32.ads: Likewise.
! 	* libgnat/s-imenu8.ads, libgnat/s-imfi128.ads: Likewise.
! 	* libgnat/s-imfi32.ads, libgnat/s-imfi64.ads: Likewise.
! 	* libgnat/s-imgbiu.adb, libgnat/s-imgbiu.ads: Likewise.
! 	* libgnat/s-imgboo.adb, libgnat/s-imgboo.ads: Likewise.
! 	* libgnat/s-imgcha.adb, libgnat/s-imgcha.ads: Likewise.
! 	* libgnat/s-imgflt.ads, libgnat/s-imgint.adb: Likewise.
! 	* libgnat/s-imgint.ads, libgnat/s-imglfl.ads: Likewise.
! 	* libgnat/s-imgllb.adb, libgnat/s-imgllb.ads: Likewise.
! 	* libgnat/s-imgllf.ads, libgnat/s-imglli.adb: Likewise.
! 	* libgnat/s-imglli.ads, libgnat/s-imglllb.ads: Likewise.
! 	* libgnat/s-imgllli.ads, libgnat/s-imglllu.ads: Likewise.
! 	* libgnat/s-imglllw.ads, libgnat/s-imgllu.adb: Likewise.
! 	* libgnat/s-imgllu.ads, libgnat/s-imgllw.adb: Likewise.
! 	* libgnat/s-imgllw.ads, libgnat/s-imgrea.adb: Likewise.
! 	* libgnat/s-imgrea.ads, libgnat/s-imguns.adb: Likewise.
! 	* libgnat/s-imguns.ads, libgnat/s-imguti.adb: Likewise.
! 	* libgnat/s-imguti.ads, libgnat/s-imgwch.adb: Likewise.
! 	* libgnat/s-imgwch.ads, libgnat/s-imgwiu.adb: Likewise.
! 	* libgnat/s-imgwiu.ads, libgnat/s-io.adb, libgnat/s-io.ads: Likewise.
! 	* libgnat/s-llflex.ads, libgnat/s-maccod.ads: Likewise.
! 	* libgnat/s-mantis.adb, libgnat/s-mantis.ads: Likewise.
! 	* libgnat/s-mastop.adb, libgnat/s-mastop.ads: Likewise.
! 	* libgnat/s-memcop.ads, libgnat/s-memory.adb: Likewise.
! 	* libgnat/s-memory.ads, libgnat/s-mmap.adb, libgnat/s-mmap.ads: Likewise.
! 	* libgnat/s-mmauni__long.ads, libgnat/s-mmosin__mingw.adb: Likewise.
! 	* libgnat/s-mmosin__mingw.ads, libgnat/s-mmosin__unix.adb: Likewise.
! 	* libgnat/s-mmosin__unix.ads, libgnat/s-multip.adb: Likewise.
! 	* libgnat/s-objrea.adb, libgnat/s-objrea.ads: Likewise.
! 	* libgnat/s-optide.adb, libgnat/s-os_lib.adb: Likewise.
! 	* libgnat/s-os_lib.ads, libgnat/s-osprim.ads: Likewise.
! 	* libgnat/s-osprim__darwin.adb, libgnat/s-osprim__lynxos.ads: Likewise.
! 	* libgnat/s-osprim__mingw.adb, libgnat/s-osprim__posix.adb: Likewise.
! 	* libgnat/s-osprim__posix2008.adb, libgnat/s-osprim__rtems.adb: Likewise.
! 	* libgnat/s-osprim__solaris.adb, libgnat/s-osprim__unix.adb: Likewise.
! 	* libgnat/s-osprim__x32.adb, libgnat/s-pack03.adb: Likewise.
! 	* libgnat/s-pack03.ads, libgnat/s-pack05.adb: Likewise.
! 	* libgnat/s-pack05.ads, libgnat/s-pack06.adb: Likewise.
! 	* libgnat/s-pack06.ads, libgnat/s-pack07.adb: Likewise.
! 	* libgnat/s-pack07.ads, libgnat/s-pack09.adb: Likewise.
! 	* libgnat/s-pack09.ads, libgnat/s-pack10.adb: Likewise.
! 	* libgnat/s-pack10.ads, libgnat/s-pack100.adb: Likewise.
! 	* libgnat/s-pack100.ads, libgnat/s-pack101.adb: Likewise.
! 	* libgnat/s-pack101.ads, libgnat/s-pack102.adb: Likewise.
! 	* libgnat/s-pack102.ads, libgnat/s-pack103.adb: Likewise.
! 	* libgnat/s-pack103.ads, libgnat/s-pack104.adb: Likewise.
! 	* libgnat/s-pack104.ads, libgnat/s-pack105.adb: Likewise.
! 	* libgnat/s-pack105.ads, libgnat/s-pack106.adb: Likewise.
! 	* libgnat/s-pack106.ads, libgnat/s-pack107.adb: Likewise.
! 	* libgnat/s-pack107.ads, libgnat/s-pack108.adb: Likewise.
! 	* libgnat/s-pack108.ads, libgnat/s-pack109.adb: Likewise.
! 	* libgnat/s-pack109.ads, libgnat/s-pack11.adb: Likewise.
! 	* libgnat/s-pack11.ads, libgnat/s-pack110.adb: Likewise.
! 	* libgnat/s-pack110.ads, libgnat/s-pack111.adb: Likewise.
! 	* libgnat/s-pack111.ads, libgnat/s-pack112.adb: Likewise.
! 	* libgnat/s-pack112.ads, libgnat/s-pack113.adb: Likewise.
! 	* libgnat/s-pack113.ads, libgnat/s-pack114.adb: Likewise.
! 	* libgnat/s-pack114.ads, libgnat/s-pack115.adb: Likewise.
! 	* libgnat/s-pack115.ads, libgnat/s-pack116.adb: Likewise.
! 	* libgnat/s-pack116.ads, libgnat/s-pack117.adb: Likewise.
! 	* libgnat/s-pack117.ads, libgnat/s-pack118.adb: Likewise.
! 	* libgnat/s-pack118.ads, libgnat/s-pack119.adb: Likewise.
! 	* libgnat/s-pack119.ads, libgnat/s-pack12.adb: Likewise.
! 	* libgnat/s-pack12.ads, libgnat/s-pack120.adb: Likewise.
! 	* libgnat/s-pack120.ads, libgnat/s-pack121.adb: Likewise.
! 	* libgnat/s-pack121.ads, libgnat/s-pack122.adb: Likewise.
! 	* libgnat/s-pack122.ads, libgnat/s-pack123.adb: Likewise.
! 	* libgnat/s-pack123.ads, libgnat/s-pack124.adb: Likewise.
! 	* libgnat/s-pack124.ads, libgnat/s-pack125.adb: Likewise.
! 	* libgnat/s-pack125.ads, libgnat/s-pack126.adb: Likewise.
! 	* libgnat/s-pack126.ads, libgnat/s-pack127.adb: Likewise.
! 	* libgnat/s-pack127.ads, libgnat/s-pack13.adb: Likewise.
! 	* libgnat/s-pack13.ads, libgnat/s-pack14.adb: Likewise.
! 	* libgnat/s-pack14.ads, libgnat/s-pack15.adb: Likewise.
! 	* libgnat/s-pack15.ads, libgnat/s-pack17.adb: Likewise.
! 	* libgnat/s-pack17.ads, libgnat/s-pack18.adb: Likewise.
! 	* libgnat/s-pack18.ads, libgnat/s-pack19.adb: Likewise.
! 	* libgnat/s-pack19.ads, libgnat/s-pack20.adb: Likewise.
! 	* libgnat/s-pack20.ads, libgnat/s-pack21.adb: Likewise.
! 	* libgnat/s-pack21.ads, libgnat/s-pack22.adb: Likewise.
! 	* libgnat/s-pack22.ads, libgnat/s-pack23.adb: Likewise.
! 	* libgnat/s-pack23.ads, libgnat/s-pack24.adb: Likewise.
! 	* libgnat/s-pack24.ads, libgnat/s-pack25.adb: Likewise.
! 	* libgnat/s-pack25.ads, libgnat/s-pack26.adb: Likewise.
! 	* libgnat/s-pack26.ads, libgnat/s-pack27.adb: Likewise.
! 	* libgnat/s-pack27.ads, libgnat/s-pack28.adb: Likewise.
! 	* libgnat/s-pack28.ads, libgnat/s-pack29.adb: Likewise.
! 	* libgnat/s-pack29.ads, libgnat/s-pack30.adb: Likewise.
! 	* libgnat/s-pack30.ads, libgnat/s-pack31.adb: Likewise.
! 	* libgnat/s-pack31.ads, libgnat/s-pack33.adb: Likewise.
! 	* libgnat/s-pack33.ads, libgnat/s-pack34.adb: Likewise.
! 	* libgnat/s-pack34.ads, libgnat/s-pack35.adb: Likewise.
! 	* libgnat/s-pack35.ads, libgnat/s-pack36.adb: Likewise.
! 	* libgnat/s-pack36.ads, libgnat/s-pack37.adb: Likewise.
! 	* libgnat/s-pack37.ads, libgnat/s-pack38.adb: Likewise.
! 	* libgnat/s-pack38.ads, libgnat/s-pack39.adb: Likewise.
! 	* libgnat/s-pack39.ads, libgnat/s-pack40.adb: Likewise.
! 	* libgnat/s-pack40.ads, libgnat/s-pack41.adb: Likewise.
! 	* libgnat/s-pack41.ads, libgnat/s-pack42.adb: Likewise.
! 	* libgnat/s-pack42.ads, libgnat/s-pack43.adb: Likewise.
! 	* libgnat/s-pack43.ads, libgnat/s-pack44.adb: Likewise.
! 	* libgnat/s-pack44.ads, libgnat/s-pack45.adb: Likewise.
! 	* libgnat/s-pack45.ads, libgnat/s-pack46.adb: Likewise.
! 	* libgnat/s-pack46.ads, libgnat/s-pack47.adb: Likewise.
! 	* libgnat/s-pack47.ads, libgnat/s-pack48.adb: Likewise.
! 	* libgnat/s-pack48.ads, libgnat/s-pack49.adb: Likewise.
! 	* libgnat/s-pack49.ads, libgnat/s-pack50.adb: Likewise.
! 	* libgnat/s-pack50.ads, libgnat/s-pack51.adb: Likewise.
! 	* libgnat/s-pack51.ads, libgnat/s-pack52.adb: Likewise.
! 	* libgnat/s-pack52.ads, libgnat/s-pack53.adb: Likewise.
! 	* libgnat/s-pack53.ads, libgnat/s-pack54.adb: Likewise.
! 	* libgnat/s-pack54.ads, libgnat/s-pack55.adb: Likewise.
! 	* libgnat/s-pack55.ads, libgnat/s-pack56.adb: Likewise.
! 	* libgnat/s-pack56.ads, libgnat/s-pack57.adb: Likewise.
! 	* libgnat/s-pack57.ads, libgnat/s-pack58.adb: Likewise.
! 	* libgnat/s-pack58.ads, libgnat/s-pack59.adb: Likewise.
! 	* libgnat/s-pack59.ads, libgnat/s-pack60.adb: Likewise.
! 	* libgnat/s-pack60.ads, libgnat/s-pack61.adb: Likewise.
! 	* libgnat/s-pack61.ads, libgnat/s-pack62.adb: Likewise.
! 	* libgnat/s-pack62.ads, libgnat/s-pack63.adb: Likewise.
! 	* libgnat/s-pack63.ads, libgnat/s-pack65.adb: Likewise.
! 	* libgnat/s-pack65.ads, libgnat/s-pack66.adb: Likewise.
! 	* libgnat/s-pack66.ads, libgnat/s-pack67.adb: Likewise.
! 	* libgnat/s-pack67.ads, libgnat/s-pack68.adb: Likewise.
! 	* libgnat/s-pack68.ads, libgnat/s-pack69.adb: Likewise.
! 	* libgnat/s-pack69.ads, libgnat/s-pack70.adb: Likewise.
! 	* libgnat/s-pack70.ads, libgnat/s-pack71.adb: Likewise.
! 	* libgnat/s-pack71.ads, libgnat/s-pack72.adb: Likewise.
! 	* libgnat/s-pack72.ads, libgnat/s-pack73.adb: Likewise.
! 	* libgnat/s-pack73.ads, libgnat/s-pack74.adb: Likewise.
! 	* libgnat/s-pack74.ads, libgnat/s-pack75.adb: Likewise.
! 	* libgnat/s-pack75.ads, libgnat/s-pack76.adb: Likewise.
! 	* libgnat/s-pack76.ads, libgnat/s-pack77.adb: Likewise.
! 	* libgnat/s-pack77.ads, libgnat/s-pack78.adb: Likewise.
! 	* libgnat/s-pack78.ads, libgnat/s-pack79.adb: Likewise.
! 	* libgnat/s-pack79.ads, libgnat/s-pack80.adb: Likewise.
! 	* libgnat/s-pack80.ads, libgnat/s-pack81.adb: Likewise.
! 	* libgnat/s-pack81.ads, libgnat/s-pack82.adb: Likewise.
! 	* libgnat/s-pack82.ads, libgnat/s-pack83.adb: Likewise.
! 	* libgnat/s-pack83.ads, libgnat/s-pack84.adb: Likewise.
! 	* libgnat/s-pack84.ads, libgnat/s-pack85.adb: Likewise.
! 	* libgnat/s-pack85.ads, libgnat/s-pack86.adb: Likewise.
! 	* libgnat/s-pack86.ads, libgnat/s-pack87.adb: Likewise.
! 	* libgnat/s-pack87.ads, libgnat/s-pack88.adb: Likewise.
! 	* libgnat/s-pack88.ads, libgnat/s-pack89.adb: Likewise.
! 	* libgnat/s-pack89.ads, libgnat/s-pack90.adb: Likewise.
! 	* libgnat/s-pack90.ads, libgnat/s-pack91.adb: Likewise.
! 	* libgnat/s-pack91.ads, libgnat/s-pack92.adb: Likewise.
! 	* libgnat/s-pack92.ads, libgnat/s-pack93.adb: Likewise.
! 	* libgnat/s-pack93.ads, libgnat/s-pack94.adb: Likewise.
! 	* libgnat/s-pack94.ads, libgnat/s-pack95.adb: Likewise.
! 	* libgnat/s-pack95.ads, libgnat/s-pack96.adb: Likewise.
! 	* libgnat/s-pack96.ads, libgnat/s-pack97.adb: Likewise.
! 	* libgnat/s-pack97.ads, libgnat/s-pack98.adb: Likewise.
! 	* libgnat/s-pack98.ads, libgnat/s-pack99.adb: Likewise.
! 	* libgnat/s-pack99.ads, libgnat/s-parame.adb: Likewise.
! 	* libgnat/s-parame.ads, libgnat/s-parame__hpux.ads: Likewise.
! 	* libgnat/s-parame__posix2008.ads, libgnat/s-parame__rtems.adb: Likewise.
! 	* libgnat/s-parame__vxworks.adb, libgnat/s-parame__vxworks.ads: Likewise.
! 	* libgnat/s-parint.adb, libgnat/s-parint.ads: Likewise.
! 	* libgnat/s-pehage.adb, libgnat/s-pehage.ads: Likewise.
! 	* libgnat/s-pooglo.adb, libgnat/s-pooglo.ads: Likewise.
! 	* libgnat/s-pooloc.adb, libgnat/s-pooloc.ads: Likewise.
! 	* libgnat/s-poosiz.adb, libgnat/s-poosiz.ads: Likewise.
! 	* libgnat/s-powflt.ads, libgnat/s-powlfl.ads: Likewise.
! 	* libgnat/s-powllf.ads, libgnat/s-purexc.ads: Likewise.
! 	* libgnat/s-putima.adb, libgnat/s-putima.ads: Likewise.
! 	* libgnat/s-rannum.adb, libgnat/s-rannum.ads: Likewise.
! 	* libgnat/s-ransee.adb, libgnat/s-ransee.ads: Likewise.
! 	* libgnat/s-regexp.adb, libgnat/s-regexp.ads: Likewise.
! 	* libgnat/s-regpat.adb, libgnat/s-regpat.ads: Likewise.
! 	* libgnat/s-resfil.adb, libgnat/s-resfil.ads: Likewise.
! 	* libgnat/s-restri.adb, libgnat/s-restri.ads: Likewise.
! 	* libgnat/s-retsta.ads, libgnat/s-rident.ads, libgnat/s-rpc.adb: Likewise.
! 	* libgnat/s-rpc.ads, libgnat/s-scaval.adb, libgnat/s-scaval.ads: Likewise.
! 	* libgnat/s-scaval__128.adb, libgnat/s-scaval__128.ads: Likewise.
! 	* libgnat/s-secsta.adb, libgnat/s-secsta.ads: Likewise.
! 	* libgnat/s-sequio.adb, libgnat/s-sequio.ads: Likewise.
! 	* libgnat/s-shabig.ads, libgnat/s-shasto.adb: Likewise.
! 	* libgnat/s-shasto.ads, libgnat/s-soflin.adb: Likewise.
! 	* libgnat/s-soflin.ads, libgnat/s-soliin.adb: Likewise.
! 	* libgnat/s-soliin.ads, libgnat/s-spark.ads, libgnat/s-spcuop.adb: Likewise.
! 	* libgnat/s-spcuop.ads, libgnat/s-spsufi.adb: Likewise.
! 	* libgnat/s-spsufi.ads, libgnat/s-stache.adb: Likewise.
! 	* libgnat/s-stache.ads, libgnat/s-stalib.adb: Likewise.
! 	* libgnat/s-stalib.ads, libgnat/s-statxd.adb: Likewise.
! 	* libgnat/s-statxd.ads, libgnat/s-stausa.adb: Likewise.
! 	* libgnat/s-stausa.ads, libgnat/s-stchop.adb: Likewise.
! 	* libgnat/s-stchop.ads, libgnat/s-stchop__limit.ads: Likewise.
! 	* libgnat/s-stchop__vxworks.adb, libgnat/s-stoele.adb: Likewise.
! 	* libgnat/s-stoele.ads, libgnat/s-stopoo.adb: Likewise.
! 	* libgnat/s-stopoo.ads, libgnat/s-stposu.adb: Likewise.
! 	* libgnat/s-stposu.ads, libgnat/s-stratt.adb: Likewise.
! 	* libgnat/s-stratt.ads, libgnat/s-strcom.adb: Likewise.
! 	* libgnat/s-strcom.ads, libgnat/s-strhas.adb: Likewise.
! 	* libgnat/s-strhas.ads, libgnat/s-string.adb: Likewise.
! 	* libgnat/s-string.ads, libgnat/s-ststop.adb: Likewise.
! 	* libgnat/s-ststop.ads, libgnat/s-tasloc.adb: Likewise.
! 	* libgnat/s-tasloc.ads, libgnat/s-traceb.adb: Likewise.
! 	* libgnat/s-traceb.ads, libgnat/s-traceb__hpux.adb: Likewise.
! 	* libgnat/s-traceb__mastop.adb, libgnat/s-traent.adb: Likewise.
! 	* libgnat/s-traent.ads, libgnat/s-trasym.adb: Likewise.
! 	* libgnat/s-trasym.ads, libgnat/s-trasym__dwarf.adb: Likewise.
! 	* libgnat/s-tsmona.adb, libgnat/s-tsmona__linux.adb: Likewise.
! 	* libgnat/s-tsmona__mingw.adb, libgnat/s-unstyp.ads: Likewise.
! 	* libgnat/s-utf_32.adb, libgnat/s-utf_32.ads: Likewise.
! 	* libgnat/s-vade128.ads, libgnat/s-vade32.ads: Likewise.
! 	* libgnat/s-vade64.ads, libgnat/s-vaen16.ads: Likewise.
! 	* libgnat/s-vaen32.ads, libgnat/s-vaenu8.ads: Likewise.
! 	* libgnat/s-vafi128.ads, libgnat/s-vafi32.ads: Likewise.
! 	* libgnat/s-vafi64.ads, libgnat/s-vaispe.adb: Likewise.
! 	* libgnat/s-vaispe.ads, libgnat/s-valboo.adb: Likewise.
! 	* libgnat/s-valboo.ads, libgnat/s-valcha.adb: Likewise.
! 	* libgnat/s-valcha.ads, libgnat/s-valflt.ads: Likewise.
! 	* libgnat/s-valint.adb, libgnat/s-valint.ads: Likewise.
! 	* libgnat/s-vallfl.ads, libgnat/s-valllf.ads: Likewise.
! 	* libgnat/s-vallli.adb, libgnat/s-vallli.ads: Likewise.
! 	* libgnat/s-valllli.ads, libgnat/s-vallllu.ads: Likewise.
! 	* libgnat/s-valllu.adb, libgnat/s-valllu.ads: Likewise.
! 	* libgnat/s-valrea.adb, libgnat/s-valrea.ads: Likewise.
! 	* libgnat/s-valued.adb, libgnat/s-valued.ads: Likewise.
! 	* libgnat/s-valuef.adb, libgnat/s-valuef.ads: Likewise.
! 	* libgnat/s-valuei.adb, libgnat/s-valuei.ads: Likewise.
! 	* libgnat/s-valuen.adb, libgnat/s-valuen.ads: Likewise.
! 	* libgnat/s-valuer.adb, libgnat/s-valuer.ads: Likewise.
! 	* libgnat/s-valueu.adb, libgnat/s-valueu.ads: Likewise.
! 	* libgnat/s-valuns.adb, libgnat/s-valuns.ads: Likewise.
! 	* libgnat/s-valuti.adb, libgnat/s-valuti.ads: Likewise.
! 	* libgnat/s-valwch.adb, libgnat/s-valwch.ads: Likewise.
! 	* libgnat/s-vauspe.adb, libgnat/s-vauspe.ads: Likewise.
! 	* libgnat/s-veboop.adb, libgnat/s-veboop.ads: Likewise.
! 	* libgnat/s-vector.ads, libgnat/s-vercon.adb: Likewise.
! 	* libgnat/s-vercon.ads, libgnat/s-wchcnv.adb: Likewise.
! 	* libgnat/s-wchcnv.ads, libgnat/s-wchcon.adb: Likewise.
! 	* libgnat/s-wchcon.ads, libgnat/s-wchjis.adb: Likewise.
! 	* libgnat/s-wchjis.ads, libgnat/s-wchstw.adb: Likewise.
! 	* libgnat/s-wchstw.ads, libgnat/s-wchwts.adb: Likewise.
! 	* libgnat/s-wchwts.ads, libgnat/s-widboo.adb: Likewise.
! 	* libgnat/s-widboo.ads, libgnat/s-widcha.adb: Likewise.
! 	* libgnat/s-widcha.ads, libgnat/s-widenu.adb: Likewise.
! 	* libgnat/s-widenu.ads, libgnat/s-widint.ads: Likewise.
! 	* libgnat/s-widlli.adb, libgnat/s-widlli.ads: Likewise.
! 	* libgnat/s-widllli.ads, libgnat/s-widlllu.ads: Likewise.
! 	* libgnat/s-widllu.adb, libgnat/s-widllu.ads: Likewise.
! 	* libgnat/s-widthi.adb, libgnat/s-widthi.ads: Likewise.
! 	* libgnat/s-widthu.adb, libgnat/s-widthu.ads: Likewise.
! 	* libgnat/s-widuns.ads, libgnat/s-widwch.adb: Likewise.
! 	* libgnat/s-widwch.ads, libgnat/s-win32.ads, libgnat/s-winext.ads: Likewise.
! 	* libgnat/s-wwdcha.adb, libgnat/s-wwdcha.ads: Likewise.
! 	* libgnat/s-wwdenu.adb, libgnat/s-wwdenu.ads: Likewise.
! 	* libgnat/s-wwdwch.adb, libgnat/s-wwdwch.ads: Likewise.
! 	* libgnat/system-aix.ads, libgnat/system-darwin-arm.ads: Likewise.
! 	* libgnat/system-darwin-ppc.ads, libgnat/system-darwin-x86.ads: Likewise.
! 	* libgnat/system-djgpp.ads, libgnat/system-dragonfly-x86_64.ads: Likewise.
! 	* libgnat/system-freebsd.ads, libgnat/system-hpux-ia64.ads: Likewise.
! 	* libgnat/system-hpux.ads, libgnat/system-linux-alpha.ads: Likewise.
! 	* libgnat/system-linux-arm.ads, libgnat/system-linux-hppa.ads: Likewise.
! 	* libgnat/system-linux-ia64.ads, libgnat/system-linux-m68k.ads: Likewise.
! 	* libgnat/system-linux-mips.ads, libgnat/system-linux-ppc.ads: Likewise.
! 	* libgnat/system-linux-riscv.ads, libgnat/system-linux-s390.ads: Likewise.
! 	* libgnat/system-linux-sh4.ads, libgnat/system-linux-sparc.ads: Likewise.
! 	* libgnat/system-linux-x86.ads, libgnat/system-lynxos178-ppc.ads: Likewise.
! 	* libgnat/system-lynxos178-x86.ads, libgnat/system-mingw.ads: Likewise.
! 	* libgnat/system-qnx-arm.ads, libgnat/system-rtems.ads: Likewise.
  	* libgnat/system-solaris-sparc.ads: Likewise.
  	* libgnat/system-solaris-x86.ads: Likewise.
  	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
  	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
  	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-aarch64.ads: Likewise.
  	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-arm.ads: Likewise.
  	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
  	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
  	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
  	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
  	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
! 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads, link.c, live.adb: Likewise.
! 	* live.ads, locales.c, make.adb, make.ads, make_util.adb: Likewise.
! 	* make_util.ads, makeusg.adb, makeusg.ads, mdll-fil.adb: Likewise.
! 	* mdll-fil.ads, mdll-utl.adb, mdll-utl.ads, mdll.adb, mdll.ads: Likewise.
! 	* mingw32.h, mkdir.c, namet-sp.adb, namet-sp.ads, namet.adb: Likewise.
! 	* namet.ads, namet.h, nlists.adb, nlists.ads, nlists.h, opt.adb: Likewise.
! 	* opt.ads, osint-b.adb, osint-b.ads, osint-c.adb, osint-c.ads: Likewise.
! 	* osint-l.adb, osint-l.ads, osint-m.adb, osint-m.ads, osint.adb: Likewise.
! 	* osint.ads, output.adb, output.ads, par-ch10.adb, par-ch11.adb: Likewise.
! 	* par-ch12.adb, par-ch13.adb, par-ch2.adb, par-ch3.adb: Likewise.
! 	* par-ch4.adb, par-ch5.adb, par-ch6.adb, par-ch7.adb, par-ch8.adb: Likewise.
! 	* par-ch9.adb, par-endh.adb, par-labl.adb, par-load.adb: Likewise.
! 	* par-prag.adb, par-sync.adb, par-tchk.adb, par-util.adb, par.adb: Likewise.
! 	* par.ads, par_sco.adb, par_sco.ads: Likewise.
! 	* pprint.adb, pprint.ads, prep.adb, prep.ads: Likewise.
! 	* prepcomp.adb, prepcomp.ads, put_scos.adb, put_scos.ads: Likewise.
! 	* raise-gcc.c, raise.c, raise.h, repinfo-input.adb: Likewise.
! 	* repinfo-input.ads, repinfo.adb, repinfo.ads, repinfo.h: Likewise.
! 	* restrict.adb, restrict.ads, rident.ads, rtfinal.c, rtinit.c: Likewise.
! 	* rtsfind.adb, rtsfind.ads, runtime.h, s-oscons-tmplt.c: Likewise.
! 	* scans.adb, scans.ads, scil_ll.adb, scil_ll.ads, scn.adb: Likewise.
! 	* scn.ads, scng.adb, scng.ads, scos.adb, scos.ads: Likewise.
! 	* scos.h, sdefault.ads, seh_init.c, sem.adb, sem.ads: Likewise.
! 	* sem_aggr.adb, sem_aggr.ads, sem_attr.adb, sem_attr.ads: Likewise.
! 	* sem_aux.adb, sem_aux.ads, sem_case.adb, sem_case.ads: Likewise.
! 	* sem_cat.adb, sem_cat.ads, sem_ch10.adb, sem_ch10.ads: Likewise.
! 	* sem_ch11.adb, sem_ch11.ads, sem_ch12.adb, sem_ch12.ads: Likewise.
! 	* sem_ch13.adb, sem_ch13.ads, sem_ch2.adb, sem_ch2.ads: Likewise.
! 	* sem_ch3.adb, sem_ch3.ads, sem_ch4.adb, sem_ch4.ads, sem_ch5.adb: Likewise.
! 	* sem_ch5.ads, sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch7.ads: Likewise.
! 	* sem_ch8.adb, sem_ch8.ads, sem_ch9.adb, sem_ch9.ads, sem_dim.adb: Likewise.
! 	* sem_dim.ads, sem_disp.adb, sem_disp.ads, sem_dist.adb: Likewise.
! 	* sem_dist.ads, sem_elab.adb, sem_elab.ads, sem_elim.adb: Likewise.
! 	* sem_elim.ads, sem_eval.adb, sem_eval.ads, sem_intr.adb: Likewise.
! 	* sem_intr.ads, sem_mech.adb, sem_mech.ads, sem_prag.adb: Likewise.
! 	* sem_prag.ads, sem_res.adb, sem_res.ads, sem_scil.adb: Likewise.
! 	* sem_scil.ads, sem_smem.adb, sem_smem.ads, sem_type.adb: Likewise.
! 	* sem_type.ads, sem_util.adb, sem_util.ads, sem_warn.adb: Likewise.
! 	* sem_warn.ads, set_targ.adb, set_targ.ads, sfn_scan.adb: Likewise.
! 	* sfn_scan.ads, sigtramp-arm-qnx.c, sigtramp-armdroid.c: Likewise.
! 	* sigtramp-ios.c, sigtramp-qnx.c: Likewise.
! 	* sigtramp-vxworks-target.h, sigtramp-vxworks.c, sigtramp.h: Likewise.
! 	* sinfo-cn.adb, sinfo-cn.ads, sinfo-utils.adb, sinfo-utils.ads: Likewise.
! 	* sinfo.adb, sinfo.ads, sinput-c.adb, sinput-c.ads, sinput-d.adb: Likewise.
! 	* sinput-d.ads, sinput-l.adb, sinput-l.ads, sinput.adb: Likewise.
! 	* sinput.ads, socket.c, spark_xrefs.adb, spark_xrefs.ads: Likewise.
! 	* sprint.adb, sprint.ads, stand.ads: Likewise.
! 	* stringt.adb, stringt.ads, stringt.h, strub.adb, strub.ads: Likewise.
! 	* style.adb, style.ads, styleg.adb, styleg.ads, stylesw.adb: Likewise.
! 	* stylesw.ads, switch-b.adb, switch-b.ads, switch-c.adb: Likewise.
! 	* switch-c.ads, switch-m.adb, switch-m.ads, switch.adb: Likewise.
! 	* switch.ads, sysdep.c, table.adb: Likewise.
! 	* table.ads, targext.c, targparm.adb, targparm.ads, tbuild.adb: Likewise.
! 	* tbuild.ads, tempdir.adb, tempdir.ads, terminals.c, tracebak.c: Likewise.
! 	* treepr.adb, treepr.ads, ttypes.ads, types.adb, types.ads: Likewise.
! 	* types.h, uintp.adb, uintp.ads, uintp.h, uname.adb, uname.ads: Likewise.
! 	* urealp.adb, urealp.ads, urealp.h, usage.adb, usage.ads: Likewise.
! 	* validsw.adb, validsw.ads, vast.adb, vast.ads, warnsw.adb: Likewise.
! 	* warnsw.ads, widechar.adb, widechar.ads, xoscons.adb: Likewise.
! 	* xsnamest.adb, xutil.adb, xutil.ads, gnatvsn.adb: Likewise.
! 	* gnatvsn.ads (Current_Year): Likewise and bump to 2023.
! 
! 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* exp_ch7.adb (Make_Adjust_Call): Remove unreachable statement.
! 	(Make_Final_Call): Likewise.
! 
! 2023-01-09  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* exp_util.ads (Is_Tag_To_Class_Wide_Conversion): Delete.
! 	(Is_Displacement_Of_Object_Or_Function_Result): Likewise.
! 	* exp_util.adb (Is_Tag_To_Class_Wide_Conversion): Rename to...
! 	(Is_Temporary_For_Interface_Object): ...this.
! 	(Is_Finalizable_Transient): Adjust call to above renaming.
! 	(Is_Displacement_Of_Object_Or_Function_Result): Delete.
! 	(Requires_Cleanup_Actions): Remove special handling of the
! 	temporaries created for interface objects.
! 	* exp_ch7.adb (Build_Finalizer): Likewise.
! 
! 2023-01-07  LIU Hao  <lh_mouse@126.com>
! 
! 	PR middle-end/108300
! 	* adaint.c: Define `WIN32_LEAN_AND_MEAN` before `#include
! 	<windows.h>`.
! 	* cio.c: Likewise.
! 	* ctrl_c.c: Likewise.
! 	* expect.c: Likewise.
! 	* gsocket.h: Likewise.
  	* mingw32.h: Likewise.
  	* mkdir.c: Likewise.
  	* rtfinal.c: Likewise.
  	* rtinit.c: Likewise.
  	* seh_init.c: Likewise.
  	* sysdep.c: Likewise.
  	* terminals.c: Likewise.
  	* tracebak.c: Likewise.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_util.adb (Make_CW_Equivalent_Type) <Has_Tag_Of_Type>: Tweak.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Rewrite the end of the
! 	handling of objects with (class-wide) interface type by using the
! 	same idiom as the other cases generating a renaming.
! 	* exp_util.adb (Is_Displacement_Of_Object_Or_Function_Result): Tweak
! 	pattern matching code and exclude special return objects.
! 	(Requires_Cleanup_Actions): Adjust comment.
! 	* exp_ch7.adb (Build_Finalizer): Likewise.
  
! 2023-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* freeze.adb (Build_Renamed_Body): Rewrite subprogram renaming to
! 	subprogram declaration early and then set the Body_To_Inling flag.
  
! 2023-01-05  Piotr Trojanek  <trojanek@adacore.com>
  
! 	* freeze.adb (Build_Renamed_Body): Revert a special case for
! 	GNATprove; remove unnecessary initialization of a local variable.
  
! 2023-01-05  Marc Poulhiès  <poulhies@adacore.com>
  
! 	* sem_ch12.adb (Instantiate_Package_Body): Better filtering when
! 	installing parent on the scope stack.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* repinfo.ads (The JSON output format): Document change.
! 	* urealp.adb (UR_Write_To_JSON): Output a fraction instead of a
! 	decimal approximation.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): New local variable
! 	Func_Id holding the function for a special return object.
! 	Use a direct renaming in the class-wide case when the initializing
! 	expression is a captured function call, except for a special return
! 	object when the two functions do not return on the same stack.
! 	Apply the accessibility check for class-wide special return objects.
! 	* exp_util.adb (Make_CW_Equivalent_Type) <Has_Tag_Of_Type>: New.
! 	Do not force a dispatching call to the primitive operation _Size if
! 	the expression is known to statically have the tag of its type.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Fix pasto in comment.
  
! 2023-01-05  Ronan Desplanques  <desplanques@adacore.com>
  
! 	* sem_aggr.adb (Resolve_Array_Aggregate): Tweak conditions for
! 	warning about use of parentheses for array aggregates.
  
! 2023-01-05  Javier Miranda  <miranda@adacore.com>
  
! 	* scans.ads (Tok_Left_Curly_Bracket, Tok_Right_Curly_Bracket)
! 	(Tok_Left_Interpolated_String): Placed in no category since they
! 	don't fit well in the existing categories. Fix typo in comment.
! 	(Inside_Interpolated_String_Literal): New scan state variable.
! 	* scng.adb (Slit): Scan interpolated string literals,
! 	continuations of interpolated string literals and escaped
! 	characters found in interpolated string literals.
! 	(Scan): Handle consecutive interpolated expressions. Handle ending
! 	delimiter placed immediately after an interpolated expression.
! 	Handle string literal placed after interpolated expression. Handle
! 	left and right curly brackets; when extensions are not allowed
! 	they are treated as left and right paren; when extensions are
! 	allowed they are handled as delimiters of interpolated string
! 	literals.
! 	* sinfo.ads (N_Interpolated_String_Literal): New node.
! 	* gen_il-gen-gen_nodes.adb (N_Interpolated_String_Literal): Define
! 	N_String_Literal node.
! 	* gen_il-types.ads (Opt_Type_Enum): Define N_String_Literal as
! 	concrete node type.
! 	* par-ch2.adb (P_Interpolated_String_Literal): New subprogram.
! 	* par-ch4.adb (P_Simple_Expression): Handle '}' as expression
! 	terminator when scanning an interpolated expression; disable error
! 	recovery machinery for binary operator when we are processing an
! 	interpolated string literal and reach the expression terminator
! 	'}'.
! 	(P_Primary): Call P_Interpolated_String_Literal when the opening
! 	interpolated-string-literal delimiter is found (that is, the left
! 	curly bracket '{').
! 	* par-tchk.adb (T_Right_Curly_Bracket): New subprogram.
! 	* par.adb (P_Interpolated_String_Literal): New declaration.
! 	(T_Right_Curly_Bracket): New declaration.
! 	* sem.adb (Analyze): Call Analyze_Interpolated_String_Literal.
! 	* sem_ch2.ads (Analyze_Interpolated_String_Literal): New
! 	subprogram
! 	* sem_ch2.adb (Analyze_Interpolated_String_Literal): Likewise.
! 	* sem_util.adb (Is_User_Defined_Literal): Complete mapping of
! 	literal aspects adding that interpolated string literals have no
! 	correspondence with any aspect.
! 	* sem_res.adb (Resolve_Interpolated_String_Literal): New
  	subprogram.
! 	(Has_Applicable_User_Defined_Literal): Complete mapping of literal
! 	aspects adding that interpolated string literals have no
! 	correspondency with any aspect.
! 	* expander.adb (Expand): Add call to
! 	Expand_N_Interpolated_String_Literal.
! 	* exp_util.adb (Insert_Actions): Handle
! 	N_Interpolated_String_Literal nodes; that is, continue climbing.
! 	* exp_ch2.ads (Expand_N_Interpolated_String_Literal): New
! 	subprogram.
! 	* exp_ch2.adb (Expand_N_Interpolated_String_Literal): Likewise.
! 	* exp_put_image.adb (Build_Elementary_Put_Image_Call): Add missing
! 	conversion to force dispatching call. Required to handle calls to
! 	descendants.
! 	(Build_String_Put_Image_Call): Do not output string delimiters
! 	when the put_image call is part of an interpolated string literal.
! 	* rtsfind.ads (RTU_Id): Add RE_Set_Trim_Leading_Spaces.
! 	* sprint.adb (Sprint_Node): Output interpolated string contents.
! 	* libgnat/a-stbubo.adb (Get_UTF_8): Add default value for
! 	Trim_Leading_White_Spaces component in aggregate.
! 	(Buffer_Type_Implementation): Update Trim_Leading_White_Spaces.
! 	* libgnat/a-stbuun.adb (Get_UTF_8): Likewise.
! 	(Buffer_Type_Implementation): Likewise.
! 	* libgnat/a-sttebu.ads (Set_Trim_Leading_Spaces): New subprogram.
! 	(Trim_Leading_Spaces): New subprogram.
! 	(Root_Buffer_Type): Adding Trim_Leading_While_Spaces component.
! 	* libgnat/a-sttebu.adb (procedure Set_Trim_Leading_Spaces): New
! 	subprogram.
! 	(Trim_Leading_Space): New subprogram.
! 	(Put_UTF_8): Handle Trim_Leading_White_Spaces.
! 	(New_Line): Likewise.
! 	* libgnat/s-putima.ads (Put_Image_String): Adding formal
! 	(with_delimiters).
! 	(Put_Image_Wide_String): Likewise.
! 	(Put_Image_Wide_Wide_String): Likewise.
! 	* libgnat/s-putima.adb (Put_Image_String): Adding support for new
! 	formal.
! 	(Put_Image_Wide_String): Likewise.
! 	(Put_Image_Wide_Wide_String): Likewise.
  
! 2023-01-05  Joao Azevedo  <azevedo@adacore.com>
  
! 	* doc/gnat_ugn/gnat_utility_programs.rst: add gnatpp --layout
! 	switch and update legacy switches.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* freeze.adb (Freeze_Entity): For the purpose of deciding whether to
! 	freeze an entity coming from an outer scope in an inner scope, treat
! 	the internal subprogram generated because of post-conditions as also
! 	coming from source if the original subprogram itself does.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* contracts.adb (Build_Subprogram_Contract_Wrapper): Generate an
! 	extended return statement in all cases.
! 	(Expand_Subprogram_Contract): Adjust comment.
  
! 2023-01-05  Ronan Desplanques  <desplanques@adacore.com>
  
! 	* libgnat/g-forstr.adb (F_Kind): Rename enumeration literal.
! 	(P_Flt_Format): Adjust handling of "%g".
! 	(Determine_Notation_And_Aft): New procedure.
! 	(Decimal_Exponent): New function.
! 	(Increment_Integral_Part): New procedure.
! 	(Remove_Extraneous_Decimal_Digit): New procedure.
! 	(Trim_Fractional_Part): New procedure.
! 	* libgnat/g-forstr.ads: Change description of "%g" specifier.
  
! 2023-01-05  Marc Poulhiès  <poulhies@adacore.com>
  
! 	* sem_ch12.adb (Instantiate_Package_Body): Correctly find the
! 	parent instance to place on the scope stack.
  
! 2023-01-05  Justin Squirek  <squirek@adacore.com>
  
! 	* sem_ch8.adb (Set_Entity_Or_Discriminal): Verify we are actually
! 	resetting the entity field of a non-prefixed discriminant
! 	reference.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): New local variable used
! 	throughout instead of testing Is_Special_Return_Object every time.
! 	Do not rename an OK_To_Rename object for a special return object.
! 	* exp_ch4.adb (Expand_Concatenate): Revert to constrained allocation
! 	if the result is allocated on the secondary stack.
  
! 2023-01-05  Steve Baird  <baird@adacore.com>
  
! 	* sem_prag.adb (Analyze_Pragma): Fix Is_Configuration_Pragma
! 	function to handle case where the pragma's parent is an
! 	N_Aspect_Specification node. In analyzing a Discard_Names pragma,
! 	do not assume that a nonzero number of arguments implies that the
! 	pragma is not a configuration pragma; that assumption only holds
! 	for legal programs.
  
! 2023-01-05  Bob Duff  <duff@adacore.com>
  
  	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
! 	Add RM references.
  	* gnat_ugn.texi: Regenerate.
  
! 2023-01-05  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch3.adb (Expand_N_Object_Declaration): For a special return
! 	object of an interface type that is not inherently limited, make
! 	a call to the Adjust primitive after doing the copy.  For a special
! 	return object of a non-class-wide type initialized by a function
! 	call, use a direct renaming only if the object doing the capture
! 	is flagged by Is_Related_To_Func_Return.  For a special return
! 	object using a direct renaming, reassign the tag, if need be.
! 	* exp_ch6.adb (Expand_Simple_Function_Return): Fix comment.
! 	* exp_util.adb (Is_Related_To_Func_Return): Accept both regular and
! 	renaming object declarations for return objects.
  
! 2023-01-05  Bob Duff  <duff@adacore.com>
  
! 	* sem_ch5.adb (Analyze_Assignment): Fix the bug by checking
! 	Original_Node. The renaming might be elsewhere, but the (original)
! 	reference is right here.
! 	* errout.adb: Remove pragma Unreferenced which was added because
! 	of the above bug.
! 	* einfo.ads: Misc cleanup.
! 	* lib.adb: Likewise.
! 	* lib.ads: Likewise.
  
! 2023-01-03  Ghjuvan Lacambre  <lacambre@adacore.com>
  
! 	* errout.adb (Write_JSON_Span): Escape subprogram name.
  
! 2023-01-03  Ghjuvan Lacambre  <lacambre@adacore.com>
  
! 	* output.adb (Write_Buffer): Use Flush_Buffer instead of Write_Eol.
  
! 2023-01-03  Ronan Desplanques  <desplanques@adacore.com>
  
! 	* libgnat/g-forstr.adb (P_Flt_Format): Add "*" syntax handling.
  
! 2023-01-03  Ronan Desplanques  <desplanques@adacore.com>
  
! 	* libgnat/g-forstr.adb (P_Int_Format): Fix parsing bug.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch6.adb (Expand_Simple_Function_Return): Make sure that a
! 	captured function call also verifies Is_Related_To_Func_Return.
! 	Do not generate an actual subtype for special return objects.
! 	* exp_util.ads (Is_Related_To_Func_Return): Add commentary.
  
! 2023-01-03  Ronan Desplanques  <desplanques@adacore.com>
  
! 	* libgnat/g-forstr.adb
! 	(Advance_And_Accumulate_Until_Next_Specifier): New procedure.
! 	("-"): Replace inline code with call to
! 	Advance_And_Accumulate_Until_Next_Specifier.
! 	(Next_Format): likewise.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* checks.adb (Apply_Discriminant_Check.Denotes_Explicit_Dereference):
! 	Return false for artificial dereferences generated by the expander.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_ch6.adb (Is_Build_In_Place_Function): Adjust comment.
! 	* sem_util.adb (Compute_Returns_By_Ref): Do not set Returns_By_Ref
! 	on functions with foreign convention.
  
! 2023-01-03  Marc Poulhiès  <poulhies@adacore.com>
  
! 	* exp_aggr.adb (Build_Assignment_With_Temporary): New.
! 	(Expand_Array_Aggregate): Tune backend optimization
! 	and insert a temporary in the case of an access with
! 	Designated_Storage_Model aspect.
! 	(Convert_Array_Aggr_In_Allocator): Likewise.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* sem_res.adb (Resolve_Membership_Op): Adjust again latest change.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* sem_util.ads (Set_Debug_Info_Defining_Id): Adjust comment.
! 	* sem_util.adb (Is_Aliased_View) <N_Explicit_Dereference>: Return
! 	false for more artificial dereferences generated by the expander.
! 	(Set_Debug_Info_Defining_Id): Set Debug_Info_Needed unconditionally
! 	in -gnatD mode.
! 	* exp_ch6.adb (Replace_Renaming_Declaration_Id): Also preserve the
! 	Is_Aliased flag.
  
! 2023-01-03  Joel Brobecker  <brobecker@adacore.com>
  
! 	* doc/gnat_ugn/platform_specific_information.rst
! 	(_Platform_Specific_Information): Minor rewording of intro text.
! 	* gnat_ugn.texi: Regenerate.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_util.ads (Is_Captured_Function_Call): Declare.
! 	* exp_util.adb (Is_Captured_Function_Call): New predicate.
! 	* exp_ch3.adb (Expand_N_Object_Declaration): Use it to detect a
! 	rewritten function call as the initializing expression.
! 	* exp_ch6.adb (Expand_Simple_Function_Return): Use it to detect a
! 	rewritten function call as the returned expression.
  
! 2023-01-03  Bob Duff  <duff@adacore.com>
  
! 	* exp_util.adb (Integer_Type_For): Assertion and comment.
! 	(Small_Integer_Type_For): Remove some code and call
! 	Integer_Type_For instead.
! 	* sem_util.ads (Rep_To_Pos_Flag): Improve comments. "Standard_..."
! 	seems overly pedantic here.
! 	* exp_attr.adb (Succ, Pred): Clean up: make the code as similar as
! 	possible.
! 	* exp_ch4.adb: Minor: named notation.
  
! 2023-01-03  Javier Miranda  <miranda@adacore.com>
  
! 	* ghost.adb (Is_OK_Declaration): A reference to a Ghost entity may
! 	appear within the class-wide precondition of a helper subprogram.
! 	This context is treated as suitable because it was already
! 	verified when we were analyzing the original class-wide
! 	precondition.
  
! 2023-01-03  Eric Botcazou  <ebotcazou@adacore.com>
  
! 	* exp_tss.adb (Base_Init_Proc): Do not return the Init_Proc of the
! 	ancestor type for a derived array type.
! 	* sem_ch13.adb (Inherit_Aspects_At_Freeze_Point): Factor out the
! 	common processing done on representation items.
! 	For Default_Component_Value and Default_Value, look into the first
! 	subtype to find out the representation items.
  
! 2023-01-02  Iain Sandoe  <iain@sandoe.co.uk>
  
! 	PR ada/108202
! 	* gcc-interface/Make-lang.in (GCC_LINKERFLAGS, GCC_LDFLAGS):
! 	Versions of ALL_LINKERFLAGS, LDFLAGS with -Werror and
! 	-static-libgcc filtered out for Darwin8 and 9 (-Werror is filtered
! 	out for other hosts).
  
! 2023-01-02  Jakub Jelinek  <jakub@redhat.com>
  
  	* gnat_ugn.texi: Bump @copying's copyright year.
  	* gnat_rm.texi: Likewise.
  
  
! Copyright (C) 2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/ada/ChangeLog-2022 gcc-13.1.0/gcc/ada/ChangeLog-2022
*** gcc-12.2.0/gcc/ada/ChangeLog-2022	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/ChangeLog-2022	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,11068 ----
+ 2022-12-29  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (Sloc_to_locus): Don't map NULL decl.
+ 
+ 2022-12-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* contracts.adb (Add_Contract_Item): Allow No_Caching on types.
+ 	(Check_Type_Or_Object_External_Properties): Check No_Caching.
+ 	Check that non-effectively volatile types does not contain an
+ 	effectively volatile component (instead of just a volatile
+ 	component).
+ 	(Analyze_Object_Contract): Remove shared checking of No_Caching.
+ 	* sem_prag.adb (Analyze_External_Property_In_Decl_Part): Adapt checking
+ 	of No_Caching for types.
+ 	(Analyze_Pragma): Allow No_Caching on types.
+ 	* sem_util.adb (Has_Effectively_Volatile_Component): New query function.
+ 	(Is_Effectively_Volatile): Type with Volatile and No_Caching is not
+ 	effectively volatile.
+ 	(No_Caching_Enabled): Remove assertion to apply to all entities.
+ 	* sem_util.ads: Same.
+ 
+ 2022-12-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch6.adb
+ 	(Build_Static_Check_Helper_Call): Perform implicit type conversion
+ 	to ensure matching types and avoid reporting spurious errors.
+ 
+ 2022-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Bail out for a
+ 	membership test with a mark for a subtype that is predicated.
+ 
+ 2022-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_elab.adb (Processing_In_State): Add Within_Freezing_Actions
+ 	component.
+ 	(Process_Conditional_ABE_Call): Compute its value.
+ 	(Process_Conditional_ABE_Call_SPARK): For a call and a target in
+ 	the main unit, do not emit any ABE diagnostics if the call occurs
+ 	in a freezing actions context.
+ 
+ 2022-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Actual_Subtype): Document additional usage.
+ 	* exp_aggr.adb (Expand_Array_Aggregate): Replace test on
+ 	Is_Build_In_Place_Return_Object with Is_Special_Return_Object.
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Factor out parts of the
+ 	processing done for build-in-place return objects and reuse them to
+ 	implement a similar processing for specific return objects.
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Do not generate a tag
+ 	assignment or an adjustment if the allocator was made for a special
+ 	return object.
+ 	(Expand_Concatenate): If the result is allocated on the secondary
+ 	stack, use an unconstrained allocation.
+ 	* exp_ch6.ads (Apply_CW_Accessibility_Check): New declaration.
+ 	(Is_By_Reference_Return_Object): Likewise.
+ 	(Is_Secondary_Stack_Return_Object): Likewise.
+ 	(Is_Special_Return_Object): Likewise.
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Do not bail out for the
+ 	expression in the declaration of a special return object.
+ 	(Expand_N_Extended_Return_Statement): Add missing guard and move
+ 	the class-wide accessibility check to Expand_N_Object_Declaration.
+ 	(Expand_Simple_Function_Return): Delete obsolete commentary.
+ 	Skip the special processing for types that require finalization or
+ 	are returned on the secondary stack if the return originally comes
+ 	from an extended return statement.  Add missing Constant_Present.
+ 	(Is_By_Reference_Return_Object): New predicate.
+ 	(Is_Secondary_Stack_Return_Object): Likewise.
+ 	(Is_Special_Return_Object): Likewise.
+ 	* exp_util.adb (Is_Related_To_Func_Return): Also return true if the
+ 	parent of the expression is the renaming declaration generated for
+ 	the expansion of a return object.
+ 	* gen_il-fields.ads (Opt_Field_Enum): Replace Alloc_For_BIP_Return
+ 	with For_Special_Return_Object.
+ 	* gen_il-gen-gen_nodes.adb (N_Allocator): Likewise.
+ 	* gen_il-internals.adb (Image): Remove Alloc_For_BIP_Return.
+ 	* sem_ch3.adb (Check_Return_Subtype_Indication): New procedure
+ 	moved from sem_ch6.adb.
+ 	(Analyze_Object_Declaration): Call it on a return object.
+ 	* sem_ch4.adb: Add with and use clauses for Rtsfind.
+ 	(Analyze_Allocator): Test For_Special_Return_Object to skip checks
+ 	for allocators made for special return objects.
+ 	Do not report restriction violations for the return stack pool.
+ 	* sem_ch5.adb (Analyze_Assignment.Set_Assignment_Type): Return the
+ 	Actual_Subtype for return objects that live on the secondary stack.
+ 	* sem_ch6.adb (Check_Return_Subtype_Indication): Move procedure to
+ 	sem_ch3.adb.
+ 	(Analyze_Function_Return): Do not call above procedure.
+ 	* sem_res.adb (Resolve_Allocator): Replace Alloc_For_BIP_Return
+ 	with For_Special_Return_Object.
+ 	* sinfo.ads: Likewise.
+ 	* treepr.adb (Image): Remove Alloc_For_BIP_Return.
+ 	* gcc-interface/trans.cc (gnat_to_gnu): Do not convert to the result
+ 	type in the unconstrained array type case if the parent is a simple
+ 	return statement.
+ 
+ 2022-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Membership_Op): Adjust latest change.
+ 
+ 2022-12-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_In) <Substitute_Valid_Check>: Rename to...
+ 	<Substitute_Valid_Test>: ...this.
+ 	Use Is_Entity_Name to test for the presence of entity references.
+ 	Do not warn or substitute a valid test for a test with a mark for
+ 	a subtype that is predicated.
+ 	Apply the same transformation for a test with a mark for a subtype
+ 	that is predicated as for a subtype that is not.
+ 	Remove useless return statement.
+ 	* sem_res.adb (Resolve_Membership_Op): Perform a special resolution
+ 	if the left operand is of a universal numeric type.
+ 
+ 2022-12-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* accessibility.adb, accessibility.ads
+ 	(Accessibility_Message): Moved from sem_attr.
+ 	(Apply_Accessibility_Check): Moved from checks.
+ 	(Apply_Accessibility_Check_For_Allocator): Moved from exp_ch4 and
+ 	renamed
+ 	(Check_Return_Construct_Accessibility): Moved from sem_ch6.
+ 	(Innermost_Master_Scope_Depth): Moved from sem_util. Add condition
+ 	to detect expanded iterators.
+ 	(Prefix_With_Safe_Accessibility_Level): Moved from sem_attr.
+ 	(Static_Accessibility_Level): Moved from sem_util.
+ 	(Has_Unconstrained_Access_Discriminants): Likewise.
+ 	(Has_Anonymous_Access_Discriminant): Likewise.
+ 	(Is_Anonymous_Access_Actual): Likewise.
+ 	(Is_Special_Aliased_Formal_Access): Likewise.
+ 	(Needs_Result_Accessibility_Level): Likewise.
+ 	(Subprogram_Access_Level): Likewise.
+ 	(Type_Access_Level): Likewise.
+ 	(Deepest_Type_Access_Level): Likewise.
+ 	(Effective_Extra_Accessibility): Likewise.
+ 	(Get_Dynamic_Accessibility): Likewise.
+ 	(Has_Access_Values): Likewise.
+ 	(Accessibility_Level): Likewise.
+ 	* exp_attr.adb (Access_Cases): Obtain the proper enclosing object
+ 	which applies to a given 'Access by looking through type
+ 	conversions.
+ 	* exp_ch4.adb (Apply_Accessibility_Check): Moved to accessibility.
+ 	* exp_ch5.adb: Likewise.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_ch9.adb: Likewise.
+ 	* exp_disp.adb: Likewise.
+ 	* gen_il-fields.ads: Add new flag Comes_From_Iterator.
+ 	* gen_il-gen-gen_nodes.adb: Add new flag Comes_From_Iterator for
+ 	N_Object_Renaming_Declaration.
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Mark object
+ 	renamings resulting from iterator expansion with the new flag
+ 	Comes_From_Iterator.
+ 	* sem_aggr.adb (Resolve_Container_Aggregate): Refine test.
+ 	* sem_ch13.adb: Add dependence on the accessibility package.
+ 	* sem_ch3.adb: Likewise.
+ 	* sem_ch4.adb: Likewise.
+ 	* sem_ch9.adb: Likewise.
+ 	* sem_res.adb: Likewise.
+ 	* sem_warn.adb: Likewise.
+ 	* exp_ch3.adb: Likewise.
+ 	* sem_attr.adb (Accessibility_Message): Moved to accessibility.
+ 	(Prefix_With_Safe_Accessibility_Level): Likewise.
+ 	* checks.adb, checks.ads (Apply_Accessibility_Check): Likewise.
+ 	* sem_ch6.adb (Check_Return_Construct_Accessibility): Likewise.
+ 	* sem_util.adb, sem_util.ads
+ 	(Accessibility_Level): Likewise.
+ 	(Deepest_Type_Access_Level): Likewise.
+ 	(Effective_Extra_Accessibility): Likewise.
+ 	(Get_Dynamic_Accessibility): Likewise.
+ 	(Has_Access_Values): Likewise.
+ 	(Has_Anonymous_Access_Discriminant): Likewise.
+ 	(Static_Accessibility_Level): Likewise.
+ 	(Has_Unconstrained_Access_Discriminants): Likewise.
+ 	(Is_Anonymous_Access_Actual): Likewise.
+ 	(Is_Special_Aliased_Formal_Access): Likewise.
+ 	(Needs_Result_Accessibility_Level): Likewise.
+ 	(Subprogram_Access_Level): Likewise.
+ 	(Type_Access_Level): Likewise.
+ 	* sinfo.ads: Document new flag Comes_From_Iterator.
+ 	* gcc-interface/Make-lang.in: Add entry for new Accessibility package.
+ 
+ 2022-12-06  Liaiss Merzougue  <merzougue@adacore.com>
+ 
+ 	* libgnat/i-c.adb (To_C): Simplify code for having a single
+ 	exception raise. Add pragma annotate about uninitialized value
+ 	which happen only on exception raising.
+ 
+ 2022-12-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (get_storage_model_access): Strip any type
+ 	conversion around the node before looking into it.
+ 
+ 2022-12-01  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.adb
+ 	(Validate_Aspect_Aggregate): Reject illegal case where none of
+ 	Add_Named, Add_Unnamed, and Assign_Indexed are specified.
+ 
+ 2022-12-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst (Non-Symbolic
+ 	Traceback): Add compilation line.
+ 	(Symbolic Traceback): Remove obsolete stuff.
+ 	* doc/gnat_ugn/gnat_utility_programs.rst (gnatsymbolize): Adjust.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-12-01  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): Fix misphrasing in comment.
+ 
+ 2022-12-01  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute, Attribute_Address): In the case
+ 	where the attribute's prefix is a dereference of a value of an
+ 	access type that has aspect Designated_Storage_Model (or a
+ 	renaming of such a dereference), set the attribute's type to the
+ 	corresponding Storage_Model_Type's associated address type rather
+ 	than System.Address.
+ 
+ 2022-12-01  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_rm/the_gnat_library.rst: Fix minor issues.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-12-01  Josue Nava Bello  <nava@adacore.com>
+ 
+ 	* doc/share/conf.py: minor updates
+ 
+ 2022-11-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/g-traceb.ads: Minor tweaks in the commentary.
+ 	(Executable_Load_Address): New function.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst (Non-Symbolic
+ 	Traceback): Adjust to PIE default on Linux.
+ 	(Symbolic Traceback): Likewise.
+ 	* doc/gnat_ugn/gnat_utility_programs.rst (gnatsymbolize): Likewise.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-28  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* doc/share/conf.py (extensions): Add 'sphinx_rtd_theme'.
+ 	(html_theme): Set to 'sphinx_rtd_theme'.
+ 
+ 2022-11-28  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/g-souinf.ads (Source_Code_Information): Add a new
+ 	volatile abstract state and add it in the global contract of all
+ 	functions defined in Source_Info.
+ 
+ 2022-11-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Actuals.Add_Call_By_Copy_Code): Deal with a
+ 	reference to a validation variable in the actual.
+ 	(Expand_Actuals.Add_Validation_Call_By_Copy_Code): Minor tweak.
+ 	(Expand_Actuals): Call Add_Validation_Call_By_Copy_Code directly
+ 	only if Add_Call_By_Copy_Code is not to be invoked.
+ 
+ 2022-11-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* adaint.c [Linux]: Include <link.h>.
+ 	(__gnat_get_executable_load_address) [Linux]: Enable.
+ 
+ 2022-11-28  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Check_Part_Of_Abstract_State): Add verification
+ 	related to use of Part_Of, so that constituents in private childs
+ 	that refer to state in a sibling or parent unit force that unit to
+ 	have a body.
+ 	* sem_util.adb (Check_State_Refinements): Drop the requirement to
+ 	have always a package body for state refinement, when the package
+ 	state is mentioned in no Part_Of specification.
+ 	* sem_ch3.adb (Analyze_Declarations): Refresh SPARK refs in comment.
+ 	* sem_ch7.adb (Analyze_Package_Declaration): Likewise.
+ 
+ 2022-11-24  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Assignment_Statement>: Add
+ 	assertion that memset is not supposed to be used when the target has
+ 	a storage model with Copy_To routine.
+ 
+ 2022-11-24  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb
+ 	(Find_Direct_Name): Remove bypass to reanalyze incorrectly
+ 	analyzed discriminals.
+ 	(Set_Entity_Or_Discriminal): Avoid resetting the entity field of a
+ 	discriminant reference to be the internally generated renaming
+ 	when we are in strict preanalysis mode.
+ 
+ 2022-11-22  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Depends_Global): Accept aspects on
+ 	abstract subprograms.
+ 
+ 2022-11-22  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* frontend.adb (Frontend): Re-enable Validate_Subprogram_Calls.
+ 	* exp_ch6.adb (Check_BIP_Actuals): When in CodePeer mode, do not
+ 	attempt to validate procedures coming from an
+ 	Elab_Spec/Elab_Body/Elab_Subp_Body procedure.
+ 
+ 2022-11-22  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (To_Be_Removed): Decrease total number of errors when
+ 	removing a warning that has been escalated into error.
+ 	* erroutc.adb (dmsg): Print Warn_Runtime_Raise flag.
+ 
+ 2022-11-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Tag_Assignment): Fix formatting glitches.
+ 
+ 2022-11-22  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* contracts.adb (Build_Subprogram_Contract_Wrapper): Do not fiddle
+ 	with the Was_Expression_Function flag. Move a few lines around.
+ 
+ 2022-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Constant>: Revert
+ 	latest change.
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Object_Declaration>:
+ 	Tweak latest change.
+ 
+ 2022-11-21  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_pakd.adb (Create_Packed_Array_Impl_Type): Do not share PAT
+ 	if sizes of types differ.
+ 
+ 2022-11-21  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Restore
+ 	alphabetical ordering.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Needs_Secondary_Stack): Test Is_Constrained
+ 	directly instead of Is_Definite_Subtype for an array subtype.
+ 
+ 2022-11-21  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/s-rident.ads: Define a new restriction,
+ 	No_Task_Hierarchy_Implicit. This is like the No_Task_Hierarchy
+ 	restriction, but with the difference that setting this restriction
+ 	does not mean the H.6(6) post-compilation check is satisified.
+ 	* exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): If it is
+ 	known that the function result cannot have tasks, then pass in a
+ 	null literal for the activation chain actual parameter. This
+ 	avoids generating a reference to an entity that
+ 	Build_Activation_Chain_Entity may have chosen not to generate a
+ 	declaration for.
+ 	* gnatbind.adb (List_Applicable_Restrictions): Do not list the
+ 	No_Task_Hierarchy_Implicit restriction.
+ 	* restrict.adb: Special treatment for the
+ 	No_Task_Hierarchy_Implicit restriction in functions
+ 	Get_Restriction_Id and Restriction_Active. The former is needed to
+ 	disallow the (unlikely) case that a user tries to explicitly
+ 	reference the No_Task_Hierarchy_Implicit restriction.
+ 	* sem_prag.adb (Analyze_Pragma): If a Sequential
+ 	Partition_Elaboration_Policy is specified (and the
+ 	No_Task_Hierarchy restriction is not already enabled), then enable
+ 	the No_Task_Hierarchy_Implicit restriction.
+ 
+ 2022-11-21  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Use Typ local
+ 	constant throughout, remove Ret_Obj_Typ local constant, rename
+ 	Ref_Type into Acc_Typ in a couple of places, remove a useless call
+ 	to Set_Etype, use a consistent checks suppression scheme, adjust
+ 	comments for the sake of consistencty and alphabetize some local
+ 	declarations.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Remove a couple of
+ 	redundant local constants.
+ 
+ 2022-11-21  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-sttebu.adb (Put): Add missing call to Encode.
+ 	* libgnat/a-strsup.ads: Declare new Put_Image procedure and add
+ 	Put_Image aspect specification for type Super_String.
+ 	* libgnat/a-strsup.adb (Put_Image): New procedure.
+ 	* libgnat/a-stwisu.ads: Declare new Put_Image procedure and add
+ 	Put_Image aspect specification for type Super_String.
+ 	* libgnat/a-stwisu.adb (Put_Image): New procedure.
+ 	* libgnat/a-stzsup.ads: Declare new Put_Image procedure and add
+ 	Put_Image aspect specification for type Super_String.
+ 	* libgnat/a-stzsup.adb (Put_Image): New procedure.
+ 
+ 2022-11-21  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* frontend.adb (Frontend): Disable subprogram call validation.
+ 
+ 2022-11-21  Bob Duff  <duff@adacore.com>
+ 
+ 	* warnsw.ads, warnsw.adb: Move warning flags here from package
+ 	Opt. Rename Warning_Record to be Warnings_State. Use an array
+ 	instead of a record; this simplifies the code. Add renamings of
+ 	all the array components for easy reference outside this package.
+ 	Pass the "Family" to Set_Warning_Switch. Use more table-driven
+ 	code. Misc cleanup and comment fixes.
+ 	* opt.ads: Move warning switches to Warnsw.
+ 	* gnat1drv.adb
+ 	(Adjust_Global_Switches): Expanded names needed.
+ 	* inline.ads: Rename Warning_Record to be Warnings_State.
+ 	* sem_ch12.adb: Likewise.
+ 	* sem_prag.adb: Use new Set_Warning_Switch.
+ 	* contracts.adb, errout.adb, exp_aggr.adb, exp_ch11.adb: Adjust
+ 	imports for move to Warnsw.
+ 	* exp_ch5.adb, exp_prag.adb, exp_util.adb, frontend.adb: Likewise.
+ 	* layout.adb, lib-xref.adb, restrict.adb, scn.adb, sem_aggr.adb:
+ 	Likewise.
+ 	* sem_attr.adb, sem_case.adb, sem_ch10.adb, sem_ch11.adb:
+ 	Likewise.
+ 	* sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, sem_ch5.adb: Likewise.
+ 	* sem_ch6.adb, sem_ch7.adb, sem_ch8.adb, sem_elab.adb: Likewise.
+ 	* sem_eval.adb, sem_res.adb, sem_util.adb, sem_warn.adb: Likewise.
+ 	* switch-c.adb: Likewise.
+ 
+ 2022-11-21  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Improve
+ 	the description of how the -gnatw.h switch interacts with
+ 	"partial" record layout specifications (i.e., specifications where
+ 	the locations of some components are left unspecified).
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-21  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_One_Attr): produce error when Size attribute
+ 	used on aliased object of elementary types with nonconfirming
+ 	value.
+ 
+ 2022-11-21  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sfn_scan.adb (Scan_SFN_Pragmas): Improve handling of comments.
+ 
+ 2022-11-21  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* par-ch3.adb (P_Declarative_Item): Tweak handling of with keyword.
+ 
+ 2022-11-14  Boris Yakobowski  <yakobowski@adacore.com>
+ 
+ 	* sem_case.adb: silence false positive warning emitted by CodePeer
+ 	on predefined equality for type Choice_Range_Info.
+ 
+ 2022-11-14  Bob Duff  <duff@adacore.com>
+ 
+ 	* atree.ads: Remove some comments.
+ 	* err_vars.ads: Likewise.
+ 	* scans.ads: Likewise.
+ 	* sinput.ads: Likewise.
+ 	* checks.ads: Likewise. Also add a "???" comment indicating an
+ 	obsolete comment that is too difficult to correct at this time.
+ 	* sem_attr.adb: Minor comment rewrite.
+ 
+ 2022-11-14  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_intr.adb
+ 	(Expand_Dispatching_Constructor_Call): Improve warning message.
+ 	* freeze.adb
+ 	(Check_No_Parts_Violations): Improve error message.
+ 
+ 2022-11-14  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Document optional
+ 	hardcfr checkpoints.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-14  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* checks.adb
+ 	(Apply_Type_Conversion_Checks): Apply Root_Type to the type of the
+ 	prefix of a Pos attribute when checking whether the type is a
+ 	formal discrete type.
+ 
+ 2022-11-14  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* libgnat/s-regpat.adb
+ 	(Parse): Fix handling of non-capturing parentheses.
+ 
+ 2022-11-14  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Add special case for the special
+ 	local subprogram created for contracts.
+ 
+ 2022-11-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Build_Subprogram_Wrappers): Adjust slocs of the
+ 	copied aspects, just like we do in Build_Class_Wide_Expression for
+ 	inherited class-wide contracts.
+ 
+ 2022-11-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Replace_Formal): Tune whitespace.
+ 	* sem_ch12.adb (Check_Overloaded_Formal_Subprogram): Refine type
+ 	of a formal parameter and local variable; this routine operates on
+ 	nodes and not entities.
+ 	* sem_ch12.ads: Tune whitespace.
+ 
+ 2022-11-14  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Associations): Expand wrappers for
+ 	GNATprove.
+ 
+ 2022-11-14  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* libgnat/system-qnx-arm.ads: Set Support_Atomic_Primitives to
+ 	True.
+ 	* libgnat/system-rtems.ads: Add Support_Atomic_Primitives.
+ 
+ 2022-11-14  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.adb (Error_Msg_Internal): Store span for Optr field, and
+ 	adapt to new type of Optr.
+ 	(Finalize. Output_JSON_Message, Remove_Warning_Messages): Adapt to
+ 	new type of Optr.
+ 	(Output_Messages): Use Optr instead of Sptr to display code
+ 	snippet closer to error.
+ 	* erroutc.adb (dmsg): Adapt to new type of Optr.
+ 	* erroutc.ads (Error_Msg_Object): Make Optr a span like Sptr.
+ 	* errutil.adb (Error_Msg): Likewise.
+ 
+ 2022-11-14  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Remove gnatcheck
+ 	reference.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gnat-style.rst: Moved to...
+ 	* doc/gnat-style/index.rst: ...here.
+ 	* doc/gnat_rm.rst: Moved to...
+ 	* doc/gnat_rm/index.rst: ...here.
+ 	* doc/gnat_ugn.rst: Moved to...
+ 	* doc/gnat_ugn/index.rst: ...here.
+ 	* doc/share/latex_elements.py: Moved to...
+ 	* doc/share/ada_latex_elements.py: ...here.
+ 	* gcc-interface/Make-lang.in:
+ 	* doc/Makefile: Removed.
+ 	* doc/share/conf.py: Removed.
+ 	* doc/share/gnu_free_documentation_license.rst: Removed.
+ 	* gnat-style.texi: Removed.
+ 	* gnat_rm.texi: Removed.
+ 	* gnat_ugn.texi: Removed.
+ 	* doc/gnat-style/conf.py: New file.
+ 	* doc/gnat-style/gnu_free_documentation_license.rst: New file.
+ 	* doc/gnat_rm/conf.py: New file.
+ 	* doc/gnat_rm/gnu_free_documentation_license.rst: New file.
+ 	* doc/gnat_ugn/conf.py: New file.
+ 	* doc/gnat_ugn/gnu_free_documentation_license.rst: New file.
+ 	* doc/share/adabaseconf.py: New file.
+ 	* doc/gnat_rm/security_hardening_features.rst: Add role.
+ 	* doc/gnat_ugn/platform_specific_information.rst: Remove
+ 	duplicate definition of |nbsp|.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/Make-lang.in: Support --with-sphinx-build.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gnat_rm/index.rst: Fix cross manual refs.
+ 
+ 2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	Revert:
+ 	2022-11-14  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/Make-lang.in:
+ 	Support installation if sphinx-build is missing.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/Make-lang.in:
+ 	Support installation if sphinx-build is missing.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gnat_rm/index.rst: Fix cross manual refs.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/Make-lang.in: Support --with-sphinx-build.
+ 
+ 2022-11-09  Martin Liska  <mliska@suse.cz>
+ 
+ 	* doc/gnat-style.rst: Moved to...
+ 	* doc/gnat-style/index.rst: ...here.
+ 	* doc/gnat_rm.rst: Moved to...
+ 	* doc/gnat_rm/index.rst: ...here.
+ 	* doc/gnat_ugn.rst: Moved to...
+ 	* doc/gnat_ugn/index.rst: ...here.
+ 	* doc/share/latex_elements.py: Moved to...
+ 	* doc/share/ada_latex_elements.py: ...here.
+ 	* gcc-interface/Make-lang.in:
+ 	* doc/Makefile: Removed.
+ 	* doc/share/conf.py: Removed.
+ 	* doc/share/gnu_free_documentation_license.rst: Removed.
+ 	* gnat-style.texi: Removed.
+ 	* gnat_rm.texi: Removed.
+ 	* gnat_ugn.texi: Removed.
+ 	* doc/gnat-style/conf.py: New file.
+ 	* doc/gnat-style/gnu_free_documentation_license.rst: New file.
+ 	* doc/gnat_rm/conf.py: New file.
+ 	* doc/gnat_rm/gnu_free_documentation_license.rst: New file.
+ 	* doc/gnat_ugn/conf.py: New file.
+ 	* doc/gnat_ugn/gnu_free_documentation_license.rst: New file.
+ 	* doc/share/adabaseconf.py: New file.
+ 	* doc/gnat_rm/security_hardening_features.rst: Add role.
+ 	* doc/gnat_ugn/platform_specific_information.rst: Remove
+ 	duplicate definition of |nbsp|.
+ 
+ 2022-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.cc (build_allocator): For unconstrained
+ 	array types with a storage model and an initializing expression,
+ 	copy the initialization expression separately from the bounds. In
+ 	all cases with a storage model, pass the locally computed size for
+ 	the store.
+ 
+ 2022-11-08  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_attr.adb
+ 	(Eval_Attribute): Don't simplify 'Image call if Put_Image has been
+ 	specified.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb, exp_put_image.adb, sem_aggr.adb, sem_attr.adb,
+ 	sem_ch5.adb, sem_type.adb, sem_util.adb: Replace
+ 	"Present (Find_Aspect (...))" with "Has_Aspect".
+ 
+ 2022-11-08  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* contracts.adb
+ 	(Preanalyze_Class_Conditions): New procedure.
+ 	(Preanalyze_Condition): Moved out from Merge_Class_Conditions in
+ 	order to be spec-visible.
+ 	* contracts.ads
+ 	(Preanalyze_Class_Conditions): New procedure.
+ 	* sem_prag.adb
+ 	(Analyze_Pre_Post_Condition_In_Decl_Part): Call
+ 	Preanalyze_Class_Conditions when necessary.
+ 
+ 2022-11-08  Johannes Kliemann  <kliemann@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-aarch64.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-arm.ads: Set Support_Atomic_Primitives
+ 	to True.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Set
+ 	Support_Atomic_Primitives to False.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Set
+ 	Support_Atomic_Primitives to False.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Set
+ 	Support_Atomic_Primitives to True.
+ 
+ 2022-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Get_Warn_On_Questionable_Layout): Add void parameter.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Formal_Subprogram): Copy aspect Ghost
+ 	from formal subprogram declaration to the internally generated
+ 	procedure.
+ 
+ 2022-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Case_Expression): Compute the
+ 	interpretations of the expression only at the end of the analysis,
+ 	but skip doing it if it is the operand of a type conversion.
+ 	(Analyze_If_Expression): Likewise.
+ 	* sem_res.adb (Resolve): Deal specially with conditional
+ 	expression that is the operand of a type conversion.
+ 	(Resolve_Dependent_Expression): New procedure.
+ 	(Resolve_Case_Expression): Call Resolve_Dependent_Expression.
+ 	(Resolve_If_Expression): Likewise.
+ 	(Resolve_If_Expression.Apply_Check): Take result type as
+ 	parameter.
+ 	(Resolve_Type_Conversion): Do not warn about a redundant
+ 	conversion when the operand is a conditional expression.
+ 
+ 2022-11-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* debug.adb
+ 	(Debug_Flag_Underscore_XX): Switch -gnatd_X used temporarily to allow
+ 	disabling extra formal checks.
+ 	* exp_attr.adb
+ 	(Expand_N_Attribute_Reference [access types]): Add extra formals
+ 	to the subprogram referenced in the prefix of 'Unchecked_Access,
+ 	'Unrestricted_Access or 'Access; required to check that its extra
+ 	formals match the extra formals of the corresponding subprogram type.
+ 	* exp_ch3.adb
+ 	(Stream_Operation_OK): Declaration moved to the public part of the
+ 	package.
+ 	(Validate_Tagged_Type_Extra_Formals): New subprogram.
+ 	(Expand_Freeze_Record_Type): Improve the code that takes care of
+ 	adding the extra formals of dispatching primitives; extended to
+ 	add also the extra formals to renamings of dispatching primitives.
+ 	* exp_ch3.ads
+ 	(Stream_Operation_OK): Declaration moved from the package body.
+ 	* exp_ch6.adb
+ 	(Check_BIP_Actuals): Complete documentation.
+ 	(Has_BIP_Extra_Formal): Subprogram declaration moved to the public
+ 	part of the package. In addition, a parameter has been added to
+ 	disable an assertion that requires its use with frozen entities.
+ 	(Duplicate_Params_Without_Extra_Actuals): New subprogram.
+ 	(Check_Subprogram_Variant): Emit the call without duplicating the
+ 	extra formals since they will be added when the call is analyzed.
+ 	(Expand_Call_Helper): Ensure that the called subprogram has all its
+ 	extra formals, enforce assertion checking extra formals on thunks,
+ 	and mark calls from thunks as processed-BIP-calls to avoid adding
+ 	their extra formals twice.
+ 	(Is_Build_In_Place_Function): Return False for entities with foreign
+ 	convention.
+ 	(Is_Build_In_Place_Function_Call): Return True also for not BIP functions
+ 	that have BIP formals since the extra actuals are required.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Occurrences of
+ 	Is_Return_Object replaced by the local variable Is_OK_Return_Object
+ 	that evaluates to False for scopes with foreign convention.
+ 	(Might_Have_Tasks): Fix check of class-wide limited record types.
+ 	(Needs_BIP_Task_Actuals): Remove assertion to allow calling this
+ 	function in more contexts; in addition it returns False for functions
+ 	returning objects with foreign convention.
+ 	(Needs_BIP_Finalization_Master): Likewise.
+ 	(Needs_BIP_Alloc_Form): Likewise.
+ 	(Validate_Subprogram_Calls): Check that the number of actuals (including
+ 	extra actuals) of calls in the subtree N match their corresponding
+ 	formals.
+ 	* exp_ch6.ads
+ 	(Has_BIP_Extra_Formal): Subprogram declaration moved to the public
+ 	part of the package. In addition, a parameter has been added to
+ 	disable an assertion that requires its use with frozen entities.
+ 	(Is_Build_In_Place_Function_Call): Complete documentation.
+ 	(Validate_Subprogram_Calls): Check that the number of actuals (including
+ 	extra actuals) of calls in the subtree N match their corresponding
+ 	formals.
+ 	* freeze.adb
+ 	(Check_Itype): Add extra formals to anonymous access subprogram itypes.
+ 	(Freeze_Expression): Improve code that disables the addition of extra
+ 	formals to functions with foreign convention.
+ 	(Check_Extra_Formals): Moved to package Sem_Ch6 as Extra_Formals_OK.
+ 	(Freeze_Subprogram): Add extra formals to non-dispatching subprograms.
+ 	* frontend.adb
+ 	(Frontend): Validate all the subprogram calls; it can be disabled using
+ 	switch -gnatd_X
+ 	* sem_ch3.adb
+ 	(Access_Subprogram_Declaration): Defer the addition of extra formals to
+ 	the freezing point so that we know the convention.
+ 	(Check_Anonymous_Access_Component): Likewise.
+ 	(Derive_Subprogram): Fix documentation.
+ 	* sem_ch6.adb
+ 	(Has_Reliable_Extra_Formals): New subprogram.
+ 	(Check_Anonymous_Return): Fix check of access to class-wide limited
+ 	record types.
+ 	(Check_Untagged_Equality): Placed in alphabetical order.
+ 	(Extra_Formals_OK): Subprogram moved from freeze.adb.
+ 	(Extra_Formals_Match_OK): New subprogram.
+ 	(Has_BIP_Formals): New subprogram.
+ 	(Has_Extra_Formals): New subprograms.
+ 	(Needs_Accessibility_Check_Extra): New subprogram.
+ 	(Parent_Subprogram): New subprogram.
+ 	(Add_Extra_Formal): Minor code cleanup.
+ 	(Create_Extra_Formals): Enforce matching extra formals on overridden
+ 	and aliased entities.
+ 	* sem_ch6.ads
+ 	(Extra_Formals_Match_OK): New subprogram.
+ 	(Extra_Formals_OK): Subprogram moved from freeze.adb.
+ 	* sem_eval.adb
+ 	(Compile_Time_Known_Value): Improve predicate to avoid assertion
+ 	failure; found working on this ticket; this change does not
+ 	affect the behavior of the compiler because this subprogram
+ 	has an exception handler that returns False when the assertion
+ 	fails.
+ 	* sem_util.adb
+ 	(Needs_Result_Accessibility_Level): Do not return False for dispatching
+ 	operations compiled with Ada_Version < 2012 since they they may be
+ 	overridden by primitives compiled with Ada_Version >= Ada_2012.
+ 
+ 2022-11-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* warnsw.ads, warnsw.adb, fe.h, err_vars.ads, errout.ads: Move
+ 	Warning_Doc_Switch from Err_Vars to Warnsw. Access
+ 	Warn_On_Questionable_Layout on the C side via a function rather
+ 	than a variable, because we plan to turn the variables into
+ 	renamings, and you can't Export renamings.
+ 	* erroutc.adb, switch-c.adb, errout.adb: Likewise.
+ 	* gcc-interface/decl.cc: Use Get_Warn_On_Questionable_Layout
+ 	instead of Warn_On_Questionable_Layout.
+ 	* gcc-interface/Makefile.in (GNATMAKE_OBJS): Add warnsw.o, because
+ 	it is indirectly imported via Errout.
+ 	* gcc-interface/Make-lang.in (GNATBIND_OBJS): Likewise and remove
+ 	restrict.o (not needed).
+ 
+ 2022-11-08  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(-gnatwc): Fix flag documentation.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-08  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch3.adb
+ 	(Analyze_Object_Declaration): Do not perform expansion actions if
+ 	In_Spec_Expression is true.
+ 
+ 2022-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Qualified_Expression): Analyze the
+ 	expression only after setting the type.
+ 	(Analyze_Unchecked_Type_Conversion): Likewise.
+ 	(Analyze_Short_Circuit): Likewise for the operands.
+ 	(Analyze_Type_Conversion): Minor tweaks.
+ 	(Analyze_Unchecked_Expression): Likewise.
+ 
+ 2022-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Qualified_Expression): Remove redundant
+ 	line.
+ 
+ 2022-11-08  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* contracts.adb (Preanalyze_Condition): Use
+ 	Preanalyze_Spec_Expression.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_imgv.adb
+ 	(Expand_Wide_Image_Attribute): Handle just like attribute Image.
+ 	(Expand_Wide_Wide_Image_Attribute): Likewise.
+ 	* exp_put_image.adb
+ 	(Build_Image_Call): Adapt to also work for Wide and Wide_Wide
+ 	attributes.
+ 	* exp_put_image.ads
+ 	(Build_Image_Call): Update comment.
+ 	* rtsfind.ads
+ 	(RE_Id): Support wide variants of Get.
+ 	(RE_Unit_Table): Likewise.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-ngcoar.ads, libgnat/a-ngcoar.adb: Remove extra spaces.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Validate_Formal_Type_Default): Remove call to
+ 	Collect_Interfaces, which had no effect apart from populating a
+ 	list that was not used; fix style.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_spark.adb (SPARK_Freeze_Type): Refine type of a local
+ 	object.
+ 	* sem_ch3.adb (Derive_Subprograms): Remove initial value for
+ 	New_Subp, which is in only written as an out parameter and never
+ 	read.
+ 
+ 2022-11-08  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_If_Expression): Remove obsolete special
+ 	case.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Aggregate): Implement rules related
+ 	to limited objects appearing as the base expression.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (OK_For_Limited_Init_In_05): Handle delta aggregates
+ 	just like other aggregates.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Record_Aggregate): Reject
+ 	expressions of a limited types.
+ 
+ 2022-11-08  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_ch9.adb
+ 	(Build_Master_Entity): Handle missing case: when the context of
+ 	the master is a BIP function whose result type has tasks.
+ 
+ 2022-11-08  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-tags.adb
+ 	(Interface_Ancestor_Tags): Raise Tag_Error on No_Tag.
+ 	(Is_Descendant_At_Same_Level): Likewise.
+ 
+ 2022-11-08  Bob Duff  <duff@adacore.com>
+ 
+ 	* usage.adb: Add -gnatw_q and -gnatw_Q.
+ 
+ 2022-11-07  Cedric Landet  <landet@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Mention the needed
+ 	-no-pie for windows to use gprof.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.adb (Hash): Tune hash function.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Non_Significant_Pragma_Reference): Detect
+ 	references with aggregates; only assign local variables Id and C
+ 	when necessary.
+ 
+ 2022-11-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb
+ 	(Component_Equality, Expand_Array_Equality)
+ 	(Expand_Record_Equality): Use named notation.
+ 
+ 2022-11-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb
+ 	(Expand_Array_Equality): Do not test Ltyp = Rtyp here, because
+ 	that is necessarily true. Move assertion thereof to more general
+ 	place.
+ 	(Expand_Composite_Equality): Pass in Outer_Type, for use in
+ 	warnings. Rename Typ to be Comp_Type, to more clearly distinguish
+ 	it from Outer_Type. Print warning when appropriate.
+ 	* exp_ch4.ads: Minor comment fix.
+ 	* errout.ads: There is no such pragma as Warning_As_Pragma --
+ 	Warning_As_Error must have been intended. Improve comment for ?x?.
+ 	* exp_ch3.adb
+ 	(Build_Untagged_Equality): Update comment to be accurate for more
+ 	recent versions of Ada.
+ 	* sem_case.adb
+ 	(Choice_Analysis): Declare user-defined "=" functions as abstract.
+ 	* sem_util.ads
+ 	(Is_Bounded_String): Give RM reference in comment.
+ 	* warnsw.ads, warnsw.adb
+ 	(Warn_On_Ignored_Equality): Implement new warning switch -gnatw_q.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Document new warning switch.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aux.ads (Is_Body): Annotate with Inline.
+ 	* sem_util.ads (Is_Body_Or_Package_Declaration): Likewise.
+ 
+ 2022-11-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* freeze.adb
+ 	(Build_Inherited_Condition_Pragmas): Do nothing if A_Post is
+ 	empty.
+ 
+ 2022-11-07  Quentin Ochem  <ochem@adacore.com>
+ 	    Steve Baird  <baird@adacore.com>
+ 
+ 	* bindgen.adb: fixed the way the device init and final symbols are
+ 	computed, re-using the normal way these symbols would be computed
+ 	with a __device_ prefix. Also fixed the "is null;" procedure on
+ 	the host side which are not Ada 95, replaced with a procedure
+ 	raising an exception as it should never be called. Remove the
+ 	unused function Device_Ada_Final_Link_Name.
+ 
+ 2022-11-07  Steve Baird  <baird@adacore.com>
+ 
+ 	* opt.ads: Declare new string pointer variable, CUDA_Device_Library_Name.
+ 	Modify comments for existing Boolean variable Enable_CUDA_Device_Expansion.
+ 	* switch-b.adb: When "-d_c" switch is encountered, check that the next
+ 	character is an "'='; use the remaining characters to initialize
+ 	Opt.CUDA_Device_Library_Name.
+ 	* bindgen.adb: Remove (for now) most support for host-side invocation of
+ 	device-side finalization. Make use of the new CUDA_Device_Library_Name
+ 	in determining the string used to refer (on the host side) to the
+ 	device-side initialization procedure. Declare the placeholder routine
+ 	that is named in the CUDA_Execute pragma (and the CUDA_Register_Function
+ 	call) as an exported null procedure, rather than as an imported procedure.
+ 	It is not clear whether it is really necessary to specify the link-name
+ 	for this should-never-be-called subprogram on the host side, but for now it
+ 	shouldn't hurt to do so.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Protected_Subprogram_Call): Examine scope
+ 	tree and not the scope stack.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* mdll.ads (Build_Import_Library): Fix grammar in comment.
+ 	* mdll.adb (Build_Import_Library): Directly execute code of a
+ 	nested routine; rename No_Lib_Prefix to Strip_Lib_Prefix.
+ 
+ 2022-11-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_warn.adb
+ 	(Check_For_Warnings): Remove unnecessary exception handler.
+ 	(Warn_On_Known_Condition): Suppress warning when we detect a True
+ 	or False that has been turned into a more complex expression
+ 	because True is represented as "nonzero". (Note that the complex
+ 	expression will subsequently be constant-folded to a Boolean True
+ 	or False). Also simplify to always print "condition is always ..."
+ 	instead of special-casing object names. The special case was
+ 	unhelpful, and indeed wrong when the expression is a literal.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Safe_To_Capture_In_Parameter_Value): Remove.
+ 	* sem_util.adb (Safe_To_Capture_Value): Stop search at the current
+ 	body.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_In_Out): Remove No_ prefix; flip return
+ 	values between True and False; adapt caller.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Add_Call): Just look at Instantiation_Depth.
+ 	* sem_ch3.adb (Derive_Subprograms): Likewise.
+ 	* sem_warn.adb (Check_References): Remove redundant filtering with
+ 	Instantiation_Depth that follows filtering with
+ 	Instantiation_Location.
+ 	* sinput.adb (Instantiation_Depth): Reuse Instantiation_Location.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb
+ 	(No_Warn_On_In_Out): For subprograms we can simply call
+ 	Warnings_Off.
+ 	(Output_Non_Modified_In_Out_Warnings): Remove repeated
+ 	suppression.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Delta_Array_Aggregate): Reject boxes in
+ 	delta array aggregates.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Enclosing_Declaration_Or_Statement): Moved to
+ 	Sem_Util.
+ 	* sem_util.ads (Enclosing_Declaration_Or_Statement): Moved from
+ 	Sem_Res.
+ 	* sem_util.adb (Enclosing_Declaration_Or_Statement): Likewise.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve): Only call Comes_From_Predefined_Lib_Unit
+ 	when its result might be needed.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Generic_Actuals): Remove redundant parens;
+ 	refactor an excessive if-statement; remove repeated call to Node.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Establish_Actual_Mapping_For_Inlined_Call): Move
+ 	comment next to a condition that it describes.
+ 
+ 2022-11-07  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_put_image.adb
+ 	(Image_Should_Call_Put_Image): Correctly handle the case of an
+ 	inherited Put_Image aspect specification for a scalar type.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb: Tune whitespace.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnarl/s-interr.adb: Reorder context items and pragmas.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb
+ 	(Expand_Modular_Addition): Rewrite using Make_XXX calls.
+ 	(Expand_Modular_Op): Likewise.
+ 	(Expand_Modular_Subtraction): Likewise.
+ 	* exp_imgv.adb
+ 	(Expand_User_Defined_Enumeration_Image): Likewise.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Apply_Arithmetic_Overflow_Strict): Rewrite using a
+ 	newly created operator node.
+ 	* exp_ch4.adb (Expand_Array_Comparison): Likewise.
+ 	* exp_ch6.adb (Add_Call_By_Copy_Code): Rewriting actual parameter
+ 	using its own location and not the location of the subprogram
+ 	call.
+ 	* sem_warn.adb (Check_References): Looping with Original_Node is
+ 	no longer needed.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Is_In_Context_Clause): Rewrite without negations
+ 	and inequalities.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma [Pragma_Obsolescent]): Reject
+ 	misplaced pragma.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Output_Obsolescent_Entity_Warnings): Tag warnings
+ 	about obsolescent functions just like we tag similar warnings for
+ 	packages and procedures.
+ 
+ 2022-11-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Remove useless
+ 	skipping for attribute Input.
+ 
+ 2022-11-04  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Skip operand
+ 	validity checks for attributes Has_Same_Storage and
+ 	Overlaps_Storage.
+ 
+ 2022-11-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* errout.adb (Remove_Warning_Messages.Check_For_Warning): Do not
+ 	reinstate the Original_Node in the tree.
+ 	* exp_aggr.adb (Build_Array_Aggr_Code.Gen_Loop): Copy the bounds
+ 	on all paths.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/g-excact.ads
+ 	(Register_Global_Action): Refill comment.
+ 	(Name_To_Id): Change pragma Restriction from singular to plural.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Remove redundant guard, as it
+ 	is implied by a preceding call to Referenced_Check_Spec.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Remove useless query for "spec"
+ 	of a variable; refactor nested if-statements into a single
+ 	condition.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb
+ 	(In_Pragma_Expression): Add standard guard against searching too
+ 	far.
+ 	(In_Quantified_Expression): Likewise.
+ 	* sem_warn.adb
+ 	(May_Need_Initialized_Actual): Remove redundant parens.
+ 	(Check_References): Remove guard that duplicates a condition from
+ 	the enclosing if-statement; only assign E1T variable when
+ 	necessary.
+ 	(Within_Postcondition): Fix layout.
+ 	(No_Warn_On_In_Out): Balance parens in comment.
+ 
+ 2022-11-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Add the standard
+ 	'... "On" enables this extension.' sentence to the description of
+ 	static intrinsic functions.
+ 	* sem_ch13.adb
+ 	(Analyze_Aspect_Spec): In the call to Error_Msg_GNAT_Extension for
+ 	a Static aspect specification for an intrinsic function, specify
+ 	Is_Core_Extension => True.
+ 	* sem_eval.adb
+ 	(Eval_Intrinsic_Call): Test Core_Extensions_Allowed instead of
+ 	testing All_Extensions_Allowed.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* aspects.adb (Relocate_Aspect): Remove call to Set_Has_Aspects.
+ 	* sem_ch12.adb (Analyze_Formal_Package_Declaration): Likewise.
+ 	* sem_util.adb (Copy_Ghost_Aspect, Copy_SPARK_Mode_Aspect):
+ 	Likewise.
+ 
+ 2022-11-04  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_intr.adb
+ 	(Expand_Dispatching_Constructor_Call): Report an error on
+ 	unsupported dispatching constructor calls and report a warning on
+ 	calls that may fail at run time.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb
+ 	(Check_Components): Iterate using
+ 	First/Next_Component_Or_Discriminant.
+ 	(Has_Preelaborable_Initialization): Avoid repeated iteration with
+ 	calls to Check_Components with First_Entity and
+ 	First_Private_Entity.
+ 	(Is_Independent_Object_Entity): Tune indentation.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch7.adb (Clear_Constants): Only iterate from First_Entity
+ 	through Next_Entity; only examine variables because packages have
+ 	no assignable formal parameters.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix
+ 	typos.
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Fix typos
+ 	and refill as necessary; remove trailing whitespace.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix typos.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-04  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_util.ads (Add_Block_Identifier): Add new extra Scope
+ 	argument.
+ 	* sem_util.adb (Add_Block_Identifier): Likewise and use this scope
+ 	variable instead of Current_Scope.
+ 	* exp_util.adb (Wrap_Statements_In_Block): Add new scope argument
+ 	to Add_Block_Identifier call.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Kill_Current_Values): Only iterate from
+ 	First_Entity through Next_Entity.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch6.adb (Controlling_Formal): Iterate with First/Next_Formal
+ 	and not with First/Next_Entity.
+ 
+ 2022-11-04  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb
+ 	(Expand_Interface_Conversion): Fix typo in comment.
+ 
+ 2022-11-04  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_disp.adb
+ 	(Expand_Interface_Conversion): Under configurable runtime, when
+ 	the target type is an interface that is an ancestor of the operand
+ 	type, skip generating code to displace the pointer to reference
+ 	the target dispatch table.
+ 	* sem_disp.adb
+ 	(Propagate_Tag): Handle class-wide types when checking for the
+ 	addition of an implicit interface conversion.
+ 
+ 2022-11-04  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* doc/gnat_rm/standard_library_routines.rst: Fix typo.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-11-04  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sa_messages.ads, sa_messages.adb: Remove files.
+ 
+ 2022-11-04  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* checks.adb, exp_atag.adb, exp_attr.adb, exp_ch4.adb, exp_ch6.adb,
+ 	exp_ch7.adb, exp_dbug.adb, exp_disp.adb, exp_unst.adb, exp_util.adb,
+ 	freeze.adb, layout.adb, pprint.adb, rtsfind.adb, sem_aggr.adb,
+ 	sem_attr.adb, sem_case.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb,
+ 	sem_ch5.adb, sem_ch6.adb, sem_ch8.adb, sem_dim.adb, sem_prag.adb,
+ 	sem_util.adb, sem_warn.adb:
+ 	Replace uses of `not Present (X)` with `No (X)`.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo.ads: Fix typos in comments; refill as necessary.
+ 	* sinfo.ads: Likewise.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst: Fix typos.
+ 	* doc/gnat_rm/implementation_defined_attributes.rst: Likewise
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Likewise
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Likewise
+ 	* doc/gnat_rm/standard_library_routines.rst: Likewise.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch8.adb (Restore_Scope_Stack): Remove elements from the head
+ 	and not the tail of an element list.
+ 
+ 2022-11-04  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* sinfo.ads: Small editorial changes.
+ 
+ 2022-11-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* opt.ads: Replace Ada_Version_Type enumeration literal
+ 	Ada_With_Extensions with two literals, Ada_With_Core_Extensions
+ 	and Ada_With_All_Extensions. Update uses of the deleted literal.
+ 	Replace Extensions_Allowed function with two functions:
+ 	All_Extensions_Allowed and Core_Extensions_Allowed.
+ 	* errout.ads, errout.adb: Add Boolean parameter to
+ 	Error_Msg_GNAT_Extension to indicate whether the construct in
+ 	question belongs to the curated subset.
+ 	* exp_ch5.adb, par-ch4.adb, sem_case.adb, sem_ch3.adb:
+ 	* sem_ch4.adb, sem_ch5.adb, sem_ch8.adb: Replace calls to
+ 	Extensions_Allowed with calls to Core_Extensions_Allowed for
+ 	constructs that are in the curated subset.
+ 	* sem_attr.adb, sem_ch13.adb, sem_eval.adb, sem_util.adb: Replace
+ 	calls to Extensions_Allowed with calls to All_Extensions_Allowed
+ 	for constructs that are not in the curated subset.
+ 	* par-ch3.adb: Override default for new parameter in calls to
+ 	Error_Msg_GNAT_Extension for constructs in the curated subset.
+ 	* par-prag.adb: Add Boolean parameter to Check_Arg_Is_On_Or_Off to
+ 	also allow ALL. Set Opt.Ada_Version appropriately for ALL or ON
+ 	arguments.
+ 	* sem_prag.adb: Allowed ALL argument for an Extensions_Allowed
+ 	pragma. Set Opt.Ada_Version appropriately for ALL or ON arguments.
+ 	* switch-c.adb: The -gnatX switch now enables only the curated
+ 	subset of language extensions (formerly it enabled all of them);
+ 	the new -gnatX0 switch enables all of them.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Document new "-gnatX0" switch and update documentation for
+ 	"-gnatX" switch.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Document new ALL
+ 	argument for pragma Extensions_Allowed and update documentation
+ 	for the ON argument. Delete mention of Ada 2022 Reduce attribute
+ 	as an extension.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* bindgen.adb: Introduce two new string constants for the names of
+ 	the C-String variables that are assigned the names for adainit and
+ 	adafinal. Replace string literals in Gen_CUDA_Init with references
+ 	to these constants. In Gen_CUDA_Defs, generate C-String variable
+ 	declarations where these constants are the names of the variables.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch9.adb (Satisfies_Lock_Free_Requirements): Ignore
+ 	references to global variables inserted due to pragma
+ 	Initialize_Scalars.
+ 
+ 2022-11-04  Cedric Landet  <landet@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Remove VxWorks
+ 	version 6.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-11-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch9.adb (Satisfies_Lock_Free_Requirements): Detect
+ 	references via expanded names.
+ 
+ 2022-11-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* bindgen.adb
+ 	(Gen_CUDA_Init): Move existing loop body into a new local
+ 	procedure, Gen_CUDA_Register_Function_Call, and replace that loop
+ 	body with a call to this procedure. This first part is just
+ 	semantics-preserving refactoring. The second part is to add
+ 	Gen_CUDA_Register_Function_Call calls after the loop for the
+ 	device-side adainit and adafinal procedures.
+ 
+ 2022-10-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/system-linux-sparc.ads (Support_Atomic_Primitives): New
+ 	constant set to True.
+ 
+ 2022-10-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.def (LOAD_EXPR): New expression code.
+ 	* gcc-interface/gigi.h (build_storage_model_load): Declare.
+ 	(build_storage_model_store): Likewise.
+ 	(instantiate_load_in_expr): Likewise.
+ 	(INSTANTIATE_LOAD_IN_EXPR): New macro.
+ 	(instantiate_load_in_array_ref): Declare.
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Type>: Set a
+ 	fake discriminant number on the fields of the template type.
+ 	(gnat_to_gnu_field): Use integer for DECL_DISCRIMINANT_NUMBER.
+ 	* gcc-interface/misc.cc (gnat_init_ts): Mark LOAD_EXPR as typed.
+ 	* gcc-interface/trans.cc (fold_constant_decl_in_expr) <ARRAY_REF>:
+ 	Also preserve the 4th operand.
+ 	(Attribute_to_gnu): Deal with LOAD_EXPR of unconstrained array type.
+ 	<Attr_Size>: Call INSTANTIATE_LOAD_IN_EXPR for a storage model.
+ 	<Attr_Length>: Likewise.
+ 	<Attr_Bit_Position>: Likewise.
+ 	(get_storage_model): New function.
+ 	(get_storage_model_access): Likewise.
+ 	(storage_model_access_required_p): Likewise.
+ 	(Call_to_gnu): Add GNAT_STORAGE_MODEL parameter and deal with it.
+ 	Also deal with actual parameters that have a storage model.
+ 	(gnat_to_gnu) <N_Object_Declaratio>: Adjust call to Call_to_gnu.
+ 	<N_Explicit_Dereference>: Deal with a storage model access.
+ 	<N_Indexed_Component>: Likewise.
+ 	<N_Slice>: Likewise.
+ 	<N_Selected_Component>: Likewise.
+ 	<N_Assignment_Statement>: Adjust call to Call_to_gnu.  Deal with a
+ 	storage model access either on the LHS, on the RHS or on both.
+ 	<N_Function_Cal>: Adjust call to Call_to_gnu.
+ 	<N_Free_Statement>: Deal with a pool that is a storage model.
+ 	Replace test for UNCONSTRAINED_ARRAY_REF with test on the type.
+ 	(gnat_gimplify_expr) <CALL_EXPR>: Tidy up.
+ 	<LOAD_EXPR>: New case.
+ 	<UNCONSTRAINED_ARRAY_REF>: Move down.
+ 	* gcc-interface/utils.cc (maybe_unconstrained_array): Deal with a
+ 	LOAD_EXPR by recursing on its first operand.
+ 	* gcc-interface/utils2.cc (build_allocator): Deal with a pool that
+ 	is a storage model.
+ 	(build_storage_model_copy): New function.
+ 	(build_storage_model_load): Likewise.
+ 	(build_storage_model_store): Likewise.
+ 	(instantiate_load_in_expr): Likewise.
+ 	(instantiate_load_in_array_ref): Likewise.
+ 	(gnat_rewrite_reference) <ARRAY_REF>: Also preserve the 4th operand.
+ 	(get_inner_constant_reference) <ARRAY_REF>: Remove useless test.
+ 	(gnat_invariant_expr) <ARRAY_REF>: Rewrite test.
+ 
+ 2022-10-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch6.adb
+ 	(Analyze_Procedure_Call): Replace "return;" with "goto Leave;", as
+ 	per comment preceding body of Analyze_Procedure_Call.
+ 
+ 2022-10-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch9.adb (Allows_Lock_Free_Implementation): Reject
+ 	conditional goto statements.
+ 
+ 2022-10-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst
+ 	(Lock_Free): Remove inconsistent periods that end item
+ 	descriptions.
+ 	* sem_ch9.adb
+ 	(Allows_Lock_Free_Implementation): Remove unnecessary guard
+ 	against an empty list of parameters; replace low-level entity kind
+ 	membership test with a high-level query; refill error message.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-10-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Add examples of
+ 	codegen changes in hardened conditionals.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-10-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Add examples of
+ 	codegen changes in hardened booleans. Mention that C traps where
+ 	Ada raises exceptions.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-10-06  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Add examples of
+ 	codegen changes in stack scrubbing.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-10-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Lock_Free_Protected_Subprogram_Body): Replace
+ 	shallow copy of protected statements with a deep copy.
+ 
+ 2022-10-06  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* fe.h (Has_Storage_Model_Type_Aspect)
+ 	(Has_Designated_Storage_Model_Aspect, Storage_Model_Object)
+ 	(Storage_Model_Copy_From, Storage_Model_Copy_To): Add
+ 	declarations.
+ 	* sem_util.ads: Add WARNING markers for functions for which a new
+ 	C declaration has been added in fe.h
+ 
+ 2022-10-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_util.adb
+ 	(Get_Current_Value_Condition): Treat references occurring within
+ 	the condition of an if statement, an elsif, or a while loop in the
+ 	same way as references that occur before the start of that
+ 	enclosing construct.
+ 
+ 2022-10-06  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Call): Add test of Comes_From_Source on the
+ 	enclosing subprogram's Entity_Id for determining whether to
+ 	perform the compile-time accessibility check on actuals passed to
+ 	aliased formals in a function call occurring within a return
+ 	statement. That test excludes cases where the call occurs within
+ 	the return statement of a Pre'Class wrapper function.
+ 
+ 2022-10-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb
+ 	(Expand_Assign_Array_Loop_Or_Bitfield): Minor cleanups.
+ 
+ 2022-10-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Ignore one variant of pragma
+ 	Warnings in GNATprove mode.
+ 
+ 2022-10-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb
+ 	(Expand_Assign_Array_Loop_Or_Bitfield): Disable the
+ 	Fast_Copy_Bitfield optimization in certain cases.
+ 
+ 2022-10-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb
+ 	(Sig_Pragma): Change flag for pragma Refined_State to mean "not
+ 	significant"; this is primarily for documentation, because the
+ 	exact value of the flag is not really taken into account for
+ 	Refined_State.
+ 	(Is_Non_Significant_Pragma_Reference): Add special handling for
+ 	pragma Refined_State.
+ 
+ 2022-09-29  Ronan Desplanques  <desplanques@adacore.com>
+ 
+ 	* einfo.ads: remove documentation duplicate
+ 
+ 2022-09-29  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* contracts.adb (Build_Subprogram_Contract_Wrapper): Put back the
+ 	extended return statement if the result type is built-in-place.
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result): Also expect an
+ 	extended return statement.
+ 
+ 2022-09-29  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb
+ 	(Expand_Assign_Array_Loop_Or_Bitfield): Make the checks for
+ 	volatile and independent objects more precise.
+ 
+ 2022-09-29  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Collect_Visible_States): Ignore package renamings.
+ 
+ 2022-09-26  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst: Rename Valid_Image.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Build_Instance_Compilation_Unit_Nodes): Relocate
+ 	auxiliary declarations from the original compilation unit to the
+ 	newly created compilation unit for the spec.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* rtsfind.ads
+ 	(RTU_Id): Remove unreferenced packages; fix whitespace.
+ 	(RE_Id): Remove unreferenced entities; add comment about entity
+ 	that is only used by GNATprove and not by GNAT.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* s-oscons-tmplt.c (STR, STR1): Remove.
+ 
+ 2022-09-26  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(-gnateT): Document new parameter Long_Long_Long_Size.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-26  Steve Baird  <baird@adacore.com>
+ 
+ 	* bindgen.adb: When the binder is invoked for the device, specify
+ 	the CUDA_Global aspect for the adainit and adafinal procedures via
+ 	a pragma instead of via an aspect_specification.
+ 
+ 2022-09-26  Kévin Le Gouguec  <legouguec@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(Linker Switches): Document support for mold along with gold; add some
+ 	advice regarding OpenSSL in the Pro version.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-26  Tucker Taft  <taft@adacore.com>
+ 
+ 	* sem_util.adb (Original_Aspect_Pragma_Name): Check for Check
+ 	pragmas.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Delay expansion
+ 	based on Full_Analysis flag.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Delay expansion of
+ 	for iterated component association just like it is done within
+ 	quantified expression.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* contracts.adb (Analyze_Object_Contract): Check SPARK_Mode before
+ 	applying SPARK rule.
+ 
+ 2022-09-26  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb
+ 	(Accessibility_Level): Modify indexed and selected components case
+ 	by reducing the scope where Original_Node gets used.
+ 
+ 2022-09-26  Boris Yakobowski  <yakobowski@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation for
+ 	gnatmetric.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gsocket.h: Remove redefinition of _WIN32_WINNT.
+ 	* mingw32.h: Remove conditional definition of _WIN32_WINNT.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* mingw32.h: Remove condition definition of MAXPATHLEN; the include
+ 	directive for stdlib.h was most likely intended to provide the
+ 	MAX_PATH.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* adaint.c: Remove conditional #include directives for old MinGW.
+ 	* cal.c: Always include winsock.h, since it is part of modern
+ 	MinGW.
+ 	* cstreams.c: Remove workaround for old MinGW.
+ 	* expect.c: Remove conditional #include directive for old MinGW.
+ 	* mingw32.h: Remove STD_MINGW and OLD_MINGW declarations.
+ 	* sysdep.c: Remove conditional #include directive for old MinGW.
+ 
+ 2022-09-26  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.ads (Has_Junk_Name): Reword comment.
+ 
+ 2022-09-20  Martin Liska  <mliska@suse.cz>
+ 
+ 	* exp_ch6.adb: Replace "the the" with "the".
+ 	* sem_ch6.adb: Likewise.
+ 	* sem_disp.ads: Likewise.
+ 
+ 2022-09-15  Richard Biener  <rguenther@suse.de>
+ 
+ 	* gcc-interface/trans.cc (gigi): Do not initialize void_list_node.
+ 
+ 2022-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity): Relax assertion when
+ 	front-end unnesting is enabled.
+ 
+ 2022-09-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb
+ 	(Innermost_Master_Scope_Depth): Detect and handle case where scope
+ 	depth is not set on an enclosing scope.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* bindgen.adb: When the binder is invoked for the host, generate a
+ 	"with CUDA.Internal;" with clause.
+ 
+ 2022-09-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst
+ 	(Pragma Unreferenced): Sync description with
+ 	Sem_Warn.Has_Junk_Name routine.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute [Valid_Scalars]): Move check for
+ 	unchecked union before checks for private and public types.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* bindgen.adb: When the binder is invoked for the host, it
+ 	declares imported subprograms corresponding to the Adainit and
+ 	Adafinal routines on the device. Declare string constants and
+ 	expression functions for the Ada source names and the link names
+ 	of these routines. Generate these subprogram declarations (and
+ 	accompanying Import pragmas) in Gen_CUDA_Defs. Generate
+ 	CUDA_Execute pragmas to call these subprograms from the host in
+ 	Gen_Adafinal and Gen_CUDA_Init. When the binder is invoked for the
+ 	device, include a CUDA_Global aspect declaration in the
+ 	declarations of Adainit and Adafinal and use the aforementioned
+ 	link names in the Export pragmas generated for those two routines.
+ 	* debug.adb: Update comments about "d_c" and "d_d" switches.
+ 	* opt.ads: Declare new Boolean variable,
+ 	Enable_CUDA_Device_Expansion. This complements the existing
+ 	Enable_CUDA_Expansion variable, which is used to enable host-side
+ 	CUDA expansion. The new variable enables device-side CUDA
+ 	expansion. It is currently never set during compilation; it is
+ 	only set via a binder switch.
+ 	* switch-b.adb
+ 	(scan_debug_switches): Add new use of the "-d_d" binder switch.
+ 	The new switch and the variable Opt.Enabled_CUDA_Device_Expansion
+ 	follow the existing pattern of the "-d_c" switch and the variable
+ 	Opt.Enabled_CUDA_Expansion. Flag error if both "-d_c" and "-d_d"
+ 	are specified.
+ 
+ 2022-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* contracts.adb (Build_Subprogram_Contract_Wrapper): Remove useless
+ 	local variable. In the case of a function, replace the extended
+ 	return statement by a block statement declaring a renaming of the
+ 	call to the local subprogram after removing side effects manually.
+ 	(Expand_Subprogram_Contract): Adjust description accordingly.
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Rewrite obsolete
+ 	comment and do not apply the transformation twice.
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result): Now expect a block
+ 	statement instead of an extended return statement.
+ 
+ 2022-09-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* erroutc.adb (Set_Msg_Insertion_Name): Special-case printing with
+ 	acronyms.
+ 
+ 2022-09-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-imagei.adb (Image_Integer): Add justification.
+ 
+ 2022-09-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Get_SPARK_Mode_Type): Fix header box; replace
+ 	chained IF with a CASE statement.
+ 
+ 2022-09-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Accept SPARK_Mode=>Auto as
+ 	configuration pragma.
+ 	(Get_SPARK_Mode): Make the value for Auto explicit.
+ 	* snames.ads-tmpl (Name_Auto): Add name.
+ 
+ 2022-09-12  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* doc/gnat_rm/the_gnat_library.rst: Remove paragraphs about SPARK
+ 	containers.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-maccod.ads: Mark package as SPARK_Mode Off.
+ 
+ 2022-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Unnest_Subprogram_Mode): Declare.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* contracts.adb
+ 	(Analyze_Package_Contract): Do not analyze the contract of a
+ 	temporary package created just to check conformance of an actual
+ 	package.
+ 
+ 2022-09-12  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* Makefile.rtl: Remove SPARK containers filenames.
+ 	* impunit.adb: Remove SPARK containers packages names.
+ 	* libgnat/a-cfdlli.adb, libgnat/a-cfdlli.ads: Remove content and
+ 	add pragma Compile_Time_Error with suitable message.
+ 	* libgnat/a-cfhama.adb, libgnat/a-cfhama.ads: Likewise.
+ 	* libgnat/a-cfhase.adb, libgnat/a-cfhase.ads: Likewise.
+ 	* libgnat/a-cfidll.adb, libgnat/a-cfidll.ads: Likewise.
+ 	* libgnat/a-cfinse.adb, libgnat/a-cfinse.ads: Likewise.
+ 	* libgnat/a-cfinve.adb, libgnat/a-cfinve.ads: Likewise.
+ 	* libgnat/a-cforma.adb, libgnat/a-cforma.ads: Likewise.
+ 	* libgnat/a-cforse.adb, libgnat/a-cforse.ads: Likewise.
+ 	* libgnat/a-cofove.adb, libgnat/a-cofove.ads: Likewise.
+ 	* libgnat/a-cofuma.adb, libgnat/a-cofuma.ads: Likewise.
+ 	* libgnat/a-cofuse.adb, libgnat/a-cofuse.ads: Likewise.
+ 	* libgnat/a-cofuve.adb, libgnat/a-cofuve.ads: Likewise.
+ 	* libgnat/a-cofuba.adb, libgnat/a-cofuba.ads: Remove package.
+ 
+ 2022-09-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Old]):
+ 	Adapt to object declaration being rewritten into object renaming.
+ 
+ 2022-09-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* contracts.adb, contracts.ads
+ 	(Analyze_Pragmas_In_Declarations): Added to aid in the new
+ 	expansion model so that pragmas relating to contracts can get
+ 	processed early before the rest of the subprogram containing them.
+ 	(Build_Subprogram_Contract_Wrapper): Created to do the majority of
+ 	expansion for postconditions. It builds a local wrapper with the
+ 	statements and declarations within a given subprogram.
+ 	(Is_Prologue_Renaming): Moved out from Process_Preconditions to be
+ 	used generally within the contracts package.
+ 	(Build_Entry_Contract_Wrapper): Moved from exp_ch7.
+ 	(Expand_Subprogram_Contract): Add new local variable Decls to
+ 	store expanded declarations needed for evaluation of contracts.
+ 	Call new wrapper building procedure and modify comments to match
+ 	new expansion model.
+ 	(Get_Postcond_Enabled): Deleted.
+ 	(Get_Result_Object_For_Postcond): Deleted.
+ 	(Get_Return_Success_For_Postcond): Deleted.
+ 	(Process_Contract_Cases): Add new parameter to store declarations.
+ 	(Process_Postconditions): Add new parameter to store declarations.
+ 	(Process_Preconditions): Add new parameter to store declarations.
+ 	Add code to move entry-call prologue renamings
+ 	* einfo.ads: Document new field Wrapped_Statements and modify
+ 	comment for Postconditions_Proc.
+ 	* exp_attr.adb
+ 	(Analyze_Attribute): Modify expansion of the 'Old attribute to
+ 	recognize new expansion model and use Wrapped_Statements instead
+ 	of Postconditions_Proc.
+ 	* exp_ch6.adb
+ 	(Add_Return): Remove special expansion for postconditions.
+ 	(Expand_Call): Modify condition checking for calls to access
+ 	subprogram wrappers to handle new expansion models.
+ 	(Expand_Call_Helper): Remove special expansion for postconditions.
+ 	(Expand_Non_Function_Return): Remove special expansion for
+ 	postconditions.
+ 	(Expand_Simple_Function_Return): Remove special expansion for
+ 	postconditions.
+ 	* exp_ch7.adb
+ 	(Build_Finalizer): Deleted, but replaced by code in
+ 	Build_Finalizer_Helper
+ 	(Build_Finalizer_Helper): Renamed to Build_Finalizer, and special
+ 	handling of 'Old objects removed.
+ 	* exp_ch9.adb
+ 	(Build_Contract_Wrapper): Renamed and moved to contracts package.
+ 	* exp_prag.adb
+ 	(Expand_Pragma_Contract_Cases): Delay analysis of contracts since
+ 	they now instead get analyzed as part of the wrapper generation
+ 	instead of after analysis of their corresponding subprogram's
+ 	body.
+ 	(Expand_Pragma_Check): Label expanded if-statements which come
+ 	from the expansion of assertion statements as
+ 	Comes_From_Check_Or_Contract.
+ 	* freeze.adb
+ 	(Freeze_Entity): Add special case to avoid freezing when a freeze
+ 	node gets generated as part of the expansion of a postcondition
+ 	check.
+ 	* gen_il-gen-gen_nodes.adb: Add new flag
+ 	Comes_From_Check_Or_Contract.
+ 	* gen_il-fields.ads: Add new field Wrapped_Statements. Add new
+ 	flag Comes_From_Check_Or_Contract.
+ 	* gen_il-gen-gen_entities.adb: Add new field Wrapped_Statements.
+ 	* ghost.adb
+ 	(Is_OK_Declaration): Replace Name_uPostconditions with
+ 	Name_uWrapped_Statements.
+ 	(Is_OK_Statement): Simplify condition due to the loss of
+ 	Original_Node as a result of the new expansion model of contracts
+ 	and use new flag Comes_From_Check_Or_Contract in its place.
+ 	* inline.adb
+ 	(Declare_Postconditions_Result): Replace Name_uPostconditions with
+ 	Name_uWrapped_Statements.
+ 	(Expand_Inlined_Call): Replace Name_uPostconditions with
+ 	Name_uWrapped_Statements.
+ 	* lib.adb, lib.ads
+ 	(ipu): Created to aid in debugging.
+ 	* lib-xref.adb
+ 	(Generate_References): Remove special handling for postcondition
+ 	procedures.
+ 	* sem_attr.adb
+ 	(Analyze_Attribute_Old_Result): Add new context in which 'Old can
+ 	appear due to the changes in expansion. Replace
+ 	Name_uPostconditions with Name_uWrapped_Statements.
+ 	(Result): Replace Name_uPostconditions with
+ 	Name_uWrapped_Statements.
+ 	* sem_ch11.adb
+ 	(Analyze_Handled_Statements): Remove check to exclude warnings on
+ 	useless assignments within postcondition procedures since
+ 	postconditions no longer get isolated into separate subprograms.
+ 	* sem_ch6.adb
+ 	(Analyze_Generic_Subprogram_Body): Modify expansion of generic
+ 	subprogram bodies so that contracts (and their associated pragmas)
+ 	get analyzed first.
+ 	(Analyze_Subprogram_Body_Helper): Remove global HSS variable due
+ 	to the HSS of the body potentially changing during the expansion
+ 	of contracts. In cases where it was used instead directly call
+ 	Handled_Statement_Sequence. Modify expansion of subprogram bodies
+ 	so that contracts (and their associated pragmas) get analyzed
+ 	first.
+ 	(Check_Missing_Return): Create local HSS variable instead of using
+ 	a global one.
+ 	(Move_Pragmas): Use new pragma table instead of an explicit list.
+ 	* sem_elab.adb
+ 	(Is_Postconditions_Proc): Deleted since the new scheme of
+ 	expansion no longer divides postcondition checks to a separate
+ 	subprogram and so cannot be easily identified (similar to
+ 	pre-condition checks).
+ 	(Info_Call): Remove info printing for _Postconditions subprograms.
+ 	(Is_Assertion_Pragma_Target): Remove check for postconditions
+ 	procedure
+ 	(Is_Bridge_Target): Remove check for postconditions procedure.
+ 	(Get_Invocation_Attributes): Remove unneeded local variables and
+ 	check for postconditions procedure.
+ 	(Output_Call): Remove info printing for _Postconditions
+ 	subprograms.
+ 	* sem_prag.adb, sem_prag.ads: Add new Pragma table for pragmas
+ 	significant to subprograms, along with tech-debt comment.
+ 	(Check_Arg_Is_Local_Name): Modified to recognize the new
+ 	_Wrapped_Statements internal subprogram and the new expansion
+ 	model.
+ 	(Relocate_Pragmas_To_Body): Replace Name_uPostconditions with
+ 	Name_uWrapped_Statements.
+ 	* sem_res.adb
+ 	(Resolve_Entry_Call): Add conditional to detect both contract
+ 	based wrappers of entries, but also wrappers generated as part of
+ 	general contract expansion (e.g. local postconditions
+ 	subprograms).
+ 	* sem_util.adb
+ 	(Accessibility_Level): Verify 'Access is not taken based on a
+ 	component of a function result.
+ 	(Has_Significant_Contracts): Replace Name_uPostconditions with
+ 	Name_uWrapped_Statements.
+ 	(Same_Or_Aliased_Subprogram): Add conditional to detect and obtain
+ 	the original subprogram based on the new concept of
+ 	"postcondition" wrappers.
+ 	* sinfo.ads: Add documentation for new flag
+ 	Comes_From_Check_Or_Contract.
+ 	* snames.ads-tmpl: Remove Name_uPostconditions and add
+ 	Name_uWrapped_Statements
+ 
+ 2022-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_unst.adb (Unnest_Subprograms.Search_Subprograms): Skip the
+ 	subprogram bodies that are not to be unnested.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_aggr.adb
+ 	(Resolve_Array_Aggregate): Generate an appropriate error message
+ 	in the case where an error in the source code leads to an
+ 	N_Iterated_Element_Association node in a bad context.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch4.adb
+ 	(Analyze_Selected_Component): Initialize the local variable Comp
+ 	to avoid having CodePeer generate an uninitialized variable
+ 	warning.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch4.adb
+ 	(Analyze_Selected_Component): Avoid initializing the local
+ 	variable Comp if the variable is not going to be subsequently
+ 	referenced. This is a correctness issue because the call to
+ 	First_Entity can fail.
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch9.adb
+ 	(Satisfies_Lock_Free_Requirements): If Ceiling_Locking locking
+ 	policy has been specified, then either return False (if Lock_Free
+ 	was not explicitly specified) or generate a warning that ceiling
+ 	locking will not be implemented for this protected unit (if
+ 	Lock_Free was explicitly specified). Generate an error message (in
+ 	addition to returning False) if an explicit Lock_Free aspect
+ 	specification is rejected because atomic primitives are not
+ 	supported on the given target.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Clarify that the
+ 	Lock_Free aspect for a protected unit takes precedence over the
+ 	Ceiling_Locking locking policy in the case where both apply.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-09-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Protected_Spec): Tidy up and propagate the
+ 	Comes_From_Source flag onto the new formal parameters.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not check
+ 	references for subprograms generated for protected subprograms.
+ 
+ 2022-09-12  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_res.adb
+ 	(Resolve_Equality_Op): Add handling for equality ops with
+ 	user-defined literal operands.
+ 	* sem_util.ads
+ 	(Is_User_Defined_Literal): Update spec comment to indicate
+ 	inclusion of named number cases.
+ 	* sem_util.adb
+ 	(Corresponding_Primitive_Op): Rather than following the chain of
+ 	ancestor subprograms via Alias and Overridden_Operation links, we
+ 	check for matching profiles between primitive subprograms of the
+ 	descendant type and the ancestor subprogram (by calling a new
+ 	nested function Profile_Matches_Ancestor). This prevents the
+ 	compiler from hanging due to circular linkages via those fields
+ 	that can occur between inherited and overriding subprograms
+ 	(which might indicate a latent bug, but one that may be rather
+ 	delicate to resolve).
+ 	(Profile_Matches_Ancestor): New nested subprogram to compare the
+ 	profile of a primitive subprogram with the profile of a candidate
+ 	ancestor subprogram.
+ 	(Is_User_Defined_Literal): Also return True in cases where the
+ 	node N denotes a named number (E_Name_Integer and E_Named_Real).
+ 
+ 2022-09-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* debug.adb: remove a comment.
+ 
+ 2022-09-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* checks.adb
+ 	(Selected_Length_Checks): In the message for an aggregate that has
+ 	too few or too many elements, add "!!" to make sure the warning
+ 	gets printed in with'ed units. Note that we have to put "!!"
+ 	before the "??", because Compile_Time_Constraint_Error detects
+ 	warnings by comparing the last character of the message with '?'
+ 	(which is bit dubious, but we're not changing that here).
+ 	(Length_Mismatch_Info_Message): Use Unat for some things that
+ 	can't be negative. Specify Decimal instead of Auto in calls to
+ 	UI_Image.
+ 	* sem_util.adb
+ 	(Compile_Time_Constraint_Error): Minor.
+ 	* uintp.adb
+ 	(Image_Uint): It's always better to initialize objects on their
+ 	declaration.
+ 
+ 2022-09-12  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Set
+ 	Support_Atomic_Primitives to false.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Ditto.
+ 
+ 2022-09-12  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* libgnat/system-qnx-arm.ads: Set Support_Atomic_Primitives to
+ 	false.
+ 	* libgnat/system-vxworks7-aarch64.ads: Ditto.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Ditto.
+ 	* libgnat/system-vxworks7-arm.ads: Ditto.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Ditto.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Ditto.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Ditto.
+ 
+ 2022-09-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-tchk.adb, par-util.adb, prep.adb, prepcomp.adb, scng.adb:
+ 	Use "in" instead of chains of "=" connected with "or else".
+ 	Likewise for "not in", "/=", "and then". Misc cleanup.
+ 	* par-ch10.adb, par-ch12.adb, par-ch13.adb, par-ch4.adb: Likewise.
+ 	* par-ch8.adb, par-ch9.adb, par-endh.adb, par-sync.adb: Likewise.
+ 	* par.adb
+ 	(Pf_Rec): Remove filler, which was added August 25, 1993 to get
+ 	around a compiler limitation that no longer exists. Minor cleanup.
+ 	Remove useless qualfications.
+ 	* par-ch3.adb: Remove redundant return statements.
+ 	(Component_Scan_Loop): Remove loop name; there are no nested
+ 	loops, so it's unnecessary and possibly misleading, and it causes
+ 	too-long lines.
+ 	* par-ch5.adb: DRY: Remove comments that repeat the comments in
+ 	par.adb.
+ 	(P_Sequence_Of_Statements): It is better to initialize things on
+ 	the declaration. And constants are better than variables.
+ 	(Test_Statement_Required): Remove unnecessary insertion of a null
+ 	statement.
+ 	* par-ch6.adb, par-ch7.adb: DRY: Remove comments that repeat the
+ 	comments in par.adb.
+ 
+ 2022-09-12  Javier Miranda  <miranda@adacore.com>
+ 
+ 	Revert:
+ 	2022-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* debug.adb
+ 	(Debug_Flag_Underscore_X): Switch added temporarily to allow
+ 	disabling extra formal checks.
+ 	* exp_attr.adb
+ 	(Expand_N_Attribute_Reference [access types]): Add extra formals
+ 	to the subprogram referenced in the prefix of 'Unchecked_Access,
+ 	'Unrestricted_Access or 'Access; required to check that its extra
+ 	formals match the extra formals of the corresponding subprogram
+ 	type.
+ 	* exp_ch3.adb
+ 	(Stream_Operation_OK): Declaration moved to the public part of the
+ 	package.
+ 	(Validate_Tagged_Type_Extra_Formals): New subprogram.
+ 	(Expand_Freeze_Record_Type): Improve the code that takes care of
+ 	adding the extra formals of dispatching primitives; extended to
+ 	add also the extra formals to renamings of dispatching primitives.
+ 	* exp_ch3.ads
+ 	(Stream_Operation_OK): Declaration moved from the package body.
+ 	* exp_ch6.adb
+ 	(Has_BIP_Extra_Formal): Subprogram declaration moved to the public
+ 	part of the package. In addition, a parameter has been added to
+ 	disable an assertion that requires its use with frozen entities.
+ 	(Expand_Call_Helper): Enforce assertion checking extra formals on
+ 	thunks.
+ 	(Is_Build_In_Place_Function): Return False for entities with
+ 	foreign convention.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Occurrences of
+ 	Is_Return_Object replaced by the local variable
+ 	Is_OK_Return_Object that evaluates to False for scopes with
+ 	foreign convention.
+ 	(Might_Have_Tasks): Fix check of class-wide limited record types.
+ 	(Needs_BIP_Task_Actuals): Remove assertion to allow calling this
+ 	function in more contexts; in addition it returns False for
+ 	functions returning objects with foreign convention.
+ 	(Needs_BIP_Finalization_Master): Likewise.
+ 	(Needs_BIP_Alloc_Form): Likewise.
+ 	* exp_ch6.ads
+ 	(Stream_Operation_OK): Declaration moved from the package body. In
+ 	addition, a parameter has been added to disable assertion that
+ 	requires its use with frozen entities.
+ 	* freeze.adb
+ 	(Check_Itype): Add extra formals to anonymous access subprogram
+ 	itypes.
+ 	(Freeze_Expression): Improve code that disables the addition of
+ 	extra formals to functions with foreign convention.
+ 	(Check_Extra_Formals): Moved to package Sem_Ch6 as
+ 	Extra_Formals_OK.
+ 	(Freeze_Subprogram): Add extra formals to non-dispatching
+ 	subprograms.
+ 	* sem_ch3.adb
+ 	(Access_Subprogram_Declaration): Defer the addition of extra
+ 	formals to the freezing point so that we know the convention.
+ 	(Check_Anonymous_Access_Component): Likewise.
+ 	(Derive_Subprogram): Fix documentation.
+ 	* sem_ch6.adb
+ 	(Check_Anonymous_Return): Fix check of access to class-wide
+ 	limited record types.
+ 	(Check_Untagged_Equality): Placed in alphabetical order.
+ 	(Extra_Formals_OK): Subprogram moved from freeze.adb.
+ 	(Extra_Formals_Match_OK): New subprogram.
+ 	(Has_BIP_Formals): New subprogram.
+ 	(Has_Extra_Formals): New subprograms.
+ 	(Needs_Accessibility_Check_Extra): New subprogram.
+ 	(Needs_Constrained_Extra): New subprogram.
+ 	(Parent_Subprogram): New subprogram.
+ 	(Add_Extra_Formal): Minor code cleanup.
+ 	(Create_Extra_Formals): Enforce matching extra formals on
+ 	overridden and aliased entities.
+ 	(Has_Reliable_Extra_Formals): New subprogram.
+ 	* sem_ch6.ads
+ 	(Extra_Formals_OK): Subprogram moved from freeze.adb.
+ 	(Extra_Formals_Match_OK): New subprogram.
+ 	* sem_eval.adb
+ 	(Compile_Time_Known_Value): Improve predicate to avoid assertion
+ 	failure; found working on this ticket; this change does not affect
+ 	the behavior of the compiler because this subprogram has an
+ 	exception handler that returns False when the assertion fails.
+ 	* sem_util.adb
+ 	(Needs_Result_Accessibility_Level): Do not return False for
+ 	dispatching operations compiled with Ada_Version < 2012 since they
+ 	they may be overridden by primitives compiled with Ada_Version >=
+ 	Ada_2012.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_param): Set DECL_ARTIFICIAL.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (At_End_Proc_to_gnu): Use the End_Label of
+ 	the child Handled_Statement_Sequence for body nodes.
+ 	(set_end_locus_from_node): Minor tweaks.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (Full_View_Of_Private_Constant): New
+ 	function returning the Full_View of a private constant, after
+ 	looking through a chain of renamings, if any.
+ 	(Identifier_to_gnu): Call it on the entity.  Small cleanup.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (gnat_pushdecl): Preserve named
+ 	TYPE_DECLs consistently for all kind of pointer types.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Op_Divide>: Report a
+ 	violation of No_Dependence on System.GCC if the result type is
+ 	larger than a word.
+ 	<N_Op_Shift>: Likewise.
+ 	<N_Op_Mod>: Likewise.
+ 	<N_Op_Rem>: Likewise.
+ 	(convert_with_check): Report a violation of No_Dependence on
+ 	System.GCC for a conversion between an integer type larger than
+ 	a word and a floating-point type.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch9.adb
+ 	(Allows_Lock_Free_Implementation): Return False if
+ 	Support_Atomic_Primitives is False.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* debug.adb: Remove comment regarding the -gnatd9 switch.
+ 	* doc/gnat_rm/implementation_defined_attributes.rst: Remove all
+ 	mention of the Lock_Free attribute.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 	* exp_attr.adb, sem_attr.adb: Remove all mention of the former
+ 	Attribute_Lock_Free enumeration element of the Attribute_Id type.
+ 	* sem_ch9.adb
+ 	(Allows_Lock_Free_Implementation): Remove the Debug_Flag_9 test.
+ 	Return False in the case of a protected function whose result type
+ 	requires use of the secondary stack.
+ 	(Satisfies_Lock_Free_Requirements): This functions checks for
+ 	certain constructs and returns False if one is found. In the case
+ 	of a protected function, there is no need to check to see if the
+ 	protected object is being modified. So it is ok to omit *some*
+ 	checks in the case of a protected function. But other checks which
+ 	are required (e.g., the test for a reference to a variable that is
+ 	not part of the protected object) were being incorrectly omitted.
+ 	This could result in accepting "Lock_Free => True" aspect
+ 	specifications that should be rejected.
+ 	* snames.adb-tmpl: Name_Lock_Free no longer requires special
+ 	treatment in Get_Pragma_Id or Is_Pragma_Name (because it is no
+ 	longer an attribute name).
+ 	* snames.ads-tmpl: Move the declaration of Name_Lock_Free to
+ 	reflect the fact that it is no longer the name of an attribute.
+ 	Delete Attribute_Lock_Free from the Attribute_Id enumeration type.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-coorse.ads: Restore Aggregate aspect specification for
+ 	type Set.
+ 
+ 2022-09-06  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): Add
+ 	Alignment_Param in the formal list for calls to SS_Allocate.
+ 
+ 2022-09-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Process_Formals): Preserve Has_Private_View flag while
+ 	rewriting formal into actual parameters.
+ 
+ 2022-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* debug.adb
+ 	(Debug_Flag_Underscore_X): Switch added temporarily to allow
+ 	disabling extra formal checks.
+ 	* exp_attr.adb
+ 	(Expand_N_Attribute_Reference [access types]): Add extra formals
+ 	to the subprogram referenced in the prefix of 'Unchecked_Access,
+ 	'Unrestricted_Access or 'Access; required to check that its extra
+ 	formals match the extra formals of the corresponding subprogram
+ 	type.
+ 	* exp_ch3.adb
+ 	(Stream_Operation_OK): Declaration moved to the public part of the
+ 	package.
+ 	(Validate_Tagged_Type_Extra_Formals): New subprogram.
+ 	(Expand_Freeze_Record_Type): Improve the code that takes care of
+ 	adding the extra formals of dispatching primitives; extended to
+ 	add also the extra formals to renamings of dispatching primitives.
+ 	* exp_ch3.ads
+ 	(Stream_Operation_OK): Declaration moved from the package body.
+ 	* exp_ch6.adb
+ 	(Has_BIP_Extra_Formal): Subprogram declaration moved to the public
+ 	part of the package. In addition, a parameter has been added to
+ 	disable an assertion that requires its use with frozen entities.
+ 	(Expand_Call_Helper): Enforce assertion checking extra formals on
+ 	thunks.
+ 	(Is_Build_In_Place_Function): Return False for entities with
+ 	foreign convention.
+ 	(Make_Build_In_Place_Call_In_Object_Declaration): Occurrences of
+ 	Is_Return_Object replaced by the local variable
+ 	Is_OK_Return_Object that evaluates to False for scopes with
+ 	foreign convention.
+ 	(Might_Have_Tasks): Fix check of class-wide limited record types.
+ 	(Needs_BIP_Task_Actuals): Remove assertion to allow calling this
+ 	function in more contexts; in addition it returns False for
+ 	functions returning objects with foreign convention.
+ 	(Needs_BIP_Finalization_Master): Likewise.
+ 	(Needs_BIP_Alloc_Form): Likewise.
+ 	* exp_ch6.ads
+ 	(Stream_Operation_OK): Declaration moved from the package body. In
+ 	addition, a parameter has been added to disable assertion that
+ 	requires its use with frozen entities.
+ 	* freeze.adb
+ 	(Check_Itype): Add extra formals to anonymous access subprogram
+ 	itypes.
+ 	(Freeze_Expression): Improve code that disables the addition of
+ 	extra formals to functions with foreign convention.
+ 	(Check_Extra_Formals): Moved to package Sem_Ch6 as
+ 	Extra_Formals_OK.
+ 	(Freeze_Subprogram): Add extra formals to non-dispatching
+ 	subprograms.
+ 	* sem_ch3.adb
+ 	(Access_Subprogram_Declaration): Defer the addition of extra
+ 	formals to the freezing point so that we know the convention.
+ 	(Check_Anonymous_Access_Component): Likewise.
+ 	(Derive_Subprogram): Fix documentation.
+ 	* sem_ch6.adb
+ 	(Check_Anonymous_Return): Fix check of access to class-wide
+ 	limited record types.
+ 	(Check_Untagged_Equality): Placed in alphabetical order.
+ 	(Extra_Formals_OK): Subprogram moved from freeze.adb.
+ 	(Extra_Formals_Match_OK): New subprogram.
+ 	(Has_BIP_Formals): New subprogram.
+ 	(Has_Extra_Formals): New subprograms.
+ 	(Needs_Accessibility_Check_Extra): New subprogram.
+ 	(Needs_Constrained_Extra): New subprogram.
+ 	(Parent_Subprogram): New subprogram.
+ 	(Add_Extra_Formal): Minor code cleanup.
+ 	(Create_Extra_Formals): Enforce matching extra formals on
+ 	overridden and aliased entities.
+ 	(Has_Reliable_Extra_Formals): New subprogram.
+ 	* sem_ch6.ads
+ 	(Extra_Formals_OK): Subprogram moved from freeze.adb.
+ 	(Extra_Formals_Match_OK): New subprogram.
+ 	* sem_eval.adb
+ 	(Compile_Time_Known_Value): Improve predicate to avoid assertion
+ 	failure; found working on this ticket; this change does not affect
+ 	the behavior of the compiler because this subprogram has an
+ 	exception handler that returns False when the assertion fails.
+ 	* sem_util.adb
+ 	(Needs_Result_Accessibility_Level): Do not return False for
+ 	dispatching operations compiled with Ada_Version < 2012 since they
+ 	they may be overridden by primitives compiled with Ada_Version >=
+ 	Ada_2012.
+ 
+ 2022-09-06  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_If_Expression): Disable optimization
+ 	for LLVM.
+ 
+ 2022-09-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_prag.adb
+ 	(Analyze_Pre_Post_Condition_In_Decl_Part): Improve check to report
+ 	an error in non-legal class-wide conditions.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-strsup.adb, libgnat/a-stwisu.adb, libgnat/a-stzsup.adb
+ 	(Super_Slice function and procedure): fix slice length computation.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Improve -gnatVa, -gnatVc, -gnatVd, -gnatVe, -gnatVf, -gnatVo,
+ 	-gnatVp, -gnatVr, and -gnatVs switch descriptions.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_unst.adb
+ 	(Visit_Node): Add N_Block_Statement to the enclosing construct
+ 	case since they can now have "At end" procedures. Also, recognize
+ 	calls from "At end" procedures when recording subprograms.
+ 
+ 2022-09-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Replace_Formal): Fix name of the referenced routine.
+ 
+ 2022-09-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference [Attribute_Old]):
+ 	Remove unnecessary local constant that was shadowing another
+ 	constant with the same initial value.
+ 
+ 2022-09-06  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cforse.ads (Replace): Fix the postcondition.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb
+ 	(Attribute_Valid): Ensure that PBtyp is initialized to a value for
+ 	which Is_Scalar_Type is True.
+ 	* checks.adb
+ 	(Determine_Range): Call Implemention_Base_Type instead of
+ 	Base_Type in order to ensure that result is suitable for passing
+ 	to Enum_Pos_To_Rep.
+ 
+ 2022-09-06  Bob Duff  <duff@adacore.com>
+ 	    Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gen_il-fields.ads
+ 	(First_Real_Statement): Remove this field.
+ 	* gen_il-gen-gen_nodes.adb: Remove the First_Real_Statement field.
+ 	Add the At_End_Proc field to nodes that have both Declarations and
+ 	HSS.
+ 	* sinfo.ads
+ 	(At_End_Proc): Document new semantics.
+ 	(First_Real_Statement): Remove comment.
+ 	* exp_ch11.adb
+ 	(Expand_N_Handled_Sequence_Of_Statements): Remove
+ 	First_Real_Statement.
+ 	* exp_ch7.adb
+ 	(Build_Cleanup_Statements): Remove "Historical note"; it doesn't
+ 	seem useful, and we have revision history.
+ 	(Create_Finalizer): Insert the finalizer later, typically in the
+ 	statement list, in some cases.
+ 	(Build_Finalizer_Call): Attach the "at end" handler to the parent
+ 	of the HSS node in most cases, so it applies to declarations.
+ 	(Expand_Cleanup_Actions): Remove Wrap_HSS_In_Block and the call to
+ 	it. Remove the code that moves declarations. Remove some redundant
+ 	code.
+ 	* exp_ch9.adb
+ 	(Build_Protected_Entry): Copy the At_End_Proc.
+ 	(Build_Protected_Subprogram_Body): Reverse the sense of Exc_Safe,
+ 	to avoid double negatives. Remove "Historical note" as in
+ 	exp_ch7.adb.
+ 	(Build_Unprotected_Subprogram_Body): Copy the At_End_Proc from the
+ 	protected version.
+ 	(Expand_N_Conditional_Entry_Call): Use First (Statements(...))
+ 	instead of First_Real_Statement(...).
+ 	(Expand_N_Task_Body): Put the Abort_Undefer call at the beginning
+ 	of the declarations, rather than in the HSS. Use First
+ 	(Statements(...)) instead of First_Real_Statement(...). Copy the
+ 	At_End_Proc.
+ 	* inline.adb
+ 	(Has_Initialized_Type): Return False if the declaration does not
+ 	come from source.
+ 	* libgnarl/s-tpoben.ads
+ 	(Lock_Entries, Lock_Entries_With_Status): Document when these
+ 	things raise Program_Error. It's not clear that
+ 	Lock_Entries_With_Status ought to be raising exceptions, but at
+ 	least it's documented now.
+ 	* sem.ads: Minor comment fixes.
+ 	* sem_ch6.adb
+ 	(Analyze_Subprogram_Body_Helper): Use First (Statements(...))
+ 	instead of First_Real_Statement(...).
+ 	(Analyze_Null_Procedure): Minor comment fix.
+ 	* sem_util.adb
+ 	(Might_Raise): Return True for N_Raise_Expression. Adjust the part
+ 	about exceptions generated by the back end to match the reality of
+ 	what the back end generates.
+ 	(Update_First_Real_Statement): Remove.
+ 	* sem_util.ads: Remove First_Real_Statement from comment.
+ 	* sinfo-utils.ads
+ 	(First_Real_Statement): New function that always returns Empty.
+ 	This should be removed once gnat-llvm and codepeer have been
+ 	updated to not refer to First_Real_Statement.
+ 	* sprint.adb
+ 	(Sprint_At_End_Proc): Deal with printing At_End_Proc.
+ 	* sem_prag.adb: Minor comment fixes.
+ 	* gcc-interface/trans.cc (At_End_Proc_to_gnu): New function.
+ 	(Subprogram_Body_to_gnu): Call it to handle an At_End_Proc.
+ 	(Handled_Sequence_Of_Statements_to_gnu): Likewise. Remove the
+ 	support for First_Real_Statement and clean up the rest.
+ 	(Exception_Handler_to_gnu): Do not push binding levels.
+ 	(Compilation_Unit_to_gnu): Adjust call to process_decls.
+ 	(gnat_to_gnu) <N_Package_Specification>: Likewise. <N_Entry_Body>:
+ 	Likewise. <N_Freeze_Entity>: Likewise. <N_Block_Statement>:
+ 	Likewise and call At_End_Proc_to_gnu to handle an At_End_Proc.
+ 	<N_Package_Body>: Likewise.
+ 	(process_decls): Remove GNAT_END_LIST parameter and adjust
+ 	recursive calls.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Document new
+ 	temporary rule that a "when others =>" case choice must be given
+ 	when casing on a composite selector.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_case.adb: Define a new Boolean constant,
+ 	Simplified_Composite_Coverage_Rules, initialized to True. Setting
+ 	this constant to True has two effects: 1- Representative value
+ 	sets are not fully initialized - this is done to avoid capacity
+ 	problems, as well as for performance. 2- In
+ 	Check_Case_Pattern_Choices, the only legality check performed is a
+ 	check that a "when others =>" choice is present.
+ 
+ 2022-09-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix error
+ 	template.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_attr.adb
+ 	(Make_Range_Test): In determining which subtype's First and Last
+ 	attributes are to be queried as part of a range test, call
+ 	Validated_View in order to get a scalar (as opposed to private)
+ 	subtype.
+ 	(Attribute_Valid): In determining whether to perform a signed or
+ 	unsigned comparison for a range test, call Validated_View in order
+ 	to get a scalar (as opposed to private) type. Also correct a typo
+ 	which, by itself, is the source of the problem reported for this
+ 	ticket.
+ 
+ 2022-09-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch4.adb
+ 	(Analyze_Selected_Component): Define new Boolean-valued function,
+ 	Constraint_Has_Unprefixed_Discriminant_Reference, which takes a
+ 	subtype that is subject to a discriminant-dependent constraint and
+ 	returns True if any of the constraint values are unprefixed
+ 	discriminant names. Usually, the Etype of a selected component
+ 	node is set to Etype of the component. However, in the case of an
+ 	access-to-array component for which this predicate returns True,
+ 	we instead use the base type of the Etype of the component.
+ 	Normally such problematic discriminant references are addressed by
+ 	calling Build_Actual_Subtype_Of_Component, but that doesn't work
+ 	if Full_Analyze is False.
+ 
+ 2022-09-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Include
+ 	System.Value_U_Spec and System.Value_I_Spec units.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-powflt.ads (Powfive): New constant array.
+ 	* libgnat/s-powlfl.ads (Powfive): Likewise.
+ 	(Powfive_100): New constant.
+ 	(Powfive_200): Likewise.
+ 	(Powfive_300): Likewise.
+ 	* libgnat/s-powllf.ads (Powfive): New constant array.
+ 	(Powfive_100): New constant.
+ 	(Powfive_200): Likewise.
+ 	(Powfive_300): Likewise.
+ 	* libgnat/s-valflt.ads (Impl): Replace Powten with Powfive and pass
+ 	Null_Address for the address of large constants.
+ 	* libgnat/s-vallfl.ads (Impl): Replace Powten with Powfive and pass
+ 	the address of large constants.
+ 	* libgnat/s-valllf.ads (Impl): Likewise.
+ 	* libgnat/s-valrea.ads (System.Val_Real): Replace Powten_Address
+ 	with Powfive_Address and add Powfive_{1,2,3}00_Address parameters.
+ 	* libgnat/s-valrea.adb (Is_Large_Type): New boolean constant.
+ 	(Is_Very_Large_Type): Likewise.
+ 	(Maxexp32): Change value of 10 to that of 5.
+ 	(Maxexp64): Likewise.
+ 	(Maxexp80): Likewise.
+ 	(Integer_to_Real): Use a combination of tables of powers of 5 and
+ 	scaling if the base is 10.
+ 	(Large_Powten): Rename into...
+ 	(Large_Powfive): ...this.  Add support for large constants.
+ 	(Large_Powfive): New overloaded function for very large exponents.
+ 
+ 2022-09-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst
+ 	(Aspect Iterable): Include Last and Previous primitives in
+ 	syntactic and semantic description.
+ 	* exp_attr.adb
+ 	(Expand_N_Attribute_Reference): Don't expect attributes like
+ 	Iterable that can only appear in attribute definition clauses.
+ 	* sem_ch13.adb
+ 	(Analyze_Attribute_Definition_Clause): Prevent crash on
+ 	non-aggregate Iterable attribute; improve basic diagnosis of
+ 	attribute values.
+ 	(Resolve_Iterable_Operation): Improve checks for illegal
+ 	primitives in aspect Iterable, e.g. with wrong number of formal
+ 	parameters.
+ 	(Validate_Iterable_Aspect): Prevent crashes on syntactically
+ 	illegal aspect expression.
+ 	* sem_util.adb
+ 	(Get_Cursor_Type): Fix style.
+ 	* gnat_ugn.texi, gnat_rm.texi: Regenerate.
+ 
+ 2022-09-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuer.ads (System.Value_R): Add Parts formal parameter
+ 	as well as Data_Index, Scale_Array and Value_Array types.
+ 	(Scan_Raw_Real): Change type of Scale and return type.
+ 	(Value_Raw_Real): Likewise.
+ 	* libgnat/s-valuer.adb (Round_Extra): Reorder parameters and adjust
+ 	recursive call.
+ 	(Scan_Decimal_Digits): Reorder parameters, add N parameter and deal
+ 	with multi-part scale and value.
+ 	(Scan_Integral_Digits): Likewise.
+ 	(Scan_Raw_Real): Change type of Scale and return type and deal with
+ 	multi-part scale and value.
+ 	(Value_Raw_Real): Change type of Scale and return type and tidy up.
+ 	* libgnat/s-valued.adb (Impl): Pass 1 as Parts actual parameter.
+ 	(Scan_Decimal): Adjust to type changes.
+ 	(Value_Decimal): Likewise.
+ 	* libgnat/s-valuef.adb (Impl): Pass 1 as Parts actual parameter.
+ 	(Scan_Fixed): Adjust to type changes.
+ 	(Value_Fixed): Likewise.
+ 	* libgnat/s-valrea.adb (Need_Extra): Delete.
+ 	(Precision_Limit): Always use the precision of the mantissa.
+ 	(Impl): Pass 2 as Parts actual parameter.
+ 	(Exact_Log2): New expression function.
+ 	(Integer_to_Real): Change type of Scale and Val and deal with a
+ 	2-part integer mantissa.
+ 	(Scan_Real): Adjust to type changes.
+ 	(Value_Real): Likewise.
+ 
+ 2022-09-05  Martin Liska  <mliska@suse.cz>
+ 
+ 	* sigtramp-vxworks-target.h: Rename DBX_REGISTER_NUMBER to
+ 	DEBUGGER_REGNO.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Check_Bounds): Move code and comment related to
+ 	check for null array aggregate from Resolve_Null_Array_Aggregate.
+ 	* sem_aggr.ads (Is_Null_Aggregate): Move spec from unit body.
+ 	* sem_aggr.adb (Resolve_Null_Array_Aggregate): Move check to
+ 	expansion.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb
+ 	(Array_Aggr_Subtype): Bypass call to Collect_Aggr_Bound with
+ 	dedicated code for null array aggregates.
+ 	(Resolve_Array_Aggregate): Remove special handling of null array
+ 	aggregates.
+ 	(Resolve_Array_Aggregate): Create bounds, but let
+ 	Array_Aggr_Subtype create itype entities.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Null_Array_Aggregate): Insert check as a
+ 	Raise_Constraint_Error node and not an If_Statement.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb
+ 	(Resolve_Container_Aggregate): Style cleanup.
+ 	(Resolve_Record_Aggregate): Remove redundant guard.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.ads (Entry_Names_OK): Remove spec.
+ 	* exp_util.adb (Entry_Names_OK): Remove body.
+ 
+ 2022-09-05  Steve Baird  <baird@adacore.com>
+ 
+ 	* libgnat/a-coinve.adb, libgnat/a-convec.adb
+ 	(Append): If the Append that takes an Element and a Count is
+ 	called with Count = 1, then call the Append that does not take a
+ 	Count parameter; otherwise call the code that handles the general
+ 	case. Move the special case detection/handling code that was
+ 	formerly in that version of Append into the version that does not
+ 	take a Count parameter, so that now both versions get the
+ 	performance benefit.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Null_Array_Aggregate): Create internal
+ 	type for the aggregate as an itype.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads (Itype_Has_Declaration): Remove spec.
+ 	* sem_util.adb (Itype_Has_Declaration): Remove body.
+ 
+ 2022-09-05  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch3.adb
+ 	(Expand_N_Object_Declaration): In deciding whether to emit a DIC
+ 	check, we were previously testing the Has_Init_Expression flag.
+ 	Continue to test that flag as before, but add a test for the
+ 	syntactic presence of an initial value in the object declaration.
+ 	This new test would not supersede the old test in the case where
+ 	an explicit initial value has been eliminated as part of some tree
+ 	transformation.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Validate_Unchecked_Conversions): Use
+ 	Has_Warnings_Off.
+ 	* sem_elab.adb (Check_Internal_Call_Continue): Likewise.
+ 
+ 2022-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-valuer.adb (Scan_Decimal_Digits): Consistently avoid
+ 	initializing local variables.
+ 	(Scan_Integral_Digits): Likewise.
+ 	(Scan_Raw_Real): Likewise and add a couple of comments.
+ 
+ 2022-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Freeze_Entity_Checks): Build predicate functions
+ 	only after checking the variant part of a record type, if any.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb
+ 	(Two_Pass_Aggregate_Expansion): Expand into implicit rather than
+ 	ordinary loops, to detect violations of restriction
+ 	No_Implicit_Loops.
+ 	(Generate_Loop): Likewise for delta array aggregates.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Two_Pass_Aggregate_Expansion): Expand iterated
+ 	component association with an unanalyzed copy of iterated
+ 	expression. The previous code worked only because the expanded
+ 	loop used both an analyzed copy of the iterator_specification and
+ 	an analyzed copy of the iterated expression. Now the iterated
+ 	expression is reanalyzed in the context of the expanded loop.
+ 	* par-ch4.adb (Build_Iterated_Component_Association): Don't set
+ 	defining identifier when iterator specification is present.
+ 	* sem_aggr.adb (Resolve_Iterated_Association): Pick index name
+ 	from the iterator specification.
+ 	* sem_elab.adb (Traverse_Potential_Scenario): Handle iterated
+ 	element association just like iterated component association. Not
+ 	strictly part of this fix, but still worth for the completeness.
+ 	* sem_res.adb (Resolve): Pick index name from the iterator
+ 	specification, when present.
+ 	* sem_util.adb (Traverse_More): For completeness, just like the
+ 	change in Traverse_Potential_Scenario.
+ 	* sinfo.ads
+ 	(ITERATED_COMPONENT_ASSOCIATION): Fix and complete description.
+ 	(ITERATED_ELEMENT_ASSOCIATION): Likewise.
+ 
+ 2022-09-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch6.adb
+ 	(Analyze_Subprogram_Body_Helper): Use First_Real_Statement to deal
+ 	with this case. Note that First_Real_Statement is likely to be
+ 	removed as part of this ticket, so this is a temporary fix.
+ 
+ 2022-09-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ali.adb (Scan_ALI): Special case i-c*.ali when setting
+ 	Sec_Stack_Used.
+ 
+ 2022-09-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* par-ch5.adb
+ 	(P_Sequence_Of_Statements): Call Error_Msg_GNAT_Extension to give
+ 	the error message.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Split
+ 	processing of cases with and without iterator specification; reuse
+ 	analysis of iterator specification; improve diagnostics for
+ 	premature usage of iterator index in discrete choices.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Check_Subtype_Definition): Remove redundant call to
+ 	Present; style cleanup.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Change an inconsistent
+ 	use of False into its local equivalent Failure.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Component_Association): Change
+ 	generic name Ent to a more intuitive Scop; rename Remove_Ref to
+ 	Remove_Reference, so it can be instantiated as a traversal routine
+ 	with plural name.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb
+ 	(Is_Empty_Range): Move error reporting to the caller.
+ 	(Analyze_Qualified_Expression): Move error reporting from Is_Empty_Range;
+ 	add matching call to End_Scope before rewriting and returning.
+ 
+ 2022-09-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* bindgen.adb (Gen_Elab_Calls): Check for Check_Elaboration_Flags.
+ 	* bindusg.adb (Display): Add -k.
+ 	* opt.ads (Check_Elaboration_Flags): New.
+ 	* switch-b.adb (Scan_Binder_Switches): Add processing of -k.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst: Add
+ 	documentation for -k and -K.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* treepr.adb: Remove local To_Lower and use the procedure
+ 	version instead.
+ 
+ 2022-09-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* aspects.ads (Delaying Evaluation of Aspect): Fix typos.
+ 	* exp_ch3.adb (Freeze_Type): Do not generate Invariant and DIC
+ 	procedures for internal types.
+ 	* exp_util.adb (Build_DIC_Procedure_Body): Adjust comment.
+ 	* freeze.adb (Freeze_Entity): Call Inherit_Delayed_Rep_Aspects for
+ 	subtypes and derived types only after the base or parent type has
+ 	been frozen.  Remove useless freezing for first subtype.
+ 	(Freeze_Fixed_Point_Type): Call Inherit_Delayed_Rep_Aspects too.
+ 	* layout.adb (Set_Elem_Alignment): Deal with private types.
+ 	* sem_ch3.adb (Build_Derived_Enumeration_Type): Build the implicit
+ 	base as an itype and do not insert its declaration in the tree.
+ 	(Build_Derived_Numeric_Type): Do not freeze the implicit base.
+ 	(Derived_Standard_Character): Likewise.
+ 	(Constrain_Enumeration): Inherit the chain of representation items
+ 	instead of replacing it.
+ 	* sem_ch13.ads (Inherit_Aspects_At_Freeze_Point): Add ??? comment.
+ 	(Inherit_Delayed_Rep_Aspects): Declare.
+ 	* sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Do not invoke
+ 	Inherit_Delayed_Rep_Aspects.
+ 	(Inherit_Aspects_At_Freeze_Point): Deal with private types.
+ 	(Inherit_Delayed_Rep_Aspects): Move to library level.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* einfo-utils.adb (Number_Entries): Refine type of a local variable.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Rename Conctyp to
+ 	Prottyp; refactor repeated calls to New_Occurrence_Of; replace
+ 	Number_Entries with Has_Entries.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Likewise; remove Subprg
+ 	variable (apparently copy-pasted from expansion of the attribute).
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Fix detection of the
+ 	enclosing protected type and of the enclosing protected subprogram.
+ 	* exp_ch5.adb (Expand_N_Assignment_Statement): Likewise.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Itype): Remove excessive guard.
+ 	* sem_ch5.adb (Analyze_Loop_Parameter_Specification): Likewise.
+ 
+ 2022-09-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sprint.adb (Sprint_Node_Actual): Handle iterator_specification within
+ 	iterated_component_association and iterator_filter within
+ 	iterator_specification.
+ 
+ 2022-09-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Fix rest syntax
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Expand_Subtype_From_Expr): Be prepared for rewritten
+ 	aggregates as expressions.
+ 
+ 2022-09-02  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Simple_Function_Return) Bypass creation of an
+ 	actual subtype and unchecked conversion to that subtype when the
+ 	underlying type of the expression has discriminants without defaults.
+ 
+ 2022-09-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Expand_Subtype_From_Expr): Check for the presence
+ 	of the Is_Constr_Subt_For_U_Nominal flag instead of the absence
+ 	of the Is_Constr_Subt_For_UN_Aliased flag on the subtype of the
+ 	expression of an object declaration before reusing this subtype.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Do not incorrectly
+ 	set the Is_Constr_Subt_For_UN_Aliased flag on the actual subtype
+ 	of an array with definite nominal subtype.  Remove useless test.
+ 
+ 2022-09-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
+ 	(No_Dependence): Cite implicit dependences on the runtime library.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-09-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-strmap.adb: Add variants to simple and while loops.
+ 	* libgnat/a-strsea.adb: Idem.
+ 
+ 2022-09-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-expmod.adb (Lemma_Add_Mod): Add new lemma to factor
+ 	out a complex sub-proof.
+ 	(Exp_Modular): Add assertion to help proof.
+ 
+ 2022-09-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-widthu.adb (Lemma_Euclidean): Lemma to prove the
+ 	relation between the quotient/remainder of a division.
+ 
+ 2022-09-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb: Add or rework ghost code.
+ 	* libgnat/s-aridou.ads: Add Big_Positive subtype.
+ 
+ 2022-09-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst
+ 	(Non-Symbolic Traceback): Update section.
+ 	* gnat_rm.texi, gnat_ugn.texi, gnat-style.texi: Regenerate.
+ 
+ 2022-09-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-nbnbig.ads: Add Always_Return annotation.
+ 	* libgnat/s-vaispe.ads: New ghost unit for the specification of
+ 	System.Value_I. Restore proofs.
+ 	* libgnat/s-vauspe.ads: New ghost unit for the specification of
+ 	System.Value_U. Restore proofs.
+ 	* libgnat/s-valuei.adb: The specification only subprograms are
+ 	moved to System.Value_I_Spec. Restore proofs.
+ 	* libgnat/s-valueu.adb: The specification only subprograms are
+ 	moved to System.Value_U_Spec. Restore proofs.
+ 	* libgnat/s-valuti.ads
+ 	(Uns_Params): Generic unit used to bundle together the
+ 	specification functions of System.Value_U_Spec.
+ 	(Int_Params): Generic unit used to bundle together the
+ 	specification functions of System.Value_I_Spec.
+ 	* libgnat/s-imagef.adb: It is now possible to instantiate the
+ 	appropriate specification units instead of creating imported ghost
+ 	subprograms.
+ 	* libgnat/s-imagei.adb: Update to refactoring of specifications
+ 	and fix proofs.
+ 	* libgnat/s-imageu.adb: Likewise.
+ 	* libgnat/s-imgint.ads: Ghost parameters are grouped together in a
+ 	package now.
+ 	* libgnat/s-imglli.ads: Likewise.
+ 	* libgnat/s-imgllu.ads: Likewise.
+ 	* libgnat/s-imgllli.ads: Likewise.
+ 	* libgnat/s-imglllu.ads: Likewise.
+ 	* libgnat/s-imguns.ads: Likewise.
+ 	* libgnat/s-vallli.ads: Likewise.
+ 	* libgnat/s-valllli.ads: Likewise.
+ 	* libgnat/s-imagei.ads: Likewise.
+ 	* libgnat/s-imageu.ads: Likewise.
+ 	* libgnat/s-vaispe.adb: Likewise.
+ 	* libgnat/s-valint.ads: Likewise.
+ 	* libgnat/s-valuei.ads: Likewise.
+ 	* libgnat/s-valueu.ads: Likewise.
+ 	* libgnat/s-vauspe.adb: Likewise.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Assignment_Statement>: Fix
+ 	a couple of minor issues in the commentary.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gigi): Report a violation of No_Dependence
+ 	on System.Stack_Checking if Stack_Check_Probes_On_Target is not set
+ 	and -fstack-check is specified.
+ 	(build_binary_op_trapv): Report violatiosn of No_Dependence on both
+ 	System.Arith_64 and System.Arith_128.
+ 	(add_decl_expr): If an initialized variable, report a violation of
+ 	No_Dependence on System.Memory_Copy for large aggregate types.
+ 	(gnat_to_gnu) <N_Op_Eq>: Report a violation
+ 	of No_Dependence on System.Memory_Compare for large aggregate types.
+ 	<N_Assignment_Statement>! Report a violation of No_Dependence on
+ 	System.Memory_Set, System.Memory_Move or else System.Memory_Copy for
+ 	large aggregate types.
+ 	* gcc-interface/utils2.cc (maybe_wrap_malloc): Report a violation of
+ 	No_Dependence on System.Memory.
+ 	(maybe_wrap_free): Add GNAT_NODE parameter and report a violation of
+ 	No_Dependence on System.Memory.
+ 	(build_call_alloc_dealloc): Adjust call to maybe_wrap_free.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity): Do not set the debug
+ 	type for vector types.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Access_Subtype>:
+ 	Undo questionable renaming.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (Gigi_Cloned_Subtype): Handle private case.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gigi): Add one more leading underscore to
+ 	name of stack checking function.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (Gigi_Cloned_Subtype): New function.
+ 	(gnat_to_gnu_entity) <E_Signed_Integer_Subtype>: Call it to get the
+ 	cloned subtype, if any.
+ 	<E_Floating_Point_Subtype>: Likewise.
+ 	<E_Array_Subtype>: Likewise.
+ 	<E_Record_Subtype>: Likewise.
+ 	<E_Access_Subtype>: Likewise.
+ 	Deal with all cloned subtypes on the main path.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Access_Subtype>: Do
+ 	not reuse the TYPE_DECL of the base type.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (gnat_pushdecl): Build DECL_ORIGINAL_TYPE
+ 	only for pointer types.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.cc (build_binary_op) <EQ_EXPR>: Also accept
+ 	pointer-to-function types that are not variant of each other.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (unchecked_convert): Also pad in most cases
+ 	if the source is not a scalar type but the destination is.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Array_Type>: Save
+ 	and restore the alias set of the dummy pointer-to-array type.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* snames.ads-tmpl (Name_Memory_Compare): New package name.
+ 	(Name_Memory_Copy): Likewise.
+ 	(Name_Memory_Move): Likewise.
+ 	(Name_Memory_Set): Likewise.
+ 
+ 2022-07-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_And_Resolve_Storage_Model_Type_Argument):
+ 	Call the System.Case_Util.To_Mixed procedure rather than the
+ 	function, to avoid bootstrap problems.
+ 
+ 2022-07-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* aspects.ads (Aspect_Argument): Change the association for
+ 	Aspect_Storage_Model_Type from Expression to
+ 	Optional_Expression.
+ 	* exp_util.ads (Find_Storage_Op): Update comment to indicate
+ 	that Empty can be returned in the case where a storage-model
+ 	operation is defaulted.
+ 	* exp_util.adb (Find_Storage_Op): Allow the function to return
+ 	Empty in Storage_Model_Type case rather than raising
+ 	Program_Error, so that Procedure_To_Call fields in N_Allocator
+ 	and N_Free_Statement nodes will be set to Empty in the defaulted
+ 	native storage-model case.
+ 	* sem_ch13.adb: Add with and use of System.Case_Util (and
+ 	reformat context_clause).
+ 	(Check_Aspect_At_Freeze_Point): Return with no action for a
+ 	Storage_Model_Type aspect with no expression (fully-defaulted
+ 	native memory-model case).
+ 	(Resolve_Storage_Model_Type_Argument): If an Address_Type has
+ 	not been explicitly specified, then set Addr_Type to denote type
+ 	System.Address.
+ 	(Validate_Storage_Model_Type_Aspect): Return immediately in the
+ 	case where the aspect has no Expression (fully-defaulted native
+ 	memory-model case).  No longer issue an error when Address_Type
+ 	isn't specified, and instead use type System.Address as the
+ 	default address type. When the address type is
+ 	System.Address (whether specified or defaulted), no longer issue
+ 	errors for any other "subaspects" that aren't specified, since
+ 	in that case those are allowed to default as well. Remove ???
+ 	comment about needing to check for duplicates, which is now
+ 	addressed.
+ 	(Check_And_Resolve_Storage_Model_Type_Argument): New procedure
+ 	to check that an association for a storage-model subaspect in
+ 	the aggregate has not been specified earlier in the aggregate,
+ 	and to then resolve the expression of the association and save
+ 	the resolved entity. Called by
+ 	Validate_Storage_Model_Type_Aspect.
+ 	* sem_util.ads (Storage_Model_Support): Update comments on specs
+ 	of the functions Get_Storage_Model_Type_Entity,
+ 	Storage_Model_Address_Type, and Storage_Model_Null_Address to
+ 	indicate the behavior when the address type is System.Address
+ 	(the native memory-model case).
+ 	* sem_util.adb
+ 	(Storage_Model_Support.Get_Storage_Model_Type_Entity): Suppress
+ 	the search for the given subaspect name (Nam) when the
+ 	Storage_Model_Type aspect is fully defaulted (i.e., no
+ 	Expression is present) and simply return. In cases where the
+ 	search is done, but no association that matches Nam is found,
+ 	return System.Address for the Name_Address_Type case, return
+ 	System.Null_Address for the Name_Null_Address case, and return
+ 	Empty for all other cases.
+ 
+ 2022-07-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Relocate_Expression): New routine with code that
+ 	previously was only applied to Pre and Post aspects.
+ 	(Analyze_Aspect_Specifications): Apply the above routine to
+ 	other aspects, in particular to aspects Address, Attach_Handler,
+ 	Predicate and Interrupt_Priority.
+ 
+ 2022-07-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Build_Body_To_Inline): Instead of manipulating the
+ 	Full_Analysis flag, use the Inside_A_Generic flag (which is
+ 	conveniently manipulated by Start_Generic/End_Generic, together
+ 	with Expander_Active).
+ 	* sem_attr.adb (Analyze_Attribute_Old_Result): Adapt comment and
+ 	assertion to different flag that is set while building
+ 	body-to-inline.
+ 
+ 2022-07-13  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Clarify the need
+ 	for choices after -fzero-call-used-regs and -fstrub.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-07-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Recognize a generated subtype
+ 	with Ghost pragma for generic instantiations.
+ 
+ 2022-07-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Lemma_Mult_Div, Lemma_Powers): New
+ 	lemmas.
+ 	(Prove_Sign_Quotient): New local lemma.
+ 	(Prove_Signs): Expand definition of Big_R and Big_Q in the
+ 	postcondition. Add intermediate assertions.
+ 	(Double_Divide): Call new lemma.
+ 	(Lemma_Div_Eq): Provide body for proving lemma.
+ 	(Lemma_Powers_Of_2, Lemma_Shift_Without_Drop,
+ 	Prove_Dividend_Scaling, Prove_Multiplication, Prove_Z_Low): Call
+ 	lemmas, add intermediate assertions.
+ 
+ 2022-07-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Has_Single_Return): Add guard for the subsequent
+ 	call to Expression.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Set Acts_As_Spec
+ 	earlier if the body is not the completion of a declaration.
+ 	(Check_Untagged_Equality): Deal with subprogram bodies that are
+ 	not the completion of a declaration and make sure that they are
+ 	not flagged when they cause the freezing of the type themselves.
+ 	Give a warning on the freezing point of the type in more cases.
+ 	* sem_res.adb (Resolve_Equality_Op): Revert latest change.
+ 
+ 2022-07-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-arit32.adb (Scaled_Divide32): Add an assertion, move
+ 	the call of Prove_Sign_R around.
+ 
+ 2022-07-13  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_If_Expression): Test for compile time
+ 	known bounds when handling slices.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.ads (Integer_Type_For): Mention Small_Integer_Type_For.
+ 	(Small_Integer_Type_For): Mention Integer_Type_For.
+ 
+ 2022-07-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Equality_Op): Make sure that the user-defined
+ 	operator of an untagged record type is declared ahead of an instance
+ 	before using it to resolve the equality operator in the instance.
+ 
+ 2022-07-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): Add default
+ 	initialization for Stmts.
+ 	* sem_ch12.adb (Analyze_Associations): Add default
+ 	initialization for Match.
+ 	* libgnat/a-ztenau.adb (Scan_Enum_Lit): Remove duplicated
+ 	boolean test.
+ 	* libgnat/g-spipat.adb (XMatch): Combine duplicated cases.
+ 
+ 2022-07-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-prag.adb (Check_Arg_Count): Change parameter type from Int
+ 	to Nat, because this parameter is compared to Arg_Count variable
+ 	which is of type Nat. Also, it wouldn't make sense to check for
+ 	negative number of pragma arguments.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch11.adb (Expand_N_Exception_Declaration): Sync comment
+ 	with declaration in System.Standard_Library.
+ 
+ 2022-07-12  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/s-secsta.adb (Has_Enough_Free_Memory): Check for full
+ 	chunk before computing the available size.
+ 
+ 2022-07-12  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Nonbinary_Modular_Op.Expand_Modular_Op):
+ 	Reimplement choice of which predefined type to use for the
+ 	implementation of a predefined operation of a modular type with
+ 	a non-power-of-two modulus.
+ 
+ 2022-07-12  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* einfo.ads: Modify documentation for In_Use flag to include
+ 	scope stack manipulation.
+ 	* sem_ch8.adb (Use_One_Type): Add condition to return when
+ 	attempting to detect redundant use_type_clauses in child units
+ 	in certain cases.
+ 
+ 2022-07-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* restrict.ads (type ND_Entry): Add System_Child component.
+ 	(Check_Restriction_No_Dependence_On_System): Declare.
+ 	* restrict.adb (Global_Restriction_No_Tasking): Move around.
+ 	(Violation_Of_No_Dependence): New procedure.
+ 	(Check_Restriction_No_Dependence): Call Violation_Of_No_Dependence
+ 	to report a violation.
+ 	(Check_Restriction_No_Dependence_On_System): New procedure.
+ 	(Set_Restriction_No_Dependenc): Set System_Child component if the
+ 	unit is a child of System.
+ 	* snames.ads-tmpl (Name_Arith_64): New package name.
+ 	(Name_Arith_128): Likewise.
+ 	(Name_Memory): Likewise.
+ 	(Name_Stack_Checking): Likewise.
+ 	* fe.h (Check_Restriction_No_Dependence_On_System): Declare.
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* par.adb (P_Declarative_Items): New function to parse a
+ 	sequence of declarative items.
+ 	(P_Sequence_Of_Statements): Add Handled flag, to indicate
+ 	whether to wrap the result in a block statement.
+ 	* par-ch3.adb (P_Declarative_Item): Rename P_Declarative_Items
+ 	to be P_Declarative_Item, because it really only parses a single
+ 	declarative item, and to avoid conflict with the new
+ 	P_Declarative_Items. Add In_Statements.  We keep the old
+ 	error-recovery mechanisms in place when In_Statements is False.
+ 	When True, we don't want to complain about statements, because
+ 	we are parsing a sequence of statements.
+ 	(P_Identifier_Declarations): If In_Statements, and we see what
+ 	looks like a statement, we no longer give an error. We return to
+ 	P_Sequence_Of_Statements with Done = True, so it can parse the
+ 	statement.
+ 	* par-ch5.adb (P_Sequence_Of_Statements): Call
+ 	P_Declarative_Items to parse declarative items that appear in
+ 	the statement list.  Remove error handling code that complained
+ 	about such items.  Check some errors conservatively.  Wrap the
+ 	result in a block statement when necessary.
+ 	* par-ch11.adb (P_Handled_Sequence_Of_Statements): Pass
+ 	Handled => True to P_Sequence_Of_Statements.
+ 	* types.ads (No, Present): New functions for querying
+ 	Source_Ptrs (equal, not equal No_Location).
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Fix range of iteration.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Do not process expression of unknown restrictions.
+ 
+ 2022-07-12  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* makeusg.adb,
+ 	doc/gnat_ugn/building_executable_programs_with_gnat.rst: Move -P
+ 	to the top of switches list and make it clear that gnatmake
+ 	passes the ball to gprbuild if -P is set.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/g-socthi__vxworks.adb (C_Connect): Suppress new warning.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Set_Boolean_Result): Simplify using
+ 	Boolean_Literals.
+ 
+ 2022-07-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* errout.adb (Record_Compilation_Errors): Remove global
+ 	variable.
+ 	(Compilation_Errors): Simplify.
+ 	(Initialize): Inline Reset_Warnings.
+ 	(Reset_Warnings): Remove.
+ 	* errout.ads (Reset_Warnings): Remove.
+ 	(Compilation_Errors): Update comment.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Ignore all frontend
+ 	warnings in GNATprove mode, except regarding elaboration and
+ 	suspicious contracts.
+ 
+ 2022-07-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Caller_Known_Size_Record): Make entry assertion
+ 	more robust and add guard for null argument.  For protected
+ 	types, invoke Caller_Known_Size_Record on
+ 	Corresponding_Record_Type.
+ 	(Needs_Secondary_Stack): Likewise.
+ 
+ 2022-07-12  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-ppc-rtp.ads: Remove
+ 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Analyze_Package_Instantiation): Remove dubious
+ 	call to Set_Comes_From_Source.
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch5.adb (Check_Unreachable_Code): Refine heuristics.
+ 	* sem_util.ads, sem_util.adb (Is_Static_Constant_Name): Remove
+ 	this; instead we have a new function Is_Simple_Case in
+ 	Sem_Ch5.Check_Unreachable_Code.
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* gnatls.adb (Output_License_Information): Remove pragma
+ 	No_Return; call sites deal with Exit_Program.
+ 	* libgnat/g-socthi.adb (C_Connect): Suppress warning about
+ 	unreachable code.
+ 	* sem_ch5.adb (Check_Unreachable_Code): Special-case if
+ 	statements with static conditions.  If we remove unreachable
+ 	code (including the return statement) from a function, add
+ 	"raise Program_Error", so we won't warn about missing returns.
+ 	Remove Original_Node in test for N_Raise_Statement; it's not
+ 	needed.  Remove test for CodePeer_Mode; if Operating_Mode =
+ 	Generate_Code, then CodePeer_Mode can't be True.  Misc cleanup.
+ 	Do not reuse Nxt variable for unrelated purpose (the usage in
+ 	the Kill_Dead_Code loop is entirely local to the loop).
+ 	* sem_ch6.adb: Add check for Is_Transfer. Misc cleanup.
+ 	* sem_prag.adb: Minor.
+ 	* sem_res.adb: Minor.
+ 	* sem_util.adb: Minor cleanup.
+ 	(Is_Trivial_Boolean): Move to nonnested place, so it can be
+ 	called from elsewhere.
+ 	(Is_Static_Constant_Boolean): New function.
+ 	* sem_util.ads (Is_Trivial_Boolean): Export.
+ 	(Is_Static_Constant_Boolean): New function.
+ 
+ 2022-07-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-stchop.ads: Use a double underscore prefix for symbols.
+ 
+ 2022-07-12  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* freeze.adb (Check_Expression_Function.Find_Constant): Add a
+ 	check that a type that is referenced as the prefix of an
+ 	attribute is fully declared.
+ 	(Freeze_And_Append): Do not freeze the profile when freezing an
+ 	expression function.
+ 	(Freeze_Entity): When a tagged type is frozen, also freeze any
+ 	primitive operations of the type that are expression functions.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Do not prevent
+ 	freezing associated with an expression function body if the
+ 	function is a dispatching op.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch7.adb (Analyze_Package_Declaration): Check references to
+ 	unset objects.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Aspect_Yield): Look at the entity kind,
+ 	not at the declaration kind.
+ 
+ 2022-07-12  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnarl/a-reatim.ads, libgnat/a-cfdlli.ads,
+ 	libgnat/a-cfhama.ads, libgnat/a-cfhase.ads,
+ 	libgnat/a-cfinse.ads, libgnat/a-cfinve.ads,
+ 	libgnat/a-cforma.ads, libgnat/a-cforse.ads,
+ 	libgnat/a-chahan.ads, libgnat/a-cofove.ads,
+ 	libgnat/a-cofuma.ads, libgnat/a-cofuse.ads,
+ 	libgnat/a-cofuve.ads, libgnat/a-nbnbin.ads,
+ 	libgnat/a-nbnbre.ads, libgnat/a-ngelfu.ads,
+ 	libgnat/a-nlelfu.ads, libgnat/a-nllefu.ads,
+ 	libgnat/a-nselfu.ads, libgnat/a-nuelfu.ads,
+ 	libgnat/a-strbou.ads, libgnat/a-strfix.ads,
+ 	libgnat/a-strmap.ads, libgnat/a-strunb.ads,
+ 	libgnat/a-strunb__shared.ads,  libgnat/a-strsea.ads,
+ 	libgnat/a-textio.ads, libgnat/a-tideio.ads,
+ 	libgnat/a-tienio.ads, libgnat/a-tifiio.ads,
+ 	libgnat/a-tiflio.ads, libgnat/a-tiinio.ads,
+ 	libgnat/a-timoio.ads, libgnat/i-c.ads, libgnat/interfac.ads,
+ 	libgnat/interfac__2020.ads, libgnat/s-atacco.ads,
+ 	libgnat/s-stoele.ads: Annotate packages and subprograms with
+ 	returning annotations.
+ 
+ 2022-07-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* rtsfind.ads (RE_Id): Remove RE_Str_Concat_Bounds_N values.
+ 	(RE_Unit_Table): Remove RE_Str_Concat_Bounds_N entries.
+ 	* libgnat/s-conca2.ads (Str_Concat_2): Adjust head comment.
+ 	(Str_Concat_Bounds_2): Delete.
+ 	* libgnat/s-conca2.adb (Str_Concat_2): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_2): Delete.
+ 	* libgnat/s-conca3.ads (Str_Concat_3): Adjust head comment.
+ 	(Str_Concat_Bounds_3): Delete.
+ 	* libgnat/s-conca3.adb (Str_Concat_3): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_3): Delete.
+ 	* libgnat/s-conca4.ads (Str_Concat_4): Adjust head comment.
+ 	(Str_Concat_Bounds_4): Delete.
+ 	* libgnat/s-conca4.adb (Str_Concat_4): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_4): Delete.
+ 	* libgnat/s-conca5.ads (Str_Concat_5): Adjust head comment.
+ 	(Str_Concat_Bounds_5): Delete.
+ 	* libgnat/s-conca5.adb (Str_Concat_5): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_5): Delete.
+ 	* libgnat/s-conca6.ads (Str_Concat_6): Adjust head comment.
+ 	(Str_Concat_Bounds_6): Delete.
+ 	* libgnat/s-conca6.adb (Str_Concat_6): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_6): Delete.
+ 	* libgnat/s-conca7.ads (Str_Concat_7): Adjust head comment.
+ 	(Str_Concat_Bounds_7): Delete.
+ 	* libgnat/s-conca7.adb (Str_Concat_7): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_7): Delete.
+ 	* libgnat/s-conca8.ads (Str_Concat_8): Adjust head comment.
+ 	(Str_Concat_Bounds_8): Delete.
+ 	* libgnat/s-conca8.adb (Str_Concat_8): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_8): Delete.
+ 	* libgnat/s-conca9.ads (Str_Concat_9): Adjust head comment.
+ 	(Str_Concat_Bounds_9): Delete.
+ 	* libgnat/s-conca9.adb (Str_Concat_9): Use the length of the last
+ 	input to size the last assignment.
+ 	(Str_Concat_Bounds_9): Delete.
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Iterator_Loop_Over_Array): Use _Next and
+ 	_Previous in the optimized expansion of "for ... of".  No longer
+ 	need to check parameter profiles for these, because the
+ 	leading-underscore names are unique.
+ 	* libgnat/a-convec.ads (_Next, _Previous): Renamings of Next and
+ 	Previous, to avoid namespace pollution.
+ 	* libgnat/a-cbdlli.ads, libgnat/a-cbhama.ads,
+ 	libgnat/a-cbhase.ads, libgnat/a-cbmutr.ads,
+ 	libgnat/a-cborma.ads, libgnat/a-cborse.ads,
+ 	libgnat/a-cdlili.ads, libgnat/a-cidlli.ads,
+ 	libgnat/a-cihama.ads, libgnat/a-cihase.ads,
+ 	libgnat/a-cimutr.ads, libgnat/a-ciorma.ads,
+ 	libgnat/a-ciorse.ads, libgnat/a-cobove.ads,
+ 	libgnat/a-cohama.ads, libgnat/a-cohase.ads,
+ 	libgnat/a-coinve.ads, libgnat/a-comutr.ads,
+ 	libgnat/a-coorma.ads, libgnat/a-coorse.ads: Likewise.  Also,
+ 	remove duplicated comments -- refer to one comment about _Next,
+ 	_Previous, Pseudo_Reference in libgnat/a-convec.ads. DRY.
+ 	* scng.adb (Scan): Allow leading underscores in identifiers in
+ 	the run-time library.
+ 	* snames.ads-tmpl (Name_uNext, Name_uPrevious): New names with
+ 	leading underscores.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Check_Unreachable_Code): Extend suppression to
+ 	calls with No_Return aspect, but narrow it to functions.
+ 	* sem_res.adb (Resolve_Call): Warn about unreachable code after
+ 	calls with No_Return.
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* scans.ads: Fix obsolete comments about Tok_Special, and give
+ 	Special_Character a predicate assuring it is one of the two
+ 	characters used in preprocessing.
+ 	* scng.ads: Clean up comments.
+ 	* scng.adb: Clean up handling of Tok_Special.  Remove comment
+ 	about '@' (target_name), which doesn't seem very helpful.
+ 	Set_Special_Character will now blow up if given anything other
+ 	than '#' and '$', because of the predicate on Special_Character;
+ 	it's not clear why it used to say "when others => null;".
+ 	Remove Comment_Is_Token, which is not used.
+ 	* scn.ads: Remove commented-out use clause.  Remove redundant
+ 	comment.
+ 	* ali-util.adb: Use "is null" for do-nothing procedures.
+ 	* gprep.adb (Post_Scan): Use "is null".
+ 
+ 2022-07-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnarl/s-solita.adb (Task_Termination_Handler_T): Ignore all
+ 	exceptions propagated by Specific_Handler.
+ 	* libgnarl/s-tassta.adb, libgnarl/s-taskin.ads: Minor.
+ 
+ 2022-07-12  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem.adb (Preanalyze): Suppress checks when not in GNATprove
+ 	mode.
+ 	* sem_res.adb (Preanalyze_And_Resolve): Add cross reference in
+ 	comment to above procedure.
+ 	* sinfo.ads: Typo fix in comment.
+ 
+ 2022-07-12  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cfidll.adb, libgnat/a-cfidll.ads: Implementation
+ 	files of the formal unbounded indefinite list.
+ 	* Makefile.rtl, impunit.adb: Take into account the add of the
+ 	new files.
+ 
+ 2022-07-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_Variable): Remove excessive guard.
+ 
+ 2022-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gcc-interface/Make-lang.in (ada/generated/gnatvsn.ads):
+ 	Simplify regular expression. The "interval expression",
+ 	i.e. \{8\} is part of the POSIX regular expressions, so it
+ 	should not be a problem for modern implementations of sed.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu): Update comment.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (simple_constant_p): Declare.
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Strip
+ 	the qualifiers from the type of a simple constant.
+ 	(simple_constant_p): New predicate.
+ 	* gcc-interface/trans.cc (node_is_atomic): Return true for objects
+ 	with atomic type except for simple constants.
+ 	(node_is_volatile_full_access): Return false for simple constants
+ 	with VFA type.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Variable>: Create a
+ 	local constant holding the underlying GNAT type of the object.  Do
+ 	not fiddle with the object size for an unconstrained array.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Constify a
+ 	local variable and move a couple of others around.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_gimplify_expr) <SAVE_EXPR>: New case.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Function return mechanisms): New paragraph.
+ 
+ 2022-07-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Is_Non_Preelaborable_Construct): Fix for
+ 	deferred constants.
+ 
+ 2022-07-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* libgnat/s-regpat.adb, libgnat/s-regpat.ads (Compile): Add a
+ 	new defaulted parameter Error_When_Too_Small to trigger an
+ 	error, if specified true, when Matcher is too small to hold the
+ 	compiled regex program.
+ 
+ 2022-07-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Selected_Component): Add condition to
+ 	avoid interpreting derived type components as candidates for
+ 	selected components in preanalysis of inherited class
+ 	conditions.
+ 
+ 2022-07-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* ghost.adb (Check_Ghost_Context): Delay checking for generic
+ 	associations.
+ 	(Check_Ghost_Context_In_Generic_Association): Perform ghost
+ 	checking in analyzed generic associations.
+ 	(Check_Ghost_Formal_Procedure_Or_Package): Check SPARK RM
+ 	6.9(13-14) for formal procedures and packages.
+ 	(Check_Ghost_Formal_Variable): Check SPARK RM 6.9(13-14) for
+ 	variables.
+ 	* ghost.ads: Declarations for the above.
+ 	* sem_ch12.adb (Analyze_Associations): Apply delayed checking
+ 	for generic associations.
+ 	(Analyze_Formal_Object_Declaration): Same.
+ 	(Analyze_Formal_Subprogram_Declaration): Same.
+ 	(Instantiate_Formal_Package): Same.
+ 	(Instantiate_Formal_Subprogram): Same.
+ 	(Instantiate_Object): Same.  Copy ghost aspect to newly declared
+ 	object for actual for IN formal object. Use new function
+ 	Get_Enclosing_Deep_Object to retrieve root object.
+ 	(Instantiate_Type): Copy ghost aspect to declared subtype for
+ 	actual for formal type.
+ 	* sem_prag.adb (Analyze_Pragma): Recognize new allowed
+ 	declarations.
+ 	* sem_util.adb (Copy_Ghost_Aspect): Copy the ghost aspect
+ 	between nodes.
+ 	(Get_Enclosing_Deep_Object): New function to return enclosing
+ 	deep object (or root for reachable part).
+ 	* sem_util.ads (Copy_Ghost_Aspect): Same.
+ 	(Get_Enclosing_Deep_Object): Same.
+ 	* libgnat/s-imageu.ads: Declare formal subprograms as ghost.
+ 	* libgnat/s-valuei.ads: Same.
+ 	* libgnat/s-valuti.ads: Same.
+ 
+ 2022-07-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Type_Conversion): Code cleanup since the
+ 	previous static check has been moved to Valid_Tagged_Conversion.
+ 	(Valid_Tagged_Conversion): Fix the code checking conversion
+ 	to/from interface types since incorrectly returns True when the
+ 	parent type of the operand type (or the target type) is an
+ 	interface type; add missing static checks on interface type
+ 	conversions.
+ 
+ 2022-07-06  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/s-secsta.ads (SS_Allocate): Add new Alignment
+ 	parameter.
+ 	(Memory_Alignment): Remove.
+ 	* libgnat/s-secsta.adb (Align_Addr): New.
+ 	(SS_Allocate): Add new Alignment parameter. Realign pointer if
+ 	needed. Don't allocate anything for 0-sized allocations.
+ 	* gcc-interface/utils2.cc (build_call_alloc_dealloc_proc): Add
+ 	allocated object's alignment as last parameter to allocation
+ 	invocation.
+ 
+ 2022-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/g-socket.adb (Get_Address_Info): Reduce scope of the
+ 	Found variable; avoid repeated assignment inside the loop.
+ 
+ 2022-07-06  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl [arm,aarch64 vxworks7]: Remove rtp and kernel
+ 	build macros and set an error variable if needed.
+ 	[x86,x86_vxworks7]: Likewise.
+ 	[ppc,ppc64]: Set an error variable if needed.
+ 	(rts-err): New phony Makefile target.
+ 	(setup-rts): Depend on rts-err.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Allocator_For_BIP_Return): New local function.
+ 	(Expand_N_Object_Declaration): Use it to build the three allocators
+ 	for a Build-In-Place return with an unconstrained type.  Update the
+ 	head comment after other recent changes.
+ 
+ 2022-07-06  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-e500-kernel.ads: Remove.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
+ 
+ 2022-07-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* gnat_cuda.adb (Empty_CUDA_Global_Subprogram): Set
+ 	Specification and Corresponding_Spec to match the original
+ 	Kernel_Body.
+ 
+ 2022-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Build_Static_Check_Helper_Call): Replace explicit
+ 	call to Make_Unchecked_Type_Conversion with a call to
+ 	Unchecked_Convert_To.
+ 	* tbuild.adb (Unchecked_Convert_To): Fix whitespace.
+ 
+ 2022-07-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Restore first sentence of a
+ 	comment.
+ 
+ 2022-07-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Record_Aggregate): Do not call
+ 	Is_Full_Access_Aggregate here.
+ 	* freeze.ads (Is_Full_Access_Aggregate): Delete.
+ 	* freeze.adb (Is_Full_Access_Aggregate): Move to...
+ 	(Freeze_Entity): Do not call Is_Full_Access_Aggregate here.
+ 	* sem_aggr.adb (Is_Full_Access_Aggregate): ...here
+ 	(Resolve_Aggregate): Call Is_Full_Access_Aggregate here.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(Warning Message Control): Update description of switch -gnatwj.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* sem_ch10.adb (Analyze_With_Clause): Warn on WITH clauses for
+ 	obsolete renamed units; in Ada 83 mode do not consider
+ 	predefined renamings to be obsolete.
+ 
+ 2022-07-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Make_Subtype_From_Expr): Do not set field to Empty.
+ 	* sem_util.adb (Visit_Itype): Remove ??? comment.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Note_Possible_Modification): Revert a
+ 	special-case for validity checks on Long_Float type.
+ 	* snames.ads-tmpl (Name_Attr_Long_Float): Remove name added
+ 	exclusively for the mentioned fix.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch6.adb (Set_Formal_Mode): Remove unnecessary setting of
+ 	Never_Set_In_Source.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch6.adb (Process_Formals): Avoid repeated calls to
+ 	Expression.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_code.adb (Setup_Asm_IO_Args): Remove guard against No_List.
+ 	* par_sco.adb (Process_Decisions): Likewise.
+ 	* sem_ch13.adb (Check_Component_List): Likewise.
+ 	* sem_ch6.adb (FCL): Likewise.
+ 
+ 2022-07-05  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* cstreams.c (__gnat_full_name) [QNX]: Remove block.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* osint.adb (Locate_File): Use Name_Find with a parameter and
+ 	not with a global buffer.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Init_Statements): Reuse Get_Pragma_Arg.
+ 	* exp_prag.adb (Arg_N): Likewise.
+ 
+ 2022-07-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* ghost.adb (Is_OK_Ghost_Context): Detect ghost type inside object
+ 	renaming.
+ 
+ 2022-07-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch7.adb: Change two constants Is_Protected_Body and
+ 	Is_Prot_Body to be Is_Protected_Subp_Body; these are not true
+ 	for protected bodies, but for protected subprogram bodies.
+ 	(Expand_Cleanup_Actions): No need to search for
+ 	Activation_Chain_Entity; just use Activation_Chain_Entity.
+ 	* sem_ch8.adb (Find_Direct_Name): Use Entyp constant.
+ 	* atree.adb, atree.ads, atree.h, nlists.adb, nlists.ads
+ 	(Parent): Provide nonoverloaded versions of Parent, so that they
+ 	can be easily found in the debugger.
+ 	* debug_a.adb, debug_a.ads: Clarify that we're talking about the
+ 	-gnatda switch; switches are case sensitive.  Print out the
+ 	Chars field if appropriate, which makes it easier to find things
+ 	in the output.
+ 	(Debug_Output_Astring): Simplify. Also fix an off-by-one
+ 	bug ("for I in Vbars'Length .." should have been "for I in
+ 	Vbars'Length + 1 ..").  Before, it was printing Debug_A_Depth +
+ 	1 '|' characters if Debug_A_Depth > Vbars'Length.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Remove unnecessary call to
+ 	Analyze.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/g-socket.adb (Raise_Host_Error): Add No_Return aspect.
+ 	(Raise_GAI_Error): Likewise.
+ 	* libgnat/g-socket.ads (Raise_Socket_Error): Likewise.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Aggregate_Constraint_Checks): Fix whitespace;
+ 	refactor repeated code; replace a ??? comment with an
+ 	explanation based on the comment for the routine spec.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads (Note_Possible_Modification): Fix occurrence of
+ 	May_Be_Modified in comment.
+ 	* sem_warn.ads (Check_Unset_Reference): Fix occurrence of
+ 	Not_Assigned in comment.
+ 
+ 2022-07-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Take into account the
+ 	possibility of homonyms.
+ 
+ 2022-07-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Rewrite as a renaming
+ 	for any nonaliased local object with nominal unconstrained subtype
+ 	originally initialized with the result of a function call that has
+ 	been rewritten as the dereference of a reference to the result.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Do not do it here
+ 
+ 2022-07-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_imgv.adb (Build_Enumeration_Image_Tables): Also disable
+ 	perfect hash in GNAT_Mode.
+ 	* raise-gcc.c (__gnat_Unwind_RaiseException): Add support for
+ 	disabling exception propagation.
+ 	* sem_eval.adb (Compile_Time_Known_Value): Update comment and
+ 	remove wrong call to Check_Error_Detected.
+ 	* sem_prag.adb (Check_Loop_Pragma_Grouping, Analyze_Pragma):
+ 	Remove exception propagation during bootstrap.
+ 
+ 2022-07-05  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Array_Aggregate): Remove obsolete code.
+ 	Delay the expansion of aggregates initializing return objects of
+ 	build-in-place functions.
+ 	* exp_ch3.ads (Ensure_Activation_Chain_And_Master): Delete.
+ 	* exp_ch3.adb (Ensure_Activation_Chain_And_Master): Fold back to...
+ 	(Expand_N_Object_Declaration): ...here.
+ 	Perform the expansion of return objects of build-in-place functions
+ 	here instead of...
+ 	* exp_ch6.ads (Is_Build_In_Place_Return_Object): Declare.
+ 	* exp_ch6.adb (Expand_N_Extended_Return_Statement): ...here.
+ 	(Is_Build_In_Place_Result_Type): Alphabetize.
+ 	(Is_Build_In_Place_Return_Object): New predicate.
+ 	* exp_ch7.adb (Enclosing_Function): Delete.
+ 	(Process_Object_Declaration): Tidy up handling of return objects.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Do not decorate and
+ 	freeze the actual type if it is the same as the nominal type.
+ 	* sem_ch6.adb: Remove use and with clauses for Exp_Ch3.
+ 	(Analyze_Function_Return): Analyze again all return objects.
+ 	(Create_Extra_Formals): Do not force the definition of an Itype
+ 	if the subprogram is a compilation unit.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gnatls.adb (Corresponding_Sdep_Entry): Remove dead return
+ 	statement in defensive path; there is another return statement
+ 	for a normal execution of this routine, so rule Ada RM 6.5(5),
+ 	which requires function to have at least one return statement is
+ 	still satisfied.
+ 	(Gnatls): Remove dead, call to nonreturning Exit_Program after
+ 	Output_License_Information which itself does not return.
+ 	* libgnat/a-exstat.adb (Bad_EO): Remove raise statement that was
+ 	meant to please some ancient version of GNAT.
+ 	* libgnat/g-awk.adb (Raise_With_Info): Likewise.
+ 	* sem_attr.adb (Check_Reference): Remove dead return statement;
+ 	rule Ada RM 6.5(5), which requires function to have at least one
+ 	return statement is still satisfied.
+ 	(Analyze_Attribute): Remove dead exit statement.
+ 	(Check_Reference): Same as above.
+ 	* sem_ch12.adb (Instantiate_Formal_Package): Remove dead raise
+ 	statement; it was inconsistent with other calls to
+ 	Abandon_Instantiation, which are not followed by a raise
+ 	statement.
+ 	* sem_prag.adb (Process_Convention): Remove dead defensive
+ 	assignment.
+ 	(Interrupt_State): Remove dead defensive exit statement.
+ 	(Do_SPARK_Mode): Likewise.
+ 	* sfn_scan.adb (Scan_String): Remove dead defensive assignment.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb, sem_prag.adb: Remove dead return statements
+ 	after calls to Error_Attr, Error_Pragma, Error_Pragma_Arg and
+ 	Placement_Error. All these calls raise exceptions that are
+ 	handled to gently recover from errors.
+ 
+ 2022-07-05  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks-ppc-kernel.ads (Word_Size): Compute
+ 	based on Standard'Word_Size.
+ 	(Memory_Size): Compute based on Word_Size.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Move call to
+ 	Set_Address_Taken so that it is executed when the prefix
+ 	attribute is legal.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Check_Unreachable_Code): Avoid explicit use of
+ 	Sloc; this should also help when we finally use Source_Span for
+ 	prettier error messages.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Check_Unreachable_Code): Remove redundant guard;
+ 	the call to Present wasn't needed either.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Block_Statement): Call to List_Length with
+ 	No_List is safe and will return zero.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Missing_Return): Add reference to an RM rule.
+ 
+ 2022-07-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Missing_Return): Remove outdated comment.
+ 
+ 2022-07-05  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.h (convert_addresses): Remove function declaration.
+ 
+ 2022-07-05  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl (*vxworks*): Remove most pre-vxworks7 code.
+ 	* vxworks-arm-link.spec: Remove.
+ 	* vxworks-e500-link.spec: Likewise.
+ 	* vxworks-smp-arm-link.spec: Likewise.
+ 	* vxworks-smp-e500-link.spec: Likewise.
+ 	* vxworks-smp-x86-link.spec: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Dispatching_Call): Merge the two special cases
+ 	where there are no controlling actuals but tag-indeternminate ones.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_disp.adb (Expand_Dispatching_Call): Fix detection of calls
+ 	that are dispatching on tagged result.
+ 
+ 2022-07-04  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl (ADA_EXCLUDE_SRCS): Add s-qnx.ads.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration) <OK_To_Rename_Ref>: New
+ 	local function.
+ 	<Rewrite_As_Renaming>: Change to a local variable whose value is
+ 	computed once and generate a call to Finalize after this is done.
+ 	Simplify the code creating the renaming at the end.
+ 
+ 2022-07-04  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl (GCC_SPEC_FILES): Remove vxworks cert files.
+ 
+ 2022-07-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Refactor duplicated code for
+ 	Count and Index attributes.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* checks.adb (Apply_Length_Check_On_Assignment): Return early if
+ 	the Suppress_Assignment_Checks flag is set.
+ 	(Selected_Range_Checks): Deal with conditional expressions.
+ 	* exp_ch4.adb (Too_Large_Length_For_Array): New constant.
+ 	(Expand_Concatenate): Use it in lieu of Too_Large_Max_Length.
+ 	(Expand_N_If_Expression): If the result has a unidimensional array
+ 	type but the dependent expressions have constrained subtypes with
+ 	known bounds, create a static temporary on the stack with a subtype
+ 	covering the result.
+ 	(Get_First_Index_Bounds): Deal with string literals.
+ 	* uintp.ads (Uint_256): New deferred constant.
+ 	* sinfo.ads (Suppress_Assignment_Checks): Document new usage.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration.Rewrite_As_Renaming):
+ 	Do not rewrite if the declaration has got constraints.
+ 	* sinfo.ads (Case Expression Alternative): Fix typo.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration.Rewrite_As_Renaming):
+ 	Be prepared for slices.
+ 	* exp_ch4.adb (Get_First_Index_Bounds): New procedure.
+ 	(Expand_Array_Comparison.Length_Less_Than_4): Call it.
+ 	(Expand_Concatenate): Try to compute a maximum length for
+ 	operands with variable length and a maximum total length at the
+ 	end.  If the concatenation is dynamic, but a sensible maximum
+ 	total length has been computed, use this length to create a
+ 	static array subtype for the temporary and return a slice of it.
+ 
+ 2022-07-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Possible_Deferred_Completion): Delete
+ 	Prev_Obj_Def formal parameter.  Reorganize code so that
+ 	statically matching check is also performed in the case where
+ 	the subtype given in the initial declaration is constrained and
+ 	the subtype given in the completion is not.
+ 
+ 2022-07-04  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo-utils.ads, einfo-utils.adb: Add predicates on subtypes E
+ 	and N.  Change some parameters to use the unpredicated subtypes,
+ 	because they sometimes return e.g. Empty.  Note that N_Entity_Id
+ 	has a predicate; Entity_Id does not.
+ 	* exp_tss.adb (Base_Init_Proc): Use Entity_Id instead of E,
+ 	because otherwise we fail the predicate. We shouldn't be
+ 	referring to single-letter names from far away anyway.
+ 	* sem_aux.adb (Is_Derived_Type): Likewise.
+ 	* sem_res.adb (Is_Definite_Access_Type): Use N_Entity_Id for
+ 	predicate.
+ 	* types.ads (Entity_Id): Add comment explaining the difference
+ 	between Entity_Id and N_Entity_Id.
+ 
+ 2022-07-04  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_util.adb (Remove_Side_Effects): Combine identical
+ 	branches.
+ 	* sem_attr.adb (Analyze_Attribute): Combine identical cases
+ 	Attribute_Has_Same_Storage and Attribute_Overlaps_Storage.
+ 	* sem_prag.adb (Check_Role): Combine E_Out_Parameter case with
+ 	general case for parameters.
+ 	* sem_util.adb (Accessibility_Level): Combine identical
+ 	branches.
+ 	* sprint.adb (Sprint_Node_Actual): Combine cases for
+ 	N_Real_Range_Specification and N_Signed_Integer_Type_Definition.
+ 
+ 2022-07-04  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* libgnat/s-os_lib.adb (Quote_Argument): Modify the result
+ 	buffer size calculation to handle the case where Arg'Length is
+ 	1.
+ 
+ 2022-07-04  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_util.adb (Expand_Subtype_From_Expr): Generate a new
+ 	subtype when Is_Constr_Subt_For_UN_Aliased is True, so the
+ 	Is_Constr_Subt_For_U_Nominal flag will not be set on the
+ 	preexisting subtype.
+ 	* sem_attr.adb, sem_ch3.adb: Minor.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* debug.adb (d.9): Remove usage.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Remove redundant
+ 	test on Debug_Flag_Dot_L.
+ 	(Is_Build_In_Place_Result_Type): Return false for nonlimited types.
+ 	(Is_Build_In_Place_Function): Tidy up and remove redundant test on
+ 	Debug_Flag_Dot_L.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Don't adjust the object
+ 	if the expression is a function call.
+ 	<Rewrite_As_Renaming>: Return true if the object needs finalization
+ 	and is initialized  with the result of a function call returned on
+ 	the secondary stack.
+ 	* exp_ch6.adb (Expand_Ctrl_Function_Call): Add Use_Sec_Stack boolean
+ 	parameter.  Early return if the parent is an object declaration and
+ 	Use_Sec_Stack is false.
+ 	(Expand_Call_Helper): Adjust call to Expand_Ctrl_Function_Call.
+ 	* exp_ch7.adb (Find_Last_Init): Be prepared for initialization still
+ 	present in the object declaration.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Call the predicates
+ 	Needs_Secondary_Stack and Needs_Finalization to guard the renaming
+ 	optimization.
+ 
+ 2022-07-04  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-cbhase.ads, libgnat/a-cborse.ads,
+ 	libgnat/a-cihase.ads, libgnat/a-ciorse.ads,
+ 	libgnat/a-cohase.ads, libgnat/a-coorse.ads (Key): New function
+ 	that takes a Container parameter, implemented as an expression
+ 	function, so it is self explanatory (doesn't need a comment).
+ 
+ 2022-07-04  Vasiliy Fofanov  <fofanov@adacore.com>
+ 
+ 	* doc/gnat_rm/the_gnat_library.rst: Fix length of title
+ 	underlines.
+ 
+ 2022-07-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Allocator): After calling Insert_Action
+ 	to insert a subtype declaration associated with an allocator,
+ 	the subtype declaration will usually be analyzed. But not
+ 	always. Add an explicit call to Preanalyze to cope with the
+ 	unusual case. The subtype declaration must be at least
+ 	preanalyzed before the call to Sem_Ch3.Process_Subtype a little
+ 	while later, during which we analyze an identifier that refers
+ 	to the subtype.
+ 
+ 2022-07-04  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Constant_Valid_Condition): Do not
+ 	generate a warning if the expression in question is an assertion
+ 	expression, or a subexpression thereof. But do call
+ 	Test_Comparison so that it can generate warnings for the cases
+ 	that it generates warnings for.
+ 	* sem_prag.ads: Modify Assertion_Expression_Pragma constant so
+ 	that the predicate Sem_Util.In_Assertion_Expression_Pragma
+ 	returns True for the expression of a Compile_Time_Error pragma.
+ 
+ 2022-07-04  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* doc/gnat_rm/the_gnat_library.rst: Add the new entry.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Comparison_Op): Deal with ambiguous operands
+ 	in all cases.
+ 	(Resolve_Equality_Op): Likewise, except for the case of the implicit
+ 	inequality operator created for a user-defined operator that is not
+ 	an intrinsic subprogram.
+ 
+ 2022-07-04  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-cbhase.adb, libgnat/a-cbhase.ads,
+ 	libgnat/a-cborse.adb, libgnat/a-cborse.ads,
+ 	libgnat/a-cihase.adb, libgnat/a-cihase.ads,
+ 	libgnat/a-ciorse.adb, libgnat/a-ciorse.ads,
+ 	libgnat/a-cohase.adb, libgnat/a-cohase.ads,
+ 	libgnat/a-conhel.adb, libgnat/a-conhel.ads,
+ 	libgnat/a-coorse.adb, libgnat/a-coorse.ads: Add Has_Element,
+ 	Element, Query_Element, and Next subprograms that take a Set
+ 	parameter. Add Tampering_With_Cursors_Prohibited function. These
+ 	are all new in Ada 2022.
+ 
+ 2022-07-04  Claire Dross  <dross@adacore.com>
+ 
+ 	* doc/gnat_rm/the_gnat_library.rst: Functional vectors, sets,
+ 	and maps are now controlled.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-07-04  Claire Dross  <dross@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst
+ 	(Debugging and Assertion Control): Add GNAT specific assertion
+ 	pragmas to the equivalent Assertion_Policy for the -gnata
+ 	option.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-07-04  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_disp.adb (Most_Descendant_Use_Clause): Remove call to
+ 	deprecated Is_Internal.
+ 	* sem_util.adb (Innermost_Master_Scope_Depth): Use
+ 	Find_Enclosing_Scope instead of Nearest_Dynamic_Scope to avoid
+ 	cases where relevant scopes get skipped leading to an incorrect
+ 	scope depth calculation.
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Build_In_Place_Formal): Also compute Returns_By_Ref
+ 	for the function if the extra formals were not built initially.
+ 
+ 2022-07-04  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Resolve_Iterable_Operation): Add guard to
+ 	prevent crash when the examined function has no formal
+ 	parameters and Etype is called on Empty entity.
+ 
+ 2022-07-04  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cfinse.adb, libgnat/a-cfinse.ads: Implementation
+ 	files of the sequence.
+ 	* Makefile.rtl, impunit.adb: Take into account the add of the
+ 	new files
+ 
+ 2022-07-04  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Pure_Function):
+ 	Fix ambiguous wording about context dependence.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* gcc-interface/misc.cc (gnat_get_sarif_source_language): New.
+ 	(LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE): Redefine.
+ 
+ 2022-06-02  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* gcc-interface/gigi.h: Update copyright notice.
+ 	* gcc-interface/lang-specs.h: Likewise.
+ 	* gcc-interface/utils.cc: Likewise.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/gigi.h (enum standard_datatypes): Remove values
+ 	for the SJLJ exception mechanism.
+ 	(jmpbuf_type): Delete.
+ 	(jmpbuf_ptr_type): Likewise.
+ 	(get_jmpbuf_decl): Likewise.
+ 	(set_jmpbuf_decl): Likewise.
+ 	(get_excptr_decl): Likewise.
+ 	(not_handled_by_others_decl): Likewise.
+ 	(setjmp_decl): Likewise.
+ 	(update_setjmp_buf_decl): Likewise.
+ 	(raise_nodefer_decl): Likewise.
+ 	(set_block_jmpbuf_decl): Likewise.
+ 	(get_block_jmpbuf_decl): Likewise.
+ 	* gcc-interface/trans.cc (gigi): Delete dead code.
+ 	* gcc-interface/utils.cc (gnat_binding_level): Remove JMPBUF_DECL.
+ 	(gnat_pushlevel): Do not clear it.
+ 	(set_block_jmpbuf_decl): Delete.
+ 	(get_block_jmpbuf_decl): Likewise.
+ 
+ 2022-06-02  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (warn_on_field_placement): Add insertion
+ 	character '.q' to warning string.
+ 
+ 2022-06-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in (gnatlib-shared-default): Add
+ 	-fno-lto.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity): Do not check the
+ 	scope of anonymous access Itypes.
+ 	* gcc-interface/trans.cc (Identifier_to_gnu): Do not translate
+ 	the return type of a subprogram here.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Expand_N_Package_Body): Build static dispatch
+ 	tables only for units that are not compilation units, unless
+ 	they are generic instances.  Do not push a scope for this.
+ 	(Expand_N_Package_Declaration): Build static dispatch tables
+ 	only for units that are both not compilation units and generic
+ 	instances.
+ 	* exp_disp.adb (Build_Static_Dispatch_Tables): Remove redundant
+ 	early return.  Push a scope for package bodies.
+ 	* sem_ch10.adb: Add with and use clauses for Exp_Disp.
+ 	(Analyze_Compilation_Unit): Build static dispatch tables here.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Clear the Is_Public
+ 	flag on thunks.
+ 
+ 2022-06-02  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch13.adb, exp_ch5.adb, exp_ch9.adb, exp_strm.adb,
+ 	sem_ch10.adb, sem_ch13.adb, sem_ch5.adb, sem_ch6.adb,
+ 	sem_ch8.adb, sem_elab.adb, sem_eval.adb, sem_prag.adb,
+ 	sem_util.adb: Remove checks for the missing list before
+ 	iterating with First/Next; reindent code and refill comments.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Has_Controlling_Result): Document new usage.
+ 	(Is_Thunk): Document secondary stack thunks.
+ 	(Returns_By_Ref): Adjust.
+ 	* exp_ch6.adb (Caller_Known_Size): Return true for tagged types.
+ 	(Expand_N_Extended_Return_Statement): Do not call Set_By_Ref.
+ 	(Expand_Simple_Function_Return): For a BIP return with an Alloc_Form
+ 	parameter, mark the node as returning on the secondary stack.
+ 	Replace call to Is_Limited_Interface with Is_Limited_View.  Deal wit
+ 	secondary stack thunks.  Do not call Set_By_Ref.  Optimize the case
+ 	of a call to a function whose type also needs finalization.
+ 	(Needs_BIP_Task_Actuals): Replace Thunk_Entity with Thunk_Target.
+ 	(Needs_BIP_Finalization_Master): Cosmetic fixes.
+ 	(Needs_BIP_Alloc_Form): Check No_Secondary_Stack restriction and
+ 	return true for tagged types.
+ 	* exp_ch7.adb (Transient Scope Management): Update description.
+ 	* exp_disp.adb (Expand_Dispatching_Call): Always set Returns_By_Ref
+ 	on designated type if the call is dispatching on result.  Tidy up.
+ 	(Expand_Interface_Thunk): Change type of Thunk_Code from Node_Id to
+ 	List_Id.  Change type of local variables from Node_Id to Entity_Id.
+ 	Propagate Aliased_Present flag to create the formals and explicitly
+ 	set Has_Controlling_Result to False.  Build a secondary stack thunk
+ 	if necessary in the function case.
+ 	(Expand_Secondary_Stack_Thunk): New function.
+ 	(Make_Secondary_DT): Build secondary stack thunks if necessary.
+ 	(Make_DT): Likewise.
+ 	(Register_Predefined_Primitive): Likewise.
+ 	(Register_Primitive): Likewise.
+ 	* exp_util.ads (Is_Secondary_Stack_Thunk): Declare.
+ 	(Thunk_Target): Likewise.
+ 	* exp_util.adb (Is_Secondary_Stack_Thunk): New function.
+ 	(Thunk_Target): Likewise.
+ 	* fe.h (Is_Secondary_Stack_Thunk): Declare.
+ 	(Thunk_Target): Likewise.
+ 	* gen_il-fields.ads (Opt_Field_Enum): Remove By_Ref.
+ 	* gen_il-gen-gen_nodes.adb (N_Simple_Return_Statement): Likewise.
+ 	(N_Extended_Return_Statement): Likewise.
+ 	* sem_ch6.adb (Analyze_Subprogram_Specification): Skip check for
+ 	abstract return type in the thunk case.
+ 	(Create_Extra_Formals): Replace Thunk_Entity with Thunk_Target.
+ 	* sem_disp.adb (Check_Controlling_Formals): Skip in the thunk case.
+ 	* sem_util.adb: Add use and with clauses for Exp_Ch6.
+ 	(Compute_Returns_By_Ref): Do not process procedures and only set
+ 	the flag for direct return by reference.
+ 	(Needs_Secondary_Stack): Do not return true for specific tagged
+ 	types and adjust comments accordingly.
+ 	* sinfo.ads (By_Ref): Delete.
+ 	(N_Simple_Return_Statement): Remove By_Ref.
+ 	(N_Extended_Return_Statement): Likewise.
+ 	* gcc-interface/ada-tree.h (TYPE_RETURN_UNCONSTRAINED_P): Delete.
+ 	* gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Do not use it.
+ 	Return by direct reference if the return type needs the secondary
+ 	stack as well as for secondary stack thunks.
+ 	* gcc-interface/gigi.h (fntype_same_flags_p): Remove parameter.
+ 	* gcc-interface/misc.cc (gnat_type_hash_eq): Adjust to above change.
+ 	* gcc-interface/trans.cc (finalize_nrv): Replace test on
+ 	TYPE_RETURN_UNCONSTRAINED_P with TYPE_RETURN_BY_DIRECT_REF_P.
+ 	(Subprogram_Body_to_gnu): Do not call maybe_make_gnu_thunk for
+ 	secondary stack thunks.
+ 	(Call_to_gnu): Do not test TYPE_RETURN_UNCONSTRAINED_P.
+ 	(gnat_to_gnu) <N_Simple_Return_Statement>: In the return by direct
+ 	reference case, test for the presence of Storage_Pool on the node
+ 	to build an allocator.
+ 	(maybe_make_gnu_thunk): Deal with Thunk_Entity and Thunk_Target.
+ 	* gcc-interface/utils.cc (fntype_same_flags_p): Remove parameter.
+ 
+ 2022-06-02  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* einfo.ads: Fix reference to Global_Entity_Suppress and
+ 	Local_Entity_Suppress variable in the comments.
+ 	* sem.ads: Likewise.
+ 	* sem_prag.adb: Likewise.
+ 
+ 2022-06-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb: Use Always_Return instead of Terminating
+ 	to annotate termination for GNATprove.
+ 	* libgnat/s-arit32.adb: Idem.
+ 	* libgnat/s-spcuop.ads: Idem.
+ 
+ 2022-06-02  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cofuse.ads, libgnat/a-cofuse.adb,
+ 	libgnat/a-cofuma.ads, libgnat/a-cofuma.adb: Make Length and
+ 	Num_Overlaps return Big_Natural.
+ 	* libgnat/a-cforse.ads, libgnat/a-cforse.adb,
+ 	libgnat/a-cforma.adb, libgnat/a-cfhase.ads,
+ 	libgnat/a-cfhase.adb, libgnat/a-cfhama.adb,
+ 	libgnat/a-cfdlli.adb: Adapt code to handle Big_Integers instead
+ 	of Count_Type.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Init_Secondary_Tags.Initialize_Tag): Initialize the
+ 	Offset_Func component by means of 'Unrestricted_Access.
+ 
+ 2022-06-02  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* errout.adb (Write_JSON_Span): Add subprogram name to emitted
+ 	JSON.
+ 
+ 2022-06-02  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_ch7.adb (Set_Referencer_Of_Non_Subprograms): New local
+ 	procedure, used for code refactoring. Also take into account
+ 	Inline_Always pragma when deciding to make a symbol public for
+ 	C generation.
+ 
+ 2022-06-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* atree.adb (New_Copy): Reset flags related to ghost entities
+ 	before marking the new node.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Freeze_Subprogram.Register_Predefined_DT_Entry): Move
+ 	procedure to...
+ 	* exp_disp.ads (Expand_Interface_Thunk): Move declaration to...
+ 	(Register_Predefined_Primitive): Declare.
+ 	* exp_disp.adb (Expand_Interface_Thunk): ...here.
+ 	(Register_Predefined_Primitive): ...here and change into a function
+ 	returning List_Id.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_Freeze_Record_Type): Adjust comment.
+ 	(Expand_N_Object_Declaration): Do not build static dispatch tables.
+ 	* exp_disp.adb (Make_And_Insert_Dispatch_Table): New procedure.
+ 	(Build_Static_Dispatch_Tables): Call it to build the dispatch tables
+ 	and wrap them in the Actions list of a freeze node.
+ 
+ 2022-06-02  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-arm.ads (Support_Atomic_Primitives):
+ 	Set True.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise:
+ 
+ 2022-06-02  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* libgnat/g-dyntab.ads (Table_Type): Update documentation.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* freeze.adb (Check_Expression_Function.Find_Constant): Make test
+ 	for deferred constants more robust.
+ 
+ 2022-06-02  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/i-cstrin.ads (Update): Update precondition.
+ 
+ 2022-06-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch2.adb (Analyze_Identifier): Add checking for ghost
+ 	context.
+ 	* sem_ch5.adb (Analyze_Implicit_Label_Declaration): Treat
+ 	implicit labels like other entities by setting their ghost
+ 	status according to context.
+ 	* ghost.adb (Check_Ghost_Context): Adapt checking.
+ 
+ 2022-06-02  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/i-cstrin.ads (Update): Add precondition.
+ 
+ 2022-06-02  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Label_Entity): Remove body.
+ 	* sem_ch5.ads (Analyze_Label_Entity): Remove spec.
+ 
+ 2022-06-02  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Propagate_DIC_Attributes): Add ??? comment.
+ 	(Propagate_Invariant_Attributes): Likewise.  Propagate the
+ 	Has_Inheritable_Invariants and Has_Inherited_Invariants to
+ 	the base type of the target type.
+ 
+ 2022-06-02  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-linux-arm.ads (Memory_Size): Compute based on
+ 	Word_Size.
+ 
+ 2022-06-02  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads (Word_Size):
+ 	Compute based on Standard'Word_Size. (Memory_Size): Compute
+ 	based on Word_Size.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
+ 
+ 2022-06-02  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* gnatbind.adb (Gnatbind): Add initialize call for Uintp
+ 	* gnatls.adb (Gnatls): Likewise.
+ 	* gprep.adb (Gnatprep): Likewise.
+ 	* make.adb (Initialize): Likewise.
+ 
+ 2022-06-02  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-cfinve.ads (Element): Change the type of the
+ 	Position parameter to Extended_Index.
+ 	* libgnat/a-cfinve.adb (Element): Idem.
+ 	* libgnat/a-cofove.ads (Element): Idem.
+ 	* libgnat/a-cofove.adb (Element): Idem.
+ 
+ 2022-06-02  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/s-atacco.ads (To_Pointer): Add Global => null.
+ 	(To_Address): Add SPARK_Mode => Off.
+ 
+ 2022-06-02  Joffrey Huguet  <huguet@adacore.com>
+ 
+ 	* libgnat/i-cstrin.ads (To_Chars_Ptr): Add SPARK_Mode => Off.
+ 	(Free): Likewise.
+ 	(New_Char_Array): Add global contracts and Volatile attribute.
+ 	(New_String): Likewise.
+ 	(Value, Strlen, Update): Add global contracts and preconditions.
+ 	* libgnat/i-cstrin.adb: Add SPARK_Mode => Off to the package
+ 	body.
+ 
+ 2022-06-01  Yannick Moy  <moy@adacore.com>
+ 
+ 	* contracts.adb (Check_Type_Or_Object_External_Properties): Check
+ 	the validity of combinations only when No_Caching is not used.
+ 	* sem_prag.adb (Analyze_External_Property_In_Decl_Part): Check
+ 	valid combinations with No_Caching.
+ 
+ 2022-06-01  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-vxworks7-aarch64.ads (Word_Size): Compute
+ 	based on Standard'Word_Size. (Memory_Size): Compute based
+ 	on Word_Size.
+ 	* libgnat/system-vxworks7-arm.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
+ 
+ 2022-06-01  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* libgnat/system-qnx-arm.ads (Memory_Size): Compute based on
+ 	Word_Size.
+ 
+ 2022-06-01  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-util.adb (Ignore): Add missing space to message string.
+ 
+ 2022-06-01  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_prag.ads (Assertion_Expression_Pragmas): Fix value for
+ 	pragma Subprogram_Variant.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Caller_Known_Size): Invoke Needs_Secondary_Stack in
+ 	lieu of Returns_On_Secondary_Stack.
+ 	(Expand_Call_Helper): Likewise.
+ 	(Expand_Simple_Function_Return): Likewise.
+ 	(Needs_BIP_Alloc_Form): Likewise.
+ 	* exp_ch7.adb (Wrap_Transient_Declaration): Likewise.
+ 	* sem_res.adb (Resolve_Call): Likewise.
+ 	(Resolve_Entry_Call): Likewise.
+ 	* sem_util.ads (Returns_On_Secondary_Stack): Rename into...
+ 	(Needs_Secondary_Stack): ...this.
+ 	* sem_util.adb (Returns_On_Secondary_Stack): Rename into...
+ 	(Needs_Secondary_Stack): ...this.
+ 	* fe.h (Returns_On_Secondary_Stack): Delete.
+ 	(Needs_Secondary_Stack): New function.
+ 	* gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Replace call
+ 	to Returns_On_Secondary_Stack with Needs_Secondary_Stack.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): For the case where
+ 	there is no previous declaration, freeze the body entity only after
+ 	it has been processed as a new overloaded name.
+ 	Use Was_Expression_Function to recognize expression functions.
+ 	* sem_disp.adb (Check_Dispatching_Operation): Do not require a body
+ 	which is the last primitive to be frozen here.
+ 
+ 2022-06-01  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cfdlli.adb ("="): Make the function properly loop
+ 	over the right list.
+ 
+ 2022-06-01  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* checks.adb (Apply_Predicate_Check): Refine condition for
+ 	applying optimization.
+ 	* sem_ch3.adb (Analyze_Component_Declaration): Adjust calls to
+ 	Should_Build_Subtype.
+ 	(Analyze_Object_Declaration): Likewise.
+ 	(Should_Build_Subtype): Rename/move to ...
+ 	* sem_util.ads (Build_Default_Subtype_OK): ... this.
+ 	* sem_util.adb (Build_Default_Subtype_OK): Moved from
+ 	sem_ch3.adb.
+ 
+ 2022-06-01  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* init.c (__gnat_adjust_context_for_raise) [QNX][__thumb2__]: Bump
+ 	the pc an extra byte.
+ 
+ 2022-06-01  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Document new behavior.
+ 	* errout.adb (Write_JSON_Location): Output absolute paths when
+ 	needed.
+ 	* switch-c.adb (Scan_Front_End_Switches): Update -gnatef
+ 	comment.
+ 	* usage.adb (Usage): Update description of -gnatef.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* contracts.adb (Build_Postconditions_Procedure): Set Is_Inlined
+ 	unconditionnally on the procedure entity.
+ 
+ 2022-06-01  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Access): Propagate null-exclusion flag
+ 	from parent type.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Loop_Statement): Add a comment about
+ 	a finalization issue.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Caller_Known_Size): Call Returns_On_Secondary_Stack
+ 	instead of Requires_Transient_Scope and tidy up.
+ 	(Needs_BIP_Alloc_Form): Likewise.
+ 	* exp_util.adb (Initialized_By_Aliased_BIP_Func_Call): Also return
+ 	true if the build-in-place function call has no BIPalloc parameter.
+ 	(Is_Finalizable_Transient): Remove redundant test.
+ 
+ 2022-06-01  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Note that hardening
+ 	features are experimental.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-06-01  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Set the
+ 	Corresponding_Spec field of a wrapper subprogram body before
+ 	analyzing the subprogram body; the field will be set (again)
+ 	during analysis, but we need it to be set earlier.
+ 	* exp_ch13.adb (Expand_N_Freeze_Entity): Add wrapper subprogram
+ 	bodies to the list of declarations for which we do not want to
+ 	suppress checks.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Indirect_Temp_Needed): Adjust reference in comment.
+ 
+ 2022-06-01  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl (GNATLIB_SHARED): Revert disablement for arm-qnx.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb
+ 	(Returns_On_Secondary_Stack.Caller_Known_Size_Record): Directly
+ 	check the dependence on discriminants for the variant part, if
+ 	any, instead of calling the Is_Definite_Subtype predicate.
+ 
+ 2022-06-01  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix warning tag.
+ 
+ 2022-06-01  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Adjust conditions under which
+ 	warning messages should be emitted and their tags as well.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_disp.ads (Expand_Interface_Thunk): Change type of Prim.
+ 	* exp_disp.adb (Expand_Interface_Thunk): Declare Is_Predef_Op
+ 	earlier, do not initialize Iface_Formal, use No idiom and tweaks
+ 	comments.
+ 	(Register_Primitive): Declare L earlier and tweak comments.
+ 	* sem_disp.adb (Check_Dispatching_Operation): Move tests out of
+ 	loop.
+ 
+ 2022-06-01  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch3.ads: Replace visible Build_Discr_Checking_Funcs (which
+ 	did not need to be visible - it was not referenced outside this
+ 	package) with Build_Or_Copy_Discr_Checking_Funcs.
+ 	* exp_ch3.adb: Refactor existing code into 3 procedures -
+ 	Build_Discr_Checking_Funcs, Copy_Discr_Checking_Funcs, and
+ 	Build_Or_Copy_Discr_Checking_Funcs. This refactoring is intended
+ 	to be semantics-preserving.
+ 	* exp_ch4.adb (Expand_N_Selected_Component): Detect case where a
+ 	call should be generated to the Discriminant_Checking_Func for
+ 	the component in question, but that subprogram does not yet
+ 	exist.
+ 	* sem_ch13.adb (Freeze_Entity_Checks): Immediately before
+ 	calling Build_Predicate_Function, add a call to
+ 	Exp_Ch3.Build_Or_Copy_Discr_Checking_Funcs in order to ensure
+ 	that Discriminant_Checking_Func attributes are already set when
+ 	Build_Predicate_Function is called.
+ 	* sem_ch6.adb (Analyze_Expression_Function): If the expression
+ 	of a static expression function has been transformed into an
+ 	N_Raise_xxx_Error node, then we need to copy the original
+ 	expression in order to check the requirement that the expression
+ 	must be a potentially static expression. We also want to set
+ 	aside a copy the untransformed expression for later use in
+ 	checking calls to the expression function via
+ 	Inline_Static_Function_Call.  So introduce a new function,
+ 	Make_Expr_Copy, for use in these situations.
+ 	* sem_res.adb (Preanalyze_And_Resolve): When analyzing certain
+ 	expressions (e.g., a default parameter expression in a
+ 	subprogram declaration) we want to suppress checks. However, we
+ 	do not want to suppress checks for the expression of an
+ 	expression function.
+ 
+ 2022-06-01  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Iterator_Loop_Over_Container): For each
+ 	subprogram found, assert that the variable is Empty, so we can
+ 	detect bugs where we find two or more things with the same name.
+ 	Without this patch, that bug would happen when we add the new
+ 	Next procedure.  For Step, make sure we pick the right one, by
+ 	checking name and number of parameters.  For Get_Element_Access,
+ 	check that we're picking a function.  That's not really
+ 	necessary, because there is no procedure with that name, but it
+ 	seems cleaner this way.
+ 	* rtsfind.ads: Minor comment improvement. It seems kind of odd
+ 	to say "under no circumstances", and then immediately contradict
+ 	that with "The one exception is...".
+ 
+ 2022-06-01  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* init.c (QNX): __gnat_adjust_context_for_raise: New
+ 	implementation for arm-qnx.
+ 
+ 2022-06-01  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cofuba.ads, libgnat/a-cofuba.adb: Add reference
+ 	counting.
+ 
+ 2022-06-01  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch8.adb (Use_One_Package): Possibly warn.
+ 	* sem_util.adb (Enter_Name): Factor out warning on hidden entity.
+ 	(Warn_On_Hiding_Entity): Extract warning logic from Enter_Name and
+ 	generalize it to be applied also on use_clause.
+ 	* sem_util.ads (Warn_On_Hiding_Entity): Add new procedure.
+ 
+ 2022-06-01  Yannick Moy  <moy@adacore.com>
+ 
+ 	* par-ch3.adb (P_Known_Discriminant_Part_Opt): Reword error
+ 	message to benefit from existing codefix.
+ 	(P_Record_Definition): Detect out-of-order keywords in record
+ 	definition and issue appropriate messages. Other cases are
+ 	already caught at appropriate places.
+ 
+ 2022-06-01  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Freeze_Subprogram.Register_Predefined_DT_Entry): Put
+ 	the actions into the Actions field of the freeze node instead of
+ 	inserting them after it.
+ 
+ 2022-06-01  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sinfo.ads: Add inline documention for Is_Parenthesis_Aggregate
+ 	and Is_Enum_Array_Aggregate.
+ 
+ 2022-06-01  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo-utils.adb (Set_Convention): Call Set_Convention
+ 	recursively, so that Set_Can_Use_Internal_Rep is called (if
+ 	appropriate) on the anonymous access type of the object, and its
+ 	designated subprogram type.
+ 	* sem_ch3.adb (Access_Definition): Remove redundant call to
+ 	Set_Can_Use_Internal_Rep.
+ 
+ 2022-06-01  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_In): Do not warn in the above-mentioned
+ 	cases.
+ 	* fe.h (Assume_No_Invalid_Values): Remove from fe.h, because
+ 	this is not used in gigi.
+ 	* opt.ads (Assume_No_Invalid_Values): Improve the comment. We
+ 	don't need to "clearly prove"; we can just "prove". Remove the
+ 	comment about fe.h, which is no longer true.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* erroutc.adb (Get_Warning_Option): Don't consider `?` as a
+ 	valid option switch.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* erroutc.ads (Get_Warning_Option): New function returning the
+ 	option responsible for a warning if it exists.
+ 	* erroutc.adb (Get_Warning_Option): Likewise.
+ 	(Get_Warning_Tag): Rely on Get_Warning_Option when possible.
+ 	* errout.adb (Output_JSON_Message): Emit option field.
+ 
+ 2022-05-30  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cfdlli.ads (Insert): Remove the duplication.
+ 
+ 2022-05-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch6.adb (Check_Subprogram_Variant): Ignore structural
+ 	variants.
+ 
+ 2022-05-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* osint.adb (Locate_File): Change variable to constant and
+ 	initialize it by concatenation of directory, file name and NUL.
+ 
+ 2022-05-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_advice.rst (Packed Types): Remove
+ 	duplicated and wrongly placed paragraph.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* inline.adb (Check_Package_Body_For_Inlining): Add insertion
+ 	character.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* freeze.adb (Warn_Overlay): Add 'o' insertion character.
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Likewise.
+ 	* sem_util.adb (Note_Possible_Modifications): Likewise.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_warn.adb (Warn_On_Useless_Assignment): Fix insertion
+ 	character.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension):
+ 	Fix insertion character.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* sem_elab.adb (Process_Conditional_ABE_Access_Taken): Add '.f'
+ 	insertion characters.
+ 
+ 2022-05-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.ads (Deferred_Reference_Entry, Defer_Reference,
+ 	Process_Deferred_References, Has_Deferred_Reference): Remove
+ 	client API.
+ 	* lib-xref.adb (Deferred_References, Defer_Reference,
+ 	Has_Deferred_Reference, Process_Deferred_References): Remove
+ 	implementation.
+ 	* frontend.adb, sem_ch11.adb, sem_ch5.adb, sem_res.adb,
+ 	sem_util.adb, sem_warn.adb: Remove uses of Deferred_References.
+ 
+ 2022-05-30  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_ch7.adb (Wrap_HSS_In_Block): Do not create a new block in
+ 	the case of function bodies. We include all subprogram bodies,
+ 	because it's harmless for procedures. We cannot easily avoid
+ 	creating this block in ALL cases, because some transformations
+ 	of (e.g.) task bodies end up moving some code such that the
+ 	wrong exception handlers apply to that code.
+ 	(Build_Finalizer_Call): Remove code for creating a new block.
+ 	This was unreachable code, given that Wrap_HSS_In_Block has
+ 	already done that, but with the above change to
+ 	Wrap_HSS_In_Block, this code becomes reachable, and triggers
+ 	essentially the same bug.
+ 	* exp_ch7.ads: Adjust comment.
+ 
+ 2022-05-30  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* par-ch6.adb (P_Formal_Part): Set Aspect_Specifications on all
+ 	formals instead of just the last in a formal id list.
+ 	* sem_ch6.adb (Analyze_Null_Procedure): Mark expanded null
+ 	generic procedures as trivial in order to avoid spurious
+ 	unreferenced warnings.
+ 
+ 2022-05-30  Romain Beguet  <beguet@adacore.com>
+ 
+ 	* libgnat/s-dwalin.adb: Add a subtype declaration to fix the
+ 	ambiguity.
+ 
+ 2022-05-30  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.adb (Is_Predicate_Static): Do not generate warnings
+ 	about subexpressions of enclosing expressions. Generate warnings
+ 	for predicates that are known to be always true or always false,
+ 	except in the case where the predicate is expressed as a Boolean
+ 	literal. Deal with non-predicate-static expressions that have
+ 	been transformed into predicate-static expressions.  Add missing
+ 	Is_Type_Ref call to N_Membership_Test case.
+ 
+ 2022-05-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_Record_Aggregate.Build_Back_End_Aggregate):
+ 	Skip the discriminants at the start of the component list before
+ 	looking for the components inherited from the parent in the case
+ 	of a tagged extension.
+ 
+ 2022-05-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_disp.adb (Make_DT): Remove remaining freezing code.
+ 
+ 2022-05-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute) <Attribute_Access>: Don't analyze
+ 	the body of an expression function in the case of a dispatch table.
+ 
+ 2022-05-30  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat1drv.adb, opt.ads, sem_ch7.adb: Introduce CCG_Mode.
+ 
+ 2022-05-30  Yannick Moy  <moy@adacore.com>
+ 
+ 	* Makefile.rtl: Add new units.
+ 	* libgnat/s-aridou.adb (Scaled_Divide): Add ghost code for provers.
+ 	* libgnat/s-spcuop.adb: New unit for ghost cut operations.
+ 	* libgnat/s-spcuop.ads: New unit for ghost cut operations.
+ 	* libgnat/s-spark.ads: New unit.
+ 
+ 2022-05-30  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Mention
+ 	availability in other languages when applicable.
+ 	(Stack Scrubbing): Associate the attribute with types, expand
+ 	some comments, fix the example involving access to variables.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-30  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/a-cofuse.ads (Empty_Set): Fix typo in comment.
+ 
+ 2022-05-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch6.adb (New_Overloaded_Entity): Deal specifically with the
+ 	overriding of the "=" operator for tagged types.
+ 
+ 2022-05-30  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Adjust call to Make_DT.
+ 	* exp_disp.ads (Building_Static_DT): Remove pragma Inline.
+ 	(Building_Static_Secondary_DT): Likewise.
+ 	(Convert_Tag_To_Interface): Likewise.
+ 	(Make_DT): Remove second parameter.
+ 	* exp_disp.adb (Make_DT): Likewise.
+ 	(Check_Premature_Freezing): Delete.
+ 	Pass Do_Freeze_Profile as False in call to Freeze_Entity.
+ 	* freeze.ads (Freezing_Library_Level_Tagged_Type): Delete.
+ 	* freeze.adb (Freeze_Profile): Remove obsolete code.
+ 	(Freeze_Entity): Tweak comment.
+ 
+ 2022-05-30  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-arit32.adb (Scaled_Divide32): Move assertion up.
+ 
+ 2022-05-30  Yannick Moy  <moy@adacore.com>
+ 
+ 	PR ada/105303
+ 	* libgnat/s-gearop.adb: Add pragma Assertion_Policy in generic
+ 	bodies making use of additional assertions or ghost code.
+ 	* libgnat/s-gearop.ads: Remove confusing Assertion_Policy.
+ 
+ 2022-05-30  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch11.adb (Expand_N_Raise_Expression): Remove
+ 	Convert_To_Return_False test.
+ 	* gen_il-fields.ads: Remove Convert_To_Return_False field.
+ 	* gen_il-gen-gen_nodes.adb: Remove use of
+ 	Convert_To_Return_False field.
+ 	* sinfo.ads: Remove comment describing Convert_To_Return_False
+ 	flag.
+ 
+ 2022-05-30  Julien Bortolussi  <bortolussi@adacore.com>
+ 
+ 	* libgnat/a-cofuma.ads, libgnat/a-cofuma.adb,
+ 	libgnat/a-cofuse.ads, libgnat/a-cofuse.adb,
+ 	libgnat/a-cofuve.ads, libgnat/a-cofuve.adb: Add empty
+ 	constructors.
+ 
+ 2022-05-30  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* bindgen.adb (Gen_CUDA_Init): Remove code generating CUDA
+ 	definitions.
+ 	(Gen_CUDA_Defs): New function, generating definitions
+ 	initialized by Gen_CUDA_Init.
+ 	(Gen_Output_File_Ada): Call Gen_CUDA_Defs instead of
+ 	Gen_CUDA_Init.
+ 	(Gen_Adainit): Call Gen_CUDA_Init.
+ 
+ 2022-05-28  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc-interface/Makefile.in (OSCONS_CC): Rename to...
+ 	(GCC_FOR_ADA_RTS): ... this.  Adjust users.
+ 	(gnatlib): Pass it down as CC.
+ 	(gnatlib-shared-default): Likewise.
+ 	(gnatlib-shared-win32, gnatlib-shared-darwin): Likewise.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Constant>: Deal with
+ 	a constant related to a return in a function specially.
+ 	* gcc-interface/trans.cc (Call_to_gnu): Use return slot optimization
+ 	if the target is a return object.
+ 	(gnat_to_gnu) <N_Object_Declaration>: Deal with a constant related
+ 	to a return in a function specially.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (gnat_pushdecl): Also set TREE_NO_WARNING
+ 	on the decl if Comes_From_Source is false for the associated node.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_gimplify_expr): Tidy up.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Function>: Also call
+ 	process_attributes for built-in functions.
+ 	(prepend_one_attribute_pragma): Deal with "simd" attribute.
+ 	* gcc-interface/utils.cc (handle_simd_attribute): New function.
+ 	(gnat_internal_attribute_table): Add entry for "simd" attribute.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (components_to_record): Use NULL recursively
+ 	as P_GNU_REP_LIST for the innermost variant level in the unchecked
+ 	union case with a fixed part.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (gnat_to_gnu): Do not set Current_Error_Node
+ 	to a node without location.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Access_Subtype>: And
+ 	skip the elaboration of the designated subtype when that of its base
+ 	type has been delayed.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity) <E_Record_Subtype>: If
+ 	it is a special subtype designated by an access subtype, then defer
+ 	the completion of incomplete types.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/ada-tree.h, gcc-interface/ada.h,
+ 	gcc-interface/gadaint.h, gcc-interface/targtyps.cc: Adjust
+ 	copyright line.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils.cc (unchecked_convert): Do not fold a string
+ 	constant if the target type is pointer to character.
+ 
+ 2022-05-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Remove redundant call to
+ 	Set_Error_Posted.
+ 
+ 2022-05-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch8.adb (Find_Expanded_Name): Emit a main error message
+ 	before adding a continuation with the call to
+ 	Error_Missing_With_Of_Known_Unit.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.ads (Requires_Transient_Scope): Add pragma Inline.
+ 
+ 2022-05-19  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.adb (Build_Predicate_Functions): If a semantic error
+ 	has been detected then ignore Predicate_Failure aspect
+ 	specifications in the same way as is done for CodePeer and
+ 	SPARK. This avoids an internal compiler error if
+ 	Ancestor_Predicate_Function_Called is True but Result_Expr is
+ 	not an N_And_Then node (and is therefore unsuitable as an
+ 	argument in a call to Left_Opnd).
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Wrap_Transient_Declaration): Propagate Uses_Sec_Stack
+ 	to enclosing function if it does not return on the secondary stack.
+ 	* exp_ch6.adb (Expand_Call_Helper): Call Establish_Transient_Scope
+ 	with Manage_Sec_Stack set to True only when necessary.
+ 	* sem_res.adb (Resolve_Call): Likewise.
+ 	(Resolve_Entry_Call): Likewise.
+ 
+ 2022-05-19  Daniel Mercier  <mercier@adacore.com>
+ 
+ 	* sem_ch13.adb (Build_Predicate_Function): Ignore predicate
+ 	failure in CodePeer mode.
+ 
+ 2022-05-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* raise-gcc.c: Fix compilation with -DSTANDALONE under windows.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Narrow_Large_Operation): Preserve and reuse Etype.
+ 
+ 2022-05-19  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Add_Implicit_Interface_Type_Conversion): New
+ 	subprogram which factorizes code.
+ 	(Expand_N_Attribute_Reference): Call the new subprogram to add
+ 	the missing implicit interface type conversion.
+ 
+ 2022-05-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch13.adb (Build_Predicate_Function): Ignore predicate
+ 	failure in GNATprove mode.
+ 
+ 2022-05-19  Steve Baird  <baird@adacore.com>
+ 
+ 	* einfo-utils.ads, einfo-utils.adb: Delete Predicate_Function_M
+ 	function and Set_Predicate_Function_M procedure.
+ 	* einfo.ads: Delete comments for Is_Predicate_Function_M and
+ 	Predicate_Function_M functions. Add comment for new
+ 	Predicate_Expression function. Update comment describing
+ 	predicate functions.
+ 	* exp_util.ads, exp_util.adb (Make_Predicate_Call): Replace Mem
+ 	formal parameter with Static_Mem and Dynamic_Mem formals.
+ 	(Make_Predicate_Check): Delete Add_Failure_Expression and call
+ 	to it.
+ 	* exp_ch4.adb (Expand_N_In.Predicate_Check): Update
+ 	Make_Predicate_Call call to match profile change.
+ 	* gen_il-fields.ads: Delete Is_Predicate_Function_M field, add
+ 	Predicate_Expression field.
+ 	* gen_il-gen-gen_entities.adb: Delete Is_Predicate_Function_M
+ 	use, add Predicate_Expression use.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Rename as singular,
+ 	not plural; we no longer build a Predicate_M function. Delete
+ 	Predicate_M references. Add new Boolean parameter for predicate
+ 	functions when needed. Restructure body of generated predicate
+ 	functions to implement required Predicate_Failure behavior and
+ 	to set new Predicate_Expression attribute. Remove special
+ 	treatment of raise expressions within predicate expressions.
+ 	* sem_util.ads (Predicate_Failure_Expression,
+ 	Predicate_Function_Needs_Membership_Parameter): New functions.
+ 	* sem_util.adb (Is_Current_Instance): Fix bugs which caused
+ 	wrong result.
+ 	(Is_Current_Instance_Reference_In_Type_Aspect): Delete
+ 	Is_Predicate_Function_M reference.
+ 	(Predicate_Failure_Expression): New function.
+ 	(Propagate_Predicate_Attributes): Delete Is_Predicate_Function_M
+ 	references.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch6.adb (Expand_Call_Helper): Adjust comment.
+ 	(Expand_Simple_Function_Return): For the case of a type which needs
+ 	finalization and is returned on the primary stack, do not create a
+ 	copy if the expression originates from a function call.
+ 	* exp_ch7.adb (Transient Scope Management): Adjust comment.
+ 	* exp_util.ads (Is_Related_To_Func_Return): Add WARNING line.
+ 	* fe.h (Is_Related_To_Func_Return): Declare.
+ 
+ 2022-05-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Find_Body_Index): Remove empty Elsif_Parts
+ 	from the constructed IF statement.
+ 
+ 2022-05-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Find_Body_Index): Remove IF statement whose
+ 	condition was true-by-construction; remove excessive assertion
+ 	(since the call to Elsif_Parts will check that Nod is present
+ 	and it is an if-statement).
+ 
+ 2022-05-19  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnat1drv.adb, gnatcmd.adb: Remove references to gnatfind/xref.
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst: Ditto.
+ 	* gnat_ugn.texi: Regenerate.
+ 	* gnatfind.adb, gnatxref.adb, xr_tabls.adb, xr_tabls.ads,
+ 	xref_lib.adb, xref_lib.ads: Removed, no longer used.
+ 
+ 2022-05-19  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-strfix.adb: Add assertions.
+ 	* libgnat/a-strsup.adb: Idem.
+ 
+ 2022-05-19  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* erroutc.ads: Fix a single-character typo in a comment.
+ 	* exp_aggr.adb: Fix a single-character typo in a comment.
+ 	Replace several pairs of calls to Low_Bound and
+ 	High_Bound (which do not handle an identifier that denotes a
+ 	scalar subtype) with corresponding calls to Get_Index_Bounds
+ 	(which does handle that case).
+ 	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Set the
+ 	Component_Associations attribute of a null array aggregate to
+ 	New_List.
+ 	* sem_aggr.ads: New visible function
+ 	Is_Null_Array_Aggregate_High_Bound.
+ 	* sem_aggr.adb (Is_Null_Array_Aggregate_High_Bound,
+ 	Is_Null_Aggregate, Resolve_Null_Array_Aggregate): New functions.
+ 	(Resolve_Aggregate): Recognize null array aggregates (using
+ 	Is_Null_Aggregate) and, when one is recognized, resolve
+ 	it (using Resolve_Null_Array_Aggregate).  Avoid calling
+ 	Array_Aggr_Subtype for a null array aggregate; the needed
+ 	subtype is built in Resolve_Null_Array_Aggregate. Do not
+ 	incorrectly flag a null aggregate (after it is transformed by
+ 	expansion) as being both positional and named.
+ 	* sem_attr.adb (Eval_Attribute): Special treatment for null
+ 	array aggregate high bounds to avoid incorrectly flagging
+ 	something like Integer'Pred (Integer'First) as an illegal static
+ 	expression.
+ 	* sem_eval.adb (Out_Of_Range): Special treatment for null array
+ 	aggregate high bounds to avoid incorrectly flagging something
+ 	like Integer'Pred (Integer'First) as an illegal static
+ 	expression.
+ 
+ 2022-05-19  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Lemma_Abs_Range,
+ 	Lemma_Double_Shift_Left, Lemma_Shift_Left): New lemmas.
+ 	(Double_Divide): Add ghost code.
+ 	(Lemma_Concat_Definition, Lemma_Double_Shift_Left,
+ 	Lemma_Shift_Left, Lemma_Shift_Right): Define or complete lemmas.
+ 	(Scaled_Divide): Add ghost code.
+ 
+ 2022-05-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_pakd.adb (Expand_Packed_Eq): Replace the check for *same*
+ 	modular type, with a check for any modular type, and assert that
+ 	the two types have the same modulus and so on.
+ 	* exp_pakd.ads: Minor comment improvements.
+ 
+ 2022-05-19  Bob Duff  <duff@adacore.com>
+ 
+ 	* style.adb (Check_Identifier): Deal with the case where a
+ 	record component definition has been transformed; we want to
+ 	warn if the original came from source.
+ 	* libgnat/s-objrea.ads, libgnat/s-objrea.adb: Fix casing of MF
+ 	to be consistent.
+ 	* uname.adb: Fix casing of Chars to be consistent.
+ 	* sem_util.ads: Minor comment fix.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-retsta.
+ 	* debug.adb (d_r): Document usage.
+ 	* exp_ch4.adb (Expand_N_Allocato): Deal with the return stack pool.
+ 	* exp_ch6.adb (Expand_Simple_Function_Return): Replace calls to
+ 	Requires_Transient_Scope with Returns_On_Secondary_Stack.  Deal
+ 	with types that need finalization returned on the primary stack,
+ 	use CW_Or_Needs_Finalization for those returned on the secondary.
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): Return early
+ 	for the return stack pool.
+ 	(Remove_Side_Effects): Call CW_Or_Needs_Finalization.
+ 	* fe.h (Requires_Transient_Scope): Delete.
+ 	(Returns_On_Secondary_Stack): Declare.
+ 	* gnat1drv.adb (Adjust_Global_Switches): Set Back_End_Return_Slot
+ 	to False when generating C code or if -gnatd_r is specified.
+ 	* opt.ads (Back_End_Return_Slot): New boolean variable.
+ 	* rtsfind.ads (RTU_Id): Add System_Return_Stack.
+ 	(RE_Id): Add RE_RS_Allocate and RE_RS_Pool.
+ 	(RE_Unit_Table): Add entries for RE_RS_Allocate and RE_RS_Pool.
+ 	* sem_util.ads (CW_Or_Has_Controlled_Part): Delete.
+ 	(CW_Or_Needs_Finalization): Declare.
+ 	(Requires_Transient_Scope): Adjust description.
+ 	(Returns_On_Secondary_Stack): Declare.
+ 	* sem_util.adb (Compute_Returns_By_Ref): Set Returns_By_Ref on types
+ 	which need finalization if they are returned on the secondary stack.
+ 	(CW_Or_Has_Controlled_Part): Rename to...
+ 	(CW_Or_Needs_Finalization): ...this.
+ 	(Requires_Transient_Scope): Move bulk of implementation to...
+ 	(Returns_On_Secondary_Stack): ...here.  Return true for types which
+ 	need finalization only if the back-end return slot is not supported.
+ 	* libgnat/s-retsta.ads: New file.
+ 	* gcc-interface/ada-builtin-types.def (BT_FN_PTR_SSIZE): Define.
+ 	* gcc-interface/ada-builtins.def (return_slot): Likewise.
+ 	* gcc-interface/ada-tree.h (BUILT_IN_RETURN_SLOT): Likewise.
+ 	* gcc-interface/decl.cc (gnat_to_gnu_subprog_type): Replace call to
+ 	Requires_Transient_Scope with Returns_On_Secondary_Stack.
+ 	* gcc-interface/trans.cc (gnat_to_gnu) <N_Simple_Return_Statement>:
+ 	In the return by invisible reference, skip the copy if the source
+ 	is the same as the destination.
+ 	* gcc-interface/utils2.cc (build_call_alloc_dealloc_proc): Deal with
+ 	the return stack pool.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc: Fix formatting issues in comments.
+ 	(Subprogram_Body_to_gnu): Tidy up.
+ 	(Exception_Handler_to_gnu_gcc): Rename into...
+ 	(Exception_Handler_to_gnu): ...this.
+ 	(gnat_to_gnu) <N_Exception_Handler>: Adjust to above renaming.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (Subprogram_Body_to_gnu): Rename a couple
+ 	of local variables and use Is_Generic_Subprogram predicate.
+ 	(process_decls): Likewise.
+ 
+ 2022-05-19  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.cc (Subprogram_Body_to_gnu): Do not deal with
+ 	inlining heuristics for expression functions here but...
+ 	* gcc-interface/decl.cc (inline_status_for_subprog): ...here instead
+ 	and do not override them at -Os.
+ 
+ 2022-05-19  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (gnat_to_gnu_entity): Remove dead code
+ 	which expected Scope to return E_Subprogram_Body entity.
+ 
+ 2022-05-18  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-imageu.adb (Set_Image_Unsigned): Change assertion.
+ 
+ 2022-05-18  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* sigtramp-qnx.c: Change struct sigcontext * to mcontext_t *.
+ 
+ 2022-05-18  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* sigtramp-arm-qnx.c: Rewrite.
+ 
+ 2022-05-18  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Big3): Change return type.
+ 	(Lemma_Mult_Non_Negative, Lemma_Mult_Non_Positive): Reorder
+ 	alphabetically.
+ 	(Lemma_Concat_Definition, Lemma_Double_Big_2xxsingle): New
+ 	lemmas.
+ 	(Double_Divide, Scaled_Divide): Add assertions.
+ 
+ 2022-05-18  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-valueu.adb (Scan_Raw_Unsigned): Add assertions.
+ 
+ 2022-05-18  Kévin Le Gouguec  <legouguec@adacore.com>
+ 
+ 	* libgnat/s-dwalin.adb (Read_Aranges_Header): Initialize output
+ 	parameter in case we return early.
+ 
+ 2022-05-18  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/a-crbtgo.ads, libgnat/a-rbtgbo.ads,
+ 	libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb,
+ 	libgnat/a-cbhase.adb, libgnat/a-cdlili.adb,
+ 	libgnat/a-cfdlli.adb, libgnat/a-cfhama.adb,
+ 	libgnat/a-cfhase.adb, libgnat/a-cidlli.adb,
+ 	libgnat/a-cihama.adb, libgnat/a-cihase.adb,
+ 	libgnat/a-cohama.adb, libgnat/a-cohase.adb,
+ 	libgnat/a-crbtgo.adb, libgnat/a-crdlli.adb, libgnat/a-rbtgbo.adb
+ 	(Vet): Make the Vet functions do nothing when
+ 	Container_Checks'Enabled is False, and inline them, so the calls
+ 	disappear when optimizing.
+ 
+ 2022-05-18  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl (arm-qnx): Use default (non-fma) target pair.
+ 
+ 2022-05-18  Kévin Le Gouguec  <legouguec@adacore.com>
+ 
+ 	* libgnat/s-dwalin.adb (Aranges_Lookup, Enable_Cache): Adapt to
+ 	changes in the signature of Read_Aranges_*.
+ 	(Debug_Info_Lookup): Do not control address size read from
+ 	DWARF.
+ 	(Read_Aranges_Header): Do not control address size read from
+ 	DWARF; return this size.
+ 	(Read_Aranges_Entry): Use the size returned by
+ 	Read_Aranges_Header.
+ 
+ 2022-05-18  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* errout.ads (Error_Msg_GNAT_Extension): Add formal Loc and
+ 	revise comment.
+ 	* errout.adb (Error_Msg_GNAT_Extension): Condition message on
+ 	the flag Ada_Version_Pragma, and add suggestion to use of pragma
+ 	Extensions_Allowed in messages.
+ 	* par-ch3.adb, par-ch5.adb, par-ch6.adb, par-ch11.adb,
+ 	par-ch12.adb: Add actual Token_Ptr on calls to
+ 	Error_Msg_GNAT_Extension.
+ 	* par-ch4.adb: Change Error_Msg to Error_Msg_GNAT_Extension for
+ 	error calls related to use of extension features.
+ 	* sem_ch13.adb: Likewise.
+ 
+ 2022-05-18  Johannes Kliemann  <kliemann@adacore.com>
+ 
+ 	* libgnarl/s-osinte__qnx.adb (To_Target_Priority): Perform
+ 	arithmetic in int.
+ 
+ 2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_BIP_Cleanup_Stmts): Use Needs_BIP_Alloc_Form.
+ 
+ 2022-05-18  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch6.adb (Find_Corresponding_Spec): Avoid calling
+ 	Is_Null_Extension with a class-wide type entity.
+ 	(Overrides_Visible_Function): Handle alias entities.
+ 	* sem_res.adb (Has_Applicable_User_Defined_Literal): Conversion
+ 	not needed if the result type of the call is class-wide or if
+ 	the result type matches the context type.
+ 	* sem_util.ads (Is_Null_Extension): Adding documentation.
+ 	(Is_Null_Extension_Of): Adding documentation.
+ 	* sem_util.adb (Is_Null_Extension): Adding assertion.
+ 	(Is_Null_Extension_Of): Adding assertions.
+ 
+ 2022-05-18  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* snames.ads-tmpl (Name_Index): New attribute name.
+ 	(Attribute_Id): Adding Attribute_Index as regular attribute.
+ 	* sem_attr.adb (Attribute_22): Adding Attribute_Index as Ada
+ 	2022 attribute.
+ 	(Analyze_Index_Attribute): Check that 'Index appears in a
+ 	pre-/postcondition aspect or pragma associated with an entry
+ 	family.
+ 	(Analyze_Attribute): Adding semantic analysis for 'Index.
+ 	(Eval_Attribute): Register 'Index as can never be folded.
+ 	(Resolve_Attribute): Resolve attribute 'Index.
+ 	* sem_ch9.adb (Check_Wrong_Attribute_In_Postconditions): New
+ 	subprogram.
+ 	(Analyze_Requeue): Check that the requeue target shall not have
+ 	an applicable specific or class-wide postcondition which
+ 	includes an Index attribute reference.
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): Transform
+ 	attribute Index into a renaming of the second formal of the
+ 	wrapper built for an entry family that has contract cases.
+ 	* einfo.ads (Is_Entry_Wrapper): Complete documentation.
+ 
+ 2022-05-18  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-imagei.adb (Set_Digits): Add assertion.
+ 	* libgnat/s-imgboo.adb (Image_Boolean): Add assertions.
+ 	* libgnat/s-valueu.adb (Scan_Raw_Unsigned): Add assertion.
+ 
+ 2022-05-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_aux.adb (Is_Immutably_Limited_Type): Do not look through
+ 	private types as per RM 7.5(8.1).
+ 	* sem_ch6.adb (Analyze_Function_Return): Use
+ 	Is_Immutably_Limited_Type as per RM 6.5(5.10).
+ 
+ 2022-05-18  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* gen_il-gen-gen_nodes.adb (Gen_IL.Gen.Gen_Nodes): Add
+ 	Is_Homogeneous_Aggregate field for N_Delta_Aggregate nodes.
+ 	* par-ch4.adb (P_Aggregate_Or_Paren_Expr): Minor reformatting.
+ 	* sem_aggr.adb (Resolve_Delta_Aggregate): Reject square brackets
+ 	for record aggregate.
+ 	(Resolve_Record_Aggregate): Uniformise error message.
+ 
+ 2022-05-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ali.adb (Scan_ALI): Special case a-tags.ali when setting
+ 	Sec_Stack_Used.
+ 	* bindgen.adb (Gen_Adainit): Simplify handling of secondary
+ 	stack related code, and only import __gnat_binder_ss_count when
+ 	needed.
+ 	* libgnat/s-secsta.adb (Binder_SS_Count): Default initialize to
+ 	0.
+ 
+ 2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* libgnat/s-dourea.adb ("/"): Add guard for zero and infinite
+ 	divisor.
+ 	* libgnat/s-valuer.adb (Scan_Raw_Real): Add guard for very large
+ 	exponent values.
+ 
+ 2022-05-18  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_elab.adb (Is_Suitable_Construct): Fix for generated
+ 	constructs.
+ 
+ 2022-05-18  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Skip predicate check
+ 	for type conversion if object's subtype and expression's subtype
+ 	statically match.
+ 	* exp_prag.adb (Expand_Pragma_Check): Typo fix in comment.
+ 
+ 2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_dbug.ads (Build_Subprogram_Instance_Renamings): Fix typo.
+ 	* exp_dbug.adb (Build_Subprogram_Instance_Renamings): Build the
+ 	renaming only for actuals of formal objects.
+ 
+ 2022-05-18  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Abstract_Overriding): If the type is
+ 	derived from an untagged type, then don't perform any of the
+ 	abstract overriding error checks.
+ 
+ 2022-05-18  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Component_Count): Calculate size as an Uint and
+ 	only then check if it is in the range of Int, as otherwise the
+ 	multiplication of Int values can overflow.
+ 
+ 2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-gfmafu$(objext).
+ 	(SIMD_PATH_TARGET_PAIRS): New variable.
+ 	(TRASYM_DWARF_COMMON_OBJS): Minor tweak.
+ 	(x86-64/Linux): Use SIMD_PATH_TARGET_PAIRS.
+ 	(x32/Linux): Likewise.
+ 	* doc/gnat_rm/the_gnat_library.rst (Generic_Fast_Math_Functions):
+ 	New entry.
+ 	* gnat_rm.texi: Regenerate.
+ 	* impunit.adb (Non_Imp_File_Names_95): Add g-gfmafu.
+ 	* sem_ch7.adb (Has_Referencer): Do not set In_Nested_Instance for
+ 	instances of generic packages that do not have a body.
+ 	* libgnat/a-nalofl__simd.ads: New SIMD-enabled version.
+ 	* libgnat/a-nuaufl__simd.ads: Likewise.
+ 	* libgnat/g-gfmafu.ads: New package renaming unit.
+ 
+ 2022-05-18  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* freeze.adb (Should_Freeze_Type): Fix handling of freezing in
+ 	instances.
+ 
+ 2022-05-18  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_ch12.adb (Check_Generic_Parent): Use
+ 	Get_Unit_Instantiation_Node instead of Next.
+ 
+ 2022-05-18  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* libgnat/a-nagefl.ads: Replace mentions of C/unix math library
+ 	with intrinsics.
+ 	* libgnat/a-nallfl.ads: Likewise.  State compatibility
+ 	requirements.
+ 	* libgnat/a-nalofl.ads: Likewise.
+ 	* libgnat/a-nuaufl.ads: Likewise.
+ 
+ 2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Move final test on
+ 	In_Instance to outer condition.
+ 
+ 2022-05-18  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* Makefile.rtl: Rename system-qnx-aarch64.ads to
+ 	system-qnx-arm.ads.
+ 	(AARCH64 QNX section): Modify to handle both arm and arch64.
+ 	* tracebak.c (__QNX__): Add new __ARMEL__ section.
+ 	* sigtramp-arm-qnx.c: New file.
+ 	* libgnat/system-qnx-aarch64.ads: Renamed to ...
+ 	* libgnat/system-qnx-arm.ads: this.
+ 
+ 2022-05-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Flag_Effectively_Volatile_Objects): Restore
+ 	redundant guard.
+ 
+ 2022-05-17  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Subprogram_Renaming): Add error check for
+ 	the case of a renamed subprogram given by an expanded name whose
+ 	outermost prefix names a unit that is hidden by the name of the
+ 	renaming.
+ 	(Ult_Expanded_Prefix): New local expression function to return
+ 	the ultimate prefix of an expanded name.
+ 
+ 2022-05-17  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* gnat_cuda.ads: Update package-level comments.
+ 	(Build_And_Insert_CUDA_Initialization): Remove function.
+ 	* gnat_cuda.adb (Build_And_Insert_CUDA_Initialization): Remove
+ 	function.
+ 	(Expand_CUDA_Package): Remove call to
+ 	Build_And_Insert_CUDA_Initialization.
+ 
+ 2022-05-17  Etienne Servais  <servais@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Enumeration_Type): Fix comment, enhance
+ 	message and silence warning for size > 32.
+ 
+ 2022-05-17  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_spark.adb (Expand_SPARK_Potential_Renaming): Deal with no
+ 	entity case.
+ 	* inline.ads (Check_Object_Renaming_In_GNATprove_Mode): New
+ 	procedure.
+ 	* inline.adb (Check_Object_Renaming_In_GNATprove_Mode): New
+ 	procedure.
+ 	(Can_Be_Inlined_In_GNATprove_Mode): Remove case forbidding
+ 	inlining for subprograms inside generics.
+ 	* sem_ch12.adb (Copy_Generic_Node): Preserve global entities
+ 	when inlining in GNATprove mode.
+ 	* sem_ch6.adb (Analyse_Subprogram_Body_Helper): Remove body to
+ 	inline if renaming is detected in GNATprove mode.
+ 
+ 2022-05-17  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Allocator): For an allocator with an
+ 	unconstrained discriminated designated type, and whose
+ 	allocation subtype is constrained, set the
+ 	Actual_Designated_Subtype of the dereference passed to the init
+ 	proc of the designated type to be the allocation subtype.
+ 	* sinfo.ads: Add documentation of new setting of
+ 	Actual_Designated_Subtype on a dereference used as an actual
+ 	parameter of call to an init proc associated with an allocator.
+ 	Also add missing syntax and documentation for the GNAT language
+ 	extension that allows an expression as a default for a concrete
+ 	generic formal function.
+ 
+ 2022-05-17  Bob Duff  <duff@adacore.com>
+ 
+ 	* sinfo.ads: Remove From_At_End.  Update comments.
+ 	* gen_il-fields.ads, gen_il-gen-gen_nodes.adb, sem_ch11.adb:
+ 	Remove From_At_End.
+ 	* exp_ch11.adb (Expand_At_End_Handler): Remove assertion.
+ 	* fe.h (Exception_Mechanism, Exception_Mechanism_Type, Has_DIC,
+ 	Has_Invariants, Is_List_Member, List_Containing): Remove
+ 	declarations that are not used in gigi.
+ 	* opt.ads (Exception_Mechanism): This is not used in gigi.
+ 	* exp_util.ads: Minor comment fix.
+ 
+ 2022-05-17  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* impunit.adb: Add "g-binsea" to Non_Imp_File_Names_95 list.
+ 
+ 2022-05-17  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Use
+ 	Insert_Action when possibly inside an expression.
+ 
+ 2022-05-17  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/g-forstr.adb (Is_Number): Add scientific notation and
+ 	shortest representation.
+ 
+ 2022-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Full_Type_Declaration): Look into N.
+ 
+ 2022-05-17  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_util.adb (Requires_Cleanup_Actions): Remove
+ 	N_Protected_Body from the case statement, so that case will be
+ 	covered by "raise Program_Error".
+ 
+ 2022-05-17  Bob Duff  <duff@adacore.com>
+ 
+ 	* output.adb (Pop_Output, Set_Output): Unconditionally flush
+ 	output when switching from one output destination to another.
+ 	Otherwise buffering can cause garbled output.
+ 	(w): Push/pop the current settings, and temporarily
+ 	Set_Standard_Error during these procedures.
+ 
+ 2022-05-17  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/g-binsea.ads, libgnat/g-binsea.adb
+ 	(GNAT.Binary_Search): New package.
+ 	* Makefile.rtl (GNATRTL_NONTASKING_OBJS): New item in list.
+ 	* doc/gnat_rm/the_gnat_library.rst (GNAT.Binary_Search): New
+ 	package record.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.ads (Is_Abbreviated_Instance): Declare.
+ 	* sem_ch12.adb (Check_Abbreviated_Instance): Declare.
+ 	(Requires_Conformance_Checking): Declare.
+ 	(Analyze_Association.Process_Default): Fix subtype of parameter.
+ 	(Analyze_Formal_Object_Declaration): Check whether it is in the
+ 	visible part of abbreviated instance.
+ 	(Analyze_Formal_Subprogram_Declaration): Likewise.
+ 	(Analyze_Formal_Type_Declaration): Likewise.
+ 	(Analyze_Package_Instantiation): Do not check for a generic child
+ 	unit in the case of an abbreviated instance.
+ 	(Check_Abbreviated_Instance): New procedure.
+ 	(Check_Formal_Packages): Tidy up.
+ 	(Copy_Generic_Elist): Fix comment.
+ 	(Instantiate_Formal_Package): Tidy up.  If the generic unit is a
+ 	child unit, copy the qualified name onto the abbreviated instance.
+ 	(Is_Abbreviated_Instance): New function.
+ 	(Collect_Previous_Instances): Call Is_Abbreviated_Instance.
+ 	(Requires_Conformance_Checking): New function.
+ 	* sem_ch7.adb (Analyze_Package_Specification): Do not install the
+ 	private declarations of the parent for an abbreviated instance.
+ 
+ 2022-05-17  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Use underlying type
+ 	of Indic_Typ.
+ 	(Constrain_Array): Ditto for T.
+ 
+ 2022-05-17  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute [Attribute_Reduce]): Allow
+ 	'Reduce for Ada 2022 and above.
+ 	* sem_attr.ads (Attribute_Impl_Def): 'Reduce is no longer
+ 	implementation defined.
+ 
+ 2022-05-17  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* exp_ch9.adb (Expand_N_Asynchronous_Select): Don't generate
+ 	Abort_Undefers when not Abort_Allowed.
+ 
+ 2022-05-17  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_ch7.adb: Fix typo.
+ 
+ 2022-05-17  Etienne Servais  <servais@adacore.com>
+ 
+ 	* lib.ads: initialize `Compiler_State` to `Parsing`.
+ 
+ 2022-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.adb (Has_Compatible_Representation): Return true for
+ 	derived untagged record types without representation clause.
+ 
+ 2022-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch13.ads (Has_Compatible_Representation): Minor tweaks.
+ 	* sem_ch13.adb (Has_Compatible_Representation): Look directly into
+ 	the (implementation) base types and simplifiy accordingly.
+ 	* exp_ch5.adb (Change_Of_Representation): Adjust.
+ 	* exp_ch6.adb (Expand_Actuals): Likewise.
+ 
+ 2022-05-17  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Assignment): Remove superfluous call to
+ 	Original_Node.
+ 
+ 2022-05-17  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* freeze.adb (Freeze_Entity): Protect the call to
+ 	Declaration_Node against entities of expressions replaced by the
+ 	frontend with an N_Raise_CE node.
+ 
+ 2022-05-17  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* freeze.adb (Build_DTW_Spec): Do not inherit the not-overriding
+ 	indicator because the DTW wrapper overrides its wrapped
+ 	subprogram.
+ 	* contracts.ads (Make_Class_Precondition_Subps): Adding
+ 	documentation.
+ 
+ 2022-05-17  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch13.adb (Expand_N_Freeze_Entity): Delete freeze nodes for
+ 	subprograms only if they have no actions.
+ 	* exp_ch6.adb (Freeze_Subprogram): Put the actions into the Actions
+ 	field of the freeze node instead of inserting them after it.
+ 	* sem_elab.adb (Is_SPARK_Semantic_Target): Fix typo in comment.
+ 	* gcc-interface/trans.cc (process_freeze_entity): Return early for
+ 	freeze nodes of subprograms with Interface_Alias set.
+ 
+ 2022-05-17  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* contracts.adb (Build_Call_Helper_Body): Improve handling of
+ 	the case of a (legal) non-dispatching call to an abstract
+ 	subprogram.
+ 
+ 2022-05-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst
+ 	(Loop_Entry): Mention pragmas Assert, Assert_And_Cut and Assume;
+ 	refill.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-17  Etienne Servais  <servais@adacore.com>
+ 
+ 	* par-ch3.adb (P_Access_Type_Definition): Outputs an error if
+ 	token is not "access".
+ 
+ 2022-05-17  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch2.adb (Expand_Current_Value): Remove special case for
+ 	references immediately within pragma argument associations.
+ 	* exp_prag.adb (Expand_Pragma_Inspection_Point): Remove special
+ 	case for privals.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch7.adb (Inspect_Untagged_Record_Completion): Also move the
+ 	equality operator on the homonym chain if there is another equality
+ 	operator in the private part.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_Loop_Entry_Attribute): Disable value
+ 	propagation when analysing the constant that holds the
+ 	Loop_Entry prefix value.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Address_Checks): Remove call to
+ 	Kill_Current_Values for subprogram entities, because this
+ 	routine only does something for object entities.
+ 
+ 2022-05-16  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Finalizer): Disable late evaluation of
+ 	postconditions for functions returning types which where
+ 	Has_Unconstrained_Elements is true or are unconstrained arrays.
+ 
+ 2022-05-16  Etienne Servais  <servais@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Qualified_Expression): Freeze
+ 	Target_Type.
+ 
+ 2022-05-16  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Double_Divide): Add intermediate
+ 	assertions.
+ 
+ 2022-05-16  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* lib-writ.adb (Output_CUDA_Symbols): Check for null packages.
+ 
+ 2022-05-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* libgnat/g-debpoo.ads: Improve documentation of the
+ 	Stack_Trace_Depth parameter.
+ 
+ 2022-05-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* init.c (__gnat_install_handler) [__QNX__]: Save sigaction's
+ 	return value in err before checking err's value.  Fix incorrect
+ 	signal names in perror messages.
+ 
+ 2022-05-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* init.c (__gnat_install_handler) [__QNX__]: Set
+ 	act.sa_sigaction rather than act.sa_handler.
+ 
+ 2022-05-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* cstreams.c: Add <stdlib.h> #include.
+ 
+ 2022-05-16  Joel Brobecker  <brobecker@adacore.com>
+ 
+ 	* terminals.c: Remove bzero #define on HP/UX or Solaris
+ 	platforms.
+ 	(child_setup_tty): Replace bzero call by equivalent call to
+ 	memset.
+ 
+ 2022-05-16  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_util.ads (Storage_Model_Support): Revise comments on most
+ 	operations within this nested package to reflect that they can
+ 	now be passed either a type that has aspect Storage_Model_Type
+ 	or an object of such a type.  Change the names of the relevant
+ 	formals to SM_Obj_Or_Type. Also, add more precise semantic
+ 	descriptions in some cases, and declare the subprograms in a
+ 	more logical order.
+ 	* sem_util.adb (Storage_Model_Support.Storage_Model_Object): Add
+ 	an assertion that the type must specify aspect
+ 	Designated_Storage_Model, rather than returning Empty when it
+ 	doesn't specify that aspect.
+ 	(Storage_Model_Support.Storage_Model_Type): Add an assertion
+ 	that formal must be an object whose type specifies aspect
+ 	Storage_Model_Type, rather than returning Empty for when it
+ 	doesn't have such a type (and test Has_Storage_Model_Type_Aspect
+ 	rather than Find_Value_Of_Aspect).
+ 	(Storage_Model_Support.Get_Storage_Model_Type_Entity): Allow
+ 	both objects and types, and add an assertion that the type (or
+ 	the type of the object) has a value for aspect
+ 	Storage_Model_Type.
+ 
+ 2022-05-16  Etienne Servais  <servais@adacore.com>
+ 
+ 	* checks.adb (Apply_Arithmetic_Overflow_Minimized_Eliminated):
+ 	Fix condition to return.
+ 
+ 2022-05-16  Yannick Moy  <moy@adacore.com>
+ 
+ 	* inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Update comment.
+ 
+ 2022-05-16  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Iterated_Association): Create scope
+ 	around N_Iterated_Element_Association handling. Analyze a copy
+ 	of the Loop_Parameter_Specification. Call Analyze instead
+ 	Analyze_* to be more homogeneous.
+ 	(Sem_Ch5): Remove now unused package.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions) <N_Iterated_Component_Association>:
+ 	Climb up out of the node if the actions come from Discrete_Choices.
+ 
+ 2022-05-16  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Dispatching_Context): When checking to see
+ 	whether an expression occurs in a class-wide pre/post-condition,
+ 	also check for the possibility that it occurs in a class-wide
+ 	preconditions subprogram that was introduced as part of
+ 	expansion. Without this fix, some legal calls occuring in
+ 	class-wide preconditions may be incorrectly flagged as violating
+ 	the "a call to an abstract subprogram must be dispatching" rule.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* inline.adb (Cleanup_Scopes): Test the underlying type.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.ads (Is_Entity_Of_Quantified_Expression): Declare.
+ 	* sem_util.adb (Is_Entity_Of_Quantified_Expression): New
+ 	predicate.
+ 	(New_Copy_Tree): Deal with all entities of quantified
+ 	expressions.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Get rid of
+ 	superfluous tree copying and remove obsolete code.
+ 	* sem_ch6.adb (Fully_Conformant_Expressions): Deal with all
+ 	entities of quantified expressions.
+ 
+ 2022-05-16  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch7.adb (Build_Finalize_Statements): Add Last_POC_Call
+ 	variable to keep track of the last "early finalization" call
+ 	generated for type extension's finalization procedure. If
+ 	non-empty, then this will indicate the point at which to insert
+ 	the call to the parent type's finalization procedure. Modify
+ 	nested function Process_Component_List_For_Finalize to set this
+ 	variable (and avoid setting it during a recursive call).  If
+ 	Last_POC_Call is empty, then insert the parent finalization call
+ 	before, rather than after, the finalization code for the
+ 	extension components.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo-utils.adb (Remove_Entity): Fix couple of oversights.
+ 	* exp_ch3.adb (Is_User_Defined_Equality): Delete.
+ 	(User_Defined_Eq): Call Get_User_Defined_Equality.
+ 	(Make_Eq_Body): Likewise.
+ 	(Predefined_Primitive_Eq_Body): Call Is_User_Defined_Equality.
+ 	* exp_ch4.adb (Build_Eq_Call): Call Get_User_Defined_Equality.
+ 	(Is_Equality): Delete.
+ 	(User_Defined_Primitive_Equality_Op): Likewise.
+ 	(Find_Aliased_Equality): Call Is_User_Defined_Equality.
+ 	(Expand_N_Op_Eq): Call Underlying_Type unconditionally.
+ 	Do not implement AI12-0101 + AI05-0123 here.
+ 	(Expand_Set_Membership): Call Resolve_Membership_Equality.
+ 	* exp_ch6.adb (Expand_Call_Helper): Remove obsolete code.
+ 	* sem_aux.ads (Is_Record_Or_Limited_Type): Delete.
+ 	* sem_aux.adb (Is_Record_Or_Limited_Type): Likewise.
+ 	* sem_ch4.ads (Nondispatching_Call_To_Abstract_Operation): Declare.
+ 	* sem_ch4.adb (Analyze_Call): Call Call_Abstract_Operation.
+ 	(Analyze_Membership_Op): Call Resolve_Membership_Equality.
+ 	(Nondispatching_Call_To_Abstract_Operation): New procedure.
+ 	(Remove_Abstract_Operations): Call it.
+ 	* sem_ch6.adb (Check_Untagged_Equality): Remove obsolete error and
+ 	call Is_User_Defined_Equality.
+ 	* sem_ch7.adb (Inspect_Untagged_Record_Completion): New procedure
+ 	implementing AI12-0101 + AI05-0123.
+ 	(Analyze_Package_Specification): Call it.
+ 	(Declare_Inherited_Private_Subprograms): Minor tweak.
+ 	(Uninstall_Declarations): Likewise.
+ 	* sem_disp.adb (Check_Direct_Call): Adjust to new implementation
+ 	of Is_User_Defined_Equality.
+ 	* sem_res.ads (Resolve_Membership_Equality): Declare.
+ 	* sem_res.adb (Resolve): Replace direct error handling with call to
+ 	Nondispatching_Call_To_Abstract_Operation
+ 	(Resolve_Call): Likewise.
+ 	(Resolve_Equality_Op): Likewise.  mplement AI12-0413.
+ 	(Resolve_Membership_Equality): New procedure.
+ 	(Resolve_Membership_Op): Call Get_User_Defined_Equality.
+ 	* sem_util.ads (Get_User_Defined_Eq): Rename into...
+ 	(Get_User_Defined_Equality): ...this.
+ 	* sem_util.adb (Get_User_Defined_Eq): Rename into...
+ 	(Get_User_Defined_Equality): ...this. Call Is_User_Defined_Equality.
+ 	(Is_User_Defined_Equality): Also check the profile but remove tests
+ 	on Comes_From_Source and Parent.
+ 	* sinfo.ads (Generic_Parent_Type): Adjust field description.
+ 	* uintp.ads (Ubool): Invoke user-defined equality in predicate.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (User_Defined_Eq): Replace duplicated code with a
+ 	call to Get_User_Defined_Eq.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Untagged_Equality): Exit early when the
+ 	outcome of a loop is already known.
+ 
+ 2022-05-16  Olivier Hainque  <hainque@adacore.com>
+ 
+ 	* Makefile.rtl: Add aarch64 to the list of CPUs for which
+ 	GNATLIB_SHARED maps to gnatlib-shared-dual for vxworks7r2.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Negation): Minor tweak.
+ 	(Analyze_Unary_Op): Likewise.
+ 
+ 2022-05-16  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Assignment): Adjust to the new definition of
+ 	Incomplete_View field.
+ 	* sem_ch10.ads (Decorate_Type): Declare.
+ 	* sem_ch10.adb (Decorate_Type): Move to library level.
+ 	(Install_Limited_With_Clause): In the already analyzed case, also
+ 	deal with incomplete type declarations present in the sources and
+ 	simplify the replacement code.
+ 	(Build_Shadow_Entity): Deal with swapped views in package body.
+ 	(Restore_Chain_For_Shadow): Deal with incomplete type declarations
+ 	present in the sources.
+ 	* sem_ch3.adb (Analyze_Full_Type_Declaration): Adjust to the new
+ 	definition of Incomplete_View field.
+ 	(Build_Incomplete_Type_Declaration): Small consistency tweak.
+ 	Set the incomplete type as the Incomplete_View of the full type.
+ 	If the scope is a package with a limited view, build a shadow
+ 	entity for the incomplete type.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): When replacing
+ 	the limited view of a CW type as designated type of an anonymous
+ 	access return type, get to the CW type of the incomplete view of
+ 	the tagged type, if any.
+ 	(Collect_Primitive_Operations): Adjust to the new definition of
+ 	Incomplete_View field.
+ 	* sinfo.ads (Incomplete_View): Denote the entity itself instead
+ 	of its declaration.
+ 	* sem_util.adb: Remove call to Defining_Entity.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Type_Or_Variable_Has_Enabled_Property): Given a
+ 	subtype recurse into its base type.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Type_Or_Variable_Has_Enabled_Property): Clarify.
+ 
+ 2022-05-16  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_Enabled): Remove; use Is_Enabled_Pragma
+ 	instead.
+ 
+ 2022-05-16  Martin Liska  <mliska@suse.cz>
+ 
+ 	* locales.c (iso_639_1_to_639_3): Use ARRAY_SIZE.
+ 	(language_name_to_639_3): Likewise.
+ 	(country_name_to_3166): Likewise.
+ 
+ 2022-05-13  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* gcc-interface/decl.cc (is_cplusplus_method): Build proper
+ 	String for Get_External_Name.
+ 
+ 2022-05-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Derive_Subprogram): For a function, also copy the
+ 	Returns_By_Ref flag from the parent.
+ 
+ 2022-05-13  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_ch13.adb (Check_Aspect_At_Freeze_Point): Analyze the
+ 	expression of the aspect at this point, like other aspects that
+ 	denote simple entities. Ensures that function
+ 	Storage_Model_Object will have an entity to retrieve from the
+ 	aspect expression. Also, move comment about aspects that don't
+ 	require delay analysis in front of last alternative of the case
+ 	statement, where it's supposed to be.
+ 
+ 2022-05-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* contracts.adb (Build_Unique_Name): New subprogram.
+ 	(Make_Class_Precondition_Subps): Use Build_Unique_Name to
+ 	generate the names of the call helpers and the name of indirect
+ 	call wrappers.
+ 	* freeze.adb (Needs_Wrapper): Remove dead code.
+ 	(Check_Inherited_Conditions): Defer building helpers and ICW
+ 	until all the dispatch table wrappers have been built and
+ 	analyzed. Required to ensure uniqueness in their names because
+ 	when building these wrappers for overlapped subprograms their
+ 	homonym number is not definite until they have been analyzed.
+ 
+ 2022-05-13  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* libgnarl/s-taprop__linux.adb (Initialize): Do not use an
+ 	alternate stack if no handler for SEGV is installed.
+ 
+ 2022-05-13  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst (Control Flow
+ 	Redundancy): Drop mentions of noreturn and tail calls.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-13  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* ali.adb: Introduce new 'K' line in ALI files, used to
+ 	represent CUDA kernel entries.
+ 	* ali.ads: Create new CUDA_Kernels table, which contains entries
+ 	of type CUDA_Kernel_Record. Each CUDA_Kernel_Record corresponds
+ 	to a K line in an ali file.
+ 	* bindgen.adb: Introduce new Gen_CUDA_Init procedure in the
+ 	binder, which generates CUDA kernel registration code.
+ 	* gnat_cuda.adb: Move Get_CUDA_Kernels spec to package spec to
+ 	make it available to bindgen.adb.
+ 	* gnat_cuda.ads: Likewise.
+ 	* lib-writ.adb: Introduce new Output_CUDA_Symbols procedure,
+ 	which generates one 'K' line in the ALI file per visible CUDA
+ 	kernel.
+ 	* opt.ads: Introduce Enable_CUDA_Expansion option, triggered by
+ 	using the -gnatd_c flag.
+ 	* switch-b.adb: Likewise.
+ 	* switch-c.adb: Likewise.
+ 
+ 2022-05-13  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* exp_aggr.adb (Gen_Loop): Create scope for loop variable of
+ 	iterated components.
+ 
+ 2022-05-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-chtgfk.adb (Checked_Equivalent_Keys, Checked_Index):
+ 	Remove useless functions.
+ 	(Delete_Key_Sans_Free, Find, Generic_Conditional_Insert): Adapt
+ 	to removal of wrapper functions.
+ 	* libgnat/a-chtgfk.ads (Checked_Equivalent_Keys, Checked_Index):
+ 	Remove useless functions.
+ 	* libgnat/a-chtgfo.adb (Checked_Index): Remove useless function.
+ 	(Clear): Delete code commented out regarding Busy and Lock
+ 	management.
+ 	(Delete_Node_At_Index): Delete unused procedure.
+ 	(Delete_Node_Sans_Free, Free, Generic_Read, Next): Adapt to
+ 	removal of wrapper functions.
+ 	* libgnat/a-chtgfo.ads (Checked_Index): Remove useless function.
+ 	(Delete_Node_At_Index): Delete unused procedure.
+ 
+ 2022-05-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-cfhama.adb (Generic_Allocate): Retype to avoid
+ 	aliasing.
+ 	(Assign, Move): Remove address comparison.
+ 	(Include): Insert constants for subtype constraints.
+ 	(Insert): Rewrite to avoid aliasing and function with side-effects.
+ 	* libgnat/a-cfhase.adb (Generic_Allocate): Retype to avoid
+ 	aliasing.
+ 	(Assign, Move): Remove address comparison.
+ 	(Difference, Intersection, Is_Subset, Overlap,
+ 	Symmetric_Difference, Union): Remove address comparison.  Insert
+ 	constants for subtype constraints.
+ 	(Insert): Rewrite to avoid aliasing and function with
+ 	side-effects.
+ 	* libgnat/a-chtgfk.adb (Checked_Equivalent_Keys, Checked_Index,
+ 	Delete_Key_Sans_Free, Find, Generic_Replace_Element, Index):
+ 	Type for hash tables not tagged anymore.
+ 	(Generic_Conditional_Insert): New_Node generic formal is a
+ 	procedure taking the hash table as first parameter now, to avoid
+ 	aliasing in the caller.
+ 	* libgnat/a-chtgfk.ads: Same.
+ 	* libgnat/a-chtgfo.adb (Checked_Index, Clear,
+ 	Delete_Node_At_Index, Delete_Node_Sans_Free, First, Free,
+ 	Generic_Allocate, Generic_Iteration, Generic_Read,
+ 	Generic_Write, Index, Next): Type for hash tables not tagged
+ 	anymore.
+ 	(Generic_Equal): Removed tagged. Remove address comparison.
+ 	* libgnat/a-chtgfo.ads: Same.
+ 	* libgnat/a-cohata.ads (Hash_Table_Type): Remove tagged.
+ 
+ 2022-05-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* Makefile.rtl: Add new files.
+ 	* libgnat/a-cfhama.adb: Use formal version of hash tables.
+ 	* libgnat/a-cfhama.ads: Same.
+ 	* libgnat/a-cfhase.adb: Same.
+ 	* libgnat/a-cfhase.ads: Same.
+ 	* libgnat/a-chtgfk.adb: New unit for formal containers, modified
+ 	version of Generic_Bounded_Keys.
+ 	* libgnat/a-chtgfk.ads: Same.
+ 	* libgnat/a-chtgfo.adb: New unit for formal containers, modified
+ 	version of Generic_Bounded_Operations.
+ 	* libgnat/a-chtgfo.ads: Same.
+ 	* libgnat/a-cohata.ads (Generic_Formal_Hash_Table_Types): Third
+ 	version of the type for hash tables, equivalent to the bounded
+ 	version without tampering checks.
+ 
+ 2022-05-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* freeze.adb (Check_Inherited_Conditions): Dispatch table
+ 	wrappers must be placed in the list of entities of their scope
+ 	at the same place of their wrapped primitive. This is required
+ 	for private types since these wrappers are built when their full
+ 	tagged type declaration is frozen but they may override a
+ 	primitive defined in the public part of the package (and it is
+ 	important to maintain the wrapper in the list of public entities
+ 	of the package to ensure their correct visibility).
+ 
+ 2022-05-13  Johannes Kanig  <kanig@adacore.com>
+ 
+ 	* osint.ads, osint.adb (Relocate_Path): If the GNSA_ROOT
+ 	environment variable is set, we use that as the prefix, instead
+ 	of computing the prefix from the executable location.
+ 
+ 2022-05-13  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch3.ads (Build_Intialization_Call): Add new formal
+ 	parameter, Init_Control_Actual, with default value. Clients
+ 	outside of package Exp_Ch3 are unaffected.
+ 	* exp_ch3.adb (Initialization_Control): new package; support for
+ 	this 4-valued parameter.  The existing Requires_Late_Init
+ 	function is moved into this new package.
+ 	(Build_Initialization_Call): Add new formal parameter for
+ 	subprogram body, use this new formal parameter in generating an
+ 	init proc call.
+ 	(Build_Record_Init_Proc): Replace Set_Tag Boolean formal
+ 	parameter with 4-valued Init_Control_Formal. Wrap if-statements
+ 	with appropriate conditions around tag initialization, early
+ 	initialization, and late initialization statements.
+ 	* exp_util.adb (Build_Task_Image_Decl): Avoid problem with
+ 	duplicate declarations when an init proc for a type extension
+ 	calls the parent type's init proc twice.
+ 
+ 2022-05-13  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Iterator_Specification): Fix Typ in the
+ 	case of a class-wide derived iterator.
+ 
+ 2022-05-13  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-strbou.ads (Overwrite): Switch to >= operator in
+ 	contracts.
+ 	* libgnat/a-strsup.adb (Super_Overwrite): Switch to >= operator
+ 	in code of procedure (function already uses it).
+ 	* libgnat/a-strsup.ads (Super_Overwrite): Switch to >= operator
+ 	in contracts.
+ 
+ 2022-05-13  Etienne Servais  <servais@adacore.com>
+ 
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Fix code
+ 	snippet.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* aspects.adb (Find_Value_Of_Aspect): Add guard.
+ 	* sem_ch4.adb (Complete_Object_Operation): Remove obsolete code.
+ 	* sem_ch5.adb (Has_Sec_Stack_Default_Iterator): Add guard.
+ 
+ 2022-05-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference): The expansion of
+ 	'Address in a call to an instantiation of the implicit
+ 	subprogram To_Pointer with a class-wide interface type target
+ 	requires adding an implicit type conversion to force
+ 	displacement of the "this" pointer.
+ 
+ 2022-05-13  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_attr.adb (Resolve_Attribute): Ensure that attribute
+ 	expressions are resolved at this stage; required for preanalyzed
+ 	references to discriminants since their resolution (and
+ 	expansion) will take care of updating their Entity attribute to
+ 	reference their discriminal.
+ 
+ 2022-05-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_util.adb (Wrong_Type): Avoid using the first subtype of
+ 	the expected type in error messages when the expected type is
+ 	not internally generated.
+ 
+ 2022-05-13  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst: Add subsection on
+ 	Control Flow Redundancy.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-13  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_util.adb (Insert_Actions) <N_Iteration_Scheme>: Check that
+ 	it is a WHILE iteration scheme before using Condition_Actions.
+ 
+ 2022-05-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* atree.adb, gen_il-gen.adb, osint.adb, set_targ.adb,
+ 	sinput.adb, table.adb, treepr.adb, types.ads: Replace uses of
+ 	Unchecked_Conversion in the compiler itself.
+ 	* libgnarl/a-reatim.adb, libgnarl/s-osinte__gnu.ads,
+ 	libgnarl/s-osinte__kfreebsd-gnu.ads, libgnat/a-coboho.adb,
+ 	libgnat/a-stuten.ads, libgnat/s-putima.adb: Likewise in the
+ 	runtime.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Likewise in
+ 	documentation.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* butil.adb, sem.adb, sinput.adb, types.ads, xref_lib.adb:
+ 	Replace uses of Unchecked_Deallocation with
+ 	Ada.Unchecked_Deallocation.
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst: Likewise for the
+ 	documentation; fix casing of GNAT.IO.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-13  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* sem_aggr.adb (Resolve_Array_Aggregate): Fix ARM reference.
+ 	Remove useless loop.
+ 
+ 2022-05-13  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): Fix typo in
+ 	comment.
+ 
+ 2022-05-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch6.adb (Check_Return_Construct_Accessibility): Modify
+ 	generation of run-time accessibility checks to account for cases
+ 	where Extra_Accessibility_Of_Result should be used versus the
+ 	level of the enclosing subprogram. Use original node to avoid
+ 	checking against expanded code. Disable check generation for
+ 	tagged type case.
+ 	(Is_Formal_Of_Current_Function): Added to encompass a predicate
+ 	used within Check_Return_Construct_Accessibility to test if an
+ 	associated expression is related to a relevant formal.
+ 	* sem_util.adb, sem_util.ads (Enclosing_Subprogram): Modified to
+ 	accept Node_Or_Entity_Id.
+ 	(Innermost_Master_Scope_Depth): Calculate level based on the
+ 	subprogram of a return statement instead of the one returned by
+ 	Current_Subprogram.
+ 	(Needs_Result_Accessibility_Level): Remove
+ 	Disable_Coextension_Cases constant, and disable the tagged type
+ 	case for performance reasons.
+ 
+ 2022-05-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Flag_Effectively_Volatile_Objects): Ignore
+ 	component and discriminant identifiers.
+ 
+ 2022-05-13  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Flag_Effectively_Volatile_Objects): Remove
+ 	redundant guard.
+ 
+ 2022-05-13  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Determine_Package_Scope): Created to centralize
+ 	the calculation of which package a given use clause belongs to.
+ 	(Most_Descendant_Use_Clause): Modified to call
+ 	Determine_Package_Scope.
+ 	* sem_util.adb, sem_util.ads (Enclosing_Package): Modified to
+ 	handle both entity and node ids.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gnat1drv.adb (Gnat1drv): Skip postponed checks when there are
+ 	errors.
+ 
+ 2022-05-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst: Fix URL.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.ads, namet.adb (Write_Name_For_Debug): Add Quote
+ 	parameter to allow conditional addition of quotes. Note that
+ 	some calls to Write_Name_For_Debug, for example for file names,
+ 	shouldn't have quotes, as in some_package.adb:123:45.
+ 	* treepr.adb (Print_Name): Add double quotes around the name
+ 	using the above Quote parameters.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Actuals): Simplify with N_Op_Compare.
+ 	* sem_util.adb (Replace_Null_Operand,
+ 	Null_To_Null_Address_Convert_OK): Likewise.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads (Is_Selector_Name): Remove spec.
+ 	* sem_util.adb (Is_Selector_Name): Remove body.
+ 
+ 2022-05-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* sem_warn.adb (Has_Junk_Name): Add more dummy names.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* lib-xref.adb (Generate_Reference): Fix comment and implement
+ 	it precisely.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* atree.adb, atree.ads: Move WITH clause from spec to body; to
+ 	prevent new warnings stopping the bootstrap.
+ 	* fmap.adb, fname-sf.adb, libgnat/a-direct.adb,
+ 	libgnat/s-bignum.adb: Remove unnecessary WITH clauses; to
+ 	prevent new warnings stopping the bootstrap.
+ 	* sem_ch12.adb (Analyze_Subprogram_Instantiation): Only set
+ 	Is_Instantiated flag when the instance is in the extended main
+ 	source unit.
+ 
+ 2022-05-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-valuei.ads: Remove pragma Warnings Off.
+ 	* libgnat/s-valueu.ads: Same.
+ 	* libgnat/s-valuti.ads: Same.
+ 
+ 2022-05-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Check_Result_And_Post_State): Exempt trivial
+ 	post.
+ 
+ 2022-05-12  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* ali.adb, ali.ads, bcheck.adb, exp_ch11.adb, fe.h,
+ 	gnat1drv.adb, opt.adb, opt.ads, targparm.adb, targparm.ads,
+ 	lib-writ.adb: Get rid of Frontend_Exceptions processing.
+ 	* libgnat/system-aix.ads, libgnat/system-darwin-arm.ads,
+ 	libgnat/system-darwin-ppc.ads, libgnat/system-darwin-x86.ads,
+ 	libgnat/system-djgpp.ads, libgnat/system-dragonfly-x86_64.ads,
+ 	libgnat/system-freebsd.ads, libgnat/system-hpux-ia64.ads,
+ 	libgnat/system-hpux.ads, libgnat/system-linux-alpha.ads,
+ 	libgnat/system-linux-arm.ads, libgnat/system-linux-hppa.ads,
+ 	libgnat/system-linux-ia64.ads, libgnat/system-linux-m68k.ads,
+ 	libgnat/system-linux-mips.ads, libgnat/system-linux-ppc.ads,
+ 	libgnat/system-linux-riscv.ads, libgnat/system-linux-s390.ads,
+ 	libgnat/system-linux-sh4.ads, libgnat/system-linux-sparc.ads,
+ 	libgnat/system-linux-x86.ads, libgnat/system-lynxos178-ppc.ads,
+ 	libgnat/system-lynxos178-x86.ads, libgnat/system-mingw.ads,
+ 	libgnat/system-qnx-aarch64.ads, libgnat/system-rtems.ads,
+ 	libgnat/system-solaris-sparc.ads,
+ 	libgnat/system-solaris-x86.ads,
+ 	libgnat/system-vxworks-arm-rtp-smp.ads,
+ 	libgnat/system-vxworks-arm-rtp.ads,
+ 	libgnat/system-vxworks-arm.ads,
+ 	libgnat/system-vxworks-e500-kernel.ads,
+ 	libgnat/system-vxworks-e500-rtp-smp.ads,
+ 	libgnat/system-vxworks-e500-rtp.ads,
+ 	libgnat/system-vxworks-ppc-kernel.ads,
+ 	libgnat/system-vxworks-ppc-rtp-smp.ads,
+ 	libgnat/system-vxworks-ppc-rtp.ads,
+ 	libgnat/system-vxworks-x86-kernel.ads,
+ 	libgnat/system-vxworks-x86-rtp-smp.ads,
+ 	libgnat/system-vxworks-x86-rtp.ads,
+ 	libgnat/system-vxworks7-aarch64-rtp-smp.ads,
+ 	libgnat/system-vxworks7-aarch64.ads,
+ 	libgnat/system-vxworks7-arm-rtp-smp.ads,
+ 	libgnat/system-vxworks7-arm.ads,
+ 	libgnat/system-vxworks7-e500-kernel.ads,
+ 	libgnat/system-vxworks7-e500-rtp-smp.ads,
+ 	libgnat/system-vxworks7-e500-rtp.ads,
+ 	libgnat/system-vxworks7-ppc-kernel.ads,
+ 	libgnat/system-vxworks7-ppc-rtp-smp.ads,
+ 	libgnat/system-vxworks7-ppc-rtp.ads,
+ 	libgnat/system-vxworks7-ppc64-kernel.ads,
+ 	libgnat/system-vxworks7-ppc64-rtp-smp.ads,
+ 	libgnat/system-vxworks7-x86-kernel.ads,
+ 	libgnat/system-vxworks7-x86-rtp-smp.ads,
+ 	libgnat/system-vxworks7-x86-rtp.ads,
+ 	libgnat/system-vxworks7-x86_64-kernel.ads,
+ 	libgnat/system-vxworks7-x86_64-rtp-smp.ads: Remove
+ 	Frontend_Exceptions line.
+ 	* gcc-interface/decl.cc, gcc-interface/trans.cc
+ 	(gnat_to_gnu_entity, gnat_to_gnu_subprog_type, gigi,
+ 	gnat_to_gnu): Remove Front_End_SJLJ processing and always assume
+ 	Back_End_Exceptions.
+ 
+ 2022-05-12  Bob Duff  <duff@adacore.com>
+ 
+ 	* namet.ads, namet.adb (Write_Name_For_Debug): New more-robust
+ 	version of Write_Name.
+ 	(Destroy_Global_Name_Buffer): New procedure to help detect bugs
+ 	related to use of Global_Name_Buffer.  Misc cleanup and comment
+ 	improvements. E.g. we don't need to document every detail of
+ 	debugging printouts, especially since they can change.
+ 	* uname.ads, uname.adb (Write_Unit_Name_For_Debug): New
+ 	more-robust version of Write_Unit_Name.
+ 	(Get_Unit_Name_String): Pass buffer in, instead of using the
+ 	global variable. Misc cleanup. Remove the "special fudge", which
+ 	is apparently not needed, and anyway the comment "the %s or %b
+ 	has already been eliminated" seems wrong.
+ 	(Write_Unit_Name): Call the new version of Get_Unit_Name_String.
+ 	* errout.adb (Set_Msg_Insertion_Unit_Name): Call the new version
+ 	of Get_Unit_Name_String. We pass the global variable here,
+ 	because it's too much trouble to disentangle such uses in
+ 	Errout.
+ 	* sem_util.ads, sem_util.adb, sem_dist.adb
+ 	(Get_Library_Unit_Name): New version of
+ 	Get_Library_Unit_Name_String that avoids usage of the global
+ 	variable.
+ 	* casing.ads, casing.adb, exp_prag.adb, exp_util.adb
+ 	(Set_All_Upper_Case): Remove. There is no need for a wrapper
+ 	here -- code is clearer without it.
+ 	* treepr.adb (Print_Name): Call Write_Name_For_Debug, which
+ 	deals with No_Name (etc), rather than duplicating that here.
+ 	Note that the call to Get_Name_String was superfluous.
+ 	(Tree_Dump): Call Write_Unit_Name_For_Debug instead of
+ 	Write_Unit_Name, which crashes if not Is_Valid_Name.
+ 	* erroutc.ads: Improve comments.
+ 	* erroutc.adb (Set_Msg_Name_Buffer): Call
+ 	Destroy_Global_Name_Buffer to detect potential bugs where it
+ 	incorrectly looks at the global variable.
+ 	* sinput.adb (Write_Location): Call Write_Name_For_Debug instead
+ 	of Write_Name, so it won't blow up on invalid data.
+ 	* sinput.ads: Improve comments; remove some verbosity.
+ 	* libgnat/s-imagef.adb: Fix typo in comment.
+ 
+ 2022-05-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-imageu.adb (Set_Image_Unsigned): Add lemma.
+ 	* libgnat/s-valueu.adb (Scan_Raw_Unsigned): Add assertion.
+ 
+ 2022-05-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.ads: Remove use-clause, add renames and
+ 	subtypes.
+ 	* libgnat/s-exponn.ads: Same.
+ 	* libgnat/s-expont.ads: Same.
+ 	* libgnat/s-widthu.ads: Same.
+ 
+ 2022-05-12  Etienne Servais  <servais@adacore.com>
+ 
+ 	* csets.adb (Fold_Latin_9): Fix y with diaeresis.
+ 	(Fold_IBM_PC_850): Fix o with stroke.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_type.adb (Valid_Boolean_Arg): Remove redundant guard.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_type.adb (Valid_Boolean_Arg): Operands of Raise_Type are
+ 	valid boolean arguments.
+ 
+ 2022-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Possible_Type_For_Conditional_Expression): Add
+ 	test for subtype conformance in the cases of
+ 	access-to-subprogram types.
+ 
+ 2022-05-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-imagef.adb: Justify false message from CodePeer.
+ 
+ 2022-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Case_Expression): Rewrite.
+ 	(Analyze_If_Expression): Likewise.
+ 	(Possible_Type_For_Conditional_Expression): New function.
+ 	* sem_type.adb (Specific_Type): Retur the base type in more
+ 	cases.
+ 
+ 2022-05-12  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-imagef.adb: Adapt to new signature of Image_I, by
+ 	providing ghost imported subprograms. For now, no contract is
+ 	used on these subprograms, as System.Image_F is not proved.
+ 	* libgnat/s-imagef.ads: Add modular type Uns as formal
+ 	parameter, to use in defining Int_Params for instantiating
+ 	Image_I.
+ 	* libgnat/s-imagei.adb: Add contracts and ghost code.
+ 	* libgnat/s-imagei.ads: Replace Int formal parameter by package
+ 	Int_Params, which bundles type Int and Uns with ghost
+ 	subprograms.  Add contracts.
+ 	* libgnat/s-imfi128.ads: Adapt to new formal of Image_F.
+ 	* libgnat/s-imfi32.ads: Adapt to new formal of Image_F.
+ 	* libgnat/s-imfi64.ads: Adapt to new formal of Image_F.
+ 	* libgnat/s-imgint.ads: Adapt to new formals of Image_I.
+ 	* libgnat/s-imglli.ads: Adapt to new formals of Image_I.
+ 	* libgnat/s-imgllli.ads: Adapt to new formals of Image_I.
+ 	* libgnat/s-valint.ads: Adapt to new formals of Value_I.
+ 	* libgnat/s-vallli.ads: Adapt to new formals of Value_I.
+ 	* libgnat/s-valllli.ads: Adapt to new formals of Value_I.
+ 	* libgnat/s-valuei.adb (Prove_Scan_Only_Decimal_Ghost): New
+ 	ghost lemma.
+ 	* libgnat/s-valuei.ads: New formal parameters to prove the new
+ 	lemma.
+ 	* libgnat/s-valuti.ads (Int_Params): Define a generic package to
+ 	be used as a trait-like formal parameter in Image_I and other
+ 	generics that need to instantiate Image_I.
+ 	* libgnat/s-widthu.ads (Big_10): Qualify the 10 literal.
+ 
+ 2022-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Find_Arithmetic_Types): Use local variables.
+ 	(Find_Boolean_Types): Rewrite modeled on Find_Arithmetic_Types.
+ 
+ 2022-05-12  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* doc/gnat_rm/security_hardening_features.rst (Hardened
+ 	Booleans): New.
+ 	* exp_util.adb (Adjust_Condition): Perform validity checking on
+ 	hardbool-annotated types even with -gnatVT.
+ 	* gnat_rm.texi: Regenerate.
+ 	* gcc-interface/utils.cc (gnat_internal_attribute_table): Ignore
+ 	hardbool.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch9.adb (Build_Protected_Entry): Set scope of the nested
+ 	block to spec and not the body of the procedure created for a
+ 	protected entry.
+ 
+ 2022-05-12  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch3.adb (Find_Type_Of_Object): Remove duplicate "i" in
+ 	comment.
+ 
+ 2022-05-12  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* csets.adb (Initialize): Only treat square bracket as valid
+ 	identifier character for Ada versions prior to Ada 2022.
+ 	* style.ads (Check_Left_Paren): Rename...
+ 	(Check_Left_Paren_Square_Bracket): ...to this.
+ 	* styleg.adb (Check_Left_Bracket): Rename...
+ 	(Check_Left_Paren_Square_Bracket): ...to this.
+ 	* styleg.ads (Check_Left_Paren): Rename...
+ 	(Check_Left_Paren_Square_Bracket): ...to this.
+ 	* scng.adb (Scan): Add check for spacing around left square
+ 	bracket and use new name for Check_Left_Paren_Square_Bracket.
+ 	* libgnat/a-szmzco.ads (Control_Ranges, Graphic_Ranges)
+ 	(Letter_Ranges, Decimal_Digit_Ranges, ISO_646_Ranges)
+ 	(Character_Ranges): Fix style (remove extra space).
+ 	* libgnat/a-swmwco.ads (Control_Ranges, Graphic_Ranges)
+ 	(Letter_Ranges, Decimal_Digit_Ranges, ISO_646_Ranges)
+ 	(Character_Ranges): Likewise.
+ 	* opt.adb (Set_Config_Switches): Remove [ from Identifier_Char
+ 	set.
+ 
+ 2022-05-12  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_type.adb (Specific_Type): Add swapped cases for interfaces.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst:
+ 	(Export_Object, Import_Object, Short_Descriptors): Fix pragma
+ 	syntax specification.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* ali.adb (Hash): Reuse GNAT.String_Hash.Hash and don't pollute
+ 	the Name_Id table.
+ 
+ 2022-05-12  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst (Configuration
+ 	Pragmas): Add Aggregate_Individually_Assign; otherwise the list
+ 	is complete except for some obsoleted pragmas, which most likely
+ 	are intentionally omitted.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-imaged.ads: Remove Pure.
+ 	* libgnat/s-imagef.ads: Remove Pure.
+ 	* libgnat/s-imager.ads: Remove Pure.
+ 	* libgnat/s-imageu.adb: Add ghost code.
+ 	* libgnat/s-imageu.ads: Add contracts.
+ 	* libgnat/s-imde128.ads: Remove Pure.
+ 	* libgnat/s-imde32.ads: Remove Pure.
+ 	* libgnat/s-imde64.ads: Remove Pure.
+ 	* libgnat/s-imfi128.ads: Remove Pure.
+ 	* libgnat/s-imfi32.ads: Remove Pure.
+ 	* libgnat/s-imfi64.ads: Remove Pure.
+ 	* libgnat/s-imgflt.ads: Remove Pure.
+ 	* libgnat/s-imglfl.ads: Remove Pure.
+ 	* libgnat/s-imgllf.ads: Remove Pure.
+ 	* libgnat/s-imglllu.ads: Instantiate with ghost subprograms.
+ 	* libgnat/s-imgllu.ads: Instantiate with ghost subprograms.
+ 	* libgnat/s-imgrea.ads: Remove Pure.
+ 	* libgnat/s-imguns.ads: Instantiate with ghost subprograms.
+ 	* libgnat/s-imguti.ads: Remove Pure.
+ 	* libgnat/s-valueu.adb (Prove_Iter_Scan_Based_Number_Ghost,
+ 	Prove_Scan_Only_Decimal_Ghost): New lemmas.
+ 	* libgnat/s-valueu.ads (Uns_Option): Do not make type ghost to
+ 	be able to use it as formal in instantiations.
+ 	(Only_Decimal_Ghost): New ghost query.
+ 	(Prove_Iter_Scan_Based_Number_Ghost,
+ 	Prove_Scan_Only_Decimal_Ghost): New lemmas.
+ 	* libgnat/s-widlllu.ads: Adapt to changes in Width_U.
+ 	* libgnat/s-widllu.ads: Adapt to changes in Width_U.
+ 	* libgnat/s-widthu.adb: Change generic function in generic
+ 	package in order to complete the postcondition. Tighten the
+ 	upper bound on the result by 1.
+ 	* libgnat/s-widthu.ads: Same.
+ 	* libgnat/s-widuns.ads: Adapt to changes in Width_U.
+ 	* gcc-interface/Make-lang.in: Add dependencies on a-nubinu,
+ 	a-numeri.ads and a-widuns.ads.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* snames.ads-tmpl (Detect_Blocking): Move after
+ 	Default_Storage_Pool.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Analyze_Pragma): Remove custom check for
+ 	Compile_Time_Error and Compile_Time_Warning pragmas.
+ 	* snames.ads-tmpl (Compile_Time_Error, Compile_Time_Warning):
+ 	Move beyond Last_Configuration_Pragma_Name.
+ 
+ 2022-05-11  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/a-direct.adb (Start_Search_Internal): Use parentheses
+ 	for record aggregate.
+ 	* libgnat/a-stbubo.adb (Get_UTF_8): Likewise.
+ 	* libgnat/a-stbuun.adb (Get_UTF_8): Likewise.
+ 	* libgnat/a-stzbou.ads (Null_Bounded_Wide_Wide_String):
+ 	Likewise.
+ 	* libgnat/a-swmwco.ads (Lower_Case_Mapping, Basic_Mapping):
+ 	Likewise.
+ 	* libgnat/a-szmzco.ads (Lower_Case_Mapping, Basic_Mapping):
+ 	Likewise.
+ 	* libgnat/s-statxd.adb (Fields): Likewise.
+ 	* libgnat/s-stausa.adb (Initialize): Likewise.
+ 	* sem_aggr.adb (Resolve_Record_Aggregate): Reject aggregates
+ 	using brackets.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst,
+ 	doc/gnat_rm/implementation_of_specific_ada_features.rst,
+ 	doc/gnat_rm/representation_clauses_and_pragmas.rst,
+ 	doc/gnat_rm/the_gnat_library.rst,
+ 	doc/gnat_rm/the_implementation_of_standard_i_o.rst,
+ 	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+ 	doc/gnat_ugn/gnat_and_program_execution.rst,
+ 	doc/gnat_ugn/platform_specific_information.rst: Fix unbalanced
+ 	parentheses and brackets.
+ 	* sem_prag.adb (pragma Obsolescent): Likewise.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-11  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (Restriction_Id): Add
+ 	No_Local_Tagged_Types, update comment for adding new GNAT
+ 	specific restriction.
+ 	* restrict.ads (Implementation_Restriction): Add
+ 	No_Local_Tagged_Types.
+ 	* sem_ch3.adb (Analyze_Full_Type_Declaration): Add check for
+ 	tagged type at library level.
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
+ 	Add No_Local_Tagged_Types description.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_User_Defined_Binary_Op): Use the base type
+ 	in the interpretation of the operator.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_case.adb (Free_Value_Sets): Fix style in body header box.
+ 	* sem_ch12.adb (Build_Subprogram_Wrappers): Likewise.
+ 	* sem_util.adb (Statically_Denotes_Entity): Likewise.
+ 
+ 2022-05-11  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch3.adb (Constrain_Access): Call Desig_Subtype in each if
+ 	branch to avoid calling it twice.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Find_Var): Detect all operators; replace
+ 	"condition" to "expression" in comments, because when this
+ 	routine is called recursively it no longer examines the
+ 	condition.
+ 	(Is_Suspicious_Function_Name): Reduce scope of a local variable
+ 	to avoid shadowing with a parameter of a nested
+ 	Substring_Present function.
+ 
+ 2022-05-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Double_Divide, Scaled_Divide): Add
+ 	intermediate assertions.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (Implementation_Restriction): Remove
+ 	No_Dynamic_Attachment, No_Implementation_Attributes,
+ 	No_Implementation_Pragmas, No_Local_Protected_Objects,
+ 	No_Protected_Type_Allocators, No_Relative_Delay,
+ 	No_Requeue_Statements, No_Select_Statements,
+ 	No_Task_Termination, Pure_Barriers and Simple_Barriers; add
+ 	No_Dynamic_Sized_Objects,
+ 	No_Implicit_Protected_Object_Allocations,
+ 	No_Implicit_Task_Allocations, No_Task_At_Interrupt_Priority and
+ 	Static_Dispatch_Tables; sort alphabetically.
+ 	* restrict.ads (Restriction_Id): Change Pure_Barriers and
+ 	No_Task_Termination from GNAT to Ada restrictions.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_atag.adb, lib-util.ads, libgnat/g-decstr.adb,
+ 	libgnat/g-exptty.adb, libgnat/g-socpol.adb,
+ 	libgnat/s-strhas.adb: Fix headers.
+ 
+ 2022-05-11  Joao Azevedo  <azevedo@adacore.com>
+ 
+ 	* doc/gnat_ugn/platform_specific_information.rst: Add
+ 	glibc-locale-base-32bit as a dependency in SUSE distributions.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_and_program_execution.rst,
+ 	doc/gnat_ugn/gnat_utility_programs.rst,
+ 	doc/gnat_ugn/inline_assembler.rst: Fix typos and formatting
+ 	glitches.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Change
+ 	blocks from plain code to Ada.
+ 
+ 2022-05-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_Assign_With_Target_Names): Bypass the temp
+ 	object approach in the case where the type of the LHS is
+ 	controlled or has controlled subcomponents (Needs_Finalization
+ 	is True), and use the procedure approach instead.
+ 
+ 2022-05-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch3.adb (Get_Discr_Value): Copy the result. Otherwise, the
+ 	"tree" can be malformed (a DAG, not a tree) because
+ 	Get_Discr_Value could be returning some subtree already attached
+ 	to the tree.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Statements): Only clear Reachable flag on
+ 	proper label entities.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Add
+ 	tabularcolums directive, as explained in documentation of Sphinx
+ 	and tabular LaTeX package.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_aspects.rst,
+ 	doc/gnat_rm/implementation_defined_pragmas.rst: Remove extra
+ 	whitespace.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_characteristics.rst: Remove
+ 	extra indent in continuation lines; indent both descriptions of
+ 	Max_Picture_Length.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Pragma
+ 	Eliminate): Fix markup.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-11  Johannes Kliemann  <kliemann@adacore.com>
+ 
+ 	* libgnat/g-sthcso.adb: Suppress warning about unneeded use type
+ 	clause.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Analyze_Statements): Only clear Reachable flag on
+ 	proper label entities.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Pragma
+ 	Ada_2022): Copy description from pragma Ada 2012 and adapt.
+ 	* doc/gnat_ugn/the_gnat_compilation_model.rst (Configuration
+ 	Pragmas): List pragma Ada 2022.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-11  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Replace
+ 	the existing check for an address specification for an object of
+ 	a class-wide type with a more general check which rejects either
+ 	the class-wide case or the case where the FE would (if the
+ 	address specification were accepted) build a malformed
+ 	tree (specifically, an object renaming declaration with a
+ 	specified address). In the case where the check fails, reject
+ 	the construct at compile time instead of generating an
+ 	unconditional raise of Program_Error.
+ 	* doc/gnat_rm/representation_clauses_and_pragmas.rst: Update
+ 	documentation to reflect these changes.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gen_il-gen-gen_entities.adb (Reachable): Move from
+ 	Root_Entity_Type to E_Label.
+ 
+ 2022-05-11  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Guard
+ 	Set_Is_Known_Valid with Safe_To_Capture_Value.
+ 
+ 2022-05-11  Bob Duff  <duff@adacore.com>
+ 
+ 	* repinfo.adb (List_Object_Info): Do not try to print values
+ 	that have not been computed (and so are No_Uint).
+ 	(Rep_Not_Constant): Reverse sense and change name to
+ 	Compile_Time_Known_Rep. This makes the code at call sites a
+ 	little more readable. Simplify code to a single return
+ 	statement.
+ 
+ 2022-05-10  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gcc-interface/decl.cc (compare_field_bitpos): Use void *
+ 	instead PTR.
+ 	* gcc-interface/utils2.cc (compare_elmt_bitpos): Likewise.
+ 
+ 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* fe.h (Is_Expression_Function): Declare.
+ 	* sem_util.ads (Is_Expression_Function): Add warning line.
+ 
+ 2022-05-10  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Valid>:
+ 	Drop redundant range check for nonstandard booleans.
+ 
+ 2022-05-10  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* exp_util.adb (Adjust_Result_Type): Leave result in
+ 	Standard.Boolean if it's going to be converted to another
+ 	boolean type.
+ 	* exp_ch4.adb (Expand_N_Type_Conversion): When optimizing,
+ 	convert to nonstandard booleans with an if_expression with
+ 	boolean literals.
+ 
+ 2022-05-10  Alexandre Oliva  <oliva@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_If_Expression): Call Adjust_Condition to
+ 	handle non-standard booleans.
+ 
+ 2022-05-10  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Use_One_Type): Remove code in charge of setting
+ 	Current_Use_Clause when Id is known to be redundant, and modify
+ 	the printing of errors associated with redundant use type
+ 	clauses so that line number gets included in more cases.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_Unset_Reference): Use variant of
+ 	Earlier_In_Extended_Unit that calls Sloc internally.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch10.adb, scng.adb, sem_res.adb, sinfo-utils.adb,
+ 	treepr.adb: Simplify calculations with Source_Ptr and Loc
+ 	values.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Expression_With_Actions): Fix style in
+ 	nested routines.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* atree.adb, exp_ch6.adb, exp_ch9.adb, ghost.adb, sem_ch3.adb,
+ 	sem_ch4.adb, sem_res.adb, sem_util.adb: Use
+ 	Is_Rewrite_Substitution where possible.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch11.adb, exp_ch5.adb, exp_prag.adb, gnat_cuda.adb,
+ 	sem_ch12.adb, sem_ch3.adb, sem_ch6.adb, sem_util.adb,
+ 	treepr.adb: Replace /= and = operators with No and Present,
+ 	respectively.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Within_Postcondition): Guard against search
+ 	going too far.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_Unset_Reference): The early test was only
+ 	saving time of calls to Original_Node, Comes_From_Source and
+ 	Nkind, which are all quick and cheap.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch5.adb (Check_Unreachable_Code): Remove inner declare
+ 	block; refill code and comments.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Replace
+ 	First_Entity/Next_Entity with First_Formal/Next_Formal; rename
+ 	E1/E2 to F1/F2.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): Check expression for
+ 	references to unset objects.
+ 	(Resolve_Qualified_Expression): Likewise.
+ 	* sem_warn.adb (Check_Unset_Reference): Remove handling of
+ 	declare and qualified expressions; clarify comment for type
+ 	conversions.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Case_Expression): Check alternative
+ 	expressions for references to unset objects.
+ 	(Resolve_If_Expression): Check condition, then and else
+ 	expressions for references to unset objects.
+ 
+ 2022-05-10  Kévin Le Gouguec  <legouguec@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_attributes.rst,
+ 	doc/gnat_ugn/the_gnat_compilation_model.rst: Fix typos.
+ 	* gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 
+ 2022-05-10  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch13.adb (Is_Predicate_Static): Fix typo in comment.
+ 
+ 2022-05-10  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-valuei.adb: Fix indentation.
+ 	* libgnat/s-valuei.ads: Same.
+ 
+ 2022-05-10  Claire Dross  <dross@adacore.com>
+ 
+ 	* snames.ads-tmpl: Add "Structural" as a name.
+ 	* sem_prag.adb: (Analyze_Pragma): Accept modifier "Structural"
+ 	in pragmas Loop_Variant and Subprogram_Variant. Check that items
+ 	associated to Structural occur alone in the pragma associations.
+ 	(Analyze_Subprogram_Variant_In_Decl_Part): Idem.
+ 	* exp_prag.adb (Expand_Pragma_Loop_Variant): Discard structural
+ 	variants.
+ 	(Expand_Pragma_Subprogram_Variant): Idem.
+ 
+ 2022-05-10  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-valint.ads: Add SPARK_Mode and pragma to ignore
+ 	assertions in instance and add additional ghost parameters to
+ 	the instance of Value_I.
+ 	* libgnat/s-vallli.ads: Idem.
+ 	* libgnat/s-valllli.ads: Idem.
+ 	* libgnat/s-valuei.ads, libgnat/s-valuei.adb: New generic
+ 	parameters for ghost functions from System.Valueu. Add
+ 	functional contracts.
+ 
+ 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Eqyality_Op): Remove obsolete code.
+ 	(Resolve_Op_Not): Likewise.
+ 	* sem_type.adb (Disambiguate): Add missing test for RM 8.4(10).
+ 	* libgnat/s-dwalin.adb (Enable_Cache): Fix ambiguity.
+ 	(Symbolic_Address): Likewise.
+ 
+ 2022-05-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Integer_Literal): Fix oversight in entry test.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Expand_N_Aggregate): Replace UI_To_Int with
+ 	UI_To_CC; replace magic literals with high-level routines that
+ 	recognise wide and wide wide characters; reorder if-then-elsif
+ 	condition, because we don't have a routine to detect wide wide
+ 	characters.
+ 
+ 2022-05-10  Etienne Servais  <servais@adacore.com>
+ 
+ 	* scng.adb (Nlit): Error on big UI_Scale.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Build_Task_Array_Image): Declare expanded
+ 	objects as constants.
+ 	(Build_Task_Image_Prefix): Likewise.
+ 	(Build_Task_Record_Image): Likewise.
+ 
+ 2022-05-10  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* checks.adb (Determine_Range): Fix range refining.
+ 
+ 2022-05-10  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.adb (Get_Actual_Subtype): If a new subtype is built,
+ 	do not freeze it if Expander_Active is False. The idea here is
+ 	to avoid generating an unwanted Freeze_Node for a subtype that
+ 	has been conjured up solely for purposes of preanalysis.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.adb (Build_Task_Array_Image): Fix style in the
+ 	structure of generated code; add Pref'Length as the component of
+ 	the Sum initialization expression.
+ 
+ 2022-05-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_prag.adb (Expand_Pragma_Import_Or_Interface): Use
+ 	Get_Char_Code.
+ 	* exp_util.adb (Build_Task_Array_Image): Simplify conversion to
+ 	Char_Code.
+ 	(Build_Task_Image_Prefix): Likewise.
+ 	(Build_Task_Record_Image): Likewise.
+ 	* cstand.adb (Create_Standard): Use UI_From_Int instead of
+ 	UI_From_CC.
+ 	* exp_ch11.adb (Expand_N_Exception_Declaration): Likewise.
+ 	* sem_res.adb (Patch_Up_Value): Likewise.
+ 	* stringt.adb (Write_String_Table_Entry): Use Get_Char_Code.
+ 
+ 2022-05-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* sem_util.adb (Bad_Predicated_Subtype_Use): Add continuation
+ 	message.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* uintp.adb (UI_To_CC): Guard against illegal inputs; reuse
+ 	UI_To_Int.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-prag.adb (Prag): Simplify conversion of character codes.
+ 	* sem_case.adb (Choice_Image): Likewise.
+ 	(Lit_Of): Likewise.
+ 
+ 2022-05-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_Tag>:
+ 	Deal specifically wth class-wide equivalent types without a
+ 	parent.
+ 	* exp_util.adb (Build_Allocate_Deallocate_Proc): Extract
+ 	allocator node for calculation of alignment actual and modify
+ 	alignment for allocators of class-wide types with associated
+ 	expressions.
+ 	(Make_CW_Equivalent_Type): Handle interface types differently
+ 	when generating the equivalent record.
+ 	* sem_aux.adb (First_Tag_Component): Accept class-wide
+ 	equivalent types too.
+ 
+ 2022-05-09  Etienne Servais  <servais@adacore.com>
+ 
+ 	* repinfo.adb (List_Name): Rework termination condition.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* bindgen.adb, errout.adb, exp_unst.adb, gnatchop.adb,
+ 	libgnat/a-ngcefu.adb, libgnat/a-strunb.adb,
+ 	libgnat/a-stwiun.adb, libgnat/a-stzunb.adb,
+ 	libgnat/a-wtedit.adb, libgnat/g-debpoo.adb, osint.adb,
+ 	sigtramp-vxworks.c, uintp.adb: Remove extra whitespace around +,
+ 	-, *, / and **.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/s-expmod.adb: Remove CodePeer annotation for pragma
+ 	Loop_Variant.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.ads (In_Statement_Condition_With_Actions): Renamed
+ 	from In_While_Loop_Condition; move to fit the alphabetic order.
+ 	* sem_util.adb (In_Statement_Condition_With_Actions): Detect
+ 	Elsif condition; stop search on other statements; prevent search
+ 	from going too far; move to fit the alphabetic order.
+ 	* sem_res.adb (Resolve_Call): Adapt caller.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* inline.adb (Build_Body_To_Inline): Remove redundant guards.
+ 	* sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
+ 
+ 2022-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_util.adb (Is_OK_Variable_For_Out_Formal): Remove test on
+ 	Comes_From_Source in the condition dealing with the expression
+ 	of an N_Unchecked_Type_Conversion node.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb, exp_ch3.adb, exp_util.adb, freeze.adb,
+ 	gnatfind.adb, gnatlink.adb, gnatxref.adb, gprep.adb,
+ 	libgnat/a-cfhama.adb, libgnat/g-alleve.adb, sem_ch12.adb,
+ 	sem_ch13.adb, xr_tabls.adb: Fix style labels.
+ 
+ 2022-05-09  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* err_vars.ads: Add new error message names and nodes.
+ 	* erroutc.adb (Set_Msg_Insertion_Name,
+ 	Set_Msg_Insertion_Name_Literal): Likewise.
+ 	* errout.adb (Set_Msg_Insertion_Node): Likewise.
+ 	* errout.ads: Likewise.
+ 	* exp_disp.adb (Check_Premature_Freezing): Modify setting of
+ 	Error_Msg_Node_2 to occur directly before Error_Msg call where
+ 	applicable.
+ 	* sem_ch8.adb (Error_Missing_With_Of_Known_Unit): Added to
+ 	handle the printing of full package names of known units.
+ 	(Undefined, Find_Expanded_Name): Replace error printing with
+ 	call to Error_Missing_With_Of_Known_Unit.
+ 
+ 2022-05-09  Yannick Moy  <moy@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Allocator_Expression): Set Error_Msg_Warn
+ 	correctly.
+ 
+ 2022-05-09  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_ch13.adb (Replace_Type_Ref): In the case of an identifier
+ 	that names a component of the type, simplify the test to decide
+ 	whether to build a prefix for it (the prefix denotes the current
+ 	instance of the enclosing type): if the identifier doesn't
+ 	already have a prefix, then give it one. This isn't quite right
+ 	in the corner case of a quantified expression or some other such
+ 	expression that declares an object with the same name as a
+ 	component, but it is still an improvement.
+ 
+ 2022-05-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* exp_attr.adb (Compile_Stream_Body_In_Scope): Do not install
+ 	package if array type and element type come from the same
+ 	package, and the original array type is private.
+ 
+ 2022-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_ch4.adb (Handle_Changed_Representation): Simplify and fix
+ 	thinko in the loop building the constraints for discriminants.
+ 	* exp_ch5.adb (Make_Component_List_Assign): Try also to extract
+ 	discriminant values for a derived type.
+ 
+ 2022-05-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Declare_Expression): Traverse the
+ 	expression to replace references to local variables that occur
+ 	within declarations of the declare_expression; fix typos in
+ 	comments.
+ 
+ 2022-05-09  Ed Schonberg  <schonberg@adacore.com>
+ 
+ 	* sem_ch4.adb (Operator_Check): Fix condition.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst
+ 	(Abstract_State, Async_Readers, Async_Writers,
+ 	Constant_After_Elaboration, Effective_Reads, Effective_Writes,
+ 	Extensions_Visible, Ghost, No_Caching, Volatile_Function): Only
+ 	static Boolean expressions are allowed.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_prag.adb (Expand_Pragma_Loop_Variant,
+ 	Expand_Pragma_Subprogram_Variant): Adapt call via
+ 	Process_Variant to Make_Variant_Comparison.
+ 	* exp_util.adb (Make_Variant_Comparison): Compare Big_Integer
+ 	expressions with a function call and not an operator.
+ 	* exp_util.ads (Make_Variant_Comparison): Add type parameter,
+ 	which is needed because the Curr_Val and Old_Val expressions
+ 	might not be yet decorated.
+ 	* rtsfind.ads: (RTU_Id): Add support for Big_Integers and
+ 	Big_Integers_Ghost.
+ 	(RE_Id): Add support for Big_Integer and its ghost variant.
+ 	(RE_Unit_Table): Add mapping from Big_Integer to Big_Integers;
+ 	same for the ghost variants.
+ 	* rtsfind.adb (Get_Unit_Name): Add support for Big_Numbers.
+ 	* sem_prag.adb (Analyze_Pragma): Allow Big_Integer in pragma
+ 	Loop_Variant.
+ 	(Analyze_Variant): Allow Big_Integer in pragma
+ 	Subprogram_Variant.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch3.ads, sem_ch3.adb (Preanalyze_Assert_Expression): Add a
+ 	variant that doesn't force preanalysis to yield a specific type.
+ 
+ 2022-05-09  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* einfo.ads (Access Kinds): Reorder and beef up.
+ 	* sem.adb (Analyze): Call Analyze_Comparison_Equality_Op for all
+ 	comparison and equality operators.
+ 	* sem_ch4.ads (Analyze_Comparison_Op): Delete.
+ 	(Analyze_Equality_Op): Likewise.
+ 	(Analyze_Comparison_Equality_Op): Declare.
+ 	(Ambiguous_Operands): Likewise.
+ 	* sem_ch4.adb (Ambiguous_Operands): Remove declaration.
+ 	(Defined_In_Scope): Delete.
+ 	(Find_Comparison_Types): Merge into...
+ 	(Find_Equality_Types): Merge into...
+ 	(Find_Comparison_Equality_Types): ...this.  Make fully symmetrical.
+ 	(Analyze_Arithmetic_Op): Minor consistency tweaks.
+ 	(Analyze_Comparison_Op): Merge into...
+ 	(Analyze_Equality_Op): Merge into...
+ 	(Analyze_Comparison_Equality_Op): ...this.  Make fully symmetrical.
+ 	(Analyze_Logical_Op): Minor consistency tweaks.
+ 	(Analyze_Membership_Op): Make fully symmetrical.
+ 	(Analyze_One_Call): Minor comment tweak.
+ 	(Analyze_Operator_Call): Call Find_Comparison_Equality_Types.
+ 	(Analyze_User_Defined_Binary_Op): Make fully symmetrical.
+ 	(Check_Arithmetic_Pair.Specific_Type): Delete.
+ 	(Diagnose_Call): Add special handling for "+" operator.
+ 	(Operator_Check): Call Analyze_Comparison_Equality_Op.
+ 	* sem_ch8.adb (Has_Implicit_Operator): Add Is_Type guard for boolean
+ 	operators, use Valid_Comparison_Arg and Valid_Equality_Arg for resp.
+ 	comparison and equality operators.
+ 	* sem_res.adb (Check_For_Visible_Operator): Call Is_Visible_Operator
+ 	(Make_Call_Into_Operator): Use Preserve_Comes_From_Source.
+ 	(Resolve_Actuals): Deal specifically with Any_Type actuals for user-
+ 	defined comparison and equality operators.
+ 	(Resolve_Call): Minor tweaks.
+ 	(Resolve_Comparison_Op): Tidy up and give error for ambiguity.
+ 	(Resolve_Equality_Op): Likewise, as well as other errors.
+ 	(Rewrite_Renamed_Operator): Simplify.
+ 	* sem_type.ads (Is_Invisible_Operator): Delete.
+ 	(Is_Visible_Operator): Declare.
+ 	(Has_Compatible_Type): Remove For_Comparison parameter.
+ 	(Specific_Type): Declare.
+ 	(Valid_Equality_Arg): Likewise.
+ 	* sem_type.adb (Specific_Type): Remove declaration.
+ 	(Add_One_Interp): Call Is_Visible_Operator for the visibility test.
+ 	(Remove_Conversions): Rename into...
+ 	(Remove_Conversions_And_Abstract_Operations): ...this.  Do not apply
+ 	numeric-type treatment to Any_Type.  Expand the special handling for
+ 	abstract interpretations to second operand.  Remove obsolete code.
+ 	(Disambiguate): Adjust to above renaming.  Tweak to hidden case and
+ 	call Remove_Conversions_And_Abstract_Operations for operators too.
+ 	(Entity_Matches_Spec): Minor tweak.
+ 	(Find_Unique_Type): Simplify and deal with user-defined literals.
+ 	(Has_Compatible_Type): Remove For_Comparison parameter and adjust.
+ 	Call the Is_User_Defined_Literal predicate and remove call to
+ 	the Is_Invisible_Operator predicate.
+ 	(Is_Invisible_Operator): Delete.
+ 	(Is_Visible_Operator): New function.
+ 	(Operator_Matches_Spec): Use Valid_Equality_Arg predicate.
+ 	(Specific_Type): Tidy up, make fully symmetrical and deal with
+ 	private views the same way as Covers.
+ 	(Valid_Comparison_Arg): Return true for Any_Composite/Any_String.
+ 	(Valid_Equality_Arg): New function.
+ 	* sem_util.ads (Is_User_Defined_Literal): Declare.
+ 	* sem_util.adb (Is_User_Defined_Literal): New function.
+ 
+ 2022-05-09  Bob Duff  <duff@adacore.com>
+ 
+ 	* lib-xref.adb, sem_util.adb: Change wording of warning messages
+ 	to use "aspect".
+ 	* sem_prag.adb: Use Fix_Error to change wording of warnings.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst: Minor: fix
+ 	cut&paste error.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-05-09  Doug Rupp  <rupp@adacore.com>
+ 
+ 	* init.c [vxworks] (CLEAR_EXCEPTION_COUNT): New macro.
+ 	(__gnat_clear_exception_count): Remove.
+ 	(__gnat_map_signal): Call CLEAR_EXCEPTION_COUNT().
+ 
+ 2022-05-09  Fedor Rybin  <frybin@adacore.com>
+ 
+ 	* doc/gnat_ugn/gnat_utility_programs.rst: Remove gnattest
+ 	section.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Remove calls to Analyze for
+ 	attributes Identity, Priority, Ref, Restriction_Set, To_Address
+ 	and for tasking-related attributes Callable, Terminated and
+ 	Storage_Size.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_attr.adb (Analyze_Attribute): Don't call Set_Etype for
+ 	Bit_Order attribute.
+ 
+ 2022-05-09  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch5.adb (Update_Choice_Index): Simplify condition.
+ 	* sem_ch8.adb (Attribute_Renaming): Likewise.
+ 
+ 2022-05-09  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.c (__gnat_kill): Remove close parameter.
+ 	(__gnat_killprocesstree): Do not provide close parameter on call
+ 	to __gnat_kill.
+ 	* libgnat/g-expect.adb (Kill): Remove Close parameter.
+ 	(Close): Do not provide Close parameter on call to Kill.
+ 	(Send_Signal): Do not provide Close parameter on call to Kill.
+ 	* libgnat/s-os_lib.adb (Kill): Do not provide close parameter on
+ 	call to __gnat_kill.
+ 
+ 2022-05-09  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* libgnat/g-expect.adb (Close): Call Kill before Close_Input.
+ 
+ 2022-04-29  Martin Liska  <mliska@suse.cz>
+ 
+ 	* gnatvsn.ads: Bump Library_Version to 13.
+ 
+ 2022-04-27  Sebastian Huber  <sebastian.huber@embedded-brains.de>
+ 
+ 	* tracebak.c: Add support for ARM RTEMS. Add support for RTEMS to PPC
+ 	ELF.  Add support for RTEMS to SPARC.  Merge aarch64 support of Linux
+ 	and RTEMS.
+ 
+ 2022-04-27  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	PR ada/104027
+ 	* gnat1drv.adb: Remove the goto End_Of_Program.
+ 
+ 2022-03-24  Pascal Obry  <obry@adacore.com>
+ 
+ 	PR ada/104767
+ 	* libgnat/g-sercom__mingw.adb (Close): Reset port handle to -1.
+ 	* libgnat/g-sercom__linux.adb (Close): Likewise.
+ 
+ 2022-03-10  Richard Biener  <rguenther@suse.de>
+ 
+ 	PR ada/104861
+ 	* gcc-interface/Makefile.in (target_noncanonical): Substitute.
+ 	(OSCONS_CPP): Pass target_noncanonical as TARGET.
+ 
+ 2022-02-13  Maciej W. Rozycki  <macro@orcam.me.uk>
+ 
+ 	PR ada/98724
+ 	PR ada/97504
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS) <alpha*-*-linux*>: Use
+ 	wraplf version of Aux_Long_Long_Float.
+ 
+ 2022-01-31  Pierre-Marie de Rodat  <derodat@adacore.com>
+ 
+ 	* doc/share/conf.py: Remove spurious call to ".decode()".
+ 
+ 2022-01-31  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	PR ada/104027
+ 	* gnat1drv.adb (Gnat1drv): Only call Exit_Program when not
+ 	generating code, otherwise instead go to End_Of_Program.
+ 
+ 2022-01-28  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	PR ada/104258
+ 	* exp_ch4.adb (Narrow_Large_Operation): Also copy the entity, if
+ 	any, when rewriting the operator node.
+ 
+ 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR ada/103538
+ 	* gcc-interface/Makefile.in (target_cpu): Set to x32 for
+ 	x86_64-linux-gnux32.
+ 
+ 2022-01-19  H.J. Lu  <hjl.tools@gmail.com>
+ 
+ 	PR ada/103538
+ 	* Makefile.rtl (LIBGNAT_TARGET_PAIRS): Add
+ 	$(TRASYM_DWARF_UNIX_PAIRS),
+ 	s-tsmona.adb<libgnat/s-tsmona__linux.adb,
+ 	$(GNATRTL_128BIT_PAIRS).
+ 	(EXTRA_GNATRTL_NONTASKING_OBJS): Add $(TRASYM_DWARF_UNIX_OBJS)
+ 	and $(GNATRTL_128BIT_OBJS).
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* adaint.c: Revert filename changes in comments.
+ 	* ctrl_c.c (dummy_handler): Likewise.
+ 	* gsocket.h: Likewise.
+ 	* init.c (__gnat_error_handler): Likewise.
+ 	* libgnarl/s-intman.ads: Likewise.
+ 	* libgnarl/s-osinte__android.ads: Likewise.
+ 	* libgnarl/s-osinte__darwin.ads: Likewise.
+ 	* libgnarl/s-osinte__hpux.ads: Likewise.
+ 	* libgnarl/s-osinte__linux.ads: Likewise.
+ 	* libgnarl/s-osinte__qnx.ads: Likewise.
+ 	* libgnarl/s-taskin.ads: Likewise.
+ 	* rtfinal.c: Likewise.
+ 
+ 2022-01-18  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Make-generated.in: Revert renaming changes.
+ 	* Makefile.rtl: Likewise.
+ 	* adadecode.cc: Moved to...
+ 	* adadecode.c: ...here.
+ 	* affinity.cc: Moved to...
+ 	* affinity.c: ...here.
+ 	* argv-lynxos178-raven-cert.cc: Moved to...
+ 	* argv-lynxos178-raven-cert.c: ...here.
+ 	* argv.cc: Moved to...
+ 	* argv.c: ...here.
+ 	* aux-io.cc: Moved to...
+ 	* aux-io.c: ...here.
+ 	* cio.cc: Moved to...
+ 	* cio.c: ...here.
+ 	* cstreams.cc: Moved to...
+ 	* cstreams.c: ...here.
+ 	* env.cc: Moved to...
+ 	* env.c: ...here.
+ 	* exit.cc: Moved to...
+ 	* exit.c: ...here.
+ 	* expect.cc: Moved to...
+ 	* expect.c: ...here.
+ 	* final.cc: Moved to...
+ 	* final.c: ...here.
+ 	* gcc-interface/Makefile.in:
+ 	* init.cc: Moved to...
+ 	* init.c: ...here.
+ 	* initialize.cc: Moved to...
+ 	* initialize.c: ...here.
+ 	* libgnarl/thread.cc: Moved to...
+ 	* libgnarl/thread.c: ...here.
+ 	* link.cc: Moved to...
+ 	* link.c: ...here.
+ 	* locales.cc: Moved to...
+ 	* locales.c: ...here.
+ 	* mkdir.cc: Moved to...
+ 	* mkdir.c: ...here.
+ 	* raise.cc: Moved to...
+ 	* raise.c: ...here.
+ 	* rtfinal.cc: Moved to...
+ 	* rtfinal.c: ...here.
+ 	* rtinit.cc: Moved to...
+ 	* rtinit.c: ...here.
+ 	* s-oscons-tmplt.c (CND): Revert renaming changes.
+ 	* seh_init.cc: Moved to...
+ 	* seh_init.c: ...here.
+ 	* sigtramp-armdroid.cc: Moved to...
+ 	* sigtramp-armdroid.c: ...here.
+ 	* sigtramp-ios.cc: Moved to...
+ 	* sigtramp-ios.c: ...here.
+ 	* sigtramp-qnx.cc: Moved to...
+ 	* sigtramp-qnx.c: ...here.
+ 	* sigtramp-vxworks.cc: Moved to...
+ 	* sigtramp-vxworks.c: ...here.
+ 	* socket.cc: Moved to...
+ 	* socket.c: ...here.
+ 	* tracebak.cc: Moved to...
+ 	* tracebak.c: ...here.
+ 	* version.cc: Moved to...
+ 	* version.c: ...here.
+ 	* vx_stack_info.cc: Moved to...
+ 	* vx_stack_info.c: ...here.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Makefile.rtl: Rename .c names to .cc.
+ 	* gcc-interface/Make-lang.in: Likewise.
+ 	* gcc-interface/Makefile.in: Likewise.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* Make-generated.in: Rename .c names to .cc.
+ 	* adaint.c: Likewise.
+ 	* ctrl_c.c (dummy_handler): Likewise.
+ 	* gcc-interface/Makefile.in: Likewise.
+ 	* gcc-interface/config-lang.in: Likewise.
+ 	* gcc-interface/decl.cc (concat_name): Likewise.
+ 	(init_gnat_decl): Likewise.
+ 	* gcc-interface/gigi.h (concat_name): Likewise.
+ 	(init_gnat_utils): Likewise.
+ 	(build_call_raise_range): Likewise.
+ 	(gnat_mark_addressable): Likewise.
+ 	(gnat_protect_expr): Likewise.
+ 	(gnat_rewrite_reference): Likewise.
+ 	* gcc-interface/lang-specs.h (ADA_DUMPS_OPTIONS): Likewise.
+ 	* gcc-interface/utils.cc (GTY): Likewise.
+ 	(add_deferred_type_context): Likewise.
+ 	(init_gnat_utils): Likewise.
+ 	* gcc-interface/utils2.cc (gnat_stable_expr_p): Likewise.
+ 	(gnat_protect_expr): Likewise.
+ 	(gnat_stabilize_reference_1): Likewise.
+ 	(gnat_rewrite_reference): Likewise.
+ 	* gsocket.h: Likewise.
+ 	* init.cc (__gnat_error_handler): Likewise.
+ 	* libgnarl/s-intman.ads: Likewise.
+ 	* libgnarl/s-osinte__android.ads: Likewise.
+ 	* libgnarl/s-osinte__darwin.ads: Likewise.
+ 	* libgnarl/s-osinte__hpux.ads: Likewise.
+ 	* libgnarl/s-osinte__linux.ads: Likewise.
+ 	* libgnarl/s-osinte__qnx.ads: Likewise.
+ 	* libgnarl/s-taskin.ads: Likewise.
+ 	* rtfinal.cc: Likewise.
+ 	* s-oscons-tmplt.c (CND): Likewise.
+ 	* set_targ.ads: Likewise.
+ 
+ 2022-01-17  Martin Liska  <mliska@suse.cz>
+ 
+ 	* adadecode.c: Moved to...
+ 	* adadecode.cc: ...here.
+ 	* affinity.c: Moved to...
+ 	* affinity.cc: ...here.
+ 	* argv-lynxos178-raven-cert.c: Moved to...
+ 	* argv-lynxos178-raven-cert.cc: ...here.
+ 	* argv.c: Moved to...
+ 	* argv.cc: ...here.
+ 	* aux-io.c: Moved to...
+ 	* aux-io.cc: ...here.
+ 	* cio.c: Moved to...
+ 	* cio.cc: ...here.
+ 	* cstreams.c: Moved to...
+ 	* cstreams.cc: ...here.
+ 	* env.c: Moved to...
+ 	* env.cc: ...here.
+ 	* exit.c: Moved to...
+ 	* exit.cc: ...here.
+ 	* expect.c: Moved to...
+ 	* expect.cc: ...here.
+ 	* final.c: Moved to...
+ 	* final.cc: ...here.
+ 	* gcc-interface/cuintp.c: Moved to...
+ 	* gcc-interface/cuintp.cc: ...here.
+ 	* gcc-interface/decl.c: Moved to...
+ 	* gcc-interface/decl.cc: ...here.
+ 	* gcc-interface/misc.c: Moved to...
+ 	* gcc-interface/misc.cc: ...here.
+ 	* gcc-interface/targtyps.c: Moved to...
+ 	* gcc-interface/targtyps.cc: ...here.
+ 	* gcc-interface/trans.c: Moved to...
+ 	* gcc-interface/trans.cc: ...here.
+ 	* gcc-interface/utils.c: Moved to...
+ 	* gcc-interface/utils.cc: ...here.
+ 	* gcc-interface/utils2.c: Moved to...
+ 	* gcc-interface/utils2.cc: ...here.
+ 	* init.c: Moved to...
+ 	* init.cc: ...here.
+ 	* initialize.c: Moved to...
+ 	* initialize.cc: ...here.
+ 	* libgnarl/thread.c: Moved to...
+ 	* libgnarl/thread.cc: ...here.
+ 	* link.c: Moved to...
+ 	* link.cc: ...here.
+ 	* locales.c: Moved to...
+ 	* locales.cc: ...here.
+ 	* mkdir.c: Moved to...
+ 	* mkdir.cc: ...here.
+ 	* raise.c: Moved to...
+ 	* raise.cc: ...here.
+ 	* rtfinal.c: Moved to...
+ 	* rtfinal.cc: ...here.
+ 	* rtinit.c: Moved to...
+ 	* rtinit.cc: ...here.
+ 	* seh_init.c: Moved to...
+ 	* seh_init.cc: ...here.
+ 	* sigtramp-armdroid.c: Moved to...
+ 	* sigtramp-armdroid.cc: ...here.
+ 	* sigtramp-ios.c: Moved to...
+ 	* sigtramp-ios.cc: ...here.
+ 	* sigtramp-qnx.c: Moved to...
+ 	* sigtramp-qnx.cc: ...here.
+ 	* sigtramp-vxworks.c: Moved to...
+ 	* sigtramp-vxworks.cc: ...here.
+ 	* socket.c: Moved to...
+ 	* socket.cc: ...here.
+ 	* tracebak.c: Moved to...
+ 	* tracebak.cc: ...here.
+ 	* version.c: Moved to...
+ 	* version.cc: ...here.
+ 	* vx_stack_info.c: Moved to...
+ 	* vx_stack_info.cc: ...here.
+ 
+ 2022-01-14  Andrew Pinski  <apinski@marvell.com>
+ 
+ 	PR ada/104027
+ 	* gnat1drv.adb (Gnat1drv): After Back_End.Gen_Or_Update_Object_File
+ 	goto End_Of_Program.
+ 
+ 2022-01-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/utils2.c (build_binary_op) <EQ_EXPR>: Relax a
+ 	little the assertion on designated types of pointer types.
+ 
+ 2022-01-11  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_ch8.adb (Nvis_Messages): Add generic instance name to
+ 	error message.
+ 
+ 2022-01-11  Etienne Servais  <servais@adacore.com>
+ 
+ 	* par-ch6.adb (Scan_Body_Or_Expression_Function): Accept left
+ 	bracket as token to open an expression function.
+ 
+ 2022-01-11  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Add call to Has_Task instead
+ 	of checking component type.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_util.ads (Insert_Declaration): Remove spec.
+ 	* exp_util.adb (Insert_Declaration): Remove body.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Expression_With_Actions): Avoid
+ 	redundant check.
+ 	* exp_ch5.adb (Expand_N_If_Statement): Likewise.
+ 	* exp_ch7.adb (Process_Declarations): Likewise.
+ 	* sem_elab.adb (Freeze_Node_Location): Likewise.
+ 	* exp_util.adb (Insert_Actions): Likewise.
+ 	(Is_OK_PF_Pragma): Likewise.
+ 	(Requires_Cleanup_Actions): Remove early exit; ordinary
+ 	processing path will similarly do nothing.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* snames.ads-tmpl: Restore Name_Rpc.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Allocator): Move DECLARE block inside IF
+ 	statement; refill code and comments.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch4.adb (Analyze_Allocator): Fix comment.
+ 	* sem_eval.ads (Compile-Time Known Values): Likewise.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* snames.ads-tmpl: Remove unreferenced names.
+ 
+ 2022-01-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Double_Divide): Adjust proof of lemma
+ 	Prove_Signs, call lemma for commutation of Big and
+ 	multiplication.
+ 	(Multiply_With_Ovflo_Check): Adjust postcondition of
+ 	Prove_Pos_Int.
+ 	(Scaled_Divide): Explicit commutation in the proof of lemma
+ 	Prove_Multiplication, add new lemma Prove_Shift_Progress for
+ 	congruence property that is not proved in a larger context, add
+ 	assertions at the end of the loop to state loop invariant
+ 	properties.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.ads (Compile_Time_Known_Value_Or_Aggr): Remove spec.
+ 	* sem_eval.adb (Compile_Time_Known_Value_Or_Aggr): Remove body.
+ 
+ 2022-01-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-strfix.adb (Insert, Overwrite): Add assertions.
+ 
+ 2022-01-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	PR ada/79724
+ 	* osint.adb (Program_Name): Fix handling of suffixes.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Size_In_Storage_Elements): Remove unnecessary
+ 	DECLARE block; refill code and comments.
+ 
+ 2022-01-11  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Subtype_Declaration): In the case of an array
+ 	copy Packed_Array_Impl_Type manually here.
+ 	(Copy_Array_Subtype_Attributes): Do not copy it here.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch7.adb (Set_Block_Elab_Proc, Unnest_Block, Unnest_Loop,
+ 	Unnest_Statement_List): Simplify with Make_Temporary.
+ 	* exp_put_image.adb (Build_Image_Call): Likewise.
+ 	* inline.adb (Generate_Subprogram_Body): Likewise.
+ 	* sem_ch13.adb (Build_Predicate_Functions): Likewise.
+ 	* sem_util.adb (New_Copy_Separate_List): Likewise.
+ 
+ 2022-01-11  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch3.adb (Check_Dynamic_Object): Swap check order.
+ 
+ 2022-01-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-casuti.adb: Add ghost code.
+ 	* libgnat/s-casuti.ads: Add contracts.
+ 
+ 2022-01-11  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/a-tiinau.ads: Use a procedure for the Scan parameter
+ 	instead of a function with side-effects.
+ 	* libgnat/a-tiinau.adb: Idem.
+ 	* libgnat/a-wtinau.ads: Idem.
+ 	* libgnat/a-wtinau.adb: Idem.
+ 	* libgnat/a-ztinau.ads: Idem.
+ 	* libgnat/a-ztinau.adb: Idem.
+ 	* libgnat/s-valint.ads: Change the function with side-effects
+ 	Scan_Integer into a procedure
+ 	* libgnat/s-vallli.ads: Idem.
+ 	* libgnat/s-valllli.ads: Idem.
+ 	* libgnat/s-vallllu.ads: Add SPARK_Mode and pragma to ignore
+ 	assertions in instance.
+ 	* libgnat/s-valllu.ads: Idem.
+ 	* libgnat/s-valuns.ads: Idem.
+ 	* libgnat/s-valuei.ads: Use a procedure for the
+ 	Scan_Raw_Unsigned parameter instead of a function with
+ 	side-effects and change the function with side-effects
+ 	Scan_Integer into a procedure.
+ 	* libgnat/s-valuei.adb: Idem.
+ 	* libgnat/s-valuti.ads: Introduce a ghost function that scans an
+ 	exponent and complete the postcondition of Scan_Exponent to also
+ 	describe the value of Ptr after the call. Fix the postcondition
+ 	of Scan_Underscore. Simplify the definition of
+ 	Scan_Natural_Ghost.
+ 	* libgnat/s-valuti.adb: Idem.
+ 	* libgnat/s-valboo.ads, libgnat/s-valboo.adb: Update calls to
+ 	First_Non_Space_Ghost.
+ 	* libgnat/s-valueu.ads: Add functional contracts.
+ 	* libgnat/s-valueu.adb: Idem.
+ 
+ 2022-01-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-expmod.adb (Exp_Modular): Add assertions.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Error_Msg_CRT): Build message with string
+ 	concatenation; it is slightly repetitive but much easier to
+ 	read.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch11.adb (Expand_N_Exception_Declaration): Remove explicit
+ 	initialization of the exceptF object.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch3.adb (P_Array_Type_Definition): Use
+ 	Error_Msg_GNAT_Extension.
+ 
+ 2022-01-11  Gary Dismukes  <dismukes@adacore.com>
+ 
+ 	* sem_disp.adb (Check_Controlling_Type): Add test for the case
+ 	where Subp is a subprogram associated with a protected
+ 	subprogram and return Empty, unless Tagged_Type is the
+ 	corresponding record type of the protected type.
+ 
+ 2022-01-11  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-veboop.adb: Add ghost code for proof.
+ 	* libgnat/s-veboop.ads: Add specification.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb, exp_attr.adb, exp_ch3.adb, exp_ch7.adb,
+ 	exp_dist.adb, exp_util.adb, freeze.adb, frontend.adb,
+ 	inline.adb, itypes.adb, lib-load.adb, lib-xref.adb,
+ 	libgnat/a-cfhase.adb, libgnat/a-cforse.adb,
+ 	libgnat/a-chtgbo.adb, libgnat/a-crdlli.adb,
+ 	libgnat/a-except.adb, libgnat/a-strfix.adb,
+ 	libgnat/a-textio.adb, libgnat/a-tienau.adb,
+ 	libgnat/a-tigeau.adb, libgnat/a-witeio.adb,
+ 	libgnat/a-wtenau.adb, libgnat/a-wtgeau.adb,
+ 	libgnat/a-ztenau.adb, libgnat/a-ztexio.adb,
+ 	libgnat/a-ztgeau.adb, libgnat/g-comlin.adb,
+ 	libgnat/g-debpoo.adb, libgnat/g-expect.adb,
+ 	libgnat/s-fileio.adb, libgnat/s-memory.adb, libgnat/s-mmap.adb,
+ 	libgnat/s-objrea.adb, libgnat/s-pehage.adb,
+ 	libgnat/s-regpat.adb, libgnat/s-shasto.adb,
+ 	libgnat/s-valued.adb, libgnat/s-valuef.adb, par-ch11.adb,
+ 	par-ch4.adb, par-ch6.adb, par-ch9.adb, par_sco.adb,
+ 	repinfo-input.adb, sem_cat.adb, sem_ch10.adb, sem_ch12.adb,
+ 	sem_ch13.adb, sem_ch4.adb, sem_eval.adb, sem_prag.adb,
+ 	sem_res.adb, sem_util.adb, sinput.adb, switch-c.adb: Fix style.
+ 
+ 2022-01-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* exp_ch9.adb, gen_il-types.ads, make.adb, par-ch12.adb,
+ 	sem_ch13.adb: Use membership tests.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* erroutc.ads, erroutc.adb (Is_Runtime_Raise): Global flag to
+ 	connect status of initial messages and their continuation; we
+ 	already have several flags like this.
+ 	(Error_Msg_Object): Add field Warn_Runtime_Raise to connect
+ 	error reporting (when problematic code is found) and removal
+ 	(when problematic code is determined to be dead).
+ 	* errout.adb (Error_Msg_Internal): Handle new field when
+ 	recording a continuation message; propagate status from
+ 	continuation to the preceding messages.
+ 	(To_Be_Removed): For dead code remove both simple warnings and
+ 	warnings about constraint errors that have been escalated to
+ 	hard errors.
+ 	(Set_Msg_Text): Recognize warnings about constraint errors that
+ 	are escalated to hard errors.
+ 	* errutil.adb (Error_Msg): Handle added field when recording a
+ 	new message.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Error_Msg_Internal): Propagate warnings-as-error
+ 	flag from continuation message to its preceding messages.
+ 
+ 2022-01-11  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gnatvsn.ads (Current_Year): Update copyright notice, bump to
+ 	2022.
+ 	* ada_get_targ.adb: Update copyright notice.
+ 	* adabkend.adb: Likewise.
+ 	* adabkend.ads: Likewise.
+ 	* adadecode.c: Likewise.
+ 	* adadecode.h: Likewise.
+ 	* adaint.c: Likewise.
+ 	* adaint.h: Likewise.
+ 	* affinity.c: Likewise.
+ 	* ali-util.adb: Likewise.
+ 	* ali-util.ads: Likewise.
+ 	* ali.adb: Likewise.
+ 	* ali.ads: Likewise.
+ 	* alloc.ads: Likewise.
+ 	* argv-lynxos178-raven-cert.c: Likewise.
+ 	* argv.c: Likewise.
+ 	* aspects.adb: Likewise.
+ 	* aspects.ads: Likewise.
+ 	* atree.adb: Likewise.
+ 	* atree.ads: Likewise.
+ 	* atree.h: Likewise.
+ 	* aux-io.c: Likewise.
+ 	* back_end.adb: Likewise.
+ 	* back_end.ads: Likewise.
+ 	* backend_utils.adb: Likewise.
+ 	* backend_utils.ads: Likewise.
+ 	* bcheck.adb: Likewise.
+ 	* bcheck.ads: Likewise.
+ 	* binde.adb: Likewise.
+ 	* binde.ads: Likewise.
+ 	* binderr.adb: Likewise.
+ 	* binderr.ads: Likewise.
+ 	* bindgen.adb: Likewise.
+ 	* bindgen.ads: Likewise.
+ 	* bindo-augmentors.adb: Likewise.
+ 	* bindo-augmentors.ads: Likewise.
+ 	* bindo-builders.adb: Likewise.
+ 	* bindo-builders.ads: Likewise.
+ 	* bindo-diagnostics.adb: Likewise.
+ 	* bindo-diagnostics.ads: Likewise.
+ 	* bindo-elaborators.adb: Likewise.
+ 	* bindo-elaborators.ads: Likewise.
+ 	* bindo-graphs.adb: Likewise.
+ 	* bindo-graphs.ads: Likewise.
+ 	* bindo-units.adb: Likewise.
+ 	* bindo-units.ads: Likewise.
+ 	* bindo-validators.adb: Likewise.
+ 	* bindo-validators.ads: Likewise.
+ 	* bindo-writers.adb: Likewise.
+ 	* bindo-writers.ads: Likewise.
+ 	* bindo.adb: Likewise.
+ 	* bindo.ads: Likewise.
+ 	* bindusg.adb: Likewise.
+ 	* bindusg.ads: Likewise.
+ 	* butil.adb: Likewise.
+ 	* butil.ads: Likewise.
+ 	* cal.c: Likewise.
+ 	* casing.adb: Likewise.
+ 	* casing.ads: Likewise.
+ 	* checks.adb: Likewise.
+ 	* checks.ads: Likewise.
+ 	* cio.c: Likewise.
+ 	* clean.adb: Likewise.
+ 	* clean.ads: Likewise.
+ 	* comperr.adb: Likewise.
+ 	* comperr.ads: Likewise.
+ 	* contracts.adb: Likewise.
+ 	* contracts.ads: Likewise.
+ 	* csets.adb: Likewise.
+ 	* csets.ads: Likewise.
+ 	* cstand.adb: Likewise.
+ 	* cstand.ads: Likewise.
+ 	* cstreams.c: Likewise.
+ 	* ctrl_c.c: Likewise.
+ 	* debug.ads: Likewise.
+ 	* debug_a.adb: Likewise.
+ 	* debug_a.ads: Likewise.
+ 	* einfo-utils.adb: Likewise.
+ 	* einfo-utils.ads: Likewise.
+ 	* einfo.adb: Likewise.
+ 	* einfo.ads: Likewise.
+ 	* elists.adb: Likewise.
+ 	* elists.ads: Likewise.
+ 	* elists.h: Likewise.
+ 	* env.c: Likewise.
+ 	* env.h: Likewise.
+ 	* err_vars.ads: Likewise.
+ 	* errno.c: Likewise.
+ 	* errout.adb: Likewise.
+ 	* errout.ads: Likewise.
+ 	* erroutc.adb: Likewise.
+ 	* erroutc.ads: Likewise.
+ 	* errutil.adb: Likewise.
+ 	* errutil.ads: Likewise.
+ 	* eval_fat.adb: Likewise.
+ 	* eval_fat.ads: Likewise.
+ 	* exit.c: Likewise.
+ 	* exp_aggr.adb: Likewise.
+ 	* exp_aggr.ads: Likewise.
+ 	* exp_atag.adb: Likewise.
+ 	* exp_atag.ads: Likewise.
+ 	* exp_attr.adb: Likewise.
+ 	* exp_attr.ads: Likewise.
+ 	* exp_cg.adb: Likewise.
+ 	* exp_cg.ads: Likewise.
+ 	* exp_ch10.ads: Likewise.
+ 	* exp_ch11.adb: Likewise.
+ 	* exp_ch11.ads: Likewise.
+ 	* exp_ch12.adb: Likewise.
+ 	* exp_ch12.ads: Likewise.
+ 	* exp_ch13.adb: Likewise.
+ 	* exp_ch13.ads: Likewise.
+ 	* exp_ch2.adb: Likewise.
+ 	* exp_ch2.ads: Likewise.
+ 	* exp_ch3.adb: Likewise.
+ 	* exp_ch3.ads: Likewise.
+ 	* exp_ch4.adb: Likewise.
+ 	* exp_ch4.ads: Likewise.
+ 	* exp_ch5.adb: Likewise.
+ 	* exp_ch5.ads: Likewise.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_ch6.ads: Likewise.
+ 	* exp_ch7.adb: Likewise.
+ 	* exp_ch7.ads: Likewise.
+ 	* exp_ch8.adb: Likewise.
+ 	* exp_ch8.ads: Likewise.
+ 	* exp_ch9.adb: Likewise.
+ 	* exp_ch9.ads: Likewise.
+ 	* exp_code.adb: Likewise.
+ 	* exp_code.ads: Likewise.
+ 	* exp_dbug.adb: Likewise.
+ 	* exp_dbug.ads: Likewise.
+ 	* exp_disp.adb: Likewise.
+ 	* exp_disp.ads: Likewise.
+ 	* exp_dist.adb: Likewise.
+ 	* exp_dist.ads: Likewise.
+ 	* exp_fixd.adb: Likewise.
+ 	* exp_fixd.ads: Likewise.
+ 	* exp_imgv.adb: Likewise.
+ 	* exp_imgv.ads: Likewise.
+ 	* exp_intr.adb: Likewise.
+ 	* exp_intr.ads: Likewise.
+ 	* exp_pakd.adb: Likewise.
+ 	* exp_pakd.ads: Likewise.
+ 	* exp_prag.adb: Likewise.
+ 	* exp_prag.ads: Likewise.
+ 	* exp_put_image.adb: Likewise.
+ 	* exp_put_image.ads: Likewise.
+ 	* exp_sel.adb: Likewise.
+ 	* exp_sel.ads: Likewise.
+ 	* exp_smem.adb: Likewise.
+ 	* exp_smem.ads: Likewise.
+ 	* exp_spark.adb: Likewise.
+ 	* exp_spark.ads: Likewise.
+ 	* exp_strm.adb: Likewise.
+ 	* exp_strm.ads: Likewise.
+ 	* exp_tss.adb: Likewise.
+ 	* exp_tss.ads: Likewise.
+ 	* exp_unst.adb: Likewise.
+ 	* exp_unst.ads: Likewise.
+ 	* exp_util.adb: Likewise.
+ 	* exp_util.ads: Likewise.
+ 	* expander.adb: Likewise.
+ 	* expander.ads: Likewise.
+ 	* expect.c: Likewise.
+ 	* fe.h: Likewise.
+ 	* final.c: Likewise.
+ 	* fmap.adb: Likewise.
+ 	* fmap.ads: Likewise.
+ 	* fname-sf.adb: Likewise.
+ 	* fname-sf.ads: Likewise.
+ 	* fname-uf.adb: Likewise.
+ 	* fname-uf.ads: Likewise.
+ 	* fname.adb: Likewise.
+ 	* fname.ads: Likewise.
+ 	* freeze.adb: Likewise.
+ 	* freeze.ads: Likewise.
+ 	* frontend.adb: Likewise.
+ 	* frontend.ads: Likewise.
+ 	* gen_il-fields.ads: Likewise.
+ 	* gen_il-gen-gen_entities.adb: Likewise.
+ 	* gen_il-gen-gen_nodes.adb: Likewise.
+ 	* gen_il-gen.adb: Likewise.
+ 	* gen_il-gen.ads: Likewise.
+ 	* gen_il-internals.adb: Likewise.
+ 	* gen_il-internals.ads: Likewise.
+ 	* gen_il-main.adb: Likewise.
+ 	* gen_il-types.ads: Likewise.
+ 	* gen_il.adb: Likewise.
+ 	* gen_il.ads: Likewise.
+ 	* get_scos.adb: Likewise.
+ 	* get_scos.ads: Likewise.
+ 	* get_targ.adb: Likewise.
+ 	* get_targ.ads: Likewise.
+ 	* ghost.adb: Likewise.
+ 	* ghost.ads: Likewise.
+ 	* gnat1drv.adb: Likewise.
+ 	* gnat1drv.ads: Likewise.
+ 	* gnat_cuda.adb: Likewise.
+ 	* gnat_cuda.ads: Likewise.
+ 	* gnatbind.adb: Likewise.
+ 	* gnatbind.ads: Likewise.
+ 	* gnatchop.adb: Likewise.
+ 	* gnatclean.adb: Likewise.
+ 	* gnatcmd.adb: Likewise.
+ 	* gnatcmd.ads: Likewise.
+ 	* gnatdll.adb: Likewise.
+ 	* gnatfind.adb: Likewise.
+ 	* gnatkr.adb: Likewise.
+ 	* gnatkr.ads: Likewise.
+ 	* gnatlink.adb: Likewise.
+ 	* gnatlink.ads: Likewise.
+ 	* gnatls.adb: Likewise.
+ 	* gnatls.ads: Likewise.
+ 	* gnatmake.adb: Likewise.
+ 	* gnatmake.ads: Likewise.
+ 	* gnatname.adb: Likewise.
+ 	* gnatname.ads: Likewise.
+ 	* gnatprep.adb: Likewise.
+ 	* gnatprep.ads: Likewise.
+ 	* gnatvsn.adb: Likewise.
+ 	* gnatxref.adb: Likewise.
+ 	* gprep.adb: Likewise.
+ 	* gprep.ads: Likewise.
+ 	* gsocket.h: Likewise.
+ 	* hostparm.ads: Likewise.
+ 	* impunit.adb: Likewise.
+ 	* impunit.ads: Likewise.
+ 	* indepsw-aix.adb: Likewise.
+ 	* indepsw-darwin.adb: Likewise.
+ 	* indepsw-gnu.adb: Likewise.
+ 	* indepsw.adb: Likewise.
+ 	* indepsw.ads: Likewise.
+ 	* init.c: Likewise.
+ 	* initialize.c: Likewise.
+ 	* inline.adb: Likewise.
+ 	* inline.ads: Likewise.
+ 	* itypes.adb: Likewise.
+ 	* itypes.ads: Likewise.
+ 	* krunch.adb: Likewise.
+ 	* krunch.ads: Likewise.
+ 	* layout.adb: Likewise.
+ 	* layout.ads: Likewise.
+ 	* lib-list.adb: Likewise.
+ 	* lib-load.adb: Likewise.
+ 	* lib-load.ads: Likewise.
+ 	* lib-sort.adb: Likewise.
+ 	* lib-util.adb: Likewise.
+ 	* lib-util.ads: Likewise.
+ 	* lib-writ.adb: Likewise.
+ 	* lib-writ.ads: Likewise.
+ 	* lib-xref-spark_specific.adb: Likewise.
+ 	* lib-xref.adb: Likewise.
+ 	* lib-xref.ads: Likewise.
+ 	* lib.adb: Likewise.
+ 	* lib.ads: Likewise.
+ 	* libgnarl/a-astaco.adb: Likewise.
+ 	* libgnarl/a-dispat.adb: Likewise.
+ 	* libgnarl/a-dynpri.adb: Likewise.
+ 	* libgnarl/a-etgrbu.ads: Likewise.
+ 	* libgnarl/a-exetim__darwin.adb: Likewise.
+ 	* libgnarl/a-exetim__default.ads: Likewise.
+ 	* libgnarl/a-exetim__mingw.adb: Likewise.
+ 	* libgnarl/a-exetim__mingw.ads: Likewise.
+ 	* libgnarl/a-exetim__posix.adb: Likewise.
+ 	* libgnarl/a-interr.adb: Likewise.
+ 	* libgnarl/a-interr.ads: Likewise.
+ 	* libgnarl/a-intnam.ads: Likewise.
+ 	* libgnarl/a-intnam__aix.ads: Likewise.
+ 	* libgnarl/a-intnam__darwin.ads: Likewise.
+ 	* libgnarl/a-intnam__dragonfly.ads: Likewise.
+ 	* libgnarl/a-intnam__dummy.ads: Likewise.
+ 	* libgnarl/a-intnam__freebsd.ads: Likewise.
+ 	* libgnarl/a-intnam__hpux.ads: Likewise.
+ 	* libgnarl/a-intnam__linux.ads: Likewise.
+ 	* libgnarl/a-intnam__lynxos.ads: Likewise.
+ 	* libgnarl/a-intnam__mingw.ads: Likewise.
+ 	* libgnarl/a-intnam__qnx.ads: Likewise.
+ 	* libgnarl/a-intnam__rtems.ads: Likewise.
+ 	* libgnarl/a-intnam__solaris.ads: Likewise.
+ 	* libgnarl/a-intnam__vxworks.ads: Likewise.
+ 	* libgnarl/a-reatim.adb: Likewise.
+ 	* libgnarl/a-reatim.ads: Likewise.
+ 	* libgnarl/a-retide.adb: Likewise.
+ 	* libgnarl/a-retide.ads: Likewise.
+ 	* libgnarl/a-rttiev.adb: Likewise.
+ 	* libgnarl/a-rttiev.ads: Likewise.
+ 	* libgnarl/a-synbar.adb: Likewise.
+ 	* libgnarl/a-synbar.ads: Likewise.
+ 	* libgnarl/a-synbar__posix.adb: Likewise.
+ 	* libgnarl/a-synbar__posix.ads: Likewise.
+ 	* libgnarl/a-sytaco.adb: Likewise.
+ 	* libgnarl/a-sytaco.ads: Likewise.
+ 	* libgnarl/a-tasatt.adb: Likewise.
+ 	* libgnarl/a-tasatt.ads: Likewise.
+ 	* libgnarl/a-taside.adb: Likewise.
+ 	* libgnarl/a-taside.ads: Likewise.
+ 	* libgnarl/a-tasini.adb: Likewise.
+ 	* libgnarl/a-tasini.ads: Likewise.
+ 	* libgnarl/a-taster.adb: Likewise.
+ 	* libgnarl/g-boubuf.adb: Likewise.
+ 	* libgnarl/g-boubuf.ads: Likewise.
+ 	* libgnarl/g-boumai.ads: Likewise.
+ 	* libgnarl/g-semaph.adb: Likewise.
+ 	* libgnarl/g-semaph.ads: Likewise.
+ 	* libgnarl/g-signal.adb: Likewise.
+ 	* libgnarl/g-signal.ads: Likewise.
+ 	* libgnarl/g-tastus.ads: Likewise.
+ 	* libgnarl/g-thread.adb: Likewise.
+ 	* libgnarl/g-thread.ads: Likewise.
+ 	* libgnarl/i-vxinco.adb: Likewise.
+ 	* libgnarl/i-vxinco.ads: Likewise.
+ 	* libgnarl/s-inmaop.ads: Likewise.
+ 	* libgnarl/s-inmaop__dummy.adb: Likewise.
+ 	* libgnarl/s-inmaop__hwint.adb: Likewise.
+ 	* libgnarl/s-inmaop__posix.adb: Likewise.
+ 	* libgnarl/s-interr.adb: Likewise.
+ 	* libgnarl/s-interr.ads: Likewise.
+ 	* libgnarl/s-interr__dummy.adb: Likewise.
+ 	* libgnarl/s-interr__hwint.adb: Likewise.
+ 	* libgnarl/s-interr__sigaction.adb: Likewise.
+ 	* libgnarl/s-interr__vxworks.adb: Likewise.
+ 	* libgnarl/s-intman.ads: Likewise.
+ 	* libgnarl/s-intman__android.adb: Likewise.
+ 	* libgnarl/s-intman__dummy.adb: Likewise.
+ 	* libgnarl/s-intman__lynxos.adb: Likewise.
+ 	* libgnarl/s-intman__mingw.adb: Likewise.
+ 	* libgnarl/s-intman__posix.adb: Likewise.
+ 	* libgnarl/s-intman__qnx.adb: Likewise.
+ 	* libgnarl/s-intman__rtems.adb: Likewise.
+ 	* libgnarl/s-intman__rtems.ads: Likewise.
+ 	* libgnarl/s-intman__solaris.adb: Likewise.
+ 	* libgnarl/s-intman__susv3.adb: Likewise.
+ 	* libgnarl/s-intman__vxworks.adb: Likewise.
+ 	* libgnarl/s-intman__vxworks.ads: Likewise.
+ 	* libgnarl/s-linux.ads: Likewise.
+ 	* libgnarl/s-linux__alpha.ads: Likewise.
+ 	* libgnarl/s-linux__android.ads: Likewise.
+ 	* libgnarl/s-linux__hppa.ads: Likewise.
+ 	* libgnarl/s-linux__mips.ads: Likewise.
+ 	* libgnarl/s-linux__riscv.ads: Likewise.
+ 	* libgnarl/s-linux__sparc.ads: Likewise.
+ 	* libgnarl/s-linux__x32.ads: Likewise.
+ 	* libgnarl/s-mudido.adb: Likewise.
+ 	* libgnarl/s-mudido__affinity.adb: Likewise.
+ 	* libgnarl/s-osinte__aix.adb: Likewise.
+ 	* libgnarl/s-osinte__aix.ads: Likewise.
+ 	* libgnarl/s-osinte__android.adb: Likewise.
+ 	* libgnarl/s-osinte__android.ads: Likewise.
+ 	* libgnarl/s-osinte__darwin.adb: Likewise.
+ 	* libgnarl/s-osinte__darwin.ads: Likewise.
+ 	* libgnarl/s-osinte__dragonfly.adb: Likewise.
+ 	* libgnarl/s-osinte__dragonfly.ads: Likewise.
+ 	* libgnarl/s-osinte__dummy.ads: Likewise.
+ 	* libgnarl/s-osinte__freebsd.adb: Likewise.
+ 	* libgnarl/s-osinte__freebsd.ads: Likewise.
+ 	* libgnarl/s-osinte__gnu.adb: Likewise.
+ 	* libgnarl/s-osinte__gnu.ads: Likewise.
+ 	* libgnarl/s-osinte__hpux-dce.adb: Likewise.
+ 	* libgnarl/s-osinte__hpux-dce.ads: Likewise.
+ 	* libgnarl/s-osinte__hpux.ads: Likewise.
+ 	* libgnarl/s-osinte__kfreebsd-gnu.ads: Likewise.
+ 	* libgnarl/s-osinte__linux.ads: Likewise.
+ 	* libgnarl/s-osinte__lynxos178.adb: Likewise.
+ 	* libgnarl/s-osinte__lynxos178e.ads: Likewise.
+ 	* libgnarl/s-osinte__mingw.ads: Likewise.
+ 	* libgnarl/s-osinte__posix.adb: Likewise.
+ 	* libgnarl/s-osinte__qnx.adb: Likewise.
+ 	* libgnarl/s-osinte__qnx.ads: Likewise.
+ 	* libgnarl/s-osinte__rtems.adb: Likewise.
+ 	* libgnarl/s-osinte__rtems.ads: Likewise.
+ 	* libgnarl/s-osinte__solaris.adb: Likewise.
+ 	* libgnarl/s-osinte__solaris.ads: Likewise.
+ 	* libgnarl/s-osinte__vxworks.adb: Likewise.
+ 	* libgnarl/s-osinte__vxworks.ads: Likewise.
+ 	* libgnarl/s-osinte__x32.adb: Likewise.
+ 	* libgnarl/s-proinf.adb: Likewise.
+ 	* libgnarl/s-proinf.ads: Likewise.
+ 	* libgnarl/s-putaim.adb: Likewise.
+ 	* libgnarl/s-putaim.ads: Likewise.
+ 	* libgnarl/s-qnx.ads: Likewise.
+ 	* libgnarl/s-solita.adb: Likewise.
+ 	* libgnarl/s-solita.ads: Likewise.
+ 	* libgnarl/s-stusta.adb: Likewise.
+ 	* libgnarl/s-stusta.ads: Likewise.
+ 	* libgnarl/s-taasde.adb: Likewise.
+ 	* libgnarl/s-taasde.ads: Likewise.
+ 	* libgnarl/s-tadeca.adb: Likewise.
+ 	* libgnarl/s-tadeca.ads: Likewise.
+ 	* libgnarl/s-tadert.adb: Likewise.
+ 	* libgnarl/s-tadert.ads: Likewise.
+ 	* libgnarl/s-taenca.adb: Likewise.
+ 	* libgnarl/s-taenca.ads: Likewise.
+ 	* libgnarl/s-taprob.adb: Likewise.
+ 	* libgnarl/s-taprob.ads: Likewise.
+ 	* libgnarl/s-taprop.ads: Likewise.
+ 	* libgnarl/s-taprop__dummy.adb: Likewise.
+ 	* libgnarl/s-taprop__hpux-dce.adb: Likewise.
+ 	* libgnarl/s-taprop__linux.adb: Likewise.
+ 	* libgnarl/s-taprop__mingw.adb: Likewise.
+ 	* libgnarl/s-taprop__posix.adb: Likewise.
+ 	* libgnarl/s-taprop__qnx.adb: Likewise.
+ 	* libgnarl/s-taprop__rtems.adb: Likewise.
+ 	* libgnarl/s-taprop__solaris.adb: Likewise.
+ 	* libgnarl/s-taprop__vxworks.adb: Likewise.
+ 	* libgnarl/s-tarest.adb: Likewise.
+ 	* libgnarl/s-tarest.ads: Likewise.
+ 	* libgnarl/s-tasdeb.adb: Likewise.
+ 	* libgnarl/s-tasdeb.ads: Likewise.
+ 	* libgnarl/s-tasinf.adb: Likewise.
+ 	* libgnarl/s-tasinf.ads: Likewise.
+ 	* libgnarl/s-tasinf__linux.adb: Likewise.
+ 	* libgnarl/s-tasinf__linux.ads: Likewise.
+ 	* libgnarl/s-tasinf__mingw.adb: Likewise.
+ 	* libgnarl/s-tasinf__mingw.ads: Likewise.
+ 	* libgnarl/s-tasinf__solaris.adb: Likewise.
+ 	* libgnarl/s-tasinf__solaris.ads: Likewise.
+ 	* libgnarl/s-tasinf__vxworks.ads: Likewise.
+ 	* libgnarl/s-tasini.adb: Likewise.
+ 	* libgnarl/s-tasini.ads: Likewise.
+ 	* libgnarl/s-taskin.adb: Likewise.
+ 	* libgnarl/s-taskin.ads: Likewise.
+ 	* libgnarl/s-taspri__dummy.ads: Likewise.
+ 	* libgnarl/s-taspri__hpux-dce.ads: Likewise.
+ 	* libgnarl/s-taspri__lynxos.ads: Likewise.
+ 	* libgnarl/s-taspri__mingw.ads: Likewise.
+ 	* libgnarl/s-taspri__posix-noaltstack.ads: Likewise.
+ 	* libgnarl/s-taspri__posix.ads: Likewise.
+ 	* libgnarl/s-taspri__solaris.ads: Likewise.
+ 	* libgnarl/s-taspri__vxworks.ads: Likewise.
+ 	* libgnarl/s-tasque.adb: Likewise.
+ 	* libgnarl/s-tasque.ads: Likewise.
+ 	* libgnarl/s-tasren.adb: Likewise.
+ 	* libgnarl/s-tasren.ads: Likewise.
+ 	* libgnarl/s-tasres.ads: Likewise.
+ 	* libgnarl/s-tassta.adb: Likewise.
+ 	* libgnarl/s-tassta.ads: Likewise.
+ 	* libgnarl/s-tasuti.adb: Likewise.
+ 	* libgnarl/s-tasuti.ads: Likewise.
+ 	* libgnarl/s-tataat.adb: Likewise.
+ 	* libgnarl/s-tataat.ads: Likewise.
+ 	* libgnarl/s-tpinop.adb: Likewise.
+ 	* libgnarl/s-tpinop.ads: Likewise.
+ 	* libgnarl/s-tpoaal.adb: Likewise.
+ 	* libgnarl/s-tpoben.adb: Likewise.
+ 	* libgnarl/s-tpoben.ads: Likewise.
+ 	* libgnarl/s-tpobmu.adb: Likewise.
+ 	* libgnarl/s-tpobmu.ads: Likewise.
+ 	* libgnarl/s-tpobop.adb: Likewise.
+ 	* libgnarl/s-tpobop.ads: Likewise.
+ 	* libgnarl/s-tpopmo.adb: Likewise.
+ 	* libgnarl/s-tpopsp__posix-foreign.adb: Likewise.
+ 	* libgnarl/s-tpopsp__posix.adb: Likewise.
+ 	* libgnarl/s-tpopsp__solaris.adb: Likewise.
+ 	* libgnarl/s-tpopsp__tls.adb: Likewise.
+ 	* libgnarl/s-tpopsp__vxworks-rtp.adb: Likewise.
+ 	* libgnarl/s-tpopsp__vxworks-tls.adb: Likewise.
+ 	* libgnarl/s-tpopsp__vxworks.adb: Likewise.
+ 	* libgnarl/s-tporft.adb: Likewise.
+ 	* libgnarl/s-tposen.adb: Likewise.
+ 	* libgnarl/s-tposen.ads: Likewise.
+ 	* libgnarl/s-vxwext.adb: Likewise.
+ 	* libgnarl/s-vxwext.ads: Likewise.
+ 	* libgnarl/s-vxwext__kernel-smp.adb: Likewise.
+ 	* libgnarl/s-vxwext__kernel.adb: Likewise.
+ 	* libgnarl/s-vxwext__kernel.ads: Likewise.
+ 	* libgnarl/s-vxwext__rtp-smp.adb: Likewise.
+ 	* libgnarl/s-vxwext__rtp.adb: Likewise.
+ 	* libgnarl/s-vxwext__rtp.ads: Likewise.
+ 	* libgnarl/s-vxwork__aarch64.ads: Likewise.
+ 	* libgnarl/s-vxwork__arm.ads: Likewise.
+ 	* libgnarl/s-vxwork__ppc.ads: Likewise.
+ 	* libgnarl/s-vxwork__x86.ads: Likewise.
+ 	* libgnarl/thread.c: Likewise.
+ 	* libgnat/a-assert.adb: Likewise.
+ 	* libgnat/a-assert.ads: Likewise.
+ 	* libgnat/a-btgbso.adb: Likewise.
+ 	* libgnat/a-btgbso.ads: Likewise.
+ 	* libgnat/a-calari.adb: Likewise.
+ 	* libgnat/a-calari.ads: Likewise.
+ 	* libgnat/a-calcon.adb: Likewise.
+ 	* libgnat/a-calcon.ads: Likewise.
+ 	* libgnat/a-caldel.adb: Likewise.
+ 	* libgnat/a-caldel.ads: Likewise.
+ 	* libgnat/a-calend.adb: Likewise.
+ 	* libgnat/a-calend.ads: Likewise.
+ 	* libgnat/a-calfor.adb: Likewise.
+ 	* libgnat/a-calfor.ads: Likewise.
+ 	* libgnat/a-catizo.adb: Likewise.
+ 	* libgnat/a-cbdlli.adb: Likewise.
+ 	* libgnat/a-cbdlli.ads: Likewise.
+ 	* libgnat/a-cbhama.adb: Likewise.
+ 	* libgnat/a-cbhama.ads: Likewise.
+ 	* libgnat/a-cbhase.adb: Likewise.
+ 	* libgnat/a-cbhase.ads: Likewise.
+ 	* libgnat/a-cbmutr.adb: Likewise.
+ 	* libgnat/a-cbmutr.ads: Likewise.
+ 	* libgnat/a-cborma.adb: Likewise.
+ 	* libgnat/a-cborma.ads: Likewise.
+ 	* libgnat/a-cborse.adb: Likewise.
+ 	* libgnat/a-cborse.ads: Likewise.
+ 	* libgnat/a-cbprqu.adb: Likewise.
+ 	* libgnat/a-cbprqu.ads: Likewise.
+ 	* libgnat/a-cbsyqu.adb: Likewise.
+ 	* libgnat/a-cbsyqu.ads: Likewise.
+ 	* libgnat/a-cdlili.adb: Likewise.
+ 	* libgnat/a-cdlili.ads: Likewise.
+ 	* libgnat/a-cfdlli.adb: Likewise.
+ 	* libgnat/a-cfdlli.ads: Likewise.
+ 	* libgnat/a-cfhama.adb: Likewise.
+ 	* libgnat/a-cfhama.ads: Likewise.
+ 	* libgnat/a-cfhase.adb: Likewise.
+ 	* libgnat/a-cfhase.ads: Likewise.
+ 	* libgnat/a-cfinve.adb: Likewise.
+ 	* libgnat/a-cfinve.ads: Likewise.
+ 	* libgnat/a-cforma.adb: Likewise.
+ 	* libgnat/a-cforma.ads: Likewise.
+ 	* libgnat/a-cforse.adb: Likewise.
+ 	* libgnat/a-cforse.ads: Likewise.
+ 	* libgnat/a-cgaaso.adb: Likewise.
+ 	* libgnat/a-cgaaso.ads: Likewise.
+ 	* libgnat/a-cgarso.adb: Likewise.
+ 	* libgnat/a-cgcaso.adb: Likewise.
+ 	* libgnat/a-chacon.adb: Likewise.
+ 	* libgnat/a-chacon.ads: Likewise.
+ 	* libgnat/a-chahan.adb: Likewise.
+ 	* libgnat/a-chahan.ads: Likewise.
+ 	* libgnat/a-chlat9.ads: Likewise.
+ 	* libgnat/a-chtgbk.adb: Likewise.
+ 	* libgnat/a-chtgbk.ads: Likewise.
+ 	* libgnat/a-chtgbo.adb: Likewise.
+ 	* libgnat/a-chtgbo.ads: Likewise.
+ 	* libgnat/a-chtgke.adb: Likewise.
+ 	* libgnat/a-chtgke.ads: Likewise.
+ 	* libgnat/a-chtgop.adb: Likewise.
+ 	* libgnat/a-chtgop.ads: Likewise.
+ 	* libgnat/a-chzla1.ads: Likewise.
+ 	* libgnat/a-chzla9.ads: Likewise.
+ 	* libgnat/a-cidlli.adb: Likewise.
+ 	* libgnat/a-cidlli.ads: Likewise.
+ 	* libgnat/a-cihama.adb: Likewise.
+ 	* libgnat/a-cihama.ads: Likewise.
+ 	* libgnat/a-cihase.adb: Likewise.
+ 	* libgnat/a-cihase.ads: Likewise.
+ 	* libgnat/a-cimutr.adb: Likewise.
+ 	* libgnat/a-cimutr.ads: Likewise.
+ 	* libgnat/a-ciorma.adb: Likewise.
+ 	* libgnat/a-ciorma.ads: Likewise.
+ 	* libgnat/a-ciormu.adb: Likewise.
+ 	* libgnat/a-ciormu.ads: Likewise.
+ 	* libgnat/a-ciorse.adb: Likewise.
+ 	* libgnat/a-ciorse.ads: Likewise.
+ 	* libgnat/a-clrefi.adb: Likewise.
+ 	* libgnat/a-clrefi.ads: Likewise.
+ 	* libgnat/a-coboho.adb: Likewise.
+ 	* libgnat/a-coboho.ads: Likewise.
+ 	* libgnat/a-cobove.adb: Likewise.
+ 	* libgnat/a-cobove.ads: Likewise.
+ 	* libgnat/a-cofove.adb: Likewise.
+ 	* libgnat/a-cofove.ads: Likewise.
+ 	* libgnat/a-cofuba.adb: Likewise.
+ 	* libgnat/a-cofuba.ads: Likewise.
+ 	* libgnat/a-cofuma.adb: Likewise.
+ 	* libgnat/a-cofuma.ads: Likewise.
+ 	* libgnat/a-cofuse.adb: Likewise.
+ 	* libgnat/a-cofuse.ads: Likewise.
+ 	* libgnat/a-cofuve.adb: Likewise.
+ 	* libgnat/a-cofuve.ads: Likewise.
+ 	* libgnat/a-cogeso.adb: Likewise.
+ 	* libgnat/a-cogeso.ads: Likewise.
+ 	* libgnat/a-cohama.adb: Likewise.
+ 	* libgnat/a-cohama.ads: Likewise.
+ 	* libgnat/a-cohase.adb: Likewise.
+ 	* libgnat/a-cohase.ads: Likewise.
+ 	* libgnat/a-cohata.ads: Likewise.
+ 	* libgnat/a-coinho.adb: Likewise.
+ 	* libgnat/a-coinho.ads: Likewise.
+ 	* libgnat/a-coinho__shared.adb: Likewise.
+ 	* libgnat/a-coinho__shared.ads: Likewise.
+ 	* libgnat/a-coinve.adb: Likewise.
+ 	* libgnat/a-coinve.ads: Likewise.
+ 	* libgnat/a-colien.adb: Likewise.
+ 	* libgnat/a-colien.ads: Likewise.
+ 	* libgnat/a-colire.adb: Likewise.
+ 	* libgnat/a-colire.ads: Likewise.
+ 	* libgnat/a-comlin.adb: Likewise.
+ 	* libgnat/a-comlin.ads: Likewise.
+ 	* libgnat/a-comutr.adb: Likewise.
+ 	* libgnat/a-comutr.ads: Likewise.
+ 	* libgnat/a-conhel.adb: Likewise.
+ 	* libgnat/a-conhel.ads: Likewise.
+ 	* libgnat/a-convec.adb: Likewise.
+ 	* libgnat/a-convec.ads: Likewise.
+ 	* libgnat/a-coorma.adb: Likewise.
+ 	* libgnat/a-coorma.ads: Likewise.
+ 	* libgnat/a-coormu.adb: Likewise.
+ 	* libgnat/a-coormu.ads: Likewise.
+ 	* libgnat/a-coorse.adb: Likewise.
+ 	* libgnat/a-coorse.ads: Likewise.
+ 	* libgnat/a-coprnu.adb: Likewise.
+ 	* libgnat/a-coprnu.ads: Likewise.
+ 	* libgnat/a-costso.adb: Likewise.
+ 	* libgnat/a-costso.ads: Likewise.
+ 	* libgnat/a-crbltr.ads: Likewise.
+ 	* libgnat/a-crbtgk.adb: Likewise.
+ 	* libgnat/a-crbtgk.ads: Likewise.
+ 	* libgnat/a-crbtgo.adb: Likewise.
+ 	* libgnat/a-crbtgo.ads: Likewise.
+ 	* libgnat/a-crdlli.adb: Likewise.
+ 	* libgnat/a-crdlli.ads: Likewise.
+ 	* libgnat/a-csquin.ads: Likewise.
+ 	* libgnat/a-cuprqu.adb: Likewise.
+ 	* libgnat/a-cuprqu.ads: Likewise.
+ 	* libgnat/a-cusyqu.adb: Likewise.
+ 	* libgnat/a-cusyqu.ads: Likewise.
+ 	* libgnat/a-cwila1.ads: Likewise.
+ 	* libgnat/a-cwila9.ads: Likewise.
+ 	* libgnat/a-decima.adb: Likewise.
+ 	* libgnat/a-decima.ads: Likewise.
+ 	* libgnat/a-decima__128.ads: Likewise.
+ 	* libgnat/a-dhfina.adb: Likewise.
+ 	* libgnat/a-dhfina.ads: Likewise.
+ 	* libgnat/a-diocst.adb: Likewise.
+ 	* libgnat/a-diocst.ads: Likewise.
+ 	* libgnat/a-direct.adb: Likewise.
+ 	* libgnat/a-direct.ads: Likewise.
+ 	* libgnat/a-direio.adb: Likewise.
+ 	* libgnat/a-direio.ads: Likewise.
+ 	* libgnat/a-dirval.adb: Likewise.
+ 	* libgnat/a-dirval.ads: Likewise.
+ 	* libgnat/a-dirval__mingw.adb: Likewise.
+ 	* libgnat/a-einuoc.adb: Likewise.
+ 	* libgnat/a-einuoc.ads: Likewise.
+ 	* libgnat/a-elchha.adb: Likewise.
+ 	* libgnat/a-elchha.ads: Likewise.
+ 	* libgnat/a-envvar.adb: Likewise.
+ 	* libgnat/a-excach.adb: Likewise.
+ 	* libgnat/a-except.adb: Likewise.
+ 	* libgnat/a-except.ads: Likewise.
+ 	* libgnat/a-exctra.adb: Likewise.
+ 	* libgnat/a-exctra.ads: Likewise.
+ 	* libgnat/a-exexda.adb: Likewise.
+ 	* libgnat/a-exexpr.adb: Likewise.
+ 	* libgnat/a-exextr.adb: Likewise.
+ 	* libgnat/a-exstat.adb: Likewise.
+ 	* libgnat/a-finali.adb: Likewise.
+ 	* libgnat/a-finali.ads: Likewise.
+ 	* libgnat/a-locale.adb: Likewise.
+ 	* libgnat/a-locale.ads: Likewise.
+ 	* libgnat/a-nagefl.ads: Likewise.
+ 	* libgnat/a-naliop.ads: Likewise.
+ 	* libgnat/a-naliop__nolibm.ads: Likewise.
+ 	* libgnat/a-nallfl.ads: Likewise.
+ 	* libgnat/a-nallfl__wraplf.ads: Likewise.
+ 	* libgnat/a-nalofl.ads: Likewise.
+ 	* libgnat/a-nashfl.ads: Likewise.
+ 	* libgnat/a-nashfl__wraplf.ads: Likewise.
+ 	* libgnat/a-nbnbig.adb: Likewise.
+ 	* libgnat/a-nbnbin.adb: Likewise.
+ 	* libgnat/a-nbnbin__gmp.adb: Likewise.
+ 	* libgnat/a-nbnbre.adb: Likewise.
+ 	* libgnat/a-ngcefu.adb: Likewise.
+ 	* libgnat/a-ngcoar.adb: Likewise.
+ 	* libgnat/a-ngcoty.adb: Likewise.
+ 	* libgnat/a-ngcoty.ads: Likewise.
+ 	* libgnat/a-ngelfu.adb: Likewise.
+ 	* libgnat/a-ngelfu.ads: Likewise.
+ 	* libgnat/a-ngrear.adb: Likewise.
+ 	* libgnat/a-ngrear.ads: Likewise.
+ 	* libgnat/a-nuauco.ads: Likewise.
+ 	* libgnat/a-nuauco__x86.ads: Likewise.
+ 	* libgnat/a-nuaufl.ads: Likewise.
+ 	* libgnat/a-nuaufl__wraplf.ads: Likewise.
+ 	* libgnat/a-nudira.adb: Likewise.
+ 	* libgnat/a-nudira.ads: Likewise.
+ 	* libgnat/a-nuflra.adb: Likewise.
+ 	* libgnat/a-nuflra.ads: Likewise.
+ 	* libgnat/a-numaux.ads: Likewise.
+ 	* libgnat/a-rbtgbk.adb: Likewise.
+ 	* libgnat/a-rbtgbk.ads: Likewise.
+ 	* libgnat/a-rbtgbo.adb: Likewise.
+ 	* libgnat/a-rbtgbo.ads: Likewise.
+ 	* libgnat/a-rbtgso.adb: Likewise.
+ 	* libgnat/a-rbtgso.ads: Likewise.
+ 	* libgnat/a-sbecin.adb: Likewise.
+ 	* libgnat/a-sbecin.ads: Likewise.
+ 	* libgnat/a-sbhcin.adb: Likewise.
+ 	* libgnat/a-sbhcin.ads: Likewise.
+ 	* libgnat/a-sblcin.adb: Likewise.
+ 	* libgnat/a-sblcin.ads: Likewise.
+ 	* libgnat/a-secain.adb: Likewise.
+ 	* libgnat/a-secain.ads: Likewise.
+ 	* libgnat/a-sequio.adb: Likewise.
+ 	* libgnat/a-sequio.ads: Likewise.
+ 	* libgnat/a-sfecin.ads: Likewise.
+ 	* libgnat/a-sfhcin.ads: Likewise.
+ 	* libgnat/a-sflcin.ads: Likewise.
+ 	* libgnat/a-shcain.adb: Likewise.
+ 	* libgnat/a-shcain.ads: Likewise.
+ 	* libgnat/a-siocst.adb: Likewise.
+ 	* libgnat/a-siocst.ads: Likewise.
+ 	* libgnat/a-slcain.adb: Likewise.
+ 	* libgnat/a-slcain.ads: Likewise.
+ 	* libgnat/a-ssicst.adb: Likewise.
+ 	* libgnat/a-ssicst.ads: Likewise.
+ 	* libgnat/a-stboha.adb: Likewise.
+ 	* libgnat/a-stbubo.adb: Likewise.
+ 	* libgnat/a-stbubo.ads: Likewise.
+ 	* libgnat/a-stbufi.adb: Likewise.
+ 	* libgnat/a-stbufi.ads: Likewise.
+ 	* libgnat/a-stbufo.adb: Likewise.
+ 	* libgnat/a-stbufo.ads: Likewise.
+ 	* libgnat/a-stbuun.adb: Likewise.
+ 	* libgnat/a-stbuut.adb: Likewise.
+ 	* libgnat/a-stbuut.ads: Likewise.
+ 	* libgnat/a-stmaco.ads: Likewise.
+ 	* libgnat/a-storio.adb: Likewise.
+ 	* libgnat/a-strbou.adb: Likewise.
+ 	* libgnat/a-strbou.ads: Likewise.
+ 	* libgnat/a-stream.adb: Likewise.
+ 	* libgnat/a-stream.ads: Likewise.
+ 	* libgnat/a-strfix.adb: Likewise.
+ 	* libgnat/a-strhas.adb: Likewise.
+ 	* libgnat/a-strmap.adb: Likewise.
+ 	* libgnat/a-strmap.ads: Likewise.
+ 	* libgnat/a-strsea.adb: Likewise.
+ 	* libgnat/a-strsea.ads: Likewise.
+ 	* libgnat/a-strsto.ads: Likewise.
+ 	* libgnat/a-strsup.adb: Likewise.
+ 	* libgnat/a-strsup.ads: Likewise.
+ 	* libgnat/a-strunb.adb: Likewise.
+ 	* libgnat/a-strunb.ads: Likewise.
+ 	* libgnat/a-strunb__shared.adb: Likewise.
+ 	* libgnat/a-strunb__shared.ads: Likewise.
+ 	* libgnat/a-ststbo.adb: Likewise.
+ 	* libgnat/a-ststbo.ads: Likewise.
+ 	* libgnat/a-ststio.adb: Likewise.
+ 	* libgnat/a-ststio.ads: Likewise.
+ 	* libgnat/a-ststun.adb: Likewise.
+ 	* libgnat/a-ststun.ads: Likewise.
+ 	* libgnat/a-sttebu.adb: Likewise.
+ 	* libgnat/a-stunau.adb: Likewise.
+ 	* libgnat/a-stunau.ads: Likewise.
+ 	* libgnat/a-stunau__shared.adb: Likewise.
+ 	* libgnat/a-stunha.adb: Likewise.
+ 	* libgnat/a-stuten.adb: Likewise.
+ 	* libgnat/a-stwibo.adb: Likewise.
+ 	* libgnat/a-stwibo.ads: Likewise.
+ 	* libgnat/a-stwifi.adb: Likewise.
+ 	* libgnat/a-stwiha.adb: Likewise.
+ 	* libgnat/a-stwima.adb: Likewise.
+ 	* libgnat/a-stwima.ads: Likewise.
+ 	* libgnat/a-stwise.adb: Likewise.
+ 	* libgnat/a-stwise.ads: Likewise.
+ 	* libgnat/a-stwisu.adb: Likewise.
+ 	* libgnat/a-stwisu.ads: Likewise.
+ 	* libgnat/a-stwiun.adb: Likewise.
+ 	* libgnat/a-stwiun.ads: Likewise.
+ 	* libgnat/a-stwiun__shared.adb: Likewise.
+ 	* libgnat/a-stwiun__shared.ads: Likewise.
+ 	* libgnat/a-stzbou.adb: Likewise.
+ 	* libgnat/a-stzbou.ads: Likewise.
+ 	* libgnat/a-stzfix.adb: Likewise.
+ 	* libgnat/a-stzhas.adb: Likewise.
+ 	* libgnat/a-stzmap.adb: Likewise.
+ 	* libgnat/a-stzmap.ads: Likewise.
+ 	* libgnat/a-stzsea.adb: Likewise.
+ 	* libgnat/a-stzsea.ads: Likewise.
+ 	* libgnat/a-stzsup.adb: Likewise.
+ 	* libgnat/a-stzsup.ads: Likewise.
+ 	* libgnat/a-stzunb.adb: Likewise.
+ 	* libgnat/a-stzunb.ads: Likewise.
+ 	* libgnat/a-stzunb__shared.adb: Likewise.
+ 	* libgnat/a-stzunb__shared.ads: Likewise.
+ 	* libgnat/a-suecin.adb: Likewise.
+ 	* libgnat/a-suecin.ads: Likewise.
+ 	* libgnat/a-suenco.adb: Likewise.
+ 	* libgnat/a-suenst.adb: Likewise.
+ 	* libgnat/a-suewst.adb: Likewise.
+ 	* libgnat/a-suezst.adb: Likewise.
+ 	* libgnat/a-suhcin.adb: Likewise.
+ 	* libgnat/a-suhcin.ads: Likewise.
+ 	* libgnat/a-sulcin.adb: Likewise.
+ 	* libgnat/a-sulcin.ads: Likewise.
+ 	* libgnat/a-suteio.adb: Likewise.
+ 	* libgnat/a-suteio.ads: Likewise.
+ 	* libgnat/a-suteio__shared.adb: Likewise.
+ 	* libgnat/a-swbwha.adb: Likewise.
+ 	* libgnat/a-swmwco.ads: Likewise.
+ 	* libgnat/a-swunau.adb: Likewise.
+ 	* libgnat/a-swunau.ads: Likewise.
+ 	* libgnat/a-swunau__shared.adb: Likewise.
+ 	* libgnat/a-swuwha.adb: Likewise.
+ 	* libgnat/a-swuwti.adb: Likewise.
+ 	* libgnat/a-swuwti.ads: Likewise.
+ 	* libgnat/a-swuwti__shared.adb: Likewise.
+ 	* libgnat/a-szbzha.adb: Likewise.
+ 	* libgnat/a-szmzco.ads: Likewise.
+ 	* libgnat/a-szunau.adb: Likewise.
+ 	* libgnat/a-szunau.ads: Likewise.
+ 	* libgnat/a-szunau__shared.adb: Likewise.
+ 	* libgnat/a-szuzha.adb: Likewise.
+ 	* libgnat/a-szuzti.adb: Likewise.
+ 	* libgnat/a-szuzti.ads: Likewise.
+ 	* libgnat/a-szuzti__shared.adb: Likewise.
+ 	* libgnat/a-tags.adb: Likewise.
+ 	* libgnat/a-tags.ads: Likewise.
+ 	* libgnat/a-teioed.adb: Likewise.
+ 	* libgnat/a-teioed.ads: Likewise.
+ 	* libgnat/a-textio.adb: Likewise.
+ 	* libgnat/a-textio.ads: Likewise.
+ 	* libgnat/a-tiboio.adb: Likewise.
+ 	* libgnat/a-ticoau.adb: Likewise.
+ 	* libgnat/a-ticoau.ads: Likewise.
+ 	* libgnat/a-ticoio.adb: Likewise.
+ 	* libgnat/a-ticoio.ads: Likewise.
+ 	* libgnat/a-tideau.adb: Likewise.
+ 	* libgnat/a-tideau.ads: Likewise.
+ 	* libgnat/a-tideio.adb: Likewise.
+ 	* libgnat/a-tideio.ads: Likewise.
+ 	* libgnat/a-tideio__128.adb: Likewise.
+ 	* libgnat/a-tienau.adb: Likewise.
+ 	* libgnat/a-tienau.ads: Likewise.
+ 	* libgnat/a-tienio.adb: Likewise.
+ 	* libgnat/a-tifiau.adb: Likewise.
+ 	* libgnat/a-tifiau.ads: Likewise.
+ 	* libgnat/a-tifiio.adb: Likewise.
+ 	* libgnat/a-tifiio__128.adb: Likewise.
+ 	* libgnat/a-tiflau.adb: Likewise.
+ 	* libgnat/a-tiflau.ads: Likewise.
+ 	* libgnat/a-tiflio.adb: Likewise.
+ 	* libgnat/a-tiflio.ads: Likewise.
+ 	* libgnat/a-tigeau.adb: Likewise.
+ 	* libgnat/a-tigeau.ads: Likewise.
+ 	* libgnat/a-tigeli.adb: Likewise.
+ 	* libgnat/a-tiinau.adb: Likewise.
+ 	* libgnat/a-tiinau.ads: Likewise.
+ 	* libgnat/a-tiinio.adb: Likewise.
+ 	* libgnat/a-tiinio.ads: Likewise.
+ 	* libgnat/a-tiinio__128.adb: Likewise.
+ 	* libgnat/a-timoio.adb: Likewise.
+ 	* libgnat/a-timoio.ads: Likewise.
+ 	* libgnat/a-timoio__128.adb: Likewise.
+ 	* libgnat/a-tiocst.adb: Likewise.
+ 	* libgnat/a-tiocst.ads: Likewise.
+ 	* libgnat/a-tirsfi.adb: Likewise.
+ 	* libgnat/a-tirsfi.ads: Likewise.
+ 	* libgnat/a-titest.adb: Likewise.
+ 	* libgnat/a-undesu.adb: Likewise.
+ 	* libgnat/a-wichha.adb: Likewise.
+ 	* libgnat/a-wichun.adb: Likewise.
+ 	* libgnat/a-wichun.ads: Likewise.
+ 	* libgnat/a-witeio.adb: Likewise.
+ 	* libgnat/a-witeio.ads: Likewise.
+ 	* libgnat/a-wrstfi.adb: Likewise.
+ 	* libgnat/a-wrstfi.ads: Likewise.
+ 	* libgnat/a-wtcoau.adb: Likewise.
+ 	* libgnat/a-wtcoau.ads: Likewise.
+ 	* libgnat/a-wtcoio.adb: Likewise.
+ 	* libgnat/a-wtcstr.adb: Likewise.
+ 	* libgnat/a-wtcstr.ads: Likewise.
+ 	* libgnat/a-wtdeau.adb: Likewise.
+ 	* libgnat/a-wtdeau.ads: Likewise.
+ 	* libgnat/a-wtdeio.adb: Likewise.
+ 	* libgnat/a-wtdeio__128.adb: Likewise.
+ 	* libgnat/a-wtedit.adb: Likewise.
+ 	* libgnat/a-wtedit.ads: Likewise.
+ 	* libgnat/a-wtenau.adb: Likewise.
+ 	* libgnat/a-wtenau.ads: Likewise.
+ 	* libgnat/a-wtenio.adb: Likewise.
+ 	* libgnat/a-wtfiau.adb: Likewise.
+ 	* libgnat/a-wtfiau.ads: Likewise.
+ 	* libgnat/a-wtfiio.adb: Likewise.
+ 	* libgnat/a-wtfiio__128.adb: Likewise.
+ 	* libgnat/a-wtflau.adb: Likewise.
+ 	* libgnat/a-wtflau.ads: Likewise.
+ 	* libgnat/a-wtflio.adb: Likewise.
+ 	* libgnat/a-wtgeau.adb: Likewise.
+ 	* libgnat/a-wtgeau.ads: Likewise.
+ 	* libgnat/a-wtinau.adb: Likewise.
+ 	* libgnat/a-wtinau.ads: Likewise.
+ 	* libgnat/a-wtinio.adb: Likewise.
+ 	* libgnat/a-wtinio__128.adb: Likewise.
+ 	* libgnat/a-wtmoio.adb: Likewise.
+ 	* libgnat/a-wtmoio.ads: Likewise.
+ 	* libgnat/a-wtmoio__128.adb: Likewise.
+ 	* libgnat/a-wttest.adb: Likewise.
+ 	* libgnat/a-wwboio.adb: Likewise.
+ 	* libgnat/a-zchhan.adb: Likewise.
+ 	* libgnat/a-zchuni.adb: Likewise.
+ 	* libgnat/a-zchuni.ads: Likewise.
+ 	* libgnat/a-zrstfi.adb: Likewise.
+ 	* libgnat/a-zrstfi.ads: Likewise.
+ 	* libgnat/a-ztcoau.adb: Likewise.
+ 	* libgnat/a-ztcoio.adb: Likewise.
+ 	* libgnat/a-ztcstr.adb: Likewise.
+ 	* libgnat/a-ztcstr.ads: Likewise.
+ 	* libgnat/a-ztdeau.adb: Likewise.
+ 	* libgnat/a-ztdeau.ads: Likewise.
+ 	* libgnat/a-ztdeio.adb: Likewise.
+ 	* libgnat/a-ztdeio__128.adb: Likewise.
+ 	* libgnat/a-ztedit.adb: Likewise.
+ 	* libgnat/a-ztedit.ads: Likewise.
+ 	* libgnat/a-ztenau.adb: Likewise.
+ 	* libgnat/a-ztenau.ads: Likewise.
+ 	* libgnat/a-ztenio.adb: Likewise.
+ 	* libgnat/a-ztexio.adb: Likewise.
+ 	* libgnat/a-ztexio.ads: Likewise.
+ 	* libgnat/a-ztfiau.adb: Likewise.
+ 	* libgnat/a-ztfiau.ads: Likewise.
+ 	* libgnat/a-ztfiio.adb: Likewise.
+ 	* libgnat/a-ztfiio__128.adb: Likewise.
+ 	* libgnat/a-ztflau.adb: Likewise.
+ 	* libgnat/a-ztflau.ads: Likewise.
+ 	* libgnat/a-ztflio.adb: Likewise.
+ 	* libgnat/a-ztgeau.adb: Likewise.
+ 	* libgnat/a-ztgeau.ads: Likewise.
+ 	* libgnat/a-ztinau.adb: Likewise.
+ 	* libgnat/a-ztinau.ads: Likewise.
+ 	* libgnat/a-ztinio.adb: Likewise.
+ 	* libgnat/a-ztinio__128.adb: Likewise.
+ 	* libgnat/a-ztmoio.adb: Likewise.
+ 	* libgnat/a-ztmoio__128.adb: Likewise.
+ 	* libgnat/a-zttest.adb: Likewise.
+ 	* libgnat/a-zzboio.adb: Likewise.
+ 	* libgnat/g-allein.ads: Likewise.
+ 	* libgnat/g-alleve.adb: Likewise.
+ 	* libgnat/g-alleve.ads: Likewise.
+ 	* libgnat/g-alleve__hard.adb: Likewise.
+ 	* libgnat/g-alleve__hard.ads: Likewise.
+ 	* libgnat/g-altcon.adb: Likewise.
+ 	* libgnat/g-altcon.ads: Likewise.
+ 	* libgnat/g-altive.ads: Likewise.
+ 	* libgnat/g-alveop.adb: Likewise.
+ 	* libgnat/g-alveop.ads: Likewise.
+ 	* libgnat/g-alvety.ads: Likewise.
+ 	* libgnat/g-alvevi.ads: Likewise.
+ 	* libgnat/g-arrspl.adb: Likewise.
+ 	* libgnat/g-arrspl.ads: Likewise.
+ 	* libgnat/g-awk.adb: Likewise.
+ 	* libgnat/g-awk.ads: Likewise.
+ 	* libgnat/g-binenv.adb: Likewise.
+ 	* libgnat/g-binenv.ads: Likewise.
+ 	* libgnat/g-brapre.ads: Likewise.
+ 	* libgnat/g-bubsor.adb: Likewise.
+ 	* libgnat/g-bubsor.ads: Likewise.
+ 	* libgnat/g-busora.adb: Likewise.
+ 	* libgnat/g-busora.ads: Likewise.
+ 	* libgnat/g-busorg.adb: Likewise.
+ 	* libgnat/g-busorg.ads: Likewise.
+ 	* libgnat/g-byorma.adb: Likewise.
+ 	* libgnat/g-byorma.ads: Likewise.
+ 	* libgnat/g-bytswa.adb: Likewise.
+ 	* libgnat/g-bytswa.ads: Likewise.
+ 	* libgnat/g-calend.adb: Likewise.
+ 	* libgnat/g-calend.ads: Likewise.
+ 	* libgnat/g-casuti.adb: Likewise.
+ 	* libgnat/g-casuti.ads: Likewise.
+ 	* libgnat/g-catiio.adb: Likewise.
+ 	* libgnat/g-catiio.ads: Likewise.
+ 	* libgnat/g-cgi.adb: Likewise.
+ 	* libgnat/g-cgi.ads: Likewise.
+ 	* libgnat/g-cgicoo.adb: Likewise.
+ 	* libgnat/g-cgicoo.ads: Likewise.
+ 	* libgnat/g-cgideb.adb: Likewise.
+ 	* libgnat/g-cgideb.ads: Likewise.
+ 	* libgnat/g-comlin.adb: Likewise.
+ 	* libgnat/g-comlin.ads: Likewise.
+ 	* libgnat/g-comver.adb: Likewise.
+ 	* libgnat/g-comver.ads: Likewise.
+ 	* libgnat/g-cppexc.adb: Likewise.
+ 	* libgnat/g-cppexc.ads: Likewise.
+ 	* libgnat/g-crc32.adb: Likewise.
+ 	* libgnat/g-crc32.ads: Likewise.
+ 	* libgnat/g-ctrl_c.adb: Likewise.
+ 	* libgnat/g-ctrl_c.ads: Likewise.
+ 	* libgnat/g-curexc.ads: Likewise.
+ 	* libgnat/g-debpoo.adb: Likewise.
+ 	* libgnat/g-debpoo.ads: Likewise.
+ 	* libgnat/g-debuti.adb: Likewise.
+ 	* libgnat/g-debuti.ads: Likewise.
+ 	* libgnat/g-decstr.adb: Likewise.
+ 	* libgnat/g-decstr.ads: Likewise.
+ 	* libgnat/g-deutst.ads: Likewise.
+ 	* libgnat/g-diopit.adb: Likewise.
+ 	* libgnat/g-diopit.ads: Likewise.
+ 	* libgnat/g-dirope.adb: Likewise.
+ 	* libgnat/g-dirope.ads: Likewise.
+ 	* libgnat/g-dynhta.adb: Likewise.
+ 	* libgnat/g-dynhta.ads: Likewise.
+ 	* libgnat/g-dyntab.adb: Likewise.
+ 	* libgnat/g-dyntab.ads: Likewise.
+ 	* libgnat/g-eacodu.adb: Likewise.
+ 	* libgnat/g-encstr.adb: Likewise.
+ 	* libgnat/g-encstr.ads: Likewise.
+ 	* libgnat/g-enutst.ads: Likewise.
+ 	* libgnat/g-excact.adb: Likewise.
+ 	* libgnat/g-excact.ads: Likewise.
+ 	* libgnat/g-except.ads: Likewise.
+ 	* libgnat/g-exctra.adb: Likewise.
+ 	* libgnat/g-exctra.ads: Likewise.
+ 	* libgnat/g-expect.adb: Likewise.
+ 	* libgnat/g-expect.ads: Likewise.
+ 	* libgnat/g-exptty.adb: Likewise.
+ 	* libgnat/g-exptty.ads: Likewise.
+ 	* libgnat/g-flocon.ads: Likewise.
+ 	* libgnat/g-forstr.adb: Likewise.
+ 	* libgnat/g-forstr.ads: Likewise.
+ 	* libgnat/g-graphs.adb: Likewise.
+ 	* libgnat/g-graphs.ads: Likewise.
+ 	* libgnat/g-heasor.adb: Likewise.
+ 	* libgnat/g-heasor.ads: Likewise.
+ 	* libgnat/g-hesora.adb: Likewise.
+ 	* libgnat/g-hesora.ads: Likewise.
+ 	* libgnat/g-hesorg.adb: Likewise.
+ 	* libgnat/g-hesorg.ads: Likewise.
+ 	* libgnat/g-htable.adb: Likewise.
+ 	* libgnat/g-htable.ads: Likewise.
+ 	* libgnat/g-io.adb: Likewise.
+ 	* libgnat/g-io.ads: Likewise.
+ 	* libgnat/g-io_aux.adb: Likewise.
+ 	* libgnat/g-io_aux.ads: Likewise.
+ 	* libgnat/g-lists.adb: Likewise.
+ 	* libgnat/g-lists.ads: Likewise.
+ 	* libgnat/g-locfil.adb: Likewise.
+ 	* libgnat/g-locfil.ads: Likewise.
+ 	* libgnat/g-mbdira.adb: Likewise.
+ 	* libgnat/g-mbdira.ads: Likewise.
+ 	* libgnat/g-mbflra.adb: Likewise.
+ 	* libgnat/g-mbflra.ads: Likewise.
+ 	* libgnat/g-md5.adb: Likewise.
+ 	* libgnat/g-md5.ads: Likewise.
+ 	* libgnat/g-memdum.adb: Likewise.
+ 	* libgnat/g-memdum.ads: Likewise.
+ 	* libgnat/g-moreex.adb: Likewise.
+ 	* libgnat/g-moreex.ads: Likewise.
+ 	* libgnat/g-os_lib.adb: Likewise.
+ 	* libgnat/g-os_lib.ads: Likewise.
+ 	* libgnat/g-pehage.adb: Likewise.
+ 	* libgnat/g-pehage.ads: Likewise.
+ 	* libgnat/g-rannum.adb: Likewise.
+ 	* libgnat/g-rannum.ads: Likewise.
+ 	* libgnat/g-regexp.adb: Likewise.
+ 	* libgnat/g-regexp.ads: Likewise.
+ 	* libgnat/g-regist.adb: Likewise.
+ 	* libgnat/g-regist.ads: Likewise.
+ 	* libgnat/g-regpat.adb: Likewise.
+ 	* libgnat/g-regpat.ads: Likewise.
+ 	* libgnat/g-rewdat.adb: Likewise.
+ 	* libgnat/g-rewdat.ads: Likewise.
+ 	* libgnat/g-sechas.adb: Likewise.
+ 	* libgnat/g-sechas.ads: Likewise.
+ 	* libgnat/g-sehamd.adb: Likewise.
+ 	* libgnat/g-sehamd.ads: Likewise.
+ 	* libgnat/g-sehash.adb: Likewise.
+ 	* libgnat/g-sehash.ads: Likewise.
+ 	* libgnat/g-sercom.adb: Likewise.
+ 	* libgnat/g-sercom.ads: Likewise.
+ 	* libgnat/g-sercom__linux.adb: Likewise.
+ 	* libgnat/g-sercom__mingw.adb: Likewise.
+ 	* libgnat/g-sestin.ads: Likewise.
+ 	* libgnat/g-sets.adb: Likewise.
+ 	* libgnat/g-sets.ads: Likewise.
+ 	* libgnat/g-sha1.adb: Likewise.
+ 	* libgnat/g-sha1.ads: Likewise.
+ 	* libgnat/g-sha224.ads: Likewise.
+ 	* libgnat/g-sha256.ads: Likewise.
+ 	* libgnat/g-sha384.ads: Likewise.
+ 	* libgnat/g-sha512.ads: Likewise.
+ 	* libgnat/g-shsh32.adb: Likewise.
+ 	* libgnat/g-shsh32.ads: Likewise.
+ 	* libgnat/g-shsh64.adb: Likewise.
+ 	* libgnat/g-shsh64.ads: Likewise.
+ 	* libgnat/g-shshco.adb: Likewise.
+ 	* libgnat/g-shshco.ads: Likewise.
+ 	* libgnat/g-soccon.ads: Likewise.
+ 	* libgnat/g-socket.adb: Likewise.
+ 	* libgnat/g-socket.ads: Likewise.
+ 	* libgnat/g-socket__dummy.adb: Likewise.
+ 	* libgnat/g-socket__dummy.ads: Likewise.
+ 	* libgnat/g-socpol.adb: Likewise.
+ 	* libgnat/g-socpol.ads: Likewise.
+ 	* libgnat/g-socpol__dummy.adb: Likewise.
+ 	* libgnat/g-socpol__dummy.ads: Likewise.
+ 	* libgnat/g-socthi.adb: Likewise.
+ 	* libgnat/g-socthi.ads: Likewise.
+ 	* libgnat/g-socthi__dummy.adb: Likewise.
+ 	* libgnat/g-socthi__dummy.ads: Likewise.
+ 	* libgnat/g-socthi__mingw.adb: Likewise.
+ 	* libgnat/g-socthi__mingw.ads: Likewise.
+ 	* libgnat/g-socthi__vxworks.adb: Likewise.
+ 	* libgnat/g-socthi__vxworks.ads: Likewise.
+ 	* libgnat/g-soliop.ads: Likewise.
+ 	* libgnat/g-soliop__lynxos.ads: Likewise.
+ 	* libgnat/g-soliop__mingw.ads: Likewise.
+ 	* libgnat/g-soliop__qnx.ads: Likewise.
+ 	* libgnat/g-soliop__solaris.ads: Likewise.
+ 	* libgnat/g-sopowa.adb: Likewise.
+ 	* libgnat/g-sopowa__mingw.adb: Likewise.
+ 	* libgnat/g-sopowa__posix.adb: Likewise.
+ 	* libgnat/g-sothco.adb: Likewise.
+ 	* libgnat/g-sothco.ads: Likewise.
+ 	* libgnat/g-sothco__dummy.adb: Likewise.
+ 	* libgnat/g-sothco__dummy.ads: Likewise.
+ 	* libgnat/g-souinf.ads: Likewise.
+ 	* libgnat/g-spchge.adb: Likewise.
+ 	* libgnat/g-spchge.ads: Likewise.
+ 	* libgnat/g-speche.adb: Likewise.
+ 	* libgnat/g-speche.ads: Likewise.
+ 	* libgnat/g-spipat.adb: Likewise.
+ 	* libgnat/g-spipat.ads: Likewise.
+ 	* libgnat/g-spitbo.adb: Likewise.
+ 	* libgnat/g-spitbo.ads: Likewise.
+ 	* libgnat/g-spogwa.adb: Likewise.
+ 	* libgnat/g-spogwa.ads: Likewise.
+ 	* libgnat/g-sptabo.ads: Likewise.
+ 	* libgnat/g-sptain.ads: Likewise.
+ 	* libgnat/g-sptavs.ads: Likewise.
+ 	* libgnat/g-sse.ads: Likewise.
+ 	* libgnat/g-ssvety.ads: Likewise.
+ 	* libgnat/g-sthcso.adb: Likewise.
+ 	* libgnat/g-stheme.adb: Likewise.
+ 	* libgnat/g-strhas.ads: Likewise.
+ 	* libgnat/g-string.adb: Likewise.
+ 	* libgnat/g-string.ads: Likewise.
+ 	* libgnat/g-strspl.ads: Likewise.
+ 	* libgnat/g-stseme.adb: Likewise.
+ 	* libgnat/g-stsifd__sockets.adb: Likewise.
+ 	* libgnat/g-table.adb: Likewise.
+ 	* libgnat/g-table.ads: Likewise.
+ 	* libgnat/g-tasloc.adb: Likewise.
+ 	* libgnat/g-tasloc.ads: Likewise.
+ 	* libgnat/g-timsta.adb: Likewise.
+ 	* libgnat/g-timsta.ads: Likewise.
+ 	* libgnat/g-traceb.adb: Likewise.
+ 	* libgnat/g-traceb.ads: Likewise.
+ 	* libgnat/g-trasym.adb: Likewise.
+ 	* libgnat/g-trasym.ads: Likewise.
+ 	* libgnat/g-tty.adb: Likewise.
+ 	* libgnat/g-tty.ads: Likewise.
+ 	* libgnat/g-u3spch.adb: Likewise.
+ 	* libgnat/g-u3spch.ads: Likewise.
+ 	* libgnat/g-utf_32.adb: Likewise.
+ 	* libgnat/g-utf_32.ads: Likewise.
+ 	* libgnat/g-wispch.adb: Likewise.
+ 	* libgnat/g-wispch.ads: Likewise.
+ 	* libgnat/g-wistsp.ads: Likewise.
+ 	* libgnat/g-zspche.adb: Likewise.
+ 	* libgnat/g-zspche.ads: Likewise.
+ 	* libgnat/g-zstspl.ads: Likewise.
+ 	* libgnat/gnat.ads: Likewise.
+ 	* libgnat/i-c.adb: Likewise.
+ 	* libgnat/i-cexten.ads: Likewise.
+ 	* libgnat/i-cexten__128.ads: Likewise.
+ 	* libgnat/i-cobol.adb: Likewise.
+ 	* libgnat/i-cobol.ads: Likewise.
+ 	* libgnat/i-cpoint.adb: Likewise.
+ 	* libgnat/i-cpoint.ads: Likewise.
+ 	* libgnat/i-cstrea.adb: Likewise.
+ 	* libgnat/i-cstrea.ads: Likewise.
+ 	* libgnat/i-cstrin.adb: Likewise.
+ 	* libgnat/i-cstrin.ads: Likewise.
+ 	* libgnat/i-fortra.adb: Likewise.
+ 	* libgnat/i-pacdec.adb: Likewise.
+ 	* libgnat/i-pacdec.ads: Likewise.
+ 	* libgnat/i-vxwoio.adb: Likewise.
+ 	* libgnat/i-vxwoio.ads: Likewise.
+ 	* libgnat/i-vxwork.ads: Likewise.
+ 	* libgnat/i-vxwork__x86.ads: Likewise.
+ 	* libgnat/interfac.ads: Likewise.
+ 	* libgnat/interfac__2020.ads: Likewise.
+ 	* libgnat/memtrack.adb: Likewise.
+ 	* libgnat/s-addima.adb: Likewise.
+ 	* libgnat/s-addima.ads: Likewise.
+ 	* libgnat/s-addope.adb: Likewise.
+ 	* libgnat/s-addope.ads: Likewise.
+ 	* libgnat/s-aoinar.adb: Likewise.
+ 	* libgnat/s-aoinar.ads: Likewise.
+ 	* libgnat/s-aomoar.adb: Likewise.
+ 	* libgnat/s-aomoar.ads: Likewise.
+ 	* libgnat/s-aotase.adb: Likewise.
+ 	* libgnat/s-aotase.ads: Likewise.
+ 	* libgnat/s-aridou.adb: Likewise.
+ 	* libgnat/s-aridou.ads: Likewise.
+ 	* libgnat/s-arit128.adb: Likewise.
+ 	* libgnat/s-arit128.ads: Likewise.
+ 	* libgnat/s-arit32.adb: Likewise.
+ 	* libgnat/s-arit32.ads: Likewise.
+ 	* libgnat/s-arit64.adb: Likewise.
+ 	* libgnat/s-arit64.ads: Likewise.
+ 	* libgnat/s-assert.adb: Likewise.
+ 	* libgnat/s-assert.ads: Likewise.
+ 	* libgnat/s-atacco.adb: Likewise.
+ 	* libgnat/s-atacco.ads: Likewise.
+ 	* libgnat/s-atocou.adb: Likewise.
+ 	* libgnat/s-atocou.ads: Likewise.
+ 	* libgnat/s-atocou__builtin.adb: Likewise.
+ 	* libgnat/s-atoope.ads: Likewise.
+ 	* libgnat/s-atopex.adb: Likewise.
+ 	* libgnat/s-atopex.ads: Likewise.
+ 	* libgnat/s-atopri.adb: Likewise.
+ 	* libgnat/s-atopri.ads: Likewise.
+ 	* libgnat/s-auxdec.adb: Likewise.
+ 	* libgnat/s-auxdec.ads: Likewise.
+ 	* libgnat/s-bignum.adb: Likewise.
+ 	* libgnat/s-bignum.ads: Likewise.
+ 	* libgnat/s-bitfie.ads: Likewise.
+ 	* libgnat/s-bitops.adb: Likewise.
+ 	* libgnat/s-bitops.ads: Likewise.
+ 	* libgnat/s-bituti.adb: Likewise.
+ 	* libgnat/s-bituti.ads: Likewise.
+ 	* libgnat/s-boarop.ads: Likewise.
+ 	* libgnat/s-boustr.adb: Likewise.
+ 	* libgnat/s-boustr.ads: Likewise.
+ 	* libgnat/s-bytswa.ads: Likewise.
+ 	* libgnat/s-carsi8.adb: Likewise.
+ 	* libgnat/s-carsi8.ads: Likewise.
+ 	* libgnat/s-carun8.adb: Likewise.
+ 	* libgnat/s-carun8.ads: Likewise.
+ 	* libgnat/s-casi128.adb: Likewise.
+ 	* libgnat/s-casi128.ads: Likewise.
+ 	* libgnat/s-casi16.adb: Likewise.
+ 	* libgnat/s-casi16.ads: Likewise.
+ 	* libgnat/s-casi32.adb: Likewise.
+ 	* libgnat/s-casi32.ads: Likewise.
+ 	* libgnat/s-casi64.adb: Likewise.
+ 	* libgnat/s-casi64.ads: Likewise.
+ 	* libgnat/s-casuti.adb: Likewise.
+ 	* libgnat/s-casuti.ads: Likewise.
+ 	* libgnat/s-caun128.adb: Likewise.
+ 	* libgnat/s-caun128.ads: Likewise.
+ 	* libgnat/s-caun16.adb: Likewise.
+ 	* libgnat/s-caun16.ads: Likewise.
+ 	* libgnat/s-caun32.adb: Likewise.
+ 	* libgnat/s-caun32.ads: Likewise.
+ 	* libgnat/s-caun64.adb: Likewise.
+ 	* libgnat/s-caun64.ads: Likewise.
+ 	* libgnat/s-chepoo.ads: Likewise.
+ 	* libgnat/s-commun.adb: Likewise.
+ 	* libgnat/s-commun.ads: Likewise.
+ 	* libgnat/s-conca2.adb: Likewise.
+ 	* libgnat/s-conca2.ads: Likewise.
+ 	* libgnat/s-conca3.adb: Likewise.
+ 	* libgnat/s-conca3.ads: Likewise.
+ 	* libgnat/s-conca4.adb: Likewise.
+ 	* libgnat/s-conca4.ads: Likewise.
+ 	* libgnat/s-conca5.adb: Likewise.
+ 	* libgnat/s-conca5.ads: Likewise.
+ 	* libgnat/s-conca6.adb: Likewise.
+ 	* libgnat/s-conca6.ads: Likewise.
+ 	* libgnat/s-conca7.adb: Likewise.
+ 	* libgnat/s-conca7.ads: Likewise.
+ 	* libgnat/s-conca8.adb: Likewise.
+ 	* libgnat/s-conca8.ads: Likewise.
+ 	* libgnat/s-conca9.adb: Likewise.
+ 	* libgnat/s-conca9.ads: Likewise.
+ 	* libgnat/s-crc32.adb: Likewise.
+ 	* libgnat/s-crc32.ads: Likewise.
+ 	* libgnat/s-crtl.ads: Likewise.
+ 	* libgnat/s-dfmkio.ads: Likewise.
+ 	* libgnat/s-dfmopr.ads: Likewise.
+ 	* libgnat/s-dgmgop.ads: Likewise.
+ 	* libgnat/s-diflio.adb: Likewise.
+ 	* libgnat/s-diflio.ads: Likewise.
+ 	* libgnat/s-diflmk.ads: Likewise.
+ 	* libgnat/s-digemk.ads: Likewise.
+ 	* libgnat/s-diinio.adb: Likewise.
+ 	* libgnat/s-diinio.ads: Likewise.
+ 	* libgnat/s-dilomk.ads: Likewise.
+ 	* libgnat/s-dim.ads: Likewise.
+ 	* libgnat/s-dimkio.ads: Likewise.
+ 	* libgnat/s-dimmks.ads: Likewise.
+ 	* libgnat/s-direio.adb: Likewise.
+ 	* libgnat/s-direio.ads: Likewise.
+ 	* libgnat/s-dlmkio.ads: Likewise.
+ 	* libgnat/s-dlmopr.ads: Likewise.
+ 	* libgnat/s-dmotpr.ads: Likewise.
+ 	* libgnat/s-dorepr.adb: Likewise.
+ 	* libgnat/s-dorepr__fma.adb: Likewise.
+ 	* libgnat/s-dourea.adb: Likewise.
+ 	* libgnat/s-dourea.ads: Likewise.
+ 	* libgnat/s-dsaser.ads: Likewise.
+ 	* libgnat/s-dwalin.adb: Likewise.
+ 	* libgnat/s-dwalin.ads: Likewise.
+ 	* libgnat/s-elaall.adb: Likewise.
+ 	* libgnat/s-elaall.ads: Likewise.
+ 	* libgnat/s-excdeb.adb: Likewise.
+ 	* libgnat/s-excdeb.ads: Likewise.
+ 	* libgnat/s-except.adb: Likewise.
+ 	* libgnat/s-except.ads: Likewise.
+ 	* libgnat/s-excmac__arm.adb: Likewise.
+ 	* libgnat/s-excmac__arm.ads: Likewise.
+ 	* libgnat/s-excmac__gcc.adb: Likewise.
+ 	* libgnat/s-excmac__gcc.ads: Likewise.
+ 	* libgnat/s-exctab.adb: Likewise.
+ 	* libgnat/s-exctab.ads: Likewise.
+ 	* libgnat/s-exctra.adb: Likewise.
+ 	* libgnat/s-exctra.ads: Likewise.
+ 	* libgnat/s-exnflt.ads: Likewise.
+ 	* libgnat/s-exnint.adb: Likewise.
+ 	* libgnat/s-exnint.ads: Likewise.
+ 	* libgnat/s-exnlfl.ads: Likewise.
+ 	* libgnat/s-exnllf.adb: Likewise.
+ 	* libgnat/s-exnllf.ads: Likewise.
+ 	* libgnat/s-exnlli.adb: Likewise.
+ 	* libgnat/s-exnlli.ads: Likewise.
+ 	* libgnat/s-exnllli.ads: Likewise.
+ 	* libgnat/s-expint.adb: Likewise.
+ 	* libgnat/s-expint.ads: Likewise.
+ 	* libgnat/s-explli.adb: Likewise.
+ 	* libgnat/s-explli.ads: Likewise.
+ 	* libgnat/s-expllli.ads: Likewise.
+ 	* libgnat/s-explllu.ads: Likewise.
+ 	* libgnat/s-expllu.adb: Likewise.
+ 	* libgnat/s-expllu.ads: Likewise.
+ 	* libgnat/s-expmod.adb: Likewise.
+ 	* libgnat/s-expmod.ads: Likewise.
+ 	* libgnat/s-exponn.adb: Likewise.
+ 	* libgnat/s-exponn.ads: Likewise.
+ 	* libgnat/s-exponr.adb: Likewise.
+ 	* libgnat/s-exponr.ads: Likewise.
+ 	* libgnat/s-expont.adb: Likewise.
+ 	* libgnat/s-expont.ads: Likewise.
+ 	* libgnat/s-exponu.adb: Likewise.
+ 	* libgnat/s-exponu.ads: Likewise.
+ 	* libgnat/s-expuns.adb: Likewise.
+ 	* libgnat/s-expuns.ads: Likewise.
+ 	* libgnat/s-fatflt.ads: Likewise.
+ 	* libgnat/s-fatgen.adb: Likewise.
+ 	* libgnat/s-fatgen.ads: Likewise.
+ 	* libgnat/s-fatlfl.ads: Likewise.
+ 	* libgnat/s-fatllf.ads: Likewise.
+ 	* libgnat/s-ficobl.ads: Likewise.
+ 	* libgnat/s-filatt.ads: Likewise.
+ 	* libgnat/s-fileio.adb: Likewise.
+ 	* libgnat/s-fileio.ads: Likewise.
+ 	* libgnat/s-finmas.adb: Likewise.
+ 	* libgnat/s-finmas.ads: Likewise.
+ 	* libgnat/s-finroo.adb: Likewise.
+ 	* libgnat/s-finroo.ads: Likewise.
+ 	* libgnat/s-flocon.adb: Likewise.
+ 	* libgnat/s-flocon.ads: Likewise.
+ 	* libgnat/s-flocon__none.adb: Likewise.
+ 	* libgnat/s-fode128.ads: Likewise.
+ 	* libgnat/s-fode32.ads: Likewise.
+ 	* libgnat/s-fode64.ads: Likewise.
+ 	* libgnat/s-fofi128.ads: Likewise.
+ 	* libgnat/s-fofi32.ads: Likewise.
+ 	* libgnat/s-fofi64.ads: Likewise.
+ 	* libgnat/s-fore_d.adb: Likewise.
+ 	* libgnat/s-fore_d.ads: Likewise.
+ 	* libgnat/s-fore_f.adb: Likewise.
+ 	* libgnat/s-fore_f.ads: Likewise.
+ 	* libgnat/s-forrea.adb: Likewise.
+ 	* libgnat/s-forrea.ads: Likewise.
+ 	* libgnat/s-gearop.adb: Likewise.
+ 	* libgnat/s-gearop.ads: Likewise.
+ 	* libgnat/s-genbig.adb: Likewise.
+ 	* libgnat/s-genbig.ads: Likewise.
+ 	* libgnat/s-geveop.adb: Likewise.
+ 	* libgnat/s-geveop.ads: Likewise.
+ 	* libgnat/s-gloloc.adb: Likewise.
+ 	* libgnat/s-gloloc.ads: Likewise.
+ 	* libgnat/s-gloloc__mingw.adb: Likewise.
+ 	* libgnat/s-htable.adb: Likewise.
+ 	* libgnat/s-htable.ads: Likewise.
+ 	* libgnat/s-imageb.adb: Likewise.
+ 	* libgnat/s-imageb.ads: Likewise.
+ 	* libgnat/s-imaged.adb: Likewise.
+ 	* libgnat/s-imaged.ads: Likewise.
+ 	* libgnat/s-imagef.adb: Likewise.
+ 	* libgnat/s-imagef.ads: Likewise.
+ 	* libgnat/s-imagei.adb: Likewise.
+ 	* libgnat/s-imagei.ads: Likewise.
+ 	* libgnat/s-imagen.adb: Likewise.
+ 	* libgnat/s-imagen.ads: Likewise.
+ 	* libgnat/s-imager.adb: Likewise.
+ 	* libgnat/s-imager.ads: Likewise.
+ 	* libgnat/s-imageu.adb: Likewise.
+ 	* libgnat/s-imageu.ads: Likewise.
+ 	* libgnat/s-imagew.adb: Likewise.
+ 	* libgnat/s-imagew.ads: Likewise.
+ 	* libgnat/s-imde128.ads: Likewise.
+ 	* libgnat/s-imde32.ads: Likewise.
+ 	* libgnat/s-imde64.ads: Likewise.
+ 	* libgnat/s-imen16.ads: Likewise.
+ 	* libgnat/s-imen32.ads: Likewise.
+ 	* libgnat/s-imenu8.ads: Likewise.
+ 	* libgnat/s-imfi128.ads: Likewise.
+ 	* libgnat/s-imfi32.ads: Likewise.
+ 	* libgnat/s-imfi64.ads: Likewise.
+ 	* libgnat/s-imgbiu.adb: Likewise.
+ 	* libgnat/s-imgbiu.ads: Likewise.
+ 	* libgnat/s-imgboo.adb: Likewise.
+ 	* libgnat/s-imgboo.ads: Likewise.
+ 	* libgnat/s-imgcha.adb: Likewise.
+ 	* libgnat/s-imgcha.ads: Likewise.
+ 	* libgnat/s-imgflt.ads: Likewise.
+ 	* libgnat/s-imgint.adb: Likewise.
+ 	* libgnat/s-imgint.ads: Likewise.
+ 	* libgnat/s-imglfl.ads: Likewise.
+ 	* libgnat/s-imgllb.adb: Likewise.
+ 	* libgnat/s-imgllb.ads: Likewise.
+ 	* libgnat/s-imgllf.ads: Likewise.
+ 	* libgnat/s-imglli.adb: Likewise.
+ 	* libgnat/s-imglli.ads: Likewise.
+ 	* libgnat/s-imglllb.ads: Likewise.
+ 	* libgnat/s-imgllli.ads: Likewise.
+ 	* libgnat/s-imglllu.ads: Likewise.
+ 	* libgnat/s-imglllw.ads: Likewise.
+ 	* libgnat/s-imgllu.adb: Likewise.
+ 	* libgnat/s-imgllu.ads: Likewise.
+ 	* libgnat/s-imgllw.adb: Likewise.
+ 	* libgnat/s-imgllw.ads: Likewise.
+ 	* libgnat/s-imgrea.adb: Likewise.
+ 	* libgnat/s-imgrea.ads: Likewise.
+ 	* libgnat/s-imguns.adb: Likewise.
+ 	* libgnat/s-imguns.ads: Likewise.
+ 	* libgnat/s-imguti.adb: Likewise.
+ 	* libgnat/s-imguti.ads: Likewise.
+ 	* libgnat/s-imgwch.adb: Likewise.
+ 	* libgnat/s-imgwch.ads: Likewise.
+ 	* libgnat/s-imgwiu.adb: Likewise.
+ 	* libgnat/s-imgwiu.ads: Likewise.
+ 	* libgnat/s-io.adb: Likewise.
+ 	* libgnat/s-io.ads: Likewise.
+ 	* libgnat/s-llflex.ads: Likewise.
+ 	* libgnat/s-maccod.ads: Likewise.
+ 	* libgnat/s-mantis.adb: Likewise.
+ 	* libgnat/s-mantis.ads: Likewise.
+ 	* libgnat/s-mastop.adb: Likewise.
+ 	* libgnat/s-mastop.ads: Likewise.
+ 	* libgnat/s-memcop.ads: Likewise.
+ 	* libgnat/s-memory.adb: Likewise.
+ 	* libgnat/s-memory.ads: Likewise.
+ 	* libgnat/s-mmap.adb: Likewise.
+ 	* libgnat/s-mmap.ads: Likewise.
+ 	* libgnat/s-mmauni__long.ads: Likewise.
+ 	* libgnat/s-mmosin__mingw.adb: Likewise.
+ 	* libgnat/s-mmosin__mingw.ads: Likewise.
+ 	* libgnat/s-mmosin__unix.adb: Likewise.
+ 	* libgnat/s-mmosin__unix.ads: Likewise.
+ 	* libgnat/s-multip.adb: Likewise.
+ 	* libgnat/s-objrea.adb: Likewise.
+ 	* libgnat/s-objrea.ads: Likewise.
+ 	* libgnat/s-optide.adb: Likewise.
+ 	* libgnat/s-os_lib.adb: Likewise.
+ 	* libgnat/s-os_lib.ads: Likewise.
+ 	* libgnat/s-osprim.ads: Likewise.
+ 	* libgnat/s-osprim__darwin.adb: Likewise.
+ 	* libgnat/s-osprim__lynxos.ads: Likewise.
+ 	* libgnat/s-osprim__mingw.adb: Likewise.
+ 	* libgnat/s-osprim__posix.adb: Likewise.
+ 	* libgnat/s-osprim__posix2008.adb: Likewise.
+ 	* libgnat/s-osprim__rtems.adb: Likewise.
+ 	* libgnat/s-osprim__solaris.adb: Likewise.
+ 	* libgnat/s-osprim__unix.adb: Likewise.
+ 	* libgnat/s-osprim__x32.adb: Likewise.
+ 	* libgnat/s-pack03.adb: Likewise.
+ 	* libgnat/s-pack03.ads: Likewise.
+ 	* libgnat/s-pack05.adb: Likewise.
+ 	* libgnat/s-pack05.ads: Likewise.
+ 	* libgnat/s-pack06.adb: Likewise.
+ 	* libgnat/s-pack06.ads: Likewise.
+ 	* libgnat/s-pack07.adb: Likewise.
+ 	* libgnat/s-pack07.ads: Likewise.
+ 	* libgnat/s-pack09.adb: Likewise.
+ 	* libgnat/s-pack09.ads: Likewise.
+ 	* libgnat/s-pack10.adb: Likewise.
+ 	* libgnat/s-pack10.ads: Likewise.
+ 	* libgnat/s-pack100.adb: Likewise.
+ 	* libgnat/s-pack100.ads: Likewise.
+ 	* libgnat/s-pack101.adb: Likewise.
+ 	* libgnat/s-pack101.ads: Likewise.
+ 	* libgnat/s-pack102.adb: Likewise.
+ 	* libgnat/s-pack102.ads: Likewise.
+ 	* libgnat/s-pack103.adb: Likewise.
+ 	* libgnat/s-pack103.ads: Likewise.
+ 	* libgnat/s-pack104.adb: Likewise.
+ 	* libgnat/s-pack104.ads: Likewise.
+ 	* libgnat/s-pack105.adb: Likewise.
+ 	* libgnat/s-pack105.ads: Likewise.
+ 	* libgnat/s-pack106.adb: Likewise.
+ 	* libgnat/s-pack106.ads: Likewise.
+ 	* libgnat/s-pack107.adb: Likewise.
+ 	* libgnat/s-pack107.ads: Likewise.
+ 	* libgnat/s-pack108.adb: Likewise.
+ 	* libgnat/s-pack108.ads: Likewise.
+ 	* libgnat/s-pack109.adb: Likewise.
+ 	* libgnat/s-pack109.ads: Likewise.
+ 	* libgnat/s-pack11.adb: Likewise.
+ 	* libgnat/s-pack11.ads: Likewise.
+ 	* libgnat/s-pack110.adb: Likewise.
+ 	* libgnat/s-pack110.ads: Likewise.
+ 	* libgnat/s-pack111.adb: Likewise.
+ 	* libgnat/s-pack111.ads: Likewise.
+ 	* libgnat/s-pack112.adb: Likewise.
+ 	* libgnat/s-pack112.ads: Likewise.
+ 	* libgnat/s-pack113.adb: Likewise.
+ 	* libgnat/s-pack113.ads: Likewise.
+ 	* libgnat/s-pack114.adb: Likewise.
+ 	* libgnat/s-pack114.ads: Likewise.
+ 	* libgnat/s-pack115.adb: Likewise.
+ 	* libgnat/s-pack115.ads: Likewise.
+ 	* libgnat/s-pack116.adb: Likewise.
+ 	* libgnat/s-pack116.ads: Likewise.
+ 	* libgnat/s-pack117.adb: Likewise.
+ 	* libgnat/s-pack117.ads: Likewise.
+ 	* libgnat/s-pack118.adb: Likewise.
+ 	* libgnat/s-pack118.ads: Likewise.
+ 	* libgnat/s-pack119.adb: Likewise.
+ 	* libgnat/s-pack119.ads: Likewise.
+ 	* libgnat/s-pack12.adb: Likewise.
+ 	* libgnat/s-pack12.ads: Likewise.
+ 	* libgnat/s-pack120.adb: Likewise.
+ 	* libgnat/s-pack120.ads: Likewise.
+ 	* libgnat/s-pack121.adb: Likewise.
+ 	* libgnat/s-pack121.ads: Likewise.
+ 	* libgnat/s-pack122.adb: Likewise.
+ 	* libgnat/s-pack122.ads: Likewise.
+ 	* libgnat/s-pack123.adb: Likewise.
+ 	* libgnat/s-pack123.ads: Likewise.
+ 	* libgnat/s-pack124.adb: Likewise.
+ 	* libgnat/s-pack124.ads: Likewise.
+ 	* libgnat/s-pack125.adb: Likewise.
+ 	* libgnat/s-pack125.ads: Likewise.
+ 	* libgnat/s-pack126.adb: Likewise.
+ 	* libgnat/s-pack126.ads: Likewise.
+ 	* libgnat/s-pack127.adb: Likewise.
+ 	* libgnat/s-pack127.ads: Likewise.
+ 	* libgnat/s-pack13.adb: Likewise.
+ 	* libgnat/s-pack13.ads: Likewise.
+ 	* libgnat/s-pack14.adb: Likewise.
+ 	* libgnat/s-pack14.ads: Likewise.
+ 	* libgnat/s-pack15.adb: Likewise.
+ 	* libgnat/s-pack15.ads: Likewise.
+ 	* libgnat/s-pack17.adb: Likewise.
+ 	* libgnat/s-pack17.ads: Likewise.
+ 	* libgnat/s-pack18.adb: Likewise.
+ 	* libgnat/s-pack18.ads: Likewise.
+ 	* libgnat/s-pack19.adb: Likewise.
+ 	* libgnat/s-pack19.ads: Likewise.
+ 	* libgnat/s-pack20.adb: Likewise.
+ 	* libgnat/s-pack20.ads: Likewise.
+ 	* libgnat/s-pack21.adb: Likewise.
+ 	* libgnat/s-pack21.ads: Likewise.
+ 	* libgnat/s-pack22.adb: Likewise.
+ 	* libgnat/s-pack22.ads: Likewise.
+ 	* libgnat/s-pack23.adb: Likewise.
+ 	* libgnat/s-pack23.ads: Likewise.
+ 	* libgnat/s-pack24.adb: Likewise.
+ 	* libgnat/s-pack24.ads: Likewise.
+ 	* libgnat/s-pack25.adb: Likewise.
+ 	* libgnat/s-pack25.ads: Likewise.
+ 	* libgnat/s-pack26.adb: Likewise.
+ 	* libgnat/s-pack26.ads: Likewise.
+ 	* libgnat/s-pack27.adb: Likewise.
+ 	* libgnat/s-pack27.ads: Likewise.
+ 	* libgnat/s-pack28.adb: Likewise.
+ 	* libgnat/s-pack28.ads: Likewise.
+ 	* libgnat/s-pack29.adb: Likewise.
+ 	* libgnat/s-pack29.ads: Likewise.
+ 	* libgnat/s-pack30.adb: Likewise.
+ 	* libgnat/s-pack30.ads: Likewise.
+ 	* libgnat/s-pack31.adb: Likewise.
+ 	* libgnat/s-pack31.ads: Likewise.
+ 	* libgnat/s-pack33.adb: Likewise.
+ 	* libgnat/s-pack33.ads: Likewise.
+ 	* libgnat/s-pack34.adb: Likewise.
+ 	* libgnat/s-pack34.ads: Likewise.
+ 	* libgnat/s-pack35.adb: Likewise.
+ 	* libgnat/s-pack35.ads: Likewise.
+ 	* libgnat/s-pack36.adb: Likewise.
+ 	* libgnat/s-pack36.ads: Likewise.
+ 	* libgnat/s-pack37.adb: Likewise.
+ 	* libgnat/s-pack37.ads: Likewise.
+ 	* libgnat/s-pack38.adb: Likewise.
+ 	* libgnat/s-pack38.ads: Likewise.
+ 	* libgnat/s-pack39.adb: Likewise.
+ 	* libgnat/s-pack39.ads: Likewise.
+ 	* libgnat/s-pack40.adb: Likewise.
+ 	* libgnat/s-pack40.ads: Likewise.
+ 	* libgnat/s-pack41.adb: Likewise.
+ 	* libgnat/s-pack41.ads: Likewise.
+ 	* libgnat/s-pack42.adb: Likewise.
+ 	* libgnat/s-pack42.ads: Likewise.
+ 	* libgnat/s-pack43.adb: Likewise.
+ 	* libgnat/s-pack43.ads: Likewise.
+ 	* libgnat/s-pack44.adb: Likewise.
+ 	* libgnat/s-pack44.ads: Likewise.
+ 	* libgnat/s-pack45.adb: Likewise.
+ 	* libgnat/s-pack45.ads: Likewise.
+ 	* libgnat/s-pack46.adb: Likewise.
+ 	* libgnat/s-pack46.ads: Likewise.
+ 	* libgnat/s-pack47.adb: Likewise.
+ 	* libgnat/s-pack47.ads: Likewise.
+ 	* libgnat/s-pack48.adb: Likewise.
+ 	* libgnat/s-pack48.ads: Likewise.
+ 	* libgnat/s-pack49.adb: Likewise.
+ 	* libgnat/s-pack49.ads: Likewise.
+ 	* libgnat/s-pack50.adb: Likewise.
+ 	* libgnat/s-pack50.ads: Likewise.
+ 	* libgnat/s-pack51.adb: Likewise.
+ 	* libgnat/s-pack51.ads: Likewise.
+ 	* libgnat/s-pack52.adb: Likewise.
+ 	* libgnat/s-pack52.ads: Likewise.
+ 	* libgnat/s-pack53.adb: Likewise.
+ 	* libgnat/s-pack53.ads: Likewise.
+ 	* libgnat/s-pack54.adb: Likewise.
+ 	* libgnat/s-pack54.ads: Likewise.
+ 	* libgnat/s-pack55.adb: Likewise.
+ 	* libgnat/s-pack55.ads: Likewise.
+ 	* libgnat/s-pack56.adb: Likewise.
+ 	* libgnat/s-pack56.ads: Likewise.
+ 	* libgnat/s-pack57.adb: Likewise.
+ 	* libgnat/s-pack57.ads: Likewise.
+ 	* libgnat/s-pack58.adb: Likewise.
+ 	* libgnat/s-pack58.ads: Likewise.
+ 	* libgnat/s-pack59.adb: Likewise.
+ 	* libgnat/s-pack59.ads: Likewise.
+ 	* libgnat/s-pack60.adb: Likewise.
+ 	* libgnat/s-pack60.ads: Likewise.
+ 	* libgnat/s-pack61.adb: Likewise.
+ 	* libgnat/s-pack61.ads: Likewise.
+ 	* libgnat/s-pack62.adb: Likewise.
+ 	* libgnat/s-pack62.ads: Likewise.
+ 	* libgnat/s-pack63.adb: Likewise.
+ 	* libgnat/s-pack63.ads: Likewise.
+ 	* libgnat/s-pack65.adb: Likewise.
+ 	* libgnat/s-pack65.ads: Likewise.
+ 	* libgnat/s-pack66.adb: Likewise.
+ 	* libgnat/s-pack66.ads: Likewise.
+ 	* libgnat/s-pack67.adb: Likewise.
+ 	* libgnat/s-pack67.ads: Likewise.
+ 	* libgnat/s-pack68.adb: Likewise.
+ 	* libgnat/s-pack68.ads: Likewise.
+ 	* libgnat/s-pack69.adb: Likewise.
+ 	* libgnat/s-pack69.ads: Likewise.
+ 	* libgnat/s-pack70.adb: Likewise.
+ 	* libgnat/s-pack70.ads: Likewise.
+ 	* libgnat/s-pack71.adb: Likewise.
+ 	* libgnat/s-pack71.ads: Likewise.
+ 	* libgnat/s-pack72.adb: Likewise.
+ 	* libgnat/s-pack72.ads: Likewise.
+ 	* libgnat/s-pack73.adb: Likewise.
+ 	* libgnat/s-pack73.ads: Likewise.
+ 	* libgnat/s-pack74.adb: Likewise.
+ 	* libgnat/s-pack74.ads: Likewise.
+ 	* libgnat/s-pack75.adb: Likewise.
+ 	* libgnat/s-pack75.ads: Likewise.
+ 	* libgnat/s-pack76.adb: Likewise.
+ 	* libgnat/s-pack76.ads: Likewise.
+ 	* libgnat/s-pack77.adb: Likewise.
+ 	* libgnat/s-pack77.ads: Likewise.
+ 	* libgnat/s-pack78.adb: Likewise.
+ 	* libgnat/s-pack78.ads: Likewise.
+ 	* libgnat/s-pack79.adb: Likewise.
+ 	* libgnat/s-pack79.ads: Likewise.
+ 	* libgnat/s-pack80.adb: Likewise.
+ 	* libgnat/s-pack80.ads: Likewise.
+ 	* libgnat/s-pack81.adb: Likewise.
+ 	* libgnat/s-pack81.ads: Likewise.
+ 	* libgnat/s-pack82.adb: Likewise.
+ 	* libgnat/s-pack82.ads: Likewise.
+ 	* libgnat/s-pack83.adb: Likewise.
+ 	* libgnat/s-pack83.ads: Likewise.
+ 	* libgnat/s-pack84.adb: Likewise.
+ 	* libgnat/s-pack84.ads: Likewise.
+ 	* libgnat/s-pack85.adb: Likewise.
+ 	* libgnat/s-pack85.ads: Likewise.
+ 	* libgnat/s-pack86.adb: Likewise.
+ 	* libgnat/s-pack86.ads: Likewise.
+ 	* libgnat/s-pack87.adb: Likewise.
+ 	* libgnat/s-pack87.ads: Likewise.
+ 	* libgnat/s-pack88.adb: Likewise.
+ 	* libgnat/s-pack88.ads: Likewise.
+ 	* libgnat/s-pack89.adb: Likewise.
+ 	* libgnat/s-pack89.ads: Likewise.
+ 	* libgnat/s-pack90.adb: Likewise.
+ 	* libgnat/s-pack90.ads: Likewise.
+ 	* libgnat/s-pack91.adb: Likewise.
+ 	* libgnat/s-pack91.ads: Likewise.
+ 	* libgnat/s-pack92.adb: Likewise.
+ 	* libgnat/s-pack92.ads: Likewise.
+ 	* libgnat/s-pack93.adb: Likewise.
+ 	* libgnat/s-pack93.ads: Likewise.
+ 	* libgnat/s-pack94.adb: Likewise.
+ 	* libgnat/s-pack94.ads: Likewise.
+ 	* libgnat/s-pack95.adb: Likewise.
+ 	* libgnat/s-pack95.ads: Likewise.
+ 	* libgnat/s-pack96.adb: Likewise.
+ 	* libgnat/s-pack96.ads: Likewise.
+ 	* libgnat/s-pack97.adb: Likewise.
+ 	* libgnat/s-pack97.ads: Likewise.
+ 	* libgnat/s-pack98.adb: Likewise.
+ 	* libgnat/s-pack98.ads: Likewise.
+ 	* libgnat/s-pack99.adb: Likewise.
+ 	* libgnat/s-pack99.ads: Likewise.
+ 	* libgnat/s-parame.adb: Likewise.
+ 	* libgnat/s-parame.ads: Likewise.
+ 	* libgnat/s-parame__hpux.ads: Likewise.
+ 	* libgnat/s-parame__posix2008.ads: Likewise.
+ 	* libgnat/s-parame__rtems.adb: Likewise.
+ 	* libgnat/s-parame__vxworks.adb: Likewise.
+ 	* libgnat/s-parame__vxworks.ads: Likewise.
+ 	* libgnat/s-parint.adb: Likewise.
+ 	* libgnat/s-parint.ads: Likewise.
+ 	* libgnat/s-pehage.adb: Likewise.
+ 	* libgnat/s-pehage.ads: Likewise.
+ 	* libgnat/s-pooglo.adb: Likewise.
+ 	* libgnat/s-pooglo.ads: Likewise.
+ 	* libgnat/s-pooloc.adb: Likewise.
+ 	* libgnat/s-pooloc.ads: Likewise.
+ 	* libgnat/s-poosiz.adb: Likewise.
+ 	* libgnat/s-poosiz.ads: Likewise.
+ 	* libgnat/s-powflt.ads: Likewise.
+ 	* libgnat/s-powlfl.ads: Likewise.
+ 	* libgnat/s-powllf.ads: Likewise.
+ 	* libgnat/s-purexc.ads: Likewise.
+ 	* libgnat/s-putima.adb: Likewise.
+ 	* libgnat/s-putima.ads: Likewise.
+ 	* libgnat/s-rannum.adb: Likewise.
+ 	* libgnat/s-rannum.ads: Likewise.
+ 	* libgnat/s-ransee.adb: Likewise.
+ 	* libgnat/s-ransee.ads: Likewise.
+ 	* libgnat/s-regexp.adb: Likewise.
+ 	* libgnat/s-regexp.ads: Likewise.
+ 	* libgnat/s-regpat.adb: Likewise.
+ 	* libgnat/s-regpat.ads: Likewise.
+ 	* libgnat/s-resfil.adb: Likewise.
+ 	* libgnat/s-resfil.ads: Likewise.
+ 	* libgnat/s-restri.adb: Likewise.
+ 	* libgnat/s-restri.ads: Likewise.
+ 	* libgnat/s-rident.ads: Likewise.
+ 	* libgnat/s-rpc.adb: Likewise.
+ 	* libgnat/s-rpc.ads: Likewise.
+ 	* libgnat/s-scaval.adb: Likewise.
+ 	* libgnat/s-scaval.ads: Likewise.
+ 	* libgnat/s-scaval__128.adb: Likewise.
+ 	* libgnat/s-scaval__128.ads: Likewise.
+ 	* libgnat/s-secsta.adb: Likewise.
+ 	* libgnat/s-secsta.ads: Likewise.
+ 	* libgnat/s-sequio.adb: Likewise.
+ 	* libgnat/s-sequio.ads: Likewise.
+ 	* libgnat/s-shabig.ads: Likewise.
+ 	* libgnat/s-shasto.adb: Likewise.
+ 	* libgnat/s-shasto.ads: Likewise.
+ 	* libgnat/s-soflin.adb: Likewise.
+ 	* libgnat/s-soflin.ads: Likewise.
+ 	* libgnat/s-soliin.adb: Likewise.
+ 	* libgnat/s-soliin.ads: Likewise.
+ 	* libgnat/s-spsufi.adb: Likewise.
+ 	* libgnat/s-spsufi.ads: Likewise.
+ 	* libgnat/s-stache.adb: Likewise.
+ 	* libgnat/s-stache.ads: Likewise.
+ 	* libgnat/s-stalib.adb: Likewise.
+ 	* libgnat/s-stalib.ads: Likewise.
+ 	* libgnat/s-statxd.adb: Likewise.
+ 	* libgnat/s-statxd.ads: Likewise.
+ 	* libgnat/s-stausa.adb: Likewise.
+ 	* libgnat/s-stausa.ads: Likewise.
+ 	* libgnat/s-stchop.adb: Likewise.
+ 	* libgnat/s-stchop.ads: Likewise.
+ 	* libgnat/s-stchop__limit.ads: Likewise.
+ 	* libgnat/s-stchop__vxworks.adb: Likewise.
+ 	* libgnat/s-stoele.adb: Likewise.
+ 	* libgnat/s-stoele.ads: Likewise.
+ 	* libgnat/s-stopoo.adb: Likewise.
+ 	* libgnat/s-stopoo.ads: Likewise.
+ 	* libgnat/s-stposu.adb: Likewise.
+ 	* libgnat/s-stposu.ads: Likewise.
+ 	* libgnat/s-stratt.adb: Likewise.
+ 	* libgnat/s-stratt.ads: Likewise.
+ 	* libgnat/s-strcom.adb: Likewise.
+ 	* libgnat/s-strcom.ads: Likewise.
+ 	* libgnat/s-strhas.adb: Likewise.
+ 	* libgnat/s-strhas.ads: Likewise.
+ 	* libgnat/s-string.adb: Likewise.
+ 	* libgnat/s-string.ads: Likewise.
+ 	* libgnat/s-ststop.adb: Likewise.
+ 	* libgnat/s-ststop.ads: Likewise.
+ 	* libgnat/s-tasloc.adb: Likewise.
+ 	* libgnat/s-tasloc.ads: Likewise.
+ 	* libgnat/s-traceb.adb: Likewise.
+ 	* libgnat/s-traceb.ads: Likewise.
+ 	* libgnat/s-traceb__hpux.adb: Likewise.
+ 	* libgnat/s-traceb__mastop.adb: Likewise.
+ 	* libgnat/s-traent.adb: Likewise.
+ 	* libgnat/s-traent.ads: Likewise.
+ 	* libgnat/s-trasym.adb: Likewise.
+ 	* libgnat/s-trasym.ads: Likewise.
+ 	* libgnat/s-trasym__dwarf.adb: Likewise.
+ 	* libgnat/s-tsmona.adb: Likewise.
+ 	* libgnat/s-tsmona__linux.adb: Likewise.
+ 	* libgnat/s-tsmona__mingw.adb: Likewise.
+ 	* libgnat/s-unstyp.ads: Likewise.
+ 	* libgnat/s-utf_32.adb: Likewise.
+ 	* libgnat/s-utf_32.ads: Likewise.
+ 	* libgnat/s-vade128.ads: Likewise.
+ 	* libgnat/s-vade32.ads: Likewise.
+ 	* libgnat/s-vade64.ads: Likewise.
+ 	* libgnat/s-vaen16.ads: Likewise.
+ 	* libgnat/s-vaen32.ads: Likewise.
+ 	* libgnat/s-vaenu8.ads: Likewise.
+ 	* libgnat/s-vafi128.ads: Likewise.
+ 	* libgnat/s-vafi32.ads: Likewise.
+ 	* libgnat/s-vafi64.ads: Likewise.
+ 	* libgnat/s-valboo.adb: Likewise.
+ 	* libgnat/s-valboo.ads: Likewise.
+ 	* libgnat/s-valcha.adb: Likewise.
+ 	* libgnat/s-valcha.ads: Likewise.
+ 	* libgnat/s-valflt.ads: Likewise.
+ 	* libgnat/s-valint.adb: Likewise.
+ 	* libgnat/s-valint.ads: Likewise.
+ 	* libgnat/s-vallfl.ads: Likewise.
+ 	* libgnat/s-valllf.ads: Likewise.
+ 	* libgnat/s-vallli.adb: Likewise.
+ 	* libgnat/s-vallli.ads: Likewise.
+ 	* libgnat/s-valllli.ads: Likewise.
+ 	* libgnat/s-vallllu.ads: Likewise.
+ 	* libgnat/s-valllu.adb: Likewise.
+ 	* libgnat/s-valllu.ads: Likewise.
+ 	* libgnat/s-valrea.adb: Likewise.
+ 	* libgnat/s-valrea.ads: Likewise.
+ 	* libgnat/s-valued.adb: Likewise.
+ 	* libgnat/s-valued.ads: Likewise.
+ 	* libgnat/s-valuef.adb: Likewise.
+ 	* libgnat/s-valuef.ads: Likewise.
+ 	* libgnat/s-valuei.adb: Likewise.
+ 	* libgnat/s-valuei.ads: Likewise.
+ 	* libgnat/s-valuen.adb: Likewise.
+ 	* libgnat/s-valuen.ads: Likewise.
+ 	* libgnat/s-valuer.adb: Likewise.
+ 	* libgnat/s-valuer.ads: Likewise.
+ 	* libgnat/s-valueu.adb: Likewise.
+ 	* libgnat/s-valueu.ads: Likewise.
+ 	* libgnat/s-valuns.adb: Likewise.
+ 	* libgnat/s-valuns.ads: Likewise.
+ 	* libgnat/s-valuti.adb: Likewise.
+ 	* libgnat/s-valuti.ads: Likewise.
+ 	* libgnat/s-valwch.adb: Likewise.
+ 	* libgnat/s-valwch.ads: Likewise.
+ 	* libgnat/s-veboop.adb: Likewise.
+ 	* libgnat/s-veboop.ads: Likewise.
+ 	* libgnat/s-vector.ads: Likewise.
+ 	* libgnat/s-vercon.adb: Likewise.
+ 	* libgnat/s-vercon.ads: Likewise.
+ 	* libgnat/s-wchcnv.adb: Likewise.
+ 	* libgnat/s-wchcnv.ads: Likewise.
+ 	* libgnat/s-wchcon.adb: Likewise.
+ 	* libgnat/s-wchcon.ads: Likewise.
+ 	* libgnat/s-wchjis.adb: Likewise.
+ 	* libgnat/s-wchjis.ads: Likewise.
+ 	* libgnat/s-wchstw.adb: Likewise.
+ 	* libgnat/s-wchstw.ads: Likewise.
+ 	* libgnat/s-wchwts.adb: Likewise.
+ 	* libgnat/s-wchwts.ads: Likewise.
+ 	* libgnat/s-widboo.adb: Likewise.
+ 	* libgnat/s-widboo.ads: Likewise.
+ 	* libgnat/s-widcha.adb: Likewise.
+ 	* libgnat/s-widcha.ads: Likewise.
+ 	* libgnat/s-widenu.adb: Likewise.
+ 	* libgnat/s-widenu.ads: Likewise.
+ 	* libgnat/s-widint.ads: Likewise.
+ 	* libgnat/s-widlli.adb: Likewise.
+ 	* libgnat/s-widlli.ads: Likewise.
+ 	* libgnat/s-widllli.ads: Likewise.
+ 	* libgnat/s-widlllu.ads: Likewise.
+ 	* libgnat/s-widllu.adb: Likewise.
+ 	* libgnat/s-widllu.ads: Likewise.
+ 	* libgnat/s-widthi.adb: Likewise.
+ 	* libgnat/s-widthi.ads: Likewise.
+ 	* libgnat/s-widthu.adb: Likewise.
+ 	* libgnat/s-widthu.ads: Likewise.
+ 	* libgnat/s-widuns.ads: Likewise.
+ 	* libgnat/s-widwch.adb: Likewise.
+ 	* libgnat/s-widwch.ads: Likewise.
+ 	* libgnat/s-win32.ads: Likewise.
+ 	* libgnat/s-winext.ads: Likewise.
+ 	* libgnat/s-wwdcha.adb: Likewise.
+ 	* libgnat/s-wwdcha.ads: Likewise.
+ 	* libgnat/s-wwdenu.adb: Likewise.
+ 	* libgnat/s-wwdenu.ads: Likewise.
+ 	* libgnat/s-wwdwch.adb: Likewise.
+ 	* libgnat/s-wwdwch.ads: Likewise.
+ 	* libgnat/system-aix.ads: Likewise.
+ 	* libgnat/system-darwin-arm.ads: Likewise.
+ 	* libgnat/system-darwin-ppc.ads: Likewise.
+ 	* libgnat/system-darwin-x86.ads: Likewise.
+ 	* libgnat/system-djgpp.ads: Likewise.
+ 	* libgnat/system-dragonfly-x86_64.ads: Likewise.
+ 	* libgnat/system-freebsd.ads: Likewise.
+ 	* libgnat/system-hpux-ia64.ads: Likewise.
+ 	* libgnat/system-hpux.ads: Likewise.
+ 	* libgnat/system-linux-alpha.ads: Likewise.
+ 	* libgnat/system-linux-arm.ads: Likewise.
+ 	* libgnat/system-linux-hppa.ads: Likewise.
+ 	* libgnat/system-linux-ia64.ads: Likewise.
+ 	* libgnat/system-linux-m68k.ads: Likewise.
+ 	* libgnat/system-linux-mips.ads: Likewise.
+ 	* libgnat/system-linux-ppc.ads: Likewise.
+ 	* libgnat/system-linux-riscv.ads: Likewise.
+ 	* libgnat/system-linux-s390.ads: Likewise.
+ 	* libgnat/system-linux-sh4.ads: Likewise.
+ 	* libgnat/system-linux-sparc.ads: Likewise.
+ 	* libgnat/system-linux-x86.ads: Likewise.
+ 	* libgnat/system-lynxos178-ppc.ads: Likewise.
+ 	* libgnat/system-lynxos178-x86.ads: Likewise.
+ 	* libgnat/system-mingw.ads: Likewise.
+ 	* libgnat/system-qnx-aarch64.ads: Likewise.
+ 	* libgnat/system-rtems.ads: Likewise.
+ 	* libgnat/system-solaris-sparc.ads: Likewise.
+ 	* libgnat/system-solaris-x86.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-arm.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-aarch64.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-arm.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-e500-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86-rtp.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-kernel.ads: Likewise.
+ 	* libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
+ 	* link.c: Likewise.
+ 	* live.adb: Likewise.
+ 	* live.ads: Likewise.
+ 	* locales.c: Likewise.
+ 	* make.adb: Likewise.
+ 	* make.ads: Likewise.
+ 	* make_util.adb: Likewise.
+ 	* make_util.ads: Likewise.
+ 	* makeusg.adb: Likewise.
+ 	* makeusg.ads: Likewise.
+ 	* mdll-fil.adb: Likewise.
+ 	* mdll-fil.ads: Likewise.
+ 	* mdll-utl.adb: Likewise.
+ 	* mdll-utl.ads: Likewise.
+ 	* mdll.adb: Likewise.
+ 	* mdll.ads: Likewise.
+ 	* mingw32.h: Likewise.
+ 	* mkdir.c: Likewise.
+ 	* namet-sp.adb: Likewise.
+ 	* namet-sp.ads: Likewise.
+ 	* namet.adb: Likewise.
+ 	* namet.ads: Likewise.
+ 	* namet.h: Likewise.
+ 	* nlists.adb: Likewise.
+ 	* nlists.ads: Likewise.
+ 	* nlists.h: Likewise.
+ 	* opt.adb: Likewise.
+ 	* opt.ads: Likewise.
+ 	* osint-b.adb: Likewise.
+ 	* osint-b.ads: Likewise.
+ 	* osint-c.adb: Likewise.
+ 	* osint-c.ads: Likewise.
+ 	* osint-l.adb: Likewise.
+ 	* osint-l.ads: Likewise.
+ 	* osint-m.adb: Likewise.
+ 	* osint-m.ads: Likewise.
+ 	* osint.adb: Likewise.
+ 	* osint.ads: Likewise.
+ 	* output.adb: Likewise.
+ 	* output.ads: Likewise.
+ 	* par-ch10.adb: Likewise.
+ 	* par-ch11.adb: Likewise.
+ 	* par-ch12.adb: Likewise.
+ 	* par-ch13.adb: Likewise.
+ 	* par-ch2.adb: Likewise.
+ 	* par-ch3.adb: Likewise.
+ 	* par-ch4.adb: Likewise.
+ 	* par-ch5.adb: Likewise.
+ 	* par-ch6.adb: Likewise.
+ 	* par-ch7.adb: Likewise.
+ 	* par-ch8.adb: Likewise.
+ 	* par-ch9.adb: Likewise.
+ 	* par-endh.adb: Likewise.
+ 	* par-labl.adb: Likewise.
+ 	* par-load.adb: Likewise.
+ 	* par-prag.adb: Likewise.
+ 	* par-sync.adb: Likewise.
+ 	* par-tchk.adb: Likewise.
+ 	* par-util.adb: Likewise.
+ 	* par.adb: Likewise.
+ 	* par.ads: Likewise.
+ 	* par_sco.adb: Likewise.
+ 	* par_sco.ads: Likewise.
+ 	* pprint.adb: Likewise.
+ 	* pprint.ads: Likewise.
+ 	* prep.adb: Likewise.
+ 	* prep.ads: Likewise.
+ 	* prepcomp.adb: Likewise.
+ 	* prepcomp.ads: Likewise.
+ 	* put_scos.adb: Likewise.
+ 	* put_scos.ads: Likewise.
+ 	* raise-gcc.c: Likewise.
+ 	* raise.c: Likewise.
+ 	* raise.h: Likewise.
+ 	* repinfo-input.adb: Likewise.
+ 	* repinfo-input.ads: Likewise.
+ 	* repinfo.adb: Likewise.
+ 	* repinfo.ads: Likewise.
+ 	* repinfo.h: Likewise.
+ 	* restrict.adb: Likewise.
+ 	* restrict.ads: Likewise.
+ 	* rident.ads: Likewise.
+ 	* rtfinal.c: Likewise.
+ 	* rtinit.c: Likewise.
+ 	* rtsfind.adb: Likewise.
+ 	* rtsfind.ads: Likewise.
+ 	* runtime.h: Likewise.
+ 	* s-oscons-tmplt.c: Likewise.
+ 	* sa_messages.adb: Likewise.
+ 	* sa_messages.ads: Likewise.
+ 	* scans.adb: Likewise.
+ 	* scans.ads: Likewise.
+ 	* scil_ll.adb: Likewise.
+ 	* scil_ll.ads: Likewise.
+ 	* scn.adb: Likewise.
+ 	* scn.ads: Likewise.
+ 	* scng.adb: Likewise.
+ 	* scng.ads: Likewise.
+ 	* scos.adb: Likewise.
+ 	* scos.ads: Likewise.
+ 	* scos.h: Likewise.
+ 	* sdefault.ads: Likewise.
+ 	* seh_init.c: Likewise.
+ 	* sem.adb: Likewise.
+ 	* sem.ads: Likewise.
+ 	* sem_aggr.adb: Likewise.
+ 	* sem_aggr.ads: Likewise.
+ 	* sem_attr.adb: Likewise.
+ 	* sem_attr.ads: Likewise.
+ 	* sem_aux.adb: Likewise.
+ 	* sem_aux.ads: Likewise.
+ 	* sem_case.adb: Likewise.
+ 	* sem_case.ads: Likewise.
+ 	* sem_cat.adb: Likewise.
+ 	* sem_cat.ads: Likewise.
+ 	* sem_ch10.adb: Likewise.
+ 	* sem_ch10.ads: Likewise.
+ 	* sem_ch11.adb: Likewise.
+ 	* sem_ch11.ads: Likewise.
+ 	* sem_ch12.adb: Likewise.
+ 	* sem_ch12.ads: Likewise.
+ 	* sem_ch13.adb: Likewise.
+ 	* sem_ch13.ads: Likewise.
+ 	* sem_ch2.adb: Likewise.
+ 	* sem_ch2.ads: Likewise.
+ 	* sem_ch3.adb: Likewise.
+ 	* sem_ch3.ads: Likewise.
+ 	* sem_ch4.adb: Likewise.
+ 	* sem_ch4.ads: Likewise.
+ 	* sem_ch5.adb: Likewise.
+ 	* sem_ch5.ads: Likewise.
+ 	* sem_ch6.adb: Likewise.
+ 	* sem_ch6.ads: Likewise.
+ 	* sem_ch7.adb: Likewise.
+ 	* sem_ch7.ads: Likewise.
+ 	* sem_ch8.adb: Likewise.
+ 	* sem_ch8.ads: Likewise.
+ 	* sem_ch9.adb: Likewise.
+ 	* sem_ch9.ads: Likewise.
+ 	* sem_dim.adb: Likewise.
+ 	* sem_dim.ads: Likewise.
+ 	* sem_disp.adb: Likewise.
+ 	* sem_disp.ads: Likewise.
+ 	* sem_dist.adb: Likewise.
+ 	* sem_dist.ads: Likewise.
+ 	* sem_elab.adb: Likewise.
+ 	* sem_elab.ads: Likewise.
+ 	* sem_elim.adb: Likewise.
+ 	* sem_elim.ads: Likewise.
+ 	* sem_eval.adb: Likewise.
+ 	* sem_eval.ads: Likewise.
+ 	* sem_intr.adb: Likewise.
+ 	* sem_intr.ads: Likewise.
+ 	* sem_mech.adb: Likewise.
+ 	* sem_mech.ads: Likewise.
+ 	* sem_prag.adb: Likewise.
+ 	* sem_prag.ads: Likewise.
+ 	* sem_res.adb: Likewise.
+ 	* sem_res.ads: Likewise.
+ 	* sem_scil.adb: Likewise.
+ 	* sem_scil.ads: Likewise.
+ 	* sem_smem.adb: Likewise.
+ 	* sem_smem.ads: Likewise.
+ 	* sem_type.adb: Likewise.
+ 	* sem_type.ads: Likewise.
+ 	* sem_util.adb: Likewise.
+ 	* sem_util.ads: Likewise.
+ 	* sem_warn.adb: Likewise.
+ 	* sem_warn.ads: Likewise.
+ 	* set_targ.adb: Likewise.
+ 	* set_targ.ads: Likewise.
+ 	* sfn_scan.adb: Likewise.
+ 	* sfn_scan.ads: Likewise.
+ 	* sigtramp-armdroid.c: Likewise.
+ 	* sigtramp-ios.c: Likewise.
+ 	* sigtramp-qnx.c: Likewise.
+ 	* sigtramp-vxworks-target.h: Likewise.
+ 	* sigtramp-vxworks.c: Likewise.
+ 	* sigtramp.h: Likewise.
+ 	* sinfo-cn.adb: Likewise.
+ 	* sinfo-cn.ads: Likewise.
+ 	* sinfo-utils.adb: Likewise.
+ 	* sinfo-utils.ads: Likewise.
+ 	* sinfo.adb: Likewise.
+ 	* sinfo.ads: Likewise.
+ 	* sinput-c.adb: Likewise.
+ 	* sinput-c.ads: Likewise.
+ 	* sinput-d.adb: Likewise.
+ 	* sinput-d.ads: Likewise.
+ 	* sinput-l.adb: Likewise.
+ 	* sinput-l.ads: Likewise.
+ 	* sinput.adb: Likewise.
+ 	* sinput.ads: Likewise.
+ 	* socket.c: Likewise.
+ 	* spark_xrefs.adb: Likewise.
+ 	* spark_xrefs.ads: Likewise.
+ 	* sprint.adb: Likewise.
+ 	* sprint.ads: Likewise.
+ 	* stand.ads: Likewise.
+ 	* stringt.adb: Likewise.
+ 	* stringt.ads: Likewise.
+ 	* stringt.h: Likewise.
+ 	* strub.adb: Likewise.
+ 	* strub.ads: Likewise.
+ 	* style.adb: Likewise.
+ 	* style.ads: Likewise.
+ 	* styleg.adb: Likewise.
+ 	* styleg.ads: Likewise.
+ 	* stylesw.adb: Likewise.
+ 	* stylesw.ads: Likewise.
+ 	* switch-b.adb: Likewise.
+ 	* switch-b.ads: Likewise.
+ 	* switch-c.adb: Likewise.
+ 	* switch-c.ads: Likewise.
+ 	* switch-m.adb: Likewise.
+ 	* switch-m.ads: Likewise.
+ 	* switch.adb: Likewise.
+ 	* switch.ads: Likewise.
+ 	* sysdep.c: Likewise.
+ 	* table.adb: Likewise.
+ 	* table.ads: Likewise.
+ 	* targext.c: Likewise.
+ 	* targparm.adb: Likewise.
+ 	* targparm.ads: Likewise.
+ 	* tbuild.adb: Likewise.
+ 	* tbuild.ads: Likewise.
+ 	* tempdir.adb: Likewise.
+ 	* tempdir.ads: Likewise.
+ 	* terminals.c: Likewise.
+ 	* tracebak.c: Likewise.
+ 	* treepr.adb: Likewise.
+ 	* treepr.ads: Likewise.
+ 	* ttypes.ads: Likewise.
+ 	* types.adb: Likewise.
+ 	* types.ads: Likewise.
+ 	* types.h: Likewise.
+ 	* uintp.adb: Likewise.
+ 	* uintp.ads: Likewise.
+ 	* uintp.h: Likewise.
+ 	* uname.adb: Likewise.
+ 	* uname.ads: Likewise.
+ 	* urealp.adb: Likewise.
+ 	* urealp.ads: Likewise.
+ 	* urealp.h: Likewise.
+ 	* usage.adb: Likewise.
+ 	* usage.ads: Likewise.
+ 	* validsw.adb: Likewise.
+ 	* validsw.ads: Likewise.
+ 	* vast.adb: Likewise.
+ 	* vast.ads: Likewise.
+ 	* warnsw.adb: Likewise.
+ 	* warnsw.ads: Likewise.
+ 	* widechar.adb: Likewise.
+ 	* widechar.ads: Likewise.
+ 	* xoscons.adb: Likewise.
+ 	* xr_tabls.adb: Likewise.
+ 	* xr_tabls.ads: Likewise.
+ 	* xref_lib.adb: Likewise.
+ 	* xref_lib.ads: Likewise.
+ 	* xsnamest.adb: Likewise.
+ 	* xutil.adb: Likewise.
+ 	* xutil.ads: Likewise.
+ 
+ 2022-01-11  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* debug.adb: Add documentation for new -gnatd_u and old -gnatd_R
+ 	flags used for GNAT LLVM and its CCG.
+ 
+ 2022-01-11  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* Makefile.rtl (X86_TARGET_PAIRS): Use __builtin variant of
+ 	System.Atomic_Counters.
+ 	* libgnat/s-atocou__x86.adb: Remove.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (Identifier_to_gnu): Use correct subtype.
+ 	(elaborate_profile): New function.
+ 	(Call_to_gnu): Call it on the formals and the result type before
+ 	retrieving the translated result type from the subprogram type.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Type>: Fix
+ 	computation of boolean result in the unchecked union case.
+ 	(components_to_record): Rename MAYBE_UNUSED parameter to IN_VARIANT
+ 	and remove local variable of the same name.  Pass NULL recursively
+ 	as P_GNU_REP_LIST for nested variants in the unchecked union case.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* gcc-interface/trans.c (lvalue_required_p) <N_Pragma>: New case.
+ 	<N_Pragma_Argument_Association>: Likewise.
+ 	(Pragma_to_gnu) <Pragma_Inspection_Point>: Fetch the corresponding
+ 	variable of a constant before marking it as addressable.
+ 
+ 2022-01-10  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* gcc-interface/Make-lang.in (ADA_GENERATED_FILES): Remove
+ 	s-casuti.ad?, s-crtl.ad?, s-os_lib.ad?.  Update list of object
+ 	files accordingly.
+ 
+ 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/s-atopri.ads (Atomic_Compare_Exchange): Replaces
+ 	deprecated Sync_Compare_And_Swap.
+ 	* libgnat/s-atopri.adb (Lock_Free_Try_Write): Switch from __sync
+ 	to __atomic builtins.
+ 
+ 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/s-exponn.adb, libgnat/s-expont.adb,
+ 	libgnat/s-exponu.adb, libgnat/s-widthi.adb,
+ 	libgnat/s-widthu.adb: Remove CodePeer annotations for pragma
+ 	Loop_Variant.
+ 
+ 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_prag.adb (Expand_Pragma_Loop_Variant): Disable expansion
+ 	in CodePeer mode.
+ 
+ 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (Is_Child_Or_Sibling): Fix typo in comment.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_pakd.adb (Install_PAT): If the PAT is a scalar type, apply
+ 	the canonical adjustment to its alignment.
+ 
+ 2022-01-10  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* libgnat/s-atocou__builtin.adb (Decrement, Increment): Switch
+ 	from __sync to __atomic builtins; use 'Address to be consistent
+ 	with System.Atomic_Primitives.
+ 
+ 2022-01-10  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_pakd.adb (Install_PAT): Do not reset the alignment here.
+ 	* layout.adb (Layout_Type): Call Adjust_Esize_Alignment after having
+ 	copied the RM_Size onto the Esize when the latter is too small.
+ 
+ 2022-01-10  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* sem_warn.adb (Check_References): Handle arrays of tasks
+ 	similar to task objects.
+ 
+ 2022-01-07  Patrick Bernardi  <bernardi@adacore.com>
+ 
+ 	* libgnat/a-direct.adb (Search_Data): Remove type.
+ 	(Directory_Vectors): New package instantiation.
+ 	(Search_State): New type.
+ 	(Fetch_Next_Entry): Remove.
+ 	(Close): Remove.
+ 	(Finalize): Rewritten.
+ 	(Full_Name): Ditto.
+ 	(Get_Next_Entry): Return next entry from Search results vector
+ 	rather than querying the directory directly using readdir.
+ 	(Kind): Rewritten.
+ 	(Modification_Time): Rewritten.
+ 	(More_Entries): Use Search state cursor to determine if more
+ 	entries are available for users to read.
+ 	(Simple_Name): Rewritten.
+ 	(Size): Rewritten.
+ 	(Start_Search_Internal): Rewritten to load the contents of the
+ 	directory that matches the pattern and filter into the search
+ 	object.
+ 	* libgnat/a-direct.ads (Search_Type): New type.
+ 	(Search_Ptr): Ditto.
+ 	(Directory_Entry_Type): Rewritten to support new Start_Search
+ 	procedure.
+ 	* libgnat/s-filatt.ads (File_Length_Attr): New function.
+ 
+ 2022-01-07  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_attr.adb (Check_Reference): Fix condition.
+ 
+ 2022-01-07  Ghjuvan Lacambre  <lacambre@adacore.com>
+ 
+ 	* libgnarl/s-taprop__mingw.adb (Timed_Sleep): Remove "pragma
+ 	Unreferenced" for Result.
+ 	(Timed_Delay): Likewise.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gen_il-gen.adb (Put_Make_Decls): Put pragma Inline in a
+ 	dedicated line, so that the current indentation is taken into
+ 	account.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Build_Array_Aggr_Code): Fix inconsistent style
+ 	in comments and code.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Gen_Assign): Remove explicit initialization for
+ 	components of access types.
+ 	(Get_Assoc_Expr): Enable initialization for components of all
+ 	types that require simple initialization.
+ 
+ 2022-01-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* atree.ads (Traverse_Func_With_Parent): New generic subprogram.
+ 	(Traverse_Proc_With_Parent): Likewise.
+ 	* atree.adb (Parents_Stack): New table used to traverse trees
+ 	passing the parent field of each node.
+ 	(Internal_Traverse_With_Parent): New generic subprogram.
+ 	(Traverse_Func_With_Parent): Likewise.
+ 	(Traverse_Proc_With_Parent): Likewise.
+ 	* contracts.adb (Fix_Parents): New subprogram.
+ 	(Restore_Original_Selected_Component): Enhanced to fix the
+ 	parent field of restored nodes.
+ 	(Inherit_Condition): Adding assertions to check the parent field
+ 	of inherited conditions and to ensure that the built inherited
+ 	condition has no reference to the formals of the parent
+ 	subprogram.
+ 	* sem_util.ads, sem_util.adb (Check_Parents): New subprogram.
+ 
+ 2022-01-07  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_attr.adb (Check_Placement_In_Test_Case): Fix typo.
+ 
+ 2022-01-07  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* comperr.adb (Delete_SCIL_Files): Replace unnecessary
+ 	Unreferenced pragma with specific pragma Warnings.
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Unreferenced):
+ 	Add documentation for new behavior.
+ 	* gnat_rm.texi: Regenerate.
+ 	* erroutc.adb (Set_At): Remove useless assignment.
+ 	* exp_ch2.adb (In_Assignment_Context): Deleted.
+ 	(Is_Object_Renaming_Name): Replace calls to Is_LHS with calls to
+ 	Known_To_Be_Assigned.
+ 	(Expand_Current_Value): Replace calls to May_Be_Lvalue with
+ 	calls to Known_To_Be_Assigned.
+ 	(Expand_Entry_Paramter): Replace calls to In_Assignment_Context
+ 	with calls to Known_To_Be_Assigned.
+ 	* exp_ch4.adb (Expand_N_Op_Rem): Remove unnecessary Unreferenced
+ 	pragma.
+ 	* exp_imgv.adb (Build_Enumeration_Image_Tables): Default
+ 	initialize S_N.
+ 	* ghost.adb (Check_Ghost_Policy): Replace call to May_Be_Lvalue
+ 	with call to Known_To_Be_Assigned.
+ 	* lib-xref.adb (Is_On_LHS): Deleted.
+ 	(OK_To_Set_Referenced): Rewrite subprogram to encompass the new
+ 	pragma Unreferenced behavior.
+ 	(Process_Deferred_References): Replace call to Is_LHS with call
+ 	to Known_To_Be_Assigned.
+ 	* libgnarl/s-taasde.adb, libgnarl/s-tasren.adb,
+ 	libgnarl/s-tpobop.adb, libgnat/a-calend.adb,
+ 	libgnat/a-calfor.adb, libgnat/a-cbdlli.adb,
+ 	libgnat/a-cbhama.adb, libgnat/a-cbhase.adb,
+ 	libgnat/a-cbmutr.adb, libgnat/a-cborma.adb,
+ 	libgnat/a-cborse.adb, libgnat/a-cdlili.adb,
+ 	libgnat/a-cfhama.adb, libgnat/a-cforse.adb,
+ 	libgnat/a-cidlli.adb, libgnat/a-cihama.adb,
+ 	libgnat/a-cihase.adb, libgnat/a-cimutr.adb,
+ 	libgnat/a-ciorma.adb, libgnat/a-ciormu.adb,
+ 	libgnat/a-ciorse.adb, libgnat/a-cohama.adb,
+ 	libgnat/a-cohase.adb, libgnat/a-comutr.adb,
+ 	libgnat/a-convec.adb, libgnat/a-coorma.adb,
+ 	libgnat/a-coormu.adb, libgnat/a-coorse.adb,
+ 	libgnat/a-crdlli.adb, libgnat/a-tigeau.adb,
+ 	libgnat/a-wtgeau.adb, libgnat/a-ztgeau.adb,
+ 	libgnat/g-calend.adb, libgnat/g-comlin.adb,
+ 	libgnat/g-expect.adb, libgnat/g-mbflra.adb,
+ 	libgnat/g-spipat.adb, libgnat/s-fatgen.adb,
+ 	libgnat/s-fileio.adb, libgnat/s-os_lib.adb,
+ 	libgnat/s-regpat.adb, libgnat/s-valued.adb,
+ 	libgnat/s-valuer.adb: Remove unnecessary Unreferenced pragmas
+ 	* sem_ch10.adb (Process_Spec_Clauses): Remove useless
+ 	assignments.
+ 	* sem_ch13.adb (Validate_Literal_Aspect): Default initialize I.
+ 	* sem_ch3.adb (Build_Derived_Concurrent_Type): Default
+ 	initialize Corr_Decl.
+ 	* sem_ch8.adb (Undefined): Replace calls to Is_LHS with calls to
+ 	Known_To_Be_Assigned.
+ 	(In_Abstract_View_Pragma): Likewise.
+ 	* sem_eval.adb (Eval_Selected_Component): Replace calls to
+ 	Is_LHS with calls to Known_To_Be_Assigned.
+ 	* sem_res.adb (Init_Component): Replace calls to May_Be_Lvalue
+ 	with calls to Known_To_Be_Assigned.
+ 	* sem_util.adb, sem_util.ads (End_Label_Loc): Default initialize
+ 	Owner.
+ 	(Explain_Limited_Type): Default initialize Expr_Func.
+ 	(Find_Actual): Modified to handle entry families.
+ 	(Is_LHS): Deleted.
+ 	(May_Be_Lvalue): Deleted.
+ 	(Known_To_Be_Assigned): Modified and improved to handle all
+ 	cases.
+ 	* sem_warn.adb (Traverse_Result): Replace calls to May_Be_Lvalue
+ 	with calls to Known_To_Be_Assigned.
+ 	(Check_Ref): Modify error on unreferenced out parameters to take
+ 	into account different warning flags.
+ 
+ 2022-01-07  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* sem_ch3.adb (Reorder_Interfaces): When the conflicting
+ 	interface is identified we just replace the interface in the
+ 	list of interfaces of the tagged type (instead of adding a
+ 	duplicate to the list of interfaces).
+ 
+ 2022-01-07  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* adaint.c (__gnat_kill): Terminate process only in case of
+ 	SIGKILL, SIGINT, SIGBREAK, SIGTERM, SIGABRT.  Do not call
+ 	OpenProcess if not going to terminate process.
+ 
+ 2022-01-07  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* exp_prag.adb (Expand_Pragma_Inspection_Point): Do a single pass
+ 	over the arguments of the pragma.  Set the Address_Taken flag on
+ 	them and use the Has_Delayed_Freeze flag to spot those which have
+ 	their elaboration delayed.  Reuse the location variable Loc.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* osint.adb (To_Lower): Clarify that only To_Lower function
+ 	causes bootstrap issues; fix style.
+ 	* treepr.adb (Print_Str_Mixed_Case): Reuse existing case
+ 	conversion routine.
+ 	(To_Mixed): Rename from Capitalize; reuse System.Case_Util
+ 	procedure and explain the bootstrap issue.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch7.adb (Process_Transients_In_Scope): Remove unnecessary
+ 	initialization of Must_Hook; change Detect_Subprogram_Call from
+ 	function to procedure; adapt caller.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch5.adb, exp_disp.adb, exp_util.adb, par-ch4.adb,
+ 	sem_ch13.adb: Remove extra space before THEN that occurs at the
+ 	end of a line.
+ 
+ 2022-01-07  Dmitriy Anisimkov  <anisimko@adacore.com>
+ 
+ 	* expect.c (__gnat_waitpid): Use macros WIFEXITED, WEXITSTATUS,
+ 	WIFSIGNALED, WTERMSIG, WIFSTOPPED, WSTOPSIG to get exit status
+ 	or signal that caused the child process to terminate/stop.  Do
+ 	not process exit status in case of error in waitpid call.
+ 	* adaint.c (__gnat_kill): Use of GenerateConsoleCtrlEvent is
+ 	removed in Windows variant as it actually is not working and was
+ 	terminating the calling process.  Set signal number into exit
+ 	code parameter of TerminateProcess to work the same like in
+ 	Linux.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch5.adb (Expand_N_Case_Statement): Remove explicit
+ 	expansion.
+ 
+ 2022-01-07  Etienne Servais  <servais@adacore.com>
+ 
+ 	* doc/gnat_ugn/building_executable_programs_with_gnat.rst:
+ 	Update -gnatwr documentation.
+ 	* gnat_ugn.texi: Regenerate.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_unst.adb (Unnest_Subprogram): Sync comment with the
+ 	current code.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Raise_Accessibility_Error): Move exception name
+ 	to the message string; move << control characters to the end,
+ 	for consistency.
+ 	* sem_ch6.adb (Analyze_Function_Return): Likewise.
+ 	* sem_util.adb (Compile_Time_Constraint_Error): Likewise.
+ 	* gcc-interface/decl.c (gnat_to_gnu_entity): Remove quotes
+ 	around Storage_Error.
+ 	* gcc-interface/trans.c (gnat_to_gnu): Remove quotes around
+ 	Constraint_Error.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Error_Msg): Move warning suppression code from
+ 	Error_Msg_NLE
+ 	(Error_Msg_NLE): Warning suppression is now done by the internal
+ 	call to Error_Msg.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Expand_N_Object_Declaration): Remove unnecessary
+ 	guards.
+ 	* exp_ch4.adb (Expand_N_If_Expression): Likewise; clarify comment.
+ 	* exp_ch5.adb (Expand_N_If_Statement,
+ 	Expand_Iterator_Loop_Over_Container): Likewise.
+ 	* exp_ch9.adb (Expand_N_Task_Type_Declaration): Remove redundant
+ 	guard.
+ 	* freeze.adb (Freeze_All_Ent): Reduce scope of a local variable.
+ 
+ 2022-01-07  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Init_Procedure): Remove unnecessary guard.
+ 	* exp_disp.adb (Make_DT): Likewise.
+ 	* sem_ch12.adb (Analyze_Associations): Likewise.
+ 
+ 2022-01-07  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Op_Concat_Arg): Check range when
+ 	concatenating scalars.
+ 
+ 2022-01-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* treepr.adb (Print_Node_Ref): Change "not Is_Array_Type" to
+ 	"Is_Discrete_Type".
+ 
+ 2022-01-07  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* libgnat/g-spipat.ads (Boolean_Func, Natural_Func,
+ 	VString_Func): Mark as Favor_Top_Level.
+ 	* sem_ch13.adb (Validate_Unchecked_Conversion): Avoid using
+ 	internal representation if Unchecked_Conversion between
+ 	an access to subprogram and System.Address within the same unit.
+ 
+ 2022-01-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* treepr.adb (Print_Node_Ref): Print the value if available.
+ 
+ 2022-01-07  Richard Kenner  <kenner@adacore.com>
+ 
+ 	* sem_util.ads, sem_util.adb (Get_Fullest_View): Add option to
+ 	not recurse and return the next-most-fullest view.
+ 
+ 2022-01-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_ch10.adb (Check_Redundant_Withs): Add a warning if a
+ 	library unit with's its own ancestor. Note that this warning is
+ 	not triggered for something like "with P.R;" in P.Q, because
+ 	there the "with P;" is considered implicit.
+ 	* fname-sf.adb, libgnarl/s-stusta.adb, libgnarl/s-tasdeb.ads,
+ 	libgnat/a-calfor.adb, libgnat/a-tiboio.adb,
+ 	libgnat/a-wwboio.adb, libgnat/a-zzboio.adb, libgnat/i-cobol.adb,
+ 	libgnat/s-bitops.adb, libgnat/s-bitops.ads,
+ 	libgnat/s-direio.adb, libgnat/s-dwalin.adb,
+ 	libgnat/s-geveop.adb, libgnat/s-mmosin__unix.adb,
+ 	libgnat/s-os_lib.adb, libgnat/s-os_lib.ads,
+ 	libgnat/s-pooglo.ads, libgnat/s-secsta.adb,
+ 	libgnat/s-shasto.adb, libgnat/s-stausa.ads,
+ 	libgnat/s-stratt.ads, libgnat/s-ststop.adb: Remove with of
+ 	parent.
+ 	* sinfo.ads: Minor comment fix.
+ 
+ 2022-01-07  Bob Duff  <duff@adacore.com>
+ 
+ 	* osint-m.adb: Remove with_clause and pragma.
+ 
+ 2022-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_Range): Warn on null range, unless we are
+ 	inside a generic unit or an instance thereof.
+ 	* sem_ch3.adb (Analyze_Subtype_Indication): Minor: avoid double
+ 	negative.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Adjust_Name_Case): Remove unnecessary declare
+ 	block.
+ 
+ 2022-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/a-ngcoar.adb: Add pragma to ignore assertions in
+ 	instance.
+ 	* libgnat/a-ngrear.adb: Likewise.
+ 	* libgnat/s-gearop.adb: Prove implementation is free of runtime
+ 	errors.
+ 	* libgnat/s-gearop.ads: Add contracts to protect against runtime
+ 	errors in the generic part.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Remove_Warning_Messages): Use traversal procedure
+ 	instead of traversal function, since we discard status of each
+ 	step anyway.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_Concatenate): There is no reason for using
+ 	declaring, raising and catching an exception; a simple return
+ 	statement is enough.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_eval.adb (Eval_Arithmetic_Op): Add Loc parameter to all
+ 	calls to Apply_Compile_Time_Constraint_Error related to division
+ 	by zero.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Remove_Warning_Messages): Remove unnecessary guard.
+ 	* exp_util.adb (Kill_Dead_Code): Likewise.
+ 	* par_sco.adb (Traverse_Declarations_Or_Statements): Likewise.
+ 	* sem_ch3.adb (Build_Derived_Record_Type): Likewise.
+ 	* sem_ch4.adb (Traverse_Interfaces): Likewise.
+ 	* sem_eval.adb (Traverse_Interfaces): Likewise.
+ 	* sem_util.adb (Collect_Interfaces): Likewise.
+ 	(Has_Non_Null_Statements, Side_Effect_Free_Statements):
+ 	Likewise; turn into WHILE loops, for consistency.
+ 
+ 2022-01-06  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_type.adb (Full_View_Covers): Fix typo.
+ 
+ 2022-01-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch12.adb (Insert_Freeze_Node_For_Instance): When going to
+ 	the outer level, do not jump over following instantiations in
+ 	the list.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* err_vars.ads (Warn_On_Instance): Remove; it was a relic from
+ 	the previous handling of warning in instances that was removed
+ 	decades ago.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* errout.adb (Error_Msg_Internal): Reorder words.
+ 	* erroutc.ads (Is_Warning_Msg): Add closing paren.
+ 	* sem_util.adb (Compile_Time_Constraint_Error): Fix casing.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_String_Literal): Simplify pointer
+ 	arithmetic.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_res.adb (Resolve_String_Literal): Avoid unnecessary
+ 	conversions inside "<" and ">" bodies.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* checks.adb (Null_Exclusion_Static_Checks,
+ 	Selected_Range_Checks): Fix style.
+ 
+ 2022-01-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* sem_ch8.adb (Analyze_Package_Renaming): Do not check for Text_IO
+ 	special units when the name of the renaming is a generic instance,
+ 	which is the case for package instantiations in the GNAT model.
+ 
+ 2022-01-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.adb (Build_Discriminant_Reference): In the unexpected
+ 	case where we previously would fail an assertion, we instead
+ 	revert to the old behavior.
+ 
+ 2022-01-06  Steve Baird  <baird@adacore.com>
+ 
+ 	* sem_util.adb (Build_Actual_Subtype_Of_Component): Define a new
+ 	local function, Build_Discriminant_Reference, and call it in
+ 	each of the three cases where Make_Selected_Component was
+ 	previously being called to construct a discriminant reference (2
+ 	in Build_Actual_Array_Constraint and 1 in
+ 	Build_Actual_Record_Constraint). Instead of unconditionally
+ 	using the passed-in object name as the prefix for the new
+ 	selected component node, this new function checks to see if
+ 	perhaps a prefix of that name should be used instead.
+ 
+ 2022-01-06  Etienne Servais  <servais@adacore.com>
+ 
+ 	* atree.adb: Fix typo.
+ 	* einfo.ads: Likewise.
+ 	* exp_aggr.adb: Likewise.
+ 	* exp_ch6.adb: Likewise.
+ 	* exp_ch7.adb: Likewise.
+ 	* exp_ch9.adb: Likewise.
+ 	* exp_prag.adb: Likewise.
+ 	* exp_unst.adb: Likewise.
+ 	* exp_unst.ads: Likewise.
+ 	* exp_util.adb: Likewise.
+ 	* par-endh.adb: Likewise.
+ 	* par.adb: Likewise.
+ 	* restrict.adb: Likewise.
+ 	* sem.ads: Likewise.
+ 	* sem_ch4.adb: Likewise.
+ 	* sem_ch5.adb: Likewise.
+ 	* sem_ch6.adb: Likewise.
+ 	* sem_ch8.adb: Likewise.
+ 	* sem_ch12.adb: Likewise.
+ 	* sem_ch13.adb: Likewise.
+ 	* sem_dim.adb: Likewise.
+ 	* sem_elab.adb: Likewise.
+ 	* sem_prag.adb: Likewise.
+ 	* sem_res.adb: Likewise.
+ 	* sem_util.adb: Likewise.
+ 	* sem_util.ads: Likewise.
+ 	* sinfo.ads: Likewise.
+ 	* sprint.adb: Likewise.
+ 	* urealp.adb: Likewise.
+ 
+ 2022-01-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Assignment): Replace current instance of
+ 	type with Init_Proc formal.
+ 	* sem_attr.adb (OK_Self_Reference): Handle recognition of
+ 	Current_Instance to detect certain expansion.
+ 	* sem_ch4.adb (Analyze_One_Call): Set actual's type when the
+ 	actual in question is a current instance and its corresponding
+ 	formal is an incomplete type.
+ 	* sem_util.adb (Is_Current_Instance): Add check for incomplete
+ 	views and add comment.
+ 
+ 2022-01-06  Bob Duff  <duff@adacore.com>
+ 
+ 	* libgnat/s-rident.ads (No_Tagged_Type_Registration): New
+ 	restriction identifier.
+ 	* restrict.ads (Implementation_Restriction): Add restriction.
+ 	* exp_ch7.adb (Process_Declarations): Suppress
+ 	tagged-type-related finalization actions if the restriction is
+ 	active.  Call RTE_Available last.
+ 	* exp_disp.adb (Make_DT): Likewise.
+ 	* exp_util.adb (Requires_Cleanup_Actions): Return False for a
+ 	tagged type declaration if No_Tagged_Type_Registration is
+ 	active.
+ 	* sem_attr.adb (Check_Stream_Attribute): Check restriction
+ 	No_Tagged_Type_Registration.
+ 	* libgnat/a-except.ads (Null_Occurrence): Minor: Initialize, to
+ 	avoid stopping at a warning in gdb.
+ 	* doc/gnat_rm/standard_and_implementation_defined_restrictions.rst:
+ 	Document new restriction.
+ 	* gnat_rm.texi: Regenerate.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* par-ch4.adb (P_Simple_Expression): Reuse Null_String_Id.
+ 	* prep.adb (Parse_Def_File): Likewise; remove Empty_String.
+ 
+ 2022-01-06  Eric Botcazou  <ebotcazou@adacore.com>
+ 
+ 	* stand.ads (Any_Access): Delete.
+ 	(Universal_Access): New entity.
+ 	* einfo.ads: Remove obsolete reference to Any_Access.
+ 	* gen_il-gen-gen_entities.adb: Likewise.
+ 	* cstand.adb (Create_Standard): Do not create Any_Access and create
+ 	Universal_Access as a full type instead.
+ 	* errout.adb (Set_Msg_Insertion_Type_Reference): Do not deal with
+ 	Any_Access and deal with Universal_Access instead.
+ 	* sem_ch3.adb (Analyze_Object_Declaration): Replace Any_Access with
+ 	Universal_Access.
+ 	* sem_ch4.adb (Analyze_Null): Likewise.
+ 	(Find_Non_Universal_Interpretations): Likewise.
+ 	(Find_Equality_Types.Try_One_Interp): Likewise and avoid shadowing
+ 	by renaming a local variable of the same name.
+ 	* sem_res.adb (Make_Call_Into_Operato): Likewise.
+ 	(Resolve_Equality_Op): Likewise.
+ 	* sem_type.adb (Covers): Likewise.
+ 	(Specific_Type): Likewise.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* treepr.adb (Destroy): Prevent spurious check from CodePeer.
+ 
+ 2022-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-exponu.adb (Exponu): Add annotation.
+ 
+ 2022-01-06  Justin Squirek  <squirek@adacore.com>
+ 
+ 	* exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add comments
+ 	regarding special handling of components which depend on
+ 	discriminants.
+ 	* exp_dist.adb (Build_From_Any_Function): Add Real_Rep actual
+ 	for calls to Has_Stream_Attribute_Definition.
+ 	(Build_To_Any_Function): Likewise.
+ 	(Build_TypeCode_Function): Likewise.
+ 	* freeze.adb (Freeze_Entity): Add missing comment for Test_E.
+ 	* libgnat/s-utf_32.adb: Remove disabled warning comments and
+ 	temporarily inserted pragma warnings.  Remove very old (2006 and
+ 	2012) comments about bootstrapping older versions.
+ 	* par.adb (P_Identifier): Add new parameter Force_Msg.
+ 	* par-ch2.adb (P_Identifier): Restructure and clean up function.
+ 	* par-ch3.adb (P_Defining_Identifier): Remove code duplication
+ 	for parsing identifiers.
+ 	* sem_attr.adb (Stream_Attribute_Available): Add missing
+ 	comments and add Real_Rep actual for calls to
+ 	Has_Stream_Attribute_Definition.
+ 	* sem_cat.adb (Has_Read_Write_Attribute): Add Real_Rep actual
+ 	for calls to Has_Stream_Attribute_Definition.
+ 	(Has_Stream_Attribute_Definition): Remove local Real_Rep and fix
+ 	recursive calls. Add default value for Real_Rep.
+ 	* sem_cat.ads (Has_Stream_Attribute_Definition): Add new out
+ 	parameter "Real_Rep".
+ 	* sem_type.adb (Add_Entry): Add condition to avoid passing
+ 	non-function calls to Function_Interp_Has_Abstract_Op.
+ 	(Function_Interp_Has_Abstract_Op): Add missing comments and
+ 	remove check for Is_Overloadable.
+ 	* sem_util.adb (Derivation_Too_Early_To_Inherit): Remove
+ 	duplicated code.
+ 
+ 2022-01-06  Javier Miranda  <miranda@adacore.com>
+ 
+ 	* contracts.adb (Restore_Original_Selected_Component): New
+ 	subprogram that traverses a preanalyzed expression searching for
+ 	dispatching calls to functions whose original node was a
+ 	selected component, and replacing them with their original node.
+ 	This functionality is required because the preanalyis of
+ 	dispatching calls using the Object.Operation notation transforms
+ 	such calls, and we need the original condition to properly
+ 	inherit and extend the condition expression on tagged type
+ 	derivations.  This functionality was previously provided by the
+ 	routine Install_Original_Selected_Component (as part of
+ 	inheriting conditions); now it is performed as part of the
+ 	preanalysis of the condition, thus avoiding repeatedly
+ 	installing and restoring such nodes.
+ 	(Install_Original_Selected_Component): Removed.
+ 	(Restore_Dispatching_Calls): Removed.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* treepr.adb (Visit_Node): Simplify repeated call to
+ 	Next_Entity.
+ 
+ 2022-01-06  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* treepr.ads (Treepr, Print_Tree_List, Print_Tree_Elist): Fix
+ 	style in comments.
+ 	* treepr.adb (Serial_Numbers): Hash table instance.
+ 	(Hash): Hashing routine.
+ 	(Print_Field): Fix style.
+ 	(Print_Init): Adapt to simple hash table.
+ 	(Print_Term): Likewise.
+ 	(Serial_Numbers): Likewise.
+ 	(Set_Serial_Number): Likewise.
+ 
+ 2022-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-expmod.adb: Mark in SPARK. Add ghost code for proof.
+ 	* libgnat/s-expmod.ads: Mark in SPARK. Add ghost specifications.
+ 
+ 2022-01-06  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-explllu.ads: Mark in SPARK.
+ 	* libgnat/s-expllu.ads: Mark in SPARK.
+ 	* libgnat/s-exponu.adb: Add loop invariants and needed
+ 	assertions.
+ 	* libgnat/s-exponu.ads: Add functional contract.
+ 	* libgnat/s-expuns.ads: Mark in SPARK.
+ 
+ 2022-01-05  Steve Baird  <baird@adacore.com>
+ 
+ 	* exp_ch5.adb (Finish_Binding_Object_Declaration): Fix a bug
+ 	that was introduced in the previous commit.  The previous
+ 	version initialized a Boolean constant Declare_Copy before the
+ 	variable Decl had been initialized properly.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_prag.adb (Adjust_External_Name_Case): Use membership test.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): For
+ 	GNATprove build the wrapper as an expression function.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.ads (Make_Controlling_Function_Wrappers): Move
+ 	declaration from body to spec, so it can be called by
+ 	SPARK-specific expansion.
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Likewise.
+ 	* exp_spark.adb (SPARK_Freeze_Type): Enable expansion of
+ 	wrappers for function with controlling result types.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_dbug.adb, sem_dim.adb: Replace Add_Str_To_Name_Buffer with
+ 	Add_Char_To_Name_Buffer.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* gnatls.adb (Gnatls): Use Name_Find function.
+ 	* targparm.adb (Get_Target_Parameters): Likewise.
+ 
+ 2022-01-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* repinfo.adb (List_Entities): The code was assuming that if we
+ 	encounter a package in the current scope, then it must be
+ 	a (physically) nested package.  That was wrong, because it could
+ 	be a child package.  Avoid recursing into child packages; they
+ 	have not been annotated with representation information, and
+ 	-gnatR2 queries that information.
+ 
+ 2022-01-05  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* libgnat/s-sopco3.ads, libgnat/s-sopco3.adb: Remove.
+ 	* libgnat/s-sopco4.ads, libgnat/s-sopco4.adb: Remove.
+ 	* libgnat/s-sopco5.ads, libgnat/s-sopco5.adb: Remove.
+ 	* libgnat/s-strops.ads, libgnat/s-strops.adb: Remove.
+ 	* Makefile.rtl (ADA_EXCLUDE_SRCS): Remove occurences of removed
+ 	units.
+ 	* gcc-interface/Make-lang.in (ada/sdefault.o): Remove
+ 	dependencies on removed units.
+ 	(GNATBIND_OBJS): Remove occurences of removed units.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Build_Dcheck_Function): Remove extra whitespace.
+ 	* libgnarl/s-taskin.adb (Initialize_ATCB): Likewise.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_attr.adb (Build_Array_VS_Func): Remove explicit "IN" in
+ 	spec of the generated array validation function; it was
+ 	redundant, just like it would be in a user-written code.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch4.adb (Expand_N_Op_Ne): Fix whitespace.
+ 	* sem_dim.adb (Expand_Put_Call_With_Symbol): Likewise.
+ 	(Reduce): Likewise.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_aggr.adb (Two_Pass_Aggregate_Expansion): Fix whitespace.
+ 	* libgnat/a-cofuve.ads (Add): Likewise.
+ 	* sem_ch3.adb (Build_Access_Subprogram_Wrapper): Likewise.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Eq_Body, Make_Neq_Body,
+ 	Make_Predefined_Primitive_Eq_Spec,
+ 	Make_Predefined_Primitive_Specs): Fix whitespace.
+ 
+ 2022-01-05  Etienne Servais  <servais@adacore.com>
+ 
+ 	* sem_ch3.adb (Analyze_Component_Declaration): Rework condition
+ 	to build subtypes.
+ 	(Analyze_Object_Declaration): Likewise.
+ 	(Should_Build_Subtype): New.
+ 
+ 2022-01-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-arit128.adb: Mark in SPARK.
+ 	* libgnat/s-arit128.ads: Add functional contracts.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_util.adb (String_From_Numeric_Literal): Simplify using
+ 	membership tests and ranges; fix whitespace.
+ 
+ 2022-01-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-expint.ads: Mark in SPARK. Adapt to change to
+ 	package.
+ 	* libgnat/s-explli.ads: Likewise.
+ 	* libgnat/s-expllli.ads: Likewise.
+ 	* libgnat/s-expont.adb: Add lemmas and ghost code.
+ 	* libgnat/s-expont.ads: Add functional contract.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_disp.adb (Gen_Parameters_Profile): Remove redundant guard.
+ 
+ 2022-01-05  Claire Dross  <dross@adacore.com>
+ 
+ 	* libgnat/s-valuti.ads (Starts_As_Exponent_Format_Ghost): Ghost
+ 	function to determine if a string is recognized as something
+ 	which might be an exponent.
+ 	(Is_Opt_Exponent_Format_Ghost): Ghost function to determine if a
+ 	string has the correct format for an optional exponent.
+ 	(Scan_Exponent): Use ghost functions to factorize contracts.
+ 
+ 2022-01-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* exp_util.ads (Get_Current_Value_Condition): Belt: Add a
+ 	postcondition that Val /= Var.
+ 	* sem_util.adb (Known_Null): Suspenders: Raise Program_Error if
+ 	Get_Current_Value_Condition returned the same value. This will
+ 	be enabled even without assertions, because infinite recursion
+ 	is a nuisance -- better to crash if this bug ever occurs.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Null_Procedure_Specs): Simplify by reusing
+ 	Copy_Subprogram_Spec.
+ 	* sem_util.ads (Copy_Subprogram_Spec): Add New_Sloc parameter.
+ 	* sem_util.adb (Copy_Subprogram_Spec): Pass New_Sloc to
+ 	New_Copy_Tree.
+ 
+ 2022-01-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-exnint.ads: Mark in SPARK. Adapt to change to
+ 	package.
+ 	* libgnat/s-exnlli.ads: Likewise.
+ 	* libgnat/s-exnllli.ads: Likewise.
+ 	* libgnat/s-exponn.adb: Add lemmas and ghost code. Secial case
+ 	value zero as Left or Right to simplify proof.
+ 	* libgnat/s-exponn.ads: Transform the generic function into a
+ 	generic package with a function inside. Add a functional
+ 	contract.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.adb (Instantiate_Formal_Subprogram): Remove redundant
+ 	call to Set_Defining_Unit_Name; a similar call is done few lines
+ 	below.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* exp_ch3.adb (Make_Controlling_Function_Wrappers): Create
+ 	distinct copies of parameter lists for spec and body with
+ 	Copy_Parameter_List; cleanup.
+ 	(Make_Null_Procedure_Specs): Fix style in comments; remove a
+ 	potentially unnecessary initialization of a local variable.
+ 
+ 2022-01-05  Bob Duff  <duff@adacore.com>
+ 
+ 	* einfo-utils.ads, einfo-utils.adb (Renamed_Entity Alias):
+ 	Change Node_Id to Entity_Id.
+ 
+ 2022-01-05  Piotr Trojanek  <trojanek@adacore.com>
+ 
+ 	* sem_ch12.ads (Build_Function_Wrapper, Build_Operator_Wrapper):
+ 	Remove unreferenced spec.
+ 	* sem_ch12.adb (Build_Function_Wrapper, Build_Operator_Wrapper):
+ 	Remove dead bodies.
+ 
+ 2022-01-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb: Apply replacement.
+ 
+ 2022-01-05  Yannick Moy  <moy@adacore.com>
+ 
+ 	* libgnat/s-aridou.adb (Lemma_Word_Commutation): Fix for
+ 	instances with other values of Single_Size.
+ 
+ 2022-01-05  Marc Poulhiès  <poulhies@adacore.com>
+ 
+ 	* doc/gnat_rm/implementation_defined_pragmas.rst (Compiler_Unit)
+ 	(Compiler_Unit_Warning): Remove.
+ 	* gnat-style.texi, gnat_rm.texi, gnat_ugn.texi: Regenerate.
+ 	* libgnat/g-dynhta.ads: Add comment indicating this unit is
+ 	built during stage1.
+ 	* libgnat/g-dyntab.ads: Likewise.
+ 	* libgnat/g-graphs.ads: Likewise.
+ 	* libgnat/g-lists.ads: Likewise.
+ 	* libgnat/g-sets.ads: Likewise.
+ 	* libgnat/gnat.ads: Likewise.
+ 	* libgnat/s-pehage.ads: Likewise.
+ 	* libgnat/s-resfil.ads: Likewise.
+ 	* libgnat/s-rident.ads: Likewise.
+ 	* libgnat/s-utf_32.ads: Likewise.
+ 	* errout.ads: Update comment.
+ 	* opt.ads (Opt): Remove Compiler_Unit.
+ 	* par-ch5.adb (All_Pragmas): Remove call to Check_Compiler_Unit.
+ 	* sem_prag.adb (Analyze_Pragma): Likewise.
+ 	* sem_ch4.adb (Non_Static_Choice_Error, Analyze_If_Expression)
+ 	(Analyze_Set_Membership, Record_Interp): Likewise.
+ 	* sem_ch11.adb (Analyze_Raise_Expression): Likewise.
+ 	* sem_ch6.adb: Remove Restric package reference.
+ 	(Analyze_Extended_Return_Statement): Remove call to
+ 	Check_Compiler_Unit.
+ 	* par-prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ 	Remove handling of Pragma_Compiler_Unit[_Warning}.
+ 	* restrict.adb (Check_Compiler_Unit): Remove both.
+ 	* restrict.ads: Likewise.
+ 	* snames.ads-tmpl (Pragma_Id): Remove
+ 	Pragma_Compiler_Unit[_Warning].
+ 	* libgnat/a-assert.ads: Remove pragma Compiler_Unit_Warning.
+ 	* libgnat/a-chlat1.ads: Likewise.
+ 	* libgnat/a-elchha.adb: Likewise.
+ 	* libgnat/a-elchha.ads: Likewise.
+ 	* libgnat/a-ioexce.ads: Likewise.
+ 	* libgnat/a-strhas.ads: Likewise.
+ 	* libgnat/g-byorma.adb: Likewise.
+ 	* libgnat/g-byorma.ads: Likewise.
+ 	* libgnat/g-dyntab.adb: Likewise.
+ 	* libgnat/g-heasor.ads: Likewise.
+ 	* libgnat/g-hesora.adb: Likewise.
+ 	* libgnat/g-hesora.ads: Likewise.
+ 	* libgnat/g-htable.adb: Likewise.
+ 	* libgnat/g-htable.ads: Likewise.
+ 	* libgnat/g-spchge.adb: Likewise.
+ 	* libgnat/g-spchge.ads: Likewise.
+ 	* libgnat/g-speche.adb: Likewise.
+ 	* libgnat/g-speche.ads: Likewise.
+ 	* libgnat/g-table.ads: Likewise.
+ 	* libgnat/g-u3spch.adb: Likewise.
+ 	* libgnat/g-u3spch.ads: Likewise.
+ 	* libgnat/interfac.ads: Likewise.
+ 	* libgnat/s-addope.adb: Likewise.
+ 	* libgnat/s-addope.ads: Likewise.
+ 	* libgnat/s-assert.adb: Likewise.
+ 	* libgnat/s-assert.ads: Likewise.
+ 	* libgnat/s-bitops.adb: Likewise.
+ 	* libgnat/s-bitops.ads: Likewise.
+ 	* libgnat/s-carun8.adb: Likewise.
+ 	* libgnat/s-carun8.ads: Likewise.
+ 	* libgnat/s-casuti.adb: Likewise.
+ 	* libgnat/s-casuti.ads: Likewise.
+ 	* libgnat/s-conca2.adb: Likewise.
+ 	* libgnat/s-conca2.ads: Likewise.
+ 	* libgnat/s-conca3.adb: Likewise.
+ 	* libgnat/s-conca3.ads: Likewise.
+ 	* libgnat/s-conca4.adb: Likewise.
+ 	* libgnat/s-conca4.ads: Likewise.
+ 	* libgnat/s-conca5.adb: Likewise.
+ 	* libgnat/s-conca5.ads: Likewise.
+ 	* libgnat/s-conca6.adb: Likewise.
+ 	* libgnat/s-conca6.ads: Likewise.
+ 	* libgnat/s-conca7.adb: Likewise.
+ 	* libgnat/s-conca7.ads: Likewise.
+ 	* libgnat/s-conca8.adb: Likewise.
+ 	* libgnat/s-conca8.ads: Likewise.
+ 	* libgnat/s-conca9.adb: Likewise.
+ 	* libgnat/s-conca9.ads: Likewise.
+ 	* libgnat/s-crc32.adb: Likewise.
+ 	* libgnat/s-crc32.ads: Likewise.
+ 	* libgnat/s-crtl.ads: Likewise.
+ 	* libgnat/s-excdeb.adb: Likewise.
+ 	* libgnat/s-excdeb.ads: Likewise.
+ 	* libgnat/s-except.ads: Likewise.
+ 	* libgnat/s-exctab.adb: Likewise.
+ 	* libgnat/s-exctab.ads: Likewise.
+ 	* libgnat/s-finmas.ads: Likewise.
+ 	* libgnat/s-htable.adb: Likewise.
+ 	* libgnat/s-htable.ads: Likewise.
+ 	* libgnat/s-mastop.adb: Likewise.
+ 	* libgnat/s-mastop.ads: Likewise.
+ 	* libgnat/s-memory.adb: Likewise.
+ 	* libgnat/s-memory.ads: Likewise.
+ 	* libgnat/s-os_lib.ads: Likewise.
+ 	* libgnat/s-parame.adb: Likewise.
+ 	* libgnat/s-parame.ads: Likewise.
+ 	* libgnat/s-parame__posix2008.ads: Likewise.
+ 	* libgnat/s-purexc.ads: Likewise.
+ 	* libgnat/s-resfil.adb: Likewise.
+ 	* libgnat/s-restri.adb: Likewise.
+ 	* libgnat/s-restri.ads: Likewise.
+ 	* libgnat/s-secsta.adb: Likewise.
+ 	* libgnat/s-secsta.ads: Likewise.
+ 	* libgnat/s-soflin.adb: Likewise.
+ 	* libgnat/s-soflin.ads: Likewise.
+ 	* libgnat/s-sopco3.adb: Likewise.
+ 	* libgnat/s-sopco3.ads: Likewise.
+ 	* libgnat/s-sopco4.adb: Likewise.
+ 	* libgnat/s-sopco4.ads: Likewise.
+ 	* libgnat/s-sopco5.adb: Likewise.
+ 	* libgnat/s-sopco5.ads: Likewise.
+ 	* libgnat/s-spsufi.ads: Likewise.
+ 	* libgnat/s-stache.adb: Likewise.
+ 	* libgnat/s-stache.ads: Likewise.
+ 	* libgnat/s-stalib.adb: Likewise.
+ 	* libgnat/s-stalib.ads: Likewise.
+ 	* libgnat/s-stoele.adb: Likewise.
+ 	* libgnat/s-stoele.ads: Likewise.
+ 	* libgnat/s-strcom.adb: Likewise.
+ 	* libgnat/s-strcom.ads: Likewise.
+ 	* libgnat/s-strhas.adb: Likewise.
+ 	* libgnat/s-string.adb: Likewise.
+ 	* libgnat/s-string.ads: Likewise.
+ 	* libgnat/s-strops.adb: Likewise.
+ 	* libgnat/s-strops.ads: Likewise.
+ 	* libgnat/s-ststop.adb: Likewise.
+ 	* libgnat/s-ststop.ads: Likewise.
+ 	* libgnat/s-traceb.adb: Likewise.
+ 	* libgnat/s-traceb.ads: Likewise.
+ 	* libgnat/s-traent.adb: Likewise.
+ 	* libgnat/s-traent.ads: Likewise.
+ 	* libgnat/s-utf_32.adb: Likewise.
+ 	* libgnat/s-unstyp.ads: Likewise.
+ 	* libgnat/s-wchcnv.adb: Likewise.
+ 	* libgnat/s-wchcnv.ads: Likewise.
+ 	* libgnat/s-wchcon.adb: Likewise.
+ 	* libgnat/s-wchcon.ads: Likewise.
+ 	* libgnat/s-wchjis.adb: Likewise.
+ 	* libgnat/s-wchjis.ads: Likewise.
+ 
+ 2022-01-05  Arnaud Charlet  <charlet@adacore.com>
+ 
+ 	* osint.adb (File_Names_Equal): Declare To_Lower locally.
+ 	* osint.ads (Null_FD): New.
+ 	* fmap.adb, sinput-l.adb, targparm.adb: Adapt to changes above.
+ 	* switch-b.adb (Scan_Debug_Switches): Use Is_Regular_File to
+ 	simplify the bootstrap dependencies.
+ 
+ 2022-01-03  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* gnat_ugn.texi: Bump @copying's copyright year.
+ 	* gnat_rm.texi: Likewise.
+ 
+ 
+ Copyright (C) 2022 Free Software Foundation, Inc.
+ 
+ Copying and distribution of this file, with or without modification,
+ are permitted in any medium without royalty provided the copyright
+ notice and this notice are preserved.
diff -Nrcpad gcc-12.2.0/gcc/ada/Makefile.rtl gcc-13.1.0/gcc/ada/Makefile.rtl
*** gcc-12.2.0/gcc/ada/Makefile.rtl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/Makefile.rtl	Wed Apr 26 07:09:39 2023
*************** GNATRTL_NONTASKING_OBJS= \
*** 110,121 ****
    a-cbprqu$(objext) \
    a-cbsyqu$(objext) \
    a-cdlili$(objext) \
-   a-cfdlli$(objext) \
-   a-cfhama$(objext) \
-   a-cfhase$(objext) \
-   a-cfinve$(objext) \
-   a-cforma$(objext) \
-   a-cforse$(objext) \
    a-cgaaso$(objext) \
    a-cgarso$(objext) \
    a-cgcaso$(objext) \
--- 110,115 ----
*************** GNATRTL_NONTASKING_OBJS= \
*** 126,131 ****
--- 120,127 ----
    a-chlat9$(objext) \
    a-chtgbk$(objext) \
    a-chtgbo$(objext) \
+   a-chtgfk$(objext) \
+   a-chtgfo$(objext) \
    a-chtgke$(objext) \
    a-chtgop$(objext) \
    a-chzla1$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 140,153 ****
    a-clrefi$(objext) \
    a-coboho$(objext) \
    a-cobove$(objext) \
-   a-cofove$(objext) \
-   a-cofuba$(objext) \
-   a-cofuma$(objext) \
-   a-cofuse$(objext) \
-   a-cofuve$(objext) \
    a-cogeso$(objext) \
-   a-cohama$(objext) \
-   a-cohase$(objext) \
    a-cohata$(objext) \
    a-coinho$(objext) \
    a-coinve$(objext) \
--- 136,142 ----
*************** GNATRTL_NONTASKING_OBJS= \
*** 414,419 ****
--- 403,409 ----
    g-arrspl$(objext) \
    g-awk$(objext) \
    g-binenv$(objext) \
+   g-binsea$(objext) \
    g-brapre$(objext) \
    g-bubsor$(objext) \
    g-busora$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 448,453 ****
--- 438,444 ----
    g-exptty$(objext) \
    g-flocon$(objext) \
    g-forstr$(objext) \
+   g-gfmafu$(objext) \
    g-graphs$(objext) \
    g-heasor$(objext) \
    g-hesora$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 735,740 ****
--- 726,732 ----
    s-regpat$(objext) \
    s-resfil$(objext) \
    s-restri$(objext) \
+   s-retsta$(objext) \
    s-rident$(objext) \
    s-rpc$(objext)    \
    s-scaval$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 744,749 ****
--- 736,743 ----
    s-shasto$(objext) \
    s-soflin$(objext) \
    s-soliin$(objext) \
+   s-spark$(objext) \
+   s-spcuop$(objext) \
    s-spsufi$(objext) \
    s-stache$(objext) \
    s-stalib$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 769,774 ****
--- 763,769 ----
    s-vaenu8$(objext) \
    s-vafi32$(objext) \
    s-vafi64$(objext) \
+   s-vaispe$(objext) \
    s-valboo$(objext) \
    s-valcha$(objext) \
    s-valflt$(objext) \
*************** GNATRTL_NONTASKING_OBJS= \
*** 787,792 ****
--- 782,788 ----
    s-valuns$(objext) \
    s-valuti$(objext) \
    s-valwch$(objext) \
+   s-vauspe$(objext) \
    s-veboop$(objext) \
    s-vector$(objext) \
    s-vercon$(objext) \
*************** ATOMICS_TARGET_PAIRS = \
*** 894,900 ****
  ATOMICS_BUILTINS_TARGET_PAIRS = \
    s-atocou.adb<libgnat/s-atocou__builtin.adb
  
! # Special version of units for x86 and x86-64 platforms.
  
  X86_TARGET_PAIRS = \
    a-nuauco.ads<libgnat/a-nuauco__x86.ads \
--- 890,896 ----
  ATOMICS_BUILTINS_TARGET_PAIRS = \
    s-atocou.adb<libgnat/s-atocou__builtin.adb
  
! # Special version of units for x86 and x86-64 platforms
  
  X86_TARGET_PAIRS = \
    a-nuauco.ads<libgnat/a-nuauco__x86.ads \
*************** X86_64_TARGET_PAIRS = \
*** 904,910 ****
    a-nuauco.ads<libgnat/a-nuauco__x86.ads \
    s-atocou.adb<libgnat/s-atocou__builtin.adb
  
! # Implementation of symbolic traceback based on dwarf
  TRASYM_DWARF_UNIX_PAIRS = \
    s-trasym.adb<libgnat/s-trasym__dwarf.adb \
    s-mmosin.ads<libgnat/s-mmosin__unix.ads \
--- 900,913 ----
    a-nuauco.ads<libgnat/a-nuauco__x86.ads \
    s-atocou.adb<libgnat/s-atocou__builtin.adb
  
! # Special version of units for platforms with SIMD math functions
! 
! SIMD_PATH_TARGET_PAIRS = \
!   a-nalofl.ads<libgnat/a-nalofl__simd.ads \
!   a-nuaufl.ads<libgnat/a-nuaufl__simd.ads
! 
! # Implementation of symbolic traceback based on DWARF
! 
  TRASYM_DWARF_UNIX_PAIRS = \
    s-trasym.adb<libgnat/s-trasym__dwarf.adb \
    s-mmosin.ads<libgnat/s-mmosin__unix.ads \
*************** TRASYM_DWARF_MINGW_PAIRS = \
*** 916,928 ****
    s-mmosin.ads<libgnat/s-mmosin__mingw.ads \
    s-mmosin.adb<libgnat/s-mmosin__mingw.adb
  
! TRASYM_DWARF_COMMON_OBJS = s-objrea$(objext) s-dwalin$(objext) s-mmap$(objext) \
    s-mmosin$(objext)
  
  TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_COMMON_OBJS) s-mmauni$(objext)
  
  TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)
  
  GNATRTL_128BIT_PAIRS = \
    a-decima.ads<libgnat/a-decima__128.ads \
    a-tideio.adb<libgnat/a-tideio__128.adb \
--- 919,936 ----
    s-mmosin.ads<libgnat/s-mmosin__mingw.ads \
    s-mmosin.adb<libgnat/s-mmosin__mingw.adb
  
! TRASYM_DWARF_COMMON_OBJS = \
!   s-objrea$(objext) \
!   s-dwalin$(objext) \
!   s-mmap$(objext)   \
    s-mmosin$(objext)
  
  TRASYM_DWARF_UNIX_OBJS = $(TRASYM_DWARF_COMMON_OBJS) s-mmauni$(objext)
  
  TRASYM_DWARF_MINGW_OBJS = $(TRASYM_DWARF_COMMON_OBJS)
  
+ # Support for 128-bit types
+ 
  GNATRTL_128BIT_PAIRS = \
    a-decima.ads<libgnat/a-decima__128.ads \
    a-tideio.adb<libgnat/a-tideio__128.adb \
*************** GNATRTL_128BIT_PAIRS = \
*** 941,947 ****
    s-scaval.ads<libgnat/s-scaval__128.ads \
    s-scaval.adb<libgnat/s-scaval__128.adb
  
- # Objects needed for 128-bit types
  GNATRTL_128BIT_OBJS = \
    s-arit128$(objext) \
    s-casi128$(objext) \
--- 949,954 ----
*************** GCC_SPEC_FILES=
*** 1059,1079 ****
  # $(strip STRING) removes leading and trailing spaces from STRING.
  # If what's left is null then it's a match.
  
! # PowerPC and e500v2 VxWorks
! ifeq ($(strip $(filter-out powerpc% wrs vxworks vxworksspe vxworks7% vxworks7spe,$(target_cpu) $(target_vendor) $(target_os))),)
  
!   ifeq ($(strip $(filter-out e500%, $(target_alias))),)
!      ARCH_STR=e500
!      # gcc config translates the target e500v2-wrs-vxworks to
!      # powerpc-wrs-vxworksspe. Let's keep the original alias here when
!      # generating s-oscons.ads.
!      target=$(target_alias)
    else
!      ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
!         ARCH_STR=ppc64
!      else
!         ARCH_STR=ppc
!      endif
    endif
  
    VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
--- 1066,1078 ----
  # $(strip STRING) removes leading and trailing spaces from STRING.
  # If what's left is null then it's a match.
  
! # PowerPC VxWorks6 and VxWorks7
! ifeq ($(strip $(filter-out powerpc% wrs vxworks vxworks7%, $(target_cpu) $(target_vendor) $(target_os))),)
  
!   ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
!      ARCH_STR=ppc64
    else
!      ARCH_STR=ppc
    endif
  
    VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1104,1123 ****
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS)
  
-   # VxWorks 5 and 6 both use the same target triplet making them
-   # indistinguishable in the context of this make file. Package
-   # System.Stack_Checking.Operations is not needed on VxWorks 6 as it leads to
-   # an undefined symbol when building a dynamic shared library. To alleviate
-   # this problem and distinguish this case, we use the THREAD_KIND and include
-   # the package only in default mode.
- 
-   ifeq ($(strip $(filter-out default,$(THREAD_KIND))),)
-     LIBGNAT_TARGET_PAIRS += \
-       s-stchop.ads<libgnat/s-stchop__limit.ads \
-       s-stchop.adb<libgnat/s-stchop__vxworks.adb
-     EXTRA_GNATRTL_NONTASKING_OBJS+=s-stchop.o
-   endif
- 
    ifeq ($(strip $(filter-out powerpc64, $(target_cpu))),)
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
--- 1103,1108 ----
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1125,1130 ****
--- 1110,1118 ----
  
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
+   EH_MECHANISM=-gcc
+ 
+   # The rtp and kernel sections must be retained for the sake of ppc-vx6
    ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1132,1138 ****
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
      system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp.ads
  
-     EH_MECHANISM=-gcc
    else
      ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
--- 1120,1125 ----
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1142,1148 ****
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
        system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
  
-       EH_MECHANISM=-gcc
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
        ifeq ($(strip $(filter-out kernel-smp,$(THREAD_KIND))),)
--- 1129,1134 ----
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1154,1172 ****
          s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
          system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
  
-         EH_MECHANISM=-gcc
          EXTRA_LIBGNAT_OBJS+=affinity.o
        else
-         LIBGNAT_TARGET_PAIRS += \
-         s-interr.adb<libgnarl/s-interr__vxworks.adb \
-         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb
- 
          ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
-           EH_MECHANISM=-gcc
            LIBGNAT_TARGET_PAIRS += \
            s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
            s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
            system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
          endif
        endif
        EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
--- 1140,1156 ----
          s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
          system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
  
          EXTRA_LIBGNAT_OBJS+=affinity.o
        else
          ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
            LIBGNAT_TARGET_PAIRS += \
+           s-interr.adb<libgnarl/s-interr__vxworks.adb \
+           s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
            s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
            s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
            system.ads<libgnat/$(SVX)-$(ARCH_STR)-kernel.ads
+         else
+           RTSERR = $(error NO SUCH RUNTIME)
          endif
        endif
        EXTRA_GNATRTL_NONTASKING_OBJS+=i-vxinco.o i-vxwork.o i-vxwoio.o
*************** ifeq ($(strip $(filter-out powerpc% wrs
*** 1186,1201 ****
      else
        GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
      endif
-     GCC_SPEC_FILES+=vxworks7-cert-rtp-link__ppcXX.spec
    else
      GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
-     GCC_SPEC_FILES+=vxworks-cert-$(ARCH_STR)-link.spec
      GCC_SPEC_FILES+=vxworks-smp-$(ARCH_STR)-link.spec
    endif
  endif
  
! # x86/x86_64 VxWorks
! ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks vxworks7%,$(target_cpu) $(target_vendor) $(target_os))),)
  
    LIBGNAT_TARGET_PAIRS= \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
--- 1170,1183 ----
      else
        GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
      endif
    else
      GCC_SPEC_FILES+=vxworks-$(ARCH_STR)-link.spec
      GCC_SPEC_FILES+=vxworks-smp-$(ARCH_STR)-link.spec
    endif
  endif
  
! # x86/x86_64 VxWorks7
! ifeq ($(strip $(filter-out %86 x86_64 wrs vxworks7%, $(target_cpu) $(target_vendor) $(target_os))),)
  
    LIBGNAT_TARGET_PAIRS= \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1223,1231 ****
    g-stsifd.adb<libgnat/g-stsifd__sockets.adb \
    $(ATOMICS_TARGET_PAIRS)
  
-   VX=$(strip $(if $(filter vxworks7%, $(target_os)), vxworks7, vxworks))
-   SVX=system-$(VX)
- 
    ifeq ($(strip $(filter-out x86_64, $(target_cpu))),)
       X86CPU=x86_64
       LIBGNAT_TARGET_PAIRS += $(X86_64_TARGET_PAIRS)
--- 1205,1210 ----
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1242,1323 ****
  
    # The CPU setting for VxSim varies with the
    # host (Windows or Linux)
-   # target (VxWorks6 or VxWorks7)
    # runtime (rtp or kernel)
    # -------------------------------------------------------------
!   #					vx6		vx7
    # Windows (host_os = mingw32)
!   #	kernel				SIMNT		SIMNT
!   #	rtp				SIMPENTIUM	SIMNT
    # Linux (host_os = linux-gnu)
!   #	kernel				SIMLINUX	SIMLINUX
!   #	rtp				SIMPENTIUM	SIMLINUX
    # -------------------------------------------------------------
    # It is overridden by VXSIM_CPU only in files init-vxsim.c and
    # sigtramp-vxworks-vxsim.c which contain functions determined at
    # runtime to be called if a program is running on VxSim vs real hardware
    # (due to differences in signal context for unwinding).
  
!   ifneq ($(strip $(filter-out vxworks7, $(target_os))),)
!     ifeq ($(strip $(filter-out vxworks rtp rtp-smp,$(target_os) $(THREAD_KIND))),)
!       VXSIM_CPU = SIMPENTIUM
!     else
!       ifeq ($(strip $(filter-out kernel kernel-smp rtp rtp-smp,$(THREAD_KIND))),)
!         ifeq ($(strip $(filter-out linux%,$(host_os))),)
!           # Linux
!           VXSIM_CPU = SIMLINUX
!         else
!           # Windows
!           VXSIM_CPU = SIMNT
!         endif
!       endif
!     endif
! 
!     GNATLIBCFLAGS_FOR_C := $(GNATLIBCFLAGS_FOR_C) -D__VXSIM_CPU__=$(VXSIM_CPU)
    endif
  
!   ifeq ($(strip $(filter-out rtp,$(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
!     s-vxwext.adb<libgnarl/s-vxwext__rtp.adb \
!     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-rtp.adb \
!     system.ads<libgnat/$(SVX)-x86-rtp.ads
    else
!     ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
        s-mudido.adb<libgnarl/s-mudido__affinity.adb \
-       s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
-       s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
!       system.ads<libgnat/$(SVX)-$(X86CPU)-rtp-smp.ads
  
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
!       ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
!         LIBGNAT_TARGET_PAIRS += \
!         s-interr.adb<libgnarl/s-interr__vxworks.adb \
!         s-mudido.adb<libgnarl/s-mudido__affinity.adb \
!         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
!         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
!         s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
!         system.ads<libgnat/$(SVX)-$(X86CPU)-kernel.ads
! 
!         EXTRA_LIBGNAT_OBJS+=affinity.o
!       else
!         LIBGNAT_TARGET_PAIRS += \
!         s-interr.adb<libgnarl/s-interr__vxworks.adb \
!         s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb
! 
!         ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
!           LIBGNAT_TARGET_PAIRS += \
!           s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
!           s-vxwext.adb<libgnarl/s-vxwext__kernel.adb \
!           system.ads<libgnat/$(SVX)-x86-kernel.ads
!         endif
!       endif
! 
!       EXTRA_GNATRTL_NONTASKING_OBJS += i-vxinco.o i-vxwork.o i-vxwoio.o
      endif
    endif
  
    EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
--- 1221,1276 ----
  
    # The CPU setting for VxSim varies with the
    # host (Windows or Linux)
    # runtime (rtp or kernel)
    # -------------------------------------------------------------
!   #					vx7
    # Windows (host_os = mingw32)
!   #	kernel				SIMNT
!   #	rtp				SIMNT
    # Linux (host_os = linux-gnu)
!   #	kernel				SIMLINUX
!   #	rtp				SIMLINUX
    # -------------------------------------------------------------
    # It is overridden by VXSIM_CPU only in files init-vxsim.c and
    # sigtramp-vxworks-vxsim.c which contain functions determined at
    # runtime to be called if a program is running on VxSim vs real hardware
    # (due to differences in signal context for unwinding).
  
!   ifeq ($(strip $(filter-out linux%,$(host_os))),)
!     # Linux
!     VXSIM_CPU = SIMLINUX
!   else
!     # Windows
!     VXSIM_CPU = SIMNT
    endif
  
!   GNATLIBCFLAGS_FOR_C := $(GNATLIBCFLAGS_FOR_C) -D__VXSIM_CPU__=$(VXSIM_CPU)
! 
!   ifeq ($(strip $(filter-out rtp-smp, $(THREAD_KIND))),)
      LIBGNAT_TARGET_PAIRS += \
+     s-mudido.adb<libgnarl/s-mudido__affinity.adb \
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
!     s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
!     s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
!     system.ads<libgnat/system-vxworks7-$(X86CPU)-rtp-smp.ads
! 
!     EXTRA_LIBGNAT_OBJS+=affinity.o
    else
!     ifeq ($(strip $(filter-out kernel-smp, $(THREAD_KIND))),)
        LIBGNAT_TARGET_PAIRS += \
+       s-interr.adb<libgnarl/s-interr__vxworks.adb \
        s-mudido.adb<libgnarl/s-mudido__affinity.adb \
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
!       s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
!       s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
!       system.ads<libgnat/system-vxworks7-$(X86CPU)-kernel.ads
  
        EXTRA_LIBGNAT_OBJS+=affinity.o
      else
!       RTSERR = $(error NO SUCH RUNTIME)
      endif
+ 
+     EXTRA_GNATRTL_NONTASKING_OBJS += i-vxinco.o i-vxwork.o i-vxwoio.o
    endif
  
    EXTRA_GNATRTL_NONTASKING_OBJS += s-stchop.o
*************** ifeq ($(strip $(filter-out %86 x86_64 wr
*** 1328,1345 ****
    EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
    EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
  
!   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!     GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
!     GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
!   else
!     GCC_SPEC_FILES+=vxworks-x86-link.spec
!     GCC_SPEC_FILES+=vxworks-cert-x86-link.spec
!     GCC_SPEC_FILES+=vxworks-smp-x86-link.spec
!   endif
  endif
  
! # ARM and Aarch64 VxWorks
! ifeq ($(strip $(filter-out aarch64 arm% coff wrs vx%,$(target_cpu) $(target_vendor) $(target_os))),)
  
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
--- 1281,1291 ----
    EXTRA_LIBGNAT_OBJS+=sigtramp-vxworks.o
    EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
  
!   GCC_SPEC_FILES+=vxworks7-$(X86CPU)-rtp-base-link.spec
  endif
  
! # ARM and Aarch64 VxWorks7
! ifeq ($(strip $(filter-out aarch64 arm wrs vxworks7%, $(target_cpu) $(target_vendor) $(target_os))),)
  
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__vxworks.ads \
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1369,1375 ****
  
    ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
      ARCH_STR=aarch64
-     VX=vxworks7
      EH_MECHANISM=-gcc
      SIGTRAMP_OBJ=sigtramp-vxworks.o
      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS) \
--- 1315,1320 ----
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1377,1402 ****
        s-dorepr.adb<libgnat/s-dorepr__fma.adb
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    else
!     ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
!       ARCH_STR=arm
!       ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!         VX=vxworks7
!         EH_MECHANISM=-arm
!         SIGTRAMP_OBJ=sigtramp-armvxworks.o
!       else
!         VX=vxworks
!         EH_MECHANISM=-gcc
!         SIGTRAMP_OBJ=sigtramp-vxworks.o
!       endif
!     else
!       ARCH_STR=coff
!     endif
    endif
  
    LIBGNAT_TARGET_PAIRS += s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads
  
-   SVX=system-$(VX)
- 
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
--- 1322,1334 ----
        s-dorepr.adb<libgnat/s-dorepr__fma.adb
      EXTRA_GNATRTL_NONTASKING_OBJS += $(GNATRTL_128BIT_OBJS)
    else
!     ARCH_STR=arm
!     EH_MECHANISM=-arm
!     SIGTRAMP_OBJ=sigtramp-armvxworks.o
    endif
  
    LIBGNAT_TARGET_PAIRS += s-vxwork.ads<libgnarl/s-vxwork__$(ARCH_STR).ads
  
    TOOLS_TARGET_PAIRS=indepsw.adb<indepsw-gnu.adb
  
    ifeq ($(strip $(filter-out rtp-smp,$(THREAD_KIND))),)
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1405,1411 ****
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
      s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
!     system.ads<libgnat/$(SVX)-$(ARCH_STR)-rtp-smp.ads
  
      EXTRA_LIBGNAT_OBJS+=affinity.o
  
--- 1337,1343 ----
      s-vxwext.ads<libgnarl/s-vxwext__rtp.ads \
      s-vxwext.adb<libgnarl/s-vxwext__rtp-smp.adb \
      s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
!     system.ads<libgnat/system-vxworks7-$(ARCH_STR)-rtp-smp.ads
  
      EXTRA_LIBGNAT_OBJS+=affinity.o
  
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1418,1442 ****
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
        s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
        s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
!       system.ads<libgnat/$(SVX)-$(ARCH_STR).ads
  
        EXTRA_LIBGNAT_OBJS+=affinity.o
  
        EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
        EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
      else
!       LIBGNAT_TARGET_PAIRS += \
!       s-tpopsp.adb<libgnarl/s-tpopsp__vxworks.adb \
!       system.ads<libgnat/$(SVX)-$(ARCH_STR).ads
! 
!       ifeq ($(strip $(filter-out kernel,$(THREAD_KIND))),)
!         LIBGNAT_TARGET_PAIRS += \
!         s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
!         s-vxwext.adb<libgnarl/s-vxwext__kernel.adb
! 
!         EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
!         EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
!       endif
      endif
    endif
  
--- 1350,1363 ----
        s-tpopsp.adb<libgnarl/s-tpopsp__vxworks-tls.adb \
        s-vxwext.ads<libgnarl/s-vxwext__kernel.ads \
        s-vxwext.adb<libgnarl/s-vxwext__kernel-smp.adb \
!       system.ads<libgnat/system-vxworks7-$(ARCH_STR).ads
  
        EXTRA_LIBGNAT_OBJS+=affinity.o
  
        EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
        EXTRA_LIBGNAT_SRCS+=$(VX_SIGTRAMP_EXTRA_SRCS)
      else
!       RTSERR = $(error NO SUCH RUNTIME)
      endif
    endif
  
*************** ifeq ($(strip $(filter-out aarch64 arm%
*** 1445,1465 ****
  
    EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  
!   ifeq ($(strip $(filter-out arm vxworks7%, $(target_cpu) $(target_os))),)
!     GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
!   else
!     ifeq ($(strip $(filter-out aarch64, $(target_cpu))),)
!       GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
!     endif
! 
!     ifneq ($(strip $(filter-out vxworks7%, $(target_os))),)
!       GCC_SPEC_FILES+=vxworks-arm-link.spec
!       GCC_SPEC_FILES+=vxworks-smp-arm-link.spec
!     endif
!   endif
!   ifeq ($(strip $(filter-out vxworks7%, $(target_os))),)
!     GCC_SPEC_FILES+=vxworks7-cert-rtp-link.spec
!   endif
  endif
  
  # ARM android
--- 1366,1372 ----
  
    EXTRA_LIBGNAT_OBJS+=vx_stack_info.o
  
!   GCC_SPEC_FILES+=vxworks7-rtp-base-link.spec
  endif
  
  # ARM android
*************** ifeq ($(strip $(filter-out arm% linux-an
*** 1490,1501 ****
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # AARCH64 QNX
! ifeq ($(strip $(filter-out aarch64 %qnx,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__qnx.ads \
    a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
-   s-dorepr.adb<libgnat/s-dorepr__fma.adb \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__qnx.adb \
    s-osinte.adb<libgnarl/s-osinte__qnx.adb \
--- 1397,1407 ----
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
! # ARM and AARCH64 QNX
! ifeq ($(strip $(filter-out arm aarch64 %qnx,$(target_cpu) $(target_os))),)
    LIBGNAT_TARGET_PAIRS = \
    a-intnam.ads<libgnarl/a-intnam__qnx.ads \
    a-nallfl.ads<libgnat/a-nallfl__wraplf.ads \
    s-inmaop.adb<libgnarl/s-inmaop__posix.adb \
    s-intman.adb<libgnarl/s-intman__qnx.adb \
    s-osinte.adb<libgnarl/s-osinte__qnx.adb \
*************** ifeq ($(strip $(filter-out aarch64 %qnx,
*** 1508,1528 ****
    g-soliop.ads<libgnat/g-soliop__qnx.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   $(GNATRTL_128BIT_PAIRS) \
!   system.ads<libgnat/system-qnx-aarch64.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
-   EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
    EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
!   EXTRA_LIBGNAT_OBJS+=sigtramp-qnx.o
    EXTRA_LIBGNAT_SRCS+=sigtramp.h
-   EH_MECHANISM=-gcc
  
    SO_OPTS= -shared-libgcc -Wl,-soname,
    MISCLIB= -lsocket
    THREADSLIB=
-   GNATLIB_SHARED = gnatlib-shared-dual
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
--- 1414,1444 ----
    g-soliop.ads<libgnat/g-soliop__qnx.ads \
    $(ATOMICS_TARGET_PAIRS) \
    $(ATOMICS_BUILTINS_TARGET_PAIRS) \
!   system.ads<libgnat/system-qnx-arm.ads
  
    TOOLS_TARGET_PAIRS = indepsw.adb<indepsw-gnu.adb
  
    EXTRA_GNATRTL_TASKING_OBJS=s-qnx.o
!   ifeq ($(strip $(filter-out arm%, $(target_cpu))),)
!      EH_MECHANISM=-arm
!      SIGTRAMP_OBJ=sigtramp-arm-qnx.o
!   else
!      EH_MECHANISM=-gcc
!      SIGTRAMP_OBJ=sigtramp-qnx.o
!      # "fma*" instructions not available for ARM fpu=vfpv3
!      # but not an issue on AARCH64.
!      LIBGNAT_TARGET_PAIRS += \
!        s-dorepr.adb<libgnat/s-dorepr__fma.adb
!      LIBGNAT_TARGET_PAIRS += $(GNATRTL_128BIT_PAIRS)
!      EXTRA_GNATRTL_NONTASKING_OBJS = $(GNATRTL_128BIT_OBJS)
!   endif
!   GNATLIB_SHARED = gnatlib-shared-dual
!   EXTRA_LIBGNAT_OBJS+=$(SIGTRAMP_OBJ)
    EXTRA_LIBGNAT_SRCS+=sigtramp.h
  
    SO_OPTS= -shared-libgcc -Wl,-soname,
    MISCLIB= -lsocket
    THREADSLIB=
    LIBRARY_VERSION := $(LIB_VERSION)
  endif
  
*************** ifeq ($(strip $(filter-out %x86_64 linux
*** 2611,2616 ****
--- 2527,2533 ----
    s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
+   $(SIMD_PATH_TARGET_PAIRS) \
    $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-linux-x86.ads
  
*************** ifeq ($(strip $(filter-out %x32 linux%,$
*** 2655,2660 ****
--- 2572,2578 ----
    s-tsmona.adb<libgnat/s-tsmona__linux.adb \
    $(ATOMICS_TARGET_PAIRS) \
    $(X86_64_TARGET_PAIRS) \
+   $(SIMD_PATH_TARGET_PAIRS) \
    $(GNATRTL_128BIT_PAIRS) \
    system.ads<libgnat/system-linux-x86.ads
  
*************** endif
*** 2852,2858 ****
  
  # Turn on shared gnatlib for specific vx7r2 targets for RTP runtimes. Once
  # all targets are ported the target_cpu selector can be removed.
! ifeq ($(strip $(filter-out vxworks7r2 powerpc64 x86_64 rtp rtp-smp, $(target_os) $(target_cpu) $(THREAD_KIND))),)
      GNATLIB_SHARED = gnatlib-shared-dual
      LIBRARY_VERSION := $(LIB_VERSION)
  endif
--- 2770,2776 ----
  
  # Turn on shared gnatlib for specific vx7r2 targets for RTP runtimes. Once
  # all targets are ported the target_cpu selector can be removed.
! ifeq ($(strip $(filter-out vxworks7r2 powerpc64 x86_64 aarch64 rtp rtp-smp, $(target_os) $(target_cpu) $(THREAD_KIND))),)
      GNATLIB_SHARED = gnatlib-shared-dual
      LIBRARY_VERSION := $(LIB_VERSION)
  endif
*************** ADA_EXCLUDE_SRCS =\
*** 2914,2919 ****
--- 2832,2838 ----
    s-linux.ads  s-vxwext.adb s-vxwext.ads s-win32.ads  s-winext.ads \
    s-stchop.ads s-stchop.adb \
    s-strcom.adb s-strcom.ads s-thread.ads \
+   s-qnx.ads \
  
  # ADA_EXCLUDE_SRCS without the sources used by the target
  ADA_EXCLUDE_FILES=$(filter-out \
*************** ADA_EXCLUDE_FILES=$(filter-out \
*** 2921,2927 ****
    $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
    $(ADA_EXCLUDE_SRCS))
  
! setup-rts: force
  	$(RMDIR) $(RTSDIR)
  	$(MKDIR) $(RTSDIR)
  	$(CHMOD) u+w $(RTSDIR)
--- 2840,2849 ----
    $(patsubst %$(objext),%.adb,$(GNATRTL_OBJS)), \
    $(ADA_EXCLUDE_SRCS))
  
! .PHONY: rts-err
! rts-err: ; $(RTSERR)
! 
! setup-rts: rts-err force
  	$(RMDIR) $(RTSDIR)
  	$(MKDIR) $(RTSDIR)
  	$(CHMOD) u+w $(RTSDIR)
diff -Nrcpad gcc-12.2.0/gcc/ada/accessibility.adb gcc-13.1.0/gcc/ada/accessibility.adb
*** gcc-12.2.0/gcc/ada/accessibility.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/accessibility.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,2305 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                        A C C E S S I B I L I T Y                         --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Atree;          use Atree;
+ with Checks;         use Checks;
+ with Debug;          use Debug;
+ with Einfo;          use Einfo;
+ with Einfo.Entities; use Einfo.Entities;
+ with Elists;         use Elists;
+ with Errout;         use Errout;
+ with Einfo.Utils;    use Einfo.Utils;
+ with Exp_Atag;       use Exp_Atag;
+ with Exp_Ch3;        use Exp_Ch3;
+ with Exp_Ch7;        use Exp_Ch7;
+ with Exp_Tss;        use Exp_Tss;
+ with Exp_Util;       use Exp_Util;
+ with Namet;          use Namet;
+ with Nlists;         use Nlists;
+ with Nmake;          use Nmake;
+ with Opt;            use Opt;
+ with Restrict;       use Restrict;
+ with Rtsfind;        use Rtsfind;
+ with Sem;            use Sem;
+ with Sem_Aux;        use Sem_Aux;
+ with Sem_Ch8;        use Sem_Ch8;
+ with Sem_Res;        use Sem_Res;
+ with Sem_Util;       use Sem_Util;
+ with Sinfo;          use Sinfo;
+ with Sinfo.Nodes;    use Sinfo.Nodes;
+ with Sinfo.Utils;    use Sinfo.Utils;
+ with Snames;         use Snames;
+ with Stand;          use Stand;
+ with Tbuild;         use Tbuild;
+ 
+ package body Accessibility is
+ 
+    ---------------------------
+    -- Accessibility_Message --
+    ---------------------------
+ 
+    procedure Accessibility_Message (N : Node_Id; Typ : Entity_Id) is
+       Loc   : constant Source_Ptr := Sloc (N);
+       P     : constant Node_Id    := Prefix (N);
+       Indic : Node_Id             := Parent (Parent (N));
+ 
+    begin
+       --  In an instance, this is a runtime check, but one we know will fail,
+       --  so generate an appropriate warning.
+ 
+       if In_Instance_Body then
+          Error_Msg_Warn := SPARK_Mode /= On;
+          Error_Msg_F
+            ("non-local pointer cannot point to local object<<", P);
+          Error_Msg_F ("\Program_Error [<<", P);
+          Rewrite (N,
+            Make_Raise_Program_Error (Loc,
+              Reason => PE_Accessibility_Check_Failed));
+          Set_Etype (N, Typ);
+          return;
+ 
+       else
+          Error_Msg_F ("non-local pointer cannot point to local object", P);
+ 
+          --  Check for case where we have a missing access definition
+ 
+          if Is_Record_Type (Current_Scope)
+            and then
+              Nkind (Parent (N)) in N_Discriminant_Association
+                                  | N_Index_Or_Discriminant_Constraint
+          then
+             Indic := Parent (Parent (N));
+             while Present (Indic)
+               and then Nkind (Indic) /= N_Subtype_Indication
+             loop
+                Indic := Parent (Indic);
+             end loop;
+ 
+             if Present (Indic) then
+                Error_Msg_NE
+                  ("\use an access definition for" &
+                   " the access discriminant of&",
+                   N, Entity (Subtype_Mark (Indic)));
+             end if;
+          end if;
+       end if;
+    end Accessibility_Message;
+ 
+    -------------------------
+    -- Accessibility_Level --
+    -------------------------
+ 
+    function Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False;
+       Allow_Alt_Model   : Boolean := True) return Node_Id
+    is
+       Loc : constant Source_Ptr := Sloc (Expr);
+ 
+       function Accessibility_Level (Expr : Node_Id) return Node_Id
+         is (Accessibility_Level (Expr, Level, In_Return_Context));
+       --  Renaming of the enclosing function to facilitate recursive calls
+ 
+       function Make_Level_Literal (Level : Uint) return Node_Id;
+       --  Construct an integer literal representing an accessibility level with
+       --  its type set to Natural.
+ 
+       function Innermost_Master_Scope_Depth (N : Node_Id) return Uint;
+       --  Returns the scope depth of the given node's innermost enclosing scope
+       --  (effectively the accessibility level of the innermost enclosing
+       --  master).
+ 
+       function Function_Call_Or_Allocator_Level (N : Node_Id) return Node_Id;
+       --  Centralized processing of subprogram calls which may appear in prefix
+       --  notation.
+ 
+       function Typ_Access_Level (Typ : Entity_Id) return Uint
+         is (Type_Access_Level (Typ, Allow_Alt_Model));
+       --  Renaming of Type_Access_Level with Allow_Alt_Model specified to avoid
+       --  passing the parameter specifically in every call.
+ 
+       ----------------------------------
+       -- Innermost_Master_Scope_Depth --
+       ----------------------------------
+ 
+       function Innermost_Master_Scope_Depth (N : Node_Id) return Uint is
+          Encl_Scop           : Entity_Id;
+          Ent                 : Entity_Id;
+          Node_Par            : Node_Id := Parent (N);
+          Master_Lvl_Modifier : Int     := 0;
+ 
+       begin
+          --  Locate the nearest enclosing node (by traversing Parents)
+          --  that Defining_Entity can be applied to, and return the
+          --  depth of that entity's nearest enclosing scope.
+ 
+          --  The RM 7.6.1(3) definition of "master" includes statements
+          --  and conditions for loops among other things. Are these cases
+          --  detected properly ???
+ 
+          while Present (Node_Par) loop
+             Ent := Defining_Entity_Or_Empty (Node_Par);
+ 
+             if Present (Ent) then
+                Encl_Scop := Find_Enclosing_Scope (Ent);
+ 
+                --  Ignore transient scopes made during expansion while also
+                --  taking into account certain expansions - like iterators
+                --  which get expanded into renamings and thus not marked
+                --  as coming from source.
+ 
+                if Comes_From_Source (Node_Par)
+                  or else (Nkind (Node_Par) = N_Object_Renaming_Declaration
+                            and then Comes_From_Iterator (Node_Par))
+                then
+                   --  Note that in some rare cases the scope depth may not be
+                   --  set, for example, when we are in the middle of analyzing
+                   --  a type and the enclosing scope is said type. So, instead,
+                   --  continue to move up the parent chain since the scope
+                   --  depth of the type's parent is the same as that of the
+                   --  type.
+ 
+                   if not Scope_Depth_Set (Encl_Scop) then
+                      pragma Assert (Nkind (Parent (Encl_Scop))
+                                      = N_Full_Type_Declaration);
+                   else
+                      return
+                        Scope_Depth (Encl_Scop) + Master_Lvl_Modifier;
+                   end if;
+                end if;
+ 
+             --  For a return statement within a function, return
+             --  the depth of the function itself. This is not just
+             --  a small optimization, but matters when analyzing
+             --  the expression in an expression function before
+             --  the body is created.
+ 
+             elsif Nkind (Node_Par) in N_Extended_Return_Statement
+                                     | N_Simple_Return_Statement
+             then
+                return Scope_Depth (Enclosing_Subprogram (Node_Par));
+ 
+             --  Statements are counted as masters
+ 
+             elsif Is_Master (Node_Par) then
+                Master_Lvl_Modifier := Master_Lvl_Modifier + 1;
+ 
+             end if;
+ 
+             Node_Par := Parent (Node_Par);
+          end loop;
+ 
+          --  Should never reach the following return
+ 
+          pragma Assert (False);
+ 
+          return Scope_Depth (Current_Scope) + 1;
+       end Innermost_Master_Scope_Depth;
+ 
+       ------------------------
+       -- Make_Level_Literal --
+       ------------------------
+ 
+       function Make_Level_Literal (Level : Uint) return Node_Id is
+          Result : constant Node_Id := Make_Integer_Literal (Loc, Level);
+ 
+       begin
+          Set_Etype (Result, Standard_Natural);
+          return Result;
+       end Make_Level_Literal;
+ 
+       --------------------------------------
+       -- Function_Call_Or_Allocator_Level --
+       --------------------------------------
+ 
+       function Function_Call_Or_Allocator_Level (N : Node_Id) return Node_Id is
+          Par      : Node_Id;
+          Prev_Par : Node_Id;
+       begin
+          --  Results of functions are objects, so we either get the
+          --  accessibility of the function or, in case of a call which is
+          --  indirect, the level of the access-to-subprogram type.
+ 
+          --  This code looks wrong ???
+ 
+          if Nkind (N) = N_Function_Call
+            and then Ada_Version < Ada_2005
+          then
+             if Is_Entity_Name (Name (N)) then
+                return Make_Level_Literal
+                         (Subprogram_Access_Level (Entity (Name (N))));
+             else
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (Prefix (Name (N)))));
+             end if;
+ 
+          --  We ignore coextensions as they cannot be implemented under the
+          --  "small-integer" model.
+ 
+          elsif Nkind (N) = N_Allocator
+            and then (Is_Static_Coextension (N)
+                       or else Is_Dynamic_Coextension (N))
+          then
+             return Make_Level_Literal (Scope_Depth (Standard_Standard));
+          end if;
+ 
+          --  Named access types have a designated level
+ 
+          if Is_Named_Access_Type (Etype (N)) then
+             return Make_Level_Literal (Typ_Access_Level (Etype (N)));
+ 
+          --  Otherwise, the level is dictated by RM 3.10.2 (10.7/3)
+ 
+          else
+             --  Check No_Dynamic_Accessibility_Checks restriction override for
+             --  alternative accessibility model.
+ 
+             if Allow_Alt_Model
+               and then No_Dynamic_Accessibility_Checks_Enabled (N)
+               and then Is_Anonymous_Access_Type (Etype (N))
+             then
+                --  In the alternative model the level is that of the
+                --  designated type.
+ 
+                if Debug_Flag_Underscore_B then
+                   return Make_Level_Literal (Typ_Access_Level (Etype (N)));
+ 
+                --  For function calls the level is that of the innermost
+                --  master, otherwise (for allocators etc.) we get the level
+                --  of the corresponding anonymous access type, which is
+                --  calculated through the normal path of execution.
+ 
+                elsif Nkind (N) = N_Function_Call then
+                   return Make_Level_Literal
+                            (Innermost_Master_Scope_Depth (Expr));
+                end if;
+             end if;
+ 
+             if Nkind (N) = N_Function_Call then
+                --  Dynamic checks are generated when we are within a return
+                --  value or we are in a function call within an anonymous
+                --  access discriminant constraint of a return object (signified
+                --  by In_Return_Context) on the side of the callee.
+ 
+                --  So, in this case, return accessibility level of the
+                --  enclosing subprogram.
+ 
+                if In_Return_Value (N)
+                  or else In_Return_Context
+                then
+                   return Make_Level_Literal
+                            (Subprogram_Access_Level (Current_Subprogram));
+                end if;
+             end if;
+ 
+             --  When the call is being dereferenced the level is that of the
+             --  enclosing master of the dereferenced call.
+ 
+             if Nkind (Parent (N)) in N_Explicit_Dereference
+                                    | N_Indexed_Component
+                                    | N_Selected_Component
+             then
+                return Make_Level_Literal
+                         (Innermost_Master_Scope_Depth (Expr));
+             end if;
+ 
+             --  Find any relevant enclosing parent nodes that designate an
+             --  object being initialized.
+ 
+             --  Note: The above is only relevant if the result is used "in its
+             --  entirety" as RM 3.10.2 (10.2/3) states. However, this is
+             --  accounted for in the case statement in the main body of
+             --  Accessibility_Level for N_Selected_Component.
+ 
+             Par      := Parent (Expr);
+             Prev_Par := Empty;
+             while Present (Par) loop
+                --  Detect an expanded implicit conversion, typically this
+                --  occurs on implicitly converted actuals in calls.
+ 
+                --  Does this catch all implicit conversions ???
+ 
+                if Nkind (Par) = N_Type_Conversion
+                  and then Is_Named_Access_Type (Etype (Par))
+                then
+                   return Make_Level_Literal
+                            (Typ_Access_Level (Etype (Par)));
+                end if;
+ 
+                --  Jump out when we hit an object declaration or the right-hand
+                --  side of an assignment, or a construct such as an aggregate
+                --  subtype indication which would be the result is not used
+                --  "in its entirety."
+ 
+                exit when Nkind (Par) in N_Object_Declaration
+                            or else (Nkind (Par) = N_Assignment_Statement
+                                      and then Name (Par) /= Prev_Par);
+ 
+                Prev_Par := Par;
+                Par      := Parent (Par);
+             end loop;
+ 
+             --  Assignment statements are handled in a similar way in
+             --  accordance to the left-hand part. However, strictly speaking,
+             --  this is illegal according to the RM, but this change is needed
+             --  to pass an ACATS C-test and is useful in general ???
+ 
+             case Nkind (Par) is
+                when N_Object_Declaration =>
+                   return Make_Level_Literal
+                            (Scope_Depth
+                              (Scope (Defining_Identifier (Par))));
+ 
+                when N_Assignment_Statement =>
+                   --  Return the accessibility level of the left-hand part
+ 
+                   return Accessibility_Level
+                            (Expr              => Name (Par),
+                             Level             => Object_Decl_Level,
+                             In_Return_Context => In_Return_Context);
+ 
+                when others =>
+                   return Make_Level_Literal
+                            (Innermost_Master_Scope_Depth (Expr));
+             end case;
+          end if;
+       end Function_Call_Or_Allocator_Level;
+ 
+       --  Local variables
+ 
+       E   : Node_Id := Original_Node (Expr);
+       Pre : Node_Id;
+ 
+    --  Start of processing for Accessibility_Level
+ 
+    begin
+       --  We could be looking at a reference to a formal due to the expansion
+       --  of entries and other cases, so obtain the renaming if necessary.
+ 
+       if Present (Param_Entity (Expr)) then
+          E := Param_Entity (Expr);
+       end if;
+ 
+       --  Extract the entity
+ 
+       if Nkind (E) in N_Has_Entity and then Present (Entity (E)) then
+          E := Entity (E);
+ 
+          --  Deal with a possible renaming of a private protected component
+ 
+          if Ekind (E) in E_Constant | E_Variable and then Is_Prival (E) then
+             E := Prival_Link (E);
+          end if;
+       end if;
+ 
+       --  Perform the processing on the expression
+ 
+       case Nkind (E) is
+          --  The level of an aggregate is that of the innermost master that
+          --  evaluates it as defined in RM 3.10.2 (10/4).
+ 
+          when N_Aggregate =>
+             return Make_Level_Literal (Innermost_Master_Scope_Depth (Expr));
+ 
+          --  The accessibility level is that of the access type, except for an
+          --  anonymous allocators which have special rules defined in RM 3.10.2
+          --  (14/3).
+ 
+          when N_Allocator =>
+             return Function_Call_Or_Allocator_Level (E);
+ 
+          --  We could reach this point for two reasons. Either the expression
+          --  applies to a special attribute ('Loop_Entry, 'Result, or 'Old), or
+          --  we are looking at the access attributes directly ('Access,
+          --  'Address, or 'Unchecked_Access).
+ 
+          when N_Attribute_Reference =>
+             Pre := Original_Node (Prefix (E));
+ 
+             --  Regular 'Access attribute presence means we have to look at the
+             --  prefix.
+ 
+             if Attribute_Name (E) = Name_Access then
+                return Accessibility_Level (Prefix (E));
+ 
+             --  Unchecked or unrestricted attributes have unlimited depth
+ 
+             elsif Attribute_Name (E) in Name_Address
+                                       | Name_Unchecked_Access
+                                       | Name_Unrestricted_Access
+             then
+                return Make_Level_Literal (Scope_Depth (Standard_Standard));
+ 
+             --  'Access can be taken further against other special attributes,
+             --  so handle these cases explicitly.
+ 
+             elsif Attribute_Name (E)
+                     in Name_Old | Name_Loop_Entry | Name_Result
+             then
+                --  Named access types
+ 
+                if Is_Named_Access_Type (Etype (Pre)) then
+                   return Make_Level_Literal
+                            (Typ_Access_Level (Etype (Pre)));
+ 
+                --  Anonymous access types
+ 
+                elsif Nkind (Pre) in N_Has_Entity
+                  and then Ekind (Entity (Pre)) not in Subprogram_Kind
+                  and then Present (Get_Dynamic_Accessibility (Entity (Pre)))
+                  and then Level = Dynamic_Level
+                then
+                   return New_Occurrence_Of
+                            (Get_Dynamic_Accessibility (Entity (Pre)), Loc);
+ 
+                --  Otherwise the level is treated in a similar way as
+                --  aggregates according to RM 6.1.1 (35.1/4) which concerns
+                --  an implicit constant declaration - in turn defining the
+                --  accessibility level to be that of the implicit constant
+                --  declaration.
+ 
+                else
+                   return Make_Level_Literal
+                            (Innermost_Master_Scope_Depth (Expr));
+                end if;
+ 
+             else
+                raise Program_Error;
+             end if;
+ 
+          --  This is the "base case" for accessibility level calculations which
+          --  means we are near the end of our recursive traversal.
+ 
+          when N_Defining_Identifier =>
+             --  A dynamic check is performed on the side of the callee when we
+             --  are within a return statement, so return a library-level
+             --  accessibility level to null out checks on the side of the
+             --  caller.
+ 
+             if Is_Explicitly_Aliased (E)
+               and then (In_Return_Context
+                          or else (Level /= Dynamic_Level
+                                    and then In_Return_Value (Expr)))
+             then
+                return Make_Level_Literal (Scope_Depth (Standard_Standard));
+ 
+             --  Something went wrong and an extra accessibility formal has not
+             --  been generated when one should have ???
+ 
+             elsif Is_Formal (E)
+               and then No (Get_Dynamic_Accessibility (E))
+               and then Ekind (Etype (E)) = E_Anonymous_Access_Type
+             then
+                return Make_Level_Literal (Scope_Depth (Standard_Standard));
+ 
+             --  Stand-alone object of an anonymous access type "SAOAAT"
+ 
+             elsif (Is_Formal (E)
+                     or else Ekind (E) in E_Variable
+                                        | E_Constant)
+               and then Present (Get_Dynamic_Accessibility (E))
+               and then (Level = Dynamic_Level
+                          or else Level = Zero_On_Dynamic_Level)
+             then
+                if Level = Zero_On_Dynamic_Level then
+                   return Make_Level_Literal
+                            (Scope_Depth (Standard_Standard));
+                end if;
+ 
+                --  No_Dynamic_Accessibility_Checks restriction override for
+                --  alternative accessibility model.
+ 
+                if Allow_Alt_Model
+                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
+                then
+                   --  In the alternative model the level is that of the
+                   --  designated type entity's context.
+ 
+                   if Debug_Flag_Underscore_B then
+                      return Make_Level_Literal (Typ_Access_Level (Etype (E)));
+ 
+                   --  Otherwise the level depends on the entity's context
+ 
+                   elsif Is_Formal (E) then
+                      return Make_Level_Literal
+                               (Subprogram_Access_Level
+                                 (Enclosing_Subprogram (E)));
+                   else
+                      return Make_Level_Literal
+                               (Scope_Depth (Enclosing_Dynamic_Scope (E)));
+                   end if;
+                end if;
+ 
+                --  Return the dynamic level in the normal case
+ 
+                return New_Occurrence_Of
+                         (Get_Dynamic_Accessibility (E), Loc);
+ 
+             --  Initialization procedures have a special extra accessibility
+             --  parameter associated with the level at which the object
+             --  being initialized exists
+ 
+             elsif Ekind (E) = E_Record_Type
+               and then Is_Limited_Record (E)
+               and then Current_Scope = Init_Proc (E)
+               and then Present (Init_Proc_Level_Formal (Current_Scope))
+             then
+                return New_Occurrence_Of
+                         (Init_Proc_Level_Formal (Current_Scope), Loc);
+ 
+             --  Current instance of the type is deeper than that of the type
+             --  according to RM 3.10.2 (21).
+ 
+             elsif Is_Type (E) then
+                --  When restriction No_Dynamic_Accessibility_Checks is active
+                --  along with -gnatd_b.
+ 
+                if Allow_Alt_Model
+                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
+                  and then Debug_Flag_Underscore_B
+                then
+                   return Make_Level_Literal (Typ_Access_Level (E));
+                end if;
+ 
+                --  Normal path
+ 
+                return Make_Level_Literal (Typ_Access_Level (E) + 1);
+ 
+             --  Move up the renamed entity or object if it came from source
+             --  since expansion may have created a dummy renaming under
+             --  certain circumstances.
+ 
+             --  Note: We check if the original node of the renaming comes
+             --  from source because the node may have been rewritten.
+ 
+             elsif Present (Renamed_Entity_Or_Object (E))
+               and then Comes_From_Source
+                 (Original_Node (Renamed_Entity_Or_Object (E)))
+             then
+                return Accessibility_Level (Renamed_Entity_Or_Object (E));
+ 
+             --  Named access types get their level from their associated type
+ 
+             elsif Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (E)));
+ 
+             --  Check if E is an expansion-generated renaming of an iterator
+             --  by examining Related_Expression. If so, determine the
+             --  accessibility level based on the original expression.
+ 
+             elsif Ekind (E) in E_Constant | E_Variable
+               and then Present (Related_Expression (E))
+             then
+                return Accessibility_Level (Related_Expression (E));
+ 
+             elsif Level = Dynamic_Level
+                and then Ekind (E) in E_In_Parameter | E_In_Out_Parameter
+                and then Present (Init_Proc_Level_Formal (Scope (E)))
+             then
+                return New_Occurrence_Of
+                         (Init_Proc_Level_Formal (Scope (E)), Loc);
+ 
+             --  Normal object - get the level of the enclosing scope
+ 
+             else
+                return Make_Level_Literal
+                         (Scope_Depth (Enclosing_Dynamic_Scope (E)));
+             end if;
+ 
+          --  Handle indexed and selected components including the special cases
+          --  whereby there is an implicit dereference, a component of a
+          --  composite type, or a function call in prefix notation.
+ 
+          --  We don't handle function calls in prefix notation correctly ???
+ 
+          when N_Indexed_Component | N_Selected_Component | N_Slice =>
+             Pre := Prefix (E);
+ 
+             --  Fetch the original node when the prefix comes from the result
+             --  of expanding a function call since we want to find the level
+             --  of the original source call.
+ 
+             if not Comes_From_Source (Pre)
+               and then Nkind (Original_Node (Pre)) = N_Function_Call
+             then
+                Pre := Original_Node (Pre);
+             end if;
+ 
+             --  When E is an indexed component or selected component and
+             --  the current Expr is a function call, we know that we are
+             --  looking at an expanded call in prefix notation.
+ 
+             if Nkind (Expr) = N_Function_Call then
+                return Function_Call_Or_Allocator_Level (Expr);
+ 
+             --  If the prefix is a named access type, then we are dealing
+             --  with an implicit deferences. In that case the level is that
+             --  of the named access type in the prefix.
+ 
+             elsif Is_Named_Access_Type (Etype (Pre)) then
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (Pre)));
+ 
+             --  The current expression is a named access type, so there is no
+             --  reason to look at the prefix. Instead obtain the level of E's
+             --  named access type.
+ 
+             elsif Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (E)));
+ 
+             --  A nondiscriminant selected component where the component
+             --  is an anonymous access type means that its associated
+             --  level is that of the containing type - see RM 3.10.2 (16).
+ 
+             --  Note that when restriction No_Dynamic_Accessibility_Checks is
+             --  in effect we treat discriminant components as regular
+             --  components.
+ 
+             elsif
+               (Nkind (E) = N_Selected_Component
+                 and then Ekind (Etype (E))   =  E_Anonymous_Access_Type
+                 and then Ekind (Etype (Pre)) /= E_Anonymous_Access_Type
+                 and then (not (Nkind (Selector_Name (E)) in N_Has_Entity
+                                 and then Ekind (Entity (Selector_Name (E)))
+                                            = E_Discriminant)
+ 
+                            --  The alternative accessibility models both treat
+                            --  discriminants as regular components.
+ 
+                            or else (No_Dynamic_Accessibility_Checks_Enabled (E)
+                                      and then Allow_Alt_Model)))
+ 
+               --  Arrays featuring components of anonymous access components
+               --  get their corresponding level from their containing type's
+               --  declaration.
+ 
+               or else
+                 (Nkind (E) = N_Indexed_Component
+                   and then Ekind (Etype (E)) = E_Anonymous_Access_Type
+                   and then Ekind (Etype (Pre)) in Array_Kind
+                   and then Ekind (Component_Type (Base_Type (Etype (Pre))))
+                              = E_Anonymous_Access_Type)
+             then
+                --  When restriction No_Dynamic_Accessibility_Checks is active
+                --  and -gnatd_b set, the level is that of the designated type.
+ 
+                if Allow_Alt_Model
+                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
+                  and then Debug_Flag_Underscore_B
+                then
+                   return Make_Level_Literal
+                            (Typ_Access_Level (Etype (E)));
+                end if;
+ 
+                --  Otherwise proceed normally
+ 
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (Prefix (E))));
+ 
+             --  The accessibility calculation routine that handles function
+             --  calls (Function_Call_Level) assumes, in the case the
+             --  result is of an anonymous access type, that the result will be
+             --  used "in its entirety" when the call is present within an
+             --  assignment or object declaration.
+ 
+             --  To properly handle cases where the result is not used in its
+             --  entirety, we test if the prefix of the component in question is
+             --  a function call, which tells us that one of its components has
+             --  been identified and is being accessed. Therefore we can
+             --  conclude that the result is not used "in its entirety"
+             --  according to RM 3.10.2 (10.2/3).
+ 
+             elsif Nkind (Pre) = N_Function_Call
+               and then not Is_Named_Access_Type (Etype (Pre))
+             then
+                --  Dynamic checks are generated when we are within a return
+                --  value or we are in a function call within an anonymous
+                --  access discriminant constraint of a return object (signified
+                --  by In_Return_Context) on the side of the callee.
+ 
+                --  So, in this case, return a library accessibility level to
+                --  null out the check on the side of the caller.
+ 
+                if (In_Return_Value (E)
+                     or else In_Return_Context)
+                  and then Level /= Dynamic_Level
+                then
+                   return Make_Level_Literal
+                            (Scope_Depth (Standard_Standard));
+                end if;
+ 
+                return Make_Level_Literal
+                         (Innermost_Master_Scope_Depth (Expr));
+ 
+             --  Otherwise, continue recursing over the expression prefixes
+ 
+             else
+                return Accessibility_Level (Prefix (E));
+             end if;
+ 
+          --  Qualified expressions
+ 
+          when N_Qualified_Expression =>
+             if Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (E)));
+             else
+                return Accessibility_Level (Expression (E));
+             end if;
+ 
+          --  Handle function calls
+ 
+          when N_Function_Call =>
+             return Function_Call_Or_Allocator_Level (E);
+ 
+          --  Explicit dereference accessibility level calculation
+ 
+          when N_Explicit_Dereference =>
+             Pre := Original_Node (Prefix (E));
+ 
+             --  The prefix is a named access type so the level is taken from
+             --  its type.
+ 
+             if Is_Named_Access_Type (Etype (Pre)) then
+                return Make_Level_Literal (Typ_Access_Level (Etype (Pre)));
+ 
+             --  Otherwise, recurse deeper
+ 
+             else
+                return Accessibility_Level (Prefix (E));
+             end if;
+ 
+          --  Type conversions
+ 
+          when N_Type_Conversion | N_Unchecked_Type_Conversion =>
+             --  View conversions are special in that they require use to
+             --  inspect the expression of the type conversion.
+ 
+             --  Allocators of anonymous access types are internally generated,
+             --  so recurse deeper in that case as well.
+ 
+             if Is_View_Conversion (E)
+               or else Ekind (Etype (E)) = E_Anonymous_Access_Type
+             then
+                return Accessibility_Level (Expression (E));
+ 
+             --  We don't care about the master if we are looking at a named
+             --  access type.
+ 
+             elsif Is_Named_Access_Type (Etype (E)) then
+                return Make_Level_Literal
+                         (Typ_Access_Level (Etype (E)));
+ 
+             --  In section RM 3.10.2 (10/4) the accessibility rules for
+             --  aggregates and value conversions are outlined. Are these
+             --  followed in the case of initialization of an object ???
+ 
+             --  Should use Innermost_Master_Scope_Depth ???
+ 
+             else
+                return Accessibility_Level (Current_Scope);
+             end if;
+ 
+          --  Default to the type accessibility level for the type of the
+          --  expression's entity.
+ 
+          when others =>
+             return Make_Level_Literal (Typ_Access_Level (Etype (E)));
+       end case;
+    end Accessibility_Level;
+ 
+    -------------------------------
+    -- Apply_Accessibility_Check --
+    -------------------------------
+ 
+    procedure Apply_Accessibility_Check
+      (N           : Node_Id;
+       Typ         : Entity_Id;
+       Insert_Node : Node_Id)
+    is
+       Loc : constant Source_Ptr := Sloc (N);
+ 
+       Check_Cond  : Node_Id;
+       Param_Ent   : Entity_Id := Param_Entity (N);
+       Param_Level : Node_Id;
+       Type_Level  : Node_Id;
+ 
+    begin
+       --  Verify we haven't tried to add a dynamic accessibility check when we
+       --  shouldn't.
+ 
+       pragma Assert (not No_Dynamic_Accessibility_Checks_Enabled (N));
+ 
+       if Ada_Version >= Ada_2012
+          and then No (Param_Ent)
+          and then Is_Entity_Name (N)
+          and then Ekind (Entity (N)) in E_Constant | E_Variable
+          and then Present (Effective_Extra_Accessibility (Entity (N)))
+       then
+          Param_Ent := Entity (N);
+          while Present (Renamed_Object (Param_Ent)) loop
+             --  Renamed_Object must return an Entity_Name here
+             --  because of preceding "Present (E_E_A (...))" test.
+ 
+             Param_Ent := Entity (Renamed_Object (Param_Ent));
+          end loop;
+       end if;
+ 
+       if Inside_A_Generic then
+          return;
+ 
+       --  Only apply the run-time check if the access parameter has an
+       --  associated extra access level parameter and when accessibility checks
+       --  are enabled.
+ 
+       elsif Present (Param_Ent)
+          and then Present (Get_Dynamic_Accessibility (Param_Ent))
+          and then not Accessibility_Checks_Suppressed (Param_Ent)
+          and then not Accessibility_Checks_Suppressed (Typ)
+       then
+          --  Obtain the parameter's accessibility level
+ 
+          Param_Level :=
+            New_Occurrence_Of (Get_Dynamic_Accessibility (Param_Ent), Loc);
+ 
+          --  Use the dynamic accessibility parameter for the function's result
+          --  when one has been created instead of statically referring to the
+          --  deepest type level so as to appropriatly handle the rules for
+          --  RM 3.10.2 (10.1/3).
+ 
+          if Ekind (Scope (Param_Ent)) = E_Function
+            and then In_Return_Value (N)
+            and then Ekind (Typ) = E_Anonymous_Access_Type
+          then
+             --  Associate the level of the result type to the extra result
+             --  accessibility parameter belonging to the current function.
+ 
+             if Present (Extra_Accessibility_Of_Result (Scope (Param_Ent))) then
+                Type_Level :=
+                  New_Occurrence_Of
+                    (Extra_Accessibility_Of_Result (Scope (Param_Ent)), Loc);
+ 
+             --  In Ada 2005 and earlier modes, a result extra accessibility
+             --  parameter is not generated and no dynamic check is performed.
+ 
+             else
+                return;
+             end if;
+ 
+          --  Otherwise get the type's accessibility level normally
+ 
+          else
+             Type_Level :=
+               Make_Integer_Literal (Loc, Deepest_Type_Access_Level (Typ));
+          end if;
+ 
+          --  Raise Program_Error if the accessibility level of the access
+          --  parameter is deeper than the level of the target access type.
+ 
+          Check_Cond :=
+            Make_Op_Gt (Loc,
+              Left_Opnd  => Param_Level,
+              Right_Opnd => Type_Level);
+ 
+          Insert_Action (Insert_Node,
+            Make_Raise_Program_Error (Loc,
+              Condition => Check_Cond,
+              Reason    => PE_Accessibility_Check_Failed));
+ 
+          Analyze_And_Resolve (N);
+ 
+          --  If constant folding has happened on the condition for the
+          --  generated error, then warn about it being unconditional.
+ 
+          if Nkind (Check_Cond) = N_Identifier
+            and then Entity (Check_Cond) = Standard_True
+          then
+             Error_Msg_Warn := SPARK_Mode /= On;
+             Error_Msg_N ("accessibility check fails<<", N);
+             Error_Msg_N ("\Program_Error [<<", N);
+          end if;
+       end if;
+    end Apply_Accessibility_Check;
+ 
+    ---------------------------------------------
+    -- Apply_Accessibility_Check_For_Allocator --
+    ---------------------------------------------
+ 
+    procedure Apply_Accessibility_Check_For_Allocator
+      (N              : Node_Id;
+       Exp            : Node_Id;
+       Ref            : Node_Id;
+       Built_In_Place : Boolean := False)
+    is
+       Loc       : constant Source_Ptr := Sloc (N);
+       PtrT      : constant Entity_Id  := Etype (N);
+       DesigT    : constant Entity_Id  := Designated_Type (PtrT);
+       Pool_Id   : constant Entity_Id  := Associated_Storage_Pool (PtrT);
+       Cond      : Node_Id;
+       Fin_Call  : Node_Id;
+       Free_Stmt : Node_Id;
+       Obj_Ref   : Node_Id;
+       Stmts     : List_Id;
+ 
+    begin
+       if Ada_Version >= Ada_2005
+         and then Is_Class_Wide_Type (DesigT)
+         and then Tagged_Type_Expansion
+         and then not Scope_Suppress.Suppress (Accessibility_Check)
+         and then not No_Dynamic_Accessibility_Checks_Enabled (Ref)
+         and then
+           (Type_Access_Level (Etype (Exp)) > Type_Access_Level (PtrT)
+             or else
+               (Is_Class_Wide_Type (Etype (Exp))
+                 and then Scope (PtrT) /= Current_Scope))
+       then
+          --  If the allocator was built in place, Ref is already a reference
+          --  to the access object initialized to the result of the allocator
+          --  (see Exp_Ch6.Make_Build_In_Place_Call_In_Allocator). We call
+          --  Remove_Side_Effects for cases where the build-in-place call may
+          --  still be the prefix of the reference (to avoid generating
+          --  duplicate calls). Otherwise, it is the entity associated with
+          --  the object containing the address of the allocated object.
+ 
+          if Built_In_Place then
+             Remove_Side_Effects (Ref);
+             Obj_Ref := New_Copy_Tree (Ref);
+          else
+             Obj_Ref := New_Occurrence_Of (Ref, Loc);
+          end if;
+ 
+          --  For access to interface types we must generate code to displace
+          --  the pointer to the base of the object since the subsequent code
+          --  references components located in the TSD of the object (which
+          --  is associated with the primary dispatch table --see a-tags.ads)
+          --  and also generates code invoking Free, which requires also a
+          --  reference to the base of the unallocated object.
+ 
+          if Is_Interface (DesigT) and then Tagged_Type_Expansion then
+             Obj_Ref :=
+               Unchecked_Convert_To (Etype (Obj_Ref),
+                 Make_Function_Call (Loc,
+                   Name                   =>
+                     New_Occurrence_Of (RTE (RE_Base_Address), Loc),
+                   Parameter_Associations => New_List (
+                     Unchecked_Convert_To (RTE (RE_Address),
+                       New_Copy_Tree (Obj_Ref)))));
+          end if;
+ 
+          --  Step 1: Create the object clean up code
+ 
+          Stmts := New_List;
+ 
+          --  Deallocate the object if the accessibility check fails. This is
+          --  done only on targets or profiles that support deallocation.
+ 
+          --    Free (Obj_Ref);
+ 
+          if RTE_Available (RE_Free) then
+             Free_Stmt := Make_Free_Statement (Loc, New_Copy_Tree (Obj_Ref));
+             Set_Storage_Pool (Free_Stmt, Pool_Id);
+ 
+             Append_To (Stmts, Free_Stmt);
+ 
+          --  The target or profile cannot deallocate objects
+ 
+          else
+             Free_Stmt := Empty;
+          end if;
+ 
+          --  Finalize the object if applicable. Generate:
+ 
+          --    [Deep_]Finalize (Obj_Ref.all);
+ 
+          if Needs_Finalization (DesigT)
+            and then not No_Heap_Finalization (PtrT)
+          then
+             Fin_Call :=
+               Make_Final_Call
+                 (Obj_Ref =>
+                    Make_Explicit_Dereference (Loc, New_Copy (Obj_Ref)),
+                  Typ     => DesigT);
+ 
+             --  Guard against a missing [Deep_]Finalize when the designated
+             --  type was not properly frozen.
+ 
+             if No (Fin_Call) then
+                Fin_Call := Make_Null_Statement (Loc);
+             end if;
+ 
+             --  When the target or profile supports deallocation, wrap the
+             --  finalization call in a block to ensure proper deallocation even
+             --  if finalization fails. Generate:
+ 
+             --    begin
+             --       <Fin_Call>
+             --    exception
+             --       when others =>
+             --          <Free_Stmt>
+             --          raise;
+             --    end;
+ 
+             if Present (Free_Stmt) then
+                Fin_Call :=
+                  Make_Block_Statement (Loc,
+                    Handled_Statement_Sequence =>
+                      Make_Handled_Sequence_Of_Statements (Loc,
+                        Statements => New_List (Fin_Call),
+ 
+                      Exception_Handlers => New_List (
+                        Make_Exception_Handler (Loc,
+                          Exception_Choices => New_List (
+                            Make_Others_Choice (Loc)),
+                          Statements        => New_List (
+                            New_Copy_Tree (Free_Stmt),
+                            Make_Raise_Statement (Loc))))));
+             end if;
+ 
+             Prepend_To (Stmts, Fin_Call);
+          end if;
+ 
+          --  Signal the accessibility failure through a Program_Error
+ 
+          Append_To (Stmts,
+            Make_Raise_Program_Error (Loc,
+              Reason => PE_Accessibility_Check_Failed));
+ 
+          --  Step 2: Create the accessibility comparison
+ 
+          --  Generate:
+          --    Ref'Tag
+ 
+          Obj_Ref :=
+            Make_Attribute_Reference (Loc,
+              Prefix         => Obj_Ref,
+              Attribute_Name => Name_Tag);
+ 
+          --  For tagged types, determine the accessibility level by looking at
+          --  the type specific data of the dispatch table. Generate:
+ 
+          --    Type_Specific_Data (Address (Ref'Tag)).Access_Level
+ 
+          if Tagged_Type_Expansion then
+             Cond := Build_Get_Access_Level (Loc, Obj_Ref);
+ 
+          --  Use a runtime call to determine the accessibility level when
+          --  compiling on virtual machine targets. Generate:
+ 
+          --    Get_Access_Level (Ref'Tag)
+ 
+          else
+             Cond :=
+               Make_Function_Call (Loc,
+                 Name                   =>
+                   New_Occurrence_Of (RTE (RE_Get_Access_Level), Loc),
+                 Parameter_Associations => New_List (Obj_Ref));
+          end if;
+ 
+          Cond :=
+            Make_Op_Gt (Loc,
+              Left_Opnd  => Cond,
+              Right_Opnd => Accessibility_Level (N, Dynamic_Level));
+ 
+          --  Due to the complexity and side effects of the check, utilize an if
+          --  statement instead of the regular Program_Error circuitry.
+ 
+          Insert_Action (N,
+            Make_Implicit_If_Statement (N,
+              Condition       => Cond,
+              Then_Statements => Stmts));
+       end if;
+    end Apply_Accessibility_Check_For_Allocator;
+ 
+    ------------------------------------------
+    -- Check_Return_Construct_Accessibility --
+    ------------------------------------------
+ 
+    procedure Check_Return_Construct_Accessibility
+      (Return_Stmt : Node_Id;
+       Stm_Entity  : Entity_Id)
+    is
+       Loc      : constant Source_Ptr := Sloc (Return_Stmt);
+       Scope_Id : constant Entity_Id  := Return_Applies_To (Stm_Entity);
+ 
+       R_Type : constant Entity_Id := Etype (Scope_Id);
+       --  Function result subtype
+ 
+       function First_Selector (Assoc : Node_Id) return Node_Id;
+       --  Obtain the first selector or choice from a given association
+ 
+       function Is_Formal_Of_Current_Function
+         (Assoc_Expr : Entity_Id) return Boolean;
+       --  Predicate to test if a given expression associated with a
+       --  discriminant is a formal parameter to the function in which the
+       --  return construct we checking applies to.
+ 
+       --------------------
+       -- First_Selector --
+       --------------------
+ 
+       function First_Selector (Assoc : Node_Id) return Node_Id is
+       begin
+          if Nkind (Assoc) = N_Component_Association then
+             return First (Choices (Assoc));
+ 
+          elsif Nkind (Assoc) = N_Discriminant_Association then
+             return (First (Selector_Names (Assoc)));
+ 
+          else
+             raise Program_Error;
+          end if;
+       end First_Selector;
+ 
+       -----------------------------------
+       -- Is_Formal_Of_Current_Function --
+       -----------------------------------
+ 
+       function Is_Formal_Of_Current_Function
+         (Assoc_Expr : Entity_Id) return Boolean is
+       begin
+          return Is_Entity_Name (Assoc_Expr)
+                   and then Enclosing_Subprogram
+                              (Entity (Assoc_Expr)) = Scope_Id
+                   and then Is_Formal (Entity (Assoc_Expr));
+       end Is_Formal_Of_Current_Function;
+ 
+       --  Local declarations
+ 
+       Assoc : Node_Id := Empty;
+       --  Assoc should perhaps be renamed and declared as a
+       --  Node_Or_Entity_Id since it encompasses not only component and
+       --  discriminant associations, but also discriminant components within
+       --  a type declaration or subtype indication ???
+ 
+       Assoc_Expr    : Node_Id;
+       Assoc_Present : Boolean := False;
+ 
+       Check_Cond        : Node_Id;
+       Unseen_Disc_Count : Nat := 0;
+       Seen_Discs        : Elist_Id;
+       Disc              : Entity_Id;
+       First_Disc        : Entity_Id;
+ 
+       Obj_Decl   : Node_Id;
+       Return_Con : Node_Id;
+       Unqual     : Node_Id;
+ 
+    --  Start of processing for Check_Return_Construct_Accessibility
+ 
+    begin
+       --  Only perform checks on record types with access discriminants and
+       --  non-internally generated functions.
+ 
+       if not Is_Record_Type (R_Type)
+         or else not Has_Anonymous_Access_Discriminant (R_Type)
+         or else not Comes_From_Source (Return_Stmt)
+       then
+          return;
+       end if;
+ 
+       --  We are only interested in return statements
+ 
+       if Nkind (Return_Stmt) not in
+            N_Extended_Return_Statement | N_Simple_Return_Statement
+       then
+          return;
+       end if;
+ 
+       --  Fetch the object from the return statement, in the case of a
+       --  simple return statement the expression is part of the node.
+ 
+       if Nkind (Return_Stmt) = N_Extended_Return_Statement then
+          --  Obtain the object definition from the expanded extended return
+ 
+          Return_Con := First (Return_Object_Declarations (Return_Stmt));
+          while Present (Return_Con) loop
+             --  Inspect the original node to avoid object declarations
+             --  expanded into renamings.
+ 
+             if Nkind (Original_Node (Return_Con)) = N_Object_Declaration
+               and then Comes_From_Source (Original_Node (Return_Con))
+             then
+                exit;
+             end if;
+ 
+             Nlists.Next (Return_Con);
+          end loop;
+ 
+          pragma Assert (Present (Return_Con));
+ 
+          --  Could be dealing with a renaming
+ 
+          Return_Con := Original_Node (Return_Con);
+       else
+          Return_Con := Expression (Return_Stmt);
+       end if;
+ 
+       --  Obtain the accessibility levels of the expressions associated
+       --  with all anonymous access discriminants, then generate a
+       --  dynamic check or static error when relevant.
+ 
+       --  Note the repeated use of Original_Node to avoid checking
+       --  expanded code.
+ 
+       Unqual := Original_Node (Unqualify (Original_Node (Return_Con)));
+ 
+       --  Get the corresponding declaration based on the return object's
+       --  identifier.
+ 
+       if Nkind (Unqual) = N_Identifier
+         and then Nkind (Parent (Entity (Unqual)))
+                    in N_Object_Declaration
+                     | N_Object_Renaming_Declaration
+       then
+          Obj_Decl := Original_Node (Parent (Entity (Unqual)));
+ 
+       --  We were passed the object declaration directly, so use it
+ 
+       elsif Nkind (Unqual) in N_Object_Declaration
+                             | N_Object_Renaming_Declaration
+       then
+          Obj_Decl := Unqual;
+ 
+       --  Otherwise, we are looking at something else
+ 
+       else
+          Obj_Decl := Empty;
+ 
+       end if;
+ 
+       --  Hop up object renamings when present
+ 
+       if Present (Obj_Decl)
+         and then Nkind (Obj_Decl) = N_Object_Renaming_Declaration
+       then
+          while Nkind (Obj_Decl) = N_Object_Renaming_Declaration loop
+ 
+             if Nkind (Name (Obj_Decl)) not in N_Entity then
+                --  We may be looking at the expansion of iterators or
+                --  some other internally generated construct, so it is safe
+                --  to ignore checks ???
+ 
+                if not Comes_From_Source (Obj_Decl) then
+                   return;
+                end if;
+ 
+                Obj_Decl := Original_Node
+                              (Declaration_Node
+                                (Ultimate_Prefix (Name (Obj_Decl))));
+ 
+             --  Move up to the next declaration based on the object's name
+ 
+             else
+                Obj_Decl := Original_Node
+                              (Declaration_Node (Name (Obj_Decl)));
+             end if;
+          end loop;
+       end if;
+ 
+       --  Obtain the discriminant values from the return aggregate
+ 
+       --  Do we cover extension aggregates correctly ???
+ 
+       if Nkind (Unqual) = N_Aggregate then
+          if Present (Expressions (Unqual)) then
+             Assoc := First (Expressions (Unqual));
+          else
+             Assoc := First (Component_Associations (Unqual));
+          end if;
+ 
+       --  There is an object declaration for the return object
+ 
+       elsif Present (Obj_Decl) then
+          --  When a subtype indication is present in an object declaration
+          --  it must contain the object's discriminants.
+ 
+          if Nkind (Object_Definition (Obj_Decl)) = N_Subtype_Indication then
+             Assoc := First
+                        (Constraints
+                          (Constraint
+                            (Object_Definition (Obj_Decl))));
+ 
+          --  The object declaration contains an aggregate
+ 
+          elsif Present (Expression (Obj_Decl)) then
+ 
+             if Nkind (Unqualify (Expression (Obj_Decl))) = N_Aggregate then
+                --  Grab the first associated discriminant expresion
+ 
+                if Present
+                     (Expressions (Unqualify (Expression (Obj_Decl))))
+                then
+                   Assoc := First
+                              (Expressions
+                                (Unqualify (Expression (Obj_Decl))));
+                else
+                   Assoc := First
+                              (Component_Associations
+                                (Unqualify (Expression (Obj_Decl))));
+                end if;
+ 
+             --  Otherwise, this is something else
+ 
+             else
+                return;
+             end if;
+ 
+          --  There are no supplied discriminants in the object declaration,
+          --  so get them from the type definition since they must be default
+          --  initialized.
+ 
+          --  Do we handle constrained subtypes correctly ???
+ 
+          elsif Nkind (Unqual) = N_Object_Declaration then
+             Assoc := First_Discriminant
+                        (Etype (Object_Definition (Obj_Decl)));
+ 
+          else
+             Assoc := First_Discriminant (Etype (Unqual));
+          end if;
+ 
+       --  When we are not looking at an aggregate or an identifier, return
+       --  since any other construct (like a function call) is not
+       --  applicable since checks will be performed on the side of the
+       --  callee.
+ 
+       else
+          return;
+       end if;
+ 
+       --  Obtain the discriminants so we know the actual type in case the
+       --  value of their associated expression gets implicitly converted.
+ 
+       if No (Obj_Decl) then
+          pragma Assert (Nkind (Unqual) = N_Aggregate);
+ 
+          Disc := First_Discriminant (Etype (Unqual));
+ 
+       else
+          Disc := First_Discriminant
+                    (Etype (Defining_Identifier (Obj_Decl)));
+       end if;
+ 
+       --  Preserve the first discriminant for checking named associations
+ 
+       First_Disc := Disc;
+ 
+       --  Count the number of discriminants for processing an aggregate
+       --  which includes an others.
+ 
+       Disc := First_Disc;
+       while Present (Disc) loop
+          Unseen_Disc_Count := Unseen_Disc_Count + 1;
+ 
+          Next_Discriminant (Disc);
+       end loop;
+ 
+       Seen_Discs := New_Elmt_List;
+ 
+       --  Loop through each of the discriminants and check each expression
+       --  associated with an anonymous access discriminant.
+ 
+       --  When named associations occur in the return aggregate then
+       --  discriminants can be in any order, so we need to ensure we do
+       --  not continue to loop when all discriminants have been seen.
+ 
+       Disc := First_Disc;
+       while Present (Assoc)
+         and then (Present (Disc) or else Assoc_Present)
+         and then Unseen_Disc_Count > 0
+       loop
+          --  Handle named associations by searching through the names of
+          --  the relevant discriminant components.
+ 
+          if Nkind (Assoc)
+               in N_Component_Association | N_Discriminant_Association
+          then
+             Assoc_Expr    := Expression (Assoc);
+             Assoc_Present := True;
+ 
+             --  We currently don't handle box initialized discriminants,
+             --  however, since default initialized anonymous access
+             --  discriminants are a corner case, this is ok for now ???
+ 
+             if Nkind (Assoc) = N_Component_Association
+               and then Box_Present (Assoc)
+             then
+                if Nkind (First_Selector (Assoc)) = N_Others_Choice then
+                   Unseen_Disc_Count := 0;
+                end if;
+ 
+             --  When others is present we must identify a discriminant we
+             --  haven't already seen so as to get the appropriate type for
+             --  the static accessibility check.
+ 
+             --  This works because all components within an others clause
+             --  must have the same type.
+ 
+             elsif Nkind (First_Selector (Assoc)) = N_Others_Choice then
+ 
+                Disc := First_Disc;
+                Outer : while Present (Disc) loop
+                   declare
+                      Current_Seen_Disc : Elmt_Id;
+                   begin
+                      --  Move through the list of identified discriminants
+ 
+                      Current_Seen_Disc := First_Elmt (Seen_Discs);
+                      while Present (Current_Seen_Disc) loop
+                         --  Exit the loop when we found a match
+ 
+                         exit when
+                           Chars (Node (Current_Seen_Disc)) = Chars (Disc);
+ 
+                         Next_Elmt (Current_Seen_Disc);
+                      end loop;
+ 
+                      --  When we have exited the above loop without finding
+                      --  a match then we know that Disc has not been seen.
+ 
+                      exit Outer when No (Current_Seen_Disc);
+                   end;
+ 
+                   Next_Discriminant (Disc);
+                end loop Outer;
+ 
+                --  If we got to an others clause with a non-zero
+                --  discriminant count there must be a discriminant left to
+                --  check.
+ 
+                pragma Assert (Present (Disc));
+ 
+                --  Set the unseen discriminant count to zero because we know
+                --  an others clause sets all remaining components of an
+                --  aggregate.
+ 
+                Unseen_Disc_Count := 0;
+ 
+             --  Move through each of the selectors in the named association
+             --  and obtain a discriminant for accessibility checking if one
+             --  is referenced in the list. Also track which discriminants
+             --  are referenced for the purpose of handling an others clause.
+ 
+             else
+                declare
+                   Assoc_Choice : Node_Id;
+                   Curr_Disc    : Node_Id;
+                begin
+ 
+                   Disc      := Empty;
+                   Curr_Disc := First_Disc;
+                   while Present (Curr_Disc) loop
+                      --  Check each of the choices in the associations for a
+                      --  match to the name of the current discriminant.
+ 
+                      Assoc_Choice := First_Selector (Assoc);
+                      while Present (Assoc_Choice) loop
+                         --  When the name matches we track that we have seen
+                         --  the discriminant, but instead of exiting the
+                         --  loop we continue iterating to make sure all the
+                         --  discriminants within the named association get
+                         --  tracked.
+ 
+                         if Chars (Assoc_Choice) = Chars (Curr_Disc) then
+                            Append_Elmt (Curr_Disc, Seen_Discs);
+ 
+                            Disc              := Curr_Disc;
+                            Unseen_Disc_Count := Unseen_Disc_Count - 1;
+                         end if;
+ 
+                         Next (Assoc_Choice);
+                      end loop;
+ 
+                      Next_Discriminant (Curr_Disc);
+                   end loop;
+                end;
+             end if;
+ 
+          --  Unwrap the associated expression if we are looking at a default
+          --  initialized type declaration. In this case Assoc is not really
+          --  an association, but a component declaration. Should Assoc be
+          --  renamed in some way to be more clear ???
+ 
+          --  This occurs when the return object does not initialize
+          --  discriminant and instead relies on the type declaration for
+          --  their supplied values.
+ 
+          elsif Nkind (Assoc) in N_Entity
+            and then Ekind (Assoc) = E_Discriminant
+          then
+             Append_Elmt (Disc, Seen_Discs);
+ 
+             Assoc_Expr        := Discriminant_Default_Value (Assoc);
+             Unseen_Disc_Count := Unseen_Disc_Count - 1;
+ 
+          --  Otherwise, there is nothing to do because Assoc is an
+          --  expression within the return aggregate itself.
+ 
+          else
+             Append_Elmt (Disc, Seen_Discs);
+ 
+             Assoc_Expr        := Assoc;
+             Unseen_Disc_Count := Unseen_Disc_Count - 1;
+          end if;
+ 
+          --  Check the accessibility level of the expression when the
+          --  discriminant is of an anonymous access type.
+ 
+          if Present (Assoc_Expr)
+            and then Present (Disc)
+            and then Ekind (Etype (Disc)) = E_Anonymous_Access_Type
+ 
+            --  We disable the check when we have a tagged return type and
+            --  the associated expression for the discriminant is a formal
+            --  parameter since the check would require us to compare the
+            --  accessibility level of Assoc_Expr to the level of the
+            --  Extra_Accessibility_Of_Result of the function - which is
+            --  currently disabled for functions with tagged return types.
+            --  This may change in the future ???
+ 
+            --  See Needs_Result_Accessibility_Level for details.
+ 
+            and then not
+              (No (Extra_Accessibility_Of_Result (Scope_Id))
+                and then Is_Formal_Of_Current_Function (Assoc_Expr)
+                and then Is_Tagged_Type (Etype (Scope_Id)))
+          then
+             --  Generate a dynamic check based on the extra accessibility of
+             --  the result or the scope of the current function.
+ 
+             Check_Cond :=
+               Make_Op_Gt (Loc,
+                 Left_Opnd  => Accessibility_Level
+                                 (Expr              => Assoc_Expr,
+                                  Level             => Dynamic_Level,
+                                  In_Return_Context => True),
+                 Right_Opnd =>
+                   (if Present (Extra_Accessibility_Of_Result (Scope_Id))
+ 
+                      --  When Assoc_Expr is a formal we have to look at the
+                      --  extra accessibility-level formal associated with
+                      --  the result.
+ 
+                      and then Is_Formal_Of_Current_Function (Assoc_Expr)
+                    then
+                       New_Occurrence_Of
+                         (Extra_Accessibility_Of_Result (Scope_Id), Loc)
+ 
+                    --  Otherwise, we compare the level of Assoc_Expr to the
+                    --  scope of the current function.
+ 
+                    else
+                       Make_Integer_Literal
+                         (Loc, Scope_Depth (Scope (Scope_Id)))));
+ 
+             Insert_Before_And_Analyze (Return_Stmt,
+               Make_Raise_Program_Error (Loc,
+                 Condition => Check_Cond,
+                 Reason    => PE_Accessibility_Check_Failed));
+ 
+             --  If constant folding has happened on the condition for the
+             --  generated error, then warn about it being unconditional when
+             --  we know an error will be raised.
+ 
+             if Nkind (Check_Cond) = N_Identifier
+               and then Entity (Check_Cond) = Standard_True
+             then
+                Error_Msg_N
+                  ("access discriminant in return object would be a dangling"
+                   & " reference", Return_Stmt);
+             end if;
+          end if;
+ 
+          --  Iterate over the discriminants, except when we have encountered
+          --  a named association since the discriminant order becomes
+          --  irrelevant in that case.
+ 
+          if not Assoc_Present then
+             Next_Discriminant (Disc);
+          end if;
+ 
+          --  Iterate over associations
+ 
+          if not Is_List_Member (Assoc) then
+             exit;
+          else
+             Nlists.Next (Assoc);
+          end if;
+       end loop;
+    end Check_Return_Construct_Accessibility;
+ 
+    -------------------------------
+    -- Deepest_Type_Access_Level --
+    -------------------------------
+ 
+    function Deepest_Type_Access_Level
+      (Typ             : Entity_Id;
+       Allow_Alt_Model : Boolean := True) return Uint
+    is
+    begin
+       if Ekind (Typ) = E_Anonymous_Access_Type
+         and then not Is_Local_Anonymous_Access (Typ)
+         and then Nkind (Associated_Node_For_Itype (Typ)) = N_Object_Declaration
+       then
+          --  No_Dynamic_Accessibility_Checks override for alternative
+          --  accessibility model.
+ 
+          if Allow_Alt_Model
+            and then No_Dynamic_Accessibility_Checks_Enabled (Typ)
+          then
+             return Type_Access_Level (Typ, Allow_Alt_Model);
+          end if;
+ 
+          --  Typ is the type of an Ada 2012 stand-alone object of an anonymous
+          --  access type.
+ 
+          return
+            Scope_Depth (Enclosing_Dynamic_Scope
+                          (Defining_Identifier
+                            (Associated_Node_For_Itype (Typ))));
+ 
+       --  For generic formal type, return Int'Last (infinite).
+       --  See comment preceding Is_Generic_Type call in Type_Access_Level.
+ 
+       elsif Is_Generic_Type (Root_Type (Typ)) then
+          return UI_From_Int (Int'Last);
+ 
+       else
+          return Type_Access_Level (Typ, Allow_Alt_Model);
+       end if;
+    end Deepest_Type_Access_Level;
+ 
+    -----------------------------------
+    -- Effective_Extra_Accessibility --
+    -----------------------------------
+ 
+    function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id is
+    begin
+       if Present (Renamed_Object (Id))
+         and then Is_Entity_Name (Renamed_Object (Id))
+       then
+          return Effective_Extra_Accessibility (Entity (Renamed_Object (Id)));
+       else
+          return Extra_Accessibility (Id);
+       end if;
+    end Effective_Extra_Accessibility;
+ 
+    -------------------------------
+    -- Get_Dynamic_Accessibility --
+    -------------------------------
+ 
+    function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id is
+    begin
+       --  When minimum accessibility is set for E then we utilize it - except
+       --  in a few edge cases like the expansion of select statements where
+       --  generated subprogram may attempt to unnecessarily use a minimum
+       --  accessibility object declared outside of scope.
+ 
+       --  To avoid these situations where expansion may get complex we verify
+       --  that the minimum accessibility object is within scope.
+ 
+       if Is_Formal (E)
+         and then Present (Minimum_Accessibility (E))
+         and then In_Open_Scopes (Scope (Minimum_Accessibility (E)))
+       then
+          return Minimum_Accessibility (E);
+       end if;
+ 
+       return Extra_Accessibility (E);
+    end Get_Dynamic_Accessibility;
+ 
+    -----------------------
+    -- Has_Access_Values --
+    -----------------------
+ 
+    function Has_Access_Values (T : Entity_Id) return Boolean
+    is
+       Typ : constant Entity_Id := Underlying_Type (T);
+ 
+    begin
+       --  Case of a private type which is not completed yet. This can only
+       --  happen in the case of a generic formal type appearing directly, or
+       --  as a component of the type to which this function is being applied
+       --  at the top level. Return False in this case, since we certainly do
+       --  not know that the type contains access types.
+ 
+       if No (Typ) then
+          return False;
+ 
+       elsif Is_Access_Type (Typ) then
+          return True;
+ 
+       elsif Is_Array_Type (Typ) then
+          return Has_Access_Values (Component_Type (Typ));
+ 
+       elsif Is_Record_Type (Typ) then
+          declare
+             Comp : Entity_Id;
+ 
+          begin
+             --  Loop to check components
+ 
+             Comp := First_Component_Or_Discriminant (Typ);
+             while Present (Comp) loop
+ 
+                --  Check for access component, tag field does not count, even
+                --  though it is implemented internally using an access type.
+ 
+                if Has_Access_Values (Etype (Comp))
+                  and then Chars (Comp) /= Name_uTag
+                then
+                   return True;
+                end if;
+ 
+                Next_Component_Or_Discriminant (Comp);
+             end loop;
+          end;
+ 
+          return False;
+ 
+       else
+          return False;
+       end if;
+    end Has_Access_Values;
+ 
+    ---------------------------------------
+    -- Has_Anonymous_Access_Discriminant --
+    ---------------------------------------
+ 
+    function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean
+    is
+       Disc : Node_Id;
+ 
+    begin
+       if not Has_Discriminants (Typ) then
+          return False;
+       end if;
+ 
+       Disc := First_Discriminant (Typ);
+       while Present (Disc) loop
+          if Ekind (Etype (Disc)) = E_Anonymous_Access_Type then
+             return True;
+          end if;
+ 
+          Next_Discriminant (Disc);
+       end loop;
+ 
+       return False;
+    end Has_Anonymous_Access_Discriminant;
+ 
+    --------------------------------------------
+    -- Has_Unconstrained_Access_Discriminants --
+    --------------------------------------------
+ 
+    function Has_Unconstrained_Access_Discriminants
+      (Subtyp : Entity_Id) return Boolean
+    is
+       Discr : Entity_Id;
+ 
+    begin
+       if Has_Discriminants (Subtyp)
+         and then not Is_Constrained (Subtyp)
+       then
+          Discr := First_Discriminant (Subtyp);
+          while Present (Discr) loop
+             if Ekind (Etype (Discr)) = E_Anonymous_Access_Type then
+                return True;
+             end if;
+ 
+             Next_Discriminant (Discr);
+          end loop;
+       end if;
+ 
+       return False;
+    end Has_Unconstrained_Access_Discriminants;
+ 
+    --------------------------------
+    -- Is_Anonymous_Access_Actual --
+    --------------------------------
+ 
+    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean is
+       Par : Node_Id;
+    begin
+       if Ekind (Etype (N)) /= E_Anonymous_Access_Type then
+          return False;
+       end if;
+ 
+       Par := Parent (N);
+       while Present (Par)
+         and then Nkind (Par) in N_Case_Expression
+                               | N_If_Expression
+                               | N_Parameter_Association
+       loop
+          Par := Parent (Par);
+       end loop;
+       return Nkind (Par) in N_Subprogram_Call;
+    end Is_Anonymous_Access_Actual;
+ 
+    --------------------------------------
+    -- Is_Special_Aliased_Formal_Access --
+    --------------------------------------
+ 
+    function Is_Special_Aliased_Formal_Access
+      (Exp               : Node_Id;
+       In_Return_Context : Boolean := False) return Boolean
+    is
+       Scop : constant Entity_Id := Current_Subprogram;
+    begin
+       --  Verify the expression is an access reference to 'Access within a
+       --  return statement as this is the only time an explicitly aliased
+       --  formal has different semantics.
+ 
+       if Nkind (Exp) /= N_Attribute_Reference
+         or else Get_Attribute_Id (Attribute_Name (Exp)) /= Attribute_Access
+         or else not (In_Return_Value (Exp)
+                       or else In_Return_Context)
+         or else not Needs_Result_Accessibility_Level (Scop)
+       then
+          return False;
+       end if;
+ 
+       --  Check if the prefix of the reference is indeed an explicitly aliased
+       --  formal parameter for the function Scop. Additionally, we must check
+       --  that Scop returns an anonymous access type, otherwise the special
+       --  rules dictating a need for a dynamic check are not in effect.
+ 
+       return Is_Entity_Name (Prefix (Exp))
+                and then Is_Explicitly_Aliased (Entity (Prefix (Exp)));
+    end Is_Special_Aliased_Formal_Access;
+ 
+    --------------------------------------
+    -- Needs_Result_Accessibility_Level --
+    --------------------------------------
+ 
+    function Needs_Result_Accessibility_Level
+      (Func_Id : Entity_Id) return Boolean
+    is
+       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
+ 
+       function Has_Unconstrained_Access_Discriminant_Component
+         (Comp_Typ : Entity_Id) return Boolean;
+       --  Returns True if any component of the type has an unconstrained access
+       --  discriminant.
+ 
+       -----------------------------------------------------
+       -- Has_Unconstrained_Access_Discriminant_Component --
+       -----------------------------------------------------
+ 
+       function Has_Unconstrained_Access_Discriminant_Component
+         (Comp_Typ :  Entity_Id) return Boolean
+       is
+       begin
+          if not Is_Limited_Type (Comp_Typ) then
+             return False;
+ 
+          --  Only limited types can have access discriminants with
+          --  defaults.
+ 
+          elsif Has_Unconstrained_Access_Discriminants (Comp_Typ) then
+             return True;
+ 
+          elsif Is_Array_Type (Comp_Typ) then
+             return Has_Unconstrained_Access_Discriminant_Component
+                      (Underlying_Type (Component_Type (Comp_Typ)));
+ 
+          elsif Is_Record_Type (Comp_Typ) then
+             declare
+                Comp : Entity_Id;
+ 
+             begin
+                Comp := First_Component (Comp_Typ);
+                while Present (Comp) loop
+                   if Has_Unconstrained_Access_Discriminant_Component
+                        (Underlying_Type (Etype (Comp)))
+                   then
+                      return True;
+                   end if;
+ 
+                   Next_Component (Comp);
+                end loop;
+             end;
+          end if;
+ 
+          return False;
+       end Has_Unconstrained_Access_Discriminant_Component;
+ 
+       Disable_Tagged_Cases : constant Boolean := True;
+       --  Flag used to temporarily disable a "True" result for tagged types.
+       --  See comments further below for details.
+ 
+    --  Start of processing for Needs_Result_Accessibility_Level
+ 
+    begin
+       --  False if completion unavailable, which can happen when we are
+       --  analyzing an abstract subprogram or if the subprogram has
+       --  delayed freezing.
+ 
+       if No (Func_Typ) then
+          return False;
+ 
+       --  False if not a function, also handle enum-lit renames case
+ 
+       elsif Func_Typ = Standard_Void_Type
+         or else Is_Scalar_Type (Func_Typ)
+       then
+          return False;
+ 
+       --  Handle a corner case, a cross-dialect subp renaming. For example,
+       --  an Ada 2012 renaming of an Ada 2005 subprogram. This can occur when
+       --  an Ada 2005 (or earlier) unit references predefined run-time units.
+ 
+       elsif Present (Alias (Func_Id)) then
+ 
+          --  Unimplemented: a cross-dialect subp renaming which does not set
+          --  the Alias attribute (e.g., a rename of a dereference of an access
+          --  to subprogram value). ???
+ 
+          return Present (Extra_Accessibility_Of_Result (Alias (Func_Id)));
+ 
+       --  Remaining cases require Ada 2012 mode, unless they are dispatching
+       --  operations, since they may be overridden by Ada_2012 primitives.
+ 
+       elsif Ada_Version < Ada_2012
+         and then not Is_Dispatching_Operation (Func_Id)
+       then
+          return False;
+ 
+       --  Handle the situation where a result is an anonymous access type
+       --  RM 3.10.2 (10.3/3).
+ 
+       elsif Ekind (Func_Typ) = E_Anonymous_Access_Type then
+          return True;
+ 
+       --  In the case of, say, a null tagged record result type, the need for
+       --  this extra parameter might not be obvious so this function returns
+       --  True for all tagged types for compatibility reasons.
+ 
+       --  A function with, say, a tagged null controlling result type might
+       --  be overridden by a primitive of an extension having an access
+       --  discriminant and the overrider and overridden must have compatible
+       --  calling conventions (including implicitly declared parameters).
+ 
+       --  Similarly, values of one access-to-subprogram type might designate
+       --  both a primitive subprogram of a given type and a function which is,
+       --  for example, not a primitive subprogram of any type. Again, this
+       --  requires calling convention compatibility. It might be possible to
+       --  solve these issues by introducing wrappers, but that is not the
+       --  approach that was chosen.
+ 
+       --  Note: Despite the reasoning noted above, the extra accessibility
+       --  parameter for tagged types is disabled for performance reasons.
+ 
+       elsif Is_Tagged_Type (Func_Typ) then
+          return not Disable_Tagged_Cases;
+ 
+       elsif Has_Unconstrained_Access_Discriminants (Func_Typ) then
+          return True;
+ 
+       elsif Has_Unconstrained_Access_Discriminant_Component (Func_Typ) then
+          return True;
+ 
+       --  False for all other cases
+ 
+       else
+          return False;
+       end if;
+    end Needs_Result_Accessibility_Level;
+ 
+    ------------------------------------------
+    -- Prefix_With_Safe_Accessibility_Level --
+    ------------------------------------------
+ 
+    function Prefix_With_Safe_Accessibility_Level
+      (N   : Node_Id;
+       Typ : Entity_Id) return Boolean
+    is
+       P        : constant Node_Id      := Prefix (N);
+       Aname    : constant Name_Id      := Attribute_Name (N);
+       Attr_Id  : constant Attribute_Id := Get_Attribute_Id (Aname);
+       Btyp     : constant Entity_Id    := Base_Type (Typ);
+ 
+       function Safe_Value_Conversions return Boolean;
+       --  Return False if the prefix has a value conversion of an array type
+ 
+       ----------------------------
+       -- Safe_Value_Conversions --
+       ----------------------------
+ 
+       function Safe_Value_Conversions return Boolean is
+          PP : Node_Id := P;
+ 
+       begin
+          loop
+             if Nkind (PP) in N_Selected_Component | N_Indexed_Component then
+                PP := Prefix (PP);
+ 
+             elsif Comes_From_Source (PP)
+               and then Nkind (PP) in N_Type_Conversion
+                                    | N_Unchecked_Type_Conversion
+               and then Is_Array_Type (Etype (PP))
+             then
+                return False;
+ 
+             elsif Comes_From_Source (PP)
+               and then Nkind (PP) = N_Qualified_Expression
+               and then Is_Array_Type (Etype (PP))
+               and then Nkind (Original_Node (Expression (PP))) in
+                          N_Aggregate | N_Extension_Aggregate
+             then
+                return False;
+ 
+             else
+                exit;
+             end if;
+          end loop;
+ 
+          return True;
+       end Safe_Value_Conversions;
+ 
+    --  Start of processing for Prefix_With_Safe_Accessibility_Level
+ 
+    begin
+       --  No check required for unchecked and unrestricted access
+ 
+       if Attr_Id = Attribute_Unchecked_Access
+         or else Attr_Id = Attribute_Unrestricted_Access
+       then
+          return True;
+ 
+       --  Check value conversions
+ 
+       elsif Ekind (Btyp) = E_General_Access_Type
+         and then not Safe_Value_Conversions
+       then
+          return False;
+       end if;
+ 
+       return True;
+    end Prefix_With_Safe_Accessibility_Level;
+ 
+    -----------------------------
+    -- Subprogram_Access_Level --
+    -----------------------------
+ 
+    function Subprogram_Access_Level (Subp : Entity_Id) return Uint is
+    begin
+       if Present (Alias (Subp)) then
+          return Subprogram_Access_Level (Alias (Subp));
+       else
+          return Scope_Depth (Enclosing_Dynamic_Scope (Subp));
+       end if;
+    end Subprogram_Access_Level;
+ 
+    --------------------------------
+    -- Static_Accessibility_Level --
+    --------------------------------
+ 
+    function Static_Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Static_Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False) return Uint
+    is
+    begin
+       return Intval
+                (Accessibility_Level (Expr, Level, In_Return_Context));
+    end Static_Accessibility_Level;
+ 
+    -----------------------
+    -- Type_Access_Level --
+    -----------------------
+ 
+    function Type_Access_Level
+      (Typ             : Entity_Id;
+       Allow_Alt_Model : Boolean   := True;
+       Assoc_Ent       : Entity_Id := Empty) return Uint
+    is
+       Btyp    : Entity_Id := Base_Type (Typ);
+       Def_Ent : Entity_Id;
+ 
+    begin
+       --  Ada 2005 (AI-230): For most cases of anonymous access types, we
+       --  simply use the level where the type is declared. This is true for
+       --  stand-alone object declarations, and for anonymous access types
+       --  associated with components the level is the same as that of the
+       --  enclosing composite type. However, special treatment is needed for
+       --  the cases of access parameters, return objects of an anonymous access
+       --  type, and, in Ada 95, access discriminants of limited types.
+ 
+       if Is_Access_Type (Btyp) then
+          if Ekind (Btyp) = E_Anonymous_Access_Type then
+             --  No_Dynamic_Accessibility_Checks restriction override for
+             --  alternative accessibility model.
+ 
+             if Allow_Alt_Model
+               and then No_Dynamic_Accessibility_Checks_Enabled (Btyp)
+             then
+                --  In the -gnatd_b model, the level of an anonymous access
+                --  type is always that of the designated type.
+ 
+                if Debug_Flag_Underscore_B then
+                   return Type_Access_Level
+                            (Designated_Type (Btyp), Allow_Alt_Model);
+                end if;
+ 
+                --  When an anonymous access type's Assoc_Ent is specified,
+                --  calculate the result based on the general accessibility
+                --  level routine.
+ 
+                --  We would like to use Associated_Node_For_Itype here instead,
+                --  but in some cases it is not fine grained enough ???
+ 
+                if Present (Assoc_Ent) then
+                   return Static_Accessibility_Level
+                            (Assoc_Ent, Object_Decl_Level);
+                end if;
+ 
+                --  Otherwise take the context of the anonymous access type into
+                --  account.
+ 
+                --  Obtain the defining entity for the internally generated
+                --  anonymous access type.
+ 
+                Def_Ent := Defining_Entity_Or_Empty
+                             (Associated_Node_For_Itype (Typ));
+ 
+                if Present (Def_Ent) then
+                   --  When the defining entity is a subprogram then we know the
+                   --  anonymous access type Typ has been generated to either
+                   --  describe an anonymous access type formal or an anonymous
+                   --  access result type.
+ 
+                   --  Since we are only interested in the formal case, avoid
+                   --  the anonymous access result type.
+ 
+                   if Is_Subprogram (Def_Ent)
+                     and then not (Ekind (Def_Ent) = E_Function
+                                    and then Etype (Def_Ent) = Typ)
+                   then
+                      --  When the type comes from an anonymous access
+                      --  parameter, the level is that of the subprogram
+                      --  declaration.
+ 
+                      return Scope_Depth (Def_Ent);
+ 
+                   --  When the type is an access discriminant, the level is
+                   --  that of the type.
+ 
+                   elsif Ekind (Def_Ent) = E_Discriminant then
+                      return Scope_Depth (Scope (Def_Ent));
+                   end if;
+                end if;
+ 
+             --  If the type is a nonlocal anonymous access type (such as for
+             --  an access parameter) we treat it as being declared at the
+             --  library level to ensure that names such as X.all'access don't
+             --  fail static accessibility checks.
+ 
+             elsif not Is_Local_Anonymous_Access (Typ) then
+                return Scope_Depth (Standard_Standard);
+ 
+             --  If this is a return object, the accessibility level is that of
+             --  the result subtype of the enclosing function. The test here is
+             --  little complicated, because we have to account for extended
+             --  return statements that have been rewritten as blocks, in which
+             --  case we have to find and the Is_Return_Object attribute of the
+             --  itype's associated object. It would be nice to find a way to
+             --  simplify this test, but it doesn't seem worthwhile to add a new
+             --  flag just for purposes of this test. ???
+ 
+             elsif Ekind (Scope (Btyp)) = E_Return_Statement
+               or else
+                 (Is_Itype (Btyp)
+                   and then Nkind (Associated_Node_For_Itype (Btyp)) =
+                                                          N_Object_Declaration
+                   and then Is_Return_Object
+                              (Defining_Identifier
+                                 (Associated_Node_For_Itype (Btyp))))
+             then
+                declare
+                   Scop : Entity_Id;
+ 
+                begin
+                   Scop := Scope (Scope (Btyp));
+                   while Present (Scop) loop
+                      exit when Ekind (Scop) = E_Function;
+                      Scop := Scope (Scop);
+                   end loop;
+ 
+                   --  Treat the return object's type as having the level of the
+                   --  function's result subtype (as per RM05-6.5(5.3/2)).
+ 
+                   return Type_Access_Level (Etype (Scop), Allow_Alt_Model);
+                end;
+             end if;
+          end if;
+ 
+          Btyp := Root_Type (Btyp);
+ 
+          --  The accessibility level of anonymous access types associated with
+          --  discriminants is that of the current instance of the type, and
+          --  that's deeper than the type itself (AARM 3.10.2 (12.3.21)).
+ 
+          --  AI-402: access discriminants have accessibility based on the
+          --  object rather than the type in Ada 2005, so the above paragraph
+          --  doesn't apply.
+ 
+          --  ??? Needs completion with rules from AI-416
+ 
+          if Ada_Version <= Ada_95
+            and then Ekind (Typ) = E_Anonymous_Access_Type
+            and then Present (Associated_Node_For_Itype (Typ))
+            and then Nkind (Associated_Node_For_Itype (Typ)) =
+                                                  N_Discriminant_Specification
+          then
+             return Scope_Depth (Enclosing_Dynamic_Scope (Btyp)) + 1;
+          end if;
+       end if;
+ 
+       --  Return library level for a generic formal type. This is done because
+       --  RM(10.3.2) says that "The statically deeper relationship does not
+       --  apply to ... a descendant of a generic formal type". Rather than
+       --  checking at each point where a static accessibility check is
+       --  performed to see if we are dealing with a formal type, this rule is
+       --  implemented by having Type_Access_Level and Deepest_Type_Access_Level
+       --  return extreme values for a formal type; Deepest_Type_Access_Level
+       --  returns Int'Last. By calling the appropriate function from among the
+       --  two, we ensure that the static accessibility check will pass if we
+       --  happen to run into a formal type. More specifically, we should call
+       --  Deepest_Type_Access_Level instead of Type_Access_Level whenever the
+       --  call occurs as part of a static accessibility check and the error
+       --  case is the case where the type's level is too shallow (as opposed
+       --  to too deep).
+ 
+       if Is_Generic_Type (Root_Type (Btyp)) then
+          return Scope_Depth (Standard_Standard);
+       end if;
+ 
+       return Scope_Depth (Enclosing_Dynamic_Scope (Btyp));
+    end Type_Access_Level;
+ 
+ end Accessibility;
diff -Nrcpad gcc-12.2.0/gcc/ada/accessibility.ads gcc-13.1.0/gcc/ada/accessibility.ads
*** gcc-12.2.0/gcc/ada/accessibility.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/accessibility.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,222 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                        A C C E S S I B I L I T Y                         --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
+ -- http://www.gnu.org/licenses for a complete copy of the license.          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Accessibility level and check generation routines
+ 
+ with Types; use Types;
+ with Uintp; use Uintp;
+ 
+ package Accessibility is
+ 
+    procedure Accessibility_Message (N : Node_Id; Typ : Entity_Id);
+    --  Error, or warning within an instance, if the static accessibility
+    --  rules of 3.10.2 are violated.
+ 
+    type Accessibility_Level_Kind is
+      (Dynamic_Level,
+       Object_Decl_Level,
+       Zero_On_Dynamic_Level);
+    --  Accessibility_Level_Kind is an enumerated type which captures the
+    --  different modes in which an accessibility level could be obtained for
+    --  a given expression.
+ 
+    --  When in the context of the function Accessibility_Level,
+    --  Accessibility_Level_Kind signals what type of accessibility level to
+    --  obtain. For example, when Level is Dynamic_Level, a defining identifier
+    --  associated with a SAOOAAT may be returned or an N_Integer_Literal node.
+    --  When the level is Object_Decl_Level, an N_Integer_Literal node is
+    --  returned containing the level of the declaration of the object if
+    --  relevant (be it a SAOOAAT or otherwise). Finally, Zero_On_Dynamic_Level
+    --  returns library level for all cases where the accessibility level is
+    --  dynamic (used to bypass static accessibility checks in dynamic cases).
+ 
+    function Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False;
+       Allow_Alt_Model   : Boolean := True) return Node_Id;
+    --  Centralized accessibility level calculation routine for finding the
+    --  accessibility level of a given expression Expr.
+ 
+    --  In_Return_Context forces the Accessibility_Level calculations to be
+    --  carried out "as if" Expr existed in a return value. This is useful for
+    --  calculating the accessibility levels for discriminant associations
+    --  and return aggregates.
+ 
+    --  The Allow_Alt_Model parameter allows the alternative level calculation
+    --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
+ 
+    procedure Apply_Accessibility_Check
+      (N           : Node_Id;
+       Typ         : Entity_Id;
+       Insert_Node : Node_Id);
+    --  Given a name N denoting an access parameter, emits a run-time
+    --  accessibility check (if necessary), checking that the level of
+    --  the object denoted by the access parameter is not deeper than the
+    --  level of the type Typ. Program_Error is raised if the check fails.
+    --  Insert_Node indicates the node where the check should be inserted.
+ 
+    procedure Apply_Accessibility_Check_For_Allocator
+      (N              : Node_Id;
+       Exp            : Node_Id;
+       Ref            : Node_Id;
+       Built_In_Place : Boolean := False);
+    --  Ada 2005 (AI-344): For an allocator with a class-wide designated
+    --  type, generate an accessibility check to verify that the level of the
+    --  type of the created object is not deeper than the level of the access
+    --  type. If the type of the qualified expression is class-wide, then
+    --  always generate the check (except in the case where it is known to be
+    --  unnecessary, see comment below). Otherwise, only generate the check
+    --  if the level of the qualified expression type is statically deeper
+    --  than the access type.
+    --
+    --  Although the static accessibility will generally have been performed
+    --  as a legality check, it won't have been done in cases where the
+    --  allocator appears in generic body, so a run-time check is needed in
+    --  general. One special case is when the access type is declared in the
+    --  same scope as the class-wide allocator, in which case the check can
+    --  never fail, so it need not be generated.
+    --
+    --  As an open issue, there seem to be cases where the static level
+    --  associated with the class-wide object's underlying type is not
+    --  sufficient to perform the proper accessibility check, such as for
+    --  allocators in nested subprograms or accept statements initialized by
+    --  class-wide formals when the actual originates outside at a deeper
+    --  static level. The nested subprogram case might require passing
+    --  accessibility levels along with class-wide parameters, and the task
+    --  case seems to be an actual gap in the language rules that needs to
+    --  be fixed by the ARG. ???
+ 
+    procedure Check_Return_Construct_Accessibility
+      (Return_Stmt : Node_Id;
+       Stm_Entity  : Entity_Id);
+    --  Apply legality rule of 6.5 (5.9) to the access discriminants of an
+    --  aggregate in a return statement.
+ 
+    function Deepest_Type_Access_Level
+      (Typ             : Entity_Id;
+       Allow_Alt_Model : Boolean := True) return Uint;
+    --  Same as Type_Access_Level, except that if the type is the type of an Ada
+    --  2012 stand-alone object of an anonymous access type, then return the
+    --  static accessibility level of the object. In that case, the dynamic
+    --  accessibility level of the object may take on values in a range. The low
+    --  bound of that range is returned by Type_Access_Level; this function
+    --  yields the high bound of that range. Also differs from Type_Access_Level
+    --  in the case of a descendant of a generic formal type (returns Int'Last
+    --  instead of 0).
+ 
+    --  The Allow_Alt_Model parameter allows the alternative level calculation
+    --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
+ 
+    function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id;
+    --  Same as Einfo.Extra_Accessibility except thtat object renames
+    --  are looked through.
+ 
+    function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id;
+    --  Obtain the accessibility level for a given entity formal taking into
+    --  account both extra and minimum accessibility.
+ 
+    function Has_Access_Values (T : Entity_Id) return Boolean;
+    --  Returns true if the underlying type of T is an access type, or has a
+    --  component (at any recursive level) that is an access type. This is a
+    --  conservative predicate, if it is not known whether or not T contains
+    --  access values (happens for generic formals in some cases), then False is
+    --  returned.  Note that tagged types return False. Even though the tag is
+    --  implemented as an access type internally, this function tests only for
+    --  access types known to the programmer. See also Has_Tagged_Component.
+ 
+    function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean;
+    --  Returns True if Typ has one or more anonymous access discriminants
+ 
+    function Prefix_With_Safe_Accessibility_Level
+      (N   : Node_Id;
+       Typ : Entity_Id) return Boolean;
+    --  Return True if the prefix does not have a value conversion of an
+    --  array because a value conversion is like an aggregate with respect
+    --  to determining accessibility level (RM 3.10.2); even if evaluation
+    --  of a value conversion is guaranteed to not create a new object,
+    --  accessibility rules are defined as if it might.
+ 
+    subtype Static_Accessibility_Level_Kind
+      is Accessibility_Level_Kind range Object_Decl_Level
+                                          .. Zero_On_Dynamic_Level;
+    --  Restrict the reange of Accessibility_Level_Kind to be non-dynamic for
+    --  use in the static version of Accessibility_Level below.
+ 
+    function Static_Accessibility_Level
+      (Expr              : Node_Id;
+       Level             : Static_Accessibility_Level_Kind;
+       In_Return_Context : Boolean := False) return Uint;
+    --  Overloaded version of Accessibility_Level which returns a universal
+    --  integer for use in compile-time checking. Note: Level is restricted to
+    --  be non-dynamic.
+ 
+    function Has_Unconstrained_Access_Discriminants
+      (Subtyp : Entity_Id) return Boolean;
+    --  Returns True if the given subtype is unconstrained and has one or more
+    --  access discriminants.
+ 
+    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean;
+    --  Determine if N is used as an actual for a call whose corresponding
+    --  formal is of an anonymous access type.
+ 
+    function Is_Special_Aliased_Formal_Access
+      (Exp               : Node_Id;
+       In_Return_Context : Boolean := False) return Boolean;
+    --  Determines whether a dynamic check must be generated for explicitly
+    --  aliased formals within a function Scop for the expression Exp.
+ 
+    --  In_Return_Context forces Is_Special_Aliased_Formal_Access to assume
+    --  that Exp is within a return value which is useful for checking
+    --  expressions within discriminant associations of return objects.
+ 
+    --  More specially, Is_Special_Aliased_Formal_Access checks that Exp is a
+    --  'Access attribute reference within a return statement where the ultimate
+    --  prefix is an aliased formal of Scop and that Scop returns an anonymous
+    --  access type. See RM 3.10.2 for more details.
+ 
+    function Needs_Result_Accessibility_Level
+      (Func_Id : Entity_Id) return Boolean;
+    --  Ada 2012 (AI05-0234): Return True if the function needs an implicit
+    --  parameter to identify the accessibility level of the function result
+    --  "determined by the point of call".
+ 
+    function Subprogram_Access_Level (Subp : Entity_Id) return Uint;
+    --  Return the accessibility level of the view denoted by Subp
+ 
+    function Type_Access_Level
+      (Typ             : Entity_Id;
+       Allow_Alt_Model : Boolean   := True;
+       Assoc_Ent       : Entity_Id := Empty) return Uint;
+    --  Return the accessibility level of Typ
+ 
+    --  The Allow_Alt_Model parameter allows the alternative level calculation
+    --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
+ 
+    --  Assoc_Ent allows for the optional specification of the entity associated
+    --  with Typ. This gets utilized mostly for anonymous access type
+    --  processing, where context matters in interpreting Typ's level.
+ 
+ end Accessibility;
diff -Nrcpad gcc-12.2.0/gcc/ada/ada_get_targ.adb gcc-13.1.0/gcc/ada/ada_get_targ.adb
*** gcc-12.2.0/gcc/ada/ada_get_targ.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ada_get_targ.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/adabkend.adb gcc-13.1.0/gcc/ada/adabkend.adb
*** gcc-12.2.0/gcc/ada/adabkend.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/adabkend.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/adabkend.ads gcc-13.1.0/gcc/ada/adabkend.ads
*** gcc-12.2.0/gcc/ada/adabkend.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/adabkend.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/adadecode.c gcc-13.1.0/gcc/ada/adadecode.c
*** gcc-12.2.0/gcc/ada/adadecode.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/adadecode.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2001-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2001-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/adadecode.h gcc-13.1.0/gcc/ada/adadecode.h
*** gcc-12.2.0/gcc/ada/adadecode.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/adadecode.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2001-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2001-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/adaint.c gcc-13.1.0/gcc/ada/adaint.c
*** gcc-12.2.0/gcc/ada/adaint.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/adaint.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** UINT __gnat_current_ccs_encoding;
*** 200,210 ****
  #endif
  
  /* wait.h processing */
! #ifdef __MINGW32__
! # if OLD_MINGW
! #  include <sys/wait.h>
! # endif
! #elif defined (__vxworks) && defined (__RTP__)
  # include <wait.h>
  #elif defined (__Lynx__)
  /* ??? We really need wait.h and it includes resource.h on Lynx.  GCC
--- 200,206 ----
  #endif
  
  /* wait.h processing */
! #if defined (__vxworks) && defined (__RTP__)
  # include <wait.h>
  #elif defined (__Lynx__)
  /* ??? We really need wait.h and it includes resource.h on Lynx.  GCC
*************** UINT __gnat_current_ccs_encoding;
*** 214,220 ****
     preventing the inclusion of the GCC header from doing anything.  */
  # define GCC_RESOURCE_H
  # include <sys/wait.h>
! #elif defined (__PikeOS__)
  /* No wait() or waitpid() calls available.  */
  #else
  /* Default case.  */
--- 210,216 ----
     preventing the inclusion of the GCC header from doing anything.  */
  # define GCC_RESOURCE_H
  # include <sys/wait.h>
! #elif defined (__PikeOS__) || defined (__MINGW32__)
  /* No wait() or waitpid() calls available.  */
  #else
  /* Default case.  */
*************** UINT __gnat_current_ccs_encoding;
*** 231,236 ****
--- 227,233 ----
  
  #elif defined (_WIN32)
  
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #include <accctrl.h>
  #include <aclapi.h>
*************** const char *__gnat_library_template = GN
*** 335,345 ****
  
  #if defined (__MINGW32__)
  #include "mingw32.h"
- 
- #if OLD_MINGW
- #include <sys/param.h>
- #endif
- 
  #else
  #include <sys/param.h>
  #endif
--- 332,337 ----
*************** __gnat_cpu_set (int cpu, size_t count AT
*** 3533,3538 ****
--- 3525,3533 ----
  
  #if defined (__APPLE__)
  #include <mach-o/dyld.h>
+ #elif defined (__linux__)
+ #include <features.h>
+ #include <link.h>
  #endif
  
  const void *
*************** __gnat_get_executable_load_address (void
*** 3541,3550 ****
  #if defined (__APPLE__)
    return _dyld_get_image_header (0);
  
! #elif 0 && defined (__linux__)
!   /* Currently disabled as it needs at least -ldl.  */
    struct link_map *map = _r_debug.r_map;
- 
    return (const void *)map->l_addr;
  
  #elif defined (_WIN32)
--- 3536,3543 ----
  #if defined (__APPLE__)
    return _dyld_get_image_header (0);
  
! #elif defined (__linux__) && (defined (__GLIBC__) || defined (__UCLIBC__))
    struct link_map *map = _r_debug.r_map;
    return (const void *)map->l_addr;
  
  #elif defined (_WIN32)
*************** __gnat_get_executable_load_address (void
*** 3556,3562 ****
  }
  
  void
! __gnat_kill (int pid, int sig, int close ATTRIBUTE_UNUSED)
  {
  #if defined(_WIN32)
    HANDLE h;
--- 3549,3555 ----
  }
  
  void
! __gnat_kill (int pid, int sig)
  {
  #if defined(_WIN32)
    HANDLE h;
*************** void __gnat_killprocesstree (int pid, in
*** 3595,3601 ****
  
    if (hSnap == INVALID_HANDLE_VALUE)
      {
!       __gnat_kill (pid, sig_num, 1);
        return;
      }
  
--- 3588,3594 ----
  
    if (hSnap == INVALID_HANDLE_VALUE)
      {
!       __gnat_kill (pid, sig_num);
        return;
      }
  
*************** void __gnat_killprocesstree (int pid, in
*** 3618,3624 ****
  
    /* kill process */
  
!   __gnat_kill (pid, sig_num, 1);
  
  #elif defined (__vxworks)
    /* not implemented */
--- 3611,3617 ----
  
    /* kill process */
  
!   __gnat_kill (pid, sig_num);
  
  #elif defined (__vxworks)
    /* not implemented */
*************** void __gnat_killprocesstree (int pid, in
*** 3635,3641 ****
  
    if (!dir)
      {
!       __gnat_kill (pid, sig_num, 1);
        return;
      }
  
--- 3628,3634 ----
  
    if (!dir)
      {
!       __gnat_kill (pid, sig_num);
        return;
      }
  
*************** void __gnat_killprocesstree (int pid, in
*** 3673,3681 ****
  
    /* kill process */
  
!   __gnat_kill (pid, sig_num, 1);
  #else
!   __gnat_kill (pid, sig_num, 1);
  #endif
    /* Note on Solaris it is possible to read /proc/<PID>/status.
       The 5th and 6th words are the pid and the 7th and 8th the ppid.
--- 3666,3674 ----
  
    /* kill process */
  
!   __gnat_kill (pid, sig_num);
  #else
!   __gnat_kill (pid, sig_num);
  #endif
    /* Note on Solaris it is possible to read /proc/<PID>/status.
       The 5th and 6th words are the pid and the 7th and 8th the ppid.
diff -Nrcpad gcc-12.2.0/gcc/ada/adaint.h gcc-13.1.0/gcc/ada/adaint.h
*** gcc-12.2.0/gcc/ada/adaint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/adaint.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern char  *__gnat_to_host_dir_spec
*** 254,261 ****
  extern char  *__gnat_to_host_file_spec             (char *);
  extern char  *__gnat_to_canonical_path_spec	   (char *);
  extern void   __gnat_adjust_os_resource_limits	   (void);
- extern void   convert_addresses			   (const char *, void *, int,
- 						    void *, int *);
  extern int    __gnat_copy_attribs		   (char *, char *, int);
  extern int    __gnat_feof		  	   (FILE *);
  extern int    __gnat_ferror                        (FILE *);
--- 254,259 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/affinity.c gcc-13.1.0/gcc/ada/affinity.c
*** gcc-12.2.0/gcc/ada/affinity.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/affinity.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/ali-util.adb gcc-13.1.0/gcc/ada/ali-util.adb
*** gcc-12.2.0/gcc/ada/ali-util.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ali-util.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body ALI.Util is
*** 42,56 ****
     --  empty, because we don't want to report any errors when computing
     --  a source checksum.
  
!    procedure Post_Scan;
! 
!    procedure Error_Msg (Msg : String; Flag_Location : Source_Ptr);
! 
!    procedure Error_Msg_S (Msg : String);
! 
!    procedure Error_Msg_SC (Msg : String);
  
!    procedure Error_Msg_SP (Msg : String);
  
     --  Instantiation of Styleg, needed to instantiate Scng
  
--- 42,53 ----
     --  empty, because we don't want to report any errors when computing
     --  a source checksum.
  
!    procedure Post_Scan is null;
  
!    procedure Error_Msg (Msg : String; Flag_Location : Source_Ptr) is null;
!    procedure Error_Msg_S (Msg : String) is null;
!    procedure Error_Msg_SC (Msg : String) is null;
!    procedure Error_Msg_SP (Msg : String) is null;
  
     --  Instantiation of Styleg, needed to instantiate Scng
  
*************** package body ALI.Util is
*** 85,131 ****
        return Checksum1 = Checksum2 and then Checksum1 /= Checksum_Error;
     end Checksums_Match;
  
-    ---------------
-    -- Error_Msg --
-    ---------------
- 
-    procedure Error_Msg (Msg : String; Flag_Location : Source_Ptr) is
-       pragma Warnings (Off, Msg);
-       pragma Warnings (Off, Flag_Location);
-    begin
-       null;
-    end Error_Msg;
- 
-    -----------------
-    -- Error_Msg_S --
-    -----------------
- 
-    procedure Error_Msg_S (Msg : String) is
-       pragma Warnings (Off, Msg);
-    begin
-       null;
-    end Error_Msg_S;
- 
-    ------------------
-    -- Error_Msg_SC --
-    ------------------
- 
-    procedure Error_Msg_SC (Msg : String) is
-       pragma Warnings (Off, Msg);
-    begin
-       null;
-    end Error_Msg_SC;
- 
-    ------------------
-    -- Error_Msg_SP --
-    ------------------
- 
-    procedure Error_Msg_SP (Msg : String) is
-       pragma Warnings (Off, Msg);
-    begin
-       null;
-    end Error_Msg_SP;
- 
     -----------------------
     -- Get_File_Checksum --
     -----------------------
--- 82,87 ----
*************** package body ALI.Util is
*** 192,206 ****
        Interfaces.Reset;
     end Initialize_ALI_Source;
  
-    ---------------
-    -- Post_Scan --
-    ---------------
- 
-    procedure Post_Scan is
-    begin
-       null;
-    end Post_Scan;
- 
     ----------------------
     -- Read_Withed_ALIs --
     ----------------------
--- 148,153 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/ali-util.ads gcc-13.1.0/gcc/ada/ali-util.ads
*** gcc-12.2.0/gcc/ada/ali-util.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ali-util.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/ali.adb gcc-13.1.0/gcc/ada/ali.adb
*** gcc-12.2.0/gcc/ada/ali.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ali.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Snames; use Snames;
*** 33,38 ****
--- 33,39 ----
  
  with GNAT;                 use GNAT;
  with GNAT.Dynamic_HTables; use GNAT.Dynamic_HTables;
+ with System.String_Hash;
  
  package body ALI is
  
*************** package body ALI is
*** 251,256 ****
--- 252,258 ----
        'E' | --  external
        'G' | --  invocation graph
        'I' | --  interrupt
+       'K' | --  CUDA kernels
        'L' | --  linker option
        'M' | --  main program
        'N' | --  notes
*************** package body ALI is
*** 268,274 ****
  
        --  Still available:
  
!       'B' | 'F' | 'H' | 'J' | 'K' | 'O' | 'Q' => False);
  
     ------------------------------
     -- Add_Invocation_Construct --
--- 270,276 ----
  
        --  Still available:
  
!       'B' | 'F' | 'H' | 'J' | 'O' | 'Q' => False);
  
     ------------------------------
     -- Add_Invocation_Construct --
*************** package body ALI is
*** 578,597 ****
     function Hash
       (IS_Rec : Invocation_Signature_Record) return Bucket_Range_Type
     is
        Buffer : Bounded_String (2052);
-       IS_Nam : Name_Id;
  
     begin
!       --  The hash is obtained in the following manner:
!       --
!       --    * A String signature based on the scope, name, line number, column
!       --      number, and locations, in the following format:
        --
        --         scope__name__line_column__locations
-       --
-       --    * The String is converted into a Name_Id
-       --
-       --    * The absolute value of the Name_Id is used as the hash
  
        Append (Buffer, IS_Rec.Scope);
        Append (Buffer, "__");
--- 580,597 ----
     function Hash
       (IS_Rec : Invocation_Signature_Record) return Bucket_Range_Type
     is
+       function String_Hash is new System.String_Hash.Hash
+         (Char_Type => Character,
+          Key_Type  => String,
+          Hash_Type => Bucket_Range_Type);
+ 
        Buffer : Bounded_String (2052);
  
     begin
!       --  The hash is obtained from a signature based on the scope, name, line
!       --  number, column number, and locations, in the following format:
        --
        --         scope__name__line_column__locations
  
        Append (Buffer, IS_Rec.Scope);
        Append (Buffer, "__");
*************** package body ALI is
*** 606,613 ****
           Append (Buffer, IS_Rec.Locations);
        end if;
  
!       IS_Nam := Name_Find (Buffer);
!       return Bucket_Range_Type (abs IS_Nam);
     end Hash;
  
     --------------------
--- 606,612 ----
           Append (Buffer, IS_Rec.Locations);
        end if;
  
!       return String_Hash (To_String (Buffer));
     end Hash;
  
     --------------------
*************** package body ALI is
*** 672,678 ****
        SSO_Default_Specified                  := False;
        Task_Dispatching_Policy_Specified      := ' ';
        Unreserve_All_Interrupts_Specified     := False;
-       Frontend_Exceptions_Specified          := False;
        Zero_Cost_Exceptions_Specified         := False;
     end Initialize_ALI;
  
--- 671,676 ----
*************** package body ALI is
*** 1746,1757 ****
--- 1744,1757 ----
        ALIs.Table (Id) := (
          Afile                        => F,
          Compile_Errors               => False,
+         First_CUDA_Kernel            => CUDA_Kernels.Last + 1,
          First_Interrupt_State        => Interrupt_States.Last + 1,
          First_Sdep                   => No_Sdep_Id,
          First_Specific_Dispatching   => Specific_Dispatching.Last + 1,
          First_Unit                   => No_Unit_Id,
          GNATprove_Mode               => False,
          Invocation_Graph_Encoding    => No_Encoding,
+         Last_CUDA_Kernel             => CUDA_Kernels.Last,
          Last_Interrupt_State         => Interrupt_States.Last,
          Last_Sdep                    => No_Sdep_Id,
          Last_Specific_Dispatching    => Specific_Dispatching.Last,
*************** package body ALI is
*** 1776,1782 ****
          Unit_Exception_Table         => False,
          Ver                          => (others => ' '),
          Ver_Len                      => 0,
-         Frontend_Exceptions          => False,
          Zero_Cost_Exceptions         => False);
  
        --  Now we acquire the input lines from the ALI file. Note that the
--- 1776,1781 ----
*************** package body ALI is
*** 1919,1924 ****
--- 1918,1941 ----
           C := Getc;
        end loop A_Loop;
  
+       --  Acquire 'K' lines if present
+ 
+       Check_Unknown_Line;
+ 
+       while C = 'K' loop
+          if Ignore ('K') then
+             Skip_Line;
+ 
+          else
+             Skip_Space;
+             CUDA_Kernels.Append ((Kernel_Name => Get_Name));
+             ALIs.Table (Id).Last_CUDA_Kernel := CUDA_Kernels.Last;
+             Skip_Eol;
+          end if;
+ 
+          C := Getc;
+       end loop;
+ 
        --  Acquire P line
  
        Check_Unknown_Line;
*************** package body ALI is
*** 1973,1981 ****
              elsif C = 'F' then
                 C := Getc;
  
                 if C = 'X' then
!                   ALIs.Table (Id).Frontend_Exceptions := True;
!                   Frontend_Exceptions_Specified := True;
                 else
                    Fatal_Error_Ignore;
                 end if;
--- 1990,1999 ----
              elsif C = 'F' then
                 C := Getc;
  
+                --  Old front-end exceptions marker, ignore
+ 
                 if C = 'X' then
!                   null;
                 else
                    Fatal_Error_Ignore;
                 end if;
*************** package body ALI is
*** 2061,2067 ****
                 --  Processing for SS
  
                 elsif C = 'S' then
!                   Opt.Sec_Stack_Used := True;
  
                 --  Invalid switch starting with S
  
--- 2079,2102 ----
                 --  Processing for SS
  
                 elsif C = 'S' then
!                   --  Special case: a-tags/i-c* by themselves should not set
!                   --  Sec_Stack_Used, only if other code uses the secondary
!                   --  stack should we set this flag. This ensures that we do
!                   --  not bring the secondary stack unnecessarily when using
!                   --  one of these packages and not actually using the
!                   --  secondary stack.
! 
!                   declare
!                      File : constant String := Get_Name_String (F);
!                   begin
!                      if File /= "a-tags.ali"
!                        and then File /= "i-c.ali"
!                        and then File /= "i-cstrin.ali"
!                        and then File /= "i-cpoint.ali"
!                      then
!                         Opt.Sec_Stack_Used := True;
!                      end if;
!                   end;
  
                 --  Invalid switch starting with S
  
diff -Nrcpad gcc-12.2.0/gcc/ada/ali.ads gcc-13.1.0/gcc/ada/ali.ads
*** gcc-12.2.0/gcc/ada/ali.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ali.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package ALI is
*** 46,51 ****
--- 46,54 ----
     type ALI_Id is range 0 .. 99_999_999;
     --  Id values used for ALIs table entries
  
+    type CUDA_Kernel_Id is range 0 .. 99_999_999;
+    --  Id values used for CUDA_Kernel table entries
+ 
     type Unit_Id is range 0 .. 99_999_999;
     --  Id values used for Unit table entries
  
*************** package ALI is
*** 247,256 ****
        --  Set to True if unit exception table pointer generated. Not set if 'P'
        --  appears in Ignore_Lines.
  
-       Frontend_Exceptions : Boolean;
-       --  Set to True if file was compiled with front-end exceptions. Not set
-       --  if 'P' appears in Ignore_Lines.
- 
        Zero_Cost_Exceptions : Boolean;
        --  Set to True if file was compiled with zero cost exceptions. Not set
        --  if 'P' appears in Ignore_Lines.
--- 250,255 ----
*************** package ALI is
*** 258,263 ****
--- 257,268 ----
        Restrictions : Restrictions_Info;
        --  Restrictions information reconstructed from R lines
  
+       First_CUDA_Kernel : CUDA_Kernel_Id;
+       Last_CUDA_Kernel  : CUDA_Kernel_Id'Base;
+       --  These point to the first and last entries in the CUDA_Kernels table
+       --  for this unit. If there are no entries, First_CUDA_Kernel =
+       --  Last_CUDA_Kernel + 1.
+ 
        First_Interrupt_State : Interrupt_State_Id;
        Last_Interrupt_State  : Interrupt_State_Id'Base;
        --  These point to the first and last entries in the interrupt state
*************** package ALI is
*** 294,299 ****
--- 299,325 ----
       Table_Increment      => 200,
       Table_Name           => "ALIs");
  
+    ---------------------------
+    -- CUDA Kernels Table --
+    ---------------------------
+ 
+    --  An entry is made in this table for each K (CUDA Kernel) line
+    --  encountered in the input ALI file. The First/Last_CUDA_Kernel_Id
+    --  fields of the ALI file entry show the range of entries defined
+    --  within a particular ALI file.
+ 
+    type CUDA_Kernel_Record is record
+       Kernel_Name : Name_Id;
+    end record;
+ 
+    package CUDA_Kernels is new Table.Table (
+      Table_Component_Type => CUDA_Kernel_Record,
+      Table_Index_Type     => CUDA_Kernel_Id'Base,
+      Table_Low_Bound      => CUDA_Kernel_Id'First,
+      Table_Initial        => 100,
+      Table_Increment      => 200,
+      Table_Name           => "Cuda_Kernels");
+ 
     ----------------
     -- Unit Table --
     ----------------
*************** package ALI is
*** 559,568 ****
     --  Set to False by Initialize_ALI. Set to True if Scan_ALI reads
     --  a unit for which dynamic elaboration checking is enabled.
  
-    Frontend_Exceptions_Specified : Boolean := False;
-    --  Set to False by Initialize_ALI. Set to True if an ali file is read that
-    --  has a P line specifying the generation of front-end exceptions.
- 
     GNATprove_Mode_Specified : Boolean := False;
     --  Set to True if an ali file was produced in GNATprove mode.
  
--- 585,590 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/alloc.ads gcc-13.1.0/gcc/ada/alloc.ads
*** gcc-12.2.0/gcc/ada/alloc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/alloc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/argv-lynxos178-raven-cert.c gcc-13.1.0/gcc/ada/argv-lynxos178-raven-cert.c
*** gcc-12.2.0/gcc/ada/argv-lynxos178-raven-cert.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/argv-lynxos178-raven-cert.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2022, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2023, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/argv.c gcc-13.1.0/gcc/ada/argv.c
*** gcc-12.2.0/gcc/ada/argv.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/argv.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2022, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2023, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/aspects.adb gcc-13.1.0/gcc/ada/aspects.adb
*** gcc-12.2.0/gcc/ada/aspects.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/aspects.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Aspects is
*** 285,291 ****
  
     begin
        if Present (Spec) then
!          if A = Aspect_Default_Iterator then
              return Expression (Aspect_Rep_Item (Spec));
           else
              return Expression (Spec);
--- 285,293 ----
  
     begin
        if Present (Spec) then
!          if A = Aspect_Default_Iterator
!            and then Present (Aspect_Rep_Item (Spec))
!          then
              return Expression (Aspect_Rep_Item (Spec));
           else
              return Expression (Spec);
*************** package body Aspects is
*** 371,377 ****
           else
              Asps := New_List;
              Set_Aspect_Specifications (To, Asps);
-             Set_Has_Aspects (To);
           end if;
  
           --  Remove the aspect from its original owner and relocate it to node
--- 373,378 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/aspects.ads gcc-13.1.0/gcc/ada/aspects.ads
*** gcc-12.2.0/gcc/ada/aspects.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/aspects.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Aspects is
*** 441,447 ****
        Aspect_SPARK_Mode                 => Optional_Name,
        Aspect_Stable_Properties          => Expression,
        Aspect_Static_Predicate           => Expression,
!       Aspect_Storage_Model_Type         => Expression,
        Aspect_Storage_Pool               => Name,
        Aspect_Storage_Size               => Expression,
        Aspect_Stream_Size                => Expression,
--- 441,447 ----
        Aspect_SPARK_Mode                 => Optional_Name,
        Aspect_Stable_Properties          => Expression,
        Aspect_Static_Predicate           => Expression,
!       Aspect_Storage_Model_Type         => Optional_Expression,
        Aspect_Storage_Pool               => Name,
        Aspect_Storage_Size               => Expression,
        Aspect_Stream_Size                => Expression,
*************** package Aspects is
*** 822,832 ****
     --  set on the parent type if it has delayed representation aspects. This
     --  flag Has_Delayed_Rep_Aspects indicates that if we derive from this type
     --  we have to worry about making sure we inherit any delayed aspects. The
!    --  second flag is set on a derived type: May_Have_Inherited_Rep_Aspects
     --  is set if the parent type has Has_Delayed_Rep_Aspects set.
  
!    --  When we freeze a derived type, if the May_Have_Inherited_Rep_Aspects
!    --  flag is set, then we call Freeze.Inherit_Delayed_Rep_Aspects when
     --  the derived type is frozen, which deals with the necessary copying of
     --  information from the parent type, which must be frozen at that point
     --  (since freezing the derived type first freezes the parent type).
--- 822,832 ----
     --  set on the parent type if it has delayed representation aspects. This
     --  flag Has_Delayed_Rep_Aspects indicates that if we derive from this type
     --  we have to worry about making sure we inherit any delayed aspects. The
!    --  second flag is set on a derived type: May_Inherit_Delayed_Rep_Aspects
     --  is set if the parent type has Has_Delayed_Rep_Aspects set.
  
!    --  When we freeze a derived type, if the May_Inherit_Delayed_Rep_Aspects
!    --  flag is set, then we call Sem_Ch13.Inherit_Delayed_Rep_Aspects when
     --  the derived type is frozen, which deals with the necessary copying of
     --  information from the parent type, which must be frozen at that point
     --  (since freezing the derived type first freezes the parent type).
diff -Nrcpad gcc-12.2.0/gcc/ada/atree.adb gcc-13.1.0/gcc/ada/atree.adb
*** gcc-12.2.0/gcc/ada/atree.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/atree.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Unchecked_Conversion;
  with Aspects;        use Aspects;
  with Debug;          use Debug;
  with Namet;          use Namet;
*************** package body Atree is
*** 504,510 ****
           pragma Assert (Field_Type'Size = 1);
  
           function Cast is new
!            Unchecked_Conversion (Field_Size_1_Bit, Field_Type);
           Val : constant Field_Size_1_Bit := Get_1_Bit_Val (N, Offset);
        begin
           return Cast (Val);
--- 505,511 ----
           pragma Assert (Field_Type'Size = 1);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Size_1_Bit, Field_Type);
           Val : constant Field_Size_1_Bit := Get_1_Bit_Val (N, Offset);
        begin
           return Cast (Val);
*************** package body Atree is
*** 516,522 ****
           pragma Assert (Field_Type'Size = 2);
  
           function Cast is new
!            Unchecked_Conversion (Field_Size_2_Bit, Field_Type);
           Val : constant Field_Size_2_Bit := Get_2_Bit_Val (N, Offset);
        begin
           return Cast (Val);
--- 517,523 ----
           pragma Assert (Field_Type'Size = 2);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Size_2_Bit, Field_Type);
           Val : constant Field_Size_2_Bit := Get_2_Bit_Val (N, Offset);
        begin
           return Cast (Val);
*************** package body Atree is
*** 528,534 ****
           pragma Assert (Field_Type'Size = 4);
  
           function Cast is new
!            Unchecked_Conversion (Field_Size_4_Bit, Field_Type);
           Val : constant Field_Size_4_Bit := Get_4_Bit_Val (N, Offset);
        begin
           return Cast (Val);
--- 529,535 ----
           pragma Assert (Field_Type'Size = 4);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Size_4_Bit, Field_Type);
           Val : constant Field_Size_4_Bit := Get_4_Bit_Val (N, Offset);
        begin
           return Cast (Val);
*************** package body Atree is
*** 540,546 ****
           pragma Assert (Field_Type'Size = 8);
  
           function Cast is new
!            Unchecked_Conversion (Field_Size_8_Bit, Field_Type);
           Val : constant Field_Size_8_Bit := Get_8_Bit_Val (N, Offset);
        begin
           return Cast (Val);
--- 541,547 ----
           pragma Assert (Field_Type'Size = 8);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Size_8_Bit, Field_Type);
           Val : constant Field_Size_8_Bit := Get_8_Bit_Val (N, Offset);
        begin
           return Cast (Val);
*************** package body Atree is
*** 552,558 ****
           pragma Assert (Field_Type'Size = 32);
  
           function Cast is new
!            Unchecked_Conversion (Field_Size_32_Bit, Field_Type);
  
           Val : constant Field_Size_32_Bit := Get_32_Bit_Val (N, Offset);
           Result : constant Field_Type := Cast (Val);
--- 553,559 ----
           pragma Assert (Field_Type'Size = 32);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Size_32_Bit, Field_Type);
  
           Val : constant Field_Size_32_Bit := Get_32_Bit_Val (N, Offset);
           Result : constant Field_Type := Cast (Val);
*************** package body Atree is
*** 604,610 ****
           pragma Assert (Field_Type'Size = 1);
  
           function Cast is new
!            Unchecked_Conversion (Field_Type, Field_Size_1_Bit);
        begin
           Set_1_Bit_Val (N, Offset, Cast (Val));
        end Set_1_Bit_Field;
--- 605,611 ----
           pragma Assert (Field_Type'Size = 1);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Type, Field_Size_1_Bit);
        begin
           Set_1_Bit_Val (N, Offset, Cast (Val));
        end Set_1_Bit_Field;
*************** package body Atree is
*** 615,621 ****
           pragma Assert (Field_Type'Size = 2);
  
           function Cast is new
!            Unchecked_Conversion (Field_Type, Field_Size_2_Bit);
        begin
           Set_2_Bit_Val (N, Offset, Cast (Val));
        end Set_2_Bit_Field;
--- 616,622 ----
           pragma Assert (Field_Type'Size = 2);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Type, Field_Size_2_Bit);
        begin
           Set_2_Bit_Val (N, Offset, Cast (Val));
        end Set_2_Bit_Field;
*************** package body Atree is
*** 626,632 ****
           pragma Assert (Field_Type'Size = 4);
  
           function Cast is new
!            Unchecked_Conversion (Field_Type, Field_Size_4_Bit);
        begin
           Set_4_Bit_Val (N, Offset, Cast (Val));
        end Set_4_Bit_Field;
--- 627,633 ----
           pragma Assert (Field_Type'Size = 4);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Type, Field_Size_4_Bit);
        begin
           Set_4_Bit_Val (N, Offset, Cast (Val));
        end Set_4_Bit_Field;
*************** package body Atree is
*** 637,643 ****
           pragma Assert (Field_Type'Size = 8);
  
           function Cast is new
!            Unchecked_Conversion (Field_Type, Field_Size_8_Bit);
        begin
           Set_8_Bit_Val (N, Offset, Cast (Val));
        end Set_8_Bit_Field;
--- 638,644 ----
           pragma Assert (Field_Type'Size = 8);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Type, Field_Size_8_Bit);
        begin
           Set_8_Bit_Val (N, Offset, Cast (Val));
        end Set_8_Bit_Field;
*************** package body Atree is
*** 648,654 ****
           pragma Assert (Field_Type'Size = 32);
  
           function Cast is new
!            Unchecked_Conversion (Field_Type, Field_Size_32_Bit);
        begin
           Set_32_Bit_Val (N, Offset, Cast (Val));
        end Set_32_Bit_Field;
--- 649,655 ----
           pragma Assert (Field_Type'Size = 32);
  
           function Cast is new
!            Ada.Unchecked_Conversion (Field_Type, Field_Size_32_Bit);
        begin
           Set_32_Bit_Val (N, Offset, Cast (Val));
        end Set_32_Bit_Field;
*************** package body Atree is
*** 853,859 ****
        ----------------------
  
        procedure Print_Atree_Info (N : Node_Or_Entity_Id) is
!          function Cast is new Unchecked_Conversion (Slot, Int);
        begin
           Write_Int (Int (Size_In_Slots (N)));
           Write_Str (" slots (");
--- 854,860 ----
        ----------------------
  
        procedure Print_Atree_Info (N : Node_Or_Entity_Id) is
!          function Cast is new Ada.Unchecked_Conversion (Slot, Int);
        begin
           Write_Int (Int (Size_In_Slots (N)));
           Write_Str (" slots (");
*************** package body Atree is
*** 1774,1779 ****
--- 1775,1785 ----
  
           --  Mark the copy as Ghost depending on the current Ghost region
  
+          if Nkind (New_Id) in N_Entity then
+             Set_Is_Checked_Ghost_Entity (New_Id, False);
+             Set_Is_Ignored_Ghost_Entity (New_Id, False);
+          end if;
+ 
           Mark_New_Ghost_Node (New_Id);
  
           New_Node_Debugging_Output (New_Id);
*************** package body Atree is
*** 1960,1966 ****
        end if;
     end Paren_Count;
  
!    function Parent (N : Node_Or_Entity_Id) return Node_Or_Entity_Id is
     begin
        pragma Assert (Present (N));
  
--- 1966,1972 ----
        end if;
     end Paren_Count;
  
!    function Node_Parent (N : Node_Or_Entity_Id) return Node_Or_Entity_Id is
     begin
        pragma Assert (Present (N));
  
*************** package body Atree is
*** 1969,1975 ****
        else
           return Node_Or_Entity_Id (Link (N));
        end if;
!    end Parent;
  
     -------------
     -- Present --
--- 1975,1981 ----
        else
           return Node_Or_Entity_Id (Link (N));
        end if;
!    end Node_Parent;
  
     -------------
     -- Present --
*************** package body Atree is
*** 2146,2152 ****
        --  not already rewritten the node, as indicated by an Orig_Nodes entry
        --  that does not reference the Old_Node.
  
!       if Original_Node (Old_Node) = Old_Node then
           Sav_Node := New_Copy (Old_Node);
           Set_Original_Node (Sav_Node, Sav_Node);
           Set_Original_Node (Old_Node, Sav_Node);
--- 2152,2158 ----
        --  not already rewritten the node, as indicated by an Orig_Nodes entry
        --  that does not reference the Old_Node.
  
!       if not Is_Rewrite_Substitution (Old_Node) then
           Sav_Node := New_Copy (Old_Node);
           Set_Original_Node (Sav_Node, Sav_Node);
           Set_Original_Node (Old_Node, Sav_Node);
*************** package body Atree is
*** 2286,2297 ****
     -- Set_Parent --
     ----------------
  
!    procedure Set_Parent (N : Node_Or_Entity_Id; Val : Node_Or_Entity_Id) is
     begin
        pragma Assert (Present (N));
        pragma Assert (not In_List (N));
        Set_Link (N, Union_Id (Val));
!    end Set_Parent;
  
     ------------------------
     -- Set_Reporting_Proc --
--- 2292,2303 ----
     -- Set_Parent --
     ----------------
  
!    procedure Set_Node_Parent (N : Node_Or_Entity_Id; Val : Node_Or_Entity_Id) is
     begin
        pragma Assert (Present (N));
        pragma Assert (not In_List (N));
        Set_Link (N, Union_Id (Val));
!    end Set_Node_Parent;
  
     ------------------------
     -- Set_Reporting_Proc --
diff -Nrcpad gcc-12.2.0/gcc/ada/atree.ads gcc-13.1.0/gcc/ada/atree.ads
*** gcc-12.2.0/gcc/ada/atree.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/atree.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Types;          use Types;
*** 52,58 ****
  with Seinfo;         use Seinfo;
  with System;         use System;
  with Table;
- with Unchecked_Conversion;
  
  package Atree is
  
--- 52,57 ----
*************** package Atree is
*** 149,155 ****
     --  This is a count of errors that are serious enough to stop expansion,
     --  and hence to prevent generation of an object file even if the
     --  switch -gnatQ is set. Initialized to zero at the start of compilation.
-    --  Initialized for -gnatVa use, see comment above.
  
     --  WARNING: There is a matching C declaration of this variable in fe.h
  
--- 148,153 ----
*************** package Atree is
*** 157,168 ****
     --  Number of errors detected so far. Includes count of serious errors and
     --  non-serious errors, so this value is always greater than or equal to the
     --  Serious_Errors_Detected value. Initialized to zero at the start of
!    --  compilation. Initialized for -gnatVa use, see comment above.
  
     Warnings_Detected : Nat := 0;
     --  Number of warnings detected. Initialized to zero at the start of
!    --  compilation. Initialized for -gnatVa use, see comment above. This
!    --  count includes the count of style and info messages.
  
     Warning_Info_Messages : Nat := 0;
     --  Number of info messages generated as warnings. Info messages are never
--- 155,165 ----
     --  Number of errors detected so far. Includes count of serious errors and
     --  non-serious errors, so this value is always greater than or equal to the
     --  Serious_Errors_Detected value. Initialized to zero at the start of
!    --  compilation.
  
     Warnings_Detected : Nat := 0;
     --  Number of warnings detected. Initialized to zero at the start of
!    --  compilation. This count includes the count of style and info messages.
  
     Warning_Info_Messages : Nat := 0;
     --  Number of info messages generated as warnings. Info messages are never
*************** package Atree is
*** 447,456 ****
     --  Tests given Id for equality with the Empty node. This allows notations
     --  like "if No (Variant_Part)" as opposed to "if Variant_Part = Empty".
  
!    function Parent (N : Node_Or_Entity_Id) return Node_Or_Entity_Id;
     pragma Inline (Parent);
     --  Returns the parent of a node if the node is not a list member, or else
     --  the parent of the list containing the node if the node is a list member.
  
     function Paren_Count (N : Node_Id) return Nat;
     pragma Inline (Paren_Count);
--- 444,458 ----
     --  Tests given Id for equality with the Empty node. This allows notations
     --  like "if No (Variant_Part)" as opposed to "if Variant_Part = Empty".
  
!    function Node_Parent (N : Node_Or_Entity_Id) return Node_Or_Entity_Id;
!    pragma Inline (Node_Parent);
!    function Parent (N : Node_Or_Entity_Id) return Node_Or_Entity_Id
!      renames Node_Parent;
     pragma Inline (Parent);
     --  Returns the parent of a node if the node is not a list member, or else
     --  the parent of the list containing the node if the node is a list member.
+    --  Parent has the same name as the one in Nlists; Node_Parent can be used
+    --  more easily in the debugger.
  
     function Paren_Count (N : Node_Id) return Nat;
     pragma Inline (Paren_Count);
*************** package Atree is
*** 466,472 ****
     --  Note that this routine is used only in very peculiar cases. In normal
     --  cases, the Original_Node link is set by calls to Rewrite.
  
!    procedure Set_Parent (N : Node_Or_Entity_Id; Val : Node_Or_Entity_Id);
     pragma Inline (Set_Parent);
  
     procedure Set_Paren_Count (N : Node_Id; Val : Nat);
--- 468,477 ----
     --  Note that this routine is used only in very peculiar cases. In normal
     --  cases, the Original_Node link is set by calls to Rewrite.
  
!    procedure Set_Node_Parent (N : Node_Or_Entity_Id; Val : Node_Or_Entity_Id);
!    pragma Inline (Set_Node_Parent);
!    procedure Set_Parent (N : Node_Or_Entity_Id; Val : Node_Or_Entity_Id)
!      renames Set_Node_Parent;
     pragma Inline (Set_Parent);
  
     procedure Set_Paren_Count (N : Node_Id; Val : Nat);
diff -Nrcpad gcc-12.2.0/gcc/ada/atree.h gcc-13.1.0/gcc/ada/atree.h
*** gcc-12.2.0/gcc/ada/atree.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/atree.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 35,41 ****
  extern "C" {
  #endif
  
! #define Parent atree__parent
  extern Node_Id Parent (Node_Id);
  
  #define Original_Node atree__original_node
--- 35,41 ----
  extern "C" {
  #endif
  
! #define Parent atree__node_parent
  extern Node_Id Parent (Node_Id);
  
  #define Original_Node atree__original_node
diff -Nrcpad gcc-12.2.0/gcc/ada/aux-io.c gcc-13.1.0/gcc/ada/aux-io.c
*** gcc-12.2.0/gcc/ada/aux-io.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/aux-io.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/back_end.adb gcc-13.1.0/gcc/ada/back_end.adb
*** gcc-12.2.0/gcc/ada/back_end.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/back_end.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/back_end.ads gcc-13.1.0/gcc/ada/back_end.ads
*** gcc-12.2.0/gcc/ada/back_end.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/back_end.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/backend_utils.adb gcc-13.1.0/gcc/ada/backend_utils.adb
*** gcc-12.2.0/gcc/ada/backend_utils.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/backend_utils.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2021-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2021-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/backend_utils.ads gcc-13.1.0/gcc/ada/backend_utils.ads
*** gcc-12.2.0/gcc/ada/backend_utils.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/backend_utils.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2021-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2021-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bcheck.adb gcc-13.1.0/gcc/ada/bcheck.adb
*** gcc-12.2.0/gcc/ada/bcheck.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bcheck.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bcheck is
*** 94,102 ****
           Check_Consistent_SSO_Default;
        end if;
  
!       if Zero_Cost_Exceptions_Specified
!         or else Frontend_Exceptions_Specified
!       then
           Check_Consistent_Exception_Handling;
        end if;
  
--- 94,100 ----
           Check_Consistent_SSO_Default;
        end if;
  
!       if Zero_Cost_Exceptions_Specified then
           Check_Consistent_Exception_Handling;
        end if;
  
*************** package body Bcheck is
*** 1245,1255 ****
     procedure Check_Consistent_Exception_Handling is
     begin
        Check_Mechanism : for A1 in ALIs.First + 1 .. ALIs.Last loop
!          if (ALIs.Table (A1).Zero_Cost_Exceptions /=
!               ALIs.Table (ALIs.First).Zero_Cost_Exceptions)
!            or else
!             (ALIs.Table (A1).Frontend_Exceptions /=
!               ALIs.Table (ALIs.First).Frontend_Exceptions)
           then
              Error_Msg_File_1 := ALIs.Table (A1).Sfile;
              Error_Msg_File_2 := ALIs.Table (ALIs.First).Sfile;
--- 1243,1250 ----
     procedure Check_Consistent_Exception_Handling is
     begin
        Check_Mechanism : for A1 in ALIs.First + 1 .. ALIs.Last loop
!          if ALIs.Table (A1).Zero_Cost_Exceptions /=
!              ALIs.Table (ALIs.First).Zero_Cost_Exceptions
           then
              Error_Msg_File_1 := ALIs.Table (A1).Sfile;
              Error_Msg_File_2 := ALIs.Table (ALIs.First).Sfile;
diff -Nrcpad gcc-12.2.0/gcc/ada/bcheck.ads gcc-13.1.0/gcc/ada/bcheck.ads
*** gcc-12.2.0/gcc/ada/bcheck.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bcheck.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/binde.adb gcc-13.1.0/gcc/ada/binde.adb
*** gcc-12.2.0/gcc/ada/binde.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/binde.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/binde.ads gcc-13.1.0/gcc/ada/binde.ads
*** gcc-12.2.0/gcc/ada/binde.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/binde.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/binderr.adb gcc-13.1.0/gcc/ada/binderr.adb
*** gcc-12.2.0/gcc/ada/binderr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/binderr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/binderr.ads gcc-13.1.0/gcc/ada/binderr.ads
*** gcc-12.2.0/gcc/ada/binderr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/binderr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindgen.adb gcc-13.1.0/gcc/ada/bindgen.adb
*** gcc-12.2.0/gcc/ada/bindgen.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindgen.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindgen is
*** 80,91 ****
     --  domains just before calling the main procedure from the environment
     --  task.
  
-    System_Secondary_Stack_Package_In_Closure : Boolean := False;
-    --  Flag indicating whether the unit System.Secondary_Stack is in the
-    --  closure of the partition. This is set by Resolve_Binder_Options, and
-    --  is used to initialize the package in cases where the run-time brings
-    --  in package but the secondary stack is not used.
- 
     System_Tasking_Restricted_Stages_Used : Boolean := False;
     --  Flag indicating whether the unit System.Tasking.Restricted.Stages is in
     --  the closure of the partition. This is set by Resolve_Binder_Options,
--- 80,85 ----
*************** package body Bindgen is
*** 120,125 ****
--- 114,137 ----
     --  For CodePeer, introduce a wrapper subprogram which calls the
     --  user-defined main subprogram.
  
+    --  Name for local C-String variable
+ 
+    Adainit_String_Obj_Name  : constant String := "Adainit_Name_C_String";
+ 
+    --  Name and link_name for CUDA device initialization procedure
+ 
+    Device_Ada_Init_Subp_Name : constant String := "Device_Initialization";
+    Device_Link_Name_Prefix : constant String := "__device_";
+ 
+    function Device_Link_Name (Suffix : String) return String is
+      (Device_Link_Name_Prefix &
+        (if CUDA_Device_Library_Name = null
+         then "ada" -- is this an error path?
+         else CUDA_Device_Library_Name.all) & Suffix);
+ 
+    function Device_Ada_Init_Link_Name return String
+      is (Device_Link_Name (Suffix => "init"));
+ 
     ----------------------------------
     -- Interface_State Pragma Table --
     ----------------------------------
*************** package body Bindgen is
*** 317,322 ****
--- 329,340 ----
     procedure Gen_CodePeer_Wrapper;
     --  For CodePeer, generate wrapper which calls user-defined main subprogram
  
+    procedure Gen_CUDA_Defs;
+    --  Generate definitions needed in order to register kernels
+ 
+    procedure Gen_CUDA_Init;
+    --  Generate calls needed in order to register kernels
+ 
     procedure Gen_Elab_Calls (Elab_Order : Unit_Id_Array);
     --  Generate sequence of elaboration calls
  
*************** package body Bindgen is
*** 512,518 ****
     procedure Gen_Adainit (Elab_Order : Unit_Id_Array) is
        Main_Priority : Int renames ALIs.Table (ALIs.First).Main_Priority;
        Main_CPU      : Int renames ALIs.Table (ALIs.First).Main_CPU;
- 
     begin
        --  Declare the access-to-subprogram type used for initialization of
        --  of __gnat_finalize_library_objects. This is declared at library
--- 530,535 ----
*************** package body Bindgen is
*** 609,641 ****
                   """__gnat_initialize_stack_limit"");");
           end if;
  
!          if System_Secondary_Stack_Package_In_Closure then
!             --  System.Secondary_Stack is in the closure of the program
!             --  because the program uses the secondary stack or the restricted
!             --  run-time is unconditionally calling SS_Init. In both cases,
!             --  SS_Init needs to know the number of secondary stacks created by
!             --  the binder.
! 
              WBI ("      Binder_Sec_Stacks_Count : Natural;");
              WBI ("      pragma Import (Ada, Binder_Sec_Stacks_Count, " &
                   """__gnat_binder_ss_count"");");
              WBI ("");
  
!             --  Import secondary stack pool variables if the secondary stack
!             --  used. They are not referenced otherwise.
  
!             if Sec_Stack_Used then
!                WBI ("      Default_Secondary_Stack_Size : " &
!                     "System.Parameters.Size_Type;");
!                WBI ("      pragma Import (C, Default_Secondary_Stack_Size, " &
!                     """__gnat_default_ss_size"");");
  
!                WBI ("      Default_Sized_SS_Pool : System.Address;");
!                WBI ("      pragma Import (Ada, Default_Sized_SS_Pool, " &
!                     """__gnat_default_ss_pool"");");
  
!                WBI ("");
!             end if;
           end if;
  
           WBI ("   begin");
--- 626,652 ----
                   """__gnat_initialize_stack_limit"");");
           end if;
  
!          if Num_Sec_Stacks > 0 then
              WBI ("      Binder_Sec_Stacks_Count : Natural;");
              WBI ("      pragma Import (Ada, Binder_Sec_Stacks_Count, " &
                   """__gnat_binder_ss_count"");");
              WBI ("");
+          end if;
  
!          --  Import secondary stack pool variables if the secondary stack is
!          --  used. They are not referenced otherwise.
  
!          if Sec_Stack_Used then
!             WBI ("      Default_Secondary_Stack_Size : " &
!                  "System.Parameters.Size_Type;");
!             WBI ("      pragma Import (C, Default_Secondary_Stack_Size, " &
!                  """__gnat_default_ss_size"");");
  
!             WBI ("      Default_Sized_SS_Pool : System.Address;");
!             WBI ("      pragma Import (Ada, Default_Sized_SS_Pool, " &
!                  """__gnat_default_ss_pool"");");
  
!             WBI ("");
           end if;
  
           WBI ("   begin");
*************** package body Bindgen is
*** 683,728 ****
           --  Generate the default-sized secondary stack pool if the secondary
           --  stack is used by the program.
  
!          if System_Secondary_Stack_Package_In_Closure then
!             if Sec_Stack_Used then
!                --  Elaborate the body of the binder to initialize the default-
!                --  sized secondary stack pool.
! 
!                WBI ("");
!                WBI ("      " & Get_Ada_Main_Name & "'Elab_Body;");
! 
!                --  Generate the default-sized secondary stack pool and set the
!                --  related secondary stack globals.
  
!                Set_String ("      Default_Secondary_Stack_Size := ");
  
!                if Opt.Default_Sec_Stack_Size /= Opt.No_Stack_Size then
!                   Set_Int (Opt.Default_Sec_Stack_Size);
!                else
!                   Set_String
!                     ("System.Parameters.Runtime_Default_Sec_Stack_Size");
!                end if;
  
!                Set_Char (';');
!                Write_Statement_Buffer;
  
!                Set_String ("      Binder_Sec_Stacks_Count := ");
!                Set_Int (Num_Sec_Stacks);
!                Set_Char (';');
!                Write_Statement_Buffer;
  
!                WBI ("      Default_Sized_SS_Pool := " &
!                       "Sec_Default_Sized_Stacks'Address;");
!                WBI ("");
  
!             else
!                --  The presence of System.Secondary_Stack in the closure of the
!                --  program implies the restricted run-time is unconditionally
!                --  calling SS_Init. Let SS_Init know that no stacks were
!                --  created.
  
!                WBI ("      Binder_Sec_Stacks_Count := 0;");
!             end if;
           end if;
  
        --  Normal case (standard library not suppressed). Set all global values
--- 694,729 ----
           --  Generate the default-sized secondary stack pool if the secondary
           --  stack is used by the program.
  
!          if Sec_Stack_Used then
!             --  Elaborate the body of the binder to initialize the default-
!             --  sized secondary stack pool.
  
!             WBI ("");
!             WBI ("      " & Get_Ada_Main_Name & "'Elab_Body;");
  
!             --  Generate the default-sized secondary stack pool and set the
!             --  related secondary stack globals.
  
!             Set_String ("      Default_Secondary_Stack_Size := ");
  
!             if Opt.Default_Sec_Stack_Size /= Opt.No_Stack_Size then
!                Set_Int (Opt.Default_Sec_Stack_Size);
!             else
!                Set_String
!                  ("System.Parameters.Runtime_Default_Sec_Stack_Size");
!             end if;
  
!             Set_Char (';');
!             Write_Statement_Buffer;
  
!             Set_String ("      Binder_Sec_Stacks_Count := ");
!             Set_Int (Num_Sec_Stacks);
!             Set_Char (';');
!             Write_Statement_Buffer;
  
!             WBI ("      Default_Sized_SS_Pool := " &
!                    "Sec_Default_Sized_Stacks'Address;");
!             WBI ("");
           end if;
  
        --  Normal case (standard library not suppressed). Set all global values
*************** package body Bindgen is
*** 1134,1139 ****
--- 1135,1142 ----
           WBI ("");
        end if;
  
+       Gen_CUDA_Init;
+ 
        Gen_Elab_Calls (Elab_Order);
  
        if not CodePeer_Mode then
*************** package body Bindgen is
*** 1239,1244 ****
--- 1242,1458 ----
        Bind_Env_String_Built := True;
     end Gen_Bind_Env_String;
  
+    -------------------
+    -- Gen_CUDA_Defs --
+    -------------------
+ 
+    procedure Gen_CUDA_Defs is
+       Unit_Name : constant String :=
+         Get_Name_String (Units.Table (First_Unit_Entry).Uname);
+       Unit : constant String :=
+         Unit_Name (Unit_Name'First .. Unit_Name'Last - 2);
+    begin
+       if not Enable_CUDA_Expansion then
+          return;
+       end if;
+ 
+       WBI ("");
+       WBI ("   ");
+ 
+       WBI ("   procedure CUDA_Register_Function");
+       WBI ("      (Fat_Binary_Handle : System.Address;");
+       WBI ("       Func : System.Address;");
+       WBI ("       Kernel_Name : Interfaces.C.Strings.chars_ptr;");
+       WBI ("       Kernel_Name_2 : Interfaces.C.Strings.chars_ptr;");
+       WBI ("       Minus_One : Integer;");
+       WBI ("       Nullptr1 : System.Address;");
+       WBI ("       Nullptr2 : System.Address;");
+       WBI ("       Nullptr3 : System.Address;");
+       WBI ("       Nullptr4 : System.Address;");
+       WBI ("       Nullptr5 : System.Address);");
+       WBI ("   pragma Import");
+       WBI ("     (Convention => C,");
+       WBI ("      Entity => CUDA_Register_Function,");
+       WBI ("      External_Name => ""__cudaRegisterFunction"");");
+       WBI ("");
+       WBI ("   function CUDA_Register_Fat_Binary");
+       WBI ("     (Fat_Binary : System.Address)");
+       WBI ("      return System.Address;");
+       WBI ("    pragma Import");
+       WBI ("      (Convention => C,");
+       WBI ("       Entity => CUDA_Register_Fat_Binary,");
+       WBI ("       External_Name => ""__cudaRegisterFatBinary"");");
+       WBI ("");
+       WBI ("   procedure CUDA_Register_Fat_Binary_End");
+       WBI ("     (Fat_Binary : System.Address);");
+       WBI ("   pragma Import");
+       WBI ("     (Convention => C,");
+       WBI ("      Entity => CUDA_Register_Fat_Binary_End,");
+       WBI ("      External_Name => ""__cudaRegisterFatBinaryEnd"");");
+       WBI ("");
+       WBI ("   type Fatbin_Wrapper is record");
+       WBI ("      Magic   : Interfaces.C.int;");
+       WBI ("      Version : Interfaces.C.int;");
+       WBI ("      Data    : System.Address;");
+       WBI ("      Filename_Or_Fatbins : System.Address;");
+       WBI ("   end record;");
+       WBI ("");
+       WBI ("   Fat_Binary : System.Address;");
+       WBI ("   pragma Import");
+       WBI ("      (Convention    => C,");
+       WBI ("       Entity        => Fat_Binary,");
+       WBI ("       External_Name => ""_binary_" & Unit & "_fatbin_start"");");
+       WBI ("");
+       WBI ("   Wrapper : Fatbin_Wrapper :=");
+       WBI ("     (16#466243b1#,");
+       WBI ("      1,");
+       WBI ("      Fat_Binary'Address,");
+       WBI ("      System.Null_Address);");
+       WBI ("");
+       WBI ("   Fat_Binary_Handle : System.Address;");
+       WBI ("");
+ 
+       for K in CUDA_Kernels.First .. CUDA_Kernels.Last loop
+          declare
+             K_String : constant String := CUDA_Kernel_Id'Image (K);
+             N : constant String :=
+               K_String (K_String'First + 1 .. K_String'Last);
+             Kernel_Symbol : constant String := "Kernel_" & N;
+             --  K_Symbol is a unique identifier used to derive all symbol names
+             --  related to kernel K.
+ 
+             Kernel_Proc : constant String := Kernel_Symbol & "_Proc";
+             --  Kernel_Proc is the name of the symbol representing the
+             --  host-side procedure of the kernel. The address is
+             --  pragma-imported and then used while registering the kernel with
+             --  the CUDA runtime.
+             Kernel_String : constant String := Kernel_Symbol & "_String";
+             --  Kernel_String is the name of the C-string containing the name
+             --  of the kernel. It is used for registering the kernel with the
+             --  CUDA runtime.
+             Kernel_Name : constant String :=
+                Get_Name_String (CUDA_Kernels.Table (K).Kernel_Name);
+             --  Kernel_Name is the name of the kernel, after package expansion.
+ 
+          begin
+             --  Import host-side kernel address.
+             WBI ("   procedure " & Kernel_Proc & ";");
+             WBI ("   pragma Import");
+             WBI ("      (Convention    => C,");
+             WBI ("       Entity        => " & Kernel_Proc & ",");
+             WBI ("       External_Name => """ & Kernel_Name & """);");
+             WBI ("");
+ 
+             --  Generate C-string containing name of kernel.
+             WBI
+               ("   " & Kernel_String & " : Interfaces.C.Strings.Chars_Ptr;");
+             WBI ("");
+ 
+          end;
+       end loop;
+ 
+       WBI ("   procedure " & Device_Ada_Init_Subp_Name & ";");
+       WBI ("   pragma Export (C, " & Device_Ada_Init_Subp_Name &
+              ", Link_Name => """ & Device_Ada_Init_Link_Name & """);");
+ 
+       --  C-string declaration for adainit
+       WBI ("   " & Adainit_String_Obj_Name
+             & " : Interfaces.C.Strings.Chars_Ptr;");
+       WBI ("");
+ 
+       WBI ("");
+    end Gen_CUDA_Defs;
+ 
+    -------------------
+    -- Gen_CUDA_Init --
+    -------------------
+ 
+    procedure Gen_CUDA_Init is
+       --  Generate call to register one function
+       procedure Gen_CUDA_Register_Function_Call
+         (Kernel_Name   : String;
+          Kernel_String : String;
+          Kernel_Proc   : String);
+ 
+       -------------------------------------
+       -- Gen_CUDA_Register_Function_Call --
+       -------------------------------------
+ 
+       procedure Gen_CUDA_Register_Function_Call
+         (Kernel_Name   : String;
+          Kernel_String : String;
+          Kernel_Proc   : String) is
+       begin
+          WBI ("      " & Kernel_String & " :=");
+          WBI ("        Interfaces.C.Strings.New_Char_Array ("""
+                & Kernel_Name
+                & """);");
+ 
+          --  Generate call to CUDA runtime to register function.
+          WBI ("      CUDA_Register_Function (");
+          WBI ("        Fat_Binary_Handle, ");
+          WBI ("        " & Kernel_Proc & "'Address,");
+          WBI ("        " & Kernel_String & ",");
+          WBI ("        " & Kernel_String & ",");
+          WBI ("        -1,");
+          WBI ("        System.Null_Address,");
+          WBI ("        System.Null_Address,");
+          WBI ("        System.Null_Address,");
+          WBI ("        System.Null_Address,");
+          WBI ("        System.Null_Address);");
+          WBI ("");
+       end Gen_CUDA_Register_Function_Call;
+ 
+    begin
+       if not Enable_CUDA_Expansion then
+          return;
+       end if;
+ 
+       WBI ("      Fat_Binary_Handle :=");
+       WBI ("        CUDA_Register_Fat_Binary (Wrapper'Address);");
+ 
+       for K in CUDA_Kernels.First .. CUDA_Kernels.Last loop
+          declare
+             K_String : constant String := CUDA_Kernel_Id'Image (K);
+             N : constant String :=
+               K_String (K_String'First + 1 .. K_String'Last);
+             Kernel_Symbol : constant String := "Kernel_" & N;
+             --  K_Symbol is a unique identifier used to derive all symbol names
+             --  related to kernel K.
+ 
+             Kernel_Proc : constant String := Kernel_Symbol & "_Proc";
+             --  Kernel_Proc is the name of the symbol representing the
+             --  host-side procedure of the kernel. The address is
+             --  pragma-imported and then used while registering the kernel with
+             --  the CUDA runtime.
+             Kernel_String : constant String := Kernel_Symbol & "_String";
+             --  Kernel_String is the name of the C-string containing the name
+             --  of the kernel. It is used for registering the kernel with the
+             --  CUDA runtime.
+             Kernel_Name : constant String :=
+                Get_Name_String (CUDA_Kernels.Table (K).Kernel_Name);
+             --  Kernel_Name is the name of the kernel, after package expansion.
+          begin
+             Gen_CUDA_Register_Function_Call
+               (Kernel_Name   => Kernel_Name,
+                Kernel_String => Kernel_String,
+                Kernel_Proc   => Kernel_Proc);
+          end;
+       end loop;
+ 
+       --  Register device-side Adainit
+       Gen_CUDA_Register_Function_Call
+         (Kernel_Name   => Device_Ada_Init_Link_Name,
+          Kernel_String => Adainit_String_Obj_Name,
+          Kernel_Proc   => Device_Ada_Init_Subp_Name);
+ 
+       WBI ("      CUDA_Register_Fat_Binary_End (Fat_Binary_Handle);");
+ 
+       --  perform device (as opposed to host) elaboration
+       WBI ("      pragma CUDA_Execute (" &
+              Device_Ada_Init_Subp_Name & ", 1, 1);");
+    end Gen_CUDA_Init;
+ 
     --------------------------
     -- Gen_CodePeer_Wrapper --
     --------------------------
*************** package body Bindgen is
*** 1388,1393 ****
--- 1602,1608 ----
  
                 Check_Elab_Flag :=
                   Units.Table (Unum_Spec).Set_Elab_Entity
+                    and then Check_Elaboration_Flags
                     and then not CodePeer_Mode
                     and then (Force_Checking_Of_Elaboration_Flags
                                or Interface_Library_Unit
*************** package body Bindgen is
*** 2353,2358 ****
--- 2568,2581 ----
           WBI ("with System.Secondary_Stack;");
        end if;
  
+       if Enable_CUDA_Expansion then
+          WBI ("with Interfaces.C;");
+          WBI ("with Interfaces.C.Strings;");
+ 
+          --  with of CUDA.Internal needed for CUDA_Execute pragma expansion
+          WBI ("with CUDA.Internal;");
+       end if;
+ 
        Resolve_Binder_Options (Elab_Order);
  
        --  Generate standard with's
*************** package body Bindgen is
*** 2441,2448 ****
  
        WBI ("");
        WBI ("   procedure " & Ada_Init_Name.all & ";");
!       WBI ("   pragma Export (C, " & Ada_Init_Name.all & ", """ &
!            Ada_Init_Name.all & """);");
  
        --  If -a has been specified use pragma Linker_Constructor for the init
        --  procedure and pragma Linker_Destructor for the final procedure.
--- 2664,2678 ----
  
        WBI ("");
        WBI ("   procedure " & Ada_Init_Name.all & ";");
!       if Enable_CUDA_Device_Expansion then
!          WBI ("   pragma Export (C, " & Ada_Init_Name.all &
!                 ", Link_Name => """ & Device_Link_Name_Prefix
!                 & Ada_Init_Name.all & """);");
!          WBI ("   pragma CUDA_Global (" & Ada_Init_Name.all & ");");
!       else
!          WBI ("   pragma Export (C, " & Ada_Init_Name.all & ", """ &
!               Ada_Init_Name.all & """);");
!       end if;
  
        --  If -a has been specified use pragma Linker_Constructor for the init
        --  procedure and pragma Linker_Destructor for the final procedure.
*************** package body Bindgen is
*** 2454,2461 ****
        if not Cumulative_Restrictions.Set (No_Finalization) then
           WBI ("");
           WBI ("   procedure " & Ada_Final_Name.all & ";");
!          WBI ("   pragma Export (C, " & Ada_Final_Name.all & ", """ &
!               Ada_Final_Name.all & """);");
  
           if Use_Pragma_Linker_Constructor then
              WBI ("   pragma Linker_Destructor (" & Ada_Final_Name.all & ");");
--- 2684,2698 ----
        if not Cumulative_Restrictions.Set (No_Finalization) then
           WBI ("");
           WBI ("   procedure " & Ada_Final_Name.all & ";");
!          if Enable_CUDA_Device_Expansion then
!             WBI ("   pragma Export (C, " & Ada_Final_Name.all &
!                    ", Link_Name => """ & Device_Link_Name_Prefix &
!                    Ada_Final_Name.all & """);");
!             WBI ("   pragma CUDA_Global (" & Ada_Final_Name.all & ");");
!          else
!             WBI ("   pragma Export (C, " & Ada_Final_Name.all & ", """ &
!                  Ada_Final_Name.all & """);");
!          end if;
  
           if Use_Pragma_Linker_Constructor then
              WBI ("   pragma Linker_Destructor (" & Ada_Final_Name.all & ");");
*************** package body Bindgen is
*** 2502,2507 ****
--- 2739,2746 ----
             Get_Main_Name & """);");
        end if;
  
+       Gen_CUDA_Defs;
+ 
        --  Generate version numbers for units, only if needed. Be very safe on
        --  the condition.
  
*************** package body Bindgen is
*** 2678,2683 ****
--- 2917,2929 ----
  
        Gen_Adainit (Elab_Order);
  
+       if Enable_CUDA_Expansion then
+          WBI ("   procedure " & Device_Ada_Init_Subp_Name & " is");
+          WBI ("   begin");
+          WBI ("      raise Program_Error;");
+          WBI ("   end " & Device_Ada_Init_Subp_Name & ";");
+       end if;
+ 
        if Bind_Main_Program then
           Gen_Main;
        end if;
*************** package body Bindgen is
*** 2907,2913 ****
              Nlen := Name'Length;
              Name (Name'Last) := Character'Val (J mod 10 + Character'Pos ('0'));
              Name (Name'Last - 1) :=
!               Character'Val (J /   10 + Character'Pos ('0'));
           end if;
  
           for K in ALIs.First .. ALIs.Last loop
--- 3153,3159 ----
              Nlen := Name'Length;
              Name (Name'Last) := Character'Val (J mod 10 + Character'Pos ('0'));
              Name (Name'Last - 1) :=
!               Character'Val (J / 10 + Character'Pos ('0'));
           end if;
  
           for K in ALIs.First .. ALIs.Last loop
*************** package body Bindgen is
*** 3135,3146 ****
  
           Check_Package (System_Restrictions_Used, "system.restrictions%s");
  
-          --  Ditto for the use of System.Secondary_Stack
- 
-          Check_Package
-            (System_Secondary_Stack_Package_In_Closure,
-             "system.secondary_stack%s");
- 
           --  Ditto for use of an SMP bareboard runtime
  
           Check_Package (System_BB_CPU_Primitives_Multiprocessors_Used,
--- 3381,3386 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/bindgen.ads gcc-13.1.0/gcc/ada/bindgen.ads
*** gcc-12.2.0/gcc/ada/bindgen.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindgen.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-augmentors.adb gcc-13.1.0/gcc/ada/bindo-augmentors.adb
*** gcc-12.2.0/gcc/ada/bindo-augmentors.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-augmentors.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-augmentors.ads gcc-13.1.0/gcc/ada/bindo-augmentors.ads
*** gcc-12.2.0/gcc/ada/bindo-augmentors.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-augmentors.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-builders.adb gcc-13.1.0/gcc/ada/bindo-builders.adb
*** gcc-12.2.0/gcc/ada/bindo-builders.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-builders.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-builders.ads gcc-13.1.0/gcc/ada/bindo-builders.ads
*** gcc-12.2.0/gcc/ada/bindo-builders.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-builders.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-diagnostics.adb gcc-13.1.0/gcc/ada/bindo-diagnostics.adb
*** gcc-12.2.0/gcc/ada/bindo-diagnostics.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-diagnostics.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-diagnostics.ads gcc-13.1.0/gcc/ada/bindo-diagnostics.ads
*** gcc-12.2.0/gcc/ada/bindo-diagnostics.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-diagnostics.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-elaborators.adb gcc-13.1.0/gcc/ada/bindo-elaborators.adb
*** gcc-12.2.0/gcc/ada/bindo-elaborators.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-elaborators.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-elaborators.ads gcc-13.1.0/gcc/ada/bindo-elaborators.ads
*** gcc-12.2.0/gcc/ada/bindo-elaborators.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-elaborators.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-graphs.adb gcc-13.1.0/gcc/ada/bindo-graphs.adb
*** gcc-12.2.0/gcc/ada/bindo-graphs.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-graphs.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-graphs.ads gcc-13.1.0/gcc/ada/bindo-graphs.ads
*** gcc-12.2.0/gcc/ada/bindo-graphs.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-graphs.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-units.adb gcc-13.1.0/gcc/ada/bindo-units.adb
*** gcc-12.2.0/gcc/ada/bindo-units.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-units.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-units.ads gcc-13.1.0/gcc/ada/bindo-units.ads
*** gcc-12.2.0/gcc/ada/bindo-units.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-units.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-validators.adb gcc-13.1.0/gcc/ada/bindo-validators.adb
*** gcc-12.2.0/gcc/ada/bindo-validators.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-validators.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-validators.ads gcc-13.1.0/gcc/ada/bindo-validators.ads
*** gcc-12.2.0/gcc/ada/bindo-validators.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-validators.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-writers.adb gcc-13.1.0/gcc/ada/bindo-writers.adb
*** gcc-12.2.0/gcc/ada/bindo-writers.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-writers.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo-writers.ads gcc-13.1.0/gcc/ada/bindo-writers.ads
*** gcc-12.2.0/gcc/ada/bindo-writers.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo-writers.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo.adb gcc-13.1.0/gcc/ada/bindo.adb
*** gcc-12.2.0/gcc/ada/bindo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindo.ads gcc-13.1.0/gcc/ada/bindo.ads
*** gcc-12.2.0/gcc/ada/bindo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/bindusg.adb gcc-13.1.0/gcc/ada/bindusg.adb
*** gcc-12.2.0/gcc/ada/bindusg.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindusg.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Bindusg is
*** 156,161 ****
--- 156,166 ----
          ("  -I-       Don't look for sources & library files in default "
           & "directory");
  
+       --  Line for -k switch
+ 
+       Write_Line
+         ("  -k        Disable checking of elaboration flags");
+ 
        --  Line for -K switch
  
        Write_Line
diff -Nrcpad gcc-12.2.0/gcc/ada/bindusg.ads gcc-13.1.0/gcc/ada/bindusg.ads
*** gcc-12.2.0/gcc/ada/bindusg.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/bindusg.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/butil.adb gcc-13.1.0/gcc/ada/butil.adb
*** gcc-12.2.0/gcc/ada/butil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/butil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,31 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Opt;    use Opt;
  with Output; use Output;
- with Unchecked_Deallocation;
  
  with GNAT; use GNAT;
  
--- 23,31 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Unchecked_Deallocation;
  with Opt;    use Opt;
  with Output; use Output;
  
  with GNAT; use GNAT;
  
*************** package body Butil is
*** 540,546 ****
     ---------------------------------
  
     function Read_Forced_Elab_Order_File return String_Ptr is
!       procedure Free is new Unchecked_Deallocation (String, String_Ptr);
  
        Descr    : File_Descriptor;
        Len      : Natural;
--- 540,546 ----
     ---------------------------------
  
     function Read_Forced_Elab_Order_File return String_Ptr is
!       procedure Free is new Ada.Unchecked_Deallocation (String, String_Ptr);
  
        Descr    : File_Descriptor;
        Len      : Natural;
diff -Nrcpad gcc-12.2.0/gcc/ada/butil.ads gcc-13.1.0/gcc/ada/butil.ads
*** gcc-12.2.0/gcc/ada/butil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/butil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/cal.c gcc-13.1.0/gcc/ada/cal.c
*** gcc-12.2.0/gcc/ada/cal.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/cal.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 53,62 ****
  
  #ifdef __MINGW32__
  #include "mingw32.h"
- #if STD_MINGW
  #include <winsock.h>
  #endif
- #endif
  
  void
  __gnat_timeval_to_duration (struct timeval *t, long long *sec, long *usec)
--- 53,60 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/casing.adb gcc-13.1.0/gcc/ada/casing.adb
*** gcc-12.2.0/gcc/ada/casing.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/casing.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Casing is
*** 105,119 ****
        end if;
     end Determine_Casing;
  
-    ------------------------
-    -- Set_All_Upper_Case --
-    ------------------------
- 
-    procedure Set_All_Upper_Case is
-    begin
-       Set_Casing (All_Upper_Case);
-    end Set_All_Upper_Case;
- 
     ----------------
     -- Set_Casing --
     ----------------
--- 105,110 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/casing.ads gcc-13.1.0/gcc/ada/casing.ads
*** gcc-12.2.0/gcc/ada/casing.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/casing.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Casing is
*** 78,89 ****
     procedure Set_Casing (C : Casing_Type; D : Casing_Type := Mixed_Case);
     --  Uses Buf => Global_Name_Buffer
  
-    procedure Set_All_Upper_Case;
-    pragma Inline (Set_All_Upper_Case);
-    --  This procedure is called with an identifier name stored in Name_Buffer.
-    --  On return, the identifier is converted to all upper case. The call is
-    --  equivalent to Set_Casing (All_Upper_Case).
- 
     function Determine_Casing (Ident : Text_Buffer) return Casing_Type;
     --  Determines the casing of the identifier/keyword string Ident. A special
     --  test is made for SPARK_Mode which is considered to be mixed case, since
--- 78,83 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/checks.adb gcc-13.1.0/gcc/ada/checks.adb
*** gcc-12.2.0/gcc/ada/checks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/checks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Checks is
*** 570,688 ****
        Install_Null_Excluding_Check (P);
     end Apply_Access_Check;
  
-    -------------------------------
-    -- Apply_Accessibility_Check --
-    -------------------------------
- 
-    procedure Apply_Accessibility_Check
-      (N           : Node_Id;
-       Typ         : Entity_Id;
-       Insert_Node : Node_Id)
-    is
-       Loc : constant Source_Ptr := Sloc (N);
- 
-       Check_Cond  : Node_Id;
-       Param_Ent   : Entity_Id := Param_Entity (N);
-       Param_Level : Node_Id;
-       Type_Level  : Node_Id;
- 
-    begin
-       --  Verify we haven't tried to add a dynamic accessibility check when we
-       --  shouldn't.
- 
-       pragma Assert (not No_Dynamic_Accessibility_Checks_Enabled (N));
- 
-       if Ada_Version >= Ada_2012
-          and then not Present (Param_Ent)
-          and then Is_Entity_Name (N)
-          and then Ekind (Entity (N)) in E_Constant | E_Variable
-          and then Present (Effective_Extra_Accessibility (Entity (N)))
-       then
-          Param_Ent := Entity (N);
-          while Present (Renamed_Object (Param_Ent)) loop
-             --  Renamed_Object must return an Entity_Name here
-             --  because of preceding "Present (E_E_A (...))" test.
- 
-             Param_Ent := Entity (Renamed_Object (Param_Ent));
-          end loop;
-       end if;
- 
-       if Inside_A_Generic then
-          return;
- 
-       --  Only apply the run-time check if the access parameter has an
-       --  associated extra access level parameter and when accessibility checks
-       --  are enabled.
- 
-       elsif Present (Param_Ent)
-          and then Present (Get_Dynamic_Accessibility (Param_Ent))
-          and then not Accessibility_Checks_Suppressed (Param_Ent)
-          and then not Accessibility_Checks_Suppressed (Typ)
-       then
-          --  Obtain the parameter's accessibility level
- 
-          Param_Level :=
-            New_Occurrence_Of (Get_Dynamic_Accessibility (Param_Ent), Loc);
- 
-          --  Use the dynamic accessibility parameter for the function's result
-          --  when one has been created instead of statically referring to the
-          --  deepest type level so as to appropriatly handle the rules for
-          --  RM 3.10.2 (10.1/3).
- 
-          if Ekind (Scope (Param_Ent)) = E_Function
-            and then In_Return_Value (N)
-            and then Ekind (Typ) = E_Anonymous_Access_Type
-          then
-             --  Associate the level of the result type to the extra result
-             --  accessibility parameter belonging to the current function.
- 
-             if Present (Extra_Accessibility_Of_Result (Scope (Param_Ent))) then
-                Type_Level :=
-                  New_Occurrence_Of
-                    (Extra_Accessibility_Of_Result (Scope (Param_Ent)), Loc);
- 
-             --  In Ada 2005 and earlier modes, a result extra accessibility
-             --  parameter is not generated and no dynamic check is performed.
- 
-             else
-                return;
-             end if;
- 
-          --  Otherwise get the type's accessibility level normally
- 
-          else
-             Type_Level :=
-               Make_Integer_Literal (Loc, Deepest_Type_Access_Level (Typ));
-          end if;
- 
-          --  Raise Program_Error if the accessibility level of the access
-          --  parameter is deeper than the level of the target access type.
- 
-          Check_Cond :=
-            Make_Op_Gt (Loc,
-              Left_Opnd  => Param_Level,
-              Right_Opnd => Type_Level);
- 
-          Insert_Action (Insert_Node,
-            Make_Raise_Program_Error (Loc,
-              Condition => Check_Cond,
-              Reason    => PE_Accessibility_Check_Failed));
- 
-          Analyze_And_Resolve (N);
- 
-          --  If constant folding has happened on the condition for the
-          --  generated error, then warn about it being unconditional.
- 
-          if Nkind (Check_Cond) = N_Identifier
-            and then Entity (Check_Cond) = Standard_True
-          then
-             Error_Msg_Warn := SPARK_Mode /= On;
-             Error_Msg_N ("accessibility check fails<<", N);
-             Error_Msg_N ("\Program_Error [<<", N);
-          end if;
-       end if;
-    end Apply_Accessibility_Check;
- 
     --------------------------------
     -- Apply_Address_Clause_Check --
     --------------------------------
--- 570,575 ----
*************** package body Checks is
*** 778,784 ****
           --  Note: Expr is empty if the address-clause is applied to in-mode
           --  actuals (allowed by 13.1(22)).
  
!          if not Present (Expr)
             or else
               (Is_Entity_Name (Expression (AC))
                 and then Ekind (Entity (Expression (AC))) = E_Constant
--- 665,671 ----
           --  Note: Expr is empty if the address-clause is applied to in-mode
           --  actuals (allowed by 13.1(22)).
  
!          if No (Expr)
             or else
               (Is_Entity_Name (Expression (AC))
                 and then Ekind (Entity (Expression (AC))) = E_Constant
*************** package body Checks is
*** 999,1019 ****
                    Determine_Range (N, VOK, Vlo, Vhi, Assume_Valid => True);
  
                    if VOK and then Tlo <= Vlo and then Vhi <= Thi then
-                      Rewrite (Left_Opnd (N),
-                        Make_Type_Conversion (Loc,
-                          Subtype_Mark => New_Occurrence_Of (Target_Type, Loc),
-                          Expression   => Relocate_Node (Left_Opnd (N))));
- 
-                      Rewrite (Right_Opnd (N),
-                        Make_Type_Conversion (Loc,
-                         Subtype_Mark => New_Occurrence_Of (Target_Type, Loc),
-                         Expression   => Relocate_Node (Right_Opnd (N))));
- 
                       --  Rewrite the conversion operand so that the original
                       --  node is retained, in order to avoid the warning for
                       --  redundant conversions in Resolve_Type_Conversion.
  
!                      Rewrite (N, Relocate_Node (N));
  
                       Set_Etype (N, Target_Type);
  
--- 886,911 ----
                    Determine_Range (N, VOK, Vlo, Vhi, Assume_Valid => True);
  
                    if VOK and then Tlo <= Vlo and then Vhi <= Thi then
                       --  Rewrite the conversion operand so that the original
                       --  node is retained, in order to avoid the warning for
                       --  redundant conversions in Resolve_Type_Conversion.
  
!                      declare
!                         Op : constant Node_Id := New_Op_Node (Nkind (N), Loc);
!                      begin
!                         Set_Left_Opnd (Op,
!                           Make_Type_Conversion (Loc,
!                             Subtype_Mark =>
!                               New_Occurrence_Of (Target_Type, Loc),
!                             Expression   => Relocate_Node (Left_Opnd (N))));
!                         Set_Right_Opnd (Op,
!                           Make_Type_Conversion (Loc,
!                             Subtype_Mark =>
!                               New_Occurrence_Of (Target_Type, Loc),
!                             Expression   => Relocate_Node (Right_Opnd (N))));
! 
!                         Rewrite (N, Op);
!                      end;
  
                       Set_Etype (N, Target_Type);
  
*************** package body Checks is
*** 1237,1247 ****
--- 1129,1144 ----
           --  ops, but if they appear in an assignment or similar contexts
           --  there is no overflow check that starts from that parent node,
           --  so apply check now.
+          --  Similarly, if these expressions are nested, we should go on.
  
           if Nkind (P) in N_If_Expression | N_Case_Expression
             and then not Is_Signed_Integer_Arithmetic_Op (Parent (P))
           then
              null;
+          elsif Nkind (P) in N_If_Expression | N_Case_Expression
+             and then Nkind (Op) in N_If_Expression | N_Case_Expression
+          then
+             null;
           else
              return;
           end if;
*************** package body Checks is
*** 1491,1503 ****
  
        function Denotes_Explicit_Dereference (Obj : Node_Id) return Boolean is
        begin
!          return
!            Nkind (Obj) = N_Explicit_Dereference
!              or else
!                (Is_Entity_Name (Obj)
!                  and then Present (Renamed_Object (Entity (Obj)))
!                  and then Nkind (Renamed_Object (Entity (Obj))) =
!                                               N_Explicit_Dereference);
        end Denotes_Explicit_Dereference;
  
        ----------------------------------------
--- 1388,1410 ----
  
        function Denotes_Explicit_Dereference (Obj : Node_Id) return Boolean is
        begin
!          if Is_Entity_Name (Obj) then
!             return Present (Renamed_Object (Entity (Obj)))
!               and then
!                 Denotes_Explicit_Dereference (Renamed_Object (Entity (Obj)));
! 
!          --  This routine uses the rules of the language so we need to exclude
!          --  rewritten constructs that introduce artificial dereferences.
! 
!          elsif Nkind (Obj) = N_Explicit_Dereference then
!             return not Is_Captured_Function_Call (Obj)
!               and then not
!                 (Nkind (Parent (Obj)) = N_Object_Renaming_Declaration
!                   and then Is_Return_Object (Defining_Entity (Parent (Obj))));
! 
!          else
!             return False;
!          end if;
        end Denotes_Explicit_Dereference;
  
        ----------------------------------------
*************** package body Checks is
*** 1600,1608 ****
                               and then not Is_Aliased_Unconstrained_Component)
                     or else (Ada_Version >= Ada_2005
                               and then not Is_Constrained (T_Typ)
!                              and then Denotes_Explicit_Dereference (Lhs)
!                              and then Nkind (Original_Node (Lhs)) /=
!                                         N_Function_Call))
        then
           T_Typ := Get_Actual_Subtype (Lhs);
        end if;
--- 1507,1513 ----
                               and then not Is_Aliased_Unconstrained_Component)
                     or else (Ada_Version >= Ada_2005
                               and then not Is_Constrained (T_Typ)
!                              and then Denotes_Explicit_Dereference (Lhs)))
        then
           T_Typ := Get_Actual_Subtype (Lhs);
        end if;
*************** package body Checks is
*** 2292,2297 ****
--- 2197,2211 ----
        Assign : constant Node_Id := Parent (Target);
  
     begin
+       --  Do not apply length checks if parent is still an assignment statement
+       --  with Suppress_Assignment_Checks flag set.
+ 
+       if Nkind (Assign) = N_Assignment_Statement
+         and then Suppress_Assignment_Checks (Assign)
+       then
+          return;
+       end if;
+ 
        --  No check is needed for the initialization of an object whose
        --  nominal subtype is unconstrained.
  
*************** package body Checks is
*** 2939,2952 ****
  
           --  Similarly, if the expression is an aggregate in an object
           --  declaration, apply it to the object after the declaration.
!          --  This is only necessary in rare cases of tagged extensions
!          --  initialized with an aggregate with an "others => <>" clause.
  
           elsif Nkind (Par) = N_Object_Declaration then
!             Insert_Action_After (Par,
!               Make_Predicate_Check (Typ,
!                 New_Occurrence_Of (Defining_Identifier (Par), Sloc (N))));
!             return;
           end if;
        end if;
  
--- 2853,2880 ----
  
           --  Similarly, if the expression is an aggregate in an object
           --  declaration, apply it to the object after the declaration.
! 
!          --  This is only necessary in cases of tagged extensions
!          --  initialized with an aggregate with an "others => <>" clause,
!          --  when the subtypes of LHS and RHS do not statically match or
!          --  when we know the object's type will be rewritten later.
!          --  The condition for the later is copied from the
!          --  Analyze_Object_Declaration procedure when it actually builds the
!          --  subtype.
  
           elsif Nkind (Par) = N_Object_Declaration then
!             if Subtypes_Statically_Match
!                  (Etype (Defining_Identifier (Par)), Typ)
!               and then (Nkind (N) = N_Extension_Aggregate
!                          or else (Is_Definite_Subtype (Typ)
!                                    and then Build_Default_Subtype_OK (Typ)))
!             then
!                Insert_Action_After (Par,
!                   Make_Predicate_Check (Typ,
!                     New_Occurrence_Of (Defining_Identifier (Par), Sloc (N))));
!                return;
!             end if;
! 
           end if;
        end if;
  
*************** package body Checks is
*** 3756,3768 ****
                 --  Universal_Integer. So in numeric conversions it is usually
                 --  within range of the target integer type. Use the static
                 --  bounds of the base types to check. Disable this optimization
!                --  in case of a generic formal discrete type, because we don't
!                --  necessarily know the upper bound yet.
  
                 if Nkind (Expr) = N_Attribute_Reference
                   and then Attribute_Name (Expr) = Name_Pos
                   and then Is_Enumeration_Type (Etype (Prefix (Expr)))
!                  and then not Is_Generic_Type (Etype (Prefix (Expr)))
                   and then Is_Integer_Type (Target_Type)
                 then
                    declare
--- 3684,3697 ----
                 --  Universal_Integer. So in numeric conversions it is usually
                 --  within range of the target integer type. Use the static
                 --  bounds of the base types to check. Disable this optimization
!                --  in case of a descendant of a generic formal discrete type,
!                --  because we don't necessarily know the upper bound yet.
  
                 if Nkind (Expr) = N_Attribute_Reference
                   and then Attribute_Name (Expr) = Name_Pos
                   and then Is_Enumeration_Type (Etype (Prefix (Expr)))
!                  and then
!                    not Is_Generic_Type (Root_Type (Etype (Prefix (Expr))))
                   and then Is_Integer_Type (Target_Type)
                 then
                    declare
*************** package body Checks is
*** 5066,5072 ****
          --  Don't deal with enumerated types with non-standard representation
  
          or else (Is_Enumeration_Type (Typ)
!                    and then Present (Enum_Pos_To_Rep (Base_Type (Typ))))
  
          --  Ignore type for which an error has been posted, since range in
          --  this case may well be a bogosity deriving from the error. Also
--- 4995,5002 ----
          --  Don't deal with enumerated types with non-standard representation
  
          or else (Is_Enumeration_Type (Typ)
!                    and then Present (Enum_Pos_To_Rep
!                                        (Implementation_Base_Type (Typ))))
  
          --  Ignore type for which an error has been posted, since range in
          --  this case may well be a bogosity deriving from the error. Also
*************** package body Checks is
*** 5469,5490 ****
           --  we do NOT do this for the case of a modular type where the
           --  possible upper bound on the value is above the base type high
           --  bound, because that means the result could wrap.
  
!          if Lor > Lo
!            and then not (Is_Modular_Integer_Type (Typ) and then Hir > Hbound)
!          then
!             Lo := Lor;
!          end if;
  
!          --  Similarly, if the refined value of the high bound is less than the
!          --  value so far, then reset it to the more restrictive value. Again,
!          --  we do not do this if the refined low bound is negative for a
!          --  modular type, since this would wrap.
  
!          if Hir < Hi
!            and then not (Is_Modular_Integer_Type (Typ) and then Lor < Uint_0)
!          then
!             Hi := Hir;
           end if;
        end if;
  
--- 5399,5447 ----
           --  we do NOT do this for the case of a modular type where the
           --  possible upper bound on the value is above the base type high
           --  bound, because that means the result could wrap.
+          --  Same applies for the lower bound if it is negative.
  
!          if Is_Modular_Integer_Type (Typ) then
!             if Lor > Lo and then Hir <= Hbound then
!                Lo := Lor;
!             end if;
  
!             if Hir < Hi and then Lor >= Uint_0 then
!                Hi := Hir;
!             end if;
  
!          else
!             if Lor > Hi or else Hir < Lo then
! 
!                --  If the ranges are disjoint, return the computed range.
! 
!                --  The current range-constraining logic would require returning
!                --  the base type's bounds. However, this would miss an
!                --  opportunity to warn about out-of-range values for some cases
!                --  (e.g. when type's upper bound is equal to base type upper
!                --  bound).
! 
!                --  The alternative of always returning the computed values,
!                --  even when ranges are intersecting, has unwanted effects
!                --  (mainly useless constraint checks are inserted) in the
!                --  Enable_Overflow_Check and Apply_Scalar_Range_Check as these
!                --  bounds have a special interpretation.
! 
!                Lo := Lor;
!                Hi := Hir;
!             else
! 
!                --  If the ranges Lor .. Hir and Lo .. Hi intersect, try to
!                --  refine the returned range.
! 
!                if Lor > Lo then
!                   Lo := Lor;
!                end if;
! 
!                if Hir < Hi then
!                   Hi := Hir;
!                end if;
!             end if;
           end if;
        end if;
  
*************** package body Checks is
*** 6416,6422 ****
        end if;
  
        --  Do not set range check flag if parent is assignment statement or
!       --  object declaration with Suppress_Assignment_Checks flag set
  
        if Nkind (Parent (N)) in N_Assignment_Statement | N_Object_Declaration
          and then Suppress_Assignment_Checks (Parent (N))
--- 6373,6379 ----
        end if;
  
        --  Do not set range check flag if parent is assignment statement or
!       --  object declaration with Suppress_Assignment_Checks flag set.
  
        if Nkind (Parent (N)) in N_Assignment_Statement | N_Object_Declaration
          and then Suppress_Assignment_Checks (Parent (N))
*************** package body Checks is
*** 8347,8461 ****
        Loc : constant Source_Ptr := Sloc (Parent (N));
        Typ : constant Entity_Id  := Etype (N);
  
-       function Safe_To_Capture_In_Parameter_Value return Boolean;
-       --  Determines if it is safe to capture Known_Non_Null status for an
-       --  the entity referenced by node N. The caller ensures that N is indeed
-       --  an entity name. It is safe to capture the non-null status for an IN
-       --  parameter when the reference occurs within a declaration that is sure
-       --  to be executed as part of the declarative region.
- 
        procedure Mark_Non_Null;
        --  After installation of check, if the node in question is an entity
        --  name, then mark this entity as non-null if possible.
  
-       function Safe_To_Capture_In_Parameter_Value return Boolean is
-          E     : constant Entity_Id := Entity (N);
-          S     : constant Entity_Id := Current_Scope;
-          S_Par : Node_Id;
- 
-       begin
-          if Ekind (E) /= E_In_Parameter then
-             return False;
-          end if;
- 
-          --  Two initial context checks. We must be inside a subprogram body
-          --  with declarations and reference must not appear in nested scopes.
- 
-          if (Ekind (S) /= E_Function and then Ekind (S) /= E_Procedure)
-            or else Scope (E) /= S
-          then
-             return False;
-          end if;
- 
-          S_Par := Parent (Parent (S));
- 
-          if Nkind (S_Par) /= N_Subprogram_Body
-            or else No (Declarations (S_Par))
-          then
-             return False;
-          end if;
- 
-          declare
-             N_Decl : Node_Id;
-             P      : Node_Id;
- 
-          begin
-             --  Retrieve the declaration node of N (if any). Note that N
-             --  may be a part of a complex initialization expression.
- 
-             P := Parent (N);
-             N_Decl := Empty;
-             while Present (P) loop
- 
-                --  If we have a short circuit form, and we are within the right
-                --  hand expression, we return false, since the right hand side
-                --  is not guaranteed to be elaborated.
- 
-                if Nkind (P) in N_Short_Circuit
-                  and then N = Right_Opnd (P)
-                then
-                   return False;
-                end if;
- 
-                --  Similarly, if we are in an if expression and not part of the
-                --  condition, then we return False, since neither the THEN or
-                --  ELSE dependent expressions will always be elaborated.
- 
-                if Nkind (P) = N_If_Expression
-                  and then N /= First (Expressions (P))
-                then
-                   return False;
-                end if;
- 
-                --  If within a case expression, and not part of the expression,
-                --  then return False, since a particular dependent expression
-                --  may not always be elaborated
- 
-                if Nkind (P) = N_Case_Expression
-                  and then N /= Expression (P)
-                then
-                   return False;
-                end if;
- 
-                --  While traversing the parent chain, if node N belongs to a
-                --  statement, then it may never appear in a declarative region.
- 
-                if Nkind (P) in N_Statement_Other_Than_Procedure_Call
-                  or else Nkind (P) = N_Procedure_Call_Statement
-                then
-                   return False;
-                end if;
- 
-                --  If we are at a declaration, record it and exit
- 
-                if Nkind (P) in N_Declaration
-                  and then Nkind (P) not in N_Subprogram_Specification
-                then
-                   N_Decl := P;
-                   exit;
-                end if;
- 
-                P := Parent (P);
-             end loop;
- 
-             if No (N_Decl) then
-                return False;
-             end if;
- 
-             return List_Containing (N_Decl) = Declarations (S_Par);
-          end;
-       end Safe_To_Capture_In_Parameter_Value;
- 
        -------------------
        -- Mark_Non_Null --
        -------------------
--- 8304,8313 ----
*************** package body Checks is
*** 8471,8489 ****
  
              Set_Is_Known_Null (Entity (N), False);
  
!             --  We can mark the entity as known to be non-null if either it is
!             --  safe to capture the value, or in the case of an IN parameter,
!             --  which is a constant, if the check we just installed is in the
!             --  declarative region of the subprogram body. In this latter case,
!             --  a check is decisive for the rest of the body if the expression
!             --  is sure to be elaborated, since we know we have to elaborate
!             --  all declarations before executing the body.
! 
!             --  Couldn't this always be part of Safe_To_Capture_Value ???
  
!             if Safe_To_Capture_Value (N, Entity (N))
!               or else Safe_To_Capture_In_Parameter_Value
!             then
                 Set_Is_Known_Non_Null (Entity (N));
              end if;
           end if;
--- 8323,8332 ----
  
              Set_Is_Known_Null (Entity (N), False);
  
!             --  We can mark the entity as known to be non-null if it is safe to
!             --  capture the value.
  
!             if Safe_To_Capture_Value (N, Entity (N)) then
                 Set_Is_Known_Non_Null (Entity (N));
              end if;
           end if;
*************** package body Checks is
*** 9895,9902 ****
        --    Typ'Length /= Exp'Length
  
        function Length_Mismatch_Info_Message
!         (Left_Element_Count  : Uint;
!          Right_Element_Count : Uint) return String;
        --  Returns a message indicating how many elements were expected
        --  (Left_Element_Count) and how many were found (Right_Element_Count).
  
--- 9738,9745 ----
        --    Typ'Length /= Exp'Length
  
        function Length_Mismatch_Info_Message
!         (Left_Element_Count  : Unat;
!          Right_Element_Count : Unat) return String;
        --  Returns a message indicating how many elements were expected
        --  (Left_Element_Count) and how many were found (Right_Element_Count).
  
*************** package body Checks is
*** 10094,10107 ****
        ----------------------------------
  
        function Length_Mismatch_Info_Message
!         (Left_Element_Count  : Uint;
!          Right_Element_Count : Uint) return String
        is
  
!          function Plural_Vs_Singular_Ending (Count : Uint) return String;
           --  Returns an empty string if Count is 1; otherwise returns "s"
  
!          function Plural_Vs_Singular_Ending (Count : Uint) return String is
           begin
              if Count = 1 then
                 return "";
--- 9937,9950 ----
        ----------------------------------
  
        function Length_Mismatch_Info_Message
!         (Left_Element_Count  : Unat;
!          Right_Element_Count : Unat) return String
        is
  
!          function Plural_Vs_Singular_Ending (Count : Unat) return String;
           --  Returns an empty string if Count is 1; otherwise returns "s"
  
!          function Plural_Vs_Singular_Ending (Count : Unat) return String is
           begin
              if Count = 1 then
                 return "";
*************** package body Checks is
*** 10111,10122 ****
           end Plural_Vs_Singular_Ending;
  
        begin
!          return "expected " & UI_Image (Left_Element_Count)
                    & " element"
                    & Plural_Vs_Singular_Ending (Left_Element_Count)
!                   & "; found " & UI_Image (Right_Element_Count)
                    & " element"
                    & Plural_Vs_Singular_Ending (Right_Element_Count);
        end Length_Mismatch_Info_Message;
  
        -----------------
--- 9954,9972 ----
           end Plural_Vs_Singular_Ending;
  
        begin
!          return "expected "
!                   & UI_Image (Left_Element_Count, Format => Decimal)
                    & " element"
                    & Plural_Vs_Singular_Ending (Left_Element_Count)
!                   & "; found "
!                   & UI_Image (Right_Element_Count, Format => Decimal)
                    & " element"
                    & Plural_Vs_Singular_Ending (Right_Element_Count);
+          --  "Format => Decimal" above is needed because otherwise UI_Image
+          --  can sometimes return a hexadecimal number 16#...#, but "#" means
+          --  something special to Errout. A previous version used the default
+          --  Auto, which was essentially the same bug as documented here:
+          --  https://xkcd.com/327/ .
        end Length_Mismatch_Info_Message;
  
        -----------------
*************** package body Checks is
*** 10315,10328 ****
                             if L_Length > R_Length then
                                Add_Check
                                  (Compile_Time_Constraint_Error
!                                   (Wnode, "too few elements for}??", T_Typ,
                                     Extra_Msg => Length_Mismatch_Info_Message
                                                    (L_Length, R_Length)));
  
                             elsif L_Length < R_Length then
                                Add_Check
                                  (Compile_Time_Constraint_Error
!                                   (Wnode, "too many elements for}??", T_Typ,
                                     Extra_Msg => Length_Mismatch_Info_Message
                                                    (L_Length, R_Length)));
                             end if;
--- 10165,10178 ----
                             if L_Length > R_Length then
                                Add_Check
                                  (Compile_Time_Constraint_Error
!                                   (Wnode, "too few elements for}!!??", T_Typ,
                                     Extra_Msg => Length_Mismatch_Info_Message
                                                    (L_Length, R_Length)));
  
                             elsif L_Length < R_Length then
                                Add_Check
                                  (Compile_Time_Constraint_Error
!                                   (Wnode, "too many elements for}!!??", T_Typ,
                                     Extra_Msg => Length_Mismatch_Info_Message
                                                    (L_Length, R_Length)));
                             end if;
*************** package body Checks is
*** 10454,10459 ****
--- 10304,10314 ----
        --  Returns expression to compute:
        --    N'First or N'Last using Duplicate_Subexpr_No_Checks
  
+       function Is_Cond_Expr_Ge (N : Node_Id; V : Node_Id) return Boolean;
+       function Is_Cond_Expr_Le (N : Node_Id; V : Node_Id) return Boolean;
+       --  Return True if N is a conditional expression whose dependent
+       --  expressions are all known and greater/lower than or equal to V.
+ 
        function Range_E_Cond
          (Exptyp : Entity_Id;
           Typ    : Entity_Id;
*************** package body Checks is
*** 10476,10481 ****
--- 10331,10346 ----
        --  Return expression to compute:
        --    Exp'First < Typ'First or else Exp'Last > Typ'Last
  
+       function "<" (Left, Right : Node_Id) return Boolean
+       is (if Is_Floating_Point_Type (S_Typ)
+           then Expr_Value_R (Left) < Expr_Value_R (Right)
+           else Expr_Value   (Left) < Expr_Value   (Right));
+       function "<=" (Left, Right : Node_Id) return Boolean
+       is (if Is_Floating_Point_Type (S_Typ)
+           then Expr_Value_R (Left) <= Expr_Value_R (Right)
+           else Expr_Value   (Left) <= Expr_Value   (Right));
+       --  Convenience comparison functions of integer or floating point values
+ 
        ---------------
        -- Add_Check --
        ---------------
*************** package body Checks is
*** 10656,10661 ****
--- 10521,10580 ----
                Make_Integer_Literal (Loc, Indx)));
        end Get_N_Last;
  
+       ---------------------
+       -- Is_Cond_Expr_Ge --
+       ---------------------
+ 
+       function Is_Cond_Expr_Ge (N : Node_Id; V : Node_Id) return Boolean is
+       begin
+          --  Only if expressions are relevant for the time being
+ 
+          if Nkind (N) = N_If_Expression then
+             declare
+                Cond  : constant Node_Id := First (Expressions (N));
+                Thenx : constant Node_Id := Next (Cond);
+                Elsex : constant Node_Id := Next (Thenx);
+ 
+             begin
+                return Compile_Time_Known_Value (Thenx)
+                  and then V <= Thenx
+                  and then
+                    ((Compile_Time_Known_Value (Elsex) and then V <= Elsex)
+                     or else Is_Cond_Expr_Ge (Elsex, V));
+             end;
+ 
+          else
+             return False;
+          end if;
+       end Is_Cond_Expr_Ge;
+ 
+       ---------------------
+       -- Is_Cond_Expr_Le --
+       ---------------------
+ 
+       function Is_Cond_Expr_Le (N : Node_Id; V : Node_Id) return Boolean is
+       begin
+          --  Only if expressions are relevant for the time being
+ 
+          if Nkind (N) = N_If_Expression then
+             declare
+                Cond  : constant Node_Id := First (Expressions (N));
+                Thenx : constant Node_Id := Next (Cond);
+                Elsex : constant Node_Id := Next (Thenx);
+ 
+             begin
+                return Compile_Time_Known_Value (Thenx)
+                  and then Thenx <= V
+                  and then
+                    ((Compile_Time_Known_Value (Elsex) and then Elsex <= V)
+                     or else Is_Cond_Expr_Le (Elsex, V));
+             end;
+ 
+          else
+             return False;
+          end if;
+       end Is_Cond_Expr_Le;
+ 
        ------------------
        -- Range_E_Cond --
        ------------------
*************** package body Checks is
*** 10737,10749 ****
                     Get_E_First_Or_Last (Loc, Typ, Indx, Name_Last)));
        end Range_N_Cond;
  
-       function "<" (Left, Right : Node_Id) return Boolean
-       is (if Is_Floating_Point_Type (S_Typ)
-           then Expr_Value_R (Left) < Expr_Value_R (Right)
-           else Expr_Value   (Left) < Expr_Value   (Right));
-       --  Convenience comparison function of integer or floating point
-       --  values.
- 
     --  Start of processing for Selected_Range_Checks
  
     begin
--- 10656,10661 ----
*************** package body Checks is
*** 10839,10844 ****
--- 10751,10764 ----
                 then
                    LB := T_LB;
                    Known_LB := True;
+ 
+                --  Similarly; deal with the case where the low bound is a
+                --  conditional expression whose result is greater than or
+                --  equal to the target low bound.
+ 
+                elsif Is_Cond_Expr_Ge (LB, T_LB) then
+                   LB := T_LB;
+                   Known_LB := True;
                 end if;
  
                 --  Likewise for the high bound
*************** package body Checks is
*** 10851,10856 ****
--- 10771,10780 ----
                 then
                    HB := T_HB;
                    Known_HB := True;
+ 
+                elsif Is_Cond_Expr_Le (HB, T_HB) then
+                   HB := T_HB;
+                   Known_HB := True;
                 end if;
              end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/checks.ads gcc-13.1.0/gcc/ada/checks.ads
*** gcc-12.2.0/gcc/ada/checks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/checks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Checks is
*** 189,204 ****
     --  Determines whether an expression node requires a run-time access
     --  check and if so inserts the appropriate run-time check.
  
-    procedure Apply_Accessibility_Check
-      (N           : Node_Id;
-       Typ         : Entity_Id;
-       Insert_Node : Node_Id);
-    --  Given a name N denoting an access parameter, emits a run-time
-    --  accessibility check (if necessary), checking that the level of
-    --  the object denoted by the access parameter is not deeper than the
-    --  level of the type Typ. Program_Error is raised if the check fails.
-    --  Insert_Node indicates the node where the check should be inserted.
- 
     procedure Apply_Address_Clause_Check (E : Entity_Id; N : Node_Id);
     --  E is the entity for an object which has an address clause. If checks
     --  are enabled, then this procedure generates a check that the specified
--- 189,194 ----
*************** package Checks is
*** 776,787 ****
     --           itself lead to erroneous or unpredictable execution, or to
     --           other objects becoming abnormal.
  
!    --  We quote the rules in full here since they are quite delicate. Most
!    --  of the time, we can just compute away with wrong values, and get a
!    --  possibly wrong result, which is well within the range of allowed
!    --  implementation defined behavior. The two tricky cases are subscripted
!    --  array assignments, where we don't want to do wild stores, and case
!    --  statements where we don't want to do wild jumps.
  
     --  In GNAT, we control validity checking with a switch -gnatV that can take
     --  three parameters, n/d/f for None/Default/Full. These modes have the
--- 766,779 ----
     --           itself lead to erroneous or unpredictable execution, or to
     --           other objects becoming abnormal.
  
!    --  We quote the rules in full here since they are quite delicate.
!    --  (???The rules quoted here are obsolete; see the GNAT User's Guide for a
!    --  description of all the -gnatV switches.) Most of the time, we can just
!    --  compute away with wrong values, and get a possibly wrong result, which
!    --  is well within the range of allowed implementation defined behavior. The
!    --  two tricky cases are subscripted array assignments, where we don't want
!    --  to do wild stores, and case statements where we don't want to do wild
!    --  jumps.
  
     --  In GNAT, we control validity checking with a switch -gnatV that can take
     --  three parameters, n/d/f for None/Default/Full. These modes have the
*************** package Checks is
*** 799,813 ****
     --        alternatives will be executed. Wild jumps cannot result even
     --        in this mode, since we always do a range check
  
!    --        For subscripted array assignments, wild stores will result in
!    --        the expected manner when addresses are calculated using values
!    --        of subscripts that are out of range.
! 
!    --      It could perhaps be argued that this mode is still conformant with
!    --      the letter of the RM, since implementation defined is a rather
!    --      broad category, but certainly it is not in the spirit of the
!    --      RM requirement, since wild stores certainly seem to be a case of
!    --      erroneous behavior.
  
     --    Default (default standard RM-compatible validity checking)
  
--- 791,798 ----
     --        alternatives will be executed. Wild jumps cannot result even
     --        in this mode, since we always do a range check
  
!    --        For subscripted array assignments, wild stores can result in
!    --        overwriting arbitrary memory locations.
  
     --    Default (default standard RM-compatible validity checking)
  
diff -Nrcpad gcc-12.2.0/gcc/ada/cio.c gcc-13.1.0/gcc/ada/cio.c
*** gcc-12.2.0/gcc/ada/cio.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/cio.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern "C" {
*** 67,72 ****
--- 67,73 ----
  #endif
  
  #ifdef RTX
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #include <Rtapi.h>
  #endif
diff -Nrcpad gcc-12.2.0/gcc/ada/clean.adb gcc-13.1.0/gcc/ada/clean.adb
*** gcc-12.2.0/gcc/ada/clean.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/clean.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/clean.ads gcc-13.1.0/gcc/ada/clean.ads
*** gcc-12.2.0/gcc/ada/clean.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/clean.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/comperr.adb gcc-13.1.0/gcc/ada/comperr.adb
*** gcc-12.2.0/gcc/ada/comperr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/comperr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/comperr.ads gcc-13.1.0/gcc/ada/comperr.ads
*** gcc-12.2.0/gcc/ada/comperr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/comperr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/contracts.adb gcc-13.1.0/gcc/ada/contracts.adb
*** gcc-12.2.0/gcc/ada/contracts.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/contracts.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2015-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2015-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Nmake;          use Nmake;
*** 41,53 ****
  with Opt;            use Opt;
  with Sem;            use Sem;
  with Sem_Aux;        use Sem_Aux;
  with Sem_Ch6;        use Sem_Ch6;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Ch12;       use Sem_Ch12;
  with Sem_Ch13;       use Sem_Ch13;
  with Sem_Disp;       use Sem_Disp;
  with Sem_Prag;       use Sem_Prag;
- with Sem_Res;        use Sem_Res;
  with Sem_Type;       use Sem_Type;
  with Sem_Util;       use Sem_Util;
  with Sinfo;          use Sinfo;
--- 41,53 ----
  with Opt;            use Opt;
  with Sem;            use Sem;
  with Sem_Aux;        use Sem_Aux;
+ with Sem_Ch3;        use Sem_Ch3;
  with Sem_Ch6;        use Sem_Ch6;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Ch12;       use Sem_Ch12;
  with Sem_Ch13;       use Sem_Ch13;
  with Sem_Disp;       use Sem_Disp;
  with Sem_Prag;       use Sem_Prag;
  with Sem_Type;       use Sem_Type;
  with Sem_Util;       use Sem_Util;
  with Sinfo;          use Sinfo;
*************** with Snames;         use Snames;
*** 58,63 ****
--- 58,64 ----
  with Stand;          use Stand;
  with Stringt;        use Stringt;
  with Tbuild;         use Tbuild;
+ with Warnsw;         use Warnsw;
  
  package body Contracts is
  
*************** package body Contracts is
*** 68,73 ****
--- 69,87 ----
     --
     --    Part_Of
  
+    procedure Build_Subprogram_Contract_Wrapper
+      (Body_Id : Entity_Id;
+       Stmts   : List_Id;
+       Decls   : List_Id;
+       Result  : Entity_Id);
+    --  Generate a wrapper for a given subprogram body when the expansion of
+    --  postconditions require it by moving its declarations and statements
+    --  into a locally declared subprogram _Wrapped_Statements.
+ 
+    --  Postcondition and precondition checks then get inserted in place of
+    --  the original statements and declarations along with a call to
+    --  _Wrapped_Statements.
+ 
     procedure Check_Class_Condition
       (Cond            : Node_Id;
        Subp            : Entity_Id;
*************** package body Contracts is
*** 78,83 ****
--- 92,101 ----
     --  In SPARK_Mode, an inherited operation that is not overridden but has
     --  inherited modified conditions pre/postconditions is illegal.
  
+    function Is_Prologue_Renaming (Decl : Node_Id) return Boolean;
+    --  Determine whether arbitrary declaration Decl denotes a renaming of
+    --  a discriminant or protection field _object.
+ 
     procedure Check_Type_Or_Object_External_Properties
       (Type_Or_Obj_Id : Entity_Id);
     --  Perform checking of external properties pragmas that is common to both
*************** package body Contracts is
*** 89,94 ****
--- 107,117 ----
     --  well as Contract_Cases, Subprogram_Variant, invariants and predicates.
     --  Body_Id denotes the entity of the subprogram body.
  
+    procedure Preanalyze_Condition
+      (Subp : Entity_Id;
+       Expr : Node_Id);
+    --  Preanalyze the class-wide condition Expr of Subp
+ 
     procedure Set_Class_Condition
       (Kind : Condition_Kind;
        Subp : Entity_Id;
*************** package body Contracts is
*** 292,297 ****
--- 315,321 ----
                          | Name_Async_Writers
                          | Name_Effective_Reads
                          | Name_Effective_Writes
+                         | Name_No_Caching
                or else (Ekind (Id) = E_Task_Type
                           and Prag_Nam in Name_Part_Of
                                         | Name_Depends
*************** package body Contracts is
*** 488,493 ****
--- 512,556 ----
        end loop;
     end Analyze_Contracts;
  
+    -------------------------------------
+    -- Analyze_Pragmas_In_Declarations --
+    -------------------------------------
+ 
+    procedure Analyze_Pragmas_In_Declarations (Body_Id : Entity_Id) is
+       Curr_Decl : Node_Id;
+ 
+    begin
+       --  Move through the body's declarations analyzing all pragmas which
+       --  appear at the top of the declarations.
+ 
+       Curr_Decl := First (Declarations (Unit_Declaration_Node (Body_Id)));
+       while Present (Curr_Decl) loop
+ 
+          if Nkind (Curr_Decl) = N_Pragma then
+ 
+             if Pragma_Significant_To_Subprograms
+                  (Get_Pragma_Id (Curr_Decl))
+             then
+                Analyze (Curr_Decl);
+             end if;
+ 
+          --  Skip the renamings of discriminants and protection fields
+ 
+          elsif Is_Prologue_Renaming (Curr_Decl) then
+             null;
+ 
+          --  We have reached something which is not a pragma so we can be sure
+          --  there are no more contracts or pragmas which need to be taken into
+          --  account.
+ 
+          else
+             exit;
+          end if;
+ 
+          Next (Curr_Decl);
+       end loop;
+    end Analyze_Pragmas_In_Declarations;
+ 
     -----------------------------------------------
     -- Analyze_Entry_Or_Subprogram_Body_Contract --
     -----------------------------------------------
*************** package body Contracts is
*** 644,650 ****
  
           else
              declare
!                Bod          : Node_Id;
                 Freeze_Types : Boolean := False;
  
              begin
--- 707,713 ----
  
           else
              declare
!                Bod          : Node_Id := Empty;
                 Freeze_Types : Boolean := False;
  
              begin
*************** package body Contracts is
*** 796,801 ****
--- 859,865 ----
        AW_Val  : Boolean := False;
        ER_Val  : Boolean := False;
        EW_Val  : Boolean := False;
+       NC_Val  : Boolean;
        Seen    : Boolean := False;
        Prag    : Node_Id;
        Obj_Typ : Entity_Id;
*************** package body Contracts is
*** 892,904 ****
           end;
        end if;
  
!       --  Verify the mutual interaction of the various external properties
  
!       if Seen then
           Check_External_Properties
             (Type_Or_Obj_Id, AR_Val, AW_Val, ER_Val, EW_Val);
        end if;
  
        --  The following checks are relevant only when SPARK_Mode is on, as
        --  they are not standard Ada legality rules. Internally generated
        --  temporaries are ignored, as well as return objects.
--- 956,981 ----
           end;
        end if;
  
!       --  Verify the mutual interaction of the various external properties.
!       --  For types and variables for which No_Caching is enabled, it has been
!       --  checked already that only False values for other external properties
!       --  are allowed.
  
!       if Seen
!         and then not No_Caching_Enabled (Type_Or_Obj_Id)
!       then
           Check_External_Properties
             (Type_Or_Obj_Id, AR_Val, AW_Val, ER_Val, EW_Val);
        end if;
  
+       --  Analyze the non-external volatility property No_Caching
+ 
+       Prag := Get_Pragma (Type_Or_Obj_Id, Pragma_No_Caching);
+ 
+       if Present (Prag) then
+          Analyze_External_Property_In_Decl_Part (Prag, NC_Val);
+       end if;
+ 
        --  The following checks are relevant only when SPARK_Mode is on, as
        --  they are not standard Ada legality rules. Internally generated
        --  temporaries are ignored, as well as return objects.
*************** package body Contracts is
*** 978,987 ****
  
              if Is_Type_Id
                and then not Is_Effectively_Volatile (Type_Or_Obj_Id)
!               and then Has_Volatile_Component (Type_Or_Obj_Id)
              then
                 Error_Msg_N
!                  ("non-volatile type & cannot have volatile"
                      & " components",
                    Type_Or_Obj_Id);
              end if;
--- 1055,1064 ----
  
              if Is_Type_Id
                and then not Is_Effectively_Volatile (Type_Or_Obj_Id)
!               and then Has_Effectively_Volatile_Component (Type_Or_Obj_Id)
              then
                 Error_Msg_N
!                  ("non-volatile type & cannot have effectively volatile"
                      & " components",
                    Type_Or_Obj_Id);
              end if;
*************** package body Contracts is
*** 1007,1013 ****
        Saved_SMP : constant Node_Id         := SPARK_Mode_Pragma;
        --  Save the SPARK_Mode-related data to restore on exit
  
-       NC_Val   : Boolean;
        Items    : Node_Id;
        Prag     : Node_Id;
        Ref_Elmt : Elmt_Id;
--- 1084,1089 ----
*************** package body Contracts is
*** 1049,1062 ****
  
        Check_Type_Or_Object_External_Properties (Type_Or_Obj_Id => Obj_Id);
  
-       --  Analyze the non-external volatility property No_Caching
- 
-       Prag := Get_Pragma (Obj_Id, Pragma_No_Caching);
- 
-       if Present (Prag) then
-          Analyze_External_Property_In_Decl_Part (Prag, NC_Val);
-       end if;
- 
        --  Constant-related checks
  
        if Ekind (Obj_Id) = E_Constant then
--- 1125,1130 ----
*************** package body Contracts is
*** 1145,1151 ****
           --  A Ghost object cannot be effectively volatile (SPARK RM 6.9(7) and
           --  SPARK RM 6.9(19)).
  
!          elsif Is_Effectively_Volatile (Obj_Id) then
              Error_Msg_N ("ghost object & cannot be volatile", Obj_Id);
  
           --  A Ghost object cannot be imported or exported (SPARK RM 6.9(7)).
--- 1213,1219 ----
           --  A Ghost object cannot be effectively volatile (SPARK RM 6.9(7) and
           --  SPARK RM 6.9(19)).
  
!          elsif SPARK_Mode = On and then Is_Effectively_Volatile (Obj_Id) then
              Error_Msg_N ("ghost object & cannot be volatile", Obj_Id);
  
           --  A Ghost object cannot be imported or exported (SPARK RM 6.9(7)).
*************** package body Contracts is
*** 1257,1262 ****
--- 1325,1342 ----
        if Present (Items) then
           if Analyzed (Items) then
              return;
+ 
+          --  Do not analyze the contract of the internal package
+          --  created to check conformance of an actual package.
+          --  Such an internal package is removed from the tree after
+          --  legality checks are completed, and it does not contain
+          --  the declarations of all local entities of the generic.
+ 
+          elsif Is_Internal (Pack_Id)
+            and then Is_Generic_Instance (Pack_Id)
+          then
+             return;
+ 
           else
              Set_Analyzed (Items);
           end if;
*************** package body Contracts is
*** 1493,1498 ****
--- 1573,2001 ----
          (Type_Or_Obj_Id => Type_Id);
     end Analyze_Type_Contract;
  
+    ---------------------------------------
+    -- Build_Subprogram_Contract_Wrapper --
+    ---------------------------------------
+ 
+    procedure Build_Subprogram_Contract_Wrapper
+      (Body_Id : Entity_Id;
+       Stmts   : List_Id;
+       Decls   : List_Id;
+       Result  : Entity_Id)
+    is
+       Body_Decl : constant Entity_Id  := Unit_Declaration_Node (Body_Id);
+       Loc       : constant Source_Ptr := Sloc (Body_Decl);
+       Spec_Id   : constant Entity_Id  := Corresponding_Spec (Body_Decl);
+       Subp_Id   : Entity_Id;
+       Ret_Type  : Entity_Id;
+ 
+       Wrapper_Id   : Entity_Id;
+       Wrapper_Body : Node_Id;
+       Wrapper_Spec : Node_Id;
+ 
+    begin
+       --  When there are no postcondition statements we do not need to
+       --  generate a wrapper.
+ 
+       if No (Stmts) then
+          return;
+       end if;
+ 
+       --  Obtain the related subprogram id from the body id.
+ 
+       if Present (Spec_Id) then
+          Subp_Id := Spec_Id;
+       else
+          Subp_Id := Body_Id;
+       end if;
+       Ret_Type := Etype (Subp_Id);
+ 
+       --  Generate the contracts wrapper by moving the original declarations
+       --  and statements within a local subprogram, calling it and possibly
+       --  preserving the result for the purpose of evaluating postconditions,
+       --  contracts, type invariants, etc.
+ 
+       --  In the case of a function, generate:
+       --
+       --  function Original_Func (X : in out Integer) return Typ is
+       --     <prologue renamings>
+       --     <preconditions>
+       --
+       --     function _Wrapped_Statements return Typ is
+       --        <original declarations>
+       --     begin
+       --        <original statements>
+       --     end;
+       --
+       --  begin
+       --     return
+       --        Result_Obj : constant Typ := _Wrapped_Statements
+       --     do
+       --        <postconditions statments>
+       --     end return;
+       --  end;
+ 
+       --  Or else, in the case of a procedure, generate:
+       --
+       --  procedure Original_Proc (X : in out Integer) is
+       --     <prologue renamings>
+       --     <preconditions>
+       --
+       --     procedure _Wrapped_Statements is
+       --        <original declarations>
+       --     begin
+       --        <original statements>
+       --     end;
+       --
+       --  begin
+       --     _Wrapped_Statements;
+       --     <postconditions statments>
+       --  end;
+ 
+       --  Create Identifier
+ 
+       Wrapper_Id := Make_Defining_Identifier (Loc, Name_uWrapped_Statements);
+       Set_Debug_Info_Needed  (Wrapper_Id);
+       Set_Wrapped_Statements (Subp_Id, Wrapper_Id);
+ 
+       Set_Has_Pragma_Inline (Wrapper_Id, Has_Pragma_Inline (Subp_Id));
+       Set_Has_Pragma_Inline_Always
+         (Wrapper_Id, Has_Pragma_Inline_Always (Subp_Id));
+ 
+       --  Create specification and declaration for the wrapper
+ 
+       if No (Ret_Type) or else Ret_Type = Standard_Void_Type then
+          Wrapper_Spec :=
+            Make_Procedure_Specification (Loc,
+              Defining_Unit_Name => Wrapper_Id);
+       else
+          Wrapper_Spec :=
+            Make_Function_Specification (Loc,
+              Defining_Unit_Name => Wrapper_Id,
+              Result_Definition  => New_Occurrence_Of (Ret_Type, Loc));
+       end if;
+ 
+       --  Create the wrapper body using Body_Id's statements and declarations
+ 
+       Wrapper_Body :=
+         Make_Subprogram_Body (Loc,
+           Specification              => Wrapper_Spec,
+           Declarations               => Declarations (Body_Decl),
+           Handled_Statement_Sequence =>
+             Relocate_Node (Handled_Statement_Sequence (Body_Decl)));
+ 
+       Append_To (Decls, Wrapper_Body);
+       Set_Declarations (Body_Decl, Decls);
+       Set_Handled_Statement_Sequence (Body_Decl,
+         Make_Handled_Sequence_Of_Statements (Loc,
+           End_Label  => Make_Identifier (Loc, Chars (Wrapper_Id))));
+ 
+       --  Prepend a call to the wrapper when the subprogram is a procedure
+ 
+       if No (Ret_Type) or else Ret_Type = Standard_Void_Type then
+          Prepend_To (Stmts,
+            Make_Procedure_Call_Statement (Loc,
+              Name => New_Occurrence_Of (Wrapper_Id, Loc)));
+          Set_Statements
+            (Handled_Statement_Sequence (Body_Decl), Stmts);
+ 
+       --  Generate the post-execution statements and the extended return
+       --  when the subprogram being wrapped is a function.
+ 
+       else
+          Set_Statements (Handled_Statement_Sequence (Body_Decl), New_List (
+            Make_Extended_Return_Statement (Loc,
+              Return_Object_Declarations => New_List (
+                 Make_Object_Declaration (Loc,
+                   Defining_Identifier => Result,
+                   Constant_Present    => True,
+                   Object_Definition   =>
+                     New_Occurrence_Of (Ret_Type, Loc),
+                   Expression          =>
+                     Make_Function_Call (Loc,
+                       Name                   =>
+                         New_Occurrence_Of (Wrapper_Id, Loc)))),
+              Handled_Statement_Sequence =>
+                Make_Handled_Sequence_Of_Statements (Loc,
+                  Statements => Stmts))));
+       end if;
+    end Build_Subprogram_Contract_Wrapper;
+ 
+    ----------------------------------
+    -- Build_Entry_Contract_Wrapper --
+    ----------------------------------
+ 
+    procedure Build_Entry_Contract_Wrapper (E : Entity_Id; Decl : Node_Id) is
+       Conc_Typ : constant Entity_Id  := Scope (E);
+       Loc      : constant Source_Ptr := Sloc (E);
+ 
+       procedure Add_Discriminant_Renamings
+         (Obj_Id : Entity_Id;
+          Decls  : List_Id);
+       --  Add renaming declarations for all discriminants of concurrent type
+       --  Conc_Typ. Obj_Id is the entity of the wrapper formal parameter which
+       --  represents the concurrent object.
+ 
+       procedure Add_Matching_Formals
+         (Formals : List_Id;
+          Actuals : in out List_Id);
+       --  Add formal parameters that match those of entry E to list Formals.
+       --  The routine also adds matching actuals for the new formals to list
+       --  Actuals.
+ 
+       procedure Transfer_Pragma (Prag : Node_Id; To : in out List_Id);
+       --  Relocate pragma Prag to list To. The routine creates a new list if
+       --  To does not exist.
+ 
+       --------------------------------
+       -- Add_Discriminant_Renamings --
+       --------------------------------
+ 
+       procedure Add_Discriminant_Renamings
+         (Obj_Id : Entity_Id;
+          Decls  : List_Id)
+       is
+          Discr         : Entity_Id;
+          Renaming_Decl : Node_Id;
+ 
+       begin
+          --  Inspect the discriminants of the concurrent type and generate a
+          --  renaming for each one.
+ 
+          if Has_Discriminants (Conc_Typ) then
+             Discr := First_Discriminant (Conc_Typ);
+             while Present (Discr) loop
+                Renaming_Decl :=
+                  Make_Object_Renaming_Declaration (Loc,
+                    Defining_Identifier =>
+                      Make_Defining_Identifier (Loc, Chars (Discr)),
+                    Subtype_Mark        =>
+                      New_Occurrence_Of (Etype (Discr), Loc),
+                    Name                =>
+                      Make_Selected_Component (Loc,
+                        Prefix        => New_Occurrence_Of (Obj_Id, Loc),
+                        Selector_Name =>
+                          Make_Identifier (Loc, Chars (Discr))));
+ 
+                Prepend_To (Decls, Renaming_Decl);
+ 
+                Next_Discriminant (Discr);
+             end loop;
+          end if;
+       end Add_Discriminant_Renamings;
+ 
+       --------------------------
+       -- Add_Matching_Formals --
+       --------------------------
+ 
+       procedure Add_Matching_Formals
+         (Formals : List_Id;
+          Actuals : in out List_Id)
+       is
+          Formal     : Entity_Id;
+          New_Formal : Entity_Id;
+ 
+       begin
+          --  Inspect the formal parameters of the entry and generate a new
+          --  matching formal with the same name for the wrapper. A reference
+          --  to the new formal becomes an actual in the entry call.
+ 
+          Formal := First_Formal (E);
+          while Present (Formal) loop
+             New_Formal := Make_Defining_Identifier (Loc, Chars (Formal));
+             Append_To (Formals,
+               Make_Parameter_Specification (Loc,
+                 Defining_Identifier => New_Formal,
+                 In_Present          => In_Present  (Parent (Formal)),
+                 Out_Present         => Out_Present (Parent (Formal)),
+                 Parameter_Type      =>
+                   New_Occurrence_Of (Etype (Formal), Loc)));
+ 
+             if No (Actuals) then
+                Actuals := New_List;
+             end if;
+ 
+             Append_To (Actuals, New_Occurrence_Of (New_Formal, Loc));
+             Next_Formal (Formal);
+          end loop;
+       end Add_Matching_Formals;
+ 
+       ---------------------
+       -- Transfer_Pragma --
+       ---------------------
+ 
+       procedure Transfer_Pragma (Prag : Node_Id; To : in out List_Id) is
+          New_Prag : Node_Id;
+ 
+       begin
+          if No (To) then
+             To := New_List;
+          end if;
+ 
+          New_Prag := Relocate_Node (Prag);
+ 
+          Set_Analyzed (New_Prag, False);
+          Append       (New_Prag, To);
+       end Transfer_Pragma;
+ 
+       --  Local variables
+ 
+       Items      : constant Node_Id := Contract (E);
+       Actuals    : List_Id := No_List;
+       Call       : Node_Id;
+       Call_Nam   : Node_Id;
+       Decls      : List_Id := No_List;
+       Formals    : List_Id;
+       Has_Pragma : Boolean := False;
+       Index_Id   : Entity_Id;
+       Obj_Id     : Entity_Id;
+       Prag       : Node_Id;
+       Wrapper_Id : Entity_Id;
+ 
+    --  Start of processing for Build_Entry_Contract_Wrapper
+ 
+    begin
+       --  This routine generates a specialized wrapper for a protected or task
+       --  entry [family] which implements precondition/postcondition semantics.
+       --  Preconditions and case guards of contract cases are checked before
+       --  the protected action or rendezvous takes place.
+ 
+       --    procedure Wrapper
+       --      (Obj_Id    : Conc_Typ;    --  concurrent object
+       --       [Index    : Index_Typ;]  --  index of entry family
+       --       [Formal_1 : ...;         --  parameters of original entry
+       --        Formal_N : ...])
+       --    is
+       --       [Discr_1 : ... renames Obj_Id.Discr_1;   --  discriminant
+       --        Discr_N : ... renames Obj_Id.Discr_N;]  --  renamings
+ 
+       --       <contracts pragmas>
+       --       <case guard checks>
+ 
+       --    begin
+       --       Entry_Call (Obj_Id, [Index,] [Formal_1, Formal_N]);
+       --    end Wrapper;
+ 
+       --  Create the wrapper only when the entry has at least one executable
+       --  contract item such as contract cases, precondition or postcondition.
+ 
+       if Present (Items) then
+ 
+          --  Inspect the list of pre/postconditions and transfer all available
+          --  pragmas to the declarative list of the wrapper.
+ 
+          Prag := Pre_Post_Conditions (Items);
+          while Present (Prag) loop
+             if Pragma_Name_Unmapped (Prag) in Name_Postcondition
+                                             | Name_Precondition
+               and then Is_Checked (Prag)
+             then
+                Has_Pragma := True;
+                Transfer_Pragma (Prag, To => Decls);
+             end if;
+ 
+             Prag := Next_Pragma (Prag);
+          end loop;
+ 
+          --  Inspect the list of test/contract cases and transfer only contract
+          --  cases pragmas to the declarative part of the wrapper.
+ 
+          Prag := Contract_Test_Cases (Items);
+          while Present (Prag) loop
+             if Pragma_Name (Prag) = Name_Contract_Cases
+               and then Is_Checked (Prag)
+             then
+                Has_Pragma := True;
+                Transfer_Pragma (Prag, To => Decls);
+             end if;
+ 
+             Prag := Next_Pragma (Prag);
+          end loop;
+       end if;
+ 
+       --  The entry lacks executable contract items and a wrapper is not needed
+ 
+       if not Has_Pragma then
+          return;
+       end if;
+ 
+       --  Create the profile of the wrapper. The first formal parameter is the
+       --  concurrent object.
+ 
+       Obj_Id :=
+         Make_Defining_Identifier (Loc,
+           Chars => New_External_Name (Chars (Conc_Typ), 'A'));
+ 
+       Formals := New_List (
+         Make_Parameter_Specification (Loc,
+           Defining_Identifier => Obj_Id,
+           Out_Present         => True,
+           In_Present          => True,
+           Parameter_Type      => New_Occurrence_Of (Conc_Typ, Loc)));
+ 
+       --  Construct the call to the original entry. The call will be gradually
+       --  augmented with an optional entry index and extra parameters.
+ 
+       Call_Nam :=
+         Make_Selected_Component (Loc,
+           Prefix        => New_Occurrence_Of (Obj_Id, Loc),
+           Selector_Name => New_Occurrence_Of (E, Loc));
+ 
+       --  When creating a wrapper for an entry family, the second formal is the
+       --  entry index.
+ 
+       if Ekind (E) = E_Entry_Family then
+          Index_Id := Make_Defining_Identifier (Loc, Name_I);
+ 
+          Append_To (Formals,
+            Make_Parameter_Specification (Loc,
+              Defining_Identifier => Index_Id,
+              Parameter_Type      =>
+                New_Occurrence_Of (Entry_Index_Type (E), Loc)));
+ 
+          --  The call to the original entry becomes an indexed component to
+          --  accommodate the entry index.
+ 
+          Call_Nam :=
+            Make_Indexed_Component (Loc,
+              Prefix      => Call_Nam,
+              Expressions => New_List (New_Occurrence_Of (Index_Id, Loc)));
+       end if;
+ 
+       --  Add formal parameters to match those of the entry and build actuals
+       --  for the entry call.
+ 
+       Add_Matching_Formals (Formals, Actuals);
+ 
+       Call :=
+         Make_Procedure_Call_Statement (Loc,
+           Name                   => Call_Nam,
+           Parameter_Associations => Actuals);
+ 
+       --  Add renaming declarations for the discriminants of the enclosing type
+       --  as the various contract items may reference them.
+ 
+       Add_Discriminant_Renamings (Obj_Id, Decls);
+ 
+       Wrapper_Id :=
+         Make_Defining_Identifier (Loc, New_External_Name (Chars (E), 'E'));
+       Set_Contract_Wrapper (E, Wrapper_Id);
+       Set_Is_Entry_Wrapper (Wrapper_Id);
+ 
+       --  The wrapper body is analyzed when the enclosing type is frozen
+ 
+       Append_Freeze_Action (Defining_Entity (Decl),
+         Make_Subprogram_Body (Loc,
+           Specification              =>
+             Make_Procedure_Specification (Loc,
+               Defining_Unit_Name       => Wrapper_Id,
+               Parameter_Specifications => Formals),
+           Declarations               => Decls,
+           Handled_Statement_Sequence =>
+             Make_Handled_Sequence_Of_Statements (Loc,
+               Statements => New_List (Call))));
+    end Build_Entry_Contract_Wrapper;
+ 
     ---------------------------
     -- Check_Class_Condition --
     ---------------------------
*************** package body Contracts is
*** 1798,1813 ****
        --  the item denotes a pragma, it is added to the list only when it is
        --  enabled.
  
!       procedure Build_Postconditions_Procedure
!         (Subp_Id : Entity_Id;
!          Stmts   : List_Id;
!          Result  : Entity_Id);
!       --  Create the body of procedure _Postconditions which handles various
!       --  assertion actions on exit from subprogram Subp_Id. Stmts is the list
!       --  of statements to be checked on exit. Parameter Result is the entity
!       --  of parameter _Result when Subp_Id denotes a function.
! 
!       procedure Process_Contract_Cases (Stmts : in out List_Id);
        --  Process pragma Contract_Cases. This routine prepends items to the
        --  body declarations and appends items to list Stmts.
  
--- 2301,2309 ----
        --  the item denotes a pragma, it is added to the list only when it is
        --  enabled.
  
!       procedure Process_Contract_Cases
!         (Stmts : in out List_Id;
!          Decls : List_Id);
        --  Process pragma Contract_Cases. This routine prepends items to the
        --  body declarations and appends items to list Stmts.
  
*************** package body Contracts is
*** 1815,1821 ****
        --  Collect all [inherited] spec and body postconditions and accumulate
        --  their pragma Check equivalents in list Stmts.
  
!       procedure Process_Preconditions;
        --  Collect all [inherited] spec and body preconditions and prepend their
        --  pragma Check equivalents to the declarations of the body.
  
--- 2311,2317 ----
        --  Collect all [inherited] spec and body postconditions and accumulate
        --  their pragma Check equivalents in list Stmts.
  
!       procedure Process_Preconditions (Decls : in out List_Id);
        --  Collect all [inherited] spec and body preconditions and prepend their
        --  pragma Check equivalents to the declarations of the body.
  
*************** package body Contracts is
*** 2303,2559 ****
           end if;
        end Append_Enabled_Item;
  
-       ------------------------------------
-       -- Build_Postconditions_Procedure --
-       ------------------------------------
- 
-       procedure Build_Postconditions_Procedure
-         (Subp_Id : Entity_Id;
-          Stmts   : List_Id;
-          Result  : Entity_Id)
-       is
-          Loc       : constant Source_Ptr := Sloc (Body_Decl);
-          Last_Decl : Node_Id;
-          Params    : List_Id := No_List;
-          Proc_Bod  : Node_Id;
-          Proc_Decl : Node_Id;
-          Proc_Id   : Entity_Id;
-          Proc_Spec : Node_Id;
- 
-          --  Extra declarations needed to handle interactions between
-          --  postconditions and finalization.
- 
-          Postcond_Enabled_Decl : Node_Id;
-          Return_Success_Decl   : Node_Id;
-          Result_Obj_Decl       : Node_Id;
-          Result_Obj_Type_Decl  : Node_Id;
-          Result_Obj_Type       : Entity_Id;
- 
-       --  Start of processing for Build_Postconditions_Procedure
- 
-       begin
-          --  Nothing to do if there are no actions to check on exit
- 
-          if No (Stmts) then
-             return;
-          end if;
- 
-          --  Otherwise, we generate the postcondition procedure and add
-          --  associated objects and conditions used to coordinate postcondition
-          --  evaluation with finalization.
- 
-          --  Generate:
-          --
-          --    procedure _postconditions (Return_Exp : Result_Typ);
-          --
-          --    --  Result_Obj_Type created when Result_Type is non-elementary
-          --    [type Result_Obj_Type is access all Result_Typ;]
-          --
-          --    Result_Obj : Result_Obj_Type;
-          --
-          --    Postcond_Enabled            : Boolean := True;
-          --    Return_Success_For_Postcond : Boolean := False;
-          --
-          --    procedure _postconditions (Return_Exp : Result_Typ) is
-          --    begin
-          --       if Postcond_Enabled and then Return_Success_For_Postcond then
-          --          [stmts];
-          --       end if;
-          --    end;
- 
-          Proc_Id := Make_Defining_Identifier (Loc, Name_uPostconditions);
-          Set_Debug_Info_Needed   (Proc_Id);
-          Set_Postconditions_Proc (Subp_Id, Proc_Id);
- 
-          --  Force the front-end inlining of _Postconditions when generating C
-          --  code, since its body may have references to itypes defined in the
-          --  enclosing subprogram, which would cause problems for unnesting
-          --  routines in the absence of inlining.
- 
-          if Modify_Tree_For_C then
-             Set_Has_Pragma_Inline        (Proc_Id);
-             Set_Has_Pragma_Inline_Always (Proc_Id);
-             Set_Is_Inlined               (Proc_Id);
-          end if;
- 
-          --  The related subprogram is a function: create the specification of
-          --  parameter _Result.
- 
-          if Present (Result) then
-             Params := New_List (
-               Make_Parameter_Specification (Loc,
-                 Defining_Identifier => Result,
-                 Parameter_Type      =>
-                   New_Occurrence_Of (Etype (Result), Loc)));
-          end if;
- 
-          Proc_Spec :=
-            Make_Procedure_Specification (Loc,
-              Defining_Unit_Name       => Proc_Id,
-              Parameter_Specifications => Params);
- 
-          Proc_Decl := Make_Subprogram_Declaration (Loc, Proc_Spec);
- 
-          --  Insert _Postconditions before the first source declaration of the
-          --  body. This ensures that the body will not cause any premature
-          --  freezing, as it may mention types:
- 
-          --  Generate:
-          --
-          --    procedure Proc (Obj : Array_Typ) is
-          --       procedure _postconditions is
-          --       begin
-          --          ... Obj ...
-          --       end _postconditions;
-          --
-          --       subtype T is Array_Typ (Obj'First (1) .. Obj'Last (1));
-          --    begin
- 
-          --  In the example above, Obj is of type T but the incorrect placement
-          --  of _Postconditions will cause a crash in gigi due to an out-of-
-          --  order reference. The body of _Postconditions must be placed after
-          --  the declaration of Temp to preserve correct visibility.
- 
-          Insert_Before_First_Source_Declaration
-            (Proc_Decl, Declarations (Body_Decl));
-          Analyze (Proc_Decl);
-          Last_Decl := Proc_Decl;
- 
-          --  When Result is present (e.g. the postcondition checks apply to a
-          --  function) we make a local object to capture the result, so, if
-          --  needed, we can call the generated postconditions procedure during
-          --  finalization instead of at the point of return.
- 
-          --  Note: The placement of the following declarations before the
-          --  declaration of the body of the postconditions, but after the
-          --  declaration of the postconditions spec is deliberate and required
-          --  since other code within the expander expects them to be located
-          --  here. Perhaps when more space is available in the tree this will
-          --  no longer be necessary ???
- 
-          if Present (Result) then
-             --  Elementary result types mean a copy is cheap and preferred over
-             --  using pointers.
- 
-             if Is_Elementary_Type (Etype (Result)) then
-                Result_Obj_Type := Etype (Result);
- 
-             --  Otherwise, we create a named access type to capture the result
- 
-             --  Generate:
-             --
-             --  type Result_Obj_Type is access all [Result_Type];
- 
-             else
-                Result_Obj_Type := Make_Temporary (Loc, 'R');
- 
-                Result_Obj_Type_Decl :=
-                  Make_Full_Type_Declaration (Loc,
-                    Defining_Identifier => Result_Obj_Type,
-                    Type_Definition     =>
-                      Make_Access_To_Object_Definition (Loc,
-                        All_Present        => True,
-                        Subtype_Indication => New_Occurrence_Of
-                                                (Etype (Result), Loc)));
-                Insert_After_And_Analyze (Proc_Decl, Result_Obj_Type_Decl);
-                Last_Decl := Result_Obj_Type_Decl;
-             end if;
- 
-             --  Create the result obj declaration
- 
-             --  Generate:
-             --
-             --  Result_Object_For_Postcond : Result_Obj_Type;
- 
-             Result_Obj_Decl :=
-               Make_Object_Declaration (Loc,
-                 Defining_Identifier =>
-                   Make_Defining_Identifier
-                     (Loc, Name_uResult_Object_For_Postcond),
-                 Object_Definition   =>
-                   New_Occurrence_Of
-                     (Result_Obj_Type, Loc));
-             Set_No_Initialization (Result_Obj_Decl);
-             Insert_After_And_Analyze (Last_Decl, Result_Obj_Decl);
-             Last_Decl := Result_Obj_Decl;
-          end if;
- 
-          --  Build the Postcond_Enabled flag used to delay evaluation of
-          --  postconditions until finalization has been performed when cleanup
-          --  actions are present.
- 
-          --  NOTE: This flag could be made into a predicate since we should be
-          --  able at compile time to recognize when finalization and cleanup
-          --  actions occur, but in practice this is not possible ???
- 
-          --  Generate:
-          --
-          --    Postcond_Enabled : Boolean := True;
- 
-          Postcond_Enabled_Decl :=
-            Make_Object_Declaration (Loc,
-              Defining_Identifier =>
-                Make_Defining_Identifier
-                  (Loc, Name_uPostcond_Enabled),
-              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
-              Expression          => New_Occurrence_Of (Standard_True, Loc));
-          Insert_After_And_Analyze (Last_Decl, Postcond_Enabled_Decl);
-          Last_Decl := Postcond_Enabled_Decl;
- 
-          --  Create a flag to indicate that return has been reached
- 
-          --  This is necessary for deciding whether to execute _postconditions
-          --  during finalization.
- 
-          --  Generate:
-          --
-          --    Return_Success_For_Postcond : Boolean := False;
- 
-          Return_Success_Decl :=
-            Make_Object_Declaration (Loc,
-              Defining_Identifier =>
-                Make_Defining_Identifier
-                  (Loc, Name_uReturn_Success_For_Postcond),
-              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
-              Expression          => New_Occurrence_Of (Standard_False, Loc));
-          Insert_After_And_Analyze (Last_Decl, Return_Success_Decl);
-          Last_Decl := Return_Success_Decl;
- 
-          --  Set an explicit End_Label to override the sloc of the implicit
-          --  RETURN statement, and prevent it from inheriting the sloc of one
-          --  the postconditions: this would cause confusing debug info to be
-          --  produced, interfering with coverage-analysis tools.
- 
-          --  NOTE: Coverage-analysis and static-analysis tools rely on the
-          --  postconditions procedure being free of internally generated code
-          --  since some of these tools, like CodePeer, treat _postconditions
-          --  as original source.
- 
-          --  Generate:
-          --
-          --    procedure _postconditions is
-          --    begin
-          --       [Stmts];
-          --    end;
- 
-          Proc_Bod :=
-            Make_Subprogram_Body (Loc,
-              Specification              =>
-                Copy_Subprogram_Spec (Proc_Spec),
-              Declarations               => Empty_List,
-              Handled_Statement_Sequence =>
-                Make_Handled_Sequence_Of_Statements (Loc,
-                  End_Label  => Make_Identifier (Loc, Chars (Proc_Id)),
-                  Statements => Stmts));
-          Insert_After_And_Analyze (Last_Decl, Proc_Bod);
- 
-       end Build_Postconditions_Procedure;
- 
        ----------------------------
        -- Process_Contract_Cases --
        ----------------------------
  
!       procedure Process_Contract_Cases (Stmts : in out List_Id) is
           procedure Process_Contract_Cases_For (Subp_Id : Entity_Id);
           --  Process pragma Contract_Cases for subprogram Subp_Id
  
--- 2799,2812 ----
           end if;
        end Append_Enabled_Item;
  
        ----------------------------
        -- Process_Contract_Cases --
        ----------------------------
  
!       procedure Process_Contract_Cases
!         (Stmts : in out List_Id;
!          Decls : List_Id)
!       is
           procedure Process_Contract_Cases_For (Subp_Id : Entity_Id);
           --  Process pragma Contract_Cases for subprogram Subp_Id
  
*************** package body Contracts is
*** 2574,2587 ****
                          Expand_Pragma_Contract_Cases
                            (CCs     => Prag,
                             Subp_Id => Subp_Id,
!                            Decls   => Declarations (Body_Decl),
                             Stmts   => Stmts);
  
                       elsif Pragma_Name (Prag) = Name_Subprogram_Variant then
                          Expand_Pragma_Subprogram_Variant
                            (Prag       => Prag,
                             Subp_Id    => Subp_Id,
!                            Body_Decls => Declarations (Body_Decl));
                       end if;
                    end if;
  
--- 2827,2840 ----
                          Expand_Pragma_Contract_Cases
                            (CCs     => Prag,
                             Subp_Id => Subp_Id,
!                            Decls   => Decls,
                             Stmts   => Stmts);
  
                       elsif Pragma_Name (Prag) = Name_Subprogram_Variant then
                          Expand_Pragma_Subprogram_Variant
                            (Prag       => Prag,
                             Subp_Id    => Subp_Id,
!                            Body_Decls => Decls);
                       end if;
                    end if;
  
*************** package body Contracts is
*** 2590,2600 ****
              end if;
           end Process_Contract_Cases_For;
  
-          pragma Unmodified (Stmts);
-          --  Stmts is passed as IN OUT to signal that the list can be updated,
-          --  even if the corresponding integer value representing the list does
-          --  not change.
- 
        --  Start of processing for Process_Contract_Cases
  
        begin
--- 2843,2848 ----
*************** package body Contracts is
*** 2820,2834 ****
        -- Process_Preconditions --
        ---------------------------
  
!       procedure Process_Preconditions is
           Insert_Node : Node_Id := Empty;
           --  The insertion node after which all pragma Check equivalents are
           --  inserted.
  
-          function Is_Prologue_Renaming (Decl : Node_Id) return Boolean;
-          --  Determine whether arbitrary declaration Decl denotes a renaming of
-          --  a discriminant or protection field _object.
- 
           procedure Prepend_To_Decls (Item : Node_Id);
           --  Prepend a single item to the declarations of the subprogram body
  
--- 3068,3078 ----
        -- Process_Preconditions --
        ---------------------------
  
!       procedure Process_Preconditions (Decls : in out List_Id) is
           Insert_Node : Node_Id := Empty;
           --  The insertion node after which all pragma Check equivalents are
           --  inserted.
  
           procedure Prepend_To_Decls (Item : Node_Id);
           --  Prepend a single item to the declarations of the subprogram body
  
*************** package body Contracts is
*** 2840,2903 ****
           --  Collect all preconditions of subprogram Subp_Id and prepend their
           --  pragma Check equivalents to the declarations of the body.
  
-          --------------------------
-          -- Is_Prologue_Renaming --
-          --------------------------
- 
-          function Is_Prologue_Renaming (Decl : Node_Id) return Boolean is
-             Nam  : Node_Id;
-             Obj  : Entity_Id;
-             Pref : Node_Id;
-             Sel  : Node_Id;
- 
-          begin
-             if Nkind (Decl) = N_Object_Renaming_Declaration then
-                Obj := Defining_Entity (Decl);
-                Nam := Name (Decl);
- 
-                if Nkind (Nam) = N_Selected_Component then
-                   Pref := Prefix (Nam);
-                   Sel  := Selector_Name (Nam);
- 
-                   --  A discriminant renaming appears as
-                   --    Discr : constant ... := Prefix.Discr;
- 
-                   if Ekind (Obj) = E_Constant
-                     and then Is_Entity_Name (Sel)
-                     and then Present (Entity (Sel))
-                     and then Ekind (Entity (Sel)) = E_Discriminant
-                   then
-                      return True;
- 
-                   --  A protection field renaming appears as
-                   --    Prot : ... := _object._object;
- 
-                   --  A renamed private component is just a component of
-                   --  _object, with an arbitrary name.
- 
-                   elsif Ekind (Obj) in E_Variable | E_Constant
-                     and then Nkind (Pref) = N_Identifier
-                     and then Chars (Pref) = Name_uObject
-                     and then Nkind (Sel) = N_Identifier
-                   then
-                      return True;
-                   end if;
-                end if;
-             end if;
- 
-             return False;
-          end Is_Prologue_Renaming;
- 
           ----------------------
           -- Prepend_To_Decls --
           ----------------------
  
           procedure Prepend_To_Decls (Item : Node_Id) is
-             Decls : List_Id;
- 
           begin
-             Decls := Declarations (Body_Decl);
- 
              --  Ensure that the body has a declarative list
  
              if No (Decls) then
--- 3084,3095 ----
*************** package body Contracts is
*** 2928,2941 ****
  
              else
                 Check_Prag := Build_Pragma_Check_Equivalent (Prag);
  
-                if Present (Insert_Node) then
-                   Insert_After (Insert_Node, Check_Prag);
-                else
-                   Prepend_To_Decls (Check_Prag);
-                end if;
- 
-                Analyze (Check_Prag);
              end if;
           end Prepend_Pragma_To_Decls;
  
--- 3120,3127 ----
  
              else
                 Check_Prag := Build_Pragma_Check_Equivalent (Prag);
+                Prepend_To_Decls (Check_Prag);
  
              end if;
           end Prepend_Pragma_To_Decls;
  
*************** package body Contracts is
*** 3028,3043 ****
  
           --  Local variables
  
!          Decls : constant List_Id := Declarations (Body_Decl);
!          Decl  : Node_Id;
  
        --  Start of processing for Process_Preconditions
  
        begin
           --  Find the proper insertion point for all pragma Check equivalents
  
!          if Present (Decls) then
!             Decl := First (Decls);
              while Present (Decl) loop
  
                 --  First source declaration terminates the search, because all
--- 3214,3230 ----
  
           --  Local variables
  
!          Body_Decls : constant List_Id := Declarations (Body_Decl);
!          Decl       : Node_Id;
!          Next_Decl  : Node_Id;
  
        --  Start of processing for Process_Preconditions
  
        begin
           --  Find the proper insertion point for all pragma Check equivalents
  
!          if Present (Body_Decls) then
!             Decl := First (Body_Decls);
              while Present (Decl) loop
  
                 --  First source declaration terminates the search, because all
*************** package body Contracts is
*** 3082,3087 ****
--- 3269,3287 ----
              --    <preconditions from body>
  
              Process_Preconditions_For (Body_Id);
+ 
+             --  Move the generated entry-call prologue renamings into the
+             --  outer declarations for use in the preconditions.
+ 
+             Decl := First (Body_Decls);
+             while Present (Decl) and then Present (Insert_Node) loop
+                Next_Decl := Next (Decl);
+                Remove (Decl);
+                Prepend_To_Decls (Decl);
+ 
+                exit when Decl = Insert_Node;
+                Decl := Next_Decl;
+             end loop;
           end if;
  
           if Present (Spec_Id) then
*************** package body Contracts is
*** 3094,3099 ****
--- 3294,3300 ----
        Restore_Scope : Boolean := False;
        Result        : Entity_Id;
        Stmts         : List_Id := No_List;
+       Decls         : List_Id := New_List;
        Subp_Id       : Entity_Id;
  
     --  Start of processing for Expand_Subprogram_Contract
*************** package body Contracts is
*** 3172,3204 ****
        --  pragmas to verify the contract assertions of the spec and body in a
        --  particular order. The order is as follows:
  
!       --    function Example (...) return ... is
!       --       procedure _Postconditions (...) is
        --       begin
        --          <refined postconditions from body>
        --          <postconditions from body>
        --          <postconditions from spec>
        --          <inherited postconditions>
        --          <contract case consequences>
        --          <invariant check of function result>
!       --          <invariant and predicate checks of parameters>
!       --       end _Postconditions;
! 
!       --       <inherited preconditions>
!       --       <preconditions from spec>
!       --       <preconditions from body>
!       --       <contract case conditions>
! 
!       --       <source declarations>
!       --    begin
!       --       <source statements>
! 
!       --       _Preconditions (Result);
!       --       return Result;
!       --    end Example;
! 
!       --  Routine _Postconditions holds all contract assertions that must be
!       --  verified on exit from the related subprogram.
  
        --  Step 1: augment contracts list with postconditions associated with
        --  Stable_Properties and Stable_Properties'Class aspects. This must
--- 3373,3402 ----
        --  pragmas to verify the contract assertions of the spec and body in a
        --  particular order. The order is as follows:
  
!       --    function Original_Code (...) return ... is
!       --       <prologue renamings>
!       --       <inherited preconditions>
!       --       <preconditions from spec>
!       --       <preconditions from body>
!       --       <contract case conditions>
! 
!       --       function _Wrapped_Statements (...) return ... is
!       --          <source declarations>
        --       begin
+       --          <source statements>
+       --       end _Wrapped_Statements;
+ 
+       --    begin
+       --       return Result : constant ... := _Wrapped_Statements do
        --          <refined postconditions from body>
        --          <postconditions from body>
        --          <postconditions from spec>
        --          <inherited postconditions>
        --          <contract case consequences>
        --          <invariant check of function result>
!       --          <invariant and predicate checks of parameters
!       --       end return;
!       --    end Original_Code;
  
        --  Step 1: augment contracts list with postconditions associated with
        --  Stable_Properties and Stable_Properties'Class aspects. This must
*************** package body Contracts is
*** 3213,3219 ****
        --  processing of pragma Contract_Cases because the pragma prepends items
        --  to the body declarations.
  
!       Process_Preconditions;
  
        --  Step 3: Handle all postconditions. This action must come before the
        --  processing of pragma Contract_Cases because the pragma appends items
--- 3411,3417 ----
        --  processing of pragma Contract_Cases because the pragma prepends items
        --  to the body declarations.
  
!       Process_Preconditions (Decls);
  
        --  Step 3: Handle all postconditions. This action must come before the
        --  processing of pragma Contract_Cases because the pragma appends items
*************** package body Contracts is
*** 3225,3240 ****
        --  the processing of invariants and predicates because those append
        --  items to list Stmts.
  
!       Process_Contract_Cases (Stmts);
  
        --  Step 5: Apply invariant and predicate checks on a function result and
        --  all formals. The resulting checks are accumulated in list Stmts.
  
        Add_Invariant_And_Predicate_Checks (Subp_Id, Stmts, Result);
  
!       --  Step 6: Construct procedure _Postconditions
  
!       Build_Postconditions_Procedure (Subp_Id, Stmts, Result);
  
        if Restore_Scope then
           End_Scope;
--- 3423,3448 ----
        --  the processing of invariants and predicates because those append
        --  items to list Stmts.
  
!       Process_Contract_Cases (Stmts, Decls);
  
        --  Step 5: Apply invariant and predicate checks on a function result and
        --  all formals. The resulting checks are accumulated in list Stmts.
  
        Add_Invariant_And_Predicate_Checks (Subp_Id, Stmts, Result);
  
!       --  Step 6: Construct subprogram _wrapped_statements
  
!       --  When no statements are present we still need to insert contract
!       --  related declarations.
! 
!       if No (Stmts) then
!          Prepend_List_To (Declarations (Body_Decl), Decls);
! 
!       --  Otherwise, we need a wrapper
! 
!       else
!          Build_Subprogram_Contract_Wrapper (Body_Id, Stmts, Decls, Result);
!       end if;
  
        if Restore_Scope then
           End_Scope;
*************** package body Contracts is
*** 3439,3519 ****
        Freeze_Contracts;
     end Freeze_Previous_Contracts;
  
-    --------------------------
-    -- Get_Postcond_Enabled --
-    --------------------------
- 
-    function Get_Postcond_Enabled (Subp : Entity_Id) return Entity_Id is
-       Decl : Node_Id;
-    begin
-       Decl :=
-         Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
-       while Present (Decl) loop
- 
-          if Nkind (Decl) = N_Object_Declaration
-           and then Chars (Defining_Identifier (Decl))
-                      = Name_uPostcond_Enabled
-          then
-             return Defining_Identifier (Decl);
-          end if;
- 
-          Next (Decl);
-       end loop;
- 
-       return Empty;
-    end Get_Postcond_Enabled;
- 
-    ------------------------------------
-    -- Get_Result_Object_For_Postcond --
-    ------------------------------------
- 
-    function Get_Result_Object_For_Postcond
-      (Subp : Entity_Id) return Entity_Id
-    is
-       Decl : Node_Id;
-    begin
-       Decl :=
-         Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
-       while Present (Decl) loop
- 
-          if Nkind (Decl) = N_Object_Declaration
-            and then Chars (Defining_Identifier (Decl))
-                       = Name_uResult_Object_For_Postcond
-          then
-             return Defining_Identifier (Decl);
-          end if;
- 
-          Next (Decl);
-       end loop;
- 
-       return Empty;
-    end Get_Result_Object_For_Postcond;
- 
-    -------------------------------------
-    -- Get_Return_Success_For_Postcond --
-    -------------------------------------
- 
-    function Get_Return_Success_For_Postcond (Subp : Entity_Id) return Entity_Id
-    is
-       Decl : Node_Id;
-    begin
-       Decl :=
-         Next (Unit_Declaration_Node (Postconditions_Proc (Subp)));
-       while Present (Decl) loop
- 
-          if Nkind (Decl) = N_Object_Declaration
-           and then Chars (Defining_Identifier (Decl))
-                      = Name_uReturn_Success_For_Postcond
-          then
-             return Defining_Identifier (Decl);
-          end if;
- 
-          Next (Decl);
-       end loop;
- 
-       return Empty;
-    end Get_Return_Success_For_Postcond;
- 
     ---------------------------------
     -- Inherit_Subprogram_Contract --
     ---------------------------------
--- 3647,3652 ----
*************** package body Contracts is
*** 3608,3613 ****
--- 3741,3805 ----
        end if;
     end Instantiate_Subprogram_Contract;
  
+    --------------------------
+    -- Is_Prologue_Renaming --
+    --------------------------
+ 
+    --  This should be turned into a flag and set during the expansion of
+    --  task and protected types when the renamings get generated ???
+ 
+    function Is_Prologue_Renaming (Decl : Node_Id) return Boolean is
+       Nam  : Node_Id;
+       Obj  : Entity_Id;
+       Pref : Node_Id;
+       Sel  : Node_Id;
+ 
+    begin
+       if Nkind (Decl) = N_Object_Renaming_Declaration
+         and then not Comes_From_Source (Decl)
+       then
+          Obj := Defining_Entity (Decl);
+          Nam := Name (Decl);
+ 
+          if Nkind (Nam) = N_Selected_Component then
+             --  Analyze the renaming declaration so we can further examine it
+ 
+             if not Analyzed (Decl) then
+                Analyze (Decl);
+             end if;
+ 
+             Pref := Prefix (Nam);
+             Sel  := Selector_Name (Nam);
+ 
+             --  A discriminant renaming appears as
+             --    Discr : constant ... := Prefix.Discr;
+ 
+             if Ekind (Obj) = E_Constant
+               and then Is_Entity_Name (Sel)
+               and then Present (Entity (Sel))
+               and then Ekind (Entity (Sel)) = E_Discriminant
+             then
+                return True;
+ 
+             --  A protection field renaming appears as
+             --    Prot : ... := _object._object;
+ 
+             --  A renamed private component is just a component of
+             --  _object, with an arbitrary name.
+ 
+             elsif Ekind (Obj) in E_Variable | E_Constant
+               and then Nkind (Pref) = N_Identifier
+               and then Chars (Pref) = Name_uObject
+               and then Nkind (Sel) = N_Identifier
+             then
+                return True;
+             end if;
+          end if;
+       end if;
+ 
+       return False;
+    end Is_Prologue_Renaming;
+ 
     -----------------------------------
     -- Make_Class_Precondition_Subps --
     -----------------------------------
*************** package body Contracts is
*** 3630,3635 ****
--- 3822,3831 ----
        --  and append it to the freezing actions of Tagged_Type. Is_Dynamic
        --  controls building the static or dynamic version of the helper.
  
+       function Build_Unique_Name (Suffix : String) return Name_Id;
+       --  Build an unique new name adding suffix to Subp_Id name (plus its
+       --  homonym number for values bigger than 1).
+ 
        -------------------------------
        -- Add_Indirect_Call_Wrapper --
        -------------------------------
*************** package body Contracts is
*** 3710,3718 ****
           function Build_ICW_Decl return Node_Id is
              ICW_Id : constant Entity_Id  :=
                         Make_Defining_Identifier (Loc,
!                          New_External_Name (Chars (Subp_Id),
!                            Suffix       => "ICW",
!                            Suffix_Index => Source_Offset (Loc)));
              Decl   : Node_Id;
              Spec   : Node_Id;
  
--- 3906,3912 ----
           function Build_ICW_Decl return Node_Id is
              ICW_Id : constant Entity_Id  :=
                         Make_Defining_Identifier (Loc,
!                          Build_Unique_Name (Suffix => "ICW"));
              Decl   : Node_Id;
              Spec   : Node_Id;
  
*************** package body Contracts is
*** 3897,3903 ****
              Set_Corresponding_Body (Helper_Decl, Body_Id);
              Set_Must_Override (Body_Spec, False);
  
!             if Present (Class_Preconditions (Subp_Id)) then
                 Return_Expr :=
                   Copy_And_Update_References (Class_Preconditions (Subp_Id));
  
--- 4091,4106 ----
              Set_Corresponding_Body (Helper_Decl, Body_Id);
              Set_Must_Override (Body_Spec, False);
  
!             if Present (Class_Preconditions (Subp_Id))
!             --  Evaluate the expression if we are building a dynamic helper
!             --  or we are building a static helper for a non-abstract tagged
!             --  type; for abstract tagged types the helper just returns True
!             --  since it is called by the indirect call wrapper (ICW).
!               and then
!                 (Is_Dynamic
!                    or else
!                       not Is_Abstract_Type (Find_Dispatching_Type (Subp_Id)))
!             then
                 Return_Expr :=
                   Copy_And_Update_References (Class_Preconditions (Subp_Id));
  
*************** package body Contracts is
*** 3908,3914 ****
              --  enabled.
  
              else
!                pragma Assert (Present (Ignored_Class_Preconditions (Subp_Id)));
                 Return_Expr := New_Occurrence_Of (Standard_True, Loc);
              end if;
  
--- 4111,4118 ----
              --  enabled.
  
              else
!                pragma Assert (Present (Ignored_Class_Preconditions (Subp_Id))
!                  or else Is_Abstract_Type (Find_Dispatching_Type (Subp_Id)));
                 Return_Expr := New_Occurrence_Of (Standard_True, Loc);
              end if;
  
*************** package body Contracts is
*** 4049,4054 ****
--- 4253,4281 ----
           end if;
        end Add_Call_Helper;
  
+       -----------------------
+       -- Build_Unique_Name --
+       -----------------------
+ 
+       function Build_Unique_Name (Suffix : String) return Name_Id is
+       begin
+          --  Append the homonym number. Strip the leading space character in
+          --  the image of natural numbers. Also do not add the homonym value
+          --  of 1.
+ 
+          if Has_Homonym (Subp_Id) and then Homonym_Number (Subp_Id) > 1 then
+             declare
+                S : constant String := Homonym_Number (Subp_Id)'Img;
+ 
+             begin
+                return New_External_Name (Chars (Subp_Id),
+                         Suffix => Suffix & "_" & S (2 .. S'Last));
+             end;
+          end if;
+ 
+          return New_External_Name (Chars (Subp_Id), Suffix);
+       end Build_Unique_Name;
+ 
        --  Local variables
  
        Helper_Id : Entity_Id;
*************** package body Contracts is
*** 4070,4078 ****
  
              Helper_Id :=
                Make_Defining_Identifier (Loc,
!                 New_External_Name (Chars (Subp_Id),
!                 Suffix       => "DP",
!                 Suffix_Index => Source_Offset (Loc)));
              Add_Call_Helper (Helper_Id, Is_Dynamic => True);
  
              --  Link original subprogram to helper and vice versa
--- 4297,4303 ----
  
              Helper_Id :=
                Make_Defining_Identifier (Loc,
!                 Build_Unique_Name (Suffix => "DP"));
              Add_Call_Helper (Helper_Id, Is_Dynamic => True);
  
              --  Link original subprogram to helper and vice versa
*************** package body Contracts is
*** 4089,4097 ****
  
              Helper_Id :=
                Make_Defining_Identifier (Loc,
!                 New_External_Name (Chars (Subp_Id),
!                 Suffix       => "SP",
!                 Suffix_Index => Source_Offset (Loc)));
  
              Add_Call_Helper (Helper_Id, Is_Dynamic => False);
  
--- 4314,4320 ----
  
              Helper_Id :=
                Make_Defining_Identifier (Loc,
!                 Build_Unique_Name (Suffix => "SP"));
  
              Add_Call_Helper (Helper_Id, Is_Dynamic => False);
  
*************** package body Contracts is
*** 4226,4467 ****
  
     procedure Merge_Class_Conditions (Spec_Id : Entity_Id) is
  
-       procedure Preanalyze_Condition
-         (Subp : Entity_Id;
-          Expr : Node_Id);
-       --  Preanalyze the class-wide condition Expr of Subp
- 
        procedure Process_Inherited_Conditions (Kind : Condition_Kind);
        --  Collect all inherited class-wide conditions of Spec_Id and merge
        --  them into one big condition.
  
-       --------------------------
-       -- Preanalyze_Condition --
-       --------------------------
- 
-       procedure Preanalyze_Condition
-         (Subp : Entity_Id;
-          Expr : Node_Id)
-       is
-          procedure Clear_Unset_References;
-          --  Clear unset references on formals of Subp since preanalysis
-          --  occurs in a place unrelated to the actual code.
- 
-          procedure Remove_Controlling_Arguments;
-          --  Traverse Expr and clear the Controlling_Argument of calls to
-          --  nonabstract functions.
- 
-          procedure Remove_Formals (Id : Entity_Id);
-          --  Remove formals from homonym chains and make them not visible
- 
-          procedure Restore_Original_Selected_Component;
-          --  Traverse Expr searching for dispatching calls to functions whose
-          --  original node was a selected component, and replace them with
-          --  their original node.
- 
-          ----------------------------
-          -- Clear_Unset_References --
-          ----------------------------
- 
-          procedure Clear_Unset_References is
-             F : Entity_Id := First_Formal (Subp);
- 
-          begin
-             while Present (F) loop
-                Set_Unset_Reference (F, Empty);
-                Next_Formal (F);
-             end loop;
-          end Clear_Unset_References;
- 
-          ----------------------------------
-          -- Remove_Controlling_Arguments --
-          ----------------------------------
- 
-          procedure Remove_Controlling_Arguments is
-             function Remove_Ctrl_Arg (N : Node_Id) return Traverse_Result;
-             --  Reset the Controlling_Argument of calls to nonabstract
-             --  function calls.
- 
-             ---------------------
-             -- Remove_Ctrl_Arg --
-             ---------------------
- 
-             function Remove_Ctrl_Arg (N : Node_Id) return Traverse_Result is
-             begin
-                if Nkind (N) = N_Function_Call
-                  and then Present (Controlling_Argument (N))
-                  and then not Is_Abstract_Subprogram (Entity (Name (N)))
-                then
-                   Set_Controlling_Argument (N, Empty);
-                end if;
- 
-                return OK;
-             end Remove_Ctrl_Arg;
- 
-             procedure Remove_Ctrl_Args is new Traverse_Proc (Remove_Ctrl_Arg);
-          begin
-             Remove_Ctrl_Args (Expr);
-          end Remove_Controlling_Arguments;
- 
-          --------------------
-          -- Remove_Formals --
-          --------------------
- 
-          procedure Remove_Formals (Id : Entity_Id) is
-             F : Entity_Id := First_Formal (Id);
- 
-          begin
-             while Present (F) loop
-                Set_Is_Immediately_Visible (F, False);
-                Remove_Homonym (F);
-                Next_Formal (F);
-             end loop;
-          end Remove_Formals;
- 
-          -----------------------------------------
-          -- Restore_Original_Selected_Component --
-          -----------------------------------------
- 
-          procedure Restore_Original_Selected_Component is
-             Restored_Nodes_List : Elist_Id := No_Elist;
- 
-             procedure Fix_Parents (N : Node_Id);
-             --  Traverse the subtree of N fixing the Parent field of all the
-             --  nodes.
- 
-             function Restore_Node (N : Node_Id) return Traverse_Result;
-             --  Process dispatching calls to functions whose original node was
-             --  a selected component, and replace them with their original
-             --  node. Restored nodes are stored in the Restored_Nodes_List
-             --  to fix the parent fields of their subtrees in a separate
-             --  tree traversal.
- 
-             -----------------
-             -- Fix_Parents --
-             -----------------
- 
-             procedure Fix_Parents (N : Node_Id) is
- 
-                function Fix_Parent
-                  (Parent_Node : Node_Id;
-                   Node        : Node_Id) return Traverse_Result;
-                --  Process a single node
- 
-                ----------------
-                -- Fix_Parent --
-                ----------------
- 
-                function Fix_Parent
-                  (Parent_Node : Node_Id;
-                   Node        : Node_Id) return Traverse_Result
-                is
-                   Par : constant Node_Id := Parent (Node);
- 
-                begin
-                   if Par /= Parent_Node then
-                      pragma Assert (not Is_List_Member (Node));
-                      Set_Parent (Node, Parent_Node);
-                   end if;
- 
-                   return OK;
-                end Fix_Parent;
- 
-                procedure Fix_Parents is
-                   new Traverse_Proc_With_Parent (Fix_Parent);
- 
-             begin
-                Fix_Parents (N);
-             end Fix_Parents;
- 
-             ------------------
-             -- Restore_Node --
-             ------------------
- 
-             function Restore_Node (N : Node_Id) return Traverse_Result is
-             begin
-                if Nkind (N) = N_Function_Call
-                  and then Nkind (Original_Node (N)) = N_Selected_Component
-                  and then Is_Dispatching_Operation (Entity (Name (N)))
-                then
-                   Rewrite (N, Original_Node (N));
-                   Set_Original_Node (N, N);
- 
-                   --  Save the restored node in the Restored_Nodes_List to fix
-                   --  the parent fields of their subtrees in a separate tree
-                   --  traversal.
- 
-                   Append_New_Elmt (N, Restored_Nodes_List);
-                end if;
- 
-                return OK;
-             end Restore_Node;
- 
-             procedure Restore_Nodes is new Traverse_Proc (Restore_Node);
- 
-          --  Start of processing for Restore_Original_Selected_Component
- 
-          begin
-             Restore_Nodes (Expr);
- 
-             --  After restoring the original node we must fix the decoration
-             --  of the Parent attribute to ensure tree consistency; required
-             --  because when the class-wide condition is inherited, calls to
-             --  New_Copy_Tree will perform copies of this subtree, and formal
-             --  occurrences with wrong Parent field cannot be mapped to the
-             --  new formals.
- 
-             if Present (Restored_Nodes_List) then
-                declare
-                   Elmt : Elmt_Id := First_Elmt (Restored_Nodes_List);
- 
-                begin
-                   while Present (Elmt) loop
-                      Fix_Parents (Node (Elmt));
-                      Next_Elmt (Elmt);
-                   end loop;
-                end;
-             end if;
-          end Restore_Original_Selected_Component;
- 
-       --  Start of processing for Preanalyze_Condition
- 
-       begin
-          pragma Assert (Present (Expr));
-          pragma Assert (Inside_Class_Condition_Preanalysis = False);
- 
-          Push_Scope (Subp);
-          Install_Formals (Subp);
-          Inside_Class_Condition_Preanalysis := True;
- 
-          Preanalyze_And_Resolve (Expr, Standard_Boolean);
- 
-          Inside_Class_Condition_Preanalysis := False;
-          Remove_Formals (Subp);
-          Pop_Scope;
- 
-          --  If this preanalyzed condition has occurrences of dispatching calls
-          --  using the Object.Operation notation, during preanalysis such calls
-          --  are rewritten as dispatching function calls; if at later stages
-          --  this condition is inherited we must have restored the original
-          --  selected-component node to ensure that the preanalysis of the
-          --  inherited condition rewrites these dispatching calls in the
-          --  correct context to avoid reporting spurious errors.
- 
-          Restore_Original_Selected_Component;
- 
-          --  Traverse Expr and clear the Controlling_Argument of calls to
-          --  nonabstract functions. Required since the preanalyzed condition
-          --  is not yet installed on its definite context and will be cloned
-          --  and extended in derivations with additional conditions.
- 
-          Remove_Controlling_Arguments;
- 
-          --  Clear also attribute Unset_Reference; again because preanalysis
-          --  occurs in a place unrelated to the actual code.
- 
-          Clear_Unset_References;
-       end Preanalyze_Condition;
- 
        ----------------------------------
        -- Process_Inherited_Conditions --
        ----------------------------------
--- 4449,4458 ----
*************** package body Contracts is
*** 4794,4799 ****
--- 4785,5034 ----
        end loop;
     end Merge_Class_Conditions;
  
+    ---------------------------------
+    -- Preanalyze_Class_Conditions --
+    ---------------------------------
+ 
+    procedure Preanalyze_Class_Conditions (Spec_Id : Entity_Id) is
+       Cond : Node_Id;
+ 
+    begin
+       for Kind in Condition_Kind loop
+          Cond := Class_Condition (Kind, Spec_Id);
+ 
+          if Present (Cond) then
+             Preanalyze_Condition (Spec_Id, Cond);
+          end if;
+       end loop;
+    end Preanalyze_Class_Conditions;
+ 
+    --------------------------
+    -- Preanalyze_Condition --
+    --------------------------
+ 
+    procedure Preanalyze_Condition
+      (Subp : Entity_Id;
+       Expr : Node_Id)
+    is
+       procedure Clear_Unset_References;
+       --  Clear unset references on formals of Subp since preanalysis
+       --  occurs in a place unrelated to the actual code.
+ 
+       procedure Remove_Controlling_Arguments;
+       --  Traverse Expr and clear the Controlling_Argument of calls to
+       --  nonabstract functions.
+ 
+       procedure Remove_Formals (Id : Entity_Id);
+       --  Remove formals from homonym chains and make them not visible
+ 
+       procedure Restore_Original_Selected_Component;
+       --  Traverse Expr searching for dispatching calls to functions whose
+       --  original node was a selected component, and replace them with
+       --  their original node.
+ 
+       ----------------------------
+       -- Clear_Unset_References --
+       ----------------------------
+ 
+       procedure Clear_Unset_References is
+          F : Entity_Id := First_Formal (Subp);
+ 
+       begin
+          while Present (F) loop
+             Set_Unset_Reference (F, Empty);
+             Next_Formal (F);
+          end loop;
+       end Clear_Unset_References;
+ 
+       ----------------------------------
+       -- Remove_Controlling_Arguments --
+       ----------------------------------
+ 
+       procedure Remove_Controlling_Arguments is
+          function Remove_Ctrl_Arg (N : Node_Id) return Traverse_Result;
+          --  Reset the Controlling_Argument of calls to nonabstract
+          --  function calls.
+ 
+          ---------------------
+          -- Remove_Ctrl_Arg --
+          ---------------------
+ 
+          function Remove_Ctrl_Arg (N : Node_Id) return Traverse_Result is
+          begin
+             if Nkind (N) = N_Function_Call
+               and then Present (Controlling_Argument (N))
+               and then not Is_Abstract_Subprogram (Entity (Name (N)))
+             then
+                Set_Controlling_Argument (N, Empty);
+             end if;
+ 
+             return OK;
+          end Remove_Ctrl_Arg;
+ 
+          procedure Remove_Ctrl_Args is new Traverse_Proc (Remove_Ctrl_Arg);
+       begin
+          Remove_Ctrl_Args (Expr);
+       end Remove_Controlling_Arguments;
+ 
+       --------------------
+       -- Remove_Formals --
+       --------------------
+ 
+       procedure Remove_Formals (Id : Entity_Id) is
+          F : Entity_Id := First_Formal (Id);
+ 
+       begin
+          while Present (F) loop
+             Set_Is_Immediately_Visible (F, False);
+             Remove_Homonym (F);
+             Next_Formal (F);
+          end loop;
+       end Remove_Formals;
+ 
+       -----------------------------------------
+       -- Restore_Original_Selected_Component --
+       -----------------------------------------
+ 
+       procedure Restore_Original_Selected_Component is
+          Restored_Nodes_List : Elist_Id := No_Elist;
+ 
+          procedure Fix_Parents (N : Node_Id);
+          --  Traverse the subtree of N fixing the Parent field of all the
+          --  nodes.
+ 
+          function Restore_Node (N : Node_Id) return Traverse_Result;
+          --  Process dispatching calls to functions whose original node was
+          --  a selected component, and replace them with their original
+          --  node. Restored nodes are stored in the Restored_Nodes_List
+          --  to fix the parent fields of their subtrees in a separate
+          --  tree traversal.
+ 
+          -----------------
+          -- Fix_Parents --
+          -----------------
+ 
+          procedure Fix_Parents (N : Node_Id) is
+ 
+             function Fix_Parent
+               (Parent_Node : Node_Id;
+                Node        : Node_Id) return Traverse_Result;
+             --  Process a single node
+ 
+             ----------------
+             -- Fix_Parent --
+             ----------------
+ 
+             function Fix_Parent
+               (Parent_Node : Node_Id;
+                Node        : Node_Id) return Traverse_Result
+             is
+                Par : constant Node_Id := Parent (Node);
+ 
+             begin
+                if Par /= Parent_Node then
+                   pragma Assert (not Is_List_Member (Node));
+                   Set_Parent (Node, Parent_Node);
+                end if;
+ 
+                return OK;
+             end Fix_Parent;
+ 
+             procedure Fix_Parents is
+                new Traverse_Proc_With_Parent (Fix_Parent);
+ 
+          begin
+             Fix_Parents (N);
+          end Fix_Parents;
+ 
+          ------------------
+          -- Restore_Node --
+          ------------------
+ 
+          function Restore_Node (N : Node_Id) return Traverse_Result is
+          begin
+             if Nkind (N) = N_Function_Call
+               and then Nkind (Original_Node (N)) = N_Selected_Component
+               and then Is_Dispatching_Operation (Entity (Name (N)))
+             then
+                Rewrite (N, Original_Node (N));
+                Set_Original_Node (N, N);
+ 
+                --  Save the restored node in the Restored_Nodes_List to fix
+                --  the parent fields of their subtrees in a separate tree
+                --  traversal.
+ 
+                Append_New_Elmt (N, Restored_Nodes_List);
+             end if;
+ 
+             return OK;
+          end Restore_Node;
+ 
+          procedure Restore_Nodes is new Traverse_Proc (Restore_Node);
+ 
+       --  Start of processing for Restore_Original_Selected_Component
+ 
+       begin
+          Restore_Nodes (Expr);
+ 
+          --  After restoring the original node we must fix the decoration
+          --  of the Parent attribute to ensure tree consistency; required
+          --  because when the class-wide condition is inherited, calls to
+          --  New_Copy_Tree will perform copies of this subtree, and formal
+          --  occurrences with wrong Parent field cannot be mapped to the
+          --  new formals.
+ 
+          if Present (Restored_Nodes_List) then
+             declare
+                Elmt : Elmt_Id := First_Elmt (Restored_Nodes_List);
+ 
+             begin
+                while Present (Elmt) loop
+                   Fix_Parents (Node (Elmt));
+                   Next_Elmt (Elmt);
+                end loop;
+             end;
+          end if;
+       end Restore_Original_Selected_Component;
+ 
+    --  Start of processing for Preanalyze_Condition
+ 
+    begin
+       pragma Assert (Present (Expr));
+       pragma Assert (Inside_Class_Condition_Preanalysis = False);
+ 
+       Push_Scope (Subp);
+       Install_Formals (Subp);
+       Inside_Class_Condition_Preanalysis := True;
+ 
+       Preanalyze_Spec_Expression (Expr, Standard_Boolean);
+ 
+       Inside_Class_Condition_Preanalysis := False;
+       Remove_Formals (Subp);
+       Pop_Scope;
+ 
+       --  If this preanalyzed condition has occurrences of dispatching calls
+       --  using the Object.Operation notation, during preanalysis such calls
+       --  are rewritten as dispatching function calls; if at later stages
+       --  this condition is inherited we must have restored the original
+       --  selected-component node to ensure that the preanalysis of the
+       --  inherited condition rewrites these dispatching calls in the
+       --  correct context to avoid reporting spurious errors.
+ 
+       Restore_Original_Selected_Component;
+ 
+       --  Traverse Expr and clear the Controlling_Argument of calls to
+       --  nonabstract functions. Required since the preanalyzed condition
+       --  is not yet installed on its definite context and will be cloned
+       --  and extended in derivations with additional conditions.
+ 
+       Remove_Controlling_Arguments;
+ 
+       --  Clear also attribute Unset_Reference; again because preanalysis
+       --  occurs in a place unrelated to the actual code.
+ 
+       Clear_Unset_References;
+    end Preanalyze_Condition;
+ 
     ----------------------------------------
     -- Save_Global_References_In_Contract --
     ----------------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/contracts.ads gcc-13.1.0/gcc/ada/contracts.ads
*** gcc-12.2.0/gcc/ada/contracts.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/contracts.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2015-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2015-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Contracts is
*** 64,69 ****
--- 64,79 ----
     procedure Analyze_Contracts (L : List_Id);
     --  Analyze the contracts of all eligible constructs found in list L
  
+    procedure Analyze_Pragmas_In_Declarations (Body_Id : Entity_Id);
+    --  Perform early analysis of pragmas at the top of a given subprogram's
+    --  declarations.
+    --
+    --  The purpose of this is to analyze contract-related pragmas for later
+    --  processing, but also to handle other such pragmas before these
+    --  declarations get moved to an internal wrapper as part of contract
+    --  expansion. For example, pragmas Inline, Ghost, Volatile all need to
+    --  apply directly to the subprogram and not be moved to a wrapper.
+ 
     procedure Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id : Entity_Id);
     --  Analyze all delayed pragmas chained on the contract of entry or
     --  subprogram body Body_Id as if they appeared at the end of a declarative
*************** package Contracts is
*** 177,182 ****
--- 187,203 ----
     --    Depends
     --    Global
  
+    procedure Build_Entry_Contract_Wrapper (E : Entity_Id; Decl : Node_Id);
+    --  Build the body of a wrapper procedure for an entry or entry family that
+    --  has contract cases, preconditions, or postconditions, and add it to the
+    --  freeze actions of the related synchronized type.
+    --
+    --  The body first verifies the preconditions and case guards of the
+    --  contract cases, then invokes the entry [family], and finally verifies
+    --  the postconditions and the consequences of the contract cases. E denotes
+    --  the entry family. Decl denotes the declaration of the enclosing
+    --  synchronized type.
+ 
     procedure Create_Generic_Contract (Unit : Node_Id);
     --  Create a contract node for a generic package, generic subprogram, or a
     --  generic body denoted by Unit by collecting all source contract-related
*************** package Contracts is
*** 188,208 ****
     --  denoted by Body_Decl. In addition, freeze the contract of the nearest
     --  enclosing package body.
  
-    function Get_Postcond_Enabled (Subp : Entity_Id) return Entity_Id;
-    --  Get the defining identifier for a subprogram's Postcond_Enabled
-    --  object created during the expansion of the subprogram's postconditions.
- 
-    function Get_Result_Object_For_Postcond (Subp : Entity_Id) return Entity_Id;
-    --  Get the defining identifier for a subprogram's
-    --  Result_Object_For_Postcond object created during the expansion of the
-    --  subprogram's postconditions.
- 
-    function Get_Return_Success_For_Postcond
-      (Subp : Entity_Id) return Entity_Id;
-    --  Get the defining identifier for a subprogram's
-    --  Return_Success_For_Postcond object created during the expansion of the
-    --  subprogram's postconditions.
- 
     procedure Inherit_Subprogram_Contract
       (Subp      : Entity_Id;
        From_Subp : Entity_Id);
--- 209,214 ----
*************** package Contracts is
*** 226,231 ****
--- 232,270 ----
     --  overrides an inherited class-wide precondition (see AI12-0195-1).
     --  Late_Overriding enables special handling required for late-overriding
     --  subprograms.
+    --
+    --  For example, if we have a subprogram with the following profile:
+    --
+    --     procedure Prim (Obj : TagTyp; <additional formals>)
+    --       with Pre'Class => F1 (Obj) and F2(Obj)
+    --
+    --  We build the following helper that evaluates statically the class-wide
+    --  precondition:
+    --
+    --    function PrimSP (Obj : TagTyp) return Boolean is
+    --    begin
+    --       return F1 (Obj) and F2(Obj);
+    --    end PrimSP;
+    --
+    --   ... and the following helper that evaluates dynamically the class-wide
+    --   precondition:
+    --
+    --    function PrimDP (Obj : TagTyp'Class; ...) return Boolean is
+    --    begin
+    --       return F1 (Obj) and F2(Obj);
+    --    end PrimSP;
+    --
+    --   ... and the following indirect-call wrapper (ICW) that is used by the
+    --   code generated by the compiler for indirect calls:
+    --
+    --    procedure PrimICW (Obj : TagTyp; <additional formals> is
+    --    begin
+    --       if not PrimSP (Obj) then
+    --          $raise_assert_failure ("failed precondition in call at ...");
+    --       end if;
+    --
+    --       Prim (Obj, ...);
+    --    end Prim;
  
     procedure Merge_Class_Conditions (Spec_Id : Entity_Id);
     --  Merge and preanalyze all class-wide conditions of Spec_Id (class-wide
*************** package Contracts is
*** 237,242 ****
--- 276,285 ----
     --  which are invoked from the caller side; they are also used to build
     --  the dispatch-table wrapper (DTW), if required.
  
+    procedure Preanalyze_Class_Conditions (Spec_Id : Entity_Id);
+    --  Preanalyze class-wide pre-/postconditions of the given subprogram
+    --  specification.
+ 
     procedure Process_Class_Conditions_At_Freeze_Point (Typ : Entity_Id);
     --  Merge, preanalyze, and check class-wide pre/postconditions of Typ
     --  primitives.
diff -Nrcpad gcc-12.2.0/gcc/ada/csets.adb gcc-13.1.0/gcc/ada/csets.adb
*** gcc-12.2.0/gcc/ada/csets.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/csets.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Csets is
*** 558,564 ****
        'q' => 'Q',  X_A8 => X_A6,
        'r' => 'R',  X_B8 => X_B4,
        's' => 'S',  X_BD => X_BC,
!       't' => 'T',  X_BE => X_FF,
        'u' => 'U',
        'v' => 'V',
        'w' => 'W',
--- 558,564 ----
        'q' => 'Q',  X_A8 => X_A6,
        'r' => 'R',  X_B8 => X_B4,
        's' => 'S',  X_BD => X_BC,
!       't' => 'T',  X_BE => X_BE,
        'u' => 'U',
        'v' => 'V',
        'w' => 'W',
*************** package body Csets is
*** 581,587 ****
        'M' => 'M',  X_CC => X_CC,  X_DC => X_DC,
        'N' => 'N',  X_CD => X_CD,  X_DD => X_DD,
        'O' => 'O',  X_CE => X_CE,  X_DE => X_DE,
!       'P' => 'P',  X_CF => X_CF,  X_DF => X_DF,  X_FF => X_FF,
        'Q' => 'Q',  X_A6 => X_A6,
        'R' => 'R',  X_B4 => X_B4,
        'S' => 'S',  X_BC => X_BC,
--- 581,587 ----
        'M' => 'M',  X_CC => X_CC,  X_DC => X_DC,
        'N' => 'N',  X_CD => X_CD,  X_DD => X_DD,
        'O' => 'O',  X_CE => X_CE,  X_DE => X_DE,
!       'P' => 'P',  X_CF => X_CF,  X_DF => X_DF,  X_FF => X_BE,
        'Q' => 'Q',  X_A6 => X_A6,
        'R' => 'R',  X_B4 => X_B4,
        'S' => 'S',  X_BC => X_BC,
*************** package body Csets is
*** 835,840 ****
--- 835,842 ----
        X_98 => X_98,  -- y umlaut
        X_99 => X_99,  -- O umlaut
        X_9A => X_9A,  -- U umlaut
+       X_9B => X_9D,  -- o with stroke
+       X_9D => X_9D,  -- O with stroke
  
        X_A0 => X_B5,  -- a acute
        X_A1 => X_D6,  -- i acute
*************** package body Csets is
*** 1145,1156 ****
           Identifier_Char (J) := (Fold_Upper (J) /= ' ');
        end loop;
  
!       --  Always add [ as an identifier character to deal with the brackets
!       --  notation for wide characters used in identifiers. Note that if
!       --  we are not allowing wide characters in identifiers, then any use
!       --  of this notation will be flagged as an error in Scan_Identifier.
  
!       Identifier_Char ('[') := True;
  
        --  Add entry for ESC if wide characters in use with a wide character
        --  encoding method active that uses the ESC code for encoding.
--- 1147,1159 ----
           Identifier_Char (J) := (Fold_Upper (J) /= ' ');
        end loop;
  
!       --  Add [ as an identifier character to deal with the brackets notation
!       --  for wide characters used in identifiers for versions up to Ada 2012.
!       --  Note that if we are not allowing wide characters in identifiers, then
!       --  any use of this notation will be flagged as an error in
!       --  Scan_Identifier.
  
!       Identifier_Char ('[') := Ada_Version < Ada_2022;
  
        --  Add entry for ESC if wide characters in use with a wide character
        --  encoding method active that uses the ESC code for encoding.
diff -Nrcpad gcc-12.2.0/gcc/ada/csets.ads gcc-13.1.0/gcc/ada/csets.ads
*** gcc-12.2.0/gcc/ada/csets.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/csets.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/cstand.adb gcc-13.1.0/gcc/ada/cstand.adb
*** gcc-12.2.0/gcc/ada/cstand.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/cstand.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body CStand is
*** 787,793 ****
        B_Node := New_Node (N_Character_Literal, Stloc);
        Set_Is_Static_Expression (B_Node);
        Set_Chars                (B_Node, No_Name);
!       Set_Char_Literal_Value   (B_Node, UI_From_Int (16#FF#));
        Set_Entity               (B_Node, Empty);
        Set_Etype                (B_Node, Standard_Character);
        Set_High_Bound (R_Node, B_Node);
--- 787,793 ----
        B_Node := New_Node (N_Character_Literal, Stloc);
        Set_Is_Static_Expression (B_Node);
        Set_Chars                (B_Node, No_Name);
!       Set_Char_Literal_Value   (B_Node, UI_From_CC (16#FF#));
        Set_Entity               (B_Node, Empty);
        Set_Etype                (B_Node, Standard_Character);
        Set_High_Bound (R_Node, B_Node);
*************** package body CStand is
*** 833,839 ****
        B_Node := New_Node (N_Character_Literal, Stloc);
        Set_Is_Static_Expression (B_Node);
        Set_Chars                (B_Node, No_Name);
!       Set_Char_Literal_Value   (B_Node, UI_From_Int (16#FFFF#));
        Set_Entity               (B_Node, Empty);
        Set_Etype                (B_Node, Standard_Wide_Character);
        Set_High_Bound           (R_Node, B_Node);
--- 833,839 ----
        B_Node := New_Node (N_Character_Literal, Stloc);
        Set_Is_Static_Expression (B_Node);
        Set_Chars                (B_Node, No_Name);
!       Set_Char_Literal_Value   (B_Node, UI_From_CC (16#FFFF#));
        Set_Entity               (B_Node, Empty);
        Set_Etype                (B_Node, Standard_Wide_Character);
        Set_High_Bound           (R_Node, B_Node);
*************** package body CStand is
*** 882,888 ****
        B_Node := New_Node (N_Character_Literal, Stloc);
        Set_Is_Static_Expression (B_Node);
        Set_Chars                (B_Node, No_Name);
!       Set_Char_Literal_Value   (B_Node, UI_From_Int (16#7FFF_FFFF#));
        Set_Entity               (B_Node, Empty);
        Set_Etype                (B_Node, Standard_Wide_Wide_Character);
        Set_High_Bound           (R_Node, B_Node);
--- 882,888 ----
        B_Node := New_Node (N_Character_Literal, Stloc);
        Set_Is_Static_Expression (B_Node);
        Set_Chars                (B_Node, No_Name);
!       Set_Char_Literal_Value   (B_Node, UI_From_CC (16#7FFF_FFFF#));
        Set_Entity               (B_Node, Empty);
        Set_Etype                (B_Node, Standard_Wide_Wide_Character);
        Set_High_Bound           (R_Node, B_Node);
*************** package body CStand is
*** 1088,1094 ****
              Set_Is_Static_Expression (Expr_Decl);
              Set_Chars                (Expr_Decl, No_Name);
              Set_Etype                (Expr_Decl, Standard_Character);
!             Set_Char_Literal_Value   (Expr_Decl, UI_From_Int (Int (Ccode)));
           end;
  
           Append (Decl, Decl_A);
--- 1088,1094 ----
              Set_Is_Static_Expression (Expr_Decl);
              Set_Chars                (Expr_Decl, No_Name);
              Set_Etype                (Expr_Decl, Standard_Character);
!             Set_Char_Literal_Value   (Expr_Decl, UI_From_CC (Ccode));
           end;
  
           Append (Decl, Decl_A);
diff -Nrcpad gcc-12.2.0/gcc/ada/cstand.ads gcc-13.1.0/gcc/ada/cstand.ads
*** gcc-12.2.0/gcc/ada/cstand.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/cstand.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/cstreams.c gcc-13.1.0/gcc/ada/cstreams.c
*** gcc-12.2.0/gcc/ada/cstreams.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/cstreams.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *              Auxiliary C functions for Interfaces.C.Streams              *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *              Auxiliary C functions for Interfaces.C.Streams              *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 46,51 ****
--- 46,52 ----
  #include <sys/types.h>
  #include <sys/stat.h>
  #include <unistd.h>
+ #include <stdlib.h>
  
  #ifdef _AIX
  /* needed to avoid conflicting declarations */
*************** extern "C" {
*** 96,109 ****
  #undef fileno
  #endif
  
- /* The _IONBF value in MINGW32 stdio.h is wrong.  */
- #if defined (WINNT) || defined (_WINNT)
- #if OLD_MINGW
- #undef _IONBF
- #define _IONBF 0004
- #endif
- #endif
- 
  int
  __gnat_feof (FILE *stream)
  {
--- 97,102 ----
*************** __gnat_full_name (char *nam, char *buffe
*** 201,219 ****
       getcwd approach instead. */
    realpath (nam, buffer);
  
- #elif defined (__QNX__)
- 
-   int length;
- 
-   if (__gnat_is_absolute_path (nam, strlen (nam)))
-     realpath (nam, buffer);
-   else
-     {
-       length = __gnat_max_path_len;
-       __gnat_get_current_dir (buffer, &length);
-       strncat (buffer, nam, __gnat_max_path_len - length - 1);
-     }
- 
  #elif defined (__vxworks)
  
    /* On VxWorks systems, an absolute path can be represented (depending on
--- 194,199 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/ctrl_c.c gcc-13.1.0/gcc/ada/ctrl_c.c
*** gcc-12.2.0/gcc/ada/ctrl_c.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ctrl_c.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2002-2022, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2002-2023, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_uninstall_int_handler (void)
*** 126,131 ****
--- 126,132 ----
  
  #elif defined (__MINGW32__)
  
+ #define WIN32_LEAN_AND_MEAN
  #include "mingw32.h"
  #include <windows.h>
  
diff -Nrcpad gcc-12.2.0/gcc/ada/debug.adb gcc-13.1.0/gcc/ada/debug.adb
*** gcc-12.2.0/gcc/ada/debug.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/debug.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Debug is
*** 142,148 ****
     --  d_a  Stop elaboration checks on accept or select statement
     --  d_b  Use designated type model under No_Dynamic_Accessibility_Checks
     --  d_c  CUDA compilation : compile for the host
!    --  d_d
     --  d_e  Ignore entry calls and requeue statements for elaboration
     --  d_f  Issue info messages related to GNATprove usage
     --  d_g  Disable large static aggregates
--- 142,148 ----
     --  d_a  Stop elaboration checks on accept or select statement
     --  d_b  Use designated type model under No_Dynamic_Accessibility_Checks
     --  d_c  CUDA compilation : compile for the host
!    --  d_d  CUDA compilation : compile for the device
     --  d_e  Ignore entry calls and requeue statements for elaboration
     --  d_f  Issue info messages related to GNATprove usage
     --  d_g  Disable large static aggregates
*************** package body Debug is
*** 156,162 ****
     --  d_o
     --  d_p  Ignore assertion pragmas for elaboration
     --  d_q
!    --  d_r
     --  d_s  Stop elaboration checks on synchronous suspension
     --  d_t  In LLVM-based CCG, dump LLVM IR after transformations are done
     --  d_u  In LLVM-based CCG, dump flows
--- 156,162 ----
     --  d_o
     --  d_p  Ignore assertion pragmas for elaboration
     --  d_q
!    --  d_r  Disable the use of the return slot in functions
     --  d_s  Stop elaboration checks on synchronous suspension
     --  d_t  In LLVM-based CCG, dump LLVM IR after transformations are done
     --  d_u  In LLVM-based CCG, dump flows
*************** package body Debug is
*** 189,195 ****
     --  d_U  Disable prepending messages with "error:".
     --  d_V  Enable verifications on the expanded tree
     --  d_W
!    --  d_X
     --  d_Y
     --  d_Z
  
--- 189,195 ----
     --  d_U  Disable prepending messages with "error:".
     --  d_V  Enable verifications on the expanded tree
     --  d_W
!    --  d_X  Disable assertions to check matching of extra formals
     --  d_Y
     --  d_Z
  
*************** package body Debug is
*** 201,207 ****
     --  d6   Default access unconstrained to thin pointers
     --  d7   Suppress version/source stamp/compilation time for -gnatv/-gnatl
     --  d8   Force opposite endianness in packed stuff
!    --  d9   Allow lock free implementation
  
     --  d.1  Enable unnesting of nested procedures
     --  d.2  Allow statements in declarative part
--- 201,207 ----
     --  d6   Default access unconstrained to thin pointers
     --  d7   Suppress version/source stamp/compilation time for -gnatv/-gnatl
     --  d8   Force opposite endianness in packed stuff
!    --  d9
  
     --  d.1  Enable unnesting of nested procedures
     --  d.2  Allow statements in declarative part
*************** package body Debug is
*** 211,217 ****
     --  d.6  Do not avoid declaring unreferenced types in C code
     --  d.7  Disable unsound heuristics in gnat2scil (for CP as SPARK prover)
     --  d.8  Disable unconditional inlining of expression functions
!    --  d.9  Disable build-in-place for nonlimited types
  
     --  d_1
     --  d_2
--- 211,217 ----
     --  d.6  Do not avoid declaring unreferenced types in C code
     --  d.7  Disable unsound heuristics in gnat2scil (for CP as SPARK prover)
     --  d.8  Disable unconditional inlining of expression functions
!    --  d.9
  
     --  d_1
     --  d_2
*************** package body Debug is
*** 345,352 ****
  
     --  d_a  Ignore the effects of pragma Elaborate_All
     --  d_b  Ignore the effects of pragma Elaborate_Body
!    --  d_c
!    --  d_d
     --  d_e  Ignore the effects of pragma Elaborate
     --  d_f
     --  d_g
--- 345,352 ----
  
     --  d_a  Ignore the effects of pragma Elaborate_All
     --  d_b  Ignore the effects of pragma Elaborate_Body
!    --  d_c  CUDA compilation : compile/bind for the host
!    --  d_d  CUDA compilation : compile/bind for the device
     --  d_e  Ignore the effects of pragma Elaborate
     --  d_f
     --  d_g
*************** package body Debug is
*** 993,998 ****
--- 993,1003 ----
     --       semantics of invariants and postconditions in both the static and
     --       dynamic elaboration models.
  
+    --  d_r  The compiler does not make use of the return slot in the expansion
+    --       of functions returning a by-reference type. If this use is required
+    --       for these functions to return on the primary stack, then they are
+    --       changed to return on the secondary stack instead.
+ 
     --  d_s  The compiler stops the examination of a task body once it reaches
     --       a call to routine Ada.Synchronous_Task_Control.Suspend_Until_True
     --       or Ada.Synchronous_Barriers.Wait_For_Release.
*************** package body Debug is
*** 1039,1044 ****
--- 1044,1053 ----
     --  d_V  Enable verification of the expanded code before calling the backend
     --       and generate error messages on each inconsistency found.
  
+    --  d_X  Disable assertions to check matching of extra formals; switch added
+    --       temporarily to disable these checks until this work is complete if
+    --       they cause unexpected assertion failures.
+ 
     --  d1   Error messages have node numbers where possible. Normally error
     --       messages have only source locations. This option is useful when
     --       debugging errors caused by expanded code, where the source location
*************** package body Debug is
*** 1084,1092 ****
     --       opposite endianness from the actual correct value. Useful in
     --       testing out code generation from the packed routines.
  
-    --  d9   This allows lock free implementation for protected objects
-    --       (see Exp_Ch9).
- 
     --  d.1  Sets Opt.Unnest_Subprogram_Mode to enable unnesting of subprograms.
     --       This special pass does not actually unnest things, but it ensures
     --       that a nested procedure does not contain any uplevel references.
--- 1093,1098 ----
*************** package body Debug is
*** 1120,1128 ****
     --       This debug flag turns off this behavior, making them subject
     --       to the usual inlining heuristics of the code generator.
  
-    --  d.9  Disable build-in-place for function calls returning nonlimited
-    --       types.
- 
     ------------------------------------------
     -- Documentation for Binder Debug Flags --
     ------------------------------------------
--- 1126,1131 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/debug.ads gcc-13.1.0/gcc/ada/debug.ads
*** gcc-12.2.0/gcc/ada/debug.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/debug.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/debug_a.adb gcc-13.1.0/gcc/ada/debug_a.adb
*** gcc-12.2.0/gcc/ada/debug_a.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/debug_a.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,30 ****
--- 25,31 ----
  
  with Atree;          use Atree;
  with Debug;          use Debug;
+ with Namet;          use Namet;
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinput;         use Sinput;
*************** with Output;         use Output;
*** 33,39 ****
  package body Debug_A is
  
     Debug_A_Depth : Natural := 0;
!    --  Output for the debug A flag is preceded by a sequence of vertical bar
     --  characters corresponding to the recursion depth of the actions being
     --  recorded (analysis, expansion, resolution and evaluation of nodes)
     --  This variable records the depth.
--- 34,40 ----
  package body Debug_A is
  
     Debug_A_Depth : Natural := 0;
!    --  Output for the -gnatda switch is preceded by a sequence of vertical bar
     --  characters corresponding to the recursion depth of the actions being
     --  recorded (analysis, expansion, resolution and evaluation of nodes)
     --  This variable records the depth.
*************** package body Debug_A is
*** 66,72 ****
  
     procedure Debug_A_Entry (S : String; N : Node_Id) is
     begin
!       --  Output debugging information if -gnatda flag set
  
        if Debug_Flag_A then
           Debug_Output_Astring;
--- 67,73 ----
  
     procedure Debug_A_Entry (S : String; N : Node_Id) is
     begin
!       --  Output debugging information if -gnatda switch set
  
        if Debug_Flag_A then
           Debug_Output_Astring;
*************** package body Debug_A is
*** 77,82 ****
--- 78,96 ----
           Write_Location (Sloc (N));
           Write_Str ("  ");
           Write_Str (Node_Kind'Image (Nkind (N)));
+ 
+          --  Print the Chars field, if appropriate
+ 
+          case Nkind (N) is
+             when N_Has_Chars =>
+                Write_Str (" """);
+                if Present (Chars (N)) then
+                   Write_Str (Get_Name_String (Chars (N)));
+                end if;
+                Write_Str ("""");
+             when others => null;
+          end case;
+ 
           Write_Eol;
        end if;
  
*************** package body Debug_A is
*** 115,121 ****
           end if;
        end loop;
  
!       --  Output debugging information if -gnatda flag set
  
        if Debug_Flag_A then
           Debug_Output_Astring;
--- 129,135 ----
           end if;
        end loop;
  
!       --  Output debugging information if -gnatda switch set
  
        if Debug_Flag_A then
           Debug_Output_Astring;
*************** package body Debug_A is
*** 132,149 ****
     --------------------------
  
     procedure Debug_Output_Astring is
-       Vbars : constant String := "|||||||||||||||||||||||||";
     begin
!       if Debug_A_Depth > Vbars'Length then
!          for I in Vbars'Length .. Debug_A_Depth loop
!             Write_Char ('|');
!          end loop;
! 
!          Write_Str (Vbars);
! 
!       else
!          Write_Str (Vbars (1 .. Debug_A_Depth));
!       end if;
     end Debug_Output_Astring;
  
  end Debug_A;
--- 146,153 ----
     --------------------------
  
     procedure Debug_Output_Astring is
     begin
!       Write_Str ((1 .. Debug_A_Depth => '|'));
     end Debug_Output_Astring;
  
  end Debug_A;
diff -Nrcpad gcc-12.2.0/gcc/ada/debug_a.ads gcc-13.1.0/gcc/ada/debug_a.ads
*** gcc-12.2.0/gcc/ada/debug_a.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/debug_a.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,29 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains data and subprograms to support the A debug switch
  --  that is used to generate output showing what node is being analyzed,
  --  resolved, evaluated, or expanded.
  
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains data and subprograms to support the -gnatda switch
  --  that is used to generate output showing what node is being analyzed,
  --  resolved, evaluated, or expanded.
  
*************** package Debug_A is
*** 44,61 ****
     --  Generates a message prefixed by a sequence of bars showing the nesting
     --  depth (depth increases by 1 for a Debug_A_Entry call and is decreased
     --  by the corresponding Debug_A_Exit call). Then the string is output
!    --  (analyzing, expanding etc), followed by the node number and its kind.
!    --  This output is generated only if the debug A flag is set. If the debug
!    --  A flag is not set, then no output is generated. This call also sets the
!    --  Node_Id value in Atree.Current_Error_Node in case a bomb occurs. This
!    --  is done unconditionally, whether or not the debug A flag is set.
  
     procedure Debug_A_Exit (S : String; N : Node_Id; Comment : String);
     pragma Inline (Debug_A_Exit);
     --  Generates the corresponding termination message. The message is preceded
     --  by a sequence of bars, followed by the string S, the node number, and
     --  a trailing comment (e.g. " (already evaluated)"). This output is
!    --  generated only if the debug A flag is set. If the debug A flag is not
     --  set, then no output is generated. This call also resets the value in
     --  Atree.Current_Error_Node to what it was before the corresponding call
     --  to Debug_A_Entry.
--- 44,61 ----
     --  Generates a message prefixed by a sequence of bars showing the nesting
     --  depth (depth increases by 1 for a Debug_A_Entry call and is decreased
     --  by the corresponding Debug_A_Exit call). Then the string is output
!    --  (analyzing, expanding etc), followed by information about the node.
!    --  This output is generated only if the -gnatda switch is set. If that
!    --  switch is not set, then no output is generated. This call also sets the
!    --  Node_Id value in Atree.Current_Error_Node in case a bomb occurs. This is
!    --  done unconditionally, whether or not the switch is set.
  
     procedure Debug_A_Exit (S : String; N : Node_Id; Comment : String);
     pragma Inline (Debug_A_Exit);
     --  Generates the corresponding termination message. The message is preceded
     --  by a sequence of bars, followed by the string S, the node number, and
     --  a trailing comment (e.g. " (already evaluated)"). This output is
!    --  generated only if the -gnatda switch is set. If that switch is not
     --  set, then no output is generated. This call also resets the value in
     --  Atree.Current_Error_Node to what it was before the corresponding call
     --  to Debug_A_Entry.
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_advice.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_advice.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_advice.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_advice.rst	Wed Apr 26 07:09:39 2023
*************** then values of the type are implicitly i
*** 353,364 ****
  happens both for objects of the packed type, and for objects that have a
  subcomponent of the packed type.
  
- 
-   "An implementation should support Address clauses for imported
-   subprograms."
- 
- Followed.
- 
  .. index:: Address clauses
  
  RM 13.3(14-19): Address Clauses
--- 353,358 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_aspects.rst	Wed Apr 26 07:09:39 2023
*************** The following is a typical example of us
*** 315,339 ****
  .. code-block:: ada
  
    type List is private with
!       Iterable => (First        => First_Cursor,
!                    Next         => Advance,
!                    Has_Element  => Cursor_Has_Element,
!                   [Element      => Get_Element]);
  
! * The value denoted by ``First`` must denote a primitive operation of the
!   container type that returns a ``Cursor``, which must a be a type declared in
    the container package or visible from it. For example:
  
  .. code-block:: ada
  
    function First_Cursor (Cont : Container) return Cursor;
  
! * The value of ``Next`` is a primitive operation of the container type that takes
!   both a container and a cursor and yields a cursor. For example:
  
  .. code-block:: ada
  
    function Advance (Cont : Container; Position : Cursor) return Cursor;
  
  * The value of ``Has_Element`` is a primitive operation of the container type
    that takes both a container and a cursor and yields a boolean. For example:
--- 315,343 ----
  .. code-block:: ada
  
    type List is private with
!       Iterable => (First       => First_Cursor,
!                    Next        => Advance,
!                    Has_Element => Cursor_Has_Element
!                  [,Element     => Get_Element]
!                  [,Last        => Last_Cursor]
!                  [,Previous    => Retreat]);
  
! * The values of ``First`` and ``Last`` are primitive operations of the
!   container type that return a ``Cursor``, which must be a type declared in
    the container package or visible from it. For example:
  
  .. code-block:: ada
  
    function First_Cursor (Cont : Container) return Cursor;
+   function Last_Cursor  (Cont : Container) return Cursor;
  
! * The values of ``Next`` and ``Previous`` are primitive operations of the container type that take
!   both a container and a cursor and yield a cursor. For example:
  
  .. code-block:: ada
  
    function Advance (Cont : Container; Position : Cursor) return Cursor;
+   function Retreat (Cont : Container; Position : Cursor) return Cursor;
  
  * The value of ``Has_Element`` is a primitive operation of the container type
    that takes both a container and a cursor and yields a boolean. For example:
*************** This aspect is equivalent to :ref:`attri
*** 418,424 ****
  
  Aspect Obsolescent
  ==================
! .. index:: Obsolsecent
  
  This aspect is equivalent to :ref:`pragma Obsolescent<Pragma_Obsolescent>`. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
--- 422,428 ----
  
  Aspect Obsolescent
  ==================
! .. index:: Obsolescent
  
  This aspect is equivalent to :ref:`pragma Obsolescent<Pragma_Obsolescent>`. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_attributes.rst	Wed Apr 26 07:09:39 2023
*************** Attribute Library_Level
*** 589,595 ****
  ``P'Library_Level``, where P is an entity name,
  returns a Boolean value which is True if the entity is declared
  at the library level, and False otherwise. Note that within a
! generic instantition, the name of the generic unit denotes the
  instance, which means that this attribute can be used to test
  if a generic is instantiated at the library level, as shown
  in this example:
--- 589,595 ----
  ``P'Library_Level``, where P is an entity name,
  returns a Boolean value which is True if the entity is declared
  at the library level, and False otherwise. Note that within a
! generic instantiation, the name of the generic unit denotes the
  instance, which means that this attribute can be used to test
  if a generic is instantiated at the library level, as shown
  in this example:
*************** in this example:
*** 606,618 ****
    end Gen;
  
  
- Attribute Lock_Free
- ===================
- .. index:: Lock_Free
- 
- ``P'Lock_Free``, where P is a protected object, returns True if a
- pragma ``Lock_Free`` applies to P.
- 
  Attribute Loop_Entry
  ====================
  .. index:: Loop_Entry
--- 606,611 ----
*************** to the value an expression had upon entr
*** 629,638 ****
  relevant loop is either identified by the given loop name, or it is the
  innermost enclosing loop when no loop name is given.
  
! A ``Loop_Entry`` attribute can only occur within a
! ``Loop_Variant`` or ``Loop_Invariant`` pragma. A common use of
! ``Loop_Entry`` is to compare the current value of objects with their
! initial value at loop entry, in a ``Loop_Invariant`` pragma.
  
  The effect of using ``X'Loop_Entry`` is the same as declaring
  a constant initialized with the initial value of ``X`` at loop
--- 622,634 ----
  relevant loop is either identified by the given loop name, or it is the
  innermost enclosing loop when no loop name is given.
  
! A ``Loop_Entry`` attribute can only occur within an ``Assert``,
! ``Assert_And_Cut``, ``Assume``, ``Loop_Variant`` or ``Loop_Invariant`` pragma.
! In addition, such a pragma must be one of the items in the sequence
! of statements of a loop body, or nested inside block statements that
! appear in the sequence of statements of a loop body.
! A common use of ``Loop_Entry`` is to compare the current value of objects with
! their initial value at loop entry, in a ``Loop_Invariant`` pragma.
  
  The effect of using ``X'Loop_Entry`` is the same as declaring
  a constant initialized with the initial value of ``X`` at loop
*************** are relaxed. Instead, the following rule
*** 1043,1049 ****
  * the enclosing machine scalar is defined as the smallest machine
    scalar starting at a position no greater than
    ``position + first_bit / storage_element_size`` and covering
!   storage elements at least up to ``position + (last_bit + storage_element_size - 1) / storage_element_size```
  * the position of the component is interpreted relative to that machine
    scalar.
  
--- 1039,1045 ----
  * the enclosing machine scalar is defined as the smallest machine
    scalar starting at a position no greater than
    ``position + first_bit / storage_element_size`` and covering
!   storage elements at least up to ``position + (last_bit + storage_element_size - 1) / storage_element_size``
  * the position of the component is interpreted relative to that machine
    scalar.
  
*************** Attribute System_Allocator_Alignment
*** 1235,1241 ****
  .. index:: System_Allocator_Alignment
  
  ``Standard'System_Allocator_Alignment`` (``Standard`` is the only
! allowed prefix) provides the observable guaranted to be honored by
  the system allocator (malloc). This is a static value that can be used
  in user storage pools based on malloc either to reject allocation
  with alignment too large or to enable a realignment circuitry if the
--- 1231,1237 ----
  .. index:: System_Allocator_Alignment
  
  ``Standard'System_Allocator_Alignment`` (``Standard`` is the only
! allowed prefix) provides the observable guaranteed to be honored by
  the system allocator (malloc). This is a static value that can be used
  in user storage pools based on malloc either to reject allocation
  with alignment too large or to enable a realignment circuitry if the
*************** Multi-dimensional arrays can be modified
*** 1627,1639 ****
  
  which changes element (1,2) to 20 and (3,4) to 30.
  
! Attribute Valid_Image
  =======================
! .. index:: Valid_Image
  
! The ``'Valid_Image`` attribute is defined for enumeration types other than
  those in package Standard. This attribute is a function that takes
! a String, and returns Boolean. ``T'Valid_Image (S)`` returns True
  if and only if ``T'Value (S)`` would not raise Constraint_Error.
  
  Attribute Valid_Scalars
--- 1623,1635 ----
  
  which changes element (1,2) to 20 and (3,4) to 30.
  
! Attribute Valid_Value
  =======================
! .. index:: Valid_Value
  
! The ``'Valid_Value`` attribute is defined for enumeration types other than
  those in package Standard. This attribute is a function that takes
! a String, and returns Boolean. ``T'Valid_Value (S)`` returns True
  if and only if ``T'Value (S)`` would not raise Constraint_Error.
  
  Attribute Valid_Scalars
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_characteristics.rst	Wed Apr 26 07:09:39 2023
*************** See separate section on source represent
*** 54,60 ****
  
  *
    "The semantics of an Ada program whose text is not in
!    Normalization Form C.  See 2.1(4)."
  
  See separate section on source representation.
  
--- 54,60 ----
  
  *
    "The semantics of an Ada program whose text is not in
!   Normalization Form C.  See 2.1(4)."
  
  See separate section on source representation.
  
*************** The Static_Predicate case is handled ana
*** 100,105 ****
--- 100,107 ----
    "The predefined integer types declared in
    ``Standard``.  See 3.5.4(25)."
  
+ .. tabularcolumns:: |l|L|
+ 
  ========================= =======================================
  Type                       Representation
  ========================= =======================================
*************** Round to even is used in all such cases.
*** 227,233 ****
  
  *
    "The maximum number of chunks for a parallel generalized iterator without
!    a chunk_specification.  See 5.5.2(10)."
  
  Feature unimplemented.
  
--- 229,235 ----
  
  *
    "The maximum number of chunks for a parallel generalized iterator without
!   a chunk_specification.  See 5.5.2(10)."
  
  Feature unimplemented.
  
*************** There are no such limits.
*** 286,292 ****
  
  *
    "The result of Calendar.Formatting.Image if its argument represents more
!    than 100 hours.  See 9.6.1(86)."
  
  Calendar.Time_Error is raised.
  
--- 288,294 ----
  
  *
    "The result of Calendar.Formatting.Image if its argument represents more
!   than 100 hours.  See 9.6.1(86)."
  
  Calendar.Time_Error is raised.
  
*************** Unsuppress match those for the second ar
*** 491,497 ****
  
  *
    "The cases that cause conflicts between the representation of the
!    ancestors of a type_declaration.  See 13.1(13.1)."
  
  No such cases exist.
  
--- 493,499 ----
  
  *
    "The cases that cause conflicts between the representation of the
!   ancestors of a type_declaration.  See 13.1(13.1)."
  
  No such cases exist.
  
*************** Directories.File_Size'Last is equal to L
*** 782,800 ****
  
  *
    "The result for Directories.Size for a directory or special file.
!    See A.16(93)."
  
  Name_Error is raised.
  
  *
    "The result for Directories.Modification_Time for a directory or special file.
!    See A.16(93)."
  
  Name_Error is raised.
  
  *
    "The interpretation of a nonnull search pattern in Directories.
!    See A.16(104)."
  
  When the ``Pattern`` parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
--- 784,802 ----
  
  *
    "The result for Directories.Size for a directory or special file.
!   See A.16(93)."
  
  Name_Error is raised.
  
  *
    "The result for Directories.Modification_Time for a directory or special file.
!   See A.16(93)."
  
  Name_Error is raised.
  
  *
    "The interpretation of a nonnull search pattern in Directories.
!   See A.16(104)."
  
  When the ``Pattern`` parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
*************** See :ref:`GNAT.Regexp_(g-regexp.ads)`.
*** 804,810 ****
  
  *
    "The results of a Directories search if the contents of the directory are
!    altered while a search is in progress.  See A.16(110)."
  
  The effect of a call to Get_Next_Entry is determined by the current
  state of the directory.
--- 806,812 ----
  
  *
    "The results of a Directories search if the contents of the directory are
!   altered while a search is in progress.  See A.16(110)."
  
  The effect of a call to Get_Next_Entry is determined by the current
  state of the directory.
*************** Containers.Count_Type'Last is 2**31 - 1.
*** 837,842 ****
--- 839,846 ----
  
  The following convention names are supported
  
+ .. tabularcolumns:: |l|L|
+ 
  ======================= ==============================================================================
  Convention Name         Interpretation
  ======================= ==============================================================================
*************** There are no such forms.
*** 972,978 ****
  
  *
    "The semantics of some attributes and functions of an entity for which
!    aspect Discard_Names is True.  See C.5(7)."
  
  If Discard_Names is True for an enumeration type, the Image attribute
  provides the image of the Pos of the literal, and Value accepts
--- 976,982 ----
  
  *
    "The semantics of some attributes and functions of an entity for which
!   aspect Discard_Names is True.  See C.5(7)."
  
  If Discard_Names is True for an enumeration type, the Image attribute
  provides the image of the Pos of the literal, and Value accepts
*************** Unknown.
*** 1126,1138 ****
  
  *
    "When restriction No_Task_Termination applies to a partition, what happens
!    when a task terminates.  See D.7(15.1)."
  
  Execution is erroneous in that case.
  
  *
    "The behavior when restriction Max_Storage_At_Blocking is violated.
!    See D.7(17)."
  
  Execution is erroneous in that case.
  
--- 1130,1142 ----
  
  *
    "When restriction No_Task_Termination applies to a partition, what happens
!   when a task terminates.  See D.7(15.1)."
  
  Execution is erroneous in that case.
  
  *
    "The behavior when restriction Max_Storage_At_Blocking is violated.
!   See D.7(17)."
  
  Execution is erroneous in that case.
  
*************** Execution is erroneous in that case.
*** 1148,1157 ****
  Execution is erroneous in that case.
  
  * "Whether the use of pragma Restrictions results in a reduction in program
!    code or data size or execution time.  See D.7(20)."
  
!    Yes it can, but the precise circumstances and properties of such reductions
!    are difficult to characterize.
  
  *
    "The value of Barrier_Limit'Last in Synchronous_Barriers.  See D.10.1(4)."
--- 1152,1161 ----
  Execution is erroneous in that case.
  
  * "Whether the use of pragma Restrictions results in a reduction in program
!   code or data size or execution time.  See D.7(20)."
  
!   Yes it can, but the precise circumstances and properties of such reductions
!   are difficult to characterize.
  
  *
    "The value of Barrier_Limit'Last in Synchronous_Barriers.  See D.10.1(4)."
*************** Difficult to characterize.
*** 1166,1172 ****
  
  *
    "The value of Min_Handler_Ceiling in Execution_Time.Group_Budgets.
!    See D.14.2(7)."
  
  See source file :file:`a-etgrbu.ads`.
  
--- 1170,1176 ----
  
  *
    "The value of Min_Handler_Ceiling in Execution_Time.Group_Budgets.
!   See D.14.2(7)."
  
  See source file :file:`a-etgrbu.ads`.
  
*************** a distributed application.
*** 1211,1217 ****
  *
    "The range of type System.RPC.Partition_Id.  See E.5(14)."
  
! System.RPC.Partion_ID'Last is Integer'Last. See source file :file:`s-rpc.ads`.
  
  *
    "Implementation-defined interfaces in the PCS.  See E.5(26)."
--- 1215,1221 ----
  *
    "The range of type System.RPC.Partition_Id.  See E.5(14)."
  
! System.RPC.Partition_ID'Last is Integer'Last. See source file :file:`s-rpc.ads`.
  
  *
    "Implementation-defined interfaces in the PCS.  See E.5(26)."
*************** Named Number         Value
*** 1237,1249 ****
    "The value of ``Max_Picture_Length`` in the package
    ``Text_IO.Editing``.  See F.3.3(16)."
  
! 64
  
  *
    "The value of ``Max_Picture_Length`` in the package
    ``Wide_Text_IO.Editing``.  See F.3.4(5)."
  
! 64
  
  *
    "The accuracy actually achieved by the complex elementary
--- 1241,1253 ----
    "The value of ``Max_Picture_Length`` in the package
    ``Text_IO.Editing``.  See F.3.3(16)."
  
!   64
  
  *
    "The value of ``Max_Picture_Length`` in the package
    ``Wide_Text_IO.Editing``.  See F.3.4(5)."
  
!   64
  
  *
    "The accuracy actually achieved by the complex elementary
*************** Information on those subjects is not yet
*** 1368,1382 ****
  
  *
    "The accuracy requirements for the subprograms Solve, Inverse,
!    Determinant, Eigenvalues and Eigensystem for type Real_Matrix.
!    See G.3.1(81)."
  
  Information on those subjects is not yet available.
  
  *
    "The accuracy requirements for the subprograms Solve, Inverse,
!    Determinant, Eigenvalues and Eigensystem for type Complex_Matrix.
!    See G.3.2(149)."
  
  Information on those subjects is not yet available.
  
--- 1372,1386 ----
  
  *
    "The accuracy requirements for the subprograms Solve, Inverse,
!   Determinant, Eigenvalues and Eigensystem for type Real_Matrix.
!   See G.3.1(81)."
  
  Information on those subjects is not yet available.
  
  *
    "The accuracy requirements for the subprograms Solve, Inverse,
!   Determinant, Eigenvalues and Eigensystem for type Complex_Matrix.
!   See G.3.2(149)."
  
  Information on those subjects is not yet available.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_defined_pragmas.rst	Wed Apr 26 07:09:39 2023
*************** Syntax:
*** 90,100 ****
      | (EXTERNAL_PROPERTY {, EXTERNAL_PROPERTY} )
  
    EXTERNAL_PROPERTY ::=
!       Async_Readers    [=> boolean_EXPRESSION]
!     | Async_Writers    [=> boolean_EXPRESSION]
!     | Effective_Reads  [=> boolean_EXPRESSION]
!     | Effective_Writes [=> boolean_EXPRESSION]
!       others            => boolean_EXPRESSION
  
    STATE_NAME ::= defining_identifier
  
--- 90,100 ----
      | (EXTERNAL_PROPERTY {, EXTERNAL_PROPERTY} )
  
    EXTERNAL_PROPERTY ::=
!       Async_Readers    [=> static_boolean_EXPRESSION]
!     | Async_Writers    [=> static_boolean_EXPRESSION]
!     | Effective_Reads  [=> static_boolean_EXPRESSION]
!     | Effective_Writes [=> static_boolean_EXPRESSION]
!       others            => static_boolean_EXPRESSION
  
    STATE_NAME ::= defining_identifier
  
*************** Syntax:
*** 233,238 ****
--- 233,268 ----
  This configuration pragma is a synonym for pragma Ada_12 and has the
  same syntax and effect.
  
+ Pragma Ada_2022
+ ===============
+ 
+ Syntax:
+ 
+ .. code-block:: ada
+ 
+   pragma Ada_2022;
+   pragma Ada_2022 (local_NAME);
+ 
+ 
+ A configuration pragma that establishes Ada 2022 mode for the unit to which
+ it applies, regardless of the mode set by the command line switches.
+ This mode is set automatically for the ``Ada`` and ``System``
+ packages and their children, so you need not specify it in these
+ contexts.  This pragma is useful when writing a reusable component that
+ itself uses Ada 2022 features, but which is intended to be usable from
+ Ada 83, Ada 95, Ada 2005 or Ada 2012 programs.
+ 
+ The one argument form, which is not a configuration pragma,
+ is used for managing the transition from Ada
+ 2012 to Ada 2022 in the run-time library. If an entity is marked
+ as Ada_2022 only, then referencing the entity in any pre-Ada_2022
+ mode will generate a warning. In addition, in any pre-Ada_2012
+ mode, a preference rule is established which does not choose
+ such an entity unless it is unambiguously specified. This avoids
+ extra subprograms marked this way from generating ambiguities in
+ otherwise legal pre-Ada_2022 programs. The one argument form is
+ intended for exclusive use in the GNAT run-time library.
+ 
  Pragma Aggregate_Individually_Assign
  ====================================
  
*************** applies to both the ``Precondition`` pra
*** 478,484 ****
  and the aspect ``Precondition``. Note that the identifiers for
  pragmas Pre_Class and Post_Class are Pre'Class and Post'Class (not
  Pre_Class and Post_Class), since these pragmas are intended to be
! identical to the corresponding aspects).
  
  If the policy is ``CHECK``, then assertions are enabled, i.e.
  the corresponding pragma or aspect is activated.
--- 508,514 ----
  and the aspect ``Precondition``. Note that the identifiers for
  pragmas Pre_Class and Post_Class are Pre'Class and Post'Class (not
  Pre_Class and Post_Class), since these pragmas are intended to be
! identical to the corresponding aspects.
  
  If the policy is ``CHECK``, then assertions are enabled, i.e.
  the corresponding pragma or aspect is activated.
*************** Syntax:
*** 600,606 ****
  
  .. code-block:: ada
  
!   pragma Async_Readers [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Async_Readers`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
--- 630,636 ----
  
  .. code-block:: ada
  
!   pragma Async_Readers [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Async_Readers`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
*************** Syntax:
*** 614,620 ****
  
  .. code-block:: ada
  
!   pragma Async_Writers [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Async_Writers`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
--- 644,650 ----
  
  .. code-block:: ada
  
!   pragma Async_Writers [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Async_Writers`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
*************** Syntax:
*** 1132,1138 ****
  
  .. code-block:: ada
  
!   pragma Constant_After_Elaboration [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect
  ``Constant_After_Elaboration`` in the SPARK 2014 Reference Manual, section 3.3.1.
--- 1162,1168 ----
  
  .. code-block:: ada
  
!   pragma Constant_After_Elaboration [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect
  ``Constant_After_Elaboration`` in the SPARK 2014 Reference Manual, section 3.3.1.
*************** Syntax:
*** 1147,1153 ****
  
  .. code-block:: ada
  
!   pragma Contract_Cases ((CONTRACT_CASE {, CONTRACT_CASE));
  
    CONTRACT_CASE ::= CASE_GUARD => CONSEQUENCE
  
--- 1177,1183 ----
  
  .. code-block:: ada
  
!   pragma Contract_Cases (CONTRACT_CASE {, CONTRACT_CASE});
  
    CONTRACT_CASE ::= CASE_GUARD => CONSEQUENCE
  
*************** Pragma CPP_Virtual
*** 1359,1365 ****
  This pragma is now obsolete and, other than generating a warning if warnings
  on obsolescent features are enabled, is completely ignored.
  It is retained for compatibility
! purposes. It used to be required to ensure compoatibility with C++, but
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
--- 1389,1395 ----
  This pragma is now obsolete and, other than generating a warning if warnings
  on obsolescent features are enabled, is completely ignored.
  It is retained for compatibility
! purposes. It used to be required to ensure compatibility with C++, but
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
*************** This pragma applies only to protected ty
*** 1408,1427 ****
  deadline inherited by a task when the task enters a protected object.
  It is effective only when the EDF scheduling policy is used.
  
- .. _Pragma-Default_Initial_Condition:
- 
- Pragma Default_Initial_Condition
- ================================
- 
- Syntax:
- 
- .. code-block:: ada
- 
-   pragma Default_Initial_Condition [ (null | boolean_EXPRESSION) ];
- 
- For the semantics of this pragma, see the entry for aspect
- ``Default_Initial_Condition`` in the SPARK 2014 Reference Manual, section 7.3.3.
- 
  Pragma Debug
  ============
  
--- 1438,1443 ----
*************** This pragma is equivalent to a correspon
*** 1465,1470 ****
--- 1481,1500 ----
  with a first argument of ``Debug``. It is retained for historical
  compatibility reasons.
  
+ .. _Pragma-Default_Initial_Condition:
+ 
+ Pragma Default_Initial_Condition
+ ================================
+ 
+ Syntax:
+ 
+ .. code-block:: ada
+ 
+   pragma Default_Initial_Condition [ (null | boolean_EXPRESSION) ];
+ 
+ For the semantics of this pragma, see the entry for aspect
+ ``Default_Initial_Condition`` in the SPARK 2014 Reference Manual, section 7.3.3.
+ 
  Pragma Default_Scalar_Storage_Order
  ===================================
  .. index:: Default_Scalar_Storage_Order
*************** Syntax:
*** 1656,1662 ****
  
  .. code-block:: ada
  
!   pragma Effective_Reads [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Effective_Reads`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
--- 1686,1692 ----
  
  .. code-block:: ada
  
!   pragma Effective_Reads [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Effective_Reads`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
*************** Syntax:
*** 1670,1676 ****
  
  .. code-block:: ada
  
!   pragma Effective_Writes [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Effective_Writes``
  in the SPARK 2014 Reference Manual, section 7.1.2.
--- 1700,1706 ----
  
  .. code-block:: ada
  
!   pragma Effective_Writes [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Effective_Writes``
  in the SPARK 2014 Reference Manual, section 7.1.2.
*************** The pragma has the following semantics,
*** 1735,1761 ****
  the ``Unit_Name`` argument and ``E`` is the entity specified by the ``Entity``
  argument:
  
! *  ``E`` must be a subprogram that is explicitly declared either:
! 
!    o  Within ``U``, or
! 
!    o  Within a generic package that is instantiated in ``U``, or
! 
!    o  As an instance of generic subprogram instantiated in ``U``.
! 
!    Otherwise the pragma is ignored.
  
! *  If ``E`` is overloaded within ``U`` then, in the absence of a
!    ``Source_Location`` argument, all overloadings are eliminated.
  
! *  If ``E`` is overloaded within ``U`` and only some overloadings
!    are to be eliminated, then each overloading to be eliminated
!    must be specified in a corresponding pragma ``Eliminate``
!    with a ``Source_Location`` argument identifying the line where the
!    declaration appears, as described below.
  
! *  If ``E`` is declared as the result of a generic instantiation, then
!    a ``Source_Location`` argument is needed, as described below
  
  Pragma ``Eliminate`` allows a program to be compiled in a system-independent
  manner, so that unused entities are eliminated but without
--- 1765,1787 ----
  the ``Unit_Name`` argument and ``E`` is the entity specified by the ``Entity``
  argument:
  
! * ``E`` must be a subprogram that is explicitly declared either:
  
!   * Within ``U``, or
!   * Within a generic package that is instantiated in ``U``, or
!   * As an instance of generic subprogram instantiated in ``U``.
  
!   Otherwise the pragma is ignored.
  
! * If ``E`` is overloaded within ``U`` then, in the absence of a
!   ``Source_Location`` argument, all overloadings are eliminated.
! * If ``E`` is overloaded within ``U`` and only some overloadings
!   are to be eliminated, then each overloading to be eliminated
!   must be specified in a corresponding pragma ``Eliminate``
!   with a ``Source_Location`` argument identifying the line where the
!   declaration appears, as described below.
! * If ``E`` is declared as the result of a generic instantiation, then
!   a ``Source_Location`` argument is needed, as described below.
  
  Pragma ``Eliminate`` allows a program to be compiled in a system-independent
  manner, so that unused entities are eliminated but without
*************** Syntax:
*** 1959,1968 ****
  
  ::
  
!   pragma Export_Object
          [Internal =>] LOCAL_NAME
       [, [External =>] EXTERNAL_SYMBOL]
!      [, [Size     =>] EXTERNAL_SYMBOL]
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
--- 1985,1994 ----
  
  ::
  
!   pragma Export_Object (
          [Internal =>] LOCAL_NAME
       [, [External =>] EXTERNAL_SYMBOL]
!      [, [Size     =>] EXTERNAL_SYMBOL]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
*************** Syntax:
*** 2148,2163 ****
  
  .. code-block:: ada
  
!   pragma Extensions_Allowed (On | Off);
  
  
! This configuration pragma enables or disables the implementation
! extension mode (the use of Off as a parameter cancels the effect
! of the *-gnatX* command switch).
  
! In extension mode, the latest version of the Ada language is
! implemented (currently Ada 2022), and in addition a number
! of GNAT specific extensions are recognized as follows:
  
  * Constrained attribute for generic objects
  
--- 2174,2192 ----
  
  .. code-block:: ada
  
!   pragma Extensions_Allowed (On | Off | All);
  
  
! This configuration pragma enables (via the "On" or "All" argument) or disables
! (via the "Off" argument) the implementation extension mode; the pragma takes
! precedence over the *-gnatX* and *-gnatX0* command switches.
  
! If an argument of "All" is specified, the latest version of the Ada language
! is implemented (currently Ada 2022) and, in addition, a number
! of GNAT specific extensions are recognized. These extensions are listed
! below. An argument of "On" has the same effect except that only
! some, not all, of the listed extensions are enabled; those extensions
! are identified below.
  
  * Constrained attribute for generic objects
  
*************** of GNAT specific extensions are recogniz
*** 2171,2180 ****
    functions and the compiler will evaluate some of these intrinsic statically,
    in particular the ``Shift_Left`` and ``Shift_Right`` intrinsics.
  
! * ``'Reduce`` attribute
! 
!   This attribute part of the Ada 202x language definition is provided for
!   now under -gnatX to confirm and potentially refine its usage and syntax.
  
  * ``[]`` aggregates
  
--- 2200,2206 ----
    functions and the compiler will evaluate some of these intrinsic statically,
    in particular the ``Shift_Left`` and ``Shift_Right`` intrinsics.
  
!   An Extensions_Allowed pragma argument of "On" enables this extension.
  
  * ``[]`` aggregates
  
*************** of GNAT specific extensions are recogniz
*** 2236,2242 ****
    will not be executed if the earlier alternative "matches"). All possible
    values of the composite type shall be covered. The composite type of the
    selector shall be an array or record type that is neither limited
!   class-wide.
  
    If a subcomponent's subtype does not meet certain restrictions, then
    the only value that can be specified for that subcomponent in a case
--- 2262,2269 ----
    will not be executed if the earlier alternative "matches"). All possible
    values of the composite type shall be covered. The composite type of the
    selector shall be an array or record type that is neither limited
!   class-wide. Currently, a "when others =>" case choice is required; it is
!   intended that this requirement will be relaxed at some point.
  
    If a subcomponent's subtype does not meet certain restrictions, then
    the only value that can be specified for that subcomponent in a case
*************** of GNAT specific extensions are recogniz
*** 2307,2312 ****
--- 2334,2341 ----
    for a given identifer must all statically match. Currently, the case
    of a binding for a nondiscrete component is not implemented.
  
+   An Extensions_Allowed pragma argument of "On" enables this extension.
+ 
  * Fixed lower bounds for array types and subtypes
  
    Unconstrained array types and subtypes can be specified with a lower bound
*************** of GNAT specific extensions are recogniz
*** 2351,2356 ****
--- 2380,2387 ----
    knows the lower bound of unconstrained array formals when the formal's
    subtype has index ranges with static fixed lower bounds.
  
+   An Extensions_Allowed pragma argument of "On" enables this extension.
+ 
  * Prefixed-view notation for calls to primitive subprograms of untagged types
  
    Since Ada 2005, calls to primitive subprograms of a tagged type that
*************** of GNAT specific extensions are recogniz
*** 2368,2373 ****
--- 2399,2406 ----
    name, preference is given to the component in a selected_component
    (as is currently the case for tagged types with such component names).
  
+   An Extensions_Allowed pragma argument of "On" enables this extension.
+ 
  * Expression defaults for generic formal functions
  
    The declaration of a generic formal function is allowed to specify
*************** Syntax:
*** 2401,2407 ****
  
  .. code-block:: ada
  
!   pragma Extensions_Visible [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Extensions_Visible``
  in the SPARK 2014 Reference Manual, section 6.1.7.
--- 2434,2440 ----
  
  .. code-block:: ada
  
!   pragma Extensions_Visible [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Extensions_Visible``
  in the SPARK 2014 Reference Manual, section 6.1.7.
*************** Syntax:
*** 2615,2621 ****
  
  .. code-block:: ada
  
!   pragma Ghost [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Ghost`` in the SPARK
  2014 Reference Manual, section 6.9.
--- 2648,2654 ----
  
  .. code-block:: ada
  
!   pragma Ghost [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Ghost`` in the SPARK
  2014 Reference Manual, section 6.9.
*************** Syntax:
*** 2821,2832 ****
  ::
  
    pragma Import_Function (
!        [Internal                 =>] LOCAL_NAME,
!     [, [External                 =>] EXTERNAL_SYMBOL]
!     [, [Parameter_Types          =>] PARAMETER_TYPES]
!     [, [Result_Type              =>] SUBTYPE_MARK]
!     [, [Mechanism                =>] MECHANISM]
!     [, [Result_Mechanism         =>] MECHANISM_NAME]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
--- 2854,2865 ----
  ::
  
    pragma Import_Function (
!        [Internal         =>] LOCAL_NAME,
!     [, [External         =>] EXTERNAL_SYMBOL]
!     [, [Parameter_Types  =>] PARAMETER_TYPES]
!     [, [Result_Type      =>] SUBTYPE_MARK]
!     [, [Mechanism        =>] MECHANISM]
!     [, [Result_Mechanism =>] MECHANISM_NAME]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
*************** Syntax:
*** 2885,2891 ****
  
  ::
  
!   pragma Import_Object
         [Internal =>] LOCAL_NAME
      [, [External =>] EXTERNAL_SYMBOL]
      [, [Size     =>] EXTERNAL_SYMBOL]);
--- 2918,2924 ----
  
  ::
  
!   pragma Import_Object (
         [Internal =>] LOCAL_NAME
      [, [External =>] EXTERNAL_SYMBOL]
      [, [Size     =>] EXTERNAL_SYMBOL]);
*************** Syntax:
*** 2912,2921 ****
  ::
  
    pragma Import_Procedure (
!        [Internal                 =>] LOCAL_NAME
!     [, [External                 =>] EXTERNAL_SYMBOL]
!     [, [Parameter_Types          =>] PARAMETER_TYPES]
!     [, [Mechanism                =>] MECHANISM]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
--- 2945,2954 ----
  ::
  
    pragma Import_Procedure (
!        [Internal        =>] LOCAL_NAME
!     [, [External        =>] EXTERNAL_SYMBOL]
!     [, [Parameter_Types =>] PARAMETER_TYPES]
!     [, [Mechanism       =>] MECHANISM]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
*************** Syntax:
*** 2952,2961 ****
  ::
  
    pragma Import_Valued_Procedure (
!        [Internal                 =>] LOCAL_NAME
!     [, [External                 =>] EXTERNAL_SYMBOL]
!     [, [Parameter_Types          =>] PARAMETER_TYPES]
!     [, [Mechanism                =>] MECHANISM]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
--- 2985,2994 ----
  ::
  
    pragma Import_Valued_Procedure (
!        [Internal        =>] LOCAL_NAME
!     [, [External        =>] EXTERNAL_SYMBOL]
!     [, [Parameter_Types =>] PARAMETER_TYPES]
!     [, [Mechanism       =>] MECHANISM]);
  
    EXTERNAL_SYMBOL ::=
      IDENTIFIER
*************** with some extended implementations of th
*** 3235,3241 ****
  implementations.  The only difference between pragma ``Interface``
  and pragma ``Import`` is that there is special circuitry to allow
  both pragmas to appear for the same subprogram entity (normally it
! is illegal to have multiple ``Import`` pragmas. This is useful in
  maintaining Ada 83/Ada 95 compatibility and is compatible with other
  Ada 83 compilers.
  
--- 3268,3274 ----
  implementations.  The only difference between pragma ``Interface``
  and pragma ``Import`` is that there is special circuitry to allow
  both pragmas to appear for the same subprogram entity (normally it
! is illegal to have multiple ``Import`` pragmas). This is useful in
  maintaining Ada 83/Ada 95 compatibility and is compatible with other
  Ada 83 compilers.
  
*************** In addition, each protected subprogram b
*** 3717,3731 ****
  
  * May reference only one protected component
  * May not reference nonconstant entities outside the protected subprogram
!   scope.
  * May not contain address representation items, allocators, or quantified
!   expressions.
! * May not contain delay, goto, loop, or procedure-call statements.
  * May not contain exported and imported entities
  * May not dereferenced access values
  * Function calls and attribute references must be static
  
! 
  Pragma Loop_Invariant
  =====================
  
--- 3750,3769 ----
  
  * May reference only one protected component
  * May not reference nonconstant entities outside the protected subprogram
!   scope
  * May not contain address representation items, allocators, or quantified
!   expressions
! * May not contain delay, goto, loop, or procedure-call statements
  * May not contain exported and imported entities
  * May not dereferenced access values
  * Function calls and attribute references must be static
  
! If the Lock_Free aspect is specified to be True for a protected unit
! and the Ceiling_Locking locking policy is in effect, then the run-time
! actions associated with the Ceiling_Locking locking policy (described in
! Ada RM D.3) are not performed when a protected operation of the protected
! unit is executed.
!   
  Pragma Loop_Invariant
  =====================
  
*************** decrease or increase in successive itera
*** 3834,3840 ****
  form, just one expression is specified, whose value must increase or decrease
  on each iteration of the loop.
  
! In a more complex form, multiple arguments can be given which are intepreted
  in a nesting lexicographic manner. For example:
  
  .. code-block:: ada
--- 3872,3878 ----
  form, just one expression is specified, whose value must increase or decrease
  on each iteration of the loop.
  
! In a more complex form, multiple arguments can be given which are interpreted
  in a nesting lexicographic manner. For example:
  
  .. code-block:: ada
*************** Syntax:
*** 3969,3975 ****
  
  .. code-block:: ada
  
!   pragma No_Caching [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``No_Caching`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
--- 4007,4013 ----
  
  .. code-block:: ada
  
!   pragma No_Caching [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``No_Caching`` in
  the SPARK 2014 Reference Manual, section 7.1.2.
*************** Syntax:
*** 4249,4260 ****
  
    pragma Obsolescent (
      [Message =>] static_string_EXPRESSION
!   [,[Version =>] Ada_05]]);
  
    pragma Obsolescent (
      [Entity  =>] NAME
    [,[Message =>] static_string_EXPRESSION
!   [,[Version =>] Ada_05]] );
  
  
  This pragma can occur immediately following a declaration of an entity,
--- 4287,4298 ----
  
    pragma Obsolescent (
      [Message =>] static_string_EXPRESSION
!   [,[Version =>] Ada_05]);
  
    pragma Obsolescent (
      [Entity  =>] NAME
    [,[Message =>] static_string_EXPRESSION
!   [,[Version =>] Ada_05]]);
  
  
  This pragma can occur immediately following a declaration of an entity,
*************** even though
*** 4602,4607 ****
--- 4640,4661 ----
  RM 8.3 (15) stipulates that an overridden operation is not visible within the
  declaration of the overriding operation.
  
+ .. _Pragma-Part_Of:
+ 
+ Pragma Part_Of
+ ==============
+ 
+ Syntax:
+ 
+ .. code-block:: ada
+ 
+   pragma Part_Of (ABSTRACT_STATE);
+ 
+   ABSTRACT_STATE ::= NAME
+ 
+ For the semantics of this pragma, see the entry for aspect ``Part_Of`` in the
+ SPARK 2014 Reference Manual, section 7.2.6.
+ 
  Pragma Partition_Elaboration_Policy
  ===================================
  
*************** This pragma is standard in Ada 2005, but
*** 4619,4640 ****
  versions of Ada as an implementation-defined pragma.
  See Ada 2012 Reference Manual for details.
  
- .. _Pragma-Part_Of:
- 
- Pragma Part_Of
- ==============
- 
- Syntax:
- 
- .. code-block:: ada
- 
-   pragma Part_Of (ABSTRACT_STATE);
- 
-   ABSTRACT_STATE ::= NAME
- 
- For the semantics of this pragma, see the entry for aspect ``Part_Of`` in the
- SPARK 2014 Reference Manual, section 7.2.6.
- 
  Pragma Passive
  ==============
  
--- 4673,4678 ----
*************** appear at the start of the declarations
*** 4915,4921 ****
  Note: This pragma is called ``Post_Class`` rather than
  ``Post'Class`` because the latter would not be strictly
  conforming to the allowed syntax for pragmas. The motivation
! for provinding pragmas equivalent to the aspects is to allow a program
  to be written using the pragmas, and then compiled if necessary
  using an Ada compiler that does not recognize the pragmas or
  aspects, but is prepared to ignore the pragmas. The assertion
--- 4953,4959 ----
  Note: This pragma is called ``Post_Class`` rather than
  ``Post'Class`` because the latter would not be strictly
  conforming to the allowed syntax for pragmas. The motivation
! for providing pragmas equivalent to the aspects is to allow a program
  to be written using the pragmas, and then compiled if necessary
  using an Ada compiler that does not recognize the pragmas or
  aspects, but is prepared to ignore the pragmas. The assertion
*************** overloaded declaration exists, in which
*** 5478,5486 ****
  to all entities).  It specifies that the function ``Entity`` is
  to be considered pure for the purposes of code generation.  This means
  that the compiler can assume that there are no side effects, and
! in particular that two calls with identical arguments produce the
! same result.  It also means that the function can be used in an
! address clause.
  
  Note that, quite deliberately, there are no static checks to try
  to ensure that this promise is met, so ``Pure_Function`` can be used
--- 5516,5524 ----
  to all entities).  It specifies that the function ``Entity`` is
  to be considered pure for the purposes of code generation.  This means
  that the compiler can assume that there are no side effects, and
! in particular that two identical calls produce the same result in
! the same context. It also means that the function can be used in
! an address clause.
  
  Note that, quite deliberately, there are no static checks to try
  to ensure that this promise is met, so ``Pure_Function`` can be used
*************** Syntax:
*** 6005,6011 ****
  
  .. code-block:: ada
  
!   pragma Short_Descriptors
  
  
  This pragma is provided for compatibility with other Ada implementations. It
--- 6043,6049 ----
  
  .. code-block:: ada
  
!   pragma Short_Descriptors;
  
  
  This pragma is provided for compatibility with other Ada implementations. It
*************** Syntax:
*** 6095,6106 ****
  ::
  
    pragma Source_File_Name (
!     [Unit_Name   =>] unit_NAME,
      Spec_File_Name =>  STRING_LITERAL,
      [Index => INTEGER_LITERAL]);
  
    pragma Source_File_Name (
!     [Unit_Name   =>] unit_NAME,
      Body_File_Name =>  STRING_LITERAL,
      [Index => INTEGER_LITERAL]);
  
--- 6133,6144 ----
  ::
  
    pragma Source_File_Name (
!     [Unit_Name     =>] unit_NAME,
      Spec_File_Name =>  STRING_LITERAL,
      [Index => INTEGER_LITERAL]);
  
    pragma Source_File_Name (
!     [Unit_Name     =>] unit_NAME,
      Body_File_Name =>  STRING_LITERAL,
      [Index => INTEGER_LITERAL]);
  
*************** Syntax:
*** 6108,6114 ****
  Use this to override the normal naming convention.  It is a configuration
  pragma, and so has the usual applicability of configuration pragmas
  (i.e., it applies to either an entire partition, or to all units in a
! compilation, or to a single unit, depending on how it is used.
  ``unit_name`` is mapped to ``file_name_literal``.  The identifier for
  the second argument is required, and indicates whether this is the file
  name for the spec or for the body.
--- 6146,6152 ----
  Use this to override the normal naming convention.  It is a configuration
  pragma, and so has the usual applicability of configuration pragmas
  (i.e., it applies to either an entire partition, or to all units in a
! compilation, or to a single unit, depending on how it is used).
  ``unit_name`` is mapped to ``file_name_literal``.  The identifier for
  the second argument is required, and indicates whether this is the file
  name for the spec or for the body.
*************** replacement of any dots in the unit name
*** 6181,6187 ****
  
  Note that Source_File_Name pragmas should not be used if you are using
  project files. The reason for this rule is that the project manager is not
! aware of these pragmas, and so other tools that use the projet file would not
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
--- 6219,6225 ----
  
  Note that Source_File_Name pragmas should not be used if you are using
  project files. The reason for this rule is that the project manager is not
! aware of these pragmas, and so other tools that use the project file would not
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
*************** Syntax:
*** 6837,6843 ****
  This pragma specifies that the specified entity, which must be
  a variable declared in a library-level package, is to be marked as
  "Thread Local Storage" (``TLS``). On systems supporting this (which
! include Windows, Solaris, GNU/Linux, and VxWorks 6), this causes each
  thread (and hence each Ada task) to see a distinct copy of the variable.
  
  The variable must not have default initialization, and if there is
--- 6875,6881 ----
  This pragma specifies that the specified entity, which must be
  a variable declared in a library-level package, is to be marked as
  "Thread Local Storage" (``TLS``). On systems supporting this (which
! include Windows, Solaris, GNU/Linux, and VxWorks), this causes each
  thread (and hence each Ada task) to see a distinct copy of the variable.
  
  The variable must not have default initialization, and if there is
*************** be.
*** 7093,7099 ****
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use ``pragma Unmodified`` for such
  variables, though it is harmless to do so.
--- 7131,7137 ----
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! ``DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use ``pragma Unmodified`` for such
  variables, though it is harmless to do so.
*************** for this purpose, see :ref:`Pragma_Obsol
*** 7150,7156 ****
  The second form of pragma ``Unreferenced`` is used within a context
  clause. In this case the arguments must be unit names of units previously
  mentioned in ``with`` clauses (similar to the usage of pragma
! ``Elaborate_All``. The effect is to suppress warnings about unreferenced
  units and unreferenced entities within these units.
  
  For the variable case, warnings are never given for unreferenced variables
--- 7188,7194 ----
  The second form of pragma ``Unreferenced`` is used within a context
  clause. In this case the arguments must be unit names of units previously
  mentioned in ``with`` clauses (similar to the usage of pragma
! ``Elaborate_All``). The effect is to suppress warnings about unreferenced
  units and unreferenced entities within these units.
  
  For the variable case, warnings are never given for unreferenced variables
*************** configuration pragma will ensure this te
*** 7255,7287 ****
  This pragma is standard in Ada 2005. It is available in all earlier versions
  of Ada as an implementation-defined pragma.
  
! Note that in addition to the checks defined in the Ada RM, GNAT recogizes a
  number of implementation-defined check names. See the description of pragma
  ``Suppress`` for full details.
  
- Pragma Use_VADS_Size
- ====================
- .. index:: Size, VADS compatibility
- 
- .. index:: Rational profile
- 
- 
- Syntax:
- 
- 
- .. code-block:: ada
- 
-   pragma Use_VADS_Size;
- 
- 
- This is a configuration pragma.  In a unit to which it applies, any use
- of the 'Size attribute is automatically interpreted as a use of the
- 'VADS_Size attribute.  Note that this may result in incorrect semantic
- processing of valid Ada 95 or Ada 2005 programs.  This is intended to aid in
- the handling of existing code which depends on the interpretation of Size
- as implemented in the VADS compiler.  See description of the VADS_Size
- attribute for further details.
- 
  .. _Pragma-Unused:
  
  Pragma Unused
--- 7293,7302 ----
  This pragma is standard in Ada 2005. It is available in all earlier versions
  of Ada as an implementation-defined pragma.
  
! Note that in addition to the checks defined in the Ada RM, GNAT recognizes a
  number of implementation-defined check names. See the description of pragma
  ``Suppress`` for full details.
  
  .. _Pragma-Unused:
  
  Pragma Unused
*************** For the variable case, warnings are neve
*** 7313,7321 ****
  variables whose name contains one of the substrings
  ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
! Thus it is never necessary to use ``pragma Unmodified`` for such
  variables, though it is harmless to do so.
  
  Pragma Validity_Checks
  ======================
  
--- 7328,7359 ----
  variables whose name contains one of the substrings
  ``DISCARD, DUMMY, IGNORE, JUNK, UNUSED`` in any casing. Such names
  are typically to be used in cases where such warnings are expected.
! Thus it is never necessary to use ``pragma Unused`` for such
  variables, though it is harmless to do so.
  
+ Pragma Use_VADS_Size
+ ====================
+ .. index:: Size, VADS compatibility
+ 
+ .. index:: Rational profile
+ 
+ 
+ Syntax:
+ 
+ 
+ .. code-block:: ada
+ 
+   pragma Use_VADS_Size;
+ 
+ 
+ This is a configuration pragma.  In a unit to which it applies, any use
+ of the 'Size attribute is automatically interpreted as a use of the
+ 'VADS_Size attribute.  Note that this may result in incorrect semantic
+ processing of valid Ada 95 or Ada 2005 programs.  This is intended to aid in
+ the handling of existing code which depends on the interpretation of Size
+ as implemented in the VADS compiler.  See description of the VADS_Size
+ attribute for further details.
+ 
  Pragma Validity_Checks
  ======================
  
*************** Syntax:
*** 7430,7436 ****
  
  .. code-block:: ada
  
!   pragma Volatile_Function [ (boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Volatile_Function``
  in the SPARK 2014 Reference Manual, section 7.1.2.
--- 7468,7474 ----
  
  .. code-block:: ada
  
!   pragma Volatile_Function [ (static_boolean_EXPRESSION) ];
  
  For the semantics of this pragma, see the entry for aspect ``Volatile_Function``
  in the SPARK 2014 Reference Manual, section 7.1.2.
*************** expression (which does not exist in Ada
*** 7556,7562 ****
  Note if the second argument of ``DETAILS`` is a ``local_NAME`` then the
  second form is always understood. If the intention is to use
  the fourth form, then you can write ``NAME & ""`` to force the
! intepretation as a *static_string_EXPRESSION*.
  
  Note: if the first argument is a valid ``TOOL_NAME``, it will be interpreted
  that way. The use of the ``TOOL_NAME`` argument is relevant only to users
--- 7594,7600 ----
  Note if the second argument of ``DETAILS`` is a ``local_NAME`` then the
  second form is always understood. If the intention is to use
  the fourth form, then you can write ``NAME & ""`` to force the
! interpretation as a *static_string_EXPRESSION*.
  
  Note: if the first argument is a valid ``TOOL_NAME``, it will be interpreted
  that way. The use of the ``TOOL_NAME`` argument is relevant only to users
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/implementation_of_specific_ada_features.rst	Wed Apr 26 07:09:39 2023
*************** routines, since these are architecture i
*** 402,408 ****
  If active synchronization is required for access to the variables in the
  shared passive package, then as described in the Ada Reference Manual, the
  package may contain protected objects used for this purpose. In this case
! a lock file (whose name is :file:`___lock` (three underscores)
  is created in the shared memory directory.
  
  .. index:: ___lock file (for shared passive packages)
--- 402,408 ----
  If active synchronization is required for access to the variables in the
  shared passive package, then as described in the Ada Reference Manual, the
  package may contain protected objects used for this purpose. In this case
! a lock file (whose name is :file:`___lock`, with three underscores)
  is created in the shared memory directory.
  
  .. index:: ___lock file (for shared passive packages)
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/representation_clauses_and_pragmas.rst	Wed Apr 26 07:09:39 2023
*************** from Ada 83 to Ada 95 or Ada 2005.  For
*** 457,470 ****
  
  .. code-block:: ada
  
!      type Rec is record;
          A : Natural;
          B : Natural;
       end record;
  
       for Rec use record
!         at 0  range 0 .. Natural'Size - 1;
!         at 0  range Natural'Size .. 2 * Natural'Size - 1;
       end record;
  
  In the above code, since the typical size of ``Natural`` objects
--- 457,470 ----
  
  .. code-block:: ada
  
!      type Rec is record
          A : Natural;
          B : Natural;
       end record;
  
       for Rec use record
!         A at 0 range 0 .. Natural'Size - 1;
!         B at 0 range Natural'Size .. 2 * Natural'Size - 1;
       end record;
  
  In the above code, since the typical size of ``Natural`` objects
*************** The default rules for the value of ``Val
*** 525,531 ****
  
  *
    If a subtype statically matches the first subtype of a given type, then it has
!   by default the same ``Value_Size`` as the first subtype.  This is a
    consequence of RM 13.1(14): "if two subtypes statically match,
    then their subtype-specific aspects are the same".)
  
--- 525,531 ----
  
  *
    If a subtype statically matches the first subtype of a given type, then it has
!   by default the same ``Value_Size`` as the first subtype.  (This is a
    consequence of RM 13.1(14): "if two subtypes statically match,
    then their subtype-specific aspects are the same".)
  
*************** Suppose that we have an external device
*** 873,879 ****
  byte presented, which is the first (low addressed byte) of the two byte
  record is called Master, and the second byte is called Slave.
  
! The left most (most significant bit is called Control for each byte, and
  the remaining 7 bits are called V1, V2, ... V7, where V7 is the rightmost
  (least significant) bit.
  
--- 873,879 ----
  byte presented, which is the first (low addressed byte) of the two byte
  record is called Master, and the second byte is called Slave.
  
! The left most (most significant) bit is called Control for each byte, and
  the remaining 7 bits are called V1, V2, ... V7, where V7 is the rightmost
  (least significant) bit.
  
*************** check Alignment_Check is suppressed, or
*** 1585,1593 ****
  ``pragma Restrictions (No_Elaboration_Code)`` is in effect. It is also
  suppressed by default on non-strict alignment machines (such as the x86).
  
! Finally, GNAT does not permit overlaying of objects of class-wide types. In
! most cases, the compiler can detect an attempt at such overlays and will
! generate a warning at compile time and a Program_Error exception at run time.
  
  .. index:: Export
  
--- 1585,1604 ----
  ``pragma Restrictions (No_Elaboration_Code)`` is in effect. It is also
  suppressed by default on non-strict alignment machines (such as the x86).
  
! In some cases, GNAT does not support an address specification (using either
! form of aspect specification syntax) for the declaration of an object that has
! an indefinite nominal subtype. An object declaration has an indefinite
! nominal subtype if it takes its bounds (for an array type), discriminant
! values (for a discriminated type whose discriminants lack defaults), or tag
! (for a class-wide type) from its initial value, as in
! 
! .. code-block:: ada
! 
!     X : String := Some_Function_Call;
!     -- String has no constraint, so bounds for X come from function call
! 
! This restriction does not apply if the size of the object's initial value is
! known at compile time and the type of the object is not class-wide.
  
  .. index:: Export
  
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/security_hardening_features.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/security_hardening_features.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/security_hardening_features.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/security_hardening_features.rst	Wed Apr 26 07:09:39 2023
*************** Security Hardening Features
*** 7,12 ****
--- 7,15 ----
  This chapter describes Ada extensions aimed at security hardening that
  are provided by GNAT.
  
+ The features in this chapter are currently experimental and subject to
+ change.
+ 
  .. Register Scrubbing:
  
  Register Scrubbing
*************** Register Scrubbing
*** 15,23 ****
  GNAT can generate code to zero-out hardware registers before returning
  from a subprogram.
  
! It can be enabled with the *-fzero-call-used-regs* command line
! option, to affect all subprograms in a compilation, and with a
! :samp:`Machine_Attribute` pragma, to affect only specific subprograms.
  
  .. code-block:: ada
  
--- 18,27 ----
  GNAT can generate code to zero-out hardware registers before returning
  from a subprogram.
  
! It can be enabled with the :switch:`-fzero-call-used-regs={choice}`
! command-line option, to affect all subprograms in a compilation, and
! with a :samp:`Machine_Attribute` pragma, to affect only specific
! subprograms.
  
  .. code-block:: ada
  
*************** option, to affect all subprograms in a c
*** 31,39 ****
       --  Before returning, Bar scrubs all call-clobbered registers.
  
  
! For usage and more details on the command line option, and on the
! ``zero_call_used_regs`` attribute, see :title:`Using the GNU Compiler
! Collection (GCC)`.
  
  
  .. Stack Scrubbing:
--- 35,44 ----
       --  Before returning, Bar scrubs all call-clobbered registers.
  
  
! For usage and more details on the command-line option, on the
! ``zero_call_used_regs`` attribute, and on their use with other
! programming languages, see :title:`Using the GNU Compiler Collection
! (GCC)`.
  
  
  .. Stack Scrubbing:
*************** Stack Scrubbing
*** 44,57 ****
  GNAT can generate code to zero-out stack frames used by subprograms.
  
  It can be activated with the :samp:`Machine_Attribute` pragma, on
! specific subprograms and variables.
  
  .. code-block:: ada
  
       function Foo returns Integer;
       pragma Machine_Attribute (Foo, "strub");
       --  Foo and its callers are modified so as to scrub the stack
!      --  space used by Foo after it returns.
  
       procedure Bar;
       pragma Machine_Attribute (Bar, "strub", "internal");
--- 49,65 ----
  GNAT can generate code to zero-out stack frames used by subprograms.
  
  It can be activated with the :samp:`Machine_Attribute` pragma, on
! specific subprograms and variables, or their types.  (This attribute
! always applies to a type, even when it is associated with a subprogram
! or a variable.)
  
  .. code-block:: ada
  
       function Foo returns Integer;
       pragma Machine_Attribute (Foo, "strub");
       --  Foo and its callers are modified so as to scrub the stack
!      --  space used by Foo after it returns.  Shorthand for:
!      --  pragma Machine_Attribute (Foo, "strub", "at-calls");
  
       procedure Bar;
       pragma Machine_Attribute (Bar, "strub", "internal");
*************** specific subprograms and variables.
*** 61,72 ****
       Var : Integer;
       pragma Machine_Attribute (Var, "strub");
       --  Reading from Var in a subprogram enables stack scrubbing
!      --  of the stack space used by the subprogram.
  
  
! There are also *-fstrub* command line options to control default
! settings.  For usage and more details on the command line option, and
! on the ``strub`` attribute, see :title:`Using the GNU Compiler
  Collection (GCC)`.
  
  Note that Ada secondary stacks are not scrubbed.  The restriction
--- 69,135 ----
       Var : Integer;
       pragma Machine_Attribute (Var, "strub");
       --  Reading from Var in a subprogram enables stack scrubbing
!      --  of the stack space used by the subprogram.  Furthermore, if
!      --  Var is declared within a subprogram, this also enables
!      --  scrubbing of the stack space used by that subprogram.
  
  
! Given these declarations, Foo has its type and body modified as
! follows:
! 
! .. code-block:: ada
! 
!      function Foo (<WaterMark> : in out System.Address) returns Integer
!      is
!        --  ...
!      begin
!        <__strub_update> (<WaterMark>);  --  Updates the stack WaterMark.
!        --  ...
!      end;
! 
! 
! whereas its callers are modified from:
! 
! .. code-block:: ada
! 
!      X := Foo;
! 
! to:
! 
! .. code-block:: ada
! 
!      declare
!        <WaterMark> : System.Address;
!      begin
!        <__strub_enter> (<WaterMark>);  -- Initialize <WaterMark>.
!        X := Foo (<WaterMark>);
!        <__strub_leave> (<WaterMark>);  -- Scrubs stack up to <WaterMark>.
!      end;
! 
! 
! As for Bar, because it is strubbed in internal mode, its callers are
! not modified.  Its definition is modified roughly as follows:
! 
! .. code-block:: ada
! 
!      procedure Bar is
!        <WaterMark> : System.Address;
!        procedure Strubbed_Bar (<WaterMark> : in out System.Address) is
!        begin
!          <__strub_update> (<WaterMark>);  --  Updates the stack WaterMark.
!          -- original Bar body.
!        end Strubbed_Bar;
!      begin
!        <__strub_enter> (<WaterMark>);  -- Initialize <WaterMark>.
!        Strubbed_Bar (<WaterMark>);
!        <__strub_leave> (<WaterMark>);  -- Scrubs stack up to <WaterMark>.
!      end Bar;
! 
! 
! There are also :switch:`-fstrub={choice}` command-line options to
! control default settings.  For usage and more details on the
! command-line options, on the ``strub`` attribute, and their use with
! other programming languages, see :title:`Using the GNU Compiler
  Collection (GCC)`.
  
  Note that Ada secondary stacks are not scrubbed.  The restriction
*************** access type designates a non-strub type.
*** 81,96 ****
  
  .. code-block:: ada
  
!      VI : Integer;
       XsVI : access Integer := VI'Access; -- Error.
       UXsVI : access Integer := VI'Unchecked_Access; -- OK,
!      -- UXsVI.all does not enable strub in the enclosing subprogram.
  
       type Strub_Int is new Integer;
       pragma Machine_Attribute (Strub_Int, "strub");
!      VSI : Strub_Int;
!      XsVSI : access Strub_Int := VSI'Access; -- OK.
!      -- XsVSI.all enables strub in the enclosing subprogram.
  
  
  Every access-to-subprogram type, renaming, and overriding and
--- 144,162 ----
  
  .. code-block:: ada
  
!      VI : aliased Integer;
!      pragma Machine_Attribute (VI, "strub");
       XsVI : access Integer := VI'Access; -- Error.
       UXsVI : access Integer := VI'Unchecked_Access; -- OK,
!      --  UXsVI does *not* enable strub in subprograms that
!      --  dereference it to obtain the UXsVI.all value.
  
       type Strub_Int is new Integer;
       pragma Machine_Attribute (Strub_Int, "strub");
!      VSI : aliased Strub_Int;
!      XsVSI : access Strub_Int := VSI'Access; -- OK,
!      --  VSI and XsVSI.all both enable strub in subprograms that
!      --  read their values.
  
  
  Every access-to-subprogram type, renaming, and overriding and
*************** turned ``callable`` through such an expl
*** 108,113 ****
--- 174,182 ----
  
       type TBar_Callable is access procedure;
       pragma Machine_Attribute (TBar_Callable, "strub", "callable");
+      --  The attribute modifies the procedure type, rather than the
+      --  access type, because of the extra argument after "strub",
+      --  only applicable to subprogram types.
  
       Bar_Callable_Ptr : constant TBar_Callable
  		:= TBar_Callable (TBar'(Bar'Access));
*************** turned ``callable`` through such an expl
*** 115,120 ****
--- 184,190 ----
       procedure Bar_Callable renames Bar_Callable_Ptr.all;
       pragma Machine_Attribute (Bar_Callable, "strub", "callable");
  
+ 
  Note that the renaming declaration is expanded to a full subprogram
  body, it won't be just an alias.  Only if it is inlined will it be as
  efficient as a call by dereferencing the access-to-subprogram constant
*************** Bar_Callable_Ptr.
*** 126,143 ****
  Hardened Conditionals
  =====================
  
! GNAT can harden conditionals to protect against control flow attacks.
  
  This is accomplished by two complementary transformations, each
  activated by a separate command-line option.
  
! The option *-fharden-compares* enables hardening of compares that
! compute results stored in variables, adding verification that the
! reversed compare yields the opposite result.
  
- The option *-fharden-conditional-branches* enables hardening of
- compares that guard conditional branches, adding verification of the
- reversed compare to both execution paths.
  
  These transformations are introduced late in the compilation pipeline,
  long after boolean expressions are decomposed into separate compares,
--- 196,260 ----
  Hardened Conditionals
  =====================
  
! GNAT can harden conditionals to protect against control-flow attacks.
  
  This is accomplished by two complementary transformations, each
  activated by a separate command-line option.
  
! The option :switch:`-fharden-compares` enables hardening of compares
! that compute results stored in variables, adding verification that the
! reversed compare yields the opposite result, turning:
! 
! .. code-block:: ada
! 
!     B := X = Y;
! 
! 
! into:
! 
! .. code-block:: ada
! 
!     B := X = Y;
!     declare
!       NotB : Boolean := X /= Y; -- Computed independently of B.
!     begin
!       if B = NotB then
!         <__builtin_trap>;
!       end if;
!     end;
! 
! 
! The option :switch:`-fharden-conditional-branches` enables hardening
! of compares that guard conditional branches, adding verification of
! the reversed compare to both execution paths, turning:
! 
! .. code-block:: ada
! 
!     if X = Y then
!       X := Z + 1;
!     else
!       Y := Z - 1;
!     end if;
! 
! 
! into:
! 
! .. code-block:: ada
! 
!     if X = Y then
!       if X /= Y then -- Computed independently of X = Y.
!         <__builtin_trap>;
!       end if;
!       X := Z + 1;
!     else
!       if X /= Y then -- Computed independently of X = Y.
!         null;
!       else
!         <__builtin_trap>;
!       end if;
!       Y := Z - 1;
!     end if;
  
  
  These transformations are introduced late in the compilation pipeline,
  long after boolean expressions are decomposed into separate compares,
*************** options ensures that every compare that
*** 155,162 ****
  optimized into implied conditionals will be hardened.
  
  The addition of reversed compares can be observed by enabling the dump
! files of the corresponding passes, through command line options
! *-fdump-tree-hardcmp* and *-fdump-tree-hardcbr*, respectively.
  
  They are separate options, however, because of the significantly
  different performance impact of the hardening transformations.
--- 272,514 ----
  optimized into implied conditionals will be hardened.
  
  The addition of reversed compares can be observed by enabling the dump
! files of the corresponding passes, through command-line options
! :switch:`-fdump-tree-hardcmp` and :switch:`-fdump-tree-hardcbr`,
! respectively.
  
  They are separate options, however, because of the significantly
  different performance impact of the hardening transformations.
+ 
+ For usage and more details on the command-line options, see
+ :title:`Using the GNU Compiler Collection (GCC)`.  These options can
+ be used with other programming languages supported by GCC.
+ 
+ 
+ .. Hardened Booleans:
+ 
+ Hardened Booleans
+ =================
+ 
+ Ada has built-in support for introducing boolean types with
+ alternative representations, using representation clauses:
+ 
+ .. code-block:: ada
+ 
+    type HBool is new Boolean;
+    for HBool use (16#5a#, 16#a5#);
+    for HBool'Size use 8;
+ 
+ 
+ When validity checking is enabled, the compiler will check that
+ variables of such types hold values corresponding to the selected
+ representations.
+ 
+ There are multiple strategies for where to introduce validity checking
+ (see :switch:`-gnatV` options).  Their goal is to guard against
+ various kinds of programming errors, and GNAT strives to omit checks
+ when program logic rules out an invalid value, and optimizers may
+ further remove checks found to be redundant.
+ 
+ For additional hardening, the ``hardbool`` :samp:`Machine_Attribute`
+ pragma can be used to annotate boolean types with representation
+ clauses, so that expressions of such types used as conditions are
+ checked even when compiling with :switch:`-gnatVT`:
+ 
+ .. code-block:: ada
+ 
+    pragma Machine_Attribute (HBool, "hardbool");
+ 
+    function To_Boolean (X : HBool) returns Boolean is (Boolean (X));
+ 
+ 
+ is compiled roughly like:
+ 
+ .. code-block:: ada
+ 
+    function To_Boolean (X : HBool) returns Boolean is
+    begin
+      if X not in True | False then
+        raise Constraint_Error;
+      elsif X in True then
+        return True;
+      else
+        return False;
+      end if;
+    end To_Boolean;
+ 
+ 
+ Note that :switch:`-gnatVn` will disable even ``hardbool`` testing.
+ 
+ Analogous behavior is available as a GCC extension to the C and
+ Objective C programming languages, through the ``hardbool`` attribute,
+ with the difference that, instead of raising a Constraint_Error
+ exception, when a hardened boolean variable is found to hold a value
+ that stands for neither True nor False, the program traps.  For usage
+ and more details on that attribute, see :title:`Using the GNU Compiler
+ Collection (GCC)`.
+ 
+ 
+ .. Control Flow Redundancy:
+ 
+ Control Flow Redundancy
+ =======================
+ 
+ GNAT can guard against unexpected execution flows, such as branching
+ into the middle of subprograms, as in Return Oriented Programming
+ exploits.
+ 
+ In units compiled with :switch:`-fharden-control-flow-redundancy`,
+ subprograms are instrumented so that, every time they are called,
+ basic blocks take note as control flows through them, and, before
+ returning, subprograms verify that the taken notes are consistent with
+ the control-flow graph.
+ 
+ Functions with too many basic blocks, or with multiple return points,
+ call a run-time function to perform the verification.  Other functions
+ perform the verification inline before returning.
+ 
+ Optimizing the inlined verification can be quite time consuming, so
+ the default upper limit for the inline mode is set at 16 blocks.
+ Command-line option :switch:`--param hardcfr-max-inline-blocks=` can
+ override it.
+ 
+ Even though typically sparse control-flow graphs exhibit run-time
+ verification time nearly proportional to the block count of a
+ subprogram, it may become very significant for generated subprograms
+ with thousands of blocks.  Command-line option
+ :switch:`--param hardcfr-max-blocks=` can set an upper limit for
+ instrumentation.
+ 
+ For each block that is marked as visited, the mechanism checks that at
+ least one of its predecessors, and at least one of its successors, are
+ also marked as visited.
+ 
+ Verification is performed just before a subprogram returns.  The
+ following fragment:
+ 
+ .. code-block:: ada
+ 
+    if X then
+      Y := F (Z);
+      return;
+    end if;
+ 
+ 
+ gets turned into:
+ 
+ .. code-block:: ada
+ 
+    type Visited_Bitmap is array (1..N) of Boolean with Pack;
+    Visited : aliased Visited_Bitmap := (others => False);
+    --  Bitmap of visited blocks.  N is the basic block count.
+    [...]
+    --  Basic block #I
+    Visited(I) := True;
+    if X then
+      --  Basic block #J
+      Visited(J) := True;
+      Y := F (Z);
+      CFR.Check (N, Visited'Access, CFG'Access);
+      --  CFR is a hypothetical package whose Check procedure calls
+      --  libgcc's __hardcfr_check, that traps if the Visited bitmap
+      --  does not hold a valid path in CFG, the run-time
+      --  representation of the control flow graph in the enclosing
+      --  subprogram.
+      return;
+    end if;
+    --  Basic block #K
+    Visited(K) := True;
+ 
+ 
+ Verification would also be performed before tail calls, if any
+ front-ends marked them as mandatory or desirable, but none do.
+ Regular calls are optimized into tail calls too late for this
+ transformation to act on it.
+ 
+ In order to avoid adding verification after potential tail calls,
+ which would prevent tail-call optimization, we recognize returning
+ calls, i.e., calls whose result, if any, is returned by the calling
+ subprogram to its caller immediately after the call returns.
+ Verification is performed before such calls, whether or not they are
+ ultimately optimized to tail calls.  This behavior is enabled by
+ default whenever sibcall optimization is enabled (see
+ :switch:`-foptimize-sibling-calls`); it may be disabled with
+ :switch:`-fno-hardcfr-check-returning-calls`, or enabled with
+ :switch:`-fhardcfr-check-returning-calls`, regardless of the
+ optimization, but the lack of other optimizations may prevent calls
+ from being recognized as returning calls:
+ 
+ .. code-block:: ada
+ 
+      --  CFR.Check here, with -fhardcfr-check-returning-calls.
+      P (X);
+      --  CFR.Check here, with -fno-hardcfr-check-returning-calls.
+      return;
+ 
+ or:
+ 
+ .. code-block:: ada
+ 
+      --  CFR.Check here, with -fhardcfr-check-returning-calls.
+      R := F (X);
+      --  CFR.Check here, with -fno-hardcfr-check-returning-calls.
+      return R;
+ 
+ 
+ Any subprogram from which an exception may escape, i.e., that may
+ raise or propagate an exception that isn't handled internally, is
+ conceptually enclosed by a cleanup handler that performs verification,
+ unless this is disabled with :switch:`-fno-hardcfr-check-exceptions`.
+ With this feature enabled, a subprogram body containing:
+ 
+ .. code-block:: ada
+ 
+      --  ...
+        Y := F (X);  -- May raise exceptions.
+      --  ...
+        raise E;  -- Not handled internally.
+      --  ...
+ 
+ 
+ gets modified as follows:
+ 
+ .. code-block:: ada
+ 
+    begin
+      --  ...
+        Y := F (X);  -- May raise exceptions.
+      --  ...
+        raise E;  -- Not handled internally.
+      --  ...
+    exception
+      when others =>
+        CFR.Check (N, Visited'Access, CFG'Access);
+        raise;
+    end;
+ 
+ 
+ Verification may also be performed before No_Return calls, whether
+ only nothrow ones, with
+ :switch:`-fhardcfr-check-noreturn-calls=nothrow`, or all of them, with
+ :switch:`-fhardcfr-check-noreturn-calls=always`.  The default is
+ :switch:`-fhardcfr-check-noreturn-calls=never` for this feature, that
+ disables checking before No_Return calls.
+ 
+ When a No_Return call returns control to its caller through an
+ exception, verification may have already been performed before the
+ call, if :switch:`-fhardcfr-check-noreturn-calls=always` is in effect.
+ The compiler arranges for already-checked No_Return calls without a
+ preexisting handler to bypass the implicitly-added cleanup handler and
+ thus the redundant check, but a local exception or cleanup handler, if
+ present, will modify the set of visited blocks, and checking will take
+ place again when the caller reaches the next verification point,
+ whether it is a return or reraise statement after the exception is
+ otherwise handled, or even another No_Return call.
+ 
+ The instrumentation for hardening with control flow redundancy can be
+ observed in dump files generated by the command-line option
+ :switch:`-fdump-tree-hardcfr`.
+ 
+ For more details on the control flow redundancy command-line options,
+ see :title:`Using the GNU Compiler Collection (GCC)`.  These options
+ can be used with other programming languages supported by GCC.
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/standard_and_implementation_defined_restrictions.rst	Wed Apr 26 07:09:39 2023
*************** No_Dependence
*** 184,190 ****
  .. index:: No_Dependence
  
  [RM 13.12.1] This restriction ensures at compile time that there are no
! dependences on a library unit.
  
  No_Direct_Boolean_Operators
  ---------------------------
--- 184,192 ----
  .. index:: No_Dependence
  
  [RM 13.12.1] This restriction ensures at compile time that there are no
! dependences on a library unit. For GNAT, this includes implicit implementation
! dependences on units of the runtime library that are created by the compiler
! to support specific constructs of the language.
  
  No_Direct_Boolean_Operators
  ---------------------------
*************** No_Local_Protected_Objects
*** 492,497 ****
--- 494,506 ----
  [RM D.7] This restriction ensures at compile time that protected objects are
  only declared at the library level.
  
+ No_Local_Tagged_Types
+ ---------------------
+ .. index:: No_Local_Tagged_Types
+ 
+ [GNAT] This restriction ensures at compile time that tagged types are only
+ declared at the library level.
+ 
  No_Local_Timing_Events
  ----------------------
  .. index:: No_Local_Timing_Events
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/standard_library_routines.rst	Wed Apr 26 07:09:39 2023
*************** the unit is not implemented.
*** 157,163 ****
  
  ``Ada.Directories.Hierarchical_File_Names`` *(A.16.1)*
    This package provides additional directory operations handling
!   hiearchical file names.
  
  
  ``Ada.Directories.Information`` *(A.16)*
--- 157,163 ----
  
  ``Ada.Directories.Hierarchical_File_Names`` *(A.16.1)*
    This package provides additional directory operations handling
!   hierarchical file names.
  
  
  ``Ada.Directories.Information`` *(A.16)*
*************** the unit is not implemented.
*** 550,556 ****
    This package provides the capability of associating arbitrary
    task-specific data with separate tasks.
  
! ``Ada.Task_Identifification`` *(C.7.1)*
    This package provides capabilities for task identification.
  
  ``Ada.Task_Termination`` *(C.7.3)*
--- 550,556 ----
    This package provides the capability of associating arbitrary
    task-specific data with separate tasks.
  
! ``Ada.Task_Identification`` *(C.7.1)*
    This package provides capabilities for task identification.
  
  ``Ada.Task_Termination`` *(C.7.3)*
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/the_gnat_library.rst	Wed Apr 26 07:09:39 2023
*************** of GNAT, and will generate a warning mes
*** 47,53 ****
  This child of ``Ada.Characters``
  provides a set of definitions corresponding to those in the
  RM-defined package ``Ada.Characters.Latin_1`` but with the
! few modifications required for ``Latin-9``
  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
--- 47,53 ----
  This child of ``Ada.Characters``
  provides a set of definitions corresponding to those in the
  RM-defined package ``Ada.Characters.Latin_1`` but with the
! few modifications required for ``Latin-9``.
  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
*************** instead of ``Character``.  The provision
*** 69,80 ****
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! .. _`Ada.Characters.Wide_Latin_9_(a-cwila1.ads)`:
  
! ``Ada.Characters.Wide_Latin_9`` (:file:`a-cwila1.ads`)
  ======================================================
  
! .. index:: Ada.Characters.Wide_Latin_9 (a-cwila1.ads)
  
  .. index:: Latin_9 constants for Wide_Character
  
--- 69,80 ----
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! .. _`Ada.Characters.Wide_Latin_9_(a-cwila9.ads)`:
  
! ``Ada.Characters.Wide_Latin_9`` (:file:`a-cwila9.ads`)
  ======================================================
  
! .. index:: Ada.Characters.Wide_Latin_9 (a-cwila9.ads)
  
  .. index:: Latin_9 constants for Wide_Character
  
*************** instead of ``Character``.  The provision
*** 120,324 ****
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
- .. _`Ada.Containers.Formal_Doubly_Linked_Lists_(a-cfdlli.ads)`:
- 
- ``Ada.Containers.Formal_Doubly_Linked_Lists`` (:file:`a-cfdlli.ads`)
- ====================================================================
- 
- .. index:: Ada.Containers.Formal_Doubly_Linked_Lists (a-cfdlli.ads)
- 
- .. index:: Formal container for doubly linked lists
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for doubly linked lists, meant to facilitate formal
- verification of code using such containers. The specification of this
- unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Formal_Hashed_Maps_(a-cfhama.ads)`:
- 
- ``Ada.Containers.Formal_Hashed_Maps`` (:file:`a-cfhama.ads`)
- ============================================================
- 
- .. index:: Ada.Containers.Formal_Hashed_Maps (a-cfhama.ads)
- 
- .. index:: Formal container for hashed maps
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for hashed maps, meant to facilitate formal
- verification of code using such containers. The specification of this
- unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Formal_Hashed_Sets_(a-cfhase.ads)`:
- 
- ``Ada.Containers.Formal_Hashed_Sets`` (:file:`a-cfhase.ads`)
- ============================================================
- 
- .. index:: Ada.Containers.Formal_Hashed_Sets (a-cfhase.ads)
- 
- .. index:: Formal container for hashed sets
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for hashed sets, meant to facilitate formal
- verification of code using such containers. The specification of this
- unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Formal_Ordered_Maps_(a-cforma.ads)`:
- 
- ``Ada.Containers.Formal_Ordered_Maps`` (:file:`a-cforma.ads`)
- =============================================================
- 
- .. index:: Ada.Containers.Formal_Ordered_Maps (a-cforma.ads)
- 
- .. index:: Formal container for ordered maps
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for ordered maps, meant to facilitate formal
- verification of code using such containers. The specification of this
- unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Formal_Ordered_Sets_(a-cforse.ads)`:
- 
- ``Ada.Containers.Formal_Ordered_Sets`` (:file:`a-cforse.ads`)
- =============================================================
- 
- .. index:: Ada.Containers.Formal_Ordered_Sets (a-cforse.ads)
- 
- .. index:: Formal container for ordered sets
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for ordered sets, meant to facilitate formal
- verification of code using such containers. The specification of this
- unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Formal_Vectors_(a-cofove.ads)`:
- 
- ``Ada.Containers.Formal_Vectors`` (:file:`a-cofove.ads`)
- ========================================================
- 
- .. index:: Ada.Containers.Formal_Vectors (a-cofove.ads)
- 
- .. index:: Formal container for vectors
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for vectors, meant to facilitate formal
- verification of code using such containers. The specification of this
- unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Formal_Indefinite_Vectors_(a-cfinve.ads)`:
- 
- ``Ada.Containers.Formal_Indefinite_Vectors`` (:file:`a-cfinve.ads`)
- ===================================================================
- 
- .. index:: Ada.Containers.Formal_Indefinite_Vectors (a-cfinve.ads)
- 
- .. index:: Formal container for vectors
- 
- This child of ``Ada.Containers`` defines a modified version of the
- Ada 2005 container for vectors of indefinite elements, meant to
- facilitate formal verification of code using such containers. The
- specification of this unit is compatible with SPARK 2014.
- 
- Note that although this container was designed with formal verification
- in mind, it may well be generally useful in that it is a simplified more
- efficient version than the one defined in the standard. In particular it
- does not have the complex overhead required to detect cursor tampering.
- 
- .. _`Ada.Containers.Functional_Vectors_(a-cofuve.ads)`:
- 
- ``Ada.Containers.Functional_Vectors`` (:file:`a-cofuve.ads`)
- =================================================================
- 
- .. index:: Ada.Containers.Functional_Vectors (a-cofuve.ads)
- 
- .. index:: Functional vectors
- 
- This child of ``Ada.Containers`` defines immutable vectors. These
- containers are unbounded and may contain indefinite elements. Furthermore, to
- be usable in every context, they are neither controlled nor limited. As they
- are functional, that is, no primitives are provided which would allow modifying
- an existing container, these containers can still be used safely.
- 
- Their API features functions creating new containers from existing ones.
- As a consequence, these containers are highly inefficient. They are also
- memory consuming, as the allocated memory is not reclaimed when the container
- is no longer referenced. Thus, they should in general be used in ghost code
- and annotations, so that they can be removed from the final executable. The
- specification of this unit is compatible with SPARK 2014.
- 
- .. _`Ada.Containers.Functional_Sets_(a-cofuse.ads)`:
- 
- ``Ada.Containers.Functional_Sets`` (:file:`a-cofuse.ads`)
- =================================================================
- 
- .. index:: Ada.Containers.Functional_Sets (a-cofuse.ads)
- 
- .. index:: Functional sets
- 
- This child of ``Ada.Containers`` defines immutable sets. These containers are
- unbounded and may contain indefinite elements. Furthermore, to be usable in
- every context, they are neither controlled nor limited. As they are functional,
- that is, no primitives are provided which would allow modifying an existing
- container, these containers can still be used safely.
- 
- Their API features functions creating new containers from existing ones.
- As a consequence, these containers are highly inefficient. They are also
- memory consuming, as the allocated memory is not reclaimed when the container
- is no longer referenced. Thus, they should in general be used in ghost code
- and annotations, so that they can be removed from the final executable. The
- specification of this unit is compatible with SPARK 2014.
- 
- .. _`Ada.Containers.Functional_Maps_(a-cofuma.ads)`:
- 
- ``Ada.Containers.Functional_Maps`` (:file:`a-cofuma.ads`)
- =================================================================
- 
- .. index:: Ada.Containers.Functional_Maps (a-cofuma.ads)
- 
- .. index:: Functional maps
- 
- This child of ``Ada.Containers`` defines immutable maps. These containers are
- unbounded and may contain indefinite elements. Furthermore, to be usable in
- every context, they are neither controlled nor limited. As they are functional,
- that is, no primitives are provided which would allow modifying an existing
- container, these containers can still be used safely.
- 
- Their API features functions creating new containers from existing ones.
- As a consequence, these containers are highly inefficient. They are also
- memory consuming, as the allocated memory is not reclaimed when the container
- is no longer referenced. Thus, they should in general be used in ghost code
- and annotations, so that they can be removed from the final executable. The
- specification of this unit is compatible with SPARK 2014.
- 
  .. _`Ada.Containers.Bounded_Holders_(a-coboho.ads)`:
  
  ``Ada.Containers.Bounded_Holders`` (:file:`a-coboho.ads`)
--- 120,125 ----
*************** where this concept makes sense.
*** 358,365 ****
  This child of ``Ada.Command_Line``
  provides a mechanism for logically removing
  arguments from the argument list.  Once removed, an argument is not visible
! to further calls on the subprograms in ``Ada.Command_Line`` will not
! see the removed argument.
  
  .. _`Ada.Command_Line.Response_File_(a-clrefi.ads)`:
  
--- 159,166 ----
  This child of ``Ada.Command_Line``
  provides a mechanism for logically removing
  arguments from the argument list.  Once removed, an argument is not visible
! to further calls to the subprograms in ``Ada.Command_Line``. These calls
! will not see the removed argument.
  
  .. _`Ada.Command_Line.Response_File_(a-clrefi.ads)`:
  
*************** Provides AWK-like parsing functions, wit
*** 721,726 ****
--- 522,539 ----
  or more files containing formatted data.  The file is viewed as a database
  where each record is a line and a field is a data element in this line.
  
+ .. _`GNAT.Binary_Search_(g-binsea.ads)`:
+ 
+ ``GNAT.Binary_Search`` (:file:`g-binsea.ads`)
+ ================================================
+ 
+ .. index:: GNAT.Binary_Search (g-binsea.ads)
+ 
+ .. index:: Binary search
+ 
+ Allow binary search of a sorted array (or of an array-like container;
+ the generic does not reference the array directly).
+ 
  .. _`GNAT.Bind_Environment_(g-binenv.ads)`:
  
  ``GNAT.Bind_Environment`` (:file:`g-binenv.ads`)
*************** obtaining information about exceptions p
*** 1020,1026 ****
  
  .. index:: Memory corruption debugging
  
! Provide a debugging storage pools that helps tracking memory corruption
  problems.
  See ``The GNAT Debug_Pool Facility`` section in the :title:`GNAT User's Guide`.
  
--- 833,839 ----
  
  .. index:: Memory corruption debugging
  
! Provides a debugging storage pools that helps tracking memory corruption
  problems.
  See ``The GNAT Debug_Pool Facility`` section in the :title:`GNAT User's Guide`.
  
*************** a message from a subprogram in a pure pa
*** 1230,1236 ****
  necessary types and subprograms are in ``Ada.Exceptions``
  which is not a pure unit. ``GNAT.Exceptions`` provides a
  facility for getting around this limitation for a few
! predefined exceptions, and for example allow raising
  ``Constraint_Error`` with a message from a pure subprogram.
  
  .. _`GNAT.Expect_(g-expect.ads)`:
--- 1043,1049 ----
  necessary types and subprograms are in ``Ada.Exceptions``
  which is not a pure unit. ``GNAT.Exceptions`` provides a
  facility for getting around this limitation for a few
! predefined exceptions, and for example allows raising
  ``Constraint_Error`` with a message from a pure subprogram.
  
  .. _`GNAT.Expect_(g-expect.ads)`:
*************** in this package can be used to reestabli
*** 1285,1295 ****
  .. index:: Formatted String
  
  Provides support for C/C++ printf() formatted strings. The format is
! copied from the printf() routine and should therefore gives identical
  output. Some generic routines are provided to be able to use types
  derived from Integer, Float or enumerations as values for the
  formatted string.
  
  .. _`GNAT.Heap_Sort_(g-heasor.ads)`:
  
  ``GNAT.Heap_Sort`` (:file:`g-heasor.ads`)
--- 1098,1126 ----
  .. index:: Formatted String
  
  Provides support for C/C++ printf() formatted strings. The format is
! copied from the printf() routine and should therefore give identical
  output. Some generic routines are provided to be able to use types
  derived from Integer, Float or enumerations as values for the
  formatted string.
  
+ .. _`GNAT.Generic_Fast_Math_Functions_(g-gfmafu.ads)`:
+ 
+ ``GNAT.Generic_Fast_Math_Functions`` (:file:`g-gfmafu.ads`)
+ ===========================================================
+ 
+ .. index:: GNAT.Generic_Fast_Math_Functions (g-gfmafu.ads)
+ 
+ .. index:: Mathematical functions
+ 
+ Provides direct access to the underlying implementation of the common
+ mathematical functions, generally from the system mathematical library.
+ This differs from ``Ada.Numerics.Generic_Elementary_Functions`` in that
+ the implementation may deviate from the semantics specified for these
+ functions in the Reference Manual, for example ``Numerics.Argument_Error``
+ is not raised. On selected platforms, some of these functions may also
+ have a vector implementation that can be automatically used by the
+ compiler when auto-vectorization is enabled.
+ 
  .. _`GNAT.Heap_Sort_(g-heasor.ads)`:
  
  ``GNAT.Heap_Sort`` (:file:`g-heasor.ads`)
*************** Provides a generator of static minimal p
*** 1483,1489 ****
  collisions occur and each item can be retrieved from the table in one
  probe (perfect property). The hash table size corresponds to the exact
  size of the key set and no larger (minimal property). The key set has to
! be know in advance (static property). The hash functions are also order
  preserving. If w2 is inserted after w1 in the generator, their
  hashcode are in the same order. These hashing functions are very
  convenient for use with realtime applications.
--- 1314,1320 ----
  collisions occur and each item can be retrieved from the table in one
  probe (perfect property). The hash table size corresponds to the exact
  size of the key set and no larger (minimal property). The key set has to
! be known in advance (static property). The hash functions are also order
  preserving. If w2 is inserted after w1 in the generator, their
  hashcode are in the same order. These hashing functions are very
  convenient for use with realtime applications.
*************** this interface usable for large files or
*** 1568,1574 ****
  
  .. index:: Secondary Stack Info
  
! Provide the capability to query the high water mark of the current task's
  secondary stack.
  
  .. _`GNAT.Semaphores_(g-semaph.ads)`:
--- 1399,1405 ----
  
  .. index:: Secondary Stack Info
  
! Provides the capability to query the high water mark of the current task's
  secondary stack.
  
  .. _`GNAT.Semaphores_(g-semaph.ads)`:
*************** targets.
*** 1683,1689 ****
  A high level and portable interface to develop sockets based applications.
  This package is based on the sockets thin binding found in
  ``GNAT.Sockets.Thin``. Currently ``GNAT.Sockets`` is implemented
! on all native GNAT ports and on VxWorks cross prots.  It is not implemented for
  the LynxOS cross port.
  
  .. _`GNAT.Source_Info_(g-souinf.ads)`:
--- 1514,1520 ----
  A high level and portable interface to develop sockets based applications.
  This package is based on the sockets thin binding found in
  ``GNAT.Sockets.Thin``. Currently ``GNAT.Sockets`` is implemented
! on all native GNAT ports and on VxWorks cross ports.  It is not implemented for
  the LynxOS cross port.
  
  .. _`GNAT.Source_Info_(g-souinf.ads)`:
*************** in various debugging situations.
*** 1950,1961 ****
  
  .. index:: Trace back facilities
  
! .. _`GNAT.UTF_32_(g-table.ads)`:
  
! ``GNAT.UTF_32`` (:file:`g-table.ads`)
! =====================================
  
! .. index:: GNAT.UTF_32 (g-table.ads)
  
  .. index:: Wide character codes
  
--- 1781,1792 ----
  
  .. index:: Trace back facilities
  
! .. _`GNAT.UTF_32_(g-utf_32.ads)`:
  
! ``GNAT.UTF_32`` (:file:`g-utf_32.ads`)
! ======================================
  
! .. index:: GNAT.UTF_32 (g-utf_32.ads)
  
  .. index:: Wide character codes
  
*************** lexical rules for identifiers and string
*** 1969,1980 ****
  lower case to upper case fold routine corresponding to
  the Ada 2005 rules for identifier equivalence.
  
! .. _`GNAT.Wide_Spelling_Checker_(g-u3spch.ads)`:
  
! ``GNAT.Wide_Spelling_Checker`` (:file:`g-u3spch.ads`)
! =====================================================
  
! .. index:: GNAT.Wide_Spelling_Checker (g-u3spch.ads)
  
  .. index:: Spell checking
  
--- 1800,1811 ----
  lower case to upper case fold routine corresponding to
  the Ada 2005 rules for identifier equivalence.
  
! .. _`GNAT.UTF_32_Spelling_Checker_(g-u3spch.ads)`:
  
! ``GNAT.UTF_32_Spelling_Checker`` (:file:`g-u3spch.ads`)
! =======================================================
  
! .. index:: GNAT.UTF_32_Spelling_Checker (g-u3spch.ads)
  
  .. index:: Spell checking
  
*************** x86, and x86_64 platforms.
*** 2177,2183 ****
  
  This package provides the interface to the low level routines used
  by the generated code for allocation and freeing storage for the
! default storage pool (analogous to the C routines malloc and free.
  It also provides a reallocation interface analogous to the C routine
  realloc. The body of this unit may be modified to provide alternative
  allocation mechanisms for the default pool, and in addition, direct
--- 2008,2014 ----
  
  This package provides the interface to the low level routines used
  by the generated code for allocation and freeing storage for the
! default storage pool (analogous to the C routines malloc and free).
  It also provides a reallocation interface analogous to the C routine
  realloc. The body of this unit may be modified to provide alternative
  allocation mechanisms for the default pool, and in addition, direct
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst gcc-13.1.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_rm/the_implementation_of_standard_i_o.rst	Wed Apr 26 07:09:39 2023
*************** of stream pointer positioning (:ref:`Tex
*** 617,623 ****
  case:
  
  If ``Ada.Wide_Text_IO.Look_Ahead`` reads a character outside the
! normal lower ASCII set (i.e., a character in the range:
  
  
  .. code-block:: ada
--- 617,623 ----
  case:
  
  If ``Ada.Wide_Text_IO.Look_Ahead`` reads a character outside the
! normal lower ASCII set, i.e. a character in the range:
  
  
  .. code-block:: ada
*************** of stream pointer positioning (:ref:`Tex
*** 761,767 ****
  case:
  
  If ``Ada.Wide_Wide_Text_IO.Look_Ahead`` reads a character outside the
! normal lower ASCII set (i.e., a character in the range:
  
  
  .. code-block:: ada
--- 761,767 ----
  case:
  
  If ``Ada.Wide_Wide_Text_IO.Look_Ahead`` reads a character outside the
! normal lower ASCII set, i.e. a character in the range:
  
  
  .. code-block:: ada
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/building_executable_programs_with_gnat.rst	Wed Apr 26 07:09:39 2023
*************** You may specify any of the following swi
*** 139,144 ****
--- 139,155 ----
    all other options.
  
  
+ .. index:: -P  (gnatmake)
+ 
+ :switch:`-P{project}`
+   Build GNAT project file ``project`` using GPRbuild. When this switch is
+   present, all other command-line switches are treated as GPRbuild switches
+   and not ``gnatmake`` switches.
+ 
+ .. -- Comment:
+   :ref:`gnatmake_and_Project_Files`.
+ 
+ 
  .. index:: --GCC=compiler_name  (gnatmake)
  
  :switch:`--GCC={compiler_name}`
*************** You may specify any of the following swi
*** 522,536 ****
  :switch:`-p`
    Same as :switch:`--create-missing-dirs`
  
- .. index:: -P  (gnatmake)
- 
- :switch:`-P{project}`
-   Use project file ``project``. Only one such switch can be used.
- 
- .. -- Comment:
-   :ref:`gnatmake_and_Project_Files`.
- 
- 
  .. index:: -q  (gnatmake)
  
  :switch:`-q`
--- 533,538 ----
*************** Alphabetical List of All Switches
*** 1238,1244 ****
  :switch:`-fdiagnostics-format=json`
    Makes GNAT emit warning and error messages as JSON. Inhibits printing of
    text warning and errors messages except if :switch:`-gnatv` or
!   :switch:`-gnatl` are present.
  
  
  .. index:: -fdump-scos  (gcc)
--- 1240,1247 ----
  :switch:`-fdiagnostics-format=json`
    Makes GNAT emit warning and error messages as JSON. Inhibits printing of
    text warning and errors messages except if :switch:`-gnatv` or
!   :switch:`-gnatl` are present. Uses absolute file paths when used along
!   :switch:`-gnatef`.
  
  
  .. index:: -fdump-scos  (gcc)
*************** Alphabetical List of All Switches
*** 1454,1460 ****
    Check syntax and semantics only (no code generation attempted). When the
    compiler is invoked by ``gnatmake``, if the switch :switch:`-gnatc` is
    only given to the compiler (after :switch:`-cargs` or in package Compiler of
!   the project file, ``gnatmake`` will fail because it will not find the
    object file after compilation. If ``gnatmake`` is called with
    :switch:`-gnatc` as a builder switch (before :switch:`-cargs` or in package
    Builder of the project file) then ``gnatmake`` will not fail because
--- 1457,1463 ----
    Check syntax and semantics only (no code generation attempted). When the
    compiler is invoked by ``gnatmake``, if the switch :switch:`-gnatc` is
    only given to the compiler (after :switch:`-cargs` or in package Compiler of
!   the project file), ``gnatmake`` will fail because it will not find the
    object file after compilation. If ``gnatmake`` is called with
    :switch:`-gnatc` as a builder switch (before :switch:`-cargs` or in package
    Builder of the project file) then ``gnatmake`` will not fail because
*************** Alphabetical List of All Switches
*** 1582,1588 ****
  .. index:: -gnatef  (gcc)
  
  :switch:`-gnatef`
!   Display full source path name in brief error messages.
  
  
  .. index:: -gnateF  (gcc)
--- 1585,1592 ----
  .. index:: -gnatef  (gcc)
  
  :switch:`-gnatef`
!   Display full source path name in brief error messages and absolute paths in
!   :switch:`-fdiagnostics-format=json`'s output.
  
  
  .. index:: -gnateF  (gcc)
*************** Alphabetical List of All Switches
*** 1715,1720 ****
--- 1719,1725 ----
      Float_Words_BE             : Nat; -- Float words stored big-endian?
      Int_Size                   : Pos; -- Standard.Integer'Size
      Long_Double_Size           : Pos; -- Standard.Long_Long_Float'Size
+     Long_Long_Long_Size        : Pos; -- Standard.Long_Long_Long_Integer'Size
      Long_Long_Size             : Pos; -- Standard.Long_Long_Integer'Size
      Long_Size                  : Pos; -- Standard.Long_Integer'Size
      Maximum_Alignment          : Pos; -- Maximum permitted alignment
*************** Alphabetical List of All Switches
*** 1786,1792 ****
  
  
    where ``name`` is the string name of the type (which can have
!   single spaces embedded in the name (e.g. long double), ``digs`` is
    the number of digits for the floating-point type, ``float_rep`` is
    the float representation (I for IEEE-754-Binary, which is
    the only one supported at this time),
--- 1791,1797 ----
  
  
    where ``name`` is the string name of the type (which can have
!   single spaces embedded in the name, e.g. long double), ``digs`` is
    the number of digits for the floating-point type, ``float_rep`` is
    the float representation (I for IEEE-754-Binary, which is
    the only one supported at this time),
*************** Alphabetical List of All Switches
*** 1812,1817 ****
--- 1817,1823 ----
      Float_Words_BE                0
      Int_Size                     64
      Long_Double_Size            128
+     Long_Long_Long_Size         128
      Long_Long_Size               64
      Long_Size                    64
      Maximum_Alignment            16
*************** Alphabetical List of All Switches
*** 2174,2180 ****
  .. index:: -gnatX  (gcc)
  
  :switch:`-gnatX`
!   Enable GNAT implementation extensions and latest Ada version.
  
  
  .. index:: -gnaty  (gcc)
--- 2180,2192 ----
  .. index:: -gnatX  (gcc)
  
  :switch:`-gnatX`
!   Enable core GNAT implementation extensions and latest Ada version.
! 
! 
! .. index:: -gnatX0  (gcc)
! 
! :switch:`-gnatX0`
!   Enable all GNAT implementation extensions and latest Ada version.
  
  
  .. index:: -gnaty  (gcc)
*************** format:
*** 2389,2395 ****
  :switch:`-gnatv`
    The ``v`` stands for verbose.
    The effect of this setting is to write long-format error
!   messages to :file:`stdout` (the standard output file.
    The same program compiled with the
    :switch:`-gnatv` switch would generate:
  
--- 2401,2407 ----
  :switch:`-gnatv`
    The ``v`` stands for verbose.
    The effect of this setting is to write long-format error
!   messages to :file:`stdout` (the standard output file).
    The same program compiled with the
    :switch:`-gnatv` switch would generate:
  
*************** format:
*** 2489,2495 ****
    brief format error messages to :file:`stderr` (the standard error
    file) as well as the verbose
    format message or full listing (which as usual is written to
!   :file:`stdout` (the standard output file).
  
  
  .. index:: -gnatm  (gcc)
--- 2501,2507 ----
    brief format error messages to :file:`stderr` (the standard error
    file) as well as the verbose
    format message or full listing (which as usual is written to
!   :file:`stdout`, the standard output file).
  
  
  .. index:: -gnatm  (gcc)
*************** of the pragma in the :title:`GNAT_Refere
*** 2783,2788 ****
--- 2795,2802 ----
  
    * :switch:`-gnatw.q` (questionable layout of record types)
  
+   * :switch:`-gnatw_q` (ignored equality)
+ 
    * :switch:`-gnatw_r` (out-of-order record representation clauses)
  
    * :switch:`-gnatw.s` (overridden size clause)
*************** of the pragma in the :title:`GNAT_Refere
*** 2924,2930 ****
    tests that are known to be True or False at compile time. The default
    is that such warnings are not generated.
    Note that this warning does
!   not get issued for the use of boolean variables or constants whose
    values are known at compile time, since this is a standard technique
    for conditional compilation in Ada, and this would generate too many
    false positive warnings.
--- 2938,2944 ----
    tests that are known to be True or False at compile time. The default
    is that such warnings are not generated.
    Note that this warning does
!   not get issued for the use of boolean constants whose
    values are known at compile time, since this is a standard technique
    for conditional compilation in Ada, and this would generate too many
    false positive warnings.
*************** of the pragma in the :title:`GNAT_Refere
*** 3207,3214 ****
  
    This switch activates warnings on component clauses in record
    representation clauses that leave holes (gaps) in the record layout.
!   If this warning option is active, then record representation clauses
!   should specify a contiguous layout, adding unused fill fields if needed.
  
  
  .. index:: -gnatw.H  (gcc)
--- 3221,3233 ----
  
    This switch activates warnings on component clauses in record
    representation clauses that leave holes (gaps) in the record layout.
!   If a record representation clause does not specify a location for
!   every component of the record type, then the warnings generated (or not
!   generated) are unspecified. For example, there may be gaps for which
!   either no warning is generated or a warning is generated that
!   incorrectly describes the location of the gap. This undesirable situation
!   can sometimes be avoided by adding (and specifying the location for) unused
!   fill fields.
  
  
  .. index:: -gnatw.H  (gcc)
*************** of the pragma in the :title:`GNAT_Refere
*** 3275,3282 ****
    If this warning option is activated, then warnings are generated for
    calls to subprograms marked with ``pragma Obsolescent`` and
    for use of features in Annex J of the Ada Reference Manual. In the
!   case of Annex J, not all features are flagged. In particular use
!   of the renamed packages (like ``Text_IO``) and use of package
    ``ASCII`` are not flagged, since these are very common and
    would generate many annoying positive warnings. The default is that
    such warnings are not generated.
--- 3294,3300 ----
    If this warning option is activated, then warnings are generated for
    calls to subprograms marked with ``pragma Obsolescent`` and
    for use of features in Annex J of the Ada Reference Manual. In the
!   case of Annex J, not all features are flagged. In particular, uses of package
    ``ASCII`` are not flagged, since these are very common and
    would generate many annoying positive warnings. The default is that
    such warnings are not generated.
*************** of the pragma in the :title:`GNAT_Refere
*** 3676,3681 ****
--- 3694,3720 ----
    a record type would very likely cause inefficiencies.
  
  
+ .. index:: -gnatw_q  (gcc)
+ 
+ :switch:`-gnatw_q`
+   *Activate warnings for ignored equality operators.*
+ 
+   This switch activates warnings for a user-defined "=" function that does
+   not compose (i.e. is ignored for a predefined "=" for a composite type
+   containing a component whose type has the user-defined "=" as
+   primitive). Note that the user-defined "=" must be a primitive operator
+   in order to trigger the warning.
+   See RM-4.5.2(14/3-15/5, 21, 24/3, 32.1/1)
+   for the exact Ada rules on composability of "=".
+ 
+   The default is that these warnings are not given.
+ 
+ .. index:: -gnatw_Q  (gcc)
+ 
+ :switch:`-gnatw_Q`
+   *Suppress warnings for ignored equality operators.*
+ 
+ 
  .. index:: -gnatwr  (gcc)
  
  :switch:`-gnatwr`
*************** Debugging and Assertion Control
*** 4329,4343 ****
    Which is a shorthand for::
  
         pragma Assertion_Policy
!          (Assert               => Check,
!           Static_Predicate     => Check,
!           Dynamic_Predicate    => Check,
!           Pre                  => Check,
!           Pre'Class            => Check,
!           Post                 => Check,
!           Post'Class           => Check,
!           Type_Invariant       => Check,
!           Type_Invariant'Class => Check);
  
    The pragmas ``Assert`` and ``Debug`` normally have no effect and
    are ignored. This switch, where ``a`` stands for 'assert', causes
--- 4368,4398 ----
    Which is a shorthand for::
  
         pragma Assertion_Policy
!        --  Ada RM assertion pragmas
!          (Assert                    => Check,
!           Static_Predicate          => Check,
!           Dynamic_Predicate         => Check,
!           Pre                       => Check,
!           Pre'Class                 => Check,
!           Post                      => Check,
!           Post'Class                => Check,
!           Type_Invariant            => Check,
!           Type_Invariant'Class      => Check,
!           Default_Initial_Condition => Check,
!        --  GNAT specific assertion pragmas
!           Assert_And_Cut            => Check,
!           Assume                    => Check,
!           Contract_Cases            => Check,
!           Debug                     => Check,
!           Ghost                     => Check,
!           Initial_Condition         => Check,
!           Loop_Invariant            => Check,
!           Loop_Variant              => Check,
!           Postcondition             => Check,
!           Precondition              => Check,
!           Predicate                 => Check,
!           Refined_Post              => Check,
!           Subprogram_Variant        => Check);
  
    The pragmas ``Assert`` and ``Debug`` normally have no effect and
    are ignored. This switch, where ``a`` stands for 'assert', causes
*************** to the default checks required by Ada as
*** 4436,4442 ****
  
    All validity checks are turned on.
    That is, :switch:`-gnatVa` is
!   equivalent to ``gnatVcdfimoprst``.
  
  
  .. index:: -gnatVc  (gcc)
--- 4491,4497 ----
  
    All validity checks are turned on.
    That is, :switch:`-gnatVa` is
!   equivalent to ``gnatVcdefimoprst``.
  
  
  .. index:: -gnatVc  (gcc)
*************** to the default checks required by Ada as
*** 4444,4451 ****
  :switch:`-gnatVc`
    *Validity checks for copies.*
  
!   The right hand side of assignments, and the initializing values of
!   object declarations are validity checked.
  
  
  .. index:: -gnatVd  (gcc)
--- 4499,4506 ----
  :switch:`-gnatVc`
    *Validity checks for copies.*
  
!   The right-hand side of assignments, and the (explicit) initializing values
!   of object declarations are validity checked.
  
  
  .. index:: -gnatVd  (gcc)
*************** to the default checks required by Ada as
*** 4453,4464 ****
  :switch:`-gnatVd`
    *Default (RM) validity checks.*
  
!   Some validity checks are done by default following normal Ada semantics
!   (RM 13.9.1 (9-11)).
!   A check is done in case statements that the expression is within the range
!   of the subtype. If it is not, Constraint_Error is raised.
!   For assignments to array components, a check is done that the expression used
!   as index is within the range. If it is not, Constraint_Error is raised.
    Both these validity checks may be turned off using switch :switch:`-gnatVD`.
    They are turned on by default. If :switch:`-gnatVD` is specified, a subsequent
    switch :switch:`-gnatVd` will leave the checks turned on.
--- 4508,4521 ----
  :switch:`-gnatVd`
    *Default (RM) validity checks.*
  
!   Some validity checks are required by Ada (see RM 13.9.1 (9-11)); these
!   (and only these) validity checks are enabled by default.
!   For case statements (and case expressions) that lack a "when others =>"
!   choice, a check is made that the value of the selector expression
!   belongs to its nominal subtype. If it does not, Constraint_Error is raised.
!   For assignments to array components (and for indexed components in some
!   other contexts), a check is made that each index expression belongs to the
!   corresponding index subtype. If it does not, Constraint_Error is raised.
    Both these validity checks may be turned off using switch :switch:`-gnatVD`.
    They are turned on by default. If :switch:`-gnatVD` is specified, a subsequent
    switch :switch:`-gnatVd` will leave the checks turned on.
*************** to the default checks required by Ada as
*** 4471,4498 ****
  .. index:: -gnatVe  (gcc)
  
  :switch:`-gnatVe`
!   *Validity checks for elementary components.*
! 
!   In the absence of this switch, assignments to record or array components are
!   not validity checked, even if validity checks for assignments generally
!   (:switch:`-gnatVc`) are turned on. In Ada, assignment of composite values do not
!   require valid data, but assignment of individual components does. So for
!   example, there is a difference between copying the elements of an array with a
!   slice assignment, compared to assigning element by element in a loop. This
!   switch allows you to turn off validity checking for components, even when they
!   are assigned component by component.
  
  
  .. index:: -gnatVf  (gcc)
  
  :switch:`-gnatVf`
    *Validity checks for floating-point values.*
  
!   In the absence of this switch, validity checking occurs only for discrete
!   values. If :switch:`-gnatVf` is specified, then validity checking also applies
    for floating-point values, and NaNs and infinities are considered invalid,
!   as well as out of range values for constrained types. Note that this means
!   that standard IEEE infinity mode is not allowed. The exact contexts
    in which floating-point values are checked depends on the setting of other
    options. For example, :switch:`-gnatVif` or :switch:`-gnatVfi`
    (the order does not matter) specifies that floating-point parameters of mode
--- 4528,4558 ----
  .. index:: -gnatVe  (gcc)
  
  :switch:`-gnatVe`
!   *Validity checks for scalar components.*
  
+   In the absence of this switch, assignments to scalar components of
+   enclosing record or array objects are not validity checked, even if
+   validity checks for assignments generally (:switch:`-gnatVc`) are turned on.
+   Specifying this switch enables such checks.
+   This switch has no effect if the :switch:`-gnatVc` switch is not specified.
  
  .. index:: -gnatVf  (gcc)
  
  :switch:`-gnatVf`
    *Validity checks for floating-point values.*
  
!   Specifying this switch enables validity checking for floating-point
!   values in the same contexts where validity checking is enabled for
!   other scalar values.
!   In the absence of this switch, validity checking is not performed for
!   floating-point values. This takes precedence over other statements about
!   performing validity checking for scalar objects in various scenarios.
!   One way to look at it is that if this switch is not set, then whenever
!   any of the other rules in this section use the word "scalar" they
!   really mean "scalar and not floating-point".
!   If :switch:`-gnatVf` is specified, then validity checking also applies
    for floating-point values, and NaNs and infinities are considered invalid,
!   as well as out-of-range values for constrained types. The exact contexts
    in which floating-point values are checked depends on the setting of other
    options. For example, :switch:`-gnatVif` or :switch:`-gnatVfi`
    (the order does not matter) specifies that floating-point parameters of mode
*************** to the default checks required by Ada as
*** 4539,4545 ****
  :switch:`-gnatVo`
    *Validity checks for operator and attribute operands.*
  
!   Arguments for predefined operators and attributes are validity checked.
    This includes all operators in package ``Standard``,
    the shift operators defined as intrinsic in package ``Interfaces``
    and operands for attributes such as ``Pos``. Checks are also made
--- 4599,4606 ----
  :switch:`-gnatVo`
    *Validity checks for operator and attribute operands.*
  
!   Scalar arguments for predefined operators and for attributes are
!   validity checked.
    This includes all operators in package ``Standard``,
    the shift operators defined as intrinsic in package ``Interfaces``
    and operands for attributes such as ``Pos``. Checks are also made
*************** to the default checks required by Ada as
*** 4553,4574 ****
  :switch:`-gnatVp`
    *Validity checks for parameters.*
  
!   This controls the treatment of parameters within a subprogram (as opposed
!   to :switch:`-gnatVi` and :switch:`-gnatVm` which control validity testing
!   of parameters on a call. If either of these call options is used, then
!   normally an assumption is made within a subprogram that the input arguments
!   have been validity checking at the point of call, and do not need checking
!   again within a subprogram). If :switch:`-gnatVp` is set, then this assumption
!   is not made, and parameters are not assumed to be valid, so their validity
!   will be checked (or rechecked) within the subprogram.
! 
  
  .. index:: -gnatVr  (gcc)
  
  :switch:`-gnatVr`
    *Validity checks for function returns.*
  
!   The expression in ``return`` statements in functions is validity
    checked.
  
  
--- 4614,4635 ----
  :switch:`-gnatVp`
    *Validity checks for parameters.*
  
!   This controls the treatment of formal parameters within a subprogram (as
!   opposed to :switch:`-gnatVi` and :switch:`-gnatVm`, which control validity
!   testing of actual parameters of a call). If either of these call options is
!   specified, then normally an assumption is made within a subprogram that
!   the validity of any incoming formal parameters of the corresponding mode(s)
!   has already been checked at the point of call and does not need rechecking.
!   If :switch:`-gnatVp` is set, then this assumption is not made and so their
!   validity may be checked (or rechecked) within the subprogram. If neither of
!   the two call-related options is specified, then this switch has no effect.
  
  .. index:: -gnatVr  (gcc)
  
  :switch:`-gnatVr`
    *Validity checks for function returns.*
  
!   The expression in simple ``return`` statements in functions is validity
    checked.
  
  
*************** to the default checks required by Ada as
*** 4577,4585 ****
  :switch:`-gnatVs`
    *Validity checks for subscripts.*
  
!   All subscripts expressions are checked for validity, whether they appear
!   on the right side or left side (in default mode only left side subscripts
!   are validity checked).
  
  
  .. index:: -gnatVt  (gcc)
--- 4638,4647 ----
  :switch:`-gnatVs`
    *Validity checks for subscripts.*
  
!   All subscript expressions are checked for validity, whatever context
!   they occur in (in default mode some subscripts are not validity checked;
!   for example, validity checking may be omitted in some cases involving
!   a read of a component of an array).
  
  
  .. index:: -gnatVt  (gcc)
*************** checks to be performed. The following ch
*** 5165,5171 ****
  
  
  .. end of switch description (leave this comment to ease automatic parsing for
! .. GNAT Studio
  
  In the above rules, appearing in column one is always permitted, that is,
  counts as meeting either a requirement for a required preceding space,
--- 5227,5233 ----
  
  
  .. end of switch description (leave this comment to ease automatic parsing for
! .. GNAT Studio)
  
  In the above rules, appearing in column one is always permitted, that is,
  counts as meeting either a requirement for a required preceding space,
*************** indicate Ada 83 compatibility mode.
*** 5557,5572 ****
    language.
  
  
! .. index:: -gnatX  (gcc)
  .. index:: Ada language extensions
  .. index:: GNAT extensions
  
! :switch:`-gnatX` (Enable GNAT Extensions)
    This switch directs the compiler to implement the latest version of the
    language (currently Ada 2022) and also to enable certain GNAT implementation
    extensions that are not part of any Ada standard. For a full list of these
    extensions, see the GNAT reference manual, ``Pragma Extensions_Allowed``.
  
  
  .. _Character_Set_Control:
  
--- 5619,5645 ----
    language.
  
  
! .. index:: -gnatX0  (gcc)
  .. index:: Ada language extensions
  .. index:: GNAT extensions
  
! :switch:`-gnatX0` (Enable GNAT Extensions)
    This switch directs the compiler to implement the latest version of the
    language (currently Ada 2022) and also to enable certain GNAT implementation
    extensions that are not part of any Ada standard. For a full list of these
    extensions, see the GNAT reference manual, ``Pragma Extensions_Allowed``.
  
+ .. index:: -gnatX  (gcc)
+ .. index:: Ada language extensions
+ .. index:: GNAT extensions
+ 
+ :switch:`-gnatX` (Enable core GNAT Extensions)
+   This switch is similar to -gnatX0 except that only some, not all, of the
+   GNAT-defined language extensions are enabled. For a list of the
+   extensions enabled by this switch, see the GNAT reference manual
+   ``Pragma Extensions_Allowed`` and the description of that pragma's
+   "On" (as opposed to "All") argument.
+ 
  
  .. _Character_Set_Control:
  
*************** Debugging Control
*** 6015,6024 ****
  
  :switch:`-gnatx`
    Normally the compiler generates full cross-referencing information in
!   the :file:`ALI` file. This information is used by a number of tools,
!   including ``gnatfind`` and ``gnatxref``. The :switch:`-gnatx` switch
!   suppresses this information. This saves some space and may slightly
!   speed up compilation, but means that these tools cannot be used.
  
  
  .. index:: -fgnat-encodings  (gcc)
--- 6088,6097 ----
  
  :switch:`-gnatx`
    Normally the compiler generates full cross-referencing information in
!   the :file:`ALI` file. This information is used by a number of tools.
!   The :switch:`-gnatx` switch suppresses this information. This saves some space
!   and may slightly speed up compilation, but means that tools depending
!   on this information cannot be used.
  
  
  .. index:: -fgnat-encodings  (gcc)
*************** Linker switches can be specified after :
*** 6203,6213 ****
  .. index:: -fuse-ld=name
  
  :switch:`-fuse-ld={name}`
!   Linker to be used. The default is ``bfd`` for :file:`ld.bfd`,
!   the alternative being ``gold`` for :file:`ld.gold`. The later is
!   a more recent and faster linker, but only available on GNU/Linux
    platforms.
  
  .. _Binding_with_gnatbind:
  
  Binding with ``gnatbind``
--- 6276,6308 ----
  .. index:: -fuse-ld=name
  
  :switch:`-fuse-ld={name}`
!   Linker to be used. The default is ``bfd`` for :file:`ld.bfd`; ``gold``
!   (for :file:`ld.gold`) and ``mold`` (for :file:`ld.mold`) are more
!   recent and faster alternatives, but only available on GNU/Linux
    platforms.
  
+   .. only:: PRO
+ 
+     The GNAT distribution for native Linux platforms includes ``mold``,
+     compiled against OpenSSL version 1.1; however, the distribution does
+     not include OpenSSL.  In order to use this linker, you may either:
+ 
+     * use your system's OpenSSL library, if the version matches: in this
+       situation, you need not do anything beside using the
+       :switch:`-fuse-ld=mold` switch,
+ 
+     * obtain a source distribution for OpenSSL 1.1, compile the
+       :file:`libcrypto.so` library and install it in the directory of
+       your choice, then include this directory in the
+       :envvar:`LD_LIBRARY_PATH` environment variable,
+ 
+     * install another copy of ``mold`` by other means in the directory
+       of your choice, and include this directory in the :envvar:`PATH`
+       environment variable; you may find this alternative preferable if
+       the copy of ``mold`` included in GNAT does not suit your needs
+       (e.g. being able to link against your system's OpenSSL, or using
+       another version of ``mold``).
+ 
  .. _Binding_with_gnatbind:
  
  Binding with ``gnatbind``
*************** be presented in subsequent sections.
*** 6515,6520 ****
--- 6610,6631 ----
    ALI file named in the ``gnatbind`` command line.
  
  
+   .. index:: -k  (gnatbind)
+ 
+ :switch:`-k`
+   Disable checking of elaboration flags. When using :switch:`-n`
+   either explicitly or implicitly, :switch:`-F` is also implied,
+   unless :switch:`-k` is used. This switch should be used with care
+   and you should ensure manually that elaboration routines are not called
+   twice unintentionally.
+ 
+ 
+   .. index:: -K  (gnatbind)
+ 
+ :switch:`-K`
+   Give list of linker options specified for link.
+ 
+ 
    .. index:: -l  (gnatbind)
  
  :switch:`-l`
*************** development environments much more flexi
*** 7320,7326 ****
  Examples of ``gnatbind`` Usage
  ------------------------------
  
! Here are some examples of ``gnatbind`` invovations:
  
    ::
  
--- 7431,7437 ----
  Examples of ``gnatbind`` Usage
  ------------------------------
  
! Here are some examples of ``gnatbind`` invocations:
  
    ::
  
*************** which might help you in case your projec
*** 7618,7626 ****
    ##    Each of these csc is put in its own directory.
    ##    Their name are referenced by the directory names.
    ##    They will be compiled into shared library (although this would also work
!   ##    with static libraries
    ##  - The main program (and possibly other packages that do not belong to any
!   ##    csc is put in the top level directory (where the Makefile is).
    ##       toplevel_dir __ first_csc  (sources) __ lib (will contain the library)
    ##                    \\_ second_csc (sources) __ lib (will contain the library)
    ##                    \\_ ...
--- 7729,7737 ----
    ##    Each of these csc is put in its own directory.
    ##    Their name are referenced by the directory names.
    ##    They will be compiled into shared library (although this would also work
!   ##    with static libraries)
    ##  - The main program (and possibly other packages that do not belong to any
!   ##    csc) is put in the top level directory (where the Makefile is).
    ##       toplevel_dir __ first_csc  (sources) __ lib (will contain the library)
    ##                    \\_ second_csc (sources) __ lib (will contain the library)
    ##                    \\_ ...
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/elaboration_order_handling_in_gnat.rst	Wed Apr 26 07:09:39 2023
*************** Elaboration code may appear in two disti
*** 93,99 ****
    [body] compilation unit, ignoring any other package [body] declarations in
    between.
  
!   ::
  
       with Server;
       package Client is
--- 93,99 ----
    [body] compilation unit, ignoring any other package [body] declarations in
    between.
  
!   .. code-block:: ada
  
       with Server;
       package Client is
*************** Elaboration code may appear in two disti
*** 116,122 ****
    bounded by the region starting from the ``begin`` keyword of the package body
    and ending at the ``end`` keyword of the package body.
  
!   ::
  
       package body Client is
          procedure Proc is
--- 116,122 ----
    bounded by the region starting from the ``begin`` keyword of the package body
    and ending at the ``end`` keyword of the package body.
  
!   .. code-block:: ada
  
       package body Client is
          procedure Proc is
*************** executed is referred to as **elaboration
*** 142,148 ****
  
  Within a single unit, elaboration code is executed in sequential order.
  
!   ::
  
       package body Client is
          Result : ... := Server.Func;
--- 142,148 ----
  
  Within a single unit, elaboration code is executed in sequential order.
  
!   .. code-block:: ada
  
       package body Client is
          Result : ... := Server.Func;
*************** factors:
*** 190,202 ****
  
  A program may have several elaboration orders depending on its structure.
  
!   ::
  
       package Server is
          function Func (Index : Integer) return Integer;
       end Server;
  
!   ::
  
       package body Server is
          Results : array (1 .. 5) of Integer := (1, 2, 3, 4, 5);
--- 190,202 ----
  
  A program may have several elaboration orders depending on its structure.
  
!   .. code-block:: ada
  
       package Server is
          function Func (Index : Integer) return Integer;
       end Server;
  
!   .. code-block:: ada
  
       package body Server is
          Results : array (1 .. 5) of Integer := (1, 2, 3, 4, 5);
*************** A program may have several elaboration o
*** 207,220 ****
          end Func;
       end Server;
  
!   ::
  
       with Server;
       package Client is
          Val : constant Integer := Server.Func (3);
       end Client;
  
!   ::
  
       with Client;
       procedure Main is begin null; end Main;
--- 207,220 ----
          end Func;
       end Server;
  
!   .. code-block:: ada
  
       with Server;
       package Client is
          Val : constant Integer := Server.Func (3);
       end Client;
  
!   .. code-block:: ada
  
       with Client;
       procedure Main is begin null; end Main;
*************** respect to control and data flow.
*** 265,271 ****
  Checking the Elaboration Order
  ==============================
  
! To avoid placing the entire elaboration-order burden on the programmer, Ada 
  provides three lines of defense:
  
  * *Static semantics*
--- 265,271 ----
  Checking the Elaboration Order
  ==============================
  
! To avoid placing the entire elaboration-order burden on the programmer, Ada
  provides three lines of defense:
  
  * *Static semantics*
*************** the desired elaboration order and avoidi
*** 320,326 ****
    A library package which does not require a completing body does not suffer
    from ABE problems.
  
!   ::
  
       package Pack is
          generic
--- 320,326 ----
    A library package which does not require a completing body does not suffer
    from ABE problems.
  
!   .. code-block:: ada
  
       package Pack is
          generic
*************** the desired elaboration order and avoidi
*** 358,364 ****
    scenario can invoke a server target before the target body has been
    elaborated because the spec and body are effectively "glued" together.
  
!   ::
  
       package Server is
          pragma Elaborate_Body;
--- 358,364 ----
    scenario can invoke a server target before the target body has been
    elaborated because the spec and body are effectively "glued" together.
  
!   .. code-block:: ada
  
       package Server is
          pragma Elaborate_Body;
*************** the desired elaboration order and avoidi
*** 366,372 ****
          function Func return Integer;
       end Server;
  
!   ::
  
       package body Server is
          function Func return Integer is
--- 366,372 ----
          function Func return Integer;
       end Server;
  
!   .. code-block:: ada
  
       package body Server is
          function Func return Integer is
*************** the desired elaboration order and avoidi
*** 375,381 ****
          end Func;
       end Server;
  
!   ::
  
       with Server;
       package Client is
--- 375,381 ----
          end Func;
       end Server;
  
!   .. code-block:: ada
  
       with Server;
       package Client is
*************** depend on.
*** 425,437 ****
    be elaborated prior to the unit with the pragma. Note that other unrelated
    units may be elaborated in between the spec and the body.
  
!   ::
  
       package Server is
          function Func return Integer;
       end Server;
  
!   ::
  
       package body Server is
          function Func return Integer is
--- 425,437 ----
    be elaborated prior to the unit with the pragma. Note that other unrelated
    units may be elaborated in between the spec and the body.
  
!   .. code-block:: ada
  
       package Server is
          function Func return Integer;
       end Server;
  
!   .. code-block:: ada
  
       package body Server is
          function Func return Integer is
*************** depend on.
*** 440,446 ****
          end Func;
       end Server;
  
!   ::
  
       with Server;
       pragma Elaborate (Server);
--- 440,446 ----
          end Func;
       end Server;
  
!   .. code-block:: ada
  
       with Server;
       pragma Elaborate (Server);
*************** depend on.
*** 479,491 ****
    |withed| by the spec and body of the argument, recursively. Note that other
    unrelated units may be elaborated in between the spec and the body.
  
!   ::
  
       package Math is
          function Factorial (Val : Natural) return Natural;
       end Math;
  
!   ::
  
       package body Math is
          function Factorial (Val : Natural) return Natural is
--- 479,491 ----
    |withed| by the spec and body of the argument, recursively. Note that other
    unrelated units may be elaborated in between the spec and the body.
  
!   .. code-block:: ada
  
       package Math is
          function Factorial (Val : Natural) return Natural;
       end Math;
  
!   .. code-block:: ada
  
       package body Math is
          function Factorial (Val : Natural) return Natural is
*************** depend on.
*** 494,500 ****
          end Factorial;
       end Math;
  
!   ::
  
       package Computer is
          type Operation_Kind is (None, Op_Factorial);
--- 494,500 ----
          end Factorial;
       end Math;
  
!   .. code-block:: ada
  
       package Computer is
          type Operation_Kind is (None, Op_Factorial);
*************** depend on.
*** 504,510 ****
             Op  : Operation_Kind) return Natural;
       end Computer;
  
!   ::
  
       with Math;
       package body Computer is
--- 504,510 ----
             Op  : Operation_Kind) return Natural;
       end Computer;
  
!   .. code-block:: ada
  
       with Math;
       package body Computer is
*************** depend on.
*** 520,526 ****
          end Compute;
       end Computer;
  
!   ::
  
       with Computer;
       pragma Elaborate_All (Computer);
--- 520,526 ----
          end Compute;
       end Computer;
  
!   .. code-block:: ada
  
       with Computer;
       pragma Elaborate_All (Computer);
*************** execution. The warnings can be suppresse
*** 738,744 ****
  A *guaranteed ABE* arises when the body of a target is not elaborated early
  enough, and causes *all* scenarios that directly invoke the target to fail.
  
!   ::
  
       package body Guaranteed_ABE is
          function ABE return Integer;
--- 738,744 ----
  A *guaranteed ABE* arises when the body of a target is not elaborated early
  enough, and causes *all* scenarios that directly invoke the target to fail.
  
!   .. code-block:: ada
  
       package body Guaranteed_ABE is
          function ABE return Integer;
*************** the declaration of ``Val``. This invokes
*** 765,771 ****
  A *conditional ABE* arises when the body of a target is not elaborated early
  enough, and causes *some* scenarios that directly invoke the target to fail.
  
!   ::
  
        1. package body Conditional_ABE is
        2.    procedure Force_Body is null;
--- 765,771 ----
  A *conditional ABE* arises when the body of a target is not elaborated early
  enough, and causes *some* scenarios that directly invoke the target to fail.
  
!   .. code-block:: ada
  
        1. package body Conditional_ABE is
        2.    procedure Force_Body is null;
*************** clauses, elaboration-control pragmas, or
*** 850,868 ****
  
  The following example exhibits an elaboration circularity.
  
!   ::
  
       with B; pragma Elaborate (B);
       package A is
       end A;
  
!   ::
  
       package B is
          procedure Force_Body;
       end B;
  
!   ::
  
       with C;
       package body B is
--- 850,868 ----
  
  The following example exhibits an elaboration circularity.
  
!   .. code-block:: ada
  
       with B; pragma Elaborate (B);
       package A is
       end A;
  
!   .. code-block:: ada
  
       package B is
          procedure Force_Body;
       end B;
  
!   .. code-block:: ada
  
       with C;
       package body B is
*************** The following example exhibits an elabor
*** 871,883 ****
          Elab : constant Integer := C.Func;
       end B;
  
!   ::
  
       package C is
          function Func return Integer;
       end C;
  
!   ::
  
       with A;
       package body C is
--- 871,883 ----
          Elab : constant Integer := C.Func;
       end B;
  
!   .. code-block:: ada
  
       package C is
          function Func return Integer;
       end C;
  
!   .. code-block:: ada
  
       with A;
       package body C is
*************** Resolving Elaboration Circularities
*** 931,939 ****
  ===================================
  
  The most desirable option from the point of view of long-term maintenance is to
! rearrange the program so that the elaboration problems are avoided. One useful 
! technique is to place the elaboration code into separate child packages. 
! Another is to move some of the initialization code to explicitly invoked 
  subprograms, where the program controls the order of initialization explicitly.
  Although this is the most desirable option, it may be impractical and involve
  too much modification, especially in the case of complex legacy code.
--- 931,939 ----
  ===================================
  
  The most desirable option from the point of view of long-term maintenance is to
! rearrange the program so that the elaboration problems are avoided. One useful
! technique is to place the elaboration code into separate child packages.
! Another is to move some of the initialization code to explicitly invoked
  subprograms, where the program controls the order of initialization explicitly.
  Although this is the most desirable option, it may be impractical and involve
  too much modification, especially in the case of complex legacy code.
*************** following tactics to eliminate the circu
*** 990,997 ****
       change pragma Elaborate_All for unit "..." to Elaborate in unit "..."
  
    This tactic is always suggested with the pragma ``Elaborate_All`` elimination
!   tactic. It offers a different alernative of guaranteeing that the argument of
!   the pragma will still be elaborated prior to the unit containing the pragma.
  
    The programmer should update the pragma as advised, and rebuild the program.
  
--- 990,998 ----
       change pragma Elaborate_All for unit "..." to Elaborate in unit "..."
  
    This tactic is always suggested with the pragma ``Elaborate_All`` elimination
!   tactic. It offers a different alternative of guaranteeing that the argument
!   of the pragma will still be elaborated prior to the unit containing the
!   pragma.
  
    The programmer should update the pragma as advised, and rebuild the program.
  
*************** Summary of Procedures for Elaboration Co
*** 1281,1287 ****
  
  A programmer should first compile the program with the default options, using
  none of the binder or compiler switches. If the binder succeeds in finding an
! elaboration order, then apart from possible cases involing dispatching calls
  and access-to-subprogram types, the program is free of elaboration errors.
  
  If it is important for the program to be portable to compilers other than GNAT,
--- 1282,1288 ----
  
  A programmer should first compile the program with the default options, using
  none of the binder or compiler switches. If the binder succeeds in finding an
! elaboration order, then apart from possible cases involving dispatching calls
  and access-to-subprogram types, the program is free of elaboration errors.
  
  If it is important for the program to be portable to compilers other than GNAT,
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/gnat_and_program_execution.rst	Wed Apr 26 07:09:39 2023
*************** Ada Tasks
*** 433,439 ****
  
  .. index:: Breakpoints and tasks
  
! * ``break``*linespec* ``task`` *taskid*, ``break`` *linespec* ``task`` *taskid* ``if`` ...
  
      These commands are like the ``break ... thread ...``.
      *linespec* specifies source lines.
--- 433,439 ----
  
  .. index:: Breakpoints and tasks
  
! * ``break`` *linespec* ``task`` *taskid*, ``break`` *linespec* ``task`` *taskid* ``if`` ...
  
      These commands are like the ``break ... thread ...``.
      *linespec* specifies source lines.
*************** for a complete list of supported platfor
*** 756,767 ****
  .. rubric:: Tracebacks From an Unhandled Exception
  
  A runtime non-symbolic traceback is a list of addresses of call instructions.
! To enable this feature you must use the :switch:`-E`
! ``gnatbind`` option. With this option a stack traceback is stored as part
! of exception information. You can retrieve this information using the
! ``addr2line`` tool.
  
! Here is a simple example:
  
    .. code-block:: ada
  
--- 756,769 ----
  .. rubric:: Tracebacks From an Unhandled Exception
  
  A runtime non-symbolic traceback is a list of addresses of call instructions.
! To enable this feature you must use the :switch:`-E` ``gnatbind`` option. With
! this option a stack traceback is stored as part of exception information.
  
! You can translate this information using the ``addr2line`` tool, provided that
! the program is compiled with debugging options (see :ref:`Switches_for_gcc`)
! and linked at a fixed position with :switch:`-no-pie`.
! 
! Here is a simple example with ``gnatmake``:
  
    .. code-block:: ada
  
*************** Here is a simple example:
*** 783,876 ****
  
    ::
  
!      $ gnatmake stb -bargs -E
       $ stb
  
!      Execution terminated by unhandled exception
!      Exception name: CONSTRAINT_ERROR
!      Message: stb.adb:5
       Call stack traceback locations:
       0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
  
  As we see the traceback lists a sequence of addresses for the unhandled
  exception ``CONSTRAINT_ERROR`` raised in procedure P1. It is easy to
  guess that this exception come from procedure P1. To translate these
! addresses into the source lines where the calls appear, the
! ``addr2line`` tool, described below, is invaluable. The use of this tool
! requires the program to be compiled with debug information.
  
    ::
  
!      $ gnatmake -g stb -bargs -E
!      $ stb
! 
!      Execution terminated by unhandled exception
!      Exception name: CONSTRAINT_ERROR
!      Message: stb.adb:5
!      Call stack traceback locations:
!      0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
! 
!      $ addr2line --exe=stb 0x401373 0x40138b 0x40139c 0x401335 0x4011c4
          0x4011f1 0x77e892a4
  
!      00401373 at d:/stb/stb.adb:5
!      0040138B at d:/stb/stb.adb:10
!      0040139C at d:/stb/stb.adb:14
!      00401335 at d:/stb/b~stb.adb:104
!      004011C4 at /build/.../crt1.c:200
!      004011F1 at /build/.../crt1.c:222
!      77E892A4 in ?? at ??:0
  
  The ``addr2line`` tool has several other useful options:
  
!   ======================== ========================================================
!   :samp:`--functions`      to get the function name corresponding to any location
!   :samp:`--demangle=gnat`  to use the gnat decoding mode for the function names.
!                            Note that for binutils version 2.9.x the option is
!                            simply :samp:`--demangle`.
!   ======================== ========================================================
  
    ::
  
!      $ addr2line --exe=stb --functions --demangle=gnat 0x401373 0x40138b
!         0x40139c 0x401335 0x4011c4 0x4011f1
  
!      00401373 in stb.p1 at d:/stb/stb.adb:5
!      0040138B in stb.p2 at d:/stb/stb.adb:10
!      0040139C in stb at d:/stb/stb.adb:14
!      00401335 in main at d:/stb/b~stb.adb:104
!      004011C4 in <__mingw_CRTStartup> at /build/.../crt1.c:200
!      004011F1 in <mainCRTStartup> at /build/.../crt1.c:222
  
! From this traceback we can see that the exception was raised in
! :file:`stb.adb` at line 5, which was reached from a procedure call in
! :file:`stb.adb` at line 10, and so on. The :file:`b~std.adb` is the binder file,
! which contains the call to the main program.
! :ref:`Running_gnatbind`. The remaining entries are assorted runtime routines,
! and the output will vary from platform to platform.
  
  It is also possible to use ``GDB`` with these traceback addresses to debug
  the program. For example, we can break at a given code location, as reported
! in the stack traceback:
! 
!   ::
  
       $ gdb -nw stb
  
- Furthermore, this feature is not implemented inside Windows DLL. Only
- the non-symbolic traceback is reported in this case.
- 
-   ::
- 
       (gdb) break *0x401373
       Breakpoint 1 at 0x401373: file stb.adb, line 5.
  
! It is important to note that the stack traceback addresses
! do not change when debug information is included. This is particularly useful
! because it makes it possible to release software without debug information (to
! minimize object size), get a field report that includes a stack traceback
! whenever an internal bug occurs, and then be able to retrieve the sequence
! of calls with the same program compiled with debug information.
  
  
  .. rubric:: Tracebacks From Exception Occurrences
--- 785,896 ----
  
    ::
  
!      $ gnatmake stb -g -bargs -E -largs -no-pie
       $ stb
  
!      Execution of stb terminated by unhandled exception
!      raised CONSTRAINT_ERROR : stb.adb:5 explicit raise
!      Load address: 0x400000
       Call stack traceback locations:
       0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
  
  As we see the traceback lists a sequence of addresses for the unhandled
  exception ``CONSTRAINT_ERROR`` raised in procedure P1. It is easy to
  guess that this exception come from procedure P1. To translate these
! addresses into the source lines where the calls appear, the ``addr2line``
! tool needs to be invoked like this:
  
    ::
  
!      $ addr2line -e stb 0x401373 0x40138b 0x40139c 0x401335 0x4011c4
          0x4011f1 0x77e892a4
  
!      d:/stb/stb.adb:5
!      d:/stb/stb.adb:10
!      d:/stb/stb.adb:14
!      d:/stb/b~stb.adb:197
!      crtexe.c:?
!      crtexe.c:?
!      ??:0
  
  The ``addr2line`` tool has several other useful options:
  
!   =========================  ====================================================
!   :samp:`-a --addresses`     to show the addresses alongside the line numbers
!   :samp:`-f --functions`     to get the function name corresponding to a location
!   :samp:`-p --pretty-print`  to print all the information on a single line
!   :samp:`--demangle=gnat`    to use the GNAT decoding mode for the function names
!   =========================  ====================================================
  
    ::
  
!      $ addr2line -e stb -a -f -p --demangle=gnat 0x401373 0x40138b
!         0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
  
!      0x00401373: stb.p1 at d:/stb/stb.adb:5
!      0x0040138B: stb.p2 at d:/stb/stb.adb:10
!      0x0040139C: stb at d:/stb/stb.adb:14
!      0x00401335: main at d:/stb/b~stb.adb:197
!      0x004011c4: ?? at crtexe.c:?
!      0x004011f1: ?? at crtexe.c:?
!      0x77e892a4: ?? ??:0
  
! 
! From this traceback we can see that the exception was raised in :file:`stb.adb`
! at line 5, which was reached from a procedure call in :file:`stb.adb` at line
! 10, and so on. The :file:`b~std.adb` is the binder file, which contains the
! call to the main program. :ref:`Running_gnatbind`. The remaining entries are
! assorted runtime routines and the output will vary from platform to platform.
  
  It is also possible to use ``GDB`` with these traceback addresses to debug
  the program. For example, we can break at a given code location, as reported
! in the stack traceback::
  
       $ gdb -nw stb
  
       (gdb) break *0x401373
       Breakpoint 1 at 0x401373: file stb.adb, line 5.
  
! It is important to note that the stack traceback addresses do not change when
! debug information is included. This is particularly useful because it makes it
! possible to release software without debug information (to minimize object
! size), get a field report that includes a stack traceback whenever an internal
! bug occurs, and then be able to retrieve the sequence of calls with the same
! program compiled with debug information.
! 
! However the ``addr2line`` tool does not work with Position-Independent Code
! (PIC), the historical example being Linux dynamic libraries and Windows DLLs,
! which nowadays encompasse Position-Independent Executables (PIE) on recent
! Linux and Windows versions.
! 
! In order to translate addresses the source lines with Position-Independent
! Executables on recent Linux and Windows versions, in other words without
! using the switch :switch:`-no-pie` during linking, you need to use the
! ``gnatsymbolize`` tool with :switch:`--load` instead of the ``addr2line``
! tool. The main difference is that you need to copy the Load Address output
! in the traceback ahead of the sequence of addresses. And the default mode
! of ``gnatsymbolize`` is equivalent to that of ``addr2line`` with the above
! switches, so none of them is needed::
! 
!      $ gnatmake stb -g -bargs -E
!      $ stb
! 
!      Execution of stb terminated by unhandled exception
!      raised CONSTRAINT_ERROR : stb.adb:5 explicit raise
!      Load address: 0x400000
!      Call stack traceback locations:
!      0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
! 
!      $ gnatsymbolize --load stb 0x400000 0x401373 0x40138b 0x40139c 0x401335 \
!         0x4011c4 0x4011f1 0x77e892a4
! 
!      0x00401373 Stb.P1 at stb.adb:5
!      0x0040138B Stb.P2 at stb.adb:10
!      0x0040139C Stb at stb.adb:14
!      0x00401335 Main at b~stb.adb:197
!      0x004011c4 __tmainCRTStartup at ???
!      0x004011f1 mainCRTStartup at ???
!      0x77e892a4 ??? at ???
  
  
  .. rubric:: Tracebacks From Exception Occurrences
*************** Ada facilities defined in ``Ada.Exceptio
*** 908,938 ****
           P2;
        end STB;
  
- This program will output:
- 
    ::
  
       $ stb
  
!      Exception name: CONSTRAINT_ERROR
!      Message: stb.adb:12
       Call stack traceback locations:
       0x4015e4 0x401633 0x401644 0x401461 0x4011c4 0x4011f1 0x77e892a4
  
  
  .. rubric:: Tracebacks From Anywhere in a Program
  
! It is also possible to retrieve a stack traceback from anywhere in a
! program. For this you need to
! use the ``GNAT.Traceback`` API. This package includes a procedure called
! ``Call_Chain`` that computes a complete stack traceback, as well as useful
! display procedures described below. It is not necessary to use the
! :switch:`-E` ``gnatbind`` option in this case, because the stack traceback mechanism
! is invoked explicitly.
  
! In the following example we compute a traceback at a specific location in
! the program, and we display it using ``GNAT.Debug_Utilities.Image`` to
! convert addresses to strings:
  
  
    .. code-block:: ada
--- 928,956 ----
           P2;
        end STB;
  
    ::
  
+      $ gnatmake stb -g -bargs -E -largs -no-pie
       $ stb
  
!      raised CONSTRAINT_ERROR : stb.adb:12 range check failed
!      Load address: 0x400000
       Call stack traceback locations:
       0x4015e4 0x401633 0x401644 0x401461 0x4011c4 0x4011f1 0x77e892a4
  
  
  .. rubric:: Tracebacks From Anywhere in a Program
  
! It is also possible to retrieve a stack traceback from anywhere in a program.
! For this you need to use the ``GNAT.Traceback`` API. This package includes a
! procedure called ``Call_Chain`` that computes a complete stack traceback, as
! well as useful display procedures described below. It is not necessary to use
! the :switch:`-E` ``gnatbind`` option in this case, because the stack traceback
! mechanism is invoked explicitly.
  
! In the following example we compute a traceback at a specific location in the
! program, and we display it using ``GNAT.Debug_Utilities.Image`` to convert
! addresses to strings:
  
  
    .. code-block:: ada
*************** convert addresses to strings:
*** 940,951 ****
--- 958,974 ----
        with Ada.Text_IO;
        with GNAT.Traceback;
        with GNAT.Debug_Utilities;
+       with System;
  
        procedure STB is
  
           use Ada;
+          use Ada.Text_IO;
           use GNAT;
           use GNAT.Traceback;
+          use System;
+ 
+          LA : constant Address := Executable_Load_Address;
  
           procedure P1 is
              TB  : Tracebacks_Array (1 .. 10);
*************** convert addresses to strings:
*** 955,968 ****
           begin
              Call_Chain (TB, Len);
  
!             Text_IO.Put ("In STB.P1 : ");
  
              for K in 1 .. Len loop
!                Text_IO.Put (Debug_Utilities.Image (TB (K)));
!                Text_IO.Put (' ');
              end loop;
  
!             Text_IO.New_Line;
           end P1;
  
           procedure P2 is
--- 978,991 ----
           begin
              Call_Chain (TB, Len);
  
!             Put ("In STB.P1 : ");
  
              for K in 1 .. Len loop
!                Put (Debug_Utilities.Image_C (TB (K)));
!                Put (' ');
              end loop;
  
!             New_Line;
           end P1;
  
           procedure P2 is
*************** convert addresses to strings:
*** 971,991 ****
           end P2;
  
        begin
           P2;
        end STB;
  
    ::
  
!      $ gnatmake -g stb
       $ stb
  
!      In STB.P1 : 16#0040_F1E4# 16#0040_14F2# 16#0040_170B# 16#0040_171C#
!      16#0040_1461# 16#0040_11C4# 16#0040_11F1# 16#77E8_92A4#
  
  
! You can then get further information by invoking the ``addr2line``
! tool as described earlier (note that the hexadecimal addresses
! need to be specified in C format, with a leading '0x').
  
  .. index:: traceback, symbolic
  
--- 994,1019 ----
           end P2;
  
        begin
+          if LA /= Null_Address then
+             Put_Line ("Load address: " & Debug_Utilities.Image_C (LA));
+          end if;
+ 
           P2;
        end STB;
  
    ::
  
!      $ gnatmake stb -g
       $ stb
  
!      Load address: 0x400000
!      In STB.P1 : 0x40F1E4 0x4014F2 0x40170B 0x40171C 0x401461 0x4011C4 \
!        0x4011F1 0x77E892A4
  
  
! You can then get further information by invoking the ``addr2line`` tool or
! the ``gnatsymbolize`` tool as described earlier (note that the hexadecimal
! addresses need to be specified in C format, with a leading '0x').
  
  .. index:: traceback, symbolic
  
*************** Here is an example:
*** 1041,1047 ****
  
    ::
  
!       $ gnatmake -g .\stb -bargs -E
        $ stb
  
        0040149F in stb.p1 at stb.adb:8
--- 1069,1075 ----
  
    ::
  
!       $ gnatmake -g stb -bargs -E
        $ stb
  
        0040149F in stb.p1 at stb.adb:8
*************** Here is an example:
*** 1053,1068 ****
        004011F1 in mainCRTStartup at crt1.c:222
        77E892A4 in ?? at ??:0
  
- In the above example the ``.\`` syntax in the ``gnatmake`` command
- is currently required by ``addr2line`` for files that are in
- the current working directory.
- Moreover, the exact sequence of linker options may vary from platform
- to platform.
- The above :switch:`-largs` section is for Windows platforms. By contrast,
- under Unix there is no need for the :switch:`-largs` section.
- Differences across platforms are due to details of linker implementation.
- 
- 
  .. rubric:: Tracebacks From Anywhere in a Program
  
  It is possible to get a symbolic stack traceback
--- 1081,1086 ----
*************** most often, and are therefore the most t
*** 1235,1242 ****
  better handle Ada programs and multitasking.
  It is currently supported on the following platforms
  
! * linux x86/x86_64
! * windows x86
  
  In order to profile a program using ``gprof``, several steps are needed:
  
--- 1253,1260 ----
  better handle Ada programs and multitasking.
  It is currently supported on the following platforms
  
! * Linux x86/x86_64
! * Windows x86/x86_64 (without PIE support)
  
  In order to profile a program using ``gprof``, several steps are needed:
  
*************** Note that only the objects that were com
*** 1274,1279 ****
--- 1292,1301 ----
  be profiled; if you need to profile your whole project, use the ``-f``
  gnatmake switch to force full recompilation.
  
+ Note that on Windows, gprof does not support PIE. The ``-no-pie`` switch
+ should be added to the linker flags to disable this feature.
+ 
+ 
  .. _Program_execution:
  
  
*************** or simply:
*** 1306,1312 ****
  
    ::
  
!     $  gprof my_prog
  
  The complete form of the gprof command line is the following:
  
--- 1328,1334 ----
  
    ::
  
!     $ gprof my_prog
  
  The complete form of the gprof command line is the following:
  
*************** Use of Restrictions
*** 1494,1500 ****
  The use of pragma Restrictions allows you to control which features are
  permitted in your program. Apart from the obvious point that if you avoid
  relatively expensive features like finalization (enforceable by the use
! of pragma Restrictions (No_Finalization), the use of this pragma does not
  affect the generated code in most cases.
  
  One notable exception to this rule is that the possibility of task abort
--- 1516,1522 ----
  The use of pragma Restrictions allows you to control which features are
  permitted in your program. Apart from the obvious point that if you avoid
  relatively expensive features like finalization (enforceable by the use
! of pragma Restrictions (No_Finalization)), the use of this pragma does not
  affect the generated code in most cases.
  
  One notable exception to this rule is that the possibility of task abort
*************** the typing system. Consider the followin
*** 2101,2111 ****
           function to_a2 (Input : a1) return a2;
        end p2;
  
!       with Unchecked_Conversion;
        package body p2 is
           function to_a2 (Input : a1) return a2 is
              function to_a2u is
!               new Unchecked_Conversion (a1, a2);
           begin
              return to_a2u (Input);
           end to_a2;
--- 2123,2133 ----
           function to_a2 (Input : a1) return a2;
        end p2;
  
!       with Ada.Unchecked_Conversion;
        package body p2 is
           function to_a2 (Input : a1) return a2 is
              function to_a2u is
!               new Ada.Unchecked_Conversion (a1, a2);
           begin
              return to_a2u (Input);
           end to_a2;
*************** the warning off:
*** 2198,2204 ****
  
       pragma Warnings (Off);
       function to_a2u is
!        new Unchecked_Conversion (a1, a2);
       pragma Warnings (On);
  
  Of course that approach is not appropriate for this particular
--- 2220,2226 ----
  
       pragma Warnings (Off);
       function to_a2u is
!        new Ada.Unchecked_Conversion (a1, a2);
       pragma Warnings (On);
  
  Of course that approach is not appropriate for this particular
*************** erroneous, and the compiler would be ent
*** 2304,2310 ****
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
! levels of optimzization.
  
  What the compiler does for such cases is to assume that marking
  a variable as aliased indicates that some "funny business" may
--- 2326,2332 ----
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
! levels of optimization.
  
  What the compiler does for such cases is to assume that marking
  a variable as aliased indicates that some "funny business" may
*************** If ``Text_IO`` must be used, note that b
*** 2452,2458 ****
  output and standard error files is unbuffered (this provides better
  behavior when output statements are used for debugging, or if the
  progress of a program is observed by tracking the output, e.g. by
! using the Unix *tail -f* command to watch redirected output.
  
  If you are generating large volumes of output with ``Text_IO`` and
  performance is an important factor, use a designated file instead
--- 2474,2480 ----
  output and standard error files is unbuffered (this provides better
  behavior when output statements are used for debugging, or if the
  progress of a program is observed by tracking the output, e.g. by
! using the Unix *tail -f* command to watch redirected output).
  
  If you are generating large volumes of output with ``Text_IO`` and
  performance is an important factor, use a designated file instead
*************** To deal with the portability issue, and
*** 2711,2717 ****
  mathematical versus run-time interpretation of the expressions in
  assertions, GNAT provides comprehensive control over the handling
  of intermediate overflow. GNAT can operate in three modes, and
! furthemore, permits separate selection of operating modes for
  the expressions within assertions (here the term 'assertions'
  is used in the technical sense, which includes preconditions and so forth)
  and for expressions appearing outside assertions.
--- 2733,2739 ----
  mathematical versus run-time interpretation of the expressions in
  assertions, GNAT provides comprehensive control over the handling
  of intermediate overflow. GNAT can operate in three modes, and
! furthermore, permits separate selection of operating modes for
  the expressions within assertions (here the term 'assertions'
  is used in the technical sense, which includes preconditions and so forth)
  and for expressions appearing outside assertions.
*************** properly allocated memory location. Here
*** 3590,3598 ****
  
    .. code-block:: ada
  
!       with Gnat.Io; use Gnat.Io;
!       with Unchecked_Deallocation;
!       with Unchecked_Conversion;
        with GNAT.Debug_Pools;
        with System.Storage_Elements;
        with Ada.Exceptions; use Ada.Exceptions;
--- 3612,3620 ----
  
    .. code-block:: ada
  
!       with GNAT.IO; use GNAT.IO;
!       with Ada.Unchecked_Deallocation;
!       with Ada.Unchecked_Conversion;
        with GNAT.Debug_Pools;
        with System.Storage_Elements;
        with Ada.Exceptions; use Ada.Exceptions;
*************** properly allocated memory location. Here
*** 3604,3611 ****
           P : GNAT.Debug_Pools.Debug_Pool;
           for T'Storage_Pool use P;
  
!          procedure Free is new Unchecked_Deallocation (Integer, T);
!          function UC is new Unchecked_Conversion (U, T);
           A, B : aliased T;
  
           procedure Info is new GNAT.Debug_Pools.Print_Info(Put_Line);
--- 3626,3633 ----
           P : GNAT.Debug_Pools.Debug_Pool;
           for T'Storage_Pool use P;
  
!          procedure Free is new Ada.Unchecked_Deallocation (Integer, T);
!          function UC is new Ada.Unchecked_Conversion (U, T);
           A, B : aliased T;
  
           procedure Info is new GNAT.Debug_Pools.Print_Info(Put_Line);
*************** execution of this erroneous program:
*** 3716,3727 ****
    allocation and deallocation routines. This is done by linking with the
    :file:`libgmem.a` library. For correct symbolic backtrace information,
    the user program should also both be compiled with debugging options
!   (see :ref:`Switches_for_gcc`) and be linked at a fixed position. For
!   example to build :file:`my_program` with ``gnatmake``:
  
      ::
  
!        $ gnatmake -g my_program -largs -lgmem -no-pie
  
    As library :file:`libgmem.a` contains an alternate body for package
    ``System.Memory``, :file:`s-memory.adb` should not be compiled and linked
--- 3738,3750 ----
    allocation and deallocation routines. This is done by linking with the
    :file:`libgmem.a` library. For correct symbolic backtrace information,
    the user program should also both be compiled with debugging options
!   (see :ref:`Switches_for_gcc`) and be linked at a fixed position with
!   :switch:`-no-pie`. For example to build :file:`my_program` with
!   ``gnatmake``:
  
      ::
  
!        $ gnatmake my_program -g -largs -lgmem -no-pie
  
    As library :file:`libgmem.a` contains an alternate body for package
    ``System.Memory``, :file:`s-memory.adb` should not be compiled and linked
*************** execution of this erroneous program:
*** 3864,3875 ****
  
      .. code-block:: ada
  
!        with Unchecked_Deallocation;
         procedure Test_Gm is
  
            type T is array (1..1000) of Integer;
            type Ptr is access T;
!           procedure Free is new Unchecked_Deallocation (T, Ptr);
            A : Ptr;
  
            procedure My_Alloc is
--- 3887,3898 ----
  
      .. code-block:: ada
  
!        with Ada.Unchecked_Deallocation;
         procedure Test_Gm is
  
            type T is array (1..1000) of Integer;
            type Ptr is access T;
!           procedure Free is new Ada.Unchecked_Deallocation (T, Ptr);
            A : Ptr;
  
            procedure My_Alloc is
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/gnat_utility_programs.rst	Wed Apr 26 07:09:39 2023
*************** This chapter describes a number of utili
*** 14,24 ****
  
    * :ref:`The_File_Cleanup_Utility_gnatclean`
    * :ref:`The_GNAT_Library_Browser_gnatls`
-   * :ref:`The_Coding_Standard_Verifier_gnatcheck`
-   * :ref:`The_GNAT_Metrics_Tool_gnatmetric`
    * :ref:`The_GNAT_Pretty_Printer_gnatpp`
    * :ref:`The_Body_Stub_Generator_gnatstub`
-   * :ref:`The_Unit_Test_Generator_gnattest`
    * :ref:`The_Backtrace_Symbolizer_gnatsymbolize`
  
    It also describes how several of these tools can be used in conjunction
--- 14,21 ----
*************** building specialized scripts.
*** 469,1612 ****
  
  .. only:: PRO or GPL
  
-   .. _The_Coding_Standard_Verifier_gnatcheck:
- 
-   The Coding Standard Verifier ``gnatcheck``
-   ==========================================
- 
-   .. index:: ! gnatcheck
-   .. index:: ASIS
- 
-   The ``gnatcheck`` tool is an ASIS-based utility that checks coding standard
-   compliance of Ada source files according to a given set of semantic rules.
- 
-   ``gnatcheck`` is a project-aware tool
-   (see :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
-   the project-related switches). The project file package that can specify
-   ``gnatcheck`` switches is named ``Check``.
- 
-   For full details, plese refer to :title:`GNATcheck Reference Manual`.
- 
- 
- 
- .. only:: PRO or GPL
- 
-   .. _The_GNAT_Metrics_Tool_gnatmetric:
- 
-   The GNAT Metrics Tool ``gnatmetric``
-   ====================================
- 
-   .. index:: ! gnatmetric
-   .. index:: Metric tool
- 
-   The ``gnatmetric`` tool is a utility
-   for computing various program metrics.
-   It takes an Ada source file as input and generates a file containing the
-   metrics data as output. Various switches control which
-   metrics are reported.
- 
-   ``gnatmetric`` is a project-aware tool
-   (see :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
-   the project-related switches). The project file package that can specify
-   ``gnatmetric`` switches is named ``Metrics``.
- 
-   The ``gnatmetric`` command has the form
- 
-     ::
- 
-        $ gnatmetric [ switches ] { filename }
- 
-   where:
- 
-   * ``switches`` specify the metrics to compute and define the destination for
-     the output
- 
-   * Each ``filename`` is the name of a source file to process. 'Wildcards' are
-     allowed, and the file name may contain path information.  If no
-     ``filename`` is supplied, then the ``switches`` list must contain at least
-     one :switch:`--files` switch (see :ref:`Other_gnatmetric_Switches`).
-     Including both a :switch:`--files` switch and one or more ``filename``
-     arguments is permitted.
- 
-     Note that it is no longer necessary to specify the Ada language version;
-     ``gnatmetric`` can process Ada source code written in any version from
-     Ada 83 onward without specifying any language version switch.
- 
-   The following subsections describe the various switches accepted by
-   ``gnatmetric``, organized by category.
- 
-   .. _Output_File_Control-gnatmetric:
- 
-   Output File Control
-   -------------------
- 
-   .. index:: Output file control in gnatmetric
- 
-   ``gnatmetric`` has two output formats. It can generate a
-   textual (human-readable) form, and also XML. By default only textual
-   output is generated.
- 
-   When generating the output in textual form, ``gnatmetric`` creates
-   for each Ada source file a corresponding text file
-   containing the computed metrics, except for the case when the set of metrics
-   specified by gnatmetric parameters consists only of metrics that are computed
-   for the whole set of analyzed sources, but not for each Ada source.
-   By default, the name of the file containing metric information for a source
-   is obtained by appending the :file:`.metrix` suffix to the
-   name of the input source file. If not otherwise specified and no project file
-   is specified as ``gnatmetric`` option this file is placed in the same
-   directory as where the source file is located. If ``gnatmetric`` has a
-   project  file as its parameter, it places all the generated files in the
-   object directory of the project (or in the project source directory if the
-   project does not define an object directory). If :switch:`--subdirs` option
-   is specified, the files are placed in the subrirectory of this directory
-   specified by this option.
- 
-   All the output information generated in XML format is placed in a single
-   file. By default the name of this file is :file:`metrix.xml`.
-   If not otherwise specified and if no project file is specified
-   as ``gnatmetric`` option this file is placed in the
-   current directory.
- 
-   Some of the computed metrics are summed over the units passed to
-   ``gnatmetric``; for example, the total number of lines of code.
-   By default this information is sent to :file:`stdout`, but a file
-   can be specified with the :switch:`--global-file-name` switch.
- 
-   The following switches control the ``gnatmetric`` output:
- 
-   .. index:: --generate-xml-output (gnatmetric)
- 
-   :switch:`--generate-xml-output`
-     Generate XML output.
- 
-   .. index:: --generate-xml-schema (gnatmetric)
- 
-   :switch:`--generate-xml-schema`
-     Generate XML output and an XML schema file that describes the structure
-     of the XML metric report. This schema is assigned to the XML file. The schema
-     file has the same name as the XML output file with :file:`.xml` suffix replaced
-     with :file:`.xsd`.
- 
-   .. index:: --no-text-output (gnatmetric)
- 
- 
-   :switch:`--no-text-output`
-     Do not generate the output in text form (implies :switch:`-x`).
- 
-   .. index:: --output-dir (gnatmetric)
- 
- 
-   :switch:`--output-dir={output_dir}`
-     Put text files with detailed metrics into ``output_dir``.
- 
-   .. index:: --output-suffix (gnatmetric)
- 
- 
-   :switch:`--output-suffix={file_suffix}`
-     Use ``file_suffix``, instead of :file:`.metrix`
-     in the name of the output file.
- 
-   .. index:: --global-file-name (gnatmetric)
- 
-   :switch:`--global-file-name={file_name}`
-     Put global metrics into ``file_name``.
- 
-   .. index:: --xml-file-name (gnatmetric)
- 
- 
-   :switch:`--xml-file-name={file_name}`
-     Put the XML output into ``file_name``
-     (also implies :switch:`--generate-xml-output`).
- 
-   .. index:: --short-file-names (gnatmetric)
- 
-   :switch:`--short-file-names`
-     Use 'short' source file names in the output. (The ``gnatmetric``
-     output includes the name(s) of the Ada source file(s) from which the
-     metrics are computed. By default each name includes the absolute
-     path. The :switch:`--short-file-names` switch causes ``gnatmetric``
-     to exclude all directory information from the file names that are
-     output.)
- 
-    .. index:: --wide-character-encoding (gnatmetric)
- 
-    :switch:`--wide-character-encoding={e}`
-      Specify the wide character encoding method for the input and output
-      files. ``e`` is one of the following:
- 
-      * *8* - UTF-8 encoding
- 
-      * *b* - Brackets encoding (default value)
- 
- 
-   .. index:: Disable Metrics For Local Units in gnatmetric
- 
-   .. _Disable_Metrics_For_Local_Units:
- 
-   Disable Metrics For Local Units
-   -------------------------------
- 
-   ``gnatmetric`` relies on the GNAT compilation model --
-   one compilation
-   unit per one source file. It computes line metrics for the whole source
-   file, and it also computes syntax
-   and complexity metrics for the file's outermost unit.
- 
-   By default, ``gnatmetric`` will also compute all metrics for certain
-   kinds of locally declared program units:
- 
-   * subprogram (and generic subprogram) bodies;
- 
-   * package (and generic package) specs and bodies;
- 
-   * task object and type specifications and bodies;
- 
-   * protected object and type specifications and bodies.
- 
-   .. index:: Eligible local unit (for gnatmetric)
- 
-   These kinds of entities will be referred to as
-   *eligible local program units*, or simply *eligible local units*,
-   in the discussion below.
- 
-   Note that a subprogram declaration, generic instantiation,
-   or renaming declaration only receives metrics
-   computation when it appear as the outermost entity
-   in a source file.
- 
-   Suppression of metrics computation for eligible local units can be
-   obtained via the following switch:
- 
- 
-   .. index:: --no-local-metrics (gnatmetric)
- 
- 
-   :switch:`--no-local-metrics`
-     Do not compute detailed metrics for eligible local program units.
- 
- 
-   .. _Specifying_a_set_of_metrics_to_compute:
- 
-   Specifying a set of metrics to compute
-   --------------------------------------
- 
-   By default all the metrics are reported. The switches described in this
-   subsection allow you to control, on an individual basis, whether metrics are
-   reported. If at least one positive metric switch is specified (that is, a
-   switch that defines that a given metric or set of metrics is to be computed),
-   then only explicitly specified metrics are reported.
- 
-   .. _Line_Metrics_Control:
- 
-   Line Metrics Control
-   ^^^^^^^^^^^^^^^^^^^^
- 
-   .. index:: Line metrics control in gnatmetric
- 
-   For each source file, and for each of its eligible local program
-   units, ``gnatmetric`` computes the following metrics:
- 
-   * the total number of lines;
- 
-   * the total number of code lines (i.e., non-blank lines that are not
-     comments)
- 
-   * the number of comment lines
- 
-   * the number of code lines containing end-of-line comments;
- 
-   * the comment percentage: the ratio between the number of lines that
-     contain comments and the number of all non-blank lines, expressed as
-     a percentage
- 
-   * the number of empty lines and lines containing only space characters
-     and/or format effectors (blank lines)
- 
-   * the average number of code lines in subprogram bodies, task bodies,
-     entry bodies and statement sequences in package bodies
- 
-   ``gnatmetric`` sums the values of the line metrics for all the files
-   being processed and then generates the cumulative results. The tool
-   also computes for all the files being processed the average number of
-   code lines in bodies.
- 
-   You can use the following switches to select the specific line metrics
-   to be reported.
- 
- 
-   .. index:: --lines (gnatmetric)
-   .. index:: --no-lines (gnatmetric)
- 
- 
-   :switch:`--lines-all`
-     Report all the line metrics
- 
- 
-   :switch:`--no-lines-all`
-     Do not report any of line metrics
- 
- 
-   :switch:`--lines`
-     Report the number of all lines
- 
- 
-   :switch:`--no-lines`
-     Do not report the number of all lines
- 
- 
-   :switch:`--lines-code`
-     Report the number of code lines
- 
- 
-   :switch:`--no-lines-code`
-     Do not report the number of code lines
- 
- 
-   :switch:`--lines-comment`
-     Report the number of comment lines
- 
- 
-   :switch:`--no-lines-comment`
-     Do not report the number of comment lines
- 
- 
-   :switch:`--lines-eol-comment`
-     Report the number of code lines containing
-     end-of-line comments
- 
- 
-   :switch:`--no-lines-eol-comment`
-     Do not report the number of code lines containing
-     end-of-line comments
- 
- 
-   :switch:`--lines-ratio`
-     Report the comment percentage in the program text
- 
- 
-   :switch:`--no-lines-ratio`
-     Do not report the comment percentage in the program text
- 
- 
-   :switch:`--lines-blank`
-     Report the number of blank lines
- 
- 
-   :switch:`--no-lines-blank`
-     Do not report the number of blank lines
- 
- 
-   :switch:`--lines-average`
-     Report the average number of code lines in subprogram bodies, task bodies,
-     entry bodies and statement sequences in package bodies.
- 
- 
-   :switch:`--no-lines-average`
-     Do not report the average number of code lines in subprogram bodies,
-     task bodies, entry bodies and statement sequences in package bodies.
- 
- 
-   :switch:`--lines-spark`
-     Report the number of lines written in SPARK.
- 
- 
-   :switch:`--no-lines-spark`
-     Do not report the number of lines written in SPARK.
- 
- 
-   .. _Syntax_Metrics_Control:
- 
-   Syntax Metrics Control
-   ^^^^^^^^^^^^^^^^^^^^^^
- 
-   .. index:: Syntax metrics control in gnatmetric
- 
-   ``gnatmetric`` computes various syntactic metrics for the
-   outermost unit and for each eligible local unit:
- 
-   * *LSLOC ('Logical Source Lines Of Code')*
-       The total number of declarations and the total number of
-       statements. Note that the definition of declarations is the one
-       given in the reference manual:
- 
-         "Each of the following is defined to be a declaration: any
-         basic_declaration; an enumeration_literal_specification; a
-         discriminant_specification; a component_declaration; a
-         loop_parameter_specification; a parameter_specification; a
-         subprogram_body; an entry_declaration; an
-         entry_index_specification; a choice_parameter_specification; a
-         generic_formal_parameter_declaration."
- 
-       This means for example that each enumeration literal adds one to
-       the count, as well as each subprogram parameter.
- 
-   * *Maximal static nesting level of inner program units*
-       According to :title:`Ada Reference Manual`, 10.1(1):
- 
-         "A program unit is either a package, a task unit, a protected
-         unit, a protected entry, a generic unit, or an explicitly
-         declared subprogram other than an enumeration literal."
- 
-   * *Maximal nesting level of composite syntactic constructs*
-       This corresponds to the notion of the maximum nesting level in the
-       GNAT built-in style checks (see :ref:`Style_Checking`).
- 
-   * *Number of formal parameters*
-       Number of formal parameters of a subprogram; if a subprogram does
-       have parameters, then numbers of "in", "out" and "in out"
-       parameters are also reported. This metric is reported for
-       subprogram specifications and for subprogram instantiations. For
-       subprogram bodies, expression functions and null procedures this
-       metric is reported if the construct acts as a subprogram
-       declaration but is not a completion of previous declaration. This
-       metric is not reported for generic and formal subprograms.
- 
-   For the outermost unit in the file, ``gnatmetric`` additionally
-   computes the following metrics:
- 
-   * *Public subprograms*
-       This metric is computed for package specs. It is the number of
-       subprograms and generic subprograms declared in the visible part
-       (including the visible part of nested packages, protected objects,
-       and protected types).
- 
- 
-   * *All subprograms*
-       This metric is computed for bodies and subunits. The metric is
-       equal to a total number of subprogram bodies in the compilation
-       unit.
-       Neither generic instantiations nor renamings-as-a-body nor body
-       stubs are counted. Any subprogram body is counted, independently
-       of its nesting level and enclosing constructs. Generic bodies and
-       bodies of protected subprograms are counted in the same way as
-       'usual' subprogram bodies.
- 
- 
-   * *Public types*
-       This metric is computed for package specs and generic package
-       declarations. It is the total number of types that can be
-       referenced from outside this compilation unit, plus the number of
-       types from all the visible parts of all the visible generic
-       packages. Generic formal types are not counted. Only types, not
-       subtypes, are included.
- 
-       Along with the total number of public types, the following
-       types are counted and reported separately:
- 
-       * *Abstract types*
- 
-       * *Root tagged types^ (abstract, non-abstract, private,
-         non-private). Type extensions are *not* counted
- 
-       * *Private types* (including private extensions)
- 
-       * *Task types*
- 
-       * *Protected types*
- 
-   * *All types*
-       This metric is computed for any compilation unit. It is equal to
-       the total number of the declarations of different types given in
-       the compilation unit. The private and the corresponding full type
-       declaration are counted as one type declaration. Incomplete type
-       declarations and generic formal types are not counted.
-       No distinction is made among different kinds of types (abstract,
-       private etc.); the total number of types is reported.
- 
-   By default, all the syntax metrics are reported. You can use the following
-   switches to select specific syntax metrics.
- 
- 
-   .. index:: --syntax (gnatmetric)
-   .. index:: --no-syntax (gnatmetric)
- 
- 
-   :switch:`--syntax-all`
-     Report all the syntax metrics
- 
- 
-   :switch:`--no-syntax-all`
-     Do not report any of syntax metrics
- 
- 
-   :switch:`--declarations`
-     Report the total number of declarations
- 
- 
-   :switch:`--no-declarations`
-     Do not report the total number of declarations
- 
- 
-   :switch:`--statements`
-     Report the total number of statements
- 
- 
-   :switch:`--no-statements`
-     Do not report the total number of statements
- 
- 
-   :switch:`--public-subprograms`
-     Report the number of public subprograms in a compilation unit
- 
- 
-   :switch:`--no-public-subprograms`
-     Do not report the number of public subprograms in a compilation unit
- 
- 
-   :switch:`--all-subprograms`
-     Report the number of all the subprograms in a compilation unit
- 
- 
-   :switch:`--no-all-subprograms`
-     Do not report the number of all the subprograms in a compilation unit
- 
- 
-   :switch:`--public-types`
-     Report the number of public types in a compilation unit
- 
- 
-   :switch:`--no-public-types`
-     Do not report the number of public types in a compilation unit
- 
- 
-   :switch:`--all-types`
-     Report the number of all the types in a compilation unit
- 
- 
-   :switch:`--no-all-types`
-     Do not report the number of all the types in a compilation unit
- 
- 
-   :switch:`--unit-nesting`
-     Report the maximal program unit nesting level
- 
- 
-   :switch:`--no-unit-nesting`
-     Do not report the maximal program unit nesting level
- 
- 
-   :switch:`--construct-nesting`
-     Report the maximal construct nesting level
- 
- 
-   :switch:`--no-construct-nesting`
-     Do not report the maximal construct nesting level
- 
-   :switch:`--param-number`
-     Report the number of subprogram parameters
- 
- 
-   :switch:`--no-param-number`
-     Do not report the number of subprogram parameters
- 
- 
-   .. _Contract_Metrics_Control:
- 
-   Contract Metrics Control
-   ^^^^^^^^^^^^^^^^^^^^^^^^
- 
-   .. index:: Contract metrics control in gnatmetric
- 
-   :switch:`--contract-all`
-     Report all the contract metrics
- 
- 
-   :switch:`--no-contract-all`
-     Do not report any of the contract metrics
- 
- 
-   :switch:`--contract`
-     Report the number of public subprograms with contracts
- 
- 
-   :switch:`--no-contract`
-     Do not report the number of public subprograms with contracts
- 
- 
-   :switch:`--post`
-     Report the number of public subprograms with postconditions
- 
- 
-   :switch:`--no-post`
-     Do not report the number of public subprograms with postconditions
- 
- 
-   :switch:`--contract-complete`
-     Report the number of public subprograms with complete contracts
- 
- 
-   :switch:`--no-contract-complete`
-     Do not report the number of public subprograms with complete contracts
- 
- 
-   :switch:`--contract-cyclomatic`
-     Report the McCabe complexity of public subprograms
- 
- 
-   :switch:`--no-contract-cyclomatic`
-     Do not report the McCabe complexity of public subprograms
- 
- 
-   .. _Complexity_Metrics_Control:
- 
-   Complexity Metrics Control
-   ^^^^^^^^^^^^^^^^^^^^^^^^^^
- 
-   .. index:: Complexity metrics control in gnatmetric
- 
-   For a program unit that is an executable body (a subprogram body
-   (including generic bodies), task body, entry body or a package body
-   containing its own statement sequence) ``gnatmetric`` computes the
-   following complexity metrics:
- 
-   * McCabe cyclomatic complexity;
- 
-   * McCabe essential complexity;
- 
-   * maximal loop nesting level;
- 
-   * extra exit points (for subprograms);
- 
-   The McCabe cyclomatic complexity metric is defined
-   in `http://www.mccabe.com/pdf/mccabe-nist235r.pdf <http://www.mccabe.com/pdf/mccabe-nist235r.pdf>`_
- 
-   According to McCabe, both control statements and short-circuit control
-   forms should be taken into account when computing cyclomatic
-   complexity. For Ada 2012 we have also take into account conditional
-   expressions and quantified expressions. For each body, we compute
-   three metric values:
- 
-   * the complexity introduced by control
-     statements only, without taking into account short-circuit forms
-     (referred as ``statement complexity`` in ``gnatmetric`` output),
- 
-   * the complexity introduced by short-circuit control forms only
-     (referred as ``expression complexity`` in ``gnatmetric`` output),
-     and
- 
-   * the total
-     cyclomatic complexity, which is the sum of these two values
-     (referred as ``cyclomatic complexity`` in ``gnatmetric`` output).
- 
-   The cyclomatic complexity is also computed for Ada 2012 expression functions.
-   An expression function cannot have statements as its components, so only one
-   metric value is computed as a cyclomatic complexity of an expression function.
- 
-   The origin of cyclomatic complexity metric is the need to estimate the number
-   of independent paths in the control flow graph that in turn gives the number
-   of tests needed to satisfy paths coverage testing completeness criterion.
-   Considered from the testing point of view, a static Ada ``loop`` (that is,
-   the ``loop`` statement having static subtype in loop parameter
-   specification) does not add to cyclomatic complexity. By providing
-   :switch:`--no-static-loop` option a user
-   may specify that such loops should not be counted when computing the
-   cyclomatic complexity metric
- 
-   The Ada essential complexity metric is a McCabe cyclomatic complexity metric
-   counted for the code that is reduced by excluding all the pure structural Ada
-   control statements. An compound statement is considered as a non-structural
-   if it contains a ``raise`` or ``return`` statement as it subcomponent,
-   or if it contains a ``goto`` statement that transfers the control outside
-   the operator. A selective ``accept`` statement with a ``terminate`` alternative
-   is considered a non-structural statement. When computing this metric,
-   ``exit`` statements are treated in the same way as ``goto``
-   statements unless the :switch:`-ne` option is specified.
- 
-   The Ada essential complexity metric defined here is intended to quantify
-   the extent to which the software is unstructured. It is adapted from
-   the McCabe essential complexity metric defined in
-   http://www.mccabe.com/pdf/mccabe-nist235r.pdf
-   but is modified to be more
-   suitable for typical Ada usage. For example, short circuit forms
-   are not penalized as unstructured in the Ada essential complexity metric.
- 
-   When computing cyclomatic and essential complexity, ``gnatmetric`` skips
-   the code in the exception handlers and in all the nested program units. The
-   code of assertions and predicates (that is, subprogram preconditions and
-   postconditions, subtype predicates and type invariants) is also skipped.
- 
-   By default, all the complexity metrics are reported. For more fine-grained
-   control you can use the following switches:
- 
- 
-   .. index:: --complexity (gnatmetric)
-   .. index:: --no-complexity (gnatmetric)
- 
- 
-   :switch:`--complexity-all`
-     Report all the complexity metrics
- 
- 
-   :switch:`--no-complexity-all`
-     Do not report any of the complexity metrics
- 
- 
-   :switch:`--complexity-cyclomatic`
-     Report the McCabe Cyclomatic Complexity
- 
- 
-   :switch:`--no-complexity-cyclomatic`
-     Do not report the McCabe Cyclomatic Complexity
- 
- 
-   :switch:`--complexity-essential`
-     Report the Essential Complexity
- 
- 
-   :switch:`--no-complexity-essential`
-     Do not report the Essential Complexity
- 
- 
-   :switch:`--loop-nesting`
-     Report maximal loop nesting level
- 
- 
-   :switch:`-no-loop-nesting`
-     Do not report maximal loop nesting level
- 
- 
-   :switch:`--complexity-average`
-     Report the average McCabe Cyclomatic Complexity for all the subprogram bodies,
-     task bodies, entry bodies and statement sequences in package bodies.
-     The metric is reported for whole set of processed Ada sources only.
- 
- 
-   :switch:`--no-complexity-average`
-     Do not report the average McCabe Cyclomatic Complexity for all the subprogram
-     bodies, task bodies, entry bodies and statement sequences in package bodies
- 
-   .. index:: --no-treat-exit-as-goto (gnatmetric)
- 
- 
-   :switch:`--no-treat-exit-as-goto`
-     Do not consider ``exit`` statements as ``goto``\ s when
-     computing Essential Complexity
- 
-   .. index:: --no-static-loop (gnatmetric)
- 
- 
-   :switch:`--no-static-loop`
-     Do not consider static loops when computing cyclomatic complexity
- 
- 
-   :switch:`--extra-exit-points`
-     Report the extra exit points for subprogram bodies. As an exit point, this
-     metric counts ``return`` statements and raise statements in case when the
-     raised exception is not handled in the same body. In case of a function this
-     metric subtracts 1 from the number of exit points, because a function body
-     must contain at least one ``return`` statement.
- 
- 
-   :switch:`--no-extra-exit-points`
-     Do not report the extra exit points for subprogram bodies
- 
- 
-   .. _Coupling_Metrics_Control:
- 
-   Coupling Metrics Control
-   ^^^^^^^^^^^^^^^^^^^^^^^^
- 
-   .. index:: Coupling metrics control in gnatmetric
- 
-   .. index:: Coupling metrics (in gnatmetric)
- 
-   Coupling metrics measure the dependencies between a given entity and other
-   entities in the program. This information is useful since high coupling
-   may signal potential issues with maintainability as the program evolves.
- 
-   ``gnatmetric`` computes the following coupling metrics:
- 
- 
-   * *object-oriented coupling*, for classes in traditional object-oriented
-     sense;
- 
-   * *unit coupling*, for all the program units making up a program;
- 
-   * *control coupling*, reflecting dependencies between a unit and
-     other units that contain subprograms.
- 
-   .. index:: fan-out coupling
-   .. index:: efferent coupling
- 
-   Two kinds of coupling metrics are computed:
- 
-   * fan-out coupling ('efferent coupling'):
-     the number of entities the given entity depends upon. This metric
-     reflects how the given entity depends on the changes in the
-     'external world'.
- 
-   .. index:: fan-in coupling
-   .. index:: afferent coupling
- 
-   * fan-in coupling ('afferent' coupling):
-     the number of entities that depend on a given entity.
-     This metric reflects how the 'external world' depends on the changes in a
-     given entity.
- 
-   Object-oriented coupling metrics measure the dependencies
-   between a given class (or a group of classes) and the other classes in the
-   program. In this subsection the term 'class' is used in its traditional
-   object-oriented programming sense (an instantiable module that contains data
-   and/or method members). A *category* (of classes) is a group of closely
-   related classes that are reused and/or modified together.
- 
-   A class ``K``\ 's fan-out coupling is the number of classes
-   that ``K`` depends upon.
-   A category's fan-out coupling is the number of classes outside the
-   category that the classes inside the category depend upon.
- 
-   A class ``K``\ 's fan-in coupling is the number of classes
-   that depend upon ``K``.
-   A category's fan-in coupling is the number of classes outside the
-   category that depend on classes belonging to the category.
- 
-   Ada's object-oriented paradigm separates the instantiable entity
-   (type) from the module (package), so the definition of the coupling
-   metrics for Ada maps the class and class category notions
-   onto Ada constructs.
- 
-   For the coupling metrics, several kinds of modules that define a tagged type
-   or an interface type  -- library packages, library generic packages, and
-   library generic package instantiations -- are considered to be classes.
-   A category consists of a library package (or
-   a library generic package) that defines a tagged or an interface type,
-   together with all its descendant (generic) packages that define tagged
-   or interface types. Thus a
-   category is an Ada hierarchy of library-level program units. Class
-   coupling in Ada is referred to as 'tagged coupling', and category coupling
-   is referred to as 'hierarchy coupling'.
- 
-   For any package serving as a class, its body and subunits (if any) are
-   considered together with its spec when computing dependencies, and coupling
-   metrics are reported for spec units only. Dependencies between classes
-   mean Ada semantic dependencies. For object-oriented coupling
-   metrics, only dependencies on units treated as classes are
-   considered.
- 
-   Similarly, for unit and control coupling an entity is considered to be the
-   conceptual construct consisting of the entity's specification, body, and
-   any subunits (transitively).
-   ``gnatmetric`` computes
-   the dependencies of all these units as a whole, but
-   metrics are only reported for spec
-   units (or for a subprogram body unit in case if there is no
-   separate spec for the given subprogram).
- 
-   For unit coupling, dependencies are computed between all kinds of program
-   units. For control coupling, the dependencies of a given unit are limited to
-   those units that define subprograms. Thus control fan-out coupling is reported
-   for all units, but control fan-in coupling is only reported for units
-   that define subprograms.
- 
-   The following simple example illustrates the difference between unit coupling
-   and control coupling metrics:
- 
-     .. code-block:: ada
- 
-          package Lib_1 is
-              function F_1 (I : Integer) return Integer;
-          end Lib_1;
- 
-          package Lib_2 is
-              type T_2 is new Integer;
-          end Lib_2;
- 
-          package body Lib_1 is
-              function F_1 (I : Integer) return Integer is
-              begin
-                 return I + 1;
-              end F_1;
-          end Lib_1;
- 
-          with Lib_2; use Lib_2;
-          package Pack is
-              Var : T_2;
-              function Fun (I : Integer) return Integer;
-          end Pack;
- 
-          with Lib_1; use Lib_1;
-          package body Pack is
-              function Fun (I : Integer) return Integer is
-              begin
-                 return F_1 (I);
-              end Fun;
-          end Pack;
- 
-   If we apply ``gnatmetric`` with the :switch:`--coupling-all` option to
-   these units, the result will be:
- 
-     ::
- 
-        Coupling metrics:
-        =================
-            Unit Lib_1 (C:\\customers\\662\\L406-007\\lib_1.ads)
-               control fan-out coupling  : 0
-               control fan-in coupling   : 1
-               unit fan-out coupling     : 0
-               unit fan-in coupling      : 1
- 
-            Unit Pack (C:\\customers\\662\\L406-007\\pack.ads)
-               control fan-out coupling  : 1
-               control fan-in coupling   : 0
-               unit fan-out coupling     : 2
-               unit fan-in coupling      : 0
- 
-            Unit Lib_2 (C:\\customers\\662\\L406-007\\lib_2.ads)
-               control fan-out coupling  : 0
-               unit fan-out coupling     : 0
-               unit fan-in coupling      : 1
- 
-   The result does not contain values for object-oriented
-   coupling because none of the argument units contains a tagged type and
-   therefore none of these units can be treated as a class.
- 
-   The ``Pack`` package (spec and body) depends on two
-   units -- ``Lib_1`` and ``Lib_2`` -- and so its unit fan-out coupling
-   is 2. Since nothing depends on it, its unit fan-in coupling is 0, as
-   is its control fan-in coupling. Only one of the units ``Pack`` depends
-   upon defines a subprogram, so its control fan-out coupling is 1.
- 
-   ``Lib_2`` depends on nothing, so its fan-out metrics are 0. It does
-   not define any subprograms, so it has no control fan-in metric.
-   One unit (``Pack``) depends on it , so its unit fan-in coupling is 1.
- 
-   ``Lib_1`` is similar to ``Lib_2``, but it does define a subprogram.
-   Its control fan-in coupling is 1 (because there is one unit
-   depending on it).
- 
-   When computing coupling metrics, ``gnatmetric`` counts only
-   dependencies between units that are arguments of the ``gnatmetric``
-   invocation. Coupling metrics are program-wide (or project-wide) metrics, so
-   you should invoke ``gnatmetric`` for
-   the complete set of sources comprising your program. This can be done
-   by invoking ``gnatmetric`` with the corresponding project file
-   and with the :switch:`-U` option.
- 
-   By default, all the coupling metrics are reported. You can use the following
-   switches to select specific syntax metrics.
- 
-   .. index:: --tagged-coupling (gnatmetric)
-   .. index:: --hierarchy-coupling (gnatmetric)
-   .. index:: --unit-coupling (gnatmetric)
-   .. index:: --control-coupling (gnatmetric)
- 
-   :switch:`--coupling-all`
-     Report all the coupling metrics
- 
- 
-   :switch:`--tagged-coupling-out`
-     Report tagged (class) fan-out coupling
- 
- 
-   :switch:`--tagged-coupling-in`
-     Report tagged (class) fan-in coupling
- 
- 
-   :switch:`--hierarchy-coupling-out`
-     Report hierarchy (category) fan-out coupling
- 
- 
-   :switch:`--hierarchy-coupling-in`
-     Report hierarchy (category) fan-in coupling
- 
- 
-   :switch:`--unit-coupling-out`
-     Report unit fan-out coupling
- 
- 
-   :switch:`--unit-coupling-in`
-     Report unit fan-in coupling
- 
- 
-   :switch:`--control-coupling-out`
-     Report control fan-out coupling
- 
- 
-   :switch:`--control-coupling-in`
-     Report control fan-in coupling
- 
- 
-   .. _Other_gnatmetric_Switches:
- 
-   Other ``gnatmetric`` Switches
-   -----------------------------
- 
-   Additional ``gnatmetric`` switches are as follows:
- 
- 
-   .. index:: --version (gnatmetric)
- 
-   :switch:`--version`
-     Display copyright and version, then exit disregarding all other options.
- 
- 
-   .. index:: --help (gnatmetric)
- 
-   :switch:`--help`
-     Display usage, then exit disregarding all other options.
- 
- 
-   .. index:: -P (gnatmetric)
- 
-   :switch:`-P {file}`
-     Indicates the name of the project file that describes the set of sources
-     to be processed. The exact set of argument sources depends on other options
-     specified, see below. An aggregate project is allowed as the file parameter
-     only if it has exactly one non-aggregate project being aggregated.
- 
- 
-   .. index:: -U (gnatmetric)
- 
-   :switch:`-U`
-     If a project file is specified and no argument source is explicitly
-     specified (either directly or by means of :switch:`-files` option), process
-     all the units of the closure of the argument project. Otherwise this option
-     has no effect.
- 
- 
-   :switch:`-U {main_unit}`
-     If a project file is specified and no argument source is explicitly
-     specified (either directly or by means of :switch:`-files` option), process
-     the closure of units rooted at ``main_unit``. Otherwise this option
-     has no effect.
- 
- 
-   .. index:: -X (gnatmetric)
- 
-   :switch:`-X{name}={value}`
-     Indicates that external variable ``name`` in the argument project
-     has the value ``value``. Has no effect if no project is specified.
- 
- 
-   .. index:: --RTS (gnatmetric)
- 
-   :switch:`--RTS={rts-path}`
-     Specifies the default location of the runtime library. Same meaning as the
-     equivalent ``gnatmake`` flag (see :ref:`Switches_for_gnatmake`).
- 
- 
-   .. index:: --subdirs=dir (gnatmetric)
- 
-   :switch:`--subdirs={dir}`
-     Use the specified subdirectory of the project objects file (or of the
-     project file directory if the project does not specify an object directory)
-     for tool output files. Has no effect if no project is specified as
-     tool argument r if :switch:`--no-objects-dir` is specified.
- 
- 
-   .. index:: --files (gnatmetric)
- 
-   :switch:`--files={file}`
-     Take as arguments the files listed in text file ``file``.
-     Text file ``file`` may contain empty lines that are ignored.
-     Each nonempty line should contain the name of an existing file.
-     Several such switches may be specified simultaneously.
- 
- 
-   .. index:: --ignore (gnatmetric)
- 
-   :switch:`--ignore={filename}`
-     Do not process the sources listed in a specified file.
- 
- 
-   .. index:: --verbose (gnatmetric)
- 
-   :switch:`--verbose`
-     Verbose mode;
-     ``gnatmetric`` generates version information and then
-     a trace of sources being processed.
- 
- 
-   .. index:: --quiet (gnatmetric)
- 
-   :switch:`--quiet`
-     Quiet mode.
- 
-   If a project file is specified and no argument source is explicitly
-   specified (either directly or by means of :switch:`-files` option), and no
-   :switch:`-U` is specified, then the set of processed sources is
-   all the immediate units of the argument project.
- 
- 
-   Legacy Switches
-   ^^^^^^^^^^^^^^^
- 
-   Some switches have a short form, mostly for legacy reasons,
-   as shown below.
- 
-   .. index:: -x (gnatmetric)
- 
-   :switch:`-x`
-     :switch:`--generate-xml-output`
- 
-   .. index:: -xs (gnatmetric)
- 
-   :switch:`-xs`
-     :switch:`--generate-xml-schema`
- 
-   .. index:: -nt (gnatmetric)
- 
-   :switch:`-nt`
-     :switch:`--no-text-output`
- 
-   .. index:: -d (gnatmetric)
- 
-   :switch:`-d {output-dir}`
-     :switch:`--output-dir`
- 
-   .. index:: -o (gnatmetric)
- 
-   :switch:`-o {file-suffix}`
-     :switch:`--output-suffix`
- 
-   .. index:: -og (gnatmetric)
- 
-   :switch:`-og {file-name}`
-     :switch:`--global-file-name`
- 
-   .. index:: -ox (gnatmetric)
- 
-   :switch:`-ox {file-name}`
-     :switch:`--xml-file-name`
- 
-   .. index:: -sfn (gnatmetric)
- 
-   :switch:`-sfn`
-     :switch:`--short-file-names`
- 
-   .. index:: -W (gnatsmetric)
- 
-   :switch:`-W{e}`
-     :switch:`--wide-character-encoding={e}`
- 
-   .. index:: -nolocal (gnatmetric)
- 
-   :switch:`-nolocal`
-     :switch:`--no-local-metrics`
- 
-   .. index:: -ne (gnatmetric)
- 
-   :switch:`-ne`
-     :switch:`--no-treat-exit-as-goto`
- 
-   .. index:: -files (gnatmetric)
- 
-   :switch:`-files {filename}`
-     :switch:`--files`
- 
-   .. index:: -v (gnatmetric)
- 
-   :switch:`-v`
-     :switch:`--verbose`
- 
-   .. index:: -q (gnatmetric)
- 
-   :switch:`-q`
-     :switch:`--quiet`
- 
- .. only:: PRO or GPL
- 
     .. _The_GNAT_Pretty_Printer_gnatpp:
  
     The GNAT Pretty Printer ``gnatpp``
--- 466,471 ----
*************** building specialized scripts.
*** 1637,1654 ****
  
     where
  
!    * ``switches`` is an optional sequence of switches defining such properties as
!      the formatting rules, the source search path, and the destination for the
!      output source file
  
     * ``filename`` is the name of the source file to reformat; wildcards
       or several file names on the same gnatpp command are allowed. The
       file name may contain path information; it does not have to follow
       the GNAT file naming rules
  
!      Note that it is no longer necessary to specify the Ada language version;
!      ``gnatpp`` can process Ada source code written in any version from
!      Ada 83 onward without specifying any language version switch.
  
  
     .. _Switches_for_gnatpp:
--- 496,513 ----
  
     where
  
!    * ``switches`` is an optional sequence of switches defining such properties
!      as the formatting rules, the source search path, and the destination for
!      the output source file
  
     * ``filename`` is the name of the source file to reformat; wildcards
       or several file names on the same gnatpp command are allowed. The
       file name may contain path information; it does not have to follow
       the GNAT file naming rules
  
!    Note that it is no longer necessary to specify the Ada language version;
!    ``gnatpp`` can process Ada source code written in any version from Ada 83
!    onward without specifying any language version switch.
  
  
     .. _Switches_for_gnatpp:
*************** building specialized scripts.
*** 1660,1667 ****
     ``gnatpp``, organized by category.
  
     You specify a switch by supplying a name and generally also a value.
!    In many cases the values for a switch with a given name are incompatible with
!    each other
     (for example the switch that controls the casing of a reserved word may have
     exactly one value: upper case, lower case, or
     mixed case) and thus exactly one such switch can be in effect for an
--- 519,526 ----
     ``gnatpp``, organized by category.
  
     You specify a switch by supplying a name and generally also a value.
!    In many cases the values for a switch with a given name are incompatible
!    with each other
     (for example the switch that controls the casing of a reserved word may have
     exactly one value: upper case, lower case, or
     mixed case) and thus exactly one such switch can be in effect for an
*************** building specialized scripts.
*** 1673,1863 ****
     Abbreviated forms (the name appearing once, followed by each value) are
     not permitted.
  
-    .. _Alignment_Control:
  
!    Alignment Control
!    ^^^^^^^^^^^^^^^^^
  
!    .. index:: Alignment control in gnatpp
  
!    Programs can be easier to read if certain constructs are vertically aligned.
!    By default, alignment of the following constructs is set ON:
  
       * ``:`` in declarations,
       * ``:=`` in initializations in declarations,
       * ``:=`` in assignment statements,
       * ``=>`` in associations, and
!      * ``at`` keywords in the component clauses in record representation clauses.
  
!    In addition, ``in`` and ``out`` in parameter specifications are lined up.
  
!    .. index:: --no-alignment (gnatpp)
!    .. index:: --alignment (gnatpp)
!    .. index:: --no-align-modes (gnatpp)
  
  
!    :switch:`--no-alignment`
!      Set alignment to OFF
  
  
!    :switch:`--alignment`
!      Set alignment to ON
  
  
!    :switch:`--no-align-modes`
!      Do not line up ``in`` and ``out`` in parameter specifications.
  
!    .. _Casing_Control:
  
  
     Casing Control
     ^^^^^^^^^^^^^^
  
     .. index:: Casing control in gnatpp
  
!    ``gnatpp`` allows you to specify the casing for reserved words,
!    pragma names, attribute designators and identifiers.
!    For identifiers you may define a
!    general rule for name casing but also override this rule
!    via a set of dictionary files.
! 
!    Three types of casing are supported: lower case, upper case, and mixed case.
!    'Mixed case' means that the first letter, and also each letter immediately
!    following an underscore, are converted to their uppercase forms;
!    all the other letters are converted to their lowercase forms.
  
!    (Note: the casing switches are not yet fully supported in the
!    libadalang-based version of gnatpp.)
  
     .. index:: --name-case-as-declared (gnatpp)
  
!    :switch:`--name-case-as-declared`
       Name casing for defining occurrences are as they appear in the source file
!      (this is the default)
  
     .. index:: --name-upper-case (gnatpp)
  
!    :switch:`--name-upper-case`
!      Names are in upper case
  
     .. index:: --name-lower-case (gnatpp)
  
!    :switch:`--name-lower-case`
!      Names are in lower case
  
     .. index:: --name-mixed-case (gnatpp)
  
!    :switch:`--name-mixed-case`
!      Names are in mixed case
  
     .. index:: --attribute-lower-case (gnatpp)
  
!    :switch:`--attribute-lower-case`
!      Attribute designators are lower case
  
     .. index:: --attribute-upper-case (gnatpp)
  
!    :switch:`--attribute-upper-case`
!      Attribute designators are upper case
  
     .. index:: --attribute-mixed-case (gnatpp)
  
!    :switch:`--attribute-mixed-case`
!      Attribute designators are mixed case (this is the default)
  
     .. index:: --keyword-lower-case (gnatpp)
  
!    :switch:`--keyword-lower-case`
       Keywords (technically, these are known in Ada as *reserved words*) are
!      lower case (this is the default)
  
     .. index:: --keyword-upper-case (gnatpp)
  
!    :switch:`--keyword-upper-case`
!      Keywords are upper case
  
     .. index:: --enum-case-as-declared (gnatpp)
  
!    :switch:`--enum-case-as-declared`
!      Enumeration literal casing for defining occurrences are as they appear in the
!      source file. Overrides -n casing setting.
  
     .. index:: --enum-upper-case (gnatpp)
  
!    :switch:`--enum-upper-case`
       Enumeration literals are in upper case. Overrides -n casing
       setting.
  
     .. index:: --enum-lower-case (gnatpp)
  
!    :switch:`--enum-lower-case`
       Enumeration literals are in lower case. Overrides -n casing
       setting.
  
     .. index:: --enum-mixed-case (gnatpp)
  
!    :switch:`--enum-mixed-case`
       Enumeration literals are in mixed case. Overrides -n casing
       setting.
  
     .. index:: --type-case-as-declared (gnatpp)
  
!    :switch:`--type-case-as-declared`
       Names introduced by type and subtype declarations are always
       cased as they appear in the declaration in the source file.
       Overrides -n casing setting.
  
     .. index:: --type-upper-case (gnatpp)
  
!    :switch:`--type-upper-case`
       Names introduced by type and subtype declarations are always in
       upper case. Overrides -n casing setting.
  
     .. index:: --type-lower-case (gnatpp)
  
!    :switch:`--type-lower-case`
       Names introduced by type and subtype declarations are always in
       lower case. Overrides -n casing setting.
  
     .. index:: --type-mixed-case (gnatpp)
  
!    :switch:`--type-mixed-case`
       Names introduced by type and subtype declarations are always in
       mixed case. Overrides -n casing setting.
  
     .. index:: --number-upper-case (gnatpp)
  
!    :switch:`--number-upper-case`
       Names introduced by number declarations are always in
       upper case. Overrides -n casing setting.
  
     .. index:: --number-lower-case (gnatpp)
  
!    :switch:`--number-lower-case`
       Names introduced by number declarations are always in
       lower case. Overrides -n casing setting.
  
     .. index:: --number-mixed-case (gnatpp)
  
!    :switch:`--number-mixed-case`
       Names introduced by number declarations are always in
       mixed case. Overrides -n casing setting.
  
     .. index:: --pragma-lower-case (gnatpp)
  
!    :switch:`--pragma-lower-case`
!      Pragma names are lower case
  
     .. index:: --pragma-upper-case (gnatpp)
  
!    :switch:`--pragma-upper-case`
!      Pragma names are upper case
  
     .. index:: --pragma-mixed-case (gnatpp)
  
!    :switch:`--pragma-mixed-case`
!      Pragma names are mixed case (this is the default)
  
  
     .. index:: --syntax-only (gnatpp)
  
--- 532,798 ----
     Abbreviated forms (the name appearing once, followed by each value) are
     not permitted.
  
  
!    .. _Layout_Control:
  
!    Layout Control
!    ^^^^^^^^^^^^^^
  
!    .. index:: Layout control in gnatpp
! 
!    ``gnatpp`` provides a layout switch which controls the general
!    formatting style:
! 
!    .. index:: layout(gnatpp)
! 
!    :switch:`--layout=default|minimal|compact|tall`
! 
!    :switch:`default`
!      The default layout will follow a compact style but add aligment and put
!      some keywords on a separate line.
!      
!      Alignment is added in the the following constructs:
  
       * ``:`` in declarations,
       * ``:=`` in initializations in declarations,
       * ``:=`` in assignment statements,
       * ``=>`` in associations, and
!      * ``at`` keywords in the component clauses in record representation
!        clauses.
  
!      In addition, ``in`` and ``out`` keywords in parameter specifications are
!      also lined up.
  
!      The keyword ``is`` is placed on a separate line in a subprogram body in
!      case the spec occupies more than one line.
  
+      The keyword ``return`` is placed on a separate line if a subprogram spec
+      does not fit on one line.
  
!    :switch:`minimal`
!      The minimal layout will avoid changing the source layout by keeping all
!      line breaks from the original source (it will not insert or delete any).
!      It will add indentation where appropriate as long as it does not exceed
!      the line length limit.
  
+    :switch:`compact`
+      The compact layout will avoid adding line breaks and alignment by packing
+      as many subexpressions on the same line as possible.
  
!      Whole-line comments that form a paragraph will be filled in typical word
!      processor style (that is, moving words between lines to make them similar
!      in length, except the last one which may be shorter).
  
+      For each whole-line comment that does not end with two hyphens, inserts
+      spaces if necessary after the starting two hyphens to ensure that there
+      are at least two spaces preceding the first non-blank character of the
+      comment.
  
!    :switch:`tall`
!      The tall layout will favor adding lines breaks and alignment. It adds
!      all the alignment and line breaks defined in the ``default`` option,
!      and in addition:
  
!      * Places the keyword ``loop`` in FOR and WHILE loop statements on a
!        separate line
!      * Places the keyword ``then`` in IF statements on a separate line
!      * Places each keyword ``use`` in USE clauses on a separate line
!      * Splits the line just before the keyword ``record`` in a RECORD type
!        declaration
!      * Indents named blocks and loop statments with respect to the name
!      * When necessary, splits binary operators always before the operator
!      * Inserts an extra blank before various occurrences of ``(`` and ``:``
!      * When it is necessary to split a line between two subexpressions (because
!        otherwise the construct would exceed --max-line-length), then all such
!        subexpressions are placed on separate lines
!      * Formats enumeration type declarations “vertically”, e.g. each
!        enumeration literal goes on a separate line
!      * Formats array type declarations “vertically”, e.g. for multidimensional
!        arrays, each index_subtype_definition or discrete_subtype_definition
!        goes on a separate line
!      * Format aggregates “vertically” if named notation is used for all
!        component_associations, e.g. each component_association goes on a
!        separate line
!      * Formats case statements, case expressions, and variant parts with
!        additional line breaks
!      * Inserts blank lines where appropriate (between bodies and other large
!        constructs)
!      * Similarly to the :switch:`compact` layout, two spaces are added in the
!        beginning of a whole-line comment when needed
  
  
+    .. _Casing_Control:
+ 
     Casing Control
     ^^^^^^^^^^^^^^
  
     .. index:: Casing control in gnatpp
  
!    ``gnatpp`` allows you to specify the casing for reserved words, pragma
!    names, attribute designators and identifiers. For identifiers you may define
!    a general rule for name casing but also override this rule via a set of
!    dictionary files.
  
!    Three types of casing are supported: 'Lower Case', 'Upper Case', and
!    'Mixed Case'. 'Mixed case' means that the first letter, and also each
!    letter immediately following an underscore, are converted to their
!    uppercase forms and all the other letters are converted to their lowercase
!    forms.
  
     .. index:: --name-case-as-declared (gnatpp)
  
!    :switch:`--name-case-as-declared, -nD`
       Name casing for defining occurrences are as they appear in the source file
!      (this is the default).
  
     .. index:: --name-upper-case (gnatpp)
  
!    :switch:`--name-upper-case, -nU`
!      Names are in upper case.
  
     .. index:: --name-lower-case (gnatpp)
  
!    :switch:`--name-lower-case, -nL`
!      Names are in lower case.
  
     .. index:: --name-mixed-case (gnatpp)
  
!    :switch:`--name-mixed-case, -nM`
!      Names are in mixed case.
  
     .. index:: --attribute-lower-case (gnatpp)
  
!    :switch:`--attribute-lower-case, -aL`
!      Attribute designators are lower case.
  
     .. index:: --attribute-upper-case (gnatpp)
  
!    :switch:`--attribute-upper-case, -aU`
!      Attribute designators are upper case.
  
     .. index:: --attribute-mixed-case (gnatpp)
  
!    :switch:`--attribute-mixed-case, -aM`
!      Attribute designators are mixed case (this is the default).
  
     .. index:: --keyword-lower-case (gnatpp)
  
!    :switch:`--keyword-lower-case, -kL`
       Keywords (technically, these are known in Ada as *reserved words*) are
!      lower case (this is the default).
  
     .. index:: --keyword-upper-case (gnatpp)
  
!    :switch:`--keyword-upper-case, -kU`
!      Keywords are upper case.
  
     .. index:: --enum-case-as-declared (gnatpp)
  
!    :switch:`--enum-case-as-declared, -neD`
!      Enumeration literal casing for defining occurrences are as they appear in
!      the source file. Overrides -n casing setting.
  
     .. index:: --enum-upper-case (gnatpp)
  
!    :switch:`--enum-upper-case, -neU`
       Enumeration literals are in upper case. Overrides -n casing
       setting.
  
     .. index:: --enum-lower-case (gnatpp)
  
!    :switch:`--enum-lower-case, -neL`
       Enumeration literals are in lower case. Overrides -n casing
       setting.
  
     .. index:: --enum-mixed-case (gnatpp)
  
!    :switch:`--enum-mixed-case, -neM`
       Enumeration literals are in mixed case. Overrides -n casing
       setting.
  
     .. index:: --type-case-as-declared (gnatpp)
  
!    :switch:`--type-case-as-declared, -ntD`
       Names introduced by type and subtype declarations are always
       cased as they appear in the declaration in the source file.
       Overrides -n casing setting.
  
     .. index:: --type-upper-case (gnatpp)
  
!    :switch:`--type-upper-case, -ntU`
       Names introduced by type and subtype declarations are always in
       upper case. Overrides -n casing setting.
  
     .. index:: --type-lower-case (gnatpp)
  
!    :switch:`--type-lower-case, -ntL`
       Names introduced by type and subtype declarations are always in
       lower case. Overrides -n casing setting.
  
     .. index:: --type-mixed-case (gnatpp)
  
!    :switch:`--type-mixed-case, -ntM`
       Names introduced by type and subtype declarations are always in
       mixed case. Overrides -n casing setting.
  
     .. index:: --number-upper-case (gnatpp)
  
!    :switch:`--number-upper-case, -nnU`
       Names introduced by number declarations are always in
       upper case. Overrides -n casing setting.
  
     .. index:: --number-lower-case (gnatpp)
  
!    :switch:`--number-lower-case, -nnL`
       Names introduced by number declarations are always in
       lower case. Overrides -n casing setting.
  
     .. index:: --number-mixed-case (gnatpp)
  
!    :switch:`--number-mixed-case, -nnM`
       Names introduced by number declarations are always in
       mixed case. Overrides -n casing setting.
  
     .. index:: --pragma-lower-case (gnatpp)
  
!    :switch:`--pragma-lower-case, -pL`
!      Pragma names are lower case.
  
     .. index:: --pragma-upper-case (gnatpp)
  
!    :switch:`--pragma-upper-case, -pU`
!      Pragma names are upper case.
  
     .. index:: --pragma-mixed-case (gnatpp)
  
!    :switch:`--pragma-mixed-case, -pM`
!      Pragma names are mixed case (this is the default).
  
+    .. index:: --constant-case-as-non-constant (gnatpp)
+ 
+    :switch:`--constant-case-as-non-constant, -cN`
+      Constant object declaration names have the same case as the name casing
+      (this is the default).
+ 
+    .. index:: --constant-case-as-declared (gnatpp)
+ 
+    :switch:`--constant-case-as-declared, -cD`
+      Constant object declaration names are as they appear in the source file.
+ 
+    .. index:: --constant-lower-case (gnatpp)
+ 
+    :switch:`--constant-lower-case, -cL`
+      Constant object declaration names are lower case.
+ 
+    .. index:: --constant-upper-case (gnatpp)
+ 
+    :switch:`--constan-upper-case, -cU`
+      Constant object declaration names are upper case.
+ 
+    .. index:: --constant-mixed-case (gnatpp)
+ 
+    :switch:`--constant-mixed-case, -cM`
+      Constant object declaration names are mixed case.
  
     .. index:: --syntax-only (gnatpp)
  
*************** building specialized scripts.
*** 1866,1875 ****
       This means gnatpp will not be able to support any of the
       "as-declared" switches.
  
- 
     .. index:: --dictionary (gnatpp)
  
!    :switch:`--dictionary={file}`
       Use ``file`` as a *dictionary file* that defines
       the casing for a set of specified names,
       thereby overriding the effect on these names by
--- 801,809 ----
       This means gnatpp will not be able to support any of the
       "as-declared" switches.
  
     .. index:: --dictionary (gnatpp)
  
!    :switch:`--dictionary={file}, -D={file}`
       Use ``file`` as a *dictionary file* that defines
       the casing for a set of specified names,
       thereby overriding the effect on these names by
*************** building specialized scripts.
*** 1882,1891 ****
       to define the casing for the Ada predefined names and
       the names declared in the GNAT libraries.
  
- 
     .. index:: --dictionary=- (gnatpp)
  
!    :switch:`--dictionary=-`
       Do not use the default dictionary file;
       instead, use the casing
       defined by a ``-n`` switch and any explicit
--- 816,824 ----
       to define the casing for the Ada predefined names and
       the names declared in the GNAT libraries.
  
     .. index:: --dictionary=- (gnatpp)
  
!    :switch:`--dictionary=-, -D=-`
       Do not use the default dictionary file;
       instead, use the casing
       defined by a ``-n`` switch and any explicit
*************** building specialized scripts.
*** 1903,2048 ****
     on their effect.
  
  
-    .. index:: -c (gnatpp)
- 
- 
-    :switch:`--comments-unchanged`
-      All comments remain unchanged.
- 
- 
-    :switch:`--comments-gnat-indentation`
-      GNAT-style comment line indentation.
-      This is the default.
- 
- 
-    :switch:`--comments-gnat-beginning`
-      GNAT-style comment beginning.
- 
- 
-    :switch:`--comments-fill`
-      Fill comment blocks.
-      The default is :switch:`--no-comments-fill`.
- 
- 
-    :switch:`--comments-special`
-      Keep unchanged special form comments.
-      The default is :switch:`--no-comments-special`.
- 
- 
-    .. index:: --comments-only (gnatpp)
- 
-    :switch:`--comments-only`
-      Format just the comments.
- 
-    .. index:: --no-end-id (gnatpp)
- 
- 
-    :switch:`--no-end-id`
-      Do not insert the name of a unit after ``end``; leave whatever comes
-      after ``end``, if anything, alone.
- 
-    .. index:: --no-separate-is (gnatpp)
- 
- 
-    :switch:`--no-separate-is`
-      Do not place the keyword ``is`` on a separate line in a subprogram body in
-      case if the spec occupies more than one line.
- 
-    .. index:: --no-separate-return (gnatpp)
- 
- 
-    :switch:`--no-separate-return`
-      In :switch:`--no-compact` mode, if a subprogram spec does not fit on
-      one line, try to place the ``return`` on the same line as the last
-      formal parameter.
- 
-    .. index:: --separate-loop (gnatpp)
- 
- 
-    :switch:`--separate-loop`
-      Place the keyword ``loop`` in FOR and WHILE loop statements
-      on a separate line.
- 
-    .. index:: --no-separate-then (gnatpp)
- 
- 
-    :switch:`--separate-then`
-      Place the keyword ``then`` in IF statements
-      on a separate line.
- 
-    .. index:: --no-separate-loop (gnatpp)
- 
- 
-    :switch:`--no-separate-loop`
-      Do not place the keyword ``loop`` in FOR and WHILE loop statements
-      on a separate line. This option is
-      incompatible with the :switch:`--separate-loop` option.
- 
-    .. index:: --no-separate-then (gnatpp)
- 
- 
-    :switch:`--no-separate-then`
-      Do not place the keyword ``then`` in IF statements
-      on a separate line. This option is
-      incompatible with the :switch:`--separate-then` option.
- 
-    .. index:: --separate-loop-then (gnatpp)
- 
- 
-    :switch:`--separate-loop-then`
-      Equivalent to :switch:`--separate-loop` :switch:`--separate-then`.
- 
-    .. index:: --no-separate-loop-then (gnatpp)
- 
- 
-    :switch:`--no-separate-loop-then`
-      Equivalent to :switch:`--no-separate-loop` :switch:`--no-separate-then`.
- 
-    .. index:: --use-on-new-line (gnatpp)
- 
- 
-    :switch:`--use-on-new-line`
-      Start each USE clause in a context clause from a separate line.
- 
- 
-    .. index:: --insert-blank-lines (gnatpp)
- 
- 
-    :switch:`--insert-blank-lines`
-      Insert blank lines where appropriate (between bodies and other large
-      constructs).
- 
-    .. index:: --preserve-blank-lines (gnatpp)
- 
- 
-    :switch:`--preserve-blank-lines`
-      Preserve blank lines in the input. By default, gnatpp will squeeze
-      multiple blank lines down to one.
- 
-    .. index:: --preserve-line-breaks (gnatpp)
- 
-    :switch:`--preserve-line-breaks`
-      Preserve line breaks in the input, to the extent possible.
-      By default, line breaks are also inserted at appropriate
-      places.
- 
-    .. index:: --source-line-breaks (gnatpp)
- 
-    :switch:`--source-line-breaks`
-      Keep the line breaks from the source; do not insert or delete any
-      line breaks.
- 
-    .. index:: --spaces-only (gnatpp)
- 
-    :switch:`--spaces-only`
-      Disable all formatting except for inserting and removing spaces.
-      This implies --source-line-breaks.
- 
-    The ``--comments`` switches are compatible with one another, except
-    that the ``--comments-unchanged`` switch disables all other comment
-    formatting switches.
- 
- 
     .. _General_Text_Layout_Control:
  
     General Text Layout Control
--- 836,841 ----
*************** building specialized scripts.
*** 2052,2070 ****
  
     .. index:: --max-line-length (gnatpp)
  
!    :switch:`--max-line-length={nnn}`
       Maximum line length, ``nnn`` from 32...256, the default value is 79
  
  
     .. index:: --indentation (gnatpp)
  
!    :switch:`--indentation={nnn}`
       Indentation level, ``nnn`` from 1...9, the default value is 3
  
  
     .. index:: --indent-continuation (gnatpp)
  
!    :switch:`--indent-continuation={nnn}`
       Indentation level for continuation lines (relative to the line being
       continued), ``nnn`` from 1...9.
       The default
--- 845,863 ----
  
     .. index:: --max-line-length (gnatpp)
  
!    :switch:`--max-line-length={nnn}, -M={nnn}`
       Maximum line length, ``nnn`` from 32...256, the default value is 79
  
  
     .. index:: --indentation (gnatpp)
  
!    :switch:`--indentation={nnn}, -i={nnn}`
       Indentation level, ``nnn`` from 1...9, the default value is 3
  
  
     .. index:: --indent-continuation (gnatpp)
  
!    :switch:`--indent-continuation={nnn}, -cl={nnn}`
       Indentation level for continuation lines (relative to the line being
       continued), ``nnn`` from 1...9.
       The default
*************** building specialized scripts.
*** 2097,2159 ****
       example, with ``--based-grouping=4``, ``16#0001FFFE#`` will be
       changed to ``16#0001_FFFE#``.
  
- 
-    .. index:: --split-line-before-record (gnatpp)
- 
-    :switch:`--split-line-before-record`
-      Split the line just before ``record`` in a record type declaration.
- 
- 
-    .. index:: --indent-named-statements (gnatpp)
- 
-    :switch:`--indent-named-statements`
-      Named block and loop statements are indented with respect to
-      the name.
- 
- 
-    .. index:: --split-line-before-op (gnatpp)
- 
-    :switch:`--split-line-before-op`
-      If it is necessary to split a line at a binary operator, by default
-      the line is split after the operator. With this option, it is split
-      before the operator.
- 
- 
-    .. index:: --RM-style-spacing (gnatpp)
- 
-    :switch:`--RM-style-spacing`
-      Do not insert an extra blank before various occurrences of
-      '(' and ':'. Alignment is off by default in this mode;
-      use :switch:`--alignment` to turn it on.
- 
- 
-    .. index:: --compact (gnatpp)
-    .. index:: --no-compact (gnatpp)
- 
-    :switch:`--compact`
-      This is the default. In calls and similar, this packs as many
-      subexpressions on the same line as possible. Example:
- 
-      .. code-block:: ada
- 
-         Some_Procedure
-           (Short_One, Another_Short_One,
-            A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
- 
-    :switch:`--no-compact`
-      Turns off --compact mode. In calls and similar, if it is necessary
-      to split a line between two subexpressions (because otherwise the
-      construct would exceed --max-line-length), then all such subexpressions
-      are placed on separate lines. Example:
- 
-      .. code-block:: ada
- 
-         Some_Procedure
-           (Short_One,
-            Another_Short_One,
-            A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
- 
- 
     .. index:: --call-threshold (gnatpp)
  
     :switch:`--call-threshold={nnn}`
--- 890,895 ----
*************** building specialized scripts.
*** 2162,2201 ****
       a new line. If ``nnn`` is 0, no check for the number of associations
       is made; this is the default.
  
- 
     .. index:: --par-threshold (gnatpp)
  
     :switch:`--par-threshold={nnn}`
       If the number of parameter specifications is greater than ``nnn``
       (or equal to ``nnn`` in case of a function), start each specification from
!      a new line. If ``nnn`` is 0, and :switch:`--no-separate-is` was not specified, then
!      the ``is`` is placed on a separate line. This feature is disabled by default.
! 
!    .. index:: --vertical-enum-types (gnatpp)
! 
!    :switch:`--vertical-enum-types`
!      Format enumeration type declarations "vertically", e.g. each
!      enumeration literal goes on a separate line.
! 
!    .. index:: --vertical-array-types (gnatpp)
! 
!    :switch:`--vertical-array-types`
!      Format array type declarations "vertically", e.g. for
!      multidimensional arrays, each index_subtype_definition or
!      discrete_subtype_definition goes on a separate line.
! 
!    .. index:: --vertical-named-aggregates (gnatpp)
! 
!    :switch:`--vertical-named-aggregates`
!      Format aggregates "vertically" if named notation is used for all
!      component_associations, e.g. each component_association
!      goes on a separate line.
! 
!    .. index:: --vertical-case-alternatives (gnatpp)
! 
!    :switch:`--vertical-case-alternatives`
!      Format case statements, case expressions, and variant parts with
!      additional line breaks.
  
  
     .. _Setting_the_Source_Search_Path:
--- 898,911 ----
       a new line. If ``nnn`` is 0, no check for the number of associations
       is made; this is the default.
  
     .. index:: --par-threshold (gnatpp)
  
     :switch:`--par-threshold={nnn}`
       If the number of parameter specifications is greater than ``nnn``
       (or equal to ``nnn`` in case of a function), start each specification from
!      a new line. If ``nnn`` is 0, and :switch:`--no-separate-is` was not
!      specified, then the ``is`` is placed on a separate line. This feature is
!      disabled by default.
  
  
     .. _Setting_the_Source_Search_Path:
*************** building specialized scripts.
*** 2231,2237 ****
  
     .. index:: --replace (gnatpp)
  
!    :switch:`--replace`
       This is the default.
       Replace the input source file with the reformatted output without
       creating any backup copy of the input source.
--- 941,947 ----
  
     .. index:: --replace (gnatpp)
  
!    :switch:`--replace, -rnb`
       This is the default.
       Replace the input source file with the reformatted output without
       creating any backup copy of the input source.
*************** building specialized scripts.
*** 2249,2261 ****
  
     .. index:: --pipe (gnatpp)
  
!    :switch:`--pipe`
       Send the output to ``Standard_Output``
  
  
     .. index:: --output (gnatpp)
  
!    :switch:`--output={output_file}`
       Write the output into ``output_file``.
       If ``output_file`` already exists, ``gnatpp`` terminates without
       reading or processing the input file.
--- 959,971 ----
  
     .. index:: --pipe (gnatpp)
  
!    :switch:`--pipe, -pipe`
       Send the output to ``Standard_Output``
  
  
     .. index:: --output (gnatpp)
  
!    :switch:`--output={output_file}, -o={output_file}`
       Write the output into ``output_file``.
       If ``output_file`` already exists, ``gnatpp`` terminates without
       reading or processing the input file.
*************** building specialized scripts.
*** 2263,2286 ****
  
     .. index:: --output-force (gnatpp)
  
!    :switch:`--output-force={output_file}`
       Write the output into ``output_file``, overwriting the existing file
       (if one is present).
  
  
     .. index:: --replace-backup (gnatpp)
  
!    :switch:`--replace-backup`
       Replace the input source file with the reformatted output, and copy the
!      original input source into the file whose name is obtained by appending the
!      :file:`.npp` suffix to the name of the input file.
       If a file with this name already exists, ``gnatpp`` terminates without
       reading or processing the input file.
  
  
     .. index:: --replace-force-backup (gnatpp)
  
!    :switch:`--replace-force-backup`
       Like ``--replace-backup`` except that if the file with the specified name
       already exists, it is overwritten.
  
--- 973,996 ----
  
     .. index:: --output-force (gnatpp)
  
!    :switch:`--output-force={output_file}, -of={output_file}`
       Write the output into ``output_file``, overwriting the existing file
       (if one is present).
  
  
     .. index:: --replace-backup (gnatpp)
  
!    :switch:`--replace-backup, -r`
       Replace the input source file with the reformatted output, and copy the
!      original input source into the file whose name is obtained by appending
!      the :file:`.npp` suffix to the name of the input file.
       If a file with this name already exists, ``gnatpp`` terminates without
       reading or processing the input file.
  
  
     .. index:: --replace-force-backup (gnatpp)
  
!    :switch:`--replace-force-backup, -rf`
       Like ``--replace-backup`` except that if the file with the specified name
       already exists, it is overwritten.
  
*************** building specialized scripts.
*** 2300,2306 ****
  
     .. index:: --wide-character-encoding (gnatpp)
  
!    :switch:`--wide-character-encoding={e}`
       Specify the wide character encoding method for the input and output
       files. ``e`` is one of the following:
  
--- 1010,1016 ----
  
     .. index:: --wide-character-encoding (gnatpp)
  
!    :switch:`--wide-character-encoding={e}, -W={e}`
       Specify the wide character encoding method for the input and output
       files. ``e`` is one of the following:
  
*************** building specialized scripts.
*** 2339,2346 ****
  
     :switch:`-P {file}`
       Indicates the name of the project file that describes the set of sources
!      to be processed. The exact set of argument sources depends on other options
!      specified; see below.
  
  
     .. index:: -U  (gnatpp)
--- 1049,1056 ----
  
     :switch:`-P {file}`
       Indicates the name of the project file that describes the set of sources
!      to be processed. The exact set of argument sources depends on other
!      options specified; see below.
  
  
     .. index:: -U  (gnatpp)
*************** building specialized scripts.
*** 2348,2356 ****
     :switch:`-U`
       If a project file is specified and no argument source is explicitly
       specified (either directly or by means of ``--files`` option), process
!      all the units of the closure of the argument project. Otherwise this option
!      has no effect.
! 
  
     :switch:`-U {main_unit}`
       If a project file is specified and no argument source is explicitly
--- 1058,1065 ----
     :switch:`-U`
       If a project file is specified and no argument source is explicitly
       specified (either directly or by means of ``--files`` option), process
!      all the units of the closure of the argument project. Otherwise this
!      option has no effect.
  
     :switch:`-U {main_unit}`
       If a project file is specified and no argument source is explicitly
*************** building specialized scripts.
*** 2396,2408 ****
     .. index:: --pp-on  (gnatpp)
  
     :switch:`--pp-on={xxx}`
!      Use :switch:`--xxx` as the command to turn pretty printing back on, instead
!      of the default ``--!pp on``.
  
  
     .. index:: --files (gnatpp)
  
!    :switch:`--files={filename}`
       Take as arguments the files listed in text file ``file``.
       Text file ``file`` may contain empty lines that are ignored.
       Each nonempty line should contain the name of an existing file.
--- 1105,1117 ----
     .. index:: --pp-on  (gnatpp)
  
     :switch:`--pp-on={xxx}`
!      Use :switch:`--xxx` as the command to turn pretty printing back on,
!      instead of the default ``--!pp on``.
  
  
     .. index:: --files (gnatpp)
  
!    :switch:`--files={filename}, -files={filename}`
       Take as arguments the files listed in text file ``file``.
       Text file ``file`` may contain empty lines that are ignored.
       Each nonempty line should contain the name of an existing file.
*************** building specialized scripts.
*** 2415,2423 ****
       Do not process the sources listed in a specified file. This option cannot
       be used in incremental mode.
  
     .. index:: --jobs (gnatpp)
  
!    :switch:`--jobs={n}`
       With ``--incremental``, use *n* ``gnatpp`` processes to perform
       pretty printing in parallel. If *n* is 0, then the maximum number
       processes is the number of core processors on the platform.
--- 1124,1133 ----
       Do not process the sources listed in a specified file. This option cannot
       be used in incremental mode.
  
+ 
     .. index:: --jobs (gnatpp)
  
!    :switch:`--jobs={n}, -j={n}`
       With ``--incremental``, use *n* ``gnatpp`` processes to perform
       pretty printing in parallel. If *n* is 0, then the maximum number
       processes is the number of core processors on the platform.
*************** building specialized scripts.
*** 2425,2437 ****
  
     .. index:: --verbose (gnatpp)
  
!    :switch:`--verbose`
       Verbose mode
  
  
     .. index:: --quiet (gnatpp)
  
!    :switch:`--quiet`
       Quiet mode
  
     If a project file is specified and no argument source is explicitly
--- 1135,1147 ----
  
     .. index:: --verbose (gnatpp)
  
!    :switch:`--verbose, -v`
       Verbose mode
  
  
     .. index:: --quiet (gnatpp)
  
!    :switch:`--quiet, -q`
       Quiet mode
  
     If a project file is specified and no argument source is explicitly
*************** building specialized scripts.
*** 2445,2453 ****
     Formatting Rules
     ----------------
  
!    The following subsections show how ``gnatpp`` treats white space,
!    comments, program layout, and name casing.
!    They provide detailed descriptions of the switches shown above.
  
  
     .. _Disabling_Pretty_Printing:
--- 1155,1163 ----
     Formatting Rules
     ----------------
  
!    The following subsections show how ``gnatpp`` treats, comments, program
!    layout, name casing and how to disable ``gnatpp`` in source code regions.
!    They provide more details of the switches shown above.
  
  
     .. _Disabling_Pretty_Printing:
*************** building specialized scripts.
*** 2494,2525 ****
     included in the argument to these switches.
  
  
-    .. _White_Space_and_Empty_Lines:
- 
-    White Space and Empty Lines
-    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
- 
-    ``gnatpp`` does not have an option to control space characters.
-    It will add or remove spaces according to the style illustrated by the
-    examples in the :title:`Ada Reference Manual`.
-    The output file will contain no lines with trailing white space.
- 
-    By default, a sequence of one or more blank lines in the input is
-    converted to a single blank line in the output; multiple blank lines
-    are squeezed down to one.
-    The ``--preserve-blank-lines`` option
-    turns off the squeezing; each blank line in the input is copied
-    to the output.
-    The ``--insert-blank-lines`` option
-    causes additional blank lines to be inserted if not already
-    present in the input (e.g. between bodies).
- 
- 
     .. _Formatting_Comments:
  
     Formatting Comments
     ^^^^^^^^^^^^^^^^^^^
  
     Comments in Ada code are of two kinds:
  
     * a *whole-line comment*, which appears by itself (possibly preceded by
--- 1204,1216 ----
     included in the argument to these switches.
  
  
     .. _Formatting_Comments:
  
     Formatting Comments
     ^^^^^^^^^^^^^^^^^^^
  
+    Only ``--layout=compact`` and ``--layout=tall`` format comments.
+ 
     Comments in Ada code are of two kinds:
  
     * a *whole-line comment*, which appears by itself (possibly preceded by
*************** building specialized scripts.
*** 2531,2568 ****
     A whole-line comment is indented according to the surrounding code,
     with some exceptions. Comments that start in column 1 are kept
     there. If possible, comments are not moved so far to the right that
!    the maximum line length is exceeded. The ``--comments-unchanged``
!    option turns off comment formatting. Special-form comments such as
     SPARK-style ``--#...`` are left alone.
  
     For an end-of-line comment, ``gnatpp`` tries to leave the same
     number of spaces between the end of the preceding Ada code and the
     beginning of the comment as appear in the original source.
  
!    The ``--comments-gnat-beginning`` switch (GNAT style comment
!    beginning) has the following effect:
! 
!      * For each whole-line comment that does not end with two hyphens,
!        ``gnatpp`` inserts spaces if necessary after the starting two
!        hyphens to ensure that there are at least two spaces between
!        these hyphens and the first non-blank character of the comment.
! 
!    The ``--comments-fill`` switch specifies that whole-line comments
!    that form a paragraph will be filled in typical word processor style
!    (that is, moving words between lines to make the lines other than the
!    last similar in length ).
  
!    The ``--comments-only`` switch specifies that only the comments are
!    formatted; the rest of the program text is left alone. The comments
!    are formatted according to the ``--comments-gnat-beginning`` and
!    ``--comments-fill`` switches; other formatting switches are ignored. For
!    example, ``--comments-only --comments-fill`` means to fill comment
!    paragraphs, and do nothing else. Likewise, ``--comments-only
!    --comments-gnat-beginning`` ensures comments start with at least two
!    spaces after ``--``, and ``--comments-only --comments-gnat-beginning
!    --comments-fill`` does both. If ``--comments-only`` is given without
!    ``--comments-gnat-beginning`` or ``--comments-fill``, then gnatpp
!    doesn't format anything.
  
  
     .. _Name_Casing:
--- 1222,1242 ----
     A whole-line comment is indented according to the surrounding code,
     with some exceptions. Comments that start in column 1 are kept
     there. If possible, comments are not moved so far to the right that
!    the maximum line length is exceeded. Special-form comments such as
     SPARK-style ``--#...`` are left alone.
  
     For an end-of-line comment, ``gnatpp`` tries to leave the same
     number of spaces between the end of the preceding Ada code and the
     beginning of the comment as appear in the original source.
  
!    For each whole-line comment that does not end with two hyphens or that are
!    not special-form comments, ``gnatpp`` inserts spaces if necessary after the
!    starting two hyphens to ensure that there are at least two spaces between
!    these hyphens and the first non-blank character of the comment.
  
!    With ``--layout=compact``, whole-line comments that form a paragraph will be
!    filled in typical word processor style (that is, moving words between lines
!    to make the lines other than the last similar in length).
  
  
     .. _Name_Casing:
*************** building specialized scripts.
*** 2784,2971 ****
     Legacy Switches
     ^^^^^^^^^^^^^^^
  
!    Some switches have a short form, mostly for legacy reasons,
!    as shown below.
! 
!    .. index:: -n (gnatpp)
! 
!    :switch:`-nD`
!      :switch:`--name-case-as-declared`
! 
!    :switch:`-nU`
!      :switch:`--name-upper-case`
! 
!    :switch:`-nL`
!      :switch:`--name-lower-case`
! 
!    :switch:`-nM`
!      :switch:`--name-mixed-case`
! 
!    .. index:: -a (gnatpp)
! 
!    :switch:`-aL`
!      :switch:`--attribute-lower-case`
! 
!    :switch:`-aU`
!      :switch:`--attribute-upper-case`
  
!    :switch:`-aM`
!      :switch:`--attribute-mixed-case`
  
!    .. index:: -k (gnatpp)
  
!    :switch:`-kL`
!      :switch:`--keyword-lower-case`
  
!    :switch:`-kU`
!      :switch:`--keyword-upper-case`
  
!    .. index:: -ne (gnatpp)
  
!    :switch:`-neD`
!      :switch:`--enum-case-as-declared`
  
!    :switch:`-neU`
!      :switch:`--enum-upper-case`
  
!    :switch:`-neL`
!      :switch:`--enum-lower-case`
  
!    :switch:`-neM`
!      :switch:`--enum-mixed-case`
  
!    .. index:: -nt (gnatpp)
  
!    :switch:`-ntD`
!      :switch:`--type-case-as-declared`
  
!    :switch:`-ntU`
!      :switch:`--type-upper-case`
  
!    :switch:`-ntL`
!      :switch:`--type-lower-case`
  
!    :switch:`-ntM`
!      :switch:`--type-mixed-case`
  
!    :switch:`-nnU`
!      :switch:`--number-upper-case`
  
!    :switch:`-nnL`
!      :switch:`--number-lower-case`
  
!    :switch:`-nnM`
!      :switch:`--number-mixed-case`
  
!    .. index:: -p (gnatpp)
  
!    :switch:`-pL`
!      :switch:`--pragma-lower-case`
  
!    :switch:`-pU`
!      :switch:`--pragma-upper-case`
  
-    :switch:`-pM`
-      :switch:`--pragma-mixed-case`
  
!    .. index:: -D (gnatpp)
  
!    :switch:`-D{file}`
!      :switch:`--dictionary={file}`
  
!    .. index:: -D- (gnatpp)
  
!    :switch:`-D-`
!      :switch:`--dictionary=-`
  
!    .. index:: -c (gnatpp)
  
!    :switch:`-c0`
!      :switch:`--comments-unchanged`
  
!    :switch:`-c1`
!      :switch:`--comments-gnat-indentation`
  
!    :switch:`-c3`
!      :switch:`--comments-gnat-beginning`
  
!    :switch:`-c4`
!      :switch:`--comments-fill`
  
!    :switch:`-c5`
!      :switch:`--comments-special`
  
!    .. index:: -M (gnatpp)
  
!    :switch:`-M{nnn}`
!      :switch:`--max-line-length={nnn}`
  
!    .. index:: -i (gnatpp)
  
!    :switch:`-i{nnn}`
!      :switch:`--indentation={nnn}`
  
!    .. index:: -cl (gnatpp)
  
!    :switch:`-cl{nnn}`
!      :switch:`--indent-continuation={nnn}`
  
!    .. index:: -pipe (gnatpp)
  
!    :switch:`-pipe`
!      :switch:`--pipe`
  
!    .. index:: -o (gnatpp)
  
!    :switch:`-o {output-file}`
!      :switch:`--output={output-file}`
  
!    .. index:: -of (gnatpp)
  
!    :switch:`-of {output-file}`
!      :switch:`--output-force={output-file}`
  
!    .. index:: -r (gnatpp)
  
!    :switch:`-rnb`
!      :switch:`--replace`
  
!    :switch:`-r`
!      :switch:`--replace-backup`
  
!    .. index:: -rf (gnatpp)
  
!    :switch:`-rf`
!      :switch:`--replace-force-backup`
  
!    .. index:: -rnb (gnatpp)
  
!    .. index:: --eol (gnatpp)
  
!    .. index:: -W (gnatpp)
  
!    :switch:`-W{e}`
!      :switch:`--wide-character-encoding={e}`
  
!    .. index:: -files (gnatpp)
  
!    :switch:`-files {filename}`
!      :switch:`--files={filename}`
  
!    .. index:: -j (gnatpp)
  
!    :switch:`-j{n}`
!      :switch:`--jobs={n}`
  
!    .. index:: -v (gnatpp)
  
!    :switch:`-v`
!      :switch:`--verbose`
  
!    .. index:: -q (gnatpp)
  
!    :switch:`-q`
!      :switch:`--quiet`
  
  
  .. only:: PRO or GPL
--- 1458,1649 ----
     Legacy Switches
     ^^^^^^^^^^^^^^^
  
!    .. index:: --alignment (gnatpp)
  
!    :switch:`--alignment, --no-alignment`
!       Programs can be easier to read if certain constructs are vertically
!       aligned.
  
!         * ``:`` in declarations,
!         * ``:=`` in initializations in declarations,
!         * ``:=`` in assignment statements,
!         * ``=>`` in associations, and
!         * ``at`` keywords in the component clauses in record representation
!           clauses.
  
!    .. index:: --align-modes (gnatpp)
  
!    :switch:`--align-modes, --no-align-modes`
  
!       Line up ``in`` and ``out`` in parameter specifications.
  
!    .. index:: --compact (gnatpp)
  
!    :switch:`--compact, --no-compact`
!      In calls and similar, ``--compact`` packs as many
!      subexpressions on the same line as possible. Example:
  
!      .. code-block:: ada
  
!         Some_Procedure
!           (Short_One, Another_Short_One,
!            A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
  
!      On the contrary, with ``--no-compact``, in calls and similar, if it is
!      necessary to split a line between two subexpressions (because otherwise
!      the construct would exceed --max-line-length), then all such
!      subexpressions are placed on separate lines. Example:
  
!      .. code-block:: ada
  
!         Some_Procedure
!           (Short_One,
!            Another_Short_One,
!            A_Very_Very_Very_Very_Very_Very_Very_Very_Long_One);
  
!    .. index:: --end-id (gnatpp)
  
!    :switch:`--end-id, --no-end-id`
!      Insert the name of a unit after ``end``. Otherwise, leave whatever comes
!      after ``end``, if anything, alone.
  
!    .. index:: --separate-is (gnatpp)
  
!    :switch:`--separate-is, --no-separate-is`
!      Place the keyword ``is`` on a separate line in a subprogram body in
!      case if the spec occupies more than one line.
  
!    .. index:: --separate-return (gnatpp)
  
!    :switch:`--separate-return, --no-separate-return`
!      If a subprogram spec does not fit on one line, place the ``return`` on
!      a separate line. Otherwise try to place it in the same line as the last
!      parameter specification.
  
!    .. index:: --separate-loop (gnatpp)
  
!    :switch:`--separate-loop, --no-separate-loop`
!      Place the keyword ``loop`` in FOR and WHILE loop statements
!      on a separate line.
  
  
!    .. index:: --separate-then (gnatpp)
  
!    :switch:`--separate-then, --no-separate-then`
!      Place the keyword ``then`` in IF statements
!      on a separate line.
  
!    .. index:: --separate-loop-then (gnatpp)
  
!    :switch:`--separate-loop-then, --no-separate-loop-then`
!      Equivalent to :switch:`--separate-loop` :switch:`--separate-then`.
  
!    .. index:: --split-line-before-record (gnatpp)
  
!    :switch:`--split-line-before-record, --no-split-line-before-record`
!      Split the line just before ``record`` in a record type declaration.
  
!    .. index:: --indent-named-statements (gnatpp)
  
!    :switch:`--indent-named-statements, --no-indent-named-statements`
!      Named block and loop statements are indented with respect to
!      the name.
  
!    .. index:: --split-line-before-op (gnatpp)
  
!    :switch:`--split-line-before-op, --no-split-line-before-op`
!      If it is necessary to split a line at a binary operator, by default
!      the line is split after the operator. With this option, it is split
!      before the operator.
  
!    .. index:: --use-on-new-line (gnatpp)
  
!    :switch:`--use-on-new-line, --no-use-one-new-line`
!      Start each USE clause in a context clause from a separate line.
  
!    .. index:: --vertical-enum-types (gnatpp)
  
!    :switch:`--vertical-enum-types, --no-vertical-enum-types`
!      Format enumeration type declarations "vertically", e.g. each
!      enumeration literal goes on a separate line.
  
!    .. index:: --vertical-array-types (gnatpp)
  
!    :switch:`--vertical-array-types, --no-vertical-array-types`
!      Format array type declarations "vertically", e.g. for
!      multidimensional arrays, each index_subtype_definition or
!      discrete_subtype_definition goes on a separate line.
  
!    .. index:: --vertical-named-aggregates (gnatpp)
  
!    :switch:`--vertical-named-aggregates, --no-vertical-named-aggregates`
!      Format aggregates "vertically" if named notation is used for all
!      component_associations, e.g. each component_association
!      goes on a separate line.
  
!    .. index:: --vertical-case-alternatives (gnatpp)
  
!    :switch:`--vertical-case-alternatives, --no-vertical-case-alternatives`
!      Format case statements, case expressions, and variant parts with
!      additional line breaks.
  
!    .. index:: --RM-style-spacing (gnatpp)
  
!    :switch:`--RM-style-spacing`
!      Do not insert an extra blank before various occurrences of
!      '(' and ':'. Alignment is off by default in this mode;
!      use :switch:`--alignment` to turn it on.
  
!    .. index:: --insert-blank-lines (gnatpp)
  
!    :switch:`--insert-blank-lines, --no-insert-blank-lines`
!      Insert blank lines where appropriate (between bodies and other large
!      constructs).
  
!    .. index:: --preserve-blank-lines (gnatpp)
  
!    :switch:`--preserve-blank-lines, --no-preserve-blank-lines`
!      Preserve blank lines in the input. By default, gnatpp will squeeze
!      multiple blank lines down to one.
  
!    .. index:: --preserve-line-breaks (gnatpp)
  
!    :switch:`--preserve-line-breaks, --no-preserve-line-breaks`
!      Preserve line breaks in the input, to the extent possible.
!      By default, line breaks are also inserted at appropriate
!      places.
  
!    .. index:: --source-line-breaks (gnatpp)
  
!    :switch:`--source-line-breaks, --no-source-line-breaks`
!      Keep the line breaks from the source; do not insert or delete any
!      line breaks.
  
!    .. index:: --spaces-only (gnatpp)
  
!    :switch:`--spaces-only, --no-spaces-only`
!      Disable all formatting except for inserting and removing spaces.
!      This implies --source-line-breaks.
  
!    .. index:: -c (gnatpp)
  
!    :switch:`--comments-unchanged, -c0`
!      All comments remain unchanged.
  
!    :switch:`--comments-gnat-indentation, -c1`
!      GNAT-style comment line indentation.
  
!    :switch:`--comments-gnat-beginning, -c3`
!      GNAT-style comment beginning.
  
!    :switch:`--comments-fill, -c4`
!      Fill comment blocks.
  
!    :switch:`--comments-special, -c5`
!      Keep unchanged special form comments.
  
!    :switch:`--comments-only`
!      Format just the comments.
  
  
  .. only:: PRO or GPL
*************** building specialized scripts.
*** 3027,3033 ****
        naming conventions.
  
        Note that it is no longer necessary to specify the Ada language version;
!       ``gnatmetric`` can process Ada source code written in any version from
        Ada 83 onward without specifying any language version switch.
  
    * *switches*
--- 1705,1711 ----
        naming conventions.
  
        Note that it is no longer necessary to specify the Ada language version;
!       ``gnatstub`` can process Ada source code written in any version from
        Ada 83 onward without specifying any language version switch.
  
    * *switches*
*************** building specialized scripts.
*** 3266,4187 ****
  
  .. only:: PRO or GPL
  
-   .. _The_Unit_Test_Generator_gnattest:
- 
-   The Unit Test Generator ``gnattest``
-   ====================================
- 
-   .. index:: ! gnattest
- 
-   ``gnattest`` is an ASIS-based utility that creates unit-test skeletons
-   as well as a test driver infrastructure (harness). ``gnattest`` creates
-   a skeleton for each visible subprogram in the packages under consideration when
-   they do not exist already.
- 
-   ``gnattest`` is a project-aware tool.
-   (See :ref:`Using_Project_Files_with_GNAT_Tools` for a description of
-   the project-related switches but note that ``gnattest`` does not support
-   the :switch:`-U`, :switch:`-eL`, :switch:`--subdirs={dir}`, or
-   :switch:`--no-objects-dir` switches.)
-   The project file package that can specify
-   ``gnattest`` switches is named ``gnattest``.
- 
-   The user can choose to generate a single test driver
-   that will run all individual tests, or separate test drivers for each test. The
-   second option allows much greater flexibility in test execution environment,
-   allows to benefit from parallel tests execution to increase performance, and
-   provides stubbing support.
- 
-   ``gnattest`` also has a mode of operation where it acts as the test
-   aggregator when multiple test executables must be run, in particular when
-   the separate test drivers were generated. In this mode it handles individual
-   tests execution and upon completion reports the summary results of the test
-   run.
- 
-   In order to process source files from a project, ``gnattest`` has to
-   semantically analyze the sources. Therefore, test skeletons can only be
-   generated for legal Ada units. If a unit is dependent on other units,
-   those units should be among the source files of the project or of other projects
-   imported by this one.
- 
-   Generated skeletons and harnesses are based on the AUnit testing framework.
-   AUnit is an Ada adaptation of the xxxUnit testing frameworks, similar to JUnit
-   for Java or CppUnit for C++. While it is advised that gnattest users read
-   the AUnit manual, deep knowledge of AUnit is not necessary for using ``gnattest``.
-   For correct operation of ``gnattest``, AUnit should be installed and
-   aunit.gpr must be on the project path. Except for some special circumstances
-   (e.g. a custom run-time is used), this should normally be the case out of the box.
- 
- 
-   .. _Running_gnattest:
- 
-   Running ``gnattest``
-   --------------------
- 
-   There are two ways of running ``gnattest``.
- 
-   .. _Framework_Generation_Mode:
- 
-   Framework Generation Mode
-   ^^^^^^^^^^^^^^^^^^^^^^^^^
- 
-   In this mode ``gnattest`` has the following command-line interface:
- 
-     ::
- 
-         $ gnattest -Pprojname [ switches ] [ filename ] [ -cargs gcc_switches ]
- 
-   where
- 
-   * :switch:`-P{projname}`
-       specifies the project defining the location of source files. When no
-       file names are provided on the command line, all sources in the project
-       are used as input. This switch is required.
- 
-   * :switch:`{filename}`
-       is the name of the source file containing the library unit package *declaration*
-       (the package "spec") for which a test package will be created. The file name
-       may be given with a path.
- 
-   * :samp:`{switches}`
-       is an optional sequence of switches as described below.
- 
-   * :samp:`{gcc_switches}`
-       is a list of additional switches for
-       ``gcc`` that will be passed to all compiler invocations
-       made by ``gnattest`` to generate a set of ASIS trees.
- 
- 
-   ``gnattest`` results can be found in two different places.
- 
-   * *automatic harness*:
-       This is the harness code, which is located by default in
-       "gnattest/harness" directory created in the object directory of
-       the main project file. All of this code is generated completely
-       automatically and can be destroyed and regenerated at will, with the
-       exception of the file *gnattest_common.gpr*, which is created if absent,
-       but never overwritten. It is not recommended to modify other files
-       manually, since these modifications will be lost if ``gnattest`` is re-run.
-       The entry point in the harness code is
-       the project file named *test_driver.gpr*. Tests can be compiled and run
-       using a command such as:
- 
-       ::
- 
-          $ gprbuild -P<harness-dir>/test_driver
- 
-       Note that if you need to adjust any options used to compile the harness,
-       you can do so by editing the file *gnattest_common.gpr*.
- 
-   * *actual unit test skeletons*:
-       A test skeleton for each visible subprogram is created in a separate file, if it
-       doesn't exist already. By default, those separate test files are located in a
-       "gnattest/tests" directory that is created in the object directory of
-       corresponding project file. For example, if a source file my_unit.ads in
-       directory src contains a visible subprogram Proc, then the corresponding unit
-       test will be found in file src/tests/my_unit-test_data-tests.adb and will be
-       called Test_Proc_<code>. <code> is a signature encoding used to differentiate
-       test names in case of overloading.
- 
-       Note that if the project already has both my_unit.ads and my_unit-test_data.ads,
-       this will cause a name conflict with the generated test package.
- 
- 
-   .. _Test_Execution_Mode:
- 
-   Test Execution Mode
-   ^^^^^^^^^^^^^^^^^^^
- 
-   In this  mode ``gnattest`` has a the following command-line interface:
- 
-     ::
- 
-         $ gnattest test_drivers.list [ switches ]
- 
-   where
- 
-   * :samp:`{test_drivers.list}`
-        is the name of the text file containing the list of executables to treat as
-        test drivers. This file is automatically generated by gnattest, but can be
-        hand-edited to add or remove tests. This switch is required.
- 
- 
-   * :samp:`{switches}`
-        is an optional sequence of switches as described below.
- 
- 
-   .. _Switches_for_gnattest_in_framework_generation_mode:
- 
-   Switches for ``gnattest`` in framework generation mode
-   ------------------------------------------------------
- 
-     .. index:: --strict (gnattest)
- 
-   :switch:`--strict`
-     Return error exit code if there are any compilation errors.
- 
-     .. index:: -q (gnattest)
- 
-   :switch:`-q`
-     Quiet mode: suppresses noncritical output messages.
- 
- 
-     .. index:: -v (gnattest)
- 
-   :switch:`-v`
-     Verbose mode: produces additional output about the execution of the tool.
-     When specified alone on the command line, prints tool version and exits.
- 
- 
-     .. index:: -r (gnattest)
- 
-   :switch:`-r`
-     Recursively considers all sources from all projects.
- 
-     .. index:: -files (gnattest)
- 
-   :switch:`-files={filename}`
-     Take as arguments the files listed in text file ``file``.
-     Text file ``file`` may contain empty lines that are ignored.
-     Each nonempty line should contain the name of an existing file.
-     Several such switches may be specified simultaneously.
- 
-     .. index:: --ignore (gnattest)
- 
-   :switch:`--ignore={filename}`
-     Do not process the sources listed in a specified file.
- 
-     .. index:: --RTS (gnattest)
- 
-   :switch:`--RTS={rts-path}`
-     Specifies the default location of the runtime library. Same meaning as the
-     equivalent ``gnatmake`` flag (:ref:`Switches_for_gnatmake`). For restricted
-     profiles, ``gnattest`` takes into account the run-time limitations when
-     generating the harness.
- 
- 
-     .. index:: --additional-tests (gnattest)
- 
-   :switch:`--additional-tests={projname}`
-     Sources described in ``projname`` are considered potential additional
-     manual tests to be added to the test suite.
- 
- 
-     .. index:: --harness-only (gnattest)
- 
-   :switch:`--harness-only`
-     When this option is given, ``gnattest`` creates a harness for all
-     sources, treating them as test packages. This option is not compatible with
-     closure computation done by -U main.
- 
- 
-     .. index:: --separate-drivers (gnattest)
- 
-   :switch:`--separate-drivers[={val}]`
-     Generates a separate test driver for each test or unit under test, rather
-     than a single executable incorporating all tests. ``val`` can be "unit" or
-     "test", or may be omitted, which defaults to "unit".
- 
- 
-     .. index:: --stub (gnattest)
- 
-   :switch:`--stub`
-     Generates the testing framework that uses subsystem stubbing to isolate the
-     code under test.
- 
- 
-     .. index:: --harness-dir (gnattest)
- 
-   :switch:`--harness-dir={dirname}`
-     Specifies the directory that will hold the harness packages and project file
-     for the test driver. If the ``dirname`` is a relative path, it is considered
-     relative to the object directory of the project file.
- 
- 
-     .. index:: --tests-dir (gnattest)
- 
-   :switch:`--tests-dir={dirname}`
-     All test packages are placed in the ``dirname`` directory.
-     If the ``dirname`` is a relative path, it is considered relative to the object
-     directory of the project file. When all sources from all projects are taken
-     recursively from all projects, ``dirname`` directories are created for each
-     project in their object directories and test packages are placed accordingly.
- 
- 
-     .. index:: --subdir (gnattest)
- 
-   :switch:`--subdir={dirname}`
-     Test packages are placed in a subdirectory of the corresponding source
-     directory, with the name ``dirname``. Thus, each set of unit tests is located
-     in a subdirectory of the code under test. If the sources are in separate
-     directories, each source directory has a test subdirectory named ``dirname``.
- 
- 
-     .. index:: --tests-root (gnattest)
- 
-   :switch:`--tests-root={dirname}`
-     The hierarchy of source directories, if any, is recreated in the ``dirname``
-     directory, with test packages placed in directories corresponding to those
-     of the sources.
-     If the ``dirname`` is a relative path, it is considered relative to the object
-     directory of the project file. When projects are considered recursively,
-     directory hierarchies of tested sources are
-     recreated for each project in their object directories and test packages are
-     placed accordingly.
- 
- 
-     .. index:: --stubs-dir (gnattest)
- 
-   :switch:`--stubs-dir={dirname}`
-     The hierarchy of directories containing stubbed units is recreated in
-     the ``dirname`` directory, with stubs placed in directories corresponding to
-     projects they are derived from.
-     If the ``dirname`` is a relative path, it is considered relative to the object
-     directory of the project file. When projects are considered recursively,
-     directory hierarchies of stubs are
-     recreated for each project in their object directories and test packages are
-     placed accordingly.
- 
- 
-     .. index:: --exclude-from-stubbing (gnattest)
- 
-   :switch:`--exclude-from-stubbing={filename}`
-     Disables stubbing of units listed in ``filename``. The file should contain
-     corresponding spec files, one per line.
- 
-   :switch:`--exclude-from-stubbing:{unit}={filename}`
-     Same as above, but corresponding units will not be stubbed only when testing
-     specified ``unit``.
- 
-     .. index:: --validate-type-extensions (gnattest)
- 
-   :switch:`--validate-type-extensions`
-     Enables substitution check: run all tests from all parents in order
-     to check substitutability in accordance with the Liskov substitution principle (LSP).
- 
-     .. index:: --inheritance-check (gnattest)
- 
-   :switch:`--inheritance-check`
-     Enables inheritance check: run inherited tests against descendants.
- 
-     .. index:: --no-inheritance-check (gnattest)
- 
-   :switch:`--no-inheritance-check`
-     Disables inheritance check.
- 
-     .. index:: --no-inheritance-check (gnattest)
- 
-   :switch:`--test-case-only`
-     Generates test skeletons only for subprograms that have at least one
-     associated pragma or aspect Test_Case.
- 
-     .. index:: --skeleton-default (gnattest)
- 
-   :switch:`--skeleton-default={val}`
-     Specifies the default behavior of generated skeletons. ``val`` can be either
-     "fail" or "pass", "fail" being the default.
- 
- 
-     .. index:: --passed-tests (gnattest)
- 
-   :switch:`--passed-tests={val}`
-     Specifies whether or not passed tests should be shown. ``val`` can be either
-     "show" or "hide", "show" being the default.
- 
- 
-     .. index:: --exit-status (gnattest)
- 
-   :switch:`--exit-status={val}`
-     Specifies whether or not generated test driver should return failure exit
-     status if at least one test fails or crashes. ``val`` can be either
-     "on" or "off", "off" being the default.
- 
- 
-     .. index:: --omit-sloc (gnattest)
- 
-   :switch:`--omit-sloc`
-     Suppresses comment line containing file name and line number of corresponding
-     subprograms in test skeletons.
- 
- 
-     .. index:: --no-command-line (gnattest)
- 
-   :switch:`--no-command-line`
-     Don't add command line support to test driver. Note that regardless of this
-     switch, ``gnattest`` will automatically refrain from adding command
-     line support if it detects that the selected run-time doesn't provide
-     this capability.
- 
- 
-     .. index:: --separates (gnattest)
- 
-   :switch:`--separates`
-     Bodies of all test routines are generated as separates. Note that this mode is
-     kept for compatibility reasons only and it is not advised to use it due to
-     possible problems with hash in names of test skeletons when using an
-     inconsistent casing. Separate test skeletons can be incorporated to monolith
-     test package with improved hash being used by using ``--transition``
-     switch.
- 
- 
-     .. index:: --transition (gnattest)
- 
-   :switch:`--transition`
-     This allows transition from separate test routines to monolith test packages.
-     All matching test routines are overwritten with contents of corresponding
-     separates. Note that if separate test routines had any manually added with
-     clauses they will be moved to the test package body as is and have to be moved
-     by hand.
- 
- 
-     .. index:: --test-duration (gnattest)
- 
-   :switch:`--test-duration`
-     Adds time measurements for each test in generated test driver.
- 
- 
-   :switch:`--tests_root`, :switch:`--subdir` and :switch:`--tests-dir` switches are mutually exclusive.
- 
- 
-   .. _Switches_for_gnattest_in_test_execution_mode:
- 
-   Switches for ``gnattest`` in test execution mode
-   ------------------------------------------------
- 
- 
-     .. index:: --passed-tests (gnattest)
- 
-   :switch:`--passed-tests={val}`
-     Specifies whether or not passed tests should be shown. ``val`` can be either
-     "show" or "hide", "show" being the default.
- 
- 
-     .. index:: --queues (gnattest)
-     .. index:: -j (gnattest)
- 
-   :switch:`--queues={n}`, :switch:`-j{n}`
-     Runs ``n`` tests in parallel (default is 1).
- 
- 
-     .. index:: --copy-environment (gnattest)
- 
-   :switch:`--copy-environment={dir}`
-     Contents of ``dir`` directory will be copied to temporary directories
-     created by gnattest in which individual test drivers are spawned.
- 
- 
-   .. _Project_Attributes_for_gnattest:
- 
-   Project Attributes for ``gnattest``
-   -----------------------------------
- 
-   Most of the command-line options can also be passed to the tool by adding
-   special attributes to the project file. Those attributes should be put in
-   package ``Gnattest``. Here is the list of attributes:
- 
- 
-   * ``Tests_Root``
-        is used to select the same output mode as with the ``--tests-root`` option.
-        This attribute cannot be used together with ``Subdir`` or ``Tests_Dir``.
- 
-   * ``Subdir``
-        is used to select the same output mode as with the ``--subdir`` option.
-        This attribute cannot be used together with ``Tests_Root`` or ``Tests_Dir``.
- 
-   * ``Tests_Dir``
-        is used to select the same output mode as with the ``--tests-dir`` option.
-        This attribute cannot be used together with ``Subdir`` or ``Tests_Root``.
- 
-   * ``Stubs_Dir``
-        is used to select the same output mode as with the ``--stubs-dir`` option.
- 
-   * ``Harness_Dir``
-        is used to specify the directory in which to place harness packages and project
-        file for the test driver, otherwise specified by ``--harness-dir``.
- 
-   * ``Additional_Tests``
-        is used to specify the project file, otherwise given by
-        ``--additional-tests`` switch.
- 
-   * ``Skeletons_Default``
-        is used to specify the default behaviour of test skeletons, otherwise
-        specified by ``--skeleton-default`` option. The value of this attribute
-        should be either ``pass`` or ``fail``.
- 
-   * ``Default_Stub_Exclusion_List``
-        is used to specify the file with list of units whose bodies should not
-        be stubbed, otherwise specified by ``--exclude-from-stubbing=filename``.
- 
-   * ``Stub_Exclusion_List ("unit")``
-        is used to specify the file with list of units whose bodies should not
-        be stubbed when testing "unit", otherwise specified by
-        ``--exclude-from-stubbing:unit=filename``.
- 
-   Each of those attributes can be overridden from the command line if needed.
-   Other ``gnattest`` switches can also be passed via the project
-   file as an attribute list called ``Gnattest_Switches``.
- 
- 
-   .. _Simple_gnattest_Example:
- 
-   Simple Example
-   --------------
- 
-   Let's take a very simple example using the first ``gnattest`` example
-   located in:
- 
-     ::
- 
-         <install_prefix>/share/examples/gnattest/simple
- 
-   This project contains a simple package containing one subprogram. By running ``gnattest``:
- 
-     ::
- 
-         $ gnattest --harness-dir=driver -Psimple.gpr
- 
-   a test driver is created in directory ``driver``. It can be compiled and run:
- 
-     ::
- 
-        $ cd obj/driver
-        $ gprbuild -Ptest_driver
-        $ test_runner
- 
-   One failed test with the diagnosis "test not implemented" is reported.
-   Since no special output option was specified, the test package ``Simple.Tests``
-   is located in:
- 
-     ::
- 
-         <install_prefix>/share/examples/gnattest/simple/obj/gnattest/tests
- 
- 
-   For each package containing visible subprograms, a child test package is
-   generated. It contains one test routine per tested subprogram. Each
-   declaration of a test subprogram has a comment specifying which tested
-   subprogram it corresponds to. Bodies of test routines are placed in test package
-   bodies and are surrounded by special comment sections. Those comment sections
-   should not be removed or modified in order for gnattest to be able to regenerate
-   test packages and keep already written tests in place.
-   The test routine ``Test_Inc_5eaee3`` located at :file:`simple-test_data-tests.adb` contains
-   a single statement: a call to procedure ``Assert``. It has two arguments:
-   the Boolean expression we want to check and the diagnosis message to display if
-   the condition is false.
- 
-   That is where actual testing code should be written after a proper setup.
-   An actual check can be performed by replacing the ``Assert`` call with:
- 
-     ::
- 
-         Assert (Inc (1) = 2, "wrong incrementation");
- 
-   After recompiling and running the test driver, one successfully passed test
-   is reported.
- 
- 
-   .. _Setting_Up_and_Tearing_Down_the_Testing_Environment:
- 
-   Setting Up and Tearing Down the Testing Environment
-   ---------------------------------------------------
- 
-   Besides test routines themselves, each test package has a parent package
-   ``Test_Data`` that has two procedures: ``Set_Up`` and ``Tear_Down``. This package is never
-   overwritten by the tool. ``Set_Up`` is called before each test routine of the
-   package, and ``Tear_Down`` is called after each test routine. Those two procedures
-   can be used to perform necessary initialization and finalization,
-   memory allocation, etc. Test type declared in ``Test_Data`` package is parent type
-   for the test type of test package and can have user-defined components whose
-   values can be set by ``Set_Up`` routine and used in test routines afterwards.
- 
- 
-   .. _Regenerating_Tests:
- 
-   Regenerating Tests
-   ------------------
- 
-   Bodies of test routines and ``Test_Data`` packages are never overridden after they
-   have been created once. As long as the name of the subprogram, full expanded Ada
-   names and order of its parameters are the same, and comment sections are
-   intact, the old test routine will fit in its place and no test skeleton will be
-   generated for the subprogram.
- 
-   This can be demonstrated with the previous example. By uncommenting declaration
-   and body of function Dec in ``simple.ads`` and ``simple.adb``, running
-   ``gnattest`` on the project, and then running the test driver:
- 
-     ::
- 
-         $ gnattest --harness-dir=driver -Psimple.gpr
-         $ cd obj/driver
-         $ gprbuild -Ptest_driver
-         $ test_runner
- 
-   The old test is not replaced with a stub, nor is it lost, but a new test
-   skeleton is created for function ``Dec``.
- 
-   The only way of regenerating tests skeletons is to remove the previously created
-   tests together with corresponding comment sections.
- 
- 
-   .. _Default_Test_Behavior:
- 
-   Default Test Behavior
-   ---------------------
- 
-   The generated test driver can treat unimplemented tests in two ways:
-   either count them all as failed (this is useful to see which tests are still
-   left to implement) or as passed (to sort out unimplemented ones from those
-   actually failing).
- 
-   The test driver accepts a switch to specify this behavior:
-   :switch:`--skeleton-default={val}`, where ``val`` is either ``pass`` or ``fail`` (exactly as for
-   ``gnattest``).
- 
-   The default behavior of the test driver is set with the same switch
-   as passed to ``gnattest`` when generating the test driver.
- 
-   Passing it to the driver generated on the first example:
- 
-     ::
- 
-         $ test_runner --skeleton-default=pass
- 
-   makes both tests pass, even the unimplemented one.
- 
- 
-   .. _Testing_Primitive_Operations_of_Tagged_Types:
- 
-   Testing Primitive Operations of Tagged Types
-   --------------------------------------------
- 
-   Creation of test skeletons for primitive operations of tagged types entails
-   a number of features. Test routines for all primitives of a given tagged type
-   are placed in a separate child package named according to the tagged type. For
-   example, if you have tagged type ``T`` in package ``P``, all tests for primitives
-   of ``T`` will be in ``P.T_Test_Data.T_Tests``.
- 
-   Consider running ``gnattest`` on the second example (note: actual tests for this
-   example already exist, so there's no need to worry if the tool reports that
-   no new stubs were generated):
- 
-     ::
- 
-         $ cd <install_prefix>/share/examples/gnattest/tagged_rec
-         $ gnattest --harness-dir=driver -Ptagged_rec.gpr
- 
-   Taking a closer look at the test type declared in the test package
-   *Speed1.Controller_Test_Data* is necessary. It is declared in:
- 
-     ::
- 
-         <install_prefix>/share/examples/gnattest/tagged_rec/obj/gnattest/tests
- 
-   Test types are direct or indirect descendants of
-   *AUnit.Test_Fixtures.Test_Fixture* type. In the case of non-primitive tested
-   subprograms, the user doesn't need to be concerned with them. However,
-   when generating test packages for primitive operations, there are some things
-   the user needs to know.
- 
-   Type ``Test_Controller`` has components that allow assignment of various
-   derivations of type ``Controller``. And if you look at the specification of
-   package *Speed2.Auto_Controller*, you will see that ``Test_Auto_Controller``
-   actually derives from ``Test_Controller`` rather than AUnit type ``Test_Fixture``.
-   Thus, test types mirror the hierarchy of tested types.
- 
-   The ``Set_Up`` procedure of ``Test_Data`` package corresponding to a test package
-   of primitive operations of type ``T`` assigns to ``Fixture`` a reference to an
-   object of that exact type ``T``. Note, however, that if the tagged type has
-   discriminants, the ``Set_Up`` only has a commented template for setting
-   up the fixture, since filling the discriminant with actual value is up
-   to the user.
- 
-   The knowledge of the structure of test types allows additional testing
-   without additional effort. Those possibilities are described below.
- 
- 
-   .. _Testing_Inheritance:
- 
-   Testing Inheritance
-   -------------------
- 
-   Since the test type hierarchy mimics the hierarchy of tested types, the
-   inheritance of tests takes place. An example of such inheritance can be
-   seen by running the test driver generated for the second example. As previously
-   mentioned, actual tests are already written for this example.
- 
-     ::
- 
-         $ cd obj/driver
-         $ gprbuild -Ptest_driver
-         $ test_runner
- 
-   There are 6 passed tests while there are only 5 testable subprograms. The test
-   routine for function Speed has been inherited and run against objects of the
-   derived type.
- 
- 
-   .. _Tagged_Type_Substitutability_Testing:
- 
-   Tagged Type Substitutability Testing
-   ------------------------------------
- 
-   *Tagged Type Substitutability Testing* is a way of verifying the global type
-   consistency by testing. Global type consistency is a principle stating that if
-   ``S`` is a subtype of ``T`` (in Ada, ``S`` is a derived type of tagged type ``T``),
-   then objects of type ``T`` may be replaced with objects of type ``S`` (that is,
-   objects of type ``S`` may be substituted for objects of type ``T``), without
-   altering any of the desirable properties of the program. When the properties
-   of the program are expressed in the form of subprogram preconditions and
-   postconditions (let's call them pre and post), the principle is formulated as
-   relations between the pre and post of primitive operations and the pre and post
-   of their derived operations. The pre of a derived operation should not be
-   stronger than the original pre, and the post of the derived operation should
-   not be weaker than the original post. Those relations ensure that verifying if
-   a dispatching call is safe can be done just by using the pre and post of the
-   root operation.
- 
-   Verifying global type consistency by testing consists of running all the unit
-   tests associated with the primitives of a given tagged type with objects of its
-   derived types.
- 
-   In the example used in the previous section, there was clearly a violation of
-   type consistency. The overriding primitive ``Adjust_Speed`` in package ``Speed2``
-   removes the functionality of the overridden primitive and thus doesn't respect
-   the consistency principle.
-   ``gnattest`` has a special option to run overridden parent tests against objects
-   of the type which have overriding primitives:
- 
-     ::
- 
-         $ gnattest --harness-dir=driver --validate-type-extensions -Ptagged_rec.gpr
-         $ cd obj/driver
-         $ gprbuild -Ptest_driver
-         $ test_runner
- 
-   While all the tests pass by themselves, the parent test for ``Adjust_Speed`` fails
-   against objects of the derived type.
- 
-   Non-overridden tests are already inherited for derived test types, so the
-   ``--validate-type-extensions`` enables the application of overridden tests
-   to objects of derived types.
- 
- 
-   .. _Testing_with_Contracts:
- 
-   Testing with Contracts
-   ----------------------
- 
-   ``gnattest`` supports pragmas ``Pre``, ``Post``, and ``Test_Case``,
-   as well as the corresponding Ada 2012 aspects.
-   Test routines are generated, one per each ``Test_Case`` associated with a tested
-   subprogram. Those test routines have special wrappers for tested functions
-   that have composition of pre- and postcondition of the subprogram with
-   "requires" and "ensures" of the ``Test_Case`` (depending on the mode, pre and post
-   either count for ``Nominal`` mode or do *not* count for ``Robustness`` mode).
- 
-   The third example demonstrates how this works:
- 
-     ::
- 
-         $ cd <install_prefix>/share/examples/gnattest/contracts
-         $ gnattest --harness-dir=driver -Pcontracts.gpr
- 
-   Putting actual checks within the range of the contract does not cause any
-   error reports. For example, for the test routine which corresponds to
-   test case 1:
- 
-     ::
- 
-         Assert (Sqrt (9.0) = 3.0, "wrong sqrt");
- 
-   and for the test routine corresponding to test case 2:
- 
-     ::
- 
-         Assert (Sqrt (-5.0) = -1.0, "wrong error indication");
- 
-   are acceptable:
- 
-     ::
- 
-         $ cd obj/driver
-         $ gprbuild -Ptest_driver
-         $ test_runner
- 
-   However, by changing 9.0 to 25.0 and 3.0 to 5.0, for example, you can get
-   a precondition violation for test case one. Also, by using any otherwise
-   correct but positive pair of numbers in the second test routine, you can also
-   get a precondition violation. Postconditions are checked and reported
-   the same way.
- 
- 
-   .. _Additional_Tests:
- 
-   Additional Tests
-   ----------------
- 
-   ``gnattest`` can add user-written tests to the main suite of the test
-   driver. ``gnattest`` traverses the given packages and searches for test
-   routines. All procedures with a single in out parameter of a type which is
-   derived from *AUnit.Test_Fixtures.Test_Fixture* and that are declared in package
-   specifications are added to the suites and are then executed by the test driver.
-   (``Set_Up`` and ``Tear_Down`` are filtered out.)
- 
-   An example illustrates two ways of creating test harnesses for user-written
-   tests. Directory ``additional_tests`` contains an AUnit-based test driver written
-   by hand.
- 
-     ::
- 
-         <install_prefix>/share/examples/gnattest/additional_tests/
- 
-   To create a test driver for already-written tests, use the ``--harness-only``
-   option:
- 
-     ::
- 
-         gnattest -Padditional/harness/harness.gpr --harness-dir=harness_only \\
-           --harness-only
-         gprbuild -Pharness_only/test_driver.gpr
-         harness_only/test_runner
- 
-   Additional tests can also be executed together with generated tests:
- 
-     ::
- 
-         gnattest -Psimple.gpr --additional-tests=additional/harness/harness.gpr \\
-           --harness-dir=mixing
-         gprbuild -Pmixing/test_driver.gpr
-         mixing/test_runner
- 
- 
-   .. _Individual_Test_Drivers:
- 
-   Individual Test Drivers
-   -----------------------
- 
-   By default, ``gnattest`` generates a monolithic test driver that
-   aggregates the individual tests into a single executable. It is also possible
-   to generate separate executables for each test or each unit under test, by
-   passing the switch ``--separate-drivers`` with corresponding parameter. This
-   approach scales better for large testing campaigns, especially involving target
-   architectures with limited resources typical for embedded development. It can
-   also provide a major performance benefit on multi-core systems by allowing
-   simultaneous execution of multiple tests.
- 
-   ``gnattest`` can take charge of executing the individual tests; for this,
-   instead of passing a project file, a text file containing the list of
-   executables can be passed. Such a file is automatically generated by gnattest
-   under the name :file:`test_drivers.list`, but it can be
-   hand-edited to add or remove tests, or replaced. The individual tests can
-   also be executed standalone, or from any user-defined scripted framework.
- 
- 
-   .. _Stubbing:
- 
-   Stubbing
-   --------
- 
-   Depending on the testing campaign, it is sometimes necessary to isolate the
-   part of the algorithm under test from its dependencies. This is accomplished
-   via *stubbing*, i.e. replacing the subprograms that are called from the
-   subprogram under test by stand-in subprograms that match the profiles of the
-   original ones, but simply return predetermined values required by the test
-   scenario.
- 
-   This mode of test harness generation is activated by the switch ``--stub``.
- 
-   The implementation approach chosen by ``gnattest`` is as follows.
-   For each package under consideration all the packages it is directly depending
-   on are stubbed, excluding the generic packages and package instantiations.
-   The stubs are shared for each package under test. The specs of packages to stub
-   remain intact, while their bodies are replaced, and hide the original bodies by
-   means of extending projects. Also, for each stubbed
-   package, a child package with setter routines for each subprogram declaration
-   is created. These setters are meant to be used to set the behavior of
-   stubbed subprograms from within test cases.
- 
-   Note that subprograms belonging to the same package as the subprogram under
-   test are not stubbed. This guarantees that the sources being tested are
-   exactly the sources used for production, which is an important property for
-   establishing the traceability between the testing campaign and production code.
- 
-   Due to the nature of stubbing process, this mode implies the switch
-   ``--separate-drivers``, i.e. an individual test driver (with the
-   corresponding hierarchy of extending projects) is generated for each unit under
-   test.
- 
-   .. note::
- 
-      Developing a stubs-based testing campaign requires
-      good understanding of the infrastructure created by ``gnattest`` for
-      this purpose. We recommend following the two stubbing tutorials
-      ``simple_stubbing`` and ``advanced_stubbing`` provided
-      under :file:`<install_prefix>/share/examples/gnattest` before
-      attempting to use this powerful feature.
- 
- 
-   .. _Gnatcov_Integration:
- 
-   Integration with GNATcoverage
-   -----------------------------
- 
-   In addition to the harness, ``gnattest`` generates a Makefile. This Makefile
-   provides targets for building the test drivers and also the targets for
-   computing the coverage information using GNATcoverage framework when this
-   coverage analysis tool is available. The target ``coverage`` fully automates
-   the process: it will first build all test drivers, then run them under
-   GNATcoverage, analyze individual trace files, and finally aggregate them:
- 
-     ::
- 
-         make coverage
- 
-   GNATcoverage options, such as coverage criteria and generated report format,
-   can be adjusted using Makefile variables provided for this purpose.
- 
-   Note that coverage targets are not generated in the Makefile when
-   --separate-drivers=test is passed to gnattest.
- 
- 
-   .. _Putting_Tests_under_Version_Control:
- 
-   Putting Tests under Version Control
-   -----------------------------------
- 
-   As has been stated earlier, ``gnattest`` generates two different types
-   of code, test skeletons and harness. The harness is generated completely
-   automatically each time, does not require manual changes and therefore should
-   not be put under version control.
-   It makes sense to put under version control files containing test data packages,
-   both specs and bodies, and files containing bodies of test packages. Note that
-   test package specs are also generated automatically each time and should not be
-   put under version control.
-   Option ``--omit-sloc`` may be useful when putting test packages under version control.
- 
- 
-   .. _Current_Limitations:
- 
-   Current Limitations
-   -------------------
- 
-   The tool currently has the following limitations:
- 
-   * generic tests for nested generic packages and their instantiations are
-     not supported;
-   * tests for protected subprograms and entries are not supported;
-   * pragma ``No_Run_Time`` is not supported;
-   * pragma ``No_Secondary_Stack`` is not supported;
-   * if pragmas for interfacing with foreign languages are used, manual
-     adjustments might be necessary to make the test harness compilable;
-   * use of some constructs, such as elaboration-control pragmas, Type_Invariant
-     aspects, and complex variable initializations that use Subprogram'Access,
-     may result in elaboration circularities in the generated harness.
- 
- 
- .. only:: PRO or GPL
- 
    .. _The_Backtrace_Symbolizer_gnatsymbolize:
  
    Translating Code Addresses into Source Locations with ``gnatsymbolize``
--- 1944,1949 ----
*************** building specialized scripts.
*** 4211,4216 ****
--- 1973,1979 ----
          with GNAT.IO; use GNAT.IO;
          with GNAT.Traceback; use GNAT.Traceback;
          with GNAT.Debug_Utilities;
+ 
          package body Pck is
             procedure Call_Me_Third is
                TB : Tracebacks_Array (1 .. 5);
*************** building specialized scripts.
*** 4234,4273 ****
                Call_Me_Second;
             end Call_Me_First;
          end Pck;
          with Pck; use Pck;
  
          procedure Foo is
          begin
             Global_Val := 123;
             Call_Me_First;
          end Foo;
  
    This program, when built and run, prints a list of addresses which
    correspond to the traceback when inside function ``Call_Me_Third``.
!   For instance, on x86_64 GNU/Linux:
  
      ::
  
         $ gnatmake -g -q foo.adb
         $ ./foo
!        0x0000000000402561
!        0x00000000004025EF
!        0x00000000004025FB
!        0x0000000000402611
!        0x00000000004024C7
  
    ``gnatsymbolize`` can be used to translate those addresses into
    code locations as follow:
  
      ::
  
!        $ gnatsymbolize foo 0x0000000000402561 0x00000000004025EF \
!            0x00000000004025FB 0x0000000000402611 0x00000000004024C7
!        Pck.Call_Me_Third at pck.adb:12
!        Pck.Call_Me_Second at pck.adb:20
!        Pck.Call_Me_First at pck.adb:25
!        Foo at foo.adb:6
!        Main at b~foo.adb:184
  
    Switches for ``gnatsymbolize``
    ------------------------------
--- 1997,2053 ----
                Call_Me_Second;
             end Call_Me_First;
          end Pck;
+ 
+         with GNAT.IO; use GNAT.IO;
+         with GNAT.Debug_Utilities;
+         with GNAT.Traceback;
+         with System;
+ 
          with Pck; use Pck;
  
          procedure Foo is
+            LA : constant System.Address := \
+              GNAT.Traceback.Executable_Load_Address;
+ 
+            use type System.Address;
+ 
          begin
+            if LA /= System.Null_Address then
+               Put_Line ("Load address: " & GNAT.Debug_Utilities.Image_C (LA));
+            end if;
+ 
             Global_Val := 123;
             Call_Me_First;
          end Foo;
  
    This program, when built and run, prints a list of addresses which
    correspond to the traceback when inside function ``Call_Me_Third``.
!   For instance, on x86-64 GNU/Linux:
  
      ::
  
         $ gnatmake -g -q foo.adb
         $ ./foo
!        Load address: 0x00005586C9D7D000
!        0x00005586C9D81105
!        0x00005586C9D8119B
!        0x00005586C9D811A7
!        0x00005586C9D8128C
!        0x00005586C9D81069
  
    ``gnatsymbolize`` can be used to translate those addresses into
    code locations as follow:
  
      ::
  
!        $ gnatsymbolize --load foo 0x00005586C9D7D000 0x00005586C9D81105 \
!            0x00005586C9D8119B 0x00005586C9D811A7 0x00005586C9D8128C \
!            0x00005586C9D81069
!        0x5586c9d81105 Pck.Call_Me_Third at pck.adb:12
!        0x5586c9d8119b Pck.Call_Me_Second at pck.adb:20
!        0x5586c9d811a7 Pck.Call_Me_First at pck.adb:25
!        0x5586c9d8128c Foo at foo.adb:6
!        0x5586c9d81069 Main at b~foo.adb:199
  
    Switches for ``gnatsymbolize``
    ------------------------------
*************** building specialized scripts.
*** 4300,4306 ****
  
    :switch:`--load`
      Interpret the first address as the load address of the executable.
!     This is needed for position-independent executables on Windows.
  
    Requirements for Correct Operation
    ----------------------------------
--- 2080,2086 ----
  
    :switch:`--load`
      Interpret the first address as the load address of the executable.
!     This is needed for position-independent executables on Linux and Windows.
  
    Requirements for Correct Operation
    ----------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/inline_assembler.rst	Wed Apr 26 07:09:39 2023
*************** To see this output, invoke the compiler
*** 138,144 ****
  
    ::
  
!      $  gcc -c -S -fomit-frame-pointer -gnatp nothing.adb
  
  where the options are:
  
--- 138,144 ----
  
    ::
  
!      $ gcc -c -S -fomit-frame-pointer -gnatp nothing.adb
  
  where the options are:
  
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/platform_specific_information.rst	Wed Apr 26 07:09:39 2023
*************** Platform-Specific Information
*** 13,20 ****
  *****************************
  
  This appendix contains information relating to the implementation
! of run-time libraries on various platforms and also covers
! topics related to the GNAT implementation on Windows and Mac OS.
  
  .. _`Run_Time_Libraries`:
  
--- 13,20 ----
  *****************************
  
  This appendix contains information relating to the implementation
! of run-time libraries on various platforms and also covers topics
! related to the GNAT implementation on specific Operating Systems.
  
  .. _`Run_Time_Libraries`:
  
*************** GNU/Linux Topics
*** 233,239 ****
  This section describes topics that are specific to GNU/Linux platforms.
  
  .. _Required_packages_on_GNU_Linux:
- .. _A_GNU_Linux_debug_quirk:
  
  Required Packages on GNU/Linux
  ------------------------------
--- 233,238 ----
*************** If using the 32-bit version of GNAT on a
*** 248,258 ****
--- 247,261 ----
  you'll need the 32-bit version of the following packages:
  
  * RedHat, SUSE: ``glibc.i686``, ``glibc-devel.i686``, ``ncurses-libs.i686``
+ * SUSE: ``glibc-locale-base-32bit``
  * Debian, Ubuntu: ``libc6:i386``, ``libc6-dev:i386``, ``lib32ncursesw5``
  
  Other GNU/Linux distributions might be choosing a different name
  for those packages.
  
+ 
+ .. _A_GNU_Linux_debug_quirk:
+ 
  A GNU/Linux Debug Quirk
  -----------------------
  
*************** is
*** 1716,1722 ****
  :switch:`-k`
    Kill :samp:`@{nn}` from exported names
    (:ref:`Windows_Calling_Conventions`
!   for a discussion about ``Stdcall``-style symbols.
  
  
  .. index:: --help (dlltool)
--- 1719,1725 ----
  :switch:`-k`
    Kill :samp:`@{nn}` from exported names
    (:ref:`Windows_Calling_Conventions`
!   for a discussion about ``Stdcall``-style symbols).
  
  
  .. index:: --help (dlltool)
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst gcc-13.1.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst
*** gcc-12.2.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/gnat_ugn/the_gnat_compilation_model.rst	Wed Apr 26 07:09:39 2023
*************** recognized by GNAT::
*** 1401,1406 ****
--- 1401,1408 ----
       Ada_2005
       Ada_12
       Ada_2012
+      Ada_2022
+      Aggregate_Individually_Assign
       Allow_Integer_Address
       Annotate
       Assertion_Policy
*************** The following information is contained i
*** 1741,1748 ****
    if any of these units are modified.
  
  * Cross-reference data. Contains information on all entities referenced
!   in the unit. Used by tools like ``gnatxref`` and ``gnatfind`` to
!   provide cross-reference information.
  
  For a full detailed description of the format of the :file:`ALI` file,
  see the source of the body of unit ``Lib.Writ``, contained in file
--- 1743,1749 ----
    if any of these units are modified.
  
  * Cross-reference data. Contains information on all entities referenced
!   in the unit. Used by some tools to provide cross-reference information.
  
  For a full detailed description of the format of the :file:`ALI` file,
  see the source of the body of unit ``Lib.Writ``, contained in file
*************** be :file:`adalib`).
*** 2007,2014 ****
  You can also specify a new default path to the run-time library at compilation
  time with the switch :switch:`--RTS=rts-path`. You can thus choose / change
  the run-time library you want your program to be compiled with. This switch is
! recognized by ``gcc``, ``gnatmake``, ``gnatbind``,
! ``gnatls``, ``gnatfind`` and ``gnatxref``.
  
  It is possible to install a library before or after the standard GNAT
  library, by reordering the lines in the configuration files. In general, a
--- 2008,2015 ----
  You can also specify a new default path to the run-time library at compilation
  time with the switch :switch:`--RTS=rts-path`. You can thus choose / change
  the run-time library you want your program to be compiled with. This switch is
! recognized by ``gcc``, ``gnatmake``, ``gnatbind``, ``gnatls``, and all
! project aware tools.
  
  It is possible to install a library before or after the standard GNAT
  library, by reordering the lines in the configuration files. In general, a
*************** Interfacing to C++
*** 3809,3815 ****
  
  GNAT supports interfacing with the G++ compiler (or any C++ compiler
  generating code that is compatible with the G++ Application Binary
! Interface ---see http://www.codesourcery.com/archives/cxx-abi).
  
  Interfacing can be done at 3 levels: simple data, subprograms, and
  classes. In the first two cases, GNAT offers a specific ``Convention C_Plus_Plus``
--- 3810,3816 ----
  
  GNAT supports interfacing with the G++ compiler (or any C++ compiler
  generating code that is compatible with the G++ Application Binary
! Interface ---see http://itanium-cxx-abi.github.io/cxx-abi/abi.html).
  
  Interfacing can be done at 3 levels: simple data, subprograms, and
  classes. In the first two cases, GNAT offers a specific ``Convention C_Plus_Plus``
*************** can use instead the :switch:`-fdump-ada-
*** 4556,4563 ****
  You can optionally specify a parent unit, of which all generated units will
  be children, using :switch:`-fada-spec-parent={unit}`.
  
! The simple ``gcc```-based command works only for C headers. For C++ headers
! you need to use either the ``g++`` command or the combination ``gcc -x c++```.
  
  In some cases, the generated bindings will be more complete or more meaningful
  when defining some macros, which you can do via the :switch:`-D` switch. This
--- 4557,4564 ----
  You can optionally specify a parent unit, of which all generated units will
  be children, using :switch:`-fada-spec-parent={unit}`.
  
! The simple ``gcc``-based command works only for C headers. For C++ headers
! you need to use either the ``g++`` command or the combination ``gcc -x c++``.
  
  In some cases, the generated bindings will be more complete or more meaningful
  when defining some macros, which you can do via the :switch:`-D` switch. This
diff -Nrcpad gcc-12.2.0/gcc/ada/doc/share/conf.py gcc-13.1.0/gcc/ada/doc/share/conf.py
*** gcc-12.2.0/gcc/ada/doc/share/conf.py	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/doc/share/conf.py	Wed Apr 26 07:09:39 2023
***************
*** 2,7 ****
--- 2,10 ----
  # Style_Check:Python_Fragment (meaning no pyflakes check)
  #
  # GNAT build configuration file
+ # --------------------------------
+ # This file defines the configuration for all files created
+ # by Sphinx. In this case, pdf (using latex) and html
  
  import sys
  import os
*************** sys.path.append('.')
*** 13,28 ****
  import ada_pygments
  import latex_elements
  
! # Some configuration values for the various documentation handled by
! # this conf.py
! 
  DOCS = {
!     'gnat_rm': {
!         'title': 'GNAT Reference Manual'},
!     'gnat_ugn': {
!         'title': 'GNAT User\'s Guide for Native Platforms'},
!     'gnat-style': {
!         'title': 'GNAT Coding Style: A Guide for GNAT Developers'}}
  
  # Then retrieve the source directory
  root_source_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
--- 16,27 ----
  import ada_pygments
  import latex_elements
  
! # Define list of documents to be built and their title
  DOCS = {
!     "gnat_rm": {"title": "GNAT Reference Manual"},
!     "gnat_ugn": {"title": "GNAT User's Guide for Native Platforms"},
!     "gnat-style": {"title": "GNAT Coding Style: A Guide for GNAT Developers"},
! }
  
  # Then retrieve the source directory
  root_source_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
*************** gnatvsn_spec = os.path.join(root_source_
*** 30,43 ****
--- 29,45 ----
  basever = os.path.join(root_source_dir, '..', '..', 'BASE-VER')
  texi_fsf = True  # Set to False when FSF doc is switched to sphinx by default
  
+ # get vsn specs
  with open(gnatvsn_spec, 'r') as fd:
      gnatvsn_content = fd.read()
  
  
+ # read copyright test from .rst file (used also for sanity-checking)
  def get_copyright():
      return '2008-%s, Free Software Foundation' % time.strftime('%Y')
  
  
+ # get environment gnat version (used also for sanity-checking)
  def get_gnat_version():
      m = re.search(r'Gnat_Static_Version_String : ' +
                    r'constant String := "([^\(\)]+)\(.*\)?";',
*************** def get_gnat_version():
*** 58,63 ****
--- 60,66 ----
      sys.exit(1)
  
  
+ # get gnat build type from runtime
  def get_gnat_build_type():
      m = re.search(r'Build_Type : constant Gnat_Build_Type := (.+);',
                    gnatvsn_content)
*************** def get_gnat_build_type():
*** 70,76 ****
--- 73,107 ----
          sys.exit(1)
  
  
+ # Enable Sphinx extensions
+ # Note that these are active for all files to be build (see DOCS list)
+ extensions = ['sphinx_rtd_theme']
+ 
+ # todo interprets ".. todo::" commands in .rst files
+ # mathjax enables math equations to render correctly
+ extensions += ['sphinx.ext.todo', 'sphinx.ext.mathjax']
+ todo_include_todos = True
+ 
+ # define templates source folder
+ templates_path = ['_templates']
+ # define the types of files to read as source for documents
+ source_suffix = '.rst'
+ 
+ # enable figure, object, table numeration on documents
+ print('enabling table, code-block and figure numeration')
+ numfig = True
+ numfig_format = {
+     'figure': 'figure %s',
+     'table': 'table %s',
+     'code-block': 'listing %s',
+     'section': 'section %s',
+ }
+ print('done')
+ 
+ 
+ # Start building the documents
  # First retrieve the name of the documentation we are building
+ print('checking doc name... ')
  doc_name = os.environ.get('DOC_NAME', None)
  if doc_name is None:
      print('DOC_NAME environment variable should be set')
*************** if doc_name is None:
*** 79,85 ****
  if doc_name not in DOCS:
      print('%s is not a valid documentation name' % doc_name)
      sys.exit(1)
! 
  
  # Exclude sources that are not part of the current documentation
  exclude_patterns = []
--- 110,116 ----
  if doc_name not in DOCS:
      print('%s is not a valid documentation name' % doc_name)
      sys.exit(1)
! print('found... ' , doc_name)
  
  # Exclude sources that are not part of the current documentation
  exclude_patterns = []
*************** for d in os.listdir(root_source_dir):
*** 88,103 ****
          exclude_patterns.append(d)
          print('ignoring %s' % d)
  
  if doc_name == 'gnat_rm':
      exclude_patterns.append('share/gnat_project_manager.rst')
      print('ignoring share/gnat_project_manager.rst')
  
- extensions = []
- templates_path = ['_templates']
- source_suffix = '.rst'
- master_doc = doc_name
- 
  # General information about the project.
  project = DOCS[doc_name]['title']
  
  copyright = get_copyright()
--- 119,131 ----
          exclude_patterns.append(d)
          print('ignoring %s' % d)
  
+ # Special condition for gnat_rm
  if doc_name == 'gnat_rm':
      exclude_patterns.append('share/gnat_project_manager.rst')
      print('ignoring share/gnat_project_manager.rst')
  
  # General information about the project.
+ master_doc = doc_name
  project = DOCS[doc_name]['title']
  
  copyright = get_copyright()
*************** release = get_gnat_version()
*** 107,148 ****
  
  pygments_style = None
  tags.add(get_gnat_build_type())
! html_theme = 'sphinxdoc'
  if os.path.isfile('adacore_transparent.png'):
      html_logo = 'adacore_transparent.png'
  if os.path.isfile('favicon.ico'):
      html_favicon = 'favicon.ico'
  
  html_static_path = ['_static']
  
  latex_additional_files = ['gnat.sty']
  
  copyright_macros = {
      'date': time.strftime("%b %d, %Y"),
      'edition': 'GNAT %s Edition' % 'Pro' if get_gnat_build_type() == 'PRO'
                 else 'GPL',
      'name': 'GNU Ada',
      'tool': 'GNAT',
!     'version': version}
  
  latex_elements = {
!     'preamble': '\\usepackage{gnat}\n' +
!     latex_elements.TOC_DEPTH +
!     latex_elements.PAGE_BLANK +
!     latex_elements.TOC_CMD +
!     latex_elements.LATEX_HYPHEN +
!     latex_elements.doc_settings(DOCS[doc_name]['title'],
!                                 get_gnat_version()),
!     'tableofcontents': latex_elements.TOC % copyright_macros}
  
  latex_documents = [
      (master_doc, '%s.tex' % doc_name, project, 'AdaCore', 'manual')]
! 
  texinfo_documents = [
!     (master_doc, doc_name, project,
!      'AdaCore', doc_name, doc_name, '')]
  
  
  def setup(app):
      app.add_lexer('ada', ada_pygments.AdaLexer)
      app.add_lexer('gpr', ada_pygments.GNATProjectLexer)
--- 135,192 ----
  
  pygments_style = None
  tags.add(get_gnat_build_type())
! 
! # Define figures to be included
! html_theme = 'sphinx_rtd_theme'
  if os.path.isfile('adacore_transparent.png'):
+     # split html and pdf logos to avoid 'same name' error in sphinx <5.2+
      html_logo = 'adacore_transparent.png'
+     latex_logo = 'adacore_transparent.png'
  if os.path.isfile('favicon.ico'):
      html_favicon = 'favicon.ico'
  
  html_static_path = ['_static']
  
+ # Use gnat.sty for bulding documents
  latex_additional_files = ['gnat.sty']
  
+ # Add copyright info to file
  copyright_macros = {
      'date': time.strftime("%b %d, %Y"),
      'edition': 'GNAT %s Edition' % 'Pro' if get_gnat_build_type() == 'PRO'
                 else 'GPL',
      'name': 'GNU Ada',
      'tool': 'GNAT',
!     'version': version
! }
  
+ # Send info to latex for building document
  latex_elements = {
!     'preamble': '\\usepackage{gnat}\n'  # use gnat.sty format
!     + latex_elements.TOC_DEPTH  # define table of contents max depth to display
!     + latex_elements.PAGE_BLANK  # define blank pages and when to be used
!     + latex_elements.TOC_CMD  # write table of contents
!     + latex_elements.LATEX_HYPHEN  # define latex hyphen '-'
!     + '\\sloppy\n\n'  # sloppy/fussy define how words are spread in a paragraph
!     # the following is used to send title and gnat version to latex
!     + latex_elements.doc_settings(DOCS[doc_name]['title'], get_gnat_version()),
!     'tableofcontents': latex_elements.TOC % copyright_macros,  # build TOC
!     'papersize': 'a4paper,table',  # papersize as a4, else default letter
!     'figure_align': 'H',  # align figure as square and to paragraph text
!     'maketitle': '\\maketitle',  # execute custom maketitle
! }
  
+ # Show page references for cross-reference in docs
+ latex_show_pagerefs = True
+ # Define latex metadata
  latex_documents = [
      (master_doc, '%s.tex' % doc_name, project, 'AdaCore', 'manual')]
! # Define .txt files metadata
  texinfo_documents = [
!     (master_doc, doc_name, project, 'AdaCore', doc_name, doc_name, '')]
  
  
+ # setup AdaCore custom pygments
  def setup(app):
      app.add_lexer('ada', ada_pygments.AdaLexer)
      app.add_lexer('gpr', ada_pygments.GNATProjectLexer)
diff -Nrcpad gcc-12.2.0/gcc/ada/einfo-utils.adb gcc-13.1.0/gcc/ada/einfo-utils.adb
*** gcc-12.2.0/gcc/ada/einfo-utils.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/einfo-utils.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Elists;         use Elists;
*** 28,34 ****
  with Nlists;         use Nlists;
  with Output;         use Output;
  with Sinfo;          use Sinfo;
- with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  
  package body Einfo.Utils is
--- 28,33 ----
*************** package body Einfo.Utils is
*** 307,313 ****
        return Ekind (Id) in Generic_Unit_Kind;
     end Is_Generic_Unit;
  
!    function Is_Ghost_Entity (Id : Entity_Id) return Boolean is
     begin
        return Is_Checked_Ghost_Entity (Id) or else Is_Ignored_Ghost_Entity (Id);
     end Is_Ghost_Entity;
--- 306,312 ----
        return Ekind (Id) in Generic_Unit_Kind;
     end Is_Generic_Unit;
  
!    function Is_Ghost_Entity                     (Id : E) return Boolean is
     begin
        return Is_Checked_Ghost_Entity (Id) or else Is_Ignored_Ghost_Entity (Id);
     end Is_Ghost_Entity;
*************** package body Einfo.Utils is
*** 593,599 ****
     -- Address_Clause --
     --------------------
  
!    function Address_Clause (Id : E) return N is
     begin
        return Get_Attribute_Definition_Clause (Id, Attribute_Address);
     end Address_Clause;
--- 592,598 ----
     -- Address_Clause --
     --------------------
  
!    function Address_Clause (Id : E) return Node_Id is
     begin
        return Get_Attribute_Definition_Clause (Id, Attribute_Address);
     end Address_Clause;
*************** package body Einfo.Utils is
*** 618,624 ****
     -- Alignment_Clause --
     ----------------------
  
!    function Alignment_Clause (Id : E) return N is
     begin
        return Get_Attribute_Definition_Clause (Id, Attribute_Alignment);
     end Alignment_Clause;
--- 617,623 ----
     -- Alignment_Clause --
     ----------------------
  
!    function Alignment_Clause (Id : E) return Node_Id is
     begin
        return Get_Attribute_Definition_Clause (Id, Attribute_Alignment);
     end Alignment_Clause;
*************** package body Einfo.Utils is
*** 672,678 ****
     -- Declaration_Node --
     ----------------------
  
!    function Declaration_Node (Id : E) return N is
        P : Node_Id;
  
     begin
--- 671,677 ----
     -- Declaration_Node --
     ----------------------
  
!    function Declaration_Node (Id : E) return Node_Id is
        P : Node_Id;
  
     begin
*************** package body Einfo.Utils is
*** 771,777 ****
     -- First_Component --
     ---------------------
  
!    function First_Component (Id : E) return E is
        Comp_Id : Entity_Id;
  
     begin
--- 770,776 ----
     -- First_Component --
     ---------------------
  
!    function First_Component (Id : E) return Entity_Id is
        Comp_Id : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 793,799 ****
     -- First_Component_Or_Discriminant --
     -------------------------------------
  
!    function First_Component_Or_Discriminant (Id : E) return E is
        Comp_Id : Entity_Id;
  
     begin
--- 792,798 ----
     -- First_Component_Or_Discriminant --
     -------------------------------------
  
!    function First_Component_Or_Discriminant (Id : E) return Entity_Id is
        Comp_Id : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 816,822 ****
     -- First_Formal --
     ------------------
  
!    function First_Formal (Id : E) return E is
        Formal : Entity_Id;
  
     begin
--- 815,821 ----
     -- First_Formal --
     ------------------
  
!    function First_Formal (Id : E) return Entity_Id is
        Formal : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 857,863 ****
     -- First_Formal_With_Extras --
     ------------------------------
  
!    function First_Formal_With_Extras (Id : E) return E is
        Formal : Entity_Id;
  
     begin
--- 856,862 ----
     -- First_Formal_With_Extras --
     ------------------------------
  
!    function First_Formal_With_Extras (Id : E) return Entity_Id is
        Formal : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 1383,1389 ****
     -- Invariant_Procedure --
     -------------------------
  
!    function Invariant_Procedure (Id : E) return E is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
--- 1382,1388 ----
     -- Invariant_Procedure --
     -------------------------
  
!    function Invariant_Procedure (Id : E) return Entity_Id is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
*************** package body Einfo.Utils is
*** 1525,1531 ****
     -- Is_Elaboration_Target --
     ---------------------------
  
!    function Is_Elaboration_Target (Id : Entity_Id) return Boolean is
     begin
        return
          Ekind (Id) in E_Constant | E_Package | E_Variable
--- 1524,1530 ----
     -- Is_Elaboration_Target --
     ---------------------------
  
!    function Is_Elaboration_Target (Id : E) return Boolean is
     begin
        return
          Ekind (Id) in E_Constant | E_Package | E_Variable
*************** package body Einfo.Utils is
*** 1768,1774 ****
     -- Last_Formal --
     -----------------
  
!    function Last_Formal (Id : E) return E is
        Formal : Entity_Id;
  
     begin
--- 1767,1773 ----
     -- Last_Formal --
     -----------------
  
!    function Last_Formal (Id : E) return Entity_Id is
        Formal : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 1911,1917 ****
     -- Next_Component --
     --------------------
  
!    function Next_Component (Id : E) return E is
        Comp_Id : Entity_Id;
  
     begin
--- 1910,1916 ----
     -- Next_Component --
     --------------------
  
!    function Next_Component (Id : E) return Entity_Id is
        Comp_Id : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 1928,1934 ****
     -- Next_Component_Or_Discriminant --
     ------------------------------------
  
!    function Next_Component_Or_Discriminant (Id : E) return E is
        Comp_Id : Entity_Id;
  
     begin
--- 1927,1933 ----
     -- Next_Component_Or_Discriminant --
     ------------------------------------
  
!    function Next_Component_Or_Discriminant (Id : E) return Entity_Id is
        Comp_Id : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 1949,1955 ****
     --  Next_Stored_Discriminant by making sure that the Discriminant
     --  returned is of the same variety as Id.
  
!    function Next_Discriminant (Id : E) return E is
  
        --  Derived Tagged types with private extensions look like this...
  
--- 1948,1954 ----
     --  Next_Stored_Discriminant by making sure that the Discriminant
     --  returned is of the same variety as Id.
  
!    function Next_Discriminant (Id : E) return Entity_Id is
  
        --  Derived Tagged types with private extensions look like this...
  
*************** package body Einfo.Utils is
*** 1962,1968 ****
  
        --  so it is critical not to go past the leading discriminants
  
!       D : E := Id;
  
     begin
        pragma Assert (Ekind (Id) = E_Discriminant);
--- 1961,1967 ----
  
        --  so it is critical not to go past the leading discriminants
  
!       D : Entity_Id := Id;
  
     begin
        pragma Assert (Ekind (Id) = E_Discriminant);
*************** package body Einfo.Utils is
*** 1987,1993 ****
     -- Next_Formal --
     -----------------
  
!    function Next_Formal (Id : E) return E is
        P : Entity_Id;
  
     begin
--- 1986,1992 ----
     -- Next_Formal --
     -----------------
  
!    function Next_Formal (Id : E) return Entity_Id is
        P : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 2012,2018 ****
     -- Next_Formal_With_Extras --
     -----------------------------
  
!    function Next_Formal_With_Extras (Id : E) return E is
     begin
        if Present (Extra_Formal (Id)) then
           return Extra_Formal (Id);
--- 2011,2017 ----
     -- Next_Formal_With_Extras --
     -----------------------------
  
!    function Next_Formal_With_Extras (Id : E) return Entity_Id is
     begin
        if Present (Extra_Formal (Id)) then
           return Extra_Formal (Id);
*************** package body Einfo.Utils is
*** 2025,2031 ****
     -- Next_Index --
     ----------------
  
!    function Next_Index (Id : Node_Id) return Node_Id is
     begin
        pragma Assert (Nkind (Id) in N_Is_Index);
        pragma Assert (No (Next (Id)) or else Nkind (Next (Id)) in N_Is_Index);
--- 2024,2030 ----
     -- Next_Index --
     ----------------
  
!    function Next_Index (Id : N) return Node_Id is
     begin
        pragma Assert (Nkind (Id) in N_Is_Index);
        pragma Assert (No (Next (Id)) or else Nkind (Next (Id)) in N_Is_Index);
*************** package body Einfo.Utils is
*** 2036,2042 ****
     -- Next_Literal --
     ------------------
  
!    function Next_Literal (Id : E) return E is
     begin
        pragma Assert (Nkind (Id) in N_Entity);
        return Next (Id);
--- 2035,2041 ----
     -- Next_Literal --
     ------------------
  
!    function Next_Literal (Id : E) return Entity_Id is
     begin
        pragma Assert (Nkind (Id) in N_Entity);
        return Next (Id);
*************** package body Einfo.Utils is
*** 2046,2052 ****
     -- Next_Stored_Discriminant --
     ------------------------------
  
!    function Next_Stored_Discriminant (Id : E) return E is
     begin
        --  See comment in Next_Discriminant
  
--- 2045,2051 ----
     -- Next_Stored_Discriminant --
     ------------------------------
  
!    function Next_Stored_Discriminant (Id : E) return Entity_Id is
     begin
        --  See comment in Next_Discriminant
  
*************** package body Einfo.Utils is
*** 2082,2088 ****
     --------------------
  
     function Number_Entries (Id : E) return Nat is
!       N   : Int;
        Ent : Entity_Id;
  
     begin
--- 2081,2087 ----
     --------------------
  
     function Number_Entries (Id : E) return Nat is
!       N   : Nat;
        Ent : Entity_Id;
  
     begin
*************** package body Einfo.Utils is
*** 2124,2130 ****
     -- Object_Size_Clause --
     ------------------------
  
!    function Object_Size_Clause (Id : E) return N is
     begin
        return Get_Attribute_Definition_Clause (Id, Attribute_Object_Size);
     end Object_Size_Clause;
--- 2123,2129 ----
     -- Object_Size_Clause --
     ------------------------
  
!    function Object_Size_Clause (Id : E) return Node_Id is
     begin
        return Get_Attribute_Definition_Clause (Id, Attribute_Object_Size);
     end Object_Size_Clause;
*************** package body Einfo.Utils is
*** 2142,2148 ****
     -- DIC_Procedure --
     -------------------
  
!    function DIC_Procedure (Id : E) return E is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
--- 2141,2147 ----
     -- DIC_Procedure --
     -------------------
  
!    function DIC_Procedure (Id : E) return Entity_Id is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
*************** package body Einfo.Utils is
*** 2174,2180 ****
        return Empty;
     end DIC_Procedure;
  
!    function Partial_DIC_Procedure (Id : E) return E is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
--- 2173,2179 ----
        return Empty;
     end DIC_Procedure;
  
!    function Partial_DIC_Procedure (Id : E) return Entity_Id is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
*************** package body Einfo.Utils is
*** 2227,2233 ****
     -- Partial_Invariant_Procedure --
     ---------------------------------
  
!    function Partial_Invariant_Procedure (Id : E) return E is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
--- 2226,2232 ----
     -- Partial_Invariant_Procedure --
     ---------------------------------
  
!    function Partial_Invariant_Procedure (Id : E) return Entity_Id is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
*************** package body Einfo.Utils is
*** 2340,2346 ****
     -- Predicate_Function --
     ------------------------
  
!    function Predicate_Function (Id : E) return E is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
--- 2339,2345 ----
     -- Predicate_Function --
     ------------------------
  
!    function Predicate_Function (Id : E) return Entity_Id is
        Subp_Elmt : Elmt_Id;
        Subp_Id   : Entity_Id;
        Subps     : Elist_Id;
*************** package body Einfo.Utils is
*** 2390,2442 ****
        return Empty;
     end Predicate_Function;
  
-    --------------------------
-    -- Predicate_Function_M --
-    --------------------------
- 
-    function Predicate_Function_M (Id : E) return E is
-       Subp_Elmt : Elmt_Id;
-       Subp_Id   : Entity_Id;
-       Subps     : Elist_Id;
-       Typ       : Entity_Id;
- 
-    begin
-       pragma Assert (Is_Type (Id));
- 
-       --  If type is private and has a completion, predicate may be defined on
-       --  the full view.
- 
-       if Is_Private_Type (Id)
-          and then
-            (not Has_Predicates (Id) or else No (Subprograms_For_Type (Id)))
-          and then Present (Full_View (Id))
-       then
-          Typ := Full_View (Id);
- 
-       else
-          Typ := Id;
-       end if;
- 
-       Subps := Subprograms_For_Type (Typ);
- 
-       if Present (Subps) then
-          Subp_Elmt := First_Elmt (Subps);
-          while Present (Subp_Elmt) loop
-             Subp_Id := Node (Subp_Elmt);
- 
-             if Ekind (Subp_Id) = E_Function
-               and then Is_Predicate_Function_M (Subp_Id)
-             then
-                return Subp_Id;
-             end if;
- 
-             Next_Elmt (Subp_Elmt);
-          end loop;
-       end if;
- 
-       return Empty;
-    end Predicate_Function_M;
- 
     -------------------------
     -- Present_In_Rep_Item --
     -------------------------
--- 2389,2394 ----
*************** package body Einfo.Utils is
*** 2520,2530 ****
--- 2472,2484 ----
  
        elsif Id = First then
           Set_First_Entity (Scop, Next);
+          Set_Prev_Entity (Next, Empty);  --  Empty <-- First_Entity
  
        --  The eliminated entity was the tail of the entity chain
  
        elsif Id = Last then
           Set_Last_Entity (Scop, Prev);
+          Set_Next_Entity (Prev, Empty);  --  Last_Entity --> Empty
  
        --  Otherwise the eliminated entity comes from the middle of the entity
        --  chain.
*************** package body Einfo.Utils is
*** 2704,2710 ****
                              | E_Anonymous_Access_Subprogram_Type
                and then not Has_Convention_Pragma (Typ)
              then
!                Set_Basic_Convention (Typ, Val);
                 Set_Has_Convention_Pragma (Typ);
  
                 --  And for the access subprogram type, deal similarly with the
--- 2658,2664 ----
                              | E_Anonymous_Access_Subprogram_Type
                and then not Has_Convention_Pragma (Typ)
              then
!                Set_Convention (Typ, Val);
                 Set_Has_Convention_Pragma (Typ);
  
                 --  And for the access subprogram type, deal similarly with the
*************** package body Einfo.Utils is
*** 2714,2723 ****
                    declare
                       Dtype : constant Entity_Id := Designated_Type (Typ);
                    begin
!                      if Ekind (Dtype) = E_Subprogram_Type
!                        and then not Has_Convention_Pragma (Dtype)
!                      then
!                         Set_Basic_Convention (Dtype, Val);
                          Set_Has_Convention_Pragma (Dtype);
                       end if;
                    end;
--- 2668,2676 ----
                    declare
                       Dtype : constant Entity_Id := Designated_Type (Typ);
                    begin
!                      if Ekind (Dtype) = E_Subprogram_Type then
!                         pragma Assert (not Has_Convention_Pragma (Dtype));
!                         Set_Convention (Dtype, Val);
                          Set_Has_Convention_Pragma (Dtype);
                       end if;
                    end;
*************** package body Einfo.Utils is
*** 2877,2925 ****
        end loop;
     end Set_Predicate_Function;
  
-    ------------------------------
-    -- Set_Predicate_Function_M --
-    ------------------------------
- 
-    procedure Set_Predicate_Function_M (Id : E; V : E) is
-       Subp_Elmt : Elmt_Id;
-       Subp_Id   : Entity_Id;
-       Subps     : Elist_Id;
- 
-    begin
-       pragma Assert (Is_Type (Id) and then Has_Predicates (Id));
- 
-       Subps := Subprograms_For_Type (Id);
- 
-       if No (Subps) then
-          Subps := New_Elmt_List;
-          Set_Subprograms_For_Type (Id, Subps);
-       end if;
- 
-       Subp_Elmt := First_Elmt (Subps);
-       Prepend_Elmt (V, Subps);
- 
-       --  Check for a duplicate predication function
- 
-       while Present (Subp_Elmt) loop
-          Subp_Id := Node (Subp_Elmt);
- 
-          if Ekind (Subp_Id) = E_Function
-            and then Is_Predicate_Function_M (Subp_Id)
-          then
-             raise Program_Error;
-          end if;
- 
-          Next_Elmt (Subp_Elmt);
-       end loop;
-    end Set_Predicate_Function_M;
- 
     -----------------
     -- Size_Clause --
     -----------------
  
!    function Size_Clause (Id : E) return N is
!       Result : N := Get_Attribute_Definition_Clause (Id, Attribute_Size);
     begin
        if No (Result) then
           Result := Get_Attribute_Definition_Clause (Id, Attribute_Value_Size);
--- 2830,2841 ----
        end loop;
     end Set_Predicate_Function;
  
     -----------------
     -- Size_Clause --
     -----------------
  
!    function Size_Clause (Id : E) return Node_Id is
!       Result : Node_Id := Get_Attribute_Definition_Clause (Id, Attribute_Size);
     begin
        if No (Result) then
           Result := Get_Attribute_Definition_Clause (Id, Attribute_Value_Size);
*************** package body Einfo.Utils is
*** 3021,3027 ****
     -- Type_High_Bound --
     ---------------------
  
!    function Type_High_Bound (Id : E) return Node_Id is
        Rng : constant Node_Id := Scalar_Range (Id);
     begin
        if Nkind (Rng) = N_Subtype_Indication then
--- 2937,2943 ----
     -- Type_High_Bound --
     ---------------------
  
!    function Type_High_Bound (Id : E) return N is
        Rng : constant Node_Id := Scalar_Range (Id);
     begin
        if Nkind (Rng) = N_Subtype_Indication then
*************** package body Einfo.Utils is
*** 3035,3041 ****
     -- Type_Low_Bound --
     --------------------
  
!    function Type_Low_Bound (Id : E) return Node_Id is
        Rng : constant Node_Id := Scalar_Range (Id);
     begin
        if Nkind (Rng) = N_Subtype_Indication then
--- 2951,2957 ----
     -- Type_Low_Bound --
     --------------------
  
!    function Type_Low_Bound (Id : E) return N is
        Rng : constant Node_Id := Scalar_Range (Id);
     begin
        if Nkind (Rng) = N_Subtype_Indication then
*************** package body Einfo.Utils is
*** 3049,3055 ****
     -- Underlying_Type --
     ---------------------
  
!    function Underlying_Type (Id : E) return E is
     begin
        --  For record_with_private the underlying type is always the direct full
        --  view. Never try to take the full view of the parent it does not make
--- 2965,2971 ----
     -- Underlying_Type --
     ---------------------
  
!    function Underlying_Type (Id : E) return Entity_Id is
     begin
        --  For record_with_private the underlying type is always the direct full
        --  view. Never try to take the full view of the parent it does not make
diff -Nrcpad gcc-12.2.0/gcc/ada/einfo-utils.ads gcc-13.1.0/gcc/ada/einfo-utils.ads
*** gcc-12.2.0/gcc/ada/einfo-utils.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/einfo-utils.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 24,29 ****
--- 24,30 ----
  ------------------------------------------------------------------------------
  
  with Einfo.Entities; use Einfo.Entities;
+ with Sinfo.Nodes;    use Sinfo.Nodes;
  
  package Einfo.Utils is
  
*************** package Einfo.Utils is
*** 73,86 ****
     -------------------
  
     --  The following type synonyms are used to tidy up the function and
!    --  procedure declarations that follow.
  
     subtype B is Boolean;
     subtype C is Component_Alignment_Kind;
!    subtype E is Entity_Id;
     subtype F is Float_Rep_Kind;
     subtype M is Mechanism_Type;
!    subtype N is Node_Id;
     subtype U is Uint;
     subtype R is Ureal;
     subtype L is Elist_Id;
--- 74,89 ----
     -------------------
  
     --  The following type synonyms are used to tidy up the function and
!    --  procedure declarations that follow. Note that E and N have predicates
!    --  ensuring the correct kind; we use Entity_Id or Node_Id when the
!    --  predicates can't be satisfied.
  
     subtype B is Boolean;
     subtype C is Component_Alignment_Kind;
!    subtype E is N_Entity_Id;
     subtype F is Float_Rep_Kind;
     subtype M is Mechanism_Type;
!    subtype N is Node_Id with Predicate => N /= Empty and then N not in E;
     subtype U is Uint;
     subtype R is Ureal;
     subtype L is Elist_Id;
*************** package Einfo.Utils is
*** 199,215 ****
     --  The functions in this section synthesize attributes from the tree,
     --  so they do not correspond to defined fields in the entity itself.
  
!    function Address_Clause                      (Id : E) return N;
     function Aft_Value                           (Id : E) return U;
!    function Alignment_Clause                    (Id : E) return N;
     function Base_Type                           (Id : E) return E;
!    function Declaration_Node                    (Id : E) return N;
     function Designated_Type                     (Id : E) return E;
     function Entry_Index_Type                    (Id : E) return E;
!    function First_Component                     (Id : E) return E;
!    function First_Component_Or_Discriminant     (Id : E) return E;
!    function First_Formal                        (Id : E) return E;
!    function First_Formal_With_Extras            (Id : E) return E;
  
     function Float_Rep
       (N : Entity_Id) return F with Inline, Pre =>
--- 202,218 ----
     --  The functions in this section synthesize attributes from the tree,
     --  so they do not correspond to defined fields in the entity itself.
  
!    function Address_Clause                      (Id : E) return Node_Id;
     function Aft_Value                           (Id : E) return U;
!    function Alignment_Clause                    (Id : E) return Node_Id;
     function Base_Type                           (Id : E) return E;
!    function Declaration_Node                    (Id : E) return Node_Id;
     function Designated_Type                     (Id : E) return E;
     function Entry_Index_Type                    (Id : E) return E;
!    function First_Component                     (Id : E) return Entity_Id;
!    function First_Component_Or_Discriminant     (Id : E) return Entity_Id;
!    function First_Formal                        (Id : E) return Entity_Id;
!    function First_Formal_With_Extras            (Id : E) return Entity_Id;
  
     function Float_Rep
       (N : Entity_Id) return F with Inline, Pre =>
*************** package Einfo.Utils is
*** 260,266 ****
     function Is_Task_Interface                   (Id : E) return B;
     function Is_Task_Record_Type                 (Id : E) return B;
     function Is_Wrapper_Package                  (Id : E) return B;
!    function Last_Formal                         (Id : E) return E;
     function Machine_Emax_Value                  (Id : E) return U;
     function Machine_Emin_Value                  (Id : E) return U;
     function Machine_Mantissa_Value              (Id : E) return U;
--- 263,269 ----
     function Is_Task_Interface                   (Id : E) return B;
     function Is_Task_Record_Type                 (Id : E) return B;
     function Is_Wrapper_Package                  (Id : E) return B;
!    function Last_Formal                         (Id : E) return Entity_Id;
     function Machine_Emax_Value                  (Id : E) return U;
     function Machine_Emin_Value                  (Id : E) return U;
     function Machine_Mantissa_Value              (Id : E) return U;
*************** package Einfo.Utils is
*** 269,286 ****
     function Model_Epsilon_Value                 (Id : E) return R;
     function Model_Mantissa_Value                (Id : E) return U;
     function Model_Small_Value                   (Id : E) return R;
!    function Next_Component                      (Id : E) return E;
!    function Next_Component_Or_Discriminant      (Id : E) return E;
!    function Next_Discriminant                   (Id : E) return E;
!    function Next_Formal                         (Id : E) return E;
!    function Next_Formal_With_Extras             (Id : E) return E;
!    function Next_Index                          (Id : N) return N;
!    function Next_Literal                        (Id : E) return E;
!    function Next_Stored_Discriminant            (Id : E) return E;
     function Number_Dimensions                   (Id : E) return Pos;
     function Number_Entries                      (Id : E) return Nat;
     function Number_Formals                      (Id : E) return Pos;
!    function Object_Size_Clause                  (Id : E) return N;
     function Parameter_Mode                      (Id : E) return Formal_Kind;
     function Partial_Refinement_Constituents     (Id : E) return L;
     function Primitive_Operations                (Id : E) return L;
--- 272,289 ----
     function Model_Epsilon_Value                 (Id : E) return R;
     function Model_Mantissa_Value                (Id : E) return U;
     function Model_Small_Value                   (Id : E) return R;
!    function Next_Component                      (Id : E) return Entity_Id;
!    function Next_Component_Or_Discriminant      (Id : E) return Entity_Id;
!    function Next_Discriminant                   (Id : E) return Entity_Id;
!    function Next_Formal                         (Id : E) return Entity_Id;
!    function Next_Formal_With_Extras             (Id : E) return Entity_Id;
!    function Next_Index                          (Id : N) return Node_Id;
!    function Next_Literal                        (Id : E) return Entity_Id;
!    function Next_Stored_Discriminant            (Id : E) return Entity_Id;
     function Number_Dimensions                   (Id : E) return Pos;
     function Number_Entries                      (Id : E) return Nat;
     function Number_Formals                      (Id : E) return Pos;
!    function Object_Size_Clause                  (Id : E) return Node_Id;
     function Parameter_Mode                      (Id : E) return Formal_Kind;
     function Partial_Refinement_Constituents     (Id : E) return L;
     function Primitive_Operations                (Id : E) return L;
*************** package Einfo.Utils is
*** 288,298 ****
     function Safe_Emax_Value                     (Id : E) return U;
     function Safe_First_Value                    (Id : E) return R;
     function Safe_Last_Value                     (Id : E) return R;
!    function Size_Clause                         (Id : E) return N;
     function Stream_Size_Clause                  (Id : E) return N;
     function Type_High_Bound                     (Id : E) return N;
     function Type_Low_Bound                      (Id : E) return N;
!    function Underlying_Type                     (Id : E) return E;
  
     function Scope_Depth                         (Id : E) return U;
     function Scope_Depth_Set                     (Id : E) return B;
--- 291,301 ----
     function Safe_Emax_Value                     (Id : E) return U;
     function Safe_First_Value                    (Id : E) return R;
     function Safe_Last_Value                     (Id : E) return R;
!    function Size_Clause                         (Id : E) return Node_Id;
     function Stream_Size_Clause                  (Id : E) return N;
     function Type_High_Bound                     (Id : E) return N;
     function Type_Low_Bound                      (Id : E) return N;
!    function Underlying_Type                     (Id : E) return Entity_Id;
  
     function Scope_Depth                         (Id : E) return U;
     function Scope_Depth_Set                     (Id : E) return B;
*************** package Einfo.Utils is
*** 432,450 ****
  
     function Is_Partial_DIC_Procedure             (Id : E) return B;
  
!    function DIC_Procedure                        (Id : E) return E;
!    function Partial_DIC_Procedure                (Id : E) return E;
!    function Invariant_Procedure                  (Id : E) return E;
!    function Partial_Invariant_Procedure          (Id : E) return E;
!    function Predicate_Function                   (Id : E) return E;
!    function Predicate_Function_M                 (Id : E) return E;
  
     procedure Set_DIC_Procedure                   (Id : E; V : E);
     procedure Set_Partial_DIC_Procedure           (Id : E; V : E);
     procedure Set_Invariant_Procedure             (Id : E; V : E);
     procedure Set_Partial_Invariant_Procedure     (Id : E; V : E);
     procedure Set_Predicate_Function              (Id : E; V : E);
-    procedure Set_Predicate_Function_M            (Id : E; V : E);
  
     ---------------
     -- Iterators --
--- 435,451 ----
  
     function Is_Partial_DIC_Procedure             (Id : E) return B;
  
!    function DIC_Procedure                        (Id : E) return Entity_Id;
!    function Partial_DIC_Procedure                (Id : E) return Entity_Id;
!    function Invariant_Procedure                  (Id : E) return Entity_Id;
!    function Partial_Invariant_Procedure          (Id : E) return Entity_Id;
!    function Predicate_Function                   (Id : E) return Entity_Id;
  
     procedure Set_DIC_Procedure                   (Id : E; V : E);
     procedure Set_Partial_DIC_Procedure           (Id : E; V : E);
     procedure Set_Invariant_Procedure             (Id : E; V : E);
     procedure Set_Partial_Invariant_Procedure     (Id : E; V : E);
     procedure Set_Predicate_Function              (Id : E; V : E);
  
     ---------------
     -- Iterators --
diff -Nrcpad gcc-12.2.0/gcc/ada/einfo.adb gcc-13.1.0/gcc/ada/einfo.adb
*** gcc-12.2.0/gcc/ada/einfo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/einfo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/einfo.ads gcc-13.1.0/gcc/ada/einfo.ads
*** gcc-12.2.0/gcc/ada/einfo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/einfo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Einfo is
*** 222,231 ****
  --  on the actions triggered by a freeze node, which include the construction
  --  of initialization procedures and dispatch tables.
  
! --  b) The presence of a freeze node on an entity is used by the back end to
! --  defer elaboration of the entity until its freeze node is seen. In the
! --  absence of an explicit freeze node, an entity is frozen (and elaborated)
! --  at the point of declaration.
  
  --  For object declarations, the flag is set when an address clause for the
  --  object is encountered. Legality checks on the address expression only take
--- 222,230 ----
  --  on the actions triggered by a freeze node, which include the construction
  --  of initialization procedures and dispatch tables.
  
! --  b) The flag is used by the back end to defer elaboration of the entity
! --  until its freeze node is seen. In the absence of an explicit freeze node,
! --  an entity is frozen (and elaborated) at the point of declaration.
  
  --  For object declarations, the flag is set when an address clause for the
  --  object is encountered. Legality checks on the address expression only take
*************** package Einfo is
*** 359,367 ****
  --
  --       For objects, the Actual_Subtype is set only if this is a discriminated
  --       type. For arrays, the bounds of the expression are obtained and the
! --       Etype of the object is directly the constrained subtype. This is
! --       rather irregular, and the semantic checks that depend on the nominal
! --       subtype being unconstrained use flag Is_Constr_Subt_For_U_Nominal(qv).
  
  --    Address_Clause (synthesized)
  --       Applies to entries, objects and subprograms. Set if an address clause
--- 358,368 ----
  --
  --       For objects, the Actual_Subtype is set only if this is a discriminated
  --       type. For arrays, the bounds of the expression are obtained and the
! --       Etype of the object is directly the constrained subtype, except in the
! --       case of a return object that lives on the secondary stack where Etype
! --       is the nominal unconstrained subtype. This is rather irregular and the
! --       semantic checks that depend on the nominal subtype being unconstrained
! --       use flag Is_Constr_Subt_For_U_Nominal(qv).
  
  --    Address_Clause (synthesized)
  --       Applies to entries, objects and subprograms. Set if an address clause
*************** package Einfo is
*** 605,614 ****
  
  --    Checks_May_Be_Suppressed
  --       Defined in all entities. Set if a pragma Suppress or Unsuppress
! --       mentions the entity specifically in the second argument. If this
! --       flag is set the Global_Entity_Suppress and Local_Entity_Suppress
! --       tables must be consulted to determine if there actually is an active
! --       Suppress or Unsuppress pragma that applies to the entity.
  
  --    Class_Postconditions
  --       Defined on subprogram entities. Set if the subprogram has class-wide
--- 606,615 ----
  
  --    Checks_May_Be_Suppressed
  --       Defined in all entities. Set if a pragma Suppress or Unsuppress
! --       mentions the entity specifically in the second argument. If this flag
! --       is set the global and local suppress stacks must be consulted to
! --       determine if there actually is an active Suppress or Unsuppress pragma
! --       that applies to the entity.
  
  --    Class_Postconditions
  --       Defined on subprogram entities. Set if the subprogram has class-wide
*************** package Einfo is
*** 875,881 ****
  --       are generated (subprograms, package declarations and package
  --       bodies). Defined if there are pending generic body instantiations
  --       for the corresponding entity. If this flag is set, then generation
! --       of the subprogram descriptor for the corresponding enities must
  --       be delayed, since the insertion of the generic body may add entries
  --       to the list of handlers.
  --
--- 876,882 ----
  --       are generated (subprograms, package declarations and package
  --       bodies). Defined if there are pending generic body instantiations
  --       for the corresponding entity. If this flag is set, then generation
! --       of the subprogram descriptor for the corresponding entities must
  --       be delayed, since the insertion of the generic body may add entries
  --       to the list of handlers.
  --
*************** package Einfo is
*** 1576,1582 ****
  
  --    Has_Controlling_Result
  --       Defined in E_Function entities. Set if the function is a primitive
! --       function of a tagged type which can dispatch on result.
  
  --    Has_Convention_Pragma
  --       Defined in all entities. Set for an entity for which a valid pragma
--- 1577,1584 ----
  
  --    Has_Controlling_Result
  --       Defined in E_Function entities. Set if the function is a primitive
! --       function of a tagged type which can dispatch on result. Also set on
! --       secondary stack thunks built for such a primitive function.
  
  --    Has_Convention_Pragma
  --       Defined in all entities. Set for an entity for which a valid pragma
*************** package Einfo is
*** 1863,1869 ****
  --    Has_Per_Object_Constraint
  --       Defined in E_Component entities. Set if the subtype of the component
  --       has a per object constraint. Per object constraints result from the
! --       following situations :
  --
  --       1. N_Attribute_Reference - when the prefix is the enclosing type and
  --          the attribute is Access.
--- 1865,1871 ----
  --    Has_Per_Object_Constraint
  --       Defined in E_Component entities. Set if the subtype of the component
  --       has a per object constraint. Per object constraints result from the
! --       following situations:
  --
  --       1. N_Attribute_Reference - when the prefix is the enclosing type and
  --          the attribute is Access.
*************** package Einfo is
*** 2308,2313 ****
--- 2310,2319 ----
  --       the corresponding entity. Reset at end of corresponding declarative
  --       part. The flag on a type is also used to determine the visibility of
  --       the primitive operators of the type.
+ --
+ --       Note that manipulation of scopes on the scope stack will also cause
+ --       the flag to be set/unset since the setting of scopes affects
+ --       visibility.
  
  --    Is_Abstract_Subprogram
  --       Defined in all subprograms and entries. Set for abstract subprograms.
*************** package Einfo is
*** 2566,2572 ****
  
  --    Is_Elaboration_Checks_OK_Id
  --       Defined in elaboration targets (see terminology in Sem_Elab). Set when
! --       the target appears in a region which is subject to elabled elaboration
  --       checks. Such targets are allowed to generate run-time conditional ABE
  --       checks or guaranteed ABE failures.
  
--- 2572,2578 ----
  
  --    Is_Elaboration_Checks_OK_Id
  --       Defined in elaboration targets (see terminology in Sem_Elab). Set when
! --       the target appears in a region which is subject to enabled elaboration
  --       checks. Such targets are allowed to generate run-time conditional ABE
  --       checks or guaranteed ABE failures.
  
*************** package Einfo is
*** 2599,2605 ****
  --       test for the need to replace references in Exp_Ch2.
  
  --    Is_Entry_Wrapper
! --       Defined on wrappers created for entries that have precondition aspects
  
  --    Is_Enumeration_Type (synthesized)
  --       Defined in all entities, true for enumeration types and subtypes
--- 2605,2612 ----
  --       test for the need to replace references in Exp_Ch2.
  
  --    Is_Entry_Wrapper
! --       Defined on wrappers created for entries that have precondition or
! --       postcondition aspects.
  
  --    Is_Enumeration_Type (synthesized)
  --       Defined in all entities, true for enumeration types and subtypes
*************** package Einfo is
*** 3105,3120 ****
  --       Present in functions and procedures. Set for generated predicate
  --       functions.
  
- --    Is_Predicate_Function_M
- --       Present in functions and procedures. Set for special version of
- --       predicate function generated for use in membership tests, where
- --       raise expressions are transformed to return False.
- 
  --    Is_Preelaborated
  --       Defined in all entities, set in E_Package and E_Generic_Package
  --       entities to which a pragma Preelaborate is applied, and also in
  --       all entities within such packages. Note that the fact that this
! --       flag is set does not necesarily mean that no elaboration code is
  --       generated for the package.
  
  --    Is_Primitive
--- 3112,3122 ----
  --       Present in functions and procedures. Set for generated predicate
  --       functions.
  
  --    Is_Preelaborated
  --       Defined in all entities, set in E_Package and E_Generic_Package
  --       entities to which a pragma Preelaborate is applied, and also in
  --       all entities within such packages. Note that the fact that this
! --       flag is set does not necessarily mean that no elaboration code is
  --       generated for the package.
  
  --    Is_Primitive
*************** package Einfo is
*** 3228,3234 ****
  --       Defined in all entities, set only for a variable or constant for
  --       which the Renamed_Object field is non-empty and for which the
  --       renaming is handled by the front end, by macro substitution of
! --       a copy of the (evaluated) name tree whereever the variable is used.
  
  --    Is_Return_Object
  --       Defined in all object entities. True if the object is the return
--- 3230,3236 ----
  --       Defined in all entities, set only for a variable or constant for
  --       which the Renamed_Object field is non-empty and for which the
  --       renaming is handled by the front end, by macro substitution of
! --       a copy of the (evaluated) name tree wherever the variable is used.
  
  --    Is_Return_Object
  --       Defined in all object entities. True if the object is the return
*************** package Einfo is
*** 3326,3342 ****
  --       Applies to all entities. True for task types and subtypes
  
  --    Is_Thunk
! --       Defined in all entities. True for subprograms that are thunks: that is
! --       small subprograms built by the expander for tagged types that cover
! --       interface types. As part of the runtime call to an interface, thunks
  --       displace the pointer to the object (pointer named "this" in the C++
  --       terminology) from a secondary dispatch table to the primary dispatch
  --       table associated with a given tagged type; if the thunk is a function
  --       that returns an object which covers an interface type then the thunk
  --       displaces the pointer to the object from the primary dispatch table to
! --       the secondary dispatch table associated with the interface type. Set
! --       by Expand_Interface_Thunk and used by Expand_Call to handle extra
! --       actuals associated with accessibility level.
  
  --    Is_Trivial_Subprogram
  --       Defined in all entities. Set in subprograms where either the body
--- 3328,3356 ----
  --       Applies to all entities. True for task types and subtypes
  
  --    Is_Thunk
! --       Defined in all entities. True for subprograms that are thunks, that is
! --       small subprograms built by the expander for particular tagged types.
! --       There are two different kinds of thunk: interface thunk and secondary
! --       stack thunk. Interface thunks are built for tagged types that cover
! --       interface types. As part of the runtime call to an interface, they
  --       displace the pointer to the object (pointer named "this" in the C++
  --       terminology) from a secondary dispatch table to the primary dispatch
  --       table associated with a given tagged type; if the thunk is a function
  --       that returns an object which covers an interface type then the thunk
  --       displaces the pointer to the object from the primary dispatch table to
! --       the secondary dispatch table associated with the interface type.
! 
! --       Secondary stack thunks are built for tagged types that do not need to
! --       be returned on the secondary stack but have primitive functions which
! --       can dispatch on result. In this case, dispatching calls made to these
! --       primitive functions nevertheless need to return on the secondary stack
! --       and a thunk is built to move the result from the primary stack onto
! --       the secondary stack on return from the primitive function. The flag
! --       Has_Controlling_Result is set on secondary stack thunks but not on
! --       interface thunks.
! 
! --       Thunks may be chained in a single way: an interface thunk may point to
! --       a secondary stack thunk, which points to the final thunk target.
  
  --    Is_Trivial_Subprogram
  --       Defined in all entities. Set in subprograms where either the body
*************** package Einfo is
*** 3952,3958 ****
  --       Present in variable entities. Contains all references to the variable
  --       when it is subject to pragma Part_Of. If the variable is a constituent
  --       of a single protected/task type, the references are examined as they
! --       must appear only within the type defintion and the corresponding body.
  
  --    Partial_DIC_Procedure (synthesized)
  --       Defined in type entities. Set for a private type and its full view
--- 3966,3973 ----
  --       Present in variable entities. Contains all references to the variable
  --       when it is subject to pragma Part_Of. If the variable is a constituent
  --       of a single protected/task type, the references are examined as they
! --       must appear only within the type definition and the corresponding
! --       body.
  
  --    Partial_DIC_Procedure (synthesized)
  --       Defined in type entities. Set for a private type and its full view
*************** package Einfo is
*** 4001,4016 ****
  --       fully initialized when the full view is frozen.
  
  --    Postconditions_Proc
! --       Defined in functions, procedures, entries, and entry families. Refers
! --       to the entity of the _Postconditions procedure used to check contract
! --       assertions on exit from a subprogram.
  
  --    Predicate_Function (synthesized)
  --       Defined in all types. Set for types for which (Has_Predicates is True)
  --       and for which a predicate procedure has been built that tests that the
  --       specified predicates are True. Contains the entity for the function
! --       which takes a single argument of the given type, and returns True if
! --       the predicate holds and False if it does not.
  --
  --       Note: flag Has_Predicate does not imply that Predicate_Function is set
  --       to a non-empty entity; this happens, for example, for itypes created
--- 4016,4030 ----
  --       fully initialized when the full view is frozen.
  
  --    Postconditions_Proc
! --       Obsolete field which can be removed once CodePeer is fixed ???
  
  --    Predicate_Function (synthesized)
  --       Defined in all types. Set for types for which (Has_Predicates is True)
  --       and for which a predicate procedure has been built that tests that the
  --       specified predicates are True. Contains the entity for the function
! --       which takes a single argument of the given type (and sometimes an
! --       additional Boolean parameter), and returns True if the predicate
! --       holds and False if it does not.
  --
  --       Note: flag Has_Predicate does not imply that Predicate_Function is set
  --       to a non-empty entity; this happens, for example, for itypes created
*************** package Einfo is
*** 4023,4033 ****
  --       Note: the reason this is marked as a synthesized attribute is that the
  --       way this is stored is as an element of the Subprograms_For_Type field.
  
! --    Predicate_Function_M (synthesized)
! --       Defined in all types. Present only if Predicate_Function is present,
! --       and only if the predicate function has Raise_Expression nodes. It
! --       is the special version created for membership tests, where if one of
! --       these raise expressions is executed, the result is to return False.
  
  --    Predicated_Parent
  --       Defined on itypes created by subtype indications, when the parent
--- 4037,4050 ----
  --       Note: the reason this is marked as a synthesized attribute is that the
  --       way this is stored is as an element of the Subprograms_For_Type field.
  
! --    Predicate_Expression
! --      Defined on functions. For the defining identifier of the subprogram
! --      declaration (not of the subprogram body) of a predicate function,
! --      yields the expression for the noninherited portion of the given
! --      predicate (except in the case where the inherited portion is
! --      non-empty and the non-inherited portion is empty, in which case the
! --      expression for the inherited portion is returned). Otherwise yields
! --      empty.
  
  --    Predicated_Parent
  --       Defined on itypes created by subtype indications, when the parent
*************** package Einfo is
*** 4044,4050 ****
  
  --    Prev_Entity
  --       Defined in all entities. The entities of a scope are chained, and this
! --       field is used as a backward pointer for this entity list - effectivly
  --       making the entity chain doubly-linked.
  
  --    Primitive_Operations (synthesized)
--- 4061,4067 ----
  
  --    Prev_Entity
  --       Defined in all entities. The entities of a scope are chained, and this
! --       field is used as a backward pointer for this entity list - effectively
  --       making the entity chain doubly-linked.
  
  --    Primitive_Operations (synthesized)
*************** package Einfo is
*** 4119,4132 ****
  --       set instead, or a similar appearance as an out parameter actual, in
  --       which case Referenced_As_Out_Parameter is set.
  
! --    Referenced_As_LHS :
  --       Defined in all entities. This flag is set instead of Referenced if a
  --       simple variable that is not a renaming appears as the left side of an
  --       assignment. The reason we distinguish this kind of reference is that
  --       we have a separate warning for variables that are only assigned and
  --       never read.
  
! --    Referenced_As_Out_Parameter :
  --       Defined in all entities. This flag is set instead of Referenced if a
  --       simple variable that is not a renaming appears as an actual for an out
  --       formal. The reason we distinguish this kind of reference is that
--- 4136,4149 ----
  --       set instead, or a similar appearance as an out parameter actual, in
  --       which case Referenced_As_Out_Parameter is set.
  
! --    Referenced_As_LHS
  --       Defined in all entities. This flag is set instead of Referenced if a
  --       simple variable that is not a renaming appears as the left side of an
  --       assignment. The reason we distinguish this kind of reference is that
  --       we have a separate warning for variables that are only assigned and
  --       never read.
  
! --    Referenced_As_Out_Parameter
  --       Defined in all entities. This flag is set instead of Referenced if a
  --       simple variable that is not a renaming appears as an actual for an out
  --       formal. The reason we distinguish this kind of reference is that
*************** package Einfo is
*** 4241,4248 ****
  --    Returns_By_Ref
  --       Defined in subprogram type entities and functions. Set if a function
  --       (or an access-to-function type) returns a result by reference, either
! --       because its return type is a by-reference-type or because the function
! --       explicitly uses the secondary stack.
  
  --    Reverse_Bit_Order [base type only]
  --       Defined in all record type entities. Set if entity has a Bit_Order
--- 4258,4264 ----
  --    Returns_By_Ref
  --       Defined in subprogram type entities and functions. Set if a function
  --       (or an access-to-function type) returns a result by reference, either
! --       because the result is built in place, or its type is by-reference.
  
  --    Reverse_Bit_Order [base type only]
  --       Defined in all record type entities. Set if entity has a Bit_Order
*************** package Einfo is
*** 4751,4756 ****
--- 4767,4779 ----
  --       Defined in functions and procedures which have been classified as
  --       Is_Primitive_Wrapper. Set to the entity being wrapper.
  
+ --    Wrapped_Statements
+ --       Defined in functions, procedures, entries, and entry families. Refers
+ --       to the entity of the _Wrapped_Statements procedure which gets
+ --       generated as part of the expansion of contracts and postconditions
+ --       and contains its enclosing subprogram's original source declarations
+ --       and statements.
+ 
  --    LSP_Subprogram
  --       Defined in subprogram entities. Set on wrappers created to handle
  --       inherited class-wide pre/post conditions that call overridden
*************** package Einfo is
*** 4804,4842 ****
  
  --  The front-end does not store explicitly the fact that Z renames X.
  
- --------------------------------------
- -- Delayed Freezing and Elaboration --
- --------------------------------------
- 
- --  The flag Has_Delayed_Freeze indicates that an entity carries an explicit
- --  freeze node, which appears later in the expanded tree.
- 
- --  a) The flag is used by the front-end to trigger expansion actions
- --  which include the generation of that freeze node. Typically this happens at
- --  the end of the current compilation unit, or before the first subprogram
- --  body is encountered in the current unit. See files freeze and exp_ch13 for
- --  details on the actions triggered by a freeze node, which include the
- --  construction of initialization procedures and dispatch tables.
- 
- --  b) The flag is used by the backend to defer elaboration of the entity until
- --  its freeze node is seen. In the absence of an explicit freeze node, an
- --  entity is frozen (and elaborated) at the point of declaration.
- 
- --  For object declarations, the flag is set when an address clause for the
- --  object is encountered. Legality checks on the address expression only
- --  take place at the freeze point of the object.
- 
- --  Most types have an explicit freeze node, because they cannot be elaborated
- --  until all representation and operational items that apply to them have been
- --  analyzed. Private types and incomplete types have the flag set as well, as
- --  do task and protected types.
- 
- --  Implicit base types created for type derivations, as well as classwide
- --  types created for all tagged types, have the flag set.
- 
- --  If a subprogram has an access parameter whose designated type is incomplete
- --  the subprogram has the flag set.
- 
  ------------------
  -- Access Kinds --
  ------------------
--- 4827,4832 ----
*************** package Einfo is
*** 4846,4868 ****
  
  --    E_Access_Type,
  --    E_General_Access_Type,
  --    E_Access_Subprogram_Type,
  --    E_Anonymous_Access_Subprogram_Type,
  --    E_Access_Protected_Subprogram_Type,
  --    E_Anonymous_Access_Protected_Subprogram_Type
- --    E_Anonymous_Access_Type.
  
! --  E_Access_Subtype is for an access subtype created by a subtype
! --  declaration.
  
  --  In addition, we define the kind E_Allocator_Type to label allocators.
  --  This is because special resolution rules apply to this construct.
  --  Eventually the constructs are labeled with the access type imposed by
  --  the context. The backend should never see types with this Ekind.
  
! --  Similarly, the type E_Access_Attribute_Type is used as the initial kind
! --  associated with an access attribute. After resolution a specific access
! --  type will be established as determined by the context.
  
     --------------------------------------------------------
     -- Description of Defined Attributes for Entity_Kinds --
--- 4836,4864 ----
  
  --    E_Access_Type,
  --    E_General_Access_Type,
+ --    E_Anonymous_Access_Type
+ 
  --    E_Access_Subprogram_Type,
  --    E_Anonymous_Access_Subprogram_Type,
+ 
  --    E_Access_Protected_Subprogram_Type,
  --    E_Anonymous_Access_Protected_Subprogram_Type
  
! --  E_Access_Subtype is for an access subtype created by a subtype declaration
  
  --  In addition, we define the kind E_Allocator_Type to label allocators.
  --  This is because special resolution rules apply to this construct.
  --  Eventually the constructs are labeled with the access type imposed by
  --  the context. The backend should never see types with this Ekind.
  
! --  Similarly, we define the kind E_Access_Attribute_Type as the initial
! --  kind associated with an access attribute whose prefix is an object.
! --  After resolution, a specific access type will be established instead
! --  as determined by the context. Note that, for the case of an access
! --  attribute whose prefix is a subprogram, we build a corresponding type
! --  with E_Access_Subprogram_Type or E_Access_Protected_Subprogram_Type kind
! --  but whose designated type is the subprogram itself, instead of a regular
! --  E_Subprogram_Type entity.
  
     --------------------------------------------------------
     -- Description of Defined Attributes for Entity_Kinds --
*************** package Einfo is
*** 5108,5114 ****
     --    Partial_DIC_Procedure               (synth)
     --    Partial_Invariant_Procedure         (synth)
     --    Predicate_Function                  (synth)
-    --    Predicate_Function_M                (synth)
     --    Root_Type                           (synth)
     --    Size_Clause                         (synth)
  
--- 5104,5109 ----
*************** package Einfo is
*** 5391,5397 ****
     --    Protected_Body_Subprogram
     --    Barrier_Function
     --    Elaboration_Entity
-    --    Postconditions_Proc
     --    Entry_Parameters_Type
     --    First_Entity
     --    Alias                                (for entry only. Empty)
--- 5386,5391 ----
*************** package Einfo is
*** 5506,5512 ****
     --    Protected_Body_Subprogram
     --    Next_Inlined_Subprogram
     --    Elaboration_Entity                   (not implicit /=)
-    --    Postconditions_Proc                  (non-generic case only)
     --    DT_Position
     --    DTC_Entity
     --    First_Entity
--- 5500,5505 ----
*************** package Einfo is
*** 5584,5590 ****
     --    Is_Machine_Code_Subprogram           (non-generic case only)
     --    Is_Partial_Invariant_Procedure       (non-generic case only)
     --    Is_Predicate_Function                (non-generic case only)
-    --    Is_Predicate_Function_M              (non-generic case only)
     --    Is_Primitive
     --    Is_Primitive_Wrapper                 (non-generic case only)
     --    Is_Private_Descendant
--- 5577,5582 ----
*************** package Einfo is
*** 5871,5877 ****
     --    Protected_Body_Subprogram
     --    Next_Inlined_Subprogram
     --    Elaboration_Entity
-    --    Postconditions_Proc                  (non-generic case only)
     --    DT_Position
     --    DTC_Entity
     --    First_Entity
--- 5863,5868 ----
*************** package Einfo is
*** 5949,5955 ****
     --    Is_Partial_DIC_Procedure             (synth) (non-generic case only)
     --    Is_Partial_Invariant_Procedure       (non-generic case only)
     --    Is_Predicate_Function                (non-generic case only)
-    --    Is_Predicate_Function_M              (non-generic case only)
     --    Is_Primitive
     --    Is_Primitive_Wrapper                 (non-generic case only)
     --    Is_Private_Descendant
--- 5940,5945 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/elists.adb gcc-13.1.0/gcc/ada/elists.adb
*** gcc-12.2.0/gcc/ada/elists.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/elists.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/elists.ads gcc-13.1.0/gcc/ada/elists.ads
*** gcc-12.2.0/gcc/ada/elists.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/elists.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/elists.h gcc-13.1.0/gcc/ada/elists.h
*** gcc-12.2.0/gcc/ada/elists.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/elists.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/env.c gcc-13.1.0/gcc/ada/env.c
*** gcc-12.2.0/gcc/ada/env.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/env.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2005-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/env.h gcc-13.1.0/gcc/ada/env.h
*** gcc-12.2.0/gcc/ada/env.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/env.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2009-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2009-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/err_vars.ads gcc-13.1.0/gcc/ada/err_vars.ads
*** gcc-12.2.0/gcc/ada/err_vars.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/err_vars.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Uintp; use Uintp;
*** 32,43 ****
  
  package Err_Vars is
  
-    --  All of these variables are set when needed, so they do not need to be
-    --  initialized. However, there is code that saves and restores existing
-    --  values, which may malfunction in -gnatVa mode if the variable has never
-    --  been initialized, so we initialize some variables to avoid exceptions
-    --  from invalid values in such cases.
- 
     --  Note on error counts (Serious_Errors_Detected, Total_Errors_Detected,
     --  Warnings_Detected, Warning_Info_Messages, Report_Info_Messages). These
     --  counts might more logically appear in this unit, but we place them
--- 32,37 ----
*************** package Err_Vars is
*** 68,74 ****
     --  resulting from illegalities, and also for substitution of more
     --  appropriate error messages from higher semantic levels. It is
     --  a counter so that the increment/decrement protocol nests neatly.
-    --  Initialized for -gnatVa use, see comment above.
  
     Error_Msg_Exception : exception;
     --  Exception raised if Raise_Exception_On_Error is true
--- 62,67 ----
*************** package Err_Vars is
*** 81,92 ****
     --  Source_Reference line, then this is initialized to No_Source_File,
     --  to force an initial reference to the real source file name.
  
-    Warning_Doc_Switch : Boolean := True;
-    --  If this is set True, then the ??/?x?/?x? sequences in error messages
-    --  are active (see errout.ads for details). If this switch is False, then
-    --  these sequences are ignored (i.e. simply equivalent to a single ?). The
-    --  -gnatw.d switch sets this flag True, -gnatw.D sets this flag False.
- 
     ----------------------------------------
     -- Error Message Insertion Parameters --
     ----------------------------------------
--- 74,79 ----
*************** package Err_Vars is
*** 100,105 ****
--- 87,97 ----
     --
     --  Some of these are initialized below, because they are read before being
     --  set by clients.
+    --
+    --  Would it be desirable to use arrays (with element renamings) here
+    --  instead of individual variables, at least for the Error_Msg_Name_N and
+    --  Error_Msg_Node_N ??? This would allow simplifying existing code in some
+    --  cases (see errout.adb).
  
     Error_Msg_Col : Column_Number;
     --  Column for @ insertion character in message
*************** package Err_Vars is
*** 116,121 ****
--- 108,116 ----
     Error_Msg_Name_1 : Name_Id;
     Error_Msg_Name_2 : Name_Id := No_Name;
     Error_Msg_Name_3 : Name_Id := No_Name;
+    Error_Msg_Name_4 : Name_Id := No_Name;
+    Error_Msg_Name_5 : Name_Id := No_Name;
+    Error_Msg_Name_6 : Name_Id := No_Name;
     --  Name_Id values for % insertion characters in message
  
     Error_Msg_File_1 : File_Name_Type;
*************** package Err_Vars is
*** 129,134 ****
--- 124,133 ----
  
     Error_Msg_Node_1 : Node_Id;
     Error_Msg_Node_2 : Node_Id := Empty;
+    Error_Msg_Node_3 : Node_Id := Empty;
+    Error_Msg_Node_4 : Node_Id := Empty;
+    Error_Msg_Node_5 : Node_Id := Empty;
+    Error_Msg_Node_6 : Node_Id := Empty;
     --  Node_Id values for & insertion characters in message
  
     Error_Msg_Warn : Boolean;
diff -Nrcpad gcc-12.2.0/gcc/ada/errno.c gcc-13.1.0/gcc/ada/errno.c
*** gcc-12.2.0/gcc/ada/errno.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/errno.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 1992-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/errout.adb gcc-13.1.0/gcc/ada/errout.adb
*** gcc-12.2.0/gcc/ada/errout.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/errout.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinfo.Utils;    use Sinfo.Utils;
*** 51,57 ****
--- 51,59 ----
  with Snames;         use Snames;
  with Stand;          use Stand;
  with Stylesw;        use Stylesw;
+ with System.OS_Lib;
  with Uname;          use Uname;
+ with Warnsw;
  
  package body Errout is
  
*************** package body Errout is
*** 63,75 ****
     Finalize_Called : Boolean := False;
     --  Set True if the Finalize routine has been called
  
-    Record_Compilation_Errors : Boolean := False;
-    --  Record that a compilation error was witnessed during a given phase of
-    --  analysis for gnat2why. This is needed as Warning_Mode is modified twice
-    --  in gnat2why, hence Erroutc.Compilation_Errors can only return a suitable
-    --  value for each phase of analysis separately. This is updated at each
-    --  call to Compilation_Errors.
- 
     Warn_On_Instance : Boolean;
     --  Flag set true for warning message to be posted on instance
  
--- 65,70 ----
*************** package body Errout is
*** 251,267 ****
     begin
        if not Finalize_Called then
           raise Program_Error;
- 
-       --  Record that a compilation error was witnessed during a given phase of
-       --  analysis for gnat2why. This is needed as Warning_Mode is modified
-       --  twice in gnat2why, hence Erroutc.Compilation_Errors can only return a
-       --  suitable value for each phase of analysis separately.
- 
        else
!          Record_Compilation_Errors :=
!            Record_Compilation_Errors or else Erroutc.Compilation_Errors;
! 
!          return Record_Compilation_Errors;
        end if;
     end Compilation_Errors;
  
--- 246,253 ----
     begin
        if not Finalize_Called then
           raise Program_Error;
        else
!          return Erroutc.Compilation_Errors;
        end if;
     end Compilation_Errors;
  
*************** package body Errout is
*** 896,907 ****
     -- Error_Msg_GNAT_Extension --
     ------------------------------
  
!    procedure Error_Msg_GNAT_Extension (Extension : String) is
!       Loc : constant Source_Ptr := Token_Ptr;
     begin
!       if not Extensions_Allowed then
!          Error_Msg (Extension & " is a 'G'N'A'T specific extension", Loc);
!          Error_Msg ("\unit must be compiled with -gnatX switch", Loc);
        end if;
     end Error_Msg_GNAT_Extension;
  
--- 882,922 ----
     -- Error_Msg_GNAT_Extension --
     ------------------------------
  
!    procedure Error_Msg_GNAT_Extension
!      (Extension : String;
!       Loc : Source_Ptr;
!       Is_Core_Extension : Boolean := False)
!    is
     begin
!       if (if Is_Core_Extension
!            then Core_Extensions_Allowed
!            else All_Extensions_Allowed)
!       then
!          return;
!       end if;
! 
!       Error_Msg (Extension & " is a 'G'N'A'T-specific extension", Loc);
! 
!       if No (Ada_Version_Pragma) then
!          if Is_Core_Extension then
!             Error_Msg
!               ("\unit must be compiled with -gnatX '[or -gnatX0'] " &
!                "or use pragma Extensions_Allowed (On) '[or All']", Loc);
!          else
!             Error_Msg
!               ("\unit must be compiled with -gnatX0 " &
!                "or use pragma Extensions_Allowed (All)", Loc);
!          end if;
!       else
!          Error_Msg_Sloc := Sloc (Ada_Version_Pragma);
!          Error_Msg ("\incompatible with Ada version set#", Loc);
!          if Is_Core_Extension then
!             Error_Msg
!               ("\must use pragma Extensions_Allowed (On) '[or All']", Loc);
!          else
!             Error_Msg
!               ("\must use pragma Extensions_Allowed (All)", Loc);
!          end if;
        end if;
     end Error_Msg_GNAT_Extension;
  
*************** package body Errout is
*** 973,986 ****
           --  after fixing the error, the use clause no longer looks like it was
           --  unused.
  
!          Check_Unreferenced := False;
!          Check_Unreferenced_Formals := False;
        end Handle_Serious_Error;
  
     --  Start of processing for Error_Msg_Internal
  
     begin
!       --  Detect common mistake of prefixing or suffing the message with a
        --  space character.
  
        pragma Assert (Msg (Msg'First) /= ' ' and then Msg (Msg'Last) /= ' ');
--- 988,1001 ----
           --  after fixing the error, the use clause no longer looks like it was
           --  unused.
  
!          Warnsw.Check_Unreferenced := False;
!          Warnsw.Check_Unreferenced_Formals := False;
        end Handle_Serious_Error;
  
     --  Start of processing for Error_Msg_Internal
  
     begin
!       --  Detect common mistake of prefixing or suffixing the message with a
        --  space character.
  
        pragma Assert (Msg (Msg'First) /= ' ' and then Msg (Msg'Last) /= ' ');
*************** package body Errout is
*** 1199,1205 ****
            Next                => No_Error_Msg,
            Prev                => No_Error_Msg,
            Sptr                => Span,
!           Optr                => Optr,
            Insertion_Sloc      => (if Has_Insertion_Line then Error_Msg_Sloc
                                    else No_Location),
            Sfile               => Get_Source_File_Index (Sptr),
--- 1214,1220 ----
            Next                => No_Error_Msg,
            Prev                => No_Error_Msg,
            Sptr                => Span,
!           Optr                => Opan,
            Insertion_Sloc      => (if Has_Insertion_Line then Error_Msg_Sloc
                                    else No_Location),
            Sfile               => Get_Source_File_Index (Sptr),
*************** package body Errout is
*** 1268,1274 ****
                         or else
                            (Sptr = Errors.Table (Last_Error_Msg).Sptr.Ptr
                               and then
!                                Optr > Errors.Table (Last_Error_Msg).Optr))
           then
              Prev_Msg := Last_Error_Msg;
              Next_Msg := No_Error_Msg;
--- 1283,1289 ----
                         or else
                            (Sptr = Errors.Table (Last_Error_Msg).Sptr.Ptr
                               and then
!                                Optr > Errors.Table (Last_Error_Msg).Optr.Ptr))
           then
              Prev_Msg := Last_Error_Msg;
              Next_Msg := No_Error_Msg;
*************** package body Errout is
*** 1286,1292 ****
                 then
                    exit when Sptr < Errors.Table (Next_Msg).Sptr.Ptr
                      or else (Sptr = Errors.Table (Next_Msg).Sptr.Ptr
!                               and then Optr < Errors.Table (Next_Msg).Optr);
                 end if;
  
                 Prev_Msg := Next_Msg;
--- 1301,1308 ----
                 then
                    exit when Sptr < Errors.Table (Next_Msg).Sptr.Ptr
                      or else (Sptr = Errors.Table (Next_Msg).Sptr.Ptr
!                               and then
!                              Optr < Errors.Table (Next_Msg).Optr.Ptr);
                 end if;
  
                 Prev_Msg := Next_Msg;
*************** package body Errout is
*** 1665,1672 ****
                     (Warning_Specifically_Suppressed (CE.Sptr.Ptr, CE.Text, Tag)
                                                                  /= No_String
                        or else
!                     Warning_Specifically_Suppressed (CE.Optr, CE.Text, Tag) /=
!                                                                    No_String)
              then
                 Delete_Warning (Cur);
  
--- 1681,1688 ----
                     (Warning_Specifically_Suppressed (CE.Sptr.Ptr, CE.Text, Tag)
                                                                  /= No_String
                        or else
!                     Warning_Specifically_Suppressed (CE.Optr.Ptr, CE.Text, Tag)
!                                                                 /= No_String)
              then
                 Delete_Warning (Cur);
  
*************** package body Errout is
*** 1906,1912 ****
  
        --  Reset counts for warnings
  
!       Reset_Warnings;
  
        --  Initialize warnings tables
  
--- 1922,1931 ----
  
        --  Reset counts for warnings
  
!       Warnings_Treated_As_Errors := 0;
!       Warnings_Detected := 0;
!       Warning_Info_Messages := 0;
!       Warnings_As_Errors_Count := 0;
  
        --  Initialize warnings tables
  
*************** package body Errout is
*** 2075,2080 ****
--- 2094,2100 ----
        --  Return True if E is a continuation message.
  
        procedure Write_JSON_Escaped_String (Str : String_Ptr);
+       procedure Write_JSON_Escaped_String (Str : String);
        --  Write each character of Str, taking care of preceding each quote and
        --  backslash with a backslash. Note that this escaping differs from what
        --  GCC does.
*************** package body Errout is
*** 2088,2098 ****
        --  Write Sptr as a JSON location, an object containing a file attribute,
        --  a line number and a column number.
  
!       procedure Write_JSON_Span (Span : Source_Span);
!       --  Write Span as a JSON span, an object containing a "caret" attribute
!       --  whose value is the JSON location of Span.Ptr. If Span.First and
!       --  Span.Last are different from Span.Ptr, they will be printed as JSON
        --  locations under the names "start" and "finish".
  
        -----------------------
        --  Is_Continuation  --
--- 2108,2121 ----
        --  Write Sptr as a JSON location, an object containing a file attribute,
        --  a line number and a column number.
  
!       procedure Write_JSON_Span (Error : Error_Msg_Object);
!       --  Write Error as a JSON span, an object containing a "caret" attribute
!       --  whose value is the JSON location of Error.Sptr.Ptr. If Sptr.First and
!       --  Sptr.Last are different from Sptr.Ptr, they will be printed as JSON
        --  locations under the names "start" and "finish".
+       --  When Include_Subprogram_In_Messages is true (-gnatdJ) an additional,
+       --  non-standard, attribute named "subprogram" will be added, allowing
+       --  precisely identifying the subprogram surrounding the span.
  
        -----------------------
        --  Is_Continuation  --
*************** package body Errout is
*** 2107,2115 ****
        -- Write_JSON_Escaped_String --
        -------------------------------
  
!       procedure Write_JSON_Escaped_String (Str : String_Ptr) is
        begin
!          for C of Str.all loop
              if C = '"' or else C = '\' then
                 Write_Char ('\');
              end if;
--- 2130,2138 ----
        -- Write_JSON_Escaped_String --
        -------------------------------
  
!       procedure Write_JSON_Escaped_String (Str : String) is
        begin
!          for C of Str loop
              if C = '"' or else C = '\' then
                 Write_Char ('\');
              end if;
*************** package body Errout is
*** 2118,2131 ****
           end loop;
        end Write_JSON_Escaped_String;
  
        -------------------------
        -- Write_JSON_Location --
        -------------------------
  
        procedure Write_JSON_Location (Sptr : Source_Ptr) is
        begin
           Write_Str ("{""file"":""");
!          Write_Name (Full_Ref_Name (Get_Source_File_Index (Sptr)));
           Write_Str (""",""line"":");
           Write_Int (Pos (Get_Physical_Line_Number (Sptr)));
           Write_Str (", ""column"":");
--- 2141,2170 ----
           end loop;
        end Write_JSON_Escaped_String;
  
+       -------------------------------
+       -- Write_JSON_Escaped_String --
+       -------------------------------
+ 
+       procedure Write_JSON_Escaped_String (Str : String_Ptr) is
+       begin
+          Write_JSON_Escaped_String (Str.all);
+       end Write_JSON_Escaped_String;
+ 
        -------------------------
        -- Write_JSON_Location --
        -------------------------
  
        procedure Write_JSON_Location (Sptr : Source_Ptr) is
+          Name : constant File_Name_Type :=
+            Full_Ref_Name (Get_Source_File_Index (Sptr));
        begin
           Write_Str ("{""file"":""");
!          if Full_Path_Name_For_Brief_Errors then
!             Write_JSON_Escaped_String
!               (System.OS_Lib.Normalize_Pathname (Get_Name_String (Name)));
!          else
!             Write_Name (Name);
!          end if;
           Write_Str (""",""line"":");
           Write_Int (Pos (Get_Physical_Line_Number (Sptr)));
           Write_Str (", ""column"":");
*************** package body Errout is
*** 2137,2143 ****
        -- Write_JSON_Span --
        ---------------------
  
!       procedure Write_JSON_Span (Span : Source_Span) is
        begin
           Write_Str ("{""caret"":");
           Write_JSON_Location (Span.Ptr);
--- 2176,2183 ----
        -- Write_JSON_Span --
        ---------------------
  
!       procedure Write_JSON_Span (Error : Error_Msg_Object) is
!          Span : constant Source_Span := Error.Sptr;
        begin
           Write_Str ("{""caret"":");
           Write_JSON_Location (Span.Ptr);
*************** package body Errout is
*** 2152,2157 ****
--- 2192,2203 ----
              Write_JSON_Location (Span.Last);
           end if;
  
+          if Include_Subprogram_In_Messages then
+             Write_Str (",""subprogram"":""");
+             Write_JSON_Escaped_String (Subprogram_Name_Ptr (Error.Node));
+             Write_Str ("""");
+          end if;
+ 
           Write_Str ("}");
        end Write_JSON_Span;
  
*************** package body Errout is
*** 2163,2168 ****
--- 2209,2217 ----
        --  Do not print continuations messages as children of the current
        --  message if the current message is a continuation message.
  
+       Option : constant String := Get_Warning_Option (E);
+       --  The option that triggered this message.
+ 
     --  Start of processing for Output_JSON_Message
  
     begin
*************** package body Errout is
*** 2182,2198 ****
        --  Print message location
  
        Write_Str (",""locations"":[");
!       Write_JSON_Span (Errors.Table (E).Sptr);
  
!       if Errors.Table (E).Optr /= Errors.Table (E).Sptr.Ptr then
           Write_Str (",{""caret"":");
!          Write_JSON_Location (Errors.Table (E).Optr);
           Write_Str ("}");
        end if;
  
        --  Print message content
  
!       Write_Str ("],""message"":""");
        Write_JSON_Escaped_String (Errors.Table (E).Text);
        Write_Str ("""");
  
--- 2231,2254 ----
        --  Print message location
  
        Write_Str (",""locations"":[");
!       Write_JSON_Span (Errors.Table (E));
  
!       if Errors.Table (E).Optr.Ptr /= Errors.Table (E).Sptr.Ptr then
           Write_Str (",{""caret"":");
!          Write_JSON_Location (Errors.Table (E).Optr.Ptr);
           Write_Str ("}");
        end if;
  
+       Write_Str ("]");
+ 
+       --  Print message option, if there is one
+       if Option /= "" then
+          Write_Str (",""option"":""" & Option & """");
+       end if;
+ 
        --  Print message content
  
!       Write_Str (",""message"":""");
        Write_JSON_Escaped_String (Errors.Table (E).Text);
        Write_Str ("""");
  
*************** package body Errout is
*** 2899,2905 ****
                             else SGR_Error);
                       begin
                          Write_Source_Code_Lines
!                           (Errors.Table (E).Sptr, SGR_Span);
                       end;
                    end if;
                 end if;
--- 2955,2961 ----
                             else SGR_Error);
                       begin
                          Write_Source_Code_Lines
!                           (Errors.Table (E).Optr, SGR_Span);
                       end;
                    end if;
                 end if;
*************** package body Errout is
*** 3274,3280 ****
  
                 --  Don't remove if location does not match
  
!                and then Errors.Table (E).Optr = Loc
  
                 --  Don't remove if not warning/info message. Note that we do
                 --  not remove style messages here. They are warning messages
--- 3330,3336 ----
  
                 --  Don't remove if location does not match
  
!                and then Errors.Table (E).Optr.Ptr = Loc
  
                 --  Don't remove if not warning/info message. Note that we do
                 --  not remove style messages here. They are warning messages
*************** package body Errout is
*** 3296,3301 ****
--- 3352,3368 ----
                    Warning_Info_Messages := Warning_Info_Messages - 1;
                 end if;
  
+                --  When warning about a runtime exception has been escalated
+                --  into error, the starting message has increased the total
+                --  errors counter, so here we decrease this counter.
+ 
+                if Errors.Table (E).Warn_Runtime_Raise
+                  and then not Errors.Table (E).Msg_Cont
+                  and then Warning_Mode = Treat_Run_Time_Warnings_As_Errors
+                then
+                   Total_Errors_Detected := Total_Errors_Detected - 1;
+                end if;
+ 
                 return True;
  
              --  No removal required
*************** package body Errout is
*** 3330,3352 ****
              E := Errors.Table (E).Next;
           end loop;
  
           if Nkind (N) = N_Raise_Constraint_Error
             and then Is_Rewrite_Substitution (N)
             and then No (Condition (N))
           then
!             --  Warnings may have been posted on subexpressions of the original
!             --  tree. We place the original node back on the tree to remove
!             --  those warnings, whose sloc do not match those of any node in
!             --  the current tree. Given that we are in unreachable code, this
!             --  modification to the tree is harmless.
! 
!             if Is_List_Member (N) then
!                Set_Condition (N, Original_Node (N));
!                Check_All_Warnings (Condition (N));
!             else
!                Rewrite (N, Original_Node (N));
!                Check_All_Warnings (N);
!             end if;
           end if;
  
           return OK;
--- 3397,3409 ----
              E := Errors.Table (E).Next;
           end loop;
  
+          --  Warnings may have been posted on subexpressions of original tree
+ 
           if Nkind (N) = N_Raise_Constraint_Error
             and then Is_Rewrite_Substitution (N)
             and then No (Condition (N))
           then
!             Check_All_Warnings (Original_Node (N));
           end if;
  
           return OK;
*************** package body Errout is
*** 3370,3387 ****
        end loop;
     end Remove_Warning_Messages;
  
-    --------------------
-    -- Reset_Warnings --
-    --------------------
- 
-    procedure Reset_Warnings is
-    begin
-       Warnings_Treated_As_Errors := 0;
-       Warnings_Detected := 0;
-       Warning_Info_Messages := 0;
-       Warnings_As_Errors_Count := 0;
-    end Reset_Warnings;
- 
     ----------------------
     -- Adjust_Name_Case --
     ----------------------
--- 3427,3432 ----
*************** package body Errout is
*** 3578,3587 ****
           end if;
        end if;
  
!       --  The following assignment ensures that a second ampersand insertion
!       --  character will correspond to the Error_Msg_Node_2 parameter.
  
        Error_Msg_Node_1 := Error_Msg_Node_2;
     end Set_Msg_Insertion_Node;
  
     --------------------------------------
--- 3623,3636 ----
           end if;
        end if;
  
!       --  The following assignment ensures that further ampersand insertion
!       --  characters will correspond to the Error_Msg_Node_# parameter.
  
        Error_Msg_Node_1 := Error_Msg_Node_2;
+       Error_Msg_Node_2 := Error_Msg_Node_3;
+       Error_Msg_Node_3 := Error_Msg_Node_4;
+       Error_Msg_Node_4 := Error_Msg_Node_5;
+       Error_Msg_Node_5 := Error_Msg_Node_6;
     end Set_Msg_Insertion_Node;
  
     --------------------------------------
*************** package body Errout is
*** 3756,3762 ****
           Set_Msg_Str ("<error>");
  
        else
!          Get_Unit_Name_String (Error_Msg_Unit_1, Suffix);
           Set_Msg_Blank;
           Set_Msg_Quote;
           Set_Msg_Name_Buffer;
--- 3805,3811 ----
           Set_Msg_Str ("<error>");
  
        else
!          Get_Unit_Name_String (Global_Name_Buffer, Error_Msg_Unit_1, Suffix);
           Set_Msg_Blank;
           Set_Msg_Quote;
           Set_Msg_Name_Buffer;
*************** package body Errout is
*** 3872,3878 ****
        --  dealing with some cases of internal names).
  
        while Name_Len > 1 and then Name_Buffer (Name_Len) in 'A' .. 'Z' loop
!          Name_Len := Name_Len  - 1;
        end loop;
  
        --  If we have any of the names from standard that start with the
--- 3921,3927 ----
        --  dealing with some cases of internal names).
  
        while Name_Len > 1 and then Name_Buffer (Name_Len) in 'A' .. 'Z' loop
!          Name_Len := Name_Len - 1;
        end loop;
  
        --  If we have any of the names from standard that start with the
diff -Nrcpad gcc-12.2.0/gcc/ada/errout.ads gcc-13.1.0/gcc/ada/errout.ads
*** gcc-12.2.0/gcc/ada/errout.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/errout.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Errout is
*** 59,73 ****
     Error_Msg_Exception : exception renames Err_Vars.Error_Msg_Exception;
     --  Exception raised if Raise_Exception_On_Error is true
  
-    Warning_Doc_Switch : Boolean renames Err_Vars.Warning_Doc_Switch;
-    --  If this is set True, then the ??/?*?/?$?/?x?/?.x?/?_x? insertion
-    --  sequences in error messages generate appropriate tags for the output
-    --  error messages. If this switch is False, then these sequences are still
-    --  recognized (for the purposes of implementing the pattern matching in
-    --  pragmas Warnings (Off,..) and Warning_As_Pragma(...) but do not result
-    --  in adding the error message tag. The -gnatw.d switch sets this flag
-    --  True, -gnatw.D sets this flag False.
- 
     Current_Node : Node_Id := Empty;
     --  Used by Error_Msg as a default Node_Id.
     --  Relevant only when Opt.Include_Subprogram_In_Messages is set.
--- 59,64 ----
*************** package Errout is
*** 314,323 ****
     --      continuations, use this in each continuation message.
  
     --    Insertion character ?x? ?.x? ?_x? (warning with switch)
!    --      Like ?, but if the flag Warn_Doc_Switch is True, adds the string
     --      "[-gnatwx]", "[-gnatw.x]", or "[-gnatw_x]", at the end of the
!    --      warning message. x must be lower case. For continuations, use this
!    --      on each continuation message.
  
     --    Insertion character ?*? (restriction warning)
     --      Like ?, but if the flag Warn_Doc_Switch is True, adds the string
--- 305,315 ----
     --      continuations, use this in each continuation message.
  
     --    Insertion character ?x? ?.x? ?_x? (warning with switch)
!    --      "x" is a (lower-case) warning switch character.
!    --      Like ??, but if the flag Warn_Doc_Switch is True, adds the string
     --      "[-gnatwx]", "[-gnatw.x]", or "[-gnatw_x]", at the end of the
!    --      warning message. For continuations, use this on each continuation
!    --      message.
  
     --    Insertion character ?*? (restriction warning)
     --      Like ?, but if the flag Warn_Doc_Switch is True, adds the string
*************** package Errout is
*** 468,473 ****
--- 460,468 ----
     Error_Msg_Name_1 : Name_Id renames Err_Vars.Error_Msg_Name_1;
     Error_Msg_Name_2 : Name_Id renames Err_Vars.Error_Msg_Name_2;
     Error_Msg_Name_3 : Name_Id renames Err_Vars.Error_Msg_Name_3;
+    Error_Msg_Name_4 : Name_Id renames Err_Vars.Error_Msg_Name_4;
+    Error_Msg_Name_5 : Name_Id renames Err_Vars.Error_Msg_Name_5;
+    Error_Msg_Name_6 : Name_Id renames Err_Vars.Error_Msg_Name_6;
     --  Name_Id values for % insertion characters in message
  
     Error_Msg_File_1 : File_Name_Type renames Err_Vars.Error_Msg_File_1;
*************** package Errout is
*** 481,486 ****
--- 476,485 ----
  
     Error_Msg_Node_1 : Node_Id renames Err_Vars.Error_Msg_Node_1;
     Error_Msg_Node_2 : Node_Id renames Err_Vars.Error_Msg_Node_2;
+    Error_Msg_Node_3 : Node_Id renames Err_Vars.Error_Msg_Node_3;
+    Error_Msg_Node_4 : Node_Id renames Err_Vars.Error_Msg_Node_4;
+    Error_Msg_Node_5 : Node_Id renames Err_Vars.Error_Msg_Node_5;
+    Error_Msg_Node_6 : Node_Id renames Err_Vars.Error_Msg_Node_6;
     --  Node_Id values for & insertion characters in message
  
     Error_Msg_Qual_Level : Nat renames Err_Vars.Error_Msg_Qual_Level;
*************** package Errout is
*** 851,861 ****
     --  Remove warnings on all elements of a list (Calls Remove_Warning_Messages
     --  on each element of the list, see above).
  
-    procedure Reset_Warnings;
-    --  Reset the counts related to warnings. This is used both to initialize
-    --  these counts and to reset them after each phase of analysis for a given
-    --  value of Opt.Warning_Mode in gnat2why.
- 
     procedure Set_Ignore_Errors (To : Boolean);
     --  Following a call to this procedure with To=True, all error calls are
     --  ignored. A call with To=False restores the default treatment in which
--- 850,855 ----
*************** package Errout is
*** 903,913 ****
     --  matching Warnings Off pragma preceding this one.
  
     function Compilation_Errors return Boolean;
!    --  Returns True if errors have been detected, or warnings in -gnatwe (treat
!    --  warnings as errors) mode. Note that it is mandatory to call Finalize
!    --  before calling this routine. To account for changes to Warning_Mode in
!    --  gnat2why between phases, the past or current presence of an error is
!    --  recorded in a global variable at each call.
  
     procedure Error_Msg_CRT (Feature : String; N : Node_Id);
     --  Posts a non-fatal message on node N saying that the feature identified
--- 897,906 ----
     --  matching Warnings Off pragma preceding this one.
  
     function Compilation_Errors return Boolean;
!    --  Returns True if errors have been detected, or warnings when they are
!    --  treated as errors, which corresponds to switch -gnatwe in the compiler,
!    --  and other switches in other tools. Note that it is mandatory to call
!    --  Finalize before calling this routine.
  
     procedure Error_Msg_CRT (Feature : String; N : Node_Id);
     --  Posts a non-fatal message on node N saying that the feature identified
*************** package Errout is
*** 936,945 ****
     procedure Error_Msg_Ada_2022_Feature (Feature : String; Loc : Source_Ptr);
     --  Analogous to Error_Msg_Ada_2012_Feature, for Ada 2022
  
!    procedure Error_Msg_GNAT_Extension (Extension : String);
!    --  If not operating with extensions allowed, posts errors complaining
!    --  that Extension is only supported when the -gnatX switch is enabled,
!    --  with appropriate suggestions to fix it.
  
     procedure dmsg (Id : Error_Msg_Id) renames Erroutc.dmsg;
     --  Debugging routine to dump an error message
--- 929,946 ----
     procedure Error_Msg_Ada_2022_Feature (Feature : String; Loc : Source_Ptr);
     --  Analogous to Error_Msg_Ada_2012_Feature, for Ada 2022
  
!    procedure Error_Msg_GNAT_Extension
!     (Extension         : String;
!      Loc               : Source_Ptr;
!      Is_Core_Extension : Boolean := False);
!    --  To be called as part of checking a GNAT language extension (either a
!    --  core extension or not, as indicated by the Is_Core_Extension parameter).
!    --  If switch -gnatX0 or pragma Extension_Allowed (All) is in effect, then
!    --  either kind of extension is allowed; if switch -gnatX or pragma
!    --  Extensions_Allowed (On) is in effect, then only core extensions are
!    --  allowed. Otherwise, no extensions are allowed. A disallowed construct
!    --  is flagged as an error. Loc indicates the source location of the
!    --  extension construct.
  
     procedure dmsg (Id : Error_Msg_Id) renames Erroutc.dmsg;
     --  Debugging routine to dump an error message
diff -Nrcpad gcc-12.2.0/gcc/ada/erroutc.adb gcc-13.1.0/gcc/ada/erroutc.adb
*** gcc-12.2.0/gcc/ada/erroutc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/erroutc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Stringt;  use Stringt;
*** 44,49 ****
--- 44,50 ----
  with Targparm;
  with Uintp;    use Uintp;
  with Widechar; use Widechar;
+ with Warnsw;   use Warnsw;
  
  package body Erroutc is
  
*************** package body Erroutc is
*** 311,342 ****
  
     begin
        w ("Dumping error message, Id = ", Int (Id));
!       w ("  Text     = ", E.Text.all);
!       w ("  Next     = ", Int (E.Next));
!       w ("  Prev     = ", Int (E.Prev));
!       w ("  Sfile    = ", Int (E.Sfile));
  
        Write_Str
!         ("  Sptr     = ");
        Write_Location (E.Sptr.Ptr);  --  ??? Do not write the full span for now
        Write_Eol;
  
        Write_Str
!         ("  Optr     = ");
!       Write_Location (E.Optr);
        Write_Eol;
  
!       w ("  Line     = ", Int (E.Line));
!       w ("  Col      = ", Int (E.Col));
!       w ("  Warn     = ", E.Warn);
!       w ("  Warn_Err = ", E.Warn_Err);
!       w ("  Warn_Chr = '" & E.Warn_Chr & ''');
!       w ("  Style    = ", E.Style);
!       w ("  Serious  = ", E.Serious);
!       w ("  Uncond   = ", E.Uncond);
!       w ("  Msg_Cont = ", E.Msg_Cont);
!       w ("  Deleted  = ", E.Deleted);
!       w ("  Node     = ", Int (E.Node));
  
        Write_Eol;
     end dmsg;
--- 312,344 ----
  
     begin
        w ("Dumping error message, Id = ", Int (Id));
!       w ("  Text               = ", E.Text.all);
!       w ("  Next               = ", Int (E.Next));
!       w ("  Prev               = ", Int (E.Prev));
!       w ("  Sfile              = ", Int (E.Sfile));
  
        Write_Str
!         ("  Sptr               = ");
        Write_Location (E.Sptr.Ptr);  --  ??? Do not write the full span for now
        Write_Eol;
  
        Write_Str
!         ("  Optr               = ");
!       Write_Location (E.Optr.Ptr);
        Write_Eol;
  
!       w ("  Line               = ", Int (E.Line));
!       w ("  Col                = ", Int (E.Col));
!       w ("  Warn               = ", E.Warn);
!       w ("  Warn_Err           = ", E.Warn_Err);
!       w ("  Warn_Runtime_Raise = ", E.Warn_Runtime_Raise);
!       w ("  Warn_Chr           = '" & E.Warn_Chr & ''');
!       w ("  Style              = ", E.Style);
!       w ("  Serious            = ", E.Serious);
!       w ("  Uncond             = ", E.Uncond);
!       w ("  Msg_Cont           = ", E.Msg_Cont);
!       w ("  Deleted            = ", E.Deleted);
!       w ("  Node               = ", Int (E.Node));
  
        Write_Eol;
     end dmsg;
*************** package body Erroutc is
*** 359,364 ****
--- 361,386 ----
        return Cur_Msg;
     end Get_Msg_Id;
  
+    ------------------------
+    -- Get_Warning_Option --
+    ------------------------
+ 
+    function Get_Warning_Option (Id : Error_Msg_Id) return String is
+       Warn     : constant Boolean         := Errors.Table (Id).Warn;
+       Warn_Chr : constant String (1 .. 2) := Errors.Table (Id).Warn_Chr;
+    begin
+       if Warn and then Warn_Chr /= "  " and then Warn_Chr (1) /= '?' then
+          if Warn_Chr = "$ " then
+             return "-gnatel";
+          elsif Warn_Chr (2) = ' ' then
+             return "-gnatw" & Warn_Chr (1);
+          else
+             return "-gnatw" & Warn_Chr;
+          end if;
+       end if;
+       return "";
+    end Get_Warning_Option;
+ 
     ---------------------
     -- Get_Warning_Tag --
     ---------------------
*************** package body Erroutc is
*** 366,387 ****
     function Get_Warning_Tag (Id : Error_Msg_Id) return String is
        Warn     : constant Boolean         := Errors.Table (Id).Warn;
        Warn_Chr : constant String (1 .. 2) := Errors.Table (Id).Warn_Chr;
     begin
!       if Warn and then Warn_Chr /= "  " then
           if Warn_Chr = "? " then
              return "[enabled by default]";
           elsif Warn_Chr = "* " then
              return "[restriction warning]";
!          elsif Warn_Chr = "$ " then
!             return "[-gnatel]";
!          elsif Warn_Chr (2) = ' ' then
!             return "[-gnatw" & Warn_Chr (1) & ']';
!          else
!             return "[-gnatw" & Warn_Chr & ']';
           end if;
-       else
-          return "";
        end if;
     end Get_Warning_Tag;
  
     -------------
--- 388,406 ----
     function Get_Warning_Tag (Id : Error_Msg_Id) return String is
        Warn     : constant Boolean         := Errors.Table (Id).Warn;
        Warn_Chr : constant String (1 .. 2) := Errors.Table (Id).Warn_Chr;
+       Option   : constant String          := Get_Warning_Option (Id);
     begin
!       if Warn then
           if Warn_Chr = "? " then
              return "[enabled by default]";
           elsif Warn_Chr = "* " then
              return "[restriction warning]";
!          elsif Option /= "" then
!             return "[" & Option & "]";
           end if;
        end if;
+ 
+       return "";
     end Get_Warning_Tag;
  
     -------------
*************** package body Erroutc is
*** 1300,1307 ****
              Name_Len := Name_Len - 1;
           end if;
  
!          --  If operator name or character literal name, just print it as is
!          --  Also print as is if it ends in a right paren (case of x'val(nnn))
  
           if Name_Buffer (1) = '"'
             or else Name_Buffer (1) = '''
--- 1319,1326 ----
              Name_Len := Name_Len - 1;
           end if;
  
!          --  If operator name or character literal name, just print it as is.
!          --  Also print as is if it ends in a right paren (case of x'val(nnn)).
  
           if Name_Buffer (1) = '"'
             or else Name_Buffer (1) = '''
*************** package body Erroutc is
*** 1319,1330 ****
           end if;
        end if;
  
!       --  The following assignments ensure that the second and third percent
!       --  insertion characters will correspond to the Error_Msg_Name_2 and
!       --  Error_Msg_Name_3 as required.
  
        Error_Msg_Name_1 := Error_Msg_Name_2;
        Error_Msg_Name_2 := Error_Msg_Name_3;
     end Set_Msg_Insertion_Name;
  
     ------------------------------------
--- 1338,1352 ----
           end if;
        end if;
  
!       --  The following assignments ensure that other percent insertion
!       --  characters will correspond to their appropriate Error_Msg_Name_#
!       --  values as required.
  
        Error_Msg_Name_1 := Error_Msg_Name_2;
        Error_Msg_Name_2 := Error_Msg_Name_3;
+       Error_Msg_Name_3 := Error_Msg_Name_4;
+       Error_Msg_Name_4 := Error_Msg_Name_5;
+       Error_Msg_Name_5 := Error_Msg_Name_6;
     end Set_Msg_Insertion_Name;
  
     ------------------------------------
*************** package body Erroutc is
*** 1348,1359 ****
           Set_Msg_Quote;
        end if;
  
!       --  The following assignments ensure that the second and third % or %%
!       --  insertion characters will correspond to the Error_Msg_Name_2 and
!       --  Error_Msg_Name_3 values.
  
        Error_Msg_Name_1 := Error_Msg_Name_2;
        Error_Msg_Name_2 := Error_Msg_Name_3;
     end Set_Msg_Insertion_Name_Literal;
  
     -------------------------------------
--- 1370,1384 ----
           Set_Msg_Quote;
        end if;
  
!       --  The following assignments ensure that other percent insertion
!       --  characters will correspond to their appropriate Error_Msg_Name_#
!       --  values as required.
  
        Error_Msg_Name_1 := Error_Msg_Name_2;
        Error_Msg_Name_2 := Error_Msg_Name_3;
+       Error_Msg_Name_3 := Error_Msg_Name_4;
+       Error_Msg_Name_4 := Error_Msg_Name_5;
+       Error_Msg_Name_5 := Error_Msg_Name_6;
     end Set_Msg_Insertion_Name_Literal;
  
     -------------------------------------
*************** package body Erroutc is
*** 1462,1467 ****
--- 1487,1493 ----
     procedure Set_Msg_Name_Buffer is
     begin
        Set_Msg_Str (Name_Buffer (1 .. Name_Len));
+       Destroy_Global_Name_Buffer;
     end Set_Msg_Name_Buffer;
  
     -------------------
*************** package body Erroutc is
*** 1510,1515 ****
--- 1536,1567 ----
        elsif Text = "_TYPE_INVARIANT" then
           Set_Msg_Str ("TYPE_INVARIANT'CLASS");
  
+       --  Preserve casing for names that include acronyms
+ 
+       elsif Text = "Cpp_Class" then
+          Set_Msg_Str ("CPP_Class");
+ 
+       elsif Text = "Cpp_Constructor" then
+          Set_Msg_Str ("CPP_Constructor");
+ 
+       elsif Text = "Cpp_Virtual" then
+          Set_Msg_Str ("CPP_Virtual");
+ 
+       elsif Text = "Cpp_Vtable" then
+          Set_Msg_Str ("CPP_Vtable");
+ 
+       elsif Text = "Persistent_Bss" then
+          Set_Msg_Str ("Persistent_BSS");
+ 
+       elsif Text = "Spark_Mode" then
+          Set_Msg_Str ("SPARK_Mode");
+ 
+       elsif Text = "Use_Vads_Size" then
+          Set_Msg_Str ("Use_VADS_Size");
+ 
+       elsif Text = "Vads_Size" then
+          Set_Msg_Str ("VADS_size");
+ 
        --  Normal case with no replacement
  
        else
diff -Nrcpad gcc-12.2.0/gcc/ada/erroutc.ads gcc-13.1.0/gcc/ada/erroutc.ads
*** gcc-12.2.0/gcc/ada/erroutc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/erroutc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,29 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This packages contains global variables and routines common to error
  --  reporting packages, including Errout and Prj.Err.
  
  with Table;
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains global variables and routines common to error
  --  reporting packages, including Errout and Prj.Err.
  
  with Table;
*************** package Erroutc is
*** 209,215 ****
        --  will be posted. Note that an error placed on an instantiation will
        --  have Sptr pointing to the instantiation point.
  
!       Optr : Source_Ptr;
        --  Flag location used in the call to post the error. This is the same as
        --  Sptr, except when an error is posted on a particular instantiation of
        --  a generic. In such a case, Sptr will point to the original source
--- 209,215 ----
        --  will be posted. Note that an error placed on an instantiation will
        --  have Sptr pointing to the instantiation point.
  
!       Optr : Source_Span;
        --  Flag location used in the call to post the error. This is the same as
        --  Sptr, except when an error is posted on a particular instantiation of
        --  a generic. In such a case, Sptr will point to the original source
*************** package Erroutc is
*** 465,471 ****
     --  Tests if message buffer ends with given string preceded by a space
  
     procedure Buffer_Remove (C : Character);
!    --  Remove given character fron end of buffer if it is present
  
     procedure Buffer_Remove (S : String);
     --  Removes given string from end of buffer if it is present at end of
--- 465,471 ----
     --  Tests if message buffer ends with given string preceded by a space
  
     procedure Buffer_Remove (C : Character);
!    --  Remove given character from end of buffer if it is present
  
     procedure Buffer_Remove (S : String);
     --  Removes given string from end of buffer if it is present at end of
*************** package Erroutc is
*** 493,498 ****
--- 493,502 ----
     --  Returns the number of warnings in the Errors table that were triggered
     --  by a Compile_Time_Warning pragma.
  
+    function Get_Warning_Option (Id : Error_Msg_Id) return String;
+    --  Returns the warning switch causing this warning message or an empty
+    --  string is there is none..
+ 
     function Get_Warning_Tag (Id : Error_Msg_Id) return String;
     --  Given an error message ID, return tag showing warning message class, or
     --  the null string if this option is not enabled or this is not a warning.
*************** package Erroutc is
*** 617,624 ****
     --  buffer with no leading zeroes output.
  
     procedure Set_Msg_Name_Buffer;
!    --  Output name from Name_Buffer, with surrounding quotes unless manual
!    --  quotation mode is in effect.
  
     procedure Set_Msg_Quote;
     --  Set quote if in normal quote mode, nothing if in manual quote mode
--- 621,628 ----
     --  buffer with no leading zeroes output.
  
     procedure Set_Msg_Name_Buffer;
!    --  Output name from Namet.Global_Name_Buffer, with surrounding quotes
!    --  unless manual quotation mode is in effect.
  
     procedure Set_Msg_Quote;
     --  Set quote if in normal quote mode, nothing if in manual quote mode
diff -Nrcpad gcc-12.2.0/gcc/ada/errutil.adb gcc-13.1.0/gcc/ada/errutil.adb
*** gcc-12.2.0/gcc/ada/errutil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/errutil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1991-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1991-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Errutil is
*** 208,214 ****
              Prev                => No_Error_Msg,
              Sfile               => Get_Source_File_Index (Sptr),
              Sptr                => To_Span (Sptr),
!             Optr                => Optr,
              Insertion_Sloc      => No_Location,
              Line                => Get_Physical_Line_Number (Sptr),
              Col                 => Get_Column_Number (Sptr),
--- 208,214 ----
              Prev                => No_Error_Msg,
              Sfile               => Get_Source_File_Index (Sptr),
              Sptr                => To_Span (Sptr),
!             Optr                => To_Span (Optr),
              Insertion_Sloc      => No_Location,
              Line                => Get_Physical_Line_Number (Sptr),
              Col                 => Get_Column_Number (Sptr),
diff -Nrcpad gcc-12.2.0/gcc/ada/errutil.ads gcc-13.1.0/gcc/ada/errutil.ads
*** gcc-12.2.0/gcc/ada/errutil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/errutil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/eval_fat.adb gcc-13.1.0/gcc/ada/eval_fat.adb
*** gcc-12.2.0/gcc/ada/eval_fat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/eval_fat.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/eval_fat.ads gcc-13.1.0/gcc/ada/eval_fat.ads
*** gcc-12.2.0/gcc/ada/eval_fat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/eval_fat.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exit.c gcc-13.1.0/gcc/ada/exit.c
*** gcc-12.2.0/gcc/ada/exit.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exit.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_aggr.adb gcc-13.1.0/gcc/ada/exp_aggr.adb
*** gcc-12.2.0/gcc/ada/exp_aggr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_aggr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Eval;       use Sem_Eval;
*** 62,67 ****
--- 62,68 ----
  with Sem_Mech;       use Sem_Mech;
  with Sem_Res;        use Sem_Res;
  with Sem_Util;       use Sem_Util;
+ use Sem_Util.Storage_Model_Support;
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
*************** with Stringt;        use Stringt;
*** 71,79 ****
--- 72,90 ----
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
  with Urealp;         use Urealp;
+ with Warnsw;         use Warnsw;
  
  package body Exp_Aggr is
  
+    function Build_Assignment_With_Temporary
+      (Target : Node_Id;
+       Typ    : Node_Id;
+       Source : Node_Id) return List_Id;
+    --  Returns a list of actions to assign Source to Target of type Typ using
+    --  an extra temporary:
+    --   Tmp := Source;
+    --   Target := Tmp;
+ 
     type Case_Bounds is record
       Choice_Lo   : Node_Id;
       Choice_Hi   : Node_Id;
*************** package body Exp_Aggr is
*** 661,670 ****
  
                    declare
                       UI : constant Uint :=
!                             Expr_Value (Hi) - Expr_Value (Lo) + 1;
                    begin
                       if UI_Is_In_Int_Range (UI) then
!                         return Siz * UI_To_Int (UI);
                       else
                          return Int'Last;
                       end if;
--- 672,681 ----
  
                    declare
                       UI : constant Uint :=
!                             (Expr_Value (Hi) - Expr_Value (Lo) + 1) * Siz;
                    begin
                       if UI_Is_In_Int_Range (UI) then
!                         return UI_To_Int (UI);
                       else
                          return Int'Last;
                       end if;
*************** package body Exp_Aggr is
*** 1916,1921 ****
--- 1927,1934 ----
           Is_Iterated_Component : constant Boolean :=
             Parent_Kind (Expr) = N_Iterated_Component_Association;
  
+          Ent : Entity_Id;
+ 
           L_J : Node_Id;
  
           L_L : Node_Id;
*************** package body Exp_Aggr is
*** 2025,2034 ****
--- 2038,2065 ----
           --  Otherwise construct the loop, starting with the loop index L_J
  
           if Is_Iterated_Component then
+ 
+             --  Create a new scope for the loop variable so that the
+             --  following Gen_Assign (that ends up calling
+             --  Preanalyze_And_Resolve) can correctly find it.
+ 
+             Ent := New_Internal_Entity (E_Loop,
+                  Current_Scope, Loc, 'L');
+             Set_Etype  (Ent, Standard_Void_Type);
+             Set_Parent (Ent, Parent (Parent (Expr)));
+             Push_Scope (Ent);
+ 
              L_J :=
                Make_Defining_Identifier (Loc,
                  Chars => (Chars (Defining_Identifier (Parent (Expr)))));
  
+             Enter_Name (L_J);
+ 
+             --  The Etype will be set by a later Analyze call.
+             Set_Etype (L_J, Any_Type);
+ 
+             Mutate_Ekind (L_J, E_Variable);
+             Set_Scope (L_J, Ent);
           else
              L_J := Make_Temporary (Loc, 'J', L);
           end if;
*************** package body Exp_Aggr is
*** 2038,2044 ****
           --  to do that if we already have the base type at hand.
  
           if Etype (L) = Index_Base then
!             L_L := L;
           else
              L_L :=
                Make_Qualified_Expression (Loc,
--- 2069,2075 ----
           --  to do that if we already have the base type at hand.
  
           if Etype (L) = Index_Base then
!             L_L := New_Copy_Tree (L);
           else
              L_L :=
                Make_Qualified_Expression (Loc,
*************** package body Exp_Aggr is
*** 2047,2053 ****
           end if;
  
           if Etype (H) = Index_Base then
!             L_H := H;
           else
              L_H :=
                Make_Qualified_Expression (Loc,
--- 2078,2084 ----
           end if;
  
           if Etype (H) = Index_Base then
!             L_H := New_Copy_Tree (H);
           else
              L_H :=
                Make_Qualified_Expression (Loc,
*************** package body Exp_Aggr is
*** 2083,2088 ****
--- 2114,2123 ----
                Iteration_Scheme => L_Iteration_Scheme,
                Statements       => L_Body));
  
+          if Is_Iterated_Component then
+             End_Scope;
+          end if;
+ 
           --  A small optimization: if the aggregate is initialized with a box
           --  and the component type has no initialization procedure, remove the
           --  useless empty loop.
*************** package body Exp_Aggr is
*** 2256,2263 ****
  
        New_Code : constant List_Id := New_List;
  
!       Aggr_L : constant Node_Id := Low_Bound (Aggregate_Bounds (N));
!       Aggr_H : constant Node_Id := High_Bound (Aggregate_Bounds (N));
        --  The aggregate bounds of this specific subaggregate. Note that if the
        --  code generated by Build_Array_Aggr_Code is executed then these bounds
        --  are OK. Otherwise a Constraint_Error would have been raised.
--- 2291,2300 ----
  
        New_Code : constant List_Id := New_List;
  
!       Aggr_Bounds : constant Range_Nodes :=
!         Get_Index_Bounds (Aggregate_Bounds (N));
!       Aggr_L : Node_Id renames Aggr_Bounds.First;
!       Aggr_H : Node_Id renames Aggr_Bounds.Last;
        --  The aggregate bounds of this specific subaggregate. Note that if the
        --  code generated by Build_Array_Aggr_Code is executed then these bounds
        --  are OK. Otherwise a Constraint_Error would have been raised.
*************** package body Exp_Aggr is
*** 2481,2486 ****
--- 2518,2559 ----
        return New_Code;
     end Build_Array_Aggr_Code;
  
+    -------------------------------------
+    -- Build_Assignment_With_Temporary --
+    -------------------------------------
+ 
+    function Build_Assignment_With_Temporary
+      (Target : Node_Id;
+       Typ    : Node_Id;
+       Source : Node_Id) return List_Id
+    is
+       Loc : constant Source_Ptr := Sloc (Source);
+ 
+       Aggr_Code : List_Id;
+       Tmp       : Entity_Id;
+       Tmp_Decl  : Node_Id;
+ 
+    begin
+       Tmp := Make_Temporary (Loc, 'A', Source);
+       Tmp_Decl :=
+         Make_Object_Declaration (Loc,
+           Defining_Identifier => Tmp,
+           Object_Definition   => New_Occurrence_Of (Typ, Loc));
+       Set_No_Initialization (Tmp_Decl, True);
+ 
+       Aggr_Code := New_List (Tmp_Decl);
+       Append_To (Aggr_Code,
+         Make_OK_Assignment_Statement (Loc,
+           Name       => New_Occurrence_Of (Tmp, Loc),
+           Expression => Source));
+ 
+       Append_To (Aggr_Code,
+         Make_OK_Assignment_Statement (Loc,
+           Name       => Target,
+           Expression => New_Occurrence_Of (Tmp, Loc)));
+       return Aggr_Code;
+    end Build_Assignment_With_Temporary;
+ 
     ----------------------------
     -- Build_Record_Aggr_Code --
     ----------------------------
*************** package body Exp_Aggr is
*** 2553,2559 ****
        --  If Typ is derived, and constrains discriminants of the parent type,
        --  these discriminants are not components of the aggregate, and must be
        --  initialized. The assignments are appended to List. The same is done
!       --  if Typ derives fron an already constrained subtype of a discriminated
        --  parent type.
  
        procedure Init_Stored_Discriminants;
--- 2626,2632 ----
        --  If Typ is derived, and constrains discriminants of the parent type,
        --  these discriminants are not components of the aggregate, and must be
        --  initialized. The assignments are appended to List. The same is done
!       --  if Typ derives from an already constrained subtype of a discriminated
        --  parent type.
  
        procedure Init_Stored_Discriminants;
*************** package body Exp_Aggr is
*** 4487,4501 ****
           New_Aggr := New_Copy_Tree (Aggr);
           Set_Expansion_Delayed (New_Aggr, False);
  
!          Aggr_Code :=
!            New_List (
!              Make_OK_Assignment_Statement (Sloc (New_Aggr),
!                Name       => Target,
!                Expression => New_Aggr));
  
        --  Or else, generate component assignments to it, as for an aggregate
        --  that appears on the right-hand side of an assignment statement.
- 
        else
           Aggr_Code :=
             Build_Array_Aggr_Code (Aggr,
--- 4560,4588 ----
           New_Aggr := New_Copy_Tree (Aggr);
           Set_Expansion_Delayed (New_Aggr, False);
  
!          --  In the case of Target's type using the Designated_Storage_Model
!          --  aspect with a Copy_To procedure, insert a temporary and have the
!          --  back end handle the assignment to it. Copy the result to the
!          --  original target.
! 
!          if Has_Designated_Storage_Model_Aspect
!               (Etype (Prefix (Expression (Target))))
!            and then Present (Storage_Model_Copy_To
!                                (Storage_Model_Object
!                                   (Etype (Prefix (Expression (Target))))))
!          then
!             Aggr_Code := Build_Assignment_With_Temporary (Target,
!                            Typ, New_Aggr);
!          else
!             Aggr_Code :=
!               New_List (
!                 Make_OK_Assignment_Statement (Sloc (New_Aggr),
!                   Name       => Target,
!                   Expression => New_Aggr));
!          end if;
  
        --  Or else, generate component assignments to it, as for an aggregate
        --  that appears on the right-hand side of an assignment statement.
        else
           Aggr_Code :=
             Build_Array_Aggr_Code (Aggr,
*************** package body Exp_Aggr is
*** 5202,5207 ****
--- 5289,5299 ----
           Others_Present := False;
  
           if Present (Component_Associations (N)) then
+             if Is_Empty_List (Component_Associations (N)) then
+                --  an expanded null array aggregate
+                return False;
+             end if;
+ 
              declare
                 Assoc   : Node_Id;
                 Choice  : Node_Id;
*************** package body Exp_Aggr is
*** 5703,5709 ****
  
        procedure Check_Bounds (Aggr_Bounds_Node, Index_Bounds_Node : Node_Id);
        --  Checks that the bounds of Aggr_Bounds are within the bounds defined
!       --  by Index_Bounds.
  
        procedure Check_Same_Aggr_Bounds (Sub_Aggr : Node_Id; Dim : Pos);
        --  Checks that in a multidimensional array aggregate all subaggregates
--- 5795,5802 ----
  
        procedure Check_Bounds (Aggr_Bounds_Node, Index_Bounds_Node : Node_Id);
        --  Checks that the bounds of Aggr_Bounds are within the bounds defined
!       --  by Index_Bounds. For null array aggregate (Ada 2022) check that the
!       --  aggregate bounds define a null range.
  
        procedure Check_Same_Aggr_Bounds (Sub_Aggr : Node_Id; Dim : Pos);
        --  Checks that in a multidimensional array aggregate all subaggregates
*************** package body Exp_Aggr is
*** 5819,5824 ****
--- 5912,5933 ----
           Cond : Node_Id := Empty;
  
        begin
+          --  For a null array aggregate check that high bound (i.e., low
+          --  bound predecessor) exists. Fail if low bound is low bound of
+          --  base subtype (in all cases, including modular).
+ 
+          if Is_Null_Aggregate (N) then
+             Insert_Action (N,
+               Make_Raise_Constraint_Error (Loc,
+                 Condition =>
+                   Make_Op_Eq (Loc,
+                     New_Copy_Tree (Aggr_Bounds.First),
+                     New_Copy_Tree
+                       (Type_Low_Bound (Base_Type (Etype (Ind_Bounds.First))))),
+                 Reason    => CE_Range_Check_Failed));
+             return;
+          end if;
+ 
           --  Generate the following test:
  
           --    [constraint_error when
*************** package body Exp_Aggr is
*** 5890,5897 ****
        ----------------------------
  
        procedure Check_Same_Aggr_Bounds (Sub_Aggr : Node_Id; Dim : Pos) is
!          Sub_Lo : constant Node_Id := Low_Bound (Aggregate_Bounds (Sub_Aggr));
!          Sub_Hi : constant Node_Id := High_Bound (Aggregate_Bounds (Sub_Aggr));
           --  The bounds of this specific subaggregate
  
           Aggr_Lo : constant Node_Id := Aggr_Low (Dim);
--- 5999,6008 ----
        ----------------------------
  
        procedure Check_Same_Aggr_Bounds (Sub_Aggr : Node_Id; Dim : Pos) is
!          Sub_Bounds : constant Range_Nodes
!            := Get_Index_Bounds (Aggregate_Bounds (Sub_Aggr));
!          Sub_Lo : Node_Id renames Sub_Bounds.First;
!          Sub_Hi : Node_Id renames Sub_Bounds.Last;
           --  The bounds of this specific subaggregate
  
           Aggr_Lo : constant Node_Id := Aggr_Low (Dim);
*************** package body Exp_Aggr is
*** 5995,6001 ****
           if Present (Component_Associations (Sub_Aggr)) then
              Assoc := Last (Component_Associations (Sub_Aggr));
  
!             if Nkind (First (Choice_List (Assoc))) = N_Others_Choice then
                 Others_Present (Dim) := True;
  
                 --  An others_clause may be superfluous if previous components
--- 6106,6114 ----
           if Present (Component_Associations (Sub_Aggr)) then
              Assoc := Last (Component_Associations (Sub_Aggr));
  
!             if Present (Assoc)
!               and then Nkind (First (Choice_List (Assoc))) = N_Others_Choice
!             then
                 Others_Present (Dim) := True;
  
                 --  An others_clause may be superfluous if previous components
*************** package body Exp_Aggr is
*** 6083,6089 ****
           elsif Present (Expressions (Sub_Aggr))
             and then Present (Component_Associations (Sub_Aggr))
           then
!             Need_To_Check := True;
  
           elsif Present (Component_Associations (Sub_Aggr)) then
              Assoc := Last (Component_Associations (Sub_Aggr));
--- 6196,6205 ----
           elsif Present (Expressions (Sub_Aggr))
             and then Present (Component_Associations (Sub_Aggr))
           then
!             Need_To_Check :=
!               not (Is_Empty_List (Expressions (Sub_Aggr))
!                     and then Is_Empty_List
!                                (Component_Associations (Sub_Aggr)));
  
           elsif Present (Component_Associations (Sub_Aggr)) then
              Assoc := Last (Component_Associations (Sub_Aggr));
*************** package body Exp_Aggr is
*** 6392,6398 ****
                           Left_Opnd  => New_Occurrence_Of (Size_Id, Loc),
                           Right_Opnd => Make_Integer_Literal (Loc, 1)));
  
!             One_Loop := Make_Loop_Statement (Loc,
                Iteration_Scheme =>
                  Make_Iteration_Scheme (Loc,
                    Iterator_Specification => New_Copy_Tree (Iter)),
--- 6508,6514 ----
                           Left_Opnd  => New_Occurrence_Of (Size_Id, Loc),
                           Right_Opnd => Make_Integer_Literal (Loc, 1)));
  
!             One_Loop := Make_Implicit_Loop_Statement (N,
                Iteration_Scheme =>
                  Make_Iteration_Scheme (Loc,
                    Iterator_Specification => New_Copy_Tree (Iter)),
*************** package body Exp_Aggr is
*** 6498,6504 ****
                      Prefix => New_Occurrence_Of (TmpE, Loc),
                      Expressions =>
                        New_List (New_Occurrence_Of (Index_Id, Loc))),
!                Expression => New_Copy_Tree (Expression (Assoc)));
  
              --  Advance index position for insertion.
  
--- 6614,6620 ----
                      Prefix => New_Occurrence_Of (TmpE, Loc),
                      Expressions =>
                        New_List (New_Occurrence_Of (Index_Id, Loc))),
!                Expression => Copy_Separate_Tree (Expression (Assoc)));
  
              --  Advance index position for insertion.
  
*************** package body Exp_Aggr is
*** 6524,6530 ****
                        Attribute_Name => Name_Last)),
                 Then_Statements => New_List (Incr));
  
!             One_Loop := Make_Loop_Statement (Loc,
                Iteration_Scheme =>
                  Make_Iteration_Scheme (Loc,
                    Iterator_Specification => Copy_Separate_Tree (Iter)),
--- 6640,6646 ----
                        Attribute_Name => Name_Last)),
                 Then_Statements => New_List (Incr));
  
!             One_Loop := Make_Implicit_Loop_Statement (N,
                Iteration_Scheme =>
                  Make_Iteration_Scheme (Loc,
                    Iterator_Specification => Copy_Separate_Tree (Iter)),
*************** package body Exp_Aggr is
*** 6565,6585 ****
        then
           return;
  
-       --  Do not expand an aggregate for an array type which contains tasks if
-       --  the aggregate is associated with an unexpanded return statement of a
-       --  build-in-place function. The aggregate is expanded when the related
-       --  return statement (rewritten into an extended return) is processed.
-       --  This delay ensures that any temporaries and initialization code
-       --  generated for the aggregate appear in the proper return block and
-       --  use the correct _chain and _master.
- 
-       elsif Has_Task (Base_Type (Etype (N)))
-         and then Nkind (Parent (N)) = N_Simple_Return_Statement
-         and then Is_Build_In_Place_Function
-                    (Return_Applies_To (Return_Statement_Entity (Parent (N))))
-       then
-          return;
- 
        elsif Present (Component_Associations (N))
          and then Nkind (First (Component_Associations (N))) =
                   N_Iterated_Component_Association
--- 6681,6686 ----
*************** package body Exp_Aggr is
*** 6642,6649 ****
              --  Save the low and high bounds of the aggregate index as well as
              --  the index type for later use in checks (b) and (c) below.
  
!             Aggr_Low  (J) := Low_Bound (Aggr_Index_Range);
!             Aggr_High (J) := High_Bound (Aggr_Index_Range);
  
              Aggr_Index_Typ (J) := Etype (Index_Constraint);
  
--- 6743,6750 ----
              --  Save the low and high bounds of the aggregate index as well as
              --  the index type for later use in checks (b) and (c) below.
  
!             Get_Index_Bounds
!               (Aggr_Index_Range, L => Aggr_Low (J), H => Aggr_High (J));
  
              Aggr_Index_Typ (J) := Etype (Index_Constraint);
  
*************** package body Exp_Aggr is
*** 6799,6805 ****
          or else Parent_Kind = N_Extension_Aggregate
          or else Parent_Kind = N_Component_Association
          or else (Parent_Kind = N_Object_Declaration
!                   and then Needs_Finalization (Typ))
          or else (Parent_Kind = N_Assignment_Statement
                    and then Inside_Init_Proc)
        then
--- 6900,6908 ----
          or else Parent_Kind = N_Extension_Aggregate
          or else Parent_Kind = N_Component_Association
          or else (Parent_Kind = N_Object_Declaration
!                   and then (Needs_Finalization (Typ)
!                              or else Is_Special_Return_Object
!                                        (Defining_Identifier (Parent_Node))))
          or else (Parent_Kind = N_Assignment_Statement
                    and then Inside_Init_Proc)
        then
*************** package body Exp_Aggr is
*** 7022,7037 ****
             and then not Is_Possibly_Unaligned_Slice (Target)
             and then Aggr_Assignment_OK_For_Backend (N)
           then
-             if Maybe_In_Place_OK then
-                return;
-             end if;
  
!             Aggr_Code :=
!               New_List (
!                 Make_Assignment_Statement (Loc,
!                   Name       => Target,
!                   Expression => New_Copy_Tree (N)));
  
           else
              Aggr_Code :=
                Build_Array_Aggr_Code (N,
--- 7125,7158 ----
             and then not Is_Possibly_Unaligned_Slice (Target)
             and then Aggr_Assignment_OK_For_Backend (N)
           then
  
!             --  In the case of an assignment using an access with the
!             --  Designated_Storage_Model aspect with a Copy_To procedure,
!             --  insert a temporary and have the back end handle the assignment
!             --  to it. Copy the result to the original target.
! 
!             if Parent_Kind = N_Assignment_Statement
!               and then Nkind (Name (Parent_Node)) = N_Explicit_Dereference
!               and then Has_Designated_Storage_Model_Aspect
!                          (Etype (Prefix (Name (Parent_Node))))
!               and then Present (Storage_Model_Copy_To
!                                   (Storage_Model_Object
!                                      (Etype (Prefix (Name (Parent_Node))))))
!             then
!                Aggr_Code := Build_Assignment_With_Temporary (Target,
!                               Typ, New_Copy_Tree (N));
!             else
!                if Maybe_In_Place_OK then
!                   return;
!                end if;
  
+                Aggr_Code :=
+                  New_List (
+                    Make_Assignment_Statement (Loc,
+                      Name       => Target,
+                      Expression => New_Copy_Tree (N)));
+ 
+             end if;
           else
              Aggr_Code :=
                Build_Array_Aggr_Code (N,
*************** package body Exp_Aggr is
*** 7156,7170 ****
                 MX : constant         := 80;
  
              begin
!                if Nkind (First (Choice_List (CA))) = N_Others_Choice
                   and then Nkind (Expression (CA)) = N_Character_Literal
                   and then No (Expressions (N))
                 then
                    declare
!                      X  : constant Node_Id := First_Index (T);
!                      EC : constant Node_Id := Expression (CA);
!                      CV : constant Uint    := Char_Literal_Value (EC);
!                      CC : constant Int     := UI_To_Int (CV);
  
                    begin
                       if Nkind (X) = N_Range
--- 7277,7292 ----
                 MX : constant         := 80;
  
              begin
!                if Present (CA)
!                  and then Nkind (First (Choice_List (CA))) = N_Others_Choice
                   and then Nkind (Expression (CA)) = N_Character_Literal
                   and then No (Expressions (N))
                 then
                    declare
!                      X  : constant Node_Id   := First_Index (T);
!                      EC : constant Node_Id   := Expression (CA);
!                      CV : constant Uint      := Char_Literal_Value (EC);
!                      CC : constant Char_Code := UI_To_CC (CV);
  
                    begin
                       if Nkind (X) = N_Range
*************** package body Exp_Aggr is
*** 7180,7196 ****
                                Start_String;
  
                                for J in 1 .. UI_To_Int (Hi) loop
!                                  Store_String_Char (Char_Code (CC));
                                end loop;
  
                                Rewrite (N,
                                  Make_String_Literal (Sloc (N),
                                    Strval => End_String));
  
!                               if CC >= Int (2 ** 16) then
!                                  Set_Has_Wide_Wide_Character (N);
!                               elsif CC >= Int (2 ** 8) then
                                   Set_Has_Wide_Character (N);
                                end if;
  
                                Analyze_And_Resolve (N, T);
--- 7302,7320 ----
                                Start_String;
  
                                for J in 1 .. UI_To_Int (Hi) loop
!                                  Store_String_Char (CC);
                                end loop;
  
                                Rewrite (N,
                                  Make_String_Literal (Sloc (N),
                                    Strval => End_String));
  
!                               if In_Character_Range (CC) then
!                                  null;
!                               elsif In_Wide_Character_Range (CC) then
                                   Set_Has_Wide_Character (N);
+                               else
+                                  Set_Has_Wide_Wide_Character (N);
                                end if;
  
                                Analyze_And_Resolve (N, T);
*************** package body Exp_Aggr is
*** 7472,7482 ****
  
              --  Iterated_Component_Association.
  
-             Loop_Id :=
-               Make_Defining_Identifier (Loc,
-                 Chars => Chars (Defining_Identifier (Comp)));
- 
              if Present (Iterator_Specification (Comp)) then
                 L_Iteration_Scheme :=
                   Make_Iteration_Scheme (Loc,
                     Iterator_Specification => Iterator_Specification (Comp));
--- 7596,7606 ----
  
              --  Iterated_Component_Association.
  
              if Present (Iterator_Specification (Comp)) then
+                Loop_Id :=
+                  Make_Defining_Identifier (Loc,
+                    Chars => Chars (Defining_Identifier
+                               (Iterator_Specification (Comp))));
                 L_Iteration_Scheme :=
                   Make_Iteration_Scheme (Loc,
                     Iterator_Specification => Iterator_Specification (Comp));
*************** package body Exp_Aggr is
*** 7485,7490 ****
--- 7609,7617 ----
                 --  Loop_Parameter_Specification is parsed with a choice list.
                 --  where the range is the first (and only) choice.
  
+                Loop_Id :=
+                  Make_Defining_Identifier (Loc,
+                    Chars => Chars (Defining_Identifier (Comp)));
                 L_Range := Relocate_Node (First (Discrete_Choices (Comp)));
  
                 L_Iteration_Scheme :=
*************** package body Exp_Aggr is
*** 7542,7548 ****
  
        end Expand_Iterated_Component;
  
!       --  Start of processing for Expand_Container_Aggregate
  
     begin
        Parse_Aspect_Aggregate (Asp,
--- 7669,7675 ----
  
        end Expand_Iterated_Component;
  
!    --  Start of processing for Expand_Container_Aggregate
  
     begin
        Parse_Aspect_Aggregate (Asp,
*************** package body Exp_Aggr is
*** 7969,7975 ****
           end if;
  
           return
!            Make_Loop_Statement (Loc,
               Iteration_Scheme =>
                 Make_Iteration_Scheme (Sl,
                   Loop_Parameter_Specification =>
--- 8096,8102 ----
           end if;
  
           return
!            Make_Implicit_Loop_Statement (C,
               Iteration_Scheme =>
                 Make_Iteration_Scheme (Sl,
                   Loop_Parameter_Specification =>
*************** package body Exp_Aggr is
*** 8433,8443 ****
                    Parent_Name  : Node_Id;
  
                 begin
-                   --  Remove the inherited component association from the
-                   --  aggregate and store them in the parent aggregate
- 
                    First_Comp   := First (Component_Associations (N));
                    Parent_Comps := New_List;
                    while Present (First_Comp)
                      and then
                        Scope (Original_Record_Component
--- 8560,8580 ----
                    Parent_Name  : Node_Id;
  
                 begin
                    First_Comp   := First (Component_Associations (N));
                    Parent_Comps := New_List;
+ 
+                   --  First skip the discriminants
+ 
+                   while Present (First_Comp)
+                     and then Ekind (Entity (First (Choices (First_Comp))))
+                                                                = E_Discriminant
+                   loop
+                      Next (First_Comp);
+                   end loop;
+ 
+                   --  Then remove the inherited component association from the
+                   --  aggregate and store them in the parent aggregate
+ 
                    while Present (First_Comp)
                      and then
                        Scope (Original_Record_Component
*************** package body Exp_Aggr is
*** 8741,8759 ****
     --  Start of processing for Expand_Record_Aggregate
  
     begin
-       --  If the aggregate is to be assigned to a full access variable, we have
-       --  to prevent a piecemeal assignment even if the aggregate is to be
-       --  expanded. We create a temporary for the aggregate, and assign the
-       --  temporary instead, so that the back end can generate an atomic move
-       --  for it.
- 
-       if Is_Full_Access_Aggregate (N) then
-          return;
- 
        --  No special management required for aggregates used to initialize
        --  statically allocated dispatch tables
  
!       elsif Is_Static_Dispatch_Table_Aggregate (N) then
           return;
  
        --  Case pattern aggregates need to remain as aggregates
--- 8878,8887 ----
     --  Start of processing for Expand_Record_Aggregate
  
     begin
        --  No special management required for aggregates used to initialize
        --  statically allocated dispatch tables
  
!       if Is_Static_Dispatch_Table_Aggregate (N) then
           return;
  
        --  Case pattern aggregates need to remain as aggregates
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_aggr.ads gcc-13.1.0/gcc/ada/exp_aggr.ads
*** gcc-12.2.0/gcc/ada/exp_aggr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_aggr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_atag.adb gcc-13.1.0/gcc/ada/exp_atag.adb
*** gcc-12.2.0/gcc/ada/exp_atag.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_atag.adb	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
  --                                                                          --
  --                             E X P _ A T A G                              --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 4,12 ----
  --                                                                          --
  --                             E X P _ A T A G                              --
  --                                                                          --
! --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Atag is
*** 312,318 ****
  
           if not Is_Predefined_Dispatching_Operation (Prim)
             and then not Is_Predefined_Dispatching_Operation (E)
!            and then not Present (Interface_Alias (Prim))
             and then not Is_Abstract_Subprogram (E)
             and then not Is_Eliminated (E)
             and then Prim_Pos <= CPP_Nb_Prims
--- 312,318 ----
  
           if not Is_Predefined_Dispatching_Operation (Prim)
             and then not Is_Predefined_Dispatching_Operation (E)
!            and then No (Interface_Alias (Prim))
             and then not Is_Abstract_Subprogram (E)
             and then not Is_Eliminated (E)
             and then Prim_Pos <= CPP_Nb_Prims
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_atag.ads gcc-13.1.0/gcc/ada/exp_atag.ads
*** gcc-12.2.0/gcc/ada/exp_atag.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_atag.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_attr.adb gcc-13.1.0/gcc/ada/exp_attr.adb
*** gcc-12.2.0/gcc/ada/exp_attr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_attr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,31 ****
--- 23,33 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
+ with Debug;          use Debug;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
*************** package body Exp_Attr is
*** 888,893 ****
--- 890,900 ----
           --  special stream-processing operations for that type (for example
           --  Unbounded_String and its wide varieties).
  
+          --  We don't install the package either if array type and element
+          --  type come from the same package, and the original array type is
+          --  private, because in this case the underlying type Arr is
+          --  itself a full view, which carries the full view of the component.
+ 
           Scop := Scope (C_Type);
  
           if Is_Private_Type (C_Type)
*************** package body Exp_Attr is
*** 896,902 ****
             and then Ekind (Scop) = E_Package
             and then No (Get_Stream_Convert_Pragma (C_Type))
           then
!             Install := True;
           end if;
        end if;
  
--- 903,917 ----
             and then Ekind (Scop) = E_Package
             and then No (Get_Stream_Convert_Pragma (C_Type))
           then
!             if Scope (Arr) = Scope (C_Type)
!               and then Is_Private_Type (Etype (Prefix (N)))
!               and then Full_View (Etype (Prefix (N))) = Arr
!             then
!                null;
! 
!             else
!                Install := True;
!             end if;
           end if;
        end if;
  
*************** package body Exp_Attr is
*** 1779,1801 ****
           Push_Scope (Scope (Loop_Id));
        end if;
  
!       --  The analysis of the conditional block takes care of the constant
!       --  declaration.
! 
!       if Present (Result) then
!          Rewrite (Loop_Stmt, Result);
!          Analyze (Loop_Stmt);
  
!       --  The conditional block was analyzed when a previous 'Loop_Entry was
!       --  expanded. There is no point in reanalyzing the block, simply analyze
!       --  the declaration of the constant.
  
-       else
           if Present (Aux_Decl) then
              Analyze (Aux_Decl);
           end if;
  
           Analyze (Temp_Decl);
        end if;
  
        Rewrite (N, New_Occurrence_Of (Temp_Id, Loc));
--- 1794,1823 ----
           Push_Scope (Scope (Loop_Id));
        end if;
  
!       --  Analyze constant declaration with simple value propagation disabled,
!       --  because the values at the loop entry might be different than the
!       --  values at the occurrence of Loop_Entry attribute.
  
!       declare
!          Save_Debug_Flag_MM : constant Boolean := Debug_Flag_MM;
!       begin
!          Debug_Flag_MM := True;
  
           if Present (Aux_Decl) then
              Analyze (Aux_Decl);
           end if;
  
           Analyze (Temp_Decl);
+ 
+          Debug_Flag_MM := Save_Debug_Flag_MM;
+       end;
+ 
+       --  If the conditional block has just been created, then analyze it;
+       --  otherwise it was analyzed when a previous 'Loop_Entry was expanded.
+ 
+       if Present (Result) then
+          Rewrite (Loop_Stmt, Result);
+          Analyze (Loop_Stmt);
        end if;
  
        Rewrite (N, New_Occurrence_Of (Temp_Id, Loc));
*************** package body Exp_Attr is
*** 1977,1992 ****
     --  Start of processing for Expand_N_Attribute_Reference
  
     begin
!       --  Do required validity checking, if enabled. Do not apply check to
!       --  output parameters of an Asm instruction, since the value of this
!       --  is not set till after the attribute has been elaborated, and do
!       --  not apply the check to the arguments of a 'Read or 'Input attribute
!       --  reference since the scalar argument is an OUT scalar.
  
        if Validity_Checks_On and then Validity_Check_Operands
          and then Id /= Attribute_Asm_Output
          and then Id /= Attribute_Read
!         and then Id /= Attribute_Input
        then
           declare
              Expr : Node_Id;
--- 1999,2019 ----
     --  Start of processing for Expand_N_Attribute_Reference
  
     begin
!       --  Do required validity checking, if enabled.
!       --
!       --  Skip check for output parameters of an Asm instruction (since their
!       --  valuesare not set till after the attribute has been elaborated),
!       --  for the arguments of a 'Read attribute reference (since the
!       --  scalar argument is an OUT scalar) and for the arguments of a
!       --  'Has_Same_Storage or 'Overlaps_Storage attribute reference (which not
!       --  considered to be reads of their prefixes and expressions, see Ada RM
!       --  13.3(73.10/3)).
  
        if Validity_Checks_On and then Validity_Check_Operands
          and then Id /= Attribute_Asm_Output
          and then Id /= Attribute_Read
!         and then Id /= Attribute_Has_Same_Storage
!         and then Id /= Attribute_Overlaps_Storage
        then
           declare
              Expr : Node_Id;
*************** package body Exp_Attr is
*** 2058,2064 ****
  
        case Id is
  
!       --  Attributes related to Ada 2012 iterators
  
        when Attribute_Constant_Indexing
           | Attribute_Default_Iterator
--- 2085,2092 ----
  
        case Id is
  
!       --  Attributes related to Ada 2012 iterators. They are only allowed in
!       --  attribute definition clauses and should never be expanded.
  
        when Attribute_Constant_Indexing
           | Attribute_Default_Iterator
*************** package body Exp_Attr is
*** 2067,2073 ****
           | Attribute_Iterator_Element
           | Attribute_Variable_Indexing
        =>
!          null;
  
        --  Internal attributes used to deal with Ada 2012 delayed aspects. These
        --  were already rejected by the parser. Thus they shouldn't appear here.
--- 2095,2101 ----
           | Attribute_Iterator_Element
           | Attribute_Variable_Indexing
        =>
!          raise Program_Error;
  
        --  Internal attributes used to deal with Ada 2012 delayed aspects. These
        --  were already rejected by the parser. Thus they shouldn't appear here.
*************** package body Exp_Attr is
*** 2087,2098 ****
--- 2115,2200 ----
              Ref_Object : constant Node_Id := Get_Referenced_Object (Pref);
              Btyp_DDT   : Entity_Id;
  
+             procedure Add_Implicit_Interface_Type_Conversion;
+             --  Ada 2005 (AI-251): The designated type is an interface type;
+             --  add an implicit type conversion to force the displacement of
+             --  the pointer to reference the secondary dispatch table.
+ 
              function Enclosing_Object (N : Node_Id) return Node_Id;
              --  If N denotes a compound name (selected component, indexed
              --  component, or slice), returns the name of the outermost such
              --  enclosing object. Otherwise returns N. If the object is a
              --  renaming, then the renamed object is returned.
  
+             --------------------------------------------
+             -- Add_Implicit_Interface_Type_Conversion --
+             --------------------------------------------
+ 
+             procedure Add_Implicit_Interface_Type_Conversion is
+             begin
+                pragma Assert (Is_Interface (Btyp_DDT));
+ 
+                --  Handle cases were no action is required.
+ 
+                if not Comes_From_Source (N)
+                  and then not Comes_From_Source (Ref_Object)
+                  and then (Nkind (Ref_Object) not in N_Has_Chars
+                              or else Chars (Ref_Object) /= Name_uInit)
+                then
+                   return;
+                end if;
+ 
+                --  Common case
+ 
+                if Nkind (Ref_Object) /= N_Explicit_Dereference then
+ 
+                   --  No implicit conversion required if types match, or if
+                   --  the prefix is the class_wide_type of the interface. In
+                   --  either case passing an object of the interface type has
+                   --  already set the pointer correctly.
+ 
+                   if Btyp_DDT = Etype (Ref_Object)
+                     or else
+                       (Is_Class_Wide_Type (Etype (Ref_Object))
+                          and then
+                        Class_Wide_Type (Btyp_DDT) = Etype (Ref_Object))
+                   then
+                      null;
+ 
+                   else
+                      Rewrite (Prefix (N),
+                        Convert_To (Btyp_DDT,
+                          New_Copy_Tree (Prefix (N))));
+ 
+                      Analyze_And_Resolve (Prefix (N), Btyp_DDT);
+                   end if;
+ 
+                --  When the object is an explicit dereference, convert the
+                --  dereference's prefix.
+ 
+                else
+                   declare
+                      Obj_DDT : constant Entity_Id :=
+                                  Base_Type
+                                    (Directly_Designated_Type
+                                      (Etype (Prefix (Ref_Object))));
+                   begin
+                      --  No implicit conversion required if designated types
+                      --  match.
+ 
+                      if Obj_DDT /= Btyp_DDT
+                        and then not (Is_Class_Wide_Type (Obj_DDT)
+                                       and then Etype (Obj_DDT) = Btyp_DDT)
+                      then
+                         Rewrite (N,
+                           Convert_To (Typ,
+                             New_Copy_Tree (Prefix (Ref_Object))));
+                         Analyze_And_Resolve (N, Typ);
+                      end if;
+                   end;
+                end if;
+             end Add_Implicit_Interface_Type_Conversion;
+ 
              ----------------------
              -- Enclosing_Object --
              ----------------------
*************** package body Exp_Attr is
*** 2114,2126 ****
  
              --  Local declarations
  
!             Enc_Object : constant Node_Id := Enclosing_Object (Ref_Object);
  
           --  Start of processing for Access_Cases
  
           begin
              Btyp_DDT := Designated_Type (Btyp);
  
              --  Handle designated types that come from the limited view
  
              if From_Limited_With (Btyp_DDT)
--- 2216,2240 ----
  
              --  Local declarations
  
!             Enc_Object : Node_Id := Enclosing_Object (Ref_Object);
  
           --  Start of processing for Access_Cases
  
           begin
              Btyp_DDT := Designated_Type (Btyp);
  
+             --  When Enc_Object is a view conversion then RM 3.10.2 (9)
+             --  applies and we obtain the expression being converted.
+             --  Otherwise we do not dig any deeper since a conversion
+             --  might generate a copy and we can't assume it will be as
+             --  long-lived as the original.
+ 
+             while Nkind (Enc_Object) = N_Type_Conversion
+               and then Is_View_Conversion (Enc_Object)
+             loop
+                Enc_Object := Expression (Enc_Object);
+             end loop;
+ 
              --  Handle designated types that come from the limited view
  
              if From_Limited_With (Btyp_DDT)
*************** package body Exp_Attr is
*** 2215,2233 ****
              if Is_Access_Protected_Subprogram_Type (Btyp) then
                 Expand_Access_To_Protected_Op (N, Pref, Typ);
  
-             --  If prefix is a subprogram that has class-wide preconditions and
-             --  an indirect-call wrapper (ICW) of such subprogram is available
-             --  then replace the prefix by the ICW.
- 
              elsif Is_Access_Subprogram_Type (Btyp)
                and then Is_Entity_Name (Pref)
-               and then Present (Class_Preconditions (Entity (Pref)))
-               and then Present (Indirect_Call_Wrapper (Entity (Pref)))
              then
!                Rewrite (Pref,
!                  New_Occurrence_Of
!                    (Indirect_Call_Wrapper (Entity (Pref)), Loc));
!                Analyze_And_Resolve (N, Typ);
  
              --  If prefix is a type name, this is a reference to the current
              --  instance of the type, within its initialization procedure.
--- 2329,2368 ----
              if Is_Access_Protected_Subprogram_Type (Btyp) then
                 Expand_Access_To_Protected_Op (N, Pref, Typ);
  
              elsif Is_Access_Subprogram_Type (Btyp)
                and then Is_Entity_Name (Pref)
              then
!                --  If prefix is a subprogram that has class-wide preconditions
!                --  and an indirect-call wrapper (ICW) of the subprogram is
!                --  available then replace the prefix by the ICW.
! 
!                if Present (Class_Preconditions (Entity (Pref)))
!                  and then Present (Indirect_Call_Wrapper (Entity (Pref)))
!                then
!                   Rewrite (Pref,
!                     New_Occurrence_Of
!                       (Indirect_Call_Wrapper (Entity (Pref)), Loc));
!                   Analyze_And_Resolve (N, Typ);
!                end if;
! 
!                --  Ensure the availability of the extra formals to check that
!                --  they match.
! 
!                if not Is_Frozen (Entity (Pref))
!                  or else From_Limited_With (Etype (Entity (Pref)))
!                then
!                   Create_Extra_Formals (Entity (Pref));
!                end if;
! 
!                if not Is_Frozen (Btyp_DDT)
!                  or else From_Limited_With (Etype (Btyp_DDT))
!                then
!                   Create_Extra_Formals (Btyp_DDT);
!                end if;
! 
!                pragma Assert
!                  (Extra_Formals_Match_OK
!                    (E => Entity (Pref), Ref_E => Btyp_DDT));
  
              --  If prefix is a type name, this is a reference to the current
              --  instance of the type, within its initialization procedure.
*************** package body Exp_Attr is
*** 2377,2438 ****
              then
                 Apply_Accessibility_Check (Prefix (Enc_Object), Typ, N);
  
              --  Ada 2005 (AI-251): If the designated type is an interface we
              --  add an implicit conversion to force the displacement of the
              --  pointer to reference the secondary dispatch table.
  
!             elsif Is_Interface (Btyp_DDT)
!               and then (Comes_From_Source (N)
!                          or else Comes_From_Source (Ref_Object)
!                          or else (Nkind (Ref_Object) in N_Has_Chars
!                                    and then Chars (Ref_Object) = Name_uInit))
!             then
!                if Nkind (Ref_Object) /= N_Explicit_Dereference then
! 
!                   --  No implicit conversion required if types match, or if
!                   --  the prefix is the class_wide_type of the interface. In
!                   --  either case passing an object of the interface type has
!                   --  already set the pointer correctly.
! 
!                   if Btyp_DDT = Etype (Ref_Object)
!                     or else (Is_Class_Wide_Type (Etype (Ref_Object))
!                               and then
!                                Class_Wide_Type (Btyp_DDT) = Etype (Ref_Object))
!                   then
!                      null;
! 
!                   else
!                      Rewrite (Prefix (N),
!                        Convert_To (Btyp_DDT,
!                          New_Copy_Tree (Prefix (N))));
! 
!                      Analyze_And_Resolve (Prefix (N), Btyp_DDT);
!                   end if;
! 
!                --  When the object is an explicit dereference, convert the
!                --  dereference's prefix.
! 
!                else
!                   declare
!                      Obj_DDT : constant Entity_Id :=
!                                  Base_Type
!                                    (Directly_Designated_Type
!                                      (Etype (Prefix (Ref_Object))));
!                   begin
!                      --  No implicit conversion required if designated types
!                      --  match.
! 
!                      if Obj_DDT /= Btyp_DDT
!                        and then not (Is_Class_Wide_Type (Obj_DDT)
!                                       and then Etype (Obj_DDT) = Btyp_DDT)
!                      then
!                         Rewrite (N,
!                           Convert_To (Typ,
!                             New_Copy_Tree (Prefix (Ref_Object))));
!                         Analyze_And_Resolve (N, Typ);
!                      end if;
!                   end;
!                end if;
              end if;
           end Access_Cases;
  
--- 2512,2531 ----
              then
                 Apply_Accessibility_Check (Prefix (Enc_Object), Typ, N);
  
+                --  Ada 2005 (AI-251): If the designated type is an interface we
+                --  add an implicit conversion to force the displacement of the
+                --  pointer to reference the secondary dispatch table.
+ 
+                if Is_Interface (Btyp_DDT) then
+                   Add_Implicit_Interface_Type_Conversion;
+                end if;
+ 
              --  Ada 2005 (AI-251): If the designated type is an interface we
              --  add an implicit conversion to force the displacement of the
              --  pointer to reference the secondary dispatch table.
  
!             elsif Is_Interface (Btyp_DDT) then
!                Add_Implicit_Interface_Type_Conversion;
              end if;
           end Access_Cases;
  
*************** package body Exp_Attr is
*** 2530,2535 ****
--- 2623,2650 ----
                 Analyze_And_Resolve (N, Addr);
              end;
  
+          --  'Address is an actual parameter of the call to the implicit
+          --  subprogram To_Pointer instantiated with a class-wide interface
+          --  type; its expansion requires adding an implicit type conversion
+          --  to force displacement of the "this" pointer.
+ 
+          elsif Tagged_Type_Expansion
+            and then Nkind (Parent (N)) = N_Function_Call
+            and then Nkind (Name (Parent (N))) in N_Has_Entity
+            and then Is_Intrinsic_Subprogram (Entity (Name (Parent (N))))
+            and then Chars (Entity (Name (Parent (N)))) = Name_To_Pointer
+            and then Is_Interface (Designated_Type (Etype (Parent (N))))
+            and then Is_Class_Wide_Type (Designated_Type (Etype (Parent (N))))
+          then
+             declare
+                Iface_Typ : constant Entity_Id :=
+                              Designated_Type (Etype (Parent (N)));
+             begin
+                Rewrite (Pref, Convert_To (Iface_Typ, Relocate_Node (Pref)));
+                Analyze_And_Resolve (Pref, Iface_Typ);
+                return;
+             end;
+ 
           --  Ada 2005 (AI-251): Class-wide interface objects are always
           --  "displaced" to reference the tag associated with the interface
           --  type. In order to obtain the real address of such objects we
*************** package body Exp_Attr is
*** 2541,2549 ****
           --  of nested subprograms), since the address needs to be assigned
           --  as-is to such components.
  
!          elsif Is_Class_Wide_Type (Ptyp)
             and then Is_Interface (Underlying_Type (Ptyp))
-            and then Tagged_Type_Expansion
             and then not (Nkind (Pref) in N_Has_Entity
                            and then Is_Subprogram (Entity (Pref)))
             and then not Is_Unnested_Component_Init (N)
--- 2656,2664 ----
           --  of nested subprograms), since the address needs to be assigned
           --  as-is to such components.
  
!          elsif Tagged_Type_Expansion
!            and then Is_Class_Wide_Type (Ptyp)
             and then Is_Interface (Underlying_Type (Ptyp))
             and then not (Nkind (Pref) in N_Has_Entity
                            and then Is_Subprogram (Entity (Pref)))
             and then not Is_Unnested_Component_Init (N)
*************** package body Exp_Attr is
*** 2551,2558 ****
              Rewrite (N,
                Make_Function_Call (Loc,
                  Name => New_Occurrence_Of (RTE (RE_Base_Address), Loc),
!                 Parameter_Associations => New_List (
!                   Relocate_Node (N))));
              Analyze (N);
              return;
           end if;
--- 2666,2672 ----
              Rewrite (N,
                Make_Function_Call (Loc,
                  Name => New_Occurrence_Of (RTE (RE_Base_Address), Loc),
!                 Parameter_Associations => New_List (Relocate_Node (N))));
              Analyze (N);
              return;
           end if;
*************** package body Exp_Attr is
*** 3953,3958 ****
--- 4067,4090 ----
        when Attribute_Img =>
           Exp_Imgv.Expand_Image_Attribute (N);
  
+       -----------
+       -- Index --
+       -----------
+ 
+       --  Transforms 'Index attribute into a reference to the second formal of
+       --  the wrapper built for an entry family that has contract cases (see
+       --  Exp_Ch9.Build_Contract_Wrapper).
+ 
+       when Attribute_Index => Index : declare
+          Entry_Id  : constant Entity_Id := Entity (Pref);
+          Entry_Idx : constant Entity_Id :=
+                        Next_Entity
+                          (First_Entity (Contract_Wrapper (Entry_Id)));
+       begin
+          Rewrite (N, New_Occurrence_Of (Entry_Idx, Loc));
+          Analyze_And_Resolve (N, Typ);
+       end Index;
+ 
        -----------------
        -- Initialized --
        -----------------
*************** package body Exp_Attr is
*** 4791,4797 ****
        ---------
  
        when Attribute_Old => Old : declare
-          Typ     : constant Entity_Id := Etype (N);
           CW_Temp : Entity_Id;
           CW_Typ  : Entity_Id;
           Decl    : Node_Id;
--- 4923,4928 ----
*************** package body Exp_Attr is
*** 4803,4826 ****
           use Old_Attr_Util.Indirect_Temps;
        begin
           --  Generating C code we don't need to expand this attribute when
!          --  we are analyzing the internally built nested postconditions
           --  procedure since it will be expanded inline (and later it will
           --  be removed by Expand_N_Subprogram_Body). It this expansion is
           --  performed in such case then the compiler generates unreferenced
           --  extra temporaries.
  
           if Modify_Tree_For_C
!            and then Chars (Current_Scope) = Name_uPostconditions
           then
              return;
           end if;
  
!          --  Climb the parent chain looking for subprogram _Postconditions
  
           Subp := N;
           while Present (Subp) loop
              exit when Nkind (Subp) = N_Subprogram_Body
!               and then Chars (Defining_Entity (Subp)) = Name_uPostconditions;
  
              --  If assertions are disabled, no need to create the declaration
              --  that preserves the value. The postcondition pragma in which
--- 4934,4958 ----
           use Old_Attr_Util.Indirect_Temps;
        begin
           --  Generating C code we don't need to expand this attribute when
!          --  we are analyzing the internally built nested _Wrapped_Statements
           --  procedure since it will be expanded inline (and later it will
           --  be removed by Expand_N_Subprogram_Body). It this expansion is
           --  performed in such case then the compiler generates unreferenced
           --  extra temporaries.
  
           if Modify_Tree_For_C
!            and then Chars (Current_Scope) = Name_uWrapped_Statements
           then
              return;
           end if;
  
!          --  Climb the parent chain looking for subprogram _Wrapped_Statements
  
           Subp := N;
           while Present (Subp) loop
              exit when Nkind (Subp) = N_Subprogram_Body
!               and then Chars (Defining_Entity (Subp))
!                          = Name_uWrapped_Statements;
  
              --  If assertions are disabled, no need to create the declaration
              --  that preserves the value. The postcondition pragma in which
*************** package body Exp_Attr is
*** 4833,4846 ****
  
              Subp := Parent (Subp);
           end loop;
  
!          --  'Old can only appear in a postcondition, the generated body of
!          --  _Postconditions must be in the tree (or inlined if we are
!          --  generating C code).
! 
!          pragma Assert
!            (Present (Subp)
!              or else (Modify_Tree_For_C and then In_Inlined_Body));
  
           Temp := Make_Temporary (Loc, 'T', Pref);
  
--- 4965,4975 ----
  
              Subp := Parent (Subp);
           end loop;
+          Subp := Empty;
  
!          --  'Old can only appear in the case where local contract-related
!          --  wrapper has been generated with the purpose of wrapping the
!          --  original declarations and statements.
  
           Temp := Make_Temporary (Loc, 'T', Pref);
  
*************** package body Exp_Attr is
*** 4860,4867 ****
           --  No need to push the scope when generating C code since the
           --  _Postcondition procedure has been inlined.
  
!          else pragma Assert (Modify_Tree_For_C);
!             pragma Assert (In_Inlined_Body);
              null;
           end if;
  
--- 4989,4995 ----
           --  No need to push the scope when generating C code since the
           --  _Postcondition procedure has been inlined.
  
!          else
              null;
           end if;
  
*************** package body Exp_Attr is
*** 4871,4887 ****
           if Present (Subp) then
              Ins_Nod := Subp;
  
!          --  Generating C, the postcondition procedure has been inlined and the
!          --  temporary is added before the first declaration of the enclosing
!          --  subprogram.
  
!          else pragma Assert (Modify_Tree_For_C);
              Ins_Nod := N;
              while Nkind (Ins_Nod) /= N_Subprogram_Body loop
                 Ins_Nod := Parent (Ins_Nod);
              end loop;
  
!             Ins_Nod := First (Declarations (Ins_Nod));
           end if;
  
           if Eligible_For_Conditional_Evaluation (N) then
--- 4999,5021 ----
           if Present (Subp) then
              Ins_Nod := Subp;
  
!          --  General case where the postcondtion checks occur after the call
!          --  to _Wrapped_Statements.
  
!          else
              Ins_Nod := N;
              while Nkind (Ins_Nod) /= N_Subprogram_Body loop
                 Ins_Nod := Parent (Ins_Nod);
              end loop;
  
!             if Present (Corresponding_Spec (Ins_Nod))
!               and then Present
!                          (Wrapped_Statements (Corresponding_Spec (Ins_Nod)))
!             then
!                Ins_Nod := Last (Declarations (Ins_Nod));
!             else
!                Ins_Nod := First (Declarations (Ins_Nod));
!             end if;
           end if;
  
           if Eligible_For_Conditional_Evaluation (N) then
*************** package body Exp_Attr is
*** 4894,4902 ****
                 --  unconditionally) or an evaluation statement (which is
                 --  to be executed conditionally).
  
!                -------------------------------
!                --  Append_For_Indirect_Temp --
!                -------------------------------
  
                 procedure Append_For_Indirect_Temp
                   (N : Node_Id; Is_Eval_Stmt : Boolean)
--- 5028,5036 ----
                 --  unconditionally) or an evaluation statement (which is
                 --  to be executed conditionally).
  
!                ------------------------------
!                -- Append_For_Indirect_Temp --
!                ------------------------------
  
                 procedure Append_For_Indirect_Temp
                   (N : Node_Id; Is_Eval_Stmt : Boolean)
*************** package body Exp_Attr is
*** 4916,4922 ****
                 Declare_Indirect_Temporary
                   (Attr_Prefix => Pref, Indirect_Temp => Temp);
  
!                Insert_Before_And_Analyze (
                   Ins_Nod,
                   Make_If_Statement
                     (Sloc            => Loc,
--- 5050,5056 ----
                 Declare_Indirect_Temporary
                   (Attr_Prefix => Pref, Indirect_Temp => Temp);
  
!                Insert_After_And_Analyze (
                   Ins_Nod,
                   Make_If_Statement
                     (Sloc            => Loc,
*************** package body Exp_Attr is
*** 4993,4999 ****
           --  to reflect the new placement of the prefix.
  
           if Validity_Checks_On and then Validity_Check_Operands then
!             Ensure_Valid (Expression (Decl));
           end if;
  
           Rewrite (N, New_Occurrence_Of (Temp, Loc));
--- 5127,5143 ----
           --  to reflect the new placement of the prefix.
  
           if Validity_Checks_On and then Validity_Check_Operands then
! 
!             --  Object declaration that captures the attribute prefix might
!             --  be rewritten into object renaming declaration.
! 
!             if Nkind (Decl) = N_Object_Declaration then
!                Ensure_Valid (Expression (Decl));
!             else
!                pragma Assert (Nkind (Decl) = N_Object_Renaming_Declaration
!                               and then Is_Rewrite_Substitution (Decl));
!                Ensure_Valid (Name (Decl));
!             end if;
           end if;
  
           Rewrite (N, New_Occurrence_Of (Temp, Loc));
*************** package body Exp_Attr is
*** 5494,5502 ****
                           Make_Integer_Literal (Loc, 1))));
  
              else
!                --  Add Boolean parameter True, to request program error if
!                --  we have a bad representation on our hands. If checks are
!                --  suppressed, then add False instead
  
                 Append_To (Exprs, Rep_To_Pos_Flag (Ptyp, Loc));
                 Rewrite (N,
--- 5638,5644 ----
                           Make_Integer_Literal (Loc, 1))));
  
              else
!                --  Add Boolean parameter depending on check suppression
  
                 Append_To (Exprs, Rep_To_Pos_Flag (Ptyp, Loc));
                 Rewrite (N,
*************** package body Exp_Attr is
*** 5506,5518 ****
                         (Enum_Pos_To_Rep (Etyp), Loc),
                     Expressions => New_List (
                       Make_Op_Subtract (Loc,
!                     Left_Opnd =>
!                       Make_Function_Call (Loc,
!                         Name =>
!                           New_Occurrence_Of
!                             (TSS (Etyp, TSS_Rep_To_Pos), Loc),
!                           Parameter_Associations => Exprs),
!                     Right_Opnd => Make_Integer_Literal (Loc, 1)))));
              end if;
  
              --  Suppress checks since they have all been done above
--- 5648,5660 ----
                         (Enum_Pos_To_Rep (Etyp), Loc),
                     Expressions => New_List (
                       Make_Op_Subtract (Loc,
!                        Left_Opnd =>
!                          Make_Function_Call (Loc,
!                            Name =>
!                              New_Occurrence_Of
!                                (TSS (Etyp, TSS_Rep_To_Pos), Loc),
!                            Parameter_Associations => Exprs),
!                        Right_Opnd => Make_Integer_Literal (Loc, 1)))));
              end if;
  
              --  Suppress checks since they have all been done above
*************** package body Exp_Attr is
*** 5575,5607 ****
        --  which is illegal, because of the lack of aliasing.
  
        when Attribute_Priority => Priority : declare
!          Call           : Node_Id;
!          Conctyp        : Entity_Id;
!          New_Itype      : Entity_Id;
!          Object_Parm    : Node_Id;
!          Subprg         : Entity_Id;
!          RT_Subprg_Name : Node_Id;
  
        begin
!          --  Look for the enclosing concurrent type
  
!          Conctyp := Current_Scope;
!          while not Is_Concurrent_Type (Conctyp) loop
!             Conctyp := Scope (Conctyp);
           end loop;
  
!          pragma Assert (Is_Protected_Type (Conctyp));
  
           --  Generate the actual of the call
  
           Subprg := Current_Scope;
!          while not Present (Protected_Body_Subprogram (Subprg)) loop
              Subprg := Scope (Subprg);
           end loop;
  
           --  Use of 'Priority inside protected entries and barriers (in both
           --  cases the type of the first formal of their expanded subprogram
!          --  is Address)
  
           if Etype (First_Entity (Protected_Body_Subprogram (Subprg))) =
                RTE (RE_Address)
--- 5717,5751 ----
        --  which is illegal, because of the lack of aliasing.
  
        when Attribute_Priority => Priority : declare
!          Call        : Node_Id;
!          New_Itype   : Entity_Id;
!          Object_Parm : Node_Id;
!          Prottyp     : Entity_Id;
!          RT_Subprg   : RE_Id;
!          Subprg      : Entity_Id;
  
        begin
!          --  Look for the enclosing protected type
  
!          Prottyp := Current_Scope;
!          while not Is_Protected_Type (Prottyp) loop
!             Prottyp := Scope (Prottyp);
           end loop;
  
!          pragma Assert (Is_Protected_Type (Prottyp));
  
           --  Generate the actual of the call
  
           Subprg := Current_Scope;
!          while not (Is_Subprogram_Or_Entry (Subprg)
!                     and then Present (Protected_Body_Subprogram (Subprg)))
!          loop
              Subprg := Scope (Subprg);
           end loop;
  
           --  Use of 'Priority inside protected entries and barriers (in both
           --  cases the type of the first formal of their expanded subprogram
!          --  is Address).
  
           if Etype (First_Entity (Protected_Body_Subprogram (Subprg))) =
                RTE (RE_Address)
*************** package body Exp_Attr is
*** 5616,5622 ****
              New_Itype := Create_Itype (E_Access_Type, N);
              Set_Etype (New_Itype, New_Itype);
              Set_Directly_Designated_Type (New_Itype,
!               Corresponding_Record_Type (Conctyp));
              Freeze_Itype (New_Itype, N);
  
              --  Generate:
--- 5760,5766 ----
              New_Itype := Create_Itype (E_Access_Type, N);
              Set_Etype (New_Itype, New_Itype);
              Set_Directly_Designated_Type (New_Itype,
!               Corresponding_Record_Type (Prottyp));
              Freeze_Itype (New_Itype, N);
  
              --  Generate:
*************** package body Exp_Attr is
*** 5651,5665 ****
  
           --  Select the appropriate run-time subprogram
  
!          if Number_Entries (Conctyp) = 0 then
!             RT_Subprg_Name := New_Occurrence_Of (RTE (RE_Get_Ceiling), Loc);
           else
!             RT_Subprg_Name := New_Occurrence_Of (RTE (RO_PE_Get_Ceiling), Loc);
           end if;
  
           Call :=
             Make_Function_Call (Loc,
!              Name                   => RT_Subprg_Name,
               Parameter_Associations => New_List (Object_Parm));
  
           Rewrite (N, Call);
--- 5795,5810 ----
  
           --  Select the appropriate run-time subprogram
  
!          if Has_Entries (Prottyp) then
!             RT_Subprg := RO_PE_Get_Ceiling;
           else
!             RT_Subprg := RE_Get_Ceiling;
           end if;
  
           Call :=
             Make_Function_Call (Loc,
!              Name                   =>
!                New_Occurrence_Of (RTE (RT_Subprg), Loc),
               Parameter_Associations => New_List (Object_Parm));
  
           Rewrite (N, Call);
*************** package body Exp_Attr is
*** 6467,6473 ****
                 --  If Storage_Size wasn't found (can only occur in the simple
                 --  storage pool case), then simply use zero for the result.
  
!                if not Present (Alloc_Op) then
                    Rewrite (N, Make_Integer_Literal (Loc, 0));
  
                 --  Otherwise, rewrite the allocator as a call to pool type's
--- 6612,6618 ----
                 --  If Storage_Size wasn't found (can only occur in the simple
                 --  storage pool case), then simply use zero for the result.
  
!                if No (Alloc_Op) then
                    Rewrite (N, Make_Integer_Literal (Loc, 0));
  
                 --  Otherwise, rewrite the allocator as a call to pool type's
*************** package body Exp_Attr is
*** 6624,6632 ****
                           Make_Integer_Literal (Loc, 1))));
  
              else
!                --  Add Boolean parameter True, to request program error if
!                --  we have a bad representation on our hands. Add False if
!                --  checks are suppressed.
  
                 Append_To (Exprs, Rep_To_Pos_Flag (Ptyp, Loc));
                 Rewrite (N,
--- 6769,6775 ----
                           Make_Integer_Literal (Loc, 1))));
  
              else
!                --  Add Boolean parameter depending on check suppression
  
                 Append_To (Exprs, Rep_To_Pos_Flag (Ptyp, Loc));
                 Rewrite (N,
*************** package body Exp_Attr is
*** 6650,6656 ****
              Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
  
           --  For floating-point, we transform 'Succ into a call to the Succ
!          --  floating-point attribute function in Fat_xxx (xxx is root type)
  
           elsif Is_Floating_Point_Type (Ptyp) then
              Expand_Fpt_Attribute_R (N);
--- 6793,6800 ----
              Analyze_And_Resolve (N, Typ, Suppress => All_Checks);
  
           --  For floating-point, we transform 'Succ into a call to the Succ
!          --  floating-point attribute function in Fat_xxx (xxx is root type).
!          --  Note that this function takes care of the overflow case.
  
           elsif Is_Floating_Point_Type (Ptyp) then
              Expand_Fpt_Attribute_R (N);
*************** package body Exp_Attr is
*** 6691,6697 ****
              Prefix_Is_Type := False;
           end if;
  
!          if Is_Class_Wide_Type (Ttyp) then
              Ttyp := Root_Type (Ttyp);
           end if;
  
--- 6835,6855 ----
              Prefix_Is_Type := False;
           end if;
  
!          --  In the case of a class-wide equivalent type without a parent,
!          --  the _Tag component has been built in Make_CW_Equivalent_Type
!          --  manually and must be referenced directly.
! 
!          if Ekind (Ttyp) = E_Class_Wide_Subtype
!            and then Present (Equivalent_Type (Ttyp))
!            and then No (Parent_Subtype (Equivalent_Type (Ttyp)))
!          then
!             Ttyp := Equivalent_Type (Ttyp);
! 
!          --  In all the other cases of class-wide type, including an equivalent
!          --  type with a parent, the _Tag component ultimately present is that
!          --  of the root type.
! 
!          elsif Is_Class_Wide_Type (Ttyp) then
              Ttyp := Root_Type (Ttyp);
           end if;
  
*************** package body Exp_Attr is
*** 6993,6999 ****
        --  See separate sections below for the generated code in each case.
  
        when Attribute_Valid => Valid : declare
!          PBtyp : Entity_Id := Base_Type (Ptyp);
  
           Save_Validity_Checks_On : constant Boolean := Validity_Checks_On;
           --  Save the validity checking mode. We always turn off validity
--- 7151,7161 ----
        --  See separate sections below for the generated code in each case.
  
        when Attribute_Valid => Valid : declare
!          PBtyp : Entity_Id := Implementation_Base_Type (Validated_View (Ptyp));
!          pragma Assert (Is_Scalar_Type (PBtyp)
!                           or else Serious_Errors_Detected > 0);
! 
!          --  The scalar base type, looking through private types
  
           Save_Validity_Checks_On : constant Boolean := Validity_Checks_On;
           --  Save the validity checking mode. We always turn off validity
*************** package body Exp_Attr is
*** 7040,7060 ****
                 Temp := Duplicate_Subexpr (Pref);
              end if;
  
!             return
!               Make_In (Loc,
!                 Left_Opnd  => Unchecked_Convert_To (PBtyp, Temp),
!                 Right_Opnd =>
!                   Make_Range (Loc,
!                     Low_Bound  =>
!                       Unchecked_Convert_To (PBtyp,
!                         Make_Attribute_Reference (Loc,
!                           Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                           Attribute_Name => Name_First)),
!                     High_Bound =>
!                       Unchecked_Convert_To (PBtyp,
!                         Make_Attribute_Reference (Loc,
!                           Prefix         => New_Occurrence_Of (Ptyp, Loc),
!                           Attribute_Name => Name_Last))));
           end Make_Range_Test;
  
           --  Local variables
--- 7202,7228 ----
                 Temp := Duplicate_Subexpr (Pref);
              end if;
  
!             declare
!                Val_Typ : constant Entity_Id := Validated_View (Ptyp);
!             begin
!                return
!                  Make_In (Loc,
!                    Left_Opnd  => Unchecked_Convert_To (PBtyp, Temp),
!                    Right_Opnd =>
!                      Make_Range (Loc,
!                        Low_Bound  =>
!                          Unchecked_Convert_To (PBtyp,
!                            Make_Attribute_Reference (Loc,
!                              Prefix         =>
!                                New_Occurrence_Of (Val_Typ, Loc),
!                              Attribute_Name => Name_First)),
!                        High_Bound =>
!                          Unchecked_Convert_To (PBtyp,
!                            Make_Attribute_Reference (Loc,
!                              Prefix         =>
!                                New_Occurrence_Of (Val_Typ, Loc),
!                              Attribute_Name => Name_Last))));
!             end;
           end Make_Range_Test;
  
           --  Local variables
*************** package body Exp_Attr is
*** 7076,7088 ****
  
           Validity_Checks_On := False;
  
-          --  Retrieve the base type. Handle the case where the base type is a
-          --  private enumeration type.
- 
-          if Is_Private_Type (PBtyp) and then Present (Full_View (PBtyp)) then
-             PBtyp := Full_View (PBtyp);
-          end if;
- 
           --  Floating-point case. This case is handled by the Valid attribute
           --  code in the floating-point attribute run-time library.
  
--- 7244,7249 ----
*************** package body Exp_Attr is
*** 7254,7260 ****
                        New_Occurrence_Of (Standard_False, Loc))),
                  Right_Opnd => Make_Integer_Literal (Loc, 0));
  
!             if Ptyp /= PBtyp
                and then
                  (Type_Low_Bound (Ptyp) /= Type_Low_Bound (PBtyp)
                    or else
--- 7415,7425 ----
                        New_Occurrence_Of (Standard_False, Loc))),
                  Right_Opnd => Make_Integer_Literal (Loc, 0));
  
!             --  Skip the range test for boolean types, as it buys us
!             --  nothing. The function called above already fails for
!             --  values different from both True and False.
! 
!             if Ptyp /= PBtyp and then not Is_Boolean_Type (PBtyp)
                and then
                  (Type_Low_Bound (Ptyp) /= Type_Low_Bound (PBtyp)
                    or else
*************** package body Exp_Attr is
*** 7348,7354 ****
                 Uns  : constant Boolean :=
                          Is_Unsigned_Type (Ptyp)
                            or else (Is_Private_Type (Ptyp)
!                                     and then Is_Unsigned_Type (Btyp));
                 Size : Uint;
                 P    : Node_Id := Pref;
  
--- 7513,7519 ----
                 Uns  : constant Boolean :=
                          Is_Unsigned_Type (Ptyp)
                            or else (Is_Private_Type (Ptyp)
!                                     and then Is_Unsigned_Type (PBtyp));
                 Size : Uint;
                 P    : Node_Id := Pref;
  
*************** package body Exp_Attr is
*** 7833,7839 ****
           | Attribute_Large
           | Attribute_Last_Valid
           | Attribute_Library_Level
-          | Attribute_Lock_Free
           | Attribute_Machine_Emax
           | Attribute_Machine_Emin
           | Attribute_Machine_Mantissa
--- 7998,8003 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_attr.ads gcc-13.1.0/gcc/ada/exp_attr.ads
*** gcc-12.2.0/gcc/ada/exp_attr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_attr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_cg.adb gcc-13.1.0/gcc/ada/exp_cg.adb
*** gcc-12.2.0/gcc/ada/exp_cg.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_cg.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_cg.ads gcc-13.1.0/gcc/ada/exp_cg.ads
*** gcc-12.2.0/gcc/ada/exp_cg.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_cg.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2010-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2010-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch10.ads gcc-13.1.0/gcc/ada/exp_ch10.ads
*** gcc-12.2.0/gcc/ada/exp_ch10.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch10.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch11.adb gcc-13.1.0/gcc/ada/exp_ch11.adb
*** gcc-12.2.0/gcc/ada/exp_ch11.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch11.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Restrict;       use Restrict;
*** 41,47 ****
  with Rident;         use Rident;
  with Rtsfind;        use Rtsfind;
  with Sem;            use Sem;
- with Sem_Ch8;        use Sem_Ch8;
  with Sem_Res;        use Sem_Res;
  with Sem_Util;       use Sem_Util;
  with Sinfo;          use Sinfo;
--- 41,46 ----
*************** with Stringt;        use Stringt;
*** 54,59 ****
--- 53,59 ----
  with Targparm;       use Targparm;
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Exp_Ch11 is
  
*************** package body Exp_Ch11 is
*** 76,188 ****
     ---------------------------
  
     --  For a handled statement sequence that has a cleanup (At_End_Proc
!    --  field set), an exception handler of the following form is required:
! 
!    --     exception
!    --       when all others =>
!    --          cleanup call
!    --          raise;
! 
!    --  Note: this exception handler is treated rather specially by
!    --  subsequent expansion in two respects:
! 
!    --    The normal call to Undefer_Abort is omitted
!    --    The raise call does not do Defer_Abort
! 
!    --  This is because the current tasking code seems to assume that
!    --  the call to the cleanup routine that is made from an exception
!    --  handler for the abort signal is called with aborts deferred.
! 
!    --  This expansion is only done if we have front end exception handling.
!    --  If we have back end exception handling, then the AT END handler is
!    --  left alone, and cleanups (including the exceptional case) are handled
!    --  by the back end.
  
!    --  In the front end case, the exception handler described above handles
!    --  the exceptional case. The AT END handler is left in the generated tree
!    --  and the code generator (e.g. gigi) must still handle proper generation
!    --  of cleanup calls for the non-exceptional case.
  
     procedure Expand_At_End_Handler (HSS : Node_Id; Blk_Id : Entity_Id) is
!       Clean   : constant Entity_Id  := Entity (At_End_Proc (HSS));
!       Ohandle : Node_Id;
!       Stmnts  : List_Id;
! 
!       Loc : constant Source_Ptr := No_Location;
!       --  Location used for expansion. We quite deliberately do not set a
!       --  specific source location for the expanded handler. This makes
!       --  sense since really the handler is not associated with specific
!       --  source. We used to set this to Sloc (Clean), but that caused
!       --  useless and annoying bouncing around of line numbers in the
!       --  debugger in some circumstances.
! 
     begin
!       pragma Assert (Present (Clean));
!       pragma Assert (No (Exception_Handlers (HSS)));
! 
!       --  Back end exception schemes don't need explicit handlers to
!       --  trigger AT-END actions on exceptional paths.
! 
!       if Back_End_Exceptions then
!          return;
!       end if;
! 
!       --  Don't expand an At End handler if we have already had configurable
!       --  run-time violations, since likely this will just be a matter of
!       --  generating useless cascaded messages
! 
!       if Configurable_Run_Time_Violations > 0 then
!          return;
!       end if;
! 
!       --  Don't expand an At End handler if we are not allowing exceptions
!       --  or if exceptions are transformed into local gotos, and never
!       --  propagated (No_Exception_Propagation).
! 
!       if No_Exception_Handlers_Set then
!          return;
!       end if;
! 
!       if Present (Blk_Id) then
!          Push_Scope (Blk_Id);
!       end if;
! 
!       Ohandle :=
!         Make_Others_Choice (Loc);
!       Set_All_Others (Ohandle);
! 
!       Stmnts := New_List (
!         Make_Procedure_Call_Statement (Loc,
!           Name => New_Occurrence_Of (Clean, Loc)));
! 
!       --  Generate reraise statement as last statement of AT-END handler,
!       --  unless we are under control of No_Exception_Propagation, in which
!       --  case no exception propagation is possible anyway, so we do not need
!       --  a reraise (the AT END handler in this case is only for normal exits
!       --  not for exceptional exits). Also, we flag the Reraise statement as
!       --  being part of an AT END handler to prevent signalling this reraise
!       --  as a violation of the restriction when it is not set.
! 
!       if not Restriction_Active (No_Exception_Propagation) then
!          declare
!             Rstm : constant Node_Id := Make_Raise_Statement (Loc);
!          begin
!             Set_From_At_End (Rstm);
!             Append_To (Stmnts, Rstm);
!          end;
!       end if;
! 
!       Set_Exception_Handlers (HSS, New_List (
!         Make_Implicit_Exception_Handler (Loc,
!           Exception_Choices => New_List (Ohandle),
!           Statements        => Stmnts)));
! 
!       Analyze_List (Stmnts, Suppress => All_Checks);
!       Expand_Exception_Handlers (HSS);
! 
!       if Present (Blk_Id) then
!          Pop_Scope;
!       end if;
     end Expand_At_End_Handler;
  
     -------------------------------
--- 76,91 ----
     ---------------------------
  
     --  For a handled statement sequence that has a cleanup (At_End_Proc
!    --  field set), perform any needed expansion.
  
!    --  Do nothing by default. We used to perform a special expansion for
!    --  front-end SJLJ, and we may want to customize this processing in
!    --  the future for new back-ends.
  
     procedure Expand_At_End_Handler (HSS : Node_Id; Blk_Id : Entity_Id) is
!       pragma Unreferenced (Blk_Id);
     begin
!       pragma Assert (Present (Entity (At_End_Proc (HSS))));
     end Expand_At_End_Handler;
  
     -------------------------------
*************** package body Exp_Ch11 is
*** 813,819 ****
                    --  case we have to generate possible diagnostics.
  
                 elsif Has_Local_Raise (Handler)
!                  and then Local_Raise_Statements (Handler) /= No_Elist
                 then
                    Relmt := First_Elmt (Local_Raise_Statements (Handler));
                    while Present (Relmt) loop
--- 716,722 ----
                    --  case we have to generate possible diagnostics.
  
                 elsif Has_Local_Raise (Handler)
!                  and then Present (Local_Raise_Statements (Handler))
                 then
                    Relmt := First_Elmt (Local_Raise_Statements (Handler));
                    while Present (Relmt) loop
*************** package body Exp_Ch11 is
*** 987,999 ****
                 --        ...
                 --     end;
  
!                --  This expansion is only performed when using front-end
!                --  exceptions. Gigi will insert a call to initialize the
!                --  choice parameter.
  
                 if Present (Choice_Parameter (Handler))
!                  and then (Front_End_Exceptions
!                             or else CodePeer_Mode)
                 then
                    declare
                       Cparm : constant Entity_Id  := Choice_Parameter (Handler);
--- 890,900 ----
                 --        ...
                 --     end;
  
!                --  This expansion is only performed when using CodePeer.
!                --  Gigi will insert a call to initialize the choice parameter.
  
                 if Present (Choice_Parameter (Handler))
!                  and then CodePeer_Mode
                 then
                    declare
                       Cparm : constant Entity_Id  := Choice_Parameter (Handler);
*************** package body Exp_Ch11 is
*** 1236,1242 ****
        Set_Is_Statically_Allocated (Ex_Id);
  
        --  Create the aggregate list for type Standard.Exception_Type:
!       --  Handled_By_Other component: False
  
        L := Empty_List;
        Append_To (L, New_Occurrence_Of (Standard_False, Loc));
--- 1137,1143 ----
        Set_Is_Statically_Allocated (Ex_Id);
  
        --  Create the aggregate list for type Standard.Exception_Type:
!       --  Not_Handled_By_Others component: False
  
        L := Empty_List;
        Append_To (L, New_Occurrence_Of (Standard_False, Loc));
*************** package body Exp_Ch11 is
*** 1246,1252 ****
        Append_To (L,
          Make_Character_Literal (Loc,
            Chars              => Name_uA,
!           Char_Literal_Value => UI_From_Int (Character'Pos ('A'))));
  
        --  Name_Length component: Nam'Length
  
--- 1147,1153 ----
        Append_To (L,
          Make_Character_Literal (Loc,
            Chars              => Name_uA,
!           Char_Literal_Value => UI_From_CC (Get_Char_Code ('A'))));
  
        --  Name_Length component: Nam'Length
  
*************** package body Exp_Ch11 is
*** 1405,1413 ****
        then
           pragma Assert (not Is_Thunk (Current_Scope));
           Expand_Cleanup_Actions (Parent (N));
- 
-       else
-          Set_First_Real_Statement (N, First (Statements (N)));
        end if;
     end Expand_N_Handled_Sequence_Of_Statements;
  
--- 1306,1311 ----
*************** package body Exp_Ch11 is
*** 1450,1486 ****
        --     in
        --       raise Constraint_Error;
  
-       --  unless the flag Convert_To_Return_False is set, in which case
-       --  the transformation is to:
- 
-       --     do
-       --       return False;
-       --     in
-       --       raise Constraint_Error;
- 
        --  The raise constraint error can never be executed. It is just a dummy
        --  node that can be labeled with an arbitrary type.
  
        RCE := Make_Raise_Constraint_Error (Loc, Reason => CE_Explicit_Raise);
        Set_Etype (RCE, Typ);
  
!       if Convert_To_Return_False (N) then
!          Rewrite (N,
!            Make_Expression_With_Actions (Loc,
!              Actions     => New_List (
!                Make_Simple_Return_Statement (Loc,
!                  Expression => New_Occurrence_Of (Standard_False, Loc))),
!                Expression => RCE));
! 
!       else
!          Rewrite (N,
!            Make_Expression_With_Actions (Loc,
!              Actions     => New_List (
!                Make_Raise_Statement (Loc,
!                  Name       => Name (N),
!                  Expression => Expression (N))),
!                Expression => RCE));
!       end if;
  
        Analyze_And_Resolve (N, Typ);
     end Expand_N_Raise_Expression;
--- 1348,1366 ----
        --     in
        --       raise Constraint_Error;
  
        --  The raise constraint error can never be executed. It is just a dummy
        --  node that can be labeled with an arbitrary type.
  
        RCE := Make_Raise_Constraint_Error (Loc, Reason => CE_Explicit_Raise);
        Set_Etype (RCE, Typ);
  
!       Rewrite (N,
!         Make_Expression_With_Actions (Loc,
!           Actions     => New_List (
!             Make_Raise_Statement (Loc,
!               Name       => Name (N),
!               Expression => Expression (N))),
!             Expression => RCE));
  
        Analyze_And_Resolve (N, Typ);
     end Expand_N_Raise_Expression;
*************** package body Exp_Ch11 is
*** 1528,1534 ****
              H := Find_Local_Handler (Entity (Name (N)), N);
  
              if Present (H) then
!                if Local_Raise_Statements (H) = No_Elist then
                    Set_Local_Raise_Statements (H, New_Elmt_List);
                 end if;
  
--- 1408,1414 ----
              H := Find_Local_Handler (Entity (Name (N)), N);
  
              if Present (H) then
!                if No (Local_Raise_Statements (H)) then
                    Set_Local_Raise_Statements (H, New_Elmt_List);
                 end if;
  
*************** package body Exp_Ch11 is
*** 1717,1725 ****
           --  GNATprove all code with exceptions falls outside the subset of
           --  code which can be formally analyzed.
  
!          if not CodePeer_Mode
!            and then Back_End_Exceptions
!          then
              return;
           end if;
  
--- 1597,1603 ----
           --  GNATprove all code with exceptions falls outside the subset of
           --  code which can be formally analyzed.
  
!          if not CodePeer_Mode then
              return;
           end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch11.ads gcc-13.1.0/gcc/ada/exp_ch11.ads
*** gcc-12.2.0/gcc/ada/exp_ch11.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch11.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch12.adb gcc-13.1.0/gcc/ada/exp_ch12.adb
*** gcc-12.2.0/gcc/ada/exp_ch12.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch12.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch12.ads gcc-13.1.0/gcc/ada/exp_ch12.ads
*** gcc-12.2.0/gcc/ada/exp_ch12.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch12.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch13.adb gcc-13.1.0/gcc/ada/exp_ch13.adb
*** gcc-12.2.0/gcc/ada/exp_ch13.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch13.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Ch13 is
*** 617,686 ****
        elsif Is_Subprogram (E) then
           Exp_Ch6.Freeze_Subprogram (N);
  
!          --  Ada 2005 (AI-251): Remove the freezing node associated with the
!          --  entities internally used by the frontend to register primitives
!          --  covering abstract interfaces. The call to Freeze_Subprogram has
!          --  already expanded the code that fills the corresponding entry in
!          --  its secondary dispatch table and therefore the code generator
!          --  has nothing else to do with this freezing node.
  
!          Delete := Present (Interface_Alias (E));
        end if;
  
        --  Analyze actions generated by freezing. The init_proc contains source
!       --  expressions that may raise Constraint_Error, and the assignment
        --  procedure for complex types needs checks on individual component
!       --  assignments, but all other freezing actions should be compiled with
!       --  all checks off.
  
!       if Present (Actions (N)) then
!          Decl := First (Actions (N));
!          while Present (Decl) loop
!             if Nkind (Decl) = N_Subprogram_Body
!               and then (Is_Init_Proc (Defining_Entity (Decl))
!                           or else
!                             Chars (Defining_Entity (Decl)) = Name_uAssign)
!             then
!                Analyze (Decl);
  
!             --  A subprogram body created for a renaming_as_body completes
!             --  a previous declaration, which may be in a different scope.
!             --  Establish the proper scope before analysis.
  
!             elsif Nkind (Decl) = N_Subprogram_Body
!               and then Present (Corresponding_Spec (Decl))
!               and then Scope (Corresponding_Spec (Decl)) /= Current_Scope
!             then
!                Push_Scope (Scope (Corresponding_Spec (Decl)));
!                Analyze (Decl, Suppress => All_Checks);
!                Pop_Scope;
  
!             --  We treat generated equality specially, if validity checks are
!             --  enabled, in order to detect components default-initialized
!             --  with invalid values.
  
!             elsif Nkind (Decl) = N_Subprogram_Body
!               and then Chars (Defining_Entity (Decl)) = Name_Op_Eq
!               and then Validity_Checks_On
!               and then Initialize_Scalars
!             then
!                declare
!                   Save_Force : constant Boolean := Force_Validity_Checks;
!                begin
!                   Force_Validity_Checks := True;
!                   Analyze (Decl);
!                   Force_Validity_Checks := Save_Force;
!                end;
  
!             --  All other freezing actions
  
!             else
!                Analyze (Decl, Suppress => All_Checks);
!             end if;
  
!             Next (Decl);
!          end loop;
!       end if;
  
        --  If we are to delete this N_Freeze_Entity, do so by rewriting so that
        --  a loop on all nodes being inserted will work propertly.
--- 617,686 ----
        elsif Is_Subprogram (E) then
           Exp_Ch6.Freeze_Subprogram (N);
  
!          --  Ada 2005 (AI-251): Remove the freeze nodes associated with the
!          --  entities internally used by the front end to register primitives
!          --  covering abstract interfaces if they have no side effects. For the
!          --  others, gigi must discard them after evaluating the side effects.
  
!          Delete := Present (Interface_Alias (E)) and then No (Actions (N));
        end if;
  
        --  Analyze actions generated by freezing. The init_proc contains source
!       --  expressions that may raise Constraint_Error, the assignment
        --  procedure for complex types needs checks on individual component
!       --  assignments, and wrappers may need checks. Other freezing actions
!       --  should be compiled with all checks off.
  
!       Decl := First (Actions (N));
!       while Present (Decl) loop
!          if Nkind (Decl) = N_Subprogram_Body
!            and then (Is_Init_Proc (Defining_Entity (Decl))
!                        or else
!                          Chars (Defining_Entity (Decl)) = Name_uAssign
!                        or else
!                          (Present (Corresponding_Spec (Decl))
!                             and then Is_Wrapper
!                                        (Corresponding_Spec (Decl))))
!          then
!             Analyze (Decl);
  
!          --  A subprogram body created for a renaming_as_body completes
!          --  a previous declaration, which may be in a different scope.
!          --  Establish the proper scope before analysis.
  
!          elsif Nkind (Decl) = N_Subprogram_Body
!            and then Present (Corresponding_Spec (Decl))
!            and then Scope (Corresponding_Spec (Decl)) /= Current_Scope
!          then
!             Push_Scope (Scope (Corresponding_Spec (Decl)));
!             Analyze (Decl, Suppress => All_Checks);
!             Pop_Scope;
  
!          --  We treat generated equality specially, if validity checks are
!          --  enabled, in order to detect components default-initialized with
!          --  invalid values.
  
!          elsif Nkind (Decl) = N_Subprogram_Body
!            and then Chars (Defining_Entity (Decl)) = Name_Op_Eq
!            and then Validity_Checks_On
!            and then Initialize_Scalars
!          then
!             declare
!                Save_Force : constant Boolean := Force_Validity_Checks;
!             begin
!                Force_Validity_Checks := True;
!                Analyze (Decl);
!                Force_Validity_Checks := Save_Force;
!             end;
  
!          --  All other freezing actions
  
!          else
!             Analyze (Decl, Suppress => All_Checks);
!          end if;
  
!          Next (Decl);
!       end loop;
  
        --  If we are to delete this N_Freeze_Entity, do so by rewriting so that
        --  a loop on all nodes being inserted will work propertly.
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch13.ads gcc-13.1.0/gcc/ada/exp_ch13.ads
*** gcc-12.2.0/gcc/ada/exp_ch13.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch13.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch2.adb gcc-13.1.0/gcc/ada/exp_ch2.adb
*** gcc-12.2.0/gcc/ada/exp_ch2.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch2.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
  with Debug;          use Debug;
*************** with Exp_Smem;       use Exp_Smem;
*** 34,42 ****
--- 35,45 ----
  with Exp_Tss;        use Exp_Tss;
  with Exp_Util;       use Exp_Util;
  with Namet;          use Namet;
+ with Nlists;         use Nlists;
  with Nmake;          use Nmake;
  with Opt;            use Opt;
  with Output;         use Output;
+ with Rtsfind;        use Rtsfind;
  with Sem;            use Sem;
  with Sem_Eval;       use Sem_Eval;
  with Sem_Res;        use Sem_Res;
*************** with Sinfo.Nodes;    use Sinfo.Nodes;
*** 47,52 ****
--- 50,56 ----
  with Sinfo.Utils;    use Sinfo.Utils;
  with Sinput;         use Sinput;
  with Snames;         use Snames;
+ with Stand;
  with Tbuild;         use Tbuild;
  
  package body Exp_Ch2 is
*************** package body Exp_Ch2 is
*** 150,162 ****
  
           and then OK_To_Do_Constant_Replacement (E)
  
-          --  Do not replace occurrences in pragmas (where names typically
-          --  appear not as values, but as simply names. If there are cases
-          --  where values are required, it is only a very minor efficiency
-          --  issue that they do not get replaced when they could be).
- 
-          and then Nkind (Parent (N)) /= N_Pragma_Argument_Association
- 
           --  Do not replace the prefixes of attribute references, since this
           --  causes trouble with cases like 4'Size. Also for Name_Asm_Input and
           --  Name_Asm_Output, don't do replacement anywhere, since we can have
--- 154,159 ----
*************** package body Exp_Ch2 is
*** 718,721 ****
--- 715,831 ----
        Analyze_And_Resolve (N, T);
     end Expand_Renaming;
  
+    ------------------------------------------
+    -- Expand_N_Interpolated_String_Literal --
+    ------------------------------------------
+ 
+    procedure Expand_N_Interpolated_String_Literal (N : Node_Id) is
+ 
+       function Build_Interpolated_String_Image (N : Node_Id) return Node_Id;
+       --  Build the following Expression_With_Actions node:
+       --     do
+       --        Sink : Buffer;
+       --        [ Set_Trim_Leading_Spaces (Sink); ]
+       --        Type'Put_Image (Sink, X);
+       --        { [ Set_Trim_Leading_Spaces (Sink); ]
+       --          Type'Put_Image (Sink, X); }
+       --        Result : constant String := Get (Sink);
+       --        Destroy (Sink);
+       --     in Result end
+ 
+       -------------------------------------
+       -- Build_Interpolated_String_Image --
+       -------------------------------------
+ 
+       function Build_Interpolated_String_Image (N : Node_Id) return Node_Id
+       is
+          Loc           : constant Source_Ptr := Sloc (N);
+          Sink_Entity   : constant Entity_Id  := Make_Temporary (Loc, 'S');
+          Sink_Decl     : constant Node_Id :=
+                            Make_Object_Declaration (Loc,
+                              Defining_Identifier => Sink_Entity,
+                              Object_Definition =>
+                                New_Occurrence_Of (RTE (RE_Buffer_Type), Loc));
+ 
+          Get_Id        : constant RE_Id :=
+                            (if Etype (N) = Stand.Standard_String then
+                                RE_Get
+                             elsif Etype (N) = Stand.Standard_Wide_String then
+                                RE_Wide_Get
+                             else
+                                RE_Wide_Wide_Get);
+ 
+          Result_Entity : constant Entity_Id := Make_Temporary (Loc, 'R');
+          Result_Decl   : constant Node_Id :=
+                            Make_Object_Declaration (Loc,
+                              Defining_Identifier => Result_Entity,
+                              Object_Definition =>
+                                New_Occurrence_Of (Etype (N), Loc),
+                              Expression =>
+                                Make_Function_Call (Loc,
+                                  Name => New_Occurrence_Of (RTE (Get_Id), Loc),
+                                  Parameter_Associations => New_List (
+                                    New_Occurrence_Of (Sink_Entity, Loc))));
+ 
+          Actions  : constant List_Id := New_List;
+          Elem_Typ : Entity_Id;
+          Str_Elem : Node_Id;
+ 
+       begin
+          pragma Assert (Etype (N) /= Stand.Any_String);
+ 
+          Append_To (Actions, Sink_Decl);
+ 
+          Str_Elem := First (Expressions (N));
+          while Present (Str_Elem) loop
+             Elem_Typ := Etype (Str_Elem);
+ 
+             --  If the type is numeric or has a specified Integer_Literal or
+             --  Real_Literal aspect, then prior to invoking Put_Image, the
+             --  Trim_Leading_Spaces flag is set on the text buffer.
+ 
+             if Is_Numeric_Type (Underlying_Type (Elem_Typ))
+               or else Has_Aspect (Elem_Typ, Aspect_Integer_Literal)
+               or else Has_Aspect (Elem_Typ, Aspect_Real_Literal)
+             then
+                Append_To (Actions,
+                  Make_Procedure_Call_Statement (Loc,
+                    Name                   =>
+                      New_Occurrence_Of
+                        (RTE (RE_Set_Trim_Leading_Spaces), Loc),
+                    Parameter_Associations => New_List (
+                      Convert_To (RTE (RE_Root_Buffer_Type),
+                        New_Occurrence_Of (Sink_Entity, Loc)),
+                      New_Occurrence_Of (Stand.Standard_True, Loc))));
+             end if;
+ 
+             Append_To (Actions,
+               Make_Attribute_Reference (Loc,
+                 Prefix         => New_Occurrence_Of (Elem_Typ, Loc),
+                 Attribute_Name => Name_Put_Image,
+                 Expressions    => New_List (
+                   New_Occurrence_Of (Sink_Entity, Loc),
+                   Duplicate_Subexpr (Str_Elem))));
+ 
+             Next (Str_Elem);
+          end loop;
+ 
+          Append_To (Actions, Result_Decl);
+ 
+          return Make_Expression_With_Actions (Loc,
+            Actions    => Actions,
+            Expression => New_Occurrence_Of (Result_Entity, Loc));
+       end Build_Interpolated_String_Image;
+ 
+       --  Local variables
+ 
+       Typ : constant Entity_Id := Etype (N);
+ 
+    --  Start of processing for Expand_N_Interpolated_String_Literal
+ 
+    begin
+       Rewrite (N, Build_Interpolated_String_Image (N));
+       Analyze_And_Resolve (N, Typ);
+    end Expand_N_Interpolated_String_Literal;
+ 
  end Exp_Ch2;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch2.ads gcc-13.1.0/gcc/ada/exp_ch2.ads
*** gcc-12.2.0/gcc/ada/exp_ch2.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch2.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 28,35 ****
  with Types; use Types;
  package Exp_Ch2 is
  
!    procedure Expand_N_Expanded_Name  (N : Node_Id);
!    procedure Expand_N_Identifier     (N : Node_Id);
!    procedure Expand_N_Real_Literal   (N : Node_Id);
  
  end Exp_Ch2;
--- 28,36 ----
  with Types; use Types;
  package Exp_Ch2 is
  
!    procedure Expand_N_Expanded_Name               (N : Node_Id);
!    procedure Expand_N_Identifier                  (N : Node_Id);
!    procedure Expand_N_Interpolated_String_Literal (N : Node_Id);
!    procedure Expand_N_Real_Literal                (N : Node_Id);
  
  end Exp_Ch2;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch3.adb gcc-13.1.0/gcc/ada/exp_ch3.adb
*** gcc-12.2.0/gcc/ada/exp_ch3.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch3.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
*************** with Exp_Dist;       use Exp_Dist;
*** 44,50 ****
  with Exp_Put_Image;
  with Exp_Smem;       use Exp_Smem;
  with Exp_Strm;       use Exp_Strm;
- with Exp_Tss;        use Exp_Tss;
  with Exp_Util;       use Exp_Util;
  with Freeze;         use Freeze;
  with Ghost;          use Ghost;
--- 45,50 ----
*************** package body Exp_Ch3 is
*** 106,111 ****
--- 106,118 ----
     --  types with discriminants. Otherwise new identifiers are created,
     --  with the source names of the discriminants.
  
+    procedure Build_Discr_Checking_Funcs (N : Node_Id);
+    --  For each variant component, builds a function which checks whether
+    --  the component name is consistent with the current discriminants
+    --  and sets the component's Dcheck_Function attribute to refer to it.
+    --  N is the full type declaration node; the discriminant checking
+    --  functions are inserted after this node.
+ 
     function Build_Equivalent_Array_Aggregate (T : Entity_Id) return Node_Id;
     --  This function builds a static aggregate that can serve as the initial
     --  value for an array type whose bounds are static, and whose component
*************** package body Exp_Ch3 is
*** 152,157 ****
--- 159,170 ----
     --  needed after an initialization. Typ is the component type, and Proc_Id
     --  the initialization procedure for the enclosing composite type.
  
+    procedure Copy_Discr_Checking_Funcs (N : Node_Id);
+    --  For a derived untagged type, copy the attributes that were set
+    --  for the components of the parent type onto the components of the
+    --  derived type. No new subprograms are constructed.
+    --  N is the full type declaration node, as for Build_Discr_Checking_Funcs.
+ 
     procedure Expand_Freeze_Array_Type (N : Node_Id);
     --  Freeze an array type. Deals with building the initialization procedure,
     --  creating the packed array type for a packed array and also with the
*************** package body Exp_Ch3 is
*** 184,189 ****
--- 197,259 ----
     --  Treat user-defined stream operations as renaming_as_body if the
     --  subprogram they rename is not frozen when the type is frozen.
  
+    package Initialization_Control is
+ 
+       function Requires_Late_Init
+         (Decl : Node_Id; Rec_Type : Entity_Id) return Boolean;
+       --  Return True iff the given component declaration requires late
+       --  initialization, as defined by 3.3.1 (8.1/5).
+ 
+       function Has_Late_Init_Component
+         (Tagged_Rec_Type : Entity_Id) return Boolean;
+       --  Return True iff the given tagged record type has at least one
+       --  component that requires late initialization; this includes
+       --  components of ancestor types.
+ 
+       type Initialization_Mode is
+         (Full_Init, Full_Init_Except_Tag, Early_Init_Only, Late_Init_Only);
+       --  The initialization routine for a tagged type is passed in a
+       --  formal parameter of this type, indicating what initialization
+       --  is to be performed. This parameter defaults to Full_Init in all
+       --  cases except when the init proc of a type extension (let's call
+       --  that type T2) calls the init proc of its parent (let's call that
+       --  type T1). In that case, one of the other 3 values will
+       --  be passed in. In all three of those cases, the Tag component has
+       --  already been initialized before the call and is therefore not to be
+       --  modified. T2's init proc will either call T1's init proc
+       --  once (with Full_Init_Except_Tag as the parameter value) or twice
+       --  (first with Early_Init_Only, then later with Late_Init_Only),
+       --  depending on the result returned by Has_Late_Init_Component (T1).
+       --  In the latter case, the first call does not initialize any
+       --  components that require late initialization and the second call
+       --  then performs that deferred initialization.
+       --  Strictly speaking, the formal parameter subtype is actually Natural
+       --  but calls will only pass in values corresponding to literals
+       --  of this enumeration type.
+ 
+       function Make_Mode_Literal
+         (Loc : Source_Ptr; Mode : Initialization_Mode) return Node_Id
+       is (Make_Integer_Literal (Loc, Initialization_Mode'Pos (Mode)));
+       --  Generate an integer literal for a given mode value.
+ 
+       function Tag_Init_Condition
+         (Loc : Source_Ptr;
+          Init_Control_Formal : Entity_Id) return Node_Id;
+       function Early_Init_Condition
+         (Loc : Source_Ptr;
+          Init_Control_Formal : Entity_Id) return Node_Id;
+       function Late_Init_Condition
+         (Loc : Source_Ptr;
+          Init_Control_Formal : Entity_Id) return Node_Id;
+       --  These three functions each return a Boolean expression that
+       --  can be used to determine whether a given call to the initialization
+       --  expression for a tagged type should initialize (respectively)
+       --  the Tag component, the non-Tag components that do not require late
+       --  initialization, and the components that do require late
+       --  initialization.
+ 
+    end Initialization_Control;
+ 
     procedure Initialization_Warning (E : Entity_Id);
     --  If static elaboration of the package is requested, indicate
     --  when a type does meet the conditions for static initialization. If
*************** package body Exp_Ch3 is
*** 214,222 ****
     --  in a case statement, recursively. This latter pattern may occur for the
     --  initialization procedure of an unchecked union.
  
-    function Is_User_Defined_Equality (Prim : Node_Id) return Boolean;
-    --  Returns true if Prim is a user defined equality function
- 
     function Make_Eq_Body
       (Typ     : Entity_Id;
        Eq_Name : Name_Id) return Node_Id;
--- 284,289 ----
*************** package body Exp_Ch3 is
*** 341,355 ****
     --  Freeze entities of all predefined primitive operations. This is needed
     --  because the bodies of these operations do not normally do any freezing.
  
-    function Stream_Operation_OK
-      (Typ       : Entity_Id;
-       Operation : TSS_Name_Type) return Boolean;
-    --  Check whether the named stream operation must be emitted for a given
-    --  type. The rules for inheritance of stream attributes by type extensions
-    --  are enforced by this function. Furthermore, various restrictions prevent
-    --  the generation of these operations, as a useful optimization or for
-    --  certification purposes and to save unnecessary generated code.
- 
     --------------------------
     -- Adjust_Discriminants --
     --------------------------
--- 408,413 ----
*************** package body Exp_Ch3 is
*** 1165,1170 ****
--- 1223,1247 ----
        end if;
     end Build_Discr_Checking_Funcs;
  
+    ----------------------------------------
+    -- Build_Or_Copy_Discr_Checking_Funcs --
+    ----------------------------------------
+ 
+    procedure Build_Or_Copy_Discr_Checking_Funcs (N : Node_Id) is
+       Typ : constant Entity_Id := Defining_Identifier (N);
+    begin
+       if Is_Unchecked_Union (Typ) or else not Has_Discriminants (Typ) then
+          null;
+       elsif not Is_Derived_Type (Typ)
+         or else Has_New_Non_Standard_Rep (Typ)
+         or else Is_Tagged_Type (Typ)
+       then
+          Build_Discr_Checking_Funcs (N);
+       else
+          Copy_Discr_Checking_Funcs (N);
+       end if;
+    end Build_Or_Copy_Discr_Checking_Funcs;
+ 
     --------------------------------
     -- Build_Discriminant_Formals --
     --------------------------------
*************** package body Exp_Ch3 is
*** 1288,1295 ****
        Comp      : Entity_Id;
        Comp_Type : Entity_Id;
  
-       --  Start of processing for Build_Equivalent_Record_Aggregate
- 
     begin
        if not Is_Record_Type (T)
          or else Has_Discriminants (T)
--- 1365,1370 ----
*************** package body Exp_Ch3 is
*** 1449,1462 ****
     --  end;
  
     function Build_Initialization_Call
!      (Loc               : Source_Ptr;
!       Id_Ref            : Node_Id;
!       Typ               : Entity_Id;
!       In_Init_Proc      : Boolean := False;
!       Enclos_Type       : Entity_Id := Empty;
!       Discr_Map         : Elist_Id := New_Elmt_List;
!       With_Default_Init : Boolean := False;
!       Constructor_Ref   : Node_Id := Empty) return List_Id
     is
        Res : constant List_Id := New_List;
  
--- 1524,1538 ----
     --  end;
  
     function Build_Initialization_Call
!      (Loc                 : Source_Ptr;
!       Id_Ref              : Node_Id;
!       Typ                 : Entity_Id;
!       In_Init_Proc        : Boolean := False;
!       Enclos_Type         : Entity_Id := Empty;
!       Discr_Map           : Elist_Id := New_Elmt_List;
!       With_Default_Init   : Boolean := False;
!       Constructor_Ref     : Node_Id := Empty;
!       Init_Control_Actual : Entity_Id := Empty) return List_Id
     is
        Res : constant List_Id := New_List;
  
*************** package body Exp_Ch3 is
*** 1840,1853 ****
  
        --  If this is a call to initialize the parent component of a derived
        --  tagged type, indicate that the tag should not be set in the parent.
  
        if Is_Tagged_Type (Full_Init_Type)
          and then not Is_CPP_Class (Full_Init_Type)
          and then Nkind (Id_Ref) = N_Selected_Component
          and then Chars (Selector_Name (Id_Ref)) = Name_uParent
        then
!          Append_To (Args, New_Occurrence_Of (Standard_False, Loc));
! 
        elsif Present (Constructor_Ref) then
           Append_List_To (Args,
             New_Copy_List (Parameter_Associations (Constructor_Ref)));
--- 1916,1941 ----
  
        --  If this is a call to initialize the parent component of a derived
        --  tagged type, indicate that the tag should not be set in the parent.
+       --  This is done via the actual parameter value for the Init_Control
+       --  formal parameter, which is also used to deal with late initialization
+       --  requirements.
+       --
+       --  We pass in Full_Init_Except_Tag unless the caller tells us to do
+       --  otherwise (by passing in a nonempty Init_Control_Actual parameter).
  
        if Is_Tagged_Type (Full_Init_Type)
          and then not Is_CPP_Class (Full_Init_Type)
          and then Nkind (Id_Ref) = N_Selected_Component
          and then Chars (Selector_Name (Id_Ref)) = Name_uParent
        then
!          declare
!             use Initialization_Control;
!          begin
!             Append_To (Args,
!               (if Present (Init_Control_Actual)
!                then Init_Control_Actual
!                else Make_Mode_Literal (Loc, Full_Init_Except_Tag)));
!          end;
        elsif Present (Constructor_Ref) then
           Append_List_To (Args,
             New_Copy_List (Parameter_Associations (Constructor_Ref)));
*************** package body Exp_Ch3 is
*** 1908,1915 ****
        Counter   : Nat := 0;
        Proc_Id   : Entity_Id;
        Rec_Type  : Entity_Id;
!       Set_Tag   : Entity_Id := Empty;
!       Has_Late_Init_Comp : Boolean := False; -- set in Build_Init_Statements
  
        function Build_Assignment
          (Id      : Entity_Id;
--- 1996,2004 ----
        Counter   : Nat := 0;
        Proc_Id   : Entity_Id;
        Rec_Type  : Entity_Id;
! 
!       Init_Control_Formal : Entity_Id := Empty; -- set in Build_Init_Statements
!       Has_Late_Init_Comp  : Boolean := False;   -- set in Build_Init_Statements
  
        function Build_Assignment
          (Id      : Entity_Id;
*************** package body Exp_Ch3 is
*** 2031,2038 ****
                   and then Present (Incomplete_View (Parent (Rec_Type)))
                 then
                    Append_Elmt (
!                     N  => Defining_Identifier
!                             (Incomplete_View (Parent (Rec_Type))),
                      To => Map);
                    Append_Elmt (
                      N  => Defining_Identifier
--- 2120,2126 ----
                   and then Present (Incomplete_View (Parent (Rec_Type)))
                 then
                    Append_Elmt (
!                     N  => Incomplete_View (Parent (Rec_Type)),
                      To => Map);
                    Append_Elmt (
                      N  => Defining_Identifier
*************** package body Exp_Ch3 is
*** 2534,2539 ****
--- 2622,2628 ----
           Proc_Spec_Node        : Node_Id;
           Record_Extension_Node : Node_Id;
  
+          use Initialization_Control;
        begin
           Body_Stmts := New_List;
           Body_Node := New_Node (N_Subprogram_Body, Loc);
*************** package body Exp_Ch3 is
*** 2546,2566 ****
           Append_List_To (Parameters,
             Build_Discriminant_Formals (Rec_Type, True));
  
!          --  For tagged types, we add a flag to indicate whether the routine
!          --  is called to initialize a parent component in the init_proc of
!          --  a type extension. If the flag is false, we do not set the tag
!          --  because it has been set already in the extension.
  
           if Is_Tagged_Type (Rec_Type) then
!             Set_Tag := Make_Temporary (Loc, 'P');
  
              Append_To (Parameters,
                Make_Parameter_Specification (Loc,
!                 Defining_Identifier => Set_Tag,
                  Parameter_Type =>
!                   New_Occurrence_Of (Standard_Boolean, Loc),
!                 Expression =>
!                   New_Occurrence_Of (Standard_True, Loc)));
           end if;
  
           --  Create an extra accessibility parameter to capture the level of
--- 2635,2661 ----
           Append_List_To (Parameters,
             Build_Discriminant_Formals (Rec_Type, True));
  
!          --  For tagged types, we add a parameter to indicate what
!          --  portion of the object's initialization is to be performed.
!          --  This is used for two purposes:
!          --   1)  When a type extension's initialization procedure calls
!          --       the initialization procedure of the parent type, we do
!          --       not want the parent to initialize the Tag component;
!          --       it has been set already.
!          --   2)  If an ancestor type has at least one component that requires
!          --       late initialization, then we need to be able to initialize
!          --       those components separately after initializing any other
!          --       components.
  
           if Is_Tagged_Type (Rec_Type) then
!             Init_Control_Formal := Make_Temporary (Loc, 'P');
  
              Append_To (Parameters,
                Make_Parameter_Specification (Loc,
!                 Defining_Identifier => Init_Control_Formal,
                  Parameter_Type =>
!                   New_Occurrence_Of (Standard_Natural, Loc),
!                 Expression => Make_Mode_Literal (Loc, Full_Init)));
           end if;
  
           --  Create an extra accessibility parameter to capture the level of
*************** package body Exp_Ch3 is
*** 2624,2645 ****
                       declare
                          Parent_IP : constant Name_Id :=
                                        Make_Init_Proc_Name (Etype (Rec_Ent));
!                         Stmt      : Node_Id;
!                         IP_Call   : Node_Id;
!                         IP_Stmts  : List_Id;
! 
                       begin
!                         --  Look for a call to the parent IP at the beginning
!                         --  of Stmts associated with the record extension
  
-                         Stmt := First (Stmts);
-                         IP_Call := Empty;
                          while Present (Stmt) loop
!                            if Nkind (Stmt) = N_Procedure_Call_Statement
!                              and then Chars (Name (Stmt)) = Parent_IP
!                            then
!                               IP_Call := Stmt;
!                               exit;
                             end if;
  
                             Next (Stmt);
--- 2719,2763 ----
                       declare
                          Parent_IP : constant Name_Id :=
                                        Make_Init_Proc_Name (Etype (Rec_Ent));
!                         Stmt      : Node_Id := First (Stmts);
!                         IP_Call   : Node_Id := Empty;
                       begin
!                         --  Look for a call to the parent IP associated with
!                         --  the record extension.
!                         --  The call will be inside not one but two
!                         --  if-statements (with the same condition). Testing
!                         --  the same Early_Init condition twice might seem
!                         --  redundant. However, as soon as we exit this loop,
!                         --  we are going to hoist the inner if-statement out
!                         --  of the outer one; the "redundant" test was built
!                         --  in anticipation of this hoisting.
  
                          while Present (Stmt) loop
!                            if Nkind (Stmt) = N_If_Statement then
!                               declare
!                                  Then_Stmt1 : Node_Id :=
!                                    First (Then_Statements (Stmt));
!                                  Then_Stmt2 : Node_Id;
!                               begin
!                                  while Present (Then_Stmt1) loop
!                                     if Nkind (Then_Stmt1) = N_If_Statement then
!                                        Then_Stmt2 :=
!                                          First (Then_Statements (Then_Stmt1));
! 
!                                        if Nkind (Then_Stmt2) =
!                                             N_Procedure_Call_Statement
!                                          and then Chars (Name (Then_Stmt2)) =
!                                            Parent_IP
!                                        then
!                                           --  IP_Call is a call wrapped in an
!                                           --  if statement.
!                                           IP_Call := Then_Stmt1;
!                                           exit;
!                                        end if;
!                                     end if;
!                                     Next (Then_Stmt1);
!                                  end loop;
!                               end;
                             end if;
  
                             Next (Stmt);
*************** package body Exp_Ch3 is
*** 2649,2662 ****
                          --  statements of this IP routine
  
                          if Present (IP_Call) then
!                            IP_Stmts := New_List;
!                            loop
!                               Stmt := Remove_Head (Stmts);
!                               Append_To (IP_Stmts, Stmt);
!                               exit when Stmt = IP_Call;
!                            end loop;
! 
!                            Prepend_List_To (Body_Stmts, IP_Stmts);
                          end if;
                       end;
                    end if;
--- 2767,2774 ----
                          --  statements of this IP routine
  
                          if Present (IP_Call) then
!                            Remove (IP_Call);
!                            Prepend_List_To (Body_Stmts, New_List (IP_Call));
                          end if;
                       end;
                    end if;
*************** package body Exp_Ch3 is
*** 2731,2737 ****
  
                       Elab_List := New_List (
                         Make_If_Statement (Loc,
!                          Condition       => New_Occurrence_Of (Set_Tag, Loc),
                           Then_Statements => Init_Tags_List));
  
                       if Elab_Flag_Needed (Rec_Type) then
--- 2843,2850 ----
  
                       Elab_List := New_List (
                         Make_If_Statement (Loc,
!                          Condition       =>
!                            Tag_Init_Condition (Loc, Init_Control_Formal),
                           Then_Statements => Init_Tags_List));
  
                       if Elab_Flag_Needed (Rec_Type) then
*************** package body Exp_Ch3 is
*** 2757,2763 ****
                 else
                    Prepend_To (Body_Stmts,
                      Make_If_Statement (Loc,
!                       Condition       => New_Occurrence_Of (Set_Tag, Loc),
                        Then_Statements => Init_Tags_List));
                 end if;
  
--- 2870,2877 ----
                 else
                    Prepend_To (Body_Stmts,
                      Make_If_Statement (Loc,
!                       Condition =>
!                         Tag_Init_Condition (Loc, Init_Control_Formal),
                        Then_Statements => Init_Tags_List));
                 end if;
  
*************** package body Exp_Ch3 is
*** 2825,2835 ****
                 begin
                    --  Search for the call to the IP of the parent. We assume
                    --  that the first init_proc call is for the parent.
  
                    Ins_Nod := First (Body_Stmts);
                    while Present (Next (Ins_Nod))
!                     and then (Nkind (Ins_Nod) /= N_Procedure_Call_Statement
!                                or else not Is_Init_Proc (Name (Ins_Nod)))
                    loop
                       Next (Ins_Nod);
                    end loop;
--- 2939,2956 ----
                 begin
                    --  Search for the call to the IP of the parent. We assume
                    --  that the first init_proc call is for the parent.
+                   --  It is wrapped in an "if Early_Init_Condition"
+                   --  if-statement.
  
                    Ins_Nod := First (Body_Stmts);
                    while Present (Next (Ins_Nod))
!                     and then
!                       (Nkind (Ins_Nod) /= N_If_Statement
!                         or else (Nkind (First (Then_Statements (Ins_Nod)))
!                                    /= N_Procedure_Call_Statement)
!                         or else not Is_Init_Proc
!                                       (Name (First (Then_Statements
!                                          (Ins_Nod)))))
                    loop
                       Next (Ins_Nod);
                    end loop;
*************** package body Exp_Ch3 is
*** 2976,3009 ****
           Decl               : Node_Id;
           Id                 : Entity_Id;
           Parent_Stmts       : List_Id;
!          Stmts              : List_Id;
           Typ                : Entity_Id;
  
!          procedure Increment_Counter (Loc : Source_Ptr);
           --  Generate an "increment by one" statement for the current counter
!          --  and append it to the list Stmts.
  
           procedure Make_Counter (Loc : Source_Ptr);
           --  Create a new counter for the current component list. The routine
           --  creates a new defining Id, adds an object declaration and sets
           --  the Id generator for the next variant.
  
-          function Requires_Late_Initialization
-            (Decl     : Node_Id;
-             Rec_Type : Entity_Id) return Boolean;
-          --  Return whether the given Decl requires late initialization, as
-          --  defined by 3.3.1 (8.1/5).
- 
           -----------------------
           -- Increment_Counter --
           -----------------------
  
!          procedure Increment_Counter (Loc : Source_Ptr) is
           begin
              --  Generate:
              --    Counter := Counter + 1;
  
!             Append_To (Stmts,
                Make_Assignment_Statement (Loc,
                  Name       => New_Occurrence_Of (Counter_Id, Loc),
                  Expression =>
--- 3097,3127 ----
           Decl               : Node_Id;
           Id                 : Entity_Id;
           Parent_Stmts       : List_Id;
!          Parent_Id          : Entity_Id := Empty;
!          Stmts, Late_Stmts  : List_Id := Empty_List;
           Typ                : Entity_Id;
  
!          procedure Increment_Counter
!            (Loc  : Source_Ptr; Late : Boolean := False);
           --  Generate an "increment by one" statement for the current counter
!          --  and append it to the appropriate statement list.
  
           procedure Make_Counter (Loc : Source_Ptr);
           --  Create a new counter for the current component list. The routine
           --  creates a new defining Id, adds an object declaration and sets
           --  the Id generator for the next variant.
  
           -----------------------
           -- Increment_Counter --
           -----------------------
  
!          procedure Increment_Counter
!            (Loc  : Source_Ptr; Late : Boolean := False) is
           begin
              --  Generate:
              --    Counter := Counter + 1;
  
!             Append_To ((if Late then Late_Stmts else Stmts),
                Make_Assignment_Statement (Loc,
                  Name       => New_Occurrence_Of (Counter_Id, Loc),
                  Expression =>
*************** package body Exp_Ch3 is
*** 3040,3196 ****
                    Make_Integer_Literal (Loc, 0)));
           end Make_Counter;
  
-          ----------------------------------
-          -- Requires_Late_Initialization --
-          ----------------------------------
- 
-          function Requires_Late_Initialization
-            (Decl     : Node_Id;
-             Rec_Type : Entity_Id) return Boolean
-          is
-             References_Current_Instance : Boolean := False;
-             Has_Access_Discriminant     : Boolean := False;
-             Has_Internal_Call           : Boolean := False;
- 
-             function Find_Access_Discriminant
-               (N : Node_Id) return Traverse_Result;
-             --  Look for a name denoting an access discriminant
- 
-             function Find_Current_Instance
-               (N : Node_Id) return Traverse_Result;
-             --  Look for a reference to the current instance of the type
- 
-             function Find_Internal_Call
-               (N : Node_Id) return Traverse_Result;
-             --  Look for an internal protected function call
- 
-             ------------------------------
-             -- Find_Access_Discriminant --
-             ------------------------------
- 
-             function Find_Access_Discriminant
-               (N : Node_Id) return Traverse_Result is
-             begin
-                if Is_Entity_Name (N)
-                  and then Denotes_Discriminant (N)
-                  and then Is_Access_Type (Etype (N))
-                then
-                   Has_Access_Discriminant := True;
-                   return Abandon;
-                else
-                   return OK;
-                end if;
-             end Find_Access_Discriminant;
- 
-             ---------------------------
-             -- Find_Current_Instance --
-             ---------------------------
- 
-             function Find_Current_Instance
-               (N : Node_Id) return Traverse_Result is
-             begin
-                if Is_Entity_Name (N)
-                  and then Present (Entity (N))
-                  and then Is_Current_Instance (N)
-                then
-                   References_Current_Instance := True;
-                   return Abandon;
-                else
-                   return OK;
-                end if;
-             end Find_Current_Instance;
- 
-             ------------------------
-             -- Find_Internal_Call --
-             ------------------------
- 
-             function Find_Internal_Call (N : Node_Id) return Traverse_Result is
- 
-                function Call_Scope (N : Node_Id) return Entity_Id;
-                --  Return the scope enclosing a given call node N
- 
-                ----------------
-                -- Call_Scope --
-                ----------------
- 
-                function Call_Scope (N : Node_Id) return Entity_Id is
-                   Nam : constant Node_Id := Name (N);
-                begin
-                   if Nkind (Nam) = N_Selected_Component then
-                      return Scope (Entity (Prefix (Nam)));
-                   else
-                      return Scope (Entity (Nam));
-                   end if;
-                end Call_Scope;
- 
-             begin
-                if Nkind (N) = N_Function_Call
-                  and then Call_Scope (N)
-                             = Corresponding_Concurrent_Type (Rec_Type)
-                then
-                   Has_Internal_Call := True;
-                   return Abandon;
-                else
-                   return OK;
-                end if;
-             end Find_Internal_Call;
- 
-             procedure Search_Access_Discriminant is new
-               Traverse_Proc (Find_Access_Discriminant);
- 
-             procedure Search_Current_Instance is new
-               Traverse_Proc (Find_Current_Instance);
- 
-             procedure Search_Internal_Call is new
-               Traverse_Proc (Find_Internal_Call);
- 
-          begin
-             --  A component of an object is said to require late initialization
-             --  if:
- 
-             --  it has an access discriminant value constrained by a per-object
-             --  expression;
- 
-             if Has_Access_Constraint (Defining_Identifier (Decl))
-               and then No (Expression (Decl))
-             then
-                return True;
- 
-             elsif Present (Expression (Decl)) then
- 
-                --  it has an initialization expression that includes a name
-                --  denoting an access discriminant;
- 
-                Search_Access_Discriminant (Expression (Decl));
- 
-                if Has_Access_Discriminant then
-                   return True;
-                end if;
- 
-                --  or it has an initialization expression that includes a
-                --  reference to the current instance of the type either by
-                --  name...
- 
-                Search_Current_Instance (Expression (Decl));
- 
-                if References_Current_Instance then
-                   return True;
-                end if;
- 
-                --  ...or implicitly as the target object of a call.
- 
-                if Is_Protected_Record_Type (Rec_Type) then
-                   Search_Internal_Call (Expression (Decl));
- 
-                   if Has_Internal_Call then
-                      return True;
-                   end if;
-                end if;
-             end if;
- 
-             return False;
-          end Requires_Late_Initialization;
- 
        --  Start of processing for Build_Init_Statements
  
        begin
--- 3158,3163 ----
*************** package body Exp_Ch3 is
*** 3258,3264 ****
              --  Leave any processing of component requiring late initialization
              --  for the second pass.
  
!             if Requires_Late_Initialization (Decl, Rec_Type) then
                 Has_Late_Init_Comp := True;
  
              --  Regular component cases
--- 3225,3234 ----
              --  Leave any processing of component requiring late initialization
              --  for the second pass.
  
!             if Initialization_Control.Requires_Late_Init (Decl, Rec_Type) then
!                if not Has_Late_Init_Comp then
!                   Late_Stmts := New_List;
!                end if;
                 Has_Late_Init_Comp := True;
  
              --  Regular component cases
*************** package body Exp_Ch3 is
*** 3340,3350 ****
                          --  Pragma case
  
                          if Nkind (Ritem) = N_Pragma then
!                            Exp := First (Pragma_Argument_Associations (Ritem));
! 
!                            if Nkind (Exp) = N_Pragma_Argument_Association then
!                               Exp := Expression (Exp);
!                            end if;
  
                             --  Conversion for Priority expression
  
--- 3310,3318 ----
                          --  Pragma case
  
                          if Nkind (Ritem) = N_Pragma then
!                            Exp :=
!                              Get_Pragma_Arg
!                                (First (Pragma_Argument_Associations (Ritem)));
  
                             --  Conversion for Priority expression
  
*************** package body Exp_Ch3 is
*** 3405,3421 ****
                 elsif not Is_Interface (Typ)
                   and then Has_Non_Null_Base_Init_Proc (Typ)
                 then
!                   Actions :=
!                     Build_Initialization_Call
!                       (Comp_Loc,
!                        Make_Selected_Component (Comp_Loc,
!                          Prefix        =>
!                            Make_Identifier (Comp_Loc, Name_uInit),
!                          Selector_Name => New_Occurrence_Of (Id, Comp_Loc)),
!                        Typ,
!                        In_Init_Proc => True,
!                        Enclos_Type  => Rec_Type,
!                        Discr_Map    => Discr_Map);
  
                    Clean_Task_Names (Typ, Proc_Id);
  
--- 3373,3428 ----
                 elsif not Is_Interface (Typ)
                   and then Has_Non_Null_Base_Init_Proc (Typ)
                 then
!                   declare
!                      use Initialization_Control;
!                      Init_Control_Actual : Node_Id := Empty;
!                      Is_Parent : constant Boolean := Chars (Id) = Name_uParent;
!                      Init_Call_Stmts : List_Id;
!                   begin
!                      if Is_Parent and then Has_Late_Init_Component (Etype (Id))
!                      then
!                         Init_Control_Actual :=
!                           Make_Mode_Literal (Comp_Loc, Early_Init_Only);
!                         --  Parent_Id used later in second call to parent's
!                         --  init proc to initialize late-init components.
!                         Parent_Id := Id;
!                      end if;
! 
!                      Init_Call_Stmts :=
!                        Build_Initialization_Call
!                          (Comp_Loc,
!                           Make_Selected_Component (Comp_Loc,
!                             Prefix        =>
!                               Make_Identifier (Comp_Loc, Name_uInit),
!                             Selector_Name => New_Occurrence_Of (Id, Comp_Loc)),
!                           Typ,
!                           In_Init_Proc        => True,
!                           Enclos_Type         => Rec_Type,
!                           Discr_Map           => Discr_Map,
!                           Init_Control_Actual => Init_Control_Actual);
! 
!                      if Is_Parent then
!                         --  This is tricky. At first it looks like
!                         --  we are going to end up with nested
!                         --  if-statements with the same condition:
!                         --    if Early_Init_Condition then
!                         --       if Early_Init_Condition then
!                         --          Parent_TypeIP (...);
!                         --       end if;
!                         --    end if;
!                         --  But later we will hoist the inner if-statement
!                         --  out of the outer one; we do this  because the
!                         --  init-proc call for the _Parent component of a type
!                         --  extension has to precede any other initialization.
!                         Actions :=
!                           New_List (Make_If_Statement (Loc,
!                             Condition =>
!                               Early_Init_Condition (Loc, Init_Control_Formal),
!                             Then_Statements => Init_Call_Stmts));
!                      else
!                         Actions := Init_Call_Stmts;
!                      end if;
!                   end;
  
                    Clean_Task_Names (Typ, Proc_Id);
  
*************** package body Exp_Ch3 is
*** 3445,3451 ****
                 --  DIC here.
  
                 if Has_DIC (Typ)
!                  and then not Present (Expression (Decl))
                   and then Present (DIC_Procedure (Typ))
                   and then not Has_Null_Body (DIC_Procedure (Typ))
  
--- 3452,3458 ----
                 --  DIC here.
  
                 if Has_DIC (Typ)
!                  and then No (Expression (Decl))
                   and then Present (DIC_Procedure (Typ))
                   and then not Has_Null_Body (DIC_Procedure (Typ))
  
*************** package body Exp_Ch3 is
*** 3483,3489 ****
                 if Present (Actions) then
                    if Chars (Id) = Name_uParent then
                       Append_List_To (Parent_Stmts, Actions);
- 
                    else
                       Append_List_To (Stmts, Actions);
  
--- 3490,3495 ----
*************** package body Exp_Ch3 is
*** 3597,3602 ****
--- 3603,3636 ----
  
           --  Second pass: components that require late initialization
  
+          if Present (Parent_Id) then
+             declare
+                Parent_Loc : constant Source_Ptr := Sloc (Parent (Parent_Id));
+                use Initialization_Control;
+             begin
+                --  We are building the init proc for a type extension.
+                --  Call the parent type's init proc a second time, this
+                --  time to initialize the parent's components that require
+                --  late initialization.
+ 
+                Append_List_To (Late_Stmts,
+                  Build_Initialization_Call
+                    (Loc                  => Parent_Loc,
+                     Id_Ref               =>
+                       Make_Selected_Component (Parent_Loc,
+                         Prefix        => Make_Identifier
+                                            (Parent_Loc, Name_uInit),
+                         Selector_Name => New_Occurrence_Of (Parent_Id,
+                                                             Parent_Loc)),
+                     Typ                 => Etype (Parent_Id),
+                     In_Init_Proc        => True,
+                     Enclos_Type         => Rec_Type,
+                     Discr_Map           => Discr_Map,
+                     Init_Control_Actual => Make_Mode_Literal
+                                              (Parent_Loc, Late_Init_Only)));
+             end;
+          end if;
+ 
           if Has_Late_Init_Comp then
              Decl := First_Non_Pragma (Component_Items (Comp_List));
              while Present (Decl) loop
*************** package body Exp_Ch3 is
*** 3604,3616 ****
                 Id := Defining_Identifier (Decl);
                 Typ := Etype (Id);
  
!                if Requires_Late_Initialization (Decl, Rec_Type) then
                    if Present (Expression (Decl)) then
!                      Append_List_To (Stmts,
                         Build_Assignment (Id, Expression (Decl)));
  
                    elsif Has_Non_Null_Base_Init_Proc (Typ) then
!                      Append_List_To (Stmts,
                         Build_Initialization_Call (Comp_Loc,
                           Make_Selected_Component (Comp_Loc,
                             Prefix        =>
--- 3638,3651 ----
                 Id := Defining_Identifier (Decl);
                 Typ := Etype (Id);
  
!                if Initialization_Control.Requires_Late_Init (Decl, Rec_Type)
!                then
                    if Present (Expression (Decl)) then
!                      Append_List_To (Late_Stmts,
                         Build_Assignment (Id, Expression (Decl)));
  
                    elsif Has_Non_Null_Base_Init_Proc (Typ) then
!                      Append_List_To (Late_Stmts,
                         Build_Initialization_Call (Comp_Loc,
                           Make_Selected_Component (Comp_Loc,
                             Prefix        =>
*************** package body Exp_Ch3 is
*** 3630,3639 ****
                             Make_Counter (Comp_Loc);
                          end if;
  
!                         Increment_Counter (Comp_Loc);
                       end if;
                    elsif Component_Needs_Simple_Initialization (Typ) then
!                      Append_List_To (Stmts,
                         Build_Assignment
                           (Id      => Id,
                            Default =>
--- 3665,3674 ----
                             Make_Counter (Comp_Loc);
                          end if;
  
!                         Increment_Counter (Comp_Loc, Late => True);
                       end if;
                    elsif Component_Needs_Simple_Initialization (Typ) then
!                      Append_List_To (Late_Stmts,
                         Build_Assignment
                           (Id      => Id,
                            Default =>
*************** package body Exp_Ch3 is
*** 3648,3654 ****
              end loop;
           end if;
  
!          --  Process the variant part
  
           if Present (Variant_Part (Comp_List)) then
              declare
--- 3683,3690 ----
              end loop;
           end if;
  
!          --  Process the variant part (incorrectly ignoring late
!          --  initialization requirements for components therein).
  
           if Present (Variant_Part (Comp_List)) then
              declare
*************** package body Exp_Ch3 is
*** 3683,3698 ****
              end;
           end if;
  
!          --  If no initializations when generated for component declarations
!          --  corresponding to this Stmts, append a null statement to Stmts to
!          --  to make it a valid Ada tree.
  
!          if Is_Empty_List (Stmts) then
!             Append (Make_Null_Statement (Loc), Stmts);
!          end if;
  
!          return Stmts;
  
        exception
           when RE_Not_Available =>
              return Empty_List;
--- 3719,3760 ----
              end;
           end if;
  
!          if No (Init_Control_Formal) then
!             Append_List_To (Stmts, Late_Stmts);
  
!             --  If no initializations were generated for component declarations
!             --  and included in Stmts, then append a null statement to Stmts
!             --  to make it a valid Ada tree.
  
!             if Is_Empty_List (Stmts) then
!                Append (Make_Null_Statement (Loc), Stmts);
!             end if;
! 
!             return Stmts;
!          else
!             declare
!                use Initialization_Control;
  
+                If_Early : constant Node_Id :=
+                   (if Is_Empty_List (Stmts) then
+                       Make_Null_Statement (Loc)
+                    else
+                       Make_If_Statement (Loc,
+                         Condition =>
+                           Early_Init_Condition (Loc, Init_Control_Formal),
+                         Then_Statements => Stmts));
+                If_Late : constant Node_Id :=
+                   (if Is_Empty_List (Late_Stmts) then
+                       Make_Null_Statement (Loc)
+                    else
+                       Make_If_Statement (Loc,
+                         Condition =>
+                           Late_Init_Condition (Loc, Init_Control_Formal),
+                         Then_Statements => Late_Stmts));
+             begin
+                return New_List (If_Early, If_Late);
+             end;
+          end if;
        exception
           when RE_Not_Available =>
              return Empty_List;
*************** package body Exp_Ch3 is
*** 4443,4449 ****
        Comp     : Entity_Id;
        Decl     : Node_Id;
        Op       : Entity_Id;
-       Prim     : Elmt_Id;
        Eq_Op    : Entity_Id;
  
        function User_Defined_Eq (T : Entity_Id) return Entity_Id;
--- 4505,4510 ----
*************** package body Exp_Ch3 is
*** 4456,4487 ****
        ---------------------
  
        function User_Defined_Eq (T : Entity_Id) return Entity_Id is
!          Prim : Elmt_Id;
!          Op   : Entity_Id;
  
        begin
-          Op := TSS (T, TSS_Composite_Equality);
- 
           if Present (Op) then
              return Op;
           end if;
- 
-          Prim := First_Elmt (Collect_Primitive_Operations (T));
-          while Present (Prim) loop
-             Op := Node (Prim);
- 
-             if Chars (Op) = Name_Op_Eq
-               and then Etype (Op) = Standard_Boolean
-               and then Etype (First_Formal (Op)) = T
-               and then Etype (Next_Formal (First_Formal (Op))) = T
-             then
-                return Op;
-             end if;
- 
-             Next_Elmt (Prim);
-          end loop;
- 
-          return Empty;
        end User_Defined_Eq;
  
     --  Start of processing for Build_Untagged_Equality
--- 4517,4530 ----
        ---------------------
  
        function User_Defined_Eq (T : Entity_Id) return Entity_Id is
!          Op : constant Entity_Id := TSS (T, TSS_Composite_Equality);
  
        begin
           if Present (Op) then
              return Op;
+          else
+             return Get_User_Defined_Equality (T);
           end if;
        end User_Defined_Eq;
  
     --  Start of processing for Build_Untagged_Equality
*************** package body Exp_Ch3 is
*** 4497,4502 ****
--- 4540,4546 ----
             and then Present (User_Defined_Eq (Etype (Comp)))
           then
              Build_Eq := True;
+             exit;
           end if;
  
           Next_Component (Comp);
*************** package body Exp_Ch3 is
*** 4505,4527 ****
        --  If there is a user-defined equality for the type, we do not create
        --  the implicit one.
  
!       Prim := First_Elmt (Collect_Primitive_Operations (Typ));
!       Eq_Op := Empty;
!       while Present (Prim) loop
!          if Chars (Node (Prim)) = Name_Op_Eq
!            and then Comes_From_Source (Node (Prim))
! 
!          --  Don't we also need to check formal types and return type as in
!          --  User_Defined_Eq above???
! 
!          then
!             Eq_Op := Node (Prim);
              Build_Eq := False;
!             exit;
           end if;
! 
!          Next_Elmt (Prim);
!       end loop;
  
        --  If the type is derived, inherit the operation, if present, from the
        --  parent type. It may have been declared after the type derivation. If
--- 4549,4562 ----
        --  If there is a user-defined equality for the type, we do not create
        --  the implicit one.
  
!       Eq_Op := Get_User_Defined_Equality (Typ);
!       if Present (Eq_Op) then
!          if Comes_From_Source (Eq_Op) then
              Build_Eq := False;
!          else
!             Eq_Op := Empty;
           end if;
!       end if;
  
        --  If the type is derived, inherit the operation, if present, from the
        --  parent type. It may have been declared after the type derivation. If
*************** package body Exp_Ch3 is
*** 4530,4568 ****
        --  flags. Ditto for inequality.
  
        if No (Eq_Op) and then Is_Derived_Type (Typ) then
!          Prim := First_Elmt (Collect_Primitive_Operations (Etype (Typ)));
!          while Present (Prim) loop
!             if Chars (Node (Prim)) = Name_Op_Eq then
!                Copy_TSS (Node (Prim), Typ);
!                Build_Eq := False;
  
!                declare
!                   Op    : constant Entity_Id := User_Defined_Eq (Typ);
!                   Eq_Op : constant Entity_Id := Node (Prim);
!                   NE_Op : constant Entity_Id := Next_Entity (Eq_Op);
  
!                begin
!                   if Present (Op) then
!                      Set_Alias (Op, Eq_Op);
!                      Set_Is_Abstract_Subprogram
!                        (Op, Is_Abstract_Subprogram (Eq_Op));
  
!                      if Chars (Next_Entity (Op)) = Name_Op_Ne then
!                         Set_Is_Abstract_Subprogram
!                           (Next_Entity (Op), Is_Abstract_Subprogram (NE_Op));
!                      end if;
                    end if;
!                end;
! 
!                exit;
!             end if;
! 
!             Next_Elmt (Prim);
!          end loop;
        end if;
  
        --  If not inherited and not user-defined, build body as for a type with
!       --  tagged components.
  
        if Build_Eq then
           Decl :=
--- 4565,4597 ----
        --  flags. Ditto for inequality.
  
        if No (Eq_Op) and then Is_Derived_Type (Typ) then
!          Eq_Op := Get_User_Defined_Equality (Etype (Typ));
!          if Present (Eq_Op) then
!             Copy_TSS (Eq_Op, Typ);
!             Build_Eq := False;
  
!             declare
!                Op    : constant Entity_Id := User_Defined_Eq (Typ);
!                NE_Op : constant Entity_Id := Next_Entity (Eq_Op);
  
!             begin
!                if Present (Op) then
!                   Set_Alias (Op, Eq_Op);
!                   Set_Is_Abstract_Subprogram
!                     (Op, Is_Abstract_Subprogram (Eq_Op));
  
!                   if Chars (Next_Entity (Op)) = Name_Op_Ne then
!                      Set_Is_Abstract_Subprogram
!                        (Next_Entity (Op), Is_Abstract_Subprogram (NE_Op));
                    end if;
!                end if;
!             end;
!          end if;
        end if;
  
        --  If not inherited and not user-defined, build body as for a type with
!       --  components of record type (i.e. a type for which "=" composes when
!       --  used as a component in an outer composite type).
  
        if Build_Eq then
           Decl :=
*************** package body Exp_Ch3 is
*** 4835,4880 ****
        end if;
     end Clean_Task_Names;
  
!    ----------------------------------------
!    -- Ensure_Activation_Chain_And_Master --
!    ----------------------------------------
! 
!    procedure Ensure_Activation_Chain_And_Master (Obj_Decl : Node_Id) is
!       Def_Id : constant Entity_Id := Defining_Identifier (Obj_Decl);
!       Expr   : constant Node_Id   := Expression (Obj_Decl);
!       Expr_Q : Node_Id;
!       Typ    : constant Entity_Id := Etype (Def_Id);
  
     begin
!       pragma Assert (Nkind (Obj_Decl) = N_Object_Declaration);
! 
!       if Might_Have_Tasks (Typ) then
!          Build_Activation_Chain_Entity (Obj_Decl);
! 
!          if Has_Task (Typ) then
!             Build_Master_Entity (Def_Id);
! 
!          --  Handle objects initialized with BIP function calls
! 
!          elsif Present (Expr) then
!             if Nkind (Expr) = N_Qualified_Expression then
!                Expr_Q := Expression (Expr);
!             else
!                Expr_Q := Expr;
!             end if;
! 
!             if Is_Build_In_Place_Function_Call (Expr_Q)
!               or else Present (Unqual_BIP_Iface_Function_Call (Expr_Q))
!               or else
!                 (Nkind (Expr_Q) = N_Reference
!                    and then
!                  Is_Build_In_Place_Function_Call (Prefix (Expr_Q)))
!             then
!                Build_Master_Entity (Def_Id);
!             end if;
           end if;
!       end if;
!    end Ensure_Activation_Chain_And_Master;
  
     ------------------------------
     -- Expand_Freeze_Array_Type --
--- 4864,4889 ----
        end if;
     end Clean_Task_Names;
  
!    -------------------------------
!    -- Copy_Discr_Checking_Funcs --
!    -------------------------------
  
+    procedure Copy_Discr_Checking_Funcs (N : Node_Id) is
+       Typ      : constant Entity_Id := Defining_Identifier (N);
+       Comp     : Entity_Id := First_Component (Typ);
+       Old_Comp : Entity_Id := First_Component
+                                 (Base_Type (Underlying_Type (Etype (Typ))));
     begin
!       while Present (Comp) loop
!          if Chars (Comp) = Chars (Old_Comp) then
!             Set_Discriminant_Checking_Func
!               (Comp, Discriminant_Checking_Func (Old_Comp));
           end if;
! 
!          Next_Component (Old_Comp);
!          Next_Component (Comp);
!       end loop;
!    end Copy_Discr_Checking_Funcs;
  
     ------------------------------
     -- Expand_Freeze_Array_Type --
*************** package body Exp_Ch3 is
*** 5362,5367 ****
--- 5371,5380 ----
        procedure Register_Dispatch_Table_Wrappers (Typ : Entity_Id);
        --  Register dispatch-table wrappers in the dispatch table of Typ
  
+       procedure Validate_Tagged_Type_Extra_Formals (Typ : Entity_Id);
+       --  Check extra formals of dispatching primitives of tagged type Typ.
+       --  Used in pragma Debug.
+ 
        ---------------------------------------
        -- Build_Class_Condition_Subprograms --
        ---------------------------------------
*************** package body Exp_Ch3 is
*** 5491,5496 ****
--- 5504,5581 ----
           end loop;
        end Register_Dispatch_Table_Wrappers;
  
+       ----------------------------------------
+       -- Validate_Tagged_Type_Extra_Formals --
+       ----------------------------------------
+ 
+       procedure Validate_Tagged_Type_Extra_Formals (Typ : Entity_Id) is
+          Ovr_Subp : Entity_Id;
+          Elmt     : Elmt_Id;
+          Subp     : Entity_Id;
+ 
+       begin
+          pragma Assert (not Is_Class_Wide_Type (Typ));
+ 
+          --  No check required if expansion is not active since we never
+          --  generate extra formals in such case.
+ 
+          if not Expander_Active then
+             return;
+          end if;
+ 
+          Elmt := First_Elmt (Primitive_Operations (Typ));
+          while Present (Elmt) loop
+             Subp := Node (Elmt);
+ 
+             --  Extra formals of a dispatching primitive must match:
+ 
+             --  1) The extra formals of its covered interface primitive
+ 
+             if Present (Interface_Alias (Subp)) then
+                pragma Assert
+                  (Extra_Formals_Match_OK
+                    (E     => Interface_Alias (Subp),
+                     Ref_E => Alias (Subp)));
+             end if;
+ 
+             --  2) The extra formals of its renamed primitive
+ 
+             if Present (Alias (Subp)) then
+                pragma Assert
+                  (Extra_Formals_Match_OK
+                    (E     => Subp,
+                     Ref_E => Ultimate_Alias (Subp)));
+             end if;
+ 
+             --  3) The extra formals of its overridden primitive
+ 
+             if Present (Overridden_Operation (Subp)) then
+                Ovr_Subp := Overridden_Operation (Subp);
+ 
+                --  Handle controlling function wrapper
+ 
+                if Is_Wrapper (Subp)
+                  and then Ultimate_Alias (Ovr_Subp) = Subp
+                then
+                   if Present (Overridden_Operation (Ovr_Subp)) then
+                      pragma Assert
+                        (Extra_Formals_Match_OK
+                          (E     => Subp,
+                           Ref_E => Overridden_Operation (Ovr_Subp)));
+                   end if;
+ 
+                else
+                   pragma Assert
+                     (Extra_Formals_Match_OK
+                       (E     => Subp,
+                        Ref_E => Ovr_Subp));
+                end if;
+             end if;
+ 
+             Next_Elmt (Elmt);
+          end loop;
+       end Validate_Tagged_Type_Extra_Formals;
+ 
        --  Local variables
  
        Typ      : constant Node_Id := Entity (N);
*************** package body Exp_Ch3 is
*** 5520,5559 ****
        --  we copy explicitly the discriminant checking functions from the
        --  parent into the components of the derived type.
  
!       if not Is_Derived_Type (Typ)
!         or else Has_New_Non_Standard_Rep (Typ)
!         or else Is_Tagged_Type (Typ)
!       then
!          Build_Discr_Checking_Funcs (Typ_Decl);
! 
!       elsif Is_Derived_Type (Typ)
!         and then not Is_Tagged_Type (Typ)
! 
!         --  If we have a derived Unchecked_Union, we do not inherit the
!         --  discriminant checking functions from the parent type since the
!         --  discriminants are non existent.
! 
!         and then not Is_Unchecked_Union (Typ)
!         and then Has_Discriminants (Typ)
!       then
!          declare
!             Old_Comp : Entity_Id;
! 
!          begin
!             Old_Comp :=
!               First_Component (Base_Type (Underlying_Type (Etype (Typ))));
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
!                if Chars (Comp) = Chars (Old_Comp) then
!                   Set_Discriminant_Checking_Func
!                     (Comp, Discriminant_Checking_Func (Old_Comp));
!                end if;
! 
!                Next_Component (Old_Comp);
!                Next_Component (Comp);
!             end loop;
!          end;
!       end if;
  
        if Is_Derived_Type (Typ)
          and then Is_Limited_Type (Typ)
--- 5605,5611 ----
        --  we copy explicitly the discriminant checking functions from the
        --  parent into the components of the derived type.
  
!       Build_Or_Copy_Discr_Checking_Funcs (Typ_Decl);
  
        if Is_Derived_Type (Typ)
          and then Is_Limited_Type (Typ)
*************** package body Exp_Ch3 is
*** 5736,5742 ****
  
                 --  Generate dispatch table of locally defined tagged type.
                 --  Dispatch tables of library level tagged types are built
!                --  later (see Analyze_Declarations).
  
                 if not Building_Static_DT (Typ) then
                    Append_Freeze_Actions (Typ, Make_DT (Typ));
--- 5788,5794 ----
  
                 --  Generate dispatch table of locally defined tagged type.
                 --  Dispatch tables of library level tagged types are built
!                --  later (see Build_Static_Dispatch_Tables).
  
                 if not Building_Static_DT (Typ) then
                    Append_Freeze_Actions (Typ, Make_DT (Typ));
*************** package body Exp_Ch3 is
*** 5912,5939 ****
           --  inherited functions, then add their bodies to the freeze actions.
  
           Append_Freeze_Actions (Typ, Wrapper_Body_List);
  
!          --  Create extra formals for the primitive operations of the type.
!          --  This must be done before analyzing the body of the initialization
!          --  procedure, because a self-referential type might call one of these
!          --  primitives in the body of the init_proc itself.
  
           declare
              Elmt : Elmt_Id;
!             Subp : Entity_Id;
  
           begin
              Elmt := First_Elmt (Primitive_Operations (Typ));
              while Present (Elmt) loop
!                Subp := Node (Elmt);
!                if not Has_Foreign_Convention (Subp)
!                  and then not Is_Predefined_Dispatching_Operation (Subp)
                 then
!                   Create_Extra_Formals (Subp);
                 end if;
  
!                Next_Elmt (Elmt);
              end loop;
           end;
        end if;
  
--- 5964,6021 ----
           --  inherited functions, then add their bodies to the freeze actions.
  
           Append_Freeze_Actions (Typ, Wrapper_Body_List);
+       end if;
  
!       --  Create extra formals for the primitive operations of the type.
!       --  This must be done before analyzing the body of the initialization
!       --  procedure, because a self-referential type might call one of these
!       --  primitives in the body of the init_proc itself.
!       --
!       --  This is not needed:
!       --    1) If expansion is disabled, because extra formals are only added
!       --       when we are generating code.
!       --
!       --    2) For types with foreign convention since primitives with foreign
!       --       convention don't have extra formals and AI95-117 requires that
!       --       all primitives of a tagged type inherit the convention.
  
+       if Expander_Active
+         and then Is_Tagged_Type (Typ)
+         and then not Has_Foreign_Convention (Typ)
+       then
           declare
              Elmt : Elmt_Id;
!             E    : Entity_Id;
  
           begin
+             --  Add extra formals to primitive operations
+ 
              Elmt := First_Elmt (Primitive_Operations (Typ));
              while Present (Elmt) loop
!                Create_Extra_Formals (Node (Elmt));
!                Next_Elmt (Elmt);
!             end loop;
! 
!             --  Add extra formals to renamings of primitive operations. The
!             --  addition of extra formals is done in two steps to minimize
!             --  the compile time required for this action; the evaluation of
!             --  Find_Dispatching_Type() and Contains() is only done here for
!             --  renamings that are not primitive operations.
! 
!             E := First_Entity (Scope (Typ));
!             while Present (E) loop
!                if Is_Dispatching_Operation (E)
!                  and then Present (Alias (E))
!                  and then Find_Dispatching_Type (E) = Typ
!                  and then not Contains (Primitive_Operations (Typ), E)
                 then
!                   Create_Extra_Formals (E);
                 end if;
  
!                Next_Entity (E);
              end loop;
+ 
+             pragma Debug (Validate_Tagged_Type_Extra_Formals (Typ));
           end;
        end if;
  
*************** package body Exp_Ch3 is
*** 6095,6102 ****
           Par_Id := Base_Type (Full_View (Par_Id));
        end if;
  
!       if Nkind (Type_Definition (Original_Node (N))) =
!                                                    N_Derived_Type_Definition
          and then not Is_Tagged_Type (Def_Id)
          and then Present (Freeze_Node (Par_Id))
          and then Present (TSS_Elist (Freeze_Node (Par_Id)))
--- 6177,6183 ----
           Par_Id := Base_Type (Full_View (Par_Id));
        end if;
  
!       if Nkind (Type_Definition (N)) = N_Derived_Type_Definition
          and then not Is_Tagged_Type (Def_Id)
          and then Present (Freeze_Node (Par_Id))
          and then Present (TSS_Elist (Freeze_Node (Par_Id)))
*************** package body Exp_Ch3 is
*** 6147,6159 ****
        Obj_Def  : constant Node_Id    := Object_Definition (N);
        Typ      : constant Entity_Id  := Etype (Def_Id);
        Base_Typ : constant Entity_Id  := Base_Type (Typ);
!       Expr_Q   : Node_Id;
  
        function Build_Equivalent_Aggregate return Boolean;
        --  If the object has a constrained discriminated type and no initial
        --  value, it may be possible to build an equivalent aggregate instead,
        --  and prevent an actual call to the initialization procedure.
  
        procedure Count_Default_Sized_Task_Stacks
          (Typ         : Entity_Id;
           Pri_Stacks  : out Int;
--- 6228,6289 ----
        Obj_Def  : constant Node_Id    := Object_Definition (N);
        Typ      : constant Entity_Id  := Etype (Def_Id);
        Base_Typ : constant Entity_Id  := Base_Type (Typ);
!       Next_N   : constant Node_Id    := Next (N);
! 
!       Special_Ret_Obj : constant Boolean := Is_Special_Return_Object (Def_Id);
!       --  If this is a special return object, it will be allocated differently
!       --  and ultimately rewritten as a renaming, so initialization activities
!       --  need to be deferred until after that is done.
! 
!       Func_Id : constant Entity_Id :=
!        (if Special_Ret_Obj then Return_Applies_To (Scope (Def_Id)) else Empty);
!       --  The function if this is a special return object, otherwise Empty
  
        function Build_Equivalent_Aggregate return Boolean;
        --  If the object has a constrained discriminated type and no initial
        --  value, it may be possible to build an equivalent aggregate instead,
        --  and prevent an actual call to the initialization procedure.
  
+       function Build_Heap_Or_Pool_Allocator
+         (Temp_Id    : Entity_Id;
+          Temp_Typ   : Entity_Id;
+          Ret_Typ    : Entity_Id;
+          Alloc_Expr : Node_Id) return Node_Id;
+       --  Create the statements necessary to allocate a return object on the
+       --  heap or user-defined storage pool. The object may need finalization
+       --  actions depending on the return type.
+       --
+       --    * Controlled case
+       --
+       --       if BIPfinalizationmaster = null then
+       --          Temp_Id := <Alloc_Expr>;
+       --       else
+       --          declare
+       --             type Ptr_Typ is access Ret_Typ;
+       --             for Ptr_Typ'Storage_Pool use
+       --                   Base_Pool (BIPfinalizationmaster.all).all;
+       --             Local : Ptr_Typ;
+       --
+       --          begin
+       --             procedure Allocate (...) is
+       --             begin
+       --                System.Storage_Pools.Subpools.Allocate_Any (...);
+       --             end Allocate;
+       --
+       --             Local := <Alloc_Expr>;
+       --             Temp_Id := Temp_Typ (Local);
+       --          end;
+       --       end if;
+       --
+       --    * Non-controlled case
+       --
+       --       Temp_Id := <Alloc_Expr>;
+       --
+       --  Temp_Id is the temporary which is used to reference the internally
+       --  created object in all allocation forms. Temp_Typ is the type of the
+       --  temporary. Func_Id is the enclosing function. Ret_Typ is the return
+       --  type of Func_Id. Alloc_Expr is the actual allocator.
+ 
        procedure Count_Default_Sized_Task_Stacks
          (Typ         : Entity_Id;
           Pri_Stacks  : out Int;
*************** package body Exp_Ch3 is
*** 6167,6175 ****
        --  Generate all default initialization actions for object Def_Id. Any
        --  new code is inserted after node After.
  
!       function Rewrite_As_Renaming return Boolean;
!       --  Indicate whether to rewrite a declaration with initialization into an
!       --  object renaming declaration (see below).
  
        --------------------------------
        -- Build_Equivalent_Aggregate --
--- 6297,6348 ----
        --  Generate all default initialization actions for object Def_Id. Any
        --  new code is inserted after node After.
  
!       procedure Initialize_Return_Object
!         (Tag_Assign : Node_Id;
!          Adj_Call   : Node_Id;
!          Expr       : Node_Id;
!          Init_Stmt  : Node_Id;
!          After      : Node_Id);
!       --  Generate all initialization actions for return object Def_Id. Any
!       --  new code is inserted after node After.
! 
!       function Is_Renamable_Function_Call (Expr : Node_Id) return Boolean;
!       --  If we are not at library level and the object declaration originally
!       --  appears in the form:
! 
!       --    Obj : Typ := Func (...);
! 
!       --  and has been rewritten as the dereference of a captured reference
!       --  to the function result built either on the primary or the secondary
!       --  stack, then the declaration can be rewritten as the renaming of this
!       --  dereference:
! 
!       --    type Ann is access all Typ;
!       --    Rnn : constant Axx := Func (...)'reference;
!       --    Obj : Typ renames Rnn.all;
! 
!       --  This will avoid making an extra copy and, in the case where Typ needs
!       --  finalization, a pair of calls to the Adjust and Finalize primitives,
!       --  or Deep_Adjust and Deep_Finalize routines, depending on whether Typ
!       --  has components that themselves need finalization.
! 
!       --  However, in the case of a special return object, we need to make sure
!       --  that the object Rnn is recognized by the Is_Related_To_Func_Return
!       --  predicate; otherwise, if it is of a type that needs finalization,
!       --  then Requires_Cleanup_Actions would return true because of this and
!       --  Build_Finalizer would finalize it prematurely because of this (see
!       --  also Expand_Simple_Function_Return for the same test in the case of
!       --  a simple return).
! 
!       --  Finally, in the case of a special return object, we also need to make
!       --  sure that the two functions return on the same stack, otherwise we
!       --  would create a dangling reference.
! 
!       function Make_Allocator_For_Return (Expr : Node_Id) return Node_Id;
!       --  Make an allocator for a return object initialized with Expr
! 
!       function OK_To_Rename_Ref (N : Node_Id) return Boolean;
!       --  Return True if N denotes an entity with OK_To_Rename set
  
        --------------------------------
        -- Build_Equivalent_Aggregate --
*************** package body Exp_Ch3 is
*** 6297,6302 ****
--- 6470,6625 ----
           end if;
        end Build_Equivalent_Aggregate;
  
+       ----------------------------------
+       -- Build_Heap_Or_Pool_Allocator --
+       ----------------------------------
+ 
+       function Build_Heap_Or_Pool_Allocator
+         (Temp_Id    : Entity_Id;
+          Temp_Typ   : Entity_Id;
+          Ret_Typ    : Entity_Id;
+          Alloc_Expr : Node_Id) return Node_Id
+       is
+       begin
+          pragma Assert (Is_Build_In_Place_Function (Func_Id));
+ 
+          --  Processing for objects that require finalization actions
+ 
+          if Needs_Finalization (Ret_Typ) then
+             declare
+                Decls      : constant List_Id := New_List;
+                Fin_Mas_Id : constant Entity_Id :=
+                  Build_In_Place_Formal (Func_Id, BIP_Finalization_Master);
+                Orig_Expr  : constant Node_Id := New_Copy_Tree (Alloc_Expr);
+                Stmts      : constant List_Id := New_List;
+                Local_Id   : Entity_Id;
+                Pool_Id    : Entity_Id;
+                Ptr_Typ    : Entity_Id;
+ 
+             begin
+                --  Generate:
+                --    Pool_Id renames Base_Pool (BIPfinalizationmaster.all).all;
+ 
+                Pool_Id := Make_Temporary (Loc, 'P');
+ 
+                Append_To (Decls,
+                  Make_Object_Renaming_Declaration (Loc,
+                    Defining_Identifier => Pool_Id,
+                    Subtype_Mark        =>
+                      New_Occurrence_Of (RTE (RE_Root_Storage_Pool), Loc),
+                    Name                =>
+                      Make_Explicit_Dereference (Loc,
+                        Prefix =>
+                          Make_Function_Call (Loc,
+                            Name                   =>
+                              New_Occurrence_Of (RTE (RE_Base_Pool), Loc),
+                            Parameter_Associations => New_List (
+                              Make_Explicit_Dereference (Loc,
+                                Prefix =>
+                                  New_Occurrence_Of (Fin_Mas_Id, Loc)))))));
+ 
+                --  Create an access type which uses the storage pool of the
+                --  caller's master. This additional type is necessary because
+                --  the finalization master cannot be associated with the type
+                --  of the temporary. Otherwise the secondary stack allocation
+                --  will fail.
+ 
+                --  Generate:
+                --    type Ptr_Typ is access Ret_Typ;
+ 
+                Ptr_Typ := Make_Temporary (Loc, 'P');
+ 
+                Append_To (Decls,
+                  Make_Full_Type_Declaration (Loc,
+                    Defining_Identifier => Ptr_Typ,
+                    Type_Definition     =>
+                      Make_Access_To_Object_Definition (Loc,
+                        Subtype_Indication =>
+                          New_Occurrence_Of (Ret_Typ, Loc))));
+ 
+                --  Perform minor decoration in order to set the master and the
+                --  storage pool attributes.
+ 
+                Mutate_Ekind                (Ptr_Typ, E_Access_Type);
+                Set_Finalization_Master     (Ptr_Typ, Fin_Mas_Id);
+                Set_Associated_Storage_Pool (Ptr_Typ, Pool_Id);
+ 
+                --  Create the temporary, generate:
+                --    Local_Id : Ptr_Typ;
+ 
+                Local_Id := Make_Temporary (Loc, 'T');
+ 
+                Append_To (Decls,
+                  Make_Object_Declaration (Loc,
+                    Defining_Identifier => Local_Id,
+                    Object_Definition   =>
+                      New_Occurrence_Of (Ptr_Typ, Loc)));
+ 
+                --  Allocate the object, generate:
+                --    Local_Id := <Alloc_Expr>;
+ 
+                Append_To (Stmts,
+                  Make_Assignment_Statement (Loc,
+                    Name       => New_Occurrence_Of (Local_Id, Loc),
+                    Expression => Alloc_Expr));
+ 
+                --  Generate:
+                --    Temp_Id := Temp_Typ (Local_Id);
+ 
+                Append_To (Stmts,
+                  Make_Assignment_Statement (Loc,
+                    Name       => New_Occurrence_Of (Temp_Id, Loc),
+                    Expression =>
+                      Unchecked_Convert_To (Temp_Typ,
+                        New_Occurrence_Of (Local_Id, Loc))));
+ 
+                --  Wrap the allocation in a block. This is further conditioned
+                --  by checking the caller finalization master at runtime. A
+                --  null value indicates a non-existent master, most likely due
+                --  to a Finalize_Storage_Only allocation.
+ 
+                --  Generate:
+                --    if BIPfinalizationmaster = null then
+                --       Temp_Id := <Orig_Expr>;
+                --    else
+                --       declare
+                --          <Decls>
+                --       begin
+                --          <Stmts>
+                --       end;
+                --    end if;
+ 
+                return
+                  Make_If_Statement (Loc,
+                    Condition       =>
+                      Make_Op_Eq (Loc,
+                        Left_Opnd  => New_Occurrence_Of (Fin_Mas_Id, Loc),
+                        Right_Opnd => Make_Null (Loc)),
+ 
+                    Then_Statements => New_List (
+                      Make_Assignment_Statement (Loc,
+                        Name       => New_Occurrence_Of (Temp_Id, Loc),
+                        Expression => Orig_Expr)),
+ 
+                    Else_Statements => New_List (
+                      Make_Block_Statement (Loc,
+                        Declarations               => Decls,
+                        Handled_Statement_Sequence =>
+                          Make_Handled_Sequence_Of_Statements (Loc,
+                            Statements => Stmts))));
+             end;
+ 
+          --  For all other cases, generate:
+          --    Temp_Id := <Alloc_Expr>;
+ 
+          else
+             return
+               Make_Assignment_Statement (Loc,
+                 Name       => New_Occurrence_Of (Temp_Id, Loc),
+                 Expression => Alloc_Expr);
+          end if;
+       end Build_Heap_Or_Pool_Allocator;
+ 
        -------------------------------------
        -- Count_Default_Sized_Task_Stacks --
        -------------------------------------
*************** package body Exp_Ch3 is
*** 6775,6848 ****
           end if;
        end Default_Initialize_Object;
  
!       -------------------------
!       -- Rewrite_As_Renaming --
!       -------------------------
  
!       function Rewrite_As_Renaming return Boolean is
!          Result : constant Boolean :=
  
!          --  If the object declaration appears in the form
  
!          --    Obj : Ctrl_Typ := Func (...);
  
!          --  where Ctrl_Typ is controlled but not immutably limited type, then
!          --  the expansion of the function call should use a dereference of the
!          --  result to reference the value on the secondary stack.
  
!          --    Obj : Ctrl_Typ renames Func (...).all;
  
!          --  As a result, the call avoids an extra copy. This an optimization,
!          --  but it is required for passing ACATS tests in some cases where it
!          --  would otherwise make two copies. The RM allows removing redunant
!          --  Adjust/Finalize calls, but does not allow insertion of extra ones.
  
!          --  This part is disabled for now, because it breaks GNAT Studio
!          --  builds
  
!          (False -- ???
!             and then Nkind (Expr_Q) = N_Explicit_Dereference
!             and then not Comes_From_Source (Expr_Q)
!             and then Nkind (Original_Node (Expr_Q)) = N_Function_Call
!             and then Nkind (Object_Definition (N)) in N_Has_Entity
!             and then (Needs_Finalization (Entity (Object_Definition (N)))))
  
!            --  If the initializing expression is for a variable with attribute
!            --  OK_To_Rename set, then transform:
  
!            --     Obj : Typ := Expr;
  
!            --  into
  
!            --     Obj : Typ renames Expr;
  
!            --  provided that Obj is not aliased. The aliased case has to be
!            --  excluded in general because Expr will not be aliased in
!            --  general.
  
!            or else
!              (not Aliased_Present (N)
!                and then Is_Entity_Name (Expr_Q)
!                and then Ekind (Entity (Expr_Q)) = E_Variable
!                and then OK_To_Rename (Entity (Expr_Q))
!                and then Is_Entity_Name (Obj_Def));
!       begin
!          --  Return False if there are any aspect specifications, because
!          --  otherwise we duplicate that corresponding implicit attribute
!          --  definition, and call Insert_Action, which has no place to insert
!          --  the attribute definition. The attribute definition is stored in
!          --  Aspect_Rep_Item, which is not a list.
  
!          return Result and then No (Aspect_Specifications (N));
!       end Rewrite_As_Renaming;
  
!       --  Local variables
  
!       Next_N : constant Node_Id := Next (N);
  
!       Adj_Call   : Node_Id;
!       Id_Ref     : Node_Id;
!       Tag_Assign : Node_Id;
  
        Init_After : Node_Id := N;
        --  Node after which the initialization actions are to be inserted. This
--- 7098,7249 ----
           end if;
        end Default_Initialize_Object;
  
!       ------------------------------
!       -- Initialize_Return_Object --
!       ------------------------------
  
!       procedure Initialize_Return_Object
!         (Tag_Assign : Node_Id;
!          Adj_Call   : Node_Id;
!          Expr       : Node_Id;
!          Init_Stmt  : Node_Id;
!          After      : Node_Id)
!       is
!       begin
!          if Present (Tag_Assign) then
!             Insert_Action_After (After, Tag_Assign);
!          end if;
  
!          if Present (Adj_Call) then
!             Insert_Action_After (After, Adj_Call);
!          end if;
  
!          if No (Expr) then
!             Default_Initialize_Object (After);
  
!          elsif Is_Delayed_Aggregate (Expr)
!            and then not No_Initialization (N)
!          then
!             Convert_Aggr_In_Object_Decl (N);
  
!          elsif Present (Init_Stmt) then
!             Insert_Action_After (After, Init_Stmt);
!             Set_Expression (N, Empty);
!          end if;
!       end Initialize_Return_Object;
  
!       --------------------------------
!       -- Is_Renamable_Function_Call --
!       --------------------------------
  
!       function Is_Renamable_Function_Call (Expr : Node_Id) return Boolean is
!       begin
!          return not Is_Library_Level_Entity (Def_Id)
!            and then Is_Captured_Function_Call (Expr)
!            and then (not Special_Ret_Obj
!                       or else
!                         (Is_Related_To_Func_Return (Entity (Prefix (Expr)))
!                           and then Needs_Secondary_Stack (Etype (Expr)) =
!                                    Needs_Secondary_Stack (Etype (Func_Id))));
!       end Is_Renamable_Function_Call;
  
!       -------------------------------
!       -- Make_Allocator_For_Return --
!       -------------------------------
  
!       function Make_Allocator_For_Return (Expr : Node_Id) return Node_Id is
!          Alloc      : Node_Id;
!          Alloc_Expr : Entity_Id;
  
!       begin
!          --  If the return object's declaration includes an expression and the
!          --  declaration isn't marked as No_Initialization, then we generate an
!          --  allocator with a qualified expression. Although this is necessary
!          --  only in the case where the result type is an interface (or class-
!          --  wide interface), we do it in all cases for the sake of consistency
!          --  instead of subsequently generating a separate assignment.
  
!          if Present (Expr)
!            and then not Is_Delayed_Aggregate (Expr)
!            and then not No_Initialization (N)
!          then
!             --  Ada 2005 (AI95-344): If the result type is class-wide, insert
!             --  a check that the level of the return expression's underlying
!             --  type is not deeper than the level of the master enclosing the
!             --  function.
  
!             --  AI12-043: The check is made immediately after the return object
!             --  is created.
  
!             if Is_Class_Wide_Type (Etype (Func_Id)) then
!                Apply_CW_Accessibility_Check (Expr, Func_Id);
!             end if;
  
!             Alloc_Expr := New_Copy_Tree (Expr);
  
!             --  In the constrained array case, deal with a potential sliding.
!             --  In the interface case, put back a conversion that we may have
!             --  removed earlier in the processing.
  
!             if (Ekind (Typ) = E_Array_Subtype
!                  or else (Is_Interface (Typ)
!                            and then Is_Class_Wide_Type (Etype (Alloc_Expr))))
!               and then Typ /= Etype (Alloc_Expr)
!             then
!                Alloc_Expr := Convert_To (Typ, Alloc_Expr);
!             end if;
  
!             --  We always use the type of the expression for the qualified
!             --  expression, rather than the return object's type. We cannot
!             --  always use the return object's type because the expression
!             --  might be of a specific type and the return object mignt not.
  
!             Alloc :=
!               Make_Allocator (Loc,
!                 Expression =>
!                   Make_Qualified_Expression (Loc,
!                     Subtype_Mark =>
!                       New_Occurrence_Of (Etype (Alloc_Expr), Loc),
!                     Expression   => Alloc_Expr));
! 
!          else
!             Alloc :=
!               Make_Allocator (Loc,
!                 Expression => New_Occurrence_Of (Typ, Loc));
! 
!             --  If the return object requires default initialization, then it
!             --  will happen later following the elaboration of the renaming.
!             --  If we don't turn it off here, then the object will be default
!             --  initialized twice.
! 
!             Set_No_Initialization (Alloc);
!          end if;
! 
!          --  Set the flag indicating that the allocator is made for a special
!          --  return object. This is used to bypass various legality checks as
!          --  well as to make sure that the result is not adjusted twice.
! 
!          Set_For_Special_Return_Object (Alloc);
! 
!          return Alloc;
!       end Make_Allocator_For_Return;
! 
!       ----------------------
!       -- OK_To_Rename_Ref --
!       ----------------------
! 
!       function OK_To_Rename_Ref (N : Node_Id) return Boolean is
!       begin
!          return Is_Entity_Name (N)
!            and then Ekind (Entity (N)) = E_Variable
!            and then OK_To_Rename (Entity (N));
!       end OK_To_Rename_Ref;
! 
!       --  Local variables
! 
!       Adj_Call   : Node_Id := Empty;
!       Expr_Q     : Node_Id := Empty;
!       Tag_Assign : Node_Id := Empty;
  
        Init_After : Node_Id := N;
        --  Node after which the initialization actions are to be inserted. This
*************** package body Exp_Ch3 is
*** 6850,6855 ****
--- 7251,7259 ----
        --  which case the init proc call must be inserted only after the bodies
        --  of the shared variable procedures have been seen.
  
+       Rewrite_As_Renaming : Boolean := False;
+       --  Whether to turn the declaration into a renaming at the end
+ 
     --  Start of processing for Expand_N_Object_Declaration
  
     begin
*************** package body Exp_Ch3 is
*** 6881,6917 ****
           return;
        end if;
  
-       --  First we do special processing for objects of a tagged type where
-       --  this is the point at which the type is frozen. The creation of the
-       --  dispatch table and the initialization procedure have to be deferred
-       --  to this point, since we reference previously declared primitive
-       --  subprograms.
- 
-       --  Force construction of dispatch tables of library level tagged types
- 
-       if Tagged_Type_Expansion
-         and then Building_Static_Dispatch_Tables
-         and then Is_Library_Level_Entity (Def_Id)
-         and then Is_Library_Level_Tagged_Type (Base_Typ)
-         and then Ekind (Base_Typ) in E_Record_Type
-                                    | E_Protected_Type
-                                    | E_Task_Type
-         and then not Has_Dispatch_Table (Base_Typ)
-       then
-          declare
-             New_Nodes : List_Id := No_List;
- 
-          begin
-             if Is_Concurrent_Type (Base_Typ) then
-                New_Nodes := Make_DT (Corresponding_Record_Type (Base_Typ), N);
-             else
-                New_Nodes := Make_DT (Base_Typ, N);
-             end if;
- 
-             Insert_List_Before (N, New_Nodes);
-          end;
-       end if;
- 
        --  Make shared memory routines for shared passive variable
  
        if Is_Shared_Passive (Def_Id) then
--- 7285,7290 ----
*************** package body Exp_Ch3 is
*** 6923,6929 ****
        --  also that a Master variable is established (and that the appropriate
        --  enclosing construct is established as a task master).
  
!       Ensure_Activation_Chain_And_Master (N);
  
        --  If No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations
        --  restrictions are active then default-sized secondary stacks are
--- 7296,7322 ----
        --  also that a Master variable is established (and that the appropriate
        --  enclosing construct is established as a task master).
  
!       if Has_Task (Typ) or else Might_Have_Tasks (Typ) then
!          Build_Activation_Chain_Entity (N);
! 
!          if Has_Task (Typ) then
!             Build_Master_Entity (Def_Id);
! 
!          --  Handle objects initialized with BIP function calls
! 
!          elsif Present (Expr) then
!             Expr_Q := Unqualify (Expr);
! 
!             if Is_Build_In_Place_Function_Call (Expr_Q)
!               or else Present (Unqual_BIP_Iface_Function_Call (Expr_Q))
!               or else (Nkind (Expr_Q) = N_Reference
!                         and then
!                        Is_Build_In_Place_Function_Call (Prefix (Expr_Q)))
!             then
!                Build_Master_Entity (Def_Id);
!             end if;
!          end if;
!       end if;
  
        --  If No_Implicit_Heap_Allocations or No_Implicit_Task_Allocations
        --  restrictions are active then default-sized secondary stacks are
*************** package body Exp_Ch3 is
*** 6959,6965 ****
        --  Default initialization required, and no expression present
  
        if No (Expr) then
- 
           --  If we have a type with a variant part, the initialization proc
           --  will contain implicit tests of the discriminant values, which
           --  counts as a violation of the restriction No_Implicit_Conditionals.
--- 7352,7357 ----
*************** package body Exp_Ch3 is
*** 7018,7024 ****
              end if;
           end if;
  
!          Default_Initialize_Object (Init_After);
  
           --  Generate attribute for Persistent_BSS if needed
  
--- 7410,7418 ----
              end if;
           end if;
  
!          if not Special_Ret_Obj then
!             Default_Initialize_Object (Init_After);
!          end if;
  
           --  Generate attribute for Persistent_BSS if needed
  
*************** package body Exp_Ch3 is
*** 7076,7082 ****
                 Expander_Mode_Restore;
              end if;
  
!             Convert_Aggr_In_Object_Decl (N);
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the declared object
--- 7470,7478 ----
                 Expander_Mode_Restore;
              end if;
  
!             if not Special_Ret_Obj then
!                Convert_Aggr_In_Object_Decl (N);
!             end if;
  
           --  Ada 2005 (AI-318-02): If the initialization expression is a call
           --  to a build-in-place function, then access to the declared object
*************** package body Exp_Ch3 is
*** 7145,7224 ****
           then
              pragma Assert (Is_Class_Wide_Type (Typ));
  
!             --  If the object is a return object of an inherently limited type,
!             --  which implies build-in-place treatment, bypass the special
              --  treatment of class-wide interface initialization below. In this
!             --  case, the expansion of the return statement will take care of
!             --  creating the object (via allocator) and initializing it.
  
!             if Is_Return_Object (Def_Id) and then Is_Limited_View (Typ) then
                 null;
  
              elsif Tagged_Type_Expansion then
                 declare
!                   Iface    : constant Entity_Id := Root_Type (Typ);
!                   Expr_N   : Node_Id := Expr;
!                   Expr_Typ : Entity_Id;
!                   New_Expr : Node_Id;
!                   Obj_Id   : Entity_Id;
!                   Tag_Comp : Node_Id;
  
!                begin
!                   --  If the original node of the expression was a conversion
!                   --  to this specific class-wide interface type then restore
!                   --  the original node because we must copy the object before
!                   --  displacing the pointer to reference the secondary tag
!                   --  component. This code must be kept synchronized with the
!                   --  expansion done by routine Expand_Interface_Conversion
  
!                   if not Comes_From_Source (Expr_N)
!                     and then Nkind (Expr_N) = N_Explicit_Dereference
!                     and then Nkind (Original_Node (Expr_N)) = N_Type_Conversion
!                     and then Etype (Original_Node (Expr_N)) = Typ
!                   then
!                      Rewrite (Expr_N, Original_Node (Expression (N)));
                    end if;
  
!                   --  Avoid expansion of redundant interface conversion
  
!                   if Is_Interface (Etype (Expr_N))
!                     and then Nkind (Expr_N) = N_Type_Conversion
!                     and then Etype (Expr_N) = Typ
!                   then
!                      Expr_N := Expression (Expr_N);
!                      Set_Expression (N, Expr_N);
                    end if;
  
!                   Obj_Id   := Make_Temporary (Loc, 'D', Expr_N);
!                   Expr_Typ := Base_Type (Etype (Expr_N));
  
!                   if Is_Class_Wide_Type (Expr_Typ) then
!                      Expr_Typ := Root_Type (Expr_Typ);
!                   end if;
  
                    --  Replace
!                   --     CW : I'Class := Obj;
                    --  by
!                   --     Tmp : T := Obj;
                    --     type Ityp is not null access I'Class;
!                   --     CW  : I'Class renames Ityp (Tmp.I_Tag'Address).all;
  
!                   if Comes_From_Source (Expr_N)
!                     and then Nkind (Expr_N) = N_Identifier
!                     and then not Is_Interface (Expr_Typ)
                      and then Interface_Present_In_Ancestor (Expr_Typ, Typ)
                      and then (Expr_Typ = Etype (Expr_Typ)
                                 or else not
                                   Is_Variable_Size_Record (Etype (Expr_Typ)))
                    then
-                      --  Copy the object
- 
                       Insert_Action (N,
                         Make_Object_Declaration (Loc,
                           Defining_Identifier => Obj_Id,
                           Object_Definition   =>
                             New_Occurrence_Of (Expr_Typ, Loc),
!                          Expression          => Relocate_Node (Expr_N)));
  
                       --  Statically reference the tag associated with the
                       --  interface
--- 7541,7689 ----
           then
              pragma Assert (Is_Class_Wide_Type (Typ));
  
!             --  If the original node of the expression was a conversion
!             --  to this specific class-wide interface type then restore
!             --  the original node because we must copy the object before
!             --  displacing the pointer to reference the secondary tag
!             --  component. This code must be kept synchronized with the
!             --  expansion done by routine Expand_Interface_Conversion
! 
!             if not Comes_From_Source (Expr)
!               and then Nkind (Expr) = N_Explicit_Dereference
!               and then Nkind (Original_Node (Expr)) = N_Type_Conversion
!               and then Etype (Original_Node (Expr)) = Typ
!             then
!                Rewrite (Expr, Original_Node (Expression (N)));
!             end if;
! 
!             --  Avoid expansion of redundant interface conversion
! 
!             if Nkind (Expr) = N_Type_Conversion
!               and then Etype (Expr) = Typ
!             then
!                Expr_Q := Expression (Expr);
!             else
!                Expr_Q := Expr;
!             end if;
! 
!             --  We may use a renaming if the initialization expression is a
!             --  captured function call that meets a few conditions.
! 
!             Rewrite_As_Renaming := Is_Renamable_Function_Call (Expr_Q);
! 
!             --  If the object is a special return object, then bypass special
              --  treatment of class-wide interface initialization below. In this
!             --  case, the expansion of the return object will take care of this
!             --  initialization via the expansion of the allocator.
  
!             if Special_Ret_Obj and then not Rewrite_As_Renaming then
! 
!                --  If the type needs finalization and is not inherently
!                --  limited, then the target is adjusted after the copy
!                --  and attached to the finalization list.
! 
!                if Needs_Finalization (Typ)
!                  and then not Is_Limited_View (Typ)
!                then
!                   Adj_Call :=
!                     Make_Adjust_Call (
!                       Obj_Ref => New_Occurrence_Of (Def_Id, Loc),
!                       Typ     => Base_Typ);
!                end if;
! 
!             --  Renaming an expression of the object's type is immediate
! 
!             elsif Rewrite_As_Renaming
!               and then Base_Type (Etype (Expr_Q)) = Base_Type (Typ)
!             then
                 null;
  
              elsif Tagged_Type_Expansion then
                 declare
!                   Iface : constant Entity_Id := Root_Type (Typ);
  
!                   Expr_Typ     : Entity_Id;
!                   New_Expr     : Node_Id;
!                   Obj_Id       : Entity_Id;
!                   Ptr_Obj_Decl : Node_Id;
!                   Ptr_Obj_Id   : Entity_Id;
!                   Tag_Comp     : Node_Id;
  
!                begin
!                   Expr_Typ := Base_Type (Etype (Expr_Q));
!                   if Is_Class_Wide_Type (Expr_Typ) then
!                      Expr_Typ := Root_Type (Expr_Typ);
                    end if;
  
!                   --  Rename limited objects since they cannot be copied
  
!                   if Is_Limited_Record (Expr_Typ) then
!                      Rewrite_As_Renaming := True;
                    end if;
  
!                   Obj_Id := Make_Temporary (Loc, 'D', Expr_Q);
  
!                   --  Replace
!                   --     IW : I'Class := Expr;
!                   --  by
!                   --     Dnn : Tag renames Tag_Ptr!(Expr'Address).all;
!                   --     type Ityp is not null access I'Class;
!                   --     Rnn : constant Ityp :=
!                   --             Ityp!(Displace (Dnn'Address, I'Tag));
!                   --     IW : I'Class renames Rnn.all;
! 
!                   if Rewrite_As_Renaming then
!                      New_Expr :=
!                        Make_Explicit_Dereference (Loc,
!                          Unchecked_Convert_To (RTE (RE_Tag_Ptr),
!                            Make_Attribute_Reference (Loc,
!                              Prefix => Relocate_Node (Expr_Q),
!                              Attribute_Name => Name_Address)));
! 
!                      --  Suppress junk access checks on RE_Tag_Ptr
! 
!                      Insert_Action (N,
!                        Make_Object_Renaming_Declaration (Loc,
!                          Defining_Identifier => Obj_Id,
!                          Subtype_Mark        =>
!                            New_Occurrence_Of (RTE (RE_Tag), Loc),
!                          Name                => New_Expr),
!                        Suppress => Access_Check);
! 
!                      --  Dynamically reference the tag associated with the
!                      --  interface.
! 
!                      Tag_Comp :=
!                        Make_Function_Call (Loc,
!                          Name => New_Occurrence_Of (RTE (RE_Displace), Loc),
!                          Parameter_Associations => New_List (
!                            Make_Attribute_Reference (Loc,
!                              Prefix => New_Occurrence_Of (Obj_Id, Loc),
!                              Attribute_Name => Name_Address),
!                            New_Occurrence_Of
!                              (Node (First_Elmt (Access_Disp_Table (Iface))),
!                               Loc)));
  
                    --  Replace
!                   --     IW : I'Class := Expr;
                    --  by
!                   --     Dnn : Typ := Expr;
                    --     type Ityp is not null access I'Class;
!                   --     Rnn : constant Ityp := Ityp (Dnn.I_Tag'Address);
!                   --     IW  : I'Class renames Rnn.all;
  
!                   elsif Has_Tag_Of_Type (Expr_Q)
                      and then Interface_Present_In_Ancestor (Expr_Typ, Typ)
                      and then (Expr_Typ = Etype (Expr_Typ)
                                 or else not
                                   Is_Variable_Size_Record (Etype (Expr_Typ)))
                    then
                       Insert_Action (N,
                         Make_Object_Declaration (Loc,
                           Defining_Identifier => Obj_Id,
                           Object_Definition   =>
                             New_Occurrence_Of (Expr_Typ, Loc),
!                          Expression          => Relocate_Node (Expr_Q)));
  
                       --  Statically reference the tag associated with the
                       --  interface
*************** package body Exp_Ch3 is
*** 7231,7244 ****
                               (Find_Interface_Tag (Expr_Typ, Iface), Loc));
  
                    --  Replace
!                   --     IW : I'Class := Obj;
                    --  by
                    --     type Equiv_Record is record ... end record;
                    --     implicit subtype CW is <Class_Wide_Subtype>;
!                   --     Tmp : CW := CW!(Obj);
                    --     type Ityp is not null access I'Class;
!                   --     IW : I'Class renames
!                   --            Ityp!(Displace (Temp'Address, I'Tag)).all;
  
                    else
                       --  Generate the equivalent record type and update the
--- 7696,7710 ----
                               (Find_Interface_Tag (Expr_Typ, Iface), Loc));
  
                    --  Replace
!                   --     IW : I'Class := Expr;
                    --  by
                    --     type Equiv_Record is record ... end record;
                    --     implicit subtype CW is <Class_Wide_Subtype>;
!                   --     Dnn : CW := CW!(Expr);
                    --     type Ityp is not null access I'Class;
!                   --     Rnn : constant Ityp :=
!                   --             Ityp!(Displace (Dnn'Address, I'Tag));
!                   --     IW : I'Class renames Rnn.all;
  
                    else
                       --  Generate the equivalent record type and update the
*************** package body Exp_Ch3 is
*** 7248,7295 ****
                         (N             => N,
                          Unc_Type      => Typ,
                          Subtype_Indic => Obj_Def,
!                         Exp           => Expr_N);
! 
!                      if not Is_Interface (Etype (Expr_N)) then
!                         New_Expr := Relocate_Node (Expr_N);
  
                       --  For interface types we use 'Address which displaces
!                      --  the pointer to the base of the object (if required)
  
!                      else
                          New_Expr :=
                            Unchecked_Convert_To (Etype (Obj_Def),
                              Make_Explicit_Dereference (Loc,
                                Unchecked_Convert_To (RTE (RE_Tag_Ptr),
                                  Make_Attribute_Reference (Loc,
!                                   Prefix => Relocate_Node (Expr_N),
                                    Attribute_Name => Name_Address))));
-                      end if;
  
!                      --  Copy the object
  
!                      if not Is_Limited_Record (Expr_Typ) then
!                         Insert_Action (N,
!                           Make_Object_Declaration (Loc,
!                             Defining_Identifier => Obj_Id,
!                             Object_Definition   =>
!                               New_Occurrence_Of (Etype (Obj_Def), Loc),
!                             Expression => New_Expr));
  
!                      --  Rename limited type object since they cannot be copied
!                      --  This case occurs when the initialization expression
!                      --  has been previously expanded into a temporary object.
  
!                      else pragma Assert (not Comes_From_Source (Expr_Q));
!                         Insert_Action (N,
!                           Make_Object_Renaming_Declaration (Loc,
!                             Defining_Identifier => Obj_Id,
!                             Subtype_Mark        =>
!                               New_Occurrence_Of (Etype (Obj_Def), Loc),
!                             Name                =>
!                               Unchecked_Convert_To
!                                 (Etype (Obj_Def), New_Expr)));
!                      end if;
  
                       --  Dynamically reference the tag associated with the
                       --  interface.
--- 7714,7748 ----
                         (N             => N,
                          Unc_Type      => Typ,
                          Subtype_Indic => Obj_Def,
!                         Exp           => Expr_Q);
  
                       --  For interface types we use 'Address which displaces
!                      --  the pointer to the base of the object (if required).
  
!                      if Is_Interface (Etype (Expr_Q)) then
                          New_Expr :=
                            Unchecked_Convert_To (Etype (Obj_Def),
                              Make_Explicit_Dereference (Loc,
                                Unchecked_Convert_To (RTE (RE_Tag_Ptr),
                                  Make_Attribute_Reference (Loc,
!                                   Prefix => Relocate_Node (Expr_Q),
                                    Attribute_Name => Name_Address))));
  
!                      --  For other types, no displacement is needed
  
!                      else
!                         New_Expr := Relocate_Node (Expr_Q);
!                      end if;
  
!                      --  Suppress junk access checks on RE_Tag_Ptr
  
!                      Insert_Action (N,
!                        Make_Object_Declaration (Loc,
!                          Defining_Identifier => Obj_Id,
!                          Object_Definition   =>
!                            New_Occurrence_Of (Etype (Obj_Def), Loc),
!                          Expression          => New_Expr),
!                        Suppress => Access_Check);
  
                       --  Dynamically reference the tag associated with the
                       --  interface.
*************** package body Exp_Ch3 is
*** 7306,7389 ****
                                Loc)));
                    end if;
  
!                   Rewrite (N,
!                     Make_Object_Renaming_Declaration (Loc,
!                       Defining_Identifier => Make_Temporary (Loc, 'D'),
!                       Subtype_Mark        => New_Occurrence_Of (Typ, Loc),
!                       Name                =>
!                         Convert_Tag_To_Interface (Typ, Tag_Comp)));
! 
!                   --  If the original entity comes from source, then mark the
!                   --  new entity as needing debug information, even though it's
!                   --  defined by a generated renaming that does not come from
!                   --  source, so that Materialize_Entity will be set on the
!                   --  entity when Debug_Renaming_Declaration is called during
!                   --  analysis.
! 
!                   if Comes_From_Source (Def_Id) then
!                      Set_Debug_Info_Needed (Defining_Identifier (N));
!                   end if;
! 
!                   Analyze (N, Suppress => All_Checks);
! 
!                   --  Replace internal identifier of rewritten node by the
!                   --  identifier found in the sources. We also have to exchange
!                   --  entities containing their defining identifiers to ensure
!                   --  the correct replacement of the object declaration by this
!                   --  object renaming declaration because these identifiers
!                   --  were previously added by Enter_Name to the current scope.
!                   --  We must preserve the homonym chain of the source entity
!                   --  as well. We must also preserve the kind of the entity,
!                   --  which may be a constant. Preserve entity chain because
!                   --  itypes may have been generated already, and the full
!                   --  chain must be preserved for final freezing. Finally,
!                   --  preserve Comes_From_Source setting, so that debugging
!                   --  and cross-referencing information is properly kept, and
!                   --  preserve source location, to prevent spurious errors when
!                   --  entities are declared (they must have their own Sloc).
! 
!                   declare
!                      New_Id    : constant Entity_Id := Defining_Identifier (N);
!                      Next_Temp : constant Entity_Id := Next_Entity (New_Id);
!                      Save_CFS  : constant Boolean   :=
!                                    Comes_From_Source (Def_Id);
!                      Save_SP   : constant Node_Id   := SPARK_Pragma (Def_Id);
!                      Save_SPI  : constant Boolean   :=
!                                    SPARK_Pragma_Inherited (Def_Id);
! 
!                   begin
!                      Link_Entities (New_Id, Next_Entity (Def_Id));
!                      Link_Entities (Def_Id, Next_Temp);
  
!                      Set_Chars (Defining_Identifier (N), Chars (Def_Id));
!                      Set_Homonym (Defining_Identifier (N), Homonym (Def_Id));
!                      Mutate_Ekind (Defining_Identifier (N), Ekind (Def_Id));
!                      Set_Sloc (Defining_Identifier (N), Sloc (Def_Id));
  
!                      Set_Comes_From_Source (Def_Id, False);
  
!                      --  ??? This is extremely dangerous!!! Exchanging entities
!                      --  is very low level, and as a result it resets flags and
!                      --  fields which belong to the original Def_Id. Several of
!                      --  these attributes are saved and restored, but there may
!                      --  be many more that need to be preserverd.
  
!                      Exchange_Entities (Defining_Identifier (N), Def_Id);
  
!                      --  Restore clobbered attributes
  
!                      Set_Comes_From_Source      (Def_Id, Save_CFS);
!                      Set_SPARK_Pragma           (Def_Id, Save_SP);
!                      Set_SPARK_Pragma_Inherited (Def_Id, Save_SPI);
!                   end;
                 end;
-             end if;
  
!             return;
  
           --  Common case of explicit object initialization
  
           else
              --  In most cases, we must check that the initial value meets any
              --  constraint imposed by the declared type. However, there is one
              --  very important exception to this rule. If the entity has an
--- 7759,7823 ----
                                Loc)));
                    end if;
  
!                   --  As explained in Exp_Disp, we use Convert_Tag_To_Interface
!                   --  to do the final conversion, but we insert an intermediate
!                   --  temporary before the dereference so that we can process
!                   --  the expansion as part of the analysis of the declaration
!                   --  of this temporary, and then rewrite manually the original
!                   --  object as the simple renaming of this dereference.
  
!                   Tag_Comp := Convert_Tag_To_Interface (Typ, Tag_Comp);
!                   pragma Assert (Nkind (Tag_Comp) = N_Explicit_Dereference
!                     and then
!                       Nkind (Prefix (Tag_Comp)) = N_Unchecked_Type_Conversion);
  
!                   Ptr_Obj_Id := Make_Temporary (Loc, 'R');
  
!                   Ptr_Obj_Decl :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Ptr_Obj_Id,
!                       Constant_Present    => True,
!                       Object_Definition   =>
!                         New_Occurrence_Of
!                           (Entity (Subtype_Mark (Prefix (Tag_Comp))), Loc),
!                       Expression => Prefix (Tag_Comp));
  
!                   Insert_Action (N, Ptr_Obj_Decl, Suppress => All_Checks);
  
!                   Set_Prefix (Tag_Comp, New_Occurrence_Of (Ptr_Obj_Id, Loc));
!                   Expr_Q := Tag_Comp;
!                   Set_Etype (Expr_Q, Typ);
!                   Set_Parent (Expr_Q, N);
  
!                   Rewrite_As_Renaming := True;
                 end;
  
!             else
!                return;
!             end if;
  
           --  Common case of explicit object initialization
  
           else
+             --  Small optimization: if the expression is a function call and
+             --  the object is stand-alone, not declared at library level and of
+             --  a class-wide type, then we capture the result of the call into
+             --  a temporary, with the benefit that, if the result's type does
+             --  not need finalization, nothing will be finalized and, if it
+             --  does, the temporary only will be finalized by means of a direct
+             --  call to the Finalize primitive if the result's type is not a
+             --  class-wide type; whereas, in both cases, the stand-alone object
+             --  itself would be finalized by means of a dispatching call to the
+             --  Deep_Finalize routine.
+ 
+             if Nkind (Expr_Q) = N_Function_Call
+               and then not Special_Ret_Obj
+               and then not Is_Library_Level_Entity (Def_Id)
+               and then Is_Class_Wide_Type (Typ)
+             then
+                Remove_Side_Effects (Expr_Q);
+             end if;
+ 
              --  In most cases, we must check that the initial value meets any
              --  constraint imposed by the declared type. However, there is one
              --  very important exception to this rule. If the entity has an
*************** package body Exp_Ch3 is
*** 7428,7458 ****
                 end if;
              end if;
  
-             --  If the type is controlled and not inherently limited, then
-             --  the target is adjusted after the copy and attached to the
-             --  finalization list. However, no adjustment is done in the case
-             --  where the object was initialized by a call to a function whose
-             --  result is built in place, since no copy occurred. Similarly, no
-             --  adjustment is required if we are going to rewrite the object
-             --  declaration into a renaming declaration.
- 
-             if Needs_Finalization (Typ)
-               and then not Is_Limited_View (Typ)
-               and then not Rewrite_As_Renaming
-             then
-                Adj_Call :=
-                  Make_Adjust_Call (
-                    Obj_Ref => New_Occurrence_Of (Def_Id, Loc),
-                    Typ     => Base_Typ);
- 
-                --  Guard against a missing [Deep_]Adjust when the base type
-                --  was not properly frozen.
- 
-                if Present (Adj_Call) then
-                   Insert_Action_After (Init_After, Adj_Call);
-                end if;
-             end if;
- 
              --  For tagged types, when an init value is given, the tag has to
              --  be re-initialized separately in order to avoid the propagation
              --  of a wrong tag coming from a view conversion unless the type
--- 7862,7867 ----
*************** package body Exp_Ch3 is
*** 7473,7480 ****
              if Present (Tag_Assign) then
                 if Present (Following_Address_Clause (N)) then
                    Ensure_Freeze_Node (Def_Id);
! 
!                else
                    Insert_Action_After (Init_After, Tag_Assign);
                 end if;
  
--- 7882,7888 ----
              if Present (Tag_Assign) then
                 if Present (Following_Address_Clause (N)) then
                    Ensure_Freeze_Node (Def_Id);
!                elsif not Special_Ret_Obj then
                    Insert_Action_After (Init_After, Tag_Assign);
                 end if;
  
*************** package body Exp_Ch3 is
*** 7484,7506 ****
              --  record type.
  
              elsif Is_CPP_Constructor_Call (Expr) then
  
!                --  The call to the initialization procedure does NOT freeze the
!                --  object being initialized.
  
!                Id_Ref := New_Occurrence_Of (Def_Id, Loc);
!                Set_Must_Not_Freeze (Id_Ref);
!                Set_Assignment_OK (Id_Ref);
  
!                Insert_Actions_After (Init_After,
!                  Build_Initialization_Call (Loc, Id_Ref, Typ,
!                    Constructor_Ref => Expr));
  
!                --  We remove here the original call to the constructor
!                --  to avoid its management in the backend
  
!                Set_Expression (N, Empty);
!                return;
  
              --  Handle initialization of limited tagged types
  
--- 7892,7917 ----
              --  record type.
  
              elsif Is_CPP_Constructor_Call (Expr) then
+                declare
+                   Id_Ref : constant Node_Id := New_Occurrence_Of (Def_Id, Loc);
  
!                begin
!                   --  The call to the initialization procedure does NOT freeze
!                   --  the object being initialized.
  
!                   Set_Must_Not_Freeze (Id_Ref);
!                   Set_Assignment_OK (Id_Ref);
  
!                   Insert_Actions_After (Init_After,
!                     Build_Initialization_Call (Loc, Id_Ref, Typ,
!                       Constructor_Ref => Expr));
  
!                   --  We remove here the original call to the constructor
!                   --  to avoid its management in the backend
  
!                   Set_Expression (N, Empty);
!                   return;
!                end;
  
              --  Handle initialization of limited tagged types
  
*************** package body Exp_Ch3 is
*** 7536,7556 ****
              elsif Comes_From_Source (N)
                and then Is_Discrete_Type (Typ)
                and then Expr_Known_Valid (Expr)
              then
                 Set_Is_Known_Valid (Def_Id);
  
!             elsif Is_Access_Type (Typ) then
! 
!                --  For access types set the Is_Known_Non_Null flag if the
!                --  initializing value is known to be non-null. We can also set
!                --  Can_Never_Be_Null if this is a constant.
  
!                if Known_Non_Null (Expr) then
!                   Set_Is_Known_Non_Null (Def_Id, True);
  
!                   if Constant_Present (N) then
!                      Set_Can_Never_Be_Null (Def_Id);
!                   end if;
                 end if;
              end if;
  
--- 7947,7965 ----
              elsif Comes_From_Source (N)
                and then Is_Discrete_Type (Typ)
                and then Expr_Known_Valid (Expr)
+               and then Safe_To_Capture_Value (N, Def_Id)
              then
                 Set_Is_Known_Valid (Def_Id);
  
!             --  For access types, set the Is_Known_Non_Null flag if the
!             --  initializing value is known to be non-null. We can also
!             --  set Can_Never_Be_Null if this is a constant.
  
!             elsif Is_Access_Type (Typ) and then Known_Non_Null (Expr) then
!                Set_Is_Known_Non_Null (Def_Id, True);
  
!                if Constant_Present (N) then
!                   Set_Can_Never_Be_Null (Def_Id);
                 end if;
              end if;
  
*************** package body Exp_Ch3 is
*** 7563,7572 ****
              if Validity_Checks_On
                and then Comes_From_Source (N)
                and then Validity_Check_Copies
!               and then not Is_Generic_Type (Etype (Def_Id))
              then
                 Ensure_Valid (Expr);
!                Set_Is_Known_Valid (Def_Id);
              end if;
           end if;
  
--- 7972,8038 ----
              if Validity_Checks_On
                and then Comes_From_Source (N)
                and then Validity_Check_Copies
!               and then not Is_Generic_Type (Typ)
              then
                 Ensure_Valid (Expr);
! 
!                if Safe_To_Capture_Value (N, Def_Id) then
!                   Set_Is_Known_Valid (Def_Id);
!                end if;
!             end if;
! 
!             --  Now determine whether we will use a renaming
! 
!             Rewrite_As_Renaming :=
! 
!               --  The declaration cannot be rewritten if it has got constraints
! 
!               Is_Entity_Name (Original_Node (Obj_Def))
! 
!                 --  Nor if it is effectively an unconstrained declaration
! 
!                 and then not (Is_Array_Type (Typ)
!                                and then Is_Constr_Subt_For_UN_Aliased (Typ))
! 
!                 --  We may use a renaming if the initialization expression is a
!                 --  captured function call that meets a few conditions.
! 
!                 and then
!                   (Is_Renamable_Function_Call (Expr_Q)
! 
!                    --  Or else if it is a variable with OK_To_Rename set
! 
!                    or else (OK_To_Rename_Ref (Expr_Q)
!                              and then not Special_Ret_Obj)
! 
!                    --  Or else if it is a slice of such a variable
! 
!                    or else (Nkind (Expr_Q) = N_Slice
!                              and then OK_To_Rename_Ref (Prefix (Expr_Q))
!                              and then not Special_Ret_Obj));
! 
!             --  If the type needs finalization and is not inherently limited,
!             --  then the target is adjusted after the copy and attached to the
!             --  finalization list. However, no adjustment is needed in the case
!             --  where the object has been initialized by a call to a function
!             --  returning on the primary stack (see Expand_Ctrl_Function_Call)
!             --  since no copy occurred, given that the type is by-reference.
!             --  Similarly, no adjustment is needed if we are going to rewrite
!             --  the object declaration into a renaming declaration.
! 
!             if Needs_Finalization (Typ)
!               and then not Is_Limited_View (Typ)
!               and then Nkind (Expr_Q) /= N_Function_Call
!               and then not Rewrite_As_Renaming
!             then
!                Adj_Call :=
!                  Make_Adjust_Call (
!                    Obj_Ref => New_Occurrence_Of (Def_Id, Loc),
!                    Typ     => Base_Typ);
! 
!                if Present (Adj_Call) and then not Special_Ret_Obj then
!                   Insert_Action_After (Init_After, Adj_Call);
!                end if;
              end if;
           end if;
  
*************** package body Exp_Ch3 is
*** 7589,7605 ****
                           Name       => New_Occurrence_Of (Def_Id, Loc),
                           Expression => Relocate_Node (Expr));
              begin
-                Set_Expression (N, Empty);
-                Set_No_Initialization (N);
                 Set_Assignment_OK (Name (Stat));
                 Set_No_Ctrl_Actions (Stat);
!                Insert_After_And_Analyze (Init_After, Stat);
              end;
           end if;
        end if;
  
        if Nkind (Obj_Def) = N_Access_Definition
!         and then not Is_Local_Anonymous_Access (Etype (Def_Id))
        then
           --  An Ada 2012 stand-alone object of an anonymous access type
  
--- 8055,8071 ----
                           Name       => New_Occurrence_Of (Def_Id, Loc),
                           Expression => Relocate_Node (Expr));
              begin
                 Set_Assignment_OK (Name (Stat));
                 Set_No_Ctrl_Actions (Stat);
!                Insert_Action_After (Init_After, Stat);
!                Set_Expression (N, Empty);
!                Set_No_Initialization (N);
              end;
           end if;
        end if;
  
        if Nkind (Obj_Def) = N_Access_Definition
!         and then not Is_Local_Anonymous_Access (Typ)
        then
           --  An Ada 2012 stand-alone object of an anonymous access type
  
*************** package body Exp_Ch3 is
*** 7670,7675 ****
--- 8136,8142 ----
          and then Present (DIC_Procedure (Typ))
          and then not Has_Null_Body (DIC_Procedure (Typ))
          and then not Has_Init_Expression (N)
+         and then No (Expr)
          and then not Is_Imported (Def_Id)
        then
           declare
*************** package body Exp_Ch3 is
*** 7690,7734 ****
           end;
        end if;
  
!       --  Final transformation - turn the object declaration into a renaming
!       --  if appropriate. If this is the completion of a deferred constant
!       --  declaration, then this transformation generates what would be
!       --  illegal code if written by hand, but that's OK.
  
!       if Present (Expr) then
!          if Rewrite_As_Renaming then
!             Rewrite (N,
!               Make_Object_Renaming_Declaration (Loc,
!                 Defining_Identifier => Defining_Identifier (N),
!                 Subtype_Mark        => Obj_Def,
!                 Name                => Expr_Q));
  
!             --  We do not analyze this renaming declaration, because all its
!             --  components have already been analyzed, and if we were to go
!             --  ahead and analyze it, we would in effect be trying to generate
!             --  another declaration of X, which won't do.
  
!             Set_Renamed_Object (Defining_Identifier (N), Expr_Q);
!             Set_Analyzed (N);
  
!             --  We do need to deal with debug issues for this renaming
  
!             --  First, if entity comes from source, then mark it as needing
!             --  debug information, even though it is defined by a generated
!             --  renaming that does not come from source.
  
!             Set_Debug_Info_Defining_Id (N);
  
!             --  Now call the routine to generate debug info for the renaming
  
              declare
!                Decl : constant Node_Id := Debug_Renaming_Declaration (N);
              begin
!                if Present (Decl) then
!                   Insert_Action (N, Decl);
                 end if;
              end;
           end if;
        end if;
  
     --  Exception on library entity not available
--- 8157,8868 ----
           end;
        end if;
  
!       --  If this is the return object of a build-in-place function, locate the
!       --  implicit BIPaccess parameter designating the caller-supplied return
!       --  object and convert the declaration to a renaming of a dereference of
!       --  this parameter. If the declaration includes an expression, add an
!       --  assignment statement to ensure the return object gets initialized.
  
!       --    Result : T [:= <expression>];
  
!       --  is converted to
  
!       --    Result : T renames BIPaccess.all;
!       --    [Result := <expression>;]
  
!       --  in the constrained case, or to
  
!       --    type Txx is access all ...;
!       --    Rxx : Txx := null;
  
!       --    if BIPalloc = 1 then
!       --       Rxx := BIPaccess;
!       --       Rxx.all := <expression>;
!       --    elsif BIPalloc = 2 then
!       --       Rxx := new <expression-type>'(<expression>)[storage_pool =
!       --         system__secondary_stack__ss_pool][procedure_to_call =
!       --         system__secondary_stack__ss_allocate];
!       --    elsif BIPalloc = 3 then
!       --       Rxx := new <expression-type>'(<expression>)
!       --    elsif BIPalloc = 4 then
!       --       Pxx : system__storage_pools__root_storage_pool renames
!       --         BIPstoragepool.all;
!       --       Rxx := new <expression-type>'(<expression>)[storage_pool =
!       --         Pxx][procedure_to_call =
!       --         system__storage_pools__allocate_any];
!       --    else
!       --       [program_error "build in place mismatch"]
!       --    end if;
  
!       --    Result : T renames Rxx.all;
! 
!       --  in the unconstrained case.
! 
!       if Is_Build_In_Place_Return_Object (Def_Id) then
!          declare
!             Init_Stmt      : Node_Id;
!             Obj_Acc_Formal : Entity_Id;
! 
!          begin
!             --  Retrieve the implicit access parameter passed by the caller
! 
!             Obj_Acc_Formal :=
!               Build_In_Place_Formal (Func_Id, BIP_Object_Access);
! 
!             --  If the return object's declaration includes an expression
!             --  and the declaration isn't marked as No_Initialization, then
!             --  we need to generate an assignment to the object and insert
!             --  it after the declaration before rewriting it as a renaming
!             --  (otherwise we'll lose the initialization). The case where
!             --  the result type is an interface (or class-wide interface)
!             --  is also excluded because the context of the function call
!             --  must be unconstrained, so the initialization will always
!             --  be done as part of an allocator evaluation (storage pool
!             --  or secondary stack), never to a constrained target object
!             --  passed in by the caller. Besides the assignment being
!             --  unneeded in this case, it avoids problems with trying to
!             --  generate a dispatching assignment when the return expression
!             --  is a nonlimited descendant of a limited interface (the
!             --  interface has no assignment operation).
! 
!             if Present (Expr_Q)
!               and then not Is_Delayed_Aggregate (Expr_Q)
!               and then not No_Initialization (N)
!               and then not Is_Interface (Typ)
!             then
!                if Is_Class_Wide_Type (Typ)
!                  and then not Is_Class_Wide_Type (Etype (Expr_Q))
!                then
!                   Init_Stmt :=
!                     Make_Assignment_Statement (Loc,
!                       Name       => New_Occurrence_Of (Def_Id, Loc),
!                       Expression =>
!                         Make_Type_Conversion (Loc,
!                           Subtype_Mark =>
!                             New_Occurrence_Of (Typ, Loc),
!                           Expression   => New_Copy_Tree (Expr_Q)));
! 
!                else
!                   Init_Stmt :=
!                     Make_Assignment_Statement (Loc,
!                       Name       => New_Occurrence_Of (Def_Id, Loc),
!                       Expression => New_Copy_Tree (Expr_Q));
!                end if;
! 
!                Set_Assignment_OK (Name (Init_Stmt));
!                Set_No_Ctrl_Actions (Init_Stmt);
! 
!             else
!                Init_Stmt := Empty;
!             end if;
! 
!             --  When the function's subtype is unconstrained, a run-time
!             --  test may be needed to decide the form of allocation to use
!             --  for the return object. The function has an implicit formal
!             --  parameter indicating this. If the BIP_Alloc_Form formal has
!             --  the value one, then the caller has passed access to an
!             --  existing object for use as the return object. If the value
!             --  is two, then the return object must be allocated on the
!             --  secondary stack. If the value is three, then the return
!             --  object must be allocated on the heap. Otherwise, the object
!             --  must be allocated in a storage pool. We generate an if
!             --  statement to test the BIP_Alloc_Form formal and initialize
!             --  a local access value appropriately.
! 
!             if Needs_BIP_Alloc_Form (Func_Id) then
!                declare
!                   Desig_Typ : constant Entity_Id :=
!                     (if Ekind (Typ) = E_Array_Subtype
!                      then Etype (Func_Id) else Typ);
!                   --  Ensure that the we use a fat pointer when allocating
!                   --  an unconstrained array on the heap. In this case the
!                   --  result object's type is a constrained array type even
!                   --  though the function's type is unconstrained.
! 
!                   Obj_Alloc_Formal : constant Entity_Id :=
!                     Build_In_Place_Formal (Func_Id, BIP_Alloc_Form);
!                   Pool_Id          : constant Entity_Id :=
!                     Make_Temporary (Loc, 'P');
! 
!                   Acc_Typ        : Entity_Id;
!                   Alloc_Obj_Decl : Node_Id;
!                   Alloc_Obj_Id   : Entity_Id;
!                   Alloc_Stmt     : Node_Id;
!                   Guard_Except   : Node_Id;
!                   Heap_Allocator : Node_Id;
!                   Pool_Allocator : Node_Id;
!                   Pool_Decl      : Node_Id;
!                   Ptr_Typ_Decl   : Node_Id;
!                   SS_Allocator   : Node_Id;
! 
!                begin
!                   --  Create an access type designating the function's
!                   --  result subtype.
! 
!                   Acc_Typ := Make_Temporary (Loc, 'A');
! 
!                   Ptr_Typ_Decl :=
!                     Make_Full_Type_Declaration (Loc,
!                       Defining_Identifier => Acc_Typ,
!                       Type_Definition     =>
!                         Make_Access_To_Object_Definition (Loc,
!                           All_Present        => True,
!                           Subtype_Indication =>
!                             New_Occurrence_Of (Desig_Typ, Loc)));
! 
!                   Insert_Action (N, Ptr_Typ_Decl, Suppress => All_Checks);
! 
!                   --  Create an access object that will be initialized to an
!                   --  access value denoting the return object, either coming
!                   --  from an implicit access value passed in by the caller
!                   --  or from the result of an allocator.
! 
!                   Alloc_Obj_Id := Make_Temporary (Loc, 'R');
! 
!                   Alloc_Obj_Decl :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Alloc_Obj_Id,
!                       Object_Definition   =>
!                         New_Occurrence_Of (Acc_Typ, Loc));
! 
!                   Insert_Action (N, Alloc_Obj_Decl, Suppress => All_Checks);
! 
!                   --  First create the Heap_Allocator
! 
!                   Heap_Allocator := Make_Allocator_For_Return (Expr_Q);
! 
!                   --  The Pool_Allocator is just like the Heap_Allocator,
!                   --  except we set Storage_Pool and Procedure_To_Call so
!                   --  it will use the user-defined storage pool.
! 
!                   Pool_Allocator := Make_Allocator_For_Return (Expr_Q);
! 
!                   --  Do not generate the renaming of the build-in-place
!                   --  pool parameter on ZFP because the parameter is not
!                   --  created in the first place.
! 
!                   if RTE_Available (RE_Root_Storage_Pool_Ptr) then
!                      Pool_Decl :=
!                        Make_Object_Renaming_Declaration (Loc,
!                          Defining_Identifier => Pool_Id,
!                          Subtype_Mark        =>
!                            New_Occurrence_Of
!                              (RTE (RE_Root_Storage_Pool), Loc),
!                          Name                =>
!                            Make_Explicit_Dereference (Loc,
!                              New_Occurrence_Of
!                                (Build_In_Place_Formal
!                                   (Func_Id, BIP_Storage_Pool), Loc)));
!                      Set_Storage_Pool (Pool_Allocator, Pool_Id);
!                      Set_Procedure_To_Call
!                        (Pool_Allocator, RTE (RE_Allocate_Any));
!                   else
!                      Pool_Decl := Make_Null_Statement (Loc);
!                   end if;
! 
!                   --  If the No_Allocators restriction is active, then only
!                   --  an allocator for secondary stack allocation is needed.
!                   --  It's OK for such allocators to have Comes_From_Source
!                   --  set to False, because gigi knows not to flag them as
!                   --  being a violation of No_Implicit_Heap_Allocations.
! 
!                   if Restriction_Active (No_Allocators) then
!                      SS_Allocator   := Heap_Allocator;
!                      Heap_Allocator := Make_Null (Loc);
!                      Pool_Allocator := Make_Null (Loc);
! 
!                   --  Otherwise the heap and pool allocators may be needed,
!                   --  so we make another allocator for secondary stack
!                   --  allocation.
! 
!                   else
!                      SS_Allocator := Make_Allocator_For_Return (Expr_Q);
! 
!                      --  The heap and pool allocators are marked as
!                      --  Comes_From_Source since they correspond to an
!                      --  explicit user-written allocator (that is, it will
!                      --  only be executed on behalf of callers that call the
!                      --  function as initialization for such an allocator).
!                      --  Prevents errors when No_Implicit_Heap_Allocations
!                      --  is in force.
! 
!                      Set_Comes_From_Source (Heap_Allocator, True);
!                      Set_Comes_From_Source (Pool_Allocator, True);
!                   end if;
! 
!                   --  The allocator is returned on the secondary stack
! 
!                   Check_Restriction (No_Secondary_Stack, N);
!                   Set_Storage_Pool (SS_Allocator, RTE (RE_SS_Pool));
!                   Set_Procedure_To_Call
!                     (SS_Allocator, RTE (RE_SS_Allocate));
! 
!                   --  The allocator is returned on the secondary stack,
!                   --  so indicate that the function return, as well as
!                   --  all blocks that encloses the allocator, must not
!                   --  release it. The flags must be set now because
!                   --  the decision to use the secondary stack is done
!                   --  very late in the course of expanding the return
!                   --  statement, past the point where these flags are
!                   --  normally set.
! 
!                   Set_Uses_Sec_Stack (Func_Id);
!                   Set_Uses_Sec_Stack (Scope (Def_Id));
!                   Set_Sec_Stack_Needed_For_Return (Scope (Def_Id));
! 
!                   --  Guard against poor expansion on the caller side by
!                   --  using a raise statement to catch out-of-range values
!                   --  of formal parameter BIP_Alloc_Form.
! 
!                   if Exceptions_OK then
!                      Guard_Except :=
!                        Make_Raise_Program_Error (Loc,
!                          Reason => PE_Build_In_Place_Mismatch);
!                   else
!                      Guard_Except := Make_Null_Statement (Loc);
!                   end if;
! 
!                   --  Create an if statement to test the BIP_Alloc_Form
!                   --  formal and initialize the access object to either the
!                   --  BIP_Object_Access formal (BIP_Alloc_Form =
!                   --  Caller_Allocation), the result of allocating the
!                   --  object in the secondary stack (BIP_Alloc_Form =
!                   --  Secondary_Stack), or else an allocator to create the
!                   --  return object in the heap or user-defined pool
!                   --  (BIP_Alloc_Form = Global_Heap or User_Storage_Pool).
! 
!                   --  ??? An unchecked type conversion must be made in the
!                   --  case of assigning the access object formal to the
!                   --  local access object, because a normal conversion would
!                   --  be illegal in some cases (such as converting access-
!                   --  to-unconstrained to access-to-constrained), but the
!                   --  the unchecked conversion will presumably fail to work
!                   --  right in just such cases. It's not clear at all how to
!                   --  handle this.
! 
!                   Alloc_Stmt :=
!                     Make_If_Statement (Loc,
!                       Condition =>
!                         Make_Op_Eq (Loc,
!                           Left_Opnd  =>
!                             New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                           Right_Opnd =>
!                             Make_Integer_Literal (Loc,
!                               UI_From_Int (BIP_Allocation_Form'Pos
!                                              (Caller_Allocation)))),
! 
!                       Then_Statements => New_List (
!                         Make_Assignment_Statement (Loc,
!                           Name       =>
!                             New_Occurrence_Of (Alloc_Obj_Id, Loc),
!                           Expression =>
!                             Unchecked_Convert_To
!                               (Acc_Typ,
!                                New_Occurrence_Of (Obj_Acc_Formal, Loc)))),
! 
!                       Elsif_Parts => New_List (
!                         Make_Elsif_Part (Loc,
!                           Condition =>
!                             Make_Op_Eq (Loc,
!                               Left_Opnd  =>
!                                 New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                               Right_Opnd =>
!                                 Make_Integer_Literal (Loc,
!                                   UI_From_Int (BIP_Allocation_Form'Pos
!                                                  (Secondary_Stack)))),
! 
!                           Then_Statements => New_List (
!                             Make_Assignment_Statement (Loc,
!                               Name       =>
!                                 New_Occurrence_Of (Alloc_Obj_Id, Loc),
!                               Expression => SS_Allocator))),
! 
!                         Make_Elsif_Part (Loc,
!                           Condition =>
!                             Make_Op_Eq (Loc,
!                               Left_Opnd  =>
!                                 New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                               Right_Opnd =>
!                                 Make_Integer_Literal (Loc,
!                                   UI_From_Int (BIP_Allocation_Form'Pos
!                                                  (Global_Heap)))),
! 
!                           Then_Statements => New_List (
!                             Build_Heap_Or_Pool_Allocator
!                               (Temp_Id    => Alloc_Obj_Id,
!                                Temp_Typ   => Acc_Typ,
!                                Ret_Typ    => Desig_Typ,
!                                Alloc_Expr => Heap_Allocator))),
! 
!                         --  ??? If all is well, we can put the following
!                         --  'elsif' in the 'else', but this is a useful
!                         --  self-check in case caller and callee don't agree
!                         --  on whether BIPAlloc and so on should be passed.
! 
!                         Make_Elsif_Part (Loc,
!                           Condition =>
!                             Make_Op_Eq (Loc,
!                               Left_Opnd  =>
!                                 New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                               Right_Opnd =>
!                                 Make_Integer_Literal (Loc,
!                                   UI_From_Int (BIP_Allocation_Form'Pos
!                                                  (User_Storage_Pool)))),
! 
!                           Then_Statements => New_List (
!                             Pool_Decl,
!                             Build_Heap_Or_Pool_Allocator
!                               (Temp_Id    => Alloc_Obj_Id,
!                                Temp_Typ   => Acc_Typ,
!                                Ret_Typ    => Desig_Typ,
!                                Alloc_Expr => Pool_Allocator)))),
! 
!                       --  Raise Program_Error if it's none of the above;
!                       --  this is a compiler bug.
! 
!                       Else_Statements => New_List (Guard_Except));
! 
!                      --  If a separate initialization assignment was created
!                      --  earlier, append that following the assignment of the
!                      --  implicit access formal to the access object, to ensure
!                      --  that the return object is initialized in that case. In
!                      --  this situation, the target of the assignment must be
!                      --  rewritten to denote a dereference of the access to the
!                      --  return object passed in by the caller.
! 
!                      if Present (Init_Stmt) then
!                         Set_Name (Init_Stmt,
!                           Make_Explicit_Dereference (Loc,
!                             Prefix => New_Occurrence_Of (Alloc_Obj_Id, Loc)));
!                         Set_Assignment_OK (Name (Init_Stmt));
! 
!                         Append_To (Then_Statements (Alloc_Stmt), Init_Stmt);
!                         Init_Stmt := Empty;
!                      end if;
! 
!                   Insert_Action (N, Alloc_Stmt, Suppress => All_Checks);
! 
!                   --  From now on, the type of the return object is the
!                   --  designated type.
! 
!                   if Desig_Typ /= Typ then
!                      Set_Etype (Def_Id, Desig_Typ);
!                      Set_Actual_Subtype (Def_Id, Typ);
!                   end if;
! 
!                   --  Remember the local access object for use in the
!                   --  dereference of the renaming created below.
! 
!                   Obj_Acc_Formal := Alloc_Obj_Id;
!                end;
! 
!             --  When the function's type is unconstrained and a run-time test
!             --  is not needed, we nevertheless need to build the return using
!             --  the return object's type.
! 
!             elsif not Is_Constrained (Underlying_Type (Etype (Func_Id))) then
!                declare
!                   Acc_Typ        : Entity_Id;
!                   Alloc_Obj_Decl : Node_Id;
!                   Alloc_Obj_Id   : Entity_Id;
!                   Ptr_Typ_Decl   : Node_Id;
! 
!                begin
!                   --  Create an access type designating the function's
!                   --  result subtype.
! 
!                   Acc_Typ := Make_Temporary (Loc, 'A');
! 
!                   Ptr_Typ_Decl :=
!                     Make_Full_Type_Declaration (Loc,
!                       Defining_Identifier => Acc_Typ,
!                       Type_Definition     =>
!                         Make_Access_To_Object_Definition (Loc,
!                           All_Present        => True,
!                           Subtype_Indication =>
!                             New_Occurrence_Of (Typ, Loc)));
! 
!                   Insert_Action (N, Ptr_Typ_Decl, Suppress => All_Checks);
! 
!                   --  Create an access object initialized to the conversion
!                   --  of the implicit access value passed in by the caller.
! 
!                   Alloc_Obj_Id := Make_Temporary (Loc, 'R');
! 
!                   --  See the ??? comment a few lines above about the use of
!                   --  an unchecked conversion here.
! 
!                   Alloc_Obj_Decl :=
!                     Make_Object_Declaration (Loc,
!                       Defining_Identifier => Alloc_Obj_Id,
!                       Constant_Present    => True,
!                       Object_Definition   =>
!                         New_Occurrence_Of (Acc_Typ, Loc),
!                       Expression =>
!                         Unchecked_Convert_To
!                           (Acc_Typ, New_Occurrence_Of (Obj_Acc_Formal, Loc)));
! 
!                   Insert_Action (N, Alloc_Obj_Decl, Suppress => All_Checks);
! 
!                   --  Remember the local access object for use in the
!                   --  dereference of the renaming created below.
! 
!                   Obj_Acc_Formal := Alloc_Obj_Id;
!                end;
!             end if;
! 
!             --  Initialize the object now that it has got its final subtype,
!             --  but before rewriting it as a renaming.
! 
!             Initialize_Return_Object
!               (Tag_Assign, Adj_Call, Expr_Q, Init_Stmt, Init_After);
! 
!             --  Replace the return object declaration with a renaming of a
!             --  dereference of the access value designating the return object.
! 
!             Expr_Q :=
!               Make_Explicit_Dereference (Loc,
!                 Prefix => New_Occurrence_Of (Obj_Acc_Formal, Loc));
!             Set_Etype (Expr_Q, Etype (Def_Id));
! 
!             Rewrite_As_Renaming := True;
!          end;
! 
!       --  If we can rename the initialization expression, we need to make sure
!       --  that we use the proper type in the case of a return object that lives
!       --  on the secondary stack (see other cases below for a similar handling)
!       --  and that the tag is assigned in the case of any return object.
  
+       elsif Rewrite_As_Renaming then
+          if Special_Ret_Obj then
              declare
!                Desig_Typ : constant Entity_Id :=
!                  (if Ekind (Typ) = E_Array_Subtype
!                   then Etype (Func_Id) else Typ);
! 
              begin
!                --  From now on, the type of the return object is the
!                --  designated type.
! 
!                if Desig_Typ /= Typ then
!                   Set_Etype (Def_Id, Desig_Typ);
!                   Set_Actual_Subtype (Def_Id, Typ);
!                end if;
! 
!                if Present (Tag_Assign) then
!                   Insert_Action_After (Init_After, Tag_Assign);
!                end if;
! 
!                --  Ada 2005 (AI95-344): If the result type is class-wide,
!                --  insert a check that the level of the return expression's
!                --  underlying type is not deeper than the level of the master
!                --  enclosing the function.
! 
!                --  AI12-043: The check is made immediately after the return
!                --  object is created.
! 
!                if Is_Class_Wide_Type (Etype (Func_Id)) then
!                   Apply_CW_Accessibility_Check (Expr_Q, Func_Id);
                 end if;
              end;
           end if;
+ 
+       --  If this is the return object of a function returning on the secondary
+       --  stack, convert the declaration to a renaming of the dereference of ah
+       --  allocator for the secondary stack.
+ 
+       --    Result : T [:= <expression>];
+ 
+       --  is converted to
+ 
+       --    type Txx is access all ...;
+       --    Rxx : constant Txx :=
+       --      new <expression-type>['(<expression>)][storage_pool =
+       --        system__secondary_stack__ss_pool][procedure_to_call =
+       --        system__secondary_stack__ss_allocate];
+ 
+       --    Result : T renames Rxx.all;
+ 
+       elsif Is_Secondary_Stack_Return_Object (Def_Id) then
+          declare
+             Desig_Typ : constant Entity_Id :=
+               (if Ekind (Typ) = E_Array_Subtype
+                then Etype (Func_Id) else Typ);
+             --  Ensure that the we use a fat pointer when allocating
+             --  an unconstrained array on the heap. In this case the
+             --  result object's type is a constrained array type even
+             --  though the function's type is unconstrained.
+ 
+             Acc_Typ        : Entity_Id;
+             Alloc_Obj_Decl : Node_Id;
+             Alloc_Obj_Id   : Entity_Id;
+             Ptr_Type_Decl  : Node_Id;
+ 
+          begin
+             --  Create an access type designating the function's
+             --  result subtype.
+ 
+             Acc_Typ := Make_Temporary (Loc, 'A');
+ 
+             Ptr_Type_Decl :=
+               Make_Full_Type_Declaration (Loc,
+                 Defining_Identifier => Acc_Typ,
+                 Type_Definition     =>
+                   Make_Access_To_Object_Definition (Loc,
+                     All_Present        => True,
+                     Subtype_Indication =>
+                       New_Occurrence_Of (Desig_Typ, Loc)));
+ 
+             Insert_Action (N, Ptr_Type_Decl, Suppress => All_Checks);
+ 
+             Set_Associated_Storage_Pool (Acc_Typ, RTE (RE_SS_Pool));
+ 
+             Alloc_Obj_Id := Make_Temporary (Loc, 'R');
+ 
+             Alloc_Obj_Decl :=
+               Make_Object_Declaration (Loc,
+                 Defining_Identifier => Alloc_Obj_Id,
+                 Constant_Present    => True,
+                 Object_Definition   =>
+                   New_Occurrence_Of (Acc_Typ, Loc),
+                 Expression => Make_Allocator_For_Return (Expr_Q));
+ 
+             Insert_Action (N, Alloc_Obj_Decl, Suppress => All_Checks);
+ 
+             Set_Uses_Sec_Stack (Func_Id);
+             Set_Uses_Sec_Stack (Scope (Def_Id));
+             Set_Sec_Stack_Needed_For_Return (Scope (Def_Id));
+ 
+             --  From now on, the type of the return object is the
+             --  designated type.
+ 
+             if Desig_Typ /= Typ then
+                Set_Etype (Def_Id, Desig_Typ);
+                Set_Actual_Subtype (Def_Id, Typ);
+             end if;
+ 
+             --  Initialize the object now that it has got its final subtype,
+             --  but before rewriting it as a renaming.
+ 
+             Initialize_Return_Object
+               (Tag_Assign, Adj_Call, Expr_Q, Empty, Init_After);
+ 
+             --  Replace the return object declaration with a renaming of a
+             --  dereference of the access value designating the return object.
+ 
+             Expr_Q :=
+               Make_Explicit_Dereference (Loc,
+                 Prefix => New_Occurrence_Of (Alloc_Obj_Id, Loc));
+             Set_Etype (Expr_Q, Etype (Def_Id));
+ 
+             Rewrite_As_Renaming := True;
+          end;
+ 
+       --  If this is the return object of a function returning a by-reference
+       --  type, convert the declaration to a renaming of the dereference of ah
+       --  allocator for the return stack.
+ 
+       --    Result : T [:= <expression>];
+ 
+       --  is converted to
+ 
+       --    type Txx is access all ...;
+       --    Rxx : constant Txx :=
+       --      new <expression-type>['(<expression>)][storage_pool =
+       --        system__return_stack__rs_pool][procedure_to_call =
+       --        system__return_stack__rs_allocate];
+ 
+       --    Result : T renames Rxx.all;
+ 
+       elsif Back_End_Return_Slot
+         and then Is_By_Reference_Return_Object (Def_Id)
+       then
+          declare
+             Acc_Typ        : Entity_Id;
+             Alloc_Obj_Decl : Node_Id;
+             Alloc_Obj_Id   : Entity_Id;
+             Ptr_Type_Decl  : Node_Id;
+ 
+          begin
+             --  Create an access type designating the function's
+             --  result subtype.
+ 
+             Acc_Typ := Make_Temporary (Loc, 'A');
+ 
+             Ptr_Type_Decl :=
+               Make_Full_Type_Declaration (Loc,
+                 Defining_Identifier => Acc_Typ,
+                 Type_Definition     =>
+                   Make_Access_To_Object_Definition (Loc,
+                     All_Present        => True,
+                     Subtype_Indication =>
+                       New_Occurrence_Of (Typ, Loc)));
+ 
+             Insert_Action (N, Ptr_Type_Decl, Suppress => All_Checks);
+ 
+             Set_Associated_Storage_Pool (Acc_Typ, RTE (RE_RS_Pool));
+ 
+             Alloc_Obj_Id := Make_Temporary (Loc, 'R');
+ 
+             Alloc_Obj_Decl :=
+               Make_Object_Declaration (Loc,
+                 Defining_Identifier => Alloc_Obj_Id,
+                 Constant_Present    => True,
+                 Object_Definition   =>
+                   New_Occurrence_Of (Acc_Typ, Loc),
+                 Expression => Make_Allocator_For_Return (Expr_Q));
+ 
+             Insert_Action (N, Alloc_Obj_Decl, Suppress => All_Checks);
+ 
+             --  Initialize the object now that it has got its final subtype,
+             --  but before rewriting it as a renaming.
+ 
+             Initialize_Return_Object
+               (Tag_Assign, Adj_Call, Expr_Q, Empty, Init_After);
+ 
+             --  Replace the return object declaration with a renaming of a
+             --  dereference of the access value designating the return object.
+ 
+             Expr_Q :=
+               Make_Explicit_Dereference (Loc,
+                 Prefix => New_Occurrence_Of (Alloc_Obj_Id, Loc));
+             Set_Etype (Expr_Q, Etype (Def_Id));
+ 
+             Rewrite_As_Renaming := True;
+          end;
+       end if;
+ 
+       --  Final transformation - turn the object declaration into a renaming
+       --  if appropriate. If this is the completion of a deferred constant
+       --  declaration, then this transformation generates what would be
+       --  illegal code if written by hand, but that's OK.
+ 
+       if Rewrite_As_Renaming then
+          Rewrite (N,
+            Make_Object_Renaming_Declaration (Loc,
+              Defining_Identifier => Def_Id,
+              Subtype_Mark        => New_Occurrence_Of (Etype (Def_Id), Loc),
+              Name                => Expr_Q));
+ 
+          --  We do not analyze this renaming declaration, because all its
+          --  components have already been analyzed, and if we were to go
+          --  ahead and analyze it, we would in effect be trying to generate
+          --  another declaration of X, which won't do.
+ 
+          Set_Renamed_Object (Def_Id, Expr_Q);
+          Set_Analyzed (N);
+ 
+          --  We do need to deal with debug issues for this renaming
+ 
+          --  First, if entity comes from source, then mark it as needing
+          --  debug information, even though it is defined by a generated
+          --  renaming that does not come from source.
+ 
+          Set_Debug_Info_Defining_Id (N);
+ 
+          --  Now call the routine to generate debug info for the renaming
+ 
+          Insert_Action (N, Debug_Renaming_Declaration (N));
        end if;
  
     --  Exception on library entity not available
*************** package body Exp_Ch3 is
*** 8458,8466 ****
        --  the runtime verification of all invariants that pertain to the type.
        --  This includes invariants on the partial and full view, inherited
        --  class-wide invariants from parent types or interfaces, and invariants
!       --  on array elements or record components.
  
!       if Is_Interface (Def_Id) then
  
           --  Interfaces are treated as the partial view of a private type in
           --  order to achieve uniformity with the general case. As a result, an
--- 9592,9603 ----
        --  the runtime verification of all invariants that pertain to the type.
        --  This includes invariants on the partial and full view, inherited
        --  class-wide invariants from parent types or interfaces, and invariants
!       --  on array elements or record components. But skip internal types.
  
!       if Is_Itype (Def_Id) then
!          null;
! 
!       elsif Is_Interface (Def_Id) then
  
           --  Interfaces are treated as the partial view of a private type in
           --  order to achieve uniformity with the general case. As a result, an
*************** package body Exp_Ch3 is
*** 9047,9052 ****
--- 10184,10413 ----
        return Is_RTU (S1, System) or else Is_RTU (S1, Ada);
     end In_Runtime;
  
+    package body Initialization_Control is
+ 
+       ------------------------
+       -- Requires_Late_Init --
+       ------------------------
+ 
+       function Requires_Late_Init
+         (Decl     : Node_Id;
+          Rec_Type : Entity_Id) return Boolean
+       is
+          References_Current_Instance : Boolean := False;
+          Has_Access_Discriminant     : Boolean := False;
+          Has_Internal_Call           : Boolean := False;
+ 
+          function Find_Access_Discriminant
+            (N : Node_Id) return Traverse_Result;
+          --  Look for a name denoting an access discriminant
+ 
+          function Find_Current_Instance
+            (N : Node_Id) return Traverse_Result;
+          --  Look for a reference to the current instance of the type
+ 
+          function Find_Internal_Call
+            (N : Node_Id) return Traverse_Result;
+          --  Look for an internal protected function call
+ 
+          ------------------------------
+          -- Find_Access_Discriminant --
+          ------------------------------
+ 
+          function Find_Access_Discriminant
+            (N : Node_Id) return Traverse_Result is
+          begin
+             if Is_Entity_Name (N)
+               and then Denotes_Discriminant (N)
+               and then Is_Access_Type (Etype (N))
+             then
+                Has_Access_Discriminant := True;
+                return Abandon;
+             else
+                return OK;
+             end if;
+          end Find_Access_Discriminant;
+ 
+          ---------------------------
+          -- Find_Current_Instance --
+          ---------------------------
+ 
+          function Find_Current_Instance
+            (N : Node_Id) return Traverse_Result is
+          begin
+             if Is_Entity_Name (N)
+               and then Present (Entity (N))
+               and then Is_Current_Instance (N)
+             then
+                References_Current_Instance := True;
+                return Abandon;
+             else
+                return OK;
+             end if;
+          end Find_Current_Instance;
+ 
+          ------------------------
+          -- Find_Internal_Call --
+          ------------------------
+ 
+          function Find_Internal_Call (N : Node_Id) return Traverse_Result is
+ 
+             function Call_Scope (N : Node_Id) return Entity_Id;
+             --  Return the scope enclosing a given call node N
+ 
+             ----------------
+             -- Call_Scope --
+             ----------------
+ 
+             function Call_Scope (N : Node_Id) return Entity_Id is
+                Nam : constant Node_Id := Name (N);
+             begin
+                if Nkind (Nam) = N_Selected_Component then
+                   return Scope (Entity (Prefix (Nam)));
+                else
+                   return Scope (Entity (Nam));
+                end if;
+             end Call_Scope;
+ 
+          begin
+             if Nkind (N) = N_Function_Call
+               and then Call_Scope (N)
+                          = Corresponding_Concurrent_Type (Rec_Type)
+             then
+                Has_Internal_Call := True;
+                return Abandon;
+             else
+                return OK;
+             end if;
+          end Find_Internal_Call;
+ 
+          procedure Search_Access_Discriminant is new
+            Traverse_Proc (Find_Access_Discriminant);
+ 
+          procedure Search_Current_Instance is new
+            Traverse_Proc (Find_Current_Instance);
+ 
+          procedure Search_Internal_Call is new
+            Traverse_Proc (Find_Internal_Call);
+ 
+          --  Start of processing for Requires_Late_Init
+ 
+       begin
+          --  A component of an object is said to require late initialization
+          --  if:
+ 
+          --  it has an access discriminant value constrained by a per-object
+          --  expression;
+ 
+          if Has_Access_Constraint (Defining_Identifier (Decl))
+            and then No (Expression (Decl))
+          then
+             return True;
+ 
+          elsif Present (Expression (Decl)) then
+ 
+             --  it has an initialization expression that includes a name
+             --  denoting an access discriminant;
+ 
+             Search_Access_Discriminant (Expression (Decl));
+ 
+             if Has_Access_Discriminant then
+                return True;
+             end if;
+ 
+             --  or it has an initialization expression that includes a
+             --  reference to the current instance of the type either by
+             --  name...
+ 
+             Search_Current_Instance (Expression (Decl));
+ 
+             if References_Current_Instance then
+                return True;
+             end if;
+ 
+             --  ...or implicitly as the target object of a call.
+ 
+             if Is_Protected_Record_Type (Rec_Type) then
+                Search_Internal_Call (Expression (Decl));
+ 
+                if Has_Internal_Call then
+                   return True;
+                end if;
+             end if;
+          end if;
+ 
+          return False;
+       end Requires_Late_Init;
+ 
+       -----------------------------
+       -- Has_Late_Init_Component --
+       -----------------------------
+ 
+       function Has_Late_Init_Component
+         (Tagged_Rec_Type : Entity_Id) return Boolean
+       is
+          Comp_Id : Entity_Id :=
+            First_Component (Implementation_Base_Type (Tagged_Rec_Type));
+       begin
+          while Present (Comp_Id) loop
+             if Requires_Late_Init (Decl     => Parent (Comp_Id),
+                                    Rec_Type => Tagged_Rec_Type)
+             then
+                return True; -- found a component that requires late init
+ 
+             elsif Chars (Comp_Id) = Name_uParent
+               and then Has_Late_Init_Component (Etype (Comp_Id))
+             then
+                return True; -- an ancestor type has a late init component
+             end if;
+ 
+             Next_Component (Comp_Id);
+          end loop;
+ 
+          return False;
+       end Has_Late_Init_Component;
+ 
+       ------------------------
+       -- Tag_Init_Condition --
+       ------------------------
+ 
+       function Tag_Init_Condition
+         (Loc : Source_Ptr;
+          Init_Control_Formal : Entity_Id) return Node_Id is
+       begin
+          return Make_Op_Eq (Loc,
+                   New_Occurrence_Of (Init_Control_Formal, Loc),
+                   Make_Mode_Literal (Loc, Full_Init));
+       end Tag_Init_Condition;
+ 
+       --------------------------
+       -- Early_Init_Condition --
+       --------------------------
+ 
+       function Early_Init_Condition
+         (Loc : Source_Ptr;
+          Init_Control_Formal : Entity_Id) return Node_Id is
+       begin
+          return Make_Op_Ne (Loc,
+                   New_Occurrence_Of (Init_Control_Formal, Loc),
+                   Make_Mode_Literal (Loc, Late_Init_Only));
+       end Early_Init_Condition;
+ 
+       -------------------------
+       -- Late_Init_Condition --
+       -------------------------
+ 
+       function Late_Init_Condition
+         (Loc : Source_Ptr;
+          Init_Control_Formal : Entity_Id) return Node_Id is
+       begin
+          return Make_Op_Ne (Loc,
+                   New_Occurrence_Of (Init_Control_Formal, Loc),
+                   Make_Mode_Literal (Loc, Early_Init_Only));
+       end Late_Init_Condition;
+ 
+    end Initialization_Control;
+ 
     ----------------------------
     -- Initialization_Warning --
     ----------------------------
*************** package body Exp_Ch3 is
*** 9284,9290 ****
              --       Prim_T       => Typ'Tag,
              --       Interface_T  => Iface'Tag,
              --       Offset_Value => n,
!             --       Offset_Func  => Fn'Address)
  
              Append_To (Stmts_List,
                Make_Procedure_Call_Statement (Loc,
--- 10645,10651 ----
              --       Prim_T       => Typ'Tag,
              --       Interface_T  => Iface'Tag,
              --       Offset_Value => n,
!             --       Offset_Func  => Fn'Unrestricted_Access)
  
              Append_To (Stmts_List,
                Make_Procedure_Call_Statement (Loc,
*************** package body Exp_Ch3 is
*** 9319,9325 ****
                      Make_Attribute_Reference (Loc,
                        Prefix => New_Occurrence_Of
                                    (DT_Offset_To_Top_Func (Tag_Comp), Loc),
!                       Attribute_Name => Name_Address)))));
  
              --  In this case the next component stores the value of the offset
              --  to the top.
--- 10680,10686 ----
                      Make_Attribute_Reference (Loc,
                        Prefix => New_Occurrence_Of
                                    (DT_Offset_To_Top_Func (Tag_Comp), Loc),
!                       Attribute_Name => Name_Unrestricted_Access)))));
  
              --  In this case the next component stores the value of the offset
              --  to the top.
*************** package body Exp_Ch3 is
*** 9574,9591 ****
        return True;
     end Is_Null_Statement_List;
  
-    ------------------------------
-    -- Is_User_Defined_Equality --
-    ------------------------------
- 
-    function Is_User_Defined_Equality (Prim : Node_Id) return Boolean is
-    begin
-       return Chars (Prim) = Name_Op_Eq
-         and then Etype (First_Formal (Prim)) =
-                  Etype (Next_Formal (First_Formal (Prim)))
-         and then Base_Type (Etype (Prim)) = Standard_Boolean;
-    end Is_User_Defined_Equality;
- 
     ----------------------------------------
     -- Make_Controlling_Function_Wrappers --
     ----------------------------------------
--- 10935,10940 ----
*************** package body Exp_Ch3 is
*** 9790,9795 ****
--- 11139,11151 ----
              Mutate_Ekind (Func_Id, E_Function);
              Set_Is_Wrapper (Func_Id);
  
+             --  Corresponding_Spec will be set again to the same value during
+             --  analysis, but we need this information earlier.
+             --  Expand_N_Freeze_Entity needs to know whether a subprogram body
+             --  is a wrapper's body in order to get check suppression right.
+ 
+             Set_Corresponding_Spec (Func_Body, Func_Id);
+ 
              Override_Dispatching_Operation (Tag_Typ, Subp, New_Op => Func_Id);
           end if;
  
*************** package body Exp_Ch3 is
*** 10729,10765 ****
  
     function Make_Tag_Assignment (N : Node_Id) return Node_Id is
        Loc      : constant Source_Ptr := Sloc (N);
!       Def_If   : constant Entity_Id := Defining_Identifier (N);
!       Expr     : constant Node_Id := Expression (N);
!       Typ      : constant Entity_Id := Etype (Def_If);
!       Full_Typ : constant Entity_Id := Underlying_Type (Typ);
        New_Ref  : Node_Id;
  
     begin
!       --  This expansion activity is called during analysis.
  
        if Is_Tagged_Type (Typ)
!        and then not Is_Class_Wide_Type (Typ)
!        and then not Is_CPP_Class (Typ)
!        and then Tagged_Type_Expansion
!        and then Nkind (Expr) /= N_Aggregate
!        and then (Nkind (Expr) /= N_Qualified_Expression
!                   or else Nkind (Expression (Expr)) /= N_Aggregate)
        then
           New_Ref :=
             Make_Selected_Component (Loc,
!               Prefix        => New_Occurrence_Of (Def_If, Loc),
!               Selector_Name =>
!                 New_Occurrence_Of (First_Tag_Component (Full_Typ), Loc));
           Set_Assignment_OK (New_Ref);
  
           return
             Make_Assignment_Statement (Loc,
!               Name       => New_Ref,
!               Expression =>
!                 Unchecked_Convert_To (RTE (RE_Tag),
!                   New_Occurrence_Of (Node
!                       (First_Elmt (Access_Disp_Table (Full_Typ))), Loc)));
        else
           return Empty;
        end if;
--- 12085,12123 ----
  
     function Make_Tag_Assignment (N : Node_Id) return Node_Id is
        Loc      : constant Source_Ptr := Sloc (N);
!       Def_If   : constant Entity_Id  := Defining_Identifier (N);
!       Expr     : constant Node_Id    := Expression (N);
!       Typ      : constant Entity_Id  := Etype (Def_If);
!       Full_Typ : constant Entity_Id  := Underlying_Type (Typ);
! 
        New_Ref  : Node_Id;
  
     begin
!       --  This expansion activity is called during analysis
  
        if Is_Tagged_Type (Typ)
!         and then not Is_Class_Wide_Type (Typ)
!         and then not Is_CPP_Class (Typ)
!         and then Tagged_Type_Expansion
!         and then Nkind (Expr) /= N_Aggregate
!         and then (Nkind (Expr) /= N_Qualified_Expression
!                    or else Nkind (Expression (Expr)) /= N_Aggregate)
        then
           New_Ref :=
             Make_Selected_Component (Loc,
!              Prefix        => New_Occurrence_Of (Def_If, Loc),
!              Selector_Name =>
!                New_Occurrence_Of (First_Tag_Component (Full_Typ), Loc));
! 
           Set_Assignment_OK (New_Ref);
  
           return
             Make_Assignment_Statement (Loc,
!              Name       => New_Ref,
!              Expression =>
!                Unchecked_Convert_To (RTE (RE_Tag),
!                  New_Occurrence_Of
!                    (Node (First_Elmt (Access_Disp_Table (Full_Typ))), Loc)));
        else
           return Empty;
        end if;
*************** package body Exp_Ch3 is
*** 10958,10972 ****
  
           Prim := First_Elmt (Primitive_Operations (Tag_Typ));
           while Present (Prim) loop
!             if Chars (Node (Prim)) = Name_Op_Eq
                and then not Is_Internal (Node (Prim))
- 
-               --  The predefined equality primitive must have exactly two
-               --  formals whose type is this tagged type.
- 
-               and then Number_Formals (Node (Prim)) = 2
-               and then Etype (First_Formal (Node (Prim))) = Tag_Typ
-               and then Etype (Last_Formal (Node (Prim))) = Tag_Typ
              then
                 Eq_Needed := False;
                 Eq_Name := No_Name;
--- 12316,12323 ----
  
           Prim := First_Elmt (Primitive_Operations (Tag_Typ));
           while Present (Prim) loop
!             if Is_User_Defined_Equality (Node (Prim))
                and then not Is_Internal (Node (Prim))
              then
                 Eq_Needed := False;
                 Eq_Name := No_Name;
*************** package body Exp_Ch3 is
*** 10982,10988 ****
  
           Prim := First_Elmt (Primitive_Operations (Tag_Typ));
           while Present (Prim) loop
!             if Chars (Node (Prim)) = Name_Op_Eq
                and then Is_Internal (Node (Prim))
              then
                 Eq_Needed := True;
--- 12333,12339 ----
  
           Prim := First_Elmt (Primitive_Operations (Tag_Typ));
           while Present (Prim) loop
!             if Is_User_Defined_Equality (Node (Prim))
                and then Is_Internal (Node (Prim))
              then
                 Eq_Needed := True;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch3.ads gcc-13.1.0/gcc/ada/exp_ch3.ads
*** gcc-12.2.0/gcc/ada/exp_ch3.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch3.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,33 ****
  
  --  Expand routines for chapter 3 constructs
  
! with Types;  use Types;
! with Elists; use Elists;
! with Uintp;  use Uintp;
  
  package Exp_Ch3 is
  
--- 25,34 ----
  
  --  Expand routines for chapter 3 constructs
  
! with Types;   use Types;
! with Elists;  use Elists;
! with Exp_Tss; use Exp_Tss;
! with Uintp;   use Uintp;
  
  package Exp_Ch3 is
  
*************** package Exp_Ch3 is
*** 56,75 ****
     --  checks on the relevant aspects. The wrapper body could be simplified to
     --  a null body when expansion is disabled ???
  
!    procedure Build_Discr_Checking_Funcs (N : Node_Id);
!    --  Builds function which checks whether the component name is consistent
!    --  with the current discriminants. N is the full type declaration node,
!    --  and the discriminant checking functions are inserted after this node.
  
     function Build_Initialization_Call
!      (Loc               : Source_Ptr;
!       Id_Ref            : Node_Id;
!       Typ               : Entity_Id;
!       In_Init_Proc      : Boolean := False;
!       Enclos_Type       : Entity_Id := Empty;
!       Discr_Map         : Elist_Id := New_Elmt_List;
!       With_Default_Init : Boolean := False;
!       Constructor_Ref   : Node_Id := Empty) return List_Id;
     --  Builds a call to the initialization procedure for the base type of Typ,
     --  passing it the object denoted by Id_Ref, plus additional parameters as
     --  appropriate for the type (the _Master, for task types, for example).
--- 57,82 ----
     --  checks on the relevant aspects. The wrapper body could be simplified to
     --  a null body when expansion is disabled ???
  
!    procedure Build_Or_Copy_Discr_Checking_Funcs (N : Node_Id);
!    --  For each variant component, builds a function that checks whether
!    --  the component name is consistent with the current discriminants
!    --  and sets the component's Dcheck_Function attribute to refer to it.
!    --  N is the full type declaration node; the discriminant checking
!    --  functions are inserted after this node.
!    --  In the case of a derived untagged type, copy the attributes that were
!    --  set for the components of the parent type onto the components of the
!    --  derived type; no new subprograms are constructed in this case.
  
     function Build_Initialization_Call
!      (Loc                 : Source_Ptr;
!       Id_Ref              : Node_Id;
!       Typ                 : Entity_Id;
!       In_Init_Proc        : Boolean := False;
!       Enclos_Type         : Entity_Id := Empty;
!       Discr_Map           : Elist_Id := New_Elmt_List;
!       With_Default_Init   : Boolean := False;
!       Constructor_Ref     : Node_Id := Empty;
!       Init_Control_Actual : Entity_Id := Empty) return List_Id;
     --  Builds a call to the initialization procedure for the base type of Typ,
     --  passing it the object denoted by Id_Ref, plus additional parameters as
     --  appropriate for the type (the _Master, for task types, for example).
*************** package Exp_Ch3 is
*** 93,98 ****
--- 100,111 ----
     --
     --  Constructor_Ref is a call to a constructor subprogram. It is currently
     --  used only to support C++ constructors.
+    --
+    --  Init_Control_Actual is Empty except in the case where the init proc
+    --  for a tagged type calls the init proc for its parent type in order
+    --  to initialize its _Parent component. In that case, it is the
+    --  actual parameter value corresponding to the Init_Control formal
+    --  parameter to be used in the call of the parent type's init proc.
  
     function Build_Variant_Record_Equality
       (Typ         : Entity_Id;
*************** package Exp_Ch3 is
*** 101,113 ****
     --  Build the body of the equality function Body_Id for the untagged variant
     --  record Typ with the given parameters specification list.
  
-    procedure Ensure_Activation_Chain_And_Master (Obj_Decl : Node_Id);
-    --  If tasks are being declared (or might be declared) by the given object
-    --  declaration then ensure to have an activation chain defined for the
-    --  tasks (has no effect if we already have one), and also that a Master
-    --  variable is established (and that the appropriate enclosing construct
-    --  is established as a task master).
- 
     function Freeze_Type (N : Node_Id) return Boolean;
     --  This function executes the freezing actions associated with the given
     --  freeze type node N and returns True if the node is to be deleted. We
--- 114,119 ----
*************** package Exp_Ch3 is
*** 202,205 ****
--- 208,220 ----
     --  Make_Predefined_Primitive_Eq_Spec; see there for description of
     --  the Renamed_Eq parameter.
  
+    function Stream_Operation_OK
+      (Typ       : Entity_Id;
+       Operation : TSS_Name_Type) return Boolean;
+    --  Check whether the named stream operation must be emitted for a given
+    --  type. The rules for inheritance of stream attributes by type extensions
+    --  are enforced by this function. Furthermore, various restrictions prevent
+    --  the generation of these operations, as a useful optimization or for
+    --  certification purposes and to save unnecessary generated code.
+ 
  end Exp_Ch3;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch4.adb gcc-13.1.0/gcc/ada/exp_ch4.adb
*** gcc-12.2.0/gcc/ada/exp_ch4.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch4.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
*************** with Einfo.Utils;    use Einfo.Utils;
*** 33,39 ****
  with Elists;         use Elists;
  with Errout;         use Errout;
  with Exp_Aggr;       use Exp_Aggr;
- with Exp_Atag;       use Exp_Atag;
  with Exp_Ch3;        use Exp_Ch3;
  with Exp_Ch6;        use Exp_Ch6;
  with Exp_Ch7;        use Exp_Ch7;
--- 34,39 ----
*************** with Exp_Tss;        use Exp_Tss;
*** 46,51 ****
--- 46,52 ----
  with Exp_Util;       use Exp_Util;
  with Freeze;         use Freeze;
  with Inline;         use Inline;
+ with Lib;            use Lib;
  with Namet;          use Namet;
  with Nlists;         use Nlists;
  with Nmake;          use Nmake;
*************** with Warnsw;         use Warnsw;
*** 80,85 ****
--- 81,90 ----
  
  package body Exp_Ch4 is
  
+    Too_Large_Length_For_Array : constant Unat := Uint_256;
+    --  Threshold from which we do not try to create static array temporaries in
+    --  order to eliminate dynamic stack allocations.
+ 
     -----------------------
     -- Local Subprograms --
     -----------------------
*************** package body Exp_Ch4 is
*** 146,159 ****
     --  where we allow comparison of "out of range" values.
  
     function Expand_Composite_Equality
!      (Nod : Node_Id;
!       Typ : Entity_Id;
!       Lhs : Node_Id;
!       Rhs : Node_Id) return Node_Id;
     --  Local recursive function used to expand equality for nested composite
     --  types. Used by Expand_Record/Array_Equality. Nod provides the Sloc value
     --  for generated code. Lhs and Rhs are the left and right sides for the
!    --  comparison, and Typ is the type of the objects to compare.
  
     procedure Expand_Concatenate (Cnode : Node_Id; Opnds : List_Id);
     --  Routine to expand concatenation of a sequence of two or more operands
--- 151,167 ----
     --  where we allow comparison of "out of range" values.
  
     function Expand_Composite_Equality
!      (Outer_Type : Entity_Id;
!       Nod        : Node_Id;
!       Comp_Type  : Entity_Id;
!       Lhs        : Node_Id;
!       Rhs        : Node_Id) return Node_Id;
     --  Local recursive function used to expand equality for nested composite
     --  types. Used by Expand_Record/Array_Equality. Nod provides the Sloc value
     --  for generated code. Lhs and Rhs are the left and right sides for the
!    --  comparison, and Comp_Typ is the type of the objects to compare.
!    --  Outer_Type is the composite type containing a component of type
!    --  Comp_Type -- used for printing messages.
  
     procedure Expand_Concatenate (Cnode : Node_Id; Opnds : List_Id);
     --  Routine to expand concatenation of a sequence of two or more operands
*************** package body Exp_Ch4 is
*** 173,178 ****
--- 181,190 ----
     --  routine is to find the real type by looking up the tree. We also
     --  determine if the operation must be rounded.
  
+    procedure Get_First_Index_Bounds (T : Entity_Id; Lo, Hi : out Uint);
+    --  T is an array whose index bounds are all known at compile time. Return
+    --  the value of the low and high bounds of the first index of T.
+ 
     function Get_Size_For_Range (Lo, Hi : Uint) return Uint;
     --  Return the size of a small signed integer type covering Lo .. Hi, the
     --  main goal being to return a size lower than that of standard types.
*************** package body Exp_Ch4 is
*** 425,460 ****
        Lhs : Node_Id;
        Rhs : Node_Id) return Node_Id
     is
!       Prim   : Node_Id;
!       Prim_E : Elmt_Id;
  
     begin
!       Prim_E := First_Elmt (Collect_Primitive_Operations (Typ));
!       while Present (Prim_E) loop
!          Prim := Node (Prim_E);
! 
!          --  Locate primitive equality with the right signature
! 
!          if Chars (Prim) = Name_Op_Eq
!            and then Etype (First_Formal (Prim)) =
!                     Etype (Next_Formal (First_Formal (Prim)))
!            and then Etype (Prim) = Standard_Boolean
!          then
!             if Is_Abstract_Subprogram (Prim) then
!                return
!                  Make_Raise_Program_Error (Loc,
!                    Reason => PE_Explicit_Raise);
  
!             else
!                return
!                  Make_Function_Call (Loc,
!                    Name                   => New_Occurrence_Of (Prim, Loc),
!                    Parameter_Associations => New_List (Lhs, Rhs));
!             end if;
           end if;
! 
!          Next_Elmt (Prim_E);
!       end loop;
  
        --  If not found, predefined operation will be used
  
--- 437,457 ----
        Lhs : Node_Id;
        Rhs : Node_Id) return Node_Id
     is
!       Eq : constant Entity_Id := Get_User_Defined_Equality (Typ);
  
     begin
!       if Present (Eq) then
!          if Is_Abstract_Subprogram (Eq) then
!             return Make_Raise_Program_Error (Loc,
!                Reason =>  PE_Explicit_Raise);
  
!          else
!             return
!               Make_Function_Call (Loc,
!                 Name                   => New_Occurrence_Of (Eq, Loc),
!                 Parameter_Associations => New_List (Lhs, Rhs));
           end if;
!       end if;
  
        --  If not found, predefined operation will be used
  
*************** package body Exp_Ch4 is
*** 563,781 ****
        PtrT   : constant Entity_Id  := Etype (N);
        DesigT : constant Entity_Id  := Designated_Type (PtrT);
  
-       procedure Apply_Accessibility_Check
-         (Ref            : Node_Id;
-          Built_In_Place : Boolean := False);
-       --  Ada 2005 (AI-344): For an allocator with a class-wide designated
-       --  type, generate an accessibility check to verify that the level of the
-       --  type of the created object is not deeper than the level of the access
-       --  type. If the type of the qualified expression is class-wide, then
-       --  always generate the check (except in the case where it is known to be
-       --  unnecessary, see comment below). Otherwise, only generate the check
-       --  if the level of the qualified expression type is statically deeper
-       --  than the access type.
-       --
-       --  Although the static accessibility will generally have been performed
-       --  as a legality check, it won't have been done in cases where the
-       --  allocator appears in generic body, so a run-time check is needed in
-       --  general. One special case is when the access type is declared in the
-       --  same scope as the class-wide allocator, in which case the check can
-       --  never fail, so it need not be generated.
-       --
-       --  As an open issue, there seem to be cases where the static level
-       --  associated with the class-wide object's underlying type is not
-       --  sufficient to perform the proper accessibility check, such as for
-       --  allocators in nested subprograms or accept statements initialized by
-       --  class-wide formals when the actual originates outside at a deeper
-       --  static level. The nested subprogram case might require passing
-       --  accessibility levels along with class-wide parameters, and the task
-       --  case seems to be an actual gap in the language rules that needs to
-       --  be fixed by the ARG. ???
- 
-       -------------------------------
-       -- Apply_Accessibility_Check --
-       -------------------------------
- 
-       procedure Apply_Accessibility_Check
-         (Ref            : Node_Id;
-          Built_In_Place : Boolean := False)
-       is
-          Pool_Id   : constant Entity_Id := Associated_Storage_Pool (PtrT);
-          Cond      : Node_Id;
-          Fin_Call  : Node_Id;
-          Free_Stmt : Node_Id;
-          Obj_Ref   : Node_Id;
-          Stmts     : List_Id;
- 
-       begin
-          if Ada_Version >= Ada_2005
-            and then Is_Class_Wide_Type (DesigT)
-            and then Tagged_Type_Expansion
-            and then not Scope_Suppress.Suppress (Accessibility_Check)
-            and then not No_Dynamic_Accessibility_Checks_Enabled (Ref)
-            and then
-              (Type_Access_Level (Etype (Exp)) > Type_Access_Level (PtrT)
-                or else
-                  (Is_Class_Wide_Type (Etype (Exp))
-                    and then Scope (PtrT) /= Current_Scope))
-          then
-             --  If the allocator was built in place, Ref is already a reference
-             --  to the access object initialized to the result of the allocator
-             --  (see Exp_Ch6.Make_Build_In_Place_Call_In_Allocator). We call
-             --  Remove_Side_Effects for cases where the build-in-place call may
-             --  still be the prefix of the reference (to avoid generating
-             --  duplicate calls). Otherwise, it is the entity associated with
-             --  the object containing the address of the allocated object.
- 
-             if Built_In_Place then
-                Remove_Side_Effects (Ref);
-                Obj_Ref := New_Copy_Tree (Ref);
-             else
-                Obj_Ref := New_Occurrence_Of (Ref, Loc);
-             end if;
- 
-             --  For access to interface types we must generate code to displace
-             --  the pointer to the base of the object since the subsequent code
-             --  references components located in the TSD of the object (which
-             --  is associated with the primary dispatch table --see a-tags.ads)
-             --  and also generates code invoking Free, which requires also a
-             --  reference to the base of the unallocated object.
- 
-             if Is_Interface (DesigT) and then Tagged_Type_Expansion then
-                Obj_Ref :=
-                  Unchecked_Convert_To (Etype (Obj_Ref),
-                    Make_Function_Call (Loc,
-                      Name                   =>
-                        New_Occurrence_Of (RTE (RE_Base_Address), Loc),
-                      Parameter_Associations => New_List (
-                        Unchecked_Convert_To (RTE (RE_Address),
-                          New_Copy_Tree (Obj_Ref)))));
-             end if;
- 
-             --  Step 1: Create the object clean up code
- 
-             Stmts := New_List;
- 
-             --  Deallocate the object if the accessibility check fails. This
-             --  is done only on targets or profiles that support deallocation.
- 
-             --    Free (Obj_Ref);
- 
-             if RTE_Available (RE_Free) then
-                Free_Stmt := Make_Free_Statement (Loc, New_Copy_Tree (Obj_Ref));
-                Set_Storage_Pool (Free_Stmt, Pool_Id);
- 
-                Append_To (Stmts, Free_Stmt);
- 
-             --  The target or profile cannot deallocate objects
- 
-             else
-                Free_Stmt := Empty;
-             end if;
- 
-             --  Finalize the object if applicable. Generate:
- 
-             --    [Deep_]Finalize (Obj_Ref.all);
- 
-             if Needs_Finalization (DesigT)
-               and then not No_Heap_Finalization (PtrT)
-             then
-                Fin_Call :=
-                  Make_Final_Call
-                    (Obj_Ref =>
-                       Make_Explicit_Dereference (Loc, New_Copy (Obj_Ref)),
-                     Typ     => DesigT);
- 
-                --  Guard against a missing [Deep_]Finalize when the designated
-                --  type was not properly frozen.
- 
-                if No (Fin_Call) then
-                   Fin_Call := Make_Null_Statement (Loc);
-                end if;
- 
-                --  When the target or profile supports deallocation, wrap the
-                --  finalization call in a block to ensure proper deallocation
-                --  even if finalization fails. Generate:
- 
-                --    begin
-                --       <Fin_Call>
-                --    exception
-                --       when others =>
-                --          <Free_Stmt>
-                --          raise;
-                --    end;
- 
-                if Present (Free_Stmt) then
-                   Fin_Call :=
-                     Make_Block_Statement (Loc,
-                       Handled_Statement_Sequence =>
-                         Make_Handled_Sequence_Of_Statements (Loc,
-                           Statements => New_List (Fin_Call),
- 
-                         Exception_Handlers => New_List (
-                           Make_Exception_Handler (Loc,
-                             Exception_Choices => New_List (
-                               Make_Others_Choice (Loc)),
-                             Statements        => New_List (
-                               New_Copy_Tree (Free_Stmt),
-                               Make_Raise_Statement (Loc))))));
-                end if;
- 
-                Prepend_To (Stmts, Fin_Call);
-             end if;
- 
-             --  Signal the accessibility failure through a Program_Error
- 
-             Append_To (Stmts,
-               Make_Raise_Program_Error (Loc,
-                 Reason => PE_Accessibility_Check_Failed));
- 
-             --  Step 2: Create the accessibility comparison
- 
-             --  Generate:
-             --    Ref'Tag
- 
-             Obj_Ref :=
-               Make_Attribute_Reference (Loc,
-                 Prefix         => Obj_Ref,
-                 Attribute_Name => Name_Tag);
- 
-             --  For tagged types, determine the accessibility level by looking
-             --  at the type specific data of the dispatch table. Generate:
- 
-             --    Type_Specific_Data (Address (Ref'Tag)).Access_Level
- 
-             if Tagged_Type_Expansion then
-                Cond := Build_Get_Access_Level (Loc, Obj_Ref);
- 
-             --  Use a runtime call to determine the accessibility level when
-             --  compiling on virtual machine targets. Generate:
- 
-             --    Get_Access_Level (Ref'Tag)
- 
-             else
-                Cond :=
-                  Make_Function_Call (Loc,
-                    Name                   =>
-                      New_Occurrence_Of (RTE (RE_Get_Access_Level), Loc),
-                    Parameter_Associations => New_List (Obj_Ref));
-             end if;
- 
-             Cond :=
-               Make_Op_Gt (Loc,
-                 Left_Opnd  => Cond,
-                 Right_Opnd => Accessibility_Level (N, Dynamic_Level));
- 
-             --  Due to the complexity and side effects of the check, utilize an
-             --  if statement instead of the regular Program_Error circuitry.
- 
-             Insert_Action (N,
-               Make_Implicit_If_Statement (N,
-                 Condition       => Cond,
-                 Then_Statements => Stmts));
-          end if;
-       end Apply_Accessibility_Check;
- 
        --  Local variables
  
        Indic         : constant Node_Id   := Subtype_Mark (Expression (N));
--- 560,565 ----
*************** package body Exp_Ch4 is
*** 835,840 ****
--- 619,625 ----
                Make_Raise_Program_Error (Loc,
                  Reason => PE_Accessibility_Check_Failed));
  
+             Error_Msg_Warn := SPARK_Mode /= On;
              Error_Msg_N ("anonymous access discriminant is too deep for use"
                           & " in allocator<<", N);
              Error_Msg_N ("\Program_Error [<<", N);
*************** package body Exp_Ch4 is
*** 886,892 ****
  
           if Is_Build_In_Place_Function_Call (Exp) then
              Make_Build_In_Place_Call_In_Allocator (N, Exp);
!             Apply_Accessibility_Check (N, Built_In_Place => True);
              return;
  
           --  Ada 2005 (AI-318-02): Specialization of the previous case for
--- 671,678 ----
  
           if Is_Build_In_Place_Function_Call (Exp) then
              Make_Build_In_Place_Call_In_Allocator (N, Exp);
!             Apply_Accessibility_Check_For_Allocator
!               (N, Exp, N, Built_In_Place => True);
              return;
  
           --  Ada 2005 (AI-318-02): Specialization of the previous case for
*************** package body Exp_Ch4 is
*** 898,904 ****
  
           elsif Present (Unqual_BIP_Iface_Function_Call (Exp)) then
              Make_Build_In_Place_Iface_Call_In_Allocator (N, Exp);
!             Apply_Accessibility_Check (N, Built_In_Place => True);
              return;
           end if;
  
--- 684,691 ----
  
           elsif Present (Unqual_BIP_Iface_Function_Call (Exp)) then
              Make_Build_In_Place_Iface_Call_In_Allocator (N, Exp);
!             Apply_Accessibility_Check_For_Allocator
!               (N, Exp, N, Built_In_Place => True);
              return;
           end if;
  
*************** package body Exp_Ch4 is
*** 911,921 ****
           --  recursion and inappropriate call to Initialize.
  
           --  We don't want to remove side effects when the expression must be
!          --  built in place. In the case of a build-in-place function call,
!          --  that could lead to a duplication of the call, which was already
!          --  substituted for the allocator.
  
!          if not Aggr_In_Place then
              Remove_Side_Effects (Exp);
           end if;
  
--- 698,711 ----
           --  recursion and inappropriate call to Initialize.
  
           --  We don't want to remove side effects when the expression must be
!          --  built in place and we don't need it when there is no storage pool
!          --  or this is a return/secondary stack allocation.
  
!          if not Aggr_In_Place
!            and then Present (Storage_Pool (N))
!            and then not Is_RTE (Storage_Pool (N), RE_RS_Pool)
!            and then not Is_RTE (Storage_Pool (N), RE_SS_Pool)
!          then
              Remove_Side_Effects (Exp);
           end if;
  
*************** package body Exp_Ch4 is
*** 960,966 ****
  
           --  Processing for allocators returning non-interface types
  
!          if not Is_Interface (Directly_Designated_Type (PtrT)) then
              if Aggr_In_Place then
                 Temp_Decl :=
                   Make_Object_Declaration (Loc,
--- 750,756 ----
  
           --  Processing for allocators returning non-interface types
  
!          if not Is_Interface (DesigT) then
              if Aggr_In_Place then
                 Temp_Decl :=
                   Make_Object_Declaration (Loc,
*************** package body Exp_Ch4 is
*** 1111,1116 ****
--- 901,911 ----
                              (Directly_Designated_Type (Etype (N))));
              null;
  
+          --  Likewise if the allocator is made for a special return object
+ 
+          elsif For_Special_Return_Object (N) then
+             null;
+ 
           elsif Is_Tagged_Type (T) and then not Is_Class_Wide_Type (T) then
              TagT := T;
              TagR :=
*************** package body Exp_Ch4 is
*** 1159,1177 ****
           --  Adjust procedure, and the object is built in place. In Ada 95, the
           --  object can be limited but not inherently limited if this allocator
           --  came from a return statement (we're allocating the result on the
!          --  secondary stack). In that case, the object will be moved, so we do
!          --  want to Adjust. However, if it's a nonlimited build-in-place
!          --  function call, Adjust is not wanted.
!          --
!          --  Needs_Finalization (DesigT) can differ from Needs_Finalization (T)
           --  if one of the two types is class-wide, and the other is not.
  
           if Needs_Finalization (DesigT)
             and then Needs_Finalization (T)
-            and then not Aggr_In_Place
             and then not Is_Limited_View (T)
!            and then not Alloc_For_BIP_Return (N)
!            and then not Is_Build_In_Place_Function_Call (Expression (N))
           then
              --  An unchecked conversion is needed in the classwide case because
              --  the designated type can be an ancestor of the subtype mark of
--- 954,972 ----
           --  Adjust procedure, and the object is built in place. In Ada 95, the
           --  object can be limited but not inherently limited if this allocator
           --  came from a return statement (we're allocating the result on the
!          --  secondary stack); in that case, the object will be moved, so we do
!          --  want to Adjust. But the call is always skipped if the allocator is
!          --  made for a special return object because it's generated elsewhere.
! 
!          --  Needs_Finalization (DesigT) may differ from Needs_Finalization (T)
           --  if one of the two types is class-wide, and the other is not.
  
           if Needs_Finalization (DesigT)
             and then Needs_Finalization (T)
             and then not Is_Limited_View (T)
!            and then not Aggr_In_Place
!            and then Nkind (Exp) /= N_Function_Call
!            and then not For_Special_Return_Object (N)
           then
              --  An unchecked conversion is needed in the classwide case because
              --  the designated type can be an ancestor of the subtype mark of
*************** package body Exp_Ch4 is
*** 1193,1199 ****
           --  Note: the accessibility check must be inserted after the call to
           --  [Deep_]Adjust to ensure proper completion of the assignment.
  
!          Apply_Accessibility_Check (Temp);
  
           Rewrite (N, New_Occurrence_Of (Temp, Loc));
           Analyze_And_Resolve (N, PtrT);
--- 988,994 ----
           --  Note: the accessibility check must be inserted after the call to
           --  [Deep_]Adjust to ensure proper completion of the assignment.
  
!          Apply_Accessibility_Check_For_Allocator (N, Exp, Temp);
  
           Rewrite (N, New_Occurrence_Of (Temp, Loc));
           Analyze_And_Resolve (N, PtrT);
*************** package body Exp_Ch4 is
*** 1202,1208 ****
           --  component containing the secondary dispatch table of the interface
           --  type.
  
!          if Is_Interface (Directly_Designated_Type (PtrT)) then
              Displace_Allocator_Pointer (N);
           end if;
  
--- 997,1003 ----
           --  component containing the secondary dispatch table of the interface
           --  type.
  
!          if Is_Interface (DesigT) then
              Displace_Allocator_Pointer (N);
           end if;
  
*************** package body Exp_Ch4 is
*** 1341,1369 ****
           if Ekind (Otyp) = E_String_Literal_Subtype then
              return String_Literal_Length (Otyp) < 4;
  
!          else
              declare
!                Ityp : constant Entity_Id := Etype (First_Index (Otyp));
!                Lo   : constant Node_Id   := Type_Low_Bound (Ityp);
!                Hi   : constant Node_Id   := Type_High_Bound (Ityp);
!                Lov  : Uint;
!                Hiv  : Uint;
  
              begin
!                if Compile_Time_Known_Value (Lo) then
!                   Lov := Expr_Value (Lo);
!                else
!                   return False;
!                end if;
! 
!                if Compile_Time_Known_Value (Hi) then
!                   Hiv := Expr_Value (Hi);
!                else
!                   return False;
!                end if;
! 
!                return Hiv < Lov + 3;
              end;
           end if;
        end Length_Less_Than_4;
  
--- 1136,1152 ----
           if Ekind (Otyp) = E_String_Literal_Subtype then
              return String_Literal_Length (Otyp) < 4;
  
!          elsif Compile_Time_Known_Bounds (Otyp) then
              declare
!                Lo, Hi : Uint;
  
              begin
!                Get_First_Index_Bounds (Otyp, Lo, Hi);
!                return Hi < Lo + 3;
              end;
+ 
+          else
+             return False;
           end if;
        end Length_Less_Than_4;
  
*************** package body Exp_Ch4 is
*** 1441,1473 ****
              Remove_Side_Effects (Op1, Name_Req => True);
              Remove_Side_Effects (Op2, Name_Req => True);
  
!             Rewrite (Op1,
!               Make_Function_Call (Sloc (Op1),
!                 Name => New_Occurrence_Of (RTE (Comp), Loc),
  
!                 Parameter_Associations => New_List (
!                   Make_Attribute_Reference (Loc,
!                     Prefix         => Relocate_Node (Op1),
!                     Attribute_Name => Name_Address),
  
!                   Make_Attribute_Reference (Loc,
!                     Prefix         => Relocate_Node (Op2),
!                     Attribute_Name => Name_Address),
  
!                   Make_Attribute_Reference (Loc,
!                     Prefix         => Relocate_Node (Op1),
!                     Attribute_Name => Name_Length),
  
!                   Make_Attribute_Reference (Loc,
!                     Prefix         => Relocate_Node (Op2),
!                     Attribute_Name => Name_Length))));
  
!             Rewrite (Op2,
!               Make_Integer_Literal (Sloc (Op2),
!                 Intval => Uint_0));
  
!             Analyze_And_Resolve (Op1, Standard_Integer);
!             Analyze_And_Resolve (Op2, Standard_Integer);
              return;
           end if;
        end if;
--- 1224,1275 ----
              Remove_Side_Effects (Op1, Name_Req => True);
              Remove_Side_Effects (Op2, Name_Req => True);
  
!             declare
!                Comp_Call : constant Node_Id :=
!                  Make_Function_Call (Loc,
!                    Name => New_Occurrence_Of (RTE (Comp), Loc),
  
!                    Parameter_Associations => New_List (
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => Relocate_Node (Op1),
!                        Attribute_Name => Name_Address),
  
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => Relocate_Node (Op2),
!                        Attribute_Name => Name_Address),
  
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => Relocate_Node (Op1),
!                        Attribute_Name => Name_Length),
  
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => Relocate_Node (Op2),
!                        Attribute_Name => Name_Length)));
  
!                Zero : constant Node_Id :=
!                  Make_Integer_Literal (Loc,
!                    Intval => Uint_0);
  
!                Comp_Op : Node_Id;
! 
!             begin
!                case Nkind (N) is
!                   when N_Op_Lt =>
!                      Comp_Op := Make_Op_Lt (Loc, Comp_Call, Zero);
!                   when N_Op_Le =>
!                      Comp_Op := Make_Op_Le (Loc, Comp_Call, Zero);
!                   when N_Op_Gt =>
!                      Comp_Op := Make_Op_Gt (Loc, Comp_Call, Zero);
!                   when N_Op_Ge =>
!                      Comp_Op := Make_Op_Ge (Loc, Comp_Call, Zero);
!                   when others =>
!                      raise Program_Error;
!                end case;
! 
!                Rewrite (N, Comp_Op);
!             end;
! 
!             Analyze_And_Resolve (N, Standard_Boolean);
              return;
           end if;
        end if;
*************** package body Exp_Ch4 is
*** 1719,1725 ****
               Prefix      => Make_Identifier (Loc, Chars (B)),
               Expressions => Index_List2);
  
!          Test := Expand_Composite_Equality (Nod, Component_Type (Typ), L, R);
  
           --  If some (sub)component is an unchecked_union, the whole operation
           --  will raise program error.
--- 1521,1529 ----
               Prefix      => Make_Identifier (Loc, Chars (B)),
               Expressions => Index_List2);
  
!          Test := Expand_Composite_Equality
!            (Outer_Type => Typ, Nod => Nod, Comp_Type => Component_Type (Typ),
!             Lhs => L, Rhs => R);
  
           --  If some (sub)component is an unchecked_union, the whole operation
           --  will raise program error.
*************** package body Exp_Ch4 is
*** 1951,1957 ****
        if Ltyp /= Rtyp then
           Ltyp := Base_Type (Ltyp);
           Rtyp := Base_Type (Rtyp);
-          pragma Assert (Ltyp = Rtyp);
        end if;
  
        --  If the array type is distinct from the type of the arguments, it
--- 1755,1760 ----
*************** package body Exp_Ch4 is
*** 1974,1979 ****
--- 1777,1783 ----
           New_Rhs := Rhs;
        end if;
  
+       pragma Assert (Ltyp = Rtyp);
        First_Idx := First_Index (Ltyp);
  
        --  If optimization is enabled and the array boils down to a couple of
*************** package body Exp_Ch4 is
*** 1981,1987 ****
        --  which should be easier to optimize by the code generator.
  
        if Optimization_Level > 0
-         and then Ltyp = Rtyp
          and then Is_Constrained (Ltyp)
          and then Number_Dimensions (Ltyp) = 1
          and then Compile_Time_Known_Bounds (Ltyp)
--- 1785,1790 ----
*************** package body Exp_Ch4 is
*** 2008,2014 ****
                  Prefix      => New_Copy_Tree (New_Rhs),
                  Expressions => New_List (New_Copy_Tree (Low_B)));
  
!             TestL := Expand_Composite_Equality (Nod, Ctyp, L, R);
  
              L :=
                Make_Indexed_Component (Loc,
--- 1811,1819 ----
                  Prefix      => New_Copy_Tree (New_Rhs),
                  Expressions => New_List (New_Copy_Tree (Low_B)));
  
!             TestL := Expand_Composite_Equality
!               (Outer_Type => Ltyp, Nod => Nod, Comp_Type => Ctyp,
!                Lhs => L, Rhs => R);
  
              L :=
                Make_Indexed_Component (Loc,
*************** package body Exp_Ch4 is
*** 2020,2026 ****
                  Prefix      => New_Rhs,
                  Expressions => New_List (New_Copy_Tree (High_B)));
  
!             TestH := Expand_Composite_Equality (Nod, Ctyp, L, R);
  
              return
                Make_And_Then (Loc, Left_Opnd => TestL, Right_Opnd => TestH);
--- 1825,1833 ----
                  Prefix      => New_Rhs,
                  Expressions => New_List (New_Copy_Tree (High_B)));
  
!             TestH := Expand_Composite_Equality
!               (Outer_Type => Ltyp, Nod => Nod, Comp_Type => Ctyp,
!                Lhs => L, Rhs => R);
  
              return
                Make_And_Then (Loc, Left_Opnd => TestL, Right_Opnd => TestH);
*************** package body Exp_Ch4 is
*** 2433,2452 ****
     --  case because it is not possible to respect normal Ada visibility rules.
  
     function Expand_Composite_Equality
!      (Nod : Node_Id;
!       Typ : Entity_Id;
!       Lhs : Node_Id;
!       Rhs : Node_Id) return Node_Id
     is
        Loc       : constant Source_Ptr := Sloc (Nod);
        Full_Type : Entity_Id;
        Eq_Op     : Entity_Id;
  
     begin
!       if Is_Private_Type (Typ) then
!          Full_Type := Underlying_Type (Typ);
        else
!          Full_Type := Typ;
        end if;
  
        --  If the private type has no completion the context may be the
--- 2240,2260 ----
     --  case because it is not possible to respect normal Ada visibility rules.
  
     function Expand_Composite_Equality
!      (Outer_Type : Entity_Id;
!       Nod        : Node_Id;
!       Comp_Type  : Entity_Id;
!       Lhs        : Node_Id;
!       Rhs        : Node_Id) return Node_Id
     is
        Loc       : constant Source_Ptr := Sloc (Nod);
        Full_Type : Entity_Id;
        Eq_Op     : Entity_Id;
  
     begin
!       if Is_Private_Type (Comp_Type) then
!          Full_Type := Underlying_Type (Comp_Type);
        else
!          Full_Type := Comp_Type;
        end if;
  
        --  If the private type has no completion the context may be the
*************** package body Exp_Ch4 is
*** 2471,2477 ****
        --  Case of tagged record types
  
        if Is_Tagged_Type (Full_Type) then
!          Eq_Op := Find_Primitive_Eq (Typ);
           pragma Assert (Present (Eq_Op));
  
           return
--- 2279,2285 ----
        --  Case of tagged record types
  
        if Is_Tagged_Type (Full_Type) then
!          Eq_Op := Find_Primitive_Eq (Comp_Type);
           pragma Assert (Present (Eq_Op));
  
           return
*************** package body Exp_Ch4 is
*** 2633,2650 ****
  
           --  Equality composes in Ada 2012 for untagged record types. It also
           --  composes for bounded strings, because they are part of the
!          --  predefined environment. We could make it compose for bounded
!          --  strings by making them tagged, or by making sure all subcomponents
!          --  are set to the same value, even when not used. Instead, we have
!          --  this special case in the compiler, because it's more efficient.
! 
!          elsif Ada_Version >= Ada_2012 or else Is_Bounded_String (Typ) then
  
              --  If no TSS has been created for the type, check whether there is
              --  a primitive equality declared for it.
  
              declare
!                Op : constant Node_Id := Build_Eq_Call (Typ, Loc, Lhs, Rhs);
  
              begin
                 --  Use user-defined primitive if it exists, otherwise use
--- 2441,2460 ----
  
           --  Equality composes in Ada 2012 for untagged record types. It also
           --  composes for bounded strings, because they are part of the
!          --  predefined environment (see 4.5.2(32.1/1)). We could make it
!          --  compose for bounded strings by making them tagged, or by making
!          --  sure all subcomponents are set to the same value, even when not
!          --  used. Instead, we have this special case in the compiler, because
!          --  it's more efficient.
  
+          elsif Ada_Version >= Ada_2012 or else Is_Bounded_String (Comp_Type)
+          then
              --  If no TSS has been created for the type, check whether there is
              --  a primitive equality declared for it.
  
              declare
!                Op : constant Node_Id :=
!                  Build_Eq_Call (Comp_Type, Loc, Lhs, Rhs);
  
              begin
                 --  Use user-defined primitive if it exists, otherwise use
*************** package body Exp_Ch4 is
*** 2664,2669 ****
--- 2474,2506 ----
        --  Case of non-record types (always use predefined equality)
  
        else
+          --  Print a warning if there is a user-defined "=", because it can be
+          --  surprising that the predefined "=" takes precedence over it.
+ 
+          --  Suppress the warning if the "user-defined" one is in the
+          --  predefined library, because those are defined to compose
+          --  properly by RM-4.5.2(32.1/1). Intrinsics also compose.
+ 
+          declare
+             Op : constant Entity_Id := Find_Primitive_Eq (Comp_Type);
+          begin
+             if Warn_On_Ignored_Equality
+               and then Present (Op)
+               and then not In_Predefined_Unit (Base_Type (Comp_Type))
+               and then not Is_Intrinsic_Subprogram (Op)
+             then
+                pragma Assert
+                  (Is_First_Subtype (Outer_Type)
+                    or else Is_Generic_Actual_Type (Outer_Type));
+                Error_Msg_Node_1 := Outer_Type;
+                Error_Msg_Node_2 := Comp_Type;
+                Error_Msg
+                  ("?_q?""="" for type & uses predefined ""="" for }", Loc);
+                Error_Msg_Sloc := Sloc (Op);
+                Error_Msg ("\?_q?""="" # is ignored here", Loc);
+             end if;
+          end;
+ 
           return Make_Op_Eq (Loc, Left_Opnd => Lhs, Right_Opnd => Rhs);
        end if;
     end Expand_Composite_Equality;
*************** package body Exp_Ch4 is
*** 2724,2733 ****
        --  Set to the corresponding entry in the Opnds list (but note that null
        --  operands are excluded, so not all entries in the list are stored).
  
!       Fixed_Length : array (1 .. N) of Uint;
        --  Set to length of operand. Entries in this array are set only if the
        --  corresponding entry in Is_Fixed_Length is True.
  
        Opnd_Low_Bound : array (1 .. N) of Node_Id;
        --  Set to lower bound of operand. Either an integer literal in the case
        --  where the bound is known at compile time, else actual lower bound.
--- 2561,2575 ----
        --  Set to the corresponding entry in the Opnds list (but note that null
        --  operands are excluded, so not all entries in the list are stored).
  
!       Fixed_Length : array (1 .. N) of Unat;
        --  Set to length of operand. Entries in this array are set only if the
        --  corresponding entry in Is_Fixed_Length is True.
  
+       Max_Length : array (1 .. N) of Unat;
+       --  Set to the maximum length of operand, or Too_Large_Length_For_Array
+       --  if it is not known. Entries in this array are set only if the
+       --  corresponding entry in Is_Fixed_Length is False;
+ 
        Opnd_Low_Bound : array (1 .. N) of Node_Id;
        --  Set to lower bound of operand. Either an integer literal in the case
        --  where the bound is known at compile time, else actual lower bound.
*************** package body Exp_Ch4 is
*** 2740,2756 ****
        --  is False. The entity is of type Artyp.
  
        Aggr_Length : array (0 .. N) of Node_Id;
!       --  The J'th entry in an expression node that represents the total length
        --  of operands 1 through J. It is either an integer literal node, or a
        --  reference to a constant entity with the right value, so it is fine
        --  to just do a Copy_Node to get an appropriate copy. The extra zeroth
        --  entry always is set to zero. The length is of type Artyp.
  
        Low_Bound : Node_Id := Empty;
        --  A tree node representing the low bound of the result (of type Ityp).
        --  This is either an integer literal node, or an identifier reference to
        --  a constant entity initialized to the appropriate value.
  
        Last_Opnd_Low_Bound : Node_Id := Empty;
        --  A tree node representing the low bound of the last operand. This
        --  need only be set if the result could be null. It is used for the
--- 2582,2605 ----
        --  is False. The entity is of type Artyp.
  
        Aggr_Length : array (0 .. N) of Node_Id;
!       --  The J'th entry is an expression node that represents the total length
        --  of operands 1 through J. It is either an integer literal node, or a
        --  reference to a constant entity with the right value, so it is fine
        --  to just do a Copy_Node to get an appropriate copy. The extra zeroth
        --  entry always is set to zero. The length is of type Artyp.
  
+       Max_Aggr_Length : Unat := Too_Large_Length_For_Array;
+       --  Set to the maximum total length, or Too_Large_Length_For_Array at
+       --  least if it is not known.
+ 
        Low_Bound : Node_Id := Empty;
        --  A tree node representing the low bound of the result (of type Ityp).
        --  This is either an integer literal node, or an identifier reference to
        --  a constant entity initialized to the appropriate value.
  
+       High_Bound : Node_Id := Empty;
+       --  A tree node representing the high bound of the result (of type Ityp)
+ 
        Last_Opnd_Low_Bound : Node_Id := Empty;
        --  A tree node representing the low bound of the last operand. This
        --  need only be set if the result could be null. It is used for the
*************** package body Exp_Ch4 is
*** 2763,2771 ****
        --  special case of setting the right high bound for a null result.
        --  This is of type Ityp.
  
-       High_Bound : Node_Id := Empty;
-       --  A tree node representing the high bound of the result (of type Ityp)
- 
        Result : Node_Id := Empty;
        --  Result of the concatenation (of type Ityp)
  
--- 2612,2617 ----
*************** package body Exp_Ch4 is
*** 2780,2786 ****
        --  Return True if the concatenation is within the expression of the
        --  declaration of a library-level object.
  
!       function Make_Artyp_Literal (Val : Nat) return Node_Id;
        --  This function makes an N_Integer_Literal node that is returned in
        --  analyzed form with the type set to Artyp. Importantly this literal
        --  is not flagged as static, so that if we do computations with it that
--- 2626,2632 ----
        --  Return True if the concatenation is within the expression of the
        --  declaration of a library-level object.
  
!       function Make_Artyp_Literal (Val : Uint) return Node_Id;
        --  This function makes an N_Integer_Literal node that is returned in
        --  analyzed form with the type set to Artyp. Importantly this literal
        --  is not flagged as static, so that if we do computations with it that
*************** package body Exp_Ch4 is
*** 2823,2829 ****
        -- Make_Artyp_Literal --
        ------------------------
  
!       function Make_Artyp_Literal (Val : Nat) return Node_Id is
           Result : constant Node_Id := Make_Integer_Literal (Loc, Val);
        begin
           Set_Etype (Result, Artyp);
--- 2669,2675 ----
        -- Make_Artyp_Literal --
        ------------------------
  
!       function Make_Artyp_Literal (Val : Uint) return Node_Id is
           Result : constant Node_Id := Make_Integer_Literal (Loc, Val);
        begin
           Set_Etype (Result, Artyp);
*************** package body Exp_Ch4 is
*** 2880,2888 ****
        --  Local Declarations
  
        Opnd_Typ   : Entity_Id;
        Subtyp_Ind : Entity_Id;
        Ent        : Entity_Id;
!       Len        : Uint;
        J          : Nat;
        Clen       : Node_Id;
        Set        : Boolean;
--- 2726,2735 ----
        --  Local Declarations
  
        Opnd_Typ   : Entity_Id;
+       Slice_Rng  : Entity_Id;
        Subtyp_Ind : Entity_Id;
        Ent        : Entity_Id;
!       Len        : Unat;
        J          : Nat;
        Clen       : Node_Id;
        Set        : Boolean;
*************** package body Exp_Ch4 is
*** 2938,2944 ****
  
        --  Supply dummy entry at start of length array
  
!       Aggr_Length (0) := Make_Artyp_Literal (0);
  
        --  Go through operands setting up the above arrays
  
--- 2785,2791 ----
  
        --  Supply dummy entry at start of length array
  
!       Aggr_Length (0) := Make_Artyp_Literal (Uint_0);
  
        --  Go through operands setting up the above arrays
  
*************** package body Exp_Ch4 is
*** 2982,2988 ****
           elsif Nkind (Opnd) = N_String_Literal then
              Len := String_Literal_Length (Opnd_Typ);
  
!             if Len /= 0 then
                 Result_May_Be_Null := False;
              end if;
  
--- 2829,2835 ----
           elsif Nkind (Opnd) = N_String_Literal then
              Len := String_Literal_Length (Opnd_Typ);
  
!             if Len > 0 then
                 Result_May_Be_Null := False;
              end if;
  
*************** package body Exp_Ch4 is
*** 3023,3083 ****
           else
              --  Check constrained case with known bounds
  
!             if Is_Constrained (Opnd_Typ) then
                 declare
!                   Index    : constant Node_Id   := First_Index (Opnd_Typ);
!                   Indx_Typ : constant Entity_Id := Etype (Index);
!                   Lo       : constant Node_Id   := Type_Low_Bound  (Indx_Typ);
!                   Hi       : constant Node_Id   := Type_High_Bound (Indx_Typ);
  
                 begin
                    --  Fixed length constrained array type with known at compile
                    --  time bounds is last case of fixed length operand.
  
!                   if Compile_Time_Known_Value (Lo)
!                        and then
!                      Compile_Time_Known_Value (Hi)
!                   then
!                      declare
!                         Loval : constant Uint := Expr_Value (Lo);
!                         Hival : constant Uint := Expr_Value (Hi);
!                         Len   : constant Uint :=
!                                   UI_Max (Hival - Loval + 1, Uint_0);
  
!                      begin
!                         if Len > 0 then
!                            Result_May_Be_Null := False;
!                         end if;
  
!                         --  Capture last operand bounds if result could be null
  
!                         if J = N and then Result_May_Be_Null then
!                            Last_Opnd_Low_Bound :=
!                              Convert_To (Ityp,
!                                Make_Integer_Literal (Loc, Expr_Value (Lo)));
  
!                            Last_Opnd_High_Bound :=
!                              Convert_To (Ityp,
!                                Make_Integer_Literal (Loc, Expr_Value (Hi)));
!                         end if;
  
!                         --  Exclude null length case unless last operand
  
!                         if J < N and then Len = 0 then
!                            goto Continue;
!                         end if;
  
!                         NN := NN + 1;
!                         Operands (NN) := Opnd;
!                         Is_Fixed_Length (NN) := True;
!                         Fixed_Length (NN)    := Len;
  
!                         Opnd_Low_Bound (NN) :=
!                           To_Ityp
!                             (Make_Integer_Literal (Loc, Expr_Value (Lo)));
!                         Set := True;
!                      end;
!                   end if;
                 end;
              end if;
  
--- 2870,2916 ----
           else
              --  Check constrained case with known bounds
  
!             if Is_Constrained (Opnd_Typ)
!               and then Compile_Time_Known_Bounds (Opnd_Typ)
!             then
                 declare
!                   Lo, Hi : Uint;
  
                 begin
                    --  Fixed length constrained array type with known at compile
                    --  time bounds is last case of fixed length operand.
  
!                   Get_First_Index_Bounds (Opnd_Typ, Lo, Hi);
!                   Len := UI_Max (Hi - Lo + 1, Uint_0);
  
!                   if Len > 0 then
!                      Result_May_Be_Null := False;
!                   end if;
  
!                   --  Capture last operand bounds if result could be null
  
!                   if J = N and then Result_May_Be_Null then
!                      Last_Opnd_Low_Bound :=
!                        To_Ityp (Make_Integer_Literal (Loc, Lo));
  
!                      Last_Opnd_High_Bound :=
!                        To_Ityp (Make_Integer_Literal (Loc, Hi));
!                   end if;
  
!                   --  Exclude null length case unless last operand
  
!                   if J < N and then Len = 0 then
!                      goto Continue;
!                   end if;
  
!                   NN := NN + 1;
!                   Operands (NN) := Opnd;
!                   Is_Fixed_Length (NN) := True;
!                   Fixed_Length (NN)    := Len;
  
!                   Opnd_Low_Bound (NN) :=
!                     To_Ityp (Make_Integer_Literal (Loc, Lo));
!                   Set := True;
                 end;
              end if;
  
*************** package body Exp_Ch4 is
*** 3121,3126 ****
--- 2954,2978 ----
  
                 Var_Length (NN) := Make_Temporary (Loc, 'L');
  
+                --  If the operand is a slice, try to compute an upper bound for
+                --  its length.
+ 
+                if Nkind (Opnd) = N_Slice
+                   and then Is_Constrained (Etype (Prefix (Opnd)))
+                   and then Compile_Time_Known_Bounds (Etype (Prefix (Opnd)))
+                then
+                   declare
+                      Lo, Hi : Uint;
+ 
+                   begin
+                      Get_First_Index_Bounds (Etype (Prefix (Opnd)), Lo, Hi);
+                      Max_Length (NN) := UI_Max (Hi - Lo + 1, Uint_0);
+                   end;
+ 
+                else
+                   Max_Length (NN) := Too_Large_Length_For_Array;
+                end if;
+ 
                 Append_To (Actions,
                   Make_Object_Declaration (Loc,
                     Defining_Identifier => Var_Length (NN),
*************** package body Exp_Ch4 is
*** 3142,3149 ****
--- 2994,3003 ----
           if NN = 1 then
              if Is_Fixed_Length (1) then
                 Aggr_Length (1) := Make_Integer_Literal (Loc, Fixed_Length (1));
+                Max_Aggr_Length := Fixed_Length (1);
              else
                 Aggr_Length (1) := New_Occurrence_Of (Var_Length (1), Loc);
+                Max_Aggr_Length := Max_Length (1);
              end if;
  
           --  If entry is fixed length and only fixed lengths so far, make
*************** package body Exp_Ch4 is
*** 3155,3160 ****
--- 3009,3015 ----
              Aggr_Length (NN) :=
                Make_Integer_Literal (Loc,
                  Intval => Fixed_Length (NN) + Intval (Aggr_Length (NN - 1)));
+             Max_Aggr_Length := Intval (Aggr_Length (NN));
  
           --  All other cases, construct an addition node for the length and
           --  create an entity initialized to this length.
*************** package body Exp_Ch4 is
*** 3164,3171 ****
--- 3019,3029 ----
  
              if Is_Fixed_Length (NN) then
                 Clen := Make_Integer_Literal (Loc, Fixed_Length (NN));
+                Max_Aggr_Length := Max_Aggr_Length + Fixed_Length (NN);
+ 
              else
                 Clen := New_Occurrence_Of (Var_Length (NN), Loc);
+                Max_Aggr_Length := Max_Aggr_Length + Max_Length (NN);
              end if;
  
              Append_To (Actions,
*************** package body Exp_Ch4 is
*** 3290,3318 ****
  
        pragma Assert (Present (Low_Bound));
  
!       --  Now we can safely compute the upper bound, normally
!       --  Low_Bound + Length - 1.
  
!       High_Bound :=
!         To_Ityp
!           (Make_Op_Add (Loc,
!              Left_Opnd  => To_Artyp (New_Copy_Tree (Low_Bound)),
!              Right_Opnd =>
!                Make_Op_Subtract (Loc,
!                  Left_Opnd  => New_Copy_Tree (Aggr_Length (NN)),
!                  Right_Opnd => Make_Artyp_Literal (1))));
  
!       --  Note that calculation of the high bound may cause overflow in some
!       --  very weird cases, so in the general case we need an overflow check on
!       --  the high bound. We can avoid this for the common case of string types
!       --  and other types whose index is Positive, since we chose a wider range
!       --  for the arithmetic type. If checks are suppressed we do not set the
!       --  flag, and possibly superfluous warnings will be omitted.
  
!       if Istyp /= Standard_Positive
!         and then not Overflow_Checks_Suppressed (Istyp)
!       then
!          Activate_Overflow_Check (High_Bound);
        end if;
  
        --  Handle the exceptional case where the result is null, in which case
--- 3148,3185 ----
  
        pragma Assert (Present (Low_Bound));
  
!       --  Now we can compute the high bound as Low_Bound + Length - 1
  
!       if Compile_Time_Known_Value (Low_Bound)
!         and then Nkind (Aggr_Length (NN)) = N_Integer_Literal
!       then
!          High_Bound :=
!            To_Ityp
!              (Make_Artyp_Literal
!                 (Expr_Value (Low_Bound) + Intval (Aggr_Length (NN)) - 1));
  
!       else
!          High_Bound :=
!            To_Ityp
!              (Make_Op_Add (Loc,
!                 Left_Opnd  => To_Artyp (New_Copy_Tree (Low_Bound)),
!                 Right_Opnd =>
!                   Make_Op_Subtract (Loc,
!                     Left_Opnd  => New_Copy_Tree (Aggr_Length (NN)),
!                     Right_Opnd => Make_Artyp_Literal (Uint_1))));
  
!          --  Note that calculation of the high bound may cause overflow in some
!          --  very weird cases, so in the general case we need an overflow check
!          --  on the high bound. We can avoid this for the common case of string
!          --  types and other types whose index is Positive, since we chose a
!          --  wider range for the arithmetic type. If checks are suppressed, we
!          --  do not set the flag so superfluous warnings may be omitted.
! 
!          if Istyp /= Standard_Positive
!            and then not Overflow_Checks_Suppressed (Istyp)
!          then
!             Activate_Overflow_Check (High_Bound);
!          end if;
        end if;
  
        --  Handle the exceptional case where the result is null, in which case
*************** package body Exp_Ch4 is
*** 3325,3331 ****
               Expressions => New_List (
                 Make_Op_Eq (Loc,
                   Left_Opnd  => New_Copy_Tree (Aggr_Length (NN)),
!                  Right_Opnd => Make_Artyp_Literal (0)),
                 Last_Opnd_Low_Bound,
                 Low_Bound));
  
--- 3192,3198 ----
               Expressions => New_List (
                 Make_Op_Eq (Loc,
                   Left_Opnd  => New_Copy_Tree (Aggr_Length (NN)),
!                  Right_Opnd => Make_Artyp_Literal (Uint_0)),
                 Last_Opnd_Low_Bound,
                 Low_Bound));
  
*************** package body Exp_Ch4 is
*** 3334,3340 ****
               Expressions => New_List (
                 Make_Op_Eq (Loc,
                   Left_Opnd  => New_Copy_Tree (Aggr_Length (NN)),
!                  Right_Opnd => Make_Artyp_Literal (0)),
                 Last_Opnd_High_Bound,
                 High_Bound));
        end if;
--- 3201,3207 ----
               Expressions => New_List (
                 Make_Op_Eq (Loc,
                   Left_Opnd  => New_Copy_Tree (Aggr_Length (NN)),
!                  Right_Opnd => Make_Artyp_Literal (Uint_0)),
                 Last_Opnd_High_Bound,
                 High_Bound));
        end if;
*************** package body Exp_Ch4 is
*** 3343,3348 ****
--- 3210,3244 ----
  
        Insert_Actions (Cnode, Actions, Suppress => All_Checks);
  
+       --  If the low bound is known at compile time and not the high bound, but
+       --  we have computed a sensible upper bound for the length, then adjust
+       --  the high bound for the subtype of the array. This will change it into
+       --  a static subtype and thus help the code generator.
+ 
+       if Compile_Time_Known_Value (Low_Bound)
+         and then not Compile_Time_Known_Value (High_Bound)
+         and then Max_Aggr_Length < Too_Large_Length_For_Array
+       then
+          declare
+             Known_High_Bound : constant Node_Id :=
+               To_Ityp
+                 (Make_Artyp_Literal
+                    (Expr_Value (Low_Bound) +  Max_Aggr_Length - 1));
+ 
+          begin
+             if not Is_Out_Of_Range (Known_High_Bound, Ityp) then
+                Slice_Rng  := Make_Range (Loc, Low_Bound, High_Bound);
+                High_Bound := Known_High_Bound;
+ 
+             else
+                Slice_Rng := Empty;
+             end if;
+          end;
+ 
+       else
+          Slice_Rng := Empty;
+       end if;
+ 
        --  Now we construct an array object with appropriate bounds. We mark
        --  the target as internal to prevent useless initialization when
        --  Initialize_Scalars is enabled. Also since this is the actual result
*************** package body Exp_Ch4 is
*** 3363,3371 ****
        Set_Debug_Info_Needed (Ent);
  
        --  If we are concatenating strings and the current scope already uses
!       --  the secondary stack, allocate the resulting string also on the
!       --  secondary stack to avoid putting too much pressure on the primary
!       --  stack.
        --  Don't do this if -gnatd.h is set, as this will break the wrapping of
        --  Cnode in an Expression_With_Actions, see Expand_N_Op_Concat.
  
--- 3259,3267 ----
        Set_Debug_Info_Needed (Ent);
  
        --  If we are concatenating strings and the current scope already uses
!       --  the secondary stack, allocate the result also on the secondary stack
!       --  to avoid putting too much pressure on the primary stack.
! 
        --  Don't do this if -gnatd.h is set, as this will break the wrapping of
        --  Cnode in an Expression_With_Actions, see Expand_N_Op_Concat.
  
*************** package body Exp_Ch4 is
*** 3375,3390 ****
          and then not Debug_Flag_Dot_H
        then
           --  Generate:
!          --     subtype Axx is ...;
           --     type Ayy is access Axx;
!          --     Rxx : Ayy := new <subtype> [storage_pool = ss_pool];
!          --     Sxx : <subtype> renames Rxx.all;
  
           declare
-             Alloc   : Node_Id;
              ConstrT : constant Entity_Id := Make_Temporary (Loc, 'A');
              Acc_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
!             Temp    : Entity_Id;
  
           begin
              Insert_Action (Cnode,
--- 3271,3287 ----
          and then not Debug_Flag_Dot_H
        then
           --  Generate:
!          --     subtype Axx is String (<low-bound> .. <high-bound>)
           --     type Ayy is access Axx;
!          --     Rxx : Ayy := new <Axx> [storage_pool = ss_pool];
!          --     Sxx : Axx renames Rxx.all;
  
           declare
              ConstrT : constant Entity_Id := Make_Temporary (Loc, 'A');
              Acc_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
! 
!             Alloc : Node_Id;
!             Temp  : Entity_Id;
  
           begin
              Insert_Action (Cnode,
*************** package body Exp_Ch4 is
*** 3392,3397 ****
--- 3289,3295 ----
                  Defining_Identifier => ConstrT,
                  Subtype_Indication  => Subtyp_Ind),
                Suppress => All_Checks);
+ 
              Freeze_Itype (ConstrT, Cnode);
  
              Insert_Action (Cnode,
*************** package body Exp_Ch4 is
*** 3401,3419 ****
                    Make_Access_To_Object_Definition (Loc,
                      Subtype_Indication => New_Occurrence_Of (ConstrT, Loc))),
                Suppress => All_Checks);
              Alloc :=
                Make_Allocator (Loc,
                  Expression => New_Occurrence_Of (ConstrT, Loc));
  
!             --  Allocate on the secondary stack. This is currently done
!             --  only for type String, which normally doesn't have default
!             --  initialization, but we need to Set_No_Initialization in case
!             --  of Initialize_Scalars or Normalize_Scalars; otherwise, the
!             --  allocator will get transformed and will not use the secondary
!             --  stack.
  
-             Set_Storage_Pool (Alloc, RTE (RE_SS_Pool));
-             Set_Procedure_To_Call (Alloc, RTE (RE_SS_Allocate));
              Set_No_Initialization (Alloc);
  
              Temp := Make_Temporary (Loc, 'R', Alloc);
--- 3299,3317 ----
                    Make_Access_To_Object_Definition (Loc,
                      Subtype_Indication => New_Occurrence_Of (ConstrT, Loc))),
                Suppress => All_Checks);
+ 
+             Mutate_Ekind (Acc_Typ, E_Access_Type);
+             Set_Associated_Storage_Pool (Acc_Typ, RTE (RE_SS_Pool));
+ 
              Alloc :=
                Make_Allocator (Loc,
                  Expression => New_Occurrence_Of (ConstrT, Loc));
  
!             --  This is currently done only for type String, which normally
!             --  doesn't have default initialization, but we need to set the
!             --  No_Initialization flag in case of either Initialize_Scalars
!             --  or Normalize_Scalars.
  
              Set_No_Initialization (Alloc);
  
              Temp := Make_Temporary (Loc, 'R', Alloc);
*************** package body Exp_Ch4 is
*** 3433,3446 ****
                      Prefix => New_Occurrence_Of (Temp, Loc))),
                Suppress => All_Checks);
           end;
        else
           --  If the bound is statically known to be out of range, we do not
           --  want to abort, we want a warning and a runtime constraint error.
!          --  Note that we have arranged that the result will not be treated as
!          --  a static constant, so we won't get an illegality during this
!          --  insertion.
!          --  We also enable checks (in particular range checks) in case the
!          --  bounds of Subtyp_Ind are out of range.
  
           Insert_Action (Cnode,
             Make_Object_Declaration (Loc,
--- 3331,3344 ----
                      Prefix => New_Occurrence_Of (Temp, Loc))),
                Suppress => All_Checks);
           end;
+ 
        else
           --  If the bound is statically known to be out of range, we do not
           --  want to abort, we want a warning and a runtime constraint error.
!          --  Note that we have arranged that the result will not be treated
!          --  as a static constant, so we won't get an illegality during this
!          --  insertion. We also enable checks (in particular range checks) in
!          --  case the bounds of Subtyp_Ind are out of range.
  
           Insert_Action (Cnode,
             Make_Object_Declaration (Loc,
*************** package body Exp_Ch4 is
*** 3456,3471 ****
  
        --  Catch the static out of range case now
  
!       if Raises_Constraint_Error (High_Bound) then
           --  Kill warning generated for the declaration of the static out of
           --  range high bound, and instead generate a Constraint_Error with
           --  an appropriate specific message.
  
!          Kill_Dead_Code (Declaration_Node (Entity (High_Bound)));
           Apply_Compile_Time_Constraint_Error
             (N      => Cnode,
              Msg    => "concatenation result upper bound out of range??",
              Reason => CE_Range_Check_Failed);
           return;
        end if;
  
--- 3354,3379 ----
  
        --  Catch the static out of range case now
  
!       if Raises_Constraint_Error (High_Bound)
!         or else Is_Out_Of_Range (High_Bound, Ityp)
!       then
           --  Kill warning generated for the declaration of the static out of
           --  range high bound, and instead generate a Constraint_Error with
           --  an appropriate specific message.
  
!          if Nkind (High_Bound) = N_Integer_Literal then
!             Kill_Dead_Code (High_Bound);
!             Rewrite (High_Bound, New_Copy_Tree (Low_Bound));
! 
!          else
!             Kill_Dead_Code (Declaration_Node (Entity (High_Bound)));
!          end if;
! 
           Apply_Compile_Time_Constraint_Error
             (N      => Cnode,
              Msg    => "concatenation result upper bound out of range??",
              Reason => CE_Range_Check_Failed);
+ 
           return;
        end if;
  
*************** package body Exp_Ch4 is
*** 3542,3549 ****
                        Name => New_Occurrence_Of (RTE (RR (NN)), Loc),
                        Parameter_Associations => Opnds));
  
!                   Result := New_Occurrence_Of (Ent, Loc);
!                   goto Done;
                 end;
              end if;
           end;
--- 3450,3458 ----
                        Name => New_Occurrence_Of (RTE (RR (NN)), Loc),
                        Parameter_Associations => Opnds));
  
!                   --  No assignments left to do below
! 
!                   NN := 0;
                 end;
              end if;
           end;
*************** package body Exp_Ch4 is
*** 3566,3572 ****
                       Right_Opnd =>
                         Make_Op_Subtract (Loc,
                           Left_Opnd  => Aggr_Length (J),
!                          Right_Opnd => Make_Artyp_Literal (1)));
  
           begin
              --  Singleton case, simple assignment
--- 3475,3481 ----
                       Right_Opnd =>
                         Make_Op_Subtract (Loc,
                           Left_Opnd  => Aggr_Length (J),
!                          Right_Opnd => Make_Artyp_Literal (Uint_1)));
  
           begin
              --  Singleton case, simple assignment
*************** package body Exp_Ch4 is
*** 3627,3636 ****
           end;
        end loop;
  
!       --  Finally we build the result, which is a reference to the array object
  
        Result := New_Occurrence_Of (Ent, Loc);
  
     <<Done>>
        pragma Assert (Present (Result));
        Rewrite (Cnode, Result);
--- 3536,3550 ----
           end;
        end loop;
  
!       --  Finally we build the result, which is either a direct reference to
!       --  the array object or a slice of it.
  
        Result := New_Occurrence_Of (Ent, Loc);
  
+       if Present (Slice_Rng) then
+          Result := Make_Slice (Loc, Result, Slice_Rng);
+       end if;
+ 
     <<Done>>
        pragma Assert (Present (Result));
        Rewrite (Cnode, Result);
*************** package body Exp_Ch4 is
*** 4077,4115 ****
                 Mod_Minus_Right : constant Uint :=
                                     Modulus (Typ) - Intval (Right_Opnd (N));
  
!                Exprs     : constant List_Id := New_List;
!                Cond_Expr : constant Node_Id := New_Op_Node (N_Op_Lt, Loc);
!                Then_Expr : constant Node_Id := New_Op_Node (N_Op_Add, Loc);
!                Else_Expr : constant Node_Id := New_Op_Node (N_Op_Subtract,
!                                                             Loc);
              begin
                 --  To prevent spurious visibility issues, convert all
                 --  operands to Standard.Unsigned.
  
!                Set_Left_Opnd (Cond_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Left_Opnd (N))));
!                Set_Right_Opnd (Cond_Expr,
!                  Make_Integer_Literal (Loc, Mod_Minus_Right));
!                Append_To (Exprs, Cond_Expr);
  
!                Set_Left_Opnd (Then_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Left_Opnd (N))));
!                Set_Right_Opnd (Then_Expr,
!                  Make_Integer_Literal (Loc, Intval (Right_Opnd (N))));
!                Append_To (Exprs, Then_Expr);
  
!                Set_Left_Opnd (Else_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Left_Opnd (N))));
!                Set_Right_Opnd (Else_Expr,
!                  Make_Integer_Literal (Loc, Mod_Minus_Right));
!                Append_To (Exprs, Else_Expr);
  
                 Rewrite (N,
                   Unchecked_Convert_To (Typ,
!                    Make_If_Expression (Loc, Expressions => Exprs)));
              end;
           end if;
        end Expand_Modular_Addition;
--- 3991,4032 ----
                 Mod_Minus_Right : constant Uint :=
                                     Modulus (Typ) - Intval (Right_Opnd (N));
  
!                Cond_Expr : Node_Id;
!                Then_Expr : Node_Id;
!                Else_Expr : Node_Id;
              begin
                 --  To prevent spurious visibility issues, convert all
                 --  operands to Standard.Unsigned.
  
!                Cond_Expr :=
!                  Make_Op_Lt (Loc,
!                    Left_Opnd  =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Left_Opnd (N))),
!                    Right_Opnd =>
!                      Make_Integer_Literal (Loc, Mod_Minus_Right));
  
!                Then_Expr :=
!                  Make_Op_Add (Loc,
!                    Left_Opnd  =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Left_Opnd (N))),
!                    Right_Opnd =>
!                      Make_Integer_Literal (Loc, Intval (Right_Opnd (N))));
  
!                Else_Expr :=
!                  Make_Op_Subtract (Loc,
!                    Left_Opnd  =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Left_Opnd (N))),
!                    Right_Opnd =>
!                      Make_Integer_Literal (Loc, Mod_Minus_Right));
  
                 Rewrite (N,
                   Unchecked_Convert_To (Typ,
!                    Make_If_Expression (Loc,
!                      Expressions =>
!                        New_List (Cond_Expr, Then_Expr, Else_Expr))));
              end;
           end if;
        end Expand_Modular_Addition;
*************** package body Exp_Ch4 is
*** 4119,4161 ****
        -----------------------
  
        procedure Expand_Modular_Op is
!          Op_Expr  : constant Node_Id := New_Op_Node (Nkind (N), Loc);
!          Mod_Expr : constant Node_Id := New_Op_Node (N_Op_Mod, Loc);
  
!          Target_Type   : Entity_Id;
  
        begin
!          --  Convert nonbinary modular type operands into integer values. Thus
!          --  we avoid never-ending loops expanding them, and we also ensure
!          --  the back end never receives nonbinary modular type expressions.
  
!          if Nkind (N) in N_Op_And | N_Op_Or | N_Op_Xor then
!             Set_Left_Opnd (Op_Expr,
!               Unchecked_Convert_To (Standard_Unsigned,
!                 New_Copy_Tree (Left_Opnd (N))));
!             Set_Right_Opnd (Op_Expr,
!               Unchecked_Convert_To (Standard_Unsigned,
!                 New_Copy_Tree (Right_Opnd (N))));
!             Set_Left_Opnd (Mod_Expr,
!               Unchecked_Convert_To (Standard_Integer, Op_Expr));
  
!          else
!             --  If the modulus of the type is larger than Integer'Last use a
!             --  larger type for the operands, to prevent spurious constraint
!             --  errors on large legal literals of the type.
  
!             if Modulus (Etype (N)) > Int (Integer'Last) then
!                Target_Type := Standard_Long_Long_Integer;
              else
!                Target_Type := Standard_Integer;
              end if;
  
!             Set_Left_Opnd (Op_Expr,
!               Unchecked_Convert_To (Target_Type,
!                 New_Copy_Tree (Left_Opnd (N))));
!             Set_Right_Opnd (Op_Expr,
!               Unchecked_Convert_To (Target_Type,
!                 New_Copy_Tree (Right_Opnd (N))));
  
              --  Link this node to the tree to analyze it
  
--- 4036,4117 ----
        -----------------------
  
        procedure Expand_Modular_Op is
!          --   We will convert to another type (not a nonbinary-modulus modular
!          --   type), evaluate the op in that representation, reduce the result,
!          --   and convert back to the original type. This means that the
!          --   backend does not have to deal with nonbinary-modulus ops.
  
!          Op_Expr  : constant Node_Id := New_Op_Node (Nkind (N), Loc);
!          Mod_Expr : Node_Id;
  
+          Target_Type : Entity_Id;
        begin
!          --  Select a target type that is large enough to avoid spurious
!          --  intermediate overflow on pre-reduction computation (for
!          --  correctness) but is no larger than is needed (for performance).
  
!          declare
!             Required_Size : Uint := RM_Size (Etype (N));
!             Use_Unsigned  : Boolean := True;
!          begin
!             case Nkind (N) is
!                when N_Op_Add =>
!                   --  For example, if modulus is 255 then RM_Size will be 8
!                   --  and the range of possible values (before reduction) will
!                   --  be 0 .. 508; that range requires 9 bits.
!                   Required_Size := Required_Size + 1;
  
!                when N_Op_Subtract =>
!                   --  For example, if modulus is 255 then RM_Size will be 8
!                   --  and the range of possible values (before reduction) will
!                   --  be -254 .. 254; that range requires 9 bits, signed.
!                   Use_Unsigned := False;
!                   Required_Size := Required_Size + 1;
  
!                when N_Op_Multiply =>
!                   --  For example, if modulus is 255 then RM_Size will be 8
!                   --  and the range of possible values (before reduction) will
!                   --  be 0 .. 64,516; that range requires 16 bits.
!                   Required_Size := Required_Size * 2;
! 
!                when others =>
!                   null;
!             end case;
! 
!             if Use_Unsigned then
!                if Required_Size <= Standard_Short_Short_Integer_Size then
!                   Target_Type := Standard_Short_Short_Unsigned;
!                elsif Required_Size <= Standard_Short_Integer_Size then
!                   Target_Type := Standard_Short_Unsigned;
!                elsif Required_Size <= Standard_Integer_Size then
!                   Target_Type := Standard_Unsigned;
!                else
!                   pragma Assert (Required_Size <= 64);
!                   Target_Type := Standard_Unsigned_64;
!                end if;
!             elsif Required_Size <= 8 then
!                Target_Type := Standard_Integer_8;
!             elsif Required_Size <= 16 then
!                Target_Type := Standard_Integer_16;
!             elsif Required_Size <= 32 then
!                Target_Type := Standard_Integer_32;
              else
!                pragma Assert (Required_Size <= 64);
!                Target_Type := Standard_Integer_64;
              end if;
  
!             pragma Assert (Present (Target_Type));
!          end;
! 
!          Set_Left_Opnd (Op_Expr,
!            Unchecked_Convert_To (Target_Type,
!              New_Copy_Tree (Left_Opnd (N))));
!          Set_Right_Opnd (Op_Expr,
!            Unchecked_Convert_To (Target_Type,
!              New_Copy_Tree (Right_Opnd (N))));
! 
!          --  ??? Why do this stuff for some ops and not others?
!          if Nkind (N) not in N_Op_And | N_Op_Or | N_Op_Xor then
  
              --  Link this node to the tree to analyze it
  
*************** package body Exp_Ch4 is
*** 4179,4190 ****
              --  several times.
  
              Force_Evaluation (Op_Expr, Mode => Strict);
- 
-             Set_Left_Opnd (Mod_Expr, Op_Expr);
           end if;
  
!          Set_Right_Opnd (Mod_Expr,
!            Make_Integer_Literal (Loc, Modulus (Typ)));
  
           Rewrite (N,
             Unchecked_Convert_To (Typ, Mod_Expr));
--- 4135,4146 ----
              --  several times.
  
              Force_Evaluation (Op_Expr, Mode => Strict);
           end if;
  
!          Mod_Expr :=
!            Make_Op_Mod (Loc,
!              Left_Opnd  => Op_Expr,
!              Right_Opnd => Make_Integer_Literal (Loc, Modulus (Typ)));
  
           Rewrite (N,
             Unchecked_Convert_To (Typ, Mod_Expr));
*************** package body Exp_Ch4 is
*** 4215,4251 ****
                 Mod_Minus_Right : constant Uint :=
                                     Modulus (Typ) - Intval (Right_Opnd (N));
  
!                Exprs     : constant List_Id := New_List;
!                Cond_Expr : constant Node_Id := New_Op_Node (N_Op_Lt, Loc);
!                Then_Expr : constant Node_Id := New_Op_Node (N_Op_Add, Loc);
!                Else_Expr : constant Node_Id := New_Op_Node (N_Op_Subtract,
!                                                             Loc);
              begin
!                Set_Left_Opnd (Cond_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Left_Opnd (N))));
!                Set_Right_Opnd (Cond_Expr,
!                  Make_Integer_Literal (Loc, Intval (Right_Opnd (N))));
!                Append_To (Exprs, Cond_Expr);
  
!                Set_Left_Opnd (Then_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Left_Opnd (N))));
!                Set_Right_Opnd (Then_Expr,
!                  Make_Integer_Literal (Loc, Mod_Minus_Right));
!                Append_To (Exprs, Then_Expr);
  
!                Set_Left_Opnd (Else_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Left_Opnd (N))));
!                Set_Right_Opnd (Else_Expr,
!                  Unchecked_Convert_To (Standard_Unsigned,
!                    New_Copy_Tree (Right_Opnd (N))));
!                Append_To (Exprs, Else_Expr);
  
                 Rewrite (N,
                   Unchecked_Convert_To (Typ,
!                    Make_If_Expression (Loc, Expressions => Exprs)));
              end;
           end if;
        end Expand_Modular_Subtraction;
--- 4171,4210 ----
                 Mod_Minus_Right : constant Uint :=
                                     Modulus (Typ) - Intval (Right_Opnd (N));
  
!                Cond_Expr : Node_Id;
!                Then_Expr : Node_Id;
!                Else_Expr : Node_Id;
              begin
!                Cond_Expr :=
!                  Make_Op_Lt (Loc,
!                    Left_Opnd  =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Left_Opnd (N))),
!                    Right_Opnd =>
!                      Make_Integer_Literal (Loc, Intval (Right_Opnd (N))));
  
!                Then_Expr :=
!                  Make_Op_Add (Loc,
!                    Left_Opnd  =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Left_Opnd (N))),
!                    Right_Opnd =>
!                      Make_Integer_Literal (Loc, Mod_Minus_Right));
  
!                Else_Expr :=
!                  Make_Op_Subtract (Loc,
!                    Left_Opnd  =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Left_Opnd (N))),
!                    Right_Opnd =>
!                      Unchecked_Convert_To (Standard_Unsigned,
!                        New_Copy_Tree (Right_Opnd (N))));
  
                 Rewrite (N,
                   Unchecked_Convert_To (Typ,
!                    Make_If_Expression (Loc,
!                      Expressions =>
!                        New_List (Cond_Expr, Then_Expr, Else_Expr))));
              end;
           end if;
        end Expand_Modular_Subtraction;
*************** package body Exp_Ch4 is
*** 4551,4557 ****
           if Present (Pool) then
              Set_Storage_Pool (N, Pool);
  
!             if Is_RTE (Pool, RE_SS_Pool) then
                 Check_Restriction (No_Secondary_Stack, N);
                 Set_Procedure_To_Call (N, RTE (RE_SS_Allocate));
  
--- 4510,4519 ----
           if Present (Pool) then
              Set_Storage_Pool (N, Pool);
  
!             if Is_RTE (Pool, RE_RS_Pool) then
!                Set_Procedure_To_Call (N, RTE (RE_RS_Allocate));
! 
!             elsif Is_RTE (Pool, RE_SS_Pool) then
                 Check_Restriction (No_Secondary_Stack, N);
                 Set_Procedure_To_Call (N, RTE (RE_SS_Allocate));
  
*************** package body Exp_Ch4 is
*** 5149,5154 ****
--- 5111,5140 ----
                          Set_Expression (N, New_Occurrence_Of (Typ, Loc));
                       end if;
  
+                      --  When the designated subtype is unconstrained and
+                      --  the allocator specifies a constrained subtype (or
+                      --  such a subtype has been created, such as above by
+                      --  Build_Default_Subtype), associate that subtype with
+                      --  the dereference of the allocator's access value.
+                      --  This is needed by the back end for cases where
+                      --  the access type has a Designated_Storage_Model,
+                      --  to support allocation of a host object of the right
+                      --  size for passing to the initialization procedure.
+ 
+                      if not Is_Constrained (Dtyp)
+                        and then Is_Constrained (Typ)
+                      then
+                         declare
+                            Init_Deref : constant Node_Id :=
+                              Unqual_Conv (Init_Arg1);
+                         begin
+                            pragma Assert
+                              (Nkind (Init_Deref) = N_Explicit_Dereference);
+ 
+                            Set_Actual_Designated_Subtype (Init_Deref, Typ);
+                         end;
+                      end if;
+ 
                       Discr := First_Elmt (Discriminant_Constraint (Typ));
                       while Present (Discr) loop
                          Nod := Node (Discr);
*************** package body Exp_Ch4 is
*** 5776,5798 ****
        Elsex : constant Node_Id    := Next (Thenx);
        Typ   : constant Entity_Id  := Etype (N);
  
!       Actions      : List_Id;
!       Decl         : Node_Id;
!       Expr         : Node_Id;
!       New_If       : Node_Id;
!       New_N        : Node_Id;
! 
        --  Determine if we are dealing with a special case of a conditional
        --  expression used as an actual for an anonymous access type which
        --  forces us to transform the if expression into an expression with
        --  actions in order to create a temporary to capture the level of the
        --  expression in each branch.
  
!       Force_Expand : constant Boolean := Is_Anonymous_Access_Actual (N);
  
     --  Start of processing for Expand_N_If_Expression
  
     begin
        --  Check for MINIMIZED/ELIMINATED overflow mode.
        --  Apply_Arithmetic_Overflow_Check will not deal with Then/Else_Actions
        --  so skip this step if any actions are present.
--- 5762,5812 ----
        Elsex : constant Node_Id    := Next (Thenx);
        Typ   : constant Entity_Id  := Etype (N);
  
!       Force_Expand : constant Boolean := Is_Anonymous_Access_Actual (N);
        --  Determine if we are dealing with a special case of a conditional
        --  expression used as an actual for an anonymous access type which
        --  forces us to transform the if expression into an expression with
        --  actions in order to create a temporary to capture the level of the
        --  expression in each branch.
  
!       function OK_For_Single_Subtype (T1, T2 : Entity_Id) return Boolean;
!       --  Return true if it is acceptable to use a single subtype for two
!       --  dependent expressions of subtype T1 and T2 respectively, which are
!       --  unidimensional arrays whose index bounds are known at compile time.
! 
!       ---------------------------
!       -- OK_For_Single_Subtype --
!       ---------------------------
! 
!       function OK_For_Single_Subtype (T1, T2 : Entity_Id) return Boolean is
!          Lo1, Hi1 : Uint;
!          Lo2, Hi2 : Uint;
! 
!       begin
!          Get_First_Index_Bounds (T1, Lo1, Hi1);
!          Get_First_Index_Bounds (T2, Lo2, Hi2);
! 
!          --  Return true if the length of the covering subtype is not too large
! 
!          return
!            UI_Max (Hi1, Hi2) - UI_Min (Lo1, Lo2) < Too_Large_Length_For_Array;
!       end OK_For_Single_Subtype;
! 
!       --  Local variables
! 
!       Actions : List_Id;
!       Decl    : Node_Id;
!       Expr    : Node_Id;
!       New_If  : Node_Id;
!       New_N   : Node_Id;
  
     --  Start of processing for Expand_N_If_Expression
  
     begin
+       --  Deal with non-standard booleans
+ 
+       Adjust_Condition (Cond);
+ 
        --  Check for MINIMIZED/ELIMINATED overflow mode.
        --  Apply_Arithmetic_Overflow_Check will not deal with Then/Else_Actions
        --  so skip this step if any actions are present.
*************** package body Exp_Ch4 is
*** 5961,5966 ****
--- 5975,6216 ----
                  Prefix => New_Occurrence_Of (Cnn, Loc));
           end;
  
+       --  If the result is a unidimensional unconstrained array but the two
+       --  dependent expressions have constrained subtypes with known bounds,
+       --  then we expand as follows:
+ 
+       --      subtype Txx is Typ (<static low-bound> .. <static high-bound>);
+       --      Cnn : Txx;
+       --      if cond then
+       --         <<then actions>>
+       --         Cnn (<then low-bound .. then high-bound>) := then-expr;
+       --      else
+       --         <<else actions>>
+       --         Cnn (<else low bound .. else high-bound>) := else-expr;
+       --      end if;
+ 
+       --  and replace the if expression by a slice of Cnn, provided that Txx
+       --  is not too large. This will create a static temporary instead of the
+       --  dynamic one of the next case and thus help the code generator.
+ 
+       --  Note that we need to deal with the case where the else expression is
+       --  itself such a slice, in order to catch if expressions with more than
+       --  two dependent expressions in the source code.
+ 
+       --  Also note that this creates variables on branches without an explicit
+       --  scope, causing troubles with e.g. the LLVM IR, so disable this
+       --  optimization when Unnest_Subprogram_Mode (enabled for LLVM).
+ 
+       elsif Is_Array_Type (Typ)
+         and then Number_Dimensions (Typ) = 1
+         and then not Is_Constrained (Typ)
+         and then Is_Constrained (Etype (Thenx))
+         and then Compile_Time_Known_Bounds (Etype (Thenx))
+         and then
+           ((Is_Constrained (Etype (Elsex))
+              and then Compile_Time_Known_Bounds (Etype (Elsex))
+              and then OK_For_Single_Subtype (Etype (Thenx), Etype (Elsex)))
+             or else
+            (Nkind (Elsex) = N_Slice
+              and then Is_Constrained (Etype (Prefix (Elsex)))
+              and then Compile_Time_Known_Bounds (Etype (Prefix (Elsex)))
+              and then
+                OK_For_Single_Subtype (Etype (Thenx), Etype (Prefix (Elsex)))))
+         and then not Generate_C_Code
+         and then not Unnest_Subprogram_Mode
+       then
+          declare
+             Ityp : constant Entity_Id := Base_Type (Etype (First_Index (Typ)));
+ 
+             function Build_New_Bound
+               (Then_Bnd  : Uint;
+                Else_Bnd  : Uint;
+                Slice_Bnd : Node_Id) return Node_Id;
+             --  Build a new bound from the bounds of the if expression
+ 
+             function To_Ityp (V : Uint) return Node_Id;
+             --  Convert V to an index value in Ityp
+ 
+             ---------------------
+             -- Build_New_Bound --
+             ---------------------
+ 
+             function Build_New_Bound
+               (Then_Bnd  : Uint;
+                Else_Bnd  : Uint;
+                Slice_Bnd : Node_Id) return Node_Id is
+ 
+             begin
+                --  We need to use the special processing for slices only if
+                --  they do not have compile-time known bounds; if they do, they
+                --  can be treated like any other expressions.
+ 
+                if Nkind (Elsex) = N_Slice
+                  and then not Compile_Time_Known_Bounds (Etype (Elsex))
+                then
+                   if Compile_Time_Known_Value (Slice_Bnd)
+                     and then Expr_Value (Slice_Bnd) = Then_Bnd
+                   then
+                      return To_Ityp (Then_Bnd);
+ 
+                   else
+                      return Make_If_Expression (Loc,
+                        Expressions => New_List (
+                          Duplicate_Subexpr (Cond),
+                          To_Ityp (Then_Bnd),
+                          New_Copy_Tree (Slice_Bnd)));
+                   end if;
+ 
+                elsif Then_Bnd = Else_Bnd then
+                   return To_Ityp (Then_Bnd);
+ 
+                else
+                   return Make_If_Expression (Loc,
+                     Expressions => New_List (
+                       Duplicate_Subexpr (Cond),
+                       To_Ityp (Then_Bnd),
+                       To_Ityp (Else_Bnd)));
+                end if;
+             end Build_New_Bound;
+ 
+             -------------
+             -- To_Ityp --
+             -------------
+ 
+             function To_Ityp (V : Uint) return Node_Id is
+                Result : constant Node_Id := Make_Integer_Literal (Loc, V);
+ 
+             begin
+                if Is_Enumeration_Type (Ityp) then
+                   return
+                     Make_Attribute_Reference (Loc,
+                       Prefix         => New_Occurrence_Of (Ityp, Loc),
+                       Attribute_Name => Name_Val,
+                       Expressions    => New_List (Result));
+                else
+                   return Result;
+                end if;
+             end To_Ityp;
+ 
+             Ent                  : Node_Id;
+             Slice_Lo, Slice_Hi   : Node_Id;
+             Subtyp_Ind           : Node_Id;
+             Else_Lo, Else_Hi     : Uint;
+             Min_Lo, Max_Hi       : Uint;
+             Then_Lo, Then_Hi     : Uint;
+             Then_List, Else_List : List_Id;
+ 
+          begin
+             Get_First_Index_Bounds (Etype (Thenx), Then_Lo, Then_Hi);
+ 
+             --  See the rationale in Build_New_Bound
+ 
+             if Nkind (Elsex) = N_Slice
+               and then not Compile_Time_Known_Bounds (Etype (Elsex))
+             then
+                Slice_Lo := Low_Bound (Discrete_Range (Elsex));
+                Slice_Hi := High_Bound (Discrete_Range (Elsex));
+                Get_First_Index_Bounds
+                  (Etype (Prefix (Elsex)), Else_Lo, Else_Hi);
+ 
+             else
+                Slice_Lo := Empty;
+                Slice_Hi := Empty;
+                Get_First_Index_Bounds (Etype (Elsex), Else_Lo, Else_Hi);
+             end if;
+ 
+             Min_Lo := UI_Min (Then_Lo, Else_Lo);
+             Max_Hi := UI_Max (Then_Hi, Else_Hi);
+ 
+             --  Now we construct an array object with appropriate bounds and
+             --  mark it as internal to prevent useless initialization when
+             --  Initialize_Scalars is enabled. Also since this is the actual
+             --  result entity, we make sure we have debug information for it.
+ 
+             Subtyp_Ind :=
+               Make_Subtype_Indication (Loc,
+                 Subtype_Mark => New_Occurrence_Of (Typ, Loc),
+                 Constraint   =>
+                   Make_Index_Or_Discriminant_Constraint (Loc,
+                     Constraints => New_List (
+                       Make_Range (Loc,
+                         Low_Bound  => To_Ityp (Min_Lo),
+                         High_Bound => To_Ityp (Max_Hi)))));
+ 
+             Ent := Make_Temporary (Loc, 'C');
+             Set_Is_Internal       (Ent);
+             Set_Debug_Info_Needed (Ent);
+ 
+             Decl :=
+               Make_Object_Declaration (Loc,
+                 Defining_Identifier => Ent,
+                 Object_Definition   => Subtyp_Ind);
+ 
+             --  If the result of the expression appears as the initializing
+             --  expression of an object declaration, we can just rename the
+             --  result, rather than copying it.
+ 
+             Mutate_Ekind (Ent, E_Variable);
+             Set_OK_To_Rename (Ent);
+ 
+             Then_List := New_List (
+               Make_Assignment_Statement (Loc,
+                 Name       =>
+                   Make_Slice (Loc,
+                     Prefix         => New_Occurrence_Of (Ent, Loc),
+                     Discrete_Range =>
+                       Make_Range (Loc,
+                         Low_Bound  => To_Ityp (Then_Lo),
+                         High_Bound => To_Ityp (Then_Hi))),
+                 Expression => Relocate_Node (Thenx)));
+ 
+             Set_Suppress_Assignment_Checks (Last (Then_List));
+ 
+             --  See the rationale in Build_New_Bound
+ 
+             if Nkind (Elsex) = N_Slice
+               and then not Compile_Time_Known_Bounds (Etype (Elsex))
+             then
+                Else_List := New_List (
+                  Make_Assignment_Statement (Loc,
+                    Name       =>
+                      Make_Slice (Loc,
+                        Prefix         => New_Occurrence_Of (Ent, Loc),
+                        Discrete_Range =>
+                          Make_Range (Loc,
+                            Low_Bound  => New_Copy_Tree (Slice_Lo),
+                            High_Bound => New_Copy_Tree (Slice_Hi))),
+                    Expression => Relocate_Node (Elsex)));
+ 
+             else
+                Else_List := New_List (
+                  Make_Assignment_Statement (Loc,
+                    Name       =>
+                      Make_Slice (Loc,
+                        Prefix         => New_Occurrence_Of (Ent, Loc),
+                        Discrete_Range =>
+                          Make_Range (Loc,
+                            Low_Bound  => To_Ityp (Else_Lo),
+                            High_Bound => To_Ityp (Else_Hi))),
+                    Expression => Relocate_Node (Elsex)));
+             end if;
+ 
+             Set_Suppress_Assignment_Checks (Last (Else_List));
+ 
+             New_If :=
+               Make_Implicit_If_Statement (N,
+                 Condition       => Duplicate_Subexpr (Cond),
+                 Then_Statements => Then_List,
+                 Else_Statements => Else_List);
+ 
+             New_N :=
+               Make_Slice (Loc,
+                 Prefix         => New_Occurrence_Of (Ent, Loc),
+                 Discrete_Range => Make_Range (Loc,
+                   Low_Bound  => Build_New_Bound (Then_Lo, Else_Lo, Slice_Lo),
+                   High_Bound => Build_New_Bound (Then_Hi, Else_Hi, Slice_Hi)));
+          end;
+ 
        --  If the result is an unconstrained array and the if expression is in a
        --  context other than the initializing expression of the declaration of
        --  an object, then we pull out the if expression as follows:
*************** package body Exp_Ch4 is
*** 6135,6141 ****
           end if;
  
        --  For the sake of GNATcoverage, generate an intermediate temporary in
!       --  the case where the if-expression is a condition in an outer decision,
        --  in order to make sure that no branch is shared between the decisions.
  
        elsif Opt.Suppress_Control_Flow_Optimizations
--- 6385,6391 ----
           end if;
  
        --  For the sake of GNATcoverage, generate an intermediate temporary in
!       --  the case where the if expression is a condition in an outer decision,
        --  in order to make sure that no branch is shared between the decisions.
  
        elsif Opt.Suppress_Control_Flow_Optimizations
*************** package body Exp_Ch4 is
*** 6214,6228 ****
        Rop    : constant Node_Id    := Right_Opnd (N);
        Static : constant Boolean    := Is_OK_Static_Expression (N);
  
!       procedure Substitute_Valid_Check;
        --  Replaces node N by Lop'Valid. This is done when we have an explicit
        --  test for the left operand being in range of its subtype.
  
!       ----------------------------
!       -- Substitute_Valid_Check --
!       ----------------------------
  
!       procedure Substitute_Valid_Check is
           function Is_OK_Object_Reference (Nod : Node_Id) return Boolean;
           --  Determine whether arbitrary node Nod denotes a source object that
           --  may safely act as prefix of attribute 'Valid.
--- 6464,6478 ----
        Rop    : constant Node_Id    := Right_Opnd (N);
        Static : constant Boolean    := Is_OK_Static_Expression (N);
  
!       procedure Substitute_Valid_Test;
        --  Replaces node N by Lop'Valid. This is done when we have an explicit
        --  test for the left operand being in range of its subtype.
  
!       ---------------------------
!       -- Substitute_Valid_Test --
!       ---------------------------
  
!       procedure Substitute_Valid_Test is
           function Is_OK_Object_Reference (Nod : Node_Id) return Boolean;
           --  Determine whether arbitrary node Nod denotes a source object that
           --  may safely act as prefix of attribute 'Valid.
*************** package body Exp_Ch4 is
*** 6262,6268 ****
              return False;
           end Is_OK_Object_Reference;
  
!       --  Start of processing for Substitute_Valid_Check
  
        begin
           Rewrite (N,
--- 6512,6518 ----
              return False;
           end Is_OK_Object_Reference;
  
!       --  Start of processing for Substitute_Valid_Test
  
        begin
           Rewrite (N,
*************** package body Exp_Ch4 is
*** 6286,6292 ****
              Error_Msg_N -- CODEFIX
                ("\??use ''Valid attribute instead", N);
           end if;
!       end Substitute_Valid_Check;
  
        --  Local variables
  
--- 6536,6542 ----
              Error_Msg_N -- CODEFIX
                ("\??use ''Valid attribute instead", N);
           end if;
!       end Substitute_Valid_Test;
  
        --  Local variables
  
*************** package body Exp_Ch4 is
*** 6339,6353 ****
          --  eliminates the cases where MINIMIZED/ELIMINATED mode overflow
          --  checks have changed the type of the left operand.
  
!         and then Nkind (Rop) in N_Has_Entity
          and then Ltyp = Entity (Rop)
  
          --  Skip this for predicated types, where such expressions are a
          --  reasonable way of testing if something meets the predicate.
  
!         and then not Present (Predicate_Function (Ltyp))
        then
!          Substitute_Valid_Check;
           return;
        end if;
  
--- 6589,6603 ----
          --  eliminates the cases where MINIMIZED/ELIMINATED mode overflow
          --  checks have changed the type of the left operand.
  
!         and then Is_Entity_Name (Rop)
          and then Ltyp = Entity (Rop)
  
          --  Skip this for predicated types, where such expressions are a
          --  reasonable way of testing if something meets the predicate.
  
!         and then No (Predicate_Function (Ltyp))
        then
!          Substitute_Valid_Test;
           return;
        end if;
  
*************** package body Exp_Ch4 is
*** 6365,6400 ****
              Lo : constant Node_Id := Low_Bound (Rop);
              Hi : constant Node_Id := High_Bound (Rop);
  
!             Lo_Orig : constant Node_Id := Original_Node (Lo);
!             Hi_Orig : constant Node_Id := Original_Node (Hi);
  
!             Lcheck : Compare_Result;
!             Ucheck : Compare_Result;
  
!             Warn1 : constant Boolean :=
                        Constant_Condition_Warnings
!                         and then Comes_From_Source (N)
                          and then not In_Instance;
              --  This must be true for any of the optimization warnings, we
              --  clearly want to give them only for source with the flag on. We
              --  also skip these warnings in an instance since it may be the
              --  case that different instantiations have different ranges.
  
!             Warn2 : constant Boolean :=
!                       Warn1
!                         and then Nkind (Original_Node (Rop)) = N_Range
!                         and then Is_Integer_Type (Etype (Lo));
!             --  For the case where only one bound warning is elided, we also
!             --  insist on an explicit range and an integer type. The reason is
!             --  that the use of enumeration ranges including an end point is
!             --  common, as is the use of a subtype name, one of whose bounds is
!             --  the same as the type of the expression.
  
           begin
!             --  If test is explicit x'First .. x'Last, replace by valid check
  
              if Is_Scalar_Type (Ltyp)
  
                --  And left operand is X'First where X matches left operand
                --  type (this eliminates cases of type mismatch, including
                --  the cases where ELIMINATED/MINIMIZED mode has changed the
--- 6615,6656 ----
              Lo : constant Node_Id := Low_Bound (Rop);
              Hi : constant Node_Id := High_Bound (Rop);
  
!             Lo_Orig  : constant Node_Id := Original_Node (Lo);
!             Hi_Orig  : constant Node_Id := Original_Node (Hi);
!             Rop_Orig : constant Node_Id := Original_Node (Rop);
  
!             Comes_From_Simple_Range_In_Source : constant Boolean :=
!               Comes_From_Source (N)
!                 and then not
!                   (Is_Entity_Name (Rop_Orig)
!                     and then Is_Type (Entity (Rop_Orig))
!                     and then Present (Predicate_Function (Entity (Rop_Orig))));
!             --  This is true for a membership test present in the source with a
!             --  range or mark for a subtype that is not predicated. As already
!             --  explained a few lines above, we do not want to give warnings on
!             --  a test with a mark for a subtype that is predicated.
  
!             Warn : constant Boolean :=
                        Constant_Condition_Warnings
!                         and then Comes_From_Simple_Range_In_Source
                          and then not In_Instance;
              --  This must be true for any of the optimization warnings, we
              --  clearly want to give them only for source with the flag on. We
              --  also skip these warnings in an instance since it may be the
              --  case that different instantiations have different ranges.
  
!             Lcheck : Compare_Result;
!             Ucheck : Compare_Result;
  
           begin
!             --  If test is explicit x'First .. x'Last, replace by 'Valid test
  
              if Is_Scalar_Type (Ltyp)
  
+               --  Only relevant for source comparisons
+ 
+               and then Comes_From_Simple_Range_In_Source
+ 
                --  And left operand is X'First where X matches left operand
                --  type (this eliminates cases of type mismatch, including
                --  the cases where ELIMINATED/MINIMIZED mode has changed the
*************** package body Exp_Ch4 is
*** 6402,6422 ****
  
                and then Nkind (Lo_Orig) = N_Attribute_Reference
                and then Attribute_Name (Lo_Orig) = Name_First
!               and then Nkind (Prefix (Lo_Orig)) in N_Has_Entity
                and then Entity (Prefix (Lo_Orig)) = Ltyp
  
                --  Same tests for right operand
  
                and then Nkind (Hi_Orig) = N_Attribute_Reference
                and then Attribute_Name (Hi_Orig) = Name_Last
!               and then Nkind (Prefix (Hi_Orig)) in N_Has_Entity
                and then Entity (Prefix (Hi_Orig)) = Ltyp
- 
-               --  Relevant only for source cases
- 
-               and then Comes_From_Source (N)
              then
!                Substitute_Valid_Check;
                 goto Leave;
              end if;
  
--- 6658,6674 ----
  
                and then Nkind (Lo_Orig) = N_Attribute_Reference
                and then Attribute_Name (Lo_Orig) = Name_First
!               and then Is_Entity_Name (Prefix (Lo_Orig))
                and then Entity (Prefix (Lo_Orig)) = Ltyp
  
                --  Same tests for right operand
  
                and then Nkind (Hi_Orig) = N_Attribute_Reference
                and then Attribute_Name (Hi_Orig) = Name_Last
!               and then Is_Entity_Name (Prefix (Hi_Orig))
                and then Entity (Prefix (Hi_Orig)) = Ltyp
              then
!                Substitute_Valid_Test;
                 goto Leave;
              end if;
  
*************** package body Exp_Ch4 is
*** 6425,6431 ****
              --  for substituting a valid test. We only do this for discrete
              --  types, since it won't arise in practice for float types.
  
!             if Comes_From_Source (N)
                and then Is_Discrete_Type (Ltyp)
                and then Compile_Time_Known_Value (Type_High_Bound (Ltyp))
                and then Compile_Time_Known_Value (Type_Low_Bound  (Ltyp))
--- 6677,6683 ----
              --  for substituting a valid test. We only do this for discrete
              --  types, since it won't arise in practice for float types.
  
!             if Comes_From_Simple_Range_In_Source
                and then Is_Discrete_Type (Ltyp)
                and then Compile_Time_Known_Value (Type_High_Bound (Ltyp))
                and then Compile_Time_Known_Value (Type_Low_Bound  (Ltyp))
*************** package body Exp_Ch4 is
*** 6438,6444 ****
                --  have a test in the generic that makes sense with some types
                --  and not with other types.
  
!               --  Similarly, do not rewrite membership as a validity check if
                --  within the predicate function for the type.
  
                --  Finally, if the original bounds are type conversions, even
--- 6690,6696 ----
                --  have a test in the generic that makes sense with some types
                --  and not with other types.
  
!               --  Similarly, do not rewrite membership as a 'Valid test if
                --  within the predicate function for the type.
  
                --  Finally, if the original bounds are type conversions, even
*************** package body Exp_Ch4 is
*** 6458,6464 ****
                    null;
  
                 else
!                   Substitute_Valid_Check;
                    goto Leave;
                 end if;
              end if;
--- 6710,6716 ----
                    null;
  
                 else
!                   Substitute_Valid_Test;
                    goto Leave;
                 end if;
              end if;
*************** package body Exp_Ch4 is
*** 6474,6480 ****
              --  legality checks, because we are constant-folding beyond RM 4.9.
  
              if Lcheck = LT or else Ucheck = GT then
!                if Warn1 then
                    Error_Msg_N ("?c?range test optimized away", N);
                    Error_Msg_N ("\?c?value is known to be out of range", N);
                 end if;
--- 6726,6732 ----
              --  legality checks, because we are constant-folding beyond RM 4.9.
  
              if Lcheck = LT or else Ucheck = GT then
!                if Warn then
                    Error_Msg_N ("?c?range test optimized away", N);
                    Error_Msg_N ("\?c?value is known to be out of range", N);
                 end if;
*************** package body Exp_Ch4 is
*** 6488,6494 ****
              --  since we know we are in range.
  
              elsif Lcheck in Compare_GE and then Ucheck in Compare_LE then
!                if Warn1 then
                    Error_Msg_N ("?c?range test optimized away", N);
                    Error_Msg_N ("\?c?value is known to be in range", N);
                 end if;
--- 6740,6746 ----
              --  since we know we are in range.
  
              elsif Lcheck in Compare_GE and then Ucheck in Compare_LE then
!                if Warn then
                    Error_Msg_N ("?c?range test optimized away", N);
                    Error_Msg_N ("\?c?value is known to be in range", N);
                 end if;
*************** package body Exp_Ch4 is
*** 6503,6513 ****
              --  a comparison against the upper bound.
  
              elsif Lcheck in Compare_GE then
-                if Warn2 and then not In_Instance then
-                   Error_Msg_N ("??lower bound test optimized away", Lo);
-                   Error_Msg_N ("\??value is known to be in range", Lo);
-                end if;
- 
                 Rewrite (N,
                   Make_Op_Le (Loc,
                     Left_Opnd  => Lop,
--- 6755,6760 ----
*************** package body Exp_Ch4 is
*** 6515,6530 ****
                 Analyze_And_Resolve (N, Restyp);
                 goto Leave;
  
!             --  If upper bound check succeeds and lower bound check is not
!             --  known to succeed or fail, then replace the range check with
!             --  a comparison against the lower bound.
  
              elsif Ucheck in Compare_LE then
-                if Warn2 and then not In_Instance then
-                   Error_Msg_N ("??upper bound test optimized away", Hi);
-                   Error_Msg_N ("\??value is known to be in range", Hi);
-                end if;
- 
                 Rewrite (N,
                   Make_Op_Ge (Loc,
                     Left_Opnd  => Lop,
--- 6762,6770 ----
                 Analyze_And_Resolve (N, Restyp);
                 goto Leave;
  
!             --  Inverse of previous case.
  
              elsif Ucheck in Compare_LE then
                 Rewrite (N,
                   Make_Op_Ge (Loc,
                     Left_Opnd  => Lop,
*************** package body Exp_Ch4 is
*** 6538,6544 ****
              --  see if we can determine the outcome assuming everything is
              --  valid, and if so give an appropriate warning.
  
!             if Warn1 and then not Assume_No_Invalid_Values then
                 Lcheck := Compile_Time_Compare (Lop, Lo, Assume_Valid => True);
                 Ucheck := Compile_Time_Compare (Lop, Hi, Assume_Valid => True);
  
--- 6778,6784 ----
              --  see if we can determine the outcome assuming everything is
              --  valid, and if so give an appropriate warning.
  
!             if Warn and then not Assume_No_Invalid_Values then
                 Lcheck := Compile_Time_Compare (Lop, Lo, Assume_Valid => True);
                 Ucheck := Compile_Time_Compare (Lop, Hi, Assume_Valid => True);
  
*************** package body Exp_Ch4 is
*** 6553,6570 ****
                 elsif Lcheck in Compare_GE and then Ucheck in Compare_LE then
                    Error_Msg_N
                      ("?c?value can only be out of range if it is invalid", N);
- 
-                --  Lower bound check succeeds if value is valid
- 
-                elsif Warn2 and then Lcheck in Compare_GE then
-                   Error_Msg_N
-                     ("?c?lower bound check only fails if it is invalid", Lo);
- 
-                --  Upper bound  check succeeds if value is valid
- 
-                elsif Warn2 and then Ucheck in Compare_LE then
-                   Error_Msg_N
-                     ("?c?upper bound check only fails for invalid values", Hi);
                 end if;
              end if;
           end;
--- 6793,6798 ----
*************** package body Exp_Ch4 is
*** 6617,6628 ****
                 goto Leave;
  
              --  If type is scalar type, rewrite as x in t'First .. t'Last.
!             --  This reason we do this is that the bounds may have the wrong
              --  type if they come from the original type definition. Also this
              --  way we get all the processing above for an explicit range.
  
!             --  Don't do this for predicated types, since in this case we
!             --  want to check the predicate.
  
              elsif Is_Scalar_Type (Typ) then
                 if No (Predicate_Function (Typ)) then
--- 6845,6856 ----
                 goto Leave;
  
              --  If type is scalar type, rewrite as x in t'First .. t'Last.
!             --  The reason we do this is that the bounds may have the wrong
              --  type if they come from the original type definition. Also this
              --  way we get all the processing above for an explicit range.
  
!             --  Don't do this for predicated types, since in this case we want
!             --  to generate the predicate check at the end of the function.
  
              elsif Is_Scalar_Type (Typ) then
                 if No (Predicate_Function (Typ)) then
*************** package body Exp_Ch4 is
*** 6637,6642 ****
--- 6865,6871 ----
                          Make_Attribute_Reference (Loc,
                            Attribute_Name => Name_Last,
                            Prefix         => New_Occurrence_Of (Typ, Loc))));
+ 
                    Analyze_And_Resolve (N, Restyp);
                 end if;
  
*************** package body Exp_Ch4 is
*** 6794,6800 ****
                    if Is_Entity_Name (Lop) then
                       Expr_Entity := Param_Entity (Lop);
  
!                      if not Present (Expr_Entity) then
                          Expr_Entity := Entity (Lop);
                       end if;
                    end if;
--- 7023,7029 ----
                    if Is_Entity_Name (Lop) then
                       Expr_Entity := Param_Entity (Lop);
  
!                      if No (Expr_Entity) then
                          Expr_Entity := Entity (Lop);
                       end if;
                    end if;
*************** package body Exp_Ch4 is
*** 6944,6951 ****
             and then Current_Scope /= PFunc
             and then Nkind (Rop) /= N_Range
           then
              if not In_Range_Check then
!                R_Op := Make_Predicate_Call (Rtyp, Lop, Mem => True);
              else
                 R_Op := New_Occurrence_Of (Standard_True, Loc);
              end if;
--- 7173,7200 ----
             and then Current_Scope /= PFunc
             and then Nkind (Rop) /= N_Range
           then
+             --  First apply the transformation that was skipped above
+ 
+             if Is_Scalar_Type (Rtyp) then
+                Rewrite (Rop,
+                  Make_Range (Loc,
+                    Low_Bound =>
+                      Make_Attribute_Reference (Loc,
+                        Attribute_Name => Name_First,
+                        Prefix         => New_Occurrence_Of (Rtyp, Loc)),
+ 
+                    High_Bound =>
+                      Make_Attribute_Reference (Loc,
+                        Attribute_Name => Name_Last,
+                        Prefix         => New_Occurrence_Of (Rtyp, Loc))));
+ 
+                Analyze_And_Resolve (N, Restyp);
+             end if;
+ 
              if not In_Range_Check then
!                --  Indicate via Static_Mem parameter that this predicate
!                --  evaluation is for a membership test.
!                R_Op := Make_Predicate_Call (Rtyp, Lop, Static_Mem => True);
              else
                 R_Op := New_Occurrence_Of (Standard_True, Loc);
              end if;
*************** package body Exp_Ch4 is
*** 6961,6970 ****
  
              Set_Analyzed (Left_Opnd (N));
              Analyze_And_Resolve (N, Standard_Boolean, Suppress => All_Checks);
- 
-             --  All done, skip attempt at compile time determination of result
- 
-             return;
           end if;
        end Predicate_Check;
     end Expand_N_In;
--- 7210,7215 ----
*************** package body Exp_Ch4 is
*** 7812,7832 ****
        --  build and analyze call, adding conversions if the operation is
        --  inherited.
  
-       function Is_Equality (Subp : Entity_Id;
-                             Typ  : Entity_Id := Empty) return Boolean;
-       --  Determine whether arbitrary Entity_Id denotes a function with the
-       --  right name and profile for an equality op, specifically for the
-       --  base type Typ if Typ is nonempty.
- 
        function Find_Equality (Prims : Elist_Id) return Entity_Id;
        --  Find a primitive equality function within primitive operation list
        --  Prims.
  
-       function User_Defined_Primitive_Equality_Op
-         (Typ : Entity_Id) return Entity_Id;
-       --  Find a user-defined primitive equality function for a given untagged
-       --  record type, ignoring visibility. Return Empty if no such op found.
- 
        function Has_Unconstrained_UU_Component (Typ : Entity_Id) return Boolean;
        --  Determines whether a type has a subcomponent of an unconstrained
        --  Unchecked_Union subtype. Typ is a record type.
--- 8057,8066 ----
*************** package body Exp_Ch4 is
*** 8075,8117 ****
           Analyze_And_Resolve (N, Standard_Boolean, Suppress => All_Checks);
        end Build_Equality_Call;
  
-       -----------------
-       -- Is_Equality --
-       -----------------
- 
-       function Is_Equality (Subp : Entity_Id;
-                             Typ  : Entity_Id := Empty) return Boolean is
-          Formal_1 : Entity_Id;
-          Formal_2 : Entity_Id;
-       begin
-          --  The equality function carries name "=", returns Boolean, and has
-          --  exactly two formal parameters of an identical type.
- 
-          if Ekind (Subp) = E_Function
-            and then Chars (Subp) = Name_Op_Eq
-            and then Base_Type (Etype (Subp)) = Standard_Boolean
-          then
-             Formal_1 := First_Formal (Subp);
-             Formal_2 := Empty;
- 
-             if Present (Formal_1) then
-                Formal_2 := Next_Formal (Formal_1);
-             end if;
- 
-             return
-               Present (Formal_1)
-                 and then Present (Formal_2)
-                 and then No (Next_Formal (Formal_2))
-                 and then Base_Type (Etype (Formal_1)) =
-                          Base_Type (Etype (Formal_2))
-                 and then
-                   (not Present (Typ)
-                     or else Implementation_Base_Type (Etype (Formal_1)) = Typ);
-          end if;
- 
-          return False;
-       end Is_Equality;
- 
        -------------------
        -- Find_Equality --
        -------------------
--- 8309,8314 ----
*************** package body Exp_Ch4 is
*** 8134,8140 ****
  
              Candid := Prim;
              while Present (Candid) loop
!                if Is_Equality (Candid) then
                    return Candid;
                 end if;
  
--- 8331,8337 ----
  
              Candid := Prim;
              while Present (Candid) loop
!                if Is_User_Defined_Equality (Candid) then
                    return Candid;
                 end if;
  
*************** package body Exp_Ch4 is
*** 8173,8215 ****
           return Eq_Prim;
        end Find_Equality;
  
-       ----------------------------------------
-       -- User_Defined_Primitive_Equality_Op --
-       ----------------------------------------
- 
-       function User_Defined_Primitive_Equality_Op
-         (Typ : Entity_Id) return Entity_Id
-       is
-          Enclosing_Scope : constant Entity_Id := Scope (Typ);
-          E : Entity_Id;
-       begin
-          for Private_Entities in Boolean loop
-             if Private_Entities then
-                if Ekind (Enclosing_Scope) /= E_Package then
-                   exit;
-                end if;
-                E := First_Private_Entity (Enclosing_Scope);
- 
-             else
-                E := First_Entity (Enclosing_Scope);
-             end if;
- 
-             while Present (E) loop
-                if Is_Equality (E, Typ) then
-                   return E;
-                end if;
-                Next_Entity (E);
-             end loop;
-          end loop;
- 
-          if Is_Derived_Type (Typ) then
-             return User_Defined_Primitive_Equality_Op
-                      (Implementation_Base_Type (Etype (Typ)));
-          end if;
- 
-          return Empty;
-       end User_Defined_Primitive_Equality_Op;
- 
        ------------------------------------
        -- Has_Unconstrained_UU_Component --
        ------------------------------------
--- 8370,8375 ----
*************** package body Exp_Ch4 is
*** 8353,8366 ****
  
        --  Deal with private types
  
!       Typl := A_Typ;
! 
!       if Ekind (Typl) = E_Private_Type then
!          Typl := Underlying_Type (Typl);
! 
!       elsif Ekind (Typl) = E_Private_Subtype then
!          Typl := Underlying_Type (Base_Type (Typl));
!       end if;
  
        --  It may happen in error situations that the underlying type is not
        --  set. The error will be detected later, here we just defend the
--- 8513,8519 ----
  
        --  Deal with private types
  
!       Typl := Underlying_Type (A_Typ);
  
        --  It may happen in error situations that the underlying type is not
        --  set. The error will be detected later, here we just defend the
*************** package body Exp_Ch4 is
*** 8524,8538 ****
                   (Find_Equality (Primitive_Operations (Typl)));
              end if;
  
-          --  See AI12-0101 (which only removes a legality rule) and then
-          --  AI05-0123 (which then applies in the previously illegal case).
-          --  AI12-0101 is a binding interpretation.
- 
-          elsif Ada_Version >= Ada_2012
-            and then Present (User_Defined_Primitive_Equality_Op (Typl))
-          then
-             Build_Equality_Call (User_Defined_Primitive_Equality_Op (Typl));
- 
           --  Ada 2005 (AI-216): Program_Error is raised when evaluating the
           --  predefined equality operator for a type which has a subcomponent
           --  of an Unchecked_Union type whose nominal subtype is unconstrained.
--- 8677,8682 ----
*************** package body Exp_Ch4 is
*** 9564,9570 ****
           --  avoids anomalies when the replacement is done in an instance and
           --  is epsilon more efficient.
  
!          Set_Entity            (N, Standard_Entity (S_Op_Rem));
           Set_Etype             (N, Typ);
           Set_Do_Division_Check (N, DDC);
           Expand_N_Op_Rem (N);
--- 9708,9714 ----
           --  avoids anomalies when the replacement is done in an instance and
           --  is epsilon more efficient.
  
!          pragma Assert (Entity (N) = Standard_Op_Rem);
           Set_Etype             (N, Typ);
           Set_Do_Division_Check (N, DDC);
           Expand_N_Op_Rem (N);
*************** package body Exp_Ch4 is
*** 10887,10892 ****
--- 11031,11038 ----
           Ensure_Valid (Operand);
        end if;
  
+       Freeze_Before (Operand, Target_Type);
+ 
        --  Apply possible constraint check
  
        Apply_Constraint_Check (Operand, Target_Type, No_Sliding => True);
*************** package body Exp_Ch4 is
*** 11122,11127 ****
--- 11268,11283 ----
           --  actually performed.
  
           else
+             if (not Is_Unchecked_Union
+                      (Implementation_Base_Type (Etype (Prefix (N)))))
+               and then not Is_Predefined_Unit (Get_Source_Unit (N))
+             then
+                Error_Msg_N
+                  ("sorry - unable to generate discriminant check for" &
+                     " reference to variant component &",
+                   Selector_Name (N));
+             end if;
+ 
              Set_Do_Discriminant_Check (N, False);
           end if;
        end if;
*************** package body Exp_Ch4 is
*** 11670,11676 ****
  
           if Is_Fixed_Point_Type (Etype (Expr)) then
              Ityp := Small_Integer_Type_For
!                       (Esize (Base_Type (Etype (Expr))), False);
  
              --  Generate a temporary with the integer type to facilitate in the
              --  C backend the code generation for the unchecked conversion.
--- 11826,11832 ----
  
           if Is_Fixed_Point_Type (Etype (Expr)) then
              Ityp := Small_Integer_Type_For
!                       (Esize (Base_Type (Etype (Expr))), Uns => False);
  
              --  Generate a temporary with the integer type to facilitate in the
              --  C backend the code generation for the unchecked conversion.
*************** package body Exp_Ch4 is
*** 11745,11775 ****
                    declare
                       Stored : constant Elist_Id :=
                                  Stored_Constraint (Operand_Type);
! 
!                      Elmt : Elmt_Id;
  
                       Disc_O : Entity_Id;
                       --  Discriminant of the operand type. Its value in the
                       --  object is captured in a selected component.
  
-                      Disc_S : Entity_Id;
-                      --  Stored discriminant of the operand. If present, it
-                      --  corresponds to a constrained discriminant of the
-                      --  parent type.
- 
                       Disc_T : Entity_Id;
                       --  Discriminant of the target type
  
                    begin
-                      Disc_T := First_Discriminant (Target_Type);
                       Disc_O := First_Discriminant (Operand_Type);
!                      Disc_S := First_Stored_Discriminant (Operand_Type);
! 
!                      if Present (Stored) then
!                         Elmt := First_Elmt (Stored);
!                      else
!                         Elmt := No_Elmt; -- init to avoid warning
!                      end if;
  
                       Cons := New_List;
                       while Present (Disc_T) loop
--- 11901,11924 ----
                    declare
                       Stored : constant Elist_Id :=
                                  Stored_Constraint (Operand_Type);
!                      --  Stored constraints of the operand. If present, they
!                      --  correspond to the discriminants of the parent type.
  
                       Disc_O : Entity_Id;
                       --  Discriminant of the operand type. Its value in the
                       --  object is captured in a selected component.
  
                       Disc_T : Entity_Id;
                       --  Discriminant of the target type
  
+                      Elmt : Elmt_Id;
+ 
                    begin
                       Disc_O := First_Discriminant (Operand_Type);
!                      Disc_T := First_Discriminant (Target_Type);
!                      Elmt   := (if Present (Stored)
!                                  then First_Elmt (Stored)
!                                  else No_Elmt);
  
                       Cons := New_List;
                       while Present (Disc_T) loop
*************** package body Exp_Ch4 is
*** 11784,11791 ****
                                   Make_Identifier (Loc, Chars (Disc_O))));
                             Next_Discriminant (Disc_O);
  
!                         elsif Present (Disc_S) then
                             Append_To (Cons, New_Copy_Tree (Node (Elmt)));
                             Next_Elmt (Elmt);
                          end if;
  
--- 11933,11943 ----
                                   Make_Identifier (Loc, Chars (Disc_O))));
                             Next_Discriminant (Disc_O);
  
!                         elsif Present (Elmt) then
                             Append_To (Cons, New_Copy_Tree (Node (Elmt)));
+                         end if;
+ 
+                         if Present (Elmt) then
                             Next_Elmt (Elmt);
                          end if;
  
*************** package body Exp_Ch4 is
*** 12044,12050 ****
              declare
                 Expr_Id : constant Entity_Id := Make_Temporary (Loc, 'T', Conv);
                 Int_Typ : constant Entity_Id :=
!                            Small_Integer_Type_For (RM_Size (Btyp), False);
  
              begin
                 --  Generate a temporary with the integer value. Required in the
--- 12196,12202 ----
              declare
                 Expr_Id : constant Entity_Id := Make_Temporary (Loc, 'T', Conv);
                 Int_Typ : constant Entity_Id :=
!                  Small_Integer_Type_For (RM_Size (Btyp), Uns => False);
  
              begin
                 --  Generate a temporary with the integer value. Required in the
*************** package body Exp_Ch4 is
*** 12756,12773 ****
           if not Has_Compatible_Representation (Target_Type, Operand_Type)
             and then not Conversion_OK (N)
           then
  
!             --  Convert: x(y) to x'val (ytyp'pos (y))
  
!             Rewrite (N,
!               Make_Attribute_Reference (Loc,
!                 Prefix         => New_Occurrence_Of (Target_Type, Loc),
!                 Attribute_Name => Name_Val,
!                 Expressions    => New_List (
!                   Make_Attribute_Reference (Loc,
!                     Prefix         => New_Occurrence_Of (Operand_Type, Loc),
!                     Attribute_Name => Name_Pos,
!                     Expressions    => New_List (Operand)))));
  
              Analyze_And_Resolve (N, Target_Type);
           end if;
--- 12908,12942 ----
           if not Has_Compatible_Representation (Target_Type, Operand_Type)
             and then not Conversion_OK (N)
           then
+             if Optimization_Level > 0
+               and then Is_Boolean_Type (Target_Type)
+             then
+                --  Convert x(y) to (if y then x'(True) else x'(False)).
+                --  Use literals, instead of indexing x'val, to enable
+                --  further optimizations in the middle-end.
  
!                Rewrite (N,
!                  Make_If_Expression (Loc,
!                    Expressions => New_List (
!                      Operand,
!                      Convert_To (Target_Type,
!                                  New_Occurrence_Of (Standard_True, Loc)),
!                      Convert_To (Target_Type,
!                                  New_Occurrence_Of (Standard_False, Loc)))));
  
!             else
!                --  Convert: x(y) to x'val (ytyp'pos (y))
! 
!                Rewrite (N,
!                  Make_Attribute_Reference (Loc,
!                    Prefix         => New_Occurrence_Of (Target_Type, Loc),
!                    Attribute_Name => Name_Val,
!                    Expressions    => New_List (
!                      Make_Attribute_Reference (Loc,
!                        Prefix         => New_Occurrence_Of (Operand_Type, Loc),
!                        Attribute_Name => Name_Pos,
!                        Expressions    => New_List (Operand)))));
!             end if;
  
              Analyze_And_Resolve (N, Target_Type);
           end if;
*************** package body Exp_Ch4 is
*** 13042,13056 ****
              end if;
  
              Check :=
!               Expand_Composite_Equality (Nod, Etype (C),
!                Lhs =>
!                  Make_Selected_Component (Loc,
!                    Prefix        => New_Lhs,
!                    Selector_Name => New_Occurrence_Of (C, Loc)),
!                Rhs =>
!                  Make_Selected_Component (Loc,
!                    Prefix        => New_Rhs,
!                    Selector_Name => New_Occurrence_Of (C, Loc)));
  
              --  If some (sub)component is an unchecked_union, the whole
              --  operation will raise program error.
--- 13211,13226 ----
              end if;
  
              Check :=
!               Expand_Composite_Equality
!                 (Outer_Type => Typ, Nod => Nod, Comp_Type => Etype (C),
!                  Lhs =>
!                    Make_Selected_Component (Loc,
!                      Prefix        => New_Lhs,
!                      Selector_Name => New_Occurrence_Of (C, Loc)),
!                  Rhs =>
!                    Make_Selected_Component (Loc,
!                      Prefix        => New_Rhs,
!                      Selector_Name => New_Occurrence_Of (C, Loc)));
  
              --  If some (sub)component is an unchecked_union, the whole
              --  operation will raise program error.
*************** package body Exp_Ch4 is
*** 13114,13136 ****
           if (Is_Entity_Name (Alt) and then Is_Type (Entity (Alt)))
             or else Nkind (Alt) = N_Range
           then
!             Cond :=
!               Make_In (Sloc (Alt),
!                 Left_Opnd  => L,
!                 Right_Opnd => R);
!          else
!             Cond :=
!               Make_Op_Eq (Sloc (Alt),
!                 Left_Opnd  => L,
!                 Right_Opnd => R);
! 
!             if Is_Record_Or_Limited_Type (Etype (Alt)) then
! 
!                --  We reset the Entity in order to use the primitive equality
!                --  of the type, as per RM 4.5.2 (28.1/4).
  
!                Set_Entity (Cond, Empty);
!             end if;
           end if;
  
           return Cond;
--- 13284,13294 ----
           if (Is_Entity_Name (Alt) and then Is_Type (Entity (Alt)))
             or else Nkind (Alt) = N_Range
           then
!             Cond := Make_In (Sloc (Alt), Left_Opnd  => L, Right_Opnd => R);
  
!          else
!             Cond := Make_Op_Eq (Sloc (Alt), Left_Opnd  => L, Right_Opnd => R);
!             Resolve_Membership_Equality (Cond, Etype (Alt));
           end if;
  
           return Cond;
*************** package body Exp_Ch4 is
*** 13420,13425 ****
--- 13578,13607 ----
        end if;
     end Fixup_Universal_Fixed_Operation;
  
+    ----------------------------
+    -- Get_First_Index_Bounds --
+    ----------------------------
+ 
+    procedure Get_First_Index_Bounds (T : Entity_Id; Lo, Hi : out Uint) is
+       Typ  : Entity_Id;
+ 
+    begin
+       pragma Assert (Is_Array_Type (T));
+ 
+       --  This follows Sem_Eval.Compile_Time_Known_Bounds
+ 
+       if Ekind (T) = E_String_Literal_Subtype then
+          Lo := Expr_Value (String_Literal_Low_Bound (T));
+          Hi := Lo + String_Literal_Length (T) - 1;
+ 
+       else
+          Typ := Underlying_Type (Etype (First_Index (T)));
+ 
+          Lo := Expr_Value (Type_Low_Bound (Typ));
+          Hi := Expr_Value (Type_High_Bound (Typ));
+       end if;
+    end Get_First_Index_Bounds;
+ 
     ------------------------
     -- Get_Size_For_Range --
     ------------------------
*************** package body Exp_Ch4 is
*** 14187,14192 ****
--- 14369,14375 ----
  
     procedure Narrow_Large_Operation (N : Node_Id) is
        Kind   : constant Node_Kind := Nkind (N);
+       Otyp   : constant Entity_Id := Etype (N);
        In_Rng : constant Boolean   := Kind = N_In;
        Binary : constant Boolean   := Kind in N_Binary_Op or else In_Rng;
        Compar : constant Boolean   := Kind in N_Op_Compare or else In_Rng;
*************** package body Exp_Ch4 is
*** 14341,14348 ****
           --  Analyze it with the comparison type and checks suppressed since
           --  the conversions of the operands cannot overflow.
  
!          Analyze_And_Resolve
!            (N, Etype (Original_Node (N)), Suppress => Overflow_Check);
  
        else
           --  Analyze it with the narrower type and checks suppressed, but only
--- 14524,14530 ----
           --  Analyze it with the comparison type and checks suppressed since
           --  the conversions of the operands cannot overflow.
  
!          Analyze_And_Resolve (N, Otyp, Suppress => Overflow_Check);
  
        else
           --  Analyze it with the narrower type and checks suppressed, but only
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch4.ads gcc-13.1.0/gcc/ada/exp_ch4.ads
*** gcc-12.2.0/gcc/ada/exp_ch4.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch4.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch4 is
*** 97,103 ****
     --  individually to yield the required Boolean result. Loc is the
     --  location for the generated nodes. Typ is the type of the record, and
     --  Lhs, Rhs are the record expressions to be compared, these
!    --  expressions need not to be analyzed but have to be side-effect free.
     --  Nod provides the Sloc value for generated code.
  
     procedure Expand_Set_Membership (N : Node_Id);
--- 97,103 ----
     --  individually to yield the required Boolean result. Loc is the
     --  location for the generated nodes. Typ is the type of the record, and
     --  Lhs, Rhs are the record expressions to be compared, these
!    --  expressions need not be analyzed but have to be side-effect free.
     --  Nod provides the Sloc value for generated code.
  
     procedure Expand_Set_Membership (N : Node_Id);
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch5.adb gcc-13.1.0/gcc/ada/exp_ch5.adb
*** gcc-12.2.0/gcc/ada/exp_ch5.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch5.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
*************** with Tbuild;         use Tbuild;
*** 65,70 ****
--- 66,72 ----
  with Ttypes;         use Ttypes;
  with Uintp;          use Uintp;
  with Validsw;        use Validsw;
+ with Warnsw;         use Warnsw;
  
  package body Exp_Ch5 is
  
*************** package body Exp_Ch5 is
*** 292,299 ****
        return
          Nkind (Rhs) = N_Type_Conversion
            and then not Has_Compatible_Representation
!                          (Target_Type  => Etype (Rhs),
!                           Operand_Type => Etype (Expression (Rhs)));
     end Change_Of_Representation;
  
     ------------------------------
--- 294,301 ----
        return
          Nkind (Rhs) = N_Type_Conversion
            and then not Has_Compatible_Representation
!                          (Target_Typ  => Etype (Rhs),
!                           Operand_Typ => Etype (Expression (Rhs)));
     end Change_Of_Representation;
  
     ------------------------------
*************** package body Exp_Ch5 is
*** 1594,1641 ****
        Rev    : Boolean) return Node_Id
     is
  
        L : constant Node_Id := Name (N);
        R : constant Node_Id := Expression (N);
        --  Left- and right-hand sides of the assignment statement
  
        Slices : constant Boolean :=
          Nkind (L) = N_Slice or else Nkind (R) = N_Slice;
!       L_Prefix_Comp : constant Boolean :=
!         --  True if the left-hand side is a slice of a component or slice
!         Nkind (L) = N_Slice
!           and then Nkind (Prefix (L)) in
!                      N_Selected_Component | N_Indexed_Component | N_Slice;
!       R_Prefix_Comp : constant Boolean :=
!         --  Likewise for the right-hand side
!         Nkind (R) = N_Slice
!           and then Nkind (Prefix (R)) in
!                      N_Selected_Component | N_Indexed_Component | N_Slice;
  
     begin
        --  Determine whether Copy_Bitfield or Fast_Copy_Bitfield is appropriate
        --  (will work, and will be more efficient than component-by-component
        --  copy). Copy_Bitfield doesn't work for reversed storage orders. It is
!       --  efficient for slices of bit-packed arrays. Copy_Bitfield can read and
!       --  write bits that are not part of the objects being copied, so we don't
!       --  want to use it if there are volatile or independent components. If
!       --  the Prefix of the slice is a component or slice, then it might be a
!       --  part of an object with some other volatile or independent components,
!       --  so we disable the optimization in that case as well. We could
!       --  complicate this code by actually looking for such volatile and
!       --  independent components.
  
        if Is_Bit_Packed_Array (L_Type)
          and then Is_Bit_Packed_Array (R_Type)
          and then not Reverse_Storage_Order (L_Type)
          and then not Reverse_Storage_Order (R_Type)
-         and then Ndim = 1
          and then Slices
!         and then not Has_Volatile_Component (L_Type)
!         and then not Has_Volatile_Component (R_Type)
!         and then not Has_Independent_Components (L_Type)
!         and then not Has_Independent_Components (R_Type)
!         and then not L_Prefix_Comp
!         and then not R_Prefix_Comp
        then
           --  Here if Copy_Bitfield can work (except for the Rev test below).
           --  Determine whether to call Fast_Copy_Bitfield instead. If we
--- 1596,1702 ----
        Rev    : Boolean) return Node_Id
     is
  
+       function Volatile_Or_Independent
+         (Exp : Node_Id; Typ : Entity_Id) return Boolean;
+       --  Exp is an expression of type Typ, or if there is no expression
+       --  involved, Exp is Empty. True if there are any volatile or independent
+       --  objects that should disable the optimization. We check the object
+       --  itself, all subcomponents, and if Exp is a slice of a component or
+       --  slice, we check the prefix and its type.
+       --
+       --  We disable the optimization when there are relevant volatile or
+       --  independent objects, because Copy_Bitfield can read and write bits
+       --  that are not part of the objects being copied.
+ 
+       -----------------------------
+       -- Volatile_Or_Independent --
+       -----------------------------
+ 
+       function Volatile_Or_Independent
+         (Exp : Node_Id; Typ : Entity_Id) return Boolean
+       is
+       begin
+          --  Initially, Exp is the left- or right-hand side. In recursive
+          --  calls, Exp is Empty if we're just checking a component type, and
+          --  Exp is the prefix if we're checking the prefix of a slice.
+ 
+          if Present (Exp)
+            and then (Is_Volatile_Object_Ref (Exp)
+                        or else Is_Independent_Object (Exp))
+          then
+             return True;
+          end if;
+ 
+          if Has_Volatile_Components (Typ)
+            or else Has_Independent_Components (Typ)
+          then
+             return True;
+          end if;
+ 
+          if Is_Array_Type (Typ) then
+             if Volatile_Or_Independent (Empty, Component_Type (Typ)) then
+                return True;
+             end if;
+ 
+          elsif Is_Record_Type (Typ) then
+             declare
+                Comp : Entity_Id := First_Component (Typ);
+             begin
+                while Present (Comp) loop
+                   if Volatile_Or_Independent (Empty, Comp) then
+                      return True;
+                   end if;
+ 
+                   Next_Component (Comp);
+                end loop;
+             end;
+          end if;
+ 
+          if Nkind (Exp) = N_Slice
+            and then Nkind (Prefix (Exp)) in
+                       N_Selected_Component | N_Indexed_Component | N_Slice
+          then
+             if Volatile_Or_Independent (Prefix (Exp), Etype (Prefix (Exp)))
+             then
+                return True;
+             end if;
+          end if;
+ 
+          return False;
+       end Volatile_Or_Independent;
+ 
+       function Slice_Of_Packed_Component (L : Node_Id) return Boolean is
+         (Nkind (L) = N_Slice
+          and then Nkind (Prefix (L)) = N_Indexed_Component
+          and then Is_Bit_Packed_Array (Etype (Prefix (Prefix (L)))));
+       --  L is the left-hand side Name. Returns True if L is a slice of a
+       --  component of a bit-packed array. The optimization is disabled in
+       --  that case, because Expand_Assign_Array_Bitfield_Fast cannot
+       --  currently handle that case correctly.
+ 
        L : constant Node_Id := Name (N);
        R : constant Node_Id := Expression (N);
        --  Left- and right-hand sides of the assignment statement
  
        Slices : constant Boolean :=
          Nkind (L) = N_Slice or else Nkind (R) = N_Slice;
! 
!    --  Start of processing for Expand_Assign_Array_Loop_Or_Bitfield
  
     begin
        --  Determine whether Copy_Bitfield or Fast_Copy_Bitfield is appropriate
        --  (will work, and will be more efficient than component-by-component
        --  copy). Copy_Bitfield doesn't work for reversed storage orders. It is
!       --  efficient for slices of bit-packed arrays.
  
        if Is_Bit_Packed_Array (L_Type)
          and then Is_Bit_Packed_Array (R_Type)
          and then not Reverse_Storage_Order (L_Type)
          and then not Reverse_Storage_Order (R_Type)
          and then Slices
!         and then not Slice_Of_Packed_Component (L)
!         and then not Volatile_Or_Independent (L, L_Type)
!         and then not Volatile_Or_Independent (R, R_Type)
        then
           --  Here if Copy_Bitfield can work (except for the Rev test below).
           --  Determine whether to call Fast_Copy_Bitfield instead. If we
*************** package body Exp_Ch5 is
*** 1848,1874 ****
              CI : constant List_Id := Component_Items (CL);
              VP : constant Node_Id := Variant_Part (CL);
  
!             Constrained_Typ : Entity_Id;
!             Alts            : List_Id;
!             DC              : Node_Id;
!             DCH             : List_Id;
!             Expr            : Node_Id;
!             Result          : List_Id;
!             V               : Node_Id;
  
           begin
-             --  Try to find a constrained type to extract discriminant values
-             --  from, so that the case statement built below gets an
-             --  opportunity to be folded by Expand_N_Case_Statement.
- 
-             if U_U or else Is_Constrained (Etype (Rhs)) then
-                Constrained_Typ := Etype (Rhs);
-             elsif Is_Constrained (Etype (Expression (N))) then
-                Constrained_Typ := Etype (Expression (N));
-             else
-                Constrained_Typ := Empty;
-             end if;
- 
              Result := Make_Field_Assigns (CI);
  
              if Present (VP) then
--- 1909,1922 ----
              CI : constant List_Id := Component_Items (CL);
              VP : constant Node_Id := Variant_Part (CL);
  
!             Alts   : List_Id;
!             DC     : Node_Id;
!             DCH    : List_Id;
!             Expr   : Node_Id;
!             Result : List_Id;
!             V      : Node_Id;
  
           begin
              Result := Make_Field_Assigns (CI);
  
              if Present (VP) then
*************** package body Exp_Ch5 is
*** 1890,1902 ****
                    Next_Non_Pragma (V);
                 end loop;
  
!                if Present (Constrained_Typ) then
                    Expr :=
                      New_Copy (Get_Discriminant_Value (
                        Entity (Name (VP)),
!                       Constrained_Typ,
!                       Discriminant_Constraint (Constrained_Typ)));
                 else
                    Expr :=
                      Make_Selected_Component (Loc,
                        Prefix        => Duplicate_Subexpr (Rhs),
--- 1938,1975 ----
                    Next_Non_Pragma (V);
                 end loop;
  
!                --  Try to find a constrained type or a derived type to extract
!                --  discriminant values from, so that the case statement built
!                --  below can be folded by Expand_N_Case_Statement.
! 
!                if U_U or else Is_Constrained (Etype (Rhs)) then
                    Expr :=
                      New_Copy (Get_Discriminant_Value (
                        Entity (Name (VP)),
!                       Etype (Rhs),
!                       Discriminant_Constraint (Etype (Rhs))));
! 
!                elsif Is_Constrained (Etype (Expression (N))) then
!                   Expr :=
!                     New_Copy (Get_Discriminant_Value (
!                       Entity (Name (VP)),
!                       Etype (Expression (N)),
!                       Discriminant_Constraint (Etype (Expression (N)))));
! 
!                elsif Is_Derived_Type (Etype (Rhs))
!                  and then Present (Stored_Constraint (Etype (Rhs)))
!                then
!                   Expr :=
!                     New_Copy (Get_Discriminant_Value (
!                       Corresponding_Record_Component (Entity (Name (VP))),
!                       Etype (Etype (Rhs)),
!                       Stored_Constraint (Etype (Rhs))));
! 
                 else
+                   Expr := Empty;
+                end if;
+ 
+                if No (Expr) or else not Compile_Time_Known_Value (Expr) then
                    Expr :=
                      Make_Selected_Component (Loc,
                        Prefix        => Duplicate_Subexpr (Rhs),
*************** package body Exp_Ch5 is
*** 2089,2095 ****
              --  from the Rhs by selected component because they are invisible
              --  in the type of the right-hand side.
  
!             if Stored_Constraint (R_Typ) /= No_Elist then
                 declare
                    Assign    : Node_Id;
                    Discr_Val : Elmt_Id;
--- 2162,2168 ----
              --  from the Rhs by selected component because they are invisible
              --  in the type of the right-hand side.
  
!             if Present (Stored_Constraint (R_Typ)) then
                 declare
                    Assign    : Node_Id;
                    Discr_Val : Elmt_Id;
*************** package body Exp_Ch5 is
*** 2234,2242 ****
               Expression => New_RHS));
  
        --  The left-hand side is not a direct name, but is side-effect free.
!       --  Capture its value in a temporary to avoid multiple evaluations.
  
!       elsif Side_Effect_Free (LHS) then
           Ent := Make_Temporary (Loc, 'T');
           Replace_Target_Name (New_RHS);
  
--- 2307,2321 ----
               Expression => New_RHS));
  
        --  The left-hand side is not a direct name, but is side-effect free.
!       --  Capture its value in a temporary to avoid generating a procedure.
!       --  We don't do this optimization if the target object's type may need
!       --  finalization actions, because we don't want extra finalizations to
!       --  be done for the temp object, and instead we use the more general
!       --  procedure-based approach below.
  
!       elsif Side_Effect_Free (LHS)
!         and then not Needs_Finalization (Etype (LHS))
!       then
           Ent := Make_Temporary (Loc, 'T');
           Replace_Target_Name (New_RHS);
  
*************** package body Exp_Ch5 is
*** 2374,2384 ****
  
        if Ada_Version >= Ada_2005 then
           declare
!             Call           : Node_Id;
!             Conctyp        : Entity_Id;
!             Ent            : Entity_Id;
!             Subprg         : Entity_Id;
!             RT_Subprg_Name : Node_Id;
  
           begin
              --  Handle chains of renamings
--- 2453,2462 ----
  
        if Ada_Version >= Ada_2005 then
           declare
!             Call      : Node_Id;
!             Ent       : Entity_Id;
!             Prottyp   : Entity_Id;
!             RT_Subprg : RE_Id;
  
           begin
              --  Handle chains of renamings
*************** package body Exp_Ch5 is
*** 2398,2432 ****
  
              if Is_Expanded_Priority_Attribute (Ent) then
  
!                --  Look for the enclosing concurrent type
  
!                Conctyp := Current_Scope;
!                while not Is_Concurrent_Type (Conctyp) loop
!                   Conctyp := Scope (Conctyp);
                 end loop;
  
!                pragma Assert (Is_Protected_Type (Conctyp));
! 
!                --  Generate the first actual of the call
! 
!                Subprg := Current_Scope;
!                while not Present (Protected_Body_Subprogram (Subprg)) loop
!                   Subprg := Scope (Subprg);
!                end loop;
  
                 --  Select the appropriate run-time call
  
!                if Number_Entries (Conctyp) = 0 then
!                   RT_Subprg_Name :=
!                     New_Occurrence_Of (RTE (RE_Set_Ceiling), Loc);
                 else
!                   RT_Subprg_Name :=
!                     New_Occurrence_Of (RTE (RO_PE_Set_Ceiling), Loc);
                 end if;
  
                 Call :=
                   Make_Procedure_Call_Statement (Loc,
!                    Name => RT_Subprg_Name,
                     Parameter_Associations => New_List (
                       New_Copy_Tree (First (Parameter_Associations (Ent))),
                       Relocate_Node (Expression (N))));
--- 2476,2502 ----
  
              if Is_Expanded_Priority_Attribute (Ent) then
  
!                --  Look for the enclosing protected type
  
!                Prottyp := Current_Scope;
!                while not Is_Protected_Type (Prottyp) loop
!                   Prottyp := Scope (Prottyp);
                 end loop;
  
!                pragma Assert (Is_Protected_Type (Prottyp));
  
                 --  Select the appropriate run-time call
  
!                if Has_Entries (Prottyp) then
!                   RT_Subprg := RO_PE_Set_Ceiling;
                 else
!                   RT_Subprg := RE_Set_Ceiling;
                 end if;
  
                 Call :=
                   Make_Procedure_Call_Statement (Loc,
!                    Name                   =>
!                      New_Occurrence_Of (RTE (RT_Subprg), Loc),
                     Parameter_Associations => New_List (
                       New_Copy_Tree (First (Parameter_Associations (Ent))),
                       Relocate_Node (Expression (N))));
*************** package body Exp_Ch5 is
*** 3563,3570 ****
                          --  is ok here.
                          --
                          pragma Assert
!                           (not Is_Non_Empty_List
!                                  (Component_Associations (Pattern)));
  
                          declare
                             Agg_Length : constant Node_Id :=
--- 3633,3639 ----
                          --  is ok here.
                          --
                          pragma Assert
!                           (Is_Empty_List (Component_Associations (Pattern)));
  
                          declare
                             Agg_Length : constant Node_Id :=
*************** package body Exp_Ch5 is
*** 3872,3878 ****
     --  Start of processing for Expand_N_Case_Statement
  
     begin
!       if Extensions_Allowed and then not Is_Discrete_Type (Etype (Expr)) then
           Rewrite (N, Expand_General_Case_Statement);
           Analyze (N);
           return;
--- 3941,3949 ----
     --  Start of processing for Expand_N_Case_Statement
  
     begin
!       if Core_Extensions_Allowed
!         and then not Is_Discrete_Type (Etype (Expr))
!       then
           Rewrite (N, Expand_General_Case_Statement);
           Analyze (N);
           return;
*************** package body Exp_Ch5 is
*** 4513,4587 ****
        --  Loop through elsif parts, dealing with constant conditions and
        --  possible condition actions that are present.
  
!       if Present (Elsif_Parts (N)) then
!          E := First (Elsif_Parts (N));
!          while Present (E) loop
  
!             --  Do not consider controlled objects found in an if statement
!             --  which actually models an if expression because their early
!             --  finalization will affect the result of the expression.
  
!             if not From_Conditional_Expression (N) then
!                Process_Statements_For_Controlled_Objects (E);
!             end if;
  
!             Adjust_Condition (Condition (E));
  
!             --  If there are condition actions, then rewrite the if statement
!             --  as indicated above. We also do the same rewrite for a True or
!             --  False condition. The further processing of this constant
!             --  condition is then done by the recursive call to expand the
!             --  newly created if statement
  
!             if Present (Condition_Actions (E))
!               or else Compile_Time_Known_Value (Condition (E))
!             then
!                New_If :=
!                  Make_If_Statement (Sloc (E),
!                    Condition       => Condition (E),
!                    Then_Statements => Then_Statements (E),
!                    Elsif_Parts     => No_List,
!                    Else_Statements => Else_Statements (N));
  
!                --  Elsif parts for new if come from remaining elsif's of parent
  
!                while Present (Next (E)) loop
!                   if No (Elsif_Parts (New_If)) then
!                      Set_Elsif_Parts (New_If, New_List);
!                   end if;
  
!                   Append (Remove_Next (E), Elsif_Parts (New_If));
!                end loop;
  
!                Set_Else_Statements (N, New_List (New_If));
  
!                Insert_List_Before (New_If, Condition_Actions (E));
  
!                Remove (E);
  
!                if Is_Empty_List (Elsif_Parts (N)) then
!                   Set_Elsif_Parts (N, No_List);
!                end if;
  
!                Analyze (New_If);
  
!                --  Note this is not an implicit if statement, since it is part
!                --  of an explicit if statement in the source (or of an implicit
!                --  if statement that has already been tested). We set the flag
!                --  after calling Analyze to avoid generating extra warnings
!                --  specific to pure if statements, however (see
!                --  Sem_Ch5.Analyze_If_Statement).
  
!                Preserve_Comes_From_Source (New_If, N);
!                return;
  
!             --  No special processing for that elsif part, move to next
  
!             else
!                Next (E);
!             end if;
!          end loop;
!       end if;
  
        --  Some more optimizations applicable if we still have an IF statement
  
--- 4584,4655 ----
        --  Loop through elsif parts, dealing with constant conditions and
        --  possible condition actions that are present.
  
!       E := First (Elsif_Parts (N));
!       while Present (E) loop
  
!          --  Do not consider controlled objects found in an if statement which
!          --  actually models an if expression because their early finalization
!          --  will affect the result of the expression.
  
!          if not From_Conditional_Expression (N) then
!             Process_Statements_For_Controlled_Objects (E);
!          end if;
  
!          Adjust_Condition (Condition (E));
  
!          --  If there are condition actions, then rewrite the if statement as
!          --  indicated above. We also do the same rewrite for a True or False
!          --  condition. The further processing of this constant condition is
!          --  then done by the recursive call to expand the newly created if
!          --  statement
  
!          if Present (Condition_Actions (E))
!            or else Compile_Time_Known_Value (Condition (E))
!          then
!             New_If :=
!               Make_If_Statement (Sloc (E),
!                 Condition       => Condition (E),
!                 Then_Statements => Then_Statements (E),
!                 Elsif_Parts     => No_List,
!                 Else_Statements => Else_Statements (N));
  
!             --  Elsif parts for new if come from remaining elsif's of parent
  
!             while Present (Next (E)) loop
!                if No (Elsif_Parts (New_If)) then
!                   Set_Elsif_Parts (New_If, New_List);
!                end if;
  
!                Append (Remove_Next (E), Elsif_Parts (New_If));
!             end loop;
  
!             Set_Else_Statements (N, New_List (New_If));
  
!             Insert_List_Before (New_If, Condition_Actions (E));
  
!             Remove (E);
  
!             if Is_Empty_List (Elsif_Parts (N)) then
!                Set_Elsif_Parts (N, No_List);
!             end if;
  
!             Analyze (New_If);
  
!             --  Note this is not an implicit if statement, since it is part of
!             --  an explicit if statement in the source (or of an implicit if
!             --  statement that has already been tested). We set the flag after
!             --  calling Analyze to avoid generating extra warnings specific to
!             --  pure if statements, however (see Sem_Ch5.Analyze_If_Statement).
  
!             Preserve_Comes_From_Source (New_If, N);
!             return;
  
!          --  No special processing for that elsif part, move to next
  
!          else
!             Next (E);
!          end if;
!       end loop;
  
        --  Some more optimizations applicable if we still have an IF statement
  
*************** package body Exp_Ch5 is
*** 4910,4916 ****
  
     --  In the optimized case, we make use of these:
  
!    --     procedure Next (Position : in out Cursor); -- instead of Iter.Next
  
     --     function Pseudo_Reference
     --       (Container : aliased Vector'Class) return Reference_Control_Type;
--- 4978,4985 ----
  
     --  In the optimized case, we make use of these:
  
!    --     procedure _Next (Position : in out Cursor); -- instead of Iter.Next
!    --        (or _Previous for reverse loops)
  
     --     function Pseudo_Reference
     --       (Container : aliased Vector'Class) return Reference_Control_Type;
*************** package body Exp_Ch5 is
*** 4925,4930 ****
--- 4994,5004 ----
     --  pollute the namespace for clients. The compiler has no trouble breaking
     --  privacy to call things in the private part of an instance.)
  
+    --  Note that Next and Previous are renamed as _Next and _Previous with
+    --  leading underscores. Leading underscores are illegal in Ada, but we
+    --  allow them in the run-time library. This allows us to avoid polluting
+    --  the user-visible namespaces.
+ 
     --  Source:
  
     --      for X of My_Vector loop
*************** package body Exp_Ch5 is
*** 4975,4981 ****
     --              X.Count := X.Count + 1;
     --              ...
     --
!    --              Next (Cur); -- or Prev
     --              --  This is instead of "Cur := Next (Iter, Cur);"
     --          end;
     --          --  No finalization here
--- 5049,5055 ----
     --              X.Count := X.Count + 1;
     --              ...
     --
!    --              _Next (Cur); -- or _Previous
     --              --  This is instead of "Cur := Next (Iter, Cur);"
     --          end;
     --          --  No finalization here
*************** package body Exp_Ch5 is
*** 5001,5013 ****
        Stats    : List_Id     := Statements (N);
        --  Maybe wrapped in a conditional if a filter is present
  
!       Cursor    : Entity_Id;
!       Decl      : Node_Id;
!       Iter_Type : Entity_Id;
!       Iterator  : Entity_Id;
!       Name_Init : Name_Id;
!       Name_Step : Name_Id;
!       New_Loop  : Node_Id;
  
        Fast_Element_Access_Op : Entity_Id := Empty;
        Fast_Step_Op           : Entity_Id := Empty;
--- 5075,5088 ----
        Stats    : List_Id     := Statements (N);
        --  Maybe wrapped in a conditional if a filter is present
  
!       Cursor         : Entity_Id;
!       Decl           : Node_Id;
!       Iter_Type      : Entity_Id;
!       Iterator       : Entity_Id;
!       Name_Init      : Name_Id;
!       Name_Step      : Name_Id;
!       Name_Fast_Step : Name_Id;
!       New_Loop       : Node_Id;
  
        Fast_Element_Access_Op : Entity_Id := Empty;
        Fast_Step_Op           : Entity_Id := Empty;
*************** package body Exp_Ch5 is
*** 5035,5043 ****
--- 5110,5120 ----
        if Reverse_Present (I_Spec) then
           Name_Init := Name_Last;
           Name_Step := Name_Previous;
+          Name_Fast_Step := Name_uPrevious;
        else
           Name_Init := Name_First;
           Name_Step := Name_Next;
+          Name_Fast_Step := Name_uNext;
        end if;
  
        --  The type of the iterator is the return type of the Iterate function
*************** package body Exp_Ch5 is
*** 5175,5207 ****
  
              Iter_Pack := Scope (Root_Type (Etype (Iter_Type)));
  
!             --  Find declarations needed for "for ... of" optimization
              --  These declarations come from GNAT sources or sources
              --  derived from them. User code may include additional
              --  overloadings with similar names, and we need to perforn
              --  some reasonable resolution to find the needed primitives.
!             --  It is unclear whether this mechanism is fragile if a user
!             --  makes arbitrary changes to the private part of a package
!             --  that supports iterators.
  
              Ent := First_Entity (Pack);
              while Present (Ent) loop
                 if Chars (Ent) = Name_Get_Element_Access
                   and then Present (First_Formal (Ent))
                   and then Chars (First_Formal (Ent)) = Name_Position
                   and then No (Next_Formal (First_Formal (Ent)))
                 then
                    Fast_Element_Access_Op := Ent;
  
!                elsif Chars (Ent) = Name_Step
!                  and then Ekind (Ent) = E_Procedure
!                then
                    Fast_Step_Op := Ent;
  
                 elsif Chars (Ent) = Name_Reference_Control_Type then
                    Reference_Control_Type := Ent;
  
                 elsif Chars (Ent) = Name_Pseudo_Reference then
                    Pseudo_Reference := Ent;
                 end if;
  
--- 5252,5292 ----
  
              Iter_Pack := Scope (Root_Type (Etype (Iter_Type)));
  
!             --  Find declarations needed for "for ... of" optimization.
              --  These declarations come from GNAT sources or sources
              --  derived from them. User code may include additional
              --  overloadings with similar names, and we need to perforn
              --  some reasonable resolution to find the needed primitives.
!             --  Note that we use _Next or _Previous to avoid picking up
!             --  some arbitrary user-defined Next or Previous.
  
              Ent := First_Entity (Pack);
              while Present (Ent) loop
+                --  Get_Element_Access function with one parameter called
+                --  Position.
+ 
                 if Chars (Ent) = Name_Get_Element_Access
+                  and then Ekind (Ent) = E_Function
                   and then Present (First_Formal (Ent))
                   and then Chars (First_Formal (Ent)) = Name_Position
                   and then No (Next_Formal (First_Formal (Ent)))
                 then
+                   pragma Assert (No (Fast_Element_Access_Op));
                    Fast_Element_Access_Op := Ent;
  
!                --  Next or Prev procedure with one parameter called
!                --  Position.
! 
!                elsif Chars (Ent) = Name_Fast_Step then
!                   pragma Assert (No (Fast_Step_Op));
                    Fast_Step_Op := Ent;
  
                 elsif Chars (Ent) = Name_Reference_Control_Type then
+                   pragma Assert (No (Reference_Control_Type));
                    Reference_Control_Type := Ent;
  
                 elsif Chars (Ent) = Name_Pseudo_Reference then
+                   pragma Assert (No (Pseudo_Reference));
                    Pseudo_Reference := Ent;
                 end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch5.ads gcc-13.1.0/gcc/ada/exp_ch5.ads
*** gcc-12.2.0/gcc/ada/exp_ch5.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch5.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch6.adb gcc-13.1.0/gcc/ada/exp_ch6.adb
*** gcc-12.2.0/gcc/ada/exp_ch6.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch6.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,32 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Atree;          use Atree;
  with Aspects;        use Aspects;
  with Checks;         use Checks;
- with Contracts;      use Contracts;
  with Debug;          use Debug;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
--- 23,32 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Atree;          use Atree;
  with Aspects;        use Aspects;
  with Checks;         use Checks;
  with Debug;          use Debug;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
*************** with Validsw;        use Validsw;
*** 83,89 ****
  
  package body Exp_Ch6 is
  
!    --  Suffix for BIP formals
  
     BIP_Alloc_Suffix               : constant String := "BIPalloc";
     BIP_Storage_Pool_Suffix        : constant String := "BIPstoragepool";
--- 83,130 ----
  
  package body Exp_Ch6 is
  
!    --------------------------------
!    -- Function return mechanisms --
!    --------------------------------
! 
!    --  This is a summary of the various function return mechanisms implemented
!    --  in GNAT for Ada 2005 and later versions of the language. In the below
!    --  table, the first column must be read as an if expression: if the result
!    --  type of the function is limited, then the return mechanism is and ...;
!    --  elsif the result type is indefinite or large definite, then ...; elsif
!    --  ...; else ... The different mechanisms are implemented either in the
!    --  front end, or in the back end, or partly in both ends, depending on the
!    --  result type.
! 
!    --    Result type    |  Return mechanism    |    Front end    |   Back end
!    --    --------------------------------------------------------------------
! 
!    --     Limited           Build In Place              All
! 
!    --     Indefinite/       Secondary Stack          Needs Fin.       Others
!    --     Large definite
! 
!    --     Needs Fin.        Secondary Stack             All
!    --     (BERS False)
! 
!    --     Needs Fin.        Invisible Parameter         All            All
!    --     (BERS True)                                 (return)        (call)
! 
!    --     By Reference      Invisible Parameter                        All
! 
!    --     Others            Primary stack/                             All
!    --                       Registers
! 
!    --    Needs Fin.: type needs finalization [RM 7.6(9.1/2-9.6/2)]
!    --    BERS: Opt.Back_End_Return_Slot setting
! 
!    --  The table is valid for all calls except for those dispatching on result;
!    --  the latter calls are considered as returning a class-wide type and thus
!    --  always return on the secondary stack, with the help of a small wrapper
!    --  function (thunk) if the original result type is not itself returned on
!    --  the secondary stack as per the above table.
! 
!    --  Suffixes for Build-In-Place extra formals
  
     BIP_Alloc_Suffix               : constant String := "BIPalloc";
     BIP_Storage_Pool_Suffix        : constant String := "BIPstoragepool";
*************** package body Exp_Ch6 is
*** 151,170 ****
     --  the activation Chain. Note: Master_Actual can be Empty, but only if
     --  there are no tasks.
  
-    procedure Apply_CW_Accessibility_Check (Exp : Node_Id; Func : Entity_Id);
-    --  Ada 2005 (AI95-344): If the result type is class-wide, insert a check
-    --  that the level of the return expression's underlying type is not deeper
-    --  than the level of the master enclosing the function. Always generate the
-    --  check when the type of the return expression is class-wide, when it's a
-    --  type conversion, or when it's a formal parameter. Otherwise suppress the
-    --  check in the case where the return expression has a specific type whose
-    --  level is known not to be statically deeper than the result type of the
-    --  function.
- 
     function Caller_Known_Size
       (Func_Call   : Node_Id;
        Result_Subt : Entity_Id) return Boolean;
!    --  True if result subtype is definite, or has a size that does not require
     --  secondary stack usage (i.e. no variant part or components whose type
     --  depends on discriminants). In particular, untagged types with only
     --  access discriminants do not require secondary stack use. Note we must
--- 192,201 ----
     --  the activation Chain. Note: Master_Actual can be Empty, but only if
     --  there are no tasks.
  
     function Caller_Known_Size
       (Func_Call   : Node_Id;
        Result_Subt : Entity_Id) return Boolean;
!    --  True if result subtype is definite or has a size that does not require
     --  secondary stack usage (i.e. no variant part or components whose type
     --  depends on discriminants). In particular, untagged types with only
     --  access discriminants do not require secondary stack use. Note we must
*************** package body Exp_Ch6 is
*** 174,180 ****
       (Subp_Call : Node_Id;
        Subp_Id   : Entity_Id) return Boolean;
     --  Given a subprogram call to the given subprogram return True if the
!    --  names of BIP extra actual and formal parameters match.
  
     function Check_Number_Of_Actuals
       (Subp_Call : Node_Id;
--- 205,212 ----
       (Subp_Call : Node_Id;
        Subp_Id   : Entity_Id) return Boolean;
     --  Given a subprogram call to the given subprogram return True if the
!    --  names of BIP extra actual and formal parameters match, and the number
!    --  of actuals (including extra actuals) matches the number of formals.
  
     function Check_Number_Of_Actuals
       (Subp_Call : Node_Id;
*************** package body Exp_Ch6 is
*** 247,256 ****
     procedure Expand_Call_Helper (N : Node_Id; Post_Call : out List_Id);
     --  Does the main work of Expand_Call. Post_Call is as for Expand_Actuals.
  
!    procedure Expand_Ctrl_Function_Call (N : Node_Id);
     --  N is a function call which returns a controlled object. Transform the
     --  call into a temporary which retrieves the returned object from the
!    --  secondary stack using 'reference.
  
     procedure Expand_Non_Function_Return (N : Node_Id);
     --  Expand a simple return statement found in a procedure body, entry body,
--- 279,288 ----
     procedure Expand_Call_Helper (N : Node_Id; Post_Call : out List_Id);
     --  Does the main work of Expand_Call. Post_Call is as for Expand_Actuals.
  
!    procedure Expand_Ctrl_Function_Call (N : Node_Id; Use_Sec_Stack : Boolean);
     --  N is a function call which returns a controlled object. Transform the
     --  call into a temporary which retrieves the returned object from the
!    --  primary or secondary stack (Use_Sec_Stack says which) using 'reference.
  
     procedure Expand_Non_Function_Return (N : Node_Id);
     --  Expand a simple return statement found in a procedure body, entry body,
*************** package body Exp_Ch6 is
*** 274,288 ****
     --  Expand simple return from function. In the case where we are returning
     --  from a function body this is called by Expand_N_Simple_Return_Statement.
  
-    function Has_BIP_Extra_Formal
-      (E    : Entity_Id;
-       Kind : BIP_Formal_Kind) return Boolean;
-    --  Given a frozen subprogram, subprogram type, entry or entry family,
-    --  return True if E has the BIP extra formal associated with Kind. It must
-    --  be invoked with a frozen entity or a subprogram type of a dispatching
-    --  call since we can only rely on the availability of the extra formals
-    --  on these entities.
- 
     procedure Insert_Post_Call_Actions (N : Node_Id; Post_Call : List_Id);
     --  Insert the Post_Call list previously produced by routine Expand_Actuals
     --  or Expand_Call_Helper into the tree.
--- 306,311 ----
*************** package body Exp_Ch6 is
*** 336,342 ****
  
        --  If no return object is provided, then pass null
  
!       if not Present (Return_Object) then
           Obj_Address := Make_Null (Loc);
           Set_Parent (Obj_Address, Function_Call);
  
--- 359,365 ----
  
        --  If no return object is provided, then pass null
  
!       if No (Return_Object) then
           Obj_Address := Make_Null (Loc);
           Set_Parent (Obj_Address, Function_Call);
  
*************** package body Exp_Ch6 is
*** 630,636 ****
  
        --  Create the actual which is a pointer to the current activation chain
  
!       if No (Chain) then
           Chain_Actual :=
             Make_Attribute_Reference (Loc,
               Prefix         => Make_Identifier (Loc, Name_uChain),
--- 653,662 ----
  
        --  Create the actual which is a pointer to the current activation chain
  
!       if Restriction_Active (No_Task_Hierarchy) then
!          Chain_Actual := Make_Null (Loc);
! 
!       elsif No (Chain) then
           Chain_Actual :=
             Make_Attribute_Reference (Loc,
               Prefix         => Make_Identifier (Loc, Name_uChain),
*************** package body Exp_Ch6 is
*** 661,667 ****
--- 687,697 ----
        Loc : constant Source_Ptr := Sloc (Exp);
  
     begin
+        --  CodePeer does not do anything useful on Ada.Tags.Type_Specific_Data
+        --  components.
+ 
        if Ada_Version >= Ada_2005
+         and then not CodePeer_Mode
          and then Tagged_Type_Expansion
          and then not Scope_Suppress.Suppress (Accessibility_Check)
          and then
*************** package body Exp_Ch6 is
*** 744,763 ****
                     Attribute_Name => Name_Tag);
              end if;
  
!             --  CodePeer does not do anything useful with
!             --  Ada.Tags.Type_Specific_Data components.
  
!             if not CodePeer_Mode then
!                Insert_Action (Exp,
!                  Make_Raise_Program_Error (Loc,
!                    Condition =>
!                      Make_Op_Gt (Loc,
!                        Left_Opnd  => Build_Get_Access_Level (Loc, Tag_Node),
!                        Right_Opnd =>
!                          Make_Integer_Literal (Loc,
!                            Scope_Depth (Enclosing_Dynamic_Scope (Func)))),
!                    Reason    => PE_Accessibility_Check_Failed));
!             end if;
           end;
        end if;
     end Apply_CW_Accessibility_Check;
--- 774,791 ----
                     Attribute_Name => Name_Tag);
              end if;
  
!             --  Suppress junk access chacks on RE_Tag_Ptr
  
!             Insert_Action (Exp,
!               Make_Raise_Program_Error (Loc,
!                 Condition =>
!                   Make_Op_Gt (Loc,
!                     Left_Opnd  => Build_Get_Access_Level (Loc, Tag_Node),
!                     Right_Opnd =>
!                       Make_Integer_Literal (Loc,
!                         Scope_Depth (Enclosing_Dynamic_Scope (Func)))),
!                 Reason    => PE_Accessibility_Check_Failed),
!               Suppress => Access_Check);
           end;
        end if;
     end Apply_CW_Accessibility_Check;
*************** package body Exp_Ch6 is
*** 850,860 ****
        --  The return type in the function declaration may have been a limited
        --  view, and the extra formals for the function were not generated at
        --  that point. At the point of call the full view must be available and
!       --  the extra formals can be created.
  
        if No (Extra_Formal) then
           Create_Extra_Formals (Func);
           Extra_Formal := Extra_Formals (Func);
        end if;
  
        --  We search for a formal with a matching suffix. We can't search
--- 878,889 ----
        --  The return type in the function declaration may have been a limited
        --  view, and the extra formals for the function were not generated at
        --  that point. At the point of call the full view must be available and
!       --  the extra formals can be created and Returns_By_Ref computed.
  
        if No (Extra_Formal) then
           Create_Extra_Formals (Func);
           Extra_Formal := Extra_Formals (Func);
+          Compute_Returns_By_Ref (Func);
        end if;
  
        --  We search for a formal with a matching suffix. We can't search
*************** package body Exp_Ch6 is
*** 1055,1065 ****
       (Func_Call   : Node_Id;
        Result_Subt : Entity_Id) return Boolean
     is
     begin
!       return
!           (Is_Definite_Subtype (Underlying_Type (Result_Subt))
!             and then No (Controlling_Argument (Func_Call)))
!         or else not Requires_Transient_Scope (Underlying_Type (Result_Subt));
     end Caller_Known_Size;
  
     -----------------------
--- 1084,1095 ----
       (Func_Call   : Node_Id;
        Result_Subt : Entity_Id) return Boolean
     is
+       Utyp : constant Entity_Id := Underlying_Type (Result_Subt);
+ 
     begin
!       return not Needs_Secondary_Stack (Utyp)
!         and then not (Is_Tagged_Type (Utyp)
!                        and then Present (Controlling_Argument (Func_Call)));
     end Caller_Known_Size;
  
     -----------------------
*************** package body Exp_Ch6 is
*** 1078,1083 ****
--- 1108,1130 ----
                                          | N_Function_Call
                                          | N_Procedure_Call_Statement);
  
+       --  In CodePeer_Mode, the tree for `'Elab_Spec` procedures will be
+       --  malformed because GNAT does not perform the usual expansion that
+       --  results in the importation of external elaboration procedure symbols.
+       --  This is expected: the CodePeer backend has special handling for this
+       --  malformed tree.
+       --  Thus, we do not need to check the tree (and in fact can't, because
+       --  it's malformed).
+ 
+       if CodePeer_Mode
+         and then Nkind (Name (Subp_Call)) = N_Attribute_Reference
+         and then Attribute_Name (Name (Subp_Call)) in Name_Elab_Spec
+                                                     | Name_Elab_Body
+                                                     | Name_Elab_Subp_Body
+       then
+          return True;
+       end if;
+ 
        Formal := First_Formal_With_Extras (Subp_Id);
        Actual := First_Actual (Subp_Call);
  
*************** package body Exp_Ch6 is
*** 1576,1583 ****
              Var := Make_Var (Expression (Actual));
  
              Crep := not Has_Compatible_Representation
!                           (Target_Type  => F_Typ,
!                            Operand_Type => Etype (Expression (Actual)));
  
           else
              V_Typ := Etype (Actual);
--- 1623,1630 ----
              Var := Make_Var (Expression (Actual));
  
              Crep := not Has_Compatible_Representation
!                           (Target_Typ  => F_Typ,
!                            Operand_Typ => Etype (Expression (Actual)));
  
           else
              V_Typ := Etype (Actual);
*************** package body Exp_Ch6 is
*** 1585,1590 ****
--- 1632,1658 ----
              Crep  := False;
           end if;
  
+          --  If the actual denotes a variable which captures the value of an
+          --  object for validation purposes, we propagate the link with this
+          --  object to the new variable made from the actual just above.
+ 
+          if Ekind (Formal) /= E_In_Parameter
+            and then Is_Validation_Variable_Reference (Actual)
+          then
+             declare
+                Ref : constant Node_Id := Unqual_Conv (Actual);
+ 
+             begin
+                if Is_Entity_Name (Ref) then
+                   Set_Validated_Object (Var, Validated_Object (Entity (Ref)));
+ 
+                else
+                   pragma Assert (False);
+                   null;
+                end if;
+             end;
+          end if;
+ 
           --  Setup initialization for case of in out parameter, or an out
           --  parameter where the formal is an unconstrained array (in the
           --  latter case, we have to pass in an object with bounds).
*************** package body Exp_Ch6 is
*** 1764,1770 ****
                 Expr := New_Occurrence_Of (Temp, Loc);
              end if;
  
!             Rewrite (Actual, New_Occurrence_Of (Temp, Loc));
              Analyze (Actual);
  
              --  If the actual is a conversion of a packed reference, it may
--- 1832,1838 ----
                 Expr := New_Occurrence_Of (Temp, Loc);
              end if;
  
!             Rewrite (Actual, New_Occurrence_Of (Temp, Sloc (Actual)));
              Analyze (Actual);
  
              --  If the actual is a conversion of a packed reference, it may
*************** package body Exp_Ch6 is
*** 1852,1857 ****
--- 1920,1932 ----
                        Name       => Lhs,
                        Expression => Expr));
                 end if;
+ 
+                --  Add a copy-back to reflect any potential changes in value
+                --  back into the original object, if any.
+ 
+                if Is_Validation_Variable_Reference (Lhs) then
+                   Add_Validation_Call_By_Copy_Code (Lhs);
+                end if;
              end;
           end if;
        end Add_Call_By_Copy_Code;
*************** package body Exp_Ch6 is
*** 1998,2007 ****
        --------------------------------------
  
        procedure Add_Validation_Call_By_Copy_Code (Act : Node_Id) is
           Expr    : Node_Id;
           Obj     : Node_Id;
           Obj_Typ : Entity_Id;
-          Var     : constant Node_Id := Unqual_Conv (Act);
           Var_Id  : Entity_Id;
  
        begin
--- 2073,2083 ----
        --------------------------------------
  
        procedure Add_Validation_Call_By_Copy_Code (Act : Node_Id) is
+          Var : constant Node_Id := Unqual_Conv (Act);
+ 
           Expr    : Node_Id;
           Obj     : Node_Id;
           Obj_Typ : Entity_Id;
           Var_Id  : Entity_Id;
  
        begin
*************** package body Exp_Ch6 is
*** 2351,2376 ****
                 end if;
              end if;
  
-             --  The actual denotes a variable which captures the value of an
-             --  object for validation purposes. Add a copy-back to reflect any
-             --  potential changes in value back into the original object.
- 
-             --    Var : ... := Object;
-             --    if not Var'Valid then  --  validity check
-             --    Call (Var);            --  modify var
-             --    Object := Var;         --  update Object
- 
-             --  This case is given higher priority because the subsequent check
-             --  for type conversion may add an extra copy of the variable and
-             --  prevent proper value propagation back in the original object.
- 
-             if Is_Validation_Variable_Reference (Actual) then
-                Add_Validation_Call_By_Copy_Code (Actual);
- 
              --  If argument is a type conversion for a type that is passed by
              --  copy, then we must pass the parameter by copy.
  
!             elsif Nkind (Actual) = N_Type_Conversion
                and then
                  (Is_Elementary_Type (E_Formal)
                    or else Is_Bit_Packed_Array (Etype (Formal))
--- 2427,2436 ----
                 end if;
              end if;
  
              --  If argument is a type conversion for a type that is passed by
              --  copy, then we must pass the parameter by copy.
  
!             if Nkind (Actual) = N_Type_Conversion
                and then
                  (Is_Elementary_Type (E_Formal)
                    or else Is_Bit_Packed_Array (Etype (Formal))
*************** package body Exp_Ch6 is
*** 2379,2386 ****
                    --  Also pass by copy if change of representation
  
                    or else not Has_Compatible_Representation
!                                 (Target_Type  => Etype (Formal),
!                                  Operand_Type => Etype (Expression (Actual))))
              then
                 Add_Call_By_Copy_Code;
  
--- 2439,2446 ----
                    --  Also pass by copy if change of representation
  
                    or else not Has_Compatible_Representation
!                                 (Target_Typ  => Etype (Formal),
!                                  Operand_Typ => Etype (Expression (Actual))))
              then
                 Add_Call_By_Copy_Code;
  
*************** package body Exp_Ch6 is
*** 2454,2459 ****
--- 2514,2531 ----
                        and then not In_Subrange_Of (E_Actual, E_Formal)))
              then
                 Add_Call_By_Copy_Code;
+ 
+             --  The actual denotes a variable which captures the value of an
+             --  object for validation purposes. Add a copy-back to reflect any
+             --  potential changes in value back into the original object.
+ 
+             --    Var : ... := Object;
+             --    if not Var'Valid then  --  validity check
+             --    Call (Var);            --  modify var
+             --    Object := Var;         --  update Object
+ 
+             elsif Is_Validation_Variable_Reference (Actual) then
+                Add_Validation_Call_By_Copy_Code (Actual);
              end if;
  
              --  RM 3.2.4 (23/3): A predicate is checked on in-out and out
*************** package body Exp_Ch6 is
*** 2686,2696 ****
                                  | N_Function_Call
                                  | N_Procedure_Call_Statement);
  
!       --  Check that this is not the call in the body of the wrapper
  
        if Must_Rewrite_Indirect_Call
          and then (not Is_Overloadable (Current_Scope)
!              or else not Is_Access_Subprogram_Wrapper (Current_Scope))
        then
           declare
              Loc      : constant Source_Ptr := Sloc (N);
--- 2758,2773 ----
                                  | N_Function_Call
                                  | N_Procedure_Call_Statement);
  
!       --  Check that this is not the call in the body of the access
!       --  subprogram wrapper or the postconditions wrapper.
  
        if Must_Rewrite_Indirect_Call
          and then (not Is_Overloadable (Current_Scope)
!              or else not (Is_Access_Subprogram_Wrapper (Current_Scope)
!                            or else
!                              (Chars (Current_Scope) = Name_uWrapped_Statements
!                                and then Is_Access_Subprogram_Wrapper
!                                           (Scope (Current_Scope)))))
        then
           declare
              Loc      : constant Source_Ptr := Sloc (N);
*************** package body Exp_Ch6 is
*** 3176,3182 ****
              loop
                 Aspect_Bearer := Nearest_Ancestor (Aspect_Bearer);
  
!                if not Present (Aspect_Bearer) then
                    return False;
                 end if;
  
--- 3253,3259 ----
              loop
                 Aspect_Bearer := Nearest_Ancestor (Aspect_Bearer);
  
!                if No (Aspect_Bearer) then
                    return False;
                 end if;
  
*************** package body Exp_Ch6 is
*** 3266,3273 ****
             or else No (Aspect)
  
             --  Do not fold if multiple applicable predicate aspects
!            or else Present (Find_Aspect (Subt, Aspect_Static_Predicate))
!            or else Present (Find_Aspect (Subt, Aspect_Predicate))
             or else Augments_Other_Dynamic_Predicate (Aspect)
             or else CodePeer_Mode
           then
--- 3343,3350 ----
             or else No (Aspect)
  
             --  Do not fold if multiple applicable predicate aspects
!            or else Has_Aspect (Subt, Aspect_Static_Predicate)
!            or else Has_Aspect (Subt, Aspect_Predicate)
             or else Augments_Other_Dynamic_Predicate (Aspect)
             or else CodePeer_Mode
           then
*************** package body Exp_Ch6 is
*** 3295,3323 ****
        ------------------------------
  
        procedure Check_Subprogram_Variant is
           Variant_Prag : constant Node_Id :=
             Get_Pragma (Current_Scope, Pragma_Subprogram_Variant);
  
           Variant_Proc : Entity_Id;
  
        begin
           if Present (Variant_Prag) and then Is_Checked (Variant_Prag) then
  
!             --  Analysis of the pragma rewrites its argument with a reference
!             --  to the internally generated procedure.
  
!             Variant_Proc :=
!               Entity
!                 (Expression
!                    (First
!                       (Pragma_Argument_Associations (Variant_Prag))));
  
!             Insert_Action (Call_Node,
                Make_Procedure_Call_Statement (Loc,
                   Name                   =>
                     New_Occurrence_Of (Variant_Proc, Loc),
                   Parameter_Associations =>
!                    New_Copy_List (Parameter_Associations (Call_Node))));
           end if;
        end Check_Subprogram_Variant;
  
--- 3372,3463 ----
        ------------------------------
  
        procedure Check_Subprogram_Variant is
+ 
+          function Duplicate_Params_Without_Extra_Actuals
+            (Call_Node : Node_Id) return List_Id;
+          --  Duplicate actual parameters of Call_Node into New_Call without
+          --  extra actuals.
+ 
+          --------------------------------------------
+          -- Duplicate_Params_Without_Extra_Actuals --
+          --------------------------------------------
+ 
+          function Duplicate_Params_Without_Extra_Actuals
+            (Call_Node : Node_Id) return List_Id
+          is
+             Proc_Id : constant Entity_Id := Entity (Name (Call_Node));
+             Actuals : constant List_Id := Parameter_Associations (Call_Node);
+             NL      : List_Id;
+             Actual  : Node_Or_Entity_Id;
+             Formal  : Entity_Id;
+ 
+          begin
+             if Actuals = No_List then
+                return No_List;
+ 
+             else
+                NL     := New_List;
+                Actual := First (Actuals);
+                Formal := First_Formal (Proc_Id);
+ 
+                while Present (Formal)
+                  and then Formal /= Extra_Formals (Proc_Id)
+                loop
+                   Append (New_Copy (Actual), NL);
+                   Next (Actual);
+ 
+                   Next_Formal (Formal);
+                end loop;
+ 
+                return NL;
+             end if;
+          end Duplicate_Params_Without_Extra_Actuals;
+ 
+          --  Local variables
+ 
           Variant_Prag : constant Node_Id :=
             Get_Pragma (Current_Scope, Pragma_Subprogram_Variant);
  
+          New_Call     : Node_Id;
+          Pragma_Arg1  : Node_Id;
           Variant_Proc : Entity_Id;
  
        begin
           if Present (Variant_Prag) and then Is_Checked (Variant_Prag) then
  
!             Pragma_Arg1 :=
!               Expression (First (Pragma_Argument_Associations (Variant_Prag)));
  
!             --  If pragma parameter is still an aggregate, it comes from a
!             --  structural variant, which is not expanded and ignored for
!             --  run-time execution.
  
!             if Nkind (Pragma_Arg1) = N_Aggregate then
!                pragma Assert
!                  (Chars
!                     (First
!                       (Choices
!                          (First (Component_Associations (Pragma_Arg1))))) =
!                   Name_Structural);
!                return;
!             end if;
! 
!             --  Otherwise, analysis of the pragma rewrites its argument with a
!             --  reference to the internally generated procedure.
! 
!             Variant_Proc := Entity (Pragma_Arg1);
! 
!             New_Call :=
                Make_Procedure_Call_Statement (Loc,
                   Name                   =>
                     New_Occurrence_Of (Variant_Proc, Loc),
                   Parameter_Associations =>
!                    Duplicate_Params_Without_Extra_Actuals (Call_Node));
! 
!             Insert_Action (Call_Node, New_Call);
! 
!             pragma Assert (Etype (New_Call) /= Any_Type
!               or else Serious_Errors_Detected > 0);
           end if;
        end Check_Subprogram_Variant;
  
*************** package body Exp_Ch6 is
*** 3618,3623 ****
--- 3758,3769 ----
           end if;
        end if;
  
+       --  Ensure that the called subprogram has all its formals
+ 
+       if not Is_Frozen (Subp) then
+          Create_Extra_Formals (Subp);
+       end if;
+ 
        --  Ada 2005 (AI-345): We have a procedure call as a triggering
        --  alternative in an asynchronous select or as an entry call in
        --  a conditional or timed select. Check whether the procedure call
*************** package body Exp_Ch6 is
*** 3756,3762 ****
          and then Thunk_Entity (Current_Scope) = Subp
          and then Present (Extra_Formals (Subp))
        then
!          pragma Assert (Present (Extra_Formals (Current_Scope)));
  
           declare
              Target_Formal : Entity_Id;
--- 3902,3908 ----
          and then Thunk_Entity (Current_Scope) = Subp
          and then Present (Extra_Formals (Subp))
        then
!          pragma Assert (Extra_Formals_Match_OK (Current_Scope, Subp));
  
           declare
              Target_Formal : Entity_Id;
*************** package body Exp_Ch6 is
*** 3778,3783 ****
--- 3924,3936 ----
                 Add_Actual_Parameter (Remove_Head (Extra_Actuals));
              end loop;
  
+             --  Mark the call as processed build-in-place call; required
+             --  to avoid adding the extra formals twice.
+ 
+             if Nkind (Call_Node) = N_Function_Call then
+                Set_Is_Expanded_Build_In_Place_Call (Call_Node);
+             end if;
+ 
              Expand_Actuals (Call_Node, Subp, Post_Call);
              pragma Assert (Is_Empty_List (Post_Call));
              pragma Assert (Check_Number_Of_Actuals (Call_Node, Subp));
*************** package body Exp_Ch6 is
*** 3932,3938 ****
              --  First verify the actual is internal
  
              elsif not Comes_From_Source (Prev)
!               and then Original_Node (Prev) = Prev
  
                --  Next check that the actual is a constant
  
--- 4085,4091 ----
              --  First verify the actual is internal
  
              elsif not Comes_From_Source (Prev)
!               and then not Is_Rewrite_Substitution (Prev)
  
                --  Next check that the actual is a constant
  
*************** package body Exp_Ch6 is
*** 4475,4490 ****
  
           Set_Entity (Name (Call_Node), Parent_Subp);
  
-          --  Move this check to sem???
- 
-          if Is_Abstract_Subprogram (Parent_Subp)
-            and then not In_Instance
-          then
-             Error_Msg_NE
-               ("cannot call abstract subprogram &!",
-                Name (Call_Node), Parent_Subp);
-          end if;
- 
           --  Inspect all formals of derived subprogram Subp. Compare parameter
           --  types with the parent subprogram and check whether an actual may
           --  need a type conversion to the corresponding formal of the parent
--- 4628,4633 ----
*************** package body Exp_Ch6 is
*** 4566,4573 ****
                    --  warning, and do the change of representation.
  
                    elsif not Has_Compatible_Representation
!                               (Target_Type  => Formal_Typ,
!                                Operand_Type => Parent_Typ)
                    then
                       Error_Msg_N
                         ("??change of representation required", Actual);
--- 4709,4716 ----
                    --  warning, and do the change of representation.
  
                    elsif not Has_Compatible_Representation
!                               (Target_Typ  => Formal_Typ,
!                                Operand_Typ => Parent_Typ)
                    then
                       Error_Msg_N
                         ("??change of representation required", Actual);
*************** package body Exp_Ch6 is
*** 4824,4834 ****
                    then
                       Must_Inline := not In_Extended_Main_Source_Unit (Subp);
  
!                   --  Inline calls to _postconditions when generating C code
  
                    elsif Modify_Tree_For_C
                      and then In_Same_Extended_Unit (Sloc (Bod), Loc)
!                     and then Chars (Name (Call_Node)) = Name_uPostconditions
                    then
                       Must_Inline := True;
                    end if;
--- 4967,4978 ----
                    then
                       Must_Inline := not In_Extended_Main_Source_Unit (Subp);
  
!                   --  Inline calls to _Wrapped_Statements when generating C
  
                    elsif Modify_Tree_For_C
                      and then In_Same_Extended_Unit (Sloc (Bod), Loc)
!                     and then Chars (Name (Call_Node))
!                                = Name_uWrapped_Statements
                    then
                       Must_Inline := True;
                    end if;
*************** package body Exp_Ch6 is
*** 4909,4916 ****
        --  the return type is limited, then the context is initialization and
        --  different processing applies. If the call is to a protected function,
        --  the expansion above will call Expand_Call recursively. Otherwise the
!       --  function call is transformed into a temporary which obtains the
!       --  result from the secondary stack.
  
        if Needs_Finalization (Etype (Subp)) then
           if not Is_Build_In_Place_Function_Call (Call_Node)
--- 5053,5060 ----
        --  the return type is limited, then the context is initialization and
        --  different processing applies. If the call is to a protected function,
        --  the expansion above will call Expand_Call recursively. Otherwise the
!       --  function call is transformed into a reference to the result that has
!       --  been built either on the primary or the secondary stack.
  
        if Needs_Finalization (Etype (Subp)) then
           if not Is_Build_In_Place_Function_Call (Call_Node)
*************** package body Exp_Ch6 is
*** 4919,4925 ****
                 or else
                   not Is_Concurrent_Record_Type (Etype (First_Formal (Subp))))
           then
!             Expand_Ctrl_Function_Call (Call_Node);
  
           --  Build-in-place function calls which appear in anonymous contexts
           --  need a transient scope to ensure the proper finalization of the
--- 5063,5070 ----
                 or else
                   not Is_Concurrent_Record_Type (Etype (First_Formal (Subp))))
           then
!             Expand_Ctrl_Function_Call
!               (Call_Node, Needs_Secondary_Stack (Etype (Subp)));
  
           --  Build-in-place function calls which appear in anonymous contexts
           --  need a transient scope to ensure the proper finalization of the
*************** package body Exp_Ch6 is
*** 4937,4946 ****
             and then
               (Ekind (Current_Scope) /= E_Loop
                 or else Nkind (Parent (Call_Node)) /= N_Function_Call
!                or else not Is_Build_In_Place_Function_Call
!                              (Parent (Call_Node)))
           then
!             Establish_Transient_Scope (Call_Node, Manage_Sec_Stack => True);
           end if;
        end if;
     end Expand_Call_Helper;
--- 5082,5092 ----
             and then
               (Ekind (Current_Scope) /= E_Loop
                 or else Nkind (Parent (Call_Node)) /= N_Function_Call
!                or else not
!                  Is_Build_In_Place_Function_Call (Parent (Call_Node)))
           then
!             Establish_Transient_Scope
!               (Call_Node, Needs_Secondary_Stack (Etype (Subp)));
           end if;
        end if;
     end Expand_Call_Helper;
*************** package body Exp_Ch6 is
*** 4949,4955 ****
     -- Expand_Ctrl_Function_Call --
     -------------------------------
  
!    procedure Expand_Ctrl_Function_Call (N : Node_Id) is
        function Is_Element_Reference (N : Node_Id) return Boolean;
        --  Determine whether node N denotes a reference to an Ada 2012 container
        --  element.
--- 5095,5104 ----
     -- Expand_Ctrl_Function_Call --
     -------------------------------
  
!    procedure Expand_Ctrl_Function_Call (N : Node_Id; Use_Sec_Stack : Boolean)
!    is
!       Par : constant Node_Id := Parent (N);
! 
        function Is_Element_Reference (N : Node_Id) return Boolean;
        --  Determine whether node N denotes a reference to an Ada 2012 container
        --  element.
*************** package body Exp_Ch6 is
*** 4974,4985 ****
     --  Start of processing for Expand_Ctrl_Function_Call
  
     begin
!       --  Optimization, if the returned value (which is on the sec-stack) is
!       --  returned again, no need to copy/readjust/finalize, we can just pass
!       --  the value thru (see Expand_N_Simple_Return_Statement), and thus no
!       --  attachment is needed.
  
!       if Nkind (Parent (N)) = N_Simple_Return_Statement then
           return;
        end if;
  
--- 5123,5143 ----
     --  Start of processing for Expand_Ctrl_Function_Call
  
     begin
!       --  Optimization: if the returned value is returned again, then no need
!       --  to copy/readjust/finalize, we can just pass the value through (see
!       --  Expand_N_Simple_Return_Statement), and thus no attachment is needed.
  
!       if Nkind (Par) = N_Simple_Return_Statement then
!          return;
!       end if;
! 
!       --  Another optimization: if the returned value is used to initialize an
!       --  object, then no need to copy/readjust/finalize, we can initialize it
!       --  in place. However, if the call returns on the secondary stack, then
!       --  we need the expansion because we'll be renaming the temporary as the
!       --  (permanent) object.
! 
!       if Nkind (Par) = N_Object_Declaration and then not Use_Sec_Stack then
           return;
        end if;
  
*************** package body Exp_Ch6 is
*** 4988,4998 ****
  
        Set_Analyzed (N);
  
!       --  A function which returns a controlled object uses the secondary
!       --  stack. Rewrite the call into a temporary which obtains the result of
!       --  the function using 'reference.
  
!       Remove_Side_Effects (N);
  
        --  The side effect removal of the function call produced a temporary.
        --  When the context is a case expression, if expression, or expression
--- 5146,5156 ----
  
        Set_Analyzed (N);
  
!       --  Apply the transformation, unless it was already applied manually
  
!       if Nkind (Par) /= N_Reference then
!          Remove_Side_Effects (N);
!       end if;
  
        --  The side effect removal of the function call produced a temporary.
        --  When the context is a case expression, if expression, or expression
*************** package body Exp_Ch6 is
*** 5061,5108 ****
     --  (in which case default initial values might need to be set)).
  
     procedure Expand_N_Extended_Return_Statement (N : Node_Id) is
!       Loc : constant Source_Ptr := Sloc (N);
! 
!       function Build_Heap_Or_Pool_Allocator
!         (Temp_Id    : Entity_Id;
!          Temp_Typ   : Entity_Id;
!          Func_Id    : Entity_Id;
!          Ret_Typ    : Entity_Id;
!          Alloc_Expr : Node_Id) return Node_Id;
!       --  Create the statements necessary to allocate a return object on the
!       --  heap or user-defined storage pool. The object may need finalization
!       --  actions depending on the return type.
!       --
!       --    * Controlled case
!       --
!       --       if BIPfinalizationmaster = null then
!       --          Temp_Id := <Alloc_Expr>;
!       --       else
!       --          declare
!       --             type Ptr_Typ is access Ret_Typ;
!       --             for Ptr_Typ'Storage_Pool use
!       --                   Base_Pool (BIPfinalizationmaster.all).all;
!       --             Local : Ptr_Typ;
!       --
!       --          begin
!       --             procedure Allocate (...) is
!       --             begin
!       --                System.Storage_Pools.Subpools.Allocate_Any (...);
!       --             end Allocate;
!       --
!       --             Local := <Alloc_Expr>;
!       --             Temp_Id := Temp_Typ (Local);
!       --          end;
!       --       end if;
!       --
!       --    * Non-controlled case
!       --
!       --       Temp_Id := <Alloc_Expr>;
!       --
!       --  Temp_Id is the temporary which is used to reference the internally
!       --  created object in all allocation forms. Temp_Typ is the type of the
!       --  temporary. Func_Id is the enclosing function. Ret_Typ is the return
!       --  type of Func_Id. Alloc_Expr is the actual allocator.
  
        function Move_Activation_Chain (Func_Id : Entity_Id) return Node_Id;
        --  Construct a call to System.Tasking.Stages.Move_Activation_Chain
--- 5219,5233 ----
     --  (in which case default initial values might need to be set)).
  
     procedure Expand_N_Extended_Return_Statement (N : Node_Id) is
!       Loc          : constant Source_Ptr := Sloc (N);
!       Func_Id      : constant Entity_Id :=
!                        Return_Applies_To (Return_Statement_Entity (N));
!       Is_BIP_Func  : constant Boolean   :=
!                        Is_Build_In_Place_Function (Func_Id);
!       Ret_Obj_Id   : constant Entity_Id :=
!                        First_Entity (Return_Statement_Entity (N));
!       Ret_Obj_Decl : constant Node_Id   := Parent (Ret_Obj_Id);
!       Ret_Typ      : constant Entity_Id := Etype (Func_Id);
  
        function Move_Activation_Chain (Func_Id : Entity_Id) return Node_Id;
        --  Construct a call to System.Tasking.Stages.Move_Activation_Chain
*************** package body Exp_Ch6 is
*** 5114,5286 ****
        --  Func_Id is the entity of the function where the extended return
        --  statement appears.
  
-       ----------------------------------
-       -- Build_Heap_Or_Pool_Allocator --
-       ----------------------------------
- 
-       function Build_Heap_Or_Pool_Allocator
-         (Temp_Id    : Entity_Id;
-          Temp_Typ   : Entity_Id;
-          Func_Id    : Entity_Id;
-          Ret_Typ    : Entity_Id;
-          Alloc_Expr : Node_Id) return Node_Id
-       is
-       begin
-          pragma Assert (Is_Build_In_Place_Function (Func_Id));
- 
-          --  Processing for objects that require finalization actions
- 
-          if Needs_Finalization (Ret_Typ) then
-             declare
-                Decls      : constant List_Id := New_List;
-                Fin_Mas_Id : constant Entity_Id :=
-                               Build_In_Place_Formal
-                                 (Func_Id, BIP_Finalization_Master);
-                Orig_Expr  : constant Node_Id :=
-                               New_Copy_Tree
-                                 (Source           => Alloc_Expr,
-                                  Scopes_In_EWA_OK => True);
-                Stmts      : constant List_Id := New_List;
-                Desig_Typ  : Entity_Id;
-                Local_Id   : Entity_Id;
-                Pool_Id    : Entity_Id;
-                Ptr_Typ    : Entity_Id;
- 
-             begin
-                --  Generate:
-                --    Pool_Id renames Base_Pool (BIPfinalizationmaster.all).all;
- 
-                Pool_Id := Make_Temporary (Loc, 'P');
- 
-                Append_To (Decls,
-                  Make_Object_Renaming_Declaration (Loc,
-                    Defining_Identifier => Pool_Id,
-                    Subtype_Mark        =>
-                      New_Occurrence_Of (RTE (RE_Root_Storage_Pool), Loc),
-                    Name                =>
-                      Make_Explicit_Dereference (Loc,
-                        Prefix =>
-                          Make_Function_Call (Loc,
-                            Name                   =>
-                              New_Occurrence_Of (RTE (RE_Base_Pool), Loc),
-                            Parameter_Associations => New_List (
-                              Make_Explicit_Dereference (Loc,
-                                Prefix =>
-                                  New_Occurrence_Of (Fin_Mas_Id, Loc)))))));
- 
-                --  Create an access type which uses the storage pool of the
-                --  caller's master. This additional type is necessary because
-                --  the finalization master cannot be associated with the type
-                --  of the temporary. Otherwise the secondary stack allocation
-                --  will fail.
- 
-                Desig_Typ := Ret_Typ;
- 
-                --  Ensure that the build-in-place machinery uses a fat pointer
-                --  when allocating an unconstrained array on the heap. In this
-                --  case the result object type is a constrained array type even
-                --  though the function type is unconstrained.
- 
-                if Ekind (Desig_Typ) = E_Array_Subtype then
-                   Desig_Typ := Base_Type (Desig_Typ);
-                end if;
- 
-                --  Generate:
-                --    type Ptr_Typ is access Desig_Typ;
- 
-                Ptr_Typ := Make_Temporary (Loc, 'P');
- 
-                Append_To (Decls,
-                  Make_Full_Type_Declaration (Loc,
-                    Defining_Identifier => Ptr_Typ,
-                    Type_Definition     =>
-                      Make_Access_To_Object_Definition (Loc,
-                        Subtype_Indication =>
-                          New_Occurrence_Of (Desig_Typ, Loc))));
- 
-                --  Perform minor decoration in order to set the master and the
-                --  storage pool attributes.
- 
-                Mutate_Ekind                (Ptr_Typ, E_Access_Type);
-                Set_Finalization_Master     (Ptr_Typ, Fin_Mas_Id);
-                Set_Associated_Storage_Pool (Ptr_Typ, Pool_Id);
- 
-                --  Create the temporary, generate:
-                --    Local_Id : Ptr_Typ;
- 
-                Local_Id := Make_Temporary (Loc, 'T');
- 
-                Append_To (Decls,
-                  Make_Object_Declaration (Loc,
-                    Defining_Identifier => Local_Id,
-                    Object_Definition   =>
-                      New_Occurrence_Of (Ptr_Typ, Loc)));
- 
-                --  Allocate the object, generate:
-                --    Local_Id := <Alloc_Expr>;
- 
-                Append_To (Stmts,
-                  Make_Assignment_Statement (Loc,
-                    Name       => New_Occurrence_Of (Local_Id, Loc),
-                    Expression => Alloc_Expr));
- 
-                --  Generate:
-                --    Temp_Id := Temp_Typ (Local_Id);
- 
-                Append_To (Stmts,
-                  Make_Assignment_Statement (Loc,
-                    Name       => New_Occurrence_Of (Temp_Id, Loc),
-                    Expression =>
-                      Unchecked_Convert_To (Temp_Typ,
-                        New_Occurrence_Of (Local_Id, Loc))));
- 
-                --  Wrap the allocation in a block. This is further conditioned
-                --  by checking the caller finalization master at runtime. A
-                --  null value indicates a non-existent master, most likely due
-                --  to a Finalize_Storage_Only allocation.
- 
-                --  Generate:
-                --    if BIPfinalizationmaster = null then
-                --       Temp_Id := <Orig_Expr>;
-                --    else
-                --       declare
-                --          <Decls>
-                --       begin
-                --          <Stmts>
-                --       end;
-                --    end if;
- 
-                return
-                  Make_If_Statement (Loc,
-                    Condition       =>
-                      Make_Op_Eq (Loc,
-                        Left_Opnd  => New_Occurrence_Of (Fin_Mas_Id, Loc),
-                        Right_Opnd => Make_Null (Loc)),
- 
-                    Then_Statements => New_List (
-                      Make_Assignment_Statement (Loc,
-                        Name       => New_Occurrence_Of (Temp_Id, Loc),
-                        Expression => Orig_Expr)),
- 
-                    Else_Statements => New_List (
-                      Make_Block_Statement (Loc,
-                        Declarations               => Decls,
-                        Handled_Statement_Sequence =>
-                          Make_Handled_Sequence_Of_Statements (Loc,
-                            Statements => Stmts))));
-             end;
- 
-          --  For all other cases, generate:
-          --    Temp_Id := <Alloc_Expr>;
- 
-          else
-             return
-               Make_Assignment_Statement (Loc,
-                 Name       => New_Occurrence_Of (Temp_Id, Loc),
-                 Expression => Alloc_Expr);
-          end if;
-       end Build_Heap_Or_Pool_Allocator;
- 
        ---------------------------
        -- Move_Activation_Chain --
        ---------------------------
--- 5239,5244 ----
*************** package body Exp_Ch6 is
*** 5313,5331 ****
  
        --  Local variables
  
-       Func_Id      : constant Entity_Id :=
-                        Return_Applies_To (Return_Statement_Entity (N));
-       Is_BIP_Func  : constant Boolean   :=
-                        Is_Build_In_Place_Function (Func_Id);
-       Ret_Obj_Id   : constant Entity_Id :=
-                        First_Entity (Return_Statement_Entity (N));
-       Ret_Obj_Decl : constant Node_Id   := Parent (Ret_Obj_Id);
-       Ret_Typ      : constant Entity_Id := Etype (Func_Id);
- 
        Exp         : Node_Id;
        HSS         : Node_Id;
        Result      : Node_Id;
!       Stmts       : List_Id;
  
        Return_Stmt : Node_Id := Empty;
        --  Force initialization to facilitate static analysis
--- 5271,5280 ----
  
        --  Local variables
  
        Exp         : Node_Id;
        HSS         : Node_Id;
        Result      : Node_Id;
!       Stmts       : List_Id := No_List;
  
        Return_Stmt : Node_Id := Empty;
        --  Force initialization to facilitate static analysis
*************** package body Exp_Ch6 is
*** 5345,5351 ****
           --  Assert that if F says "return R : T := G(...) do..."
           --  then F and G are both b-i-p, or neither b-i-p.
  
!          if Nkind (Exp) = N_Function_Call then
              pragma Assert (Ekind (Current_Subprogram) = E_Function);
              pragma Assert
                (Is_Build_In_Place_Function (Current_Subprogram) =
--- 5294,5300 ----
           --  Assert that if F says "return R : T := G(...) do..."
           --  then F and G are both b-i-p, or neither b-i-p.
  
!          if Present (Exp) and then Nkind (Exp) = N_Function_Call then
              pragma Assert (Ekind (Current_Subprogram) = E_Function);
              pragma Assert
                (Is_Build_In_Place_Function (Current_Subprogram) =
*************** package body Exp_Ch6 is
*** 5353,5368 ****
              null;
           end if;
  
-          --  Ada 2005 (AI95-344): If the result type is class-wide, then insert
-          --  a check that the level of the return expression's underlying type
-          --  is not deeper than the level of the master enclosing the function.
- 
-          --  AI12-043: The check is made immediately after the return object
-          --  is created.
- 
-          if Present (Exp) and then Is_Class_Wide_Type (Ret_Typ) then
-             Apply_CW_Accessibility_Check (Exp, Func_Id);
-          end if;
        else
           Exp := Empty;
        end if;
--- 5302,5307 ----
*************** package body Exp_Ch6 is
*** 5490,5502 ****
              end;
           end if;
  
-          --  Build a simple_return_statement that returns the return object
- 
-          Return_Stmt :=
-            Make_Simple_Return_Statement (Loc,
-              Expression => New_Occurrence_Of (Ret_Obj_Id, Loc));
-          Append_To (Stmts, Return_Stmt);
- 
           HSS := Make_Handled_Sequence_Of_Statements (Loc, Stmts);
        end if;
  
--- 5429,5434 ----
*************** package body Exp_Ch6 is
*** 5517,6095 ****
           Set_Identifier
             (Result, New_Occurrence_Of (Return_Statement_Entity (N), Loc));
  
!          --  If the object decl was already rewritten as a renaming, then we
!          --  don't want to do the object allocation and transformation of
!          --  the return object declaration to a renaming. This case occurs
!          --  when the return object is initialized by a call to another
!          --  build-in-place function, and that function is responsible for
!          --  the allocation of the return object.
! 
!          if Is_BIP_Func
!            and then Nkind (Ret_Obj_Decl) = N_Object_Renaming_Declaration
!          then
!             pragma Assert
!               (Nkind (Original_Node (Ret_Obj_Decl)) = N_Object_Declaration
!                 and then
! 
!                   --  It is a regular BIP object declaration
! 
!                   (Is_Build_In_Place_Function_Call
!                      (Expression (Original_Node (Ret_Obj_Decl)))
! 
!                   --  It is a BIP object declaration that displaces the pointer
!                   --  to the object to reference a converted interface type.
! 
!                   or else
!                     Present (Unqual_BIP_Iface_Function_Call
!                               (Expression (Original_Node (Ret_Obj_Decl))))));
! 
!             --  Return the build-in-place result by reference
! 
!             Set_By_Ref (Return_Stmt);
! 
!          elsif Is_BIP_Func then
! 
!             --  Locate the implicit access parameter associated with the
!             --  caller-supplied return object and convert the return
!             --  statement's return object declaration to a renaming of a
!             --  dereference of the access parameter. If the return object's
!             --  declaration includes an expression that has not already been
!             --  expanded as separate assignments, then add an assignment
!             --  statement to ensure the return object gets initialized.
! 
!             --    declare
!             --       Result : T [:= <expression>];
!             --    begin
!             --       ...
! 
!             --  is converted to
! 
!             --    declare
!             --       Result : T renames FuncRA.all;
!             --       [Result := <expression;]
!             --    begin
!             --       ...
! 
!             declare
!                Ret_Obj_Expr : constant Node_Id   := Expression (Ret_Obj_Decl);
!                Ret_Obj_Typ  : constant Entity_Id := Etype (Ret_Obj_Id);
! 
!                Init_Assignment  : Node_Id := Empty;
!                Obj_Acc_Formal   : Entity_Id;
!                Obj_Acc_Deref    : Node_Id;
!                Obj_Alloc_Formal : Entity_Id;
! 
!             begin
!                --  Build-in-place results must be returned by reference
! 
!                Set_By_Ref (Return_Stmt);
! 
!                --  Retrieve the implicit access parameter passed by the caller
! 
!                Obj_Acc_Formal :=
!                  Build_In_Place_Formal (Func_Id, BIP_Object_Access);
! 
!                --  If the return object's declaration includes an expression
!                --  and the declaration isn't marked as No_Initialization, then
!                --  we need to generate an assignment to the object and insert
!                --  it after the declaration before rewriting it as a renaming
!                --  (otherwise we'll lose the initialization). The case where
!                --  the result type is an interface (or class-wide interface)
!                --  is also excluded because the context of the function call
!                --  must be unconstrained, so the initialization will always
!                --  be done as part of an allocator evaluation (storage pool
!                --  or secondary stack), never to a constrained target object
!                --  passed in by the caller. Besides the assignment being
!                --  unneeded in this case, it avoids problems with trying to
!                --  generate a dispatching assignment when the return expression
!                --  is a nonlimited descendant of a limited interface (the
!                --  interface has no assignment operation).
! 
!                if Present (Ret_Obj_Expr)
!                  and then not No_Initialization (Ret_Obj_Decl)
!                  and then not Is_Interface (Ret_Obj_Typ)
!                then
!                   Init_Assignment :=
!                     Make_Assignment_Statement (Loc,
!                       Name       => New_Occurrence_Of (Ret_Obj_Id, Loc),
!                       Expression =>
!                         New_Copy_Tree
!                           (Source           => Ret_Obj_Expr,
!                            Scopes_In_EWA_OK => True));
! 
!                   Set_Etype (Name (Init_Assignment), Etype (Ret_Obj_Id));
!                   Set_Assignment_OK (Name (Init_Assignment));
!                   Set_No_Ctrl_Actions (Init_Assignment);
! 
!                   Set_Parent (Name (Init_Assignment), Init_Assignment);
!                   Set_Parent (Expression (Init_Assignment), Init_Assignment);
! 
!                   Set_Expression (Ret_Obj_Decl, Empty);
! 
!                   if Is_Class_Wide_Type (Etype (Ret_Obj_Id))
!                     and then not Is_Class_Wide_Type
!                                    (Etype (Expression (Init_Assignment)))
!                   then
!                      Rewrite (Expression (Init_Assignment),
!                        Make_Type_Conversion (Loc,
!                          Subtype_Mark =>
!                            New_Occurrence_Of (Etype (Ret_Obj_Id), Loc),
!                          Expression   =>
!                            Relocate_Node (Expression (Init_Assignment))));
!                   end if;
! 
!                   --  In the case of functions where the calling context can
!                   --  determine the form of allocation needed, initialization
!                   --  is done with each part of the if statement that handles
!                   --  the different forms of allocation (this is true for
!                   --  unconstrained, tagged, and controlled result subtypes).
! 
!                   if not Needs_BIP_Alloc_Form (Func_Id) then
!                      Insert_After (Ret_Obj_Decl, Init_Assignment);
!                   end if;
!                end if;
! 
!                --  When the function's subtype is unconstrained, a run-time
!                --  test may be needed to decide the form of allocation to use
!                --  for the return object. The function has an implicit formal
!                --  parameter indicating this. If the BIP_Alloc_Form formal has
!                --  the value one, then the caller has passed access to an
!                --  existing object for use as the return object. If the value
!                --  is two, then the return object must be allocated on the
!                --  secondary stack. Otherwise, the object must be allocated in
!                --  a storage pool. We generate an if statement to test the
!                --  implicit allocation formal and initialize a local access
!                --  value appropriately, creating allocators in the secondary
!                --  stack and global heap cases. The special formal also exists
!                --  and must be tested when the function has a tagged result,
!                --  even when the result subtype is constrained, because in
!                --  general such functions can be called in dispatching contexts
!                --  and must be handled similarly to functions with a class-wide
!                --  result.
! 
!                if Needs_BIP_Alloc_Form (Func_Id) then
!                   Obj_Alloc_Formal :=
!                     Build_In_Place_Formal (Func_Id, BIP_Alloc_Form);
! 
!                   declare
!                      Pool_Id        : constant Entity_Id :=
!                                         Make_Temporary (Loc, 'P');
!                      Alloc_Obj_Id   : Entity_Id;
!                      Alloc_Obj_Decl : Node_Id;
!                      Alloc_If_Stmt  : Node_Id;
!                      Guard_Except   : Node_Id;
!                      Heap_Allocator : Node_Id;
!                      Pool_Decl      : Node_Id;
!                      Pool_Allocator : Node_Id;
!                      Ptr_Type_Decl  : Node_Id;
!                      Ref_Type       : Entity_Id;
!                      SS_Allocator   : Node_Id;
! 
!                   begin
!                      --  Create an access type designating the function's
!                      --  result subtype.
! 
!                      Ref_Type := Make_Temporary (Loc, 'A');
! 
!                      Ptr_Type_Decl :=
!                        Make_Full_Type_Declaration (Loc,
!                          Defining_Identifier => Ref_Type,
!                          Type_Definition     =>
!                            Make_Access_To_Object_Definition (Loc,
!                              All_Present        => True,
!                              Subtype_Indication =>
!                                New_Occurrence_Of (Ret_Obj_Typ, Loc)));
! 
!                      Insert_Before (Ret_Obj_Decl, Ptr_Type_Decl);
! 
!                      --  Create an access object that will be initialized to an
!                      --  access value denoting the return object, either coming
!                      --  from an implicit access value passed in by the caller
!                      --  or from the result of an allocator.
! 
!                      Alloc_Obj_Id := Make_Temporary (Loc, 'R');
!                      Set_Etype (Alloc_Obj_Id, Ref_Type);
! 
!                      Alloc_Obj_Decl :=
!                        Make_Object_Declaration (Loc,
!                          Defining_Identifier => Alloc_Obj_Id,
!                          Object_Definition   =>
!                            New_Occurrence_Of (Ref_Type, Loc));
! 
!                      Insert_Before (Ret_Obj_Decl, Alloc_Obj_Decl);
! 
!                      --  Create allocators for both the secondary stack and
!                      --  global heap. If there's an initialization expression,
!                      --  then create these as initialized allocators.
! 
!                      if Present (Ret_Obj_Expr)
!                        and then not No_Initialization (Ret_Obj_Decl)
!                      then
!                         --  Always use the type of the expression for the
!                         --  qualified expression, rather than the result type.
!                         --  In general we cannot always use the result type
!                         --  for the allocator, because the expression might be
!                         --  of a specific type, such as in the case of an
!                         --  aggregate or even a nonlimited object when the
!                         --  result type is a limited class-wide interface type.
! 
!                         Heap_Allocator :=
!                           Make_Allocator (Loc,
!                             Expression =>
!                               Make_Qualified_Expression (Loc,
!                                 Subtype_Mark =>
!                                   New_Occurrence_Of
!                                     (Etype (Ret_Obj_Expr), Loc),
!                                 Expression   =>
!                                   New_Copy_Tree
!                                     (Source           => Ret_Obj_Expr,
!                                      Scopes_In_EWA_OK => True)));
! 
!                      else
!                         --  If the function returns a class-wide type we cannot
!                         --  use the return type for the allocator. Instead we
!                         --  use the type of the expression, which must be an
!                         --  aggregate of a definite type.
! 
!                         if Is_Class_Wide_Type (Ret_Obj_Typ) then
!                            Heap_Allocator :=
!                              Make_Allocator (Loc,
!                                Expression =>
!                                  New_Occurrence_Of
!                                    (Etype (Ret_Obj_Expr), Loc));
!                         else
!                            Heap_Allocator :=
!                              Make_Allocator (Loc,
!                                Expression =>
!                                  New_Occurrence_Of (Ret_Obj_Typ, Loc));
!                         end if;
! 
!                         --  If the object requires default initialization then
!                         --  that will happen later following the elaboration of
!                         --  the object renaming. If we don't turn it off here
!                         --  then the object will be default initialized twice.
! 
!                         Set_No_Initialization (Heap_Allocator);
!                      end if;
! 
!                      --  Set the flag indicating that the allocator came from
!                      --  a build-in-place return statement, so we can avoid
!                      --  adjusting the allocated object. Note that this flag
!                      --  will be inherited by the copies made below.
! 
!                      Set_Alloc_For_BIP_Return (Heap_Allocator);
! 
!                      --  The Pool_Allocator is just like the Heap_Allocator,
!                      --  except we set Storage_Pool and Procedure_To_Call so
!                      --  it will use the user-defined storage pool.
! 
!                      Pool_Allocator :=
!                        New_Copy_Tree
!                          (Source           => Heap_Allocator,
!                           Scopes_In_EWA_OK => True);
! 
!                      pragma Assert (Alloc_For_BIP_Return (Pool_Allocator));
! 
!                      --  Do not generate the renaming of the build-in-place
!                      --  pool parameter on ZFP because the parameter is not
!                      --  created in the first place.
! 
!                      if RTE_Available (RE_Root_Storage_Pool_Ptr) then
!                         Pool_Decl :=
!                           Make_Object_Renaming_Declaration (Loc,
!                             Defining_Identifier => Pool_Id,
!                             Subtype_Mark        =>
!                               New_Occurrence_Of
!                                 (RTE (RE_Root_Storage_Pool), Loc),
!                             Name                =>
!                               Make_Explicit_Dereference (Loc,
!                                 New_Occurrence_Of
!                                   (Build_In_Place_Formal
!                                      (Func_Id, BIP_Storage_Pool), Loc)));
!                         Set_Storage_Pool (Pool_Allocator, Pool_Id);
!                         Set_Procedure_To_Call
!                           (Pool_Allocator, RTE (RE_Allocate_Any));
!                      else
!                         Pool_Decl := Make_Null_Statement (Loc);
!                      end if;
! 
!                      --  If the No_Allocators restriction is active, then only
!                      --  an allocator for secondary stack allocation is needed.
!                      --  It's OK for such allocators to have Comes_From_Source
!                      --  set to False, because gigi knows not to flag them as
!                      --  being a violation of No_Implicit_Heap_Allocations.
! 
!                      if Restriction_Active (No_Allocators) then
!                         SS_Allocator   := Heap_Allocator;
!                         Heap_Allocator := Make_Null (Loc);
!                         Pool_Allocator := Make_Null (Loc);
! 
!                      --  Otherwise the heap and pool allocators may be needed,
!                      --  so we make another allocator for secondary stack
!                      --  allocation.
! 
!                      else
!                         SS_Allocator :=
!                           New_Copy_Tree
!                             (Source           => Heap_Allocator,
!                              Scopes_In_EWA_OK => True);
! 
!                         pragma Assert (Alloc_For_BIP_Return (SS_Allocator));
! 
!                         --  The heap and pool allocators are marked as
!                         --  Comes_From_Source since they correspond to an
!                         --  explicit user-written allocator (that is, it will
!                         --  only be executed on behalf of callers that call the
!                         --  function as initialization for such an allocator).
!                         --  Prevents errors when No_Implicit_Heap_Allocations
!                         --  is in force.
! 
!                         Set_Comes_From_Source (Heap_Allocator, True);
!                         Set_Comes_From_Source (Pool_Allocator, True);
!                      end if;
! 
!                      --  The allocator is returned on the secondary stack
! 
!                      Check_Restriction (No_Secondary_Stack, N);
!                      Set_Storage_Pool (SS_Allocator, RTE (RE_SS_Pool));
!                      Set_Procedure_To_Call
!                        (SS_Allocator, RTE (RE_SS_Allocate));
! 
!                      --  The allocator is returned on the secondary stack,
!                      --  so indicate that the function return, as well as
!                      --  all blocks that encloses the allocator, must not
!                      --  release it. The flags must be set now because
!                      --  the decision to use the secondary stack is done
!                      --  very late in the course of expanding the return
!                      --  statement, past the point where these flags are
!                      --  normally set.
! 
!                      Set_Uses_Sec_Stack (Func_Id);
!                      Set_Uses_Sec_Stack (Return_Statement_Entity (N));
!                      Set_Sec_Stack_Needed_For_Return
!                        (Return_Statement_Entity (N));
!                      Set_Enclosing_Sec_Stack_Return (N);
! 
!                      --  Guard against poor expansion on the caller side by
!                      --  using a raise statement to catch out-of-range values
!                      --  of formal parameter BIP_Alloc_Form.
! 
!                      if Exceptions_OK then
!                         Guard_Except :=
!                           Make_Raise_Program_Error (Loc,
!                             Reason => PE_Build_In_Place_Mismatch);
!                      else
!                         Guard_Except := Make_Null_Statement (Loc);
!                      end if;
! 
!                      --  Create an if statement to test the BIP_Alloc_Form
!                      --  formal and initialize the access object to either the
!                      --  BIP_Object_Access formal (BIP_Alloc_Form =
!                      --  Caller_Allocation), the result of allocating the
!                      --  object in the secondary stack (BIP_Alloc_Form =
!                      --  Secondary_Stack), or else an allocator to create the
!                      --  return object in the heap or user-defined pool
!                      --  (BIP_Alloc_Form = Global_Heap or User_Storage_Pool).
! 
!                      --  ??? An unchecked type conversion must be made in the
!                      --  case of assigning the access object formal to the
!                      --  local access object, because a normal conversion would
!                      --  be illegal in some cases (such as converting access-
!                      --  to-unconstrained to access-to-constrained), but the
!                      --  the unchecked conversion will presumably fail to work
!                      --  right in just such cases. It's not clear at all how to
!                      --  handle this. ???
! 
!                      Alloc_If_Stmt :=
!                        Make_If_Statement (Loc,
!                          Condition =>
!                            Make_Op_Eq (Loc,
!                              Left_Opnd  =>
!                                New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                              Right_Opnd =>
!                                Make_Integer_Literal (Loc,
!                                  UI_From_Int (BIP_Allocation_Form'Pos
!                                                 (Caller_Allocation)))),
! 
!                          Then_Statements => New_List (
!                            Make_Assignment_Statement (Loc,
!                              Name       =>
!                                New_Occurrence_Of (Alloc_Obj_Id, Loc),
!                              Expression =>
!                                Unchecked_Convert_To
!                                  (Ref_Type,
!                                   New_Occurrence_Of (Obj_Acc_Formal, Loc)))),
! 
!                          Elsif_Parts => New_List (
!                            Make_Elsif_Part (Loc,
!                              Condition =>
!                                Make_Op_Eq (Loc,
!                                  Left_Opnd  =>
!                                    New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                                  Right_Opnd =>
!                                    Make_Integer_Literal (Loc,
!                                      UI_From_Int (BIP_Allocation_Form'Pos
!                                                     (Secondary_Stack)))),
! 
!                              Then_Statements => New_List (
!                                Make_Assignment_Statement (Loc,
!                                  Name       =>
!                                    New_Occurrence_Of (Alloc_Obj_Id, Loc),
!                                  Expression => SS_Allocator))),
! 
!                            Make_Elsif_Part (Loc,
!                              Condition =>
!                                Make_Op_Eq (Loc,
!                                  Left_Opnd  =>
!                                    New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                                  Right_Opnd =>
!                                    Make_Integer_Literal (Loc,
!                                      UI_From_Int (BIP_Allocation_Form'Pos
!                                                     (Global_Heap)))),
! 
!                              Then_Statements => New_List (
!                                Build_Heap_Or_Pool_Allocator
!                                  (Temp_Id    => Alloc_Obj_Id,
!                                   Temp_Typ   => Ref_Type,
!                                   Func_Id    => Func_Id,
!                                   Ret_Typ    => Ret_Obj_Typ,
!                                   Alloc_Expr => Heap_Allocator))),
! 
!                            --  ???If all is well, we can put the following
!                            --  'elsif' in the 'else', but this is a useful
!                            --  self-check in case caller and callee don't agree
!                            --  on whether BIPAlloc and so on should be passed.
! 
!                            Make_Elsif_Part (Loc,
!                              Condition =>
!                                Make_Op_Eq (Loc,
!                                  Left_Opnd  =>
!                                    New_Occurrence_Of (Obj_Alloc_Formal, Loc),
!                                  Right_Opnd =>
!                                    Make_Integer_Literal (Loc,
!                                      UI_From_Int (BIP_Allocation_Form'Pos
!                                                     (User_Storage_Pool)))),
! 
!                              Then_Statements => New_List (
!                                Pool_Decl,
!                                Build_Heap_Or_Pool_Allocator
!                                  (Temp_Id    => Alloc_Obj_Id,
!                                   Temp_Typ   => Ref_Type,
!                                   Func_Id    => Func_Id,
!                                   Ret_Typ    => Ret_Obj_Typ,
!                                   Alloc_Expr => Pool_Allocator)))),
! 
!                          --  Raise Program_Error if it's none of the above;
!                          --  this is a compiler bug.
! 
!                          Else_Statements => New_List (Guard_Except));
! 
!                      --  If a separate initialization assignment was created
!                      --  earlier, append that following the assignment of the
!                      --  implicit access formal to the access object, to ensure
!                      --  that the return object is initialized in that case. In
!                      --  this situation, the target of the assignment must be
!                      --  rewritten to denote a dereference of the access to the
!                      --  return object passed in by the caller.
! 
!                      if Present (Init_Assignment) then
!                         Rewrite (Name (Init_Assignment),
!                           Make_Explicit_Dereference (Loc,
!                             Prefix => New_Occurrence_Of (Alloc_Obj_Id, Loc)));
!                         pragma Assert
!                           (Assignment_OK
!                              (Original_Node (Name (Init_Assignment))));
!                         Set_Assignment_OK (Name (Init_Assignment));
! 
!                         Set_Etype (Name (Init_Assignment), Etype (Ret_Obj_Id));
! 
!                         Append_To
!                           (Then_Statements (Alloc_If_Stmt), Init_Assignment);
!                      end if;
! 
!                      Insert_Before (Ret_Obj_Decl, Alloc_If_Stmt);
! 
!                      --  Remember the local access object for use in the
!                      --  dereference of the renaming created below.
! 
!                      Obj_Acc_Formal := Alloc_Obj_Id;
!                   end;
! 
!                --  When the function's subtype is unconstrained and a run-time
!                --  test is not needed, we nevertheless need to build the return
!                --  using the function's result subtype.
! 
!                elsif not Is_Constrained (Underlying_Type (Etype (Func_Id)))
!                then
!                   declare
!                      Alloc_Obj_Id   : Entity_Id;
!                      Alloc_Obj_Decl : Node_Id;
!                      Ptr_Type_Decl  : Node_Id;
!                      Ref_Type       : Entity_Id;
! 
!                   begin
!                      --  Create an access type designating the function's
!                      --  result subtype.
! 
!                      Ref_Type := Make_Temporary (Loc, 'A');
! 
!                      Ptr_Type_Decl :=
!                        Make_Full_Type_Declaration (Loc,
!                          Defining_Identifier => Ref_Type,
!                          Type_Definition     =>
!                            Make_Access_To_Object_Definition (Loc,
!                              All_Present        => True,
!                              Subtype_Indication =>
!                                New_Occurrence_Of (Ret_Obj_Typ, Loc)));
! 
!                      Insert_Before (Ret_Obj_Decl, Ptr_Type_Decl);
! 
!                      --  Create an access object initialized to the conversion
!                      --  of the implicit access value passed in by the caller.
! 
!                      Alloc_Obj_Id := Make_Temporary (Loc, 'R');
!                      Set_Etype (Alloc_Obj_Id, Ref_Type);
! 
!                      --  See the ??? comment a few lines above about the use of
!                      --  an unchecked conversion here.
! 
!                      Alloc_Obj_Decl :=
!                        Make_Object_Declaration (Loc,
!                          Defining_Identifier => Alloc_Obj_Id,
!                          Object_Definition   =>
!                            New_Occurrence_Of (Ref_Type, Loc),
!                          Expression =>
!                            Unchecked_Convert_To
!                              (Ref_Type,
!                               New_Occurrence_Of (Obj_Acc_Formal, Loc)));
! 
!                      Insert_Before (Ret_Obj_Decl, Alloc_Obj_Decl);
! 
!                      --  Remember the local access object for use in the
!                      --  dereference of the renaming created below.
! 
!                      Obj_Acc_Formal := Alloc_Obj_Id;
!                   end;
!                end if;
! 
!                --  Replace the return object declaration with a renaming of a
!                --  dereference of the access value designating the return
!                --  object.
! 
!                Obj_Acc_Deref :=
!                  Make_Explicit_Dereference (Loc,
!                    Prefix => New_Occurrence_Of (Obj_Acc_Formal, Loc));
! 
!                Rewrite (Ret_Obj_Decl,
!                  Make_Object_Renaming_Declaration (Loc,
!                    Defining_Identifier => Ret_Obj_Id,
!                    Access_Definition   => Empty,
!                    Subtype_Mark        => New_Occurrence_Of (Ret_Obj_Typ, Loc),
!                    Name                => Obj_Acc_Deref));
  
!                Set_Renamed_Object (Ret_Obj_Id, Obj_Acc_Deref);
!             end;
!          end if;
  
        --  Case where we do not need to build a block. But we're about to drop
        --  Return_Object_Declarations on the floor, so assert that it contains
--- 5449,5460 ----
           Set_Identifier
             (Result, New_Occurrence_Of (Return_Statement_Entity (N), Loc));
  
!          --  Build a simple_return_statement that returns the return object
  
!          Return_Stmt :=
!            Make_Simple_Return_Statement (Loc,
!              Expression => New_Occurrence_Of (Ret_Obj_Id, Loc));
!          Append_To (Stmts, Return_Stmt);
  
        --  Case where we do not need to build a block. But we're about to drop
        --  Return_Object_Declarations on the floor, so assert that it contains
*************** package body Exp_Ch6 is
*** 6114,6122 ****
        --  before an object is returned. A predicate that applies to the return
        --  subtype is checked immediately before an object is returned.
  
!       --  Suppress access checks to avoid generating extra checks for b-i-p.
! 
!       Analyze (N, Suppress => Access_Check);
     end Expand_N_Extended_Return_Statement;
  
     ----------------------------
--- 5479,5485 ----
        --  before an object is returned. A predicate that applies to the return
        --  subtype is checked immediately before an object is returned.
  
!       Analyze (N);
     end Expand_N_Extended_Return_Statement;
  
     ----------------------------
*************** package body Exp_Ch6 is
*** 6293,6337 ****
              Append_To (Stmts, Stmt);
              Set_Analyzed (Stmt);
  
-             --  Call the _Postconditions procedure if the related subprogram
-             --  has contract assertions that need to be verified on exit.
- 
-             --  Also, mark the successful return to signal that postconditions
-             --  need to be evaluated when finalization occurs by setting
-             --  Return_Success_For_Postcond to be True.
- 
-             if Ekind (Spec_Id) = E_Procedure
-               and then Present (Postconditions_Proc (Spec_Id))
-             then
-                --  Generate:
-                --
-                --    Return_Success_For_Postcond := True;
-                --    if Postcond_Enabled then
-                --       _postconditions;
-                --    end if;
- 
-                Insert_Action (Stmt,
-                  Make_Assignment_Statement (Loc,
-                    Name       =>
-                      New_Occurrence_Of
-                        (Get_Return_Success_For_Postcond (Spec_Id), Loc),
-                    Expression => New_Occurrence_Of (Standard_True, Loc)));
- 
-                --  Wrap the call to _postconditions within a test of the
-                --  Postcond_Enabled flag to delay postcondition evaluation
-                --  until after finalization when required.
- 
-                Insert_Action (Stmt,
-                  Make_If_Statement (Loc,
-                    Condition       =>
-                      New_Occurrence_Of (Get_Postcond_Enabled (Spec_Id), Loc),
-                    Then_Statements => New_List (
-                      Make_Procedure_Call_Statement (Loc,
-                        Name =>
-                          New_Occurrence_Of
-                            (Postconditions_Proc (Spec_Id), Loc)))));
-             end if;
- 
              --  Ada 2022 (AI12-0279): append the call to 'Yield unless this is
              --  a generic subprogram (since in such case it will be added to
              --  the instantiations).
--- 5656,5661 ----
*************** package body Exp_Ch6 is
*** 6739,6782 ****
        Lab_Node  : Node_Id;
  
     begin
-       --  Call the _Postconditions procedure if the related subprogram has
-       --  contract assertions that need to be verified on exit.
- 
-       --  Also, mark the successful return to signal that postconditions need
-       --  to be evaluated when finalization occurs.
- 
-       if Ekind (Scope_Id) in E_Entry | E_Entry_Family | E_Procedure
-         and then Present (Postconditions_Proc (Scope_Id))
-       then
-          --  Generate:
-          --
-          --    Return_Success_For_Postcond := True;
-          --    if Postcond_Enabled then
-          --       _postconditions;
-          --    end if;
- 
-          Insert_Action (N,
-            Make_Assignment_Statement (Loc,
-              Name       =>
-                New_Occurrence_Of
-                 (Get_Return_Success_For_Postcond (Scope_Id), Loc),
-              Expression => New_Occurrence_Of (Standard_True, Loc)));
- 
-          --  Wrap the call to _postconditions within a test of the
-          --  Postcond_Enabled flag to delay postcondition evaluation until
-          --  after finalization when required.
- 
-          Insert_Action (N,
-            Make_If_Statement (Loc,
-              Condition       =>
-                New_Occurrence_Of (Get_Postcond_Enabled (Scope_Id), Loc),
-              Then_Statements => New_List (
-                Make_Procedure_Call_Statement (Loc,
-                  Name =>
-                    New_Occurrence_Of
-                      (Postconditions_Proc (Scope_Id), Loc)))));
-       end if;
- 
        --  Ada 2022 (AI12-0279)
  
        if Has_Yield_Aspect (Scope_Id)
--- 6063,6068 ----
*************** package body Exp_Ch6 is
*** 7038,7044 ****
        --  The object may be a component of some other data structure, in which
        --  case this must be handled as an inter-object call.
  
!       if not In_Open_Scopes (Scop)
          or else Is_Entry_Wrapper (Current_Scope)
          or else not Is_Entity_Name (Name (N))
        then
--- 6324,6330 ----
        --  The object may be a component of some other data structure, in which
        --  case this must be handled as an inter-object call.
  
!       if not Scope_Within_Or_Same (Inner => Current_Scope, Outer => Scop)
          or else Is_Entry_Wrapper (Current_Scope)
          or else not Is_Entity_Name (Name (N))
        then
*************** package body Exp_Ch6 is
*** 7148,7163 ****
        --  The result type of the function
  
        Utyp : constant Entity_Id := Underlying_Type (R_Type);
  
        Exp : Node_Id := Expression (N);
        pragma Assert (Present (Exp));
  
        Exp_Is_Function_Call : constant Boolean :=
          Nkind (Exp) = N_Function_Call
!           or else (Nkind (Exp) = N_Explicit_Dereference
!                    and then Is_Entity_Name (Prefix (Exp))
!                    and then Ekind (Entity (Prefix (Exp))) = E_Constant
!                    and then Is_Related_To_Func_Return (Entity (Prefix (Exp))));
  
        Exp_Typ : constant Entity_Id := Etype (Exp);
        --  The type of the expression (not necessarily the same as R_Type)
--- 6434,6454 ----
        --  The result type of the function
  
        Utyp : constant Entity_Id := Underlying_Type (R_Type);
+       --  The underlying result type of the function
  
        Exp : Node_Id := Expression (N);
        pragma Assert (Present (Exp));
  
        Exp_Is_Function_Call : constant Boolean :=
          Nkind (Exp) = N_Function_Call
!           or else
!             (Is_Captured_Function_Call (Exp)
!               and then Is_Related_To_Func_Return (Entity (Prefix (Exp))));
!       --  If the expression is a captured function call, then we need to make
!       --  sure that the object doing the capture is properly recognized by the
!       --  Is_Related_To_Func_Return predicate; otherwise, if it is of a type
!       --  that needs finalization, Requires_Cleanup_Actions would return true
!       --  because of this and Build_Finalizer would finalize it prematurely.
  
        Exp_Typ : constant Entity_Id := Etype (Exp);
        --  The type of the expression (not necessarily the same as R_Type)
*************** package body Exp_Ch6 is
*** 7199,7206 ****
  
        if Nkind (Exp) = N_Function_Call then
           pragma Assert (Ekind (Scope_Id) = E_Function);
           pragma Assert
!            (Is_Build_In_Place_Function (Scope_Id) =
              Is_Build_In_Place_Function_Call (Exp));
           null;
        end if;
--- 6490,6502 ----
  
        if Nkind (Exp) = N_Function_Call then
           pragma Assert (Ekind (Scope_Id) = E_Function);
+ 
+          --  This assertion works fine because Is_Build_In_Place_Function_Call
+          --  returns True for BIP function calls but also for function calls
+          --  that have BIP formals.
+ 
           pragma Assert
!            (Has_BIP_Formals (Scope_Id) =
              Is_Build_In_Place_Function_Call (Exp));
           null;
        end if;
*************** package body Exp_Ch6 is
*** 7222,7248 ****
        --  need to reify the return object, so we can build it "in place", and
        --  we need a block statement to hang finalization and tasking stuff.
  
-       --  ??? In order to avoid disruption, we avoid translating to extended
-       --  return except in the cases where we really need to (Ada 2005 for
-       --  inherently limited). We might prefer to do this translation in all
-       --  cases (except perhaps for the case of Ada 95 inherently limited),
-       --  in order to fully exercise the Expand_N_Extended_Return_Statement
-       --  code. This would also allow us to do the build-in-place optimization
-       --  for efficiency even in cases where it is semantically not required.
- 
-       --  As before, we check the type of the return expression rather than the
-       --  return type of the function, because the latter may be a limited
-       --  class-wide interface type, which is not a limited type, even though
-       --  the type of the expression may be.
- 
        pragma Assert
          (Comes_From_Extended_Return_Statement (N)
            or else not Is_Build_In_Place_Function_Call (Exp)
!           or else Is_Build_In_Place_Function (Scope_Id));
  
        if not Comes_From_Extended_Return_Statement (N)
          and then Is_Build_In_Place_Function (Scope_Id)
-         and then not Debug_Flag_Dot_L
  
           --  The functionality of interface thunks is simple and it is always
           --  handled by means of simple return statements. This leaves their
--- 6518,6530 ----
        --  need to reify the return object, so we can build it "in place", and
        --  we need a block statement to hang finalization and tasking stuff.
  
        pragma Assert
          (Comes_From_Extended_Return_Statement (N)
            or else not Is_Build_In_Place_Function_Call (Exp)
!           or else Has_BIP_Formals (Scope_Id));
  
        if not Comes_From_Extended_Return_Statement (N)
          and then Is_Build_In_Place_Function (Scope_Id)
  
           --  The functionality of interface thunks is simple and it is always
           --  handled by means of simple return statements. This leaves their
*************** package body Exp_Ch6 is
*** 7310,7322 ****
  
        --  Deal with returning variable length objects and controlled types
  
!       --  Nothing to do if we are returning by reference, or this is not a
!       --  type that requires special processing (indicated by the fact that
!       --  it requires a cleanup scope for the secondary stack case).
  
!       if Is_Build_In_Place_Function (Scope_Id)
!         or else Is_Limited_Interface (Exp_Typ)
!       then
           null;
  
        --  No copy needed for thunks returning interface type objects since
--- 6592,6609 ----
  
        --  Deal with returning variable length objects and controlled types
  
!       --  Nothing to do if we are returning by reference
  
!       if Is_Build_In_Place_Function (Scope_Id) then
!          --  Prevent the reclamation of the secondary stack by all enclosing
!          --  blocks and loops as well as the related function; otherwise the
!          --  result would be reclaimed too early.
! 
!          if Needs_BIP_Alloc_Form (Scope_Id) then
!             Set_Enclosing_Sec_Stack_Return (N);
!          end if;
! 
!       elsif Is_Limited_View (R_Type) then
           null;
  
        --  No copy needed for thunks returning interface type objects since
*************** package body Exp_Ch6 is
*** 7327,7333 ****
           null;
  
        --  If the call is within a thunk and the type is a limited view, the
!       --  backend will eventually see the non-limited view of the type.
  
        elsif Is_Thunk (Scope_Id) and then Is_Incomplete_Type (Exp_Typ) then
           return;
--- 6614,6620 ----
           null;
  
        --  If the call is within a thunk and the type is a limited view, the
!       --  back end will eventually see the non-limited view of the type.
  
        elsif Is_Thunk (Scope_Id) and then Is_Incomplete_Type (Exp_Typ) then
           return;
*************** package body Exp_Ch6 is
*** 7335,7359 ****
        --  A return statement from an ignored Ghost function does not use the
        --  secondary stack (or any other one).
  
!       elsif not Requires_Transient_Scope (R_Type)
          or else Is_Ignored_Ghost_Entity (Scope_Id)
        then
- 
           --  Mutable records with variable-length components are not returned
           --  on the sec-stack, so we need to make sure that the back end will
           --  only copy back the size of the actual value, and not the maximum
           --  size. We create an actual subtype for this purpose. However we
           --  need not do it if the expression is a function call since this
           --  will be done in the called function and doing it here too would
!          --  cause a temporary with maximum size to be created.
  
           declare
              Ubt  : constant Entity_Id := Underlying_Type (Base_Type (Exp_Typ));
              Decl : Node_Id;
              Ent  : Entity_Id;
           begin
              if not Exp_Is_Function_Call
!               and then Has_Discriminants (Ubt)
                and then not Is_Constrained (Ubt)
                and then not Has_Unchecked_Union (Ubt)
              then
--- 6622,6650 ----
        --  A return statement from an ignored Ghost function does not use the
        --  secondary stack (or any other one).
  
!       elsif (not Needs_Secondary_Stack (R_Type)
!               and then not Is_Secondary_Stack_Thunk (Scope_Id))
          or else Is_Ignored_Ghost_Entity (Scope_Id)
        then
           --  Mutable records with variable-length components are not returned
           --  on the sec-stack, so we need to make sure that the back end will
           --  only copy back the size of the actual value, and not the maximum
           --  size. We create an actual subtype for this purpose. However we
           --  need not do it if the expression is a function call since this
           --  will be done in the called function and doing it here too would
!          --  cause a temporary with maximum size to be created. Likewise for
!          --  a special return object, since there is no copy in this case.
  
           declare
              Ubt  : constant Entity_Id := Underlying_Type (Base_Type (Exp_Typ));
              Decl : Node_Id;
              Ent  : Entity_Id;
+ 
           begin
              if not Exp_Is_Function_Call
!               and then not (Is_Entity_Name (Exp)
!                              and then Is_Special_Return_Object (Entity (Exp)))
!               and then Has_Defaulted_Discriminants (Ubt)
                and then not Is_Constrained (Ubt)
                and then not Has_Unchecked_Union (Ubt)
              then
*************** package body Exp_Ch6 is
*** 7365,7370 ****
--- 6656,6732 ----
              end if;
           end;
  
+          --  For types which need finalization, do the allocation on the return
+          --  stack manually in order to call Adjust at the right time:
+ 
+          --    type Ann is access R_Type;
+          --    for Ann'Storage_pool use rs_pool;
+          --    Rnn : constant Ann := new Exp_Typ'(Exp);
+          --    return Rnn.all;
+ 
+          --  but optimize the case where the result is a function call that
+          --  also needs finalization. In this case the result can directly be
+          --  allocated on the return stack of the caller and no further
+          --  processing is required. Likewise if this is a return object.
+ 
+          if Comes_From_Extended_Return_Statement (N) then
+             null;
+ 
+          elsif Present (Utyp)
+            and then Needs_Finalization (Utyp)
+            and then not (Exp_Is_Function_Call
+                           and then Needs_Finalization (Exp_Typ))
+          then
+             declare
+                Acc_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
+ 
+                Alloc_Node : Node_Id;
+                Temp       : Entity_Id;
+ 
+             begin
+                Mutate_Ekind (Acc_Typ, E_Access_Type);
+ 
+                Set_Associated_Storage_Pool (Acc_Typ, RTE (RE_RS_Pool));
+ 
+                --  This is an allocator for the return stack, and it's fine
+                --  to have Comes_From_Source set False on it, as gigi knows not
+                --  to flag it as a violation of No_Implicit_Heap_Allocations.
+ 
+                Alloc_Node :=
+                  Make_Allocator (Loc,
+                    Expression =>
+                      Make_Qualified_Expression (Loc,
+                        Subtype_Mark => New_Occurrence_Of (Exp_Typ, Loc),
+                        Expression   => Relocate_Node (Exp)));
+ 
+                --  We do not want discriminant checks on the declaration,
+                --  given that it gets its value from the allocator.
+ 
+                Set_No_Initialization (Alloc_Node);
+ 
+                Temp := Make_Temporary (Loc, 'R', Alloc_Node);
+ 
+                Insert_Actions (Exp, New_List (
+                  Make_Full_Type_Declaration (Loc,
+                    Defining_Identifier => Acc_Typ,
+                    Type_Definition     =>
+                      Make_Access_To_Object_Definition (Loc,
+                        Subtype_Indication => Subtype_Ind)),
+ 
+                  Make_Object_Declaration (Loc,
+                    Defining_Identifier => Temp,
+                    Constant_Present    => True,
+                    Object_Definition   => New_Occurrence_Of (Acc_Typ, Loc),
+                    Expression          => Alloc_Node)));
+ 
+                Rewrite (Exp,
+                  Make_Explicit_Dereference (Loc,
+                  Prefix => New_Occurrence_Of (Temp, Loc)));
+ 
+                Analyze_And_Resolve (Exp, R_Type);
+             end;
+          end if;
+ 
        --  Here if secondary stack is used
  
        else
*************** package body Exp_Ch6 is
*** 7374,7392 ****
  
           Set_Enclosing_Sec_Stack_Return (N);
  
           --  Optimize the case where the result is a function call that also
!          --  returns on the secondary stack. In this case the result is already
!          --  on the secondary stack and no further processing is required
!          --  except to set the By_Ref flag to ensure that gigi does not attempt
!          --  an extra unnecessary copy. (Actually not just unnecessary but
!          --  wrong in the case of a controlled type, where gigi does not know
!          --  how to do a copy.)
  
!          pragma Assert (Requires_Transient_Scope (R_Type));
!          if Exp_Is_Function_Call and then Requires_Transient_Scope (Exp_Typ)
           then
-             Set_By_Ref (N);
- 
              --  Remove side effects from the expression now so that other parts
              --  of the expander do not have to reanalyze this node without this
              --  optimization
--- 6736,6753 ----
  
           Set_Enclosing_Sec_Stack_Return (N);
  
+          --  Nothing else to do for a return object
+ 
+          if Comes_From_Extended_Return_Statement (N) then
+             null;
+ 
           --  Optimize the case where the result is a function call that also
!          --  returns on the secondary stack; in this case the result is already
!          --  on the secondary stack and no further processing is required.
  
!          elsif Exp_Is_Function_Call
!            and then Needs_Secondary_Stack (Exp_Typ)
           then
              --  Remove side effects from the expression now so that other parts
              --  of the expander do not have to reanalyze this node without this
              --  optimization
*************** package body Exp_Ch6 is
*** 7403,7430 ****
  
              Analyze_And_Resolve (Exp, R_Type);
  
!          --  For controlled types, do the allocation on the secondary stack
!          --  manually in order to call adjust at the right time:
  
!          --    type Anon1 is access R_Type;
!          --    for Anon1'Storage_pool use ss_pool;
!          --    Anon2 : anon1 := new R_Type'(expr);
!          --    return Anon2.all;
  
!          --  We do the same for classwide types that are not potentially
           --  controlled (by the virtue of restriction No_Finalization) because
           --  gigi is not able to properly allocate class-wide types.
  
!          elsif CW_Or_Has_Controlled_Part (Utyp) then
              declare
!                Loc        : constant Source_Ptr := Sloc (N);
!                Acc_Typ    : constant Entity_Id := Make_Temporary (Loc, 'A');
                 Alloc_Node : Node_Id;
                 Temp       : Entity_Id;
  
              begin
                 Mutate_Ekind (Acc_Typ, E_Access_Type);
- 
                 Set_Associated_Storage_Pool (Acc_Typ, RTE (RE_SS_Pool));
  
                 --  This is an allocator for the secondary stack, and it's fine
--- 6764,6800 ----
  
              Analyze_And_Resolve (Exp, R_Type);
  
!          --  For types which both need finalization and are returned on the
!          --  secondary stack, do the allocation on secondary stack manually
!          --  in order to call Adjust at the right time:
  
!          --    type Ann is access R_Type;
!          --    for Ann'Storage_pool use ss_pool;
!          --    Rnn : constant Ann := new Exp_Typ'(Exp);
!          --    return Rnn.all;
  
!          --  And we do the same for class-wide types that are not potentially
           --  controlled (by the virtue of restriction No_Finalization) because
           --  gigi is not able to properly allocate class-wide types.
  
!          --  But optimize the case where the result is a function call that
!          --  also needs finalization; in this case the result can directly be
!          --  allocated on the secondary stack and no further processing is
!          --  required, unless the returned object is an interface.
! 
!          elsif CW_Or_Needs_Finalization (Utyp)
!            and then (Is_Interface (R_Type)
!                       or else not (Exp_Is_Function_Call
!                                     and then Needs_Finalization (Exp_Typ)))
!          then
              declare
!                Acc_Typ : constant Entity_Id := Make_Temporary (Loc, 'A');
! 
                 Alloc_Node : Node_Id;
                 Temp       : Entity_Id;
  
              begin
                 Mutate_Ekind (Acc_Typ, E_Access_Type);
                 Set_Associated_Storage_Pool (Acc_Typ, RTE (RE_SS_Pool));
  
                 --  This is an allocator for the secondary stack, and it's fine
*************** package body Exp_Ch6 is
*** 7454,7459 ****
--- 6824,6830 ----
  
                   Make_Object_Declaration (Loc,
                     Defining_Identifier => Temp,
+                    Constant_Present    => True,
                     Object_Definition   => New_Occurrence_Of (Acc_Typ, Loc),
                     Expression          => Alloc_Node)));
  
*************** package body Exp_Ch6 is
*** 7646,7729 ****
           end;
        end if;
  
-       --  Call the _Postconditions procedure if the related function has
-       --  contract assertions that need to be verified on exit.
- 
-       if Ekind (Scope_Id) = E_Function
-         and then Present (Postconditions_Proc (Scope_Id))
-       then
-          --  In the case of discriminated objects, we have created a
-          --  constrained subtype above, and used the underlying type. This
-          --  transformation is post-analysis and harmless, except that now the
-          --  call to the post-condition will be analyzed and the type kinds
-          --  have to match.
- 
-          if Nkind (Exp) = N_Unchecked_Type_Conversion
-            and then Is_Private_Type (R_Type) /= Is_Private_Type (Etype (Exp))
-          then
-             Rewrite (Exp, Expression (Relocate_Node (Exp)));
-          end if;
- 
-          --  We are going to reference the returned value twice in this case,
-          --  once in the call to _Postconditions, and once in the actual return
-          --  statement, but we can't have side effects happening twice.
- 
-          Force_Evaluation (Exp, Mode => Strict);
- 
-          --  Save the return value or a pointer to the return value since we
-          --  may need to call postconditions after finalization when cleanup
-          --  actions are present.
- 
-          --  Generate:
-          --
-          --    Result_Object_For_Postcond := [Exp]'Unrestricted_Access;
- 
-          Insert_Action (Exp,
-            Make_Assignment_Statement (Loc,
-              Name       =>
-                New_Occurrence_Of
-                 (Get_Result_Object_For_Postcond (Scope_Id), Loc),
-              Expression =>
-                (if Is_Elementary_Type (Etype (R_Type)) then
-                    New_Copy_Tree (Exp)
-                 else
-                    Make_Attribute_Reference (Loc,
-                      Attribute_Name => Name_Unrestricted_Access,
-                      Prefix         => New_Copy_Tree (Exp)))));
- 
-          --  Mark the successful return to signal that postconditions need to
-          --  be evaluated when finalization occurs.
- 
-          --  Generate:
-          --
-          --    Return_Success_For_Postcond := True;
-          --    if Postcond_Enabled then
-          --       _Postconditions ([exp]);
-          --    end if;
- 
-          Insert_Action (Exp,
-            Make_Assignment_Statement (Loc,
-              Name       =>
-                New_Occurrence_Of
-                 (Get_Return_Success_For_Postcond (Scope_Id), Loc),
-              Expression => New_Occurrence_Of (Standard_True, Loc)));
- 
-          --  Wrap the call to _postconditions within a test of the
-          --  Postcond_Enabled flag to delay postcondition evaluation until
-          --  after finalization when required.
- 
-          Insert_Action (Exp,
-            Make_If_Statement (Loc,
-              Condition       =>
-                New_Occurrence_Of (Get_Postcond_Enabled (Scope_Id), Loc),
-              Then_Statements => New_List (
-                Make_Procedure_Call_Statement (Loc,
-                  Name                   =>
-                    New_Occurrence_Of
-                      (Postconditions_Proc (Scope_Id), Loc),
-                  Parameter_Associations => New_List (New_Copy_Tree (Exp))))));
-       end if;
- 
        --  Ada 2005 (AI-251): If this return statement corresponds with an
        --  simple return statement associated with an extended return statement
        --  and the type of the returned object is an interface then generate an
--- 7017,7022 ----
*************** package body Exp_Ch6 is
*** 7755,7855 ****
     -----------------------
  
     procedure Freeze_Subprogram (N : Node_Id) is
!       Loc : constant Source_Ptr := Sloc (N);
! 
!       procedure Register_Predefined_DT_Entry (Prim : Entity_Id);
!       --  (Ada 2005): Register a predefined primitive in all the secondary
!       --  dispatch tables of its primitive type.
! 
!       ----------------------------------
!       -- Register_Predefined_DT_Entry --
!       ----------------------------------
! 
!       procedure Register_Predefined_DT_Entry (Prim : Entity_Id) is
!          Iface_DT_Ptr : Elmt_Id;
!          Tagged_Typ   : Entity_Id;
!          Thunk_Id     : Entity_Id;
!          Thunk_Code   : Node_Id;
! 
!       begin
!          Tagged_Typ := Find_Dispatching_Type (Prim);
! 
!          if No (Access_Disp_Table (Tagged_Typ))
!            or else not Has_Interfaces (Tagged_Typ)
!            or else not RTE_Available (RE_Interface_Tag)
!            or else Restriction_Active (No_Dispatching_Calls)
!          then
!             return;
!          end if;
! 
!          --  Skip the first two access-to-dispatch-table pointers since they
!          --  leads to the primary dispatch table (predefined DT and user
!          --  defined DT). We are only concerned with the secondary dispatch
!          --  table pointers. Note that the access-to- dispatch-table pointer
!          --  corresponds to the first implemented interface retrieved below.
! 
!          Iface_DT_Ptr :=
!            Next_Elmt (Next_Elmt (First_Elmt (Access_Disp_Table (Tagged_Typ))));
! 
!          while Present (Iface_DT_Ptr)
!            and then Ekind (Node (Iface_DT_Ptr)) = E_Constant
!          loop
!             pragma Assert (Has_Thunks (Node (Iface_DT_Ptr)));
!             Expand_Interface_Thunk (Prim, Thunk_Id, Thunk_Code,
!               Iface => Related_Type (Node (Iface_DT_Ptr)));
! 
!             if Present (Thunk_Code) then
!                Insert_Actions_After (N, New_List (
!                  Thunk_Code,
! 
!                  Build_Set_Predefined_Prim_Op_Address (Loc,
!                    Tag_Node     =>
!                      New_Occurrence_Of (Node (Next_Elmt (Iface_DT_Ptr)), Loc),
!                    Position     => DT_Position (Prim),
!                    Address_Node =>
!                      Unchecked_Convert_To (RTE (RE_Prim_Ptr),
!                        Make_Attribute_Reference (Loc,
!                          Prefix         => New_Occurrence_Of (Thunk_Id, Loc),
!                          Attribute_Name => Name_Unrestricted_Access))),
! 
!                  Build_Set_Predefined_Prim_Op_Address (Loc,
!                    Tag_Node     =>
!                      New_Occurrence_Of
!                       (Node (Next_Elmt (Next_Elmt (Next_Elmt (Iface_DT_Ptr)))),
!                        Loc),
!                    Position     => DT_Position (Prim),
!                    Address_Node =>
!                      Unchecked_Convert_To (RTE (RE_Prim_Ptr),
!                        Make_Attribute_Reference (Loc,
!                          Prefix         => New_Occurrence_Of (Prim, Loc),
!                          Attribute_Name => Name_Unrestricted_Access)))));
!             end if;
! 
!             --  Skip the tag of the predefined primitives dispatch table
! 
!             Next_Elmt (Iface_DT_Ptr);
!             pragma Assert (Has_Thunks (Node (Iface_DT_Ptr)));
! 
!             --  Skip tag of the no-thunks dispatch table
! 
!             Next_Elmt (Iface_DT_Ptr);
!             pragma Assert (not Has_Thunks (Node (Iface_DT_Ptr)));
! 
!             --  Skip tag of predefined primitives no-thunks dispatch table
! 
!             Next_Elmt (Iface_DT_Ptr);
!             pragma Assert (not Has_Thunks (Node (Iface_DT_Ptr)));
! 
!             Next_Elmt (Iface_DT_Ptr);
!          end loop;
!       end Register_Predefined_DT_Entry;
! 
!       --  Local variables
! 
        Subp : constant Entity_Id  := Entity (N);
  
-    --  Start of processing for Freeze_Subprogram
- 
     begin
        --  We suppress the initialization of the dispatch table entry when
        --  not Tagged_Type_Expansion because the dispatching mechanism is
--- 7048,7056 ----
     -----------------------
  
     procedure Freeze_Subprogram (N : Node_Id) is
!       Loc  : constant Source_Ptr := Sloc (N);
        Subp : constant Entity_Id  := Entity (N);
  
     begin
        --  We suppress the initialization of the dispatch table entry when
        --  not Tagged_Type_Expansion because the dispatching mechanism is
*************** package body Exp_Ch6 is
*** 7866,7871 ****
--- 7067,7074 ----
           declare
              Typ : constant Entity_Id := Scope (DTC_Entity (Subp));
  
+             L : List_Id;
+ 
           begin
              --  Handle private overridden primitives
  
*************** package body Exp_Ch6 is
*** 7902,7912 ****
                   or else Present (Interface_Alias (Subp))
                 then
                    if Is_Predefined_Dispatching_Operation (Subp) then
!                      Register_Predefined_DT_Entry (Subp);
                    end if;
  
!                   Insert_Actions_After (N,
!                     Register_Primitive (Loc, Prim => Subp));
                 end if;
              end if;
           end;
--- 7105,7126 ----
                   or else Present (Interface_Alias (Subp))
                 then
                    if Is_Predefined_Dispatching_Operation (Subp) then
!                      L := Register_Predefined_Primitive (Loc, Subp);
!                   else
!                      L := New_List;
                    end if;
  
!                   Append_List_To (L, Register_Primitive (Loc, Subp));
! 
!                   if Is_Empty_List (L) then
!                      null;
! 
!                   elsif No (Actions (N)) then
!                      Set_Actions (N, L);
! 
!                   else
!                      Append_List (L, Actions (N));
!                   end if;
                 end if;
              end if;
           end;
*************** package body Exp_Ch6 is
*** 7924,7931 ****
     --------------------------
  
     function Has_BIP_Extra_Formal
!      (E    : Entity_Id;
!       Kind : BIP_Formal_Kind) return Boolean
     is
        Extra_Formal : Entity_Id := Extra_Formals (E);
  
--- 7138,7146 ----
     --------------------------
  
     function Has_BIP_Extra_Formal
!      (E              : Entity_Id;
!       Kind           : BIP_Formal_Kind;
!       Must_Be_Frozen : Boolean := True) return Boolean
     is
        Extra_Formal : Entity_Id := Extra_Formals (E);
  
*************** package body Exp_Ch6 is
*** 7935,7941 ****
        --  extra formals are added when the target subprogram is frozen; see
        --  Expand_Dispatching_Call).
  
!       pragma Assert (Is_Frozen (E)
          or else (Ekind (E) = E_Subprogram_Type
                     and then Is_Dispatch_Table_Entity (E))
          or else (Is_Dispatching_Operation (E)
--- 7150,7156 ----
        --  extra formals are added when the target subprogram is frozen; see
        --  Expand_Dispatching_Call).
  
!       pragma Assert ((Is_Frozen (E) or else not Must_Be_Frozen)
          or else (Ekind (E) = E_Subprogram_Type
                     and then Is_Dispatch_Table_Entity (E))
          or else (Is_Dispatching_Operation (E)
*************** package body Exp_Ch6 is
*** 8345,8357 ****
  
              Remove_Side_Effects (A);
  
!             if Is_Controlling_Actual (A)
!               and then Etype (F) /= Etype (A)
!             then
                 Append_To (Actuals,
!                  Make_Unchecked_Type_Conversion (Loc,
!                    New_Occurrence_Of (Etype (F), Loc),
!                    New_Copy_Tree (A)));
              else
                 Append_To (Actuals, New_Copy_Tree (A));
              end if;
--- 7560,7571 ----
  
              Remove_Side_Effects (A);
  
!             --  Ensure matching types to avoid reporting spurious errors since
!             --  the called helper may have been built for a parent type.
! 
!             if Etype (F) /= Etype (A) then
                 Append_To (Actuals,
!                  Unchecked_Convert_To (Etype (F), New_Copy_Tree (A)));
              else
                 Append_To (Actuals, New_Copy_Tree (A));
              end if;
*************** package body Exp_Ch6 is
*** 8512,8600 ****
        end if;
     end Install_Class_Preconditions_Check;
  
-    -----------------------------------
-    -- Is_Build_In_Place_Result_Type --
-    -----------------------------------
- 
-    function Is_Build_In_Place_Result_Type (Typ : Entity_Id) return Boolean is
-    begin
-       if not Expander_Active then
-          return False;
-       end if;
- 
-       --  In Ada 2005 all functions with an inherently limited return type
-       --  must be handled using a build-in-place profile, including the case
-       --  of a function with a limited interface result, where the function
-       --  may return objects of nonlimited descendants.
- 
-       if Is_Limited_View (Typ) then
-          return Ada_Version >= Ada_2005 and then not Debug_Flag_Dot_L;
- 
-       else
-          if Debug_Flag_Dot_9 then
-             return False;
-          end if;
- 
-          if Has_Interfaces (Typ) then
-             return False;
-          end if;
- 
-          declare
-             T : Entity_Id := Typ;
-          begin
-             --  For T'Class, return True if it's True for T. This is necessary
-             --  because a class-wide function might say "return F (...)", where
-             --  F returns the corresponding specific type. We need a loop in
-             --  case T is a subtype of a class-wide type.
- 
-             while Is_Class_Wide_Type (T) loop
-                T := Etype (T);
-             end loop;
- 
-             --  If this is a generic formal type in an instance, return True if
-             --  it's True for the generic actual type.
- 
-             if Nkind (Parent (T)) = N_Subtype_Declaration
-               and then Present (Generic_Parent_Type (Parent (T)))
-             then
-                T := Entity (Subtype_Indication (Parent (T)));
- 
-                if Present (Full_View (T)) then
-                   T := Full_View (T);
-                end if;
-             end if;
- 
-             if Present (Underlying_Type (T)) then
-                T := Underlying_Type (T);
-             end if;
- 
-             declare
-                Result : Boolean;
-                --  So we can stop here in the debugger
-             begin
-                --  ???For now, enable build-in-place for a very narrow set of
-                --  controlled types. Change "if True" to "if False" to
-                --  experiment with more controlled types. Eventually, we might
-                --  like to enable build-in-place for all tagged types, all
-                --  types that need finalization, and all caller-unknown-size
-                --  types.
- 
-                if True then
-                   Result := Is_Controlled (T)
-                     and then not Is_Generic_Actual_Type (T)
-                     and then Present (Enclosing_Subprogram (T))
-                     and then not Is_Compilation_Unit (Enclosing_Subprogram (T))
-                     and then Ekind (Enclosing_Subprogram (T)) = E_Procedure;
-                else
-                   Result := Is_Controlled (T);
-                end if;
- 
-                return Result;
-             end;
-          end;
-       end if;
-    end Is_Build_In_Place_Result_Type;
- 
     ------------------------------
     -- Is_Build_In_Place_Entity --
     ------------------------------
--- 7726,7731 ----
*************** package body Exp_Ch6 is
*** 8628,8633 ****
--- 7759,7767 ----
     --------------------------------
  
     function Is_Build_In_Place_Function (E : Entity_Id) return Boolean is
+       Kind : constant Entity_Kind := Ekind (E);
+       Typ  : constant Entity_Id   := Etype (E);
+ 
     begin
        --  This function is called from Expand_Subtype_From_Expr during
        --  semantic analysis, even when expansion is off. In those cases
*************** package body Exp_Ch6 is
*** 8637,8658 ****
           return False;
        end if;
  
!       if Ekind (E) in E_Function | E_Generic_Function
!         or else (Ekind (E) = E_Subprogram_Type
!                   and then Etype (E) /= Standard_Void_Type)
!       then
!          --  If the function is imported from a foreign language, we don't do
!          --  build-in-place. Note that Import (Ada) functions can do
!          --  build-in-place. Note that it is OK for a build-in-place function
!          --  to return a type with a foreign convention; the build-in-place
!          --  machinery will ensure there is no copying.
  
!          return Is_Build_In_Place_Result_Type (Etype (E))
!            and then not (Has_Foreign_Convention (E) and then Is_Imported (E))
!            and then not Debug_Flag_Dot_L;
!       else
!          return False;
!       end if;
     end Is_Build_In_Place_Function;
  
     -------------------------------------
--- 7771,7786 ----
           return False;
        end if;
  
!       --  We never use build-in-place if the convention is other than Ada,
!       --  but note that it is OK for a build-in-place function to return a
!       --  type with a foreign convention because the machinery ensures there
!       --  is no copying.
  
!       return (Kind in E_Function | E_Generic_Function
!                or else
!              (Kind = E_Subprogram_Type and then Typ /= Standard_Void_Type))
!         and then Is_Build_In_Place_Result_Type (Typ)
!         and then not Has_Foreign_Convention (E);
     end Is_Build_In_Place_Function;
  
     -------------------------------------
*************** package body Exp_Ch6 is
*** 8707,8720 ****
           raise Program_Error;
        end if;
  
!       declare
!          Result : constant Boolean := Is_Build_In_Place_Function (Function_Id);
!          --  So we can stop here in the debugger
!       begin
!          return Result;
!       end;
     end Is_Build_In_Place_Function_Call;
  
     -----------------------
     -- Is_Null_Procedure --
     -----------------------
--- 7835,7905 ----
           raise Program_Error;
        end if;
  
!       if Is_Build_In_Place_Function (Function_Id) then
!          return True;
! 
!       --  True also if the function has BIP Formals
! 
!       else
!          declare
!             Kind : constant Entity_Kind := Ekind (Function_Id);
! 
!          begin
!             if (Kind in E_Function | E_Generic_Function
!                   or else (Kind = E_Subprogram_Type
!                              and then
!                            Etype (Function_Id) /= Standard_Void_Type))
!               and then Has_BIP_Formals (Function_Id)
!             then
!                --  So we can stop here in the debugger
!                return True;
!             else
!                return False;
!             end if;
!          end;
!       end if;
     end Is_Build_In_Place_Function_Call;
  
+    -----------------------------------
+    -- Is_Build_In_Place_Result_Type --
+    -----------------------------------
+ 
+    function Is_Build_In_Place_Result_Type (Typ : Entity_Id) return Boolean is
+    begin
+       if not Expander_Active then
+          return False;
+       end if;
+ 
+       --  In Ada 2005 all functions with an inherently limited return type
+       --  must be handled using a build-in-place profile, including the case
+       --  of a function with a limited interface result, where the function
+       --  may return objects of nonlimited descendants.
+ 
+       return Is_Limited_View (Typ)
+         and then Ada_Version >= Ada_2005
+         and then not Debug_Flag_Dot_L;
+    end Is_Build_In_Place_Result_Type;
+ 
+    -------------------------------------
+    -- Is_Build_In_Place_Return_Object --
+    -------------------------------------
+ 
+    function Is_Build_In_Place_Return_Object (E : Entity_Id) return Boolean is
+    begin
+       return Is_Return_Object (E)
+         and then Is_Build_In_Place_Function (Return_Applies_To (Scope (E)));
+    end Is_Build_In_Place_Return_Object;
+ 
+    -----------------------------------
+    -- Is_By_Reference_Return_Object --
+    -----------------------------------
+ 
+    function Is_By_Reference_Return_Object (E : Entity_Id) return Boolean is
+    begin
+       return Is_Return_Object (E)
+         and then Is_By_Reference_Type (Etype (Return_Applies_To (Scope (E))));
+    end Is_By_Reference_Return_Object;
+ 
     -----------------------
     -- Is_Null_Procedure --
     -----------------------
*************** package body Exp_Ch6 is
*** 8774,8779 ****
--- 7959,7986 ----
        end if;
     end Is_Null_Procedure;
  
+    --------------------------------------
+    -- Is_Secondary_Stack_Return_Object --
+    --------------------------------------
+ 
+    function Is_Secondary_Stack_Return_Object (E : Entity_Id) return Boolean is
+    begin
+       return Is_Return_Object (E)
+         and then Needs_Secondary_Stack (Etype (Return_Applies_To (Scope (E))));
+    end Is_Secondary_Stack_Return_Object;
+ 
+    ------------------------------
+    -- Is_Special_Return_Object --
+    ------------------------------
+ 
+    function Is_Special_Return_Object (E : Entity_Id) return Boolean is
+    begin
+       return Is_Build_In_Place_Return_Object (E)
+          or else Is_Secondary_Stack_Return_Object (E)
+          or else (Back_End_Return_Slot
+                    and then Is_By_Reference_Return_Object (E));
+    end Is_Special_Return_Object;
+ 
     -------------------------------------------
     -- Make_Build_In_Place_Call_In_Allocator --
     -------------------------------------------
*************** package body Exp_Ch6 is
*** 9351,9356 ****
--- 8558,8568 ----
        --  initialization expression of the object to Empty, which would be
        --  illegal Ada, and would cause gigi to misallocate X.
  
+       Is_OK_Return_Object : constant Boolean :=
+         Is_Return_Object (Obj_Def_Id)
+           and then
+         not Has_Foreign_Convention (Return_Applies_To (Scope (Obj_Def_Id)));
+ 
     --  Start of processing for Make_Build_In_Place_Call_In_Object_Declaration
  
     begin
*************** package body Exp_Ch6 is
*** 9403,9409 ****
        --  the result object is in a different (transient) scope, so won't cause
        --  freezing.
  
!       if Definite and then not Is_Return_Object (Obj_Def_Id) then
  
           --  The presence of an address clause complicates the build-in-place
           --  expansion because the indicated address must be processed before
--- 8615,8621 ----
        --  the result object is in a different (transient) scope, so won't cause
        --  freezing.
  
!       if Definite and then not Is_OK_Return_Object then
  
           --  The presence of an address clause complicates the build-in-place
           --  expansion because the indicated address must be processed before
*************** package body Exp_Ch6 is
*** 9486,9492 ****
        --  really be directly built in place in the aggregate and not in a
        --  temporary. ???)
  
!       if Is_Return_Object (Obj_Def_Id) then
           Pass_Caller_Acc := True;
  
           --  When the enclosing function has a BIP_Alloc_Form formal then we
--- 8698,8704 ----
        --  really be directly built in place in the aggregate and not in a
        --  temporary. ???)
  
!       if Is_OK_Return_Object then
           Pass_Caller_Acc := True;
  
           --  When the enclosing function has a BIP_Alloc_Form formal then we
*************** package body Exp_Ch6 is
*** 9671,9677 ****
        --  itself the return expression of an enclosing BIP function, then mark
        --  the object as having no initialization.
  
!       if Definite and then not Is_Return_Object (Obj_Def_Id) then
  
           --  The related object declaration is encased in a transient block
           --  because the build-in-place function call contains at least one
--- 8883,8889 ----
        --  itself the return expression of an enclosing BIP function, then mark
        --  the object as having no initialization.
  
!       if Definite and then not Is_OK_Return_Object then
  
           --  The related object declaration is encased in a transient block
           --  because the build-in-place function call contains at least one
*************** package body Exp_Ch6 is
*** 10028,10034 ****
          and then not No_Run_Time_Mode
          and then (Has_Task (Typ)
                      or else (Is_Class_Wide_Type (Typ)
!                                and then Is_Limited_Record (Typ)
                                 and then not Has_Aspect
                                   (Etype (Typ), Aspect_No_Task_Parts)));
     end Might_Have_Tasks;
--- 9240,9246 ----
          and then not No_Run_Time_Mode
          and then (Has_Task (Typ)
                      or else (Is_Class_Wide_Type (Typ)
!                                and then Is_Limited_Record (Etype (Typ))
                                 and then not Has_Aspect
                                   (Etype (Typ), Aspect_No_Task_Parts)));
     end Might_Have_Tasks;
*************** package body Exp_Ch6 is
*** 10038,10044 ****
     ----------------------------
  
     function Needs_BIP_Task_Actuals (Func_Id : Entity_Id) return Boolean is
-       pragma Assert (Is_Build_In_Place_Function (Func_Id));
        Subp_Id  : Entity_Id;
        Func_Typ : Entity_Id;
  
--- 9250,9255 ----
*************** package body Exp_Ch6 is
*** 10053,10059 ****
        --  formals.
  
        if Is_Thunk (Func_Id) then
!          Subp_Id := Thunk_Entity (Func_Id);
  
        --  Common case
  
--- 9264,9270 ----
        --  formals.
  
        if Is_Thunk (Func_Id) then
!          Subp_Id := Thunk_Target (Func_Id);
  
        --  Common case
  
*************** package body Exp_Ch6 is
*** 10063,10068 ****
--- 9274,9285 ----
  
        Func_Typ := Underlying_Type (Etype (Subp_Id));
  
+       --  Functions returning types with foreign convention don't have extra
+       --  formals.
+ 
+       if Has_Foreign_Convention (Func_Typ) then
+          return False;
+ 
        --  At first sight, for all the following cases, we could add assertions
        --  to ensure that if Func_Id is frozen then the computed result matches
        --  with the availability of the task master extra formal; unfortunately
*************** package body Exp_Ch6 is
*** 10070,10076 ****
        --  (that is, Is_Frozen has been set by Freeze_Entity but it has not
        --  completed its work).
  
!       if Has_Task (Func_Typ) then
           return True;
  
        elsif Ekind (Func_Id) = E_Function then
--- 9287,9293 ----
        --  (that is, Is_Frozen has been set by Freeze_Entity but it has not
        --  completed its work).
  
!       elsif Has_Task (Func_Typ) then
           return True;
  
        elsif Ekind (Func_Id) = E_Function then
*************** package body Exp_Ch6 is
*** 10097,10122 ****
     -- Needs_BIP_Finalization_Master --
     -----------------------------------
  
!    function Needs_BIP_Finalization_Master
!      (Func_Id : Entity_Id) return Boolean
     is
!       pragma Assert (Is_Build_In_Place_Function (Func_Id));
!       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
     begin
        --  A formal giving the finalization master is needed for build-in-place
        --  functions whose result type needs finalization or is a tagged type.
        --  Tagged primitive build-in-place functions need such a formal because
        --  they can be called by a dispatching call, and extensions may require
!       --  finalization even if the root type doesn't. This means they're also
!       --  needed for tagged nonprimitive build-in-place functions with tagged
!       --  results, since such functions can be called via access-to-function
!       --  types, and those can be used to call primitives, so masters have to
!       --  be passed to all such build-in-place functions, primitive or not.
  
!       return
!         not Restriction_Active (No_Finalization)
!           and then (Needs_Finalization (Func_Typ)
!                      or else Is_Tagged_Type (Func_Typ));
     end Needs_BIP_Finalization_Master;
  
     --------------------------
--- 9314,9337 ----
     -- Needs_BIP_Finalization_Master --
     -----------------------------------
  
!    function Needs_BIP_Finalization_Master (Func_Id : Entity_Id) return Boolean
     is
!       Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
! 
     begin
        --  A formal giving the finalization master is needed for build-in-place
        --  functions whose result type needs finalization or is a tagged type.
        --  Tagged primitive build-in-place functions need such a formal because
        --  they can be called by a dispatching call, and extensions may require
!       --  finalization even if the root type doesn't. This means nonprimitive
!       --  build-in-place functions with tagged results also need it, since such
!       --  functions can be called via access-to-function types, and those can
!       --  be used to call primitives, so the formal needs to be passed to all
!       --  such build-in-place functions, primitive or not.
  
!       return not Restriction_Active (No_Finalization)
!         and then (Needs_Finalization (Typ) or else Is_Tagged_Type (Typ))
!         and then not Has_Foreign_Convention (Typ);
     end Needs_BIP_Finalization_Master;
  
     --------------------------
*************** package body Exp_Ch6 is
*** 10124,10133 ****
     --------------------------
  
     function Needs_BIP_Alloc_Form (Func_Id : Entity_Id) return Boolean is
!       pragma Assert (Is_Build_In_Place_Function (Func_Id));
!       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
     begin
!       return Requires_Transient_Scope (Func_Typ);
     end Needs_BIP_Alloc_Form;
  
     -------------------------------------
--- 9339,9360 ----
     --------------------------
  
     function Needs_BIP_Alloc_Form (Func_Id : Entity_Id) return Boolean is
!       Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
! 
     begin
!       --  A formal giving the allocation method is needed for build-in-place
!       --  functions whose result type is returned on the secondary stack or
!       --  is a tagged type. Tagged primitive build-in-place functions need
!       --  such a formal because they can be called by a dispatching call, and
!       --  the secondary stack is always used for dispatching-on-result calls.
!       --  This means nonprimitive build-in-place functions with tagged results
!       --  also need it, as such functions can be called via access-to-function
!       --  types, and those can be used to call primitives, so the formal needs
!       --  to be passed to all such build-in-place functions, primitive or not.
! 
!       return not Restriction_Active (No_Secondary_Stack)
!         and then (Needs_Secondary_Stack (Typ) or else Is_Tagged_Type (Typ))
!         and then not Has_Foreign_Convention (Typ);
     end Needs_BIP_Alloc_Form;
  
     -------------------------------------
*************** package body Exp_Ch6 is
*** 10163,10168 ****
--- 9390,9399 ----
        Preserve_Comes_From_Source (Orig_Id, Orig_Decl);
  
        Set_Comes_From_Source (New_Id, False);
+ 
+       --  Preserve aliased indication
+ 
+       Set_Is_Aliased (Orig_Id, Is_Aliased (New_Id));
     end Replace_Renaming_Declaration_Id;
  
     ---------------------------------
*************** package body Exp_Ch6 is
*** 10422,10427 ****
--- 9653,9813 ----
        return Unqual_BIP_Function_Call (Expr);
     end Unqual_BIP_Iface_Function_Call;
  
+    -------------------------------
+    -- Validate_Subprogram_Calls --
+    -------------------------------
+ 
+    procedure Validate_Subprogram_Calls (N : Node_Id) is
+ 
+       function Process_Node (Nod : Node_Id) return Traverse_Result;
+       --  Function to traverse the subtree of N using Traverse_Proc.
+ 
+       ------------------
+       -- Process_Node --
+       ------------------
+ 
+       function Process_Node (Nod : Node_Id) return Traverse_Result is
+       begin
+          case Nkind (Nod) is
+             when N_Entry_Call_Statement
+                | N_Procedure_Call_Statement
+                | N_Function_Call
+               =>
+                declare
+                   Call_Node : Node_Id renames Nod;
+                   Subp      : Entity_Id;
+ 
+                begin
+                   --  Call using access to subprogram with explicit dereference
+ 
+                   if Nkind (Name (Call_Node)) = N_Explicit_Dereference then
+                      Subp := Etype (Name (Call_Node));
+ 
+                   --  Prefix notation calls
+ 
+                   elsif Nkind (Name (Call_Node)) = N_Selected_Component then
+                      Subp := Entity (Selector_Name (Name (Call_Node)));
+ 
+                   --  Call to member of entry family, where Name is an indexed
+                   --  component, with the prefix being a selected component
+                   --  giving the task and entry family name, and the index
+                   --  being the entry index.
+ 
+                   elsif Nkind (Name (Call_Node)) = N_Indexed_Component then
+                      Subp :=
+                        Entity (Selector_Name (Prefix (Name (Call_Node))));
+ 
+                   --  Normal case
+ 
+                   else
+                      Subp := Entity (Name (Call_Node));
+                   end if;
+ 
+                   pragma Assert (Check_BIP_Actuals (Call_Node, Subp));
+                end;
+ 
+             --  Skip generic bodies
+ 
+             when N_Package_Body =>
+                if Ekind (Unique_Defining_Entity (Nod)) = E_Generic_Package then
+                   return Skip;
+                end if;
+ 
+             when N_Subprogram_Body =>
+                if Ekind (Unique_Defining_Entity (Nod)) in E_Generic_Function
+                                                         | E_Generic_Procedure
+                then
+                   return Skip;
+                end if;
+ 
+             --  Nodes we want to ignore
+ 
+             --  Skip calls placed in the full declaration of record types since
+             --  the call will be performed by their Init Proc; for example,
+             --  calls initializing default values of discriminants or calls
+             --  providing the initial value of record type components. Other
+             --  full type declarations are processed because they may have
+             --  calls that must be checked. For example:
+ 
+             --    type T is array (1 .. Some_Function_Call (...)) of Some_Type;
+ 
+             --  ??? More work needed here to handle the following case:
+ 
+             --    type Rec is record
+             --       F : String (1 .. <some complicated expression>);
+             --    end record;
+ 
+             when N_Full_Type_Declaration =>
+                if Is_Record_Type (Defining_Entity (Nod)) then
+                   return Skip;
+                end if;
+ 
+             --  Skip calls placed in subprogram specifications since function
+             --  calls initializing default parameter values will be processed
+             --  when the call to the subprogram is found (if the default actual
+             --  parameter is required), and calls found in aspects will be
+             --  processed when their corresponding pragma is found, or in the
+             --  specific case of class-wide pre-/postconditions, when their
+             --  helpers are found.
+ 
+             when N_Procedure_Specification
+                | N_Function_Specification
+               =>
+                return Skip;
+ 
+             when N_Abstract_Subprogram_Declaration
+                | N_At_Clause
+                | N_Call_Marker
+                | N_Empty
+                | N_Enumeration_Representation_Clause
+                | N_Enumeration_Type_Definition
+                | N_Function_Instantiation
+                | N_Freeze_Generic_Entity
+                | N_Generic_Function_Renaming_Declaration
+                | N_Generic_Package_Renaming_Declaration
+                | N_Generic_Procedure_Renaming_Declaration
+                | N_Generic_Package_Declaration
+                | N_Generic_Subprogram_Declaration
+                | N_Itype_Reference
+                | N_Number_Declaration
+                | N_Package_Instantiation
+                | N_Package_Renaming_Declaration
+                | N_Pragma
+                | N_Procedure_Instantiation
+                | N_Protected_Type_Declaration
+                | N_Record_Representation_Clause
+                | N_Validate_Unchecked_Conversion
+                | N_Variable_Reference_Marker
+                | N_Use_Package_Clause
+                | N_Use_Type_Clause
+                | N_With_Clause
+               =>
+                return Skip;
+ 
+             when others =>
+                null;
+          end case;
+ 
+          return OK;
+       end Process_Node;
+ 
+       procedure Check_Calls is new Traverse_Proc (Process_Node);
+ 
+    --  Start of processing for Validate_Subprogram_Calls
+ 
+    begin
+       --  No action required if we are not generating code or compiling sources
+       --  that have errors.
+ 
+       if Serious_Errors_Detected > 0
+         or else Operating_Mode /= Generate_Code
+       then
+          return;
+       end if;
+ 
+       Check_Calls (N);
+    end Validate_Subprogram_Calls;
+ 
     --------------
     -- Warn_BIP --
     --------------
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch6.ads gcc-13.1.0/gcc/ada/exp_ch6.ads
*** gcc-12.2.0/gcc/ada/exp_ch6.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch6.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch6 is
*** 99,104 ****
--- 99,114 ----
     --  Adds Extra_Actual as a named parameter association for the formal
     --  Extra_Formal in Subprogram_Call.
  
+    procedure Apply_CW_Accessibility_Check (Exp : Node_Id; Func : Entity_Id);
+    --  Ada 2005 (AI95-344): If the result type is class-wide, insert a check
+    --  that the level of the return expression's underlying type is not deeper
+    --  than the level of the master enclosing the function. Always generate the
+    --  check when the type of the return expression is class-wide, when it's a
+    --  type conversion, or when it's a formal parameter. Otherwise suppress the
+    --  check in the case where the return expression has a specific type whose
+    --  level is known not to be statically deeper than the result type of the
+    --  function.
+ 
     function BIP_Formal_Suffix (Kind : BIP_Formal_Kind) return String;
     --  Ada 2005 (AI-318-02): Returns a string to be used as the suffix of names
     --  for build-in-place formal parameters of the given kind.
*************** package Exp_Ch6 is
*** 121,148 ****
     --  The returned node is the root of the procedure body which will replace
     --  the original function body, which is not needed for the C program.
  
     procedure Install_Class_Preconditions_Check (Call_Node : Node_Id);
     --  Install check of class-wide preconditions on the caller.
  
     function Is_Build_In_Place_Entity (E : Entity_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if E is a BIP entity.
  
-    function Is_Build_In_Place_Result_Type (Typ : Entity_Id) return Boolean;
-    --  Ada 2005 (AI-318-02): Returns True if functions returning the type use
-    --  build-in-place protocols. For inherently limited types, this must be
-    --  True in >= Ada 2005, and must be False in Ada 95. For other types, it
-    --  can be True or False, and the decision should be based on efficiency,
-    --  and should be the same for all language versions, so that mixed-dialect
-    --  programs will work.
-    --
-    --  For inherently limited types in Ada 2005, True means that calls will
-    --  actually be build-in-place in all cases. For other types, build-in-place
-    --  will be used when possible, but we need to make a copy in some
-    --  cases. For example, for "X := F(...);" if F can see X, or if F can
-    --  propagate exceptions, we need to store its result in a temp in general,
-    --  and copy the temp into X. Also, for "return Global_Var;" Global_Var
-    --  needs to be copied into the function result object.
- 
     function Is_Build_In_Place_Function (E : Entity_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if E denotes a function, generic
     --  function, or access-to-function type for which
--- 131,154 ----
     --  The returned node is the root of the procedure body which will replace
     --  the original function body, which is not needed for the C program.
  
+    function Has_BIP_Extra_Formal
+      (E              : Entity_Id;
+       Kind           : BIP_Formal_Kind;
+       Must_Be_Frozen : Boolean := True) return Boolean;
+    --  Given a subprogram, subprogram type, entry or entry family, return True
+    --  if E has the BIP extra formal associated with Kind. In general this
+    --  subprogram must be invoked with a frozen entity or a subprogram type of
+    --  a dispatching call since we can only rely on the availability of extra
+    --  formals on these entities; this requirement can be relaxed using the
+    --  formal Must_Be_Frozen in scenarios where we know that the entity has
+    --  the extra formals.
+ 
     procedure Install_Class_Preconditions_Check (Call_Node : Node_Id);
     --  Install check of class-wide preconditions on the caller.
  
     function Is_Build_In_Place_Entity (E : Entity_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if E is a BIP entity.
  
     function Is_Build_In_Place_Function (E : Entity_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if E denotes a function, generic
     --  function, or access-to-function type for which
*************** package Exp_Ch6 is
*** 153,164 ****
     function Is_Build_In_Place_Function_Call (N : Node_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if N denotes a call to a function
     --  that requires handling as a build-in-place call (possibly qualified or
!    --  converted).
  
     function Is_Null_Procedure (Subp : Entity_Id) return Boolean;
     --  Predicate to recognize stubbed procedures and null procedures, which
     --  can be inlined unconditionally in all cases.
  
     procedure Make_Build_In_Place_Call_In_Allocator
       (Allocator     : Node_Id;
        Function_Call : Node_Id);
--- 159,195 ----
     function Is_Build_In_Place_Function_Call (N : Node_Id) return Boolean;
     --  Ada 2005 (AI-318-02): Returns True if N denotes a call to a function
     --  that requires handling as a build-in-place call (possibly qualified or
!    --  converted); that is, BIP function calls, and calls to functions with
!    --  inherited BIP formals.
! 
!    function Is_Build_In_Place_Result_Type (Typ : Entity_Id) return Boolean;
!    --  Ada 2005 (AI-318-02): Returns True if functions returning the type use
!    --  build-in-place protocols. For inherently limited types, this must be
!    --  True in >= Ada 2005 and must be False in Ada 95.
! 
!    function Is_Build_In_Place_Return_Object (E : Entity_Id) return Boolean;
!    --  Ada 2005 (AI-318-02): Return True if E is a return object of a function
!    --  that uses build-in-place protocols.
! 
!    function Is_By_Reference_Return_Object (E : Entity_Id) return Boolean;
!    --  Return True if E is a return object of a function whose return type is
!    --  required to be passed by reference, as defined in (RM 6.2(4-9)).
  
     function Is_Null_Procedure (Subp : Entity_Id) return Boolean;
     --  Predicate to recognize stubbed procedures and null procedures, which
     --  can be inlined unconditionally in all cases.
  
+    function Is_Secondary_Stack_Return_Object (E : Entity_Id) return Boolean;
+    --  Return True if E is a return object of a function whose return type is
+    --  returned on the secondary stack.
+ 
+    function Is_Special_Return_Object (E : Entity_Id) return Boolean;
+    --  Return True if E is the return object of a function and is handled in a
+    --  special way by the expander. In most cases, return objects are handled
+    --  like any other variables or constants but, in a few special cases, they
+    --  are further expanded into more elaborate constructs, whose common goal
+    --  is to elide the copy operation associated with the return.
+ 
     procedure Make_Build_In_Place_Call_In_Allocator
       (Allocator     : Node_Id;
        Function_Call : Node_Id);
*************** package Exp_Ch6 is
*** 272,275 ****
--- 303,314 ----
     --  to reference the secondary dispatch table of an interface; otherwise
     --  return Empty.
  
+    procedure Validate_Subprogram_Calls (N : Node_Id);
+    --  Check that the number of actuals (including extra actuals) of calls in
+    --  the subtree N match their corresponding formals; check also that the
+    --  names of BIP extra actuals and formals match.
+ 
+ private
+    pragma Inline (Is_Build_In_Place_Return_Object);
+ 
  end Exp_Ch6;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch7.adb gcc-13.1.0/gcc/ada/exp_ch7.adb
*** gcc-12.2.0/gcc/ada/exp_ch7.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch7.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 28,34 ****
  --    - transient scopes
  
  with Atree;          use Atree;
- with Contracts;      use Contracts;
  with Debug;          use Debug;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
--- 28,33 ----
*************** with Sinfo.Nodes;    use Sinfo.Nodes;
*** 59,65 ****
  with Sinfo.Utils;    use Sinfo.Utils;
  with Sem;            use Sem;
  with Sem_Aux;        use Sem_Aux;
- with Sem_Ch3;        use Sem_Ch3;
  with Sem_Ch7;        use Sem_Ch7;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Res;        use Sem_Res;
--- 58,63 ----
*************** package body Exp_Ch7 is
*** 76,90 ****
     -- Transient Scope Management --
     --------------------------------
  
!    --  A transient scope is created when temporary objects are created by the
!    --  compiler. These temporary objects are allocated on the secondary stack
!    --  and the transient scope is responsible for finalizing the object when
!    --  appropriate and reclaiming the memory at the right time. The temporary
!    --  objects are generally the objects allocated to store the result of a
!    --  function returning an unconstrained or a tagged value. Expressions
!    --  needing to be wrapped in a transient scope (functions calls returning
!    --  unconstrained or tagged values) may appear in 3 different contexts which
!    --  lead to 3 different kinds of transient scope expansion:
  
     --   1. In a simple statement (procedure call, assignment, ...). In this
     --      case the instruction is wrapped into a transient block. See
--- 74,88 ----
     -- Transient Scope Management --
     --------------------------------
  
!    --  A transient scope is needed when certain temporary objects are created
!    --  by the compiler. These temporary objects are allocated on the secondary
!    --  stack and/or need finalization, and the transient scope is responsible
!    --  for finalizing the objects and reclaiming the memory of the secondary
!    --  stack at the appropriate time. They are generally objects allocated to
!    --  store the result of a function returning an unconstrained or controlled
!    --  value. Expressions needing to be wrapped in a transient scope may appear
!    --  in three different contexts which lead to different kinds of transient
!    --  scope expansion:
  
     --   1. In a simple statement (procedure call, assignment, ...). In this
     --      case the instruction is wrapped into a transient block. See
*************** package body Exp_Ch7 is
*** 99,132 ****
     --      declaration and the secondary stack deallocation is done in the
     --      proper enclosing scope. See Wrap_Transient_Declaration for details.
  
-    --  Note about functions returning tagged types: it has been decided to
-    --  always allocate their result in the secondary stack, even though is not
-    --  absolutely mandatory when the tagged type is constrained because the
-    --  caller knows the size of the returned object and thus could allocate the
-    --  result in the primary stack. An exception to this is when the function
-    --  builds its result in place, as is done for functions with inherently
-    --  limited result types for Ada 2005. In that case, certain callers may
-    --  pass the address of a constrained object as the target object for the
-    --  function result.
- 
-    --  By allocating tagged results in the secondary stack a number of
-    --  implementation difficulties are avoided:
- 
-    --    - If it is a dispatching function call, the computation of the size of
-    --      the result is possible but complex from the outside.
- 
-    --    - If the returned type is controlled, the assignment of the returned
-    --      value to the anonymous object involves an Adjust, and we have no
-    --      easy way to access the anonymous object created by the back end.
- 
-    --    - If the returned type is class-wide, this is an unconstrained type
-    --      anyway.
- 
-    --  Furthermore, the small loss in efficiency which is the result of this
-    --  decision is not such a big deal because functions returning tagged types
-    --  are not as common in practice compared to functions returning access to
-    --  a tagged type.
- 
     --------------------------------------------------
     -- Transient Blocks and Finalization Management --
     --------------------------------------------------
--- 97,102 ----
*************** package body Exp_Ch7 is
*** 157,170 ****
     -- Finalization Management --
     -----------------------------
  
!    --  This part describe how Initialization/Adjustment/Finalization procedures
!    --  are generated and called. Two cases must be considered, types that are
!    --  Controlled (Is_Controlled flag set) and composite types that contain
!    --  controlled components (Has_Controlled_Component flag set). In the first
!    --  case the procedures to call are the user-defined primitive operations
!    --  Initialize/Adjust/Finalize. In the second case, GNAT generates
!    --  Deep_Initialize, Deep_Adjust and Deep_Finalize that are in charge
!    --  of calling the former procedures on the controlled components.
  
     --  For records with Has_Controlled_Component set, a hidden "controller"
     --  component is inserted. This controller component contains its own
--- 127,140 ----
     -- Finalization Management --
     -----------------------------
  
!    --  This part describes how Initialization/Adjustment/Finalization
!    --  procedures are generated and called. Two cases must be considered: types
!    --  that are Controlled (Is_Controlled flag set) and composite types that
!    --  contain controlled components (Has_Controlled_Component flag set). In
!    --  the first case the procedures to call are the user-defined primitive
!    --  operations Initialize/Adjust/Finalize. In the second case, GNAT
!    --  generates Deep_Initialize, Deep_Adjust and Deep_Finalize that are in
!    --  charge of calling the former procedures on the controlled components.
  
     --  For records with Has_Controlled_Component set, a hidden "controller"
     --  component is inserted. This controller component contains its own
*************** package body Exp_Ch7 is
*** 334,353 ****
     --  such as for task termination. Fin_Id is the finalizer declaration
     --  entity.
  
-    procedure Build_Finalizer_Helper
-      (N                 : Node_Id;
-       Clean_Stmts       : List_Id;
-       Mark_Id           : Entity_Id;
-       Top_Decls         : List_Id;
-       Defer_Abort       : Boolean;
-       Fin_Id            : out Entity_Id;
-       Finalize_Old_Only : Boolean);
-    --  An internal routine which does all of the heavy lifting on behalf of
-    --  Build_Finalizer.
- 
     procedure Build_Finalizer_Call (N : Node_Id; Fin_Id : Entity_Id);
!    --  N is a construct which contains a handled sequence of statements, Fin_Id
!    --  is the entity of a finalizer. Create an At_End handler which covers the
     --  statements of N and calls Fin_Id. If the handled statement sequence has
     --  an exception handler, the statements will be wrapped in a block to avoid
     --  unwanted interaction with the new At_End handler.
--- 304,312 ----
     --  such as for task termination. Fin_Id is the finalizer declaration
     --  entity.
  
     procedure Build_Finalizer_Call (N : Node_Id; Fin_Id : Entity_Id);
!    --  N is a construct that contains a handled sequence of statements, Fin_Id
!    --  is the entity of a finalizer. Create an At_End handler that covers the
     --  statements of N and calls Fin_Id. If the handled statement sequence has
     --  an exception handler, the statements will be wrapped in a block to avoid
     --  unwanted interaction with the new At_End handler.
*************** package body Exp_Ch7 is
*** 469,478 ****
     --  of the formal of Proc, or force a conversion to the class-wide type in
     --  the case where the operation is abstract.
  
-    function Enclosing_Function (E : Entity_Id) return Entity_Id;
-    --  Given an arbitrary entity, traverse the scope chain looking for the
-    --  first enclosing function. Return Empty if no function was found.
- 
     function Make_Call
       (Loc       : Source_Ptr;
        Proc_Id   : Entity_Id;
--- 428,433 ----
*************** package body Exp_Ch7 is
*** 899,917 ****
        Additional_Cleanup : List_Id) return List_Id
     is
        Is_Asynchronous_Call : constant Boolean :=
!                                Nkind (N) = N_Block_Statement
!                                  and then Is_Asynchronous_Call_Block (N);
!       Is_Master            : constant Boolean :=
!                                Nkind (N) /= N_Entry_Body
!                                  and then Is_Task_Master (N);
!       Is_Protected_Body    : constant Boolean :=
!                                Nkind (N) = N_Subprogram_Body
!                                  and then Is_Protected_Subprogram_Body (N);
!       Is_Task_Allocation   : constant Boolean :=
!                                Nkind (N) = N_Block_Statement
!                                  and then Is_Task_Allocation_Block (N);
!       Is_Task_Body         : constant Boolean :=
!                                Nkind (Original_Node (N)) = N_Task_Body;
  
        Loc   : constant Source_Ptr := Sloc (N);
        Stmts : constant List_Id    := New_List;
--- 854,869 ----
        Additional_Cleanup : List_Id) return List_Id
     is
        Is_Asynchronous_Call : constant Boolean :=
!         Nkind (N) = N_Block_Statement and then Is_Asynchronous_Call_Block (N);
!       Is_Master : constant Boolean :=
!         Nkind (N) /= N_Entry_Body and then Is_Task_Master (N);
!       Is_Protected_Subp_Body : constant Boolean :=
!         Nkind (N) = N_Subprogram_Body
!         and then Is_Protected_Subprogram_Body (N);
!       Is_Task_Allocation : constant Boolean :=
!         Nkind (N) = N_Block_Statement and then Is_Task_Allocation_Block (N);
!       Is_Task_Body : constant Boolean :=
!         Nkind (Original_Node (N)) = N_Task_Body;
  
        Loc   : constant Source_Ptr := Sloc (N);
        Stmts : constant List_Id    := New_List;
*************** package body Exp_Ch7 is
*** 937,943 ****
        --  NOTE: The generated code references _object, a parameter to the
        --  procedure.
  
!       elsif Is_Protected_Body then
           declare
              Spec      : constant Node_Id := Parent (Corresponding_Spec (N));
              Conc_Typ  : Entity_Id := Empty;
--- 889,895 ----
        --  NOTE: The generated code references _object, a parameter to the
        --  procedure.
  
!       elsif Is_Protected_Subp_Body then
           declare
              Spec      : constant Node_Id := Parent (Corresponding_Spec (N));
              Conc_Typ  : Entity_Id := Empty;
*************** package body Exp_Ch7 is
*** 962,971 ****
              pragma Assert (Present (Param));
              pragma Assert (Present (Conc_Typ));
  
-             --  Historical note: In earlier versions of GNAT, there was code
-             --  at this point to generate stuff to service entry queues. It is
-             --  now abstracted in Build_Protected_Subprogram_Call_Cleanup.
- 
              Build_Protected_Subprogram_Call_Cleanup
                (Specification (N), Conc_Typ, Loc, Stmts);
           end;
--- 914,919 ----
*************** package body Exp_Ch7 is
*** 1417,1434 ****
        end;
     end Build_Finalization_Master;
  
!    ----------------------------
!    -- Build_Finalizer_Helper --
!    ----------------------------
  
!    procedure Build_Finalizer_Helper
       (N                 : Node_Id;
        Clean_Stmts       : List_Id;
        Mark_Id           : Entity_Id;
        Top_Decls         : List_Id;
        Defer_Abort       : Boolean;
!       Fin_Id            : out Entity_Id;
!       Finalize_Old_Only : Boolean)
     is
        Acts_As_Clean    : constant Boolean :=
                             Present (Mark_Id)
--- 1365,1381 ----
        end;
     end Build_Finalization_Master;
  
!    ---------------------
!    -- Build_Finalizer --
!    ---------------------
  
!    procedure Build_Finalizer
       (N                 : Node_Id;
        Clean_Stmts       : List_Id;
        Mark_Id           : Entity_Id;
        Top_Decls         : List_Id;
        Defer_Abort       : Boolean;
!       Fin_Id            : out Entity_Id)
     is
        Acts_As_Clean    : constant Boolean :=
                             Present (Mark_Id)
*************** package body Exp_Ch7 is
*** 1722,1736 ****
              --  there will need to be multiple finalization routines in the
              --  same scope. See Build_Finalizer for details.
  
!             if Finalize_Old_Only then
!                Fin_Id :=
!                  Make_Defining_Identifier (Loc,
!                    Chars => New_External_Name (Name_uFinalizer_Old));
!             else
!                Fin_Id :=
!                  Make_Defining_Identifier (Loc,
!                    Chars => New_External_Name (Name_uFinalizer));
!             end if;
  
              --  The visibility semantics of AT_END handlers force a strange
              --  separation of spec and body for stack-related finalizers:
--- 1669,1677 ----
              --  there will need to be multiple finalization routines in the
              --  same scope. See Build_Finalizer for details.
  
!             Fin_Id :=
!               Make_Defining_Identifier (Loc,
!                 Chars => New_External_Name (Name_uFinalizer));
  
              --  The visibility semantics of AT_END handlers force a strange
              --  separation of spec and body for stack-related finalizers:
*************** package body Exp_Ch7 is
*** 2101,2110 ****
                 --  In the case where the last construct to contain a controlled
                 --  object is either a nested package, an instantiation or a
                 --  freeze node, the body must be inserted directly after the
!                --  construct.
  
                 if Nkind (Last_Top_Level_Ctrl_Construct) in
                      N_Freeze_Entity | N_Package_Declaration | N_Package_Body
                 then
                    Finalizer_Insert_Nod := Last_Top_Level_Ctrl_Construct;
                 end if;
--- 2042,2056 ----
                 --  In the case where the last construct to contain a controlled
                 --  object is either a nested package, an instantiation or a
                 --  freeze node, the body must be inserted directly after the
!                --  construct, except if the insertion point is already placed
!                --  after the construct, typically in the statement list.
  
                 if Nkind (Last_Top_Level_Ctrl_Construct) in
                      N_Freeze_Entity | N_Package_Declaration | N_Package_Body
+                  and then not
+                   (List_Containing (Last_Top_Level_Ctrl_Construct) = Spec_Decls
+                     and then Present (Stmts)
+                     and then List_Containing (Finalizer_Insert_Nod) = Stmts)
                 then
                    Finalizer_Insert_Nod := Last_Top_Level_Ctrl_Construct;
                 end if;
*************** package body Exp_Ch7 is
*** 2257,2282 ****
  
           Decl := Last_Non_Pragma (Decls);
           while Present (Decl) loop
-             --  Depending on the value of flag Finalize_Old_Only we determine
-             --  which objects get finalized as part of the current finalizer
-             --  being built.
- 
-             --  When True, only temporaries capturing the value of attribute
-             --  'Old are finalized and all other cases are ignored.
- 
-             --  When False, temporary objects used to capture the value of 'Old
-             --  are ignored and all others are considered.
- 
-             if Finalize_Old_Only
-                  xor (Nkind (Decl) = N_Object_Declaration
-                        and then Stores_Attribute_Old_Prefix
-                                   (Defining_Identifier (Decl)))
-             then
-                null;
- 
              --  Library-level tagged types
  
!             elsif Nkind (Decl) = N_Full_Type_Declaration then
                 Typ := Defining_Identifier (Decl);
  
                 --  Ignored Ghost types do not need any cleanup actions because
--- 2203,2211 ----
  
           Decl := Last_Non_Pragma (Decls);
           while Present (Decl) loop
              --  Library-level tagged types
  
!             if Nkind (Decl) = N_Full_Type_Declaration then
                 Typ := Defining_Identifier (Decl);
  
                 --  Ignored Ghost types do not need any cleanup actions because
*************** package body Exp_Ch7 is
*** 2335,2350 ****
                 --  The object is of the form:
                 --    Obj : [constant] Typ [:= Expr];
  
!                --  Do not process tag-to-class-wide conversions because they do
!                --  not yield an object. Do not process the incomplete view of a
!                --  deferred constant. Note that an object initialized by means
!                --  of a build-in-place function call may appear as a deferred
!                --  constant after expansion activities. These kinds of objects
!                --  must be finalized.
  
                 elsif not Is_Imported (Obj_Id)
                   and then Needs_Finalization (Obj_Typ)
-                  and then not Is_Tag_To_Class_Wide_Conversion (Obj_Id)
                   and then not (Ekind (Obj_Id) = E_Constant
                                  and then not Has_Completion (Obj_Id)
                                  and then No (BIP_Initialization_Call (Obj_Id)))
--- 2264,2276 ----
                 --  The object is of the form:
                 --    Obj : [constant] Typ [:= Expr];
  
!                --  Do not process the incomplete view of a deferred constant.
!                --  Note that an object initialized by means of a BIP function
!                --  call may appear as a deferred constant after expansion
!                --  activities. These kinds of objects must be finalized.
  
                 elsif not Is_Imported (Obj_Id)
                   and then Needs_Finalization (Obj_Typ)
                   and then not (Ekind (Obj_Id) = E_Constant
                                  and then not Has_Completion (Obj_Id)
                                  and then No (BIP_Initialization_Call (Obj_Id)))
*************** package body Exp_Ch7 is
*** 2459,2478 ****
                   and then Present (Status_Flag_Or_Transient_Decl (Obj_Id))
                 then
                    Processing_Actions (Has_No_Init => True);
- 
-                --  Detect a case where a source object has been initialized by
-                --  a controlled function call or another object which was later
-                --  rewritten as a class-wide conversion of Ada.Tags.Displace.
- 
-                --     Obj1 : CW_Type := Src_Obj;
-                --     Obj2 : CW_Type := Function_Call (...);
- 
-                --     Obj1 : CW_Type renames (... Ada.Tags.Displace (Src_Obj));
-                --     Tmp  : ... := Function_Call (...)'reference;
-                --     Obj2 : CW_Type renames (... Ada.Tags.Displace (Tmp));
- 
-                elsif Is_Displacement_Of_Object_Or_Function_Result (Obj_Id) then
-                   Processing_Actions (Has_No_Init => True);
                 end if;
  
              --  Inspect the freeze node of an access-to-controlled type and
--- 2385,2390 ----
*************** package body Exp_Ch7 is
*** 2581,2587 ****
                             --  template and not the actually instantiation
                             --  (which is generated too late for us to process
                             --  it), so there is no need to update in particular
!                            --  to update Last_Top_Level_Ctrl_Construct here.
  
                             if Counter_Val > Old_Counter_Val then
                                Counter_Val := Old_Counter_Val;
--- 2493,2499 ----
                             --  template and not the actually instantiation
                             --  (which is generated too late for us to process
                             --  it), so there is no need to update in particular
!                            --  Last_Top_Level_Ctrl_Construct here.
  
                             if Counter_Val > Old_Counter_Val then
                                Counter_Val := Old_Counter_Val;
*************** package body Exp_Ch7 is
*** 2850,2865 ****
                  Left_Opnd  => New_Occurrence_Of (Fin_Mas_Id, Loc),
                  Right_Opnd => Make_Null (Loc));
  
!             --  For constrained or tagged results escalate the condition to
              --  include the allocation format. Generate:
  
              --    if BIPallocform > Secondary_Stack'Pos
              --      and then BIPfinalizationmaster /= null
              --    then
  
!             if not Is_Constrained (Func_Typ)
!               or else Is_Tagged_Type (Func_Typ)
!             then
                 declare
                    Alloc : constant Entity_Id :=
                              Build_In_Place_Formal (Func_Id, BIP_Alloc_Form);
--- 2762,2775 ----
                  Left_Opnd  => New_Occurrence_Of (Fin_Mas_Id, Loc),
                  Right_Opnd => Make_Null (Loc));
  
!             --  For unconstrained or tagged results, escalate the condition to
              --  include the allocation format. Generate:
  
              --    if BIPallocform > Secondary_Stack'Pos
              --      and then BIPfinalizationmaster /= null
              --    then
  
!             if Needs_BIP_Alloc_Form (Func_Id) then
                 declare
                    Alloc : constant Entity_Id :=
                              Build_In_Place_Formal (Func_Id, BIP_Alloc_Form);
*************** package body Exp_Ch7 is
*** 3093,3098 ****
--- 3003,3015 ----
  
                 return;
  
+             --  If the initialization is in the declaration, we're done, so
+             --  early return if we have no more statements or they have been
+             --  rewritten, which means that they were in the source code.
+ 
+             elsif No (Stmt) or else Original_Node (Stmt) /= Stmt then
+                return;
+ 
              --  In all other cases the initialization calls follow the related
              --  object. The general structure of object initialization built by
              --  routine Default_Initialize_Object is as follows:
*************** package body Exp_Ch7 is
*** 3121,3128 ****
              --  Otherwise the initialization calls follow the related object
  
              else
-                pragma Assert (Present (Stmt));
- 
                 Stmt_2 := Next_Suitable_Statement (Stmt);
  
                 --  Check for an optional call to Deep_Initialize which may
--- 3038,3043 ----
*************** package body Exp_Ch7 is
*** 3456,3462 ****
  
              if Is_Return_Object (Obj_Id) then
                 declare
!                   Func_Id : constant Entity_Id := Enclosing_Function (Obj_Id);
                 begin
                    if Is_Build_In_Place_Function (Func_Id)
                      and then Needs_BIP_Finalization_Master (Func_Id)
--- 3371,3379 ----
  
              if Is_Return_Object (Obj_Id) then
                 declare
!                   Func_Id : constant Entity_Id :=
!                               Return_Applies_To (Scope (Obj_Id));
! 
                 begin
                    if Is_Build_In_Place_Function (Func_Id)
                      and then Needs_BIP_Finalization_Master (Func_Id)
*************** package body Exp_Ch7 is
*** 3558,3564 ****
                 New_Occurrence_Of (DT_Ptr, Loc))));
        end Process_Tagged_Type_Declaration;
  
!    --  Start of processing for Build_Finalizer_Helper
  
     begin
        Fin_Id := Empty;
--- 3475,3481 ----
                 New_Occurrence_Of (DT_Ptr, Loc))));
        end Process_Tagged_Type_Declaration;
  
!    --  Start of processing for Build_Finalizer
  
     begin
        Fin_Id := Empty;
*************** package body Exp_Ch7 is
*** 3715,3736 ****
        if Acts_As_Clean or Has_Ctrl_Objs or Has_Tagged_Types then
           Create_Finalizer;
        end if;
!    end Build_Finalizer_Helper;
  
     --------------------------
     -- Build_Finalizer_Call --
     --------------------------
  
     procedure Build_Finalizer_Call (N : Node_Id; Fin_Id : Entity_Id) is
-       Is_Prot_Body : constant Boolean :=
-                        Nkind (N) = N_Subprogram_Body
-                          and then Is_Protected_Subprogram_Body (N);
-       --  Determine whether N denotes the protected version of a subprogram
-       --  which belongs to a protected type.
- 
-       Loc : constant Source_Ptr := Sloc (N);
-       HSS : Node_Id;
- 
     begin
        --  Do not perform this expansion in SPARK mode because we do not create
        --  finalizers in the first place.
--- 3632,3644 ----
        if Acts_As_Clean or Has_Ctrl_Objs or Has_Tagged_Types then
           Create_Finalizer;
        end if;
!    end Build_Finalizer;
  
     --------------------------
     -- Build_Finalizer_Call --
     --------------------------
  
     procedure Build_Finalizer_Call (N : Node_Id; Fin_Id : Entity_Id) is
     begin
        --  Do not perform this expansion in SPARK mode because we do not create
        --  finalizers in the first place.
*************** package body Exp_Ch7 is
*** 3739,3751 ****
           return;
        end if;
  
-       --  The At_End handler should have been assimilated by the finalizer
- 
-       HSS := Handled_Statement_Sequence (N);
-       pragma Assert (No (At_End_Proc (HSS)));
- 
        --  If the construct to be cleaned up is a protected subprogram body, the
!       --  finalizer call needs to be associated with the block which wraps the
        --  unprotected version of the subprogram. The following illustrates this
        --  scenario:
  
--- 3647,3654 ----
           return;
        end if;
  
        --  If the construct to be cleaned up is a protected subprogram body, the
!       --  finalizer call needs to be associated with the block that wraps the
        --  unprotected version of the subprogram. The following illustrates this
        --  scenario:
  
*************** package body Exp_Ch7 is
*** 3765,4275 ****
        --        end;
        --     end Prot_SubpP;
  
!       if Is_Prot_Body then
!          HSS := Handled_Statement_Sequence (Last (Statements (HSS)));
! 
!       --  An At_End handler and regular exception handlers cannot coexist in
!       --  the same statement sequence. Wrap the original statements in a block.
! 
!       elsif Present (Exception_Handlers (HSS)) then
!          declare
!             End_Lab : constant Node_Id := End_Label (HSS);
!             Block   : Node_Id;
! 
!          begin
!             Block :=
!               Make_Block_Statement (Loc, Handled_Statement_Sequence => HSS);
! 
!             Set_Handled_Statement_Sequence (N,
!               Make_Handled_Sequence_Of_Statements (Loc, New_List (Block)));
  
!             HSS := Handled_Statement_Sequence (N);
!             Set_End_Label (HSS, End_Lab);
!          end;
!       end if;
  
!       Set_At_End_Proc (HSS, New_Occurrence_Of (Fin_Id, Loc));
  
!       --  Attach reference to finalizer to tree, for LLVM use
  
!       Set_Parent (At_End_Proc (HSS), HSS);
  
!       Analyze (At_End_Proc (HSS));
!       Expand_At_End_Handler (HSS, Empty);
     end Build_Finalizer_Call;
  
     ---------------------
-    -- Build_Finalizer --
-    ---------------------
- 
-    procedure Build_Finalizer
-      (N           : Node_Id;
-       Clean_Stmts : List_Id;
-       Mark_Id     : Entity_Id;
-       Top_Decls   : List_Id;
-       Defer_Abort : Boolean;
-       Fin_Id      : out Entity_Id)
-    is
-       Def_Ent : constant Entity_Id  := Unique_Defining_Entity (N);
-       Loc     : constant Source_Ptr := Sloc (N);
- 
-       --  Declarations used for the creation of _finalization_controller
- 
-       Fin_Old_Id           : Entity_Id := Empty;
-       Fin_Controller_Id    : Entity_Id := Empty;
-       Fin_Controller_Decls : List_Id;
-       Fin_Controller_Stmts : List_Id;
-       Fin_Controller_Body  : Node_Id   := Empty;
-       Fin_Controller_Spec  : Node_Id   := Empty;
-       Postconditions_Call  : Node_Id   := Empty;
- 
-       --  Defining identifiers for local objects used to store exception info
- 
-       Raised_Post_Exception_Id         : Entity_Id := Empty;
-       Raised_Finalization_Exception_Id : Entity_Id := Empty;
-       Saved_Exception_Id               : Entity_Id := Empty;
- 
-    --  Start of processing for Build_Finalizer
- 
-    begin
-       --  Create the general finalization routine
- 
-       Build_Finalizer_Helper
-         (N                 => N,
-          Clean_Stmts       => Clean_Stmts,
-          Mark_Id           => Mark_Id,
-          Top_Decls         => Top_Decls,
-          Defer_Abort       => Defer_Abort,
-          Fin_Id            => Fin_Id,
-          Finalize_Old_Only => False);
- 
-       --  When postconditions are present, expansion gets much more complicated
-       --  due to both the fact that they must be called after finalization and
-       --  that finalization of 'Old objects must occur after the postconditions
-       --  get checked.
- 
-       --  Additionally, exceptions between general finalization and 'Old
-       --  finalization must be propagated correctly and exceptions which happen
-       --  during _postconditions need to be saved and reraised after
-       --  finalization of 'Old objects.
- 
-       --  Generate:
-       --
-       --    Postcond_Enabled := False;
-       --
-       --    procedure _finalization_controller is
-       --
-       --       --  Exception capturing and tracking
-       --
-       --       Saved_Exception               : Exception_Occurrence;
-       --       Raised_Post_Exception         : Boolean := False;
-       --       Raised_Finalization_Exception : Boolean := False;
-       --
-       --    --  Start of processing for _finalization_controller
-       --
-       --    begin
-       --       --  Perform general finalization
-       --
-       --       begin
-       --          _finalizer;
-       --       exception
-       --          when others =>
-       --             --  Save the exception
-       --
-       --             Raised_Finalization_Exception := True;
-       --             Save_Occurrence
-       --               (Saved_Exception, Get_Current_Excep.all);
-       --       end;
-       --
-       --       --  Perform postcondition checks after general finalization, but
-       --       --  before finalization of 'Old related objects.
-       --
-       --       if not Raised_Finalization_Exception
-       --         and then Return_Success_For_Postcond
-       --       then
-       --          begin
-       --             --  Re-enable postconditions and check them
-       --
-       --             Postcond_Enabled := True;
-       --             _postconditions [(Result_Obj_For_Postcond[.all])];
-       --          exception
-       --             when others =>
-       --                --  Save the exception
-       --
-       --                Raised_Post_Exception := True;
-       --                Save_Occurrence
-       --                  (Saved_Exception, Get_Current_Excep.all);
-       --          end;
-       --       end if;
-       --
-       --       --  Finally finalize 'Old related objects
-       --
-       --       begin
-       --          _finalizer_old;
-       --       exception
-       --          when others =>
-       --             --  Reraise the previous finalization error if there is
-       --             --  one.
-       --
-       --             if Raised_Finalization_Exception then
-       --                Reraise_Occurrence (Saved_Exception);
-       --             end if;
-       --
-       --             --  Otherwise, reraise the current one
-       --
-       --             raise;
-       --       end;
-       --
-       --       --  Reraise any saved exception
-       --
-       --       if Raised_Finalization_Exception
-       --            or else Raised_Post_Exception
-       --       then
-       --          Reraise_Occurrence (Saved_Exception);
-       --       end if;
-       --    end _finalization_controller;
- 
-       if Nkind (N) = N_Subprogram_Body
-         and then Present (Postconditions_Proc (Def_Ent))
-       then
-          Fin_Controller_Stmts := New_List;
-          Fin_Controller_Decls := New_List;
- 
-          --  Build the 'Old finalizer
- 
-          Build_Finalizer_Helper
-            (N                 => N,
-             Clean_Stmts       => Empty_List,
-             Mark_Id           => Mark_Id,
-             Top_Decls         => Top_Decls,
-             Defer_Abort       => Defer_Abort,
-             Fin_Id            => Fin_Old_Id,
-             Finalize_Old_Only => True);
- 
-          --  Create local declarations for _finalization_controller needed for
-          --  saving exceptions.
-          --
-          --  Generate:
-          --
-          --    Saved_Exception               : Exception_Occurrence;
-          --    Raised_Post_Exception         : Boolean := False;
-          --    Raised_Finalization_Exception : Boolean := False;
- 
-          Saved_Exception_Id               := Make_Temporary (Loc, 'S');
-          Raised_Post_Exception_Id         := Make_Temporary (Loc, 'P');
-          Raised_Finalization_Exception_Id := Make_Temporary (Loc, 'F');
- 
-          Append_List_To (Fin_Controller_Decls, New_List (
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => Saved_Exception_Id,
-              Object_Definition   =>
-                New_Occurrence_Of (RTE (RE_Exception_Occurrence), Loc)),
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => Raised_Post_Exception_Id,
-              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
-              Expression          => New_Occurrence_Of (Standard_False, Loc)),
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => Raised_Finalization_Exception_Id,
-              Object_Definition   => New_Occurrence_Of (Standard_Boolean, Loc),
-              Expression          => New_Occurrence_Of (Standard_False, Loc))));
- 
-          --  Call _finalizer and save any exceptions which occur
- 
-          --  Generate:
-          --
-          --    begin
-          --       _finalizer;
-          --    exception
-          --       when others =>
-          --          Raised_Finalization_Exception := True;
-          --          Save_Occurrence
-          --            (Saved_Exception, Get_Current_Excep.all);
-          --    end;
- 
-          if Present (Fin_Id) then
-             Append_To (Fin_Controller_Stmts,
-               Make_Block_Statement (Loc,
-                 Handled_Statement_Sequence =>
-                   Make_Handled_Sequence_Of_Statements (Loc,
-                     Statements         => New_List (
-                       Make_Procedure_Call_Statement (Loc,
-                         Name => New_Occurrence_Of (Fin_Id, Loc))),
-                     Exception_Handlers => New_List (
-                       Make_Exception_Handler (Loc,
-                         Exception_Choices => New_List (
-                           Make_Others_Choice (Loc)),
-                         Statements        => New_List (
-                           Make_Assignment_Statement (Loc,
-                             Name       =>
-                               New_Occurrence_Of
-                                 (Raised_Finalization_Exception_Id, Loc),
-                             Expression =>
-                               New_Occurrence_Of (Standard_True, Loc)),
-                           Make_Procedure_Call_Statement (Loc,
-                              Name                   =>
-                                New_Occurrence_Of
-                                  (RTE (RE_Save_Occurrence), Loc),
-                              Parameter_Associations => New_List (
-                                New_Occurrence_Of
-                                  (Saved_Exception_Id, Loc),
-                                Make_Explicit_Dereference (Loc,
-                                  Prefix =>
-                                    Make_Function_Call (Loc,
-                                      Name =>
-                                        Make_Explicit_Dereference (Loc,
-                                          Prefix =>
-                                            New_Occurrence_Of
-                                              (RTE (RE_Get_Current_Excep),
-                                               Loc))))))))))));
-          end if;
- 
-          --  Create the call to postconditions based on the kind of the current
-          --  subprogram, and the type of the Result_Obj_For_Postcond.
- 
-          --  Generate:
-          --
-          --    _postconditions (Result_Obj_For_Postcond[.all]);
-          --
-          --   or
-          --
-          --    _postconditions;
- 
-          if Ekind (Def_Ent) = E_Procedure then
-             Postconditions_Call :=
-               Make_Procedure_Call_Statement (Loc,
-                 Name =>
-                   New_Occurrence_Of
-                     (Postconditions_Proc (Def_Ent), Loc));
-          else
-             Postconditions_Call :=
-               Make_Procedure_Call_Statement (Loc,
-                 Name                   =>
-                   New_Occurrence_Of
-                     (Postconditions_Proc (Def_Ent), Loc),
-                 Parameter_Associations => New_List (
-                   (if Is_Elementary_Type (Etype (Def_Ent)) then
-                       New_Occurrence_Of
-                         (Get_Result_Object_For_Postcond
-                           (Def_Ent), Loc)
-                    else
-                       Make_Explicit_Dereference (Loc,
-                         New_Occurrence_Of
-                           (Get_Result_Object_For_Postcond
-                             (Def_Ent), Loc)))));
-          end if;
- 
-          --  Call _postconditions when no general finalization exceptions have
-          --  occurred taking care to enable the postconditions and save any
-          --  exception occurrences.
- 
-          --  Generate:
-          --
-          --    if not Raised_Finalization_Exception
-          --      and then Return_Success_For_Postcond
-          --    then
-          --       begin
-          --          Postcond_Enabled := True;
-          --          _postconditions [(Result_Obj_For_Postcond[.all])];
-          --       exception
-          --          when others =>
-          --             Raised_Post_Exception := True;
-          --             Save_Occurrence
-          --               (Saved_Exception, Get_Current_Excep.all);
-          --       end;
-          --    end if;
- 
-          Append_To (Fin_Controller_Stmts,
-            Make_If_Statement (Loc,
-              Condition       =>
-                Make_And_Then (Loc,
-                  Left_Opnd  =>
-                    Make_Op_Not (Loc,
-                      Right_Opnd =>
-                        New_Occurrence_Of
-                          (Raised_Finalization_Exception_Id, Loc)),
-                  Right_Opnd =>
-                    New_Occurrence_Of
-                      (Get_Return_Success_For_Postcond (Def_Ent), Loc)),
-              Then_Statements => New_List (
-                Make_Block_Statement (Loc,
-                  Handled_Statement_Sequence =>
-                    Make_Handled_Sequence_Of_Statements (Loc,
-                      Statements         => New_List (
-                        Make_Assignment_Statement (Loc,
-                          Name       =>
-                            New_Occurrence_Of
-                              (Get_Postcond_Enabled (Def_Ent), Loc),
-                          Expression =>
-                             New_Occurrence_Of
-                               (Standard_True, Loc)),
-                        Postconditions_Call),
-                      Exception_Handlers => New_List (
-                        Make_Exception_Handler (Loc,
-                          Exception_Choices => New_List (
-                            Make_Others_Choice (Loc)),
-                          Statements        => New_List (
-                            Make_Assignment_Statement (Loc,
-                              Name       =>
-                                New_Occurrence_Of
-                                  (Raised_Post_Exception_Id, Loc),
-                              Expression =>
-                                New_Occurrence_Of (Standard_True, Loc)),
-                            Make_Procedure_Call_Statement (Loc,
-                               Name                   =>
-                                 New_Occurrence_Of
-                                   (RTE (RE_Save_Occurrence), Loc),
-                               Parameter_Associations => New_List (
-                                 New_Occurrence_Of
-                                   (Saved_Exception_Id, Loc),
-                                 Make_Explicit_Dereference (Loc,
-                                   Prefix =>
-                                     Make_Function_Call (Loc,
-                                       Name =>
-                                         Make_Explicit_Dereference (Loc,
-                                           Prefix =>
-                                             New_Occurrence_Of
-                                               (RTE (RE_Get_Current_Excep),
-                                                Loc))))))))))))));
- 
-          --  Call _finalizer_old and reraise any exception that occurred during
-          --  initial finalization within the exception handler. Otherwise,
-          --  propagate the current exception.
- 
-          --  Generate:
-          --
-          --    begin
-          --       _finalizer_old;
-          --    exception
-          --       when others =>
-          --          if Raised_Finalization_Exception then
-          --             Reraise_Occurrence (Saved_Exception);
-          --          end if;
-          --          raise;
-          --    end;
- 
-          if Present (Fin_Old_Id) then
-             Append_To (Fin_Controller_Stmts,
-               Make_Block_Statement (Loc,
-                 Handled_Statement_Sequence =>
-                   Make_Handled_Sequence_Of_Statements (Loc,
-                     Statements         => New_List (
-                       Make_Procedure_Call_Statement (Loc,
-                         Name => New_Occurrence_Of (Fin_Old_Id, Loc))),
-                     Exception_Handlers => New_List (
-                       Make_Exception_Handler (Loc,
-                         Exception_Choices => New_List (
-                           Make_Others_Choice (Loc)),
-                         Statements        => New_List (
-                           Make_If_Statement (Loc,
-                             Condition       =>
-                               New_Occurrence_Of
-                                 (Raised_Finalization_Exception_Id, Loc),
-                             Then_Statements => New_List (
-                               Make_Procedure_Call_Statement (Loc,
-                                 Name                   =>
-                                   New_Occurrence_Of
-                                     (RTE (RE_Reraise_Occurrence), Loc),
-                                 Parameter_Associations => New_List (
-                                   New_Occurrence_Of
-                                     (Saved_Exception_Id, Loc))))),
-                           Make_Raise_Statement (Loc)))))));
-          end if;
- 
-          --  Once finalization is complete reraise any pending exceptions
- 
-          --  Generate:
-          --
-          --    if Raised_Post_Exception
-          --      or else Raised_Finalization_Exception
-          --    then
-          --       Reraise_Occurrence (Saved_Exception);
-          --    end if;
- 
-          Append_To (Fin_Controller_Stmts,
-            Make_If_Statement (Loc,
-              Condition       =>
-                Make_Or_Else (Loc,
-                  Left_Opnd  =>
-                    New_Occurrence_Of
-                      (Raised_Post_Exception_Id, Loc),
-                  Right_Opnd =>
-                    New_Occurrence_Of
-                      (Raised_Finalization_Exception_Id, Loc)),
-              Then_Statements => New_List (
-                Make_Procedure_Call_Statement (Loc,
-                  Name            =>
-                    New_Occurrence_Of (RTE (RE_Reraise_Occurrence), Loc),
-                  Parameter_Associations => New_List (
-                    New_Occurrence_Of
-                      (Saved_Exception_Id, Loc))))));
- 
-          --  Make the finalization controller subprogram body and declaration.
- 
-          --  Generate:
-          --    procedure _finalization_controller;
-          --
-          --    procedure _finalization_controller is
-          --    begin
-          --       [Fin_Controller_Stmts];
-          --    end;
- 
-          Fin_Controller_Id :=
-            Make_Defining_Identifier (Loc,
-              Chars => New_External_Name (Name_uFinalization_Controller));
- 
-          Fin_Controller_Spec :=
-            Make_Subprogram_Declaration (Loc,
-              Specification =>
-                Make_Procedure_Specification (Loc,
-                  Defining_Unit_Name => Fin_Controller_Id));
- 
-          Fin_Controller_Body :=
-            Make_Subprogram_Body (Loc,
-              Specification              =>
-                Make_Procedure_Specification (Loc,
-                  Defining_Unit_Name =>
-                    Make_Defining_Identifier (Loc, Chars (Fin_Controller_Id))),
-              Declarations               => Fin_Controller_Decls,
-              Handled_Statement_Sequence =>
-                Make_Handled_Sequence_Of_Statements (Loc,
-                  Statements => Fin_Controller_Stmts));
- 
-          --  Disable _postconditions calls which get generated before return
-          --  statements to delay their evaluation until after finalization.
- 
-          --  This is done by way of the local Postcond_Enabled object which is
-          --  initially assigned to True - we then create an assignment within
-          --  the subprogram's declaration to make it False and assign it back
-          --  to True before _postconditions is called within
-          --  _finalization_controller.
- 
-          --  Generate:
-          --
-          --    Postcond_Enable := False;
- 
-          Append_To (Top_Decls,
-            Make_Assignment_Statement (Loc,
-              Name       =>
-                New_Occurrence_Of
-                  (Get_Postcond_Enabled (Def_Ent), Loc),
-              Expression =>
-                New_Occurrence_Of
-                  (Standard_False, Loc)));
- 
-          --  Add the subprogram to the list of declarations an analyze it
- 
-          Append_To (Top_Decls, Fin_Controller_Spec);
-          Analyze (Fin_Controller_Spec);
-          Insert_After (Fin_Controller_Spec, Fin_Controller_Body);
-          Analyze (Fin_Controller_Body, Suppress => All_Checks);
- 
-          --  Return the finalization controller as the result Fin_Id
- 
-          Fin_Id := Fin_Controller_Id;
-       end if;
-    end Build_Finalizer;
- 
-    ---------------------
     -- Build_Late_Proc --
     ---------------------
  
--- 3668,3710 ----
        --        end;
        --     end Prot_SubpP;
  
!       declare
!          Loc : constant Source_Ptr := Sloc (N);
  
!          Is_Protected_Subp_Body : constant Boolean :=
!            Nkind (N) = N_Subprogram_Body
!            and then Is_Protected_Subprogram_Body (N);
!          --  True if N is the protected version of a subprogram that belongs to
!          --  a protected type.
  
!          HSS : constant Node_Id :=
!            (if Is_Protected_Subp_Body
!              then Handled_Statement_Sequence
!                (Last (Statements (Handled_Statement_Sequence (N))))
!              else Handled_Statement_Sequence (N));
  
!          --  We attach the At_End_Proc to the HSS if this is an accept
!          --  statement or extended return statement. Also in the case of
!          --  a protected subprogram, because if Service_Entries raises an
!          --  exception, we do not lock the PO, so we also do not want to
!          --  unlock it.
  
!          Use_HSS : constant Boolean :=
!            Nkind (N) in N_Accept_Statement | N_Extended_Return_Statement
!            or else Is_Protected_Subp_Body;
  
!          At_End_Proc_Bearer : constant Node_Id := (if Use_HSS then HSS else N);
!       begin
!          pragma Assert (No (At_End_Proc (At_End_Proc_Bearer)));
!          Set_At_End_Proc (At_End_Proc_Bearer, New_Occurrence_Of (Fin_Id, Loc));
!          --  Attach reference to finalizer to tree, for LLVM use
!          Set_Parent (At_End_Proc (At_End_Proc_Bearer), At_End_Proc_Bearer);
!          Analyze (At_End_Proc (At_End_Proc_Bearer));
!          Expand_At_End_Handler (At_End_Proc_Bearer, Empty);
!       end;
     end Build_Finalizer_Call;
  
     ---------------------
     -- Build_Late_Proc --
     ---------------------
  
*************** package body Exp_Ch7 is
*** 5000,5006 ****
     begin
        if Is_Derived_Type (Typ)
          and then Comes_From_Source (E)
!         and then not Present (Overridden_Operation (E))
        then
           --  We know that the explicit operation on the type does not override
           --  the inherited operation of the parent, and that the derivation
--- 4435,4441 ----
     begin
        if Is_Derived_Type (Typ)
          and then Comes_From_Source (E)
!         and then No (Overridden_Operation (E))
        then
           --  We know that the explicit operation on the type does not override
           --  the inherited operation of the parent, and that the derivation
*************** package body Exp_Ch7 is
*** 5113,5138 ****
        end if;
     end Convert_View;
  
-    ------------------------
-    -- Enclosing_Function --
-    ------------------------
- 
-    function Enclosing_Function (E : Entity_Id) return Entity_Id is
-       Func_Id : Entity_Id;
- 
-    begin
-       Func_Id := E;
-       while Present (Func_Id) and then Func_Id /= Standard_Standard loop
-          if Ekind (Func_Id) = E_Function then
-             return Func_Id;
-          end if;
- 
-          Func_Id := Scope (Func_Id);
-       end loop;
- 
-       return Empty;
-    end Enclosing_Function;
- 
     -------------------------------
     -- Establish_Transient_Scope --
     -------------------------------
--- 4548,4553 ----
*************** package body Exp_Ch7 is
*** 5556,5565 ****
     procedure Expand_Cleanup_Actions (N : Node_Id) is
        pragma Assert
          (Nkind (N) in N_Block_Statement
-                     | N_Entry_Body
-                     | N_Extended_Return_Statement
                      | N_Subprogram_Body
!                     | N_Task_Body);
  
        Scop : constant Entity_Id := Current_Scope;
  
--- 4971,4980 ----
     procedure Expand_Cleanup_Actions (N : Node_Id) is
        pragma Assert
          (Nkind (N) in N_Block_Statement
                      | N_Subprogram_Body
!                     | N_Task_Body
!                     | N_Entry_Body
!                     | N_Extended_Return_Statement);
  
        Scop : constant Entity_Id := Current_Scope;
  
*************** package body Exp_Ch7 is
*** 5598,5609 ****
                                   Nkind (N) = N_Block_Statement
                                     and then Present (Cleanup_Actions (N));
  
-       Has_Postcondition      : constant Boolean :=
-                                  Nkind (N) = N_Subprogram_Body
-                                    and then Present
-                                               (Postconditions_Proc
-                                                 (Unique_Defining_Entity (N)));
- 
        Actions_Required       : constant Boolean :=
                                   Requires_Cleanup_Actions (N, True)
                                     or else Is_Asynchronous_Call
--- 5013,5018 ----
*************** package body Exp_Ch7 is
*** 5614,5667 ****
                                     or else Needs_Sec_Stack_Mark
                                     or else Needs_Custom_Cleanup;
  
-       HSS : Node_Id := Handled_Statement_Sequence (N);
        Loc : Source_Ptr;
        Cln : List_Id;
  
-       procedure Wrap_HSS_In_Block;
-       --  Move HSS inside a new block along with the original exception
-       --  handlers. Make the newly generated block the sole statement of HSS.
- 
-       -----------------------
-       -- Wrap_HSS_In_Block --
-       -----------------------
- 
-       procedure Wrap_HSS_In_Block is
-          Block    : Node_Id;
-          Block_Id : Entity_Id;
-          End_Lab  : Node_Id;
- 
-       begin
-          --  Preserve end label to provide proper cross-reference information
- 
-          End_Lab := End_Label (HSS);
-          Block :=
-            Make_Block_Statement (Loc, Handled_Statement_Sequence => HSS);
- 
-          Block_Id := New_Internal_Entity (E_Block, Current_Scope, Loc, 'B');
-          Set_Identifier (Block, New_Occurrence_Of (Block_Id, Loc));
-          Set_Etype (Block_Id, Standard_Void_Type);
-          Set_Block_Node (Block_Id, Identifier (Block));
- 
-          --  Signal the finalization machinery that this particular block
-          --  contains the original context.
- 
-          Set_Is_Finalization_Wrapper (Block);
- 
-          Set_Handled_Statement_Sequence (N,
-            Make_Handled_Sequence_Of_Statements (Loc, New_List (Block)));
-          HSS := Handled_Statement_Sequence (N);
- 
-          Set_First_Real_Statement (HSS, Block);
-          Set_End_Label (HSS, End_Lab);
- 
-          --  Comment needed here, see RH for 1.306 ???
- 
-          if Nkind (N) = N_Subprogram_Body then
-             Set_Has_Nested_Block_With_Handler (Scop);
-          end if;
-       end Wrap_HSS_In_Block;
- 
     --  Start of processing for Expand_Cleanup_Actions
  
     begin
--- 5023,5031 ----
*************** package body Exp_Ch7 is
*** 5732,5743 ****
           Cln := No_List;
        end if;
  
!       declare
!          Decls     : List_Id := Declarations (N);
!          Fin_Id    : Entity_Id;
!          Mark      : Entity_Id := Empty;
!          New_Decls : List_Id;
  
        begin
           --  If we are generating expanded code for debugging purposes, use the
           --  Sloc of the point of insertion for the cleanup code. The Sloc will
--- 5096,5109 ----
           Cln := No_List;
        end if;
  
!       if No (Declarations (N)) then
!          Set_Declarations (N, New_List);
!       end if;
  
+       declare
+          Decls  : constant List_Id := Declarations (N);
+          Fin_Id : Entity_Id;
+          Mark   : Entity_Id := Empty;
        begin
           --  If we are generating expanded code for debugging purposes, use the
           --  Sloc of the point of insertion for the cleanup code. The Sloc will
*************** package body Exp_Ch7 is
*** 5764,5878 ****
              Establish_Task_Master (N);
           end if;
  
-          New_Decls := New_List;
- 
           --  If secondary stack is in use, generate:
           --
           --    Mnn : constant Mark_Id := SS_Mark;
  
           if Needs_Sec_Stack_Mark then
              Mark := Make_Temporary (Loc, 'M');
  
-             Append_To (New_Decls, Build_SS_Mark_Call (Loc, Mark));
-             Set_Uses_Sec_Stack (Scop, False);
-          end if;
- 
-          --  If exception handlers are present, wrap the sequence of statements
-          --  in a block since it is not possible to have exception handlers and
-          --  an At_End handler in the same construct.
- 
-          if Present (Exception_Handlers (HSS)) then
-             Wrap_HSS_In_Block;
- 
-          --  Ensure that the First_Real_Statement field is set
- 
-          elsif No (First_Real_Statement (HSS)) then
-             Set_First_Real_Statement (HSS, First (Statements (HSS)));
-          end if;
- 
-          --  Do not move the Activation_Chain declaration in the context of
-          --  task allocation blocks. Task allocation blocks use _chain in their
-          --  cleanup handlers and gigi complains if it is declared in the
-          --  sequence of statements of the scope that declares the handler.
- 
-          if Is_Task_Allocation then
              declare
!                Chain : constant Entity_Id := Activation_Chain_Entity (N);
!                Decl  : Node_Id;
! 
!             begin
!                Decl := First (Decls);
!                while Nkind (Decl) /= N_Object_Declaration
!                  or else Defining_Identifier (Decl) /= Chain
!                loop
!                   Next (Decl);
! 
!                   --  A task allocation block should always include a _chain
!                   --  declaration.
! 
!                   pragma Assert (Present (Decl));
!                end loop;
! 
!                Remove (Decl);
!                Prepend_To (New_Decls, Decl);
!             end;
!          end if;
! 
!          --  Move the _postconditions subprogram declaration and its associated
!          --  objects into the declarations section so that it is callable
!          --  within _postconditions.
! 
!          if Has_Postcondition then
!             declare
!                Decl      : Node_Id;
!                Prev_Decl : Node_Id;
! 
              begin
!                Decl :=
!                  Prev (Subprogram_Body
!                         (Postconditions_Proc (Current_Subprogram)));
!                while Present (Decl) loop
!                   Prev_Decl := Prev (Decl);
! 
!                   Remove (Decl);
!                   Prepend_To (New_Decls, Decl);
! 
!                   exit when Nkind (Decl) = N_Subprogram_Declaration
!                               and then Chars (Corresponding_Body (Decl))
!                                          = Name_uPostconditions;
! 
!                   Decl := Prev_Decl;
!                end loop;
              end;
           end if;
  
-          --  Ensure the presence of a declaration list in order to successfully
-          --  append all original statements to it.
- 
-          if No (Decls) then
-             Set_Declarations (N, New_List);
-             Decls := Declarations (N);
-          end if;
- 
-          --  Move the declarations into the sequence of statements in order to
-          --  have them protected by the At_End handler. It may seem weird to
-          --  put declarations in the sequence of statement but in fact nothing
-          --  forbids that at the tree level.
- 
-          Append_List_To (Decls, Statements (HSS));
-          Set_Statements (HSS, Decls);
- 
-          --  Reset the Sloc of the handled statement sequence to properly
-          --  reflect the new initial "statement" in the sequence.
- 
-          Set_Sloc (HSS, Sloc (First (Decls)));
- 
-          --  The declarations of finalizer spec and auxiliary variables replace
-          --  the old declarations that have been moved inward.
- 
-          Set_Declarations (N, New_Decls);
-          Analyze_Declarations (New_Decls);
- 
           --  Generate finalization calls for all controlled objects appearing
           --  in the statements of N. Add context specific cleanup for various
           --  constructs.
--- 5130,5151 ----
              Establish_Task_Master (N);
           end if;
  
           --  If secondary stack is in use, generate:
           --
           --    Mnn : constant Mark_Id := SS_Mark;
  
           if Needs_Sec_Stack_Mark then
+             Set_Uses_Sec_Stack (Scop, False); -- avoid duplicate SS marks
              Mark := Make_Temporary (Loc, 'M');
  
              declare
!                Mark_Call : constant Node_Id := Build_SS_Mark_Call (Loc, Mark);
              begin
!                Prepend_To (Decls, Mark_Call);
!                Analyze (Mark_Call);
              end;
           end if;
  
           --  Generate finalization calls for all controlled objects appearing
           --  in the statements of N. Add context specific cleanup for various
           --  constructs.
*************** package body Exp_Ch7 is
*** 5881,5887 ****
             (N           => N,
              Clean_Stmts => Build_Cleanup_Statements (N, Cln),
              Mark_Id     => Mark,
!             Top_Decls   => New_Decls,
              Defer_Abort => Nkind (Original_Node (N)) = N_Task_Body
                               or else Is_Master,
              Fin_Id      => Fin_Id);
--- 5154,5160 ----
             (N           => N,
              Clean_Stmts => Build_Cleanup_Statements (N, Cln),
              Mark_Id     => Mark,
!             Top_Decls   => Decls,
              Defer_Abort => Nkind (Original_Node (N)) = N_Task_Body
                               or else Is_Master,
              Fin_Id      => Fin_Id);
*************** package body Exp_Ch7 is
*** 5911,5926 ****
        --  This is done only for non-generic packages
  
        if Ekind (Spec_Id) = E_Package then
!          Push_Scope (Spec_Id);
! 
!          --  Build dispatch tables of library level tagged types
  
           if Tagged_Type_Expansion
             and then Is_Library_Level_Entity (Spec_Id)
           then
              Build_Static_Dispatch_Tables (N);
           end if;
  
           Expand_CUDA_Package (N);
  
           Build_Task_Activation_Call (N);
--- 5184,5203 ----
        --  This is done only for non-generic packages
  
        if Ekind (Spec_Id) = E_Package then
!          --  Build dispatch tables of library-level tagged types for bodies
!          --  that are not compilation units (see Analyze_Compilation_Unit),
!          --  except for instances because they have no N_Compilation_Unit.
  
           if Tagged_Type_Expansion
             and then Is_Library_Level_Entity (Spec_Id)
+            and then (not Is_Compilation_Unit (Spec_Id)
+                       or else Is_Generic_Instance (Spec_Id))
           then
              Build_Static_Dispatch_Tables (N);
           end if;
  
+          Push_Scope (Spec_Id);
+ 
           Expand_CUDA_Package (N);
  
           Build_Task_Activation_Call (N);
*************** package body Exp_Ch7 is
*** 6070,6081 ****
           Pop_Scope;
        end if;
  
!       --  Build dispatch tables of library-level tagged types
  
        if Tagged_Type_Expansion
!         and then (Is_Compilation_Unit (Id)
!                    or else (Is_Generic_Instance (Id)
!                              and then Is_Library_Level_Entity (Id)))
        then
           Build_Static_Dispatch_Tables (N);
        end if;
--- 5347,5359 ----
           Pop_Scope;
        end if;
  
!       --  Build dispatch tables of library-level tagged types for instances
!       --  that are not compilation units (see Analyze_Compilation_Unit).
  
        if Tagged_Type_Expansion
!         and then Is_Library_Level_Entity (Id)
!         and then Is_Generic_Instance (Id)
!         and then not Is_Compilation_Unit (Id)
        then
           Build_Static_Dispatch_Tables (N);
        end if;
*************** package body Exp_Ch7 is
*** 6765,6775 ****
        --  Derivations from [Limited_]Controlled
  
        elsif Is_Controlled (Utyp) then
!          if Has_Controlled_Component (Utyp) then
!             Adj_Id := Find_Optional_Prim_Op (Utyp, TSS_Deep_Adjust);
!          else
!             Adj_Id := Find_Optional_Prim_Op (Utyp, Name_Of (Adjust_Case));
!          end if;
  
        --  Tagged types
  
--- 6043,6049 ----
        --  Derivations from [Limited_]Controlled
  
        elsif Is_Controlled (Utyp) then
!          Adj_Id := Find_Optional_Prim_Op (Utyp, Name_Of (Adjust_Case));
  
        --  Tagged types
  
*************** package body Exp_Ch7 is
*** 8273,8291 ****
  
           Counter        : Nat := 0;
           Finalizer_Data : Finalization_Exception_Data;
  
           function Process_Component_List_For_Finalize
!            (Comps : Node_Id) return List_Id;
           --  Build all necessary finalization statements for a single component
           --  list. The statements may include a jump circuitry if flag Is_Local
!          --  is enabled.
  
           -----------------------------------------
           -- Process_Component_List_For_Finalize --
           -----------------------------------------
  
           function Process_Component_List_For_Finalize
!            (Comps : Node_Id) return List_Id
           is
              procedure Process_Component_For_Finalize
                (Decl      : Node_Id;
--- 7547,7569 ----
  
           Counter        : Nat := 0;
           Finalizer_Data : Finalization_Exception_Data;
+          Last_POC_Call  : Node_Id := Empty;
  
           function Process_Component_List_For_Finalize
!            (Comps           : Node_Id;
!             In_Variant_Part : Boolean := False) return List_Id;
           --  Build all necessary finalization statements for a single component
           --  list. The statements may include a jump circuitry if flag Is_Local
!          --  is enabled. In_Variant_Part indicates whether this is a recursive
!          --  call.
  
           -----------------------------------------
           -- Process_Component_List_For_Finalize --
           -----------------------------------------
  
           function Process_Component_List_For_Finalize
!            (Comps           : Node_Id;
!             In_Variant_Part : Boolean := False) return List_Id
           is
              procedure Process_Component_For_Finalize
                (Decl      : Node_Id;
*************** package body Exp_Ch7 is
*** 8467,8473 ****
                             New_Copy_List (Discrete_Choices (Var)),
                           Statements =>
                             Process_Component_List_For_Finalize (
!                              Component_List (Var))));
  
                       Next_Non_Pragma (Var);
                    end loop;
--- 7745,7752 ----
                             New_Copy_List (Discrete_Choices (Var)),
                           Statements =>
                             Process_Component_List_For_Finalize (
!                              Component_List (Var),
!                              In_Variant_Part => True)));
  
                       Next_Non_Pragma (Var);
                    end loop;
*************** package body Exp_Ch7 is
*** 8534,8539 ****
--- 7813,7824 ----
                 end loop;
              end if;
  
+             if not In_Variant_Part then
+                Last_POC_Call := Last (Stmts);
+                --  In the case of a type extension, the deep-finalize call
+                --  for the _Parent component will be inserted here.
+             end if;
+ 
              --  Process the rest of the components in reverse order
  
              Decl := Last_Non_Pragma (Component_Items (Comps));
*************** package body Exp_Ch7 is
*** 8749,8755 ****
                                      (Finalizer_Data))));
                       end if;
  
!                      Append_To (Bod_Stmts, Fin_Stmt);
                    end if;
                 end if;
              end;
--- 8034,8071 ----
                                      (Finalizer_Data))));
                       end if;
  
!                      --  The intended component finalization order is
!                      --    1) POC components of extension
!                      --    2) _Parent component
!                      --    3) non-POC components of extension.
!                      --
!                      --  With this "finalize the parent part in the middle"
!                      --  ordering, we can avoid the need for making two
!                      --  calls to the parent's subprogram in the way that
!                      --  is necessary for Init_Procs. This does have the
!                      --  peculiar (but legal) consequence that the parent's
!                      --  non-POC components are finalized before the
!                      --  non-POC extension components. This violates the
!                      --  usual "finalize in reverse declaration order"
!                      --  principle, but that's ok (see Ada RM 7.6.1(9)).
!                      --
!                      --  Last_POC_Call should be non-empty if the extension
!                      --  has at least one POC. Interactions with variant
!                      --  parts are incorrectly ignored.
! 
!                      if Present (Last_POC_Call) then
!                         Insert_After (Last_POC_Call, Fin_Stmt);
!                      else
!                         --  At this point, we could look for the common case
!                         --  where there are no POC components anywhere in
!                         --  sight (inherited or not) and, in that common case,
!                         --  call Append_To instead of Prepend_To. That would
!                         --  result in finalizing the parent part after, rather
!                         --  than before, the extension components. That might
!                         --  be more intuitive (as discussed in preceding
!                         --  comment), but it is not required.
!                         Prepend_To (Bod_Stmts, Fin_Stmt);
!                      end if;
                    end if;
                 end if;
              end;
*************** package body Exp_Ch7 is
*** 9076,9086 ****
        --  Derivations from [Limited_]Controlled
  
        elsif Is_Controlled (Utyp) then
!          if Has_Controlled_Component (Utyp) then
!             Fin_Id := Find_Optional_Prim_Op (Utyp, TSS_Deep_Finalize);
!          else
!             Fin_Id := Find_Optional_Prim_Op (Utyp, Name_Of (Finalize_Case));
!          end if;
  
        --  Tagged types
  
--- 8392,8398 ----
        --  Derivations from [Limited_]Controlled
  
        elsif Is_Controlled (Utyp) then
!          Fin_Id := Find_Optional_Prim_Op (Utyp, Name_Of (Finalize_Case));
  
        --  Tagged types
  
*************** package body Exp_Ch7 is
*** 10123,10131 ****
              Make_Handled_Sequence_Of_Statements (Loc,
                Statements => New_List (Loop_Copy)));
  
-       Set_First_Real_Statement
-         (Handled_Statement_Sequence (Local_Body), Loop_Copy);
- 
        Rewrite (Loop_Stmt, Local_Body);
        Analyze (Loop_Stmt);
  
--- 9435,9440 ----
*************** package body Exp_Ch7 is
*** 10282,10288 ****
           --  reclamation is done by the caller.
  
           if Ekind (Curr_S) = E_Function
!            and then Requires_Transient_Scope (Etype (Curr_S))
           then
              null;
  
--- 9591,9597 ----
           --  reclamation is done by the caller.
  
           if Ekind (Curr_S) = E_Function
!            and then Needs_Secondary_Stack (Etype (Curr_S))
           then
              null;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch7.ads gcc-13.1.0/gcc/ada/exp_ch7.ads
*** gcc-12.2.0/gcc/ada/exp_ch7.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch7.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Ch7 is
*** 255,262 ****
     procedure Expand_Cleanup_Actions (N : Node_Id);
     --  Expand the necessary stuff into a scope to enable finalization of local
     --  objects and deallocation of transient data when exiting the scope. N is
!    --  a "scope node" that is to say one of the following: N_Block_Statement,
!    --  N_Subprogram_Body, N_Task_Body, N_Entry_Body.
  
     procedure Establish_Transient_Scope
       (N                : Node_Id;
--- 255,262 ----
     procedure Expand_Cleanup_Actions (N : Node_Id);
     --  Expand the necessary stuff into a scope to enable finalization of local
     --  objects and deallocation of transient data when exiting the scope. N is
!    --  one of N_Block_Statement, N_Subprogram_Body, N_Task_Body, N_Entry_Body,
!    --  or N_Extended_Return_Statement.
  
     procedure Establish_Transient_Scope
       (N                : Node_Id;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch8.adb gcc-13.1.0/gcc/ada/exp_ch8.adb
*** gcc-12.2.0/gcc/ada/exp_ch8.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch8.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch8.ads gcc-13.1.0/gcc/ada/exp_ch8.ads
*** gcc-12.2.0/gcc/ada/exp_ch8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch9.adb gcc-13.1.0/gcc/ada/exp_ch9.adb
*** gcc-12.2.0/gcc/ada/exp_ch9.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch9.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,31 ****
--- 23,33 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Atree;          use Atree;
  with Aspects;        use Aspects;
  with Checks;         use Checks;
+ with Contracts;      use Contracts;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
*************** package body Exp_Ch9 is
*** 134,148 ****
     --  Build a specification for a function implementing the protected entry
     --  barrier of the specified entry body.
  
-    procedure Build_Contract_Wrapper (E : Entity_Id; Decl : Node_Id);
-    --  Build the body of a wrapper procedure for an entry or entry family that
-    --  has contract cases, preconditions, or postconditions. The body gathers
-    --  the executable contract items and expands them in the usual way, and
-    --  performs the entry call itself. This way preconditions are evaluated
-    --  before the call is queued. E is the entry in question, and Decl is the
-    --  enclosing synchronized type declaration at whose freeze point the
-    --  generated body is analyzed.
- 
     function Build_Corresponding_Record
       (N    : Node_Id;
        Ctyp : Entity_Id;
--- 136,141 ----
*************** package body Exp_Ch9 is
*** 1296,1583 ****
        Set_Master_Id (Typ, Master_Id);
     end Build_Class_Wide_Master;
  
-    ----------------------------
-    -- Build_Contract_Wrapper --
-    ----------------------------
- 
-    procedure Build_Contract_Wrapper (E : Entity_Id; Decl : Node_Id) is
-       Conc_Typ : constant Entity_Id  := Scope (E);
-       Loc      : constant Source_Ptr := Sloc (E);
- 
-       procedure Add_Discriminant_Renamings
-         (Obj_Id : Entity_Id;
-          Decls  : List_Id);
-       --  Add renaming declarations for all discriminants of concurrent type
-       --  Conc_Typ. Obj_Id is the entity of the wrapper formal parameter which
-       --  represents the concurrent object.
- 
-       procedure Add_Matching_Formals
-         (Formals : List_Id;
-          Actuals : in out List_Id);
-       --  Add formal parameters that match those of entry E to list Formals.
-       --  The routine also adds matching actuals for the new formals to list
-       --  Actuals.
- 
-       procedure Transfer_Pragma (Prag : Node_Id; To : in out List_Id);
-       --  Relocate pragma Prag to list To. The routine creates a new list if
-       --  To does not exist.
- 
-       --------------------------------
-       -- Add_Discriminant_Renamings --
-       --------------------------------
- 
-       procedure Add_Discriminant_Renamings
-         (Obj_Id : Entity_Id;
-          Decls  : List_Id)
-       is
-          Discr : Entity_Id;
- 
-       begin
-          --  Inspect the discriminants of the concurrent type and generate a
-          --  renaming for each one.
- 
-          if Has_Discriminants (Conc_Typ) then
-             Discr := First_Discriminant (Conc_Typ);
-             while Present (Discr) loop
-                Prepend_To (Decls,
-                  Make_Object_Renaming_Declaration (Loc,
-                    Defining_Identifier =>
-                      Make_Defining_Identifier (Loc, Chars (Discr)),
-                    Subtype_Mark        =>
-                      New_Occurrence_Of (Etype (Discr), Loc),
-                    Name                =>
-                      Make_Selected_Component (Loc,
-                        Prefix        => New_Occurrence_Of (Obj_Id, Loc),
-                        Selector_Name =>
-                          Make_Identifier (Loc, Chars (Discr)))));
- 
-                Next_Discriminant (Discr);
-             end loop;
-          end if;
-       end Add_Discriminant_Renamings;
- 
-       --------------------------
-       -- Add_Matching_Formals --
-       --------------------------
- 
-       procedure Add_Matching_Formals
-         (Formals : List_Id;
-          Actuals : in out List_Id)
-       is
-          Formal     : Entity_Id;
-          New_Formal : Entity_Id;
- 
-       begin
-          --  Inspect the formal parameters of the entry and generate a new
-          --  matching formal with the same name for the wrapper. A reference
-          --  to the new formal becomes an actual in the entry call.
- 
-          Formal := First_Formal (E);
-          while Present (Formal) loop
-             New_Formal := Make_Defining_Identifier (Loc, Chars (Formal));
-             Append_To (Formals,
-               Make_Parameter_Specification (Loc,
-                 Defining_Identifier => New_Formal,
-                 In_Present          => In_Present  (Parent (Formal)),
-                 Out_Present         => Out_Present (Parent (Formal)),
-                 Parameter_Type      =>
-                   New_Occurrence_Of (Etype (Formal), Loc)));
- 
-             if No (Actuals) then
-                Actuals := New_List;
-             end if;
- 
-             Append_To (Actuals, New_Occurrence_Of (New_Formal, Loc));
-             Next_Formal (Formal);
-          end loop;
-       end Add_Matching_Formals;
- 
-       ---------------------
-       -- Transfer_Pragma --
-       ---------------------
- 
-       procedure Transfer_Pragma (Prag : Node_Id; To : in out List_Id) is
-          New_Prag : Node_Id;
- 
-       begin
-          if No (To) then
-             To := New_List;
-          end if;
- 
-          New_Prag := Relocate_Node (Prag);
- 
-          Set_Analyzed (New_Prag, False);
-          Append       (New_Prag, To);
-       end Transfer_Pragma;
- 
-       --  Local variables
- 
-       Items      : constant Node_Id := Contract (E);
-       Actuals    : List_Id := No_List;
-       Call       : Node_Id;
-       Call_Nam   : Node_Id;
-       Decls      : List_Id := No_List;
-       Formals    : List_Id;
-       Has_Pragma : Boolean := False;
-       Index_Id   : Entity_Id;
-       Obj_Id     : Entity_Id;
-       Prag       : Node_Id;
-       Wrapper_Id : Entity_Id;
- 
-    --  Start of processing for Build_Contract_Wrapper
- 
-    begin
-       --  This routine generates a specialized wrapper for a protected or task
-       --  entry [family] which implements precondition/postcondition semantics.
-       --  Preconditions and case guards of contract cases are checked before
-       --  the protected action or rendezvous takes place. Postconditions and
-       --  consequences of contract cases are checked after the protected action
-       --  or rendezvous takes place. The structure of the generated wrapper is
-       --  as follows:
- 
-       --    procedure Wrapper
-       --      (Obj_Id    : Conc_Typ;    --  concurrent object
-       --       [Index    : Index_Typ;]  --  index of entry family
-       --       [Formal_1 : ...;         --  parameters of original entry
-       --        Formal_N : ...])
-       --    is
-       --       [Discr_1 : ... renames Obj_Id.Discr_1;   --  discriminant
-       --        Discr_N : ... renames Obj_Id.Discr_N;]  --  renamings
- 
-       --       <precondition checks>
-       --       <case guard checks>
- 
-       --       procedure _Postconditions is
-       --       begin
-       --          <postcondition checks>
-       --          <consequence checks>
-       --       end _Postconditions;
- 
-       --    begin
-       --       Entry_Call (Obj_Id, [Index,] [Formal_1, Formal_N]);
-       --       _Postconditions;
-       --    end Wrapper;
- 
-       --  Create the wrapper only when the entry has at least one executable
-       --  contract item such as contract cases, precondition or postcondition.
- 
-       if Present (Items) then
- 
-          --  Inspect the list of pre/postconditions and transfer all available
-          --  pragmas to the declarative list of the wrapper.
- 
-          Prag := Pre_Post_Conditions (Items);
-          while Present (Prag) loop
-             if Pragma_Name_Unmapped (Prag) in Name_Postcondition
-                                             | Name_Precondition
-               and then Is_Checked (Prag)
-             then
-                Has_Pragma := True;
-                Transfer_Pragma (Prag, To => Decls);
-             end if;
- 
-             Prag := Next_Pragma (Prag);
-          end loop;
- 
-          --  Inspect the list of test/contract cases and transfer only contract
-          --  cases pragmas to the declarative part of the wrapper.
- 
-          Prag := Contract_Test_Cases (Items);
-          while Present (Prag) loop
-             if Pragma_Name (Prag) = Name_Contract_Cases
-               and then Is_Checked (Prag)
-             then
-                Has_Pragma := True;
-                Transfer_Pragma (Prag, To => Decls);
-             end if;
- 
-             Prag := Next_Pragma (Prag);
-          end loop;
-       end if;
- 
-       --  The entry lacks executable contract items and a wrapper is not needed
- 
-       if not Has_Pragma then
-          return;
-       end if;
- 
-       --  Create the profile of the wrapper. The first formal parameter is the
-       --  concurrent object.
- 
-       Obj_Id :=
-         Make_Defining_Identifier (Loc,
-           Chars => New_External_Name (Chars (Conc_Typ), 'A'));
- 
-       Formals := New_List (
-         Make_Parameter_Specification (Loc,
-           Defining_Identifier => Obj_Id,
-           Out_Present         => True,
-           In_Present          => True,
-           Parameter_Type      => New_Occurrence_Of (Conc_Typ, Loc)));
- 
-       --  Construct the call to the original entry. The call will be gradually
-       --  augmented with an optional entry index and extra parameters.
- 
-       Call_Nam :=
-         Make_Selected_Component (Loc,
-           Prefix        => New_Occurrence_Of (Obj_Id, Loc),
-           Selector_Name => New_Occurrence_Of (E, Loc));
- 
-       --  When creating a wrapper for an entry family, the second formal is the
-       --  entry index.
- 
-       if Ekind (E) = E_Entry_Family then
-          Index_Id := Make_Defining_Identifier (Loc, Name_I);
- 
-          Append_To (Formals,
-            Make_Parameter_Specification (Loc,
-              Defining_Identifier => Index_Id,
-              Parameter_Type      =>
-                New_Occurrence_Of (Entry_Index_Type (E), Loc)));
- 
-          --  The call to the original entry becomes an indexed component to
-          --  accommodate the entry index.
- 
-          Call_Nam :=
-            Make_Indexed_Component (Loc,
-              Prefix      => Call_Nam,
-              Expressions => New_List (New_Occurrence_Of (Index_Id, Loc)));
-       end if;
- 
-       --  Add formal parameters to match those of the entry and build actuals
-       --  for the entry call.
- 
-       Add_Matching_Formals (Formals, Actuals);
- 
-       Call :=
-         Make_Procedure_Call_Statement (Loc,
-           Name                   => Call_Nam,
-           Parameter_Associations => Actuals);
- 
-       --  Add renaming declarations for the discriminants of the enclosing type
-       --  as the various contract items may reference them.
- 
-       Add_Discriminant_Renamings (Obj_Id, Decls);
- 
-       Wrapper_Id :=
-         Make_Defining_Identifier (Loc, New_External_Name (Chars (E), 'E'));
-       Set_Contract_Wrapper (E, Wrapper_Id);
-       Set_Is_Entry_Wrapper (Wrapper_Id);
- 
-       --  The wrapper body is analyzed when the enclosing type is frozen
- 
-       Append_Freeze_Action (Defining_Entity (Decl),
-         Make_Subprogram_Body (Loc,
-           Specification              =>
-             Make_Procedure_Specification (Loc,
-               Defining_Unit_Name       => Wrapper_Id,
-               Parameter_Specifications => Formals),
-           Declarations               => Decls,
-           Handled_Statement_Sequence =>
-             Make_Handled_Sequence_Of_Statements (Loc,
-               Statements => New_List (Call))));
-    end Build_Contract_Wrapper;
- 
     --------------------------------
     -- Build_Corresponding_Record --
     --------------------------------
--- 1289,1294 ----
*************** package body Exp_Ch9 is
*** 2793,2812 ****
                  Expression => Make_Integer_Literal (Loc, 1));
  
           else
!             pragma Assert (Present (Ret));
  
!             if Nkind (Ret) = N_If_Statement then
  
!                --  Ranges are in increasing order, so last one doesn't need
!                --  guard.
  
!                declare
!                   Nod : constant Node_Id := Last (Elsif_Parts (Ret));
!                begin
!                   Remove (Nod);
!                   Set_Else_Statements (Ret, Then_Statements (Nod));
!                end;
!             end if;
           end if;
        end if;
  
--- 2504,2526 ----
                  Expression => Make_Integer_Literal (Loc, 1));
  
           else
!             --  Ranges are in increasing order, so last one doesn't need guard
  
!             declare
!                Nod : constant Node_Id := Last (Elsif_Parts (Ret));
!             begin
!                Remove (Nod);
!                Set_Else_Statements (Ret, Then_Statements (Nod));
  
!                --  If Elsif_Parts becomes empty then remove it entirely, as
!                --  otherwise we would violate the invariant of If_Statement
!                --  node described in Sinfo.
  
!                if Is_Empty_List (Elsif_Parts (Ret)) then
!                   pragma Assert (Elsif_Parts (Ret) /= No_List);
!                   Set_Elsif_Parts (Ret, No_List);
!                end if;
!             end;
           end if;
        end if;
  
*************** package body Exp_Ch9 is
*** 3084,3090 ****
              Expected_Comp : Entity_Id;
              Stmt          : Node_Id;
              Stmts         : List_Id :=
!                               New_Copy_List (Statements (Hand_Stmt_Seq));
              Typ_Size      : Int;
              Unsigned      : Entity_Id;
  
--- 2798,2804 ----
              Expected_Comp : Entity_Id;
              Stmt          : Node_Id;
              Stmts         : List_Id :=
!                               New_Copy_List_Tree (Statements (Hand_Stmt_Seq));
              Typ_Size      : Int;
              Unsigned      : Entity_Id;
  
*************** package body Exp_Ch9 is
*** 3494,3503 ****
           Find_Enclosing_Context (Par, Context, Context_Id, Decls);
        end if;
  
        --  Nothing to do if the context already has a master; internally built
        --  finalizers don't need a master.
  
!       if Has_Master_Entity (Context_Id)
          or else Is_Finalizer (Context_Id)
        then
           return;
--- 3208,3252 ----
           Find_Enclosing_Context (Par, Context, Context_Id, Decls);
        end if;
  
+       --  When the enclosing context is a BIP function whose result type has
+       --  tasks, the function has an extra formal that is the master of the
+       --  tasks to be created by its returned object (that is, when its
+       --  enclosing context is a return statement). However, if the body of
+       --  the function creates tasks before its return statements, such tasks
+       --  need their own master.
+ 
+       if Has_Master_Entity (Context_Id)
+         and then Ekind (Context_Id) = E_Function
+         and then Is_Build_In_Place_Function (Context_Id)
+         and then Needs_BIP_Task_Actuals (Context_Id)
+       then
+          --  No need to add it again if previously added
+ 
+          declare
+             Master_Present : Boolean;
+ 
+          begin
+             --  Handle transient scopes
+ 
+             if Context_Id /= Current_Scope then
+                Push_Scope (Context_Id);
+                Master_Present :=
+                  Present (Current_Entity_In_Scope (Name_uMaster));
+                Pop_Scope;
+             else
+                Master_Present :=
+                  Present (Current_Entity_In_Scope (Name_uMaster));
+             end if;
+ 
+             if Master_Present then
+                return;
+             end if;
+          end;
+ 
        --  Nothing to do if the context already has a master; internally built
        --  finalizers don't need a master.
  
!       elsif Has_Master_Entity (Context_Id)
          or else Is_Finalizer (Context_Id)
        then
           return;
*************** package body Exp_Ch9 is
*** 3707,3713 ****
  
        Analyze_Statements (Bod_Stmts);
  
!       Set_Scope (Entity (Identifier (First (Bod_Stmts))), Bod_Id);
  
        Reset_Scopes_To
          (First (Bod_Stmts), Entity (Identifier (First (Bod_Stmts))));
--- 3456,3463 ----
  
        Analyze_Statements (Bod_Stmts);
  
!       Set_Scope (Entity (Identifier (First (Bod_Stmts))),
!                  Protected_Body_Subprogram (Ent));
  
        Reset_Scopes_To
          (First (Bod_Stmts), Entity (Identifier (First (Bod_Stmts))));
*************** package body Exp_Ch9 is
*** 3807,3812 ****
--- 3557,3563 ----
           --  Establish link between subprogram body and source entry body
  
           Set_Corresponding_Entry_Body (Proc_Body, N);
+          Set_At_End_Proc (Proc_Body, At_End_Proc (N));
  
           Reset_Scopes_To (Proc_Body, Protected_Body_Subprogram (Ent));
           return Proc_Body;
*************** package body Exp_Ch9 is
*** 3863,3894 ****
        Ident       : Entity_Id;
        Unprotected : Boolean := False) return List_Id
     is
!       Loc       : constant Source_Ptr := Sloc (N);
!       Decl      : Node_Id;
!       Formal    : Entity_Id;
!       New_Plist : List_Id;
!       New_Param : Node_Id;
  
     begin
        New_Plist := New_List;
  
        Formal := First_Formal (Ident);
        while Present (Formal) loop
!          New_Param :=
             Make_Parameter_Specification (Loc,
!              Defining_Identifier =>
!                Make_Defining_Identifier (Sloc (Formal), Chars (Formal)),
               Aliased_Present     => Aliased_Present (Parent (Formal)),
               In_Present          => In_Present      (Parent (Formal)),
               Out_Present         => Out_Present     (Parent (Formal)),
!              Parameter_Type      => New_Occurrence_Of (Etype (Formal), Loc));
! 
!          if Unprotected then
!             Set_Protected_Formal (Formal, Defining_Identifier (New_Param));
!             Mutate_Ekind (Defining_Identifier (New_Param), Ekind (Formal));
!          end if;
  
-          Append (New_Param, New_Plist);
           Next_Formal (Formal);
        end loop;
  
--- 3614,3648 ----
        Ident       : Entity_Id;
        Unprotected : Boolean := False) return List_Id
     is
!       Loc : constant Source_Ptr := Sloc (N);
! 
!       Decl       : Node_Id;
!       Formal     : Entity_Id;
!       New_Formal : Entity_Id;
!       New_Plist  : List_Id;
  
     begin
        New_Plist := New_List;
  
        Formal := First_Formal (Ident);
        while Present (Formal) loop
!          New_Formal :=
!            Make_Defining_Identifier (Sloc (Formal), Chars (Formal));
!          Set_Comes_From_Source (New_Formal, Comes_From_Source (Formal));
! 
!          if Unprotected then
!             Mutate_Ekind (New_Formal, Ekind (Formal));
!             Set_Protected_Formal (Formal, New_Formal);
!          end if;
! 
!          Append_To (New_Plist,
             Make_Parameter_Specification (Loc,
!              Defining_Identifier => New_Formal,
               Aliased_Present     => Aliased_Present (Parent (Formal)),
               In_Present          => In_Present      (Parent (Formal)),
               Out_Present         => Out_Present     (Parent (Formal)),
!              Parameter_Type      => New_Occurrence_Of (Etype (Formal), Loc)));
  
           Next_Formal (Formal);
        end loop;
  
*************** package body Exp_Ch9 is
*** 4017,4024 ****
        Pid       : Node_Id;
        N_Op_Spec : Node_Id) return Node_Id
     is
!       Exc_Safe : constant Boolean := not Might_Raise (N);
!       --  True if N cannot raise an exception
  
        Loc       : constant Source_Ptr := Sloc (N);
        Op_Spec   : constant Node_Id := Specification (N);
--- 3771,3777 ----
        Pid       : Node_Id;
        N_Op_Spec : Node_Id) return Node_Id
     is
!       Might_Raise : constant Boolean := Sem_Util.Might_Raise (N);
  
        Loc       : constant Source_Ptr := Sloc (N);
        Op_Spec   : constant Node_Id := Specification (N);
*************** package body Exp_Ch9 is
*** 4055,4061 ****
        --  for use by the protected version built below.
  
        if Nkind (Op_Spec) = N_Function_Specification then
!          if Exc_Safe then
              R := Make_Temporary (Loc, 'R');
  
              Unprot_Call :=
--- 3808,3824 ----
        --  for use by the protected version built below.
  
        if Nkind (Op_Spec) = N_Function_Specification then
!          if Might_Raise then
!             Unprot_Call :=
!               Make_Simple_Return_Statement (Loc,
!                 Expression =>
!                   Make_Function_Call (Loc,
!                     Name                   =>
!                       Make_Identifier (Loc,
!                         Chars => Chars (Defining_Unit_Name (N_Op_Spec))),
!                     Parameter_Associations => Uactuals));
! 
!          else
              R := Make_Temporary (Loc, 'R');
  
              Unprot_Call :=
*************** package body Exp_Ch9 is
*** 4074,4089 ****
              Return_Stmt :=
                Make_Simple_Return_Statement (Loc,
                  Expression => New_Occurrence_Of (R, Loc));
- 
-          else
-             Unprot_Call :=
-               Make_Simple_Return_Statement (Loc,
-                 Expression =>
-                   Make_Function_Call (Loc,
-                     Name                   =>
-                       Make_Identifier (Loc,
-                         Chars => Chars (Defining_Unit_Name (N_Op_Spec))),
-                     Parameter_Associations => Uactuals));
           end if;
  
           if Has_Aspect (Pid, Aspect_Exclusive_Functions)
--- 3837,3842 ----
*************** package body Exp_Ch9 is
*** 4109,4115 ****
  
        --  Wrap call in block that will be covered by an at_end handler
  
!       if not Exc_Safe then
           Unprot_Call :=
             Make_Block_Statement (Loc,
               Handled_Statement_Sequence =>
--- 3862,3868 ----
  
        --  Wrap call in block that will be covered by an at_end handler
  
!       if Might_Raise then
           Unprot_Call :=
             Make_Block_Statement (Loc,
               Handled_Statement_Sequence =>
*************** package body Exp_Ch9 is
*** 4156,4162 ****
           Stmts := New_List (Lock_Stmt);
        end if;
  
!       if not Exc_Safe then
           Append (Unprot_Call, Stmts);
        else
           if Nkind (Op_Spec) = N_Function_Specification then
--- 3909,3915 ----
           Stmts := New_List (Lock_Stmt);
        end if;
  
!       if Might_Raise then
           Append (Unprot_Call, Stmts);
        else
           if Nkind (Op_Spec) = N_Function_Specification then
*************** package body Exp_Ch9 is
*** 4166,4175 ****
              Append (Unprot_Call, Stmts);
           end if;
  
-          --  Historical note: Previously, call to the cleanup was inserted
-          --  here. This is now done by Build_Protected_Subprogram_Call_Cleanup,
-          --  which is also shared by the 'not Exc_Safe' path.
- 
           Build_Protected_Subprogram_Call_Cleanup (Op_Spec, Pid, Loc, Stmts);
  
           if Nkind (Op_Spec) = N_Function_Specification then
--- 3919,3924 ----
*************** package body Exp_Ch9 is
*** 4192,4201 ****
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Stmts));
  
        --  Mark this subprogram as a protected subprogram body so that the
!       --  cleanup will be inserted. This is done only in the 'not Exc_Safe'
!       --  path as otherwise the cleanup has already been inserted.
  
!       if not Exc_Safe then
           Set_Is_Protected_Subprogram_Body (Sub_Body);
        end if;
  
--- 3941,3950 ----
              Make_Handled_Sequence_Of_Statements (Loc, Statements => Stmts));
  
        --  Mark this subprogram as a protected subprogram body so that the
!       --  cleanup will be inserted. This is done only in the Might_Raise
!       --  case because otherwise the cleanup has already been inserted.
  
!       if Might_Raise then
           Set_Is_Protected_Subprogram_Body (Sub_Body);
        end if;
  
*************** package body Exp_Ch9 is
*** 5232,5238 ****
            Specification              =>
              Build_Protected_Sub_Specification (N, Pid, Unprotected_Mode),
            Declarations               => Decls,
!           Handled_Statement_Sequence => Handled_Statement_Sequence (N));
     end Build_Unprotected_Subprogram_Body;
  
     ----------------------------
--- 4981,4988 ----
            Specification              =>
              Build_Protected_Sub_Specification (N, Pid, Unprotected_Mode),
            Declarations               => Decls,
!           Handled_Statement_Sequence => Handled_Statement_Sequence (N),
!           At_End_Proc                => At_End_Proc (N));
     end Build_Unprotected_Subprogram_Body;
  
     ----------------------------
*************** package body Exp_Ch9 is
*** 6338,6344 ****
  
              when N_Expression_With_Actions =>
                 --  this may occur in the case of a Count attribute reference
!                if Original_Node (N) /= N
                   and then Is_Pure_Barrier (Original_Node (N)) /= Abandon
                 then
                    return Skip;
--- 6088,6094 ----
  
              when N_Expression_With_Actions =>
                 --  this may occur in the case of a Count attribute reference
!                if Is_Rewrite_Substitution (N)
                   and then Is_Pure_Barrier (Original_Node (N)) /= Abandon
                 then
                    return Skip;
*************** package body Exp_Ch9 is
*** 7811,7817 ****
  
           Hdle := New_List (Build_Abort_Block_Handler (Loc));
  
!          Prepend_To (Astats, Build_Runtime_Call (Loc, RE_Abort_Undefer));
  
           Abortable_Block :=
             Make_Block_Statement (Loc,
--- 7561,7569 ----
  
           Hdle := New_List (Build_Abort_Block_Handler (Loc));
  
!          if Abort_Allowed then
!             Prepend_To (Astats, Build_Runtime_Call (Loc, RE_Abort_Undefer));
!          end if;
  
           Abortable_Block :=
             Make_Block_Statement (Loc,
*************** package body Exp_Ch9 is
*** 8210,8216 ****
  
        else
           Transient_Blk :=
!            First_Real_Statement (Handled_Statement_Sequence (Blk));
  
           if Present (Transient_Blk)
             and then Nkind (Transient_Blk) = N_Block_Statement
--- 7962,7968 ----
  
        else
           Transient_Blk :=
!            First (Statements (Handled_Statement_Sequence (Blk)));
  
           if Present (Transient_Blk)
             and then Nkind (Transient_Blk) = N_Block_Statement
*************** package body Exp_Ch9 is
*** 9129,9135 ****
           --  Build a wrapper procedure to handle contract cases, preconditions,
           --  and postconditions.
  
!          Build_Contract_Wrapper (Ent_Id, N);
  
           --  Create the barrier function
  
--- 8881,8887 ----
           --  Build a wrapper procedure to handle contract cases, preconditions,
           --  and postconditions.
  
!          Build_Entry_Contract_Wrapper (Ent_Id, N);
  
           --  Create the barrier function
  
*************** package body Exp_Ch9 is
*** 9297,9467 ****
  
        --  Add private field components
  
!       if Present (Private_Declarations (Pdef)) then
!          Priv := First (Private_Declarations (Pdef));
!          while Present (Priv) loop
!             if Nkind (Priv) = N_Component_Declaration then
!                if not Static_Component_Size (Defining_Identifier (Priv)) then
  
!                   --  When compiling for a restricted profile, the private
!                   --  components must have a static size. If not, this is an
!                   --  error for a single protected declaration, and rates a
!                   --  warning on a protected type declaration.
  
!                   if not Comes_From_Source (Prot_Typ) then
  
!                      --  It's ok to be checking this restriction at expansion
!                      --  time, because this is only for the restricted profile,
!                      --  which is not subject to strict RM conformance, so it
!                      --  is OK to miss this check in -gnatc mode.
  
!                      Check_Restriction (No_Implicit_Heap_Allocations, Priv);
!                      Check_Restriction
!                        (No_Implicit_Protected_Object_Allocations, Priv);
  
!                   elsif Restriction_Active (No_Implicit_Heap_Allocations) then
!                      if not Discriminated_Size (Defining_Identifier (Priv))
!                      then
!                         --  Any object of the type will be non-static
  
!                         Error_Msg_N ("component has non-static size??", Priv);
!                         Error_Msg_NE
!                           ("\creation of protected object of type& will "
!                            & "violate restriction "
!                            & "No_Implicit_Heap_Allocations??", Priv, Prot_Typ);
!                      else
!                         --  Object will be non-static if discriminants are
  
!                         Error_Msg_NE
!                           ("creation of protected object of type& with "
!                            & "non-static discriminants will violate "
!                            & "restriction No_Implicit_Heap_Allocations??",
!                            Priv, Prot_Typ);
!                      end if;
  
!                   --  Likewise for No_Implicit_Protected_Object_Allocations
  
!                   elsif Restriction_Active
!                     (No_Implicit_Protected_Object_Allocations)
!                   then
!                      if not Discriminated_Size (Defining_Identifier (Priv))
!                      then
!                         --  Any object of the type will be non-static
  
!                         Error_Msg_N ("component has non-static size??", Priv);
!                         Error_Msg_NE
!                           ("\creation of protected object of type& will "
!                            & "violate restriction "
!                            & "No_Implicit_Protected_Object_Allocations??",
!                            Priv, Prot_Typ);
!                      else
!                         --  Object will be non-static if discriminants are
  
!                         Error_Msg_NE
!                           ("creation of protected object of type& with "
!                            & "non-static discriminants will violate "
!                            & "restriction "
!                            & "No_Implicit_Protected_Object_Allocations??",
!                            Priv, Prot_Typ);
!                      end if;
                    end if;
                 end if;
  
!                --  The component definition consists of a subtype indication,
!                --  or (in Ada 2005) an access definition. Make a copy of the
!                --  proper definition.
  
!                declare
!                   Old_Comp : constant Node_Id   := Component_Definition (Priv);
!                   Oent     : constant Entity_Id := Defining_Identifier (Priv);
!                   Nent     : constant Entity_Id :=
!                                Make_Defining_Identifier (Sloc (Oent),
!                                  Chars => Chars (Oent));
!                   New_Comp : Node_Id;
  
!                begin
!                   if Present (Subtype_Indication (Old_Comp)) then
!                      New_Comp :=
!                        Make_Component_Definition (Sloc (Oent),
!                          Aliased_Present    => False,
!                          Subtype_Indication =>
!                            New_Copy_Tree
!                              (Subtype_Indication (Old_Comp), Discr_Map));
!                   else
!                      New_Comp :=
!                        Make_Component_Definition (Sloc (Oent),
!                          Aliased_Present    => False,
!                          Access_Definition  =>
!                            New_Copy_Tree
!                              (Access_Definition (Old_Comp), Discr_Map));
  
!                       --  A self-reference in the private part becomes a
!                       --  self-reference to the corresponding record.
  
!                      if Entity (Subtype_Mark (Access_Definition (New_Comp)))
!                        = Prot_Typ
!                      then
!                         Replace_Access_Definition (New_Comp);
!                      end if;
                    end if;
  
!                   New_Priv :=
!                     Make_Component_Declaration (Loc,
!                       Defining_Identifier  => Nent,
!                       Component_Definition => New_Comp,
!                       Expression           => Expression (Priv));
  
!                   Set_Has_Per_Object_Constraint (Nent,
!                     Has_Per_Object_Constraint (Oent));
  
!                   Append_To (Cdecls, New_Priv);
!                end;
  
!             elsif Nkind (Priv) = N_Subprogram_Declaration then
  
!                --  Make the unprotected version of the subprogram available
!                --  for expansion of intra object calls. There is need for
!                --  a protected version only if the subprogram is an interrupt
!                --  handler, otherwise  this operation can only be called from
!                --  within the body.
  
!                Sub :=
!                  Make_Subprogram_Declaration (Loc,
!                    Specification =>
!                      Build_Protected_Sub_Specification
!                        (Priv, Prot_Typ, Unprotected_Mode));
  
!                Insert_After (Current_Node, Sub);
!                Analyze (Sub);
  
!                Set_Protected_Body_Subprogram
!                  (Defining_Unit_Name (Specification (Priv)),
!                   Defining_Unit_Name (Specification (Sub)));
!                Check_Inlining (Defining_Unit_Name (Specification (Priv)));
!                Current_Node := Sub;
  
!                Sub :=
!                  Make_Subprogram_Declaration (Loc,
!                    Specification =>
!                      Build_Protected_Sub_Specification
!                        (Priv, Prot_Typ, Protected_Mode));
  
!                Insert_After (Current_Node, Sub);
!                Analyze (Sub);
!                Current_Node := Sub;
  
!                if Is_Interrupt_Handler
!                  (Defining_Unit_Name (Specification (Priv)))
!                then
!                   if not Restricted_Profile then
!                      Register_Handler;
!                   end if;
                 end if;
              end if;
  
!             Next (Priv);
!          end loop;
!       end if;
  
        --  Except for the lock-free implementation, append the _Object field
        --  with the right type to the component list. We need to compute the
--- 9049,9215 ----
  
        --  Add private field components
  
!       Priv := First (Private_Declarations (Pdef));
!       while Present (Priv) loop
!          if Nkind (Priv) = N_Component_Declaration then
!             if not Static_Component_Size (Defining_Identifier (Priv)) then
  
!                --  When compiling for a restricted profile, the private
!                --  components must have a static size. If not, this is an error
!                --  for a single protected declaration, and rates a warning on a
!                --  protected type declaration.
  
!                if not Comes_From_Source (Prot_Typ) then
  
!                   --  It's ok to be checking this restriction at expansion
!                   --  time, because this is only for the restricted profile,
!                   --  which is not subject to strict RM conformance, so it
!                   --  is OK to miss this check in -gnatc mode.
  
!                   Check_Restriction (No_Implicit_Heap_Allocations, Priv);
!                   Check_Restriction
!                     (No_Implicit_Protected_Object_Allocations, Priv);
  
!                elsif Restriction_Active (No_Implicit_Heap_Allocations) then
!                   if not Discriminated_Size (Defining_Identifier (Priv))
!                   then
!                      --  Any object of the type will be non-static
  
!                      Error_Msg_N ("component has non-static size??", Priv);
!                      Error_Msg_NE
!                        ("\creation of protected object of type& will "
!                         & "violate restriction "
!                         & "No_Implicit_Heap_Allocations??", Priv, Prot_Typ);
!                   else
!                      --  Object will be non-static if discriminants are
  
!                      Error_Msg_NE
!                        ("creation of protected object of type& with "
!                         & "non-static discriminants will violate "
!                         & "restriction No_Implicit_Heap_Allocations??",
!                         Priv, Prot_Typ);
!                   end if;
  
!                --  Likewise for No_Implicit_Protected_Object_Allocations
  
!                elsif Restriction_Active
!                  (No_Implicit_Protected_Object_Allocations)
!                then
!                   if not Discriminated_Size (Defining_Identifier (Priv)) then
!                      --  Any object of the type will be non-static
  
!                      Error_Msg_N ("component has non-static size??", Priv);
!                      Error_Msg_NE
!                        ("\creation of protected object of type& will violate "
!                         & "restriction "
!                         & "No_Implicit_Protected_Object_Allocations??",
!                         Priv, Prot_Typ);
!                   else
!                      --  Object will be non-static if discriminants are
  
!                      Error_Msg_NE
!                        ("creation of protected object of type& with "
!                         & "non-static discriminants will violate restriction "
!                         & "No_Implicit_Protected_Object_Allocations??",
!                         Priv, Prot_Typ);
                    end if;
                 end if;
+             end if;
  
!             --  The component definition consists of a subtype indication, or
!             --  (in Ada 2005) an access definition. Make a copy of the proper
!             --  definition.
  
!             declare
!                Old_Comp : constant Node_Id   := Component_Definition (Priv);
!                Oent     : constant Entity_Id := Defining_Identifier (Priv);
!                Nent     : constant Entity_Id :=
!                             Make_Defining_Identifier (Sloc (Oent),
!                               Chars => Chars (Oent));
!                New_Comp : Node_Id;
  
!             begin
!                if Present (Subtype_Indication (Old_Comp)) then
!                   New_Comp :=
!                     Make_Component_Definition (Sloc (Oent),
!                       Aliased_Present    => False,
!                       Subtype_Indication =>
!                         New_Copy_Tree
!                           (Subtype_Indication (Old_Comp), Discr_Map));
!                else
!                   New_Comp :=
!                     Make_Component_Definition (Sloc (Oent),
!                       Aliased_Present   => False,
!                       Access_Definition =>
!                         New_Copy_Tree
!                           (Access_Definition (Old_Comp), Discr_Map));
  
!                    --  A self-reference in the private part becomes a
!                    --  self-reference to the corresponding record.
  
!                   if Entity (Subtype_Mark (Access_Definition (New_Comp)))
!                     = Prot_Typ
!                   then
!                      Replace_Access_Definition (New_Comp);
                    end if;
+                end if;
  
!                New_Priv :=
!                  Make_Component_Declaration (Loc,
!                    Defining_Identifier  => Nent,
!                    Component_Definition => New_Comp,
!                    Expression           => Expression (Priv));
  
!                Set_Has_Per_Object_Constraint (Nent,
!                  Has_Per_Object_Constraint (Oent));
  
!                Append_To (Cdecls, New_Priv);
!             end;
  
!          elsif Nkind (Priv) = N_Subprogram_Declaration then
  
!             --  Make the unprotected version of the subprogram available for
!             --  expansion of intra object calls. There is need for a protected
!             --  version only if the subprogram is an interrupt handler,
!             --  otherwise this operation can only be called from within the
!             --  body.
  
!             Sub :=
!               Make_Subprogram_Declaration (Loc,
!                 Specification =>
!                   Build_Protected_Sub_Specification
!                     (Priv, Prot_Typ, Unprotected_Mode));
  
!             Insert_After (Current_Node, Sub);
!             Analyze (Sub);
  
!             Set_Protected_Body_Subprogram
!               (Defining_Unit_Name (Specification (Priv)),
!                Defining_Unit_Name (Specification (Sub)));
!             Check_Inlining (Defining_Unit_Name (Specification (Priv)));
!             Current_Node := Sub;
  
!             Sub :=
!               Make_Subprogram_Declaration (Loc,
!                 Specification =>
!                   Build_Protected_Sub_Specification
!                     (Priv, Prot_Typ, Protected_Mode));
  
!             Insert_After (Current_Node, Sub);
!             Analyze (Sub);
!             Current_Node := Sub;
  
!             if Is_Interrupt_Handler
!               (Defining_Unit_Name (Specification (Priv)))
!             then
!                if not Restricted_Profile then
!                   Register_Handler;
                 end if;
              end if;
+          end if;
  
!          Next (Priv);
!       end loop;
  
        --  Except for the lock-free implementation, append the _Object field
        --  with the right type to the component list. We need to compute the
*************** package body Exp_Ch9 is
*** 9702,9717 ****
        --  If there are some private entry declarations, expand it as if they
        --  were visible entries.
  
!       if Present (Private_Declarations (Pdef)) then
!          Comp := First (Private_Declarations (Pdef));
!          while Present (Comp) loop
!             if Nkind (Comp) = N_Entry_Declaration then
!                Expand_Entry_Declaration (Comp);
!             end if;
  
!             Next (Comp);
!          end loop;
!       end if;
  
        --  Create the declaration of an array object which contains the values
        --  of aspect/pragma Max_Queue_Length for all entries of the protected
--- 9450,9463 ----
        --  If there are some private entry declarations, expand it as if they
        --  were visible entries.
  
!       Comp := First (Private_Declarations (Pdef));
!       while Present (Comp) loop
!          if Nkind (Comp) = N_Entry_Declaration then
!             Expand_Entry_Declaration (Comp);
!          end if;
  
!          Next (Comp);
!       end loop;
  
        --  Create the declaration of an array object which contains the values
        --  of aspect/pragma Max_Queue_Length for all entries of the protected
*************** package body Exp_Ch9 is
*** 11833,11849 ****
  
        if Abort_Allowed then
           Call := Build_Runtime_Call (Loc, RE_Abort_Undefer);
!          Insert_Before
!            (First (Statements (Handled_Statement_Sequence (N))), Call);
           Analyze (Call);
        end if;
  
!       --  The statement part has already been protected with an at_end and
!       --  cleanup actions. The call to Complete_Activation must be placed
!       --  at the head of the sequence of statements of that block. The
!       --  declarations have been merged in this sequence of statements but
!       --  the first real statement is accessible from the First_Real_Statement
!       --  field (which was set for exactly this purpose).
  
        if Restricted_Profile then
           Call := Build_Runtime_Call (Loc, RE_Complete_Restricted_Activation);
--- 11579,11589 ----
  
        if Abort_Allowed then
           Call := Build_Runtime_Call (Loc, RE_Abort_Undefer);
!          Prepend (Call, Declarations (N));
           Analyze (Call);
        end if;
  
!       --  Place call to Complete_Activation at the head of the statement list.
  
        if Restricted_Profile then
           Call := Build_Runtime_Call (Loc, RE_Complete_Restricted_Activation);
*************** package body Exp_Ch9 is
*** 11852,11858 ****
        end if;
  
        Insert_Before
!         (First_Real_Statement (Handled_Statement_Sequence (N)), Call);
        Analyze (Call);
  
        New_N :=
--- 11592,11598 ----
        end if;
  
        Insert_Before
!         (First (Statements (Handled_Statement_Sequence (N))), Call);
        Analyze (Call);
  
        New_N :=
*************** package body Exp_Ch9 is
*** 11861,11866 ****
--- 11601,11607 ----
            Declarations               => Declarations (N),
            Handled_Statement_Sequence => Handled_Statement_Sequence (N));
        Set_Is_Task_Body_Procedure (New_N);
+       Set_At_End_Proc (New_N, At_End_Proc (N));
  
        --  If the task contains generic instantiations, cleanup actions are
        --  delayed until after instantiation. Transfer the activation chain to
*************** package body Exp_Ch9 is
*** 12534,12540 ****
           Ent := First_Entity (Tasktyp);
           while Present (Ent) loop
              if Ekind (Ent) in E_Entry | E_Entry_Family then
!                Build_Contract_Wrapper (Ent, N);
              end if;
  
              Next_Entity (Ent);
--- 12275,12281 ----
           Ent := First_Entity (Tasktyp);
           while Present (Ent) loop
              if Ekind (Ent) in E_Entry | E_Entry_Family then
!                Build_Entry_Contract_Wrapper (Ent, N);
              end if;
  
              Next_Entity (Ent);
*************** package body Exp_Ch9 is
*** 13736,13741 ****
--- 13477,13483 ----
                    Make_Selected_Component (Loc,
                      Prefix        => New_Occurrence_Of (Obj_Ent, Loc),
                      Selector_Name => Make_Identifier (Loc, Name_uObject)));
+ 
              Add (Decl);
           end;
        end if;
*************** package body Exp_Ch9 is
*** 13767,13772 ****
--- 13509,13515 ----
                       Make_Selected_Component (Loc,
                         Prefix        => New_Occurrence_Of (Obj_Ent, Loc),
                         Selector_Name => Make_Identifier (Loc, Chars (D))));
+ 
                 Add (Decl);
  
                 --  Set debug info needed on this renaming declaration even
*************** package body Exp_Ch9 is
*** 13833,13838 ****
--- 13576,13582 ----
                             Make_Selected_Component (Loc,
                               Prefix => New_Occurrence_Of (Obj_Ent, Loc),
                               Selector_Name => Make_Identifier (Loc, Nam)));
+ 
                       Add (Decl);
                    end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_ch9.ads gcc-13.1.0/gcc/ada/exp_ch9.ads
*** gcc-12.2.0/gcc/ada/exp_ch9.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_ch9.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_code.adb gcc-13.1.0/gcc/ada/exp_code.adb
*** gcc-12.2.0/gcc/ada/exp_code.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_code.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Code is
*** 471,481 ****
        --  Case of list of arguments
  
        elsif Nkind (Arg) = N_Aggregate then
!          if Expressions (Arg) = No_List then
!             Operand_Var := Empty;
!          else
!             Operand_Var := First (Expressions (Arg));
!          end if;
  
        --  Otherwise must be default (no operands) case
  
--- 471,477 ----
        --  Case of list of arguments
  
        elsif Nkind (Arg) = N_Aggregate then
!          Operand_Var := First (Expressions (Arg));
  
        --  Otherwise must be default (no operands) case
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_code.ads gcc-13.1.0/gcc/ada/exp_code.ads
*** gcc-12.2.0/gcc/ada/exp_code.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_code.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_dbug.adb gcc-13.1.0/gcc/ada/exp_dbug.adb
*** gcc-12.2.0/gcc/ada/exp_dbug.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_dbug.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Dbug is
*** 415,421 ****
                 | N_Identifier
              =>
                 if No (Entity (Ren))
!                  or else not Present (Renamed_Entity_Or_Object (Entity (Ren)))
                 then
                    exit;
                 end if;
--- 415,421 ----
                 | N_Identifier
              =>
                 if No (Entity (Ren))
!                  or else No (Renamed_Entity_Or_Object (Entity (Ren)))
                 then
                    exit;
                 end if;
*************** package body Exp_Dbug is
*** 1028,1033 ****
--- 1028,1034 ----
        E := First_Entity (Wrapper);
        while Present (E) loop
           if Nkind (Parent (E)) = N_Object_Declaration
+            and then Present (Corresponding_Generic_Association (Parent (E)))
             and then Is_Elementary_Type (Etype (E))
           then
              Loc := Sloc (Expression (Parent (E)));
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_dbug.ads gcc-13.1.0/gcc/ada/exp_dbug.ads
*** gcc-12.2.0/gcc/ada/exp_dbug.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_dbug.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Dbug is
*** 1444,1450 ****
     --  placed within the wrapper package of the instance, and the entity in
     --  these declarations is encoded in a complex way that GDB does not handle
     --  well. These new renaming declarations appear within the body of the
!    --  subprogram, and are redundant from a visibility point of view, but They
     --  should have no measurable performance impact, and require no special
     --  decoding in the debugger.
  
--- 1444,1450 ----
     --  placed within the wrapper package of the instance, and the entity in
     --  these declarations is encoded in a complex way that GDB does not handle
     --  well. These new renaming declarations appear within the body of the
!    --  subprogram, and are redundant from a visibility point of view, but they
     --  should have no measurable performance impact, and require no special
     --  decoding in the debugger.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_disp.adb gcc-13.1.0/gcc/ada/exp_disp.adb
*** gcc-12.2.0/gcc/ada/exp_disp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_disp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Atree;          use Atree;
  with Checks;         use Checks;
  with Debug;          use Debug;
*************** package body Exp_Disp is
*** 80,85 ****
--- 81,115 ----
     --  Ada 2005 (AI-251): Returns the fixed position in the dispatch table
     --  of the default primitive operations.
  
+    procedure Expand_Interface_Thunk
+      (Prim       : Entity_Id;
+       Thunk_Id   : out Entity_Id;
+       Thunk_Code : out List_Id;
+       Iface      : Entity_Id);
+    --  Ada 2005 (AI-251): When a tagged type implements abstract interfaces we
+    --  generate additional subprograms (thunks) associated with each primitive
+    --  Prim to have a layout compatible with the C++ ABI. The thunk displaces
+    --  the pointers to the actuals that depend on the controlling type before
+    --  transferring control to the target subprogram. If there is no need to
+    --  generate the thunk, then Thunk_Id is set to Empty. Otherwise Thunk_Id
+    --  is set to the defining identifier of the thunk and Thunk_Code to the
+    --  code generated for the thunk respectively.
+ 
+    procedure Expand_Secondary_Stack_Thunk
+      (Prim       : Entity_Id;
+       Thunk_Id   : out Entity_Id;
+       Thunk_Code : out Node_Id);
+    --  When a primitive function of a tagged type can dispatch on result and
+    --  the tagged type is not returned on the secondary stack, we generate an
+    --  additional function (thunk) that calls the primitive function with the
+    --  same actuals and move its result onto the secondary stack. This thunk
+    --  is intended to be put into the slot of the primitive function in the
+    --  dispatch table, so as to be invoked in lieu of the primitive function
+    --  in dispatching calls. If there is no need to generate the thunk, then
+    --  Thunk_Id is set to Empty. Otherwise Thunk_Id is set to the defining
+    --  identifier of the thunk and Thunk_Code to the code generated for the
+    --  thunk respectively.
+ 
     function Has_DT (Typ : Entity_Id) return Boolean;
     pragma Inline (Has_DT);
     --  Returns true if we generate a dispatch table for tagged type Typ
*************** package body Exp_Disp is
*** 358,363 ****
--- 388,399 ----
        procedure Build_Package_Dispatch_Tables (N : Node_Id);
        --  Build static dispatch tables associated with package declaration N
  
+       procedure Make_And_Insert_Dispatch_Table (Typ : Entity_Id);
+       --  Build the dispatch table of the tagged type Typ and insert it at the
+       --  end of Target_List after wrapping it in the Actions list of a freeze
+       --  node, so that it is skipped by Sem_Elab (Expand_Freeze_Record_Type
+       --  does the same for nonstatic dispatch tables).
+ 
        ---------------------------
        -- Build_Dispatch_Tables --
        ---------------------------
*************** package body Exp_Disp is
*** 410,417 ****
                 then
                    null;
                 else
!                   Insert_List_After_And_Analyze (Last (Target_List),
!                     Make_DT (Defining_Entity (D)));
                 end if;
  
              --  Handle private types of library level tagged types. We must
--- 446,452 ----
                 then
                    null;
                 else
!                   Make_And_Insert_Dispatch_Table (Defining_Entity (D));
                 end if;
  
              --  Handle private types of library level tagged types. We must
*************** package body Exp_Disp is
*** 434,441 ****
                      and then not Is_Concurrent_Type (E2)
                    then
                       Exchange_Declarations (E1);
!                      Insert_List_After_And_Analyze (Last (Target_List),
!                        Make_DT (E1));
                       Exchange_Declarations (E2);
                    end if;
                 end;
--- 469,475 ----
                      and then not Is_Concurrent_Type (E2)
                    then
                       Exchange_Declarations (E1);
!                      Make_And_Insert_Dispatch_Table (E1);
                       Exchange_Declarations (E2);
                    end if;
                 end;
*************** package body Exp_Disp is
*** 469,483 ****
           Pop_Scope;
        end Build_Package_Dispatch_Tables;
  
     --  Start of processing for Build_Static_Dispatch_Tables
  
     begin
-       if not Expander_Active
-         or else not Tagged_Type_Expansion
-       then
-          return;
-       end if;
- 
        if Nkind (N) = N_Package_Declaration then
           declare
              Spec       : constant Node_Id := Specification (N);
--- 503,530 ----
           Pop_Scope;
        end Build_Package_Dispatch_Tables;
  
+       ------------------------------------
+       -- Make_And_Insert_Dispatch_Table --
+       ------------------------------------
+ 
+       procedure Make_And_Insert_Dispatch_Table (Typ : Entity_Id) is
+          F_Typ : constant Entity_Id := Create_Itype (E_Class_Wide_Type, Typ);
+          --  The code generator discards freeze nodes of CW types after
+          --  evaluating their side effects, so create an artificial one.
+ 
+          F_Nod : constant Node_Id := Make_Freeze_Entity (Sloc (Typ));
+ 
+       begin
+          Set_Is_Frozen (F_Typ);
+          Set_Entity    (F_Nod, F_Typ);
+          Set_Actions   (F_Nod, Make_DT (Typ));
+ 
+          Insert_After_And_Analyze (Last (Target_List), F_Nod);
+       end Make_And_Insert_Dispatch_Table;
+ 
     --  Start of processing for Build_Static_Dispatch_Tables
  
     begin
        if Nkind (N) = N_Package_Declaration then
           declare
              Spec       : constant Node_Id := Specification (N);
*************** package body Exp_Disp is
*** 501,508 ****
           end;
  
        else pragma Assert (Nkind (N) = N_Package_Body);
!          Target_List := Declarations (N);
!          Build_Dispatch_Tables (Target_List);
        end if;
     end Build_Static_Dispatch_Tables;
  
--- 548,562 ----
           end;
  
        else pragma Assert (Nkind (N) = N_Package_Body);
!          declare
!             Spec_Id : constant Entity_Id := Corresponding_Spec (N);
! 
!          begin
!             Push_Scope (Spec_Id);
!             Target_List := Declarations (N);
!             Build_Dispatch_Tables (Target_List);
!             Pop_Scope;
!          end;
        end if;
     end Build_Static_Dispatch_Tables;
  
*************** package body Exp_Disp is
*** 690,696 ****
        New_Call_Name   : Node_Id;
        New_Params      : List_Id := No_List;
        Param           : Node_Id;
-       Res_Typ         : Entity_Id;
        Subp_Ptr_Typ    : Entity_Id;
        Subp_Typ        : Entity_Id;
        Typ             : Entity_Id;
--- 744,749 ----
*************** package body Exp_Disp is
*** 838,858 ****
           end loop;
        end if;
  
!       --  Generate the appropriate subprogram pointer type
  
!       if Etype (Subp) = Typ then
!          Res_Typ := CW_Typ;
        else
!          Res_Typ := Etype (Subp);
        end if;
  
-       Subp_Typ     := Create_Itype (E_Subprogram_Type, Call_Node);
-       Copy_Strub_Mode (Subp_Typ, Subp);
-       Subp_Ptr_Typ := Create_Itype (E_Access_Subprogram_Type, Call_Node);
-       Set_Etype          (Subp_Typ, Res_Typ);
-       Set_Returns_By_Ref (Subp_Typ, Returns_By_Ref (Subp));
-       Set_Convention     (Subp_Typ, Convention (Subp));
- 
        --  Notify gigi that the designated type is a dispatching primitive
  
        Set_Is_Dispatch_Table_Entity (Subp_Typ);
--- 891,916 ----
           end loop;
        end if;
  
!       --  Generate the appropriate subprogram designated type
  
!       Subp_Typ := Create_Itype (E_Subprogram_Type, Call_Node);
!       Copy_Strub_Mode (Subp_Typ, Subp);
!       Set_Convention  (Subp_Typ, Convention (Subp));
! 
!       --  If this is a function and it has a controlling tagged result, then
!       --  the call is dispatching on result and returns the class-wide type.
! 
!       if Ekind (Subp) = E_Function
!         and then Has_Controlling_Result (Subp)
!         and then Is_Tagged_Type (Etype (Subp))
!       then
!          Set_Etype          (Subp_Typ, Class_Wide_Type (Etype (Subp)));
!          Set_Returns_By_Ref (Subp_Typ, True);
        else
!          Set_Etype          (Subp_Typ, Etype (Subp));
!          Set_Returns_By_Ref (Subp_Typ, Returns_By_Ref (Subp));
        end if;
  
        --  Notify gigi that the designated type is a dispatching primitive
  
        Set_Is_Dispatch_Table_Entity (Subp_Typ);
*************** package body Exp_Disp is
*** 949,962 ****
           end if;
        end;
  
!       --  Complete description of pointer type, including size information, as
!       --  must be done with itypes to prevent order-of-elaboration anomalies
!       --  in gigi.
  
!       Set_Etype (Subp_Ptr_Typ, Subp_Ptr_Typ);
        Set_Directly_Designated_Type (Subp_Ptr_Typ, Subp_Typ);
!       Set_Convention (Subp_Ptr_Typ, Convention (Subp_Typ));
!       Layout_Type    (Subp_Ptr_Typ);
  
        --  If the controlling argument is a value of type Ada.Tag or an abstract
        --  interface class-wide type then use it directly. Otherwise, the tag
--- 1007,1019 ----
           end if;
        end;
  
!       --  Generate the appropriate subprogram pointer type and decorate it
  
!       Subp_Ptr_Typ := Create_Itype (E_Access_Subprogram_Type, Call_Node);
!       Set_Etype                    (Subp_Ptr_Typ, Subp_Ptr_Typ);
        Set_Directly_Designated_Type (Subp_Ptr_Typ, Subp_Typ);
!       Set_Convention               (Subp_Ptr_Typ, Convention (Subp_Typ));
!       Layout_Type                  (Subp_Ptr_Typ);
  
        --  If the controlling argument is a value of type Ada.Tag or an abstract
        --  interface class-wide type then use it directly. Otherwise, the tag
*************** package body Exp_Disp is
*** 1248,1264 ****
             and then Is_Ancestor (Iface_Typ, Opnd, Use_Full_View => True)
           then
              return;
-          end if;
  
!          --  When the type of the operand and the target interface type match,
!          --  it is generally safe to skip generating code to displace the
!          --  pointer to the object to reference the secondary dispatch table
!          --  associated with the target interface type. The exception to this
!          --  general rule is when the underlying object of the type conversion
!          --  is an object built by means of a dispatching constructor (since in
!          --  such case the expansion of the constructor call is a direct call
!          --  to an object primitive, i.e. without thunks, and the expansion of
!          --  the constructor call adds an explicit conversion to the target
           --  interface type to force the displacement of the pointer to the
           --  object to reference the corresponding secondary dispatch table
           --  (cf. Make_DT and Expand_Dispatching_Constructor_Call)).
--- 1305,1328 ----
             and then Is_Ancestor (Iface_Typ, Opnd, Use_Full_View => True)
           then
              return;
  
!          --  When the target type is an interface type that is an ancestor of
!          --  the operand type, it is generally safe to skip generating code to
!          --  displace the pointer to the object to reference the secondary
!          --  dispatch table of the target interface type. Two scenarios are
!          --  possible here:
!          --    1) The operand type is a regular tagged type
!          --    2) The operand type is an interface type
!          --  In the former case the target interface and the regular tagged
!          --  type share the primary dispatch table of the object; in the latter
!          --  case the operand interface has all the primitives of the ancestor
!          --  interface type (and exactly in the same dispatch table slots).
!          --
!          --  The exception to this general rule is when the underlying object
!          --  is built by means of a dispatching constructor (since in such case
!          --  the expansion of the constructor call is a direct call to an
!          --  object primitive, i.e. without thunks, and the expansion of
!          --  the constructor call adds this explicit conversion to the target
           --  interface type to force the displacement of the pointer to the
           --  object to reference the corresponding secondary dispatch table
           --  (cf. Make_DT and Expand_Dispatching_Constructor_Call)).
*************** package body Exp_Disp is
*** 1270,1276 ****
           --  to the object, because generic dispatching constructors are not
           --  supported.
  
!          if Opnd = Iface_Typ and then not RTE_Available (RE_Displace) then
              return;
           end if;
        end;
--- 1334,1343 ----
           --  to the object, because generic dispatching constructors are not
           --  supported.
  
!          elsif Is_Interface (Iface_Typ)
!            and then Is_Ancestor (Iface_Typ, Opnd, Use_Full_View => True)
!            and then not RTE_Available (RE_Displace)
!          then
              return;
           end if;
        end;
*************** package body Exp_Disp is
*** 1731,1779 ****
     ----------------------------
  
     procedure Expand_Interface_Thunk
!      (Prim       : Node_Id;
        Thunk_Id   : out Entity_Id;
!       Thunk_Code : out Node_Id;
        Iface      : Entity_Id)
     is
!       Loc     : constant Source_Ptr := Sloc (Prim);
!       Actuals : constant List_Id    := New_List;
!       Decl    : constant List_Id    := New_List;
!       Formals : constant List_Id    := New_List;
!       Target  : constant Entity_Id  := Ultimate_Alias (Prim);
  
        Decl_1        : Node_Id;
        Decl_2        : Node_Id;
        Expr          : Node_Id;
!       Formal        : Node_Id;
        Ftyp          : Entity_Id;
!       Iface_Formal  : Node_Id := Empty;  -- initialize to prevent warning
!       Is_Predef_Op  : constant Boolean :=
!                         Is_Predefined_Dispatching_Operation (Prim)
!                           or else Is_Predefined_Dispatching_Operation (Target);
        New_Arg       : Node_Id;
        Offset_To_Top : Node_Id;
        Target_Formal : Entity_Id;
  
     begin
        Thunk_Id   := Empty;
!       Thunk_Code := Empty;
  
        --  No thunk needed if the primitive has been eliminated
  
        if Is_Eliminated (Target) then
           return;
  
!       --  In case of primitives that are functions without formals and a
!       --  controlling result there is no need to build the thunk.
  
!       elsif not Present (First_Formal (Target)) then
           pragma Assert (Ekind (Target) = E_Function
             and then Has_Controlling_Result (Target));
           return;
        end if;
  
!       --  Duplicate the formals of the Target primitive. In the thunk, the type
        --  of the controlling formal is the covered interface type (instead of
        --  the target tagged type). Done to avoid problems with discriminated
        --  tagged types because, if the controlling type has discriminants with
--- 1798,1847 ----
     ----------------------------
  
     procedure Expand_Interface_Thunk
!      (Prim       : Entity_Id;
        Thunk_Id   : out Entity_Id;
!       Thunk_Code : out List_Id;
        Iface      : Entity_Id)
     is
!       Actuals      : constant List_Id    := New_List;
!       Decl         : constant List_Id    := New_List;
!       Formals      : constant List_Id    := New_List;
!       Loc          : constant Source_Ptr := Sloc (Prim);
!       Target       : constant Entity_Id  := Ultimate_Alias (Prim);
!       Is_Predef_Op : constant Boolean    :=
!                        Is_Predefined_Dispatching_Operation (Prim)
!                          or else Is_Predefined_Dispatching_Operation (Target);
  
        Decl_1        : Node_Id;
        Decl_2        : Node_Id;
        Expr          : Node_Id;
!       Formal        : Entity_Id;
        Ftyp          : Entity_Id;
!       Iface_Formal  : Entity_Id;
        New_Arg       : Node_Id;
        Offset_To_Top : Node_Id;
        Target_Formal : Entity_Id;
  
     begin
        Thunk_Id   := Empty;
!       Thunk_Code := Empty_List;
  
        --  No thunk needed if the primitive has been eliminated
  
        if Is_Eliminated (Target) then
           return;
  
!       --  No thunk needed if the primitive has no formals. In this case, this
!       --  must be a function with a controlling result.
  
!       elsif No (First_Formal (Target)) then
           pragma Assert (Ekind (Target) = E_Function
             and then Has_Controlling_Result (Target));
+ 
           return;
        end if;
  
!       --  Duplicate the formals of the target primitive. In the thunk, the type
        --  of the controlling formal is the covered interface type (instead of
        --  the target tagged type). Done to avoid problems with discriminated
        --  tagged types because, if the controlling type has discriminants with
*************** package body Exp_Disp is
*** 1785,1798 ****
        --  because they don't have available the Interface_Alias attribute (see
        --  Sem_Ch3.Add_Internal_Interface_Entities).
  
!       if not Is_Predef_Op then
           Iface_Formal := First_Formal (Interface_Alias (Prim));
        end if;
  
        Formal := First_Formal (Target);
        while Present (Formal) loop
-          Ftyp := Etype (Formal);
- 
           --  Use the interface type as the type of the controlling formal (see
           --  comment above).
  
--- 1853,1866 ----
        --  because they don't have available the Interface_Alias attribute (see
        --  Sem_Ch3.Add_Internal_Interface_Entities).
  
!       if Is_Predef_Op then
!          Iface_Formal := Empty;
!       else
           Iface_Formal := First_Formal (Interface_Alias (Prim));
        end if;
  
        Formal := First_Formal (Target);
        while Present (Formal) loop
           --  Use the interface type as the type of the controlling formal (see
           --  comment above).
  
*************** package body Exp_Disp is
*** 1814,1823 ****
  
              --  Sanity check performed to ensure the proper controlling type
              --  when the thunk has exactly one controlling parameter and it
!             --  comes first. In such case the GCC backend reuses the C++
              --  thunks machinery which perform a computation equivalent to
              --  the code generated by the expander; for other cases the GCC
!             --  backend translates the expanded code unmodified. However, as
              --  a generalization, the check is performed for all controlling
              --  types.
  
--- 1882,1891 ----
  
              --  Sanity check performed to ensure the proper controlling type
              --  when the thunk has exactly one controlling parameter and it
!             --  comes first. In such a case, the GCC back end reuses the C++
              --  thunks machinery which perform a computation equivalent to
              --  the code generated by the expander; for other cases the GCC
!             --  back end translates the expanded code unmodified. However, as
              --  a generalization, the check is performed for all controlling
              --  types.
  
*************** package body Exp_Disp is
*** 1835,1840 ****
--- 1903,1909 ----
               Defining_Identifier =>
                 Make_Defining_Identifier (Sloc (Formal),
                   Chars => Chars (Formal)),
+              Aliased_Present => Aliased_Present (Parent (Formal)),
               In_Present => In_Present (Parent (Formal)),
               Out_Present => Out_Present (Parent (Formal)),
               Parameter_Type => New_Occurrence_Of (Ftyp, Loc),
*************** package body Exp_Disp is
*** 2024,2037 ****
  
        Mutate_Ekind (Thunk_Id, Ekind (Prim));
        Set_Is_Thunk (Thunk_Id);
        Set_Convention (Thunk_Id, Convention (Prim));
        Set_Needs_Debug_Info (Thunk_Id, Needs_Debug_Info (Target));
        Set_Thunk_Entity (Thunk_Id, Target);
  
        --  Procedure case
  
        if Ekind (Target) = E_Procedure then
!          Thunk_Code :=
             Make_Subprogram_Body (Loc,
                Specification =>
                  Make_Procedure_Specification (Loc,
--- 2093,2109 ----
  
        Mutate_Ekind (Thunk_Id, Ekind (Prim));
        Set_Is_Thunk (Thunk_Id);
+       Set_Has_Controlling_Result (Thunk_Id, False);
        Set_Convention (Thunk_Id, Convention (Prim));
        Set_Needs_Debug_Info (Thunk_Id, Needs_Debug_Info (Target));
        Set_Thunk_Entity (Thunk_Id, Target);
  
+       Thunk_Code := New_List;
+ 
        --  Procedure case
  
        if Ekind (Target) = E_Procedure then
!          Append_To (Thunk_Code,
             Make_Subprogram_Body (Loc,
                Specification =>
                  Make_Procedure_Specification (Loc,
*************** package body Exp_Disp is
*** 2043,2056 ****
                    Statements => New_List (
                      Make_Procedure_Call_Statement (Loc,
                        Name => New_Occurrence_Of (Target, Loc),
!                       Parameter_Associations => Actuals))));
  
        --  Function case
  
        else pragma Assert (Ekind (Target) = E_Function);
           declare
!             Result_Def : Node_Id;
!             Call_Node  : Node_Id;
  
           begin
              Call_Node :=
--- 2115,2130 ----
                    Statements => New_List (
                      Make_Procedure_Call_Statement (Loc,
                        Name => New_Occurrence_Of (Target, Loc),
!                       Parameter_Associations => Actuals)))));
  
        --  Function case
  
        else pragma Assert (Ekind (Target) = E_Function);
           declare
!             Call_Node     : Node_Id;
!             Result_Def    : Node_Id;
!             SS_Thunk_Id   : Entity_Id;
!             SS_Thunk_Code : Node_Id;
  
           begin
              Call_Node :=
*************** package body Exp_Disp is
*** 2084,2089 ****
--- 2158,2176 ----
              --    function F (O : T) return T;
  
              else
+                Expand_Secondary_Stack_Thunk
+                  (Target, SS_Thunk_Id, SS_Thunk_Code);
+ 
+                if Present (SS_Thunk_Id) then
+                   Set_Thunk_Entity (Thunk_Id, SS_Thunk_Id);
+                   Call_Node :=
+                     Make_Function_Call (Loc,
+                       Name                   =>
+                         New_Occurrence_Of (SS_Thunk_Id, Loc),
+                       Parameter_Associations => Actuals);
+                   Append_To (Thunk_Code, SS_Thunk_Code);
+                end if;
+ 
                 Result_Def :=
                   New_Occurrence_Of (Class_Wide_Type (Etype (Prim)), Loc);
  
*************** package body Exp_Disp is
*** 2098,2104 ****
                     Expression   => Relocate_Node (Call_Node));
              end if;
  
!             Thunk_Code :=
                Make_Subprogram_Body (Loc,
                  Specification              =>
                    Make_Function_Specification (Loc,
--- 2185,2191 ----
                     Expression   => Relocate_Node (Call_Node));
              end if;
  
!             Append_To (Thunk_Code,
                Make_Subprogram_Body (Loc,
                  Specification              =>
                    Make_Function_Specification (Loc,
*************** package body Exp_Disp is
*** 2109,2119 ****
                  Handled_Statement_Sequence =>
                    Make_Handled_Sequence_Of_Statements (Loc,
                      Statements => New_List (
!                       Make_Simple_Return_Statement (Loc, Call_Node))));
           end;
        end if;
     end Expand_Interface_Thunk;
  
     --------------------------
     -- Has_CPP_Constructors --
     --------------------------
--- 2196,2330 ----
                  Handled_Statement_Sequence =>
                    Make_Handled_Sequence_Of_Statements (Loc,
                      Statements => New_List (
!                       Make_Simple_Return_Statement (Loc, Call_Node)))));
           end;
        end if;
     end Expand_Interface_Thunk;
  
+    ------------------------------------
+    --  Expand_Secondary_Stack_Thunk  --
+    ------------------------------------
+ 
+    procedure Expand_Secondary_Stack_Thunk
+      (Prim       : Entity_Id;
+       Thunk_Id   : out Entity_Id;
+       Thunk_Code : out Node_Id)
+    is
+       Actuals      : constant List_Id    := New_List;
+       Formals      : constant List_Id    := New_List;
+       Loc          : constant Source_Ptr := Sloc (Prim);
+       Typ          : constant Entity_Id  := Etype (Prim);
+ 
+       Call_Node   : Node_Id;
+       Expr        : Node_Id;
+       Formal      : Entity_Id;
+       Prim_Formal : Entity_Id;
+       Result_Def  : Node_Id;
+ 
+    begin
+       Thunk_Id   := Empty;
+       Thunk_Code := Empty;
+ 
+       --  No thunk needed if the primitive has been eliminated
+ 
+       if Is_Eliminated (Prim) then
+          return;
+ 
+       --  No thunk needed for procedures or functions not dispatching on result
+ 
+       elsif Ekind (Prim) = E_Procedure
+         or else not Has_Controlling_Result (Prim)
+       then
+          return;
+ 
+       --  No thunk needed if the result type is an access type
+ 
+       elsif Is_Access_Type (Typ) then
+          return;
+ 
+       --  No thunk needed if the tagged type is returned in place
+ 
+       elsif Is_Build_In_Place_Result_Type (Typ) then
+          return;
+ 
+       --  No thunk needed if the tagged type is returned on the secondary stack
+ 
+       elsif Needs_Secondary_Stack (Typ) then
+          return;
+       end if;
+ 
+       pragma Assert (Is_Tagged_Type (Typ));
+ 
+       --  Duplicate the formals of the target primitive and build the actuals
+ 
+       Prim_Formal := First_Formal (Prim);
+       while Present (Prim_Formal) loop
+          Expr := New_Copy_Tree (Expression (Parent (Prim_Formal)));
+ 
+          Formal :=
+            Make_Defining_Identifier (Sloc (Prim_Formal),
+              Chars => Chars (Prim_Formal));
+ 
+          Append_To (Formals,
+            Make_Parameter_Specification (Loc,
+              Defining_Identifier => Formal,
+              Aliased_Present => Aliased_Present (Parent (Prim_Formal)),
+              In_Present => In_Present (Parent (Prim_Formal)),
+              Out_Present => Out_Present (Parent (Prim_Formal)),
+              Parameter_Type => New_Occurrence_Of (Etype (Prim_Formal), Loc),
+              Expression => Expr));
+ 
+          --  Ensure proper matching of access types. Required to avoid
+          --  reporting spurious errors.
+ 
+          if Is_Access_Type (Etype (Prim_Formal)) then
+             Append_To (Actuals,
+               Unchecked_Convert_To (Base_Type (Etype (Prim_Formal)),
+                 New_Occurrence_Of (Formal, Loc)));
+ 
+          --  No special management required for this actual
+ 
+          else
+             Append_To (Actuals, New_Occurrence_Of (Formal, Loc));
+          end if;
+ 
+          Next_Formal (Prim_Formal);
+       end loop;
+ 
+       Thunk_Id := Make_Temporary (Loc, 'T');
+ 
+       --  Note: any change to this symbol name needs to be coordinated
+       --  with GNATcoverage, as that tool relies on it to identify
+       --  thunks and exclude them from source coverage analysis.
+ 
+       Mutate_Ekind (Thunk_Id, E_Function);
+       Set_Is_Thunk (Thunk_Id);
+       Set_Has_Controlling_Result (Thunk_Id, True);
+       Set_Convention (Thunk_Id, Convention (Prim));
+       Set_Needs_Debug_Info (Thunk_Id, Needs_Debug_Info (Prim));
+       Set_Thunk_Entity (Thunk_Id, Prim);
+ 
+       Result_Def := New_Copy (Result_Definition (Parent (Prim)));
+ 
+       Call_Node :=
+         Make_Function_Call (Loc,
+           Name                   => New_Occurrence_Of (Prim, Loc),
+           Parameter_Associations => Actuals);
+ 
+       Thunk_Code :=
+         Make_Subprogram_Body (Loc,
+           Specification              =>
+             Make_Function_Specification (Loc,
+               Defining_Unit_Name       => Thunk_Id,
+               Parameter_Specifications => Formals,
+               Result_Definition        => Result_Def),
+           Declarations               => Empty_List,
+           Handled_Statement_Sequence =>
+             Make_Handled_Sequence_Of_Statements (Loc,
+               Statements => New_List (
+                 Make_Simple_Return_Statement (Loc, Call_Node))));
+    end Expand_Secondary_Stack_Thunk;
+ 
     --------------------------
     -- Has_CPP_Constructors --
     --------------------------
*************** package body Exp_Disp is
*** 3660,3666 ****
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    function Make_DT (Typ : Entity_Id; N : Node_Id := Empty) return List_Id is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        Max_Predef_Prims : constant Int :=
--- 3871,3877 ----
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    function Make_DT (Typ : Entity_Id) return List_Id is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        Max_Predef_Prims : constant Int :=
*************** package body Exp_Disp is
*** 3678,3700 ****
        --  offset to the components that reference secondary dispatch tables.
        --  Used to compute the offset of components located at fixed position.
  
-       procedure Check_Premature_Freezing
-         (Subp        : Entity_Id;
-          Tagged_Type : Entity_Id;
-          Typ         : Entity_Id);
-       --  Verify that all untagged types in the profile of a subprogram are
-       --  frozen at the point the subprogram is frozen. This enforces the rule
-       --  on RM 13.14 (14) as modified by AI05-019. At the point a subprogram
-       --  is frozen, enough must be known about it to build the activation
-       --  record for it, which requires at least that the size of all
-       --  parameters be known. Controlling arguments are by-reference,
-       --  and therefore the rule only applies to untagged types. Typical
-       --  violation of the rule involves an object declaration that freezes a
-       --  tagged type, when one of its primitive operations has a type in its
-       --  profile whose full view has not been analyzed yet. More complex cases
-       --  involve composite types that have one private unfrozen subcomponent.
-       --  Move this check to sem???
- 
        procedure Export_DT (Typ : Entity_Id; DT : Entity_Id; Index : Nat := 0);
        --  Export the dispatch table DT of tagged type Typ. Required to generate
        --  forward references and statically allocate the table. For primary
--- 3889,3894 ----
*************** package body Exp_Disp is
*** 3733,3835 ****
        function Number_Of_Predefined_Prims (Typ : Entity_Id) return Nat;
        --  Returns the number of predefined primitives of Typ
  
-       ------------------------------
-       -- Check_Premature_Freezing --
-       ------------------------------
- 
-       procedure Check_Premature_Freezing
-         (Subp        : Entity_Id;
-          Tagged_Type : Entity_Id;
-          Typ         : Entity_Id)
-       is
-          Comp : Entity_Id;
- 
-          function Is_Actual_For_Formal_Incomplete_Type
-            (T : Entity_Id) return Boolean;
-          --  In Ada 2012, if a nested generic has an incomplete formal type,
-          --  the actual may be (and usually is) a private type whose completion
-          --  appears later. It is safe to build the dispatch table in this
-          --  case, gigi will have full views available.
- 
-          ------------------------------------------
-          -- Is_Actual_For_Formal_Incomplete_Type --
-          ------------------------------------------
- 
-          function Is_Actual_For_Formal_Incomplete_Type
-            (T : Entity_Id) return Boolean
-          is
-             Gen_Par : Entity_Id;
-             F       : Node_Id;
- 
-          begin
-             if not Is_Generic_Instance (Current_Scope)
-               or else not Used_As_Generic_Actual (T)
-             then
-                return False;
-             else
-                Gen_Par := Generic_Parent (Parent (Current_Scope));
-             end if;
- 
-             F :=
-               First
-                 (Generic_Formal_Declarations
-                    (Unit_Declaration_Node (Gen_Par)));
-             while Present (F) loop
-                if Ekind (Defining_Identifier (F)) = E_Incomplete_Type then
-                   return True;
-                end if;
- 
-                Next (F);
-             end loop;
- 
-             return False;
-          end Is_Actual_For_Formal_Incomplete_Type;
- 
-       --  Start of processing for Check_Premature_Freezing
- 
-       begin
-          --  Note that if the type is a (subtype of) a generic actual, the
-          --  actual will have been frozen by the instantiation.
- 
-          if Present (N)
-            and then Is_Private_Type (Typ)
-            and then No (Full_View (Typ))
-            and then not Has_Private_Declaration (Typ)
-            and then not Is_Generic_Type (Typ)
-            and then not Is_Tagged_Type (Typ)
-            and then not Is_Frozen (Typ)
-            and then not Is_Generic_Actual_Type (Typ)
-          then
-             Error_Msg_Sloc := Sloc (Subp);
-             Error_Msg_NE
-               ("declaration must appear after completion of type &", N, Typ);
-             Error_Msg_NE
-               ("\which is an untagged type in the profile of "
-                & "primitive operation & declared#", N, Subp);
- 
-          else
-             Comp := Private_Component (Typ);
- 
-             if not Is_Tagged_Type (Typ)
-               and then Present (Comp)
-               and then not Is_Frozen (Comp)
-               and then not Has_Private_Declaration (Comp)
-               and then not Is_Actual_For_Formal_Incomplete_Type (Comp)
-             then
-                Error_Msg_Sloc := Sloc (Subp);
-                Error_Msg_Node_2 := Subp;
-                Error_Msg_Name_1 := Chars (Tagged_Type);
-                Error_Msg_NE
-                  ("declaration must appear after completion of type &",
-                   N, Comp);
-                Error_Msg_NE
-                  ("\which is a component of untagged type& in the profile "
-                   & "of primitive & of type % that is frozen by the "
-                   & "declaration", N, Typ);
-             end if;
-          end if;
-       end Check_Premature_Freezing;
- 
        ---------------
        -- Export_DT --
        ---------------
--- 3927,3932 ----
*************** package body Exp_Disp is
*** 3944,3954 ****
           --  save their entity to fill the aggregate.
  
           declare
!             Nb_P_Prims : constant Nat := Number_Of_Predefined_Prims (Typ);
!             Prim_Table : array (Nat range 1 .. Nb_P_Prims) of Entity_Id;
!             Decl       : Node_Id;
!             Thunk_Id   : Entity_Id;
!             Thunk_Code : Node_Id;
  
           begin
              Prim_Ops_Aggr_List := New_List;
--- 4041,4054 ----
           --  save their entity to fill the aggregate.
  
           declare
!             Nb_P_Prims    : constant Nat := Number_Of_Predefined_Prims (Typ);
!             Prim_Table    : array (Nat range 1 .. Nb_P_Prims) of Entity_Id;
!             Decl          : Node_Id;
!             E             : Entity_Id;
!             SS_Thunk_Id   : Entity_Id;
!             SS_Thunk_Code : Node_Id;
!             Thunk_Id      : Entity_Id;
!             Thunk_Code    : List_Id;
  
           begin
              Prim_Ops_Aggr_List := New_List;
*************** package body Exp_Disp is
*** 3963,3981 ****
                      and then not Is_Abstract_Subprogram (Prim)
                      and then not Is_Eliminated (Prim)
                      and then not Generate_SCIL
!                     and then not Present (Prim_Table
!                                            (UI_To_Int (DT_Position (Prim))))
                    then
                       if not Build_Thunks then
!                         Prim_Table (UI_To_Int (DT_Position (Prim))) :=
!                           Alias (Prim);
  
                       else
                          Expand_Interface_Thunk
                            (Prim, Thunk_Id, Thunk_Code, Iface);
  
                          if Present (Thunk_Id) then
!                            Append_To (Result, Thunk_Code);
                             Prim_Table (UI_To_Int (DT_Position (Prim))) :=
                               Thunk_Id;
                          end if;
--- 4063,4088 ----
                      and then not Is_Abstract_Subprogram (Prim)
                      and then not Is_Eliminated (Prim)
                      and then not Generate_SCIL
!                     and then No (Prim_Table (UI_To_Int (DT_Position (Prim))))
                    then
                       if not Build_Thunks then
!                         E := Ultimate_Alias (Prim);
!                         Expand_Secondary_Stack_Thunk
!                           (E, SS_Thunk_Id, SS_Thunk_Code);
! 
!                         if Present (SS_Thunk_Id) then
!                            E := SS_Thunk_Id;
!                            Append_To (Result, SS_Thunk_Code);
!                         end if;
! 
!                         Prim_Table (UI_To_Int (DT_Position (Prim))) := E;
  
                       else
                          Expand_Interface_Thunk
                            (Prim, Thunk_Id, Thunk_Code, Iface);
  
                          if Present (Thunk_Id) then
!                            Append_List_To (Result, Thunk_Code);
                             Prim_Table (UI_To_Int (DT_Position (Prim))) :=
                               Thunk_Id;
                          end if;
*************** package body Exp_Disp is
*** 4118,4134 ****
              OSD_Aggr_List := New_List;
  
              declare
!                Prim_Table : array (Nat range 1 .. Nb_Prim) of Entity_Id;
!                Prim       : Entity_Id;
!                Prim_Alias : Entity_Id;
!                Prim_Elmt  : Elmt_Id;
!                E          : Entity_Id;
!                Count      : Nat := 0;
!                Pos        : Nat;
  
              begin
                 Prim_Table := (others => Empty);
                 Prim_Alias := Empty;
  
                 Prim_Elmt := First_Elmt (Primitive_Operations (Typ));
                 while Present (Prim_Elmt) loop
--- 4225,4244 ----
              OSD_Aggr_List := New_List;
  
              declare
!                Prim_Table    : array (Nat range 1 .. Nb_Prim) of Entity_Id;
!                Prim          : Entity_Id;
!                Prim_Alias    : Entity_Id;
!                Prim_Elmt     : Elmt_Id;
!                E             : Entity_Id;
!                Count         : Nat;
!                Pos           : Nat;
!                SS_Thunk_Id   : Entity_Id;
!                SS_Thunk_Code : Node_Id;
  
              begin
                 Prim_Table := (others => Empty);
                 Prim_Alias := Empty;
+                Count      := 0;
  
                 Prim_Elmt := First_Elmt (Primitive_Operations (Typ));
                 while Present (Prim_Elmt) loop
*************** package body Exp_Disp is
*** 4142,4152 ****
                       E   := Ultimate_Alias (Prim);
                       Pos := UI_To_Int (DT_Position (Prim_Alias));
  
!                      if Present (Prim_Table (Pos)) then
!                         pragma Assert (Prim_Table (Pos) = E);
!                         null;
  
-                      else
                          Prim_Table (Pos) := E;
  
                          Append_To (OSD_Aggr_List,
--- 4252,4266 ----
                       E   := Ultimate_Alias (Prim);
                       Pos := UI_To_Int (DT_Position (Prim_Alias));
  
!                      if No (Prim_Table (Pos)) then
!                         Expand_Secondary_Stack_Thunk
!                           (E, SS_Thunk_Id, SS_Thunk_Code);
! 
!                         if Present (SS_Thunk_Id) then
!                            E := SS_Thunk_Id;
!                            Append_To (Result, SS_Thunk_Code);
!                         end if;
  
                          Prim_Table (Pos) := E;
  
                          Append_To (OSD_Aggr_List,
*************** package body Exp_Disp is
*** 4234,4245 ****
  
           else
              declare
!                CPP_Nb_Prims : constant Nat := CPP_Num_Prims (Typ);
!                E            : Entity_Id;
!                Prim_Pos     : Nat;
!                Prim_Table   : array (Nat range 1 .. Nb_Prim) of Entity_Id;
!                Thunk_Code   : Node_Id;
!                Thunk_Id     : Entity_Id;
  
              begin
                 Prim_Table := (others => Empty);
--- 4348,4361 ----
  
           else
              declare
!                CPP_Nb_Prims  : constant Nat := CPP_Num_Prims (Typ);
!                E             : Entity_Id;
!                Prim_Pos      : Nat;
!                Prim_Table    : array (Nat range 1 .. Nb_Prim) of Entity_Id;
!                SS_Thunk_Id   : Entity_Id;
!                SS_Thunk_Code : Node_Id;
!                Thunk_Id      : Entity_Id;
!                Thunk_Code    : List_Id;
  
              begin
                 Prim_Table := (others => Empty);
*************** package body Exp_Disp is
*** 4274,4282 ****
                                                Use_Full_View => True)
                    then
                       if not Build_Thunks then
                          Prim_Pos :=
                            UI_To_Int (DT_Position (Interface_Alias (Prim)));
!                         Prim_Table (Prim_Pos) := Alias (Prim);
  
                       else
                          Expand_Interface_Thunk
--- 4390,4407 ----
                                                Use_Full_View => True)
                    then
                       if not Build_Thunks then
+                         E := Alias (Prim);
+                         Expand_Secondary_Stack_Thunk
+                           (E, SS_Thunk_Id, SS_Thunk_Code);
+ 
+                         if Present (SS_Thunk_Id) then
+                            E := SS_Thunk_Id;
+                            Append_To (Result, SS_Thunk_Code);
+                         end if;
+ 
                          Prim_Pos :=
                            UI_To_Int (DT_Position (Interface_Alias (Prim)));
!                         Prim_Table (Prim_Pos) := E;
  
                       else
                          Expand_Interface_Thunk
*************** package body Exp_Disp is
*** 4287,4293 ****
                               UI_To_Int (DT_Position (Interface_Alias (Prim)));
  
                             Prim_Table (Prim_Pos) := Thunk_Id;
!                            Append_To (Result, Thunk_Code);
                          end if;
                       end if;
                    end if;
--- 4412,4418 ----
                               UI_To_Int (DT_Position (Interface_Alias (Prim)));
  
                             Prim_Table (Prim_Pos) := Thunk_Id;
!                            Append_List_To (Result, Thunk_Code);
                          end if;
                       end if;
                    end if;
*************** package body Exp_Disp is
*** 4583,4641 ****
           Parent_Typ := Full_View (Parent_Typ);
        end if;
  
-       --  Ensure that all the primitives are frozen. This is only required when
-       --  building static dispatch tables --- the primitives must be frozen to
-       --  be referenced (otherwise we have problems with the backend). It is
-       --  not a requirement with nonstatic dispatch tables because in this case
-       --  we generate now an empty dispatch table; the extra code required to
-       --  register the primitives in the slots will be generated later --- when
-       --  each primitive is frozen (see Freeze_Subprogram).
- 
-       if Building_Static_DT (Typ) then
-          declare
-             Saved_FLLTT : constant Boolean :=
-                             Freezing_Library_Level_Tagged_Type;
- 
-             Formal    : Entity_Id;
-             Frnodes   : List_Id;
-             Prim      : Entity_Id;
-             Prim_Elmt : Elmt_Id;
- 
-          begin
-             Freezing_Library_Level_Tagged_Type := True;
- 
-             Prim_Elmt := First_Elmt (Primitive_Operations (Typ));
-             while Present (Prim_Elmt) loop
-                Prim    := Node (Prim_Elmt);
-                Frnodes := Freeze_Entity (Prim, Typ);
- 
-                --  We disable this check for abstract subprograms, given that
-                --  they cannot be called directly and thus the state of their
-                --  untagged formals is of no concern. The RM is unclear in any
-                --  case concerning the need for this check, and this topic may
-                --  go back to the ARG.
- 
-                if not Is_Abstract_Subprogram (Prim) then
-                   Formal := First_Formal (Prim);
-                   while Present (Formal) loop
-                      Check_Premature_Freezing (Prim, Typ, Etype (Formal));
-                      Next_Formal (Formal);
-                   end loop;
- 
-                   Check_Premature_Freezing (Prim, Typ, Etype (Prim));
-                end if;
- 
-                if Present (Frnodes) then
-                   Append_List_To (Result, Frnodes);
-                end if;
- 
-                Next_Elmt (Prim_Elmt);
-             end loop;
- 
-             Freezing_Library_Level_Tagged_Type := Saved_FLLTT;
-          end;
-       end if;
- 
        if not Is_Interface (Typ) and then Has_Interfaces (Typ) then
           declare
              Cannot_Have_Null_Disc : Boolean := False;
--- 4708,4713 ----
*************** package body Exp_Disp is
*** 5207,5213 ****
              E       : Entity_Id;
  
           begin
!             if not Present (Def)
                or else Entity (Name (Def)) /= First_Subtype (Typ)
              then
                 New_Node :=
--- 5279,5285 ----
              E       : Entity_Id;
  
           begin
!             if No (Def)
                or else Entity (Name (Def)) /= First_Subtype (Typ)
              then
                 New_Node :=
*************** package body Exp_Disp is
*** 5790,5799 ****
  
        else
           declare
!             Nb_P_Prims : constant Nat := Number_Of_Predefined_Prims (Typ);
!             Prim_Table : array (Nat range 1 .. Nb_P_Prims) of Entity_Id;
!             Decl       : Node_Id;
!             E          : Entity_Id;
  
           begin
              Prim_Ops_Aggr_List := New_List;
--- 5862,5873 ----
  
        else
           declare
!             Nb_P_Prims    : constant Nat := Number_Of_Predefined_Prims (Typ);
!             Prim_Table    : array (Nat range 1 .. Nb_P_Prims) of Entity_Id;
!             Decl          : Node_Id;
!             E             : Entity_Id;
!             SS_Thunk_Id   : Entity_Id;
!             SS_Thunk_Code : Node_Id;
  
           begin
              Prim_Ops_Aggr_List := New_List;
*************** package body Exp_Disp is
*** 5808,5818 ****
                      and then not Is_Abstract_Subprogram (Prim)
                      and then not Is_Eliminated (Prim)
                      and then not Generate_SCIL
!                     and then not Present (Prim_Table
!                                            (UI_To_Int (DT_Position (Prim))))
                    then
                       E := Ultimate_Alias (Prim);
                       pragma Assert (not Is_Abstract_Subprogram (E));
                       Prim_Table (UI_To_Int (DT_Position (Prim))) := E;
                    end if;
  
--- 5882,5900 ----
                      and then not Is_Abstract_Subprogram (Prim)
                      and then not Is_Eliminated (Prim)
                      and then not Generate_SCIL
!                     and then No (Prim_Table (UI_To_Int (DT_Position (Prim))))
                    then
                       E := Ultimate_Alias (Prim);
                       pragma Assert (not Is_Abstract_Subprogram (E));
+ 
+                      Expand_Secondary_Stack_Thunk
+                        (E, SS_Thunk_Id, SS_Thunk_Code);
+ 
+                      if Present (SS_Thunk_Id) then
+                         E := SS_Thunk_Id;
+                         Append_To (Result, SS_Thunk_Code);
+                      end if;
+ 
                       Prim_Table (UI_To_Int (DT_Position (Prim))) := E;
                    end if;
  
*************** package body Exp_Disp is
*** 5923,5934 ****
  
           else
              declare
!                CPP_Nb_Prims : constant Nat := CPP_Num_Prims (Typ);
!                E            : Entity_Id;
!                Prim         : Entity_Id;
!                Prim_Elmt    : Elmt_Id;
!                Prim_Pos     : Nat;
!                Prim_Table   : array (Nat range 1 .. Nb_Prim) of Entity_Id;
  
              begin
                 Prim_Table := (others => Empty);
--- 6005,6018 ----
  
           else
              declare
!                CPP_Nb_Prims  : constant Nat := CPP_Num_Prims (Typ);
!                E             : Entity_Id;
!                Prim          : Entity_Id;
!                Prim_Elmt     : Elmt_Id;
!                Prim_Pos      : Nat;
!                Prim_Table    : array (Nat range 1 .. Nb_Prim) of Entity_Id;
!                SS_Thunk_Id   : Entity_Id;
!                SS_Thunk_Code : Node_Id;
  
              begin
                 Prim_Table := (others => Empty);
*************** package body Exp_Disp is
*** 5963,5969 ****
                      --  those are only required to build secondary dispatch
                      --  tables.
  
!                     and then not Present (Interface_Alias (Prim))
  
                      --  Skip abstract and eliminated primitives
  
--- 6047,6053 ----
                      --  those are only required to build secondary dispatch
                      --  tables.
  
!                     and then No (Interface_Alias (Prim))
  
                      --  Skip abstract and eliminated primitives
  
*************** package body Exp_Disp is
*** 5985,5990 ****
--- 6069,6082 ----
                       pragma Assert
                         (UI_To_Int (DT_Position (Prim)) <= Nb_Prim);
  
+                      Expand_Secondary_Stack_Thunk
+                        (E, SS_Thunk_Id, SS_Thunk_Code);
+ 
+                      if Present (SS_Thunk_Id) then
+                         E := SS_Thunk_Id;
+                         Append_To (Result, SS_Thunk_Code);
+                      end if;
+ 
                       Prim_Table (UI_To_Int (DT_Position (Prim))) := E;
                    end if;
  
*************** package body Exp_Disp is
*** 7274,7279 ****
--- 7366,7472 ----
        end if;
     end Prim_Op_Kind;
  
+    -----------------------------------
+    -- Register_Predefined_Primitive --
+    -----------------------------------
+ 
+    function Register_Predefined_Primitive
+      (Loc     : Source_Ptr;
+       Prim    : Entity_Id) return List_Id
+    is
+       L          : constant List_Id := New_List;
+       Tagged_Typ : constant Entity_Id := Find_Dispatching_Type (Prim);
+ 
+       E             : Entity_Id;
+       Iface_DT_Ptr  : Elmt_Id;
+       SS_Thunk_Id   : Entity_Id;
+       SS_Thunk_Code : Node_Id;
+       Thunk_Id      : Entity_Id;
+       Thunk_Code    : List_Id;
+ 
+    begin
+       if No (Access_Disp_Table (Tagged_Typ))
+         or else not Has_Interfaces (Tagged_Typ)
+         or else not RTE_Available (RE_Interface_Tag)
+         or else Restriction_Active (No_Dispatching_Calls)
+       then
+          return L;
+       end if;
+ 
+       --  Skip the first two access-to-dispatch-table pointers since they
+       --  leads to the primary dispatch table (predefined DT and user
+       --  defined DT). We are only concerned with the secondary dispatch
+       --  table pointers. Note that the access-to- dispatch-table pointer
+       --  corresponds to the first implemented interface retrieved below.
+ 
+       Iface_DT_Ptr :=
+         Next_Elmt (Next_Elmt (First_Elmt (Access_Disp_Table (Tagged_Typ))));
+ 
+       while Present (Iface_DT_Ptr)
+         and then Ekind (Node (Iface_DT_Ptr)) = E_Constant
+       loop
+          pragma Assert (Has_Thunks (Node (Iface_DT_Ptr)));
+ 
+          Expand_Interface_Thunk
+            (Prim, Thunk_Id, Thunk_Code, Related_Type (Node (Iface_DT_Ptr)));
+ 
+          if Present (Thunk_Id) then
+             Append_List_To (L, Thunk_Code);
+ 
+             E := Prim;
+             Expand_Secondary_Stack_Thunk (E, SS_Thunk_Id, SS_Thunk_Code);
+ 
+             if Present (SS_Thunk_Id) then
+                E := SS_Thunk_Id;
+                Append_To (L, SS_Thunk_Code);
+             end if;
+ 
+             Append_To (L,
+               Build_Set_Predefined_Prim_Op_Address (Loc,
+                 Tag_Node     =>
+                   New_Occurrence_Of (Node (Next_Elmt (Iface_DT_Ptr)), Loc),
+                 Position     => DT_Position (Prim),
+                 Address_Node =>
+                   Unchecked_Convert_To (RTE (RE_Prim_Ptr),
+                     Make_Attribute_Reference (Loc,
+                       Prefix         => New_Occurrence_Of (Thunk_Id, Loc),
+                       Attribute_Name => Name_Unrestricted_Access))));
+ 
+             Append_To (L,
+               Build_Set_Predefined_Prim_Op_Address (Loc,
+                 Tag_Node     =>
+                   New_Occurrence_Of
+                    (Node (Next_Elmt (Next_Elmt (Next_Elmt (Iface_DT_Ptr)))),
+                     Loc),
+                 Position     => DT_Position (Prim),
+                 Address_Node =>
+                   Unchecked_Convert_To (RTE (RE_Prim_Ptr),
+                     Make_Attribute_Reference (Loc,
+                       Prefix         => New_Occurrence_Of (E, Loc),
+                       Attribute_Name => Name_Unrestricted_Access))));
+          end if;
+ 
+          --  Skip the tag of the predefined primitives dispatch table
+ 
+          Next_Elmt (Iface_DT_Ptr);
+          pragma Assert (Has_Thunks (Node (Iface_DT_Ptr)));
+ 
+          --  Skip tag of the no-thunks dispatch table
+ 
+          Next_Elmt (Iface_DT_Ptr);
+          pragma Assert (not Has_Thunks (Node (Iface_DT_Ptr)));
+ 
+          --  Skip tag of predefined primitives no-thunks dispatch table
+ 
+          Next_Elmt (Iface_DT_Ptr);
+          pragma Assert (not Has_Thunks (Node (Iface_DT_Ptr)));
+ 
+          Next_Elmt (Iface_DT_Ptr);
+       end loop;
+ 
+       return L;
+    end Register_Predefined_Primitive;
+ 
     ------------------------
     -- Register_Primitive --
     ------------------------
*************** package body Exp_Disp is
*** 7282,7303 ****
       (Loc     : Source_Ptr;
        Prim    : Entity_Id) return List_Id
     is
        DT_Ptr        : Entity_Id;
        Iface_Prim    : Entity_Id;
        Iface_Typ     : Entity_Id;
        Iface_DT_Ptr  : Entity_Id;
        Iface_DT_Elmt : Elmt_Id;
-       L             : constant List_Id := New_List;
        Pos           : Uint;
        Tag           : Entity_Id;
        Tag_Typ       : Entity_Id;
        Thunk_Id      : Entity_Id;
!       Thunk_Code    : Node_Id;
  
     begin
        pragma Assert (not Restriction_Active (No_Dispatching_Calls));
  
!       --  Do not register in the dispatch table eliminated primitives
  
        if not RTE_Available (RE_Tag)
          or else Is_Eliminated (Ultimate_Alias (Prim))
--- 7475,7500 ----
       (Loc     : Source_Ptr;
        Prim    : Entity_Id) return List_Id
     is
+       L : constant List_Id := New_List;
+ 
        DT_Ptr        : Entity_Id;
+       E             : Entity_Id;
        Iface_Prim    : Entity_Id;
        Iface_Typ     : Entity_Id;
        Iface_DT_Ptr  : Entity_Id;
        Iface_DT_Elmt : Elmt_Id;
        Pos           : Uint;
+       SS_Thunk_Id   : Entity_Id;
+       SS_Thunk_Code : Node_Id;
        Tag           : Entity_Id;
        Tag_Typ       : Entity_Id;
        Thunk_Id      : Entity_Id;
!       Thunk_Code    : List_Id;
  
     begin
        pragma Assert (not Restriction_Active (No_Dispatching_Calls));
  
!       --  Do not register eliminated primitives in the dispatch table
  
        if not RTE_Available (RE_Tag)
          or else Is_Eliminated (Ultimate_Alias (Prim))
*************** package body Exp_Disp is
*** 7306,7315 ****
           return L;
        end if;
  
!       if not Present (Interface_Alias (Prim)) then
           Tag_Typ := Scope (DTC_Entity (Prim));
!          Pos := DT_Position (Prim);
!          Tag := First_Tag_Component (Tag_Typ);
  
           if Is_Predefined_Dispatching_Operation (Prim)
             or else Is_Predefined_Dispatching_Alias (Prim)
--- 7503,7522 ----
           return L;
        end if;
  
!       --  Primitive associated with a tagged type
! 
!       if No (Interface_Alias (Prim)) then
           Tag_Typ := Scope (DTC_Entity (Prim));
!          Pos     := DT_Position (Prim);
!          Tag     := First_Tag_Component (Tag_Typ);
! 
!          E := Prim;
!          Expand_Secondary_Stack_Thunk (E, SS_Thunk_Id, SS_Thunk_Code);
! 
!          if Present (SS_Thunk_Id) then
!             E := SS_Thunk_Id;
!             Append_To (L, SS_Thunk_Code);
!          end if;
  
           if Is_Predefined_Dispatching_Operation (Prim)
             or else Is_Predefined_Dispatching_Alias (Prim)
*************** package body Exp_Disp is
*** 7324,7330 ****
                  Address_Node =>
                    Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                      Make_Attribute_Reference (Loc,
!                       Prefix         => New_Occurrence_Of (Prim, Loc),
                        Attribute_Name => Name_Unrestricted_Access))));
  
              --  Register copy of the pointer to the 'size primitive in the TSD
--- 7531,7537 ----
                  Address_Node =>
                    Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                      Make_Attribute_Reference (Loc,
!                       Prefix         => New_Occurrence_Of (E, Loc),
                        Attribute_Name => Name_Unrestricted_Access))));
  
              --  Register copy of the pointer to the 'size primitive in the TSD
*************** package body Exp_Disp is
*** 7357,7363 ****
                     Address_Node =>
                       Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                         Make_Attribute_Reference (Loc,
!                          Prefix         => New_Occurrence_Of (Prim, Loc),
                           Attribute_Name => Name_Unrestricted_Access))));
              end if;
           end if;
--- 7564,7570 ----
                     Address_Node =>
                       Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                         Make_Attribute_Reference (Loc,
!                          Prefix         => New_Occurrence_Of (E, Loc),
                           Attribute_Name => Name_Unrestricted_Access))));
              end if;
           end if;
*************** package body Exp_Disp is
*** 7394,7401 ****
  
           Expand_Interface_Thunk (Prim, Thunk_Id, Thunk_Code, Iface_Typ);
  
!          if not Is_Ancestor (Iface_Typ, Tag_Typ, Use_Full_View => True)
!            and then Present (Thunk_Code)
           then
              --  Generate the code necessary to fill the appropriate entry of
              --  the secondary dispatch table of Prim's controlling type with
--- 7601,7608 ----
  
           Expand_Interface_Thunk (Prim, Thunk_Id, Thunk_Code, Iface_Typ);
  
!          if Present (Thunk_Id)
!            and then not Is_Ancestor (Iface_Typ, Tag_Typ, Use_Full_View => True)
           then
              --  Generate the code necessary to fill the appropriate entry of
              --  the secondary dispatch table of Prim's controlling type with
*************** package body Exp_Disp is
*** 7409,7415 ****
              Pos        := DT_Position (Iface_Prim);
              Tag        := First_Tag_Component (Iface_Typ);
  
!             Prepend_To (L, Thunk_Code);
  
              if Is_Predefined_Dispatching_Operation (Prim)
                or else Is_Predefined_Dispatching_Alias (Prim)
--- 7616,7630 ----
              Pos        := DT_Position (Iface_Prim);
              Tag        := First_Tag_Component (Iface_Typ);
  
!             Append_List_To (L, Thunk_Code);
! 
!             E := Ultimate_Alias (Prim);
!             Expand_Secondary_Stack_Thunk (E, SS_Thunk_Id, SS_Thunk_Code);
! 
!             if Present (SS_Thunk_Id) then
!                E := SS_Thunk_Id;
!                Append_To (L, SS_Thunk_Code);
!             end if;
  
              if Is_Predefined_Dispatching_Operation (Prim)
                or else Is_Predefined_Dispatching_Alias (Prim)
*************** package body Exp_Disp is
*** 7438,7445 ****
                     Address_Node =>
                       Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                         Make_Attribute_Reference (Loc,
!                          Prefix          =>
!                            New_Occurrence_Of (Alias (Prim), Loc),
                           Attribute_Name  => Name_Unrestricted_Access))));
  
              else
--- 7653,7659 ----
                     Address_Node =>
                       Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                         Make_Attribute_Reference (Loc,
!                          Prefix          => New_Occurrence_Of (E, Loc),
                           Attribute_Name  => Name_Unrestricted_Access))));
  
              else
*************** package body Exp_Disp is
*** 7470,7477 ****
                     Address_Node =>
                       Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                         Make_Attribute_Reference (Loc,
!                          Prefix         =>
!                            New_Occurrence_Of (Ultimate_Alias (Prim), Loc),
                           Attribute_Name => Name_Unrestricted_Access))));
  
              end if;
--- 7684,7690 ----
                     Address_Node =>
                       Unchecked_Convert_To (RTE (RE_Prim_Ptr),
                         Make_Attribute_Reference (Loc,
!                          Prefix         => New_Occurrence_Of (E, Loc),
                           Attribute_Name => Name_Unrestricted_Access))));
  
              end if;
*************** package body Exp_Disp is
*** 7819,7825 ****
              --  same dispatch table slot, but if it renames an operation in a
              --  nested package it's a new primitive and will have its own slot.
  
!             elsif not Present (Interface_Alias (Prim))
                and then Present (Alias (Prim))
                and then Chars (Prim) = Chars (Alias (Prim))
                and then Nkind (Unit_Declaration_Node (Prim)) /=
--- 8032,8038 ----
              --  same dispatch table slot, but if it renames an operation in a
              --  nested package it's a new primitive and will have its own slot.
  
!             elsif No (Interface_Alias (Prim))
                and then Present (Alias (Prim))
                and then Chars (Prim) = Chars (Alias (Prim))
                and then Nkind (Unit_Declaration_Node (Prim)) /=
*************** package body Exp_Disp is
*** 7987,7993 ****
             and then Present (Alias (Prim))
             and then not Is_Interface
                            (Find_Dispatching_Type (Ultimate_Alias (Prim)))
!            and then not Present (Interface_Alias (Prim))
             and then Is_Derived_Type (Typ)
             and then In_Private_Part (Current_Scope)
             and then
--- 8200,8206 ----
             and then Present (Alias (Prim))
             and then not Is_Interface
                            (Find_Dispatching_Type (Ultimate_Alias (Prim)))
!            and then No (Interface_Alias (Prim))
             and then Is_Derived_Type (Typ)
             and then In_Private_Part (Current_Scope)
             and then
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_disp.ads gcc-13.1.0/gcc/ada/exp_disp.ads
*** gcc-12.2.0/gcc/ada/exp_disp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_disp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Disp is
*** 168,178 ****
     --  Generate checks required on dispatching calls
  
     function Building_Static_DT (Typ : Entity_Id) return Boolean;
-    pragma Inline (Building_Static_DT);
     --  Returns true when building statically allocated dispatch tables
  
     function Building_Static_Secondary_DT (Typ : Entity_Id) return Boolean;
-    pragma Inline (Building_Static_Secondary_DT);
     --  Returns true when building statically allocated secondary dispatch
     --  tables
  
--- 168,176 ----
*************** package Exp_Disp is
*** 187,193 ****
  
     function Convert_Tag_To_Interface
       (Typ : Entity_Id; Expr : Node_Id) return Node_Id;
-    pragma Inline (Convert_Tag_To_Interface);
     --  This function is used in class-wide interface conversions; the expanded
     --  code generated to convert a tagged object to a class-wide interface type
     --  involves referencing the tag component containing the secondary dispatch
--- 185,190 ----
*************** package Exp_Disp is
*** 236,266 ****
     --  to the object to give access to the interface tag associated with the
     --  dispatch table of the target type.
  
-    procedure Expand_Interface_Thunk
-      (Prim       : Node_Id;
-       Thunk_Id   : out Entity_Id;
-       Thunk_Code : out Node_Id;
-       Iface      : Entity_Id);
-    --  Ada 2005 (AI-251): When a tagged type implements abstract interfaces we
-    --  generate additional subprograms (thunks) associated with each primitive
-    --  Prim to have a layout compatible with the C++ ABI. The thunk displaces
-    --  the pointers to the actuals that depend on the controlling type before
-    --  transferring control to the target subprogram. If there is no need to
-    --  generate the thunk then Thunk_Id and Thunk_Code are set to Empty.
-    --  Otherwise they are set to the defining identifier and the subprogram
-    --  body of the generated thunk.
- 
     function Has_CPP_Constructors (Typ : Entity_Id) return Boolean;
     --  Returns true if the type has CPP constructors
  
     function Is_Expanded_Dispatching_Call (N : Node_Id) return Boolean;
     --  Returns true if N is the expanded code of a dispatching call
  
!    function Make_DT (Typ : Entity_Id; N : Node_Id := Empty) return List_Id;
!    --  Expand the declarations for the Dispatch Table. The node N is the
!    --  declaration that forces the generation of the table. It is used to place
!    --  error messages when the declaration leads to the freezing of a given
!    --  primitive operation that has an incomplete non- tagged formal.
  
     function Make_Disp_Asynchronous_Select_Body
       (Typ : Entity_Id) return Node_Id;
--- 233,246 ----
     --  to the object to give access to the interface tag associated with the
     --  dispatch table of the target type.
  
     function Has_CPP_Constructors (Typ : Entity_Id) return Boolean;
     --  Returns true if the type has CPP constructors
  
     function Is_Expanded_Dispatching_Call (N : Node_Id) return Boolean;
     --  Returns true if N is the expanded code of a dispatching call
  
!    function Make_DT (Typ : Entity_Id) return List_Id;
!    --  Expand the declarations for the Dispatch Table of Typ
  
     function Make_Disp_Asynchronous_Select_Body
       (Typ : Entity_Id) return Node_Id;
*************** package Exp_Disp is
*** 343,348 ****
--- 323,337 ----
     --  tagged types this routine imports the forward declaration of the tag
     --  entity, that will be declared and exported by Make_DT.
  
+    function Register_Predefined_Primitive
+      (Loc     : Source_Ptr;
+       Prim    : Entity_Id) return List_Id;
+    --  Ada 2005: Register a predefined primitive in all the secondary dispatch
+    --  tables of its primitive type.
+    --
+    --  The caller is responsible for inserting the generated code in the
+    --  proper place.
+ 
     function Register_Primitive
       (Loc     : Source_Ptr;
        Prim    : Entity_Id) return List_Id;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_dist.adb gcc-13.1.0/gcc/ada/exp_dist.adb
*** gcc-12.2.0/gcc/ada/exp_dist.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_dist.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_dist.ads gcc-13.1.0/gcc/ada/exp_dist.ads
*** gcc-12.2.0/gcc/ada/exp_dist.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_dist.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_fixd.adb gcc-13.1.0/gcc/ada/exp_fixd.adb
*** gcc-12.2.0/gcc/ada/exp_fixd.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_fixd.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_fixd.ads gcc-13.1.0/gcc/ada/exp_fixd.ads
*** gcc-12.2.0/gcc/ada/exp_fixd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_fixd.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_imgv.adb gcc-13.1.0/gcc/ada/exp_imgv.adb
*** gcc-12.2.0/gcc/ada/exp_imgv.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_imgv.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Imgv is
*** 289,300 ****
           --  If the unit where the type is declared is the main unit, and the
           --  number of literals is greater than Threshold_For_Size when we are
           --  optimizing for size, and the restriction No_Implicit_Loops is not
!          --  active, and -gnatd_h is not specified, generate the hash function.
  
           if In_Main_Unit
             and then (Optimize_Size = 0 or else Nlit > Threshold_For_Size)
             and then not Restriction_Active (No_Implicit_Loops)
             and then not Debug_Flag_Underscore_H
           then
              declare
                 LB : constant Positive := 2 * Positive (Nlit) + 1;
--- 289,302 ----
           --  If the unit where the type is declared is the main unit, and the
           --  number of literals is greater than Threshold_For_Size when we are
           --  optimizing for size, and the restriction No_Implicit_Loops is not
!          --  active, and -gnatd_h is not specified, and not GNAT_Mode, generate
!          --  the hash function.
  
           if In_Main_Unit
             and then (Optimize_Size = 0 or else Nlit > Threshold_For_Size)
             and then not Restriction_Active (No_Implicit_Loops)
             and then not Debug_Flag_Underscore_H
+            and then not GNAT_Mode
           then
              declare
                 LB : constant Positive := 2 * Positive (Nlit) + 1;
*************** package body Exp_Imgv is
*** 936,947 ****
           --    P3 : constant Natural := call_put_enumN (P1 + 1);
  
           declare
!             Add_Node : constant Node_Id := New_Op_Node (N_Op_Add, Loc);
  
           begin
-             Set_Left_Opnd  (Add_Node, New_Occurrence_Of (P1_Id, Loc));
-             Set_Right_Opnd (Add_Node, Make_Integer_Literal (Loc, 1));
- 
              Append_To (Ins_List,
                Make_Object_Declaration (Loc,
                  Defining_Identifier => P3_Id,
--- 938,949 ----
           --    P3 : constant Natural := call_put_enumN (P1 + 1);
  
           declare
!             Add_Node : constant Node_Id :=
!               Make_Op_Add (Loc,
!                 Left_Opnd  => New_Occurrence_Of (P1_Id, Loc),
!                 Right_Opnd => Make_Integer_Literal (Loc, Uint_1));
  
           begin
              Append_To (Ins_List,
                Make_Object_Declaration (Loc,
                  Defining_Identifier => P3_Id,
*************** package body Exp_Imgv is
*** 961,972 ****
           --    P4 : String renames call_put_enumS (P2 .. P3 - 1);
  
           declare
!             Sub_Node : constant Node_Id := New_Op_Node (N_Op_Subtract, Loc);
  
           begin
-             Set_Left_Opnd  (Sub_Node, New_Occurrence_Of (P3_Id, Loc));
-             Set_Right_Opnd (Sub_Node, Make_Integer_Literal (Loc, 1));
- 
              Append_To (Ins_List,
                Make_Object_Renaming_Declaration (Loc,
                  Defining_Identifier => P4_Id,
--- 963,974 ----
           --    P4 : String renames call_put_enumS (P2 .. P3 - 1);
  
           declare
!             Sub_Node : constant Node_Id :=
!               Make_Op_Subtract (Loc,
!                 Left_Opnd  => New_Occurrence_Of (P3_Id, Loc),
!                 Right_Opnd => Make_Integer_Literal (Loc, Uint_1));
  
           begin
              Append_To (Ins_List,
                Make_Object_Renaming_Declaration (Loc,
                  Defining_Identifier => P4_Id,
*************** package body Exp_Imgv is
*** 986,997 ****
           --    subtype S1 is String (1 .. P3 - P2);
  
           declare
!             HB : constant Node_Id := New_Op_Node (N_Op_Subtract, Loc);
  
           begin
-             Set_Left_Opnd  (HB, New_Occurrence_Of (P3_Id, Loc));
-             Set_Right_Opnd (HB, New_Occurrence_Of (P2_Id, Loc));
- 
              Append_To (Ins_List,
                Make_Subtype_Declaration (Loc,
                  Defining_Identifier => S1_Id,
--- 988,999 ----
           --    subtype S1 is String (1 .. P3 - P2);
  
           declare
!             HB : constant Node_Id :=
!               Make_Op_Subtract (Loc,
!                 Left_Opnd  => New_Occurrence_Of (P3_Id, Loc),
!                 Right_Opnd => New_Occurrence_Of (P2_Id, Loc));
  
           begin
              Append_To (Ins_List,
                Make_Subtype_Declaration (Loc,
                  Defining_Identifier => S1_Id,
*************** package body Exp_Imgv is
*** 1840,1845 ****
--- 1842,1856 ----
           return;
        end if;
  
+       --  If Image should be transformed using Put_Image, then do so. See
+       --  Exp_Put_Image for details.
+ 
+       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
+          Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
+          Analyze_And_Resolve (N, Standard_Wide_String, Suppress => All_Checks);
+          return;
+       end if;
+ 
        Rtyp := Root_Type (Entity (Pref));
  
        Insert_Actions (N, New_List (
*************** package body Exp_Imgv is
*** 1940,1945 ****
--- 1951,1966 ----
           return;
        end if;
  
+       --  If Image should be transformed using Put_Image, then do so. See
+       --  Exp_Put_Image for details.
+ 
+       if Exp_Put_Image.Image_Should_Call_Put_Image (N) then
+          Rewrite (N, Exp_Put_Image.Build_Image_Call (N));
+          Analyze_And_Resolve
+            (N, Standard_Wide_Wide_String, Suppress => All_Checks);
+          return;
+       end if;
+ 
        Rtyp := Root_Type (Entity (Pref));
  
        Insert_Actions (N, New_List (
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_imgv.ads gcc-13.1.0/gcc/ada/exp_imgv.ads
*** gcc-12.2.0/gcc/ada/exp_imgv.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_imgv.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_intr.adb gcc-13.1.0/gcc/ada/exp_intr.adb
*** gcc-12.2.0/gcc/ada/exp_intr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_intr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 24,36 ****
--- 24,39 ----
  ------------------------------------------------------------------------------
  
  with Atree;          use Atree;
+ with Aspects;        use Aspects;
  with Checks;         use Checks;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
  with Elists;         use Elists;
+ with Errout;         use Errout;
  with Expander;       use Expander;
  with Exp_Atag;       use Exp_Atag;
+ with Exp_Ch6;        use Exp_Ch6;
  with Exp_Ch7;        use Exp_Ch7;
  with Exp_Ch11;       use Exp_Ch11;
  with Exp_Code;       use Exp_Code;
*************** package body Exp_Intr is
*** 277,282 ****
--- 280,329 ----
        Result_Typ : Entity_Id;
  
     begin
+       pragma Assert (Is_Class_Wide_Type (Etype (Entity (Name (N)))));
+ 
+       --  Report case where we know that the generated code is wrong; that
+       --  is a dispatching constructor call whose controlling type has tasks
+       --  but its root type does not have tasks. In such case the constructor
+       --  subprogram of the root type does not have extra formals but the
+       --  constructor of the derivation must have extra formals.
+ 
+       if not Global_No_Tasking
+         and then not No_Run_Time_Mode
+         and then Is_Build_In_Place_Function (Entity (Name (N)))
+         and then not Has_Task (Root_Type (Etype (Entity (Name (N)))))
+         and then not Has_Aspect (Root_Type (Etype (Entity (Name (N)))),
+                        Aspect_No_Task_Parts)
+       then
+          --  Case 1: Explicit tag reference (which allows static check)
+ 
+          if Nkind (Tag_Arg) = N_Identifier
+            and then Present (Entity (Tag_Arg))
+            and then Is_Tag (Entity (Tag_Arg))
+          then
+             if Has_Task (Related_Type (Entity (Tag_Arg))) then
+                Error_Msg_N ("unsupported dispatching constructor call", N);
+                Error_Msg_NE
+                  ("\work around this problem by defining task component "
+                   & "type& using access-to-task-type",
+                   N, Related_Type (Entity (Tag_Arg)));
+             end if;
+ 
+          --  Case 2: Dynamic tag which may fail at run time
+ 
+          else
+             Error_Msg_N
+               ("unsupported dispatching constructor call if the type "
+                & "of the built object has task components??", N);
+ 
+             Error_Msg_Sloc := Sloc (Root_Type (Etype (Entity (Name (N)))));
+             Error_Msg_NE
+               ("\work around this by adding ''with no_task_parts'' to "
+                & "the declaration of the root type& defined#???",
+                N, Root_Type (Etype (Entity (Name (N)))));
+          end if;
+       end if;
+ 
        --  Remove side effects from tag argument early, before rewriting
        --  the dispatching constructor call, as Remove_Side_Effects relies
        --  on Tag_Arg's Parent link properly attached to the tree (once the
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_intr.ads gcc-13.1.0/gcc/ada/exp_intr.ads
*** gcc-12.2.0/gcc/ada/exp_intr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_intr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_pakd.adb gcc-13.1.0/gcc/ada/exp_pakd.adb
*** gcc-12.2.0/gcc/ada/exp_pakd.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_pakd.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Pakd is
*** 671,681 ****
           return;
        end if;
  
!       --  If our immediate ancestor subtype is constrained, and it already
!       --  has a packed array type, then just share the same type, since the
!       --  bounds must be the same. If the ancestor is not an array type but
!       --  a private type, as can happen with multiple instantiations, create
!       --  a new packed type, to avoid privacy issues.
  
        if Ekind (Typ) = E_Array_Subtype then
           Ancest := Ancestor_Subtype (Typ);
--- 671,681 ----
           return;
        end if;
  
!       --  If our immediate ancestor subtype is constrained, and it already has
!       --  a packed array type, and it has the same size, then just share the
!       --  same type, since the bounds must be the same. If the ancestor is not
!       --  an array type but a private type, as can happen with multiple
!       --  instantiations, create a new packed type, to avoid privacy issues.
  
        if Ekind (Typ) = E_Array_Subtype then
           Ancest := Ancestor_Subtype (Typ);
*************** package body Exp_Pakd is
*** 684,689 ****
--- 684,692 ----
             and then Is_Array_Type (Ancest)
             and then Is_Constrained (Ancest)
             and then Present (Packed_Array_Impl_Type (Ancest))
+            and then Known_Esize (Typ)
+            and then Known_Esize (Ancest)
+            and then Esize (Typ) = Esize (Ancest)
           then
              Set_Packed_Array_Impl_Type (Typ, Packed_Array_Impl_Type (Ancest));
              return;
*************** package body Exp_Pakd is
*** 1930,1938 ****
        --  modular case we guarantee that the unused bits are always zeroes.
        --  We do have to compare the lengths because we could be comparing
        --  two different subtypes of the same base type. We can only do this
!       --  if the PATs on both sides are the same.
  
-       if Is_Modular_Integer_Type (PAT) and then PAT = Etype (R) then
           Rewrite (N,
             Make_And_Then (Loc,
               Left_Opnd =>
--- 1933,1949 ----
        --  modular case we guarantee that the unused bits are always zeroes.
        --  We do have to compare the lengths because we could be comparing
        --  two different subtypes of the same base type. We can only do this
!       --  if the PATs on both sides are modular (in which case they are
!       --  necessarily structurally the same -- same Modulus and so on);
!       --  otherwise, we have a case where the right operand is not of
!       --  compile time known size.
! 
!       if Is_Modular_Integer_Type (PAT)
!         and then Is_Modular_Integer_Type (Etype (R))
!       then
!          pragma Assert (RM_Size (Etype (R)) = RM_Size (PAT));
!          pragma Assert (Modulus (Etype (R)) = Modulus (PAT));
  
           Rewrite (N,
             Make_And_Then (Loc,
               Left_Opnd =>
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_pakd.ads gcc-13.1.0/gcc/ada/exp_pakd.ads
*** gcc-12.2.0/gcc/ada/exp_pakd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_pakd.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Pakd is
*** 41,47 ****
  
     --  This packed array type has the name xxxPn, where xxx is the name
     --  of the packed type, and n is the component size. The expanded
!    --  declaration declares a type that is one of the following:
  
     --    For an unconstrained array with component size 1,2,4 or any other
     --    odd component size. These are the cases in which we do not need
--- 41,48 ----
  
     --  This packed array type has the name xxxPn, where xxx is the name
     --  of the packed type, and n is the component size. The expanded
!    --  declaration declares a type that is one of the following (sizes
!    --  below are in bytes):
  
     --    For an unconstrained array with component size 1,2,4 or any other
     --    odd component size. These are the cases in which we do not need
*************** package Exp_Pakd is
*** 49,58 ****
  
     --      type xxxPn is new Packed_Bytes1;
  
!    --    For an unconstrained array with component size that is divisible
!    --    by 2, but not divisible by 4 (other than 2 itself). These are the
!    --    cases in which we can generate better code if the underlying array
!    --    is 2-byte aligned (see System.Pack_14 in file s-pack14 for example).
  
     --      type xxxPn is new Packed_Bytes2;
  
--- 50,59 ----
  
     --      type xxxPn is new Packed_Bytes1;
  
!    --    For an unconstrained array with component size greater than 2, that is
!    --    divisible by 2, but not divisible by 4. These are the cases in which
!    --    we can generate better code if the underlying array is 2-byte aligned
!    --    (see System.Pack_14 in file s-pack14 for example).
  
     --      type xxxPn is new Packed_Bytes2;
  
*************** package Exp_Pakd is
*** 942,948 ****
     --  N is an N_Op_Eq node where the operands are packed arrays whose
     --  representation is an array-of-bytes type (the case where a modular
     --  type is used for the representation does not require any special
!    --  handling, because in the modular case, unused bits are zeroes.
  
     procedure Expand_Packed_Not (N : Node_Id);
     --  N is an N_Op_Not node where the operand is packed array of Boolean
--- 943,949 ----
     --  N is an N_Op_Eq node where the operands are packed arrays whose
     --  representation is an array-of-bytes type (the case where a modular
     --  type is used for the representation does not require any special
!    --  handling, because in the modular case, unused bits are zeroes).
  
     procedure Expand_Packed_Not (N : Node_Id);
     --  N is an N_Op_Not node where the operand is packed array of Boolean
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_prag.adb gcc-13.1.0/gcc/ada/exp_prag.adb
*** gcc-12.2.0/gcc/ada/exp_prag.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_prag.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Elists;         use Elists;
*** 34,40 ****
  with Errout;         use Errout;
  with Exp_Ch11;       use Exp_Ch11;
  with Exp_Util;       use Exp_Util;
- with Expander;       use Expander;
  with Inline;         use Inline;
  with Lib;            use Lib;
  with Namet;          use Namet;
--- 34,39 ----
*************** with Stand;          use Stand;
*** 59,64 ****
--- 58,64 ----
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
  with Validsw;        use Validsw;
+ with Warnsw;         use Warnsw;
  
  package body Exp_Prag is
  
*************** package body Exp_Prag is
*** 106,117 ****
           end if;
        end loop;
  
!       if Present (Arg)
!         and then Nkind (Arg) = N_Pragma_Argument_Association
!       then
!          return Expression (Arg);
        else
!          return Arg;
        end if;
     end Arg_N;
  
--- 106,115 ----
           end if;
        end loop;
  
!       if Present (Arg) then
!          return Get_Pragma_Arg (Arg);
        else
!          return Empty;
        end if;
     end Arg_N;
  
*************** package body Exp_Prag is
*** 286,292 ****
        --  expression is not usually the best choice here, because it points to
        --  the location of the topmost tree node, which may be an operator in
        --  the middle of the source text of the expression. For example, it gets
!       --  located on the last AND keyword in a chain of boolean expressiond
        --  AND'ed together. It is best to put the message on the first character
        --  of the condition, which is the effect of the First_Node call here.
        --  This source location is used to build the default exception message,
--- 284,290 ----
        --  expression is not usually the best choice here, because it points to
        --  the location of the topmost tree node, which may be an operator in
        --  the middle of the source text of the expression. For example, it gets
!       --  located on the last AND keyword in a chain of boolean expressions
        --  AND'ed together. It is best to put the message on the first character
        --  of the condition, which is the effect of the First_Node call here.
        --  This source location is used to build the default exception message,
*************** package body Exp_Prag is
*** 456,461 ****
--- 454,461 ----
                             New_Occurrence_Of (RTE (RE_Assert_Failure),
                                                                     Loc))))))));
  
+          Set_Comes_From_Check_Or_Contract (N);
+ 
        --  Case where we call the procedure
  
        else
*************** package body Exp_Prag is
*** 544,549 ****
--- 544,551 ----
                   Name                   =>
                     New_Occurrence_Of (RTE (RE_Raise_Assert_Failure), Loc),
                   Parameter_Associations => New_List (Relocate_Node (Msg))))));
+ 
+          Set_Comes_From_Check_Or_Contract (N);
        end if;
  
        Analyze (N);
*************** package body Exp_Prag is
*** 605,618 ****
              Get_Name_String (Chars (External));
           end if;
  
!          Set_All_Upper_Case;
  
           Psect :=
             Make_String_Literal (Eloc, Strval => String_From_Name_Buffer);
  
        else
           Get_Name_String (Chars (Internal));
!          Set_All_Upper_Case;
           Psect :=
             Make_String_Literal (Iloc, Strval => String_From_Name_Buffer);
        end if;
--- 607,620 ----
              Get_Name_String (Chars (External));
           end if;
  
!          Set_Casing (All_Upper_Case);
  
           Psect :=
             Make_String_Literal (Eloc, Strval => String_From_Name_Buffer);
  
        else
           Get_Name_String (Chars (Internal));
!          Set_Casing (All_Upper_Case);
           Psect :=
             Make_String_Literal (Iloc, Strval => String_From_Name_Buffer);
        end if;
*************** package body Exp_Prag is
*** 1054,1060 ****
           Result : constant List_Id := New_List;
           Elmt   : Elmt_Id;
        begin
!          if Elmts = No_Elist then
              return Result;
           end if;
  
--- 1056,1062 ----
           Result : constant List_Id := New_List;
           Elmt   : Elmt_Id;
        begin
!          if No (Elmts) then
              return Result;
           end if;
  
*************** package body Exp_Prag is
*** 1436,1441 ****
--- 1438,1445 ----
                  Condition       => Cond,
                  Then_Statements => New_List (Error));
  
+             Set_Comes_From_Check_Or_Contract (Checks);
+ 
           else
              if No (Elsif_Parts (Checks)) then
                 Set_Elsif_Parts (Checks, New_List);
*************** package body Exp_Prag is
*** 1645,1650 ****
--- 1649,1656 ----
                  Condition       => New_Occurrence_Of (Flag, Loc),
                  Then_Statements => Eval_Stmts);
  
+             Set_Comes_From_Check_Or_Contract (Evals);
+ 
           --  Otherwise generate:
           --    elsif Flag then
           --       <evaluation statements>
*************** package body Exp_Prag is
*** 1839,1844 ****
--- 1845,1852 ----
                    Set (Flag),
                    Increment (Count)));
  
+             Set_Comes_From_Check_Or_Contract (If_Stmt);
+ 
              Append_To (Decls, If_Stmt);
              Analyze (If_Stmt);
  
*************** package body Exp_Prag is
*** 1907,1912 ****
--- 1915,1922 ----
                Right_Opnd => Make_Integer_Literal (Loc, 0)),
            Then_Statements => CG_Stmts);
  
+       Set_Comes_From_Check_Or_Contract (CG_Checks);
+ 
        --  Detect a possible failure due to several case guards evaluating to
        --  True.
  
*************** package body Exp_Prag is
*** 1940,1954 ****
                             New_Occurrence_Of (Msg_Str, Loc))))))))));
        end if;
  
        Append_To (Decls, CG_Checks);
-       Analyze (CG_Checks);
  
        --  Once all case guards are evaluated and checked, evaluate any prefixes
        --  of attribute 'Old founds in the selected consequence.
  
        if Present (Old_Evals) then
           Append_To (Decls, Old_Evals);
-          Analyze (Old_Evals);
        end if;
  
        --  Raise Assertion_Error when the corresponding consequence of a case
--- 1950,1966 ----
                             New_Occurrence_Of (Msg_Str, Loc))))))))));
        end if;
  
+       --  Append the checks, but do not analyze them at this point, because
+       --  contracts get potentially expanded as part of a wrapper which gets
+       --  fully analyzed once it is fully formed.
+ 
        Append_To (Decls, CG_Checks);
  
        --  Once all case guards are evaluated and checked, evaluate any prefixes
        --  of attribute 'Old founds in the selected consequence.
  
        if Present (Old_Evals) then
           Append_To (Decls, Old_Evals);
        end if;
  
        --  Raise Assertion_Error when the corresponding consequence of a case
*************** package body Exp_Prag is
*** 2010,2016 ****
              Rewrite (Expression (Lang_Char),
                Make_Character_Literal (Loc,
                  Chars              => Name_uC,
!                 Char_Literal_Value => UI_From_Int (Character'Pos ('C'))));
              Analyze (Expression (Lang_Char));
  
              --  Change the value of Foreign_Data
--- 2022,2028 ----
              Rewrite (Expression (Lang_Char),
                Make_Character_Literal (Loc,
                  Chars              => Name_uC,
!                 Char_Literal_Value => UI_From_CC (Get_Char_Code ('C'))));
              Analyze (Expression (Lang_Char));
  
              --  Change the value of Foreign_Data
*************** package body Exp_Prag is
*** 2390,2399 ****
           Set_Pragma_Argument_Associations (N, A);
        end if;
  
!       --  Process the arguments of the pragma and expand them. Expanding an
!       --  entity reference is a noop, except in a protected operation, where
!       --  a reference may have to be transformed into a reference to the
!       --  corresponding prival. Are there other pragmas that require this ???
  
        Rip := False;
        Assoc := First (Pragma_Argument_Associations (N));
--- 2402,2408 ----
           Set_Pragma_Argument_Associations (N, A);
        end if;
  
!       --  Process the arguments of the pragma
  
        Rip := False;
        Assoc := First (Pragma_Argument_Associations (N));
*************** package body Exp_Prag is
*** 2402,2409 ****
  
           Set_Address_Taken (Entity (Expression (Assoc)));
  
-          Expand (Expression (Assoc));
- 
           --  If any of the objects have a freeze node, it must appear before
           --  pragma Inspection_Point, otherwise the entity won't be elaborated
           --  when Gigi processes the pragma.
--- 2411,2416 ----
*************** package body Exp_Prag is
*** 2636,2641 ****
--- 2643,2649 ----
                   Expression =>
                     Make_Variant_Comparison (Loc,
                       Mode     => Chars (Variant),
+                      Typ      => Expr_Typ,
                       Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
                       Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
  
*************** package body Exp_Prag is
*** 2693,2702 ****
        --  If pragma is not enabled, rewrite as Null statement. If pragma is
        --  disabled, it has already been rewritten as a Null statement.
        --
!       --  Likewise, do this in CodePeer mode, because the expanded code is too
        --  complicated for CodePeer to analyse.
  
!       if Is_Ignored (N) or else CodePeer_Mode then
           Rewrite (N, Make_Null_Statement (Loc));
           Analyze (N);
           return;
--- 2701,2715 ----
        --  If pragma is not enabled, rewrite as Null statement. If pragma is
        --  disabled, it has already been rewritten as a Null statement.
        --
!       --  Likewise, ignore structural variants for execution.
!       --
!       --  Also do this in CodePeer mode, because the expanded code is too
        --  complicated for CodePeer to analyse.
  
!       if Is_Ignored (N)
!         or else Chars (Last_Var) = Name_Structural
!         or else CodePeer_Mode
!       then
           Rewrite (N, Make_Null_Statement (Loc));
           Analyze (N);
           return;
*************** package body Exp_Prag is
*** 3000,3005 ****
--- 3013,3019 ----
                   Expression =>
                     Make_Variant_Comparison (Loc,
                       Mode     => Chars (First (Choices (Variant))),
+                      Typ      => Expr_Typ,
                       Curr_Val => New_Occurrence_Of (Curr_Id, Loc),
                       Old_Val  => New_Occurrence_Of (Old_Id, Loc)))));
  
*************** package body Exp_Prag is
*** 3056,3065 ****
  
        Loc : constant Source_Ptr := Sloc (Prag);
  
!       Aggr         : Node_Id;
        Formal_Map   : Elist_Id;
        Last         : Node_Id;
!       Last_Variant : Node_Id;
        Proc_Bod     : Node_Id;
        Proc_Decl    : Node_Id;
        Proc_Id      : Entity_Id;
--- 3070,3081 ----
  
        Loc : constant Source_Ptr := Sloc (Prag);
  
!       Aggr         : constant Node_Id :=
!         Expression (First (Pragma_Argument_Associations (Prag)));
        Formal_Map   : Elist_Id;
        Last         : Node_Id;
!       Last_Variant : constant Node_Id :=
!         Nlists.Last (Component_Associations (Aggr));
        Proc_Bod     : Node_Id;
        Proc_Decl    : Node_Id;
        Proc_Id      : Entity_Id;
*************** package body Exp_Prag is
*** 3067,3080 ****
        Variant      : Node_Id;
  
     begin
!       --  Do nothing if pragma is not present or is disabled
  
!       if Is_Ignored (Prag) then
           return;
        end if;
  
-       Aggr := Expression (First (Pragma_Argument_Associations (Prag)));
- 
        --  The expansion of Subprogram Variant is quite distributed as it
        --  produces various statements to capture and compare the arguments.
        --  To preserve the original context, set the Is_Assertion_Expr flag.
--- 3083,3097 ----
        Variant      : Node_Id;
  
     begin
!       --  Do nothing if pragma is not present or is disabled.
!       --  Also ignore structural variants for execution.
  
!       if Is_Ignored (Prag)
!         or else Chars (Nlists.Last (Choices (Last_Variant))) = Name_Structural
!       then
           return;
        end if;
  
        --  The expansion of Subprogram Variant is quite distributed as it
        --  produces various statements to capture and compare the arguments.
        --  To preserve the original context, set the Is_Assertion_Expr flag.
*************** package body Exp_Prag is
*** 3113,3119 ****
  
        Last         := Proc_Decl;
        Curr_Decls   := New_List;
-       Last_Variant := Nlists.Last (Component_Associations (Aggr));
  
        Variant := First (Component_Associations (Aggr));
        while Present (Variant) loop
--- 3130,3135 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_prag.ads gcc-13.1.0/gcc/ada/exp_prag.ads
*** gcc-12.2.0/gcc/ada/exp_prag.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_prag.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_put_image.adb gcc-13.1.0/gcc/ada/exp_put_image.adb
*** gcc-12.2.0/gcc/ada/exp_put_image.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_put_image.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Put_Image is
*** 338,344 ****
  
           --  For other elementary types, generate:
           --
!          --     Wide_Wide_Put (Sink, U_Type'Wide_Wide_Image (Item));
           --
           --  It would be more elegant to do it the other way around (define
           --  '[[Wide_]Wide_]Image in terms of 'Put_Image). But this is easier
--- 338,345 ----
  
           --  For other elementary types, generate:
           --
!          --     Wide_Wide_Put (Root_Buffer_Type'Class (Sink),
!          --       U_Type'Wide_Wide_Image (Item));
           --
           --  It would be more elegant to do it the other way around (define
           --  '[[Wide_]Wide_]Image in terms of 'Put_Image). But this is easier
*************** package body Exp_Put_Image is
*** 362,374 ****
                  Prefix => New_Occurrence_Of (U_Type, Loc),
                  Attribute_Name => Name_Wide_Wide_Image,
                  Expressions => New_List (Relocate_Node (Item)));
              Put_Call : constant Node_Id :=
                Make_Procedure_Call_Statement (Loc,
                  Name =>
                    New_Occurrence_Of (RTE (RE_Wide_Wide_Put), Loc),
                  Parameter_Associations => New_List
!                   (Relocate_Node (Sink), Image));
           begin
              return Put_Call;
           end;
        end if;
--- 363,385 ----
                  Prefix => New_Occurrence_Of (U_Type, Loc),
                  Attribute_Name => Name_Wide_Wide_Image,
                  Expressions => New_List (Relocate_Node (Item)));
+             Sink_Exp : constant Node_Id :=
+               Make_Type_Conversion (Loc,
+                 Subtype_Mark =>
+                   New_Occurrence_Of
+                     (Class_Wide_Type (RTE (RE_Root_Buffer_Type)), Loc),
+                 Expression   => Relocate_Node (Sink));
              Put_Call : constant Node_Id :=
                Make_Procedure_Call_Statement (Loc,
                  Name =>
                    New_Occurrence_Of (RTE (RE_Wide_Wide_Put), Loc),
                  Parameter_Associations => New_List
!                   (Sink_Exp, Image));
           begin
+             --  We have built a dispatching call to handle calls to
+             --  descendants (since they are not available through rtsfind).
+             --  Further details available in the body of Put_String_Exp.
+ 
              return Put_Call;
           end;
        end if;
*************** package body Exp_Put_Image is
*** 427,438 ****
              (Etype (Next_Formal (First_Formal (Libent))),
               Relocate_Node (Item));
        begin
!          return
!            Make_Procedure_Call_Statement (Loc,
!              Name => New_Occurrence_Of (Libent, Loc),
!              Parameter_Associations => New_List (
!                Relocate_Node (Sink),
!                Conv));
        end;
     end Build_String_Put_Image_Call;
  
--- 438,465 ----
              (Etype (Next_Formal (First_Formal (Libent))),
               Relocate_Node (Item));
        begin
!          --  Do not output string delimiters if this is part of an
!          --  interpolated string literal.
! 
!          if Nkind (Parent (N)) = N_Expression_With_Actions
!            and then Nkind (Original_Node (Parent (N)))
!                       = N_Interpolated_String_Literal
!          then
!             return
!               Make_Procedure_Call_Statement (Loc,
!                 Name => New_Occurrence_Of (Libent, Loc),
!                 Parameter_Associations => New_List (
!                   Relocate_Node (Sink),
!                   Conv,
!                   New_Occurrence_Of (Stand.Standard_False, Loc)));
!          else
!             return
!               Make_Procedure_Call_Statement (Loc,
!                 Name => New_Occurrence_Of (Libent, Loc),
!                 Parameter_Associations => New_List (
!                   Relocate_Node (Sink),
!                   Conv));
!          end if;
        end;
     end Build_String_Put_Image_Call;
  
*************** package body Exp_Put_Image is
*** 1039,1051 ****
        end if;
  
        --  In Ada 2022, T'Image calls T'Put_Image if there is an explicit
!       --  aspect_specification for Put_Image, or if U_Type'Image is illegal
!       --  in pre-2022 versions of Ada.
  
        declare
           U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N)));
        begin
!          if Present (TSS (U_Type, TSS_Put_Image)) then
              return True;
           end if;
  
--- 1066,1078 ----
        end if;
  
        --  In Ada 2022, T'Image calls T'Put_Image if there is an explicit
!       --  (or inherited) aspect_specification for Put_Image, or if
!       --  U_Type'Image is illegal in pre-2022 versions of Ada.
  
        declare
           U_Type : constant Entity_Id := Underlying_Type (Entity (Prefix (N)));
        begin
!          if Has_Aspect (U_Type, Aspect_Put_Image) then
              return True;
           end if;
  
*************** package body Exp_Put_Image is
*** 1058,1069 ****
     ----------------------
  
     function Build_Image_Call (N : Node_Id) return Node_Id is
!       --  For T'Image (X) Generate an Expression_With_Actions node:
        --
        --     do
        --        S : Buffer;
        --        U_Type'Put_Image (S, X);
!       --        Result : constant String := Get (S);
        --        Destroy (S);
        --     in Result end
        --
--- 1085,1098 ----
     ----------------------
  
     function Build_Image_Call (N : Node_Id) return Node_Id is
!       --  For T'[[Wide_]Wide_]Image (X) Generate an Expression_With_Actions
!       --  node:
        --
        --     do
        --        S : Buffer;
        --        U_Type'Put_Image (S, X);
!       --        Result : constant [[Wide_]Wide_]String :=
!       --          [[Wide_[Wide_]]Get (S);
        --        Destroy (S);
        --     in Result end
        --
*************** package body Exp_Put_Image is
*** 1091,1104 ****
              Image_Prefix));
        Result_Entity : constant Entity_Id :=
          Make_Temporary (Loc, 'R');
        Result_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Result_Entity,
            Object_Definition =>
!             New_Occurrence_Of (Stand.Standard_String, Loc),
            Expression =>
              Make_Function_Call (Loc,
!               Name => New_Occurrence_Of (RTE (RE_Get), Loc),
                Parameter_Associations => New_List (
                  New_Occurrence_Of (Sink_Entity, Loc))));
        Actions : List_Id;
--- 1120,1152 ----
              Image_Prefix));
        Result_Entity : constant Entity_Id :=
          Make_Temporary (Loc, 'R');
+ 
+       subtype Image_Name_Id is Name_Id with Static_Predicate =>
+         Image_Name_Id in Name_Image | Name_Wide_Image | Name_Wide_Wide_Image;
+       --  Attribute names that will be mapped to the corresponding result types
+       --  and functions.
+ 
+       Attribute_Name_Id : constant Name_Id := Attribute_Name (N);
+ 
+       Result_Typ    : constant Entity_Id :=
+         (case Image_Name_Id'(Attribute_Name_Id) is
+             when Name_Image           => Stand.Standard_String,
+             when Name_Wide_Image      => Stand.Standard_Wide_String,
+             when Name_Wide_Wide_Image => Stand.Standard_Wide_Wide_String);
+       Get_Func_Id   : constant RE_Id :=
+         (case Image_Name_Id'(Attribute_Name_Id) is
+             when Name_Image           => RE_Get,
+             when Name_Wide_Image      => RE_Wide_Get,
+             when Name_Wide_Wide_Image => RE_Wide_Wide_Get);
+ 
        Result_Decl : constant Node_Id :=
          Make_Object_Declaration (Loc,
            Defining_Identifier => Result_Entity,
            Object_Definition =>
!             New_Occurrence_Of (Result_Typ, Loc),
            Expression =>
              Make_Function_Call (Loc,
!               Name => New_Occurrence_Of (RTE (Get_Func_Id), Loc),
                Parameter_Associations => New_List (
                  New_Occurrence_Of (Sink_Entity, Loc))));
        Actions : List_Id;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_put_image.ads gcc-13.1.0/gcc/ada/exp_put_image.ads
*** gcc-12.2.0/gcc/ada/exp_put_image.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_put_image.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Put_Image is
*** 91,99 ****
     --  T'Image.
  
     function Build_Image_Call (N : Node_Id) return Node_Id;
!    --  N is a call to T'Image, and this translates it into the appropriate code
!    --  to call T'Put_Image into a buffer and then extract the string from the
!    --  buffer.
  
     procedure Preload_Root_Buffer_Type (Compilation_Unit : Node_Id);
     --  Call RTE (RE_Root_Buffer_Type) if necessary, to load the packages
--- 91,99 ----
     --  T'Image.
  
     function Build_Image_Call (N : Node_Id) return Node_Id;
!    --  N is a call to T'[[Wide_]Wide_]Image, and this translates it into the
!    --  appropriate code to call T'Put_Image into a buffer and then extract the
!    --  [[wide] wide] string from the buffer.
  
     procedure Preload_Root_Buffer_Type (Compilation_Unit : Node_Id);
     --  Call RTE (RE_Root_Buffer_Type) if necessary, to load the packages
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_sel.adb gcc-13.1.0/gcc/ada/exp_sel.adb
*** gcc-12.2.0/gcc/ada/exp_sel.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_sel.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_sel.ads gcc-13.1.0/gcc/ada/exp_sel.ads
*** gcc-12.2.0/gcc/ada/exp_sel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_sel.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_smem.adb gcc-13.1.0/gcc/ada/exp_smem.adb
*** gcc-12.2.0/gcc/ada/exp_smem.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_smem.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_smem.ads gcc-13.1.0/gcc/ada/exp_smem.ads
*** gcc-12.2.0/gcc/ada/exp_smem.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_smem.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_spark.adb gcc-13.1.0/gcc/ada/exp_spark.adb
*** gcc-12.2.0/gcc/ada/exp_spark.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_spark.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_SPARK is
*** 850,858 ****
     --  Start of processing for Expand_SPARK_Potential_Renaming
  
     begin
!       --  Replace a reference to a renaming with the actual renamed object
  
!       if Is_Object (Obj_Id) then
           Ren := Renamed_Object (Obj_Id);
  
           if Present (Ren) then
--- 850,861 ----
     --  Start of processing for Expand_SPARK_Potential_Renaming
  
     begin
!       --  Replace a reference to a renaming with the actual renamed object.
!       --  Protect against previous errors leaving no entity in N.
  
!       if Present (Obj_Id)
!         and then Is_Object (Obj_Id)
!       then
           Ren := Renamed_Object (Obj_Id);
  
           if Present (Ren) then
*************** package body Exp_SPARK is
*** 892,898 ****
     procedure SPARK_Freeze_Type (N : Entity_Id) is
        Typ : constant Entity_Id := Entity (N);
  
!       Renamed_Eq : Node_Id;
        --  Defining unit name for the predefined equality function in the case
        --  where the type has a primitive operation that is a renaming of
        --  predefined equality (but only if there is also an overriding
--- 895,901 ----
     procedure SPARK_Freeze_Type (N : Entity_Id) is
        Typ : constant Entity_Id := Entity (N);
  
!       Renamed_Eq : Entity_Id;
        --  Defining unit name for the predefined equality function in the case
        --  where the type has a primitive operation that is a renaming of
        --  predefined equality (but only if there is also an overriding
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_spark.ads gcc-13.1.0/gcc/ada/exp_spark.ads
*** gcc-12.2.0/gcc/ada/exp_spark.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_spark.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_strm.adb gcc-13.1.0/gcc/ada/exp_strm.adb
*** gcc-12.2.0/gcc/ada/exp_strm.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_strm.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Strm is
*** 1548,1584 ****
  
        function Make_Field_Attributes (Clist : List_Id) return List_Id is
           Item   : Node_Id;
!          Result : List_Id;
  
        begin
!          Result := New_List;
! 
!          if Present (Clist) then
!             Item := First (Clist);
! 
!             --  Loop through components, skipping all internal components,
!             --  which are not part of the value (e.g. _Tag), except that we
!             --  don't skip the _Parent, since we do want to process that
!             --  recursively. If _Parent is an interface type, being abstract
!             --  with no components there is no need to handle it.
  
!             while Present (Item) loop
!                if Nkind (Item) = N_Component_Declaration
!                  and then
!                    ((Chars (Defining_Identifier (Item)) = Name_uParent
!                        and then not Is_Interface
!                                       (Etype (Defining_Identifier (Item))))
!                      or else
!                     not Is_Internal_Name (Chars (Defining_Identifier (Item))))
!                then
!                   Append_To
!                     (Result,
!                      Make_Field_Attribute (Defining_Identifier (Item)));
!                end if;
  
!                Next (Item);
!             end loop;
!          end if;
  
           return Result;
        end Make_Field_Attributes;
--- 1548,1579 ----
  
        function Make_Field_Attributes (Clist : List_Id) return List_Id is
           Item   : Node_Id;
!          Result : constant List_Id := New_List;
  
        begin
!          --  Loop through components, skipping all internal components, which
!          --  are not part of the value (e.g. _Tag), except that we don't skip
!          --  the _Parent, since we do want to process that recursively. If
!          --  _Parent is an interface type, being abstract with no components
!          --  there is no need to handle it.
  
!          Item := First (Clist);
!          while Present (Item) loop
!             if Nkind (Item) = N_Component_Declaration
!               and then
!                 ((Chars (Defining_Identifier (Item)) = Name_uParent
!                  and then not Is_Interface
!                    (Etype (Defining_Identifier (Item))))
!                 or else
!                   not Is_Internal_Name (Chars (Defining_Identifier (Item))))
!             then
!                Append_To
!                  (Result,
!                   Make_Field_Attribute (Defining_Identifier (Item)));
!             end if;
  
!             Next (Item);
!          end loop;
  
           return Result;
        end Make_Field_Attributes;
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_strm.ads gcc-13.1.0/gcc/ada/exp_strm.ads
*** gcc-12.2.0/gcc/ada/exp_strm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_strm.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_tss.adb gcc-13.1.0/gcc/ada/exp_tss.adb
*** gcc-12.2.0/gcc/ada/exp_tss.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_tss.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Tss is
*** 49,55 ****
       (Typ : Entity_Id;
        Ref : Entity_Id := Empty) return Entity_Id
     is
!       Full_Type : E;
        Proc      : Entity_Id;
  
     begin
--- 49,55 ----
       (Typ : Entity_Id;
        Ref : Entity_Id := Empty) return Entity_Id
     is
!       Full_Type : Entity_Id;
        Proc      : Entity_Id;
  
     begin
*************** package body Exp_Tss is
*** 78,85 ****
        else
           Proc := Init_Proc (Base_Type (Full_Type), Ref);
  
           if No (Proc)
!            and then Is_Composite_Type (Full_Type)
             and then Is_Derived_Type (Full_Type)
           then
              return Init_Proc (Root_Type (Full_Type), Ref);
--- 78,88 ----
        else
           Proc := Init_Proc (Base_Type (Full_Type), Ref);
  
+          --  For derived record types, if the base type does not have one,
+          --  we use the Init_Proc of the ancestor type.
+ 
           if No (Proc)
!            and then Is_Record_Type (Full_Type)
             and then Is_Derived_Type (Full_Type)
           then
              return Init_Proc (Root_Type (Full_Type), Ref);
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_tss.ads gcc-13.1.0/gcc/ada/exp_tss.ads
*** gcc-12.2.0/gcc/ada/exp_tss.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_tss.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_unst.adb gcc-13.1.0/gcc/ada/exp_unst.adb
*** gcc-12.2.0/gcc/ada/exp_unst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_unst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Exp_Unst is
*** 856,862 ****
                       S : Entity_Id := E;
  
                    begin
!                      for J in reverse 1 .. L  - 1 loop
                          S := Enclosing_Subprogram (S);
                          Subps.Table (Subp_Index (S)).Reachable := True;
                       end loop;
--- 856,862 ----
                       S : Entity_Id := E;
  
                    begin
!                      for J in reverse 1 .. L - 1 loop
                          S := Enclosing_Subprogram (S);
                          Subps.Table (Subp_Index (S)).Reachable := True;
                       end loop;
*************** package body Exp_Unst is
*** 938,944 ****
                 --  subprogram. As above, the called entity must be local and
                 --  not imported.
  
!                when N_Handled_Sequence_Of_Statements =>
                    if Present (At_End_Proc (N))
                      and then Scope_Within (Entity (At_End_Proc (N)), Subp)
                      and then not Is_Imported (Entity (At_End_Proc (N)))
--- 938,944 ----
                 --  subprogram. As above, the called entity must be local and
                 --  not imported.
  
!                when N_Handled_Sequence_Of_Statements | N_Block_Statement =>
                    if Present (At_End_Proc (N))
                      and then Scope_Within (Entity (At_End_Proc (N)), Subp)
                      and then not Is_Imported (Entity (At_End_Proc (N)))
*************** package body Exp_Unst is
*** 1184,1189 ****
--- 1184,1198 ----
  
                    Register_Subprogram (Ent, N);
  
+                   --  Record a call from an At_End_Proc
+ 
+                   if Present (At_End_Proc (N))
+                     and then Scope_Within (Entity (At_End_Proc (N)), Subp)
+                     and then not Is_Imported (Entity (At_End_Proc (N)))
+                   then
+                      Append_Unique_Call ((N, Ent, Entity (At_End_Proc (N))));
+                   end if;
+ 
                    --  We make a recursive call to scan the subprogram body, so
                    --  that we can save and restore Current_Subprogram.
  
*************** package body Exp_Unst is
*** 2216,2222 ****
  
              if No (UPJ.Ref)
                or else not Is_Entity_Name (UPJ.Ref)
!               or else not Present (Entity (UPJ.Ref))
                or else not Opt.Generate_C_Code
              then
                 goto Continue;
--- 2225,2231 ----
  
              if No (UPJ.Ref)
                or else not Is_Entity_Name (UPJ.Ref)
!               or else No (Entity (UPJ.Ref))
                or else not Opt.Generate_C_Code
              then
                 goto Continue;
*************** package body Exp_Unst is
*** 2583,2588 ****
--- 2592,2599 ----
                   and then Is_Library_Level_Entity (Spec_Id)
                 then
                    Unnest_Subprogram (Spec_Id, N);
+                else
+                   return Skip;
                 end if;
              end;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_unst.ads gcc-13.1.0/gcc/ada/exp_unst.ads
*** gcc-12.2.0/gcc/ada/exp_unst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_unst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_util.adb gcc-13.1.0/gcc/ada/exp_util.adb
*** gcc-12.2.0/gcc/ada/exp_util.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_util.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Stringt;        use Stringt;
*** 67,72 ****
--- 67,73 ----
  with Tbuild;         use Tbuild;
  with Ttypes;         use Ttypes;
  with Validsw;        use Validsw;
+ with Warnsw;         use Warnsw;
  
  with GNAT.HTable;
  package body Exp_Util is
*************** package body Exp_Util is
*** 113,119 ****
       (Header_Num => Type_Map_Header,
        Key        => Entity_Id,
        Element    => Node_Or_Entity_Id,
!       No_element => Empty,
        Hash       => Type_Map_Hash,
        Equal      => "=");
  
--- 114,120 ----
       (Header_Num => Type_Map_Header,
        Key        => Entity_Id,
        Element    => Node_Or_Entity_Id,
!       No_Element => Empty,
        Hash       => Type_Map_Hash,
        Equal      => "=");
  
*************** package body Exp_Util is
*** 167,176 ****
     --  Force evaluation of bounds of a slice, which may be given by a range
     --  or by a subtype indication with or without a constraint.
  
-    function Is_Verifiable_DIC_Pragma (Prag : Node_Id) return Boolean;
-    --  Determine whether pragma Default_Initial_Condition denoted by Prag has
-    --  an assertion expression that should be verified at run time.
- 
     function Is_Uninitialized_Aggregate
       (Exp : Node_Id;
        T   : Entity_Id) return Boolean;
--- 168,173 ----
*************** package body Exp_Util is
*** 181,186 ****
--- 178,187 ----
     --  the bounds of the aggregate can be propagated directly to the
     --  object declaration.
  
+    function Is_Verifiable_DIC_Pragma (Prag : Node_Id) return Boolean;
+    --  Determine whether pragma Default_Initial_Condition denoted by Prag has
+    --  an assertion expression that should be verified at run time.
+ 
     function Make_CW_Equivalent_Type
       (T : Entity_Id;
        E : Node_Id) return Entity_Id;
*************** package body Exp_Util is
*** 328,333 ****
--- 329,400 ----
     ----------------------
  
     procedure Adjust_Condition (N : Node_Id) is
+ 
+       function Is_Hardbool_Type (T : Entity_Id) return Boolean;
+       --  Return True iff T is a type annotated with the
+       --  Machine_Attribute pragma "hardbool".
+ 
+       ----------------------
+       -- Is_Hardbool_Type --
+       ----------------------
+ 
+       function Is_Hardbool_Type (T : Entity_Id) return Boolean is
+ 
+          function Find_Hardbool_Pragma
+            (Id : Entity_Id) return Node_Id;
+          --  Return a Rep_Item associated with entity Id that
+          --  corresponds to the Hardbool Machine_Attribute pragma, if
+          --  any, or Empty otherwise.
+ 
+          function Pragma_Arg_To_String (Item : Node_Id) return String is
+             (To_String (Strval (Expr_Value_S (Item))));
+          --  Return the pragma argument Item as a String
+ 
+          function Hardbool_Pragma_P (Item : Node_Id) return Boolean is
+             (Nkind (Item) = N_Pragma
+                and then
+              Pragma_Name (Item) = Name_Machine_Attribute
+                and then
+              Pragma_Arg_To_String
+                (Get_Pragma_Arg
+                   (Next (First (Pragma_Argument_Associations (Item)))))
+                = "hardbool");
+          --  Return True iff representation Item is a "hardbool"
+          --  Machine_Attribute pragma.
+ 
+          --------------------------
+          -- Find_Hardbool_Pragma --
+          --------------------------
+ 
+          function Find_Hardbool_Pragma
+            (Id : Entity_Id) return Node_Id
+          is
+             Item : Node_Id;
+ 
+          begin
+             if not Has_Gigi_Rep_Item (Id) then
+                return Empty;
+             end if;
+ 
+             Item := First_Rep_Item (Id);
+             while Present (Item) loop
+                if Hardbool_Pragma_P (Item) then
+                   return Item;
+                end if;
+                Item := Next_Rep_Item (Item);
+             end loop;
+ 
+             return Empty;
+          end Find_Hardbool_Pragma;
+ 
+       --  Start of processing for Is_Hardbool_Type
+ 
+       begin
+          return Present (Find_Hardbool_Pragma (T));
+       end Is_Hardbool_Type;
+ 
+    --  Start of processing for Adjust_Condition
+ 
     begin
        if No (N) then
           return;
*************** package body Exp_Util is
*** 347,353 ****
  
           --  Apply validity checking if needed
  
!          if Validity_Checks_On and Validity_Check_Tests then
              Ensure_Valid (N);
           end if;
  
--- 414,423 ----
  
           --  Apply validity checking if needed
  
!          if Validity_Checks_On
!            and then
!              (Validity_Check_Tests or else Is_Hardbool_Type (T))
!          then
              Ensure_Valid (N);
           end if;
  
*************** package body Exp_Util is
*** 424,429 ****
--- 494,502 ----
              elsif     KP in N_Op_Boolean
                or else KP in N_Short_Circuit
                or else KP = N_Op_Not
+               or else (KP in N_Type_Conversion
+                            | N_Unchecked_Type_Conversion
+                         and then Is_Boolean_Type (Etype (Parent (N))))
              then
                 return;
  
*************** package body Exp_Util is
*** 825,830 ****
--- 898,908 ----
        if No (Pool_Id) then
           return;
  
+       --  Do not process allocations from the return stack
+ 
+       elsif Is_RTE (Pool_Id, RE_RS_Pool) then
+          return;
+ 
        --  Do not process allocations on / deallocations from the secondary
        --  stack, except for access types used to implement indirect temps.
  
*************** package body Exp_Util is
*** 890,895 ****
--- 968,975 ----
           Size_Id : constant Entity_Id := Make_Temporary (Loc, 'S');
  
           Actuals      : List_Id;
+          Alloc_Nod    : Node_Id := Empty;
+          Alloc_Expr   : Node_Id := Empty;
           Fin_Addr_Id  : Entity_Id;
           Fin_Mas_Act  : Node_Id;
           Fin_Mas_Id   : Entity_Id;
*************** package body Exp_Util is
*** 897,902 ****
--- 977,1012 ----
           Subpool      : Node_Id := Empty;
  
        begin
+          --  When we are building an allocator procedure, extract the allocator
+          --  node for later processing and calculation of alignment.
+ 
+          if Is_Allocate then
+ 
+             if Nkind (Expr) = N_Allocator then
+                Alloc_Nod := Expr;
+ 
+             --  When Expr is an object declaration we have to examine its
+             --  expression.
+ 
+             elsif Nkind (Expr) = N_Object_Declaration
+               and then Nkind (Expression (Expr)) = N_Allocator
+             then
+                Alloc_Nod := Expression (Expr);
+ 
+             --  Otherwise, we raise an error because we should have found one
+ 
+             else
+                raise Program_Error;
+             end if;
+ 
+             --  Extract the qualified expression if there is one from the
+             --  allocator.
+ 
+             if Nkind (Expression (Alloc_Nod)) = N_Qualified_Expression then
+                Alloc_Expr := Expression (Alloc_Nod);
+             end if;
+          end if;
+ 
           --  Step 1: Construct all the actuals for the call to library routine
           --  Allocate_Any_Controlled / Deallocate_Any_Controlled.
  
*************** package body Exp_Util is
*** 967,985 ****
           Append_To (Actuals, New_Occurrence_Of (Addr_Id, Loc));
           Append_To (Actuals, New_Occurrence_Of (Size_Id, Loc));
  
!          if (Is_Allocate or else not Is_Class_Wide_Type (Desig_Typ))
             and then not Use_Secondary_Stack_Pool
           then
              Append_To (Actuals, New_Occurrence_Of (Alig_Id, Loc));
  
!          --  For deallocation of class-wide types we obtain the value of
!          --  alignment from the Type Specific Record of the deallocated object.
           --  This is needed because the frontend expansion of class-wide types
           --  into equivalent types confuses the back end.
  
           else
              --  Generate:
              --     Obj.all'Alignment
  
              --  ... because 'Alignment applied to class-wide types is expanded
              --  into the code that reads the value of alignment from the TSD
--- 1077,1103 ----
           Append_To (Actuals, New_Occurrence_Of (Addr_Id, Loc));
           Append_To (Actuals, New_Occurrence_Of (Size_Id, Loc));
  
!          --  Class-wide allocations without expressions and non-class-wide
!          --  allocations can be performed without getting the alignment from
!          --  the type's Type Specific Record.
! 
!          if ((Is_Allocate and then No (Alloc_Expr))
!                or else
!              not Is_Class_Wide_Type (Desig_Typ))
             and then not Use_Secondary_Stack_Pool
           then
              Append_To (Actuals, New_Occurrence_Of (Alig_Id, Loc));
  
!          --  For operations on class-wide types we obtain the value of
!          --  alignment from the Type Specific Record of the relevant object.
           --  This is needed because the frontend expansion of class-wide types
           --  into equivalent types confuses the back end.
  
           else
              --  Generate:
              --     Obj.all'Alignment
+             --   or
+             --     Alloc_Expr'Alignment
  
              --  ... because 'Alignment applied to class-wide types is expanded
              --  into the code that reads the value of alignment from the TSD
*************** package body Exp_Util is
*** 992,998 ****
                Unchecked_Convert_To (RTE (RE_Storage_Offset),
                  Make_Attribute_Reference (Loc,
                    Prefix         =>
!                     Make_Explicit_Dereference (Loc, Relocate_Node (Expr)),
                    Attribute_Name => Name_Alignment)));
           end if;
  
--- 1110,1119 ----
                Unchecked_Convert_To (RTE (RE_Storage_Offset),
                  Make_Attribute_Reference (Loc,
                    Prefix         =>
!                     (if No (Alloc_Expr) then
!                        Make_Explicit_Dereference (Loc, Relocate_Node (Expr))
!                      else
!                        Relocate_Node (Expression (Alloc_Expr))),
                    Attribute_Name => Name_Alignment)));
           end if;
  
*************** package body Exp_Util is
*** 1173,1179 ****
                 --  Gigi expects a different profile in the Secondary_Stack_Pool
                 --  case. There must be no uses of the two missing formals
                 --  (i.e., Pool_Param and Alignment_Param) in this case.
!                Formal_Params := New_List (Address_Param, Size_Param);
              else
                 Formal_Params := New_List (
                   Pool_Param, Address_Param, Size_Param, Alignment_Param);
--- 1294,1301 ----
                 --  Gigi expects a different profile in the Secondary_Stack_Pool
                 --  case. There must be no uses of the two missing formals
                 --  (i.e., Pool_Param and Alignment_Param) in this case.
!                Formal_Params := New_List
!                  (Address_Param, Size_Param, Alignment_Param);
              else
                 Formal_Params := New_List (
                   Pool_Param, Address_Param, Size_Param, Alignment_Param);
*************** package body Exp_Util is
*** 1579,1585 ****
           --  type attributes.
  
        begin
!          if not Present (Priv_Typ) and then not Present (Full_Typ) then
              return;
           end if;
  
--- 1701,1707 ----
           --  type attributes.
  
        begin
!          if No (Priv_Typ) and then No (Full_Typ) then
              return;
           end if;
  
*************** package body Exp_Util is
*** 1666,1672 ****
                 --  full type doesn't have its own DIC, but is inherited from
                 --  a type with DIC), get the full DIC procedure.
  
!                if not Present (Par_Proc) then
                    Par_Proc := DIC_Procedure (Par_Typ);
                 end if;
  
--- 1788,1794 ----
                 --  full type doesn't have its own DIC, but is inherited from
                 --  a type with DIC), get the full DIC procedure.
  
!                if No (Par_Proc) then
                    Par_Proc := DIC_Procedure (Par_Typ);
                 end if;
  
*************** package body Exp_Util is
*** 1922,1928 ****
        elsif Is_Underlying_Full_View (Work_Typ) then
           return;
  
!       --  Use the first subtype when dealing with various base types
  
        elsif Is_Itype (Work_Typ) then
           Work_Typ := First_Subtype (Work_Typ);
--- 2044,2050 ----
        elsif Is_Underlying_Full_View (Work_Typ) then
           return;
  
!       --  Use the first subtype when dealing with implicit base types
  
        elsif Is_Itype (Work_Typ) then
           Work_Typ := First_Subtype (Work_Typ);
*************** package body Exp_Util is
*** 2624,2630 ****
           --  type attributes.
  
        begin
!          if not Present (Priv_Typ) and then not Present (Full_Typ) then
              return;
           end if;
  
--- 2746,2752 ----
           --  type attributes.
  
        begin
!          if No (Priv_Typ) and then No (Full_Typ) then
              return;
           end if;
  
*************** package body Exp_Util is
*** 2845,2851 ****
           --  Output an info message when inheriting an invariant and the
           --  listing option is enabled.
  
!          if Inherited and Opt.List_Inherited_Aspects then
              Error_Msg_Sloc := Sloc (Prag);
              Error_Msg_N
                ("info: & inherits `Invariant''Class` aspect from #?.l?", Typ);
--- 2967,2973 ----
           --  Output an info message when inheriting an invariant and the
           --  listing option is enabled.
  
!          if Inherited and List_Inherited_Aspects then
              Error_Msg_Sloc := Sloc (Prag);
              Error_Msg_N
                ("info: & inherits `Invariant''Class` aspect from #?.l?", Typ);
*************** package body Exp_Util is
*** 2951,2957 ****
           Prag_Typ_Arg  : Node_Id;
  
        begin
!          if not Present (T) then
              return;
           end if;
  
--- 3073,3079 ----
           Prag_Typ_Arg  : Node_Id;
  
        begin
!          if No (T) then
              return;
           end if;
  
*************** package body Exp_Util is
*** 4005,4017 ****
     --  The generated function has the following structure:
  
     --  function F return String is
!    --     Pref : string renames Task_Name;
!    --     T1   : String := Index1'Image (Val1);
     --     ...
!    --     Tn   : String := indexn'image (Valn);
!    --     Len  : Integer := T1'Length + ... + Tn'Length + n + 1;
!    --     --  Len includes commas and the end parentheses.
!    --     Res  : String (1..Len);
     --     Pos  : Integer := Pref'Length;
     --
     --  begin
--- 4127,4141 ----
     --  The generated function has the following structure:
  
     --  function F return String is
!    --     Pref : String renames Task_Name;
!    --     T1   : constant String := Index1'Image (Val1);
     --     ...
!    --     Tn   : constant String := Indexn'Image (Valn);
!    --     Len  : constant Integer :=
!    --       Pref'Length + T1'Length + ... + Tn'Length + n + 1;
!    --     --  Len includes commas and the end parentheses
!    --
!    --     Res  : String (1 .. Len);
     --     Pos  : Integer := Pref'Length;
     --
     --  begin
*************** package body Exp_Util is
*** 4081,4088 ****
           Append_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Pref,
!              Object_Definition => New_Occurrence_Of (Standard_String, Loc),
!              Expression =>
                 Make_String_Literal (Loc,
                   Strval => String_From_Name_Buffer)));
  
--- 4205,4213 ----
           Append_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Pref,
!              Constant_Present    => True,
!              Object_Definition   => New_Occurrence_Of (Standard_String, Loc),
!              Expression          =>
                 Make_String_Literal (Loc,
                   Strval => String_From_Name_Buffer)));
  
*************** package body Exp_Util is
*** 4105,4110 ****
--- 4230,4236 ----
             Make_Object_Declaration (Loc,
               Defining_Identifier => T,
               Object_Definition   => New_Occurrence_Of (Standard_String, Loc),
+              Constant_Present    => True,
               Expression          =>
                 Make_Attribute_Reference (Loc,
                   Attribute_Name => Name_Image,
*************** package body Exp_Util is
*** 4140,4146 ****
  
        Build_Task_Image_Prefix (Loc, Len, Res, Pos, Pref, Sum, Decls, Stats);
  
!       Set_Character_Literal_Name (Char_Code (Character'Pos ('(')));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
--- 4266,4272 ----
  
        Build_Task_Image_Prefix (Loc, Len, Res, Pos, Pref, Sum, Decls, Stats);
  
!       Set_Character_Literal_Name (Get_Char_Code ('('));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
*************** package body Exp_Util is
*** 4151,4157 ****
            Expression =>
              Make_Character_Literal (Loc,
                Chars              => Name_Find,
!               Char_Literal_Value => UI_From_Int (Character'Pos ('(')))));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
--- 4277,4283 ----
            Expression =>
              Make_Character_Literal (Loc,
                Chars              => Name_Find,
!               Char_Literal_Value => UI_From_CC (Get_Char_Code ('(')))));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
*************** package body Exp_Util is
*** 4201,4207 ****
                            Expressions    =>
                              New_List (Make_Integer_Literal (Loc, 1))))));
  
!             Set_Character_Literal_Name (Char_Code (Character'Pos (',')));
  
              Append_To (Stats,
                Make_Assignment_Statement (Loc,
--- 4327,4333 ----
                            Expressions    =>
                              New_List (Make_Integer_Literal (Loc, 1))))));
  
!             Set_Character_Literal_Name (Get_Char_Code (','));
  
              Append_To (Stats,
                Make_Assignment_Statement (Loc,
*************** package body Exp_Util is
*** 4211,4217 ****
                  Expression =>
                    Make_Character_Literal (Loc,
                      Chars              => Name_Find,
!                     Char_Literal_Value => UI_From_Int (Character'Pos (',')))));
  
              Append_To (Stats,
                Make_Assignment_Statement (Loc,
--- 4337,4343 ----
                  Expression =>
                    Make_Character_Literal (Loc,
                      Chars              => Name_Find,
!                     Char_Literal_Value => UI_From_CC (Get_Char_Code (',')))));
  
              Append_To (Stats,
                Make_Assignment_Statement (Loc,
*************** package body Exp_Util is
*** 4223,4229 ****
           end if;
        end loop;
  
!       Set_Character_Literal_Name (Char_Code (Character'Pos (')')));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
--- 4349,4355 ----
           end if;
        end loop;
  
!       Set_Character_Literal_Name (Get_Char_Code (')'));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
*************** package body Exp_Util is
*** 4234,4240 ****
             Expression =>
               Make_Character_Literal (Loc,
                 Chars              => Name_Find,
!                Char_Literal_Value => UI_From_Int (Character'Pos (')')))));
        return Build_Task_Image_Function (Loc, Decls, Stats, Res);
     end Build_Task_Array_Image;
  
--- 4360,4366 ----
             Expression =>
               Make_Character_Literal (Loc,
                 Chars              => Name_Find,
!                Char_Literal_Value => UI_From_CC (Get_Char_Code (')')))));
        return Build_Task_Image_Function (Loc, Decls, Stats, Res);
     end Build_Task_Array_Image;
  
*************** package body Exp_Util is
*** 4258,4263 ****
--- 4384,4395 ----
                     and then
                   Nkind (Expression (Parent (Id_Ref))) = N_Allocator;
  
+       Component_Suffix_Index : constant Int :=
+         (if In_Init_Proc then -1 else 0);
+       --  If an init proc calls Build_Task_Image_Decls twice for its
+       --  _Parent component (to split early/late initialization), we don't
+       --  want two decls with the same name. Hence, the -1 suffix.
+ 
     begin
        --  If Discard_Names or No_Implicit_Heap_Allocations are in effect,
        --  generate a dummy declaration only.
*************** package body Exp_Util is
*** 4299,4305 ****
           elsif Nkind (Id_Ref) = N_Selected_Component then
              T_Id :=
                Make_Defining_Identifier (Loc,
!                 New_External_Name (Chars (Selector_Name (Id_Ref)), 'T'));
              Fun := Build_Task_Record_Image (Loc, Id_Ref, Is_Dyn);
  
           elsif Nkind (Id_Ref) = N_Indexed_Component then
--- 4431,4438 ----
           elsif Nkind (Id_Ref) = N_Selected_Component then
              T_Id :=
                Make_Defining_Identifier (Loc,
!                 New_External_Name (Chars (Selector_Name (Id_Ref)), 'T',
!                   Suffix_Index => Component_Suffix_Index));
              Fun := Build_Task_Record_Image (Loc, Id_Ref, Is_Dyn);
  
           elsif Nkind (Id_Ref) = N_Indexed_Component then
*************** package body Exp_Util is
*** 4382,4387 ****
--- 4515,4521 ----
        Append_To (Decls,
          Make_Object_Declaration (Loc,
            Defining_Identifier => Len,
+           Constant_Present    => True,
            Object_Definition   => New_Occurrence_Of (Standard_Integer, Loc),
            Expression          => Sum));
  
*************** package body Exp_Util is
*** 4487,4493 ****
           Append_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Pref,
!              Object_Definition => New_Occurrence_Of (Standard_String, Loc),
               Expression =>
                 Make_String_Literal (Loc,
                   Strval => String_From_Name_Buffer)));
--- 4621,4628 ----
           Append_To (Decls,
             Make_Object_Declaration (Loc,
               Defining_Identifier => Pref,
!              Constant_Present    => True,
!              Object_Definition   => New_Occurrence_Of (Standard_String, Loc),
               Expression =>
                 Make_String_Literal (Loc,
                   Strval => String_From_Name_Buffer)));
*************** package body Exp_Util is
*** 4526,4532 ****
  
        Build_Task_Image_Prefix (Loc, Len, Res, Pos, Pref, Sum, Decls, Stats);
  
!       Set_Character_Literal_Name (Char_Code (Character'Pos ('.')));
  
        --  Res (Pos) := '.';
  
--- 4661,4667 ----
  
        Build_Task_Image_Prefix (Loc, Len, Res, Pos, Pref, Sum, Decls, Stats);
  
!       Set_Character_Literal_Name (Get_Char_Code ('.'));
  
        --  Res (Pos) := '.';
  
*************** package body Exp_Util is
*** 4539,4545 ****
               Make_Character_Literal (Loc,
                 Chars => Name_Find,
                 Char_Literal_Value =>
!                  UI_From_Int (Character'Pos ('.')))));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
--- 4674,4680 ----
               Make_Character_Literal (Loc,
                 Chars => Name_Find,
                 Char_Literal_Value =>
!                  UI_From_CC (Get_Char_Code ('.')))));
  
        Append_To (Stats,
          Make_Assignment_Statement (Loc,
*************** package body Exp_Util is
*** 5054,5072 ****
        end if;
     end Ensure_Defined;
  
-    --------------------
-    -- Entry_Names_OK --
-    --------------------
- 
-    function Entry_Names_OK return Boolean is
-    begin
-       return
-         not Restricted_Profile
-           and then not Global_Discard_Names
-           and then not Restriction_Active (No_Implicit_Heap_Allocations)
-           and then not Restriction_Active (No_Local_Allocators);
-    end Entry_Names_OK;
- 
     -------------------
     -- Evaluate_Name --
     -------------------
--- 5189,5194 ----
*************** package body Exp_Util is
*** 5597,5604 ****
              or else not Is_Array_Type (Exp_Typ)
              or else not Aliased_Present (N))
        then
!          if Is_Itype (Exp_Typ) then
  
              --  Within an initialization procedure, a selected component
              --  denotes a component of the enclosing record, and it appears as
              --  an actual in a call to its own initialization procedure. If
--- 5719,5738 ----
              or else not Is_Array_Type (Exp_Typ)
              or else not Aliased_Present (N))
        then
!          if Is_Itype (Exp_Typ)
! 
!            --  When this is for an object declaration, the caller may want to
!            --  set Is_Constr_Subt_For_U_Nominal on the subtype, so we must make
!            --  sure that either the subtype has been built for the expression,
!            --  typically for an aggregate, or the flag is already set on it;
!            --  otherwise it could end up being set on the nominal constrained
!            --  subtype of an object and thus later cause the failure to detect
!            --  non-statically-matching subtypes on 'Access of this object.
  
+            and then (Nkind (N) /= N_Object_Declaration
+                       or else Nkind (Original_Node (Exp)) = N_Aggregate
+                       or else Is_Constr_Subt_For_U_Nominal (Exp_Typ))
+          then
              --  Within an initialization procedure, a selected component
              --  denotes a component of the enclosing record, and it appears as
              --  an actual in a call to its own initialization procedure. If
*************** package body Exp_Util is
*** 5637,5643 ****
              --  This type is marked as an itype even though it has an explicit
              --  declaration since otherwise Is_Generic_Actual_Type can get
              --  set, resulting in the generation of spurious errors. (See
!             --  sem_ch8.Analyze_Package_Renaming and sem_type.covers)
  
              Set_Is_Itype (T);
              Set_Associated_Node_For_Itype (T, Exp);
--- 5771,5777 ----
              --  This type is marked as an itype even though it has an explicit
              --  declaration since otherwise Is_Generic_Actual_Type can get
              --  set, resulting in the generation of spurious errors. (See
!             --  sem_ch8.Analyze_Package_Renaming and Sem_Type.Covers.)
  
              Set_Is_Itype (T);
              Set_Associated_Node_For_Itype (T, Exp);
*************** package body Exp_Util is
*** 5681,5687 ****
           --  discriminants.
  
           else
-             Remove_Side_Effects (Exp);
              Rewrite (Subtype_Indic,
                Make_Subtype_From_Expr (Exp, Underlying_Record_View (Unc_Type)));
           end if;
--- 5815,5820 ----
*************** package body Exp_Util is
*** 5746,5752 ****
           end if;
  
        else
-          Remove_Side_Effects (Exp);
           Rewrite (Subtype_Indic,
             Make_Subtype_From_Expr (Exp, Unc_Type, Related_Id));
        end if;
--- 5879,5884 ----
*************** package body Exp_Util is
*** 6264,6279 ****
  
     begin
        if Has_Storage_Model_Type_Aspect (Typ) then
!          declare
!             SMT_Op : constant Entity_Id :=
!                        Get_Storage_Model_Type_Entity (Typ, Nam);
!          begin
!             if not Present (SMT_Op) then
!                raise Program_Error;
!             else
!                return SMT_Op;
!             end if;
!          end;
  
        --  Otherwise we assume that Typ is a descendant of Root_Storage_Pool
  
--- 6396,6402 ----
  
     begin
        if Has_Storage_Model_Type_Aspect (Typ) then
!          return Get_Storage_Model_Type_Entity (Typ, Nam);
  
        --  Otherwise we assume that Typ is a descendant of Root_Storage_Pool
  
*************** package body Exp_Util is
*** 6468,6474 ****
           return Empty;
        end Check_Decls;
  
!       --  Start of processing for Following_Address_Clause
  
     begin
        --  If parser detected no address clause for the identifier in question,
--- 6591,6597 ----
           return Empty;
        end Check_Decls;
  
!    --  Start of processing for Following_Address_Clause
  
     begin
        --  If parser detected no address clause for the identifier in question,
*************** package body Exp_Util is
*** 6578,6584 ****
           --  Generates the entity name in upper case
  
           Get_Decoded_Name_String (Chars (Ent));
!          Set_All_Upper_Case;
           Store_String_Chars (Name_Buffer (1 .. Name_Len));
           return;
        end Internal_Full_Qualified_Name;
--- 6701,6707 ----
           --  Generates the entity name in upper case
  
           Get_Decoded_Name_String (Chars (Ent));
!          Set_Casing (All_Upper_Case);
           Store_String_Chars (Name_Buffer (1 .. Name_Len));
           return;
        end Internal_Full_Qualified_Name;
*************** package body Exp_Util is
*** 6799,6804 ****
--- 6922,6932 ----
              if Loc < Sloc (CV) then
                 return;
  
+             --  In condition of IF statement
+ 
+             elsif In_Subtree (N => Var, Root => Condition (CV)) then
+                return;
+ 
              --  After end of IF statement
  
              elsif Loc >= Sloc (CV) + Text_Ptr (UI_To_Int (End_Span (CV))) then
*************** package body Exp_Util is
*** 6885,6891 ****
              if Loc < Sloc (CV) then
                 return;
  
!                --  After end of IF statement
  
              elsif Loc >= Sloc (Stm) +
                Text_Ptr (UI_To_Int (End_Span (Stm)))
--- 7013,7024 ----
              if Loc < Sloc (CV) then
                 return;
  
!             --  In condition of ELSIF part
! 
!             elsif In_Subtree (N => Var, Root => Condition (CV)) then
!                return;
! 
!             --  After end of IF statement
  
              elsif Loc >= Sloc (Stm) +
                Text_Ptr (UI_To_Int (End_Span (Stm)))
*************** package body Exp_Util is
*** 6942,6947 ****
--- 7075,7085 ----
                 if Loc < Sloc (Loop_Stmt) then
                    return;
  
+                --  In condition of while loop
+ 
+                elsif In_Subtree (N => Var, Root => Condition (CV)) then
+                   return;
+ 
                 --  After end of LOOP statement
  
                 elsif Loc >= Sloc (End_Label (Loop_Stmt)) then
*************** package body Exp_Util is
*** 7048,7053 ****
--- 7186,7248 ----
        end if;
     end Has_Access_Constraint;
  
+    ---------------------
+    -- Has_Tag_Of_Type --
+    ---------------------
+ 
+    function Has_Tag_Of_Type (Exp : Node_Id) return Boolean is
+       Typ : constant Entity_Id := Etype (Exp);
+ 
+    begin
+       pragma Assert (Is_Tagged_Type (Typ));
+ 
+       --  The tag of an object of a class-wide type is that of its
+       --  initialization expression.
+ 
+       if Is_Class_Wide_Type (Typ) then
+          return False;
+       end if;
+ 
+       --  The tag of a stand-alone object of a specific tagged type T
+       --  identifies T.
+ 
+       if Is_Entity_Name (Exp)
+         and then Ekind (Entity (Exp)) in E_Constant | E_Variable
+       then
+          return True;
+ 
+       else
+          case Nkind (Exp) is
+             --  The tag of a component or an aggregate of a specific tagged
+             --  type T identifies T.
+ 
+             when N_Indexed_Component
+               |  N_Selected_Component
+               |  N_Aggregate
+             =>
+                return True;
+ 
+             --  The tag of the result returned by a function whose result
+             --  type is a specific tagged type T identifies T.
+ 
+             when N_Function_Call =>
+                return True;
+ 
+             when N_Explicit_Dereference =>
+                return Is_Captured_Function_Call (Exp);
+ 
+             --  For a tagged type, the operand of a qualified expression
+             --  shall resolve to be of the type of the expression.
+ 
+             when N_Qualified_Expression =>
+                return Has_Tag_Of_Type (Expression (Exp));
+ 
+             when others =>
+                return False;
+          end case;
+       end if;
+    end Has_Tag_Of_Type;
+ 
     --------------------
     -- Homonym_Number --
     --------------------
*************** package body Exp_Util is
*** 7424,7430 ****
              when N_Elsif_Part
                 | N_Iteration_Scheme
              =>
!                if N = Condition (P) then
                    if Present (Condition_Actions (P)) then
                       Insert_List_After_And_Analyze
                         (Last (Condition_Actions (P)), Ins_Actions);
--- 7619,7625 ----
              when N_Elsif_Part
                 | N_Iteration_Scheme
              =>
!                if Present (Condition (P)) and then N = Condition (P) then
                    if Present (Condition_Actions (P)) then
                       Insert_List_After_And_Analyze
                         (Last (Condition_Actions (P)), Ins_Actions);
*************** package body Exp_Util is
*** 7623,7634 ****
  
                   --  We must not climb up out of an N_Iterated_xxx_Association
                   --  because the actions might contain references to the loop
!                  --  parameter. But it turns out that setting the Loop_Actions
!                  --  attribute in the case of an N_Component_Association
!                  --  when the attribute was not already set can lead to
!                  --  (as yet not understood) bugboxes (gcc failures that are
!                  --  presumably due to malformed trees). So we don't do that.
  
                   and then (Nkind (P) /= N_Component_Association
                              or else Present (Loop_Actions (P)))
                 then
--- 7818,7834 ----
  
                   --  We must not climb up out of an N_Iterated_xxx_Association
                   --  because the actions might contain references to the loop
!                  --  parameter, except if we come from the Discrete_Choices of
!                  --  N_Iterated_Component_Association which cannot contain any.
!                  --  But it turns out that setting the Loop_Actions field in
!                  --  the case of an N_Component_Association when the field was
!                  --  not already set can lead to gigi assertion failures that
!                  --  are presumably due to malformed trees, so don't do that.
  
+                  and then (Nkind (P) /= N_Iterated_Component_Association
+                             or else not Is_List_Member (N)
+                             or else
+                               List_Containing (N) /= Discrete_Choices (P))
                   and then (Nkind (P) /= N_Component_Association
                              or else Present (Loop_Actions (P)))
                 then
*************** package body Exp_Util is
*** 7768,7773 ****
--- 7968,7974 ----
                 | N_Indexed_Component
                 | N_Integer_Literal
                 | N_Iterator_Specification
+                | N_Interpolated_String_Literal
                 | N_Itype_Reference
                 | N_Label
                 | N_Loop_Parameter_Specification
*************** package body Exp_Util is
*** 7977,7982 ****
--- 8178,8187 ----
  
     function Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id is
     begin
+       pragma Assert
+         (Standard_Long_Integer_Size in
+          Standard_Integer_Size | Standard_Long_Long_Integer_Size);
+       --  So we don't need to check for Standard_Long_Integer_Size below
        pragma Assert (S <= System_Max_Integer_Size);
  
        --  This is the canonical 32-bit type
*************** package body Exp_Util is
*** 8011,8215 ****
        end if;
     end Integer_Type_For;
  
!    --------------------------------------------------
!    -- Is_Displacement_Of_Object_Or_Function_Result --
!    --------------------------------------------------
! 
!    function Is_Displacement_Of_Object_Or_Function_Result
!      (Obj_Id : Entity_Id) return Boolean
!    is
!       function Is_Controlled_Function_Call (N : Node_Id) return Boolean;
!       --  Determine whether node N denotes a controlled function call
! 
!       function Is_Controlled_Indexing (N : Node_Id) return Boolean;
!       --  Determine whether node N denotes a generalized indexing form which
!       --  involves a controlled result.
! 
!       function Is_Displace_Call (N : Node_Id) return Boolean;
!       --  Determine whether node N denotes a call to Ada.Tags.Displace
! 
!       function Is_Source_Object (N : Node_Id) return Boolean;
!       --  Determine whether a particular node denotes a source object
! 
!       function Strip (N : Node_Id) return Node_Id;
!       --  Examine arbitrary node N by stripping various indirections and return
!       --  the "real" node.
! 
!       ---------------------------------
!       -- Is_Controlled_Function_Call --
!       ---------------------------------
! 
!       function Is_Controlled_Function_Call (N : Node_Id) return Boolean is
!          Expr : Node_Id;
! 
!       begin
!          --  When a function call appears in Object.Operation format, the
!          --  original representation has several possible forms depending on
!          --  the availability and form of actual parameters:
! 
!          --    Obj.Func                    N_Selected_Component
!          --    Obj.Func (Actual)           N_Indexed_Component
!          --    Obj.Func (Formal => Actual) N_Function_Call, whose Name is an
!          --                                N_Selected_Component
! 
!          Expr := Original_Node (N);
!          loop
!             if Nkind (Expr) = N_Function_Call then
!                Expr := Name (Expr);
! 
!             --  "Obj.Func (Actual)" case
! 
!             elsif Nkind (Expr) = N_Indexed_Component then
!                Expr := Prefix (Expr);
! 
!             --  "Obj.Func" or "Obj.Func (Formal => Actual) case
! 
!             elsif Nkind (Expr) = N_Selected_Component then
!                Expr := Selector_Name (Expr);
! 
!             else
!                exit;
!             end if;
!          end loop;
! 
!          return
!            Nkind (Expr) in N_Has_Entity
!              and then Present (Entity (Expr))
!              and then Ekind (Entity (Expr)) = E_Function
!              and then Needs_Finalization (Etype (Entity (Expr)));
!       end Is_Controlled_Function_Call;
! 
!       ----------------------------
!       -- Is_Controlled_Indexing --
!       ----------------------------
! 
!       function Is_Controlled_Indexing (N : Node_Id) return Boolean is
!          Expr : constant Node_Id := Original_Node (N);
! 
!       begin
!          return
!            Nkind (Expr) = N_Indexed_Component
!              and then Present (Generalized_Indexing (Expr))
!              and then Needs_Finalization (Etype (Expr));
!       end Is_Controlled_Indexing;
! 
!       ----------------------
!       -- Is_Displace_Call --
!       ----------------------
! 
!       function Is_Displace_Call (N : Node_Id) return Boolean is
!          Call : constant Node_Id := Strip (N);
! 
!       begin
!          return
!            Present (Call)
!              and then Nkind (Call) = N_Function_Call
!              and then Nkind (Name (Call)) in N_Has_Entity
!              and then Is_RTE (Entity (Name (Call)), RE_Displace);
!       end Is_Displace_Call;
! 
!       ----------------------
!       -- Is_Source_Object --
!       ----------------------
! 
!       function Is_Source_Object (N : Node_Id) return Boolean is
!          Obj : constant Node_Id := Strip (N);
! 
!       begin
!          return
!            Present (Obj)
!              and then Comes_From_Source (Obj)
!              and then Nkind (Obj) in N_Has_Entity
!              and then Is_Object (Entity (Obj));
!       end Is_Source_Object;
! 
!       -----------
!       -- Strip --
!       -----------
! 
!       function Strip (N : Node_Id) return Node_Id is
!          Result : Node_Id;
! 
!       begin
!          Result := N;
!          loop
!             if Nkind (Result) = N_Explicit_Dereference then
!                Result := Prefix (Result);
! 
!             elsif Nkind (Result) in
!                     N_Type_Conversion | N_Unchecked_Type_Conversion
!             then
!                Result := Expression (Result);
! 
!             else
!                exit;
!             end if;
!          end loop;
! 
!          return Result;
!       end Strip;
! 
!       --  Local variables
! 
!       Obj_Decl  : constant Node_Id   := Declaration_Node (Obj_Id);
!       Obj_Typ   : constant Entity_Id := Base_Type (Etype (Obj_Id));
!       Orig_Decl : constant Node_Id   := Original_Node (Obj_Decl);
!       Orig_Expr : Node_Id;
! 
!    --  Start of processing for Is_Displacement_Of_Object_Or_Function_Result
  
     begin
!       --  Case 1:
! 
!       --     Obj : CW_Type := Function_Call (...);
! 
!       --  is rewritten into:
! 
!       --     Temp : ... := Function_Call (...)'reference;
!       --     Obj  : CW_Type renames (... Ada.Tags.Displace (Temp));
! 
!       --  where the return type of the function and the class-wide type require
!       --  dispatch table pointer displacement.
! 
!       --  Case 2:
! 
!       --     Obj : CW_Type := Container (...);
! 
!       --  is rewritten into:
! 
!       --     Temp : ... := Function_Call (Container, ...)'reference;
!       --     Obj  : CW_Type renames (... Ada.Tags.Displace (Temp));
! 
!       --  where the container element type and the class-wide type require
!       --  dispatch table pointer dispacement.
! 
!       --  Case 3:
! 
!       --     Obj : CW_Type := Src_Obj;
! 
!       --  is rewritten into:
! 
!       --     Obj : CW_Type renames (... Ada.Tags.Displace (Src_Obj));
! 
!       --  where the type of the source object and the class-wide type require
!       --  dispatch table pointer displacement.
! 
!       if Nkind (Obj_Decl) = N_Object_Renaming_Declaration
!         and then Is_Class_Wide_Type (Obj_Typ)
!         and then Is_Displace_Call (Renamed_Object (Obj_Id))
!         and then Nkind (Orig_Decl) = N_Object_Declaration
!         and then Comes_From_Source (Orig_Decl)
        then
!          Orig_Expr := Expression (Orig_Decl);
  
!          return
!            Is_Controlled_Function_Call (Orig_Expr)
!              or else Is_Controlled_Indexing (Orig_Expr)
!              or else Is_Source_Object (Orig_Expr);
!       end if;
  
!       return False;
!    end Is_Displacement_Of_Object_Or_Function_Result;
  
     ------------------------------
     -- Is_Finalizable_Transient --
--- 8216,8244 ----
        end if;
     end Integer_Type_For;
  
!    -------------------------------
!    -- Is_Captured_Function_Call --
!    -------------------------------
  
+    function Is_Captured_Function_Call (N : Node_Id) return Boolean is
     begin
!       if Nkind (N) = N_Explicit_Dereference
!         and then Is_Entity_Name (Prefix (N))
!         and then Ekind (Entity (Prefix (N))) = E_Constant
        then
!          declare
!             Value : constant Node_Id := Constant_Value (Entity (Prefix (N)));
  
!          begin
!             return Present (Value)
!               and then Nkind (Value) = N_Reference
!               and then Nkind (Prefix (Value)) = N_Function_Call;
!          end;
  
!       else
!          return False;
!       end if;
!    end Is_Captured_Function_Call;
  
     ------------------------------
     -- Is_Finalizable_Transient --
*************** package body Exp_Util is
*** 8230,8238 ****
        function Initialized_By_Aliased_BIP_Func_Call
          (Trans_Id : Entity_Id) return Boolean;
        --  Determine whether transient object Trans_Id is initialized by a
!       --  build-in-place function call where the BIPalloc parameter is of
!       --  value 1 and BIPaccess is not null. This case creates an aliasing
!       --  between the returned value and the value denoted by BIPaccess.
  
        function Is_Aliased
          (Trans_Id   : Entity_Id;
--- 8259,8268 ----
        function Initialized_By_Aliased_BIP_Func_Call
          (Trans_Id : Entity_Id) return Boolean;
        --  Determine whether transient object Trans_Id is initialized by a
!       --  build-in-place function call where the BIPalloc parameter either
!       --  does not exist or is Caller_Allocation, and BIPaccess is not null.
!       --  This case creates an aliasing between the returned value and the
!       --  value denoted by BIPaccess.
  
        function Is_Aliased
          (Trans_Id   : Entity_Id;
*************** package body Exp_Util is
*** 8289,8299 ****
  
           if Is_Build_In_Place_Function_Call (Call) then
              declare
                 Access_Nam : Name_Id := No_Name;
                 Access_OK  : Boolean := False;
                 Actual     : Node_Id;
                 Alloc_Nam  : Name_Id := No_Name;
!                Alloc_OK   : Boolean := False;
                 Formal     : Node_Id;
                 Func_Id    : Entity_Id;
                 Param      : Node_Id;
--- 8319,8332 ----
  
           if Is_Build_In_Place_Function_Call (Call) then
              declare
+                Caller_Allocation_Val : constant Uint :=
+                  UI_From_Int (BIP_Allocation_Form'Pos (Caller_Allocation));
+ 
                 Access_Nam : Name_Id := No_Name;
                 Access_OK  : Boolean := False;
                 Actual     : Node_Id;
                 Alloc_Nam  : Name_Id := No_Name;
!                Alloc_OK   : Boolean := True;
                 Formal     : Node_Id;
                 Func_Id    : Entity_Id;
                 Param      : Node_Id;
*************** package body Exp_Util is
*** 8328,8334 ****
                              BIP_Formal_Suffix (BIP_Alloc_Form));
                       end if;
  
!                      --  A match for BIPaccess => Temp has been found
  
                       if Chars (Formal) = Access_Nam
                         and then Nkind (Actual) /= N_Null
--- 8361,8367 ----
                              BIP_Formal_Suffix (BIP_Alloc_Form));
                       end if;
  
!                      --  A nonnull BIPaccess has been found
  
                       if Chars (Formal) = Access_Nam
                         and then Nkind (Actual) /= N_Null
*************** package body Exp_Util is
*** 8336,8348 ****
                          Access_OK := True;
                       end if;
  
!                      --  A match for BIPalloc => 1 has been found
  
                       if Chars (Formal) = Alloc_Nam
                         and then Nkind (Actual) = N_Integer_Literal
-                        and then Intval (Actual) = Uint_1
                       then
!                         Alloc_OK := True;
                       end if;
                    end if;
  
--- 8369,8380 ----
                          Access_OK := True;
                       end if;
  
!                      --  A BIPalloc has been found
  
                       if Chars (Formal) = Alloc_Nam
                         and then Nkind (Actual) = N_Integer_Literal
                       then
!                         Alloc_OK := Intval (Actual) = Caller_Allocation_Val;
                       end if;
                    end if;
  
*************** package body Exp_Util is
*** 8417,8422 ****
--- 8449,8471 ----
                 Search (Name (Ren_Decl));
              end if;
  
+             --  For renamings generated by Expand_N_Object_Declaration to deal
+             --  with (class-wide) interface objects, there is an intermediate
+             --  temporary of an anonymous access type used to hold the result
+             --  of the displacement of the address of the renamed object.
+ 
+             if Present (Ren_Obj)
+               and then Ekind (Ren_Obj) = E_Constant
+               and then Is_Itype (Etype (Ren_Obj))
+               and then Ekind (Etype (Ren_Obj)) = E_Anonymous_Access_Type
+               and then
+                 Is_Class_Wide_Type (Directly_Designated_Type (Etype (Ren_Obj)))
+               and then
+                 Is_Interface (Directly_Designated_Type (Etype (Ren_Obj)))
+             then
+                Search (Constant_Value (Ren_Obj));
+             end if;
+ 
              return Ren_Obj;
           end Find_Renamed_Object;
  
*************** package body Exp_Util is
*** 8629,8635 ****
        return
          Ekind (Obj_Id) in E_Constant | E_Variable
            and then Needs_Finalization (Desig)
-           and then Requires_Transient_Scope (Desig)
            and then Nkind (Rel_Node) /= N_Simple_Return_Statement
            and then not Is_Part_Of_BIP_Return_Statement (Rel_Node)
  
--- 8678,8683 ----
*************** package body Exp_Util is
*** 8659,8668 ****
  
            and then not Initialized_By_Aliased_BIP_Func_Call (Obj_Id)
  
-           --  Do not consider conversions of tags to class-wide types
- 
-           and then not Is_Tag_To_Class_Wide_Conversion (Obj_Id)
- 
            --  Do not consider iterators because those are treated as normal
            --  controlled objects and are processed by the usual finalization
            --  machinery. This avoids the double finalization of an iterator.
--- 8707,8712 ----
*************** package body Exp_Util is
*** 9019,9025 ****
        return
          Present (Expr)
            and then Nkind (Unqual_Conv (Expr)) = N_Explicit_Dereference
!           and then Nkind (Parent (Expr)) = N_Simple_Return_Statement;
     end Is_Related_To_Func_Return;
  
     --------------------------------
--- 9063,9074 ----
        return
          Present (Expr)
            and then Nkind (Unqual_Conv (Expr)) = N_Explicit_Dereference
!           and then (Nkind (Parent (Expr)) = N_Simple_Return_Statement
!                      or else
!                        (Nkind (Parent (Expr)) in N_Object_Declaration
!                                                | N_Object_Renaming_Declaration
!                          and then
!                         Is_Return_Object (Defining_Entity (Parent (Expr)))));
     end Is_Related_To_Func_Return;
  
     --------------------------------
*************** package body Exp_Util is
*** 9154,9175 ****
        return False;
     end Is_Secondary_Stack_BIP_Func_Call;
  
!    -------------------------------------
!    -- Is_Tag_To_Class_Wide_Conversion --
!    -------------------------------------
! 
!    function Is_Tag_To_Class_Wide_Conversion
!      (Obj_Id : Entity_Id) return Boolean
!    is
!       Expr : constant Node_Id := Expression (Parent (Obj_Id));
  
     begin
!       return
!         Is_Class_Wide_Type (Etype (Obj_Id))
!           and then Present (Expr)
!           and then Nkind (Expr) = N_Unchecked_Type_Conversion
!           and then Is_RTE (Etype (Expression (Expr)), RE_Tag);
!    end Is_Tag_To_Class_Wide_Conversion;
  
     --------------------------------
     -- Is_Uninitialized_Aggregate --
--- 9203,9218 ----
        return False;
     end Is_Secondary_Stack_BIP_Func_Call;
  
!    ------------------------------
!    -- Is_Secondary_Stack_Thunk --
!    ------------------------------
  
+    function Is_Secondary_Stack_Thunk (Id : Entity_Id) return Boolean is
     begin
!       return Ekind (Id) = E_Function
!         and then Is_Thunk (Id)
!         and then Has_Controlling_Result (Id);
!    end Is_Secondary_Stack_Thunk;
  
     --------------------------------
     -- Is_Uninitialized_Aggregate --
*************** package body Exp_Util is
*** 9477,9487 ****
  
     --   type Equiv_T is record
     --     _parent : T (List of discriminant constraints taken from Exp);
!    --     Ext__50 : Storage_Array (1 .. (Exp'size - Typ'object_size)/8);
     --   end Equiv_T;
     --
!    --  ??? Note that this type does not guarantee same alignment as all
!    --  derived types
     --
     --  Note: for the freezing circuitry, this looks like a record extension,
     --  and so we need to make sure that the scalar storage order is the same
--- 9520,9530 ----
  
     --   type Equiv_T is record
     --     _parent : T (List of discriminant constraints taken from Exp);
!    --     Cnn : Storage_Array (1 .. (Exp'size - Typ'object_size)/Storage_Unit);
     --   end Equiv_T;
     --
!    --  Note that this type does not guarantee same alignment as all derived
!    --  types.
     --
     --  Note: for the freezing circuitry, this looks like a record extension,
     --  and so we need to make sure that the scalar storage order is the same
*************** package body Exp_Util is
*** 9497,9507 ****
        Root_Utyp   : constant Entity_Id  := Underlying_Type (Root_Typ);
        List_Def    : constant List_Id    := Empty_List;
        Comp_List   : constant List_Id    := New_List;
        Equiv_Type  : Entity_Id;
        Range_Type  : Entity_Id;
        Str_Type    : Entity_Id;
        Constr_Root : Entity_Id;
!       Sizexpr     : Node_Id;
  
     begin
        --  If the root type is already constrained, there are no discriminants
--- 9540,9552 ----
        Root_Utyp   : constant Entity_Id  := Underlying_Type (Root_Typ);
        List_Def    : constant List_Id    := Empty_List;
        Comp_List   : constant List_Id    := New_List;
+ 
        Equiv_Type  : Entity_Id;
        Range_Type  : Entity_Id;
        Str_Type    : Entity_Id;
        Constr_Root : Entity_Id;
!       Size_Attr   : Node_Id;
!       Size_Expr   : Node_Id;
  
     begin
        --  If the root type is already constrained, there are no discriminants
*************** package body Exp_Util is
*** 9536,9569 ****
  
        Range_Type := Make_Temporary (Loc, 'G');
  
        if not Is_Interface (Root_Typ) then
  
           --  subtype rg__xx is
!          --    Storage_Offset range 1 .. (Expr'size - typ'size) / Storage_Unit
  
!          Sizexpr :=
             Make_Op_Subtract (Loc,
!              Left_Opnd =>
!                Make_Attribute_Reference (Loc,
!                  Prefix =>
!                    OK_Convert_To (T, Duplicate_Subexpr_No_Checks (E)),
!                  Attribute_Name => Name_Size),
               Right_Opnd =>
                 Make_Attribute_Reference (Loc,
                   Prefix => New_Occurrence_Of (Constr_Root, Loc),
                   Attribute_Name => Name_Object_Size));
        else
           --  subtype rg__xx is
!          --    Storage_Offset range 1 .. Expr'size / Storage_Unit
  
!          Sizexpr :=
!            Make_Attribute_Reference (Loc,
!              Prefix =>
!                OK_Convert_To (T, Duplicate_Subexpr_No_Checks (E)),
!              Attribute_Name => Name_Size);
        end if;
  
!       Set_Paren_Count (Sizexpr, 1);
  
        Append_To (List_Def,
          Make_Subtype_Declaration (Loc,
--- 9581,9642 ----
  
        Range_Type := Make_Temporary (Loc, 'G');
  
+       --  If the expression is known to have the tag of its type, then we can
+       --  use it directly for the prefix of the Size attribute; otherwise we
+       --  need to convert it first to the class-wide type to force a call to
+       --  the _Size primitive operation.
+ 
+       if Has_Tag_Of_Type (E) then
+          if not Has_Discriminants (Etype (E))
+            or else Is_Constrained (Etype (E))
+          then
+             Size_Attr :=
+               Make_Attribute_Reference (Loc,
+                 Prefix => New_Occurrence_Of (Etype (E), Loc),
+                 Attribute_Name => Name_Object_Size);
+ 
+          else
+             Size_Attr :=
+               Make_Attribute_Reference (Loc,
+                 Prefix => Duplicate_Subexpr_No_Checks (E),
+                 Attribute_Name => Name_Size);
+          end if;
+ 
+       else
+          Size_Attr :=
+            Make_Attribute_Reference (Loc,
+              Prefix => OK_Convert_To (T, Duplicate_Subexpr_No_Checks (E)),
+              Attribute_Name => Name_Size);
+       end if;
+ 
        if not Is_Interface (Root_Typ) then
  
           --  subtype rg__xx is
!          --    Storage_Offset range 1 .. (Exp'size - Typ'object_size)
!          --                                / Storage_Unit
  
!          Size_Expr :=
             Make_Op_Subtract (Loc,
!              Left_Opnd => Size_Attr,
               Right_Opnd =>
                 Make_Attribute_Reference (Loc,
                   Prefix => New_Occurrence_Of (Constr_Root, Loc),
                   Attribute_Name => Name_Object_Size));
        else
           --  subtype rg__xx is
!          --    Storage_Offset range 1 .. (Exp'size - Ada.Tags.Tag'object_size)
!          --                                / Storage_Unit
  
!          Size_Expr :=
!            Make_Op_Subtract (Loc,
!              Left_Opnd => Size_Attr,
!              Right_Opnd =>
!                Make_Attribute_Reference (Loc,
!                  Prefix => New_Occurrence_Of (RTE (RE_Tag), Loc),
!                  Attribute_Name => Name_Object_Size));
        end if;
  
!       Set_Paren_Count (Size_Expr, 1);
  
        Append_To (List_Def,
          Make_Subtype_Declaration (Loc,
*************** package body Exp_Util is
*** 9577,9583 ****
                      Low_Bound => Make_Integer_Literal (Loc, 1),
                      High_Bound =>
                        Make_Op_Divide (Loc,
!                         Left_Opnd => Sizexpr,
                          Right_Opnd => Make_Integer_Literal (Loc,
                              Intval => System_Storage_Unit)))))));
  
--- 9650,9656 ----
                      Low_Bound => Make_Integer_Literal (Loc, 1),
                      High_Bound =>
                        Make_Op_Divide (Loc,
!                         Left_Opnd => Size_Expr,
                          Right_Opnd => Make_Integer_Literal (Loc,
                              Intval => System_Storage_Unit)))))));
  
*************** package body Exp_Util is
*** 9596,9608 ****
                      New_List (New_Occurrence_Of (Range_Type, Loc))))));
  
        --  type Equiv_T is record
!       --    [ _parent : Tnn; ]
!       --    E : Str_Type;
        --  end Equiv_T;
  
        Equiv_Type := Make_Temporary (Loc, 'T');
        Mutate_Ekind (Equiv_Type, E_Record_Type);
!       Set_Parent_Subtype (Equiv_Type, Constr_Root);
  
        --  Set Is_Class_Wide_Equivalent_Type very early to trigger the special
        --  treatment for this type. In particular, even though _parent's type
--- 9669,9685 ----
                      New_List (New_Occurrence_Of (Range_Type, Loc))))));
  
        --  type Equiv_T is record
!       --    _Parent : Snn;          -- not interface
!       --    _Tag    : Ada.Tags.Tag  -- interface
!       --    Cnn     : Str_Type;
        --  end Equiv_T;
  
        Equiv_Type := Make_Temporary (Loc, 'T');
        Mutate_Ekind (Equiv_Type, E_Record_Type);
! 
!       if not Is_Interface (Root_Typ) then
!          Set_Parent_Subtype (Equiv_Type, Constr_Root);
!       end if;
  
        --  Set Is_Class_Wide_Equivalent_Type very early to trigger the special
        --  treatment for this type. In particular, even though _parent's type
*************** package body Exp_Util is
*** 9630,9635 ****
--- 9707,9723 ----
             (Equiv_Type, Reverse_Storage_Order (Base_Type (Root_Utyp)));
           Set_Reverse_Bit_Order
             (Equiv_Type, Reverse_Bit_Order (Base_Type (Root_Utyp)));
+ 
+       else
+          Append_To (Comp_List,
+            Make_Component_Declaration (Loc,
+              Defining_Identifier  =>
+                Make_Defining_Identifier (Loc, Name_uTag),
+              Component_Definition =>
+                Make_Component_Definition (Loc,
+                  Aliased_Present    => False,
+                  Subtype_Indication =>
+                    New_Occurrence_Of (RTE (RE_Tag), Loc))));
        end if;
  
        Append_To (Comp_List,
*************** package body Exp_Util is
*** 9654,9659 ****
--- 9742,9754 ----
        --  the generation of spurious warnings under ZFP run-time.
  
        Insert_Actions (E, List_Def, Suppress => All_Checks);
+ 
+       --  In the case of an interface type mark the tag for First_Tag_Component
+ 
+       if Is_Interface (Root_Typ) then
+          Set_Is_Tag (First_Entity (Equiv_Type));
+       end if;
+ 
        return Equiv_Type;
     end Make_CW_Equivalent_Type;
  
*************** package body Exp_Util is
*** 9759,9767 ****
     --  Ghost mode.
  
     function Make_Predicate_Call
!      (Typ  : Entity_Id;
!       Expr : Node_Id;
!       Mem  : Boolean := False) return Node_Id
     is
        Loc : constant Source_Ptr := Sloc (Expr);
  
--- 9854,9863 ----
     --  Ghost mode.
  
     function Make_Predicate_Call
!      (Typ         : Entity_Id;
!       Expr        : Node_Id;
!       Static_Mem  : Boolean := False;
!       Dynamic_Mem : Node_Id := Empty) return Node_Id
     is
        Loc : constant Source_Ptr := Sloc (Expr);
  
*************** package body Exp_Util is
*** 9769,9777 ****
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
        --  Save the Ghost-related attributes to restore on exit
  
!       Call    : Node_Id;
!       Func_Id : Entity_Id;
! 
     begin
        Func_Id := Predicate_Function (Typ);
        pragma Assert (Present (Func_Id));
--- 9865,9873 ----
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
        --  Save the Ghost-related attributes to restore on exit
  
!       Call         : Node_Id;
!       Func_Id      : Entity_Id;
!       Param_Assocs : List_Id;
     begin
        Func_Id := Predicate_Function (Typ);
        pragma Assert (Present (Func_Id));
*************** package body Exp_Util is
*** 9781,9792 ****
  
        Set_Ghost_Mode (Typ);
  
-       --  Call special membership version if requested and available
- 
-       if Mem and then Present (Predicate_Function_M (Typ)) then
-          Func_Id := Predicate_Function_M (Typ);
-       end if;
- 
        --  Case of calling normal predicate function
  
        --  If the type is tagged, the expression may be class-wide, in which
--- 9877,9882 ----
*************** package body Exp_Util is
*** 9796,9813 ****
        --  extensions are involved.
  
        if Is_Tagged_Type (Typ) then
!          Call :=
!            Make_Function_Call (Loc,
!              Name                   => New_Occurrence_Of (Func_Id, Loc),
!              Parameter_Associations =>
!                New_List (OK_Convert_To (Typ, Relocate_Node (Expr))));
        else
!          Call :=
!            Make_Function_Call (Loc,
!              Name                   => New_Occurrence_Of (Func_Id, Loc),
!              Parameter_Associations => New_List (Relocate_Node (Expr)));
        end if;
  
        Restore_Ghost_Region (Saved_GM, Saved_IGR);
  
        return Call;
--- 9886,9911 ----
        --  extensions are involved.
  
        if Is_Tagged_Type (Typ) then
!          Param_Assocs := New_List (OK_Convert_To (Typ, Relocate_Node (Expr)));
        else
!          Param_Assocs := New_List (Relocate_Node (Expr));
        end if;
  
+       if Predicate_Function_Needs_Membership_Parameter (Typ) then
+          --  Pass in parameter indicating whether this call is for a
+          --  membership test.
+          Append ((if Present (Dynamic_Mem)
+                     then Dynamic_Mem
+                     else New_Occurrence_Of
+                            (Boolean_Literals (Static_Mem), Loc)),
+                  Param_Assocs);
+       end if;
+ 
+       Call :=
+         Make_Function_Call (Loc,
+           Name                   => New_Occurrence_Of (Func_Id, Loc),
+           Parameter_Associations => Param_Assocs);
+ 
        Restore_Ghost_Region (Saved_GM, Saved_IGR);
  
        return Call;
*************** package body Exp_Util is
*** 9823,9983 ****
     is
        Loc : constant Source_Ptr := Sloc (Expr);
  
-       procedure Add_Failure_Expression (Args : List_Id);
-       --  Add the failure expression of pragma Predicate_Failure (if any) to
-       --  list Args.
- 
-       ----------------------------
-       -- Add_Failure_Expression --
-       ----------------------------
- 
-       procedure Add_Failure_Expression (Args : List_Id) is
-          function Failure_Expression return Node_Id;
-          pragma Inline (Failure_Expression);
-          --  Find aspect or pragma Predicate_Failure that applies to type Typ
-          --  and return its expression. Return Empty if no such annotation is
-          --  available.
- 
-          function Is_OK_PF_Aspect (Asp : Node_Id) return Boolean;
-          pragma Inline (Is_OK_PF_Aspect);
-          --  Determine whether aspect Asp is a suitable Predicate_Failure
-          --  aspect that applies to type Typ.
- 
-          function Is_OK_PF_Pragma (Prag : Node_Id) return Boolean;
-          pragma Inline (Is_OK_PF_Pragma);
-          --  Determine whether pragma Prag is a suitable Predicate_Failure
-          --  pragma that applies to type Typ.
- 
-          procedure Replace_Subtype_Reference (N : Node_Id);
-          --  Replace the current instance of type Typ denoted by N with
-          --  expression Expr.
- 
-          ------------------------
-          -- Failure_Expression --
-          ------------------------
- 
-          function Failure_Expression return Node_Id is
-             Item : Node_Id;
- 
-          begin
-             --  The management of the rep item chain involves "inheritance" of
-             --  parent type chains. If a parent [sub]type is already subject to
-             --  pragma Predicate_Failure, then the pragma will also appear in
-             --  the chain of the child [sub]type, which in turn may possess a
-             --  pragma of its own. Avoid order-dependent issues by inspecting
-             --  the rep item chain directly. Note that routine Get_Pragma may
-             --  return a parent pragma.
- 
-             Item := First_Rep_Item (Typ);
-             while Present (Item) loop
- 
-                --  Predicate_Failure appears as an aspect
- 
-                if Nkind (Item) = N_Aspect_Specification
-                  and then Is_OK_PF_Aspect (Item)
-                then
-                   return Expression (Item);
- 
-                --  Predicate_Failure appears as a pragma
- 
-                elsif Nkind (Item) = N_Pragma
-                  and then Is_OK_PF_Pragma (Item)
-                then
-                   return
-                     Get_Pragma_Arg
-                       (Next (First (Pragma_Argument_Associations (Item))));
-                end if;
- 
-                Next_Rep_Item (Item);
-             end loop;
- 
-             return Empty;
-          end Failure_Expression;
- 
-          ---------------------
-          -- Is_OK_PF_Aspect --
-          ---------------------
- 
-          function Is_OK_PF_Aspect (Asp : Node_Id) return Boolean is
-          begin
-             --  To qualify, the aspect must apply to the type subjected to the
-             --  predicate check.
- 
-             return
-               Chars (Identifier (Asp)) = Name_Predicate_Failure
-                 and then Present (Entity (Asp))
-                 and then Entity (Asp) = Typ;
-          end Is_OK_PF_Aspect;
- 
-          ---------------------
-          -- Is_OK_PF_Pragma --
-          ---------------------
- 
-          function Is_OK_PF_Pragma (Prag : Node_Id) return Boolean is
-             Args    : constant List_Id := Pragma_Argument_Associations (Prag);
-             Typ_Arg : Node_Id;
- 
-          begin
-             --  Nothing to do when the pragma does not denote Predicate_Failure
- 
-             if Pragma_Name (Prag) /= Name_Predicate_Failure then
-                return False;
- 
-             --  Nothing to do when the pragma lacks arguments, in which case it
-             --  is illegal.
- 
-             elsif Is_Empty_List (Args) then
-                return False;
-             end if;
- 
-             Typ_Arg := Get_Pragma_Arg (First (Args));
- 
-             --  To qualify, the local name argument of the pragma must denote
-             --  the type subjected to the predicate check.
- 
-             return
-               Is_Entity_Name (Typ_Arg)
-                 and then Present (Entity (Typ_Arg))
-                 and then Entity (Typ_Arg) = Typ;
-          end Is_OK_PF_Pragma;
- 
-          --------------------------------
-          --  Replace_Subtype_Reference --
-          --------------------------------
- 
-          procedure Replace_Subtype_Reference (N : Node_Id) is
-          begin
-             Rewrite (N, New_Copy_Tree (Expr));
-          end Replace_Subtype_Reference;
- 
-          procedure Replace_Subtype_References is
-            new Replace_Type_References_Generic (Replace_Subtype_Reference);
- 
-          --  Local variables
- 
-          PF_Expr : constant Node_Id := Failure_Expression;
-          Expr    : Node_Id;
- 
-       --  Start of processing for Add_Failure_Expression
- 
-       begin
-          if Present (PF_Expr) then
- 
-             --  Replace any occurrences of the current instance of the type
-             --  with the object subjected to the predicate check.
- 
-             Expr := New_Copy_Tree (PF_Expr);
-             Replace_Subtype_References (Expr, Typ);
- 
-             --  The failure expression appears as the third argument of the
-             --  Check pragma.
- 
-             Append_To (Args,
-               Make_Pragma_Argument_Association (Loc,
-                 Expression => Expr));
-          end if;
-       end Add_Failure_Expression;
- 
        --  Local variables
  
        Args : List_Id;
--- 9921,9926 ----
*************** package body Exp_Util is
*** 10020,10027 ****
        --  If the subtype is subject to pragma Predicate_Failure, add the
        --  failure expression as an additional parameter.
  
-       Add_Failure_Expression (Args);
- 
        return
          Make_Pragma (Loc,
            Chars                        => Name_Check,
--- 9963,9968 ----
*************** package body Exp_Util is
*** 10177,10184 ****
  
        elsif Is_Class_Wide_Type (Unc_Typ) then
           declare
!             CW_Subtype : Entity_Id;
!             EQ_Typ     : Entity_Id := Empty;
  
           begin
              --  A class-wide equivalent type is not needed on VM targets
--- 10118,10125 ----
  
        elsif Is_Class_Wide_Type (Unc_Typ) then
           declare
!             CW_Subtype : constant Entity_Id :=
!                            New_Class_Wide_Subtype (Unc_Typ, E);
  
           begin
              --  A class-wide equivalent type is not needed on VM targets
*************** package body Exp_Util is
*** 10201,10211 ****
                    Set_Etype (Unc_Typ, Base_Type (Full_View (Etype (Unc_Typ))));
                 end if;
  
!                EQ_Typ := Make_CW_Equivalent_Type (Unc_Typ, E);
              end if;
  
-             CW_Subtype := New_Class_Wide_Subtype (Unc_Typ, E);
-             Set_Equivalent_Type (CW_Subtype, EQ_Typ);
              Set_Cloned_Subtype (CW_Subtype, Base_Type (Unc_Typ));
  
              return New_Occurrence_Of (CW_Subtype, Loc);
--- 10142,10151 ----
                    Set_Etype (Unc_Typ, Base_Type (Full_View (Etype (Unc_Typ))));
                 end if;
  
!                Set_Equivalent_Type
!                  (CW_Subtype, Make_CW_Equivalent_Type (Unc_Typ, E));
              end if;
  
              Set_Cloned_Subtype (CW_Subtype, Base_Type (Unc_Typ));
  
              return New_Occurrence_Of (CW_Subtype, Loc);
*************** package body Exp_Util is
*** 10239,10253 ****
  
     function Make_Variant_Comparison
       (Loc      : Source_Ptr;
        Mode     : Name_Id;
        Curr_Val : Node_Id;
        Old_Val  : Node_Id) return Node_Id
     is
     begin
        if Mode = Name_Increases then
           return Make_Op_Gt (Loc, Curr_Val, Old_Val);
        else pragma Assert (Mode = Name_Decreases);
!          return Make_Op_Lt (Loc, Curr_Val, Old_Val);
        end if;
     end Make_Variant_Comparison;
  
--- 10179,10239 ----
  
     function Make_Variant_Comparison
       (Loc      : Source_Ptr;
+       Typ      : Entity_Id;
        Mode     : Name_Id;
        Curr_Val : Node_Id;
        Old_Val  : Node_Id) return Node_Id
     is
+       function Big_Integer_Lt return Entity_Id;
+       --  Returns the entity of the predefined "<" function from
+       --  Ada.Numerics.Big_Numbers.Big_Integers.
+ 
+       --------------------
+       -- Big_Integer_Lt --
+       --------------------
+ 
+       function Big_Integer_Lt return Entity_Id is
+          Big_Integers : constant Entity_Id :=
+            RTU_Entity (Ada_Numerics_Big_Numbers_Big_Integers);
+ 
+          E : Entity_Id := First_Entity (Big_Integers);
+ 
+       begin
+          while Present (E) loop
+             if Chars (E) = Name_Op_Lt then
+                return E;
+             end if;
+             Next_Entity (E);
+          end loop;
+ 
+          raise Program_Error;
+       end Big_Integer_Lt;
+ 
+    --  Start of processing for Make_Variant_Comparison
+ 
     begin
        if Mode = Name_Increases then
           return Make_Op_Gt (Loc, Curr_Val, Old_Val);
+ 
        else pragma Assert (Mode = Name_Decreases);
! 
!          --  For discrete expressions use the "<" operator
! 
!          if Is_Discrete_Type (Typ) then
!             return Make_Op_Lt (Loc, Curr_Val, Old_Val);
! 
!          --  For Big_Integer expressions use the "<" function, because the
!          --  operator on private type might not be visible and won't be
!          --  resolved.
! 
!          else pragma Assert (Is_RTE (Base_Type (Typ), RE_Big_Integer));
!             return
!               Make_Function_Call (Loc,
!                 Name                   =>
!                   New_Occurrence_Of (Big_Integer_Lt, Loc),
!                 Parameter_Associations =>
!                   New_List (Curr_Val, Old_Val));
!          end if;
        end if;
     end Make_Variant_Comparison;
  
*************** package body Exp_Util is
*** 11289,11295 ****
           --  Create a label for the block in case the block needs to manage the
           --  secondary stack. A label allows for flag Uses_Sec_Stack to be set.
  
!          Add_Block_Identifier (Block_Nod, Block_Id);
  
           --  When wrapping the statements of an iterator loop, check whether
           --  the loop requires secondary stack management and if so, propagate
--- 11275,11281 ----
           --  Create a label for the block in case the block needs to manage the
           --  secondary stack. A label allows for flag Uses_Sec_Stack to be set.
  
!          Add_Block_Identifier (Block_Nod, Block_Id, Scop);
  
           --  When wrapping the statements of an iterator loop, check whether
           --  the loop requires secondary stack management and if so, propagate
*************** package body Exp_Util is
*** 11899,11905 ****
        elsif Nkind (Exp) = N_Unchecked_Type_Conversion
          and then not Safe_Unchecked_Type_Conversion (Exp)
        then
!          if CW_Or_Has_Controlled_Part (Exp_Type) then
  
              --  Use a renaming to capture the expression, rather than create
              --  a controlled temporary.
--- 11885,11891 ----
        elsif Nkind (Exp) = N_Unchecked_Type_Conversion
          and then not Safe_Unchecked_Type_Conversion (Exp)
        then
!          if CW_Or_Needs_Finalization (Exp_Type) then
  
              --  Use a renaming to capture the expression, rather than create
              --  a controlled temporary.
*************** package body Exp_Util is
*** 11935,11965 ****
        --  renaming is handled by the front end, as the back end may balk at
        --  the nonstandard representation (see Evaluation_Required in Exp_Ch8).
  
!       elsif Nkind (Exp) in N_Indexed_Component | N_Selected_Component
!         and then Has_Non_Standard_Rep (Etype (Prefix (Exp)))
!       then
!          Def_Id := Build_Temporary (Loc, 'R', Exp);
!          Res := New_Occurrence_Of (Def_Id, Loc);
! 
!          Insert_Action (Exp,
!            Make_Object_Renaming_Declaration (Loc,
!              Defining_Identifier => Def_Id,
!              Subtype_Mark        => New_Occurrence_Of (Exp_Type, Loc),
!              Name                => Relocate_Node (Exp)));
  
!       --  For an expression that denotes a name, we can use a renaming scheme.
!       --  This is needed for correctness in the case of a volatile object of
!       --  a nonvolatile type because the Make_Reference call of the "default"
!       --  approach would generate an illegal access value (an access value
!       --  cannot designate such an object - see Analyze_Reference).
  
!       elsif Is_Name_Reference (Exp)
  
!         --  We skip using this scheme if we have an object of a volatile
!         --  type and we do not have Name_Req set true (see comments for
!         --  Side_Effect_Free).
  
!         and then (Name_Req or else not Treat_As_Volatile (Exp_Type))
        then
           Def_Id := Build_Temporary (Loc, 'R', Exp);
           Res := New_Occurrence_Of (Def_Id, Loc);
--- 11921,11943 ----
        --  renaming is handled by the front end, as the back end may balk at
        --  the nonstandard representation (see Evaluation_Required in Exp_Ch8).
  
!       elsif (Nkind (Exp) in N_Indexed_Component | N_Selected_Component
!               and then Has_Non_Standard_Rep (Etype (Prefix (Exp))))
  
!         --  For an expression that denotes a name, we can use a renaming
!         --  scheme. This is needed for correctness in the case of a volatile
!         --  object of a nonvolatile type because the Make_Reference call of the
!         --  "default" approach would generate an illegal access value (an
!         --  access value cannot designate such an object - see
!         --  Analyze_Reference).
  
!         or else (Is_Name_Reference (Exp)
  
!           --  We skip using this scheme if we have an object of a volatile
!           --  type and we do not have Name_Req set true (see comments for
!           --  Side_Effect_Free).
  
!           and then (Name_Req or else not Treat_As_Volatile (Exp_Type)))
        then
           Def_Id := Build_Temporary (Loc, 'R', Exp);
           Res := New_Occurrence_Of (Def_Id, Loc);
*************** package body Exp_Util is
*** 12572,12578 ****
              | N_Block_Statement
              | N_Entry_Body
              | N_Package_Body
-             | N_Protected_Body
              | N_Subprogram_Body
              | N_Task_Body
           =>
--- 12550,12555 ----
*************** package body Exp_Util is
*** 12701,12716 ****
              --  The object is of the form:
              --    Obj : [constant] Typ [:= Expr];
              --
!             --  Do not process tag-to-class-wide conversions because they do
!             --  not yield an object. Do not process the incomplete view of a
!             --  deferred constant. Note that an object initialized by means
!             --  of a build-in-place function call may appear as a deferred
!             --  constant after expansion activities. These kinds of objects
!             --  must be finalized.
  
              elsif not Is_Imported (Obj_Id)
                and then Needs_Finalization (Obj_Typ)
-               and then not Is_Tag_To_Class_Wide_Conversion (Obj_Id)
                and then not (Ekind (Obj_Id) = E_Constant
                               and then not Has_Completion (Obj_Id)
                               and then No (BIP_Initialization_Call (Obj_Id)))
--- 12678,12690 ----
              --  The object is of the form:
              --    Obj : [constant] Typ [:= Expr];
              --
!             --  Do not process the incomplete view of a deferred constant.
!             --  Note that an object initialized by means of a BIP function
!             --  call may appear as a deferred constant after expansion
!             --  activities. These kinds of objects must be finalized.
  
              elsif not Is_Imported (Obj_Id)
                and then Needs_Finalization (Obj_Typ)
                and then not (Ekind (Obj_Id) = E_Constant
                               and then not Has_Completion (Obj_Id)
                               and then No (BIP_Initialization_Call (Obj_Id)))
*************** package body Exp_Util is
*** 12796,12815 ****
                and then Present (Status_Flag_Or_Transient_Decl (Obj_Id))
              then
                 return True;
- 
-             --  Detect a case where a source object has been initialized by
-             --  a controlled function call or another object which was later
-             --  rewritten as a class-wide conversion of Ada.Tags.Displace.
- 
-             --     Obj1 : CW_Type := Src_Obj;
-             --     Obj2 : CW_Type := Function_Call (...);
- 
-             --     Obj1 : CW_Type renames (... Ada.Tags.Displace (Src_Obj));
-             --     Tmp  : ... := Function_Call (...)'reference;
-             --     Obj2 : CW_Type renames (... Ada.Tags.Displace (Tmp));
- 
-             elsif Is_Displacement_Of_Object_Or_Function_Result (Obj_Id) then
-                return True;
              end if;
  
           --  Inspect the freeze node of an access-to-controlled type and look
--- 12770,12775 ----
*************** package body Exp_Util is
*** 13949,13955 ****
     function Small_Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id
     is
     begin
!       pragma Assert (S <= System_Max_Integer_Size);
  
        if S <= Standard_Short_Short_Integer_Size then
           if Uns then
--- 13909,13916 ----
     function Small_Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id
     is
     begin
!       --  The only difference between this and Integer_Type_For is that this
!       --  can return small (8- or 16-bit) types.
  
        if S <= Standard_Short_Short_Integer_Size then
           if Uns then
*************** package body Exp_Util is
*** 13965,14002 ****
              return Standard_Short_Integer;
           end if;
  
!       elsif S <= Standard_Integer_Size then
!          if Uns then
!             return Standard_Unsigned;
!          else
!             return Standard_Integer;
!          end if;
  
!       elsif S <= Standard_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Unsigned;
!          else
!             return Standard_Long_Integer;
!          end if;
  
!       elsif S <= Standard_Long_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Long_Unsigned;
!          else
!             return Standard_Long_Long_Integer;
!          end if;
  
!       elsif S <= Standard_Long_Long_Long_Integer_Size then
!          if Uns then
!             return Standard_Long_Long_Long_Unsigned;
!          else
!             return Standard_Long_Long_Long_Integer;
!          end if;
  
!       else
!          raise Program_Error;
!       end if;
!    end Small_Integer_Type_For;
  
     -------------------
     -- Type_Map_Hash --
--- 13926,13952 ----
              return Standard_Short_Integer;
           end if;
  
!       else
!          return Integer_Type_For (S, Uns);
!       end if;
!    end Small_Integer_Type_For;
  
!    ------------------
!    -- Thunk_Target --
!    ------------------
  
!    function Thunk_Target (Thunk : Entity_Id) return Entity_Id is
!       Target : Entity_Id := Thunk;
  
!    begin
!       pragma Assert (Is_Thunk (Thunk));
  
!       while Is_Thunk (Target) loop
!          Target := Thunk_Entity (Target);
!       end loop;
! 
!       return Target;
!    end Thunk_Target;
  
     -------------------
     -- Type_Map_Hash --
*************** package body Exp_Util is
*** 14126,14132 ****
  
           elsif Get_TSS_Name (S) /= TSS_Null
             and then not Is_Predicate_Function (S)
-            and then not Is_Predicate_Function_M (S)
           then
              return False;
           end if;
--- 14076,14081 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/exp_util.ads gcc-13.1.0/gcc/ada/exp_util.ads
*** gcc-12.2.0/gcc/ada/exp_util.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/exp_util.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Exp_Util is
*** 509,519 ****
     --  used to ensure that an Itype is properly defined outside a conditional
     --  construct when it is referenced in more than one branch.
  
-    function Entry_Names_OK return Boolean;
-    --  Determine whether it is appropriate to dynamically allocate strings
-    --  which represent entry [family member] names. These strings are created
-    --  by the compiler and used by GDB.
- 
     procedure Evaluate_Name (Nam : Node_Id);
     --  Remove all side effects from a name which appears as part of an object
     --  renaming declaration. Similarly to Force_Evaluation, it removes the
--- 509,514 ----
*************** package Exp_Util is
*** 623,630 ****
     --  specifies aspect Storage_Model_Type, returns the Entity_Id of the
     --  subprogram associated with Nam, which must either be a primitive op of
     --  the type in the case of a storage pool, or the operation corresponding
!    --  to Nam as specified in the aspect Storage_Model_Type. It is an error if
!    --  no operation corresponding to the given name is found.
  
     function Find_Hook_Context (N : Node_Id) return Node_Id;
     --  Determine a suitable node on which to attach actions related to N that
--- 618,627 ----
     --  specifies aspect Storage_Model_Type, returns the Entity_Id of the
     --  subprogram associated with Nam, which must either be a primitive op of
     --  the type in the case of a storage pool, or the operation corresponding
!    --  to Nam as specified in the aspect Storage_Model_Type. In the case of
!    --  aspect Storage_Model_Type, returns Empty when no operation is found,
!    --  indicating that the operation is defaulted in the aspect (can occur in
!    --  the case where the storage-model address type is System.Address).
  
     function Find_Hook_Context (N : Node_Id) return Node_Id;
     --  Determine a suitable node on which to attach actions related to N that
*************** package Exp_Util is
*** 735,740 ****
--- 732,741 ----
     function Has_Access_Constraint (E : Entity_Id) return Boolean;
     --  Given object or type E, determine if a discriminant is of an access type
  
+    function Has_Tag_Of_Type (Exp : Node_Id) return Boolean;
+    --  Return True if expression Exp of a tagged type is known to statically
+    --  have the tag of this tagged type as specified by RM 3.9(19-25).
+ 
     function Homonym_Number (Subp : Entity_Id) return Pos;
     --  Here subp is the entity for a subprogram. This routine returns the
     --  homonym number used to disambiguate overloaded subprograms in the same
*************** package Exp_Util is
*** 758,771 ****
  
     function Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id;
     --  Return a suitable standard integer type containing at least S bits and
!    --  of the signedness given by Uns.
  
!    function Is_Displacement_Of_Object_Or_Function_Result
!      (Obj_Id : Entity_Id) return Boolean;
!    --  Determine whether Obj_Id is a source entity that has been initialized by
!    --  either a controlled function call or the assignment of another source
!    --  object. In both cases the initialization expression is rewritten as a
!    --  class-wide conversion of Ada.Tags.Displace.
  
     function Is_Finalizable_Transient
       (Decl     : Node_Id;
--- 759,773 ----
  
     function Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id;
     --  Return a suitable standard integer type containing at least S bits and
!    --  of the signedness given by Uns. See also Small_Integer_Type_For.
  
!    function Is_Captured_Function_Call (N : Node_Id) return Boolean;
!    --  Return True if N is a captured function call, i.e. the result of calling
!    --  Remove_Side_Effects on an N_Function_Call node:
! 
!    --    type Ann is access all Typ;
!    --    Rnn : constant Ann := Func (...)'reference;
!    --    Rnn.all
  
     function Is_Finalizable_Transient
       (Decl     : Node_Id;
*************** package Exp_Util is
*** 820,825 ****
--- 822,833 ----
     --  Determine whether object Id is related to an expanded return statement.
     --  The case concerned is "return Id.all;".
  
+    --  This is effectively used to determine which temporaries generated for
+    --  return statements must be finalized because they are regular temporaries
+    --  and which ones must not be since they are allocated on the return stack.
+ 
+    --  WARNING: There is a matching C declaration of this subprogram in fe.h
+ 
     function Is_Renamed_Object (N : Node_Id) return Boolean;
     --  Returns True if the node N is a renamed object. An expression is
     --  considered to be a renamed object if either it is the Name of an object
*************** package Exp_Util is
*** 835,844 ****
     --  Determine whether Expr denotes a build-in-place function which returns
     --  its result on the secondary stack.
  
!    function Is_Tag_To_Class_Wide_Conversion
!      (Obj_Id : Entity_Id) return Boolean;
!    --  Determine whether object Obj_Id is the result of a tag-to-class-wide
!    --  type conversion.
  
     function Is_Untagged_Derivation (T : Entity_Id) return Boolean;
     --  Returns true if type T is not tagged and is a derived type,
--- 843,852 ----
     --  Determine whether Expr denotes a build-in-place function which returns
     --  its result on the secondary stack.
  
!    function Is_Secondary_Stack_Thunk (Id : Entity_Id) return Boolean;
!    --  Determine whether Id denotes a secondary stack thunk
! 
!    --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
     function Is_Untagged_Derivation (T : Entity_Id) return Boolean;
     --  Returns true if type T is not tagged and is a derived type,
*************** package Exp_Util is
*** 874,886 ****
     --  expression Expr. Expr is passed as an actual parameter in the call.
  
     function Make_Predicate_Call
!      (Typ  : Entity_Id;
!       Expr : Node_Id;
!       Mem  : Boolean := False) return Node_Id;
     --  Typ is a type with Predicate_Function set. This routine builds a call to
     --  this function passing Expr as the argument, and returns it unanalyzed.
!    --  If Mem is set True, this is the special call for the membership case,
!    --  and the function called is the Predicate_Function_M if present.
  
     function Make_Predicate_Check
       (Typ  : Entity_Id;
--- 882,900 ----
     --  expression Expr. Expr is passed as an actual parameter in the call.
  
     function Make_Predicate_Call
!      (Typ         : Entity_Id;
!       Expr        : Node_Id;
!       Static_Mem  : Boolean := False;
!       Dynamic_Mem : Node_Id := Empty) return Node_Id;
     --  Typ is a type with Predicate_Function set. This routine builds a call to
     --  this function passing Expr as the argument, and returns it unanalyzed.
!    --  If the callee takes a second parameter (as determined by
!    --  Sem_Util.Predicate_Function_Needs_Membership_Parameter), then the
!    --  actual parameter is determined by the two Mem parameters.
!    --  If Dynamic_Mem is nonempty, then Dynamic_Mem is the actual parameter.
!    --  Otherwise, the value of the Static_Mem parameter is passed in as
!    --  a Boolean literal. It is an error if Dynamic_Mem is nonempty but
!    --  the callee does not take a second parameter.
  
     function Make_Predicate_Check
       (Typ  : Entity_Id;
*************** package Exp_Util is
*** 901,912 ****
  
     function Make_Variant_Comparison
       (Loc      : Source_Ptr;
        Mode     : Name_Id;
        Curr_Val : Node_Id;
        Old_Val  : Node_Id) return Node_Id;
     --  Subsidiary to the expansion of pragmas Loop_Variant and
     --  Subprogram_Variant. Generate a comparison between Curr_Val and Old_Val
!    --  depending on the variant mode (Increases / Decreases).
  
     procedure Map_Formals
       (Parent_Subp  : Entity_Id;
--- 915,928 ----
  
     function Make_Variant_Comparison
       (Loc      : Source_Ptr;
+       Typ      : Entity_Id;
        Mode     : Name_Id;
        Curr_Val : Node_Id;
        Old_Val  : Node_Id) return Node_Id;
     --  Subsidiary to the expansion of pragmas Loop_Variant and
     --  Subprogram_Variant. Generate a comparison between Curr_Val and Old_Val
!    --  depending on the variant mode (Increases / Decreases) using less or
!    --  greater operator for Typ.
  
     procedure Map_Formals
       (Parent_Subp  : Entity_Id;
*************** package Exp_Util is
*** 1103,1110 ****
     --    1) controlled objects
     --    2) library-level tagged types
     --
!    --  These cases require special actions on scope exit. The flag Lib_Level
!    --  is set True if the construct is at library level, and False otherwise.
  
     function Safe_Unchecked_Type_Conversion (Exp : Node_Id) return Boolean;
     --  Given the node for an N_Unchecked_Type_Conversion, return True if this
--- 1119,1126 ----
     --    1) controlled objects
     --    2) library-level tagged types
     --
!    --  These cases require special actions on scope exit. Lib_Level is True if
!    --  the construct is at library level, and False otherwise.
  
     function Safe_Unchecked_Type_Conversion (Exp : Node_Id) return Boolean;
     --  Given the node for an N_Unchecked_Type_Conversion, return True if this
*************** package Exp_Util is
*** 1178,1184 ****
  
     function Small_Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id;
     --  Return the smallest standard integer type containing at least S bits and
!    --  of the signedness given by Uns.
  
     function Type_May_Have_Bit_Aligned_Components
       (Typ : Entity_Id) return Boolean;
--- 1194,1206 ----
  
     function Small_Integer_Type_For (S : Uint; Uns : Boolean) return Entity_Id;
     --  Return the smallest standard integer type containing at least S bits and
!    --  of the signedness given by Uns. See also Integer_Type_For.
! 
!    function Thunk_Target (Thunk : Entity_Id) return Entity_Id;
!    --  Return the entity ultimately called by the thunk, that is to say return
!    --  the Thunk_Entity of the last member on the thunk chain.
! 
!    --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
     function Type_May_Have_Bit_Aligned_Components
       (Typ : Entity_Id) return Boolean;
*************** private
*** 1206,1209 ****
--- 1228,1233 ----
     pragma Inline (Force_Evaluation);
     pragma Inline (Get_Mapped_Entity);
     pragma Inline (Is_Library_Level_Tagged_Type);
+    pragma Inline (Is_Secondary_Stack_Thunk);
+    pragma Inline (Thunk_Target);
  end Exp_Util;
diff -Nrcpad gcc-12.2.0/gcc/ada/expander.adb gcc-13.1.0/gcc/ada/expander.adb
*** gcc-12.2.0/gcc/ada/expander.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/expander.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Expander is
*** 515,520 ****
--- 515,523 ----
                 when N_Variant_Part =>
                    Expand_N_Variant_Part (N);
  
+                when N_Interpolated_String_Literal =>
+                   Expand_N_Interpolated_String_Literal (N);
+ 
                 --  For all other node kinds, no expansion activity required
  
                 when others =>
diff -Nrcpad gcc-12.2.0/gcc/ada/expander.ads gcc-13.1.0/gcc/ada/expander.ads
*** gcc-12.2.0/gcc/ada/expander.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/expander.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/expect.c gcc-13.1.0/gcc/ada/expect.c
*** gcc-12.2.0/gcc/ada/expect.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/expect.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2001-2022, 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- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2001-2023, 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- *
***************
*** 42,58 ****
  #include "adaint.h"
  #include <sys/types.h>
  
! #ifdef __MINGW32__
! # if OLD_MINGW
! #  include <sys/wait.h>
! # endif
! #elif defined (__vxworks) && defined (__RTP__)
  # include <wait.h>
  #elif defined (__Lynx__)
    /* ??? See comment in adaint.c.  */
  # define GCC_RESOURCE_H
  # include <sys/wait.h>
! #elif defined (__PikeOS__)
    /* No wait.h available */
  #else
  #include <sys/wait.h>
--- 42,54 ----
  #include "adaint.h"
  #include <sys/types.h>
  
! #if defined (__vxworks) && defined (__RTP__)
  # include <wait.h>
  #elif defined (__Lynx__)
    /* ??? See comment in adaint.c.  */
  # define GCC_RESOURCE_H
  # include <sys/wait.h>
! #elif defined (__PikeOS__) || defined (__MINGW32__)
    /* No wait.h available */
  #else
  #include <sys/wait.h>
***************
*** 75,80 ****
--- 71,77 ----
  
  #ifdef _WIN32
  
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #include <process.h>
  #include <signal.h>
diff -Nrcpad gcc-12.2.0/gcc/ada/fe.h gcc-13.1.0/gcc/ada/fe.h
*** gcc-12.2.0/gcc/ada/fe.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fe.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern Boolean Is_Init_Proc		(Entity_Id)
*** 182,192 ****
  
  /* exp_util: */
  
- #define Is_Fully_Repped_Tagged_Type	exp_util__is_fully_repped_tagged_type
  #define Find_Interface_Tag		exp_util__find_interface_tag
  
- extern Boolean Is_Fully_Repped_Tagged_Type      (Entity_Id);
  extern Entity_Id Find_Interface_Tag		(Entity_Id, Entity_Id);
  
  /* lib: */
  
--- 182,198 ----
  
  /* exp_util: */
  
  #define Find_Interface_Tag		exp_util__find_interface_tag
+ #define Is_Fully_Repped_Tagged_Type	exp_util__is_fully_repped_tagged_type
+ #define Is_Related_To_Func_Return	exp_util__is_related_to_func_return
+ #define Is_Secondary_Stack_Thunk	exp_util__is_secondary_stack_thunk
+ #define Thunk_Target			exp_util__thunk_target
  
  extern Entity_Id Find_Interface_Tag		(Entity_Id, Entity_Id);
+ extern Boolean Is_Fully_Repped_Tagged_Type	(Entity_Id);
+ extern Boolean Is_Related_To_Func_Return	(Entity_Id);
+ extern Boolean Is_Secondary_Stack_Thunk		(Entity_Id);
+ extern Entity_Id Thunk_Target 			(Entity_Id);
  
  /* lib: */
  
*************** extern Boolean In_Extended_Main_Code_Uni
*** 201,250 ****
  /* opt: */
  
  #define Ada_Version			opt__ada_version
- #define Assume_No_Invalid_Values	opt__assume_no_invalid_values
  #define Back_End_Inlining		opt__back_end_inlining
  #define Debug_Generated_Code		opt__debug_generated_code
  #define Enable_128bit_Types		opt__enable_128bit_types
  #define Exception_Extra_Info		opt__exception_extra_info
  #define Exception_Locations_Suppressed	opt__exception_locations_suppressed
- #define Exception_Mechanism		opt__exception_mechanism
  #define Generate_SCO_Instance_Table	opt__generate_sco_instance_table
  #define GNAT_Mode			opt__gnat_mode
  #define List_Representation_Info	opt__list_representation_info
  #define No_Strict_Aliasing_CP		opt__no_strict_aliasing
  #define Suppress_Checks			opt__suppress_checks
  
  typedef enum {
    Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2022, Ada_With_Extensions
  } Ada_Version_Type;
  
- typedef enum {
-   Front_End_SJLJ, Back_End_ZCX, Back_End_SJLJ
- } Exception_Mechanism_Type;
- 
  extern Ada_Version_Type Ada_Version;
- extern Boolean Assume_No_Invalid_Values;
  extern Boolean Back_End_Inlining;
  extern Boolean Debug_Generated_Code;
  extern Boolean Enable_128bit_Types;
  extern Boolean Exception_Extra_Info;
  extern Boolean Exception_Locations_Suppressed;
- extern Exception_Mechanism_Type Exception_Mechanism;
  extern Boolean Generate_SCO_Instance_Table;
  extern Boolean GNAT_Mode;
  extern Int List_Representation_Info;
  extern Boolean No_Strict_Aliasing_CP;
  extern Boolean Suppress_Checks;
  
  #define ZCX_Exceptions		opt__zcx_exceptions
  #define SJLJ_Exceptions		opt__sjlj_exceptions
- #define Front_End_Exceptions	opt__front_end_exceptions
- #define Back_End_Exceptions	opt__back_end_exceptions
  
  extern Boolean ZCX_Exceptions		(void);
  extern Boolean SJLJ_Exceptions		(void);
- extern Boolean Front_End_Exceptions	(void);
- extern Boolean Back_End_Exceptions	(void);
  
  /* restrict: */
  
--- 207,246 ----
  /* opt: */
  
  #define Ada_Version			opt__ada_version
  #define Back_End_Inlining		opt__back_end_inlining
  #define Debug_Generated_Code		opt__debug_generated_code
  #define Enable_128bit_Types		opt__enable_128bit_types
  #define Exception_Extra_Info		opt__exception_extra_info
  #define Exception_Locations_Suppressed	opt__exception_locations_suppressed
  #define Generate_SCO_Instance_Table	opt__generate_sco_instance_table
  #define GNAT_Mode			opt__gnat_mode
  #define List_Representation_Info	opt__list_representation_info
  #define No_Strict_Aliasing_CP		opt__no_strict_aliasing
  #define Suppress_Checks			opt__suppress_checks
+ #define Unnest_Subprogram_Mode		opt__unnest_subprogram_mode
  
  typedef enum {
    Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2022, Ada_With_Extensions
  } Ada_Version_Type;
  
  extern Ada_Version_Type Ada_Version;
  extern Boolean Back_End_Inlining;
  extern Boolean Debug_Generated_Code;
  extern Boolean Enable_128bit_Types;
  extern Boolean Exception_Extra_Info;
  extern Boolean Exception_Locations_Suppressed;
  extern Boolean Generate_SCO_Instance_Table;
  extern Boolean GNAT_Mode;
  extern Int List_Representation_Info;
  extern Boolean No_Strict_Aliasing_CP;
  extern Boolean Suppress_Checks;
+ extern Boolean Unnest_Subprogram_Mode;
  
  #define ZCX_Exceptions		opt__zcx_exceptions
  #define SJLJ_Exceptions		opt__sjlj_exceptions
  
  extern Boolean ZCX_Exceptions		(void);
  extern Boolean SJLJ_Exceptions		(void);
  
  /* restrict: */
  
*************** extern Boolean Back_End_Exceptions	(void
*** 258,263 ****
--- 254,261 ----
    restrict__check_no_implicit_protected_alloc
  #define Check_No_Implicit_Task_Alloc	\
    restrict__check_no_implicit_task_alloc
+ #define Check_Restriction_No_Dependence_On_System \
+   restrict__check_restriction_no_dependence_on_system
  #define No_Exception_Handlers_Set	\
    restrict__no_exception_handlers_set
  #define No_Exception_Propagation_Active	\
*************** extern void Check_Implicit_Dynamic_Code_
*** 268,273 ****
--- 266,272 ----
  extern void Check_No_Implicit_Heap_Alloc	(Node_Id);
  extern void Check_No_Implicit_Protected_Alloc	(Node_Id);
  extern void Check_No_Implicit_Task_Alloc	(Node_Id);
+ extern void Check_Restriction_No_Dependence_On_System (Name_Id, Node_Id);
  extern Boolean No_Exception_Handlers_Set	(void);
  extern Boolean No_Exception_Propagation_Active	(void);
  
*************** extern Boolean Compile_Time_Known_Value
*** 305,319 ****
  
  #define Defining_Entity			sem_util__defining_entity
  #define First_Actual			sem_util__first_actual
  #define Is_Variable_Size_Record 	sem_util__is_variable_size_record
  #define Next_Actual			sem_util__next_actual
! #define Requires_Transient_Scope	sem_util__requires_transient_scope
  
! extern Entity_Id Defining_Entity	(Node_Id);
! extern Node_Id First_Actual		(Node_Id);
! extern Boolean Is_Variable_Size_Record 	(Entity_Id Id);
! extern Node_Id Next_Actual		(Node_Id);
! extern Boolean Requires_Transient_Scope	(Entity_Id);
  
  /* sinfo: */
  
--- 304,330 ----
  
  #define Defining_Entity			sem_util__defining_entity
  #define First_Actual			sem_util__first_actual
+ #define Has_Storage_Model_Type_Aspect	sem_util__storage_model_support__has_storage_model_type_aspect
+ #define Has_Designated_Storage_Model_Aspect sem_util__storage_model_support__has_designated_storage_model_aspect
+ #define Is_Expression_Function		sem_util__is_expression_function
  #define Is_Variable_Size_Record 	sem_util__is_variable_size_record
+ #define Needs_Secondary_Stack		sem_util__needs_secondary_stack
  #define Next_Actual			sem_util__next_actual
! #define Storage_Model_Object 		sem_util__storage_model_support__storage_model_object
! #define Storage_Model_Copy_From 	sem_util__storage_model_support__storage_model_copy_from
! #define Storage_Model_Copy_To 		sem_util__storage_model_support__storage_model_copy_to
  
! extern Entity_Id Defining_Entity		(Node_Id);
! extern Node_Id First_Actual			(Node_Id);
! extern Boolean Has_Storage_Model_Type_Aspect	(Entity_Id);
! extern Boolean Has_Designated_Storage_Model_Aspect (Entity_Id);
! extern Boolean Is_Expression_Function		(Entity_Id);
! extern Boolean Is_Variable_Size_Record 		(Entity_Id);
! extern Boolean Needs_Secondary_Stack		(Entity_Id);
! extern Node_Id Next_Actual			(Node_Id);
! extern Entity_Id Storage_Model_Object		(Entity_Id);
! extern Entity_Id Storage_Model_Copy_From	(Entity_Id);
! extern Entity_Id Storage_Model_Copy_To 		(Entity_Id);
  
  /* sinfo: */
  
*************** extern Boolean Stack_Check_Probes_On_Tar
*** 355,363 ****
  
  /* warnsw: */
  
! #define Warn_On_Questionable_Layout	warnsw__warn_on_questionable_layout
  
! extern Boolean Warn_On_Questionable_Layout;
  
  // The following corresponds to Ada code in Einfo.Utils.
  
--- 366,374 ----
  
  /* warnsw: */
  
! #define Get_Warn_On_Questionable_Layout	warnsw__get_warn_on_questionable_layout
  
! extern Boolean Get_Warn_On_Questionable_Layout (void);
  
  // The following corresponds to Ada code in Einfo.Utils.
  
*************** B Is_Floating_Point_Type
*** 647,658 ****
  #define Is_Record_Type einfo__utils__is_record_type
  B Is_Record_Type                      (E Id);
  
- #define Has_DIC einfo__utils__has_dic
- B Has_DIC (E Id);
- 
- #define Has_Invariants einfo__utils__has_invariants
- B Has_Invariants (E Id);
- 
  #define Is_Full_Access einfo__utils__is_full_access
  B Is_Full_Access (E Id);
  
--- 658,663 ----
*************** E Next_Stored_Discriminant (E Id);
*** 670,681 ****
  // fe.h is included before einfo.h.
  Entity_Kind Parameter_Mode (E Id);
  
- #define Is_List_Member einfo__utils__is_list_member
- B Is_List_Member (N Node);
- 
- #define List_Containing einfo__utils__list_containing
- S List_Containing (N Node);
- 
  // The following is needed because Convention in Sem_Util is a renaming
  // of Basic_Convention.
  
--- 675,680 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/final.c gcc-13.1.0/gcc/ada/final.c
*** gcc-12.2.0/gcc/ada/final.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/final.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/fmap.adb gcc-13.1.0/gcc/ada/fmap.adb
*** gcc-12.2.0/gcc/ada/fmap.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fmap.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Warnings (Off);
*** 34,41 ****
  with System.OS_Lib; use System.OS_Lib;
  pragma Warnings (On);
  
- with Unchecked_Conversion;
- 
  with GNAT.HTable;
  
  package body Fmap is
--- 34,39 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/fmap.ads gcc-13.1.0/gcc/ada/fmap.ads
*** gcc-12.2.0/gcc/ada/fmap.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fmap.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/fname-sf.adb gcc-13.1.0/gcc/ada/fname-sf.adb
*** gcc-12.2.0/gcc/ada/fname-sf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fname-sf.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Osint;         use Osint;
*** 30,37 ****
  with Types;         use Types;
  with System.OS_Lib; use System.OS_Lib;
  
- with Unchecked_Conversion;
- 
  package body Fname.SF is
  
     ----------------------
--- 30,35 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/fname-sf.ads gcc-13.1.0/gcc/ada/fname-sf.ads
*** gcc-12.2.0/gcc/ada/fname-sf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fname-sf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/fname-uf.adb gcc-13.1.0/gcc/ada/fname-uf.adb
*** gcc-12.2.0/gcc/ada/fname-uf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fname-uf.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/fname-uf.ads gcc-13.1.0/gcc/ada/fname-uf.ads
*** gcc-12.2.0/gcc/ada/fname-uf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fname-uf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/fname.adb gcc-13.1.0/gcc/ada/fname.adb
*** gcc-12.2.0/gcc/ada/fname.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fname.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/fname.ads gcc-13.1.0/gcc/ada/fname.ads
*** gcc-12.2.0/gcc/ada/fname.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/fname.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/freeze.adb gcc-13.1.0/gcc/ada/freeze.adb
*** gcc-12.2.0/gcc/ada/freeze.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/freeze.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Freeze is
*** 184,192 ****
     --  the designated type. Otherwise freezing the access type does not freeze
     --  the designated type.
  
!    function Should_Freeze_Type (Typ : Entity_Id; E : Entity_Id) return Boolean;
!    --  If Typ is in the current scope or in an instantiation, then return True.
!    --  ???Expression functions (represented by E) shouldn't freeze types in
     --  general, but our current expansion and freezing model requires an early
     --  freezing when the dispatch table is needed or when building an aggregate
     --  with a subtype of Typ, so return True also in this case.
--- 184,194 ----
     --  the designated type. Otherwise freezing the access type does not freeze
     --  the designated type.
  
!    function Should_Freeze_Type
!      (Typ : Entity_Id; E : Entity_Id; N : Node_Id) return Boolean;
!    --  If Typ is in the current scope, then return True.
!    --  N is a node whose source location corresponds to the freeze point.
!    --  ??? Expression functions (represented by E) shouldn't freeze types in
     --  general, but our current expansion and freezing model requires an early
     --  freezing when the dispatch table is needed or when building an aggregate
     --  with a subtype of Typ, so return True also in this case.
*************** package body Freeze is
*** 198,204 ****
     ------------------------
  
     function Should_Freeze_Type
!      (Typ : Entity_Id; E : Entity_Id) return Boolean
     is
        function Is_Dispatching_Call_Or_Aggregate
          (N : Node_Id) return Traverse_Result;
--- 200,206 ----
     ------------------------
  
     function Should_Freeze_Type
!      (Typ : Entity_Id; E : Entity_Id; N : Node_Id) return Boolean
     is
        function Is_Dispatching_Call_Or_Aggregate
          (N : Node_Id) return Traverse_Result;
*************** package body Freeze is
*** 244,250 ****
  
     begin
        return Within_Scope (Typ, Current_Scope)
!         or else In_Instance
          or else (Present (Decl)
                   and then Nkind (Decl) = N_Expression_Function
                   and then Need_Dispatch_Table (Expression (Decl)) = Abandon);
--- 246,253 ----
  
     begin
        return Within_Scope (Typ, Current_Scope)
!         or else (Nkind (N) = N_Subprogram_Renaming_Declaration
!                  and then Present (Corresponding_Formal_Spec (N)))
          or else (Present (Decl)
                   and then Nkind (Decl) = N_Expression_Function
                   and then Need_Dispatch_Table (Expression (Decl)) = Abandon);
*************** package body Freeze is
*** 395,401 ****
        Nam        : constant Node_Id := Name (N);
        Old_S      : Entity_Id;
        Spec       : constant Node_Id := New_Copy_Tree (Specification (Decl));
!       Actuals    : List_Id := No_List;
        Call_Node  : Node_Id;
        Call_Name  : Node_Id;
        Body_Node  : Node_Id;
--- 398,404 ----
        Nam        : constant Node_Id := Name (N);
        Old_S      : Entity_Id;
        Spec       : constant Node_Id := New_Copy_Tree (Specification (Decl));
!       Actuals    : List_Id;
        Call_Node  : Node_Id;
        Call_Name  : Node_Id;
        Body_Node  : Node_Id;
*************** package body Freeze is
*** 470,487 ****
           Set_Is_Overloaded (Call_Name, False);
        end if;
  
        --  For simple renamings, subsequent calls can be expanded directly as
        --  calls to the renamed entity. The body must be generated in any case
        --  for calls that may appear elsewhere. This is not done in the case
        --  where the subprogram is an instantiation because the actual proper
!       --  body has not been built yet. This is also not done in GNATprove mode
!       --  as we need to check other conditions for creating a body to inline
!       --  in that case, which are controlled in Analyze_Subprogram_Body_Helper.
  
        if Ekind (Old_S) in E_Function | E_Procedure
-         and then Nkind (Decl) = N_Subprogram_Declaration
          and then not Is_Generic_Instance (Old_S)
-         and then not GNATprove_Mode
        then
           Set_Body_To_Inline (Decl, Old_S);
        end if;
--- 473,492 ----
           Set_Is_Overloaded (Call_Name, False);
        end if;
  
+       if Nkind (Decl) /= N_Subprogram_Declaration then
+          Rewrite (N,
+            Make_Subprogram_Declaration (Loc,
+              Specification => Specification (N)));
+       end if;
+ 
        --  For simple renamings, subsequent calls can be expanded directly as
        --  calls to the renamed entity. The body must be generated in any case
        --  for calls that may appear elsewhere. This is not done in the case
        --  where the subprogram is an instantiation because the actual proper
!       --  body has not been built yet.
  
        if Ekind (Old_S) in E_Function | E_Procedure
          and then not Is_Generic_Instance (Old_S)
        then
           Set_Body_To_Inline (Decl, Old_S);
        end if;
*************** package body Freeze is
*** 655,666 ****
                   Statements => New_List (Call_Node)));
        end if;
  
-       if Nkind (Decl) /= N_Subprogram_Declaration then
-          Rewrite (N,
-            Make_Subprogram_Declaration (Loc,
-              Specification => Specification (N)));
-       end if;
- 
        --  Link the body to the entity whose declaration it completes. If
        --  the body is analyzed when the renamed entity is frozen, it may
        --  be necessary to restore the proper scope (see package Exp_Ch13).
--- 660,665 ----
*************** package body Freeze is
*** 786,792 ****
                 then
                    Error_Msg_Sloc := Sloc (Addr);
                    Error_Msg_NE
!                     ("??constant& may be modified via address clause#",
                       Decl, O_Ent);
                 end if;
              end;
--- 785,791 ----
                 then
                    Error_Msg_Sloc := Sloc (Addr);
                    Error_Msg_NE
!                     ("?o?constant& may be modified via address clause#",
                       Decl, O_Ent);
                 end if;
              end;
*************** package body Freeze is
*** 1455,1461 ****
                                                           N_Object_Declaration
             and then not Is_Imported (Entity (Nod))
             and then not Has_Completion (Entity (Nod))
!            and then not Is_Frozen (Entity (Nod))
           then
              Error_Msg_NE
                ("premature use of& in call or instance", N, Entity (Nod));
--- 1454,1461 ----
                                                           N_Object_Declaration
             and then not Is_Imported (Entity (Nod))
             and then not Has_Completion (Entity (Nod))
!            and then not (Present (Full_View (Entity (Nod)))
!                           and then Has_Completion (Full_View (Entity (Nod))))
           then
              Error_Msg_NE
                ("premature use of& in call or instance", N, Entity (Nod));
*************** package body Freeze is
*** 1466,1471 ****
--- 1466,1475 ----
              if Is_Entity_Name (Prefix (Nod))
                and then Is_Type (Entity (Prefix (Nod)))
              then
+                if Expander_Active then
+                   Check_Fully_Declared (Entity (Prefix (Nod)), N);
+                end if;
+ 
                 Freeze_Before (N, Entity (Prefix (Nod)));
              end if;
           end if;
*************** package body Freeze is
*** 1619,1624 ****
--- 1623,1635 ----
           DTW_Spec := Build_Overriding_Spec (Par_Prim, R);
           DTW_Id   := Defining_Entity (DTW_Spec);
  
+          --  Clear the not-overriding indicator since the DTW wrapper overrides
+          --  its wrapped subprogram; required because if present in the parent
+          --  primitive, given that Build_Overriding_Spec inherits it, we report
+          --  spurious errors.
+ 
+          Set_Must_Not_Override (DTW_Spec, False);
+ 
           --  Add minimal decoration of fields
  
           Mutate_Ekind (DTW_Id, Ekind (Par_Prim));
*************** package body Freeze is
*** 1703,1713 ****
                 end;
              end if;
  
!             New_Prag := New_Copy_Tree (A_Post);
!             Rewrite
!               (Expression (First (Pragma_Argument_Associations (New_Prag))),
!                Class_Post);
!             Append (New_Prag, Decls);
           end if;
        end Build_Inherited_Condition_Pragmas;
  
--- 1714,1729 ----
                 end;
              end if;
  
!             --  A_Post can be null here if the postcondition was inlined in the
!             --  called subprogram.
! 
!             if Present (A_Post) then
!                New_Prag := New_Copy_Tree (A_Post);
!                Rewrite
!                  (Expression (First (Pragma_Argument_Associations (New_Prag))),
!                   Class_Post);
!                Append (New_Prag, Decls);
!             end if;
           end if;
        end Build_Inherited_Condition_Pragmas;
  
*************** package body Freeze is
*** 1741,1757 ****
                  (Nkind (Parent (N)) /= N_Attribute_Reference
                    or else Attribute_Name (Parent (N)) /= Name_Class)
              then
-                --  The check does not apply to dispatching calls within the
-                --  condition, but only to calls whose static tag is that of
-                --  the parent type.
- 
-                if Is_Subprogram (Entity (N))
-                  and then Nkind (Parent (N)) = N_Function_Call
-                  and then Present (Controlling_Argument (Parent (N)))
-                then
-                   return OK;
-                end if;
- 
                 --  Determine whether entity has a renaming
  
                 New_E := Get_Mapped_Entity (Entity (N));
--- 1757,1762 ----
*************** package body Freeze is
*** 1795,1800 ****
--- 1800,1809 ----
        Ifaces_Listed  : Boolean := False;
        --  Cache the list of interface operations inherited by R
  
+       Wrappers_List  : Elist_Id := No_Elist;
+       --  List containing identifiers of built wrappers. Used to defer building
+       --  and analyzing their class-wide precondition subprograms.
+ 
     --  Start of processing for Check_Inherited_Conditions
  
     begin
*************** package body Freeze is
*** 1981,1997 ****
                 DTW_Id   : Entity_Id;
                 DTW_Spec : Node_Id;
  
!             begin
!                --  The wrapper must be analyzed in the scope of its wrapped
!                --  primitive (to ensure its correct decoration).
! 
!                Push_Scope (Scope (Prim));
  
                 DTW_Spec := Build_DTW_Spec (Par_Prim);
                 DTW_Id   := Defining_Entity (DTW_Spec);
                 DTW_Decl := Make_Subprogram_Declaration (Loc,
                               Specification => DTW_Spec);
  
                 --  For inherited class-wide preconditions the DTW wrapper
                 --  reuses the ICW of the parent (which checks the parent
                 --  interpretation of the class-wide preconditions); the
--- 1990,2014 ----
                 DTW_Id   : Entity_Id;
                 DTW_Spec : Node_Id;
  
!                Prim_Next_E : constant Entity_Id := Next_Entity (Prim);
!                Prim_Prev_E : constant Entity_Id := Prev_Entity (Prim);
  
+             begin
                 DTW_Spec := Build_DTW_Spec (Par_Prim);
                 DTW_Id   := Defining_Entity (DTW_Spec);
                 DTW_Decl := Make_Subprogram_Declaration (Loc,
                               Specification => DTW_Spec);
  
+                --  The spec of the wrapper has been built using the source
+                --  location of its parent primitive; we must update it now
+                --  (with the source location of the internal primitive built
+                --  by Derive_Subprogram that will override this wrapper) to
+                --  avoid inlining conflicts between internally built helpers
+                --  for class-wide pre/postconditions of the parent and the
+                --  helpers built for this wrapper.
+ 
+                Set_Sloc (DTW_Id, Sloc (Prim));
+ 
                 --  For inherited class-wide preconditions the DTW wrapper
                 --  reuses the ICW of the parent (which checks the parent
                 --  interpretation of the class-wide preconditions); the
*************** package body Freeze is
*** 2049,2057 ****
                    Insert_Before_And_Analyze (Freeze_Node (R), DTW_Decl);
                 else
                    Append_Freeze_Action (R, DTW_Decl);
                 end if;
  
!                Analyze (DTW_Decl);
  
                 --  Insert the body of the wrapper in the freeze actions of
                 --  its record type declaration to ensure that it is placed
--- 2066,2111 ----
                    Insert_Before_And_Analyze (Freeze_Node (R), DTW_Decl);
                 else
                    Append_Freeze_Action (R, DTW_Decl);
+                   Analyze (DTW_Decl);
                 end if;
  
!                --  The analyis of DTW_Decl has removed Prim from its scope
!                --  chain and added DTW_Id at the end of the scope chain. Move
!                --  DTW_Id to its correct place in the scope chain: the analysis
!                --  of the wrapper declaration has just added DTW_Id at the end
!                --  of the list of entities of its scope. However, given that
!                --  this wrapper overrides Prim, we must move DTW_Id to the
!                --  original place of Prim in its scope chain. This is required
!                --  for wrappers of private type primitives to ensure their
!                --  correct visibility since wrappers are built when the full
!                --  tagged type declaration is frozen (in the private part of
!                --  the package) but they may override primitives defined in the
!                --  public part of the package.
! 
!                declare
!                   DTW_Prev_E : constant Entity_Id := Prev_Entity (DTW_Id);
! 
!                begin
!                   pragma Assert (Last_Entity (Current_Scope) = DTW_Id);
!                   pragma Assert
!                     (Ekind (Current_Scope) not in E_Package | E_Generic_Package
!                        or else No (First_Private_Entity (Current_Scope))
!                        or else First_Private_Entity (Current_Scope) /= DTW_Id);
! 
!                   --  Remove DTW_Id from the end of the doubly-linked list of
!                   --  entities of this scope; no need to handle removing it
!                   --  from the beginning of the chain since such case can never
!                   --  occur for this entity.
! 
!                   Set_Last_Entity (Current_Scope, DTW_Prev_E);
!                   Set_Next_Entity (DTW_Prev_E, Empty);
! 
!                   --  Place DTW_Id back in the original place of its wrapped
!                   --  primitive in the list of entities of this scope.
! 
!                   Link_Entities (Prim_Prev_E, DTW_Id);
!                   Link_Entities (DTW_Id, Prim_Next_E);
!                end;
  
                 --  Insert the body of the wrapper in the freeze actions of
                 --  its record type declaration to ensure that it is placed
*************** package body Freeze is
*** 2081,2122 ****
                      Register_Primitive (Loc, DTW_Id));
                 end if;
  
!                --  Build the helper and ICW for the DTW
  
                 if Present (Indirect_Call_Wrapper (Par_Prim)) then
!                   declare
!                      CW_Subp : Entity_Id;
!                      Decl_N  : Node_Id;
!                      Body_N  : Node_Id;
! 
!                   begin
!                      Merge_Class_Conditions (DTW_Id);
!                      Make_Class_Precondition_Subps (DTW_Id,
!                        Late_Overriding => Late_Overriding);
! 
!                      CW_Subp := Static_Call_Helper (DTW_Id);
!                      Decl_N  := Unit_Declaration_Node (CW_Subp);
!                      Analyze (Decl_N);
! 
!                      --  If the DTW was built for a late-overriding primitive
!                      --  its body must be analyzed now (since the tagged type
!                      --  is already frozen).
! 
!                      if Late_Overriding then
!                         Body_N :=
!                           Unit_Declaration_Node
!                             (Corresponding_Body (Decl_N));
!                         Analyze (Body_N);
!                      end if;
!                   end;
                 end if;
- 
-                Pop_Scope;
              end;
           end if;
  
           Next_Elmt (Op_Node);
        end loop;
     end Check_Inherited_Conditions;
  
     ----------------------------
--- 2135,2192 ----
                      Register_Primitive (Loc, DTW_Id));
                 end if;
  
!                --  Defer building helpers and ICW for the DTW. Required to
!                --  ensure uniqueness in their names because when building
!                --  these wrappers for overlapped subprograms their homonym
!                --  number is not definite until all these dispatch table
!                --  wrappers of tagged type R have been analyzed.
  
                 if Present (Indirect_Call_Wrapper (Par_Prim)) then
!                   Append_New_Elmt (DTW_Id, Wrappers_List);
                 end if;
              end;
           end if;
  
           Next_Elmt (Op_Node);
        end loop;
+ 
+       --  Build and analyze deferred class-wide precondition subprograms of
+       --  built wrappers.
+ 
+       if Present (Wrappers_List) then
+          declare
+             Body_N  : Node_Id;
+             CW_Subp : Entity_Id;
+             Decl_N  : Node_Id;
+             DTW_Id  : Entity_Id;
+             Elmt    : Elmt_Id;
+ 
+          begin
+             Elmt := First_Elmt (Wrappers_List);
+ 
+             while Present (Elmt) loop
+                DTW_Id := Node (Elmt);
+                Next_Elmt (Elmt);
+ 
+                Merge_Class_Conditions (DTW_Id);
+                Make_Class_Precondition_Subps (DTW_Id, Late_Overriding);
+ 
+                CW_Subp := Static_Call_Helper (DTW_Id);
+                Decl_N  := Unit_Declaration_Node (CW_Subp);
+                Analyze (Decl_N);
+ 
+                --  If the DTW was built for a late-overriding primitive
+                --  its body must be analyzed now (since the tagged type
+                --  is already frozen).
+ 
+                if Late_Overriding then
+                   Body_N :=
+                     Unit_Declaration_Node (Corresponding_Body (Decl_N));
+                   Analyze (Body_N);
+                end if;
+             end loop;
+          end;
+       end if;
     end Check_Inherited_Conditions;
  
     ----------------------------
*************** package body Freeze is
*** 2244,2310 ****
        end loop;
     end Check_Unsigned_Type;
  
-    ------------------------------
-    -- Is_Full_Access_Aggregate --
-    ------------------------------
- 
-    function Is_Full_Access_Aggregate (N : Node_Id) return Boolean is
-       Loc   : constant Source_Ptr := Sloc (N);
-       New_N : Node_Id;
-       Par   : Node_Id;
-       Temp  : Entity_Id;
-       Typ   : Entity_Id;
- 
-    begin
-       Par := Parent (N);
- 
-       --  Array may be qualified, so find outer context
- 
-       if Nkind (Par) = N_Qualified_Expression then
-          Par := Parent (Par);
-       end if;
- 
-       if not Comes_From_Source (Par) then
-          return False;
-       end if;
- 
-       case Nkind (Par) is
-          when N_Assignment_Statement =>
-             Typ := Etype (Name (Par));
- 
-             if not Is_Full_Access (Typ)
-               and then not Is_Full_Access_Object (Name (Par))
-             then
-                return False;
-             end if;
- 
-          when N_Object_Declaration =>
-             Typ := Etype (Defining_Identifier (Par));
- 
-             if not Is_Full_Access (Typ)
-               and then not Is_Full_Access (Defining_Identifier (Par))
-             then
-                return False;
-             end if;
- 
-          when others =>
-             return False;
-       end case;
- 
-       Temp := Make_Temporary (Loc, 'T', N);
-       New_N :=
-         Make_Object_Declaration (Loc,
-           Defining_Identifier => Temp,
-           Constant_Present    => True,
-           Object_Definition   => New_Occurrence_Of (Typ, Loc),
-           Expression          => Relocate_Node (N));
-       Insert_Before (Par, New_N);
-       Analyze (New_N);
- 
-       Set_Expression (Par, New_Occurrence_Of (Temp, Loc));
-       return True;
-    end Is_Full_Access_Aggregate;
- 
     -----------------------------------------------
     -- Explode_Initialization_Compound_Statement --
     -----------------------------------------------
--- 2314,2319 ----
*************** package body Freeze is
*** 2628,2634 ****
        N      : Node_Id;
        Result : in out List_Id)
     is
!       L : constant List_Id := Freeze_Entity (Ent, N);
     begin
        if Is_Non_Empty_List (L) then
           if Result = No_List then
--- 2637,2649 ----
        N      : Node_Id;
        Result : in out List_Id)
     is
!       --  Freezing an Expression_Function does not freeze its profile:
!       --  the formals will have been frozen otherwise before the E_F
!       --  can be called.
! 
!       L : constant List_Id :=
!         Freeze_Entity
!           (Ent, N, Do_Freeze_Profile => not Is_Expression_Function (Ent));
     begin
        if Is_Non_Empty_List (L) then
           if Result = No_List then
*************** package body Freeze is
*** 3169,3174 ****
--- 3184,3192 ----
                 if Has_Task (Typ) then
                    Error_Msg_N
                      ("aspect % applied to task type &", Typ);
+                   Error_Msg_N
+                     ("\replace task components with access-to-task-type "
+                      & "components??", Typ);
                 end if;
  
              else
*************** package body Freeze is
*** 3581,3587 ****
                       end if;
                    end Complain_CS;
  
!                   --  Start of processing for Alias_Atomic_Check
  
                 begin
                    --  If object size of component type isn't known, we cannot
--- 3599,3605 ----
                       end if;
                    end Complain_CS;
  
!                --  Start of processing for Alias_Atomic_Check
  
                 begin
                    --  If object size of component type isn't known, we cannot
*************** package body Freeze is
*** 3779,3785 ****
                       --  Set component size if not already set by a component
                       --  size clause.
  
!                      if not Present (Comp_Size_C) then
                          Set_Component_Size (Arr, Csiz);
                       end if;
  
--- 3797,3803 ----
                       --  Set component size if not already set by a component
                       --  size clause.
  
!                      if No (Comp_Size_C) then
                          Set_Component_Size (Arr, Csiz);
                       end if;
  
*************** package body Freeze is
*** 3791,3797 ****
                       --  explicitly, then generate a warning.
  
                       if Has_Pragma_Pack (Arr)
!                        and then not Present (Comp_Size_C)
                         and then (Csiz = 7 or else Csiz = 15 or else Csiz = 31)
                         and then Known_Esize (Base_Type (Ctyp))
                         and then Esize (Base_Type (Ctyp)) = Csiz + 1
--- 3809,3815 ----
                       --  explicitly, then generate a warning.
  
                       if Has_Pragma_Pack (Arr)
!                        and then No (Comp_Size_C)
                         and then (Csiz = 7 or else Csiz = 15 or else Csiz = 31)
                         and then Known_Esize (Base_Type (Ctyp))
                         and then Esize (Base_Type (Ctyp)) = Csiz + 1
*************** package body Freeze is
*** 4545,4551 ****
              end if;
  
              if not From_Limited_With (F_Type)
!               and then Should_Freeze_Type (F_Type, E)
              then
                 Freeze_And_Append (F_Type, N, Result);
              end if;
--- 4563,4569 ----
              end if;
  
              if not From_Limited_With (F_Type)
!               and then Should_Freeze_Type (F_Type, E, N)
              then
                 Freeze_And_Append (F_Type, N, Result);
              end if;
*************** package body Freeze is
*** 4567,4575 ****
                    Result := No_List;
                    return False;
  
!                elsif not After_Last_Declaration
!                  and then not Freezing_Library_Level_Tagged_Type
!                then
                    Error_Msg_NE
                      ("type & must be fully defined before this point",
                       N,
--- 4585,4591 ----
                    Result := No_List;
                    return False;
  
!                elsif not After_Last_Declaration then
                    Error_Msg_NE
                      ("type & must be fully defined before this point",
                       N,
*************** package body Freeze is
*** 4687,4703 ****
                 if Is_Access_Type (F_Type) then
                    F_Type := Designated_Type (F_Type);
                 end if;
- 
-                --  If the formal is an anonymous_access_to_subprogram
-                --  freeze the  subprogram type as well, to prevent
-                --  scope anomalies in gigi, because there is no other
-                --  clear point at which it could be frozen.
- 
-                if Is_Itype (Etype (Formal))
-                  and then Ekind (F_Type) = E_Subprogram_Type
-                then
-                   Freeze_And_Append (F_Type, N, Result);
-                end if;
              end if;
  
              Next_Formal (Formal);
--- 4703,4708 ----
*************** package body Freeze is
*** 4725,4731 ****
                 Set_Etype (E, R_Type);
              end if;
  
!             if Should_Freeze_Type (R_Type, E) then
                 Freeze_And_Append (R_Type, N, Result);
              end if;
  
--- 4730,4736 ----
                 Set_Etype (E, R_Type);
              end if;
  
!             if Should_Freeze_Type (R_Type, E, N) then
                 Freeze_And_Append (R_Type, N, Result);
              end if;
  
*************** package body Freeze is
*** 4978,4983 ****
--- 4983,4989 ----
                and then Convention (Desig) /= Convention_Protected
              then
                 Set_Is_Frozen (Desig);
+                Create_Extra_Formals (Desig);
              end if;
           end Check_Itype;
  
*************** package body Freeze is
*** 6247,6252 ****
--- 6253,6287 ----
          and then Scope (Test_E) /= Current_Scope
          and then Ekind (Test_E) /= E_Constant
        then
+          --  Here we deal with the special case of the expansion of
+          --  postconditions. Previously this was handled by the loop below,
+          --  since these postcondition checks got isolated to a separate,
+          --  internally generated, subprogram. Now, however, the postcondition
+          --  checks get contained within their corresponding subprogram
+          --  directly.
+ 
+          if not Comes_From_Source (N)
+            and then Nkind (N) = N_Pragma
+            and then From_Aspect_Specification (N)
+            and then Is_Valid_Assertion_Kind (Original_Aspect_Pragma_Name (N))
+ 
+            --  Now, verify the placement of the pragma is within an expanded
+            --  subprogram which contains postcondition expansion - detected
+            --  through the presence of the "Wrapped_Statements" field.
+ 
+            and then Present (Enclosing_Subprogram (Current_Scope))
+            and then Present (Wrapped_Statements
+                               (Enclosing_Subprogram (Current_Scope)))
+          then
+             goto Leave;
+          end if;
+ 
+          --  Otherwise, loop through scopes checking if an enclosing scope
+          --  comes from source or is a generic. Note that, for the purpose
+          --  of this test, we need to consider that the internally generated
+          --  subprogram described above comes from source too if the original
+          --  subprogram itself does.
+ 
           declare
              S : Entity_Id;
  
*************** package body Freeze is
*** 6255,6260 ****
--- 6290,6297 ----
              while Present (S) loop
                 if Is_Overloadable (S) then
                    if Comes_From_Source (S)
+                     or else (Chars (S) = Name_uWrapped_Statements
+                               and then Comes_From_Source (Scope (S)))
                      or else Is_Generic_Instance (S)
                      or else Is_Child_Unit (S)
                    then
*************** package body Freeze is
*** 6365,6373 ****
           end;
        end if;
  
!       if Has_Delayed_Aspects (E)
!         or else May_Inherit_Delayed_Rep_Aspects (E)
!       then
           Analyze_Aspects_At_Freeze_Point (E);
        end if;
  
--- 6402,6408 ----
           end;
        end if;
  
!       if Has_Delayed_Aspects (E) then
           Analyze_Aspects_At_Freeze_Point (E);
        end if;
  
*************** package body Freeze is
*** 6395,6414 ****
           then
              Set_Encoded_Interface_Name
                (E, Get_Default_External_Name (E));
- 
-          --  If entity is an atomic object appearing in a declaration and
-          --  the expression is an aggregate, assign it to a temporary to
-          --  ensure that the actual assignment is done atomically rather
-          --  than component-wise (the assignment to the temp may be done
-          --  component-wise, but that is harmless).
- 
-          elsif Is_Full_Access (E)
-            and then Nkind (Parent (E)) = N_Object_Declaration
-            and then Present (Expression (Parent (E)))
-            and then Nkind (Expression (Parent (E))) = N_Aggregate
-            and then Is_Full_Access_Aggregate (Expression (Parent (E)))
-          then
-             null;
           end if;
  
           --  Subprogram case
--- 6430,6435 ----
*************** package body Freeze is
*** 6426,6434 ****
  
              --  In Ada 2012, freezing a subprogram does not always freeze the
              --  corresponding profile (see AI05-019). An attribute reference
!             --  is not a freezing point of the profile. Flag Do_Freeze_Profile
              --  indicates whether the profile should be frozen now.
-             --  Other constructs that should not freeze ???
  
              --  This processing doesn't apply to internal entities (see below)
  
--- 6447,6456 ----
  
              --  In Ada 2012, freezing a subprogram does not always freeze the
              --  corresponding profile (see AI05-019). An attribute reference
!             --  is not a freezing point of the profile. Similarly, we do not
!             --  freeze the profile of primitives of a library-level tagged type
!             --  when we are building its dispatch table. Flag Do_Freeze_Profile
              --  indicates whether the profile should be frozen now.
  
              --  This processing doesn't apply to internal entities (see below)
  
*************** package body Freeze is
*** 6521,6529 ****
                 end if;
              end if;
  
!             --  Special processing for objects created by object declaration
  
!             if Nkind (Declaration_Node (E)) = N_Object_Declaration then
                 Freeze_Object_Declaration (E);
              end if;
  
--- 6543,6555 ----
                 end if;
              end if;
  
!             --  Special processing for objects created by object declaration;
!             --  we protect the call to Declaration_Node against entities of
!             --  expressions replaced by the frontend with an N_Raise_CE node.
  
!             if Ekind (E) in E_Constant | E_Variable
!               and then Nkind (Declaration_Node (E)) = N_Object_Declaration
!             then
                 Freeze_Object_Declaration (E);
              end if;
  
*************** package body Freeze is
*** 6807,6824 ****
              --  A subtype inherits all the type-related representation aspects
              --  from its parents (RM 13.1(8)).
  
              Inherit_Aspects_At_Freeze_Point (E);
  
           --  For a derived type, freeze its parent type first (RM 13.14(15))
  
           elsif Is_Derived_Type (E) then
              Freeze_And_Append (Etype (E), N, Result);
-             Freeze_And_Append (First_Subtype (Etype (E)), N, Result);
  
              --  A derived type inherits each type-related representation aspect
              --  of its parent type that was directly specified before the
              --  declaration of the derived type (RM 13.1(15)).
  
              Inherit_Aspects_At_Freeze_Point (E);
           end if;
  
--- 6833,6857 ----
              --  A subtype inherits all the type-related representation aspects
              --  from its parents (RM 13.1(8)).
  
+             if May_Inherit_Delayed_Rep_Aspects (E) then
+                Inherit_Delayed_Rep_Aspects (E);
+             end if;
+ 
              Inherit_Aspects_At_Freeze_Point (E);
  
           --  For a derived type, freeze its parent type first (RM 13.14(15))
  
           elsif Is_Derived_Type (E) then
              Freeze_And_Append (Etype (E), N, Result);
  
              --  A derived type inherits each type-related representation aspect
              --  of its parent type that was directly specified before the
              --  declaration of the derived type (RM 13.1(15)).
  
+             if May_Inherit_Delayed_Rep_Aspects (E) then
+                Inherit_Delayed_Rep_Aspects (E);
+             end if;
+ 
              Inherit_Aspects_At_Freeze_Point (E);
           end if;
  
*************** package body Freeze is
*** 7036,7042 ****
              --  end of a declarative part.
  
              if Is_Library_Level_Tagged_Type (E)
!               and then not Present (Full_View (E))
              then
                 Set_Is_Frozen (E, False);
                 goto Leave;
--- 7069,7075 ----
              --  end of a declarative part.
  
              if Is_Library_Level_Tagged_Type (E)
!               and then No (Full_View (E))
              then
                 Set_Is_Frozen (E, False);
                 goto Leave;
*************** package body Freeze is
*** 7103,7113 ****
  
                 Check_Debug_Info_Needed (E);
  
!                --  AI-117 requires that the convention of a partial view be the
!                --  same as the convention of the full view. Note that this is a
!                --  recognized breach of privacy, but it's essential for logical
!                --  consistency of representation, and the lack of a rule in
!                --  RM95 was an oversight.
  
                 Set_Convention (E, Convention (Full_View (E)));
  
--- 7136,7146 ----
  
                 Check_Debug_Info_Needed (E);
  
!                --  AI95-117 requires that the convention of a partial view be
!                --  the same as the convention of the full view. Note that this
!                --  is a recognized breach of privacy, but it's essential for
!                --  logical consistency of representation, and the lack of a
!                --  rule in RM95 was an oversight.
  
                 Set_Convention (E, Convention (Full_View (E)));
  
*************** package body Freeze is
*** 7332,7338 ****
  
           if Is_Composite_Type (E) then
  
!             --  AI-117 requires that all new primitives of a tagged type must
              --  inherit the convention of the full view of the type. Inherited
              --  and overriding operations are defined to inherit the convention
              --  of their parent or overridden subprogram (also specified in
--- 7365,7371 ----
  
           if Is_Composite_Type (E) then
  
!             --  AI95-117 requires that all new primitives of a tagged type must
              --  inherit the convention of the full view of the type. Inherited
              --  and overriding operations are defined to inherit the convention
              --  of their parent or overridden subprogram (also specified in
*************** package body Freeze is
*** 7444,7450 ****
                       --  If no formal is passed in, then issue an error for a
                       --  missing formal.
  
!                      elsif not Present (Pool_Op_Formal) then
                          Error_Msg_NE
                            ("simple storage pool op missing formal " &
                             Formal_Name & " of type&", Pool_Op, Expected_Type);
--- 7477,7483 ----
                       --  If no formal is passed in, then issue an error for a
                       --  missing formal.
  
!                      elsif No (Pool_Op_Formal) then
                          Error_Msg_NE
                            ("simple storage pool op missing formal " &
                             Formal_Name & " of type&", Pool_Op, Expected_Type);
*************** package body Freeze is
*** 7576,7582 ****
                             --  and no excess formals are present, then this
                             --  operation has been validated, so record it.
  
!                            if not Present (Formal) and then Is_OK then
                                Found_Op := Op;
                             end if;
                          end if;
--- 7609,7615 ----
                             --  and no excess formals are present, then this
                             --  operation has been validated, so record it.
  
!                            if No (Formal) and then Is_OK then
                                Found_Op := Op;
                             end if;
                          end if;
*************** package body Freeze is
*** 7588,7594 ****
                       --  so issue an error if none was found.
  
                       if Op_Name = Name_Allocate
!                        and then not Present (Found_Op)
                       then
                          Error_Msg_N ("missing % operation for simple " &
                                       "storage pool type", Pool_Type);
--- 7621,7627 ----
                       --  so issue an error if none was found.
  
                       if Op_Name = Name_Allocate
!                        and then No (Found_Op)
                       then
                          Error_Msg_N ("missing % operation for simple " &
                                       "storage pool type", Pool_Type);
*************** package body Freeze is
*** 7825,7835 ****
--- 7858,7894 ----
           --  type itself is frozen, because the class-wide type refers to the
           --  tagged type which generates the class.
  
+          --  For a tagged type, freeze explicitly those primitive operations
+          --  that are expression functions, which otherwise have no clear
+          --  freeze point: these have to be frozen before the dispatch table
+          --  for the type is built, and before any explicit call to the
+          --  primitive, which would otherwise be the freeze point for it.
+ 
           if Is_Tagged_Type (E)
             and then not Is_Class_Wide_Type (E)
             and then Present (Class_Wide_Type (E))
           then
              Freeze_And_Append (Class_Wide_Type (E), N, Result);
+ 
+             declare
+                Ops  : constant Elist_Id := Primitive_Operations (E);
+ 
+                Elmt : Elmt_Id;
+                Subp : Entity_Id;
+ 
+             begin
+                if Ops /= No_Elist  then
+                   Elmt := First_Elmt (Ops);
+                   while Present (Elmt) loop
+                      Subp := Node (Elmt);
+                      if Is_Expression_Function (Subp) then
+                         Freeze_And_Append (Subp, N, Result);
+                      end if;
+ 
+                      Next_Elmt (Elmt);
+                   end loop;
+                end if;
+             end;
           end if;
        end if;
  
*************** package body Freeze is
*** 7903,7917 ****
  
        else
           --  If the enumeration type interfaces to C, and it has a size clause
!          --  that specifies less than int size, it warrants a warning. The
!          --  user may intend the C type to be an enum or a char, so this is
           --  not by itself an error that the Ada compiler can detect, but it
!          --  it is a worth a heads-up. For Boolean and Character types we
           --  assume that the programmer has the proper C type in mind.
  
           if Convention (Typ) = Convention_C
             and then Has_Size_Clause (Typ)
!            and then Esize (Typ) /= Esize (Standard_Integer)
             and then not Is_Boolean_Type (Typ)
             and then not Is_Character_Type (Typ)
  
--- 7962,7978 ----
  
        else
           --  If the enumeration type interfaces to C, and it has a size clause
!          --  that is smaller than the size of int, it warrants a warning. The
!          --  user may intend the C type to be a boolean or a char, so this is
           --  not by itself an error that the Ada compiler can detect, but it
!          --  is worth a heads-up. For Boolean and Character types we
           --  assume that the programmer has the proper C type in mind.
+          --  For explicit sizes larger than int, assume the user knows what
+          --  he is doing and that the code is intentional.
  
           if Convention (Typ) = Convention_C
             and then Has_Size_Clause (Typ)
!            and then Esize (Typ) < Standard_Integer_Size
             and then not Is_Boolean_Type (Typ)
             and then not Is_Character_Type (Typ)
  
*************** package body Freeze is
*** 7920,7926 ****
             and then not Target_Short_Enums
           then
              Error_Msg_N
!               ("C enum types have the size of a C int??", Size_Clause (Typ));
           end if;
  
           Adjust_Esize_For_Alignment (Typ);
--- 7981,7992 ----
             and then not Target_Short_Enums
           then
              Error_Msg_N
!               ("??the size of enums in C is implementation-defined",
!                Size_Clause (Typ));
!             Error_Msg_N
!               ("\??check that the C counterpart has size of " &
!                UI_Image (Esize (Typ)),
!                Size_Clause (Typ));
           end if;
  
           Adjust_Esize_For_Alignment (Typ);
*************** package body Freeze is
*** 8207,8213 ****
              if Present (Nam)
                and then Ekind (Nam) = E_Function
                and then Nkind (Parent (N)) = N_Function_Call
!               and then Convention (Nam) = Convention_Ada
              then
                 Create_Extra_Formals (Nam);
              end if;
--- 8273,8279 ----
              if Present (Nam)
                and then Ekind (Nam) = E_Function
                and then Nkind (Parent (N)) = N_Function_Call
!               and then not Has_Foreign_Convention (Nam)
              then
                 Create_Extra_Formals (Nam);
              end if;
*************** package body Freeze is
*** 8300,8308 ****
              --  If the parent is a subprogram body, the candidate insertion
              --  point is just ahead of it.
  
!             if  Nkind (Parent_P) = N_Subprogram_Body
!                 and then Unique_Defining_Entity (Parent_P) =
!                            Freeze_Outside_Subp
              then
                 P := Parent_P;
                 exit;
--- 8366,8374 ----
              --  If the parent is a subprogram body, the candidate insertion
              --  point is just ahead of it.
  
!             if Nkind (Parent_P) = N_Subprogram_Body
!               and then Unique_Defining_Entity (Parent_P) =
!                          Freeze_Outside_Subp
              then
                 P := Parent_P;
                 exit;
*************** package body Freeze is
*** 9064,9069 ****
--- 9130,9140 ----
           Set_Has_Delayed_Aspects (Ftyp, False);
        end if;
  
+       if May_Inherit_Delayed_Rep_Aspects (Ftyp) then
+          Inherit_Delayed_Rep_Aspects (Ftyp);
+          Set_May_Inherit_Delayed_Rep_Aspects (Ftyp, False);
+       end if;
+ 
        --  Inherit the Small value from the first subtype in any case
  
        if Typ /= Ftyp then
*************** package body Freeze is
*** 9628,9636 ****
        Set_Has_Delayed_Freeze (T);
        L := Freeze_Entity (T, N);
  
!       if Is_Non_Empty_List (L) then
!          Insert_Actions (N, L);
!       end if;
     end Freeze_Itype;
  
     --------------------------
--- 9699,9705 ----
        Set_Has_Delayed_Freeze (T);
        L := Freeze_Entity (T, N);
  
!       Insert_Actions (N, L);
     end Freeze_Itype;
  
     --------------------------
*************** package body Freeze is
*** 9811,9887 ****
     -----------------------
  
     procedure Freeze_Subprogram (E : Entity_Id) is
-       function Check_Extra_Formals (E : Entity_Id) return Boolean;
-       --  Return True if the decoration of the attributes associated with extra
-       --  formals are properly set.
  
        procedure Set_Profile_Convention (Subp_Id : Entity_Id);
        --  Set the conventions of all anonymous access-to-subprogram formals and
        --  result subtype of subprogram Subp_Id to the convention of Subp_Id.
  
-       -------------------------
-       -- Check_Extra_Formals --
-       -------------------------
- 
-       function Check_Extra_Formals (E : Entity_Id) return Boolean is
-          Last_Formal       : Entity_Id := Empty;
-          Formal            : Entity_Id;
-          Has_Extra_Formals : Boolean := False;
- 
-       begin
-          --  No check required if expansion is disabled because extra
-          --  formals are only generated when we are generating code.
-          --  See Create_Extra_Formals.
- 
-          if not Expander_Active then
-             return True;
-          end if;
- 
-          --  Check attribute Extra_Formal: If available, it must be set only
-          --  on the last formal of E.
- 
-          Formal := First_Formal (E);
-          while Present (Formal) loop
-             if Present (Extra_Formal (Formal)) then
-                if Has_Extra_Formals then
-                   return False;
-                end if;
- 
-                Has_Extra_Formals := True;
-             end if;
- 
-             Last_Formal := Formal;
-             Next_Formal (Formal);
-          end loop;
- 
-          --  Check attribute Extra_Accessibility_Of_Result
- 
-          if Ekind (E) in E_Function | E_Subprogram_Type
-            and then Needs_Result_Accessibility_Level (E)
-            and then No (Extra_Accessibility_Of_Result (E))
-          then
-             return False;
-          end if;
- 
-          --  Check attribute Extra_Formals: If E has extra formals, then this
-          --  attribute must point to the first extra formal of E.
- 
-          if Has_Extra_Formals then
-             return Present (Extra_Formals (E))
-               and then Present (Extra_Formal (Last_Formal))
-               and then Extra_Formal (Last_Formal) = Extra_Formals (E);
- 
-          --  When E has no formals, the first extra formal is available through
-          --  the Extra_Formals attribute.
- 
-          elsif Present (Extra_Formals (E)) then
-             return No (First_Formal (E));
- 
-          else
-             return True;
-          end if;
-       end Check_Extra_Formals;
- 
        ----------------------------
        -- Set_Profile_Convention --
        ----------------------------
--- 9880,9890 ----
*************** package body Freeze is
*** 10020,10049 ****
        --  that we know the convention.
  
        if not Has_Foreign_Convention (E) then
-          if No (Extra_Formals (E)) then
  
!             --  Extra formals are shared by derived subprograms; therefore, if
!             --  the ultimate alias of E has been frozen before E then the extra
!             --  formals have been added, but the attribute Extra_Formals is
!             --  still unset (and must be set now).
  
!             if Present (Alias (E))
!               and then Is_Frozen (Ultimate_Alias (E))
!               and then Present (Extra_Formals (Ultimate_Alias (E)))
!               and then Last_Formal (Ultimate_Alias (E)) = Last_Formal (E)
!             then
!                Set_Extra_Formals (E, Extra_Formals (Ultimate_Alias (E)));
  
!                if Ekind (E) = E_Function then
!                   Set_Extra_Accessibility_Of_Result (E,
!                     Extra_Accessibility_Of_Result (Ultimate_Alias (E)));
!                end if;
!             else
!                Create_Extra_Formals (E);
!             end if;
           end if;
  
-          pragma Assert (Check_Extra_Formals (E));
           Set_Mechanisms (E);
  
           --  If this is convention Ada and a Valued_Procedure, that's odd
--- 10023,10048 ----
        --  that we know the convention.
  
        if not Has_Foreign_Convention (E) then
  
!          --  Extra formals of dispatching operations are added later by
!          --  Expand_Freeze_Record_Type, which also adds extra formals to
!          --  internal entities built to handle interface types.
  
!          if not Is_Dispatching_Operation (E) then
!             Create_Extra_Formals (E);
  
!             pragma Assert
!               ((Ekind (E) = E_Subprogram_Type
!                   and then Extra_Formals_OK (E))
!                or else
!                  (Is_Subprogram (E)
!                    and then Extra_Formals_OK (E)
!                    and then
!                      (No (Overridden_Operation (E))
!                        or else Extra_Formals_Match_OK (E,
!                                  Ultimate_Alias (Overridden_Operation (E))))));
           end if;
  
           Set_Mechanisms (E);
  
           --  If this is convention Ada and a Valued_Procedure, that's odd
*************** package body Freeze is
*** 10575,10585 ****
           if Present (Old) then
              Error_Msg_Node_2 := Old;
              Error_Msg_N
!               ("default initialization of & may modify &??",
                 Nam);
           else
              Error_Msg_N
!               ("default initialization of & may modify overlaid storage??",
                 Nam);
           end if;
  
--- 10574,10584 ----
           if Present (Old) then
              Error_Msg_Node_2 := Old;
              Error_Msg_N
!               ("default initialization of & may modify &?o?",
                 Nam);
           else
              Error_Msg_N
!               ("default initialization of & may modify overlaid storage?o?",
                 Nam);
           end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/freeze.ads gcc-13.1.0/gcc/ada/freeze.ads
*** gcc-12.2.0/gcc/ada/freeze.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/freeze.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Freeze is
*** 120,131 ****
     --  where the freeze node is preallocated at the point of declaration, so
     --  that the First_Subtype_Link field can be set.
  
-    Freezing_Library_Level_Tagged_Type : Boolean := False;
-    --  Flag used to indicate that we are freezing the primitives of a library
-    --  level tagged type. Used to disable checks on premature freezing.
-    --  More documentation needed??? why is this flag needed? what are these
-    --  checks? why do they need disabling in some cases?
- 
     -----------------
     -- Subprograms --
     -----------------
--- 120,125 ----
*************** package Freeze is
*** 183,197 ****
     --  True when we are processing the body of a primitive with no previous
     --  spec defined after R is frozen (see Check_Dispatching_Operation).
  
-    function Is_Full_Access_Aggregate (N : Node_Id) return Boolean;
-    --  If a full access object is initialized with an aggregate or is assigned
-    --  an aggregate, we have to prevent a piecemeal access or assignment to the
-    --  object, even if the aggregate is to be expanded. We create a temporary
-    --  for the aggregate, and assign the temporary instead, so that the back
-    --  end can generate an atomic move for it. This is only done in the context
-    --  of an object declaration or an assignment. Function is a noop and
-    --  returns false in other contexts.
- 
     procedure Explode_Initialization_Compound_Statement (E : Entity_Id);
     --  If Initialization_Statements (E) is an N_Compound_Statement, insert its
     --  actions in the enclosing list and reset the attribute.
--- 177,182 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/frontend.adb gcc-13.1.0/gcc/ada/frontend.adb
*** gcc-12.2.0/gcc/ada/frontend.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/frontend.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Checks;
*** 30,35 ****
--- 30,36 ----
  with CStand;
  with Debug;          use Debug;
  with Elists;
+ with Exp_Ch6;
  with Exp_Dbug;
  with Exp_Unst;
  with Fmap;
*************** with Ghost;          use Ghost;
*** 38,44 ****
  with Inline;         use Inline;
  with Lib;            use Lib;
  with Lib.Load;       use Lib.Load;
- with Lib.Xref;
  with Live;           use Live;
  with Namet;          use Namet;
  with Nlists;         use Nlists;
--- 39,44 ----
*************** with SCIL_LL;
*** 69,74 ****
--- 69,75 ----
  with Tbuild;         use Tbuild;
  with Types;          use Types;
  with VAST;
+ with Warnsw;         use Warnsw;
  
  procedure Frontend is
  begin
*************** begin
*** 481,487 ****
  
              --  Output waiting warning messages
  
-             Lib.Xref.Process_Deferred_References;
              Sem_Warn.Output_Non_Modified_In_Out_Warnings;
              Sem_Warn.Output_Unreferenced_Messages;
              Sem_Warn.Check_Unused_Withs;
--- 482,487 ----
*************** begin
*** 525,530 ****
--- 525,540 ----
        VAST.Check_Tree (Cunit (Main_Unit));
     end if;
  
+    --  Validate all the subprogram calls; this work will be done by VAST; in
+    --  the meantime it is done to check extra formals and it can be disabled
+    --  using -gnatd_X (which also disables all the other assertions on extra
+    --  formals). It is invoked using pragma Debug to avoid adding any cost
+    --  when the compiler is built with assertions disabled.
+ 
+    if not Debug_Flag_Underscore_XX then
+       pragma Debug (Exp_Ch6.Validate_Subprogram_Calls (Cunit (Main_Unit)));
+    end if;
+ 
     --  Dump the source now. Note that we do this as soon as the analysis
     --  of the tree is complete, because it is not just a dump in the case
     --  of -gnatD, where it rewrites all source locations in the tree.
diff -Nrcpad gcc-12.2.0/gcc/ada/frontend.ads gcc-13.1.0/gcc/ada/frontend.ads
*** gcc-12.2.0/gcc/ada/frontend.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/frontend.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/Make-lang.in gcc-13.1.0/gcc/ada/gcc-interface/Make-lang.in
*** gcc-12.2.0/gcc/ada/gcc-interface/Make-lang.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/Make-lang.in	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  # Top level -*- makefile -*- fragment for GNU Ada (GNAT).
! #   Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
! #   2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
! #   Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Top level -*- makefile -*- fragment for GNU Ada (GNAT).
! # Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** else
*** 260,270 ****
    endif
  endif
  
  # Strip -Werror during linking for the LTO bootstrap
  GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS))
  
! GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(LDFLAGS)
! GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(LDFLAGS)
  
  # Lists of files for various purposes.
  
--- 258,277 ----
    endif
  endif
  
+ ifneq ($(filter darwin9% darwin8%,$(host_os)),)
+ # gnat1 uses exceptions which is incompatible with statically-linked libgcc
+ # on Darwin8 and 9, since gnat1 also pulls in libraries linked with the system
+ # unwinder.
+ GCC_LINKERFLAGS = $(filter-out -Werror -static-libgcc, $(ALL_LINKERFLAGS))
+ GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS))
+ else
  # Strip -Werror during linking for the LTO bootstrap
  GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS))
+ GCC_LDFLAGS = $(LDFLAGS)
+ endif
  
! GCC_LINK=$(LINKER) $(GCC_LINKERFLAGS) $(GCC_LDFLAGS)
! GCC_LLINK=$(LLINKER) $(GCC_LINKERFLAGS) $(GCC_LDFLAGS)
  
  # Lists of files for various purposes.
  
*************** GNAT_ADA_OBJS =	\
*** 399,404 ****
--- 406,412 ----
   ada/sem_ch12.o	\
   ada/sem_ch13.o	\
   ada/sem_ch2.o	\
+  ada/accessibility.o	\
   ada/sem_ch3.o	\
   ada/sem_ch4.o	\
   ada/sem_ch5.o	\
*************** GNAT_ADA_OBJS+= \
*** 486,491 ****
--- 494,501 ----
   ada/libgnat/a-except.o	\
   ada/libgnat/a-exctra.o \
   ada/libgnat/a-ioexce.o	\
+  ada/libgnat/a-nubinu.o	\
+  ada/libgnat/a-numeri.o	\
   ada/libgnat/ada.o	\
   ada/libgnat/g-byorma.o	\
   ada/libgnat/g-heasor.o	\
*************** GNAT_ADA_OBJS+= \
*** 542,548 ****
   ada/libgnat/s-wchcnv.o	\
   ada/libgnat/s-wchcon.o	\
   ada/libgnat/s-wchjis.o	\
!  ada/libgnat/s-wchstw.o
  endif
  
  # Object files for gnat executables
--- 552,559 ----
   ada/libgnat/s-wchcnv.o	\
   ada/libgnat/s-wchcon.o	\
   ada/libgnat/s-wchjis.o	\
!  ada/libgnat/s-wchstw.o	\
!  ada/libgnat/s-widuns.o
  endif
  
  # Object files for gnat executables
*************** GNATBIND_OBJS = \
*** 598,604 ****
   ada/osint-b.o    \
   ada/osint.o      \
   ada/output.o     \
-  ada/restrict.o   \
   ada/rident.o     \
   ada/scans.o      \
   ada/scil_ll.o    \
--- 609,614 ----
*************** GNATBIND_OBJS = \
*** 626,631 ****
--- 636,642 ----
   ada/uintp.o      \
   ada/uname.o      \
   ada/urealp.o     \
+  ada/warnsw.o     \
   ada/widechar.o   \
   ada/gnat.o       \
   ada/g-dynhta.o   \
*************** GNATBIND_OBJS +=  \
*** 649,654 ****
--- 660,667 ----
   ada/libgnat/a-assert.o   \
   ada/libgnat/a-elchha.o   \
   ada/libgnat/a-except.o   \
+  ada/libgnat/a-nubinu.o   \
+  ada/libgnat/a-numeri.o   \
   ada/libgnat/ada.o        \
   ada/libgnat/g-byorma.o   \
   ada/libgnat/g-hesora.o   \
*************** GNATBIND_OBJS +=  \
*** 693,698 ****
--- 706,712 ----
   ada/libgnat/s-wchcon.o   \
   ada/libgnat/s-wchjis.o   \
   ada/libgnat/s-wchstw.o   \
+  ada/libgnat/s-widuns.o   \
   ada/adaint.o     \
   ada/argv.o       \
   ada/cio.o        \
*************** ada/generated/gnatvsn.ads: ada/gnatvsn.a
*** 1152,1158 ****
  	s=`cat $(srcdir)/BASE-VER | sed -e "s/\([0-9]*\)\.\([0-9]*\)\..*/-\1\2/g"`; \
  	d=`if test -f $(srcdir)/ada/GNAT_DATE; then \
             cat $(srcdir)/ada/GNAT_DATE; else date +%Y%m%d; fi`; \
! 	cat $< | sed -e "/Version/s/(\([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]\).*)/($$d$$s)/g" >$@
  
  ada/gnatvsn.o : ada/gnatvsn.adb ada/generated/gnatvsn.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
--- 1166,1172 ----
  	s=`cat $(srcdir)/BASE-VER | sed -e "s/\([0-9]*\)\.\([0-9]*\)\..*/-\1\2/g"`; \
  	d=`if test -f $(srcdir)/ada/GNAT_DATE; then \
             cat $(srcdir)/ada/GNAT_DATE; else date +%Y%m%d; fi`; \
! 	cat $< | sed -e "/Version/s/(\([0-9]\{8\}\).*)/($$d$$s)/g" >$@
  
  ada/gnatvsn.o : ada/gnatvsn.adb ada/generated/gnatvsn.ads
  	$(CC) -c $(ALL_ADAFLAGS) $(ADA_INCLUDES) $< $(ADA_OUTPUT_OPTION)
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/Makefile.in gcc-13.1.0/gcc/ada/gcc-interface/Makefile.in
*** gcc-12.2.0/gcc/ada/gcc-interface/Makefile.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/Makefile.in	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Makefile for GNU Ada Compiler (GNAT).
! #   Copyright (C) 1994-2018 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Makefile for GNU Ada Compiler (GNAT).
! #   Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** GNATMAKE_OBJS = a-except.o ali.o ali-uti
*** 333,339 ****
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
   switch.o switch-m.o table.o targparm.o tempdir.o types.o uintp.o \
!  uname.o urealp.o usage.o widechar.o \
   seinfo.o einfo-entities.o einfo-utils.o sinfo-nodes.o sinfo-utils.o \
   $(EXTRA_GNATMAKE_OBJS)
  
--- 333,339 ----
   s-purexc.o s-htable.o scil_ll.o sem_aux.o sinfo.o sinput.o sinput-c.o \
   snames.o stand.o stringt.o styleg.o stylesw.o system.o validsw.o \
   switch.o switch-m.o table.o targparm.o tempdir.o types.o uintp.o \
!  uname.o urealp.o usage.o widechar.o warnsw.o \
   seinfo.o einfo-entities.o einfo-utils.o sinfo-nodes.o sinfo-utils.o \
   $(EXTRA_GNATMAKE_OBJS)
  
*************** install-gnatlib: ../stamp-gnatlib-$(RTSD
*** 588,596 ****
  	touch ../stamp-gnatlib1-$(RTSDIR)
  
  # GCC_FOR_TARGET has paths relative to the gcc directory, so we need to adjust
! # for running it from ada/rts
  
! OSCONS_CC=$(subst ./xgcc,../../xgcc,$(subst -B./, -B../../,$(GCC_FOR_TARGET)))
  
  # The main ada source directory must be on the include path for #include "..."
  # because s-oscons-tmplt.c requires adaint.h, gsocket.h, and any file included
--- 588,596 ----
  	touch ../stamp-gnatlib1-$(RTSDIR)
  
  # GCC_FOR_TARGET has paths relative to the gcc directory, so we need to adjust
! # for running it from ada/rts.
  
! GCC_FOR_ADA_RTS=$(subst ./xgcc,../../xgcc,$(subst -B./, -B../../,$(GCC_FOR_TARGET)))
  
  # The main ada source directory must be on the include path for #include "..."
  # because s-oscons-tmplt.c requires adaint.h, gsocket.h, and any file included
*************** OSCONS_CC=$(subst ./xgcc,../../xgcc,$(su
*** 598,606 ****
  # ada/types.h does not conflict with a same-named system header (VxWorks
  # has a <types.h> header).
  
! OSCONS_CPP=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -E -C \
    -DTARGET=\"$(target_noncanonical)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
! OSCONS_EXTRACT=$(OSCONS_CC) $(GNATLIBCFLAGS_FOR_C) -S s-oscons-tmplt.i
  
  # Note: if you need to build with a non-GNU compiler, you could adapt the
  # following definitions (written for VMS DEC-C)
--- 598,606 ----
  # ada/types.h does not conflict with a same-named system header (VxWorks
  # has a <types.h> header).
  
! OSCONS_CPP=$(GCC_FOR_ADA_RTS) $(GNATLIBCFLAGS_FOR_C) -E -C \
    -DTARGET=\"$(target_noncanonical)\" -iquote $(fsrcpfx)ada $(fsrcpfx)ada/s-oscons-tmplt.c > s-oscons-tmplt.i
! OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNATLIBCFLAGS_FOR_C) -S s-oscons-tmplt.i
  
  # Note: if you need to build with a non-GNU compiler, you could adapt the
  # following definitions (written for VMS DEC-C)
*************** gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../
*** 629,636 ****
  	test -f $(RTSDIR)/s-oscons.ads || exit 1
  # C files
  	$(MAKE) -C $(RTSDIR) \
! 		CC="`echo \"$(GCC_FOR_TARGET)\" \
! 		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
  	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
                  CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
  	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
--- 629,635 ----
  	test -f $(RTSDIR)/s-oscons.ads || exit 1
  # C files
  	$(MAKE) -C $(RTSDIR) \
! 		CC="$(GCC_FOR_ADA_RTS)" \
  	        INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
                  CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
  	        FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \
*************** gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../
*** 638,645 ****
  	        -f ../Makefile $(LIBGNAT_OBJS) $(EXTRA_ADALIB_OBJS)
  # Ada files
  	$(MAKE) -C $(RTSDIR) \
! 		CC="`echo \"$(GCC_FOR_TARGET)\" \
! 		| sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \
  	        ADA_INCLUDES="" \
                  CFLAGS="$(GNATLIBCFLAGS)" \
  	        ADAFLAGS="$(GNATLIBFLAGS)" \
--- 637,643 ----
  	        -f ../Makefile $(LIBGNAT_OBJS) $(EXTRA_ADALIB_OBJS)
  # Ada files
  	$(MAKE) -C $(RTSDIR) \
! 		CC="$(GCC_FOR_ADA_RTS)" \
  	        ADA_INCLUDES="" \
                  CFLAGS="$(GNATLIBCFLAGS)" \
  	        ADAFLAGS="$(GNATLIBFLAGS)" \
*************** gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../
*** 665,686 ****
  gnatlib-shared-default:
  	$(MAKE) $(FLAGS_TO_PASS) \
               GNATLIBFLAGS="$(GNATLIBFLAGS)" \
! 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET)" \
! 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET)" \
  	     MULTISUBDIR="$(MULTISUBDIR)" \
  	     THREAD_KIND="$(THREAD_KIND)" \
  	     LN_S="$(LN_S)" \
               gnatlib
  	$(RM) $(RTSDIR)/libgna*$(soext)
! 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
!                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
  		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(MISCLIB) -lm
! 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
!                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared $(GNATLIBCFLAGS) \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_TASKING_OBJS) \
--- 663,682 ----
  gnatlib-shared-default:
  	$(MAKE) $(FLAGS_TO_PASS) \
               GNATLIBFLAGS="$(GNATLIBFLAGS)" \
! 	     GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \
! 	     GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \
  	     MULTISUBDIR="$(MULTISUBDIR)" \
  	     THREAD_KIND="$(THREAD_KIND)" \
  	     LN_S="$(LN_S)" \
               gnatlib
  	$(RM) $(RTSDIR)/libgna*$(soext)
! 	cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
  		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(MISCLIB) -lm
! 	cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_TASKING_OBJS) \
*************** gnatlib-shared-win32:
*** 764,777 ****
  	$(RM) $(RTSDIR)/libgna*$(soext)
  	$(CP) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnat_pic$(arext)
  	$(CP) $(RTSDIR)/libgnarl$(arext) $(RTSDIR)/libgnarl_pic$(arext)
! 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
!                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
  		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB)
! 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
!                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -shared -shared-libgcc \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_TASKING_OBJS) \
--- 760,771 ----
  	$(RM) $(RTSDIR)/libgna*$(soext)
  	$(CP) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnat_pic$(arext)
  	$(CP) $(RTSDIR)/libgnarl$(arext) $(RTSDIR)/libgnarl_pic$(arext)
! 	cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared -shared-libgcc \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
  		$(SO_OPTS)libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) $(MISCLIB)
! 	cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared -shared-libgcc \
  		$(PICFLAG_FOR_TARGET) \
  		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_TASKING_OBJS) \
*************** gnatlib-shared-darwin:
*** 790,804 ****
  	$(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext)
  	$(CP) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnat_pic$(arext)
  	$(CP) $(RTSDIR)/libgnarl$(arext) $(RTSDIR)/libgnarl_pic$(arext)
! 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
!                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \
  		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
  		$(SO_OPTS) \
  		-Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(MISCLIB)
! 	cd $(RTSDIR); `echo "$(GCC_FOR_TARGET)" \
!                 | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'` -dynamiclib $(PICFLAG_FOR_TARGET) \
  		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_TASKING_OBJS) \
  		$(SO_OPTS) \
--- 784,796 ----
  	$(RM) $(RTSDIR)/libgnat$(soext) $(RTSDIR)/libgnarl$(soext)
  	$(CP) $(RTSDIR)/libgnat$(arext) $(RTSDIR)/libgnat_pic$(arext)
  	$(CP) $(RTSDIR)/libgnarl$(arext) $(RTSDIR)/libgnarl_pic$(arext)
! 	cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -dynamiclib $(PICFLAG_FOR_TARGET) \
  		-o libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
  		$(SO_OPTS) \
  		-Wl,-install_name,@rpath/libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(MISCLIB)
! 	cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -dynamiclib $(PICFLAG_FOR_TARGET) \
  		-o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \
  		$(GNATRTL_TASKING_OBJS) \
  		$(SO_OPTS) \
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/ada-builtin-types.def gcc-13.1.0/gcc/ada/gcc-interface/ada-builtin-types.def
*** gcc-12.2.0/gcc/ada/gcc-interface/ada-builtin-types.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/ada-builtin-types.def	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* This file contains the type definitions for the builtins exclusively
     used in the GNU Ada compiler.
  
!    Copyright (C) 2019 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 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.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 22,25 ****
--- 22,26 ----
  /* See builtin-types.def for details.  */
  
  DEF_FUNCTION_TYPE_1 (BT_FN_BOOL_BOOL, BT_BOOL, BT_BOOL)
+ DEF_FUNCTION_TYPE_1 (BT_FN_PTR_SSIZE, BT_PTR, BT_SSIZE)
  DEF_FUNCTION_TYPE_2 (BT_FN_BOOL_BOOL_BOOL, BT_BOOL, BT_BOOL, BT_BOOL)
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/ada-builtins.def gcc-13.1.0/gcc/ada/gcc-interface/ada-builtins.def
*** gcc-12.2.0/gcc/ada/gcc-interface/ada-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/ada-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* This file contains the definitions for the builtins exclusively used
     in the GNU Ada compiler.
  
!    Copyright (C) 2019 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 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.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 28,30 ****
--- 28,31 ----
  DEF_ADA_BUILTIN        (BUILT_IN_EXPECT, "expect", BT_FN_BOOL_BOOL_BOOL, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_ADA_BUILTIN        (BUILT_IN_LIKELY, "likely", BT_FN_BOOL_BOOL, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_ADA_BUILTIN        (BUILT_IN_UNLIKELY, "unlikely", BT_FN_BOOL_BOOL, ATTR_CONST_NOTHROW_LEAF_LIST)
+ DEF_ADA_BUILTIN        (BUILT_IN_RETURN_SLOT, "return_slot", BT_FN_PTR_SSIZE, ATTR_CONST_NOTHROW_LEAF_LIST)
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/ada-tree.def gcc-13.1.0/gcc/ada/gcc-interface/ada-tree.def
*** gcc-12.2.0/gcc/ada/gcc-interface/ada-tree.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/ada-tree.def	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              Specification                               *
   *                                                                          *
!  *            Copyright (C) 1992-2009, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              Specification                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** DEFTREECODE (UNCONSTRAINED_ARRAY_TYPE, "
*** 35,40 ****
--- 35,44 ----
  DEFTREECODE (UNCONSTRAINED_ARRAY_REF, "unconstrained_array_ref",
  	     tcc_reference, 1)
  
+ /* Same as SAVE_EXPR, but operand 1 contains the statement used to initialize
+    the temporary instead of using the value of operand 0 directly.  */
+ DEFTREECODE (LOAD_EXPR, "load_expr", tcc_expression, 2)
+ 
  /* An expression that returns an RTL suitable for its type.  Operand 0
     is an expression to be evaluated for side effects only.  */
  DEFTREECODE (NULL_EXPR, "null_expr", tcc_expression, 1)
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/ada-tree.h gcc-13.1.0/gcc/ada/gcc-interface/ada-tree.h
*** gcc-12.2.0/gcc/ada/gcc-interface/ada-tree.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/ada-tree.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** do {							 \
*** 97,107 ****
     an Ada array other than the first.  */
  #define TYPE_MULTI_ARRAY_P(NODE) TYPE_LANG_FLAG_1 (ARRAY_TYPE_CHECK (NODE))
  
- /* For FUNCTION_TYPE and METHOD_TYPE, nonzero if function returns an
-    unconstrained array or record type.  */
- #define TYPE_RETURN_UNCONSTRAINED_P(NODE) \
-   TYPE_LANG_FLAG_1 (FUNC_OR_METHOD_CHECK (NODE))
- 
  /* For RECORD_TYPE, UNION_TYPE, and QUAL_UNION_TYPE, nonzero if this denotes
     a justified modular type (will only be true for RECORD_TYPE).  */
  #define TYPE_JUSTIFIED_MODULAR_P(NODE) \
--- 97,102 ----
*************** do {						   \
*** 577,581 ****
  
  /* Small kludge to be able to define Ada built-in functions locally.
     We overload them on top of the C++ coroutines builtin functions.  */
! #define BUILT_IN_LIKELY   BUILT_IN_CORO_PROMISE
! #define BUILT_IN_UNLIKELY BUILT_IN_CORO_RESUME
--- 572,577 ----
  
  /* Small kludge to be able to define Ada built-in functions locally.
     We overload them on top of the C++ coroutines builtin functions.  */
! #define BUILT_IN_LIKELY      BUILT_IN_CORO_PROMISE
! #define BUILT_IN_UNLIKELY    BUILT_IN_CORO_RESUME
! #define BUILT_IN_RETURN_SLOT BUILT_IN_CORO_DESTROY
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/ada.h gcc-13.1.0/gcc/ada/gcc-interface/ada.h
*** gcc-12.2.0/gcc/ada/gcc-interface/ada.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/ada.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/config-lang.in gcc-13.1.0/gcc/ada/gcc-interface/config-lang.in
*** gcc-12.2.0/gcc/ada/gcc-interface/config-lang.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/config-lang.in	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Top level configure fragment for GNU Ada (GNAT).
! #   Copyright (C) 1994-2013 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Top level configure fragment for GNU Ada (GNAT).
! #   Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/cuintp.cc gcc-13.1.0/gcc/ada/gcc-interface/cuintp.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/cuintp.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/cuintp.cc	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/decl.cc gcc-13.1.0/gcc/ada/gcc-interface/decl.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/decl.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/decl.cc	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** static tree gnat_to_gnu_subprog_type (En
*** 212,217 ****
--- 212,218 ----
  static int adjust_packed (tree, tree, int);
  static tree gnat_to_gnu_field (Entity_Id, tree, int, bool, bool);
  static enum inline_status_t inline_status_for_subprog (Entity_Id);
+ static Entity_Id Gigi_Cloned_Subtype (Entity_Id);
  static tree gnu_ext_name_for_subprog (Entity_Id, tree);
  static void set_nonaliased_component_on_array_type (tree);
  static void set_reverse_storage_order_on_array_type (tree);
*************** static bool constructor_address_p (tree)
*** 224,230 ****
  static bool allocatable_size_p (tree, bool);
  static bool initial_value_needs_conversion (tree, tree);
  static tree update_n_elem (tree, tree, tree);
! static int compare_field_bitpos (const PTR, const PTR);
  static bool components_to_record (Node_Id, Entity_Id, tree, tree, int, bool,
  				  bool, bool, bool, bool, bool, bool, tree,
  				  tree *);
--- 225,231 ----
  static bool allocatable_size_p (tree, bool);
  static bool initial_value_needs_conversion (tree, tree);
  static tree update_n_elem (tree, tree, tree);
! static int compare_field_bitpos (const void *, const void *);
  static bool components_to_record (Node_Id, Entity_Id, tree, tree, int, bool,
  				  bool, bool, bool, bool, bool, bool, tree,
  				  tree *);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 301,308 ****
    const bool foreign = Has_Foreign_Convention (gnat_entity);
    /* For a type, contains the equivalent GNAT node to be used in gigi.  */
    Entity_Id gnat_equiv_type = Empty;
!   /* For a type, contains the GNAT node to be used for back-annotation.  */
!   Entity_Id gnat_annotate_type = Empty;
    /* Temporary used to walk the GNAT tree.  */
    Entity_Id gnat_temp;
    /* Contains the GCC DECL node which is equivalent to the input GNAT node.
--- 302,309 ----
    const bool foreign = Has_Foreign_Convention (gnat_entity);
    /* For a type, contains the equivalent GNAT node to be used in gigi.  */
    Entity_Id gnat_equiv_type = Empty;
!   /* For a subtype, contains the GNAT node to be used  as cloned subtype.  */
!   Entity_Id gnat_cloned_subtype = Empty;
    /* Temporary used to walk the GNAT tree.  */
    Entity_Id gnat_temp;
    /* Contains the GCC DECL node which is equivalent to the input GNAT node.
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 346,355 ****
        && !present_gnu_tree (gnat_entity)
        && In_Extended_Main_Code_Unit (gnat_entity))
      {
!       /* Ensure that we are in a subprogram mentioned in the Scope chain of
  	 this entity, our current scope is global, or we encountered a task
  	 or entry (where we can't currently accurately check scoping).  */
!       if (!current_function_decl
  	  || DECL_ELABORATION_PROC_P (current_function_decl))
  	{
  	  process_type (gnat_entity);
--- 347,358 ----
        && !present_gnu_tree (gnat_entity)
        && In_Extended_Main_Code_Unit (gnat_entity))
      {
!       /* Unless it's for an anonymous access type, whose scope is irrelevant,
! 	 ensure that we are in a subprogram mentioned in the Scope chain of
  	 this entity, our current scope is global, or we encountered a task
  	 or entry (where we can't currently accurately check scoping).  */
!       if (Ekind (gnat_entity) == E_Anonymous_Access_Type
! 	  || !current_function_decl
  	  || DECL_ELABORATION_PROC_P (current_function_decl))
  	{
  	  process_type (gnat_entity);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 363,372 ****
  	  if (Is_Type (gnat_temp))
  	    gnat_temp = Underlying_Type (gnat_temp);
  
- 	  if (Ekind (gnat_temp) == E_Subprogram_Body)
- 	    gnat_temp
- 	      = Corresponding_Spec (Parent (Declaration_Node (gnat_temp)));
- 
  	  if (Is_Subprogram (gnat_temp)
  	      && Present (Protected_Body_Subprogram (gnat_temp)))
  	    gnat_temp = Protected_Body_Subprogram (gnat_temp);
--- 366,371 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 437,443 ****
    /* If this is a numeric or enumeral type, or an access type, a nonzero Esize
       must be specified unless it was specified by the programmer.  Exceptions
       are for access-to-protected-subprogram types and all access subtypes, as
!      another GNAT type is used to lay out the GCC type for them.  */
    gcc_assert (!is_type
  	      || Known_Esize (gnat_entity)
  	      || Has_Size_Clause (gnat_entity)
--- 436,443 ----
    /* If this is a numeric or enumeral type, or an access type, a nonzero Esize
       must be specified unless it was specified by the programmer.  Exceptions
       are for access-to-protected-subprogram types and all access subtypes, as
!      another GNAT type is used to lay out the GCC type for them, as well as
!      access-to-subprogram types if front-end unnesting is enabled.  */
    gcc_assert (!is_type
  	      || Known_Esize (gnat_entity)
  	      || Has_Size_Clause (gnat_entity)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 446,451 ****
--- 446,454 ----
  		  && (!IN (kind, Access_Kind)
  		      || kind == E_Access_Protected_Subprogram_Type
  		      || kind == E_Anonymous_Access_Protected_Subprogram_Type
+ 		      || ((kind == E_Access_Subprogram_Type
+ 			   || kind == E_Anonymous_Access_Subprogram_Type)
+ 			  && Unnest_Subprogram_Mode)
  		      || kind == E_Access_Subtype
  		      || type_annotate_only)));
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 651,658 ****
  	 like variables.  */
        if (definition
  	  && !gnu_expr
- 	  && No (Address_Clause (gnat_entity))
  	  && !No_Initialization (gnat_decl)
  	  && No (gnat_renamed_obj))
  	{
  	  gnu_decl = error_mark_node;
--- 654,661 ----
  	 like variables.  */
        if (definition
  	  && !gnu_expr
  	  && !No_Initialization (gnat_decl)
+ 	  && No (Address_Clause (gnat_entity))
  	  && No (gnat_renamed_obj))
  	{
  	  gnu_decl = error_mark_node;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 702,707 ****
--- 705,711 ----
      case E_Variable:
        {
  	const Entity_Id gnat_type = Etype (gnat_entity);
+ 	const Entity_Id gnat_und_type = Underlying_Type (gnat_type);
  	/* Always create a variable for volatile objects and variables seen
  	   constant but with a Linker_Section pragma.  */
  	bool const_flag
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 740,746 ****
  	  }
  
  	/* Get the type after elaborating the renamed object.  */
! 	if (foreign && Is_Descendant_Of_Address (Underlying_Type (gnat_type)))
  	  gnu_type = ptr_type_node;
  	else
  	  gnu_type = gnat_to_gnu_type (gnat_type);
--- 744,750 ----
  	  }
  
  	/* Get the type after elaborating the renamed object.  */
! 	if (foreign && Is_Descendant_Of_Address (gnat_und_type))
  	  gnu_type = ptr_type_node;
  	else
  	  gnu_type = gnat_to_gnu_type (gnat_type);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 771,776 ****
--- 775,785 ----
  	if (kind == E_Loop_Parameter)
  	  gnu_type = get_base_type (gnu_type);
  
+ 	/* If this is a simple constant, strip the qualifiers from its type,
+ 	   since the constant represents only its value.  */
+ 	else if (simple_constant_p (gnat_entity))
+ 	  gnu_type = TYPE_MAIN_VARIANT (gnu_type);
+ 
  	/* Reject non-renamed objects whose type is an unconstrained array or
  	   any object whose type is a dummy type or void.  */
  	if ((TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 938,944 ****
  	   subtype, make a type that includes the template.  We will either
  	   allocate or create a variable of that type, see below.  */
  	if (Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && Is_Array_Type (Underlying_Type (gnat_type))
  	    && !type_annotate_only)
  	  {
  	    tree gnu_array = gnat_to_gnu_type (Base_Type (gnat_type));
--- 947,953 ----
  	   subtype, make a type that includes the template.  We will either
  	   allocate or create a variable of that type, see below.  */
  	if (Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && Is_Array_Type (gnat_und_type)
  	    && !type_annotate_only)
  	  {
  	    tree gnu_array = gnat_to_gnu_type (Base_Type (gnat_type));
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 987,994 ****
  	/* If the object is aliased, of a constrained nominal subtype and its
  	   size might be zero at run time, we force at least the unit size.  */
  	if (Is_Aliased (gnat_entity)
  	    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && Is_Array_Type (Underlying_Type (gnat_type))
  	    && !TREE_CONSTANT (gnu_object_size))
  	  gnu_size = size_binop (MAX_EXPR, gnu_object_size, bitsize_unit_node);
  
--- 996,1004 ----
  	/* If the object is aliased, of a constrained nominal subtype and its
  	   size might be zero at run time, we force at least the unit size.  */
  	if (Is_Aliased (gnat_entity)
+ 	    && Is_Constrained (gnat_type)
  	    && !Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && Is_Array_Type (gnat_und_type)
  	    && !TREE_CONSTANT (gnu_object_size))
  	  gnu_size = size_binop (MAX_EXPR, gnu_object_size, bitsize_unit_node);
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1237,1243 ****
  	       subtype, then it can overlay only another aliased object with an
  	       unconstrained array nominal subtype and compatible template.  */
  	    if (Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 		&& Is_Array_Type (Underlying_Type (gnat_type))
  		&& !type_annotate_only)
  	      {
  		tree rec_type = TREE_TYPE (gnu_type);
--- 1247,1253 ----
  	       subtype, then it can overlay only another aliased object with an
  	       unconstrained array nominal subtype and compatible template.  */
  	    if (Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 		&& Is_Array_Type (gnat_und_type)
  		&& !type_annotate_only)
  	      {
  		tree rec_type = TREE_TYPE (gnu_type);
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1478,1484 ****
  	   object.  Note that we have to do it this late because of the
  	   couple of allocation adjustments that might be made above.  */
  	if (Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && Is_Array_Type (Underlying_Type (gnat_type))
  	    && !type_annotate_only)
  	  {
  	    /* In case the object with the template has already been allocated
--- 1488,1494 ----
  	   object.  Note that we have to do it this late because of the
  	   couple of allocation adjustments that might be made above.  */
  	if (Is_Constr_Subt_For_UN_Aliased (gnat_type)
! 	    && Is_Array_Type (gnat_und_type)
  	    && !type_annotate_only)
  	  {
  	    /* In case the object with the template has already been allocated
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1597,1610 ****
  	if (TREE_CODE (gnu_decl) == CONST_DECL)
  	  DECL_CONST_ADDRESS_P (gnu_decl) = constructor_address_p (gnu_expr);
  
- 	/* If this object is declared in a block that contains a block with an
- 	   exception handler, and we aren't using the GCC exception mechanism,
- 	   we must force this variable in memory in order to avoid an invalid
- 	   optimization.  */
- 	if (Front_End_Exceptions ()
- 	    && Has_Nested_Block_With_Handler (Scope (gnat_entity)))
- 	  TREE_ADDRESSABLE (gnu_decl) = 1;
- 
  	/* If this is a local variable with non-BLKmode and aggregate type,
  	   and optimization isn't enabled, then force it in memory so that
  	   a register won't be allocated to it with possible subparts left
--- 1607,1612 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1618,1641 ****
  		 && !optimize)
  	  TREE_ADDRESSABLE (gnu_decl) = 1;
  
- 	/* If we are defining an object with variable size or an object with
- 	   fixed size that will be dynamically allocated, and we are using the
- 	   front-end setjmp/longjmp exception mechanism, update the setjmp
- 	   buffer.  */
- 	if (definition
- 	    && Exception_Mechanism == Front_End_SJLJ
- 	    && get_block_jmpbuf_decl ()
- 	    && DECL_SIZE_UNIT (gnu_decl)
- 	    && (TREE_CODE (DECL_SIZE_UNIT (gnu_decl)) != INTEGER_CST
- 		|| (flag_stack_check == GENERIC_STACK_CHECK
- 		    && compare_tree_int (DECL_SIZE_UNIT (gnu_decl),
- 					 STACK_CHECK_MAX_VAR_SIZE) > 0)))
- 	  add_stmt_with_node (build_call_n_expr
- 			      (update_setjmp_buf_decl, 1,
- 			       build_unary_op (ADDR_EXPR, NULL_TREE,
- 					       get_block_jmpbuf_decl ())),
- 			      gnat_entity);
- 
  	/* Back-annotate Esize and Alignment of the object if not already
  	   known.  Note that we pick the values of the type, not those of
  	   the object, to shield ourselves from low-level platform-dependent
--- 1620,1625 ----
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 1817,1822 ****
--- 1801,1809 ----
      case E_Modular_Integer_Subtype:
      case E_Ordinary_Fixed_Point_Subtype:
      case E_Decimal_Fixed_Point_Subtype:
+       gnat_cloned_subtype = Gigi_Cloned_Subtype (gnat_entity);
+       if (Present (gnat_cloned_subtype))
+ 	break;
  
        /* For integral subtypes, we make a new INTEGER_TYPE.  Note that we do
  	 not want to call create_range_type since we would like each subtype
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2045,2050 ****
--- 2032,2041 ----
        break;
  
      case E_Floating_Point_Subtype:
+       gnat_cloned_subtype = Gigi_Cloned_Subtype (gnat_entity);
+       if (Present (gnat_cloned_subtype))
+ 	break;
+ 
        /* See the E_Signed_Integer_Subtype case for the rationale.  */
        if (!definition
  	  && Present (Ancestor_Subtype (gnat_entity))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2112,2126 ****
  	const bool convention_fortran_p
  	  = (Convention (gnat_entity) == Convention_Fortran);
  	const int ndim = Number_Dimensions (gnat_entity);
! 	tree gnu_template_type;
! 	tree gnu_ptr_template;
! 	tree gnu_template_reference, gnu_template_fields, gnu_fat_type;
  	tree *gnu_index_types = XALLOCAVEC (tree, ndim);
  	tree *gnu_temp_fields = XALLOCAVEC (tree, ndim);
! 	tree gnu_max_size = size_one_node, tem, obj;
  	Entity_Id gnat_index;
  	int index;
- 	tree comp_type;
  
  	/* Create the type for the component now, as it simplifies breaking
  	   type reference loops.  */
--- 2103,2117 ----
  	const bool convention_fortran_p
  	  = (Convention (gnat_entity) == Convention_Fortran);
  	const int ndim = Number_Dimensions (gnat_entity);
! 	tree gnu_fat_type, gnu_template_type, gnu_ptr_template;
! 	tree gnu_template_reference, gnu_template_fields;
  	tree *gnu_index_types = XALLOCAVEC (tree, ndim);
  	tree *gnu_temp_fields = XALLOCAVEC (tree, ndim);
! 	tree gnu_max_size = size_one_node;
! 	tree comp_type, tem, obj;
  	Entity_Id gnat_index;
+ 	alias_set_type ptr_set = -1;
  	int index;
  
  	/* Create the type for the component now, as it simplifies breaking
  	   type reference loops.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2164,2169 ****
--- 2155,2162 ----
  	   suppress expanding incomplete types.  */
  	gnu_type = make_node (UNCONSTRAINED_ARRAY_TYPE);
  
+ 	/* The component may refer to this type, so defer completion of any
+ 	   incomplete types.  */
  	if (!definition)
  	  {
  	    defer_incomplete_level++;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2189,2194 ****
--- 2182,2189 ----
  	if (COMPLETE_TYPE_P (gnu_fat_type))
  	  {
  	    tem = TYPE_FIELDS (gnu_fat_type);
+ 	    if (TYPE_ALIAS_SET_KNOWN_P (TREE_TYPE (tem)))
+ 	      ptr_set = TYPE_ALIAS_SET (TREE_TYPE (tem));
  	    TREE_TYPE (tem) = ptr_type_node;
  	    TREE_TYPE (DECL_CHAIN (tem)) = gnu_ptr_template;
  	    TYPE_DECL_SUPPRESS_DEBUG (TYPE_STUB_DECL (gnu_fat_type)) = 0;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2273,2278 ****
--- 2268,2275 ----
  					      gnu_index_type,
  					      gnu_template_type, NULL_TREE,
  					      NULL_TREE, 0, 0);
+ 	    /* Mark the field specifically for INSTANTIATE_LOAD_IN_EXPR.  */
+ 	    DECL_DISCRIMINANT_NUMBER (gnu_lb_field) = integer_minus_one_node;
  	    Sloc_to_locus (Sloc (gnat_entity),
  			   &DECL_SOURCE_LOCATION (gnu_lb_field));
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2281,2286 ****
--- 2278,2285 ----
  					      gnu_index_type,
  					      gnu_template_type, NULL_TREE,
  					      NULL_TREE, 0, 0);
+ 	    /* Mark the field specifically for INSTANTIATE_LOAD_IN_EXPR.  */
+ 	    DECL_DISCRIMINANT_NUMBER (gnu_hb_field) = integer_minus_one_node;
  	    Sloc_to_locus (Sloc (gnat_entity),
  			   &DECL_SOURCE_LOCATION (gnu_hb_field));
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2397,2403 ****
  	  tem = change_qualified_type (tem, TYPE_QUAL_VOLATILE);
  
  	/* Adjust the type of the pointer-to-array field of the fat pointer
! 	   and record the aliasing relationships if necessary.  If this is
  	   a packed type implemented specially, then use a ref-all pointer
  	   type since the implementation type may vary between constrained
  	   subtypes and unconstrained base type.  */
--- 2396,2405 ----
  	  tem = change_qualified_type (tem, TYPE_QUAL_VOLATILE);
  
  	/* Adjust the type of the pointer-to-array field of the fat pointer
! 	   and preserve its existing alias set, if any.  Note that calling
! 	   again record_component_aliases on the fat pointer is not enough
! 	   because this may leave dangling references to the existing alias
! 	   set from types containing a fat pointer component.  If this is
  	   a packed type implemented specially, then use a ref-all pointer
  	   type since the implementation type may vary between constrained
  	   subtypes and unconstrained base type.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2406,2413 ****
  	    = build_pointer_type_for_mode (tem, ptr_mode, true);
  	else
  	  TREE_TYPE (TYPE_FIELDS (gnu_fat_type)) = build_pointer_type (tem);
! 	if (TYPE_ALIAS_SET_KNOWN_P (gnu_fat_type))
! 	  record_component_aliases (gnu_fat_type);
  
  	/* If the maximum size doesn't overflow, use it.  */
  	if (gnu_max_size
--- 2408,2415 ----
  	    = build_pointer_type_for_mode (tem, ptr_mode, true);
  	else
  	  TREE_TYPE (TYPE_FIELDS (gnu_fat_type)) = build_pointer_type (tem);
! 	if (ptr_set != -1)
! 	  TYPE_ALIAS_SET (TREE_TYPE (TYPE_FIELDS (gnu_fat_type))) = ptr_set;
  
  	/* If the maximum size doesn't overflow, use it.  */
  	if (gnu_max_size
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 2449,2454 ****
--- 2451,2459 ----
        break;
  
      case E_Array_Subtype:
+       gnat_cloned_subtype = Gigi_Cloned_Subtype (gnat_entity);
+       if (Present (gnat_cloned_subtype))
+ 	break;
  
        /* This is the actual data type for array variables.  Multidimensional
  	 arrays are implemented as arrays of arrays.  Note that arrays which
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3096,3102 ****
  
  	process_attributes (&gnu_type, &attr_list, true, gnat_entity);
  
! 	/* If we are not defining it, suppress expanding incomplete types.  */
  	if (!definition)
  	  {
  	    defer_incomplete_level++;
--- 3101,3108 ----
  
  	process_attributes (&gnu_type, &attr_list, true, gnat_entity);
  
! 	/* Some component may refer to this type, so defer completion of any
! 	   incomplete types.  */
  	if (!definition)
  	  {
  	    defer_incomplete_level++;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3445,3462 ****
        /* ... fall through ... */
  
      case E_Record_Subtype:
!       /* If Cloned_Subtype is Present it means this record subtype has
! 	 identical layout to that type or subtype and we should use
! 	 that GCC type for this one.  The front-end guarantees that
! 	 the component list is shared.  */
!       if (Present (Cloned_Subtype (gnat_entity)))
! 	{
! 	  gnu_decl = gnat_to_gnu_entity (Cloned_Subtype (gnat_entity),
! 					 NULL_TREE, false);
! 	  gnat_annotate_type = Cloned_Subtype (gnat_entity);
! 	  maybe_present = true;
! 	  break;
! 	}
  
        /* Otherwise, first ensure the base type is elaborated.  Then, if we are
  	 changing the type, make a new type with each field having the type of
--- 3451,3459 ----
        /* ... fall through ... */
  
      case E_Record_Subtype:
!       gnat_cloned_subtype = Gigi_Cloned_Subtype (gnat_entity);
!       if (Present (gnat_cloned_subtype))
! 	break;
  
        /* Otherwise, first ensure the base type is elaborated.  Then, if we are
  	 changing the type, make a new type with each field having the type of
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3469,3475 ****
  	{
  	  Entity_Id gnat_base_type = Implementation_Base_Type (gnat_entity);
  
! 	  if (!definition)
  	    {
  	      defer_incomplete_level++;
  	      this_deferred = true;
--- 3466,3479 ----
  	{
  	  Entity_Id gnat_base_type = Implementation_Base_Type (gnat_entity);
  
! 	  /* Some component may refer to this type, so defer completion of any
! 	     incomplete types.  We also need to do it for the special subtypes
! 	     designated by access subtypes in case they are recursive, see the
! 	     E_Access_Subtype case below.  */
! 	  if (!definition
! 	      || (Is_Itype (gnat_entity)
! 		  && Is_Frozen (gnat_entity)
! 		  && No (Freeze_Node (gnat_entity))))
  	    {
  	      defer_incomplete_level++;
  	      this_deferred = true;
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3860,3882 ****
        break;
  
      case E_Access_Subtype:
        /* We treat this as identical to its base type; any constraint is
  	 meaningful only to the front-end.  */
!       gnu_decl = gnat_to_gnu_entity (gnat_equiv_type, NULL_TREE, false);
        maybe_present = true;
  
        /* The designated subtype must be elaborated as well, if it does
! 	 not have its own freeze node.  But designated subtypes created
! 	 for constrained components of records with discriminants are
! 	 not frozen by the front-end and not elaborated here, because
! 	 their use may appear before the base type is frozen and it is
! 	 not clear that they are needed in gigi.  With the current model,
! 	 there is no correct place where they could be elaborated.  */
        if (Is_Itype (Directly_Designated_Type (gnat_entity))
  	  && !present_gnu_tree (Directly_Designated_Type (gnat_entity))
  	  && Is_Frozen (Directly_Designated_Type (gnat_entity))
  	  && No (Freeze_Node (Directly_Designated_Type (gnat_entity))))
  	{
  	  /* If we are to defer elaborating incomplete types, make a dummy
  	     type node and elaborate it later.  */
  	  if (defer_incomplete_level != 0)
--- 3864,3890 ----
        break;
  
      case E_Access_Subtype:
+       gnat_cloned_subtype = Gigi_Cloned_Subtype (gnat_entity);
+       if (Present (gnat_cloned_subtype))
+ 	break;
+ 
        /* We treat this as identical to its base type; any constraint is
  	 meaningful only to the front-end.  */
!       gnu_type = gnat_to_gnu_type (gnat_equiv_type);
        maybe_present = true;
  
        /* The designated subtype must be elaborated as well, if it does
! 	 not have its own freeze node.  */
        if (Is_Itype (Directly_Designated_Type (gnat_entity))
  	  && !present_gnu_tree (Directly_Designated_Type (gnat_entity))
  	  && Is_Frozen (Directly_Designated_Type (gnat_entity))
  	  && No (Freeze_Node (Directly_Designated_Type (gnat_entity))))
  	{
+ 	  tree gnu_design_base_type
+ 	    = TYPE_IS_FAT_POINTER_P (gnu_type)
+ 	      ? TREE_TYPE (TREE_TYPE (TYPE_FIELDS (gnu_type)))
+ 	      : TREE_TYPE (gnu_type);
+ 
  	  /* If we are to defer elaborating incomplete types, make a dummy
  	     type node and elaborate it later.  */
  	  if (defer_incomplete_level != 0)
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 3889,3896 ****
  	      p->next = defer_incomplete_list;
  	      defer_incomplete_list = p;
  	    }
! 	  else if (!Is_Incomplete_Or_Private_Type
! 		      (Base_Type (Directly_Designated_Type (gnat_entity))))
  	    gnat_to_gnu_entity (Directly_Designated_Type (gnat_entity),
  				NULL_TREE, false);
  	}
--- 3897,3906 ----
  	      p->next = defer_incomplete_list;
  	      defer_incomplete_list = p;
  	    }
! 
! 	  /* Otherwise elaborate the designated subtype only if its base type
! 	     has already been elaborated.  */
! 	  else if (!TYPE_IS_DUMMY_P (gnu_design_base_type))
  	    gnat_to_gnu_entity (Directly_Designated_Type (gnat_entity),
  				NULL_TREE, false);
  	}
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4019,4024 ****
--- 4029,4035 ----
  	  {
  	    gnu_decl = gnu_type;
  	    gnu_type = TREE_TYPE (gnu_decl);
+ 	    process_attributes (&gnu_decl, &attr_list, true, gnat_entity);
  	    break;
  	  }
  
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4269,4274 ****
--- 4280,4306 ----
        gcc_unreachable ();
      }
  
+   /* If this is the clone of a subtype, just reuse the cloned subtype; another
+      approach would be to set the cloned subtype as the DECL_ORIGINAL_TYPE of
+      the entity, which would generate a DW_TAG_typedef in the debug info, but
+      at the cost of the duplication of the GCC type and, more annoyingly, of
+      the need to update the copy if the cloned subtype is not complete yet.  */
+   if (Present (gnat_cloned_subtype))
+     {
+       gnu_decl = gnat_to_gnu_entity (gnat_cloned_subtype, NULL_TREE, false);
+       maybe_present = true;
+ 
+       if (!TYPE_IS_DUMMY_P (TREE_TYPE (gnu_decl)))
+ 	{
+ 	  if (!Known_Alignment (gnat_entity))
+ 	    Copy_Alignment (gnat_entity, gnat_cloned_subtype);
+ 	  if (!Known_Esize (gnat_entity))
+ 	    Copy_Esize (gnat_entity, gnat_cloned_subtype);
+ 	  if (!Known_RM_Size (gnat_entity))
+ 	    Copy_RM_Size (gnat_entity, gnat_cloned_subtype);
+ 	}
+     }
+ 
    /* If we had a case where we evaluated another type and it might have
       defined this one, handle it here.  */
    if (maybe_present && present_gnu_tree (gnat_entity))
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4332,4338 ****
        /* If the alignment has not already been processed and this is not
  	 an unconstrained array type, see if an alignment is specified.
  	 If not, we pick a default alignment for atomic objects.  */
!       if (align != 0 || TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE)
  	;
        else if (Known_Alignment (gnat_entity))
  	{
--- 4364,4370 ----
        /* If the alignment has not already been processed and this is not
  	 an unconstrained array type, see if an alignment is specified.
  	 If not, we pick a default alignment for atomic objects.  */
!       if (align > 0 || TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE)
  	;
        else if (Known_Alignment (gnat_entity))
  	{
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4621,4626 ****
--- 4653,4660 ----
        /* If this is not an unconstrained array type, set some flags.  */
        if (TREE_CODE (gnu_type) != UNCONSTRAINED_ARRAY_TYPE)
  	{
+ 	  bool align_clause;
+ 
  	  /* Record the property that objects of tagged types are guaranteed to
  	     be properly aligned.  This is necessary because conversions to the
  	     class-wide type are translated into conversions to the root type,
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4633,4640 ****
  	  if (is_by_ref && !VOID_TYPE_P (gnu_type))
  	    TYPE_BY_REFERENCE_P (gnu_type) = 1;
  
! 	  /* Record whether an alignment clause was specified.  */
! 	  if (Present (Alignment_Clause (gnat_entity)))
  	    TYPE_USER_ALIGN (gnu_type) = 1;
  
  	  /* Record whether a pragma Universal_Aliasing was specified.  */
--- 4667,4686 ----
  	  if (is_by_ref && !VOID_TYPE_P (gnu_type))
  	    TYPE_BY_REFERENCE_P (gnu_type) = 1;
  
! 	  /* Record whether an alignment clause was specified.  At this point
! 	     scalar types with a non-confirming clause have been wrapped into
! 	     a record type, so only scalar types with a confirming clause are
! 	     left untouched; we do not set the flag on them except if they are
! 	     types whose default alignment is specifically capped in order not
! 	     to lose the specified alignment.  */
! 	  if ((AGGREGATE_TYPE_P (gnu_type)
! 	       && Present (Alignment_Clause (gnat_entity)))
! 	      || (double_float_alignment > 0
! 		  && is_double_float_or_array (gnat_entity, &align_clause)
! 		  && align_clause)
! 	      || (double_scalar_alignment > 0
! 		  && is_double_scalar_or_array (gnat_entity, &align_clause)
! 		  && align_clause))
  	    TYPE_USER_ALIGN (gnu_type) = 1;
  
  	  /* Record whether a pragma Universal_Aliasing was specified.  */
*************** gnat_to_gnu_entity (Entity_Id gnat_entit
*** 4750,4776 ****
        else
  	gnu_decl = create_type_decl (gnu_entity_name, gnu_type, artificial_p,
  				     debug_info_p, gnat_entity);
- 
-       /* For vector types, make the representative array the debug type.  */
-       if (VECTOR_TYPE_P (gnu_type))
- 	{
- 	  tree rep = TYPE_REPRESENTATIVE_ARRAY (gnu_type);
- 	  TYPE_NAME (rep) = DECL_NAME (gnu_decl);
- 	  SET_TYPE_DEBUG_TYPE (gnu_type, rep);
- 	}
-     }
- 
-   /* Otherwise, for a type reusing an existing DECL, back-annotate values.  */
-   else if (is_type
- 	   && !TYPE_IS_DUMMY_P (TREE_TYPE (gnu_decl))
- 	   && Present (gnat_annotate_type))
-     {
-       if (!Known_Alignment (gnat_entity))
- 	Copy_Alignment (gnat_entity, gnat_annotate_type);
-       if (!Known_Esize (gnat_entity))
- 	Copy_Esize (gnat_entity, gnat_annotate_type);
-       if (!Known_RM_Size (gnat_entity))
- 	Copy_RM_Size (gnat_entity, gnat_annotate_type);
      }
  
    /* If we haven't already, associate the ..._DECL node that we just made with
--- 4796,4801 ----
*************** is_cplusplus_method (Entity_Id gnat_enti
*** 4982,4988 ****
       'this' parameter is not encoded in the mangled name of a method.  */
    if (Is_Subprogram (gnat_entity) && Present (Interface_Name (gnat_entity)))
      {
!       String_Pointer sp = { NULL, NULL };
        Get_External_Name (gnat_entity, false, sp);
  
        void *mem;
--- 5007,5014 ----
       'this' parameter is not encoded in the mangled name of a method.  */
    if (Is_Subprogram (gnat_entity) && Present (Interface_Name (gnat_entity)))
      {
!       String_Template temp = { 0, 0 };
!       String_Pointer sp = { "", &temp };
        Get_External_Name (gnat_entity, false, sp);
  
        void *mem;
*************** inline_status_for_subprog (Entity_Id sub
*** 5066,5071 ****
--- 5092,5104 ----
  	  && compare_tree_int (TYPE_SIZE (gnu_type), MAX_FIXED_MODE_SIZE) <= 0)
  	return is_prescribed;
  
+       /* If this is an expression function and we're not optimizing for size,
+ 	 override the heuristics, unless -gnatd.8 is specified.  */
+       if (Is_Expression_Function (subprog)
+ 	  && !optimize_size
+ 	  && !Debug_Flag_Dot_8)
+ 	return is_prescribed;
+ 
        return is_requested;
      }
  
*************** finalize_from_limited_with (void)
*** 5098,5103 ****
--- 5131,5201 ----
      }
  }
  
+ /* Return the cloned subtype to be used for GNAT_ENTITY, if the latter is a
+    kind of subtype that needs to be considered as a clone by Gigi, otherwise
+    return Empty.  */
+ 
+ static Entity_Id
+ Gigi_Cloned_Subtype (Entity_Id gnat_entity)
+ {
+   Node_Id gnat_decl;
+ 
+   switch (Ekind (gnat_entity))
+     {
+     case E_Class_Wide_Subtype:
+       if (Present (Equivalent_Type (gnat_entity)))
+ 	return Empty;
+ 
+       /* ... fall through ... */
+ 
+     case E_Record_Subtype:
+       /* If Cloned_Subtype is Present, this means that this record subtype has
+ 	 the same layout as that of the specified (sub)type, and also that the
+ 	 front-end guarantees that the component list is shared.  */
+       return Cloned_Subtype (gnat_entity);
+ 
+     case E_Access_Subtype:
+     case E_Array_Subtype:
+     case E_Signed_Integer_Subtype:
+     case E_Enumeration_Subtype:
+     case E_Modular_Integer_Subtype:
+     case E_Ordinary_Fixed_Point_Subtype:
+     case E_Decimal_Fixed_Point_Subtype:
+     case E_Floating_Point_Subtype:
+       if (Sloc (gnat_entity) == Standard_Location)
+ 	break;
+ 
+       /* We return true for the subtypes generated for the actuals of formal
+ 	 private types in instantiations, so that these actuals are the types
+ 	 of the instantiated objects in the debug info.  */
+       gnat_decl = Declaration_Node (gnat_entity);
+       if (Present (gnat_decl)
+ 	  && Nkind (gnat_decl) == N_Subtype_Declaration
+ 	  && Present (Generic_Parent_Type (gnat_decl))
+ 	  && Is_Entity_Name (Subtype_Indication (gnat_decl)))
+ 	return Entity (Subtype_Indication (gnat_decl));
+ 
+       /* Likewise for the full view of such subtypes when they are private.  */
+       if (Is_Itype (gnat_entity))
+ 	{
+ 	  gnat_decl = Associated_Node_For_Itype (gnat_entity);
+ 	  if (Present (gnat_decl)
+ 	      && Nkind (gnat_decl) == N_Subtype_Declaration
+ 	      && Is_Private_Type (Defining_Identifier (gnat_decl))
+ 	      && Full_View (Defining_Identifier (gnat_decl)) == gnat_entity
+ 	      && Present (Generic_Parent_Type (gnat_decl))
+ 	      && Is_Entity_Name (Subtype_Indication (gnat_decl)))
+ 	    return Entity (Subtype_Indication (gnat_decl));
+ 	}
+       break;
+ 
+     default:
+       break;
+     }
+ 
+   return Empty;
+ }
+ 
  /* Return the equivalent type to be used for GNAT_ENTITY, if it's a kind
     of type (such E_Task_Type) that has a different type which Gigi uses
     for its representation.  If the type does not have a special type for
*************** gnat_to_gnu_param (Entity_Id gnat_param,
*** 5515,5520 ****
--- 5613,5619 ----
  
    gnu_param = create_param_decl (gnu_param_name, gnu_param_type);
    TREE_READONLY (gnu_param) = ro_param || by_ref || by_component_ptr;
+   DECL_ARTIFICIAL (gnu_param) = !Comes_From_Source (gnat_param);
    DECL_BY_REF_P (gnu_param) = by_ref;
    DECL_FORCED_BY_REF_P (gnu_param) = forced_by_ref;
    DECL_BY_COMPONENT_PTR_P (gnu_param) = by_component_ptr;
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5772,5781 ****
  			  bool debug_info_p, tree *param_list)
  {
    const Entity_Kind kind = Ekind (gnat_subprog);
    const bool method_p = is_cplusplus_method (gnat_subprog);
    const bool variadic = IN (Convention (gnat_subprog), Convention_C_Variadic);
-   Entity_Id gnat_return_type = Etype (gnat_subprog);
-   Entity_Id gnat_param;
    tree gnu_type = present_gnu_tree (gnat_subprog)
  		  ? TREE_TYPE (get_gnu_tree (gnat_subprog)) : NULL_TREE;
    tree gnu_return_type;
--- 5871,5879 ----
  			  bool debug_info_p, tree *param_list)
  {
    const Entity_Kind kind = Ekind (gnat_subprog);
+   const Entity_Id gnat_return_type = Etype (gnat_subprog);
    const bool method_p = is_cplusplus_method (gnat_subprog);
    const bool variadic = IN (Convention (gnat_subprog), Convention_C_Variadic);
    tree gnu_type = present_gnu_tree (gnat_subprog)
  		  ? TREE_TYPE (get_gnu_tree (gnat_subprog)) : NULL_TREE;
    tree gnu_return_type;
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5801,5812 ****
       circuitry from it, we need to declare that calls to pure Ada subprograms
       that can throw have side effects, since they can trigger an "abnormal"
       transfer of control; therefore they cannot be "pure" in the GCC sense.  */
!   bool pure_flag = Is_Pure (gnat_subprog) && Back_End_Exceptions ();
    bool return_by_direct_ref_p = false;
    bool return_by_invisi_ref_p = false;
-   bool return_unconstrained_p = false;
    bool incomplete_profile_p = false;
-   int num;
  
    /* Look into the return type and get its associated GCC tree if it is not
       void, and then compute various flags for the subprogram type.  But make
--- 5899,5908 ----
       circuitry from it, we need to declare that calls to pure Ada subprograms
       that can throw have side effects, since they can trigger an "abnormal"
       transfer of control; therefore they cannot be "pure" in the GCC sense.  */
!   bool pure_flag = Is_Pure (gnat_subprog);
    bool return_by_direct_ref_p = false;
    bool return_by_invisi_ref_p = false;
    bool incomplete_profile_p = false;
  
    /* Look into the return type and get its associated GCC tree if it is not
       void, and then compute various flags for the subprogram type.  But make
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5819,5825 ****
  	   && !TYPE_IS_DUMMY_P (TREE_TYPE (gnu_type)))
      {
        gnu_return_type = TREE_TYPE (gnu_type);
-       return_unconstrained_p = TYPE_RETURN_UNCONSTRAINED_P (gnu_type);
        return_by_direct_ref_p = TYPE_RETURN_BY_DIRECT_REF_P (gnu_type);
        return_by_invisi_ref_p = TREE_ADDRESSABLE (gnu_type);
      }
--- 5915,5920 ----
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5835,5874 ****
        else
  	gnu_return_type = gnat_to_gnu_profile_type (gnat_return_type);
  
!       /* If this function returns by reference, make the actual return type
! 	 the reference type and make a note of that.  */
!       if (Returns_By_Ref (gnat_subprog))
  	{
  	  gnu_return_type = build_reference_type (gnu_return_type);
  	  return_by_direct_ref_p = true;
  	}
  
-       /* If the return type is an unconstrained array type, the return value
- 	 will be allocated on the secondary stack so the actual return type
- 	 is the fat pointer type.  */
-       else if (TREE_CODE (gnu_return_type) == UNCONSTRAINED_ARRAY_TYPE)
- 	{
- 	  gnu_return_type = TYPE_REFERENCE_TO (gnu_return_type);
- 	  return_unconstrained_p = true;
- 	}
- 
-       /* This is the same unconstrained array case, but for a dummy type.  */
-       else if (TYPE_REFERENCE_TO (gnu_return_type)
- 	       && TYPE_IS_FAT_POINTER_P (TYPE_REFERENCE_TO (gnu_return_type)))
- 	{
- 	  gnu_return_type = TYPE_REFERENCE_TO (gnu_return_type);
- 	  return_unconstrained_p = true;
- 	}
- 
-       /* Likewise, if the return type requires a transient scope, the return
- 	 value will also be allocated on the secondary stack so the actual
- 	 return type is the reference type.  */
-       else if (Requires_Transient_Scope (gnat_return_type))
- 	{
- 	  gnu_return_type = build_reference_type (gnu_return_type);
- 	  return_unconstrained_p = true;
- 	}
- 
        /* If the Mechanism is By_Reference, ensure this function uses the
  	 target's by-invisible-reference mechanism, which may not be the
  	 same as above (e.g. it might be passing an extra parameter).  */
--- 5930,5945 ----
        else
  	gnu_return_type = gnat_to_gnu_profile_type (gnat_return_type);
  
!       /* If this function returns by reference or on the secondary stack, make
! 	 the actual return type the reference type and make a note of that.  */
!       if (Returns_By_Ref (gnat_subprog)
! 	  || Needs_Secondary_Stack (gnat_return_type)
! 	  || Is_Secondary_Stack_Thunk (gnat_subprog))
  	{
  	  gnu_return_type = build_reference_type (gnu_return_type);
  	  return_by_direct_ref_p = true;
  	}
  
        /* If the Mechanism is By_Reference, ensure this function uses the
  	 target's by-invisible-reference mechanism, which may not be the
  	 same as above (e.g. it might be passing an extra parameter).  */
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5948,5955 ****
  	}
  
        if (kind == E_Function)
! 	Set_Mechanism (gnat_subprog, return_unconstrained_p
! 				     || return_by_direct_ref_p
  				     || return_by_invisi_ref_p
  				     ? By_Reference : By_Copy);
      }
--- 6019,6025 ----
  	}
  
        if (kind == E_Function)
! 	Set_Mechanism (gnat_subprog, return_by_direct_ref_p
  				     || return_by_invisi_ref_p
  				     ? By_Reference : By_Copy);
      }
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 5961,5971 ****
       Similarly, if the function returns an unconstrained type, then the
       function will allocate the return value on the secondary stack and
       thus calls to it cannot be CSE'ed, lest the stack be reclaimed.  */
!   if (VOID_TYPE_P (gnu_return_type) || return_unconstrained_p)
      pure_flag = false;
  
    /* Loop over the parameters and get their associated GCC tree.  While doing
       this, build a copy-in copy-out structure if we need one.  */
    for (gnat_param = First_Formal_With_Extras (gnat_subprog), num = 0;
         Present (gnat_param);
         gnat_param = Next_Formal_With_Extras (gnat_param), num++)
--- 6031,6043 ----
       Similarly, if the function returns an unconstrained type, then the
       function will allocate the return value on the secondary stack and
       thus calls to it cannot be CSE'ed, lest the stack be reclaimed.  */
!   if (VOID_TYPE_P (gnu_return_type) || return_by_direct_ref_p)
      pure_flag = false;
  
    /* Loop over the parameters and get their associated GCC tree.  While doing
       this, build a copy-in copy-out structure if we need one.  */
+   Entity_Id gnat_param;
+   int num;
    for (gnat_param = First_Formal_With_Extras (gnat_subprog), num = 0;
         Present (gnat_param);
         gnat_param = Next_Formal_With_Extras (gnat_param), num++)
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6249,6255 ****
  	gnu_type = make_node (method_p ? METHOD_TYPE : FUNCTION_TYPE);
        TREE_TYPE (gnu_type) = gnu_return_type;
        TYPE_ARG_TYPES (gnu_type) = gnu_param_type_list;
-       TYPE_RETURN_UNCONSTRAINED_P (gnu_type) = return_unconstrained_p;
        TYPE_RETURN_BY_DIRECT_REF_P (gnu_type) = return_by_direct_ref_p;
        TREE_ADDRESSABLE (gnu_type) = return_by_invisi_ref_p;
      }
--- 6321,6326 ----
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6266,6272 ****
  		= TYPE_MAIN_VARIANT (gnu_basetype);
  	    }
  	  TYPE_CI_CO_LIST (gnu_type) = gnu_cico_list;
- 	  TYPE_RETURN_UNCONSTRAINED_P (gnu_type) = return_unconstrained_p;
  	  TYPE_RETURN_BY_DIRECT_REF_P (gnu_type) = return_by_direct_ref_p;
  	  TREE_ADDRESSABLE (gnu_type) = return_by_invisi_ref_p;
  	  TYPE_CANONICAL (gnu_type) = gnu_type;
--- 6337,6342 ----
*************** gnat_to_gnu_subprog_type (Entity_Id gnat
*** 6288,6300 ****
  	  /* GNU_TYPE may be shared since GCC hashes types.  Unshare it if it
  	     has a different TYPE_CI_CO_LIST or flags.  */
  	  if (!fntype_same_flags_p (gnu_type, gnu_cico_list,
- 				    return_unconstrained_p,
  				    return_by_direct_ref_p,
  				    return_by_invisi_ref_p))
  	    {
  	      gnu_type = copy_type (gnu_type);
  	      TYPE_CI_CO_LIST (gnu_type) = gnu_cico_list;
- 	      TYPE_RETURN_UNCONSTRAINED_P (gnu_type) = return_unconstrained_p;
  	      TYPE_RETURN_BY_DIRECT_REF_P (gnu_type) = return_by_direct_ref_p;
  	      TREE_ADDRESSABLE (gnu_type) = return_by_invisi_ref_p;
  	    }
--- 6358,6368 ----
*************** prepend_one_attribute_pragma (struct att
*** 6875,6881 ****
  
        const char *const p = TREE_STRING_POINTER (gnu_arg1);
        const bool string_args
! 	= strcmp (p, "target") == 0 || strcmp (p, "target_clones") == 0;
        gnu_arg1 = get_identifier (p);
        if (IDENTIFIER_LENGTH (gnu_arg1) == 0)
  	return;
--- 6943,6951 ----
  
        const char *const p = TREE_STRING_POINTER (gnu_arg1);
        const bool string_args
! 	= strcmp (p, "simd") == 0
! 	  || strcmp (p, "target") == 0
! 	  || strcmp (p, "target_clones") == 0;
        gnu_arg1 = get_identifier (p);
        if (IDENTIFIER_LENGTH (gnu_arg1) == 0)
  	return;
*************** gnat_to_gnu_field (Entity_Id gnat_field,
*** 7631,7637 ****
    if (Ekind (gnat_field) == E_Discriminant)
      {
        DECL_DISCRIMINANT_NUMBER (gnu_field)
! 	= UI_To_gnu (Discriminant_Number (gnat_field), sizetype);
        DECL_INVARIANT_P (gnu_field)
  	= No (Discriminant_Default_Value (gnat_field));
        DECL_NONADDRESSABLE_P (gnu_field) = 0;
--- 7701,7707 ----
    if (Ekind (gnat_field) == E_Discriminant)
      {
        DECL_DISCRIMINANT_NUMBER (gnu_field)
! 	= UI_To_gnu (Discriminant_Number (gnat_field), integer_type_node);
        DECL_INVARIANT_P (gnu_field)
  	= No (Discriminant_Default_Value (gnat_field));
        DECL_NONADDRESSABLE_P (gnu_field) = 0;
*************** field_has_variable_size (tree field)
*** 7712,7718 ****
  /* qsort comparer for the bit positions of two record components.  */
  
  static int
! compare_field_bitpos (const PTR rt1, const PTR rt2)
  {
    const_tree const field1 = * (const_tree const *) rt1;
    const_tree const field2 = * (const_tree const *) rt2;
--- 7782,7788 ----
  /* qsort comparer for the bit positions of two record components.  */
  
  static int
! compare_field_bitpos (const void *rt1, const void *rt2)
  {
    const_tree const field1 = * (const_tree const *) rt1;
    const_tree const field2 = * (const_tree const *) rt2;
*************** warn_on_field_placement (tree gnu_field,
*** 7794,7813 ****
  
    const char *msg1
      = in_variant
!       ? "??variant layout may cause performance issues"
!       : "??record layout may cause performance issues";
    const char *msg2
      = Ekind (gnat_field) == E_Discriminant
!       ? "??discriminant & whose length is not multiple of a byte"
        : field_has_self_size (gnu_field)
! 	? "??component & whose length depends on a discriminant"
  	: field_has_variable_size (gnu_field)
! 	  ? "??component & whose length is not fixed"
! 	  : "??component & whose length is not multiple of a byte";
    const char *msg3
      = do_reorder
!       ? "??comes too early and was moved down"
!       : "??comes too early and ought to be moved down";
  
    post_error (msg1, gnat_field);
    post_error_ne (msg2, gnat_field, gnat_field);
--- 7864,7883 ----
  
    const char *msg1
      = in_variant
!       ? "?.q?variant layout may cause performance issues"
!       : "?.q?record layout may cause performance issues";
    const char *msg2
      = Ekind (gnat_field) == E_Discriminant
!       ? "?.q?discriminant & whose length is not multiple of a byte"
        : field_has_self_size (gnu_field)
! 	? "?.q?component & whose length depends on a discriminant"
  	: field_has_variable_size (gnu_field)
! 	  ? "?.q?component & whose length is not fixed"
! 	  : "?.q?component & whose length is not multiple of a byte";
    const char *msg3
      = do_reorder
!       ? "?.q?comes too early and was moved down"
!       : "?.q?comes too early and ought to be moved down";
  
    post_error (msg1, gnat_field);
    post_error_ne (msg2, gnat_field, gnat_field);
*************** components_to_record (Node_Id gnat_compo
*** 7992,7997 ****
--- 8062,8068 ----
        tree gnu_union_type;
        tree this_first_free_pos, gnu_variant_list = NULL_TREE;
        bool union_field_needs_strict_alignment = false;
+       bool innermost_variant_level = true;
        auto_vec <vinfo_t, 16> variant_types;
        vinfo_t *gnu_variant;
        unsigned int variants_align = 0;
*************** components_to_record (Node_Id gnat_compo
*** 8037,8042 ****
--- 8108,8126 ----
  	      }
  	}
  
+       /* For an unchecked union with a fixed part, we need to compute whether
+ 	 we are at the innermost level of the variant part.  */
+       if (unchecked_union && gnu_field_list)
+ 	for (variant = First_Non_Pragma (Variants (gnat_variant_part));
+ 	     Present (variant);
+ 	     variant = Next_Non_Pragma (variant))
+ 	  if (Present (Component_List (variant))
+ 	      && Present (Variant_Part (Component_List (variant))))
+ 	    {
+ 	      innermost_variant_level = false;
+ 	      break;
+ 	    }
+ 
        /* We build the variants in two passes.  The bulk of the work is done in
  	 the first pass, that is to say translating the GNAT nodes, building
  	 the container types and computing the associated properties.  However
*************** components_to_record (Node_Id gnat_compo
*** 8077,8087 ****
  
  	  /* Add the fields into the record type for the variant but note that
  	     we aren't sure to really use it at this point, see below.  In the
! 	     case of an unchecked union, we force the fields with a rep clause
! 	     present in a nested variant to be moved to the outermost variant,
! 	     so as to flatten the rep-ed layout as much as possible, the reason
! 	     being that we cannot do any flattening when a subtype statically
! 	     selects a variant later on, for example for an aggregate.  */
  	  has_rep
  	    = components_to_record (Component_List (variant), gnat_record_type,
  				    NULL_TREE, gnu_variant_type, packed,
--- 8161,8172 ----
  
  	  /* Add the fields into the record type for the variant but note that
  	     we aren't sure to really use it at this point, see below.  In the
! 	     case of an unchecked union with a fixed part, we force the fields
! 	     with a rep clause present in the innermost variant to be moved to
! 	     the outer variant, so as to flatten the rep-ed layout as much as
! 	     possible, the reason being that we cannot do any flattening when
! 	     a subtype statically selects a variant later on, for example for
! 	     an aggregate.  */
  	  has_rep
  	    = components_to_record (Component_List (variant), gnat_record_type,
  				    NULL_TREE, gnu_variant_type, packed,
*************** components_to_record (Node_Id gnat_compo
*** 8089,8095 ****
  				    unchecked_union, true, needs_xv_encodings,
  				    true, this_first_free_pos,
  				    (all_rep || this_first_free_pos)
! 				    && !(in_variant && unchecked_union)
  				    ? NULL : &gnu_rep_list);
  
  	  /* Translate the qualifier and annotate the GNAT node.  */
--- 8174,8182 ----
  				    unchecked_union, true, needs_xv_encodings,
  				    true, this_first_free_pos,
  				    (all_rep || this_first_free_pos)
! 				    && !(unchecked_union
! 				         && gnu_field_list
! 					 && innermost_variant_level)
  				    ? NULL : &gnu_rep_list);
  
  	  /* Translate the qualifier and annotate the GNAT node.  */
*************** components_to_record (Node_Id gnat_compo
*** 8279,8285 ****
         && !Debug_Flag_Dot_R);
    const bool w_reorder
      = (Convention (gnat_record_type) == Convention_Ada
!        && Warn_On_Questionable_Layout
         && !(No_Reordering (gnat_record_type) && GNAT_Mode));
    tree gnu_zero_list = NULL_TREE;
    tree gnu_self_list = NULL_TREE;
--- 8366,8372 ----
         && !Debug_Flag_Dot_R);
    const bool w_reorder
      = (Convention (gnat_record_type) == Convention_Ada
!        && Get_Warn_On_Questionable_Layout ()
         && !(No_Reordering (gnat_record_type) && GNAT_Mode));
    tree gnu_zero_list = NULL_TREE;
    tree gnu_self_list = NULL_TREE;
*************** promote_object_alignment (tree gnu_type,
*** 9546,9551 ****
--- 9633,9651 ----
    return align;
  }
  
+ /* Return whether GNAT_ENTITY is a simple constant, i.e. it represents only
+    its value and reading it has no side effects.  */
+ 
+ bool
+ simple_constant_p (Entity_Id gnat_entity)
+ {
+   return Ekind (gnat_entity) == E_Constant
+ 	 && Present (Constant_Value (gnat_entity))
+ 	 && !No_Initialization (gnat_entity)
+ 	 && No (Address_Clause (gnat_entity))
+ 	 && No (Renamed_Object (gnat_entity));
+ }
+ 
  /* Verify that TYPE is something we can implement atomically.  If not, issue
     an error for GNAT_ENTITY.  COMPONENT_P is true if we are being called to
     process a component type.  */
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/gadaint.h gcc-13.1.0/gcc/ada/gcc-interface/gadaint.h
*** gcc-12.2.0/gcc/ada/gcc-interface/gadaint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/gadaint.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2010-2021, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2010-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/gigi.h gcc-13.1.0/gcc/ada/gcc-interface/gigi.h
*** gcc-12.2.0/gcc/ada/gcc-interface/gigi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/gigi.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** enum standard_datatypes
*** 399,416 ****
    /* Identifier for the name of the Not_Handled_By_Others field.  */
    ADT_not_handled_by_others_name_id,
  
!   /* Types and decls used by the SJLJ exception mechanism.  */
!   ADT_jmpbuf_type,
!   ADT_jmpbuf_ptr_type,
!   ADT_get_jmpbuf_decl,
!   ADT_set_jmpbuf_decl,
!   ADT_get_excptr_decl,
!   ADT_not_handled_by_others_decl,
!   ADT_setjmp_decl,
!   ADT_update_setjmp_buf_decl,
!   ADT_raise_nodefer_decl,
! 
!   /* Types and decls used by the ZCX exception mechanism.  */
    ADT_reraise_zcx_decl,
    ADT_set_exception_parameter_decl,
    ADT_begin_handler_decl,
--- 399,405 ----
    /* Identifier for the name of the Not_Handled_By_Others field.  */
    ADT_not_handled_by_others_name_id,
  
!   /* Types and decls used by the exception mechanism.  */
    ADT_reraise_zcx_decl,
    ADT_set_exception_parameter_decl,
    ADT_begin_handler_decl,
*************** extern GTY(()) tree gnat_raise_decls_ext
*** 469,493 ****
  #define parent_name_id gnat_std_decls[(int) ADT_parent_name_id]
  #define not_handled_by_others_name_id \
  	  gnat_std_decls[(int) ADT_not_handled_by_others_name_id]
- #define jmpbuf_type gnat_std_decls[(int) ADT_jmpbuf_type]
- #define jmpbuf_ptr_type gnat_std_decls[(int) ADT_jmpbuf_ptr_type]
- #define get_jmpbuf_decl gnat_std_decls[(int) ADT_get_jmpbuf_decl]
- #define set_jmpbuf_decl gnat_std_decls[(int) ADT_set_jmpbuf_decl]
- #define get_excptr_decl gnat_std_decls[(int) ADT_get_excptr_decl]
- #define not_handled_by_others_decl \
- 	  gnat_std_decls[(int) ADT_not_handled_by_others_decl]
- #define setjmp_decl gnat_std_decls[(int) ADT_setjmp_decl]
- #define update_setjmp_buf_decl gnat_std_decls[(int) ADT_update_setjmp_buf_decl]
- #define raise_nodefer_decl gnat_std_decls[(int) ADT_raise_nodefer_decl]
  #define reraise_zcx_decl gnat_std_decls[(int) ADT_reraise_zcx_decl]
  #define set_exception_parameter_decl \
  	  gnat_std_decls[(int) ADT_set_exception_parameter_decl]
  #define begin_handler_decl gnat_std_decls[(int) ADT_begin_handler_decl]
  #define others_decl gnat_std_decls[(int) ADT_others_decl]
  #define all_others_decl gnat_std_decls[(int) ADT_all_others_decl]
  #define unhandled_others_decl gnat_std_decls[(int) ADT_unhandled_others_decl]
- #define end_handler_decl gnat_std_decls[(int) ADT_end_handler_decl]
- #define unhandled_except_decl gnat_std_decls[(int) ADT_unhandled_except_decl]
  
  /* Routines expected by the gcc back-end. They must have exactly the same
     prototype and names as below.  */
--- 458,472 ----
  #define parent_name_id gnat_std_decls[(int) ADT_parent_name_id]
  #define not_handled_by_others_name_id \
  	  gnat_std_decls[(int) ADT_not_handled_by_others_name_id]
  #define reraise_zcx_decl gnat_std_decls[(int) ADT_reraise_zcx_decl]
  #define set_exception_parameter_decl \
  	  gnat_std_decls[(int) ADT_set_exception_parameter_decl]
  #define begin_handler_decl gnat_std_decls[(int) ADT_begin_handler_decl]
+ #define end_handler_decl gnat_std_decls[(int) ADT_end_handler_decl]
+ #define unhandled_except_decl gnat_std_decls[(int) ADT_unhandled_except_decl]
  #define others_decl gnat_std_decls[(int) ADT_others_decl]
  #define all_others_decl gnat_std_decls[(int) ADT_all_others_decl]
  #define unhandled_others_decl gnat_std_decls[(int) ADT_unhandled_others_decl]
  
  /* Routines expected by the gcc back-end. They must have exactly the same
     prototype and names as below.  */
*************** extern void gnat_zaplevel (void);
*** 504,515 ****
     and point FNDECL to this BLOCK.  */
  extern void set_current_block_context (tree fndecl);
  
- /* Set the jmpbuf_decl for the current binding level to DECL.  */
- extern void set_block_jmpbuf_decl (tree decl);
- 
- /* Get the setjmp_decl, if any, for the current binding level.  */
- extern tree get_block_jmpbuf_decl (void);
- 
  /* Record DECL as belonging to the current lexical scope and use GNAT_NODE
     for location information and flag propagation.  */
  extern void gnat_pushdecl (tree decl, Node_Id gnat_node);
--- 483,488 ----
*************** extern int gnat_types_compatible_p (tree
*** 547,553 ****
  extern bool gnat_useless_type_conversion (tree expr);
  
  /* Return true if T, a {FUNCTION,METHOD}_TYPE, has the specified flags.  */
! extern bool fntype_same_flags_p (const_tree, tree, bool, bool, bool);
  
  /* Create an expression whose value is that of EXPR,
     converted to type TYPE.  The TREE_TYPE of the value
--- 520,526 ----
  extern bool gnat_useless_type_conversion (tree expr);
  
  /* Return true if T, a {FUNCTION,METHOD}_TYPE, has the specified flags.  */
! extern bool fntype_same_flags_p (const_tree, tree, bool, bool);
  
  /* Create an expression whose value is that of EXPR,
     converted to type TYPE.  The TREE_TYPE of the value
*************** extern tree build_allocator (tree type,
*** 939,944 ****
--- 912,945 ----
                               Entity_Id gnat_proc, Entity_Id gnat_pool,
                               Node_Id gnat_node, bool);
  
+ /* Build a load of SRC using the storage model of GNAT_SMO.  */
+ extern tree build_storage_model_load (Entity_Id gnat_smo, tree src);
+ 
+ /* Build a load of SRC into DEST using the storage model of GNAT_SMO.
+    If SIZE is specified, use it, otherwise use the size of SRC.  */
+ extern tree build_storage_model_load (Entity_Id gnat_smo, tree dest, tree src,
+ 				      tree size = NULL_TREE);
+ 
+ /* Build a store of SRC into DEST using the storage model of GNAT_SMO.
+    If SIZE is specified, use it, otherwise use the size of DEST.  */
+ extern tree build_storage_model_store (Entity_Id gnat_smo, tree dest, tree src,
+ 				       tree size = NULL_TREE);
+ 
+ /* Given a tree EXP, instantiate occurrences of LOAD_EXPR in it and associate
+    them with the storage model of GNAT_SMO.  */
+ extern tree instantiate_load_in_expr (tree exp, Entity_Id gnat_smo);
+ 
+ /* This macro calls the above function but short-circuits the common
+    case of a constant to save time and also checks for NULL.  */
+ 
+ #define INSTANTIATE_LOAD_IN_EXPR(EXP, GNAT_SMO) \
+   ((EXP) == NULL_TREE || TREE_CONSTANT (EXP) ? (EXP)	\
+    : instantiate_load_in_expr (EXP, GNAT_SMO))
+ 
+ /* Given an array or slice reference, instantiate occurrences of LOAD_EXPR in
+    it and associate them with the storage model of GNAT_SMO.  */
+ extern void instantiate_load_in_array_ref (tree ref, Entity_Id gnat_smo);
+ 
  /* Indicate that we need to take the address of T and that it therefore
     should not be allocated in a register.  Returns true if successful.  */
  extern bool gnat_mark_addressable (tree t);
*************** extern Entity_Id get_debug_scope (Node_I
*** 1025,1030 ****
--- 1026,1035 ----
     should be synchronized with Exp_Dbug.Debug_Renaming_Declaration.  */
  extern bool can_materialize_object_renaming_p (Node_Id expr);
  
+ /* Return whether GNAT_ENTITY is a simple constant, i.e. it represents only
+    its value and reading it has no side effects.  */
+ extern bool simple_constant_p (Entity_Id gnat_entity);
+ 
  /* Return the size of TYPE, which must be a positive power of 2.  */
  extern unsigned int resolve_atomic_size (tree type);
  
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/lang-specs.h gcc-13.1.0/gcc/ada/gcc-interface/lang-specs.h
*** gcc-12.2.0/gcc/ada/gcc-interface/lang-specs.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/lang-specs.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 1992-2021, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 1992-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/lang.opt gcc-13.1.0/gcc/ada/gcc-interface/lang.opt
*** gcc-12.2.0/gcc/ada/gcc-interface/lang.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/lang.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options for the Ada front end.
! ; Copyright (C) 2003-2015 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,5 ----
  ; Options for the Ada front end.
! ; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/misc.cc gcc-13.1.0/gcc/ada/gcc-interface/misc.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/misc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/misc.cc	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                           C Implementation File                          *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                           C Implementation File                          *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** gnat_type_hash_eq (const_tree t1, const_
*** 684,690 ****
  {
    gcc_assert (FUNC_OR_METHOD_TYPE_P (t1) && TREE_CODE (t1) == TREE_CODE (t2));
    return fntype_same_flags_p (t1, TYPE_CI_CO_LIST (t2),
- 			      TYPE_RETURN_UNCONSTRAINED_P (t2),
  			      TYPE_RETURN_BY_DIRECT_REF_P (t2),
  			      TREE_ADDRESSABLE (t2));
  }
--- 684,689 ----
*************** gnat_eh_personality (void)
*** 1293,1298 ****
--- 1292,1306 ----
    return gnat_eh_personality_decl;
  }
  
+ /* Get a value for the SARIF v2.1.0 "artifact.sourceLanguage" property,
+    based on the list in SARIF v2.1.0 Appendix J.  */
+ 
+ static const char *
+ gnat_get_sarif_source_language (const char *)
+ {
+   return "ada";
+ }
+ 
  /* Initialize language-specific bits of tree_contains_struct.  */
  
  static void
*************** gnat_init_ts (void)
*** 1301,1306 ****
--- 1309,1315 ----
    MARK_TS_COMMON (UNCONSTRAINED_ARRAY_TYPE);
  
    MARK_TS_TYPED (UNCONSTRAINED_ARRAY_REF);
+   MARK_TS_TYPED (LOAD_EXPR);
    MARK_TS_TYPED (NULL_EXPR);
    MARK_TS_TYPED (PLUS_NOMOD_EXPR);
    MARK_TS_TYPED (MINUS_NOMOD_EXPR);
*************** get_lang_specific (tree node)
*** 1415,1420 ****
--- 1424,1431 ----
  #define LANG_HOOKS_DEEP_UNSHARING	true
  #undef  LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS
  #define LANG_HOOKS_CUSTOM_FUNCTION_DESCRIPTORS true
+ #undef LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE
+ #define LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE gnat_get_sarif_source_language
  
  struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/system.ads gcc-13.1.0/gcc/ada/gcc-interface/system.ads
*** gcc-12.2.0/gcc/ada/gcc-interface/system.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/system.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2021, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/targtyps.cc gcc-13.1.0/gcc/ada/gcc-interface/targtyps.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/targtyps.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/targtyps.cc	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
   *                                                                          *
   *                            T A R G T Y P S                               *
   *                                                                          *
!  *                                  Body                                    *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 4,12 ----
   *                                                                          *
   *                            T A R G T Y P S                               *
   *                                                                          *
!  *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/trans.cc gcc-13.1.0/gcc/ada/gcc-interface/trans.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/trans.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/trans.cc	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** static inline bool stmt_group_may_fallth
*** 234,240 ****
  static enum gimplify_status gnat_gimplify_stmt (tree *);
  static void elaborate_all_entities (Node_Id);
  static void process_freeze_entity (Node_Id);
! static void process_decls (List_Id, List_Id, Node_Id, bool, bool);
  static tree emit_check (tree, tree, int, Node_Id);
  static tree build_unary_op_trapv (enum tree_code, tree, tree, Node_Id);
  static tree build_binary_op_trapv (enum tree_code, tree, tree, tree, Node_Id);
--- 234,240 ----
  static enum gimplify_status gnat_gimplify_stmt (tree *);
  static void elaborate_all_entities (Node_Id);
  static void process_freeze_entity (Node_Id);
! static void process_decls (List_Id, List_Id, bool, bool);
  static tree emit_check (tree, tree, int, Node_Id);
  static tree build_unary_op_trapv (enum tree_code, tree, tree, Node_Id);
  static tree build_binary_op_trapv (enum tree_code, tree, tree, tree, Node_Id);
*************** gigi (Node_Id gnat_root,
*** 364,370 ****
  
    /* Enable GNAT stack checking method if needed */
    if (!Stack_Check_Probes_On_Target)
!     set_stack_check_libfunc ("_gnat_stack_check");
  
    /* Retrieve alignment settings.  */
    double_float_alignment = get_target_double_float_alignment ();
--- 364,375 ----
  
    /* Enable GNAT stack checking method if needed */
    if (!Stack_Check_Probes_On_Target)
!     {
!       set_stack_check_libfunc ("__gnat_stack_check");
!       if (flag_stack_check != NO_STACK_CHECK)
! 	Check_Restriction_No_Dependence_On_System (Name_Stack_Checking,
! 						   gnat_root);
!     }
  
    /* Retrieve alignment settings.  */
    double_float_alignment = get_target_double_float_alignment ();
*************** gigi (Node_Id gnat_root,
*** 408,414 ****
    save_gnu_tree (gnat_literal, t, false);
  
    /* Declare the building blocks of function nodes.  */
-   void_list_node = build_tree_list (NULL_TREE, void_type_node);
    void_ftype = build_function_type_list (void_type_node, NULL_TREE);
    ptr_void_ftype = build_pointer_type (void_ftype);
  
--- 413,418 ----
*************** gigi (Node_Id gnat_root,
*** 467,537 ****
    /* Make the types and functions used for exception processing.  */
    except_type_node = gnat_to_gnu_type (Base_Type (standard_exception_type));
  
-   for (t = TYPE_FIELDS (except_type_node); t; t = DECL_CHAIN (t))
-     if (DECL_NAME (t) == not_handled_by_others_name_id)
-       {
- 	not_handled_by_others_decl = t;
- 	break;
-       }
-   gcc_assert (DECL_P (not_handled_by_others_decl));
- 
-   jmpbuf_type
-     = build_array_type (gnat_type_for_mode (Pmode, 0),
- 			build_index_type (size_int (5)));
-   record_builtin_type ("JMPBUF_T", jmpbuf_type, true);
-   jmpbuf_ptr_type = build_pointer_type (jmpbuf_type);
- 
-   /* Functions to get and set the jumpbuf pointer for the current thread.  */
-   get_jmpbuf_decl
-     = create_subprog_decl
-       (get_identifier ("system__soft_links__get_jmpbuf_address_soft"),
-        NULL_TREE, build_function_type_list (jmpbuf_ptr_type, NULL_TREE),
-        NULL_TREE, is_default, true, true, true, false, false, NULL, Empty);
- 
-   set_jmpbuf_decl
-     = create_subprog_decl
-       (get_identifier ("system__soft_links__set_jmpbuf_address_soft"),
-        NULL_TREE, build_function_type_list (void_type_node, jmpbuf_ptr_type,
- 					    NULL_TREE),
-        NULL_TREE, is_default, true, true, true, false, false, NULL, Empty);
- 
-   get_excptr_decl
-     = create_subprog_decl
-       (get_identifier ("system__soft_links__get_gnat_exception"), NULL_TREE,
-        build_function_type_list (build_pointer_type (except_type_node),
- 				 NULL_TREE),
-        NULL_TREE, is_default, true, true, true, false, false, NULL, Empty);
- 
-   /* setjmp returns an integer and has one operand, which is a pointer to
-      a jmpbuf.  */
-   setjmp_decl
-     = create_subprog_decl
-       (get_identifier ("__builtin_setjmp"), NULL_TREE,
-        build_function_type_list (integer_type_node, jmpbuf_ptr_type,
- 				 NULL_TREE),
-        NULL_TREE, is_default, true, true, true, false, false, NULL, Empty);
-   set_decl_built_in_function (setjmp_decl, BUILT_IN_NORMAL, BUILT_IN_SETJMP);
- 
-   /* update_setjmp_buf updates a setjmp buffer from the current stack pointer
-      address.  */
-   update_setjmp_buf_decl
-     = create_subprog_decl
-       (get_identifier ("__builtin_update_setjmp_buf"), NULL_TREE,
-        build_function_type_list (void_type_node, jmpbuf_ptr_type, NULL_TREE),
-        NULL_TREE, is_default, true, true, true, false, false, NULL, Empty);
-   set_decl_built_in_function (update_setjmp_buf_decl, BUILT_IN_NORMAL,
- 			      BUILT_IN_UPDATE_SETJMP_BUF);
- 
-   /* Indicate that it never returns.  */
-   ftype = build_function_type_list (void_type_node,
- 				    build_pointer_type (except_type_node),
- 				    NULL_TREE);
-   ftype = build_qualified_type (ftype, TYPE_QUAL_VOLATILE);
-   raise_nodefer_decl
-     = create_subprog_decl
-       (get_identifier ("__gnat_raise_nodefer_with_msg"), NULL_TREE, ftype,
-        NULL_TREE, is_default, true, true, true, false, false, NULL, Empty);
- 
    set_exception_parameter_decl
      = create_subprog_decl
        (get_identifier ("__gnat_set_exception_parameter"), NULL_TREE,
--- 471,476 ----
*************** gigi (Node_Id gnat_root,
*** 600,607 ****
  		       NULL, Empty);
  
    /* If in no exception handlers mode, all raise statements are redirected to
!      __gnat_last_chance_handler.  No need to redefine raise_nodefer_decl since
!      this procedure will never be called in this mode.  */
    if (No_Exception_Handlers_Set ())
      {
        /* Indicate that it never returns.  */
--- 539,545 ----
  		       NULL, Empty);
  
    /* If in no exception handlers mode, all raise statements are redirected to
!      __gnat_last_chance_handler.  */
    if (No_Exception_Handlers_Set ())
      {
        /* Indicate that it never returns.  */
*************** gigi (Node_Id gnat_root,
*** 666,674 ****
  
    main_identifier_node = get_identifier ("main");
  
!   /* If we are using the GCC exception mechanism, let GCC know.  */
!   if (Back_End_Exceptions ())
!     gnat_init_gcc_eh ();
  
    /* Initialize the GCC support for FP operations.  */
    gnat_init_gcc_fp ();
--- 604,610 ----
  
    main_identifier_node = get_identifier ("main");
  
!   gnat_init_gcc_eh ();
  
    /* Initialize the GCC support for FP operations.  */
    gnat_init_gcc_fp ();
*************** fold_constant_decl_in_expr (tree exp)
*** 1097,1103 ****
  	return exp;
  
        return fold (build4 (code, TREE_TYPE (exp), op0, TREE_OPERAND (exp, 1),
! 			   TREE_OPERAND (exp, 2), NULL_TREE));
  
      case REALPART_EXPR:
      case IMAGPART_EXPR:
--- 1033,1039 ----
  	return exp;
  
        return fold (build4 (code, TREE_TYPE (exp), op0, TREE_OPERAND (exp, 1),
! 			   TREE_OPERAND (exp, 2), TREE_OPERAND (exp, 3)));
  
      case REALPART_EXPR:
      case IMAGPART_EXPR:
*************** Gigi_Types_Compatible (Entity_Id type, E
*** 1151,1178 ****
    return false;
  }
  
! /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Identifier,
!    to a GCC tree, which is returned.  GNU_RESULT_TYPE_P is a pointer
!    to where we should place the result type.  */
  
  static tree
  Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
  {
!   /* The entity of GNAT_NODE and its type.  */
!   Node_Id gnat_entity = (Nkind (gnat_node) == N_Defining_Identifier
! 			 || Nkind (gnat_node) == N_Defining_Operator_Symbol)
! 			? gnat_node : Entity (gnat_node);
!   Node_Id gnat_entity_type = Etype (gnat_entity);
    /* If GNAT_NODE is a constant, whether we should use the initialization
       value instead of the constant entity, typically for scalars with an
       address clause when the parent doesn't require an lvalue.  */
!   bool use_constant_initializer = false;
    /* Whether we should require an lvalue for GNAT_NODE.  Needed in
       specific circumstances only, so evaluated lazily.  < 0 means
       unknown, > 0 means known true, 0 means known false.  */
!   int require_lvalue = -1;
!   Entity_Id gnat_result_type;
!   tree gnu_result, gnu_result_type;
  
    /* If the Etype of this node is not the same as that of the Entity, then
       something went wrong, probably in generic instantiation.  However, this
--- 1087,1134 ----
    return false;
  }
  
! /* Return the full view of a private constant E, or of a renaming thereof, if
!    its type has discriminants, and Empty otherwise.  */
! 
! static Entity_Id
! Full_View_Of_Private_Constant (Entity_Id E)
! {
!   while (Present (Renamed_Object (E)) && Is_Entity_Name (Renamed_Object (E)))
!     E = Entity (Renamed_Object (E));
! 
!   if (Ekind (E) != E_Constant || No (Full_View (E)))
!     return Empty;
! 
!   const Entity_Id T = Etype (E);
! 
!   if (Is_Private_Type (T)
!       && (Has_Unknown_Discriminants (T)
! 	  || (Present (Full_View (T)) && Has_Discriminants (Full_View (T)))))
!     return Full_View (E);
! 
!   return Empty;
! }
! 
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Identifier, to a GCC
!    tree, which is returned.  GNU_RESULT_TYPE_P is a pointer to where we should
!    place the result type.  */
  
  static tree
  Identifier_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
  {
!   Entity_Id gnat_entity = (Nkind (gnat_node) == N_Defining_Identifier
! 			   || Nkind (gnat_node) == N_Defining_Operator_Symbol)
! 			  ? gnat_node : Entity (gnat_node);
!   Entity_Id gnat_result_type;
!   tree gnu_result, gnu_result_type;
    /* If GNAT_NODE is a constant, whether we should use the initialization
       value instead of the constant entity, typically for scalars with an
       address clause when the parent doesn't require an lvalue.  */
!   bool use_constant_initializer;
    /* Whether we should require an lvalue for GNAT_NODE.  Needed in
       specific circumstances only, so evaluated lazily.  < 0 means
       unknown, > 0 means known true, 0 means known false.  */
!   int require_lvalue;
  
    /* If the Etype of this node is not the same as that of the Entity, then
       something went wrong, probably in generic instantiation.  However, this
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1181,1205 ****
       may have been changed to a subtype by Exp_Ch3.Adjust_Discriminants.  */
    gcc_assert (!Is_Object (gnat_entity)
  	      || Ekind (gnat_entity) == E_Discriminant
! 	      || Etype (gnat_node) == gnat_entity_type
! 	      || Gigi_Types_Compatible (Etype (gnat_node), gnat_entity_type));
  
!   /* If this is a reference to a deferred constant whose partial view is an
       unconstrained private type, the proper type is on the full view of the
!      constant, not on the full view of the type, which may be unconstrained.
! 
!      This may be a reference to a type, for example in the prefix of the
!      attribute Position, generated for dispatching code (see Make_DT in
!      exp_disp,adb). In that case we need the type itself, not is parent,
!      in particular if it is a derived type  */
!   if (Ekind (gnat_entity) == E_Constant
!       && Is_Private_Type (gnat_entity_type)
!       && (Has_Unknown_Discriminants (gnat_entity_type)
! 	  || (Present (Full_View (gnat_entity_type))
!  	      && Has_Discriminants (Full_View (gnat_entity_type))))
!       && Present (Full_View (gnat_entity)))
      {
!       gnat_entity = Full_View (gnat_entity);
        gnat_result_type = Etype (gnat_entity);
      }
    else
--- 1137,1153 ----
       may have been changed to a subtype by Exp_Ch3.Adjust_Discriminants.  */
    gcc_assert (!Is_Object (gnat_entity)
  	      || Ekind (gnat_entity) == E_Discriminant
! 	      || Etype (gnat_node) == Etype (gnat_entity)
! 	      || Gigi_Types_Compatible (Etype (gnat_node),
! 					Etype (gnat_entity)));
  
!   /* If this is a reference to a deferred constant whose partial view is of
       unconstrained private type, the proper type is on the full view of the
!      constant, not on the full view of the type which may be unconstrained.  */
!   const Entity_Id gnat_full_view = Full_View_Of_Private_Constant (gnat_entity);
!   if (Present (gnat_full_view))
      {
!       gnat_entity = gnat_full_view;
        gnat_result_type = Etype (gnat_entity);
      }
    else
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1222,1231 ****
  	gnat_result_type = Etype (gnat_node);
      }
  
!   /* Expand the type of this identifier first, in case it is an enumeral
!      literal, which only get made when the type is expanded.  There is no
!      order-of-elaboration issue here.  */
!   gnu_result_type = get_unpadded_type (gnat_result_type);
  
    /* If this is a non-imported elementary constant with an address clause,
       retrieve the value instead of a pointer to be dereferenced unless
--- 1170,1182 ----
  	gnat_result_type = Etype (gnat_node);
      }
  
!   /* Expand the type of this identifier first if it is needed, in case it is an
!      enumeral literal, which only get made when the type is expanded.  There is
!      no order-of-elaboration issue here.  */
!   if (Is_Subprogram (gnat_entity))
!     gnu_result_type = NULL_TREE;
!   else
!     gnu_result_type = get_unpadded_type (gnat_result_type);
  
    /* If this is a non-imported elementary constant with an address clause,
       retrieve the value instead of a pointer to be dereferenced unless
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1244,1250 ****
--- 1195,1207 ----
  	= lvalue_required_p (gnat_node, gnu_result_type, true, false);
        use_constant_initializer = !require_lvalue;
      }
+   else
+     {
+       require_lvalue = -1;
+       use_constant_initializer = false;
+     }
  
+   /* Fetch the initialization value of a constant if requested.  */
    if (use_constant_initializer)
      {
        /* If this is a deferred constant, the initializer is attached to
*************** Identifier_to_gnu (Node_Id gnat_node, tr
*** 1355,1362 ****
    return gnu_result;
  }
  
! /* Subroutine of gnat_to_gnu to process gnat_node, an N_Pragma.  Return
!    any statements we generate.  */
  
  static tree
  Pragma_to_gnu (Node_Id gnat_node)
--- 1312,1319 ----
    return gnu_result;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Pragma, to a GCC
!    tree, which is returned.  */
  
  static tree
  Pragma_to_gnu (Node_Id gnat_node)
*************** get_type_length (tree type, tree result_
*** 1702,1710 ****
    return length;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Attribute node,
!    to a GCC tree, which is returned.  GNU_RESULT_TYPE_P is a pointer to
!    where we should place the result type.  ATTRIBUTE is the attribute ID.  */
  
  static tree
  Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
--- 1659,1667 ----
    return length;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Attribute node, to a
!    GCC tree, which is returned.  GNU_RESULT_TYPE_P is a pointer to where we
!    should place the result type.  ATTRIBUTE is the attribute ID.  */
  
  static tree
  Attribute_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, int attribute)
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 1714,1719 ****
--- 1671,1677 ----
    tree gnu_type = TREE_TYPE (gnu_prefix);
    tree gnu_expr, gnu_result_type, gnu_result = error_mark_node;
    bool prefix_unused = false;
+   Entity_Id gnat_smo;
  
    /* If the input is a NULL_EXPR, make a new one.  */
    if (TREE_CODE (gnu_prefix) == NULL_EXPR)
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 1723,1728 ****
--- 1681,1694 ----
        return build1 (NULL_EXPR, gnu_result_type, TREE_OPERAND (gnu_prefix, 0));
      }
  
+   /* If the input is a LOAD_EXPR of an unconstrained array type, the second
+      operand contains the storage model object.  */
+   if (TREE_CODE (gnu_prefix) == LOAD_EXPR
+       && TREE_CODE (gnu_type) == UNCONSTRAINED_ARRAY_TYPE)
+     gnat_smo = tree_to_shwi (TREE_OPERAND (gnu_prefix, 1));
+   else
+     gnat_smo = Empty;
+ 
    switch (attribute)
      {
      case Attr_Pred:
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2003,2009 ****
        /* Deal with a self-referential size by qualifying the size with the
  	 object or returning the maximum size for a type.  */
        if (TREE_CODE (gnu_prefix) != TYPE_DECL)
! 	gnu_result = SUBSTITUTE_PLACEHOLDER_IN_EXPR (gnu_result, gnu_prefix);
        else if (CONTAINS_PLACEHOLDER_P (gnu_result))
  	gnu_result = max_size (gnu_result, true);
  
--- 1969,1979 ----
        /* Deal with a self-referential size by qualifying the size with the
  	 object or returning the maximum size for a type.  */
        if (TREE_CODE (gnu_prefix) != TYPE_DECL)
! 	{
! 	  gnu_result = SUBSTITUTE_PLACEHOLDER_IN_EXPR (gnu_result, gnu_prefix);
! 	  if (Present (gnat_smo))
! 	    gnu_result = INSTANTIATE_LOAD_IN_EXPR (gnu_result, gnat_smo);
! 	}
        else if (CONTAINS_PLACEHOLDER_P (gnu_result))
  	gnu_result = max_size (gnu_result, true);
  
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2234,2239 ****
--- 2204,2211 ----
  	   handling.  Note that these attributes could not have been used on
  	   an unconstrained array type.  */
  	gnu_result = SUBSTITUTE_PLACEHOLDER_IN_EXPR (gnu_result, gnu_prefix);
+ 	if (Present (gnat_smo))
+ 	  gnu_result = INSTANTIATE_LOAD_IN_EXPR (gnu_result, gnat_smo);
  
  	/* Cache the expression we have just computed.  Since we want to do it
  	   at run time, we force the use of a SAVE_EXPR and let the gimplifier
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2394,2399 ****
--- 2366,2373 ----
  	/* If this has a PLACEHOLDER_EXPR, qualify it by the object we are
  	   handling.  */
  	gnu_result = SUBSTITUTE_PLACEHOLDER_IN_EXPR (gnu_result, gnu_prefix);
+ 	if (Present (gnat_smo))
+ 	  gnu_result = INSTANTIATE_LOAD_IN_EXPR (gnu_result, gnat_smo);
  	break;
        }
  
*************** Attribute_to_gnu (Node_Id gnat_node, tre
*** 2615,2622 ****
    return gnu_result;
  }
  
! /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Case_Statement,
!    to a GCC tree, which is returned.  */
  
  static tree
  Case_Statement_to_gnu (Node_Id gnat_node)
--- 2589,2596 ----
    return gnu_result;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Case_Statement, to a
!    GCC tree, which is returned.  */
  
  static tree
  Case_Statement_to_gnu (Node_Id gnat_node)
*************** independent_iterations_p (tree stmt_list
*** 2953,2960 ****
    return true;
  }
  
! /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Loop_Statement,
!    to a GCC tree, which is returned.  */
  
  static tree
  Loop_Statement_to_gnu (Node_Id gnat_node)
--- 2927,2934 ----
    return true;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Loop_Statement, to a
!    GCC tree, which is returned.  */
  
  static tree
  Loop_Statement_to_gnu (Node_Id gnat_node)
*************** finalize_nrv (tree fndecl, bitmap nrv, v
*** 3727,3733 ****
    data.result = DECL_RESULT (fndecl);
    data.gnat_ret = gnat_ret;
    data.visited = new hash_set<tree>;
!   if (TYPE_RETURN_UNCONSTRAINED_P (TREE_TYPE (fndecl)))
      func = finalize_nrv_unc_r;
    else
      func = finalize_nrv_r;
--- 3701,3707 ----
    data.result = DECL_RESULT (fndecl);
    data.gnat_ret = gnat_ret;
    data.visited = new hash_set<tree>;
!   if (TYPE_RETURN_BY_DIRECT_REF_P (TREE_TYPE (fndecl)))
      func = finalize_nrv_unc_r;
    else
      func = finalize_nrv_r;
*************** build_return_expr (tree ret_obj, tree re
*** 3838,3860 ****
    return build1 (RETURN_EXPR, void_type_node, result_expr);
  }
  
! /* Subroutine of gnat_to_gnu to process gnat_node, an N_Subprogram_Body.  We
!    don't return anything.  */
  
  static void
  Subprogram_Body_to_gnu (Node_Id gnat_node)
  {
-   /* Defining identifier of a parameter to the subprogram.  */
-   Entity_Id gnat_param;
    /* The defining identifier for the subprogram body. Note that if a
       specification has appeared before for this body, then the identifier
!      occurring in that specification will also be a defining identifier and all
!      the calls to this subprogram will point to that specification.  */
!   Entity_Id gnat_subprog_id
      = (Present (Corresponding_Spec (gnat_node))
         ? Corresponding_Spec (gnat_node) : Defining_Entity (gnat_node));
!   /* The FUNCTION_DECL node corresponding to the subprogram spec.   */
!   tree gnu_subprog_decl;
    /* Its RESULT_DECL node.  */
    tree gnu_result_decl;
    /* Its FUNCTION_TYPE node.  */
--- 3812,3864 ----
    return build1 (RETURN_EXPR, void_type_node, result_expr);
  }
  
! /* Subroutine of gnat_to_gnu to translate the At_End_Proc of GNAT_NODE, an
!    N_Block_Statement or N_Handled_Sequence_Of_Statements or N_*_Body node.
! 
!    To invoked the GCC mechanism, we call add_cleanup and when we leave the
!    group, end_stmt_group will create the TRY_FINALLY_EXPR construct.  */
! 
! static void
! At_End_Proc_to_gnu (Node_Id gnat_node)
! {
!   tree proc_decl = gnat_to_gnu (At_End_Proc (gnat_node));
!   Node_Id gnat_end_label;
! 
!   /* When not optimizing, disable inlining of finalizers as this can
!      create a more complex CFG in the parent function.  */
!   if (!optimize || optimize_debug)
!     DECL_DECLARED_INLINE_P (proc_decl) = 0;
! 
!   /* Retrieve the end label attached to the node, if any.  */
!   if (Nkind (gnat_node) == N_Handled_Sequence_Of_Statements)
!     gnat_end_label = End_Label (gnat_node);
!   else if (Present (Handled_Statement_Sequence (gnat_node)))
!     gnat_end_label = End_Label (Handled_Statement_Sequence (gnat_node));
!   else
!     gnat_end_label = Empty;
! 
!   /* If there is no end label attached, we use the location of the At_End
!      procedure because Expand_Cleanup_Actions might reset the location of
!      the enclosing construct to that of an inner statement.  */
!   add_cleanup (build_call_n_expr (proc_decl, 0),
! 	       Present (gnat_end_label)
! 	       ? gnat_end_label : At_End_Proc (gnat_node));
! }
! 
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Subprogram_Body.  */
  
  static void
  Subprogram_Body_to_gnu (Node_Id gnat_node)
  {
    /* The defining identifier for the subprogram body. Note that if a
       specification has appeared before for this body, then the identifier
!      occurring in that specification will also be a defining identifier
!      and calls to this subprogram will point to that specification.  */
!   Entity_Id gnat_subprog
      = (Present (Corresponding_Spec (gnat_node))
         ? Corresponding_Spec (gnat_node) : Defining_Entity (gnat_node));
!   /* The FUNCTION_DECL node corresponding to the defining identifier.  */
!   tree gnu_subprog;
    /* Its RESULT_DECL node.  */
    tree gnu_result_decl;
    /* Its FUNCTION_TYPE node.  */
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3862,3878 ****
    /* The TYPE_CI_CO_LIST of its FUNCTION_TYPE node, if any.  */
    tree gnu_cico_list;
    /* The entry in the CI_CO_LIST that represents a function return, if any.  */
!   tree gnu_return_var_elmt = NULL_TREE;
!   tree gnu_result;
    location_t locus;
-   struct language_function *gnu_subprog_language;
-   vec<parm_attr, va_gc> *cache;
  
!   /* If this is a generic object or if it has been eliminated,
!      ignore it.  */
!   if (Ekind (gnat_subprog_id) == E_Generic_Procedure
!       || Ekind (gnat_subprog_id) == E_Generic_Function
!       || Is_Eliminated (gnat_subprog_id))
      return;
  
    /* If this subprogram acts as its own spec, define it.  Otherwise, just get
--- 3866,3877 ----
    /* The TYPE_CI_CO_LIST of its FUNCTION_TYPE node, if any.  */
    tree gnu_cico_list;
    /* The entry in the CI_CO_LIST that represents a function return, if any.  */
!   tree gnu_return_var_elmt;
!   /* Its source location.  */
    location_t locus;
  
!   /* If this is a generic subprogram or it has been eliminated, ignore it.  */
!   if (Is_Generic_Subprogram (gnat_subprog) || Is_Eliminated (gnat_subprog))
      return;
  
    /* If this subprogram acts as its own spec, define it.  Otherwise, just get
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3881,3899 ****
       treat it as not being defined in that case.  Such a subprogram cannot
       have an address clause or a freeze node, so this test is safe, though it
       does disable some otherwise-useful error checking.  */
!   gnu_subprog_decl
!     = gnat_to_gnu_entity (gnat_subprog_id, NULL_TREE,
  			  Acts_As_Spec (gnat_node)
! 			  && !present_gnu_tree (gnat_subprog_id));
!   DECL_FUNCTION_IS_DEF (gnu_subprog_decl) = true;
!   gnu_result_decl = DECL_RESULT (gnu_subprog_decl);
!   gnu_subprog_type = TREE_TYPE (gnu_subprog_decl);
    gnu_cico_list = TYPE_CI_CO_LIST (gnu_subprog_type);
    if (gnu_cico_list && TREE_VALUE (gnu_cico_list) == void_type_node)
      gnu_return_var_elmt = gnu_cico_list;
  
    /* If the function returns by invisible reference, make it explicit in the
!      function body.  See gnat_to_gnu_entity, E_Subprogram_Type case.  */
    if (TREE_ADDRESSABLE (gnu_subprog_type))
      {
        TREE_TYPE (gnu_result_decl)
--- 3880,3900 ----
       treat it as not being defined in that case.  Such a subprogram cannot
       have an address clause or a freeze node, so this test is safe, though it
       does disable some otherwise-useful error checking.  */
!   gnu_subprog
!     = gnat_to_gnu_entity (gnat_subprog, NULL_TREE,
  			  Acts_As_Spec (gnat_node)
! 			  && !present_gnu_tree (gnat_subprog));
!   DECL_FUNCTION_IS_DEF (gnu_subprog) = true;
!   gnu_result_decl = DECL_RESULT (gnu_subprog);
!   gnu_subprog_type = TREE_TYPE (gnu_subprog);
    gnu_cico_list = TYPE_CI_CO_LIST (gnu_subprog_type);
    if (gnu_cico_list && TREE_VALUE (gnu_cico_list) == void_type_node)
      gnu_return_var_elmt = gnu_cico_list;
+   else
+     gnu_return_var_elmt = NULL_TREE;
  
    /* If the function returns by invisible reference, make it explicit in the
!      function body.  See gnat_to_gnu_subprog_type for more details.  */
    if (TREE_ADDRESSABLE (gnu_subprog_type))
      {
        TREE_TYPE (gnu_result_decl)
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3902,3931 ****
      }
  
    /* Set the line number in the decl to correspond to that of the body.  */
!   if (DECL_IGNORED_P (gnu_subprog_decl))
      locus = UNKNOWN_LOCATION;
!   else if (!Sloc_to_locus (Sloc (gnat_node), &locus, false, gnu_subprog_decl))
      locus = input_location;
!   DECL_SOURCE_LOCATION (gnu_subprog_decl) = locus;
! 
!   /* If the body comes from an expression function, arrange it to be inlined
!      in almost all cases.  */
!   if (Was_Expression_Function (gnat_node) && !Debug_Flag_Dot_8)
!     DECL_DISREGARD_INLINE_LIMITS (gnu_subprog_decl) = 1;
  
    /* Try to create a bona-fide thunk and hand it over to the middle-end.  */
!   if (Is_Thunk (gnat_subprog_id)
!       && maybe_make_gnu_thunk (gnat_subprog_id, gnu_subprog_decl))
      return;
  
    /* Initialize the information structure for the function.  */
!   allocate_struct_function (gnu_subprog_decl, false);
!   gnu_subprog_language = ggc_cleared_alloc<language_function> ();
!   DECL_STRUCT_FUNCTION (gnu_subprog_decl)->language = gnu_subprog_language;
!   DECL_STRUCT_FUNCTION (gnu_subprog_decl)->function_start_locus = locus;
    set_cfun (NULL);
  
!   begin_subprog_body (gnu_subprog_decl);
  
    /* If there are copy-in/copy-out parameters, we need to ensure that they are
       properly copied out by the return statement.  We do this by making a new
--- 3903,3928 ----
      }
  
    /* Set the line number in the decl to correspond to that of the body.  */
!   if (DECL_IGNORED_P (gnu_subprog))
      locus = UNKNOWN_LOCATION;
!   else if (!Sloc_to_locus (Sloc (gnat_node), &locus, false, gnu_subprog))
      locus = input_location;
!   DECL_SOURCE_LOCATION (gnu_subprog) = locus;
  
    /* Try to create a bona-fide thunk and hand it over to the middle-end.  */
!   if (Is_Thunk (gnat_subprog)
!       && !Is_Secondary_Stack_Thunk (gnat_subprog)
!       && maybe_make_gnu_thunk (gnat_subprog, gnu_subprog))
      return;
  
    /* Initialize the information structure for the function.  */
!   allocate_struct_function (gnu_subprog, false);
!   language_function *gnu_subprog_lang = ggc_cleared_alloc<language_function> ();
!   DECL_STRUCT_FUNCTION (gnu_subprog)->language = gnu_subprog_lang;
!   DECL_STRUCT_FUNCTION (gnu_subprog)->function_start_locus = locus;
    set_cfun (NULL);
  
!   begin_subprog_body (gnu_subprog);
  
    /* If there are copy-in/copy-out parameters, we need to ensure that they are
       properly copied out by the return statement.  We do this by making a new
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3933,3939 ****
       block.  */
    if (gnu_cico_list)
      {
!       tree gnu_return_var = NULL_TREE;
  
        vec_safe_push (gnu_return_label_stack,
  		     create_artificial_label (input_location));
--- 3930,3936 ----
       block.  */
    if (gnu_cico_list)
      {
!       tree gnu_return_var;
  
        vec_safe_push (gnu_return_label_stack,
  		     create_artificial_label (input_location));
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3953,3961 ****
  	    = create_var_decl (get_identifier ("RETVAL"), NULL_TREE,
  			       gnu_return_type, NULL_TREE,
  			       false, false, false, false, false,
! 			       true, false, NULL, gnat_subprog_id);
  	  TREE_VALUE (gnu_return_var_elmt) = gnu_return_var;
  	}
  
        vec_safe_push (gnu_return_var_stack, gnu_return_var);
  
--- 3950,3960 ----
  	    = create_var_decl (get_identifier ("RETVAL"), NULL_TREE,
  			       gnu_return_type, NULL_TREE,
  			       false, false, false, false, false,
! 			       true, false, NULL, gnat_subprog);
  	  TREE_VALUE (gnu_return_var_elmt) = gnu_return_var;
  	}
+       else
+ 	gnu_return_var = NULL_TREE;
  
        vec_safe_push (gnu_return_var_stack, gnu_return_var);
  
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3964,3970 ****
  	 put it into TYPE_CI_CO_LIST, which must contain an empty entry too.
  	 We can match up the entries because TYPE_CI_CO_LIST is in the order
  	 of the parameters.  */
!       for (gnat_param = First_Formal_With_Extras (gnat_subprog_id);
  	   Present (gnat_param);
  	   gnat_param = Next_Formal_With_Extras (gnat_param))
  	if (!present_gnu_tree (gnat_param))
--- 3963,3969 ----
  	 put it into TYPE_CI_CO_LIST, which must contain an empty entry too.
  	 We can match up the entries because TYPE_CI_CO_LIST is in the order
  	 of the parameters.  */
!       for (Entity_Id gnat_param = First_Formal_With_Extras (gnat_subprog);
  	   Present (gnat_param);
  	   gnat_param = Next_Formal_With_Extras (gnat_param))
  	if (!present_gnu_tree (gnat_param))
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 3995,4017 ****
    start_stmt_group ();
    gnat_pushlevel ();
  
!   process_decls (Declarations (gnat_node), Empty, Empty, true, true);
  
!   /* Generate the code of the subprogram itself.  A return statement will be
!      present and any Out parameters will be handled there.  */
    add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
    gnat_poplevel ();
!   gnu_result = end_stmt_group ();
  
    /* Attempt setting the end_locus of our GCC body tree, typically a BIND_EXPR,
       then the end_locus of our GCC subprogram declaration tree.  */
    set_end_locus_from_node (gnu_result, gnat_node);
!   set_end_locus_from_node (gnu_subprog_decl, gnat_node);
  
    /* If we populated the parameter attributes cache, we need to make sure that
       the cached expressions are evaluated on all the possible paths leading to
       their uses.  So we force their evaluation on entry of the function.  */
!   cache = gnu_subprog_language->parm_attr_cache;
    if (cache)
      {
        struct parm_attr_d *pa;
--- 3994,4022 ----
    start_stmt_group ();
    gnat_pushlevel ();
  
!   /* First translate the declarations of the subprogram.  */
!   process_decls (Declarations (gnat_node), Empty, true, true);
  
!   /* Then generate the code of the subprogram itself.  A return statement will
!      be present and any Out parameters will be handled there.  */
    add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
+ 
+   /* Process the At_End_Proc, if any.  */
+   if (Present (At_End_Proc (gnat_node)))
+     At_End_Proc_to_gnu (gnat_node);
+ 
    gnat_poplevel ();
!   tree gnu_result = end_stmt_group ();
  
    /* Attempt setting the end_locus of our GCC body tree, typically a BIND_EXPR,
       then the end_locus of our GCC subprogram declaration tree.  */
    set_end_locus_from_node (gnu_result, gnat_node);
!   set_end_locus_from_node (gnu_subprog, gnat_node);
  
    /* If we populated the parameter attributes cache, we need to make sure that
       the cached expressions are evaluated on all the possible paths leading to
       their uses.  So we force their evaluation on entry of the function.  */
!   vec<parm_attr, va_gc> *cache = gnu_subprog_lang->parm_attr_cache;
    if (cache)
      {
        struct parm_attr_d *pa;
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4032,4038 ****
        add_stmt (gnu_result);
        gnu_result = end_stmt_group ();
  
!       gnu_subprog_language->parm_attr_cache = NULL;
      }
  
    /* If we are dealing with a return from an Ada procedure with parameters
--- 4037,4043 ----
        add_stmt (gnu_result);
        gnu_result = end_stmt_group ();
  
!       gnu_subprog_lang->parm_attr_cache = NULL;
      }
  
    /* If we are dealing with a return from an Ada procedure with parameters
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4104,4110 ****
  
    /* On SEH targets, install an exception handler around the main entry
       point to catch unhandled exceptions.  */
!   if (DECL_NAME (gnu_subprog_decl) == main_identifier_node
        && targetm_common.except_unwind_info (&global_options) == UI_SEH)
      {
        tree t;
--- 4109,4115 ----
  
    /* On SEH targets, install an exception handler around the main entry
       point to catch unhandled exceptions.  */
!   if (DECL_NAME (gnu_subprog) == main_identifier_node
        && targetm_common.except_unwind_info (&global_options) == UI_SEH)
      {
        tree t;
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4126,4132 ****
  
    /* Finally annotate the parameters and disconnect the trees for parameters
       that we have turned into variables since they are now unusable.  */
!   for (gnat_param = First_Formal_With_Extras (gnat_subprog_id);
         Present (gnat_param);
         gnat_param = Next_Formal_With_Extras (gnat_param))
      {
--- 4131,4137 ----
  
    /* Finally annotate the parameters and disconnect the trees for parameters
       that we have turned into variables since they are now unusable.  */
!   for (Entity_Id gnat_param = First_Formal_With_Extras (gnat_subprog);
         Present (gnat_param);
         gnat_param = Next_Formal_With_Extras (gnat_param))
      {
*************** Subprogram_Body_to_gnu (Node_Id gnat_nod
*** 4146,4167 ****
  
    /* If the function returns an aggregate type and we have candidates for
       a Named Return Value, finalize the optimization.  */
!   if (optimize && !optimize_debug && gnu_subprog_language->named_ret_val)
      {
!       finalize_nrv (gnu_subprog_decl,
! 		    gnu_subprog_language->named_ret_val,
! 		    gnu_subprog_language->other_ret_val,
! 		    gnu_subprog_language->gnat_ret);
!       gnu_subprog_language->named_ret_val = NULL;
!       gnu_subprog_language->other_ret_val = NULL;
      }
  
    /* If this is an inlined external function that has been marked uninlinable,
       drop the body and stop there.  Otherwise compile the body.  */
!   if (DECL_EXTERNAL (gnu_subprog_decl) && DECL_UNINLINABLE (gnu_subprog_decl))
!     DECL_SAVED_TREE (gnu_subprog_decl) = NULL_TREE;
    else
!     rest_of_subprog_body_compilation (gnu_subprog_decl);
  }
  
  /* The type of an atomic access.  */
--- 4151,4172 ----
  
    /* If the function returns an aggregate type and we have candidates for
       a Named Return Value, finalize the optimization.  */
!   if (optimize && !optimize_debug && gnu_subprog_lang->named_ret_val)
      {
!       finalize_nrv (gnu_subprog,
! 		    gnu_subprog_lang->named_ret_val,
! 		    gnu_subprog_lang->other_ret_val,
! 		    gnu_subprog_lang->gnat_ret);
!       gnu_subprog_lang->named_ret_val = NULL;
!       gnu_subprog_lang->other_ret_val = NULL;
      }
  
    /* If this is an inlined external function that has been marked uninlinable,
       drop the body and stop there.  Otherwise compile the body.  */
!   if (DECL_EXTERNAL (gnu_subprog) && DECL_UNINLINABLE (gnu_subprog))
!     DECL_SAVED_TREE (gnu_subprog) = NULL_TREE;
    else
!     rest_of_subprog_body_compilation (gnu_subprog);
  }
  
  /* The type of an atomic access.  */
*************** node_is_atomic (Node_Id gnat_node)
*** 4182,4190 ****
      case N_Identifier:
      case N_Expanded_Name:
        gnat_entity = Entity (gnat_node);
!       if (Ekind (gnat_entity) != E_Variable)
  	break;
!       return Is_Atomic (gnat_entity) || Is_Atomic (Etype (gnat_entity));
  
      case N_Selected_Component:
        return Is_Atomic (Etype (gnat_node))
--- 4187,4197 ----
      case N_Identifier:
      case N_Expanded_Name:
        gnat_entity = Entity (gnat_node);
!       if (!Is_Object (gnat_entity))
  	break;
!       return Is_Atomic (gnat_entity)
! 	     || (Is_Atomic (Etype (gnat_entity))
! 		 && !simple_constant_p (gnat_entity));
  
      case N_Selected_Component:
        return Is_Atomic (Etype (gnat_node))
*************** node_is_volatile_full_access (Node_Id gn
*** 4223,4229 ****
        if (!Is_Object (gnat_entity))
  	break;
        return Is_Volatile_Full_Access (gnat_entity)
! 	     || Is_Volatile_Full_Access (Etype (gnat_entity));
  
      case N_Selected_Component:
        return Is_Volatile_Full_Access (Etype (gnat_node))
--- 4230,4237 ----
        if (!Is_Object (gnat_entity))
  	break;
        return Is_Volatile_Full_Access (gnat_entity)
! 	     || (Is_Volatile_Full_Access (Etype (gnat_entity))
! 		 && !simple_constant_p (gnat_entity));
  
      case N_Selected_Component:
        return Is_Volatile_Full_Access (Etype (gnat_node))
*************** simple_atomic_access_required_p (Node_Id
*** 4365,4370 ****
--- 4373,4426 ----
    return type == SIMPLE_ATOMIC;
  }
  
+ /* Return the storage model specified by GNAT_NODE, or else Empty.  */
+ 
+ static Entity_Id
+ get_storage_model (Node_Id gnat_node)
+ {
+   if (Nkind (gnat_node) == N_Explicit_Dereference
+       && Has_Designated_Storage_Model_Aspect (Etype (Prefix (gnat_node))))
+     return Storage_Model_Object (Etype (Prefix (gnat_node)));
+   else
+     return Empty;
+ }
+ 
+ /* Compute whether GNAT_NODE requires storage model access and set GNAT_SMO to
+    the storage model object to be used for it if it does, or else Empty.  */
+ 
+ static void
+ get_storage_model_access (Node_Id gnat_node, Entity_Id *gnat_smo)
+ {
+   const Node_Id gnat_parent = Parent (gnat_node);
+ 
+   /* If we are the prefix of the parent, then the access is above us.  */
+   if (node_is_component (gnat_parent) && Prefix (gnat_parent) == gnat_node)
+     {
+       *gnat_smo = Empty;
+       return;
+     }
+ 
+   /* Now strip any type conversion from GNAT_NODE.  */
+   if (Nkind (gnat_node) == N_Type_Conversion
+       || Nkind (gnat_node) == N_Unchecked_Type_Conversion)
+     gnat_node = Expression (gnat_node);
+ 
+   while (node_is_component (gnat_node))
+     gnat_node = Prefix (gnat_node);
+ 
+   *gnat_smo = get_storage_model (gnat_node);
+ }
+ 
+ /* Return true if GNAT_NODE requires storage model access and, if so, set
+    GNAT_SMO to the storage model object to be used for it.  */
+ 
+ static bool
+ storage_model_access_required_p (Node_Id gnat_node, Entity_Id *gnat_smo)
+ {
+   get_storage_model_access (gnat_node, gnat_smo);
+   return Present (*gnat_smo);
+ }
+ 
  /* Create a temporary variable with PREFIX and TYPE, and return it.  */
  
  static tree
*************** elaborate_profile (Entity_Id first_forma
*** 4473,4490 ****
      (void) gnat_to_gnu_type (result_type);
  }
  
! /* Subroutine of gnat_to_gnu to translate gnat_node, either an N_Function_Call
     or an N_Procedure_Call_Statement, to a GCC tree, which is returned.
     GNU_RESULT_TYPE_P is a pointer to where we should place the result type.
     If GNU_TARGET is non-null, this must be a function call on the RHS of a
     N_Assignment_Statement and the result is to be placed into that object.
     ATOMIC_ACCESS is the type of atomic access to be used for the assignment
     to GNU_TARGET.  If, in addition, ATOMIC_SYNC is true, then the assignment
!    to GNU_TARGET requires atomic synchronization.  */
  
  static tree
  Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
! 	     atomic_acces_t atomic_access, bool atomic_sync)
  {
    const bool function_call = (Nkind (gnat_node) == N_Function_Call);
    const bool returning_value = (function_call && !gnu_target);
--- 4529,4549 ----
      (void) gnat_to_gnu_type (result_type);
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Function_Call
     or an N_Procedure_Call_Statement, to a GCC tree, which is returned.
     GNU_RESULT_TYPE_P is a pointer to where we should place the result type.
     If GNU_TARGET is non-null, this must be a function call on the RHS of a
     N_Assignment_Statement and the result is to be placed into that object.
     ATOMIC_ACCESS is the type of atomic access to be used for the assignment
     to GNU_TARGET.  If, in addition, ATOMIC_SYNC is true, then the assignment
!    to GNU_TARGET requires atomic synchronization.  GNAT_STORAGE_MODEL is the
!    storage model object to be used for the assignment to GNU_TARGET or Empty
!    if there is none.  */
  
  static tree
  Call_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p, tree gnu_target,
! 	     atomic_acces_t atomic_access, bool atomic_sync,
! 	     Entity_Id gnat_storage_model)
  {
    const bool function_call = (Nkind (gnat_node) == N_Function_Call);
    const bool returning_value = (function_call && !gnu_target);
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4516,4521 ****
--- 4575,4581 ----
    Node_Id gnat_actual;
    atomic_acces_t aa_type;
    bool aa_sync;
+   Entity_Id gnat_smo;
  
    /* The only way we can make a call via an access type is if GNAT_NAME is an
       explicit dereference.  In that case, get the list of formal args from the
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4633,4639 ****
  	  unconstrained record type with default discriminant, because the
  	  return may copy more data than the bit-field can contain.
  
!        5. There is no target and we have misaligned In Out or Out parameters
  	  passed by reference, because we need to preserve the return value
  	  before copying back the parameters.  However, in this case, we'll
  	  defer creating the temporary, see below.
--- 4693,4701 ----
  	  unconstrained record type with default discriminant, because the
  	  return may copy more data than the bit-field can contain.
  
!        5. There is a target which needs to be accessed with a storage model.
! 
!        6. There is no target and we have misaligned In Out or Out parameters
  	  passed by reference, because we need to preserve the return value
  	  before copying back the parameters.  However, in this case, we'll
  	  defer creating the temporary, see below.
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4663,4669 ****
  	      && DECL_BIT_FIELD (TREE_OPERAND (gnu_target, 1))
  	      && DECL_SIZE (TREE_OPERAND (gnu_target, 1))
  		 != TYPE_SIZE (TREE_TYPE (gnu_target))
! 	      && type_is_padding_self_referential (gnu_result_type))))
      {
        gnu_retval = create_temporary ("R", gnu_result_type);
        DECL_RETURN_VALUE_P (gnu_retval) = 1;
--- 4725,4734 ----
  	      && DECL_BIT_FIELD (TREE_OPERAND (gnu_target, 1))
  	      && DECL_SIZE (TREE_OPERAND (gnu_target, 1))
  		 != TYPE_SIZE (TREE_TYPE (gnu_target))
! 	      && type_is_padding_self_referential (gnu_result_type))
! 	  || (gnu_target
! 	      && Present (gnat_storage_model)
! 	      && Present (Storage_Model_Copy_To (gnat_storage_model)))))
      {
        gnu_retval = create_temporary ("R", gnu_result_type);
        DECL_RETURN_VALUE_P (gnu_retval) = 1;
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4734,4745 ****
  	      = build_compound_expr (TREE_TYPE (gnu_name), init, gnu_name);
  	}
  
!       /* If we are passing a non-addressable parameter by reference, pass the
! 	 address of a copy.  In the In Out or Out case, set up to copy back
! 	 out after the call.  */
        if (is_by_ref_formal_parm
  	  && (gnu_name_type = gnat_to_gnu_type (Etype (gnat_name)))
! 	  && !addressable_p (gnu_name, gnu_name_type))
  	{
  	  tree gnu_orig = gnu_name, gnu_temp, gnu_stmt;
  
--- 4799,4817 ----
  	      = build_compound_expr (TREE_TYPE (gnu_name), init, gnu_name);
  	}
  
!       get_storage_model_access (gnat_actual, &gnat_smo);
! 
!       /* If we are passing a non-addressable actual parameter by reference,
! 	 pass the address of a copy.  Likewise if it needs to be accessed with
! 	 a storage model.  In the In Out or Out case, set up to copy back out
! 	 after the call.  */
        if (is_by_ref_formal_parm
  	  && (gnu_name_type = gnat_to_gnu_type (Etype (gnat_name)))
! 	  && (!addressable_p (gnu_name, gnu_name_type)
! 	      || (Present (gnat_smo)
! 		  && (Present (Storage_Model_Copy_From (gnat_smo))
! 		      || (!in_param
! 			  && Present (Storage_Model_Copy_To (gnat_smo)))))))
  	{
  	  tree gnu_orig = gnu_name, gnu_temp, gnu_stmt;
  
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4810,4829 ****
  	    }
  
  	  /* Create an explicit temporary holding the copy.  */
  	  /* Do not initialize it for the _Init parameter of an initialization
  	     procedure since no data is meant to be passed in.  */
  	  if (Ekind (gnat_formal) == E_Out_Parameter
  	      && Is_Entity_Name (gnat_subprog)
  	      && Is_Init_Proc (Entity (gnat_subprog)))
! 	    gnu_name = gnu_temp = create_temporary ("A", TREE_TYPE (gnu_name));
  
  	  /* Initialize it on the fly like for an implicit temporary in the
  	     other cases, as we don't necessarily have a statement list.  */
  	  else
  	    {
! 	      gnu_temp = create_init_temporary ("A", gnu_name, &gnu_stmt,
! 						gnat_actual);
! 	      gnu_name = build_compound_expr (TREE_TYPE (gnu_name), gnu_stmt,
  					      gnu_temp);
  	    }
  
--- 4882,4921 ----
  	    }
  
  	  /* Create an explicit temporary holding the copy.  */
+ 	  tree gnu_temp_type;
+ 	  if (Nkind (gnat_actual) == N_Explicit_Dereference
+ 	      && Present (Actual_Designated_Subtype (gnat_actual)))
+ 	    gnu_temp_type
+ 	      = gnat_to_gnu_type (Actual_Designated_Subtype (gnat_actual));
+ 	  else
+ 	    gnu_temp_type = TREE_TYPE (gnu_name);
+ 
  	  /* Do not initialize it for the _Init parameter of an initialization
  	     procedure since no data is meant to be passed in.  */
  	  if (Ekind (gnat_formal) == E_Out_Parameter
  	      && Is_Entity_Name (gnat_subprog)
  	      && Is_Init_Proc (Entity (gnat_subprog)))
! 	    gnu_name = gnu_temp = create_temporary ("A", gnu_temp_type);
  
  	  /* Initialize it on the fly like for an implicit temporary in the
  	     other cases, as we don't necessarily have a statement list.  */
  	  else
  	    {
! 	      if (Present (gnat_smo)
! 		  && Present (Storage_Model_Copy_From (gnat_smo)))
! 		{
! 		  gnu_temp = create_temporary ("A", gnu_temp_type);
! 		  gnu_stmt
! 		    = build_storage_model_load (gnat_smo, gnu_temp,
! 						gnu_name,
! 						TYPE_SIZE_UNIT (gnu_temp_type));
! 		  set_expr_location_from_node (gnu_stmt, gnat_actual);
! 		}
! 	      else
! 		gnu_temp = create_init_temporary ("A", gnu_name, &gnu_stmt,
! 						  gnat_actual);
! 
! 	      gnu_name = build_compound_expr (gnu_temp_type, gnu_stmt,
  					      gnu_temp);
  	    }
  
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4839,4846 ****
  		     (TREE_OPERAND (TREE_OPERAND (gnu_orig, 1), 1)))
  		gnu_orig = TREE_OPERAND (gnu_orig, 2);
  
! 	      gnu_stmt
! 		= build_binary_op (MODIFY_EXPR, NULL_TREE, gnu_orig, gnu_temp);
  	      set_expr_location_from_node (gnu_stmt, gnat_node);
  
  	      append_to_statement_list (gnu_stmt, &gnu_after_list);
--- 4931,4946 ----
  		     (TREE_OPERAND (TREE_OPERAND (gnu_orig, 1), 1)))
  		gnu_orig = TREE_OPERAND (gnu_orig, 2);
  
! 	      if (Present (gnat_smo)
! 		  && Present (Storage_Model_Copy_To (gnat_smo)))
! 		gnu_stmt
! 		  = build_storage_model_store (gnat_smo, gnu_orig,
! 					       gnu_temp,
! 					       TYPE_SIZE_UNIT (gnu_temp_type));
! 	      else
! 		gnu_stmt
! 		  = build_binary_op (MODIFY_EXPR, NULL_TREE, gnu_orig,
! 				     gnu_temp);
  	      set_expr_location_from_node (gnu_stmt, gnat_node);
  
  	      append_to_statement_list (gnu_stmt, &gnu_after_list);
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 4851,4862 ****
        tree gnu_actual = gnu_name;
  
        /* If atomic access is required for an In or In Out actual parameter,
! 	 build the atomic load.  */
        if (is_true_formal_parm
  	  && !is_by_ref_formal_parm
! 	  && Ekind (gnat_formal) != E_Out_Parameter
! 	  && simple_atomic_access_required_p (gnat_actual, &aa_sync))
! 	gnu_actual = build_atomic_load (gnu_actual, aa_sync);
  
        /* If this was a procedure call, we may not have removed any padding.
  	 So do it here for the part we will use as an input, if any.  */
--- 4951,4969 ----
        tree gnu_actual = gnu_name;
  
        /* If atomic access is required for an In or In Out actual parameter,
! 	 build the atomic load.  Or else, if storage model access is required,
! 	 build the special load.  */
        if (is_true_formal_parm
  	  && !is_by_ref_formal_parm
! 	  && Ekind (gnat_formal) != E_Out_Parameter)
! 	{
! 	  if (simple_atomic_access_required_p (gnat_actual, &aa_sync))
! 	    gnu_actual = build_atomic_load (gnu_actual, aa_sync);
! 
! 	  else if (Present (gnat_smo)
! 		   && Present (Storage_Model_Copy_From (gnat_smo)))
! 	    gnu_actual = build_storage_model_load (gnat_smo, gnu_actual);
! 	}
  
        /* If this was a procedure call, we may not have removed any padding.
  	 So do it here for the part we will use as an input, if any.  */
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5220,5225 ****
--- 5327,5333 ----
  	      }
  
  	    get_atomic_access (gnat_actual, &aa_type, &aa_sync);
+ 	    get_storage_model_access (gnat_actual, &gnat_smo);
  
  	    /* If an outer atomic access is required for an actual parameter,
  	       build the load-modify-store sequence.  */
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5233,5238 ****
--- 5341,5353 ----
  	      gnu_result
  		= build_atomic_store (gnu_actual, gnu_result, aa_sync);
  
+ 	    /* Or else, if a storage model access is required, build the special
+ 	       store.  */
+ 	    else if (Present (gnat_smo)
+ 		     && Present (Storage_Model_Copy_To (gnat_smo)))
+ 	      gnu_result
+ 		= build_storage_model_store (gnat_smo, gnu_actual, gnu_result);
+ 
  	    /* Otherwise build a regular assignment.  */
  	    else
  	      gnu_result = build_binary_op (MODIFY_EXPR, NULL_TREE,
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5261,5270 ****
  	  gnu_result_type = TREE_TYPE (gnu_call);
  	}
  
!       /* If the function returns an unconstrained array or by direct reference,
! 	 we have to dereference the pointer.  */
!       if (TYPE_RETURN_UNCONSTRAINED_P (gnu_subprog_type)
! 	  || TYPE_RETURN_BY_DIRECT_REF_P (gnu_subprog_type))
  	gnu_call = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_call);
  
        if (gnu_target)
--- 5376,5384 ----
  	  gnu_result_type = TREE_TYPE (gnu_call);
  	}
  
!       /* If the function returns by direct reference, we have to dereference
! 	 the pointer.  */
!       if (TYPE_RETURN_BY_DIRECT_REF_P (gnu_subprog_type))
  	gnu_call = build_unary_op (INDIRECT_REF, NULL_TREE, gnu_call);
  
        if (gnu_target)
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5290,5295 ****
--- 5404,5418 ----
  		   && return_slot_opt_for_pure_call_p (gnu_target, gnu_call))
  	    op_code = INIT_EXPR;
  
+ 	  /* If this is the initialization of a return object in a function
+ 	     returning by invisible reference, we can always use the return
+ 	     slot optimization.  */
+ 	  else if (TREE_CODE (gnu_target) == INDIRECT_REF
+ 		   && TREE_CODE (TREE_OPERAND (gnu_target, 0)) == RESULT_DECL
+ 		   && current_function_decl
+ 		   && TREE_ADDRESSABLE (TREE_TYPE (current_function_decl)))
+ 	    op_code = INIT_EXPR;
+ 
  	  else
  	    op_code = MODIFY_EXPR;
  
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5299,5304 ****
--- 5422,5432 ----
  	      = build_load_modify_store (gnu_target, gnu_call, gnat_node);
  	  else if (atomic_access == SIMPLE_ATOMIC)
  	    gnu_call = build_atomic_store (gnu_target, gnu_call, atomic_sync);
+ 	  else if (Present (gnat_storage_model)
+ 		   && Present (Storage_Model_Copy_To (gnat_storage_model)))
+ 	    gnu_call
+ 	      = build_storage_model_store (gnat_storage_model, gnu_target,
+ 					   gnu_call);
  	  else
  	    gnu_call
  	      = build_binary_op (op_code, NULL_TREE, gnu_target, gnu_call);
*************** Call_to_gnu (Node_Id gnat_node, tree *gn
*** 5353,5560 ****
    return gnu_result;
  }
  
! /* Subroutine of gnat_to_gnu to translate gnat_node, an
     N_Handled_Sequence_Of_Statements, to a GCC tree, which is returned.  */
  
  static tree
  Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
  {
    /* If just annotating, ignore all EH and cleanups.  */
!   const bool gcc_eh
!     = (!type_annotate_only
!        && Present (Exception_Handlers (gnat_node))
!        && Back_End_Exceptions ());
!   const bool fe_sjlj_eh
!     = (!type_annotate_only
!        && Present (Exception_Handlers (gnat_node))
!        && Exception_Mechanism == Front_End_SJLJ);
    const bool at_end = !type_annotate_only && Present (At_End_Proc (gnat_node));
-   const bool binding_for_block = (at_end || gcc_eh || fe_sjlj_eh);
-   tree gnu_jmpsave_decl = NULL_TREE;
-   tree gnu_jmpbuf_decl = NULL_TREE;
-   tree gnu_inner_block; /* The statement(s) for the block itself.  */
    tree gnu_result;
-   tree gnu_expr;
    Node_Id gnat_temp;
  
!   /* The GCC exception handling mechanism can handle both ZCX and SJLJ schemes
!      and the front-end has its own SJLJ mechanism.  To call the GCC mechanism,
!      we call add_cleanup, and when we leave the binding, end_stmt_group will
!      create the TRY_FINALLY_EXPR construct.
  
       ??? The region level calls down there have been specifically put in place
       for a ZCX context and currently the order in which things are emitted
       (region/handlers) is different from the SJLJ case.  Instead of putting
       other calls with different conditions at other places for the SJLJ case,
       it seems cleaner to reorder things for the SJLJ case and generalize the
!      condition to make it not ZCX specific.
! 
!      If there are any exceptions or cleanup processing involved, we need an
!      outer statement group (for front-end SJLJ) and binding level.  */
!   if (binding_for_block)
!     {
!       start_stmt_group ();
!       gnat_pushlevel ();
!     }
! 
!   /* If using fe_sjlj_eh, make the variables for the setjmp buffer and save
!      area for address of previous buffer.  Do this first since we need to have
!      the setjmp buf known for any decls in this block.  */
!   if (fe_sjlj_eh)
!     {
!       gnu_jmpsave_decl
! 	= create_var_decl (get_identifier ("JMPBUF_SAVE"), NULL_TREE,
! 			   jmpbuf_ptr_type,
! 			   build_call_n_expr (get_jmpbuf_decl, 0),
! 			   false, false, false, false, false, true, false,
! 			   NULL, gnat_node);
! 
!       /* The __builtin_setjmp receivers will immediately reinstall it.  Now
! 	 because of the unstructured form of EH used by fe_sjlj_eh, there
! 	 might be forward edges going to __builtin_setjmp receivers on which
! 	 it is uninitialized, although they will never be actually taken.  */
!       suppress_warning (gnu_jmpsave_decl, OPT_Wuninitialized);
!       gnu_jmpbuf_decl
! 	= create_var_decl (get_identifier ("JMP_BUF"), NULL_TREE,
! 			   jmpbuf_type,
! 			   NULL_TREE,
! 			   false, false, false, false, false, true, false,
! 			   NULL, gnat_node);
! 
!       set_block_jmpbuf_decl (gnu_jmpbuf_decl);
! 
!       /* When we exit this block, restore the saved value.  */
!       add_cleanup (build_call_n_expr (set_jmpbuf_decl, 1, gnu_jmpsave_decl),
! 		   Present (End_Label (gnat_node))
! 		   ? End_Label (gnat_node) : gnat_node);
!     }
! 
!   /* If we are to call a function when exiting this block, add a cleanup
!      to the binding level we made above.  Note that add_cleanup is FIFO
!      so we must register this cleanup after the EH cleanup just above.  */
!   if (at_end)
!     {
!       tree proc_decl = gnat_to_gnu (At_End_Proc (gnat_node));
! 
!       /* When not optimizing, disable inlining of finalizers as this can
! 	 create a more complex CFG in the parent function.  */
!       if (!optimize || optimize_debug)
! 	DECL_DECLARED_INLINE_P (proc_decl) = 0;
! 
!       /* If there is no end label attached, we use the location of the At_End
! 	 procedure because Expand_Cleanup_Actions might reset the location of
! 	 the enclosing construct to that of an inner statement.  */
!       add_cleanup (build_call_n_expr (proc_decl, 0),
! 		   Present (End_Label (gnat_node))
! 		   ? End_Label (gnat_node) : At_End_Proc (gnat_node));
!     }
  
!   /* Now build the tree for the declarations and statements inside this block.
!      If this is SJLJ, set our jmp_buf as the current buffer.  */
    start_stmt_group ();
  
!   if (fe_sjlj_eh)
!     {
!       gnu_expr = build_call_n_expr (set_jmpbuf_decl, 1,
! 				    build_unary_op (ADDR_EXPR, NULL_TREE,
! 						    gnu_jmpbuf_decl));
!       set_expr_location_from_node (gnu_expr, gnat_node);
!       add_stmt (gnu_expr);
!     }
! 
!   if (Present (First_Real_Statement (gnat_node)))
!     process_decls (Statements (gnat_node), Empty,
! 		   First_Real_Statement (gnat_node), true, true);
! 
!   /* Generate code for each statement in the block.  */
!   for (gnat_temp = (Present (First_Real_Statement (gnat_node))
! 		    ? First_Real_Statement (gnat_node)
! 		    : First (Statements (gnat_node)));
!        Present (gnat_temp); gnat_temp = Next (gnat_temp))
      add_stmt (gnat_to_gnu (gnat_temp));
  
!   gnu_inner_block = end_stmt_group ();
! 
!   /* Now generate code for the two exception models, if either is relevant for
!      this block.  */
!   if (fe_sjlj_eh)
!     {
!       tree *gnu_else_ptr = 0;
!       tree gnu_handler;
! 
!       /* Make a binding level for the exception handling declarations and code
! 	 and set up gnu_except_ptr_stack for the handlers to use.  */
!       start_stmt_group ();
!       gnat_pushlevel ();
! 
!       vec_safe_push (gnu_except_ptr_stack,
! 		     create_var_decl (get_identifier ("EXCEPT_PTR"), NULL_TREE,
! 				      build_pointer_type (except_type_node),
! 				      build_call_n_expr (get_excptr_decl, 0),
! 				      false, false, false, false, false,
! 				      true, false, NULL, gnat_node));
! 
!       /* Generate code for each handler. The N_Exception_Handler case does the
! 	 real work and returns a COND_EXPR for each handler, which we chain
! 	 together here.  */
!       for (gnat_temp = First_Non_Pragma (Exception_Handlers (gnat_node));
! 	   Present (gnat_temp); gnat_temp = Next_Non_Pragma (gnat_temp))
! 	{
! 	  gnu_expr = gnat_to_gnu (gnat_temp);
! 
! 	  /* If this is the first one, set it as the outer one. Otherwise,
! 	     point the "else" part of the previous handler to us. Then point
! 	     to our "else" part.  */
! 	  if (!gnu_else_ptr)
! 	    add_stmt (gnu_expr);
! 	  else
! 	    *gnu_else_ptr = gnu_expr;
! 
! 	  gnu_else_ptr = &COND_EXPR_ELSE (gnu_expr);
! 	}
! 
!       /* If none of the exception handlers did anything, re-raise but do not
! 	 defer abortion.  */
!       gnu_expr = build_call_n_expr (raise_nodefer_decl, 1,
! 				    gnu_except_ptr_stack->last ());
!       set_expr_location_from_node
! 	(gnu_expr,
! 	 Present (End_Label (gnat_node)) ? End_Label (gnat_node) : gnat_node);
! 
!       if (gnu_else_ptr)
! 	*gnu_else_ptr = gnu_expr;
!       else
! 	add_stmt (gnu_expr);
! 
!       /* End the binding level dedicated to the exception handlers and get the
! 	 whole statement group.  */
!       gnu_except_ptr_stack->pop ();
!       gnat_poplevel ();
!       gnu_handler = end_stmt_group ();
! 
!       /* If the setjmp returns 1, we restore our incoming longjmp value and
! 	 then check the handlers.  */
!       start_stmt_group ();
!       add_stmt_with_node (build_call_n_expr (set_jmpbuf_decl, 1,
! 					     gnu_jmpsave_decl),
! 			  gnat_node);
!       add_stmt (gnu_handler);
!       gnu_handler = end_stmt_group ();
  
!       /* This block is now "if (setjmp) ... <handlers> else <block>".  */
!       gnu_result = build3 (COND_EXPR, void_type_node,
! 			   (build_call_n_expr
! 			    (setjmp_decl, 1,
! 			     build_unary_op (ADDR_EXPR, NULL_TREE,
! 					     gnu_jmpbuf_decl))),
! 			   gnu_handler, gnu_inner_block);
!     }
!   else if (gcc_eh)
      {
        tree gnu_handlers;
        location_t locus;
  
!       /* First make a block containing the handlers.  */
        start_stmt_group ();
        for (gnat_temp = First_Non_Pragma (Exception_Handlers (gnat_node));
  	   Present (gnat_temp);
--- 5481,5526 ----
    return gnu_result;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an
     N_Handled_Sequence_Of_Statements, to a GCC tree, which is returned.  */
  
  static tree
  Handled_Sequence_Of_Statements_to_gnu (Node_Id gnat_node)
  {
    /* If just annotating, ignore all EH and cleanups.  */
!   const bool eh
!     = !type_annotate_only && Present (Exception_Handlers (gnat_node));
    const bool at_end = !type_annotate_only && Present (At_End_Proc (gnat_node));
    tree gnu_result;
    Node_Id gnat_temp;
  
!   /* The exception handling mechanism can handle both ZCX and SJLJ schemes, and
!      is exposed through the TRY_CATCH_EXPR construct that we build manually.
  
       ??? The region level calls down there have been specifically put in place
       for a ZCX context and currently the order in which things are emitted
       (region/handlers) is different from the SJLJ case.  Instead of putting
       other calls with different conditions at other places for the SJLJ case,
       it seems cleaner to reorder things for the SJLJ case and generalize the
!      condition to make it not ZCX specific.  */
  
!   /* First build the tree for the statements inside the sequence.  */
    start_stmt_group ();
  
!   for (gnat_temp = First (Statements (gnat_node));
!        Present (gnat_temp);
!        gnat_temp = Next (gnat_temp))
      add_stmt (gnat_to_gnu (gnat_temp));
  
!   gnu_result = end_stmt_group ();
  
!   /* Then process the exception handlers, if any.  */
!   if (eh)
      {
        tree gnu_handlers;
        location_t locus;
  
!       /* First make a group containing the handlers.  */
        start_stmt_group ();
        for (gnat_temp = First_Non_Pragma (Exception_Handlers (gnat_node));
  	   Present (gnat_temp);
*************** Handled_Sequence_Of_Statements_to_gnu (N
*** 5562,5570 ****
  	add_stmt (gnat_to_gnu (gnat_temp));
        gnu_handlers = end_stmt_group ();
  
!       /* Now make the TRY_CATCH_EXPR for the block.  */
!       gnu_result = build2 (TRY_CATCH_EXPR, void_type_node,
! 			   gnu_inner_block, gnu_handlers);
        /* Set a location.  We need to find a unique location for the dispatching
  	 code, otherwise we can get coverage or debugging issues.  Try with
  	 the location of the end label.  */
--- 5528,5537 ----
  	add_stmt (gnat_to_gnu (gnat_temp));
        gnu_handlers = end_stmt_group ();
  
!       /* Now make the TRY_CATCH_EXPR for the group.  */
!       gnu_result
! 	= build2 (TRY_CATCH_EXPR, void_type_node, gnu_result, gnu_handlers);
! 
        /* Set a location.  We need to find a unique location for the dispatching
  	 code, otherwise we can get coverage or debugging issues.  Try with
  	 the location of the end label.  */
*************** Handled_Sequence_Of_Statements_to_gnu (N
*** 5578,5666 ****
             coverage analysis tools.  */
  	set_expr_location_from_node (gnu_result, gnat_node, true);
      }
-   else
-     gnu_result = gnu_inner_block;
  
!   /* Now close our outer block, if we had to make one.  */
!   if (binding_for_block)
      {
        add_stmt (gnu_result);
!       gnat_poplevel ();
        gnu_result = end_stmt_group ();
      }
  
    return gnu_result;
  }
  
- /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Exception_Handler,
-    to a GCC tree, which is returned.  This is the variant for front-end sjlj
-    exception handling.  */
- 
- static tree
- Exception_Handler_to_gnu_fe_sjlj (Node_Id gnat_node)
- {
-   /* Unless this is "Others" or the special "Non-Ada" exception for Ada, make
-      an "if" statement to select the proper exceptions.  For "Others", exclude
-      exceptions where Handled_By_Others is nonzero unless the All_Others flag
-      is set. For "Non-ada", accept an exception if "Lang" is 'V'.  */
-   tree gnu_choice = boolean_false_node;
-   tree gnu_body = build_stmt_group (Statements (gnat_node), false);
-   Node_Id gnat_temp;
- 
-   for (gnat_temp = First (Exception_Choices (gnat_node));
-        gnat_temp; gnat_temp = Next (gnat_temp))
-     {
-       tree this_choice;
- 
-       if (Nkind (gnat_temp) == N_Others_Choice)
- 	{
- 	  if (All_Others (gnat_temp))
- 	    this_choice = boolean_true_node;
- 	  else
- 	    this_choice
- 	      = build_binary_op
- 		(EQ_EXPR, boolean_type_node,
- 		 convert
- 		 (integer_type_node,
- 		  build_component_ref
- 		  (build_unary_op
- 		   (INDIRECT_REF, NULL_TREE,
- 		    gnu_except_ptr_stack->last ()),
- 		   not_handled_by_others_decl,
- 		   false)),
- 		 integer_zero_node);
- 	}
- 
-       else if (Nkind (gnat_temp) == N_Identifier
- 	       || Nkind (gnat_temp) == N_Expanded_Name)
- 	{
- 	  Entity_Id gnat_ex_id = Entity (gnat_temp);
- 	  tree gnu_expr;
- 
- 	  /* Exception may be a renaming. Recover original exception which is
- 	     the one elaborated and registered.  */
- 	  if (Present (Renamed_Object (gnat_ex_id)))
- 	    gnat_ex_id = Renamed_Object (gnat_ex_id);
- 
- 	  gnu_expr = gnat_to_gnu_entity (gnat_ex_id, NULL_TREE, false);
- 
- 	  this_choice
- 	    = build_binary_op
- 	      (EQ_EXPR, boolean_type_node,
- 	       gnu_except_ptr_stack->last (),
- 	       convert (TREE_TYPE (gnu_except_ptr_stack->last ()),
- 			build_unary_op (ADDR_EXPR, NULL_TREE, gnu_expr)));
- 	}
-       else
- 	gcc_unreachable ();
- 
-       gnu_choice = build_binary_op (TRUTH_ORIF_EXPR, boolean_type_node,
- 				    gnu_choice, this_choice);
-     }
- 
-   return build3 (COND_EXPR, void_type_node, gnu_choice, gnu_body, NULL_TREE);
- }
- 
  /* Return true if no statement in GNAT_LIST can alter the control flow.  */
  
  static bool
--- 5545,5563 ----
             coverage analysis tools.  */
  	set_expr_location_from_node (gnu_result, gnat_node, true);
      }
  
!   /* Process the At_End_Proc, if any.  */
!   if (at_end)
      {
+       start_stmt_group ();
        add_stmt (gnu_result);
!       At_End_Proc_to_gnu (gnat_node);
        gnu_result = end_stmt_group ();
      }
  
    return gnu_result;
  }
  
  /* Return true if no statement in GNAT_LIST can alter the control flow.  */
  
  static bool
*************** stmt_list_cannot_alter_control_flow_p (L
*** 5691,5702 ****
    return true;
  }
  
! /* Subroutine of gnat_to_gnu to translate gnat_node, an N_Exception_Handler,
!    to a GCC tree, which is returned.  This is the variant for GCC exception
!    schemes.  */
  
  static tree
! Exception_Handler_to_gnu_gcc (Node_Id gnat_node)
  {
    tree gnu_etypes_list = NULL_TREE;
  
--- 5588,5598 ----
    return true;
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Exception_Handler,
!    to a GCC tree, which is returned.  */
  
  static tree
! Exception_Handler_to_gnu (Node_Id gnat_node)
  {
    tree gnu_etypes_list = NULL_TREE;
  
*************** Exception_Handler_to_gnu_gcc (Node_Id gn
*** 5743,5749 ****
      }
  
    start_stmt_group ();
-   gnat_pushlevel ();
  
    /* Expand a call to the begin_handler hook at the beginning of the
       handler, and arrange for a call to the end_handler hook to occur
--- 5639,5644 ----
*************** Exception_Handler_to_gnu_gcc (Node_Id gn
*** 5834,5840 ****
    else
      {
        start_stmt_group ();
!       gnat_pushlevel ();
        /* CODE: void *EXPRP = __builtin_eh_handler (0); */
        tree prop_ptr
  	= create_var_decl (get_identifier ("EXPRP"), NULL_TREE,
--- 5729,5735 ----
    else
      {
        start_stmt_group ();
! 
        /* CODE: void *EXPRP = __builtin_eh_handler (0); */
        tree prop_ptr
  	= create_var_decl (get_identifier ("EXPRP"), NULL_TREE,
*************** Exception_Handler_to_gnu_gcc (Node_Id gn
*** 5854,5874 ****
        add_stmt_with_node (ecall, gnat_node);
  
        /* CODE: } */
-       gnat_poplevel ();
        tree eblk = end_stmt_group ();
        tree ehls = build2 (EH_ELSE_EXPR, void_type_node, call, eblk);
        add_cleanup (ehls, gnat_node);
      }
  
-   gnat_poplevel ();
- 
    gnu_incoming_exc_ptr = prev_gnu_incoming_exc_ptr;
  
    return
      build2 (CATCH_EXPR, void_type_node, gnu_etypes_list, end_stmt_group ());
  }
  
! /* Subroutine of gnat_to_gnu to generate code for an N_Compilation unit.  */
  
  static void
  Compilation_Unit_to_gnu (Node_Id gnat_node)
--- 5749,5766 ----
        add_stmt_with_node (ecall, gnat_node);
  
        /* CODE: } */
        tree eblk = end_stmt_group ();
        tree ehls = build2 (EH_ELSE_EXPR, void_type_node, call, eblk);
        add_cleanup (ehls, gnat_node);
      }
  
    gnu_incoming_exc_ptr = prev_gnu_incoming_exc_ptr;
  
    return
      build2 (CATCH_EXPR, void_type_node, gnu_etypes_list, end_stmt_group ());
  }
  
! /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Compilation_Unit.  */
  
  static void
  Compilation_Unit_to_gnu (Node_Id gnat_node)
*************** Compilation_Unit_to_gnu (Node_Id gnat_no
*** 5927,5933 ****
         gnat_pragma = Next (gnat_pragma))
      if (Nkind (gnat_pragma) == N_Pragma)
        add_stmt (gnat_to_gnu (gnat_pragma));
!   process_decls (Declarations (Aux_Decls_Node (gnat_node)), Empty, Empty,
  		 true, true);
  
    /* Process the unit itself.  */
--- 5819,5825 ----
         gnat_pragma = Next (gnat_pragma))
      if (Nkind (gnat_pragma) == N_Pragma)
        add_stmt (gnat_to_gnu (gnat_pragma));
!   process_decls (Declarations (Aux_Decls_Node (gnat_node)), Empty,
  		 true, true);
  
    /* Process the unit itself.  */
*************** Range_to_gnu (Node_Id gnat_range, tree *
*** 6049,6056 ****
  }
  
  /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Raise_xxx_Error,
!    to a GCC tree and return it.  GNU_RESULT_TYPE_P is a pointer to where
!    we should place the result type.  */
  
  static tree
  Raise_Error_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
--- 5941,5948 ----
  }
  
  /* Subroutine of gnat_to_gnu to translate GNAT_NODE, an N_Raise_xxx_Error,
!    to a GCC tree,  which is returned.  GNU_RESULT_TYPE_P is a pointer to
!    where we should place the result type.  */
  
  static tree
  Raise_Error_to_gnu (Node_Id gnat_node, tree *gnu_result_type_p)
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6341,6349 ****
    atomic_acces_t aa_type;
    bool went_into_elab_proc;
    bool aa_sync;
  
    /* Save node number for error message and set location information.  */
!   Current_Error_Node = gnat_node;
    Sloc_to_locus (Sloc (gnat_node), &input_location);
  
    /* If we are only annotating types and this node is a statement, return
--- 6233,6243 ----
    atomic_acces_t aa_type;
    bool went_into_elab_proc;
    bool aa_sync;
+   Entity_Id gnat_smo;
  
    /* Save node number for error message and set location information.  */
!   if (Sloc (gnat_node) > No_Location)
!     Current_Error_Node = gnat_node;
    Sloc_to_locus (Sloc (gnat_node), &input_location);
  
    /* If we are only annotating types and this node is a statement, return
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6583,6588 ****
--- 6477,6520 ----
  	      || Is_Concurrent_Type (Etype (gnat_temp))))
  	break;
  
+       /* If this is a constant related to a return initialized by a reference
+ 	 to a function call in a function returning by invisible reference:
+ 
+ 	   type Ann is access all Result_Type;
+ 	   Rnn : constant Ann := Func'reference;
+ 	   [...]
+ 	   return Rnn.all;
+ 
+ 	 then elide the temporary by forwarding the return object to Func:
+ 
+ 	   result_type *Rnn = (result_type *) <retval>;
+ 	   *<retval> = Func (); [return slot optimization]
+ 	   [...]
+ 	   return Rnn;
+ 
+ 	 That's necessary if the result type needs finalization because the
+ 	 temporary would never be adjusted as Expand_Simple_Function_Return
+ 	 also elides the temporary in this case.  */
+       if (Ekind (gnat_temp) == E_Constant
+ 	  && Is_Related_To_Func_Return (gnat_temp)
+ 	  && Nkind (Expression (gnat_node)) == N_Reference
+ 	  && Nkind (Prefix (Expression (gnat_node))) == N_Function_Call
+ 	  && current_function_decl
+ 	  && TREE_ADDRESSABLE (TREE_TYPE (current_function_decl)))
+ 	{
+ 	  gnat_to_gnu_entity (gnat_temp,
+ 			      DECL_RESULT (current_function_decl),
+ 			      true);
+ 	  gnu_result
+ 	    = build_unary_op (INDIRECT_REF, NULL_TREE,
+ 			      DECL_RESULT (current_function_decl));
+ 	  gnu_result
+ 	    = Call_to_gnu (Prefix (Expression (gnat_node)),
+ 			   &gnu_result_type, gnu_result,
+ 			   NOT_ATOMIC, false, Empty);
+ 	  break;
+ 	}
+ 
        if (Present (Expression (gnat_node))
  	  && !(kind == N_Object_Declaration && No_Initialization (gnat_node))
  	  && (!type_annotate_only
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6725,6739 ****
        if (simple_atomic_access_required_p (gnat_node, &aa_sync)
  	  && !present_in_lhs_or_actual_p (gnat_node))
  	gnu_result = build_atomic_load (gnu_result, aa_sync);
        break;
  
      case N_Indexed_Component:
        {
! 	tree gnu_array_object = gnat_to_gnu ((Prefix (gnat_node)));
  	tree gnu_type;
  	int ndim, i;
  	Node_Id *gnat_expr_array;
  
  	gnu_array_object = maybe_padded_object (gnu_array_object);
  	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
--- 6657,6681 ----
        if (simple_atomic_access_required_p (gnat_node, &aa_sync)
  	  && !present_in_lhs_or_actual_p (gnat_node))
  	gnu_result = build_atomic_load (gnu_result, aa_sync);
+ 
+       /* If storage model access is required on the RHS, build the load.  */
+       else if (storage_model_access_required_p (gnat_node, &gnat_smo)
+ 	       && Present (Storage_Model_Copy_From (gnat_smo))
+ 	       && !present_in_lhs_or_actual_p (gnat_node))
+ 	gnu_result = build_storage_model_load (gnat_smo, gnu_result);
        break;
  
      case N_Indexed_Component:
        {
! 	const Entity_Id gnat_array_object = Prefix (gnat_node);
! 	tree gnu_array_object = gnat_to_gnu (gnat_array_object);
  	tree gnu_type;
  	int ndim, i;
  	Node_Id *gnat_expr_array;
  
+ 	/* Get the storage model of the array.  */
+ 	gnat_smo = get_storage_model (gnat_array_object);
+ 
  	gnu_array_object = maybe_padded_object (gnu_array_object);
  	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6785,6790 ****
--- 6727,6735 ----
  
  	    gnu_result
  	      = build_binary_op (ARRAY_REF, NULL_TREE, gnu_result, gnu_expr);
+ 
+ 	    if (Present (gnat_smo))
+ 	      instantiate_load_in_array_ref (gnu_result, gnat_smo);
  	  }
  
  	gnu_result_type = get_unpadded_type (Etype (gnat_node));
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6793,6810 ****
  	if (simple_atomic_access_required_p (gnat_node, &aa_sync)
  	    && !present_in_lhs_or_actual_p (gnat_node))
  	  gnu_result = build_atomic_load (gnu_result, aa_sync);
        }
        break;
  
      case N_Slice:
        {
! 	tree gnu_array_object = gnat_to_gnu (Prefix (gnat_node));
  
! 	gnu_result_type = get_unpadded_type (Etype (gnat_node));
  
  	gnu_array_object = maybe_padded_object (gnu_array_object);
  	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
  	gnu_expr = TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_result_type));
  	gnu_expr = maybe_character_value (gnu_expr);
  
--- 6738,6765 ----
  	if (simple_atomic_access_required_p (gnat_node, &aa_sync)
  	    && !present_in_lhs_or_actual_p (gnat_node))
  	  gnu_result = build_atomic_load (gnu_result, aa_sync);
+ 
+ 	/* If storage model access is required on the RHS, build the load.  */
+ 	else if (storage_model_access_required_p (gnat_node, &gnat_smo)
+ 		 && Present (Storage_Model_Copy_From (gnat_smo))
+ 		 && !present_in_lhs_or_actual_p (gnat_node))
+ 	  gnu_result = build_storage_model_load (gnat_smo, gnu_result);
        }
        break;
  
      case N_Slice:
        {
! 	const Entity_Id gnat_array_object = Prefix (gnat_node);
! 	tree gnu_array_object = gnat_to_gnu (gnat_array_object);
  
! 	/* Get the storage model of the array.  */
! 	gnat_smo = get_storage_model (gnat_array_object);
  
  	gnu_array_object = maybe_padded_object (gnu_array_object);
  	gnu_array_object = maybe_unconstrained_array (gnu_array_object);
  
+ 	gnu_result_type = get_unpadded_type (Etype (gnat_node));
+ 
  	gnu_expr = TYPE_MIN_VALUE (TYPE_DOMAIN (gnu_result_type));
  	gnu_expr = maybe_character_value (gnu_expr);
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6817,6822 ****
--- 6772,6786 ----
  
  	gnu_result = build_binary_op (ARRAY_RANGE_REF, gnu_result_type,
  				      gnu_array_object, gnu_expr);
+ 
+ 	if (Present (gnat_smo))
+ 	  instantiate_load_in_array_ref (gnu_result, gnat_smo);
+ 
+ 	/* If storage model access is required on the RHS, build the load.  */
+ 	if (storage_model_access_required_p (gnat_node, &gnat_smo)
+ 	    && Present (Storage_Model_Copy_From (gnat_smo))
+ 	    && !present_in_lhs_or_actual_p (gnat_node))
+ 	  gnu_result = build_storage_model_load (gnat_smo, gnu_result);
        }
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 6894,6899 ****
--- 6858,6869 ----
  	if (simple_atomic_access_required_p (gnat_node, &aa_sync)
  	    && !present_in_lhs_or_actual_p (gnat_node))
  	  gnu_result = build_atomic_load (gnu_result, aa_sync);
+ 
+ 	/* If storage model access is required on the RHS, build the load.  */
+ 	else if (storage_model_access_required_p (gnat_node, &gnat_smo)
+ 		 && Present (Storage_Model_Copy_From (gnat_smo))
+ 		 && !present_in_lhs_or_actual_p (gnat_node))
+ 	  gnu_result = build_storage_model_load (gnat_smo, gnu_result);
        }
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7093,7098 ****
--- 7063,7073 ----
  				    : (Rounded_Result (gnat_node)
  				       ? ROUND_DIV_EXPR : TRUNC_DIV_EXPR),
  				    gnu_result_type, gnu_lhs, gnu_rhs);
+       /* If the result type is larger than a word, then declare the dependence
+ 	 on the libgcc routine.  */
+       if (INTEGRAL_TYPE_P (gnu_result_type)
+ 	  && TYPE_PRECISION (gnu_result_type) > BITS_PER_WORD)
+ 	Check_Restriction_No_Dependence_On_System (Name_Gcc, gnat_node);
        break;
  
      case N_Op_Eq:
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7152,7162 ****
  	    gnu_rhs = convert (gnu_count_type, gnu_rhs);
  	    gnu_max_shift
  	      = convert (TREE_TYPE (gnu_rhs), TYPE_SIZE (gnu_type));
  	  }
  
  	/* Pending generic support for efficient vector logical operations in
! 	   GCC, convert vectors to their representative array type view and
! 	   fallthrough.  */
  	gnu_lhs = maybe_vector_array (gnu_lhs);
  	gnu_rhs = maybe_vector_array (gnu_rhs);
  
--- 7127,7156 ----
  	    gnu_rhs = convert (gnu_count_type, gnu_rhs);
  	    gnu_max_shift
  	      = convert (TREE_TYPE (gnu_rhs), TYPE_SIZE (gnu_type));
+ 	    /* If the result type is larger than a word, then declare the dependence
+ 	       on the libgcc routine.  */
+ 	    if (TYPE_PRECISION (gnu_result_type) > BITS_PER_WORD)
+ 	      Check_Restriction_No_Dependence_On_System (Name_Gcc, gnat_node);
  	  }
  
+ 	/* If this is a comparison between (potentially) large aggregates, then
+ 	   declare the dependence on the memcmp routine.  */
+ 	else if ((kind == N_Op_Eq || kind == N_Op_Ne)
+ 		 && AGGREGATE_TYPE_P (TREE_TYPE (gnu_lhs))
+ 		 && (!TREE_CONSTANT (TYPE_SIZE (TREE_TYPE (gnu_lhs)))
+ 		     || compare_tree_int (TYPE_SIZE (TREE_TYPE (gnu_lhs)),
+ 					  2 * BITS_PER_WORD) > 0))
+ 	  Check_Restriction_No_Dependence_On_System (Name_Memory_Compare,
+ 						     gnat_node);
+ 
+ 	/* If this is a modulo/remainder and the result type is larger than a
+ 	   word, then declare the dependence on the libgcc routine.  */
+ 	else if ((kind == N_Op_Mod ||kind == N_Op_Rem)
+ 		 && TYPE_PRECISION (gnu_result_type) > BITS_PER_WORD)
+ 	  Check_Restriction_No_Dependence_On_System (Name_Gcc, gnat_node);
+ 
  	/* Pending generic support for efficient vector logical operations in
! 	   GCC, convert vectors to their representative array type view.  */
  	gnu_lhs = maybe_vector_array (gnu_lhs);
  	gnu_rhs = maybe_vector_array (gnu_rhs);
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7388,7394 ****
        break;
  
      case N_Assignment_Statement:
!       /* Get the LHS and RHS of the statement and convert any reference to an
  	 unconstrained array into a reference to the underlying array.  */
        gnu_lhs = maybe_unconstrained_array (gnat_to_gnu (Name (gnat_node)));
  
--- 7382,7388 ----
        break;
  
      case N_Assignment_Statement:
!       /* First get the LHS of the statement and convert any reference to an
  	 unconstrained array into a reference to the underlying array.  */
        gnu_lhs = maybe_unconstrained_array (gnat_to_gnu (Name (gnat_node)));
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7398,7410 ****
  	   && !valid_constant_size_p (TYPE_SIZE_UNIT (TREE_TYPE (gnu_lhs))))
  	gnu_result = build_call_raise (SE_Object_Too_Large, gnat_node,
  				       N_Raise_Storage_Error);
        else if (Nkind (Expression (gnat_node)) == N_Function_Call)
  	{
  	  get_atomic_access (Name (gnat_node), &aa_type, &aa_sync);
  	  gnu_result
  	    = Call_to_gnu (Expression (gnat_node), &gnu_result_type, gnu_lhs,
! 			   aa_type, aa_sync);
  	}
        else
  	{
  	  const Node_Id gnat_expr = Expression (gnat_node);
--- 7392,7409 ----
  	   && !valid_constant_size_p (TYPE_SIZE_UNIT (TREE_TYPE (gnu_lhs))))
  	gnu_result = build_call_raise (SE_Object_Too_Large, gnat_node,
  				       N_Raise_Storage_Error);
+ 
+       /* If the RHS is a function call, let Call_to_gnu do the entire work.  */
        else if (Nkind (Expression (gnat_node)) == N_Function_Call)
  	{
  	  get_atomic_access (Name (gnat_node), &aa_type, &aa_sync);
+ 	  get_storage_model_access (Name (gnat_node), &gnat_smo);
  	  gnu_result
  	    = Call_to_gnu (Expression (gnat_node), &gnu_result_type, gnu_lhs,
! 			   aa_type, aa_sync, gnat_smo);
  	}
+ 
+       /* Otherwise we need to build the assignment statement manually.  */
        else
  	{
  	  const Node_Id gnat_expr = Expression (gnat_node);
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7430,7441 ****
--- 7429,7444 ----
  		       && Is_Single_Aggregate (gnat_temp));
  	      gnu_rhs = gnat_to_gnu (gnat_temp);
  	    }
+ 
+ 	  /* Otherwise get the RHS of the statement and do the same processing
+ 	     as for the LHS above.  */
  	  else
  	    gnu_rhs = maybe_unconstrained_array (gnat_to_gnu (gnat_expr));
  
  	  gigi_checking_assert (!Do_Range_Check (gnat_expr));
  
  	  get_atomic_access (Name (gnat_node), &aa_type, &aa_sync);
+ 	  get_storage_model_access (Name (gnat_node), &gnat_smo);
  
  	  /* If an outer atomic access is required on the LHS, build the load-
  	     modify-store sequence.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7447,7452 ****
--- 7450,7495 ----
  	  else if (aa_type == SIMPLE_ATOMIC)
  	    gnu_result = build_atomic_store (gnu_lhs, gnu_rhs, aa_sync);
  
+ 	  /* Or else, if a storage model access is required, build the special
+ 	     store.  */
+ 	  else if (Present (gnat_smo)
+ 		   && Present (Storage_Model_Copy_To (gnat_smo)))
+ 	    {
+ 	      /* We obviously cannot use memset in this case.  */
+ 	      gcc_assert (!use_memset_p);
+ 
+ 	      tree t = remove_conversions (gnu_rhs, false);
+ 
+ 	      /* If a storage model load is present on the RHS then instantiate
+ 		 the temporary associated with it now, lest it be of variable
+ 		 size and thus could not be instantiated by gimplification.  */
+ 	      if (TREE_CODE (t) == LOAD_EXPR)
+ 		{
+ 		  t = TREE_OPERAND (t, 1);
+ 		  gcc_assert (TREE_CODE (t) == CALL_EXPR);
+ 
+ 		  tree elem
+ 		    = build_nonstandard_integer_type (BITS_PER_UNIT, 1);
+ 		  tree size = fold_convert (sizetype, CALL_EXPR_ARG (t, 3));
+ 		  tree index = build_index_type (size);
+ 		  tree temp
+ 		    = create_temporary ("L", build_array_type (elem, index));
+ 		  tree arg = CALL_EXPR_ARG (t, 1);
+ 		  CALL_EXPR_ARG (t, 1)
+ 		    = build_unary_op (ADDR_EXPR, TREE_TYPE (arg), temp);
+ 
+ 		  start_stmt_group ();
+ 		  add_stmt (t);
+ 		  t = build_storage_model_store (gnat_smo, gnu_lhs, temp);
+ 		  add_stmt (t);
+ 		  gnu_result = end_stmt_group ();
+ 		}
+ 
+ 	      else
+ 		gnu_result
+ 		  = build_storage_model_store (gnat_smo, gnu_lhs, gnu_rhs);
+ 	    }
+ 
  	  /* Or else, use memset when the conditions are met.  This has already
  	     been validated by Aggr_Assignment_OK_For_Backend in the front-end
  	     and the RHS is thus guaranteed to be of the appropriate form.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7475,7486 ****
  		  value = int_const_binop (BIT_AND_EXPR, value, mask);
  		}
  	      gnu_result = build_call_expr (t, 3, dest, value, size);
  	    }
  
- 	  /* Otherwise build a regular assignment.  */
  	  else
! 	    gnu_result
! 	      = build_binary_op (MODIFY_EXPR, NULL_TREE, gnu_lhs, gnu_rhs);
  
  	  /* If the assignment type is a regular array and the two sides are
  	     not completely disjoint, play safe and use memmove.  But don't do
--- 7518,7548 ----
  		  value = int_const_binop (BIT_AND_EXPR, value, mask);
  		}
  	      gnu_result = build_call_expr (t, 3, dest, value, size);
+ 	      Check_Restriction_No_Dependence_On_System (Name_Memory_Set,
+ 							 gnat_node);
  	    }
  
  	  else
! 	    {
! 	      tree t = remove_conversions (gnu_rhs, false);
! 
! 	      /* If a storage model load is present on the RHS, then elide the
! 		 temporary associated with it.  */
! 	      if (TREE_CODE (t) == LOAD_EXPR)
! 		{
! 		  gnu_result = TREE_OPERAND (t, 1);
! 		  gcc_assert (TREE_CODE (gnu_result) == CALL_EXPR);
! 
! 		  tree arg = CALL_EXPR_ARG (gnu_result, 1);
! 		  CALL_EXPR_ARG (gnu_result, 1)
! 		    = build_unary_op (ADDR_EXPR, TREE_TYPE (arg), gnu_lhs);
! 		}
! 
! 	      /* Otherwise build a regular assignment.  */
! 	      else
! 		gnu_result
! 		  = build_binary_op (MODIFY_EXPR, NULL_TREE, gnu_lhs, gnu_rhs);
! 	    }
  
  	  /* If the assignment type is a regular array and the two sides are
  	     not completely disjoint, play safe and use memmove.  But don't do
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7499,7505 ****
--- 7561,7578 ----
  	      tree from_ptr = build_fold_addr_expr (from);
  	      tree t = builtin_decl_explicit (BUILT_IN_MEMMOVE);
  	      gnu_result = build_call_expr (t, 3, to_ptr, from_ptr, size);
+ 	      Check_Restriction_No_Dependence_On_System (Name_Memory_Move,
+ 							 gnat_node);
  	   }
+ 
+ 	  /* If this is an assignment between (potentially) large aggregates,
+ 	     then declare the dependence on the memcpy routine.  */
+ 	  else if (AGGREGATE_TYPE_P (TREE_TYPE (gnu_lhs))
+ 		   && (!TREE_CONSTANT (TYPE_SIZE (TREE_TYPE (gnu_lhs)))
+ 		       || compare_tree_int (TYPE_SIZE (TREE_TYPE (gnu_lhs)),
+ 					    2 * BITS_PER_WORD) > 0))
+ 	    Check_Restriction_No_Dependence_On_System (Name_Memory_Copy,
+ 						       gnat_node);
  	}
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7552,7559 ****
  	{
  	  start_stmt_group ();
  	  gnat_pushlevel ();
! 	  process_decls (Declarations (gnat_node), Empty, Empty, true, true);
  	  add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
  	  gnat_poplevel ();
  	  gnu_result = end_stmt_group ();
  	}
--- 7625,7634 ----
  	{
  	  start_stmt_group ();
  	  gnat_pushlevel ();
! 	  process_decls (Declarations (gnat_node), Empty, true, true);
  	  add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
+ 	  if (Present (At_End_Proc (gnat_node)))
+ 	    At_End_Proc_to_gnu (gnat_node);
  	  gnat_poplevel ();
  	  gnu_result = end_stmt_group ();
  	}
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7600,7651 ****
  	      gnu_ret_val = TREE_OPERAND (gnu_ret_val, 0);
  
  	    /* If the function returns by direct reference, return a pointer
! 	       to the return value.  */
! 	    if (TYPE_RETURN_BY_DIRECT_REF_P (gnu_subprog_type)
! 		|| By_Ref (gnat_node))
! 	      gnu_ret_val = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_ret_val);
! 
! 	    /* Otherwise, if it returns an unconstrained array, we have to
! 	       allocate a new version of the result and return it.  */
! 	    else if (TYPE_RETURN_UNCONSTRAINED_P (gnu_subprog_type))
  	      {
! 		gnu_ret_val = maybe_unconstrained_array (gnu_ret_val);
! 
! 		/* And find out whether this is a candidate for Named Return
! 		   Value.  If so, record it.  */
! 		if (optimize
! 		    && !optimize_debug
! 		    && !TYPE_CI_CO_LIST (gnu_subprog_type))
  		  {
! 		    tree ret_val = gnu_ret_val;
  
! 		    /* Strip useless conversions around the return value.  */
! 		    if (gnat_useless_type_conversion (ret_val))
! 		      ret_val = TREE_OPERAND (ret_val, 0);
  
! 		    /* Strip unpadding around the return value.  */
! 		    if (TREE_CODE (ret_val) == COMPONENT_REF
! 			&& TYPE_IS_PADDING_P
! 			   (TREE_TYPE (TREE_OPERAND (ret_val, 0))))
! 		      ret_val = TREE_OPERAND (ret_val, 0);
  
! 		    /* Now apply the test to the return value.  */
! 		    if (return_value_ok_for_nrv_p (NULL_TREE, ret_val))
! 		      {
! 			if (!f_named_ret_val)
! 			  f_named_ret_val = BITMAP_GGC_ALLOC ();
! 			bitmap_set_bit (f_named_ret_val, DECL_UID (ret_val));
! 			if (!f_gnat_ret)
! 			  f_gnat_ret = gnat_node;
  		      }
  		  }
  
! 		gnu_ret_val = build_allocator (TREE_TYPE (gnu_ret_val),
! 					       gnu_ret_val,
! 					       TREE_TYPE (gnu_ret_obj),
! 					       Procedure_To_Call (gnat_node),
! 					       Storage_Pool (gnat_node),
! 					       gnat_node, false);
  	      }
  
  	    /* Otherwise, if it returns by invisible reference, dereference
--- 7675,7730 ----
  	      gnu_ret_val = TREE_OPERAND (gnu_ret_val, 0);
  
  	    /* If the function returns by direct reference, return a pointer
! 	       to the return value, possibly after allocating it.  */
! 	    if (TYPE_RETURN_BY_DIRECT_REF_P (gnu_subprog_type))
  	      {
! 		if (Present (Storage_Pool (gnat_node)))
  		  {
! 		    gnu_ret_val = maybe_unconstrained_array (gnu_ret_val);
  
! 		    /* And find out whether it is a candidate for Named Return
! 		       Value.  If so, record it.  */
! 		    if (optimize
! 			&& !optimize_debug
! 			&& !TYPE_CI_CO_LIST (gnu_subprog_type))
! 		      {
! 			tree ret_val = gnu_ret_val;
  
! 			/* Strip conversions around the return value.  */
! 			if (gnat_useless_type_conversion (ret_val))
! 			  ret_val = TREE_OPERAND (ret_val, 0);
  
! 			/* Strip unpadding around the return value.  */
! 			if (TREE_CODE (ret_val) == COMPONENT_REF
! 			    && TYPE_IS_PADDING_P
! 			      (TREE_TYPE (TREE_OPERAND (ret_val, 0))))
! 			  ret_val = TREE_OPERAND (ret_val, 0);
! 
! 			/* Now apply the test to the return value.  */
! 			if (return_value_ok_for_nrv_p (NULL_TREE, ret_val))
! 			  {
! 			    if (!f_named_ret_val)
! 			      f_named_ret_val = BITMAP_GGC_ALLOC ();
! 			    bitmap_set_bit (f_named_ret_val,
! 					    DECL_UID (ret_val));
! 			    if (!f_gnat_ret)
! 			      f_gnat_ret = gnat_node;
! 			  }
  		      }
+ 
+ 		    gnu_ret_val
+ 		      = build_allocator (TREE_TYPE (gnu_ret_val),
+ 					 gnu_ret_val,
+ 					 TREE_TYPE (gnu_ret_obj),
+ 					 Procedure_To_Call (gnat_node),
+ 					 Storage_Pool (gnat_node),
+ 					 gnat_node,
+ 					 false);
  		  }
  
! 		else
! 		  gnu_ret_val
! 		    = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_ret_val);
  	      }
  
  	    /* Otherwise, if it returns by invisible reference, dereference
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7660,7665 ****
--- 7739,7752 ----
  				    gnu_ret_obj);
  		gnu_result = build2 (INIT_EXPR, void_type_node,
  				     gnu_ret_deref, gnu_ret_val);
+ 		/* Avoid a useless copy with __builtin_return_slot.  */
+ 		if (TREE_CODE (gnu_ret_val) == INDIRECT_REF)
+ 		  gnu_result
+ 		    = build3 (COND_EXPR, void_type_node,
+ 			      fold_build2 (NE_EXPR, boolean_type_node,
+ 					   TREE_OPERAND (gnu_ret_val, 0),
+ 					   gnu_ret_obj),
+ 			      gnu_result, NULL_TREE);
  		add_stmt_with_node (gnu_result, gnat_node);
  		gnu_ret_val = NULL_TREE;
  	      }
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7769,7775 ****
      case N_Function_Call:
      case N_Procedure_Call_Statement:
        gnu_result = Call_to_gnu (gnat_node, &gnu_result_type, NULL_TREE,
! 				NOT_ATOMIC, false);
        break;
  
      /************************/
--- 7856,7862 ----
      case N_Function_Call:
      case N_Procedure_Call_Statement:
        gnu_result = Call_to_gnu (gnat_node, &gnu_result_type, NULL_TREE,
! 				NOT_ATOMIC, false, Empty);
        break;
  
      /************************/
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7781,7795 ****
        break;
  
      case N_Package_Specification:
- 
        start_stmt_group ();
        process_decls (Visible_Declarations (gnat_node),
! 		     Private_Declarations (gnat_node), Empty, true, true);
        gnu_result = end_stmt_group ();
        break;
  
      case N_Package_Body:
- 
        /* If this is the body of a generic package - do nothing.  */
        if (Ekind (Corresponding_Spec (gnat_node)) == E_Generic_Package)
  	{
--- 7868,7881 ----
        break;
  
      case N_Package_Specification:
        start_stmt_group ();
        process_decls (Visible_Declarations (gnat_node),
! 		     Private_Declarations (gnat_node),
! 		     true, true);
        gnu_result = end_stmt_group ();
        break;
  
      case N_Package_Body:
        /* If this is the body of a generic package - do nothing.  */
        if (Ekind (Corresponding_Spec (gnat_node)) == E_Generic_Package)
  	{
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7798,7808 ****
  	}
  
        start_stmt_group ();
!       process_decls (Declarations (gnat_node), Empty, Empty, true, true);
! 
        if (Present (Handled_Statement_Sequence (gnat_node)))
  	add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
! 
        gnu_result = end_stmt_group ();
        break;
  
--- 7884,7894 ----
  	}
  
        start_stmt_group ();
!       process_decls (Declarations (gnat_node), Empty, true, true);
        if (Present (Handled_Statement_Sequence (gnat_node)))
  	add_stmt (gnat_to_gnu (Handled_Statement_Sequence (gnat_node)));
!       if (Present (At_End_Proc (gnat_node)))
! 	At_End_Proc_to_gnu (gnat_node);
        gnu_result = end_stmt_group ();
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7848,7854 ****
      case N_Task_Body:
        /* These nodes should only be present when annotating types.  */
        gcc_assert (type_annotate_only);
!       process_decls (Declarations (gnat_node), Empty, Empty, true, true);
        gnu_result = alloc_stmt_list ();
        break;
  
--- 7934,7940 ----
      case N_Task_Body:
        /* These nodes should only be present when annotating types.  */
        gcc_assert (type_annotate_only);
!       process_decls (Declarations (gnat_node), Empty, true, true);
        gnu_result = alloc_stmt_list ();
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 7871,7900 ****
      /***************************/
  
      case N_Handled_Sequence_Of_Statements:
-       /* If there is an At_End procedure attached to this node, and the EH
- 	 mechanism is front-end, we must have at least a corresponding At_End
- 	 handler, unless the No_Exception_Handlers restriction is set.  */
-       gcc_assert (type_annotate_only
- 		  || !Front_End_Exceptions ()
- 		  || No (At_End_Proc (gnat_node))
- 		  || Present (Exception_Handlers (gnat_node))
- 		  || No_Exception_Handlers_Set ());
- 
        gnu_result = Handled_Sequence_Of_Statements_to_gnu (gnat_node);
        break;
  
      case N_Exception_Handler:
!       if (Back_End_Exceptions ())
! 	gnu_result = Exception_Handler_to_gnu_gcc (gnat_node);
!       else if (Exception_Mechanism == Front_End_SJLJ)
! 	gnu_result = Exception_Handler_to_gnu_fe_sjlj (gnat_node);
!       else
! 	gcc_unreachable ();
        break;
  
      case N_Raise_Statement:
        /* Only for reraise in back-end exceptions mode.  */
!       gcc_assert (No (Name (gnat_node)) && Back_End_Exceptions ());
  
        start_stmt_group ();
  
--- 7957,7972 ----
      /***************************/
  
      case N_Handled_Sequence_Of_Statements:
        gnu_result = Handled_Sequence_Of_Statements_to_gnu (gnat_node);
        break;
  
      case N_Exception_Handler:
!       gnu_result = Exception_Handler_to_gnu (gnat_node);
        break;
  
      case N_Raise_Statement:
        /* Only for reraise in back-end exceptions mode.  */
!       gcc_assert (No (Name (gnat_node)));
  
        start_stmt_group ();
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8164,8170 ****
      case N_Freeze_Entity:
        start_stmt_group ();
        process_freeze_entity (gnat_node);
!       process_decls (Actions (gnat_node), Empty, Empty, true, true);
        gnu_result = end_stmt_group ();
        break;
  
--- 8236,8242 ----
      case N_Freeze_Entity:
        start_stmt_group ();
        process_freeze_entity (gnat_node);
!       process_decls (Actions (gnat_node), Empty, true, true);
        gnu_result = end_stmt_group ();
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8183,8192 ****
  
        if (!type_annotate_only)
  	{
- 	  tree gnu_ptr, gnu_ptr_type, gnu_obj_type, gnu_actual_obj_type;
- 
  	  const Entity_Id gnat_desig_type
  	    = Designated_Type (Underlying_Type (Etype (gnat_temp)));
  
  	  /* Make sure the designated type is complete before dereferencing,
  	     in case it is a Taft Amendment type.  */
--- 8255,8268 ----
  
        if (!type_annotate_only)
  	{
  	  const Entity_Id gnat_desig_type
  	    = Designated_Type (Underlying_Type (Etype (gnat_temp)));
+ 	  const Entity_Id gnat_pool = Storage_Pool (gnat_node);
+ 	  const bool pool_is_storage_model
+ 	    = Present (gnat_pool)
+ 	      && Has_Storage_Model_Type_Aspect (Etype (gnat_pool))
+ 	      && Present (Storage_Model_Copy_From (gnat_pool));
+ 	  tree gnu_ptr, gnu_ptr_type, gnu_obj_type, gnu_actual_obj_type;
  
  	  /* Make sure the designated type is complete before dereferencing,
  	     in case it is a Taft Amendment type.  */
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8247,8258 ****
  
  	  tree gnu_size = TYPE_SIZE_UNIT (gnu_actual_obj_type);
  	  gnu_size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (gnu_size, gnu_ptr);
  
  	  gnu_result
  	      = build_call_alloc_dealloc (gnu_ptr, gnu_size, gnu_obj_type,
  					  Procedure_To_Call (gnat_node),
! 					  Storage_Pool (gnat_node),
! 					  gnat_node);
  	}
        break;
  
--- 8323,8335 ----
  
  	  tree gnu_size = TYPE_SIZE_UNIT (gnu_actual_obj_type);
  	  gnu_size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (gnu_size, gnu_ptr);
+ 	  if (pool_is_storage_model)
+ 	    gnu_size = INSTANTIATE_LOAD_IN_EXPR (gnu_size, gnat_pool);
  
  	  gnu_result
  	      = build_call_alloc_dealloc (gnu_ptr, gnu_size, gnu_obj_type,
  					  Procedure_To_Call (gnat_node),
! 					  gnat_pool, gnat_node);
  	}
        break;
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8396,8404 ****
  	  declaration, return the result unmodified because we want to use the
  	  return slot optimization in this case.
  
!        5. If this is a reference to an unconstrained array which is used as the
! 	  prefix of an attribute reference that requires an lvalue, return the
! 	  result unmodified because we want to return the original bounds.
  
         6. Finally, if the type of the result is already correct.  */
  
--- 8473,8482 ----
  	  declaration, return the result unmodified because we want to use the
  	  return slot optimization in this case.
  
!        5. If this is a reference to an unconstrained array which is used either
! 	  as the prefix of an attribute reference that requires an lvalue or in
! 	  a return statement, then return the result unmodified because we want
! 	  to return the original bounds.
  
         6. Finally, if the type of the result is already correct.  */
  
*************** gnat_to_gnu (Node_Id gnat_node)
*** 8460,8469 ****
  	   && return_type_with_variable_size_p (TREE_TYPE (gnu_result)))
      ;
  
!   else if (TREE_CODE (gnu_result) == UNCONSTRAINED_ARRAY_REF
  	   && Present (Parent (gnat_node))
! 	   && Nkind (Parent (gnat_node)) == N_Attribute_Reference
! 	   && lvalue_required_for_attribute_p (Parent (gnat_node)))
      ;
  
    else if (TREE_TYPE (gnu_result) != gnu_result_type)
--- 8538,8548 ----
  	   && return_type_with_variable_size_p (TREE_TYPE (gnu_result)))
      ;
  
!   else if (TREE_CODE (TREE_TYPE (gnu_result)) == UNCONSTRAINED_ARRAY_TYPE
  	   && Present (Parent (gnat_node))
! 	   && ((Nkind (Parent (gnat_node)) == N_Attribute_Reference
! 	        && lvalue_required_for_attribute_p (Parent (gnat_node)))
! 	       || Nkind (Parent (gnat_node)) == N_Simple_Return_Statement))
      ;
  
    else if (TREE_TYPE (gnu_result) != gnu_result_type)
*************** add_decl_expr (tree gnu_decl, Node_Id gn
*** 8660,8686 ****
        && !TYPE_FAT_POINTER_P (type))
      MARK_VISITED (TYPE_ADA_SIZE (type));
  
!   /* If this is a variable and an initializer is attached to it, it must be
!      valid for the context.  Similar to init_const in create_var_decl.  */
!   if (TREE_CODE (gnu_decl) == VAR_DECL
!       && (gnu_init = DECL_INITIAL (gnu_decl))
!       && (!gnat_types_compatible_p (type, TREE_TYPE (gnu_init))
  	  || (TREE_STATIC (gnu_decl)
  	      && !initializer_constant_valid_p (gnu_init,
! 						TREE_TYPE (gnu_init)))))
!     {
!       DECL_INITIAL (gnu_decl) = NULL_TREE;
!       if (TREE_READONLY (gnu_decl))
  	{
! 	  TREE_READONLY (gnu_decl) = 0;
! 	  DECL_READONLY_ONCE_ELAB (gnu_decl) = 1;
! 	}
  
!       /* Remove any padding so the assignment is done properly.  */
!       gnu_decl = maybe_padded_object (gnu_decl);
  
!       gnu_stmt = build_binary_op (INIT_EXPR, NULL_TREE, gnu_decl, gnu_init);
!       add_stmt_with_node (gnu_stmt, gnat_node);
      }
  }
  
--- 8739,8775 ----
        && !TYPE_FAT_POINTER_P (type))
      MARK_VISITED (TYPE_ADA_SIZE (type));
  
!   if (TREE_CODE (gnu_decl) == VAR_DECL && (gnu_init = DECL_INITIAL (gnu_decl)))
!     {
!       /* If this is a variable and an initializer is attached to it, it must be
! 	 valid for the context.  Similar to init_const in create_var_decl.  */
!       if (!gnat_types_compatible_p (type, TREE_TYPE (gnu_init))
  	  || (TREE_STATIC (gnu_decl)
  	      && !initializer_constant_valid_p (gnu_init,
! 						TREE_TYPE (gnu_init))))
  	{
! 	  DECL_INITIAL (gnu_decl) = NULL_TREE;
! 	  if (TREE_READONLY (gnu_decl))
! 	    {
! 	      TREE_READONLY (gnu_decl) = 0;
! 	      DECL_READONLY_ONCE_ELAB (gnu_decl) = 1;
! 	    }
  
! 	  /* Remove any padding so the assignment is done properly.  */
! 	  gnu_decl = maybe_padded_object (gnu_decl);
  
! 	  gnu_stmt
! 	    = build_binary_op (INIT_EXPR, NULL_TREE, gnu_decl, gnu_init);
! 	  add_stmt_with_node (gnu_stmt, gnat_node);
! 	}
! 
!       /* If this is the initialization of a (potentially) large aggregate, then
! 	 declare the dependence on the memcpy routine.  */
!       if (AGGREGATE_TYPE_P (type)
! 	  && (!TREE_CONSTANT (TYPE_SIZE (type))
! 	      || compare_tree_int (TYPE_SIZE (type), 2 * BITS_PER_WORD) > 0))
! 	Check_Restriction_No_Dependence_On_System (Name_Memory_Copy,
! 						   gnat_node);
      }
  }
  
*************** gnat_gimplify_expr (tree *expr_p, gimple
*** 8847,8876 ****
  
    switch (TREE_CODE (expr))
      {
-     case NULL_EXPR:
-       /* If this is an aggregate type, build a null pointer of the appropriate
- 	 type and dereference it.  */
-       if (AGGREGATE_TYPE_P (type)
- 	  || TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
- 	*expr_p = build_unary_op (INDIRECT_REF, NULL_TREE,
- 				  convert (build_pointer_type (type),
- 					   integer_zero_node));
-       /* Otherwise, just make a VAR_DECL.  */
-       else
- 	{
- 	  *expr_p = create_tmp_var (type, NULL);
- 	  suppress_warning (*expr_p);
- 	}
- 
-       gimplify_and_add (TREE_OPERAND (expr, 0), pre_p);
-       return GS_OK;
- 
-     case UNCONSTRAINED_ARRAY_REF:
-       /* We should only do this if we are just elaborating for side-effects,
- 	 but we can't know that yet.  */
-       *expr_p = TREE_OPERAND (*expr_p, 0);
-       return GS_OK;
- 
      case ADDR_EXPR:
        op = TREE_OPERAND (expr, 0);
  
--- 8936,8941 ----
*************** gnat_gimplify_expr (tree *expr_p, gimple
*** 8904,8911 ****
  	    else
  	      op = inner;
  	  }
! 
!       return GS_UNHANDLED;
  
      case CALL_EXPR:
        /* If we are passing a constant fat pointer CONSTRUCTOR, make sure it is
--- 8969,8975 ----
  	    else
  	      op = inner;
  	  }
!       break;
  
      case CALL_EXPR:
        /* If we are passing a constant fat pointer CONSTRUCTOR, make sure it is
*************** gnat_gimplify_expr (tree *expr_p, gimple
*** 8914,8920 ****
  	 avoid blocking concatenation in the caller when it is inlined.  */
        for (int i = 0; i < call_expr_nargs (expr); i++)
  	{
! 	  tree arg = *(CALL_EXPR_ARGP (expr) + i);
  
  	  if (TREE_CODE (arg) == CONSTRUCTOR
  	      && TREE_CONSTANT (arg)
--- 8978,8984 ----
  	 avoid blocking concatenation in the caller when it is inlined.  */
        for (int i = 0; i < call_expr_nargs (expr); i++)
  	{
! 	  tree arg = CALL_EXPR_ARG (expr, i);
  
  	  if (TREE_CODE (arg) == CONSTRUCTOR
  	      && TREE_CONSTANT (arg)
*************** gnat_gimplify_expr (tree *expr_p, gimple
*** 8926,8936 ****
  	      if (TREE_CODE (t) == ADDR_EXPR)
  		t = TREE_OPERAND (t, 0);
  	      if (TREE_CODE (t) != STRING_CST)
! 		*(CALL_EXPR_ARGP (expr) + i) = tree_output_constant_def (arg);
  	    }
  	}
  
!       return GS_UNHANDLED;
  
      case VIEW_CONVERT_EXPR:
        op = TREE_OPERAND (expr, 0);
--- 8990,9077 ----
  	      if (TREE_CODE (t) == ADDR_EXPR)
  		t = TREE_OPERAND (t, 0);
  	      if (TREE_CODE (t) != STRING_CST)
! 		CALL_EXPR_ARG (expr, i) = tree_output_constant_def (arg);
  	    }
  	}
+       break;
  
!     case DECL_EXPR:
!       op = DECL_EXPR_DECL (expr);
! 
!       /* The expressions for the RM bounds must be gimplified to ensure that
! 	 they are properly elaborated.  See gimplify_decl_expr.  */
!       if ((TREE_CODE (op) == TYPE_DECL || TREE_CODE (op) == VAR_DECL)
! 	  && !TYPE_SIZES_GIMPLIFIED (TREE_TYPE (op))
! 	  && (INTEGRAL_TYPE_P (TREE_TYPE (op))
! 	      || SCALAR_FLOAT_TYPE_P (TREE_TYPE (op))))
! 	{
! 	  tree type = TYPE_MAIN_VARIANT (TREE_TYPE (op)), t, val;
! 
! 	  val = TYPE_RM_MIN_VALUE (type);
! 	  if (val)
! 	    {
! 	      gimplify_one_sizepos (&val, pre_p);
! 	      for (t = type; t; t = TYPE_NEXT_VARIANT (t))
! 		SET_TYPE_RM_MIN_VALUE (t, val);
! 	    }
! 
! 	  val = TYPE_RM_MAX_VALUE (type);
! 	  if (val)
! 	    {
! 	      gimplify_one_sizepos (&val, pre_p);
! 	      for (t = type; t; t = TYPE_NEXT_VARIANT (t))
! 		SET_TYPE_RM_MAX_VALUE (t, val);
! 	    }
! 	}
!       break;
! 
!     case NULL_EXPR:
!       /* If this is an aggregate type, build a null pointer of the appropriate
! 	 type and dereference it.  */
!       if (AGGREGATE_TYPE_P (type)
! 	  || TREE_CODE (type) == UNCONSTRAINED_ARRAY_TYPE)
! 	*expr_p = build_unary_op (INDIRECT_REF, NULL_TREE,
! 				  convert (build_pointer_type (type),
! 					   integer_zero_node));
! 
!       /* Otherwise, just make a VAR_DECL.  */
!       else
! 	{
! 	  *expr_p = create_tmp_var (type, NULL);
! 	   suppress_warning (*expr_p);
! 	}
! 
!       gimplify_and_add (TREE_OPERAND (expr, 0), pre_p);
!       return GS_OK;
! 
!     case SAVE_EXPR:
!       op = TREE_OPERAND (expr, 0);
! 
!       /* Propagate TREE_NO_WARNING from expression to temporary by using the
! 	 SAVE_EXPR itself as an intermediate step.  See gimplify_save_expr.  */
!       if (type == void_type_node)
! 	;
!       else if (SAVE_EXPR_RESOLVED_P (expr))
! 	TREE_NO_WARNING (op) = TREE_NO_WARNING (expr);
!       else
! 	TREE_NO_WARNING (expr) = TREE_NO_WARNING (op);
!       break;
! 
!     case LOAD_EXPR:
!       {
! 	tree new_var = create_tmp_var (type, "L");
! 	TREE_ADDRESSABLE (new_var) = 1;
! 
! 	tree init = TREE_OPERAND (expr, 1);
! 	gcc_assert (TREE_CODE (init) == CALL_EXPR);
! 	tree arg = CALL_EXPR_ARG (init, 1);
! 	CALL_EXPR_ARG (init, 1)
! 	  = build_unary_op (ADDR_EXPR, TREE_TYPE (arg), new_var);
! 	gimplify_and_add (init, pre_p);
! 
! 	*expr_p = new_var;
! 	return GS_OK;
!       }
  
      case VIEW_CONVERT_EXPR:
        op = TREE_OPERAND (expr, 0);
*************** gnat_gimplify_expr (tree *expr_p, gimple
*** 8942,9003 ****
  	  && AGGREGATE_TYPE_P (TREE_TYPE (op))
  	  && !AGGREGATE_TYPE_P (type))
  	{
! 	  tree mod, new_var = create_tmp_var_raw (TREE_TYPE (op), "C");
  	  gimple_add_tmp_var (new_var);
  
! 	  mod = build2 (INIT_EXPR, TREE_TYPE (new_var), new_var, op);
  	  gimplify_and_add (mod, pre_p);
  
  	  TREE_OPERAND (expr, 0) = new_var;
  	  return GS_OK;
  	}
  
!       return GS_UNHANDLED;
! 
!     case DECL_EXPR:
!       op = DECL_EXPR_DECL (expr);
! 
!       /* The expressions for the RM bounds must be gimplified to ensure that
! 	 they are properly elaborated.  See gimplify_decl_expr.  */
!       if ((TREE_CODE (op) == TYPE_DECL || TREE_CODE (op) == VAR_DECL)
! 	  && !TYPE_SIZES_GIMPLIFIED (TREE_TYPE (op)))
! 	switch (TREE_CODE (TREE_TYPE (op)))
! 	  {
! 	  case INTEGER_TYPE:
! 	  case ENUMERAL_TYPE:
! 	  case BOOLEAN_TYPE:
! 	  case REAL_TYPE:
! 	    {
! 	      tree type = TYPE_MAIN_VARIANT (TREE_TYPE (op)), t, val;
! 
! 	      val = TYPE_RM_MIN_VALUE (type);
! 	      if (val)
! 		{
! 		  gimplify_one_sizepos (&val, pre_p);
! 		  for (t = type; t; t = TYPE_NEXT_VARIANT (t))
! 		    SET_TYPE_RM_MIN_VALUE (t, val);
! 		}
! 
! 	      val = TYPE_RM_MAX_VALUE (type);
! 	      if (val)
! 		{
! 		  gimplify_one_sizepos (&val, pre_p);
! 		  for (t = type; t; t = TYPE_NEXT_VARIANT (t))
! 		    SET_TYPE_RM_MAX_VALUE (t, val);
! 		}
! 
! 	    }
! 	    break;
! 
! 	  default:
! 	    break;
! 	  }
! 
!       /* ... fall through ... */
  
      default:
!       return GS_UNHANDLED;
      }
  }
  
  /* Generate GIMPLE in place for the statement at *STMT_P.  */
--- 9083,9110 ----
  	  && AGGREGATE_TYPE_P (TREE_TYPE (op))
  	  && !AGGREGATE_TYPE_P (type))
  	{
! 	  tree new_var = create_tmp_var_raw (TREE_TYPE (op), "C");
  	  gimple_add_tmp_var (new_var);
  
! 	  tree mod = build2 (INIT_EXPR, TREE_TYPE (new_var), new_var, op);
  	  gimplify_and_add (mod, pre_p);
  
  	  TREE_OPERAND (expr, 0) = new_var;
  	  return GS_OK;
  	}
+       break;
  
!     case UNCONSTRAINED_ARRAY_REF:
!       /* We should only do this if we are just elaborating for side effects,
! 	 but we can't know that yet.  */
!       *expr_p = TREE_OPERAND (expr, 0);
!       return GS_OK;
  
      default:
!       break;
      }
+ 
+   return GS_UNHANDLED;
  }
  
  /* Generate GIMPLE in place for the statement at *STMT_P.  */
*************** process_freeze_entity (Node_Id gnat_node
*** 9255,9260 ****
--- 9362,9372 ----
    if (kind == E_Class_Wide_Type)
      return;
  
+   /* Likewise for the entities internally used by the front-end to register
+      primitives covering abstract interfaces, see Expand_N_Freeze_Entity.  */
+   if (Is_Subprogram (gnat_entity) && Present (Interface_Alias (gnat_entity)))
+     return;
+ 
    /* Check for an old definition if this isn't an object with address clause,
       since the saved GCC tree is the address expression in that case.  */
    gnu_old
*************** process_freeze_entity (Node_Id gnat_node
*** 9377,9393 ****
     we declare a function if there was no spec).  The second pass
     elaborates the bodies.
  
-    GNAT_END_LIST gives the element in the list past the end.  Normally,
-    this is Empty, but can be First_Real_Statement for a
-    Handled_Sequence_Of_Statements.
- 
     We make a complete pass through both lists if PASS1P is true, then make
     the second pass over both lists if PASS2P is true.  The lists usually
     correspond to the public and private parts of a package.  */
  
  static void
  process_decls (List_Id gnat_decls, List_Id gnat_decls2,
! 	       Node_Id gnat_end_list, bool pass1p, bool pass2p)
  {
    List_Id gnat_decl_array[2];
    Node_Id gnat_decl;
--- 9489,9501 ----
     we declare a function if there was no spec).  The second pass
     elaborates the bodies.
  
     We make a complete pass through both lists if PASS1P is true, then make
     the second pass over both lists if PASS2P is true.  The lists usually
     correspond to the public and private parts of a package.  */
  
  static void
  process_decls (List_Id gnat_decls, List_Id gnat_decls2,
! 	       bool pass1p, bool pass2p)
  {
    List_Id gnat_decl_array[2];
    Node_Id gnat_decl;
*************** process_decls (List_Id gnat_decls, List_
*** 9399,9405 ****
      for (i = 0; i <= 1; i++)
        if (Present (gnat_decl_array[i]))
  	for (gnat_decl = First (gnat_decl_array[i]);
! 	     gnat_decl != gnat_end_list; gnat_decl = Next (gnat_decl))
  	  {
  	    /* For package specs, we recurse inside the declarations,
  	       thus taking the two pass approach inside the boundary.  */
--- 9507,9514 ----
      for (i = 0; i <= 1; i++)
        if (Present (gnat_decl_array[i]))
  	for (gnat_decl = First (gnat_decl_array[i]);
! 	     Present (gnat_decl);
! 	     gnat_decl = Next (gnat_decl))
  	  {
  	    /* For package specs, we recurse inside the declarations,
  	       thus taking the two pass approach inside the boundary.  */
*************** process_decls (List_Id gnat_decls, List_
*** 9408,9421 ****
  			   == N_Package_Specification)))
  	      process_decls (Visible_Declarations (Specification (gnat_decl)),
  			     Private_Declarations (Specification (gnat_decl)),
! 			     Empty, true, false);
  
  	    /* Similarly for any declarations in the actions of a
  	       freeze node.  */
  	    else if (Nkind (gnat_decl) == N_Freeze_Entity)
  	      {
  		process_freeze_entity (gnat_decl);
! 		process_decls (Actions (gnat_decl), Empty, Empty, true, false);
  	      }
  
  	    /* Package bodies with freeze nodes get their elaboration deferred
--- 9517,9530 ----
  			   == N_Package_Specification)))
  	      process_decls (Visible_Declarations (Specification (gnat_decl)),
  			     Private_Declarations (Specification (gnat_decl)),
! 			     true, false);
  
  	    /* Similarly for any declarations in the actions of a
  	       freeze node.  */
  	    else if (Nkind (gnat_decl) == N_Freeze_Entity)
  	      {
  		process_freeze_entity (gnat_decl);
! 		process_decls (Actions (gnat_decl), Empty, true, false);
  	      }
  
  	    /* Package bodies with freeze nodes get their elaboration deferred
*************** process_decls (List_Id gnat_decls, List_
*** 9434,9464 ****
  	      record_code_position
  		(Proper_Body (Unit (Library_Unit (gnat_decl))));
  
! 	    /* We defer most subprogram bodies to the second pass.  */
  	    else if (Nkind (gnat_decl) == N_Subprogram_Body)
  	      {
  		if (Acts_As_Spec (gnat_decl))
  		  {
! 		    Node_Id gnat_subprog_id = Defining_Entity (gnat_decl);
  
! 		    if (Ekind (gnat_subprog_id) != E_Generic_Procedure
! 			&& Ekind (gnat_subprog_id) != E_Generic_Function)
! 		      gnat_to_gnu_entity (gnat_subprog_id, NULL_TREE, true);
  		  }
  	      }
  
- 	    /* For bodies and stubs that act as their own specs, the entity
- 	       itself must be elaborated in the first pass, because it may
- 	       be used in other declarations.  */
  	    else if (Nkind (gnat_decl) == N_Subprogram_Body_Stub)
  	      {
! 		Node_Id gnat_subprog_id
  		  = Defining_Entity (Specification (gnat_decl));
  
! 		    if (Ekind (gnat_subprog_id) != E_Subprogram_Body
! 			&& Ekind (gnat_subprog_id) != E_Generic_Procedure
! 			&& Ekind (gnat_subprog_id) != E_Generic_Function)
! 		      gnat_to_gnu_entity (gnat_subprog_id, NULL_TREE, true);
  	      }
  
  	    /* Concurrent stubs stand for the corresponding subprogram bodies,
--- 9543,9571 ----
  	      record_code_position
  		(Proper_Body (Unit (Library_Unit (gnat_decl))));
  
! 	    /* We defer most subprogram bodies to the second pass.  For bodies
! 	       that act as their own specs and stubs, the entity itself must be
! 	       elaborated in the first pass, because it may be used in other
! 	       declarations.  */
  	    else if (Nkind (gnat_decl) == N_Subprogram_Body)
  	      {
  		if (Acts_As_Spec (gnat_decl))
  		  {
! 		    Entity_Id gnat_subprog = Defining_Entity (gnat_decl);
  
! 		    if (!Is_Generic_Subprogram (gnat_subprog))
! 		      gnat_to_gnu_entity (gnat_subprog, NULL_TREE, true);
  		  }
  	      }
  
  	    else if (Nkind (gnat_decl) == N_Subprogram_Body_Stub)
  	      {
! 		Entity_Id gnat_subprog
  		  = Defining_Entity (Specification (gnat_decl));
  
! 		if (!Is_Generic_Subprogram (gnat_subprog)
! 		    && Ekind (gnat_subprog) != E_Subprogram_Body)
! 		  gnat_to_gnu_entity (gnat_subprog, NULL_TREE, true);
  	      }
  
  	    /* Concurrent stubs stand for the corresponding subprogram bodies,
*************** process_decls (List_Id gnat_decls, List_
*** 9484,9490 ****
      for (i = 0; i <= 1; i++)
        if (Present (gnat_decl_array[i]))
  	for (gnat_decl = First (gnat_decl_array[i]);
! 	     gnat_decl != gnat_end_list; gnat_decl = Next (gnat_decl))
  	  {
  	    if (Nkind (gnat_decl) == N_Subprogram_Body
  		|| Nkind (gnat_decl) == N_Subprogram_Body_Stub
--- 9591,9598 ----
      for (i = 0; i <= 1; i++)
        if (Present (gnat_decl_array[i]))
  	for (gnat_decl = First (gnat_decl_array[i]);
! 	     Present (gnat_decl);
! 	     gnat_decl = Next (gnat_decl))
  	  {
  	    if (Nkind (gnat_decl) == N_Subprogram_Body
  		|| Nkind (gnat_decl) == N_Subprogram_Body_Stub
*************** process_decls (List_Id gnat_decls, List_
*** 9497,9506 ****
  				== N_Package_Specification)))
  	      process_decls (Visible_Declarations (Specification (gnat_decl)),
  			     Private_Declarations (Specification (gnat_decl)),
! 			     Empty, false, true);
  
  	    else if (Nkind (gnat_decl) == N_Freeze_Entity)
! 	      process_decls (Actions (gnat_decl), Empty, Empty, false, true);
  
  	    else if (Nkind (gnat_decl) == N_Subprogram_Renaming_Declaration)
  	      add_stmt (gnat_to_gnu (gnat_decl));
--- 9605,9614 ----
  				== N_Package_Specification)))
  	      process_decls (Visible_Declarations (Specification (gnat_decl)),
  			     Private_Declarations (Specification (gnat_decl)),
! 			     false, true);
  
  	    else if (Nkind (gnat_decl) == N_Freeze_Entity)
! 	      process_decls (Actions (gnat_decl), Empty, false, true);
  
  	    else if (Nkind (gnat_decl) == N_Subprogram_Renaming_Declaration)
  	      add_stmt (gnat_to_gnu (gnat_decl));
*************** build_binary_op_trapv (enum tree_code co
*** 9579,9584 ****
--- 9687,9693 ----
        if (code == MULT_EXPR && precision == 64 && BITS_PER_WORD < 64)
  	{
  	  tree int64 = gnat_type_for_size (64, 0);
+ 	  Check_Restriction_No_Dependence_On_System (Name_Arith_64, gnat_node);
  	  return convert (gnu_type, build_call_n_expr (mulv64_decl, 2,
  						       convert (int64, lhs),
  						       convert (int64, rhs)));
*************** build_binary_op_trapv (enum tree_code co
*** 9588,9593 ****
--- 9697,9703 ----
        else if (code == MULT_EXPR && precision == 128 && BITS_PER_WORD < 128)
  	{
  	  tree int128 = gnat_type_for_size (128, 0);
+ 	  Check_Restriction_No_Dependence_On_System (Name_Arith_128, gnat_node);
  	  return convert (gnu_type, build_call_n_expr (mulv128_decl, 2,
  						       convert (int128, lhs),
  						       convert (int128, rhs)));
*************** convert_with_check (Entity_Id gnat_type,
*** 9937,9942 ****
--- 10047,10062 ----
    else
      gnu_result = convert (gnu_base_type, gnu_result);
  
+   /* If this is a conversion between an integer type larger than a word and a
+      floating-point type, then declare the dependence on the libgcc routine.  */
+   if ((INTEGRAL_TYPE_P (gnu_in_base_type)
+        && TYPE_PRECISION (gnu_in_base_type) > BITS_PER_WORD
+        && FLOAT_TYPE_P (gnu_base_type))
+       || (FLOAT_TYPE_P (gnu_in_base_type)
+ 	  && INTEGRAL_TYPE_P (gnu_base_type)
+ 	  && TYPE_PRECISION (gnu_base_type) > BITS_PER_WORD))
+     Check_Restriction_No_Dependence_On_System (Name_Gcc, gnat_node);
+ 
    return convert (gnu_type, gnu_result);
  }
  
*************** Sloc_to_locus (Source_Ptr Sloc, location
*** 10446,10452 ****
    *locus
      = linemap_position_for_line_and_column (line_table, map, line, column);
  
!   if (file_map && file_map[file - 1].Instance)
      decl_to_instance_map->put (decl, file_map[file - 1].Instance);
  
    return true;
--- 10566,10572 ----
    *locus
      = linemap_position_for_line_and_column (line_table, map, line, column);
  
!   if (decl && file_map && file_map[file - 1].Instance)
      decl_to_instance_map->put (decl, file_map[file - 1].Instance);
  
    return true;
*************** set_end_locus_from_node (tree gnu_node,
*** 10563,10569 ****
  	gnat_end_label = End_Label (Handled_Statement_Sequence (gnat_node));
        else
  	gnat_end_label = Empty;
- 
        break;
  
      case N_Package_Declaration:
--- 10683,10688 ----
*************** set_end_locus_from_node (tree gnu_node,
*** 10584,10590 ****
       transient block does not receive the sloc of a source condition.  */
    if (!Sloc_to_locus (Sloc (gnat_node), &end_locus,
                        No (gnat_end_label)
!                       && (Nkind (gnat_node) == N_Block_Statement)))
      return false;
  
    switch (TREE_CODE (gnu_node))
--- 10703,10709 ----
       transient block does not receive the sloc of a source condition.  */
    if (!Sloc_to_locus (Sloc (gnat_node), &end_locus,
                        No (gnat_end_label)
!                       && Nkind (gnat_node) == N_Block_Statement))
      return false;
  
    switch (TREE_CODE (gnu_node))
*************** make_covariant_thunk (Entity_Id gnat_thu
*** 10845,10851 ****
  static bool
  maybe_make_gnu_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
  {
!   const Entity_Id gnat_target = Thunk_Entity (gnat_thunk);
  
    /* Check that the first formal of the target is the only controlling one.  */
    Entity_Id gnat_formal = First_Formal (gnat_target);
--- 10964,10971 ----
  static bool
  maybe_make_gnu_thunk (Entity_Id gnat_thunk, tree gnu_thunk)
  {
!   /* We use the Thunk_Target to compute the properties of the thunk.  */
!   const Entity_Id gnat_target = Thunk_Target (gnat_thunk);
  
    /* Check that the first formal of the target is the only controlling one.  */
    Entity_Id gnat_formal = First_Formal (gnat_target);
*************** maybe_make_gnu_thunk (Entity_Id gnat_thu
*** 10913,10919 ****
        indirect_offset = (HOST_WIDE_INT) (POINTER_SIZE / BITS_PER_UNIT);
      }
  
!   tree gnu_target = gnat_to_gnu_entity (gnat_target, NULL_TREE, false);
  
    /* If the target is local, then thunk and target must have the same context
       because cgraph_node::expand_thunk can only forward the static chain.  */
--- 11033,11041 ----
        indirect_offset = (HOST_WIDE_INT) (POINTER_SIZE / BITS_PER_UNIT);
      }
  
!   /* But we generate a call to the Thunk_Entity in the thunk.  */
!   tree gnu_target
!     = gnat_to_gnu_entity (Thunk_Entity (gnat_thunk), NULL_TREE, false);
  
    /* If the target is local, then thunk and target must have the same context
       because cgraph_node::expand_thunk can only forward the static chain.  */
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/utils.cc gcc-13.1.0/gcc/ada/gcc-interface/utils.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/utils.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/utils.cc	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2021, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** static tree handle_flatten_attribute (tr
*** 107,112 ****
--- 107,113 ----
  static tree handle_used_attribute (tree *, tree, tree, int, bool *);
  static tree handle_cold_attribute (tree *, tree, tree, int, bool *);
  static tree handle_hot_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_simd_attribute (tree *, tree, tree, int, bool *);
  static tree handle_target_attribute (tree *, tree, tree, int, bool *);
  static tree handle_target_clones_attribute (tree *, tree, tree, int, bool *);
  static tree handle_vector_size_attribute (tree *, tree, tree, int, bool *);
*************** const struct attribute_spec gnat_interna
*** 185,190 ****
--- 186,193 ----
      handle_cold_attribute, attr_cold_hot_exclusions },
    { "hot",          0, 0,  true,  false, false, false,
      handle_hot_attribute, attr_cold_hot_exclusions },
+   { "simd",         0, 1,  true,  false, false, false,
+     handle_simd_attribute, NULL },
    { "target",       1, -1, true,  false, false, false,
      handle_target_attribute, NULL },
    { "target_clones",1, -1, true,  false, false, false,
*************** const struct attribute_spec gnat_interna
*** 208,213 ****
--- 211,220 ----
    { "format_arg",   1, 1,  false, true,  true,  false,
      fake_attribute_handler, NULL },
  
+   /* This is handled entirely in the front end.  */
+   { "hardbool",     0, 0,  false, true, false, true,
+     fake_attribute_handler, NULL },
+ 
    { NULL,           0, 0,  false, false, false, false,
      NULL, NULL }
  };
*************** struct GTY((chain_next ("%h.chain"))) gn
*** 257,265 ****
    struct gnat_binding_level *chain;
    /* The BLOCK node for this level.  */
    tree block;
-   /* If nonzero, the setjmp buffer that needs to be updated for any
-      variable-sized definition within this context.  */
-   tree jmpbuf_decl;
  };
  
  /* The binding level currently in effect.  */
--- 264,269 ----
*************** gnat_pushlevel (void)
*** 592,598 ****
  
    /* Add this level to the front of the chain (stack) of active levels.  */
    newlevel->chain = current_binding_level;
-   newlevel->jmpbuf_decl = NULL_TREE;
    current_binding_level = newlevel;
  }
  
--- 596,601 ----
*************** set_current_block_context (tree fndecl)
*** 607,628 ****
    set_block_for_group (current_binding_level->block);
  }
  
- /* Set the jmpbuf_decl for the current binding level to DECL.  */
- 
- void
- set_block_jmpbuf_decl (tree decl)
- {
-   current_binding_level->jmpbuf_decl = decl;
- }
- 
- /* Get the jmpbuf_decl, if any, for the current binding level.  */
- 
- tree
- get_block_jmpbuf_decl (void)
- {
-   return current_binding_level->jmpbuf_decl;
- }
- 
  /* Exit a binding level.  Set any BLOCK into the current code group.  */
  
  void
--- 610,615 ----
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 845,852 ****
    if (!deferred_decl_context)
      DECL_CONTEXT (decl) = context;
  
!   suppress_warning (decl, all_warnings,
! 		    No (gnat_node) || Warnings_Off (gnat_node));
  
    /* Set the location of DECL and emit a declaration for it.  */
    if (Present (gnat_node) && !renaming_from_instantiation_p (gnat_node))
--- 832,842 ----
    if (!deferred_decl_context)
      DECL_CONTEXT (decl) = context;
  
!   /* Disable warnings for compiler-generated entities or explicit request.  */
!   if (No (gnat_node)
!       || !Comes_From_Source (gnat_node)
!       || Warnings_Off (gnat_node))
!     suppress_warning (decl);
  
    /* Set the location of DECL and emit a declaration for it.  */
    if (Present (gnat_node) && !renaming_from_instantiation_p (gnat_node))
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 878,883 ****
--- 868,880 ----
  	}
      }
  
+ /* Pointer types aren't named types in the C sense so we need to generate a
+    typedef in DWARF for them.  Also do that for fat pointer types because,
+    even though they are named types in the C sense, they are still the XUP
+    types created for the base array type at this point.  */
+ #define TYPE_IS_POINTER_P(NODE) \
+   (TREE_CODE (NODE) == POINTER_TYPE || TYPE_IS_FAT_POINTER_P (NODE))
+ 
    /* For the declaration of a type, set its name either if it isn't already
       set or if the previous type name was not derived from a source name.
       We'd rather have the type named with a real name and all the pointer
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 887,907 ****
      {
        tree t = TREE_TYPE (decl);
  
!       /* Array and pointer types aren't tagged types in the C sense so we need
! 	 to generate a typedef in DWARF for them and make sure it is preserved,
! 	 unless the type is artificial.  */
        if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL)
! 	  && ((TREE_CODE (t) != ARRAY_TYPE && TREE_CODE (t) != POINTER_TYPE)
! 	      || DECL_ARTIFICIAL (decl)))
  	;
!       /* For array and pointer types, create the DECL_ORIGINAL_TYPE that will
! 	 generate the typedef in DWARF.  Also do that for fat pointer types
! 	 because, even though they are tagged types in the C sense, they are
! 	 still XUP types attached to the base array type at this point.  */
!       else if (!DECL_ARTIFICIAL (decl)
! 	       && (TREE_CODE (t) == ARRAY_TYPE
! 		   || TREE_CODE (t) == POINTER_TYPE
! 		   || TYPE_IS_FAT_POINTER_P (t)))
  	{
  	  tree tt = build_variant_type_copy (t);
  	  TYPE_NAME (tt) = decl;
--- 884,897 ----
      {
        tree t = TREE_TYPE (decl);
  
!       /* For pointer types, make sure the typedef is generated and preserved
! 	 in DWARF, unless the type is artificial.  */
        if (!(TYPE_NAME (t) && TREE_CODE (TYPE_NAME (t)) == TYPE_DECL)
! 	  && (!TYPE_IS_POINTER_P (t) || DECL_ARTIFICIAL (decl)))
  	;
!       /* For pointer types, create the DECL_ORIGINAL_TYPE that will generate
! 	 the typedef in DWARF.  */
!       else if (TYPE_IS_POINTER_P (t) && !DECL_ARTIFICIAL (decl))
  	{
  	  tree tt = build_variant_type_copy (t);
  	  TYPE_NAME (tt) = decl;
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 915,924 ****
  	    DECL_ORIGINAL_TYPE (decl) = DECL_ORIGINAL_TYPE (TYPE_NAME (t));
  	  else
  	    DECL_ORIGINAL_TYPE (decl) = t;
- 	  /* Array types need to have a name so that they can be related to
- 	     their GNAT encodings.  */
- 	  if (TREE_CODE (t) == ARRAY_TYPE && !TYPE_NAME (t))
- 	    TYPE_NAME (t) = DECL_NAME (decl);
  	  /* Remark the canonical fat pointer type as artificial.  */
  	  if (TYPE_IS_FAT_POINTER_P (t))
  	    TYPE_ARTIFICIAL (t) = 1;
--- 905,910 ----
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 937,945 ****
  	 to all parallel types too thanks to gnat_set_type_context.  */
        if (t)
  	for (t = TYPE_MAIN_VARIANT (t); t; t = TYPE_NEXT_VARIANT (t))
! 	  /* ??? Because of the previous kludge, we can have variants of fat
! 	     pointer types with different names.  */
! 	  if (!(TYPE_IS_FAT_POINTER_P (t)
  		&& TYPE_NAME (t)
  		&& TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
  	    {
--- 923,930 ----
  	 to all parallel types too thanks to gnat_set_type_context.  */
        if (t)
  	for (t = TYPE_MAIN_VARIANT (t); t; t = TYPE_NEXT_VARIANT (t))
! 	  /* Skip it for pointer types to preserve the typedef.  */
! 	  if (!(TYPE_IS_POINTER_P (t)
  		&& TYPE_NAME (t)
  		&& TREE_CODE (TYPE_NAME (t)) == TYPE_DECL))
  	    {
*************** gnat_pushdecl (tree decl, Node_Id gnat_n
*** 949,954 ****
--- 934,941 ----
  					 deferred_decl_context);
  	    }
      }
+ 
+ #undef TYPE_IS_POINTER_P
  }
  
  /* Create a record type that contains a SIZE bytes long field of TYPE with a
*************** gnat_useless_type_conversion (tree expr)
*** 3831,3841 ****
  /* Return true if T, a {FUNCTION,METHOD}_TYPE, has the specified flags.  */
  
  bool
! fntype_same_flags_p (const_tree t, tree cico_list, bool return_unconstrained_p,
! 		     bool return_by_direct_ref_p, bool return_by_invisi_ref_p)
  {
    return TYPE_CI_CO_LIST (t) == cico_list
- 	 && TYPE_RETURN_UNCONSTRAINED_P (t) == return_unconstrained_p
  	 && TYPE_RETURN_BY_DIRECT_REF_P (t) == return_by_direct_ref_p
  	 && TREE_ADDRESSABLE (t) == return_by_invisi_ref_p;
  }
--- 3818,3827 ----
  /* Return true if T, a {FUNCTION,METHOD}_TYPE, has the specified flags.  */
  
  bool
! fntype_same_flags_p (const_tree t, tree cico_list, bool return_by_direct_ref_p,
! 		     bool return_by_invisi_ref_p)
  {
    return TYPE_CI_CO_LIST (t) == cico_list
  	 && TYPE_RETURN_BY_DIRECT_REF_P (t) == return_by_direct_ref_p
  	 && TREE_ADDRESSABLE (t) == return_by_invisi_ref_p;
  }
*************** maybe_unconstrained_array (tree exp)
*** 5270,5275 ****
--- 5256,5268 ----
  	    }
  	}
  
+       else if (code == LOAD_EXPR)
+ 	{
+ 	  const Entity_Id gnat_smo = tree_to_shwi (TREE_OPERAND (exp, 1));
+ 	  tree t = maybe_unconstrained_array (TREE_OPERAND (exp, 0));
+ 	  exp = build_storage_model_load (gnat_smo, t);
+ 	}
+ 
        else if (code == NULL_EXPR)
  	exp = build1 (NULL_EXPR,
  		      TREE_TYPE (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (type)))),
*************** unchecked_convert (tree type, tree expr,
*** 5514,5521 ****
        expr = unchecked_convert (type, expr, notrunc_p);
      }
  
!   /* If we are converting from a scalar type to a type with a different size,
!      we need to pad to have the same size on both sides.
  
       ??? We cannot do it unconditionally because unchecked conversions are
       used liberally by the front-end to implement interface thunks:
--- 5507,5514 ----
        expr = unchecked_convert (type, expr, notrunc_p);
      }
  
!   /* If we are converting between fixed-size types with different sizes, we
!      need to pad to have the same size on both sides.
  
       ??? We cannot do it unconditionally because unchecked conversions are
       used liberally by the front-end to implement interface thunks:
*************** unchecked_convert (tree type, tree expr,
*** 5526,5533 ****
  
       so we need to skip dereferences.  */
    else if (!INDIRECT_REF_P (expr)
! 	   && !AGGREGATE_TYPE_P (etype)
  	   && ecode != UNCONSTRAINED_ARRAY_TYPE
  	   && TREE_CONSTANT (TYPE_SIZE (type))
  	   && (c = tree_int_cst_compare (TYPE_SIZE (etype), TYPE_SIZE (type))))
      {
--- 5519,5528 ----
  
       so we need to skip dereferences.  */
    else if (!INDIRECT_REF_P (expr)
! 	   && TREE_CODE (expr) != STRING_CST
! 	   && !(AGGREGATE_TYPE_P (etype) && AGGREGATE_TYPE_P (type))
  	   && ecode != UNCONSTRAINED_ARRAY_TYPE
+ 	   && TREE_CONSTANT (TYPE_SIZE (etype))
  	   && TREE_CONSTANT (TYPE_SIZE (type))
  	   && (c = tree_int_cst_compare (TYPE_SIZE (etype), TYPE_SIZE (type))))
      {
*************** unchecked_convert (tree type, tree expr,
*** 5543,5557 ****
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
  					  false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
! 	  expr = build_component_ref (expr, TYPE_FIELDS (rec_type), false);
  	}
      }
  
!   /* Likewise if we are converting from a scalar type to a type with self-
       referential size.  We use the max size to do the padding in this case.  */
    else if (!INDIRECT_REF_P (expr)
! 	   && !AGGREGATE_TYPE_P (etype)
  	   && ecode != UNCONSTRAINED_ARRAY_TYPE
  	   && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (type)))
      {
        tree new_size = max_size (TYPE_SIZE (type), true);
--- 5538,5555 ----
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
  					  false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
! 	  expr = build3 (COMPONENT_REF, type, expr, TYPE_FIELDS (rec_type),
! 			 NULL_TREE);
  	}
      }
  
!   /* Likewise if we are converting from a fixed-szie type to a type with self-
       referential size.  We use the max size to do the padding in this case.  */
    else if (!INDIRECT_REF_P (expr)
! 	   && TREE_CODE (expr) != STRING_CST
! 	   && !(AGGREGATE_TYPE_P (etype) && AGGREGATE_TYPE_P (type))
  	   && ecode != UNCONSTRAINED_ARRAY_TYPE
+ 	   && TREE_CONSTANT (TYPE_SIZE (etype))
  	   && CONTAINS_PLACEHOLDER_P (TYPE_SIZE (type)))
      {
        tree new_size = max_size (TYPE_SIZE (type), true);
*************** unchecked_convert (tree type, tree expr,
*** 5568,5574 ****
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
  					  false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
! 	  expr = build_component_ref (expr, TYPE_FIELDS (rec_type), false);
  	}
      }
  
--- 5566,5573 ----
  	  tree rec_type = maybe_pad_type (type, TYPE_SIZE (etype), 0, Empty,
  					  false, false, true);
  	  expr = unchecked_convert (rec_type, expr, notrunc_p);
! 	  expr = build3 (COMPONENT_REF, type, expr, TYPE_FIELDS (rec_type),
! 			 NULL_TREE);
  	}
      }
  
*************** unchecked_convert (tree type, tree expr,
*** 5633,5638 ****
--- 5632,5644 ----
        return unchecked_convert (type, expr, notrunc_p);
      }
  
+   /* If we are converting a string constant to a pointer to character, make
+      sure that the string is not folded into an integer constant.  */
+   else if (TREE_CODE (expr) == STRING_CST
+ 	   && POINTER_TYPE_P (type)
+ 	   && TYPE_STRING_FLAG (TREE_TYPE (type)))
+     expr = build1 (VIEW_CONVERT_EXPR, type, expr);
+ 
    /* Otherwise, just build a VIEW_CONVERT_EXPR of the expression.  */
    else
      {
*************** handle_hot_attribute (tree *node, tree n
*** 6862,6867 ****
--- 6868,6921 ----
      }
    else
      {
+       warning (OPT_Wattributes, "%qE attribute ignored", name);
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
+ /* Handle a "simd" attribute.  */
+ 
+ static tree
+ handle_simd_attribute (tree *node, tree name, tree args, int, bool *no_add_attrs)
+ {
+   if (TREE_CODE (*node) == FUNCTION_DECL)
+     {
+       tree t = get_identifier ("omp declare simd");
+       tree attr = NULL_TREE;
+       if (args)
+ 	{
+ 	  tree id = TREE_VALUE (args);
+ 
+ 	  if (TREE_CODE (id) != STRING_CST)
+ 	    {
+ 	      error ("attribute %qE argument not a string", name);
+ 	      *no_add_attrs = true;
+ 	      return NULL_TREE;
+ 	    }
+ 
+ 	  if (strcmp (TREE_STRING_POINTER (id), "notinbranch") == 0)
+ 	    attr = build_omp_clause (DECL_SOURCE_LOCATION (*node),
+ 				     OMP_CLAUSE_NOTINBRANCH);
+ 	  else if (strcmp (TREE_STRING_POINTER (id), "inbranch") == 0)
+ 	    attr = build_omp_clause (DECL_SOURCE_LOCATION (*node),
+ 				     OMP_CLAUSE_INBRANCH);
+ 	  else
+ 	    {
+ 	      error ("only %<inbranch%> and %<notinbranch%> flags are "
+ 		     "allowed for %<__simd__%> attribute");
+ 	      *no_add_attrs = true;
+ 	      return NULL_TREE;
+ 	    }
+ 	}
+ 
+       DECL_ATTRIBUTES (*node)
+ 	= tree_cons (t, build_tree_list (NULL_TREE, attr),
+ 		     DECL_ATTRIBUTES (*node));
+     }
+   else
+     {
        warning (OPT_Wattributes, "%qE attribute ignored", name);
        *no_add_attrs = true;
      }
diff -Nrcpad gcc-12.2.0/gcc/ada/gcc-interface/utils2.cc gcc-13.1.0/gcc/ada/gcc-interface/utils2.cc
*** gcc-12.2.0/gcc/ada/gcc-interface/utils2.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gcc-interface/utils2.cc	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** build_binary_op (enum tree_code op_code,
*** 1134,1145 ****
  	  else if (POINTER_TYPE_P (left_base_type)
  		   && POINTER_TYPE_P (right_base_type))
  	    {
  	      /* Anonymous access types in Ada 2005 can point to different
! 		 members of a tagged type hierarchy.  */
! 	      gcc_assert (TYPE_MAIN_VARIANT (TREE_TYPE (left_base_type))
! 			  == TYPE_MAIN_VARIANT (TREE_TYPE (right_base_type))
! 			  || (TYPE_ALIGN_OK (TREE_TYPE (left_base_type))
! 			      && TYPE_ALIGN_OK (TREE_TYPE (right_base_type))));
  	      best_type = left_base_type;
  	    }
  
--- 1134,1150 ----
  	  else if (POINTER_TYPE_P (left_base_type)
  		   && POINTER_TYPE_P (right_base_type))
  	    {
+ 	      tree left_ref_type = TREE_TYPE (left_base_type);
+ 	      tree right_ref_type = TREE_TYPE (right_base_type);
+ 
  	      /* Anonymous access types in Ada 2005 can point to different
! 		 members of a tagged hierarchy or different function types.  */
! 	      gcc_assert (TYPE_MAIN_VARIANT (left_ref_type)
! 			  == TYPE_MAIN_VARIANT (right_ref_type)
! 			  || (TYPE_ALIGN_OK (left_ref_type)
! 			      && TYPE_ALIGN_OK (right_ref_type))
! 			  || (TREE_CODE (left_ref_type) == FUNCTION_TYPE
! 			      && TREE_CODE (right_ref_type) == FUNCTION_TYPE));
  	      best_type = left_base_type;
  	    }
  
*************** build_call_raise_range (int msg, Node_Id
*** 1936,1942 ****
     for record components.  */
  
  static int
! compare_elmt_bitpos (const PTR rt1, const PTR rt2)
  {
    const constructor_elt * const elmt1 = (const constructor_elt *) rt1;
    const constructor_elt * const elmt2 = (const constructor_elt *) rt2;
--- 1941,1947 ----
     for record components.  */
  
  static int
! compare_elmt_bitpos (const void *rt1, const void *rt2)
  {
    const constructor_elt * const elmt1 = (const constructor_elt *) rt1;
    const constructor_elt * const elmt2 = (const constructor_elt *) rt2;
*************** build_call_alloc_dealloc_proc (tree gnu_
*** 2139,2149 ****
  			       Entity_Id gnat_proc, Entity_Id gnat_pool)
  {
    tree gnu_proc = gnat_to_gnu (gnat_proc);
    tree gnu_call;
  
!   /* A storage pool's underlying type is a record type (for both predefined
!      storage pools and GNAT simple storage pools). The secondary stack uses
!      the same mechanism, but its pool object (SS_Pool) is an integer.  */
    if (Is_Record_Type (Underlying_Type (Etype (gnat_pool))))
      {
        /* The size is the third parameter; the alignment is the
--- 2144,2156 ----
  			       Entity_Id gnat_proc, Entity_Id gnat_pool)
  {
    tree gnu_proc = gnat_to_gnu (gnat_proc);
+   tree gnu_align = size_int (TYPE_ALIGN (gnu_type) / BITS_PER_UNIT);
+ 
    tree gnu_call;
  
!   /* A storage pool's underlying type is a record type for both predefined
!      storage pools and GNAT simple storage pools.  The return and secondary
!      stacks use the same mechanism, but their pool object is an integer.  */
    if (Is_Record_Type (Underlying_Type (Etype (gnat_pool))))
      {
        /* The size is the third parameter; the alignment is the
*************** build_call_alloc_dealloc_proc (tree gnu_
*** 2154,2160 ****
  
        tree gnu_pool = gnat_to_gnu (gnat_pool);
        tree gnu_pool_addr = build_unary_op (ADDR_EXPR, NULL_TREE, gnu_pool);
-       tree gnu_align = size_int (TYPE_ALIGN (gnu_type) / BITS_PER_UNIT);
  
        gnu_size = convert (gnu_size_type, gnu_size);
        gnu_align = convert (gnu_size_type, gnu_align);
--- 2161,2166 ----
*************** build_call_alloc_dealloc_proc (tree gnu_
*** 2170,2176 ****
  				      gnu_size, gnu_align);
      }
  
-   /* Secondary stack case.  */
    else
      {
        /* The size is the second parameter.  */
--- 2176,2181 ----
*************** build_call_alloc_dealloc_proc (tree gnu_
*** 2179,2191 ****
        tree gnu_size_type = gnat_to_gnu_type (gnat_size_type);
  
        gnu_size = convert (gnu_size_type, gnu_size);
  
        /* The first arg is the address of the object, for a deallocator,
  	 then the size.  */
!       if (gnu_obj)
  	gnu_call = build_call_n_expr (gnu_proc, 2, gnu_obj, gnu_size);
        else
! 	gnu_call = build_call_n_expr (gnu_proc, 1, gnu_size);
      }
  
    return gnu_call;
--- 2184,2229 ----
        tree gnu_size_type = gnat_to_gnu_type (gnat_size_type);
  
        gnu_size = convert (gnu_size_type, gnu_size);
+       gnu_align = convert (gnu_size_type, gnu_align);
+ 
+       if (DECL_BUILT_IN_CLASS (gnu_proc) == BUILT_IN_FRONTEND
+ 	  && DECL_FE_FUNCTION_CODE (gnu_proc) == BUILT_IN_RETURN_SLOT)
+ 	{
+ 	  /* This must be an allocation of the return stack in a function that
+ 	     returns by invisible reference.  */
+ 	  gcc_assert (!gnu_obj);
+ 	  gcc_assert (current_function_decl
+ 		      && TREE_ADDRESSABLE (TREE_TYPE (current_function_decl)));
+ 	  tree gnu_ret_size;
+ 
+ 	  gnu_call = DECL_RESULT (current_function_decl);
+ 
+ 	  /* The allocation has already been done by the caller so we check that
+ 	     we are not going to overflow the return slot.  */
+ 	  if (TYPE_CI_CO_LIST (TREE_TYPE (current_function_decl)))
+ 	    gnu_ret_size
+ 	      = TYPE_SIZE_UNIT
+                 (TREE_TYPE (TYPE_FIELDS (TREE_TYPE (TREE_TYPE (gnu_call)))));
+ 	  else
+ 	    gnu_ret_size = TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (gnu_call)));
+ 
+ 	  gnu_call
+ 	    = fold_build3 (COND_EXPR, TREE_TYPE (gnu_call),
+ 			   fold_build2 (LE_EXPR, boolean_type_node,
+ 				        fold_convert (sizetype, gnu_size),
+ 					gnu_ret_size),
+ 			   gnu_call,
+ 			   build_call_raise (PE_Explicit_Raise, Empty,
+ 					     N_Raise_Program_Error));
+ 	}
  
        /* The first arg is the address of the object, for a deallocator,
  	 then the size.  */
!       else if (gnu_obj)
  	gnu_call = build_call_n_expr (gnu_proc, 2, gnu_obj, gnu_size);
+ 
        else
! 	gnu_call = build_call_n_expr (gnu_proc, 2, gnu_size, gnu_align);
      }
  
    return gnu_call;
*************** maybe_wrap_malloc (tree data_size, tree
*** 2221,2226 ****
--- 2259,2266 ----
  
    tree malloc_ptr = build_call_n_expr (malloc_decl, 1, size_to_malloc);
  
+   Check_Restriction_No_Dependence_On_System (Name_Memory, gnat_node);
+ 
    if (aligning_type)
      {
        /* Latch malloc's return value and get a pointer to the aligning field
*************** maybe_wrap_malloc (tree data_size, tree
*** 2267,2273 ****
     designated by DATA_PTR using the __gnat_free entry point.  */
  
  static inline tree
! maybe_wrap_free (tree data_ptr, tree data_type)
  {
    /* In the regular alignment case, we pass the data pointer straight to free.
       In the superaligned case, we need to retrieve the initial allocator
--- 2307,2313 ----
     designated by DATA_PTR using the __gnat_free entry point.  */
  
  static inline tree
! maybe_wrap_free (tree data_ptr, tree data_type, Node_Id gnat_node)
  {
    /* In the regular alignment case, we pass the data pointer straight to free.
       In the superaligned case, we need to retrieve the initial allocator
*************** maybe_wrap_free (tree data_ptr, tree dat
*** 2279,2284 ****
--- 2319,2326 ----
  
    tree free_ptr;
  
+   Check_Restriction_No_Dependence_On_System (Name_Memory, gnat_node);
+ 
    if (data_align > system_allocator_alignment)
      {
        /* DATA_FRONT_PTR (void *)
*************** maybe_wrap_free (tree data_ptr, tree dat
*** 2303,2309 ****
  
  /* Build a GCC tree to call an allocation or deallocation function.
     If GNU_OBJ is nonzero, it is an object to deallocate.  Otherwise,
!    generate an allocator.
  
     GNU_SIZE is the number of bytes to allocate and GNU_TYPE is the contained
     object type, used to determine the to-be-honored address alignment.
--- 2345,2351 ----
  
  /* Build a GCC tree to call an allocation or deallocation function.
     If GNU_OBJ is nonzero, it is an object to deallocate.  Otherwise,
!    generate an allocation.
  
     GNU_SIZE is the number of bytes to allocate and GNU_TYPE is the contained
     object type, used to determine the to-be-honored address alignment.
*************** build_call_alloc_dealloc (tree gnu_obj,
*** 2325,2331 ****
    /* Otherwise, object to "free" or "malloc" with possible special processing
       for alignments stricter than what the default allocator honors.  */
    else if (gnu_obj)
!     return maybe_wrap_free (gnu_obj, gnu_type);
    else
      {
        /* Assert that we no longer can be called with this special pool.  */
--- 2367,2373 ----
    /* Otherwise, object to "free" or "malloc" with possible special processing
       for alignments stricter than what the default allocator honors.  */
    else if (gnu_obj)
!     return maybe_wrap_free (gnu_obj, gnu_type, gnat_node);
    else
      {
        /* Assert that we no longer can be called with this special pool.  */
*************** tree
*** 2359,2364 ****
--- 2401,2410 ----
  build_allocator (tree type, tree init, tree result_type, Entity_Id gnat_proc,
                   Entity_Id gnat_pool, Node_Id gnat_node, bool ignore_init_type)
  {
+   const bool pool_is_storage_model
+     = Present (gnat_pool)
+       && Has_Storage_Model_Type_Aspect (Etype (gnat_pool))
+       && Present (Storage_Model_Copy_To (gnat_pool));
    tree size, storage, storage_deref, storage_init;
  
    /* If the initializer, if present, is a NULL_EXPR, just return a new one.  */
*************** build_allocator (tree type, tree init, t
*** 2391,2399 ****
  					  get_identifier ("ALLOC"), false);
        tree template_type = TREE_TYPE (TYPE_FIELDS (storage_type));
        tree storage_ptr_type = build_pointer_type (storage_type);
  
!       size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_SIZE_UNIT (storage_type),
! 					     init);
  
        /* If the size overflows, pass -1 so Storage_Error will be raised.  */
        if (TREE_CODE (size) == INTEGER_CST && !valid_constant_size_p (size))
--- 2437,2446 ----
  					  get_identifier ("ALLOC"), false);
        tree template_type = TREE_TYPE (TYPE_FIELDS (storage_type));
        tree storage_ptr_type = build_pointer_type (storage_type);
+       tree lhs, rhs;
  
!       size = TYPE_SIZE_UNIT (storage_type);
!       size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (size, init);
  
        /* If the size overflows, pass -1 so Storage_Error will be raised.  */
        if (TREE_CODE (size) == INTEGER_CST && !valid_constant_size_p (size))
*************** build_allocator (tree type, tree init, t
*** 2407,2414 ****
  
        /* If there is an initializing expression, then make a constructor for
  	 the entire object including the bounds and copy it into the object.
! 	 If there is no initializing expression, just set the bounds.  */
!       if (init)
  	{
  	  vec<constructor_elt, va_gc> *v;
  	  vec_alloc (v, 2);
--- 2454,2463 ----
  
        /* If there is an initializing expression, then make a constructor for
  	 the entire object including the bounds and copy it into the object.
! 	 If there is no initializing expression, just set the bounds.  Note
! 	 that, if we have a storage model, we need to copy the initializing
! 	 expression separately from the bounds.  */
!       if (init && !pool_is_storage_model)
  	{
  	  vec<constructor_elt, va_gc> *v;
  	  vec_alloc (v, 2);
*************** build_allocator (tree type, tree init, t
*** 2417,2433 ****
  				  build_template (template_type, type, init));
  	  CONSTRUCTOR_APPEND_ELT (v, DECL_CHAIN (TYPE_FIELDS (storage_type)),
  				  init);
! 	  storage_init
! 	    = build_binary_op (INIT_EXPR, NULL_TREE, storage_deref,
! 			       gnat_build_constructor (storage_type, v));
  	}
        else
! 	storage_init
! 	  = build_binary_op (INIT_EXPR, NULL_TREE,
! 			     build_component_ref (storage_deref,
! 						  TYPE_FIELDS (storage_type),
! 						  false),
! 			     build_template (template_type, type, NULL_TREE));
  
        return build2 (COMPOUND_EXPR, result_type,
  		     storage_init, convert (result_type, storage));
--- 2466,2503 ----
  				  build_template (template_type, type, init));
  	  CONSTRUCTOR_APPEND_ELT (v, DECL_CHAIN (TYPE_FIELDS (storage_type)),
  				  init);
! 
! 	  lhs = storage_deref;
! 	  rhs = gnat_build_constructor (storage_type, v);
  	}
        else
! 	{
! 	  lhs = build_component_ref (storage_deref, TYPE_FIELDS (storage_type),
! 				     false);
! 	  rhs = build_template (template_type, type, init);
! 	}
! 
!       if (pool_is_storage_model)
! 	{
! 	  storage_init = build_storage_model_store (gnat_pool, lhs, rhs);
! 	  if (init)
! 	    {
! 	      start_stmt_group ();
! 	      add_stmt (storage_init);
! 	      lhs
! 		= build_component_ref (storage_deref,
! 				       DECL_CHAIN (TYPE_FIELDS (storage_type)),
! 				       false);
! 	      rhs = init;
! 	      size = TYPE_SIZE_UNIT (TREE_TYPE (lhs));
! 	      size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (size, init);
! 	      tree t = build_storage_model_store (gnat_pool, lhs, rhs, size);
! 	      add_stmt (t);
! 	      storage_init = end_stmt_group ();
! 	    }
! 	}
!       else
! 	storage_init = build_binary_op (INIT_EXPR, NULL_TREE, lhs, rhs);
  
        return build2 (COMPOUND_EXPR, result_type,
  		     storage_init, convert (result_type, storage));
*************** build_allocator (tree type, tree init, t
*** 2467,2480 ****
        storage = gnat_protect_expr (storage);
        storage_deref = build_unary_op (INDIRECT_REF, NULL_TREE, storage);
        TREE_THIS_NOTRAP (storage_deref) = 1;
!       storage_init
! 	= build_binary_op (INIT_EXPR, NULL_TREE, storage_deref, init);
        return build2 (COMPOUND_EXPR, result_type, storage_init, storage);
      }
  
    return storage;
  }
  
  /* Indicate that we need to take the address of T and that it therefore
     should not be allocated in a register.  Return true if successful.  */
  
--- 2537,2799 ----
        storage = gnat_protect_expr (storage);
        storage_deref = build_unary_op (INDIRECT_REF, NULL_TREE, storage);
        TREE_THIS_NOTRAP (storage_deref) = 1;
!       if (pool_is_storage_model)
! 	storage_init
! 	  = build_storage_model_store (gnat_pool, storage_deref, init, size);
!       else
! 	storage_init
! 	  = build_binary_op (INIT_EXPR, NULL_TREE, storage_deref, init);
        return build2 (COMPOUND_EXPR, result_type, storage_init, storage);
      }
  
    return storage;
  }
  
+ /* Build a call to a copy procedure of a storage model given by an object.
+    DEST, SRC and SIZE are as for a call to memcpy.  GNAT_SMO is the entity
+    for the storage model object and COPY_TO says which procedure to use.  */
+ 
+ static tree
+ build_storage_model_copy (Entity_Id gnat_smo, tree dest, tree src, tree size,
+ 			  bool copy_to)
+ {
+   const Entity_Id gnat_copy_proc
+     = copy_to
+       ? Storage_Model_Copy_To (gnat_smo)
+       : Storage_Model_Copy_From (gnat_smo);
+   tree gnu_copy_proc = gnat_to_gnu (gnat_copy_proc);
+   tree gnu_param_type_list = TYPE_ARG_TYPES (TREE_TYPE (gnu_copy_proc));
+   tree t1 = TREE_VALUE (gnu_param_type_list);
+   tree t2 = TREE_VALUE (TREE_CHAIN (gnu_param_type_list));
+   tree t3 = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (gnu_param_type_list)));
+   tree t4
+     = TREE_VALUE (TREE_CHAIN (TREE_CHAIN (TREE_CHAIN (gnu_param_type_list))));
+ 
+   return
+     build_call_n_expr (gnu_copy_proc,
+ 		       4,
+ 		       build_unary_op (ADDR_EXPR, t1, gnat_to_gnu (gnat_smo)),
+ 		       build_unary_op (ADDR_EXPR, t2, dest),
+ 		       build_unary_op (ADDR_EXPR, t3, src),
+ 		       convert (t4, size));
+ }
+ 
+ /* Build a load of SRC using the storage model of GNAT_SMO.  */
+ 
+ tree
+ build_storage_model_load (Entity_Id gnat_smo, tree src)
+ {
+   tree ret = build2 (LOAD_EXPR, TREE_TYPE (src), src, NULL_TREE);
+ 
+   /* Unconstrained array references have no size so we need to store the
+      storage object model for future processing by the machinery.  */
+   if (TREE_CODE (src) == UNCONSTRAINED_ARRAY_REF)
+     TREE_OPERAND (ret, 1) = build_int_cst (integer_type_node, gnat_smo);
+   else
+     TREE_OPERAND (ret, 1) = build_storage_model_load (gnat_smo, src, src);
+ 
+   return ret;
+ }
+ 
+ /* Build a load of SRC into DEST using the storage model of GNAT_SMO.
+    If SIZE is specified, use it, otherwise use the size of SRC.  */
+ 
+ tree
+ build_storage_model_load (Entity_Id gnat_smo, tree dest, tree src, tree size)
+ {
+   gcc_assert (TREE_CODE (src) != LOAD_EXPR);
+ 
+   if (!size)
+     {
+       size = TYPE_SIZE_UNIT (TREE_TYPE (src));
+       size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (size, src);
+       size = INSTANTIATE_LOAD_IN_EXPR (size, gnat_smo);
+     }
+ 
+   return build_storage_model_copy (gnat_smo, dest, src, size, false);
+ }
+ 
+ /* Build a store of SRC into DEST using the storage model of GNAT_SMO.
+    If SIZE is specified, use it, otherwise use the size of DEST.  */
+ 
+ tree
+ build_storage_model_store (Entity_Id gnat_smo, tree dest, tree src, tree size)
+ {
+   gcc_assert (TREE_CODE (src) != LOAD_EXPR);
+ 
+   if (!size)
+     {
+       size = TYPE_SIZE_UNIT (TREE_TYPE (dest));
+       size = SUBSTITUTE_PLACEHOLDER_IN_EXPR (size, dest);
+       size = INSTANTIATE_LOAD_IN_EXPR (size, gnat_smo);
+     }
+ 
+   return build_storage_model_copy (gnat_smo, dest, src, size, true);
+ }
+ 
+ /* Given a tree EXP, instantiate occurrences of LOAD_EXPR in it and associate
+    them with the storage model of GNAT_SMO.  */
+ 
+ tree
+ instantiate_load_in_expr (tree exp, Entity_Id gnat_smo)
+ {
+   const enum tree_code code = TREE_CODE (exp);
+   tree type = TREE_TYPE (exp);
+   tree op0, op1, op2, op3;
+   tree new_tree;
+ 
+   /* We handle TREE_LIST and COMPONENT_REF separately.  */
+   if (code == TREE_LIST)
+     {
+       op0 = INSTANTIATE_LOAD_IN_EXPR (TREE_CHAIN (exp), gnat_smo);
+       op1 = INSTANTIATE_LOAD_IN_EXPR (TREE_VALUE (exp), gnat_smo);
+       if (op0 == TREE_CHAIN (exp) && op1 == TREE_VALUE (exp))
+ 	return exp;
+ 
+       return tree_cons (TREE_PURPOSE (exp), op1, op0);
+     }
+   else if (code == COMPONENT_REF)
+     {
+       /* The field.  */
+       op1 = TREE_OPERAND (exp, 1);
+ 
+       /* If it is a discriminant or equivalent, a LOAD_EXPR is needed.  */
+       if (DECL_DISCRIMINANT_NUMBER (op1))
+ 	return build_storage_model_load (gnat_smo, exp);
+ 
+       op0 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 0), gnat_smo);
+       if (op0 == TREE_OPERAND (exp, 0))
+ 	return exp;
+ 
+       new_tree = fold_build3 (COMPONENT_REF, type, op0, op1, NULL_TREE);
+    }
+   else
+     switch (TREE_CODE_CLASS (code))
+       {
+       case tcc_constant:
+       case tcc_declaration:
+ 	  return exp;
+ 
+       case tcc_expression:
+ 	if (code == LOAD_EXPR)
+ 	  return exp;
+ 
+ 	/* Fall through.  */
+ 
+       case tcc_exceptional:
+       case tcc_unary:
+       case tcc_binary:
+       case tcc_comparison:
+       case tcc_reference:
+ 	switch (TREE_CODE_LENGTH (code))
+ 	  {
+ 	  case 0:
+ 	    return exp;
+ 
+ 	  case 1:
+ 	    op0 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 0), gnat_smo);
+ 	    if (op0 == TREE_OPERAND (exp, 0))
+ 	      return exp;
+ 
+ 	    new_tree = fold_build1 (code, type, op0);
+ 	    break;
+ 
+ 	  case 2:
+ 	    op0 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 0), gnat_smo);
+ 	    op1 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 1), gnat_smo);
+ 
+ 	    if (op0 == TREE_OPERAND (exp, 0) && op1 == TREE_OPERAND (exp, 1))
+ 	      return exp;
+ 
+ 	    new_tree = fold_build2 (code, type, op0, op1);
+ 	    break;
+ 
+ 	  case 3:
+ 	    op0 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 0), gnat_smo);
+ 	    op1 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 1), gnat_smo);
+ 	    op2 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 2), gnat_smo);
+ 
+ 	    if (op0 == TREE_OPERAND (exp, 0)
+ 		&& op1 == TREE_OPERAND (exp, 1)
+ 		&& op2 == TREE_OPERAND (exp, 2))
+ 	      return exp;
+ 
+ 	    new_tree = fold_build3 (code, type, op0, op1, op2);
+ 	    break;
+ 
+ 	  case 4:
+ 	    op0 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 0), gnat_smo);
+ 	    op1 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 1), gnat_smo);
+ 	    op2 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 2), gnat_smo);
+ 	    op3 = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (exp, 3), gnat_smo);
+ 
+ 	    if (op0 == TREE_OPERAND (exp, 0)
+ 		&& op1 == TREE_OPERAND (exp, 1)
+ 		&& op2 == TREE_OPERAND (exp, 2)
+ 		&& op3 == TREE_OPERAND (exp, 3))
+ 	      return exp;
+ 
+ 	    new_tree = fold (build4 (code, type, op0, op1, op2, op3));
+ 	    break;
+ 
+ 	  default:
+ 	    gcc_unreachable ();
+ 	  }
+ 	break;
+ 
+       case tcc_vl_exp:
+ 	{
+ 	  gcc_assert (code == CALL_EXPR);
+ 
+ 	  const int n = call_expr_nargs (exp);
+ 	  gcc_assert (n > 0);
+ 	  tree *argarray = XALLOCAVEC (tree, n);
+ 	  for (int i = 0; i < n; i++)
+ 	    argarray[i]
+ 	      = INSTANTIATE_LOAD_IN_EXPR (CALL_EXPR_ARG (exp, i), gnat_smo);
+ 
+ 	  for (int i = 0; i < n; i++)
+ 	    if (argarray[i] != CALL_EXPR_ARG (exp, i))
+ 	      return build_call_array (type, CALL_EXPR_FN (exp), n, argarray);
+ 
+ 	  return exp;
+ 	}
+ 
+       default:
+ 	gcc_unreachable ();
+       }
+ 
+   TREE_READONLY (new_tree) |= TREE_READONLY (exp);
+ 
+   if (code == INDIRECT_REF || code == ARRAY_REF || code == ARRAY_RANGE_REF)
+     TREE_THIS_NOTRAP (new_tree) |= TREE_THIS_NOTRAP (exp);
+ 
+   return new_tree;
+ }
+ 
+ /* Given an array or slice reference, instantiate occurrences of LOAD_EXPR in
+    it and associate them with the storage model of GNAT_SMO.  */
+ 
+ void
+ instantiate_load_in_array_ref (tree ref, Entity_Id gnat_smo)
+ {
+   tree domain_type = TYPE_DOMAIN (TREE_TYPE (TREE_OPERAND (ref, 0)));
+   tree elem_type = TREE_TYPE (TREE_TYPE (TREE_OPERAND (ref, 0)));
+ 
+   TREE_OPERAND (ref, 2)
+     = SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_MIN_VALUE (domain_type), ref);
+   TREE_OPERAND (ref, 2)
+     = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (ref, 2), gnat_smo);
+ 
+   TREE_OPERAND (ref, 3)
+     = size_binop (EXACT_DIV_EXPR,
+ 		  SUBSTITUTE_PLACEHOLDER_IN_EXPR (TYPE_SIZE_UNIT (elem_type),
+ 						  ref),
+ 		  size_int (TYPE_ALIGN_UNIT (elem_type)));
+   TREE_OPERAND (ref, 3)
+     = INSTANTIATE_LOAD_IN_EXPR (TREE_OPERAND (ref, 3), gnat_smo);
+ }
+ 
  /* Indicate that we need to take the address of T and that it therefore
     should not be allocated in a register.  Return true if successful.  */
  
*************** gnat_rewrite_reference (tree ref, rewrit
*** 2774,2780 ****
  		  gnat_rewrite_reference (TREE_OPERAND (ref, 0), func, data,
  					  init),
  		  func (TREE_OPERAND (ref, 1), data),
! 		  TREE_OPERAND (ref, 2), NULL_TREE);
        break;
  
      case COMPOUND_EXPR:
--- 3093,3099 ----
  		  gnat_rewrite_reference (TREE_OPERAND (ref, 0), func, data,
  					  init),
  		  func (TREE_OPERAND (ref, 1), data),
! 		  TREE_OPERAND (ref, 2), TREE_OPERAND (ref, 3));
        break;
  
      case COMPOUND_EXPR:
*************** get_inner_constant_reference (tree exp)
*** 2859,2867 ****
  	case ARRAY_REF:
  	case ARRAY_RANGE_REF:
  	  {
- 	    if (TREE_OPERAND (exp, 2))
- 	      return NULL_TREE;
- 
  	    tree array_type = TREE_TYPE (TREE_OPERAND (exp, 0));
  	    if (!TREE_CONSTANT (TREE_OPERAND (exp, 1))
  	        || !TREE_CONSTANT (TYPE_MIN_VALUE (TYPE_DOMAIN (array_type)))
--- 3178,3183 ----
*************** gnat_invariant_expr (tree expr)
*** 3002,3009 ****
  
  	case ARRAY_REF:
  	case ARRAY_RANGE_REF:
! 	  if (!TREE_CONSTANT (TREE_OPERAND (t, 1)) || TREE_OPERAND (t, 2))
! 	    return NULL_TREE;
  	  break;
  
  	case BIT_FIELD_REF:
--- 3318,3330 ----
  
  	case ARRAY_REF:
  	case ARRAY_RANGE_REF:
! 	  {
! 	    tree array_type = TREE_TYPE (TREE_OPERAND (t, 0));
! 	    if (!TREE_CONSTANT (TREE_OPERAND (t, 1))
! 	        || !TREE_CONSTANT (TYPE_MIN_VALUE (TYPE_DOMAIN (array_type)))
! 	        || !TREE_CONSTANT (TYPE_SIZE_UNIT (TREE_TYPE (array_type))))
! 	      return NULL_TREE;
! 	  }
  	  break;
  
  	case BIT_FIELD_REF:
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-fields.ads gcc-13.1.0/gcc/ada/gen_il-fields.ads
*** gcc-12.2.0/gcc/ada/gen_il-fields.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-fields.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Gen_IL.Fields is
*** 69,75 ****
        Address_Warning_Posted,
        Aggregate_Bounds,
        Aliased_Present,
-       Alloc_For_BIP_Return,
        All_Others,
        All_Present,
        Alternatives,
--- 69,74 ----
*************** package Gen_IL.Fields is
*** 88,94 ****
        Body_Required,
        Body_To_Inline,
        Box_Present,
-       By_Ref,
        Char_Literal_Value,
        Chars,
        Check_Address_Alignment,
--- 87,92 ----
*************** package Gen_IL.Fields is
*** 97,103 ****
--- 95,103 ----
        Class_Present,
        Classifications,
        Cleanup_Actions,
+       Comes_From_Check_Or_Contract,
        Comes_From_Extended_Return_Statement,
+       Comes_From_Iterator,
        Compile_Time_Known_Aggregate,
        Component_Associations,
        Component_Clauses,
*************** package Gen_IL.Fields is
*** 118,124 ****
        Contract_Test_Cases,
        Controlling_Argument,
        Conversion_OK,
-       Convert_To_Return_False,
        Corresponding_Aspect,
        Corresponding_Body,
        Corresponding_Entry_Body,
--- 118,123 ----
*************** package Gen_IL.Fields is
*** 185,197 ****
        First_Inlined_Subprogram,
        First_Name,
        First_Named_Actual,
-       First_Real_Statement,
        First_Subtype_Link,
        Float_Truncate,
        Formal_Type_Definition,
        Forwards_OK,
        From_Aspect_Specification,
-       From_At_End,
        From_At_Mod,
        From_Conditional_Expression,
        From_Default,
--- 184,195 ----
        First_Inlined_Subprogram,
        First_Name,
        First_Named_Actual,
        First_Subtype_Link,
        Float_Truncate,
        Formal_Type_Definition,
        Forwards_OK,
+       For_Special_Return_Object,
        From_Aspect_Specification,
        From_At_Mod,
        From_Conditional_Expression,
        From_Default,
*************** package Gen_IL.Fields is
*** 757,763 ****
        Is_Partial_Invariant_Procedure,
        Is_Potentially_Use_Visible,
        Is_Predicate_Function,
-       Is_Predicate_Function_M,
        Is_Preelaborated,
        Is_Primitive,
        Is_Primitive_Wrapper,
--- 755,760 ----
*************** package Gen_IL.Fields is
*** 852,857 ****
--- 849,855 ----
        Partial_View_Has_Unknown_Discr,
        Pending_Access_Types,
        Postconditions_Proc,
+       Predicate_Expression,
        Prev_Entity,
        Prival,
        Prival_Link,
*************** package Gen_IL.Fields is
*** 933,939 ****
        Warnings_Off_Used_Unmodified,
        Warnings_Off_Used_Unreferenced,
        Was_Hidden,
!       Wrapped_Entity
  
        --  End of entity fields.
       ); -- Opt_Field_Enum
--- 931,938 ----
        Warnings_Off_Used_Unmodified,
        Warnings_Off_Used_Unreferenced,
        Was_Hidden,
!       Wrapped_Entity,
!       Wrapped_Statements
  
        --  End of entity fields.
       ); -- Opt_Field_Enum
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-gen-gen_entities.adb gcc-13.1.0/gcc/ada/gen_il-gen-gen_entities.adb
*** gcc-12.2.0/gcc/ada/gen_il-gen-gen_entities.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-gen-gen_entities.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 217,223 ****
          Sm (No_Return, Flag),
          Sm (Overlays_Constant, Flag),
          Sm (Prev_Entity, Node_Id),
-         Sm (Reachable, Flag),
          Sm (Referenced, Flag),
          Sm (Referenced_As_LHS, Flag),
          Sm (Referenced_As_Out_Parameter, Flag),
--- 217,222 ----
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1032,1038 ****
          Sm (Is_Invariant_Procedure, Flag),
          Sm (Is_Partial_Invariant_Procedure, Flag),
          Sm (Is_Predicate_Function, Flag),
-         Sm (Is_Predicate_Function_M, Flag),
          Sm (Is_Primitive_Wrapper, Flag),
          Sm (Is_Private_Primitive, Flag),
          Sm (LSP_Subprogram, Node_Id),
--- 1031,1036 ----
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1040,1045 ****
--- 1038,1044 ----
          Sm (Next_Inlined_Subprogram, Node_Id),
          Sm (Original_Protected_Subprogram, Node_Id),
          Sm (Postconditions_Proc, Node_Id),
+         Sm (Predicate_Expression, Node_Id),
          Sm (Protected_Subprogram, Node_Id),
          Sm (Protection_Object, Node_Id),
          Sm (Related_Expression, Node_Id),
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1047,1053 ****
          Sm (Thunk_Entity, Node_Id,
              Pre => "Is_Thunk (N)"),
          Sm (Wrapped_Entity, Node_Id,
!             Pre => "Is_Primitive_Wrapper (N)")));
  
     Cc (E_Operator, Subprogram_Kind,
         --  A predefined operator, appearing in Standard, or an implicitly
--- 1046,1053 ----
          Sm (Thunk_Entity, Node_Id,
              Pre => "Is_Thunk (N)"),
          Sm (Wrapped_Entity, Node_Id,
!             Pre => "Is_Primitive_Wrapper (N)"),
!         Sm (Wrapped_Statements, Node_Id)));
  
     Cc (E_Operator, Subprogram_Kind,
         --  A predefined operator, appearing in Standard, or an implicitly
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1081,1087 ****
          Sm (Is_Null_Init_Proc, Flag),
          Sm (Is_Partial_Invariant_Procedure, Flag),
          Sm (Is_Predicate_Function, Flag),
-         Sm (Is_Predicate_Function_M, Flag),
          Sm (Is_Primitive_Wrapper, Flag),
          Sm (Is_Private_Primitive, Flag),
          Sm (Is_Valued_Procedure, Flag),
--- 1081,1086 ----
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1097,1103 ****
          Sm (Thunk_Entity, Node_Id,
              Pre => "Is_Thunk (N)"),
          Sm (Wrapped_Entity, Node_Id,
!             Pre => "Is_Primitive_Wrapper (N)")));
  
     Cc (E_Abstract_State, Overloadable_Kind,
         --  A state abstraction. Used to designate entities introduced by aspect
--- 1096,1103 ----
          Sm (Thunk_Entity, Node_Id,
              Pre => "Is_Thunk (N)"),
          Sm (Wrapped_Entity, Node_Id,
!             Pre => "Is_Primitive_Wrapper (N)"),
!         Sm (Wrapped_Statements, Node_Id)));
  
     Cc (E_Abstract_State, Overloadable_Kind,
         --  A state abstraction. Used to designate entities introduced by aspect
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1136,1142 ****
          Sm (Protection_Object, Node_Id),
          Sm (Scope_Depth_Value, Unat),
          Sm (SPARK_Pragma, Node_Id),
!         Sm (SPARK_Pragma_Inherited, Flag)));
  
     Cc (E_Entry_Family, Entity_Kind,
         --  An entry family, created by an entry family declaration in a
--- 1136,1143 ----
          Sm (Protection_Object, Node_Id),
          Sm (Scope_Depth_Value, Unat),
          Sm (SPARK_Pragma, Node_Id),
!         Sm (SPARK_Pragma_Inherited, Flag),
!         Sm (Wrapped_Statements, Node_Id)));
  
     Cc (E_Entry_Family, Entity_Kind,
         --  An entry family, created by an entry family declaration in a
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1163,1169 ****
          Sm (Renamed_Or_Alias, Node_Id),
          Sm (Scope_Depth_Value, Unat),
          Sm (SPARK_Pragma, Node_Id),
!         Sm (SPARK_Pragma_Inherited, Flag)));
  
     Cc (E_Block, Entity_Kind,
         --  A block identifier, created by an explicit or implicit label on
--- 1164,1171 ----
          Sm (Renamed_Or_Alias, Node_Id),
          Sm (Scope_Depth_Value, Unat),
          Sm (SPARK_Pragma, Node_Id),
!         Sm (SPARK_Pragma_Inherited, Flag),
!         Sm (Wrapped_Statements, Node_Id)));
  
     Cc (E_Block, Entity_Kind,
         --  A block identifier, created by an explicit or implicit label on
*************** begin -- Gen_IL.Gen.Gen_Entities
*** 1241,1246 ****
--- 1243,1249 ----
         --  implicit label declaration, not the occurrence of the label itself,
         --  which is simply a direct name referring to the label.
         (Sm (Enclosing_Scope, Node_Id),
+         Sm (Reachable, Flag),
          Sm (Renamed_Or_Alias, Node_Id)));
  
     Cc (E_Loop, Entity_Kind,
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-gen-gen_nodes.adb gcc-13.1.0/gcc/ada/gen_il-gen-gen_nodes.adb
*** gcc-12.2.0/gcc/ada/gen_il-gen-gen_nodes.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-gen-gen_nodes.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 441,446 ****
--- 441,449 ----
          Sm (Has_Wide_Character, Flag),
          Sm (Has_Wide_Wide_Character, Flag)));
  
+    Cc (N_Interpolated_String_Literal, N_Numeric_Or_String_Literal,
+        (Sy (Expressions, List_Id, Default_No_List)));
+ 
     Cc (N_Explicit_Dereference, N_Subexpr,
         (Sy (Prefix, Node_Id),
          Sm (Actual_Designated_Subtype, Node_Id),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 494,500 ****
         (Sy (Expression, Node_Id, Default_Empty),
          Sy (Subpool_Handle_Name, Node_Id, Default_Empty),
          Sy (Null_Exclusion_Present, Flag, Default_False),
!         Sm (Alloc_For_BIP_Return, Flag),
          Sm (Do_Storage_Check, Flag),
          Sm (Is_Dynamic_Coextension, Flag),
          Sm (Is_Static_Coextension, Flag),
--- 497,503 ----
         (Sy (Expression, Node_Id, Default_Empty),
          Sy (Subpool_Handle_Name, Node_Id, Default_Empty),
          Sy (Null_Exclusion_Present, Flag, Default_False),
!         Sm (For_Special_Return_Object, Flag),
          Sm (Do_Storage_Check, Flag),
          Sm (Is_Dynamic_Coextension, Flag),
          Sm (Is_Static_Coextension, Flag),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 509,514 ****
--- 512,518 ----
  
     Cc (N_Delta_Aggregate, N_Subexpr,
         (Sy (Expression, Node_Id, Default_Empty),
+         Sy (Is_Homogeneous_Aggregate, Flag),
          Sy (Component_Associations, List_Id, Default_No_List)));
  
     Cc (N_Extension_Aggregate, N_Subexpr,
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 522,529 ****
  
     Cc (N_Raise_Expression, N_Subexpr,
         (Sy (Name, Node_Id, Default_Empty),
!         Sy (Expression, Node_Id, Default_Empty),
!         Sm (Convert_To_Return_False, Flag)));
  
     Cc (N_Range, N_Subexpr,
         (Sy (Low_Bound, Node_Id),
--- 526,532 ----
  
     Cc (N_Raise_Expression, N_Subexpr,
         (Sy (Name, Node_Id, Default_Empty),
!         Sy (Expression, Node_Id, Default_Empty)));
  
     Cc (N_Range, N_Subexpr,
         (Sy (Low_Bound, Node_Id),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 804,816 ****
     Cc (N_Package_Body, N_Unit_Body,
         (Sy (Defining_Unit_Name, Node_Id),
          Sy (Declarations, List_Id, Default_No_List),
!         Sy (Handled_Statement_Sequence, Node_Id, Default_Empty)));
  
     Cc (N_Subprogram_Body, N_Unit_Body,
         (Sy (Specification, Node_Id),
          Sy (Declarations, List_Id, Default_No_List),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (Bad_Is_Detected, Flag),
          Sm (Activation_Chain_Entity, Node_Id),
          Sm (Acts_As_Spec, Flag),
          Sm (Corresponding_Entry_Body, Node_Id),
--- 807,821 ----
     Cc (N_Package_Body, N_Unit_Body,
         (Sy (Defining_Unit_Name, Node_Id),
          Sy (Declarations, List_Id, Default_No_List),
!         Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
!         Sy (At_End_Proc, Node_Id, Default_Empty)));
  
     Cc (N_Subprogram_Body, N_Unit_Body,
         (Sy (Specification, Node_Id),
          Sy (Declarations, List_Id, Default_No_List),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
          Sy (Bad_Is_Detected, Flag),
+         Sy (At_End_Proc, Node_Id, Default_Empty),
          Sm (Activation_Chain_Entity, Node_Id),
          Sm (Acts_As_Spec, Flag),
          Sm (Corresponding_Entry_Body, Node_Id),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 832,837 ****
--- 837,843 ----
         (Sy (Defining_Identifier, Node_Id),
          Sy (Declarations, List_Id, Default_No_List),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
+         Sy (At_End_Proc, Node_Id, Default_Empty),
          Sm (Activation_Chain_Entity, Node_Id),
          Sm (Is_Task_Master, Flag)));
  
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 903,908 ****
--- 909,915 ----
          Sy (Subtype_Mark, Node_Id, Default_Empty),
          Sy (Access_Definition, Node_Id, Default_Empty),
          Sy (Name, Node_Id, Default_Empty),
+         Sm (Comes_From_Iterator, Flag),
          Sm (Corresponding_Generic_Association, Node_Id)));
  
     Cc (N_Package_Renaming_Declaration, N_Renaming_Declaration,
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 975,980 ****
--- 982,988 ----
          Sy (Has_Created_Identifier, Flag),
          Sy (Is_Asynchronous_Call_Block, Flag),
          Sy (Is_Task_Allocation_Block, Flag),
+         Sy (At_End_Proc, Node_Id, Default_Empty),
          Sm (Activation_Chain_Entity, Node_Id),
          Sm (Cleanup_Actions, List_Id),
          Sm (Exception_Junk, Flag),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1043,1050 ****
  
     Cc (N_Raise_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Name, Node_Id, Default_Empty),
!         Sy (Expression, Node_Id, Default_Empty),
!         Sm (From_At_End, Flag)));
  
     Cc (N_Raise_When_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Name, Node_Id, Default_Empty),
--- 1051,1057 ----
  
     Cc (N_Raise_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Name, Node_Id, Default_Empty),
!         Sy (Expression, Node_Id, Default_Empty)));
  
     Cc (N_Raise_When_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Name, Node_Id, Default_Empty),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1060,1066 ****
  
     Cc (N_Simple_Return_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Expression, Node_Id, Default_Empty),
-         Sm (By_Ref, Flag),
          Sm (Comes_From_Extended_Return_Statement, Flag),
          Sm (Procedure_To_Call, Node_Id),
          Sm (Return_Statement_Entity, Node_Id),
--- 1067,1072 ----
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1069,1075 ****
     Cc (N_Extended_Return_Statement, N_Statement_Other_Than_Procedure_Call,
         (Sy (Return_Object_Declarations, List_Id),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
-         Sm (By_Ref, Flag),
          Sm (Procedure_To_Call, Node_Id),
          Sm (Return_Statement_Entity, Node_Id),
          Sm (Storage_Pool, Node_Id)));
--- 1075,1080 ----
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1097,1103 ****
          Sy (Elsif_Parts, List_Id, Default_No_List),
          Sy (Else_Statements, List_Id, Default_No_List),
          Sy (End_Span, Unat, Default_Uint_0),
!         Sm (From_Conditional_Expression, Flag)));
  
     Cc (N_Accept_Alternative, Node_Kind,
         (Sy (Accept_Statement, Node_Id),
--- 1102,1109 ----
          Sy (Elsif_Parts, List_Id, Default_No_List),
          Sy (Else_Statements, List_Id, Default_No_List),
          Sy (End_Span, Unat, Default_Uint_0),
!         Sm (From_Conditional_Expression, Flag),
!         Sm (Comes_From_Check_Or_Contract, Flag)));
  
     Cc (N_Accept_Alternative, Node_Kind,
         (Sy (Accept_Statement, Node_Id),
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1337,1342 ****
--- 1343,1349 ----
          Sy (Entry_Body_Formal_Part, Node_Id),
          Sy (Declarations, List_Id, Default_No_List),
          Sy (Handled_Statement_Sequence, Node_Id, Default_Empty),
+         Sy (At_End_Proc, Node_Id, Default_Empty),
          Sm (Activation_Chain_Entity, Node_Id)));
  
     Cc (N_Entry_Call_Alternative, Node_Kind,
*************** begin -- Gen_IL.Gen.Gen_Nodes
*** 1424,1431 ****
         (Sy (Statements, List_Id, Default_Empty_List),
          Sy (End_Label, Node_Id, Default_Empty),
          Sy (Exception_Handlers, List_Id, Default_No_List),
!         Sy (At_End_Proc, Node_Id, Default_Empty),
!         Sm (First_Real_Statement, Node_Id)));
  
     Cc (N_Index_Or_Discriminant_Constraint, Node_Kind,
         (Sy (Constraints, List_Id)));
--- 1431,1437 ----
         (Sy (Statements, List_Id, Default_Empty_List),
          Sy (End_Label, Node_Id, Default_Empty),
          Sy (Exception_Handlers, List_Id, Default_No_List),
!         Sy (At_End_Proc, Node_Id, Default_Empty)));
  
     Cc (N_Index_Or_Discriminant_Constraint, Node_Kind,
         (Sy (Constraints, List_Id)));
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-gen.adb gcc-13.1.0/gcc/ada/gen_il-gen.adb
*** gcc-12.2.0/gcc/ada/gen_il-gen.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-gen.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Gen_IL.Gen is
*** 1425,1431 ****
          (S : in out Sink; T : Type_Enum)
        is
           Pre : constant String :=
!            "function Cast is new Unchecked_Conversion (";
           Lo_Type : constant String := "Field_Size_" & Image (Field_Size (T)) & "_Bit";
           Hi_Type : constant String := Get_Set_Id_Image (T);
        begin
--- 1425,1431 ----
          (S : in out Sink; T : Type_Enum)
        is
           Pre : constant String :=
!            "function Cast is new Ada.Unchecked_Conversion (";
           Lo_Type : constant String := "Field_Size_" & Image (Field_Size (T)) & "_Bit";
           Hi_Type : constant String := Get_Set_Id_Image (T);
        begin
*************** package body Gen_IL.Gen is
*** 2338,2344 ****
           Decrease_Indent (S, 3);
           Put (S, LF & "end Sinfo.Nodes;" & LF);
  
!          Put (B, "with Unchecked_Conversion;" & LF);
           Put (B, "with Atree; use Atree; use Atree.Atree_Private_Part;" & LF);
           Put (B, "with Nlists; use Nlists;" & LF);
           Put (B, "pragma Warnings (Off);" & LF);
--- 2338,2344 ----
           Decrease_Indent (S, 3);
           Put (S, LF & "end Sinfo.Nodes;" & LF);
  
!          Put (B, "with Ada.Unchecked_Conversion;" & LF);
           Put (B, "with Atree; use Atree; use Atree.Atree_Private_Part;" & LF);
           Put (B, "with Nlists; use Nlists;" & LF);
           Put (B, "pragma Warnings (Off);" & LF);
*************** package body Gen_IL.Gen is
*** 2394,2400 ****
           Decrease_Indent (S, 3);
           Put (S, LF & "end Einfo.Entities;" & LF);
  
!          Put (B, "with Unchecked_Conversion;" & LF);
           Put (B, "with Atree; use Atree; use Atree.Atree_Private_Part;" & LF);
           Put (B, "with Einfo.Utils; use Einfo.Utils;" & LF);
           --  This forms a cycle between packages (via bodies, which is OK)
--- 2394,2400 ----
           Decrease_Indent (S, 3);
           Put (S, LF & "end Einfo.Entities;" & LF);
  
!          Put (B, "with Ada.Unchecked_Conversion;" & LF);
           Put (B, "with Atree; use Atree; use Atree.Atree_Private_Part;" & LF);
           Put (B, "with Einfo.Utils; use Einfo.Utils;" & LF);
           --  This forms a cycle between packages (via bodies, which is OK)
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-gen.ads gcc-13.1.0/gcc/ada/gen_il-gen.ads
*** gcc-12.2.0/gcc/ada/gen_il-gen.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-gen.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-internals.adb gcc-13.1.0/gcc/ada/gen_il-internals.adb
*** gcc-12.2.0/gcc/ada/gen_il-internals.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-internals.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Gen_IL.Internals is
*** 257,264 ****
           --  Special cases for the same reason as in the above Image
           --  function for Opt_Type_Enum.
  
-          when Alloc_For_BIP_Return =>
-             return "Alloc_For_BIP_Return";
           when Assignment_OK =>
              return "Assignment_OK";
           when Backwards_OK =>
--- 257,262 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-internals.ads gcc-13.1.0/gcc/ada/gen_il-internals.ads
*** gcc-12.2.0/gcc/ada/gen_il-internals.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-internals.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-main.adb gcc-13.1.0/gcc/ada/gen_il-main.adb
*** gcc-12.2.0/gcc/ada/gen_il-main.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-main.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il-types.ads gcc-13.1.0/gcc/ada/gen_il-types.ads
*** gcc-12.2.0/gcc/ada/gen_il-types.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il-types.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Gen_IL.Types is
*** 250,255 ****
--- 250,256 ----
        N_Expression_With_Actions,
        N_If_Expression,
        N_Indexed_Component,
+       N_Interpolated_String_Literal,
        N_Null,
        N_Qualified_Expression,
        N_Quantified_Expression,
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il.adb gcc-13.1.0/gcc/ada/gen_il.adb
*** gcc-12.2.0/gcc/ada/gen_il.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gen_il.ads gcc-13.1.0/gcc/ada/gen_il.ads
*** gcc-12.2.0/gcc/ada/gen_il.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gen_il.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2020-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/get_scos.adb gcc-13.1.0/gcc/ada/get_scos.adb
*** gcc-12.2.0/gcc/ada/get_scos.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/get_scos.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/get_scos.ads gcc-13.1.0/gcc/ada/get_scos.ads
*** gcc-12.2.0/gcc/ada/get_scos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/get_scos.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/get_targ.adb gcc-13.1.0/gcc/ada/get_targ.adb
*** gcc-12.2.0/gcc/ada/get_targ.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/get_targ.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/get_targ.ads gcc-13.1.0/gcc/ada/get_targ.ads
*** gcc-12.2.0/gcc/ada/get_targ.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/get_targ.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/ghost.adb gcc-13.1.0/gcc/ada/ghost.adb
*** gcc-12.2.0/gcc/ada/ghost.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ghost.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ghost is
*** 261,266 ****
--- 261,276 ----
              then
                 return True;
  
+             --  A reference to a Ghost entity may appear within the class-wide
+             --  precondition of a helper subprogram. This context is treated
+             --  as suitable because it was already verified when we were
+             --  analyzing the original class-wide precondition.
+ 
+             elsif Is_Subprogram (Current_Scope)
+               and then Present (Class_Preconditions_Subprogram (Current_Scope))
+             then
+                return True;
+ 
              --  References to Ghost entities may be relocated in internally
              --  generated bodies.
  
*************** package body Ghost is
*** 271,281 ****
  
                 if Present (Subp_Id) then
  
!                   --  The context is the internally built _Postconditions
                    --  procedure, which is OK because the real check was done
!                   --  before expansion activities.
  
!                   if Chars (Subp_Id) = Name_uPostconditions then
                       return True;
  
                    --  The context is the internally built predicate function,
--- 281,291 ----
  
                 if Present (Subp_Id) then
  
!                   --  The context is the internally built _Wrapped_Statements
                    --  procedure, which is OK because the real check was done
!                   --  before contract expansion activities.
  
!                   if Chars (Subp_Id) = Name_uWrapped_Statements then
                       return True;
  
                    --  The context is the internally built predicate function,
*************** package body Ghost is
*** 365,370 ****
--- 375,391 ----
                 if Is_Ghost_Pragma (Prag) then
                    return True;
  
+                --  A pragma may not be analyzed, so that its Ghost status is
+                --  not determined yet, but it is guaranteed to be Ghost when
+                --  referencing a Ghost entity.
+ 
+                elsif Prag_Nam in Name_Annotate
+                                | Name_Compile_Time_Error
+                                | Name_Compile_Time_Warning
+                                | Name_Unreferenced
+                then
+                   return True;
+ 
                 --  An assertion expression pragma is Ghost when it contains a
                 --  reference to a Ghost entity (SPARK RM 6.9(10)), except for
                 --  predicate pragmas (SPARK RM 6.9(11)).
*************** package body Ghost is
*** 421,429 ****
              --  but it may still contain references to Ghost entities.
  
              elsif Nkind (Stmt) = N_If_Statement
!               and then Nkind (Original_Node (Stmt)) = N_Pragma
!               and then Assertion_Expression_Pragma
!                          (Get_Pragma_Id (Original_Node (Stmt)))
              then
                 return True;
              end if;
--- 442,448 ----
              --  but it may still contain references to Ghost entities.
  
              elsif Nkind (Stmt) = N_If_Statement
!               and then Comes_From_Check_Or_Contract (Stmt)
              then
                 return True;
              end if;
*************** package body Ghost is
*** 444,457 ****
           if Ghost_Mode > None then
              return True;
  
-          --  A Ghost type may be referenced in a use_type clause
-          --  (SPARK RM 6.9.10).
- 
-          elsif Present (Parent (Context))
-            and then Nkind (Parent (Context)) = N_Use_Type_Clause
-          then
-             return True;
- 
           --  Routine Expand_Record_Extension creates a parent subtype without
           --  inserting it into the tree. There is no good way of recognizing
           --  this special case as there is no parent. Try to approximate the
--- 463,468 ----
*************** package body Ghost is
*** 469,474 ****
--- 480,492 ----
                 if Is_Ignored_Ghost_Node (Par) then
                    return True;
  
+                --  It is not possible to check correct use of Ghost entities
+                --  in generic instantiations until after the generic has been
+                --  resolved. Postpone that verification to after resolution.
+ 
+                elsif Nkind (Par) = N_Generic_Association then
+                   return True;
+ 
                 --  A reference to a Ghost entity can appear within an aspect
                 --  specification (SPARK RM 6.9(10)). The precise checking will
                 --  occur when analyzing the corresponding pragma. We make an
*************** package body Ghost is
*** 482,487 ****
--- 500,541 ----
                 then
                    return True;
  
+                --  A Ghost type may be referenced in a use or use_type clause
+                --  (SPARK RM 6.9(10)).
+ 
+                elsif Present (Parent (Par))
+                  and then Nkind (Parent (Par)) in N_Use_Package_Clause
+                                                 | N_Use_Type_Clause
+                then
+                   return True;
+ 
+                --  The context is an attribute definition clause for a Ghost
+                --  entity.
+ 
+                elsif Nkind (Parent (Par)) = N_Attribute_Definition_Clause
+                  and then Par = Name (Parent (Par))
+                then
+                   return True;
+ 
+                --  The context is the instantiation or renaming of a Ghost
+                --  entity.
+ 
+                elsif Nkind (Parent (Par)) in N_Generic_Instantiation
+                                            | N_Renaming_Declaration
+                                            | N_Generic_Renaming_Declaration
+                  and then Par = Name (Parent (Par))
+                then
+                   return True;
+ 
+                --  In the case of the renaming of a ghost object, the type
+                --  itself may be ghost.
+ 
+                elsif Nkind (Parent (Par)) = N_Object_Renaming_Declaration
+                  and then (Par = Subtype_Mark (Parent (Par))
+                              or else Par = Access_Definition (Parent (Par)))
+                then
+                   return True;
+ 
                 elsif Is_OK_Declaration (Par) then
                    return True;
  
*************** package body Ghost is
*** 593,598 ****
--- 647,659 ----
           return;
        end if;
  
+       --  When assertions are enabled, compiler generates code for ghost
+       --  entities, that is not subject to Ghost policy.
+ 
+       if not Comes_From_Source (Ghost_Ref) then
+          return;
+       end if;
+ 
        --  Once it has been established that the reference to the Ghost entity
        --  is within a suitable context, ensure that the policy at the point of
        --  declaration and at the point of use match.
*************** package body Ghost is
*** 621,626 ****
--- 682,809 ----
        end if;
     end Check_Ghost_Context;
  
+    ------------------------------------------------
+    -- Check_Ghost_Context_In_Generic_Association --
+    ------------------------------------------------
+ 
+    procedure Check_Ghost_Context_In_Generic_Association
+      (Actual : Node_Id;
+       Formal : Entity_Id)
+    is
+       function Emit_Error_On_Ghost_Reference
+         (N : Node_Id)
+          return Traverse_Result;
+       --  Determine wether N denotes a reference to a ghost entity, and if so
+       --  issue an error.
+ 
+       -----------------------------------
+       -- Emit_Error_On_Ghost_Reference --
+       -----------------------------------
+ 
+       function Emit_Error_On_Ghost_Reference
+         (N : Node_Id)
+          return Traverse_Result
+       is
+       begin
+          if Is_Entity_Name (N)
+            and then Present (Entity (N))
+            and then Is_Ghost_Entity (Entity (N))
+          then
+             Error_Msg_N ("ghost entity cannot appear in this context", N);
+             Error_Msg_Sloc := Sloc (Formal);
+             Error_Msg_NE ("\formal & was not declared as ghost #", N, Formal);
+             return Abandon;
+          end if;
+ 
+          return OK;
+       end Emit_Error_On_Ghost_Reference;
+ 
+       procedure Check_Ghost_References is
+         new Traverse_Proc (Emit_Error_On_Ghost_Reference);
+ 
+    --  Start of processing for Check_Ghost_Context_In_Generic_Association
+ 
+    begin
+       --  The context is ghost when it appears within a Ghost package or
+       --  subprogram.
+ 
+       if Ghost_Mode > None then
+          return;
+ 
+       --  The context is ghost if Formal is explicitly marked as ghost
+ 
+       elsif Is_Ghost_Entity (Formal) then
+          return;
+ 
+       else
+          Check_Ghost_References (Actual);
+       end if;
+    end Check_Ghost_Context_In_Generic_Association;
+ 
+    ---------------------------------------------
+    -- Check_Ghost_Formal_Procedure_Or_Package --
+    ---------------------------------------------
+ 
+    procedure Check_Ghost_Formal_Procedure_Or_Package
+      (N          : Node_Id;
+       Actual     : Entity_Id;
+       Formal     : Entity_Id;
+       Is_Default : Boolean := False)
+    is
+    begin
+       if not Is_Ghost_Entity (Formal) then
+          return;
+       end if;
+ 
+       if Present (Actual) and then Is_Ghost_Entity (Actual) then
+          return;
+       end if;
+ 
+       if Is_Default then
+          Error_Msg_N ("ghost procedure expected as default", N);
+          Error_Msg_NE ("\formal & is declared as ghost", N, Formal);
+ 
+       else
+          if Ekind (Formal) = E_Procedure then
+             Error_Msg_N ("ghost procedure expected for actual", N);
+          else
+             Error_Msg_N ("ghost package expected for actual", N);
+          end if;
+ 
+          Error_Msg_Sloc := Sloc (Formal);
+          Error_Msg_NE ("\formal & was declared as ghost #", N, Formal);
+       end if;
+    end Check_Ghost_Formal_Procedure_Or_Package;
+ 
+    ---------------------------------
+    -- Check_Ghost_Formal_Variable --
+    ---------------------------------
+ 
+    procedure Check_Ghost_Formal_Variable
+      (Actual     : Node_Id;
+       Formal     : Entity_Id;
+       Is_Default : Boolean := False)
+    is
+       Actual_Obj : constant Entity_Id := Get_Enclosing_Deep_Object (Actual);
+    begin
+       if not Is_Ghost_Entity (Formal) then
+          return;
+       end if;
+ 
+       if No (Actual_Obj)
+         or else not Is_Ghost_Entity (Actual_Obj)
+       then
+          if Is_Default then
+             Error_Msg_N ("ghost object expected as default", Actual);
+             Error_Msg_NE ("\formal & is declared as ghost", Actual, Formal);
+          else
+             Error_Msg_N ("ghost object expected for mutable actual", Actual);
+             Error_Msg_Sloc := Sloc (Formal);
+             Error_Msg_NE ("\formal & was declared as ghost #", Actual, Formal);
+          end if;
+       end if;
+    end Check_Ghost_Formal_Variable;
+ 
     ----------------------------
     -- Check_Ghost_Overriding --
     ----------------------------
*************** package body Ghost is
*** 1079,1085 ****
        function Ultimate_Original_Node (Nod : Node_Id) return Node_Id is
           Res : Node_Id := Nod;
        begin
!          while Original_Node (Res) /= Res loop
              Res := Original_Node (Res);
           end loop;
  
--- 1262,1268 ----
        function Ultimate_Original_Node (Nod : Node_Id) return Node_Id is
           Res : Node_Id := Nod;
        begin
!          while Is_Rewrite_Substitution (Res) loop
              Res := Original_Node (Res);
           end loop;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/ghost.ads gcc-13.1.0/gcc/ada/ghost.ads
*** gcc-12.2.0/gcc/ada/ghost.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ghost.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ghost is
*** 44,49 ****
--- 44,76 ----
     --  Determine whether node Ghost_Ref appears within a Ghost-friendly context
     --  where Ghost entity Ghost_Id can safely reside.
  
+    procedure Check_Ghost_Context_In_Generic_Association
+      (Actual : Node_Id;
+       Formal : Entity_Id);
+    --  Check that if Actual contains references to ghost entities, generic
+    --  formal parameter Formal is ghost (SPARK RM 6.9(10)).
+ 
+    procedure Check_Ghost_Formal_Procedure_Or_Package
+      (N          : Node_Id;
+       Actual     : Entity_Id;
+       Formal     : Entity_Id;
+       Is_Default : Boolean := False);
+    --  Verify that if generic formal procedure (resp. package) Formal is ghost,
+    --  then Actual is not Empty and also a ghost procedure (resp. package)
+    --  (SPARK RM 6.9(13-14)). The error if any is located on N. If
+    --  Is_Default is False, N and Actual represent the actual parameter in an
+    --  instantiation. Otherwise, they represent the default subprogram of a
+    --  formal subprogram declaration.
+ 
+    procedure Check_Ghost_Formal_Variable
+      (Actual     : Node_Id;
+       Formal     : Entity_Id;
+       Is_Default : Boolean := False);
+    --  Verify that if Formal (either an IN OUT generic formal parameter, or an
+    --  IN generic formal parameter of access-to-variable type) is ghost, then
+    --  Actual is a ghost object (SPARK RM 6.9(13-14)). Is_Default is True when
+    --  Actual is the default expression of the formal object declaration.
+ 
     procedure Check_Ghost_Overriding
       (Subp            : Entity_Id;
        Overridden_Subp : Entity_Id);
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat-style.texi gcc-13.1.0/gcc/ada/gnat-style.texi
*** gcc-12.2.0/gcc/ada/gnat-style.texi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat-style.texi	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  @setfilename gnat-style.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 4.3.1.@*
  @end ifinfo
  @settitle GNAT Coding Style A Guide for GNAT Developers
  @defindex ge
--- 3,9 ----
  @setfilename gnat-style.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 5.1.1.@*
  @end ifinfo
  @settitle GNAT Coding Style A Guide for GNAT Developers
  @defindex ge
***************
*** 15,27 ****
  * gnat-style: (gnat-style.info). gnat-style
  @end direntry
  
- @definfoenclose strong,`,'
- @definfoenclose emph,`,'
  @c %**end of header
  
  @copying
  @quotation
! GNAT Coding Style: A Guide for GNAT Developers , Jan 03, 2022
  
  AdaCore
  
--- 15,25 ----
  * gnat-style: (gnat-style.info). gnat-style
  @end direntry
  
  @c %**end of header
  
  @copying
  @quotation
! GNAT Coding Style: A Guide for GNAT Developers , Aug 25, 2022
  
  AdaCore
  
*************** When declarations are commented with ‘
*** 255,261 ****
  comments after the declaration, there is no blank line before the
  comment, and if it is absolutely necessary to have blank lines within
  the comments, e.g. to make paragraph separations within a single comment,
! these blank lines @emph{do} have a @code{--} (unlike the
  normal rule, which is to use entirely blank lines for separating
  comment paragraphs).  The comment starts at same level of indentation
  as code it is commenting.
--- 253,259 ----
  comments after the declaration, there is no blank line before the
  comment, and if it is absolutely necessary to have blank lines within
  the comments, e.g. to make paragraph separations within a single comment,
! these blank lines `do' have a @code{--} (unlike the
  normal rule, which is to use entirely blank lines for separating
  comment paragraphs).  The comment starts at same level of indentation
  as code it is commenting.
*************** Other_Id := 6;           --  Second comm
*** 304,315 ****
  @end example
  
  @item 
! Short comments that fit on a single line are @emph{not} ended with a
  period.  Comments taking more than a line are punctuated in the normal
  manner.
  
  @item 
! Comments should focus on @emph{why} instead of @emph{what}.
  Descriptions of what subprograms do go with the specification.
  
  @item 
--- 302,313 ----
  @end example
  
  @item 
! Short comments that fit on a single line are `not' ended with a
  period.  Comments taking more than a line are punctuated in the normal
  manner.
  
  @item 
! Comments should focus on `why' instead of `what'.
  Descriptions of what subprograms do go with the specification.
  
  @item 
*************** depend on the names of things.  The name
*** 319,325 ****
  sufficient, as comments.
  
  @item 
! @emph{Do not} put two spaces after periods in comments.
  @end itemize
  
  @node Declarations and Types,Expressions and Names,Lexical Elements,Top
--- 317,323 ----
  sufficient, as comments.
  
  @item 
! `Do not' put two spaces after periods in comments.
  @end itemize
  
  @node Declarations and Types,Expressions and Names,Lexical Elements,Top
*************** Copyright  2000, 2001, 2002, 2007, 2008
*** 958,964 ****
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! @strong{Preamble}
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document “free” in the sense of freedom: to
--- 956,962 ----
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! `Preamble'
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document “free” in the sense of freedom: to
*************** it can be used for any textual work, reg
*** 981,1003 ****
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
! @strong{1. APPLICABILITY AND DEFINITIONS}
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The @strong{Document}, below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as “@strong{you}”.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  
! A “@strong{Modified Version}” of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A “@strong{Secondary Section}” is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document’s overall subject
  (or to related matters) and contains nothing that could fall directly
--- 979,1001 ----
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
! `1. APPLICABILITY AND DEFINITIONS'
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The `Document', below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as “`you'”.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  
! A “`Modified Version'” of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A “`Secondary Section'” is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document’s overall subject
  (or to related matters) and contains nothing that could fall directly
*************** connection with the subject or with rela
*** 1008,1014 ****
  commercial, philosophical, ethical or political position regarding
  them.
  
! The “@strong{Invariant Sections}” are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
--- 1006,1012 ----
  commercial, philosophical, ethical or political position regarding
  them.
  
! The “`Invariant Sections'” are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
*************** allowed to be designated as Invariant.
*** 1016,1027 ****
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  
! The “@strong{Cover Texts}” are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may
  be at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A “@strong{Transparent}” copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
--- 1014,1025 ----
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  
! The “`Cover Texts'” are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may
  be at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A “`Transparent'” copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
*************** to text formatters.  A copy made in an o
*** 1032,1038 ****
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not “Transparent” is called @strong{Opaque}.
  
  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
--- 1030,1036 ----
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not “Transparent” is called `Opaque'.
  
  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
*************** processing tools are not generally avail
*** 1045,1066 ****
  machine-generated HTML, PostScript or PDF produced by some word
  processors for output purposes only.
  
! The “@strong{Title Page}” means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, “Title Page” means
  the text near the most prominent appearance of the work’s title,
  preceding the beginning of the body of the text.
  
! The “@strong{publisher}” means any person or entity that distributes
  copies of the Document to the public.
  
! A section “@strong{Entitled XYZ}” means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as “@strong{Acknowledgements}”,
! “@strong{Dedications}”, “@strong{Endorsements}”, or “@strong{History}”.)
! To “@strong{Preserve the Title}”
  of such a section when you modify the Document means that it remains a
  section “Entitled XYZ” according to this definition.
  
--- 1043,1064 ----
  machine-generated HTML, PostScript or PDF produced by some word
  processors for output purposes only.
  
! The “`Title Page'” means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, “Title Page” means
  the text near the most prominent appearance of the work’s title,
  preceding the beginning of the body of the text.
  
! The “`publisher'” means any person or entity that distributes
  copies of the Document to the public.
  
! A section “`Entitled XYZ'” means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as “`Acknowledgements'”,
! “`Dedications'”, “`Endorsements'”, or “`History'”.)
! To “`Preserve the Title'”
  of such a section when you modify the Document means that it remains a
  section “Entitled XYZ” according to this definition.
  
*************** License, but only as regards disclaiming
*** 1071,1077 ****
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
! @strong{2. VERBATIM COPYING}
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 1069,1075 ----
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
! `2. VERBATIM COPYING'
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 1086,1092 ****
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! @strong{3. COPYING IN QUANTITY}
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
--- 1084,1090 ----
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! `3. COPYING IN QUANTITY'
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
*************** It is requested, but not required, that
*** 1123,1129 ****
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! @strong{4. MODIFICATIONS}
  
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
--- 1121,1127 ----
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! `4. MODIFICATIONS'
  
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
*************** The author(s) and publisher(s) of the Do
*** 1240,1246 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! @strong{5. COMBINING DOCUMENTS}
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 1238,1244 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! `5. COMBINING DOCUMENTS'
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** in the various original documents, formi
*** 1264,1270 ****
  and any sections Entitled “Dedications”.  You must delete all sections
  Entitled “Endorsements”.
  
! @strong{6. COLLECTIONS OF DOCUMENTS}
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 1262,1268 ----
  and any sections Entitled “Dedications”.  You must delete all sections
  Entitled “Endorsements”.
  
! `6. COLLECTIONS OF DOCUMENTS'
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** it individually under this License, prov
*** 1277,1283 ****
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! @strong{7. AGGREGATION WITH INDEPENDENT WORKS}
  
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
--- 1275,1281 ----
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! `7. AGGREGATION WITH INDEPENDENT WORKS'
  
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
*************** electronic equivalent of covers if the D
*** 1296,1302 ****
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
! @strong{8. TRANSLATION}
  
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
--- 1294,1300 ----
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
! `8. TRANSLATION'
  
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
*************** If a section in the Document is Entitled
*** 1316,1322 ****
  its Title (section 1) will typically require changing the actual
  title.
  
! @strong{9. TERMINATION}
  
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
--- 1314,1320 ----
  its Title (section 1) will typically require changing the actual
  title.
  
! `9. TERMINATION'
  
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
*************** this License.  If your rights have been
*** 1343,1349 ****
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! @strong{10. FUTURE REVISIONS OF THIS LICENSE}
  
  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
--- 1341,1347 ----
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! `10. FUTURE REVISIONS OF THIS LICENSE'
  
  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
*************** License can be used, that proxy’s publ
*** 1364,1370 ****
  version permanently authorizes you to choose that version for the
  Document.
  
! @strong{11. RELICENSING}
  
  “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
  World Wide Web server that publishes copyrightable works and also
--- 1362,1368 ----
  version permanently authorizes you to choose that version for the
  Document.
  
! `11. RELICENSING'
  
  “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
  World Wide Web server that publishes copyrightable works and also
*************** The operator of an MMC Site may republis
*** 1393,1399 ****
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! @strong{ADDENDUM: How to use this License for your documents}
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
--- 1391,1397 ----
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! `ADDENDUM: How to use this License for your documents'
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat1drv.adb gcc-13.1.0/gcc/ada/gnat1drv.adb
*** gcc-12.2.0/gcc/ada/gnat1drv.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat1drv.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure Gnat1drv is
*** 180,191 ****
--- 180,193 ----
        --  Set all flags required when generating C code
  
        if Generate_C_Code then
+          CCG_Mode := True;
           Modify_Tree_For_C := True;
           Transform_Function_Array := True;
           Unnest_Subprogram_Mode := True;
           Building_Static_Dispatch_Tables := False;
           Minimize_Expression_With_Actions := True;
           Expand_Nonbinary_Modular_Ops := True;
+          Back_End_Return_Slot := False;
  
           --  Set operating mode to Generate_Code to benefit from full front-end
           --  expansion (e.g. generics).
*************** procedure Gnat1drv is
*** 555,564 ****
           Validity_Checks_On := False;
           Check_Validity_Of_Parameters := False;
  
!          --  Turn off style check options since we are not interested in any
!          --  front-end warnings when we are getting SPARK output.
  
           Reset_Style_Check_Options;
  
           --  Suppress the generation of name tables for enumerations, which are
           --  not needed for formal verification, and fall outside the SPARK
--- 557,571 ----
           Validity_Checks_On := False;
           Check_Validity_Of_Parameters := False;
  
!          --  Turn off style checks and compiler warnings in GNATprove except:
!          --    - elaboration warnings, which turn into errors on SPARK code
!          --    - suspicious contracts, which are useful for SPARK code
  
           Reset_Style_Check_Options;
+          Restore_Warnings
+            ((Warnings_Package.Elab_Warnings => True,
+              Warnings_Package.Warn_On_Suspicious_Contract => True,
+              others => False));
  
           --  Suppress the generation of name tables for enumerations, which are
           --  not needed for formal verification, and fall outside the SPARK
*************** procedure Gnat1drv is
*** 631,658 ****
        --  generating code.
  
        if Operating_Mode = Generate_Code then
!          case Targparm.Frontend_Exceptions_On_Target is
!             when True =>
!                case Targparm.ZCX_By_Default_On_Target is
!                   when True =>
!                      Write_Line
!                        ("Run-time library configured incorrectly");
!                      Write_Line
!                        ("(requesting support for Frontend ZCX exceptions)");
!                      raise Unrecoverable_Error;
! 
!                   when False =>
!                      Exception_Mechanism := Front_End_SJLJ;
!                end case;
! 
!             when False =>
!                case Targparm.ZCX_By_Default_On_Target is
!                   when True =>
!                      Exception_Mechanism := Back_End_ZCX;
!                   when False =>
!                      Exception_Mechanism := Back_End_SJLJ;
!                end case;
!          end case;
        end if;
  
        --  Set proper status for overflow check mechanism
--- 638,648 ----
        --  generating code.
  
        if Operating_Mode = Generate_Code then
!          if Targparm.ZCX_By_Default_On_Target then
!             Exception_Mechanism := Back_End_ZCX;
!          else
!             Exception_Mechanism := Back_End_SJLJ;
!          end if;
        end if;
  
        --  Set proper status for overflow check mechanism
*************** procedure Gnat1drv is
*** 743,748 ****
--- 733,744 ----
           Back_End_Handles_Limited_Types := False;
        end if;
  
+       --  Return slot support is disabled if -gnatd_r is specified
+ 
+       if Debug_Flag_Underscore_R then
+          Back_End_Return_Slot := False;
+       end if;
+ 
        --  If the inlining level has not been set by the user, compute it from
        --  the optimization level: 1 at -O1/-O2 (and -Os), 2 at -O3 and above.
  
*************** begin
*** 1273,1279 ****
  
        if Compilation_Errors then
           Treepr.Tree_Dump;
-          Post_Compilation_Validation_Checks;
           Errout.Finalize (Last_Call => True);
           Errout.Output_Messages;
           Namet.Finalize;
--- 1269,1274 ----
*************** begin
*** 1453,1459 ****
  
                 --  Do not generate an ALI file in this case, because it would
                 --  become obsolete when the parent is compiled, and thus
!                --  confuse tools such as gnatfind.
  
              elsif Main_Unit_Kind = N_Subprogram_Declaration then
                 Write_Str (" (subprogram spec)");
--- 1448,1454 ----
  
                 --  Do not generate an ALI file in this case, because it would
                 --  become obsolete when the parent is compiled, and thus
!                --  confuse some tools.
  
              elsif Main_Unit_Kind = N_Subprogram_Declaration then
                 Write_Str (" (subprogram spec)");
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat1drv.ads gcc-13.1.0/gcc/ada/gnat1drv.ads
*** gcc-12.2.0/gcc/ada/gnat1drv.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat1drv.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat_cuda.adb gcc-13.1.0/gcc/ada/gnat_cuda.adb
*** gcc-12.2.0/gcc/ada/gnat_cuda.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat_cuda.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo.Entities; use Einfo.Entities;
*** 31,49 ****
  with Einfo.Utils;    use Einfo.Utils;
  with Elists;         use Elists;
  with Errout;         use Errout;
- with Namet;          use Namet;
  with Nlists;         use Nlists;
  with Nmake;          use Nmake;
- with Rtsfind;        use Rtsfind;
- with Sem;            use Sem;
  with Sem_Aux;        use Sem_Aux;
  with Sem_Util;       use Sem_Util;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo;          use Sinfo;
- with Snames;         use Snames;
- with Stringt;        use Stringt;
- with Tbuild;         use Tbuild;
- with Uintp;          use Uintp;
  
  with GNAT.HTable;
  
--- 31,42 ----
*************** package body GNAT_CUDA is
*** 83,107 ****
     --  least one procedure marked with aspect CUDA_Global. The values are
     --  Elists of the marked procedures.
  
-    procedure Build_And_Insert_CUDA_Initialization (N : Node_Id);
-    --  Builds declarations necessary for CUDA initialization and inserts them
-    --  in N, the package body that contains CUDA_Global nodes. These
-    --  declarations are:
-    --
-    --    * A symbol to hold the pointer P to the CUDA fat binary.
-    --
-    --    * A type definition T for a wrapper that contains the pointer to the
-    --      CUDA fat binary.
-    --
-    --    * An object of the aforementioned type to hold the aforementioned
-    --      pointer.
-    --
-    --    * For each CUDA_Global procedure in the package, a declaration of a C
-    --      string containing the function's name.
-    --
-    --    * A procedure that takes care of calling CUDA functions that register
-    --      CUDA_Global procedures with the runtime.
- 
     procedure Empty_CUDA_Global_Subprograms (Pack_Id : Entity_Id);
     --  For all subprograms marked CUDA_Global in Pack_Id, remove declarations
     --  and replace statements with a single null statement.
--- 76,81 ----
*************** package body GNAT_CUDA is
*** 118,128 ****
     --  are declared within package body Pack_Body. Returns No_Elist if Pack_Id
     --  does not contain such entities.
  
-    function Get_CUDA_Kernels (Pack_Id : Entity_Id) return Elist_Id;
-    --  Returns an Elist of all procedures marked with pragma CUDA_Global that
-    --  are declared within package body Pack_Body. Returns No_Elist if Pack_Id
-    --  does not contain such procedures.
- 
     procedure Remove_CUDA_Device_Entities (Pack_Id : Entity_Id);
     --  Removes all entities marked with the CUDA_Device pragma from package
     --  Pack_Id. Must only be called when compiling for the host.
--- 92,97 ----
*************** package body GNAT_CUDA is
*** 149,155 ****
     is
        Device_Entities : Elist_Id := Get_CUDA_Device_Entities (Pack_Id);
     begin
!       if Device_Entities = No_Elist then
           Device_Entities := New_Elmt_List;
           Set_CUDA_Device_Entities (Pack_Id, Device_Entities);
        end if;
--- 118,124 ----
     is
        Device_Entities : Elist_Id := Get_CUDA_Device_Entities (Pack_Id);
     begin
!       if No (Device_Entities) then
           Device_Entities := New_Elmt_List;
           Set_CUDA_Device_Entities (Pack_Id, Device_Entities);
        end if;
*************** package body GNAT_CUDA is
*** 166,172 ****
     is
        Kernels : Elist_Id := Get_CUDA_Kernels (Pack_Id);
     begin
!       if Kernels = No_Elist then
           Kernels := New_Elmt_List;
           Set_CUDA_Kernels (Pack_Id, Kernels);
        end if;
--- 135,141 ----
     is
        Kernels : Elist_Id := Get_CUDA_Kernels (Pack_Id);
     begin
!       if No (Kernels) then
           Kernels := New_Elmt_List;
           Set_CUDA_Kernels (Pack_Id, Kernels);
        end if;
*************** package body GNAT_CUDA is
*** 196,212 ****
  
        Kernel_Elm := First_Elmt (Kernels);
        while Present (Kernel_Elm) loop
!          Kernel := Node (Kernel_Elm);
           Kernel_Body := Subprogram_Body (Kernel);
!          Loc := Sloc (Kernel_Body);
  
           Null_Body := Make_Subprogram_Body (Loc,
!            Specification              => Subprogram_Specification (Kernel),
             Declarations               => New_List,
             Handled_Statement_Sequence =>
               Make_Handled_Sequence_Of_Statements (Loc,
                 Statements => New_List (Make_Null_Statement (Loc))));
  
           Rewrite (Kernel_Body, Null_Body);
  
           Next_Elmt (Kernel_Elm);
--- 165,184 ----
  
        Kernel_Elm := First_Elmt (Kernels);
        while Present (Kernel_Elm) loop
!          Kernel      := Node (Kernel_Elm);
           Kernel_Body := Subprogram_Body (Kernel);
!          Loc         := Sloc (Kernel_Body);
  
           Null_Body := Make_Subprogram_Body (Loc,
!            Specification              => Specification (Kernel_Body),
             Declarations               => New_List,
             Handled_Statement_Sequence =>
               Make_Handled_Sequence_Of_Statements (Loc,
                 Statements => New_List (Make_Null_Statement (Loc))));
  
+          Set_Corresponding_Spec (Null_Body,
+            Corresponding_Spec (Kernel_Body));
+ 
           Rewrite (Kernel_Body, Null_Body);
  
           Next_Elmt (Kernel_Elm);
*************** package body GNAT_CUDA is
*** 239,251 ****
  
        Remove_CUDA_Device_Entities
          (Package_Specification (Corresponding_Spec (N)));
- 
-       --  If procedures marked with CUDA_Global have been defined within N,
-       --  we need to register them with the CUDA runtime at program startup.
-       --  This requires multiple declarations and function calls which need
-       --  to be appended to N's declarations.
- 
-       Build_And_Insert_CUDA_Initialization (N);
     end Expand_CUDA_Package;
  
     ----------
--- 211,216 ----
*************** package body GNAT_CUDA is
*** 275,737 ****
        return CUDA_Kernels_Table.Get (Pack_Id);
     end Get_CUDA_Kernels;
  
-    ------------------------------------------
-    -- Build_And_Insert_CUDA_Initialization --
-    ------------------------------------------
- 
-    procedure Build_And_Insert_CUDA_Initialization (N : Node_Id) is
- 
-       --  For the following kernel declaration:
-       --
-       --  package body <Package_Name> is
-       --     procedure <Proc_Name> (X : Integer) with CUDA_Global;
-       --  end package;
-       --
-       --  Insert the following declarations:
-       --
-       --     Fat_Binary : System.Address;
-       --     pragma Import
-       --        (Convention    => C,
-       --         Entity        => Fat_Binary,
-       --         External_Name => "_binary_<Package_Name>_fatbin_start");
-       --
-       --     Wrapper : Fatbin_Wrapper :=
-       --       (16#466243b1#, 1, Fat_Binary'Address, System.Null_Address);
-       --
-       --     Proc_Symbol_Name : Interfaces.C.Strings.Chars_Ptr :=
-       --       Interfaces.C.Strings.New_Char_Array("<Proc_Name>");
-       --
-       --     Fat_Binary_Handle : System.Address :=
-       --       CUDA.Internal.Register_Fat_Binary (Wrapper'Address);
-       --
-       --     procedure Initialize_CUDA_Kernel is
-       --     begin
-       --        CUDA.Internal.Register_Function
-       --           (Fat_Binary_Handle,
-       --            <Proc_Name>'Address,
-       --            Proc_Symbol_Name,
-       --            Proc_Symbol_Name,
-       --            -1,
-       --            System.Null_Address,
-       --            System.Null_Address,
-       --            System.Null_Address,
-       --            System.Null_Address,
-       --            System.Null_Address);
-       --        CUDA.Internal.Register_Fat_Binary_End (Fat_Binary_Handle);
-       --     end Initialize_CUDA_Kernel;
-       --
-       --  Proc_Symbol_Name is the name of the procedure marked with
-       --  CUDA_Global. The CUDA runtime uses this in order to be able to find
-       --  kernels in the fat binary, so it has to match the name of the
-       --  procedure symbol compiled by GNAT_LLVM. When looking at the code
-       --  generated by NVCC, it seems that the CUDA runtime also needs the name
-       --  of the procedure symbol of the host. Fortuantely, the procedures are
-       --  named the same way whether they are compiled for the host or the
-       --  device, so we use Vector_Add_Name to specify the name of the symbol
-       --  for both the host and the device. The meaning of the rest of the
-       --  arguments is unknown.
- 
-       function Build_CUDA_Init_Proc
-         (Init_Id      : Entity_Id;
-          CUDA_Kernels : Elist_Id;
-          Handle_Id    : Entity_Id;
-          Pack_Decls   : List_Id) return Node_Id;
-       --  Create the declaration of Init_Id, the function that binds each
-       --  kernel present in CUDA_Kernels with the fat binary Handle_Id and then
-       --  tells the CUDA runtime that no new function will be bound to the fat
-       --  binary.
- 
-       function Build_Fat_Binary_Declaration
-         (Bin_Id : Entity_Id) return Node_Id;
-       --  Create a declaration for Bin_Id, the entity that represents the fat
-       --  binary, i.e.:
-       --
-       --    Bin_Id : System.Address;
- 
-       function Build_Fat_Binary_Handle_Declaration
-         (Handle_Id  : Entity_Id;
-          Wrapper_Id : Entity_Id) return Node_Id;
-       --  Create the declaration of Handle_Id, a System.Address that will
-       --  receive the results of passing the address of Wrapper_Id to
-       --  CUDA.Register_Fat_Binary, i.e.:
-       --
-       --    Handle_Id : System.Address :=
-       --      CUDA.Register_Fat_Binary (Wrapper_Id'Address)
- 
-       function Build_Fat_Binary_Wrapper_Declaration
-         (Wrapper_Id : Entity_Id;
-          Bin_Id     : Entity_Id) return Node_Id;
-       --  Create the declaration of the fat binary wrapper Wrapper_Id, which
-       --  holds magic numbers and Bin_Id'Address, i.e.:
-       --
-       --     Wrapper_Id : System.Address :=
-       --       (16#466243b1#, 1, Bin_Id'Address, System.Null_Address);
- 
-       function Build_Import_Pragma
-         (Bin_Id    : Entity_Id;
-          Pack_Body : Node_Id) return Node_Id;
-       --  Create a pragma that will bind the fat binary Bin_Id to its external
-       --  symbol. N is the package body Bin_Id belongs to, i.e.:
-       --
-       --     pragma Import
-       --        (Convention    => C,
-       --         Entity        => Bin_Id,
-       --         External_Name => "_binary_<Pack_Body's name>_fatbin_start");
- 
-       function Build_Kernel_Name_Declaration
-         (Kernel : Entity_Id) return Node_Id;
-       --  Create the declaration of a C string that contains the name of
-       --  Kernel's symbol, i.e.:
-       --
-       --     Kernel : Interfaces.C.Strings.Chars_Ptr :=
-       --       Interfaces.C.Strings.New_Char_Array("<Kernel's name>");
- 
-       function Build_Register_Procedure_Call
-         (Loc         : Source_Ptr;
-          Bin         : Entity_Id;
-          Kernel      : Entity_Id;
-          Kernel_Name : Entity_Id) return Node_Id;
-       --  Return a call to CUDA.Internal.Register_Function that binds Kernel
-       --  (the entity of a procedure) to the symbol described by the C string
-       --  Kernel_Name in the fat binary Bin, using Loc as location.
- 
-       --------------------------
-       -- Build_CUDA_Init_Proc --
-       --------------------------
- 
-       function Build_CUDA_Init_Proc
-         (Init_Id      : Entity_Id;
-          CUDA_Kernels : Elist_Id;
-          Handle_Id    : Entity_Id;
-          Pack_Decls   : List_Id) return Node_Id
-       is
-          Loc : constant Source_Ptr := Sloc (Init_Id);
- 
-          Stmts : constant List_Id := New_List;
-          --  List of statements that will be used by the cuda initialization
-          --  function.
- 
-          New_Stmt : Node_Id;
-          --  Temporary variable to hold the various newly-created nodes
- 
-          Kernel_Elmt : Elmt_Id;
-          Kernel_Id   : Entity_Id;
- 
-       begin
-          --  For each CUDA_Global function, declare a C string that holds
-          --  its symbol's name (i.e. packagename __ functionname).
- 
-          --  Also create a function call to CUDA.Internal.Register_Function
-          --  that takes the declared C string, a pointer to the function and
-          --  the fat binary handle.
- 
-          Kernel_Elmt := First_Elmt (CUDA_Kernels);
-          while Present (Kernel_Elmt) loop
-             Kernel_Id := Node (Kernel_Elmt);
- 
-             New_Stmt := Build_Kernel_Name_Declaration (Kernel_Id);
-             Append (New_Stmt, Pack_Decls);
-             Analyze (New_Stmt);
- 
-             Append_To (Stmts,
-               Build_Register_Procedure_Call (Loc,
-                 Bin         => Handle_Id,
-                 Kernel      => Kernel_Id,
-                 Kernel_Name => Defining_Entity (New_Stmt)));
- 
-             Next_Elmt (Kernel_Elmt);
-          end loop;
- 
-          --  Finish the CUDA initialization function: add a call to
-          --  register_fat_binary_end, to let the CUDA runtime know that we
-          --  won't be registering any other symbol with the current fat binary.
- 
-          Append_To (Stmts,
-            Make_Procedure_Call_Statement (Loc,
-              Name                   =>
-                New_Occurrence_Of (RTE (RE_Register_Fat_Binary_End), Loc),
-              Parameter_Associations =>
-                New_List (New_Occurrence_Of (Handle_Id, Loc))));
- 
-          --  Now that we have all the declarations and calls we need, we can
-          --  build and and return the initialization procedure.
- 
-          return
-            Make_Subprogram_Body (Loc,
-              Specification              =>
-                Make_Procedure_Specification (Loc, Init_Id),
-              Declarations               => New_List,
-              Handled_Statement_Sequence =>
-                Make_Handled_Sequence_Of_Statements (Loc, Stmts));
-       end Build_CUDA_Init_Proc;
- 
-       ----------------------------------
-       -- Build_Fat_Binary_Declaration --
-       ----------------------------------
- 
-       function Build_Fat_Binary_Declaration
-         (Bin_Id : Entity_Id) return Node_Id
-       is
-       begin
-          return
-            Make_Object_Declaration (Sloc (Bin_Id),
-              Defining_Identifier => Bin_Id,
-              Object_Definition   =>
-                New_Occurrence_Of (RTE (RE_Address), Sloc (Bin_Id)));
-       end Build_Fat_Binary_Declaration;
- 
-       -----------------------------------------
-       -- Build_Fat_Binary_Handle_Declaration --
-       -----------------------------------------
- 
-       function Build_Fat_Binary_Handle_Declaration
-         (Handle_Id  : Entity_Id;
-          Wrapper_Id : Entity_Id) return Node_Id
-       is
-          Loc : constant Source_Ptr := Sloc (Handle_Id);
-       begin
-          --  Generate:
-          --    Handle_Id : System.Address :=
-          --      CUDA.Register_Fat_Binary (Wrapper_Id'Address);
- 
-          return
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => Handle_Id,
-              Object_Definition   => New_Occurrence_Of (RTE (RE_Address), Loc),
-              Expression          =>
-                Make_Function_Call (Loc,
-                  Name                   =>
-                    New_Occurrence_Of (RTE (RE_Register_Fat_Binary), Loc),
-                  Parameter_Associations => New_List (
-                    Make_Attribute_Reference (Loc,
-                      Prefix         =>
-                        New_Occurrence_Of (Wrapper_Id, Loc),
-                      Attribute_Name => Name_Address))));
-       end Build_Fat_Binary_Handle_Declaration;
- 
-       ------------------------------------------
-       -- Build_Fat_Binary_Wrapper_Declaration --
-       ------------------------------------------
- 
-       function Build_Fat_Binary_Wrapper_Declaration
-         (Wrapper_Id : Entity_Id;
-          Bin_Id     : Entity_Id) return Node_Id
-       is
-          Loc : constant Source_Ptr := Sloc (Wrapper_Id);
-       begin
-          return
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => Wrapper_Id,
-              Object_Definition   =>
-                New_Occurrence_Of (RTE (RE_Fatbin_Wrapper), Loc),
-              Expression          =>
-                Make_Aggregate (Loc,
-                  Expressions => New_List (
-                    Make_Integer_Literal (Loc, UI_From_Int (16#466243b1#)),
-                    Make_Integer_Literal (Loc, Uint_1),
-                    Make_Attribute_Reference (Loc,
-                      Prefix         => New_Occurrence_Of (Bin_Id, Loc),
-                      Attribute_Name => Name_Address),
-                    New_Occurrence_Of (RTE (RE_Null_Address), Loc))));
-       end Build_Fat_Binary_Wrapper_Declaration;
- 
-       -------------------------
-       -- Build_Import_Pragma --
-       -------------------------
- 
-       function Build_Import_Pragma
-         (Bin_Id    : Entity_Id;
-          Pack_Body : Node_Id) return Node_Id
-       is
-          Loc             : constant Source_Ptr := Sloc (Bin_Id);
-          External_Symbol : String_Id;
-       begin
-          Start_String;
-          Store_String_Chars
-            ("_binary_"
-             & Get_Name_String (Chars (Defining_Unit_Name (Pack_Body)))
-             & "_fatbin_start");
-          External_Symbol := End_String;
- 
-          return
-            Make_Pragma (Loc,
-              Pragma_Identifier            =>
-                Make_Identifier (Loc, Name_Import),
-              Pragma_Argument_Associations => New_List (
-                Make_Pragma_Argument_Association (Loc,
-                  Chars      => Name_Convention,
-                  Expression => Make_Identifier (Loc, Name_C)),
-                Make_Pragma_Argument_Association (Loc,
-                  Chars      => Name_Entity,
-                  Expression => New_Occurrence_Of (Bin_Id, Loc)),
-                Make_Pragma_Argument_Association (Loc,
-                  Chars      => Name_External_Name,
-                  Expression => Make_String_Literal (Loc, External_Symbol))));
-       end Build_Import_Pragma;
- 
-       -------------------------------------
-       -- Build_Kernel_Name_Declaration --
-       -------------------------------------
- 
-       function Build_Kernel_Name_Declaration
-         (Kernel : Entity_Id) return Node_Id
-       is
-          Loc : constant Source_Ptr := Sloc (Kernel);
- 
-          Package_Name : constant String :=
-            Get_Name_String (Chars (Scope (Kernel)));
- 
-          Symbol_Name : constant String := Get_Name_String (Chars (Kernel));
- 
-          Kernel_Name : String_Id;
-       begin
-          Start_String;
-          Store_String_Chars (Package_Name & "__" & Symbol_Name);
-          Kernel_Name := End_String;
- 
-          return
-            Make_Object_Declaration (Loc,
-              Defining_Identifier => Make_Temporary (Loc, 'C'),
-              Object_Definition   =>
-                New_Occurrence_Of (RTE (RE_Chars_Ptr), Loc),
-              Expression          =>
-                Make_Function_Call (Loc,
-                  Name                   =>
-                    New_Occurrence_Of (RTE (RE_New_Char_Array), Loc),
-                  Parameter_Associations => New_List (
-                    Make_String_Literal (Loc, Kernel_Name))));
-       end Build_Kernel_Name_Declaration;
- 
-       -----------------------------------
-       -- Build_Register_Procedure_Call --
-       -----------------------------------
- 
-       function Build_Register_Procedure_Call
-         (Loc         : Source_Ptr;
-          Bin         : Entity_Id;
-          Kernel      : Entity_Id;
-          Kernel_Name : Entity_Id) return Node_Id
-       is
-          Args : constant List_Id := New_List;
-       begin
-          --  First argument: the handle of the fat binary
- 
-          Append (New_Occurrence_Of (Bin, Loc), Args);
- 
-          --  Second argument: the host address of the function that is marked
-          --  with CUDA_Global.
- 
-          Append_To (Args,
-            Make_Attribute_Reference (Loc,
-              Prefix         => New_Occurrence_Of (Kernel, Loc),
-              Attribute_Name => Name_Address));
- 
-          --  Third argument, the name of the function on the host
- 
-          Append (New_Occurrence_Of (Kernel_Name, Loc), Args);
- 
-          --  Fourth argument, the name of the function on the device
- 
-          Append (New_Occurrence_Of (Kernel_Name, Loc), Args);
- 
-          --  Fith argument: -1. Meaning unknown - this has been copied from
-          --  LLVM.
- 
-          Append (Make_Integer_Literal (Loc, Uint_Minus_1), Args);
- 
-          --  Args 6, 7, 8, 9, 10: Null pointers. Again, meaning unknown
- 
-          for Arg_Count in 6 .. 10 loop
-             Append_To (Args, New_Occurrence_Of (RTE (RE_Null_Address), Loc));
-          end loop;
- 
-          --  Build the call to CUDARegisterFunction, passing the argument list
-          --  we just built.
- 
-          return
-            Make_Procedure_Call_Statement (Loc,
-              Name                   =>
-                New_Occurrence_Of (RTE (RE_Register_Function), Loc),
-              Parameter_Associations => Args);
-       end Build_Register_Procedure_Call;
- 
-       --  Local declarations
- 
-       Loc : constant Source_Ptr := Sloc (N);
- 
-       Spec_Id : constant Node_Id := Corresponding_Spec (N);
-       --  The specification of the package we're adding a cuda init func to
- 
-       Pack_Decls : constant List_Id := Declarations (N);
- 
-       CUDA_Node_List : constant Elist_Id := Get_CUDA_Kernels (Spec_Id);
-       --  CUDA nodes that belong to the package
- 
-       CUDA_Init_Func : Entity_Id;
-       --  Entity of the cuda init func
- 
-       Fat_Binary : Entity_Id;
-       --  Entity of the fat binary of N. Bound to said fat binary by a pragma
- 
-       Fat_Binary_Handle : Entity_Id;
-       --  Entity of the result of passing the fat binary wrapper to
-       --  CUDA.Register_Fat_Binary.
- 
-       Fat_Binary_Wrapper : Entity_Id;
-       --  Entity of a record that holds a bunch of magic numbers and a
-       --  reference to Fat_Binary.
- 
-       New_Stmt : Node_Id;
-       --  Node to store newly-created declarations
- 
-    --  Start of processing for Build_And_Insert_CUDA_Initialization
- 
-    begin
-       if CUDA_Node_List = No_Elist then
-          return;
-       end if;
- 
-       Fat_Binary := Make_Temporary (Loc, 'C');
-       New_Stmt := Build_Fat_Binary_Declaration (Fat_Binary);
-       Append_To (Pack_Decls, New_Stmt);
-       Analyze (New_Stmt);
- 
-       New_Stmt := Build_Import_Pragma (Fat_Binary, N);
-       Append_To (Pack_Decls, New_Stmt);
-       Analyze (New_Stmt);
- 
-       Fat_Binary_Wrapper := Make_Temporary (Loc, 'C');
-       New_Stmt :=
-         Build_Fat_Binary_Wrapper_Declaration
-           (Wrapper_Id => Fat_Binary_Wrapper,
-            Bin_Id     => Fat_Binary);
-       Append_To (Pack_Decls, New_Stmt);
-       Analyze (New_Stmt);
- 
-       Fat_Binary_Handle := Make_Temporary (Loc, 'C');
-       New_Stmt :=
-         Build_Fat_Binary_Handle_Declaration
-           (Fat_Binary_Handle, Fat_Binary_Wrapper);
-       Append_To (Pack_Decls, New_Stmt);
-       Analyze (New_Stmt);
- 
-       CUDA_Init_Func := Make_Temporary (Loc, 'C');
-       New_Stmt :=
-         Build_CUDA_Init_Proc
-           (Init_Id      => CUDA_Init_Func,
-            CUDA_Kernels => CUDA_Node_List,
-            Handle_Id    => Fat_Binary_Handle,
-            Pack_Decls   => Pack_Decls);
-       Append_To (Pack_Decls, New_Stmt);
-       Analyze (New_Stmt);
- 
-       New_Stmt :=
-         Make_Procedure_Call_Statement (Loc,
-           Name => New_Occurrence_Of (CUDA_Init_Func, Loc));
-       Append_To (Pack_Decls, New_Stmt);
-       Analyze (New_Stmt);
-    end Build_And_Insert_CUDA_Initialization;
- 
     ---------------------------------
     -- Remove_CUDA_Device_Entities --
     ---------------------------------
--- 240,245 ----
*************** package body GNAT_CUDA is
*** 745,751 ****
     begin
        pragma Assert (Debug_Flag_Underscore_C);
  
!       if Device_Entities = No_Elist then
           return;
        end if;
  
--- 253,259 ----
     begin
        pragma Assert (Debug_Flag_Underscore_C);
  
!       if No (Device_Entities) then
           return;
        end if;
  
*************** package body GNAT_CUDA is
*** 789,795 ****
        E       : Elist_Id)
     is
     begin
!       pragma Assert (Get_CUDA_Device_Entities (Pack_Id) = No_Elist);
        CUDA_Device_Entities_Table.Set (Pack_Id, E);
     end Set_CUDA_Device_Entities;
  
--- 297,303 ----
        E       : Elist_Id)
     is
     begin
!       pragma Assert (No (Get_CUDA_Device_Entities (Pack_Id)));
        CUDA_Device_Entities_Table.Set (Pack_Id, E);
     end Set_CUDA_Device_Entities;
  
*************** package body GNAT_CUDA is
*** 802,808 ****
        Kernels : Elist_Id)
     is
     begin
!       pragma Assert (Get_CUDA_Kernels (Pack_Id) = No_Elist);
        CUDA_Kernels_Table.Set (Pack_Id, Kernels);
     end Set_CUDA_Kernels;
  
--- 310,316 ----
        Kernels : Elist_Id)
     is
     begin
!       pragma Assert (No (Get_CUDA_Kernels (Pack_Id)));
        CUDA_Kernels_Table.Set (Pack_Id, Kernels);
     end Set_CUDA_Kernels;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat_cuda.ads gcc-13.1.0/gcc/ada/gnat_cuda.ads
*** gcc-12.2.0/gcc/ada/gnat_cuda.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat_cuda.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 43,56 ****
  --  compiling for the host, the frontend stores procedures marked with
  --  CUDA_Global in a hash table the key of which is the Node_Id of the package
  --  body that contains the CUDA_Global procedure. This is done in sem_prag.adb.
! --  Once the declarations of a package body have been analyzed, variable, type
! --  and procedure declarations necessary for the initialization of the CUDA
! --  runtime are appended to the package that contains the CUDA_Global
! --  procedure.
! --
! --  These declarations are used to register the CUDA kernel with the CUDA
! --  runtime when the program is launched. Registering a CUDA kernel with the
! --  CUDA runtime requires multiple function calls:
  --  - The first one registers the fat binary which corresponds to the package
  --    with the CUDA runtime.
  --  - Then, as many function calls as there are kernels in order to bind them
--- 43,55 ----
  --  compiling for the host, the frontend stores procedures marked with
  --  CUDA_Global in a hash table the key of which is the Node_Id of the package
  --  body that contains the CUDA_Global procedure. This is done in sem_prag.adb.
! --  When emitting an ALI file for a compilation unit, the frontend emits 'K'
! --  lines for each visible CUDA kernel (see Output_CUDA_Symbols in
! --  lib-writ.adb). This allows the binder to see all kernels in a program and
! --  emit code to register the kernels with the CUDA runtime.
! 
! --  Registering a CUDA kernel with the CUDA runtime requires multiple function
! --  calls:
  --  - The first one registers the fat binary which corresponds to the package
  --    with the CUDA runtime.
  --  - Then, as many function calls as there are kernels in order to bind them
***************
*** 58,66 ****
  --    fat binary.
  --  - The last call lets the CUDA runtime know that we are done initializing
  --    CUDA.
! --  Expansion of the CUDA_Global aspect is triggered in sem_ch7.adb, during
! --  analysis of the package. All of this expansion is performed in the
! --  Insert_CUDA_Initialization procedure defined in GNAT_CUDA.
  --
  --  Once a CUDA package is initialized, its kernels are ready to be used.
  --  Launching CUDA kernels is done by using the CUDA_Execute pragma. When
--- 57,63 ----
  --    fat binary.
  --  - The last call lets the CUDA runtime know that we are done initializing
  --    CUDA.
! --  All of that is performed by the code emitted by bindgen.adb.
  --
  --  Once a CUDA package is initialized, its kernels are ready to be used.
  --  Launching CUDA kernels is done by using the CUDA_Execute pragma. When
*************** package GNAT_CUDA is
*** 87,95 ****
  
     procedure Expand_CUDA_Package (N : Node_Id);
     --  When compiling for the host:
-    --  - Generate code to register kernels with the CUDA runtime and
-    --    post-process kernels.
     --  - Empty content of CUDA_Global procedures.
     --  - Remove declarations of CUDA_Device entities.
  
  end GNAT_CUDA;
--- 84,95 ----
  
     procedure Expand_CUDA_Package (N : Node_Id);
     --  When compiling for the host:
     --  - Empty content of CUDA_Global procedures.
     --  - Remove declarations of CUDA_Device entities.
  
+    function Get_CUDA_Kernels (Pack_Id : Entity_Id) return Elist_Id;
+    --  Returns an Elist of all procedures marked with pragma CUDA_Global that
+    --  are declared within package body Pack_Body. Returns No_Elist if Pack_Id
+    --  does not contain such procedures.
+ 
  end GNAT_CUDA;
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat_rm.texi gcc-13.1.0/gcc/ada/gnat_rm.texi
*** gcc-12.2.0/gcc/ada/gnat_rm.texi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat_rm.texi	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  @setfilename gnat_rm.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 4.3.1.@*
  @end ifinfo
  @settitle GNAT Reference Manual
  @defindex ge
--- 3,9 ----
  @setfilename gnat_rm.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 5.2.3.@*
  @end ifinfo
  @settitle GNAT Reference Manual
  @defindex ge
***************
*** 15,31 ****
  * gnat_rm: (gnat_rm.info). gnat_rm
  @end direntry
  
- @definfoenclose strong,`,'
- @definfoenclose emph,`,'
  @c %**end of header
  
  @copying
  @quotation
! GNAT Reference Manual , Jan 03, 2022
  
  AdaCore
  
! Copyright @copyright{} 2008-2022, Free Software Foundation
  @end quotation
  
  @end copying
--- 15,29 ----
  * gnat_rm: (gnat_rm.info). gnat_rm
  @end direntry
  
  @c %**end of header
  
  @copying
  @quotation
! GNAT Reference Manual , Dec 01, 2022
  
  AdaCore
  
! Copyright @copyright{} 2008-2023, Free Software Foundation
  @end quotation
  
  @end copying
*************** Copyright @copyright{} 2008-2022, Free S
*** 48,54 ****
  
  @c %**start of body
  @anchor{gnat_rm doc}@anchor{0}
! @emph{GNAT, The GNU Ada Development Environment}
  
  
  @include gcc-common.texi
--- 46,52 ----
  
  @c %**start of body
  @anchor{gnat_rm doc}@anchor{0}
! `GNAT, The GNU Ada Development Environment'
  
  
  @include gcc-common.texi
*************** Implementation Defined Pragmas
*** 104,109 ****
--- 102,108 ----
  * Pragma Ada_2005:: 
  * Pragma Ada_12:: 
  * Pragma Ada_2012:: 
+ * Pragma Ada_2022:: 
  * Pragma Aggregate_Individually_Assign:: 
  * Pragma Allow_Integer_Address:: 
  * Pragma Annotate:: 
*************** Implementation Defined Pragmas
*** 136,144 ****
  * Pragma CPP_Vtable:: 
  * Pragma CPU:: 
  * Pragma Deadline_Floor:: 
- * Pragma Default_Initial_Condition:: 
  * Pragma Debug:: 
  * Pragma Debug_Policy:: 
  * Pragma Default_Scalar_Storage_Order:: 
  * Pragma Default_Storage_Pool:: 
  * Pragma Depends:: 
--- 135,143 ----
  * Pragma CPP_Vtable:: 
  * Pragma CPU:: 
  * Pragma Deadline_Floor:: 
  * Pragma Debug:: 
  * Pragma Debug_Policy:: 
+ * Pragma Default_Initial_Condition:: 
  * Pragma Default_Scalar_Storage_Order:: 
  * Pragma Default_Storage_Pool:: 
  * Pragma Depends:: 
*************** Implementation Defined Pragmas
*** 216,223 ****
  * Pragma Ordered:: 
  * Pragma Overflow_Mode:: 
  * Pragma Overriding_Renamings:: 
- * Pragma Partition_Elaboration_Policy:: 
  * Pragma Part_Of:: 
  * Pragma Passive:: 
  * Pragma Persistent_BSS:: 
  * Pragma Post:: 
--- 215,222 ----
  * Pragma Ordered:: 
  * Pragma Overflow_Mode:: 
  * Pragma Overriding_Renamings:: 
  * Pragma Part_Of:: 
+ * Pragma Partition_Elaboration_Policy:: 
  * Pragma Passive:: 
  * Pragma Persistent_BSS:: 
  * Pragma Post:: 
*************** Implementation Defined Pragmas
*** 285,292 ****
  * Pragma Unreferenced_Objects:: 
  * Pragma Unreserve_All_Interrupts:: 
  * Pragma Unsuppress:: 
- * Pragma Use_VADS_Size:: 
  * Pragma Unused:: 
  * Pragma Validity_Checks:: 
  * Pragma Volatile:: 
  * Pragma Volatile_Full_Access:: 
--- 284,291 ----
  * Pragma Unreferenced_Objects:: 
  * Pragma Unreserve_All_Interrupts:: 
  * Pragma Unsuppress:: 
  * Pragma Unused:: 
+ * Pragma Use_VADS_Size:: 
  * Pragma Validity_Checks:: 
  * Pragma Volatile:: 
  * Pragma Volatile_Full_Access:: 
*************** Implementation Defined Attributes
*** 399,405 ****
  * Attribute Iterable:: 
  * Attribute Large:: 
  * Attribute Library_Level:: 
- * Attribute Lock_Free:: 
  * Attribute Loop_Entry:: 
  * Attribute Machine_Size:: 
  * Attribute Mantissa:: 
--- 398,403 ----
*************** Implementation Defined Attributes
*** 435,441 ****
  * Attribute Universal_Literal_String:: 
  * Attribute Unrestricted_Access:: 
  * Attribute Update:: 
! * Attribute Valid_Image:: 
  * Attribute Valid_Scalars:: 
  * Attribute VADS_Size:: 
  * Attribute Value_Size:: 
--- 433,439 ----
  * Attribute Universal_Literal_String:: 
  * Attribute Unrestricted_Access:: 
  * Attribute Update:: 
! * Attribute Valid_Value:: 
  * Attribute Valid_Scalars:: 
  * Attribute VADS_Size:: 
  * Attribute Value_Size:: 
*************** Partition-Wide Restrictions
*** 491,496 ****
--- 489,495 ----
  * No_IO:: 
  * No_Local_Allocators:: 
  * No_Local_Protected_Objects:: 
+ * No_Local_Tagged_Types:: 
  * No_Local_Timing_Events:: 
  * No_Long_Long_Integers:: 
  * No_Multiple_Elaboration:: 
*************** The GNAT Library
*** 691,709 ****
  
  * Ada.Characters.Latin_9 (a-chlat9.ads): Ada Characters Latin_9 a-chlat9 ads. 
  * Ada.Characters.Wide_Latin_1 (a-cwila1.ads): Ada Characters Wide_Latin_1 a-cwila1 ads. 
! * Ada.Characters.Wide_Latin_9 (a-cwila1.ads): Ada Characters Wide_Latin_9 a-cwila1 ads. 
  * Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads): Ada Characters Wide_Wide_Latin_1 a-chzla1 ads. 
  * Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads): Ada Characters Wide_Wide_Latin_9 a-chzla9 ads. 
- * Ada.Containers.Formal_Doubly_Linked_Lists (a-cfdlli.ads): Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads. 
- * Ada.Containers.Formal_Hashed_Maps (a-cfhama.ads): Ada Containers Formal_Hashed_Maps a-cfhama ads. 
- * Ada.Containers.Formal_Hashed_Sets (a-cfhase.ads): Ada Containers Formal_Hashed_Sets a-cfhase ads. 
- * Ada.Containers.Formal_Ordered_Maps (a-cforma.ads): Ada Containers Formal_Ordered_Maps a-cforma ads. 
- * Ada.Containers.Formal_Ordered_Sets (a-cforse.ads): Ada Containers Formal_Ordered_Sets a-cforse ads. 
- * Ada.Containers.Formal_Vectors (a-cofove.ads): Ada Containers Formal_Vectors a-cofove ads. 
- * Ada.Containers.Formal_Indefinite_Vectors (a-cfinve.ads): Ada Containers Formal_Indefinite_Vectors a-cfinve ads. 
- * Ada.Containers.Functional_Vectors (a-cofuve.ads): Ada Containers Functional_Vectors a-cofuve ads. 
- * Ada.Containers.Functional_Sets (a-cofuse.ads): Ada Containers Functional_Sets a-cofuse ads. 
- * Ada.Containers.Functional_Maps (a-cofuma.ads): Ada Containers Functional_Maps a-cofuma ads. 
  * Ada.Containers.Bounded_Holders (a-coboho.ads): Ada Containers Bounded_Holders a-coboho ads. 
  * Ada.Command_Line.Environment (a-colien.ads): Ada Command_Line Environment a-colien ads. 
  * Ada.Command_Line.Remove (a-colire.ads): Ada Command_Line Remove a-colire ads. 
--- 690,698 ----
  
  * Ada.Characters.Latin_9 (a-chlat9.ads): Ada Characters Latin_9 a-chlat9 ads. 
  * Ada.Characters.Wide_Latin_1 (a-cwila1.ads): Ada Characters Wide_Latin_1 a-cwila1 ads. 
! * Ada.Characters.Wide_Latin_9 (a-cwila9.ads): Ada Characters Wide_Latin_9 a-cwila9 ads. 
  * Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads): Ada Characters Wide_Wide_Latin_1 a-chzla1 ads. 
  * Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads): Ada Characters Wide_Wide_Latin_9 a-chzla9 ads. 
  * Ada.Containers.Bounded_Holders (a-coboho.ads): Ada Containers Bounded_Holders a-coboho ads. 
  * Ada.Command_Line.Environment (a-colien.ads): Ada Command_Line Environment a-colien ads. 
  * Ada.Command_Line.Remove (a-colire.ads): Ada Command_Line Remove a-colire ads. 
*************** The GNAT Library
*** 733,738 ****
--- 722,728 ----
  * GNAT.Altivec.Vector_Views (g-alvevi.ads): GNAT Altivec Vector_Views g-alvevi ads. 
  * GNAT.Array_Split (g-arrspl.ads): GNAT Array_Split g-arrspl ads. 
  * GNAT.AWK (g-awk.ads): GNAT AWK g-awk ads. 
+ * GNAT.Binary_Search (g-binsea.ads): GNAT Binary_Search g-binsea ads. 
  * GNAT.Bind_Environment (g-binenv.ads): GNAT Bind_Environment g-binenv ads. 
  * GNAT.Branch_Prediction (g-brapre.ads): GNAT Branch_Prediction g-brapre ads. 
  * GNAT.Bounded_Buffers (g-boubuf.ads): GNAT Bounded_Buffers g-boubuf ads. 
*************** The GNAT Library
*** 770,775 ****
--- 760,766 ----
  * GNAT.Expect.TTY (g-exptty.ads): GNAT Expect TTY g-exptty ads. 
  * GNAT.Float_Control (g-flocon.ads): GNAT Float_Control g-flocon ads. 
  * GNAT.Formatted_String (g-forstr.ads): GNAT Formatted_String g-forstr ads. 
+ * GNAT.Generic_Fast_Math_Functions (g-gfmafu.ads): GNAT Generic_Fast_Math_Functions g-gfmafu ads. 
  * GNAT.Heap_Sort (g-heasor.ads): GNAT Heap_Sort g-heasor ads. 
  * GNAT.Heap_Sort_A (g-hesora.ads): GNAT Heap_Sort_A g-hesora ads. 
  * GNAT.Heap_Sort_G (g-hesorg.ads): GNAT Heap_Sort_G g-hesorg ads. 
*************** The GNAT Library
*** 818,825 ****
  * GNAT.Threads (g-thread.ads): GNAT Threads g-thread ads. 
  * GNAT.Traceback (g-traceb.ads): GNAT Traceback g-traceb ads. 
  * GNAT.Traceback.Symbolic (g-trasym.ads): GNAT Traceback Symbolic g-trasym ads. 
! * GNAT.UTF_32 (g-table.ads): GNAT UTF_32 g-table ads. 
! * GNAT.Wide_Spelling_Checker (g-u3spch.ads): GNAT Wide_Spelling_Checker g-u3spch ads. 
  * GNAT.Wide_Spelling_Checker (g-wispch.ads): GNAT Wide_Spelling_Checker g-wispch ads. 
  * GNAT.Wide_String_Split (g-wistsp.ads): GNAT Wide_String_Split g-wistsp ads. 
  * GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads): GNAT Wide_Wide_Spelling_Checker g-zspche ads. 
--- 809,816 ----
  * GNAT.Threads (g-thread.ads): GNAT Threads g-thread ads. 
  * GNAT.Traceback (g-traceb.ads): GNAT Traceback g-traceb ads. 
  * GNAT.Traceback.Symbolic (g-trasym.ads): GNAT Traceback Symbolic g-trasym ads. 
! * GNAT.UTF_32 (g-utf_32.ads): GNAT UTF_32 g-utf_32 ads. 
! * GNAT.UTF_32_Spelling_Checker (g-u3spch.ads): GNAT UTF_32_Spelling_Checker g-u3spch ads. 
  * GNAT.Wide_Spelling_Checker (g-wispch.ads): GNAT Wide_Spelling_Checker g-wispch ads. 
  * GNAT.Wide_String_Split (g-wistsp.ads): GNAT Wide_String_Split g-wistsp ads. 
  * GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads): GNAT Wide_Wide_Spelling_Checker g-zspche ads. 
*************** Security Hardening Features
*** 883,888 ****
--- 874,881 ----
  * Register Scrubbing:: 
  * Stack Scrubbing:: 
  * Hardened Conditionals:: 
+ * Hardened Booleans:: 
+ * Control Flow Redundancy:: 
  
  Obsolescent Features
  
*************** invoked in Ada 83 compatibility mode.
*** 936,942 ****
  By default, GNAT assumes Ada 2012,
  but you can override with a compiler switch
  to explicitly specify the language version.
! (Please refer to the @emph{GNAT User’s Guide} for details on these switches.)
  Throughout this manual, references to ‘Ada’ without a year suffix
  apply to all the Ada versions of the language.
  
--- 929,935 ----
  By default, GNAT assumes Ada 2012,
  but you can override with a compiler switch
  to explicitly specify the language version.
! (Please refer to the `GNAT User’s Guide' for details on these switches.)
  Throughout this manual, references to ‘Ada’ without a year suffix
  apply to all the Ada versions of the language.
  
*************** and @code{classes}.
*** 1102,1108 ****
  @code{Variables}
  
  @item 
! @emph{Emphasis}
  
  @item 
  [optional information or parameters]
--- 1095,1101 ----
  @code{Variables}
  
  @item 
! `Emphasis'
  
  @item 
  [optional information or parameters]
*************** consideration, the use of these pragmas
*** 1194,1199 ****
--- 1187,1193 ----
  * Pragma Ada_2005:: 
  * Pragma Ada_12:: 
  * Pragma Ada_2012:: 
+ * Pragma Ada_2022:: 
  * Pragma Aggregate_Individually_Assign:: 
  * Pragma Allow_Integer_Address:: 
  * Pragma Annotate:: 
*************** consideration, the use of these pragmas
*** 1226,1234 ****
  * Pragma CPP_Vtable:: 
  * Pragma CPU:: 
  * Pragma Deadline_Floor:: 
- * Pragma Default_Initial_Condition:: 
  * Pragma Debug:: 
  * Pragma Debug_Policy:: 
  * Pragma Default_Scalar_Storage_Order:: 
  * Pragma Default_Storage_Pool:: 
  * Pragma Depends:: 
--- 1220,1228 ----
  * Pragma CPP_Vtable:: 
  * Pragma CPU:: 
  * Pragma Deadline_Floor:: 
  * Pragma Debug:: 
  * Pragma Debug_Policy:: 
+ * Pragma Default_Initial_Condition:: 
  * Pragma Default_Scalar_Storage_Order:: 
  * Pragma Default_Storage_Pool:: 
  * Pragma Depends:: 
*************** consideration, the use of these pragmas
*** 1306,1313 ****
  * Pragma Ordered:: 
  * Pragma Overflow_Mode:: 
  * Pragma Overriding_Renamings:: 
- * Pragma Partition_Elaboration_Policy:: 
  * Pragma Part_Of:: 
  * Pragma Passive:: 
  * Pragma Persistent_BSS:: 
  * Pragma Post:: 
--- 1300,1307 ----
  * Pragma Ordered:: 
  * Pragma Overflow_Mode:: 
  * Pragma Overriding_Renamings:: 
  * Pragma Part_Of:: 
+ * Pragma Partition_Elaboration_Policy:: 
  * Pragma Passive:: 
  * Pragma Persistent_BSS:: 
  * Pragma Post:: 
*************** consideration, the use of these pragmas
*** 1375,1382 ****
  * Pragma Unreferenced_Objects:: 
  * Pragma Unreserve_All_Interrupts:: 
  * Pragma Unsuppress:: 
- * Pragma Use_VADS_Size:: 
  * Pragma Unused:: 
  * Pragma Validity_Checks:: 
  * Pragma Volatile:: 
  * Pragma Volatile_Full_Access:: 
--- 1369,1376 ----
  * Pragma Unreferenced_Objects:: 
  * Pragma Unreserve_All_Interrupts:: 
  * Pragma Unsuppress:: 
  * Pragma Unused:: 
+ * Pragma Use_VADS_Size:: 
  * Pragma Validity_Checks:: 
  * Pragma Volatile:: 
  * Pragma Volatile_Full_Access:: 
*************** EXTERNAL_PROPERTY_LIST ::=
*** 1457,1467 ****
    | (EXTERNAL_PROPERTY @{, EXTERNAL_PROPERTY@} )
  
  EXTERNAL_PROPERTY ::=
!     Async_Readers    [=> boolean_EXPRESSION]
!   | Async_Writers    [=> boolean_EXPRESSION]
!   | Effective_Reads  [=> boolean_EXPRESSION]
!   | Effective_Writes [=> boolean_EXPRESSION]
!     others            => boolean_EXPRESSION
  
  STATE_NAME ::= defining_identifier
  
--- 1451,1461 ----
    | (EXTERNAL_PROPERTY @{, EXTERNAL_PROPERTY@} )
  
  EXTERNAL_PROPERTY ::=
!     Async_Readers    [=> static_boolean_EXPRESSION]
!   | Async_Writers    [=> static_boolean_EXPRESSION]
!   | Effective_Reads  [=> static_boolean_EXPRESSION]
!   | Effective_Writes [=> static_boolean_EXPRESSION]
!     others            => static_boolean_EXPRESSION
  
  STATE_NAME ::= defining_identifier
  
*************** extra subprograms marked this way from g
*** 1593,1599 ****
  otherwise legal pre-Ada_2012 programs. The one argument form is
  intended for exclusive use in the GNAT run-time library.
  
! @node Pragma Ada_2012,Pragma Aggregate_Individually_Assign,Pragma Ada_12,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{24}
  @section Pragma Ada_2012
  
--- 1587,1593 ----
  otherwise legal pre-Ada_2012 programs. The one argument form is
  intended for exclusive use in the GNAT run-time library.
  
! @node Pragma Ada_2012,Pragma Ada_2022,Pragma Ada_12,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2012}@anchor{24}
  @section Pragma Ada_2012
  
*************** pragma Ada_2012;
*** 1607,1614 ****
  This configuration pragma is a synonym for pragma Ada_12 and has the
  same syntax and effect.
  
! @node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2012,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{25}
  @section Pragma Aggregate_Individually_Assign
  
  
--- 1601,1639 ----
  This configuration pragma is a synonym for pragma Ada_12 and has the
  same syntax and effect.
  
! @node Pragma Ada_2022,Pragma Aggregate_Individually_Assign,Pragma Ada_2012,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ada-2022}@anchor{25}
! @section Pragma Ada_2022
! 
! 
! Syntax:
! 
! @example
! pragma Ada_2022;
! pragma Ada_2022 (local_NAME);
! @end example
! 
! A configuration pragma that establishes Ada 2022 mode for the unit to which
! it applies, regardless of the mode set by the command line switches.
! This mode is set automatically for the @code{Ada} and @code{System}
! packages and their children, so you need not specify it in these
! contexts.  This pragma is useful when writing a reusable component that
! itself uses Ada 2022 features, but which is intended to be usable from
! Ada 83, Ada 95, Ada 2005 or Ada 2012 programs.
! 
! The one argument form, which is not a configuration pragma,
! is used for managing the transition from Ada
! 2012 to Ada 2022 in the run-time library. If an entity is marked
! as Ada_2022 only, then referencing the entity in any pre-Ada_2022
! mode will generate a warning. In addition, in any pre-Ada_2012
! mode, a preference rule is established which does not choose
! such an entity unless it is unambiguously specified. This avoids
! extra subprograms marked this way from generating ambiguities in
! otherwise legal pre-Ada_2022 programs. The one argument form is
! intended for exclusive use in the GNAT run-time library.
! 
! @node Pragma Aggregate_Individually_Assign,Pragma Allow_Integer_Address,Pragma Ada_2022,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-aggregate-individually-assign}@anchor{26}
  @section Pragma Aggregate_Individually_Assign
  
  
*************** this behavior so that record aggregates
*** 1624,1630 ****
  individual assignment statements.
  
  @node Pragma Allow_Integer_Address,Pragma Annotate,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{26}
  @section Pragma Allow_Integer_Address
  
  
--- 1649,1655 ----
  individual assignment statements.
  
  @node Pragma Allow_Integer_Address,Pragma Annotate,Pragma Aggregate_Individually_Assign,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-allow-integer-address}@anchor{27}
  @section Pragma Allow_Integer_Address
  
  
*************** rather than rejected to allow common set
*** 1674,1680 ****
  in the two situations.
  
  @node Pragma Annotate,Pragma Assert,Pragma Allow_Integer_Address,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{27}@anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{28}
  @section Pragma Annotate
  
  
--- 1699,1705 ----
  in the two situations.
  
  @node Pragma Annotate,Pragma Assert,Pragma Allow_Integer_Address,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id3}@anchor{28}@anchor{gnat_rm/implementation_defined_pragmas pragma-annotate}@anchor{29}
  @section Pragma Annotate
  
  
*************** affect the compilation process in any wa
*** 1709,1715 ****
  a configuration pragma.
  
  @node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{29}
  @section Pragma Assert
  
  
--- 1734,1740 ----
  a configuration pragma.
  
  @node Pragma Assert,Pragma Assert_And_Cut,Pragma Annotate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert}@anchor{2a}
  @section Pragma Assert
  
  
*************** type of the expression is either @code{S
*** 1745,1751 ****
  from this standard type.
  
  Assert checks can be either checked or ignored. By default they are ignored.
! They will be checked if either the command line switch @emph{-gnata} is
  used, or if an @code{Assertion_Policy} or @code{Check_Policy} pragma is used
  to enable @code{Assert_Checks}.
  
--- 1770,1776 ----
  from this standard type.
  
  Assert checks can be either checked or ignored. By default they are ignored.
! They will be checked if either the command line switch `-gnata' is
  used, or if an @code{Assertion_Policy} or @code{Check_Policy} pragma is used
  to enable @code{Assert_Checks}.
  
*************** of Ada, and the DISABLE policy is an imp
*** 1775,1781 ****
  addition.
  
  @node Pragma Assert_And_Cut,Pragma Assertion_Policy,Pragma Assert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2a}
  @section Pragma Assert_And_Cut
  
  
--- 1800,1806 ----
  addition.
  
  @node Pragma Assert_And_Cut,Pragma Assertion_Policy,Pragma Assert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assert-and-cut}@anchor{2b}
  @section Pragma Assert_And_Cut
  
  
*************** formal verification. The pragma also ser
*** 1802,1808 ****
  documentation.
  
  @node Pragma Assertion_Policy,Pragma Assume,Pragma Assert_And_Cut,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2b}
  @section Pragma Assertion_Policy
  
  
--- 1827,1833 ----
  documentation.
  
  @node Pragma Assertion_Policy,Pragma Assume,Pragma Assert_And_Cut,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assertion-policy}@anchor{2c}
  @section Pragma Assertion_Policy
  
  
*************** applies to both the @code{Precondition}
*** 1861,1876 ****
  and the aspect @code{Precondition}. Note that the identifiers for
  pragmas Pre_Class and Post_Class are Pre’Class and Post’Class (not
  Pre_Class and Post_Class), since these pragmas are intended to be
! identical to the corresponding aspects).
  
  If the policy is @code{CHECK}, then assertions are enabled, i.e.
  the corresponding pragma or aspect is activated.
  If the policy is @code{IGNORE}, then assertions are ignored, i.e.
  the corresponding pragma or aspect is deactivated.
! This pragma overrides the effect of the @emph{-gnata} switch on the
  command line.
  If the policy is @code{SUPPRESSIBLE}, then assertions are enabled by default,
! however, if the @emph{-gnatp} switch is specified all assertions are ignored.
  
  The implementation defined policy @code{DISABLE} is like
  @code{IGNORE} except that it completely disables semantic
--- 1886,1901 ----
  and the aspect @code{Precondition}. Note that the identifiers for
  pragmas Pre_Class and Post_Class are Pre’Class and Post’Class (not
  Pre_Class and Post_Class), since these pragmas are intended to be
! identical to the corresponding aspects.
  
  If the policy is @code{CHECK}, then assertions are enabled, i.e.
  the corresponding pragma or aspect is activated.
  If the policy is @code{IGNORE}, then assertions are ignored, i.e.
  the corresponding pragma or aspect is deactivated.
! This pragma overrides the effect of the `-gnata' switch on the
  command line.
  If the policy is @code{SUPPRESSIBLE}, then assertions are enabled by default,
! however, if the `-gnatp' switch is specified all assertions are ignored.
  
  The implementation defined policy @code{DISABLE} is like
  @code{IGNORE} except that it completely disables semantic
*************** applies to @code{Assert}, @code{Assert_A
*** 1889,1895 ****
  @code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
  
  @node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{2c}
  @section Pragma Assume
  
  
--- 1914,1920 ----
  @code{Assume}, @code{Loop_Invariant}, and @code{Loop_Variant}.
  
  @node Pragma Assume,Pragma Assume_No_Invalid_Values,Pragma Assertion_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume}@anchor{2d}
  @section Pragma Assume
  
  
*************** is met, and documents the need to ensure
*** 1923,1929 ****
  reference to information outside the program.
  
  @node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{2d}
  @section Pragma Assume_No_Invalid_Values
  
  
--- 1948,1954 ----
  reference to information outside the program.
  
  @node Pragma Assume_No_Invalid_Values,Pragma Async_Readers,Pragma Assume,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-assume-no-invalid-values}@anchor{2e}
  @section Pragma Assume_No_Invalid_Values
  
  
*************** is erroneous so there are no guarantees
*** 1976,2010 ****
  case, and it is recommended that these two options not be used together.
  
  @node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{2e}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{2f}
  @section Pragma Async_Readers
  
  
  Syntax:
  
  @example
! pragma Async_Readers [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Async_Readers} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{30}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{31}
  @section Pragma Async_Writers
  
  
  Syntax:
  
  @example
! pragma Async_Writers [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Async_Writers} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{32}
  @section Pragma Attribute_Definition
  
  
--- 2001,2035 ----
  case, and it is recommended that these two options not be used together.
  
  @node Pragma Async_Readers,Pragma Async_Writers,Pragma Assume_No_Invalid_Values,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id4}@anchor{2f}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-readers}@anchor{30}
  @section Pragma Async_Readers
  
  
  Syntax:
  
  @example
! pragma Async_Readers [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Async_Readers} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Async_Writers,Pragma Attribute_Definition,Pragma Async_Readers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id5}@anchor{31}@anchor{gnat_rm/implementation_defined_pragmas pragma-async-writers}@anchor{32}
  @section Pragma Async_Writers
  
  
  Syntax:
  
  @example
! pragma Async_Writers [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Async_Writers} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Attribute_Definition,Pragma C_Pass_By_Copy,Pragma Async_Writers,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-attribute-definition}@anchor{33}
  @section Pragma Attribute_Definition
  
  
*************** code to be written that takes advantage
*** 2030,2036 ****
  compilable with earlier compilers.
  
  @node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{33}
  @section Pragma C_Pass_By_Copy
  
  
--- 2055,2061 ----
  compilable with earlier compilers.
  
  @node Pragma C_Pass_By_Copy,Pragma Check,Pragma Attribute_Definition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-c-pass-by-copy}@anchor{34}
  @section Pragma C_Pass_By_Copy
  
  
*************** You can also pass records by copy by spe
*** 2074,2080 ****
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{34}
  @section Pragma Check
  
  
--- 2099,2105 ----
  passing mechanisms on a parameter by parameter basis.
  
  @node Pragma Check,Pragma Check_Float_Overflow,Pragma C_Pass_By_Copy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check}@anchor{35}
  @section Pragma Check
  
  
*************** be independently controlled. The identif
*** 2104,2110 ****
  refers to the normal set of pragma @code{Assert} statements.
  
  Checks introduced by this pragma are normally deactivated by default. They can
! be activated either by the command line option @emph{-gnata}, which turns on
  all checks, or individually controlled using pragma @code{Check_Policy}.
  
  The identifiers @code{Assertions} and @code{Statement_Assertions} are not
--- 2129,2135 ----
  refers to the normal set of pragma @code{Assert} statements.
  
  Checks introduced by this pragma are normally deactivated by default. They can
! be activated either by the command line option `-gnata', which turns on
  all checks, or individually controlled using pragma @code{Check_Policy}.
  
  The identifiers @code{Assertions} and @code{Statement_Assertions} are not
*************** of these identifiers in @code{Assertion_
*** 2113,2119 ****
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{35}
  @section Pragma Check_Float_Overflow
  
  
--- 2138,2144 ----
  pragmas, where they are used to refer to sets of assertions.
  
  @node Pragma Check_Float_Overflow,Pragma Check_Name,Pragma Check,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-float-overflow}@anchor{36}
  @section Pragma Check_Float_Overflow
  
  
*************** pragma Check_Float_Overflow;
*** 2127,2133 ****
  
  In Ada, the predefined floating-point types (@code{Short_Float},
  @code{Float}, @code{Long_Float}, @code{Long_Long_Float}) are
! defined to be @emph{unconstrained}. This means that even though each
  has a well-defined base range, an operation that delivers a result
  outside this base range is not required to raise an exception.
  This implementation permission accommodates the notion
--- 2152,2158 ----
  
  In Ada, the predefined floating-point types (@code{Short_Float},
  @code{Float}, @code{Long_Float}, @code{Long_Long_Float}) are
! defined to be `unconstrained'. This means that even though each
  has a well-defined base range, an operation that delivers a result
  outside this base range is not required to raise an exception.
  This implementation permission accommodates the notion
*************** will be generated. The @code{Constraint_
*** 2166,2175 ****
  exception is raised if the result is out of range.
  
  This mode can also be set by use of the compiler
! switch @emph{-gnateF}.
  
  @node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{36}
  @section Pragma Check_Name
  
  
--- 2191,2200 ----
  exception is raised if the result is out of range.
  
  This mode can also be set by use of the compiler
! switch `-gnateF'.
  
  @node Pragma Check_Name,Pragma Check_Policy,Pragma Check_Float_Overflow,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-name}@anchor{37}
  @section Pragma Check_Name
  
  
*************** Check names introduced by this pragma ar
*** 2205,2211 ****
  switches (in particular -gnatp) in the usual manner.
  
  @node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{37}
  @section Pragma Check_Policy
  
  
--- 2230,2236 ----
  switches (in particular -gnatp) in the usual manner.
  
  @node Pragma Check_Policy,Pragma Comment,Pragma Check_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-check-policy}@anchor{38}
  @section Pragma Check_Policy
  
  
*************** is given, then subsequent @code{Check} p
*** 2276,2282 ****
  The check policy is @code{OFF} to turn off corresponding checks, and @code{ON}
  to turn on corresponding checks. The default for a set of checks for which no
  @code{Check_Policy} is given is @code{OFF} unless the compiler switch
! @emph{-gnata} is given, which turns on all checks by default.
  
  The check policy settings @code{CHECK} and @code{IGNORE} are recognized
  as synonyms for @code{ON} and @code{OFF}. These synonyms are provided for
--- 2301,2307 ----
  The check policy is @code{OFF} to turn off corresponding checks, and @code{ON}
  to turn on corresponding checks. The default for a set of checks for which no
  @code{Check_Policy} is given is @code{OFF} unless the compiler switch
! `-gnata' is given, which turns on all checks by default.
  
  The check policy settings @code{CHECK} and @code{IGNORE} are recognized
  as synonyms for @code{ON} and @code{OFF}. These synonyms are provided for
*************** policy setting @code{DISABLE} causes the
*** 2285,2291 ****
  @code{Check} pragma to be completely ignored and not analyzed.
  
  @node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{38}
  @section Pragma Comment
  
  
--- 2310,2316 ----
  @code{Check} pragma to be completely ignored and not analyzed.
  
  @node Pragma Comment,Pragma Common_Object,Pragma Check_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-comment}@anchor{39}
  @section Pragma Comment
  
  
*************** anywhere in the main source unit), and i
*** 2304,2310 ****
  is used, all comments are retained.
  
  @node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{39}
  @section Pragma Common_Object
  
  
--- 2329,2335 ----
  is used, all comments are retained.
  
  @node Pragma Common_Object,Pragma Compile_Time_Error,Pragma Comment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-common-object}@anchor{3a}
  @section Pragma Common_Object
  
  
*************** indicating that the necessary attribute
*** 2336,2342 ****
  pragma is not available.
  
  @node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas compile-time-error}@anchor{3a}@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{3b}
  @section Pragma Compile_Time_Error
  
  
--- 2361,2367 ----
  pragma is not available.
  
  @node Pragma Compile_Time_Error,Pragma Compile_Time_Warning,Pragma Common_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas compile-time-error}@anchor{3b}@anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-error}@anchor{3c}
  @section Pragma Compile_Time_Error
  
  
*************** the value given as the second argument.
*** 2363,2369 ****
  embedded ASCII.LF characters to break the message into multiple lines.
  
  @node Pragma Compile_Time_Warning,Pragma Complete_Representation,Pragma Compile_Time_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3c}
  @section Pragma Compile_Time_Warning
  
  
--- 2388,2394 ----
  embedded ASCII.LF characters to break the message into multiple lines.
  
  @node Pragma Compile_Time_Warning,Pragma Complete_Representation,Pragma Compile_Time_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-compile-time-warning}@anchor{3d}
  @section Pragma Compile_Time_Warning
  
  
*************** pragma Compile_Time_Warning
*** 2375,2381 ****
  @end example
  
  Same as pragma Compile_Time_Error, except a warning is issued instead
! of an error message. If switch @emph{-gnatw_C} is used, a warning is only issued
  if the value of the expression is known to be True at compile time, not when
  the value of the expression is not known at compile time.
  Note that if this pragma is used in a package that
--- 2400,2406 ----
  @end example
  
  Same as pragma Compile_Time_Error, except a warning is issued instead
! of an error message. If switch `-gnatw_C' is used, a warning is only issued
  if the value of the expression is known to be True at compile time, not when
  the value of the expression is not known at compile time.
  Note that if this pragma is used in a package that
*************** of formal parameters are tested, and war
*** 2388,2400 ****
  with a first parameter of True is to warn a client about use of a package,
  for example that it is not fully implemented.
  
! In previous versions of the compiler, combining @emph{-gnatwe} with
  Compile_Time_Warning resulted in a fatal error. Now the compiler always emits
! a warning. You can use @ref{3a,,Pragma Compile_Time_Error} to force the generation of
  an error.
  
  @node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compile_Time_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{3d}
  @section Pragma Complete_Representation
  
  
--- 2413,2425 ----
  with a first parameter of True is to warn a client about use of a package,
  for example that it is not fully implemented.
  
! In previous versions of the compiler, combining `-gnatwe' with
  Compile_Time_Warning resulted in a fatal error. Now the compiler always emits
! a warning. You can use @ref{3b,,Pragma Compile_Time_Error} to force the generation of
  an error.
  
  @node Pragma Complete_Representation,Pragma Complex_Representation,Pragma Compile_Time_Warning,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complete-representation}@anchor{3e}
  @section Pragma Complete_Representation
  
  
*************** complete, and that this invariant is mai
*** 2413,2419 ****
  added to the record in the future.
  
  @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{3e}
  @section Pragma Complex_Representation
  
  
--- 2438,2444 ----
  added to the record in the future.
  
  @node Pragma Complex_Representation,Pragma Component_Alignment,Pragma Complete_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-complex-representation}@anchor{3f}
  @section Pragma Complex_Representation
  
  
*************** records by pointer, and the use of this
*** 2435,2441 ****
  this type in floating-point registers.
  
  @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{3f}
  @section Pragma Component_Alignment
  
  
--- 2460,2466 ----
  this type in floating-point registers.
  
  @node Pragma Component_Alignment,Pragma Constant_After_Elaboration,Pragma Complex_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-component-alignment}@anchor{40}
  @section Pragma Component_Alignment
  
  
*************** The meaning of the @code{Form} argument
*** 2468,2474 ****
  
  @table @asis
  
! @item @emph{Component_Size}
  
  Aligns scalar components and subcomponents of the array or record type
  on boundaries appropriate to their inherent size (naturally
--- 2493,2499 ----
  
  @table @asis
  
! @item `Component_Size'
  
  Aligns scalar components and subcomponents of the array or record type
  on boundaries appropriate to their inherent size (naturally
*************** machines except the VAX.
*** 2480,2486 ****
  
  @geindex Component_Size_4 (in pragma Component_Alignment)
  
! @item @emph{Component_Size_4}
  
  Naturally aligns components with a size of four or fewer
  bytes.  Components that are larger than 4 bytes are placed on the next
--- 2505,2511 ----
  
  @geindex Component_Size_4 (in pragma Component_Alignment)
  
! @item `Component_Size_4'
  
  Naturally aligns components with a size of four or fewer
  bytes.  Components that are larger than 4 bytes are placed on the next
*************** bytes.  Components that are larger than
*** 2488,2494 ****
  
  @geindex Storage_Unit (in pragma Component_Alignment)
  
! @item @emph{Storage_Unit}
  
  Specifies that array or record components are byte aligned, i.e.,
  aligned on boundaries determined by the value of the constant
--- 2513,2519 ----
  
  @geindex Storage_Unit (in pragma Component_Alignment)
  
! @item `Storage_Unit'
  
  Specifies that array or record components are byte aligned, i.e.,
  aligned on boundaries determined by the value of the constant
*************** aligned on boundaries determined by the
*** 2496,2502 ****
  
  @geindex Default (in pragma Component_Alignment)
  
! @item @emph{Default}
  
  Specifies that array or record components are aligned on default
  boundaries, appropriate to the underlying hardware or operating system or
--- 2521,2527 ----
  
  @geindex Default (in pragma Component_Alignment)
  
! @item `Default'
  
  Specifies that array or record components are aligned on default
  boundaries, appropriate to the underlying hardware or operating system or
*************** pragma @code{Pack}, pragma @code{Compone
*** 2526,2546 ****
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{40}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{41}
  @section Pragma Constant_After_Elaboration
  
  
  Syntax:
  
  @example
! pragma Constant_After_Elaboration [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect
  @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
  
  @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{42}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{43}
  @section Pragma Contract_Cases
  
  
--- 2551,2571 ----
  clause), the GNAT uses the default alignment as described previously.
  
  @node Pragma Constant_After_Elaboration,Pragma Contract_Cases,Pragma Component_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id6}@anchor{41}@anchor{gnat_rm/implementation_defined_pragmas pragma-constant-after-elaboration}@anchor{42}
  @section Pragma Constant_After_Elaboration
  
  
  Syntax:
  
  @example
! pragma Constant_After_Elaboration [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect
  @code{Constant_After_Elaboration} in the SPARK 2014 Reference Manual, section 3.3.1.
  
  @node Pragma Contract_Cases,Pragma Convention_Identifier,Pragma Constant_After_Elaboration,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id7}@anchor{43}@anchor{gnat_rm/implementation_defined_pragmas pragma-contract-cases}@anchor{44}
  @section Pragma Contract_Cases
  
  
*************** For the semantics of this pragma, see th
*** 2549,2555 ****
  Syntax:
  
  @example
! pragma Contract_Cases ((CONTRACT_CASE @{, CONTRACT_CASE));
  
  CONTRACT_CASE ::= CASE_GUARD => CONSEQUENCE
  
--- 2574,2580 ----
  Syntax:
  
  @example
! pragma Contract_Cases (CONTRACT_CASE @{, CONTRACT_CASE@});
  
  CONTRACT_CASE ::= CASE_GUARD => CONSEQUENCE
  
*************** and that the consequence for this case s
*** 2625,2631 ****
  returns.
  
  @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{44}
  @section Pragma Convention_Identifier
  
  
--- 2650,2656 ----
  returns.
  
  @node Pragma Convention_Identifier,Pragma CPP_Class,Pragma Contract_Cases,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-convention-identifier}@anchor{45}
  @section Pragma Convention_Identifier
  
  
*************** define a convention identifier @code{Lib
*** 2661,2667 ****
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{45}
  @section Pragma CPP_Class
  
  
--- 2686,2692 ----
  would be used system-wide.
  
  @node Pragma CPP_Class,Pragma CPP_Constructor,Pragma Convention_Identifier,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-class}@anchor{46}
  @section Pragma CPP_Class
  
  
*************** functions (see pragma @code{CPP_Construc
*** 2686,2699 ****
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
! See @ref{46,,Interfacing to C++} for related information.
  
  Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{47}
  @section Pragma CPP_Constructor
  
  
--- 2711,2724 ----
  limited if not explicitly declared as limited or derived from a limited
  type, and an error is issued in that case.
  
! See @ref{47,,Interfacing to C++} for related information.
  
  Note: Pragma @code{CPP_Class} is currently obsolete. It is supported
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
  @node Pragma CPP_Constructor,Pragma CPP_Virtual,Pragma CPP_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-constructor}@anchor{48}
  @section Pragma CPP_Constructor
  
  
*************** must be of one of the following forms:
*** 2718,2733 ****
  @itemize *
  
  @item 
! @strong{function} @code{Fname} @strong{return} T`
  
  @item 
! @strong{function} @code{Fname} @strong{return} T’Class
  
  @item 
! @strong{function} @code{Fname} (…) @strong{return} T`
  
  @item 
! @strong{function} @code{Fname} (…) @strong{return} T’Class
  @end itemize
  
  where @code{T} is a limited record type imported from C++ with pragma
--- 2743,2758 ----
  @itemize *
  
  @item 
! `function' @code{Fname} `return' T`
  
  @item 
! `function' @code{Fname} `return' T’Class
  
  @item 
! `function' @code{Fname} (…) `return' T`
  
  @item 
! `function' @code{Fname} (…) `return' T’Class
  @end itemize
  
  where @code{T} is a limited record type imported from C++ with pragma
*************** on the Ada side and the type is implicit
*** 2744,2750 ****
  Pragma @code{CPP_Constructor} is intended primarily for automatic generation
  using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
  GCC switch).
! See @ref{46,,Interfacing to C++} for more related information.
  
  Note: The use of functions returning class-wide types for constructors is
  currently obsolete. They are supported for backward compatibility. The
--- 2769,2775 ----
  Pragma @code{CPP_Constructor} is intended primarily for automatic generation
  using an automatic binding generator tool (such as the @code{-fdump-ada-spec}
  GCC switch).
! See @ref{47,,Interfacing to C++} for more related information.
  
  Note: The use of functions returning class-wide types for constructors is
  currently obsolete. They are supported for backward compatibility. The
*************** because the imported C++ constructors al
*** 2753,2759 ****
  that is, they never return an object whose type is a descendant of type T.
  
  @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{48}
  @section Pragma CPP_Virtual
  
  
--- 2778,2784 ----
  that is, they never return an object whose type is a descendant of type T.
  
  @node Pragma CPP_Virtual,Pragma CPP_Vtable,Pragma CPP_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-virtual}@anchor{49}
  @section Pragma CPP_Virtual
  
  
*************** that is, they never return an object who
*** 2762,2775 ****
  This pragma is now obsolete and, other than generating a warning if warnings
  on obsolescent features are enabled, is completely ignored.
  It is retained for compatibility
! purposes. It used to be required to ensure compoatibility with C++, but
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{46,,Interfacing to C++} for related information.
  
  @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{49}
  @section Pragma CPP_Vtable
  
  
--- 2787,2800 ----
  This pragma is now obsolete and, other than generating a warning if warnings
  on obsolescent features are enabled, is completely ignored.
  It is retained for compatibility
! purposes. It used to be required to ensure compatibility with C++, but
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{47,,Interfacing to C++} for related information.
  
  @node Pragma CPP_Vtable,Pragma CPU,Pragma CPP_Virtual,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpp-vtable}@anchor{4a}
  @section Pragma CPP_Vtable
  
  
*************** It used to be required to ensure compati
*** 2781,2790 ****
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{46,,Interfacing to C++} for related information.
  
  @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4a}
  @section Pragma CPU
  
  
--- 2806,2815 ----
  is no longer required for that purpose because GNAT generates
  the same object layout as the G++ compiler by default.
  
! See @ref{47,,Interfacing to C++} for related information.
  
  @node Pragma CPU,Pragma Deadline_Floor,Pragma CPP_Vtable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-cpu}@anchor{4b}
  @section Pragma CPU
  
  
*************** This pragma is standard in Ada 2012, but
*** 2798,2805 ****
  versions of Ada as an implementation-defined pragma.
  See Ada 2012 Reference Manual for details.
  
! @node Pragma Deadline_Floor,Pragma Default_Initial_Condition,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4b}
  @section Pragma Deadline_Floor
  
  
--- 2823,2830 ----
  versions of Ada as an implementation-defined pragma.
  See Ada 2012 Reference Manual for details.
  
! @node Pragma Deadline_Floor,Pragma Debug,Pragma CPU,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-deadline-floor}@anchor{4c}
  @section Pragma Deadline_Floor
  
  
*************** This pragma applies only to protected ty
*** 2813,2834 ****
  deadline inherited by a task when the task enters a protected object.
  It is effective only when the EDF scheduling policy is used.
  
! @node Pragma Default_Initial_Condition,Pragma Debug,Pragma Deadline_Floor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4c}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{4d}
! @section Pragma Default_Initial_Condition
! 
! 
! Syntax:
! 
! @example
! pragma Default_Initial_Condition [ (null | boolean_EXPRESSION) ];
! @end example
! 
! For the semantics of this pragma, see the entry for aspect
! @code{Default_Initial_Condition} in the SPARK 2014 Reference Manual, section 7.3.3.
! 
! @node Pragma Debug,Pragma Debug_Policy,Pragma Default_Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{4e}
  @section Pragma Debug
  
  
--- 2838,2845 ----
  deadline inherited by a task when the task enters a protected object.
  It is effective only when the EDF scheduling policy is used.
  
! @node Pragma Debug,Pragma Debug_Policy,Pragma Deadline_Floor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug}@anchor{4d}
  @section Pragma Debug
  
  
*************** semantics of the pragma is exactly equiv
*** 2851,2862 ****
  corresponding to the argument with a terminating semicolon. Pragmas are
  permitted in sequences of declarations, so you can use pragma @code{Debug} to
  intersperse calls to debug procedures in the middle of declarations. Debug
! pragmas can be enabled either by use of the command line switch @emph{-gnata}
  or by use of the pragma @code{Check_Policy} with a first argument of
  @code{Debug}.
  
! @node Pragma Debug_Policy,Pragma Default_Scalar_Storage_Order,Pragma Debug,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{4f}
  @section Pragma Debug_Policy
  
  
--- 2862,2873 ----
  corresponding to the argument with a terminating semicolon. Pragmas are
  permitted in sequences of declarations, so you can use pragma @code{Debug} to
  intersperse calls to debug procedures in the middle of declarations. Debug
! pragmas can be enabled either by use of the command line switch `-gnata'
  or by use of the pragma @code{Check_Policy} with a first argument of
  @code{Debug}.
  
! @node Pragma Debug_Policy,Pragma Default_Initial_Condition,Pragma Debug,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-debug-policy}@anchor{4e}
  @section Pragma Debug_Policy
  
  
*************** This pragma is equivalent to a correspon
*** 2870,2877 ****
  with a first argument of @code{Debug}. It is retained for historical
  compatibility reasons.
  
! @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Debug_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{50}
  @section Pragma Default_Scalar_Storage_Order
  
  
--- 2881,2902 ----
  with a first argument of @code{Debug}. It is retained for historical
  compatibility reasons.
  
! @node Pragma Default_Initial_Condition,Pragma Default_Scalar_Storage_Order,Pragma Debug_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id8}@anchor{4f}@anchor{gnat_rm/implementation_defined_pragmas pragma-default-initial-condition}@anchor{50}
! @section Pragma Default_Initial_Condition
! 
! 
! Syntax:
! 
! @example
! pragma Default_Initial_Condition [ (null | boolean_EXPRESSION) ];
! @end example
! 
! For the semantics of this pragma, see the entry for aspect
! @code{Default_Initial_Condition} in the SPARK 2014 Reference Manual, section 7.3.3.
! 
! @node Pragma Default_Scalar_Storage_Order,Pragma Default_Storage_Pool,Pragma Default_Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-scalar-storage-order}@anchor{51}
  @section Pragma Default_Scalar_Storage_Order
  
  
*************** package DSSO1 is
*** 2929,2936 ****
  end DSSO1;
  @end example
  
! In this example record types with names starting with @emph{L} have @cite{Low_Order_First} scalar
! storage order, and record types with names starting with @emph{H} have @code{High_Order_First}.
  Note that in the case of @code{H4a}, the order is not inherited
  from the parent type. Only an explicitly set @code{Scalar_Storage_Order}
  gets inherited on type derivation.
--- 2954,2961 ----
  end DSSO1;
  @end example
  
! In this example record types with names starting with `L' have @cite{Low_Order_First} scalar
! storage order, and record types with names starting with `H' have @code{High_Order_First}.
  Note that in the case of @code{H4a}, the order is not inherited
  from the parent type. Only an explicitly set @code{Scalar_Storage_Order}
  gets inherited on type derivation.
*************** it may significantly degrade the run-tim
*** 2944,2950 ****
  the default scalar storage order ought to be changed only on a local basis.
  
  @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{51}
  @section Pragma Default_Storage_Pool
  
  
--- 2969,2975 ----
  the default scalar storage order ought to be changed only on a local basis.
  
  @node Pragma Default_Storage_Pool,Pragma Depends,Pragma Default_Scalar_Storage_Order,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-default-storage-pool}@anchor{52}
  @section Pragma Default_Storage_Pool
  
  
*************** versions of Ada as an implementation-def
*** 2961,2967 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{52}@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{53}
  @section Pragma Depends
  
  
--- 2986,2992 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Depends,Pragma Detect_Blocking,Pragma Default_Storage_Pool,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id9}@anchor{53}@anchor{gnat_rm/implementation_defined_pragmas pragma-depends}@anchor{54}
  @section Pragma Depends
  
  
*************** For the semantics of this pragma, see th
*** 2994,3000 ****
  SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{54}
  @section Pragma Detect_Blocking
  
  
--- 3019,3025 ----
  SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Detect_Blocking,Pragma Disable_Atomic_Synchronization,Pragma Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-detect-blocking}@anchor{55}
  @section Pragma Detect_Blocking
  
  
*************** blocking operations within a protected o
*** 3012,3018 ****
  if that happens.
  
  @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{55}
  @section Pragma Disable_Atomic_Synchronization
  
  
--- 3037,3043 ----
  if that happens.
  
  @node Pragma Disable_Atomic_Synchronization,Pragma Dispatching_Domain,Pragma Detect_Blocking,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-disable-atomic-synchronization}@anchor{56}
  @section Pragma Disable_Atomic_Synchronization
  
  
*************** till the end of the scope. If an @code{E
*** 3038,3044 ****
  the action applies only to that entity.
  
  @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{56}
  @section Pragma Dispatching_Domain
  
  
--- 3063,3069 ----
  the action applies only to that entity.
  
  @node Pragma Dispatching_Domain,Pragma Effective_Reads,Pragma Disable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-dispatching-domain}@anchor{57}
  @section Pragma Dispatching_Domain
  
  
*************** versions of Ada as an implementation-def
*** 3053,3087 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{57}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{58}
  @section Pragma Effective_Reads
  
  
  Syntax:
  
  @example
! pragma Effective_Reads [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Effective_Reads} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{59}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5a}
  @section Pragma Effective_Writes
  
  
  Syntax:
  
  @example
! pragma Effective_Writes [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Effective_Writes}
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5b}
  @section Pragma Elaboration_Checks
  
  
--- 3078,3112 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Effective_Reads,Pragma Effective_Writes,Pragma Dispatching_Domain,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id10}@anchor{58}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-reads}@anchor{59}
  @section Pragma Effective_Reads
  
  
  Syntax:
  
  @example
! pragma Effective_Reads [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Effective_Reads} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Effective_Writes,Pragma Elaboration_Checks,Pragma Effective_Reads,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id11}@anchor{5a}@anchor{gnat_rm/implementation_defined_pragmas pragma-effective-writes}@anchor{5b}
  @section Pragma Effective_Writes
  
  
  Syntax:
  
  @example
! pragma Effective_Writes [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Effective_Writes}
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Elaboration_Checks,Pragma Eliminate,Pragma Effective_Writes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-elaboration-checks}@anchor{5c}
  @section Pragma Elaboration_Checks
  
  
*************** pragma Elaboration_Checks (Dynamic | Sta
*** 3095,3102 ****
  
  This is a configuration pragma which specifies the elaboration model to be
  used during compilation. For more information on the elaboration models of
! GNAT, consult the chapter on elaboration order handling in the @emph{GNAT User’s
! Guide}.
  
  The pragma may appear in the following contexts:
  
--- 3120,3127 ----
  
  This is a configuration pragma which specifies the elaboration model to be
  used during compilation. For more information on the elaboration models of
! GNAT, consult the chapter on elaboration order handling in the `GNAT User’s
! Guide'.
  
  The pragma may appear in the following contexts:
  
*************** effect. If the pragma argument is @code{
*** 3118,3124 ****
  is in effect.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5c}
  @section Pragma Eliminate
  
  
--- 3143,3149 ----
  is in effect.
  
  @node Pragma Eliminate,Pragma Enable_Atomic_Synchronization,Pragma Elaboration_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-eliminate}@anchor{5d}
  @section Pragma Eliminate
  
  
*************** argument:
*** 3152,3162 ****
  @item 
  @code{E} must be a subprogram that is explicitly declared either:
  
- o  Within @code{U}, or
  
! o  Within a generic package that is instantiated in @code{U}, or
  
! o  As an instance of generic subprogram instantiated in @code{U}.
  
  Otherwise the pragma is ignored.
  
--- 3177,3194 ----
  @item 
  @code{E} must be a subprogram that is explicitly declared either:
  
  
! @itemize *
  
! @item 
! Within @code{U}, or
! 
! @item 
! Within a generic package that is instantiated in @code{U}, or
! 
! @item 
! As an instance of generic subprogram instantiated in @code{U}.
! @end itemize
  
  Otherwise the pragma is ignored.
  
*************** declaration appears, as described below.
*** 3173,3179 ****
  
  @item 
  If @code{E} is declared as the result of a generic instantiation, then
! a @code{Source_Location} argument is needed, as described below
  @end itemize
  
  Pragma @code{Eliminate} allows a program to be compiled in a system-independent
--- 3205,3211 ----
  
  @item 
  If @code{E} is declared as the result of a generic instantiation, then
! a @code{Source_Location} argument is needed, as described below.
  @end itemize
  
  Pragma @code{Eliminate} allows a program to be compiled in a system-independent
*************** pragma Eliminate (Q, Proc,
*** 3278,3284 ****
  @end quotation
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{5d}
  @section Pragma Enable_Atomic_Synchronization
  
  
--- 3310,3316 ----
  @end quotation
  
  @node Pragma Enable_Atomic_Synchronization,Pragma Export_Function,Pragma Eliminate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-enable-atomic-synchronization}@anchor{5e}
  @section Pragma Enable_Atomic_Synchronization
  
  
*************** till the end of the scope. If an @code{E
*** 3306,3312 ****
  the action applies only to that entity.
  
  @node Pragma Export_Function,Pragma Export_Object,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{5e}
  @section Pragma Export_Function
  
  
--- 3338,3344 ----
  the action applies only to that entity.
  
  @node Pragma Export_Function,Pragma Export_Object,Pragma Enable_Atomic_Synchronization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-function}@anchor{5f}
  @section Pragma Export_Function
  
  
*************** string. In this case, no external name i
*** 3378,3394 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{5f}
  @section Pragma Export_Object
  
  
  Syntax:
  
  @example
! pragma Export_Object
        [Internal =>] LOCAL_NAME
     [, [External =>] EXTERNAL_SYMBOL]
!    [, [Size     =>] EXTERNAL_SYMBOL]
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
--- 3410,3426 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Object,Pragma Export_Procedure,Pragma Export_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-object}@anchor{60}
  @section Pragma Export_Object
  
  
  Syntax:
  
  @example
! pragma Export_Object (
        [Internal =>] LOCAL_NAME
     [, [External =>] EXTERNAL_SYMBOL]
!    [, [Size     =>] EXTERNAL_SYMBOL]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
*************** of portability), but it is not required.
*** 3403,3409 ****
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Valued_Procedure,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{60}
  @section Pragma Export_Procedure
  
  
--- 3435,3441 ----
  but otherwise ignored by GNAT.
  
  @node Pragma Export_Procedure,Pragma Export_Valued_Procedure,Pragma Export_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-procedure}@anchor{61}
  @section Pragma Export_Procedure
  
  
*************** string. In this case, no external name i
*** 3456,3462 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{61}
  @section Pragma Export_Valued_Procedure
  
  
--- 3488,3494 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Export_Valued_Procedure,Pragma Extend_System,Pragma Export_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-export-valued-procedure}@anchor{62}
  @section Pragma Export_Valued_Procedure
  
  
*************** string. In this case, no external name i
*** 3514,3520 ****
  still allows the specification of parameter mechanisms.
  
  @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{62}
  @section Pragma Extend_System
  
  
--- 3546,3552 ----
  still allows the specification of parameter mechanisms.
  
  @node Pragma Extend_System,Pragma Extensions_Allowed,Pragma Export_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extend-system}@anchor{63}
  @section Pragma Extend_System
  
  
*************** the Ada RM.  However, other implementati
*** 3536,3549 ****
  implementation, provide many extensions to package @code{System}.
  
  For each such implementation accommodated by this pragma, GNAT provides a
! package @code{Aux_@emph{xxx}}, e.g., @code{Aux_DEC} for the DEC Ada 83
  implementation, which provides the required additional definitions.  You
  can use this package in two ways.  You can @code{with} it in the normal
  way and access entities either by selection or using a @code{use}
  clause.  In this case no special processing is required.
  
  However, if existing code contains references such as
! @code{System.@emph{xxx}} where @emph{xxx} is an entity in the extended
  definitions provided in package @code{System}, you may use this pragma
  to extend visibility in @code{System} in a non-standard way that
  provides greater compatibility with the existing code.  Pragma
--- 3568,3581 ----
  implementation, provide many extensions to package @code{System}.
  
  For each such implementation accommodated by this pragma, GNAT provides a
! package @code{Aux_@var{xxx}}, e.g., @code{Aux_DEC} for the DEC Ada 83
  implementation, which provides the required additional definitions.  You
  can use this package in two ways.  You can @code{with} it in the normal
  way and access entities either by selection or using a @code{use}
  clause.  In this case no special processing is required.
  
  However, if existing code contains references such as
! @code{System.@var{xxx}} where `xxx' is an entity in the extended
  definitions provided in package @code{System}, you may use this pragma
  to extend visibility in @code{System} in a non-standard way that
  provides greater compatibility with the existing code.  Pragma
*************** provides greater compatibility with the
*** 3551,3558 ****
  the name of the package containing the extended definition
  (e.g., @code{Aux_DEC} for the DEC Ada case).  A unit compiled under
  control of this pragma will be processed using special visibility
! processing that looks in package @code{System.Aux_@emph{xxx}} where
! @code{Aux_@emph{xxx}} is the pragma argument for any entity referenced in
  package @code{System}, but not found in package @code{System}.
  
  You can use this pragma either to access a predefined @code{System}
--- 3583,3590 ----
  the name of the package containing the extended definition
  (e.g., @code{Aux_DEC} for the DEC Ada case).  A unit compiled under
  control of this pragma will be processed using special visibility
! processing that looks in package @code{System.Aux_@var{xxx}} where
! @code{Aux_@var{xxx}} is the pragma argument for any entity referenced in
  package @code{System}, but not found in package @code{System}.
  
  You can use this pragma either to access a predefined @code{System}
*************** extension supplied with the compiler, fo
*** 3560,3571 ****
  you can construct your own extension unit following the above
  definition.  Note that such a package is a child of @code{System}
  and thus is considered part of the implementation.
! To compile it you will have to use the @emph{-gnatg} switch
  for compiling System units, as explained in the
  GNAT User’s Guide.
  
  @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{63}
  @section Pragma Extensions_Allowed
  
  
--- 3592,3603 ----
  you can construct your own extension unit following the above
  definition.  Note that such a package is a child of @code{System}
  and thus is considered part of the implementation.
! To compile it you will have to use the `-gnatg' switch
  for compiling System units, as explained in the
  GNAT User’s Guide.
  
  @node Pragma Extensions_Allowed,Pragma Extensions_Visible,Pragma Extend_System,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-allowed}@anchor{64}
  @section Pragma Extensions_Allowed
  
  
*************** GNAT User’s Guide.
*** 3576,3591 ****
  Syntax:
  
  @example
! pragma Extensions_Allowed (On | Off);
  @end example
  
! This configuration pragma enables or disables the implementation
! extension mode (the use of Off as a parameter cancels the effect
! of the @emph{-gnatX} command switch).
  
! In extension mode, the latest version of the Ada language is
! implemented (currently Ada 2022), and in addition a number
! of GNAT specific extensions are recognized as follows:
  
  
  @itemize *
--- 3608,3626 ----
  Syntax:
  
  @example
! pragma Extensions_Allowed (On | Off | All);
  @end example
  
! This configuration pragma enables (via the “On” or “All” argument) or disables
! (via the “Off” argument) the implementation extension mode; the pragma takes
! precedence over the `-gnatX' and `-gnatX0' command switches.
  
! If an argument of “All” is specified, the latest version of the Ada language
! is implemented (currently Ada 2022) and, in addition, a number
! of GNAT specific extensions are recognized. These extensions are listed
! below. An argument of “On” has the same effect except that only
! some, not all, of the listed extensions are enabled; those extensions
! are identified below.
  
  
  @itemize *
*************** The Ada 202x @code{Static} aspect can be
*** 3604,3614 ****
  functions and the compiler will evaluate some of these intrinsic statically,
  in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! @item 
! @code{'Reduce} attribute
! 
! This attribute part of the Ada 202x language definition is provided for
! now under -gnatX to confirm and potentially refine its usage and syntax.
  
  @item 
  @code{[]} aggregates
--- 3639,3645 ----
  functions and the compiler will evaluate some of these intrinsic statically,
  in particular the @code{Shift_Left} and @code{Shift_Right} intrinsics.
  
! An Extensions_Allowed pragma argument of “On” enables this extension.
  
  @item 
  @code{[]} aggregates
*************** set shall be a proper subset of the seco
*** 3673,3679 ****
  will not be executed if the earlier alternative “matches”). All possible
  values of the composite type shall be covered. The composite type of the
  selector shall be an array or record type that is neither limited
! class-wide.
  
  If a subcomponent’s subtype does not meet certain restrictions, then
  the only value that can be specified for that subcomponent in a case
--- 3704,3711 ----
  will not be executed if the earlier alternative “matches”). All possible
  values of the composite type shall be covered. The composite type of the
  selector shall be an array or record type that is neither limited
! class-wide. Currently, a “when others =>” case choice is required; it is
! intended that this requirement will be relaxed at some point.
  
  If a subcomponent’s subtype does not meet certain restrictions, then
  the only value that can be specified for that subcomponent in a case
*************** define the same set of bindings and the
*** 3752,3757 ****
--- 3784,3791 ----
  for a given identifer must all statically match. Currently, the case
  of a binding for a nondiscrete component is not implemented.
  
+ An Extensions_Allowed pragma argument of “On” enables this extension.
+ 
  @item 
  Fixed lower bounds for array types and subtypes
  
*************** improve the efficiency of indexing opera
*** 3800,3805 ****
--- 3834,3841 ----
  knows the lower bound of unconstrained array formals when the formal’s
  subtype has index ranges with static fixed lower bounds.
  
+ An Extensions_Allowed pragma argument of “On” enables this extension.
+ 
  @item 
  Prefixed-view notation for calls to primitive subprograms of untagged types
  
*************** component is visible at the point of a s
*** 3818,3823 ****
--- 3854,3861 ----
  name, preference is given to the component in a selected_component
  (as is currently the case for tagged types with such component names).
  
+ An Extensions_Allowed pragma argument of “On” enables this extension.
+ 
  @item 
  Expression defaults for generic formal functions
  
*************** end Stacks;
*** 3845,3865 ****
  @end itemize
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{64}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{65}
  @section Pragma Extensions_Visible
  
  
  Syntax:
  
  @example
! pragma Extensions_Visible [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Extensions_Visible}
  in the SPARK 2014 Reference Manual, section 6.1.7.
  
  @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{66}
  @section Pragma External
  
  
--- 3883,3903 ----
  @end itemize
  
  @node Pragma Extensions_Visible,Pragma External,Pragma Extensions_Allowed,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id12}@anchor{65}@anchor{gnat_rm/implementation_defined_pragmas pragma-extensions-visible}@anchor{66}
  @section Pragma Extensions_Visible
  
  
  Syntax:
  
  @example
! pragma Extensions_Visible [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Extensions_Visible}
  in the SPARK 2014 Reference Manual, section 6.1.7.
  
  @node Pragma External,Pragma External_Name_Casing,Pragma Extensions_Visible,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external}@anchor{67}
  @section Pragma External
  
  
*************** used this pragma for exactly the same pu
*** 3880,3886 ****
  @code{Export} before the latter was standardized.
  
  @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{67}
  @section Pragma External_Name_Casing
  
  
--- 3918,3924 ----
  @code{Export} before the latter was standardized.
  
  @node Pragma External_Name_Casing,Pragma Fast_Math,Pragma External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-external-name-casing}@anchor{68}
  @section Pragma External_Name_Casing
  
  
*************** pragma External_Name_Casing (Uppercase,
*** 3969,3975 ****
  to enforce the upper casing of all external symbols.
  
  @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{68}
  @section Pragma Fast_Math
  
  
--- 4007,4013 ----
  to enforce the upper casing of all external symbols.
  
  @node Pragma Fast_Math,Pragma Favor_Top_Level,Pragma External_Name_Casing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-fast-math}@anchor{69}
  @section Pragma Fast_Math
  
  
*************** following operations are affected:
*** 3987,3993 ****
  
  @table @asis
  
! @item @emph{Complex Multiplication}
  
  The normal simple formula for complex multiplication can result in intermediate
  overflows for numbers near the end of the range. The Ada standard requires that
--- 4025,4031 ----
  
  @table @asis
  
! @item `Complex Multiplication'
  
  The normal simple formula for complex multiplication can result in intermediate
  overflows for numbers near the end of the range. The Ada standard requires that
*************** under control of the pragma, rather than
*** 3998,4004 ****
  @end table
  
  @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{69}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6a}
  @section Pragma Favor_Top_Level
  
  
--- 4036,4042 ----
  @end table
  
  @node Pragma Favor_Top_Level,Pragma Finalize_Storage_Only,Pragma Fast_Math,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id13}@anchor{6a}@anchor{gnat_rm/implementation_defined_pragmas pragma-favor-top-level}@anchor{6b}
  @section Pragma Favor_Top_Level
  
  
*************** When this pragma is used, dynamically ge
*** 4017,4023 ****
  targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
  
  @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{6b}
  @section Pragma Finalize_Storage_Only
  
  
--- 4055,4061 ----
  targets for nested subprograms. See restriction @code{No_Implicit_Dynamic_Code}.
  
  @node Pragma Finalize_Storage_Only,Pragma Float_Representation,Pragma Favor_Top_Level,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-finalize-storage-only}@anchor{6c}
  @section Pragma Finalize_Storage_Only
  
  
*************** name. Note that this pragma does not sup
*** 4037,4043 ****
  heap-allocated objects (see pragma @code{No_Heap_Finalization}).
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{6c}
  @section Pragma Float_Representation
  
  
--- 4075,4081 ----
  heap-allocated objects (see pragma @code{No_Heap_Finalization}).
  
  @node Pragma Float_Representation,Pragma Ghost,Pragma Finalize_Storage_Only,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-float-representation}@anchor{6d}
  @section Pragma Float_Representation
  
  
*************** No other value of digits is permitted.
*** 4072,4092 ****
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6d}@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{6e}
  @section Pragma Ghost
  
  
  Syntax:
  
  @example
! pragma Ghost [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Ghost} in the SPARK
  2014 Reference Manual, section 6.9.
  
  @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{6f}@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{70}
  @section Pragma Global
  
  
--- 4110,4130 ----
  @end itemize
  
  @node Pragma Ghost,Pragma Global,Pragma Float_Representation,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id14}@anchor{6e}@anchor{gnat_rm/implementation_defined_pragmas pragma-ghost}@anchor{6f}
  @section Pragma Ghost
  
  
  Syntax:
  
  @example
! pragma Ghost [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Ghost} in the SPARK
  2014 Reference Manual, section 6.9.
  
  @node Pragma Global,Pragma Ident,Pragma Ghost,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id15}@anchor{70}@anchor{gnat_rm/implementation_defined_pragmas pragma-global}@anchor{71}
  @section Pragma Global
  
  
*************** For the semantics of this pragma, see th
*** 4111,4117 ****
  SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{71}
  @section Pragma Ident
  
  
--- 4149,4155 ----
  SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Ident,Pragma Ignore_Pragma,Pragma Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ident}@anchor{72}
  @section Pragma Ident
  
  
*************** This pragma is identical in effect to pr
*** 4125,4131 ****
  for compatibility with other Ada compilers providing this pragma.
  
  @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{72}
  @section Pragma Ignore_Pragma
  
  
--- 4163,4169 ----
  for compatibility with other Ada compilers providing this pragma.
  
  @node Pragma Ignore_Pragma,Pragma Implementation_Defined,Pragma Ident,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ignore-pragma}@anchor{73}
  @section Pragma Ignore_Pragma
  
  
*************** pragma allows such pragmas to be ignored
*** 4145,4151 ****
  mode, or during porting of legacy code.
  
  @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{73}
  @section Pragma Implementation_Defined
  
  
--- 4183,4189 ----
  mode, or during porting of legacy code.
  
  @node Pragma Implementation_Defined,Pragma Implemented,Pragma Ignore_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implementation-defined}@anchor{74}
  @section Pragma Implementation_Defined
  
  
*************** for the purpose of implementing the No_I
*** 4172,4178 ****
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{74}
  @section Pragma Implemented
  
  
--- 4210,4216 ----
  restriction.
  
  @node Pragma Implemented,Pragma Implicit_Packing,Pragma Implementation_Defined,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implemented}@anchor{75}
  @section Pragma Implemented
  
  
*************** By_Any shares the behavior of By_Entry a
*** 4218,4224 ****
  the target’s overriding subprogram kind.
  
  @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{75}
  @section Pragma Implicit_Packing
  
  
--- 4256,4262 ----
  the target’s overriding subprogram kind.
  
  @node Pragma Implicit_Packing,Pragma Import_Function,Pragma Implemented,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-implicit-packing}@anchor{76}
  @section Pragma Implicit_Packing
  
  
*************** sufficient. The use of pragma Implicit_P
*** 4272,4278 ****
  declaration to compile without an explicit pragma Pack.
  
  @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{76}
  @section Pragma Import_Function
  
  
--- 4310,4316 ----
  declaration to compile without an explicit pragma Pack.
  
  @node Pragma Import_Function,Pragma Import_Object,Pragma Implicit_Packing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-function}@anchor{77}
  @section Pragma Import_Function
  
  
*************** Syntax:
*** 4280,4291 ****
  
  @example
  pragma Import_Function (
!      [Internal                 =>] LOCAL_NAME,
!   [, [External                 =>] EXTERNAL_SYMBOL]
!   [, [Parameter_Types          =>] PARAMETER_TYPES]
!   [, [Result_Type              =>] SUBTYPE_MARK]
!   [, [Mechanism                =>] MECHANISM]
!   [, [Result_Mechanism         =>] MECHANISM_NAME]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
--- 4318,4329 ----
  
  @example
  pragma Import_Function (
!      [Internal         =>] LOCAL_NAME,
!   [, [External         =>] EXTERNAL_SYMBOL]
!   [, [Parameter_Types  =>] PARAMETER_TYPES]
!   [, [Result_Type      =>] SUBTYPE_MARK]
!   [, [Mechanism        =>] MECHANISM]
!   [, [Result_Mechanism =>] MECHANISM_NAME]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
*************** notation.  If the mechanism is not speci
*** 4337,4350 ****
  is used.
  
  @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{77}
  @section Pragma Import_Object
  
  
  Syntax:
  
  @example
! pragma Import_Object
       [Internal =>] LOCAL_NAME
    [, [External =>] EXTERNAL_SYMBOL]
    [, [Size     =>] EXTERNAL_SYMBOL]);
--- 4375,4388 ----
  is used.
  
  @node Pragma Import_Object,Pragma Import_Procedure,Pragma Import_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-object}@anchor{78}
  @section Pragma Import_Object
  
  
  Syntax:
  
  @example
! pragma Import_Object (
       [Internal =>] LOCAL_NAME
    [, [External =>] EXTERNAL_SYMBOL]
    [, [Size     =>] EXTERNAL_SYMBOL]);
*************** point of view).  @code{size} is syntax c
*** 4363,4369 ****
  GNAT.
  
  @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{78}
  @section Pragma Import_Procedure
  
  
--- 4401,4407 ----
  GNAT.
  
  @node Pragma Import_Procedure,Pragma Import_Valued_Procedure,Pragma Import_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-procedure}@anchor{79}
  @section Pragma Import_Procedure
  
  
*************** Syntax:
*** 4371,4380 ****
  
  @example
  pragma Import_Procedure (
!      [Internal                 =>] LOCAL_NAME
!   [, [External                 =>] EXTERNAL_SYMBOL]
!   [, [Parameter_Types          =>] PARAMETER_TYPES]
!   [, [Mechanism                =>] MECHANISM]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
--- 4409,4418 ----
  
  @example
  pragma Import_Procedure (
!      [Internal        =>] LOCAL_NAME
!   [, [External        =>] EXTERNAL_SYMBOL]
!   [, [Parameter_Types =>] PARAMETER_TYPES]
!   [, [Mechanism       =>] MECHANISM]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
*************** applies to a procedure rather than a fun
*** 4403,4409 ****
  @code{Result_Type} and @code{Result_Mechanism} are not permitted.
  
  @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{79}
  @section Pragma Import_Valued_Procedure
  
  
--- 4441,4447 ----
  @code{Result_Type} and @code{Result_Mechanism} are not permitted.
  
  @node Pragma Import_Valued_Procedure,Pragma Independent,Pragma Import_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-import-valued-procedure}@anchor{7a}
  @section Pragma Import_Valued_Procedure
  
  
*************** Syntax:
*** 4411,4420 ****
  
  @example
  pragma Import_Valued_Procedure (
!      [Internal                 =>] LOCAL_NAME
!   [, [External                 =>] EXTERNAL_SYMBOL]
!   [, [Parameter_Types          =>] PARAMETER_TYPES]
!   [, [Mechanism                =>] MECHANISM]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
--- 4449,4458 ----
  
  @example
  pragma Import_Valued_Procedure (
!      [Internal        =>] LOCAL_NAME
!   [, [External        =>] EXTERNAL_SYMBOL]
!   [, [Parameter_Types =>] PARAMETER_TYPES]
!   [, [Mechanism       =>] MECHANISM]);
  
  EXTERNAL_SYMBOL ::=
    IDENTIFIER
*************** pragma Import that specifies the desired
*** 4456,4462 ****
  default convention is Ada, which is almost certainly not what is required.
  
  @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7a}
  @section Pragma Independent
  
  
--- 4494,4500 ----
  default convention is Ada, which is almost certainly not what is required.
  
  @node Pragma Independent,Pragma Independent_Components,Pragma Import_Valued_Procedure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent}@anchor{7b}
  @section Pragma Independent
  
  
*************** constraints on the representation of the
*** 4478,4484 ****
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7b}
  @section Pragma Independent_Components
  
  
--- 4516,4522 ----
  tight packing).
  
  @node Pragma Independent_Components,Pragma Initial_Condition,Pragma Independent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-independent-components}@anchor{7c}
  @section Pragma Independent_Components
  
  
*************** constraints on the representation of the
*** 4499,4505 ****
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{7c}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{7d}
  @section Pragma Initial_Condition
  
  
--- 4537,4543 ----
  tight packing).
  
  @node Pragma Initial_Condition,Pragma Initialize_Scalars,Pragma Independent_Components,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id16}@anchor{7d}@anchor{gnat_rm/implementation_defined_pragmas pragma-initial-condition}@anchor{7e}
  @section Pragma Initial_Condition
  
  
*************** For the semantics of this pragma, see th
*** 4513,4519 ****
  in the SPARK 2014 Reference Manual, section 7.1.6.
  
  @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{7e}
  @section Pragma Initialize_Scalars
  
  
--- 4551,4557 ----
  in the SPARK 2014 Reference Manual, section 7.1.6.
  
  @node Pragma Initialize_Scalars,Pragma Initializes,Pragma Initial_Condition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-initialize-scalars}@anchor{7f}
  @section Pragma Initialize_Scalars
  
  
*************** program.
*** 4611,4617 ****
  Note that pragma @code{Initialize_Scalars} is particularly useful in conjunction
  with the enhanced validity checking that is now provided in GNAT, which checks
  for invalid values under more conditions. Using this feature (see description
! of the @emph{-gnatV} flag in the GNAT User’s Guide) in conjunction with pragma
  @code{Initialize_Scalars} provides a powerful new tool to assist in the detection
  of problems caused by uninitialized variables.
  
--- 4649,4655 ----
  Note that pragma @code{Initialize_Scalars} is particularly useful in conjunction
  with the enhanced validity checking that is now provided in GNAT, which checks
  for invalid values under more conditions. Using this feature (see description
! of the `-gnatV' flag in the GNAT User’s Guide) in conjunction with pragma
  @code{Initialize_Scalars} provides a powerful new tool to assist in the detection
  of problems caused by uninitialized variables.
  
*************** good idea to turn on stack checking (see
*** 4622,4628 ****
  GNAT User’s Guide) when using this pragma.
  
  @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{7f}@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{80}
  @section Pragma Initializes
  
  
--- 4660,4666 ----
  GNAT User’s Guide) when using this pragma.
  
  @node Pragma Initializes,Pragma Inline_Always,Pragma Initialize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id17}@anchor{80}@anchor{gnat_rm/implementation_defined_pragmas pragma-initializes}@anchor{81}
  @section Pragma Initializes
  
  
*************** For the semantics of this pragma, see th
*** 4649,4655 ****
  SPARK 2014 Reference Manual, section 7.1.5.
  
  @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{81}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{82}
  @section Pragma Inline_Always
  
  
--- 4687,4693 ----
  SPARK 2014 Reference Manual, section 7.1.5.
  
  @node Pragma Inline_Always,Pragma Inline_Generic,Pragma Initializes,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id18}@anchor{82}@anchor{gnat_rm/implementation_defined_pragmas pragma-inline-always}@anchor{83}
  @section Pragma Inline_Always
  
  
*************** pragma Inline_Always (NAME [, NAME]);
*** 4662,4674 ****
  Similar to pragma @code{Inline} except that inlining is unconditional.
  Inline_Always instructs the compiler to inline every direct call to the
  subprogram or else to emit a compilation error, independently of any
! option, in particular @emph{-gnatn} or @emph{-gnatN} or the optimization level.
  It is an error to take the address or access of @code{NAME}. It is also an error to
  apply this pragma to a primitive operation of a tagged type. Thanks to such
  restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{83}
  @section Pragma Inline_Generic
  
  
--- 4700,4712 ----
  Similar to pragma @code{Inline} except that inlining is unconditional.
  Inline_Always instructs the compiler to inline every direct call to the
  subprogram or else to emit a compilation error, independently of any
! option, in particular `-gnatn' or `-gnatN' or the optimization level.
  It is an error to take the address or access of @code{NAME}. It is also an error to
  apply this pragma to a primitive operation of a tagged type. Thanks to such
  restrictions, the compiler is allowed to remove the out-of-line body of @code{NAME}.
  
  @node Pragma Inline_Generic,Pragma Interface,Pragma Inline_Always,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-inline-generic}@anchor{84}
  @section Pragma Inline_Generic
  
  
*************** than to check that the given names are a
*** 4686,4692 ****
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{84}
  @section Pragma Interface
  
  
--- 4724,4730 ----
  generic instances.
  
  @node Pragma Interface,Pragma Interface_Name,Pragma Inline_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface}@anchor{85}
  @section Pragma Interface
  
  
*************** with some extended implementations of th
*** 4708,4719 ****
  implementations.  The only difference between pragma @code{Interface}
  and pragma @code{Import} is that there is special circuitry to allow
  both pragmas to appear for the same subprogram entity (normally it
! is illegal to have multiple @code{Import} pragmas. This is useful in
  maintaining Ada 83/Ada 95 compatibility and is compatible with other
  Ada 83 compilers.
  
  @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{85}
  @section Pragma Interface_Name
  
  
--- 4746,4757 ----
  implementations.  The only difference between pragma @code{Interface}
  and pragma @code{Import} is that there is special circuitry to allow
  both pragmas to appear for the same subprogram entity (normally it
! is illegal to have multiple @code{Import} pragmas). This is useful in
  maintaining Ada 83/Ada 95 compatibility and is compatible with other
  Ada 83 compilers.
  
  @node Pragma Interface_Name,Pragma Interrupt_Handler,Pragma Interface,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interface-name}@anchor{86}
  @section Pragma Interface_Name
  
  
*************** for an interfaced subprogram, and is pro
*** 4732,4738 ****
  least one of @code{External_Name} or @code{Link_Name}.
  
  @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{86}
  @section Pragma Interrupt_Handler
  
  
--- 4770,4776 ----
  least one of @code{External_Name} or @code{Link_Name}.
  
  @node Pragma Interrupt_Handler,Pragma Interrupt_State,Pragma Interface_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-handler}@anchor{87}
  @section Pragma Interrupt_Handler
  
  
*************** This program unit pragma is supported fo
*** 4746,4752 ****
  as described in Annex C of the Ada Reference Manual.
  
  @node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{87}
  @section Pragma Interrupt_State
  
  
--- 4784,4790 ----
  as described in Annex C of the Ada Reference Manual.
  
  @node Pragma Interrupt_State,Pragma Invariant,Pragma Interrupt_Handler,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-interrupt-state}@anchor{88}
  @section Pragma Interrupt_State
  
  
*************** with an application’s runtime behavior
*** 4832,4838 ****
  and in the case of the signal used to implement the @code{abort} statement.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{88}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{89}
  @section Pragma Invariant
  
  
--- 4870,4876 ----
  and in the case of the signal used to implement the @code{abort} statement.
  
  @node Pragma Invariant,Pragma Keep_Names,Pragma Interrupt_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id19}@anchor{89}@anchor{gnat_rm/implementation_defined_pragmas pragma-invariant}@anchor{8a}
  @section Pragma Invariant
  
  
*************** For further details on the use of this p
*** 4871,4877 ****
  of the Type_Invariant aspect.
  
  @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8a}
  @section Pragma Keep_Names
  
  
--- 4909,4915 ----
  of the Type_Invariant aspect.
  
  @node Pragma Keep_Names,Pragma License,Pragma Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-keep-names}@anchor{8b}
  @section Pragma Keep_Names
  
  
*************** use a @code{Discard_Names} pragma in the
*** 4891,4897 ****
  want to retain the names for specific enumeration types.
  
  @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{8b}
  @section Pragma License
  
  
--- 4929,4935 ----
  want to retain the names for specific enumeration types.
  
  @node Pragma License,Pragma Link_With,Pragma Keep_Names,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-license}@anchor{8c}
  @section Pragma License
  
  
*************** GPL, but no warning for @code{GNAT.Socke
*** 4986,4992 ****
  run time, and is therefore licensed under the modified GPL.
  
  @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{8c}
  @section Pragma Link_With
  
  
--- 5024,5030 ----
  run time, and is therefore licensed under the modified GPL.
  
  @node Pragma Link_With,Pragma Linker_Alias,Pragma License,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-link-with}@anchor{8d}
  @section Pragma Link_With
  
  
*************** separate arguments to the linker. In add
*** 5010,5016 ****
  multiple arguments, with the same effect as successive pragmas.
  
  @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{8d}
  @section Pragma Linker_Alias
  
  
--- 5048,5054 ----
  multiple arguments, with the same effect as successive pragmas.
  
  @node Pragma Linker_Alias,Pragma Linker_Constructor,Pragma Link_With,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-alias}@anchor{8e}
  @section Pragma Linker_Alias
  
  
*************** end p;
*** 5051,5057 ****
  @end example
  
  @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{8e}
  @section Pragma Linker_Constructor
  
  
--- 5089,5095 ----
  @end example
  
  @node Pragma Linker_Constructor,Pragma Linker_Destructor,Pragma Linker_Alias,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-constructor}@anchor{8f}
  @section Pragma Linker_Constructor
  
  
*************** listed above. Where possible, the use of
*** 5081,5087 ****
  to the use of this pragma.
  
  @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{8f}
  @section Pragma Linker_Destructor
  
  
--- 5119,5125 ----
  to the use of this pragma.
  
  @node Pragma Linker_Destructor,Pragma Linker_Section,Pragma Linker_Constructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-linker-destructor}@anchor{90}
  @section Pragma Linker_Destructor
  
  
*************** See @code{pragma Linker_Constructor} for
*** 5104,5110 ****
  because of these specific contexts.
  
  @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{90}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{91}
  @section Pragma Linker_Section
  
  
--- 5142,5148 ----
  because of these specific contexts.
  
  @node Pragma Linker_Section,Pragma Lock_Free,Pragma Linker_Destructor,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id20}@anchor{91}@anchor{gnat_rm/implementation_defined_pragmas pragma-linker-section}@anchor{92}
  @section Pragma Linker_Section
  
  
*************** end IO_Card;
*** 5178,5184 ****
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{92}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{93}
  @section Pragma Lock_Free
  
  
--- 5216,5222 ----
  @end example
  
  @node Pragma Lock_Free,Pragma Loop_Invariant,Pragma Linker_Section,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id21}@anchor{93}@anchor{gnat_rm/implementation_defined_pragmas pragma-lock-free}@anchor{94}
  @section Pragma Lock_Free
  
  
*************** May reference only one protected compone
*** 5210,5223 ****
  
  @item 
  May not reference nonconstant entities outside the protected subprogram
! scope.
  
  @item 
  May not contain address representation items, allocators, or quantified
! expressions.
  
  @item 
! May not contain delay, goto, loop, or procedure-call statements.
  
  @item 
  May not contain exported and imported entities
--- 5248,5261 ----
  
  @item 
  May not reference nonconstant entities outside the protected subprogram
! scope
  
  @item 
  May not contain address representation items, allocators, or quantified
! expressions
  
  @item 
! May not contain delay, goto, loop, or procedure-call statements
  
  @item 
  May not contain exported and imported entities
*************** May not dereferenced access values
*** 5229,5236 ****
  Function calls and attribute references must be static
  @end itemize
  
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{94}
  @section Pragma Loop_Invariant
  
  
--- 5267,5280 ----
  Function calls and attribute references must be static
  @end itemize
  
+ If the Lock_Free aspect is specified to be True for a protected unit
+ and the Ceiling_Locking locking policy is in effect, then the run-time
+ actions associated with the Ceiling_Locking locking policy (described in
+ Ada RM D.3) are not performed when a protected operation of the protected
+ unit is executed.
+ 
  @node Pragma Loop_Invariant,Pragma Loop_Optimize,Pragma Lock_Free,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-invariant}@anchor{95}
  @section Pragma Loop_Invariant
  
  
*************** attribute can only be used within the ex
*** 5263,5269 ****
  pragma. For full details, see documentation of attribute @code{Loop_Entry}.
  
  @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{95}
  @section Pragma Loop_Optimize
  
  
--- 5307,5313 ----
  pragma. For full details, see documentation of attribute @code{Loop_Entry}.
  
  @node Pragma Loop_Optimize,Pragma Loop_Variant,Pragma Loop_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-optimize}@anchor{96}
  @section Pragma Loop_Optimize
  
  
*************** unrolling, but there is no guarantee tha
*** 5321,5331 ****
  
  These hints do not remove the need to pass the appropriate switches to the
  compiler in order to enable the relevant optimizations, that is to say
! @emph{-funroll-loops} for unrolling and @emph{-ftree-vectorize} for
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{96}
  @section Pragma Loop_Variant
  
  
--- 5365,5375 ----
  
  These hints do not remove the need to pass the appropriate switches to the
  compiler in order to enable the relevant optimizations, that is to say
! `-funroll-loops' for unrolling and `-ftree-vectorize' for
  vectorization.
  
  @node Pragma Loop_Variant,Pragma Machine_Attribute,Pragma Loop_Optimize,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-loop-variant}@anchor{97}
  @section Pragma Loop_Variant
  
  
*************** decrease or increase in successive itera
*** 5345,5351 ****
  form, just one expression is specified, whose value must increase or decrease
  on each iteration of the loop.
  
! In a more complex form, multiple arguments can be given which are intepreted
  in a nesting lexicographic manner. For example:
  
  @example
--- 5389,5395 ----
  form, just one expression is specified, whose value must increase or decrease
  on each iteration of the loop.
  
! In a more complex form, multiple arguments can be given which are interpreted
  in a nesting lexicographic manner. For example:
  
  @example
*************** The @code{Loop_Entry} attribute may be u
*** 5372,5378 ****
  @code{Loop_Variant} pragma to refer to values on entry to the loop.
  
  @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{97}
  @section Pragma Machine_Attribute
  
  
--- 5416,5422 ----
  @code{Loop_Variant} pragma to refer to values on entry to the loop.
  
  @node Pragma Machine_Attribute,Pragma Main,Pragma Loop_Variant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-machine-attribute}@anchor{98}
  @section Pragma Machine_Attribute
  
  
*************** pragma Machine_Attribute (
*** 5387,5396 ****
  
  Machine-dependent attributes can be specified for types and/or
  declarations.  This pragma is semantically equivalent to
! @code{__attribute__((@emph{attribute_name}))} (if @code{info} is not
! specified) or @code{__attribute__((@emph{attribute_name(info})))}
! or @code{__attribute__((@emph{attribute_name(info,...})))} in GNU C,
! where @emph{attribute_name} is recognized by the compiler middle-end
  or the @code{TARGET_ATTRIBUTE_TABLE} machine specific macro.  Note
  that a string literal for the optional parameter @code{info} or the
  following ones is transformed by default into an identifier,
--- 5431,5440 ----
  
  Machine-dependent attributes can be specified for types and/or
  declarations.  This pragma is semantically equivalent to
! @code{__attribute__((@var{attribute_name}))} (if @code{info} is not
! specified) or @code{__attribute__((@var{attribute_name(info})))}
! or @code{__attribute__((@var{attribute_name(info,...})))} in GNU C,
! where `attribute_name' is recognized by the compiler middle-end
  or the @code{TARGET_ATTRIBUTE_TABLE} machine specific macro.  Note
  that a string literal for the optional parameter @code{info} or the
  following ones is transformed by default into an identifier,
*************** which may make this pragma unusable for
*** 5398,5404 ****
  For further information see @cite{GNU Compiler Collection (GCC) Internals}.
  
  @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{98}
  @section Pragma Main
  
  
--- 5442,5448 ----
  For further information see @cite{GNU Compiler Collection (GCC) Internals}.
  
  @node Pragma Main,Pragma Main_Storage,Pragma Machine_Attribute,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main}@anchor{99}
  @section Pragma Main
  
  
*************** This pragma is provided for compatibilit
*** 5418,5424 ****
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{99}
  @section Pragma Main_Storage
  
  
--- 5462,5468 ----
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Main_Storage,Pragma Max_Queue_Length,Pragma Main,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-main-storage}@anchor{9a}
  @section Pragma Main_Storage
  
  
*************** This pragma is provided for compatibilit
*** 5437,5443 ****
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9a}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{9b}
  @section Pragma Max_Queue_Length
  
  
--- 5481,5487 ----
  no effect in GNAT, other than being syntax checked.
  
  @node Pragma Max_Queue_Length,Pragma No_Body,Pragma Main_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id22}@anchor{9b}@anchor{gnat_rm/implementation_defined_pragmas pragma-max-queue-length}@anchor{9c}
  @section Pragma Max_Queue_Length
  
  
*************** entry.
*** 5455,5461 ****
  A value of -1 represents no additional restriction on queue length.
  
  @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9c}
  @section Pragma No_Body
  
  
--- 5499,5505 ----
  A value of -1 represents no additional restriction on queue length.
  
  @node Pragma No_Body,Pragma No_Caching,Pragma Max_Queue_Length,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-body}@anchor{9d}
  @section Pragma No_Body
  
  
*************** dummy body with a No_Body pragma ensures
*** 5478,5498 ****
  earlier versions of the package body.
  
  @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9d}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{9e}
  @section Pragma No_Caching
  
  
  Syntax:
  
  @example
! pragma No_Caching [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{No_Caching} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{9f}
  @section Pragma No_Component_Reordering
  
  
--- 5522,5542 ----
  earlier versions of the package body.
  
  @node Pragma No_Caching,Pragma No_Component_Reordering,Pragma No_Body,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id23}@anchor{9e}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-caching}@anchor{9f}
  @section Pragma No_Caching
  
  
  Syntax:
  
  @example
! pragma No_Caching [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{No_Caching} in
  the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma No_Component_Reordering,Pragma No_Elaboration_Code_All,Pragma No_Caching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-component-reordering}@anchor{a0}
  @section Pragma No_Component_Reordering
  
  
*************** declared in units to which the pragma ap
*** 5511,5517 ****
  that this pragma be used consistently within a partition.
  
  @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a0}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a1}
  @section Pragma No_Elaboration_Code_All
  
  
--- 5555,5561 ----
  that this pragma be used consistently within a partition.
  
  @node Pragma No_Elaboration_Code_All,Pragma No_Heap_Finalization,Pragma No_Component_Reordering,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id24}@anchor{a1}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-elaboration-code-all}@anchor{a2}
  @section Pragma No_Elaboration_Code_All
  
  
*************** current unit, it must also have the No_E
*** 5530,5536 ****
  It may be applied to package or subprogram specs or their generic versions.
  
  @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a2}
  @section Pragma No_Heap_Finalization
  
  
--- 5574,5580 ----
  It may be applied to package or subprogram specs or their generic versions.
  
  @node Pragma No_Heap_Finalization,Pragma No_Inline,Pragma No_Elaboration_Code_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-heap-finalization}@anchor{a3}
  @section Pragma No_Heap_Finalization
  
  
*************** lose its @code{No_Heap_Finalization} pra
*** 5562,5568 ****
  appear at the library level.
  
  @node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a3}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a4}
  @section Pragma No_Inline
  
  
--- 5606,5612 ----
  appear at the library level.
  
  @node Pragma No_Inline,Pragma No_Return,Pragma No_Heap_Finalization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id25}@anchor{a4}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-inline}@anchor{a5}
  @section Pragma No_Inline
  
  
*************** pragma No_Inline (NAME @{, NAME@});
*** 5575,5586 ****
  This pragma suppresses inlining for the callable entity or the instances of
  the generic subprogram designated by @code{NAME}, including inlining that
  results from the use of pragma @code{Inline}.  This pragma is always active,
! in particular it is not subject to the use of option @emph{-gnatn} or
! @emph{-gnatN}.  It is illegal to specify both pragma @code{No_Inline} and
  pragma @code{Inline_Always} for the same @code{NAME}.
  
  @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a5}
  @section Pragma No_Return
  
  
--- 5619,5630 ----
  This pragma suppresses inlining for the callable entity or the instances of
  the generic subprogram designated by @code{NAME}, including inlining that
  results from the use of pragma @code{Inline}.  This pragma is always active,
! in particular it is not subject to the use of option `-gnatn' or
! `-gnatN'.  It is illegal to specify both pragma @code{No_Inline} and
  pragma @code{Inline_Always} for the same @code{NAME}.
  
  @node Pragma No_Return,Pragma No_Strict_Aliasing,Pragma No_Inline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-return}@anchor{a6}
  @section Pragma No_Return
  
  
*************** available in all earlier versions of Ada
*** 5607,5613 ****
  pragma.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a6}
  @section Pragma No_Strict_Aliasing
  
  
--- 5651,5657 ----
  pragma.
  
  @node Pragma No_Strict_Aliasing,Pragma No_Tagged_Streams,Pragma No_Return,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-no-strict-aliasing}@anchor{a7}
  @section Pragma No_Strict_Aliasing
  
  
*************** in the @cite{GNAT User’s Guide}.
*** 5629,5635 ****
  This pragma currently has no effects on access to unconstrained array types.
  
  @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{a7}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{a8}
  @section Pragma No_Tagged_Streams
  
  
--- 5673,5679 ----
  This pragma currently has no effects on access to unconstrained array types.
  
  @node Pragma No_Tagged_Streams,Pragma Normalize_Scalars,Pragma No_Strict_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id26}@anchor{a8}@anchor{gnat_rm/implementation_defined_pragmas pragma-no-tagged-streams}@anchor{a9}
  @section Pragma No_Tagged_Streams
  
  
*************** with empty strings. This is useful to av
*** 5668,5674 ****
  level but has a negative impact on the debuggability of tagged types.
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{a9}
  @section Pragma Normalize_Scalars
  
  
--- 5712,5718 ----
  level but has a negative impact on the debuggability of tagged types.
  
  @node Pragma Normalize_Scalars,Pragma Obsolescent,Pragma No_Tagged_Streams,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-normalize-scalars}@anchor{aa}
  @section Pragma Normalize_Scalars
  
  
*************** are as follows:
*** 5686,5713 ****
  
  @table @asis
  
! @item @emph{Standard.Character}
  
  Objects whose root type is Standard.Character are initialized to
  Character’Last unless the subtype range excludes NUL (in which case
  NUL is used). This choice will always generate an invalid value if
  one exists.
  
! @item @emph{Standard.Wide_Character}
  
  Objects whose root type is Standard.Wide_Character are initialized to
  Wide_Character’Last unless the subtype range excludes NUL (in which case
  NUL is used). This choice will always generate an invalid value if
  one exists.
  
! @item @emph{Standard.Wide_Wide_Character}
  
  Objects whose root type is Standard.Wide_Wide_Character are initialized to
  the invalid value 16#FFFF_FFFF# unless the subtype range excludes NUL (in
  which case NUL is used). This choice will always generate an invalid value if
  one exists.
  
! @item @emph{Integer types}
  
  Objects of an integer type are treated differently depending on whether
  negative values are present in the subtype. If no negative values are
--- 5730,5757 ----
  
  @table @asis
  
! @item `Standard.Character'
  
  Objects whose root type is Standard.Character are initialized to
  Character’Last unless the subtype range excludes NUL (in which case
  NUL is used). This choice will always generate an invalid value if
  one exists.
  
! @item `Standard.Wide_Character'
  
  Objects whose root type is Standard.Wide_Character are initialized to
  Wide_Character’Last unless the subtype range excludes NUL (in which case
  NUL is used). This choice will always generate an invalid value if
  one exists.
  
! @item `Standard.Wide_Wide_Character'
  
  Objects whose root type is Standard.Wide_Wide_Character are initialized to
  the invalid value 16#FFFF_FFFF# unless the subtype range excludes NUL (in
  which case NUL is used). This choice will always generate an invalid value if
  one exists.
  
! @item `Integer types'
  
  Objects of an integer type are treated differently depending on whether
  negative values are present in the subtype. If no negative values are
*************** is in the subtype, and the largest posit
*** 5722,5747 ****
  the largest positive value is used. This choice will always generate
  an invalid value if one exists.
  
! @item @emph{Floating-Point Types}
  
  Objects of all floating-point types are initialized to all 1-bits. For
  standard IEEE format, this corresponds to a NaN (not a number) which is
  indeed an invalid value.
  
! @item @emph{Fixed-Point Types}
  
  Objects of all fixed-point types are treated as described above for integers,
  with the rules applying to the underlying integer value used to represent
  the fixed-point value.
  
! @item @emph{Modular types}
  
  Objects of a modular type are initialized to all one bits, except in
  the special case where zero is excluded from the subtype, in which
  case all zero bits are used. This choice will always generate an
  invalid value if one exists.
  
! @item @emph{Enumeration types}
  
  Objects of an enumeration type are initialized to all one-bits, i.e., to
  the value @code{2 ** typ'Size - 1} unless the subtype excludes the literal
--- 5766,5791 ----
  the largest positive value is used. This choice will always generate
  an invalid value if one exists.
  
! @item `Floating-Point Types'
  
  Objects of all floating-point types are initialized to all 1-bits. For
  standard IEEE format, this corresponds to a NaN (not a number) which is
  indeed an invalid value.
  
! @item `Fixed-Point Types'
  
  Objects of all fixed-point types are treated as described above for integers,
  with the rules applying to the underlying integer value used to represent
  the fixed-point value.
  
! @item `Modular types'
  
  Objects of a modular type are initialized to all one bits, except in
  the special case where zero is excluded from the subtype, in which
  case all zero bits are used. This choice will always generate an
  invalid value if one exists.
  
! @item `Enumeration types'
  
  Objects of an enumeration type are initialized to all one-bits, i.e., to
  the value @code{2 ** typ'Size - 1} unless the subtype excludes the literal
*************** will always generate an invalid value if
*** 5750,5756 ****
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{aa}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{ab}
  @section Pragma Obsolescent
  
  
--- 5794,5800 ----
  @end table
  
  @node Pragma Obsolescent,Pragma Optimize_Alignment,Pragma Normalize_Scalars,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id27}@anchor{ab}@anchor{gnat_rm/implementation_defined_pragmas pragma-obsolescent}@anchor{ac}
  @section Pragma Obsolescent
  
  
*************** pragma Obsolescent;
*** 5761,5772 ****
  
  pragma Obsolescent (
    [Message =>] static_string_EXPRESSION
! [,[Version =>] Ada_05]]);
  
  pragma Obsolescent (
    [Entity  =>] NAME
  [,[Message =>] static_string_EXPRESSION
! [,[Version =>] Ada_05]] );
  @end example
  
  This pragma can occur immediately following a declaration of an entity,
--- 5805,5816 ----
  
  pragma Obsolescent (
    [Message =>] static_string_EXPRESSION
! [,[Version =>] Ada_05]);
  
  pragma Obsolescent (
    [Entity  =>] NAME
  [,[Message =>] static_string_EXPRESSION
! [,[Version =>] Ada_05]]);
  @end example
  
  This pragma can occur immediately following a declaration of an entity,
*************** So if you specify @code{Entity =>} for t
*** 5846,5852 ****
  argument is present, it must be preceded by @code{Message =>}.
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{ac}
  @section Pragma Optimize_Alignment
  
  
--- 5890,5896 ----
  argument is present, it must be preceded by @code{Message =>}.
  
  @node Pragma Optimize_Alignment,Pragma Ordered,Pragma Obsolescent,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-optimize-alignment}@anchor{ad}
  @section Pragma Optimize_Alignment
  
  
*************** latter are compiled by default in pragma
*** 5932,5938 ****
  pragma appears at the start of the file.
  
  @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{ad}
  @section Pragma Ordered
  
  
--- 5976,5982 ----
  pragma appears at the start of the file.
  
  @node Pragma Ordered,Pragma Overflow_Mode,Pragma Optimize_Alignment,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ordered}@anchor{ae}
  @section Pragma Ordered
  
  
*************** specifies a set of possible colors, and
*** 5955,5961 ****
  
  For unordered enumeration types, it is generally a good idea if
  clients avoid comparisons (other than equality or inequality) and
! explicit ranges. (A @emph{client} is a unit where the type is referenced,
  other than the unit where the type is declared, its body, and its subunits.)
  For example, if code buried in some client says:
  
--- 5999,6005 ----
  
  For unordered enumeration types, it is generally a good idea if
  clients avoid comparisons (other than equality or inequality) and
! explicit ranges. (A `client' is a unit where the type is referenced,
  other than the unit where the type is declared, its body, and its subunits.)
  For example, if code buried in some client says:
  
*************** if D in Mon .. Fri then ...
*** 5998,6004 ****
  if D < Wed then ...
  @end example
  
! The pragma @emph{Ordered} is provided to mark enumeration types that
  are conceptually ordered, alerting the reader that clients may depend
  on the ordering. GNAT provides a pragma to mark enumerations as ordered
  rather than one to mark them as unordered, since in our experience,
--- 6042,6048 ----
  if D < Wed then ...
  @end example
  
! The pragma `Ordered' is provided to mark enumeration types that
  are conceptually ordered, alerting the reader that clients may depend
  on the ordering. GNAT provides a pragma to mark enumerations as ordered
  rather than one to mark them as unordered, since in our experience,
*************** are considered to be ordered types, so e
*** 6010,6016 ****
  pragma @code{Ordered} in package @code{Standard}.
  
  Normally pragma @code{Ordered} serves only as documentation and a guide for
! coding standards, but GNAT provides a warning switch @emph{-gnatw.u} that
  requests warnings for inappropriate uses (comparisons and explicit
  subranges) for unordered types. If this switch is used, then any
  enumeration type not marked with pragma @code{Ordered} will be considered
--- 6054,6060 ----
  pragma @code{Ordered} in package @code{Standard}.
  
  Normally pragma @code{Ordered} serves only as documentation and a guide for
! coding standards, but GNAT provides a warning switch `-gnatw.u' that
  requests warnings for inappropriate uses (comparisons and explicit
  subranges) for unordered types. If this switch is used, then any
  enumeration type not marked with pragma @code{Ordered} will be considered
*************** template can be instantiated for both ca
*** 6021,6030 ****
  for the case of generic enumerated types.
  
  For additional information please refer to the description of the
! @emph{-gnatw.u} switch in the GNAT User’s Guide.
  
  @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{ae}
  @section Pragma Overflow_Mode
  
  
--- 6065,6074 ----
  for the case of generic enumerated types.
  
  For additional information please refer to the description of the
! `-gnatw.u' switch in the GNAT User’s Guide.
  
  @node Pragma Overflow_Mode,Pragma Overriding_Renamings,Pragma Ordered,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overflow-mode}@anchor{af}
  @section Pragma Overflow_Mode
  
  
*************** overflow checking, but does not affect t
*** 6062,6069 ****
  The pragma @code{Unsuppress (Overflow_Check)} unsuppresses (enables)
  overflow checking, but does not affect the overflow mode.
  
! @node Pragma Overriding_Renamings,Pragma Partition_Elaboration_Policy,Pragma Overflow_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{af}
  @section Pragma Overriding_Renamings
  
  
--- 6106,6113 ----
  The pragma @code{Unsuppress (Overflow_Check)} unsuppresses (enables)
  overflow checking, but does not affect the overflow mode.
  
! @node Pragma Overriding_Renamings,Pragma Part_Of,Pragma Overflow_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-overriding-renamings}@anchor{b0}
  @section Pragma Overriding_Renamings
  
  
*************** even though
*** 6097,6137 ****
  RM 8.3 (15) stipulates that an overridden operation is not visible within the
  declaration of the overriding operation.
  
! @node Pragma Partition_Elaboration_Policy,Pragma Part_Of,Pragma Overriding_Renamings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b0}
! @section Pragma Partition_Elaboration_Policy
  
  
  Syntax:
  
  @example
! pragma Partition_Elaboration_Policy (POLICY_IDENTIFIER);
  
! POLICY_IDENTIFIER ::= Concurrent | Sequential
  @end example
  
! This pragma is standard in Ada 2005, but is available in all earlier
! versions of Ada as an implementation-defined pragma.
! See Ada 2012 Reference Manual for details.
  
! @node Pragma Part_Of,Pragma Passive,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b1}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b2}
! @section Pragma Part_Of
  
  
  Syntax:
  
  @example
! pragma Part_Of (ABSTRACT_STATE);
  
! ABSTRACT_STATE ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Part_Of} in the
! SPARK 2014 Reference Manual, section 7.2.6.
  
! @node Pragma Passive,Pragma Persistent_BSS,Pragma Part_Of,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b3}
  @section Pragma Passive
  
  
--- 6141,6181 ----
  RM 8.3 (15) stipulates that an overridden operation is not visible within the
  declaration of the overriding operation.
  
! @node Pragma Part_Of,Pragma Partition_Elaboration_Policy,Pragma Overriding_Renamings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id28}@anchor{b1}@anchor{gnat_rm/implementation_defined_pragmas pragma-part-of}@anchor{b2}
! @section Pragma Part_Of
  
  
  Syntax:
  
  @example
! pragma Part_Of (ABSTRACT_STATE);
  
! ABSTRACT_STATE ::= NAME
  @end example
  
! For the semantics of this pragma, see the entry for aspect @code{Part_Of} in the
! SPARK 2014 Reference Manual, section 7.2.6.
  
! @node Pragma Partition_Elaboration_Policy,Pragma Passive,Pragma Part_Of,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-partition-elaboration-policy}@anchor{b3}
! @section Pragma Partition_Elaboration_Policy
  
  
  Syntax:
  
  @example
! pragma Partition_Elaboration_Policy (POLICY_IDENTIFIER);
  
! POLICY_IDENTIFIER ::= Concurrent | Sequential
  @end example
  
! This pragma is standard in Ada 2005, but is available in all earlier
! versions of Ada as an implementation-defined pragma.
! See Ada 2012 Reference Manual for details.
  
! @node Pragma Passive,Pragma Persistent_BSS,Pragma Partition_Elaboration_Policy,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-passive}@anchor{b4}
  @section Pragma Passive
  
  
*************** For more information on the subject of p
*** 6155,6161 ****
  ‘Passive Task Optimization’ in the GNAT Users Guide.
  
  @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b4}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{b5}
  @section Pragma Persistent_BSS
  
  
--- 6199,6205 ----
  ‘Passive Task Optimization’ in the GNAT Users Guide.
  
  @node Pragma Persistent_BSS,Pragma Post,Pragma Passive,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id29}@anchor{b5}@anchor{gnat_rm/implementation_defined_pragmas pragma-persistent-bss}@anchor{b6}
  @section Pragma Persistent_BSS
  
  
*************** If this pragma is used on a target where
*** 6186,6192 ****
  then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
  @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b6}
  @section Pragma Post
  
  
--- 6230,6236 ----
  then the pragma will be ignored. See also @code{pragma Linker_Section}.
  
  @node Pragma Post,Pragma Postcondition,Pragma Persistent_BSS,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post}@anchor{b7}
  @section Pragma Post
  
  
*************** appear at the start of the declarations
*** 6211,6217 ****
  (preceded only by other pragmas).
  
  @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{b7}
  @section Pragma Postcondition
  
  
--- 6255,6261 ----
  (preceded only by other pragmas).
  
  @node Pragma Postcondition,Pragma Post_Class,Pragma Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-postcondition}@anchor{b8}
  @section Pragma Postcondition
  
  
*************** referenced in the postcondition expressi
*** 6252,6258 ****
  The postconditions are collected and automatically tested just
  before any return (implicit or explicit) in the subprogram body.
  A postcondition is only recognized if postconditions are active
! at the time the pragma is encountered. The compiler switch @emph{gnata}
  turns on all postconditions by default, and pragma @code{Check_Policy}
  with an identifier of @code{Postcondition} can also be used to
  control whether postconditions are active.
--- 6296,6302 ----
  The postconditions are collected and automatically tested just
  before any return (implicit or explicit) in the subprogram body.
  A postcondition is only recognized if postconditions are active
! at the time the pragma is encountered. The compiler switch `gnata'
  turns on all postconditions by default, and pragma @code{Check_Policy}
  with an identifier of @code{Postcondition} can also be used to
  control whether postconditions are active.
*************** Ada 2012, and has been retained in its o
*** 6376,6382 ****
  compatibility purposes.
  
  @node Pragma Post_Class,Pragma Pre,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{b8}
  @section Pragma Post_Class
  
  
--- 6420,6426 ----
  compatibility purposes.
  
  @node Pragma Post_Class,Pragma Pre,Pragma Postcondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-post-class}@anchor{b9}
  @section Pragma Post_Class
  
  
*************** appear at the start of the declarations
*** 6403,6409 ****
  Note: This pragma is called @code{Post_Class} rather than
  @code{Post'Class} because the latter would not be strictly
  conforming to the allowed syntax for pragmas. The motivation
! for provinding pragmas equivalent to the aspects is to allow a program
  to be written using the pragmas, and then compiled if necessary
  using an Ada compiler that does not recognize the pragmas or
  aspects, but is prepared to ignore the pragmas. The assertion
--- 6447,6453 ----
  Note: This pragma is called @code{Post_Class} rather than
  @code{Post'Class} because the latter would not be strictly
  conforming to the allowed syntax for pragmas. The motivation
! for providing pragmas equivalent to the aspects is to allow a program
  to be written using the pragmas, and then compiled if necessary
  using an Ada compiler that does not recognize the pragmas or
  aspects, but is prepared to ignore the pragmas. The assertion
*************** policy that controls this pragma is @cod
*** 6411,6417 ****
  @code{Post_Class}.
  
  @node Pragma Pre,Pragma Precondition,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{b9}
  @section Pragma Pre
  
  
--- 6455,6461 ----
  @code{Post_Class}.
  
  @node Pragma Pre,Pragma Precondition,Pragma Post_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre}@anchor{ba}
  @section Pragma Pre
  
  
*************** appear at the start of the declarations
*** 6436,6442 ****
  (preceded only by other pragmas).
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{ba}
  @section Pragma Precondition
  
  
--- 6480,6486 ----
  (preceded only by other pragmas).
  
  @node Pragma Precondition,Pragma Predicate,Pragma Pre,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-precondition}@anchor{bb}
  @section Pragma Precondition
  
  
*************** Ada 2012, and has been retained in its o
*** 6495,6501 ****
  compatibility purposes.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{bb}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{bc}
  @section Pragma Predicate
  
  
--- 6539,6545 ----
  compatibility purposes.
  
  @node Pragma Predicate,Pragma Predicate_Failure,Pragma Precondition,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id30}@anchor{bc}@anchor{gnat_rm/implementation_defined_pragmas pragma-predicate}@anchor{bd}
  @section Pragma Predicate
  
  
*************** defined for subtype B). When following t
*** 6549,6555 ****
  use of predicates should be avoided.
  
  @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{bd}
  @section Pragma Predicate_Failure
  
  
--- 6593,6599 ----
  use of predicates should be avoided.
  
  @node Pragma Predicate_Failure,Pragma Preelaborable_Initialization,Pragma Predicate,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-predicate-failure}@anchor{be}
  @section Pragma Predicate_Failure
  
  
*************** the language-defined
*** 6566,6572 ****
  @code{Predicate_Failure} aspect, and shares its restrictions and semantics.
  
  @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{be}
  @section Pragma Preelaborable_Initialization
  
  
--- 6610,6616 ----
  @code{Predicate_Failure} aspect, and shares its restrictions and semantics.
  
  @node Pragma Preelaborable_Initialization,Pragma Prefix_Exception_Messages,Pragma Predicate_Failure,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-preelaborable-initialization}@anchor{bf}
  @section Pragma Preelaborable_Initialization
  
  
*************** versions of Ada as an implementation-def
*** 6581,6587 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{bf}
  @section Pragma Prefix_Exception_Messages
  
  
--- 6625,6631 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Prefix_Exception_Messages,Pragma Pre_Class,Pragma Preelaborable_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-prefix-exception-messages}@anchor{c0}
  @section Pragma Prefix_Exception_Messages
  
  
*************** prefixing in this case, you can always c
*** 6612,6618 ****
  @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
  
  @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c0}
  @section Pragma Pre_Class
  
  
--- 6656,6662 ----
  @code{GNAT.Source_Info.Enclosing_Entity} and prepend the string manually.
  
  @node Pragma Pre_Class,Pragma Priority_Specific_Dispatching,Pragma Prefix_Exception_Messages,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-pre-class}@anchor{c1}
  @section Pragma Pre_Class
  
  
*************** policy that controls this pragma is @cod
*** 6647,6653 ****
  @code{Pre_Class}.
  
  @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c1}
  @section Pragma Priority_Specific_Dispatching
  
  
--- 6691,6697 ----
  @code{Pre_Class}.
  
  @node Pragma Priority_Specific_Dispatching,Pragma Profile,Pragma Pre_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-priority-specific-dispatching}@anchor{c2}
  @section Pragma Priority_Specific_Dispatching
  
  
*************** versions of Ada as an implementation-def
*** 6671,6677 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c2}
  @section Pragma Profile
  
  
--- 6715,6721 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Profile,Pragma Profile_Warnings,Pragma Priority_Specific_Dispatching,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile}@anchor{c3}
  @section Pragma Profile
  
  
*************** conforming Ada constructs.  The profile
*** 6950,6956 ****
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{c3}
  @section Pragma Profile_Warnings
  
  
--- 6994,7000 ----
  @end itemize
  
  @node Pragma Profile_Warnings,Pragma Propagate_Exceptions,Pragma Profile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-profile-warnings}@anchor{c4}
  @section Pragma Profile_Warnings
  
  
*************** violations of the profile generate warni
*** 6968,6974 ****
  of error messages.
  
  @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{c4}
  @section Pragma Propagate_Exceptions
  
  
--- 7012,7018 ----
  of error messages.
  
  @node Pragma Propagate_Exceptions,Pragma Provide_Shift_Operators,Pragma Profile_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-propagate-exceptions}@anchor{c5}
  @section Pragma Propagate_Exceptions
  
  
*************** purposes. It used to be used in connecti
*** 6987,6993 ****
  a now-obsolete mechanism for implementation of exceptions.
  
  @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{c5}
  @section Pragma Provide_Shift_Operators
  
  
--- 7031,7037 ----
  a now-obsolete mechanism for implementation of exceptions.
  
  @node Pragma Provide_Shift_Operators,Pragma Psect_Object,Pragma Propagate_Exceptions,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-provide-shift-operators}@anchor{c6}
  @section Pragma Provide_Shift_Operators
  
  
*************** including the function declarations for
*** 7007,7013 ****
  with the pragma Import (Intrinsic, …) statements.
  
  @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{c6}
  @section Pragma Psect_Object
  
  
--- 7051,7057 ----
  with the pragma Import (Intrinsic, …) statements.
  
  @node Pragma Psect_Object,Pragma Pure_Function,Pragma Provide_Shift_Operators,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-psect-object}@anchor{c7}
  @section Pragma Psect_Object
  
  
*************** EXTERNAL_SYMBOL ::=
*** 7027,7033 ****
  This pragma is identical in effect to pragma @code{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{c7}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{c8}
  @section Pragma Pure_Function
  
  
--- 7071,7077 ----
  This pragma is identical in effect to pragma @code{Common_Object}.
  
  @node Pragma Pure_Function,Pragma Rational,Pragma Psect_Object,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id31}@anchor{c8}@anchor{gnat_rm/implementation_defined_pragmas pragma-pure-function}@anchor{c9}
  @section Pragma Pure_Function
  
  
*************** overloaded declaration exists, in which
*** 7043,7051 ****
  to all entities).  It specifies that the function @code{Entity} is
  to be considered pure for the purposes of code generation.  This means
  that the compiler can assume that there are no side effects, and
! in particular that two calls with identical arguments produce the
! same result.  It also means that the function can be used in an
! address clause.
  
  Note that, quite deliberately, there are no static checks to try
  to ensure that this promise is met, so @code{Pure_Function} can be used
--- 7087,7095 ----
  to all entities).  It specifies that the function @code{Entity} is
  to be considered pure for the purposes of code generation.  This means
  that the compiler can assume that there are no side effects, and
! in particular that two identical calls produce the same result in
! the same context. It also means that the function can be used in
! an address clause.
  
  Note that, quite deliberately, there are no static checks to try
  to ensure that this promise is met, so @code{Pure_Function} can be used
*************** unit is not a Pure unit in the categoriz
*** 7089,7095 ****
  thus marked is free to @code{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{c9}
  @section Pragma Rational
  
  
--- 7133,7139 ----
  thus marked is free to @code{with} non-pure units.
  
  @node Pragma Rational,Pragma Ravenscar,Pragma Pure_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rational}@anchor{ca}
  @section Pragma Rational
  
  
*************** pragma Profile (Rational);
*** 7107,7113 ****
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{ca}
  @section Pragma Ravenscar
  
  
--- 7151,7157 ----
  @end example
  
  @node Pragma Ravenscar,Pragma Refined_Depends,Pragma Rational,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-ravenscar}@anchor{cb}
  @section Pragma Ravenscar
  
  
*************** pragma Profile (Ravenscar);
*** 7127,7133 ****
  which is the preferred method of setting the @code{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{cb}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{cc}
  @section Pragma Refined_Depends
  
  
--- 7171,7177 ----
  which is the preferred method of setting the @code{Ravenscar} profile.
  
  @node Pragma Refined_Depends,Pragma Refined_Global,Pragma Ravenscar,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id32}@anchor{cc}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-depends}@anchor{cd}
  @section Pragma Refined_Depends
  
  
*************** For the semantics of this pragma, see th
*** 7160,7166 ****
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{cd}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{ce}
  @section Pragma Refined_Global
  
  
--- 7204,7210 ----
  the SPARK 2014 Reference Manual, section 6.1.5.
  
  @node Pragma Refined_Global,Pragma Refined_Post,Pragma Refined_Depends,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id33}@anchor{ce}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-global}@anchor{cf}
  @section Pragma Refined_Global
  
  
*************** For the semantics of this pragma, see th
*** 7185,7191 ****
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{cf}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d0}
  @section Pragma Refined_Post
  
  
--- 7229,7235 ----
  the SPARK 2014 Reference Manual, section 6.1.4.
  
  @node Pragma Refined_Post,Pragma Refined_State,Pragma Refined_Global,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id34}@anchor{d0}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-post}@anchor{d1}
  @section Pragma Refined_Post
  
  
*************** For the semantics of this pragma, see th
*** 7199,7205 ****
  the SPARK 2014 Reference Manual, section 7.2.7.
  
  @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d1}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d2}
  @section Pragma Refined_State
  
  
--- 7243,7249 ----
  the SPARK 2014 Reference Manual, section 7.2.7.
  
  @node Pragma Refined_State,Pragma Relative_Deadline,Pragma Refined_Post,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id35}@anchor{d2}@anchor{gnat_rm/implementation_defined_pragmas pragma-refined-state}@anchor{d3}
  @section Pragma Refined_State
  
  
*************** For the semantics of this pragma, see th
*** 7225,7231 ****
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{d3}
  @section Pragma Relative_Deadline
  
  
--- 7269,7275 ----
  the SPARK 2014 Reference Manual, section 7.2.2.
  
  @node Pragma Relative_Deadline,Pragma Remote_Access_Type,Pragma Refined_State,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-relative-deadline}@anchor{d4}
  @section Pragma Relative_Deadline
  
  
*************** versions of Ada as an implementation-def
*** 7240,7246 ****
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Rename_Pragma,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d4}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d5}
  @section Pragma Remote_Access_Type
  
  
--- 7284,7290 ----
  See Ada 2012 Reference Manual for details.
  
  @node Pragma Remote_Access_Type,Pragma Rename_Pragma,Pragma Relative_Deadline,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id36}@anchor{d5}@anchor{gnat_rm/implementation_defined_pragmas pragma-remote-access-type}@anchor{d6}
  @section Pragma Remote_Access_Type
  
  
*************** pertaining to remote access to class-wid
*** 7266,7272 ****
  actual type must be a remote access to class-wide type.
  
  @node Pragma Rename_Pragma,Pragma Restricted_Run_Time,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{d6}
  @section Pragma Rename_Pragma
  
  
--- 7310,7316 ----
  actual type must be a remote access to class-wide type.
  
  @node Pragma Rename_Pragma,Pragma Restricted_Run_Time,Pragma Remote_Access_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-rename-pragma}@anchor{d7}
  @section Pragma Rename_Pragma
  
  
*************** Pragma Inline_Only will not necessarily
*** 7305,7311 ****
  compiler; it’s up to you to make sure the semantics are close enough.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d7}
  @section Pragma Restricted_Run_Time
  
  
--- 7349,7355 ----
  compiler; it’s up to you to make sure the semantics are close enough.
  
  @node Pragma Restricted_Run_Time,Pragma Restriction_Warnings,Pragma Rename_Pragma,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restricted-run-time}@anchor{d8}
  @section Pragma Restricted_Run_Time
  
  
*************** which is the preferred method of setting
*** 7326,7332 ****
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{d8}
  @section Pragma Restriction_Warnings
  
  
--- 7370,7376 ----
  profile.
  
  @node Pragma Restriction_Warnings,Pragma Reviewable,Pragma Restricted_Run_Time,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-restriction-warnings}@anchor{d9}
  @section Pragma Restriction_Warnings
  
  
*************** generating a warning, but any other use
*** 7364,7370 ****
  defined pragmas will cause a warning to be generated.
  
  @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{d9}
  @section Pragma Reviewable
  
  
--- 7408,7414 ----
  defined pragmas will cause a warning to be generated.
  
  @node Pragma Reviewable,Pragma Secondary_Stack_Size,Pragma Restriction_Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-reviewable}@anchor{da}
  @section Pragma Reviewable
  
  
*************** run with various special switches as fol
*** 7384,7405 ****
  @itemize *
  
  @item 
! @emph{Where compiler-generated run-time checks remain}
  
! The switch @emph{-gnatGL}
  may be used to list the expanded code in pseudo-Ada form.
  Runtime checks show up in the listing either as explicit
  checks or operators marked with @{@} to indicate a check is present.
  
  @item 
! @emph{An identification of known exceptions at compile time}
  
! If the program is compiled with @emph{-gnatwa},
  the compiler warning messages will indicate all cases where the compiler
  detects that an exception is certain to occur at run time.
  
  @item 
! @emph{Possible reads of uninitialized variables}
  
  The compiler warns of many such cases, but its output is incomplete.
  @end itemize
--- 7428,7449 ----
  @itemize *
  
  @item 
! `Where compiler-generated run-time checks remain'
  
! The switch `-gnatGL'
  may be used to list the expanded code in pseudo-Ada form.
  Runtime checks show up in the listing either as explicit
  checks or operators marked with @{@} to indicate a check is present.
  
  @item 
! `An identification of known exceptions at compile time'
  
! If the program is compiled with `-gnatwa',
  the compiler warning messages will indicate all cases where the compiler
  detects that an exception is certain to occur at run time.
  
  @item 
! `Possible reads of uninitialized variables'
  
  The compiler warns of many such cases, but its output is incomplete.
  @end itemize
*************** possible points at which uninitialized d
*** 7413,7441 ****
  @itemize *
  
  @item 
! @emph{Where run-time support routines are implicitly invoked}
  
! In the output from @emph{-gnatGL},
  run-time calls are explicitly listed as calls to the relevant
  run-time routine.
  
  @item 
! @emph{Object code listing}
  
! This may be obtained either by using the @emph{-S} switch,
  or the objdump utility.
  
  @item 
! @emph{Constructs known to be erroneous at compile time}
  
! These are identified by warnings issued by the compiler (use @emph{-gnatwa}).
  
  @item 
! @emph{Stack usage information}
  
  Static stack usage data (maximum per-subprogram) can be obtained via the
! @emph{-fstack-usage} switch to the compiler.
! Dynamic stack usage data (per task) can be obtained via the @emph{-u} switch
  to gnatbind
  @end itemize
  
--- 7457,7485 ----
  @itemize *
  
  @item 
! `Where run-time support routines are implicitly invoked'
  
! In the output from `-gnatGL',
  run-time calls are explicitly listed as calls to the relevant
  run-time routine.
  
  @item 
! `Object code listing'
  
! This may be obtained either by using the `-S' switch,
  or the objdump utility.
  
  @item 
! `Constructs known to be erroneous at compile time'
  
! These are identified by warnings issued by the compiler (use `-gnatwa').
  
  @item 
! `Stack usage information'
  
  Static stack usage data (maximum per-subprogram) can be obtained via the
! `-fstack-usage' switch to the compiler.
! Dynamic stack usage data (per task) can be obtained via the `-u' switch
  to gnatbind
  @end itemize
  
*************** to gnatbind
*** 7444,7464 ****
  @itemize *
  
  @item 
! @emph{Object code listing of entire partition}
  
! This can be obtained by compiling the partition with @emph{-S},
  or by applying objdump
  to all the object files that are part of the partition.
  
  @item 
! @emph{A description of the run-time model}
  
  The full sources of the run-time are available, and the documentation of
  these routines describes how these run-time routines interface to the
  underlying operating system facilities.
  
  @item 
! @emph{Control and data-flow information}
  @end itemize
  
  
--- 7488,7508 ----
  @itemize *
  
  @item 
! `Object code listing of entire partition'
  
! This can be obtained by compiling the partition with `-S',
  or by applying objdump
  to all the object files that are part of the partition.
  
  @item 
! `A description of the run-time model'
  
  The full sources of the run-time are available, and the documentation of
  these routines describes how these run-time routines interface to the
  underlying operating system facilities.
  
  @item 
! `Control and data-flow information'
  @end itemize
  
  
*************** comprehensive messages identifying possi
*** 7468,7474 ****
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{da}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{db}
  @section Pragma Secondary_Stack_Size
  
  
--- 7512,7518 ----
  information.
  
  @node Pragma Secondary_Stack_Size,Pragma Share_Generic,Pragma Reviewable,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id37}@anchor{db}@anchor{gnat_rm/implementation_defined_pragmas pragma-secondary-stack-size}@anchor{dc}
  @section Pragma Secondary_Stack_Size
  
  
*************** Note the pragma cannot appear when the r
*** 7504,7510 ****
  is in effect.
  
  @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{dc}
  @section Pragma Share_Generic
  
  
--- 7548,7554 ----
  is in effect.
  
  @node Pragma Share_Generic,Pragma Shared,Pragma Secondary_Stack_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-share-generic}@anchor{dd}
  @section Pragma Share_Generic
  
  
*************** than to check that the given names are a
*** 7522,7528 ****
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{dd}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{de}
  @section Pragma Shared
  
  
--- 7566,7572 ----
  generic instances.
  
  @node Pragma Shared,Pragma Short_Circuit_And_Or,Pragma Share_Generic,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id38}@anchor{de}@anchor{gnat_rm/implementation_defined_pragmas pragma-shared}@anchor{df}
  @section Pragma Shared
  
  
*************** This pragma is provided for compatibilit
*** 7530,7536 ****
  semantics are identical to pragma Atomic.
  
  @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{df}
  @section Pragma Short_Circuit_And_Or
  
  
--- 7574,7580 ----
  semantics are identical to pragma Atomic.
  
  @node Pragma Short_Circuit_And_Or,Pragma Short_Descriptors,Pragma Shared,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-circuit-and-or}@anchor{e0}
  @section Pragma Short_Circuit_And_Or
  
  
*************** within the file being compiled, it appli
*** 7549,7569 ****
  There is no requirement that all units in a partition use this option.
  
  @node Pragma Short_Descriptors,Pragma Simple_Storage_Pool_Type,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e0}
  @section Pragma Short_Descriptors
  
  
  Syntax:
  
  @example
! pragma Short_Descriptors
  @end example
  
  This pragma is provided for compatibility with other Ada implementations. It
  is recognized but ignored by all current versions of GNAT.
  
  @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Short_Descriptors,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e1}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e2}
  @section Pragma Simple_Storage_Pool_Type
  
  
--- 7593,7613 ----
  There is no requirement that all units in a partition use this option.
  
  @node Pragma Short_Descriptors,Pragma Simple_Storage_Pool_Type,Pragma Short_Circuit_And_Or,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-short-descriptors}@anchor{e1}
  @section Pragma Short_Descriptors
  
  
  Syntax:
  
  @example
! pragma Short_Descriptors;
  @end example
  
  This pragma is provided for compatibility with other Ada implementations. It
  is recognized but ignored by all current versions of GNAT.
  
  @node Pragma Simple_Storage_Pool_Type,Pragma Source_File_Name,Pragma Short_Descriptors,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id39}@anchor{e2}@anchor{gnat_rm/implementation_defined_pragmas pragma-simple-storage-pool-type}@anchor{e3}
  @section Pragma Simple_Storage_Pool_Type
  
  
*************** storage-management discipline).
*** 7617,7623 ****
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{e3,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
--- 7661,7667 ----
  
  An object of a simple storage pool type can be associated with an access
  type by specifying the attribute
! @ref{e4,,Simple_Storage_Pool}. For example:
  
  @example
  My_Pool : My_Simple_Storage_Pool_Type;
*************** type Acc is access My_Data_Type;
*** 7627,7637 ****
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{e3,,Simple_Storage_Pool}
  for further details.
  
  @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e4}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{e5}
  @section Pragma Source_File_Name
  
  
--- 7671,7681 ----
  for Acc'Simple_Storage_Pool use My_Pool;
  @end example
  
! See attribute @ref{e4,,Simple_Storage_Pool}
  for further details.
  
  @node Pragma Source_File_Name,Pragma Source_File_Name_Project,Pragma Simple_Storage_Pool_Type,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id40}@anchor{e5}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name}@anchor{e6}
  @section Pragma Source_File_Name
  
  
*************** Syntax:
*** 7639,7650 ****
  
  @example
  pragma Source_File_Name (
!   [Unit_Name   =>] unit_NAME,
    Spec_File_Name =>  STRING_LITERAL,
    [Index => INTEGER_LITERAL]);
  
  pragma Source_File_Name (
!   [Unit_Name   =>] unit_NAME,
    Body_File_Name =>  STRING_LITERAL,
    [Index => INTEGER_LITERAL]);
  @end example
--- 7683,7694 ----
  
  @example
  pragma Source_File_Name (
!   [Unit_Name     =>] unit_NAME,
    Spec_File_Name =>  STRING_LITERAL,
    [Index => INTEGER_LITERAL]);
  
  pragma Source_File_Name (
!   [Unit_Name     =>] unit_NAME,
    Body_File_Name =>  STRING_LITERAL,
    [Index => INTEGER_LITERAL]);
  @end example
*************** pragma Source_File_Name (
*** 7652,7658 ****
  Use this to override the normal naming convention.  It is a configuration
  pragma, and so has the usual applicability of configuration pragmas
  (i.e., it applies to either an entire partition, or to all units in a
! compilation, or to a single unit, depending on how it is used.
  @code{unit_name} is mapped to @code{file_name_literal}.  The identifier for
  the second argument is required, and indicates whether this is the file
  name for the spec or for the body.
--- 7696,7702 ----
  Use this to override the normal naming convention.  It is a configuration
  pragma, and so has the usual applicability of configuration pragmas
  (i.e., it applies to either an entire partition, or to all units in a
! compilation, or to a single unit, depending on how it is used).
  @code{unit_name} is mapped to @code{file_name_literal}.  The identifier for
  the second argument is required, and indicates whether this is the file
  name for the spec or for the body.
*************** replacement of any dots in the unit name
*** 7719,7742 ****
  
  Note that Source_File_Name pragmas should not be used if you are using
  project files. The reason for this rule is that the project manager is not
! aware of these pragmas, and so other tools that use the projet file would not
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
! Source_File_Name cannot appear after a @ref{e6,,Pragma Source_File_Name_Project}.
  
  For more details on the use of the @code{Source_File_Name} pragma, see the
  sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes}
  in the @cite{GNAT User’s Guide}.
  
  @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e7}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{e6}
  @section Pragma Source_File_Name_Project
  
  
  This pragma has the same syntax and semantics as pragma Source_File_Name.
  It is only allowed as a stand-alone configuration pragma.
! It cannot appear after a @ref{e5,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
--- 7763,7786 ----
  
  Note that Source_File_Name pragmas should not be used if you are using
  project files. The reason for this rule is that the project manager is not
! aware of these pragmas, and so other tools that use the project file would not
  be aware of the intended naming conventions. If you are using project files,
  file naming is controlled by Source_File_Name_Project pragmas, which are
  usually supplied automatically by the project manager. A pragma
! Source_File_Name cannot appear after a @ref{e7,,Pragma Source_File_Name_Project}.
  
  For more details on the use of the @code{Source_File_Name} pragma, see the
  sections on @cite{Using Other File Names} and @cite{Alternative File Naming Schemes}
  in the @cite{GNAT User’s Guide}.
  
  @node Pragma Source_File_Name_Project,Pragma Source_Reference,Pragma Source_File_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id41}@anchor{e8}@anchor{gnat_rm/implementation_defined_pragmas pragma-source-file-name-project}@anchor{e7}
  @section Pragma Source_File_Name_Project
  
  
  This pragma has the same syntax and semantics as pragma Source_File_Name.
  It is only allowed as a stand-alone configuration pragma.
! It cannot appear after a @ref{e6,,Pragma Source_File_Name}, and
  most importantly, once pragma Source_File_Name_Project appears,
  no further Source_File_Name pragmas are allowed.
  
*************** Source_File_Name or Source_File_Name_Pro
*** 7748,7754 ****
  known to the project manager).
  
  @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{e8}
  @section Pragma Source_Reference
  
  
--- 7792,7798 ----
  known to the project manager).
  
  @node Pragma Source_Reference,Pragma SPARK_Mode,Pragma Source_File_Name_Project,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-source-reference}@anchor{e9}
  @section Pragma Source_Reference
  
  
*************** the pragma line (for use in error messag
*** 7764,7770 ****
  information).  @code{string_literal} is a static string constant that
  specifies the file name to be used in error messages and debugging
  information.  This is most notably used for the output of @code{gnatchop}
! with the @emph{-r} switch, to make sure that the original unchopped
  source file is the one referred to.
  
  The second argument must be a string literal, it cannot be a static
--- 7808,7814 ----
  information).  @code{string_literal} is a static string constant that
  specifies the file name to be used in error messages and debugging
  information.  This is most notably used for the output of @code{gnatchop}
! with the `-r' switch, to make sure that the original unchopped
  source file is the one referred to.
  
  The second argument must be a string literal, it cannot be a static
*************** string expression other than a string li
*** 7772,7778 ****
  is needed for error messages issued by all phases of the compiler.
  
  @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{e9}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{ea}
  @section Pragma SPARK_Mode
  
  
--- 7816,7822 ----
  is needed for error messages issued by all phases of the compiler.
  
  @node Pragma SPARK_Mode,Pragma Static_Elaboration_Desired,Pragma Source_Reference,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id42}@anchor{ea}@anchor{gnat_rm/implementation_defined_pragmas pragma-spark-mode}@anchor{eb}
  @section Pragma SPARK_Mode
  
  
*************** SPARK_Mode (@code{Off}), then that pragm
*** 7854,7860 ****
  the package body.
  
  @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{eb}
  @section Pragma Static_Elaboration_Desired
  
  
--- 7898,7904 ----
  the package body.
  
  @node Pragma Static_Elaboration_Desired,Pragma Stream_Convert,Pragma SPARK_Mode,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-static-elaboration-desired}@anchor{ec}
  @section Pragma Static_Elaboration_Desired
  
  
*************** construction of larger aggregates with s
*** 7878,7884 ****
  choice.)
  
  @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{ec}
  @section Pragma Stream_Convert
  
  
--- 7922,7928 ----
  choice.)
  
  @node Pragma Stream_Convert,Pragma Style_Checks,Pragma Static_Elaboration_Desired,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-stream-convert}@anchor{ed}
  @section Pragma Stream_Convert
  
  
*************** the pragma is silently ignored, and the
*** 7955,7961 ****
  attributes is used instead.
  
  @node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{ed}
  @section Pragma Style_Checks
  
  
--- 7999,8005 ----
  attributes is used instead.
  
  @node Pragma Style_Checks,Pragma Subtitle,Pragma Stream_Convert,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-style-checks}@anchor{ee}
  @section Pragma Style_Checks
  
  
*************** the @code{gnat.adc} file).
*** 7977,7983 ****
  The form with a string literal specifies which style options are to be
  activated.  These are additive, so they apply in addition to any previously
  set style check options.  The codes for the options are the same as those
! used in the @emph{-gnaty} switch to @emph{gcc} or @emph{gnatmake}.
  For example the following two methods can be used to enable
  layout checking:
  
--- 8021,8027 ----
  The form with a string literal specifies which style options are to be
  activated.  These are additive, so they apply in addition to any previously
  set style check options.  The codes for the options are the same as those
! used in the `-gnaty' switch to `gcc' or `gnatmake'.
  For example the following two methods can be used to enable
  layout checking:
  
*************** Rf2 : Integer := ARG;      -- OK, no err
*** 8028,8034 ****
  @end example
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{ee}
  @section Pragma Subtitle
  
  
--- 8072,8078 ----
  @end example
  
  @node Pragma Subtitle,Pragma Suppress,Pragma Style_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-subtitle}@anchor{ef}
  @section Pragma Subtitle
  
  
*************** This pragma is recognized for compatibil
*** 8042,8048 ****
  but is ignored by GNAT.
  
  @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{ef}
  @section Pragma Suppress
  
  
--- 8086,8092 ----
  but is ignored by GNAT.
  
  @node Pragma Suppress,Pragma Suppress_All,Pragma Subtitle,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress}@anchor{f0}
  @section Pragma Suppress
  
  
*************** Of course, run-time checks are omitted w
*** 8115,8121 ****
  that they will not fail, whether or not checks are suppressed.
  
  @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f0}
  @section Pragma Suppress_All
  
  
--- 8159,8165 ----
  that they will not fail, whether or not checks are suppressed.
  
  @node Pragma Suppress_All,Pragma Suppress_Debug_Info,Pragma Suppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-all}@anchor{f1}
  @section Pragma Suppress_All
  
  
*************** The use of the standard Ada pragma @code
*** 8134,8140 ****
  as a normal configuration pragma is the preferred usage in GNAT.
  
  @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f1}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f2}
  @section Pragma Suppress_Debug_Info
  
  
--- 8178,8184 ----
  as a normal configuration pragma is the preferred usage in GNAT.
  
  @node Pragma Suppress_Debug_Info,Pragma Suppress_Exception_Locations,Pragma Suppress_All,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id43}@anchor{f2}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-debug-info}@anchor{f3}
  @section Pragma Suppress_Debug_Info
  
  
*************** for the specified entity. It is intended
*** 8149,8155 ****
  the debugger, and navigating around debugger problems.
  
  @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f3}
  @section Pragma Suppress_Exception_Locations
  
  
--- 8193,8199 ----
  the debugger, and navigating around debugger problems.
  
  @node Pragma Suppress_Exception_Locations,Pragma Suppress_Initialization,Pragma Suppress_Debug_Info,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-exception-locations}@anchor{f4}
  @section Pragma Suppress_Exception_Locations
  
  
*************** a partition, so it is fine to have some
*** 8172,8178 ****
  with this pragma and others compiled in normal mode without it.
  
  @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f4}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f5}
  @section Pragma Suppress_Initialization
  
  
--- 8216,8222 ----
  with this pragma and others compiled in normal mode without it.
  
  @node Pragma Suppress_Initialization,Pragma Task_Name,Pragma Suppress_Exception_Locations,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id44}@anchor{f5}@anchor{gnat_rm/implementation_defined_pragmas pragma-suppress-initialization}@anchor{f6}
  @section Pragma Suppress_Initialization
  
  
*************** is suppressed, just as though its subtyp
*** 8217,8223 ****
  Suppress_Initialization, as described above.
  
  @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{f6}
  @section Pragma Task_Name
  
  
--- 8261,8267 ----
  Suppress_Initialization, as described above.
  
  @node Pragma Task_Name,Pragma Task_Storage,Pragma Suppress_Initialization,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-name}@anchor{f7}
  @section Pragma Task_Name
  
  
*************** end;
*** 8273,8279 ****
  @end example
  
  @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{f7}
  @section Pragma Task_Storage
  
  
--- 8317,8323 ----
  @end example
  
  @node Pragma Task_Storage,Pragma Test_Case,Pragma Task_Name,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-task-storage}@anchor{f8}
  @section Pragma Task_Storage
  
  
*************** created, depending on the target.  This
*** 8293,8299 ****
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f8}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{f9}
  @section Pragma Test_Case
  
  
--- 8337,8343 ----
  type.
  
  @node Pragma Test_Case,Pragma Thread_Local_Storage,Pragma Task_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id45}@anchor{f9}@anchor{gnat_rm/implementation_defined_pragmas pragma-test-case}@anchor{fa}
  @section Pragma Test_Case
  
  
*************** postcondition. Mode @code{Robustness} in
*** 8349,8355 ****
  postcondition of the subprogram should be ignored for this test case.
  
  @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fa}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{fb}
  @section Pragma Thread_Local_Storage
  
  
--- 8393,8399 ----
  postcondition of the subprogram should be ignored for this test case.
  
  @node Pragma Thread_Local_Storage,Pragma Time_Slice,Pragma Test_Case,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id46}@anchor{fb}@anchor{gnat_rm/implementation_defined_pragmas pragma-thread-local-storage}@anchor{fc}
  @section Pragma Thread_Local_Storage
  
  
*************** pragma Thread_Local_Storage ([Entity =>]
*** 8368,8374 ****
  This pragma specifies that the specified entity, which must be
  a variable declared in a library-level package, is to be marked as
  “Thread Local Storage” (@code{TLS}). On systems supporting this (which
! include Windows, Solaris, GNU/Linux, and VxWorks 6), this causes each
  thread (and hence each Ada task) to see a distinct copy of the variable.
  
  The variable must not have default initialization, and if there is
--- 8412,8418 ----
  This pragma specifies that the specified entity, which must be
  a variable declared in a library-level package, is to be marked as
  “Thread Local Storage” (@code{TLS}). On systems supporting this (which
! include Windows, Solaris, GNU/Linux, and VxWorks), this causes each
  thread (and hence each Ada task) to see a distinct copy of the variable.
  
  The variable must not have default initialization, and if there is
*************** If this pragma is used on a system where
*** 8387,8393 ****
  then an error message will be generated and the program will be rejected.
  
  @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{fc}
  @section Pragma Time_Slice
  
  
--- 8431,8437 ----
  then an error message will be generated and the program will be rejected.
  
  @node Pragma Time_Slice,Pragma Title,Pragma Thread_Local_Storage,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-time-slice}@anchor{fd}
  @section Pragma Time_Slice
  
  
*************** It is ignored if it is used in a system
*** 8403,8409 ****
  or if it appears in other than the main program unit.
  
  @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{fd}
  @section Pragma Title
  
  
--- 8447,8453 ----
  or if it appears in other than the main program unit.
  
  @node Pragma Title,Pragma Type_Invariant,Pragma Time_Slice,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-title}@anchor{fe}
  @section Pragma Title
  
  
*************** notation is used, and named and position
*** 8428,8434 ****
  following the normal rules for procedure calls in Ada.
  
  @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{fe}
  @section Pragma Type_Invariant
  
  
--- 8472,8478 ----
  following the normal rules for procedure calls in Ada.
  
  @node Pragma Type_Invariant,Pragma Type_Invariant_Class,Pragma Title,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant}@anchor{ff}
  @section Pragma Type_Invariant
  
  
*************** controlled by the assertion identifier @
*** 8449,8455 ****
  rather than @code{Invariant}.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{ff}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{100}
  @section Pragma Type_Invariant_Class
  
  
--- 8493,8499 ----
  rather than @code{Invariant}.
  
  @node Pragma Type_Invariant_Class,Pragma Unchecked_Union,Pragma Type_Invariant,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id47}@anchor{100}@anchor{gnat_rm/implementation_defined_pragmas pragma-type-invariant-class}@anchor{101}
  @section Pragma Type_Invariant_Class
  
  
*************** policy that controls this pragma is @cod
*** 8476,8482 ****
  not @code{Type_Invariant_Class}.
  
  @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{101}
  @section Pragma Unchecked_Union
  
  
--- 8520,8526 ----
  not @code{Type_Invariant_Class}.
  
  @node Pragma Unchecked_Union,Pragma Unevaluated_Use_Of_Old,Pragma Type_Invariant_Class,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unchecked-union}@anchor{102}
  @section Pragma Unchecked_Union
  
  
*************** version in all language modes (Ada 83, A
*** 8496,8502 ****
  details, consult the Ada 2012 Reference Manual, section B.3.3.
  
  @node Pragma Unevaluated_Use_Of_Old,Pragma Unimplemented_Unit,Pragma Unchecked_Union,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{102}
  @section Pragma Unevaluated_Use_Of_Old
  
  
--- 8540,8546 ----
  details, consult the Ada 2012 Reference Manual, section B.3.3.
  
  @node Pragma Unevaluated_Use_Of_Old,Pragma Unimplemented_Unit,Pragma Unchecked_Union,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unevaluated-use-of-old}@anchor{103}
  @section Pragma Unevaluated_Use_Of_Old
  
  
*************** uses up to the end of the corresponding
*** 8551,8557 ****
  sequence of package declarations.
  
  @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{103}
  @section Pragma Unimplemented_Unit
  
  
--- 8595,8601 ----
  sequence of package declarations.
  
  @node Pragma Unimplemented_Unit,Pragma Universal_Aliasing,Pragma Unevaluated_Use_Of_Old,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unimplemented-unit}@anchor{104}
  @section Pragma Unimplemented_Unit
  
  
*************** The abort only happens if code is being
*** 8571,8577 ****
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{104}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{105}
  @section Pragma Universal_Aliasing
  
  
--- 8615,8621 ----
  specs of unimplemented packages in syntax or semantic checking mode.
  
  @node Pragma Universal_Aliasing,Pragma Unmodified,Pragma Unimplemented_Unit,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id48}@anchor{105}@anchor{gnat_rm/implementation_defined_pragmas pragma-universal-aliasing}@anchor{106}
  @section Pragma Universal_Aliasing
  
  
*************** situations in which it must be suppresse
*** 8590,8596 ****
  @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{106}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{107}
  @section Pragma Unmodified
  
  
--- 8634,8640 ----
  @code{Optimization and Strict Aliasing} in the @cite{GNAT User’s Guide}.
  
  @node Pragma Unmodified,Pragma Unreferenced,Pragma Universal_Aliasing,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id49}@anchor{107}@anchor{gnat_rm/implementation_defined_pragmas pragma-unmodified}@anchor{108}
  @section Pragma Unmodified
  
  
*************** be.
*** 8618,8630 ****
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use @code{pragma Unmodified} for such
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{108}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{109}
  @section Pragma Unreferenced
  
  
--- 8662,8674 ----
  
  For the variable case, warnings are never given for unreferenced variables
  whose name contains one of the substrings
! @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSE, TMP, TEMP} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
  Thus it is never necessary to use @code{pragma Unmodified} for such
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced,Pragma Unreferenced_Objects,Pragma Unmodified,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id50}@anchor{109}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced}@anchor{10a}
  @section Pragma Unreferenced
  
  
*************** Note that if a warning is desired for al
*** 8670,8681 ****
  regardless of whether they occur in the same unit as the subprogram
  declaration, then this pragma should not be used (calls from another
  unit would not be flagged); pragma Obsolescent can be used instead
! for this purpose, see @ref{ab,,Pragma Obsolescent}.
  
  The second form of pragma @code{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
  mentioned in @code{with} clauses (similar to the usage of pragma
! @code{Elaborate_All}. The effect is to suppress warnings about unreferenced
  units and unreferenced entities within these units.
  
  For the variable case, warnings are never given for unreferenced variables
--- 8714,8725 ----
  regardless of whether they occur in the same unit as the subprogram
  declaration, then this pragma should not be used (calls from another
  unit would not be flagged); pragma Obsolescent can be used instead
! for this purpose, see @ref{ac,,Pragma Obsolescent}.
  
  The second form of pragma @code{Unreferenced} is used within a context
  clause. In this case the arguments must be unit names of units previously
  mentioned in @code{with} clauses (similar to the usage of pragma
! @code{Elaborate_All}). The effect is to suppress warnings about unreferenced
  units and unreferenced entities within these units.
  
  For the variable case, warnings are never given for unreferenced variables
*************** Thus it is never necessary to use @code{
*** 8686,8692 ****
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10a}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{10b}
  @section Pragma Unreferenced_Objects
  
  
--- 8730,8736 ----
  variables, though it is harmless to do so.
  
  @node Pragma Unreferenced_Objects,Pragma Unreserve_All_Interrupts,Pragma Unreferenced,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id51}@anchor{10b}@anchor{gnat_rm/implementation_defined_pragmas pragma-unreferenced-objects}@anchor{10c}
  @section Pragma Unreferenced_Objects
  
  
*************** compiler will automatically suppress unw
*** 8711,8717 ****
  not being referenced.
  
  @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{10c}
  @section Pragma Unreserve_All_Interrupts
  
  
--- 8755,8761 ----
  not being referenced.
  
  @node Pragma Unreserve_All_Interrupts,Pragma Unsuppress,Pragma Unreferenced_Objects,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unreserve-all-interrupts}@anchor{10d}
  @section Pragma Unreserve_All_Interrupts
  
  
*************** For a more general facility for controll
*** 8746,8753 ****
  handled, see pragma @code{Interrupt_State}, which subsumes the functionality
  of the @code{Unreserve_All_Interrupts} pragma.
  
! @node Pragma Unsuppress,Pragma Use_VADS_Size,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{10d}
  @section Pragma Unsuppress
  
  
--- 8790,8797 ----
  handled, see pragma @code{Interrupt_State}, which subsumes the functionality
  of the @code{Unreserve_All_Interrupts} pragma.
  
! @node Pragma Unsuppress,Pragma Unused,Pragma Unreserve_All_Interrupts,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-unsuppress}@anchor{10e}
  @section Pragma Unsuppress
  
  
*************** pragma Unsuppress (Duplicated_Tag_Check)
*** 8778,8812 ****
  This pragma is standard in Ada 2005. It is available in all earlier versions
  of Ada as an implementation-defined pragma.
  
! Note that in addition to the checks defined in the Ada RM, GNAT recogizes a
  number of implementation-defined check names. See the description of pragma
  @code{Suppress} for full details.
  
! @node Pragma Use_VADS_Size,Pragma Unused,Pragma Unsuppress,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{10e}
! @section Pragma Use_VADS_Size
! 
! 
! @geindex Size
! @geindex VADS compatibility
! 
! @geindex Rational profile
! 
! Syntax:
! 
! @example
! pragma Use_VADS_Size;
! @end example
! 
! This is a configuration pragma.  In a unit to which it applies, any use
! of the ‘Size attribute is automatically interpreted as a use of the
! ‘VADS_Size attribute.  Note that this may result in incorrect semantic
! processing of valid Ada 95 or Ada 2005 programs.  This is intended to aid in
! the handling of existing code which depends on the interpretation of Size
! as implemented in the VADS compiler.  See description of the VADS_Size
! attribute for further details.
! 
! @node Pragma Unused,Pragma Validity_Checks,Pragma Use_VADS_Size,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{10f}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{110}
  @section Pragma Unused
  
--- 8822,8832 ----
  This pragma is standard in Ada 2005. It is available in all earlier versions
  of Ada as an implementation-defined pragma.
  
! Note that in addition to the checks defined in the Ada RM, GNAT recognizes a
  number of implementation-defined check names. See the description of pragma
  @code{Suppress} for full details.
  
! @node Pragma Unused,Pragma Use_VADS_Size,Pragma Unsuppress,Implementation Defined Pragmas
  @anchor{gnat_rm/implementation_defined_pragmas id52}@anchor{10f}@anchor{gnat_rm/implementation_defined_pragmas pragma-unused}@anchor{110}
  @section Pragma Unused
  
*************** For the variable case, warnings are neve
*** 8837,8847 ****
  variables whose name contains one of the substrings
  @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
! Thus it is never necessary to use @code{pragma Unmodified} for such
  variables, though it is harmless to do so.
  
! @node Pragma Validity_Checks,Pragma Volatile,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{111}
  @section Pragma Validity_Checks
  
  
--- 8857,8891 ----
  variables whose name contains one of the substrings
  @code{DISCARD, DUMMY, IGNORE, JUNK, UNUSED} in any casing. Such names
  are typically to be used in cases where such warnings are expected.
! Thus it is never necessary to use @code{pragma Unused} for such
  variables, though it is harmless to do so.
  
! @node Pragma Use_VADS_Size,Pragma Validity_Checks,Pragma Unused,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-use-vads-size}@anchor{111}
! @section Pragma Use_VADS_Size
! 
! 
! @geindex Size
! @geindex VADS compatibility
! 
! @geindex Rational profile
! 
! Syntax:
! 
! @example
! pragma Use_VADS_Size;
! @end example
! 
! This is a configuration pragma.  In a unit to which it applies, any use
! of the ‘Size attribute is automatically interpreted as a use of the
! ‘VADS_Size attribute.  Note that this may result in incorrect semantic
! processing of valid Ada 95 or Ada 2005 programs.  This is intended to aid in
! the handling of existing code which depends on the interpretation of Size
! as implemented in the VADS compiler.  See description of the VADS_Size
! attribute for further details.
! 
! @node Pragma Validity_Checks,Pragma Volatile,Pragma Use_VADS_Size,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-validity-checks}@anchor{112}
  @section Pragma Validity_Checks
  
  
*************** The form with a string literal specifies
*** 8863,8869 ****
  activated.  The validity checks are first set to include only the default
  reference manual settings, and then a string of letters in the string
  specifies the exact set of options required.  The form of this string
! is exactly as described for the @emph{-gnatVx} compiler switch (see the
  GNAT User’s Guide for details).  For example the following two
  methods can be used to enable validity checking for mode @code{in} and
  @code{in out} subprogram parameters:
--- 8907,8913 ----
  activated.  The validity checks are first set to include only the default
  reference manual settings, and then a string of letters in the string
  specifies the exact set of options required.  The form of this string
! is exactly as described for the `-gnatVx' compiler switch (see the
  GNAT User’s Guide for details).  For example the following two
  methods can be used to enable validity checking for mode @code{in} and
  @code{in out} subprogram parameters:
*************** A := C;                       -- C will
*** 8897,8903 ****
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{112}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{113}
  @section Pragma Volatile
  
  
--- 8941,8947 ----
  @end example
  
  @node Pragma Volatile,Pragma Volatile_Full_Access,Pragma Validity_Checks,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id53}@anchor{113}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile}@anchor{114}
  @section Pragma Volatile
  
  
*************** implementation of pragma Volatile is upw
*** 8915,8921 ****
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{114}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{115}
  @section Pragma Volatile_Full_Access
  
  
--- 8959,8965 ----
  implementation in DEC Ada 83.
  
  @node Pragma Volatile_Full_Access,Pragma Volatile_Function,Pragma Volatile,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id54}@anchor{115}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-full-access}@anchor{116}
  @section Pragma Volatile_Full_Access
  
  
*************** is not to the whole object; the compiler
*** 8941,8961 ****
  access only part of the object in this case.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{116}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{117}
  @section Pragma Volatile_Function
  
  
  Syntax:
  
  @example
! pragma Volatile_Function [ (boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Volatile_Function}
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{118}
  @section Pragma Warning_As_Error
  
  
--- 8985,9005 ----
  access only part of the object in this case.
  
  @node Pragma Volatile_Function,Pragma Warning_As_Error,Pragma Volatile_Full_Access,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id55}@anchor{117}@anchor{gnat_rm/implementation_defined_pragmas pragma-volatile-function}@anchor{118}
  @section Pragma Volatile_Function
  
  
  Syntax:
  
  @example
! pragma Volatile_Function [ (static_boolean_EXPRESSION) ];
  @end example
  
  For the semantics of this pragma, see the entry for aspect @code{Volatile_Function}
  in the SPARK 2014 Reference Manual, section 7.1.2.
  
  @node Pragma Warning_As_Error,Pragma Warnings,Pragma Volatile_Function,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-warning-as-error}@anchor{119}
  @section Pragma Warning_As_Error
  
  
*************** message string (it is not necessary to p
*** 8987,9002 ****
  the end of the message, since this is implied).
  
  Another possibility for the static_string_EXPRESSION which works whether
! or not error tags are enabled (@emph{-gnatw.d}) is to use a single
! @emph{-gnatw} tag string, enclosed in brackets,
  as shown in the example below, to treat one category of warnings as errors.
  Note that if you want to treat multiple categories of warnings as errors,
  you can use multiple pragma Warning_As_Error.
  
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This pragma can also be applied to
! warnings provided by the back end and mentioned in @ref{119,,Pragma Warnings}.
! By using a single full @emph{-Wxxx} switch in the pragma, such warnings
  can also be treated as errors.
  
  The pragma can appear either in a global configuration pragma file
--- 9031,9046 ----
  the end of the message, since this is implied).
  
  Another possibility for the static_string_EXPRESSION which works whether
! or not error tags are enabled (`-gnatw.d') is to use a single
! `-gnatw' tag string, enclosed in brackets,
  as shown in the example below, to treat one category of warnings as errors.
  Note that if you want to treat multiple categories of warnings as errors,
  you can use multiple pragma Warning_As_Error.
  
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This pragma can also be applied to
! warnings provided by the back end and mentioned in @ref{11a,,Pragma Warnings}.
! By using a single full `-Wxxx' switch in the pragma, such warnings
  can also be treated as errors.
  
  The pragma can appear either in a global configuration pragma file
*************** pragma Warning_As_Error ("[-gnatwj]");
*** 9009,9015 ****
  
  which will treat all obsolescent feature warnings as errors, the
  following program compiles as shown (compile options here are
! @emph{-gnatwa.d -gnatl -gnatj55}).
  
  @example
      1. pragma Warning_As_Error ("*never assigned*");
--- 9053,9059 ----
  
  which will treat all obsolescent feature warnings as errors, the
  following program compiles as shown (compile options here are
! `-gnatwa.d -gnatl -gnatj55').
  
  @example
      1. pragma Warning_As_Error ("*never assigned*");
*************** the tag is changed from “warning:” t
*** 9045,9051 ****
  “[warning-as-error]” is appended to the end of the message.
  
  @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11a}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{119}
  @section Pragma Warnings
  
  
--- 9089,9095 ----
  “[warning-as-error]” is appended to the end of the message.
  
  @node Pragma Warnings,Pragma Weak_External,Pragma Warning_As_Error,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas id56}@anchor{11b}@anchor{gnat_rm/implementation_defined_pragmas pragma-warnings}@anchor{11a}
  @section Pragma Warnings
  
  
*************** expression (which does not exist in Ada
*** 9070,9076 ****
  Note if the second argument of @code{DETAILS} is a @code{local_NAME} then the
  second form is always understood. If the intention is to use
  the fourth form, then you can write @code{NAME & ""} to force the
! intepretation as a @emph{static_string_EXPRESSION}.
  
  Note: if the first argument is a valid @code{TOOL_NAME}, it will be interpreted
  that way. The use of the @code{TOOL_NAME} argument is relevant only to users
--- 9114,9120 ----
  Note if the second argument of @code{DETAILS} is a @code{local_NAME} then the
  second form is always understood. If the intention is to use
  the fourth form, then you can write @code{NAME & ""} to force the
! interpretation as a `static_string_EXPRESSION'.
  
  Note: if the first argument is a valid @code{TOOL_NAME}, it will be interpreted
  that way. The use of the @code{TOOL_NAME} argument is relevant only to users
*************** The warnings controlled by the @code{-gn
*** 9118,9126 ****
  front end of the compiler. The GCC back end can provide additional warnings
  and they are controlled by the @code{-W} switch. Such warnings can be
  identified by the appearance of a string of the form @code{[-W@{xxx@}]} in the
! message which designates the @code{-W@emph{xxx}} switch that controls the message.
! The form with a single @emph{static_string_EXPRESSION} argument also works for these
! warnings, but the string must be a single full @code{-W@emph{xxx}} switch in this
  case. The above reference lists a few examples of these additional warnings.
  
  The specified warnings will be in effect until the end of the program
--- 9162,9170 ----
  front end of the compiler. The GCC back end can provide additional warnings
  and they are controlled by the @code{-W} switch. Such warnings can be
  identified by the appearance of a string of the form @code{[-W@{xxx@}]} in the
! message which designates the @code{-W`xxx'} switch that controls the message.
! The form with a single `static_string_EXPRESSION' argument also works for these
! warnings, but the string must be a single full @code{-W`xxx'} switch in this
  case. The above reference lists a few examples of these additional warnings.
  
  The specified warnings will be in effect until the end of the program
*************** the end of the message, since this is im
*** 9150,9156 ****
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This form of the pragma with a string
  argument can also be used to control warnings provided by the back end and
! mentioned above. By using a single full @code{-W@emph{xxx}} switch in the pragma,
  such warnings can be turned on and off.
  
  There are two ways to use the pragma in this form. The OFF form can be used
--- 9194,9200 ----
  The above use of patterns to match the message applies only to warning
  messages generated by the front end. This form of the pragma with a string
  argument can also be used to control warnings provided by the back end and
! mentioned above. By using a single full @code{-W`xxx'} switch in the pragma,
  such warnings can be turned on and off.
  
  There are two ways to use the pragma in this form. The OFF form can be used
*************** pragma Warnings (On, Pattern);
*** 9168,9174 ****
  @end example
  
  In this usage, the pattern string must match in the Off and On
! pragmas, and (if @emph{-gnatw.w} is given) at least one matching
  warning must be suppressed.
  
  Note: if the ON form is not found, then the effect of the OFF form extends
--- 9212,9218 ----
  @end example
  
  In this usage, the pattern string must match in the Off and On
! pragmas, and (if `-gnatw.w' is given) at least one matching
  warning must be suppressed.
  
  Note: if the ON form is not found, then the effect of the OFF form extends
*************** selectively for each tool, and as a cons
*** 9201,9207 ****
  Warnings with switch @code{-gnatw.w}.
  
  @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{11b}
  @section Pragma Weak_External
  
  
--- 9245,9251 ----
  Warnings with switch @code{-gnatw.w}.
  
  @node Pragma Weak_External,Pragma Wide_Character_Encoding,Pragma Warnings,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-weak-external}@anchor{11c}
  @section Pragma Weak_External
  
  
*************** end External_Module;
*** 9252,9258 ****
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{11c}
  @section Pragma Wide_Character_Encoding
  
  
--- 9296,9302 ----
  @end example
  
  @node Pragma Wide_Character_Encoding,,Pragma Weak_External,Implementation Defined Pragmas
! @anchor{gnat_rm/implementation_defined_pragmas pragma-wide-character-encoding}@anchor{11d}
  @section Pragma Wide_Character_Encoding
  
  
*************** encoding within that file, and does not
*** 9283,9289 ****
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects doc}@anchor{11d}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{11e}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{11f}
  @chapter Implementation Defined Aspects
  
  
--- 9327,9333 ----
  or subunits.
  
  @node Implementation Defined Aspects,Implementation Defined Attributes,Implementation Defined Pragmas,Top
! @anchor{gnat_rm/implementation_defined_aspects doc}@anchor{11e}@anchor{gnat_rm/implementation_defined_aspects id1}@anchor{11f}@anchor{gnat_rm/implementation_defined_aspects implementation-defined-aspects}@anchor{120}
  @chapter Implementation Defined Aspects
  
  
*************** or attribute definition clause.
*** 9403,9409 ****
  @end menu
  
  @node Aspect Abstract_State,Aspect Annotate,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{120}
  @section Aspect Abstract_State
  
  
--- 9447,9453 ----
  @end menu
  
  @node Aspect Abstract_State,Aspect Annotate,,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-abstract-state}@anchor{121}
  @section Aspect Abstract_State
  
  
*************** or attribute definition clause.
*** 9412,9418 ****
  This aspect is equivalent to @ref{1e,,pragma Abstract_State}.
  
  @node Aspect Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{121}
  @section Aspect Annotate
  
  
--- 9456,9462 ----
  This aspect is equivalent to @ref{1e,,pragma Abstract_State}.
  
  @node Aspect Annotate,Aspect Async_Readers,Aspect Abstract_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-annotate}@anchor{122}
  @section Aspect Annotate
  
  
*************** This aspect is equivalent to @ref{1e,,pr
*** 9420,9501 ****
  
  There are three forms of this aspect (where ID is an identifier,
  and ARG is a general expression),
! corresponding to @ref{28,,pragma Annotate}.
  
  
  @table @asis
  
! @item @emph{Annotate => ID}
  
  Equivalent to @code{pragma Annotate (ID, Entity => Name);}
  
! @item @emph{Annotate => (ID)}
  
  Equivalent to @code{pragma Annotate (ID, Entity => Name);}
  
! @item @emph{Annotate => (ID ,ID @{, ARG@})}
  
  Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);}
  @end table
  
  @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{122}
  @section Aspect Async_Readers
  
  
  @geindex Async_Readers
  
! This boolean aspect is equivalent to @ref{2f,,pragma Async_Readers}.
  
  @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{123}
  @section Aspect Async_Writers
  
  
  @geindex Async_Writers
  
! This boolean aspect is equivalent to @ref{31,,pragma Async_Writers}.
  
  @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{124}
  @section Aspect Constant_After_Elaboration
  
  
  @geindex Constant_After_Elaboration
  
! This aspect is equivalent to @ref{41,,pragma Constant_After_Elaboration}.
  
  @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{125}
  @section Aspect Contract_Cases
  
  
  @geindex Contract_Cases
  
! This aspect is equivalent to @ref{43,,pragma Contract_Cases}, the sequence
  of clauses being enclosed in parentheses so that syntactically it is an
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{126}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{53,,pragma Depends}.
  
  @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{127}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{4d,,pragma Default_Initial_Condition}.
  
  @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{128}
  @section Aspect Dimension
  
  
--- 9464,9545 ----
  
  There are three forms of this aspect (where ID is an identifier,
  and ARG is a general expression),
! corresponding to @ref{29,,pragma Annotate}.
  
  
  @table @asis
  
! @item `Annotate => ID'
  
  Equivalent to @code{pragma Annotate (ID, Entity => Name);}
  
! @item `Annotate => (ID)'
  
  Equivalent to @code{pragma Annotate (ID, Entity => Name);}
  
! @item `Annotate => (ID ,ID @{, ARG@})'
  
  Equivalent to @code{pragma Annotate (ID, ID @{, ARG@}, Entity => Name);}
  @end table
  
  @node Aspect Async_Readers,Aspect Async_Writers,Aspect Annotate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-readers}@anchor{123}
  @section Aspect Async_Readers
  
  
  @geindex Async_Readers
  
! This boolean aspect is equivalent to @ref{30,,pragma Async_Readers}.
  
  @node Aspect Async_Writers,Aspect Constant_After_Elaboration,Aspect Async_Readers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-async-writers}@anchor{124}
  @section Aspect Async_Writers
  
  
  @geindex Async_Writers
  
! This boolean aspect is equivalent to @ref{32,,pragma Async_Writers}.
  
  @node Aspect Constant_After_Elaboration,Aspect Contract_Cases,Aspect Async_Writers,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-constant-after-elaboration}@anchor{125}
  @section Aspect Constant_After_Elaboration
  
  
  @geindex Constant_After_Elaboration
  
! This aspect is equivalent to @ref{42,,pragma Constant_After_Elaboration}.
  
  @node Aspect Contract_Cases,Aspect Depends,Aspect Constant_After_Elaboration,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-contract-cases}@anchor{126}
  @section Aspect Contract_Cases
  
  
  @geindex Contract_Cases
  
! This aspect is equivalent to @ref{44,,pragma Contract_Cases}, the sequence
  of clauses being enclosed in parentheses so that syntactically it is an
  aggregate.
  
  @node Aspect Depends,Aspect Default_Initial_Condition,Aspect Contract_Cases,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-depends}@anchor{127}
  @section Aspect Depends
  
  
  @geindex Depends
  
! This aspect is equivalent to @ref{54,,pragma Depends}.
  
  @node Aspect Default_Initial_Condition,Aspect Dimension,Aspect Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-default-initial-condition}@anchor{128}
  @section Aspect Default_Initial_Condition
  
  
  @geindex Default_Initial_Condition
  
! This aspect is equivalent to @ref{50,,pragma Default_Initial_Condition}.
  
  @node Aspect Dimension,Aspect Dimension_System,Aspect Default_Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension}@anchor{129}
  @section Aspect Dimension
  
  
*************** Note that when the dimensioned type is a
*** 9531,9537 ****
  dimension value must be an integer literal.
  
  @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{129}
  @section Aspect Dimension_System
  
  
--- 9575,9581 ----
  dimension value must be an integer literal.
  
  @node Aspect Dimension_System,Aspect Disable_Controlled,Aspect Dimension,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-dimension-system}@anchor{12a}
  @section Aspect Dimension_System
  
  
*************** See section ‘Performing Dimensionality
*** 9591,9597 ****
  Guide for detailed examples of use of the dimension system.
  
  @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{12a}
  @section Aspect Disable_Controlled
  
  
--- 9635,9641 ----
  Guide for detailed examples of use of the dimension system.
  
  @node Aspect Disable_Controlled,Aspect Effective_Reads,Aspect Dimension_System,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-disable-controlled}@anchor{12b}
  @section Aspect Disable_Controlled
  
  
*************** where for example you might want a recor
*** 9604,9713 ****
  whether some run-time check is enabled or suppressed.
  
  @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{12b}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{58,,pragma Effective_Reads}.
  
  @node Aspect Effective_Writes,Aspect Extensions_Visible,Aspect Effective_Reads,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{12c}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{5a,,pragma Effective_Writes}.
  
  @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Effective_Writes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{12d}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{65,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{12e}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{6a,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Global,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{12f}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{6e,,pragma Ghost}.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{130}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{70,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{131}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{7d,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{132}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{80,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{133}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{82,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{134}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{89,,pragma Invariant}. It is a
  synonym for the language defined aspect @code{Type_Invariant} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{135}
  @section Aspect Invariant’Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{100,,pragma Type_Invariant_Class}. It is a
  synonym for the language defined aspect @code{Type_Invariant'Class} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{136}
  @section Aspect Iterable
  
  
--- 9648,9757 ----
  whether some run-time check is enabled or suppressed.
  
  @node Aspect Effective_Reads,Aspect Effective_Writes,Aspect Disable_Controlled,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-reads}@anchor{12c}
  @section Aspect Effective_Reads
  
  
  @geindex Effective_Reads
  
! This aspect is equivalent to @ref{59,,pragma Effective_Reads}.
  
  @node Aspect Effective_Writes,Aspect Extensions_Visible,Aspect Effective_Reads,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-effective-writes}@anchor{12d}
  @section Aspect Effective_Writes
  
  
  @geindex Effective_Writes
  
! This aspect is equivalent to @ref{5b,,pragma Effective_Writes}.
  
  @node Aspect Extensions_Visible,Aspect Favor_Top_Level,Aspect Effective_Writes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-extensions-visible}@anchor{12e}
  @section Aspect Extensions_Visible
  
  
  @geindex Extensions_Visible
  
! This aspect is equivalent to @ref{66,,pragma Extensions_Visible}.
  
  @node Aspect Favor_Top_Level,Aspect Ghost,Aspect Extensions_Visible,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-favor-top-level}@anchor{12f}
  @section Aspect Favor_Top_Level
  
  
  @geindex Favor_Top_Level
  
! This boolean aspect is equivalent to @ref{6b,,pragma Favor_Top_Level}.
  
  @node Aspect Ghost,Aspect Global,Aspect Favor_Top_Level,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-ghost}@anchor{130}
  @section Aspect Ghost
  
  
  @geindex Ghost
  
! This aspect is equivalent to @ref{6f,,pragma Ghost}.
  
  @node Aspect Global,Aspect Initial_Condition,Aspect Ghost,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-global}@anchor{131}
  @section Aspect Global
  
  
  @geindex Global
  
! This aspect is equivalent to @ref{71,,pragma Global}.
  
  @node Aspect Initial_Condition,Aspect Initializes,Aspect Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initial-condition}@anchor{132}
  @section Aspect Initial_Condition
  
  
  @geindex Initial_Condition
  
! This aspect is equivalent to @ref{7e,,pragma Initial_Condition}.
  
  @node Aspect Initializes,Aspect Inline_Always,Aspect Initial_Condition,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-initializes}@anchor{133}
  @section Aspect Initializes
  
  
  @geindex Initializes
  
! This aspect is equivalent to @ref{81,,pragma Initializes}.
  
  @node Aspect Inline_Always,Aspect Invariant,Aspect Initializes,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-inline-always}@anchor{134}
  @section Aspect Inline_Always
  
  
  @geindex Inline_Always
  
! This boolean aspect is equivalent to @ref{83,,pragma Inline_Always}.
  
  @node Aspect Invariant,Aspect Invariant’Class,Aspect Inline_Always,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant}@anchor{135}
  @section Aspect Invariant
  
  
  @geindex Invariant
  
! This aspect is equivalent to @ref{8a,,pragma Invariant}. It is a
  synonym for the language defined aspect @code{Type_Invariant} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Invariant’Class,Aspect Iterable,Aspect Invariant,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-invariant-class}@anchor{136}
  @section Aspect Invariant’Class
  
  
  @geindex Invariant'Class
  
! This aspect is equivalent to @ref{101,,pragma Type_Invariant_Class}. It is a
  synonym for the language defined aspect @code{Type_Invariant'Class} except
  that it is separately controllable using pragma @code{Assertion_Policy}.
  
  @node Aspect Iterable,Aspect Linker_Section,Aspect Invariant’Class,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-iterable}@anchor{137}
  @section Aspect Iterable
  
  
*************** The following is a typical example of us
*** 9728,9762 ****
  
  @example
  type List is private with
!     Iterable => (First        => First_Cursor,
!                  Next         => Advance,
!                  Has_Element  => Cursor_Has_Element,
!                 [Element      => Get_Element]);
  @end example
  
  
  @itemize *
  
  @item 
! The value denoted by @code{First} must denote a primitive operation of the
! container type that returns a @code{Cursor}, which must a be a type declared in
  the container package or visible from it. For example:
  @end itemize
  
  @example
  function First_Cursor (Cont : Container) return Cursor;
  @end example
  
  
  @itemize *
  
  @item 
! The value of @code{Next} is a primitive operation of the container type that takes
! both a container and a cursor and yields a cursor. For example:
  @end itemize
  
  @example
  function Advance (Cont : Container; Position : Cursor) return Cursor;
  @end example
  
  
--- 9772,9810 ----
  
  @example
  type List is private with
!     Iterable => (First       => First_Cursor,
!                  Next        => Advance,
!                  Has_Element => Cursor_Has_Element
!                [,Element     => Get_Element]
!                [,Last        => Last_Cursor]
!                [,Previous    => Retreat]);
  @end example
  
  
  @itemize *
  
  @item 
! The values of @code{First} and @code{Last} are primitive operations of the
! container type that return a @code{Cursor}, which must be a type declared in
  the container package or visible from it. For example:
  @end itemize
  
  @example
  function First_Cursor (Cont : Container) return Cursor;
+ function Last_Cursor  (Cont : Container) return Cursor;
  @end example
  
  
  @itemize *
  
  @item 
! The values of @code{Next} and @code{Previous} are primitive operations of the container type that take
! both a container and a cursor and yield a cursor. For example:
  @end itemize
  
  @example
  function Advance (Cont : Container; Position : Cursor) return Cursor;
+ function Retreat (Cont : Container; Position : Cursor) return Cursor;
  @end example
  
  
*************** function Get_Element (Cont : Container;
*** 9787,9859 ****
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Lock_Free,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{137}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{91,,pragma Linker_Section}.
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{138}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{93,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{139}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @ref{9b,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{13a}
  @section Aspect No_Caching
  
  
  @geindex No_Caching
  
! This boolean aspect is equivalent to @ref{9e,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{13b}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{a1,,pragma No_Elaboration_Code_All}
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{13c}
  @section Aspect No_Inline
  
  
  @geindex No_Inline
  
! This boolean aspect is equivalent to @ref{a4,,pragma No_Inline}.
  
  @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{13d}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{a8,,pragma No_Tagged_Streams} with an
  argument specifying a root tagged type (thus this aspect can only be
  applied to such a type).
  
  @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{13e}
  @section Aspect No_Task_Parts
  
  
--- 9835,9907 ----
  This aspect is used in the GNAT-defined formal container packages.
  
  @node Aspect Linker_Section,Aspect Lock_Free,Aspect Iterable,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-linker-section}@anchor{138}
  @section Aspect Linker_Section
  
  
  @geindex Linker_Section
  
! This aspect is equivalent to @ref{92,,pragma Linker_Section}.
  
  @node Aspect Lock_Free,Aspect Max_Queue_Length,Aspect Linker_Section,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-lock-free}@anchor{139}
  @section Aspect Lock_Free
  
  
  @geindex Lock_Free
  
! This boolean aspect is equivalent to @ref{94,,pragma Lock_Free}.
  
  @node Aspect Max_Queue_Length,Aspect No_Caching,Aspect Lock_Free,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-max-queue-length}@anchor{13a}
  @section Aspect Max_Queue_Length
  
  
  @geindex Max_Queue_Length
  
! This aspect is equivalent to @ref{9c,,pragma Max_Queue_Length}.
  
  @node Aspect No_Caching,Aspect No_Elaboration_Code_All,Aspect Max_Queue_Length,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-caching}@anchor{13b}
  @section Aspect No_Caching
  
  
  @geindex No_Caching
  
! This boolean aspect is equivalent to @ref{9f,,pragma No_Caching}.
  
  @node Aspect No_Elaboration_Code_All,Aspect No_Inline,Aspect No_Caching,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-elaboration-code-all}@anchor{13c}
  @section Aspect No_Elaboration_Code_All
  
  
  @geindex No_Elaboration_Code_All
  
! This aspect is equivalent to @ref{a2,,pragma No_Elaboration_Code_All}
  for a program unit.
  
  @node Aspect No_Inline,Aspect No_Tagged_Streams,Aspect No_Elaboration_Code_All,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-inline}@anchor{13d}
  @section Aspect No_Inline
  
  
  @geindex No_Inline
  
! This boolean aspect is equivalent to @ref{a5,,pragma No_Inline}.
  
  @node Aspect No_Tagged_Streams,Aspect No_Task_Parts,Aspect No_Inline,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-tagged-streams}@anchor{13e}
  @section Aspect No_Tagged_Streams
  
  
  @geindex No_Tagged_Streams
  
! This aspect is equivalent to @ref{a9,,pragma No_Tagged_Streams} with an
  argument specifying a root tagged type (thus this aspect can only be
  applied to such a type).
  
  @node Aspect No_Task_Parts,Aspect Object_Size,Aspect No_Tagged_Streams,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-no-task-parts}@anchor{13f}
  @section Aspect No_Task_Parts
  
  
*************** away certain tasking-related code that w
*** 9869,9895 ****
  for T’Class, because descendants of T might contain tasks.
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{13f}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{140,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{141}
  @section Aspect Obsolescent
  
  
! @geindex Obsolsecent
  
! This aspect is equivalent to @ref{ab,,pragma Obsolescent}. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{142}
  @section Aspect Part_Of
  
  
--- 9917,9943 ----
  for T’Class, because descendants of T might contain tasks.
  
  @node Aspect Object_Size,Aspect Obsolescent,Aspect No_Task_Parts,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-object-size}@anchor{140}
  @section Aspect Object_Size
  
  
  @geindex Object_Size
  
! This aspect is equivalent to @ref{141,,attribute Object_Size}.
  
  @node Aspect Obsolescent,Aspect Part_Of,Aspect Object_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-obsolescent}@anchor{142}
  @section Aspect Obsolescent
  
  
! @geindex Obsolescent
  
! This aspect is equivalent to @ref{ac,,pragma Obsolescent}. Note that the
  evaluation of this aspect happens at the point of occurrence, it is not
  delayed until the freeze point.
  
  @node Aspect Part_Of,Aspect Persistent_BSS,Aspect Obsolescent,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-part-of}@anchor{143}
  @section Aspect Part_Of
  
  
*************** delayed until the freeze point.
*** 9898,9919 ****
  This aspect is equivalent to @ref{b2,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{143}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{b5,,pragma Persistent_BSS}.
  
  @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{144}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{bc,,pragma Predicate}. It is thus
  similar to the language defined aspects @code{Dynamic_Predicate}
  and @code{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
--- 9946,9967 ----
  This aspect is equivalent to @ref{b2,,pragma Part_Of}.
  
  @node Aspect Persistent_BSS,Aspect Predicate,Aspect Part_Of,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-persistent-bss}@anchor{144}
  @section Aspect Persistent_BSS
  
  
  @geindex Persistent_BSS
  
! This boolean aspect is equivalent to @ref{b6,,pragma Persistent_BSS}.
  
  @node Aspect Predicate,Aspect Pure_Function,Aspect Persistent_BSS,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-predicate}@anchor{145}
  @section Aspect Predicate
  
  
  @geindex Predicate
  
! This aspect is equivalent to @ref{bd,,pragma Predicate}. It is thus
  similar to the language defined aspects @code{Dynamic_Predicate}
  and @code{Static_Predicate} except that whether the resulting
  predicate is static or dynamic is controlled by the form of the
*************** expression. It is also separately contro
*** 9921,9972 ****
  @code{Assertion_Policy}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{145}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{c8,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{146}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{cc,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{147}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{ce,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{148}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{d0,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{149}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{d2,,pragma Refined_State}.
  
  @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{14a}
  @section Aspect Relaxed_Initialization
  
  
--- 9969,10020 ----
  @code{Assertion_Policy}.
  
  @node Aspect Pure_Function,Aspect Refined_Depends,Aspect Predicate,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-pure-function}@anchor{146}
  @section Aspect Pure_Function
  
  
  @geindex Pure_Function
  
! This boolean aspect is equivalent to @ref{c9,,pragma Pure_Function}.
  
  @node Aspect Refined_Depends,Aspect Refined_Global,Aspect Pure_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-depends}@anchor{147}
  @section Aspect Refined_Depends
  
  
  @geindex Refined_Depends
  
! This aspect is equivalent to @ref{cd,,pragma Refined_Depends}.
  
  @node Aspect Refined_Global,Aspect Refined_Post,Aspect Refined_Depends,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-global}@anchor{148}
  @section Aspect Refined_Global
  
  
  @geindex Refined_Global
  
! This aspect is equivalent to @ref{cf,,pragma Refined_Global}.
  
  @node Aspect Refined_Post,Aspect Refined_State,Aspect Refined_Global,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-post}@anchor{149}
  @section Aspect Refined_Post
  
  
  @geindex Refined_Post
  
! This aspect is equivalent to @ref{d1,,pragma Refined_Post}.
  
  @node Aspect Refined_State,Aspect Relaxed_Initialization,Aspect Refined_Post,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-refined-state}@anchor{14a}
  @section Aspect Refined_State
  
  
  @geindex Refined_State
  
! This aspect is equivalent to @ref{d3,,pragma Refined_State}.
  
  @node Aspect Relaxed_Initialization,Aspect Remote_Access_Type,Aspect Refined_State,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-relaxed-initialization}@anchor{14b}
  @section Aspect Relaxed_Initialization
  
  
*************** For the syntax and semantics of this asp
*** 9976,10162 ****
  Manual, section 6.10.
  
  @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{14b}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{d5,,pragma Remote_Access_Type}.
  
  @node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{14c}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{db,,pragma Secondary_Stack_Size}.
  
  @node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{14d}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{14e,,attribute Scalar_Storage_Order}.
  
  @node Aspect Shared,Aspect Simple_Storage_Pool,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{14f}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{de,,pragma Shared}
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{150}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{e3,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{151}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{e2,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{152}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{ea,,pragma SPARK_Mode} and
  may be specified for either or both of the specification and body
  of a subprogram or package.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{153}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{f2,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{154}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{f5,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{155}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{f9,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{156}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{fb,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{157}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{105,,pragma Universal_Aliasing}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{158}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{107,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{159}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{109,,pragma Unreferenced}.
  
  When using the @code{-gnat2022} switch, this aspect is also supported on formal
  parameters, which is in particular the only form possible for expression
  functions.
  
  @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{15a}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{10b,,pragma Unreferenced_Objects}.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{15b}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{15c,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{15d}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{115,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{15e}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{117,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{15f}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{119,,pragma Warnings},
  where the first argument is @code{ON} or @code{OFF} and the second argument
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{160}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{161}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}
  @chapter Implementation Defined Attributes
  
  
--- 10024,10210 ----
  Manual, section 6.10.
  
  @node Aspect Remote_Access_Type,Aspect Secondary_Stack_Size,Aspect Relaxed_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-remote-access-type}@anchor{14c}
  @section Aspect Remote_Access_Type
  
  
  @geindex Remote_Access_Type
  
! This aspect is equivalent to @ref{d6,,pragma Remote_Access_Type}.
  
  @node Aspect Secondary_Stack_Size,Aspect Scalar_Storage_Order,Aspect Remote_Access_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-secondary-stack-size}@anchor{14d}
  @section Aspect Secondary_Stack_Size
  
  
  @geindex Secondary_Stack_Size
  
! This aspect is equivalent to @ref{dc,,pragma Secondary_Stack_Size}.
  
  @node Aspect Scalar_Storage_Order,Aspect Shared,Aspect Secondary_Stack_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-scalar-storage-order}@anchor{14e}
  @section Aspect Scalar_Storage_Order
  
  
  @geindex Scalar_Storage_Order
  
! This aspect is equivalent to a @ref{14f,,attribute Scalar_Storage_Order}.
  
  @node Aspect Shared,Aspect Simple_Storage_Pool,Aspect Scalar_Storage_Order,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-shared}@anchor{150}
  @section Aspect Shared
  
  
  @geindex Shared
  
! This boolean aspect is equivalent to @ref{df,,pragma Shared}
  and is thus a synonym for aspect @code{Atomic}.
  
  @node Aspect Simple_Storage_Pool,Aspect Simple_Storage_Pool_Type,Aspect Shared,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool}@anchor{151}
  @section Aspect Simple_Storage_Pool
  
  
  @geindex Simple_Storage_Pool
  
! This aspect is equivalent to @ref{e4,,attribute Simple_Storage_Pool}.
  
  @node Aspect Simple_Storage_Pool_Type,Aspect SPARK_Mode,Aspect Simple_Storage_Pool,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-simple-storage-pool-type}@anchor{152}
  @section Aspect Simple_Storage_Pool_Type
  
  
  @geindex Simple_Storage_Pool_Type
  
! This boolean aspect is equivalent to @ref{e3,,pragma Simple_Storage_Pool_Type}.
  
  @node Aspect SPARK_Mode,Aspect Suppress_Debug_Info,Aspect Simple_Storage_Pool_Type,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-spark-mode}@anchor{153}
  @section Aspect SPARK_Mode
  
  
  @geindex SPARK_Mode
  
! This aspect is equivalent to @ref{eb,,pragma SPARK_Mode} and
  may be specified for either or both of the specification and body
  of a subprogram or package.
  
  @node Aspect Suppress_Debug_Info,Aspect Suppress_Initialization,Aspect SPARK_Mode,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-debug-info}@anchor{154}
  @section Aspect Suppress_Debug_Info
  
  
  @geindex Suppress_Debug_Info
  
! This boolean aspect is equivalent to @ref{f3,,pragma Suppress_Debug_Info}.
  
  @node Aspect Suppress_Initialization,Aspect Test_Case,Aspect Suppress_Debug_Info,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-suppress-initialization}@anchor{155}
  @section Aspect Suppress_Initialization
  
  
  @geindex Suppress_Initialization
  
! This boolean aspect is equivalent to @ref{f6,,pragma Suppress_Initialization}.
  
  @node Aspect Test_Case,Aspect Thread_Local_Storage,Aspect Suppress_Initialization,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-test-case}@anchor{156}
  @section Aspect Test_Case
  
  
  @geindex Test_Case
  
! This aspect is equivalent to @ref{fa,,pragma Test_Case}.
  
  @node Aspect Thread_Local_Storage,Aspect Universal_Aliasing,Aspect Test_Case,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-thread-local-storage}@anchor{157}
  @section Aspect Thread_Local_Storage
  
  
  @geindex Thread_Local_Storage
  
! This boolean aspect is equivalent to @ref{fc,,pragma Thread_Local_Storage}.
  
  @node Aspect Universal_Aliasing,Aspect Unmodified,Aspect Thread_Local_Storage,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-universal-aliasing}@anchor{158}
  @section Aspect Universal_Aliasing
  
  
  @geindex Universal_Aliasing
  
! This boolean aspect is equivalent to @ref{106,,pragma Universal_Aliasing}.
  
  @node Aspect Unmodified,Aspect Unreferenced,Aspect Universal_Aliasing,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unmodified}@anchor{159}
  @section Aspect Unmodified
  
  
  @geindex Unmodified
  
! This boolean aspect is equivalent to @ref{108,,pragma Unmodified}.
  
  @node Aspect Unreferenced,Aspect Unreferenced_Objects,Aspect Unmodified,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced}@anchor{15a}
  @section Aspect Unreferenced
  
  
  @geindex Unreferenced
  
! This boolean aspect is equivalent to @ref{10a,,pragma Unreferenced}.
  
  When using the @code{-gnat2022} switch, this aspect is also supported on formal
  parameters, which is in particular the only form possible for expression
  functions.
  
  @node Aspect Unreferenced_Objects,Aspect Value_Size,Aspect Unreferenced,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-unreferenced-objects}@anchor{15b}
  @section Aspect Unreferenced_Objects
  
  
  @geindex Unreferenced_Objects
  
! This boolean aspect is equivalent to @ref{10c,,pragma Unreferenced_Objects}.
  
  @node Aspect Value_Size,Aspect Volatile_Full_Access,Aspect Unreferenced_Objects,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-value-size}@anchor{15c}
  @section Aspect Value_Size
  
  
  @geindex Value_Size
  
! This aspect is equivalent to @ref{15d,,attribute Value_Size}.
  
  @node Aspect Volatile_Full_Access,Aspect Volatile_Function,Aspect Value_Size,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-full-access}@anchor{15e}
  @section Aspect Volatile_Full_Access
  
  
  @geindex Volatile_Full_Access
  
! This boolean aspect is equivalent to @ref{116,,pragma Volatile_Full_Access}.
  
  @node Aspect Volatile_Function,Aspect Warnings,Aspect Volatile_Full_Access,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-volatile-function}@anchor{15f}
  @section Aspect Volatile_Function
  
  
  @geindex Volatile_Function
  
! This boolean aspect is equivalent to @ref{118,,pragma Volatile_Function}.
  
  @node Aspect Warnings,,Aspect Volatile_Function,Implementation Defined Aspects
! @anchor{gnat_rm/implementation_defined_aspects aspect-warnings}@anchor{160}
  @section Aspect Warnings
  
  
  @geindex Warnings
  
! This aspect is equivalent to the two argument form of @ref{11a,,pragma Warnings},
  where the first argument is @code{ON} or @code{OFF} and the second argument
  is the entity.
  
  @node Implementation Defined Attributes,Standard and Implementation Defined Restrictions,Implementation Defined Aspects,Top
! @anchor{gnat_rm/implementation_defined_attributes doc}@anchor{161}@anchor{gnat_rm/implementation_defined_attributes id1}@anchor{162}@anchor{gnat_rm/implementation_defined_attributes implementation-defined-attributes}@anchor{8}
  @chapter Implementation Defined Attributes
  
  
*************** consideration, you should minimize the u
*** 10217,10223 ****
  * Attribute Iterable:: 
  * Attribute Large:: 
  * Attribute Library_Level:: 
- * Attribute Lock_Free:: 
  * Attribute Loop_Entry:: 
  * Attribute Machine_Size:: 
  * Attribute Mantissa:: 
--- 10265,10270 ----
*************** consideration, you should minimize the u
*** 10253,10259 ****
  * Attribute Universal_Literal_String:: 
  * Attribute Unrestricted_Access:: 
  * Attribute Update:: 
! * Attribute Valid_Image:: 
  * Attribute Valid_Scalars:: 
  * Attribute VADS_Size:: 
  * Attribute Value_Size:: 
--- 10300,10306 ----
  * Attribute Universal_Literal_String:: 
  * Attribute Unrestricted_Access:: 
  * Attribute Update:: 
! * Attribute Valid_Value:: 
  * Attribute Valid_Scalars:: 
  * Attribute VADS_Size:: 
  * Attribute Value_Size:: 
*************** consideration, you should minimize the u
*** 10263,10269 ****
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{162}
  @section Attribute Abort_Signal
  
  
--- 10310,10316 ----
  @end menu
  
  @node Attribute Abort_Signal,Attribute Address_Size,,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-abort-signal}@anchor{163}
  @section Attribute Abort_Signal
  
  
*************** completely outside the normal semantics
*** 10277,10283 ****
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{163}
  @section Attribute Address_Size
  
  
--- 10324,10330 ----
  intercept the abort exception).
  
  @node Attribute Address_Size,Attribute Asm_Input,Attribute Abort_Signal,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-address-size}@anchor{164}
  @section Attribute Address_Size
  
  
*************** reference to System.Address’Size is no
*** 10293,10299 ****
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{164}
  @section Attribute Asm_Input
  
  
--- 10340,10346 ----
  is a private type.
  
  @node Attribute Asm_Input,Attribute Asm_Output,Attribute Address_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-input}@anchor{165}
  @section Attribute Asm_Input
  
  
*************** to be a static expression, and is the co
*** 10307,10316 ****
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{165,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{166}
  @section Attribute Asm_Output
  
  
--- 10354,10363 ----
  value to be used as the input argument.  The possible values for the
  constant are the same as those used in the RTL, and are dependent on
  the configuration file used to built the GCC back end.
! @ref{166,,Machine Code Insertions}
  
  @node Attribute Asm_Output,Attribute Atomic_Always_Lock_Free,Attribute Asm_Input,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-asm-output}@anchor{167}
  @section Attribute Asm_Output
  
  
*************** result.  The possible values for constra
*** 10326,10335 ****
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{165,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{167}
  @section Attribute Atomic_Always_Lock_Free
  
  
--- 10373,10382 ----
  the RTL, and are dependent on the configuration file used to build the
  GCC back end.  If there are no output operands, then this argument may
  either be omitted, or explicitly given as @code{No_Output_Operands}.
! @ref{166,,Machine Code Insertions}
  
  @node Attribute Atomic_Always_Lock_Free,Attribute Bit,Attribute Asm_Output,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-atomic-always-lock-free}@anchor{168}
  @section Attribute Atomic_Always_Lock_Free
  
  
*************** and False otherwise.  The result indicat
*** 10341,10347 ****
  supported by the target for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{168}
  @section Attribute Bit
  
  
--- 10388,10394 ----
  supported by the target for the given type.
  
  @node Attribute Bit,Attribute Bit_Position,Attribute Atomic_Always_Lock_Free,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit}@anchor{169}
  @section Attribute Bit
  
  
*************** supported by the target for the given ty
*** 10350,10356 ****
  @code{obj'Bit}, where @code{obj} is any object, yields the bit
  offset within the storage unit (byte) that contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type @emph{universal_integer} and is always a nonnegative number smaller
  than @code{System.Storage_Unit}.
  
  For an object that is a variable or a constant allocated in a register,
--- 10397,10403 ----
  @code{obj'Bit}, where @code{obj} is any object, yields the bit
  offset within the storage unit (byte) that contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type `universal_integer' and is always a nonnegative number smaller
  than @code{System.Storage_Unit}.
  
  For an object that is a variable or a constant allocated in a register,
*************** This attribute is designed to be compati
*** 10372,10378 ****
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{169}
  @section Attribute Bit_Position
  
  
--- 10419,10425 ----
  and implementation of the @code{Bit} attribute.
  
  @node Attribute Bit_Position,Attribute Code_Address,Attribute Bit,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-bit-position}@anchor{16a}
  @section Attribute Bit_Position
  
  
*************** and implementation of the @code{Bit} att
*** 10382,10393 ****
  of the fields of the record type, yields the bit
  offset within the record contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type @emph{universal_integer}.  The value depends only on the field
  @code{C} and is independent of the alignment of
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{16a}
  @section Attribute Code_Address
  
  
--- 10429,10440 ----
  of the fields of the record type, yields the bit
  offset within the record contains the first bit of
  storage allocated for the object.  The value of this attribute is of the
! type `universal_integer'.  The value depends only on the field
  @code{C} and is independent of the alignment of
  the containing record @code{R}.
  
  @node Attribute Code_Address,Attribute Compiler_Version,Attribute Bit_Position,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-code-address}@anchor{16b}
  @section Attribute Code_Address
  
  
*************** the same value as is returned by the cor
*** 10430,10436 ****
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{16b}
  @section Attribute Compiler_Version
  
  
--- 10477,10483 ----
  attribute.
  
  @node Attribute Compiler_Version,Attribute Constrained,Attribute Code_Address,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-compiler-version}@anchor{16c}
  @section Attribute Compiler_Version
  
  
*************** prefix) yields a static string identifyi
*** 10441,10447 ****
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{16c}
  @section Attribute Constrained
  
  
--- 10488,10494 ----
  being used to compile the unit containing the attribute reference.
  
  @node Attribute Constrained,Attribute Default_Bit_Order,Attribute Compiler_Version,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-constrained}@anchor{16d}
  @section Attribute Constrained
  
  
*************** record type without discriminants is alw
*** 10456,10462 ****
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{16d}
  @section Attribute Default_Bit_Order
  
  
--- 10503,10509 ----
  compatible with older Ada compilers, including notably DEC Ada.
  
  @node Attribute Default_Bit_Order,Attribute Default_Scalar_Storage_Order,Attribute Constrained,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-bit-order}@anchor{16e}
  @section Attribute Default_Bit_Order
  
  
*************** as a @code{Pos} value (0 for @code{High_
*** 10473,10479 ****
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{16e}
  @section Attribute Default_Scalar_Storage_Order
  
  
--- 10520,10526 ----
  @code{Default_Bit_Order} in package @code{System}.
  
  @node Attribute Default_Scalar_Storage_Order,Attribute Deref,Attribute Default_Bit_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-default-scalar-storage-order}@anchor{16f}
  @section Attribute Default_Scalar_Storage_Order
  
  
*************** equal to @code{Default_Bit_Order} if uns
*** 10490,10496 ****
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{16f}
  @section Attribute Deref
  
  
--- 10537,10543 ----
  @code{System.Bit_Order} value. This is a static attribute.
  
  @node Attribute Deref,Attribute Descriptor_Size,Attribute Default_Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-deref}@anchor{170}
  @section Attribute Deref
  
  
*************** a named access-to-@cite{typ} type, excep
*** 10503,10509 ****
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{170}
  @section Attribute Descriptor_Size
  
  
--- 10550,10556 ----
  used on the left side of an assignment.
  
  @node Attribute Descriptor_Size,Attribute Elaborated,Attribute Deref,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-descriptor-size}@anchor{171}
  @section Attribute Descriptor_Size
  
  
*************** since @code{Positive} has an alignment o
*** 10532,10538 ****
  which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{171}
  @section Attribute Elaborated
  
  
--- 10579,10585 ----
  which yields a size of 32 bits, i.e. including 16 bits of padding.
  
  @node Attribute Elaborated,Attribute Elab_Body,Attribute Descriptor_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elaborated}@anchor{172}
  @section Attribute Elaborated
  
  
*************** units has been completed.  An exception
*** 10547,10553 ****
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{172}
  @section Attribute Elab_Body
  
  
--- 10594,10600 ----
  elaboration, the value is always False for such units.
  
  @node Attribute Elab_Body,Attribute Elab_Spec,Attribute Elaborated,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-body}@anchor{173}
  @section Attribute Elab_Body
  
  
*************** e.g., if it is necessary to do selective
*** 10563,10569 ****
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{173}
  @section Attribute Elab_Spec
  
  
--- 10610,10616 ----
  error.
  
  @node Attribute Elab_Spec,Attribute Elab_Subp_Body,Attribute Elab_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-spec}@anchor{174}
  @section Attribute Elab_Spec
  
  
*************** Ada code, e.g., if it is necessary to do
*** 10579,10585 ****
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{174}
  @section Attribute Elab_Subp_Body
  
  
--- 10626,10632 ----
  some error.
  
  @node Attribute Elab_Subp_Body,Attribute Emax,Attribute Elab_Spec,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-elab-subp-body}@anchor{175}
  @section Attribute Elab_Subp_Body
  
  
*************** elaboration procedure by the binder in C
*** 10593,10599 ****
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{175}
  @section Attribute Emax
  
  
--- 10640,10646 ----
  otherwise.
  
  @node Attribute Emax,Attribute Enabled,Attribute Elab_Subp_Body,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-emax}@anchor{176}
  @section Attribute Emax
  
  
*************** the Ada 83 reference manual for an exact
*** 10606,10612 ****
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{176}
  @section Attribute Enabled
  
  
--- 10653,10659 ----
  this attribute.
  
  @node Attribute Enabled,Attribute Enum_Rep,Attribute Emax,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enabled}@anchor{177}
  @section Attribute Enabled
  
  
*************** a @code{pragma Suppress} or @code{pragma
*** 10630,10636 ****
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{177}
  @section Attribute Enum_Rep
  
  
--- 10677,10683 ----
  the package or subprogram, controlling whether the check will be present.
  
  @node Attribute Enum_Rep,Attribute Enum_Val,Attribute Enabled,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-rep}@anchor{178}
  @section Attribute Enum_Rep
  
  
*************** integer calculation is done at run time,
*** 10670,10676 ****
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{178}
  @section Attribute Enum_Val
  
  
--- 10717,10723 ----
  may raise @code{Constraint_Error}.
  
  @node Attribute Enum_Val,Attribute Epsilon,Attribute Enum_Rep,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-enum-val}@anchor{179}
  @section Attribute Enum_Val
  
  
*************** absence of an enumeration representation
*** 10696,10702 ****
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{179}
  @section Attribute Epsilon
  
  
--- 10743,10749 ----
  attribute (i.e., the result is static if the argument is static).
  
  @node Attribute Epsilon,Attribute Fast_Math,Attribute Enum_Val,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-epsilon}@anchor{17a}
  @section Attribute Epsilon
  
  
*************** the Ada 83 reference manual for an exact
*** 10709,10715 ****
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{17a}
  @section Attribute Fast_Math
  
  
--- 10756,10762 ----
  this attribute.
  
  @node Attribute Fast_Math,Attribute Finalization_Size,Attribute Epsilon,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fast-math}@anchor{17b}
  @section Attribute Fast_Math
  
  
*************** prefix) yields a static Boolean value th
*** 10720,10726 ****
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{17b}
  @section Attribute Finalization_Size
  
  
--- 10767,10773 ----
  @code{Fast_Math} is active, and False otherwise.
  
  @node Attribute Finalization_Size,Attribute Fixed_Value,Attribute Fast_Math,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-finalization-size}@anchor{17c}
  @section Attribute Finalization_Size
  
  
*************** prefix) yields a static Boolean value th
*** 10729,10735 ****
  The prefix of attribute @code{Finalization_Size} must be an object or
  a non-class-wide type. This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions. The type of
! the attribute is @emph{universal_integer}.
  
  @code{Finalization_Size} yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
--- 10776,10782 ----
  The prefix of attribute @code{Finalization_Size} must be an object or
  a non-class-wide type. This attribute returns the size of any hidden data
  reserved by the compiler to handle finalization-related actions. The type of
! the attribute is `universal_integer'.
  
  @code{Finalization_Size} yields a value of zero for a type with no controlled
  parts, an object whose type has no controlled parts, or an object of a
*************** class-wide type whose tag denotes a type
*** 10738,10744 ****
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{17c}
  @section Attribute Fixed_Value
  
  
--- 10785,10791 ----
  Note that only heap-allocated objects contain finalization data.
  
  @node Attribute Fixed_Value,Attribute From_Any,Attribute Finalization_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-fixed-value}@anchor{17d}
  @section Attribute Fixed_Value
  
  
*************** This attribute is primarily intended for
*** 10765,10771 ****
  input-output functions for fixed-point values.
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{17d}
  @section Attribute From_Any
  
  
--- 10812,10818 ----
  input-output functions for fixed-point values.
  
  @node Attribute From_Any,Attribute Has_Access_Values,Attribute Fixed_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-from-any}@anchor{17e}
  @section Attribute From_Any
  
  
*************** This internal attribute is used for the
*** 10775,10781 ****
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{17e}
  @section Attribute Has_Access_Values
  
  
--- 10822,10828 ----
  stubs in the context of the Distributed Systems Annex.
  
  @node Attribute Has_Access_Values,Attribute Has_Discriminants,Attribute From_Any,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-access-values}@anchor{17f}
  @section Attribute Has_Access_Values
  
  
*************** definitions.  If the attribute is applie
*** 10793,10799 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{17f}
  @section Attribute Has_Discriminants
  
  
--- 10840,10846 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Has_Discriminants,Attribute Has_Tagged_Values,Attribute Has_Access_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-discriminants}@anchor{180}
  @section Attribute Has_Discriminants
  
  
*************** definitions.  If the attribute is applie
*** 10809,10815 ****
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{180}
  @section Attribute Has_Tagged_Values
  
  
--- 10856,10862 ----
  indicates whether or not the corresponding actual type has discriminants.
  
  @node Attribute Has_Tagged_Values,Attribute Img,Attribute Has_Discriminants,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-has-tagged-values}@anchor{181}
  @section Attribute Has_Tagged_Values
  
  
*************** definitions. If the attribute is applied
*** 10826,10832 ****
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{181}
  @section Attribute Img
  
  
--- 10873,10879 ----
  indicates whether or not the corresponding actual type has access values.
  
  @node Attribute Img,Attribute Initialized,Attribute Has_Tagged_Values,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-img}@anchor{182}
  @section Attribute Img
  
  
*************** that returns the appropriate string when
*** 10856,10862 ****
  in an instantiation as a function parameter.
  
  @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{182}
  @section Attribute Initialized
  
  
--- 10903,10909 ----
  in an instantiation as a function parameter.
  
  @node Attribute Initialized,Attribute Integer_Value,Attribute Img,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-initialized}@anchor{183}
  @section Attribute Initialized
  
  
*************** For the syntax and semantics of this att
*** 10866,10872 ****
  Manual, section 6.10.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{183}
  @section Attribute Integer_Value
  
  
--- 10913,10919 ----
  Manual, section 6.10.
  
  @node Attribute Integer_Value,Attribute Invalid_Value,Attribute Initialized,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-integer-value}@anchor{184}
  @section Attribute Integer_Value
  
  
*************** This attribute is primarily intended for
*** 10894,10900 ****
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Iterable,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{184}
  @section Attribute Invalid_Value
  
  
--- 10941,10947 ----
  standard input-output functions for fixed-point values.
  
  @node Attribute Invalid_Value,Attribute Iterable,Attribute Integer_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-invalid-value}@anchor{185}
  @section Attribute Invalid_Value
  
  
*************** including the ability to modify the valu
*** 10908,10914 ****
  relevant environment variables at run time.
  
  @node Attribute Iterable,Attribute Large,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{185}
  @section Attribute Iterable
  
  
--- 10955,10961 ----
  relevant environment variables at run time.
  
  @node Attribute Iterable,Attribute Large,Attribute Invalid_Value,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-iterable}@anchor{186}
  @section Attribute Iterable
  
  
*************** relevant environment variables at run ti
*** 10917,10923 ****
  Equivalent to Aspect Iterable.
  
  @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{186}
  @section Attribute Large
  
  
--- 10964,10970 ----
  Equivalent to Aspect Iterable.
  
  @node Attribute Large,Attribute Library_Level,Attribute Iterable,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-large}@anchor{187}
  @section Attribute Large
  
  
*************** The @code{Large} attribute is provided f
*** 10929,10936 ****
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
! @node Attribute Library_Level,Attribute Lock_Free,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{187}
  @section Attribute Library_Level
  
  
--- 10976,10983 ----
  the Ada 83 reference manual for an exact description of the semantics of
  this attribute.
  
! @node Attribute Library_Level,Attribute Loop_Entry,Attribute Large,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-library-level}@anchor{188}
  @section Attribute Library_Level
  
  
*************** this attribute.
*** 10939,10945 ****
  @code{P'Library_Level}, where P is an entity name,
  returns a Boolean value which is True if the entity is declared
  at the library level, and False otherwise. Note that within a
! generic instantition, the name of the generic unit denotes the
  instance, which means that this attribute can be used to test
  if a generic is instantiated at the library level, as shown
  in this example:
--- 10986,10992 ----
  @code{P'Library_Level}, where P is an entity name,
  returns a Boolean value which is True if the entity is declared
  at the library level, and False otherwise. Note that within a
! generic instantiation, the name of the generic unit denotes the
  instance, which means that this attribute can be used to test
  if a generic is instantiated at the library level, as shown
  in this example:
*************** package Gen is
*** 10955,10971 ****
  end Gen;
  @end example
  
! @node Attribute Lock_Free,Attribute Loop_Entry,Attribute Library_Level,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-lock-free}@anchor{188}
! @section Attribute Lock_Free
! 
! 
! @geindex Lock_Free
! 
! @code{P'Lock_Free}, where P is a protected object, returns True if a
! pragma @code{Lock_Free} applies to P.
! 
! @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Lock_Free,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{189}
  @section Attribute Loop_Entry
  
--- 11002,11008 ----
  end Gen;
  @end example
  
! @node Attribute Loop_Entry,Attribute Machine_Size,Attribute Library_Level,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-loop-entry}@anchor{189}
  @section Attribute Loop_Entry
  
*************** to the value an expression had upon entr
*** 10985,10994 ****
  relevant loop is either identified by the given loop name, or it is the
  innermost enclosing loop when no loop name is given.
  
! A @code{Loop_Entry} attribute can only occur within a
! @code{Loop_Variant} or @code{Loop_Invariant} pragma. A common use of
! @code{Loop_Entry} is to compare the current value of objects with their
! initial value at loop entry, in a @code{Loop_Invariant} pragma.
  
  The effect of using @code{X'Loop_Entry} is the same as declaring
  a constant initialized with the initial value of @code{X} at loop
--- 11022,11034 ----
  relevant loop is either identified by the given loop name, or it is the
  innermost enclosing loop when no loop name is given.
  
! A @code{Loop_Entry} attribute can only occur within an @code{Assert},
! @code{Assert_And_Cut}, @code{Assume}, @code{Loop_Variant} or @code{Loop_Invariant} pragma.
! In addition, such a pragma must be one of the items in the sequence
! of statements of a loop body, or nested inside block statements that
! appear in the sequence of statements of a loop body.
! A common use of @code{Loop_Entry} is to compare the current value of objects with
! their initial value at loop entry, in a @code{Loop_Invariant} pragma.
  
  The effect of using @code{X'Loop_Entry} is the same as declaring
  a constant initialized with the initial value of @code{X} at loop
*************** the target. The result is a static const
*** 11061,11077 ****
  @code{func'Mechanism_Code} yields an integer code for the
  mechanism used for the result of function @code{func}, and
  @code{subprog'Mechanism_Code (n)} yields the mechanism
! used for formal parameter number @emph{n} (a static integer value, with 1
  meaning the first parameter) of subprogram @code{subprog}.  The code returned is:
  
  
  @table @asis
  
! @item @emph{1}
  
  by copy (value)
  
! @item @emph{2}
  
  by reference
  @end table
--- 11101,11117 ----
  @code{func'Mechanism_Code} yields an integer code for the
  mechanism used for the result of function @code{func}, and
  @code{subprog'Mechanism_Code (n)} yields the mechanism
! used for formal parameter number `n' (a static integer value, with 1
  meaning the first parameter) of subprogram @code{subprog}.  The code returned is:
  
  
  @table @asis
  
! @item `1'
  
  by copy (value)
  
! @item `2'
  
  by reference
  @end table
*************** There is no way of indicating this witho
*** 11102,11108 ****
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{140}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{191}
  @section Attribute Object_Size
  
  
--- 11142,11148 ----
  attribute.
  
  @node Attribute Object_Size,Attribute Old,Attribute Null_Parameter,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-object-size}@anchor{141}@anchor{gnat_rm/implementation_defined_attributes id3}@anchor{191}
  @section Attribute Object_Size
  
  
*************** the Ada 83 reference manual for an exact
*** 11360,11366 ****
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{14e}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19b}
  @section Attribute Scalar_Storage_Order
  
  
--- 11400,11406 ----
  this attribute.
  
  @node Attribute Scalar_Storage_Order,Attribute Simple_Storage_Pool,Attribute Safe_Small,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-scalar-storage-order}@anchor{14f}@anchor{gnat_rm/implementation_defined_attributes id4}@anchor{19b}
  @section Attribute Scalar_Storage_Order
  
  
*************** a size no greater than the largest machi
*** 11458,11464 ****
  the enclosing machine scalar is defined as the smallest machine
  scalar starting at a position no greater than
  @code{position + first_bit / storage_element_size} and covering
! storage elements at least up to @code{position + (last_bit + storage_element_size - 1) / storage_element_size`}
  
  @item 
  the position of the component is interpreted relative to that machine
--- 11498,11504 ----
  the enclosing machine scalar is defined as the smallest machine
  scalar starting at a position no greater than
  @code{position + first_bit / storage_element_size} and covering
! storage elements at least up to @code{position + (last_bit + storage_element_size - 1) / storage_element_size}
  
  @item 
  the position of the component is interpreted relative to that machine
*************** the native ordering of the target, but t
*** 11471,11477 ****
  pragma @code{Default_Scalar_Storage_Order}.
  
  If a component of @code{T} is itself of a record or array type, the specfied
! @code{Scalar_Storage_Order} does @emph{not} apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as well
  if desired.
  
--- 11511,11517 ----
  pragma @code{Default_Scalar_Storage_Order}.
  
  If a component of @code{T} is itself of a record or array type, the specfied
! @code{Scalar_Storage_Order} does `not' apply to that nested type: an explicit
  attribute definition clause must be provided for the component type as well
  if desired.
  
*************** Note that debuggers may be unable to dis
*** 11523,11529 ****
  components of a type for which the opposite storage order is specified.
  
  @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{e3}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{19c}
  @section Attribute Simple_Storage_Pool
  
  
--- 11563,11569 ----
  components of a type for which the opposite storage order is specified.
  
  @node Attribute Simple_Storage_Pool,Attribute Small,Attribute Scalar_Storage_Order,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-simple-storage-pool}@anchor{e4}@anchor{gnat_rm/implementation_defined_attributes id5}@anchor{19c}
  @section Attribute Simple_Storage_Pool
  
  
*************** the primitive @code{Allocate} procedure
*** 11575,11581 ****
  @code{S'Simple_Storage_Pool} as the pool parameter. The detailed
  semantics of such allocators is the same as those defined for allocators
  in section 13.11 of the @cite{Ada Reference Manual}, with the term
! @emph{simple storage pool} substituted for @emph{storage pool}.
  
  If an access type @code{S} has a specified simple storage pool of type
  @code{SSP}, then a call to an instance of the @code{Ada.Unchecked_Deallocation}
--- 11615,11621 ----
  @code{S'Simple_Storage_Pool} as the pool parameter. The detailed
  semantics of such allocators is the same as those defined for allocators
  in section 13.11 of the @cite{Ada Reference Manual}, with the term
! `simple storage pool' substituted for `storage pool'.
  
  If an access type @code{S} has a specified simple storage pool of type
  @code{SSP}, then a call to an instance of the @code{Ada.Unchecked_Deallocation}
*************** for that access type invokes the primiti
*** 11583,11589 ****
  for type @code{SSP}, passing @code{S'Simple_Storage_Pool} as the pool
  parameter. The detailed semantics of such unchecked deallocations is the same
  as defined in section 13.11.2 of the Ada Reference Manual, except that the
! term @emph{simple storage pool} is substituted for @emph{storage pool}.
  
  @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{19d}
--- 11623,11629 ----
  for type @code{SSP}, passing @code{S'Simple_Storage_Pool} as the pool
  parameter. The detailed semantics of such unchecked deallocations is the same
  as defined in section 13.11.2 of the Ada Reference Manual, except that the
! term `simple storage pool' is substituted for `storage pool'.
  
  @node Attribute Small,Attribute Small_Denominator,Attribute Simple_Storage_Pool,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-small}@anchor{19d}
*************** an implicit dependency on this unit.
*** 11672,11678 ****
  @geindex System_Allocator_Alignment
  
  @code{Standard'System_Allocator_Alignment} (@code{Standard} is the only
! allowed prefix) provides the observable guaranted to be honored by
  the system allocator (malloc). This is a static value that can be used
  in user storage pools based on malloc either to reject allocation
  with alignment too large or to enable a realignment circuitry if the
--- 11712,11718 ----
  @geindex System_Allocator_Alignment
  
  @code{Standard'System_Allocator_Alignment} (@code{Standard} is the only
! allowed prefix) provides the observable guaranteed to be honored by
  the system allocator (malloc). This is a static value that can be used
  in user storage pools based on malloc either to reject allocation
  with alignment too large or to enable a realignment circuitry if the
*************** In general this is a risky approach. It
*** 12005,12011 ****
  @code{Unrestricted_Access} are potentially non-portable, even from one version
  of GNAT to another, so are best avoided if possible.
  
! @node Attribute Update,Attribute Valid_Image,Attribute Unrestricted_Access,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ac}
  @section Attribute Update
  
--- 12045,12051 ----
  @code{Unrestricted_Access} are potentially non-portable, even from one version
  of GNAT to another, so are best avoided if possible.
  
! @node Attribute Update,Attribute Valid_Value,Attribute Unrestricted_Access,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-update}@anchor{1ac}
  @section Attribute Update
  
*************** A := A'Update ((1, 2) => 20, (3, 4) => 3
*** 12086,12104 ****
  
  which changes element (1,2) to 20 and (3,4) to 30.
  
! @node Attribute Valid_Image,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-image}@anchor{1ad}
! @section Attribute Valid_Image
  
  
! @geindex Valid_Image
  
! The @code{'Valid_Image} attribute is defined for enumeration types other than
  those in package Standard. This attribute is a function that takes
! a String, and returns Boolean. @code{T'Valid_Image (S)} returns True
  if and only if @code{T'Value (S)} would not raise Constraint_Error.
  
! @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Image,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1ae}
  @section Attribute Valid_Scalars
  
--- 12126,12144 ----
  
  which changes element (1,2) to 20 and (3,4) to 30.
  
! @node Attribute Valid_Value,Attribute Valid_Scalars,Attribute Update,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-valid-value}@anchor{1ad}
! @section Attribute Valid_Value
  
  
! @geindex Valid_Value
  
! The @code{'Valid_Value} attribute is defined for enumeration types other than
  those in package Standard. This attribute is a function that takes
! a String, and returns Boolean. @code{T'Valid_Value (S)} returns True
  if and only if @code{T'Value (S)} would not raise Constraint_Error.
  
! @node Attribute Valid_Scalars,Attribute VADS_Size,Attribute Valid_Value,Implementation Defined Attributes
  @anchor{gnat_rm/implementation_defined_attributes attribute-valid-scalars}@anchor{1ae}
  @section Attribute Valid_Scalars
  
*************** gives the result that would be obtained
*** 12153,12159 ****
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{15c}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b0}
  @section Attribute Value_Size
  
  
--- 12193,12199 ----
  the corresponding type.
  
  @node Attribute Value_Size,Attribute Wchar_T_Size,Attribute VADS_Size,Implementation Defined Attributes
! @anchor{gnat_rm/implementation_defined_attributes attribute-value-size}@anchor{15d}@anchor{gnat_rm/implementation_defined_attributes id6}@anchor{1b0}
  @section Attribute Value_Size
  
  
*************** then all compilation units in the partit
*** 12271,12276 ****
--- 12311,12317 ----
  * No_IO:: 
  * No_Local_Allocators:: 
  * No_Local_Protected_Objects:: 
+ * No_Local_Tagged_Types:: 
  * No_Local_Timing_Events:: 
  * No_Long_Long_Integers:: 
  * No_Multiple_Elaboration:: 
*************** delay statements and no semantic depende
*** 12526,12532 ****
  @geindex No_Dependence
  
  [RM 13.12.1] This restriction ensures at compile time that there are no
! dependences on a library unit.
  
  @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
  @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1ca}
--- 12567,12575 ----
  @geindex No_Dependence
  
  [RM 13.12.1] This restriction ensures at compile time that there are no
! dependences on a library unit. For GNAT, this includes implicit implementation
! dependences on units of the runtime library that are created by the compiler
! to support specific constructs of the language.
  
  @node No_Direct_Boolean_Operators,No_Dispatch,No_Dependence,Partition-Wide Restrictions
  @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-direct-boolean-operators}@anchor{1ca}
*************** Text_IO, Wide_Text_IO, Wide_Wide_Text_IO
*** 12899,12905 ****
  occurrences of an allocator in subprograms, generic subprograms, tasks,
  and entry bodies.
  
! @node No_Local_Protected_Objects,No_Local_Timing_Events,No_Local_Allocators,Partition-Wide Restrictions
  @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e0}
  @subsection No_Local_Protected_Objects
  
--- 12942,12948 ----
  occurrences of an allocator in subprograms, generic subprograms, tasks,
  and entry bodies.
  
! @node No_Local_Protected_Objects,No_Local_Tagged_Types,No_Local_Allocators,Partition-Wide Restrictions
  @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-protected-objects}@anchor{1e0}
  @subsection No_Local_Protected_Objects
  
*************** and entry bodies.
*** 12909,12916 ****
  [RM D.7] This restriction ensures at compile time that protected objects are
  only declared at the library level.
  
! @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e1}
  @subsection No_Local_Timing_Events
  
  
--- 12952,12969 ----
  [RM D.7] This restriction ensures at compile time that protected objects are
  only declared at the library level.
  
! @node No_Local_Tagged_Types,No_Local_Timing_Events,No_Local_Protected_Objects,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-tagged-types}@anchor{1e1}
! @subsection No_Local_Tagged_Types
! 
! 
! @geindex No_Local_Tagged_Types
! 
! [GNAT] This restriction ensures at compile time that tagged types are only
! declared at the library level.
! 
! @node No_Local_Timing_Events,No_Long_Long_Integers,No_Local_Tagged_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-local-timing-events}@anchor{1e2}
  @subsection No_Local_Timing_Events
  
  
*************** only declared at the library level.
*** 12920,12926 ****
  declared at the library level.
  
  @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1e2}
  @subsection No_Long_Long_Integers
  
  
--- 12973,12979 ----
  declared at the library level.
  
  @node No_Long_Long_Integers,No_Multiple_Elaboration,No_Local_Timing_Events,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-long-long-integers}@anchor{1e3}
  @subsection No_Long_Long_Integers
  
  
*************** implicit base type is Long_Long_Integer,
*** 12932,12938 ****
  Long_Integer’Size.
  
  @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1e3}
  @subsection No_Multiple_Elaboration
  
  
--- 12985,12991 ----
  Long_Integer’Size.
  
  @node No_Multiple_Elaboration,No_Nested_Finalization,No_Long_Long_Integers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-multiple-elaboration}@anchor{1e4}
  @subsection No_Multiple_Elaboration
  
  
*************** possible, including non-Ada main program
*** 12948,12954 ****
  permitted and will be diagnosed by the binder.
  
  @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1e4}
  @subsection No_Nested_Finalization
  
  
--- 13001,13007 ----
  permitted and will be diagnosed by the binder.
  
  @node No_Nested_Finalization,No_Protected_Type_Allocators,No_Multiple_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-nested-finalization}@anchor{1e5}
  @subsection No_Nested_Finalization
  
  
*************** permitted and will be diagnosed by the b
*** 12957,12963 ****
  [RM D.7] All objects requiring finalization are declared at the library level.
  
  @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1e5}
  @subsection No_Protected_Type_Allocators
  
  
--- 13010,13016 ----
  [RM D.7] All objects requiring finalization are declared at the library level.
  
  @node No_Protected_Type_Allocators,No_Protected_Types,No_Nested_Finalization,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-type-allocators}@anchor{1e6}
  @subsection No_Protected_Type_Allocators
  
  
*************** permitted and will be diagnosed by the b
*** 12967,12973 ****
  expressions that attempt to allocate protected objects.
  
  @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1e6}
  @subsection No_Protected_Types
  
  
--- 13020,13026 ----
  expressions that attempt to allocate protected objects.
  
  @node No_Protected_Types,No_Recursion,No_Protected_Type_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-protected-types}@anchor{1e7}
  @subsection No_Protected_Types
  
  
*************** expressions that attempt to allocate pro
*** 12977,12983 ****
  declarations of protected types or protected objects.
  
  @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1e7}
  @subsection No_Recursion
  
  
--- 13030,13036 ----
  declarations of protected types or protected objects.
  
  @node No_Recursion,No_Reentrancy,No_Protected_Types,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-recursion}@anchor{1e8}
  @subsection No_Recursion
  
  
*************** declarations of protected types or prote
*** 12987,12993 ****
  part of its execution.
  
  @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1e8}
  @subsection No_Reentrancy
  
  
--- 13040,13046 ----
  part of its execution.
  
  @node No_Reentrancy,No_Relative_Delay,No_Recursion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-reentrancy}@anchor{1e9}
  @subsection No_Reentrancy
  
  
*************** part of its execution.
*** 12997,13003 ****
  two tasks at the same time.
  
  @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1e9}
  @subsection No_Relative_Delay
  
  
--- 13050,13056 ----
  two tasks at the same time.
  
  @node No_Relative_Delay,No_Requeue_Statements,No_Reentrancy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-relative-delay}@anchor{1ea}
  @subsection No_Relative_Delay
  
  
*************** relative statements and prevents express
*** 13008,13014 ****
  appearing in source code.
  
  @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1ea}
  @subsection No_Requeue_Statements
  
  
--- 13061,13067 ----
  appearing in source code.
  
  @node No_Requeue_Statements,No_Secondary_Stack,No_Relative_Delay,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-requeue-statements}@anchor{1eb}
  @subsection No_Requeue_Statements
  
  
*************** compatibility purposes (and a warning wi
*** 13026,13032 ****
  warnings on oNobsolescent features are activated).
  
  @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1eb}
  @subsection No_Secondary_Stack
  
  
--- 13079,13085 ----
  warnings on oNobsolescent features are activated).
  
  @node No_Secondary_Stack,No_Select_Statements,No_Requeue_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-secondary-stack}@anchor{1ec}
  @subsection No_Secondary_Stack
  
  
*************** stack is used to implement functions ret
*** 13039,13045 ****
  secondary stacks for tasks (excluding the environment task) at run time.
  
  @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ec}
  @subsection No_Select_Statements
  
  
--- 13092,13098 ----
  secondary stacks for tasks (excluding the environment task) at run time.
  
  @node No_Select_Statements,No_Specific_Termination_Handlers,No_Secondary_Stack,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-select-statements}@anchor{1ed}
  @subsection No_Select_Statements
  
  
*************** secondary stacks for tasks (excluding th
*** 13049,13055 ****
  kind are permitted, that is the keyword @code{select} may not appear.
  
  @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ed}
  @subsection No_Specific_Termination_Handlers
  
  
--- 13102,13108 ----
  kind are permitted, that is the keyword @code{select} may not appear.
  
  @node No_Specific_Termination_Handlers,No_Specification_of_Aspect,No_Select_Statements,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specific-termination-handlers}@anchor{1ee}
  @subsection No_Specific_Termination_Handlers
  
  
*************** kind are permitted, that is the keyword
*** 13059,13065 ****
  or to Ada.Task_Termination.Specific_Handler.
  
  @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1ee}
  @subsection No_Specification_of_Aspect
  
  
--- 13112,13118 ----
  or to Ada.Task_Termination.Specific_Handler.
  
  @node No_Specification_of_Aspect,No_Standard_Allocators_After_Elaboration,No_Specific_Termination_Handlers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-specification-of-aspect}@anchor{1ef}
  @subsection No_Specification_of_Aspect
  
  
*************** specification, attribute definition clau
*** 13070,13076 ****
  given aspect.
  
  @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1ef}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
--- 13123,13129 ----
  given aspect.
  
  @node No_Standard_Allocators_After_Elaboration,No_Standard_Storage_Pools,No_Specification_of_Aspect,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-allocators-after-elaboration}@anchor{1f0}
  @subsection No_Standard_Allocators_After_Elaboration
  
  
*************** library items of the partition has compl
*** 13082,13088 ****
  is raised.
  
  @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{1f0}
  @subsection No_Standard_Storage_Pools
  
  
--- 13135,13141 ----
  is raised.
  
  @node No_Standard_Storage_Pools,No_Stream_Optimizations,No_Standard_Allocators_After_Elaboration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-standard-storage-pools}@anchor{1f1}
  @subsection No_Standard_Storage_Pools
  
  
*************** have an explicit Storage_Pool attribute
*** 13094,13100 ****
  user-defined storage pool.
  
  @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{1f1}
  @subsection No_Stream_Optimizations
  
  
--- 13147,13153 ----
  user-defined storage pool.
  
  @node No_Stream_Optimizations,No_Streams,No_Standard_Storage_Pools,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-stream-optimizations}@anchor{1f2}
  @subsection No_Stream_Optimizations
  
  
*************** due to their superior performance. When
*** 13107,13113 ****
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f2}
  @subsection No_Streams
  
  
--- 13160,13166 ----
  compiler performs all IO operations on a per-character basis.
  
  @node No_Streams,No_Tagged_Type_Registration,No_Stream_Optimizations,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-streams}@anchor{1f3}
  @subsection No_Streams
  
  
*************** unit declaring a tagged type should be c
*** 13128,13134 ****
  though this is not required.
  
  @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{1f3}
  @subsection No_Tagged_Type_Registration
  
  
--- 13181,13187 ----
  though this is not required.
  
  @node No_Tagged_Type_Registration,No_Task_Allocators,No_Streams,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tagged-type-registration}@anchor{1f4}
  @subsection No_Tagged_Type_Registration
  
  
*************** are declared. This restriction may be ne
*** 13143,13149 ****
  the No_Elaboration_Code restriction.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f4}
  @subsection No_Task_Allocators
  
  
--- 13196,13202 ----
  the No_Elaboration_Code restriction.
  
  @node No_Task_Allocators,No_Task_At_Interrupt_Priority,No_Tagged_Type_Registration,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-allocators}@anchor{1f5}
  @subsection No_Task_Allocators
  
  
*************** the No_Elaboration_Code restriction.
*** 13153,13159 ****
  or types containing task subcomponents.
  
  @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{1f5}
  @subsection No_Task_At_Interrupt_Priority
  
  
--- 13206,13212 ----
  or types containing task subcomponents.
  
  @node No_Task_At_Interrupt_Priority,No_Task_Attributes_Package,No_Task_Allocators,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-at-interrupt-priority}@anchor{1f6}
  @subsection No_Task_At_Interrupt_Priority
  
  
*************** a consequence, the tasks are always crea
*** 13165,13171 ****
  that an interrupt priority.
  
  @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{1f6}
  @subsection No_Task_Attributes_Package
  
  
--- 13218,13224 ----
  that an interrupt priority.
  
  @node No_Task_Attributes_Package,No_Task_Hierarchy,No_Task_At_Interrupt_Priority,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-attributes-package}@anchor{1f7}
  @subsection No_Task_Attributes_Package
  
  
*************** compatibility purposes (and a warning wi
*** 13182,13188 ****
  warnings on obsolescent features are activated).
  
  @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{1f7}
  @subsection No_Task_Hierarchy
  
  
--- 13235,13241 ----
  warnings on obsolescent features are activated).
  
  @node No_Task_Hierarchy,No_Task_Termination,No_Task_Attributes_Package,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-hierarchy}@anchor{1f8}
  @subsection No_Task_Hierarchy
  
  
*************** warnings on obsolescent features are act
*** 13192,13198 ****
  directly on the environment task of the partition.
  
  @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{1f8}
  @subsection No_Task_Termination
  
  
--- 13245,13251 ----
  directly on the environment task of the partition.
  
  @node No_Task_Termination,No_Tasking,No_Task_Hierarchy,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-task-termination}@anchor{1f9}
  @subsection No_Task_Termination
  
  
*************** directly on the environment task of the
*** 13201,13207 ****
  [RM D.7] Tasks that terminate are erroneous.
  
  @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{1f9}
  @subsection No_Tasking
  
  
--- 13254,13260 ----
  [RM D.7] Tasks that terminate are erroneous.
  
  @node No_Tasking,No_Terminate_Alternatives,No_Task_Termination,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-tasking}@anchor{1fa}
  @subsection No_Tasking
  
  
*************** and cause an error message to be output
*** 13214,13220 ****
  binder.
  
  @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{1fa}
  @subsection No_Terminate_Alternatives
  
  
--- 13267,13273 ----
  binder.
  
  @node No_Terminate_Alternatives,No_Unchecked_Access,No_Tasking,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-terminate-alternatives}@anchor{1fb}
  @subsection No_Terminate_Alternatives
  
  
*************** binder.
*** 13223,13229 ****
  [RM D.7] There are no selective accepts with terminate alternatives.
  
  @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{1fb}
  @subsection No_Unchecked_Access
  
  
--- 13276,13282 ----
  [RM D.7] There are no selective accepts with terminate alternatives.
  
  @node No_Unchecked_Access,No_Unchecked_Conversion,No_Terminate_Alternatives,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-access}@anchor{1fc}
  @subsection No_Unchecked_Access
  
  
*************** binder.
*** 13233,13239 ****
  occurrences of the Unchecked_Access attribute.
  
  @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{1fc}
  @subsection No_Unchecked_Conversion
  
  
--- 13286,13292 ----
  occurrences of the Unchecked_Access attribute.
  
  @node No_Unchecked_Conversion,No_Unchecked_Deallocation,No_Unchecked_Access,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-conversion}@anchor{1fd}
  @subsection No_Unchecked_Conversion
  
  
*************** occurrences of the Unchecked_Access attr
*** 13243,13249 ****
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Entity,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fd}
  @subsection No_Unchecked_Deallocation
  
  
--- 13296,13302 ----
  dependences on the predefined generic function Unchecked_Conversion.
  
  @node No_Unchecked_Deallocation,No_Use_Of_Entity,No_Unchecked_Conversion,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-unchecked-deallocation}@anchor{1fe}
  @subsection No_Unchecked_Deallocation
  
  
*************** dependences on the predefined generic fu
*** 13253,13259 ****
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Entity,Pure_Barriers,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1fe}
  @subsection No_Use_Of_Entity
  
  
--- 13306,13312 ----
  dependences on the predefined generic procedure Unchecked_Deallocation.
  
  @node No_Use_Of_Entity,Pure_Barriers,No_Unchecked_Deallocation,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-use-of-entity}@anchor{1ff}
  @subsection No_Use_Of_Entity
  
  
*************** No_Use_Of_Entity => Ada.Text_IO.Put_Line
*** 13273,13279 ****
  @end example
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{1ff}
  @subsection Pure_Barriers
  
  
--- 13326,13332 ----
  @end example
  
  @node Pure_Barriers,Simple_Barriers,No_Use_Of_Entity,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions pure-barriers}@anchor{200}
  @subsection Pure_Barriers
  
  
*************** but still ensures absence of side effect
*** 13324,13330 ****
  during the evaluation of the barriers.
  
  @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{200}
  @subsection Simple_Barriers
  
  
--- 13377,13383 ----
  during the evaluation of the barriers.
  
  @node Simple_Barriers,Static_Priorities,Pure_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions simple-barriers}@anchor{201}
  @subsection Simple_Barriers
  
  
*************** compatibility purposes (and a warning wi
*** 13343,13349 ****
  warnings on obsolescent features are activated).
  
  @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{201}
  @subsection Static_Priorities
  
  
--- 13396,13402 ----
  warnings on obsolescent features are activated).
  
  @node Static_Priorities,Static_Storage_Size,Simple_Barriers,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-priorities}@anchor{202}
  @subsection Static_Priorities
  
  
*************** are static, and that there are no depend
*** 13354,13360 ****
  @code{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{202}
  @subsection Static_Storage_Size
  
  
--- 13407,13413 ----
  @code{Ada.Dynamic_Priorities}.
  
  @node Static_Storage_Size,,Static_Priorities,Partition-Wide Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-storage-size}@anchor{203}
  @subsection Static_Storage_Size
  
  
*************** are static, and that there are no depend
*** 13364,13370 ****
  in a Storage_Size pragma or attribute definition clause is static.
  
  @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{203}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{204}
  @section Program Unit Level Restrictions
  
  
--- 13417,13423 ----
  in a Storage_Size pragma or attribute definition clause is static.
  
  @node Program Unit Level Restrictions,,Partition-Wide Restrictions,Standard and Implementation Defined Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions id3}@anchor{204}@anchor{gnat_rm/standard_and_implementation_defined_restrictions program-unit-level-restrictions}@anchor{205}
  @section Program Unit Level Restrictions
  
  
*************** other compilation units in the partition
*** 13395,13401 ****
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{205}
  @subsection No_Elaboration_Code
  
  
--- 13448,13454 ----
  @end menu
  
  @node No_Elaboration_Code,No_Dynamic_Accessibility_Checks,,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-elaboration-code}@anchor{206}
  @subsection No_Elaboration_Code
  
  
*************** associated with the unit. This counter i
*** 13451,13457 ****
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{206}
  @subsection No_Dynamic_Accessibility_Checks
  
  
--- 13504,13510 ----
  before elaboration and to control multiple elaboration attempts.
  
  @node No_Dynamic_Accessibility_Checks,No_Dynamic_Sized_Objects,No_Elaboration_Code,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-accessibility-checks}@anchor{207}
  @subsection No_Dynamic_Accessibility_Checks
  
  
*************** In all other cases, the level of T is as
*** 13500,13506 ****
  @end itemize
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{207}
  @subsection No_Dynamic_Sized_Objects
  
  
--- 13553,13559 ----
  @end itemize
  
  @node No_Dynamic_Sized_Objects,No_Entry_Queue,No_Dynamic_Accessibility_Checks,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-dynamic-sized-objects}@anchor{208}
  @subsection No_Dynamic_Sized_Objects
  
  
*************** access discriminants. It is often a good
*** 13518,13524 ****
  with No_Secondary_Stack.
  
  @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{208}
  @subsection No_Entry_Queue
  
  
--- 13571,13577 ----
  with No_Secondary_Stack.
  
  @node No_Entry_Queue,No_Implementation_Aspect_Specifications,No_Dynamic_Sized_Objects,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-entry-queue}@anchor{209}
  @subsection No_Entry_Queue
  
  
*************** checked at compile time.  A program exec
*** 13531,13537 ****
  is made to queue a second task on such an entry.
  
  @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{209}
  @subsection No_Implementation_Aspect_Specifications
  
  
--- 13584,13590 ----
  is made to queue a second task on such an entry.
  
  @node No_Implementation_Aspect_Specifications,No_Implementation_Attributes,No_Entry_Queue,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-aspect-specifications}@anchor{20a}
  @subsection No_Implementation_Aspect_Specifications
  
  
*************** GNAT-defined aspects are present.  With
*** 13542,13548 ****
  aspects that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{20a}
  @subsection No_Implementation_Attributes
  
  
--- 13595,13601 ----
  aspects that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Attributes,No_Implementation_Identifiers,No_Implementation_Aspect_Specifications,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-attributes}@anchor{20b}
  @subsection No_Implementation_Attributes
  
  
*************** attributes that can be used are those de
*** 13554,13560 ****
  Manual.
  
  @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{20b}
  @subsection No_Implementation_Identifiers
  
  
--- 13607,13613 ----
  Manual.
  
  @node No_Implementation_Identifiers,No_Implementation_Pragmas,No_Implementation_Attributes,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-identifiers}@anchor{20c}
  @subsection No_Implementation_Identifiers
  
  
*************** implementation-defined identifiers (mark
*** 13565,13571 ****
  occur within language-defined packages.
  
  @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{20c}
  @subsection No_Implementation_Pragmas
  
  
--- 13618,13624 ----
  occur within language-defined packages.
  
  @node No_Implementation_Pragmas,No_Implementation_Restrictions,No_Implementation_Identifiers,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-pragmas}@anchor{20d}
  @subsection No_Implementation_Pragmas
  
  
*************** GNAT-defined pragmas are present.  With
*** 13576,13582 ****
  pragmas that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{20d}
  @subsection No_Implementation_Restrictions
  
  
--- 13629,13635 ----
  pragmas that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Restrictions,No_Implementation_Units,No_Implementation_Pragmas,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-restrictions}@anchor{20e}
  @subsection No_Implementation_Restrictions
  
  
*************** are present.  With this restriction, the
*** 13588,13594 ****
  that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{20e}
  @subsection No_Implementation_Units
  
  
--- 13641,13647 ----
  that can be used are those defined in the Ada Reference Manual.
  
  @node No_Implementation_Units,No_Implicit_Aliasing,No_Implementation_Restrictions,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implementation-units}@anchor{20f}
  @subsection No_Implementation_Units
  
  
*************** mention in the context clause of any imp
*** 13599,13605 ****
  of packages Ada, Interfaces, or System.
  
  @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{20f}
  @subsection No_Implicit_Aliasing
  
  
--- 13652,13658 ----
  of packages Ada, Interfaces, or System.
  
  @node No_Implicit_Aliasing,No_Implicit_Loops,No_Implementation_Units,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-aliasing}@anchor{210}
  @subsection No_Implicit_Aliasing
  
  
*************** to be aliased, and in such cases, it can
*** 13614,13620 ****
  the standard attribute Unchecked_Access which is preferable.
  
  @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{210}
  @subsection No_Implicit_Loops
  
  
--- 13667,13673 ----
  the standard attribute Unchecked_Access which is preferable.
  
  @node No_Implicit_Loops,No_Obsolescent_Features,No_Implicit_Aliasing,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-implicit-loops}@anchor{211}
  @subsection No_Implicit_Loops
  
  
*************** arrays larger than about 5000 scalar com
*** 13631,13637 ****
  is set in the spec of a package, it will not apply to its body.
  
  @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{211}
  @subsection No_Obsolescent_Features
  
  
--- 13684,13690 ----
  is set in the spec of a package, it will not apply to its body.
  
  @node No_Obsolescent_Features,No_Wide_Characters,No_Implicit_Loops,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-obsolescent-features}@anchor{212}
  @subsection No_Obsolescent_Features
  
  
*************** is set in the spec of a package, it will
*** 13641,13647 ****
  features are used, as defined in Annex J of the Ada Reference Manual.
  
  @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{212}
  @subsection No_Wide_Characters
  
  
--- 13694,13700 ----
  features are used, as defined in Annex J of the Ada Reference Manual.
  
  @node No_Wide_Characters,Static_Dispatch_Tables,No_Obsolescent_Features,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions no-wide-characters}@anchor{213}
  @subsection No_Wide_Characters
  
  
*************** appear in the program (that is literals
*** 13655,13661 ****
  type @code{Character}).
  
  @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{213}
  @subsection Static_Dispatch_Tables
  
  
--- 13708,13714 ----
  type @code{Character}).
  
  @node Static_Dispatch_Tables,SPARK_05,No_Wide_Characters,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions static-dispatch-tables}@anchor{214}
  @subsection Static_Dispatch_Tables
  
  
*************** type @code{Character}).
*** 13665,13671 ****
  associated with dispatch tables can be placed in read-only memory.
  
  @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{214}
  @subsection SPARK_05
  
  
--- 13718,13724 ----
  associated with dispatch tables can be placed in read-only memory.
  
  @node SPARK_05,,Static_Dispatch_Tables,Program Unit Level Restrictions
! @anchor{gnat_rm/standard_and_implementation_defined_restrictions spark-05}@anchor{215}
  @subsection SPARK_05
  
  
*************** gnatprove -P project.gpr --mode=check_al
*** 13688,13694 ****
  @end example
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{215}@anchor{gnat_rm/implementation_advice id1}@anchor{216}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
--- 13741,13747 ----
  @end example
  
  @node Implementation Advice,Implementation Defined Characteristics,Standard and Implementation Defined Restrictions,Top
! @anchor{gnat_rm/implementation_advice doc}@anchor{216}@anchor{gnat_rm/implementation_advice id1}@anchor{217}@anchor{gnat_rm/implementation_advice implementation-advice}@anchor{a}
  @chapter Implementation Advice
  
  
*************** case the text describes what GNAT does a
*** 13786,13792 ****
  @end menu
  
  @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{217}
  @section RM 1.1.3(20): Error Detection
  
  
--- 13839,13845 ----
  @end menu
  
  @node RM 1 1 3 20 Error Detection,RM 1 1 3 31 Child Units,,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-20-error-detection}@anchor{218}
  @section RM 1.1.3(20): Error Detection
  
  
*************** or diagnosed at compile time.
*** 13803,13809 ****
  @geindex Child Units
  
  @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{218}
  @section RM 1.1.3(31): Child Units
  
  
--- 13856,13862 ----
  @geindex Child Units
  
  @node RM 1 1 3 31 Child Units,RM 1 1 5 12 Bounded Errors,RM 1 1 3 20 Error Detection,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-3-31-child-units}@anchor{219}
  @section RM 1.1.3(31): Child Units
  
  
*************** Followed.
*** 13819,13825 ****
  @geindex Bounded errors
  
  @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{219}
  @section RM 1.1.5(12): Bounded Errors
  
  
--- 13872,13878 ----
  @geindex Bounded errors
  
  @node RM 1 1 5 12 Bounded Errors,RM 2 8 16 Pragmas,RM 1 1 3 31 Child Units,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-1-1-5-12-bounded-errors}@anchor{21a}
  @section RM 1.1.5(12): Bounded Errors
  
  
*************** runtime.
*** 13836,13842 ****
  @geindex Pragmas
  
  @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
! @anchor{gnat_rm/implementation_advice id2}@anchor{21a}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21b}
  @section RM 2.8(16): Pragmas
  
  
--- 13889,13895 ----
  @geindex Pragmas
  
  @node RM 2 8 16 Pragmas,RM 2 8 17-19 Pragmas,RM 1 1 5 12 Bounded Errors,Implementation Advice
! @anchor{gnat_rm/implementation_advice id2}@anchor{21b}@anchor{gnat_rm/implementation_advice rm-2-8-16-pragmas}@anchor{21c}
  @section RM 2.8(16): Pragmas
  
  
*************** Explanation
*** 13863,13869 ****
  
  @item
  
! @emph{Abort_Defer}
  
  @tab
  
--- 13916,13922 ----
  
  @item
  
! `Abort_Defer'
  
  @tab
  
*************** Affects semantics
*** 13871,13877 ****
  
  @item
  
! @emph{Ada_83}
  
  @tab
  
--- 13924,13930 ----
  
  @item
  
! `Ada_83'
  
  @tab
  
*************** Affects legality
*** 13879,13885 ****
  
  @item
  
! @emph{Assert}
  
  @tab
  
--- 13932,13938 ----
  
  @item
  
! `Assert'
  
  @tab
  
*************** Affects semantics
*** 13887,13893 ****
  
  @item
  
! @emph{CPP_Class}
  
  @tab
  
--- 13940,13946 ----
  
  @item
  
! `CPP_Class'
  
  @tab
  
*************** Affects semantics
*** 13895,13901 ****
  
  @item
  
! @emph{CPP_Constructor}
  
  @tab
  
--- 13948,13954 ----
  
  @item
  
! `CPP_Constructor'
  
  @tab
  
*************** Affects semantics
*** 13903,13909 ****
  
  @item
  
! @emph{Debug}
  
  @tab
  
--- 13956,13962 ----
  
  @item
  
! `Debug'
  
  @tab
  
*************** Affects semantics
*** 13911,13917 ****
  
  @item
  
! @emph{Interface_Name}
  
  @tab
  
--- 13964,13970 ----
  
  @item
  
! `Interface_Name'
  
  @tab
  
*************** Affects semantics
*** 13919,13925 ****
  
  @item
  
! @emph{Machine_Attribute}
  
  @tab
  
--- 13972,13978 ----
  
  @item
  
! `Machine_Attribute'
  
  @tab
  
*************** Affects semantics
*** 13927,13933 ****
  
  @item
  
! @emph{Unimplemented_Unit}
  
  @tab
  
--- 13980,13986 ----
  
  @item
  
! `Unimplemented_Unit'
  
  @tab
  
*************** Affects legality
*** 13935,13941 ****
  
  @item
  
! @emph{Unchecked_Union}
  
  @tab
  
--- 13988,13994 ----
  
  @item
  
! `Unchecked_Union'
  
  @tab
  
*************** that this advice not be followed.  For d
*** 13949,13955 ****
  @ref{7,,Implementation Defined Pragmas}.
  
  @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{21c}
  @section RM 2.8(17-19): Pragmas
  
  
--- 14002,14008 ----
  @ref{7,,Implementation Defined Pragmas}.
  
  @node RM 2 8 17-19 Pragmas,RM 3 5 2 5 Alternative Character Sets,RM 2 8 16 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-2-8-17-19-pragmas}@anchor{21d}
  @section RM 2.8(17-19): Pragmas
  
  
*************** replacing @code{library_items}.”
*** 13970,13983 ****
  @end itemize
  @end quotation
  
! See @ref{21b,,RM 2.8(16); Pragmas}.
  
  @geindex Character Sets
  
  @geindex Alternative Character Sets
  
  @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{21d}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
--- 14023,14036 ----
  @end itemize
  @end quotation
  
! See @ref{21c,,RM 2.8(16); Pragmas}.
  
  @geindex Character Sets
  
  @geindex Alternative Character Sets
  
  @node RM 3 5 2 5 Alternative Character Sets,RM 3 5 4 28 Integer Types,RM 2 8 17-19 Pragmas,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-2-5-alternative-character-sets}@anchor{21e}
  @section RM 3.5.2(5): Alternative Character Sets
  
  
*************** there is no such restriction.
*** 14005,14011 ****
  @geindex Integer types
  
  @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{21e}
  @section RM 3.5.4(28): Integer Types
  
  
--- 14058,14064 ----
  @geindex Integer types
  
  @node RM 3 5 4 28 Integer Types,RM 3 5 4 29 Integer Types,RM 3 5 2 5 Alternative Character Sets,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-28-integer-types}@anchor{21f}
  @section RM 3.5.4(28): Integer Types
  
  
*************** are supported for convenient interface t
*** 14024,14030 ****
  types of the machine are easily available.
  
  @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{21f}
  @section RM 3.5.4(29): Integer Types
  
  
--- 14077,14083 ----
  types of the machine are easily available.
  
  @node RM 3 5 4 29 Integer Types,RM 3 5 5 8 Enumeration Values,RM 3 5 4 28 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-4-29-integer-types}@anchor{220}
  @section RM 3.5.4(29): Integer Types
  
  
*************** Followed.
*** 14040,14046 ****
  @geindex Enumeration values
  
  @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{220}
  @section RM 3.5.5(8): Enumeration Values
  
  
--- 14093,14099 ----
  @geindex Enumeration values
  
  @node RM 3 5 5 8 Enumeration Values,RM 3 5 7 17 Float Types,RM 3 5 4 29 Integer Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-5-8-enumeration-values}@anchor{221}
  @section RM 3.5.5(8): Enumeration Values
  
  
*************** Followed.
*** 14060,14066 ****
  @geindex Float types
  
  @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{221}
  @section RM 3.5.7(17): Float Types
  
  
--- 14113,14119 ----
  @geindex Float types
  
  @node RM 3 5 7 17 Float Types,RM 3 6 2 11 Multidimensional Arrays,RM 3 5 5 8 Enumeration Values,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-5-7-17-float-types}@anchor{222}
  @section RM 3.5.7(17): Float Types
  
  
*************** is a software rather than a hardware for
*** 14090,14096 ****
  @geindex multidimensional
  
  @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{222}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
--- 14143,14149 ----
  @geindex multidimensional
  
  @node RM 3 6 2 11 Multidimensional Arrays,RM 9 6 30-31 Duration’Small,RM 3 5 7 17 Float Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-3-6-2-11-multidimensional-arrays}@anchor{223}
  @section RM 3.6.2(11): Multidimensional Arrays
  
  
*************** is a software rather than a hardware for
*** 14100,14106 ****
  row-major order, consistent with the notation used for multidimensional
  array aggregates (see 4.3.3).  However, if a pragma @code{Convention}
  (@code{Fortran}, …) applies to a multidimensional array type, then
! column-major order should be used instead (see B.5, @emph{Interfacing with Fortran}).”
  @end quotation
  
  Followed.
--- 14153,14159 ----
  row-major order, consistent with the notation used for multidimensional
  array aggregates (see 4.3.3).  However, if a pragma @code{Convention}
  (@code{Fortran}, …) applies to a multidimensional array type, then
! column-major order should be used instead (see B.5, `Interfacing with Fortran').”
  @end quotation
  
  Followed.
*************** Followed.
*** 14108,14114 ****
  @geindex Duration'Small
  
  @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{223}
  @section RM 9.6(30-31): Duration’Small
  
  
--- 14161,14167 ----
  @geindex Duration'Small
  
  @node RM 9 6 30-31 Duration’Small,RM 10 2 1 12 Consistent Representation,RM 3 6 2 11 Multidimensional Arrays,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-9-6-30-31-duration-small}@anchor{224}
  @section RM 9.6(30-31): Duration’Small
  
  
*************** it need not be the same time base as use
*** 14129,14135 ****
  Followed.
  
  @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{224}
  @section RM 10.2.1(12): Consistent Representation
  
  
--- 14182,14188 ----
  Followed.
  
  @node RM 10 2 1 12 Consistent Representation,RM 11 4 1 19 Exception Information,RM 9 6 30-31 Duration’Small,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-10-2-1-12-consistent-representation}@anchor{225}
  @section RM 10.2.1(12): Consistent Representation
  
  
*************** advice without severely impacting effici
*** 14151,14157 ****
  @geindex Exception information
  
  @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{225}
  @section RM 11.4.1(19): Exception Information
  
  
--- 14204,14210 ----
  @geindex Exception information
  
  @node RM 11 4 1 19 Exception Information,RM 11 5 28 Suppression of Checks,RM 10 2 1 12 Consistent Representation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-4-1-19-exception-information}@anchor{226}
  @section RM 11.4.1(19): Exception Information
  
  
*************** Pragma @code{Discard_Names}.
*** 14182,14188 ****
  @geindex suppression of
  
  @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{226}
  @section RM 11.5(28): Suppression of Checks
  
  
--- 14235,14241 ----
  @geindex suppression of
  
  @node RM 11 5 28 Suppression of Checks,RM 13 1 21-24 Representation Clauses,RM 11 4 1 19 Exception Information,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-11-5-28-suppression-of-checks}@anchor{227}
  @section RM 11.5(28): Suppression of Checks
  
  
*************** Followed.
*** 14197,14203 ****
  @geindex Representation clauses
  
  @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{227}
  @section RM 13.1 (21-24): Representation Clauses
  
  
--- 14250,14256 ----
  @geindex Representation clauses
  
  @node RM 13 1 21-24 Representation Clauses,RM 13 2 6-8 Packed Types,RM 11 5 28 Suppression of Checks,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-1-21-24-representation-clauses}@anchor{228}
  @section RM 13.1 (21-24): Representation Clauses
  
  
*************** Followed.
*** 14246,14252 ****
  @geindex Packed types
  
  @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{228}
  @section RM 13.2(6-8): Packed Types
  
  
--- 14299,14305 ----
  @geindex Packed types
  
  @node RM 13 2 6-8 Packed Types,RM 13 3 14-19 Address Clauses,RM 13 1 21-24 Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-2-6-8-packed-types}@anchor{229}
  @section RM 13.2(6-8): Packed Types
  
  
*************** The recommended level of support pragma
*** 14261,14267 ****
  
  For a packed record type, the components should be packed as tightly as
  possible subject to the Sizes of the component subtypes, and subject to
! any @emph{record_representation_clause} that applies to the type; the
  implementation may, but need not, reorder components or cross aligned
  word boundaries to improve the packing.  A component whose @code{Size} is
  greater than the word size may be allocated an integral number of words.”
--- 14314,14320 ----
  
  For a packed record type, the components should be packed as tightly as
  possible subject to the Sizes of the component subtypes, and subject to
! any `record_representation_clause' that applies to the type; the
  implementation may, but need not, reorder components or cross aligned
  word boundaries to improve the packing.  A component whose @code{Size} is
  greater than the word size may be allocated an integral number of words.”
*************** then values of the type are implicitly i
*** 14274,14291 ****
  happens both for objects of the packed type, and for objects that have a
  subcomponent of the packed type.
  
- @quotation
- 
- “An implementation should support Address clauses for imported
- subprograms.”
- @end quotation
- 
- Followed.
- 
  @geindex Address clauses
  
  @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{229}
  @section RM 13.3(14-19): Address Clauses
  
  
--- 14327,14336 ----
  happens both for objects of the packed type, and for objects that have a
  subcomponent of the packed type.
  
  @geindex Address clauses
  
  @node RM 13 3 14-19 Address Clauses,RM 13 3 29-35 Alignment Clauses,RM 13 2 6-8 Packed Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-14-19-address-clauses}@anchor{22a}
  @section RM 13.3(14-19): Address Clauses
  
  
*************** Followed.
*** 14338,14344 ****
  @geindex Alignment clauses
  
  @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{22a}
  @section RM 13.3(29-35): Alignment Clauses
  
  
--- 14383,14389 ----
  @geindex Alignment clauses
  
  @node RM 13 3 29-35 Alignment Clauses,RM 13 3 42-43 Size Clauses,RM 13 3 14-19 Address Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-29-35-alignment-clauses}@anchor{22b}
  @section RM 13.3(29-35): Alignment Clauses
  
  
*************** Followed.
*** 14395,14401 ****
  @geindex Size clauses
  
  @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{22b}
  @section RM 13.3(42-43): Size Clauses
  
  
--- 14440,14446 ----
  @geindex Size clauses
  
  @node RM 13 3 42-43 Size Clauses,RM 13 3 50-56 Size Clauses,RM 13 3 29-35 Alignment Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-42-43-size-clauses}@anchor{22c}
  @section RM 13.3(42-43): Size Clauses
  
  
*************** object’s @code{Alignment} (if the @cod
*** 14413,14419 ****
  Followed.
  
  @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{22c}
  @section RM 13.3(50-56): Size Clauses
  
  
--- 14458,14464 ----
  Followed.
  
  @node RM 13 3 50-56 Size Clauses,RM 13 3 71-73 Component Size Clauses,RM 13 3 42-43 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-50-56-size-clauses}@anchor{22d}
  @section RM 13.3(50-56): Size Clauses
  
  
*************** Followed.
*** 14464,14470 ****
  @geindex Component_Size clauses
  
  @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{22d}
  @section RM 13.3(71-73): Component Size Clauses
  
  
--- 14509,14515 ----
  @geindex Component_Size clauses
  
  @node RM 13 3 71-73 Component Size Clauses,RM 13 4 9-10 Enumeration Representation Clauses,RM 13 3 50-56 Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-3-71-73-component-size-clauses}@anchor{22e}
  @section RM 13.3(71-73): Component Size Clauses
  
  
*************** Followed.
*** 14498,14504 ****
  @geindex enumeration
  
  @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{22e}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
--- 14543,14549 ----
  @geindex enumeration
  
  @node RM 13 4 9-10 Enumeration Representation Clauses,RM 13 5 1 17-22 Record Representation Clauses,RM 13 3 71-73 Component Size Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-4-9-10-enumeration-representation-clauses}@anchor{22f}
  @section RM 13.4(9-10): Enumeration Representation Clauses
  
  
*************** Followed.
*** 14520,14533 ****
  @geindex records
  
  @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{22f}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
  @quotation
  
  “The recommended level of support for
! @emph{record_representation_clause}s is:
  
  An implementation should support storage places that can be extracted
  with a load, mask, shift sequence of machine code, and set with a load,
--- 14565,14578 ----
  @geindex records
  
  @node RM 13 5 1 17-22 Record Representation Clauses,RM 13 5 2 5 Storage Place Attributes,RM 13 4 9-10 Enumeration Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-1-17-22-record-representation-clauses}@anchor{230}
  @section RM 13.5.1(17-22): Record Representation Clauses
  
  
  @quotation
  
  “The recommended level of support for
! `record_representation_clause's is:
  
  An implementation should support storage places that can be extracted
  with a load, mask, shift sequence of machine code, and set with a load,
*************** clause for the tag field.
*** 14568,14574 ****
  
  @quotation
  
! “An implementation need not support a @emph{component_clause} for a
  component of an extension part if the storage place is not after the
  storage places of all components of the parent type, whether or not
  those storage places had been specified.”
--- 14613,14619 ----
  
  @quotation
  
! “An implementation need not support a `component_clause' for a
  component of an extension part if the storage place is not after the
  storage places of all components of the parent type, whether or not
  those storage places had been specified.”
*************** and all mentioned features are implement
*** 14580,14586 ****
  @geindex Storage place attributes
  
  @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{230}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
--- 14625,14631 ----
  @geindex Storage place attributes
  
  @node RM 13 5 2 5 Storage Place Attributes,RM 13 5 3 7-8 Bit Ordering,RM 13 5 1 17-22 Record Representation Clauses,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-2-5-storage-place-attributes}@anchor{231}
  @section RM 13.5.2(5): Storage Place Attributes
  
  
*************** Followed.  There are no such components
*** 14600,14606 ****
  @geindex Bit ordering
  
  @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{231}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
--- 14645,14651 ----
  @geindex Bit ordering
  
  @node RM 13 5 3 7-8 Bit Ordering,RM 13 7 37 Address as Private,RM 13 5 2 5 Storage Place Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-5-3-7-8-bit-ordering}@anchor{232}
  @section RM 13.5.3(7-8): Bit Ordering
  
  
*************** Thus non-default bit ordering is not sup
*** 14620,14626 ****
  @geindex as private type
  
  @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{232}
  @section RM 13.7(37): Address as Private
  
  
--- 14665,14671 ----
  @geindex as private type
  
  @node RM 13 7 37 Address as Private,RM 13 7 1 16 Address Operations,RM 13 5 3 7-8 Bit Ordering,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-37-address-as-private}@anchor{233}
  @section RM 13.7(37): Address as Private
  
  
*************** Followed.
*** 14638,14644 ****
  @geindex operations of
  
  @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{233}
  @section RM 13.7.1(16): Address Operations
  
  
--- 14683,14689 ----
  @geindex operations of
  
  @node RM 13 7 1 16 Address Operations,RM 13 9 14-17 Unchecked Conversion,RM 13 7 37 Address as Private,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-7-1-16-address-operations}@anchor{234}
  @section RM 13.7.1(16): Address Operations
  
  
*************** operation raises @code{Program_Error}, s
*** 14656,14662 ****
  @geindex Unchecked conversion
  
  @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{234}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
--- 14701,14707 ----
  @geindex Unchecked conversion
  
  @node RM 13 9 14-17 Unchecked Conversion,RM 13 11 23-25 Implicit Heap Usage,RM 13 7 1 16 Address Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-9-14-17-unchecked-conversion}@anchor{235}
  @section RM 13.9(14-17): Unchecked Conversion
  
  
*************** Followed.
*** 14700,14706 ****
  @geindex implicit
  
  @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{235}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
--- 14745,14751 ----
  @geindex implicit
  
  @node RM 13 11 23-25 Implicit Heap Usage,RM 13 11 2 17 Unchecked Deallocation,RM 13 9 14-17 Unchecked Conversion,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-23-25-implicit-heap-usage}@anchor{236}
  @section RM 13.11(23-25): Implicit Heap Usage
  
  
*************** Followed.
*** 14751,14757 ****
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{236}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
--- 14796,14802 ----
  @geindex Unchecked deallocation
  
  @node RM 13 11 2 17 Unchecked Deallocation,RM 13 13 2 1 6 Stream Oriented Attributes,RM 13 11 23-25 Implicit Heap Usage,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-11-2-17-unchecked-deallocation}@anchor{237}
  @section RM 13.11.2(17): Unchecked Deallocation
  
  
*************** Followed.
*** 14766,14772 ****
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{237}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
--- 14811,14817 ----
  @geindex Stream oriented attributes
  
  @node RM 13 13 2 1 6 Stream Oriented Attributes,RM A 1 52 Names of Predefined Numeric Types,RM 13 11 2 17 Unchecked Deallocation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-13-13-2-1-6-stream-oriented-attributes}@anchor{238}
  @section RM 13.13.2(1.6): Stream Oriented Attributes
  
  
*************** scalar types. This XDR alternative can b
*** 14797,14803 ****
  @geindex Stream oriented attributes
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{238}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
--- 14842,14848 ----
  @geindex Stream oriented attributes
  
  @node RM A 1 52 Names of Predefined Numeric Types,RM A 3 2 49 Ada Characters Handling,RM 13 13 2 1 6 Stream Oriented Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-1-52-names-of-predefined-numeric-types}@anchor{239}
  @section RM A.1(52): Names of Predefined Numeric Types
  
  
*************** Followed.
*** 14815,14821 ****
  @geindex Ada.Characters.Handling
  
  @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{239}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
--- 14860,14866 ----
  @geindex Ada.Characters.Handling
  
  @node RM A 3 2 49 Ada Characters Handling,RM A 4 4 106 Bounded-Length String Handling,RM A 1 52 Names of Predefined Numeric Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-3-2-49-ada-characters-handling}@anchor{23a}
  @section RM A.3.2(49): @code{Ada.Characters.Handling}
  
  
*************** Followed.  GNAT provides no such localiz
*** 14832,14838 ****
  @geindex Bounded-length strings
  
  @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{23a}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
--- 14877,14883 ----
  @geindex Bounded-length strings
  
  @node RM A 4 4 106 Bounded-Length String Handling,RM A 5 2 46-47 Random Number Generation,RM A 3 2 49 Ada Characters Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-4-4-106-bounded-length-string-handling}@anchor{23b}
  @section RM A.4.4(106): Bounded-Length String Handling
  
  
*************** Followed.  No implicit pointers or dynam
*** 14847,14853 ****
  @geindex Random number generation
  
  @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{23b}
  @section RM A.5.2(46-47): Random Number Generation
  
  
--- 14892,14898 ----
  @geindex Random number generation
  
  @node RM A 5 2 46-47 Random Number Generation,RM A 10 7 23 Get_Immediate,RM A 4 4 106 Bounded-Length String Handling,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-5-2-46-47-random-number-generation}@anchor{23c}
  @section RM A.5.2(46-47): Random Number Generation
  
  
*************** condition here to hold true.
*** 14876,14882 ****
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23c}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
--- 14921,14927 ----
  @geindex Get_Immediate
  
  @node RM A 10 7 23 Get_Immediate,RM A 18 Containers,RM A 5 2 46-47 Random Number Generation,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-10-7-23-get-immediate}@anchor{23d}
  @section RM A.10.7(23): @code{Get_Immediate}
  
  
*************** this functionality.
*** 14900,14906 ****
  @geindex Containers
  
  @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{23d}
  @section RM A.18: @code{Containers}
  
  
--- 14945,14951 ----
  @geindex Containers
  
  @node RM A 18 Containers,RM B 1 39-41 Pragma Export,RM A 10 7 23 Get_Immediate,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-a-18-containers}@anchor{23e}
  @section RM A.18: @code{Containers}
  
  
*************** follow the implementation advice.
*** 14921,14927 ****
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23e}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
--- 14966,14972 ----
  @geindex Export
  
  @node RM B 1 39-41 Pragma Export,RM B 2 12-13 Package Interfaces,RM A 18 Containers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-1-39-41-pragma-export}@anchor{23f}
  @section RM B.1(39-41): Pragma @code{Export}
  
  
*************** packages.
*** 14954,14963 ****
  
  @quotation
  
! “For each supported convention @emph{L} other than @code{Intrinsic}, an
  implementation should support @code{Import} and @code{Export} pragmas
! for objects of @emph{L}-compatible types and for subprograms, and pragma
! @cite{Convention} for @emph{L}-eligible types and for subprograms,
  presuming the other language has corresponding features.  Pragma
  @code{Convention} need not be supported for scalar types.”
  @end quotation
--- 14999,15008 ----
  
  @quotation
  
! “For each supported convention `L' other than @code{Intrinsic}, an
  implementation should support @code{Import} and @code{Export} pragmas
! for objects of `L'-compatible types and for subprograms, and pragma
! @cite{Convention} for `L'-eligible types and for subprograms,
  presuming the other language has corresponding features.  Pragma
  @code{Convention} need not be supported for scalar types.”
  @end quotation
*************** Followed.
*** 14969,14975 ****
  @geindex Interfaces
  
  @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{23f}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
--- 15014,15020 ----
  @geindex Interfaces
  
  @node RM B 2 12-13 Package Interfaces,RM B 3 63-71 Interfacing with C,RM B 1 39-41 Pragma Export,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-2-12-13-package-interfaces}@anchor{240}
  @section RM B.2(12-13): Package @code{Interfaces}
  
  
*************** Followed.  GNAT provides all the package
*** 14999,15005 ****
  @geindex interfacing with
  
  @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{240}
  @section RM B.3(63-71): Interfacing with C
  
  
--- 15044,15050 ----
  @geindex interfacing with
  
  @node RM B 3 63-71 Interfacing with C,RM B 4 95-98 Interfacing with COBOL,RM B 2 12-13 Package Interfaces,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-3-63-71-interfacing-with-c}@anchor{241}
  @section RM B.3(63-71): Interfacing with C
  
  
*************** Followed.
*** 15087,15093 ****
  @geindex interfacing with
  
  @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{241}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
--- 15132,15138 ----
  @geindex interfacing with
  
  @node RM B 4 95-98 Interfacing with COBOL,RM B 5 22-26 Interfacing with Fortran,RM B 3 63-71 Interfacing with C,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-4-95-98-interfacing-with-cobol}@anchor{242}
  @section RM B.4(95-98): Interfacing with COBOL
  
  
*************** Followed.
*** 15128,15134 ****
  @geindex interfacing with
  
  @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{242}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
--- 15173,15179 ----
  @geindex interfacing with
  
  @node RM B 5 22-26 Interfacing with Fortran,RM C 1 3-5 Access to Machine Operations,RM B 4 95-98 Interfacing with COBOL,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-b-5-22-26-interfacing-with-fortran}@anchor{243}
  @section RM B.5(22-26): Interfacing with Fortran
  
  
*************** Followed.
*** 15179,15185 ****
  @geindex Machine operations
  
  @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{243}
  @section RM C.1(3-5): Access to Machine Operations
  
  
--- 15224,15230 ----
  @geindex Machine operations
  
  @node RM C 1 3-5 Access to Machine Operations,RM C 1 10-16 Access to Machine Operations,RM B 5 22-26 Interfacing with Fortran,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-3-5-access-to-machine-operations}@anchor{244}
  @section RM C.1(3-5): Access to Machine Operations
  
  
*************** object that is specified as exported.”
*** 15214,15220 ****
  Followed.
  
  @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{244}
  @section RM C.1(10-16): Access to Machine Operations
  
  
--- 15259,15265 ----
  Followed.
  
  @node RM C 1 10-16 Access to Machine Operations,RM C 3 28 Interrupt Support,RM C 1 3-5 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-1-10-16-access-to-machine-operations}@anchor{245}
  @section RM C.1(10-16): Access to Machine Operations
  
  
*************** Followed on any target supporting such o
*** 15275,15281 ****
  @geindex Interrupt support
  
  @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{245}
  @section RM C.3(28): Interrupt Support
  
  
--- 15320,15326 ----
  @geindex Interrupt support
  
  @node RM C 3 28 Interrupt Support,RM C 3 1 20-21 Protected Procedure Handlers,RM C 1 10-16 Access to Machine Operations,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-28-interrupt-support}@anchor{246}
  @section RM C.3(28): Interrupt Support
  
  
*************** of interrupt blocking.
*** 15293,15299 ****
  @geindex Protected procedure handlers
  
  @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{246}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
--- 15338,15344 ----
  @geindex Protected procedure handlers
  
  @node RM C 3 1 20-21 Protected Procedure Handlers,RM C 3 2 25 Package Interrupts,RM C 3 28 Interrupt Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-1-20-21-protected-procedure-handlers}@anchor{247}
  @section RM C.3.1(20-21): Protected Procedure Handlers
  
  
*************** Followed.  Compile time warnings are giv
*** 15319,15325 ****
  @geindex Interrupts
  
  @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{247}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
--- 15364,15370 ----
  @geindex Interrupts
  
  @node RM C 3 2 25 Package Interrupts,RM C 4 14 Pre-elaboration Requirements,RM C 3 1 20-21 Protected Procedure Handlers,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-3-2-25-package-interrupts}@anchor{248}
  @section RM C.3.2(25): Package @code{Interrupts}
  
  
*************** Followed.
*** 15337,15343 ****
  @geindex Pre-elaboration requirements
  
  @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{248}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
--- 15382,15388 ----
  @geindex Pre-elaboration requirements
  
  @node RM C 4 14 Pre-elaboration Requirements,RM C 5 8 Pragma Discard_Names,RM C 3 2 25 Package Interrupts,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-4-14-pre-elaboration-requirements}@anchor{249}
  @section RM C.4(14): Pre-elaboration Requirements
  
  
*************** Followed.  Executable code is generated
*** 15353,15359 ****
  to initialize large arrays.
  
  @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{249}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
--- 15398,15404 ----
  to initialize large arrays.
  
  @node RM C 5 8 Pragma Discard_Names,RM C 7 2 30 The Package Task_Attributes,RM C 4 14 Pre-elaboration Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-5-8-pragma-discard-names}@anchor{24a}
  @section RM C.5(8): Pragma @code{Discard_Names}
  
  
*************** Followed.
*** 15371,15377 ****
  @geindex Task_Attributes
  
  @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{24a}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
--- 15416,15422 ----
  @geindex Task_Attributes
  
  @node RM C 7 2 30 The Package Task_Attributes,RM D 3 17 Locking Policies,RM C 5 8 Pragma Discard_Names,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-c-7-2-30-the-package-task-attributes}@anchor{24b}
  @section RM C.7.2(30): The Package Task_Attributes
  
  
*************** Not followed.  This implementation is no
*** 15392,15398 ****
  @geindex Locking Policies
  
  @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{24b}
  @section RM D.3(17): Locking Policies
  
  
--- 15437,15443 ----
  @geindex Locking Policies
  
  @node RM D 3 17 Locking Policies,RM D 4 16 Entry Queuing Policies,RM C 7 2 30 The Package Task_Attributes,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-3-17-locking-policies}@anchor{24c}
  @section RM D.3(17): Locking Policies
  
  
*************** whose names (@code{Inheritance_Locking}
*** 15409,15415 ****
  @geindex Entry queuing policies
  
  @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{24c}
  @section RM D.4(16): Entry Queuing Policies
  
  
--- 15454,15460 ----
  @geindex Entry queuing policies
  
  @node RM D 4 16 Entry Queuing Policies,RM D 6 9-10 Preemptive Abort,RM D 3 17 Locking Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-4-16-entry-queuing-policies}@anchor{24d}
  @section RM D.4(16): Entry Queuing Policies
  
  
*************** Followed.  No such implementation-define
*** 15424,15439 ****
  @geindex Preemptive abort
  
  @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{24d}
  @section RM D.6(9-10): Preemptive Abort
  
  
  @quotation
  
! “Even though the @emph{abort_statement} is included in the list of
  potentially blocking operations (see 9.5.1), it is recommended that this
  statement be implemented in a way that never requires the task executing
! the @emph{abort_statement} to block.”
  @end quotation
  
  Followed.
--- 15469,15484 ----
  @geindex Preemptive abort
  
  @node RM D 6 9-10 Preemptive Abort,RM D 7 21 Tasking Restrictions,RM D 4 16 Entry Queuing Policies,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-6-9-10-preemptive-abort}@anchor{24e}
  @section RM D.6(9-10): Preemptive Abort
  
  
  @quotation
  
! “Even though the `abort_statement' is included in the list of
  potentially blocking operations (see 9.5.1), it is recommended that this
  statement be implemented in a way that never requires the task executing
! the `abort_statement' to block.”
  @end quotation
  
  Followed.
*************** Followed.
*** 15450,15456 ****
  @geindex Tasking restrictions
  
  @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{24e}
  @section RM D.7(21): Tasking Restrictions
  
  
--- 15495,15501 ----
  @geindex Tasking restrictions
  
  @node RM D 7 21 Tasking Restrictions,RM D 8 47-49 Monotonic Time,RM D 6 9-10 Preemptive Abort,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-7-21-tasking-restrictions}@anchor{24f}
  @section RM D.7(21): Tasking Restrictions
  
  
*************** pragma @code{Profile (Restricted)} for m
*** 15469,15475 ****
  @geindex monotonic
  
  @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{24f}
  @section RM D.8(47-49): Monotonic Time
  
  
--- 15514,15520 ----
  @geindex monotonic
  
  @node RM D 8 47-49 Monotonic Time,RM E 5 28-29 Partition Communication Subsystem,RM D 7 21 Tasking Restrictions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-d-8-47-49-monotonic-time}@anchor{250}
  @section RM D.8(47-49): Monotonic Time
  
  
*************** Followed.
*** 15504,15510 ****
  @geindex PCS
  
  @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{250}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
--- 15549,15555 ----
  @geindex PCS
  
  @node RM E 5 28-29 Partition Communication Subsystem,RM F 7 COBOL Support,RM D 8 47-49 Monotonic Time,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-e-5-28-29-partition-communication-subsystem}@anchor{251}
  @section RM E.5(28-29): Partition Communication Subsystem
  
  
*************** GNAT.
*** 15532,15538 ****
  @geindex COBOL support
  
  @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{251}
  @section RM F(7): COBOL Support
  
  
--- 15577,15583 ----
  @geindex COBOL support
  
  @node RM F 7 COBOL Support,RM F 1 2 Decimal Radix Support,RM E 5 28-29 Partition Communication Subsystem,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-7-cobol-support}@anchor{252}
  @section RM F(7): COBOL Support
  
  
*************** Followed.
*** 15552,15558 ****
  @geindex Decimal radix support
  
  @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{252}
  @section RM F.1(2): Decimal Radix Support
  
  
--- 15597,15603 ----
  @geindex Decimal radix support
  
  @node RM F 1 2 Decimal Radix Support,RM G Numerics,RM F 7 COBOL Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-f-1-2-decimal-radix-support}@anchor{253}
  @section RM F.1(2): Decimal Radix Support
  
  
*************** representations.
*** 15568,15574 ****
  @geindex Numerics
  
  @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{253}
  @section RM G: Numerics
  
  
--- 15613,15619 ----
  @geindex Numerics
  
  @node RM G Numerics,RM G 1 1 56-58 Complex Types,RM F 1 2 Decimal Radix Support,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-numerics}@anchor{254}
  @section RM G: Numerics
  
  
*************** Followed.
*** 15588,15594 ****
  @geindex Complex types
  
  @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{254}
  @section RM G.1.1(56-58): Complex Types
  
  
--- 15633,15639 ----
  @geindex Complex types
  
  @node RM G 1 1 56-58 Complex Types,RM G 1 2 49 Complex Elementary Functions,RM G Numerics,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-1-56-58-complex-types}@anchor{255}
  @section RM G.1.1(56-58): Complex Types
  
  
*************** Followed.
*** 15650,15656 ****
  @geindex Complex elementary functions
  
  @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{255}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
--- 15695,15701 ----
  @geindex Complex elementary functions
  
  @node RM G 1 2 49 Complex Elementary Functions,RM G 2 4 19 Accuracy Requirements,RM G 1 1 56-58 Complex Types,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-1-2-49-complex-elementary-functions}@anchor{256}
  @section RM G.1.2(49): Complex Elementary Functions
  
  
*************** Followed.
*** 15672,15678 ****
  @geindex Accuracy requirements
  
  @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{256}
  @section RM G.2.4(19): Accuracy Requirements
  
  
--- 15717,15723 ----
  @geindex Accuracy requirements
  
  @node RM G 2 4 19 Accuracy Requirements,RM G 2 6 15 Complex Arithmetic Accuracy,RM G 1 2 49 Complex Elementary Functions,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-4-19-accuracy-requirements}@anchor{257}
  @section RM G.2.4(19): Accuracy Requirements
  
  
*************** Followed.
*** 15696,15702 ****
  @geindex complex arithmetic
  
  @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{257}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
--- 15741,15747 ----
  @geindex complex arithmetic
  
  @node RM G 2 6 15 Complex Arithmetic Accuracy,RM H 6 15/2 Pragma Partition_Elaboration_Policy,RM G 2 4 19 Accuracy Requirements,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-g-2-6-15-complex-arithmetic-accuracy}@anchor{258}
  @section RM G.2.6(15): Complex Arithmetic Accuracy
  
  
*************** Followed.
*** 15714,15720 ****
  @geindex Sequential elaboration policy
  
  @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{258}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
--- 15759,15765 ----
  @geindex Sequential elaboration policy
  
  @node RM H 6 15/2 Pragma Partition_Elaboration_Policy,,RM G 2 6 15 Complex Arithmetic Accuracy,Implementation Advice
! @anchor{gnat_rm/implementation_advice rm-h-6-15-2-pragma-partition-elaboration-policy}@anchor{259}
  @section RM H.6(15/2): Pragma Partition_Elaboration_Policy
  
  
*************** immediately terminated.”
*** 15729,15735 ****
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{259}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{25a}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}
  @chapter Implementation Defined Characteristics
  
  
--- 15774,15780 ----
  Not followed.
  
  @node Implementation Defined Characteristics,Intrinsic Subprograms,Implementation Advice,Top
! @anchor{gnat_rm/implementation_defined_characteristics doc}@anchor{25a}@anchor{gnat_rm/implementation_defined_characteristics id1}@anchor{25b}@anchor{gnat_rm/implementation_defined_characteristics implementation-defined-characteristics}@anchor{b}
  @chapter Implementation Defined Characteristics
  
  
*************** There are no variations from the standar
*** 15789,15795 ****
  interactions.  See 1.1.3(10).”
  @end itemize
  
! Any @emph{code_statement} can potentially cause external interactions.
  
  
  @itemize *
--- 15834,15840 ----
  interactions.  See 1.1.3(10).”
  @end itemize
  
! Any `code_statement' can potentially cause external interactions.
  
  
  @itemize *
*************** See separate section on source represent
*** 15805,15817 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The semantics of an Ada program whose text is not in
! 
  Normalization Form C.  See 2.1(4).”
- @end table
  @end itemize
  
  See separate section on source representation.
--- 15850,15857 ----
  @itemize *
  
  @item 
! “The semantics of an Ada program whose text is not in
  Normalization Form C.  See 2.1(4).”
  @end itemize
  
  See separate section on source representation.
*************** length.  See 2.2(15).”
*** 15835,15842 ****
  
  The maximum line length is 255 characters and the maximum length of
  a lexical element is also 255 characters. This is the default setting
! if not overridden by the use of compiler switch @emph{-gnaty} (which
! sets the maximum to 79) or @emph{-gnatyMnn} which allows the maximum
  line length to be specified to be any value up to 32767. The maximum
  length of a lexical element is the same as the maximum line length.
  
--- 15875,15882 ----
  
  The maximum line length is 255 characters and the maximum length of
  a lexical element is also 255 characters. This is the default setting
! if not overridden by the use of compiler switch `-gnaty' (which
! sets the maximum to 79) or `-gnatyMnn' which allows the maximum
  line length to be specified to be any value up to 32767. The maximum
  length of a lexical element is the same as the maximum line length.
  
*************** Representation
*** 15894,15900 ****
  
  @item
  
! @emph{Short_Short_Integer}
  
  @tab
  
--- 15934,15940 ----
  
  @item
  
! `Short_Short_Integer'
  
  @tab
  
*************** Representation
*** 15902,15908 ****
  
  @item
  
! @emph{Short_Integer}
  
  @tab
  
--- 15942,15948 ----
  
  @item
  
! `Short_Integer'
  
  @tab
  
*************** Representation
*** 15910,15916 ****
  
  @item
  
! @emph{Integer}
  
  @tab
  
--- 15950,15956 ----
  
  @item
  
! `Integer'
  
  @tab
  
*************** Representation
*** 15918,15924 ****
  
  @item
  
! @emph{Long_Integer}
  
  @tab
  
--- 15958,15964 ----
  
  @item
  
! `Long_Integer'
  
  @tab
  
*************** depending on the C definition of long)
*** 15928,15934 ****
  
  @item
  
! @emph{Long_Long_Integer}
  
  @tab
  
--- 15968,15974 ----
  
  @item
  
! `Long_Long_Integer'
  
  @tab
  
*************** depending on the C definition of long)
*** 15936,15942 ****
  
  @item
  
! @emph{Long_Long_Long_Integer}
  
  @tab
  
--- 15976,15982 ----
  
  @item
  
! `Long_Long_Long_Integer'
  
  @tab
  
*************** Representation
*** 15997,16003 ****
  
  @item
  
! @emph{Short_Float}
  
  @tab
  
--- 16037,16043 ----
  
  @item
  
! `Short_Float'
  
  @tab
  
*************** IEEE Binary32 (Single)
*** 16005,16011 ****
  
  @item
  
! @emph{Float}
  
  @tab
  
--- 16045,16051 ----
  
  @item
  
! `Float'
  
  @tab
  
*************** IEEE Binary32 (Single)
*** 16013,16019 ****
  
  @item
  
! @emph{Long_Float}
  
  @tab
  
--- 16053,16059 ----
  
  @item
  
! `Long_Float'
  
  @tab
  
*************** IEEE Binary64 (Double)
*** 16021,16027 ****
  
  @item
  
! @emph{Long_Long_Float}
  
  @tab
  
--- 16061,16067 ----
  
  @item
  
! `Long_Long_Float'
  
  @tab
  
*************** small must lie in 1.0E-38 .. 1.0E+38 and
*** 16082,16091 ****
  
  @item 
  “The result of @code{Tags.Expanded_Name} for types declared
! within an unnamed @emph{block_statement}.  See 3.9(10).”
  @end itemize
  
! Block numbers of the form @code{B@emph{nnn}}, where @emph{nnn} is a
  decimal integer are allocated.
  
  
--- 16122,16131 ----
  
  @item 
  “The result of @code{Tags.Expanded_Name} for types declared
! within an unnamed `block_statement'.  See 3.9(10).”
  @end itemize
  
! Block numbers of the form @code{B@var{nnn}}, where `nnn' is a
  decimal integer are allocated.
  
  
*************** Round to even is used in all such cases.
*** 16145,16157 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The maximum number of chunks for a parallel generalized iterator without
! 
  a chunk_specification.  See 5.5.2(10).”
- @end table
  @end itemize
  
  Feature unimplemented.
--- 16185,16192 ----
  @itemize *
  
  @item 
! “The maximum number of chunks for a parallel generalized iterator without
  a chunk_specification.  See 5.5.2(10).”
  @end itemize
  
  Feature unimplemented.
*************** Difficult to characterize.
*** 16191,16197 ****
  “Any extensions of the Default_Initial_Condition aspect.  See 7.3.3(11).”
  @end itemize
  
! SPARK allows specifying @emph{null} as the Default_Initial_Condition
  aspect of a type. See the SPARK reference manual for further details.
  
  
--- 16226,16232 ----
  “Any extensions of the Default_Initial_Condition aspect.  See 7.3.3(11).”
  @end itemize
  
! SPARK allows specifying `null' as the Default_Initial_Condition
  aspect of a type. See the SPARK reference manual for further details.
  
  
*************** setting for local time, as accessed by t
*** 16239,16246 ****
  @itemize *
  
  @item 
! “Any limit on @emph{delay_until_statements} of
! @emph{select_statements}.  See 9.6(29).”
  @end itemize
  
  There are no such limits.
--- 16274,16281 ----
  @itemize *
  
  @item 
! “Any limit on `delay_until_statements' of
! `select_statements'.  See 9.6(29).”
  @end itemize
  
  There are no such limits.
*************** There are no such limits.
*** 16249,16261 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The result of Calendar.Formatting.Image if its argument represents more
! 
  than 100 hours.  See 9.6.1(86).”
- @end table
  @end itemize
  
  Calendar.Time_Error is raised.
--- 16284,16291 ----
  @itemize *
  
  @item 
! “The result of Calendar.Formatting.Image if its argument represents more
  than 100 hours.  See 9.6.1(86).”
  @end itemize
  
  Calendar.Time_Error is raised.
*************** There are no implementation-defined conf
*** 16277,16283 ****
  @end itemize
  
  A compilation is represented by a sequence of files presented to the
! compiler in a single invocation of the @emph{gcc} command.
  
  
  @itemize *
--- 16307,16313 ----
  @end itemize
  
  A compilation is represented by a sequence of files presented to the
! compiler in a single invocation of the `gcc' command.
  
  
  @itemize *
*************** mentioned in the context clause of one o
*** 16321,16331 ****
  
  If the partition contains no main program, or if the main program is in
  a language other than Ada, then GNAT
! provides the binder options @emph{-z} and @emph{-n} respectively, and in
  this case a list of units can be explicitly supplied to the binder for
  inclusion in the partition (all units needed by these units will also
  be included automatically).  For full details on the use of these
! options, refer to @emph{GNAT Make Program gnatmake} in the
  @cite{GNAT User’s Guide}.
  
  
--- 16351,16361 ----
  
  If the partition contains no main program, or if the main program is in
  a language other than Ada, then GNAT
! provides the binder options `-z' and `-n' respectively, and in
  this case a list of units can be explicitly supplied to the binder for
  inclusion in the partition (all units needed by these units will also
  be included automatically).  For full details on the use of these
! options, refer to `GNAT Make Program gnatmake' in the
  @cite{GNAT User’s Guide}.
  
  
*************** corresponding @code{ALI} file as the inp
*** 16356,16362 ****
  @itemize *
  
  @item 
! “The order of elaboration of @emph{library_items}.  See 10.2(18).”
  @end itemize
  
  The first constraint on ordering is that it meets the requirements of
--- 16386,16392 ----
  @itemize *
  
  @item 
! “The order of elaboration of `library_items'.  See 10.2(18).”
  @end itemize
  
  The first constraint on ordering is that it meets the requirements of
*************** been passed by the program.
*** 16428,16438 ****
  
  @item 
  “The result of @code{Exceptions.Exception_Name} for types
! declared within an unnamed @emph{block_statement}.  See 11.4.1(12).”
  @end itemize
  
! Blocks have implementation defined names of the form @code{B@emph{nnn}}
! where @emph{nnn} is an integer.
  
  
  @itemize *
--- 16458,16468 ----
  
  @item 
  “The result of @code{Exceptions.Exception_Name} for types
! declared within an unnamed `block_statement'.  See 11.4.1(12).”
  @end itemize
  
! Blocks have implementation defined names of the form @code{B@var{nnn}}
! where `nnn' is an integer.
  
  
  @itemize *
*************** Unsuppress match those for the second ar
*** 16560,16572 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The cases that cause conflicts between the representation of the
! 
  ancestors of a type_declaration.  See 13.1(13.1).”
- @end table
  @end itemize
  
  No such cases exist.
--- 16590,16597 ----
  @itemize *
  
  @item 
! “The cases that cause conflicts between the representation of the
  ancestors of a type_declaration.  See 13.1(13.1).”
  @end itemize
  
  No such cases exist.
*************** See separate section on data representat
*** 16598,16604 ****
  such aspects and the legality rules for such aspects.  See 13.1.1(38).”
  @end itemize
  
! See @ref{11f,,Implementation Defined Aspects}.
  
  
  @itemize *
--- 16623,16629 ----
  such aspects and the legality rules for such aspects.  See 13.1.1(38).”
  @end itemize
  
! See @ref{120,,Implementation Defined Aspects}.
  
  
  @itemize *
*************** See the definition of package System.Sto
*** 16703,16709 ****
  
  @item 
  “The contents of the visible part of package @code{System.Machine_Code},
! and the meaning of @emph{code_statements}.  See 13.8(7).”
  @end itemize
  
  See the definition and documentation in file @code{s-maccod.ads}.
--- 16728,16734 ----
  
  @item 
  “The contents of the visible part of package @code{System.Machine_Code},
! and the meaning of `code_statements'.  See 13.8(7).”
  @end itemize
  
  See the definition and documentation in file @code{s-maccod.ads}.
*************** of the state vector.
*** 16937,16943 ****
  Annex is not supported.  See A.5.3(72).”
  @end itemize
  
! Running the compiler with @emph{-gnatS} to produce a listing of package
  @code{Standard} displays the values of these attributes.
  
  
--- 16962,16968 ----
  Annex is not supported.  See A.5.3(72).”
  @end itemize
  
! Running the compiler with `-gnatS' to produce a listing of package
  @code{Standard} displays the values of these attributes.
  
  
*************** Directories.File_Size’Last is equal to
*** 17016,17028 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The result for Directories.Size for a directory or special file.
! 
  See A.16(93).”
- @end table
  @end itemize
  
  Name_Error is raised.
--- 17041,17048 ----
  @itemize *
  
  @item 
! “The result for Directories.Size for a directory or special file.
  See A.16(93).”
  @end itemize
  
  Name_Error is raised.
*************** Name_Error is raised.
*** 17031,17043 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The result for Directories.Modification_Time for a directory or special file.
! 
  See A.16(93).”
- @end table
  @end itemize
  
  Name_Error is raised.
--- 17051,17058 ----
  @itemize *
  
  @item 
! “The result for Directories.Modification_Time for a directory or special file.
  See A.16(93).”
  @end itemize
  
  Name_Error is raised.
*************** Name_Error is raised.
*** 17046,17077 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The interpretation of a nonnull search pattern in Directories.
! 
  See A.16(104).”
- @end table
  @end itemize
  
  When the @code{Pattern} parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{25b,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The results of a Directories search if the contents of the directory are
! 
  altered while a search is in progress.  See A.16(110).”
- @end table
  @end itemize
  
  The effect of a call to Get_Next_Entry is determined by the current
--- 17061,17082 ----
  @itemize *
  
  @item 
! “The interpretation of a nonnull search pattern in Directories.
  See A.16(104).”
  @end itemize
  
  When the @code{Pattern} parameter is not the null string, it is interpreted
  according to the syntax of regular expressions as defined in the
  @code{GNAT.Regexp} package.
  
! See @ref{25c,,GNAT.Regexp (g-regexp.ads)}.
  
  
  @itemize *
  
  @item 
! “The results of a Directories search if the contents of the directory are
  altered while a search is in progress.  See A.16(110).”
  @end itemize
  
  The effect of a call to Get_Next_Entry is determined by the current
*************** Interpretation
*** 17133,17139 ****
  
  @item
  
! @emph{Ada}
  
  @tab
  
--- 17138,17144 ----
  
  @item
  
! `Ada'
  
  @tab
  
*************** Ada
*** 17141,17147 ****
  
  @item
  
! @emph{Ada_Pass_By_Copy}
  
  @tab
  
--- 17146,17152 ----
  
  @item
  
! `Ada_Pass_By_Copy'
  
  @tab
  
*************** with this convention to be passed by cop
*** 17151,17157 ****
  
  @item
  
! @emph{Ada_Pass_By_Reference}
  
  @tab
  
--- 17156,17162 ----
  
  @item
  
! `Ada_Pass_By_Reference'
  
  @tab
  
*************** with this convention to be passed by ref
*** 17161,17167 ****
  
  @item
  
! @emph{Assembler}
  
  @tab
  
--- 17166,17172 ----
  
  @item
  
! `Assembler'
  
  @tab
  
*************** Assembly language
*** 17169,17175 ****
  
  @item
  
! @emph{Asm}
  
  @tab
  
--- 17174,17180 ----
  
  @item
  
! `Asm'
  
  @tab
  
*************** Synonym for Assembler
*** 17177,17183 ****
  
  @item
  
! @emph{Assembly}
  
  @tab
  
--- 17182,17188 ----
  
  @item
  
! `Assembly'
  
  @tab
  
*************** Synonym for Assembler
*** 17185,17191 ****
  
  @item
  
! @emph{C}
  
  @tab
  
--- 17190,17196 ----
  
  @item
  
! `C'
  
  @tab
  
*************** C
*** 17193,17199 ****
  
  @item
  
! @emph{C_Pass_By_Copy}
  
  @tab
  
--- 17198,17204 ----
  
  @item
  
! `C_Pass_By_Copy'
  
  @tab
  
*************** is to be passed by copy rather than refe
*** 17202,17208 ****
  
  @item
  
! @emph{COBOL}
  
  @tab
  
--- 17207,17213 ----
  
  @item
  
! `COBOL'
  
  @tab
  
*************** COBOL
*** 17210,17216 ****
  
  @item
  
! @emph{C_Plus_Plus (or CPP)}
  
  @tab
  
--- 17215,17221 ----
  
  @item
  
! `C_Plus_Plus (or CPP)'
  
  @tab
  
*************** C++
*** 17218,17224 ****
  
  @item
  
! @emph{Default}
  
  @tab
  
--- 17223,17229 ----
  
  @item
  
! `Default'
  
  @tab
  
*************** Treated the same as C
*** 17226,17232 ****
  
  @item
  
! @emph{External}
  
  @tab
  
--- 17231,17237 ----
  
  @item
  
! `External'
  
  @tab
  
*************** Treated the same as C
*** 17234,17240 ****
  
  @item
  
! @emph{Fortran}
  
  @tab
  
--- 17239,17245 ----
  
  @item
  
! `Fortran'
  
  @tab
  
*************** Fortran
*** 17242,17248 ****
  
  @item
  
! @emph{Intrinsic}
  
  @tab
  
--- 17247,17253 ----
  
  @item
  
! `Intrinsic'
  
  @tab
  
*************** separate section on Intrinsic Subprogram
*** 17251,17257 ****
  
  @item
  
! @emph{Stdcall}
  
  @tab
  
--- 17256,17262 ----
  
  @item
  
! `Stdcall'
  
  @tab
  
*************** exit. This pragma cannot be applied to a
*** 17262,17268 ****
  
  @item
  
! @emph{DLL}
  
  @tab
  
--- 17267,17273 ----
  
  @item
  
! `DLL'
  
  @tab
  
*************** Synonym for Stdcall
*** 17270,17276 ****
  
  @item
  
! @emph{Win32}
  
  @tab
  
--- 17275,17281 ----
  
  @item
  
! `Win32'
  
  @tab
  
*************** Synonym for Stdcall
*** 17278,17284 ****
  
  @item
  
! @emph{Stubbed}
  
  @tab
  
--- 17283,17289 ----
  
  @item
  
! `Stubbed'
  
  @tab
  
*************** Ada
*** 17391,17397 ****
  
  @item
  
! @emph{Floating}
  
  @tab
  
--- 17396,17402 ----
  
  @item
  
! `Floating'
  
  @tab
  
*************** Float
*** 17399,17405 ****
  
  @item
  
! @emph{Long_Floating}
  
  @tab
  
--- 17404,17410 ----
  
  @item
  
! `Long_Floating'
  
  @tab
  
*************** Float
*** 17407,17413 ****
  
  @item
  
! @emph{Binary}
  
  @tab
  
--- 17412,17418 ----
  
  @item
  
! `Binary'
  
  @tab
  
*************** Integer
*** 17415,17421 ****
  
  @item
  
! @emph{Long_Binary}
  
  @tab
  
--- 17420,17426 ----
  
  @item
  
! `Long_Binary'
  
  @tab
  
*************** Long_Long_Integer
*** 17423,17429 ****
  
  @item
  
! @emph{Decimal_Element}
  
  @tab
  
--- 17428,17434 ----
  
  @item
  
! `Decimal_Element'
  
  @tab
  
*************** Character
*** 17431,17437 ****
  
  @item
  
! @emph{COBOL_Character}
  
  @tab
  
--- 17436,17442 ----
  
  @item
  
! `COBOL_Character'
  
  @tab
  
*************** There are no such forms.
*** 17486,17498 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The semantics of some attributes and functions of an entity for which
! 
  aspect Discard_Names is True.  See C.5(7).”
- @end table
  @end itemize
  
  If Discard_Names is True for an enumeration type, the Image attribute
--- 17491,17498 ----
  @itemize *
  
  @item 
! “The semantics of some attributes and functions of an entity for which
  aspect Discard_Names is True.  See C.5(7).”
  @end itemize
  
  If Discard_Names is True for an enumeration type, the Image attribute
*************** attribute.  See C.7.1(7).”
*** 17533,17544 ****
  
  The result of this attribute is a string that identifies
  the object or component that denotes a given task. If a variable @code{Var}
! has a task type, the image for this task will have the form @code{Var_@emph{XXXXXXXX}},
! where the suffix @emph{XXXXXXXX}
  is the hexadecimal representation of the virtual address of the corresponding
  task control block. If the variable is an array of tasks, the image of each
  task will have the form of an indexed component indicating the position of a
! given task in the array, e.g., @code{Group(5)_@emph{XXXXXXX}}. If the task is a
  component of a record, the image of the task will have the form of a selected
  component. These rules are fully recursive, so that the image of a task that
  is a subcomponent of a composite object corresponds to the expression that
--- 17533,17544 ----
  
  The result of this attribute is a string that identifies
  the object or component that denotes a given task. If a variable @code{Var}
! has a task type, the image for this task will have the form @code{Var_@var{XXXXXXXX}},
! where the suffix `XXXXXXXX'
  is the hexadecimal representation of the virtual address of the corresponding
  task control block. If the variable is an array of tasks, the image of each
  task will have the form of an indexed component indicating the position of a
! given task in the array, e.g., @code{Group(5)_@var{XXXXXXX}}. If the task is a
  component of a record, the image of the task will have the form of a selected
  component. These rules are fully recursive, so that the image of a task that
  is a subcomponent of a composite object corresponds to the expression that
*************** The value is 10 milliseconds.
*** 17641,17647 ****
  @itemize *
  
  @item 
! “Implementation-defined @emph{policy_identifiers} allowed
  in a pragma @code{Locking_Policy}.  See D.3(4).”
  @end itemize
  
--- 17641,17647 ----
  @itemize *
  
  @item 
! “Implementation-defined `policy_identifiers' allowed
  in a pragma @code{Locking_Policy}.  See D.3(4).”
  @end itemize
  
*************** Unknown.
*** 17721,17733 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “When restriction No_Task_Termination applies to a partition, what happens
! 
  when a task terminates.  See D.7(15.1).”
- @end table
  @end itemize
  
  Execution is erroneous in that case.
--- 17721,17728 ----
  @itemize *
  
  @item 
! “When restriction No_Task_Termination applies to a partition, what happens
  when a task terminates.  See D.7(15.1).”
  @end itemize
  
  Execution is erroneous in that case.
*************** Execution is erroneous in that case.
*** 17736,17748 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The behavior when restriction Max_Storage_At_Blocking is violated.
! 
  See D.7(17).”
- @end table
  @end itemize
  
  Execution is erroneous in that case.
--- 17731,17738 ----
  @itemize *
  
  @item 
! “The behavior when restriction Max_Storage_At_Blocking is violated.
  See D.7(17).”
  @end itemize
  
  Execution is erroneous in that case.
*************** Execution is erroneous in that case.
*** 17770,17785 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “Whether the use of pragma Restrictions results in a reduction in program
! 
  code or data size or execution time.  See D.7(20).”
  
  Yes it can, but the precise circumstances and properties of such reductions
  are difficult to characterize.
- @end table
  
  @item 
  “The value of Barrier_Limit’Last in Synchronous_Barriers.  See D.10.1(4).”
--- 17760,17770 ----
  @itemize *
  
  @item 
! “Whether the use of pragma Restrictions results in a reduction in program
  code or data size or execution time.  See D.7(20).”
  
  Yes it can, but the precise circumstances and properties of such reductions
  are difficult to characterize.
  
  @item 
  “The value of Barrier_Limit’Last in Synchronous_Barriers.  See D.10.1(4).”
*************** Difficult to characterize.
*** 17801,17813 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The value of Min_Handler_Ceiling in Execution_Time.Group_Budgets.
! 
  See D.14.2(7).”
- @end table
  @end itemize
  
  See source file @code{a-etgrbu.ads}.
--- 17786,17793 ----
  @itemize *
  
  @item 
! “The value of Min_Handler_Ceiling in Execution_Time.Group_Budgets.
  See D.14.2(7).”
  @end itemize
  
  See source file @code{a-etgrbu.ads}.
*************** a distributed application.
*** 17881,17887 ****
  “The range of type System.RPC.Partition_Id.  See E.5(14).”
  @end itemize
  
! System.RPC.Partion_ID’Last is Integer’Last. See source file @code{s-rpc.ads}.
  
  
  @itemize *
--- 17861,17867 ----
  “The range of type System.RPC.Partition_Id.  See E.5(14).”
  @end itemize
  
! System.RPC.Partition_ID’Last is Integer’Last. See source file @code{s-rpc.ads}.
  
  
  @itemize *
*************** Value
*** 17913,17919 ****
  
  @item
  
! @emph{Max_Scale}
  
  @tab
  
--- 17893,17899 ----
  
  @item
  
! `Max_Scale'
  
  @tab
  
*************** Value
*** 17921,17927 ****
  
  @item
  
! @emph{Min_Scale}
  
  @tab
  
--- 17901,17907 ----
  
  @item
  
! `Min_Scale'
  
  @tab
  
*************** Value
*** 17929,17935 ****
  
  @item
  
! @emph{Min_Delta}
  
  @tab
  
--- 17909,17915 ----
  
  @item
  
! `Min_Delta'
  
  @tab
  
*************** Value
*** 17937,17943 ****
  
  @item
  
! @emph{Max_Delta}
  
  @tab
  
--- 17917,17923 ----
  
  @item
  
! `Max_Delta'
  
  @tab
  
*************** Value
*** 17945,17951 ****
  
  @item
  
! @emph{Max_Decimal_Digits}
  
  @tab
  
--- 17925,17931 ----
  
  @item
  
! `Max_Decimal_Digits'
  
  @tab
  
*************** Value
*** 17960,17982 ****
  @item 
  “The value of @code{Max_Picture_Length} in the package
  @code{Text_IO.Editing}.  See F.3.3(16).”
- @end itemize
  
  64
  
- 
- @itemize *
- 
  @item 
  “The value of @code{Max_Picture_Length} in the package
  @code{Wide_Text_IO.Editing}.  See F.3.4(5).”
- @end itemize
  
  64
  
- 
- @itemize *
- 
  @item 
  “The accuracy actually achieved by the complex elementary
  functions and by other complex arithmetic operations.  See G.1(1).”
--- 17940,17954 ----
*************** result type is @code{False}.  See G.2.1(
*** 18045,18051 ****
  Infinite and NaN values are produced as dictated by the IEEE
  floating-point standard.
  Note that on machines that are not fully compliant with the IEEE
! floating-point standard, such as Alpha, the @emph{-mieee} compiler flag
  must be used for achieving IEEE conforming behavior (although at the cost
  of a significant performance penalty), so infinite and NaN values are
  properly generated.
--- 18017,18023 ----
  Infinite and NaN values are produced as dictated by the IEEE
  floating-point standard.
  Note that on machines that are not fully compliant with the IEEE
! floating-point standard, such as Alpha, the `-mieee' compiler flag
  must be used for achieving IEEE conforming behavior (although at the cost
  of a significant performance penalty), so infinite and NaN values are
  properly generated.
*************** is converted to the target type.
*** 18078,18084 ****
  @itemize *
  
  @item 
! “Conditions on a @emph{universal_real} operand of a fixed
  point multiplication or division for which the result shall be in the
  perfect result set.  See G.2.3(22).”
  @end itemize
--- 18050,18056 ----
  @itemize *
  
  @item 
! “Conditions on a `universal_real' operand of a fixed
  point multiplication or division for which the result shall be in the
  perfect result set.  See G.2.3(22).”
  @end itemize
*************** Information on those subjects is not yet
*** 18159,18172 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The accuracy requirements for the subprograms Solve, Inverse,
! 
  Determinant, Eigenvalues and Eigensystem for type Real_Matrix.
  See G.3.1(81).”
- @end table
  @end itemize
  
  Information on those subjects is not yet available.
--- 18131,18139 ----
  @itemize *
  
  @item 
! “The accuracy requirements for the subprograms Solve, Inverse,
  Determinant, Eigenvalues and Eigensystem for type Real_Matrix.
  See G.3.1(81).”
  @end itemize
  
  Information on those subjects is not yet available.
*************** Information on those subjects is not yet
*** 18175,18188 ****
  @itemize *
  
  @item 
! 
! @table @asis
! 
! @item “The accuracy requirements for the subprograms Solve, Inverse,
! 
  Determinant, Eigenvalues and Eigensystem for type Complex_Matrix.
  See G.3.2(149).”
- @end table
  @end itemize
  
  Information on those subjects is not yet available.
--- 18142,18150 ----
  @itemize *
  
  @item 
! “The accuracy requirements for the subprograms Solve, Inverse,
  Determinant, Eigenvalues and Eigensystem for type Complex_Matrix.
  See G.3.2(149).”
  @end itemize
  
  Information on those subjects is not yet available.
*************** Information on those subjects is not yet
*** 18197,18203 ****
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25c}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25d}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}
  @chapter Intrinsic Subprograms
  
  
--- 18159,18165 ----
  Execution is erroneous in that case.
  
  @node Intrinsic Subprograms,Representation Clauses and Pragmas,Implementation Defined Characteristics,Top
! @anchor{gnat_rm/intrinsic_subprograms doc}@anchor{25d}@anchor{gnat_rm/intrinsic_subprograms id1}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms intrinsic-subprograms}@anchor{c}
  @chapter Intrinsic Subprograms
  
  
*************** Ada standard does not require Ada compil
*** 18235,18241 ****
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25e}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{25f}
  @section Intrinsic Operators
  
  
--- 18197,18203 ----
  @end menu
  
  @node Intrinsic Operators,Compilation_ISO_Date,,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id2}@anchor{25f}@anchor{gnat_rm/intrinsic_subprograms intrinsic-operators}@anchor{260}
  @section Intrinsic Operators
  
  
*************** It is also possible to specify such oper
*** 18266,18272 ****
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{260}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{261}
  @section Compilation_ISO_Date
  
  
--- 18228,18234 ----
  full views are appropriate arithmetic types.
  
  @node Compilation_ISO_Date,Compilation_Date,Intrinsic Operators,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-iso-date}@anchor{261}@anchor{gnat_rm/intrinsic_subprograms id3}@anchor{262}
  @section Compilation_ISO_Date
  
  
*************** application program should simply call t
*** 18280,18286 ****
  the current compilation (in local time format YYYY-MM-DD).
  
  @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{262}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{263}
  @section Compilation_Date
  
  
--- 18242,18248 ----
  the current compilation (in local time format YYYY-MM-DD).
  
  @node Compilation_Date,Compilation_Time,Compilation_ISO_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-date}@anchor{263}@anchor{gnat_rm/intrinsic_subprograms id4}@anchor{264}
  @section Compilation_Date
  
  
*************** Same as Compilation_ISO_Date, except the
*** 18290,18296 ****
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{264}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{265}
  @section Compilation_Time
  
  
--- 18252,18258 ----
  MMM DD YYYY.
  
  @node Compilation_Time,Enclosing_Entity,Compilation_Date,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms compilation-time}@anchor{265}@anchor{gnat_rm/intrinsic_subprograms id5}@anchor{266}
  @section Compilation_Time
  
  
*************** application program should simply call t
*** 18304,18310 ****
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{266}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{267}
  @section Enclosing_Entity
  
  
--- 18266,18272 ----
  the current compilation (in local time format HH:MM:SS).
  
  @node Enclosing_Entity,Exception_Information,Compilation_Time,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms enclosing-entity}@anchor{267}@anchor{gnat_rm/intrinsic_subprograms id6}@anchor{268}
  @section Enclosing_Entity
  
  
*************** application program should simply call t
*** 18318,18324 ****
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{268}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{269}
  @section Exception_Information
  
  
--- 18280,18286 ----
  the current subprogram, package, task, entry, or protected subprogram.
  
  @node Exception_Information,Exception_Message,Enclosing_Entity,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-information}@anchor{269}@anchor{gnat_rm/intrinsic_subprograms id7}@anchor{26a}
  @section Exception_Information
  
  
*************** so an application program should simply
*** 18332,18338 ****
  the exception information associated with the current exception.
  
  @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{26a}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{26b}
  @section Exception_Message
  
  
--- 18294,18300 ----
  the exception information associated with the current exception.
  
  @node Exception_Message,Exception_Name,Exception_Information,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-message}@anchor{26b}@anchor{gnat_rm/intrinsic_subprograms id8}@anchor{26c}
  @section Exception_Message
  
  
*************** so an application program should simply
*** 18346,18352 ****
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26c}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26d}
  @section Exception_Name
  
  
--- 18308,18314 ----
  the message associated with the current exception.
  
  @node Exception_Name,File,Exception_Message,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms exception-name}@anchor{26d}@anchor{gnat_rm/intrinsic_subprograms id9}@anchor{26e}
  @section Exception_Name
  
  
*************** so an application program should simply
*** 18360,18366 ****
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{26e}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{26f}
  @section File
  
  
--- 18322,18328 ----
  the name of the current exception.
  
  @node File,Line,Exception_Name,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms file}@anchor{26f}@anchor{gnat_rm/intrinsic_subprograms id10}@anchor{270}
  @section File
  
  
*************** application program should simply call t
*** 18374,18380 ****
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{270}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{271}
  @section Line
  
  
--- 18336,18342 ----
  file.
  
  @node Line,Shifts and Rotates,File,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id11}@anchor{271}@anchor{gnat_rm/intrinsic_subprograms line}@anchor{272}
  @section Line
  
  
*************** application program should simply call t
*** 18388,18394 ****
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{272}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{273}
  @section Shifts and Rotates
  
  
--- 18350,18356 ----
  source line.
  
  @node Shifts and Rotates,Source_Location,Line,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id12}@anchor{273}@anchor{gnat_rm/intrinsic_subprograms shifts-and-rotates}@anchor{274}
  @section Shifts and Rotates
  
  
*************** corresponding operator for modular type.
*** 18431,18437 ****
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{274}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{275}
  @section Source_Location
  
  
--- 18393,18399 ----
  number may change its sign bit to positive.
  
  @node Source_Location,,Shifts and Rotates,Intrinsic Subprograms
! @anchor{gnat_rm/intrinsic_subprograms id13}@anchor{275}@anchor{gnat_rm/intrinsic_subprograms source-location}@anchor{276}
  @section Source_Location
  
  
*************** application program should simply call t
*** 18445,18451 ****
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{276}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{277}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}
  @chapter Representation Clauses and Pragmas
  
  
--- 18407,18413 ----
  source file location.
  
  @node Representation Clauses and Pragmas,Standard Library Routines,Intrinsic Subprograms,Top
! @anchor{gnat_rm/representation_clauses_and_pragmas doc}@anchor{277}@anchor{gnat_rm/representation_clauses_and_pragmas id1}@anchor{278}@anchor{gnat_rm/representation_clauses_and_pragmas representation-clauses-and-pragmas}@anchor{d}
  @chapter Representation Clauses and Pragmas
  
  
*************** and this section describes the additiona
*** 18491,18497 ****
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{278}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{279}
  @section Alignment Clauses
  
  
--- 18453,18459 ----
  @end menu
  
  @node Alignment Clauses,Size Clauses,,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas alignment-clauses}@anchor{279}@anchor{gnat_rm/representation_clauses_and_pragmas id2}@anchor{27a}
  @section Alignment Clauses
  
  
*************** The default alignment values are as foll
*** 18507,18513 ****
  @itemize *
  
  @item 
! @emph{Elementary Types}.
  
  For elementary types, the alignment is the minimum of the actual size of
  objects of the type divided by @code{Storage_Unit},
--- 18469,18475 ----
  @itemize *
  
  @item 
! `Elementary Types'.
  
  For elementary types, the alignment is the minimum of the actual size of
  objects of the type divided by @code{Storage_Unit},
*************** than 8, in which case objects of type @c
*** 18524,18530 ****
  aligned.
  
  @item 
! @emph{Arrays}.
  
  For arrays, the alignment is equal to the alignment of the component type
  for the normal case where no packing or component size is given.  If the
--- 18486,18492 ----
  aligned.
  
  @item 
! `Arrays'.
  
  For arrays, the alignment is equal to the alignment of the component type
  for the normal case where no packing or component size is given.  If the
*************** will be as described for elementary type
*** 18537,18543 ****
  31 bits will have an object size of four bytes, and an alignment of 4.
  
  @item 
! @emph{Records}.
  
  For the normal unpacked case, the alignment of a record is equal to
  the maximum alignment of any of its components.  For tagged records, this
--- 18499,18505 ----
  31 bits will have an object size of four bytes, and an alignment of 4.
  
  @item 
! `Records'.
  
  For the normal unpacked case, the alignment of a record is equal to
  the maximum alignment of any of its components.  For tagged records, this
*************** assumption is non-portable, and other co
*** 18622,18628 ****
  alignments for the subtype @code{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{27a}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{27b}
  @section Size Clauses
  
  
--- 18584,18590 ----
  alignments for the subtype @code{RS}.
  
  @node Size Clauses,Storage_Size Clauses,Alignment Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id3}@anchor{27b}@anchor{gnat_rm/representation_clauses_and_pragmas size-clauses}@anchor{27c}
  @section Size Clauses
  
  
*************** if it is known that a Size value can be
*** 18699,18705 ****
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27c}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27d}
  @section Storage_Size Clauses
  
  
--- 18661,18667 ----
  type Integer.
  
  @node Storage_Size Clauses,Size of Variant Record Objects,Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id4}@anchor{27d}@anchor{gnat_rm/representation_clauses_and_pragmas storage-size-clauses}@anchor{27e}
  @section Storage_Size Clauses
  
  
*************** Then @code{Default_Stack_Size} can be de
*** 18721,18727 ****
  modified as required. Any tasks requiring stack sizes different from the
  default can have an appropriate alternative reference in the pragma.
  
! You can also use the @emph{-d} binder switch to modify the default stack
  size.
  
  For access types, the @code{Storage_Size} clause specifies the maximum
--- 18683,18689 ----
  modified as required. Any tasks requiring stack sizes different from the
  default can have an appropriate alternative reference in the pragma.
  
! You can also use the `-d' binder switch to modify the default stack
  size.
  
  For access types, the @code{Storage_Size} clause specifies the maximum
*************** Of course in practice, there will not be
*** 18772,18778 ****
  case of such an access declaration.
  
  @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{27e}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{27f}
  @section Size of Variant Record Objects
  
  
--- 18734,18740 ----
  case of such an access declaration.
  
  @node Size of Variant Record Objects,Biased Representation,Storage_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id5}@anchor{27f}@anchor{gnat_rm/representation_clauses_and_pragmas size-of-variant-record-objects}@anchor{280}
  @section Size of Variant Record Objects
  
  
*************** the maximum size, regardless of the curr
*** 18882,18888 ****
  variant value.
  
  @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{280}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{281}
  @section Biased Representation
  
  
--- 18844,18850 ----
  variant value.
  
  @node Biased Representation,Value_Size and Object_Size Clauses,Size of Variant Record Objects,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas biased-representation}@anchor{281}@anchor{gnat_rm/representation_clauses_and_pragmas id6}@anchor{282}
  @section Biased Representation
  
  
*************** biased representation can be used for al
*** 18920,18926 ****
  enumeration types for which a representation clause is given.
  
  @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{282}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{283}
  @section Value_Size and Object_Size Clauses
  
  
--- 18882,18888 ----
  enumeration types for which a representation clause is given.
  
  @node Value_Size and Object_Size Clauses,Component_Size Clauses,Biased Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id7}@anchor{283}@anchor{gnat_rm/representation_clauses_and_pragmas value-size-and-object-size-clauses}@anchor{284}
  @section Value_Size and Object_Size Clauses
  
  
*************** typically 31.  This means that code may
*** 18942,18955 ****
  from Ada 83 to Ada 95 or Ada 2005.  For example, consider:
  
  @example
! type Rec is record;
     A : Natural;
     B : Natural;
  end record;
  
  for Rec use record
!    at 0  range 0 .. Natural'Size - 1;
!    at 0  range Natural'Size .. 2 * Natural'Size - 1;
  end record;
  @end example
  
--- 18904,18917 ----
  from Ada 83 to Ada 95 or Ada 2005.  For example, consider:
  
  @example
! type Rec is record
     A : Natural;
     B : Natural;
  end record;
  
  for Rec use record
!    A at 0 range 0 .. Natural'Size - 1;
!    B at 0 range Natural'Size .. 2 * Natural'Size - 1;
  end record;
  @end example
  
*************** discrete types are as follows:
*** 18981,18987 ****
  
  @item 
  The @code{Object_Size} for base subtypes reflect the natural hardware
! size in bits (run the compiler with @emph{-gnatS} to find those values
  for numeric types). Enumeration types and fixed-point base subtypes have
  8, 16, 32, or 64 bits for this size, depending on the range of values
  to be stored.
--- 18943,18949 ----
  
  @item 
  The @code{Object_Size} for base subtypes reflect the natural hardware
! size in bits (run the compiler with `-gnatS' to find those values
  for numeric types). Enumeration types and fixed-point base subtypes have
  8, 16, 32, or 64 bits for this size, depending on the range of values
  to be stored.
*************** only if negative values are possible).
*** 19018,19024 ****
  
  @item 
  If a subtype statically matches the first subtype of a given type, then it has
! by default the same @code{Value_Size} as the first subtype.  This is a
  consequence of RM 13.1(14): “if two subtypes statically match,
  then their subtype-specific aspects are the same”.)
  
--- 18980,18986 ----
  
  @item 
  If a subtype statically matches the first subtype of a given type, then it has
! by default the same @code{Value_Size} as the first subtype.  (This is a
  consequence of RM 13.1(14): “if two subtypes statically match,
  then their subtype-specific aspects are the same”.)
  
*************** definition clause forces biased represen
*** 19236,19242 ****
  warning can be turned off using @code{-gnatw.B}.
  
  @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{284}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{285}
  @section Component_Size Clauses
  
  
--- 19198,19204 ----
  warning can be turned off using @code{-gnatw.B}.
  
  @node Component_Size Clauses,Bit_Order Clauses,Value_Size and Object_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas component-size-clauses}@anchor{285}@anchor{gnat_rm/representation_clauses_and_pragmas id8}@anchor{286}
  @section Component_Size Clauses
  
  
*************** and a pragma Pack for the same array typ
*** 19284,19290 ****
  clauses are given, the pragma Pack will be ignored.
  
  @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{286}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{287}
  @section Bit_Order Clauses
  
  
--- 19246,19252 ----
  clauses are given, the pragma Pack will be ignored.
  
  @node Bit_Order Clauses,Effect of Bit_Order on Byte Ordering,Component_Size Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas bit-order-clauses}@anchor{287}@anchor{gnat_rm/representation_clauses_and_pragmas id9}@anchor{288}
  @section Bit_Order Clauses
  
  
*************** if desired.  The following section conta
*** 19390,19396 ****
  details regarding the issue of byte ordering.
  
  @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{288}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{289}
  @section Effect of Bit_Order on Byte Ordering
  
  
--- 19352,19358 ----
  details regarding the issue of byte ordering.
  
  @node Effect of Bit_Order on Byte Ordering,Pragma Pack for Arrays,Bit_Order Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-bit-order-on-byte-ordering}@anchor{289}@anchor{gnat_rm/representation_clauses_and_pragmas id10}@anchor{28a}
  @section Effect of Bit_Order on Byte Ordering
  
  
*************** Suppose that we have an external device
*** 19452,19458 ****
  byte presented, which is the first (low addressed byte) of the two byte
  record is called Master, and the second byte is called Slave.
  
! The left most (most significant bit is called Control for each byte, and
  the remaining 7 bits are called V1, V2, … V7, where V7 is the rightmost
  (least significant) bit.
  
--- 19414,19420 ----
  byte presented, which is the first (low addressed byte) of the two byte
  record is called Master, and the second byte is called Slave.
  
! The left most (most significant) bit is called Control for each byte, and
  the remaining 7 bits are called V1, V2, … V7, where V7 is the rightmost
  (least significant) bit.
  
*************** to set the boolean constant @code{Master
*** 19647,19660 ****
  an appropriate manner.
  
  @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{28a}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{28b}
  @section Pragma Pack for Arrays
  
  
  @geindex Pragma Pack (for arrays)
  
  Pragma @code{Pack} applied to an array has an effect that depends upon whether the
! component type is @emph{packable}.  For a component type to be @emph{packable}, it must
  be one of the following cases:
  
  
--- 19609,19622 ----
  an appropriate manner.
  
  @node Pragma Pack for Arrays,Pragma Pack for Records,Effect of Bit_Order on Byte Ordering,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id11}@anchor{28b}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-arrays}@anchor{28c}
  @section Pragma Pack for Arrays
  
  
  @geindex Pragma Pack (for arrays)
  
  Pragma @code{Pack} applied to an array has an effect that depends upon whether the
! component type is `packable'.  For a component type to be `packable', it must
  be one of the following cases:
  
  
*************** Here 31-bit packing is achieved as requi
*** 19767,19773 ****
  since in this case the programmer intention is clear.
  
  @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28c}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{28d}
  @section Pragma Pack for Records
  
  
--- 19729,19735 ----
  since in this case the programmer intention is clear.
  
  @node Pragma Pack for Records,Record Representation Clauses,Pragma Pack for Arrays,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id12}@anchor{28d}@anchor{gnat_rm/representation_clauses_and_pragmas pragma-pack-for-records}@anchor{28e}
  @section Pragma Pack for Records
  
  
*************** since in this case the programmer intent
*** 19775,19782 ****
  
  Pragma @code{Pack} applied to a record will pack the components to reduce
  wasted space from alignment gaps and by reducing the amount of space
! taken by components.  We distinguish between @emph{packable} components and
! @emph{non-packable} components.
  Components of the following types are considered packable:
  
  
--- 19737,19744 ----
  
  Pragma @code{Pack} applied to a record will pack the components to reduce
  wasted space from alignment gaps and by reducing the amount of space
! taken by components.  We distinguish between `packable' components and
! `non-packable' components.
  Components of the following types are considered packable:
  
  
*************** array that is longer than 64 bits, so it
*** 19851,19857 ****
  boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{28e}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{28f}
  @section Record Representation Clauses
  
  
--- 19813,19819 ----
  boundary, and takes an integral number of bytes, i.e., 72 bits.
  
  @node Record Representation Clauses,Handling of Records with Holes,Pragma Pack for Records,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id13}@anchor{28f}@anchor{gnat_rm/representation_clauses_and_pragmas record-representation-clauses}@anchor{290}
  @section Record Representation Clauses
  
  
*************** end record;
*** 19930,19936 ****
  @end example
  
  @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{290}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{291}
  @section Handling of Records with Holes
  
  
--- 19892,19898 ----
  @end example
  
  @node Handling of Records with Holes,Enumeration Clauses,Record Representation Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas handling-of-records-with-holes}@anchor{291}@anchor{gnat_rm/representation_clauses_and_pragmas id14}@anchor{292}
  @section Handling of Records with Holes
  
  
*************** for Hrec'Size use 64;
*** 20006,20012 ****
  @end example
  
  @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{292}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{293}
  @section Enumeration Clauses
  
  
--- 19968,19974 ----
  @end example
  
  @node Enumeration Clauses,Address Clauses,Handling of Records with Holes,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas enumeration-clauses}@anchor{293}@anchor{gnat_rm/representation_clauses_and_pragmas id15}@anchor{294}
  @section Enumeration Clauses
  
  
*************** be in the range:
*** 20025,20031 ****
  0 .. System.Max_Binary_Modulus;
  @end example
  
! A @emph{confirming} representation clause is one in which the values range
  from 0 in sequence, i.e., a clause that confirms the default representation
  for an enumeration type.
  Such a confirming representation
--- 19987,19993 ----
  0 .. System.Max_Binary_Modulus;
  @end example
  
! A `confirming' representation clause is one in which the values range
  from 0 in sequence, i.e., a clause that confirms the default representation
  for an enumeration type.
  Such a confirming representation
*************** the overhead of converting representatio
*** 20049,20055 ****
  positional values, (i.e., the value delivered by the @code{Pos} attribute).
  
  @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{294}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{295}
  @section Address Clauses
  
  
--- 20011,20017 ----
  positional values, (i.e., the value delivered by the @code{Pos} attribute).
  
  @node Address Clauses,Use of Address Clauses for Memory-Mapped I/O,Enumeration Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas address-clauses}@anchor{295}@anchor{gnat_rm/representation_clauses_and_pragmas id16}@anchor{296}
  @section Address Clauses
  
  
*************** check Alignment_Check is suppressed, or
*** 20176,20184 ****
  @code{pragma Restrictions (No_Elaboration_Code)} is in effect. It is also
  suppressed by default on non-strict alignment machines (such as the x86).
  
! Finally, GNAT does not permit overlaying of objects of class-wide types. In
! most cases, the compiler can detect an attempt at such overlays and will
! generate a warning at compile time and a Program_Error exception at run time.
  
  @geindex Export
  
--- 20138,20157 ----
  @code{pragma Restrictions (No_Elaboration_Code)} is in effect. It is also
  suppressed by default on non-strict alignment machines (such as the x86).
  
! In some cases, GNAT does not support an address specification (using either
! form of aspect specification syntax) for the declaration of an object that has
! an indefinite nominal subtype. An object declaration has an indefinite
! nominal subtype if it takes its bounds (for an array type), discriminant
! values (for a discriminated type whose discriminants lack defaults), or tag
! (for a class-wide type) from its initial value, as in
! 
! @example
! X : String := Some_Function_Call;
! -- String has no constraint, so bounds for X come from function call
! @end example
! 
! This restriction does not apply if the size of the object’s initial value is
! known at compile time and the type of the object is not class-wide.
  
  @geindex Export
  
*************** then the program compiles without the wa
*** 20378,20384 ****
  the output @code{X was not clobbered}.
  
  @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{296}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{297}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
--- 20351,20357 ----
  the output @code{X was not clobbered}.
  
  @node Use of Address Clauses for Memory-Mapped I/O,Effect of Convention on Representation,Address Clauses,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas id17}@anchor{297}@anchor{gnat_rm/representation_clauses_and_pragmas use-of-address-clauses-for-memory-mapped-i-o}@anchor{298}
  @section Use of Address Clauses for Memory-Mapped I/O
  
  
*************** provides the pragma @code{Volatile_Full_
*** 20436,20442 ****
  pragma @code{Atomic} and will give the additional guarantee.
  
  @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{298}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{299}
  @section Effect of Convention on Representation
  
  
--- 20409,20415 ----
  pragma @code{Atomic} and will give the additional guarantee.
  
  @node Effect of Convention on Representation,Conventions and Anonymous Access Types,Use of Address Clauses for Memory-Mapped I/O,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas effect-of-convention-on-representation}@anchor{299}@anchor{gnat_rm/representation_clauses_and_pragmas id18}@anchor{29a}
  @section Effect of Convention on Representation
  
  
*************** There are four exceptions to this genera
*** 20456,20462 ****
  @itemize *
  
  @item 
! @emph{Convention Fortran and array subtypes}.
  
  If pragma Convention Fortran is specified for an array subtype, then in
  accordance with the implementation advice in section 3.6.2(11) of the
--- 20429,20435 ----
  @itemize *
  
  @item 
! `Convention Fortran and array subtypes'.
  
  If pragma Convention Fortran is specified for an array subtype, then in
  accordance with the implementation advice in section 3.6.2(11) of the
*************** Ada Reference Manual, the array will be
*** 20464,20470 ****
  column-major manner, instead of the normal default row-major order.
  
  @item 
! @emph{Convention C and enumeration types}
  
  GNAT normally stores enumeration types in 8, 16, or 32 bits as required
  to accommodate all values of the type.  For example, for the enumeration
--- 20437,20443 ----
  column-major manner, instead of the normal default row-major order.
  
  @item 
! `Convention C and enumeration types'
  
  GNAT normally stores enumeration types in 8, 16, or 32 bits as required
  to accommodate all values of the type.  For example, for the enumeration
*************** warning in this situation. The warning c
*** 20490,20496 ****
  size clause specifying the desired size.
  
  @item 
! @emph{Convention C/Fortran and Boolean types}
  
  In C, the usual convention for boolean values, that is values used for
  conditions, is that zero represents false, and nonzero values represent
--- 20463,20469 ----
  size clause specifying the desired size.
  
  @item 
! `Convention C/Fortran and Boolean types'
  
  In C, the usual convention for boolean values, that is values used for
  conditions, is that zero represents false, and nonzero values represent
*************** when one of these values is read, any no
*** 20514,20520 ****
  @end itemize
  
  @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{29a}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{29b}
  @section Conventions and Anonymous Access Types
  
  
--- 20487,20493 ----
  @end itemize
  
  @node Conventions and Anonymous Access Types,Determining the Representations chosen by GNAT,Effect of Convention on Representation,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas conventions-and-anonymous-access-types}@anchor{29b}@anchor{gnat_rm/representation_clauses_and_pragmas id19}@anchor{29c}
  @section Conventions and Anonymous Access Types
  
  
*************** package ConvComp is
*** 20590,20596 ****
  @end example
  
  @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29c}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{29d}
  @section Determining the Representations chosen by GNAT
  
  
--- 20563,20569 ----
  @end example
  
  @node Determining the Representations chosen by GNAT,,Conventions and Anonymous Access Types,Representation Clauses and Pragmas
! @anchor{gnat_rm/representation_clauses_and_pragmas determining-the-representations-chosen-by-gnat}@anchor{29d}@anchor{gnat_rm/representation_clauses_and_pragmas id20}@anchor{29e}
  @section Determining the Representations chosen by GNAT
  
  
*************** fields placed? The section on pragma @co
*** 20614,20620 ****
  used to answer the second question, but it is often easier to just see
  what the compiler does.
  
! For this purpose, GNAT provides the option @emph{-gnatR}.  If you compile
  with this option, then the compiler will output information on the actual
  representations chosen, in a format similar to source representation
  clauses.  For example, if we compile the package:
--- 20587,20593 ----
  used to answer the second question, but it is often easier to just see
  what the compiler does.
  
! For this purpose, GNAT provides the option `-gnatR'.  If you compile
  with this option, then the compiler will output information on the actual
  representations chosen, in a format similar to source representation
  clauses.  For example, if we compile the package:
*************** package q is
*** 20663,20669 ****
  end q;
  @end example
  
! using the switch @emph{-gnatR} we obtain the following output:
  
  @example
  Representation information for unit q
--- 20636,20642 ----
  end q;
  @end example
  
! using the switch `-gnatR' we obtain the following output:
  
  @example
  Representation information for unit q
*************** generated by the compiler into the origi
*** 20742,20748 ****
  the actual representation to be used.
  
  @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
! @anchor{gnat_rm/standard_library_routines doc}@anchor{29e}@anchor{gnat_rm/standard_library_routines id1}@anchor{29f}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}
  @chapter Standard Library Routines
  
  
--- 20715,20721 ----
  the actual representation to be used.
  
  @node Standard Library Routines,The Implementation of Standard I/O,Representation Clauses and Pragmas,Top
! @anchor{gnat_rm/standard_library_routines doc}@anchor{29f}@anchor{gnat_rm/standard_library_routines id1}@anchor{2a0}@anchor{gnat_rm/standard_library_routines standard-library-routines}@anchor{e}
  @chapter Standard Library Routines
  
  
*************** the unit is not implemented.
*** 20773,20828 ****
  
  @table @asis
  
! @item @code{Ada} @emph{(A.2)}
  
  This is a parent package for all the standard library packages.  It is
  usually included implicitly in your program, and itself contains no
  useful data or routines.
  
! @item @code{Ada.Assertions} @emph{(11.4.2)}
  
  @code{Assertions} provides the @code{Assert} subprograms, and also
  the declaration of the @code{Assertion_Error} exception.
  
! @item @code{Ada.Asynchronous_Task_Control} @emph{(D.11)}
  
  @code{Asynchronous_Task_Control} provides low level facilities for task
  synchronization. It is typically not implemented. See package spec for details.
  
! @item @code{Ada.Calendar} @emph{(9.6)}
  
  @code{Calendar} provides time of day access, and routines for
  manipulating times and durations.
  
! @item @code{Ada.Calendar.Arithmetic} @emph{(9.6.1)}
  
  This package provides additional arithmetic
  operations for @code{Calendar}.
  
! @item @code{Ada.Calendar.Formatting} @emph{(9.6.1)}
  
  This package provides formatting operations for @code{Calendar}.
  
! @item @code{Ada.Calendar.Time_Zones} @emph{(9.6.1)}
  
  This package provides additional @code{Calendar} facilities
  for handling time zones.
  
! @item @code{Ada.Characters} @emph{(A.3.1)}
  
  This is a dummy parent package that contains no useful entities
  
! @item @code{Ada.Characters.Conversions} @emph{(A.3.2)}
  
  This package provides character conversion functions.
  
! @item @code{Ada.Characters.Handling} @emph{(A.3.2)}
  
  This package provides some basic character handling capabilities,
  including classification functions for classes of characters (e.g., test
  for letters, or digits).
  
! @item @code{Ada.Characters.Latin_1} @emph{(A.3.3)}
  
  This package includes a complete set of definitions of the characters
  that appear in type CHARACTER.  It is useful for writing programs that
--- 20746,20801 ----
  
  @table @asis
  
! @item @code{Ada} `(A.2)'
  
  This is a parent package for all the standard library packages.  It is
  usually included implicitly in your program, and itself contains no
  useful data or routines.
  
! @item @code{Ada.Assertions} `(11.4.2)'
  
  @code{Assertions} provides the @code{Assert} subprograms, and also
  the declaration of the @code{Assertion_Error} exception.
  
! @item @code{Ada.Asynchronous_Task_Control} `(D.11)'
  
  @code{Asynchronous_Task_Control} provides low level facilities for task
  synchronization. It is typically not implemented. See package spec for details.
  
! @item @code{Ada.Calendar} `(9.6)'
  
  @code{Calendar} provides time of day access, and routines for
  manipulating times and durations.
  
! @item @code{Ada.Calendar.Arithmetic} `(9.6.1)'
  
  This package provides additional arithmetic
  operations for @code{Calendar}.
  
! @item @code{Ada.Calendar.Formatting} `(9.6.1)'
  
  This package provides formatting operations for @code{Calendar}.
  
! @item @code{Ada.Calendar.Time_Zones} `(9.6.1)'
  
  This package provides additional @code{Calendar} facilities
  for handling time zones.
  
! @item @code{Ada.Characters} `(A.3.1)'
  
  This is a dummy parent package that contains no useful entities
  
! @item @code{Ada.Characters.Conversions} `(A.3.2)'
  
  This package provides character conversion functions.
  
! @item @code{Ada.Characters.Handling} `(A.3.2)'
  
  This package provides some basic character handling capabilities,
  including classification functions for classes of characters (e.g., test
  for letters, or digits).
  
! @item @code{Ada.Characters.Latin_1} `(A.3.3)'
  
  This package includes a complete set of definitions of the characters
  that appear in type CHARACTER.  It is useful for writing programs that
*************** the definition of @code{UC_E_Acute} in t
*** 20832,21025 ****
  will print in an understandable manner even if your environment does not
  support these extended characters.
  
! @item @code{Ada.Command_Line} @emph{(A.15)}
  
  This package provides access to the command line parameters and the name
  of the current program (analogous to the use of @code{argc} and @code{argv}
  in C), and also allows the exit status for the program to be set in a
  system-independent manner.
  
! @item @code{Ada.Complex_Text_IO} @emph{(G.1.3)}
  
  This package provides text input and output of complex numbers.
  
! @item @code{Ada.Containers} @emph{(A.18.1)}
  
  A top level package providing a few basic definitions used by all the
  following specific child packages that provide specific kinds of
  containers.
  @end table
  
! @code{Ada.Containers.Bounded_Priority_Queues} @emph{(A.18.31)}
  
! @code{Ada.Containers.Bounded_Synchronized_Queues} @emph{(A.18.29)}
  
! @code{Ada.Containers.Doubly_Linked_Lists} @emph{(A.18.3)}
  
! @code{Ada.Containers.Generic_Array_Sort} @emph{(A.18.26)}
  
! @code{Ada.Containers.Generic_Constrained_Array_Sort} @emph{(A.18.26)}
  
! @code{Ada.Containers.Generic_Sort} @emph{(A.18.26)}
  
! @code{Ada.Containers.Hashed_Maps} @emph{(A.18.5)}
  
! @code{Ada.Containers.Hashed_Sets} @emph{(A.18.8)}
  
! @code{Ada.Containers.Indefinite_Doubly_Linked_Lists} @emph{(A.18.12)}
  
! @code{Ada.Containers.Indefinite_Hashed_Maps} @emph{(A.18.13)}
  
! @code{Ada.Containers.Indefinite_Hashed_Sets} @emph{(A.18.15)}
  
! @code{Ada.Containers.Indefinite_Holders} @emph{(A.18.18)}
  
! @code{Ada.Containers.Indefinite_Multiway_Trees} @emph{(A.18.17)}
  
! @code{Ada.Containers.Indefinite_Ordered_Maps} @emph{(A.18.14)}
  
! @code{Ada.Containers.Indefinite_Ordered_Sets} @emph{(A.18.16)}
  
! @code{Ada.Containers.Indefinite_Vectors} @emph{(A.18.11)}
  
! @code{Ada.Containers.Multiway_Trees} @emph{(A.18.10)}
  
! @code{Ada.Containers.Ordered_Maps} @emph{(A.18.6)}
  
! @code{Ada.Containers.Ordered_Sets} @emph{(A.18.9)}
  
! @code{Ada.Containers.Synchronized_Queue_Interfaces} @emph{(A.18.27)}
  
! @code{Ada.Containers.Unbounded_Priority_Queues} @emph{(A.18.30)}
  
! @code{Ada.Containers.Unbounded_Synchronized_Queues} @emph{(A.18.28)}
  
! @code{Ada.Containers.Vectors} @emph{(A.18.2)}
  
  
  @table @asis
  
! @item @code{Ada.Directories} @emph{(A.16)}
  
  This package provides operations on directories.
  
! @item @code{Ada.Directories.Hierarchical_File_Names} @emph{(A.16.1)}
  
  This package provides additional directory operations handling
! hiearchical file names.
  
! @item @code{Ada.Directories.Information} @emph{(A.16)}
  
  This is an implementation defined package for additional directory
  operations, which is not implemented in GNAT.
  
! @item @code{Ada.Decimal} @emph{(F.2)}
  
  This package provides constants describing the range of decimal numbers
  implemented, and also a decimal divide routine (analogous to the COBOL
  verb DIVIDE … GIVING … REMAINDER …)
  
! @item @code{Ada.Direct_IO} @emph{(A.8.4)}
  
  This package provides input-output using a model of a set of records of
  fixed-length, containing an arbitrary definite Ada type, indexed by an
  integer record number.
  
! @item @code{Ada.Dispatching} @emph{(D.2.1)}
  
  A parent package containing definitions for task dispatching operations.
  
! @item @code{Ada.Dispatching.EDF} @emph{(D.2.6)}
  
  Not implemented in GNAT.
  
! @item @code{Ada.Dispatching.Non_Preemptive} @emph{(D.2.4)}
  
  Not implemented in GNAT.
  
! @item @code{Ada.Dispatching.Round_Robin} @emph{(D.2.5)}
  
  Not implemented in GNAT.
  
! @item @code{Ada.Dynamic_Priorities} @emph{(D.5)}
  
  This package allows the priorities of a task to be adjusted dynamically
  as the task is running.
  
! @item @code{Ada.Environment_Variables} @emph{(A.17)}
  
  This package provides facilities for accessing environment variables.
  
! @item @code{Ada.Exceptions} @emph{(11.4.1)}
  
  This package provides additional information on exceptions, and also
  contains facilities for treating exceptions as data objects, and raising
  exceptions with associated messages.
  
! @item @code{Ada.Execution_Time} @emph{(D.14)}
  
  This package provides CPU clock functionalities. It is not implemented on
  all targets (see package spec for details).
  
! @item @code{Ada.Execution_Time.Group_Budgets} @emph{(D.14.2)}
  
  Not implemented in GNAT.
  
! @item @code{Ada.Execution_Time.Timers} @emph{(D.14.1)’}
  
  Not implemented in GNAT.
  
! @item @code{Ada.Finalization} @emph{(7.6)}
  
  This package contains the declarations and subprograms to support the
  use of controlled types, providing for automatic initialization and
  finalization (analogous to the constructors and destructors of C++).
  
! @item @code{Ada.Float_Text_IO} @emph{(A.10.9)}
  
  A library level instantiation of Text_IO.Float_IO for type Float.
  
! @item @code{Ada.Float_Wide_Text_IO} @emph{(A.10.9)}
  
  A library level instantiation of Wide_Text_IO.Float_IO for type Float.
  
! @item @code{Ada.Float_Wide_Wide_Text_IO} @emph{(A.10.9)}
  
  A library level instantiation of Wide_Wide_Text_IO.Float_IO for type Float.
  
! @item @code{Ada.Integer_Text_IO} @emph{(A.10.9)}
  
  A library level instantiation of Text_IO.Integer_IO for type Integer.
  
! @item @code{Ada.Integer_Wide_Text_IO} @emph{(A.10.9)}
  
  A library level instantiation of Wide_Text_IO.Integer_IO for type Integer.
  
! @item @code{Ada.Integer_Wide_Wide_Text_IO} @emph{(A.10.9)}
  
  A library level instantiation of Wide_Wide_Text_IO.Integer_IO for type Integer.
  
! @item @code{Ada.Interrupts} @emph{(C.3.2)}
  
  This package provides facilities for interfacing to interrupts, which
  includes the set of signals or conditions that can be raised and
  recognized as interrupts.
  
! @item @code{Ada.Interrupts.Names} @emph{(C.3.2)}
  
  This package provides the set of interrupt names (actually signal
  or condition names) that can be handled by GNAT.
  
! @item @code{Ada.IO_Exceptions} @emph{(A.13)}
  
  This package defines the set of exceptions that can be raised by use of
  the standard IO packages.
  
! @item @code{Ada.Iterator_Interfaces} @emph{(5.5.1)}
  
  This package provides a generic interface to generalized iterators.
  
! @item @code{Ada.Locales} @emph{(A.19)}
  
  This package provides declarations providing information (Language
  and Country) about the current locale.
--- 20805,20998 ----
  will print in an understandable manner even if your environment does not
  support these extended characters.
  
! @item @code{Ada.Command_Line} `(A.15)'
  
  This package provides access to the command line parameters and the name
  of the current program (analogous to the use of @code{argc} and @code{argv}
  in C), and also allows the exit status for the program to be set in a
  system-independent manner.
  
! @item @code{Ada.Complex_Text_IO} `(G.1.3)'
  
  This package provides text input and output of complex numbers.
  
! @item @code{Ada.Containers} `(A.18.1)'
  
  A top level package providing a few basic definitions used by all the
  following specific child packages that provide specific kinds of
  containers.
  @end table
  
! @code{Ada.Containers.Bounded_Priority_Queues} `(A.18.31)'
  
! @code{Ada.Containers.Bounded_Synchronized_Queues} `(A.18.29)'
  
! @code{Ada.Containers.Doubly_Linked_Lists} `(A.18.3)'
  
! @code{Ada.Containers.Generic_Array_Sort} `(A.18.26)'
  
! @code{Ada.Containers.Generic_Constrained_Array_Sort} `(A.18.26)'
  
! @code{Ada.Containers.Generic_Sort} `(A.18.26)'
  
! @code{Ada.Containers.Hashed_Maps} `(A.18.5)'
  
! @code{Ada.Containers.Hashed_Sets} `(A.18.8)'
  
! @code{Ada.Containers.Indefinite_Doubly_Linked_Lists} `(A.18.12)'
  
! @code{Ada.Containers.Indefinite_Hashed_Maps} `(A.18.13)'
  
! @code{Ada.Containers.Indefinite_Hashed_Sets} `(A.18.15)'
  
! @code{Ada.Containers.Indefinite_Holders} `(A.18.18)'
  
! @code{Ada.Containers.Indefinite_Multiway_Trees} `(A.18.17)'
  
! @code{Ada.Containers.Indefinite_Ordered_Maps} `(A.18.14)'
  
! @code{Ada.Containers.Indefinite_Ordered_Sets} `(A.18.16)'
  
! @code{Ada.Containers.Indefinite_Vectors} `(A.18.11)'
  
! @code{Ada.Containers.Multiway_Trees} `(A.18.10)'
  
! @code{Ada.Containers.Ordered_Maps} `(A.18.6)'
  
! @code{Ada.Containers.Ordered_Sets} `(A.18.9)'
  
! @code{Ada.Containers.Synchronized_Queue_Interfaces} `(A.18.27)'
  
! @code{Ada.Containers.Unbounded_Priority_Queues} `(A.18.30)'
  
! @code{Ada.Containers.Unbounded_Synchronized_Queues} `(A.18.28)'
  
! @code{Ada.Containers.Vectors} `(A.18.2)'
  
  
  @table @asis
  
! @item @code{Ada.Directories} `(A.16)'
  
  This package provides operations on directories.
  
! @item @code{Ada.Directories.Hierarchical_File_Names} `(A.16.1)'
  
  This package provides additional directory operations handling
! hierarchical file names.
  
! @item @code{Ada.Directories.Information} `(A.16)'
  
  This is an implementation defined package for additional directory
  operations, which is not implemented in GNAT.
  
! @item @code{Ada.Decimal} `(F.2)'
  
  This package provides constants describing the range of decimal numbers
  implemented, and also a decimal divide routine (analogous to the COBOL
  verb DIVIDE … GIVING … REMAINDER …)
  
! @item @code{Ada.Direct_IO} `(A.8.4)'
  
  This package provides input-output using a model of a set of records of
  fixed-length, containing an arbitrary definite Ada type, indexed by an
  integer record number.
  
! @item @code{Ada.Dispatching} `(D.2.1)'
  
  A parent package containing definitions for task dispatching operations.
  
! @item @code{Ada.Dispatching.EDF} `(D.2.6)'
  
  Not implemented in GNAT.
  
! @item @code{Ada.Dispatching.Non_Preemptive} `(D.2.4)'
  
  Not implemented in GNAT.
  
! @item @code{Ada.Dispatching.Round_Robin} `(D.2.5)'
  
  Not implemented in GNAT.
  
! @item @code{Ada.Dynamic_Priorities} `(D.5)'
  
  This package allows the priorities of a task to be adjusted dynamically
  as the task is running.
  
! @item @code{Ada.Environment_Variables} `(A.17)'
  
  This package provides facilities for accessing environment variables.
  
! @item @code{Ada.Exceptions} `(11.4.1)'
  
  This package provides additional information on exceptions, and also
  contains facilities for treating exceptions as data objects, and raising
  exceptions with associated messages.
  
! @item @code{Ada.Execution_Time} `(D.14)'
  
  This package provides CPU clock functionalities. It is not implemented on
  all targets (see package spec for details).
  
! @item @code{Ada.Execution_Time.Group_Budgets} `(D.14.2)'
  
  Not implemented in GNAT.
  
! @item @code{Ada.Execution_Time.Timers} `(D.14.1)’'
  
  Not implemented in GNAT.
  
! @item @code{Ada.Finalization} `(7.6)'
  
  This package contains the declarations and subprograms to support the
  use of controlled types, providing for automatic initialization and
  finalization (analogous to the constructors and destructors of C++).
  
! @item @code{Ada.Float_Text_IO} `(A.10.9)'
  
  A library level instantiation of Text_IO.Float_IO for type Float.
  
! @item @code{Ada.Float_Wide_Text_IO} `(A.10.9)'
  
  A library level instantiation of Wide_Text_IO.Float_IO for type Float.
  
! @item @code{Ada.Float_Wide_Wide_Text_IO} `(A.10.9)'
  
  A library level instantiation of Wide_Wide_Text_IO.Float_IO for type Float.
  
! @item @code{Ada.Integer_Text_IO} `(A.10.9)'
  
  A library level instantiation of Text_IO.Integer_IO for type Integer.
  
! @item @code{Ada.Integer_Wide_Text_IO} `(A.10.9)'
  
  A library level instantiation of Wide_Text_IO.Integer_IO for type Integer.
  
! @item @code{Ada.Integer_Wide_Wide_Text_IO} `(A.10.9)'
  
  A library level instantiation of Wide_Wide_Text_IO.Integer_IO for type Integer.
  
! @item @code{Ada.Interrupts} `(C.3.2)'
  
  This package provides facilities for interfacing to interrupts, which
  includes the set of signals or conditions that can be raised and
  recognized as interrupts.
  
! @item @code{Ada.Interrupts.Names} `(C.3.2)'
  
  This package provides the set of interrupt names (actually signal
  or condition names) that can be handled by GNAT.
  
! @item @code{Ada.IO_Exceptions} `(A.13)'
  
  This package defines the set of exceptions that can be raised by use of
  the standard IO packages.
  
! @item @code{Ada.Iterator_Interfaces} `(5.5.1)'
  
  This package provides a generic interface to generalized iterators.
  
! @item @code{Ada.Locales} `(A.19)'
  
  This package provides declarations providing information (Language
  and Country) about the current locale.
*************** throughout the numerics packages.  Note
*** 21031,21037 ****
  defined here, and it is better to use these definitions than rolling
  your own.
  
! @item @code{Ada.Numerics.Complex_Arrays} @emph{(G.3.2)}
  
  Provides operations on arrays of complex numbers.
  
--- 21004,21010 ----
  defined here, and it is better to use these definitions than rolling
  your own.
  
! @item @code{Ada.Numerics.Complex_Arrays} `(G.3.2)'
  
  Provides operations on arrays of complex numbers.
  
*************** The following predefined instantiations
*** 21138,21152 ****
  @code{Ada.Numerics.Long_Elementary_Functions}
  @end itemize
  
! @item @code{Ada.Numerics.Generic_Real_Arrays} @emph{(G.3.1)}
  
  Generic operations on arrays of reals
  
! @item @code{Ada.Numerics.Real_Arrays} @emph{(G.3.1)}
  
  Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
  
! @item @code{Ada.Real_Time} @emph{(D.8)}
  
  This package provides facilities similar to those of @code{Calendar}, but
  operating with a finer clock suitable for real time control. Note that
--- 21111,21125 ----
  @code{Ada.Numerics.Long_Elementary_Functions}
  @end itemize
  
! @item @code{Ada.Numerics.Generic_Real_Arrays} `(G.3.1)'
  
  Generic operations on arrays of reals
  
! @item @code{Ada.Numerics.Real_Arrays} `(G.3.1)'
  
  Preinstantiation of Ada.Numerics.Generic_Real_Arrays (Float).
  
! @item @code{Ada.Real_Time} `(D.8)'
  
  This package provides facilities similar to those of @code{Calendar}, but
  operating with a finer clock suitable for real time control. Note that
*************** guarantees this behavior, but of course
*** 21155,21183 ****
  the GNAT runtime depends is deliberately reset by some external event,
  then such a backward jump may occur.
  
! @item @code{Ada.Real_Time.Timing_Events} @emph{(D.15)}
  
  Not implemented in GNAT.
  
! @item @code{Ada.Sequential_IO} @emph{(A.8.1)}
  
  This package provides input-output facilities for sequential files,
  which can contain a sequence of values of a single type, which can be
  any Ada type, including indefinite (unconstrained) types.
  
! @item @code{Ada.Storage_IO} @emph{(A.9)}
  
  This package provides a facility for mapping arbitrary Ada types to and
  from a storage buffer.  It is primarily intended for the creation of new
  IO packages.
  
! @item @code{Ada.Streams} @emph{(13.13.1)}
  
  This is a generic package that provides the basic support for the
  concept of streams as used by the stream attributes (@code{Input},
  @code{Output}, @code{Read} and @code{Write}).
  
! @item @code{Ada.Streams.Stream_IO} @emph{(A.12.1)}
  
  This package is a specialization of the type @code{Streams} defined in
  package @code{Streams} together with a set of operations providing
--- 21128,21156 ----
  the GNAT runtime depends is deliberately reset by some external event,
  then such a backward jump may occur.
  
! @item @code{Ada.Real_Time.Timing_Events} `(D.15)'
  
  Not implemented in GNAT.
  
! @item @code{Ada.Sequential_IO} `(A.8.1)'
  
  This package provides input-output facilities for sequential files,
  which can contain a sequence of values of a single type, which can be
  any Ada type, including indefinite (unconstrained) types.
  
! @item @code{Ada.Storage_IO} `(A.9)'
  
  This package provides a facility for mapping arbitrary Ada types to and
  from a storage buffer.  It is primarily intended for the creation of new
  IO packages.
  
! @item @code{Ada.Streams} `(13.13.1)'
  
  This is a generic package that provides the basic support for the
  concept of streams as used by the stream attributes (@code{Input},
  @code{Output}, @code{Read} and @code{Write}).
  
! @item @code{Ada.Streams.Stream_IO} `(A.12.1)'
  
  This package is a specialization of the type @code{Streams} defined in
  package @code{Streams} together with a set of operations providing
*************** Stream_IO capability.  The Stream_IO mod
*** 21185,21260 ****
  sequential access to a file which can contain an arbitrary set of values
  of one or more Ada types.
  
! @item @code{Ada.Strings} @emph{(A.4.1)}
  
  This package provides some basic constants used by the string handling
  packages.
  
! @item @code{Ada.Strings.Bounded} @emph{(A.4.4)}
  
  This package provides facilities for handling variable length
  strings.  The bounded model requires a maximum length.  It is thus
  somewhat more limited than the unbounded model, but avoids the use of
  dynamic allocation or finalization.
  
! @item @code{Ada.Strings.Bounded.Equal_Case_Insensitive} @emph{(A.4.10)}
  
  Provides case-insensitive comparisons of bounded strings
  
! @item @code{Ada.Strings.Bounded.Hash} @emph{(A.4.9)}
  
  This package provides a generic hash function for bounded strings
  
! @item @code{Ada.Strings.Bounded.Hash_Case_Insensitive} @emph{(A.4.9)}
  
  This package provides a generic hash function for bounded strings that
  converts the string to be hashed to lower case.
  
! @item @code{Ada.Strings.Bounded.Less_Case_Insensitive} @emph{(A.4.10)}
  
  This package provides a comparison function for bounded strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.Fixed} @emph{(A.4.3)}
  
  This package provides facilities for handling fixed length strings.
  
! @item @code{Ada.Strings.Fixed.Equal_Case_Insensitive} @emph{(A.4.10)}
  
  This package provides an equality function for fixed strings that compares
  the strings after converting both to lower case.
  
! @item @code{Ada.Strings.Fixed.Hash_Case_Insensitive} @emph{(A.4.9)}
  
  This package provides a case insensitive hash function for fixed strings that
  converts the string to lower case before computing the hash.
  
! @item @code{Ada.Strings.Fixed.Less_Case_Insensitive} @emph{(A.4.10)}
  
  This package provides a comparison function for fixed strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.Hash} @emph{(A.4.9)}
  
  This package provides a hash function for strings.
  
! @item @code{Ada.Strings.Hash_Case_Insensitive} @emph{(A.4.9)}
  
  This package provides a hash function for strings that is case insensitive.
  The string is converted to lower case before computing the hash.
  
! @item @code{Ada.Strings.Less_Case_Insensitive} @emph{(A.4.10)}
  
  This package provides a comparison function for\strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.Maps} @emph{(A.4.2)}
  
  This package provides facilities for handling character mappings and
  arbitrarily defined subsets of characters.  For instance it is useful in
  defining specialized translation tables.
  
! @item @code{Ada.Strings.Maps.Constants} @emph{(A.4.6)}
  
  This package provides a standard set of predefined mappings and
  predefined character sets.  For example, the standard upper to lower case
--- 21158,21233 ----
  sequential access to a file which can contain an arbitrary set of values
  of one or more Ada types.
  
! @item @code{Ada.Strings} `(A.4.1)'
  
  This package provides some basic constants used by the string handling
  packages.
  
! @item @code{Ada.Strings.Bounded} `(A.4.4)'
  
  This package provides facilities for handling variable length
  strings.  The bounded model requires a maximum length.  It is thus
  somewhat more limited than the unbounded model, but avoids the use of
  dynamic allocation or finalization.
  
! @item @code{Ada.Strings.Bounded.Equal_Case_Insensitive} `(A.4.10)'
  
  Provides case-insensitive comparisons of bounded strings
  
! @item @code{Ada.Strings.Bounded.Hash} `(A.4.9)'
  
  This package provides a generic hash function for bounded strings
  
! @item @code{Ada.Strings.Bounded.Hash_Case_Insensitive} `(A.4.9)'
  
  This package provides a generic hash function for bounded strings that
  converts the string to be hashed to lower case.
  
! @item @code{Ada.Strings.Bounded.Less_Case_Insensitive} `(A.4.10)'
  
  This package provides a comparison function for bounded strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.Fixed} `(A.4.3)'
  
  This package provides facilities for handling fixed length strings.
  
! @item @code{Ada.Strings.Fixed.Equal_Case_Insensitive} `(A.4.10)'
  
  This package provides an equality function for fixed strings that compares
  the strings after converting both to lower case.
  
! @item @code{Ada.Strings.Fixed.Hash_Case_Insensitive} `(A.4.9)'
  
  This package provides a case insensitive hash function for fixed strings that
  converts the string to lower case before computing the hash.
  
! @item @code{Ada.Strings.Fixed.Less_Case_Insensitive} `(A.4.10)'
  
  This package provides a comparison function for fixed strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.Hash} `(A.4.9)'
  
  This package provides a hash function for strings.
  
! @item @code{Ada.Strings.Hash_Case_Insensitive} `(A.4.9)'
  
  This package provides a hash function for strings that is case insensitive.
  The string is converted to lower case before computing the hash.
  
! @item @code{Ada.Strings.Less_Case_Insensitive} `(A.4.10)'
  
  This package provides a comparison function for\strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.Maps} `(A.4.2)'
  
  This package provides facilities for handling character mappings and
  arbitrarily defined subsets of characters.  For instance it is useful in
  defining specialized translation tables.
  
! @item @code{Ada.Strings.Maps.Constants} `(A.4.6)'
  
  This package provides a standard set of predefined mappings and
  predefined character sets.  For example, the standard upper to lower case
*************** characters, including extended character
*** 21264,21325 ****
  into account.  You should use the mappings in this package (rather than
  adding 32 yourself) to do case mappings.
  
! @item @code{Ada.Strings.Unbounded} @emph{(A.4.5)}
  
  This package provides facilities for handling variable length
  strings.  The unbounded model allows arbitrary length strings, but
  requires the use of dynamic allocation and finalization.
  
! @item @code{Ada.Strings.Unbounded.Equal_Case_Insensitive} @emph{(A.4.10)}
  
  Provides case-insensitive comparisons of unbounded strings
  
! @item @code{Ada.Strings.Unbounded.Hash} @emph{(A.4.9)}
  
  This package provides a generic hash function for unbounded strings
  
! @item @code{Ada.Strings.Unbounded.Hash_Case_Insensitive} @emph{(A.4.9)}
  
  This package provides a generic hash function for unbounded strings that
  converts the string to be hashed to lower case.
  
! @item @code{Ada.Strings.Unbounded.Less_Case_Insensitive} @emph{(A.4.10)}
  
  This package provides a comparison function for unbounded strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.UTF_Encoding} @emph{(A.4.11)}
  
  This package provides basic definitions for dealing with UTF-encoded strings.
  
! @item @code{Ada.Strings.UTF_Encoding.Conversions} @emph{(A.4.11)}
  
  This package provides conversion functions for UTF-encoded strings.
  @end table
  
! @code{Ada.Strings.UTF_Encoding.Strings} @emph{(A.4.11)}
  
! @code{Ada.Strings.UTF_Encoding.Wide_Strings} @emph{(A.4.11)}
  
  
  @table @asis
  
! @item @code{Ada.Strings.UTF_Encoding.Wide_Wide_Strings} @emph{(A.4.11)}
  
  These packages provide facilities for handling UTF encodings for
  Strings, Wide_Strings and Wide_Wide_Strings.
  @end table
  
! @code{Ada.Strings.Wide_Bounded} @emph{(A.4.7)}
  
! @code{Ada.Strings.Wide_Fixed} @emph{(A.4.7)}
  
! @code{Ada.Strings.Wide_Maps} @emph{(A.4.7)}
  
  
  @table @asis
  
! @item @code{Ada.Strings.Wide_Unbounded} @emph{(A.4.7)}
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
--- 21237,21298 ----
  into account.  You should use the mappings in this package (rather than
  adding 32 yourself) to do case mappings.
  
! @item @code{Ada.Strings.Unbounded} `(A.4.5)'
  
  This package provides facilities for handling variable length
  strings.  The unbounded model allows arbitrary length strings, but
  requires the use of dynamic allocation and finalization.
  
! @item @code{Ada.Strings.Unbounded.Equal_Case_Insensitive} `(A.4.10)'
  
  Provides case-insensitive comparisons of unbounded strings
  
! @item @code{Ada.Strings.Unbounded.Hash} `(A.4.9)'
  
  This package provides a generic hash function for unbounded strings
  
! @item @code{Ada.Strings.Unbounded.Hash_Case_Insensitive} `(A.4.9)'
  
  This package provides a generic hash function for unbounded strings that
  converts the string to be hashed to lower case.
  
! @item @code{Ada.Strings.Unbounded.Less_Case_Insensitive} `(A.4.10)'
  
  This package provides a comparison function for unbounded strings that works
  in a case insensitive manner by converting to lower case before the comparison.
  
! @item @code{Ada.Strings.UTF_Encoding} `(A.4.11)'
  
  This package provides basic definitions for dealing with UTF-encoded strings.
  
! @item @code{Ada.Strings.UTF_Encoding.Conversions} `(A.4.11)'
  
  This package provides conversion functions for UTF-encoded strings.
  @end table
  
! @code{Ada.Strings.UTF_Encoding.Strings} `(A.4.11)'
  
! @code{Ada.Strings.UTF_Encoding.Wide_Strings} `(A.4.11)'
  
  
  @table @asis
  
! @item @code{Ada.Strings.UTF_Encoding.Wide_Wide_Strings} `(A.4.11)'
  
  These packages provide facilities for handling UTF encodings for
  Strings, Wide_Strings and Wide_Wide_Strings.
  @end table
  
! @code{Ada.Strings.Wide_Bounded} `(A.4.7)'
  
! @code{Ada.Strings.Wide_Fixed} `(A.4.7)'
  
! @code{Ada.Strings.Wide_Maps} `(A.4.7)'
  
  
  @table @asis
  
! @item @code{Ada.Strings.Wide_Unbounded} `(A.4.7)'
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
*************** packages without @code{Wide_} in the nam
*** 21327,21359 ****
  and @code{Character}. Versions of all the child packages are available.
  @end table
  
! @code{Ada.Strings.Wide_Wide_Bounded} @emph{(A.4.7)}
  
! @code{Ada.Strings.Wide_Wide_Fixed} @emph{(A.4.7)}
  
! @code{Ada.Strings.Wide_Wide_Maps} @emph{(A.4.7)}
  
  
  @table @asis
  
! @item @code{Ada.Strings.Wide_Wide_Unbounded} @emph{(A.4.7)}
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
  @code{Wide_Wide_String} and @code{Wide_Wide_Character} instead
  of @code{String} and @code{Character}.
  
! @item @code{Ada.Synchronous_Barriers} @emph{(D.10.1)}
  
  This package provides facilities for synchronizing tasks at a low level
  with barriers.
  
! @item @code{Ada.Synchronous_Task_Control} @emph{(D.10)}
  
  This package provides some standard facilities for controlling task
  communication in a synchronous manner.
  
! @item @code{Ada.Synchronous_Task_Control.EDF} @emph{(D.10)}
  
  Not implemented in GNAT.
  
--- 21300,21332 ----
  and @code{Character}. Versions of all the child packages are available.
  @end table
  
! @code{Ada.Strings.Wide_Wide_Bounded} `(A.4.7)'
  
! @code{Ada.Strings.Wide_Wide_Fixed} `(A.4.7)'
  
! @code{Ada.Strings.Wide_Wide_Maps} `(A.4.7)'
  
  
  @table @asis
  
! @item @code{Ada.Strings.Wide_Wide_Unbounded} `(A.4.7)'
  
  These packages provide analogous capabilities to the corresponding
  packages without @code{Wide_} in the name, but operate with the types
  @code{Wide_Wide_String} and @code{Wide_Wide_Character} instead
  of @code{String} and @code{Character}.
  
! @item @code{Ada.Synchronous_Barriers} `(D.10.1)'
  
  This package provides facilities for synchronizing tasks at a low level
  with barriers.
  
! @item @code{Ada.Synchronous_Task_Control} `(D.10)'
  
  This package provides some standard facilities for controlling task
  communication in a synchronous manner.
  
! @item @code{Ada.Synchronous_Task_Control.EDF} `(D.10)'
  
  Not implemented in GNAT.
  
*************** Not implemented in GNAT.
*** 21362,21382 ****
  This package contains definitions for manipulation of the tags of tagged
  values.
  
! @item @code{Ada.Tags.Generic_Dispatching_Constructor} @emph{(3.9)}
  
  This package provides a way of constructing tagged class-wide values given
  only the tag value.
  
! @item @code{Ada.Task_Attributes} @emph{(C.7.2)}
  
  This package provides the capability of associating arbitrary
  task-specific data with separate tasks.
  
! @item @code{Ada.Task_Identifification} @emph{(C.7.1)}
  
  This package provides capabilities for task identification.
  
! @item @code{Ada.Task_Termination} @emph{(C.7.3)}
  
  This package provides control over task termination.
  
--- 21335,21355 ----
  This package contains definitions for manipulation of the tags of tagged
  values.
  
! @item @code{Ada.Tags.Generic_Dispatching_Constructor} `(3.9)'
  
  This package provides a way of constructing tagged class-wide values given
  only the tag value.
  
! @item @code{Ada.Task_Attributes} `(C.7.2)'
  
  This package provides the capability of associating arbitrary
  task-specific data with separate tasks.
  
! @item @code{Ada.Task_Identification} `(C.7.1)'
  
  This package provides capabilities for task identification.
  
! @item @code{Ada.Task_Termination} `(C.7.3)'
  
  This package provides control over task termination.
  
*************** unchecked conversion nor Ada.Address_To_
*** 21540,21551 ****
  used in conjunction with pointers to unconstrained objects, since
  the bounds information cannot be handled correctly in this case.
  
! @item @code{Ada.Unchecked_Deallocation} @emph{(13.11.2)}
  
  This generic package allows explicit freeing of storage previously
  allocated by use of an allocator.
  
! @item @code{Ada.Wide_Text_IO} @emph{(A.11)}
  
  This package is similar to @code{Ada.Text_IO}, except that the external
  file supports wide character representations, and the internal types are
--- 21513,21524 ----
  used in conjunction with pointers to unconstrained objects, since
  the bounds information cannot be handled correctly in this case.
  
! @item @code{Ada.Unchecked_Deallocation} `(13.11.2)'
  
  This generic package allows explicit freeing of storage previously
  allocated by use of an allocator.
  
! @item @code{Ada.Wide_Text_IO} `(A.11)'
  
  This package is similar to @code{Ada.Text_IO}, except that the external
  file supports wide character representations, and the internal types are
*************** file supports wide character representat
*** 21553,21559 ****
  and @code{String}. The corresponding set of nested packages and child
  packages are defined.
  
! @item @code{Ada.Wide_Wide_Text_IO} @emph{(A.11)}
  
  This package is similar to @code{Ada.Text_IO}, except that the external
  file supports wide character representations, and the internal types are
--- 21526,21532 ----
  and @code{String}. The corresponding set of nested packages and child
  packages are defined.
  
! @item @code{Ada.Wide_Wide_Text_IO} `(A.11)'
  
  This package is similar to @code{Ada.Text_IO}, except that the external
  file supports wide character representations, and the internal types are
*************** For packages in Interfaces and System, a
*** 21566,21572 ****
  available in GNAT, see the Ada 2012 RM for full details.
  
  @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
! @anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2a0}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2a1}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}
  @chapter The Implementation of Standard I/O
  
  
--- 21539,21545 ----
  available in GNAT, see the Ada 2012 RM for full details.
  
  @node The Implementation of Standard I/O,The GNAT Library,Standard Library Routines,Top
! @anchor{gnat_rm/the_implementation_of_standard_i_o doc}@anchor{2a1}@anchor{gnat_rm/the_implementation_of_standard_i_o id1}@anchor{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o the-implementation-of-standard-i-o}@anchor{f}
  @chapter The Implementation of Standard I/O
  
  
*************** these additional facilities are also des
*** 21618,21624 ****
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a2}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a3}
  @section Standard I/O Packages
  
  
--- 21591,21597 ----
  @end menu
  
  @node Standard I/O Packages,FORM Strings,,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id2}@anchor{2a3}@anchor{gnat_rm/the_implementation_of_standard_i_o standard-i-o-packages}@anchor{2a4}
  @section Standard I/O Packages
  
  
*************** flush the common I/O streams and in part
*** 21689,21695 ****
  elaborating the Ada code.
  
  @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2a4}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a5}
  @section FORM Strings
  
  
--- 21662,21668 ----
  elaborating the Ada code.
  
  @node FORM Strings,Direct_IO,Standard I/O Packages,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o form-strings}@anchor{2a5}@anchor{gnat_rm/the_implementation_of_standard_i_o id3}@anchor{2a6}
  @section FORM Strings
  
  
*************** unrecognized keyword appears in a form s
*** 21715,21721 ****
  and not considered invalid.
  
  @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2a6}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a7}
  @section Direct_IO
  
  
--- 21688,21694 ----
  and not considered invalid.
  
  @node Direct_IO,Sequential_IO,FORM Strings,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o direct-io}@anchor{2a7}@anchor{gnat_rm/the_implementation_of_standard_i_o id4}@anchor{2a8}
  @section Direct_IO
  
  
*************** There is no limit on the size of Direct_
*** 21735,21741 ****
  necessary to accommodate whatever records are written to the file.
  
  @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a8}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2a9}
  @section Sequential_IO
  
  
--- 21708,21714 ----
  necessary to accommodate whatever records are written to the file.
  
  @node Sequential_IO,Text_IO,Direct_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id5}@anchor{2a9}@anchor{gnat_rm/the_implementation_of_standard_i_o sequential-io}@anchor{2aa}
  @section Sequential_IO
  
  
*************** using Stream_IO, and this is the preferr
*** 21782,21788 ****
  above program fragment rewritten to use Stream_IO will work correctly.
  
  @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2aa}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2ab}
  @section Text_IO
  
  
--- 21755,21761 ----
  above program fragment rewritten to use Stream_IO will work correctly.
  
  @node Text_IO,Wide_Text_IO,Sequential_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id6}@anchor{2ab}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io}@anchor{2ac}
  @section Text_IO
  
  
*************** the file.
*** 21865,21871 ****
  @end menu
  
  @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ac}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ad}
  @subsection Stream Pointer Positioning
  
  
--- 21838,21844 ----
  @end menu
  
  @node Stream Pointer Positioning,Reading and Writing Non-Regular Files,,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id7}@anchor{2ad}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning}@anchor{2ae}
  @subsection Stream Pointer Positioning
  
  
*************** between two Ada files, then the differen
*** 21901,21907 ****
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2ae}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2af}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 21874,21880 ----
  situations.
  
  @node Reading and Writing Non-Regular Files,Get_Immediate,Stream Pointer Positioning,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id8}@anchor{2af}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files}@anchor{2b0}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** to read data past that end of
*** 21952,21958 ****
  file indication, until another end of file indication is entered.
  
  @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2b0}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2b1}
  @subsection Get_Immediate
  
  
--- 21925,21931 ----
  file indication, until another end of file indication is entered.
  
  @node Get_Immediate,Treating Text_IO Files as Streams,Reading and Writing Non-Regular Files,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o get-immediate}@anchor{2b1}@anchor{gnat_rm/the_implementation_of_standard_i_o id9}@anchor{2b2}
  @subsection Get_Immediate
  
  
*************** possible), it is undefined whether the F
*** 21970,21976 ****
  page mark.
  
  @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2b2}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b3}
  @subsection Treating Text_IO Files as Streams
  
  
--- 21943,21949 ----
  page mark.
  
  @node Treating Text_IO Files as Streams,Text_IO Extensions,Get_Immediate,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id10}@anchor{2b3}@anchor{gnat_rm/the_implementation_of_standard_i_o treating-text-io-files-as-streams}@anchor{2b4}
  @subsection Treating Text_IO Files as Streams
  
  
*************** skipped and the effect is similar to tha
*** 21986,21992 ****
  @code{Get_Immediate}.
  
  @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2b4}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b5}
  @subsection Text_IO Extensions
  
  
--- 21959,21965 ----
  @code{Get_Immediate}.
  
  @node Text_IO Extensions,Text_IO Facilities for Unbounded Strings,Treating Text_IO Files as Streams,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id11}@anchor{2b5}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-extensions}@anchor{2b6}
  @subsection Text_IO Extensions
  
  
*************** the string is to be read.
*** 22014,22020 ****
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b7}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
--- 21987,21993 ----
  @end itemize
  
  @node Text_IO Facilities for Unbounded Strings,,Text_IO Extensions,Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id12}@anchor{2b7}@anchor{gnat_rm/the_implementation_of_standard_i_o text-io-facilities-for-unbounded-strings}@anchor{2b8}
  @subsection Text_IO Facilities for Unbounded Strings
  
  
*************** files @code{a-szuzti.ads} and @code{a-sz
*** 22062,22068 ****
  @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
  
  @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b8}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2b9}
  @section Wide_Text_IO
  
  
--- 22035,22041 ----
  @code{Wide_Wide_Text_IO} functionality for unbounded wide wide strings.
  
  @node Wide_Text_IO,Wide_Wide_Text_IO,Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id13}@anchor{2b9}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-text-io}@anchor{2ba}
  @section Wide_Text_IO
  
  
*************** Encoding
*** 22090,22096 ****
  
  @item
  
! @emph{h}
  
  @tab
  
--- 22063,22069 ----
  
  @item
  
! `h'
  
  @tab
  
*************** Hex ESC encoding
*** 22098,22104 ****
  
  @item
  
! @emph{u}
  
  @tab
  
--- 22071,22077 ----
  
  @item
  
! `u'
  
  @tab
  
*************** Upper half encoding
*** 22106,22112 ****
  
  @item
  
! @emph{s}
  
  @tab
  
--- 22079,22085 ----
  
  @item
  
! `s'
  
  @tab
  
*************** Shift-JIS encoding
*** 22114,22120 ****
  
  @item
  
! @emph{e}
  
  @tab
  
--- 22087,22093 ----
  
  @item
  
! `e'
  
  @tab
  
*************** EUC Encoding
*** 22122,22128 ****
  
  @item
  
! @emph{8}
  
  @tab
  
--- 22095,22101 ----
  
  @item
  
! `8'
  
  @tab
  
*************** UTF-8 encoding
*** 22130,22136 ****
  
  @item
  
! @emph{b}
  
  @tab
  
--- 22103,22109 ----
  
  @item
  
! `b'
  
  @tab
  
*************** being brackets encoding if no coding met
*** 22153,22159 ****
  
  @table @asis
  
! @item @emph{Hex Coding}
  
  In this encoding, a wide character is represented by a five character
  sequence:
--- 22126,22132 ----
  
  @table @asis
  
! @item `Hex Coding'
  
  In this encoding, a wide character is represented by a five character
  sequence:
*************** example, ESC A345 is used to represent t
*** 22176,22182 ****
  
  @table @asis
  
! @item @emph{Upper Half Coding}
  
  The wide character with encoding 16#abcd#, where the upper bit is on
  (i.e., a is in the range 8-F) is represented as two bytes 16#ab# and
--- 22149,22155 ----
  
  @table @asis
  
! @item `Upper Half Coding'
  
  The wide character with encoding 16#abcd#, where the upper bit is on
  (i.e., a is in the range 8-F) is represented as two bytes 16#ab# and
*************** The wide character with encoding 16#abcd
*** 22184,22190 ****
  not required to be in the upper half.  This method can be also used for
  shift-JIS or EUC where the internal coding matches the external coding.
  
! @item @emph{Shift JIS Coding}
  
  A wide character is represented by a two character sequence 16#ab# and
  16#cd#, with the restrictions described for upper half encoding as
--- 22157,22163 ----
  not required to be in the upper half.  This method can be also used for
  shift-JIS or EUC where the internal coding matches the external coding.
  
! @item `Shift JIS Coding'
  
  A wide character is represented by a two character sequence 16#ab# and
  16#cd#, with the restrictions described for upper half encoding as
*************** character according to the standard algo
*** 22193,22199 ****
  conversion.  Only characters defined in the JIS code set table can be
  used with this encoding method.
  
! @item @emph{EUC Coding}
  
  A wide character is represented by a two character sequence 16#ab# and
  16#cd#, with both characters being in the upper half.  The internal
--- 22166,22172 ----
  conversion.  Only characters defined in the JIS code set table can be
  used with this encoding method.
  
! @item `EUC Coding'
  
  A wide character is represented by a two character sequence 16#ab# and
  16#cd#, with both characters being in the upper half.  The internal
*************** character code is the corresponding JIS
*** 22201,22207 ****
  encoding algorithm.  Only characters defined in the JIS code set table
  can be used with this encoding method.
  
! @item @emph{UTF-8 Coding}
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
--- 22174,22180 ----
  encoding algorithm.  Only characters defined in the JIS code set table
  can be used with this encoding method.
  
! @item `UTF-8 Coding'
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
*************** will all invalid UTF-8 sequences.)
*** 22231,22237 ****
  
  @table @asis
  
! @item @emph{Brackets Coding}
  
  In this encoding, a wide character is represented by the following eight
  character sequence:
--- 22204,22210 ----
  
  @table @asis
  
! @item `Brackets Coding'
  
  In this encoding, a wide character is represented by the following eight
  character sequence:
*************** input also causes Constraint_Error to be
*** 22309,22324 ****
  @end menu
  
  @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2ba}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2bb}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ab,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
! normal lower ASCII set (i.e., a character in the range:
  
  @example
  Wide_Character'Val (16#0080#) .. Wide_Character'Val (16#FFFF#)
--- 22282,22297 ----
  @end menu
  
  @node Stream Pointer Positioning<2>,Reading and Writing Non-Regular Files<2>,,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id14}@anchor{2bb}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-1}@anchor{2bc}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ac,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Text_IO.Look_Ahead} reads a character outside the
! normal lower ASCII set, i.e. a character in the range:
  
  @example
  Wide_Character'Val (16#0080#) .. Wide_Character'Val (16#FFFF#)
*************** to a normal program using @code{Wide_Tex
*** 22333,22339 ****
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bc}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2bd}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22306,22312 ----
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<2>,,Stream Pointer Positioning<2>,Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id15}@anchor{2bd}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-1}@anchor{2be}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22344,22350 ****
  it is possible to read beyond an end of file.
  
  @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2be}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2bf}
  @section Wide_Wide_Text_IO
  
  
--- 22317,22323 ----
  it is possible to read beyond an end of file.
  
  @node Wide_Wide_Text_IO,Stream_IO,Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id16}@anchor{2bf}@anchor{gnat_rm/the_implementation_of_standard_i_o wide-wide-text-io}@anchor{2c0}
  @section Wide_Wide_Text_IO
  
  
*************** Encoding
*** 22372,22378 ****
  
  @item
  
! @emph{h}
  
  @tab
  
--- 22345,22351 ----
  
  @item
  
! `h'
  
  @tab
  
*************** Hex ESC encoding
*** 22380,22386 ****
  
  @item
  
! @emph{u}
  
  @tab
  
--- 22353,22359 ----
  
  @item
  
! `u'
  
  @tab
  
*************** Upper half encoding
*** 22388,22394 ****
  
  @item
  
! @emph{s}
  
  @tab
  
--- 22361,22367 ----
  
  @item
  
! `s'
  
  @tab
  
*************** Shift-JIS encoding
*** 22396,22402 ****
  
  @item
  
! @emph{e}
  
  @tab
  
--- 22369,22375 ----
  
  @item
  
! `e'
  
  @tab
  
*************** EUC Encoding
*** 22404,22410 ****
  
  @item
  
! @emph{8}
  
  @tab
  
--- 22377,22383 ----
  
  @item
  
! `8'
  
  @tab
  
*************** UTF-8 encoding
*** 22412,22418 ****
  
  @item
  
! @emph{b}
  
  @tab
  
--- 22385,22391 ----
  
  @item
  
! `b'
  
  @tab
  
*************** being brackets encoding if no coding met
*** 22435,22441 ****
  
  @table @asis
  
! @item @emph{UTF-8 Coding}
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
--- 22408,22414 ----
  
  @table @asis
  
! @item `UTF-8 Coding'
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
*************** characters.
*** 22463,22469 ****
  
  @table @asis
  
! @item @emph{Brackets Coding}
  
  In this encoding, a wide wide character is represented by the following eight
  character sequence if is in wide character range
--- 22436,22442 ----
  
  @table @asis
  
! @item `Brackets Coding'
  
  In this encoding, a wide wide character is represented by the following eight
  character sequence if is in wide character range
*************** input also causes Constraint_Error to be
*** 22513,22528 ****
  @end menu
  
  @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2c0}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2c1}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ab,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
! normal lower ASCII set (i.e., a character in the range:
  
  @example
  Wide_Wide_Character'Val (16#0080#) .. Wide_Wide_Character'Val (16#10FFFF#)
--- 22486,22501 ----
  @end menu
  
  @node Stream Pointer Positioning<3>,Reading and Writing Non-Regular Files<3>,,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id17}@anchor{2c1}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-pointer-positioning-2}@anchor{2c2}
  @subsection Stream Pointer Positioning
  
  
  @code{Ada.Wide_Wide_Text_IO} is similar to @code{Ada.Text_IO} in its handling
! of stream pointer positioning (@ref{2ac,,Text_IO}).  There is one additional
  case:
  
  If @code{Ada.Wide_Wide_Text_IO.Look_Ahead} reads a character outside the
! normal lower ASCII set, i.e. a character in the range:
  
  @example
  Wide_Wide_Character'Val (16#0080#) .. Wide_Wide_Character'Val (16#10FFFF#)
*************** to a normal program using @code{Wide_Wid
*** 22537,22543 ****
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2c2}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c3}
  @subsection Reading and Writing Non-Regular Files
  
  
--- 22510,22516 ----
  can be observed if the wide text file shares a stream with another file.
  
  @node Reading and Writing Non-Regular Files<3>,,Stream Pointer Positioning<3>,Wide_Wide_Text_IO
! @anchor{gnat_rm/the_implementation_of_standard_i_o id18}@anchor{2c3}@anchor{gnat_rm/the_implementation_of_standard_i_o reading-and-writing-non-regular-files-2}@anchor{2c4}
  @subsection Reading and Writing Non-Regular Files
  
  
*************** treated as data characters), and @code{E
*** 22548,22554 ****
  it is possible to read beyond an end of file.
  
  @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2c4}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c5}
  @section Stream_IO
  
  
--- 22521,22527 ----
  it is possible to read beyond an end of file.
  
  @node Stream_IO,Text Translation,Wide_Wide_Text_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id19}@anchor{2c5}@anchor{gnat_rm/the_implementation_of_standard_i_o stream-io}@anchor{2c6}
  @section Stream_IO
  
  
*************** manner described for stream attributes.
*** 22570,22576 ****
  @end itemize
  
  @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2c6}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c7}
  @section Text Translation
  
  
--- 22543,22549 ----
  @end itemize
  
  @node Text Translation,Shared Files,Stream_IO,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id20}@anchor{2c7}@anchor{gnat_rm/the_implementation_of_standard_i_o text-translation}@anchor{2c8}
  @section Text Translation
  
  
*************** mode. (corresponds to_O_U16TEXT).
*** 22604,22610 ****
  @end itemize
  
  @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2c8}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2c9}
  @section Shared Files
  
  
--- 22577,22583 ----
  @end itemize
  
  @node Shared Files,Filenames encoding,Text Translation,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id21}@anchor{2c9}@anchor{gnat_rm/the_implementation_of_standard_i_o shared-files}@anchor{2ca}
  @section Shared Files
  
  
*************** heterogeneous input-output.  Although th
*** 22667,22673 ****
  for this purpose (using the stream attributes)
  
  @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2ca}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2cb}
  @section Filenames encoding
  
  
--- 22640,22646 ----
  for this purpose (using the stream attributes)
  
  @node Filenames encoding,File content encoding,Shared Files,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o filenames-encoding}@anchor{2cb}@anchor{gnat_rm/the_implementation_of_standard_i_o id22}@anchor{2cc}
  @section Filenames encoding
  
  
*************** variable. And if not set @code{utf8} is
*** 22693,22703 ****
  
  @table @asis
  
! @item @emph{CP_ACP}
  
  The current system Windows ANSI code page.
  
! @item @emph{CP_UTF8}
  
  UTF-8 encoding
  @end table
--- 22666,22676 ----
  
  @table @asis
  
! @item `CP_ACP'
  
  The current system Windows ANSI code page.
  
! @item `CP_UTF8'
  
  UTF-8 encoding
  @end table
*************** platform. On the other Operating Systems
*** 22707,22713 ****
  UTF-8 natively.
  
  @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2cc}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2cd}
  @section File content encoding
  
  
--- 22680,22686 ----
  UTF-8 natively.
  
  @node File content encoding,Open Modes,Filenames encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o file-content-encoding}@anchor{2cd}@anchor{gnat_rm/the_implementation_of_standard_i_o id23}@anchor{2ce}
  @section File content encoding
  
  
*************** The possible values are those supported
*** 22720,22738 ****
  
  @table @asis
  
! @item @emph{TEXT}
  
  Translated text mode
  
! @item @emph{WTEXT}
  
  Translated unicode encoding
  
! @item @emph{U16TEXT}
  
  Unicode 16-bit encoding
  
! @item @emph{U8TEXT}
  
  Unicode 8-bit encoding
  @end table
--- 22693,22711 ----
  
  @table @asis
  
! @item `TEXT'
  
  Translated text mode
  
! @item `WTEXT'
  
  Translated unicode encoding
  
! @item `U16TEXT'
  
  Unicode 16-bit encoding
  
! @item `U8TEXT'
  
  Unicode 8-bit encoding
  @end table
*************** Unicode 8-bit encoding
*** 22740,22746 ****
  This encoding is only supported on the Windows platform.
  
  @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2ce}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2cf}
  @section Open Modes
  
  
--- 22713,22719 ----
  This encoding is only supported on the Windows platform.
  
  @node Open Modes,Operations on C Streams,File content encoding,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id24}@anchor{2cf}@anchor{gnat_rm/the_implementation_of_standard_i_o open-modes}@anchor{2d0}
  @section Open Modes
  
  
*************** using the mode shown in the following ta
*** 22761,22771 ****
  
  @tab
  
! @strong{OPEN}
  
  @tab
  
! @strong{CREATE}
  
  @item
  
--- 22734,22744 ----
  
  @tab
  
! `OPEN'
  
  @tab
  
! `CREATE'
  
  @item
  
*************** subsequently requires switching from rea
*** 22843,22849 ****
  then the file is reopened in @code{r+} mode to permit the required operation.
  
  @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2d0}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2d1}
  @section Operations on C Streams
  
  
--- 22816,22822 ----
  then the file is reopened in @code{r+} mode to permit the required operation.
  
  @node Operations on C Streams,Interfacing to C Streams,Open Modes,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id25}@anchor{2d1}@anchor{gnat_rm/the_implementation_of_standard_i_o operations-on-c-streams}@anchor{2d2}
  @section Operations on C Streams
  
  
*************** end Interfaces.C_Streams;
*** 23003,23009 ****
  @end example
  
  @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d2}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2d3}
  @section Interfacing to C Streams
  
  
--- 22976,22982 ----
  @end example
  
  @node Interfacing to C Streams,,Operations on C Streams,The Implementation of Standard I/O
! @anchor{gnat_rm/the_implementation_of_standard_i_o id26}@anchor{2d3}@anchor{gnat_rm/the_implementation_of_standard_i_o interfacing-to-c-streams}@anchor{2d4}
  @section Interfacing to C Streams
  
  
*************** imported from a C program, allowing an A
*** 23096,23102 ****
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library doc}@anchor{2d4}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d5}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}
  @chapter The GNAT Library
  
  
--- 23069,23075 ----
  existing C file.
  
  @node The GNAT Library,Interfacing to Other Languages,The Implementation of Standard I/O,Top
! @anchor{gnat_rm/the_gnat_library doc}@anchor{2d5}@anchor{gnat_rm/the_gnat_library id1}@anchor{2d6}@anchor{gnat_rm/the_gnat_library the-gnat-library}@anchor{10}
  @chapter The GNAT Library
  
  
*************** of GNAT, and will generate a warning mes
*** 23132,23150 ****
  @menu
  * Ada.Characters.Latin_9 (a-chlat9.ads): Ada Characters Latin_9 a-chlat9 ads. 
  * Ada.Characters.Wide_Latin_1 (a-cwila1.ads): Ada Characters Wide_Latin_1 a-cwila1 ads. 
! * Ada.Characters.Wide_Latin_9 (a-cwila1.ads): Ada Characters Wide_Latin_9 a-cwila1 ads. 
  * Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads): Ada Characters Wide_Wide_Latin_1 a-chzla1 ads. 
  * Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads): Ada Characters Wide_Wide_Latin_9 a-chzla9 ads. 
- * Ada.Containers.Formal_Doubly_Linked_Lists (a-cfdlli.ads): Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads. 
- * Ada.Containers.Formal_Hashed_Maps (a-cfhama.ads): Ada Containers Formal_Hashed_Maps a-cfhama ads. 
- * Ada.Containers.Formal_Hashed_Sets (a-cfhase.ads): Ada Containers Formal_Hashed_Sets a-cfhase ads. 
- * Ada.Containers.Formal_Ordered_Maps (a-cforma.ads): Ada Containers Formal_Ordered_Maps a-cforma ads. 
- * Ada.Containers.Formal_Ordered_Sets (a-cforse.ads): Ada Containers Formal_Ordered_Sets a-cforse ads. 
- * Ada.Containers.Formal_Vectors (a-cofove.ads): Ada Containers Formal_Vectors a-cofove ads. 
- * Ada.Containers.Formal_Indefinite_Vectors (a-cfinve.ads): Ada Containers Formal_Indefinite_Vectors a-cfinve ads. 
- * Ada.Containers.Functional_Vectors (a-cofuve.ads): Ada Containers Functional_Vectors a-cofuve ads. 
- * Ada.Containers.Functional_Sets (a-cofuse.ads): Ada Containers Functional_Sets a-cofuse ads. 
- * Ada.Containers.Functional_Maps (a-cofuma.ads): Ada Containers Functional_Maps a-cofuma ads. 
  * Ada.Containers.Bounded_Holders (a-coboho.ads): Ada Containers Bounded_Holders a-coboho ads. 
  * Ada.Command_Line.Environment (a-colien.ads): Ada Command_Line Environment a-colien ads. 
  * Ada.Command_Line.Remove (a-colire.ads): Ada Command_Line Remove a-colire ads. 
--- 23105,23113 ----
  @menu
  * Ada.Characters.Latin_9 (a-chlat9.ads): Ada Characters Latin_9 a-chlat9 ads. 
  * Ada.Characters.Wide_Latin_1 (a-cwila1.ads): Ada Characters Wide_Latin_1 a-cwila1 ads. 
! * Ada.Characters.Wide_Latin_9 (a-cwila9.ads): Ada Characters Wide_Latin_9 a-cwila9 ads. 
  * Ada.Characters.Wide_Wide_Latin_1 (a-chzla1.ads): Ada Characters Wide_Wide_Latin_1 a-chzla1 ads. 
  * Ada.Characters.Wide_Wide_Latin_9 (a-chzla9.ads): Ada Characters Wide_Wide_Latin_9 a-chzla9 ads. 
  * Ada.Containers.Bounded_Holders (a-coboho.ads): Ada Containers Bounded_Holders a-coboho ads. 
  * Ada.Command_Line.Environment (a-colien.ads): Ada Command_Line Environment a-colien ads. 
  * Ada.Command_Line.Remove (a-colire.ads): Ada Command_Line Remove a-colire ads. 
*************** of GNAT, and will generate a warning mes
*** 23174,23179 ****
--- 23137,23143 ----
  * GNAT.Altivec.Vector_Views (g-alvevi.ads): GNAT Altivec Vector_Views g-alvevi ads. 
  * GNAT.Array_Split (g-arrspl.ads): GNAT Array_Split g-arrspl ads. 
  * GNAT.AWK (g-awk.ads): GNAT AWK g-awk ads. 
+ * GNAT.Binary_Search (g-binsea.ads): GNAT Binary_Search g-binsea ads. 
  * GNAT.Bind_Environment (g-binenv.ads): GNAT Bind_Environment g-binenv ads. 
  * GNAT.Branch_Prediction (g-brapre.ads): GNAT Branch_Prediction g-brapre ads. 
  * GNAT.Bounded_Buffers (g-boubuf.ads): GNAT Bounded_Buffers g-boubuf ads. 
*************** of GNAT, and will generate a warning mes
*** 23211,23216 ****
--- 23175,23181 ----
  * GNAT.Expect.TTY (g-exptty.ads): GNAT Expect TTY g-exptty ads. 
  * GNAT.Float_Control (g-flocon.ads): GNAT Float_Control g-flocon ads. 
  * GNAT.Formatted_String (g-forstr.ads): GNAT Formatted_String g-forstr ads. 
+ * GNAT.Generic_Fast_Math_Functions (g-gfmafu.ads): GNAT Generic_Fast_Math_Functions g-gfmafu ads. 
  * GNAT.Heap_Sort (g-heasor.ads): GNAT Heap_Sort g-heasor ads. 
  * GNAT.Heap_Sort_A (g-hesora.ads): GNAT Heap_Sort_A g-hesora ads. 
  * GNAT.Heap_Sort_G (g-hesorg.ads): GNAT Heap_Sort_G g-hesorg ads. 
*************** of GNAT, and will generate a warning mes
*** 23259,23266 ****
  * GNAT.Threads (g-thread.ads): GNAT Threads g-thread ads. 
  * GNAT.Traceback (g-traceb.ads): GNAT Traceback g-traceb ads. 
  * GNAT.Traceback.Symbolic (g-trasym.ads): GNAT Traceback Symbolic g-trasym ads. 
! * GNAT.UTF_32 (g-table.ads): GNAT UTF_32 g-table ads. 
! * GNAT.Wide_Spelling_Checker (g-u3spch.ads): GNAT Wide_Spelling_Checker g-u3spch ads. 
  * GNAT.Wide_Spelling_Checker (g-wispch.ads): GNAT Wide_Spelling_Checker g-wispch ads. 
  * GNAT.Wide_String_Split (g-wistsp.ads): GNAT Wide_String_Split g-wistsp ads. 
  * GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads): GNAT Wide_Wide_Spelling_Checker g-zspche ads. 
--- 23224,23231 ----
  * GNAT.Threads (g-thread.ads): GNAT Threads g-thread ads. 
  * GNAT.Traceback (g-traceb.ads): GNAT Traceback g-traceb ads. 
  * GNAT.Traceback.Symbolic (g-trasym.ads): GNAT Traceback Symbolic g-trasym ads. 
! * GNAT.UTF_32 (g-utf_32.ads): GNAT UTF_32 g-utf_32 ads. 
! * GNAT.UTF_32_Spelling_Checker (g-u3spch.ads): GNAT UTF_32_Spelling_Checker g-u3spch ads. 
  * GNAT.Wide_Spelling_Checker (g-wispch.ads): GNAT Wide_Spelling_Checker g-wispch ads. 
  * GNAT.Wide_String_Split (g-wistsp.ads): GNAT Wide_String_Split g-wistsp ads. 
  * GNAT.Wide_Wide_Spelling_Checker (g-zspche.ads): GNAT Wide_Wide_Spelling_Checker g-zspche ads. 
*************** of GNAT, and will generate a warning mes
*** 23290,23296 ****
  @end menu
  
  @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d6}@anchor{gnat_rm/the_gnat_library id2}@anchor{2d7}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
--- 23255,23261 ----
  @end menu
  
  @node Ada Characters Latin_9 a-chlat9 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-latin-9-a-chlat9-ads}@anchor{2d7}@anchor{gnat_rm/the_gnat_library id2}@anchor{2d8}
  @section @code{Ada.Characters.Latin_9} (@code{a-chlat9.ads})
  
  
*************** of GNAT, and will generate a warning mes
*** 23301,23313 ****
  This child of @code{Ada.Characters}
  provides a set of definitions corresponding to those in the
  RM-defined package @code{Ada.Characters.Latin_1} but with the
! few modifications required for @code{Latin-9}
  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila1 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2d8}@anchor{gnat_rm/the_gnat_library id3}@anchor{2d9}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
--- 23266,23278 ----
  This child of @code{Ada.Characters}
  provides a set of definitions corresponding to those in the
  RM-defined package @code{Ada.Characters.Latin_1} but with the
! few modifications required for @code{Latin-9}.
  The provision of such a package
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Latin_1 a-cwila1 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Latin_9 a-chlat9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-1-a-cwila1-ads}@anchor{2d9}@anchor{gnat_rm/the_gnat_library id3}@anchor{2da}
  @section @code{Ada.Characters.Wide_Latin_1} (@code{a-cwila1.ads})
  
  
*************** instead of @code{Character}.  The provis
*** 23323,23334 ****
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Latin_9 a-cwila1 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila1-ads}@anchor{2da}@anchor{gnat_rm/the_gnat_library id4}@anchor{2db}
! @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila1.ads})
  
  
! @geindex Ada.Characters.Wide_Latin_9 (a-cwila1.ads)
  
  @geindex Latin_9 constants for Wide_Character
  
--- 23288,23299 ----
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Latin_9 a-cwila9 ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Latin_1 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-latin-9-a-cwila9-ads}@anchor{2db}@anchor{gnat_rm/the_gnat_library id4}@anchor{2dc}
! @section @code{Ada.Characters.Wide_Latin_9} (@code{a-cwila9.ads})
  
  
! @geindex Ada.Characters.Wide_Latin_9 (a-cwila9.ads)
  
  @geindex Latin_9 constants for Wide_Character
  
*************** instead of @code{Character}.  The provis
*** 23340,23347 ****
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2dc}@anchor{gnat_rm/the_gnat_library id5}@anchor{2dd}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
--- 23305,23312 ----
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Characters Wide_Latin_9 a-cwila9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-1-a-chzla1-ads}@anchor{2dd}@anchor{gnat_rm/the_gnat_library id5}@anchor{2de}
  @section @code{Ada.Characters.Wide_Wide_Latin_1} (@code{a-chzla1.ads})
  
  
*************** instead of @code{Character}.  The provis
*** 23357,23364 ****
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2de}@anchor{gnat_rm/the_gnat_library id6}@anchor{2df}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
--- 23322,23329 ----
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,Ada Containers Bounded_Holders a-coboho ads,Ada Characters Wide_Wide_Latin_1 a-chzla1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-characters-wide-wide-latin-9-a-chzla9-ads}@anchor{2df}@anchor{gnat_rm/the_gnat_library id6}@anchor{2e0}
  @section @code{Ada.Characters.Wide_Wide_Latin_9} (@code{a-chzla9.ads})
  
  
*************** instead of @code{Character}.  The provis
*** 23374,23580 ****
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-doubly-linked-lists-a-cfdlli-ads}@anchor{2e0}@anchor{gnat_rm/the_gnat_library id7}@anchor{2e1}
! @section @code{Ada.Containers.Formal_Doubly_Linked_Lists} (@code{a-cfdlli.ads})
! 
! 
! @geindex Ada.Containers.Formal_Doubly_Linked_Lists (a-cfdlli.ads)
! 
! @geindex Formal container for doubly linked lists
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for doubly linked lists, meant to facilitate formal
! verification of code using such containers. The specification of this
! unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Formal_Hashed_Maps a-cfhama ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Doubly_Linked_Lists a-cfdlli ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-maps-a-cfhama-ads}@anchor{2e2}@anchor{gnat_rm/the_gnat_library id8}@anchor{2e3}
! @section @code{Ada.Containers.Formal_Hashed_Maps} (@code{a-cfhama.ads})
! 
! 
! @geindex Ada.Containers.Formal_Hashed_Maps (a-cfhama.ads)
! 
! @geindex Formal container for hashed maps
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for hashed maps, meant to facilitate formal
! verification of code using such containers. The specification of this
! unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Formal_Hashed_Sets a-cfhase ads,Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Hashed_Maps a-cfhama ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-hashed-sets-a-cfhase-ads}@anchor{2e4}@anchor{gnat_rm/the_gnat_library id9}@anchor{2e5}
! @section @code{Ada.Containers.Formal_Hashed_Sets} (@code{a-cfhase.ads})
! 
! 
! @geindex Ada.Containers.Formal_Hashed_Sets (a-cfhase.ads)
! 
! @geindex Formal container for hashed sets
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for hashed sets, meant to facilitate formal
! verification of code using such containers. The specification of this
! unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Formal_Ordered_Maps a-cforma ads,Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Hashed_Sets a-cfhase ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-maps-a-cforma-ads}@anchor{2e6}@anchor{gnat_rm/the_gnat_library id10}@anchor{2e7}
! @section @code{Ada.Containers.Formal_Ordered_Maps} (@code{a-cforma.ads})
! 
! 
! @geindex Ada.Containers.Formal_Ordered_Maps (a-cforma.ads)
! 
! @geindex Formal container for ordered maps
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for ordered maps, meant to facilitate formal
! verification of code using such containers. The specification of this
! unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Formal_Ordered_Sets a-cforse ads,Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Ordered_Maps a-cforma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-ordered-sets-a-cforse-ads}@anchor{2e8}@anchor{gnat_rm/the_gnat_library id11}@anchor{2e9}
! @section @code{Ada.Containers.Formal_Ordered_Sets} (@code{a-cforse.ads})
! 
! 
! @geindex Ada.Containers.Formal_Ordered_Sets (a-cforse.ads)
! 
! @geindex Formal container for ordered sets
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for ordered sets, meant to facilitate formal
! verification of code using such containers. The specification of this
! unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Formal_Vectors a-cofove ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Formal_Ordered_Sets a-cforse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-vectors-a-cofove-ads}@anchor{2ea}@anchor{gnat_rm/the_gnat_library id12}@anchor{2eb}
! @section @code{Ada.Containers.Formal_Vectors} (@code{a-cofove.ads})
! 
! 
! @geindex Ada.Containers.Formal_Vectors (a-cofove.ads)
! 
! @geindex Formal container for vectors
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for vectors, meant to facilitate formal
! verification of code using such containers. The specification of this
! unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Formal_Indefinite_Vectors a-cfinve ads,Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Formal_Vectors a-cofove ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-formal-indefinite-vectors-a-cfinve-ads}@anchor{2ec}@anchor{gnat_rm/the_gnat_library id13}@anchor{2ed}
! @section @code{Ada.Containers.Formal_Indefinite_Vectors} (@code{a-cfinve.ads})
! 
! 
! @geindex Ada.Containers.Formal_Indefinite_Vectors (a-cfinve.ads)
! 
! @geindex Formal container for vectors
! 
! This child of @code{Ada.Containers} defines a modified version of the
! Ada 2005 container for vectors of indefinite elements, meant to
! facilitate formal verification of code using such containers. The
! specification of this unit is compatible with SPARK 2014.
! 
! Note that although this container was designed with formal verification
! in mind, it may well be generally useful in that it is a simplified more
! efficient version than the one defined in the standard. In particular it
! does not have the complex overhead required to detect cursor tampering.
! 
! @node Ada Containers Functional_Vectors a-cofuve ads,Ada Containers Functional_Sets a-cofuse ads,Ada Containers Formal_Indefinite_Vectors a-cfinve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-functional-vectors-a-cofuve-ads}@anchor{2ee}@anchor{gnat_rm/the_gnat_library id14}@anchor{2ef}
! @section @code{Ada.Containers.Functional_Vectors} (@code{a-cofuve.ads})
! 
! 
! @geindex Ada.Containers.Functional_Vectors (a-cofuve.ads)
! 
! @geindex Functional vectors
! 
! This child of @code{Ada.Containers} defines immutable vectors. These
! containers are unbounded and may contain indefinite elements. Furthermore, to
! be usable in every context, they are neither controlled nor limited. As they
! are functional, that is, no primitives are provided which would allow modifying
! an existing container, these containers can still be used safely.
! 
! Their API features functions creating new containers from existing ones.
! As a consequence, these containers are highly inefficient. They are also
! memory consuming, as the allocated memory is not reclaimed when the container
! is no longer referenced. Thus, they should in general be used in ghost code
! and annotations, so that they can be removed from the final executable. The
! specification of this unit is compatible with SPARK 2014.
! 
! @node Ada Containers Functional_Sets a-cofuse ads,Ada Containers Functional_Maps a-cofuma ads,Ada Containers Functional_Vectors a-cofuve ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-functional-sets-a-cofuse-ads}@anchor{2f0}@anchor{gnat_rm/the_gnat_library id15}@anchor{2f1}
! @section @code{Ada.Containers.Functional_Sets} (@code{a-cofuse.ads})
! 
! 
! @geindex Ada.Containers.Functional_Sets (a-cofuse.ads)
! 
! @geindex Functional sets
! 
! This child of @code{Ada.Containers} defines immutable sets. These containers are
! unbounded and may contain indefinite elements. Furthermore, to be usable in
! every context, they are neither controlled nor limited. As they are functional,
! that is, no primitives are provided which would allow modifying an existing
! container, these containers can still be used safely.
! 
! Their API features functions creating new containers from existing ones.
! As a consequence, these containers are highly inefficient. They are also
! memory consuming, as the allocated memory is not reclaimed when the container
! is no longer referenced. Thus, they should in general be used in ghost code
! and annotations, so that they can be removed from the final executable. The
! specification of this unit is compatible with SPARK 2014.
! 
! @node Ada Containers Functional_Maps a-cofuma ads,Ada Containers Bounded_Holders a-coboho ads,Ada Containers Functional_Sets a-cofuse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-functional-maps-a-cofuma-ads}@anchor{2f2}@anchor{gnat_rm/the_gnat_library id16}@anchor{2f3}
! @section @code{Ada.Containers.Functional_Maps} (@code{a-cofuma.ads})
! 
! 
! @geindex Ada.Containers.Functional_Maps (a-cofuma.ads)
! 
! @geindex Functional maps
! 
! This child of @code{Ada.Containers} defines immutable maps. These containers are
! unbounded and may contain indefinite elements. Furthermore, to be usable in
! every context, they are neither controlled nor limited. As they are functional,
! that is, no primitives are provided which would allow modifying an existing
! container, these containers can still be used safely.
! 
! Their API features functions creating new containers from existing ones.
! As a consequence, these containers are highly inefficient. They are also
! memory consuming, as the allocated memory is not reclaimed when the container
! is no longer referenced. Thus, they should in general be used in ghost code
! and annotations, so that they can be removed from the final executable. The
! specification of this unit is compatible with SPARK 2014.
! 
! @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Containers Functional_Maps a-cofuma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2f4}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f5}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
--- 23339,23346 ----
  is specifically authorized by the Ada Reference Manual
  (RM A.3.3(27)).
  
! @node Ada Containers Bounded_Holders a-coboho ads,Ada Command_Line Environment a-colien ads,Ada Characters Wide_Wide_Latin_9 a-chzla9 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-containers-bounded-holders-a-coboho-ads}@anchor{2e1}@anchor{gnat_rm/the_gnat_library id7}@anchor{2e2}
  @section @code{Ada.Containers.Bounded_Holders} (@code{a-coboho.ads})
  
  
*************** This child of @code{Ada.Containers} defi
*** 23586,23592 ****
  Indefinite_Holders that avoids heap allocation.
  
  @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2f6}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f7}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
--- 23352,23358 ----
  Indefinite_Holders that avoids heap allocation.
  
  @node Ada Command_Line Environment a-colien ads,Ada Command_Line Remove a-colire ads,Ada Containers Bounded_Holders a-coboho ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-environment-a-colien-ads}@anchor{2e3}@anchor{gnat_rm/the_gnat_library id8}@anchor{2e4}
  @section @code{Ada.Command_Line.Environment} (@code{a-colien.ads})
  
  
*************** provides a mechanism for obtaining envir
*** 23599,23605 ****
  where this concept makes sense.
  
  @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2f8}@anchor{gnat_rm/the_gnat_library id19}@anchor{2f9}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
--- 23365,23371 ----
  where this concept makes sense.
  
  @node Ada Command_Line Remove a-colire ads,Ada Command_Line Response_File a-clrefi ads,Ada Command_Line Environment a-colien ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-remove-a-colire-ads}@anchor{2e5}@anchor{gnat_rm/the_gnat_library id9}@anchor{2e6}
  @section @code{Ada.Command_Line.Remove} (@code{a-colire.ads})
  
  
*************** where this concept makes sense.
*** 23613,23623 ****
  This child of @code{Ada.Command_Line}
  provides a mechanism for logically removing
  arguments from the argument list.  Once removed, an argument is not visible
! to further calls on the subprograms in @code{Ada.Command_Line} will not
! see the removed argument.
  
  @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2fa}@anchor{gnat_rm/the_gnat_library id20}@anchor{2fb}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
--- 23379,23389 ----
  This child of @code{Ada.Command_Line}
  provides a mechanism for logically removing
  arguments from the argument list.  Once removed, an argument is not visible
! to further calls to the subprograms in @code{Ada.Command_Line}. These calls
! will not see the removed argument.
  
  @node Ada Command_Line Response_File a-clrefi ads,Ada Direct_IO C_Streams a-diocst ads,Ada Command_Line Remove a-colire ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-command-line-response-file-a-clrefi-ads}@anchor{2e7}@anchor{gnat_rm/the_gnat_library id10}@anchor{2e8}
  @section @code{Ada.Command_Line.Response_File} (@code{a-clrefi.ads})
  
  
*************** Using a response file allow passing a se
*** 23637,23643 ****
  than the maximum allowed by the system on the command line.
  
  @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2fc}@anchor{gnat_rm/the_gnat_library id21}@anchor{2fd}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
--- 23403,23409 ----
  than the maximum allowed by the system on the command line.
  
  @node Ada Direct_IO C_Streams a-diocst ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Command_Line Response_File a-clrefi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-direct-io-c-streams-a-diocst-ads}@anchor{2e9}@anchor{gnat_rm/the_gnat_library id11}@anchor{2ea}
  @section @code{Ada.Direct_IO.C_Streams} (@code{a-diocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23652,23658 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2fe}@anchor{gnat_rm/the_gnat_library id22}@anchor{2ff}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
--- 23418,23424 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Exceptions Is_Null_Occurrence a-einuoc ads,Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Direct_IO C_Streams a-diocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-is-null-occurrence-a-einuoc-ads}@anchor{2eb}@anchor{gnat_rm/the_gnat_library id12}@anchor{2ec}
  @section @code{Ada.Exceptions.Is_Null_Occurrence} (@code{a-einuoc.ads})
  
  
*************** exception occurrence (@code{Null_Occurre
*** 23666,23672 ****
  an exception.
  
  @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{300}@anchor{gnat_rm/the_gnat_library id23}@anchor{301}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
--- 23432,23438 ----
  an exception.
  
  @node Ada Exceptions Last_Chance_Handler a-elchha ads,Ada Exceptions Traceback a-exctra ads,Ada Exceptions Is_Null_Occurrence a-einuoc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-last-chance-handler-a-elchha-ads}@anchor{2ed}@anchor{gnat_rm/the_gnat_library id13}@anchor{2ee}
  @section @code{Ada.Exceptions.Last_Chance_Handler} (@code{a-elchha.ads})
  
  
*************** exceptions (hence the name last chance),
*** 23680,23686 ****
  terminating the program. Note that this subprogram never returns.
  
  @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{302}@anchor{gnat_rm/the_gnat_library id24}@anchor{303}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
--- 23446,23452 ----
  terminating the program. Note that this subprogram never returns.
  
  @node Ada Exceptions Traceback a-exctra ads,Ada Sequential_IO C_Streams a-siocst ads,Ada Exceptions Last_Chance_Handler a-elchha ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-exceptions-traceback-a-exctra-ads}@anchor{2ef}@anchor{gnat_rm/the_gnat_library id14}@anchor{2f0}
  @section @code{Ada.Exceptions.Traceback} (@code{a-exctra.ads})
  
  
*************** give a traceback array of addresses base
*** 23693,23699 ****
  occurrence.
  
  @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{304}@anchor{gnat_rm/the_gnat_library id25}@anchor{305}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
--- 23459,23465 ----
  occurrence.
  
  @node Ada Sequential_IO C_Streams a-siocst ads,Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Exceptions Traceback a-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-sequential-io-c-streams-a-siocst-ads}@anchor{2f1}@anchor{gnat_rm/the_gnat_library id15}@anchor{2f2}
  @section @code{Ada.Sequential_IO.C_Streams} (@code{a-siocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23708,23714 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{306}@anchor{gnat_rm/the_gnat_library id26}@anchor{307}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
--- 23474,23480 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Streams Stream_IO C_Streams a-ssicst ads,Ada Strings Unbounded Text_IO a-suteio ads,Ada Sequential_IO C_Streams a-siocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-streams-stream-io-c-streams-a-ssicst-ads}@anchor{2f3}@anchor{gnat_rm/the_gnat_library id16}@anchor{2f4}
  @section @code{Ada.Streams.Stream_IO.C_Streams} (@code{a-ssicst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23723,23729 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{308}@anchor{gnat_rm/the_gnat_library id27}@anchor{309}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
--- 23489,23495 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Strings Unbounded Text_IO a-suteio ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Streams Stream_IO C_Streams a-ssicst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-unbounded-text-io-a-suteio-ads}@anchor{2f5}@anchor{gnat_rm/the_gnat_library id17}@anchor{2f6}
  @section @code{Ada.Strings.Unbounded.Text_IO} (@code{a-suteio.ads})
  
  
*************** strings, avoiding the necessity for an i
*** 23740,23746 ****
  with ordinary strings.
  
  @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{30a}@anchor{gnat_rm/the_gnat_library id28}@anchor{30b}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
--- 23506,23512 ----
  with ordinary strings.
  
  @node Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Strings Unbounded Text_IO a-suteio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-unbounded-wide-text-io-a-swuwti-ads}@anchor{2f7}@anchor{gnat_rm/the_gnat_library id18}@anchor{2f8}
  @section @code{Ada.Strings.Wide_Unbounded.Wide_Text_IO} (@code{a-swuwti.ads})
  
  
*************** wide strings, avoiding the necessity for
*** 23757,23763 ****
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{30c}@anchor{gnat_rm/the_gnat_library id29}@anchor{30d}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
--- 23523,23529 ----
  with ordinary wide strings.
  
  @node Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,Ada Task_Initialization a-tasini ads,Ada Strings Wide_Unbounded Wide_Text_IO a-swuwti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-strings-wide-wide-unbounded-wide-wide-text-io-a-szuzti-ads}@anchor{2f9}@anchor{gnat_rm/the_gnat_library id19}@anchor{2fa}
  @section @code{Ada.Strings.Wide_Wide_Unbounded.Wide_Wide_Text_IO} (@code{a-szuzti.ads})
  
  
*************** wide wide strings, avoiding the necessit
*** 23774,23780 ****
  with ordinary wide wide strings.
  
  @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{30e}@anchor{gnat_rm/the_gnat_library id30}@anchor{30f}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
--- 23540,23546 ----
  with ordinary wide wide strings.
  
  @node Ada Task_Initialization a-tasini ads,Ada Text_IO C_Streams a-tiocst ads,Ada Strings Wide_Wide_Unbounded Wide_Wide_Text_IO a-szuzti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-task-initialization-a-tasini-ads}@anchor{2fb}@anchor{gnat_rm/the_gnat_library id20}@anchor{2fc}
  @section @code{Ada.Task_Initialization} (@code{a-tasini.ads})
  
  
*************** parameterless procedures. Note that such
*** 23786,23792 ****
  those tasks activated after the handler is set.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{310}@anchor{gnat_rm/the_gnat_library id31}@anchor{311}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
--- 23552,23558 ----
  those tasks activated after the handler is set.
  
  @node Ada Text_IO C_Streams a-tiocst ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Task_Initialization a-tasini ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-c-streams-a-tiocst-ads}@anchor{2fd}@anchor{gnat_rm/the_gnat_library id21}@anchor{2fe}
  @section @code{Ada.Text_IO.C_Streams} (@code{a-tiocst.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23801,23807 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{312}@anchor{gnat_rm/the_gnat_library id32}@anchor{313}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
--- 23567,23573 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Text_IO Reset_Standard_Files a-tirsfi ads,Ada Wide_Characters Unicode a-wichun ads,Ada Text_IO C_Streams a-tiocst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-text-io-reset-standard-files-a-tirsfi-ads}@anchor{2ff}@anchor{gnat_rm/the_gnat_library id22}@anchor{300}
  @section @code{Ada.Text_IO.Reset_Standard_Files} (@code{a-tirsfi.ads})
  
  
*************** execution (for example a standard input
*** 23816,23822 ****
  interactive).
  
  @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{314}@anchor{gnat_rm/the_gnat_library id33}@anchor{315}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
--- 23582,23588 ----
  interactive).
  
  @node Ada Wide_Characters Unicode a-wichun ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Text_IO Reset_Standard_Files a-tirsfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-characters-unicode-a-wichun-ads}@anchor{301}@anchor{gnat_rm/the_gnat_library id23}@anchor{302}
  @section @code{Ada.Wide_Characters.Unicode} (@code{a-wichun.ads})
  
  
*************** This package provides subprograms that a
*** 23829,23835 ****
  Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{316}@anchor{gnat_rm/the_gnat_library id34}@anchor{317}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
--- 23595,23601 ----
  Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Text_IO C_Streams a-wtcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Characters Unicode a-wichun ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-c-streams-a-wtcstr-ads}@anchor{303}@anchor{gnat_rm/the_gnat_library id24}@anchor{304}
  @section @code{Ada.Wide_Text_IO.C_Streams} (@code{a-wtcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23844,23850 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{318}@anchor{gnat_rm/the_gnat_library id35}@anchor{319}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
--- 23610,23616 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Text_IO C_Streams a-wtcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-text-io-reset-standard-files-a-wrstfi-ads}@anchor{305}@anchor{gnat_rm/the_gnat_library id25}@anchor{306}
  @section @code{Ada.Wide_Text_IO.Reset_Standard_Files} (@code{a-wrstfi.ads})
  
  
*************** execution (for example a standard input
*** 23859,23865 ****
  interactive).
  
  @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{31a}@anchor{gnat_rm/the_gnat_library id36}@anchor{31b}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
--- 23625,23631 ----
  interactive).
  
  @node Ada Wide_Wide_Characters Unicode a-zchuni ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Text_IO Reset_Standard_Files a-wrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-characters-unicode-a-zchuni-ads}@anchor{307}@anchor{gnat_rm/the_gnat_library id26}@anchor{308}
  @section @code{Ada.Wide_Wide_Characters.Unicode} (@code{a-zchuni.ads})
  
  
*************** This package provides subprograms that a
*** 23872,23878 ****
  Wide_Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{31c}@anchor{gnat_rm/the_gnat_library id37}@anchor{31d}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
--- 23638,23644 ----
  Wide_Wide_Character values according to Unicode categories.
  
  @node Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,Ada Wide_Wide_Characters Unicode a-zchuni ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-c-streams-a-ztcstr-ads}@anchor{309}@anchor{gnat_rm/the_gnat_library id27}@anchor{30a}
  @section @code{Ada.Wide_Wide_Text_IO.C_Streams} (@code{a-ztcstr.ads})
  
  
*************** extracted from a file opened on the Ada
*** 23887,23893 ****
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{31e}@anchor{gnat_rm/the_gnat_library id38}@anchor{31f}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
--- 23653,23659 ----
  can be constructed from a stream opened on the C side.
  
  @node Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,GNAT Altivec g-altive ads,Ada Wide_Wide_Text_IO C_Streams a-ztcstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library ada-wide-wide-text-io-reset-standard-files-a-zrstfi-ads}@anchor{30b}@anchor{gnat_rm/the_gnat_library id28}@anchor{30c}
  @section @code{Ada.Wide_Wide_Text_IO.Reset_Standard_Files} (@code{a-zrstfi.ads})
  
  
*************** change during execution (for example a s
*** 23902,23908 ****
  redefined to be interactive).
  
  @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{320}@anchor{gnat_rm/the_gnat_library id39}@anchor{321}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
--- 23668,23674 ----
  redefined to be interactive).
  
  @node GNAT Altivec g-altive ads,GNAT Altivec Conversions g-altcon ads,Ada Wide_Wide_Text_IO Reset_Standard_Files a-zrstfi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-g-altive-ads}@anchor{30d}@anchor{gnat_rm/the_gnat_library id29}@anchor{30e}
  @section @code{GNAT.Altivec} (@code{g-altive.ads})
  
  
*************** definitions of constants and types commo
*** 23915,23921 ****
  binding.
  
  @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{322}@anchor{gnat_rm/the_gnat_library id40}@anchor{323}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
--- 23681,23687 ----
  binding.
  
  @node GNAT Altivec Conversions g-altcon ads,GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec g-altive ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-conversions-g-altcon-ads}@anchor{30f}@anchor{gnat_rm/the_gnat_library id30}@anchor{310}
  @section @code{GNAT.Altivec.Conversions} (@code{g-altcon.ads})
  
  
*************** binding.
*** 23926,23932 ****
  This package provides the Vector/View conversion routines.
  
  @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{324}@anchor{gnat_rm/the_gnat_library id41}@anchor{325}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
--- 23692,23698 ----
  This package provides the Vector/View conversion routines.
  
  @node GNAT Altivec Vector_Operations g-alveop ads,GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Conversions g-altcon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-operations-g-alveop-ads}@anchor{311}@anchor{gnat_rm/the_gnat_library id31}@anchor{312}
  @section @code{GNAT.Altivec.Vector_Operations} (@code{g-alveop.ads})
  
  
*************** library. The hard binding is provided as
*** 23940,23946 ****
  is common to both bindings.
  
  @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{326}@anchor{gnat_rm/the_gnat_library id42}@anchor{327}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
--- 23706,23712 ----
  is common to both bindings.
  
  @node GNAT Altivec Vector_Types g-alvety ads,GNAT Altivec Vector_Views g-alvevi ads,GNAT Altivec Vector_Operations g-alveop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-types-g-alvety-ads}@anchor{313}@anchor{gnat_rm/the_gnat_library id32}@anchor{314}
  @section @code{GNAT.Altivec.Vector_Types} (@code{g-alvety.ads})
  
  
*************** This package exposes the various vector
*** 23952,23958 ****
  to AltiVec facilities.
  
  @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{328}@anchor{gnat_rm/the_gnat_library id43}@anchor{329}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
--- 23718,23724 ----
  to AltiVec facilities.
  
  @node GNAT Altivec Vector_Views g-alvevi ads,GNAT Array_Split g-arrspl ads,GNAT Altivec Vector_Types g-alvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-altivec-vector-views-g-alvevi-ads}@anchor{315}@anchor{gnat_rm/the_gnat_library id33}@anchor{316}
  @section @code{GNAT.Altivec.Vector_Views} (@code{g-alvevi.ads})
  
  
*************** vector elements and provides a simple wa
*** 23967,23973 ****
  objects.
  
  @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{32a}@anchor{gnat_rm/the_gnat_library id44}@anchor{32b}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
--- 23733,23739 ----
  objects.
  
  @node GNAT Array_Split g-arrspl ads,GNAT AWK g-awk ads,GNAT Altivec Vector_Views g-alvevi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-array-split-g-arrspl-ads}@anchor{317}@anchor{gnat_rm/the_gnat_library id34}@anchor{318}
  @section @code{GNAT.Array_Split} (@code{g-arrspl.ads})
  
  
*************** Useful array-manipulation routines: give
*** 23979,23986 ****
  an array wherever the separators appear, and provide direct access
  to the resulting slices.
  
! @node GNAT AWK g-awk ads,GNAT Bind_Environment g-binenv ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{32c}@anchor{gnat_rm/the_gnat_library id45}@anchor{32d}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
--- 23745,23752 ----
  an array wherever the separators appear, and provide direct access
  to the resulting slices.
  
! @node GNAT AWK g-awk ads,GNAT Binary_Search g-binsea ads,GNAT Array_Split g-arrspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-awk-g-awk-ads}@anchor{319}@anchor{gnat_rm/the_gnat_library id35}@anchor{31a}
  @section @code{GNAT.AWK} (@code{g-awk.ads})
  
  
*************** Provides AWK-like parsing functions, wit
*** 23994,24001 ****
  or more files containing formatted data.  The file is viewed as a database
  where each record is a line and a field is a data element in this line.
  
! @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{32e}@anchor{gnat_rm/the_gnat_library id46}@anchor{32f}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
--- 23760,23779 ----
  or more files containing formatted data.  The file is viewed as a database
  where each record is a line and a field is a data element in this line.
  
! @node GNAT Binary_Search g-binsea ads,GNAT Bind_Environment g-binenv ads,GNAT AWK g-awk ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-binary-search-g-binsea-ads}@anchor{31b}@anchor{gnat_rm/the_gnat_library id36}@anchor{31c}
! @section @code{GNAT.Binary_Search} (@code{g-binsea.ads})
! 
! 
! @geindex GNAT.Binary_Search (g-binsea.ads)
! 
! @geindex Binary search
! 
! Allow binary search of a sorted array (or of an array-like container;
! the generic does not reference the array directly).
! 
! @node GNAT Bind_Environment g-binenv ads,GNAT Branch_Prediction g-brapre ads,GNAT Binary_Search g-binsea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bind-environment-g-binenv-ads}@anchor{31d}@anchor{gnat_rm/the_gnat_library id37}@anchor{31e}
  @section @code{GNAT.Bind_Environment} (@code{g-binenv.ads})
  
  
*************** These associations can be specified usin
*** 24008,24014 ****
  line switch.
  
  @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{330}@anchor{gnat_rm/the_gnat_library id47}@anchor{331}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
--- 23786,23792 ----
  line switch.
  
  @node GNAT Branch_Prediction g-brapre ads,GNAT Bounded_Buffers g-boubuf ads,GNAT Bind_Environment g-binenv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-branch-prediction-g-brapre-ads}@anchor{31f}@anchor{gnat_rm/the_gnat_library id38}@anchor{320}
  @section @code{GNAT.Branch_Prediction} (@code{g-brapre.ads})
  
  
*************** line switch.
*** 24019,24025 ****
  Provides routines giving hints to the branch predictor of the code generator.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{332}@anchor{gnat_rm/the_gnat_library id48}@anchor{333}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
--- 23797,23803 ----
  Provides routines giving hints to the branch predictor of the code generator.
  
  @node GNAT Bounded_Buffers g-boubuf ads,GNAT Bounded_Mailboxes g-boumai ads,GNAT Branch_Prediction g-brapre ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-buffers-g-boubuf-ads}@anchor{321}@anchor{gnat_rm/the_gnat_library id39}@anchor{322}
  @section @code{GNAT.Bounded_Buffers} (@code{g-boubuf.ads})
  
  
*************** useful directly or as parts of the imple
*** 24034,24040 ****
  such as mailboxes.
  
  @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{334}@anchor{gnat_rm/the_gnat_library id49}@anchor{335}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
--- 23812,23818 ----
  such as mailboxes.
  
  @node GNAT Bounded_Mailboxes g-boumai ads,GNAT Bubble_Sort g-bubsor ads,GNAT Bounded_Buffers g-boubuf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bounded-mailboxes-g-boumai-ads}@anchor{323}@anchor{gnat_rm/the_gnat_library id40}@anchor{324}
  @section @code{GNAT.Bounded_Mailboxes} (@code{g-boumai.ads})
  
  
*************** such as mailboxes.
*** 24047,24053 ****
  Provides a thread-safe asynchronous intertask mailbox communication facility.
  
  @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{336}@anchor{gnat_rm/the_gnat_library id50}@anchor{337}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
--- 23825,23831 ----
  Provides a thread-safe asynchronous intertask mailbox communication facility.
  
  @node GNAT Bubble_Sort g-bubsor ads,GNAT Bubble_Sort_A g-busora ads,GNAT Bounded_Mailboxes g-boumai ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-bubsor-ads}@anchor{325}@anchor{gnat_rm/the_gnat_library id41}@anchor{326}
  @section @code{GNAT.Bubble_Sort} (@code{g-bubsor.ads})
  
  
*************** data items.  Exchange and comparison pro
*** 24062,24068 ****
  access-to-procedure values.
  
  @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{338}@anchor{gnat_rm/the_gnat_library id51}@anchor{339}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
--- 23840,23846 ----
  access-to-procedure values.
  
  @node GNAT Bubble_Sort_A g-busora ads,GNAT Bubble_Sort_G g-busorg ads,GNAT Bubble_Sort g-bubsor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-a-g-busora-ads}@anchor{327}@anchor{gnat_rm/the_gnat_library id42}@anchor{328}
  @section @code{GNAT.Bubble_Sort_A} (@code{g-busora.ads})
  
  
*************** access-to-procedure values. This is an o
*** 24078,24084 ****
  compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
  
  @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{33a}@anchor{gnat_rm/the_gnat_library id52}@anchor{33b}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
--- 23856,23862 ----
  compatibility. Usually @code{GNAT.Bubble_Sort} will be preferable.
  
  @node GNAT Bubble_Sort_G g-busorg ads,GNAT Byte_Order_Mark g-byorma ads,GNAT Bubble_Sort_A g-busora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-bubble-sort-g-g-busorg-ads}@anchor{329}@anchor{gnat_rm/the_gnat_library id43}@anchor{32a}
  @section @code{GNAT.Bubble_Sort_G} (@code{g-busorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24094,24100 ****
  multiple instantiations.
  
  @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{33c}@anchor{gnat_rm/the_gnat_library id53}@anchor{33d}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
--- 23872,23878 ----
  multiple instantiations.
  
  @node GNAT Byte_Order_Mark g-byorma ads,GNAT Byte_Swapping g-bytswa ads,GNAT Bubble_Sort_G g-busorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-order-mark-g-byorma-ads}@anchor{32b}@anchor{gnat_rm/the_gnat_library id44}@anchor{32c}
  @section @code{GNAT.Byte_Order_Mark} (@code{g-byorma.ads})
  
  
*************** the encoding of the string. The routine
*** 24110,24116 ****
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{33e}@anchor{gnat_rm/the_gnat_library id54}@anchor{33f}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
--- 23888,23894 ----
  sequences for various UCS input formats.
  
  @node GNAT Byte_Swapping g-bytswa ads,GNAT Calendar g-calend ads,GNAT Byte_Order_Mark g-byorma ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-byte-swapping-g-bytswa-ads}@anchor{32d}@anchor{gnat_rm/the_gnat_library id45}@anchor{32e}
  @section @code{GNAT.Byte_Swapping} (@code{g-bytswa.ads})
  
  
*************** General routines for swapping the bytes
*** 24124,24130 ****
  Machine-specific implementations are available in some cases.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{340}@anchor{gnat_rm/the_gnat_library id55}@anchor{341}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
--- 23902,23908 ----
  Machine-specific implementations are available in some cases.
  
  @node GNAT Calendar g-calend ads,GNAT Calendar Time_IO g-catiio ads,GNAT Byte_Swapping g-bytswa ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-g-calend-ads}@anchor{32f}@anchor{gnat_rm/the_gnat_library id46}@anchor{330}
  @section @code{GNAT.Calendar} (@code{g-calend.ads})
  
  
*************** Also provides conversion of @code{Ada.Ca
*** 24138,24144 ****
  C @code{timeval} format.
  
  @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{342}@anchor{gnat_rm/the_gnat_library id56}@anchor{343}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
--- 23916,23922 ----
  C @code{timeval} format.
  
  @node GNAT Calendar Time_IO g-catiio ads,GNAT CRC32 g-crc32 ads,GNAT Calendar g-calend ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-calendar-time-io-g-catiio-ads}@anchor{331}@anchor{gnat_rm/the_gnat_library id47}@anchor{332}
  @section @code{GNAT.Calendar.Time_IO} (@code{g-catiio.ads})
  
  
*************** C @code{timeval} format.
*** 24149,24155 ****
  @geindex GNAT.Calendar.Time_IO (g-catiio.ads)
  
  @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{344}@anchor{gnat_rm/the_gnat_library id57}@anchor{345}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
--- 23927,23933 ----
  @geindex GNAT.Calendar.Time_IO (g-catiio.ads)
  
  @node GNAT CRC32 g-crc32 ads,GNAT Case_Util g-casuti ads,GNAT Calendar Time_IO g-catiio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-crc32-g-crc32-ads}@anchor{333}@anchor{gnat_rm/the_gnat_library id48}@anchor{334}
  @section @code{GNAT.CRC32} (@code{g-crc32.ads})
  
  
*************** C @code{timeval} format.
*** 24161,24172 ****
  
  This package implements the CRC-32 algorithm.  For a full description
  of this algorithm see
! @emph{Computation of Cyclic Redundancy Checks via Table Look-Up},
  @cite{Communications of the ACM}, Vol. 31 No. 8, pp. 1008-1013,
  Aug. 1988.  Sarwate, D.V.
  
  @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{346}@anchor{gnat_rm/the_gnat_library id58}@anchor{347}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
--- 23939,23950 ----
  
  This package implements the CRC-32 algorithm.  For a full description
  of this algorithm see
! `Computation of Cyclic Redundancy Checks via Table Look-Up',
  @cite{Communications of the ACM}, Vol. 31 No. 8, pp. 1008-1013,
  Aug. 1988.  Sarwate, D.V.
  
  @node GNAT Case_Util g-casuti ads,GNAT CGI g-cgi ads,GNAT CRC32 g-crc32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-case-util-g-casuti-ads}@anchor{335}@anchor{gnat_rm/the_gnat_library id49}@anchor{336}
  @section @code{GNAT.Case_Util} (@code{g-casuti.ads})
  
  
*************** without the overhead of the full casing
*** 24181,24187 ****
  in @code{Ada.Characters.Handling}.
  
  @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{348}@anchor{gnat_rm/the_gnat_library id59}@anchor{349}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
--- 23959,23965 ----
  in @code{Ada.Characters.Handling}.
  
  @node GNAT CGI g-cgi ads,GNAT CGI Cookie g-cgicoo ads,GNAT Case_Util g-casuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-g-cgi-ads}@anchor{337}@anchor{gnat_rm/the_gnat_library id50}@anchor{338}
  @section @code{GNAT.CGI} (@code{g-cgi.ads})
  
  
*************** builds a table whose index is the key an
*** 24196,24202 ****
  with this table.
  
  @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{34a}@anchor{gnat_rm/the_gnat_library id60}@anchor{34b}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
--- 23974,23980 ----
  with this table.
  
  @node GNAT CGI Cookie g-cgicoo ads,GNAT CGI Debug g-cgideb ads,GNAT CGI g-cgi ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-cookie-g-cgicoo-ads}@anchor{339}@anchor{gnat_rm/the_gnat_library id51}@anchor{33a}
  @section @code{GNAT.CGI.Cookie} (@code{g-cgicoo.ads})
  
  
*************** Common Gateway Interface (CGI).  It expo
*** 24211,24217 ****
  cookies (piece of information kept in the Web client software).
  
  @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{34c}@anchor{gnat_rm/the_gnat_library id61}@anchor{34d}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
--- 23989,23995 ----
  cookies (piece of information kept in the Web client software).
  
  @node GNAT CGI Debug g-cgideb ads,GNAT Command_Line g-comlin ads,GNAT CGI Cookie g-cgicoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-cgi-debug-g-cgideb-ads}@anchor{33b}@anchor{gnat_rm/the_gnat_library id52}@anchor{33c}
  @section @code{GNAT.CGI.Debug} (@code{g-cgideb.ads})
  
  
*************** This is a package to help debugging CGI
*** 24223,24229 ****
  programs written in Ada.
  
  @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{34e}@anchor{gnat_rm/the_gnat_library id62}@anchor{34f}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
--- 24001,24007 ----
  programs written in Ada.
  
  @node GNAT Command_Line g-comlin ads,GNAT Compiler_Version g-comver ads,GNAT CGI Debug g-cgideb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-command-line-g-comlin-ads}@anchor{33d}@anchor{gnat_rm/the_gnat_library id53}@anchor{33e}
  @section @code{GNAT.Command_Line} (@code{g-comlin.ads})
  
  
*************** including the ability to scan for named
*** 24236,24242 ****
  and expand file names using wildcard notations.
  
  @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{350}@anchor{gnat_rm/the_gnat_library id63}@anchor{351}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
--- 24014,24020 ----
  and expand file names using wildcard notations.
  
  @node GNAT Compiler_Version g-comver ads,GNAT Ctrl_C g-ctrl_c ads,GNAT Command_Line g-comlin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-compiler-version-g-comver-ads}@anchor{33f}@anchor{gnat_rm/the_gnat_library id54}@anchor{340}
  @section @code{GNAT.Compiler_Version} (@code{g-comver.ads})
  
  
*************** of the compiler if a consistent tool set
*** 24254,24260 ****
  of a partition).
  
  @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{352}@anchor{gnat_rm/the_gnat_library id64}@anchor{353}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
--- 24032,24038 ----
  of a partition).
  
  @node GNAT Ctrl_C g-ctrl_c ads,GNAT Current_Exception g-curexc ads,GNAT Compiler_Version g-comver ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-ctrl-c-g-ctrl-c-ads}@anchor{341}@anchor{gnat_rm/the_gnat_library id55}@anchor{342}
  @section @code{GNAT.Ctrl_C} (@code{g-ctrl_c.ads})
  
  
*************** of a partition).
*** 24265,24271 ****
  Provides a simple interface to handle Ctrl-C keyboard events.
  
  @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{354}@anchor{gnat_rm/the_gnat_library id65}@anchor{355}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
--- 24043,24049 ----
  Provides a simple interface to handle Ctrl-C keyboard events.
  
  @node GNAT Current_Exception g-curexc ads,GNAT Debug_Pools g-debpoo ads,GNAT Ctrl_C g-ctrl_c ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-current-exception-g-curexc-ads}@anchor{343}@anchor{gnat_rm/the_gnat_library id56}@anchor{344}
  @section @code{GNAT.Current_Exception} (@code{g-curexc.ads})
  
  
*************** This is particularly useful in simulatin
*** 24282,24288 ****
  obtaining information about exceptions provided by Ada 83 compilers.
  
  @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{356}@anchor{gnat_rm/the_gnat_library id66}@anchor{357}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
--- 24060,24066 ----
  obtaining information about exceptions provided by Ada 83 compilers.
  
  @node GNAT Debug_Pools g-debpoo ads,GNAT Debug_Utilities g-debuti ads,GNAT Current_Exception g-curexc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-pools-g-debpoo-ads}@anchor{345}@anchor{gnat_rm/the_gnat_library id57}@anchor{346}
  @section @code{GNAT.Debug_Pools} (@code{g-debpoo.ads})
  
  
*************** obtaining information about exceptions p
*** 24294,24305 ****
  
  @geindex Memory corruption debugging
  
! Provide a debugging storage pools that helps tracking memory corruption
  problems.
  See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}.
  
  @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{358}@anchor{gnat_rm/the_gnat_library id67}@anchor{359}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
--- 24072,24083 ----
  
  @geindex Memory corruption debugging
  
! Provides a debugging storage pools that helps tracking memory corruption
  problems.
  See @code{The GNAT Debug_Pool Facility} section in the @cite{GNAT User’s Guide}.
  
  @node GNAT Debug_Utilities g-debuti ads,GNAT Decode_String g-decstr ads,GNAT Debug_Pools g-debpoo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-debug-utilities-g-debuti-ads}@anchor{347}@anchor{gnat_rm/the_gnat_library id58}@anchor{348}
  @section @code{GNAT.Debug_Utilities} (@code{g-debuti.ads})
  
  
*************** to and from string images of address val
*** 24312,24318 ****
  for hexadecimal literals.
  
  @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{35a}@anchor{gnat_rm/the_gnat_library id68}@anchor{35b}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
--- 24090,24096 ----
  for hexadecimal literals.
  
  @node GNAT Decode_String g-decstr ads,GNAT Decode_UTF8_String g-deutst ads,GNAT Debug_Utilities g-debuti ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-string-g-decstr-ads}@anchor{349}@anchor{gnat_rm/the_gnat_library id59}@anchor{34a}
  @section @code{GNAT.Decode_String} (@code{g-decstr.ads})
  
  
*************** Useful in conjunction with Unicode chara
*** 24336,24342 ****
  preinstantiation for UTF-8. See next entry.
  
  @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{35c}@anchor{gnat_rm/the_gnat_library id69}@anchor{35d}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
--- 24114,24120 ----
  preinstantiation for UTF-8. See next entry.
  
  @node GNAT Decode_UTF8_String g-deutst ads,GNAT Directory_Operations g-dirope ads,GNAT Decode_String g-decstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-decode-utf8-string-g-deutst-ads}@anchor{34b}@anchor{gnat_rm/the_gnat_library id60}@anchor{34c}
  @section @code{GNAT.Decode_UTF8_String} (@code{g-deutst.ads})
  
  
*************** preinstantiation for UTF-8. See next ent
*** 24357,24363 ****
  A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
  
  @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{35e}@anchor{gnat_rm/the_gnat_library id70}@anchor{35f}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
--- 24135,24141 ----
  A preinstantiation of GNAT.Decode_Strings for UTF-8 encoding.
  
  @node GNAT Directory_Operations g-dirope ads,GNAT Directory_Operations Iteration g-diopit ads,GNAT Decode_UTF8_String g-deutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-g-dirope-ads}@anchor{34d}@anchor{gnat_rm/the_gnat_library id61}@anchor{34e}
  @section @code{GNAT.Directory_Operations} (@code{g-dirope.ads})
  
  
*************** the current directory, making new direct
*** 24370,24376 ****
  directory.
  
  @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{360}@anchor{gnat_rm/the_gnat_library id71}@anchor{361}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
--- 24148,24154 ----
  directory.
  
  @node GNAT Directory_Operations Iteration g-diopit ads,GNAT Dynamic_HTables g-dynhta ads,GNAT Directory_Operations g-dirope ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-directory-operations-iteration-g-diopit-ads}@anchor{34f}@anchor{gnat_rm/the_gnat_library id62}@anchor{350}
  @section @code{GNAT.Directory_Operations.Iteration} (@code{g-diopit.ads})
  
  
*************** A child unit of GNAT.Directory_Operation
*** 24382,24388 ****
  for iterating through directories.
  
  @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{362}@anchor{gnat_rm/the_gnat_library id72}@anchor{363}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
--- 24160,24166 ----
  for iterating through directories.
  
  @node GNAT Dynamic_HTables g-dynhta ads,GNAT Dynamic_Tables g-dyntab ads,GNAT Directory_Operations Iteration g-diopit ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-htables-g-dynhta-ads}@anchor{351}@anchor{gnat_rm/the_gnat_library id63}@anchor{352}
  @section @code{GNAT.Dynamic_HTables} (@code{g-dynhta.ads})
  
  
*************** dynamic instances of the hash table, whi
*** 24400,24406 ****
  @code{GNAT.HTable} creates a single instance of the hash table.
  
  @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{364}@anchor{gnat_rm/the_gnat_library id73}@anchor{365}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
--- 24178,24184 ----
  @code{GNAT.HTable} creates a single instance of the hash table.
  
  @node GNAT Dynamic_Tables g-dyntab ads,GNAT Encode_String g-encstr ads,GNAT Dynamic_HTables g-dynhta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-dynamic-tables-g-dyntab-ads}@anchor{353}@anchor{gnat_rm/the_gnat_library id64}@anchor{354}
  @section @code{GNAT.Dynamic_Tables} (@code{g-dyntab.ads})
  
  
*************** dynamic instances of the table, while an
*** 24420,24426 ****
  @code{GNAT.Table} creates a single instance of the table type.
  
  @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{366}@anchor{gnat_rm/the_gnat_library id74}@anchor{367}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
--- 24198,24204 ----
  @code{GNAT.Table} creates a single instance of the table type.
  
  @node GNAT Encode_String g-encstr ads,GNAT Encode_UTF8_String g-enutst ads,GNAT Dynamic_Tables g-dyntab ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-string-g-encstr-ads}@anchor{355}@anchor{gnat_rm/the_gnat_library id65}@anchor{356}
  @section @code{GNAT.Encode_String} (@code{g-encstr.ads})
  
  
*************** encoding method. Useful in conjunction w
*** 24442,24448 ****
  Note there is a preinstantiation for UTF-8. See next entry.
  
  @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{368}@anchor{gnat_rm/the_gnat_library id75}@anchor{369}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
--- 24220,24226 ----
  Note there is a preinstantiation for UTF-8. See next entry.
  
  @node GNAT Encode_UTF8_String g-enutst ads,GNAT Exception_Actions g-excact ads,GNAT Encode_String g-encstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-encode-utf8-string-g-enutst-ads}@anchor{357}@anchor{gnat_rm/the_gnat_library id66}@anchor{358}
  @section @code{GNAT.Encode_UTF8_String} (@code{g-enutst.ads})
  
  
*************** Note there is a preinstantiation for UTF
*** 24463,24469 ****
  A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
  
  @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{36a}@anchor{gnat_rm/the_gnat_library id76}@anchor{36b}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
--- 24241,24247 ----
  A preinstantiation of GNAT.Encode_Strings for UTF-8 encoding.
  
  @node GNAT Exception_Actions g-excact ads,GNAT Exception_Traces g-exctra ads,GNAT Encode_UTF8_String g-enutst ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-actions-g-excact-ads}@anchor{359}@anchor{gnat_rm/the_gnat_library id67}@anchor{35a}
  @section @code{GNAT.Exception_Actions} (@code{g-excact.ads})
  
  
*************** for specific exceptions, or when any exc
*** 24476,24482 ****
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{36c}@anchor{gnat_rm/the_gnat_library id77}@anchor{36d}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
--- 24254,24260 ----
  can be used for instance to force a core dump to ease debugging.
  
  @node GNAT Exception_Traces g-exctra ads,GNAT Exceptions g-except ads,GNAT Exception_Actions g-excact ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exception-traces-g-exctra-ads}@anchor{35b}@anchor{gnat_rm/the_gnat_library id68}@anchor{35c}
  @section @code{GNAT.Exception_Traces} (@code{g-exctra.ads})
  
  
*************** Provides an interface allowing to contro
*** 24490,24496 ****
  occurrences.
  
  @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{36e}@anchor{gnat_rm/the_gnat_library id78}@anchor{36f}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
--- 24268,24274 ----
  occurrences.
  
  @node GNAT Exceptions g-except ads,GNAT Expect g-expect ads,GNAT Exception_Traces g-exctra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-exceptions-g-except-ads}@anchor{35d}@anchor{gnat_rm/the_gnat_library id69}@anchor{35e}
  @section @code{GNAT.Exceptions} (@code{g-except.ads})
  
  
*************** a message from a subprogram in a pure pa
*** 24507,24517 ****
  necessary types and subprograms are in @code{Ada.Exceptions}
  which is not a pure unit. @code{GNAT.Exceptions} provides a
  facility for getting around this limitation for a few
! predefined exceptions, and for example allow raising
  @code{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{370}@anchor{gnat_rm/the_gnat_library id79}@anchor{371}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
--- 24285,24295 ----
  necessary types and subprograms are in @code{Ada.Exceptions}
  which is not a pure unit. @code{GNAT.Exceptions} provides a
  facility for getting around this limitation for a few
! predefined exceptions, and for example allows raising
  @code{Constraint_Error} with a message from a pure subprogram.
  
  @node GNAT Expect g-expect ads,GNAT Expect TTY g-exptty ads,GNAT Exceptions g-except ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-g-expect-ads}@anchor{35f}@anchor{gnat_rm/the_gnat_library id70}@anchor{360}
  @section @code{GNAT.Expect} (@code{g-expect.ads})
  
  
*************** It is not implemented for cross ports, a
*** 24527,24533 ****
  implemented for VxWorks or LynxOS.
  
  @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{372}@anchor{gnat_rm/the_gnat_library id80}@anchor{373}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
--- 24305,24311 ----
  implemented for VxWorks or LynxOS.
  
  @node GNAT Expect TTY g-exptty ads,GNAT Float_Control g-flocon ads,GNAT Expect g-expect ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-expect-tty-g-exptty-ads}@anchor{361}@anchor{gnat_rm/the_gnat_library id71}@anchor{362}
  @section @code{GNAT.Expect.TTY} (@code{g-exptty.ads})
  
  
*************** ports. It is not implemented for cross p
*** 24539,24545 ****
  in particular is not implemented for VxWorks or LynxOS.
  
  @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{374}@anchor{gnat_rm/the_gnat_library id81}@anchor{375}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
--- 24317,24323 ----
  in particular is not implemented for VxWorks or LynxOS.
  
  @node GNAT Float_Control g-flocon ads,GNAT Formatted_String g-forstr ads,GNAT Expect TTY g-exptty ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-float-control-g-flocon-ads}@anchor{363}@anchor{gnat_rm/the_gnat_library id72}@anchor{364}
  @section @code{GNAT.Float_Control} (@code{g-flocon.ads})
  
  
*************** mode required for correct semantic opera
*** 24552,24559 ****
  library calls may cause this mode to be modified, and the Reset procedure
  in this package can be used to reestablish the required mode.
  
! @node GNAT Formatted_String g-forstr ads,GNAT Heap_Sort g-heasor ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{376}@anchor{gnat_rm/the_gnat_library id82}@anchor{377}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
--- 24330,24337 ----
  library calls may cause this mode to be modified, and the Reset procedure
  in this package can be used to reestablish the required mode.
  
! @node GNAT Formatted_String g-forstr ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Float_Control g-flocon ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-formatted-string-g-forstr-ads}@anchor{365}@anchor{gnat_rm/the_gnat_library id73}@anchor{366}
  @section @code{GNAT.Formatted_String} (@code{g-forstr.ads})
  
  
*************** in this package can be used to reestabli
*** 24562,24574 ****
  @geindex Formatted String
  
  Provides support for C/C++ printf() formatted strings. The format is
! copied from the printf() routine and should therefore gives identical
  output. Some generic routines are provided to be able to use types
  derived from Integer, Float or enumerations as values for the
  formatted string.
  
! @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{378}@anchor{gnat_rm/the_gnat_library id83}@anchor{379}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
--- 24340,24370 ----
  @geindex Formatted String
  
  Provides support for C/C++ printf() formatted strings. The format is
! copied from the printf() routine and should therefore give identical
  output. Some generic routines are provided to be able to use types
  derived from Integer, Float or enumerations as values for the
  formatted string.
  
! @node GNAT Generic_Fast_Math_Functions g-gfmafu ads,GNAT Heap_Sort g-heasor ads,GNAT Formatted_String g-forstr ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-generic-fast-math-functions-g-gfmafu-ads}@anchor{367}@anchor{gnat_rm/the_gnat_library id74}@anchor{368}
! @section @code{GNAT.Generic_Fast_Math_Functions} (@code{g-gfmafu.ads})
! 
! 
! @geindex GNAT.Generic_Fast_Math_Functions (g-gfmafu.ads)
! 
! @geindex Mathematical functions
! 
! Provides direct access to the underlying implementation of the common
! mathematical functions, generally from the system mathematical library.
! This differs from @code{Ada.Numerics.Generic_Elementary_Functions} in that
! the implementation may deviate from the semantics specified for these
! functions in the Reference Manual, for example @code{Numerics.Argument_Error}
! is not raised. On selected platforms, some of these functions may also
! have a vector implementation that can be automatically used by the
! compiler when auto-vectorization is enabled.
! 
! @node GNAT Heap_Sort g-heasor ads,GNAT Heap_Sort_A g-hesora ads,GNAT Generic_Fast_Math_Functions g-gfmafu ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-heasor-ads}@anchor{369}@anchor{gnat_rm/the_gnat_library id75}@anchor{36a}
  @section @code{GNAT.Heap_Sort} (@code{g-heasor.ads})
  
  
*************** access-to-procedure values.  The algorit
*** 24582,24588 ****
  that performs approximately N*log(N) comparisons in the worst case.
  
  @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{37a}@anchor{gnat_rm/the_gnat_library id84}@anchor{37b}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
--- 24378,24384 ----
  that performs approximately N*log(N) comparisons in the worst case.
  
  @node GNAT Heap_Sort_A g-hesora ads,GNAT Heap_Sort_G g-hesorg ads,GNAT Heap_Sort g-heasor ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-a-g-hesora-ads}@anchor{36b}@anchor{gnat_rm/the_gnat_library id76}@anchor{36c}
  @section @code{GNAT.Heap_Sort_A} (@code{g-hesora.ads})
  
  
*************** This differs from @code{GNAT.Heap_Sort}
*** 24598,24604 ****
  interface, but may be slightly more efficient.
  
  @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{37c}@anchor{gnat_rm/the_gnat_library id85}@anchor{37d}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
--- 24394,24400 ----
  interface, but may be slightly more efficient.
  
  @node GNAT Heap_Sort_G g-hesorg ads,GNAT HTable g-htable ads,GNAT Heap_Sort_A g-hesora ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-heap-sort-g-g-hesorg-ads}@anchor{36d}@anchor{gnat_rm/the_gnat_library id77}@anchor{36e}
  @section @code{GNAT.Heap_Sort_G} (@code{g-hesorg.ads})
  
  
*************** if the procedures can be inlined, at the
*** 24612,24618 ****
  multiple instantiations.
  
  @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{37e}@anchor{gnat_rm/the_gnat_library id86}@anchor{37f}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
--- 24408,24414 ----
  multiple instantiations.
  
  @node GNAT HTable g-htable ads,GNAT IO g-io ads,GNAT Heap_Sort_G g-hesorg ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-htable-g-htable-ads}@anchor{36f}@anchor{gnat_rm/the_gnat_library id78}@anchor{370}
  @section @code{GNAT.HTable} (@code{g-htable.ads})
  
  
*************** data.  Provides two approaches, one a si
*** 24625,24631 ****
  allowing arbitrary dynamic hash tables.
  
  @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{380}@anchor{gnat_rm/the_gnat_library id87}@anchor{381}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
--- 24421,24427 ----
  allowing arbitrary dynamic hash tables.
  
  @node GNAT IO g-io ads,GNAT IO_Aux g-io_aux ads,GNAT HTable g-htable ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-g-io-ads}@anchor{371}@anchor{gnat_rm/the_gnat_library id79}@anchor{372}
  @section @code{GNAT.IO} (@code{g-io.ads})
  
  
*************** Standard_Input, and writing characters,
*** 24641,24647 ****
  Standard_Output or Standard_Error.
  
  @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{382}@anchor{gnat_rm/the_gnat_library id88}@anchor{383}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
--- 24437,24443 ----
  Standard_Output or Standard_Error.
  
  @node GNAT IO_Aux g-io_aux ads,GNAT Lock_Files g-locfil ads,GNAT IO g-io ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-io-aux-g-io-aux-ads}@anchor{373}@anchor{gnat_rm/the_gnat_library id80}@anchor{374}
  @section @code{GNAT.IO_Aux} (@code{g-io_aux.ads})
  
  
*************** Provides some auxiliary functions for us
*** 24655,24661 ****
  for whether a file exists, and functions for reading a line of text.
  
  @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{384}@anchor{gnat_rm/the_gnat_library id89}@anchor{385}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
--- 24451,24457 ----
  for whether a file exists, and functions for reading a line of text.
  
  @node GNAT Lock_Files g-locfil ads,GNAT MBBS_Discrete_Random g-mbdira ads,GNAT IO_Aux g-io_aux ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-lock-files-g-locfil-ads}@anchor{375}@anchor{gnat_rm/the_gnat_library id81}@anchor{376}
  @section @code{GNAT.Lock_Files} (@code{g-locfil.ads})
  
  
*************** Provides a general interface for using f
*** 24669,24675 ****
  providing program level synchronization.
  
  @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{386}@anchor{gnat_rm/the_gnat_library id90}@anchor{387}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
--- 24465,24471 ----
  providing program level synchronization.
  
  @node GNAT MBBS_Discrete_Random g-mbdira ads,GNAT MBBS_Float_Random g-mbflra ads,GNAT Lock_Files g-locfil ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-discrete-random-g-mbdira-ads}@anchor{377}@anchor{gnat_rm/the_gnat_library id82}@anchor{378}
  @section @code{GNAT.MBBS_Discrete_Random} (@code{g-mbdira.ads})
  
  
*************** The original implementation of @code{Ada
*** 24681,24687 ****
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id91}@anchor{389}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
--- 24477,24483 ----
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MBBS_Float_Random g-mbflra ads,GNAT MD5 g-md5 ads,GNAT MBBS_Discrete_Random g-mbdira ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-mbbs-float-random-g-mbflra-ads}@anchor{379}@anchor{gnat_rm/the_gnat_library id83}@anchor{37a}
  @section @code{GNAT.MBBS_Float_Random} (@code{g-mbflra.ads})
  
  
*************** The original implementation of @code{Ada
*** 24693,24699 ****
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id92}@anchor{38b}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
--- 24489,24495 ----
  a modified version of the Blum-Blum-Shub generator.
  
  @node GNAT MD5 g-md5 ads,GNAT Memory_Dump g-memdum ads,GNAT MBBS_Float_Random g-mbflra ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-md5-g-md5-ads}@anchor{37b}@anchor{gnat_rm/the_gnat_library id84}@anchor{37c}
  @section @code{GNAT.MD5} (@code{g-md5.ads})
  
  
*************** the HMAC-MD5 message authentication func
*** 24706,24712 ****
  FIPS PUB 198.
  
  @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id93}@anchor{38d}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
--- 24502,24508 ----
  FIPS PUB 198.
  
  @node GNAT Memory_Dump g-memdum ads,GNAT Most_Recent_Exception g-moreex ads,GNAT MD5 g-md5 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-memory-dump-g-memdum-ads}@anchor{37d}@anchor{gnat_rm/the_gnat_library id85}@anchor{37e}
  @section @code{GNAT.Memory_Dump} (@code{g-memdum.ads})
  
  
*************** standard output or standard error files.
*** 24719,24725 ****
  output.
  
  @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id94}@anchor{38f}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
--- 24515,24521 ----
  output.
  
  @node GNAT Most_Recent_Exception g-moreex ads,GNAT OS_Lib g-os_lib ads,GNAT Memory_Dump g-memdum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-most-recent-exception-g-moreex-ads}@anchor{37f}@anchor{gnat_rm/the_gnat_library id86}@anchor{380}
  @section @code{GNAT.Most_Recent_Exception} (@code{g-moreex.ads})
  
  
*************** various logging purposes, including dupl
*** 24733,24739 ****
  Ada 83 implementation dependent extensions.
  
  @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id95}@anchor{391}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
--- 24529,24535 ----
  Ada 83 implementation dependent extensions.
  
  @node GNAT OS_Lib g-os_lib ads,GNAT Perfect_Hash_Generators g-pehage ads,GNAT Most_Recent_Exception g-moreex ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-os-lib-g-os-lib-ads}@anchor{381}@anchor{gnat_rm/the_gnat_library id87}@anchor{382}
  @section @code{GNAT.OS_Lib} (@code{g-os_lib.ads})
  
  
*************** including a portable spawn procedure, an
*** 24749,24755 ****
  and error return codes.
  
  @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id96}@anchor{393}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
--- 24545,24551 ----
  and error return codes.
  
  @node GNAT Perfect_Hash_Generators g-pehage ads,GNAT Random_Numbers g-rannum ads,GNAT OS_Lib g-os_lib ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-perfect-hash-generators-g-pehage-ads}@anchor{383}@anchor{gnat_rm/the_gnat_library id88}@anchor{384}
  @section @code{GNAT.Perfect_Hash_Generators} (@code{g-pehage.ads})
  
  
*************** Provides a generator of static minimal p
*** 24761,24773 ****
  collisions occur and each item can be retrieved from the table in one
  probe (perfect property). The hash table size corresponds to the exact
  size of the key set and no larger (minimal property). The key set has to
! be know in advance (static property). The hash functions are also order
  preserving. If w2 is inserted after w1 in the generator, their
  hashcode are in the same order. These hashing functions are very
  convenient for use with realtime applications.
  
  @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id97}@anchor{395}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
--- 24557,24569 ----
  collisions occur and each item can be retrieved from the table in one
  probe (perfect property). The hash table size corresponds to the exact
  size of the key set and no larger (minimal property). The key set has to
! be known in advance (static property). The hash functions are also order
  preserving. If w2 is inserted after w1 in the generator, their
  hashcode are in the same order. These hashing functions are very
  convenient for use with realtime applications.
  
  @node GNAT Random_Numbers g-rannum ads,GNAT Regexp g-regexp ads,GNAT Perfect_Hash_Generators g-pehage ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-random-numbers-g-rannum-ads}@anchor{385}@anchor{gnat_rm/the_gnat_library id89}@anchor{386}
  @section @code{GNAT.Random_Numbers} (@code{g-rannum.ads})
  
  
*************** Provides random number capabilities whic
*** 24779,24785 ****
  standard Ada library and are more convenient to use.
  
  @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{25b}@anchor{gnat_rm/the_gnat_library id98}@anchor{396}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
--- 24575,24581 ----
  standard Ada library and are more convenient to use.
  
  @node GNAT Regexp g-regexp ads,GNAT Registry g-regist ads,GNAT Random_Numbers g-rannum ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regexp-g-regexp-ads}@anchor{25c}@anchor{gnat_rm/the_gnat_library id90}@anchor{387}
  @section @code{GNAT.Regexp} (@code{g-regexp.ads})
  
  
*************** simplest of the three pattern matching p
*** 24795,24801 ****
  suitable for ‘file globbing’ applications.
  
  @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{397}@anchor{gnat_rm/the_gnat_library id99}@anchor{398}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
--- 24591,24597 ----
  suitable for ‘file globbing’ applications.
  
  @node GNAT Registry g-regist ads,GNAT Regpat g-regpat ads,GNAT Regexp g-regexp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-registry-g-regist-ads}@anchor{388}@anchor{gnat_rm/the_gnat_library id91}@anchor{389}
  @section @code{GNAT.Registry} (@code{g-regist.ads})
  
  
*************** registry API, but at a lower level of ab
*** 24809,24815 ****
  package provided with the Win32Ada binding
  
  @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{399}@anchor{gnat_rm/the_gnat_library id100}@anchor{39a}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
--- 24605,24611 ----
  package provided with the Win32Ada binding
  
  @node GNAT Regpat g-regpat ads,GNAT Rewrite_Data g-rewdat ads,GNAT Registry g-regist ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-regpat-g-regpat-ads}@anchor{38a}@anchor{gnat_rm/the_gnat_library id92}@anchor{38b}
  @section @code{GNAT.Regpat} (@code{g-regpat.ads})
  
  
*************** from the original V7 style regular expre
*** 24824,24830 ****
  Henry Spencer (and binary compatible with this C library).
  
  @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{39b}@anchor{gnat_rm/the_gnat_library id101}@anchor{39c}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
--- 24620,24626 ----
  Henry Spencer (and binary compatible with this C library).
  
  @node GNAT Rewrite_Data g-rewdat ads,GNAT Secondary_Stack_Info g-sestin ads,GNAT Regpat g-regpat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-rewrite-data-g-rewdat-ads}@anchor{38c}@anchor{gnat_rm/the_gnat_library id93}@anchor{38d}
  @section @code{GNAT.Rewrite_Data} (@code{g-rewdat.ads})
  
  
*************** full content to be processed is not load
*** 24838,24844 ****
  this interface usable for large files or socket streams.
  
  @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{39d}@anchor{gnat_rm/the_gnat_library id102}@anchor{39e}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
--- 24634,24640 ----
  this interface usable for large files or socket streams.
  
  @node GNAT Secondary_Stack_Info g-sestin ads,GNAT Semaphores g-semaph ads,GNAT Rewrite_Data g-rewdat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-secondary-stack-info-g-sestin-ads}@anchor{38e}@anchor{gnat_rm/the_gnat_library id94}@anchor{38f}
  @section @code{GNAT.Secondary_Stack_Info} (@code{g-sestin.ads})
  
  
*************** this interface usable for large files or
*** 24846,24856 ****
  
  @geindex Secondary Stack Info
  
! Provide the capability to query the high water mark of the current task’s
  secondary stack.
  
  @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{39f}@anchor{gnat_rm/the_gnat_library id103}@anchor{3a0}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
--- 24642,24652 ----
  
  @geindex Secondary Stack Info
  
! Provides the capability to query the high water mark of the current task’s
  secondary stack.
  
  @node GNAT Semaphores g-semaph ads,GNAT Serial_Communications g-sercom ads,GNAT Secondary_Stack_Info g-sestin ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-semaphores-g-semaph-ads}@anchor{390}@anchor{gnat_rm/the_gnat_library id95}@anchor{391}
  @section @code{GNAT.Semaphores} (@code{g-semaph.ads})
  
  
*************** secondary stack.
*** 24861,24867 ****
  Provides classic counting and binary semaphores using protected types.
  
  @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{3a1}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a2}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
--- 24657,24663 ----
  Provides classic counting and binary semaphores using protected types.
  
  @node GNAT Serial_Communications g-sercom ads,GNAT SHA1 g-sha1 ads,GNAT Semaphores g-semaph ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-serial-communications-g-sercom-ads}@anchor{392}@anchor{gnat_rm/the_gnat_library id96}@anchor{393}
  @section @code{GNAT.Serial_Communications} (@code{g-sercom.ads})
  
  
*************** Provides a simple interface to send and
*** 24873,24879 ****
  port. This is only supported on GNU/Linux and Windows.
  
  @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{3a3}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a4}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
--- 24669,24675 ----
  port. This is only supported on GNU/Linux and Windows.
  
  @node GNAT SHA1 g-sha1 ads,GNAT SHA224 g-sha224 ads,GNAT Serial_Communications g-sercom ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha1-g-sha1-ads}@anchor{394}@anchor{gnat_rm/the_gnat_library id97}@anchor{395}
  @section @code{GNAT.SHA1} (@code{g-sha1.ads})
  
  
*************** and RFC 3174, and the HMAC-SHA1 message
*** 24886,24892 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{3a5}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a6}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
--- 24682,24688 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA224 g-sha224 ads,GNAT SHA256 g-sha256 ads,GNAT SHA1 g-sha1 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha224-g-sha224-ads}@anchor{396}@anchor{gnat_rm/the_gnat_library id98}@anchor{397}
  @section @code{GNAT.SHA224} (@code{g-sha224.ads})
  
  
*************** and the HMAC-SHA224 message authenticati
*** 24899,24905 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{3a7}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a8}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
--- 24695,24701 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA256 g-sha256 ads,GNAT SHA384 g-sha384 ads,GNAT SHA224 g-sha224 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha256-g-sha256-ads}@anchor{398}@anchor{gnat_rm/the_gnat_library id99}@anchor{399}
  @section @code{GNAT.SHA256} (@code{g-sha256.ads})
  
  
*************** and the HMAC-SHA256 message authenticati
*** 24912,24918 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{3a9}@anchor{gnat_rm/the_gnat_library id108}@anchor{3aa}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
--- 24708,24714 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA384 g-sha384 ads,GNAT SHA512 g-sha512 ads,GNAT SHA256 g-sha256 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha384-g-sha384-ads}@anchor{39a}@anchor{gnat_rm/the_gnat_library id100}@anchor{39b}
  @section @code{GNAT.SHA384} (@code{g-sha384.ads})
  
  
*************** and the HMAC-SHA384 message authenticati
*** 24925,24931 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{3ab}@anchor{gnat_rm/the_gnat_library id109}@anchor{3ac}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
--- 24721,24727 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT SHA512 g-sha512 ads,GNAT Signals g-signal ads,GNAT SHA384 g-sha384 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sha512-g-sha512-ads}@anchor{39c}@anchor{gnat_rm/the_gnat_library id101}@anchor{39d}
  @section @code{GNAT.SHA512} (@code{g-sha512.ads})
  
  
*************** and the HMAC-SHA512 message authenticati
*** 24938,24944 ****
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{3ad}@anchor{gnat_rm/the_gnat_library id110}@anchor{3ae}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
--- 24734,24740 ----
  in RFC 2104 and FIPS PUB 198.
  
  @node GNAT Signals g-signal ads,GNAT Sockets g-socket ads,GNAT SHA512 g-sha512 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-signals-g-signal-ads}@anchor{39e}@anchor{gnat_rm/the_gnat_library id102}@anchor{39f}
  @section @code{GNAT.Signals} (@code{g-signal.ads})
  
  
*************** Provides the ability to manipulate the b
*** 24950,24956 ****
  targets.
  
  @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3af}@anchor{gnat_rm/the_gnat_library id111}@anchor{3b0}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
--- 24746,24752 ----
  targets.
  
  @node GNAT Sockets g-socket ads,GNAT Source_Info g-souinf ads,GNAT Signals g-signal ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sockets-g-socket-ads}@anchor{3a0}@anchor{gnat_rm/the_gnat_library id103}@anchor{3a1}
  @section @code{GNAT.Sockets} (@code{g-socket.ads})
  
  
*************** targets.
*** 24961,24971 ****
  A high level and portable interface to develop sockets based applications.
  This package is based on the sockets thin binding found in
  @code{GNAT.Sockets.Thin}. Currently @code{GNAT.Sockets} is implemented
! on all native GNAT ports and on VxWorks cross prots.  It is not implemented for
  the LynxOS cross port.
  
  @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3b1}@anchor{gnat_rm/the_gnat_library id112}@anchor{3b2}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
--- 24757,24767 ----
  A high level and portable interface to develop sockets based applications.
  This package is based on the sockets thin binding found in
  @code{GNAT.Sockets.Thin}. Currently @code{GNAT.Sockets} is implemented
! on all native GNAT ports and on VxWorks cross ports.  It is not implemented for
  the LynxOS cross port.
  
  @node GNAT Source_Info g-souinf ads,GNAT Spelling_Checker g-speche ads,GNAT Sockets g-socket ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-source-info-g-souinf-ads}@anchor{3a2}@anchor{gnat_rm/the_gnat_library id104}@anchor{3a3}
  @section @code{GNAT.Source_Info} (@code{g-souinf.ads})
  
  
*************** subprograms yielding the date and time o
*** 24979,24985 ****
  C macros @code{__DATE__} and @code{__TIME__})
  
  @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3b3}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b4}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
--- 24775,24781 ----
  C macros @code{__DATE__} and @code{__TIME__})
  
  @node GNAT Spelling_Checker g-speche ads,GNAT Spelling_Checker_Generic g-spchge ads,GNAT Source_Info g-souinf ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-g-speche-ads}@anchor{3a4}@anchor{gnat_rm/the_gnat_library id105}@anchor{3a5}
  @section @code{GNAT.Spelling_Checker} (@code{g-speche.ads})
  
  
*************** Provides a function for determining whet
*** 24991,24997 ****
  near misspelling of another string.
  
  @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3b5}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b6}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
--- 24787,24793 ----
  near misspelling of another string.
  
  @node GNAT Spelling_Checker_Generic g-spchge ads,GNAT Spitbol Patterns g-spipat ads,GNAT Spelling_Checker g-speche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spelling-checker-generic-g-spchge-ads}@anchor{3a6}@anchor{gnat_rm/the_gnat_library id106}@anchor{3a7}
  @section @code{GNAT.Spelling_Checker_Generic} (@code{g-spchge.ads})
  
  
*************** determining whether one string is a plau
*** 25004,25010 ****
  string.
  
  @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3b7}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b8}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
--- 24800,24806 ----
  string.
  
  @node GNAT Spitbol Patterns g-spipat ads,GNAT Spitbol g-spitbo ads,GNAT Spelling_Checker_Generic g-spchge ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-patterns-g-spipat-ads}@anchor{3a8}@anchor{gnat_rm/the_gnat_library id107}@anchor{3a9}
  @section @code{GNAT.Spitbol.Patterns} (@code{g-spipat.ads})
  
  
*************** the SNOBOL4 dynamic pattern construction
*** 25020,25026 ****
  efficient algorithm developed by Robert Dewar for the SPITBOL system.
  
  @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3b9}@anchor{gnat_rm/the_gnat_library id116}@anchor{3ba}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
--- 24816,24822 ----
  efficient algorithm developed by Robert Dewar for the SPITBOL system.
  
  @node GNAT Spitbol g-spitbo ads,GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Patterns g-spipat ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-g-spitbo-ads}@anchor{3aa}@anchor{gnat_rm/the_gnat_library id108}@anchor{3ab}
  @section @code{GNAT.Spitbol} (@code{g-spitbo.ads})
  
  
*************** useful for constructing arbitrary mappin
*** 25035,25041 ****
  the SNOBOL4 TABLE function.
  
  @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3bb}@anchor{gnat_rm/the_gnat_library id117}@anchor{3bc}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
--- 24831,24837 ----
  the SNOBOL4 TABLE function.
  
  @node GNAT Spitbol Table_Boolean g-sptabo ads,GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol g-spitbo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-boolean-g-sptabo-ads}@anchor{3ac}@anchor{gnat_rm/the_gnat_library id109}@anchor{3ad}
  @section @code{GNAT.Spitbol.Table_Boolean} (@code{g-sptabo.ads})
  
  
*************** for type @code{Standard.Boolean}, giving
*** 25050,25056 ****
  string values.
  
  @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3bd}@anchor{gnat_rm/the_gnat_library id118}@anchor{3be}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
--- 24846,24852 ----
  string values.
  
  @node GNAT Spitbol Table_Integer g-sptain ads,GNAT Spitbol Table_VString g-sptavs ads,GNAT Spitbol Table_Boolean g-sptabo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-integer-g-sptain-ads}@anchor{3ae}@anchor{gnat_rm/the_gnat_library id110}@anchor{3af}
  @section @code{GNAT.Spitbol.Table_Integer} (@code{g-sptain.ads})
  
  
*************** for type @code{Standard.Integer}, giving
*** 25067,25073 ****
  from string to integer values.
  
  @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3bf}@anchor{gnat_rm/the_gnat_library id119}@anchor{3c0}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
--- 24863,24869 ----
  from string to integer values.
  
  @node GNAT Spitbol Table_VString g-sptavs ads,GNAT SSE g-sse ads,GNAT Spitbol Table_Integer g-sptain ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-spitbol-table-vstring-g-sptavs-ads}@anchor{3b0}@anchor{gnat_rm/the_gnat_library id111}@anchor{3b1}
  @section @code{GNAT.Spitbol.Table_VString} (@code{g-sptavs.ads})
  
  
*************** a variable length string type, giving an
*** 25084,25090 ****
  maps from strings to strings.
  
  @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3c1}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c2}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
--- 24880,24886 ----
  maps from strings to strings.
  
  @node GNAT SSE g-sse ads,GNAT SSE Vector_Types g-ssvety ads,GNAT Spitbol Table_VString g-sptavs ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-g-sse-ads}@anchor{3b2}@anchor{gnat_rm/the_gnat_library id112}@anchor{3b3}
  @section @code{GNAT.SSE} (@code{g-sse.ads})
  
  
*************** targets.  It exposes vector component ty
*** 25096,25102 ****
  introduction to the binding contents and use.
  
  @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3c3}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c4}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
--- 24892,24898 ----
  introduction to the binding contents and use.
  
  @node GNAT SSE Vector_Types g-ssvety ads,GNAT String_Hash g-strhas ads,GNAT SSE g-sse ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-sse-vector-types-g-ssvety-ads}@anchor{3b4}@anchor{gnat_rm/the_gnat_library id113}@anchor{3b5}
  @section @code{GNAT.SSE.Vector_Types} (@code{g-ssvety.ads})
  
  
*************** introduction to the binding contents and
*** 25105,25111 ****
  SSE vector types for use with SSE related intrinsics.
  
  @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3c5}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c6}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
--- 24901,24907 ----
  SSE vector types for use with SSE related intrinsics.
  
  @node GNAT String_Hash g-strhas ads,GNAT Strings g-string ads,GNAT SSE Vector_Types g-ssvety ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-hash-g-strhas-ads}@anchor{3b6}@anchor{gnat_rm/the_gnat_library id114}@anchor{3b7}
  @section @code{GNAT.String_Hash} (@code{g-strhas.ads})
  
  
*************** Provides a generic hash function working
*** 25117,25123 ****
  type and the hash result type are parameters.
  
  @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3c7}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c8}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
--- 24913,24919 ----
  type and the hash result type are parameters.
  
  @node GNAT Strings g-string ads,GNAT String_Split g-strspl ads,GNAT String_Hash g-strhas ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-strings-g-string-ads}@anchor{3b8}@anchor{gnat_rm/the_gnat_library id115}@anchor{3b9}
  @section @code{GNAT.Strings} (@code{g-string.ads})
  
  
*************** Common String access types and related s
*** 25127,25133 ****
  defines a string access and an array of string access types.
  
  @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3c9}@anchor{gnat_rm/the_gnat_library id124}@anchor{3ca}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
--- 24923,24929 ----
  defines a string access and an array of string access types.
  
  @node GNAT String_Split g-strspl ads,GNAT Table g-table ads,GNAT Strings g-string ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-string-split-g-strspl-ads}@anchor{3ba}@anchor{gnat_rm/the_gnat_library id116}@anchor{3bb}
  @section @code{GNAT.String_Split} (@code{g-strspl.ads})
  
  
*************** to the resulting slices. This package is
*** 25141,25147 ****
  @code{GNAT.Array_Split}.
  
  @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3cb}@anchor{gnat_rm/the_gnat_library id125}@anchor{3cc}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
--- 24937,24943 ----
  @code{GNAT.Array_Split}.
  
  @node GNAT Table g-table ads,GNAT Task_Lock g-tasloc ads,GNAT String_Split g-strspl ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-table-g-table-ads}@anchor{3bc}@anchor{gnat_rm/the_gnat_library id117}@anchor{3bd}
  @section @code{GNAT.Table} (@code{g-table.ads})
  
  
*************** while an instantiation of @code{GNAT.Dyn
*** 25161,25167 ****
  used to define dynamic instances of the table.
  
  @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3cd}@anchor{gnat_rm/the_gnat_library id126}@anchor{3ce}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
--- 24957,24963 ----
  used to define dynamic instances of the table.
  
  @node GNAT Task_Lock g-tasloc ads,GNAT Time_Stamp g-timsta ads,GNAT Table g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-task-lock-g-tasloc-ads}@anchor{3be}@anchor{gnat_rm/the_gnat_library id118}@anchor{3bf}
  @section @code{GNAT.Task_Lock} (@code{g-tasloc.ads})
  
  
*************** single global task lock.  Appropriate fo
*** 25178,25184 ****
  between tasks is very rarely expected.
  
  @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3cf}@anchor{gnat_rm/the_gnat_library id127}@anchor{3d0}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
--- 24974,24980 ----
  between tasks is very rarely expected.
  
  @node GNAT Time_Stamp g-timsta ads,GNAT Threads g-thread ads,GNAT Task_Lock g-tasloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-time-stamp-g-timsta-ads}@anchor{3c0}@anchor{gnat_rm/the_gnat_library id119}@anchor{3c1}
  @section @code{GNAT.Time_Stamp} (@code{g-timsta.ads})
  
  
*************** represents the current date and time in
*** 25193,25199 ****
  routine with minimal code and there are no dependencies on any other unit.
  
  @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3d1}@anchor{gnat_rm/the_gnat_library id128}@anchor{3d2}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
--- 24989,24995 ----
  routine with minimal code and there are no dependencies on any other unit.
  
  @node GNAT Threads g-thread ads,GNAT Traceback g-traceb ads,GNAT Time_Stamp g-timsta ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-threads-g-thread-ads}@anchor{3c2}@anchor{gnat_rm/the_gnat_library id120}@anchor{3c3}
  @section @code{GNAT.Threads} (@code{g-thread.ads})
  
  
*************** further details if your program has thre
*** 25210,25216 ****
  environment which then accesses Ada code.
  
  @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3d3}@anchor{gnat_rm/the_gnat_library id129}@anchor{3d4}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
--- 25006,25012 ----
  environment which then accesses Ada code.
  
  @node GNAT Traceback g-traceb ads,GNAT Traceback Symbolic g-trasym ads,GNAT Threads g-thread ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-g-traceb-ads}@anchor{3c4}@anchor{gnat_rm/the_gnat_library id121}@anchor{3c5}
  @section @code{GNAT.Traceback} (@code{g-traceb.ads})
  
  
*************** environment which then accesses Ada code
*** 25221,25228 ****
  Provides a facility for obtaining non-symbolic traceback information, useful
  in various debugging situations.
  
! @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-table ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3d5}@anchor{gnat_rm/the_gnat_library id130}@anchor{3d6}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
--- 25017,25024 ----
  Provides a facility for obtaining non-symbolic traceback information, useful
  in various debugging situations.
  
! @node GNAT Traceback Symbolic g-trasym ads,GNAT UTF_32 g-utf_32 ads,GNAT Traceback g-traceb ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-traceback-symbolic-g-trasym-ads}@anchor{3c6}@anchor{gnat_rm/the_gnat_library id122}@anchor{3c7}
  @section @code{GNAT.Traceback.Symbolic} (@code{g-trasym.ads})
  
  
*************** in various debugging situations.
*** 25230,25241 ****
  
  @geindex Trace back facilities
  
! @node GNAT UTF_32 g-table ads,GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-g-table-ads}@anchor{3d7}@anchor{gnat_rm/the_gnat_library id131}@anchor{3d8}
! @section @code{GNAT.UTF_32} (@code{g-table.ads})
  
  
! @geindex GNAT.UTF_32 (g-table.ads)
  
  @geindex Wide character codes
  
--- 25026,25037 ----
  
  @geindex Trace back facilities
  
! @node GNAT UTF_32 g-utf_32 ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Traceback Symbolic g-trasym ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-g-utf-32-ads}@anchor{3c8}@anchor{gnat_rm/the_gnat_library id123}@anchor{3c9}
! @section @code{GNAT.UTF_32} (@code{g-utf_32.ads})
  
  
! @geindex GNAT.UTF_32 (g-utf_32.ads)
  
  @geindex Wide character codes
  
*************** lexical rules for identifiers and string
*** 25249,25260 ****
  lower case to upper case fold routine corresponding to
  the Ada 2005 rules for identifier equivalence.
  
! @node GNAT Wide_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-table ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-u3spch-ads}@anchor{3d9}@anchor{gnat_rm/the_gnat_library id132}@anchor{3da}
! @section @code{GNAT.Wide_Spelling_Checker} (@code{g-u3spch.ads})
  
  
! @geindex GNAT.Wide_Spelling_Checker (g-u3spch.ads)
  
  @geindex Spell checking
  
--- 25045,25056 ----
  lower case to upper case fold routine corresponding to
  the Ada 2005 rules for identifier equivalence.
  
! @node GNAT UTF_32_Spelling_Checker g-u3spch ads,GNAT Wide_Spelling_Checker g-wispch ads,GNAT UTF_32 g-utf_32 ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-utf-32-spelling-checker-g-u3spch-ads}@anchor{3ca}@anchor{gnat_rm/the_gnat_library id124}@anchor{3cb}
! @section @code{GNAT.UTF_32_Spelling_Checker} (@code{g-u3spch.ads})
  
  
! @geindex GNAT.UTF_32_Spelling_Checker (g-u3spch.ads)
  
  @geindex Spell checking
  
*************** Provides a function for determining whet
*** 25262,25269 ****
  near misspelling of another wide wide string, where the strings are represented
  using the UTF_32_String type defined in System.Wch_Cnv.
  
! @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3db}@anchor{gnat_rm/the_gnat_library id133}@anchor{3dc}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
--- 25058,25065 ----
  near misspelling of another wide wide string, where the strings are represented
  using the UTF_32_String type defined in System.Wch_Cnv.
  
! @node GNAT Wide_Spelling_Checker g-wispch ads,GNAT Wide_String_Split g-wistsp ads,GNAT UTF_32_Spelling_Checker g-u3spch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-spelling-checker-g-wispch-ads}@anchor{3cc}@anchor{gnat_rm/the_gnat_library id125}@anchor{3cd}
  @section @code{GNAT.Wide_Spelling_Checker} (@code{g-wispch.ads})
  
  
*************** Provides a function for determining whet
*** 25275,25281 ****
  near misspelling of another wide string.
  
  @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3dd}@anchor{gnat_rm/the_gnat_library id134}@anchor{3de}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
--- 25071,25077 ----
  near misspelling of another wide string.
  
  @node GNAT Wide_String_Split g-wistsp ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Spelling_Checker g-wispch ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-string-split-g-wistsp-ads}@anchor{3ce}@anchor{gnat_rm/the_gnat_library id126}@anchor{3cf}
  @section @code{GNAT.Wide_String_Split} (@code{g-wistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25289,25295 ****
  @code{GNAT.Array_Split}.
  
  @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3df}@anchor{gnat_rm/the_gnat_library id135}@anchor{3e0}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
--- 25085,25091 ----
  @code{GNAT.Array_Split}.
  
  @node GNAT Wide_Wide_Spelling_Checker g-zspche ads,GNAT Wide_Wide_String_Split g-zistsp ads,GNAT Wide_String_Split g-wistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-spelling-checker-g-zspche-ads}@anchor{3d0}@anchor{gnat_rm/the_gnat_library id127}@anchor{3d1}
  @section @code{GNAT.Wide_Wide_Spelling_Checker} (@code{g-zspche.ads})
  
  
*************** Provides a function for determining whet
*** 25301,25307 ****
  near misspelling of another wide wide string.
  
  @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3e1}@anchor{gnat_rm/the_gnat_library id136}@anchor{3e2}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
--- 25097,25103 ----
  near misspelling of another wide wide string.
  
  @node GNAT Wide_Wide_String_Split g-zistsp ads,Interfaces C Extensions i-cexten ads,GNAT Wide_Wide_Spelling_Checker g-zspche ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library gnat-wide-wide-string-split-g-zistsp-ads}@anchor{3d2}@anchor{gnat_rm/the_gnat_library id128}@anchor{3d3}
  @section @code{GNAT.Wide_Wide_String_Split} (@code{g-zistsp.ads})
  
  
*************** to the resulting slices. This package is
*** 25315,25321 ****
  @code{GNAT.Array_Split}.
  
  @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id137}@anchor{3e3}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3e4}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
--- 25111,25117 ----
  @code{GNAT.Array_Split}.
  
  @node Interfaces C Extensions i-cexten ads,Interfaces C Streams i-cstrea ads,GNAT Wide_Wide_String_Split g-zistsp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id129}@anchor{3d4}@anchor{gnat_rm/the_gnat_library interfaces-c-extensions-i-cexten-ads}@anchor{3d5}
  @section @code{Interfaces.C.Extensions} (@code{i-cexten.ads})
  
  
*************** for use with either manually or automati
*** 25326,25332 ****
  to C libraries.
  
  @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id138}@anchor{3e5}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3e6}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
--- 25122,25128 ----
  to C libraries.
  
  @node Interfaces C Streams i-cstrea ads,Interfaces Packed_Decimal i-pacdec ads,Interfaces C Extensions i-cexten ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id130}@anchor{3d6}@anchor{gnat_rm/the_gnat_library interfaces-c-streams-i-cstrea-ads}@anchor{3d7}
  @section @code{Interfaces.C.Streams} (@code{i-cstrea.ads})
  
  
*************** This package is a binding for the most c
*** 25339,25345 ****
  on C streams.
  
  @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{3e7}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3e8}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
--- 25135,25141 ----
  on C streams.
  
  @node Interfaces Packed_Decimal i-pacdec ads,Interfaces VxWorks i-vxwork ads,Interfaces C Streams i-cstrea ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id131}@anchor{3d8}@anchor{gnat_rm/the_gnat_library interfaces-packed-decimal-i-pacdec-ads}@anchor{3d9}
  @section @code{Interfaces.Packed_Decimal} (@code{i-pacdec.ads})
  
  
*************** from a packed decimal format compatible
*** 25354,25360 ****
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id140}@anchor{3e9}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3ea}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
--- 25150,25156 ----
  mainframes.
  
  @node Interfaces VxWorks i-vxwork ads,Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces Packed_Decimal i-pacdec ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id132}@anchor{3da}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-i-vxwork-ads}@anchor{3db}
  @section @code{Interfaces.VxWorks} (@code{i-vxwork.ads})
  
  
*************** In particular, it interfaces with the
*** 25370,25376 ****
  VxWorks hardware interrupt facilities.
  
  @node Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id141}@anchor{3eb}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3ec}
  @section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
  
  
--- 25166,25172 ----
  VxWorks hardware interrupt facilities.
  
  @node Interfaces VxWorks Int_Connection i-vxinco ads,Interfaces VxWorks IO i-vxwoio ads,Interfaces VxWorks i-vxwork ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id133}@anchor{3dc}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-int-connection-i-vxinco-ads}@anchor{3dd}
  @section @code{Interfaces.VxWorks.Int_Connection} (@code{i-vxinco.ads})
  
  
*************** intConnect() with a custom routine for i
*** 25386,25392 ****
  handlers.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks Int_Connection i-vxinco ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id142}@anchor{3ed}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3ee}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
--- 25182,25188 ----
  handlers.
  
  @node Interfaces VxWorks IO i-vxwoio ads,System Address_Image s-addima ads,Interfaces VxWorks Int_Connection i-vxinco ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id134}@anchor{3de}@anchor{gnat_rm/the_gnat_library interfaces-vxworks-io-i-vxwoio-ads}@anchor{3df}
  @section @code{Interfaces.VxWorks.IO} (@code{i-vxwoio.ads})
  
  
*************** function codes. A particular use of this
*** 25409,25415 ****
  to enable the use of Get_Immediate under VxWorks.
  
  @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id143}@anchor{3ef}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3f0}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
--- 25205,25211 ----
  to enable the use of Get_Immediate under VxWorks.
  
  @node System Address_Image s-addima ads,System Assertions s-assert ads,Interfaces VxWorks IO i-vxwoio ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id135}@anchor{3e0}@anchor{gnat_rm/the_gnat_library system-address-image-s-addima-ads}@anchor{3e1}
  @section @code{System.Address_Image} (@code{s-addima.ads})
  
  
*************** function that gives an (implementation d
*** 25425,25431 ****
  string which identifies an address.
  
  @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id144}@anchor{3f1}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3f2}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
--- 25221,25227 ----
  string which identifies an address.
  
  @node System Assertions s-assert ads,System Atomic_Counters s-atocou ads,System Address_Image s-addima ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id136}@anchor{3e2}@anchor{gnat_rm/the_gnat_library system-assertions-s-assert-ads}@anchor{3e3}
  @section @code{System.Assertions} (@code{s-assert.ads})
  
  
*************** by an run-time assertion failure, as wel
*** 25441,25447 ****
  is used internally to raise this assertion.
  
  @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id145}@anchor{3f3}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3f4}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
--- 25237,25243 ----
  is used internally to raise this assertion.
  
  @node System Atomic_Counters s-atocou ads,System Memory s-memory ads,System Assertions s-assert ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id137}@anchor{3e4}@anchor{gnat_rm/the_gnat_library system-atomic-counters-s-atocou-ads}@anchor{3e5}
  @section @code{System.Atomic_Counters} (@code{s-atocou.ads})
  
  
*************** on most targets, including all Alpha, AA
*** 25455,25461 ****
  x86, and x86_64 platforms.
  
  @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id146}@anchor{3f5}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3f6}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
--- 25251,25257 ----
  x86, and x86_64 platforms.
  
  @node System Memory s-memory ads,System Multiprocessors s-multip ads,System Atomic_Counters s-atocou ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id138}@anchor{3e6}@anchor{gnat_rm/the_gnat_library system-memory-s-memory-ads}@anchor{3e7}
  @section @code{System.Memory} (@code{s-memory.ads})
  
  
*************** x86, and x86_64 platforms.
*** 25465,25471 ****
  
  This package provides the interface to the low level routines used
  by the generated code for allocation and freeing storage for the
! default storage pool (analogous to the C routines malloc and free.
  It also provides a reallocation interface analogous to the C routine
  realloc. The body of this unit may be modified to provide alternative
  allocation mechanisms for the default pool, and in addition, direct
--- 25261,25267 ----
  
  This package provides the interface to the low level routines used
  by the generated code for allocation and freeing storage for the
! default storage pool (analogous to the C routines malloc and free).
  It also provides a reallocation interface analogous to the C routine
  realloc. The body of this unit may be modified to provide alternative
  allocation mechanisms for the default pool, and in addition, direct
*************** calls to this unit may be made for low l
*** 25473,25479 ****
  example see the body of @code{GNAT.Tables}).
  
  @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id147}@anchor{3f7}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3f8}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
--- 25269,25275 ----
  example see the body of @code{GNAT.Tables}).
  
  @node System Multiprocessors s-multip ads,System Multiprocessors Dispatching_Domains s-mudido ads,System Memory s-memory ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id139}@anchor{3e8}@anchor{gnat_rm/the_gnat_library system-multiprocessors-s-multip-ads}@anchor{3e9}
  @section @code{System.Multiprocessors} (@code{s-multip.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25486,25492 ****
  technically an implementation-defined addition).
  
  @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id148}@anchor{3f9}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3fa}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
--- 25282,25288 ----
  technically an implementation-defined addition).
  
  @node System Multiprocessors Dispatching_Domains s-mudido ads,System Partition_Interface s-parint ads,System Multiprocessors s-multip ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id140}@anchor{3ea}@anchor{gnat_rm/the_gnat_library system-multiprocessors-dispatching-domains-s-mudido-ads}@anchor{3eb}
  @section @code{System.Multiprocessors.Dispatching_Domains} (@code{s-mudido.ads})
  
  
*************** in GNAT we also make it available in Ada
*** 25499,25505 ****
  technically an implementation-defined addition).
  
  @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id149}@anchor{3fb}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3fc}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
--- 25295,25301 ----
  technically an implementation-defined addition).
  
  @node System Partition_Interface s-parint ads,System Pool_Global s-pooglo ads,System Multiprocessors Dispatching_Domains s-mudido ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id141}@anchor{3ec}@anchor{gnat_rm/the_gnat_library system-partition-interface-s-parint-ads}@anchor{3ed}
  @section @code{System.Partition_Interface} (@code{s-parint.ads})
  
  
*************** is used primarily in a distribution cont
*** 25512,25518 ****
  with @code{GLADE}.
  
  @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id150}@anchor{3fd}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3fe}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
--- 25308,25314 ----
  with @code{GLADE}.
  
  @node System Pool_Global s-pooglo ads,System Pool_Local s-pooloc ads,System Partition_Interface s-parint ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id142}@anchor{3ee}@anchor{gnat_rm/the_gnat_library system-pool-global-s-pooglo-ads}@anchor{3ef}
  @section @code{System.Pool_Global} (@code{s-pooglo.ads})
  
  
*************** declared. It uses malloc/free to allocat
*** 25529,25535 ****
  do any automatic reclamation.
  
  @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id151}@anchor{3ff}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{400}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
--- 25325,25331 ----
  do any automatic reclamation.
  
  @node System Pool_Local s-pooloc ads,System Restrictions s-restri ads,System Pool_Global s-pooglo ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id143}@anchor{3f0}@anchor{gnat_rm/the_gnat_library system-pool-local-s-pooloc-ads}@anchor{3f1}
  @section @code{System.Pool_Local} (@code{s-pooloc.ads})
  
  
*************** a list of allocated blocks, so that all
*** 25546,25552 ****
  be freed automatically when the pool is finalized.
  
  @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id152}@anchor{401}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{402}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
--- 25342,25348 ----
  be freed automatically when the pool is finalized.
  
  @node System Restrictions s-restri ads,System Rident s-rident ads,System Pool_Local s-pooloc ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id144}@anchor{3f2}@anchor{gnat_rm/the_gnat_library system-restrictions-s-restri-ads}@anchor{3f3}
  @section @code{System.Restrictions} (@code{s-restri.ads})
  
  
*************** compiler determined information on which
*** 25562,25568 ****
  are violated by one or more packages in the partition.
  
  @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id153}@anchor{403}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{404}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
--- 25358,25364 ----
  are violated by one or more packages in the partition.
  
  @node System Rident s-rident ads,System Strings Stream_Ops s-ststop ads,System Restrictions s-restri ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id145}@anchor{3f4}@anchor{gnat_rm/the_gnat_library system-rident-s-rident-ads}@anchor{3f5}
  @section @code{System.Rident} (@code{s-rident.ads})
  
  
*************** since the necessary instantiation is inc
*** 25578,25584 ****
  package System.Restrictions.
  
  @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id154}@anchor{405}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{406}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
--- 25374,25380 ----
  package System.Restrictions.
  
  @node System Strings Stream_Ops s-ststop ads,System Unsigned_Types s-unstyp ads,System Rident s-rident ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id146}@anchor{3f6}@anchor{gnat_rm/the_gnat_library system-strings-stream-ops-s-ststop-ads}@anchor{3f7}
  @section @code{System.Strings.Stream_Ops} (@code{s-ststop.ads})
  
  
*************** stream attributes are applied to string
*** 25594,25600 ****
  package can be used directly by application programs.
  
  @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id155}@anchor{407}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{408}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
--- 25390,25396 ----
  package can be used directly by application programs.
  
  @node System Unsigned_Types s-unstyp ads,System Wch_Cnv s-wchcnv ads,System Strings Stream_Ops s-ststop ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id147}@anchor{3f8}@anchor{gnat_rm/the_gnat_library system-unsigned-types-s-unstyp-ads}@anchor{3f9}
  @section @code{System.Unsigned_Types} (@code{s-unstyp.ads})
  
  
*************** also contains some related definitions f
*** 25607,25613 ****
  used by the compiler in connection with packed array types.
  
  @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id156}@anchor{409}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{40a}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
--- 25403,25409 ----
  used by the compiler in connection with packed array types.
  
  @node System Wch_Cnv s-wchcnv ads,System Wch_Con s-wchcon ads,System Unsigned_Types s-unstyp ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id148}@anchor{3fa}@anchor{gnat_rm/the_gnat_library system-wch-cnv-s-wchcnv-ads}@anchor{3fb}
  @section @code{System.Wch_Cnv} (@code{s-wchcnv.ads})
  
  
*************** encoding method.  It uses definitions in
*** 25628,25634 ****
  package @code{System.Wch_Con}.
  
  @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id157}@anchor{40b}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{40c}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
--- 25424,25430 ----
  package @code{System.Wch_Con}.
  
  @node System Wch_Con s-wchcon ads,,System Wch_Cnv s-wchcnv ads,The GNAT Library
! @anchor{gnat_rm/the_gnat_library id149}@anchor{3fc}@anchor{gnat_rm/the_gnat_library system-wch-con-s-wchcon-ads}@anchor{3fd}
  @section @code{System.Wch_Con} (@code{s-wchcon.ads})
  
  
*************** in ordinary strings.  These definitions
*** 25640,25646 ****
  the package @code{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{40d}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{40e}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}
  @chapter Interfacing to Other Languages
  
  
--- 25436,25442 ----
  the package @code{System.Wch_Cnv}.
  
  @node Interfacing to Other Languages,Specialized Needs Annexes,The GNAT Library,Top
! @anchor{gnat_rm/interfacing_to_other_languages doc}@anchor{3fe}@anchor{gnat_rm/interfacing_to_other_languages id1}@anchor{3ff}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-other-languages}@anchor{11}
  @chapter Interfacing to Other Languages
  
  
*************** provided.
*** 25658,25664 ****
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{40f}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{410}
  @section Interfacing to C
  
  
--- 25454,25460 ----
  @end menu
  
  @node Interfacing to C,Interfacing to C++,,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id2}@anchor{400}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-c}@anchor{401}
  @section Interfacing to C
  
  
*************** of the length corresponding to the @code
*** 25798,25804 ****
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{46}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{411}
  @section Interfacing to C++
  
  
--- 25594,25600 ----
  @end itemize
  
  @node Interfacing to C++,Interfacing to COBOL,Interfacing to C,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id3}@anchor{47}@anchor{gnat_rm/interfacing_to_other_languages id4}@anchor{402}
  @section Interfacing to C++
  
  
*************** See @ref{7,,Implementation Defined Pragm
*** 25813,25819 ****
  
  @table @asis
  
! @item @code{pragma CPP_Class ([Entity =>] @emph{LOCAL_NAME})}
  
  The argument denotes an entity in the current declarative region that is
  declared as a tagged or untagged record type. It indicates that the type
--- 25609,25615 ----
  
  @table @asis
  
! @item @code{pragma CPP_Class ([Entity =>] @var{LOCAL_NAME})}
  
  The argument denotes an entity in the current declarative region that is
  declared as a tagged or untagged record type. It indicates that the type
*************** Note: Pragma @code{CPP_Class} is current
*** 25824,25830 ****
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
! @item @code{pragma CPP_Constructor ([Entity =>] @emph{LOCAL_NAME})}
  
  This pragma identifies an imported function (imported in the usual way
  with pragma @code{Import}) as corresponding to a C++ constructor.
--- 25620,25626 ----
  for backward compatibility but its functionality is available
  using pragma @code{Import} with @code{Convention} = @code{CPP}.
  
! @item @code{pragma CPP_Constructor ([Entity =>] @var{LOCAL_NAME})}
  
  This pragma identifies an imported function (imported in the usual way
  with pragma @code{Import}) as corresponding to a C++ constructor.
*************** The @code{External_Name} is the name of
*** 25855,25861 ****
  cover a specific C++ exception in an exception handler.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{412}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{413}
  @section Interfacing to COBOL
  
  
--- 25651,25657 ----
  cover a specific C++ exception in an exception handler.
  
  @node Interfacing to COBOL,Interfacing to Fortran,Interfacing to C++,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id5}@anchor{403}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-cobol}@anchor{404}
  @section Interfacing to COBOL
  
  
*************** Interfacing to COBOL is achieved as desc
*** 25863,25869 ****
  the Ada Reference Manual.
  
  @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{414}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{415}
  @section Interfacing to Fortran
  
  
--- 25659,25665 ----
  the Ada Reference Manual.
  
  @node Interfacing to Fortran,Interfacing to non-GNAT Ada code,Interfacing to COBOL,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id6}@anchor{405}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-fortran}@anchor{406}
  @section Interfacing to Fortran
  
  
*************** multi-dimensional array causes the array
*** 25873,25879 ****
  order as required for convenient interface to Fortran.
  
  @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{416}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{417}
  @section Interfacing to non-GNAT Ada code
  
  
--- 25669,25675 ----
  order as required for convenient interface to Fortran.
  
  @node Interfacing to non-GNAT Ada code,,Interfacing to Fortran,Interfacing to Other Languages
! @anchor{gnat_rm/interfacing_to_other_languages id7}@anchor{407}@anchor{gnat_rm/interfacing_to_other_languages interfacing-to-non-gnat-ada-code}@anchor{408}
  @section Interfacing to non-GNAT Ada code
  
  
*************** values or simple record types without va
*** 25897,25903 ****
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes doc}@anchor{418}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{419}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}
  @chapter Specialized Needs Annexes
  
  
--- 25693,25699 ----
  types with fixed bounds.
  
  @node Specialized Needs Annexes,Implementation of Specific Ada Features,Interfacing to Other Languages,Top
! @anchor{gnat_rm/specialized_needs_annexes doc}@anchor{409}@anchor{gnat_rm/specialized_needs_annexes id1}@anchor{40a}@anchor{gnat_rm/specialized_needs_annexes specialized-needs-annexes}@anchor{12}
  @chapter Specialized Needs Annexes
  
  
*************** GNAT implements all of these annexes:
*** 25908,25944 ****
  
  @table @asis
  
! @item @emph{Systems Programming (Annex C)}
  
  The Systems Programming Annex is fully implemented.
  
! @item @emph{Real-Time Systems (Annex D)}
  
  The Real-Time Systems Annex is fully implemented.
  
! @item @emph{Distributed Systems (Annex E)}
  
  Stub generation is fully implemented in the GNAT compiler.  In addition,
  a complete compatible PCS is available as part of the GLADE system,
  a separate product.  When the two
  products are used in conjunction, this annex is fully implemented.
  
! @item @emph{Information Systems (Annex F)}
  
  The Information Systems annex is fully implemented.
  
! @item @emph{Numerics (Annex G)}
  
  The Numerics Annex is fully implemented.
  
! @item @emph{Safety and Security / High-Integrity Systems (Annex H)}
  
  The Safety and Security Annex (termed the High-Integrity Systems Annex
  in Ada 2005) is fully implemented.
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{41a}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}
  @chapter Implementation of Specific Ada Features
  
  
--- 25704,25740 ----
  
  @table @asis
  
! @item `Systems Programming (Annex C)'
  
  The Systems Programming Annex is fully implemented.
  
! @item `Real-Time Systems (Annex D)'
  
  The Real-Time Systems Annex is fully implemented.
  
! @item `Distributed Systems (Annex E)'
  
  Stub generation is fully implemented in the GNAT compiler.  In addition,
  a complete compatible PCS is available as part of the GLADE system,
  a separate product.  When the two
  products are used in conjunction, this annex is fully implemented.
  
! @item `Information Systems (Annex F)'
  
  The Information Systems annex is fully implemented.
  
! @item `Numerics (Annex G)'
  
  The Numerics Annex is fully implemented.
  
! @item `Safety and Security / High-Integrity Systems (Annex H)'
  
  The Safety and Security Annex (termed the High-Integrity Systems Annex
  in Ada 2005) is fully implemented.
  @end table
  
  @node Implementation of Specific Ada Features,Implementation of Ada 2012 Features,Specialized Needs Annexes,Top
! @anchor{gnat_rm/implementation_of_specific_ada_features doc}@anchor{40b}@anchor{gnat_rm/implementation_of_specific_ada_features id1}@anchor{40c}@anchor{gnat_rm/implementation_of_specific_ada_features implementation-of-specific-ada-features}@anchor{13}
  @chapter Implementation of Specific Ada Features
  
  
*************** facilities.
*** 25957,25963 ****
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{41c}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{165}
  @section Machine Code Insertions
  
  
--- 25753,25759 ----
  @end menu
  
  @node Machine Code Insertions,GNAT Implementation of Tasking,,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id2}@anchor{40d}@anchor{gnat_rm/implementation_of_specific_ada_features machine-code-insertions}@anchor{166}
  @section Machine Code Insertions
  
  
*************** No support is provided for GNU C’s sym
*** 26046,26052 ****
  If there are no input operands, this argument may either be omitted, or
  explicitly given as @code{No_Input_Operands}.  The fourth argument, not
  present in the above example, is a list of register names, called the
! @emph{clobber} argument.  This argument, if given, must be a static string
  expression, and is a space or comma separated list of names of registers
  that must be considered destroyed as a result of the @code{Asm} call.  If
  this argument is the null string (the default value), then the code
--- 25842,25848 ----
  If there are no input operands, this argument may either be omitted, or
  explicitly given as @code{No_Input_Operands}.  The fourth argument, not
  present in the above example, is a list of register names, called the
! `clobber' argument.  This argument, if given, must be a static string
  expression, and is a space or comma separated list of names of registers
  that must be considered destroyed as a result of the @code{Asm} call.  If
  this argument is the null string (the default value), then the code
*************** In addition to registers, the special cl
*** 26055,26061 ****
  @code{cc} as described in the GNU C docs are both supported.
  
  The fifth argument, not present in the above example, called the
! @emph{volatile} argument, is by default @code{False}.  It can be set to
  the literal value @code{True} to indicate to the code generator that all
  optimizations with respect to the instruction specified should be
  suppressed, and in particular an instruction that has outputs
--- 25851,25857 ----
  @code{cc} as described in the GNU C docs are both supported.
  
  The fifth argument, not present in the above example, called the
! `volatile' argument, is by default @code{False}.  It can be set to
  the literal value @code{True} to indicate to the code generator that all
  optimizations with respect to the instruction specified should be
  suppressed, and in particular an instruction that has outputs
*************** according to normal visibility rules. In
*** 26125,26131 ****
  qualification is required.
  
  @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{41e}
  @section GNAT Implementation of Tasking
  
  
--- 25921,25927 ----
  qualification is required.
  
  @node GNAT Implementation of Tasking,GNAT Implementation of Shared Passive Packages,Machine Code Insertions,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-tasking}@anchor{40e}@anchor{gnat_rm/implementation_of_specific_ada_features id3}@anchor{40f}
  @section GNAT Implementation of Tasking
  
  
*************** to compliance with the Real-Time Systems
*** 26141,26147 ****
  @end menu
  
  @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{420}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
--- 25937,25943 ----
  @end menu
  
  @node Mapping Ada Tasks onto the Underlying Kernel Threads,Ensuring Compliance with the Real-Time Annex,,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features id4}@anchor{410}@anchor{gnat_rm/implementation_of_specific_ada_features mapping-ada-tasks-onto-the-underlying-kernel-threads}@anchor{411}
  @subsection Mapping Ada Tasks onto the Underlying Kernel Threads
  
  
*************** support this functionality when the pare
*** 26210,26216 ****
  @geindex Forking a new process
  
  @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{422}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
--- 26006,26012 ----
  @geindex Forking a new process
  
  @node Ensuring Compliance with the Real-Time Annex,Support for Locking Policies,Mapping Ada Tasks onto the Underlying Kernel Threads,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features ensuring-compliance-with-the-real-time-annex}@anchor{412}@anchor{gnat_rm/implementation_of_specific_ada_features id5}@anchor{413}
  @subsection Ensuring Compliance with the Real-Time Annex
  
  
*************** scheduling policy states:
*** 26226,26238 ****
  
  @quotation
  
! @emph{When the active priority of a ready task that is not running
  changes, or the setting of its base priority takes effect, the
  task is removed from the ready queue for its old active priority
  and is added at the tail of the ready queue for its new active
  priority, except in the case where the active priority is lowered
  due to the loss of inherited priority, in which case the task is
! added at the head of the ready queue for its new active priority.}
  @end quotation
  
  While most kernels do put tasks at the end of the priority queue when
--- 26022,26034 ----
  
  @quotation
  
! `When the active priority of a ready task that is not running
  changes, or the setting of its base priority takes effect, the
  task is removed from the ready queue for its old active priority
  and is added at the tail of the ready queue for its new active
  priority, except in the case where the active priority is lowered
  due to the loss of inherited priority, in which case the task is
! added at the head of the ready queue for its new active priority.'
  @end quotation
  
  While most kernels do put tasks at the end of the priority queue when
*************** placed at the end.
*** 26261,26267 ****
  @c Support_for_Locking_Policies
  
  @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{423}
  @subsection Support for Locking Policies
  
  
--- 26057,26063 ----
  @c Support_for_Locking_Policies
  
  @node Support for Locking Policies,,Ensuring Compliance with the Real-Time Annex,GNAT Implementation of Tasking
! @anchor{gnat_rm/implementation_of_specific_ada_features support-for-locking-policies}@anchor{414}
  @subsection Support for Locking Policies
  
  
*************** then ceiling locking is used.
*** 26295,26301 ****
  Otherwise, the @code{Ceiling_Locking} policy is ignored.
  
  @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{424}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{425}
  @section GNAT Implementation of Shared Passive Packages
  
  
--- 26091,26097 ----
  Otherwise, the @code{Ceiling_Locking} policy is ignored.
  
  @node GNAT Implementation of Shared Passive Packages,Code Generation for Array Aggregates,GNAT Implementation of Tasking,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features gnat-implementation-of-shared-passive-packages}@anchor{415}@anchor{gnat_rm/implementation_of_specific_ada_features id6}@anchor{416}
  @section GNAT Implementation of Shared Passive Packages
  
  
*************** extensive usage as follows:
*** 26321,26327 ****
  
  @table @asis
  
! @item @emph{Communication between separate programs}
  
  This allows separate programs to access the data in passive
  partitions, using protected objects for synchronization where
--- 26117,26123 ----
  
  @table @asis
  
! @item `Communication between separate programs'
  
  This allows separate programs to access the data in passive
  partitions, using protected objects for synchronization where
*************** running on different machines with diffe
*** 26331,26337 ****
  (e.g., different endianness) to communicate via the data in
  a passive partition.
  
! @item @emph{Persistence between program runs}
  
  The data in a passive package can persist from one run of a
  program to another, so that a later program sees the final
--- 26127,26133 ----
  (e.g., different endianness) to communicate via the data in
  a passive partition.
  
! @item `Persistence between program runs'
  
  The data in a passive package can persist from one run of a
  program to another, so that a later program sees the final
*************** routines, since these are architecture i
*** 26384,26390 ****
  If active synchronization is required for access to the variables in the
  shared passive package, then as described in the Ada Reference Manual, the
  package may contain protected objects used for this purpose. In this case
! a lock file (whose name is @code{___lock} (three underscores)
  is created in the shared memory directory.
  
  @geindex ___lock file (for shared passive packages)
--- 26180,26186 ----
  If active synchronization is required for access to the variables in the
  shared passive package, then as described in the Ada Reference Manual, the
  package may contain protected objects used for this purpose. In this case
! a lock file (whose name is @code{___lock}, with three underscores)
  is created in the shared memory directory.
  
  @geindex ___lock file (for shared passive packages)
*************** This is used to provide the required loc
*** 26393,26399 ****
  semantics for proper protected object synchronization.
  
  @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{426}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{427}
  @section Code Generation for Array Aggregates
  
  
--- 26189,26195 ----
  semantics for proper protected object synchronization.
  
  @node Code Generation for Array Aggregates,The Size of Discriminated Records with Default Discriminants,GNAT Implementation of Shared Passive Packages,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features code-generation-for-array-aggregates}@anchor{417}@anchor{gnat_rm/implementation_of_specific_ada_features id7}@anchor{418}
  @section Code Generation for Array Aggregates
  
  
*************** component values and static subtypes als
*** 26424,26430 ****
  @end menu
  
  @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{428}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{429}
  @subsection Static constant aggregates with static bounds
  
  
--- 26220,26226 ----
  @end menu
  
  @node Static constant aggregates with static bounds,Constant aggregates with unconstrained nominal types,,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features id8}@anchor{419}@anchor{gnat_rm/implementation_of_specific_ada_features static-constant-aggregates-with-static-bounds}@anchor{41a}
  @subsection Static constant aggregates with static bounds
  
  
*************** Zero2: constant two_dim := (others => (o
*** 26471,26477 ****
  @end example
  
  @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{42a}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{42b}
  @subsection Constant aggregates with unconstrained nominal types
  
  
--- 26267,26273 ----
  @end example
  
  @node Constant aggregates with unconstrained nominal types,Aggregates with static bounds,Static constant aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features constant-aggregates-with-unconstrained-nominal-types}@anchor{41b}@anchor{gnat_rm/implementation_of_specific_ada_features id9}@anchor{41c}
  @subsection Constant aggregates with unconstrained nominal types
  
  
*************** Cr_Unc : constant One_Unc := (12,24,36);
*** 26486,26492 ****
  @end example
  
  @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{42c}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{42d}
  @subsection Aggregates with static bounds
  
  
--- 26282,26288 ----
  @end example
  
  @node Aggregates with static bounds,Aggregates with nonstatic bounds,Constant aggregates with unconstrained nominal types,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-static-bounds}@anchor{41d}@anchor{gnat_rm/implementation_of_specific_ada_features id10}@anchor{41e}
  @subsection Aggregates with static bounds
  
  
*************** end loop;
*** 26514,26520 ****
  @end example
  
  @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{42e}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{42f}
  @subsection Aggregates with nonstatic bounds
  
  
--- 26310,26316 ----
  @end example
  
  @node Aggregates with nonstatic bounds,Aggregates in assignment statements,Aggregates with static bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-with-nonstatic-bounds}@anchor{41f}@anchor{gnat_rm/implementation_of_specific_ada_features id11}@anchor{420}
  @subsection Aggregates with nonstatic bounds
  
  
*************** have to be applied to sub-arrays individ
*** 26525,26531 ****
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{430}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{431}
  @subsection Aggregates in assignment statements
  
  
--- 26321,26327 ----
  compatible subtypes.
  
  @node Aggregates in assignment statements,,Aggregates with nonstatic bounds,Code Generation for Array Aggregates
! @anchor{gnat_rm/implementation_of_specific_ada_features aggregates-in-assignment-statements}@anchor{421}@anchor{gnat_rm/implementation_of_specific_ada_features id12}@anchor{422}
  @subsection Aggregates in assignment statements
  
  
*************** a temporary (created either by the front
*** 26567,26573 ****
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{432}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{433}
  @section The Size of Discriminated Records with Default Discriminants
  
  
--- 26363,26369 ----
  that temporary will be copied onto the target.
  
  @node The Size of Discriminated Records with Default Discriminants,Image Values For Nonscalar Types,Code Generation for Array Aggregates,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id13}@anchor{423}@anchor{gnat_rm/implementation_of_specific_ada_features the-size-of-discriminated-records-with-default-discriminants}@anchor{424}
  @section The Size of Discriminated Records with Default Discriminants
  
  
*************** end T;
*** 26585,26591 ****
  Word : Rec;
  @end example
  
! Such an object is said to be @emph{unconstrained}.
  The discriminant of the object
  can be modified by a full assignment to the object, as long as it preserves the
  relation between the value of the discriminant, and the value of the components
--- 26381,26387 ----
  Word : Rec;
  @end example
  
! Such an object is said to be `unconstrained'.
  The discriminant of the object
  can be modified by a full assignment to the object, as long as it preserves the
  relation between the value of the discriminant, and the value of the components
*************** index type of ‘reasonable’ range so
*** 26638,26644 ****
  large.
  
  One final wrinkle: if the object is declared to be @code{aliased}, or if it is
! created in the heap by means of an allocator, then it is @emph{not}
  unconstrained:
  it is constrained by the default values of the discriminants, and those values
  cannot be modified by full assignment. This is because in the presence of
--- 26434,26440 ----
  large.
  
  One final wrinkle: if the object is declared to be @code{aliased}, or if it is
! created in the heap by means of an allocator, then it is `not'
  unconstrained:
  it is constrained by the default values of the discriminants, and those values
  cannot be modified by full assignment. This is because in the presence of
*************** say) must be consistent, so it is impera
*** 26647,26653 ****
  remain invariant.
  
  @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{434}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{435}
  @section Image Values For Nonscalar Types
  
  
--- 26443,26449 ----
  remain invariant.
  
  @node Image Values For Nonscalar Types,Strict Conformance to the Ada Reference Manual,The Size of Discriminated Records with Default Discriminants,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id14}@anchor{425}@anchor{gnat_rm/implementation_of_specific_ada_features image-values-for-nonscalar-types}@anchor{426}
  @section Image Values For Nonscalar Types
  
  
*************** control of image text is required for so
*** 26667,26673 ****
  explicitly specified.
  
  @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{436}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{437}
  @section Strict Conformance to the Ada Reference Manual
  
  
--- 26463,26469 ----
  explicitly specified.
  
  @node Strict Conformance to the Ada Reference Manual,,Image Values For Nonscalar Types,Implementation of Specific Ada Features
! @anchor{gnat_rm/implementation_of_specific_ada_features id15}@anchor{427}@anchor{gnat_rm/implementation_of_specific_ada_features strict-conformance-to-the-ada-reference-manual}@anchor{428}
  @section Strict Conformance to the Ada Reference Manual
  
  
*************** perform this check by default).
*** 26681,26700 ****
  
  Strict conformance to the Ada Reference Manual can be achieved by adding two
  compiler options for dynamic checks for access-before-elaboration on subprogram
! calls and generic instantiations (@emph{-gnatE}), and stack overflow checking
! (@emph{-fstack-check}).
  
  Note that the result of a floating point arithmetic operation in overflow and
  invalid situations, when the @code{Machine_Overflows} attribute of the result
  type is @code{False}, is to generate IEEE NaN and infinite values. This is the
  case for machines compliant with the IEEE floating-point standard, but on
  machines that are not fully compliant with this standard, such as Alpha, the
! @emph{-mieee} compiler flag must be used for achieving IEEE confirming
  behavior (although at the cost of a significant performance penalty), so
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2012 Features,Security Hardening Features,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{438}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{439}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}
  @chapter Implementation of Ada 2012 Features
  
  
--- 26477,26496 ----
  
  Strict conformance to the Ada Reference Manual can be achieved by adding two
  compiler options for dynamic checks for access-before-elaboration on subprogram
! calls and generic instantiations (`-gnatE'), and stack overflow checking
! (`-fstack-check').
  
  Note that the result of a floating point arithmetic operation in overflow and
  invalid situations, when the @code{Machine_Overflows} attribute of the result
  type is @code{False}, is to generate IEEE NaN and infinite values. This is the
  case for machines compliant with the IEEE floating-point standard, but on
  machines that are not fully compliant with this standard, such as Alpha, the
! `-mieee' compiler flag must be used for achieving IEEE confirming
  behavior (although at the cost of a significant performance penalty), so
  infinite and NaN values are properly generated.
  
  @node Implementation of Ada 2012 Features,Security Hardening Features,Implementation of Specific Ada Features,Top
! @anchor{gnat_rm/implementation_of_ada_2012_features doc}@anchor{429}@anchor{gnat_rm/implementation_of_ada_2012_features id1}@anchor{42a}@anchor{gnat_rm/implementation_of_ada_2012_features implementation-of-ada-2012-features}@anchor{14}
  @chapter Implementation of Ada 2012 Features
  
  
*************** infinite and NaN values are properly gen
*** 26711,26717 ****
  This chapter contains a complete list of Ada 2012 features that have been
  implemented.
  Generally, these features are only
! available if the @emph{-gnat12} (Ada 2012 features enabled) option is set,
  which is the default behavior,
  or if the configuration pragma @code{Ada_2012} is used.
  
--- 26507,26513 ----
  This chapter contains a complete list of Ada 2012 features that have been
  implemented.
  Generally, these features are only
! available if the `-gnat12' (Ada 2012 features enabled) option is set,
  which is the default behavior,
  or if the configuration pragma @code{Ada_2012} is used.
  
*************** A complete description of the AIs may be
*** 26743,26749 ****
  @itemize *
  
  @item 
! @emph{AI-0176 Quantified expressions (2010-09-29)}
  
  Both universally and existentially quantified expressions are implemented.
  They use the new syntax for iterators proposed in AI05-139-2, as well as
--- 26539,26545 ----
  @itemize *
  
  @item 
! `AI-0176 Quantified expressions (2010-09-29)'
  
  Both universally and existentially quantified expressions are implemented.
  They use the new syntax for iterators proposed in AI05-139-2, as well as
*************** RM References:  1.01.04 (12)   2.09 (2/2
*** 26758,26766 ****
  @itemize *
  
  @item 
! @emph{AI-0079 Allow other_format characters in source (2010-07-10)}
  
! Wide characters in the unicode category @emph{other_format} are now allowed in
  source programs between tokens, but not within a token such as an identifier.
  
  RM References:  2.01 (4/2)   2.02 (7)
--- 26554,26562 ----
  @itemize *
  
  @item 
! `AI-0079 Allow other_format characters in source (2010-07-10)'
  
! Wide characters in the unicode category `other_format' are now allowed in
  source programs between tokens, but not within a token such as an identifier.
  
  RM References:  2.01 (4/2)   2.02 (7)
*************** RM References:  2.01 (4/2)   2.02 (7)
*** 26772,26780 ****
  @itemize *
  
  @item 
! @emph{AI-0091 Do not allow other_format in identifiers (0000-00-00)}
  
! Wide characters in the unicode category @emph{other_format} are not permitted
  within  an identifier, since this can be a security problem. The error
  message for this case has been improved to be more specific, but GNAT has
  never allowed such characters to appear in identifiers.
--- 26568,26576 ----
  @itemize *
  
  @item 
! `AI-0091 Do not allow other_format in identifiers (0000-00-00)'
  
! Wide characters in the unicode category `other_format' are not permitted
  within  an identifier, since this can be a security problem. The error
  message for this case has been improved to be more specific, but GNAT has
  never allowed such characters to appear in identifiers.
*************** RM References:  2.03 (3.1/2)   2.03 (4/2
*** 26788,26794 ****
  @itemize *
  
  @item 
! @emph{AI-0100 Placement of pragmas  (2010-07-01)}
  
  This AI is an earlier version of AI-163. It simplifies the rules
  for legal placement of pragmas. In the case of lists that allow pragmas, if
--- 26584,26590 ----
  @itemize *
  
  @item 
! `AI-0100 Placement of pragmas  (2010-07-01)'
  
  This AI is an earlier version of AI-163. It simplifies the rules
  for legal placement of pragmas. In the case of lists that allow pragmas, if
*************** RM References:  2.08 (7)
*** 26803,26809 ****
  @itemize *
  
  @item 
! @emph{AI-0163 Pragmas in place of null (2010-07-01)}
  
  A statement sequence may be composed entirely of pragmas. It is no longer
  necessary to add a dummy @code{null} statement to make the sequence legal.
--- 26599,26605 ----
  @itemize *
  
  @item 
! `AI-0163 Pragmas in place of null (2010-07-01)'
  
  A statement sequence may be composed entirely of pragmas. It is no longer
  necessary to add a dummy @code{null} statement to make the sequence legal.
*************** RM References:  2.08 (7)   2.08 (16)
*** 26817,26823 ****
  @itemize *
  
  @item 
! @emph{AI-0080 ‘View of’ not needed if clear from context (0000-00-00)}
  
  This is an editorial change only, described as non-testable in the AI.
  
--- 26613,26619 ----
  @itemize *
  
  @item 
! `AI-0080 ‘View of’ not needed if clear from context (0000-00-00)'
  
  This is an editorial change only, described as non-testable in the AI.
  
*************** RM References:  3.01 (7)
*** 26830,26836 ****
  @itemize *
  
  @item 
! @emph{AI-0183 Aspect specifications (2010-08-16)}
  
  Aspect specifications have been fully implemented except for pre and post-
  conditions, and type invariants, which have their own separate AI’s. All
--- 26626,26632 ----
  @itemize *
  
  @item 
! `AI-0183 Aspect specifications (2010-08-16)'
  
  Aspect specifications have been fully implemented except for pre and post-
  conditions, and type invariants, which have their own separate AI’s. All
*************** RM References:  3.02.01 (3)   3.02.02 (2
*** 27188,27194 ****
  @itemize *
  
  @item 
! @emph{AI-0128 Inequality is a primitive operation (0000-00-00)}
  
  If an equality operator (“=”) is declared for a type, then the implicitly
  declared inequality operator (“/=”) is a primitive operation of the type.
--- 26984,26990 ----
  @itemize *
  
  @item 
! `AI-0128 Inequality is a primitive operation (0000-00-00)'
  
  If an equality operator (“=”) is declared for a type, then the implicitly
  declared inequality operator (“/=”) is a primitive operation of the type.
*************** RM References:  3.02.03 (6)   6.06 (6)
*** 27204,27210 ****
  @itemize *
  
  @item 
! @emph{AI-0003 Qualified expressions as names (2010-07-11)}
  
  In Ada 2012, a qualified expression is considered to be syntactically a name,
  meaning that constructs such as @code{A'(F(X)).B} are now legal. This is
--- 27000,27006 ----
  @itemize *
  
  @item 
! `AI-0003 Qualified expressions as names (2010-07-11)'
  
  In Ada 2012, a qualified expression is considered to be syntactically a name,
  meaning that constructs such as @code{A'(F(X)).B} are now legal. This is
*************** RM References:  3.03 (11)   3.03 (21)
*** 27220,27226 ****
  @itemize *
  
  @item 
! @emph{AI-0120 Constant instance of protected object (0000-00-00)}
  
  This is an RM editorial change only. The section that lists objects that are
  constant failed to include the current instance of a protected object
--- 27016,27022 ----
  @itemize *
  
  @item 
! `AI-0120 Constant instance of protected object (0000-00-00)'
  
  This is an RM editorial change only. The section that lists objects that are
  constant failed to include the current instance of a protected object
*************** RM References:  3.03 (21)
*** 27236,27242 ****
  @itemize *
  
  @item 
! @emph{AI-0008 General access to constrained objects (0000-00-00)}
  
  The wording in the RM implied that if you have a general access to a
  constrained object, it could be used to modify the discriminants. This was
--- 27032,27038 ----
  @itemize *
  
  @item 
! `AI-0008 General access to constrained objects (0000-00-00)'
  
  The wording in the RM implied that if you have a general access to a
  constrained object, it could be used to modify the discriminants. This was
*************** RM References:  3.03 (23)   3.10.02 (26/
*** 27252,27258 ****
  @itemize *
  
  @item 
! @emph{AI-0093 Additional rules use immutably limited (0000-00-00)}
  
  This is an editorial change only, to make more widespread use of the Ada 2012
  ‘immutably limited’.
--- 27048,27054 ----
  @itemize *
  
  @item 
! `AI-0093 Additional rules use immutably limited (0000-00-00)'
  
  This is an editorial change only, to make more widespread use of the Ada 2012
  ‘immutably limited’.
*************** RM References:  3.03 (23.4/3)
*** 27266,27272 ****
  @itemize *
  
  @item 
! @emph{AI-0096 Deriving from formal private types (2010-07-20)}
  
  In general it is illegal for a type derived from a formal limited type to be
  nonlimited.  This AI makes an exception to this rule: derivation is legal
--- 27062,27068 ----
  @itemize *
  
  @item 
! `AI-0096 Deriving from formal private types (2010-07-20)'
  
  In general it is illegal for a type derived from a formal limited type to be
  nonlimited.  This AI makes an exception to this rule: derivation is legal
*************** RM References:  3.04 (5.1/2)   6.02 (7)
*** 27283,27289 ****
  @itemize *
  
  @item 
! @emph{AI-0181 Soft hyphen is a non-graphic character (2010-07-23)}
  
  From Ada 2005 on, soft hyphen is considered a non-graphic character, which
  means that it has a special name (@code{SOFT_HYPHEN}) in conjunction with the
--- 27079,27085 ----
  @itemize *
  
  @item 
! `AI-0181 Soft hyphen is a non-graphic character (2010-07-23)'
  
  From Ada 2005 on, soft hyphen is considered a non-graphic character, which
  means that it has a special name (@code{SOFT_HYPHEN}) in conjunction with the
*************** RM References:  3.05.02 (2/2)   A.01 (35
*** 27300,27306 ****
  @itemize *
  
  @item 
! @emph{AI-0182 Additional forms for} @code{Character'Value} @emph{(0000-00-00)}
  
  This AI allows @code{Character'Value} to accept the string @code{'?'} where
  @code{?} is any character including non-graphic control characters. GNAT has
--- 27096,27102 ----
  @itemize *
  
  @item 
! `AI-0182 Additional forms for' @code{Character'Value} `(0000-00-00)'
  
  This AI allows @code{Character'Value} to accept the string @code{'?'} where
  @code{?} is any character including non-graphic control characters. GNAT has
*************** RM References:  3.05 (56/2)
*** 27318,27324 ****
  @itemize *
  
  @item 
! @emph{AI-0214 Defaulted discriminants for limited tagged (2010-10-01)}
  
  Ada 2012 relaxes the restriction that forbids discriminants of tagged types
  to have default expressions by allowing them when the type is limited. It
--- 27114,27120 ----
  @itemize *
  
  @item 
! `AI-0214 Defaulted discriminants for limited tagged (2010-10-01)'
  
  Ada 2012 relaxes the restriction that forbids discriminants of tagged types
  to have default expressions by allowing them when the type is limited. It
*************** RM References:  3.07 (9.1/2)   3.07.02 (
*** 27334,27340 ****
  @itemize *
  
  @item 
! @emph{AI-0102 Some implicit conversions are illegal (0000-00-00)}
  
  It is illegal to assign an anonymous access constant to an anonymous access
  variable. The RM did not have a clear rule to prevent this, but GNAT has
--- 27130,27136 ----
  @itemize *
  
  @item 
! `AI-0102 Some implicit conversions are illegal (0000-00-00)'
  
  It is illegal to assign an anonymous access constant to an anonymous access
  variable. The RM did not have a clear rule to prevent this, but GNAT has
*************** RM References:  3.07 (16)   3.07.01 (9)
*** 27349,27355 ****
  @itemize *
  
  @item 
! @emph{AI-0158 Generalizing membership tests (2010-09-16)}
  
  This AI extends the syntax of membership tests to simplify complex conditions
  that can be expressed as membership in a subset of values of any type. It
--- 27145,27151 ----
  @itemize *
  
  @item 
! `AI-0158 Generalizing membership tests (2010-09-16)'
  
  This AI extends the syntax of membership tests to simplify complex conditions
  that can be expressed as membership in a subset of values of any type. It
*************** RM References:  3.08.01 (5)   4.04 (3)
*** 27365,27371 ****
  @itemize *
  
  @item 
! @emph{AI-0173 Testing if tags represent abstract types (2010-07-03)}
  
  The function @code{Ada.Tags.Type_Is_Abstract} returns @code{True} if invoked
  with the tag of an abstract type, and @code{False} otherwise.
--- 27161,27167 ----
  @itemize *
  
  @item 
! `AI-0173 Testing if tags represent abstract types (2010-07-03)'
  
  The function @code{Ada.Tags.Type_Is_Abstract} returns @code{True} if invoked
  with the tag of an abstract type, and @code{False} otherwise.
*************** RM References:  3.09 (7.4/2)   3.09 (12.
*** 27379,27385 ****
  @itemize *
  
  @item 
! @emph{AI-0076 function with controlling result (0000-00-00)}
  
  This is an editorial change only. The RM defines calls with controlling
  results, but uses the term ‘function with controlling result’ without an
--- 27175,27181 ----
  @itemize *
  
  @item 
! `AI-0076 function with controlling result (0000-00-00)'
  
  This is an editorial change only. The RM defines calls with controlling
  results, but uses the term ‘function with controlling result’ without an
*************** RM References:  3.09.02 (2/2)
*** 27394,27400 ****
  @itemize *
  
  @item 
! @emph{AI-0126 Dispatching with no declared operation (0000-00-00)}
  
  This AI clarifies dispatching rules, and simply confirms that dispatching
  executes the operation of the parent type when there is no explicitly or
--- 27190,27196 ----
  @itemize *
  
  @item 
! `AI-0126 Dispatching with no declared operation (0000-00-00)'
  
  This AI clarifies dispatching rules, and simply confirms that dispatching
  executes the operation of the parent type when there is no explicitly or
*************** RM References:  3.09.02 (20/2)   3.09.02
*** 27410,27416 ****
  @itemize *
  
  @item 
! @emph{AI-0097 Treatment of abstract null extension (2010-07-19)}
  
  The RM as written implied that in some cases it was possible to create an
  object of an abstract type, by having an abstract extension inherit a non-
--- 27206,27212 ----
  @itemize *
  
  @item 
! `AI-0097 Treatment of abstract null extension (2010-07-19)'
  
  The RM as written implied that in some cases it was possible to create an
  object of an abstract type, by having an abstract extension inherit a non-
*************** RM References:  3.09.03 (4/2)
*** 27426,27432 ****
  @itemize *
  
  @item 
! @emph{AI-0203 Extended return cannot be abstract (0000-00-00)}
  
  A return_subtype_indication cannot denote an abstract subtype. GNAT has never
  permitted such usage.
--- 27222,27228 ----
  @itemize *
  
  @item 
! `AI-0203 Extended return cannot be abstract (0000-00-00)'
  
  A return_subtype_indication cannot denote an abstract subtype. GNAT has never
  permitted such usage.
*************** RM References:  3.09.03 (8/3)
*** 27440,27446 ****
  @itemize *
  
  @item 
! @emph{AI-0198 Inheriting abstract operators  (0000-00-00)}
  
  This AI resolves a conflict between two rules involving inherited abstract
  operations and predefined operators. If a derived numeric type inherits
--- 27236,27242 ----
  @itemize *
  
  @item 
! `AI-0198 Inheriting abstract operators  (0000-00-00)'
  
  This AI resolves a conflict between two rules involving inherited abstract
  operations and predefined operators. If a derived numeric type inherits
*************** RM References:  3.09.03 (4/3)
*** 27456,27462 ****
  @itemize *
  
  @item 
! @emph{AI-0073 Functions returning abstract types (2010-07-10)}
  
  This AI covers a number of issues regarding returning abstract types. In
  particular generic functions cannot have abstract result types or access
--- 27252,27258 ----
  @itemize *
  
  @item 
! `AI-0073 Functions returning abstract types (2010-07-10)'
  
  This AI covers a number of issues regarding returning abstract types. In
  particular generic functions cannot have abstract result types or access
*************** RM References:  3.09.03 (8)   3.09.03 (1
*** 27474,27480 ****
  @itemize *
  
  @item 
! @emph{AI-0070 Elaboration of interface types (0000-00-00)}
  
  This is an editorial change only, there are no testable consequences short of
  checking for the absence of generated code for an interface declaration.
--- 27270,27276 ----
  @itemize *
  
  @item 
! `AI-0070 Elaboration of interface types (0000-00-00)'
  
  This is an editorial change only, there are no testable consequences short of
  checking for the absence of generated code for an interface declaration.
*************** RM References:  3.09.04 (18/2)
*** 27488,27494 ****
  @itemize *
  
  @item 
! @emph{AI-0208 Characteristics of incomplete views (0000-00-00)}
  
  The wording in the Ada 2005 RM concerning characteristics of incomplete views
  was incorrect and implied that some programs intended to be legal were now
--- 27284,27290 ----
  @itemize *
  
  @item 
! `AI-0208 Characteristics of incomplete views (0000-00-00)'
  
  The wording in the Ada 2005 RM concerning characteristics of incomplete views
  was incorrect and implied that some programs intended to be legal were now
*************** RM References:  3.10.01 (2.4/2)   3.10.0
*** 27504,27510 ****
  @itemize *
  
  @item 
! @emph{AI-0162 Incomplete type completed by partial view (2010-09-15)}
  
  Incomplete types are made more useful by allowing them to be completed by
  private types and private extensions.
--- 27300,27306 ----
  @itemize *
  
  @item 
! `AI-0162 Incomplete type completed by partial view (2010-09-15)'
  
  Incomplete types are made more useful by allowing them to be completed by
  private types and private extensions.
*************** RM References:  3.10.01 (2.5/2)   3.10.0
*** 27518,27524 ****
  @itemize *
  
  @item 
! @emph{AI-0098 Anonymous subprogram access restrictions (0000-00-00)}
  
  An unintentional omission in the RM implied some inconsistent restrictions on
  the use of anonymous access to subprogram values. These restrictions were not
--- 27314,27320 ----
  @itemize *
  
  @item 
! `AI-0098 Anonymous subprogram access restrictions (0000-00-00)'
  
  An unintentional omission in the RM implied some inconsistent restrictions on
  the use of anonymous access to subprogram values. These restrictions were not
*************** RM References:  3.10.01 (6)   3.10.01 (9
*** 27533,27539 ****
  @itemize *
  
  @item 
! @emph{AI-0199 Aggregate with anonymous access components (2010-07-14)}
  
  A choice list in a record aggregate can include several components of
  (distinct) anonymous access types as long as they have matching designated
--- 27329,27335 ----
  @itemize *
  
  @item 
! `AI-0199 Aggregate with anonymous access components (2010-07-14)'
  
  A choice list in a record aggregate can include several components of
  (distinct) anonymous access types as long as they have matching designated
*************** RM References:  4.03.01 (16)
*** 27548,27554 ****
  @itemize *
  
  @item 
! @emph{AI-0220 Needed components for aggregates (0000-00-00)}
  
  This AI addresses a wording problem in the RM that appears to permit some
  complex cases of aggregates with nonstatic discriminants. GNAT has always
--- 27344,27350 ----
  @itemize *
  
  @item 
! `AI-0220 Needed components for aggregates (0000-00-00)'
  
  This AI addresses a wording problem in the RM that appears to permit some
  complex cases of aggregates with nonstatic discriminants. GNAT has always
*************** RM References:  4.03.01 (17)
*** 27563,27569 ****
  @itemize *
  
  @item 
! @emph{AI-0147 Conditional expressions (2009-03-29)}
  
  Conditional expressions are permitted. The form of such an expression is:
  
--- 27359,27365 ----
  @itemize *
  
  @item 
! `AI-0147 Conditional expressions (2009-03-29)'
  
  Conditional expressions are permitted. The form of such an expression is:
  
*************** Conditional expressions are permitted. T
*** 27572,27581 ****
  @end example
  
  The parentheses can be omitted in contexts where parentheses are present
! anyway, such as subprogram arguments and pragma arguments. If the @strong{else}
! clause is omitted, @strong{else} @emph{True} is assumed;
  thus @code{(if A then B)} is a way to conveniently represent
! @emph{(A implies B)} in standard logic.
  
  RM References:  4.03.03 (15)   4.04 (1)   4.04 (7)   4.05.07 (0)   4.07 (2)
  4.07 (3)   4.09 (12)   4.09 (33)   5.03 (3)   5.03 (4)   7.05 (2.1/2)
--- 27368,27377 ----
  @end example
  
  The parentheses can be omitted in contexts where parentheses are present
! anyway, such as subprogram arguments and pragma arguments. If the `else'
! clause is omitted, `else' `True' is assumed;
  thus @code{(if A then B)} is a way to conveniently represent
! `(A implies B)' in standard logic.
  
  RM References:  4.03.03 (15)   4.04 (1)   4.04 (7)   4.05.07 (0)   4.07 (2)
  4.07 (3)   4.09 (12)   4.09 (33)   5.03 (3)   5.03 (4)   7.05 (2.1/2)
*************** RM References:  4.03.03 (15)   4.04 (1)
*** 27587,27593 ****
  @itemize *
  
  @item 
! @emph{AI-0037 Out-of-range box associations in aggregate (0000-00-00)}
  
  This AI confirms that an association of the form @code{Indx => <>} in an
  array aggregate must raise @code{Constraint_Error} if @code{Indx}
--- 27383,27389 ----
  @itemize *
  
  @item 
! `AI-0037 Out-of-range box associations in aggregate (0000-00-00)'
  
  This AI confirms that an association of the form @code{Indx => <>} in an
  array aggregate must raise @code{Constraint_Error} if @code{Indx}
*************** RM References:  4.03.03 (29)
*** 27604,27610 ****
  @itemize *
  
  @item 
! @emph{AI-0123 Composability of equality (2010-04-13)}
  
  Equality of untagged record composes, so that the predefined equality for a
  composite type that includes a component of some untagged record type
--- 27400,27406 ----
  @itemize *
  
  @item 
! `AI-0123 Composability of equality (2010-04-13)'
  
  Equality of untagged record composes, so that the predefined equality for a
  composite type that includes a component of some untagged record type
*************** RM References:  4.05.02 (9.7/2)   4.05.0
*** 27630,27636 ****
  @itemize *
  
  @item 
! @emph{AI-0088 The value of exponentiation (0000-00-00)}
  
  This AI clarifies the equivalence rule given for the dynamic semantics of
  exponentiation: the value of the operation can be obtained by repeated
--- 27426,27432 ----
  @itemize *
  
  @item 
! `AI-0088 The value of exponentiation (0000-00-00)'
  
  This AI clarifies the equivalence rule given for the dynamic semantics of
  exponentiation: the value of the operation can be obtained by repeated
*************** RM References:  4.05.06 (11)
*** 27647,27653 ****
  @itemize *
  
  @item 
! @emph{AI-0188 Case expressions (2010-01-09)}
  
  Case expressions are permitted. This allows use of constructs such as:
  
--- 27443,27449 ----
  @itemize *
  
  @item 
! `AI-0188 Case expressions (2010-01-09)'
  
  Case expressions are permitted. This allows use of constructs such as:
  
*************** RM References:  4.05.07 (0)   4.05.08 (0
*** 27664,27674 ****
  @itemize *
  
  @item 
! @emph{AI-0104 Null exclusion and uninitialized allocator (2010-07-15)}
  
  The assignment @code{Ptr := new not null Some_Ptr;} will raise
  @code{Constraint_Error} because the default value of the allocated object is
! @strong{null}. This useless construct is illegal in Ada 2012.
  
  RM References:  4.08 (2)
  @end itemize
--- 27460,27470 ----
  @itemize *
  
  @item 
! `AI-0104 Null exclusion and uninitialized allocator (2010-07-15)'
  
  The assignment @code{Ptr := new not null Some_Ptr;} will raise
  @code{Constraint_Error} because the default value of the allocated object is
! `null'. This useless construct is illegal in Ada 2012.
  
  RM References:  4.08 (2)
  @end itemize
*************** RM References:  4.08 (2)
*** 27679,27685 ****
  @itemize *
  
  @item 
! @emph{AI-0157 Allocation/Deallocation from empty pool (2010-07-11)}
  
  Allocation and Deallocation from an empty storage pool (i.e. allocation or
  deallocation of a pointer for which a static storage size clause of zero
--- 27475,27481 ----
  @itemize *
  
  @item 
! `AI-0157 Allocation/Deallocation from empty pool (2010-07-11)'
  
  Allocation and Deallocation from an empty storage pool (i.e. allocation or
  deallocation of a pointer for which a static storage size clause of zero
*************** RM References:  4.08 (5.3/2)   13.11.02
*** 27695,27701 ****
  @itemize *
  
  @item 
! @emph{AI-0179 Statement not required after label (2010-04-10)}
  
  It is not necessary to have a statement following a label, so a label
  can appear at the end of a statement sequence without the need for putting a
--- 27491,27497 ----
  @itemize *
  
  @item 
! `AI-0179 Statement not required after label (2010-04-10)'
  
  It is not necessary to have a statement following a label, so a label
  can appear at the end of a statement sequence without the need for putting a
*************** RM References:  5.01 (2)
*** 27711,27717 ****
  @itemize *
  
  @item 
! @emph{AI-0139-2 Syntactic sugar for iterators (2010-09-29)}
  
  The new syntax for iterating over arrays and containers is now implemented.
  Iteration over containers is for now limited to read-only iterators. Only
--- 27507,27513 ----
  @itemize *
  
  @item 
! `AI-0139-2 Syntactic sugar for iterators (2010-09-29)'
  
  The new syntax for iterating over arrays and containers is now implemented.
  Iteration over containers is for now limited to read-only iterators. Only
*************** RM References:  5.05
*** 27726,27732 ****
  @itemize *
  
  @item 
! @emph{AI-0134 Profiles must match for full conformance (0000-00-00)}
  
  For full conformance, the profiles of anonymous-access-to-subprogram
  parameters must match. GNAT has always enforced this rule.
--- 27522,27528 ----
  @itemize *
  
  @item 
! `AI-0134 Profiles must match for full conformance (0000-00-00)'
  
  For full conformance, the profiles of anonymous-access-to-subprogram
  parameters must match. GNAT has always enforced this rule.
*************** RM References:  6.03.01 (18)
*** 27740,27746 ****
  @itemize *
  
  @item 
! @emph{AI-0207 Mode conformance and access constant (0000-00-00)}
  
  This AI confirms that access_to_constant indication must match for mode
  conformance. This was implemented in GNAT when the qualifier was originally
--- 27536,27542 ----
  @itemize *
  
  @item 
! `AI-0207 Mode conformance and access constant (0000-00-00)'
  
  This AI confirms that access_to_constant indication must match for mode
  conformance. This was implemented in GNAT when the qualifier was originally
*************** RM References:  6.03.01 (16/2)
*** 27755,27761 ****
  @itemize *
  
  @item 
! @emph{AI-0046 Null exclusion match for full conformance (2010-07-17)}
  
  For full conformance, in the case of access parameters, the null exclusion
  must match (either both or neither must have @code{not null}).
--- 27551,27557 ----
  @itemize *
  
  @item 
! `AI-0046 Null exclusion match for full conformance (2010-07-17)'
  
  For full conformance, in the case of access parameters, the null exclusion
  must match (either both or neither must have @code{not null}).
*************** RM References:  6.03.02 (18)
*** 27769,27775 ****
  @itemize *
  
  @item 
! @emph{AI-0118 The association of parameter associations (0000-00-00)}
  
  This AI clarifies the rules for named associations in subprogram calls and
  generic instantiations. The rules have been in place since Ada 83.
--- 27565,27571 ----
  @itemize *
  
  @item 
! `AI-0118 The association of parameter associations (0000-00-00)'
  
  This AI clarifies the rules for named associations in subprogram calls and
  generic instantiations. The rules have been in place since Ada 83.
*************** RM References:  6.04.01 (2)   12.03 (9)
*** 27783,27789 ****
  @itemize *
  
  @item 
! @emph{AI-0196 Null exclusion tests for out parameters (0000-00-00)}
  
  Null exclusion checks are not made for @code{out} parameters when
  evaluating the actual parameters. GNAT has never generated these checks.
--- 27579,27585 ----
  @itemize *
  
  @item 
! `AI-0196 Null exclusion tests for out parameters (0000-00-00)'
  
  Null exclusion checks are not made for @code{out} parameters when
  evaluating the actual parameters. GNAT has never generated these checks.
*************** RM References:  6.04.01 (13)
*** 27797,27805 ****
  @itemize *
  
  @item 
! @emph{AI-0015 Constant return objects (0000-00-00)}
  
! The return object declared in an @emph{extended_return_statement} may be
  declared constant. This was always intended, and GNAT has always allowed it.
  
  RM References:  6.05 (2.1/2)   3.03 (10/2)   3.03 (21)   6.05 (5/2)
--- 27593,27601 ----
  @itemize *
  
  @item 
! `AI-0015 Constant return objects (0000-00-00)'
  
! The return object declared in an `extended_return_statement' may be
  declared constant. This was always intended, and GNAT has always allowed it.
  
  RM References:  6.05 (2.1/2)   3.03 (10/2)   3.03 (21)   6.05 (5/2)
*************** RM References:  6.05 (2.1/2)   3.03 (10/
*** 27812,27818 ****
  @itemize *
  
  @item 
! @emph{AI-0032 Extended return for class-wide functions (0000-00-00)}
  
  If a function returns a class-wide type, the object of an extended return
  statement can be declared with a specific type that is covered by the class-
--- 27608,27614 ----
  @itemize *
  
  @item 
! `AI-0032 Extended return for class-wide functions (0000-00-00)'
  
  If a function returns a class-wide type, the object of an extended return
  statement can be declared with a specific type that is covered by the class-
*************** RM References:  6.05 (5.2/2)   6.05 (5.3
*** 27830,27836 ****
  @itemize *
  
  @item 
! @emph{AI-0103 Static matching for extended return (2010-07-23)}
  
  If the return subtype of a function is an elementary type or a constrained
  type, the subtype indication in an extended return statement must match
--- 27626,27632 ----
  @itemize *
  
  @item 
! `AI-0103 Static matching for extended return (2010-07-23)'
  
  If the return subtype of a function is an elementary type or a constrained
  type, the subtype indication in an extended return statement must match
*************** RM References:  6.05 (5.2/2)
*** 27845,27851 ****
  @itemize *
  
  @item 
! @emph{AI-0058 Abnormal completion of an extended return (0000-00-00)}
  
  The RM had some incorrect wording implying wrong treatment of abnormal
  completion in an extended return. GNAT has always implemented the intended
--- 27641,27647 ----
  @itemize *
  
  @item 
! `AI-0058 Abnormal completion of an extended return (0000-00-00)'
  
  The RM had some incorrect wording implying wrong treatment of abnormal
  completion in an extended return. GNAT has always implemented the intended
*************** RM References:  6.05 (22/2)
*** 27860,27866 ****
  @itemize *
  
  @item 
! @emph{AI-0050 Raising Constraint_Error early for function call (0000-00-00)}
  
  The implementation permissions for raising @code{Constraint_Error} early on a function call
  when it was clear an exception would be raised were over-permissive and allowed
--- 27656,27662 ----
  @itemize *
  
  @item 
! `AI-0050 Raising Constraint_Error early for function call (0000-00-00)'
  
  The implementation permissions for raising @code{Constraint_Error} early on a function call
  when it was clear an exception would be raised were over-permissive and allowed
*************** RM References:  6.05 (24/2)
*** 27876,27882 ****
  @itemize *
  
  @item 
! @emph{AI-0125 Nonoverridable operations of an ancestor (2010-09-28)}
  
  In Ada 2012, the declaration of a primitive operation of a type extension
  or private extension can also override an inherited primitive that is not
--- 27672,27678 ----
  @itemize *
  
  @item 
! `AI-0125 Nonoverridable operations of an ancestor (2010-09-28)'
  
  In Ada 2012, the declaration of a primitive operation of a type extension
  or private extension can also override an inherited primitive that is not
*************** RM References:  7.03.01 (6)   8.03 (23)
*** 27891,27897 ****
  @itemize *
  
  @item 
! @emph{AI-0062 Null exclusions and deferred constants (0000-00-00)}
  
  A full constant may have a null exclusion even if its associated deferred
  constant does not. GNAT has always allowed this.
--- 27687,27693 ----
  @itemize *
  
  @item 
! `AI-0062 Null exclusions and deferred constants (0000-00-00)'
  
  A full constant may have a null exclusion even if its associated deferred
  constant does not. GNAT has always allowed this.
*************** RM References:  7.04 (6/2)   7.04 (7.1/2
*** 27905,27911 ****
  @itemize *
  
  @item 
! @emph{AI-0178 Incomplete views are limited (0000-00-00)}
  
  This AI clarifies the role of incomplete views and plugs an omission in the
  RM. GNAT always correctly restricted the use of incomplete views and types.
--- 27701,27707 ----
  @itemize *
  
  @item 
! `AI-0178 Incomplete views are limited (0000-00-00)'
  
  This AI clarifies the role of incomplete views and plugs an omission in the
  RM. GNAT always correctly restricted the use of incomplete views and types.
*************** RM References:  7.05 (3/2)   7.05 (6/2)
*** 27919,27925 ****
  @itemize *
  
  @item 
! @emph{AI-0087 Actual for formal nonlimited derived type (2010-07-15)}
  
  The actual for a formal nonlimited derived type cannot be limited. In
  particular, a formal derived type that extends a limited interface but which
--- 27715,27721 ----
  @itemize *
  
  @item 
! `AI-0087 Actual for formal nonlimited derived type (2010-07-15)'
  
  The actual for a formal nonlimited derived type cannot be limited. In
  particular, a formal derived type that extends a limited interface but which
*************** RM References:  7.05 (5/2)   12.05.01 (5
*** 27934,27940 ****
  @itemize *
  
  @item 
! @emph{AI-0099 Tag determines whether finalization needed (0000-00-00)}
  
  This AI clarifies that ‘needs finalization’ is part of dynamic semantics,
  and therefore depends on the run-time characteristics of an object (i.e. its
--- 27730,27736 ----
  @itemize *
  
  @item 
! `AI-0099 Tag determines whether finalization needed (0000-00-00)'
  
  This AI clarifies that ‘needs finalization’ is part of dynamic semantics,
  and therefore depends on the run-time characteristics of an object (i.e. its
*************** RM References:  7.06.01 (6)   7.06.01 (7
*** 27950,27956 ****
  @itemize *
  
  @item 
! @emph{AI-0064 Redundant finalization rule (0000-00-00)}
  
  This is an editorial change only. The intended behavior is already checked
  by an existing ACATS test, which GNAT has always executed correctly.
--- 27746,27752 ----
  @itemize *
  
  @item 
! `AI-0064 Redundant finalization rule (0000-00-00)'
  
  This is an editorial change only. The intended behavior is already checked
  by an existing ACATS test, which GNAT has always executed correctly.
*************** RM References:  7.06.01 (17.1/1)
*** 27964,27970 ****
  @itemize *
  
  @item 
! @emph{AI-0026 Missing rules for Unchecked_Union (2010-07-07)}
  
  Record representation clauses concerning Unchecked_Union types cannot mention
  the discriminant of the type. The type of a component declared in the variant
--- 27760,27766 ----
  @itemize *
  
  @item 
! `AI-0026 Missing rules for Unchecked_Union (2010-07-07)'
  
  Record representation clauses concerning Unchecked_Union types cannot mention
  the discriminant of the type. The type of a component declared in the variant
*************** RM References:  7.06 (9.4/2)   B.03.03 (
*** 27983,27989 ****
  @itemize *
  
  @item 
! @emph{AI-0205 Extended return declares visible name (0000-00-00)}
  
  This AI corrects a simple omission in the RM. Return objects have always
  been visible within an extended return statement.
--- 27779,27785 ----
  @itemize *
  
  @item 
! `AI-0205 Extended return declares visible name (0000-00-00)'
  
  This AI corrects a simple omission in the RM. Return objects have always
  been visible within an extended return statement.
*************** RM References:  8.03 (17)
*** 27997,28003 ****
  @itemize *
  
  @item 
! @emph{AI-0042 Overriding versus implemented-by (0000-00-00)}
  
  This AI fixes a wording gap in the RM. An operation of a synchronized
  interface can be implemented by a protected or task entry, but the abstract
--- 27793,27799 ----
  @itemize *
  
  @item 
! `AI-0042 Overriding versus implemented-by (0000-00-00)'
  
  This AI fixes a wording gap in the RM. An operation of a synchronized
  interface can be implemented by a protected or task entry, but the abstract
*************** RM References:  9.01 (9.2/2)   9.04 (11.
*** 28014,28020 ****
  @itemize *
  
  @item 
! @emph{AI-0030 Requeue on synchronized interfaces (2010-07-19)}
  
  Requeue is permitted to a protected, synchronized or task interface primitive
  providing it is known that the overriding operation is an entry. Otherwise
--- 27810,27816 ----
  @itemize *
  
  @item 
! `AI-0030 Requeue on synchronized interfaces (2010-07-19)'
  
  Requeue is permitted to a protected, synchronized or task interface primitive
  providing it is known that the overriding operation is an entry. Otherwise
*************** RM References:  9.05 (9)   9.05.04 (2)
*** 28033,28039 ****
  @itemize *
  
  @item 
! @emph{AI-0201 Independence of atomic object components (2010-07-22)}
  
  If an Atomic object has a pragma @code{Pack} or a @code{Component_Size}
  attribute, then individual components may not be addressable by independent
--- 27829,27835 ----
  @itemize *
  
  @item 
! `AI-0201 Independence of atomic object components (2010-07-22)'
  
  If an Atomic object has a pragma @code{Pack} or a @code{Component_Size}
  attribute, then individual components may not be addressable by independent
*************** RM References:  9.10 (1/3)   C.06 (22/2)
*** 28052,28058 ****
  @itemize *
  
  @item 
! @emph{AI-0009 Pragma Independent[_Components] (2010-07-23)}
  
  This AI introduces the new pragmas @code{Independent} and
  @code{Independent_Components},
--- 27848,27854 ----
  @itemize *
  
  @item 
! `AI-0009 Pragma Independent[_Components] (2010-07-23)'
  
  This AI introduces the new pragmas @code{Independent} and
  @code{Independent_Components},
*************** C.06 (4)   C.06 (6)   C.06 (9)   C.06 (1
*** 28069,28075 ****
  @itemize *
  
  @item 
! @emph{AI-0072 Task signalling using ‘Terminated (0000-00-00)}
  
  This AI clarifies that task signalling for reading @code{'Terminated} only
  occurs if the result is True. GNAT semantics has always been consistent with
--- 27865,27871 ----
  @itemize *
  
  @item 
! `AI-0072 Task signalling using ‘Terminated (0000-00-00)'
  
  This AI clarifies that task signalling for reading @code{'Terminated} only
  occurs if the result is True. GNAT semantics has always been consistent with
*************** RM References:  9.10 (6.1/1)
*** 28084,28090 ****
  @itemize *
  
  @item 
! @emph{AI-0108 Limited incomplete view and discriminants (0000-00-00)}
  
  This AI confirms that an incomplete type from a limited view does not have
  discriminants. This has always been the case in GNAT.
--- 27880,27886 ----
  @itemize *
  
  @item 
! `AI-0108 Limited incomplete view and discriminants (0000-00-00)'
  
  This AI confirms that an incomplete type from a limited view does not have
  discriminants. This has always been the case in GNAT.
*************** RM References:  10.01.01 (12.3/2)
*** 28098,28104 ****
  @itemize *
  
  @item 
! @emph{AI-0129 Limited views and incomplete types (0000-00-00)}
  
  This AI clarifies the description of limited views: a limited view of a
  package includes only one view of a type that has an incomplete declaration
--- 27894,27900 ----
  @itemize *
  
  @item 
! `AI-0129 Limited views and incomplete types (0000-00-00)'
  
  This AI clarifies the description of limited views: a limited view of a
  package includes only one view of a type that has an incomplete declaration
*************** RM References:  10.01.01 (12.2/2)   10.0
*** 28115,28121 ****
  @itemize *
  
  @item 
! @emph{AI-0077 Limited withs and scope of declarations (0000-00-00)}
  
  This AI clarifies that a declaration does not include a context clause,
  and confirms that it is illegal to have a context in which both a limited
--- 27911,27917 ----
  @itemize *
  
  @item 
! `AI-0077 Limited withs and scope of declarations (0000-00-00)'
  
  This AI clarifies that a declaration does not include a context clause,
  and confirms that it is illegal to have a context in which both a limited
*************** RM References:  10.01.02 (12/2)   10.01.
*** 28131,28137 ****
  @itemize *
  
  @item 
! @emph{AI-0122 Private with and children of generics (0000-00-00)}
  
  This AI clarifies the visibility of private children of generic units within
  instantiations of a parent. GNAT has always handled this correctly.
--- 27927,27933 ----
  @itemize *
  
  @item 
! `AI-0122 Private with and children of generics (0000-00-00)'
  
  This AI clarifies the visibility of private children of generic units within
  instantiations of a parent. GNAT has always handled this correctly.
*************** RM References:  10.01.02 (12/2)
*** 28145,28151 ****
  @itemize *
  
  @item 
! @emph{AI-0040 Limited with clauses on descendant (0000-00-00)}
  
  This AI confirms that a limited with clause in a child unit cannot name
  an ancestor of the unit. This has always been checked in GNAT.
--- 27941,27947 ----
  @itemize *
  
  @item 
! `AI-0040 Limited with clauses on descendant (0000-00-00)'
  
  This AI confirms that a limited with clause in a child unit cannot name
  an ancestor of the unit. This has always been checked in GNAT.
*************** RM References:  10.01.02 (20/2)
*** 28159,28165 ****
  @itemize *
  
  @item 
! @emph{AI-0132 Placement of library unit pragmas (0000-00-00)}
  
  This AI fills a gap in the description of library unit pragmas. The pragma
  clearly must apply to a library unit, even if it does not carry the name
--- 27955,27961 ----
  @itemize *
  
  @item 
! `AI-0132 Placement of library unit pragmas (0000-00-00)'
  
  This AI fills a gap in the description of library unit pragmas. The pragma
  clearly must apply to a library unit, even if it does not carry the name
*************** RM References:  10.01.05 (7)
*** 28174,28180 ****
  @itemize *
  
  @item 
! @emph{AI-0034 Categorization of limited views (0000-00-00)}
  
  The RM makes certain limited with clauses illegal because of categorization
  considerations, when the corresponding normal with would be legal. This is
--- 27970,27976 ----
  @itemize *
  
  @item 
! `AI-0034 Categorization of limited views (0000-00-00)'
  
  The RM makes certain limited with clauses illegal because of categorization
  considerations, when the corresponding normal with would be legal. This is
*************** RM References:  10.02.01 (11/1)   10.02.
*** 28189,28195 ****
  @itemize *
  
  @item 
! @emph{AI-0035 Inconsistencies with Pure units (0000-00-00)}
  
  This AI remedies some inconsistencies in the legality rules for Pure units.
  Derived access types are legal in a pure unit (on the assumption that the
--- 27985,27991 ----
  @itemize *
  
  @item 
! `AI-0035 Inconsistencies with Pure units (0000-00-00)'
  
  This AI remedies some inconsistencies in the legality rules for Pure units.
  Derived access types are legal in a pure unit (on the assumption that the
*************** RM References:  10.02.01 (15.1/2)   10.0
*** 28206,28212 ****
  @itemize *
  
  @item 
! @emph{AI-0219 Pure permissions and limited parameters (2010-05-25)}
  
  This AI refines the rules for the cases with limited parameters which do not
  allow the implementations to omit ‘redundant’. GNAT now properly conforms
--- 28002,28008 ----
  @itemize *
  
  @item 
! `AI-0219 Pure permissions and limited parameters (2010-05-25)'
  
  This AI refines the rules for the cases with limited parameters which do not
  allow the implementations to omit ‘redundant’. GNAT now properly conforms
*************** RM References:  10.02.01 (18/2)
*** 28221,28227 ****
  @itemize *
  
  @item 
! @emph{AI-0043 Rules about raising exceptions (0000-00-00)}
  
  This AI covers various omissions in the RM regarding the raising of
  exceptions. GNAT has always implemented the intended semantics.
--- 28017,28023 ----
  @itemize *
  
  @item 
! `AI-0043 Rules about raising exceptions (0000-00-00)'
  
  This AI covers various omissions in the RM regarding the raising of
  exceptions. GNAT has always implemented the intended semantics.
*************** RM References:  11.04.01 (10.1/2)   11 (
*** 28235,28241 ****
  @itemize *
  
  @item 
! @emph{AI-0200 Mismatches in formal package declarations (0000-00-00)}
  
  This AI plugs a gap in the RM which appeared to allow some obviously intended
  illegal instantiations. GNAT has never allowed these instantiations.
--- 28031,28037 ----
  @itemize *
  
  @item 
! `AI-0200 Mismatches in formal package declarations (0000-00-00)'
  
  This AI plugs a gap in the RM which appeared to allow some obviously intended
  illegal instantiations. GNAT has never allowed these instantiations.
*************** RM References:  12.07 (16)
*** 28249,28255 ****
  @itemize *
  
  @item 
! @emph{AI-0112 Detection of duplicate pragmas (2010-07-24)}
  
  This AI concerns giving names to various representation aspects, but the
  practical effect is simply to make the use of duplicate
--- 28045,28051 ----
  @itemize *
  
  @item 
! `AI-0112 Detection of duplicate pragmas (2010-07-24)'
  
  This AI concerns giving names to various representation aspects, but the
  practical effect is simply to make the use of duplicate
*************** RM References:  13.01 (8)
*** 28267,28273 ****
  @itemize *
  
  @item 
! @emph{AI-0106 No representation pragmas on generic formals (0000-00-00)}
  
  The RM appeared to allow representation pragmas on generic formal parameters,
  but this was not intended, and GNAT has never permitted this usage.
--- 28063,28069 ----
  @itemize *
  
  @item 
! `AI-0106 No representation pragmas on generic formals (0000-00-00)'
  
  The RM appeared to allow representation pragmas on generic formal parameters,
  but this was not intended, and GNAT has never permitted this usage.
*************** RM References:  13.01 (9.1/1)
*** 28281,28287 ****
  @itemize *
  
  @item 
! @emph{AI-0012 Pack/Component_Size for aliased/atomic (2010-07-15)}
  
  It is now illegal to give an inappropriate component size or a pragma
  @code{Pack} that attempts to change the component size in the case of atomic
--- 28077,28083 ----
  @itemize *
  
  @item 
! `AI-0012 Pack/Component_Size for aliased/atomic (2010-07-15)'
  
  It is now illegal to give an inappropriate component size or a pragma
  @code{Pack} that attempts to change the component size in the case of atomic
*************** RM References:  13.02 (6.1/2)   13.02 (7
*** 28297,28303 ****
  @itemize *
  
  @item 
! @emph{AI-0039 Stream attributes cannot be dynamic (0000-00-00)}
  
  The RM permitted the use of dynamic expressions (such as @code{ptr.all})`
  for stream attributes, but these were never useful and are now illegal. GNAT
--- 28093,28099 ----
  @itemize *
  
  @item 
! `AI-0039 Stream attributes cannot be dynamic (0000-00-00)'
  
  The RM permitted the use of dynamic expressions (such as @code{ptr.all})`
  for stream attributes, but these were never useful and are now illegal. GNAT
*************** RM References:  13.03 (4)   13.03 (6)
*** 28312,28318 ****
  @itemize *
  
  @item 
! @emph{AI-0095 Address of intrinsic subprograms (0000-00-00)}
  
  The prefix of @code{'Address} cannot statically denote a subprogram with
  convention @code{Intrinsic}. The use of the @code{Address} attribute raises
--- 28108,28114 ----
  @itemize *
  
  @item 
! `AI-0095 Address of intrinsic subprograms (0000-00-00)'
  
  The prefix of @code{'Address} cannot statically denote a subprogram with
  convention @code{Intrinsic}. The use of the @code{Address} attribute raises
*************** RM References:  13.03 (11/1)
*** 28328,28334 ****
  @itemize *
  
  @item 
! @emph{AI-0116 Alignment of class-wide objects (0000-00-00)}
  
  This AI requires that the alignment of a class-wide object be no greater
  than the alignment of any type in the class. GNAT has always followed this
--- 28124,28130 ----
  @itemize *
  
  @item 
! `AI-0116 Alignment of class-wide objects (0000-00-00)'
  
  This AI requires that the alignment of a class-wide object be no greater
  than the alignment of any type in the class. GNAT has always followed this
*************** RM References:  13.03 (29)   13.11 (16)
*** 28343,28349 ****
  @itemize *
  
  @item 
! @emph{AI-0146 Type invariants (2009-09-21)}
  
  Type invariants may be specified for private types using the aspect notation.
  Aspect @code{Type_Invariant} may be specified for any private type,
--- 28139,28145 ----
  @itemize *
  
  @item 
! `AI-0146 Type invariants (2009-09-21)'
  
  Type invariants may be specified for private types using the aspect notation.
  Aspect @code{Type_Invariant} may be specified for any private type,
*************** only be specified for tagged types, and
*** 28352,28358 ****
  tagged types. The invariant is a boolean expression that is tested for being
  true in the following situations: conversions to the private type, object
  declarations for the private type that are default initialized, and
! [@strong{in}] @strong{out}
  parameters and returned result on return from any primitive operation for
  the type that is visible to a client.
  GNAT defines the synonyms @code{Invariant} for @code{Type_Invariant} and
--- 28148,28154 ----
  tagged types. The invariant is a boolean expression that is tested for being
  true in the following situations: conversions to the private type, object
  declarations for the private type that are default initialized, and
! [`in'] `out'
  parameters and returned result on return from any primitive operation for
  the type that is visible to a client.
  GNAT defines the synonyms @code{Invariant} for @code{Type_Invariant} and
*************** RM References:  13.03.03 (00)
*** 28367,28373 ****
  @itemize *
  
  @item 
! @emph{AI-0078 Relax Unchecked_Conversion alignment rules (0000-00-00)}
  
  In Ada 2012, compilers are required to support unchecked conversion where the
  target alignment is a multiple of the source alignment. GNAT always supported
--- 28163,28169 ----
  @itemize *
  
  @item 
! `AI-0078 Relax Unchecked_Conversion alignment rules (0000-00-00)'
  
  In Ada 2012, compilers are required to support unchecked conversion where the
  target alignment is a multiple of the source alignment. GNAT always supported
*************** RM References:  13.09 (7)
*** 28383,28389 ****
  @itemize *
  
  @item 
! @emph{AI-0195 Invalid value handling is implementation defined (2010-07-03)}
  
  The handling of invalid values is now designated to be implementation
  defined. This is a documentation change only, requiring Annex M in the GNAT
--- 28179,28185 ----
  @itemize *
  
  @item 
! `AI-0195 Invalid value handling is implementation defined (2010-07-03)'
  
  The handling of invalid values is now designated to be implementation
  defined. This is a documentation change only, requiring Annex M in the GNAT
*************** RM References:  13.09.01 (10)
*** 28403,28409 ****
  @itemize *
  
  @item 
! @emph{AI-0193 Alignment of allocators (2010-09-16)}
  
  This AI introduces a new attribute @code{Max_Alignment_For_Allocation},
  analogous to @code{Max_Size_In_Storage_Elements}, but for alignment instead
--- 28199,28205 ----
  @itemize *
  
  @item 
! `AI-0193 Alignment of allocators (2010-09-16)'
  
  This AI introduces a new attribute @code{Max_Alignment_For_Allocation},
  analogous to @code{Max_Size_In_Storage_Elements}, but for alignment instead
*************** RM References:  13.11 (16)   13.11 (21)
*** 28419,28425 ****
  @itemize *
  
  @item 
! @emph{AI-0177 Parameterized expressions (2010-07-10)}
  
  The new Ada 2012 notion of parameterized expressions is implemented. The form
  is:
--- 28215,28221 ----
  @itemize *
  
  @item 
! `AI-0177 Parameterized expressions (2010-07-10)'
  
  The new Ada 2012 notion of parameterized expressions is implemented. The form
  is:
*************** RM References:  13.11.01 (3/2)
*** 28441,28447 ****
  @itemize *
  
  @item 
! @emph{AI-0033 Attach/Interrupt_Handler in generic (2010-07-24)}
  
  Neither of these two pragmas may appear within a generic template, because
  the generic might be instantiated at other than the library level.
--- 28237,28243 ----
  @itemize *
  
  @item 
! `AI-0033 Attach/Interrupt_Handler in generic (2010-07-24)'
  
  Neither of these two pragmas may appear within a generic template, because
  the generic might be instantiated at other than the library level.
*************** RM References:  13.11.02 (16)   C.03.01
*** 28455,28461 ****
  @itemize *
  
  @item 
! @emph{AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)}
  
  A new restriction @code{No_Default_Stream_Attributes} prevents the use of any
  of the default stream attributes for elementary types. If this restriction is
--- 28251,28257 ----
  @itemize *
  
  @item 
! `AI-0161 Restriction No_Default_Stream_Attributes (2010-09-11)'
  
  A new restriction @code{No_Default_Stream_Attributes} prevents the use of any
  of the default stream attributes for elementary types. If this restriction is
*************** RM References:  13.12.01 (4/2)   13.13.0
*** 28471,28477 ****
  @itemize *
  
  @item 
! @emph{AI-0194 Value of Stream_Size attribute (0000-00-00)}
  
  The @code{Stream_Size} attribute returns the default number of bits in the
  stream representation of the given type.
--- 28267,28273 ----
  @itemize *
  
  @item 
! `AI-0194 Value of Stream_Size attribute (0000-00-00)'
  
  The @code{Stream_Size} attribute returns the default number of bits in the
  stream representation of the given type.
*************** RM References:  13.13.02 (1.2/2)
*** 28488,28494 ****
  @itemize *
  
  @item 
! @emph{AI-0109 Redundant check in S’Class’Input (0000-00-00)}
  
  This AI is an editorial change only. It removes the need for a tag check
  that can never fail.
--- 28284,28290 ----
  @itemize *
  
  @item 
! `AI-0109 Redundant check in S’Class’Input (0000-00-00)'
  
  This AI is an editorial change only. It removes the need for a tag check
  that can never fail.
*************** RM References:  13.13.02 (34/2)
*** 28502,28508 ****
  @itemize *
  
  @item 
! @emph{AI-0007 Stream read and private scalar types (0000-00-00)}
  
  The RM as written appeared to limit the possibilities of declaring read
  attribute procedures for private scalar types. This limitation was not
--- 28298,28304 ----
  @itemize *
  
  @item 
! `AI-0007 Stream read and private scalar types (0000-00-00)'
  
  The RM as written appeared to limit the possibilities of declaring read
  attribute procedures for private scalar types. This limitation was not
*************** RM References:  13.13.02 (50/2)   13.13.
*** 28517,28523 ****
  @itemize *
  
  @item 
! @emph{AI-0065 Remote access types and external streaming (0000-00-00)}
  
  This AI clarifies the fact that all remote access types support external
  streaming. This fixes an obvious oversight in the definition of the
--- 28313,28319 ----
  @itemize *
  
  @item 
! `AI-0065 Remote access types and external streaming (0000-00-00)'
  
  This AI clarifies the fact that all remote access types support external
  streaming. This fixes an obvious oversight in the definition of the
*************** RM References:  13.13.02 (52/2)
*** 28532,28538 ****
  @itemize *
  
  @item 
! @emph{AI-0019 Freezing of primitives for tagged types (0000-00-00)}
  
  The RM suggests that primitive subprograms of a specific tagged type are
  frozen when the tagged type is frozen. This would be an incompatible change
--- 28328,28334 ----
  @itemize *
  
  @item 
! `AI-0019 Freezing of primitives for tagged types (0000-00-00)'
  
  The RM suggests that primitive subprograms of a specific tagged type are
  frozen when the tagged type is frozen. This would be an incompatible change
*************** RM References:  13.14 (2)   13.14 (3/1)
*** 28548,28554 ****
  @itemize *
  
  @item 
! @emph{AI-0017 Freezing and incomplete types (0000-00-00)}
  
  So-called ‘Taft-amendment types’ (i.e., types that are completed in package
  bodies) are not frozen by the occurrence of bodies in the
--- 28344,28350 ----
  @itemize *
  
  @item 
! `AI-0017 Freezing and incomplete types (0000-00-00)'
  
  So-called ‘Taft-amendment types’ (i.e., types that are completed in package
  bodies) are not frozen by the occurrence of bodies in the
*************** RM References:  13.14 (3/1)
*** 28563,28569 ****
  @itemize *
  
  @item 
! @emph{AI-0060 Extended definition of remote access types (0000-00-00)}
  
  This AI extends the definition of remote access types to include access
  to limited, synchronized, protected or task class-wide interface types.
--- 28359,28365 ----
  @itemize *
  
  @item 
! `AI-0060 Extended definition of remote access types (0000-00-00)'
  
  This AI extends the definition of remote access types to include access
  to limited, synchronized, protected or task class-wide interface types.
*************** RM References:  A (4)   E.02.02 (9/1)
*** 28578,28584 ****
  @itemize *
  
  @item 
! @emph{AI-0114 Classification of letters (0000-00-00)}
  
  The code points 170 (@code{FEMININE ORDINAL INDICATOR}),
  181 (@code{MICRO SIGN}), and
--- 28374,28380 ----
  @itemize *
  
  @item 
! `AI-0114 Classification of letters (0000-00-00)'
  
  The code points 170 (@code{FEMININE ORDINAL INDICATOR}),
  181 (@code{MICRO SIGN}), and
*************** RM References:  A.03.02 (59)   A.04.06 (
*** 28597,28603 ****
  @itemize *
  
  @item 
! @emph{AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)}
  
  Two new packages @code{Ada.Wide_[Wide_]Characters.Handling} provide
  classification functions for @code{Wide_Character} and
--- 28393,28399 ----
  @itemize *
  
  @item 
! `AI-0185 Ada.Wide_[Wide_]Characters.Handling (2010-07-06)'
  
  Two new packages @code{Ada.Wide_[Wide_]Characters.Handling} provide
  classification functions for @code{Wide_Character} and
*************** RM References:  A.03.05 (0)   A.03.06 (0
*** 28614,28620 ****
  @itemize *
  
  @item 
! @emph{AI-0031 Add From parameter to Find_Token (2010-07-25)}
  
  A new version of @code{Find_Token} is added to all relevant string packages,
  with an extra parameter @code{From}. Instead of starting at the first
--- 28410,28416 ----
  @itemize *
  
  @item 
! `AI-0031 Add From parameter to Find_Token (2010-07-25)'
  
  A new version of @code{Find_Token} is added to all relevant string packages,
  with an extra parameter @code{From}. Instead of starting at the first
*************** A.04.05 (46)
*** 28634,28640 ****
  @itemize *
  
  @item 
! @emph{AI-0056 Index on null string returns zero (0000-00-00)}
  
  The wording in the Ada 2005 RM implied an incompatible handling of the
  @code{Index} functions, resulting in raising an exception instead of
--- 28430,28436 ----
  @itemize *
  
  @item 
! `AI-0056 Index on null string returns zero (0000-00-00)'
  
  The wording in the Ada 2005 RM implied an incompatible handling of the
  @code{Index} functions, resulting in raising an exception instead of
*************** RM References:  A.04.03 (56.2/2)   A.04.
*** 28651,28657 ****
  @itemize *
  
  @item 
! @emph{AI-0137 String encoding package (2010-03-25)}
  
  The packages @code{Ada.Strings.UTF_Encoding}, together with its child
  packages, @code{Conversions}, @code{Strings}, @code{Wide_Strings},
--- 28447,28453 ----
  @itemize *
  
  @item 
! `AI-0137 String encoding package (2010-03-25)'
  
  The packages @code{Ada.Strings.UTF_Encoding}, together with its child
  packages, @code{Conversions}, @code{Strings}, @code{Wide_Strings},
*************** RM References:  A.04.11
*** 28677,28683 ****
  @itemize *
  
  @item 
! @emph{AI-0038 Minor errors in Text_IO (0000-00-00)}
  
  These are minor errors in the description on three points. The intent on
  all these points has always been clear, and GNAT has always implemented the
--- 28473,28479 ----
  @itemize *
  
  @item 
! `AI-0038 Minor errors in Text_IO (0000-00-00)'
  
  These are minor errors in the description on three points. The intent on
  all these points has always been clear, and GNAT has always implemented the
*************** RM References:  A.10.05 (37)   A.10.07 (
*** 28692,28698 ****
  @itemize *
  
  @item 
! @emph{AI-0044 Restrictions on container instantiations (0000-00-00)}
  
  This AI places restrictions on allowed instantiations of generic containers.
  These restrictions are not checked by the compiler, so there is nothing to
--- 28488,28494 ----
  @itemize *
  
  @item 
! `AI-0044 Restrictions on container instantiations (0000-00-00)'
  
  This AI places restrictions on allowed instantiations of generic containers.
  These restrictions are not checked by the compiler, so there is nothing to
*************** RM References:  A.18 (4/2)   A.18.02 (23
*** 28707,28713 ****
  @itemize *
  
  @item 
! @emph{AI-0127 Adding Locale Capabilities (2010-09-29)}
  
  This package provides an interface for identifying the current locale.
  
--- 28503,28509 ----
  @itemize *
  
  @item 
! `AI-0127 Adding Locale Capabilities (2010-09-29)'
  
  This package provides an interface for identifying the current locale.
  
*************** A.19.07    A.19.08    A.19.09    A.19.10
*** 28721,28727 ****
  @itemize *
  
  @item 
! @emph{AI-0002 Export C with unconstrained arrays (0000-00-00)}
  
  The compiler is not required to support exporting an Ada subprogram with
  convention C if there are parameters or a return type of an unconstrained
--- 28517,28523 ----
  @itemize *
  
  @item 
! `AI-0002 Export C with unconstrained arrays (0000-00-00)'
  
  The compiler is not required to support exporting an Ada subprogram with
  convention C if there are parameters or a return type of an unconstrained
*************** RM References:  B.01 (17)   B.03 (62)
*** 28739,28745 ****
  @itemize *
  
  @item 
! @emph{AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)}
  
  It is clearly the intention that @code{No_Task_Hierarchy} is intended to
  forbid tasks declared locally within subprograms, or functions returning task
--- 28535,28541 ----
  @itemize *
  
  @item 
! `AI-0216 No_Task_Hierarchy forbids local tasks (0000-00-00)'
  
  It is clearly the intention that @code{No_Task_Hierarchy} is intended to
  forbid tasks declared locally within subprograms, or functions returning task
*************** RM References:  D.07 (3/3)
*** 28756,28762 ****
  @itemize *
  
  @item 
! @emph{AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)}
  
  The restriction @code{No_Relative_Delays} forbids any calls to the subprogram
  @code{Ada.Real_Time.Timing_Events.Set_Handler}.
--- 28552,28558 ----
  @itemize *
  
  @item 
! `AI-0211 No_Relative_Delays forbids Set_Handler use (2010-07-09)'
  
  The restriction @code{No_Relative_Delays} forbids any calls to the subprogram
  @code{Ada.Real_Time.Timing_Events.Set_Handler}.
*************** RM References:  D.07 (5)   D.07 (10/2)
*** 28770,28781 ****
  @itemize *
  
  @item 
! @emph{AI-0190 pragma Default_Storage_Pool (2010-09-15)}
  
  This AI introduces a new pragma @code{Default_Storage_Pool}, which can be
  used to control storage pools globally.
  In particular, you can force every access
! type that is used for allocation (@strong{new}) to have an explicit storage pool,
  or you can declare a pool globally to be used for all access types that lack
  an explicit one.
  
--- 28566,28577 ----
  @itemize *
  
  @item 
! `AI-0190 pragma Default_Storage_Pool (2010-09-15)'
  
  This AI introduces a new pragma @code{Default_Storage_Pool}, which can be
  used to control storage pools globally.
  In particular, you can force every access
! type that is used for allocation (`new') to have an explicit storage pool,
  or you can declare a pool globally to be used for all access types that lack
  an explicit one.
  
*************** RM References:  D.07 (8)
*** 28788,28794 ****
  @itemize *
  
  @item 
! @emph{AI-0189 No_Allocators_After_Elaboration (2010-01-23)}
  
  This AI introduces a new restriction @code{No_Allocators_After_Elaboration},
  which says that no dynamic allocation will occur once elaboration is
--- 28584,28590 ----
  @itemize *
  
  @item 
! `AI-0189 No_Allocators_After_Elaboration (2010-01-23)'
  
  This AI introduces a new restriction @code{No_Allocators_After_Elaboration},
  which says that no dynamic allocation will occur once elaboration is
*************** RM References:  D.07 (19.1/2)   H.04 (23
*** 28807,28813 ****
  @itemize *
  
  @item 
! @emph{AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)}
  
  A new package @code{System.Multiprocessors} is added, together with the
  definition of pragma @code{CPU} for controlling task affinity. A new no
--- 28603,28609 ----
  @itemize *
  
  @item 
! `AI-0171 Pragma CPU and Ravenscar Profile (2010-09-24)'
  
  A new package @code{System.Multiprocessors} is added, together with the
  definition of pragma @code{CPU} for controlling task affinity. A new no
*************** RM References:  D.13.01 (4/2)   D.16
*** 28823,28829 ****
  @itemize *
  
  @item 
! @emph{AI-0210 Correct Timing_Events metric (0000-00-00)}
  
  This is a documentation only issue regarding wording of metric requirements,
  that does not affect the implementation of the compiler.
--- 28619,28625 ----
  @itemize *
  
  @item 
! `AI-0210 Correct Timing_Events metric (0000-00-00)'
  
  This is a documentation only issue regarding wording of metric requirements,
  that does not affect the implementation of the compiler.
*************** RM References:  D.15 (24/2)
*** 28837,28843 ****
  @itemize *
  
  @item 
! @emph{AI-0206 Remote types packages and preelaborate (2010-07-24)}
  
  Remote types packages are now allowed to depend on preelaborated packages.
  This was formerly considered illegal.
--- 28633,28639 ----
  @itemize *
  
  @item 
! `AI-0206 Remote types packages and preelaborate (2010-07-24)'
  
  Remote types packages are now allowed to depend on preelaborated packages.
  This was formerly considered illegal.
*************** RM References:  E.02.02 (6)
*** 28851,28857 ****
  @itemize *
  
  @item 
! @emph{AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)}
  
  Restriction @code{No_Anonymous_Allocators} prevents the use of allocators
  where the type of the returned value is an anonymous access type.
--- 28647,28653 ----
  @itemize *
  
  @item 
! `AI-0152 Restriction No_Anonymous_Allocators (2010-09-08)'
  
  Restriction @code{No_Anonymous_Allocators} prevents the use of allocators
  where the type of the returned value is an anonymous access type.
*************** RM References:  H.04 (8/1)
*** 28860,28892 ****
  @end itemize
  
  @node Security Hardening Features,Obsolescent Features,Implementation of Ada 2012 Features,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{43a}@anchor{gnat_rm/security_hardening_features id1}@anchor{43b}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
  This chapter describes Ada extensions aimed at security hardening that
  are provided by GNAT.
  
  @c Register Scrubbing:
  
  @menu
  * Register Scrubbing:: 
  * Stack Scrubbing:: 
  * Hardened Conditionals:: 
  
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{43c}
  @section Register Scrubbing
  
  
  GNAT can generate code to zero-out hardware registers before returning
  from a subprogram.
  
! It can be enabled with the @emph{-fzero-call-used-regs} command line
! option, to affect all subprograms in a compilation, and with a
! @code{Machine_Attribute} pragma, to affect only specific subprograms.
  
  @example
  procedure Foo;
--- 28656,28694 ----
  @end itemize
  
  @node Security Hardening Features,Obsolescent Features,Implementation of Ada 2012 Features,Top
! @anchor{gnat_rm/security_hardening_features doc}@anchor{42b}@anchor{gnat_rm/security_hardening_features id1}@anchor{42c}@anchor{gnat_rm/security_hardening_features security-hardening-features}@anchor{15}
  @chapter Security Hardening Features
  
  
  This chapter describes Ada extensions aimed at security hardening that
  are provided by GNAT.
  
+ The features in this chapter are currently experimental and subject to
+ change.
+ 
  @c Register Scrubbing:
  
  @menu
  * Register Scrubbing:: 
  * Stack Scrubbing:: 
  * Hardened Conditionals:: 
+ * Hardened Booleans:: 
+ * Control Flow Redundancy:: 
  
  @end menu
  
  @node Register Scrubbing,Stack Scrubbing,,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features register-scrubbing}@anchor{42d}
  @section Register Scrubbing
  
  
  GNAT can generate code to zero-out hardware registers before returning
  from a subprogram.
  
! It can be enabled with the @code{-fzero-call-used-regs=`choice'}
! command-line option, to affect all subprograms in a compilation, and
! with a @code{Machine_Attribute} pragma, to affect only specific
! subprograms.
  
  @example
  procedure Foo;
*************** pragma Machine_Attribute (Bar, "zero_cal
*** 28899,28924 ****
  --  Before returning, Bar scrubs all call-clobbered registers.
  @end example
  
! For usage and more details on the command line option, and on the
! @code{zero_call_used_regs} attribute, see @cite{Using the GNU Compiler Collection (GCC)}.
  
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{43d}
  @section Stack Scrubbing
  
  
  GNAT can generate code to zero-out stack frames used by subprograms.
  
  It can be activated with the @code{Machine_Attribute} pragma, on
! specific subprograms and variables.
  
  @example
  function Foo returns Integer;
  pragma Machine_Attribute (Foo, "strub");
  --  Foo and its callers are modified so as to scrub the stack
! --  space used by Foo after it returns.
  
  procedure Bar;
  pragma Machine_Attribute (Bar, "strub", "internal");
--- 28701,28730 ----
  --  Before returning, Bar scrubs all call-clobbered registers.
  @end example
  
! For usage and more details on the command-line option, on the
! @code{zero_call_used_regs} attribute, and on their use with other
! programming languages, see @cite{Using the GNU Compiler Collection (GCC)}.
  
  @c Stack Scrubbing:
  
  @node Stack Scrubbing,Hardened Conditionals,Register Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features stack-scrubbing}@anchor{42e}
  @section Stack Scrubbing
  
  
  GNAT can generate code to zero-out stack frames used by subprograms.
  
  It can be activated with the @code{Machine_Attribute} pragma, on
! specific subprograms and variables, or their types.  (This attribute
! always applies to a type, even when it is associated with a subprogram
! or a variable.)
  
  @example
  function Foo returns Integer;
  pragma Machine_Attribute (Foo, "strub");
  --  Foo and its callers are modified so as to scrub the stack
! --  space used by Foo after it returns.  Shorthand for:
! --  pragma Machine_Attribute (Foo, "strub", "at-calls");
  
  procedure Bar;
  pragma Machine_Attribute (Bar, "strub", "internal");
*************** pragma Machine_Attribute (Bar, "strub",
*** 28928,28939 ****
  Var : Integer;
  pragma Machine_Attribute (Var, "strub");
  --  Reading from Var in a subprogram enables stack scrubbing
! --  of the stack space used by the subprogram.
  @end example
  
! There are also @emph{-fstrub} command line options to control default
! settings.  For usage and more details on the command line option, and
! on the @code{strub} attribute, see @cite{Using the GNU Compiler Collection (GCC)}.
  
  Note that Ada secondary stacks are not scrubbed.  The restriction
  @code{No_Secondary_Stack} avoids their use, and thus their accidental
--- 28734,28797 ----
  Var : Integer;
  pragma Machine_Attribute (Var, "strub");
  --  Reading from Var in a subprogram enables stack scrubbing
! --  of the stack space used by the subprogram.  Furthermore, if
! --  Var is declared within a subprogram, this also enables
! --  scrubbing of the stack space used by that subprogram.
  @end example
  
! Given these declarations, Foo has its type and body modified as
! follows:
! 
! @example
! function Foo (<WaterMark> : in out System.Address) returns Integer
! is
!   --  ...
! begin
!   <__strub_update> (<WaterMark>);  --  Updates the stack WaterMark.
!   --  ...
! end;
! @end example
! 
! whereas its callers are modified from:
! 
! @example
! X := Foo;
! @end example
! 
! to:
! 
! @example
! declare
!   <WaterMark> : System.Address;
! begin
!   <__strub_enter> (<WaterMark>);  -- Initialize <WaterMark>.
!   X := Foo (<WaterMark>);
!   <__strub_leave> (<WaterMark>);  -- Scrubs stack up to <WaterMark>.
! end;
! @end example
! 
! As for Bar, because it is strubbed in internal mode, its callers are
! not modified.  Its definition is modified roughly as follows:
! 
! @example
! procedure Bar is
!   <WaterMark> : System.Address;
!   procedure Strubbed_Bar (<WaterMark> : in out System.Address) is
!   begin
!     <__strub_update> (<WaterMark>);  --  Updates the stack WaterMark.
!     -- original Bar body.
!   end Strubbed_Bar;
! begin
!   <__strub_enter> (<WaterMark>);  -- Initialize <WaterMark>.
!   Strubbed_Bar (<WaterMark>);
!   <__strub_leave> (<WaterMark>);  -- Scrubs stack up to <WaterMark>.
! end Bar;
! @end example
! 
! There are also @code{-fstrub=`choice'} command-line options to
! control default settings.  For usage and more details on the
! command-line options, on the @code{strub} attribute, and their use with
! other programming languages, see @cite{Using the GNU Compiler Collection (GCC)}.
  
  Note that Ada secondary stacks are not scrubbed.  The restriction
  @code{No_Secondary_Stack} avoids their use, and thus their accidental
*************** there is no way to express an access-to-
*** 28946,28961 ****
  access type designates a non-strub type.
  
  @example
! VI : Integer;
  XsVI : access Integer := VI'Access; -- Error.
  UXsVI : access Integer := VI'Unchecked_Access; -- OK,
! -- UXsVI.all does not enable strub in the enclosing subprogram.
  
  type Strub_Int is new Integer;
  pragma Machine_Attribute (Strub_Int, "strub");
! VSI : Strub_Int;
! XsVSI : access Strub_Int := VSI'Access; -- OK.
! -- XsVSI.all enables strub in the enclosing subprogram.
  @end example
  
  Every access-to-subprogram type, renaming, and overriding and
--- 28804,28822 ----
  access type designates a non-strub type.
  
  @example
! VI : aliased Integer;
! pragma Machine_Attribute (VI, "strub");
  XsVI : access Integer := VI'Access; -- Error.
  UXsVI : access Integer := VI'Unchecked_Access; -- OK,
! --  UXsVI does *not* enable strub in subprograms that
! --  dereference it to obtain the UXsVI.all value.
  
  type Strub_Int is new Integer;
  pragma Machine_Attribute (Strub_Int, "strub");
! VSI : aliased Strub_Int;
! XsVSI : access Strub_Int := VSI'Access; -- OK,
! --  VSI and XsVSI.all both enable strub in subprograms that
! --  read their values.
  @end example
  
  Every access-to-subprogram type, renaming, and overriding and
*************** type TBar is access procedure;
*** 28972,28977 ****
--- 28833,28841 ----
  
  type TBar_Callable is access procedure;
  pragma Machine_Attribute (TBar_Callable, "strub", "callable");
+ --  The attribute modifies the procedure type, rather than the
+ --  access type, because of the extra argument after "strub",
+ --  only applicable to subprogram types.
  
  Bar_Callable_Ptr : constant TBar_Callable
             := TBar_Callable (TBar'(Bar'Access));
*************** Bar_Callable_Ptr.
*** 28987,29009 ****
  
  @c Hardened Conditionals:
  
! @node Hardened Conditionals,,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{43e}
  @section Hardened Conditionals
  
  
! GNAT can harden conditionals to protect against control flow attacks.
  
  This is accomplished by two complementary transformations, each
  activated by a separate command-line option.
  
! The option @emph{-fharden-compares} enables hardening of compares that
! compute results stored in variables, adding verification that the
! reversed compare yields the opposite result.
  
! The option @emph{-fharden-conditional-branches} enables hardening of
! compares that guard conditional branches, adding verification of the
! reversed compare to both execution paths.
  
  These transformations are introduced late in the compilation pipeline,
  long after boolean expressions are decomposed into separate compares,
--- 28851,28916 ----
  
  @c Hardened Conditionals:
  
! @node Hardened Conditionals,Hardened Booleans,Stack Scrubbing,Security Hardening Features
! @anchor{gnat_rm/security_hardening_features hardened-conditionals}@anchor{42f}
  @section Hardened Conditionals
  
  
! GNAT can harden conditionals to protect against control-flow attacks.
  
  This is accomplished by two complementary transformations, each
  activated by a separate command-line option.
  
! The option @code{-fharden-compares} enables hardening of compares
! that compute results stored in variables, adding verification that the
! reversed compare yields the opposite result, turning:
  
! @example
! B := X = Y;
! @end example
! 
! into:
! 
! @example
! B := X = Y;
! declare
!   NotB : Boolean := X /= Y; -- Computed independently of B.
! begin
!   if B = NotB then
!     <__builtin_trap>;
!   end if;
! end;
! @end example
! 
! The option @code{-fharden-conditional-branches} enables hardening
! of compares that guard conditional branches, adding verification of
! the reversed compare to both execution paths, turning:
! 
! @example
! if X = Y then
!   X := Z + 1;
! else
!   Y := Z - 1;
! end if;
! @end example
! 
! into:
! 
! @example
! if X = Y then
!   if X /= Y then -- Computed independently of X = Y.
!     <__builtin_trap>;
!   end if;
!   X := Z + 1;
! else
!   if X /= Y then -- Computed independently of X = Y.
!     null;
!   else
!     <__builtin_trap>;
!   end if;
!   Y := Z - 1;
! end if;
! @end example
  
  These transformations are introduced late in the compilation pipeline,
  long after boolean expressions are decomposed into separate compares,
*************** options ensures that every compare that
*** 29021,29034 ****
  optimized into implied conditionals will be hardened.
  
  The addition of reversed compares can be observed by enabling the dump
! files of the corresponding passes, through command line options
! @emph{-fdump-tree-hardcmp} and @emph{-fdump-tree-hardcbr}, respectively.
  
  They are separate options, however, because of the significantly
  different performance impact of the hardening transformations.
  
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{43f}@anchor{gnat_rm/obsolescent_features id1}@anchor{440}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
--- 28928,29169 ----
  optimized into implied conditionals will be hardened.
  
  The addition of reversed compares can be observed by enabling the dump
! files of the corresponding passes, through command-line options
! @code{-fdump-tree-hardcmp} and @code{-fdump-tree-hardcbr},
! respectively.
  
  They are separate options, however, because of the significantly
  different performance impact of the hardening transformations.
  
+ For usage and more details on the command-line options, see
+ @cite{Using the GNU Compiler Collection (GCC)}.  These options can
+ be used with other programming languages supported by GCC.
+ 
+ @c Hardened Booleans:
+ 
+ @node Hardened Booleans,Control Flow Redundancy,Hardened Conditionals,Security Hardening Features
+ @anchor{gnat_rm/security_hardening_features hardened-booleans}@anchor{430}
+ @section Hardened Booleans
+ 
+ 
+ Ada has built-in support for introducing boolean types with
+ alternative representations, using representation clauses:
+ 
+ @example
+ type HBool is new Boolean;
+ for HBool use (16#5a#, 16#a5#);
+ for HBool'Size use 8;
+ @end example
+ 
+ When validity checking is enabled, the compiler will check that
+ variables of such types hold values corresponding to the selected
+ representations.
+ 
+ There are multiple strategies for where to introduce validity checking
+ (see @code{-gnatV} options).  Their goal is to guard against
+ various kinds of programming errors, and GNAT strives to omit checks
+ when program logic rules out an invalid value, and optimizers may
+ further remove checks found to be redundant.
+ 
+ For additional hardening, the @code{hardbool} @code{Machine_Attribute}
+ pragma can be used to annotate boolean types with representation
+ clauses, so that expressions of such types used as conditions are
+ checked even when compiling with @code{-gnatVT}:
+ 
+ @example
+ pragma Machine_Attribute (HBool, "hardbool");
+ 
+ function To_Boolean (X : HBool) returns Boolean is (Boolean (X));
+ @end example
+ 
+ is compiled roughly like:
+ 
+ @example
+ function To_Boolean (X : HBool) returns Boolean is
+ begin
+   if X not in True | False then
+     raise Constraint_Error;
+   elsif X in True then
+     return True;
+   else
+     return False;
+   end if;
+ end To_Boolean;
+ @end example
+ 
+ Note that @code{-gnatVn} will disable even @code{hardbool} testing.
+ 
+ Analogous behavior is available as a GCC extension to the C and
+ Objective C programming languages, through the @code{hardbool} attribute,
+ with the difference that, instead of raising a Constraint_Error
+ exception, when a hardened boolean variable is found to hold a value
+ that stands for neither True nor False, the program traps.  For usage
+ and more details on that attribute, see @cite{Using the GNU Compiler Collection (GCC)}.
+ 
+ @c Control Flow Redundancy:
+ 
+ @node Control Flow Redundancy,,Hardened Booleans,Security Hardening Features
+ @anchor{gnat_rm/security_hardening_features control-flow-redundancy}@anchor{431}
+ @section Control Flow Redundancy
+ 
+ 
+ GNAT can guard against unexpected execution flows, such as branching
+ into the middle of subprograms, as in Return Oriented Programming
+ exploits.
+ 
+ In units compiled with @code{-fharden-control-flow-redundancy},
+ subprograms are instrumented so that, every time they are called,
+ basic blocks take note as control flows through them, and, before
+ returning, subprograms verify that the taken notes are consistent with
+ the control-flow graph.
+ 
+ Functions with too many basic blocks, or with multiple return points,
+ call a run-time function to perform the verification.  Other functions
+ perform the verification inline before returning.
+ 
+ Optimizing the inlined verification can be quite time consuming, so
+ the default upper limit for the inline mode is set at 16 blocks.
+ Command-line option @code{--param hardcfr-max-inline-blocks=} can
+ override it.
+ 
+ Even though typically sparse control-flow graphs exhibit run-time
+ verification time nearly proportional to the block count of a
+ subprogram, it may become very significant for generated subprograms
+ with thousands of blocks.  Command-line option
+ @code{--param hardcfr-max-blocks=} can set an upper limit for
+ instrumentation.
+ 
+ For each block that is marked as visited, the mechanism checks that at
+ least one of its predecessors, and at least one of its successors, are
+ also marked as visited.
+ 
+ Verification is performed just before a subprogram returns.  The
+ following fragment:
+ 
+ @example
+ if X then
+   Y := F (Z);
+   return;
+ end if;
+ @end example
+ 
+ gets turned into:
+ 
+ @example
+ type Visited_Bitmap is array (1..N) of Boolean with Pack;
+ Visited : aliased Visited_Bitmap := (others => False);
+ --  Bitmap of visited blocks.  N is the basic block count.
+ [...]
+ --  Basic block #I
+ Visited(I) := True;
+ if X then
+   --  Basic block #J
+   Visited(J) := True;
+   Y := F (Z);
+   CFR.Check (N, Visited'Access, CFG'Access);
+   --  CFR is a hypothetical package whose Check procedure calls
+   --  libgcc's __hardcfr_check, that traps if the Visited bitmap
+   --  does not hold a valid path in CFG, the run-time
+   --  representation of the control flow graph in the enclosing
+   --  subprogram.
+   return;
+ end if;
+ --  Basic block #K
+ Visited(K) := True;
+ @end example
+ 
+ Verification would also be performed before tail calls, if any
+ front-ends marked them as mandatory or desirable, but none do.
+ Regular calls are optimized into tail calls too late for this
+ transformation to act on it.
+ 
+ In order to avoid adding verification after potential tail calls,
+ which would prevent tail-call optimization, we recognize returning
+ calls, i.e., calls whose result, if any, is returned by the calling
+ subprogram to its caller immediately after the call returns.
+ Verification is performed before such calls, whether or not they are
+ ultimately optimized to tail calls.  This behavior is enabled by
+ default whenever sibcall optimization is enabled (see
+ @code{-foptimize-sibling-calls}); it may be disabled with
+ @code{-fno-hardcfr-check-returning-calls}, or enabled with
+ @code{-fhardcfr-check-returning-calls}, regardless of the
+ optimization, but the lack of other optimizations may prevent calls
+ from being recognized as returning calls:
+ 
+ @example
+ --  CFR.Check here, with -fhardcfr-check-returning-calls.
+ P (X);
+ --  CFR.Check here, with -fno-hardcfr-check-returning-calls.
+ return;
+ @end example
+ 
+ or:
+ 
+ @example
+ --  CFR.Check here, with -fhardcfr-check-returning-calls.
+ R := F (X);
+ --  CFR.Check here, with -fno-hardcfr-check-returning-calls.
+ return R;
+ @end example
+ 
+ Any subprogram from which an exception may escape, i.e., that may
+ raise or propagate an exception that isn’t handled internally, is
+ conceptually enclosed by a cleanup handler that performs verification,
+ unless this is disabled with @code{-fno-hardcfr-check-exceptions}.
+ With this feature enabled, a subprogram body containing:
+ 
+ @example
+ --  ...
+   Y := F (X);  -- May raise exceptions.
+ --  ...
+   raise E;  -- Not handled internally.
+ --  ...
+ @end example
+ 
+ gets modified as follows:
+ 
+ @example
+ begin
+   --  ...
+     Y := F (X);  -- May raise exceptions.
+   --  ...
+     raise E;  -- Not handled internally.
+   --  ...
+ exception
+   when others =>
+     CFR.Check (N, Visited'Access, CFG'Access);
+     raise;
+ end;
+ @end example
+ 
+ Verification may also be performed before No_Return calls, whether
+ only nothrow ones, with
+ @code{-fhardcfr-check-noreturn-calls=nothrow}, or all of them, with
+ @code{-fhardcfr-check-noreturn-calls=always}.  The default is
+ @code{-fhardcfr-check-noreturn-calls=never} for this feature, that
+ disables checking before No_Return calls.
+ 
+ When a No_Return call returns control to its caller through an
+ exception, verification may have already been performed before the
+ call, if @code{-fhardcfr-check-noreturn-calls=always} is in effect.
+ The compiler arranges for already-checked No_Return calls without a
+ preexisting handler to bypass the implicitly-added cleanup handler and
+ thus the redundant check, but a local exception or cleanup handler, if
+ present, will modify the set of visited blocks, and checking will take
+ place again when the caller reaches the next verification point,
+ whether it is a return or reraise statement after the exception is
+ otherwise handled, or even another No_Return call.
+ 
+ The instrumentation for hardening with control flow redundancy can be
+ observed in dump files generated by the command-line option
+ @code{-fdump-tree-hardcfr}.
+ 
+ For more details on the control flow redundancy command-line options,
+ see @cite{Using the GNU Compiler Collection (GCC)}.  These options
+ can be used with other programming languages supported by GCC.
+ 
  @node Obsolescent Features,Compatibility and Porting Guide,Security Hardening Features,Top
! @anchor{gnat_rm/obsolescent_features doc}@anchor{432}@anchor{gnat_rm/obsolescent_features id1}@anchor{433}@anchor{gnat_rm/obsolescent_features obsolescent-features}@anchor{16}
  @chapter Obsolescent Features
  
  
*************** compatibility purposes.
*** 29047,29053 ****
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{441}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{442}
  @section pragma No_Run_Time
  
  
--- 29182,29188 ----
  @end menu
  
  @node pragma No_Run_Time,pragma Ravenscar,,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id2}@anchor{434}@anchor{gnat_rm/obsolescent_features pragma-no-run-time}@anchor{435}
  @section pragma No_Run_Time
  
  
*************** preferred usage is to use an appropriate
*** 29060,29066 ****
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{443}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{444}
  @section pragma Ravenscar
  
  
--- 29195,29201 ----
  includes just those features that are to be made accessible.
  
  @node pragma Ravenscar,pragma Restricted_Run_Time,pragma No_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id3}@anchor{436}@anchor{gnat_rm/obsolescent_features pragma-ravenscar}@anchor{437}
  @section pragma Ravenscar
  
  
*************** The pragma @code{Ravenscar} has exactly
*** 29069,29075 ****
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{445}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{446}
  @section pragma Restricted_Run_Time
  
  
--- 29204,29210 ----
  is part of the new Ada 2005 standard.
  
  @node pragma Restricted_Run_Time,pragma Task_Info,pragma Ravenscar,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id4}@anchor{438}@anchor{gnat_rm/obsolescent_features pragma-restricted-run-time}@anchor{439}
  @section pragma Restricted_Run_Time
  
  
*************** preferred since the Ada 2005 pragma @cod
*** 29079,29085 ****
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{447}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{448}
  @section pragma Task_Info
  
  
--- 29214,29220 ----
  this kind of implementation dependent addition.
  
  @node pragma Task_Info,package System Task_Info s-tasinf ads,pragma Restricted_Run_Time,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features id5}@anchor{43a}@anchor{gnat_rm/obsolescent_features pragma-task-info}@anchor{43b}
  @section pragma Task_Info
  
  
*************** in the spec of package System.Task_Info
*** 29105,29111 ****
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{449}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{44a}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
--- 29240,29246 ----
  library.
  
  @node package System Task_Info s-tasinf ads,,pragma Task_Info,Obsolescent Features
! @anchor{gnat_rm/obsolescent_features package-system-task-info}@anchor{43c}@anchor{gnat_rm/obsolescent_features package-system-task-info-s-tasinf-ads}@anchor{43d}
  @section package System.Task_Info (@code{s-tasinf.ads})
  
  
*************** to support the @code{Task_Info} pragma.
*** 29115,29121 ****
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{44b}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{44c}
  @chapter Compatibility and Porting Guide
  
  
--- 29250,29256 ----
  standard replacement for GNAT’s @code{Task_Info} functionality.
  
  @node Compatibility and Porting Guide,GNU Free Documentation License,Obsolescent Features,Top
! @anchor{gnat_rm/compatibility_and_porting_guide doc}@anchor{43e}@anchor{gnat_rm/compatibility_and_porting_guide compatibility-and-porting-guide}@anchor{17}@anchor{gnat_rm/compatibility_and_porting_guide id1}@anchor{43f}
  @chapter Compatibility and Porting Guide
  
  
*************** applications developed in other Ada envi
*** 29137,29143 ****
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{44d}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{44e}
  @section Writing Portable Fixed-Point Declarations
  
  
--- 29272,29278 ----
  @end menu
  
  @node Writing Portable Fixed-Point Declarations,Compatibility with Ada 83,,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id2}@anchor{440}@anchor{gnat_rm/compatibility_and_porting_guide writing-portable-fixed-point-declarations}@anchor{441}
  @section Writing Portable Fixed-Point Declarations
  
  
*************** If you follow this scheme you will be gu
*** 29259,29265 ****
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{44f}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{450}
  @section Compatibility with Ada 83
  
  
--- 29394,29400 ----
  types will be portable.
  
  @node Compatibility with Ada 83,Compatibility between Ada 95 and Ada 2005,Writing Portable Fixed-Point Declarations,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-ada-83}@anchor{442}@anchor{gnat_rm/compatibility_and_porting_guide id3}@anchor{443}
  @section Compatibility with Ada 83
  
  
*************** following subsections treat the most lik
*** 29287,29293 ****
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{451}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{452}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
--- 29422,29428 ----
  @end menu
  
  @node Legal Ada 83 programs that are illegal in Ada 95,More deterministic semantics,,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id4}@anchor{444}@anchor{gnat_rm/compatibility_and_porting_guide legal-ada-83-programs-that-are-illegal-in-ada-95}@anchor{445}
  @subsection Legal Ada 83 programs that are illegal in Ada 95
  
  
*************** Ada 95 and later versions of the standar
*** 29298,29304 ****
  @itemize *
  
  @item 
! @emph{Character literals}
  
  Some uses of character literals are ambiguous.  Since Ada 95 has introduced
  @code{Wide_Character} as a new predefined character type, some uses of
--- 29433,29439 ----
  @itemize *
  
  @item 
! `Character literals'
  
  Some uses of character literals are ambiguous.  Since Ada 95 has introduced
  @code{Wide_Character} as a new predefined character type, some uses of
*************** for Char in Character range 'A' .. 'Z' l
*** 29318,29324 ****
  @end example
  
  @item 
! @emph{New reserved words}
  
  The identifiers @code{abstract}, @code{aliased}, @code{protected},
  @code{requeue}, @code{tagged}, and @code{until} are reserved in Ada 95.
--- 29453,29459 ----
  @end example
  
  @item 
! `New reserved words'
  
  The identifiers @code{abstract}, @code{aliased}, @code{protected},
  @code{requeue}, @code{tagged}, and @code{until} are reserved in Ada 95.
*************** Existing Ada 83 code using any of these
*** 29326,29332 ****
  use some alternative name.
  
  @item 
! @emph{Freezing rules}
  
  The rules in Ada 95 are slightly different with regard to the point at
  which entities are frozen, and representation pragmas and clauses are
--- 29461,29467 ----
  use some alternative name.
  
  @item 
! `Freezing rules'
  
  The rules in Ada 95 are slightly different with regard to the point at
  which entities are frozen, and representation pragmas and clauses are
*************** cannot be applied to a subprogram body.
*** 29340,29346 ****
  declaration must be introduced to which the pragma can be applied.
  
  @item 
! @emph{Optional bodies for library packages}
  
  In Ada 83, a package that did not require a package body was nevertheless
  allowed to have one.  This lead to certain surprises in compiling large
--- 29475,29481 ----
  declaration must be introduced to which the pragma can be applied.
  
  @item 
! `Optional bodies for library packages'
  
  In Ada 83, a package that did not require a package body was nevertheless
  allowed to have one.  This lead to certain surprises in compiling large
*************** circularities) is to add an @code{Elabor
*** 29357,29363 ****
  since one effect of this pragma is to require the presence of a package body.
  
  @item 
! @emph{Numeric_Error is the same exception as Constraint_Error}
  
  In Ada 95, the exception @code{Numeric_Error} is a renaming of @code{Constraint_Error}.
  This means that it is illegal to have separate exception handlers for
--- 29492,29498 ----
  since one effect of this pragma is to require the presence of a package body.
  
  @item 
! `Numeric_Error is the same exception as Constraint_Error'
  
  In Ada 95, the exception @code{Numeric_Error} is a renaming of @code{Constraint_Error}.
  This means that it is illegal to have separate exception handlers for
*************** the two exceptions.  The fix is simply t
*** 29366,29372 ****
  @code{Constraint_Error} in place of @code{Numeric_Error} in all cases).
  
  @item 
! @emph{Indefinite subtypes in generics}
  
  In Ada 83, it was permissible to pass an indefinite type (e.g, @code{String})
  as the actual for a generic formal private type, but then the instantiation
--- 29501,29507 ----
  @code{Constraint_Error} in place of @code{Numeric_Error} in all cases).
  
  @item 
! `Indefinite subtypes in generics'
  
  In Ada 83, it was permissible to pass an indefinite type (e.g, @code{String})
  as the actual for a generic formal private type, but then the instantiation
*************** the fix is usually simply to add the @co
*** 29387,29393 ****
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{453}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{454}
  @subsection More deterministic semantics
  
  
--- 29522,29528 ----
  @end itemize
  
  @node More deterministic semantics,Changed semantics,Legal Ada 83 programs that are illegal in Ada 95,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id5}@anchor{446}@anchor{gnat_rm/compatibility_and_porting_guide more-deterministic-semantics}@anchor{447}
  @subsection More deterministic semantics
  
  
*************** the fix is usually simply to add the @co
*** 29395,29401 ****
  @itemize *
  
  @item 
! @emph{Conversions}
  
  Conversions from real types to integer types round away from 0.  In Ada 83
  the conversion Integer(2.5) could deliver either 2 or 3 as its value.  This
--- 29530,29536 ----
  @itemize *
  
  @item 
! `Conversions'
  
  Conversions from real types to integer types round away from 0.  In Ada 83
  the conversion Integer(2.5) could deliver either 2 or 3 as its value.  This
*************** Note, though, that this issue is no wors
*** 29407,29413 ****
  when porting code from one vendor to another.
  
  @item 
! @emph{Tasking}
  
  The Real-Time Annex introduces a set of policies that define the behavior of
  features that were implementation dependent in Ada 83, such as the order in
--- 29542,29548 ----
  when porting code from one vendor to another.
  
  @item 
! `Tasking'
  
  The Real-Time Annex introduces a set of policies that define the behavior of
  features that were implementation dependent in Ada 83, such as the order in
*************** which open select branches are executed.
*** 29415,29421 ****
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{455}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{456}
  @subsection Changed semantics
  
  
--- 29550,29556 ----
  @end itemize
  
  @node Changed semantics,Other language compatibility issues,More deterministic semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide changed-semantics}@anchor{448}@anchor{gnat_rm/compatibility_and_porting_guide id6}@anchor{449}
  @subsection Changed semantics
  
  
*************** situation that you should be alert to is
*** 29434,29440 ****
  @itemize *
  
  @item 
! @emph{Range of type `@w{`}Character`@w{`}}
  
  The range of @code{Standard.Character} is now the full 256 characters
  of Latin-1, whereas in most Ada 83 implementations it was restricted
--- 29569,29575 ----
  @itemize *
  
  @item 
! `Range of type `@w{`}Character`@w{`}'
  
  The range of @code{Standard.Character} is now the full 256 characters
  of Latin-1, whereas in most Ada 83 implementations it was restricted
*************** covers only the restricted range.
*** 29457,29463 ****
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{457}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{458}
  @subsection Other language compatibility issues
  
  
--- 29592,29598 ----
  @end itemize
  
  @node Other language compatibility issues,,Changed semantics,Compatibility with Ada 83
! @anchor{gnat_rm/compatibility_and_porting_guide id7}@anchor{44a}@anchor{gnat_rm/compatibility_and_porting_guide other-language-compatibility-issues}@anchor{44b}
  @subsection Other language compatibility issues
  
  
*************** covers only the restricted range.
*** 29465,29471 ****
  @itemize *
  
  @item 
! @emph{-gnat83} switch
  
  All implementations of GNAT provide a switch that causes GNAT to operate
  in Ada 83 mode.  In this mode, some but not all compatibility problems
--- 29600,29606 ----
  @itemize *
  
  @item 
! `-gnat83' switch
  
  All implementations of GNAT provide a switch that causes GNAT to operate
  in Ada 83 mode.  In this mode, some but not all compatibility problems
*************** include @code{pragma Interface} and the
*** 29490,29496 ****
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{459}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{45a}
  @section Compatibility between Ada 95 and Ada 2005
  
  
--- 29625,29631 ----
  @end itemize
  
  @node Compatibility between Ada 95 and Ada 2005,Implementation-dependent characteristics,Compatibility with Ada 83,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-between-ada-95-and-ada-2005}@anchor{44c}@anchor{gnat_rm/compatibility_and_porting_guide id8}@anchor{44d}
  @section Compatibility between Ada 95 and Ada 2005
  
  
*************** for a complete description please see th
*** 29506,29512 ****
  @itemize *
  
  @item 
! @emph{New reserved words.}
  
  The words @code{interface}, @code{overriding} and @code{synchronized} are
  reserved in Ada 2005.
--- 29641,29647 ----
  @itemize *
  
  @item 
! `New reserved words.'
  
  The words @code{interface}, @code{overriding} and @code{synchronized} are
  reserved in Ada 2005.
*************** A pre-Ada 2005 program that uses any of
*** 29514,29520 ****
  illegal.
  
  @item 
! @emph{New declarations in predefined packages.}
  
  A number of packages in the predefined environment contain new declarations:
  @code{Ada.Exceptions}, @code{Ada.Real_Time}, @code{Ada.Strings},
--- 29649,29655 ----
  illegal.
  
  @item 
! `New declarations in predefined packages.'
  
  A number of packages in the predefined environment contain new declarations:
  @code{Ada.Exceptions}, @code{Ada.Real_Time}, @code{Ada.Strings},
*************** If an Ada 95 program does a @code{with}
*** 29526,29551 ****
  packages, the new declarations may cause name clashes.
  
  @item 
! @emph{Access parameters.}
  
  A nondispatching subprogram with an access parameter cannot be renamed
  as a dispatching operation.  This was permitted in Ada 95.
  
  @item 
! @emph{Access types, discriminants, and constraints.}
  
  Rule changes in this area have led to some incompatibilities; for example,
  constrained subtypes of some access types are not permitted in Ada 2005.
  
  @item 
! @emph{Aggregates for limited types.}
  
  The allowance of aggregates for limited types in Ada 2005 raises the
  possibility of ambiguities in legal Ada 95 programs, since additional types
  now need to be considered in expression resolution.
  
  @item 
! @emph{Fixed-point multiplication and division.}
  
  Certain expressions involving ‘*’ or ‘/’ for a fixed-point type, which
  were legal in Ada 95 and invoked the predefined versions of these operations,
--- 29661,29686 ----
  packages, the new declarations may cause name clashes.
  
  @item 
! `Access parameters.'
  
  A nondispatching subprogram with an access parameter cannot be renamed
  as a dispatching operation.  This was permitted in Ada 95.
  
  @item 
! `Access types, discriminants, and constraints.'
  
  Rule changes in this area have led to some incompatibilities; for example,
  constrained subtypes of some access types are not permitted in Ada 2005.
  
  @item 
! `Aggregates for limited types.'
  
  The allowance of aggregates for limited types in Ada 2005 raises the
  possibility of ambiguities in legal Ada 95 programs, since additional types
  now need to be considered in expression resolution.
  
  @item 
! `Fixed-point multiplication and division.'
  
  Certain expressions involving ‘*’ or ‘/’ for a fixed-point type, which
  were legal in Ada 95 and invoked the predefined versions of these operations,
*************** expression, or by explicitly invoking th
*** 29555,29568 ****
  @code{Standard}.
  
  @item 
! @emph{Return-by-reference types.}
  
  The Ada 95 return-by-reference mechanism has been removed.  Instead, the user
  can declare a function returning a value from an anonymous access type.
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{45b}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{45c}
  @section Implementation-dependent characteristics
  
  
--- 29690,29703 ----
  @code{Standard}.
  
  @item 
! `Return-by-reference types.'
  
  The Ada 95 return-by-reference mechanism has been removed.  Instead, the user
  can declare a function returning a value from an anonymous access type.
  @end itemize
  
  @node Implementation-dependent characteristics,Compatibility with Other Ada Systems,Compatibility between Ada 95 and Ada 2005,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id9}@anchor{44e}@anchor{gnat_rm/compatibility_and_porting_guide implementation-dependent-characteristics}@anchor{44f}
  @section Implementation-dependent characteristics
  
  
*************** transition from certain Ada 83 compilers
*** 29585,29591 ****
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{45d}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{45e}
  @subsection Implementation-defined pragmas
  
  
--- 29720,29726 ----
  @end menu
  
  @node Implementation-defined pragmas,Implementation-defined attributes,,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id10}@anchor{450}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-pragmas}@anchor{451}
  @subsection Implementation-defined pragmas
  
  
*************** avoiding compiler rejection of units tha
*** 29607,29613 ****
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{45f}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{460}
  @subsection Implementation-defined attributes
  
  
--- 29742,29748 ----
  relevant in a GNAT context and hence are not otherwise implemented.
  
  @node Implementation-defined attributes,Libraries,Implementation-defined pragmas,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id11}@anchor{452}@anchor{gnat_rm/compatibility_and_porting_guide implementation-defined-attributes}@anchor{453}
  @subsection Implementation-defined attributes
  
  
*************** Ada 83, GNAT supplies the attributes @co
*** 29621,29627 ****
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{461}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{462}
  @subsection Libraries
  
  
--- 29756,29762 ----
  @code{Type_Class}.
  
  @node Libraries,Elaboration order,Implementation-defined attributes,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id12}@anchor{454}@anchor{gnat_rm/compatibility_and_porting_guide libraries}@anchor{455}
  @subsection Libraries
  
  
*************** be preferable to retrofit the applicatio
*** 29650,29656 ****
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{463}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{464}
  @subsection Elaboration order
  
  
--- 29785,29791 ----
  @end itemize
  
  @node Elaboration order,Target-specific aspects,Libraries,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide elaboration-order}@anchor{456}@anchor{gnat_rm/compatibility_and_porting_guide id13}@anchor{457}
  @subsection Elaboration order
  
  
*************** elaboration problems) by implicitly inse
*** 29664,29670 ****
  @code{Elaborate_All} pragmas where
  needed.  However, this can lead to the creation of elaboration circularities
  and a resulting rejection of the program by gnatbind.  This issue is
! thoroughly described in the @emph{Elaboration Order Handling in GNAT} appendix
  in the @cite{GNAT User’s Guide}.
  In brief, there are several
  ways to deal with this situation:
--- 29799,29805 ----
  @code{Elaborate_All} pragmas where
  needed.  However, this can lead to the creation of elaboration circularities
  and a resulting rejection of the program by gnatbind.  This issue is
! thoroughly described in the `Elaboration Order Handling in GNAT' appendix
  in the @cite{GNAT User’s Guide}.
  In brief, there are several
  ways to deal with this situation:
*************** elaboration-time code into explicitly-in
*** 29680,29692 ****
  Constrain the elaboration order by including explicit @code{Elaborate_Body} or
  @code{Elaborate} pragmas, and then inhibit the generation of implicit
  @code{Elaborate_All}
! pragmas either globally (as an effect of the @emph{-gnatE} switch) or locally
  (by selectively suppressing elaboration checks via pragma
  @code{Suppress(Elaboration_Check)} when it is safe to do so).
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{465}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{466}
  @subsection Target-specific aspects
  
  
--- 29815,29827 ----
  Constrain the elaboration order by including explicit @code{Elaborate_Body} or
  @code{Elaborate} pragmas, and then inhibit the generation of implicit
  @code{Elaborate_All}
! pragmas either globally (as an effect of the `-gnatE' switch) or locally
  (by selectively suppressing elaboration checks via pragma
  @code{Suppress(Elaboration_Check)} when it is safe to do so).
  @end itemize
  
  @node Target-specific aspects,,Elaboration order,Implementation-dependent characteristics
! @anchor{gnat_rm/compatibility_and_porting_guide id14}@anchor{458}@anchor{gnat_rm/compatibility_and_porting_guide target-specific-aspects}@anchor{459}
  @subsection Target-specific aspects
  
  
*************** on the robustness of the original design
*** 29699,29708 ****
  Ada 2005 and Ada 2012) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{467,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{468}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{469}
  @section Compatibility with Other Ada Systems
  
  
--- 29834,29843 ----
  Ada 2005 and Ada 2012) are sometimes
  incompatible with typical Ada 83 compiler practices regarding implicit
  packing, the meaning of the Size attribute, and the size of access values.
! GNAT’s approach to these issues is described in @ref{45a,,Representation Clauses}.
  
  @node Compatibility with Other Ada Systems,Representation Clauses,Implementation-dependent characteristics,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-other-ada-systems}@anchor{45b}@anchor{gnat_rm/compatibility_and_porting_guide id15}@anchor{45c}
  @section Compatibility with Other Ada Systems
  
  
*************** when other compilers appear.)
*** 29720,29726 ****
  @itemize *
  
  @item 
! @emph{Ada 83 Pragmas and Attributes}
  
  Ada 95 compilers are allowed, but not required, to implement the missing
  Ada 83 pragmas and attributes that are no longer defined in Ada 95.
--- 29855,29861 ----
  @itemize *
  
  @item 
! `Ada 83 Pragmas and Attributes'
  
  Ada 95 compilers are allowed, but not required, to implement the missing
  Ada 83 pragmas and attributes that are no longer defined in Ada 95.
*************** a compatibility concern, but some other
*** 29729,29735 ****
  pragmas and attributes.
  
  @item 
! @emph{Specialized Needs Annexes}
  
  GNAT implements the full set of special needs annexes.  At the
  current time, it is the only Ada 95 compiler to do so.  This means that
--- 29864,29870 ----
  pragmas and attributes.
  
  @item 
! `Specialized Needs Annexes'
  
  GNAT implements the full set of special needs annexes.  At the
  current time, it is the only Ada 95 compiler to do so.  This means that
*************** programs making use of these features ma
*** 29737,29743 ****
  95 compilation systems.
  
  @item 
! @emph{Representation Clauses}
  
  Some other Ada 95 compilers implement only the minimal set of
  representation clauses required by the Ada 95 reference manual.  GNAT goes
--- 29872,29878 ----
  95 compilation systems.
  
  @item 
! `Representation Clauses'
  
  Some other Ada 95 compilers implement only the minimal set of
  representation clauses required by the Ada 95 reference manual.  GNAT goes
*************** far beyond this minimal set, as describe
*** 29745,29751 ****
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{46a}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{467}
  @section Representation Clauses
  
  
--- 29880,29886 ----
  @end itemize
  
  @node Representation Clauses,Compatibility with HP Ada 83,Compatibility with Other Ada Systems,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide id16}@anchor{45d}@anchor{gnat_rm/compatibility_and_porting_guide representation-clauses}@anchor{45a}
  @section Representation Clauses
  
  
*************** the cases most likely to arise in existi
*** 29769,29775 ****
  @itemize *
  
  @item 
! @emph{Implicit Packing}
  
  Some Ada 83 compilers allowed a Size specification to cause implicit
  packing of an array or record.  This could cause expensive implicit
--- 29904,29910 ----
  @itemize *
  
  @item 
! `Implicit Packing'
  
  Some Ada 83 compilers allowed a Size specification to cause implicit
  packing of an array or record.  This could cause expensive implicit
*************** the explicit pragma @code{Pack}, or for
*** 29785,29791 ****
  a Component_Size clause.
  
  @item 
! @emph{Meaning of Size Attribute}
  
  The Size attribute in Ada 95 (and Ada 2005) for discrete types is defined as
  the minimal number of bits required to hold values of the type.  For example,
--- 29920,29926 ----
  a Component_Size clause.
  
  @item 
! `Meaning of Size Attribute'
  
  The Size attribute in Ada 95 (and Ada 2005) for discrete types is defined as
  the minimal number of bits required to hold values of the type.  For example,
*************** Object_Size can provide a useful way of
*** 29798,29804 ****
  some Ada 83 compiler systems.
  
  @item 
! @emph{Size of Access Types}
  
  A common assumption in Ada 83 code is that an access type is in fact a pointer,
  and that therefore it will be the same size as a System.Address value.  This
--- 29933,29939 ----
  some Ada 83 compiler systems.
  
  @item 
! `Size of Access Types'
  
  A common assumption in Ada 83 code is that an access type is in fact a pointer,
  and that therefore it will be the same size as a System.Address value.  This
*************** with thin pointers.
*** 29838,29844 ****
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{46b}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{46c}
  @section Compatibility with HP Ada 83
  
  
--- 29973,29979 ----
  @end itemize
  
  @node Compatibility with HP Ada 83,,Representation Clauses,Compatibility and Porting Guide
! @anchor{gnat_rm/compatibility_and_porting_guide compatibility-with-hp-ada-83}@anchor{45e}@anchor{gnat_rm/compatibility_and_porting_guide id17}@anchor{45f}
  @section Compatibility with HP Ada 83
  
  
*************** applicable to GNAT.
*** 29851,29863 ****
  @itemize *
  
  @item 
! @emph{Default floating-point representation}
  
  In GNAT, the default floating-point format is IEEE, whereas in HP Ada 83,
  it is VMS format.
  
  @item 
! @emph{System}
  
  the package System in GNAT exactly corresponds to the definition in the
  Ada 95 reference manual, which means that it excludes many of the
--- 29986,29998 ----
  @itemize *
  
  @item 
! `Default floating-point representation'
  
  In GNAT, the default floating-point format is IEEE, whereas in HP Ada 83,
  it is VMS format.
  
  @item 
! `System'
  
  the package System in GNAT exactly corresponds to the definition in the
  Ada 95 reference manual, which means that it excludes many of the
*************** extension of package System.
*** 29868,29874 ****
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{46d}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{46e}
  @chapter GNU Free Documentation License
  
  
--- 30003,30009 ----
  @end itemize
  
  @node GNU Free Documentation License,Index,Compatibility and Porting Guide,Top
! @anchor{share/gnu_free_documentation_license doc}@anchor{460}@anchor{share/gnu_free_documentation_license gnu-fdl}@anchor{1}@anchor{share/gnu_free_documentation_license gnu-free-documentation-license}@anchor{461}
  @chapter GNU Free Documentation License
  
  
*************** Copyright  2000, 2001, 2002, 2007, 2008
*** 29880,29886 ****
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! @strong{Preamble}
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document “free” in the sense of freedom: to
--- 30015,30021 ----
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! `Preamble'
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document “free” in the sense of freedom: to
*************** it can be used for any textual work, reg
*** 29903,29925 ****
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
! @strong{1. APPLICABILITY AND DEFINITIONS}
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The @strong{Document}, below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as “@strong{you}”.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  
! A “@strong{Modified Version}” of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A “@strong{Secondary Section}” is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document’s overall subject
  (or to related matters) and contains nothing that could fall directly
--- 30038,30060 ----
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
! `1. APPLICABILITY AND DEFINITIONS'
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The `Document', below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as “`you'”.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  
! A “`Modified Version'” of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A “`Secondary Section'” is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document’s overall subject
  (or to related matters) and contains nothing that could fall directly
*************** connection with the subject or with rela
*** 29930,29936 ****
  commercial, philosophical, ethical or political position regarding
  them.
  
! The “@strong{Invariant Sections}” are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
--- 30065,30071 ----
  commercial, philosophical, ethical or political position regarding
  them.
  
! The “`Invariant Sections'” are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
*************** allowed to be designated as Invariant.
*** 29938,29949 ****
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  
! The “@strong{Cover Texts}” are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may
  be at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A “@strong{Transparent}” copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
--- 30073,30084 ----
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  
! The “`Cover Texts'” are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may
  be at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A “`Transparent'” copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
*************** to text formatters.  A copy made in an o
*** 29954,29960 ****
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not “Transparent” is called @strong{Opaque}.
  
  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
--- 30089,30095 ----
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not “Transparent” is called `Opaque'.
  
  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
*************** processing tools are not generally avail
*** 29967,29988 ****
  machine-generated HTML, PostScript or PDF produced by some word
  processors for output purposes only.
  
! The “@strong{Title Page}” means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, “Title Page” means
  the text near the most prominent appearance of the work’s title,
  preceding the beginning of the body of the text.
  
! The “@strong{publisher}” means any person or entity that distributes
  copies of the Document to the public.
  
! A section “@strong{Entitled XYZ}” means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as “@strong{Acknowledgements}”,
! “@strong{Dedications}”, “@strong{Endorsements}”, or “@strong{History}”.)
! To “@strong{Preserve the Title}”
  of such a section when you modify the Document means that it remains a
  section “Entitled XYZ” according to this definition.
  
--- 30102,30123 ----
  machine-generated HTML, PostScript or PDF produced by some word
  processors for output purposes only.
  
! The “`Title Page'” means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, “Title Page” means
  the text near the most prominent appearance of the work’s title,
  preceding the beginning of the body of the text.
  
! The “`publisher'” means any person or entity that distributes
  copies of the Document to the public.
  
! A section “`Entitled XYZ'” means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as “`Acknowledgements'”,
! “`Dedications'”, “`Endorsements'”, or “`History'”.)
! To “`Preserve the Title'”
  of such a section when you modify the Document means that it remains a
  section “Entitled XYZ” according to this definition.
  
*************** License, but only as regards disclaiming
*** 29993,29999 ****
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
! @strong{2. VERBATIM COPYING}
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 30128,30134 ----
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
! `2. VERBATIM COPYING'
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 30008,30014 ****
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! @strong{3. COPYING IN QUANTITY}
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
--- 30143,30149 ----
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! `3. COPYING IN QUANTITY'
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
*************** It is requested, but not required, that
*** 30045,30051 ****
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! @strong{4. MODIFICATIONS}
  
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
--- 30180,30186 ----
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! `4. MODIFICATIONS'
  
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
*************** The author(s) and publisher(s) of the Do
*** 30162,30168 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! @strong{5. COMBINING DOCUMENTS}
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 30297,30303 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! `5. COMBINING DOCUMENTS'
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** in the various original documents, formi
*** 30186,30192 ****
  and any sections Entitled “Dedications”.  You must delete all sections
  Entitled “Endorsements”.
  
! @strong{6. COLLECTIONS OF DOCUMENTS}
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 30321,30327 ----
  and any sections Entitled “Dedications”.  You must delete all sections
  Entitled “Endorsements”.
  
! `6. COLLECTIONS OF DOCUMENTS'
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** it individually under this License, prov
*** 30199,30205 ****
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! @strong{7. AGGREGATION WITH INDEPENDENT WORKS}
  
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
--- 30334,30340 ----
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! `7. AGGREGATION WITH INDEPENDENT WORKS'
  
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
*************** electronic equivalent of covers if the D
*** 30218,30224 ****
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
! @strong{8. TRANSLATION}
  
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
--- 30353,30359 ----
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
! `8. TRANSLATION'
  
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
*************** If a section in the Document is Entitled
*** 30238,30244 ****
  its Title (section 1) will typically require changing the actual
  title.
  
! @strong{9. TERMINATION}
  
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
--- 30373,30379 ----
  its Title (section 1) will typically require changing the actual
  title.
  
! `9. TERMINATION'
  
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
*************** this License.  If your rights have been
*** 30265,30271 ****
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! @strong{10. FUTURE REVISIONS OF THIS LICENSE}
  
  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
--- 30400,30406 ----
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! `10. FUTURE REVISIONS OF THIS LICENSE'
  
  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
*************** License can be used, that proxy’s publ
*** 30286,30292 ****
  version permanently authorizes you to choose that version for the
  Document.
  
! @strong{11. RELICENSING}
  
  “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
  World Wide Web server that publishes copyrightable works and also
--- 30421,30427 ----
  version permanently authorizes you to choose that version for the
  Document.
  
! `11. RELICENSING'
  
  “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
  World Wide Web server that publishes copyrightable works and also
*************** The operator of an MMC Site may republis
*** 30315,30321 ****
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! @strong{ADDENDUM: How to use this License for your documents}
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
--- 30450,30456 ----
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! `ADDENDUM: How to use this License for your documents'
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
diff -Nrcpad gcc-12.2.0/gcc/ada/gnat_ugn.texi gcc-13.1.0/gcc/ada/gnat_ugn.texi
*** gcc-12.2.0/gcc/ada/gnat_ugn.texi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnat_ugn.texi	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  @setfilename gnat_ugn.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 4.3.1.@*
  @end ifinfo
  @settitle GNAT User's Guide for Native Platforms
  @defindex ge
--- 3,9 ----
  @setfilename gnat_ugn.info
  @documentencoding UTF-8
  @ifinfo
! @*Generated by Sphinx 5.2.3.@*
  @end ifinfo
  @settitle GNAT User's Guide for Native Platforms
  @defindex ge
***************
*** 15,31 ****
  * gnat_ugn: (gnat_ugn.info). gnat_ugn
  @end direntry
  
- @definfoenclose strong,`,'
- @definfoenclose emph,`,'
  @c %**end of header
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Jan 03, 2022
  
  AdaCore
  
! Copyright @copyright{} 2008-2022, Free Software Foundation
  @end quotation
  
  @end copying
--- 15,29 ----
  * gnat_ugn: (gnat_ugn.info). gnat_ugn
  @end direntry
  
  @c %**end of header
  
  @copying
  @quotation
! GNAT User's Guide for Native Platforms , Jan 03, 2023
  
  AdaCore
  
! Copyright @copyright{} 2008-2023, Free Software Foundation
  @end quotation
  
  @end copying
*************** Copyright @copyright{} 2008-2022, Free S
*** 48,54 ****
  
  @c %**start of body
  @anchor{gnat_ugn doc}@anchor{0}
! @emph{GNAT, The GNU Ada Development Environment}
  
  
  @include gcc-common.texi
--- 46,52 ----
  
  @c %**start of body
  @anchor{gnat_ugn doc}@anchor{0}
! `GNAT, The GNU Ada Development Environment'
  
  
  @include gcc-common.texi
*************** and @code{classes}.
*** 705,711 ****
  @code{Variables}
  
  @item 
! @emph{Emphasis}
  
  @item 
  [optional information or parameters]
--- 703,709 ----
  @code{Variables}
  
  @item 
! `Emphasis'
  
  @item 
  [optional information or parameters]
*************** following three separate files:
*** 939,953 ****
  
  @table @asis
  
! @item @emph{greetings.ads}
  
  spec of package @code{Greetings}
  
! @item @emph{greetings.adb}
  
  body of package @code{Greetings}
  
! @item @emph{gmain.adb}
  
  body of main program
  @end table
--- 937,951 ----
  
  @table @asis
  
! @item `greetings.ads'
  
  spec of package @code{Greetings}
  
! @item `greetings.adb'
  
  body of package @code{Greetings}
  
! @item `gmain.adb'
  
  body of main program
  @end table
*************** code is used to represent the end of fil
*** 1175,1182 ****
  
  Each file contains a single Ada compilation unit, including any pragmas
  associated with the unit. For example, this means you must place a
! package declaration (a package @emph{spec}) and the corresponding body in
! separate files. An Ada @emph{compilation} (which is a sequence of
  compilation units) is represented using a sequence of files. Similarly,
  you will place each subunit or child unit in a separate file.
  
--- 1173,1180 ----
  
  Each file contains a single Ada compilation unit, including any pragmas
  associated with the unit. For example, this means you must place a
! package declaration (a package `spec') and the corresponding body in
! separate files. An Ada `compilation' (which is a sequence of
  compilation units) is represented using a sequence of files. Similarly,
  you will place each subunit or child unit in a separate file.
  
*************** GNAT also supports several other 8-bit c
*** 1234,1240 ****
  
  @table @asis
  
! @item @emph{ISO 8859-2 (Latin-2)}
  
  Latin-2 letters allowed in identifiers, with uppercase and lowercase
  equivalence.
--- 1232,1238 ----
  
  @table @asis
  
! @item `ISO 8859-2 (Latin-2)'
  
  Latin-2 letters allowed in identifiers, with uppercase and lowercase
  equivalence.
*************** equivalence.
*** 1247,1253 ****
  
  @table @asis
  
! @item @emph{ISO 8859-3 (Latin-3)}
  
  Latin-3 letters allowed in identifiers, with uppercase and lowercase
  equivalence.
--- 1245,1251 ----
  
  @table @asis
  
! @item `ISO 8859-3 (Latin-3)'
  
  Latin-3 letters allowed in identifiers, with uppercase and lowercase
  equivalence.
*************** equivalence.
*** 1260,1266 ****
  
  @table @asis
  
! @item @emph{ISO 8859-4 (Latin-4)}
  
  Latin-4 letters allowed in identifiers, with uppercase and lowercase
  equivalence.
--- 1258,1264 ----
  
  @table @asis
  
! @item `ISO 8859-4 (Latin-4)'
  
  Latin-4 letters allowed in identifiers, with uppercase and lowercase
  equivalence.
*************** equivalence.
*** 1273,1279 ****
  
  @table @asis
  
! @item @emph{ISO 8859-5 (Cyrillic)}
  
  ISO 8859-5 letters (Cyrillic) allowed in identifiers, with uppercase and
  lowercase equivalence.
--- 1271,1277 ----
  
  @table @asis
  
! @item `ISO 8859-5 (Cyrillic)'
  
  ISO 8859-5 letters (Cyrillic) allowed in identifiers, with uppercase and
  lowercase equivalence.
*************** lowercase equivalence.
*** 1286,1292 ****
  
  @table @asis
  
! @item @emph{ISO 8859-15 (Latin-9)}
  
  ISO 8859-15 (Latin-9) letters allowed in identifiers, with uppercase and
  lowercase equivalence
--- 1284,1290 ----
  
  @table @asis
  
! @item `ISO 8859-15 (Latin-9)'
  
  ISO 8859-15 (Latin-9) letters allowed in identifiers, with uppercase and
  lowercase equivalence
*************** lowercase equivalence
*** 1297,1303 ****
  
  @table @asis
  
! @item @emph{IBM PC (code page 437)}
  
  This code page is the normal default for PCs in the U.S. It corresponds
  to the original IBM PC character set. This set has some, but not all, of
--- 1295,1301 ----
  
  @table @asis
  
! @item `IBM PC (code page 437)'
  
  This code page is the normal default for PCs in the U.S. It corresponds
  to the original IBM PC character set. This set has some, but not all, of
*************** identifiers with uppercase and lowercase
*** 1311,1324 ****
  
  @table @asis
  
! @item @emph{IBM PC (code page 850)}
  
  This code page is a modification of 437 extended to include all the
  Latin-1 letters, but still not with the usual Latin-1 encoding. In this
  mode, all these letters are allowed in identifiers with uppercase and
  lowercase equivalence.
  
! @item @emph{Full Upper 8-bit}
  
  Any character in the range 80-FF allowed in identifiers, and all are
  considered distinct. In other words, there are no uppercase and lowercase
--- 1309,1322 ----
  
  @table @asis
  
! @item `IBM PC (code page 850)'
  
  This code page is a modification of 437 extended to include all the
  Latin-1 letters, but still not with the usual Latin-1 encoding. In this
  mode, all these letters are allowed in identifiers with uppercase and
  lowercase equivalence.
  
! @item `Full Upper 8-bit'
  
  Any character in the range 80-FF allowed in identifiers, and all are
  considered distinct. In other words, there are no uppercase and lowercase
*************** equivalences in this range. This is usef
*** 1326,1332 ****
  certain encoding schemes used for some foreign character sets (e.g.,
  the typical method of representing Chinese characters on the PC).
  
! @item @emph{No Upper-Half}
  
  No upper-half characters in the range 80-FF are allowed in identifiers.
  This gives Ada 83 compatibility for identifier names.
--- 1324,1330 ----
  certain encoding schemes used for some foreign character sets (e.g.,
  the typical method of representing Chinese characters on the PC).
  
! @item `No Upper-Half'
  
  No upper-half characters in the range 80-FF are allowed in identifiers.
  This gives Ada 83 compatibility for identifier names.
*************** possible encoding schemes:
*** 1349,1355 ****
  
  @table @asis
  
! @item @emph{Hex Coding}
  
  In this encoding, a wide character is represented by the following five
  character sequence:
--- 1347,1353 ----
  
  @table @asis
  
! @item `Hex Coding'
  
  In this encoding, a wide character is represented by the following five
  character sequence:
*************** example, ESC A345 is used to represent t
*** 1364,1370 ****
  @code{16#A345#}.
  This scheme is compatible with use of the full Wide_Character set.
  
! @item @emph{Upper-Half Coding}
  
  @geindex Upper-Half Coding
  
--- 1362,1368 ----
  @code{16#A345#}.
  This scheme is compatible with use of the full Wide_Character set.
  
! @item `Upper-Half Coding'
  
  @geindex Upper-Half Coding
  
*************** character, but is not required to be in
*** 1375,1381 ****
  be also used for shift-JIS or EUC, where the internal coding matches the
  external coding.
  
! @item @emph{Shift JIS Coding}
  
  @geindex Shift JIS Coding
  
--- 1373,1379 ----
  be also used for shift-JIS or EUC, where the internal coding matches the
  external coding.
  
! @item `Shift JIS Coding'
  
  @geindex Shift JIS Coding
  
*************** character according to the standard algo
*** 1387,1393 ****
  conversion. Only characters defined in the JIS code set table can be
  used with this encoding method.
  
! @item @emph{EUC Coding}
  
  @geindex EUC Coding
  
--- 1385,1391 ----
  conversion. Only characters defined in the JIS code set table can be
  used with this encoding method.
  
! @item `EUC Coding'
  
  @geindex EUC Coding
  
*************** character code is the corresponding JIS
*** 1398,1404 ****
  encoding algorithm. Only characters defined in the JIS code set table
  can be used with this encoding method.
  
! @item @emph{UTF-8 Coding}
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
--- 1396,1402 ----
  encoding algorithm. Only characters defined in the JIS code set table
  can be used with this encoding method.
  
! @item `UTF-8 Coding'
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
*************** other wide characters are represented as
*** 1419,1425 ****
  6-byte sequences, and in the following section on wide wide
  characters, the use of these sequences is documented).
  
! @item @emph{Brackets Coding}
  
  In this encoding, a wide character is represented by the following eight
  character sequence:
--- 1417,1423 ----
  6-byte sequences, and in the following section on wide wide
  characters, the use of these sequences is documented).
  
! @item `Brackets Coding'
  
  In this encoding, a wide character is represented by the following eight
  character sequence:
*************** possible encoding schemes:
*** 1460,1466 ****
  
  @table @asis
  
! @item @emph{UTF-8 Coding}
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
--- 1458,1464 ----
  
  @table @asis
  
! @item `UTF-8 Coding'
  
  A wide character is represented using
  UCS Transformation Format 8 (UTF-8) as defined in Annex R of ISO
*************** is a four, five, or six byte sequence:
*** 1480,1486 ****
  where the @code{xxx} bits correspond to the left-padded bits of the
  32-bit character value.
  
! @item @emph{Brackets Coding}
  
  In this encoding, a wide wide character is represented by the following ten or
  twelve byte character sequence:
--- 1478,1484 ----
  where the @code{xxx} bits correspond to the left-padded bits of the
  32-bit character value.
  
! @item `Brackets Coding'
  
  In this encoding, a wide wide character is represented by the following ten or
  twelve byte character sequence:
*************** Display Copyright and version, then exit
*** 1971,1977 ****
  If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  
! @item @code{--subdirs=@emph{dir}}
  
  Real object, library or exec directories are subdirectories <dir> of the
  specified ones.
--- 1969,1975 ----
  If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  
! @item @code{--subdirs=`dir'}
  
  Real object, library or exec directories are subdirectories <dir> of the
  specified ones.
*************** Start another section of directories/pat
*** 1990,1996 ****
  
  @table @asis
  
! @item @code{-c@emph{filename}}
  
  Create a configuration pragmas file @code{filename} (instead of the default
  @code{gnat.adc}).
--- 1988,1994 ----
  
  @table @asis
  
! @item @code{-c`filename'}
  
  Create a configuration pragmas file @code{filename} (instead of the default
  @code{gnat.adc}).
*************** specified, no switch @code{-P} may be sp
*** 2007,2013 ****
  
  @table @asis
  
! @item @code{-d@emph{dir}}
  
  Look for source files in directory @code{dir}. There may be zero, one or more
  spaces between @code{-d} and @code{dir}.
--- 2005,2011 ----
  
  @table @asis
  
! @item @code{-d`dir'}
  
  Look for source files in directory @code{dir}. There may be zero, one or more
  spaces between @code{-d} and @code{dir}.
*************** specified with switch @code{-d} must exi
*** 2035,2041 ****
  
  @table @asis
  
! @item @code{-D@emph{filename}}
  
  Look for source files in all directories listed in text file @code{filename}.
  There may be zero, one or more spaces between @code{-D}
--- 2033,2039 ----
  
  @table @asis
  
! @item @code{-D`filename'}
  
  Look for source files in all directories listed in text file @code{filename}.
  There may be zero, one or more spaces between @code{-D}
*************** Follow symbolic links when processing pr
*** 2052,2058 ****
  
  @geindex -f (gnatname)
  
! @item @code{-f@emph{pattern}}
  
  Foreign patterns. Using this switch, it is possible to add sources of languages
  other than Ada to the list of sources of a project file.
--- 2050,2056 ----
  
  @geindex -f (gnatname)
  
! @item @code{-f`pattern'}
  
  Foreign patterns. Using this switch, it is possible to add sources of languages
  other than Ada to the list of sources of a project file.
*************** Output usage (help) information. The out
*** 2075,2081 ****
  
  @geindex -P (gnatname)
  
! @item @code{-P@emph{proj}}
  
  Create or update project file @code{proj}. There may be zero, one or more space
  between @code{-P} and @code{proj}. @code{proj} may include directory
--- 2073,2079 ----
  
  @geindex -P (gnatname)
  
! @item @code{-P`proj'}
  
  Create or update project file @code{proj}. There may be zero, one or more space
  between @code{-P} and @code{proj}. @code{proj} may include directory
*************** the Naming Patterns, an indication is gi
*** 2112,2118 ****
  
  @geindex -x (gnatname)
  
! @item @code{-x@emph{pattern}}
  
  Excluded patterns. Using this switch, it is possible to exclude some files
  that would match the name patterns. For example,
--- 2110,2116 ----
  
  @geindex -x (gnatname)
  
! @item @code{-x`pattern'}
  
  Excluded patterns. Using this switch, it is possible to exclude some files
  that would match the name patterns. For example,
*************** and GNAT, which use the prefixes
*** 2202,2208 ****
  respectively.
  @end itemize
  
! The @code{-gnatk@emph{nn}}
  switch of the compiler activates a ‘krunching’
  circuit that limits file names to nn characters (where nn is a decimal
  integer).
--- 2200,2206 ----
  respectively.
  @end itemize
  
! The @code{-gnatk`nn'}
  switch of the compiler activates a ‘krunching’
  circuit that limits file names to nn characters (where nn is a decimal
  integer).
*************** Causes @code{gnatchop} to operate in com
*** 2611,2620 ****
  configuration pragmas are handled according to strict RM rules. See
  previous section for a full description of this mode.
  
! @item @code{-gnat@emph{xxx}}
  
! This passes the given @code{-gnat@emph{xxx}} switch to @code{gnat} which is
! used to parse the given file. Not all @emph{xxx} options make sense,
  but for example, the use of @code{-gnati2} allows @code{gnatchop} to
  process a source file that uses Latin-2 coding for identifiers.
  
--- 2609,2618 ----
  configuration pragmas are handled according to strict RM rules. See
  previous section for a full description of this mode.
  
! @item @code{-gnat`xxx'}
  
! This passes the given @code{-gnat`xxx'} switch to @code{gnat} which is
! used to parse the given file. Not all `xxx' options make sense,
  but for example, the use of @code{-gnati2} allows @code{gnatchop} to
  process a source file that uses Latin-2 coding for identifiers.
  
*************** output file showing usage information.
*** 2629,2635 ****
  
  @table @asis
  
! @item @code{-k@emph{mm}}
  
  Limit generated file names to the specified number @code{mm}
  of characters.
--- 2627,2633 ----
  
  @table @asis
  
! @item @code{-k`mm'}
  
  Limit generated file names to the specified number @code{mm}
  of characters.
*************** units to be skipped.
*** 2732,2738 ****
  
  @table @asis
  
! @item @code{--GCC=@emph{xxxx}}
  
  Specify the path of the GNAT parser to be used. When this switch is used,
  no attempt is made to add the prefix to the GNAT parser executable.
--- 2730,2736 ----
  
  @table @asis
  
! @item @code{--GCC=`xxxx'}
  
  Specify the path of the GNAT parser to be used. When this switch is used,
  no attempt is made to add the prefix to the GNAT parser executable.
*************** Ada_05
*** 2807,2812 ****
--- 2805,2812 ----
  Ada_2005
  Ada_12
  Ada_2012
+ Ada_2022
+ Aggregate_Individually_Assign
  Allow_Integer_Address
  Annotate
  Assertion_Policy
*************** the type of restriction.
*** 2902,2908 ****
  Restrictions that require partition-wide consistency (like
  @code{No_Tasking}) are
  recognized wherever they appear
! and can be freely inherited, e.g. from a @emph{with}ed unit to the @emph{with}ing
  unit. This makes sense since the binder will in any case insist on seeing
  consistent use, so any unit not conforming to any restrictions that are
  anywhere in the partition will be rejected, and you might as well find
--- 2902,2908 ----
  Restrictions that require partition-wide consistency (like
  @code{No_Tasking}) are
  recognized wherever they appear
! and can be freely inherited, e.g. from a `with'ed unit to the `with'ing
  unit. This makes sense since the binder will in any case insist on seeing
  consistent use, so any unit not conforming to any restrictions that are
  anywhere in the partition will be rejected, and you might as well find
*************** configuration pragmas, or more convenien
*** 2943,2949 ****
  
  Besides @code{gnat.adc}, additional files containing configuration
  pragmas may be applied to the current compilation using the switch
! @code{-gnatec=@emph{path}} where @code{path} must designate an existing file that
  contains only configuration pragmas. These configuration pragmas are
  in addition to those found in @code{gnat.adc} (provided @code{gnat.adc}
  is present and switch @code{-gnatA} is not used).
--- 2943,2949 ----
  
  Besides @code{gnat.adc}, additional files containing configuration
  pragmas may be applied to the current compilation using the switch
! @code{-gnatec=`path'} where @code{path} must designate an existing file that
  contains only configuration pragmas. These configuration pragmas are
  in addition to those found in @code{gnat.adc} (provided @code{gnat.adc}
  is present and switch @code{-gnatA} is not used).
*************** additional source files as follows:
*** 3058,3067 ****
  @itemize *
  
  @item 
! If a file being compiled @emph{with}s a unit @code{X}, the object file
  depends on the file containing the spec of unit @code{X}. This includes
! files that are @emph{with}ed implicitly either because they are parents
! of @emph{with}ed child units or they are run-time units required by the
  language constructs used in a particular unit.
  
  @item 
--- 3058,3067 ----
  @itemize *
  
  @item 
! If a file being compiled `with's a unit @code{X}, the object file
  depends on the file containing the spec of unit @code{X}. This includes
! files that are `with'ed implicitly either because they are parents
! of `with'ed child units or they are run-time units required by the
  language constructs used in a particular unit.
  
  @item 
*************** The object file for a parent unit depend
*** 3115,3121 ****
  The previous two rules meant that for purposes of computing dependencies and
  recompilation, a body and all its subunits are treated as an indivisible whole.
  
! These rules are applied transitively: if unit @code{A} @emph{with}s
  unit @code{B}, whose elaboration calls an inlined procedure in package
  @code{C}, the object file for unit @code{A} will depend on the body of
  @code{C}, in file @code{c.adb}.
--- 3115,3121 ----
  The previous two rules meant that for purposes of computing dependencies and
  recompilation, a body and all its subunits are treated as an indivisible whole.
  
! These rules are applied transitively: if unit @code{A} `with's
  unit @code{B}, whose elaboration calls an inlined procedure in package
  @code{C}, the object file for unit @code{A} will depend on the body of
  @code{C}, in file @code{c.adb}.
*************** checking.
*** 3177,3183 ****
  Categorization information (e.g., use of pragma @code{Pure}).
  
  @item 
! Information on all @emph{with}ed units, including presence of
  @code{Elaborate} or @code{Elaborate_All} pragmas.
  
  @item 
--- 3177,3183 ----
  Categorization information (e.g., use of pragma @code{Pure}).
  
  @item 
! Information on all `with'ed units, including presence of
  @code{Elaborate} or @code{Elaborate_All} pragmas.
  
  @item 
*************** if any of these units are modified.
*** 3195,3202 ****
  
  @item 
  Cross-reference data. Contains information on all entities referenced
! in the unit. Used by tools like @code{gnatxref} and @code{gnatfind} to
! provide cross-reference information.
  @end itemize
  
  For a full detailed description of the format of the @code{ALI} file,
--- 3195,3201 ----
  
  @item 
  Cross-reference data. Contains information on all entities referenced
! in the unit. Used by some tools to provide cross-reference information.
  @end itemize
  
  For a full detailed description of the format of the @code{ALI} file,
*************** object files for the Ada units of the pr
*** 3248,3255 ****
  
  This section describes how to build and use libraries with GNAT, and also shows
  how to recompile the GNAT run-time library. You should be familiar with the
! Project Manager facility (see the @emph{GNAT_Project_Manager} chapter of the
! @emph{GPRbuild User’s Guide}) before reading this chapter.
  
  @menu
  * Introduction to Libraries in GNAT:: 
--- 3247,3254 ----
  
  This section describes how to build and use libraries with GNAT, and also shows
  how to recompile the GNAT run-time library. You should be familiar with the
! Project Manager facility (see the `GNAT_Project_Manager' chapter of the
! `GPRbuild User’s Guide') before reading this chapter.
  
  @menu
  * Introduction to Libraries in GNAT:: 
*************** documentation purposes. Alternatively, i
*** 3298,3311 ****
  an external user to make use of the library. That is to say, the specs
  reflecting the library services along with all the units needed to compile
  those specs, which can include generic bodies or any body implementing an
! inlined routine. In the case of @emph{stand-alone libraries} those exposed
! units are called @emph{interface units} (@ref{6b,,Stand-alone Ada Libraries}).
  
  All compilation units comprising an application, including those in a library,
  need to be elaborated in an order partially defined by Ada’s semantics. GNAT
  computes the elaboration order from the @code{ALI} files and this is why they
  constitute a mandatory part of GNAT libraries.
! @emph{Stand-alone libraries} are the exception to this rule because a specific
  library elaboration routine is produced independently of the application(s)
  using the library.
  
--- 3297,3310 ----
  an external user to make use of the library. That is to say, the specs
  reflecting the library services along with all the units needed to compile
  those specs, which can include generic bodies or any body implementing an
! inlined routine. In the case of `stand-alone libraries' those exposed
! units are called `interface units' (@ref{6b,,Stand-alone Ada Libraries}).
  
  All compilation units comprising an application, including those in a library,
  need to be elaborated in an order partially defined by Ada’s semantics. GNAT
  computes the elaboration order from the @code{ALI} files and this is why they
  constitute a mandatory part of GNAT libraries.
! `Stand-alone libraries' are the exception to this rule because a specific
  library elaboration routine is produced independently of the application(s)
  using the library.
  
*************** using the library.
*** 3327,3335 ****
  
  
  The easiest way to build a library is to use the Project Manager,
! which supports a special type of project called a @emph{Library Project}
! (see the @emph{Library Projects} section in the @emph{GNAT Project Manager}
! chapter of the @emph{GPRbuild User’s Guide}).
  
  A project is considered a library project, when two project-level attributes
  are defined in it: @code{Library_Name} and @code{Library_Dir}. In order to
--- 3326,3334 ----
  
  
  The easiest way to build a library is to use the Project Manager,
! which supports a special type of project called a `Library Project'
! (see the `Library Projects' section in the `GNAT Project Manager'
! chapter of the `GPRbuild User’s Guide').
  
  A project is considered a library project, when two project-level attributes
  are defined in it: @code{Library_Name} and @code{Library_Dir}. In order to
*************** $ rm *.o
*** 3450,3458 ****
  $ chmod -w *.ali
  @end example
  
! Please note that the library must have a name of the form @code{lib@emph{xxx}.a}
! or @code{lib@emph{xxx}.so} (or @code{lib@emph{xxx}.dll} on Windows) in order to
! be accessed by the directive @code{-l@emph{xxx}} at link time.
  
  @node Installing a library,Using a library,Building a library,General Ada Libraries
  @anchor{gnat_ugn/the_gnat_compilation_model id39}@anchor{71}@anchor{gnat_ugn/the_gnat_compilation_model installing-a-library}@anchor{72}
--- 3449,3457 ----
  $ chmod -w *.ali
  @end example
  
! Please note that the library must have a name of the form @code{lib`xxx'.a}
! or @code{lib`xxx'.so} (or @code{lib`xxx'.dll} on Windows) in order to
! be accessed by the directive @code{-l`xxx'} at link time.
  
  @node Installing a library,Using a library,Building a library,General Ada Libraries
  @anchor{gnat_ugn/the_gnat_compilation_model id39}@anchor{71}@anchor{gnat_ugn/the_gnat_compilation_model installing-a-library}@anchor{72}
*************** be accessed by the directive @code{-l@em
*** 3464,3471 ****
  @geindex GPR_PROJECT_PATH
  
  If you use project files, library installation is part of the library build
! process (see the @emph{Installing a Library with Project Files} section of the
! @emph{GNAT Project Manager} chapter of the @emph{GPRbuild User’s Guide}).
  
  When project files are not an option, it is also possible, but not recommended,
  to install the library so that the sources needed to use the library are on the
--- 3463,3470 ----
  @geindex GPR_PROJECT_PATH
  
  If you use project files, library installation is part of the library build
! process (see the `Installing a Library with Project Files' section of the
! `GNAT Project Manager' chapter of the `GPRbuild User’s Guide').
  
  When project files are not an option, it is also possible, but not recommended,
  to install the library so that the sources needed to use the library are on the
*************** be @code{adalib}).
*** 3503,3510 ****
  You can also specify a new default path to the run-time library at compilation
  time with the switch @code{--RTS=rts-path}. You can thus choose / change
  the run-time library you want your program to be compiled with. This switch is
! recognized by @code{gcc}, @code{gnatmake}, @code{gnatbind},
! @code{gnatls}, @code{gnatfind} and @code{gnatxref}.
  
  It is possible to install a library before or after the standard GNAT
  library, by reordering the lines in the configuration files. In general, a
--- 3502,3509 ----
  You can also specify a new default path to the run-time library at compilation
  time with the switch @code{--RTS=rts-path}. You can thus choose / change
  the run-time library you want your program to be compiled with. This switch is
! recognized by @code{gcc}, @code{gnatmake}, @code{gnatbind}, @code{gnatls}, and all
! project aware tools.
  
  It is possible to install a library before or after the standard GNAT
  library, by reordering the lines in the configuration files. In general, a
*************** any part of it.
*** 3518,3524 ****
  
  Once again, the project facility greatly simplifies the use of
  libraries. In this context, using a library is just a matter of adding a
! @emph{with} clause in the user project. For instance, to make use of the
  library @code{My_Lib} shown in examples in earlier sections, you can
  write:
  
--- 3517,3523 ----
  
  Once again, the project facility greatly simplifies the use of
  libraries. In this context, using a library is just a matter of adding a
! `with' clause in the user project. For instance, to make use of the
  library @code{My_Lib} shown in examples in earlier sections, you can
  write:
  
*************** end My_Proj;
*** 3531,3537 ****
  
  Even if you have a third-party, non-Ada library, you can still use GNAT’s
  Project Manager facility to provide a wrapper for it. For example, the
! following project, when @emph{with}ed by your main project, will link with the
  third-party library @code{liba.a}:
  
  @example
--- 3530,3536 ----
  
  Even if you have a third-party, non-Ada library, you can still use GNAT’s
  Project Manager facility to provide a wrapper for it. For example, the
! following project, when `with'ed by your main project, will link with the
  third-party library @code{liba.a}:
  
  @example
*************** main routine is not written in Ada.
*** 3661,3672 ****
  
  
  GNAT’s Project facility provides a simple way of building and installing
! stand-alone libraries; see the @emph{Stand-alone Library Projects} section
! in the @emph{GNAT Project Manager} chapter of the @emph{GPRbuild User’s Guide}.
  To be a Stand-alone Library Project, in addition to the two attributes
  that make a project a Library Project (@code{Library_Name} and
! @code{Library_Dir}; see the @emph{Library Projects} section in the
! @emph{GNAT Project Manager} chapter of the @emph{GPRbuild User’s Guide}),
  the attribute @code{Library_Interface} must be defined.  For example:
  
  @example
--- 3660,3671 ----
  
  
  GNAT’s Project facility provides a simple way of building and installing
! stand-alone libraries; see the `Stand-alone Library Projects' section
! in the `GNAT Project Manager' chapter of the `GPRbuild User’s Guide'.
  To be a Stand-alone Library Project, in addition to the two attributes
  that make a project a Library Project (@code{Library_Name} and
! @code{Library_Dir}; see the `Library Projects' section in the
! `GNAT Project Manager' chapter of the `GPRbuild User’s Guide'),
  the attribute @code{Library_Interface} must be defined.  For example:
  
  @example
*************** end Config;
*** 4053,4059 ****
  
  The @code{Config} package exists in multiple forms for the various targets,
  with an appropriate script selecting the version of @code{Config} needed.
! Then any other unit requiring conditional compilation can do a @emph{with}
  of @code{Config} to make the constants visible.
  
  @node Debugging - A Special Case,Conditionalizing Declarations,Use of Boolean Constants,Modeling Conditional Compilation in Ada
--- 4052,4058 ----
  
  The @code{Config} package exists in multiple forms for the various targets,
  with an appropriate script selecting the version of @code{Config} needed.
! Then any other unit requiring conditional compilation can do a `with'
  of @code{Config} to make the constants visible.
  
  @node Debugging - A Special Case,Conditionalizing Declarations,Use of Boolean Constants,Modeling Conditional Compilation in Ada
*************** For further discussion of conditional co
*** 4444,4450 ****
  @subsubsection Preprocessing Symbols
  
  
! Preprocessing symbols are defined in @emph{definition files} and referenced in the
  sources to be preprocessed. A preprocessing symbol is an identifier, following
  normal Ada (case-insensitive) rules for its syntax, with the restriction that
  all characters need to be in the ASCII set (no accented letters).
--- 4443,4449 ----
  @subsubsection Preprocessing Symbols
  
  
! Preprocessing symbols are defined in `definition files' and referenced in the
  sources to be preprocessed. A preprocessing symbol is an identifier, following
  normal Ada (case-insensitive) rules for its syntax, with the restriction that
  all characters need to be in the ASCII set (no accented letters).
*************** where
*** 4469,4475 ****
  
  @table @asis
  
! @item @emph{switches}
  
  is an optional sequence of switches as described in the next section.
  @end table
--- 4468,4474 ----
  
  @table @asis
  
! @item `switches'
  
  is an optional sequence of switches as described in the next section.
  @end table
*************** is an optional sequence of switches as d
*** 4478,4484 ****
  
  @table @asis
  
! @item @emph{infile}
  
  is the full name of the input file, which is an Ada source
  file containing preprocessor directives.
--- 4477,4483 ----
  
  @table @asis
  
! @item `infile'
  
  is the full name of the input file, which is an Ada source
  file containing preprocessor directives.
*************** file containing preprocessor directives.
*** 4488,4494 ****
  
  @table @asis
  
! @item @emph{outfile}
  
  is the full name of the output file, which is an Ada source
  in standard Ada form. When used with GNAT, this file name will
--- 4487,4493 ----
  
  @table @asis
  
! @item `outfile'
  
  is the full name of the output file, which is an Ada source
  in standard Ada form. When used with GNAT, this file name will
*************** this context since comments are ignored
*** 4579,4585 ****
  
  @table @asis
  
! @item @code{-D@emph{symbol}[=@emph{value}]}
  
  Defines a new preprocessing symbol with the specified value. If no value is given
  on the command line, then symbol is considered to be @code{True}. This switch
--- 4578,4584 ----
  
  @table @asis
  
! @item @code{-D`symbol'[=`value']}
  
  Defines a new preprocessing symbol with the specified value. If no value is given
  on the command line, then symbol is considered to be @code{True}. This switch
*************** As noted above, a file to be preprocesse
*** 4829,4835 ****
  in which preprocessing lines have been inserted. However,
  instead of using @code{gnatprep} to explicitly preprocess a file as a separate
  step before compilation, you can carry out the preprocessing implicitly
! as part of compilation. Such @emph{integrated preprocessing}, which is the common
  style with C, is performed when either or both of the following switches
  are passed to the compiler:
  
--- 4828,4834 ----
  in which preprocessing lines have been inserted. However,
  instead of using @code{gnatprep} to explicitly preprocess a file as a separate
  step before compilation, you can carry out the preprocessing implicitly
! as part of compilation. Such `integrated preprocessing', which is the common
  style with C, is performed when either or both of the following switches
  are passed to the compiler:
  
*************** are passed to the compiler:
*** 4839,4845 ****
  @itemize *
  
  @item 
! @code{-gnatep}, which specifies the @emph{preprocessor data file}.
  This file dictates how the source files will be preprocessed (e.g., which
  symbol definition files apply to which sources).
  
--- 4838,4844 ----
  @itemize *
  
  @item 
! @code{-gnatep}, which specifies the `preprocessor data file'.
  This file dictates how the source files will be preprocessed (e.g., which
  symbol definition files apply to which sources).
  
*************** When using project files:
*** 4868,4874 ****
  @item 
  the builder switch @code{-x} should be used if any Ada source is
  compiled with @code{gnatep=}, so that the compiler finds the
! @emph{preprocessor data file}.
  
  @item 
  the preprocessing data file and the symbol definition files should be
--- 4867,4873 ----
  @item 
  the builder switch @code{-x} should be used if any Ada source is
  compiled with @code{gnatep=}, so that the compiler finds the
! `preprocessor data file'.
  
  @item 
  the preprocessing data file and the symbol definition files should be
*************** that relate to integrated preprocessing.
*** 4890,4896 ****
  
  @table @asis
  
! @item @code{-gnatep=@emph{preprocessor_data_file}}
  
  This switch specifies the file name (without directory
  information) of the preprocessor data file. Either place this file
--- 4889,4895 ----
  
  @table @asis
  
! @item @code{-gnatep=`preprocessor_data_file'}
  
  This switch specifies the file name (without directory
  information) of the preprocessor data file. Either place this file
*************** end Prj;
*** 4910,4921 ****
  @end example
  @end quotation
  
! A preprocessor data file is a text file that contains @emph{preprocessor
! control lines}.  A preprocessor control line directs the preprocessing of
  either a particular source file, or, analogous to @code{others} in Ada,
  all sources not specified elsewhere in  the preprocessor data file.
  A preprocessor control line
! can optionally identify a @emph{definition file} that assigns values to
  preprocessor symbols, as well as a list of switches that relate to
  preprocessing.
  Empty lines and comments (using Ada syntax) are also permitted, with no
--- 4909,4920 ----
  @end example
  @end quotation
  
! A preprocessor data file is a text file that contains `preprocessor
! control lines'.  A preprocessor control line directs the preprocessing of
  either a particular source file, or, analogous to @code{others} in Ada,
  all sources not specified elsewhere in  the preprocessor data file.
  A preprocessor control line
! can optionally identify a `definition file' that assigns values to
  preprocessor symbols, as well as a list of switches that relate to
  preprocessing.
  Empty lines and comments (using Ada syntax) are also permitted, with no
*************** Causes both preprocessor lines and the l
*** 5006,5012 ****
  by preprocessing to be retained as comments marked
  with the special string ‘@cite{–!}’.
  
! @item @code{-D@emph{symbol}=@emph{new_value}}
  
  Define or redefine @code{symbol} to have @code{new_value} as its value.
  The permitted form for @code{symbol} is either an Ada identifier, or any Ada reserved word
--- 5005,5011 ----
  by preprocessing to be retained as comments marked
  with the special string ‘@cite{–!}’.
  
! @item @code{-D`symbol'=`new_value'}
  
  Define or redefine @code{symbol} to have @code{new_value} as its value.
  The permitted form for @code{symbol} is either an Ada identifier, or any Ada reserved word
*************** a @code{#if} or @code{#elsif} test will
*** 5035,5041 ****
  
  @table @asis
  
! @item @code{-gnateD@emph{symbol}[=@emph{new_value}]}
  
  Define or redefine @code{symbol} to have @code{new_value} as its value. If no value
  is supplied, then the value of @code{symbol} is @code{True}.
--- 5034,5040 ----
  
  @table @asis
  
! @item @code{-gnateD`symbol'[=`new_value']}
  
  Define or redefine @code{symbol} to have @code{new_value} as its value. If no value
  is supplied, then the value of @code{symbol} is @code{True}.
*************** The return type must be the same as the
*** 5532,5538 ****
  of this type can only be 8, 16, 32, or 64.
  
  @item 
! Binary arithmetic operators: ‘+’, ‘-‘, ‘*’, ‘/’.
  The corresponding operator declaration must have parameters and result type
  that have the same root numeric type (for example, all three are long_float
  types). This simplifies the definition of operations that use type checking
--- 5531,5537 ----
  of this type can only be 8, 16, 32, or 64.
  
  @item 
! Binary arithmetic operators: ‘+’, ‘-’, ‘*’, ‘/’.
  The corresponding operator declaration must have parameters and result type
  that have the same root numeric type (for example, all three are long_float
  types). This simplifies the definition of operations that use type checking
*************** challenge.  This section gives a few hin
*** 5667,5673 ****
  
  GNAT supports interfacing with the G++ compiler (or any C++ compiler
  generating code that is compatible with the G++ Application Binary
! Interface —see @indicateurl{http://www.codesourcery.com/archives/cxx-abi}).
  
  Interfacing can be done at 3 levels: simple data, subprograms, and
  classes. In the first two cases, GNAT offers a specific @code{Convention C_Plus_Plus}
--- 5666,5672 ----
  
  GNAT supports interfacing with the G++ compiler (or any C++ compiler
  generating code that is compatible with the G++ Application Binary
! Interface —see @indicateurl{http://itanium-cxx-abi.github.io/cxx-abi/abi.html}).
  
  Interfacing can be done at 3 levels: simple data, subprograms, and
  classes. In the first two cases, GNAT offers a specific @code{Convention C_Plus_Plus}
*************** If you want to generate a single Ada fil
*** 6460,6469 ****
  can use instead the @code{-fdump-ada-spec-slim} switch.
  
  You can optionally specify a parent unit, of which all generated units will
! be children, using @code{-fada-spec-parent=@emph{unit}}.
  
! The simple @code{gcc`}-based command works only for C headers. For C++ headers
! you need to use either the @code{g++} command or the combination @code{gcc -x c++`}.
  
  In some cases, the generated bindings will be more complete or more meaningful
  when defining some macros, which you can do via the @code{-D} switch. This
--- 6459,6468 ----
  can use instead the @code{-fdump-ada-spec-slim} switch.
  
  You can optionally specify a parent unit, of which all generated units will
! be children, using @code{-fada-spec-parent=`unit'}.
  
! The simple @code{gcc}-based command works only for C headers. For C++ headers
! you need to use either the @code{g++} command or the combination @code{gcc -x c++}.
  
  In some cases, the generated bindings will be more complete or more meaningful
  when defining some macros, which you can do via the @code{-D} switch. This
*************** $ gcc -c -fdump-ada-spec readline1.h
*** 6501,6507 ****
  
  
  Generating bindings for C++ headers is done using the same options, always
! with the @emph{g++} compiler. Note that generating Ada spec from C++ headers is a
  much more complex job and support for C++ headers is much more limited that
  support for C headers. As a result, you will need to modify the resulting
  bindings by hand more extensively when using C++ headers.
--- 6500,6506 ----
  
  
  Generating bindings for C++ headers is done using the same options, always
! with the `g++' compiler. Note that generating Ada spec from C++ headers is a
  much more complex job and support for C++ headers is much more limited that
  support for C headers. As a result, you will need to modify the resulting
  bindings by hand more extensively when using C++ headers.
*************** bindings by hand more extensively when u
*** 6509,6515 ****
  In this mode, C++ classes will be mapped to Ada tagged types, constructors
  will be mapped using the @code{CPP_Constructor} pragma, and when possible,
  multiple inheritance of abstract classes will be mapped to Ada interfaces
! (see the @emph{Interfacing to C++} section in the @cite{GNAT Reference Manual}
  for additional information on interfacing to C++).
  
  For example, given the following C++ header file:
--- 6508,6514 ----
  In this mode, C++ classes will be mapped to Ada tagged types, constructors
  will be mapped using the @code{CPP_Constructor} pragma, and when possible,
  multiple inheritance of abstract classes will be mapped to Ada interfaces
! (see the `Interfacing to C++' section in the @cite{GNAT Reference Manual}
  for additional information on interfacing to C++).
  
  For example, given the following C++ header file:
*************** only.
*** 6628,6634 ****
  
  @table @asis
  
! @item @code{-fada-spec-parent=@emph{unit}}
  
  Specifies that all files generated by @code{-fdump-ada-spec} are
  to be child units of the specified parent unit.
--- 6627,6633 ----
  
  @table @asis
  
! @item @code{-fada-spec-parent=`unit'}
  
  Specifies that all files generated by @code{-fdump-ada-spec} are
  to be child units of the specified parent unit.
*************** used for Ada 83.
*** 6779,6785 ****
  The GNAT model of compilation is close to the C and C++ models. You can
  think of Ada specs as corresponding to header files in C. As in C, you
  don’t need to compile specs; they are compiled when they are used. The
! Ada @emph{with} is similar in effect to the @code{#include} of a C
  header.
  
  One notable difference is that, in Ada, you may compile specs separately
--- 6778,6784 ----
  The GNAT model of compilation is close to the C and C++ models. You can
  think of Ada specs as corresponding to header files in C. As in C, you
  don’t need to compile specs; they are compiled when they are used. The
! Ada `with' is similar in effect to the @code{#include} of a C
  header.
  
  One notable difference is that, in Ada, you may compile specs separately
*************** previously compiled. In particular:
*** 6829,6835 ****
  @itemize *
  
  @item 
! When a unit is @emph{with}ed, the unit seen by the compiler corresponds
  to the version of the unit most recently compiled into the library.
  
  @item 
--- 6828,6834 ----
  @itemize *
  
  @item 
! When a unit is `with'ed, the unit seen by the compiler corresponds
  to the version of the unit most recently compiled into the library.
  
  @item 
*************** files can affect the results of a compil
*** 6848,6854 ****
  @itemize *
  
  @item 
! When a unit is @emph{with}ed, the unit seen by the compiler corresponds
  to the source version of the unit that is currently accessible to the
  compiler.
  
--- 6847,6853 ----
  @itemize *
  
  @item 
! When a unit is `with'ed, the unit seen by the compiler corresponds
  to the source version of the unit that is currently accessible to the
  compiler.
  
*************** dependencies, they will always be tracke
*** 7041,7048 ****
  @code{gnatmake}.
  
  Note that for advanced forms of project structure, we recommend creating
! a project file as explained in the @emph{GNAT_Project_Manager} chapter in the
! @emph{GPRbuild User’s Guide}, and using the
  @code{gprbuild} tool which supports building with project files and works similarly
  to @code{gnatmake}.
  
--- 7040,7047 ----
  @code{gnatmake}.
  
  Note that for advanced forms of project structure, we recommend creating
! a project file as explained in the `GNAT_Project_Manager' chapter in the
! `GPRbuild User’s Guide', and using the
  @code{gprbuild} tool which supports building with project files and works similarly
  to @code{gnatmake}.
  
*************** If @code{--version} was not used, displa
*** 7119,7130 ****
  all other options.
  @end table
  
  @geindex --GCC=compiler_name (gnatmake)
  
  
  @table @asis
  
! @item @code{--GCC=@emph{compiler_name}}
  
  Program used for compiling. The default is @code{gcc}. You need to use
  quotes around @code{compiler_name} if @code{compiler_name} contains
--- 7118,7144 ----
  all other options.
  @end table
  
+ @geindex -P (gnatmake)
+ 
+ 
+ @table @asis
+ 
+ @item @code{-P`project'}
+ 
+ Build GNAT project file @code{project} using GPRbuild. When this switch is
+ present, all other command-line switches are treated as GPRbuild switches
+ and not @code{gnatmake} switches.
+ @end table
+ 
+ @c -- Comment:
+ @c :ref:`gnatmake_and_Project_Files`.
+ 
  @geindex --GCC=compiler_name (gnatmake)
  
  
  @table @asis
  
! @item @code{--GCC=`compiler_name'}
  
  Program used for compiling. The default is @code{gcc}. You need to use
  quotes around @code{compiler_name} if @code{compiler_name} contains
*************** all the additional switches are also tak
*** 7147,7153 ****
  
  @table @asis
  
! @item @code{--GNATBIND=@emph{binder_name}}
  
  Program used for binding. The default is @code{gnatbind}. You need to
  use quotes around @code{binder_name} if @code{binder_name} contains spaces
--- 7161,7167 ----
  
  @table @asis
  
! @item @code{--GNATBIND=`binder_name'}
  
  Program used for binding. The default is @code{gnatbind}. You need to
  use quotes around @code{binder_name} if @code{binder_name} contains spaces
*************** itself must not include any embedded spa
*** 7165,7171 ****
  
  @table @asis
  
! @item @code{--GNATLINK=@emph{linker_name}}
  
  Program used for linking. The default is @code{gnatlink}. You need to
  use quotes around @code{linker_name} if @code{linker_name} contains spaces
--- 7179,7185 ----
  
  @table @asis
  
! @item @code{--GNATLINK=`linker_name'}
  
  Program used for linking. The default is @code{gnatlink}. You need to
  use quotes around @code{linker_name} if @code{linker_name} contains spaces
*************** itself must not include any embedded spa
*** 7182,7188 ****
  When linking an executable, create a map file. The name of the map file
  has the same name as the executable with extension “.map”.
  
! @item @code{--create-map-file=@emph{mapfile}}
  
  When linking an executable, create a map file with the specified name.
  @end table
--- 7196,7202 ----
  When linking an executable, create a map file. The name of the map file
  has the same name as the executable with extension “.map”.
  
! @item @code{--create-map-file=`mapfile'}
  
  When linking an executable, create a map file with the specified name.
  @end table
*************** When linking an executable, create a map
*** 7194,7200 ****
  
  @item @code{--create-missing-dirs}
  
! When using project files (@code{-P@emph{project}}), automatically create
  missing object directories, library directories and exec
  directories.
  
--- 7208,7214 ----
  
  @item @code{--create-missing-dirs}
  
! When using project files (@code{-P`project'}), automatically create
  missing object directories, library directories and exec
  directories.
  
*************** directories.
*** 7203,7209 ****
  Disallow simultaneous compilations in the same object directory when
  project files are used.
  
! @item @code{--subdirs=@emph{subdir}}
  
  Actual object directory of each project file is the subdirectory subdir of the
  object directory specified or defaulted in the project file.
--- 7217,7223 ----
  Disallow simultaneous compilations in the same object directory when
  project files are used.
  
! @item @code{--subdirs=`subdir'}
  
  Actual object directory of each project file is the subdirectory subdir of the
  object directory specified or defaulted in the project file.
*************** By default, shared library projects are
*** 7214,7220 ****
  projects. When this switch is used on the command line, this restriction is
  relaxed.
  
! @item @code{--source-info=@emph{source info file}}
  
  Specify a source info file. This switch is active only when project files
  are used. If the source info file is specified as a relative path, then it is
--- 7228,7234 ----
  projects. When this switch is used on the command line, this restriction is
  relaxed.
  
! @item @code{--source-info=`source info file'}
  
  Specify a source info file. This switch is active only when project files
  are used. If the source info file is specified as a relative path, then it is
*************** will add any newly accessed sources to t
*** 7325,7331 ****
  
  @table @asis
  
! @item @code{-C=@emph{file}}
  
  Use a specific mapping file. The file, specified as a path name (absolute or
  relative) by this switch, should already exist, otherwise the switch is
--- 7339,7345 ----
  
  @table @asis
  
! @item @code{-C=`file'}
  
  Use a specific mapping file. The file, specified as a path name (absolute or
  relative) by this switch, should already exist, otherwise the switch is
*************** the compiler. These lines are displayed
*** 7357,7363 ****
  
  @table @asis
  
! @item @code{-D @emph{dir}}
  
  Put all object files and ALI file in directory @code{dir}.
  If the @code{-D} switch is not used, all object files
--- 7371,7377 ----
  
  @table @asis
  
! @item @code{-D `dir'}
  
  Put all object files and ALI file in directory @code{dir}.
  If the @code{-D} switch is not used, all object files
*************** This switch cannot be used when using a
*** 7371,7377 ****
  
  @table @asis
  
! @item @code{-eI@emph{nnn}}
  
  Indicates that the main source is a multi-unit source and the rank of the unit
  in the source file is nnn. nnn needs to be a positive number and a valid
--- 7385,7391 ----
  
  @table @asis
  
! @item @code{-eI`nnn'}
  
  Indicates that the main source is a multi-unit source and the rank of the unit
  in the source file is nnn. nnn needs to be a positive number and a valid
*************** object and ALI files in the directory wh
*** 7483,7489 ****
  
  @table @asis
  
! @item @code{-j@emph{n}}
  
  Use @code{n} processes to carry out the (re)compilations. On a multiprocessor
  machine compilations will occur in parallel. If @code{n} is 0, then the
--- 7497,7503 ----
  
  @table @asis
  
! @item @code{-j`n'}
  
  Use @code{n} processes to carry out the (re)compilations. On a multiprocessor
  machine compilations will occur in parallel. If @code{n} is 0, then the
*************** is typically what you want. If you also
*** 7575,7581 ****
  the @code{-a} switch,
  dependencies of the GNAT internal files are also listed. Note that
  dependencies of the objects in external Ada libraries (see
! switch  @code{-aL@emph{dir}} in the following list)
  are never reported.
  @end table
  
--- 7589,7595 ----
  the @code{-a} switch,
  dependencies of the GNAT internal files are also listed. Note that
  dependencies of the objects in external Ada libraries (see
! switch  @code{-aL`dir'} in the following list)
  are never reported.
  @end table
  
*************** file, will eventually result in recompil
*** 7598,7604 ****
  
  @table @asis
  
! @item @code{-o @emph{exec_name}}
  
  Output executable name. The name of the final executable program will be
  @code{exec_name}. If the @code{-o} switch is omitted the default
--- 7612,7618 ----
  
  @table @asis
  
! @item @code{-o `exec_name'}
  
  Output executable name. The name of the final executable program will be
  @code{exec_name}. If the @code{-o} switch is omitted the default
*************** This switch cannot be used when invoking
*** 7619,7637 ****
  Same as @code{--create-missing-dirs}
  @end table
  
- @geindex -P (gnatmake)
- 
- 
- @table @asis
- 
- @item @code{-P@emph{project}}
- 
- Use project file @code{project}. Only one such switch can be used.
- @end table
- 
- @c -- Comment:
- @c :ref:`gnatmake_and_Project_Files`.
- 
  @geindex -q (gnatmake)
  
  
--- 7633,7638 ----
*************** Verbosity level Medium. Potentially disp
*** 7729,7735 ****
  
  Verbosity level High. Equivalent to -v.
  
! @item @code{-vP@emph{x}}
  
  Indicate the verbosity of the parsing of GNAT project files.
  See @ref{cf,,Switches Related to Project Files}.
--- 7730,7736 ----
  
  Verbosity level High. Equivalent to -v.
  
! @item @code{-vP`x'}
  
  Indicate the verbosity of the parsing of GNAT project files.
  See @ref{cf,,Switches Related to Project Files}.
*************** be those specified on the command line.
*** 7751,7757 ****
  @code{-x} is used, mains specified on the
  command line need to be sources of a project file.
  
! @item @code{-X@emph{name}=@emph{value}}
  
  Indicate that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
--- 7752,7758 ----
  @code{-x} is used, mains specified on the
  command line need to be sources of a project file.
  
! @item @code{-X`name'=`value'}
  
  Indicate that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
*************** is passed to @code{gcc} (e.g., @code{-O}
*** 7786,7792 ****
  
  @table @asis
  
! @item @code{-aI@emph{dir}}
  
  When looking for source files also look in directory @code{dir}.
  The order in which source files search is undertaken is
--- 7787,7793 ----
  
  @table @asis
  
! @item @code{-aI`dir'}
  
  When looking for source files also look in directory @code{dir}.
  The order in which source files search is undertaken is
*************** described in @ref{73,,Search Paths and t
*** 7798,7804 ****
  
  @table @asis
  
! @item @code{-aL@emph{dir}}
  
  Consider @code{dir} as being an externally provided Ada library.
  Instructs @code{gnatmake} to skip compilation units whose @code{.ALI}
--- 7799,7805 ----
  
  @table @asis
  
! @item @code{-aL`dir'}
  
  Consider @code{dir} as being an externally provided Ada library.
  Instructs @code{gnatmake} to skip compilation units whose @code{.ALI}
*************** files have been located in directory @co
*** 7806,7812 ****
  missing bodies for the units in @code{dir} and to ignore out of date bodies
  for the same units. You still need to specify
  the location of the specs for these units by using the switches
! @code{-aI@emph{dir}}  or @code{-I@emph{dir}}.
  Note: this switch is provided for compatibility with previous versions
  of @code{gnatmake}. The easier method of causing standard libraries
  to be excluded from consideration is to write-protect the corresponding
--- 7807,7813 ----
  missing bodies for the units in @code{dir} and to ignore out of date bodies
  for the same units. You still need to specify
  the location of the specs for these units by using the switches
! @code{-aI`dir'}  or @code{-I`dir'}.
  Note: this switch is provided for compatibility with previous versions
  of @code{gnatmake}. The easier method of causing standard libraries
  to be excluded from consideration is to write-protect the corresponding
*************** ALI files.
*** 7818,7824 ****
  
  @table @asis
  
! @item @code{-aO@emph{dir}}
  
  When searching for library and object files, look in directory
  @code{dir}. The order in which library files are searched is described in
--- 7819,7825 ----
  
  @table @asis
  
! @item @code{-aO`dir'}
  
  When searching for library and object files, look in directory
  @code{dir}. The order in which library files are searched is described in
*************** When searching for library and object fi
*** 7833,7847 ****
  
  @table @asis
  
! @item @code{-A@emph{dir}}
  
! Equivalent to @code{-aL@emph{dir}} @code{-aI@emph{dir}}.
  
  @geindex -I (gnatmake)
  
! @item @code{-I@emph{dir}}
  
! Equivalent to @code{-aO@emph{dir} -aI@emph{dir}}.
  @end table
  
  @geindex -I- (gnatmake)
--- 7834,7848 ----
  
  @table @asis
  
! @item @code{-A`dir'}
  
! Equivalent to @code{-aL`dir'} @code{-aI`dir'}.
  
  @geindex -I (gnatmake)
  
! @item @code{-I`dir'}
  
! Equivalent to @code{-aO`dir' -aI`dir'}.
  @end table
  
  @geindex -I- (gnatmake)
*************** where @code{gnatmake} was invoked.
*** 7867,7877 ****
  
  @table @asis
  
! @item @code{-L@emph{dir}}
  
  Add directory @code{dir} to the list of directories in which the linker
  will search for libraries. This is equivalent to
! @code{-largs} @code{-L@emph{dir}}.
  Furthermore, under Windows, the sources pointed to by the libraries path
  set in the registry are not searched for.
  @end table
--- 7868,7878 ----
  
  @table @asis
  
! @item @code{-L`dir'}
  
  Add directory @code{dir} to the list of directories in which the linker
  will search for libraries. This is equivalent to
! @code{-largs} @code{-L`dir'}.
  Furthermore, under Windows, the sources pointed to by the libraries path
  set in the registry are not searched for.
  @end table
*************** Do not look for library files in the sys
*** 7901,7907 ****
  
  @table @asis
  
! @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. GNAT looks for the
  run-time
--- 7902,7908 ----
  
  @table @asis
  
! @item @code{--RTS=`rts-path'}
  
  Specifies the default location of the run-time library. GNAT looks for the
  run-time
*************** in the following directories, and stops
*** 7913,7925 ****
  @itemize *
  
  @item 
! @emph{<current directory>/$rts_path}
  
  @item 
! @emph{<default-search-dir>/$rts_path}
  
  @item 
! @emph{<default-search-dir>/rts-$rts_path}
  
  @item 
  The selected path is handled like a normal RTS path.
--- 7914,7926 ----
  @itemize *
  
  @item 
! `<current directory>/$rts_path'
  
  @item 
! `<default-search-dir>/$rts_path'
  
  @item 
! `<default-search-dir>/rts-$rts_path'
  
  @item 
  The selected path is handled like a normal RTS path.
*************** designated component of GNAT.
*** 7943,7949 ****
  
  @table @asis
  
! @item @code{-cargs @emph{switches}}
  
  Compiler switches. Here @code{switches} is a list of switches
  that are valid switches for @code{gcc}. They will be passed on to
--- 7944,7950 ----
  
  @table @asis
  
! @item @code{-cargs `switches'}
  
  Compiler switches. Here @code{switches} is a list of switches
  that are valid switches for @code{gcc}. They will be passed on to
*************** all compile steps performed by @code{gna
*** 7955,7961 ****
  
  @table @asis
  
! @item @code{-bargs @emph{switches}}
  
  Binder switches. Here @code{switches} is a list of switches
  that are valid switches for @code{gnatbind}. They will be passed on to
--- 7956,7962 ----
  
  @table @asis
  
! @item @code{-bargs `switches'}
  
  Binder switches. Here @code{switches} is a list of switches
  that are valid switches for @code{gnatbind}. They will be passed on to
*************** all bind steps performed by @code{gnatma
*** 7967,7973 ****
  
  @table @asis
  
! @item @code{-largs @emph{switches}}
  
  Linker switches. Here @code{switches} is a list of switches
  that are valid switches for @code{gnatlink}. They will be passed on to
--- 7968,7974 ----
  
  @table @asis
  
! @item @code{-largs `switches'}
  
  Linker switches. Here @code{switches} is a list of switches
  that are valid switches for @code{gnatlink}. They will be passed on to
*************** all link steps performed by @code{gnatma
*** 7979,7985 ****
  
  @table @asis
  
! @item @code{-margs @emph{switches}}
  
  Make switches. The switches are directly interpreted by @code{gnatmake},
  regardless of any previous occurrence of @code{-cargs}, @code{-bargs}
--- 7980,7986 ----
  
  @table @asis
  
! @item @code{-margs `switches'}
  
  Make switches. The switches are directly interpreted by @code{gnatmake},
  regardless of any previous occurrence of @code{-cargs}, @code{-bargs}
*************** unless @code{-a} is also specified.
*** 8031,8039 ****
  @item 
  @code{gnatmake} has been designed to make the use of Ada libraries
  particularly convenient. Assume you have an Ada library organized
! as follows: @emph{obj-dir} contains the objects and ALI files for
  of your Ada compilation units,
! whereas @emph{include-dir} contains the
  specs of these units, but no bodies. Then to compile a unit
  stored in @code{main.adb}, which uses this Ada library you would just type:
  
--- 8032,8040 ----
  @item 
  @code{gnatmake} has been designed to make the use of Ada libraries
  particularly convenient. Assume you have an Ada library organized
! as follows: `obj-dir' contains the objects and ALI files for
  of your Ada compilation units,
! whereas `include-dir' contains the
  specs of these units, but no bodies. Then to compile a unit
  stored in @code{main.adb}, which uses this Ada library you would just type:
  
*************** it may be useful to have some basic unde
*** 8067,8073 ****
  approach and in particular to understand how it uses the results of
  previous compilations without incorrectly depending on them.
  
! First a definition: an object file is considered @emph{up to date} if the
  corresponding ALI file exists and if all the source files listed in the
  dependency section of this ALI file have time stamps matching those in
  the ALI file. This means that neither the source file itself nor any
--- 8068,8074 ----
  approach and in particular to understand how it uses the results of
  previous compilations without incorrectly depending on them.
  
! First a definition: an object file is considered `up to date' if the
  corresponding ALI file exists and if all the source files listed in the
  dependency section of this ALI file have time stamps matching those in
  the ALI file. This means that neither the source file itself nor any
*************** by @code{gnatmake}. It may be necessary
*** 8111,8123 ****
  
  @table @asis
  
! @item @emph{gnatmake hello.adb}
  
  Compile all files necessary to bind and link the main program
  @code{hello.adb} (containing unit @code{Hello}) and bind and link the
  resulting object files to generate an executable file @code{hello}.
  
! @item @emph{gnatmake main1 main2 main3}
  
  Compile all files necessary to bind and link the main programs
  @code{main1.adb} (containing unit @code{Main1}), @code{main2.adb}
--- 8112,8124 ----
  
  @table @asis
  
! @item `gnatmake hello.adb'
  
  Compile all files necessary to bind and link the main program
  @code{hello.adb} (containing unit @code{Hello}) and bind and link the
  resulting object files to generate an executable file @code{hello}.
  
! @item `gnatmake main1 main2 main3'
  
  Compile all files necessary to bind and link the main programs
  @code{main1.adb} (containing unit @code{Main1}), @code{main2.adb}
*************** Compile all files necessary to bind and
*** 8126,8132 ****
  to generate three executable files @code{main1},
  @code{main2}  and @code{main3}.
  
! @item @emph{gnatmake -q Main_Unit -cargs -O2 -bargs -l}
  
  Compile all files necessary to bind and link the main program unit
  @code{Main_Unit} (from file @code{main_unit.adb}). All compilations will
--- 8127,8133 ----
  to generate three executable files @code{main1},
  @code{main2}  and @code{main3}.
  
! @item `gnatmake -q Main_Unit -cargs -O2 -bargs -l'
  
  Compile all files necessary to bind and link the main program unit
  @code{Main_Unit} (from file @code{main_unit.adb}). All compilations will
*************** the body file (@code{.adb}) for a librar
*** 8177,8183 ****
  or generic package that has a body
  @end itemize
  
! You need @emph{not} compile the following files
  
  
  @itemize *
--- 8178,8184 ----
  or generic package that has a body
  @end itemize
  
! You need `not' compile the following files
  
  
  @itemize *
*************** two output files in the current director
*** 8239,8245 ****
  file in any directory using an absolute or relative path specification
  containing the directory information.
  
! TESTING: the @code{--foobar@emph{NN}} switch
  
  @geindex gnat1
  
--- 8240,8246 ----
  file in any directory using an absolute or relative path specification
  containing the directory information.
  
! TESTING: the @code{--foobar`NN'} switch
  
  @geindex gnat1
  
*************** file directly.
*** 8404,8410 ****
  
  @item 
  When you compile a unit, the source files for the specs of all units
! that it @emph{with}s, all its subunits, and the bodies of any generics it
  instantiates must be available (reachable by the search-paths mechanism
  described above), or you will receive a fatal error message.
  @end itemize
--- 8405,8411 ----
  
  @item 
  When you compile a unit, the source files for the specs of all units
! that it `with's, all its subunits, and the bodies of any generics it
  instantiates must be available (reachable by the search-paths mechanism
  described above), or you will receive a fatal error message.
  @end itemize
*************** compilation units.
*** 8486,8492 ****
  
  @table @asis
  
! @item @code{-b @emph{target}}
  
  Compile your program to run on @code{target}, which is the name of a
  system configuration. You must have a GNAT cross-compiler built if
--- 8487,8493 ----
  
  @table @asis
  
! @item @code{-b `target'}
  
  Compile your program to run on @code{target}, which is the name of a
  system configuration. You must have a GNAT cross-compiler built if
*************** system configuration. You must have a GN
*** 8498,8504 ****
  
  @table @asis
  
! @item @code{-B@emph{dir}}
  
  Load compiler executables (for example, @code{gnat1}, the Ada compiler)
  from @code{dir} instead of the default location. Only use this switch
--- 8499,8505 ----
  
  @table @asis
  
! @item @code{-B`dir'}
  
  Load compiler executables (for example, @code{gnat1}, the Ada compiler)
  from @code{dir} instead of the default location. Only use this switch
*************** dynamically allocated objects.
*** 8551,8557 ****
  
  Makes GNAT emit warning and error messages as JSON. Inhibits printing of
  text warning and errors messages except if @code{-gnatv} or
! @code{-gnatl} are present.
  @end table
  
  @geindex -fdump-scos (gcc)
--- 8552,8559 ----
  
  Makes GNAT emit warning and error messages as JSON. Inhibits printing of
  text warning and errors messages except if @code{-gnatv} or
! @code{-gnatl} are present. Uses absolute file paths when used along
! @code{-gnatef}.
  @end table
  
  @geindex -fdump-scos (gcc)
*************** emitted in the debug information.
*** 8583,8589 ****
  
  @table @asis
  
! @item @code{-flto[=@emph{n}]}
  
  Enables Link Time Optimization. This switch must be used in conjunction
  with the @code{-Ox} switches (but not with the @code{-gnatn} switch
--- 8585,8591 ----
  
  @table @asis
  
! @item @code{-flto[=`n']}
  
  Enables Link Time Optimization. This switch must be used in conjunction
  with the @code{-Ox} switches (but not with the @code{-gnatn} switch
*************** Assume no invalid (bad) values except fo
*** 8864,8870 ****
  Check syntax and semantics only (no code generation attempted). When the
  compiler is invoked by @code{gnatmake}, if the switch @code{-gnatc} is
  only given to the compiler (after @code{-cargs} or in package Compiler of
! the project file, @code{gnatmake} will fail because it will not find the
  object file after compilation. If @code{gnatmake} is called with
  @code{-gnatc} as a builder switch (before @code{-cargs} or in package
  Builder of the project file) then @code{gnatmake} will not fail because
--- 8866,8872 ----
  Check syntax and semantics only (no code generation attempted). When the
  compiler is invoked by @code{gnatmake}, if the switch @code{-gnatc} is
  only given to the compiler (after @code{-cargs} or in package Compiler of
! the project file), @code{gnatmake} will fail because it will not find the
  object file after compilation. If @code{gnatmake} is called with
  @code{-gnatc} as a builder switch (before @code{-cargs} or in package
  Builder of the project file) then @code{gnatmake} will not fail because
*************** ALI files.
*** 8974,8980 ****
  
  @table @asis
  
! @item @code{-gnatec=@emph{path}}
  
  Specify a configuration pragma file
  (the equal sign is optional)
--- 8976,8982 ----
  
  @table @asis
  
! @item @code{-gnatec=`path'}
  
  Specify a configuration pragma file
  (the equal sign is optional)
*************** Disable atomic synchronization
*** 9008,9014 ****
  
  @table @asis
  
! @item @code{-gnateDsymbol[=@emph{value}]}
  
  Defines a symbol, associated with @code{value}, for preprocessing.
  (@ref{90,,Integrated Preprocessing}).
--- 9010,9016 ----
  
  @table @asis
  
! @item @code{-gnateDsymbol[=`value']}
  
  Defines a symbol, associated with @code{value}, for preprocessing.
  (@ref{90,,Integrated Preprocessing}).
*************** produced at run time.
*** 9036,9042 ****
  
  @item @code{-gnatef}
  
! Display full source path name in brief error messages.
  @end table
  
  @geindex -gnateF (gcc)
--- 9038,9045 ----
  
  @item @code{-gnatef}
  
! Display full source path name in brief error messages and absolute paths in
! @code{-fdiagnostics-format=json}’s output.
  @end table
  
  @geindex -gnateF (gcc)
*************** Save result of preprocessing in a text f
*** 9079,9085 ****
  
  @table @asis
  
! @item @code{-gnatei@emph{nnn}}
  
  Set maximum number of instantiations during compilation of a single unit to
  @code{nnn}. This may be useful in increasing the default maximum of 8000 for
--- 9082,9088 ----
  
  @table @asis
  
! @item @code{-gnatei`nnn'}
  
  Set maximum number of instantiations during compilation of a single unit to
  @code{nnn}. This may be useful in increasing the default maximum of 8000 for
*************** the rare case when a single unit legitim
*** 9091,9097 ****
  
  @table @asis
  
! @item @code{-gnateI@emph{nnn}}
  
  Indicates that the source is a multi-unit source and that the index of the
  unit to compile is @code{nnn}. @code{nnn} needs to be a positive number and need
--- 9094,9100 ----
  
  @table @asis
  
! @item @code{-gnateI`nnn'}
  
  Indicates that the source is a multi-unit source and that the index of the
  unit to compile is @code{nnn}. @code{nnn} needs to be a positive number and need
*************** This switch turns off the info messages
*** 9130,9136 ****
  
  @table @asis
  
! @item @code{-gnatem=@emph{path}}
  
  Specify a mapping file
  (the equal sign is optional)
--- 9133,9139 ----
  
  @table @asis
  
! @item @code{-gnatem=`path'}
  
  Specify a mapping file
  (the equal sign is optional)
*************** Specify a mapping file
*** 9142,9148 ****
  
  @table @asis
  
! @item @code{-gnatep=@emph{file}}
  
  Specify a preprocessing data file
  (the equal sign is optional)
--- 9145,9151 ----
  
  @table @asis
  
! @item @code{-gnatep=`file'}
  
  Specify a preprocessing data file
  (the equal sign is optional)
*************** Synonym of @code{-fdump-scos}, kept for
*** 9179,9185 ****
  
  @table @asis
  
! @item @code{-gnatet=@emph{path}}
  
  Generate target dependent information. The format of the output file is
  described in the section about switch @code{-gnateT}.
--- 9182,9188 ----
  
  @table @asis
  
! @item @code{-gnatet=`path'}
  
  Generate target dependent information. The format of the output file is
  described in the section about switch @code{-gnateT}.
*************** described in the section about switch @c
*** 9190,9196 ****
  
  @table @asis
  
! @item @code{-gnateT=@emph{path}}
  
  Read target dependent information, such as endianness or sizes and alignments
  of base type. If this switch is passed, the default target dependent
--- 9193,9199 ----
  
  @table @asis
  
! @item @code{-gnateT=`path'}
  
  Read target dependent information, such as endianness or sizes and alignments
  of base type. If this switch is passed, the default target dependent
*************** Float_Size                 : Pos; -- Sta
*** 9217,9222 ****
--- 9220,9226 ----
  Float_Words_BE             : Nat; -- Float words stored big-endian?
  Int_Size                   : Pos; -- Standard.Integer'Size
  Long_Double_Size           : Pos; -- Standard.Long_Long_Float'Size
+ Long_Long_Long_Size        : Pos; -- Standard.Long_Long_Long_Integer'Size
  Long_Long_Size             : Pos; -- Standard.Long_Long_Integer'Size
  Long_Size                  : Pos; -- Standard.Long_Integer'Size
  Maximum_Alignment          : Pos; -- Maximum permitted alignment
*************** name  digs float_rep size alignment
*** 9280,9286 ****
  @end example
  
  where @code{name} is the string name of the type (which can have
! single spaces embedded in the name (e.g. long double), @code{digs} is
  the number of digits for the floating-point type, @code{float_rep} is
  the float representation (I for IEEE-754-Binary, which is
  the only one supported at this time),
--- 9284,9290 ----
  @end example
  
  where @code{name} is the string name of the type (which can have
! single spaces embedded in the name, e.g. long double), @code{digs} is
  the number of digits for the floating-point type, @code{float_rep} is
  the float representation (I for IEEE-754-Binary, which is
  the only one supported at this time),
*************** Float_Size                   32
*** 9304,9309 ****
--- 9308,9314 ----
  Float_Words_BE                0
  Int_Size                     64
  Long_Double_Size            128
+ Long_Long_Long_Size         128
  Long_Long_Size               64
  Long_Size                    64
  Maximum_Alignment            16
*************** For further details see @ref{f,,Elaborat
*** 9444,9450 ****
  
  @table @asis
  
! @item @code{-gnati@emph{c}}
  
  Identifier character set (@code{c} = 1/2/3/4/5/9/p/8/f/n/w).
  For details of the possible selections for @code{c},
--- 9449,9455 ----
  
  @table @asis
  
! @item @code{-gnati`c'}
  
  Identifier character set (@code{c} = 1/2/3/4/5/9/p/8/f/n/w).
  For details of the possible selections for @code{c},
*************** code is likely to malfunction at run tim
*** 9477,9483 ****
  
  @table @asis
  
! @item @code{-gnatj@emph{nn}}
  
  Reformat error messages to fit on @code{nn} character lines
  @end table
--- 9482,9488 ----
  
  @table @asis
  
! @item @code{-gnatj`nn'}
  
  Reformat error messages to fit on @code{nn} character lines
  @end table
*************** details see @ref{f,,Elaboration Order Ha
*** 9538,9544 ****
  
  @table @asis
  
! @item @code{-gnatk=@emph{n}}
  
  Limit file names to @code{n} (1-999) characters (@code{k} = krunch).
  @end table
--- 9543,9549 ----
  
  @table @asis
  
! @item @code{-gnatk=`n'}
  
  Limit file names to @code{n} (1-999) characters (@code{k} = krunch).
  @end table
*************** source output.
*** 9570,9576 ****
  
  @table @asis
  
! @item @code{-gnatm=@emph{n}}
  
  Limit number of detected error or warning messages to @code{n}
  where @code{n} is in the range 1..999999. The default setting if
--- 9575,9581 ----
  
  @table @asis
  
! @item @code{-gnatm=`n'}
  
  Limit number of detected error or warning messages to @code{n}
  where @code{n} is in the range 1..999999. The default setting if
*************** Interpretation
*** 9651,9657 ****
  
  @item
  
! @emph{1}
  
  @tab
  
--- 9656,9662 ----
  
  @item
  
! `1'
  
  @tab
  
*************** All intermediate overflows checked again
*** 9659,9665 ****
  
  @item
  
! @emph{2}
  
  @tab
  
--- 9664,9670 ----
  
  @item
  
! `2'
  
  @tab
  
*************** Minimize intermediate overflows (@code{M
*** 9667,9673 ****
  
  @item
  
! @emph{3}
  
  @tab
  
--- 9672,9678 ----
  
  @item
  
! `3'
  
  @tab
  
*************** Print package Standard.
*** 9790,9796 ****
  
  @table @asis
  
! @item @code{-gnatT@emph{nnn}}
  
  All compiler tables start at @code{nnn} times usual starting size.
  @end table
--- 9795,9801 ----
  
  @table @asis
  
! @item @code{-gnatT`nnn'}
  
  All compiler tables start at @code{nnn} times usual starting size.
  @end table
*************** Control level of validity checking (@ref
*** 9840,9846 ****
  
  @table @asis
  
! @item @code{-gnatw@emph{xxx}}
  
  Warning mode where
  @code{xxx} is a string of option letters that denotes
--- 9845,9851 ----
  
  @table @asis
  
! @item @code{-gnatw`xxx'}
  
  Warning mode where
  @code{xxx} is a string of option letters that denotes
*************** are enabled or disabled (@ref{eb,,Warnin
*** 9853,9859 ****
  
  @table @asis
  
! @item @code{-gnatW@emph{e}}
  
  Wide character encoding method
  (@code{e}=n/h/u/s/e/8).
--- 9858,9864 ----
  
  @table @asis
  
! @item @code{-gnatW`e'}
  
  Wide character encoding method
  (@code{e}=n/h/u/s/e/8).
*************** Suppress generation of cross-reference i
*** 9876,9882 ****
  
  @item @code{-gnatX}
  
! Enable GNAT implementation extensions and latest Ada version.
  @end table
  
  @geindex -gnaty (gcc)
--- 9881,9897 ----
  
  @item @code{-gnatX}
  
! Enable core GNAT implementation extensions and latest Ada version.
! @end table
! 
! @geindex -gnatX0 (gcc)
! 
! 
! @table @asis
! 
! @item @code{-gnatX0}
! 
! Enable all GNAT implementation extensions and latest Ada version.
  @end table
  
  @geindex -gnaty (gcc)
*************** Enable built-in style checks (@ref{ec,,S
*** 9894,9900 ****
  
  @table @asis
  
! @item @code{-gnatz@emph{m}}
  
  Distribution stub generation and compilation
  (@code{m}=r/c for receiver/caller stubs).
--- 9909,9915 ----
  
  @table @asis
  
! @item @code{-gnatz`m'}
  
  Distribution stub generation and compilation
  (@code{m}=r/c for receiver/caller stubs).
*************** Distribution stub generation and compila
*** 9905,9911 ****
  
  @table @asis
  
! @item @code{-I@emph{dir}}
  
  @geindex RTL
  
--- 9920,9926 ----
  
  @table @asis
  
! @item @code{-I`dir'}
  
  @geindex RTL
  
*************** files in the directory containing the so
*** 9933,9939 ****
  
  @table @asis
  
! @item @code{-o @emph{file}}
  
  This switch is used in @code{gcc} to redirect the generated object file
  and its associated ALI file. Beware of this switch with GNAT, because it may
--- 9948,9954 ----
  
  @table @asis
  
! @item @code{-o `file'}
  
  This switch is used in @code{gcc} to redirect the generated object file
  and its associated ALI file. Beware of this switch with GNAT, because it may
*************** Library (RTL) ALI files.
*** 9968,9974 ****
  
  @table @asis
  
! @item @code{-O[@emph{n}]}
  
  @code{n} controls the optimization level:
  
--- 9983,9989 ----
  
  @table @asis
  
! @item @code{-O[`n']}
  
  @code{n} controls the optimization level:
  
*************** Library (RTL) ALI files.
*** 9976,9982 ****
  @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @emph{n}
  
  @tab
  
--- 9991,9997 ----
  @multitable {xxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! `n'
  
  @tab
  
*************** Effect
*** 9984,9990 ****
  
  @item
  
! @emph{0}
  
  @tab
  
--- 9999,10005 ----
  
  @item
  
! `0'
  
  @tab
  
*************** No optimization, the default setting if
*** 9992,9998 ****
  
  @item
  
! @emph{1}
  
  @tab
  
--- 10007,10013 ----
  
  @item
  
! `1'
  
  @tab
  
*************** time.
*** 10002,10008 ****
  
  @item
  
! @emph{2}
  
  @tab
  
--- 10017,10023 ----
  
  @item
  
! `2'
  
  @tab
  
*************** the cost of substantially increased comp
*** 10011,10017 ****
  
  @item
  
! @emph{3}
  
  @tab
  
--- 10026,10032 ----
  
  @item
  
! `3'
  
  @tab
  
*************** subprograms in the same unit.
*** 10020,10026 ****
  
  @item
  
! @emph{s}
  
  @tab
  
--- 10035,10041 ----
  
  @item
  
! `s'
  
  @tab
  
*************** exit status.
*** 10048,10054 ****
  
  @table @asis
  
! @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. Same meaning as the
  equivalent @code{gnatmake} flag (@ref{ce,,Switches for gnatmake}).
--- 10063,10069 ----
  
  @table @asis
  
! @item @code{--RTS=`rts-path'}
  
  Specifies the default location of the run-time library. Same meaning as the
  equivalent @code{gnatmake} flag (@ref{ce,,Switches for gnatmake}).
*************** compiler you are executing.
*** 10097,10103 ****
  
  @table @asis
  
! @item @code{-V @emph{ver}}
  
  Execute @code{ver} version of the compiler. This is the @code{gcc}
  version, not the GNAT version.
--- 10112,10118 ----
  
  @table @asis
  
! @item @code{-V `ver'}
  
  Execute @code{ver} version of the compiler. This is the @code{gcc}
  version, not the GNAT version.
*************** format:
*** 10216,10222 ****
  
  The @code{v} stands for verbose.
  The effect of this setting is to write long-format error
! messages to @code{stdout} (the standard output file.
  The same program compiled with the
  @code{-gnatv} switch would generate:
  
--- 10231,10237 ----
  
  The @code{v} stands for verbose.
  The effect of this setting is to write long-format error
! messages to @code{stdout} (the standard output file).
  The same program compiled with the
  @code{-gnatv} switch would generate:
  
*************** warning messages generated.
*** 10296,10302 ****
  
  @table @asis
  
! @item @code{-gnatl=@emph{fname}}
  
  This has the same effect as @code{-gnatl} except that the output is
  written to a file instead of to standard output. If the given name
--- 10311,10317 ----
  
  @table @asis
  
! @item @code{-gnatl=`fname'}
  
  This has the same effect as @code{-gnatl} except that the output is
  written to a file instead of to standard output. If the given name
*************** This switch causes GNAT to generate the
*** 10332,10338 ****
  brief format error messages to @code{stderr} (the standard error
  file) as well as the verbose
  format message or full listing (which as usual is written to
! @code{stdout} (the standard output file).
  @end table
  
  @geindex -gnatm (gcc)
--- 10347,10353 ----
  brief format error messages to @code{stderr} (the standard error
  file) as well as the verbose
  format message or full listing (which as usual is written to
! @code{stdout}, the standard output file).
  @end table
  
  @geindex -gnatm (gcc)
*************** format message or full listing (which as
*** 10340,10346 ****
  
  @table @asis
  
! @item @code{-gnatm=@emph{n}}
  
  The @code{m} stands for maximum.
  @code{n} is a decimal integer in the
--- 10355,10361 ----
  
  @table @asis
  
! @item @code{-gnatm=`n'}
  
  The @code{m} stands for maximum.
  @code{n} is a decimal integer in the
*************** Wrong length on string assignment
*** 10602,10608 ****
  Violations of style rules if style checking is enabled
  
  @item 
! Unused @emph{with} clauses
  
  @item 
  @code{Bit_Order} usage that does not have any effect
--- 10617,10623 ----
  Violations of style rules if style checking is enabled
  
  @item 
! Unused `with' clauses
  
  @item 
  @code{Bit_Order} usage that does not have any effect
*************** Dereference of possibly null value
*** 10617,10623 ****
  Declaration that is likely to cause storage error
  
  @item 
! Internal GNAT unit @emph{with}ed by application unit
  
  @item 
  Values known to be out of range at compile time
--- 10632,10638 ----
  Declaration that is likely to cause storage error
  
  @item 
! Internal GNAT unit `with'ed by application unit
  
  @item 
  Values known to be out of range at compile time
*************** of the pragma in the @cite{GNAT_Referenc
*** 10671,10677 ****
  
  @item @code{-gnatwa}
  
! @emph{Activate most optional warnings.}
  
  This switch activates most optional warning messages. See the remaining list
  in this section for details on optional warning messages that can be
--- 10686,10692 ----
  
  @item @code{-gnatwa}
  
! `Activate most optional warnings.'
  
  This switch activates most optional warning messages. See the remaining list
  in this section for details on optional warning messages that can be
*************** switch are:
*** 10718,10723 ****
--- 10733,10741 ----
  @code{-gnatw.q} (questionable layout of record types)
  
  @item 
+ @code{-gnatw_q} (ignored equality)
+ 
+ @item 
  @code{-gnatw_r} (out-of-order record representation clauses)
  
  @item 
*************** All other optional warnings are turned o
*** 10746,10752 ****
  
  @item @code{-gnatwA}
  
! @emph{Suppress all optional errors.}
  
  This switch suppresses all optional warning messages, see remaining list
  in this section for details on optional warning messages that can be
--- 10764,10770 ----
  
  @item @code{-gnatwA}
  
! `Suppress all optional errors.'
  
  This switch suppresses all optional warning messages, see remaining list
  in this section for details on optional warning messages that can be
*************** the warnings for implicit dereferencing.
*** 10768,10774 ****
  
  @item @code{-gnatw.a}
  
! @emph{Activate warnings on failing assertions.}
  
  @geindex Assert failures
  
--- 10786,10792 ----
  
  @item @code{-gnatw.a}
  
! `Activate warnings on failing assertions.'
  
  @geindex Assert failures
  
*************** generated.
*** 10785,10791 ****
  
  @item @code{-gnatw.A}
  
! @emph{Suppress warnings on failing assertions.}
  
  @geindex Assert failures
  
--- 10803,10809 ----
  
  @item @code{-gnatw.A}
  
! `Suppress warnings on failing assertions.'
  
  @geindex Assert failures
  
*************** compile time that the assertion will fai
*** 10800,10806 ****
  
  @item @code{-gnatw_a}
  
! @emph{Activate warnings on anonymous allocators.}
  
  @geindex Anonymous allocators
  
--- 10818,10824 ----
  
  @item @code{-gnatw_a}
  
! `Activate warnings on anonymous allocators.'
  
  @geindex Anonymous allocators
  
*************** RM 3.10.2 (14).
*** 10817,10823 ****
  
  @item @code{-gnatw_A}
  
! @emph{Supress warnings on anonymous allocators.}
  
  @geindex Anonymous allocators
  
--- 10835,10841 ----
  
  @item @code{-gnatw_A}
  
! `Supress warnings on anonymous allocators.'
  
  @geindex Anonymous allocators
  
*************** This switch suppresses warnings for anon
*** 10831,10837 ****
  
  @item @code{-gnatwb}
  
! @emph{Activate warnings on bad fixed values.}
  
  @geindex Bad fixed values
  
--- 10849,10855 ----
  
  @item @code{-gnatwb}
  
! `Activate warnings on bad fixed values.'
  
  @geindex Bad fixed values
  
*************** are not generated.
*** 10855,10861 ****
  
  @item @code{-gnatwB}
  
! @emph{Suppress warnings on bad fixed values.}
  
  This switch suppresses warnings for static fixed-point expressions whose
  value is not an exact multiple of Small.
--- 10873,10879 ----
  
  @item @code{-gnatwB}
  
! `Suppress warnings on bad fixed values.'
  
  This switch suppresses warnings for static fixed-point expressions whose
  value is not an exact multiple of Small.
*************** value is not an exact multiple of Small.
*** 10868,10874 ****
  
  @item @code{-gnatw.b}
  
! @emph{Activate warnings on biased representation.}
  
  @geindex Biased representation
  
--- 10886,10892 ----
  
  @item @code{-gnatw.b}
  
! `Activate warnings on biased representation.'
  
  @geindex Biased representation
  
*************** to represent 10/11). The default is that
*** 10885,10891 ****
  
  @item @code{-gnatw.B}
  
! @emph{Suppress warnings on biased representation.}
  
  This switch suppresses warnings for representation clauses that force the use
  of biased representation.
--- 10903,10909 ----
  
  @item @code{-gnatw.B}
  
! `Suppress warnings on biased representation.'
  
  This switch suppresses warnings for representation clauses that force the use
  of biased representation.
*************** of biased representation.
*** 10898,10904 ****
  
  @item @code{-gnatwc}
  
! @emph{Activate warnings on conditionals.}
  
  @geindex Conditionals
  @geindex constant
--- 10916,10922 ----
  
  @item @code{-gnatwc}
  
! `Activate warnings on conditionals.'
  
  @geindex Conditionals
  @geindex constant
*************** This switch activates warnings for condi
*** 10907,10913 ****
  tests that are known to be True or False at compile time. The default
  is that such warnings are not generated.
  Note that this warning does
! not get issued for the use of boolean variables or constants whose
  values are known at compile time, since this is a standard technique
  for conditional compilation in Ada, and this would generate too many
  false positive warnings.
--- 10925,10931 ----
  tests that are known to be True or False at compile time. The default
  is that such warnings are not generated.
  Note that this warning does
! not get issued for the use of boolean constants whose
  values are known at compile time, since this is a standard technique
  for conditional compilation in Ada, and this would generate too many
  false positive warnings.
*************** This warning can also be turned on using
*** 10935,10941 ****
  
  @item @code{-gnatwC}
  
! @emph{Suppress warnings on conditionals.}
  
  This switch suppresses warnings for conditional expressions used in
  tests that are known to be True or False at compile time.
--- 10953,10959 ----
  
  @item @code{-gnatwC}
  
! `Suppress warnings on conditionals.'
  
  This switch suppresses warnings for conditional expressions used in
  tests that are known to be True or False at compile time.
*************** tests that are known to be True or False
*** 10948,10954 ****
  
  @item @code{-gnatw.c}
  
! @emph{Activate warnings on missing component clauses.}
  
  @geindex Component clause
  @geindex missing
--- 10966,10972 ----
  
  @item @code{-gnatw.c}
  
! `Activate warnings on missing component clauses.'
  
  @geindex Component clause
  @geindex missing
*************** component for which no component clause
*** 10966,10972 ****
  
  @item @code{-gnatw.C}
  
! @emph{Suppress warnings on missing component clauses.}
  
  This switch suppresses warnings for record components that are
  missing a component clause in the situation described above.
--- 10984,10990 ----
  
  @item @code{-gnatw.C}
  
! `Suppress warnings on missing component clauses.'
  
  This switch suppresses warnings for record components that are
  missing a component clause in the situation described above.
*************** missing a component clause in the situat
*** 10979,10985 ****
  
  @item @code{-gnatw_c}
  
! @emph{Activate warnings on unknown condition in Compile_Time_Warning.}
  
  @geindex Compile_Time_Warning
  
--- 10997,11003 ----
  
  @item @code{-gnatw_c}
  
! `Activate warnings on unknown condition in Compile_Time_Warning.'
  
  @geindex Compile_Time_Warning
  
*************** The default is that such warnings are ge
*** 10998,11004 ****
  
  @item @code{-gnatw_C}
  
! @emph{Suppress warnings on unknown condition in Compile_Time_Warning.}
  
  This switch supresses warnings on a pragma Compile_Time_Warning
  or Compile_Time_Error whose condition has a value that is not
--- 11016,11022 ----
  
  @item @code{-gnatw_C}
  
! `Suppress warnings on unknown condition in Compile_Time_Warning.'
  
  This switch supresses warnings on a pragma Compile_Time_Warning
  or Compile_Time_Error whose condition has a value that is not
*************** known at compile time.
*** 11012,11018 ****
  
  @item @code{-gnatwd}
  
! @emph{Activate warnings on implicit dereferencing.}
  
  If this switch is set, then the use of a prefix of an access type
  in an indexed component, slice, or selected component without an
--- 11030,11036 ----
  
  @item @code{-gnatwd}
  
! `Activate warnings on implicit dereferencing.'
  
  If this switch is set, then the use of a prefix of an access type
  in an indexed component, slice, or selected component without an
*************** warnings are not generated.
*** 11030,11036 ****
  
  @item @code{-gnatwD}
  
! @emph{Suppress warnings on implicit dereferencing.}
  
  @geindex Implicit dereferencing
  
--- 11048,11054 ----
  
  @item @code{-gnatwD}
  
! `Suppress warnings on implicit dereferencing.'
  
  @geindex Implicit dereferencing
  
*************** indexed components, slices, and selected
*** 11048,11054 ****
  
  @item @code{-gnatw.d}
  
! @emph{Activate tagging of warning and info messages.}
  
  If this switch is set, then warning messages are tagged, with one of the
  following strings:
--- 11066,11072 ----
  
  @item @code{-gnatw.d}
  
! `Activate tagging of warning and info messages.'
  
  If this switch is set, then warning messages are tagged, with one of the
  following strings:
*************** following strings:
*** 11059,11093 ****
  @itemize -
  
  @item 
! @emph{[-gnatw?]}
  Used to tag warnings controlled by the switch @code{-gnatwx} where x
  is a letter a-z.
  
  @item 
! @emph{[-gnatw.?]}
  Used to tag warnings controlled by the switch @code{-gnatw.x} where x
  is a letter a-z.
  
  @item 
! @emph{[-gnatel]}
  Used to tag elaboration information (info) messages generated when the
  static model of elaboration is used and the @code{-gnatel} switch is set.
  
  @item 
! @emph{[restriction warning]}
  Used to tag warning messages for restriction violations, activated by use
  of the pragma @code{Restriction_Warnings}.
  
  @item 
! @emph{[warning-as-error]}
  Used to tag warning messages that have been converted to error messages by
  use of the pragma Warning_As_Error. Note that such warnings are prefixed by
  the string “error: ” rather than “warning: “.
  
  @item 
! @emph{[enabled by default]}
  Used to tag all other warnings that are always given by default, unless
! warnings are completely suppressed using pragma @emph{Warnings(Off)} or
  the switch @code{-gnatws}.
  @end itemize
  @end quotation
--- 11077,11111 ----
  @itemize -
  
  @item 
! `[-gnatw?]'
  Used to tag warnings controlled by the switch @code{-gnatwx} where x
  is a letter a-z.
  
  @item 
! `[-gnatw.?]'
  Used to tag warnings controlled by the switch @code{-gnatw.x} where x
  is a letter a-z.
  
  @item 
! `[-gnatel]'
  Used to tag elaboration information (info) messages generated when the
  static model of elaboration is used and the @code{-gnatel} switch is set.
  
  @item 
! `[restriction warning]'
  Used to tag warning messages for restriction violations, activated by use
  of the pragma @code{Restriction_Warnings}.
  
  @item 
! `[warning-as-error]'
  Used to tag warning messages that have been converted to error messages by
  use of the pragma Warning_As_Error. Note that such warnings are prefixed by
  the string “error: ” rather than “warning: “.
  
  @item 
! `[enabled by default]'
  Used to tag all other warnings that are always given by default, unless
! warnings are completely suppressed using pragma `Warnings(Off)' or
  the switch @code{-gnatws}.
  @end itemize
  @end quotation
*************** the switch @code{-gnatws}.
*** 11100,11106 ****
  
  @item @code{-gnatw.D}
  
! @emph{Deactivate tagging of warning and info messages messages.}
  
  If this switch is set, then warning messages return to the default
  mode in which warnings and info messages are not tagged as described above for
--- 11118,11124 ----
  
  @item @code{-gnatw.D}
  
! `Deactivate tagging of warning and info messages messages.'
  
  If this switch is set, then warning messages return to the default
  mode in which warnings and info messages are not tagged as described above for
*************** mode in which warnings and info messages
*** 11117,11123 ****
  
  @item @code{-gnatwe}
  
! @emph{Treat warnings and style checks as errors.}
  
  This switch causes warning messages and style check messages to be
  treated as errors.
--- 11135,11141 ----
  
  @item @code{-gnatwe}
  
! `Treat warnings and style checks as errors.'
  
  This switch causes warning messages and style check messages to be
  treated as errors.
*************** are not treated as errors if this switch
*** 11135,11141 ****
  
  @item @code{-gnatw.e}
  
! @emph{Activate every optional warning.}
  
  @geindex Warnings
  @geindex activate every optional warning
--- 11153,11159 ----
  
  @item @code{-gnatw.e}
  
! `Activate every optional warning.'
  
  @geindex Warnings
  @geindex activate every optional warning
*************** been specifically designed according to
*** 11159,11165 ****
  
  @item @code{-gnatwE}
  
! @emph{Treat all run-time exception warnings as errors.}
  
  This switch causes warning messages regarding errors that will be raised
  during run-time execution to be treated as errors.
--- 11177,11183 ----
  
  @item @code{-gnatwE}
  
! `Treat all run-time exception warnings as errors.'
  
  This switch causes warning messages regarding errors that will be raised
  during run-time execution to be treated as errors.
*************** during run-time execution to be treated
*** 11172,11178 ****
  
  @item @code{-gnatwf}
  
! @emph{Activate warnings on unreferenced formals.}
  
  @geindex Formals
  @geindex unreferenced
--- 11190,11196 ----
  
  @item @code{-gnatwf}
  
! `Activate warnings on unreferenced formals.'
  
  @geindex Formals
  @geindex unreferenced
*************** default is that these warnings are not g
*** 11190,11196 ****
  
  @item @code{-gnatwF}
  
! @emph{Suppress warnings on unreferenced formals.}
  
  This switch suppresses warnings for unreferenced formal
  parameters. Note that the
--- 11208,11214 ----
  
  @item @code{-gnatwF}
  
! `Suppress warnings on unreferenced formals.'
  
  This switch suppresses warnings for unreferenced formal
  parameters. Note that the
*************** formals.
*** 11206,11212 ****
  
  @item @code{-gnatwg}
  
! @emph{Activate warnings on unrecognized pragmas.}
  
  @geindex Pragmas
  @geindex unrecognized
--- 11224,11230 ----
  
  @item @code{-gnatwg}
  
! `Activate warnings on unrecognized pragmas.'
  
  @geindex Pragmas
  @geindex unrecognized
*************** Manual requirement that such warnings ap
*** 11225,11231 ****
  
  @item @code{-gnatwG}
  
! @emph{Suppress warnings on unrecognized pragmas.}
  
  This switch suppresses warnings for unrecognized pragmas.
  @end table
--- 11243,11249 ----
  
  @item @code{-gnatwG}
  
! `Suppress warnings on unrecognized pragmas.'
  
  This switch suppresses warnings for unrecognized pragmas.
  @end table
*************** This switch suppresses warnings for unre
*** 11237,11243 ****
  
  @item @code{-gnatw.g}
  
! @emph{Warnings used for GNAT sources.}
  
  This switch sets the warning categories that are used by the standard
  GNAT style. Currently this is equivalent to
--- 11255,11261 ----
  
  @item @code{-gnatw.g}
  
! `Warnings used for GNAT sources.'
  
  This switch sets the warning categories that are used by the standard
  GNAT style. Currently this is equivalent to
*************** but more warnings may be added in the fu
*** 11252,11258 ****
  
  @item @code{-gnatwh}
  
! @emph{Activate warnings on hiding.}
  
  @geindex Hiding of Declarations
  
--- 11270,11276 ----
  
  @item @code{-gnatwh}
  
! `Activate warnings on hiding.'
  
  @geindex Hiding of Declarations
  
*************** code. The default is that warnings on hi
*** 11269,11275 ****
  
  @item @code{-gnatwH}
  
! @emph{Suppress warnings on hiding.}
  
  This switch suppresses warnings on hiding declarations.
  @end table
--- 11287,11293 ----
  
  @item @code{-gnatwH}
  
! `Suppress warnings on hiding.'
  
  This switch suppresses warnings on hiding declarations.
  @end table
*************** This switch suppresses warnings on hidin
*** 11281,11294 ****
  
  @item @code{-gnatw.h}
  
! @emph{Activate warnings on holes/gaps in records.}
  
  @geindex Record Representation (gaps)
  
  This switch activates warnings on component clauses in record
  representation clauses that leave holes (gaps) in the record layout.
! If this warning option is active, then record representation clauses
! should specify a contiguous layout, adding unused fill fields if needed.
  @end table
  
  @geindex -gnatw.H (gcc)
--- 11299,11317 ----
  
  @item @code{-gnatw.h}
  
! `Activate warnings on holes/gaps in records.'
  
  @geindex Record Representation (gaps)
  
  This switch activates warnings on component clauses in record
  representation clauses that leave holes (gaps) in the record layout.
! If a record representation clause does not specify a location for
! every component of the record type, then the warnings generated (or not
! generated) are unspecified. For example, there may be gaps for which
! either no warning is generated or a warning is generated that
! incorrectly describes the location of the gap. This undesirable situation
! can sometimes be avoided by adding (and specifying the location for) unused
! fill fields.
  @end table
  
  @geindex -gnatw.H (gcc)
*************** should specify a contiguous layout, addi
*** 11298,11304 ****
  
  @item @code{-gnatw.H}
  
! @emph{Suppress warnings on holes/gaps in records.}
  
  This switch suppresses warnings on component clauses in record
  representation clauses that leave holes (haps) in the record layout.
--- 11321,11327 ----
  
  @item @code{-gnatw.H}
  
! `Suppress warnings on holes/gaps in records.'
  
  This switch suppresses warnings on component clauses in record
  representation clauses that leave holes (haps) in the record layout.
*************** representation clauses that leave holes
*** 11311,11326 ****
  
  @item @code{-gnatwi}
  
! @emph{Activate warnings on implementation units.}
  
! This switch activates warnings for a @emph{with} of an internal GNAT
  implementation unit, defined as any unit from the @code{Ada},
  @code{Interfaces}, @code{GNAT},
  or @code{System}
  hierarchies that is not
  documented in either the Ada Reference Manual or the GNAT
  Programmer’s Reference Manual. Such units are intended only
! for internal implementation purposes and should not be @emph{with}ed
  by user programs. The default is that such warnings are generated
  @end table
  
--- 11334,11349 ----
  
  @item @code{-gnatwi}
  
! `Activate warnings on implementation units.'
  
! This switch activates warnings for a `with' of an internal GNAT
  implementation unit, defined as any unit from the @code{Ada},
  @code{Interfaces}, @code{GNAT},
  or @code{System}
  hierarchies that is not
  documented in either the Ada Reference Manual or the GNAT
  Programmer’s Reference Manual. Such units are intended only
! for internal implementation purposes and should not be `with'ed
  by user programs. The default is that such warnings are generated
  @end table
  
*************** by user programs. The default is that su
*** 11331,11339 ****
  
  @item @code{-gnatwI}
  
! @emph{Disable warnings on implementation units.}
  
! This switch disables warnings for a @emph{with} of an internal GNAT
  implementation unit.
  @end table
  
--- 11354,11362 ----
  
  @item @code{-gnatwI}
  
! `Disable warnings on implementation units.'
  
! This switch disables warnings for a `with' of an internal GNAT
  implementation unit.
  @end table
  
*************** implementation unit.
*** 11344,11350 ****
  
  @item @code{-gnatw.i}
  
! @emph{Activate warnings on overlapping actuals.}
  
  This switch enables a warning on statically detectable overlapping actuals in
  a subprogram call, when one of the actuals is an in-out parameter, and the
--- 11367,11373 ----
  
  @item @code{-gnatw.i}
  
! `Activate warnings on overlapping actuals.'
  
  This switch enables a warning on statically detectable overlapping actuals in
  a subprogram call, when one of the actuals is an in-out parameter, and the
*************** types of the actuals are not by-copy typ
*** 11358,11364 ****
  
  @item @code{-gnatw.I}
  
! @emph{Disable warnings on overlapping actuals.}
  
  This switch disables warnings on overlapping actuals in a call.
  @end table
--- 11381,11387 ----
  
  @item @code{-gnatw.I}
  
! `Disable warnings on overlapping actuals.'
  
  This switch disables warnings on overlapping actuals in a call.
  @end table
*************** This switch disables warnings on overlap
*** 11370,11376 ****
  
  @item @code{-gnatwj}
  
! @emph{Activate warnings on obsolescent features (Annex J).}
  
  @geindex Features
  @geindex obsolescent
--- 11393,11399 ----
  
  @item @code{-gnatwj}
  
! `Activate warnings on obsolescent features (Annex J).'
  
  @geindex Features
  @geindex obsolescent
*************** This switch disables warnings on overlap
*** 11380,11387 ****
  If this warning option is activated, then warnings are generated for
  calls to subprograms marked with @code{pragma Obsolescent} and
  for use of features in Annex J of the Ada Reference Manual. In the
! case of Annex J, not all features are flagged. In particular use
! of the renamed packages (like @code{Text_IO}) and use of package
  @code{ASCII} are not flagged, since these are very common and
  would generate many annoying positive warnings. The default is that
  such warnings are not generated.
--- 11403,11409 ----
  If this warning option is activated, then warnings are generated for
  calls to subprograms marked with @code{pragma Obsolescent} and
  for use of features in Annex J of the Ada Reference Manual. In the
! case of Annex J, not all features are flagged. In particular, uses of package
  @code{ASCII} are not flagged, since these are very common and
  would generate many annoying positive warnings. The default is that
  such warnings are not generated.
*************** Second, the restriction does flag uses o
*** 11407,11413 ****
  
  @item @code{-gnatwJ}
  
! @emph{Suppress warnings on obsolescent features (Annex J).}
  
  This switch disables warnings on use of obsolescent features.
  @end table
--- 11429,11435 ----
  
  @item @code{-gnatwJ}
  
! `Suppress warnings on obsolescent features (Annex J).'
  
  This switch disables warnings on use of obsolescent features.
  @end table
*************** This switch disables warnings on use of
*** 11419,11425 ****
  
  @item @code{-gnatw.j}
  
! @emph{Activate warnings on late declarations of tagged type primitives.}
  
  This switch activates warnings on visible primitives added to a
  tagged type after deriving a private extension from it.
--- 11441,11447 ----
  
  @item @code{-gnatw.j}
  
! `Activate warnings on late declarations of tagged type primitives.'
  
  This switch activates warnings on visible primitives added to a
  tagged type after deriving a private extension from it.
*************** tagged type after deriving a private ext
*** 11432,11438 ****
  
  @item @code{-gnatw.J}
  
! @emph{Suppress warnings on late declarations of tagged type primitives.}
  
  This switch suppresses warnings on visible primitives added to a
  tagged type after deriving a private extension from it.
--- 11454,11460 ----
  
  @item @code{-gnatw.J}
  
! `Suppress warnings on late declarations of tagged type primitives.'
  
  This switch suppresses warnings on visible primitives added to a
  tagged type after deriving a private extension from it.
*************** tagged type after deriving a private ext
*** 11445,11451 ****
  
  @item @code{-gnatwk}
  
! @emph{Activate warnings on variables that could be constants.}
  
  This switch activates warnings for variables that are initialized but
  never modified, and then could be declared constants. The default is that
--- 11467,11473 ----
  
  @item @code{-gnatwk}
  
! `Activate warnings on variables that could be constants.'
  
  This switch activates warnings for variables that are initialized but
  never modified, and then could be declared constants. The default is that
*************** such warnings are not given.
*** 11459,11465 ****
  
  @item @code{-gnatwK}
  
! @emph{Suppress warnings on variables that could be constants.}
  
  This switch disables warnings on variables that could be declared constants.
  @end table
--- 11481,11487 ----
  
  @item @code{-gnatwK}
  
! `Suppress warnings on variables that could be constants.'
  
  This switch disables warnings on variables that could be declared constants.
  @end table
*************** This switch disables warnings on variabl
*** 11471,11477 ****
  
  @item @code{-gnatw.k}
  
! @emph{Activate warnings on redefinition of names in standard.}
  
  This switch activates warnings for declarations that declare a name that
  is defined in package Standard. Such declarations can be confusing,
--- 11493,11499 ----
  
  @item @code{-gnatw.k}
  
! `Activate warnings on redefinition of names in standard.'
  
  This switch activates warnings for declarations that declare a name that
  is defined in package Standard. Such declarations can be confusing,
*************** not included in this check.
*** 11488,11494 ****
  
  @item @code{-gnatw.K}
  
! @emph{Suppress warnings on redefinition of names in standard.}
  
  This switch disables warnings for declarations that declare a name that
  is defined in package Standard.
--- 11510,11516 ----
  
  @item @code{-gnatw.K}
  
! `Suppress warnings on redefinition of names in standard.'
  
  This switch disables warnings for declarations that declare a name that
  is defined in package Standard.
*************** is defined in package Standard.
*** 11501,11507 ****
  
  @item @code{-gnatwl}
  
! @emph{Activate warnings for elaboration pragmas.}
  
  @geindex Elaboration
  @geindex warnings
--- 11523,11529 ----
  
  @item @code{-gnatwl}
  
! `Activate warnings for elaboration pragmas.'
  
  @geindex Elaboration
  @geindex warnings
*************** are not generated.
*** 11523,11529 ****
  
  @item @code{-gnatwL}
  
! @emph{Suppress warnings for elaboration pragmas.}
  
  This switch suppresses warnings for possible elaboration problems.
  @end table
--- 11545,11551 ----
  
  @item @code{-gnatwL}
  
! `Suppress warnings for elaboration pragmas.'
  
  This switch suppresses warnings for possible elaboration problems.
  @end table
*************** This switch suppresses warnings for poss
*** 11535,11541 ****
  
  @item @code{-gnatw.l}
  
! @emph{List inherited aspects.}
  
  This switch causes the compiler to list inherited invariants,
  preconditions, and postconditions from Type_Invariant’Class, Invariant’Class,
--- 11557,11563 ----
  
  @item @code{-gnatw.l}
  
! `List inherited aspects.'
  
  This switch causes the compiler to list inherited invariants,
  preconditions, and postconditions from Type_Invariant’Class, Invariant’Class,
*************** Pre’Class, and Post’Class aspects. A
*** 11549,11555 ****
  
  @item @code{-gnatw.L}
  
! @emph{Suppress listing of inherited aspects.}
  
  This switch suppresses listing of inherited aspects.
  @end table
--- 11571,11577 ----
  
  @item @code{-gnatw.L}
  
! `Suppress listing of inherited aspects.'
  
  This switch suppresses listing of inherited aspects.
  @end table
*************** This switch suppresses listing of inheri
*** 11561,11567 ****
  
  @item @code{-gnatwm}
  
! @emph{Activate warnings on modified but unreferenced variables.}
  
  This switch activates warnings for variables that are assigned (using
  an initialization value or with one or more assignment statements) but
--- 11583,11589 ----
  
  @item @code{-gnatwm}
  
! `Activate warnings on modified but unreferenced variables.'
  
  This switch activates warnings for variables that are assigned (using
  an initialization value or with one or more assignment statements) but
*************** The default is that these warnings are n
*** 11578,11584 ****
  
  @item @code{-gnatwM}
  
! @emph{Disable warnings on modified but unreferenced variables.}
  
  This switch disables warnings for variables that are assigned or
  initialized, but never read.
--- 11600,11606 ----
  
  @item @code{-gnatwM}
  
! `Disable warnings on modified but unreferenced variables.'
  
  This switch disables warnings for variables that are assigned or
  initialized, but never read.
*************** initialized, but never read.
*** 11591,11597 ****
  
  @item @code{-gnatw.m}
  
! @emph{Activate warnings on suspicious modulus values.}
  
  This switch activates warnings for modulus values that seem suspicious.
  The cases caught are where the size is the same as the modulus (e.g.
--- 11613,11619 ----
  
  @item @code{-gnatw.m}
  
! `Activate warnings on suspicious modulus values.'
  
  This switch activates warnings for modulus values that seem suspicious.
  The cases caught are where the size is the same as the modulus (e.g.
*************** integers after wrap-around. The default
*** 11611,11617 ****
  
  @item @code{-gnatw.M}
  
! @emph{Disable warnings on suspicious modulus values.}
  
  This switch disables warnings for suspicious modulus values.
  @end table
--- 11633,11639 ----
  
  @item @code{-gnatw.M}
  
! `Disable warnings on suspicious modulus values.'
  
  This switch disables warnings for suspicious modulus values.
  @end table
*************** This switch disables warnings for suspic
*** 11623,11629 ****
  
  @item @code{-gnatwn}
  
! @emph{Set normal warnings mode.}
  
  This switch sets normal warning mode, in which enabled warnings are
  issued and treated as warnings rather than errors. This is the default
--- 11645,11651 ----
  
  @item @code{-gnatwn}
  
! `Set normal warnings mode.'
  
  This switch sets normal warning mode, in which enabled warnings are
  issued and treated as warnings rather than errors. This is the default
*************** use of @code{-gnatg}.
*** 11644,11650 ****
  
  @item @code{-gnatw.n}
  
! @emph{Activate warnings on atomic synchronization.}
  
  This switch actives warnings when an access to an atomic variable
  requires the generation of atomic synchronization code. These
--- 11666,11672 ----
  
  @item @code{-gnatw.n}
  
! `Activate warnings on atomic synchronization.'
  
  This switch actives warnings when an access to an atomic variable
  requires the generation of atomic synchronization code. These
*************** warnings are off by default.
*** 11658,11664 ****
  
  @item @code{-gnatw.N}
  
! @emph{Suppress warnings on atomic synchronization.}
  
  @geindex Atomic Synchronization
  @geindex warnings
--- 11680,11686 ----
  
  @item @code{-gnatw.N}
  
! `Suppress warnings on atomic synchronization.'
  
  @geindex Atomic Synchronization
  @geindex warnings
*************** requires the generation of atomic synchr
*** 11677,11683 ****
  
  @item @code{-gnatwo}
  
! @emph{Activate warnings on address clause overlays.}
  
  This switch activates warnings for possibly unintended initialization
  effects of defining address clauses that cause one variable to overlap
--- 11699,11705 ----
  
  @item @code{-gnatwo}
  
! `Activate warnings on address clause overlays.'
  
  This switch activates warnings for possibly unintended initialization
  effects of defining address clauses that cause one variable to overlap
*************** another. The default is that such warnin
*** 11691,11697 ****
  
  @item @code{-gnatwO}
  
! @emph{Suppress warnings on address clause overlays.}
  
  This switch suppresses warnings on possibly unintended initialization
  effects of defining address clauses that cause one variable to overlap
--- 11713,11719 ----
  
  @item @code{-gnatwO}
  
! `Suppress warnings on address clause overlays.'
  
  This switch suppresses warnings on possibly unintended initialization
  effects of defining address clauses that cause one variable to overlap
*************** another.
*** 11705,11711 ****
  
  @item @code{-gnatw.o}
  
! @emph{Activate warnings on modified but unreferenced out parameters.}
  
  This switch activates warnings for variables that are modified by using
  them as actuals for a call to a procedure with an out mode formal, where
--- 11727,11733 ----
  
  @item @code{-gnatw.o}
  
! `Activate warnings on modified but unreferenced out parameters.'
  
  This switch activates warnings for variables that are modified by using
  them as actuals for a call to a procedure with an out mode formal, where
*************** The default is that these warnings are n
*** 11725,11731 ****
  
  @item @code{-gnatw.O}
  
! @emph{Disable warnings on modified but unreferenced out parameters.}
  
  This switch suppresses warnings for variables that are modified by using
  them as actuals for a call to a procedure with an out mode formal, where
--- 11747,11753 ----
  
  @item @code{-gnatw.O}
  
! `Disable warnings on modified but unreferenced out parameters.'
  
  This switch suppresses warnings for variables that are modified by using
  them as actuals for a call to a procedure with an out mode formal, where
*************** the resulting assigned value is never re
*** 11742,11748 ****
  
  @item @code{-gnatwp}
  
! @emph{Activate warnings on ineffective pragma Inlines.}
  
  This switch activates warnings for failure of front end inlining
  (activated by @code{-gnatN}) to inline a particular call. There are
--- 11764,11770 ----
  
  @item @code{-gnatwp}
  
! `Activate warnings on ineffective pragma Inlines.'
  
  This switch activates warnings for failure of front end inlining
  (activated by @code{-gnatN}) to inline a particular call. There are
*************** separately, using the gcc switch -Winlin
*** 11760,11766 ****
  
  @item @code{-gnatwP}
  
! @emph{Suppress warnings on ineffective pragma Inlines.}
  
  This switch suppresses warnings on ineffective pragma Inlines. If the
  inlining mechanism cannot inline a call, it will simply ignore the
--- 11782,11788 ----
  
  @item @code{-gnatwP}
  
! `Suppress warnings on ineffective pragma Inlines.'
  
  This switch suppresses warnings on ineffective pragma Inlines. If the
  inlining mechanism cannot inline a call, it will simply ignore the
*************** request silently.
*** 11777,11783 ****
  
  @item @code{-gnatw.p}
  
! @emph{Activate warnings on parameter ordering.}
  
  This switch activates warnings for cases of suspicious parameter
  ordering when the list of arguments are all simple identifiers that
--- 11799,11805 ----
  
  @item @code{-gnatw.p}
  
! `Activate warnings on parameter ordering.'
  
  This switch activates warnings for cases of suspicious parameter
  ordering when the list of arguments are all simple identifiers that
*************** default is that such warnings are not gi
*** 11795,11801 ****
  
  @item @code{-gnatw.P}
  
! @emph{Suppress warnings on parameter ordering.}
  
  This switch suppresses warnings on cases of suspicious parameter
  ordering.
--- 11817,11823 ----
  
  @item @code{-gnatw.P}
  
! `Suppress warnings on parameter ordering.'
  
  This switch suppresses warnings on cases of suspicious parameter
  ordering.
*************** ordering.
*** 11808,11814 ****
  
  @item @code{-gnatw_p}
  
! @emph{Activate warnings for pedantic checks.}
  
  This switch activates warnings for the failure of certain pedantic checks.
  The only case currently supported is a check that the subtype_marks given
--- 11830,11836 ----
  
  @item @code{-gnatw_p}
  
! `Activate warnings for pedantic checks.'
  
  This switch activates warnings for the failure of certain pedantic checks.
  The only case currently supported is a check that the subtype_marks given
*************** is that such warnings are not given.
*** 11824,11830 ****
  
  @item @code{-gnatw_P}
  
! @emph{Suppress warnings for pedantic checks.}
  
  This switch suppresses warnings on violations of pedantic checks.
  @end table
--- 11846,11852 ----
  
  @item @code{-gnatw_P}
  
! `Suppress warnings for pedantic checks.'
  
  This switch suppresses warnings on violations of pedantic checks.
  @end table
*************** This switch suppresses warnings on viola
*** 11839,11845 ****
  
  @item @code{-gnatwq}
  
! @emph{Activate warnings on questionable missing parentheses.}
  
  This switch activates warnings for cases where parentheses are not used and
  the result is potential ambiguity from a readers point of view. For example
--- 11861,11867 ----
  
  @item @code{-gnatwq}
  
! `Activate warnings on questionable missing parentheses.'
  
  This switch activates warnings for cases where parentheses are not used and
  the result is potential ambiguity from a readers point of view. For example
*************** is that these warnings are given.
*** 11858,11864 ****
  
  @item @code{-gnatwQ}
  
! @emph{Suppress warnings on questionable missing parentheses.}
  
  This switch suppresses warnings for cases where the association is not
  clear and the use of parentheses is preferred.
--- 11880,11886 ----
  
  @item @code{-gnatwQ}
  
! `Suppress warnings on questionable missing parentheses.'
  
  This switch suppresses warnings for cases where the association is not
  clear and the use of parentheses is preferred.
*************** clear and the use of parentheses is pref
*** 11874,11880 ****
  
  @item @code{-gnatw.q}
  
! @emph{Activate warnings on questionable layout of record types.}
  
  This switch activates warnings for cases where the default layout of
  a record type, that is to say the layout of its components in textual
--- 11896,11902 ----
  
  @item @code{-gnatw.q}
  
! `Activate warnings on questionable layout of record types.'
  
  This switch activates warnings for cases where the default layout of
  a record type, that is to say the layout of its components in textual
*************** The default is that these warnings are n
*** 11928,11939 ****
  
  @item @code{-gnatw.Q}
  
! @emph{Suppress warnings on questionable layout of record types.}
  
  This switch suppresses warnings for cases where the default layout of
  a record type would very likely cause inefficiencies.
  @end table
  
  @geindex -gnatwr (gcc)
  
  
--- 11950,11991 ----
  
  @item @code{-gnatw.Q}
  
! `Suppress warnings on questionable layout of record types.'
  
  This switch suppresses warnings for cases where the default layout of
  a record type would very likely cause inefficiencies.
  @end table
  
+ @geindex -gnatw_q (gcc)
+ 
+ 
+ @table @asis
+ 
+ @item @code{-gnatw_q}
+ 
+ `Activate warnings for ignored equality operators.'
+ 
+ This switch activates warnings for a user-defined “=” function that does
+ not compose (i.e. is ignored for a predefined “=” for a composite type
+ containing a component whose type has the user-defined “=” as
+ primitive). Note that the user-defined “=” must be a primitive operator
+ in order to trigger the warning.
+ See RM-4.5.2(14/3-15/5, 21, 24/3, 32.1/1)
+ for the exact Ada rules on composability of “=”.
+ 
+ The default is that these warnings are not given.
+ @end table
+ 
+ @geindex -gnatw_Q (gcc)
+ 
+ 
+ @table @asis
+ 
+ @item @code{-gnatw_Q}
+ 
+ `Suppress warnings for ignored equality operators.'
+ @end table
+ 
  @geindex -gnatwr (gcc)
  
  
*************** a record type would very likely cause in
*** 11941,11947 ****
  
  @item @code{-gnatwr}
  
! @emph{Activate warnings on redundant constructs.}
  
  This switch activates warnings for redundant constructs. The following
  is the current list of constructs regarded as redundant:
--- 11993,11999 ----
  
  @item @code{-gnatwr}
  
! `Activate warnings on redundant constructs.'
  
  This switch activates warnings for redundant constructs. The following
  is the current list of constructs regarded as redundant:
*************** The default is that warnings for redunda
*** 11989,11995 ****
  
  @item @code{-gnatwR}
  
! @emph{Suppress warnings on redundant constructs.}
  
  This switch suppresses warnings for redundant constructs.
  @end table
--- 12041,12047 ----
  
  @item @code{-gnatwR}
  
! `Suppress warnings on redundant constructs.'
  
  This switch suppresses warnings for redundant constructs.
  @end table
*************** This switch suppresses warnings for redu
*** 12001,12007 ****
  
  @item @code{-gnatw.r}
  
! @emph{Activate warnings for object renaming function.}
  
  This switch activates warnings for an object renaming that renames a
  function call, which is equivalent to a constant declaration (as
--- 12053,12059 ----
  
  @item @code{-gnatw.r}
  
! `Activate warnings for object renaming function.'
  
  This switch activates warnings for an object renaming that renames a
  function call, which is equivalent to a constant declaration (as
*************** warnings are given.
*** 12016,12022 ****
  
  @item @code{-gnatw.R}
  
! @emph{Suppress warnings for object renaming function.}
  
  This switch suppresses warnings for object renaming function.
  @end table
--- 12068,12074 ----
  
  @item @code{-gnatw.R}
  
! `Suppress warnings for object renaming function.'
  
  This switch suppresses warnings for object renaming function.
  @end table
*************** This switch suppresses warnings for obje
*** 12028,12034 ****
  
  @item @code{-gnatw_r}
  
! @emph{Activate warnings for out-of-order record representation clauses.}
  
  This switch activates warnings for record representation clauses,
  if the order of component declarations, component clauses,
--- 12080,12086 ----
  
  @item @code{-gnatw_r}
  
! `Activate warnings for out-of-order record representation clauses.'
  
  This switch activates warnings for record representation clauses,
  if the order of component declarations, component clauses,
*************** The default is that these warnings are n
*** 12043,12049 ****
  
  @item @code{-gnatw_R}
  
! @emph{Suppress warnings for out-of-order record representation clauses.}
  @end table
  
  @geindex -gnatws (gcc)
--- 12095,12101 ----
  
  @item @code{-gnatw_R}
  
! `Suppress warnings for out-of-order record representation clauses.'
  @end table
  
  @geindex -gnatws (gcc)
*************** The default is that these warnings are n
*** 12053,12059 ****
  
  @item @code{-gnatws}
  
! @emph{Suppress all warnings.}
  
  This switch completely suppresses the
  output of all warning messages from the GNAT front end, including
--- 12105,12111 ----
  
  @item @code{-gnatws}
  
! `Suppress all warnings.'
  
  This switch completely suppresses the
  output of all warning messages from the GNAT front end, including
*************** handling of style check messages.
*** 12078,12084 ****
  
  @item @code{-gnatw.s}
  
! @emph{Activate warnings on overridden size clauses.}
  
  This switch activates warnings on component clauses in record
  representation clauses where the length given overrides that
--- 12130,12136 ----
  
  @item @code{-gnatw.s}
  
! `Activate warnings on overridden size clauses.'
  
  This switch activates warnings on component clauses in record
  representation clauses where the length given overrides that
*************** component type.
*** 12095,12101 ****
  
  @item @code{-gnatw.S}
  
! @emph{Suppress warnings on overridden size clauses.}
  
  This switch suppresses warnings on component clauses in record
  representation clauses that override size clauses, and similar
--- 12147,12153 ----
  
  @item @code{-gnatw.S}
  
! `Suppress warnings on overridden size clauses.'
  
  This switch suppresses warnings on component clauses in record
  representation clauses that override size clauses, and similar
*************** warnings when an array component size ov
*** 12115,12121 ****
  
  @item @code{-gnatwt}
  
! @emph{Activate warnings for tracking of deleted conditional code.}
  
  This switch activates warnings for tracking of code in conditionals (IF and
  CASE statements) that is detected to be dead code which cannot be executed, and
--- 12167,12173 ----
  
  @item @code{-gnatwt}
  
! `Activate warnings for tracking of deleted conditional code.'
  
  This switch activates warnings for tracking of code in conditionals (IF and
  CASE statements) that is detected to be dead code which cannot be executed, and
*************** useful for detecting deactivated code in
*** 12130,12136 ****
  
  @item @code{-gnatwT}
  
! @emph{Suppress warnings for tracking of deleted conditional code.}
  
  This switch suppresses warnings for tracking of deleted conditional code.
  @end table
--- 12182,12188 ----
  
  @item @code{-gnatwT}
  
! `Suppress warnings for tracking of deleted conditional code.'
  
  This switch suppresses warnings for tracking of deleted conditional code.
  @end table
*************** This switch suppresses warnings for trac
*** 12142,12148 ****
  
  @item @code{-gnatw.t}
  
! @emph{Activate warnings on suspicious contracts.}
  
  This switch activates warnings on suspicious contracts. This includes
  warnings on suspicious postconditions (whether a pragma @code{Postcondition} or a
--- 12194,12200 ----
  
  @item @code{-gnatw.t}
  
! `Activate warnings on suspicious contracts.'
  
  This switch activates warnings on suspicious contracts. This includes
  warnings on suspicious postconditions (whether a pragma @code{Postcondition} or a
*************** warnings are generated.
*** 12164,12170 ****
  
  @item @code{-gnatw.T}
  
! @emph{Suppress warnings on suspicious contracts.}
  
  This switch suppresses warnings on suspicious contracts.
  @end table
--- 12216,12222 ----
  
  @item @code{-gnatw.T}
  
! `Suppress warnings on suspicious contracts.'
  
  This switch suppresses warnings on suspicious contracts.
  @end table
*************** This switch suppresses warnings on suspi
*** 12176,12197 ****
  
  @item @code{-gnatwu}
  
! @emph{Activate warnings on unused entities.}
  
  This switch activates warnings to be generated for entities that
! are declared but not referenced, and for units that are @emph{with}ed
  and not
  referenced. In the case of packages, a warning is also generated if
  no entities in the package are referenced. This means that if a with’ed
  package is referenced but the only references are in @code{use}
  clauses or @code{renames}
  declarations, a warning is still generated. A warning is also generated
! for a generic package that is @emph{with}ed but never instantiated.
  In the case where a package or subprogram body is compiled, and there
! is a @emph{with} on the corresponding spec
  that is only referenced in the body,
  a warning is also generated, noting that the
! @emph{with} can be moved to the body. The default is that
  such warnings are not generated.
  This switch also activates warnings on unreferenced formals
  (it includes the effect of @code{-gnatwf}).
--- 12228,12249 ----
  
  @item @code{-gnatwu}
  
! `Activate warnings on unused entities.'
  
  This switch activates warnings to be generated for entities that
! are declared but not referenced, and for units that are `with'ed
  and not
  referenced. In the case of packages, a warning is also generated if
  no entities in the package are referenced. This means that if a with’ed
  package is referenced but the only references are in @code{use}
  clauses or @code{renames}
  declarations, a warning is still generated. A warning is also generated
! for a generic package that is `with'ed but never instantiated.
  In the case where a package or subprogram body is compiled, and there
! is a `with' on the corresponding spec
  that is only referenced in the body,
  a warning is also generated, noting that the
! `with' can be moved to the body. The default is that
  such warnings are not generated.
  This switch also activates warnings on unreferenced formals
  (it includes the effect of @code{-gnatwf}).
*************** This switch also activates warnings on u
*** 12204,12210 ****
  
  @item @code{-gnatwU}
  
! @emph{Suppress warnings on unused entities.}
  
  This switch suppresses warnings for unused entities and packages.
  It also turns off warnings on unreferenced formals (and thus includes
--- 12256,12262 ----
  
  @item @code{-gnatwU}
  
! `Suppress warnings on unused entities.'
  
  This switch suppresses warnings for unused entities and packages.
  It also turns off warnings on unreferenced formals (and thus includes
*************** the effect of @code{-gnatwF}).
*** 12218,12230 ****
  
  @item @code{-gnatw.u}
  
! @emph{Activate warnings on unordered enumeration types.}
  
  This switch causes enumeration types to be considered as conceptually
  unordered, unless an explicit pragma @code{Ordered} is given for the type.
  The effect is to generate warnings in clients that use explicit comparisons
  or subranges, since these constructs both treat objects of the type as
! ordered. (A @emph{client} is defined as a unit that is other than the unit in
  which the type is declared, or its body or subunits.) Please refer to
  the description of pragma @code{Ordered} in the
  @cite{GNAT Reference Manual} for further details.
--- 12270,12282 ----
  
  @item @code{-gnatw.u}
  
! `Activate warnings on unordered enumeration types.'
  
  This switch causes enumeration types to be considered as conceptually
  unordered, unless an explicit pragma @code{Ordered} is given for the type.
  The effect is to generate warnings in clients that use explicit comparisons
  or subranges, since these constructs both treat objects of the type as
! ordered. (A `client' is defined as a unit that is other than the unit in
  which the type is declared, or its body or subunits.) Please refer to
  the description of pragma @code{Ordered} in the
  @cite{GNAT Reference Manual} for further details.
*************** The default is that such warnings are no
*** 12238,12244 ****
  
  @item @code{-gnatw.U}
  
! @emph{Deactivate warnings on unordered enumeration types.}
  
  This switch causes all enumeration types to be considered as ordered, so
  that no warnings are given for comparisons or subranges for any type.
--- 12290,12296 ----
  
  @item @code{-gnatw.U}
  
! `Deactivate warnings on unordered enumeration types.'
  
  This switch causes all enumeration types to be considered as ordered, so
  that no warnings are given for comparisons or subranges for any type.
*************** that no warnings are given for compariso
*** 12253,12259 ****
  
  @item @code{-gnatwv}
  
! @emph{Activate warnings on unassigned variables.}
  
  This switch activates warnings for access to variables which
  may not be properly initialized. The default is that
--- 12305,12311 ----
  
  @item @code{-gnatwv}
  
! `Activate warnings on unassigned variables.'
  
  This switch activates warnings for access to variables which
  may not be properly initialized. The default is that
*************** unless the relevant type fully initializ
*** 12274,12280 ****
  
  @item @code{-gnatwV}
  
! @emph{Suppress warnings on unassigned variables.}
  
  This switch suppresses warnings for access to variables which
  may not be properly initialized.
--- 12326,12332 ----
  
  @item @code{-gnatwV}
  
! `Suppress warnings on unassigned variables.'
  
  This switch suppresses warnings for access to variables which
  may not be properly initialized.
*************** may not be properly initialized.
*** 12289,12295 ****
  
  @item @code{-gnatw.v}
  
! @emph{Activate info messages for non-default bit order.}
  
  This switch activates messages (labeled “info”, they are not warnings,
  just informational messages) about the effects of non-default bit-order
--- 12341,12347 ----
  
  @item @code{-gnatw.v}
  
! `Activate info messages for non-default bit order.'
  
  This switch activates messages (labeled “info”, they are not warnings,
  just informational messages) about the effects of non-default bit-order
*************** exact consequences of using this feature
*** 12306,12312 ****
  
  @item @code{-gnatw.V}
  
! @emph{Suppress info messages for non-default bit order.}
  
  This switch suppresses information messages for the effects of specifying
  non-default bit order on record components with component clauses.
--- 12358,12364 ----
  
  @item @code{-gnatw.V}
  
! `Suppress info messages for non-default bit order.'
  
  This switch suppresses information messages for the effects of specifying
  non-default bit order on record components with component clauses.
*************** non-default bit order on record componen
*** 12321,12327 ****
  
  @item @code{-gnatww}
  
! @emph{Activate warnings on wrong low bound assumption.}
  
  This switch activates warnings for indexing an unconstrained string parameter
  with a literal or S’Length. This is a case where the code is assuming that the
--- 12373,12379 ----
  
  @item @code{-gnatww}
  
! `Activate warnings on wrong low bound assumption.'
  
  This switch activates warnings for indexing an unconstrained string parameter
  with a literal or S’Length. This is a case where the code is assuming that the
*************** passed). The default is that such warnin
*** 12336,12342 ****
  
  @item @code{-gnatwW}
  
! @emph{Suppress warnings on wrong low bound assumption.}
  
  This switch suppresses warnings for indexing an unconstrained string parameter
  with a literal or S’Length. Note that this warning can also be suppressed
--- 12388,12394 ----
  
  @item @code{-gnatwW}
  
! `Suppress warnings on wrong low bound assumption.'
  
  This switch suppresses warnings for indexing an unconstrained string parameter
  with a literal or S’Length. Note that this warning can also be suppressed
*************** procedure K (S : String) is
*** 12359,12365 ****
  
  @item @code{-gnatw.w}
  
! @emph{Activate warnings on Warnings Off pragmas.}
  
  This switch activates warnings for use of @code{pragma Warnings (Off, entity)}
  where either the pragma is entirely useless (because it suppresses no
--- 12411,12417 ----
  
  @item @code{-gnatw.w}
  
! `Activate warnings on Warnings Off pragmas.'
  
  This switch activates warnings for use of @code{pragma Warnings (Off, entity)}
  where either the pragma is entirely useless (because it suppresses no
*************** The default is that these warnings are n
*** 12378,12384 ****
  
  @item @code{-gnatw.W}
  
! @emph{Suppress warnings on unnecessary Warnings Off pragmas.}
  
  This switch suppresses warnings for use of @code{pragma Warnings (Off, ...)}.
  @end table
--- 12430,12436 ----
  
  @item @code{-gnatw.W}
  
! `Suppress warnings on unnecessary Warnings Off pragmas.'
  
  This switch suppresses warnings for use of @code{pragma Warnings (Off, ...)}.
  @end table
*************** This switch suppresses warnings for use
*** 12392,12398 ****
  
  @item @code{-gnatwx}
  
! @emph{Activate warnings on Export/Import pragmas.}
  
  This switch activates warnings on Export/Import pragmas when
  the compiler detects a possible conflict between the Ada and
--- 12444,12450 ----
  
  @item @code{-gnatwx}
  
! `Activate warnings on Export/Import pragmas.'
  
  This switch activates warnings on Export/Import pragmas when
  the compiler detects a possible conflict between the Ada and
*************** generated.
*** 12410,12416 ****
  
  @item @code{-gnatwX}
  
! @emph{Suppress warnings on Export/Import pragmas.}
  
  This switch suppresses warnings on Export/Import pragmas.
  The sense of this is that you are telling the compiler that
--- 12462,12468 ----
  
  @item @code{-gnatwX}
  
! `Suppress warnings on Export/Import pragmas.'
  
  This switch suppresses warnings on Export/Import pragmas.
  The sense of this is that you are telling the compiler that
*************** should not complain at you.
*** 12425,12431 ****
  
  @item @code{-gnatw.x}
  
! @emph{Activate warnings for No_Exception_Propagation mode.}
  
  This switch activates warnings for exception usage when pragma Restrictions
  (No_Exception_Propagation) is in effect. Warnings are given for implicit or
--- 12477,12483 ----
  
  @item @code{-gnatw.x}
  
! `Activate warnings for No_Exception_Propagation mode.'
  
  This switch activates warnings for exception usage when pragma Restrictions
  (No_Exception_Propagation) is in effect. Warnings are given for implicit or
*************** these warnings are given for units that
*** 12435,12441 ****
  
  @item @code{-gnatw.X}
  
! @emph{Disable warnings for No_Exception_Propagation mode.}
  
  This switch disables warnings for exception usage when pragma Restrictions
  (No_Exception_Propagation) is in effect.
--- 12487,12493 ----
  
  @item @code{-gnatw.X}
  
! `Disable warnings for No_Exception_Propagation mode.'
  
  This switch disables warnings for exception usage when pragma Restrictions
  (No_Exception_Propagation) is in effect.
*************** This switch disables warnings for except
*** 12450,12456 ****
  
  @item @code{-gnatwy}
  
! @emph{Activate warnings for Ada compatibility issues.}
  
  For the most part, newer versions of Ada are upwards compatible
  with older versions. For example, Ada 2005 programs will almost
--- 12502,12508 ----
  
  @item @code{-gnatwy}
  
! `Activate warnings for Ada compatibility issues.'
  
  For the most part, newer versions of Ada are upwards compatible
  with older versions. For example, Ada 2005 programs will almost
*************** was called Ada 0Y, hence the choice of c
*** 12472,12478 ****
  
  @item @code{-gnatwY}
  
! @emph{Disable warnings for Ada compatibility issues.}
  
  This switch suppresses the warnings intended to help in identifying
  incompatibilities between Ada language versions.
--- 12524,12530 ----
  
  @item @code{-gnatwY}
  
! `Disable warnings for Ada compatibility issues.'
  
  This switch suppresses the warnings intended to help in identifying
  incompatibilities between Ada language versions.
*************** incompatibilities between Ada language v
*** 12487,12493 ****
  
  @item @code{-gnatw.y}
  
! @emph{Activate information messages for why package spec needs body.}
  
  There are a number of cases in which a package spec needs a body.
  For example, the use of pragma Elaborate_Body, or the declaration
--- 12539,12545 ----
  
  @item @code{-gnatw.y}
  
! `Activate information messages for why package spec needs body.'
  
  There are a number of cases in which a package spec needs a body.
  For example, the use of pragma Elaborate_Body, or the declaration
*************** body. The default is that such informati
*** 12507,12513 ****
  
  @item @code{-gnatw.Y}
  
! @emph{Disable information messages for why package spec needs body.}
  
  This switch suppresses the output of information messages showing why
  a package specification needs a body.
--- 12559,12565 ----
  
  @item @code{-gnatw.Y}
  
! `Disable information messages for why package spec needs body.'
  
  This switch suppresses the output of information messages showing why
  a package specification needs a body.
*************** a package specification needs a body.
*** 12522,12528 ****
  
  @item @code{-gnatwz}
  
! @emph{Activate warnings on unchecked conversions.}
  
  This switch activates warnings for unchecked conversions
  where the types are known at compile time to have different
--- 12574,12580 ----
  
  @item @code{-gnatwz}
  
! `Activate warnings on unchecked conversions.'
  
  This switch activates warnings for unchecked conversions
  where the types are known at compile time to have different
*************** generated for subprogram pointers with d
*** 12537,12543 ****
  
  @item @code{-gnatwZ}
  
! @emph{Suppress warnings on unchecked conversions.}
  
  This switch suppresses warnings for unchecked conversions
  where the types are known at compile time to have different
--- 12589,12595 ----
  
  @item @code{-gnatwZ}
  
! `Suppress warnings on unchecked conversions.'
  
  This switch suppresses warnings for unchecked conversions
  where the types are known at compile time to have different
*************** sizes or conventions.
*** 12553,12559 ****
  
  @item @code{-gnatw.z}
  
! @emph{Activate warnings for size not a multiple of alignment.}
  
  This switch activates warnings for cases of array and record types
  with specified @code{Size} and @code{Alignment} attributes where the
--- 12605,12611 ----
  
  @item @code{-gnatw.z}
  
! `Activate warnings for size not a multiple of alignment.'
  
  This switch activates warnings for cases of array and record types
  with specified @code{Size} and @code{Alignment} attributes where the
*************** is that such warnings are generated.
*** 12571,12577 ****
  
  @item @code{-gnatw.Z}
  
! @emph{Suppress warnings for size not a multiple of alignment.}
  
  This switch suppresses warnings for cases of array and record types
  with specified @code{Size} and @code{Alignment} attributes where the
--- 12623,12629 ----
  
  @item @code{-gnatw.Z}
  
! `Suppress warnings for size not a multiple of alignment.'
  
  This switch suppresses warnings for cases of array and record types
  with specified @code{Size} and @code{Alignment} attributes where the
*************** used in conjunction with an optimization
*** 12611,12617 ****
  
  @table @asis
  
! @item @code{-Wstack-usage=@emph{len}}
  
  Warn if the stack usage of a subprogram might be larger than @code{len} bytes.
  See @ref{e6,,Static Stack Usage Analysis} for details.
--- 12663,12669 ----
  
  @table @asis
  
! @item @code{-Wstack-usage=`len'}
  
  Warn if the stack usage of a subprogram might be larger than @code{len} bytes.
  See @ref{e6,,Static Stack Usage Analysis} for details.
*************** Which is a shorthand for:
*** 12850,12864 ****
  
  @example
  pragma Assertion_Policy
!   (Assert               => Check,
!    Static_Predicate     => Check,
!    Dynamic_Predicate    => Check,
!    Pre                  => Check,
!    Pre'Class            => Check,
!    Post                 => Check,
!    Post'Class           => Check,
!    Type_Invariant       => Check,
!    Type_Invariant'Class => Check);
  @end example
  
  The pragmas @code{Assert} and @code{Debug} normally have no effect and
--- 12902,12932 ----
  
  @example
  pragma Assertion_Policy
! --  Ada RM assertion pragmas
!   (Assert                    => Check,
!    Static_Predicate          => Check,
!    Dynamic_Predicate         => Check,
!    Pre                       => Check,
!    Pre'Class                 => Check,
!    Post                      => Check,
!    Post'Class                => Check,
!    Type_Invariant            => Check,
!    Type_Invariant'Class      => Check,
!    Default_Initial_Condition => Check,
! --  GNAT specific assertion pragmas
!    Assert_And_Cut            => Check,
!    Assume                    => Check,
!    Contract_Cases            => Check,
!    Debug                     => Check,
!    Ghost                     => Check,
!    Initial_Condition         => Check,
!    Loop_Invariant            => Check,
!    Loop_Variant              => Check,
!    Postcondition             => Check,
!    Precondition              => Check,
!    Predicate                 => Check,
!    Refined_Post              => Check,
!    Subprogram_Variant        => Check);
  @end example
  
  The pragmas @code{Assert} and @code{Debug} normally have no effect and
*************** combination with optimization, since thi
*** 12936,12942 ****
  If performance is a consideration, leading to the need to optimize,
  then the validity checking options should not be used.
  
! The other @code{-gnatV@emph{x}} switches below allow finer-grained
  control; you can enable whichever validity checks you desire. However,
  for most debugging purposes, @code{-gnatVa} is sufficient, and the
  default @code{-gnatVd} (i.e. standard Ada behavior) is usually
--- 13004,13010 ----
  If performance is a consideration, leading to the need to optimize,
  then the validity checking options should not be used.
  
! The other @code{-gnatV`x'} switches below allow finer-grained
  control; you can enable whichever validity checks you desire. However,
  for most debugging purposes, @code{-gnatVa} is sufficient, and the
  default @code{-gnatVd} (i.e. standard Ada behavior) is usually
*************** the compiler can generate more efficient
*** 12949,12955 ****
  of values is better known at compile time. However, an uninitialized
  variable can cause wild jumps and memory corruption in this mode.
  
! The @code{-gnatV@emph{x}} switch allows control over the validity
  checking mode as described below.
  The @code{x} argument is a string of letters that
  indicate validity checks that are performed or not performed in addition
--- 13017,13023 ----
  of values is better known at compile time. However, an uninitialized
  variable can cause wild jumps and memory corruption in this mode.
  
! The @code{-gnatV`x'} switch allows control over the validity
  checking mode as described below.
  The @code{x} argument is a string of letters that
  indicate validity checks that are performed or not performed in addition
*************** to the default checks required by Ada as
*** 12962,12972 ****
  
  @item @code{-gnatVa}
  
! @emph{All validity checks.}
  
  All validity checks are turned on.
  That is, @code{-gnatVa} is
! equivalent to @code{gnatVcdfimoprst}.
  @end table
  
  @geindex -gnatVc (gcc)
--- 13030,13040 ----
  
  @item @code{-gnatVa}
  
! `All validity checks.'
  
  All validity checks are turned on.
  That is, @code{-gnatVa} is
! equivalent to @code{gnatVcdefimoprst}.
  @end table
  
  @geindex -gnatVc (gcc)
*************** equivalent to @code{gnatVcdfimoprst}.
*** 12976,12985 ****
  
  @item @code{-gnatVc}
  
! @emph{Validity checks for copies.}
  
! The right hand side of assignments, and the initializing values of
! object declarations are validity checked.
  @end table
  
  @geindex -gnatVd (gcc)
--- 13044,13053 ----
  
  @item @code{-gnatVc}
  
! `Validity checks for copies.'
  
! The right-hand side of assignments, and the (explicit) initializing values
! of object declarations are validity checked.
  @end table
  
  @geindex -gnatVd (gcc)
*************** object declarations are validity checked
*** 12989,13002 ****
  
  @item @code{-gnatVd}
  
! @emph{Default (RM) validity checks.}
  
! Some validity checks are done by default following normal Ada semantics
! (RM 13.9.1 (9-11)).
! A check is done in case statements that the expression is within the range
! of the subtype. If it is not, Constraint_Error is raised.
! For assignments to array components, a check is done that the expression used
! as index is within the range. If it is not, Constraint_Error is raised.
  Both these validity checks may be turned off using switch @code{-gnatVD}.
  They are turned on by default. If @code{-gnatVD} is specified, a subsequent
  switch @code{-gnatVd} will leave the checks turned on.
--- 13057,13072 ----
  
  @item @code{-gnatVd}
  
! `Default (RM) validity checks.'
  
! Some validity checks are required by Ada (see RM 13.9.1 (9-11)); these
! (and only these) validity checks are enabled by default.
! For case statements (and case expressions) that lack a “when others =>”
! choice, a check is made that the value of the selector expression
! belongs to its nominal subtype. If it does not, Constraint_Error is raised.
! For assignments to array components (and for indexed components in some
! other contexts), a check is made that each index expression belongs to the
! corresponding index subtype. If it does not, Constraint_Error is raised.
  Both these validity checks may be turned off using switch @code{-gnatVD}.
  They are turned on by default. If @code{-gnatVD} is specified, a subsequent
  switch @code{-gnatVd} will leave the checks turned on.
*************** overwriting may occur.
*** 13013,13028 ****
  
  @item @code{-gnatVe}
  
! @emph{Validity checks for elementary components.}
  
! In the absence of this switch, assignments to record or array components are
! not validity checked, even if validity checks for assignments generally
! (@code{-gnatVc}) are turned on. In Ada, assignment of composite values do not
! require valid data, but assignment of individual components does. So for
! example, there is a difference between copying the elements of an array with a
! slice assignment, compared to assigning element by element in a loop. This
! switch allows you to turn off validity checking for components, even when they
! are assigned component by component.
  @end table
  
  @geindex -gnatVf (gcc)
--- 13083,13095 ----
  
  @item @code{-gnatVe}
  
! `Validity checks for scalar components.'
  
! In the absence of this switch, assignments to scalar components of
! enclosing record or array objects are not validity checked, even if
! validity checks for assignments generally (@code{-gnatVc}) are turned on.
! Specifying this switch enables such checks.
! This switch has no effect if the @code{-gnatVc} switch is not specified.
  @end table
  
  @geindex -gnatVf (gcc)
*************** are assigned component by component.
*** 13032,13044 ****
  
  @item @code{-gnatVf}
  
! @emph{Validity checks for floating-point values.}
  
! In the absence of this switch, validity checking occurs only for discrete
! values. If @code{-gnatVf} is specified, then validity checking also applies
  for floating-point values, and NaNs and infinities are considered invalid,
! as well as out of range values for constrained types. Note that this means
! that standard IEEE infinity mode is not allowed. The exact contexts
  in which floating-point values are checked depends on the setting of other
  options. For example, @code{-gnatVif} or @code{-gnatVfi}
  (the order does not matter) specifies that floating-point parameters of mode
--- 13099,13118 ----
  
  @item @code{-gnatVf}
  
! `Validity checks for floating-point values.'
  
! Specifying this switch enables validity checking for floating-point
! values in the same contexts where validity checking is enabled for
! other scalar values.
! In the absence of this switch, validity checking is not performed for
! floating-point values. This takes precedence over other statements about
! performing validity checking for scalar objects in various scenarios.
! One way to look at it is that if this switch is not set, then whenever
! any of the other rules in this section use the word “scalar” they
! really mean “scalar and not floating-point”.
! If @code{-gnatVf} is specified, then validity checking also applies
  for floating-point values, and NaNs and infinities are considered invalid,
! as well as out-of-range values for constrained types. The exact contexts
  in which floating-point values are checked depends on the setting of other
  options. For example, @code{-gnatVif} or @code{-gnatVfi}
  (the order does not matter) specifies that floating-point parameters of mode
*************** options. For example, @code{-gnatVif} or
*** 13052,13058 ****
  
  @item @code{-gnatVi}
  
! @emph{Validity checks for `@w{`}in`@w{`} mode parameters.}
  
  Arguments for parameters of mode @code{in} are validity checked in function
  and procedure calls at the point of call.
--- 13126,13132 ----
  
  @item @code{-gnatVi}
  
! `Validity checks for `@w{`}in`@w{`} mode parameters.'
  
  Arguments for parameters of mode @code{in} are validity checked in function
  and procedure calls at the point of call.
*************** and procedure calls at the point of call
*** 13065,13071 ****
  
  @item @code{-gnatVm}
  
! @emph{Validity checks for `@w{`}in out`@w{`} mode parameters.}
  
  Arguments for parameters of mode @code{in out} are validity checked in
  procedure calls at the point of call. The @code{'m'} here stands for
--- 13139,13145 ----
  
  @item @code{-gnatVm}
  
! `Validity checks for `@w{`}in out`@w{`} mode parameters.'
  
  Arguments for parameters of mode @code{in out} are validity checked in
  procedure calls at the point of call. The @code{'m'} here stands for
*************** will be subject to validity checking.
*** 13083,13089 ****
  
  @item @code{-gnatVn}
  
! @emph{No validity checks.}
  
  This switch turns off all validity checking, including the default checking
  for case statements and left hand side subscripts. Note that the use of
--- 13157,13163 ----
  
  @item @code{-gnatVn}
  
! `No validity checks.'
  
  This switch turns off all validity checking, including the default checking
  for case statements and left hand side subscripts. Note that the use of
*************** is used, it cancels any other @code{-gna
*** 13099,13107 ****
  
  @item @code{-gnatVo}
  
! @emph{Validity checks for operator and attribute operands.}
  
! Arguments for predefined operators and attributes are validity checked.
  This includes all operators in package @code{Standard},
  the shift operators defined as intrinsic in package @code{Interfaces}
  and operands for attributes such as @code{Pos}. Checks are also made
--- 13173,13182 ----
  
  @item @code{-gnatVo}
  
! `Validity checks for operator and attribute operands.'
  
! Scalar arguments for predefined operators and for attributes are
! validity checked.
  This includes all operators in package @code{Standard},
  the shift operators defined as intrinsic in package @code{Interfaces}
  and operands for attributes such as @code{Pos}. Checks are also made
*************** also made on explicit ranges using @code
*** 13117,13132 ****
  
  @item @code{-gnatVp}
  
! @emph{Validity checks for parameters.}
  
! This controls the treatment of parameters within a subprogram (as opposed
! to @code{-gnatVi} and @code{-gnatVm} which control validity testing
! of parameters on a call. If either of these call options is used, then
! normally an assumption is made within a subprogram that the input arguments
! have been validity checking at the point of call, and do not need checking
! again within a subprogram). If @code{-gnatVp} is set, then this assumption
! is not made, and parameters are not assumed to be valid, so their validity
! will be checked (or rechecked) within the subprogram.
  @end table
  
  @geindex -gnatVr (gcc)
--- 13192,13208 ----
  
  @item @code{-gnatVp}
  
! `Validity checks for parameters.'
  
! This controls the treatment of formal parameters within a subprogram (as
! opposed to @code{-gnatVi} and @code{-gnatVm}, which control validity
! testing of actual parameters of a call). If either of these call options is
! specified, then normally an assumption is made within a subprogram that
! the validity of any incoming formal parameters of the corresponding mode(s)
! has already been checked at the point of call and does not need rechecking.
! If @code{-gnatVp} is set, then this assumption is not made and so their
! validity may be checked (or rechecked) within the subprogram. If neither of
! the two call-related options is specified, then this switch has no effect.
  @end table
  
  @geindex -gnatVr (gcc)
*************** will be checked (or rechecked) within th
*** 13136,13144 ****
  
  @item @code{-gnatVr}
  
! @emph{Validity checks for function returns.}
  
! The expression in @code{return} statements in functions is validity
  checked.
  @end table
  
--- 13212,13220 ----
  
  @item @code{-gnatVr}
  
! `Validity checks for function returns.'
  
! The expression in simple @code{return} statements in functions is validity
  checked.
  @end table
  
*************** checked.
*** 13149,13159 ****
  
  @item @code{-gnatVs}
  
! @emph{Validity checks for subscripts.}
  
! All subscripts expressions are checked for validity, whether they appear
! on the right side or left side (in default mode only left side subscripts
! are validity checked).
  @end table
  
  @geindex -gnatVt (gcc)
--- 13225,13236 ----
  
  @item @code{-gnatVs}
  
! `Validity checks for subscripts.'
  
! All subscript expressions are checked for validity, whatever context
! they occur in (in default mode some subscripts are not validity checked;
! for example, validity checking may be omitted in some cases involving
! a read of a component of an array).
  @end table
  
  @geindex -gnatVt (gcc)
*************** are validity checked).
*** 13163,13169 ****
  
  @item @code{-gnatVt}
  
! @emph{Validity checks for tests.}
  
  Expressions used as conditions in @code{if}, @code{while} or @code{exit}
  statements are checked, as well as guard expressions in entry calls.
--- 13240,13246 ----
  
  @item @code{-gnatVt}
  
! `Validity checks for tests.'
  
  Expressions used as conditions in @code{if}, @code{while} or @code{exit}
  statements are checked, as well as guard expressions in entry calls.
*************** checks to be performed. The following ch
*** 13228,13234 ****
  
  @item @code{-gnaty0}
  
! @emph{Specify indentation level.}
  
  If a digit from 1-9 appears
  in the string after @code{-gnaty}
--- 13305,13311 ----
  
  @item @code{-gnaty0}
  
! `Specify indentation level.'
  
  If a digit from 1-9 appears
  in the string after @code{-gnaty}
*************** non-blank line.
*** 13267,13273 ****
  
  @item @code{-gnatya}
  
! @emph{Check attribute casing.}
  
  Attribute names, including the case of keywords such as @code{digits}
  used as attributes names, must be written in mixed case, that is, the
--- 13344,13350 ----
  
  @item @code{-gnatya}
  
! `Check attribute casing.'
  
  Attribute names, including the case of keywords such as @code{digits}
  used as attributes names, must be written in mixed case, that is, the
*************** All other letters must be lowercase.
*** 13282,13288 ****
  
  @item @code{-gnatyA}
  
! @emph{Use of array index numbers in array attributes.}
  
  When using the array attributes First, Last, Range,
  or Length, the index number must be omitted for one-dimensional arrays
--- 13359,13365 ----
  
  @item @code{-gnatyA}
  
! `Use of array index numbers in array attributes.'
  
  When using the array attributes First, Last, Range,
  or Length, the index number must be omitted for one-dimensional arrays
*************** and is required for multi-dimensional ar
*** 13296,13302 ****
  
  @item @code{-gnatyb}
  
! @emph{Blanks not allowed at statement end.}
  
  Trailing blanks are not allowed at the end of statements. The purpose of this
  rule, together with h (no horizontal tabs), is to enforce a canonical format
--- 13373,13379 ----
  
  @item @code{-gnatyb}
  
! `Blanks not allowed at statement end.'
  
  Trailing blanks are not allowed at the end of statements. The purpose of this
  rule, together with h (no horizontal tabs), is to enforce a canonical format
*************** for the use of blanks to separate source
*** 13310,13316 ****
  
  @item @code{-gnatyB}
  
! @emph{Check Boolean operators.}
  
  The use of AND/OR operators is not permitted except in the cases of modular
  operands, array operands, and simple stand-alone boolean variables or
--- 13387,13393 ----
  
  @item @code{-gnatyB}
  
! `Check Boolean operators.'
  
  The use of AND/OR operators is not permitted except in the cases of modular
  operands, array operands, and simple stand-alone boolean variables or
*************** required.
*** 13325,13331 ****
  
  @item @code{-gnatyc}
  
! @emph{Check comments, double space.}
  
  Comments must meet the following set of rules:
  
--- 13402,13408 ----
  
  @item @code{-gnatyc}
  
! `Check comments, double space.'
  
  Comments must meet the following set of rules:
  
*************** example:
*** 13387,13393 ****
  
  @item @code{-gnatyC}
  
! @emph{Check comments, single space.}
  
  This is identical to @code{c} except that only one space
  is required following the @code{--} of a comment instead of two.
--- 13464,13470 ----
  
  @item @code{-gnatyC}
  
! `Check comments, single space.'
  
  This is identical to @code{c} except that only one space
  is required following the @code{--} of a comment instead of two.
*************** is required following the @code{--} of a
*** 13400,13406 ****
  
  @item @code{-gnatyd}
  
! @emph{Check no DOS line terminators present.}
  
  All lines must be terminated by a single ASCII.LF
  character (in particular the DOS line terminator sequence CR/LF is not
--- 13477,13483 ----
  
  @item @code{-gnatyd}
  
! `Check no DOS line terminators present.'
  
  All lines must be terminated by a single ASCII.LF
  character (in particular the DOS line terminator sequence CR/LF is not
*************** allowed).
*** 13414,13420 ****
  
  @item @code{-gnatyD}
  
! @emph{Check declared identifiers in mixed case.}
  
  Declared identifiers must be in mixed case, as in
  This_Is_An_Identifier. Use -gnatyr in addition to ensure
--- 13491,13497 ----
  
  @item @code{-gnatyD}
  
! `Check declared identifiers in mixed case.'
  
  Declared identifiers must be in mixed case, as in
  This_Is_An_Identifier. Use -gnatyr in addition to ensure
*************** that references match declarations.
*** 13428,13434 ****
  
  @item @code{-gnatye}
  
! @emph{Check end/exit labels.}
  
  Optional labels on @code{end} statements ending subprograms and on
  @code{exit} statements exiting named loops, are required to be present.
--- 13505,13511 ----
  
  @item @code{-gnatye}
  
! `Check end/exit labels.'
  
  Optional labels on @code{end} statements ending subprograms and on
  @code{exit} statements exiting named loops, are required to be present.
*************** Optional labels on @code{end} statements
*** 13441,13447 ****
  
  @item @code{-gnatyf}
  
! @emph{No form feeds or vertical tabs.}
  
  Neither form feeds nor vertical tab characters are permitted
  in the source text.
--- 13518,13524 ----
  
  @item @code{-gnatyf}
  
! `No form feeds or vertical tabs.'
  
  Neither form feeds nor vertical tab characters are permitted
  in the source text.
*************** in the source text.
*** 13454,13460 ****
  
  @item @code{-gnatyg}
  
! @emph{GNAT style mode.}
  
  The set of style check switches is set to match that used by the GNAT sources.
  This may be useful when developing code that is eventually intended to be
--- 13531,13537 ----
  
  @item @code{-gnatyg}
  
! `GNAT style mode.'
  
  The set of style check switches is set to match that used by the GNAT sources.
  This may be useful when developing code that is eventually intended to be
*************** advance notice.
*** 13470,13476 ****
  
  @item @code{-gnatyh}
  
! @emph{No horizontal tabs.}
  
  Horizontal tab characters are not permitted in the source text.
  Together with the b (no blanks at end of line) check, this
--- 13547,13553 ----
  
  @item @code{-gnatyh}
  
! `No horizontal tabs.'
  
  Horizontal tab characters are not permitted in the source text.
  Together with the b (no blanks at end of line) check, this
*************** source tokens.
*** 13485,13491 ****
  
  @item @code{-gnatyi}
  
! @emph{Check if-then layout.}
  
  The keyword @code{then} must appear either on the same
  line as corresponding @code{if}, or on a line on its own, lined
--- 13562,13568 ----
  
  @item @code{-gnatyi}
  
! `Check if-then layout.'
  
  The keyword @code{then} must appear either on the same
  line as corresponding @code{if}, or on a line on its own, lined
*************** up under the @code{if}.
*** 13499,13505 ****
  
  @item @code{-gnatyI}
  
! @emph{check mode IN keywords.}
  
  Mode @code{in} (the default mode) is not
  allowed to be given explicitly. @code{in out} is fine,
--- 13576,13582 ----
  
  @item @code{-gnatyI}
  
! `check mode IN keywords.'
  
  Mode @code{in} (the default mode) is not
  allowed to be given explicitly. @code{in out} is fine,
*************** but not @code{in} on its own.
*** 13513,13519 ****
  
  @item @code{-gnatyk}
  
! @emph{Check keyword casing.}
  
  All keywords must be in lower case (with the exception of keywords
  such as @code{digits} used as attribute names to which this check
--- 13590,13596 ----
  
  @item @code{-gnatyk}
  
! `Check keyword casing.'
  
  All keywords must be in lower case (with the exception of keywords
  such as @code{digits} used as attribute names to which this check
*************** this rule even if multiple casing issues
*** 13528,13534 ****
  
  @item @code{-gnatyl}
  
! @emph{Check layout.}
  
  Layout of statement and declaration constructs must follow the
  recommendations in the Ada Reference Manual, as indicated by the
--- 13605,13611 ----
  
  @item @code{-gnatyl}
  
! `Check layout.'
  
  Layout of statement and declaration constructs must follow the
  recommendations in the Ada Reference Manual, as indicated by the
*************** Clear :
*** 13604,13614 ****
  
  @item @code{-gnatyL}
  
! @emph{Set maximum nesting level.}
  
  The maximum level of nesting of constructs (including subprograms, loops,
  blocks, packages, and conditionals) may not exceed the given value
! @emph{nnn}. A value of zero disconnects this style check.
  @end table
  
  @geindex -gnatym (gcc)
--- 13681,13691 ----
  
  @item @code{-gnatyL}
  
! `Set maximum nesting level.'
  
  The maximum level of nesting of constructs (including subprograms, loops,
  blocks, packages, and conditionals) may not exceed the given value
! `nnn'. A value of zero disconnects this style check.
  @end table
  
  @geindex -gnatym (gcc)
*************** blocks, packages, and conditionals) may
*** 13618,13624 ****
  
  @item @code{-gnatym}
  
! @emph{Check maximum line length.}
  
  The length of source lines must not exceed 79 characters, including
  any trailing blanks. The value of 79 allows convenient display on an
--- 13695,13701 ----
  
  @item @code{-gnatym}
  
! `Check maximum line length.'
  
  The length of source lines must not exceed 79 characters, including
  any trailing blanks. The value of 79 allows convenient display on an
*************** a single character (however many bytes a
*** 13636,13645 ****
  
  @item @code{-gnatyM}
  
! @emph{Set maximum line length.}
  
  The length of lines must not exceed the
! given value @emph{nnn}. The maximum value that can be specified is 32767.
  If neither style option for setting the line length is used, then the
  default is 255. This also controls the maximum length of lexical elements,
  where the only restriction is that they must fit on a single line.
--- 13713,13722 ----
  
  @item @code{-gnatyM}
  
! `Set maximum line length.'
  
  The length of lines must not exceed the
! given value `nnn'. The maximum value that can be specified is 32767.
  If neither style option for setting the line length is used, then the
  default is 255. This also controls the maximum length of lexical elements,
  where the only restriction is that they must fit on a single line.
*************** where the only restriction is that they
*** 13652,13658 ****
  
  @item @code{-gnatyn}
  
! @emph{Check casing of entities in Standard.}
  
  Any identifier from Standard must be cased
  to match the presentation in the Ada Reference Manual (for example,
--- 13729,13735 ----
  
  @item @code{-gnatyn}
  
! `Check casing of entities in Standard.'
  
  Any identifier from Standard must be cased
  to match the presentation in the Ada Reference Manual (for example,
*************** to match the presentation in the Ada Ref
*** 13666,13672 ****
  
  @item @code{-gnatyN}
  
! @emph{Turn off all style checks.}
  
  All style check options are turned off.
  @end table
--- 13743,13749 ----
  
  @item @code{-gnatyN}
  
! `Turn off all style checks.'
  
  All style check options are turned off.
  @end table
*************** All style check options are turned off.
*** 13678,13684 ****
  
  @item @code{-gnatyo}
  
! @emph{Check order of subprogram bodies.}
  
  All subprogram bodies in a given scope
  (e.g., a package body) must be in alphabetical order. The ordering
--- 13755,13761 ----
  
  @item @code{-gnatyo}
  
! `Check order of subprogram bodies.'
  
  All subprogram bodies in a given scope
  (e.g., a package body) must be in alphabetical order. The ordering
*************** before Junk10).
*** 13695,13701 ****
  
  @item @code{-gnatyO}
  
! @emph{Check that overriding subprograms are explicitly marked as such.}
  
  This applies to all subprograms of a derived type that override a primitive
  operation of the type, for both tagged and untagged types. In particular,
--- 13772,13778 ----
  
  @item @code{-gnatyO}
  
! `Check that overriding subprograms are explicitly marked as such.'
  
  This applies to all subprograms of a derived type that override a primitive
  operation of the type, for both tagged and untagged types. In particular,
*************** as an equality operator).
*** 13712,13718 ****
  
  @item @code{-gnatyp}
  
! @emph{Check pragma casing.}
  
  Pragma names must be written in mixed case, that is, the
  initial letter and any letter following an underscore must be uppercase.
--- 13789,13795 ----
  
  @item @code{-gnatyp}
  
! `Check pragma casing.'
  
  Pragma names must be written in mixed case, that is, the
  initial letter and any letter following an underscore must be uppercase.
*************** allowed as an alternative for Spark_Mode
*** 13727,13733 ****
  
  @item @code{-gnatyr}
  
! @emph{Check references.}
  
  All identifier references must be cased in the same way as the
  corresponding declaration. No specific casing style is imposed on
--- 13804,13810 ----
  
  @item @code{-gnatyr}
  
! `Check references.'
  
  All identifier references must be cased in the same way as the
  corresponding declaration. No specific casing style is imposed on
*************** with declarations.
*** 13742,13748 ****
  
  @item @code{-gnatys}
  
! @emph{Check separate specs.}
  
  Separate declarations (‘specs’) are required for subprograms (a
  body is not allowed to serve as its own declaration). The only
--- 13819,13825 ----
  
  @item @code{-gnatys}
  
! `Check separate specs.'
  
  Separate declarations (‘specs’) are required for subprograms (a
  body is not allowed to serve as its own declaration). The only
*************** the most frequent form of main program p
*** 13758,13764 ****
  
  @item @code{-gnatyS}
  
! @emph{Check no statements after then/else.}
  
  No statements are allowed
  on the same line as a @code{then} or @code{else} keyword following the
--- 13835,13841 ----
  
  @item @code{-gnatyS}
  
! `Check no statements after then/else.'
  
  No statements are allowed
  on the same line as a @code{then} or @code{else} keyword following the
*************** affected, and a special exception allows
*** 13773,13779 ****
  
  @item @code{-gnatyt}
  
! @emph{Check token spacing.}
  
  The following token spacing rules are enforced:
  
--- 13850,13856 ----
  
  @item @code{-gnatyt}
  
! `Check token spacing.'
  
  The following token spacing rules are enforced:
  
*************** a @code{not} token and a following @code
*** 13838,13844 ****
  
  @item @code{-gnatyu}
  
! @emph{Check unnecessary blank lines.}
  
  Unnecessary blank lines are not allowed. A blank line is considered
  unnecessary if it appears at the end of the file, or if more than
--- 13915,13921 ----
  
  @item @code{-gnatyu}
  
! `Check unnecessary blank lines.'
  
  Unnecessary blank lines are not allowed. A blank line is considered
  unnecessary if it appears at the end of the file, or if more than
*************** one blank line occurs in sequence.
*** 13852,13858 ****
  
  @item @code{-gnatyx}
  
! @emph{Check extra parentheses.}
  
  Unnecessary extra level of parentheses (C-style) are not allowed
  around conditions in @code{if} statements, @code{while} statements and
--- 13929,13935 ----
  
  @item @code{-gnatyx}
  
! `Check extra parentheses.'
  
  Unnecessary extra level of parentheses (C-style) are not allowed
  around conditions in @code{if} statements, @code{while} statements and
*************** around conditions in @code{if} statement
*** 13866,13872 ****
  
  @item @code{-gnatyy}
  
! @emph{Set all standard style check options.}
  
  This is equivalent to @code{gnaty3aAbcefhiklmnprst}, that is all checking
  options enabled with the exception of @code{-gnatyB}, @code{-gnatyd},
--- 13943,13949 ----
  
  @item @code{-gnatyy}
  
! `Set all standard style check options.'
  
  This is equivalent to @code{gnaty3aAbcefhiklmnprst}, that is all checking
  options enabled with the exception of @code{-gnatyB}, @code{-gnatyd},
*************** options enabled with the exception of @c
*** 13881,13895 ****
  
  @item @code{-gnaty-}
  
! @emph{Remove style check options.}
  
  This causes any subsequent options in the string to act as canceling the
  corresponding style check option. To cancel maximum nesting level control,
  use the @code{L} parameter without any integer value after that, because any
! digit following @emph{-} in the parameter string of the @code{-gnaty}
  option will be treated as canceling the indentation check. The same is true
  for the @code{M} parameter. @code{y} and @code{N} parameters are not
! allowed after @emph{-}.
  @end table
  
  @geindex -gnaty+ (gcc)
--- 13958,13972 ----
  
  @item @code{-gnaty-}
  
! `Remove style check options.'
  
  This causes any subsequent options in the string to act as canceling the
  corresponding style check option. To cancel maximum nesting level control,
  use the @code{L} parameter without any integer value after that, because any
! digit following `-' in the parameter string of the @code{-gnaty}
  option will be treated as canceling the indentation check. The same is true
  for the @code{M} parameter. @code{y} and @code{N} parameters are not
! allowed after `-'.
  @end table
  
  @geindex -gnaty+ (gcc)
*************** allowed after @emph{-}.
*** 13899,13905 ****
  
  @item @code{-gnaty+}
  
! @emph{Enable style check options.}
  
  This causes any subsequent options in the string to enable the corresponding
  style check option. That is, it cancels the effect of a previous -,
--- 13976,13982 ----
  
  @item @code{-gnaty+}
  
! `Enable style check options.'
  
  This causes any subsequent options in the string to enable the corresponding
  style check option. That is, it cancels the effect of a previous -,
*************** if any.
*** 13908,13914 ****
  
  @c end of switch description (leave this comment to ease automatic parsing for
  
! @c GNAT Studio
  
  In the above rules, appearing in column one is always permitted, that is,
  counts as meeting either a requirement for a required preceding space,
--- 13985,13991 ----
  
  @c end of switch description (leave this comment to ease automatic parsing for
  
! @c GNAT Studio)
  
  In the above rules, appearing in column one is always permitted, that is,
  counts as meeting either a requirement for a required preceding space,
*************** controls the mode, using the codes
*** 14056,14075 ****
  
  @table @asis
  
! @item @emph{1 = STRICT}
  
  In STRICT mode, intermediate operations are always done using the
  base type, and overflow checking ensures that the result is within
  the base type range.
  
! @item @emph{2 = MINIMIZED}
  
  In MINIMIZED mode, overflows in intermediate operations are avoided
  where possible by using a larger integer type for the computation
  (typically @code{Long_Long_Integer}). Overflow checking ensures that
  the result fits in this larger integer type.
  
! @item @emph{3 = ELIMINATED}
  
  In ELIMINATED mode, overflows in intermediate operations are avoided
  by using multi-precision arithmetic. In this case, overflow checking
--- 14133,14152 ----
  
  @table @asis
  
! @item `1 = STRICT'
  
  In STRICT mode, intermediate operations are always done using the
  base type, and overflow checking ensures that the result is within
  the base type range.
  
! @item `2 = MINIMIZED'
  
  In MINIMIZED mode, overflows in intermediate operations are avoided
  where possible by using a larger integer type for the computation
  (typically @code{Long_Long_Integer}). Overflow checking ensures that
  the result fits in this larger integer type.
  
! @item `3 = ELIMINATED'
  
  In ELIMINATED mode, overflows in intermediate operations are avoided
  by using multi-precision arithmetic. In this case, overflow checking
*************** $
*** 14196,14202 ****
  Otherwise, the output is simply the error messages, if any. No object file or
  ALI file is generated by a syntax-only compilation. Also, no units other
  than the one specified are accessed. For example, if a unit @code{X}
! @emph{with}s a unit @code{Y}, compiling unit @code{X} in syntax
  check only mode does not access the source file containing unit
  @code{Y}.
  
--- 14273,14279 ----
  Otherwise, the output is simply the error messages, if any. No object file or
  ALI file is generated by a syntax-only compilation. Also, no units other
  than the one specified are accessed. For example, if a unit @code{X}
! `with's a unit @code{Y}, compiling unit @code{X} in syntax
  check only mode does not access the source file containing unit
  @code{Y}.
  
*************** with optional bodies), it is not necessa
*** 14305,14311 ****
  exceptions, Ada 95 and Ada 2005 are upwardly compatible with Ada 83. Thus
  a correct Ada 83 program is usually also a correct program
  in these later versions of the language standard. For further information
! please refer to the @emph{Compatibility and Porting Guide} chapter in the
  @cite{GNAT Reference Manual}.
  @end table
  
--- 14382,14388 ----
  exceptions, Ada 95 and Ada 2005 are upwardly compatible with Ada 83. Thus
  a correct Ada 83 program is usually also a correct program
  in these later versions of the language standard. For further information
! please refer to the `Compatibility and Porting Guide' chapter in the
  @cite{GNAT Reference Manual}.
  @end table
  
*************** This switch directs the compiler to impl
*** 14387,14393 ****
  language.
  @end table
  
! @geindex -gnatX (gcc)
  
  @geindex Ada language extensions
  
--- 14464,14470 ----
  language.
  @end table
  
! @geindex -gnatX0 (gcc)
  
  @geindex Ada language extensions
  
*************** language.
*** 14396,14402 ****
  
  @table @asis
  
! @item @code{-gnatX} (Enable GNAT Extensions)
  
  This switch directs the compiler to implement the latest version of the
  language (currently Ada 2022) and also to enable certain GNAT implementation
--- 14473,14479 ----
  
  @table @asis
  
! @item @code{-gnatX0} (Enable GNAT Extensions)
  
  This switch directs the compiler to implement the latest version of the
  language (currently Ada 2022) and also to enable certain GNAT implementation
*************** extensions that are not part of any Ada
*** 14404,14409 ****
--- 14481,14504 ----
  extensions, see the GNAT reference manual, @code{Pragma Extensions_Allowed}.
  @end table
  
+ @geindex -gnatX (gcc)
+ 
+ @geindex Ada language extensions
+ 
+ @geindex GNAT extensions
+ 
+ 
+ @table @asis
+ 
+ @item @code{-gnatX} (Enable core GNAT Extensions)
+ 
+ This switch is similar to -gnatX0 except that only some, not all, of the
+ GNAT-defined language extensions are enabled. For a list of the
+ extensions enabled by this switch, see the GNAT reference manual
+ @code{Pragma Extensions_Allowed} and the description of that pragma’s
+ “On” (as opposed to “All”) argument.
+ @end table
+ 
  @node Character Set Control,File Naming Control,Compiling Different Versions of Ada,Compiler Switches
  @anchor{gnat_ugn/building_executable_programs_with_gnat character-set-control}@anchor{31}@anchor{gnat_ugn/building_executable_programs_with_gnat id23}@anchor{fb}
  @subsection Character Set Control
*************** extensions, see the GNAT reference manua
*** 14414,14420 ****
  
  @table @asis
  
! @item @code{-gnati@emph{c}}
  
  Normally GNAT recognizes the Latin-1 character set in source program
  identifiers, as described in the Ada Reference Manual.
--- 14509,14515 ----
  
  @table @asis
  
! @item @code{-gnati`c'}
  
  Normally GNAT recognizes the Latin-1 character set in source program
  identifiers, as described in the Ada Reference Manual.
*************** single character  indicating the charact
*** 14426,14432 ****
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @emph{1}
  
  @tab
  
--- 14521,14527 ----
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! `1'
  
  @tab
  
*************** ISO 8859-1 (Latin-1) identifiers
*** 14434,14440 ****
  
  @item
  
! @emph{2}
  
  @tab
  
--- 14529,14535 ----
  
  @item
  
! `2'
  
  @tab
  
*************** ISO 8859-2 (Latin-2) letters allowed in
*** 14442,14448 ****
  
  @item
  
! @emph{3}
  
  @tab
  
--- 14537,14543 ----
  
  @item
  
! `3'
  
  @tab
  
*************** ISO 8859-3 (Latin-3) letters allowed in
*** 14450,14456 ****
  
  @item
  
! @emph{4}
  
  @tab
  
--- 14545,14551 ----
  
  @item
  
! `4'
  
  @tab
  
*************** ISO 8859-4 (Latin-4) letters allowed in
*** 14458,14464 ****
  
  @item
  
! @emph{5}
  
  @tab
  
--- 14553,14559 ----
  
  @item
  
! `5'
  
  @tab
  
*************** ISO 8859-5 (Cyrillic) letters allowed in
*** 14466,14472 ****
  
  @item
  
! @emph{9}
  
  @tab
  
--- 14561,14567 ----
  
  @item
  
! `9'
  
  @tab
  
*************** ISO 8859-15 (Latin-9) letters allowed in
*** 14474,14480 ****
  
  @item
  
! @emph{p}
  
  @tab
  
--- 14569,14575 ----
  
  @item
  
! `p'
  
  @tab
  
*************** IBM PC letters (code page 437) allowed i
*** 14482,14488 ****
  
  @item
  
! @emph{8}
  
  @tab
  
--- 14577,14583 ----
  
  @item
  
! `8'
  
  @tab
  
*************** IBM PC letters (code page 850) allowed i
*** 14490,14496 ****
  
  @item
  
! @emph{f}
  
  @tab
  
--- 14585,14591 ----
  
  @item
  
! `f'
  
  @tab
  
*************** Full upper-half codes allowed in identif
*** 14498,14504 ****
  
  @item
  
! @emph{n}
  
  @tab
  
--- 14593,14599 ----
  
  @item
  
! `n'
  
  @tab
  
*************** No upper-half codes allowed in identifie
*** 14506,14512 ****
  
  @item
  
! @emph{w}
  
  @tab
  
--- 14601,14607 ----
  
  @item
  
! `w'
  
  @tab
  
*************** implementation of these character sets.
*** 14525,14531 ****
  
  @table @asis
  
! @item @code{-gnatW@emph{e}}
  
  Specify the method of encoding for wide characters.
  @code{e} is one of the following:
--- 14620,14626 ----
  
  @table @asis
  
! @item @code{-gnatW`e'}
  
  Specify the method of encoding for wide characters.
  @code{e} is one of the following:
*************** Specify the method of encoding for wide
*** 14534,14540 ****
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @emph{h}
  
  @tab
  
--- 14629,14635 ----
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! `h'
  
  @tab
  
*************** Hex encoding (brackets coding also recog
*** 14542,14548 ****
  
  @item
  
! @emph{u}
  
  @tab
  
--- 14637,14643 ----
  
  @item
  
! `u'
  
  @tab
  
*************** Upper half encoding (brackets encoding a
*** 14550,14556 ****
  
  @item
  
! @emph{s}
  
  @tab
  
--- 14645,14651 ----
  
  @item
  
! `s'
  
  @tab
  
*************** Shift/JIS encoding (brackets encoding al
*** 14558,14564 ****
  
  @item
  
! @emph{e}
  
  @tab
  
--- 14653,14659 ----
  
  @item
  
! `e'
  
  @tab
  
*************** EUC encoding (brackets encoding also rec
*** 14566,14572 ****
  
  @item
  
! @emph{8}
  
  @tab
  
--- 14661,14667 ----
  
  @item
  
! `8'
  
  @tab
  
*************** UTF-8 encoding (brackets encoding also r
*** 14574,14580 ****
  
  @item
  
! @emph{b}
  
  @tab
  
--- 14669,14675 ----
  
  @item
  
! `b'
  
  @tab
  
*************** This is a common mode for many programs
*** 14641,14647 ****
  
  @table @asis
  
! @item @code{-gnatk@emph{n}}
  
  Activates file name ‘krunching’. @code{n}, a decimal integer in the range
  1-999, indicates the maximum allowable length of a file name (not
--- 14736,14742 ----
  
  @table @asis
  
! @item @code{-gnatk`n'}
  
  Activates file name ‘krunching’. @code{n}, a decimal integer in the range
  1-999, indicates the maximum allowable length of a file name (not
*************** react to a compilation failure. Those ex
*** 14740,14746 ****
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @emph{5}
  
  @tab
  
--- 14835,14841 ----
  @multitable {xxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! `5'
  
  @tab
  
*************** There was an error in at least one sourc
*** 14748,14754 ****
  
  @item
  
! @emph{3}
  
  @tab
  
--- 14843,14849 ----
  
  @item
  
! `3'
  
  @tab
  
*************** At least one source file did not generat
*** 14756,14762 ****
  
  @item
  
! @emph{2}
  
  @tab
  
--- 14851,14857 ----
  
  @item
  
! `2'
  
  @tab
  
*************** The compiler died unexpectedly (internal
*** 14764,14770 ****
  
  @item
  
! @emph{0}
  
  @tab
  
--- 14859,14865 ----
  
  @item
  
! `0'
  
  @tab
  
*************** An object file has been generated for ev
*** 14789,14795 ****
  
  @table @asis
  
! @item @code{-gnatd@emph{x}}
  
  Activate internal debugging switches. @code{x} is a letter or digit, or
  string of letters or digits, which specifies the type of debugging
--- 14884,14890 ----
  
  @table @asis
  
! @item @code{-gnatd`x'}
  
  Activate internal debugging switches. @code{x} is a letter or digit, or
  string of letters or digits, which specifies the type of debugging
*************** file @code{debug.adb}.
*** 14804,14810 ****
  
  @table @asis
  
! @item @code{-gnatG[=@emph{nn}]}
  
  This switch causes the compiler to generate auxiliary output containing
  a pseudo-source listing of the generated expanded code. Like most Ada
--- 14899,14905 ----
  
  @table @asis
  
! @item @code{-gnatG[=`nn']}
  
  This switch causes the compiler to generate auxiliary output containing
  a pseudo-source listing of the generated expanded code. Like most Ada
*************** in the expanded source (as comment lines
*** 14840,14886 ****
  
  @table @asis
  
! @item @code{new @emph{xxx} [storage_pool = @emph{yyy}]}
  
  Shows the storage pool being used for an allocator.
  
! @item @code{at end @emph{procedure-name};}
  
  Shows the finalization (cleanup) procedure for a scope.
  
! @item @code{(if @emph{expr} then @emph{expr} else @emph{expr})}
  
  Conditional expression equivalent to the @code{x?y:z} construction in C.
  
! @item @code{@emph{target}^(@emph{source})}
  
  A conversion with floating-point truncation instead of rounding.
  
! @item @code{@emph{target}?(@emph{source})}
  
  A conversion that bypasses normal Ada semantic checking. In particular
  enumeration types and fixed-point types are treated simply as integers.
  
! @item @code{@emph{target}?^(@emph{source})}
  
  Combines the above two cases.
  @end table
  
! @code{@emph{x} #/ @emph{y}}
  
! @code{@emph{x} #mod @emph{y}}
  
! @code{@emph{x} # @emph{y}}
  
  
  @table @asis
  
! @item @code{@emph{x} #rem @emph{y}}
  
  A division or multiplication of fixed-point values which are treated as
  integers without any kind of scaling.
  
! @item @code{free @emph{expr} [storage_pool = @emph{xxx}]}
  
  Shows the storage pool associated with a @code{free} statement.
  
--- 14935,14981 ----
  
  @table @asis
  
! @item @code{new @var{xxx} [storage_pool = @var{yyy}]}
  
  Shows the storage pool being used for an allocator.
  
! @item @code{at end @var{procedure-name};}
  
  Shows the finalization (cleanup) procedure for a scope.
  
! @item @code{(if @var{expr} then @var{expr} else @var{expr})}
  
  Conditional expression equivalent to the @code{x?y:z} construction in C.
  
! @item @code{@var{target}^(@var{source})}
  
  A conversion with floating-point truncation instead of rounding.
  
! @item @code{@var{target}?(@var{source})}
  
  A conversion that bypasses normal Ada semantic checking. In particular
  enumeration types and fixed-point types are treated simply as integers.
  
! @item @code{@var{target}?^(@var{source})}
  
  Combines the above two cases.
  @end table
  
! @code{@var{x} #/ @var{y}}
  
! @code{@var{x} #mod @var{y}}
  
! @code{@var{x} # @var{y}}
  
  
  @table @asis
  
! @item @code{@var{x} #rem @var{y}}
  
  A division or multiplication of fixed-point values which are treated as
  integers without any kind of scaling.
  
! @item @code{free @var{expr} [storage_pool = @var{xxx}]}
  
  Shows the storage pool associated with a @code{free} statement.
  
*************** Shows the storage pool associated with a
*** 14889,14918 ****
  Used to list an equivalent declaration for an internally generated
  type that is referenced elsewhere in the listing.
  
! @item @code{freeze @emph{type-name} [@emph{actions}]}
  
  Shows the point at which @code{type-name} is frozen, with possible
  associated actions to be performed at the freeze point.
  
! @item @code{reference @emph{itype}}
  
  Reference (and hence definition) to internal type @code{itype}.
  
! @item @code{@emph{function-name}! (@emph{arg}, @emph{arg}, @emph{arg})}
  
  Intrinsic function call.
  
! @item @code{@emph{label-name} : label}
  
  Declaration of label @code{labelname}.
  
! @item @code{#$ @emph{subprogram-name}}
  
  An implicit call to a run-time support routine
  (to meet the requirement of H.3.1(9) in a
  convenient manner).
  
! @item @code{@emph{expr} && @emph{expr} && @emph{expr} ... && @emph{expr}}
  
  A multiple concatenation (same effect as @code{expr} & @code{expr} &
  @code{expr}, but handled more efficiently).
--- 14984,15013 ----
  Used to list an equivalent declaration for an internally generated
  type that is referenced elsewhere in the listing.
  
! @item @code{freeze @var{type-name} [@var{actions}]}
  
  Shows the point at which @code{type-name} is frozen, with possible
  associated actions to be performed at the freeze point.
  
! @item @code{reference @var{itype}}
  
  Reference (and hence definition) to internal type @code{itype}.
  
! @item @code{@var{function-name}! (@var{arg}, @var{arg}, @var{arg})}
  
  Intrinsic function call.
  
! @item @code{@var{label-name} : label}
  
  Declaration of label @code{labelname}.
  
! @item @code{#$ @var{subprogram-name}}
  
  An implicit call to a run-time support routine
  (to meet the requirement of H.3.1(9) in a
  convenient manner).
  
! @item @code{@var{expr} && @var{expr} && @var{expr} ... && @var{expr}}
  
  A multiple concatenation (same effect as @code{expr} & @code{expr} &
  @code{expr}, but handled more efficiently).
*************** A multiple concatenation (same effect as
*** 14921,14935 ****
  
  Raise the @code{Constraint_Error} exception.
  
! @item @code{@emph{expression}'reference}
  
  A pointer to the result of evaluating @{expression@}.
  
! @item @code{@emph{target-type}!(@emph{source-expression})}
  
  An unchecked conversion of @code{source-expression} to @code{target-type}.
  
! @item @code{[@emph{numerator}/@emph{denominator}]}
  
  Used to represent internal real literals (that) have no exact
  representation in base 2-16 (for example, the result of compile time
--- 15016,15030 ----
  
  Raise the @code{Constraint_Error} exception.
  
! @item @code{@var{expression}'reference}
  
  A pointer to the result of evaluating @{expression@}.
  
! @item @code{@var{target-type}!(@var{source-expression})}
  
  An unchecked conversion of @code{source-expression} to @code{target-type}.
  
! @item @code{[@var{numerator}/@var{denominator}]}
  
  Used to represent internal real literals (that) have no exact
  representation in base 2-16 (for example, the result of compile time
*************** types in package Standard.
*** 15075,15084 ****
  @item @code{-gnatx}
  
  Normally the compiler generates full cross-referencing information in
! the @code{ALI} file. This information is used by a number of tools,
! including @code{gnatfind} and @code{gnatxref}. The @code{-gnatx} switch
! suppresses this information. This saves some space and may slightly
! speed up compilation, but means that these tools cannot be used.
  @end table
  
  @geindex -fgnat-encodings (gcc)
--- 15170,15179 ----
  @item @code{-gnatx}
  
  Normally the compiler generates full cross-referencing information in
! the @code{ALI} file. This information is used by a number of tools.
! The @code{-gnatx} switch suppresses this information. This saves some space
! and may slightly speed up compilation, but means that tools depending
! on this information cannot be used.
  @end table
  
  @geindex -fgnat-encodings (gcc)
*************** through the compilation and binding step
*** 15205,15211 ****
  
  @table @asis
  
! @item @code{-gnatem=@emph{path}}
  
  A mapping file is a way to communicate to the compiler two mappings:
  from unit names to file names (without any directory information) and from
--- 15300,15306 ----
  
  @table @asis
  
! @item @code{-gnatem=`path'}
  
  A mapping file is a way to communicate to the compiler two mappings:
  from unit names to file names (without any directory information) and from
*************** Linker switches can be specified after @
*** 15288,15299 ****
  
  @table @asis
  
! @item @code{-fuse-ld=@emph{name}}
  
! Linker to be used. The default is @code{bfd} for @code{ld.bfd},
! the alternative being @code{gold} for @code{ld.gold}. The later is
! a more recent and faster linker, but only available on GNU/Linux
  platforms.
  @end table
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
--- 15383,15395 ----
  
  @table @asis
  
! @item @code{-fuse-ld=`name'}
  
! Linker to be used. The default is @code{bfd} for @code{ld.bfd}; @code{gold}
! (for @code{ld.gold}) and @code{mold} (for @code{ld.mold}) are more
! recent and faster alternatives, but only available on GNU/Linux
  platforms.
+ 
  @end table
  
  @node Binding with gnatbind,Linking with gnatlink,Linker Switches,Building Executable Programs with GNAT
*************** Specify directory to be searched for sou
*** 15499,15505 ****
  
  @table @asis
  
! @item @code{-A[=@emph{filename}]}
  
  Output ALI list (to standard output or to the named file).
  @end table
--- 15595,15601 ----
  
  @table @asis
  
! @item @code{-A[=`filename']}
  
  Output ALI list (to standard output or to the named file).
  @end table
*************** Check only, no generation of binder outp
*** 15529,15535 ****
  
  @table @asis
  
! @item @code{-d@emph{nn}[k|m]}
  
  This switch can be used to change the default task stack size value
  to a specified size @code{nn}, which is expressed in bytes by default, or
--- 15625,15631 ----
  
  @table @asis
  
! @item @code{-d`nn'[k|m]}
  
  This switch can be used to change the default task stack size value
  to a specified size @code{nn}, which is expressed in bytes by default, or
*************** When they do not already have such a pra
*** 15550,15556 ****
  
  @table @asis
  
! @item @code{-D@emph{nn}[k|m]}
  
  Set the default secondary stack size to @code{nn}. The suffix indicates whether
  the size is in bytes (no suffix), kilobytes (@code{k} suffix) or megabytes
--- 15646,15652 ----
  
  @table @asis
  
! @item @code{-D`nn'[k|m]}
  
  Set the default secondary stack size to @code{nn}. The suffix indicates whether
  the size is in bytes (no suffix), kilobytes (@code{k} suffix) or megabytes
*************** Currently the same as @code{-Ea}.
*** 15626,15632 ****
  
  @table @asis
  
! @item @code{-f@emph{elab-order}}
  
  Force elaboration order. For further details see @ref{111,,Elaboration Control}
  and @ref{f,,Elaboration Order Handling in GNAT}.
--- 15722,15728 ----
  
  @table @asis
  
! @item @code{-f`elab-order'}
  
  Force elaboration order. For further details see @ref{111,,Elaboration Control}
  and @ref{f,,Elaboration Order Handling in GNAT}.
*************** Do not look for sources in the current d
*** 15706,15711 ****
--- 15802,15823 ----
  invoked, and do not look for ALI files in the directory containing the
  ALI file named in the @code{gnatbind} command line.
  
+ @geindex -k (gnatbind)
+ 
+ @item @code{-k}
+ 
+ Disable checking of elaboration flags. When using @code{-n}
+ either explicitly or implicitly, @code{-F} is also implied,
+ unless @code{-k} is used. This switch should be used with care
+ and you should ensure manually that elaboration routines are not called
+ twice unintentionally.
+ 
+ @geindex -K (gnatbind)
+ 
+ @item @code{-K}
+ 
+ Give list of linker options specified for link.
+ 
  @geindex -l (gnatbind)
  
  @item @code{-l}
*************** Output chosen elaboration order.
*** 15714,15738 ****
  
  @geindex -L (gnatbind)
  
! @item @code{-L@emph{xxx}}
  
  Bind the units for library building. In this case the @code{adainit} and
  @code{adafinal} procedures (@ref{a0,,Binding with Non-Ada Main Programs})
! are renamed to @code{@emph{xxx}init} and
! @code{@emph{xxx}final}.
  Implies -n.
  (@ref{2a,,GNAT and Libraries}, for more details.)
  
  @geindex -M (gnatbind)
  
! @item @code{-M@emph{xyz}}
  
  Rename generated main program from main to xyz. This option is
  supported on cross environments only.
  
  @geindex -m (gnatbind)
  
! @item @code{-m@emph{n}}
  
  Limit number of detected errors or warnings to @code{n}, where @code{n} is
  in the range 1..999999. The default value if no switch is
--- 15826,15850 ----
  
  @geindex -L (gnatbind)
  
! @item @code{-L`xxx'}
  
  Bind the units for library building. In this case the @code{adainit} and
  @code{adafinal} procedures (@ref{a0,,Binding with Non-Ada Main Programs})
! are renamed to @code{@var{xxx}init} and
! @code{@var{xxx}final}.
  Implies -n.
  (@ref{2a,,GNAT and Libraries}, for more details.)
  
  @geindex -M (gnatbind)
  
! @item @code{-M`xyz'}
  
  Rename generated main program from main to xyz. This option is
  supported on cross environments only.
  
  @geindex -m (gnatbind)
  
! @item @code{-m`n'}
  
  Limit number of detected errors or warnings to @code{n}, where @code{n} is
  in the range 1..999999. The default value if no switch is
*************** sign is optional.
*** 15749,15755 ****
  
  Generate a binder file suitable for space-constrained applications. When
  active, binder-generated objects not required for program operation are no
! longer generated. @strong{Warning:} this option comes with the following
  limitations:
  
  
--- 15861,15867 ----
  
  Generate a binder file suitable for space-constrained applications. When
  active, binder-generated objects not required for program operation are no
! longer generated. `Warning:' this option comes with the following
  limitations:
  
  
*************** Do not look for library files in the sys
*** 15785,15798 ****
  
  @geindex --RTS (gnatbind)
  
! @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the run-time library. Same meaning as the
  equivalent @code{gnatmake} flag (@ref{ce,,Switches for gnatmake}).
  
  @geindex -o (gnatbind)
  
! @item @code{-o @emph{file}}
  
  Name the output file @code{file} (default is @code{b~`xxx}.adb`).
  Note that if this option is used, then linking must be done manually,
--- 15897,15910 ----
  
  @geindex --RTS (gnatbind)
  
! @item @code{--RTS=`rts-path'}
  
  Specifies the default location of the run-time library. Same meaning as the
  equivalent @code{gnatmake} flag (@ref{ce,,Switches for gnatmake}).
  
  @geindex -o (gnatbind)
  
! @item @code{-o `file'}
  
  Name the output file @code{file} (default is @code{b~`xxx}.adb`).
  Note that if this option is used, then linking must be done manually,
*************** gnatlink cannot be used.
*** 15800,15806 ****
  
  @geindex -O (gnatbind)
  
! @item @code{-O[=@emph{filename}]}
  
  Output object list (to standard output or to the named file).
  
--- 15912,15918 ----
  
  @geindex -O (gnatbind)
  
! @item @code{-O[=`filename']}
  
  Output object list (to standard output or to the named file).
  
*************** Require all source files to be present.
*** 15837,15843 ****
  
  @geindex -S (gnatbind)
  
! @item @code{-S@emph{xxx}}
  
  Specifies the value to be used when detecting uninitialized scalar
  objects with pragma Initialize_Scalars.
--- 15949,15955 ----
  
  @geindex -S (gnatbind)
  
! @item @code{-S`xxx'}
  
  Specifies the value to be used when detecting uninitialized scalar
  objects with pragma Initialize_Scalars.
*************** then a 32-bit scalar value will be set t
*** 15891,15898 ****
  
  In addition, you can specify @code{-Sev} to indicate that the value is
  to be set at run time. In this case, the program will look for an environment
! variable of the form @code{GNAT_INIT_SCALARS=@emph{yy}}, where @code{yy} is one
! of @code{in/lo/hi/@emph{xx}} with the same meanings as above.
  If no environment variable is found, or if it does not have a valid value,
  then the default is @code{in} (invalid values).
  @end table
--- 16003,16010 ----
  
  In addition, you can specify @code{-Sev} to indicate that the value is
  to be set at run time. In this case, the program will look for an environment
! variable of the form @code{GNAT_INIT_SCALARS=@var{yy}}, where @code{yy} is one
! of @code{in/lo/hi/@var{xx}} with the same meanings as above.
  If no environment variable is found, or if it does not have a valid value,
  then the default is @code{in} (invalid values).
  @end table
*************** Tolerate time stamp and other consistenc
*** 15920,15926 ****
  
  @geindex -T (gnatbind)
  
! @item @code{-T@emph{n}}
  
  Set the time slice value to @code{n} milliseconds. If the system supports
  the specification of a specific time slice value, then the indicated value
--- 16032,16038 ----
  
  @geindex -T (gnatbind)
  
! @item @code{-T`n'}
  
  Set the time slice value to @code{n} milliseconds. If the system supports
  the specification of a specific time slice value, then the indicated value
*************** scheduling policy to @code{FIFO_Within_P
*** 15936,15942 ****
  
  @geindex -u (gnatbind)
  
! @item @code{-u@emph{n}}
  
  Enable dynamic stack usage, with @code{n} results stored and displayed
  at program termination. A result is generated when a task
--- 16048,16054 ----
  
  @geindex -u (gnatbind)
  
! @item @code{-u`n'}
  
  Enable dynamic stack usage, with @code{n} results stored and displayed
  at program termination. A result is generated when a task
*************** Verbose mode. Write error messages, head
*** 15953,15959 ****
  
  @geindex -V (gnatbind)
  
! @item @code{-V@emph{key}=@emph{value}}
  
  Store the given association of @code{key} to @code{value} in the bind environment.
  Values stored this way can be retrieved at run time using
--- 16065,16071 ----
  
  @geindex -V (gnatbind)
  
! @item @code{-V`key'=`value'}
  
  Store the given association of @code{key} to @code{value} in the bind environment.
  Values stored this way can be retrieved at run time using
*************** Values stored this way can be retrieved
*** 15961,15973 ****
  
  @geindex -w (gnatbind)
  
! @item @code{-w@emph{x}}
  
  Warning mode; @code{x} = s/e for suppress/treat as error.
  
  @geindex -Wx (gnatbind)
  
! @item @code{-Wx@emph{e}}
  
  Override default wide character encoding for standard Text_IO files.
  
--- 16073,16085 ----
  
  @geindex -w (gnatbind)
  
! @item @code{-w`x'}
  
  Warning mode; @code{x} = s/e for suppress/treat as error.
  
  @geindex -Wx (gnatbind)
  
! @item @code{-Wx`e'}
  
  Override default wide character encoding for standard Text_IO files.
  
*************** at streaming 128-bit integer types with
*** 15990,15996 ****
  
  @geindex -Xnnn (gnatbind)
  
! @item @code{-X@emph{nnn}}
  
  Set default exit status value, normally 0 for POSIX compliance.
  
--- 16102,16108 ----
  
  @geindex -Xnnn (gnatbind)
  
! @item @code{-X`nnn'}
  
  Set default exit status value, normally 0 for POSIX compliance.
  
*************** file is an error.
*** 16049,16055 ****
  
  @geindex -Wx (gnatbind)
  
! @item @code{-Wx@emph{e}}
  
  Override default wide character encoding for standard Text_IO files.
  Normally the default wide character encoding method used for standard
--- 16161,16167 ----
  
  @geindex -Wx (gnatbind)
  
! @item @code{-Wx`e'}
  
  Override default wide character encoding for standard Text_IO files.
  Normally the default wide character encoding method used for standard
*************** specified. This is relevant only when us
*** 16108,16121 ****
  
  @geindex -m (gnatbind)
  
! @item @code{-m@emph{n}}
  
  Limits the number of error messages to @code{n}, a decimal integer in the
  range 1-999. The binder terminates immediately if this limit is reached.
  
  @geindex -M (gnatbind)
  
! @item @code{-M@emph{xxx}}
  
  Renames the generated main program from @code{main} to @code{xxx}.
  This is useful in the case of some cross-building environments, where
--- 16220,16233 ----
  
  @geindex -m (gnatbind)
  
! @item @code{-m`n'}
  
  Limits the number of error messages to @code{n}, a decimal integer in the
  range 1-999. The binder terminates immediately if this limit is reached.
  
  @geindex -M (gnatbind)
  
! @item @code{-M`xxx'}
  
  Renames the generated main program from @code{main} to @code{xxx}.
  This is useful in the case of some cross-building environments, where
*************** order. For further details see @ref{f,,E
*** 16198,16204 ****
  
  @table @asis
  
! @item @code{-f@emph{elab-order}}
  
  Force elaboration order.
  
--- 16310,16316 ----
  
  @table @asis
  
! @item @code{-f`elab-order'}
  
  Force elaboration order.
  
*************** directory names for the run-time units d
*** 16333,16339 ****
  
  @geindex -o (gnatbind)
  
! @item @code{-o @emph{file}}
  
  Set name of output file to @code{file} instead of the normal
  @code{b~`mainprog}.adb` default. Note that @code{file} denote the Ada
--- 16445,16451 ----
  
  @geindex -o (gnatbind)
  
! @item @code{-o `file'}
  
  Set name of output file to @code{file} instead of the normal
  @code{b~`mainprog}.adb` default. Note that @code{file} denote the Ada
*************** is given, more than one ALI file may app
*** 16453,16459 ****
  the command line for @code{gnatbind}. The normal @code{closure}
  calculation is performed for each of the specified units. Calculating
  the closure means finding out the set of units involved by tracing
! @emph{with} references. The reason it is necessary to be able to
  specify more than one ALI file is that a given program may invoke two or
  more quite separate groups of Ada units.
  
--- 16565,16571 ----
  the command line for @code{gnatbind}. The normal @code{closure}
  calculation is performed for each of the specified units. Calculating
  the closure means finding out the set of units involved by tracing
! `with' references. The reason it is necessary to be able to
  specify more than one ALI file is that a given program may invoke two or
  more quite separate groups of Ada units.
  
*************** char **gnat_argv;
*** 16524,16532 ****
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual @code{argc} and @code{argv} values passed to the
! main program. With no @emph{n} present, @code{gnatbind}
  generates the C main program to automatically set these variables.
! If the @emph{n} switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  @code{Ada.Command_Line} will not be available, and any attempt to use
  them will raise @code{Constraint_Error}. If command line access is
--- 16636,16644 ----
  
  are declared in one of the GNAT library routines. These variables must
  be set from the actual @code{argc} and @code{argv} values passed to the
! main program. With no `n' present, @code{gnatbind}
  generates the C main program to automatically set these variables.
! If the `n' switch is used, there is no automatic way to
  set these variables. If they are not set, the procedures in
  @code{Ada.Command_Line} will not be available, and any attempt to use
  them will raise @code{Constraint_Error}. If command line access is
*************** instead if you want to specify
*** 16608,16616 ****
  source paths only, and @code{-aO}
  if you want to specify library paths
  only. This means that for the binder
! @code{-I@emph{dir}} is equivalent to
! @code{-aI@emph{dir}}
! @code{-aO`@emph{dir}}.
  The binder generates the bind file (a C language source file) in the
  current working directory.
  
--- 16720,16728 ----
  source paths only, and @code{-aO}
  if you want to specify library paths
  only. This means that for the binder
! @code{-I`dir'} is equivalent to
! @code{-aI`dir'}
! @code{-aO``dir'}.
  The binder generates the bind file (a C language source file) in the
  current working directory.
  
*************** development environments much more flexi
*** 16643,16649 ****
  @subsection Examples of @code{gnatbind} Usage
  
  
! Here are some examples of @code{gnatbind} invovations:
  
  @quotation
  
--- 16755,16761 ----
  @subsection Examples of @code{gnatbind} Usage
  
  
! Here are some examples of @code{gnatbind} invocations:
  
  @quotation
  
*************** it compiles the binder file, and that th
*** 16861,16867 ****
  
  @table @asis
  
! @item @code{-o @emph{exec-name}}
  
  @code{exec-name} specifies an alternate name for the generated
  executable program. If this switch is omitted, the executable has the same
--- 16973,16979 ----
  
  @table @asis
  
! @item @code{-o `exec-name'}
  
  @code{exec-name} specifies an alternate name for the generated
  executable program. If this switch is omitted, the executable has the same
*************** an executable called @code{try}.
*** 16874,16880 ****
  
  @table @asis
  
! @item @code{-B@emph{dir}}
  
  Load compiler executables (for example, @code{gnat1}, the Ada compiler)
  from @code{dir} instead of the default location. Only use this switch
--- 16986,16992 ----
  
  @table @asis
  
! @item @code{-B`dir'}
  
  Load compiler executables (for example, @code{gnat1}, the Ada compiler)
  from @code{dir} instead of the default location. Only use this switch
*************** has the same name as the executable with
*** 16900,16906 ****
  
  @table @asis
  
! @item @code{-M=@emph{mapfile}}
  
  When linking an executable, create a map file. The name of the map file is
  @code{mapfile}.
--- 17012,17018 ----
  
  @table @asis
  
! @item @code{-M=`mapfile'}
  
  When linking an executable, create a map file. The name of the map file is
  @code{mapfile}.
*************** When linking an executable, create a map
*** 16911,16917 ****
  
  @table @asis
  
! @item @code{--GCC=@emph{compiler_name}}
  
  Program used for compiling the binder file. The default is
  @code{gcc}. You need to use quotes around @code{compiler_name} if
--- 17023,17029 ----
  
  @table @asis
  
! @item @code{--GCC=`compiler_name'}
  
  Program used for compiling the binder file. The default is
  @code{gcc}. You need to use quotes around @code{compiler_name} if
*************** into account. Thus,
*** 16938,16944 ****
  
  @table @asis
  
! @item @code{--LINK=@emph{name}}
  
  @code{name} is the name of the linker to be invoked. This is especially
  useful in mixed language programs since languages such as C++ require
--- 17050,17056 ----
  
  @table @asis
  
! @item @code{--LINK=`name'}
  
  @code{name} is the name of the linker to be invoked. This is especially
  useful in mixed language programs since languages such as C++ require
*************** which might help you in case your projec
*** 17007,17015 ****
  ##    Each of these csc is put in its own directory.
  ##    Their name are referenced by the directory names.
  ##    They will be compiled into shared library (although this would also work
! ##    with static libraries
  ##  - The main program (and possibly other packages that do not belong to any
! ##    csc is put in the top level directory (where the Makefile is).
  ##       toplevel_dir __ first_csc  (sources) __ lib (will contain the library)
  ##                    \\_ second_csc (sources) __ lib (will contain the library)
  ##                    \\_ ...
--- 17119,17127 ----
  ##    Each of these csc is put in its own directory.
  ##    Their name are referenced by the directory names.
  ##    They will be compiled into shared library (although this would also work
! ##    with static libraries)
  ##  - The main program (and possibly other packages that do not belong to any
! ##    csc) is put in the top level directory (where the Makefile is).
  ##       toplevel_dir __ first_csc  (sources) __ lib (will contain the library)
  ##                    \\_ second_csc (sources) __ lib (will contain the library)
  ##                    \\_ ...
*************** Display copyright and version, then exit
*** 17346,17352 ****
  If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  
! @item @code{--subdirs=@emph{subdir}}
  
  Actual object directory of each project file is the subdirectory subdir of the
  object directory specified or defaulted in the project file.
--- 17458,17464 ----
  If @code{--version} was not used, display usage, then exit disregarding
  all other options.
  
! @item @code{--subdirs=`subdir'}
  
  Actual object directory of each project file is the subdirectory subdir of the
  object directory specified or defaulted in the project file.
*************** files, interface copy files, binder gene
*** 17375,17381 ****
  
  @table @asis
  
! @item @code{-D @emph{dir}}
  
  Indicate that ALI and object files should normally be found in directory @code{dir}.
  @end table
--- 17487,17493 ----
  
  @table @asis
  
! @item @code{-D `dir'}
  
  Indicate that ALI and object files should normally be found in directory @code{dir}.
  @end table
*************** that would have been deleted if this swi
*** 17419,17425 ****
  
  @table @asis
  
! @item @code{-P@emph{project}}
  
  Use project file @code{project}. Only one such switch can be used.
  When cleaning a project file, the files produced by the compilation of the
--- 17531,17537 ----
  
  @table @asis
  
! @item @code{-P`project'}
  
  Use project file @code{project}. Only one such switch can be used.
  When cleaning a project file, the files produced by the compilation of the
*************** Verbose mode.
*** 17468,17474 ****
  
  @table @asis
  
! @item @code{-vP@emph{x}}
  
  Indicates the verbosity of the parsing of GNAT project files.
  @ref{cf,,Switches Related to Project Files}.
--- 17580,17586 ----
  
  @table @asis
  
! @item @code{-vP`x'}
  
  Indicates the verbosity of the parsing of GNAT project files.
  @ref{cf,,Switches Related to Project Files}.
*************** Indicates the verbosity of the parsing o
*** 17479,17485 ****
  
  @table @asis
  
! @item @code{-X@emph{name}=@emph{value}}
  
  Indicates that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
--- 17591,17597 ----
  
  @table @asis
  
! @item @code{-X`name'=`value'}
  
  Indicates that external variable @code{name} has the value @code{value}.
  The Project Manager will use this value for occurrences of
*************** See @ref{cf,,Switches Related to Project
*** 17492,17498 ****
  
  @table @asis
  
! @item @code{-aO@emph{dir}}
  
  When searching for ALI and object files, look in directory @code{dir}.
  @end table
--- 17604,17610 ----
  
  @table @asis
  
! @item @code{-aO`dir'}
  
  When searching for ALI and object files, look in directory @code{dir}.
  @end table
*************** When searching for ALI and object files,
*** 17502,17510 ****
  
  @table @asis
  
! @item @code{-I@emph{dir}}
  
! Equivalent to @code{-aO@emph{dir}}.
  @end table
  
  @geindex -I- (gnatclean)
--- 17614,17622 ----
  
  @table @asis
  
! @item @code{-I`dir'}
  
! Equivalent to @code{-aO`dir'}.
  @end table
  
  @geindex -I- (gnatclean)
*************** qualifier which can be:
*** 17593,17604 ****
  
  @table @asis
  
! @item @emph{OK (unchanged)}
  
  The version of the source file used for the compilation of the
  specified unit corresponds exactly to the actual source file.
  
! @item @emph{MOK (slightly modified)}
  
  The version of the source file used for the compilation of the
  specified unit differs from the actual source file but not enough to
--- 17705,17716 ----
  
  @table @asis
  
! @item `OK (unchanged)'
  
  The version of the source file used for the compilation of the
  specified unit corresponds exactly to the actual source file.
  
! @item `MOK (slightly modified)'
  
  The version of the source file used for the compilation of the
  specified unit differs from the actual source file but not enough to
*************** require recompilation. If you use gnatma
*** 17606,17621 ****
  @code{-m} (minimal recompilation), a file marked
  MOK will not be recompiled.
  
! @item @emph{DIF (modified)}
  
  No version of the source found on the path corresponds to the source
  used to build this object.
  
! @item @emph{??? (file not found)}
  
  No source file was found for this unit.
  
! @item @emph{HID (hidden,  unchanged version not first on PATH)}
  
  The version of the source that corresponds exactly to the source used
  for compilation has been found on the path but it is hidden by another
--- 17718,17733 ----
  @code{-m} (minimal recompilation), a file marked
  MOK will not be recompiled.
  
! @item `DIF (modified)'
  
  No version of the source found on the path corresponds to the source
  used to build this object.
  
! @item `??? (file not found)'
  
  No source file was found for this unit.
  
! @item `HID (hidden,  unchanged version not first on PATH)'
  
  The version of the source that corresponds exactly to the source used
  for compilation has been found on the path but it is hidden by another
*************** Only output information about compilatio
*** 17716,17722 ****
  
  @table @asis
  
! @item @code{-files=@emph{file}}
  
  Take as arguments the files listed in text file @code{file}.
  Text file @code{file} may contain empty lines that are ignored.
--- 17828,17834 ----
  
  @table @asis
  
! @item @code{-files=`file'}
  
  Take as arguments the files listed in text file @code{file}.
  Text file @code{file} may contain empty lines that are ignored.
*************** Several such switches may be specified s
*** 17735,17741 ****
  
  @table @asis
  
! @item @code{-aO@emph{dir}}, @code{-aI@emph{dir}}, @code{-I@emph{dir}}, @code{-I-}, @code{-nostdinc}
  
  Source path manipulation. Same meaning as the equivalent @code{gnatmake}
  flags (@ref{ce,,Switches for gnatmake}).
--- 17847,17853 ----
  
  @table @asis
  
! @item @code{-aO`dir'}, @code{-aI`dir'}, @code{-I`dir'}, @code{-I-}, @code{-nostdinc}
  
  Source path manipulation. Same meaning as the equivalent @code{gnatmake}
  flags (@ref{ce,,Switches for gnatmake}).
*************** flags (@ref{ce,,Switches for gnatmake}).
*** 17746,17752 ****
  
  @table @asis
  
! @item @code{-aP@emph{dir}}
  
  Add @code{dir} at the beginning of the project search dir.
  @end table
--- 17858,17864 ----
  
  @table @asis
  
! @item @code{-aP`dir'}
  
  Add @code{dir} at the beginning of the project search dir.
  @end table
*************** Add @code{dir} at the beginning of the p
*** 17756,17762 ****
  
  @table @asis
  
! @item @code{--RTS=@emph{rts-path}}
  
  Specifies the default location of the runtime library. Same meaning as the
  equivalent @code{gnatmake} flag (@ref{ce,,Switches for gnatmake}).
--- 17868,17874 ----
  
  @table @asis
  
! @item @code{--RTS=`rts-path'}
  
  Specifies the default location of the runtime library. Same meaning as the
  equivalent @code{gnatmake} flag (@ref{ce,,Switches for gnatmake}).
*************** characteristics such as:
*** 17778,17806 ****
  @itemize *
  
  @item 
! @emph{Preelaborable}: The unit is preelaborable in the Ada sense.
  
  @item 
! @emph{No_Elab_Code}:  No elaboration code has been produced by the compiler for this unit.
  
  @item 
! @emph{Pure}: The unit is pure in the Ada sense.
  
  @item 
! @emph{Elaborate_Body}: The unit contains a pragma Elaborate_Body.
  
  @item 
! @emph{Remote_Types}: The unit contains a pragma Remote_Types.
  
  @item 
! @emph{Shared_Passive}: The unit contains a pragma Shared_Passive.
  
  @item 
! @emph{Predefined}: This unit is part of the predefined environment and cannot be modified
  by the user.
  
  @item 
! @emph{Remote_Call_Interface}: The unit contains a pragma Remote_Call_Interface.
  @end itemize
  @end table
  
--- 17890,17918 ----
  @itemize *
  
  @item 
! `Preelaborable': The unit is preelaborable in the Ada sense.
  
  @item 
! `No_Elab_Code':  No elaboration code has been produced by the compiler for this unit.
  
  @item 
! `Pure': The unit is pure in the Ada sense.
  
  @item 
! `Elaborate_Body': The unit contains a pragma Elaborate_Body.
  
  @item 
! `Remote_Types': The unit contains a pragma Remote_Types.
  
  @item 
! `Shared_Passive': The unit contains a pragma Shared_Passive.
  
  @item 
! `Predefined': This unit is part of the predefined environment and cannot be modified
  by the user.
  
  @item 
! `Remote_Call_Interface': The unit contains a pragma Remote_Call_Interface.
  @end itemize
  @end table
  
*************** instr.ads
*** 17888,17896 ****
  
  
  
- 
- 
- 
  @c -- Example: A |withing| unit has a |with| clause, it |withs| a |withed| unit
  
  @node GNAT and Program Execution,Platform-Specific Information,GNAT Utility Programs,Top
--- 18000,18005 ----
*************** describes some of the additional command
*** 18082,18088 ****
  @code{GDB} contains a large repertoire of commands.
  See @cite{Debugging with GDB} for extensive documentation on the use
  of these commands, together with examples of their use. Furthermore,
! the command @emph{help} invoked from within GDB activates a simple help
  facility which summarizes the available commands and their options.
  In this section we summarize a few of the most commonly
  used commands to give an idea of what @code{GDB} is about. You should create
--- 18191,18197 ----
  @code{GDB} contains a large repertoire of commands.
  See @cite{Debugging with GDB} for extensive documentation on the use
  of these commands, together with examples of their use. Furthermore,
! the command `help' invoked from within GDB activates a simple help
  facility which summarizes the available commands and their options.
  In this section we summarize a few of the most commonly
  used commands to give an idea of what @code{GDB} is about. You should create
*************** following section.
*** 18097,18105 ****
  
  @table @asis
  
! @item @code{set args @emph{arguments}}
  
! The @emph{arguments} list above is a list of arguments to be passed to
  the program on a subsequent run command, just as though the arguments
  had been entered on a normal invocation of the program. The @code{set args}
  command is not needed if the program does not require arguments.
--- 18206,18214 ----
  
  @table @asis
  
! @item @code{set args @var{arguments}}
  
! The `arguments' list above is a list of arguments to be passed to
  the program on a subsequent run command, just as though the arguments
  had been entered on a normal invocation of the program. The @code{set args}
  command is not needed if the program does not require arguments.
*************** restart.
*** 18122,18132 ****
  
  @table @asis
  
! @item @code{breakpoint @emph{location}}
  
  The breakpoint command sets a breakpoint, that is to say a point at which
  execution will halt and @code{GDB} will await further
! commands. @emph{location} is
  either a line number within a file, given in the format @code{file:linenumber},
  or it is the name of a subprogram. If you request that a breakpoint be set on
  a subprogram that is overloaded, a prompt will ask you to specify on which of
--- 18231,18241 ----
  
  @table @asis
  
! @item @code{breakpoint @var{location}}
  
  The breakpoint command sets a breakpoint, that is to say a point at which
  execution will halt and @code{GDB} will await further
! commands. `location' is
  either a line number within a file, given in the format @code{file:linenumber},
  or it is the name of a subprogram. If you request that a breakpoint be set on
  a subprogram that is overloaded, a prompt will ask you to specify on which of
*************** printing the line of code before which t
*** 18141,18147 ****
  
  @table @asis
  
! @item @code{catch exception @emph{name}}
  
  This command causes the program execution to stop whenever exception
  @code{name} is raised.  If @code{name} is omitted, then the execution is
--- 18250,18256 ----
  
  @table @asis
  
! @item @code{catch exception @var{name}}
  
  This command causes the program execution to stop whenever exception
  @code{name} is raised.  If @code{name} is omitted, then the execution is
*************** suspended when any exception is raised.
*** 18152,18158 ****
  
  @table @asis
  
! @item @code{print @emph{expression}}
  
  This will print the value of the given expression. Most simple
  Ada expression formats are properly handled by @code{GDB}, so the expression
--- 18261,18267 ----
  
  @table @asis
  
! @item @code{print @var{expression}}
  
  This will print the value of the given expression. Most simple
  Ada expression formats are properly handled by @code{GDB}, so the expression
*************** examined to the frame of its callee (the
*** 18241,18247 ****
  
  @table @asis
  
! @item @code{frame @emph{n}}
  
  Inspect the frame with the given number. The value 0 denotes the frame
  of the current breakpoint, that is to say the top of the call stack.
--- 18350,18356 ----
  
  @table @asis
  
! @item @code{frame @var{n}}
  
  Inspect the frame with the given number. The value 0 denotes the frame
  of the current breakpoint, that is to say the top of the call stack.
*************** the elements in the desired format.
*** 18381,18387 ****
  
  @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
  @anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{158}@anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{159}
! @subsection Using the @emph{next} Command in a Function
  
  
  When you use the @code{next} command in a function, the current source
--- 18490,18496 ----
  
  @node Using the next Command in a Function,Stopping When Ada Exceptions Are Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
  @anchor{gnat_ugn/gnat_and_program_execution id8}@anchor{158}@anchor{gnat_ugn/gnat_and_program_execution using-the-next-command-in-a-function}@anchor{159}
! @subsection Using the `next' Command in a Function
  
  
  When you use the @code{next} command in a function, the current source
*************** raises any exception.
*** 18429,18438 ****
  
  @table @asis
  
! @item @code{catch exception @emph{name}}
  
  Set a catchpoint that stops execution whenever (any task in the) program
! raises the exception @emph{name}.
  @end table
  
  @item 
--- 18538,18547 ----
  
  @table @asis
  
! @item @code{catch exception @var{name}}
  
  Set a catchpoint that stops execution whenever (any task in the) program
! raises the exception `name'.
  @end table
  
  @item 
*************** raises an exception for which there is n
*** 18449,18459 ****
  
  @table @asis
  
! @item @code{info exceptions}, @code{info exceptions @emph{regexp}}
  
  The @code{info exceptions} command permits the user to examine all defined
! exceptions within Ada programs. With a regular expression, @emph{regexp}, as
! argument, prints out only those exceptions whose name matches @emph{regexp}.
  @end table
  @end itemize
  
--- 18558,18568 ----
  
  @table @asis
  
! @item @code{info exceptions}, @code{info exceptions @var{regexp}}
  
  The @code{info exceptions} command permits the user to examine all defined
! exceptions within Ada programs. With a regular expression, `regexp', as
! argument, prints out only those exceptions whose name matches `regexp'.
  @end table
  @end itemize
  
*************** to refer to tasks in the following comma
*** 18498,18522 ****
  @itemize *
  
  @item 
! @code{break`@w{`}*linespec* `@w{`}task} @emph{taskid}, @code{break} @emph{linespec} @code{task} @emph{taskid} @code{if} …
  
  @quotation
  
  These commands are like the @code{break ... thread ...}.
! @emph{linespec} specifies source lines.
  
! Use the qualifier @code{task @emph{taskid}} with a breakpoint command
  to specify that you only want @code{GDB} to stop the program when a
! particular Ada task reaches this breakpoint. @emph{taskid} is one of the
  numeric task identifiers assigned by @code{GDB}, shown in the first
  column of the @code{info tasks} display.
  
! If you do not specify @code{task @emph{taskid}} when you set a
! breakpoint, the breakpoint applies to @emph{all} tasks of your
  program.
  
  You can use the @code{task} qualifier on conditional breakpoints as
! well; in this case, place @code{task @emph{taskid}} before the
  breakpoint condition (before the @code{if}).
  @end quotation
  @end itemize
--- 18607,18631 ----
  @itemize *
  
  @item 
! @code{break} `linespec' @code{task} `taskid', @code{break} `linespec' @code{task} `taskid' @code{if} …
  
  @quotation
  
  These commands are like the @code{break ... thread ...}.
! `linespec' specifies source lines.
  
! Use the qualifier @code{task @var{taskid}} with a breakpoint command
  to specify that you only want @code{GDB} to stop the program when a
! particular Ada task reaches this breakpoint. `taskid' is one of the
  numeric task identifiers assigned by @code{GDB}, shown in the first
  column of the @code{info tasks} display.
  
! If you do not specify @code{task @var{taskid}} when you set a
! breakpoint, the breakpoint applies to `all' tasks of your
  program.
  
  You can use the @code{task} qualifier on conditional breakpoints as
! well; in this case, place @code{task @var{taskid}} before the
  breakpoint condition (before the @code{if}).
  @end quotation
  @end itemize
*************** breakpoint condition (before the @code{i
*** 18527,18537 ****
  @itemize *
  
  @item 
! @code{task @emph{taskno}}
  
  @quotation
  
! This command allows switching to the task referred by @emph{taskno}. In
  particular, this allows browsing of the backtrace of the specified
  task. It is advisable to switch back to the original task before
  continuing execution otherwise the scheduling of the program may be
--- 18636,18646 ----
  @itemize *
  
  @item 
! @code{task @var{taskno}}
  
  @quotation
  
! This command allows switching to the task referred by `taskno'. In
  particular, this allows browsing of the backtrace of the specified
  task. It is advisable to switch back to the original task before
  continuing execution otherwise the scheduling of the program may be
*************** It is also possible to use gdbserver to
*** 18657,18663 ****
  program, in which case the execution of that program is simply suspended
  until the connection between the debugger and gdbserver is established.
  
! For more information on how to use gdbserver, see the @emph{Using the gdbserver Program}
  section in @cite{Debugging with GDB}.
  GNAT provides support for gdbserver on x86-linux, x86-windows and x86_64-linux.
  
--- 18766,18772 ----
  program, in which case the execution of that program is simply suspended
  until the connection between the debugger and gdbserver is established.
  
! For more information on how to use gdbserver, see the `Using the gdbserver Program'
  section in @cite{Debugging with GDB}.
  GNAT provides support for gdbserver on x86-linux, x86-windows and x86_64-linux.
  
*************** are replaced with run-time calls.
*** 18844,18850 ****
  Traceback is a mechanism to display the sequence of subprogram calls that
  leads to a specified execution point in a program. Often (but not always)
  the execution point is an instruction at which an exception has been raised.
! This mechanism is also known as @emph{stack unwinding} because it obtains
  its information by scanning the run-time stack and recovering the activation
  records of all active subprograms. Stack unwinding is one of the most
  important tools for program debugging.
--- 18953,18959 ----
  Traceback is a mechanism to display the sequence of subprogram calls that
  leads to a specified execution point in a program. Often (but not always)
  the execution point is an instruction at which an exception has been raised.
! This mechanism is also known as `stack unwinding' because it obtains
  its information by scanning the run-time stack and recovering the activation
  records of all active subprograms. Stack unwinding is one of the most
  important tools for program debugging.
*************** for a complete list of supported platfor
*** 18878,18889 ****
  
  
  A runtime non-symbolic traceback is a list of addresses of call instructions.
! To enable this feature you must use the @code{-E}
! @code{gnatbind} option. With this option a stack traceback is stored as part
! of exception information. You can retrieve this information using the
! @code{addr2line} tool.
  
! Here is a simple example:
  
  @quotation
  
--- 18987,19000 ----
  
  
  A runtime non-symbolic traceback is a list of addresses of call instructions.
! To enable this feature you must use the @code{-E} @code{gnatbind} option. With
! this option a stack traceback is stored as part of exception information.
  
! You can translate this information using the @code{addr2line} tool, provided that
! the program is compiled with debugging options (see @ref{db,,Compiler Switches})
! and linked at a fixed position with @code{-no-pie}.
! 
! Here is a simple example with @code{gnatmake}:
  
  @quotation
  
*************** end STB;
*** 18906,18917 ****
  @end example
  
  @example
! $ gnatmake stb -bargs -E
  $ stb
  
! Execution terminated by unhandled exception
! Exception name: CONSTRAINT_ERROR
! Message: stb.adb:5
  Call stack traceback locations:
  0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
  @end example
--- 19017,19028 ----
  @end example
  
  @example
! $ gnatmake stb -g -bargs -E -largs -no-pie
  $ stb
  
! Execution of stb terminated by unhandled exception
! raised CONSTRAINT_ERROR : stb.adb:5 explicit raise
! Load address: 0x400000
  Call stack traceback locations:
  0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
  @end example
*************** Call stack traceback locations:
*** 18920,18951 ****
  As we see the traceback lists a sequence of addresses for the unhandled
  exception @code{CONSTRAINT_ERROR} raised in procedure P1. It is easy to
  guess that this exception come from procedure P1. To translate these
! addresses into the source lines where the calls appear, the
! @code{addr2line} tool, described below, is invaluable. The use of this tool
! requires the program to be compiled with debug information.
  
  @quotation
  
  @example
! $ gnatmake -g stb -bargs -E
! $ stb
! 
! Execution terminated by unhandled exception
! Exception name: CONSTRAINT_ERROR
! Message: stb.adb:5
! Call stack traceback locations:
! 0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
! 
! $ addr2line --exe=stb 0x401373 0x40138b 0x40139c 0x401335 0x4011c4
     0x4011f1 0x77e892a4
  
! 00401373 at d:/stb/stb.adb:5
! 0040138B at d:/stb/stb.adb:10
! 0040139C at d:/stb/stb.adb:14
! 00401335 at d:/stb/b~stb.adb:104
! 004011C4 at /build/.../crt1.c:200
! 004011F1 at /build/.../crt1.c:222
! 77E892A4 in ?? at ??:0
  @end example
  @end quotation
  
--- 19031,19052 ----
  As we see the traceback lists a sequence of addresses for the unhandled
  exception @code{CONSTRAINT_ERROR} raised in procedure P1. It is easy to
  guess that this exception come from procedure P1. To translate these
! addresses into the source lines where the calls appear, the @code{addr2line}
! tool needs to be invoked like this:
  
  @quotation
  
  @example
! $ addr2line -e stb 0x401373 0x40138b 0x40139c 0x401335 0x4011c4
     0x4011f1 0x77e892a4
  
! d:/stb/stb.adb:5
! d:/stb/stb.adb:10
! d:/stb/stb.adb:14
! d:/stb/b~stb.adb:197
! crtexe.c:?
! crtexe.c:?
! ??:0
  @end example
  @end quotation
  
*************** The @code{addr2line} tool has several ot
*** 18954,18967 ****
  @quotation
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @code{--functions}
  
  @tab
  
! to get the function name corresponding to any location
  
  @item
  
--- 19055,19084 ----
  @quotation
  
  
! @multitable {xxxxxxxxxxxxxxxxxxxxxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @code{-a --addresses}
  
  @tab
  
! to show the addresses alongside the line numbers
! 
! @item
! 
! @code{-f --functions}
! 
! @tab
! 
! to get the function name corresponding to a location
! 
! @item
! 
! @code{-p --pretty-print}
! 
! @tab
! 
! to print all the information on a single line
  
  @item
  
*************** to get the function name corresponding t
*** 18969,19029 ****
  
  @tab
  
! to use the gnat decoding mode for the function names.
! Note that for binutils version 2.9.x the option is
! simply @code{--demangle}.
  
  @end multitable
  
  
  @example
! $ addr2line --exe=stb --functions --demangle=gnat 0x401373 0x40138b
!    0x40139c 0x401335 0x4011c4 0x4011f1
  
! 00401373 in stb.p1 at d:/stb/stb.adb:5
! 0040138B in stb.p2 at d:/stb/stb.adb:10
! 0040139C in stb at d:/stb/stb.adb:14
! 00401335 in main at d:/stb/b~stb.adb:104
! 004011C4 in <__mingw_CRTStartup> at /build/.../crt1.c:200
! 004011F1 in <mainCRTStartup> at /build/.../crt1.c:222
  @end example
  @end quotation
  
! From this traceback we can see that the exception was raised in
! @code{stb.adb} at line 5, which was reached from a procedure call in
! @code{stb.adb} at line 10, and so on. The @code{b~std.adb} is the binder file,
! which contains the call to the main program.
! @ref{10e,,Running gnatbind}. The remaining entries are assorted runtime routines,
! and the output will vary from platform to platform.
  
  It is also possible to use @code{GDB} with these traceback addresses to debug
  the program. For example, we can break at a given code location, as reported
  in the stack traceback:
  
- @quotation
- 
  @example
  $ gdb -nw stb
  @end example
- @end quotation
  
! Furthermore, this feature is not implemented inside Windows DLL. Only
! the non-symbolic traceback is reported in this case.
  
! @quotation
  
  @example
! (gdb) break *0x401373
! Breakpoint 1 at 0x401373: file stb.adb, line 5.
! @end example
! @end quotation
  
! It is important to note that the stack traceback addresses
! do not change when debug information is included. This is particularly useful
! because it makes it possible to release software without debug information (to
! minimize object size), get a field report that includes a stack traceback
! whenever an internal bug occurs, and then be able to retrieve the sequence
! of calls with the same program compiled with debug information.
  
  @subsubheading Tracebacks From Exception Occurrences
  
--- 19086,19169 ----
  
  @tab
  
! to use the GNAT decoding mode for the function names
  
  @end multitable
  
  
  @example
! $ addr2line -e stb -a -f -p --demangle=gnat 0x401373 0x40138b
!    0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
  
! 0x00401373: stb.p1 at d:/stb/stb.adb:5
! 0x0040138B: stb.p2 at d:/stb/stb.adb:10
! 0x0040139C: stb at d:/stb/stb.adb:14
! 0x00401335: main at d:/stb/b~stb.adb:197
! 0x004011c4: ?? at crtexe.c:?
! 0x004011f1: ?? at crtexe.c:?
! 0x77e892a4: ?? ??:0
  @end example
  @end quotation
  
! From this traceback we can see that the exception was raised in @code{stb.adb}
! at line 5, which was reached from a procedure call in @code{stb.adb} at line
! 10, and so on. The @code{b~std.adb} is the binder file, which contains the
! call to the main program. @ref{10e,,Running gnatbind}. The remaining entries are
! assorted runtime routines and the output will vary from platform to platform.
  
  It is also possible to use @code{GDB} with these traceback addresses to debug
  the program. For example, we can break at a given code location, as reported
  in the stack traceback:
  
  @example
  $ gdb -nw stb
+ 
+ (gdb) break *0x401373
+ Breakpoint 1 at 0x401373: file stb.adb, line 5.
  @end example
  
! It is important to note that the stack traceback addresses do not change when
! debug information is included. This is particularly useful because it makes it
! possible to release software without debug information (to minimize object
! size), get a field report that includes a stack traceback whenever an internal
! bug occurs, and then be able to retrieve the sequence of calls with the same
! program compiled with debug information.
  
! However the @code{addr2line} tool does not work with Position-Independent Code
! (PIC), the historical example being Linux dynamic libraries and Windows DLLs,
! which nowadays encompasse Position-Independent Executables (PIE) on recent
! Linux and Windows versions.
! 
! In order to translate addresses the source lines with Position-Independent
! Executables on recent Linux and Windows versions, in other words without
! using the switch @code{-no-pie} during linking, you need to use the
! @code{gnatsymbolize} tool with @code{--load} instead of the @code{addr2line}
! tool. The main difference is that you need to copy the Load Address output
! in the traceback ahead of the sequence of addresses. And the default mode
! of @code{gnatsymbolize} is equivalent to that of @code{addr2line} with the above
! switches, so none of them is needed:
  
  @example
! $ gnatmake stb -g -bargs -E
! $ stb
  
! Execution of stb terminated by unhandled exception
! raised CONSTRAINT_ERROR : stb.adb:5 explicit raise
! Load address: 0x400000
! Call stack traceback locations:
! 0x401373 0x40138b 0x40139c 0x401335 0x4011c4 0x4011f1 0x77e892a4
! 
! $ gnatsymbolize --load stb 0x400000 0x401373 0x40138b 0x40139c 0x401335 \
!    0x4011c4 0x4011f1 0x77e892a4
! 
! 0x00401373 Stb.P1 at stb.adb:5
! 0x0040138B Stb.P2 at stb.adb:10
! 0x0040139C Stb at stb.adb:14
! 0x00401335 Main at b~stb.adb:197
! 0x004011c4 __tmainCRTStartup at ???
! 0x004011f1 mainCRTStartup at ???
! 0x77e892a4 ??? at ???
! @end example
  
  @subsubheading Tracebacks From Exception Occurrences
  
*************** begin
*** 19062,19078 ****
     P2;
  end STB;
  @end example
- @end quotation
- 
- This program will output:
- 
- @quotation
  
  @example
  $ stb
  
! Exception name: CONSTRAINT_ERROR
! Message: stb.adb:12
  Call stack traceback locations:
  0x4015e4 0x401633 0x401644 0x401461 0x4011c4 0x4011f1 0x77e892a4
  @end example
--- 19202,19214 ----
     P2;
  end STB;
  @end example
  
  @example
+ $ gnatmake stb -g -bargs -E -largs -no-pie
  $ stb
  
! raised CONSTRAINT_ERROR : stb.adb:12 range check failed
! Load address: 0x400000
  Call stack traceback locations:
  0x4015e4 0x401633 0x401644 0x401461 0x4011c4 0x4011f1 0x77e892a4
  @end example
*************** Call stack traceback locations:
*** 19081,19097 ****
  @subsubheading Tracebacks From Anywhere in a Program
  
  
! It is also possible to retrieve a stack traceback from anywhere in a
! program. For this you need to
! use the @code{GNAT.Traceback} API. This package includes a procedure called
! @code{Call_Chain} that computes a complete stack traceback, as well as useful
! display procedures described below. It is not necessary to use the
! @code{-E} @code{gnatbind} option in this case, because the stack traceback mechanism
! is invoked explicitly.
  
! In the following example we compute a traceback at a specific location in
! the program, and we display it using @code{GNAT.Debug_Utilities.Image} to
! convert addresses to strings:
  
  @quotation
  
--- 19217,19232 ----
  @subsubheading Tracebacks From Anywhere in a Program
  
  
! It is also possible to retrieve a stack traceback from anywhere in a program.
! For this you need to use the @code{GNAT.Traceback} API. This package includes a
! procedure called @code{Call_Chain} that computes a complete stack traceback, as
! well as useful display procedures described below. It is not necessary to use
! the @code{-E} @code{gnatbind} option in this case, because the stack traceback
! mechanism is invoked explicitly.
  
! In the following example we compute a traceback at a specific location in the
! program, and we display it using @code{GNAT.Debug_Utilities.Image} to convert
! addresses to strings:
  
  @quotation
  
*************** convert addresses to strings:
*** 19099,19110 ****
--- 19234,19250 ----
  with Ada.Text_IO;
  with GNAT.Traceback;
  with GNAT.Debug_Utilities;
+ with System;
  
  procedure STB is
  
     use Ada;
+    use Ada.Text_IO;
     use GNAT;
     use GNAT.Traceback;
+    use System;
+ 
+    LA : constant Address := Executable_Load_Address;
  
     procedure P1 is
        TB  : Tracebacks_Array (1 .. 10);
*************** procedure STB is
*** 19114,19127 ****
     begin
        Call_Chain (TB, Len);
  
!       Text_IO.Put ("In STB.P1 : ");
  
        for K in 1 .. Len loop
!          Text_IO.Put (Debug_Utilities.Image (TB (K)));
!          Text_IO.Put (' ');
        end loop;
  
!       Text_IO.New_Line;
     end P1;
  
     procedure P2 is
--- 19254,19267 ----
     begin
        Call_Chain (TB, Len);
  
!       Put ("In STB.P1 : ");
  
        for K in 1 .. Len loop
!          Put (Debug_Utilities.Image_C (TB (K)));
!          Put (' ');
        end loop;
  
!       New_Line;
     end P1;
  
     procedure P2 is
*************** procedure STB is
*** 19130,19151 ****
     end P2;
  
  begin
     P2;
  end STB;
  @end example
  
  @example
! $ gnatmake -g stb
  $ stb
  
! In STB.P1 : 16#0040_F1E4# 16#0040_14F2# 16#0040_170B# 16#0040_171C#
! 16#0040_1461# 16#0040_11C4# 16#0040_11F1# 16#77E8_92A4#
  @end example
  @end quotation
  
! You can then get further information by invoking the @code{addr2line}
! tool as described earlier (note that the hexadecimal addresses
! need to be specified in C format, with a leading ‘0x’).
  
  @geindex traceback
  @geindex symbolic
--- 19270,19296 ----
     end P2;
  
  begin
+    if LA /= Null_Address then
+       Put_Line ("Load address: " & Debug_Utilities.Image_C (LA));
+    end if;
+ 
     P2;
  end STB;
  @end example
  
  @example
! $ gnatmake stb -g
  $ stb
  
! Load address: 0x400000
! In STB.P1 : 0x40F1E4 0x4014F2 0x40170B 0x40171C 0x401461 0x4011C4 \
!   0x4011F1 0x77E892A4
  @end example
  @end quotation
  
! You can then get further information by invoking the @code{addr2line} tool or
! the @code{gnatsymbolize} tool as described earlier (note that the hexadecimal
! addresses need to be specified in C format, with a leading ‘0x’).
  
  @geindex traceback
  @geindex symbolic
*************** end STB;
*** 19203,19209 ****
  @end example
  
  @example
! $ gnatmake -g .\stb -bargs -E
  $ stb
  
  0040149F in stb.p1 at stb.adb:8
--- 19348,19354 ----
  @end example
  
  @example
! $ gnatmake -g stb -bargs -E
  $ stb
  
  0040149F in stb.p1 at stb.adb:8
*************** $ stb
*** 19217,19231 ****
  @end example
  @end quotation
  
- In the above example the @code{.\} syntax in the @code{gnatmake} command
- is currently required by @code{addr2line} for files that are in
- the current working directory.
- Moreover, the exact sequence of linker options may vary from platform
- to platform.
- The above @code{-largs} section is for Windows platforms. By contrast,
- under Unix there is no need for the @code{-largs} section.
- Differences across platforms are due to details of linker implementation.
- 
  @subsubheading Tracebacks From Anywhere in a Program
  
  
--- 19362,19367 ----
*************** It is currently supported on the followi
*** 19421,19430 ****
  @itemize *
  
  @item 
! linux x86/x86_64
  
  @item 
! windows x86
  @end itemize
  
  In order to profile a program using @code{gprof}, several steps are needed:
--- 19557,19566 ----
  @itemize *
  
  @item 
! Linux x86/x86_64
  
  @item 
! Windows x86/x86_64 (without PIE support)
  @end itemize
  
  In order to profile a program using @code{gprof}, several steps are needed:
*************** Note that only the objects that were com
*** 19483,19488 ****
--- 19619,19627 ----
  be profiled; if you need to profile your whole project, use the @code{-f}
  gnatmake switch to force full recompilation.
  
+ Note that on Windows, gprof does not support PIE. The @code{-no-pie} switch
+ should be added to the linker flags to disable this feature.
+ 
  @node Program execution,Running gprof,Compilation for profiling,Profiling an Ada Program with gprof
  @anchor{gnat_ugn/gnat_and_program_execution id23}@anchor{175}@anchor{gnat_ugn/gnat_and_program_execution program-execution}@anchor{176}
  @subsubsection Program execution
*************** or simply:
*** 19517,19523 ****
  @quotation
  
  @example
! $  gprof my_prog
  @end example
  @end quotation
  
--- 19656,19662 ----
  @quotation
  
  @example
! $ gprof my_prog
  @end example
  @end quotation
  
*************** The following is the subset of those swi
*** 19541,19547 ****
  
  @table @asis
  
! @item @code{--demangle[=@emph{style}]}, @code{--no-demangle}
  
  These options control whether symbol names should be demangled when
  printing output.  The default is to demangle C++ symbols.  The
--- 19680,19686 ----
  
  @table @asis
  
! @item @code{--demangle[=@var{style}]}, @code{--no-demangle}
  
  These options control whether symbol names should be demangled when
  printing output.  The default is to demangle C++ symbols.  The
*************** compiler, in particular Ada symbols gene
*** 19557,19565 ****
  
  @table @asis
  
! @item @code{-e @emph{function_name}}
  
! The @code{-e @emph{function}} option tells @code{gprof} not to print
  information about the function @code{function_name} (and its
  children…) in the call graph.  The function will still be listed
  as a child of any functions that call it, but its index number will be
--- 19696,19704 ----
  
  @table @asis
  
! @item @code{-e @var{function_name}}
  
! The @code{-e @var{function}} option tells @code{gprof} not to print
  information about the function @code{function_name} (and its
  children…) in the call graph.  The function will still be listed
  as a child of any functions that call it, but its index number will be
*************** option.
*** 19573,19581 ****
  
  @table @asis
  
! @item @code{-E @emph{function_name}}
  
! The @code{-E @emph{function}} option works like the @code{-e} option, but
  execution time spent in the function (and children who were not called from
  anywhere else), will not be used to compute the percentages-of-time for
  the call graph.  More than one @code{-E} option may be given; only one
--- 19712,19720 ----
  
  @table @asis
  
! @item @code{-E @var{function_name}}
  
! The @code{-E @var{function}} option works like the @code{-e} option, but
  execution time spent in the function (and children who were not called from
  anywhere else), will not be used to compute the percentages-of-time for
  the call graph.  More than one @code{-E} option may be given; only one
*************** the call graph.  More than one @code{-E}
*** 19587,19595 ****
  
  @table @asis
  
! @item @code{-f @emph{function_name}}
  
! The @code{-f @emph{function}} option causes @code{gprof} to limit the
  call graph to the function @code{function_name} and its children (and
  their children…).  More than one @code{-f} option may be given;
  only one @code{function_name} may be indicated with each @code{-f}
--- 19726,19734 ----
  
  @table @asis
  
! @item @code{-f @var{function_name}}
  
! The @code{-f @var{function}} option causes @code{gprof} to limit the
  call graph to the function @code{function_name} and its children (and
  their children…).  More than one @code{-f} option may be given;
  only one @code{function_name} may be indicated with each @code{-f}
*************** option.
*** 19601,19609 ****
  
  @table @asis
  
! @item @code{-F @emph{function_name}}
  
! The @code{-F @emph{function}} option works like the @code{-f} option, but
  only time spent in the function and its children (and their
  children…) will be used to determine total-time and
  percentages-of-time for the call graph.  More than one @code{-F} option
--- 19740,19748 ----
  
  @table @asis
  
! @item @code{-F @var{function_name}}
  
! The @code{-F @var{function}} option works like the @code{-f} option, but
  only time spent in the function and its children (and their
  children…) will be used to determine total-time and
  percentages-of-time for the call graph.  More than one @code{-F} option
*************** checks) in the program source.
*** 19770,19776 ****
  The use of pragma Restrictions allows you to control which features are
  permitted in your program. Apart from the obvious point that if you avoid
  relatively expensive features like finalization (enforceable by the use
! of pragma Restrictions (No_Finalization), the use of this pragma does not
  affect the generated code in most cases.
  
  One notable exception to this rule is that the possibility of task abort
--- 19909,19915 ----
  The use of pragma Restrictions allows you to control which features are
  permitted in your program. Apart from the obvious point that if you avoid
  relatively expensive features like finalization (enforceable by the use
! of pragma Restrictions (No_Finalization)), the use of this pragma does not
  affect the generated code in most cases.
  
  One notable exception to this rule is that the possibility of task abort
*************** You should experiment to find the best l
*** 19902,19908 ****
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
  of the optimization settings in general terms.
! See the @emph{Options That Control Optimization} section in
  @cite{Using the GNU Compiler Collection (GCC)}
  for details about
  the @code{-O} settings and a number of @code{-f} options that
--- 20041,20047 ----
  Since the precise set of optimizations done at each level will vary from
  release to release (and sometime from target to target), it is best to think
  of the optimization settings in general terms.
! See the `Options That Control Optimization' section in
  @cite{Using the GNU Compiler Collection (GCC)}
  for details about
  the @code{-O} settings and a number of @code{-f} options that
*************** individually enable or disable specific
*** 19911,19917 ****
  Unlike some other compilation systems, @code{gcc} has
  been tested extensively at all optimization levels. There are some bugs
  which appear only with optimization turned on, but there have also been
! bugs which show up only in @emph{unoptimized} code. Selecting a lower
  level of optimization does not improve the reliability of the code
  generator, which in practice is highly reliable at all optimization
  levels.
--- 20050,20056 ----
  Unlike some other compilation systems, @code{gcc} has
  been tested extensively at all optimization levels. There are some bugs
  which appear only with optimization turned on, but there have also been
! bugs which show up only in `unoptimized' code. Selecting a lower
  level of optimization does not improve the reliability of the code
  generator, which in practice is highly reliable at all optimization
  levels.
*************** These are the most common cases:
*** 19960,19966 ****
  @itemize *
  
  @item 
! @emph{The ‘hopping Program Counter’:}  Repeated @code{step} or @code{next}
  commands show
  the PC bouncing back and forth in the code.  This may result from any of
  the following optimizations:
--- 20099,20105 ----
  @itemize *
  
  @item 
! `The ‘hopping Program Counter’:'  Repeated @code{step} or @code{next}
  commands show
  the PC bouncing back and forth in the code.  This may result from any of
  the following optimizations:
*************** the following optimizations:
*** 19969,19984 ****
  @itemize -
  
  @item 
! @emph{Common subexpression elimination:} using a single instance of code for a
  quantity that the source computes several times.  As a result you
  may not be able to stop on what looks like a statement.
  
  @item 
! @emph{Invariant code motion:} moving an expression that does not change within a
  loop, to the beginning of the loop.
  
  @item 
! @emph{Instruction scheduling:} moving instructions so as to
  overlap loads and stores (typically) with other code, or in
  general to move computations of values closer to their uses. Often
  this causes you to pass an assignment statement without the assignment
--- 20108,20123 ----
  @itemize -
  
  @item 
! `Common subexpression elimination:' using a single instance of code for a
  quantity that the source computes several times.  As a result you
  may not be able to stop on what looks like a statement.
  
  @item 
! `Invariant code motion:' moving an expression that does not change within a
  loop, to the beginning of the loop.
  
  @item 
! `Instruction scheduling:' moving instructions so as to
  overlap loads and stores (typically) with other code, or in
  general to move computations of values closer to their uses. Often
  this causes you to pass an assignment statement without the assignment
*************** expected side-effects.
*** 19989,20004 ****
  @end itemize
  
  @item 
! @emph{The ‘big leap’:} More commonly known as @emph{cross-jumping}, in which
  two identical pieces of code are merged and the program counter suddenly
  jumps to a statement that is not supposed to be executed, simply because
  it (and the code following) translates to the same thing as the code
! that @emph{was} supposed to be executed.  This effect is typically seen in
  sequences that end in a jump, such as a @code{goto}, a @code{return}, or
  a @code{break} in a C @code{switch} statement.
  
  @item 
! @emph{The ‘roving variable’:} The symptom is an unexpected value in a variable.
  There are various reasons for this effect:
  
  
--- 20128,20143 ----
  @end itemize
  
  @item 
! `The ‘big leap’:' More commonly known as `cross-jumping', in which
  two identical pieces of code are merged and the program counter suddenly
  jumps to a statement that is not supposed to be executed, simply because
  it (and the code following) translates to the same thing as the code
! that `was' supposed to be executed.  This effect is typically seen in
  sequences that end in a jump, such as a @code{goto}, a @code{return}, or
  a @code{break} in a C @code{switch} statement.
  
  @item 
! `The ‘roving variable’:' The symptom is an unexpected value in a variable.
  There are various reasons for this effect:
  
  
*************** calling subprogram to verify that the va
*** 20034,20040 ****
  values (one must apply the procedure recursively to those
  other values); or re-running the code and stopping a little earlier
  (perhaps before the call) and stepping to better see how the variable obtained
! the value in question; or continuing to step @emph{from} the point of the
  strange value to see if code motion had simply moved the variable’s
  assignments later.
  @end itemize
--- 20173,20179 ----
  values (one must apply the procedure recursively to those
  other values); or re-running the code and stopping a little earlier
  (perhaps before the call) and stepping to better see how the variable obtained
! the value in question; or continuing to step `from' the point of the
  strange value to see if code motion had simply moved the variable’s
  assignments later.
  @end itemize
*************** within it; the subprogram is small and o
*** 20079,20085 ****
  specified; optimization level @code{-O3} is specified.
  @end itemize
  
! Calls to subprograms in @emph{with}ed units are normally not inlined.
  To achieve actual inlining (that is, replacement of the call by the code
  in the body of the subprogram), the following conditions must all be true:
  
--- 20218,20224 ----
  specified; optimization level @code{-O3} is specified.
  @end itemize
  
! Calls to subprograms in `with'ed units are normally not inlined.
  To achieve actual inlining (that is, replacement of the call by the code
  in the body of the subprogram), the following conditions must all be true:
  
*************** to work. Examples of switches in this ca
*** 20401,20407 ****
  and the various target-specific @code{-m} options (in particular, it has
  been observed that @code{-march=xxx} can significantly improve performance
  on appropriate machines). For full details of these switches, see
! the @emph{Submodel Options} section in the @emph{Hardware Models and Configurations}
  chapter of @cite{Using the GNU Compiler Collection (GCC)}.
  
  @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations
--- 20540,20546 ----
  and the various target-specific @code{-m} options (in particular, it has
  been observed that @code{-march=xxx} can significantly improve performance
  on appropriate machines). For full details of these switches, see
! the `Submodel Options' section in the `Hardware Models and Configurations'
  chapter of @cite{Using the GNU Compiler Collection (GCC)}.
  
  @node Optimization and Strict Aliasing,Aliased Variables and Optimization,Other Optimization Switches,Performance Considerations
*************** package p2 is
*** 20477,20487 ****
     function to_a2 (Input : a1) return a2;
  end p2;
  
! with Unchecked_Conversion;
  package body p2 is
     function to_a2 (Input : a1) return a2 is
        function to_a2u is
!         new Unchecked_Conversion (a1, a2);
     begin
        return to_a2u (Input);
     end to_a2;
--- 20616,20626 ----
     function to_a2 (Input : a1) return a2;
  end p2;
  
! with Ada.Unchecked_Conversion;
  package body p2 is
     function to_a2 (Input : a1) return a2 is
        function to_a2u is
!         new Ada.Unchecked_Conversion (a1, a2);
     begin
        return to_a2u (Input);
     end to_a2;
*************** the warning off:
*** 20580,20586 ****
  @example
  pragma Warnings (Off);
  function to_a2u is
!   new Unchecked_Conversion (a1, a2);
  pragma Warnings (On);
  @end example
  @end quotation
--- 20719,20725 ----
  @example
  pragma Warnings (Off);
  function to_a2u is
!   new Ada.Unchecked_Conversion (a1, a2);
  pragma Warnings (On);
  @end example
  @end quotation
*************** erroneous, and the compiler would be ent
*** 20693,20699 ****
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
! levels of optimzization.
  
  What the compiler does for such cases is to assume that marking
  a variable as aliased indicates that some “funny business” may
--- 20832,20838 ----
  
  However, in practice, this would cause some existing code that
  seems to work with no optimization to start failing at high
! levels of optimization.
  
  What the compiler does for such cases is to assume that marking
  a variable as aliased indicates that some “funny business” may
*************** If @code{Text_IO} must be used, note tha
*** 20844,20850 ****
  output and standard error files is unbuffered (this provides better
  behavior when output statements are used for debugging, or if the
  progress of a program is observed by tracking the output, e.g. by
! using the Unix @emph{tail -f} command to watch redirected output.
  
  If you are generating large volumes of output with @code{Text_IO} and
  performance is an important factor, use a designated file instead
--- 20983,20989 ----
  output and standard error files is unbuffered (this provides better
  behavior when output statements are used for debugging, or if the
  progress of a program is observed by tracking the output, e.g. by
! using the Unix `tail -f' command to watch redirected output).
  
  If you are generating large volumes of output with @code{Text_IO} and
  performance is an important factor, use a designated file instead
*************** To deal with the portability issue, and
*** 21144,21150 ****
  mathematical versus run-time interpretation of the expressions in
  assertions, GNAT provides comprehensive control over the handling
  of intermediate overflow. GNAT can operate in three modes, and
! furthemore, permits separate selection of operating modes for
  the expressions within assertions (here the term ‘assertions’
  is used in the technical sense, which includes preconditions and so forth)
  and for expressions appearing outside assertions.
--- 21283,21289 ----
  mathematical versus run-time interpretation of the expressions in
  assertions, GNAT provides comprehensive control over the handling
  of intermediate overflow. GNAT can operate in three modes, and
! furthermore, permits separate selection of operating modes for
  the expressions within assertions (here the term ‘assertions’
  is used in the technical sense, which includes preconditions and so forth)
  and for expressions appearing outside assertions.
*************** The three modes are:
*** 21155,21161 ****
  @itemize *
  
  @item 
! @emph{Use base type for intermediate operations} (@code{STRICT})
  
  In this mode, all intermediate results for predefined arithmetic
  operators are computed using the base type, and the result must
--- 21294,21300 ----
  @itemize *
  
  @item 
! `Use base type for intermediate operations' (@code{STRICT})
  
  In this mode, all intermediate results for predefined arithmetic
  operators are computed using the base type, and the result must
*************** enabled) or the execution is erroneous (
*** 21165,21171 ****
  This is the normal default mode.
  
  @item 
! @emph{Most intermediate overflows avoided} (@code{MINIMIZED})
  
  In this mode, the compiler attempts to avoid intermediate overflows by
  using a larger integer type, typically @code{Long_Long_Integer},
--- 21304,21310 ----
  This is the normal default mode.
  
  @item 
! `Most intermediate overflows avoided' (@code{MINIMIZED})
  
  In this mode, the compiler attempts to avoid intermediate overflows by
  using a larger integer type, typically @code{Long_Long_Integer},
*************** out of the range of @code{Long_Long_Inte
*** 21198,21209 ****
  is in range and the precondition is True (from a mathematical point
  of view). In such a case, operating in this mode, an overflow occurs
  for the intermediate computation (which is why this mode
! says @emph{most} intermediate overflows are avoided). In this case,
  an exception is raised if overflow checks are enabled, and the
  execution is erroneous if overflow checks are suppressed.
  
  @item 
! @emph{All intermediate overflows avoided} (@code{ELIMINATED})
  
  In this mode, the compiler  avoids all intermediate overflows
  by using arbitrary precision arithmetic as required. In this
--- 21337,21348 ----
  is in range and the precondition is True (from a mathematical point
  of view). In such a case, operating in this mode, an overflow occurs
  for the intermediate computation (which is why this mode
! says `most' intermediate overflows are avoided). In this case,
  an exception is raised if overflow checks are enabled, and the
  execution is erroneous if overflow checks are suppressed.
  
  @item 
! `All intermediate overflows avoided' (@code{ELIMINATED})
  
  In this mode, the compiler  avoids all intermediate overflows
  by using arbitrary precision arithmetic as required. In this
*************** version 7.0.1 of GNAT onwards.
*** 21490,21497 ****
  The GNAT-specific aspect @code{Dimension_System}
  allows you to define a system of units; the aspect @code{Dimension}
  then allows the user to declare dimensioned quantities within a given system.
! (These aspects are described in the @emph{Implementation Defined Aspects}
! chapter of the @emph{GNAT Reference Manual}).
  
  The major advantage of this model is that it does not require the declaration of
  multiple operators for all possible combinations of types: it is only necessary
--- 21629,21636 ----
  The GNAT-specific aspect @code{Dimension_System}
  allows you to define a system of units; the aspect @code{Dimension}
  then allows the user to declare dimensioned quantities within a given system.
! (These aspects are described in the `Implementation Defined Aspects'
! chapter of the `GNAT Reference Manual').
  
  The major advantage of this model is that it does not require the declaration of
  multiple operators for all possible combinations of types: it is only necessary
*************** Final velocity: 98.10 m.s**(-1)
*** 21688,21696 ****
  @geindex Dimensioned subtype
  @end quotation
  
! The type @code{Mks_Type} is said to be a @emph{dimensionable type} since it has a
  @code{Dimension_System} aspect, and the subtypes @code{Length}, @code{Mass}, etc.,
! are said to be @emph{dimensioned subtypes} since each one has a @code{Dimension}
  aspect.
  
  @quotation
--- 21827,21835 ----
  @geindex Dimensioned subtype
  @end quotation
  
! The type @code{Mks_Type} is said to be a `dimensionable type' since it has a
  @code{Dimension_System} aspect, and the subtypes @code{Length}, @code{Mass}, etc.,
! are said to be `dimensioned subtypes' since each one has a @code{Dimension}
  aspect.
  
  @quotation
*************** aspect.
*** 21704,21711 ****
  
  The @code{Dimension} aspect of a dimensioned subtype @code{S} defines a mapping
  from the base type’s Unit_Names to integer (or, more generally, rational)
! values. This mapping is the @emph{dimension vector} (also referred to as the
! @emph{dimensionality}) for that subtype, denoted by @code{DV(S)}, and thus for each
  object of that subtype. Intuitively, the value specified for each
  @code{Unit_Name} is the exponent associated with that unit; a zero value
  means that the unit is not used. For example:
--- 21843,21850 ----
  
  The @code{Dimension} aspect of a dimensioned subtype @code{S} defines a mapping
  from the base type’s Unit_Names to integer (or, more generally, rational)
! values. This mapping is the `dimension vector' (also referred to as the
! `dimensionality') for that subtype, denoted by @code{DV(S)}, and thus for each
  object of that subtype. Intuitively, the value specified for each
  @code{Unit_Name} is the exponent associated with that unit; a zero value
  means that the unit is not used. For example:
*************** dimension vectors of its components, wit
*** 21731,21764 ****
  that help prevent mismatches such as using an @code{Acceleration} where a
  @code{Length} is required.
  
! The dimension vector of the result of an arithmetic expression @emph{expr}, or
! @code{DV(@emph{expr})}, is defined as follows, assuming conventional
  mathematical definitions for the vector operations that are used:
  
  
  @itemize *
  
  @item 
! If @emph{expr} is of the type @emph{universal_real}, or is not of a dimensioned subtype,
! then @emph{expr} is dimensionless; @code{DV(@emph{expr})} is the empty vector.
  
  @item 
! @code{DV(@emph{op expr})}, where @emph{op} is a unary operator, is @code{DV(@emph{expr})}
  
  @item 
! @code{DV(@emph{expr1 op expr2})} where @emph{op} is “+” or “-” is @code{DV(@emph{expr1})}
! provided that @code{DV(@emph{expr1})} = @code{DV(@emph{expr2})}.
  If this condition is not met then the construct is illegal.
  
  @item 
! @code{DV(@emph{expr1} * @emph{expr2})} is @code{DV(@emph{expr1})} + @code{DV(@emph{expr2})},
! and @code{DV(@emph{expr1} / @emph{expr2})} = @code{DV(@emph{expr1})} - @code{DV(@emph{expr2})}.
! In this context if one of the @emph{expr}s is dimensionless then its empty
  dimension vector is treated as @code{(others => 0)}.
  
  @item 
! @code{DV(@emph{expr} ** @emph{power})} is @emph{power} * @code{DV(@emph{expr})},
! provided that @emph{power} is a static rational value. If this condition is not
  met then the construct is illegal.
  @end itemize
  
--- 21870,21903 ----
  that help prevent mismatches such as using an @code{Acceleration} where a
  @code{Length} is required.
  
! The dimension vector of the result of an arithmetic expression `expr', or
! @code{DV(@var{expr})}, is defined as follows, assuming conventional
  mathematical definitions for the vector operations that are used:
  
  
  @itemize *
  
  @item 
! If `expr' is of the type `universal_real', or is not of a dimensioned subtype,
! then `expr' is dimensionless; @code{DV(@var{expr})} is the empty vector.
  
  @item 
! @code{DV(@var{op expr})}, where `op' is a unary operator, is @code{DV(@var{expr})}
  
  @item 
! @code{DV(@var{expr1 op expr2})} where `op' is “+” or “-” is @code{DV(@var{expr1})}
! provided that @code{DV(@var{expr1})} = @code{DV(@var{expr2})}.
  If this condition is not met then the construct is illegal.
  
  @item 
! @code{DV(@var{expr1} * @var{expr2})} is @code{DV(@var{expr1})} + @code{DV(@var{expr2})},
! and @code{DV(@var{expr1} / @var{expr2})} = @code{DV(@var{expr1})} - @code{DV(@var{expr2})}.
! In this context if one of the `expr's is dimensionless then its empty
  dimension vector is treated as @code{(others => 0)}.
  
  @item 
! @code{DV(@var{expr} ** @var{power})} is `power' * @code{DV(@var{expr})},
! provided that `power' is a static rational value. If this condition is not
  met then the construct is illegal.
  @end itemize
  
*************** combine a dimensioned and dimensionless
*** 21768,21774 ****
  @code{Acceleration}.
  
  The dimensionality checks for relationals use the same rules as
! for “+” and “-“, except when comparing to a literal; thus
  
  @quotation
  
--- 21907,21913 ----
  @code{Acceleration}.
  
  The dimensionality checks for relationals use the same rules as
! for “+” and “-”, except when comparing to a literal; thus
  
  @quotation
  
*************** acc > 10.0
*** 21798,21814 ****
  is accepted with a warning. Analogously a conditional expression requires the
  same dimension vector for each branch (with no exception for literals).
  
! The dimension vector of a type conversion @code{T(@emph{expr})} is defined
  as follows, based on the nature of @code{T}:
  
  
  @itemize *
  
  @item 
! If @code{T} is a dimensioned subtype then @code{DV(T(@emph{expr}))} is @code{DV(T)}
! provided that either @emph{expr} is dimensionless or
! @code{DV(T)} = @code{DV(@emph{expr})}. The conversion is illegal
! if @emph{expr} is dimensioned and @code{DV(@emph{expr})} /= @code{DV(T)}.
  Note that vector equality does not require that the corresponding
  Unit_Names be the same.
  
--- 21937,21953 ----
  is accepted with a warning. Analogously a conditional expression requires the
  same dimension vector for each branch (with no exception for literals).
  
! The dimension vector of a type conversion @code{T(@var{expr})} is defined
  as follows, based on the nature of @code{T}:
  
  
  @itemize *
  
  @item 
! If @code{T} is a dimensioned subtype then @code{DV(T(@var{expr}))} is @code{DV(T)}
! provided that either `expr' is dimensionless or
! @code{DV(T)} = @code{DV(@var{expr})}. The conversion is illegal
! if `expr' is dimensioned and @code{DV(@var{expr})} /= @code{DV(T)}.
  Note that vector equality does not require that the corresponding
  Unit_Names be the same.
  
*************** a length in inches (with a suitable conv
*** 21820,21828 ****
  converted, for example, to a mass in pounds.
  
  @item 
! If @code{T} is the base type for @emph{expr} (and the dimensionless root type of
! the dimension system), then @code{DV(T(@emph{expr}))} is @code{DV(expr)}.
! Thus, if @emph{expr} is of a dimensioned subtype of @code{T}, the conversion may
  be regarded as a “view conversion” that preserves dimensionality.
  
  This rule makes it possible to write generic code that can be instantiated
--- 21959,21967 ----
  converted, for example, to a mass in pounds.
  
  @item 
! If @code{T} is the base type for `expr' (and the dimensionless root type of
! the dimension system), then @code{DV(T(@var{expr}))} is @code{DV(expr)}.
! Thus, if `expr' is of a dimensioned subtype of @code{T}, the conversion may
  be regarded as a “view conversion” that preserves dimensionality.
  
  This rule makes it possible to write generic code that can be instantiated
*************** dimensionality.
*** 21834,21846 ****
  
  @item 
  Otherwise (i.e., @code{T} is neither a dimensioned subtype nor a dimensionable
! base type), @code{DV(T(@emph{expr}))} is the empty vector. Thus a dimensioned
  value can be explicitly converted to a non-dimensioned subtype, which
  of course then escapes dimensionality analysis.
  @end itemize
  
! The dimension vector for a type qualification @code{T'(@emph{expr})} is the same
! as for the type conversion @code{T(@emph{expr})}.
  
  An assignment statement
  
--- 21973,21985 ----
  
  @item 
  Otherwise (i.e., @code{T} is neither a dimensioned subtype nor a dimensionable
! base type), @code{DV(T(@var{expr}))} is the empty vector. Thus a dimensioned
  value can be explicitly converted to a non-dimensioned subtype, which
  of course then escapes dimensionality analysis.
  @end itemize
  
! The dimension vector for a type qualification @code{T'(@var{expr})} is the same
! as for the type conversion @code{T(@var{expr})}.
  
  An assignment statement
  
*************** where:
*** 22014,22029 ****
  @itemize *
  
  @item 
! @emph{Index} is a number associated with each task.
  
  @item 
! @emph{Task Name} is the name of the task analyzed.
  
  @item 
! @emph{Stack Size} is the maximum size for the stack.
  
  @item 
! @emph{Stack Usage} is the measure done by the stack analyzer.
  In order to prevent overflow, the stack
  is not entirely analyzed, and it’s not possible to know exactly how
  much has actually been used.
--- 22153,22168 ----
  @itemize *
  
  @item 
! `Index' is a number associated with each task.
  
  @item 
! `Task Name' is the name of the task analyzed.
  
  @item 
! `Stack Size' is the maximum size for the stack.
  
  @item 
! `Stack Usage' is the measure done by the stack analyzer.
  In order to prevent overflow, the stack
  is not entirely analyzed, and it’s not possible to know exactly how
  much has actually been used.
*************** properly allocated memory location. Here
*** 22220,22228 ****
  @quotation
  
  @example
! with Gnat.Io; use Gnat.Io;
! with Unchecked_Deallocation;
! with Unchecked_Conversion;
  with GNAT.Debug_Pools;
  with System.Storage_Elements;
  with Ada.Exceptions; use Ada.Exceptions;
--- 22359,22367 ----
  @quotation
  
  @example
! with GNAT.IO; use GNAT.IO;
! with Ada.Unchecked_Deallocation;
! with Ada.Unchecked_Conversion;
  with GNAT.Debug_Pools;
  with System.Storage_Elements;
  with Ada.Exceptions; use Ada.Exceptions;
*************** procedure Debug_Pool_Test is
*** 22234,22241 ****
     P : GNAT.Debug_Pools.Debug_Pool;
     for T'Storage_Pool use P;
  
!    procedure Free is new Unchecked_Deallocation (Integer, T);
!    function UC is new Unchecked_Conversion (U, T);
     A, B : aliased T;
  
     procedure Info is new GNAT.Debug_Pools.Print_Info(Put_Line);
--- 22373,22380 ----
     P : GNAT.Debug_Pools.Debug_Pool;
     for T'Storage_Pool use P;
  
!    procedure Free is new Ada.Unchecked_Deallocation (Integer, T);
!    function UC is new Ada.Unchecked_Conversion (U, T);
     A, B : aliased T;
  
     procedure Info is new GNAT.Debug_Pools.Print_Info(Put_Line);
*************** Debug Pool info:
*** 22313,22320 ****
  
  
  This appendix contains information relating to the implementation
! of run-time libraries on various platforms and also covers
! topics related to the GNAT implementation on Windows and Mac OS.
  
  @menu
  * Run-Time Libraries:: 
--- 22452,22459 ----
  
  
  This appendix contains information relating to the implementation
! of run-time libraries on various platforms and also covers topics
! related to the GNAT implementation on specific Operating Systems.
  
  @menu
  * Run-Time Libraries:: 
*************** For exception handling, either or both o
*** 22354,22360 ****
  @itemize *
  
  @item 
! @strong{Zero-Cost Exceptions} (“ZCX”),
  which uses binder-generated tables that
  are interrogated at run time to locate a handler.
  
--- 22493,22499 ----
  @itemize *
  
  @item 
! `Zero-Cost Exceptions' (“ZCX”),
  which uses binder-generated tables that
  are interrogated at run time to locate a handler.
  
*************** are interrogated at run time to locate a
*** 22363,22369 ****
  @geindex SJLJ (setjmp/longjmp Exception Model)
  
  @item 
! @strong{setjmp / longjmp} (‘SJLJ’),
  which uses dynamically-set data to establish
  the set of handlers
  @end itemize
--- 22502,22508 ----
  @geindex SJLJ (setjmp/longjmp Exception Model)
  
  @item 
! `setjmp / longjmp' (‘SJLJ’),
  which uses dynamically-set data to establish
  the set of handlers
  @end itemize
*************** contain a complete source and binary sub
*** 22509,22515 ****
  below explains the differences between the different libraries in terms of
  their thread support.
  
! The default run-time library (when GNAT is installed) is @emph{rts-native}.
  This default run-time is selected by the means of soft links.
  For example on x86-linux:
  
--- 22648,22654 ----
  below explains the differences between the different libraries in terms of
  their thread support.
  
! The default run-time library (when GNAT is installed) is `rts-native'.
  This default run-time is selected by the means of soft links.
  For example on x86-linux:
  
*************** ADAINCLUDE  ADALIB      rts-native
*** 22553,22559 ****
     (Upper-case names and dotted/dashed arrows represent soft links)
  @end example
  
! If the @emph{rts-sjlj} library is to be selected on a permanent basis,
  these soft links can be modified with the following commands:
  
  @quotation
--- 22692,22698 ----
     (Upper-case names and dotted/dashed arrows represent soft links)
  @end example
  
! If the `rts-sjlj' library is to be selected on a permanent basis,
  these soft links can be modified with the following commands:
  
  @quotation
*************** have sufficient priviledge for running t
*** 22654,22660 ****
  
  
  This section describes topics that are specific to GNU/Linux platforms.
! @anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1bd}
  @menu
  * Required Packages on GNU/Linux:: 
  * A GNU/Linux Debug Quirk:: 
--- 22793,22799 ----
  
  
  This section describes topics that are specific to GNU/Linux platforms.
! 
  @menu
  * Required Packages on GNU/Linux:: 
  * A GNU/Linux Debug Quirk:: 
*************** This section describes topics that are s
*** 22662,22668 ****
  @end menu
  
  @node Required Packages on GNU/Linux,A GNU/Linux Debug Quirk,,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk}@anchor{1be}@anchor{gnat_ugn/platform_specific_information id7}@anchor{1bf}
  @subsection Required Packages on GNU/Linux
  
  
--- 22801,22807 ----
  @end menu
  
  @node Required Packages on GNU/Linux,A GNU/Linux Debug Quirk,,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information id7}@anchor{1bd}@anchor{gnat_ugn/platform_specific_information required-packages-on-gnu-linux}@anchor{1be}
  @subsection Required Packages on GNU/Linux
  
  
*************** you’ll need the 32-bit version of the
*** 22689,22694 ****
--- 22828,22836 ----
  RedHat, SUSE: @code{glibc.i686}, @code{glibc-devel.i686}, @code{ncurses-libs.i686}
  
  @item 
+ SUSE: @code{glibc-locale-base-32bit}
+ 
+ @item 
  Debian, Ubuntu: @code{libc6:i386}, @code{libc6-dev:i386}, @code{lib32ncursesw5}
  @end itemize
  
*************** Other GNU/Linux distributions might be c
*** 22696,22702 ****
  for those packages.
  
  @node A GNU/Linux Debug Quirk,,Required Packages on GNU/Linux,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information id8}@anchor{1c0}
  @subsection A GNU/Linux Debug Quirk
  
  
--- 22838,22844 ----
  for those packages.
  
  @node A GNU/Linux Debug Quirk,,Required Packages on GNU/Linux,GNU/Linux Topics
! @anchor{gnat_ugn/platform_specific_information a-gnu-linux-debug-quirk}@anchor{1bf}@anchor{gnat_ugn/platform_specific_information id8}@anchor{1c0}
  @subsection A GNU/Linux Debug Quirk
  
  
*************** on the stack by the caller from right to
*** 23210,23221 ****
  caller) is in charge of cleaning the stack on routine exit. In addition,
  the name of a routine with @code{Stdcall} calling convention is mangled by
  adding a leading underscore (as for the @code{C} calling convention) and a
! trailing @code{@@@emph{nn}}, where @code{nn} is the overall size (in
  bytes) of the parameters passed to the routine.
  
  The name to use on the Ada side when importing a C routine with a
  @code{Stdcall} calling convention is the name of the C routine. The leading
! underscore and trailing @code{@@@emph{nn}} are added automatically by
  the compiler. For instance the Win32 function:
  
  @quotation
--- 23352,23363 ----
  caller) is in charge of cleaning the stack on routine exit. In addition,
  the name of a routine with @code{Stdcall} calling convention is mangled by
  adding a leading underscore (as for the @code{C} calling convention) and a
! trailing @code{@@@var{nn}}, where @code{nn} is the overall size (in
  bytes) of the parameters passed to the routine.
  
  The name to use on the Ada side when importing a C routine with a
  @code{Stdcall} calling convention is the name of the C routine. The leading
! underscore and trailing @code{@@@var{nn}} are added automatically by
  the compiler. For instance the Win32 function:
  
  @quotation
*************** pragma Import (Stdcall, Get_Val, Link_Na
*** 23262,23271 ****
  
  then the imported routine is @code{retrieve_val}, that is, there is no
  decoration at all. No leading underscore and no Stdcall suffix
! @code{@@@emph{nn}}.
  
  This is especially important as in some special cases a DLL’s entry
! point name lacks a trailing @code{@@@emph{nn}} while the exported
  name generated for a call has it.
  
  It is also possible to import variables defined in a DLL by using an
--- 23404,23413 ----
  
  then the imported routine is @code{retrieve_val}, that is, there is no
  decoration at all. No leading underscore and no Stdcall suffix
! @code{@@@var{nn}}.
  
  This is especially important as in some special cases a DLL’s entry
! point name lacks a trailing @code{@@@var{nn}} while the exported
  name generated for a call has it.
  
  It is also possible to import variables defined in a DLL by using an
*************** EXPORTS
*** 23566,23581 ****
  
  @table @asis
  
! @item @emph{LIBRARY name}
  
  This section, which is optional, gives the name of the DLL.
  
! @item @emph{DESCRIPTION string}
  
  This section, which is optional, gives a description string that will be
  embedded in the import library.
  
! @item @emph{EXPORTS}
  
  This section gives the list of exported symbols (procedures, functions or
  variables). For instance in the case of @code{API.dll} the @code{EXPORTS}
--- 23708,23723 ----
  
  @table @asis
  
! @item `LIBRARY name'
  
  This section, which is optional, gives the name of the DLL.
  
! @item `DESCRIPTION string'
  
  This section, which is optional, gives a description string that will be
  embedded in the import library.
  
! @item `EXPORTS'
  
  This section gives the list of exported symbols (procedures, functions or
  variables). For instance in the case of @code{API.dll} the @code{EXPORTS}
*************** EXPORTS
*** 23588,23594 ****
  @end example
  @end table
  
! Note that you must specify the correct suffix (@code{@@@emph{nn}})
  (see @ref{1d2,,Windows Calling Conventions}) for a Stdcall
  calling convention function in the exported symbols list.
  
--- 23730,23736 ----
  @end example
  @end table
  
! Note that you must specify the correct suffix (@code{@@@var{nn}})
  (see @ref{1d2,,Windows Calling Conventions}) for a Stdcall
  calling convention function in the exported symbols list.
  
*************** $ dlltool API.dll -z API.def --export-al
*** 23609,23619 ****
  @end example
  
  Note that if some routines in the DLL have the @code{Stdcall} convention
! (@ref{1d2,,Windows Calling Conventions}) with stripped @code{@@@emph{nn}}
  suffix then you’ll have to edit @code{api.def} to add it, and specify
  @code{-k} to @code{gnatdll} when creating the import library.
  
! Here are some hints to find the right @code{@@@emph{nn}} suffix.
  
  
  @itemize -
--- 23751,23761 ----
  @end example
  
  Note that if some routines in the DLL have the @code{Stdcall} convention
! (@ref{1d2,,Windows Calling Conventions}) with stripped @code{@@@var{nn}}
  suffix then you’ll have to edit @code{api.def} to add it, and specify
  @code{-k} to @code{gnatdll} when creating the import library.
  
! Here are some hints to find the right @code{@@@var{nn}} suffix.
  
  
  @itemize -
*************** See the Microsoft documentation for furt
*** 23695,23702 ****
  @geindex building
  
  There is nothing specific to Windows in the build process.
! See the @emph{Library Projects} section in the @emph{GNAT Project Manager}
! chapter of the @emph{GPRbuild User’s Guide}.
  
  Due to a system limitation, it is not possible under Windows to create threads
  when inside the @code{DllMain} routine which is used for auto-initialization
--- 23837,23844 ----
  @geindex building
  
  There is nothing specific to Windows in the build process.
! See the `Library Projects' section in the `GNAT Project Manager'
! chapter of the `GPRbuild User’s Guide'.
  
  Due to a system limitation, it is not possible under Windows to create threads
  when inside the @code{DllMain} routine which is used for auto-initialization
*************** Note that a relocatable DLL stripped usi
*** 23831,23838 ****
  binutils tool will not be relocatable anymore. To build a DLL without
  debug information pass @code{-largs -s} to @code{gnatdll}. This
  restriction does not apply to a DLL built using a Library Project.
! See the @emph{Library Projects} section in the @emph{GNAT Project Manager}
! chapter of the @emph{GPRbuild User’s Guide}.
  
  @c Limitations_When_Using_Ada_DLLs_from Ada:
  
--- 23973,23980 ----
  binutils tool will not be relocatable anymore. To build a DLL without
  debug information pass @code{-largs -s} to @code{gnatdll}. This
  restriction does not apply to a DLL built using a Library Project.
! See the `Library Projects' section in the `GNAT Project Manager'
! chapter of the `GPRbuild User’s Guide'.
  
  @c Limitations_When_Using_Ada_DLLs_from Ada:
  
*************** You may specify any of the following swi
*** 24147,24153 ****
  
  @table @asis
  
! @item @code{-a[@emph{address}]}
  
  Build a non-relocatable DLL at @code{address}. If @code{address} is not
  specified the default address @code{0x11000000} will be used. By default,
--- 24289,24295 ----
  
  @table @asis
  
! @item @code{-a[`address']}
  
  Build a non-relocatable DLL at @code{address}. If @code{address} is not
  specified the default address @code{0x11000000} will be used. By default,
*************** advise the reader to build relocatable D
*** 24156,24175 ****
  
  @geindex -b (gnatdll)
  
! @item @code{-b @emph{address}}
  
  Set the relocatable DLL base address. By default the address is
  @code{0x11000000}.
  
  @geindex -bargs (gnatdll)
  
! @item @code{-bargs @emph{opts}}
  
  Binder options. Pass @code{opts} to the binder.
  
  @geindex -d (gnatdll)
  
! @item @code{-d @emph{dllfile}}
  
  @code{dllfile} is the name of the DLL. This switch must be present for
  @code{gnatdll} to do anything. The name of the generated import library is
--- 24298,24317 ----
  
  @geindex -b (gnatdll)
  
! @item @code{-b `address'}
  
  Set the relocatable DLL base address. By default the address is
  @code{0x11000000}.
  
  @geindex -bargs (gnatdll)
  
! @item @code{-bargs `opts'}
  
  Binder options. Pass @code{opts} to the binder.
  
  @geindex -d (gnatdll)
  
! @item @code{-d `dllfile'}
  
  @code{dllfile} is the name of the DLL. This switch must be present for
  @code{gnatdll} to do anything. The name of the generated import library is
*************** file used is @code{xyz.def}.
*** 24183,24189 ****
  
  @geindex -e (gnatdll)
  
! @item @code{-e @emph{deffile}}
  
  @code{deffile} is the name of the definition file.
  
--- 24325,24331 ----
  
  @geindex -e (gnatdll)
  
! @item @code{-e `deffile'}
  
  @code{deffile} is the name of the definition file.
  
*************** Help mode. Displays @code{gnatdll} switc
*** 24205,24211 ****
  
  @geindex -I (gnatdll)
  
! @item @code{-I@emph{dir}}
  
  Direct @code{gnatdll} to search the @code{dir} directory for source and
  object files needed to build the DLL.
--- 24347,24353 ----
  
  @geindex -I (gnatdll)
  
! @item @code{-I`dir'}
  
  Direct @code{gnatdll} to search the @code{dir} directory for source and
  object files needed to build the DLL.
*************** object files needed to build the DLL.
*** 24215,24230 ****
  
  @item @code{-k}
  
! Removes the @code{@@@emph{nn}} suffix from the import library’s exported
  names, but keeps them for the link names. You must specify this
  option if you want to use a @code{Stdcall} function in a DLL for which
! the @code{@@@emph{nn}} suffix has been removed. This is the case for most
  of the Windows NT DLL for example. This option has no effect when
  @code{-n} option is specified.
  
  @geindex -l (gnatdll)
  
! @item @code{-l @emph{file}}
  
  The list of ALI and object files used to build the DLL are listed in
  @code{file}, instead of being given in the command line. Each line in
--- 24357,24372 ----
  
  @item @code{-k}
  
! Removes the @code{@@@var{nn}} suffix from the import library’s exported
  names, but keeps them for the link names. You must specify this
  option if you want to use a @code{Stdcall} function in a DLL for which
! the @code{@@@var{nn}} suffix has been removed. This is the case for most
  of the Windows NT DLL for example. This option has no effect when
  @code{-n} option is specified.
  
  @geindex -l (gnatdll)
  
! @item @code{-l `file'}
  
  The list of ALI and object files used to build the DLL are listed in
  @code{file}, instead of being given in the command line. Each line in
*************** Verbose mode. Display extra information.
*** 24250,24256 ****
  
  @geindex -largs (gnatdll)
  
! @item @code{-largs @emph{opts}}
  
  Linker options. Pass @code{opts} to the linker.
  @end table
--- 24392,24398 ----
  
  @geindex -largs (gnatdll)
  
! @item @code{-largs `opts'}
  
  Linker options. Pass @code{opts} to the linker.
  @end table
*************** $ dlltool [`switches`]
*** 24384,24390 ****
  
  @table @asis
  
! @item @code{--base-file @emph{basefile}}
  
  Read the base file @code{basefile} generated by the linker. This switch
  is used to create a relocatable DLL.
--- 24526,24532 ----
  
  @table @asis
  
! @item @code{--base-file `basefile'}
  
  Read the base file @code{basefile} generated by the linker. This switch
  is used to create a relocatable DLL.
*************** is used to create a relocatable DLL.
*** 24395,24401 ****
  
  @table @asis
  
! @item @code{--def @emph{deffile}}
  
  Read the definition file.
  @end table
--- 24537,24543 ----
  
  @table @asis
  
! @item @code{--def `deffile'}
  
  Read the definition file.
  @end table
*************** Read the definition file.
*** 24405,24411 ****
  
  @table @asis
  
! @item @code{--dllname @emph{name}}
  
  Gives the name of the DLL. This switch is used to embed the name of the
  DLL in the static import library generated by @code{dlltool} with switch
--- 24547,24553 ----
  
  @table @asis
  
! @item @code{--dllname `name'}
  
  Gives the name of the DLL. This switch is used to embed the name of the
  DLL in the static import library generated by @code{dlltool} with switch
*************** DLL in the static import library generat
*** 24419,24427 ****
  
  @item @code{-k}
  
! Kill @code{@@@emph{nn}} from exported names
  (@ref{1d2,,Windows Calling Conventions}
! for a discussion about @code{Stdcall}-style symbols.
  @end table
  
  @geindex --help (dlltool)
--- 24561,24569 ----
  
  @item @code{-k}
  
! Kill @code{@@@var{nn}} from exported names
  (@ref{1d2,,Windows Calling Conventions}
! for a discussion about @code{Stdcall}-style symbols).
  @end table
  
  @geindex --help (dlltool)
*************** Prints the @code{dlltool} switches with
*** 24439,24445 ****
  
  @table @asis
  
! @item @code{--output-exp @emph{exportfile}}
  
  Generate an export file @code{exportfile}. The export file contains the
  export table (list of symbols in the DLL) and is used to create the DLL.
--- 24581,24587 ----
  
  @table @asis
  
! @item @code{--output-exp `exportfile'}
  
  Generate an export file @code{exportfile}. The export file contains the
  export table (list of symbols in the DLL) and is used to create the DLL.
*************** export table (list of symbols in the DLL
*** 24450,24456 ****
  
  @table @asis
  
! @item @code{--output-lib @emph{libfile}}
  
  Generate a static import library @code{libfile}.
  @end table
--- 24592,24598 ----
  
  @table @asis
  
! @item @code{--output-lib `libfile'}
  
  Generate a static import library @code{libfile}.
  @end table
*************** Verbose mode.
*** 24470,24476 ****
  
  @table @asis
  
! @item @code{--as @emph{assembler-name}}
  
  Use @code{assembler-name} as the assembler. The default is @code{as}.
  @end table
--- 24612,24618 ----
  
  @table @asis
  
! @item @code{--as `assembler-name'}
  
  Use @code{assembler-name} as the assembler. The default is @code{as}.
  @end table
*************** $ main
*** 24945,24951 ****
  @end example
  
  @item 
! Use the Windows @emph{Task Manager} to find the process ID. Let’s say
  that the process PID for @code{main.exe} is 208.
  
  @item 
--- 25087,25093 ----
  @end example
  
  @item 
! Use the Windows `Task Manager' to find the process ID. Let’s say
  that the process PID for @code{main.exe} is 208.
  
  @item 
*************** approach to debug a program as described
*** 24997,25003 ****
  It is possible to specify the program stack size at link time. On modern
  versions of Windows, starting with XP, this is mostly useful to set the size of
  the main stack (environment task). The other task stacks are set with pragma
! Storage_Size or with the @emph{gnatbind -d} command.
  
  Since older versions of Windows (2000, NT4, etc.) do not allow setting the
  reserve size of individual tasks, the link-time stack size applies to all
--- 25139,25145 ----
  It is possible to specify the program stack size at link time. On modern
  versions of Windows, starting with XP, this is mostly useful to set the size of
  the main stack (environment task). The other task stacks are set with pragma
! Storage_Size or with the `gnatbind -d' command.
  
  Since older versions of Windows (2000, NT4, etc.) do not allow setting the
  reserve size of individual tasks, the link-time stack size applies to all
*************** in the Unix group @code{_developer}.
*** 25246,25252 ****
  @geindex Binder output (example)
  
  This Appendix displays the source code for the output file
! generated by @emph{gnatbind} for a simple ‘Hello World’ program.
  Comments have been added for clarification purposes.
  
  @example
--- 25388,25394 ----
  @geindex Binder output (example)
  
  This Appendix displays the source code for the output file
! generated by `gnatbind' for a simple ‘Hello World’ program.
  Comments have been added for clarification purposes.
  
  @example
*************** GNAT, either automatically or with expli
*** 26025,26037 ****
  @section Elaboration Code
  
  
! Ada defines the term @emph{execution} as the process by which a construct achieves
! its run-time effect. This process is also referred to as @strong{elaboration} for
! declarations and @emph{evaluation} for expressions.
  
  The execution model in Ada allows for certain sections of an Ada program to be
  executed prior to execution of the program itself, primarily with the intent of
! initializing data. These sections are referred to as @strong{elaboration code}.
  Elaboration code is executed as follows:
  
  
--- 26167,26179 ----
  @section Elaboration Code
  
  
! Ada defines the term `execution' as the process by which a construct achieves
! its run-time effect. This process is also referred to as `elaboration' for
! declarations and `evaluation' for expressions.
  
  The execution model in Ada allows for certain sections of an Ada program to be
  executed prior to execution of the program itself, primarily with the intent of
! initializing data. These sections are referred to as `elaboration code'.
  Elaboration code is executed as follows:
  
  
*************** partition.
*** 26048,26054 ****
  @item 
  The environment task executes all elaboration code (if available) for all
  units within that partition. This code is said to be executed at
! @strong{elaboration time}.
  
  @item 
  The environment task executes the Ada program (if available) for that
--- 26190,26196 ----
  @item 
  The environment task executes all elaboration code (if available) for all
  units within that partition. This code is said to be executed at
! `elaboration time'.
  
  @item 
  The environment task executes the Ada program (if available) for that
*************** In addition to the Ada terminology, this
*** 26061,26076 ****
  @itemize *
  
  @item 
! @emph{Invocation}
  
  The act of calling a subprogram, instantiating a generic, or activating a
  task.
  
  @item 
! @emph{Scenario}
  
  A construct that is elaborated or invoked by elaboration code is referred to
! as an @emph{elaboration scenario} or simply a @strong{scenario}. GNAT recognizes the
  following scenarios:
  
  
--- 26203,26218 ----
  @itemize *
  
  @item 
! `Invocation'
  
  The act of calling a subprogram, instantiating a generic, or activating a
  task.
  
  @item 
! `Scenario'
  
  A construct that is elaborated or invoked by elaboration code is referred to
! as an `elaboration scenario' or simply a `scenario'. GNAT recognizes the
  following scenarios:
  
  
*************** Instantiations of generic templates
*** 26090,26099 ****
  @end itemize
  
  @item 
! @emph{Target}
  
! A construct elaborated by a scenario is referred to as @emph{elaboration target}
! or simply @strong{target}. GNAT recognizes the following targets:
  
  
  @itemize -
--- 26232,26241 ----
  @end itemize
  
  @item 
! `Target'
  
! A construct elaborated by a scenario is referred to as `elaboration target'
! or simply `target'. GNAT recognizes the following targets:
  
  
  @itemize -
*************** Elaboration code may appear in two disti
*** 26121,26127 ****
  @itemize *
  
  @item 
! @emph{Library level}
  
  A scenario appears at the library level when it is encapsulated by a package
  [body] compilation unit, ignoring any other package [body] declarations in
--- 26263,26269 ----
  @itemize *
  
  @item 
! `Library level'
  
  A scenario appears at the library level when it is encapsulated by a package
  [body] compilation unit, ignoring any other package [body] declarations in
*************** given above. As a result, the call to @c
*** 26145,26151 ****
  the spec of unit @code{Client} is elaborated.
  
  @item 
! @emph{Package body statements}
  
  A scenario appears within the statement sequence of a package body when it is
  bounded by the region starting from the @code{begin} keyword of the package body
--- 26287,26293 ----
  the spec of unit @code{Client} is elaborated.
  
  @item 
! `Package body statements'
  
  A scenario appears within the statement sequence of a package body when it is
  bounded by the region starting from the @code{begin} keyword of the package body
*************** elaborated.
*** 26174,26180 ****
  
  
  The sequence by which the elaboration code of all units within a partition is
! executed is referred to as @strong{elaboration order}.
  
  Within a single unit, elaboration code is executed in sequential order.
  
--- 26316,26322 ----
  
  
  The sequence by which the elaboration code of all units within a partition is
! executed is referred to as `elaboration order'.
  
  Within a single unit, elaboration code is executed in sequential order.
  
*************** factors:
*** 26238,26244 ****
  @itemize *
  
  @item 
! @emph{with}ed units
  
  @item 
  parent units
--- 26380,26386 ----
  @itemize *
  
  @item 
! `with'ed units
  
  @item 
  parent units
*************** procedure Main is begin null; end Main;
*** 26291,26297 ****
  @end quotation
  
  The following elaboration order exhibits a fundamental problem referred to as
! @emph{access-before-elaboration} or simply @strong{ABE}.
  
  @quotation
  
--- 26433,26439 ----
  @end quotation
  
  The following elaboration order exhibits a fundamental problem referred to as
! `access-before-elaboration' or simply `ABE'.
  
  @quotation
  
*************** body of Main
*** 26331,26337 ****
  
  Ada states that a total elaboration order must exist, but it does not define
  what this order is. A compiler is thus tasked with choosing a suitable
! elaboration order which satisfies the dependencies imposed by @emph{with} clauses,
  unit categorization, elaboration-control pragmas, and invocations performed in
  elaboration code. Ideally an order that avoids ABE problems should be chosen,
  however a compiler may not always find such an order due to complications with
--- 26473,26479 ----
  
  Ada states that a total elaboration order must exist, but it does not define
  what this order is. A compiler is thus tasked with choosing a suitable
! elaboration order which satisfies the dependencies imposed by `with' clauses,
  unit categorization, elaboration-control pragmas, and invocations performed in
  elaboration code. Ideally an order that avoids ABE problems should be chosen,
  however a compiler may not always find such an order due to complications with
*************** provides three lines of defense:
*** 26349,26363 ****
  @itemize *
  
  @item 
! @emph{Static semantics}
  
  Static semantic rules restrict the possible choice of elaboration order. For
! instance, if unit Client @emph{with}s unit Server, then the spec of Server is
  always elaborated prior to Client. The same principle applies to child units
  - the spec of a parent unit is always elaborated prior to the child unit.
  
  @item 
! @emph{Dynamic semantics}
  
  Dynamic checks are performed at run time, to ensure that a target is
  elaborated prior to a scenario that invokes it, thus avoiding ABE problems.
--- 26491,26505 ----
  @itemize *
  
  @item 
! `Static semantics'
  
  Static semantic rules restrict the possible choice of elaboration order. For
! instance, if unit Client `with's unit Server, then the spec of Server is
  always elaborated prior to Client. The same principle applies to child units
  - the spec of a parent unit is always elaborated prior to the child unit.
  
  @item 
! `Dynamic semantics'
  
  Dynamic checks are performed at run time, to ensure that a target is
  elaborated prior to a scenario that invokes it, thus avoiding ABE problems.
*************** restrictions apply:
*** 26368,26386 ****
  @itemize -
  
  @item 
! @emph{Restrictions on calls}
  
  An entry, operator, or subprogram can be called from elaboration code only
  when the corresponding body has been elaborated.
  
  @item 
! @emph{Restrictions on instantiations}
  
  A generic unit can be instantiated by elaboration code only when the
  corresponding body has been elaborated.
  
  @item 
! @emph{Restrictions on task activation}
  
  A task can be activated by elaboration code only when the body of the
  associated task type has been elaborated.
--- 26510,26528 ----
  @itemize -
  
  @item 
! `Restrictions on calls'
  
  An entry, operator, or subprogram can be called from elaboration code only
  when the corresponding body has been elaborated.
  
  @item 
! `Restrictions on instantiations'
  
  A generic unit can be instantiated by elaboration code only when the
  corresponding body has been elaborated.
  
  @item 
! `Restrictions on task activation'
  
  A task can be activated by elaboration code only when the body of the
  associated task type has been elaborated.
*************** associated task type has been elaborated
*** 26388,26398 ****
  
  The restrictions above can be summarized by the following rule:
  
! @emph{If a target has a body, then this body must be elaborated prior to the
! scenario that invokes the target.}
  
  @item 
! @emph{Elaboration control}
  
  Pragmas are provided for the programmer to specify the desired elaboration
  order.
--- 26530,26540 ----
  
  The restrictions above can be summarized by the following rule:
  
! `If a target has a body, then this body must be elaborated prior to the
! scenario that invokes the target.'
  
  @item 
! `Elaboration control'
  
  Pragmas are provided for the programmer to specify the desired elaboration
  order.
*************** the desired elaboration order and avoidi
*** 26410,26416 ****
  @itemize *
  
  @item 
! @emph{Packages without a body}
  
  A library package which does not require a completing body does not suffer
  from ABE problems.
--- 26552,26558 ----
  @itemize *
  
  @item 
! `Packages without a body'
  
  A library package which does not require a completing body does not suffer
  from ABE problems.
*************** any ABE problems.
*** 26437,26443 ****
  @itemize *
  
  @item 
! @emph{pragma Pure}
  
  Pragma @code{Pure} places sufficient restrictions on a unit to guarantee that no
  scenario within the unit can result in an ABE problem.
--- 26579,26585 ----
  @itemize *
  
  @item 
! `pragma Pure'
  
  Pragma @code{Pure} places sufficient restrictions on a unit to guarantee that no
  scenario within the unit can result in an ABE problem.
*************** scenario within the unit can result in a
*** 26449,26455 ****
  @itemize *
  
  @item 
! @emph{pragma Preelaborate}
  
  Pragma @code{Preelaborate} is slightly less restrictive than pragma @code{Pure},
  but still strong enough to prevent ABE problems within a unit.
--- 26591,26597 ----
  @itemize *
  
  @item 
! `pragma Preelaborate'
  
  Pragma @code{Preelaborate} is slightly less restrictive than pragma @code{Pure},
  but still strong enough to prevent ABE problems within a unit.
*************** but still strong enough to prevent ABE p
*** 26461,26467 ****
  @itemize *
  
  @item 
! @emph{pragma Elaborate_Body}
  
  Pragma @code{Elaborate_Body} requires that the body of a unit is elaborated
  immediately after its spec. This restriction guarantees that no client
--- 26603,26609 ----
  @itemize *
  
  @item 
! `pragma Elaborate_Body'
  
  Pragma @code{Elaborate_Body} requires that the body of a unit is elaborated
  immediately after its spec. This restriction guarantees that no client
*************** spec of Client
*** 26502,26508 ****
  @end example
  
  because the spec of @code{Server} must be elaborated prior to @code{Client} by
! virtue of the @emph{with} clause, and in addition the body of @code{Server} must be
  elaborated immediately after the spec of @code{Server}.
  
  Removing pragma @code{Elaborate_Body} could result in the following incorrect
--- 26644,26650 ----
  @end example
  
  because the spec of @code{Server} must be elaborated prior to @code{Client} by
! virtue of the `with' clause, and in addition the body of @code{Server} must be
  elaborated immediately after the spec of @code{Server}.
  
  Removing pragma @code{Elaborate_Body} could result in the following incorrect
*************** depend on.
*** 26533,26542 ****
  @itemize *
  
  @item 
! @emph{pragma Elaborate (Unit)}
  
  Pragma @code{Elaborate} can be placed in the context clauses of a unit, after a
! @emph{with} clause. It guarantees that both the spec and body of its argument will
  be elaborated prior to the unit with the pragma. Note that other unrelated
  units may be elaborated in between the spec and the body.
  
--- 26675,26684 ----
  @itemize *
  
  @item 
! `pragma Elaborate (Unit)'
  
  Pragma @code{Elaborate} can be placed in the context clauses of a unit, after a
! `with' clause. It guarantees that both the spec and body of its argument will
  be elaborated prior to the unit with the pragma. Note that other unrelated
  units may be elaborated in between the spec and the body.
  
*************** has not been elaborated yet.
*** 26591,26602 ****
  @itemize *
  
  @item 
! @emph{pragma Elaborate_All (Unit)}
  
  Pragma @code{Elaborate_All} is placed in the context clauses of a unit, after
! a @emph{with} clause. It guarantees that both the spec and body of its argument
  will be elaborated prior to the unit with the pragma, as well as all units
! @emph{with}ed by the spec and body of the argument, recursively. Note that other
  unrelated units may be elaborated in between the spec and the body.
  
  @example
--- 26733,26744 ----
  @itemize *
  
  @item 
! `pragma Elaborate_All (Unit)'
  
  Pragma @code{Elaborate_All} is placed in the context clauses of a unit, after
! a `with' clause. It guarantees that both the spec and body of its argument
  will be elaborated prior to the unit with the pragma, as well as all units
! `with'ed by the spec and body of the argument, recursively. Note that other
  unrelated units may be elaborated in between the spec and the body.
  
  @example
*************** elaborated yet.
*** 26682,26691 ****
  
  All pragmas shown above can be summarized by the following rule:
  
! @emph{If a client unit elaborates a server target directly or indirectly, then if
  the server unit requires a body and does not have pragma Pure, Preelaborate,
  or Elaborate_Body, then the client unit should have pragma Elaborate or
! Elaborate_All for the server unit.}
  
  If the rule outlined above is not followed, then a program may fall in one of
  the following states:
--- 26824,26833 ----
  
  All pragmas shown above can be summarized by the following rule:
  
! `If a client unit elaborates a server target directly or indirectly, then if
  the server unit requires a body and does not have pragma Pure, Preelaborate,
  or Elaborate_Body, then the client unit should have pragma Elaborate or
! Elaborate_All for the server unit.'
  
  If the rule outlined above is not followed, then a program may fall in one of
  the following states:
*************** the following states:
*** 26694,26712 ****
  @itemize *
  
  @item 
! @emph{No elaboration order exists}
  
  In this case a compiler must diagnose the situation, and refuse to build an
  executable program.
  
  @item 
! @emph{One or more incorrect elaboration orders exist}
  
  In this case a compiler can build an executable program, but
  @code{Program_Error} will be raised when the program is run.
  
  @item 
! @emph{Several elaboration orders exist, some correct, some incorrect}
  
  In this case the programmer has not controlled the elaboration order. As a
  result, a compiler may or may not pick one of the correct orders, and the
--- 26836,26854 ----
  @itemize *
  
  @item 
! `No elaboration order exists'
  
  In this case a compiler must diagnose the situation, and refuse to build an
  executable program.
  
  @item 
! `One or more incorrect elaboration orders exist'
  
  In this case a compiler can build an executable program, but
  @code{Program_Error} will be raised when the program is run.
  
  @item 
! `Several elaboration orders exist, some correct, some incorrect'
  
  In this case the programmer has not controlled the elaboration order. As a
  result, a compiler may or may not pick one of the correct orders, and the
*************** worst possible state because the program
*** 26715,26721 ****
  even another version of the same compiler.
  
  @item 
! @emph{One or more correct orders exist}
  
  In this case a compiler can build an executable program, and the program is
  run successfully. This state may be guaranteed by following the outlined
--- 26857,26863 ----
  even another version of the same compiler.
  
  @item 
! `One or more correct orders exist'
  
  In this case a compiler can build an executable program, and the program is
  run successfully. This state may be guaranteed by following the outlined
*************** elaboration order and to diagnose elabor
*** 26741,26747 ****
  @itemize *
  
  @item 
! @emph{Dynamic elaboration model}
  
  This is the most permissive of the three elaboration models and emulates the
  behavior specified by the Ada Reference Manual. When the dynamic model is in
--- 26883,26889 ----
  @itemize *
  
  @item 
! `Dynamic elaboration model'
  
  This is the most permissive of the three elaboration models and emulates the
  behavior specified by the Ada Reference Manual. When the dynamic model is in
*************** GNAT performs extensive diagnostics on a
*** 26763,26769 ****
  that invoke internal targets. In addition, GNAT generates run-time checks for
  all external targets and for all scenarios that may exhibit ABE problems.
  
! The elaboration order is obtained by honoring all @emph{with} clauses, purity and
  preelaborability of units, and elaboration-control pragmas. The dynamic model
  attempts to take all invocations in elaboration code into account. If an
  invocation leads to a circularity, GNAT ignores the invocation based on the
--- 26905,26911 ----
  that invoke internal targets. In addition, GNAT generates run-time checks for
  all external targets and for all scenarios that may exhibit ABE problems.
  
! The elaboration order is obtained by honoring all `with' clauses, purity and
  preelaborability of units, and elaboration-control pragmas. The dynamic model
  attempts to take all invocations in elaboration code into account. If an
  invocation leads to a circularity, GNAT ignores the invocation based on the
*************** The dynamic model is enabled with compil
*** 26779,26785 ****
  @itemize *
  
  @item 
! @emph{Static elaboration model}
  
  This is the middle ground of the three models. When the static model is in
  effect, GNAT makes the following assumptions:
--- 26921,26927 ----
  @itemize *
  
  @item 
! `Static elaboration model'
  
  This is the middle ground of the three models. When the static model is in
  effect, GNAT makes the following assumptions:
*************** GNAT performs extensive diagnostics on a
*** 26800,26806 ****
  that invoke internal targets. In addition, GNAT generates run-time checks for
  all external targets and for all scenarios that may exhibit ABE problems.
  
! The elaboration order is obtained by honoring all @emph{with} clauses, purity and
  preelaborability of units, presence of elaboration-control pragmas, and all
  invocations in elaboration code. An order obtained using the static model is
  guaranteed to be ABE problem-free, excluding dispatching calls and
--- 26942,26948 ----
  that invoke internal targets. In addition, GNAT generates run-time checks for
  all external targets and for all scenarios that may exhibit ABE problems.
  
! The elaboration order is obtained by honoring all `with' clauses, purity and
  preelaborability of units, presence of elaboration-control pragmas, and all
  invocations in elaboration code. An order obtained using the static model is
  guaranteed to be ABE problem-free, excluding dispatching calls and
*************** The static model is the default model in
*** 26815,26821 ****
  @itemize *
  
  @item 
! @emph{SPARK elaboration model}
  
  This is the most conservative of the three models and enforces the SPARK
  rules of elaboration as defined in the SPARK Reference Manual, section 7.7.
--- 26957,26963 ----
  @itemize *
  
  @item 
! `SPARK elaboration model'
  
  This is the most conservative of the three models and enforces the SPARK
  rules of elaboration as defined in the SPARK Reference Manual, section 7.7.
*************** The SPARK model is enabled with compiler
*** 26832,26838 ****
  @itemize *
  
  @item 
! @emph{Legacy elaboration models}
  
  In addition to the three elaboration models outlined above, GNAT provides the
  following legacy models:
--- 26974,26980 ----
  @itemize *
  
  @item 
! `Legacy elaboration models'
  
  In addition to the three elaboration models outlined above, GNAT provides the
  following legacy models:
*************** however the following rules must be obse
*** 26868,26874 ****
  @itemize *
  
  @item 
! A client unit compiled with the dynamic model can only @emph{with} a server unit
  that meets at least one of the following criteria:
  
  
--- 27010,27016 ----
  @itemize *
  
  @item 
! A client unit compiled with the dynamic model can only `with' a server unit
  that meets at least one of the following criteria:
  
  
*************** conservative, or a particular scenario m
*** 26918,26925 ****
  execution. The warnings can be suppressed selectively with @code{pragma Warnings
  (Off)} or globally with compiler switch @code{-gnatwL}.
  
! A @emph{guaranteed ABE} arises when the body of a target is not elaborated early
! enough, and causes @emph{all} scenarios that directly invoke the target to fail.
  
  @quotation
  
--- 27060,27067 ----
  execution. The warnings can be suppressed selectively with @code{pragma Warnings
  (Off)} or globally with compiler switch @code{-gnatwL}.
  
! A `guaranteed ABE' arises when the body of a target is not elaborated early
! enough, and causes `all' scenarios that directly invoke the target to fail.
  
  @quotation
  
*************** the declaration of @code{Val}. This invo
*** 26951,26958 ****
  @end example
  @end quotation
  
! A @emph{conditional ABE} arises when the body of a target is not elaborated early
! enough, and causes @emph{some} scenarios that directly invoke the target to fail.
  
  @quotation
  
--- 27093,27100 ----
  @end example
  @end quotation
  
! A `conditional ABE' arises when the body of a target is not elaborated early
! enough, and causes `some' scenarios that directly invoke the target to fail.
  
  @quotation
  
*************** rules.
*** 27041,27049 ****
  @section Elaboration Circularities
  
  
! An @strong{elaboration circularity} occurs whenever the elaboration of a set of
  units enters a deadlocked state, where each unit is waiting for another unit
! to be elaborated. This situation may be the result of improper use of @emph{with}
  clauses, elaboration-control pragmas, or invocations in elaboration code.
  
  The following example exhibits an elaboration circularity.
--- 27183,27191 ----
  @section Elaboration Circularities
  
  
! An `elaboration circularity' occurs whenever the elaboration of a set of
  units enters a deadlocked state, where each unit is waiting for another unit
! to be elaborated. This situation may be the result of improper use of `with'
  clauses, elaboration-control pragmas, or invocations in elaboration code.
  
  The following example exhibits an elaboration circularity.
*************** too much modification, especially in the
*** 27151,27157 ****
  
  When faced with an elaboration circularity, the programmer should also consider
  the tactics given in the suggestions section of the circularity diagnostic.
! Depending on the units involved in the circularity, their @emph{with} clauses,
  purity, preelaborability, presence of elaboration-control pragmas and
  invocations at elaboration time, the binder may suggest one or more of the
  following tactics to eliminate the circularity:
--- 27293,27299 ----
  
  When faced with an elaboration circularity, the programmer should also consider
  the tactics given in the suggestions section of the circularity diagnostic.
! Depending on the units involved in the circularity, their `with' clauses,
  purity, preelaborability, presence of elaboration-control pragmas and
  invocations at elaboration time, the binder may suggest one or more of the
  following tactics to eliminate the circularity:
*************** Prevents a set of units from being elabo
*** 27204,27210 ****
  
  @item 
  The removal of the pragma will not eliminate the semantic effects of the
! pragma. In other words, the argument of the pragma along with its @emph{with}
  closure will still be elaborated prior to the unit containing the pragma.
  
  @item 
--- 27346,27352 ----
  
  @item 
  The removal of the pragma will not eliminate the semantic effects of the
! pragma. In other words, the argument of the pragma along with its `with'
  closure will still be elaborated prior to the unit containing the pragma.
  
  @item 
*************** change pragma Elaborate_All for unit "..
*** 27221,27228 ****
  @end example
  
  This tactic is always suggested with the pragma @code{Elaborate_All} elimination
! tactic. It offers a different alernative of guaranteeing that the argument of
! the pragma will still be elaborated prior to the unit containing the pragma.
  
  The programmer should update the pragma as advised, and rebuild the program.
  
--- 27363,27371 ----
  @end example
  
  This tactic is always suggested with the pragma @code{Elaborate_All} elimination
! tactic. It offers a different alternative of guaranteeing that the argument
! of the pragma will still be elaborated prior to the unit containing the
! pragma.
  
  The programmer should update the pragma as advised, and rebuild the program.
  
*************** information depending on the elaboration
*** 27447,27466 ****
  @itemize -
  
  @item 
! @emph{Dynamic model}
  
  GNAT will indicate missing @code{Elaborate} and @code{Elaborate_All} pragmas for
  all library-level scenarios within the partition.
  
  @item 
! @emph{Static model}
  
  GNAT will indicate all scenarios invoked during elaboration. In addition,
  it will provide detailed traceback when an implicit @code{Elaborate} or
  @code{Elaborate_All} pragma is generated.
  
  @item 
! @emph{SPARK model}
  
  GNAT will indicate how an elaboration requirement is met by the context of
  a unit. This diagnostic requires compiler switch @code{-gnatd.v}.
--- 27590,27609 ----
  @itemize -
  
  @item 
! `Dynamic model'
  
  GNAT will indicate missing @code{Elaborate} and @code{Elaborate_All} pragmas for
  all library-level scenarios within the partition.
  
  @item 
! `Static model'
  
  GNAT will indicate all scenarios invoked during elaboration. In addition,
  it will provide detailed traceback when an implicit @code{Elaborate} or
  @code{Elaborate_All} pragma is generated.
  
  @item 
! `SPARK model'
  
  GNAT will indicate how an elaboration requirement is met by the context of
  a unit. This diagnostic requires compiler switch @code{-gnatd.v}.
*************** checks. The example above will still fai
*** 27595,27601 ****
  
  A programmer should first compile the program with the default options, using
  none of the binder or compiler switches. If the binder succeeds in finding an
! elaboration order, then apart from possible cases involing dispatching calls
  and access-to-subprogram types, the program is free of elaboration errors.
  
  If it is important for the program to be portable to compilers other than GNAT,
--- 27738,27744 ----
  
  A programmer should first compile the program with the default options, using
  none of the binder or compiler switches. If the binder succeeds in finding an
! elaboration order, then apart from possible cases involving dispatching calls
  and access-to-subprogram types, the program is free of elaboration errors.
  
  If it is important for the program to be portable to compilers other than GNAT,
*************** pre-processor) documentation for further
*** 27863,27869 ****
  
  
  @display
! @emph{Register names}@w{ }
  @display
  gcc / @code{as}: Prefix with ‘%’; for example @code{%eax}@w{ }
  Intel: No extra punctuation; for example @code{eax}@w{ }
--- 28006,28012 ----
  
  
  @display
! `Register names'@w{ }
  @display
  gcc / @code{as}: Prefix with ‘%’; for example @code{%eax}@w{ }
  Intel: No extra punctuation; for example @code{eax}@w{ }
*************** Intel: No extra punctuation; for example
*** 27874,27880 ****
  
  
  @display
! @emph{Immediate operand}@w{ }
  @display
  gcc / @code{as}: Prefix with ‘$’; for example @code{$4}@w{ }
  Intel: No extra punctuation; for example @code{4}@w{ }
--- 28017,28023 ----
  
  
  @display
! `Immediate operand'@w{ }
  @display
  gcc / @code{as}: Prefix with ‘$’; for example @code{$4}@w{ }
  Intel: No extra punctuation; for example @code{4}@w{ }
*************** Intel: No extra punctuation; for example
*** 27885,27891 ****
  
  
  @display
! @emph{Address}@w{ }
  @display
  gcc / @code{as}: Prefix with ‘$’; for example @code{$loc}@w{ }
  Intel: No extra punctuation; for example @code{loc}@w{ }
--- 28028,28034 ----
  
  
  @display
! `Address'@w{ }
  @display
  gcc / @code{as}: Prefix with ‘$’; for example @code{$loc}@w{ }
  Intel: No extra punctuation; for example @code{loc}@w{ }
*************** Intel: No extra punctuation; for example
*** 27896,27902 ****
  
  
  @display
! @emph{Memory contents}@w{ }
  @display
  gcc / @code{as}: No extra punctuation; for example @code{loc}@w{ }
  Intel: Square brackets; for example @code{[loc]}@w{ }
--- 28039,28045 ----
  
  
  @display
! `Memory contents'@w{ }
  @display
  gcc / @code{as}: No extra punctuation; for example @code{loc}@w{ }
  Intel: Square brackets; for example @code{[loc]}@w{ }
*************** Intel: Square brackets; for example @cod
*** 27907,27913 ****
  
  
  @display
! @emph{Register contents}@w{ }
  @display
  gcc / @code{as}: Parentheses; for example @code{(%eax)}@w{ }
  Intel: Square brackets; for example @code{[eax]}@w{ }
--- 28050,28056 ----
  
  
  @display
! `Register contents'@w{ }
  @display
  gcc / @code{as}: Parentheses; for example @code{(%eax)}@w{ }
  Intel: Square brackets; for example @code{[eax]}@w{ }
*************** Intel: Square brackets; for example @cod
*** 27918,27924 ****
  
  
  @display
! @emph{Hexadecimal numbers}@w{ }
  @display
  gcc / @code{as}: Leading ‘0x’ (C language syntax); for example @code{0xA0}@w{ }
  Intel: Trailing ‘h’; for example @code{A0h}@w{ }
--- 28061,28067 ----
  
  
  @display
! `Hexadecimal numbers'@w{ }
  @display
  gcc / @code{as}: Leading ‘0x’ (C language syntax); for example @code{0xA0}@w{ }
  Intel: Trailing ‘h’; for example @code{A0h}@w{ }
*************** Intel: Trailing ‘h’; for example @co
*** 27929,27935 ****
  
  
  @display
! @emph{Operand size}@w{ }
  @display
  gcc / @code{as}: Explicit in op code; for example @code{movw} to move a 16-bit word@w{ }
  Intel: Implicit, deduced by assembler; for example @code{mov}@w{ }
--- 28072,28078 ----
  
  
  @display
! `Operand size'@w{ }
  @display
  gcc / @code{as}: Explicit in op code; for example @code{movw} to move a 16-bit word@w{ }
  Intel: Implicit, deduced by assembler; for example @code{mov}@w{ }
*************** Intel: Implicit, deduced by assembler; f
*** 27940,27946 ****
  
  
  @display
! @emph{Instruction repetition}@w{ }
  @display
  gcc / @code{as}: Split into two lines; for example@w{ }
  @display
--- 28083,28089 ----
  
  
  @display
! `Instruction repetition'@w{ }
  @display
  gcc / @code{as}: Split into two lines; for example@w{ }
  @display
*************** Intel: Keep on one line; for example @co
*** 27955,27961 ****
  
  
  @display
! @emph{Order of operands}@w{ }
  @display
  gcc / @code{as}: Source first; for example @code{movw $4, %eax}@w{ }
  Intel: Destination first; for example @code{mov eax, 4}@w{ }
--- 28098,28104 ----
  
  
  @display
! `Order of operands'@w{ }
  @display
  gcc / @code{as}: Source first; for example @code{movw $4, %eax}@w{ }
  Intel: Destination first; for example @code{mov eax, 4}@w{ }
*************** end Nothing;
*** 27986,27992 ****
  @end quotation
  
  @code{Asm} is a procedure declared in package @code{System.Machine_Code};
! here it takes one parameter, a @emph{template string} that must be a static
  expression and that will form the generated instruction.
  @code{Asm} may be regarded as a compile-time procedure that parses
  the template string and additional parameters (none here),
--- 28129,28135 ----
  @end quotation
  
  @code{Asm} is a procedure declared in package @code{System.Machine_Code};
! here it takes one parameter, a `template string' that must be a static
  expression and that will form the generated instruction.
  @code{Asm} may be regarded as a compile-time procedure that parses
  the template string and additional parameters (none here),
*************** To see this output, invoke the compiler
*** 28015,28021 ****
  @quotation
  
  @example
! $  gcc -c -S -fomit-frame-pointer -gnatp nothing.adb
  @end example
  @end quotation
  
--- 28158,28164 ----
  @quotation
  
  @example
! $ gcc -c -S -fomit-frame-pointer -gnatp nothing.adb
  @end example
  @end quotation
  
*************** most useful (for the Intel x86 processor
*** 28269,28275 ****
  @multitable {xxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! @emph{=}
  
  @tab
  
--- 28412,28418 ----
  @multitable {xxxxxxxx} {xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx} 
  @item
  
! `='
  
  @tab
  
*************** output constraint
*** 28277,28283 ****
  
  @item
  
! @emph{g}
  
  @tab
  
--- 28420,28426 ----
  
  @item
  
! `g'
  
  @tab
  
*************** global (i.e., can be stored anywhere)
*** 28285,28291 ****
  
  @item
  
! @emph{m}
  
  @tab
  
--- 28428,28434 ----
  
  @item
  
! `m'
  
  @tab
  
*************** in memory
*** 28293,28299 ****
  
  @item
  
! @emph{I}
  
  @tab
  
--- 28436,28442 ----
  
  @item
  
! `I'
  
  @tab
  
*************** a constant
*** 28301,28307 ****
  
  @item
  
! @emph{a}
  
  @tab
  
--- 28444,28450 ----
  
  @item
  
! `a'
  
  @tab
  
*************** use eax
*** 28309,28315 ****
  
  @item
  
! @emph{b}
  
  @tab
  
--- 28452,28458 ----
  
  @item
  
! `b'
  
  @tab
  
*************** use ebx
*** 28317,28323 ****
  
  @item
  
! @emph{c}
  
  @tab
  
--- 28460,28466 ----
  
  @item
  
! `c'
  
  @tab
  
*************** use ecx
*** 28325,28331 ****
  
  @item
  
! @emph{d}
  
  @tab
  
--- 28468,28474 ----
  
  @item
  
! `d'
  
  @tab
  
*************** use edx
*** 28333,28339 ****
  
  @item
  
! @emph{S}
  
  @tab
  
--- 28476,28482 ----
  
  @item
  
! `S'
  
  @tab
  
*************** use esi
*** 28341,28347 ****
  
  @item
  
! @emph{D}
  
  @tab
  
--- 28484,28490 ----
  
  @item
  
! `D'
  
  @tab
  
*************** use edi
*** 28349,28355 ****
  
  @item
  
! @emph{r}
  
  @tab
  
--- 28492,28498 ----
  
  @item
  
! `r'
  
  @tab
  
*************** use one of eax, ebx, ecx or edx
*** 28357,28363 ****
  
  @item
  
! @emph{q}
  
  @tab
  
--- 28500,28506 ----
  
  @item
  
! `q'
  
  @tab
  
*************** documentation; note that it is possible
*** 28372,28378 ****
  in one constraint string.
  
  You specify the association of an output variable with an assembler operand
! through the @code{%@emph{n}} notation, where @emph{n} is a non-negative
  integer.  Thus in
  
  @quotation
--- 28515,28521 ----
  in one constraint string.
  
  You specify the association of an output variable with an assembler operand
! through the @code{%@var{n}} notation, where `n' is a non-negative
  integer.  Thus in
  
  @quotation
*************** Asm ("movl %0, %%ebx" & LF & HT &
*** 28703,28709 ****
  @end quotation
  
  The Clobber parameter is a static string expression specifying the
! register(s) you are using.  Note that register names are @emph{not} prefixed
  by a percent sign. Also, if more than one register is used then their names
  are separated by commas; e.g., @code{"eax, ebx"}
  
--- 28846,28852 ----
  @end quotation
  
  The Clobber parameter is a static string expression specifying the
! register(s) you are using.  Note that register names are `not' prefixed
  by a percent sign. Also, if more than one register is used then their names
  are separated by commas; e.g., @code{"eax, ebx"}
  
*************** Copyright  2000, 2001, 2002, 2007, 2008
*** 28768,28774 ****
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! @strong{Preamble}
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document “free” in the sense of freedom: to
--- 28911,28917 ----
  Everyone is permitted to copy and distribute verbatim copies of this
  license document, but changing it is not allowed.
  
! `Preamble'
  
  The purpose of this License is to make a manual, textbook, or other
  functional and useful document “free” in the sense of freedom: to
*************** it can be used for any textual work, reg
*** 28791,28813 ****
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
! @strong{1. APPLICABILITY AND DEFINITIONS}
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The @strong{Document}, below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as “@strong{you}”.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  
! A “@strong{Modified Version}” of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A “@strong{Secondary Section}” is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document’s overall subject
  (or to related matters) and contains nothing that could fall directly
--- 28934,28956 ----
  whether it is published as a printed book.  We recommend this License
  principally for works whose purpose is instruction or reference.
  
! `1. APPLICABILITY AND DEFINITIONS'
  
  This License applies to any manual or other work, in any medium, that
  contains a notice placed by the copyright holder saying it can be
  distributed under the terms of this License.  Such a notice grants a
  world-wide, royalty-free license, unlimited in duration, to use that
! work under the conditions stated herein.  The `Document', below,
  refers to any such manual or work.  Any member of the public is a
! licensee, and is addressed as “`you'”.  You accept the license if you
  copy, modify or distribute the work in a way requiring permission
  under copyright law.
  
! A “`Modified Version'” of the Document means any work containing the
  Document or a portion of it, either copied verbatim, or with
  modifications and/or translated into another language.
  
! A “`Secondary Section'” is a named appendix or a front-matter section of
  the Document that deals exclusively with the relationship of the
  publishers or authors of the Document to the Document’s overall subject
  (or to related matters) and contains nothing that could fall directly
*************** connection with the subject or with rela
*** 28818,28824 ****
  commercial, philosophical, ethical or political position regarding
  them.
  
! The “@strong{Invariant Sections}” are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
--- 28961,28967 ----
  commercial, philosophical, ethical or political position regarding
  them.
  
! The “`Invariant Sections'” are certain Secondary Sections whose titles
  are designated, as being those of Invariant Sections, in the notice
  that says that the Document is released under this License.  If a
  section does not fit the above definition of Secondary then it is not
*************** allowed to be designated as Invariant.
*** 28826,28837 ****
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  
! The “@strong{Cover Texts}” are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may
  be at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A “@strong{Transparent}” copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
--- 28969,28980 ----
  Invariant Sections.  If the Document does not identify any Invariant
  Sections then there are none.
  
! The “`Cover Texts'” are certain short passages of text that are listed,
  as Front-Cover Texts or Back-Cover Texts, in the notice that says that
  the Document is released under this License.  A Front-Cover Text may
  be at most 5 words, and a Back-Cover Text may be at most 25 words.
  
! A “`Transparent'” copy of the Document means a machine-readable copy,
  represented in a format whose specification is available to the
  general public, that is suitable for revising the document
  straightforwardly with generic text editors or (for images composed of
*************** to text formatters.  A copy made in an o
*** 28842,28848 ****
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not “Transparent” is called @strong{Opaque}.
  
  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
--- 28985,28991 ----
  format whose markup, or absence of markup, has been arranged to thwart
  or discourage subsequent modification by readers is not Transparent.
  An image format is not Transparent if used for any substantial amount
! of text.  A copy that is not “Transparent” is called `Opaque'.
  
  Examples of suitable formats for Transparent copies include plain
  ASCII without markup, Texinfo input format, LaTeX input format, SGML
*************** processing tools are not generally avail
*** 28855,28876 ****
  machine-generated HTML, PostScript or PDF produced by some word
  processors for output purposes only.
  
! The “@strong{Title Page}” means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, “Title Page” means
  the text near the most prominent appearance of the work’s title,
  preceding the beginning of the body of the text.
  
! The “@strong{publisher}” means any person or entity that distributes
  copies of the Document to the public.
  
! A section “@strong{Entitled XYZ}” means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as “@strong{Acknowledgements}”,
! “@strong{Dedications}”, “@strong{Endorsements}”, or “@strong{History}”.)
! To “@strong{Preserve the Title}”
  of such a section when you modify the Document means that it remains a
  section “Entitled XYZ” according to this definition.
  
--- 28998,29019 ----
  machine-generated HTML, PostScript or PDF produced by some word
  processors for output purposes only.
  
! The “`Title Page'” means, for a printed book, the title page itself,
  plus such following pages as are needed to hold, legibly, the material
  this License requires to appear in the title page.  For works in
  formats which do not have any title page as such, “Title Page” means
  the text near the most prominent appearance of the work’s title,
  preceding the beginning of the body of the text.
  
! The “`publisher'” means any person or entity that distributes
  copies of the Document to the public.
  
! A section “`Entitled XYZ'” means a named subunit of the Document whose
  title either is precisely XYZ or contains XYZ in parentheses following
  text that translates XYZ in another language.  (Here XYZ stands for a
! specific section name mentioned below, such as “`Acknowledgements'”,
! “`Dedications'”, “`Endorsements'”, or “`History'”.)
! To “`Preserve the Title'”
  of such a section when you modify the Document means that it remains a
  section “Entitled XYZ” according to this definition.
  
*************** License, but only as regards disclaiming
*** 28881,28887 ****
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
! @strong{2. VERBATIM COPYING}
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
--- 29024,29030 ----
  implication that these Warranty Disclaimers may have is void and has
  no effect on the meaning of this License.
  
! `2. VERBATIM COPYING'
  
  You may copy and distribute the Document in any medium, either
  commercially or noncommercially, provided that this License, the
*************** number of copies you must also follow th
*** 28896,28902 ****
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! @strong{3. COPYING IN QUANTITY}
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
--- 29039,29045 ----
  You may also lend copies, under the same conditions stated above, and
  you may publicly display copies.
  
! `3. COPYING IN QUANTITY'
  
  If you publish printed copies (or copies in media that commonly have
  printed covers) of the Document, numbering more than 100, and the
*************** It is requested, but not required, that
*** 28933,28939 ****
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! @strong{4. MODIFICATIONS}
  
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
--- 29076,29082 ----
  Document well before redistributing any large number of copies, to give
  them a chance to provide you with an updated version of the Document.
  
! `4. MODIFICATIONS'
  
  You may copy and distribute a Modified Version of the Document under
  the conditions of sections 2 and 3 above, provided that you release
*************** The author(s) and publisher(s) of the Do
*** 29050,29056 ****
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! @strong{5. COMBINING DOCUMENTS}
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
--- 29193,29199 ----
  give permission to use their names for publicity for or to assert or
  imply endorsement of any Modified Version.
  
! `5. COMBINING DOCUMENTS'
  
  You may combine the Document with other documents released under this
  License, under the terms defined in section 4 above for modified
*************** in the various original documents, formi
*** 29074,29080 ****
  and any sections Entitled “Dedications”.  You must delete all sections
  Entitled “Endorsements”.
  
! @strong{6. COLLECTIONS OF DOCUMENTS}
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
--- 29217,29223 ----
  and any sections Entitled “Dedications”.  You must delete all sections
  Entitled “Endorsements”.
  
! `6. COLLECTIONS OF DOCUMENTS'
  
  You may make a collection consisting of the Document and other documents
  released under this License, and replace the individual copies of this
*************** it individually under this License, prov
*** 29087,29093 ****
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! @strong{7. AGGREGATION WITH INDEPENDENT WORKS}
  
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
--- 29230,29236 ----
  License into the extracted document, and follow this License in all
  other respects regarding verbatim copying of that document.
  
! `7. AGGREGATION WITH INDEPENDENT WORKS'
  
  A compilation of the Document or its derivatives with other separate
  and independent documents or works, in or on a volume of a storage or
*************** electronic equivalent of covers if the D
*** 29106,29112 ****
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
! @strong{8. TRANSLATION}
  
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
--- 29249,29255 ----
  Otherwise they must appear on printed covers that bracket the whole
  aggregate.
  
! `8. TRANSLATION'
  
  Translation is considered a kind of modification, so you may
  distribute translations of the Document under the terms of section 4.
*************** If a section in the Document is Entitled
*** 29126,29132 ****
  its Title (section 1) will typically require changing the actual
  title.
  
! @strong{9. TERMINATION}
  
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
--- 29269,29275 ----
  its Title (section 1) will typically require changing the actual
  title.
  
! `9. TERMINATION'
  
  You may not copy, modify, sublicense, or distribute the Document
  except as expressly provided under this License.  Any attempt
*************** this License.  If your rights have been
*** 29153,29159 ****
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! @strong{10. FUTURE REVISIONS OF THIS LICENSE}
  
  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
--- 29296,29302 ----
  reinstated, receipt of a copy of some or all of the same material does
  not give you any rights to use it.
  
! `10. FUTURE REVISIONS OF THIS LICENSE'
  
  The Free Software Foundation may publish new, revised versions
  of the GNU Free Documentation License from time to time.  Such new
*************** License can be used, that proxy’s publ
*** 29174,29180 ****
  version permanently authorizes you to choose that version for the
  Document.
  
! @strong{11. RELICENSING}
  
  “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
  World Wide Web server that publishes copyrightable works and also
--- 29317,29323 ----
  version permanently authorizes you to choose that version for the
  Document.
  
! `11. RELICENSING'
  
  “Massive Multiauthor Collaboration Site” (or “MMC Site”) means any
  World Wide Web server that publishes copyrightable works and also
*************** The operator of an MMC Site may republis
*** 29203,29209 ****
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! @strong{ADDENDUM: How to use this License for your documents}
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
--- 29346,29352 ----
  under CC-BY-SA on the same site at any time before August 1, 2009,
  provided the MMC is eligible for relicensing.
  
! `ADDENDUM: How to use this License for your documents'
  
  To use this License in a document you have written, include a copy of
  the License in the document and put the following copyright and
*************** to permit their use in free software.
*** 29244,29251 ****
  
  @printindex ge
  
- @anchor{cf}@w{                              }
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
  
  @c %**end of body
  @bye
--- 29387,29394 ----
  
  @printindex ge
  
  @anchor{gnat_ugn/gnat_utility_programs switches-related-to-project-files}@w{                              }
+ @anchor{cf}@w{                              }
  
  @c %**end of body
  @bye
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatbind.adb gcc-13.1.0/gcc/ada/gnatbind.adb
*** gcc-12.2.0/gcc/ada/gnatbind.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatbind.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Switch;   use Switch;
*** 50,55 ****
--- 50,56 ----
  with Switch.B; use Switch.B;
  with Targparm; use Targparm;
  with Types;    use Types;
+ with Uintp;
  
  with System.Case_Util; use System.Case_Util;
  with System.Response_File;
*************** procedure Gnatbind is
*** 214,219 ****
--- 215,223 ----
           No_Specification_Of_Aspect      => False,
           --  Requires a parameter value, not a count
  
+          No_Task_Hierarchy_Implicit      => False,
+          --  A compiler implementation artifact, not a documented restriction
+ 
           No_Use_Of_Attribute             => False,
           --  Requires a parameter value, not a count
  
*************** begin
*** 617,622 ****
--- 621,627 ----
     --  is in some cases important.
  
     Csets.Initialize;
+    Uintp.Initialize;
     Snames.Initialize;
  
     --  Scan the switches and arguments. Note that Snames must already be
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatbind.ads gcc-13.1.0/gcc/ada/gnatbind.ads
*** gcc-12.2.0/gcc/ada/gnatbind.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatbind.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatchop.adb gcc-13.1.0/gcc/ada/gnatchop.adb
*** gcc-12.2.0/gcc/ada/gnatchop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatchop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure Gnatchop is
*** 721,727 ****
        begin
           Parse_Token (Source, Parse_Ptr, Token_Ptr);
  
!          if Source'Last  + 1 - Token_Ptr < Literal'Length
             or else
               Source (Token_Ptr .. Token_Ptr + Literal'Length - 1) /= Literal
           then
--- 721,727 ----
        begin
           Parse_Token (Source, Parse_Ptr, Token_Ptr);
  
!          if Source'Last + 1 - Token_Ptr < Literal'Length
             or else
               Source (Token_Ptr .. Token_Ptr + Literal'Length - 1) /= Literal
           then
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatclean.adb gcc-13.1.0/gcc/ada/gnatclean.adb
*** gcc-12.2.0/gcc/ada/gnatclean.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatclean.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatcmd.adb gcc-13.1.0/gcc/ada/gnatcmd.adb
*** gcc-12.2.0/gcc/ada/gnatcmd.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatcmd.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure GNATCmd is
*** 57,63 ****
        Compile,
        Check,
        Elim,
-       Find,
        Krunch,
        Link,
        List,
--- 57,62 ----
*************** procedure GNATCmd is
*** 69,78 ****
        Stack,
        Stub,
        Test,
-       Xref,
        Undefined);
  
!    subtype Real_Command_Type is Command_Type range Bind .. Xref;
     --  All real command types (excludes only Undefined).
  
     type Alternate_Command is (Comp, Ls, Kr, Pp, Prep);
--- 68,76 ----
        Stack,
        Stub,
        Test,
        Undefined);
  
!    subtype Real_Command_Type is Command_Type range Bind .. Test;
     --  All real command types (excludes only Undefined).
  
     type Alternate_Command is (Comp, Ls, Kr, Pp, Prep);
*************** procedure GNATCmd is
*** 160,170 ****
           Unixcmd  => new String'("gnatelim"),
           Unixsws  => null),
  
-       Find =>
-         (Cname    => new String'("FIND"),
-          Unixcmd  => new String'("gnatfind"),
-          Unixsws  => null),
- 
        Krunch =>
          (Cname    => new String'("KRUNCH"),
           Unixcmd  => new String'("gnatkr"),
--- 158,163 ----
*************** procedure GNATCmd is
*** 218,228 ****
        Test =>
          (Cname    => new String'("TEST"),
           Unixcmd  => new String'("gnattest"),
-          Unixsws  => null),
- 
-       Xref =>
-         (Cname    => new String'("XREF"),
-          Unixcmd  => new String'("gnatxref"),
           Unixsws  => null)
       );
  
--- 211,216 ----
*************** begin
*** 590,619 ****
           end loop;
        end if;
  
-       --  For FIND and XREF, look for switch -P. If it is specified, then
-       --  report an error indicating that the command does not support project
-       --  files.
- 
-       if The_Command in Find | Xref then
-          declare
-             Argv : String_Access;
-          begin
-             for Arg_Num in 1 .. Last_Switches.Last loop
-                Argv := Last_Switches.Table (Arg_Num);
- 
-                if Argv'Length >= 2
-                  and then Argv (Argv'First .. Argv'First + 1) = "-P"
-                then
-                   if The_Command = Find then
-                      Fail ("'gnat find -P' is not supported;");
-                   else
-                      Fail ("'gnat xref -P' is not supported;");
-                   end if;
-                end if;
-             end loop;
-          end;
-       end if;
- 
        --  Gather all the arguments and invoke the executable
  
        declare
--- 578,583 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatcmd.ads gcc-13.1.0/gcc/ada/gnatcmd.ads
*** gcc-12.2.0/gcc/ada/gnatcmd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatcmd.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatdll.adb gcc-13.1.0/gcc/ada/gnatdll.adb
*** gcc-12.2.0/gcc/ada/gnatdll.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatdll.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatfind.adb gcc-13.1.0/gcc/ada/gnatfind.adb
*** gcc-12.2.0/gcc/ada/gnatfind.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatfind.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,407 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             G N A T F I N D                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Opt;
- with Osint;    use Osint;
- with Switch;   use Switch;
- with Types;    use Types;
- with Xr_Tabls;
- with Xref_Lib; use Xref_Lib;
- 
- with Ada.Command_Line;  use Ada.Command_Line;
- with Ada.Strings.Fixed; use Ada.Strings.Fixed;
- with Ada.Text_IO;       use Ada.Text_IO;
- 
- with GNAT.Command_Line; use GNAT.Command_Line;
- 
- with System.Strings;    use System.Strings;
- 
- --------------
- -- Gnatfind --
- --------------
- 
- procedure Gnatfind is
-    Output_Ref      : Boolean := False;
-    Pattern         : Xref_Lib.Search_Pattern;
-    Local_Symbols   : Boolean := True;
-    Prj_File        : File_Name_String;
-    Prj_File_Length : Natural := 0;
-    Nb_File         : Natural := 0;
-    Usage_Error     : exception;
-    Full_Path_Name  : Boolean := False;
-    Have_Entity     : Boolean := False;
-    Wide_Search     : Boolean := True;
-    Glob_Mode       : Boolean := True;
-    Der_Info        : Boolean := False;
-    Type_Tree       : Boolean := False;
-    Read_Only       : Boolean := False;
-    Source_Lines    : Boolean := False;
- 
-    Has_File_In_Entity : Boolean := False;
-    --  Will be true if a file name was specified in the entity
- 
-    RTS_Specified : String_Access := null;
-    --  Used to detect multiple use of --RTS= switch
- 
-    EXT_Specified : String_Access := null;
-    --  Used to detect multiple use of --ext= switch
- 
-    procedure Parse_Cmd_Line;
-    --  Parse every switch on the command line
- 
-    procedure Usage;
-    --  Display the usage
- 
-    procedure Write_Usage;
-    pragma No_Return (Write_Usage);
-    --  Print a small help page for program usage and exit program
- 
-    --------------------
-    -- Parse_Cmd_Line --
-    --------------------
- 
-    procedure Parse_Cmd_Line is
- 
-       procedure Check_Version_And_Help is new Check_Version_And_Help_G (Usage);
- 
-       --  Start of processing for Parse_Cmd_Line
- 
-    begin
-       --  First check for --version or --help
- 
-       Check_Version_And_Help ("GNATFIND", "1998");
- 
-       --  Now scan the other switches
- 
-       GNAT.Command_Line.Initialize_Option_Scan;
- 
-       loop
-          case
-            GNAT.Command_Line.Getopt
-              ("a aI: aO: d e f g h I: nostdinc nostdlib p: r s t -RTS= -ext=")
-          is
-             when ASCII.NUL =>
-                exit;
- 
-             when 'a'    =>
-                if GNAT.Command_Line.Full_Switch = "a" then
-                   Read_Only := True;
-                elsif GNAT.Command_Line.Full_Switch = "aI" then
-                   Osint.Add_Src_Search_Dir (GNAT.Command_Line.Parameter);
-                else
-                   Osint.Add_Lib_Search_Dir (GNAT.Command_Line.Parameter);
-                end if;
- 
-             when 'd'    =>
-                Der_Info := True;
- 
-             when 'e'    =>
-                Glob_Mode := False;
- 
-             when 'f'    =>
-                Full_Path_Name := True;
- 
-             when 'g'    =>
-                Local_Symbols := False;
- 
-             when 'h'    =>
-                Write_Usage;
- 
-             when 'I'    =>
-                Osint.Add_Src_Search_Dir (GNAT.Command_Line.Parameter);
-                Osint.Add_Lib_Search_Dir (GNAT.Command_Line.Parameter);
- 
-             when 'n'    =>
-                if GNAT.Command_Line.Full_Switch = "nostdinc" then
-                   Opt.No_Stdinc := True;
-                elsif GNAT.Command_Line.Full_Switch = "nostdlib" then
-                   Opt.No_Stdlib := True;
-                end if;
- 
-             when 'p'    =>
-                declare
-                   S : constant String := GNAT.Command_Line.Parameter;
-                begin
-                   Prj_File_Length := S'Length;
-                   Prj_File (1 .. Prj_File_Length) := S;
-                end;
- 
-             when 'r'    =>
-                Output_Ref := True;
- 
-             when 's' =>
-                Source_Lines := True;
- 
-             when 't' =>
-                Type_Tree := True;
- 
-             --  Only switch starting with -- recognized is --RTS
- 
-             when '-' =>
-                if GNAT.Command_Line.Full_Switch = "-RTS" then
- 
-                   --  Check that it is the first time we see this switch
- 
-                   if RTS_Specified = null then
-                      RTS_Specified := new String'(GNAT.Command_Line.Parameter);
-                   elsif RTS_Specified.all /= GNAT.Command_Line.Parameter then
-                      Osint.Fail ("--RTS cannot be specified multiple times");
-                   end if;
- 
-                   Opt.No_Stdinc := True;
-                   Opt.RTS_Switch := True;
- 
-                   declare
-                      Src_Path_Name : constant String_Ptr :=
-                                        Get_RTS_Search_Dir
-                                          (GNAT.Command_Line.Parameter,
-                                           Include);
-                      Lib_Path_Name : constant String_Ptr :=
-                                        Get_RTS_Search_Dir
-                                          (GNAT.Command_Line.Parameter,
-                                           Objects);
- 
-                   begin
-                      if Src_Path_Name /= null
-                        and then Lib_Path_Name /= null
-                      then
-                         Add_Search_Dirs (Src_Path_Name, Include);
-                         Add_Search_Dirs (Lib_Path_Name, Objects);
- 
-                      elsif Src_Path_Name = null
-                        and then Lib_Path_Name = null
-                      then
-                         Osint.Fail ("RTS path not valid: missing " &
-                                       "adainclude and adalib directories");
- 
-                      elsif Src_Path_Name = null then
-                         Osint.Fail ("RTS path not valid: missing " &
-                                       "adainclude directory");
- 
-                      elsif Lib_Path_Name = null then
-                         Osint.Fail ("RTS path not valid: missing " &
-                                       "adalib directory");
-                      end if;
-                   end;
- 
-                --  Process -ext switch
- 
-                elsif GNAT.Command_Line.Full_Switch = "-ext" then
- 
-                   --  Check that it is the first time we see this switch
- 
-                   if EXT_Specified = null then
-                      EXT_Specified := new String'(GNAT.Command_Line.Parameter);
-                   elsif EXT_Specified.all /= GNAT.Command_Line.Parameter then
-                      Osint.Fail ("--ext cannot be specified multiple times");
-                   end if;
- 
-                   if
-                     EXT_Specified'Length = Osint.ALI_Default_Suffix'Length
-                   then
-                      Osint.ALI_Suffix := EXT_Specified.all'Access;
-                   else
-                      Osint.Fail ("--ext argument must have 3 characters");
-                   end if;
- 
-                end if;
- 
-             when others =>
-                Try_Help;
-                raise Usage_Error;
-          end case;
-       end loop;
- 
-       --  Get the other arguments
- 
-       loop
-          declare
-             S : constant String := GNAT.Command_Line.Get_Argument;
- 
-          begin
-             exit when S'Length = 0;
- 
-             --  First argument is the pattern
- 
-             if not Have_Entity then
-                Add_Entity (Pattern, S, Glob_Mode);
-                Have_Entity := True;
- 
-                if not Has_File_In_Entity
-                  and then Index (S, ":") /= 0
-                then
-                   Has_File_In_Entity := True;
-                end if;
- 
-             --  Next arguments are the files to search
- 
-             else
-                Add_Xref_File (S);
-                Wide_Search := False;
-                Nb_File := Nb_File + 1;
-             end if;
-          end;
-       end loop;
- 
-    exception
-       when GNAT.Command_Line.Invalid_Switch =>
-          Ada.Text_IO.Put_Line ("Invalid switch : "
-                                & GNAT.Command_Line.Full_Switch);
-          Try_Help;
-          raise Usage_Error;
- 
-       when GNAT.Command_Line.Invalid_Parameter =>
-          Ada.Text_IO.Put_Line ("Parameter missing for : "
-                                & GNAT.Command_Line.Full_Switch);
-          Try_Help;
-          raise Usage_Error;
- 
-       when Xref_Lib.Invalid_Argument =>
-          Ada.Text_IO.Put_Line ("Invalid line or column in the pattern");
-          Try_Help;
-          raise Usage_Error;
-    end Parse_Cmd_Line;
- 
-    -----------
-    -- Usage --
-    -----------
- 
-    procedure Usage is
-    begin
-       Put_Line ("Usage: gnatfind pattern[:sourcefile[:line[:column]]] "
-                 & "[file1 file2 ...]");
-       New_Line;
-       Put_Line ("  pattern     Name of the entity to look for (can have "
-                 & "wildcards)");
-       Put_Line ("  sourcefile  Only find entities referenced from this "
-                 & "file");
-       Put_Line ("  line        Only find entities referenced from this line "
-                 & "of file");
-       Put_Line ("  column      Only find entities referenced from this columns"
-                 & " of file");
-       Put_Line ("  file ...    Set of Ada source files to search for "
-                 & "references. This parameters are optional");
-       New_Line;
-       Put_Line ("gnatfind switches:");
-       Display_Usage_Version_And_Help;
-       Put_Line ("   -a        Consider all files, even when the ali file is "
-                 & "readonly");
-       Put_Line ("   -aIdir    Specify source files search path");
-       Put_Line ("   -aOdir    Specify library/object files search path");
-       Put_Line ("   -d        Output derived type information");
-       Put_Line ("   -e        Use the full regular expression set for "
-                 & "pattern");
-       Put_Line ("   -f        Output full path name");
-       Put_Line ("   -g        Output information only for global symbols");
-       Put_Line ("   -Idir     Like -aIdir -aOdir");
-       Put_Line ("   -nostdinc Don't look for sources in the system default"
-                 & " directory");
-       Put_Line ("   -nostdlib Don't look for library files in the system"
-                 & " default directory");
-       Put_Line ("   --ext=xxx Specify alternate ali file extension");
-       Put_Line ("   --RTS=dir specify the default source and object search"
-                 & " path");
-       Put_Line ("   -p file   Use file as the configuration file");
-       Put_Line ("   -r        Find all references (default to find declaration"
-                 & " only)");
-       Put_Line ("   -s        Print source line");
-       Put_Line ("   -t        Print type hierarchy");
-    end Usage;
- 
-    -----------------
-    -- Write_Usage --
-    -----------------
- 
-    procedure Write_Usage is
-    begin
-       Display_Version ("GNATFIND", "1998");
-       New_Line;
- 
-       Usage;
- 
-       raise Usage_Error;
-    end Write_Usage;
- 
- --  Start of processing for Gnatfind
- 
- begin
-    Put_Line
-      ("WARNING: gnatfind is obsolete and will be removed in the next release");
-    Put_Line
-      ("Consider using Libadalang or GNAT Studio python scripting instead");
- 
-    Parse_Cmd_Line;
- 
-    if not Have_Entity then
-       if Argument_Count = 0 then
-          Write_Usage;
-       else
-          Try_Help;
-          raise Usage_Error;
-       end if;
-    end if;
- 
-    --  Special case to speed things up: if the user has a command line of the
-    --  form 'gnatfind entity:file', i.e. has specified a file and only wants
-    --  the bodies and specs, then we can restrict the search to the .ali file
-    --  associated with 'file'.
- 
-    if Has_File_In_Entity
-      and then not Output_Ref
-    then
-       Wide_Search := False;
-    end if;
- 
-    --  Find the project file
- 
-    if Prj_File_Length = 0 then
-       Xr_Tabls.Create_Project_File (Default_Project_File ("."));
-    else
-       Xr_Tabls.Create_Project_File (Prj_File (1 .. Prj_File_Length));
-    end if;
- 
-    --  Fill up the table
- 
-    if Type_Tree and then Nb_File > 1 then
-       Ada.Text_IO.Put_Line ("Error: for type hierarchy output you must "
-                             & "specify only one file.");
-       Ada.Text_IO.New_Line;
-       Try_Help;
-       raise Usage_Error;
-    end if;
- 
-    Search (Pattern, Local_Symbols, Wide_Search, Read_Only,
-            Der_Info, Type_Tree);
- 
-    if Source_Lines then
-       Xr_Tabls.Grep_Source_Files;
-    end if;
- 
-    Print_Gnatfind (Output_Ref, Full_Path_Name);
- 
- exception
-    when Usage_Error =>
-       null;
- end Gnatfind;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatkr.adb gcc-13.1.0/gcc/ada/gnatkr.adb
*** gcc-12.2.0/gcc/ada/gnatkr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatkr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatkr.ads gcc-13.1.0/gcc/ada/gnatkr.ads
*** gcc-12.2.0/gcc/ada/gnatkr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatkr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatlink.adb gcc-13.1.0/gcc/ada/gnatlink.adb
*** gcc-12.2.0/gcc/ada/gnatlink.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatlink.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** procedure Gnatlink is
*** 407,413 ****
  
        procedure Check_Version_And_Help is new Check_Version_And_Help_G (Usage);
  
!       --  Start of processing for Process_Args
  
     begin
        --  First, check for --version and --help
--- 407,413 ----
  
        procedure Check_Version_And_Help is new Check_Version_And_Help_G (Usage);
  
!    --  Start of processing for Process_Args
  
     begin
        --  First, check for --version and --help
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatlink.ads gcc-13.1.0/gcc/ada/gnatlink.ads
*** gcc-12.2.0/gcc/ada/gnatlink.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatlink.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatls.adb gcc-13.1.0/gcc/ada/gnatls.adb
*** gcc-12.2.0/gcc/ada/gnatls.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatls.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Snames;
*** 44,49 ****
--- 44,50 ----
  with Stringt;
  with Switch;      use Switch;
  with Types;       use Types;
+ with Uintp;
  
  with GNAT.Case_Util;            use GNAT.Case_Util;
  with GNAT.Command_Line;         use GNAT.Command_Line;
*************** procedure Gnatls is
*** 188,194 ****
     --  Print usage message
  
     procedure Output_License_Information;
-    pragma No_Return (Output_License_Information);
     --  Output license statement, and if not found, output reference to COPYING
  
     function Image (Restriction : Restriction_Id) return String;
--- 189,194 ----
*************** procedure Gnatls is
*** 318,324 ****
        Write_Eol;
        Error_Msg ("wrong ALI format, can't find dependency line for $ in {");
        Exit_Program (E_Fatal);
-       return No_Sdep_Id;
     end Corresponding_Sdep_Entry;
  
     -------------------------
--- 318,323 ----
*************** procedure Gnatls is
*** 894,901 ****
                       & " for license terms.");
              Write_Eol;
        end case;
- 
-       Exit_Program (E_Success);
     end Output_License_Information;
  
     -------------------
--- 893,898 ----
*************** begin
*** 2023,2028 ****
--- 2020,2026 ----
     --  Initialize standard packages
  
     Csets.Initialize;
+    Uintp.Initialize;
     Snames.Initialize;
     Stringt.Initialize;
  
*************** begin
*** 2049,2055 ****
     if License then
        if Arg_Count = 2 then
           Output_License_Information;
-          Exit_Program (E_Success);
  
        else
           Set_Standard_Error;
--- 2047,2052 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatls.ads gcc-13.1.0/gcc/ada/gnatls.ads
*** gcc-12.2.0/gcc/ada/gnatls.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatls.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatmake.adb gcc-13.1.0/gcc/ada/gnatmake.adb
*** gcc-12.2.0/gcc/ada/gnatmake.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatmake.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatmake.ads gcc-13.1.0/gcc/ada/gnatmake.ads
*** gcc-12.2.0/gcc/ada/gnatmake.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatmake.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatname.adb gcc-13.1.0/gcc/ada/gnatname.adb
*** gcc-12.2.0/gcc/ada/gnatname.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatname.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatname.ads gcc-13.1.0/gcc/ada/gnatname.ads
*** gcc-12.2.0/gcc/ada/gnatname.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatname.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatprep.adb gcc-13.1.0/gcc/ada/gnatprep.adb
*** gcc-12.2.0/gcc/ada/gnatprep.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatprep.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatprep.ads gcc-13.1.0/gcc/ada/gnatprep.ads
*** gcc-12.2.0/gcc/ada/gnatprep.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatprep.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatvsn.adb gcc-13.1.0/gcc/ada/gnatvsn.adb
*** gcc-12.2.0/gcc/ada/gnatvsn.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatvsn.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatvsn.ads gcc-13.1.0/gcc/ada/gnatvsn.ads
*** gcc-12.2.0/gcc/ada/gnatvsn.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatvsn.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Gnatvsn is
*** 32,45 ****
     --  Static string identifying this version, that can be used as an argument
     --  to e.g. pragma Ident.
  
!    Library_Version : constant String := "12";
     --  Library version. It needs to be updated whenever the major version
     --  number is changed.
     --
     --  Note: Makefile.in uses the library version string to construct the
     --  soname value.
  
!    Current_Year : constant String := "2022";
     --  Used in printing copyright messages
  
     Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
--- 32,45 ----
     --  Static string identifying this version, that can be used as an argument
     --  to e.g. pragma Ident.
  
!    Library_Version : constant String := "13";
     --  Library version. It needs to be updated whenever the major version
     --  number is changed.
     --
     --  Note: Makefile.in uses the library version string to construct the
     --  soname value.
  
!    Current_Year : constant String := "2023";
     --  Used in printing copyright messages
  
     Verbose_Library_Version : constant String := "GNAT Lib v" & Library_Version;
diff -Nrcpad gcc-12.2.0/gcc/ada/gnatxref.adb gcc-13.1.0/gcc/ada/gnatxref.adb
*** gcc-12.2.0/gcc/ada/gnatxref.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gnatxref.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,344 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             G N A T X R E F                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Opt;
- with Osint;    use Osint;
- with Types;    use Types;
- with Switch;   use Switch;
- with Xr_Tabls;
- with Xref_Lib; use Xref_Lib;
- 
- with Ada.Command_Line;  use Ada.Command_Line;
- with Ada.Strings.Fixed;
- with Ada.Text_IO;       use Ada.Text_IO;
- 
- with GNAT.Command_Line; use GNAT.Command_Line;
- 
- with System.Strings;    use System.Strings;
- 
- procedure Gnatxref is
-    Search_Unused   : Boolean := False;
-    Local_Symbols   : Boolean := True;
-    Prj_File        : File_Name_String;
-    Prj_File_Length : Natural := 0;
-    Usage_Error     : exception;
-    Full_Path_Name  : Boolean := False;
-    Vi_Mode         : Boolean := False;
-    Read_Only       : Boolean := False;
-    Have_File       : Boolean := False;
-    Der_Info        : Boolean := False;
- 
-    RTS_Specified : String_Access := null;
-    --  Used to detect multiple use of --RTS= switch
- 
-    EXT_Specified : String_Access := null;
-    --  Used to detect multiple use of --ext= switch
- 
-    procedure Parse_Cmd_Line;
-    --  Parse every switch on the command line
- 
-    procedure Usage;
-    --  Display the usage
- 
-    procedure Write_Usage;
-    pragma No_Return (Write_Usage);
-    --  Print a small help page for program usage
- 
-    --------------------
-    -- Parse_Cmd_Line --
-    --------------------
- 
-    procedure Parse_Cmd_Line is
- 
-       procedure Check_Version_And_Help is new Check_Version_And_Help_G (Usage);
- 
-       --  Start of processing for Parse_Cmd_Line
- 
-    begin
-       --  First check for --version or --help
- 
-       Check_Version_And_Help ("GNATXREF", "1998");
- 
-       loop
-          case
-            GNAT.Command_Line.Getopt
-              ("a aI: aO: d f g h I: nostdinc nostdlib p: u v -RTS= -ext=")
-          is
-             when ASCII.NUL =>
-                exit;
- 
-             when 'a' =>
-                if GNAT.Command_Line.Full_Switch = "a" then
-                   Read_Only := True;
- 
-                elsif GNAT.Command_Line.Full_Switch = "aI" then
-                   Osint.Add_Src_Search_Dir (GNAT.Command_Line.Parameter);
- 
-                else
-                   Osint.Add_Lib_Search_Dir (GNAT.Command_Line.Parameter);
-                end if;
- 
-             when 'd' =>
-                Der_Info := True;
- 
-             when 'f' =>
-                Full_Path_Name := True;
- 
-             when 'g' =>
-                Local_Symbols := False;
- 
-             when 'h' =>
-                Write_Usage;
- 
-             when 'I' =>
-                Osint.Add_Src_Search_Dir (GNAT.Command_Line.Parameter);
-                Osint.Add_Lib_Search_Dir (GNAT.Command_Line.Parameter);
- 
-             when 'n' =>
-                if GNAT.Command_Line.Full_Switch = "nostdinc" then
-                   Opt.No_Stdinc := True;
-                elsif GNAT.Command_Line.Full_Switch = "nostdlib" then
-                   Opt.No_Stdlib := True;
-                end if;
- 
-             when 'p' =>
-                declare
-                   S : constant String := GNAT.Command_Line.Parameter;
-                begin
-                   Prj_File_Length := S'Length;
-                   Prj_File (1 .. Prj_File_Length) := S;
-                end;
- 
-             when 'u' =>
-                Search_Unused := True;
-                Vi_Mode := False;
- 
-             when 'v' =>
-                Vi_Mode := True;
-                Search_Unused := False;
- 
-             --  The only switch starting with -- recognized is --RTS
- 
-             when '-' =>
- 
-                --  Check that it is the first time we see this switch
- 
-                if Full_Switch = "-RTS" then
-                   if RTS_Specified = null then
-                      RTS_Specified := new String'(GNAT.Command_Line.Parameter);
- 
-                   elsif RTS_Specified.all /= GNAT.Command_Line.Parameter then
-                      Osint.Fail ("--RTS cannot be specified multiple times");
-                   end if;
- 
-                   Opt.No_Stdinc  := True;
-                   Opt.RTS_Switch := True;
- 
-                   declare
-                      Src_Path_Name : constant String_Ptr :=
-                                        Get_RTS_Search_Dir
-                                          (GNAT.Command_Line.Parameter,
-                                           Include);
- 
-                      Lib_Path_Name : constant String_Ptr :=
-                                        Get_RTS_Search_Dir
-                                          (GNAT.Command_Line.Parameter,
-                                           Objects);
- 
-                   begin
-                      if Src_Path_Name /= null
-                        and then Lib_Path_Name /= null
-                      then
-                         Add_Search_Dirs (Src_Path_Name, Include);
-                         Add_Search_Dirs (Lib_Path_Name, Objects);
- 
-                      elsif Src_Path_Name = null
-                        and then Lib_Path_Name = null
-                      then
-                         Osint.Fail
-                           ("RTS path not valid: missing adainclude and "
-                            & "adalib directories");
- 
-                      elsif Src_Path_Name = null then
-                         Osint.Fail
-                           ("RTS path not valid: missing adainclude directory");
- 
-                      elsif Lib_Path_Name = null then
-                         Osint.Fail
-                           ("RTS path not valid: missing adalib directory");
-                      end if;
-                   end;
- 
-                elsif GNAT.Command_Line.Full_Switch = "-ext" then
- 
-                   --  Check that it is the first time we see this switch
- 
-                   if EXT_Specified = null then
-                      EXT_Specified := new String'(GNAT.Command_Line.Parameter);
- 
-                   elsif EXT_Specified.all /= GNAT.Command_Line.Parameter then
-                      Osint.Fail ("--ext cannot be specified multiple times");
-                   end if;
- 
-                   if EXT_Specified'Length = Osint.ALI_Default_Suffix'Length
-                   then
-                      Osint.ALI_Suffix := EXT_Specified.all'Access;
-                   else
-                      Osint.Fail ("--ext argument must have 3 characters");
-                   end if;
-                end if;
- 
-             when others =>
-                Try_Help;
-                raise Usage_Error;
-          end case;
-       end loop;
- 
-       --  Get the other arguments
- 
-       loop
-          declare
-             S : constant String := GNAT.Command_Line.Get_Argument;
- 
-          begin
-             exit when S'Length = 0;
- 
-             if Ada.Strings.Fixed.Index (S, ":") /= 0 then
-                Ada.Text_IO.Put_Line
-                  ("Only file names are allowed on the command line");
-                Try_Help;
-                raise Usage_Error;
-             end if;
- 
-             Add_Xref_File (S);
-             Have_File := True;
-          end;
-       end loop;
- 
-    exception
-       when GNAT.Command_Line.Invalid_Switch =>
-          Ada.Text_IO.Put_Line ("Invalid switch : "
-                                & GNAT.Command_Line.Full_Switch);
-          Try_Help;
-          raise Usage_Error;
- 
-       when GNAT.Command_Line.Invalid_Parameter =>
-          Ada.Text_IO.Put_Line ("Parameter missing for : "
-                                & GNAT.Command_Line.Full_Switch);
-          Try_Help;
-          raise Usage_Error;
-    end Parse_Cmd_Line;
- 
-    -----------
-    -- Usage --
-    -----------
- 
-    procedure Usage is
-    begin
-       Put_Line ("Usage: gnatxref [switches] file1 file2 ...");
-       New_Line;
-       Put_Line ("  file ... list of source files to xref, " &
-                 "including with'ed units");
-       New_Line;
-       Put_Line ("gnatxref switches:");
-       Display_Usage_Version_And_Help;
-       Put_Line ("   -a        Consider all files, even when the ali file is"
-                 & " readonly");
-       Put_Line ("   -aIdir    Specify source files search path");
-       Put_Line ("   -aOdir    Specify library/object files search path");
-       Put_Line ("   -d        Output derived type information");
-       Put_Line ("   -f        Output full path name");
-       Put_Line ("   -g        Output information only for global symbols");
-       Put_Line ("   -Idir     Like -aIdir -aOdir");
-       Put_Line ("   -nostdinc Don't look for sources in the system default"
-                 & " directory");
-       Put_Line ("   -nostdlib Don't look for library files in the system"
-                 & " default directory");
-       Put_Line ("   --ext=xxx Specify alternate ali file extension");
-       Put_Line ("   --RTS=dir specify the default source and object search"
-                 & " path");
-       Put_Line ("   -p file   Use file as the configuration file");
-       Put_Line ("   -u        List unused entities");
-       Put_Line ("   -v        Print a 'tags' file for vi");
-       New_Line;
- 
-    end Usage;
- 
-    -----------------
-    -- Write_Usage --
-    -----------------
- 
-    procedure Write_Usage is
-    begin
-       Display_Version ("GNATXREF", "1998");
-       New_Line;
-       Usage;
-       raise Usage_Error;
-    end Write_Usage;
- 
- begin
-    Put_Line
-      ("WARNING: gnatxref is obsolete and will be removed in the next release");
-    Put_Line
-      ("Consider using Libadalang or GNAT Studio python scripting instead");
- 
-    Parse_Cmd_Line;
- 
-    if not Have_File then
-       if Argument_Count = 0 then
-          Write_Usage;
-       else
-          Try_Help;
-          raise Usage_Error;
-       end if;
-    end if;
- 
-    Xr_Tabls.Set_Default_Match (True);
- 
-    --  Find the project file
- 
-    if Prj_File_Length = 0 then
-       Xr_Tabls.Create_Project_File
-         (Default_Project_File (Osint.To_Host_Dir_Spec (".", False).all));
-    else
-       Xr_Tabls.Create_Project_File (Prj_File (1 .. Prj_File_Length));
-    end if;
- 
-    --  Fill up the table
- 
-    Search_Xref (Local_Symbols, Read_Only, Der_Info);
- 
-    if Search_Unused then
-       Print_Unused (Full_Path_Name);
-    elsif Vi_Mode then
-       Print_Vi (Full_Path_Name);
-    else
-       Print_Xref (Full_Path_Name);
-    end if;
- 
- exception
-    when Usage_Error =>
-       null;
- end Gnatxref;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/gprep.adb gcc-13.1.0/gcc/ada/gprep.adb
*** gcc-12.2.0/gcc/ada/gprep.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gprep.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Snames;
*** 37,42 ****
--- 37,43 ----
  with Stringt;  use Stringt;
  with Switch;   use Switch;
  with Types;    use Types;
+ with Uintp;
  
  with Ada.Command_Line; use Ada.Command_Line;
  with Ada.Text_IO;      use Ada.Text_IO;
*************** package body GPrep is
*** 92,99 ****
     procedure Display_Copyright;
     --  Display the copyright notice
  
!    procedure Post_Scan;
!    --  Null procedure, needed by instantiation of Scng below
  
     package Scanner is new Scng
       (Post_Scan,
--- 93,100 ----
     procedure Display_Copyright;
     --  Display the copyright notice
  
!    procedure Post_Scan is null;
!    --  Needed by instantiation of Scng below
  
     package Scanner is new Scng
       (Post_Scan,
*************** package body GPrep is
*** 169,174 ****
--- 170,176 ----
        --  Do some initializations (order is important here)
  
        Csets.Initialize;
+       Uintp.Initialize;
        Snames.Initialize;
        Stringt.Initialize;
        Prep.Initialize;
*************** package body GPrep is
*** 325,339 ****
        New_Line (Outfile.all);
     end New_EOL_To_Outfile;
  
-    ---------------
-    -- Post_Scan --
-    ---------------
- 
-    procedure Post_Scan is
-    begin
-       null;
-    end Post_Scan;
- 
     ----------------------------
     -- Preprocess_Infile_Name --
     ----------------------------
--- 327,332 ----
*************** package body GPrep is
*** 729,735 ****
  
        procedure Check_Version_And_Help is new Check_Version_And_Help_G (Usage);
  
!       --  Start of processing for Scan_Command_Line
  
     begin
        --  First check for --version or --help
--- 722,728 ----
  
        procedure Check_Version_And_Help is new Check_Version_And_Help_G (Usage);
  
!    --  Start of processing for Scan_Command_Line
  
     begin
        --  First check for --version or --help
diff -Nrcpad gcc-12.2.0/gcc/ada/gprep.ads gcc-13.1.0/gcc/ada/gprep.ads
*** gcc-12.2.0/gcc/ada/gprep.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gprep.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/gsocket.h gcc-13.1.0/gcc/ada/gsocket.h
*** gcc-12.2.0/gcc/ada/gsocket.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/gsocket.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *         Copyright (C) 2004-2022, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *         Copyright (C) 2004-2023, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 80,91 ****
  #define FD_SETSIZE 1024
  
  #ifdef __MINGW32__
- /* winsock2.h allows WSAPoll related definitions only when
-  * _WIN32_WINNT >= 0x0600 */
- #if !defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600
- #define _WIN32_WINNT 0x0600
- #endif
- 
  #include <winsock2.h>
  #include <ws2tcpip.h>
  #include <versionhelpers.h>
--- 80,85 ----
***************
*** 173,178 ****
--- 167,173 ----
  
  #endif
  
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  
  #elif defined(VMS)
diff -Nrcpad gcc-12.2.0/gcc/ada/hostparm.ads gcc-13.1.0/gcc/ada/hostparm.ads
*** gcc-12.2.0/gcc/ada/hostparm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/hostparm.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/impunit.adb gcc-13.1.0/gcc/ada/impunit.adb
*** gcc-12.2.0/gcc/ada/impunit.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/impunit.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2000-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2000-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Impunit is
*** 241,246 ****
--- 241,247 ----
      ("g-arrspl", F),  -- GNAT.Array_Split
      ("g-awk   ", F),  -- GNAT.AWK
      ("g-binenv", F),  -- GNAT.Bind_Environment
+     ("g-binsea", F),  -- GNAT.Binary_Search
      ("g-boubuf", F),  -- GNAT.Bounded_Buffers
      ("g-boumai", F),  -- GNAT.Bounded_Mailboxes
      ("g-brapre", F),  -- GNAT.Branch_Prediction
*************** package body Impunit is
*** 278,283 ****
--- 279,285 ----
      ("g-exptty", F),  -- GNAT.Expect.TTY
      ("g-flocon", F),  -- GNAT.Float_Control
      ("g-forstr", F),  -- GNAT.Formatted_String
+     ("g-gfmafu", F),  -- GNAT.Generic_Fast_Math_Functions
      ("g-graphs", F),  -- GNAT.Graphs
      ("g-heasor", F),  -- GNAT.Heap_Sort
      ("g-hesora", F),  -- GNAT.Heap_Sort_A
*************** package body Impunit is
*** 603,619 ****
     -- GNAT Defined Additions to Ada 2012 --
     ----------------------------------------
  
-     ("a-cfinve", F),  -- Ada.Containers.Formal_Indefinite_Vectors
      ("a-coboho", F),  -- Ada.Containers.Bounded_Holders
-     ("a-cofove", F),  -- Ada.Containers.Formal_Vectors
-     ("a-cofuma", F),  -- Ada.Containers.Functional_Maps
-     ("a-cofuse", F),  -- Ada.Containers.Functional_Sets
-     ("a-cofuve", F),  -- Ada.Containers.Functional_Vectors
-     ("a-cfdlli", F),  -- Ada.Containers.Formal_Doubly_Linked_Lists
-     ("a-cforse", F),  -- Ada.Containers.Formal_Ordered_Sets
-     ("a-cforma", F),  -- Ada.Containers.Formal_Ordered_Maps
-     ("a-cfhase", F),  -- Ada.Containers.Formal_Hashed_Sets
-     ("a-cfhama", F),  -- Ada.Containers.Formal_Hashed_Maps
      ("a-cvgpso", F)   -- Ada.Containers.Vectors.Generic_Parallel_Sorting from
     );                 -- GNATCOLL.OMP
  
--- 605,611 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/impunit.ads gcc-13.1.0/gcc/ada/impunit.ads
*** gcc-12.2.0/gcc/ada/impunit.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/impunit.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/indepsw-aix.adb gcc-13.1.0/gcc/ada/indepsw-aix.adb
*** gcc-12.2.0/gcc/ada/indepsw-aix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/indepsw-aix.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                              (AIX version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                              (AIX version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/indepsw-darwin.adb gcc-13.1.0/gcc/ada/indepsw-darwin.adb
*** gcc-12.2.0/gcc/ada/indepsw-darwin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/indepsw-darwin.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                            (Darwin version)                              --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                            (Darwin version)                              --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/indepsw-gnu.adb gcc-13.1.0/gcc/ada/indepsw-gnu.adb
*** gcc-12.2.0/gcc/ada/indepsw-gnu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/indepsw-gnu.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                              (GNU version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                              (GNU version)                               --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/indepsw.adb gcc-13.1.0/gcc/ada/indepsw.adb
*** gcc-12.2.0/gcc/ada/indepsw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/indepsw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/indepsw.ads gcc-13.1.0/gcc/ada/indepsw.ads
*** gcc-12.2.0/gcc/ada/indepsw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/indepsw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/init.c gcc-13.1.0/gcc/ada/init.c
*** gcc-12.2.0/gcc/ada/init.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/init.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern size_t vxIntStackOverflowSize;
*** 1758,1765 ****
  #define INT_OVERFLOW_SIZE vxIntStackOverflowSize
  #endif
  
! #ifdef VTHREADS
! #include "private/vThreadsP.h"
  #endif
  
  #ifndef __RTP__
--- 1758,1783 ----
  #define INT_OVERFLOW_SIZE vxIntStackOverflowSize
  #endif
  
! /* VxWorks 653 vThreads expects the field excCnt to be zeroed when a signal is.
!    handled.  The VxWorks version of longjmp does this; GCC's builtin_longjmp
!    doesn't.  A similar issue is present VxWorks 7.2 and affects ZCX as well
!    as builtin_longjmp.  This field only exists in Kernel mode, not RTP.  */
! #if defined(VTHREADS) || (!defined(__RTP__) && (_WRS_VXWORKS_MAJOR >= 7))
! # ifdef VTHREADS
! #  include "private/vThreadsP.h"
! #  define EXCCNT vThreads.excCnt
! # else
! #  include "private/taskLibP.h"
! #  define EXCCNT excCnt
! # endif
! # define CLEAR_EXCEPTION_COUNT()			 \
!   do							 \
!     {							 \
!       WIND_TCB *currentTask = (WIND_TCB *) taskIdSelf(); \
!       currentTask->EXCCNT = 0;				 \
!     } while (0)
! #else
! # define CLEAR_EXCEPTION_COUNT()
  #endif
  
  #ifndef __RTP__
*************** __gnat_reset_guard_page (int sig)
*** 1835,1853 ****
    return FALSE;
  }
  
- /* VxWorks 653 vThreads expects the field excCnt to be zeroed when a signal is.
-    handled. The VxWorks version of longjmp does this; GCC's builtin_longjmp
-    doesn't.  */
- void
- __gnat_clear_exception_count (void)
- {
- #ifdef VTHREADS
-   WIND_TCB *currentTask = (WIND_TCB *) taskIdSelf();
- 
-   currentTask->vThreads.excCnt = 0;
- #endif
- }
- 
  /* Handle different SIGnal to exception mappings in different VxWorks
     versions.  */
  void
--- 1853,1858 ----
*************** __gnat_map_signal (int sig,
*** 1959,1965 ****
            break;
          }
      }
!   __gnat_clear_exception_count ();
    Raise_From_Signal_Handler (exception, msg);
  }
  
--- 1964,1971 ----
            break;
          }
      }
! 
!   CLEAR_EXCEPTION_COUNT ();
    Raise_From_Signal_Handler (exception, msg);
  }
  
*************** __gnat_install_handler (void)
*** 2554,2559 ****
--- 2560,2598 ----
  #include <errno.h>
  #include "sigtramp.h"
  
+ #if defined (__ARMEL__) && !defined (__aarch64__)
+ 
+ /* ARM-QNX case with arm unwinding exceptions */
+ #define HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
+ 
+ #include <ucontext.h>
+ #include <arm/cpu.h>
+ #include <stdint.h>
+ 
+ void
+ __gnat_adjust_context_for_raise (int signo ATTRIBUTE_UNUSED,
+ 				 void *sc ATTRIBUTE_UNUSED)
+ {
+   /* In case of ARM exceptions, the registers context have the PC pointing
+      to the instruction that raised the signal.  However the unwinder expects
+      the instruction to be in the range [PC+2,PC+3].  */
+   uintptr_t *pc_addr;
+   mcontext_t *mcontext = &((ucontext_t *) sc)->uc_mcontext;
+   pc_addr = (uintptr_t *)&mcontext->cpu.gpr [ARM_REG_PC];
+ 
+   /* ARM Bump has to be an even number because of odd/even architecture.  */
+   *pc_addr += 2;
+ #ifdef __thumb2__
+   /* For thumb, the return address must have the low order bit set, otherwise
+      the unwinder will reset to "arm" mode upon return.  As long as the
+      compilation unit containing the landing pad is compiled with the same
+      mode (arm vs thumb) as the signaling compilation unit, this works.  */
+   if (mcontext->cpu.spsr & ARM_CPSR_T)
+     *pc_addr += 1;
+ #endif
+ }
+ #endif /* ARMEL */
+ 
  void
  __gnat_map_signal (int sig,
  		   siginfo_t *si ATTRIBUTE_UNUSED,
*************** __gnat_map_signal (int sig,
*** 2591,2596 ****
--- 2630,2642 ----
  static void
  __gnat_error_handler (int sig, siginfo_t *si, void *ucontext)
  {
+ #ifdef HAVE_GNAT_ADJUST_CONTEXT_FOR_RAISE
+   /* We need to sometimes to adjust the PC in case of signals so that it
+      doesn't reference the exception that actually raised the signal but the
+      instruction before it.  */
+   __gnat_adjust_context_for_raise (sig, ucontext);
+ #endif
+ 
    __gnat_sigtramp (sig, (void *) si, (void *) ucontext,
  		   (__sigtramphandler_t *)&__gnat_map_signal);
  }
*************** __gnat_install_handler (void)
*** 2605,2611 ****
    struct sigaction act;
    int err;
  
!   act.sa_handler = __gnat_error_handler;
    act.sa_flags = SA_NODEFER | SA_SIGINFO;
    sigemptyset (&act.sa_mask);
  
--- 2651,2657 ----
    struct sigaction act;
    int err;
  
!   act.sa_sigaction = __gnat_error_handler;
    act.sa_flags = SA_NODEFER | SA_SIGINFO;
    sigemptyset (&act.sa_mask);
  
*************** __gnat_install_handler (void)
*** 2619,2644 ****
      }
    }
    if (__gnat_get_interrupt_state (SIGILL) != 's') {
!     sigaction (SIGILL,  &act, NULL);
      if (err == -1) {
        err = errno;
!       perror ("error while attaching SIGFPE");
        perror (strerror (err));
      }
    }
    if (__gnat_get_interrupt_state (SIGSEGV) != 's') {
!     sigaction (SIGSEGV, &act, NULL);
      if (err == -1) {
        err = errno;
!       perror ("error while attaching SIGFPE");
        perror (strerror (err));
      }
    }
    if (__gnat_get_interrupt_state (SIGBUS) != 's') {
!     sigaction (SIGBUS,  &act, NULL);
      if (err == -1) {
        err = errno;
!       perror ("error while attaching SIGFPE");
        perror (strerror (err));
      }
    }
--- 2665,2690 ----
      }
    }
    if (__gnat_get_interrupt_state (SIGILL) != 's') {
!     err = sigaction (SIGILL,  &act, NULL);
      if (err == -1) {
        err = errno;
!       perror ("error while attaching SIGILL");
        perror (strerror (err));
      }
    }
    if (__gnat_get_interrupt_state (SIGSEGV) != 's') {
!     err = sigaction (SIGSEGV, &act, NULL);
      if (err == -1) {
        err = errno;
!       perror ("error while attaching SIGSEGV");
        perror (strerror (err));
      }
    }
    if (__gnat_get_interrupt_state (SIGBUS) != 's') {
!     err = sigaction (SIGBUS,  &act, NULL);
      if (err == -1) {
        err = errno;
!       perror ("error while attaching SIGBUS");
        perror (strerror (err));
      }
    }
diff -Nrcpad gcc-12.2.0/gcc/ada/initialize.c gcc-13.1.0/gcc/ada/initialize.c
*** gcc-12.2.0/gcc/ada/initialize.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/initialize.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/inline.adb gcc-13.1.0/gcc/ada/inline.adb
*** gcc-12.2.0/gcc/ada/inline.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/inline.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo.Entities; use Einfo.Entities;
*** 32,38 ****
  with Einfo.Utils;    use Einfo.Utils;
  with Elists;         use Elists;
  with Errout;         use Errout;
- with Expander;       use Expander;
  with Exp_Ch6;        use Exp_Ch6;
  with Exp_Ch7;        use Exp_Ch7;
  with Exp_Tss;        use Exp_Tss;
--- 32,37 ----
*************** package body Inline is
*** 1107,1113 ****
  
     procedure Build_Body_To_Inline (N : Node_Id; Spec_Id : Entity_Id) is
        Decl            : constant Node_Id := Unit_Declaration_Node (Spec_Id);
-       Analysis_Status : constant Boolean := Full_Analysis;
        Original_Body   : Node_Id;
        Body_To_Analyze : Node_Id;
        Max_Size        : constant := 10;
--- 1106,1111 ----
*************** package body Inline is
*** 1330,1338 ****
           return;
        end if;
  
!       if Present (Declarations (N))
!         and then Has_Excluded_Declaration (Spec_Id, Declarations (N))
!       then
           return;
        end if;
  
--- 1328,1334 ----
           return;
        end if;
  
!       if Has_Excluded_Declaration (Spec_Id, Declarations (N)) then
           return;
        end if;
  
*************** package body Inline is
*** 1421,1432 ****
           Append (Body_To_Analyze, Declarations (N));
        end if;
  
!       --  The body to inline is preanalyzed. In GNATprove mode we must disable
!       --  full analysis as well so that light expansion does not take place
!       --  either, and name resolution is unaffected.
! 
!       Expander_Mode_Save_And_Set (False);
!       Full_Analysis := False;
  
        Analyze (Body_To_Analyze);
        Push_Scope (Defining_Entity (Body_To_Analyze));
--- 1417,1423 ----
           Append (Body_To_Analyze, Declarations (N));
        end if;
  
!       Start_Generic;
  
        Analyze (Body_To_Analyze);
        Push_Scope (Defining_Entity (Body_To_Analyze));
*************** package body Inline is
*** 1434,1441 ****
        End_Scope;
        Remove (Body_To_Analyze);
  
!       Expander_Mode_Restore;
!       Full_Analysis := Analysis_Status;
  
        --  Restore environment if previously saved
  
--- 1425,1431 ----
        End_Scope;
        Remove (Body_To_Analyze);
  
!       End_Generic;
  
        --  Restore environment if previously saved
  
*************** package body Inline is
*** 1895,1906 ****
        then
           return False;
  
-       --  Subprograms in generic instances are currently not inlined, to avoid
-       --  problems with inlining of standard library subprograms.
- 
-       elsif Instantiation_Location (Sloc (Id)) /= No_Location then
-          return False;
- 
        --  Do not inline subprograms and entries defined inside protected types,
        --  which typically are not helper subprograms, which also avoids getting
        --  spurious messages on calls that cannot be inlined.
--- 1885,1890 ----
*************** package body Inline is
*** 2622,2630 ****
  
        --  Check excluded declarations
  
!       elsif Present (Declarations (N))
!         and then Has_Excluded_Declaration (Spec_Id, Declarations (N))
!       then
           return;
  
        --  Check excluded statements. There is no need to protect us against
--- 2606,2612 ----
  
        --  Check excluded declarations
  
!       elsif Has_Excluded_Declaration (Spec_Id, Declarations (N)) then
           return;
  
        --  Check excluded statements. There is no need to protect us against
*************** package body Inline is
*** 2646,2651 ****
--- 2628,2702 ----
        end if;
     end Check_And_Split_Unconstrained_Function;
  
+    ---------------------------------------------
+    -- Check_Object_Renaming_In_GNATprove_Mode --
+    ---------------------------------------------
+ 
+    procedure Check_Object_Renaming_In_GNATprove_Mode (Spec_Id : Entity_Id) is
+       Decl      : constant Node_Id := Unit_Declaration_Node (Spec_Id);
+       Body_Decl : constant Node_Id :=
+         Unit_Declaration_Node (Corresponding_Body (Decl));
+ 
+       function Check_Object_Renaming (N : Node_Id) return Traverse_Result;
+       --  Returns Abandon on node N if this is a reference to an object
+       --  renaming, which will be expanded into the renamed object in
+       --  GNATprove mode.
+ 
+       ---------------------------
+       -- Check_Object_Renaming --
+       ---------------------------
+ 
+       function Check_Object_Renaming (N : Node_Id) return Traverse_Result is
+       begin
+          case Nkind (Original_Node (N)) is
+             when N_Expanded_Name
+                | N_Identifier
+             =>
+                declare
+                   Obj_Id : constant Entity_Id := Entity (Original_Node (N));
+                begin
+                   --  Recognize the case when SPARK expansion rewrites a
+                   --  reference to an object renaming.
+ 
+                   if Present (Obj_Id)
+                     and then Is_Object (Obj_Id)
+                     and then Present (Renamed_Object (Obj_Id))
+                     and then Nkind (Renamed_Object (Obj_Id)) not in N_Entity
+ 
+                     --  Copy_Generic_Node called for inlining expects the
+                     --  references to global entities to have the same kind
+                     --  in the "generic" code and its "instantiation".
+ 
+                     and then Nkind (Original_Node (N)) /=
+                       Nkind (Renamed_Object (Obj_Id))
+                   then
+                      return Abandon;
+                   else
+                      return OK;
+                   end if;
+                end;
+ 
+             when others =>
+                return OK;
+          end case;
+       end Check_Object_Renaming;
+ 
+       function Check_All_Object_Renamings is new
+         Traverse_Func (Check_Object_Renaming);
+ 
+    --  Start of processing for Check_Object_Renaming_In_GNATprove_Mode
+ 
+    begin
+       --  Subprograms with object renamings replaced by the special SPARK
+       --  expansion cannot be inlined.
+ 
+       if Check_All_Object_Renamings (Body_Decl) /= OK then
+          Cannot_Inline ("cannot inline & (object renaming)?",
+                         Body_Decl, Spec_Id);
+          Set_Body_To_Inline (Decl, Empty);
+       end if;
+    end Check_Object_Renaming_In_GNATprove_Mode;
+ 
     -------------------------------------
     -- Check_Package_Body_For_Inlining --
     -------------------------------------
*************** package body Inline is
*** 2745,2752 ****
                    elsif Ineffective_Inline_Warnings then
                       Error_Msg_Unit_1 := Bname;
                       Error_Msg_N
!                        ("unable to inline subprograms defined in $??", P);
!                      Error_Msg_N ("\body not found??", P);
                       return;
                    end if;
                 end if;
--- 2796,2803 ----
                    elsif Ineffective_Inline_Warnings then
                       Error_Msg_Unit_1 := Bname;
                       Error_Msg_N
!                        ("unable to inline subprograms defined in $?p?", P);
!                      Error_Msg_N ("\body not found?p?", P);
                       return;
                    end if;
                 end if;
*************** package body Inline is
*** 2777,2783 ****
              Scop := Protected_Body_Subprogram (Scop);
  
           elsif Is_Subprogram (Scop)
!            and then Is_Protected_Type (Scope (Scop))
             and then Present (Protected_Body_Subprogram (Scop))
           then
              --  If a protected operation contains an instance, its cleanup
--- 2828,2834 ----
              Scop := Protected_Body_Subprogram (Scop);
  
           elsif Is_Subprogram (Scop)
!            and then Is_Protected_Type (Underlying_Type (Scope (Scop)))
             and then Present (Protected_Body_Subprogram (Scop))
           then
              --  If a protected operation contains an instance, its cleanup
*************** package body Inline is
*** 2962,2975 ****
              Temp_Typ := Etype (A);
           end if;
  
!          --  If the actual is a simple name or a literal, no need to
!          --  create a temporary, object can be used directly.
! 
!          --  If the actual is a literal and the formal has its address taken,
!          --  we cannot pass the literal itself as an argument, so its value
!          --  must be captured in a temporary. Skip this optimization in
!          --  GNATprove mode, to make sure any check on a type conversion
!          --  will be issued.
  
           if (Is_Entity_Name (A)
                and then
--- 3013,3022 ----
              Temp_Typ := Etype (A);
           end if;
  
!          --  If the actual is a simple name or a literal, no need to create a
!          --  temporary, object can be used directly. Skip this optimization in
!          --  GNATprove mode, to make sure any check on a type conversion will
!          --  be issued.
  
           if (Is_Entity_Name (A)
                and then
*************** package body Inline is
*** 2988,2993 ****
--- 3035,3044 ----
                 and then Formal_Is_Used_Once (F)
                 and then not GNATprove_Mode)
  
+          --  If the actual is a literal and the formal has its address taken,
+          --  we cannot pass the literal itself as an argument, so its value
+          --  must be captured in a temporary.
+ 
             or else
               (Nkind (A) in
                  N_Real_Literal | N_Integer_Literal | N_Character_Literal
*************** package body Inline is
*** 3206,3212 ****
           pragma Assert
             (Modify_Tree_For_C
               and then Is_Subprogram (Enclosing_Subp)
!              and then Present (Postconditions_Proc (Enclosing_Subp)));
  
           if Ekind (Enclosing_Subp) = E_Function then
              if Nkind (First (Parameter_Associations (N))) in
--- 3257,3263 ----
           pragma Assert
             (Modify_Tree_For_C
               and then Is_Subprogram (Enclosing_Subp)
!              and then Present (Wrapped_Statements (Enclosing_Subp)));
  
           if Ekind (Enclosing_Subp) = E_Function then
              if Nkind (First (Parameter_Associations (N))) in
*************** package body Inline is
*** 3316,3321 ****
--- 3367,3374 ----
           E   : Entity_Id;
           Ret : Node_Id;
  
+          Had_Private_View : Boolean;
+ 
        begin
           if Is_Entity_Name (N) and then Present (Entity (N)) then
              E := Entity (N);
*************** package body Inline is
*** 3329,3341 ****
--- 3382,3402 ----
                 --  subtype is private at the call point but its full view is
                 --  visible to the body, then the inlined tree here must be
                 --  analyzed with the full view).
+                --
+                --  The Has_Private_View flag is cleared by rewriting, so it
+                --  must be explicitly saved and restored, just like when
+                --  instantiating the body to inline.
  
                 if Is_Entity_Name (A) then
+                   Had_Private_View := Has_Private_View (N);
                    Rewrite (N, New_Occurrence_Of (Entity (A), Sloc (N)));
+                   Set_Has_Private_View (N, Had_Private_View);
                    Check_Private_View (N);
  
                 elsif Nkind (A) = N_Defining_Identifier then
+                   Had_Private_View := Has_Private_View (N);
                    Rewrite (N, New_Occurrence_Of (A, Sloc (N)));
+                   Set_Has_Private_View (N, Had_Private_View);
                    Check_Private_View (N);
  
                 --  Numeric literal
*************** package body Inline is
*** 3790,3796 ****
  
              if Modify_Tree_For_C
                and then Nkind (N) = N_Procedure_Call_Statement
!               and then Chars (Name (N)) = Name_uPostconditions
              then
                 Declare_Postconditions_Result;
              end if;
--- 3851,3857 ----
  
              if Modify_Tree_For_C
                and then Nkind (N) = N_Procedure_Call_Statement
!               and then Chars (Name (N)) = Name_uWrapped_Statements
              then
                 Declare_Postconditions_Result;
              end if;
*************** package body Inline is
*** 4388,4396 ****
              return True;
  
           elsif Nkind (S) = N_Block_Statement then
!             if Present (Declarations (S))
!               and then Has_Excluded_Declaration (Subp, Declarations (S))
!             then
                 return True;
  
              elsif Present (Handled_Statement_Sequence (S)) then
--- 4449,4455 ----
              return True;
  
           elsif Nkind (S) = N_Block_Statement then
!             if Has_Excluded_Declaration (Subp, Declarations (S)) then
                 return True;
  
              elsif Present (Handled_Statement_Sequence (S)) then
*************** package body Inline is
*** 4487,4499 ****
        Decl   : Node_Id;
  
     begin
!       if No (E_Body) then        --  imported subprogram
           return False;
  
        else
           Decl := First (Declarations (E_Body));
           while Present (Decl) loop
              if Nkind (Decl) = N_Full_Type_Declaration
                and then Present (Init_Proc (Defining_Identifier (Decl)))
              then
                 return True;
--- 4546,4559 ----
        Decl   : Node_Id;
  
     begin
!       if No (E_Body) then -- imported subprogram
           return False;
  
        else
           Decl := First (Declarations (E_Body));
           while Present (Decl) loop
              if Nkind (Decl) = N_Full_Type_Declaration
+               and then Comes_From_Source (Decl)
                and then Present (Init_Proc (Defining_Identifier (Decl)))
              then
                 return True;
*************** package body Inline is
*** 4591,4596 ****
--- 4651,4657 ----
           return
             Present (Declarations (N))
               and then Present (First (Declarations (N)))
+              and then Nkind (First (Declarations (N))) = N_Object_Declaration
               and then Entity (Expression (Return_Statement)) =
                          Defining_Identifier (First (Declarations (N)));
        end if;
*************** package body Inline is
*** 4648,4655 ****
     procedure Inline_Static_Function_Call (N : Node_Id; Subp : Entity_Id) is
  
        function Replace_Formal (N : Node_Id) return Traverse_Result;
!       --  Replace each occurrence of a formal with the corresponding actual,
!       --  using the mapping created by Establish_Mapping_For_Inlined_Call.
  
        function Reset_Sloc (Nod : Node_Id) return Traverse_Result;
        --  Reset the Sloc of a node to that of the call itself, so that errors
--- 4709,4717 ----
     procedure Inline_Static_Function_Call (N : Node_Id; Subp : Entity_Id) is
  
        function Replace_Formal (N : Node_Id) return Traverse_Result;
!       --  Replace each occurrence of a formal with the
!       --  corresponding actual, using the mapping created
!       --  by Establish_Actual_Mapping_For_Inlined_Call.
  
        function Reset_Sloc (Nod : Node_Id) return Traverse_Result;
        --  Reset the Sloc of a node to that of the call itself, so that errors
*************** package body Inline is
*** 4661,4668 ****
        --------------------
  
        function Replace_Formal (N : Node_Id) return Traverse_Result is
!          A   : Entity_Id;
!          E   : Entity_Id;
  
        begin
           if Is_Entity_Name (N) and then Present (Entity (N)) then
--- 4723,4730 ----
        --------------------
  
        function Replace_Formal (N : Node_Id) return Traverse_Result is
!          A : Entity_Id;
!          E : Entity_Id;
  
        begin
           if Is_Entity_Name (N) and then Present (Entity (N)) then
diff -Nrcpad gcc-12.2.0/gcc/ada/inline.ads gcc-13.1.0/gcc/ada/inline.ads
*** gcc-12.2.0/gcc/ada/inline.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/inline.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Inline is
*** 94,100 ****
        --  This means we have to capture this information from the current scope
        --  at the point of instantiation.
  
!       Warnings : Warning_Record;
        --  Capture values of warning flags
     end record;
  
--- 94,100 ----
        --  This means we have to capture this information from the current scope
        --  at the point of instantiation.
  
!       Warnings : Warnings_State;
        --  Capture values of warning flags
     end record;
  
*************** package Inline is
*** 198,203 ****
--- 198,212 ----
     --  cases documented in Check_Body_To_Inline) then build the body-to-inline
     --  associated with N and attach it to the declaration node of Spec_Id.
  
+    procedure Check_Object_Renaming_In_GNATprove_Mode (Spec_Id : Entity_Id)
+    with
+      Pre => GNATprove_Mode;
+    --  This procedure is called only in GNATprove mode, on subprograms for
+    --  which a Body_To_Inline was created, to check if the subprogram has
+    --  references to object renamings which will be replaced by the special
+    --  SPARK expansion into nodes of a different kind, which is not expected
+    --  by the inlining mechanism. In that case, the Body_To_Inline is deleted.
+ 
     procedure Check_Package_Body_For_Inlining (N : Node_Id; P : Entity_Id);
     --  If front-end inlining is enabled and a package declaration contains
     --  inlined subprograms, load and compile the package body to collect the
diff -Nrcpad gcc-12.2.0/gcc/ada/itypes.adb gcc-13.1.0/gcc/ada/itypes.adb
*** gcc-12.2.0/gcc/ada/itypes.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/itypes.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/itypes.ads gcc-13.1.0/gcc/ada/itypes.ads
*** gcc-12.2.0/gcc/ada/itypes.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/itypes.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/krunch.adb gcc-13.1.0/gcc/ada/krunch.adb
*** gcc-12.2.0/gcc/ada/krunch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/krunch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/krunch.ads gcc-13.1.0/gcc/ada/krunch.ads
*** gcc-12.2.0/gcc/ada/krunch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/krunch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/layout.adb gcc-13.1.0/gcc/ada/layout.adb
*** gcc-12.2.0/gcc/ada/layout.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/layout.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinfo.Utils;    use Sinfo.Utils;
*** 40,45 ****
--- 40,46 ----
  with Snames;         use Snames;
  with Ttypes;         use Ttypes;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Layout is
  
*************** package body Layout is
*** 500,506 ****
           if Is_Array_Type (E)
             and then Present (First_Index (E))  --  Skip types in error
             and then Number_Dimensions (E) = 1
!            and then not Present (Packed_Array_Impl_Type (E))
             and then Has_Pragma_Pack (E)
             and then Is_Constrained (E)
             and then Compile_Time_Known_Bounds (E)
--- 501,507 ----
           if Is_Array_Type (E)
             and then Present (First_Index (E))  --  Skip types in error
             and then Number_Dimensions (E) = 1
!            and then No (Packed_Array_Impl_Type (E))
             and then Has_Pragma_Pack (E)
             and then Is_Constrained (E)
             and then Compile_Time_Known_Bounds (E)
*************** package body Layout is
*** 1053,1060 ****
              --  derived types.
  
              declare
-                FST : constant Entity_Id := First_Subtype (E);
- 
                 function Has_Attribute_Clause
                   (E  : Entity_Id;
                    Id : Attribute_Id) return Boolean;
--- 1054,1059 ----
*************** package body Layout is
*** 1072,1078 ****
--- 1071,1087 ----
                    return Present (Get_Attribute_Definition_Clause (E, Id));
                 end Has_Attribute_Clause;
  
+                FST : Entity_Id;
+ 
              begin
+                FST := First_Subtype (E);
+ 
+                --  Deal with private types
+ 
+                if Is_Private_Type (FST) then
+                   FST := Full_View (FST);
+                end if;
+ 
                 --  If the alignment comes from a clause, then we respect it.
                 --  Consider for example:
  
diff -Nrcpad gcc-12.2.0/gcc/ada/layout.ads gcc-13.1.0/gcc/ada/layout.ads
*** gcc-12.2.0/gcc/ada/layout.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/layout.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-list.adb gcc-13.1.0/gcc/ada/lib-list.adb
*** gcc-12.2.0/gcc/ada/lib-list.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-list.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-load.adb gcc-13.1.0/gcc/ada/lib-load.adb
*** gcc-12.2.0/gcc/ada/lib-load.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-load.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-load.ads gcc-13.1.0/gcc/ada/lib-load.ads
*** gcc-12.2.0/gcc/ada/lib-load.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-load.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-sort.adb gcc-13.1.0/gcc/ada/lib-sort.adb
*** gcc-12.2.0/gcc/ada/lib-sort.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-sort.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-util.adb gcc-13.1.0/gcc/ada/lib-util.adb
*** gcc-12.2.0/gcc/ada/lib-util.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-util.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-util.ads gcc-13.1.0/gcc/ada/lib-util.ads
*** gcc-12.2.0/gcc/ada/lib-util.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-util.ads	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
  --                                                                          --
  --                             L I B . U T I L                              --
  --                                                                          --
! --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 4,12 ----
  --                                                                          --
  --                             L I B . U T I L                              --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-writ.adb gcc-13.1.0/gcc/ada/lib-writ.adb
*** gcc-12.2.0/gcc/ada/lib-writ.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-writ.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Debug;          use Debug;
*** 30,35 ****
--- 30,36 ----
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
+ with Elists;         use Elists;
  with Errout;         use Errout;
  with Fname;          use Fname;
  with Fname.UF;       use Fname.UF;
*************** with Lib.Util;       use Lib.Util;
*** 37,42 ****
--- 38,44 ----
  with Lib.Xref;       use Lib.Xref;
  with Nlists;         use Nlists;
  with Gnatvsn;        use Gnatvsn;
+ with GNAT_CUDA;      use GNAT_CUDA;
  with Opt;            use Opt;
  with Osint;          use Osint;
  with Osint.C;        use Osint.C;
*************** package body Lib.Writ is
*** 268,273 ****
--- 270,279 ----
        --  Collect with lines for entries in the context clause of the given
        --  compilation unit, Cunit.
  
+       procedure Output_CUDA_Symbols (Unit_Num : Unit_Number_Type);
+       --  Output CUDA symbols, so that the rest of the toolchain may know what
+       --  symbols need registering with the CUDA runtime.
+ 
        procedure Write_Unit_Information (Unit_Num : Unit_Number_Type);
        --  Write out the library information for one unit for which code is
        --  generated (includes unit line and with lines).
*************** package body Lib.Writ is
*** 386,391 ****
--- 392,434 ----
           end loop;
        end Collect_Withs;
  
+       -------------------------
+       -- Output_CUDA_Symbols --
+       -------------------------
+ 
+       procedure Output_CUDA_Symbols (Unit_Num : Unit_Number_Type) is
+          Unit_Id     : constant Node_Id := Unit (Cunit (Unit_Num));
+          Spec_Id     : Node_Id;
+          Kernels     : Elist_Id;
+          Kernel_Elm  : Elmt_Id;
+          Kernel      : Entity_Id;
+       begin
+          if not Enable_CUDA_Expansion
+            or else Nkind (Unit_Id) = N_Null_Statement
+          then
+             return;
+          end if;
+          Spec_Id := (if Nkind (Unit_Id) = N_Package_Body
+            then Corresponding_Spec (Unit_Id)
+            else Defining_Unit_Name (Specification (Unit_Id)));
+          Kernels := Get_CUDA_Kernels (Spec_Id);
+          if No (Kernels) then
+             return;
+          end if;
+ 
+          Kernel_Elm := First_Elmt (Kernels);
+          while Present (Kernel_Elm) loop
+             Kernel := Node (Kernel_Elm);
+ 
+             Write_Info_Initiate ('K');
+             Write_Info_Char (' ');
+             Write_Info_Name (Chars (Kernel));
+             Write_Info_Terminate;
+             Next_Elmt (Kernel_Elm);
+          end loop;
+ 
+       end Output_CUDA_Symbols;
+ 
        ----------------------------
        -- Write_Unit_Information --
        ----------------------------
*************** package body Lib.Writ is
*** 1166,1171 ****
--- 1209,1222 ----
           Write_Info_Terminate;
        end loop;
  
+       --  Output CUDA Kernel lines
+ 
+       for Unit in Units.First .. Last_Unit loop
+          if Present (Cunit (Unit)) then
+             Output_CUDA_Symbols (Unit);
+          end if;
+       end loop;
+ 
        --  Output parameters ('P') line
  
        Write_Info_Initiate ('P');
*************** package body Lib.Writ is
*** 1234,1243 ****
           Write_Info_Str (" UA");
        end if;
  
-       if Front_End_Exceptions then
-          Write_Info_Str (" FX");
-       end if;
- 
        if ZCX_Exceptions then
           Write_Info_Str (" ZX");
        end if;
--- 1285,1290 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-writ.ads gcc-13.1.0/gcc/ada/lib-writ.ads
*** gcc-12.2.0/gcc/ada/lib-writ.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-writ.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-xref-spark_specific.adb gcc-13.1.0/gcc/ada/lib-xref-spark_specific.adb
*** gcc-12.2.0/gcc/ada/lib-xref-spark_specific.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-xref-spark_specific.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-xref.adb gcc-13.1.0/gcc/ada/lib-xref.adb
*** gcc-12.2.0/gcc/ada/lib-xref.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-xref.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Snames;         use Snames;
*** 47,52 ****
--- 47,53 ----
  with Stringt;        use Stringt;
  with Stand;          use Stand;
  with Table;          use Table;
+ with Warnsw;         use Warnsw;
  
  with GNAT.Heap_Sort_G;
  with GNAT.HTable;
*************** package body Lib.Xref is
*** 57,70 ****
     -- Declarations --
     ------------------
  
-    package Deferred_References is new Table.Table (
-      Table_Component_Type => Deferred_Reference_Entry,
-      Table_Index_Type     => Int,
-      Table_Low_Bound      => 0,
-      Table_Initial        => 512,
-      Table_Increment      => 200,
-      Table_Name           => "Name_Deferred_References");
- 
     --  The Xref table is used to record references. The Loc field is set
     --  to No_Location for a definition entry.
  
--- 58,63 ----
*************** package body Lib.Xref is
*** 211,231 ****
        end if;
     end Add_Entry;
  
-    ---------------------
-    -- Defer_Reference --
-    ---------------------
- 
-    procedure Defer_Reference (Deferred_Reference : Deferred_Reference_Entry) is
-    begin
-       --  If Get_Ignore_Errors, then we are in Preanalyze_Without_Errors, and
-       --  we should not record cross references, because that will cause
-       --  duplicates when we call Analyze.
- 
-       if not Get_Ignore_Errors then
-          Deferred_References.Append (Deferred_Reference);
-       end if;
-    end Defer_Reference;
- 
     -----------
     -- Equal --
     -----------
--- 204,209 ----
*************** package body Lib.Xref is
*** 641,655 ****
           end if;
        end if;
  
-       --  Do not generate references if we are within a postcondition sub-
-       --  program, because the reference does not comes from source, and the
-       --  preanalysis of the aspect has already created an entry for the ALI
-       --  file at the proper source location.
- 
-       if Chars (Current_Scope) = Name_uPostconditions then
-          return;
-       end if;
- 
        --  Never collect references if not in main source unit. However, we omit
        --  this test if Typ is 'e' or 'k', since these entries are structural,
        --  and it is useful to have them in units that reference packages as
--- 619,624 ----
*************** package body Lib.Xref is
*** 664,670 ****
        --  a default in an instance.
  
        --  We also set the referenced flag in a generic package that is not in
!       --  then main source unit, when the variable is of a formal private type,
        --  to warn in the instance if the corresponding type is not a fully
        --  initialized type.
  
--- 633,639 ----
        --  a default in an instance.
  
        --  We also set the referenced flag in a generic package that is not in
!       --  the main source unit, when the object is of a formal private type,
        --  to warn in the instance if the corresponding type is not a fully
        --  initialized type.
  
*************** package body Lib.Xref is
*** 694,699 ****
--- 663,669 ----
              return;
  
           elsif Inside_A_Generic
+            and then Is_Object (E)
             and then Is_Generic_Type (Etype (E))
           then
              Set_Referenced (E);
*************** package body Lib.Xref is
*** 806,812 ****
                 Set_Referenced_As_LHS (E, False);
  
              --  For OUT parameter not covered by the above cases, we simply
!             --  regard it as a non-reference.
  
              else
                 Set_Referenced_As_Out_Parameter (E);
--- 776,782 ----
                 Set_Referenced_As_LHS (E, False);
  
              --  For OUT parameter not covered by the above cases, we simply
!             --  regard it as a reference.
  
              else
                 Set_Referenced_As_Out_Parameter (E);
*************** package body Lib.Xref is
*** 936,945 ****
                       if Chars (BE) = Chars (E) then
                          if Has_Pragma_Unused (E) then
                             Error_Msg_NE -- CODEFIX
!                              ("??pragma Unused given for&!", N, BE);
                          else
                             Error_Msg_NE -- CODEFIX
!                              ("??pragma Unreferenced given for&!", N, BE);
                          end if;
                          exit;
                       end if;
--- 906,915 ----
                       if Chars (BE) = Chars (E) then
                          if Has_Pragma_Unused (E) then
                             Error_Msg_NE -- CODEFIX
!                              ("??aspect Unused specified for&!", N, BE);
                          else
                             Error_Msg_NE -- CODEFIX
!                              ("??aspect Unreferenced specified for&!", N, BE);
                          end if;
                          exit;
                       end if;
*************** package body Lib.Xref is
*** 952,961 ****
  
              elsif Has_Pragma_Unused (E) then
                 Error_Msg_NE -- CODEFIX
!                  ("??pragma Unused given for&!", N, E);
              else
                 Error_Msg_NE -- CODEFIX
!                  ("??pragma Unreferenced given for&!", N, E);
              end if;
           end if;
  
--- 922,931 ----
  
              elsif Has_Pragma_Unused (E) then
                 Error_Msg_NE -- CODEFIX
!                  ("??aspect Unused specified for&!", N, E);
              else
                 Error_Msg_NE -- CODEFIX
!                  ("??aspect Unreferenced specified for&!", N, E);
              end if;
           end if;
  
*************** package body Lib.Xref is
*** 1290,1310 ****
        return E;
     end Get_Key;
  
-    ----------------------------
-    -- Has_Deferred_Reference --
-    ----------------------------
- 
-    function Has_Deferred_Reference (Ent : Entity_Id) return Boolean is
-    begin
-       for J in Deferred_References.First .. Deferred_References.Last loop
-          if Deferred_References.Table (J).E = Ent then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Has_Deferred_Reference;
- 
     ----------
     -- Hash --
     ----------
--- 1260,1265 ----
*************** package body Lib.Xref is
*** 1317,1326 ****
        XE : Xref_Entry renames Xrefs.Table (F);
        type M is mod 2**32;
  
!       H : constant M := M (XE.Key.Ent) + 2 ** 7 * M (abs XE.Key.Loc);
        --  It would be more natural to write:
        --
!       --    H : constant M := M'Mod (XE.Key.Ent) + 2**7 * M'Mod (XE.Key.Loc);
        --
        --  But we can't use M'Mod, because it prevents bootstrapping with older
        --  compilers. Loc can be negative, so we do "abs" before converting.
--- 1272,1281 ----
        XE : Xref_Entry renames Xrefs.Table (F);
        type M is mod 2**32;
  
!       H : constant M := 3 * M (XE.Key.Ent) + 5 * M (abs XE.Key.Loc);
        --  It would be more natural to write:
        --
!       --    H : constant M := 3 * M'Mod (XE.Key.Ent) + 5 * M'Mod (XE.Key.Loc);
        --
        --  But we can't use M'Mod, because it prevents bootstrapping with older
        --  compilers. Loc can be negative, so we do "abs" before converting.
*************** package body Lib.Xref is
*** 2752,2784 ****
        end Output_Refs;
     end Output_References;
  
-    ---------------------------------
-    -- Process_Deferred_References --
-    ---------------------------------
- 
-    procedure Process_Deferred_References is
-    begin
-       for J in Deferred_References.First .. Deferred_References.Last loop
-          declare
-             D : Deferred_Reference_Entry renames Deferred_References.Table (J);
- 
-          begin
-             case Known_To_Be_Assigned (D.N) is
-                when True =>
-                   Generate_Reference (D.E, D.N, 'm');
- 
-                when False =>
-                   Generate_Reference (D.E, D.N, 'r');
- 
-             end case;
-          end;
-       end loop;
- 
-       --  Clear processed entries from table
- 
-       Deferred_References.Init;
-    end Process_Deferred_References;
- 
  --  Start of elaboration for Lib.Xref
  
  begin
--- 2707,2712 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/lib-xref.ads gcc-13.1.0/gcc/ada/lib-xref.ads
*** gcc-12.2.0/gcc/ada/lib-xref.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib-xref.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Lib.Xref is
*** 578,617 ****
     --  Export at line 4, that its body is exported to C, and that the link name
     --  as given in the pragma is "here".
  
-    -------------------------
-    -- Deferred_References --
-    -------------------------
- 
-    --  Normally we generate references as we go along, but as discussed in
-    --  Sem_Util.Is_LHS, and Sem_Ch8.Find_Direct_Name/Find_Selected_Component,
-    --  we have one case where that is tricky, which is when we have something
-    --  like X.A := 3, where we don't know until we know the type of X whether
-    --  this is a reference (if X is an access type, so what we really have is
-    --  X.all.A := 3) or a modification, where X is not an access type.
- 
-    --  What we do in such cases is to gather nodes, where we would have liked
-    --  to call Generate_Reference but we couldn't because we didn't know enough
-    --  into a table, then we deal with generating references later on when we
-    --  have sufficient information to do it right.
- 
-    type Deferred_Reference_Entry is record
-       E : Entity_Id;
-       N : Node_Id;
-    end record;
-    --  One entry, E, N are as required for Generate_Reference call
- 
-    procedure Defer_Reference (Deferred_Reference : Deferred_Reference_Entry);
-    --  Add one entry to the deferred reference table
- 
-    procedure Process_Deferred_References;
-    --  This procedure is called from Frontend to process these table entries.
-    --  It is also called from Sem_Warn.
- 
-    function Has_Deferred_Reference (Ent : Entity_Id) return Boolean;
-    --  Determine whether arbitrary entity Ent has a pending reference in order
-    --  to suppress premature warnings about useless assignments. See comments
-    --  in Analyze_Assignment in sem_ch5.adb.
- 
     -----------------------------
     -- SPARK Xrefs Information --
     -----------------------------
--- 578,583 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/lib.adb gcc-13.1.0/gcc/ada/lib.adb
*** gcc-12.2.0/gcc/ada/lib.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Lib is
*** 320,334 ****
     begin
        if S1 = No_Location or else S2 = No_Location then
           return No;
  
!       elsif S1 = Standard_Location then
!          if S2 = Standard_Location then
!             return Yes_Same;
!          else
!             return No;
!          end if;
  
!       elsif S2 = Standard_Location then
           return No;
        end if;
  
--- 320,332 ----
     begin
        if S1 = No_Location or else S2 = No_Location then
           return No;
+       end if;
  
!       if S1 = S2 then
!          return Yes_Same;
!       end if;
  
!       if S1 = Standard_Location or else S2 = Standard_Location then
           return No;
        end if;
  
*************** package body Lib is
*** 841,893 ****
       (N : Node_Or_Entity_Id) return Boolean
     is
     begin
-       if Sloc (N) = Standard_Location then
-          return False;
- 
-       elsif Sloc (N) = No_Location then
-          return False;
- 
        --  Special case Itypes to test the Sloc of the associated node. The
        --  reason we do this is for possible calls from gigi after -gnatD
        --  processing is complete in sprint. This processing updates the
        --  sloc fields of all nodes in the tree, but itypes are not in the
        --  tree so their slocs do not get updated.
  
!       elsif Nkind (N) = N_Defining_Identifier
!         and then Is_Itype (N)
!       then
           return In_Extended_Main_Code_Unit (Associated_Node_For_Itype (N));
- 
-       --  Otherwise see if we are in the main unit
- 
-       elsif Get_Code_Unit (Sloc (N)) = Get_Code_Unit (Cunit (Main_Unit)) then
-          return True;
- 
-       --  Node may be in spec (or subunit etc) of main unit
- 
-       else
-          return In_Same_Extended_Unit (N, Cunit (Main_Unit));
        end if;
     end In_Extended_Main_Code_Unit;
  
     function In_Extended_Main_Code_Unit (Loc : Source_Ptr) return Boolean is
     begin
!       if Loc = Standard_Location then
!          return False;
  
!       elsif Loc = No_Location then
           return False;
  
        --  Otherwise see if we are in the main unit
  
!       elsif Get_Code_Unit (Loc) = Get_Code_Unit (Cunit (Main_Unit)) then
           return True;
  
        --  Location may be in spec (or subunit etc) of main unit
  
!       else
!          return In_Same_Extended_Unit (Loc, Sloc (Cunit (Main_Unit)));
!       end if;
     end In_Extended_Main_Code_Unit;
  
     ----------------------------------
--- 839,874 ----
       (N : Node_Or_Entity_Id) return Boolean
     is
     begin
        --  Special case Itypes to test the Sloc of the associated node. The
        --  reason we do this is for possible calls from gigi after -gnatD
        --  processing is complete in sprint. This processing updates the
        --  sloc fields of all nodes in the tree, but itypes are not in the
        --  tree so their slocs do not get updated.
  
!       if Nkind (N) = N_Defining_Identifier and then Is_Itype (N) then
           return In_Extended_Main_Code_Unit (Associated_Node_For_Itype (N));
        end if;
+ 
+       return In_Extended_Main_Code_Unit (Sloc (N));
     end In_Extended_Main_Code_Unit;
  
     function In_Extended_Main_Code_Unit (Loc : Source_Ptr) return Boolean is
     begin
!       --  Special value cases
  
!       if Loc in No_Location | Standard_Location then
           return False;
+       end if;
  
        --  Otherwise see if we are in the main unit
  
!       if Get_Code_Unit (Loc) = Get_Code_Unit (Cunit (Main_Unit)) then
           return True;
+       end if;
  
        --  Location may be in spec (or subunit etc) of main unit
  
!       return In_Same_Extended_Unit (Loc, Sloc (Cunit (Main_Unit)));
     end In_Extended_Main_Code_Unit;
  
     ----------------------------------
*************** package body Lib is
*** 897,965 ****
     function In_Extended_Main_Source_Unit
       (N : Node_Or_Entity_Id) return Boolean
     is
-       Nloc : constant Source_Ptr := Sloc (N);
-       Mloc : constant Source_Ptr := Sloc (Cunit (Main_Unit));
- 
     begin
-       --  If parsing, then use the global flag to indicate result
- 
-       if Compiler_State = Parsing then
-          return Parsing_Main_Extended_Source;
- 
-       --  Special value cases
- 
-       elsif Nloc = Standard_Location then
-          return False;
- 
-       elsif Nloc = No_Location then
-          return False;
- 
        --  Special case Itypes to test the Sloc of the associated node. The
        --  reason we do this is for possible calls from gigi after -gnatD
        --  processing is complete in sprint. This processing updates the
        --  sloc fields of all nodes in the tree, but itypes are not in the
        --  tree so their slocs do not get updated.
  
!       elsif Nkind (N) = N_Defining_Identifier
!         and then Is_Itype (N)
!       then
           return In_Extended_Main_Source_Unit (Associated_Node_For_Itype (N));
- 
-       --  Otherwise compare original locations to see if in same unit
- 
-       else
-          return
-            In_Same_Extended_Unit
-              (Original_Location (Nloc), Original_Location (Mloc));
        end if;
     end In_Extended_Main_Source_Unit;
  
     function In_Extended_Main_Source_Unit
       (Loc : Source_Ptr) return Boolean
     is
-       Mloc : constant Source_Ptr := Sloc (Cunit (Main_Unit));
- 
     begin
        --  If parsing, then use the global flag to indicate result
  
        if Compiler_State = Parsing then
           return Parsing_Main_Extended_Source;
  
        --  Special value cases
  
!       elsif Loc = Standard_Location then
!          return False;
! 
!       elsif Loc = No_Location then
           return False;
  
!       --  Otherwise compare original locations to see if in same unit
  
!       else
!          return
!            In_Same_Extended_Unit
!              (Original_Location (Loc), Original_Location (Mloc));
!       end if;
     end In_Extended_Main_Source_Unit;
  
     ----------------------
--- 878,919 ----
     function In_Extended_Main_Source_Unit
       (N : Node_Or_Entity_Id) return Boolean
     is
     begin
        --  Special case Itypes to test the Sloc of the associated node. The
        --  reason we do this is for possible calls from gigi after -gnatD
        --  processing is complete in sprint. This processing updates the
        --  sloc fields of all nodes in the tree, but itypes are not in the
        --  tree so their slocs do not get updated.
  
!       if Nkind (N) = N_Defining_Identifier and then Is_Itype (N) then
!          pragma Assert (Compiler_State /= Parsing);
           return In_Extended_Main_Source_Unit (Associated_Node_For_Itype (N));
        end if;
+ 
+       return In_Extended_Main_Source_Unit (Sloc (N));
     end In_Extended_Main_Source_Unit;
  
     function In_Extended_Main_Source_Unit
       (Loc : Source_Ptr) return Boolean
     is
     begin
        --  If parsing, then use the global flag to indicate result
  
        if Compiler_State = Parsing then
           return Parsing_Main_Extended_Source;
+       end if;
  
        --  Special value cases
  
!       if Loc in No_Location | Standard_Location then
           return False;
+       end if;
  
!       --  Otherwise compare original locations
  
!       return In_Same_Extended_Unit
!         (Original_Location (Loc),
!          Original_Location (Sloc (Cunit (Main_Unit))));
     end In_Extended_Main_Source_Unit;
  
     ----------------------
*************** package body Lib is
*** 992,997 ****
--- 946,960 ----
        return Is_Predefined_Renaming (Unit);
     end In_Predefined_Renaming;
  
+    ---------
+    -- ipu --
+    ---------
+ 
+    function ipu (N : Node_Or_Entity_Id) return Boolean is
+    begin
+       return In_Predefined_Unit (N);
+    end ipu;
+ 
     ------------------------
     -- In_Predefined_Unit --
     ------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/lib.ads gcc-13.1.0/gcc/ada/lib.ads
*** gcc-12.2.0/gcc/ada/lib.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/lib.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Lib is
*** 39,52 ****
     --  Type to hold list of indirect references to unit number table
  
     type Compiler_State_Type is (Parsing, Analyzing);
!    Compiler_State : Compiler_State_Type;
     --  Indicates current state of compilation. This is used to implement the
     --  function In_Extended_Main_Source_Unit.
  
     Parsing_Main_Extended_Source : Boolean := False;
     --  Set True if we are currently parsing a file that is part of the main
     --  extended source (the main unit, its spec, or one of its subunits). This
!    --  flag to implement In_Extended_Main_Source_Unit.
  
     Analysing_Subunit_Of_Main : Boolean := False;
     --  Set to True when analyzing a subunit of the main source. When True, if
--- 39,52 ----
     --  Type to hold list of indirect references to unit number table
  
     type Compiler_State_Type is (Parsing, Analyzing);
!    Compiler_State : Compiler_State_Type := Parsing;
     --  Indicates current state of compilation. This is used to implement the
     --  function In_Extended_Main_Source_Unit.
  
     Parsing_Main_Extended_Source : Boolean := False;
     --  Set True if we are currently parsing a file that is part of the main
     --  extended source (the main unit, its spec, or one of its subunits). This
!    --  is used to implement In_Extended_Main_Source_Unit.
  
     Analysing_Subunit_Of_Main : Boolean := False;
     --  Set to True when analyzing a subunit of the main source. When True, if
*************** package Lib is
*** 616,623 ****
     --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
     function In_Extended_Main_Code_Unit (Loc : Source_Ptr) return Boolean;
!    --  Same function as above, but argument is a source pointer rather
!    --  than a node.
  
     function In_Extended_Main_Source_Unit
       (N : Node_Or_Entity_Id) return Boolean;
--- 616,622 ----
     --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
     function In_Extended_Main_Code_Unit (Loc : Source_Ptr) return Boolean;
!    --  Same as above, but for Source_Ptr
  
     function In_Extended_Main_Source_Unit
       (N : Node_Or_Entity_Id) return Boolean;
*************** package Lib is
*** 631,637 ****
     --  and the parent unit spec if it is separate.
  
     function In_Extended_Main_Source_Unit (Loc : Source_Ptr) return Boolean;
!    --  Same function as above, but argument is a source pointer
  
     function In_Predefined_Unit (N : Node_Or_Entity_Id) return Boolean;
     --  Returns True if the given node or entity appears within the source text
--- 630,642 ----
     --  and the parent unit spec if it is separate.
  
     function In_Extended_Main_Source_Unit (Loc : Source_Ptr) return Boolean;
!    --  Same as above, but for Source_Ptr
! 
!    function ipu (N : Node_Or_Entity_Id) return Boolean;
!    --  Same as In_Predefined_Unit, but renamed so it can assist debugging.
!    --  Otherwise, there is a disambiguous name conflict in the two versions of
!    --  In_Predefined_Unit which makes it inconvient to set as a breakpoint
!    --  condition.
  
     function In_Predefined_Unit (N : Node_Or_Entity_Id) return Boolean;
     --  Returns True if the given node or entity appears within the source text
*************** package Lib is
*** 640,646 ****
  
     function In_Predefined_Unit (S : Source_Ptr) return Boolean;
     pragma Inline (In_Predefined_Unit);
!    --  Same function as above but argument is a source pointer
  
     function In_Internal_Unit (N : Node_Or_Entity_Id) return Boolean;
     function In_Internal_Unit (S : Source_Ptr) return Boolean;
--- 645,651 ----
  
     function In_Predefined_Unit (S : Source_Ptr) return Boolean;
     pragma Inline (In_Predefined_Unit);
!    --  Same as above, but for Source_Ptr
  
     function In_Internal_Unit (N : Node_Or_Entity_Id) return Boolean;
     function In_Internal_Unit (S : Source_Ptr) return Boolean;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-astaco.adb gcc-13.1.0/gcc/ada/libgnarl/a-astaco.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-astaco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-astaco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-dispat.adb gcc-13.1.0/gcc/ada/libgnarl/a-dispat.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-dispat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-dispat.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-dynpri.adb gcc-13.1.0/gcc/ada/libgnarl/a-dynpri.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-dynpri.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-dynpri.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-etgrbu.ads gcc-13.1.0/gcc/ada/libgnarl/a-etgrbu.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-etgrbu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-etgrbu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-exetim__darwin.adb gcc-13.1.0/gcc/ada/libgnarl/a-exetim__darwin.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-exetim__darwin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-exetim__darwin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-exetim__default.ads gcc-13.1.0/gcc/ada/libgnarl/a-exetim__default.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-exetim__default.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-exetim__default.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-exetim__mingw.adb gcc-13.1.0/gcc/ada/libgnarl/a-exetim__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-exetim__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-exetim__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-exetim__mingw.ads gcc-13.1.0/gcc/ada/libgnarl/a-exetim__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-exetim__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-exetim__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-exetim__posix.adb gcc-13.1.0/gcc/ada/libgnarl/a-exetim__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-exetim__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-exetim__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-interr.adb gcc-13.1.0/gcc/ada/libgnarl/a-interr.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-interr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-interr.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-interr.ads gcc-13.1.0/gcc/ada/libgnarl/a-interr.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-interr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-interr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__aix.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__aix.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__aix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__aix.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__darwin.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__darwin.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__darwin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__darwin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__dragonfly.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__dummy.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                           (No Tasking Version)                           --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                           (No Tasking Version)                           --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__freebsd.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__freebsd.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__freebsd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__freebsd.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__hpux.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__hpux.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__hpux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__hpux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__linux.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__linux.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__linux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__linux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__lynxos.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__lynxos.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__lynxos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__lynxos.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__mingw.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__qnx.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__qnx.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__qnx.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__qnx.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__rtems.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__rtems.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__rtems.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__rtems.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__solaris.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__solaris.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__solaris.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__solaris.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-intnam__vxworks.ads gcc-13.1.0/gcc/ada/libgnarl/a-intnam__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-intnam__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-intnam__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-reatim.adb gcc-13.1.0/gcc/ada/libgnarl/a-reatim.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-reatim.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-reatim.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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- --
***************
*** 30,37 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with System.Tasking;
- with Unchecked_Conversion;
  
  package body Ada.Real_Time with
    SPARK_Mode => Off
--- 30,37 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Unchecked_Conversion;
  with System.Tasking;
  
  package body Ada.Real_Time with
    SPARK_Mode => Off
*************** is
*** 128,134 ****
        type Duration_Rep is range -(2 ** 63) .. +((2 ** 63 - 1));
  
        function To_Integer is
!         new Unchecked_Conversion (Duration, Duration_Rep);
     begin
        return Integer
                 (To_Integer (Duration (Left)) / To_Integer (Duration (Right)));
--- 128,134 ----
        type Duration_Rep is range -(2 ** 63) .. +((2 ** 63 - 1));
  
        function To_Integer is
!         new Ada.Unchecked_Conversion (Duration, Duration_Rep);
     begin
        return Integer
                 (To_Integer (Duration (Left)) / To_Integer (Duration (Right)));
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-reatim.ads gcc-13.1.0/gcc/ada/libgnarl/a-reatim.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-reatim.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-reatim.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Real_Time with
*** 41,46 ****
--- 41,47 ----
    Abstract_State => (Clock_Time with Synchronous),
    Initializes    => Clock_Time
  is
+    pragma Annotate (GNATprove, Always_Return, Real_Time);
  
     pragma Compile_Time_Error
       (Duration'Size /= 64,
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-retide.adb gcc-13.1.0/gcc/ada/libgnarl/a-retide.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-retide.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-retide.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-retide.ads gcc-13.1.0/gcc/ada/libgnarl/a-retide.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-retide.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-retide.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-rttiev.adb gcc-13.1.0/gcc/ada/libgnarl/a-rttiev.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-rttiev.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-rttiev.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2005-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2005-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-rttiev.ads gcc-13.1.0/gcc/ada/libgnarl/a-rttiev.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-rttiev.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-rttiev.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2005-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2005-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-synbar.adb gcc-13.1.0/gcc/ada/libgnarl/a-synbar.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-synbar.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-synbar.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-synbar.ads gcc-13.1.0/gcc/ada/libgnarl/a-synbar.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-synbar.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-synbar.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-synbar__posix.adb gcc-13.1.0/gcc/ada/libgnarl/a-synbar__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-synbar__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-synbar__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-synbar__posix.ads gcc-13.1.0/gcc/ada/libgnarl/a-synbar__posix.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-synbar__posix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-synbar__posix.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-sytaco.adb gcc-13.1.0/gcc/ada/libgnarl/a-sytaco.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-sytaco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-sytaco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-sytaco.ads gcc-13.1.0/gcc/ada/libgnarl/a-sytaco.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-sytaco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-sytaco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-tasatt.adb gcc-13.1.0/gcc/ada/libgnarl/a-tasatt.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-tasatt.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-tasatt.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-tasatt.ads gcc-13.1.0/gcc/ada/libgnarl/a-tasatt.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-tasatt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-tasatt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-taside.adb gcc-13.1.0/gcc/ada/libgnarl/a-taside.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-taside.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-taside.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-taside.ads gcc-13.1.0/gcc/ada/libgnarl/a-taside.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-taside.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-taside.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-tasini.adb gcc-13.1.0/gcc/ada/libgnarl/a-tasini.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-tasini.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-tasini.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --             Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --             Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-tasini.ads gcc-13.1.0/gcc/ada/libgnarl/a-tasini.ads
*** gcc-12.2.0/gcc/ada/libgnarl/a-tasini.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-tasini.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/a-taster.adb gcc-13.1.0/gcc/ada/libgnarl/a-taster.adb
*** gcc-12.2.0/gcc/ada/libgnarl/a-taster.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/a-taster.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-boubuf.adb gcc-13.1.0/gcc/ada/libgnarl/g-boubuf.adb
*** gcc-12.2.0/gcc/ada/libgnarl/g-boubuf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-boubuf.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-boubuf.ads gcc-13.1.0/gcc/ada/libgnarl/g-boubuf.ads
*** gcc-12.2.0/gcc/ada/libgnarl/g-boubuf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-boubuf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-boumai.ads gcc-13.1.0/gcc/ada/libgnarl/g-boumai.ads
*** gcc-12.2.0/gcc/ada/libgnarl/g-boumai.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-boumai.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-semaph.adb gcc-13.1.0/gcc/ada/libgnarl/g-semaph.adb
*** gcc-12.2.0/gcc/ada/libgnarl/g-semaph.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-semaph.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-semaph.ads gcc-13.1.0/gcc/ada/libgnarl/g-semaph.ads
*** gcc-12.2.0/gcc/ada/libgnarl/g-semaph.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-semaph.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-signal.adb gcc-13.1.0/gcc/ada/libgnarl/g-signal.adb
*** gcc-12.2.0/gcc/ada/libgnarl/g-signal.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-signal.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-signal.ads gcc-13.1.0/gcc/ada/libgnarl/g-signal.ads
*** gcc-12.2.0/gcc/ada/libgnarl/g-signal.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-signal.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-tastus.ads gcc-13.1.0/gcc/ada/libgnarl/g-tastus.ads
*** gcc-12.2.0/gcc/ada/libgnarl/g-tastus.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-tastus.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-thread.adb gcc-13.1.0/gcc/ada/libgnarl/g-thread.adb
*** gcc-12.2.0/gcc/ada/libgnarl/g-thread.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-thread.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/g-thread.ads gcc-13.1.0/gcc/ada/libgnarl/g-thread.ads
*** gcc-12.2.0/gcc/ada/libgnarl/g-thread.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/g-thread.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/i-vxinco.adb gcc-13.1.0/gcc/ada/libgnarl/i-vxinco.adb
*** gcc-12.2.0/gcc/ada/libgnarl/i-vxinco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/i-vxinco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/i-vxinco.ads gcc-13.1.0/gcc/ada/libgnarl/i-vxinco.ads
*** gcc-12.2.0/gcc/ada/libgnarl/i-vxinco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/i-vxinco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --                        Copyright (C) 2016-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-inmaop.ads gcc-13.1.0/gcc/ada/libgnarl/s-inmaop.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-inmaop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-inmaop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-inmaop__dummy.adb gcc-13.1.0/gcc/ada/libgnarl/s-inmaop__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-inmaop__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-inmaop__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-inmaop__hwint.adb gcc-13.1.0/gcc/ada/libgnarl/s-inmaop__hwint.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-inmaop__hwint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-inmaop__hwint.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-inmaop__posix.adb gcc-13.1.0/gcc/ada/libgnarl/s-inmaop__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-inmaop__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-inmaop__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-interr.adb gcc-13.1.0/gcc/ada/libgnarl/s-interr.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-interr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-interr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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- --
***************
*** 54,80 ****
  
  with Ada.Exceptions;
  with Ada.Task_Identification;
  
- with System.Task_Primitives;
  with System.Interrupt_Management;
- 
  with System.Interrupt_Management.Operations;
- pragma Elaborate_All (System.Interrupt_Management.Operations);
- 
  with System.IO;
! 
  with System.Task_Primitives.Operations;
  with System.Task_Primitives.Interrupt_Operations;
  with System.Storage_Elements;
  with System.Tasking.Utilities;
- 
  with System.Tasking.Rendezvous;
- pragma Elaborate_All (System.Tasking.Rendezvous);
- 
- with System.Tasking.Initialization;
- with System.Parameters;
  
! with Ada.Unchecked_Conversion;
  
  package body System.Interrupts is
  
--- 54,75 ----
  
  with Ada.Exceptions;
  with Ada.Task_Identification;
+ with Ada.Unchecked_Conversion;
  
  with System.Interrupt_Management;
  with System.Interrupt_Management.Operations;
  with System.IO;
! with System.Parameters;
! with System.Task_Primitives;
  with System.Task_Primitives.Operations;
  with System.Task_Primitives.Interrupt_Operations;
  with System.Storage_Elements;
+ with System.Tasking.Initialization;
  with System.Tasking.Utilities;
  with System.Tasking.Rendezvous;
  
! pragma Elaborate_All (System.Interrupt_Management.Operations);
! pragma Elaborate_All (System.Tasking.Rendezvous);
  
  package body System.Interrupts is
  
*************** package body System.Interrupts is
*** 114,121 ****
           Static      : Boolean);
  
        entry Detach_Handler
!         (Interrupt   : Interrupt_ID;
!          Static      : Boolean);
  
        entry Bind_Interrupt_To_Entry
          (T         : Task_Id;
--- 109,116 ----
           Static      : Boolean);
  
        entry Detach_Handler
!         (Interrupt : Interrupt_ID;
!          Static    : Boolean);
  
        entry Bind_Interrupt_To_Entry
          (T         : Task_Id;
*************** package body System.Interrupts is
*** 179,193 ****
     pragma Atomic_Components (Ignored);
     --  True iff the corresponding interrupt is blocked in the process level
  
!    Last_Unblocker :
!      array (Interrupt_ID'Range) of Task_Id := [others => Null_Task];
     pragma Atomic_Components (Last_Unblocker);
     --  Holds the ID of the last Task which Unblocked this Interrupt. It
     --  contains Null_Task if no tasks have ever requested the Unblocking
     --  operation or the Interrupt is currently Blocked.
  
!    Server_ID : array (Interrupt_ID'Range) of Task_Id :=
!                  [others => Null_Task];
     pragma Atomic_Components (Server_ID);
     --  Holds the Task_Id of the Server_Task for each interrupt. Task_Id is
     --  needed to accomplish locking per Interrupt base. Also is needed to
--- 174,187 ----
     pragma Atomic_Components (Ignored);
     --  True iff the corresponding interrupt is blocked in the process level
  
!    Last_Unblocker : array (Interrupt_ID'Range) of Task_Id :=
!                       [others => Null_Task];
     pragma Atomic_Components (Last_Unblocker);
     --  Holds the ID of the last Task which Unblocked this Interrupt. It
     --  contains Null_Task if no tasks have ever requested the Unblocking
     --  operation or the Interrupt is currently Blocked.
  
!    Server_ID : array (Interrupt_ID'Range) of Task_Id := [others => Null_Task];
     pragma Atomic_Components (Server_ID);
     --  Holds the Task_Id of the Server_Task for each interrupt. Task_Id is
     --  needed to accomplish locking per Interrupt base. Also is needed to
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-interr.ads gcc-13.1.0/gcc/ada/libgnarl/s-interr.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-interr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-interr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-interr__dummy.adb gcc-13.1.0/gcc/ada/libgnarl/s-interr__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-interr__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-interr__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-interr__hwint.adb gcc-13.1.0/gcc/ada/libgnarl/s-interr__hwint.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-interr__hwint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-interr__hwint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-interr__sigaction.adb gcc-13.1.0/gcc/ada/libgnarl/s-interr__sigaction.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-interr__sigaction.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-interr__sigaction.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-interr__vxworks.adb gcc-13.1.0/gcc/ada/libgnarl/s-interr__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-interr__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-interr__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman.ads gcc-13.1.0/gcc/ada/libgnarl/s-intman.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__android.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__android.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__android.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__android.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__dummy.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__lynxos.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__lynxos.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__lynxos.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__lynxos.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__mingw.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__posix.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__qnx.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__qnx.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__qnx.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__qnx.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__rtems.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__rtems.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__rtems.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__rtems.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__rtems.ads gcc-13.1.0/gcc/ada/libgnarl/s-intman__rtems.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__rtems.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__rtems.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__solaris.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__solaris.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__solaris.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__solaris.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__susv3.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__susv3.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__susv3.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__susv3.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__vxworks.adb gcc-13.1.0/gcc/ada/libgnarl/s-intman__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-intman__vxworks.ads gcc-13.1.0/gcc/ada/libgnarl/s-intman__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-intman__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-intman__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__alpha.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__alpha.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__alpha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__alpha.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2009-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2009-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__android.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__android.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__android.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__android.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__hppa.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__hppa.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__hppa.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__hppa.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__mips.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__mips.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__mips.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__mips.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__riscv.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__riscv.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__riscv.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__riscv.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__sparc.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__sparc.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__sparc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__sparc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2009-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-linux__x32.ads gcc-13.1.0/gcc/ada/libgnarl/s-linux__x32.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-linux__x32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-linux__x32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.         --
  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.         --
  --
  --                                                                          --
  -- GNARL is free software; you can  redistribute it  and/or modify it under --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-mudido.adb gcc-13.1.0/gcc/ada/libgnarl/s-mudido.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-mudido.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-mudido.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-mudido__affinity.adb gcc-13.1.0/gcc/ada/libgnarl/s-mudido__affinity.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-mudido__affinity.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-mudido__affinity.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__aix.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__aix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__aix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__aix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__aix.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__aix.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__aix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__aix.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__android.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__android.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__android.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__android.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__android.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__android.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__android.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__android.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__darwin.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__darwin.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__darwin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__darwin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__darwin.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__darwin.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__darwin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__darwin.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__dragonfly.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__dummy.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__freebsd.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__freebsd.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__freebsd.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__freebsd.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__freebsd.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__freebsd.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__freebsd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__freebsd.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                   S p e c                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__gnu.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__gnu.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__gnu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__gnu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2015-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2015-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__gnu.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__gnu.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__gnu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__gnu.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 40,46 ****
  
  with Interfaces.C;
  with System.Parameters;
! with Unchecked_Conversion;
  
  package System.OS_Interface is
     pragma Preelaborate;
--- 40,46 ----
  
  with Interfaces.C;
  with System.Parameters;
! with Ada.Unchecked_Conversion;
  
  package System.OS_Interface is
     pragma Preelaborate;
*************** package System.OS_Interface is
*** 288,301 ****
     pragma Convention (C, Thread_Body);
  
     function Thread_Body_Access is new
!      Unchecked_Conversion (System.Address, Thread_Body);
  
     --  From: /usr/include/bits/pthread.h:typedef int __pthread_t;
     --  /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t;
     type pthread_t is new unsigned_long;
     subtype Thread_Id        is pthread_t;
  
!    function To_pthread_t is new Unchecked_Conversion
       (unsigned_long, pthread_t);
  
     type pthread_mutex_t     is limited private;
--- 288,301 ----
     pragma Convention (C, Thread_Body);
  
     function Thread_Body_Access is new
!      Ada.Unchecked_Conversion (System.Address, Thread_Body);
  
     --  From: /usr/include/bits/pthread.h:typedef int __pthread_t;
     --  /usr/include/pthread/pthreadtypes.h:typedef __pthread_t pthread_t;
     type pthread_t is new unsigned_long;
     subtype Thread_Id        is pthread_t;
  
!    function To_pthread_t is new Ada.Unchecked_Conversion
       (unsigned_long, pthread_t);
  
     type pthread_mutex_t     is limited private;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__hpux-dce.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__hpux.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__hpux.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__hpux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__hpux.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-2017, Florida State University          --
! --            Copyright (C) 1995-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-2017, Florida State University          --
! --            Copyright (C) 1995-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-1994, Florida State University          --
! --            Copyright (C) 1995-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --               Copyright (C) 1991-1994, Florida State University          --
! --            Copyright (C) 1995-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 38,46 ****
  --  PLEASE DO NOT add any with-clauses to this package or remove the pragma
  --  Preelaborate. This package is designed to be a bottom-level (leaf) package
  
  with Interfaces.C;
  with System.Parameters;
- with Unchecked_Conversion;
  
  package System.OS_Interface is
     pragma Preelaborate;
--- 38,46 ----
  --  PLEASE DO NOT add any with-clauses to this package or remove the pragma
  --  Preelaborate. This package is designed to be a bottom-level (leaf) package
  
+ with Ada.Unchecked_Conversion;
  with Interfaces.C;
  with System.Parameters;
  
  package System.OS_Interface is
     pragma Preelaborate;
*************** package System.OS_Interface is
*** 276,287 ****
     pragma Convention (C, Thread_Body);
  
     function Thread_Body_Access is new
!      Unchecked_Conversion (System.Address, Thread_Body);
  
     type pthread_t is new unsigned_long;
     subtype Thread_Id        is pthread_t;
  
!    function To_pthread_t is new Unchecked_Conversion
       (unsigned_long, pthread_t);
  
     type pthread_mutex_t     is limited private;
--- 276,287 ----
     pragma Convention (C, Thread_Body);
  
     function Thread_Body_Access is new
!      Ada.Unchecked_Conversion (System.Address, Thread_Body);
  
     type pthread_t is new unsigned_long;
     subtype Thread_Id        is pthread_t;
  
!    function To_pthread_t is new Ada.Unchecked_Conversion
       (unsigned_long, pthread_t);
  
     type pthread_mutex_t     is limited private;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__linux.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__linux.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__linux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__linux.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__lynxos178.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__lynxos178e.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-1994, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__mingw.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__posix.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__qnx.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__qnx.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__qnx.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__qnx.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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- --
*************** package body System.OS_Interface is
*** 87,93 ****
       (Prio : System.Any_Priority) return Interfaces.C.int
     is
     begin
!       return Interfaces.C.int (Prio + 1);
     end To_Target_Priority;
  
     -----------------
--- 87,93 ----
       (Prio : System.Any_Priority) return Interfaces.C.int
     is
     begin
!       return Interfaces.C.int (Prio) + 1;
     end To_Target_Priority;
  
     -----------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__qnx.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__qnx.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__qnx.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__qnx.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__rtems.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__rtems.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__rtems.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__rtems.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__rtems.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__rtems.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__rtems.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__rtems.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__solaris.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__solaris.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__solaris.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__solaris.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__solaris.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__solaris.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__solaris.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__solaris.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__vxworks.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --         Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --         Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__vxworks.ads gcc-13.1.0/gcc/ada/libgnarl/s-osinte__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                   S p e c                                --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                   S p e c                                --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --          Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-osinte__x32.adb gcc-13.1.0/gcc/ada/libgnarl/s-osinte__x32.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-osinte__x32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-osinte__x32.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                   B o d y                                --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-proinf.adb gcc-13.1.0/gcc/ada/libgnarl/s-proinf.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-proinf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-proinf.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-proinf.ads gcc-13.1.0/gcc/ada/libgnarl/s-proinf.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-proinf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-proinf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1996-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1996-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-putaim.adb gcc-13.1.0/gcc/ada/libgnarl/s-putaim.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-putaim.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-putaim.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-putaim.ads gcc-13.1.0/gcc/ada/libgnarl/s-putaim.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-putaim.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-putaim.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-qnx.ads gcc-13.1.0/gcc/ada/libgnarl/s-qnx.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-qnx.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-qnx.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2017-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2017-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-solita.adb gcc-13.1.0/gcc/ada/libgnarl/s-solita.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-solita.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-solita.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Soft_Links.Tasking i
*** 188,194 ****
        --  fall-back handler applies only to the dependent tasks of the task".
  
        if Self_Id.Common.Specific_Handler /= null then
!          Self_Id.Common.Specific_Handler.all (Cause, Self_Id, EO);
        end if;
     end Task_Termination_Handler_T;
  
--- 188,201 ----
        --  fall-back handler applies only to the dependent tasks of the task".
  
        if Self_Id.Common.Specific_Handler /= null then
!          begin
!             Self_Id.Common.Specific_Handler.all (Cause, Self_Id, EO);
!          exception
!             --  RM-C.7.3(16) requires all exceptions raised here to be ignored
! 
!             when others =>
!                null;
!          end;
        end if;
     end Task_Termination_Handler_T;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-solita.ads gcc-13.1.0/gcc/ada/libgnarl/s-solita.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-solita.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-solita.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-stusta.adb gcc-13.1.0/gcc/ada/libgnarl/s-stusta.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-stusta.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-stusta.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-stusta.ads gcc-13.1.0/gcc/ada/libgnarl/s-stusta.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-stusta.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-stusta.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taasde.adb gcc-13.1.0/gcc/ada/libgnarl/s-taasde.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taasde.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taasde.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taasde.ads gcc-13.1.0/gcc/ada/libgnarl/s-taasde.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taasde.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taasde.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tadeca.adb gcc-13.1.0/gcc/ada/libgnarl/s-tadeca.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tadeca.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tadeca.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tadeca.ads gcc-13.1.0/gcc/ada/libgnarl/s-tadeca.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tadeca.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tadeca.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tadert.adb gcc-13.1.0/gcc/ada/libgnarl/s-tadert.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tadert.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tadert.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tadert.ads gcc-13.1.0/gcc/ada/libgnarl/s-tadert.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tadert.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tadert.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                S p e c                                   --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taenca.adb gcc-13.1.0/gcc/ada/libgnarl/s-taenca.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taenca.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taenca.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taenca.ads gcc-13.1.0/gcc/ada/libgnarl/s-taenca.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taenca.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taenca.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprob.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprob.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprob.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprob.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprob.ads gcc-13.1.0/gcc/ada/libgnarl/s-taprob.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprob.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprob.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop.ads gcc-13.1.0/gcc/ada/libgnarl/s-taprop.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__dummy.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__hpux-dce.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__linux.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__linux.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__linux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__linux.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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- --
*************** package body System.Task_Primitives.Oper
*** 96,102 ****
     Foreign_Task_Elaborated : aliased Boolean := True;
     --  Used to identified fake tasks (i.e., non-Ada Threads)
  
!    Use_Alternate_Stack : constant Boolean := Alternate_Stack_Size /= 0;
     --  Whether to use an alternate signal stack for stack overflows
  
     Abort_Handler_Installed : Boolean := False;
--- 96,102 ----
     Foreign_Task_Elaborated : aliased Boolean := True;
     --  Used to identified fake tasks (i.e., non-Ada Threads)
  
!    Use_Alternate_Stack : Boolean := Alternate_Stack_Size /= 0;
     --  Whether to use an alternate signal stack for stack overflows
  
     Abort_Handler_Installed : Boolean := False;
*************** package body System.Task_Primitives.Oper
*** 1375,1383 ****
        function State
          (Int : System.Interrupt_Management.Interrupt_ID) return Character;
        pragma Import (C, State, "__gnat_get_interrupt_state");
!       --  Get interrupt state.  Defined in a-init.c
!       --  The input argument is the interrupt number,
!       --  and the result is one of the following:
  
        Default : constant Character := 's';
        --    'n'   this interrupt not set by any Interrupt_State pragma
--- 1375,1383 ----
        function State
          (Int : System.Interrupt_Management.Interrupt_ID) return Character;
        pragma Import (C, State, "__gnat_get_interrupt_state");
!       --  Get interrupt state. Defined in init.c.
!       --  The input argument is the interrupt number, and the result is one of
!       --  the following:
  
        Default : constant Character := 's';
        --    'n'   this interrupt not set by any Interrupt_State pragma
*************** package body System.Task_Primitives.Oper
*** 1409,1414 ****
--- 1409,1420 ----
  
        Specific.Initialize (Environment_Task);
  
+       --  Do not use an alternate stack if no handler for SEGV is installed
+ 
+       if State (SIGSEGV) = Default then
+          Use_Alternate_Stack := False;
+       end if;
+ 
        if Use_Alternate_Stack then
           Environment_Task.Common.Task_Alternate_Stack :=
             Alternate_Stack'Address;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__mingw.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__posix.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__qnx.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__qnx.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__qnx.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__qnx.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__rtems.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__rtems.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__rtems.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__rtems.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__solaris.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__solaris.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__solaris.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__solaris.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taprop__vxworks.adb gcc-13.1.0/gcc/ada/libgnarl/s-taprop__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taprop__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taprop__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tarest.adb gcc-13.1.0/gcc/ada/libgnarl/s-tarest.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tarest.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tarest.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tarest.ads gcc-13.1.0/gcc/ada/libgnarl/s-tarest.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tarest.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tarest.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasdeb.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasdeb.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasdeb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasdeb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasdeb.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasdeb.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasdeb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasdeb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasinf.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                           (Compiler Interface)                           --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                           (Compiler Interface)                           --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasinf.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__linux.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__linux.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__linux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__linux.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__linux.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__linux.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__linux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__linux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2007-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2007-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__mingw.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__mingw.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2007-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2007-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__solaris.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__solaris.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__solaris.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__solaris.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__solaris.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__solaris.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__solaris.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__solaris.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasinf__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasini.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasini.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasini.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasini.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasini.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasini.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasini.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasini.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taskin.adb gcc-13.1.0/gcc/ada/libgnarl/s-taskin.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-taskin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taskin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taskin.ads gcc-13.1.0/gcc/ada/libgnarl/s-taskin.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taskin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taskin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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- --
*************** package System.Tasking is
*** 1168,1174 ****
        --
        --  Protection: Self.L. Once a task has set Self.Stage to Completing, it
        --  has exclusive access to this field.
!    end record;
  
     --------------------
     -- Initialization --
--- 1168,1174 ----
        --
        --  Protection: Self.L. Once a task has set Self.Stage to Completing, it
        --  has exclusive access to this field.
!    end record; -- Ada_Task_Control_Block
  
     --------------------
     -- Initialization --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__dummy.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__hpux-dce.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__lynxos.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__lynxos.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__lynxos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__lynxos.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__mingw.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1991-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__posix-noaltstack.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  S p e c                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__posix.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__posix.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__posix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__posix.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --            Copyright (C) 1991-2017, Florida State University             --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__solaris.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__solaris.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__solaris.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__solaris.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-taspri__vxworks.ads gcc-13.1.0/gcc/ada/libgnarl/s-taspri__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-taspri__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-taspri__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasque.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasque.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasque.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasque.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasque.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasque.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasque.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasque.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasren.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasren.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasren.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasren.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasren.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasren.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasren.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasren.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasres.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasres.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasres.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasres.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tassta.adb gcc-13.1.0/gcc/ada/libgnarl/s-tassta.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tassta.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tassta.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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- --
*************** package body System.Tasking.Stages is
*** 1307,1316 ****
        if TH /= null then
           begin
              TH.all (Cause, Self_ID, EO);
- 
           exception
! 
!             --  RM-C.7.3 requires all exceptions raised here to be ignored
  
              when others =>
                 null;
--- 1307,1314 ----
        if TH /= null then
           begin
              TH.all (Cause, Self_ID, EO);
           exception
!             --  RM-C.7.3(16) requires all exceptions raised here to be ignored
  
              when others =>
                 null;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tassta.ads gcc-13.1.0/gcc/ada/libgnarl/s-tassta.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tassta.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tassta.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasuti.adb gcc-13.1.0/gcc/ada/libgnarl/s-tasuti.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasuti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasuti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tasuti.ads gcc-13.1.0/gcc/ada/libgnarl/s-tasuti.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tasuti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tasuti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tataat.adb gcc-13.1.0/gcc/ada/libgnarl/s-tataat.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tataat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tataat.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 2014-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tataat.ads gcc-13.1.0/gcc/ada/libgnarl/s-tataat.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tataat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tataat.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --            Copyright (C) 2014-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpinop.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpinop.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpinop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpinop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpinop.ads gcc-13.1.0/gcc/ada/libgnarl/s-tpinop.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpinop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpinop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpoaal.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpoaal.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpoaal.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpoaal.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --        Copyright (C) 2011-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --        Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpoben.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpoben.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpoben.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpoben.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                               B o d y                                    --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                               B o d y                                    --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpoben.ads gcc-13.1.0/gcc/ada/libgnarl/s-tpoben.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpoben.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpoben.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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- --
*************** package System.Tasking.Protected_Objects
*** 189,202 ****
     --  Lock a protected object for write access. Upon return, the caller owns
     --  the lock to this object, and no other call to Lock or Lock_Read_Only
     --  with the same argument will return until the corresponding call to
!    --  Unlock has been made by the caller. Program_Error is raised in case of
!    --  ceiling violation.
  
     procedure Lock_Entries_With_Status
       (Object            : Protection_Entries_Access;
        Ceiling_Violation : out Boolean);
     --  Same as above, but return the ceiling violation status instead of
!    --  raising Program_Error.
  
     procedure Lock_Read_Only_Entries (Object : Protection_Entries_Access);
     --  Lock a protected object for read access. Upon return, the caller owns
--- 189,207 ----
     --  Lock a protected object for write access. Upon return, the caller owns
     --  the lock to this object, and no other call to Lock or Lock_Read_Only
     --  with the same argument will return until the corresponding call to
!    --  Unlock has been made by the caller. Program_Error is raised in case
!    --  of ceiling violation, or if the protected object has already been
!    --  finalized, or if Detect_Blocking is true and the protected object
!    --  is already locked by the current task. In the Program_Error cases,
!    --  the object is not locked.
  
     procedure Lock_Entries_With_Status
       (Object            : Protection_Entries_Access;
        Ceiling_Violation : out Boolean);
     --  Same as above, but return the ceiling violation status instead of
!    --  raising Program_Error. This raises Program_Error in the other
!    --  cases mentioned for Lock_Entries. In the Program_Error cases,
!    --  the object is not locked.
  
     procedure Lock_Read_Only_Entries (Object : Protection_Entries_Access);
     --  Lock a protected object for read access. Upon return, the caller owns
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpobmu.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpobmu.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpobmu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpobmu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                     M U L T I P R O C E S S O R S                        --
  --                               B o d y                                    --
  --                                                                          --
! --                       Copyright (C) 2010-2022, 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- --
--- 6,12 ----
  --                     M U L T I P R O C E S S O R S                        --
  --                               B o d y                                    --
  --                                                                          --
! --                       Copyright (C) 2010-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpobmu.ads gcc-13.1.0/gcc/ada/libgnarl/s-tpobmu.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpobmu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpobmu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                     M U L T I P R O C E S S O R S                        --
  --                                S p e c                                   --
  --                                                                          --
! --                     Copyright (C) 2010-2022, 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- --
--- 6,12 ----
  --                     M U L T I P R O C E S S O R S                        --
  --                                S p e c                                   --
  --                                                                          --
! --                     Copyright (C) 2010-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpobop.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpobop.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpobop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpobop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpobop.ads gcc-13.1.0/gcc/ada/libgnarl/s-tpobop.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpobop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpobop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopmo.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopmo.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopmo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopmo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__posix-foreign.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__posix.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__posix.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__solaris.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__tls.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__tls.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__tls.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__tls.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-rtp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks-tls.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tpopsp__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tporft.adb gcc-13.1.0/gcc/ada/libgnarl/s-tporft.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tporft.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tporft.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tposen.adb gcc-13.1.0/gcc/ada/libgnarl/s-tposen.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-tposen.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tposen.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --         Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-tposen.ads gcc-13.1.0/gcc/ada/libgnarl/s-tposen.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-tposen.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-tposen.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext.adb gcc-13.1.0/gcc/ada/libgnarl/s-vxwext.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwext.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__kernel-smp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__kernel.adb gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__kernel.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__kernel.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__kernel.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__kernel.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__kernel.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__kernel.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__rtp-smp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__rtp.adb gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__rtp.adb
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__rtp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__rtp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   B o d y                                --
  --                                                                          --
! --            Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__rtp.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__rtp.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwext__rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwext__rtp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --            Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__aarch64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__arm.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__arm.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__arm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__arm.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__ppc.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__ppc.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__ppc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__ppc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__x86.ads gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__x86.ads
*** gcc-12.2.0/gcc/ada/libgnarl/s-vxwork__x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/s-vxwork__x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnarl/thread.c gcc-13.1.0/gcc/ada/libgnarl/thread.c
*** gcc-12.2.0/gcc/ada/libgnarl/thread.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnarl/thread.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2011-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2011-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-assert.adb gcc-13.1.0/gcc/ada/libgnat/a-assert.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-assert.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-assert.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2007-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-assert.ads gcc-13.1.0/gcc/ada/libgnat/a-assert.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-assert.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-assert.ads	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
  --                                                                          --
  --                       A D A . A S S E R T I O N S                        --
  --                                                                          --
! --            Copyright (C) 2015-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
--- 4,10 ----
  --                                                                          --
  --                       A D A . A S S E R T I O N S                        --
  --                                                                          --
! --            Copyright (C) 2015-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-btgbso.adb gcc-13.1.0/gcc/ada/libgnat/a-btgbso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-btgbso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-btgbso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-btgbso.ads gcc-13.1.0/gcc/ada/libgnat/a-btgbso.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-btgbso.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-btgbso.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calari.adb gcc-13.1.0/gcc/ada/libgnat/a-calari.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-calari.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calari.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calari.ads gcc-13.1.0/gcc/ada/libgnat/a-calari.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-calari.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calari.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calcon.adb gcc-13.1.0/gcc/ada/libgnat/a-calcon.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-calcon.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calcon.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --        Copyright (C) 2008-2022, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --        Copyright (C) 2008-2023, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calcon.ads gcc-13.1.0/gcc/ada/libgnat/a-calcon.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-calcon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calcon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-caldel.adb gcc-13.1.0/gcc/ada/libgnat/a-caldel.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-caldel.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-caldel.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                                                                          --
  --             Copyright (C) 1991-2017, Florida State University            --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-caldel.ads gcc-13.1.0/gcc/ada/libgnat/a-caldel.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-caldel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-caldel.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calend.adb gcc-13.1.0/gcc/ada/libgnat/a-calend.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-calend.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calend.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calend.ads gcc-13.1.0/gcc/ada/libgnat/a-calend.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-calend.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calend.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calfor.adb gcc-13.1.0/gcc/ada/libgnat/a-calfor.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-calfor.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calfor.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-calfor.ads gcc-13.1.0/gcc/ada/libgnat/a-calfor.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-calfor.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-calfor.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-catizo.adb gcc-13.1.0/gcc/ada/libgnat/a-catizo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-catizo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-catizo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbdlli.adb gcc-13.1.0/gcc/ada/libgnat/a-cbdlli.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cbdlli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbdlli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 75,81 ****
        Src_Pos : Count_Type;
        Tgt_Pos : out Count_Type);
  
!    function Vet (Position : Cursor) return Boolean;
     --  Checks invariants of the cursor and its designated container, as a
     --  simple way of detecting dangling references (see operation Free for a
     --  description of the detection mechanism), returning True if all checks
--- 75,81 ----
        Src_Pos : Count_Type;
        Tgt_Pos : out Count_Type);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
     --  Checks invariants of the cursor and its designated container, as a
     --  simple way of detecting dangling references (see operation Free for a
     --  description of the detection mechanism), returning True if all checks
*************** is
*** 2210,2215 ****
--- 2210,2219 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = 0 then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbdlli.ads gcc-13.1.0/gcc/ada/libgnat/a-cbdlli.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cbdlli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbdlli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 364,373 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased List'Class) return Reference_Control_Type;
--- 364,373 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased List'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbhama.adb gcc-13.1.0/gcc/ada/libgnat/a-cbhama.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cbhama.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbhama.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 66,72 ****
     procedure Set_Next (Node : in out Node_Type; Next : Count_Type);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean;
  
     --------------------------
     -- Local Instantiations --
--- 66,72 ----
     procedure Set_Next (Node : in out Node_Type; Next : Count_Type);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     --------------------------
     -- Local Instantiations --
*************** is
*** 1175,1180 ****
--- 1175,1184 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = 0 then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbhama.ads gcc-13.1.0/gcc/ada/libgnat/a-cbhama.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cbhama.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbhama.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 439,448 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
--- 439,447 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbhase.adb gcc-13.1.0/gcc/ada/libgnat/a-cbhase.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cbhase.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbhase.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 79,85 ****
     procedure Set_Next (Node : in out Node_Type; Next : Count_Type);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean;
  
     --------------------------
     -- Local Instantiations --
--- 79,85 ----
     procedure Set_Next (Node : in out Node_Type; Next : Count_Type);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     --------------------------
     -- Local Instantiations --
*************** is
*** 1496,1501 ****
--- 1496,1505 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = 0 then
           return Position.Container = null;
        end if;
*************** is
*** 1595,1600 ****
--- 1599,1662 ----
        raise Program_Error with "attempt to stream reference";
     end Write;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean is
+    begin
+       pragma Assert (Vet (Position), "bad cursor in Has_Element");
+       pragma Assert ((Position.Container = null) = (Position.Node = 0),
+                      "bad nullity in Has_Element");
+       return Position.Container = Container'Unrestricted_Access;
+    end Has_Element;
+ 
+    function Tampering_With_Cursors_Prohibited
+      (Container : Set) return Boolean
+    is
+    begin
+       return Is_Busy (Container.TC);
+    end Tampering_With_Cursors_Prohibited;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Element (Position);
+    end Element;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type)) is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       Query_Element (Position, Process);
+    end Query_Element;
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor is
+    begin
+       if Checks and then
+         not (Position = No_Element or else Has_Element (Container, Position))
+       then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Next (Position);
+    end Next;
+ 
+    procedure Next (Container : Set; Position : in out Cursor) is
+    begin
+       Position := Next (Container, Position);
+    end Next;
+ 
+    ------------------
+    -- Generic_Keys --
+    ------------------
+ 
     package body Generic_Keys is
  
        -----------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbhase.ads gcc-13.1.0/gcc/ada/libgnat/a-cbhase.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cbhase.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbhase.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** is
*** 369,374 ****
--- 369,393 ----
       (Container : Set)
        return Set_Iterator_Interfaces.Forward_Iterator'Class;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean;
+ 
+    function Tampering_With_Cursors_Prohibited (Container : Set) return Boolean;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type));
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor;
+ 
+    procedure Next (Container : Set; Position : in out Cursor);
+ 
+    ----------------
+ 
     generic
        type Key_Type (<>) is private;
  
*************** is
*** 384,389 ****
--- 403,411 ----
        --  Applies generic formal operation Key to the element of the node
        --  designated by Position.
  
+       function Key (Container : Set; Position : Cursor) return Key_Type is
+         (Key (Element (Container, Position)));
+ 
        function Element (Container : Set; Key : Key_Type) return Element_Type;
        --  Searches (as per the key-based Find) for the node containing Key, and
        --  returns the associated element.
*************** private
*** 574,583 ****
  
     for Constant_Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
--- 596,604 ----
  
     for Constant_Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbmutr.adb gcc-13.1.0/gcc/ada/libgnat/a-cbmutr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cbmutr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbmutr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2011-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2011-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbmutr.ads gcc-13.1.0/gcc/ada/libgnat/a-cbmutr.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cbmutr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbmutr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2023, 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 --
*************** private
*** 386,395 ****
        Item   : out Reference_Type);
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Tree'Class) return Reference_Control_Type;
--- 386,392 ----
        Item   : out Reference_Type);
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
  
     function Pseudo_Reference
       (Container : aliased Tree'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cborma.adb gcc-13.1.0/gcc/ada/libgnat/a-cborma.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cborma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cborma.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cborma.ads gcc-13.1.0/gcc/ada/libgnat/a-cborma.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cborma.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cborma.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 341,350 ****
  
     for Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions.  See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
--- 341,350 ----
  
     for Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cborse.adb gcc-13.1.0/gcc/ada/libgnat/a-cborse.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cborse.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cborse.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 688,693 ****
--- 688,749 ----
                else Cursor'(Container'Unrestricted_Access, Node));
     end Floor;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean is
+    begin
+       pragma Assert
+         (Position.Container = null or else Vet (Container, Position.Node),
+          "bad cursor in Has_Element");
+       pragma Assert ((Position.Container = null) = (Position.Node = 0),
+                      "bad nullity in Has_Element");
+       return Position.Container = Container'Unrestricted_Access;
+    end Has_Element;
+ 
+    function Tampering_With_Cursors_Prohibited
+      (Container : Set) return Boolean
+    is
+    begin
+       return Is_Busy (Container.TC);
+    end Tampering_With_Cursors_Prohibited;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Element (Position);
+    end Element;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type)) is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       Query_Element (Position, Process);
+    end Query_Element;
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor is
+    begin
+       if Checks and then
+         not (Position = No_Element or else Has_Element (Container, Position))
+       then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Next (Position);
+    end Next;
+ 
+    procedure Next (Container : Set; Position : in out Cursor) is
+    begin
+       Position := Next (Container, Position);
+    end Next;
+ 
     ------------------
     -- Generic_Keys --
     ------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cborse.ads gcc-13.1.0/gcc/ada/libgnat/a-cborse.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cborse.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cborse.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** is
*** 230,235 ****
--- 230,254 ----
        Start     : Cursor)
        return Set_Iterator_Interfaces.Reversible_Iterator'class;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean;
+ 
+    function Tampering_With_Cursors_Prohibited (Container : Set) return Boolean;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type));
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor;
+ 
+    procedure Next (Container : Set; Position : in out Cursor);
+ 
+    ----------------
+ 
     generic
        type Key_Type (<>) is private;
  
*************** is
*** 243,248 ****
--- 262,270 ----
  
        function Key (Position : Cursor) return Key_Type;
  
+       function Key (Container : Set; Position : Cursor) return Key_Type is
+         (Key (Element (Container, Position)));
+ 
        function Element (Container : Set; Key : Key_Type) return Element_Type;
  
        procedure Replace
*************** private
*** 413,422 ****
  
     for Constant_Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
--- 435,444 ----
  
     for Constant_Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbprqu.adb gcc-13.1.0/gcc/ada/libgnat/a-cbprqu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cbprqu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbprqu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbprqu.ads gcc-13.1.0/gcc/ada/libgnat/a-cbprqu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cbprqu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbprqu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbsyqu.adb gcc-13.1.0/gcc/ada/libgnat/a-cbsyqu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cbsyqu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbsyqu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cbsyqu.ads gcc-13.1.0/gcc/ada/libgnat/a-cbsyqu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cbsyqu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cbsyqu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cdlili.adb gcc-13.1.0/gcc/ada/libgnat/a-cdlili.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cdlili.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cdlili.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 64,70 ****
        Source   : in out List;
        Position : Node_Access);
  
!    function Vet (Position : Cursor) return Boolean;
     --  Checks invariants of the cursor and its designated container, as a
     --  simple way of detecting dangling references (see operation Free for a
     --  description of the detection mechanism), returning True if all checks
--- 64,70 ----
        Source   : in out List;
        Position : Node_Access);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
     --  Checks invariants of the cursor and its designated container, as a
     --  simple way of detecting dangling references (see operation Free for a
     --  description of the detection mechanism), returning True if all checks
*************** is
*** 1991,1996 ****
--- 1991,2000 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = null then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cdlili.ads gcc-13.1.0/gcc/ada/libgnat/a-cdlili.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cdlili.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cdlili.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 374,383 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased List'Class) return Reference_Control_Type;
--- 374,383 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased List'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfdlli.adb gcc-13.1.0/gcc/ada/libgnat/a-cfdlli.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cfdlli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfdlli.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1894 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.FORMAL_DOUBLY_LINKED_LISTS                --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Stable_Sorting; use Ada.Containers.Stable_Sorting;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Doubly_Linked_Lists with
-   SPARK_Mode => Off
- is
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    procedure Allocate
-      (Container : in out List;
-       New_Item  : Element_Type;
-       New_Node  : out Count_Type);
- 
-    procedure Free (Container : in out List; X : Count_Type);
- 
-    procedure Insert_Internal
-      (Container : in out List;
-       Before    : Count_Type;
-       New_Node  : Count_Type);
- 
-    function Vet (L : List; Position : Cursor) return Boolean;
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left : List; Right : List) return Boolean is
-       LI : Count_Type;
-       RI : Count_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       if Left.Length /= Right.Length then
-          return False;
-       end if;
- 
-       LI := Left.First;
-       RI := Left.First;
-       while LI /= 0 loop
-          if Left.Nodes (LI).Element /= Right.Nodes (LI).Element then
-             return False;
-          end if;
- 
-          LI := Left.Nodes (LI).Next;
-          RI := Right.Nodes (RI).Next;
-       end loop;
- 
-       return True;
-    end "=";
- 
-    --------------
-    -- Allocate --
-    --------------
- 
-    procedure Allocate
-      (Container : in out List;
-       New_Item  : Element_Type;
-       New_Node  : out Count_Type)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Container.Free >= 0 then
-          New_Node := Container.Free;
-          N (New_Node).Element := New_Item;
-          Container.Free := N (New_Node).Next;
- 
-       else
-          New_Node := abs Container.Free;
-          N (New_Node).Element := New_Item;
-          Container.Free := Container.Free - 1;
-       end if;
-    end Allocate;
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out List; New_Item : Element_Type) is
-    begin
-       Insert (Container, No_Element, New_Item, 1);
-    end Append;
- 
-    procedure Append
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       Insert (Container, No_Element, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out List; Source : List) is
-       N : Node_Array renames Source.Nodes;
-       J : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Source.Length then
-          raise Constraint_Error with  -- ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       J := Source.First;
-       while J /= 0 loop
-          Append (Target, N (J).Element, 1);
-          J := N (J).Next;
-       end loop;
-    end Assign;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out List) is
-       N : Node_Array renames Container.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Container.Length = 0 then
-          pragma Assert (Container.First = 0);
-          pragma Assert (Container.Last  = 0);
-          return;
-       end if;
- 
-       pragma Assert (Container.First >= 1);
-       pragma Assert (Container.Last  >= 1);
-       pragma Assert (N (Container.First).Prev = 0);
-       pragma Assert (N (Container.Last).Next  = 0);
- 
-       while Container.Length > 1 loop
-          X := Container.First;
- 
-          Container.First := N (X).Next;
-          N (Container.First).Prev := 0;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (Container, X);
-       end loop;
- 
-       X := Container.First;
- 
-       Container.First := 0;
-       Container.Last := 0;
-       Container.Length := 0;
- 
-       Free (Container, X);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased List;
-       Position  : Cursor) return not null access constant Element_Type
-    is
-    begin
-       if not Has_Element (Container => Container, Position  => Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       return Container.Nodes (Position.Node).Element'Access;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : List;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : List;
-       Capacity : Count_Type := 0) return List
-    is
-       C : constant Count_Type := Count_Type'Max (Source.Capacity, Capacity);
-       N : Count_Type;
-       P : List (C);
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       N := 1;
-       while N <= Source.Capacity loop
-          P.Nodes (N).Prev := Source.Nodes (N).Prev;
-          P.Nodes (N).Next := Source.Nodes (N).Next;
-          P.Nodes (N).Element := Source.Nodes (N).Element;
-          N := N + 1;
-       end loop;
- 
-       P.Free   := Source.Free;
-       P.Length := Source.Length;
-       P.First  := Source.First;
-       P.Last   := Source.Last;
- 
-       if P.Free >= 0 then
-          N := Source.Capacity + 1;
-          while N <= C loop
-             Free (P, N);
-             N := N + 1;
-          end loop;
-       end if;
- 
-       return P;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out List; Position : in out Cursor) is
-    begin
-       Delete
-         (Container => Container,
-          Position  => Position,
-          Count     => 1);
-    end Delete;
- 
-    procedure Delete
-      (Container : in out List;
-       Position  : in out Cursor;
-       Count     : Count_Type)
-    is
-       N : Node_Array renames Container.Nodes;
-       X : Count_Type;
- 
-    begin
-       if not Has_Element (Container => Container,
-                           Position  => Position)
-       then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container, Position), "bad cursor in Delete");
-       pragma Assert (Container.First >= 1);
-       pragma Assert (Container.Last  >= 1);
-       pragma Assert (N (Container.First).Prev = 0);
-       pragma Assert (N (Container.Last).Next  = 0);
- 
-       if Position.Node = Container.First then
-          Delete_First (Container, Count);
-          Position := No_Element;
-          return;
-       end if;
- 
-       if Count = 0 then
-          Position := No_Element;
-          return;
-       end if;
- 
-       for Index in 1 .. Count loop
-          pragma Assert (Container.Length >= 2);
- 
-          X := Position.Node;
-          Container.Length := Container.Length - 1;
- 
-          if X = Container.Last then
-             Position := No_Element;
- 
-             Container.Last := N (X).Prev;
-             N (Container.Last).Next := 0;
- 
-             Free (Container, X);
-             return;
-          end if;
- 
-          Position.Node := N (X).Next;
-          pragma Assert (N (Position.Node).Prev >= 0);
- 
-          N (N (X).Next).Prev := N (X).Prev;
-          N (N (X).Prev).Next := N (X).Next;
- 
-          Free (Container, X);
-       end loop;
- 
-       Position := No_Element;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out List) is
-    begin
-       Delete_First
-         (Container => Container,
-          Count     => 1);
-    end Delete_First;
- 
-    procedure Delete_First (Container : in out List; Count : Count_Type) is
-       N : Node_Array renames Container.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Count >= Container.Length then
-          Clear (Container);
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       for J in 1 .. Count loop
-          X := Container.First;
-          pragma Assert (N (N (X).Next).Prev = Container.First);
- 
-          Container.First := N (X).Next;
-          N (Container.First).Prev := 0;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (Container, X);
-       end loop;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out List) is
-    begin
-       Delete_Last
-         (Container => Container,
-          Count     => 1);
-    end Delete_Last;
- 
-    procedure Delete_Last (Container : in out List; Count : Count_Type) is
-       N : Node_Array renames Container.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Count >= Container.Length then
-          Clear (Container);
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       for J in 1 .. Count loop
-          X := Container.Last;
-          pragma Assert (N (N (X).Prev).Next = Container.Last);
- 
-          Container.Last := N (X).Prev;
-          N (Container.Last).Next := 0;
- 
-          Container.Length := Container.Length - 1;
- 
-          Free (Container, X);
-       end loop;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Container : List;
-       Position  : Cursor) return Element_Type
-    is
-    begin
-       if not Has_Element (Container => Container, Position  => Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       return Container.Nodes (Position.Node).Element;
-    end Element;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       From : Count_Type := Position.Node;
- 
-    begin
-       if From = 0 and Container.Length = 0 then
-          return No_Element;
-       end if;
- 
-       if From = 0 then
-          From := Container.First;
-       end if;
- 
-       if Position.Node /= 0 and then not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       while From /= 0 loop
-          if Container.Nodes (From).Element = Item then
-             return (Node => From);
-          end if;
- 
-          From := Container.Nodes (From).Next;
-       end loop;
- 
-       return No_Element;
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : List) return Cursor is
-    begin
-       if Container.First = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Container.First);
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : List) return Element_Type is
-       F : constant Count_Type := Container.First;
- 
-    begin
-       if F = 0 then
-          raise Constraint_Error with "list is empty";
-       else
-          return Container.Nodes (F).Element;
-       end if;
-    end First_Element;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       ----------------------------
-       -- Lift_Abstraction_Level --
-       ----------------------------
- 
-       procedure Lift_Abstraction_Level (Container : List) is null;
- 
-       -------------------------
-       -- M_Elements_In_Union --
-       -------------------------
- 
-       function M_Elements_In_Union
-         (Container : M.Sequence;
-          Left      : M.Sequence;
-          Right     : M.Sequence) return Boolean
-       is
-          Elem : Element_Type;
- 
-       begin
-          for Index in 1 .. M.Length (Container) loop
-             Elem := Element (Container, Index);
- 
-             if not M.Contains (Left, 1, M.Length (Left), Elem)
-                and then not M.Contains (Right, 1, M.Length (Right), Elem)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_In_Union;
- 
-       -------------------------
-       -- M_Elements_Included --
-       -------------------------
- 
-       function M_Elements_Included
-         (Left  : M.Sequence;
-          L_Fst : Positive_Count_Type := 1;
-          L_Lst : Count_Type;
-          Right : M.Sequence;
-          R_Fst : Positive_Count_Type := 1;
-          R_Lst : Count_Type) return Boolean
-       is
-       begin
-          for I in L_Fst .. L_Lst loop
-             declare
-                Found : Boolean := False;
-                J     : Count_Type := R_Fst - 1;
- 
-             begin
-                while not Found and J < R_Lst loop
-                   J := J + 1;
-                   if Element (Left, I) = Element (Right, J) then
-                      Found := True;
-                   end if;
-                end loop;
- 
-                if not Found then
-                   return False;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end M_Elements_Included;
- 
-       -------------------------
-       -- M_Elements_Reversed --
-       -------------------------
- 
-       function M_Elements_Reversed
-         (Left  : M.Sequence;
-          Right : M.Sequence) return Boolean
-       is
-          L : constant Count_Type := M.Length (Left);
- 
-       begin
-          if L /= M.Length (Right) then
-             return False;
-          end if;
- 
-          for I in 1 .. L loop
-             if Element (Left, I) /= Element (Right, L - I + 1) then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_Reversed;
- 
-       ------------------------
-       -- M_Elements_Swapped --
-       ------------------------
- 
-       function M_Elements_Swapped
-         (Left  : M.Sequence;
-          Right : M.Sequence;
-          X     : Positive_Count_Type;
-          Y     : Positive_Count_Type) return Boolean
-       is
-       begin
-          if M.Length (Left) /= M.Length (Right)
-            or else Element (Left, X) /= Element (Right, Y)
-            or else Element (Left, Y) /= Element (Right, X)
-          then
-             return False;
-          end if;
- 
-          for I in 1 .. M.Length (Left) loop
-             if I /= X and then I /= Y
-               and then Element (Left, I) /= Element (Right, I)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_Swapped;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : List) return M.Sequence is
-          Position : Count_Type := Container.First;
-          R        : M.Sequence;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := M.Add (R, Container.Nodes (Position).Element);
-             Position := Container.Nodes (Position).Next;
-          end loop;
- 
-          return R;
-       end Model;
- 
-       -----------------------
-       -- Mapping_Preserved --
-       -----------------------
- 
-       function Mapping_Preserved
-         (M_Left  : M.Sequence;
-          M_Right : M.Sequence;
-          P_Left  : P.Map;
-          P_Right : P.Map) return Boolean
-       is
-       begin
-          for C of P_Left loop
-             if not P.Has_Key (P_Right, C)
-               or else P.Get (P_Left,  C) > M.Length (M_Left)
-               or else P.Get (P_Right, C) > M.Length (M_Right)
-               or else M.Get (M_Left,  P.Get (P_Left,  C)) /=
-                       M.Get (M_Right, P.Get (P_Right, C))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          for C of P_Right loop
-             if not P.Has_Key (P_Left, C) then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Mapping_Preserved;
- 
-       -------------------------
-       -- P_Positions_Shifted --
-       -------------------------
- 
-       function P_Positions_Shifted
-         (Small : P.Map;
-          Big   : P.Map;
-          Cut   : Positive_Count_Type;
-          Count : Count_Type := 1) return Boolean
-       is
-       begin
-          for Cu of Small loop
-             if not P.Has_Key (Big, Cu) then
-                return False;
-             end if;
-          end loop;
- 
-          for Cu of Big loop
-             declare
-                Pos : constant Positive_Count_Type := P.Get (Big, Cu);
- 
-             begin
-                if Pos < Cut then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu)
-                   then
-                      return False;
-                   end if;
- 
-                elsif Pos >= Cut + Count then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu) + Count
-                   then
-                      return False;
-                   end if;
- 
-                else
-                   if P.Has_Key (Small, Cu) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end P_Positions_Shifted;
- 
-       -------------------------
-       -- P_Positions_Swapped --
-       -------------------------
- 
-       function P_Positions_Swapped
-         (Left  : P.Map;
-          Right : P.Map;
-          X     : Cursor;
-          Y     : Cursor) return Boolean
-       is
-       begin
-          if not P.Has_Key (Left, X)
-            or not P.Has_Key (Left, Y)
-            or not P.Has_Key (Right, X)
-            or not P.Has_Key (Right, Y)
-          then
-             return False;
-          end if;
- 
-          if P.Get (Left, X) /= P.Get (Right, Y)
-            or P.Get (Left, Y) /= P.Get (Right, X)
-          then
-             return False;
-          end if;
- 
-          for C of Left loop
-             if not P.Has_Key (Right, C) then
-                return False;
-             end if;
-          end loop;
- 
-          for C of Right loop
-             if not P.Has_Key (Left, C)
-               or else (C /= X
-                         and C /= Y
-                         and P.Get (Left, C) /= P.Get (Right, C))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end P_Positions_Swapped;
- 
-       ---------------------------
-       -- P_Positions_Truncated --
-       ---------------------------
- 
-       function P_Positions_Truncated
-         (Small : P.Map;
-          Big   : P.Map;
-          Cut   : Positive_Count_Type;
-          Count : Count_Type := 1) return Boolean
-       is
-       begin
-          for Cu of Small loop
-             if not P.Has_Key (Big, Cu) then
-                return False;
-             end if;
-          end loop;
- 
-          for Cu of Big loop
-             declare
-                Pos : constant Positive_Count_Type := P.Get (Big, Cu);
- 
-             begin
-                if Pos < Cut then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu)
-                   then
-                      return False;
-                   end if;
- 
-                elsif Pos >= Cut + Count then
-                   return False;
- 
-                elsif P.Has_Key (Small, Cu) then
-                   return False;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end P_Positions_Truncated;
- 
-       ---------------
-       -- Positions --
-       ---------------
- 
-       function Positions (Container : List) return P.Map is
-          I        : Count_Type := 1;
-          Position : Count_Type := Container.First;
-          R        : P.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := P.Add (R, (Node => Position), I);
-             pragma Assert (P.Length (R) = I);
-             Position := Container.Nodes (Position).Next;
-             I := I + 1;
-          end loop;
- 
-          return R;
-       end Positions;
- 
-    end Formal_Model;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Container : in out List; X : Count_Type) is
-       pragma Assert (X > 0);
-       pragma Assert (X <= Container.Capacity);
- 
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       N (X).Prev := -1;  -- Node is deallocated (not on active list)
- 
-       if Container.Free >= 0 then
-          N (X).Next := Container.Free;
-          Container.Free := X;
- 
-       elsif X + 1 = abs Container.Free then
-          N (X).Next := 0;  -- Not strictly necessary, but marginally safer
-          Container.Free := Container.Free + 1;
- 
-       else
-          Container.Free := abs Container.Free;
- 
-          if Container.Free > Container.Capacity then
-             Container.Free := 0;
- 
-          else
-             for J in Container.Free .. Container.Capacity - 1 loop
-                N (J).Next := J + 1;
-             end loop;
- 
-             N (Container.Capacity).Next := 0;
-          end if;
- 
-          N (X).Next := Container.Free;
-          Container.Free := X;
-       end if;
-    end Free;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting with SPARK_Mode => Off is
- 
-       ------------------
-       -- Formal_Model --
-       ------------------
- 
-       package body Formal_Model is
- 
-          -----------------------
-          -- M_Elements_Sorted --
-          -----------------------
- 
-          function M_Elements_Sorted (Container : M.Sequence) return Boolean is
-          begin
-             if M.Length (Container) = 0 then
-                return True;
-             end if;
- 
-             declare
-                E1 : Element_Type := Element (Container, 1);
- 
-             begin
-                for I in 2 .. M.Length (Container) loop
-                   declare
-                      E2 : constant Element_Type := Element (Container, I);
- 
-                   begin
-                      if E2 < E1 then
-                         return False;
-                      end if;
- 
-                      E1 := E2;
-                   end;
-                end loop;
-             end;
- 
-             return True;
-          end M_Elements_Sorted;
- 
-       end Formal_Model;
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : List) return Boolean is
-          Nodes : Node_Array renames Container.Nodes;
-          Node  : Count_Type := Container.First;
- 
-       begin
-          for J in 2 .. Container.Length loop
-             if Nodes (Nodes (Node).Next).Element < Nodes (Node).Element then
-                return False;
-             else
-                Node := Nodes (Node).Next;
-             end if;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge (Target : in out List; Source : in out List) is
-          LN : Node_Array renames Target.Nodes;
-          RN : Node_Array renames Source.Nodes;
-          LI : Cursor;
-          RI : Cursor;
- 
-       begin
-          if Target'Address = Source'Address then
-             raise Program_Error with "Target and Source denote same container";
-          end if;
- 
-          LI := First (Target);
-          RI := First (Source);
-          while RI.Node /= 0 loop
-             pragma Assert
-               (RN (RI.Node).Next = 0
-                 or else not (RN (RN (RI.Node).Next).Element <
-                              RN (RI.Node).Element));
- 
-             if LI.Node = 0 then
-                Splice (Target, No_Element, Source);
-                return;
-             end if;
- 
-             pragma Assert
-               (LN (LI.Node).Next = 0
-                 or else not (LN (LN (LI.Node).Next).Element <
-                              LN (LI.Node).Element));
- 
-             if RN (RI.Node).Element < LN (LI.Node).Element then
-                declare
-                   RJ : Cursor := RI;
-                   pragma Warnings (Off, RJ);
-                begin
-                   RI.Node := RN (RI.Node).Next;
-                   Splice (Target, LI, Source, RJ);
-                end;
- 
-             else
-                LI.Node := LN (LI.Node).Next;
-             end if;
-          end loop;
-       end Merge;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out List) is
-          N : Node_Array renames Container.Nodes;
-       begin
-          if Container.Length <= 1 then
-             return;
-          end if;
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
- 
-          declare
-             package Descriptors is new List_Descriptors
-               (Node_Ref => Count_Type, Nil => 0);
-             use Descriptors;
- 
-             function Next (Idx : Count_Type) return Count_Type is
-               (N (Idx).Next);
-             procedure Set_Next (Idx : Count_Type; Next : Count_Type)
-               with Inline;
-             procedure Set_Prev (Idx : Count_Type; Prev : Count_Type)
-               with Inline;
-             function "<" (L, R : Count_Type) return Boolean is
-               (N (L).Element < N (R).Element);
-             procedure Update_Container (List : List_Descriptor) with Inline;
- 
-             procedure Set_Next (Idx : Count_Type; Next : Count_Type) is
-             begin
-                N (Idx).Next := Next;
-             end Set_Next;
- 
-             procedure Set_Prev (Idx : Count_Type; Prev : Count_Type) is
-             begin
-                N (Idx).Prev := Prev;
-             end Set_Prev;
- 
-             procedure Update_Container (List : List_Descriptor) is
-             begin
-                Container.First  := List.First;
-                Container.Last   := List.Last;
-                Container.Length := List.Length;
-             end Update_Container;
- 
-             procedure Sort_List is new Doubly_Linked_List_Sort;
-          begin
-             Sort_List (List_Descriptor'(First  => Container.First,
-                                         Last   => Container.Last,
-                                         Length => Container.Length));
-          end;
- 
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
-       end Sort;
- 
-    end Generic_Sorting;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Container : List; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return False;
-       end if;
- 
-       return Container.Nodes (Position.Node).Prev /= -1;
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Count     : Count_Type)
-    is
-       J : Count_Type;
- 
-    begin
-       if Before.Node /= 0 then
-          pragma Assert (Vet (Container, Before), "bad cursor in Insert");
-       end if;
- 
-       if Count = 0 then
-          Position := Before;
-          return;
-       end if;
- 
-       if Container.Length > Container.Capacity - Count then
-          raise Constraint_Error with "new length exceeds capacity";
-       end if;
- 
-       Allocate (Container, New_Item, New_Node => J);
-       Insert_Internal (Container, Before.Node, New_Node => J);
-       Position := (Node => J);
- 
-       for Index in 2 .. Count loop
-          Allocate (Container, New_Item, New_Node => J);
-          Insert_Internal (Container, Before.Node, New_Node => J);
-       end loop;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Position  : out Cursor)
-    is
-    begin
-       Insert
-         (Container => Container,
-          Before    => Before,
-          New_Item  => New_Item,
-          Position  => Position,
-          Count     => 1);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-       Position : Cursor;
- 
-    begin
-       Insert (Container, Before, New_Item, Position, Count);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out List;
-       Before    : Cursor;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
- 
-    begin
-       Insert (Container, Before, New_Item, Position, 1);
-    end Insert;
- 
-    ---------------------
-    -- Insert_Internal --
-    ---------------------
- 
-    procedure Insert_Internal
-      (Container : in out List;
-       Before    : Count_Type;
-       New_Node  : Count_Type)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Container.Length = 0 then
-          pragma Assert (Before = 0);
-          pragma Assert (Container.First = 0);
-          pragma Assert (Container.Last = 0);
- 
-          Container.First := New_Node;
-          Container.Last := New_Node;
- 
-          N (Container.First).Prev := 0;
-          N (Container.Last).Next := 0;
- 
-       elsif Before = 0 then
-          pragma Assert (N (Container.Last).Next = 0);
- 
-          N (Container.Last).Next := New_Node;
-          N (New_Node).Prev := Container.Last;
- 
-          Container.Last := New_Node;
-          N (Container.Last).Next := 0;
- 
-       elsif Before = Container.First then
-          pragma Assert (N (Container.First).Prev = 0);
- 
-          N (Container.First).Prev := New_Node;
-          N (New_Node).Next := Container.First;
- 
-          Container.First := New_Node;
-          N (Container.First).Prev := 0;
- 
-       else
-          pragma Assert (N (Container.First).Prev = 0);
-          pragma Assert (N (Container.Last).Next = 0);
- 
-          N (New_Node).Next := Before;
-          N (New_Node).Prev := N (Before).Prev;
- 
-          N (N (Before).Prev).Next := New_Node;
-          N (Before).Prev := New_Node;
-       end if;
- 
-       Container.Length := Container.Length + 1;
-    end Insert_Internal;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : List) return Boolean is
-    begin
-       return Length (Container) = 0;
-    end Is_Empty;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : List) return Cursor is
-    begin
-       if Container.Last = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Container.Last);
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : List) return Element_Type is
-       L : constant Count_Type := Container.Last;
- 
-    begin
-       if L = 0 then
-          raise Constraint_Error with "list is empty";
-       else
-          return Container.Nodes (L).Element;
-       end if;
-    end Last_Element;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : List) return Count_Type is
-    begin
-       return Container.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out List; Source : in out List) is
-       N : Node_Array renames Source.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Source.Length then
-          raise Constraint_Error with  -- ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       while Source.Length > 1 loop
-          pragma Assert (Source.First in 1 .. Source.Capacity);
-          pragma Assert (Source.Last /= Source.First);
-          pragma Assert (N (Source.First).Prev = 0);
-          pragma Assert (N (Source.Last).Next = 0);
- 
-          --  Copy first element from Source to Target
- 
-          X := Source.First;
-          Append (Target, N (X).Element);  -- optimize away???
- 
-          --  Unlink first node of Source
- 
-          Source.First := N (X).Next;
-          N (Source.First).Prev := 0;
- 
-          Source.Length := Source.Length - 1;
- 
-          --  The representation invariants for Source have been restored. It is
-          --  now safe to free the unlinked node, without fear of corrupting the
-          --  active links of Source.
- 
-          --  Note that the algorithm we use here models similar algorithms used
-          --  in the unbounded form of the doubly-linked list container. In that
-          --  case, Free is an instantation of Unchecked_Deallocation, which can
-          --  fail (because PE will be raised if controlled Finalize fails), so
-          --  we must defer the call until the last step. Here in the bounded
-          --  form, Free merely links the node we have just "deallocated" onto a
-          --  list of inactive nodes, so technically Free cannot fail. However,
-          --  for consistency, we handle Free the same way here as we do for the
-          --  unbounded form, with the pessimistic assumption that it can fail.
- 
-          Free (Source, X);
-       end loop;
- 
-       if Source.Length = 1 then
-          pragma Assert (Source.First in 1 .. Source.Capacity);
-          pragma Assert (Source.Last = Source.First);
-          pragma Assert (N (Source.First).Prev = 0);
-          pragma Assert (N (Source.Last).Next = 0);
- 
-          --  Copy element from Source to Target
- 
-          X := Source.First;
-          Append (Target, N (X).Element);
- 
-          --  Unlink node of Source
- 
-          Source.First := 0;
-          Source.Last := 0;
-          Source.Length := 0;
- 
-          --  Return the unlinked node to the free store
- 
-          Free (Source, X);
-       end if;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Container : List; Position : in out Cursor) is
-    begin
-       Position := Next (Container, Position);
-    end Next;
- 
-    function Next (Container : List; Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Program_Error with "Position cursor has no element";
-       end if;
- 
-       return (Node => Container.Nodes (Position.Node).Next);
-    end Next;
- 
-    -------------
-    -- Prepend --
-    -------------
- 
-    procedure Prepend (Container : in out List; New_Item : Element_Type) is
-    begin
-       Insert (Container, First (Container), New_Item, 1);
-    end Prepend;
- 
-    procedure Prepend
-      (Container : in out List;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       Insert (Container, First (Container), New_Item, Count);
-    end Prepend;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Container : List; Position : in out Cursor) is
-    begin
-       Position := Previous (Container, Position);
-    end Previous;
- 
-    function Previous (Container : List; Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Program_Error with "Position cursor has no element";
-       end if;
- 
-       return (Node => Container.Nodes (Position.Node).Prev);
-    end Previous;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : not null access List;
-       Position  : Cursor) return not null access Element_Type
-    is
-    begin
-       if not Has_Element (Container.all, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       return Container.Nodes (Position.Node).Element'Access;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out List;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad cursor in Replace_Element");
- 
-       Container.Nodes (Position.Node).Element := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out List) is
-       N : Node_Array renames Container.Nodes;
-       I : Count_Type := Container.First;
-       J : Count_Type := Container.Last;
- 
-       procedure Swap (L : Count_Type; R : Count_Type);
- 
-       ----------
-       -- Swap --
-       ----------
- 
-       procedure Swap (L : Count_Type; R : Count_Type) is
-          LN : constant Count_Type := N (L).Next;
-          LP : constant Count_Type := N (L).Prev;
- 
-          RN : constant Count_Type := N (R).Next;
-          RP : constant Count_Type := N (R).Prev;
- 
-       begin
-          if LP /= 0 then
-             N (LP).Next := R;
-          end if;
- 
-          if RN /= 0 then
-             N (RN).Prev := L;
-          end if;
- 
-          N (L).Next := RN;
-          N (R).Prev := LP;
- 
-          if LN = R then
-             pragma Assert (RP = L);
- 
-             N (L).Prev := R;
-             N (R).Next := L;
- 
-          else
-             N (L).Prev := RP;
-             N (RP).Next := L;
- 
-             N (R).Next := LN;
-             N (LN).Prev := R;
-          end if;
-       end Swap;
- 
-    --  Start of processing for Reverse_Elements
- 
-    begin
-       if Container.Length <= 1 then
-          return;
-       end if;
- 
-       pragma Assert (N (Container.First).Prev = 0);
-       pragma Assert (N (Container.Last).Next = 0);
- 
-       Container.First := J;
-       Container.Last  := I;
-       loop
-          Swap (L => I, R => J);
- 
-          J := N (J).Next;
-          exit when I = J;
- 
-          I := N (I).Prev;
-          exit when I = J;
- 
-          Swap (L => J, R => I);
- 
-          I := N (I).Next;
-          exit when I = J;
- 
-          J := N (J).Prev;
-          exit when I = J;
-       end loop;
- 
-       pragma Assert (N (Container.First).Prev = 0);
-       pragma Assert (N (Container.Last).Next = 0);
-    end Reverse_Elements;
- 
-    ------------------
-    -- Reverse_Find --
-    ------------------
- 
-    function Reverse_Find
-      (Container : List;
-       Item      : Element_Type;
-       Position  : Cursor := No_Element) return Cursor
-    is
-       CFirst : Count_Type := Position.Node;
- 
-    begin
-       if CFirst = 0 then
-          CFirst := Container.Last;
-       end if;
- 
-       if Container.Length = 0 then
-          return No_Element;
- 
-       else
-          while CFirst /= 0 loop
-             if Container.Nodes (CFirst).Element = Item then
-                return (Node => CFirst);
-             else
-                CFirst := Container.Nodes (CFirst).Prev;
-             end if;
-          end loop;
- 
-          return No_Element;
-       end if;
-    end Reverse_Find;
- 
-    ------------
-    -- Splice --
-    ------------
- 
-    procedure Splice
-      (Target : in out List;
-       Before : Cursor;
-       Source : in out List)
-    is
-       SN : Node_Array renames Source.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          raise Program_Error with "Target and Source denote same container";
-       end if;
- 
-       if Before.Node /= 0 then
-          pragma Assert (Vet (Target, Before), "bad cursor in Splice");
-       end if;
- 
-       pragma Assert (SN (Source.First).Prev = 0);
-       pragma Assert (SN (Source.Last).Next  = 0);
- 
-       if Target.Length > Count_Type'Base'Last - Source.Length then
-          raise Constraint_Error with "new length exceeds maximum";
-       end if;
- 
-       if Target.Length + Source.Length > Target.Capacity then
-          raise Constraint_Error;
-       end if;
- 
-       loop
-          Insert (Target, Before, SN (Source.Last).Element);
-          Delete_Last (Source);
-          exit when Is_Empty (Source);
-       end loop;
-    end Splice;
- 
-    procedure Splice
-      (Target   : in out List;
-       Before   : Cursor;
-       Source   : in out List;
-       Position : in out Cursor)
-    is
-       Target_Position : Cursor;
- 
-    begin
-       if Target'Address = Source'Address then
-          raise Program_Error with "Target and Source denote same container";
-       end if;
- 
-       if Position.Node = 0 then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Source, Position), "bad Position cursor in Splice");
- 
-       if Target.Length >= Target.Capacity then
-          raise Constraint_Error;
-       end if;
- 
-       Insert
-         (Container => Target,
-          Before    => Before,
-          New_Item  => Source.Nodes (Position.Node).Element,
-          Position  => Target_Position);
- 
-       Delete (Source, Position);
-       Position := Target_Position;
-    end Splice;
- 
-    procedure Splice
-      (Container : in out List;
-       Before    : Cursor;
-       Position  : Cursor)
-    is
-       N : Node_Array renames Container.Nodes;
- 
-    begin
-       if Before.Node /= 0 then
-          pragma Assert
-            (Vet (Container, Before), "bad Before cursor in Splice");
-       end if;
- 
-       if Position.Node = 0 then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad Position cursor in Splice");
- 
-       if Position.Node = Before.Node
-         or else N (Position.Node).Next = Before.Node
-       then
-          return;
-       end if;
- 
-       pragma Assert (Container.Length >= 2);
- 
-       if Before.Node = 0 then
-          pragma Assert (Position.Node /= Container.Last);
- 
-          if Position.Node = Container.First then
-             Container.First := N (Position.Node).Next;
-             N (Container.First).Prev := 0;
- 
-          else
-             N (N (Position.Node).Prev).Next := N (Position.Node).Next;
-             N (N (Position.Node).Next).Prev := N (Position.Node).Prev;
-          end if;
- 
-          N (Container.Last).Next := Position.Node;
-          N (Position.Node).Prev := Container.Last;
- 
-          Container.Last := Position.Node;
-          N (Container.Last).Next := 0;
- 
-          return;
-       end if;
- 
-       if Before.Node = Container.First then
-          pragma Assert (Position.Node /= Container.First);
- 
-          if Position.Node = Container.Last then
-             Container.Last := N (Position.Node).Prev;
-             N (Container.Last).Next := 0;
- 
-          else
-             N (N (Position.Node).Prev).Next := N (Position.Node).Next;
-             N (N (Position.Node).Next).Prev := N (Position.Node).Prev;
-          end if;
- 
-          N (Container.First).Prev := Position.Node;
-          N (Position.Node).Next := Container.First;
- 
-          Container.First := Position.Node;
-          N (Container.First).Prev := 0;
- 
-          return;
-       end if;
- 
-       if Position.Node = Container.First then
-          Container.First := N (Position.Node).Next;
-          N (Container.First).Prev := 0;
- 
-       elsif Position.Node = Container.Last then
-          Container.Last := N (Position.Node).Prev;
-          N (Container.Last).Next := 0;
- 
-       else
-          N (N (Position.Node).Prev).Next := N (Position.Node).Next;
-          N (N (Position.Node).Next).Prev := N (Position.Node).Prev;
-       end if;
- 
-       N (N (Before.Node).Prev).Next := Position.Node;
-       N (Position.Node).Prev := N (Before.Node).Prev;
- 
-       N (Before.Node).Prev := Position.Node;
-       N (Position.Node).Next := Before.Node;
- 
-       pragma Assert (N (Container.First).Prev = 0);
-       pragma Assert (N (Container.Last).Next = 0);
-    end Splice;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out List;
-       I         : Cursor;
-       J         : Cursor)
-    is
-    begin
-       if I.Node = 0 then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if J.Node = 0 then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       pragma Assert (Vet (Container, I), "bad I cursor in Swap");
-       pragma Assert (Vet (Container, J), "bad J cursor in Swap");
- 
-       declare
-          NN : Node_Array renames Container.Nodes;
-          NI : Node_Type renames NN (I.Node);
-          NJ : Node_Type renames NN (J.Node);
- 
-          EI_Copy : constant Element_Type := NI.Element;
- 
-       begin
-          NI.Element := NJ.Element;
-          NJ.Element := EI_Copy;
-       end;
-    end Swap;
- 
-    ----------------
-    -- Swap_Links --
-    ----------------
- 
-    procedure Swap_Links
-      (Container : in out List;
-       I         : Cursor;
-       J         : Cursor)
-    is
-       I_Next : Cursor;
-       J_Next : Cursor;
- 
-    begin
-       if I.Node = 0 then
-          raise Constraint_Error with "I cursor has no element";
-       end if;
- 
-       if J.Node = 0 then
-          raise Constraint_Error with "J cursor has no element";
-       end if;
- 
-       if I.Node = J.Node then
-          return;
-       end if;
- 
-       pragma Assert (Vet (Container, I), "bad I cursor in Swap_Links");
-       pragma Assert (Vet (Container, J), "bad J cursor in Swap_Links");
- 
-       I_Next := Next (Container, I);
- 
-       if I_Next = J then
-          Splice (Container, Before => I, Position => J);
- 
-       else
-          J_Next := Next (Container, J);
- 
-          if J_Next = I then
-             Splice (Container, Before => J, Position => I);
- 
-          else
-             pragma Assert (Container.Length >= 3);
-             Splice (Container, Before => I_Next, Position => J);
-             Splice (Container, Before => J_Next, Position => I);
-          end if;
-       end if;
-    end Swap_Links;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (L : List; Position : Cursor) return Boolean is
-       N : Node_Array renames L.Nodes;
- 
-    begin
-       if L.Length = 0 then
-          return False;
-       end if;
- 
-       if L.First = 0 then
-          return False;
-       end if;
- 
-       if L.Last = 0 then
-          return False;
-       end if;
- 
-       if Position.Node > L.Capacity then
-          return False;
-       end if;
- 
-       if N (Position.Node).Prev < 0
-         or else N (Position.Node).Prev > L.Capacity
-       then
-          return False;
-       end if;
- 
-       if N (Position.Node).Next > L.Capacity then
-          return False;
-       end if;
- 
-       if N (L.First).Prev /= 0 then
-          return False;
-       end if;
- 
-       if N (L.Last).Next /= 0 then
-          return False;
-       end if;
- 
-       if N (Position.Node).Prev = 0 and then Position.Node /= L.First then
-          return False;
-       end if;
- 
-       if N (Position.Node).Next = 0 and then Position.Node /= L.Last then
-          return False;
-       end if;
- 
-       if L.Length = 1 then
-          return L.First = L.Last;
-       end if;
- 
-       if L.First = L.Last then
-          return False;
-       end if;
- 
-       if N (L.First).Next = 0 then
-          return False;
-       end if;
- 
-       if N (L.Last).Prev = 0 then
-          return False;
-       end if;
- 
-       if N (N (L.First).Next).Prev /= L.First then
-          return False;
-       end if;
- 
-       if N (N (L.Last).Prev).Next /= L.Last then
-          return False;
-       end if;
- 
-       if L.Length = 2 then
-          if N (L.First).Next /= L.Last then
-             return False;
-          end if;
- 
-          if N (L.Last).Prev /= L.First then
-             return False;
-          end if;
- 
-          return True;
-       end if;
- 
-       if N (L.First).Next = L.Last then
-          return False;
-       end if;
- 
-       if N (L.Last).Prev = L.First then
-          return False;
-       end if;
- 
-       if Position.Node = L.First then
-          return True;
-       end if;
- 
-       if Position.Node = L.Last then
-          return True;
-       end if;
- 
-       if N (Position.Node).Next = 0 then
-          return False;
-       end if;
- 
-       if N (Position.Node).Prev = 0 then
-          return False;
-       end if;
- 
-       if N (N (Position.Node).Next).Prev /= Position.Node then
-          return False;
-       end if;
- 
-       if N (N (Position.Node).Prev).Next /= Position.Node then
-          return False;
-       end if;
- 
-       if L.Length = 3 then
-          if N (L.First).Next /= Position.Node then
-             return False;
-          end if;
- 
-          if N (L.Last).Prev /= Position.Node then
-             return False;
-          end if;
-       end if;
- 
-       return True;
-    end Vet;
- 
- end Ada.Containers.Formal_Doubly_Linked_Lists;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfdlli.ads gcc-13.1.0/gcc/ada/libgnat/a-cfdlli.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cfdlli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfdlli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
***************
*** 29,1677 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- with Ada.Containers.Functional_Vectors;
- with Ada.Containers.Functional_Maps;
- 
  generic
!    type Element_Type is private;
!    with function "=" (Left, Right : Element_Type) return Boolean is <>;
! 
! package Ada.Containers.Formal_Doubly_Linked_Lists with
!   SPARK_Mode
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    type List (Capacity : Count_Type) is private with
!      Iterable => (First       => First,
!                   Next        => Next,
!                   Has_Element => Has_Element,
!                   Element     => Element),
!      Default_Initial_Condition => Is_Empty (List);
!    pragma Preelaborable_Initialization (List);
! 
!    type Cursor is record
!       Node : Count_Type := 0;
!    end record;
! 
!    No_Element : constant Cursor := Cursor'(Node => 0);
! 
!    Empty_List : constant List;
! 
!    function Length (Container : List) return Count_Type with
!      Global => null,
!      Post   => Length'Result <= Container.Capacity;
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
!       subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!       package M is new Ada.Containers.Functional_Vectors
!         (Index_Type   => Positive_Count_Type,
!          Element_Type => Element_Type);
! 
!       function "="
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."=";
! 
!       function "<"
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."<";
! 
!       function "<="
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."<=";
! 
!       function M_Elements_In_Union
!         (Container : M.Sequence;
!          Left      : M.Sequence;
!          Right     : M.Sequence) return Boolean
!       --  The elements of Container are contained in either Left or Right
!       with
!         Global => null,
!         Post   =>
!           M_Elements_In_Union'Result =
!             (for all I in 1 .. M.Length (Container) =>
!               (for some J in 1 .. M.Length (Left) =>
!                 Element (Container, I) = Element (Left, J))
!                   or (for some J in 1 .. M.Length (Right) =>
!                        Element (Container, I) = Element (Right, J)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_In_Union);
! 
!       function M_Elements_Included
!         (Left  : M.Sequence;
!          L_Fst : Positive_Count_Type := 1;
!          L_Lst : Count_Type;
!          Right : M.Sequence;
!          R_Fst : Positive_Count_Type := 1;
!          R_Lst : Count_Type) return Boolean
!       --  The elements of the slice from L_Fst to L_Lst in Left are contained
!       --  in the slide from R_Fst to R_Lst in Right.
!       with
!         Global => null,
!         Pre    => L_Lst <= M.Length (Left) and R_Lst <= M.Length (Right),
!         Post   =>
!           M_Elements_Included'Result =
!             (for all I in L_Fst .. L_Lst =>
!               (for some J in R_Fst .. R_Lst =>
!                 Element (Left, I) = Element (Right, J)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Included);
! 
!       function M_Elements_Reversed
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean
!       --  Right is Left in reverse order
!       with
!         Global => null,
!         Post   =>
!           M_Elements_Reversed'Result =
!             (M.Length (Left) = M.Length (Right)
!               and (for all I in 1 .. M.Length (Left) =>
!                     Element (Left, I) =
!                       Element (Right, M.Length (Left) - I + 1))
!               and (for all I in 1 .. M.Length (Left) =>
!                     Element (Right, I) =
!                       Element (Left, M.Length (Left) - I + 1)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Reversed);
! 
!       function M_Elements_Swapped
!         (Left  : M.Sequence;
!          Right : M.Sequence;
!          X     : Positive_Count_Type;
!          Y     : Positive_Count_Type) return Boolean
!       --  Elements stored at X and Y are reversed in Left and Right
!       with
!         Global => null,
!         Pre    => X <= M.Length (Left) and Y <= M.Length (Left),
!         Post   =>
!           M_Elements_Swapped'Result =
!             (M.Length (Left) = M.Length (Right)
!               and Element (Left, X) = Element (Right, Y)
!               and Element (Left, Y) = Element (Right, X)
!               and M.Equal_Except (Left, Right, X, Y));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Swapped);
! 
!       package P is new Ada.Containers.Functional_Maps
!         (Key_Type                       => Cursor,
!          Element_Type                   => Positive_Count_Type,
!          Equivalent_Keys                => "=",
!          Enable_Handling_Of_Equivalence => False);
! 
!       function "="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."=";
! 
!       function "<="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."<=";
! 
!       function P_Positions_Shifted
!         (Small : P.Map;
!          Big   : P.Map;
!          Cut   : Positive_Count_Type;
!          Count : Count_Type := 1) return Boolean
!       with
!         Global => null,
!         Post   =>
!           P_Positions_Shifted'Result =
! 
!             --  Big contains all cursors of Small
! 
!             (P.Keys_Included (Small, Big)
! 
!               --  Cursors located before Cut are not moved, cursors located
!               --  after are shifted by Count.
! 
!               and (for all I of Small =>
!                     (if P.Get (Small, I) < Cut then
!                         P.Get (Big, I) = P.Get (Small, I)
!                      else
!                         P.Get (Big, I) - Count = P.Get (Small, I)))
! 
!               --  New cursors of Big (if any) are between Cut and Cut - 1 +
!               --  Count.
! 
!               and (for all I of Big =>
!                     P.Has_Key (Small, I)
!                       or P.Get (Big, I) - Count in Cut - Count  .. Cut - 1));
! 
!       function P_Positions_Swapped
!         (Left  : P.Map;
!          Right : P.Map;
!          X     : Cursor;
!          Y     : Cursor) return Boolean
!       --  Left and Right contain the same cursors, but the positions of X and Y
!       --  are reversed.
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           P_Positions_Swapped'Result =
!             (P.Same_Keys (Left, Right)
!               and P.Elements_Equal_Except (Left, Right, X, Y)
!               and P.Has_Key (Left, X)
!               and P.Has_Key (Left, Y)
!               and P.Get (Left, X) = P.Get (Right, Y)
!               and P.Get (Left, Y) = P.Get (Right, X));
! 
!       function P_Positions_Truncated
!         (Small : P.Map;
!          Big   : P.Map;
!          Cut   : Positive_Count_Type;
!          Count : Count_Type := 1) return Boolean
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           P_Positions_Truncated'Result =
! 
!             --  Big contains all cursors of Small at the same position
! 
!             (Small <= Big
! 
!               --  New cursors of Big (if any) are between Cut and Cut - 1 +
!               --  Count.
! 
!               and (for all I of Big =>
!                     P.Has_Key (Small, I)
!                       or P.Get (Big, I) - Count in Cut - Count .. Cut - 1));
! 
!       function Mapping_Preserved
!         (M_Left  : M.Sequence;
!          M_Right : M.Sequence;
!          P_Left  : P.Map;
!          P_Right : P.Map) return Boolean
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           (if Mapping_Preserved'Result then
! 
!              --  Left and Right contain the same cursors
! 
!              P.Same_Keys (P_Left, P_Right)
! 
!                --  Mappings from cursors to elements induced by M_Left, P_Left
!                --  and M_Right, P_Right are the same.
! 
!                and (for all C of P_Left =>
!                      M.Get (M_Left, P.Get (P_Left, C)) =
!                      M.Get (M_Right, P.Get (P_Right, C))));
! 
!       function Model (Container : List) return M.Sequence with
!       --  The high-level model of a list is a sequence of elements. Cursors are
!       --  not represented in this model.
! 
!         Ghost,
!         Global => null,
!         Post   => M.Length (Model'Result) = Length (Container);
!       pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Model);
! 
!       function Positions (Container : List) return P.Map with
!       --  The Positions map is used to model cursors. It only contains valid
!       --  cursors and map them to their position in the container.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           not P.Has_Key (Positions'Result, No_Element)
! 
!             --  Positions of cursors are smaller than the container's length.
! 
!             and then
!               (for all I of Positions'Result =>
!                 P.Get (Positions'Result, I) in 1 .. Length (Container)
! 
!             --  No two cursors have the same position. Note that we do not
!             --  state that there is a cursor in the map for each position, as
!             --  it is rarely needed.
! 
!             and then
!               (for all J of Positions'Result =>
!                 (if P.Get (Positions'Result, I) = P.Get (Positions'Result, J)
!                   then I = J)));
! 
!       procedure Lift_Abstraction_Level (Container : List) with
!         --  Lift_Abstraction_Level is a ghost procedure that does nothing but
!         --  assume that we can access to the same elements by iterating over
!         --  positions or cursors.
!         --  This information is not generally useful except when switching from
!         --  a low-level cursor-aware view of a container to a high-level
!         --  position-based view.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           (for all Elt of Model (Container) =>
!             (for some I of Positions (Container) =>
!               M.Get (Model (Container), P.Get (Positions (Container), I)) =
!                 Elt));
! 
!       function Element
!         (S : M.Sequence;
!          I : Count_Type) return Element_Type renames M.Get;
!       --  To improve readability of contracts, we rename the function used to
!       --  access an element in the model to Element.
! 
!    end Formal_Model;
!    use Formal_Model;
! 
!    function "=" (Left, Right : List) return Boolean with
!      Global => null,
!      Post   => "="'Result = (Model (Left) = Model (Right));
! 
!    function Is_Empty (Container : List) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
! 
!    procedure Clear (Container : in out List) with
!      Global => null,
!      Post   => Length (Container) = 0;
! 
!    procedure Assign (Target : in out List; Source : List) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   => Model (Target) = Model (Source);
! 
!    function Copy (Source : List; Capacity : Count_Type := 0) return List with
!      Global => null,
!      Pre    => Capacity = 0 or else Capacity >= Source.Capacity,
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and Positions (Copy'Result) = Positions (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Source.Capacity
!               else
!                  Copy'Result.Capacity = Capacity);
! 
!    function Element
!      (Container : List;
!       Position : Cursor) return Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Element'Result =
!          Element (Model (Container), P.Get (Positions (Container), Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out List;
!       Position  : Cursor;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Length (Container) = Length (Container)'Old
! 
!          --  Cursors are preserved
! 
!          and Positions (Container)'Old = Positions (Container)
! 
!          --  The element at the position of Position in Container is New_Item
! 
!          and Element
!                (Model (Container),
!                 P.Get (Positions (Container), Position)) = New_Item
! 
!          --  Other elements are preserved
! 
!          and M.Equal_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 P.Get (Positions (Container), Position));
! 
!    function At_End (E : access constant List) return access constant List
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function At_End
!      (E : access constant Element_Type) return access constant Element_Type
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function Constant_Reference
!      (Container : aliased List;
!       Position  : Cursor) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Constant_Reference'Result.all =
!          Element (Model (Container), P.Get (Positions (Container), Position));
! 
!    function Reference
!      (Container : not null access List;
!       Position  : Cursor) return not null access Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container.all, Position),
!      Post   =>
!       Length (Container.all) = Length (At_End (Container).all)
! 
!          --  Cursors are preserved
! 
!          and Positions (Container.all) = Positions (At_End (Container).all)
! 
!          --  Container will have Result.all at position Position
! 
!          and At_End (Reference'Result).all =
!            Element (Model (At_End (Container).all),
!                     P.Get (Positions (At_End (Container).all), Position))
! 
!          --  All other elements are preserved
! 
!          and M.Equal_Except
!                (Model (Container.all),
!                 Model (At_End (Container).all),
!                 P.Get (Positions (At_End (Container).all), Position));
! 
!    procedure Move (Target : in out List; Source : in out List) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   => Model (Target) = Model (Source'Old) and Length (Source) = 0;
! 
!    procedure Insert
!      (Container : in out List;
!       Before    : Cursor;
!       New_Item  : Element_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity
!          and then (Has_Element (Container, Before)
!                     or else Before = No_Element),
!      Post           => Length (Container) = Length (Container)'Old + 1,
!      Contract_Cases =>
!        (Before = No_Element =>
! 
!           --  Positions contains a new mapping from the last cursor of
!           --  Container to its length.
! 
!           P.Get (Positions (Container), Last (Container)) = Length (Container)
! 
!             --  Other cursors come from Container'Old
! 
!             and P.Keys_Included_Except
!                   (Left    => Positions (Container),
!                    Right   => Positions (Container)'Old,
!                    New_Key => Last (Container))
! 
!             --  Cursors of Container'Old keep the same position
! 
!             and Positions (Container)'Old <= Positions (Container)
! 
!             --  Model contains a new element New_Item at the end
! 
!             and Element (Model (Container), Length (Container)) = New_Item
! 
!             --  Elements of Container'Old are preserved
! 
!             and Model (Container)'Old <= Model (Container),
! 
!         others =>
! 
!           --  The elements of Container located before Before are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Container)'Old,
!              Right => Model (Container),
!              Fst   => 1,
!              Lst   => P.Get (Positions (Container)'Old, Before) - 1)
! 
!             --  Other elements are shifted by 1
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container)'Old,
!                    Right  => Model (Container),
!                    Fst    => P.Get (Positions (Container)'Old, Before),
!                    Lst    => Length (Container)'Old,
!                    Offset => 1)
! 
!             --  New_Item is stored at the previous position of Before in
!             --  Container.
! 
!             and Element
!                   (Model (Container),
!                    P.Get (Positions (Container)'Old, Before)) = New_Item
! 
!             --  A new cursor has been inserted at position Before in Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut => P.Get (Positions (Container)'Old, Before)));
! 
!    procedure Insert
!      (Container : in out List;
!       Before    : Cursor;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) <= Container.Capacity - Count
!          and then (Has_Element (Container, Before)
!                     or else Before = No_Element),
!      Post           => Length (Container) = Length (Container)'Old + Count,
!      Contract_Cases =>
!        (Before = No_Element =>
! 
!           --  The elements of Container are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Container)'Old,
!              Right => Model (Container),
!              Fst   => 1,
!              Lst   => Length (Container)'Old)
! 
!             --  Container contains Count times New_Item at the end
! 
!             and (if Count > 0 then
!                     M.Constant_Range
!                       (Container => Model (Container),
!                        Fst       => Length (Container)'Old + 1,
!                        Lst       => Length (Container),
!                        Item      => New_Item))
! 
!             --  Container contains Count times New_Item at the end
! 
!             and M.Constant_Range
!                   (Container => Model (Container),
!                    Fst       => Length (Container)'Old + 1,
!                    Lst       => Length (Container),
!                    Item      => New_Item)
! 
!             --  A Count cursors have been inserted at the end of Container
! 
!             and P_Positions_Truncated
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut   => Length (Container)'Old + 1,
!                    Count => Count),
! 
!         others =>
! 
!           --  The elements of Container located before Before are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Container)'Old,
!              Right => Model (Container),
!              Fst   => 1,
!              Lst   => P.Get (Positions (Container)'Old, Before) - 1)
! 
!             --  Other elements are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container)'Old,
!                    Right  => Model (Container),
!                    Fst    => P.Get (Positions (Container)'Old, Before),
!                    Lst    => Length (Container)'Old,
!                    Offset => Count)
! 
!             --  Container contains Count times New_Item after position Before
! 
!             and M.Constant_Range
!                   (Container => Model (Container),
!                    Fst       => P.Get (Positions (Container)'Old, Before),
!                    Lst       =>
!                      P.Get (Positions (Container)'Old, Before) - 1 + Count,
!                    Item      => New_Item)
! 
!             --  Count cursors have been inserted at position Before in
!             --  Container.
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut   => P.Get (Positions (Container)'Old, Before),
!                    Count => Count));
! 
!    procedure Insert
!      (Container : in out List;
!       Before    : Cursor;
!       New_Item  : Element_Type;
!       Position  : out Cursor)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Container.Capacity
!          and then (Has_Element (Container, Before)
!                     or else Before = No_Element),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!           --  Positions is valid in Container and it is located either before
!           --  Before if it is valid in Container or at the end if it is
!           --  No_Element.
! 
!           and P.Has_Key (Positions (Container), Position)
!           and (if Before = No_Element then
!                   P.Get (Positions (Container), Position) = Length (Container)
!                else
!                   P.Get (Positions (Container), Position) =
!                   P.Get (Positions (Container)'Old, Before))
! 
!           --  The elements of Container located before Position are preserved
! 
!           and M.Range_Equal
!                 (Left  => Model (Container)'Old,
!                  Right => Model (Container),
!                  Fst   => 1,
!                  Lst   => P.Get (Positions (Container), Position) - 1)
! 
!           --  Other elements are shifted by 1
! 
!           and M.Range_Shifted
!                 (Left   => Model (Container)'Old,
!                  Right  => Model (Container),
!                  Fst    => P.Get (Positions (Container), Position),
!                  Lst    => Length (Container)'Old,
!                  Offset => 1)
! 
!           --  New_Item is stored at Position in Container
! 
!           and Element
!                 (Model (Container),
!                  P.Get (Positions (Container), Position)) = New_Item
! 
!           --  A new cursor has been inserted at position Position in Container
! 
!           and P_Positions_Shifted
!                 (Positions (Container)'Old,
!                  Positions (Container),
!                  Cut => P.Get (Positions (Container), Position));
! 
!    procedure Insert
!      (Container : in out List;
!       Before    : Cursor;
!       New_Item  : Element_Type;
!       Position  : out Cursor;
!       Count     : Count_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) <= Container.Capacity - Count
!          and then (Has_Element (Container, Before)
!                     or else Before = No_Element),
!      Post           => Length (Container) = Length (Container)'Old + Count,
!      Contract_Cases =>
!        (Count = 0 =>
!          Position = Before
!            and Model (Container) = Model (Container)'Old
!            and Positions (Container) = Positions (Container)'Old,
! 
!         others =>
! 
!           --  Positions is valid in Container and it is located either before
!           --  Before if it is valid in Container or at the end if it is
!           --  No_Element.
! 
!           P.Has_Key (Positions (Container), Position)
!             and (if Before = No_Element then
!                     P.Get (Positions (Container), Position) =
!                     Length (Container)'Old + 1
!                  else
!                     P.Get (Positions (Container), Position) =
!                     P.Get (Positions (Container)'Old, Before))
! 
!             --  The elements of Container located before Position are preserved
! 
!             and M.Range_Equal
!                   (Left  => Model (Container)'Old,
!                    Right => Model (Container),
!                    Fst   => 1,
!                    Lst   => P.Get (Positions (Container), Position) - 1)
! 
!             --  Other elements are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container)'Old,
!                    Right  => Model (Container),
!                    Fst    => P.Get (Positions (Container), Position),
!                    Lst    => Length (Container)'Old,
!                    Offset => Count)
! 
!             --  Container contains Count times New_Item after position Position
! 
!             and M.Constant_Range
!                   (Container => Model (Container),
!                    Fst       => P.Get (Positions (Container), Position),
!                    Lst       =>
!                      P.Get (Positions (Container), Position) - 1 + Count,
!                    Item      => New_Item)
! 
!             --  Count cursor have been inserted at Position in Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut   => P.Get (Positions (Container), Position),
!                    Count => Count));
! 
!    procedure Prepend (Container : in out List; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Container.Capacity,
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Elements are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => 1,
!                 Lst    => Length (Container)'Old,
!                 Offset => 1)
! 
!          --  New_Item is the first element of Container
! 
!          and Element (Model (Container), 1) = New_Item
! 
!          --  A new cursor has been inserted at the beginning of Container
! 
!          and P_Positions_Shifted
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Cut => 1);
! 
!    procedure Prepend
!      (Container : in out List;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    => Length (Container) <= Container.Capacity - Count,
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  Elements are shifted by Count
! 
!          and M.Range_Shifted
!                (Left     => Model (Container)'Old,
!                 Right     => Model (Container),
!                 Fst    => 1,
!                 Lst    => Length (Container)'Old,
!                 Offset => Count)
! 
!          --  Container starts with Count times New_Item
! 
!          and M.Constant_Range
!                (Container => Model (Container),
!                 Fst       => 1,
!                 Lst       => Count,
!                 Item      => New_Item)
! 
!          --  Count cursors have been inserted at the beginning of Container
! 
!          and P_Positions_Shifted
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Cut   => 1,
!                 Count => Count);
! 
!    procedure Append (Container : in out List; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Container.Capacity,
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Positions contains a new mapping from the last cursor of Container
!          --  to its length.
! 
!          and P.Get (Positions (Container), Last (Container)) =
!                Length (Container)
! 
!          --  Other cursors come from Container'Old
! 
!          and P.Keys_Included_Except
!                (Left    => Positions (Container),
!                 Right   => Positions (Container)'Old,
!                 New_Key => Last (Container))
! 
!          --  Cursors of Container'Old keep the same position
! 
!          and Positions (Container)'Old <= Positions (Container)
! 
!          --  Model contains a new element New_Item at the end
! 
!          and Element (Model (Container), Length (Container)) = New_Item
! 
!          --  Elements of Container'Old are preserved
! 
!          and Model (Container)'Old <= Model (Container);
! 
!    procedure Append
!      (Container : in out List;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    => Length (Container) <= Container.Capacity - Count,
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  The elements of Container are preserved
! 
!          and Model (Container)'Old <= Model (Container)
! 
!          --  Container contains Count times New_Item at the end
! 
!          and (if Count > 0 then
!                  M.Constant_Range
!                    (Container => Model (Container),
!                      Fst       => Length (Container)'Old + 1,
!                      Lst       => Length (Container),
!                      Item      => New_Item))
! 
!          --  Count cursors have been inserted at the end of Container
! 
!          and P_Positions_Truncated
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Cut   => Length (Container)'Old + 1,
!                 Count => Count);
! 
!    procedure Delete (Container : in out List; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Position is set to No_Element
! 
!          and Position = No_Element
! 
!          --  The elements of Container located before Position are preserved.
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => 1,
!                 Lst   => P.Get (Positions (Container)'Old, Position'Old) - 1)
! 
!          --  The elements located after Position are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container),
!                 Right  => Model (Container)'Old,
!                 Fst    => P.Get (Positions (Container)'Old, Position'Old),
!                 Lst    => Length (Container),
!                 Offset => 1)
! 
!          --  Position has been removed from Container
! 
!          and P_Positions_Shifted
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Cut   => P.Get (Positions (Container)'Old, Position'Old));
! 
!    procedure Delete
!      (Container : in out List;
!       Position  : in out Cursor;
!       Count     : Count_Type)
!    with
!      Global         => null,
!      Pre            => Has_Element (Container, Position),
!      Post           =>
!        Length (Container) in
!          Length (Container)'Old - Count .. Length (Container)'Old
! 
!          --  Position is set to No_Element
! 
!          and Position = No_Element
! 
!          --  The elements of Container located before Position are preserved.
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => 1,
!                 Lst   => P.Get (Positions (Container)'Old, Position'Old) - 1),
! 
!      Contract_Cases =>
! 
!        --  All the elements after Position have been erased
! 
!        (Length (Container) - Count < P.Get (Positions (Container), Position) =>
!           Length (Container) =
!             P.Get (Positions (Container)'Old, Position'Old) - 1
! 
!             --  At most Count cursors have been removed at the end of Container
! 
!             and P_Positions_Truncated
!                  (Positions (Container),
!                   Positions (Container)'Old,
!                   Cut   => P.Get (Positions (Container)'Old, Position'Old),
!                   Count => Count),
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  Other elements are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container),
!                    Right  => Model (Container)'Old,
!                    Fst    => P.Get (Positions (Container)'Old, Position'Old),
!                    Lst    => Length (Container),
!                    Offset => Count)
! 
!             --  Count cursors have been removed from Container at Position
! 
!             and P_Positions_Shifted
!                  (Positions (Container),
!                   Positions (Container)'Old,
!                   Cut   => P.Get (Positions (Container)'Old, Position'Old),
!                   Count => Count));
! 
!    procedure Delete_First (Container : in out List) with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  The elements of Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container),
!                 Right  => Model (Container)'Old,
!                 Fst    => 1,
!                 Lst    => Length (Container),
!                 Offset => 1)
! 
!          --  The first cursor of Container has been removed
! 
!          and P_Positions_Shifted
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Cut   => 1);
! 
!    procedure Delete_First (Container : in out List; Count : Count_Type) with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  All the elements of Container have been erased
! 
!        (Length (Container) <= Count =>
!           Length (Container) = 0,
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  Elements of Container are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container),
!                    Right  => Model (Container)'Old,
!                    Fst    => 1,
!                    Lst    => Length (Container),
!                    Offset => Count)
! 
!             --  The first Count cursors have been removed from Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => 1,
!                    Count => Count));
! 
!    procedure Delete_Last (Container : in out List) with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  The elements of Container are preserved
! 
!          and Model (Container) <= Model (Container)'Old
! 
!          --  The last cursor of Container has been removed
! 
!          and not P.Has_Key (Positions (Container), Last (Container)'Old)
! 
!          --  Other cursors are still valid
! 
!          and P.Keys_Included_Except
!                (Left    => Positions (Container)'Old,
!                 Right   => Positions (Container)'Old,
!                 New_Key => Last (Container)'Old)
! 
!          --  The positions of other cursors are preserved
! 
!          and Positions (Container) <= Positions (Container)'Old;
! 
!    procedure Delete_Last (Container : in out List; Count : Count_Type) with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  All the elements of Container have been erased
! 
!        (Length (Container) <= Count =>
!           Length (Container) = 0,
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  The elements of Container are preserved
! 
!             and Model (Container) <= Model (Container)'Old
! 
!             --  At most Count cursors have been removed at the end of Container
! 
!             and P_Positions_Truncated
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => Length (Container) + 1,
!                    Count => Count));
! 
!    procedure Reverse_Elements (Container : in out List) with
!      Global => null,
!      Post   => M_Elements_Reversed (Model (Container)'Old, Model (Container));
! 
!    procedure Swap
!      (Container : in out List;
!       I         : Cursor;
!       J         : Cursor)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, I) and then Has_Element (Container, J),
!      Post   =>
!        M_Elements_Swapped
!          (Model (Container)'Old,
!           Model (Container),
!           X => P.Get (Positions (Container)'Old, I),
!           Y => P.Get (Positions (Container)'Old, J))
! 
!          and Positions (Container) = Positions (Container)'Old;
! 
!    procedure Swap_Links
!      (Container : in out List;
!       I         : Cursor;
!       J         : Cursor)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, I) and then Has_Element (Container, J),
!      Post   =>
!        M_Elements_Swapped
!          (Model (Container'Old),
!           Model (Container),
!           X => P.Get (Positions (Container)'Old, I),
!           Y => P.Get (Positions (Container)'Old, J))
!          and P_Positions_Swapped
!                (Positions (Container)'Old, Positions (Container), I, J);
! 
!    procedure Splice
!      (Target : in out List;
!       Before : Cursor;
!       Source : in out List)
!    --  Target and Source should not be aliased
!    with
!      Global         => null,
!      Pre            =>
!        Length (Source) <= Target.Capacity - Length (Target)
!          and then (Has_Element (Target, Before)
!                     or else Before = No_Element),
!      Post           =>
!        Length (Source) = 0
!          and Length (Target) = Length (Target)'Old + Length (Source)'Old,
!      Contract_Cases =>
!        (Before = No_Element =>
! 
!           --  The elements of Target are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Target)'Old,
!              Right => Model (Target),
!              Fst   => 1,
!              Lst   => Length (Target)'Old)
! 
!             --  The elements of Source are appended to target, the order is not
!             --  specified.
! 
!             and M_Elements_Included
!                   (Left   => Model (Source)'Old,
!                    L_Lst  => Length (Source)'Old,
!                    Right  => Model (Target),
!                    R_Fst  => Length (Target)'Old + 1,
!                    R_Lst  => Length (Target))
! 
!             and M_Elements_Included
!                   (Left   => Model (Target),
!                    L_Fst  => Length (Target)'Old + 1,
!                    L_Lst  => Length (Target),
!                    Right  => Model (Source)'Old,
!                    R_Lst  => Length (Source)'Old)
! 
!             --  Cursors have been inserted at the end of Target
! 
!             and P_Positions_Truncated
!                   (Positions (Target)'Old,
!                    Positions (Target),
!                    Cut   => Length (Target)'Old + 1,
!                    Count => Length (Source)'Old),
! 
!         others =>
! 
!           --  The elements of Target located before Before are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Target)'Old,
!              Right => Model (Target),
!              Fst   => 1,
!              Lst   => P.Get (Positions (Target)'Old, Before) - 1)
! 
!             --  The elements of Source are inserted before Before, the order is
!             --  not specified.
! 
!             and M_Elements_Included
!                   (Left   => Model (Source)'Old,
!                    L_Lst  => Length (Source)'Old,
!                    Right  => Model (Target),
!                    R_Fst  => P.Get (Positions (Target)'Old, Before),
!                    R_Lst  =>
!                      P.Get (Positions (Target)'Old, Before) - 1 +
!                        Length (Source)'Old)
! 
!             and M_Elements_Included
!                   (Left   => Model (Target),
!                    L_Fst  => P.Get (Positions (Target)'Old, Before),
!                    L_Lst  =>
!                      P.Get (Positions (Target)'Old, Before) - 1 +
!                        Length (Source)'Old,
!                    Right  => Model (Source)'Old,
!                    R_Lst  => Length (Source)'Old)
! 
!           --  Other elements are shifted by the length of Source
! 
!           and M.Range_Shifted
!                 (Left   => Model (Target)'Old,
!                  Right  => Model (Target),
!                  Fst    => P.Get (Positions (Target)'Old, Before),
!                  Lst    => Length (Target)'Old,
!                  Offset => Length (Source)'Old)
! 
!           --  Cursors have been inserted at position Before in Target
! 
!           and P_Positions_Shifted
!                 (Positions (Target)'Old,
!                  Positions (Target),
!                  Cut   => P.Get (Positions (Target)'Old, Before),
!                  Count => Length (Source)'Old));
! 
!    procedure Splice
!      (Target   : in out List;
!       Before   : Cursor;
!       Source   : in out List;
!       Position : in out Cursor)
!    --  Target and Source should not be aliased
!    with
!      Global => null,
!      Pre    =>
!        (Has_Element (Target, Before) or else Before = No_Element)
!          and then Has_Element (Source, Position)
!          and then Length (Target) < Target.Capacity,
!      Post   =>
!        Length (Target) = Length (Target)'Old + 1
!          and Length (Source) = Length (Source)'Old - 1
! 
!          --  The elements of Source located before Position are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Source)'Old,
!                 Right => Model (Source),
!                 Fst   => 1,
!                 Lst   => P.Get (Positions (Source)'Old, Position'Old) - 1)
! 
!          --  The elements located after Position are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Source)'Old,
!                 Right  => Model (Source),
!                 Fst    => P.Get (Positions (Source)'Old, Position'Old) + 1,
!                 Lst    => Length (Source)'Old,
!                 Offset => -1)
! 
!          --  Position has been removed from Source
! 
!          and P_Positions_Shifted
!                (Positions (Source),
!                 Positions (Source)'Old,
!                 Cut   => P.Get (Positions (Source)'Old, Position'Old))
! 
!          --  Positions is valid in Target and it is located either before
!          --  Before if it is valid in Target or at the end if it is No_Element.
! 
!          and P.Has_Key (Positions (Target), Position)
!          and (if Before = No_Element then
!                  P.Get (Positions (Target), Position) = Length (Target)
!               else
!                  P.Get (Positions (Target), Position) =
!                  P.Get (Positions (Target)'Old, Before))
! 
!          --  The elements of Target located before Position are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Target)'Old,
!                 Right => Model (Target),
!                 Fst   => 1,
!                 Lst   => P.Get (Positions (Target), Position) - 1)
! 
!          --  Other elements are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Target)'Old,
!                 Right  => Model (Target),
!                 Fst    => P.Get (Positions (Target), Position),
!                 Lst    => Length (Target)'Old,
!                 Offset => 1)
! 
!          --  The element located at Position in Source is moved to Target
! 
!          and Element (Model (Target),
!                       P.Get (Positions (Target), Position)) =
!              Element (Model (Source)'Old,
!                       P.Get (Positions (Source)'Old, Position'Old))
! 
!          --  A new cursor has been inserted at position Position in Target
! 
!          and P_Positions_Shifted
!                (Positions (Target)'Old,
!                 Positions (Target),
!                 Cut => P.Get (Positions (Target), Position));
! 
!    procedure Splice
!      (Container : in out List;
!       Before    : Cursor;
!       Position  : Cursor)
!    with
!      Global         => null,
!      Pre            =>
!        (Has_Element (Container, Before) or else Before = No_Element)
!          and then Has_Element (Container, Position),
!      Post           => Length (Container) = Length (Container)'Old,
!      Contract_Cases =>
!        (Before = Position =>
!           Model (Container) = Model (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         Before = No_Element =>
! 
!           --  The elements located before Position are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Container)'Old,
!              Right => Model (Container),
!              Fst   => 1,
!              Lst   => P.Get (Positions (Container)'Old, Position) - 1)
! 
!           --  The elements located after Position are shifted by 1
! 
!           and M.Range_Shifted
!                 (Left   => Model (Container)'Old,
!                  Right  => Model (Container),
!                  Fst    => P.Get (Positions (Container)'Old, Position) + 1,
!                  Lst    => Length (Container)'Old,
!                  Offset => -1)
! 
!           --  The last element of Container is the one that was previously at
!           --  Position.
! 
!           and Element (Model (Container),
!                        Length (Container)) =
!               Element (Model (Container)'Old,
!                        P.Get (Positions (Container)'Old, Position))
! 
!           --  Cursors from Container continue designating the same elements
! 
!           and Mapping_Preserved
!                 (M_Left  => Model (Container)'Old,
!                  M_Right => Model (Container),
!                  P_Left  => Positions (Container)'Old,
!                  P_Right => Positions (Container)),
! 
!         others =>
! 
!           --  The elements located before Position and Before are preserved
! 
!           M.Range_Equal
!             (Left  => Model (Container)'Old,
!              Right => Model (Container),
!              Fst   => 1,
!              Lst   =>
!                Count_Type'Min
!                  (P.Get (Positions (Container)'Old, Position) - 1,
!                   P.Get (Positions (Container)'Old, Before) - 1))
! 
!             --  The elements located after Position and Before are preserved
! 
!             and M.Range_Equal
!                   (Left  => Model (Container)'Old,
!                    Right => Model (Container),
!                    Fst   =>
!                      Count_Type'Max
!                        (P.Get (Positions (Container)'Old, Position) + 1,
!                         P.Get (Positions (Container)'Old, Before) + 1),
!                    Lst   => Length (Container))
! 
!             --  The elements located after Before and before Position are
!             --  shifted by 1 to the right.
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container)'Old,
!                    Right  => Model (Container),
!                    Fst    => P.Get (Positions (Container)'Old, Before) + 1,
!                    Lst    => P.Get (Positions (Container)'Old, Position) - 1,
!                    Offset => 1)
! 
!             --  The elements located after Position and before Before are
!             --  shifted by 1 to the left.
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container)'Old,
!                    Right  => Model (Container),
!                    Fst    => P.Get (Positions (Container)'Old, Position) + 1,
!                    Lst    => P.Get (Positions (Container)'Old, Before) - 1,
!                    Offset => -1)
! 
!             --  The element previously at Position is now before Before
! 
!             and Element
!                   (Model (Container),
!                    P.Get (Positions (Container)'Old, Before)) =
!                 Element
!                   (Model (Container)'Old,
!                    P.Get (Positions (Container)'Old, Position))
! 
!             --  Cursors from Container continue designating the same elements
! 
!             and Mapping_Preserved
!                   (M_Left  => Model (Container)'Old,
!                    M_Right => Model (Container),
!                    P_Left  => Positions (Container)'Old,
!                    P_Right => Positions (Container)));
! 
!    function First (Container : List) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           First'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, First'Result)
!             and P.Get (Positions (Container), First'Result) = 1);
! 
!    function First_Element (Container : List) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   => First_Element'Result = M.Get (Model (Container), 1);
! 
!    function Last (Container : List) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           Last'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Last'Result)
!             and P.Get (Positions (Container), Last'Result) =
!                   Length (Container));
! 
!    function Last_Element (Container : List) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Last_Element'Result = M.Get (Model (Container), Length (Container));
! 
!    function Next (Container : List; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Next'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Next'Result)
!             and then P.Get (Positions (Container), Next'Result) =
!                      P.Get (Positions (Container), Position) + 1);
! 
!    procedure Next (Container : List; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) + 1);
! 
!    function Previous (Container : List; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = 1
!         =>
!           Previous'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Previous'Result)
!             and then P.Get (Positions (Container), Previous'Result) =
!                      P.Get (Positions (Container), Position) - 1);
! 
!    procedure Previous (Container : List; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = 1
!          =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) - 1);
! 
!    function Find
!      (Container : List;
!       Item      : Element_Type;
!       Position  : Cursor := No_Element) return Cursor
!    with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container after Position, Find returns
!        --  No_Element.
! 
!        (not M.Contains
!               (Container => Model (Container),
!                Fst       =>
!                  (if Position = No_Element then
!                      1
!                   else
!                      P.Get (Positions (Container), Position)),
!                Lst       => Length (Container),
!                Item      => Item)
!         =>
!           Find'Result = No_Element,
! 
!         --  Otherwise, Find returns a valid cursor in Container
! 
!         others =>
!           P.Has_Key (Positions (Container), Find'Result)
! 
!             --  The element designated by the result of Find is Item
! 
!             and Element
!                   (Model (Container),
!                    P.Get (Positions (Container), Find'Result)) = Item
! 
!             --  The result of Find is located after Position
! 
!             and (if Position /= No_Element then
!                     P.Get (Positions (Container), Find'Result) >=
!                     P.Get (Positions (Container), Position))
! 
!             --  It is the first occurrence of Item in this slice
! 
!             and not M.Contains
!                       (Container => Model (Container),
!                        Fst       =>
!                          (if Position = No_Element then
!                              1
!                           else
!                              P.Get (Positions (Container), Position)),
!                        Lst       =>
!                          P.Get (Positions (Container), Find'Result) - 1,
!                        Item      => Item));
! 
!    function Reverse_Find
!      (Container : List;
!       Item      : Element_Type;
!       Position  : Cursor := No_Element) return Cursor
!    with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container before Position, Find returns
!        --  No_Element.
! 
!        (not M.Contains
!               (Container => Model (Container),
!                Fst       => 1,
!                Lst       =>
!                  (if Position = No_Element then
!                      Length (Container)
!                   else
!                      P.Get (Positions (Container), Position)),
!                Item      => Item)
!         =>
!           Reverse_Find'Result = No_Element,
! 
!         --  Otherwise, Find returns a valid cursor in Container
! 
!         others =>
!           P.Has_Key (Positions (Container), Reverse_Find'Result)
! 
!             --  The element designated by the result of Find is Item
! 
!             and Element
!                   (Model (Container),
!                    P.Get (Positions (Container), Reverse_Find'Result)) = Item
! 
!             --  The result of Find is located before Position
! 
!             and (if Position /= No_Element then
!                     P.Get (Positions (Container), Reverse_Find'Result) <=
!                     P.Get (Positions (Container), Position))
! 
!             --  It is the last occurrence of Item in this slice
! 
!             and not M.Contains
!                       (Container => Model (Container),
!                        Fst       =>
!                          P.Get (Positions (Container),
!                                 Reverse_Find'Result) + 1,
!                        Lst       =>
!                          (if Position = No_Element then
!                              Length (Container)
!                           else
!                              P.Get (Positions (Container), Position)),
!                        Item      => Item));
! 
!    function Contains
!      (Container : List;
!       Item      : Element_Type) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Contains'Result = M.Contains (Container => Model (Container),
!                                      Fst       => 1,
!                                      Lst       => Length (Container),
!                                      Item      => Item);
! 
!    function Has_Element
!      (Container : List;
!       Position  : Cursor) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result = P.Has_Key (Positions (Container), Position);
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
!    generic
!       with function "<" (Left, Right : Element_Type) return Boolean is <>;
! 
!    package Generic_Sorting with SPARK_Mode is
! 
!       package Formal_Model with Ghost is
!          function M_Elements_Sorted (Container : M.Sequence) return Boolean
!          with
!            Global => null,
!            Post   =>
!              M_Elements_Sorted'Result =
!                (for all I in 1 .. M.Length (Container) =>
!                  (for all J in I .. M.Length (Container) =>
!                    not (Element (Container, J) < Element (Container, I))));
!          pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Sorted);
! 
!       end Formal_Model;
!       use Formal_Model;
! 
!       function Is_Sorted (Container : List) return Boolean with
!         Global => null,
!         Post   => Is_Sorted'Result = M_Elements_Sorted (Model (Container));
! 
!       procedure Sort (Container : in out List) with
!         Global => null,
!         Post   =>
!           Length (Container) = Length (Container)'Old
!             and M_Elements_Sorted (Model (Container))
!             and M_Elements_Included
!                   (Left  => Model (Container)'Old,
!                    L_Lst => Length (Container),
!                    Right => Model (Container),
!                    R_Lst => Length (Container))
!             and M_Elements_Included
!                   (Left  => Model (Container),
!                    L_Lst => Length (Container),
!                    Right => Model (Container)'Old,
!                    R_Lst => Length (Container));
! 
!       procedure Merge (Target : in out List; Source : in out List) with
!       --  Target and Source should not be aliased
!         Global => null,
!         Pre    => Length (Source) <= Target.Capacity - Length (Target),
!         Post   =>
!           Length (Target) = Length (Target)'Old + Length (Source)'Old
!             and Length (Source) = 0
!             and (if M_Elements_Sorted (Model (Target)'Old)
!                    and M_Elements_Sorted (Model (Source)'Old)
!                  then
!                     M_Elements_Sorted (Model (Target)))
!             and M_Elements_Included
!                   (Left  => Model (Target)'Old,
!                    L_Lst => Length (Target)'Old,
!                    Right => Model (Target),
!                    R_Lst => Length (Target))
!             and M_Elements_Included
!                   (Left  => Model (Source)'Old,
!                    L_Lst => Length (Source)'Old,
!                    Right => Model (Target),
!                    R_Lst => Length (Target))
!             and M_Elements_In_Union
!                   (Model (Target),
!                    Model (Source)'Old,
!                    Model (Target)'Old);
!    end Generic_Sorting;
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    type Node_Type is record
!       Prev    : Count_Type'Base := -1;
!       Next    : Count_Type;
!       Element : aliased Element_Type;
!    end record;
! 
!    function "=" (L, R : Node_Type) return Boolean is abstract;
! 
!    type Node_Array is array (Count_Type range <>) of Node_Type;
!    function "=" (L, R : Node_Array) return Boolean is abstract;
! 
!    type List (Capacity : Count_Type) is record
!       Free   : Count_Type'Base := -1;
!       Length : Count_Type := 0;
!       First  : Count_Type := 0;
!       Last   : Count_Type := 0;
!       Nodes  : Node_Array (1 .. Capacity);
!    end record;
  
!    Empty_List : constant List := (0, others => <>);
  
  end Ada.Containers.Formal_Doubly_Linked_Lists;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Doubly_Linked_Lists with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Doubly_Linked_Lists;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfhama.adb gcc-13.1.0/gcc/ada/libgnat/a-cfhama.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cfhama.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfhama.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,962 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . F O R M A L _ H A S H E D _ M A P S     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Hash_Tables.Generic_Bounded_Operations;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Bounded_Operations);
- 
- with Ada.Containers.Hash_Tables.Generic_Bounded_Keys;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Bounded_Keys);
- 
- with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Hashed_Maps with
-   SPARK_Mode => Off
- is
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  All local subprograms require comments ???
- 
-    function Equivalent_Keys
-      (Key  : Key_Type;
-       Node : Node_Type) return Boolean;
-    pragma Inline (Equivalent_Keys);
- 
-    procedure Free
-      (HT : in out Map;
-       X  : Count_Type);
- 
-    generic
-       with procedure Set_Element (Node : in out Node_Type);
-    procedure Generic_Allocate
-      (HT   : in out Map;
-       Node : out Count_Type);
- 
-    function Hash_Node (Node : Node_Type) return Hash_Type;
-    pragma Inline (Hash_Node);
- 
-    function Next (Node : Node_Type) return Count_Type;
-    pragma Inline (Next);
- 
-    procedure Set_Next (Node : in out Node_Type; Next : Count_Type);
-    pragma Inline (Set_Next);
- 
-    function Vet (Container : Map; Position : Cursor) return Boolean;
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package HT_Ops is
-      new Hash_Tables.Generic_Bounded_Operations
-        (HT_Types  => HT_Types,
-         Hash_Node => Hash_Node,
-         Next      => Next,
-         Set_Next  => Set_Next);
- 
-    package Key_Ops is
-      new Hash_Tables.Generic_Bounded_Keys
-        (HT_Types        => HT_Types,
-         Next            => Next,
-         Set_Next        => Set_Next,
-         Key_Type        => Key_Type,
-         Hash            => Hash,
-         Equivalent_Keys => Equivalent_Keys);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       if Length (Left) = 0 then
-          return True;
-       end if;
- 
-       declare
-          Node  : Count_Type;
-          ENode : Count_Type;
- 
-       begin
-          Node := First (Left).Node;
-          while Node /= 0 loop
-             ENode :=
-               Find
-                 (Container => Right,
-                  Key       => Left.Content.Nodes (Node).Key).Node;
- 
-             if ENode = 0 or else
-               Right.Content.Nodes (ENode).Element /=
-               Left.Content.Nodes (Node).Element
-             then
-                return False;
-             end if;
- 
-             Node := HT_Ops.Next (Left.Content, Node);
-          end loop;
- 
-          return True;
-       end;
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) is
-       procedure Insert_Element (Source_Node : Count_Type);
-       pragma Inline (Insert_Element);
- 
-       procedure Insert_Elements is
-         new HT_Ops.Generic_Iteration (Insert_Element);
- 
-       --------------------
-       -- Insert_Element --
-       --------------------
- 
-       procedure Insert_Element (Source_Node : Count_Type) is
-          N : Node_Type renames Source.Content.Nodes (Source_Node);
-       begin
-          Insert (Target, N.Key, N.Element);
-       end Insert_Element;
- 
-       --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Constraint_Error with  -- correct exception ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       Insert_Elements (Source.Content);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Map) return Count_Type is
-    begin
-       return Container.Content.Nodes'Length;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       HT_Ops.Clear (Container.Content);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return not null access constant Element_Type
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position),
-          "bad cursor in function Constant_Reference");
- 
-       return Container.Content.Nodes (Position.Node).Element'Access;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return not null access constant Element_Type
-    is
-       Node : constant Count_Type := Find (Container, Key).Node;
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Container.Content.Nodes (Node).Element'Access;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean is
-    begin
-       return Find (Container, Key) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : Map;
-       Capacity : Count_Type := 0) return Map
-    is
-       C      : constant Count_Type :=
-                  Count_Type'Max (Capacity, Source.Capacity);
-       Cu     : Cursor;
-       H      : Hash_Type;
-       N      : Count_Type;
-       Target : Map (C, Source.Modulus);
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       Target.Content.Length := Source.Content.Length;
-       Target.Content.Free := Source.Content.Free;
- 
-       H := 1;
-       while H <= Source.Modulus loop
-          Target.Content.Buckets (H) := Source.Content.Buckets (H);
-          H := H + 1;
-       end loop;
- 
-       N := 1;
-       while N <= Source.Capacity loop
-          Target.Content.Nodes (N) := Source.Content.Nodes (N);
-          N := N + 1;
-       end loop;
- 
-       while N <= C loop
-          Cu := (Node => N);
-          Free (Target, Cu.Node);
-          N := N + 1;
-       end loop;
- 
-       return Target;
-    end Copy;
- 
-    ---------------------
-    -- Default_Modulus --
-    ---------------------
- 
-    function Default_Modulus (Capacity : Count_Type) return Hash_Type is
-    begin
-       return To_Prime (Capacity);
-    end Default_Modulus;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : Count_Type;
- 
-    begin
-       Key_Ops.Delete_Key_Sans_Free (Container.Content, Key, X);
- 
-       if X = 0 then
-          raise Constraint_Error with "attempt to delete key not in map";
-       end if;
- 
-       Free (Container, X);
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of Delete has no element";
-       end if;
- 
-       pragma Assert (Vet (Container, Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container.Content, Position.Node);
- 
-       Free (Container, Position.Node);
-       Position := No_Element;
-    end Delete;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       Node : constant Count_Type := Find (Container, Key).Node;
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Container.Content.Nodes (Node).Element;
-    end Element;
- 
-    function Element (Container : Map; Position : Cursor) return Element_Type is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad cursor in function Element");
- 
-       return Container.Content.Nodes (Position.Node).Element;
-    end Element;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys
-      (Key  : Key_Type;
-       Node : Node_Type) return Boolean
-    is
-    begin
-       return Equivalent_Keys (Key, Node.Key);
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) is
-       X : Count_Type;
-    begin
-       Key_Ops.Delete_Key_Sans_Free (Container.Content, Key, X);
-       Free (Container, X);
-    end Exclude;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Find (Container.Content, Key);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-       Node : constant Count_Type := HT_Ops.First (Container.Content);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end First;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : K.Sequence;
-          Key       : Key_Type) return Count_Type
-       is
-       begin
-          for I in 1 .. K.Length (Container) loop
-             if Equivalent_Keys (Key, K.Get (Container, I)) then
-                return I;
-             end if;
-          end loop;
-          return 0;
-       end Find;
- 
-       ---------------------
-       -- K_Keys_Included --
-       ---------------------
- 
-       function K_Keys_Included
-         (Left  : K.Sequence;
-          Right : K.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. K.Length (Left) loop
-             if not K.Contains (Right, 1, K.Length (Right), K.Get (Left, I))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end K_Keys_Included;
- 
-       ----------
-       -- Keys --
-       ----------
- 
-       function Keys (Container : Map) return K.Sequence is
-          Position : Count_Type := HT_Ops.First (Container.Content);
-          R        : K.Sequence;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := K.Add (R, Container.Content.Nodes (Position).Key);
-             Position := HT_Ops.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Keys;
- 
-       ----------------------------
-       -- Lift_Abstraction_Level --
-       ----------------------------
- 
-       procedure Lift_Abstraction_Level (Container : Map) is null;
- 
-       -----------------------
-       -- Mapping_Preserved --
-       -----------------------
- 
-       function Mapping_Preserved
-         (K_Left  : K.Sequence;
-          K_Right : K.Sequence;
-          P_Left  : P.Map;
-          P_Right : P.Map) return Boolean
-       is
-       begin
-          for C of P_Left loop
-             if not P.Has_Key (P_Right, C)
-               or else P.Get (P_Left,  C) > K.Length (K_Left)
-               or else P.Get (P_Right, C) > K.Length (K_Right)
-               or else K.Get (K_Left,  P.Get (P_Left,  C)) /=
-                       K.Get (K_Right, P.Get (P_Right, C))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Mapping_Preserved;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : Map) return M.Map is
-          Position : Count_Type := HT_Ops.First (Container.Content);
-          R        : M.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R :=
-               M.Add
-                 (Container => R,
-                  New_Key   => Container.Content.Nodes (Position).Key,
-                  New_Item  => Container.Content.Nodes (Position).Element);
- 
-             Position := HT_Ops.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Model;
- 
-       ---------------
-       -- Positions --
-       ---------------
- 
-       function Positions (Container : Map) return P.Map is
-          I        : Count_Type := 1;
-          Position : Count_Type := HT_Ops.First (Container.Content);
-          R        : P.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := P.Add (R, (Node => Position), I);
-             pragma Assert (P.Length (R) = I);
-             Position := HT_Ops.Next (Container.Content, Position);
-             I := I + 1;
-          end loop;
- 
-          return R;
-       end Positions;
- 
-    end Formal_Model;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (HT : in out Map; X : Count_Type) is
-    begin
-       if X /= 0 then
-          pragma Assert (X <= HT.Capacity);
-          HT.Content.Nodes (X).Has_Element := False;
-          HT_Ops.Free (HT.Content, X);
-       end if;
-    end Free;
- 
-    ----------------------
-    -- Generic_Allocate --
-    ----------------------
- 
-    procedure Generic_Allocate (HT : in out Map; Node : out Count_Type) is
-       procedure Allocate is
-         new HT_Ops.Generic_Allocate (Set_Element);
- 
-    begin
-       Allocate (HT.Content, Node);
-       HT.Content.Nodes (Node).Has_Element := True;
-    end Generic_Allocate;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Container : Map; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0
-         or else not Container.Content.Nodes (Position.Node).Has_Element
-       then
-          return False;
-       else
-          return True;
-       end if;
-    end Has_Element;
- 
-    ---------------
-    -- Hash_Node --
-    ---------------
- 
-    function Hash_Node (Node : Node_Type) return Hash_Type is
-    begin
-       return Hash (Node.Key);
-    end Hash_Node;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          declare
-             N : Node_Type renames Container.Content.Nodes (Position.Node);
-          begin
-             N.Key := Key;
-             N.Element := New_Item;
-          end;
-       end if;
-    end Include;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-       procedure Assign_Key (Node : in out Node_Type);
-       pragma Inline (Assign_Key);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert is
-         new Key_Ops.Generic_Conditional_Insert (New_Node);
- 
-       procedure Allocate is
-         new Generic_Allocate (Assign_Key);
- 
-       -----------------
-       --  Assign_Key --
-       -----------------
- 
-       procedure Assign_Key (Node : in out Node_Type) is
-       begin
-          Node.Key := Key;
-          Node.Element := New_Item;
-       end Assign_Key;
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Count_Type is
-          Result : Count_Type;
-       begin
-          Allocate (Container, Result);
-          return Result;
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Local_Insert (Container.Content, Key, Position.Node, Inserted);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          raise Constraint_Error with "attempt to insert key already in map";
-       end if;
-    end Insert;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Map) return Boolean is
-    begin
-       return Length (Container) = 0;
-    end Is_Empty;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Container : Map; Position : Cursor) return Key_Type is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of function Key has no element";
-       end if;
- 
-       pragma Assert (Vet (Container, Position), "bad cursor in function Key");
- 
-       return Container.Content.Nodes (Position.Node).Key;
-    end Key;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Content.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move
-      (Target : in out Map;
-       Source : in out Map)
-    is
-       NN : HT_Types.Nodes_Type renames Source.Content.Nodes;
-       X  : Count_Type;
-       Y  : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Constraint_Error with  -- ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       if Source.Content.Length = 0 then
-          return;
-       end if;
- 
-       X := HT_Ops.First (Source.Content);
-       while X /= 0 loop
-          Insert (Target, NN (X).Key, NN (X).Element);  -- optimize???
- 
-          Y := HT_Ops.Next (Source.Content, X);
- 
-          HT_Ops.Delete_Node_Sans_Free (Source.Content, X);
-          Free (Source, X);
- 
-          X := Y;
-       end loop;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Container : Map; Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position has no element";
-       end if;
- 
-       pragma Assert (Vet (Container, Position), "bad cursor in function Next");
- 
-       declare
-          Node : constant Count_Type :=
-            HT_Ops.Next (Container.Content, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return (Node => Node);
-       end;
-    end Next;
- 
-    procedure Next (Container : Map; Position : in out Cursor) is
-    begin
-       Position := Next (Container, Position);
-    end Next;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : not null access Map;
-       Position  : Cursor) return not null access Element_Type
-    is
-    begin
-       if not Has_Element (Container.all, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container.all, Position), "bad cursor in function Reference");
- 
-       return Container.Content.Nodes (Position.Node).Element'Access;
-    end Reference;
- 
-    function Reference
-      (Container : not null access Map;
-       Key       : Key_Type) return not null access Element_Type
-    is
-       Node : constant Count_Type := Find (Container.all, Key).Node;
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Container.Content.Nodes (Node).Element'Access;
-    end Reference;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Node : constant Count_Type := Key_Ops.Find (Container.Content, Key);
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with "attempt to replace key not in map";
-       end if;
- 
-       declare
-          N : Node_Type renames Container.Content.Nodes (Node);
-       begin
-          N.Key := Key;
-          N.Element := New_Item;
-       end;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad cursor in Replace_Element");
- 
-       Container.Content.Nodes (Position.Node).Element := New_Item;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Map;
-       Capacity  : Count_Type)
-    is
-    begin
-       if Capacity > Container.Capacity then
-          raise Capacity_Error with "requested capacity is too large";
-       end if;
-    end Reserve_Capacity;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (Node : in out Node_Type; Next : Count_Type) is
-    begin
-       Node.Next := Next;
-    end Set_Next;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Container : Map; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return True;
-       end if;
- 
-       declare
-          X : Count_Type;
- 
-       begin
-          if Container.Content.Length = 0 then
-             return False;
-          end if;
- 
-          if Container.Capacity = 0 then
-             return False;
-          end if;
- 
-          if Container.Content.Buckets'Length = 0 then
-             return False;
-          end if;
- 
-          if Position.Node > Container.Capacity then
-             return False;
-          end if;
- 
-          if Container.Content.Nodes (Position.Node).Next = Position.Node then
-             return False;
-          end if;
- 
-          X :=
-            Container.Content.Buckets
-              (Key_Ops.Index
-                 (Container.Content,
-                  Container.Content.Nodes (Position.Node).Key));
- 
-          for J in 1 .. Container.Content.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = 0 then
-                return False;
-             end if;
- 
-             if X = Container.Content.Nodes (X).Next then
- 
-                --  Prevent unnecessary looping
- 
-                return False;
-             end if;
- 
-             X := Container.Content.Nodes (X).Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
- end Ada.Containers.Formal_Hashed_Maps;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfhama.ads gcc-13.1.0/gcc/ada/libgnat/a-cfhama.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cfhama.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfhama.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
***************
*** 29,911 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- --  This spec is derived from package Ada.Containers.Bounded_Hashed_Maps in the
- --  Ada 2012 RM. The modifications are meant to facilitate formal proofs by
- --  making it easier to express properties, and by making the specification of
- --  this unit compatible with SPARK 2014. Note that the API of this unit may be
- --  subject to incompatible changes as SPARK 2014 evolves.
- 
- --  The modifications are:
- 
- --    A parameter for the container is added to every function reading the
- --    contents of a container: Key, Element, Next, Query_Element, Has_Element,
- --    Iterate, Equivalent_Keys. This change is motivated by the need to have
- --    cursors which are valid on different containers (typically a container C
- --    and its previous version C'Old) for expressing properties, which is not
- --    possible if cursors encapsulate an access to the underlying container.
- 
- --  Iteration over maps is done using the Iterable aspect, which is SPARK
- --  compatible. "For of" iteration ranges over keys instead of elements.
- 
- with Ada.Containers.Functional_Vectors;
- with Ada.Containers.Functional_Maps;
- private with Ada.Containers.Hash_Tables;
- 
  generic
!    type Key_Type is private;
!    type Element_Type is private;
! 
!    with function Hash (Key : Key_Type) return Hash_Type;
!    with function Equivalent_Keys
!      (Left  : Key_Type;
!       Right : Key_Type) return Boolean is "=";
!    with function "=" (Left, Right : Element_Type) return Boolean is <>;
! 
! package Ada.Containers.Formal_Hashed_Maps with
!   SPARK_Mode
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    type Map (Capacity : Count_Type; Modulus : Hash_Type) is private with
!      Iterable => (First       => First,
!                   Next        => Next,
!                   Has_Element => Has_Element,
!                   Element     => Key),
!      Default_Initial_Condition => Is_Empty (Map);
!    pragma Preelaborable_Initialization (Map);
! 
!    Empty_Map : constant Map;
! 
!    type Cursor is record
!       Node : Count_Type;
!    end record;
! 
!    No_Element : constant Cursor := (Node => 0);
! 
!    function Length (Container : Map) return Count_Type with
!      Global => null,
!      Post   => Length'Result <= Container.Capacity;
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
!       subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!       package M is new Ada.Containers.Functional_Maps
!         (Element_Type    => Element_Type,
!          Key_Type        => Key_Type,
!          Equivalent_Keys => Equivalent_Keys);
! 
!       function "="
!         (Left  : M.Map;
!          Right : M.Map) return Boolean renames M."=";
! 
!       function "<="
!         (Left  : M.Map;
!          Right : M.Map) return Boolean renames M."<=";
! 
!       package K is new Ada.Containers.Functional_Vectors
!         (Element_Type => Key_Type,
!          Index_Type   => Positive_Count_Type);
! 
!       function "="
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean renames K."=";
! 
!       function "<"
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean renames K."<";
! 
!       function "<="
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean renames K."<=";
! 
!       function Find (Container : K.Sequence; Key : Key_Type) return Count_Type
!       --  Search for Key in Container
! 
!       with
!         Global => null,
!         Post =>
!           (if Find'Result > 0 then
!               Find'Result <= K.Length (Container)
!                 and Equivalent_Keys (Key, K.Get (Container, Find'Result)));
! 
!       function K_Keys_Included
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean
!       --  Return True if Right contains all the keys of Left
! 
!       with
!         Global => null,
!         Post   =>
!           K_Keys_Included'Result =
!             (for all I in 1 .. K.Length (Left) =>
!               Find (Right, K.Get (Left, I)) > 0
!                 and then K.Get (Right, Find (Right, K.Get (Left, I))) =
!                          K.Get (Left, I));
! 
!       package P is new Ada.Containers.Functional_Maps
!         (Key_Type                       => Cursor,
!          Element_Type                   => Positive_Count_Type,
!          Equivalent_Keys                => "=",
!          Enable_Handling_Of_Equivalence => False);
! 
!       function "="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."=";
! 
!       function "<="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."<=";
! 
!       function Mapping_Preserved
!         (K_Left  : K.Sequence;
!          K_Right : K.Sequence;
!          P_Left  : P.Map;
!          P_Right : P.Map) return Boolean
!       with
!         Global => null,
!         Post   =>
!           (if Mapping_Preserved'Result then
! 
!              --  Right contains all the cursors of Left
! 
!              P.Keys_Included (P_Left, P_Right)
! 
!                --  Right contains all the keys of Left
! 
!                and K_Keys_Included (K_Left, K_Right)
! 
!                --  Mappings from cursors to elements induced by K_Left, P_Left
!                --  and K_Right, P_Right are the same.
! 
!                and (for all C of P_Left =>
!                      K.Get (K_Left, P.Get (P_Left, C)) =
!                      K.Get (K_Right, P.Get (P_Right, C))));
! 
!       function Model (Container : Map) return M.Map with
!       --  The high-level model of a map is a map from keys to elements. Neither
!       --  cursors nor order of elements are represented in this model. Keys are
!       --  modeled up to equivalence.
! 
!         Ghost,
!         Global => null;
! 
!       function Keys (Container : Map) return K.Sequence with
!       --  The Keys sequence represents the underlying list structure of maps
!       --  that is used for iteration. It stores the actual values of keys in
!       --  the map. It does not model cursors nor elements.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           K.Length (Keys'Result) = Length (Container)
! 
!             --  It only contains keys contained in Model
! 
!             and (for all Key of Keys'Result =>
!                   M.Has_Key (Model (Container), Key))
! 
!             --  It contains all the keys contained in Model
! 
!             and (for all Key of Model (Container) =>
!                   (Find (Keys'Result, Key) > 0
!                     and then Equivalent_Keys
!                                (K.Get (Keys'Result, Find (Keys'Result, Key)),
!                                 Key)))
! 
!             --  It has no duplicate
! 
!             and (for all I in 1 .. Length (Container) =>
!                   Find (Keys'Result, K.Get (Keys'Result, I)) = I)
! 
!             and (for all I in 1 .. Length (Container) =>
!                   (for all J in 1 .. Length (Container) =>
!                     (if Equivalent_Keys
!                           (K.Get (Keys'Result, I), K.Get (Keys'Result, J))
!                      then
!                         I = J)));
!       pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Keys);
! 
!       function Positions (Container : Map) return P.Map with
!       --  The Positions map is used to model cursors. It only contains valid
!       --  cursors and maps them to their position in the container.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           not P.Has_Key (Positions'Result, No_Element)
! 
!             --  Positions of cursors are smaller than the container's length
! 
!             and then
!               (for all I of Positions'Result =>
!                 P.Get (Positions'Result, I) in 1 .. Length (Container)
! 
!             --  No two cursors have the same position. Note that we do not
!             --  state that there is a cursor in the map for each position, as
!             --  it is rarely needed.
! 
!             and then
!               (for all J of Positions'Result =>
!                 (if P.Get (Positions'Result, I) = P.Get (Positions'Result, J)
!                  then I = J)));
! 
!       procedure Lift_Abstraction_Level (Container : Map) with
!         --  Lift_Abstraction_Level is a ghost procedure that does nothing but
!         --  assume that we can access the same elements by iterating over
!         --  positions or cursors.
!         --  This information is not generally useful except when switching from
!         --  a low-level, cursor-aware view of a container, to a high-level,
!         --  position-based view.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           (for all Key of Keys (Container) =>
!             (for some I of Positions (Container) =>
!               K.Get (Keys (Container), P.Get (Positions (Container), I)) =
!                 Key));
! 
!       function Contains
!         (C : M.Map;
!          K : Key_Type) return Boolean renames M.Has_Key;
!       --  To improve readability of contracts, we rename the function used to
!       --  search for a key in the model to Contains.
! 
!       function Element
!         (C : M.Map;
!          K : Key_Type) return Element_Type renames M.Get;
!       --  To improve readability of contracts, we rename the function used to
!       --  access an element in the model to Element.
! 
!    end Formal_Model;
!    use Formal_Model;
! 
!    function "=" (Left, Right : Map) return Boolean with
!      Global => null,
!      Post   => "="'Result = (Model (Left) = Model (Right));
! 
!    function Capacity (Container : Map) return Count_Type with
!      Global => null,
!      Post   => Capacity'Result = Container.Capacity;
! 
!    procedure Reserve_Capacity
!      (Container : in out Map;
!       Capacity  : Count_Type)
!    with
!      Global => null,
!      Pre    => Capacity <= Container.Capacity,
!      Post   =>
!        Model (Container) = Model (Container)'Old
!          and Length (Container)'Old = Length (Container)
! 
!          --  Actual keys are preserved
! 
!          and K_Keys_Included (Keys (Container), Keys (Container)'Old)
!          and K_Keys_Included (Keys (Container)'Old, Keys (Container));
! 
!    function Is_Empty (Container : Map) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
! 
!    procedure Clear (Container : in out Map) with
!      Global => null,
!      Post   => Length (Container) = 0 and M.Is_Empty (Model (Container));
! 
!    procedure Assign (Target : in out Map; Source : Map) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)
!          and Length (Source) = Length (Target)
! 
!          --  Actual keys are preserved
! 
!          and K_Keys_Included (Keys (Target), Keys (Source))
!          and K_Keys_Included (Keys (Source), Keys (Target));
! 
!    function Copy
!      (Source   : Map;
!       Capacity : Count_Type := 0) return Map
!    with
!      Global => null,
!      Pre    => Capacity = 0 or else Capacity >= Source.Capacity,
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and Keys (Copy'Result) = Keys (Source)
!          and Positions (Copy'Result) = Positions (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Source.Capacity
!               else
!                  Copy'Result.Capacity = Capacity);
!    --  Copy returns a container stricty equal to Source. It must have the same
!    --  cursors associated with each element. Therefore:
!    --  - capacity=0 means use Source.Capacity as capacity of target
!    --  - the modulus cannot be changed.
! 
!    function Key (Container : Map; Position : Cursor) return Key_Type with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Key'Result =
!          K.Get (Keys (Container), P.Get (Positions (Container), Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Key);
! 
!    function Element
!      (Container : Map;
!       Position  : Cursor) return Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Element'Result = Element (Model (Container), Key (Container, Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out Map;
!       Position  : Cursor;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
! 
!        --  Order of keys and cursors is preserved
! 
!        Keys (Container) = Keys (Container)'Old
!          and Positions (Container) = Positions (Container)'Old
! 
!          --  New_Item is now associated with the key at position Position in
!          --  Container.
! 
!          and Element (Container, Position) = New_Item
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys (Model (Container), Model (Container)'Old)
!          and M.Elements_Equal_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 Key (Container, Position));
! 
!    function At_End
!      (E : not null access constant Map) return not null access constant Map
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function At_End
!      (E : access constant Element_Type) return access constant Element_Type
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function Constant_Reference
!      (Container : aliased Map;
!       Position  : Cursor) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Constant_Reference'Result.all =
!            Element (Model (Container), Key (Container, Position));
! 
!    function Reference
!      (Container : not null access Map;
!       Position  : Cursor) return not null access Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container.all, Position),
!      Post   =>
! 
!        --  Order of keys and cursors is preserved
! 
!        Keys (At_End (Container).all) = Keys (Container.all)
!          and Positions (At_End (Container).all) = Positions (Container.all)
! 
!          --  The value designated by the result of Reference is now associated
!          --  with the key at position Position in Container.
! 
!          and Element (At_End (Container).all, Position) =
!                At_End (Reference'Result).all
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys
!                (Model (At_End (Container).all),
!                 Model (Container.all))
!          and M.Elements_Equal_Except
!                (Model (At_End (Container).all),
!                 Model (Container.all),
!                 Key (At_End (Container).all, Position));
! 
!    function Constant_Reference
!      (Container : aliased Map;
!       Key       : Key_Type) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   =>
!        Constant_Reference'Result.all = Element (Model (Container), Key);
! 
!    function Reference
!      (Container : not null access Map;
!       Key       : Key_Type) return not null access Element_Type
!    with
!      Global => null,
!      Pre    => Contains (Container.all, Key),
!      Post   =>
! 
!        --  Order of keys and cursors is preserved
! 
!        Keys (At_End (Container).all) = Keys (Container.all)
!          and Positions (At_End (Container).all) = Positions (Container.all)
! 
!          --  The value designated by the result of Reference is now associated
!          --  with Key in Container.
! 
!          and Element (Model (At_End (Container).all), Key) =
!                At_End (Reference'Result).all
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys
!                (Model (At_End (Container).all),
!                 Model (Container.all))
!          and M.Elements_Equal_Except
!                (Model (At_End (Container).all),
!                 Model (Container.all),
!                 Key);
! 
!    procedure Move (Target : in out Map; Source : in out Map) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)'Old
!          and Length (Source)'Old = Length (Target)
!          and Length (Source) = 0
! 
!          --  Actual keys are preserved
! 
!          and K_Keys_Included (Keys (Target), Keys (Source)'Old)
!          and K_Keys_Included (Keys (Source)'Old, Keys (Target));
! 
!    procedure Insert
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type;
!       Position  : out Cursor;
!       Inserted  : out Boolean)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity or Contains (Container, Key),
!      Post           =>
!        Contains (Container, Key)
!          and Has_Element (Container, Position)
!          and Equivalent_Keys
!                (Formal_Hashed_Maps.Key (Container, Position), Key),
!      Contract_Cases =>
! 
!        --  If Key is already in Container, it is not modified and Inserted is
!        --  set to False.
! 
!        (Contains (Container, Key) =>
!           not Inserted
!             and Model (Container) = Model (Container)'Old
!             and Keys (Container) = Keys (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, Key is inserted in Container and Inserted is set to True
! 
!         others =>
!           Inserted
!             and Length (Container) = Length (Container)'Old + 1
! 
!             --  Key now maps to New_Item
! 
!             and Formal_Hashed_Maps.Key (Container, Position) = Key
!             and Element (Model (Container), Key) = New_Item
! 
!             --  Other keys are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Keys_Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    Key)
! 
!             --  Mapping from cursors to keys is preserved
! 
!             and Mapping_Preserved
!                   (K_Left  => Keys (Container)'Old,
!                    K_Right => Keys (Container),
!                    P_Left  => Positions (Container)'Old,
!                    P_Right => Positions (Container))
!             and P.Keys_Included_Except
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Position));
! 
!    procedure Insert
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Container.Capacity
!         and then (not Contains (Container, Key)),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
!          and Contains (Container, Key)
! 
!          --  Key now maps to New_Item
! 
!          and Formal_Hashed_Maps.Key (Container, Find (Container, Key)) = Key
!          and Element (Model (Container), Key) = New_Item
! 
!          --  Other keys are preserved
! 
!          and Model (Container)'Old <= Model (Container)
!          and M.Keys_Included_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 Key)
! 
!          --  Mapping from cursors to keys is preserved
! 
!          and Mapping_Preserved
!                (K_Left  => Keys (Container)'Old,
!                 K_Right => Keys (Container),
!                 P_Left  => Positions (Container)'Old,
!                 P_Right => Positions (Container))
!          and P.Keys_Included_Except
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Find (Container, Key));
! 
!    procedure Include
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity or Contains (Container, Key),
!      Post           =>
!        Contains (Container, Key) and Element (Container, Key) = New_Item,
!      Contract_Cases =>
! 
!        --  If Key is already in Container, Key is mapped to New_Item
! 
!        (Contains (Container, Key) =>
! 
!           --  Cursors are preserved
! 
!           Positions (Container) = Positions (Container)'Old
! 
!             --  The key equivalent to Key in Container is replaced by Key
! 
!             and K.Get
!                   (Keys (Container),
!                    P.Get (Positions (Container), Find (Container, Key))) = Key
!             and K.Equal_Except
!                   (Keys (Container)'Old,
!                    Keys (Container),
!                    P.Get (Positions (Container), Find (Container, Key)))
! 
!             --  Elements associated with other keys are preserved
! 
!             and M.Same_Keys (Model (Container), Model (Container)'Old)
!             and M.Elements_Equal_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    Key),
! 
!         --  Otherwise, Key is inserted in Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old + 1
! 
!             --  Other keys are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Keys_Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    Key)
! 
!             --  Key is inserted in Container
! 
!             and K.Get
!                   (Keys (Container),
!                    P.Get (Positions (Container), Find (Container, Key))) = Key
! 
!             --  Mapping from cursors to keys is preserved
! 
!             and Mapping_Preserved
!                   (K_Left  => Keys (Container)'Old,
!                    K_Right => Keys (Container),
!                    P_Left  => Positions (Container)'Old,
!                    P_Right => Positions (Container))
!             and P.Keys_Included_Except
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Find (Container, Key)));
! 
!    procedure Replace
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   =>
! 
!        --  Cursors are preserved
! 
!        Positions (Container) = Positions (Container)'Old
! 
!          --  The key equivalent to Key in Container is replaced by Key
! 
!          and K.Get
!                (Keys (Container),
!                 P.Get (Positions (Container), Find (Container, Key))) = Key
!          and K.Equal_Except
!                (Keys (Container)'Old,
!                 Keys (Container),
!                 P.Get (Positions (Container), Find (Container, Key)))
! 
!          --  New_Item is now associated with the Key in Container
! 
!          and Element (Model (Container), Key) = New_Item
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys (Model (Container), Model (Container)'Old)
!          and M.Elements_Equal_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 Key);
! 
!    procedure Exclude (Container : in out Map; Key : Key_Type) with
!      Global         => null,
!      Post           => not Contains (Container, Key),
!      Contract_Cases =>
! 
!        --  If Key is not in Container, nothing is changed
! 
!        (not Contains (Container, Key) =>
!           Model (Container) = Model (Container)'Old
!             and Keys (Container) = Keys (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, Key is removed from Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  Other keys are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Keys_Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Key)
! 
!             --  Mapping from cursors to keys is preserved
! 
!             and Mapping_Preserved
!                   (K_Left  => Keys (Container),
!                    K_Right => Keys (Container)'Old,
!                    P_Left  => Positions (Container),
!                    P_Right => Positions (Container)'Old)
!             and P.Keys_Included_Except
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Find (Container, Key)'Old));
! 
!    procedure Delete (Container : in out Map; Key : Key_Type) with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Key is no longer in Container
! 
!          and not Contains (Container, Key)
! 
!          --  Other keys are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Keys_Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Key)
! 
!          --  Mapping from cursors to keys is preserved
! 
!          and Mapping_Preserved
!                (K_Left  => Keys (Container),
!                 K_Right => Keys (Container)'Old,
!                 P_Left  => Positions (Container),
!                 P_Right => Positions (Container)'Old)
!          and P.Keys_Included_Except
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Find (Container, Key)'Old);
! 
!    procedure Delete (Container : in out Map; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
!        Position = No_Element
!          and Length (Container) = Length (Container)'Old - 1
! 
!          --  The key at position Position is no longer in Container
! 
!          and not Contains (Container, Key (Container, Position)'Old)
!          and not P.Has_Key (Positions (Container), Position'Old)
! 
!          --  Other keys are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Keys_Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Key (Container, Position)'Old)
! 
!          --  Mapping from cursors to keys is preserved
! 
!          and Mapping_Preserved
!                (K_Left  => Keys (Container),
!                 K_Right => Keys (Container)'Old,
!                 P_Left  => Positions (Container),
!                 P_Right => Positions (Container)'Old)
!          and P.Keys_Included_Except
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Position'Old);
! 
!    function First (Container : Map) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           First'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, First'Result)
!             and P.Get (Positions (Container), First'Result) = 1);
! 
!    function Next (Container : Map; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Next'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Next'Result)
!             and then P.Get (Positions (Container), Next'Result) =
!                      P.Get (Positions (Container), Position) + 1);
! 
!    procedure Next (Container : Map; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) + 1);
! 
!    function Find (Container : Map; Key : Key_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Key is not contained in Container, Find returns No_Element
! 
!        (not Contains (Model (Container), Key) =>
!           Find'Result = No_Element,
! 
!         --  Otherwise, Find returns a valid cursor in Container
! 
!         others =>
!           P.Has_Key (Positions (Container), Find'Result)
!             and P.Get (Positions (Container), Find'Result) =
!                 Find (Keys (Container), Key)
! 
!             --  The key designated by the result of Find is Key
! 
!             and Equivalent_Keys
!                   (Formal_Hashed_Maps.Key (Container, Find'Result), Key));
! 
!    function Contains (Container : Map; Key : Key_Type) return Boolean with
!      Global => null,
!      Post   => Contains'Result = Contains (Model (Container), Key);
!    pragma Annotate (GNATprove, Inline_For_Proof, Contains);
! 
!    function Element (Container : Map; Key : Key_Type) return Element_Type with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   => Element'Result = Element (Model (Container), Key);
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    function Has_Element (Container : Map; Position : Cursor) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result = P.Has_Key (Positions (Container), Position);
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
!    function Default_Modulus (Capacity : Count_Type) return Hash_Type with
!      Global => null;
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    pragma Inline (Length);
!    pragma Inline (Is_Empty);
!    pragma Inline (Clear);
!    pragma Inline (Key);
!    pragma Inline (Element);
!    pragma Inline (Contains);
!    pragma Inline (Capacity);
!    pragma Inline (Has_Element);
!    pragma Inline (Equivalent_Keys);
!    pragma Inline (Next);
! 
!    type Node_Type is record
!       Key         : Key_Type;
!       Element     : aliased Element_Type;
!       Next        : Count_Type;
!       Has_Element : Boolean := False;
!    end record;
! 
!    package HT_Types is new
!      Ada.Containers.Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
! 
!    type Map (Capacity : Count_Type; Modulus : Hash_Type) is record
!      Content : HT_Types.Hash_Table_Type (Capacity, Modulus);
!    end record;
  
!    Empty_Map : constant Map := (Capacity => 0, Modulus => 0, others => <>);
  
  end Ada.Containers.Formal_Hashed_Maps;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Hashed_Maps with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Hashed_Maps;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfhase.adb gcc-13.1.0/gcc/ada/libgnat/a-cfhase.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cfhase.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfhase.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1600 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --    A D A . C O N T A I N E R S . F O R M A L _ H A S H E D _ S E T S     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Hash_Tables.Generic_Bounded_Operations;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Bounded_Operations);
- 
- with Ada.Containers.Hash_Tables.Generic_Bounded_Keys;
- pragma Elaborate_All (Ada.Containers.Hash_Tables.Generic_Bounded_Keys);
- 
- with Ada.Containers.Prime_Numbers; use Ada.Containers.Prime_Numbers;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Hashed_Sets with
-   SPARK_Mode => Off
- is
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  All need comments ???
- 
-    procedure Difference (Left : Set; Right : Set; Target : in out Set);
- 
-    function Equivalent_Keys
-      (Key  : Element_Type;
-       Node : Node_Type) return Boolean;
-    pragma Inline (Equivalent_Keys);
- 
-    procedure Free
-      (HT : in out Set;
-       X  : Count_Type);
- 
-    generic
-       with procedure Set_Element (Node : in out Node_Type);
-    procedure Generic_Allocate
-      (HT   : in out Set;
-       Node : out Count_Type);
- 
-    function Hash_Node (Node : Node_Type) return Hash_Type;
-    pragma Inline (Hash_Node);
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean);
- 
-    procedure Intersection
-      (Left   : Set;
-       Right  : Set;
-       Target : in out Set);
- 
-    function Is_In
-      (HT  : Set;
-       Key : Node_Type) return Boolean;
-    pragma Inline (Is_In);
- 
-    procedure Set_Element (Node : in out Node_Type; Item : Element_Type);
-    pragma Inline (Set_Element);
- 
-    function Next (Node : Node_Type) return Count_Type;
-    pragma Inline (Next);
- 
-    procedure Set_Next (Node : in out Node_Type; Next : Count_Type);
-    pragma Inline (Set_Next);
- 
-    function Vet (Container : Set; Position : Cursor) return Boolean;
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package HT_Ops is new Hash_Tables.Generic_Bounded_Operations
-      (HT_Types  => HT_Types,
-       Hash_Node => Hash_Node,
-       Next      => Next,
-       Set_Next  => Set_Next);
- 
-    package Element_Keys is new Hash_Tables.Generic_Bounded_Keys
-      (HT_Types        => HT_Types,
-       Next            => Next,
-       Set_Next        => Set_Next,
-       Key_Type        => Element_Type,
-       Hash            => Hash,
-       Equivalent_Keys => Equivalent_Keys);
- 
-    procedure Replace_Element is
-      new Element_Keys.Generic_Replace_Element (Hash_Node, Set_Element);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       if Length (Left) = 0 then
-          return True;
-       end if;
- 
-       declare
-          Node  : Count_Type;
-          ENode : Count_Type;
- 
-       begin
-          Node  := First (Left).Node;
-          while Node /= 0 loop
-             ENode :=
-               Find
-                 (Container => Right,
-                  Item      => Left.Content.Nodes (Node).Element).Node;
- 
-             if ENode = 0
-               or else Right.Content.Nodes (ENode).Element /=
-               Left.Content.Nodes (Node).Element
-             then
-                return False;
-             end if;
- 
-             Node := HT_Ops.Next (Left.Content, Node);
-          end loop;
- 
-          return True;
-       end;
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-       procedure Insert_Element (Source_Node : Count_Type);
- 
-       procedure Insert_Elements is
-         new HT_Ops.Generic_Iteration (Insert_Element);
- 
-       --------------------
-       -- Insert_Element --
-       --------------------
- 
-       procedure Insert_Element (Source_Node : Count_Type) is
-          N : Node_Type renames Source.Content.Nodes (Source_Node);
-          X : Count_Type;
-          B : Boolean;
- 
-       begin
-          Insert (Target, N.Element, X, B);
-          pragma Assert (B);
-       end Insert_Element;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Storage_Error with "not enough capacity";  -- SE or CE? ???
-       end if;
- 
-       HT_Ops.Clear (Target.Content);
-       Insert_Elements (Source.Content);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Set) return Count_Type is
-    begin
-       return Container.Content.Nodes'Length;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       HT_Ops.Clear (Container.Content);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return not null access constant Element_Type
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad cursor in function Element");
- 
-       return Container.Content.Nodes (Position.Node).Element'Access;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : Set;
-       Capacity : Count_Type := 0) return Set
-    is
-       C      : constant Count_Type :=
-                  Count_Type'Max (Capacity, Source.Capacity);
-       Cu     : Cursor;
-       H      : Hash_Type;
-       N      : Count_Type;
-       Target : Set (C, Source.Modulus);
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       Target.Content.Length := Source.Content.Length;
-       Target.Content.Free := Source.Content.Free;
- 
-       H := 1;
-       while H <= Source.Modulus loop
-          Target.Content.Buckets (H) := Source.Content.Buckets (H);
-          H := H + 1;
-       end loop;
- 
-       N := 1;
-       while N <= Source.Capacity loop
-          Target.Content.Nodes (N) := Source.Content.Nodes (N);
-          N := N + 1;
-       end loop;
- 
-       while N <= C loop
-          Cu := (Node => N);
-          Free (Target, Cu.Node);
-          N := N + 1;
-       end loop;
- 
-       return Target;
-    end Copy;
- 
-    ---------------------
-    -- Default_Modulus --
-    ---------------------
- 
-    function Default_Modulus (Capacity : Count_Type) return Hash_Type is
-    begin
-       return To_Prime (Capacity);
-    end Default_Modulus;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Item : Element_Type) is
-       X : Count_Type;
- 
-    begin
-       Element_Keys.Delete_Key_Sans_Free (Container.Content, Item, X);
- 
-       if X = 0 then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Free (Container, X);
-    end Delete;
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container, Position), "bad cursor in Delete");
- 
-       HT_Ops.Delete_Node_Sans_Free (Container.Content, Position.Node);
-       Free (Container, Position.Node);
- 
-       Position := No_Element;
-    end Delete;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-       Src_Last   : Count_Type;
-       Src_Length : Count_Type;
-       Src_Node   : Count_Type;
-       Tgt_Node   : Count_Type;
- 
-       TN : Nodes_Type renames Target.Content.Nodes;
-       SN : Nodes_Type renames Source.Content.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       Src_Length := Source.Content.Length;
- 
-       if Src_Length = 0 then
-          return;
-       end if;
- 
-       if Src_Length >= Target.Content.Length then
-          Tgt_Node := HT_Ops.First (Target.Content);
-          while Tgt_Node /= 0 loop
-             if Element_Keys.Find (Source.Content, TN (Tgt_Node).Element) /= 0
-             then
-                declare
-                   X : constant Count_Type := Tgt_Node;
-                begin
-                   Tgt_Node := HT_Ops.Next (Target.Content, Tgt_Node);
-                   HT_Ops.Delete_Node_Sans_Free (Target.Content, X);
-                   Free (Target, X);
-                end;
- 
-             else
-                Tgt_Node := HT_Ops.Next (Target.Content, Tgt_Node);
-             end if;
-          end loop;
- 
-          return;
-       else
-          Src_Node := HT_Ops.First (Source.Content);
-          Src_Last := 0;
-       end if;
- 
-       while Src_Node /= Src_Last loop
-          Tgt_Node := Element_Keys.Find (Target.Content, SN (Src_Node).Element);
- 
-          if Tgt_Node /= 0 then
-             HT_Ops.Delete_Node_Sans_Free (Target.Content, Tgt_Node);
-             Free (Target, Tgt_Node);
-          end if;
- 
-          Src_Node := HT_Ops.Next (Source.Content, Src_Node);
-       end loop;
-    end Difference;
- 
-    procedure Difference (Left : Set; Right : Set; Target : in out Set) is
-       procedure Process (L_Node : Count_Type);
- 
-       procedure Iterate is
-         new HT_Ops.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (L_Node : Count_Type) is
-          B : Boolean;
-          E : Element_Type renames Left.Content.Nodes (L_Node).Element;
-          X : Count_Type;
- 
-       begin
-          if Find (Right, E).Node = 0 then
-             Insert (Target, E, X, B);
-             pragma Assert (B);
-          end if;
-       end Process;
- 
-    --  Start of processing for Difference
- 
-    begin
-       Iterate (Left.Content);
-    end Difference;
- 
-    function Difference (Left : Set; Right : Set) return Set is
-       C : Count_Type;
-       H : Hash_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Length (Left) = 0 then
-          return Empty_Set;
-       end if;
- 
-       if Length (Right) = 0 then
-          return Copy (Left);
-       end if;
- 
-       C := Length (Left);
-       H := Default_Modulus (C);
- 
-       return S : Set (C, H) do
-          Difference (Left, Right, Target => S);
-       end return;
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Container : Set;
-       Position  : Cursor) return Element_Type
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad cursor in function Element");
- 
-       return Container.Content.Nodes (Position.Node).Element;
-    end Element;
- 
-    ---------------------
-    -- Equivalent_Sets --
-    ---------------------
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean is
- 
-       function Find_Equivalent_Key
-         (R_HT   : Hash_Table_Type'Class;
-          L_Node : Node_Type) return Boolean;
-       pragma Inline (Find_Equivalent_Key);
- 
-       function Is_Equivalent is
-         new HT_Ops.Generic_Equal (Find_Equivalent_Key);
- 
-       -------------------------
-       -- Find_Equivalent_Key --
-       -------------------------
- 
-       function Find_Equivalent_Key
-         (R_HT   : Hash_Table_Type'Class;
-          L_Node : Node_Type) return Boolean
-       is
-          R_Index : constant Hash_Type :=
-                      Element_Keys.Index (R_HT, L_Node.Element);
-          R_Node  : Count_Type := R_HT.Buckets (R_Index);
-          RN      : Nodes_Type renames R_HT.Nodes;
- 
-       begin
-          loop
-             if R_Node = 0 then
-                return False;
-             end if;
- 
-             if Equivalent_Elements
-                  (L_Node.Element, RN (R_Node).Element)
-             then
-                return True;
-             end if;
- 
-             R_Node := HT_Ops.Next (R_HT, R_Node);
-          end loop;
-       end Find_Equivalent_Key;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left.Content, Right.Content);
-    end Equivalent_Sets;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys
-      (Key  : Element_Type;
-       Node : Node_Type) return Boolean
-    is
-    begin
-       return Equivalent_Elements (Key, Node.Element);
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       X : Count_Type;
-    begin
-       Element_Keys.Delete_Key_Sans_Free (Container.Content, Item, X);
-       Free (Container, X);
-    end Exclude;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find
-      (Container : Set;
-       Item      : Element_Type) return Cursor
-    is
-       Node : constant Count_Type :=
-         Element_Keys.Find (Container.Content, Item);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-       Node : constant Count_Type := HT_Ops.First (Container.Content);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end First;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       -------------------------
-       -- E_Elements_Included --
-       -------------------------
- 
-       function E_Elements_Included
-         (Left  : E.Sequence;
-          Right : E.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. E.Length (Left) loop
-             if not E.Contains (Right, 1, E.Length (Right), E.Get (Left, I))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end E_Elements_Included;
- 
-       function E_Elements_Included
-         (Left  : E.Sequence;
-          Model : M.Set;
-          Right : E.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. E.Length (Left) loop
-             declare
-                Item : constant Element_Type := E.Get (Left, I);
-             begin
-                if M.Contains (Model, Item) then
-                   if not E.Contains (Right, 1, E.Length (Right), Item) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end E_Elements_Included;
- 
-       function E_Elements_Included
-         (Container : E.Sequence;
-          Model     : M.Set;
-          Left      : E.Sequence;
-          Right     : E.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. E.Length (Container) loop
-             declare
-                Item : constant Element_Type := E.Get (Container, I);
-             begin
-                if M.Contains (Model, Item) then
-                   if not E.Contains (Left, 1, E.Length (Left), Item) then
-                      return False;
-                   end if;
-                else
-                   if not E.Contains (Right, 1, E.Length (Right), Item) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end E_Elements_Included;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : E.Sequence;
-          Item      : Element_Type) return Count_Type
-       is
-       begin
-          for I in 1 .. E.Length (Container) loop
-             if Equivalent_Elements (Item, E.Get (Container, I)) then
-                return I;
-             end if;
-          end loop;
-          return 0;
-       end Find;
- 
-       --------------
-       -- Elements --
-       --------------
- 
-       function Elements (Container : Set) return E.Sequence is
-          Position : Count_Type := HT_Ops.First (Container.Content);
-          R        : E.Sequence;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := E.Add (R, Container.Content.Nodes (Position).Element);
-             Position := HT_Ops.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Elements;
- 
-       ----------------------------
-       -- Lift_Abstraction_Level --
-       ----------------------------
- 
-       procedure Lift_Abstraction_Level (Container : Set) is null;
- 
-       -----------------------
-       -- Mapping_Preserved --
-       -----------------------
- 
-       function Mapping_Preserved
-         (E_Left  : E.Sequence;
-          E_Right : E.Sequence;
-          P_Left  : P.Map;
-          P_Right : P.Map) return Boolean
-       is
-       begin
-          for C of P_Left loop
-             if not P.Has_Key (P_Right, C)
-               or else P.Get (P_Left,  C) > E.Length (E_Left)
-               or else P.Get (P_Right, C) > E.Length (E_Right)
-               or else E.Get (E_Left,  P.Get (P_Left,  C)) /=
-                       E.Get (E_Right, P.Get (P_Right, C))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Mapping_Preserved;
- 
-       ------------------------------
-       -- Mapping_Preserved_Except --
-       ------------------------------
- 
-       function Mapping_Preserved_Except
-         (E_Left   : E.Sequence;
-          E_Right  : E.Sequence;
-          P_Left   : P.Map;
-          P_Right  : P.Map;
-          Position : Cursor) return Boolean
-       is
-       begin
-          for C of P_Left loop
-             if C /= Position
-               and (not P.Has_Key (P_Right, C)
-                     or else P.Get (P_Left,  C) > E.Length (E_Left)
-                     or else P.Get (P_Right, C) > E.Length (E_Right)
-                     or else E.Get (E_Left,  P.Get (P_Left,  C)) /=
-                             E.Get (E_Right, P.Get (P_Right, C)))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Mapping_Preserved_Except;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : Set) return M.Set is
-          Position : Count_Type := HT_Ops.First (Container.Content);
-          R        : M.Set;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R :=
-               M.Add
-                 (Container => R,
-                  Item      => Container.Content.Nodes (Position).Element);
- 
-             Position := HT_Ops.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Model;
- 
-       ---------------
-       -- Positions --
-       ---------------
- 
-       function Positions (Container : Set) return P.Map is
-          I        : Count_Type := 1;
-          Position : Count_Type := HT_Ops.First (Container.Content);
-          R        : P.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := P.Add (R, (Node => Position), I);
-             pragma Assert (P.Length (R) = I);
-             Position := HT_Ops.Next (Container.Content, Position);
-             I := I + 1;
-          end loop;
- 
-          return R;
-       end Positions;
- 
-    end Formal_Model;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (HT : in out Set; X : Count_Type) is
-    begin
-       if X /= 0 then
-          pragma Assert (X <= HT.Capacity);
-          HT.Content.Nodes (X).Has_Element := False;
-          HT_Ops.Free (HT.Content, X);
-       end if;
-    end Free;
- 
-    ----------------------
-    -- Generic_Allocate --
-    ----------------------
- 
-    procedure Generic_Allocate (HT : in out Set; Node : out Count_Type) is
-       procedure Allocate is new HT_Ops.Generic_Allocate (Set_Element);
-    begin
-       Allocate (HT.Content, Node);
-       HT.Content.Nodes (Node).Has_Element := True;
-    end Generic_Allocate;
- 
-    package body Generic_Keys with SPARK_Mode => Off is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Equivalent_Key_Node
-         (Key  : Key_Type;
-          Node : Node_Type) return Boolean;
-       pragma Inline (Equivalent_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is new Hash_Tables.Generic_Bounded_Keys
-         (HT_Types        => HT_Types,
-          Next            => Next,
-          Set_Next        => Set_Next,
-          Key_Type        => Key_Type,
-          Hash            => Hash,
-          Equivalent_Keys => Equivalent_Key_Node);
- 
-       --------------
-       -- Contains --
-       --------------
- 
-       function Contains
-         (Container : Set;
-          Key       : Key_Type) return Boolean
-       is
-       begin
-          return Find (Container, Key) /= No_Element;
-       end Contains;
- 
-       ------------
-       -- Delete --
-       ------------
- 
-       procedure Delete (Container : in out Set; Key : Key_Type) is
-          X : Count_Type;
- 
-       begin
-          Key_Keys.Delete_Key_Sans_Free (Container.Content, Key, X);
- 
-          if X = 0 then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Free (Container, X);
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element
-         (Container : Set;
-          Key       : Key_Type) return Element_Type
-       is
-          Node : constant Count_Type := Find (Container, Key).Node;
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with "key not in map";
-          end if;
- 
-          return Container.Content.Nodes (Node).Element;
-       end Element;
- 
-       -------------------------
-       -- Equivalent_Key_Node --
-       -------------------------
- 
-       function Equivalent_Key_Node
-         (Key  : Key_Type;
-          Node : Node_Type) return Boolean
-       is
-       begin
-          return Equivalent_Keys (Key, Generic_Keys.Key (Node.Element));
-       end Equivalent_Key_Node;
- 
-       -------------
-       -- Exclude --
-       -------------
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type) is
-          X : Count_Type;
-       begin
-          Key_Keys.Delete_Key_Sans_Free (Container.Content, Key, X);
-          Free (Container, X);
-       end Exclude;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : Set;
-          Key       : Key_Type) return Cursor
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container.Content, Key);
-       begin
-          return (if Node = 0 then No_Element else (Node => Node));
-       end Find;
- 
-       ------------------
-       -- Formal_Model --
-       ------------------
- 
-       package body Formal_Model is
- 
-          -----------------------
-          -- M_Included_Except --
-          -----------------------
- 
-          function M_Included_Except
-            (Left  : M.Set;
-             Right : M.Set;
-             Key   : Key_Type) return Boolean
-          is
-          begin
-             for E of Left loop
-                if not Contains (Right, E)
-                  and not Equivalent_Keys (Generic_Keys.Key (E), Key)
-                then
-                   return False;
-                end if;
-             end loop;
- 
-             return True;
-          end M_Included_Except;
- 
-       end Formal_Model;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Container : Set; Position : Cursor) return Key_Type is
-       begin
-          if not Has_Element (Container, Position) then
-             raise Constraint_Error with "Position cursor has no element";
-          end if;
- 
-          pragma Assert
-            (Vet (Container, Position), "bad cursor in function Key");
- 
-          declare
-             N : Node_Type renames Container.Content.Nodes (Position.Node);
-          begin
-             return Key (N.Element);
-          end;
-       end Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container.Content, Key);
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with "attempt to replace key not in set";
-          end if;
- 
-          Replace_Element (Container.Content, Node, New_Item);
-       end Replace;
- 
-    end Generic_Keys;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Container : Set; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0
-         or else not Container.Content.Nodes (Position.Node).Has_Element
-       then
-          return False;
-       end if;
- 
-       return True;
-    end Has_Element;
- 
-    ---------------
-    -- Hash_Node --
-    ---------------
- 
-    function Hash_Node (Node : Node_Type) return Hash_Type is
-    begin
-       return Hash (Node.Element);
-    end Hash_Node;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include (Container : in out Set; New_Item : Element_Type) is
-       Inserted : Boolean;
-       Position : Cursor;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          Container.Content.Nodes (Position.Node).Element := New_Item;
-       end if;
-    end Include;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-    begin
-       Insert (Container, New_Item, Position.Node, Inserted);
-    end Insert;
- 
-    procedure Insert (Container : in out Set; New_Item : Element_Type) is
-       Inserted : Boolean;
-       Position : Cursor;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          raise Constraint_Error with
-            "attempt to insert element already in set";
-       end if;
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean)
-    is
-       procedure Allocate_Set_Element (Node : in out Node_Type);
-       pragma Inline (Allocate_Set_Element);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert is
-         new Element_Keys.Generic_Conditional_Insert (New_Node);
- 
-       procedure Allocate is
-         new Generic_Allocate (Allocate_Set_Element);
- 
-       ---------------------------
-       --  Allocate_Set_Element --
-       ---------------------------
- 
-       procedure Allocate_Set_Element (Node : in out Node_Type) is
-       begin
-          Node.Element := New_Item;
-       end Allocate_Set_Element;
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Count_Type is
-          Result : Count_Type;
-       begin
-          Allocate (Container, Result);
-          return Result;
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Local_Insert (Container.Content, New_Item, Node, Inserted);
-    end Insert;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection (Target : in out Set; Source : Set) is
-       Tgt_Node : Count_Type;
-       TN       : Nodes_Type renames Target.Content.Nodes;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Source.Content.Length = 0 then
-          Clear (Target);
-          return;
-       end if;
- 
-       Tgt_Node := HT_Ops.First (Target.Content);
-       while Tgt_Node /= 0 loop
-          if Find (Source, TN (Tgt_Node).Element).Node /= 0 then
-             Tgt_Node := HT_Ops.Next (Target.Content, Tgt_Node);
- 
-          else
-             declare
-                X : constant Count_Type := Tgt_Node;
-             begin
-                Tgt_Node := HT_Ops.Next (Target.Content, Tgt_Node);
-                HT_Ops.Delete_Node_Sans_Free (Target.Content, X);
-                Free (Target, X);
-             end;
-          end if;
-       end loop;
-    end Intersection;
- 
-    procedure Intersection (Left : Set; Right : Set; Target : in out Set) is
-       procedure Process (L_Node : Count_Type);
- 
-       procedure Iterate is
-         new HT_Ops.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (L_Node : Count_Type) is
-          E : Element_Type renames Left.Content.Nodes (L_Node).Element;
-          X : Count_Type;
-          B : Boolean;
- 
-       begin
-          if Find (Right, E).Node /= 0 then
-             Insert (Target, E, X, B);
-             pragma Assert (B);
-          end if;
-       end Process;
- 
-    --  Start of processing for Intersection
- 
-    begin
-       Iterate (Left.Content);
-    end Intersection;
- 
-    function Intersection (Left : Set; Right : Set) return Set is
-       C : Count_Type;
-       H : Hash_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       C := Count_Type'Min (Length (Left), Length (Right));  -- ???
-       H := Default_Modulus (C);
- 
-       return S : Set (C, H) do
-          if Length (Left) /= 0 and Length (Right) /= 0 then
-             Intersection (Left, Right, Target => S);
-          end if;
-       end return;
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Length (Container) = 0;
-    end Is_Empty;
- 
-    -----------
-    -- Is_In --
-    -----------
- 
-    function Is_In (HT : Set; Key : Node_Type) return Boolean is
-    begin
-       return Element_Keys.Find (HT.Content, Key.Element) /= 0;
-    end Is_In;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean is
-       Subset_Node  : Count_Type;
-       Subset_Nodes : Nodes_Type renames Subset.Content.Nodes;
- 
-    begin
-       if Subset'Address = Of_Set'Address then
-          return True;
-       end if;
- 
-       if Length (Subset) > Length (Of_Set) then
-          return False;
-       end if;
- 
-       Subset_Node := First (Subset).Node;
-       while Subset_Node /= 0 loop
-          declare
-             N : Node_Type renames Subset_Nodes (Subset_Node);
-             E : Element_Type renames N.Element;
- 
-          begin
-             if Find (Of_Set, E).Node = 0 then
-                return False;
-             end if;
-          end;
- 
-          Subset_Node := HT_Ops.Next (Subset.Content, Subset_Node);
-       end loop;
- 
-       return True;
-    end Is_Subset;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Content.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    --  Comments???
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-       NN   : HT_Types.Nodes_Type renames Source.Content.Nodes;
-       X, Y : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Constraint_Error with  -- ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       if Source.Content.Length = 0 then
-          return;
-       end if;
- 
-       X := HT_Ops.First (Source.Content);
-       while X /= 0 loop
-          Insert (Target, NN (X).Element);  -- optimize???
- 
-          Y := HT_Ops.Next (Source.Content, X);
- 
-          HT_Ops.Delete_Node_Sans_Free (Source.Content, X);
-          Free (Source, X);
- 
-          X := Y;
-       end loop;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Next;
-    end Next;
- 
-    function Next (Container : Set; Position : Cursor) return Cursor is
-    begin
-       if Position.Node = 0 then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position has no element";
-       end if;
- 
-       pragma Assert (Vet (Container, Position), "bad cursor in Next");
- 
-       return (Node => HT_Ops.Next (Container.Content, Position.Node));
-    end Next;
- 
-    procedure Next (Container : Set; Position : in out Cursor) is
-    begin
-       Position := Next (Container, Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-       Left_Node  : Count_Type;
-       Left_Nodes : Nodes_Type renames Left.Content.Nodes;
- 
-    begin
-       if Length (Right) = 0 or Length (Left) = 0 then
-          return False;
-       end if;
- 
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       Left_Node := First (Left).Node;
-       while Left_Node /= 0 loop
-          declare
-             N : Node_Type renames Left_Nodes (Left_Node);
-             E : Element_Type renames N.Element;
-          begin
-             if Find (Right, E).Node /= 0 then
-                return True;
-             end if;
-          end;
- 
-          Left_Node := HT_Ops.Next (Left.Content, Left_Node);
-       end loop;
- 
-       return False;
-    end Overlap;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace (Container : in out Set; New_Item : Element_Type) is
-       Node : constant Count_Type :=
-         Element_Keys.Find (Container.Content, New_Item);
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with "attempt to replace element not in set";
-       end if;
- 
-       Container.Content.Nodes (Node).Element := New_Item;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor equals No_Element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container, Position), "bad cursor in Replace_Element");
- 
-       Replace_Element (Container.Content, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Set;
-       Capacity  : Count_Type)
-    is
-    begin
-       if Capacity > Container.Capacity then
-          raise Constraint_Error with "requested capacity is too large";
-       end if;
-    end Reserve_Capacity;
- 
-    ------------------
-    --  Set_Element --
-    ------------------
- 
-    procedure Set_Element (Node : in out Node_Type; Item : Element_Type) is
-    begin
-       Node.Element := Item;
-    end Set_Element;
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (Node : in out Node_Type; Next : Count_Type) is
-    begin
-       Node.Next := Next;
-    end Set_Next;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-       procedure Process (Source_Node : Count_Type);
-       pragma Inline (Process);
- 
-       procedure Iterate is new HT_Ops.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Source_Node : Count_Type) is
-          B : Boolean;
-          N : Node_Type renames Source.Content.Nodes (Source_Node);
-          X : Count_Type;
- 
-       begin
-          if Is_In (Target, N) then
-             Delete (Target, N.Element);
-          else
-             Insert (Target, N.Element, X, B);
-             pragma Assert (B);
-          end if;
-       end Process;
- 
-    --  Start of processing for Symmetric_Difference
- 
-    begin
-       if Target'Address = Source'Address then
-          Clear (Target);
-          return;
-       end if;
- 
-       if Length (Target) = 0 then
-          Assign (Target, Source);
-          return;
-       end if;
- 
-       Iterate (Source.Content);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left : Set; Right : Set) return Set is
-       C : Count_Type;
-       H : Hash_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Length (Right) = 0 then
-          return Copy (Left);
-       end if;
- 
-       if Length (Left) = 0 then
-          return Copy (Right);
-       end if;
- 
-       C := Length (Left) + Length (Right);
-       H := Default_Modulus (C);
- 
-       return S : Set (C, H) do
-          Difference (Left, Right, S);
-          Difference (Right, Left, S);
-       end return;
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       X : Count_Type;
-       B : Boolean;
- 
-    begin
-       return S : Set (Capacity => 1, Modulus => 1) do
-          Insert (S, New_Item, X, B);
-          pragma Assert (B);
-       end return;
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set) is
-       procedure Process (Src_Node : Count_Type);
- 
-       procedure Iterate is
-         new HT_Ops.Generic_Iteration (Process);
- 
-       -------------
-       -- Process --
-       -------------
- 
-       procedure Process (Src_Node : Count_Type) is
-          N : Node_Type renames Source.Content.Nodes (Src_Node);
-          E : Element_Type renames N.Element;
- 
-          X : Count_Type;
-          B : Boolean;
- 
-       begin
-          Insert (Target, E, X, B);
-       end Process;
- 
-    --  Start of processing for Union
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       Iterate (Source.Content);
-    end Union;
- 
-    function Union (Left : Set; Right : Set) return Set is
-       C : Count_Type;
-       H : Hash_Type;
- 
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       if Length (Right) = 0 then
-          return Copy (Left);
-       end if;
- 
-       if Length (Left) = 0 then
-          return Copy (Right);
-       end if;
- 
-       C := Length (Left) + Length (Right);
-       H := Default_Modulus (C);
-       return S : Set (C, H) do
-          Assign (Target => S, Source => Left);
-          Union (Target => S, Source => Right);
-       end return;
-    end Union;
- 
-    ---------
-    -- Vet --
-    ---------
- 
-    function Vet (Container : Set; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return True;
-       end if;
- 
-       declare
-          S : Set renames Container;
-          N : Nodes_Type renames S.Content.Nodes;
-          X : Count_Type;
- 
-       begin
-          if S.Content.Length = 0 then
-             return False;
-          end if;
- 
-          if Position.Node > N'Last then
-             return False;
-          end if;
- 
-          if N (Position.Node).Next = Position.Node then
-             return False;
-          end if;
- 
-          X := S.Content.Buckets
-            (Element_Keys.Index (S.Content, N (Position.Node).Element));
- 
-          for J in 1 .. S.Content.Length loop
-             if X = Position.Node then
-                return True;
-             end if;
- 
-             if X = 0 then
-                return False;
-             end if;
- 
-             if X = N (X).Next then  --  to prevent unnecessary looping
-                return False;
-             end if;
- 
-             X := N (X).Next;
-          end loop;
- 
-          return False;
-       end;
-    end Vet;
- 
- end Ada.Containers.Formal_Hashed_Sets;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfhase.ads gcc-13.1.0/gcc/ada/libgnat/a-cfhase.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cfhase.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfhase.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
***************
*** 29,1492 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- --  This spec is derived from package Ada.Containers.Bounded_Hashed_Sets in the
- --  Ada 2012 RM. The modifications are meant to facilitate formal proofs by
- --  making it easier to express properties, and by making the specification of
- --  this unit compatible with SPARK 2014. Note that the API of this unit may be
- --  subject to incompatible changes as SPARK 2014 evolves.
- 
- --  The modifications are:
- 
- --    A parameter for the container is added to every function reading the
- --    content of a container: Element, Next, Query_Element, Has_Element, Key,
- --    Iterate, Equivalent_Elements. This change is motivated by the need to
- --    have cursors which are valid on different containers (typically a
- --    container C and its previous version C'Old) for expressing properties,
- --    which is not possible if cursors encapsulate an access to the underlying
- --    container.
- 
- with Ada.Containers.Functional_Maps;
- with Ada.Containers.Functional_Sets;
- with Ada.Containers.Functional_Vectors;
- private with Ada.Containers.Hash_Tables;
- 
  generic
!    type Element_Type is private;
! 
!    with function Hash (Element : Element_Type) return Hash_Type;
! 
!    with function Equivalent_Elements
!      (Left  : Element_Type;
!       Right : Element_Type) return Boolean is "=";
! 
! package Ada.Containers.Formal_Hashed_Sets with
!   SPARK_Mode
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    type Set (Capacity : Count_Type; Modulus : Hash_Type) is private with
!      Iterable => (First       => First,
!                   Next        => Next,
!                   Has_Element => Has_Element,
!                   Element     => Element),
!      Default_Initial_Condition => Is_Empty (Set);
!    pragma Preelaborable_Initialization (Set);
! 
!    type Cursor is record
!       Node : Count_Type;
!    end record;
! 
!    No_Element : constant Cursor := (Node => 0);
! 
!    function Length (Container : Set) return Count_Type with
!      Global => null,
!      Post   => Length'Result <= Container.Capacity;
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
!       subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!       package M is new Ada.Containers.Functional_Sets
!         (Element_Type    => Element_Type,
!          Equivalent_Elements => Equivalent_Elements);
! 
!       function "="
!         (Left  : M.Set;
!          Right : M.Set) return Boolean renames M."=";
! 
!       function "<="
!         (Left  : M.Set;
!          Right : M.Set) return Boolean renames M."<=";
! 
!       package E is new Ada.Containers.Functional_Vectors
!         (Element_Type => Element_Type,
!          Index_Type   => Positive_Count_Type);
! 
!       function "="
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean renames E."=";
! 
!       function "<"
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean renames E."<";
! 
!       function "<="
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean renames E."<=";
! 
!       function Find
!         (Container : E.Sequence;
!          Item      : Element_Type) return Count_Type
!       --  Search for Item in Container
! 
!       with
!         Global => null,
!         Post =>
!           (if Find'Result > 0 then
!               Find'Result <= E.Length (Container)
!                 and Equivalent_Elements
!                       (Item, E.Get (Container, Find'Result)));
! 
!       function E_Elements_Included
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean
!       --  The elements of Left are contained in Right
! 
!       with
!         Global => null,
!         Post   =>
!           E_Elements_Included'Result =
!             (for all I in 1 .. E.Length (Left) =>
!               Find (Right, E.Get (Left, I)) > 0
!                 and then E.Get (Right, Find (Right, E.Get (Left, I))) =
!                          E.Get (Left, I));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Elements_Included);
! 
!       function E_Elements_Included
!         (Left  : E.Sequence;
!          Model : M.Set;
!          Right : E.Sequence) return Boolean
!       --  The elements of Container contained in Model are in Right
! 
!       with
!         Global => null,
!         Post   =>
!           E_Elements_Included'Result =
!             (for all I in 1 .. E.Length (Left) =>
!               (if M.Contains (Model, E.Get (Left, I)) then
!                   Find (Right, E.Get (Left, I)) > 0
!                     and then E.Get (Right, Find (Right, E.Get (Left, I))) =
!                              E.Get (Left, I)));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Elements_Included);
! 
!       function E_Elements_Included
!         (Container : E.Sequence;
!          Model     : M.Set;
!          Left      : E.Sequence;
!          Right     : E.Sequence) return Boolean
!       --  The elements of Container contained in Model are in Left and others
!       --  are in Right.
! 
!       with
!         Global => null,
!         Post   =>
!           E_Elements_Included'Result =
!             (for all I in 1 .. E.Length (Container) =>
!               (if M.Contains (Model, E.Get (Container, I)) then
!                   Find (Left, E.Get (Container, I)) > 0
!                     and then E.Get (Left, Find (Left, E.Get (Container, I))) =
!                              E.Get (Container, I)
!                else
!                   Find (Right, E.Get (Container, I)) > 0
!                     and then E.Get
!                                (Right, Find (Right, E.Get (Container, I))) =
!                              E.Get (Container, I)));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Elements_Included);
! 
!       package P is new Ada.Containers.Functional_Maps
!         (Key_Type                       => Cursor,
!          Element_Type                   => Positive_Count_Type,
!          Equivalent_Keys                => "=",
!          Enable_Handling_Of_Equivalence => False);
! 
!       function "="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."=";
! 
!       function "<="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."<=";
! 
!       function Mapping_Preserved
!         (E_Left  : E.Sequence;
!          E_Right : E.Sequence;
!          P_Left  : P.Map;
!          P_Right : P.Map) return Boolean
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           (if Mapping_Preserved'Result then
! 
!              --  Right contains all the cursors of Left
! 
!              P.Keys_Included (P_Left, P_Right)
! 
!                --  Right contains all the elements of Left
! 
!                and E_Elements_Included (E_Left, E_Right)
! 
!                --  Mappings from cursors to elements induced by E_Left, P_Left
!                --  and E_Right, P_Right are the same.
! 
!                and (for all C of P_Left =>
!                      E.Get (E_Left, P.Get (P_Left, C)) =
!                      E.Get (E_Right, P.Get (P_Right, C))));
! 
!       function Mapping_Preserved_Except
!         (E_Left   : E.Sequence;
!          E_Right  : E.Sequence;
!          P_Left   : P.Map;
!          P_Right  : P.Map;
!          Position : Cursor) return Boolean
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           (if Mapping_Preserved_Except'Result then
! 
!              --  Right contains all the cursors of Left
! 
!              P.Keys_Included (P_Left, P_Right)
! 
!                --  Mappings from cursors to elements induced by E_Left, P_Left
!                --  and E_Right, P_Right are the same except for Position.
! 
!                and (for all C of P_Left =>
!                      (if C /= Position then
!                          E.Get (E_Left, P.Get (P_Left, C)) =
!                          E.Get (E_Right, P.Get (P_Right, C)))));
! 
!       function Model (Container : Set) return M.Set with
!       --  The high-level model of a set is a set of elements. Neither cursors
!       --  nor order of elements are represented in this model. Elements are
!       --  modeled up to equivalence.
! 
!         Ghost,
!         Global => null,
!         Post   => M.Length (Model'Result) = Length (Container);
! 
!       function Elements (Container : Set) return E.Sequence with
!       --  The Elements sequence represents the underlying list structure of
!       --  sets that is used for iteration. It stores the actual values of
!       --  elements in the set. It does not model cursors.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           E.Length (Elements'Result) = Length (Container)
! 
!             --  It only contains keys contained in Model
! 
!             and (for all Item of Elements'Result =>
!                   M.Contains (Model (Container), Item))
! 
!             --  It contains all the elements contained in Model
! 
!             and (for all Item of Model (Container) =>
!                   (Find (Elements'Result, Item) > 0
!                     and then Equivalent_Elements
!                                (E.Get (Elements'Result,
!                                        Find (Elements'Result, Item)),
!                                 Item)))
! 
!             --  It has no duplicate
! 
!             and (for all I in 1 .. Length (Container) =>
!                   Find (Elements'Result, E.Get (Elements'Result, I)) = I)
! 
!             and (for all I in 1 .. Length (Container) =>
!                   (for all J in 1 .. Length (Container) =>
!                     (if Equivalent_Elements
!                           (E.Get (Elements'Result, I),
!                            E.Get (Elements'Result, J))
!                      then I = J)));
!       pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Elements);
! 
!       function Positions (Container : Set) return P.Map with
!       --  The Positions map is used to model cursors. It only contains valid
!       --  cursors and maps them to their position in the container.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           not P.Has_Key (Positions'Result, No_Element)
! 
!             --  Positions of cursors are smaller than the container's length
! 
!             and then
!               (for all I of Positions'Result =>
!                 P.Get (Positions'Result, I) in 1 .. Length (Container)
! 
!             --  No two cursors have the same position. Note that we do not
!             --  state that there is a cursor in the map for each position, as
!             --  it is rarely needed.
! 
!             and then
!               (for all J of Positions'Result =>
!                 (if P.Get (Positions'Result, I) = P.Get (Positions'Result, J)
!                  then I = J)));
! 
!       procedure Lift_Abstraction_Level (Container : Set) with
!         --  Lift_Abstraction_Level is a ghost procedure that does nothing but
!         --  assume that we can access the same elements by iterating over
!         --  positions or cursors.
!         --  This information is not generally useful except when switching from
!         --  a low-level, cursor-aware view of a container, to a high-level,
!         --  position-based view.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           (for all Item of Elements (Container) =>
!             (for some I of Positions (Container) =>
!               E.Get (Elements (Container), P.Get (Positions (Container), I)) =
!                 Item));
! 
!       function Contains
!         (C : M.Set;
!          K : Element_Type) return Boolean renames M.Contains;
!       --  To improve readability of contracts, we rename the function used to
!       --  search for an element in the model to Contains.
! 
!    end Formal_Model;
!    use Formal_Model;
! 
!    Empty_Set : constant Set;
! 
!    function "=" (Left, Right : Set) return Boolean with
!      Global => null,
!      Post   =>
!          "="'Result =
!            (Length (Left) = Length (Right)
!              and E_Elements_Included (Elements (Left), Elements (Right)))
!        and
!          "="'Result =
!            (E_Elements_Included (Elements (Left), Elements (Right))
!              and E_Elements_Included (Elements (Right), Elements (Left)));
!    --  For each element in Left, set equality attempts to find the equal
!    --  element in Right; if a search fails, then set equality immediately
!    --  returns False. The search works by calling Hash to find the bucket in
!    --  the Right set that corresponds to the Left element. If the bucket is
!    --  non-empty, the search calls the generic formal element equality operator
!    --  to compare the element (in Left) to the element of each node in the
!    --  bucket (in Right); the search terminates when a matching node in the
!    --  bucket is found, or the nodes in the bucket are exhausted. (Note that
!    --  element equality is called here, not Equivalent_Elements. Set equality
!    --  is the only operation in which element equality is used. Compare set
!    --  equality to Equivalent_Sets, which does call Equivalent_Elements.)
! 
!    function Equivalent_Sets (Left, Right : Set) return Boolean with
!      Global => null,
!      Post   => Equivalent_Sets'Result = (Model (Left) = Model (Right));
!    --  Similar to set equality, with the difference that the element in Left is
!    --  compared to the elements in Right using the generic formal
!    --  Equivalent_Elements operation instead of element equality.
! 
!    function To_Set (New_Item : Element_Type) return Set with
!      Global => null,
!      Post   =>
!        M.Is_Singleton (Model (To_Set'Result), New_Item)
!          and Length (To_Set'Result) = 1
!          and E.Get (Elements (To_Set'Result), 1) = New_Item;
!    --  Constructs a singleton set comprising New_Element. To_Set calls Hash to
!    --  determine the bucket for New_Item.
! 
!    function Capacity (Container : Set) return Count_Type with
!      Global => null,
!      Post   => Capacity'Result = Container.Capacity;
!    --  Returns the current capacity of the set. Capacity is the maximum length
!    --  before which rehashing in guaranteed not to occur.
! 
!    procedure Reserve_Capacity
!      (Container : in out Set;
!       Capacity  : Count_Type)
!    with
!      Global => null,
!      Pre    => Capacity <= Container.Capacity,
!      Post   =>
!        Model (Container) = Model (Container)'Old
!          and Length (Container)'Old = Length (Container)
! 
!          --  Actual elements are preserved
! 
!          and E_Elements_Included
!               (Elements (Container), Elements (Container)'Old)
!          and E_Elements_Included
!               (Elements (Container)'Old, Elements (Container));
!    --  If the value of the Capacity actual parameter is less or equal to
!    --  Container.Capacity, then the operation has no effect.  Otherwise it
!    --  raises Capacity_Error (as no expansion of capacity is possible for a
!    --  bounded form).
! 
!    function Is_Empty (Container : Set) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
!    --  Equivalent to Length (Container) = 0
! 
!    procedure Clear (Container : in out Set) with
!      Global => null,
!      Post   => Length (Container) = 0 and M.Is_Empty (Model (Container));
!    --  Removes all of the items from the set. This will deallocate all memory
!    --  associated with this set.
! 
!    procedure Assign (Target : in out Set; Source : Set) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)
!          and Length (Target) = Length (Source)
! 
!          --  Actual elements are preserved
! 
!          and E_Elements_Included (Elements (Target), Elements (Source))
!          and E_Elements_Included (Elements (Source), Elements (Target));
!    --  If Target denotes the same object as Source, then the operation has no
!    --  effect. If the Target capacity is less than the Source length, then
!    --  Assign raises Capacity_Error.  Otherwise, Assign clears Target and then
!    --  copies the (active) elements from Source to Target.
! 
!    function Copy
!      (Source   : Set;
!       Capacity : Count_Type := 0) return Set
!    with
!      Global => null,
!      Pre    => Capacity = 0 or else Capacity >= Source.Capacity,
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and Elements (Copy'Result) = Elements (Source)
!          and Positions (Copy'Result) = Positions (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Source.Capacity
!               else
!                  Copy'Result.Capacity = Capacity);
!    --  Constructs a new set object whose elements correspond to Source.  If the
!    --  Capacity parameter is 0, then the capacity of the result is the same as
!    --  the length of Source. If the Capacity parameter is equal or greater than
!    --  the length of Source, then the capacity of the result is the specified
!    --  value. Otherwise, Copy raises Capacity_Error. If the Modulus parameter
!    --  is 0, then the modulus of the result is the value returned by a call to
!    --  Default_Modulus with the capacity parameter determined as above;
!    --  otherwise the modulus of the result is the specified value.
! 
!    function Element
!      (Container : Set;
!       Position  : Cursor) return Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Element'Result =
!          E.Get (Elements (Container), P.Get (Positions (Container), Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out Set;
!       Position  : Cursor;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Length (Container) = Length (Container)'Old
! 
!           --  Position now maps to New_Item
! 
!           and Element (Container, Position) = New_Item
! 
!           --  New_Item is contained in Container
! 
!           and Contains (Model (Container), New_Item)
! 
!           --  Other elements are preserved
! 
!           and M.Included_Except
!                 (Model (Container)'Old,
!                  Model (Container),
!                  Element (Container, Position)'Old)
!           and M.Included_Except
!                 (Model (Container),
!                  Model (Container)'Old,
!                  New_Item)
! 
!           --  Mapping from cursors to elements is preserved
! 
!           and Mapping_Preserved_Except
!                 (E_Left   => Elements (Container)'Old,
!                  E_Right  => Elements (Container),
!                  P_Left   => Positions (Container)'Old,
!                  P_Right  => Positions (Container),
!                  Position => Position)
!           and Positions (Container) = Positions (Container)'Old;
! 
!    function Constant_Reference
!      (Container : aliased Set;
!       Position  : Cursor) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Constant_Reference'Result.all =
!          E.Get (Elements (Container), P.Get (Positions (Container), Position));
! 
!    procedure Move (Target : in out Set; Source : in out Set) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Length (Source) = 0
!          and Model (Target) = Model (Source)'Old
!          and Length (Target) = Length (Source)'Old
! 
!          --  Actual elements are preserved
! 
!          and E_Elements_Included (Elements (Target), Elements (Source)'Old)
!          and E_Elements_Included (Elements (Source)'Old, Elements (Target));
!    --  Clears Target (if it's not empty), and then moves (not copies) the
!    --  buckets array and nodes from Source to Target.
! 
!    procedure Insert
!      (Container : in out Set;
!       New_Item  : Element_Type;
!       Position  : out Cursor;
!       Inserted  : out Boolean)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity
!          or Contains (Container, New_Item),
!      Post           =>
!        Contains (Container, New_Item)
!          and Has_Element (Container, Position)
!          and Equivalent_Elements (Element (Container, Position), New_Item),
!      Contract_Cases =>
! 
!        --  If New_Item is already in Container, it is not modified and Inserted
!        --  is set to False.
! 
!        (Contains (Container, New_Item) =>
!           not Inserted
!             and Model (Container) = Model (Container)'Old
!             and Elements (Container) = Elements (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, New_Item is inserted in Container and Inserted is set to
!         --  True.
! 
!         others =>
!           Inserted
!             and Length (Container) = Length (Container)'Old + 1
! 
!             --  Position now maps to New_Item
! 
!             and Element (Container, Position) = New_Item
! 
!             --  Other elements are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    New_Item)
! 
!             --  Mapping from cursors to elements is preserved
! 
!             and Mapping_Preserved
!                   (E_Left  => Elements (Container)'Old,
!                    E_Right => Elements (Container),
!                    P_Left  => Positions (Container)'Old,
!                    P_Right => Positions (Container))
!             and P.Keys_Included_Except
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Position));
!    --  Conditionally inserts New_Item into the set. If New_Item is already in
!    --  the set, then Inserted returns False and Position designates the node
!    --  containing the existing element (which is not modified). If New_Item is
!    --  not already in the set, then Inserted returns True and Position
!    --  designates the newly-inserted node containing New_Item. The search for
!    --  an existing element works as follows. Hash is called to determine
!    --  New_Item's bucket; if the bucket is non-empty, then Equivalent_Elements
!    --  is called to compare New_Item to the element of each node in that
!    --  bucket. If the bucket is empty, or there were no equivalent elements in
!    --  the bucket, the search "fails" and the New_Item is inserted in the set
!    --  (and Inserted returns True); otherwise, the search "succeeds" (and
!    --  Inserted returns False).
! 
!    procedure Insert  (Container : in out Set; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Container.Capacity
!                  and then (not Contains (Container, New_Item)),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
!          and Contains (Container, New_Item)
!          and Element (Container, Find (Container, New_Item)) = New_Item
! 
!          --  Other elements are preserved
! 
!          and Model (Container)'Old <= Model (Container)
!          and M.Included_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 New_Item)
! 
!          --  Mapping from cursors to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Container)'Old,
!                 E_Right => Elements (Container),
!                 P_Left  => Positions (Container)'Old,
!                 P_Right => Positions (Container))
!          and P.Keys_Included_Except
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Find (Container, New_Item));
!    --  Attempts to insert New_Item into the set, performing the usual insertion
!    --  search (which involves calling both Hash and Equivalent_Elements); if
!    --  the search succeeds (New_Item is equivalent to an element already in the
!    --  set, and so was not inserted), then this operation raises
!    --  Constraint_Error. (This version of Insert is similar to Replace, but
!    --  having the opposite exception behavior. It is intended for use when you
!    --  want to assert that the item is not already in the set.)
! 
!    procedure Include (Container : in out Set; New_Item : Element_Type) with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity
!          or Contains (Container, New_Item),
!      Post           =>
!        Contains (Container, New_Item)
!          and Element (Container, Find (Container, New_Item)) = New_Item,
!      Contract_Cases =>
! 
!        --  If an element equivalent to New_Item is already in Container, it is
!        --  replaced by New_Item.
! 
!        (Contains (Container, New_Item) =>
! 
!           --  Elements are preserved modulo equivalence
! 
!           Model (Container) = Model (Container)'Old
! 
!             --  Cursors are preserved
! 
!             and Positions (Container) = Positions (Container)'Old
! 
!             --  The actual value of other elements is preserved
! 
!             and E.Equal_Except
!                   (Elements (Container)'Old,
!                    Elements (Container),
!                    P.Get (Positions (Container), Find (Container, New_Item))),
! 
!         --  Otherwise, New_Item is inserted in Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old + 1
! 
!             --  Other elements are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    New_Item)
! 
!             --  Mapping from cursors to elements is preserved
! 
!             and Mapping_Preserved
!                   (E_Left  => Elements (Container)'Old,
!                    E_Right => Elements (Container),
!                    P_Left  => Positions (Container)'Old,
!                    P_Right => Positions (Container))
!             and P.Keys_Included_Except
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Find (Container, New_Item)));
!    --  Attempts to insert New_Item into the set. If an element equivalent to
!    --  New_Item is already in the set (the insertion search succeeded, and
!    --  hence New_Item was not inserted), then the value of New_Item is assigned
!    --  to the existing element. (This insertion operation only raises an
!    --  exception if cursor tampering occurs. It is intended for use when you
!    --  want to insert the item in the set, and you don't care whether an
!    --  equivalent element is already present.)
! 
!    procedure Replace (Container : in out Set; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Contains (Container, New_Item),
!      Post   =>
! 
!        --  Elements are preserved modulo equivalence
! 
!        Model (Container) = Model (Container)'Old
!          and Contains (Container, New_Item)
! 
!          --  Cursors are preserved
! 
!          and Positions (Container) = Positions (Container)'Old
! 
!          --  The element equivalent to New_Item in Container is replaced by
!          --  New_Item.
! 
!          and Element (Container, Find (Container, New_Item)) = New_Item
!          and E.Equal_Except
!                (Elements (Container)'Old,
!                 Elements (Container),
!                 P.Get (Positions (Container), Find (Container, New_Item)));
!    --  Searches for New_Item in the set; if the search fails (because an
!    --  equivalent element was not in the set), then it raises
!    --  Constraint_Error. Otherwise, the existing element is assigned the value
!    --  New_Item. (This is similar to Insert, but with the opposite exception
!    --  behavior. It is intended for use when you want to assert that the item
!    --  is already in the set.)
! 
!    procedure Exclude (Container : in out Set; Item : Element_Type) with
!      Global         => null,
!      Post           => not Contains (Container, Item),
!      Contract_Cases =>
! 
!        --  If Item is not in Container, nothing is changed
! 
!        (not Contains (Container, Item) =>
!           Model (Container) = Model (Container)'Old
!             and Elements (Container) = Elements (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, Item is removed from Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  Other elements are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Item)
! 
!             --  Mapping from cursors to elements is preserved
! 
!             and Mapping_Preserved
!                   (E_Left  => Elements (Container),
!                    E_Right => Elements (Container)'Old,
!                    P_Left  => Positions (Container),
!                    P_Right => Positions (Container)'Old)
!             and P.Keys_Included_Except
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Find (Container, Item)'Old));
!    --  Searches for Item in the set, and if found, removes its node from the
!    --  set and then deallocates it. The search works as follows. The operation
!    --  calls Hash to determine the item's bucket; if the bucket is not empty,
!    --  it calls Equivalent_Elements to compare Item to the element of each node
!    --  in the bucket. (This is the deletion analog of Include. It is intended
!    --  for use when you want to remove the item from the set, but don't care
!    --  whether the item is already in the set.)
! 
!    procedure Delete  (Container : in out Set; Item : Element_Type) with
!      Global => null,
!      Pre    => Contains (Container, Item),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Item is no longer in Container
! 
!          and not Contains (Container, Item)
! 
!          --  Other elements are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Item)
! 
!          --  Mapping from cursors to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Container),
!                 E_Right => Elements (Container)'Old,
!                 P_Left  => Positions (Container),
!                 P_Right => Positions (Container)'Old)
!          and P.Keys_Included_Except
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Find (Container, Item)'Old);
!    --  Searches for Item in the set (which involves calling both Hash and
!    --  Equivalent_Elements). If the search fails, then the operation raises
!    --  Constraint_Error. Otherwise it removes the node from the set and then
!    --  deallocates it. (This is the deletion analog of non-conditional
!    --  Insert. It is intended for use when you want to assert that the item is
!    --  already in the set.)
! 
!    procedure Delete (Container : in out Set; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
!        Position = No_Element
!          and Length (Container) = Length (Container)'Old - 1
! 
!          --  The element at position Position is no longer in Container
! 
!          and not Contains (Container, Element (Container, Position)'Old)
!          and not P.Has_Key (Positions (Container), Position'Old)
! 
!          --  Other elements are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Element (Container, Position)'Old)
! 
!          --  Mapping from cursors to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Container),
!                 E_Right => Elements (Container)'Old,
!                 P_Left  => Positions (Container),
!                 P_Right => Positions (Container)'Old)
!          and P.Keys_Included_Except
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Position'Old);
!    --  Removes the node designated by Position from the set, and then
!    --  deallocates the node. The operation calls Hash to determine the bucket,
!    --  and then compares Position to each node in the bucket until there's a
!    --  match (it does not call Equivalent_Elements).
! 
!    procedure Union (Target : in out Set; Source : Set) with
!      Global => null,
!      Pre    =>
!        Length (Source) - Length (Target and Source) <=
!          Target.Capacity - Length (Target),
!      Post   =>
!        Length (Target) = Length (Target)'Old
!          - M.Num_Overlaps (Model (Target)'Old, Model (Source))
!          + Length (Source)
! 
!          --  Elements already in Target are still in Target
! 
!          and Model (Target)'Old <= Model (Target)
! 
!          --  Elements of Source are included in Target
! 
!          and Model (Source) <= Model (Target)
! 
!          --  Elements of Target come from either Source or Target
! 
!          and M.Included_In_Union
!                (Model (Target), Model (Source), Model (Target)'Old)
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and E_Elements_Included
!                (Elements (Target),
!                 Model (Target)'Old,
!                 Elements (Target)'Old,
!                 Elements (Source))
! 
!          and E_Elements_Included
!                (Elements (Target)'Old, Model (Target)'Old, Elements (Target))
! 
!          and E_Elements_Included
!                (Elements (Source),
!                 Model (Target)'Old,
!                 Elements (Source),
!                 Elements (Target))
! 
!          --  Mapping from cursors of Target to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Target)'Old,
!                 E_Right => Elements (Target),
!                 P_Left  => Positions (Target)'Old,
!                 P_Right => Positions (Target));
!    --  Iterates over the Source set, and conditionally inserts each element
!    --  into Target.
! 
!    function Union (Left, Right : Set) return Set with
!      Global => null,
!      Pre    => Length (Left) <= Count_Type'Last - Length (Right),
!      Post   =>
!        Length (Union'Result) = Length (Left)
!          - M.Num_Overlaps (Model (Left), Model (Right))
!          + Length (Right)
! 
!          --  Elements of Left and Right are in the result of Union
! 
!          and Model (Left) <= Model (Union'Result)
!          and Model (Right) <= Model (Union'Result)
! 
!          --  Elements of the result of union come from either Left or Right
! 
!          and
!            M.Included_In_Union
!              (Model (Union'Result), Model (Left), Model (Right))
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and E_Elements_Included
!                (Elements (Union'Result),
!                 Model (Left),
!                 Elements (Left),
!                 Elements (Right))
! 
!          and E_Elements_Included
!                (Elements (Left), Model (Left), Elements (Union'Result))
! 
!          and E_Elements_Included
!                (Elements (Right),
!                 Model (Left),
!                 Elements (Right),
!                 Elements (Union'Result));
!    --  The operation first copies the Left set to the result, and then iterates
!    --  over the Right set to conditionally insert each element into the result.
! 
!    function "or" (Left, Right : Set) return Set renames Union;
! 
!    procedure Intersection (Target : in out Set; Source : Set) with
!      Global => null,
!      Post   =>
!        Length (Target) =
!          M.Num_Overlaps (Model (Target)'Old, Model (Source))
! 
!          --  Elements of Target were already in Target
! 
!          and Model (Target) <= Model (Target)'Old
! 
!          --  Elements of Target are in Source
! 
!          and Model (Target) <= Model (Source)
! 
!          --  Elements both in Source and Target are in the intersection
! 
!          and M.Includes_Intersection
!                (Model (Target), Model (Source), Model (Target)'Old)
! 
!          --  Actual value of elements of Target is preserved
! 
!          and E_Elements_Included (Elements (Target), Elements (Target)'Old)
!          and E_Elements_Included
!                (Elements (Target)'Old, Model (Source), Elements (Target))
! 
!          --  Mapping from cursors of Target to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Target),
!                 E_Right => Elements (Target)'Old,
!                 P_Left  => Positions (Target),
!                 P_Right => Positions (Target)'Old);
!    --  Iterates over the Target set (calling First and Next), calling Find to
!    --  determine whether the element is in Source. If an equivalent element is
!    --  not found in Source, the element is deleted from Target.
! 
!    function Intersection (Left, Right : Set) return Set with
!      Global => null,
!      Post   =>
!        Length (Intersection'Result) =
!          M.Num_Overlaps (Model (Left), Model (Right))
! 
!          --  Elements in the result of Intersection are in Left and Right
! 
!          and Model (Intersection'Result) <= Model (Left)
!          and Model (Intersection'Result) <= Model (Right)
! 
!          --  Elements both in Left and Right are in the result of Intersection
! 
!          and M.Includes_Intersection
!                (Model (Intersection'Result), Model (Left), Model (Right))
! 
!          --  Actual value of elements come from Left
! 
!          and E_Elements_Included
!                (Elements (Intersection'Result), Elements (Left))
! 
!          and E_Elements_Included
!                (Elements (Left), Model (Right),
!                 Elements (Intersection'Result));
!    --  Iterates over the Left set, calling Find to determine whether the
!    --  element is in Right. If an equivalent element is found, it is inserted
!    --  into the result set.
! 
!    function "and" (Left, Right : Set) return Set renames Intersection;
! 
!    procedure Difference (Target : in out Set; Source : Set) with
!      Global => null,
!      Post   =>
!        Length (Target) = Length (Target)'Old -
!          M.Num_Overlaps (Model (Target)'Old, Model (Source))
! 
!          --  Elements of Target were already in Target
! 
!          and Model (Target) <= Model (Target)'Old
! 
!          --  Elements of Target are not in Source
! 
!          and M.No_Overlap (Model (Target), Model (Source))
! 
!          --  Elements in Target but not in Source are in the difference
! 
!          and M.Included_In_Union
!                (Model (Target)'Old, Model (Target), Model (Source))
! 
!          --  Actual value of elements of Target is preserved
! 
!          and E_Elements_Included (Elements (Target), Elements (Target)'Old)
!          and E_Elements_Included
!                (Elements (Target)'Old, Model (Target), Elements (Target))
! 
!          --  Mapping from cursors of Target to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Target),
!                 E_Right => Elements (Target)'Old,
!                 P_Left  => Positions (Target),
!                 P_Right => Positions (Target)'Old);
!    --  Iterates over the Source (calling First and Next), calling Find to
!    --  determine whether the element is in Target. If an equivalent element is
!    --  found, it is deleted from Target.
! 
!    function Difference (Left, Right : Set) return Set with
!      Global => null,
!      Post   =>
!        Length (Difference'Result) = Length (Left) -
!          M.Num_Overlaps (Model (Left), Model (Right))
! 
!          --  Elements of the result of Difference are in Left
! 
!          and Model (Difference'Result) <= Model (Left)
! 
!          --  Elements of the result of Difference are in Right
! 
!          and M.No_Overlap (Model (Difference'Result), Model (Right))
! 
!          --  Elements in Left but not in Right are in the difference
! 
!          and M.Included_In_Union
!                (Model (Left), Model (Difference'Result), Model (Right))
! 
!          --  Actual value of elements come from Left
! 
!          and E_Elements_Included
!                (Elements (Difference'Result), Elements (Left))
! 
!          and E_Elements_Included
!                (Elements (Left),
!                 Model (Difference'Result),
!                 Elements (Difference'Result));
!    --  Iterates over the Left set, calling Find to determine whether the
!    --  element is in the Right set. If an equivalent element is not found, the
!    --  element is inserted into the result set.
! 
!    function "-" (Left, Right : Set) return Set renames Difference;
! 
!    procedure Symmetric_Difference (Target : in out Set; Source : Set) with
!      Global => null,
!      Pre    =>
!        Length (Source) - Length (Target and Source) <=
!          Target.Capacity - Length (Target) + Length (Target and Source),
!      Post   =>
!        Length (Target) = Length (Target)'Old -
!          2 * M.Num_Overlaps (Model (Target)'Old, Model (Source)) +
!          Length (Source)
! 
!          --  Elements of the difference were not both in Source and in Target
! 
!          and M.Not_In_Both (Model (Target), Model (Target)'Old, Model (Source))
! 
!          --  Elements in Target but not in Source are in the difference
! 
!          and M.Included_In_Union
!                (Model (Target)'Old, Model (Target), Model (Source))
! 
!          --  Elements in Source but not in Target are in the difference
! 
!          and M.Included_In_Union
!                (Model (Source), Model (Target), Model (Target)'Old)
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and E_Elements_Included
!                (Elements (Target),
!                 Model (Target)'Old,
!                 Elements (Target)'Old,
!                 Elements (Source))
! 
!          and E_Elements_Included
!                (Elements (Target)'Old, Model (Target), Elements (Target))
! 
!          and E_Elements_Included
!                (Elements (Source), Model (Target), Elements (Target));
!    --  The operation iterates over the Source set, searching for the element
!    --  in Target (calling Hash and Equivalent_Elements). If an equivalent
!    --  element is found, it is removed from Target; otherwise it is inserted
!    --  into Target.
! 
!    function Symmetric_Difference (Left, Right : Set) return Set with
!      Global => null,
!      Pre    => Length (Left) <= Count_Type'Last - Length (Right),
!      Post   =>
!        Length (Symmetric_Difference'Result) = Length (Left) -
!          2 * M.Num_Overlaps (Model (Left), Model (Right)) +
!          Length (Right)
! 
!          --  Elements of the difference were not both in Left and Right
! 
!          and M.Not_In_Both
!                (Model (Symmetric_Difference'Result),
!                 Model (Left),
!                 Model (Right))
! 
!          --  Elements in Left but not in Right are in the difference
! 
!          and M.Included_In_Union
!                (Model (Left),
!                 Model (Symmetric_Difference'Result),
!                 Model (Right))
! 
!          --  Elements in Right but not in Left are in the difference
! 
!          and M.Included_In_Union
!                (Model (Right),
!                 Model (Symmetric_Difference'Result),
!                 Model (Left))
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and E_Elements_Included
!                (Elements (Symmetric_Difference'Result),
!                 Model (Left),
!                 Elements (Left),
!                 Elements (Right))
! 
!          and E_Elements_Included
!                (Elements (Left),
!                 Model (Symmetric_Difference'Result),
!                 Elements (Symmetric_Difference'Result))
! 
!          and E_Elements_Included
!                (Elements (Right),
!                 Model (Symmetric_Difference'Result),
!                 Elements (Symmetric_Difference'Result));
!    --  The operation first iterates over the Left set. It calls Find to
!    --  determine whether the element is in the Right set. If no equivalent
!    --  element is found, the element from Left is inserted into the result. The
!    --  operation then iterates over the Right set, to determine whether the
!    --  element is in the Left set. If no equivalent element is found, the Right
!    --  element is inserted into the result.
! 
!    function "xor" (Left, Right : Set) return Set
!      renames Symmetric_Difference;
! 
!    function Overlap (Left, Right : Set) return Boolean with
!      Global => null,
!      Post   =>
!        Overlap'Result = not (M.No_Overlap (Model (Left), Model (Right)));
!    --  Iterates over the Left set (calling First and Next), calling Find to
!    --  determine whether the element is in the Right set. If an equivalent
!    --  element is found, the operation immediately returns True. The operation
!    --  returns False if the iteration over Left terminates without finding any
!    --  equivalent element in Right.
! 
!    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean with
!      Global => null,
!      Post   => Is_Subset'Result = (Model (Subset) <= Model (Of_Set));
!    --  Iterates over Subset (calling First and Next), calling Find to determine
!    --  whether the element is in Of_Set. If no equivalent element is found in
!    --  Of_Set, the operation immediately returns False. The operation returns
!    --  True if the iteration over Subset terminates without finding an element
!    --  not in Of_Set (that is, every element in Subset is equivalent to an
!    --  element in Of_Set).
! 
!    function First (Container : Set) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           First'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, First'Result)
!             and P.Get (Positions (Container), First'Result) = 1);
!    --  Returns a cursor that designates the first non-empty bucket, by
!    --  searching from the beginning of the buckets array.
! 
!    function Next (Container : Set; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Next'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Next'Result)
!             and then P.Get (Positions (Container), Next'Result) =
!                      P.Get (Positions (Container), Position) + 1);
!    --  Returns a cursor that designates the node that follows the current one
!    --  designated by Position. If Position designates the last node in its
!    --  bucket, the operation calls Hash to compute the index of this bucket,
!    --  and searches the buckets array for the first non-empty bucket, starting
!    --  from that index; otherwise, it simply follows the link to the next node
!    --  in the same bucket.
! 
!    procedure Next (Container : Set; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) + 1);
!    --  Equivalent to Position := Next (Position)
! 
!    function Find
!      (Container : Set;
!       Item      : Element_Type) return Cursor
!    with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container, Find returns No_Element
! 
!        (not Contains (Model (Container), Item) =>
!           Find'Result = No_Element,
! 
!         --  Otherwise, Find returns a valid cursor in Container
! 
!         others =>
!           P.Has_Key (Positions (Container), Find'Result)
!             and P.Get (Positions (Container), Find'Result) =
!                 Find (Elements (Container), Item)
! 
!             --  The element designated by the result of Find is Item
! 
!             and Equivalent_Elements
!                   (Element (Container, Find'Result), Item));
!    --  Searches for Item in the set. Find calls Hash to determine the item's
!    --  bucket; if the bucket is not empty, it calls Equivalent_Elements to
!    --  compare Item to each element in the bucket. If the search succeeds, Find
!    --  returns a cursor designating the node containing the equivalent element;
!    --  otherwise, it returns No_Element.
! 
!    function Contains (Container : Set; Item : Element_Type) return Boolean with
!      Global => null,
!      Post   => Contains'Result = Contains (Model (Container), Item);
!    pragma Annotate (GNATprove, Inline_For_Proof, Contains);
! 
!    function Has_Element (Container : Set; Position : Cursor) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result = P.Has_Key (Positions (Container), Position);
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
!    function Default_Modulus (Capacity : Count_Type) return Hash_Type with
!      Global => null;
! 
!    generic
!       type Key_Type (<>) is private;
! 
!       with function Key (Element : Element_Type) return Key_Type;
! 
!       with function Hash (Key : Key_Type) return Hash_Type;
! 
!       with function Equivalent_Keys (Left, Right : Key_Type) return Boolean;
! 
!    package Generic_Keys with SPARK_Mode is
! 
!       package Formal_Model with Ghost is
! 
!          function M_Included_Except
!            (Left  : M.Set;
!             Right : M.Set;
!             Key   : Key_Type) return Boolean
!            with
!              Global => null,
!              Post   =>
!                M_Included_Except'Result =
!                  (for all E of Left =>
!                    Contains (Right, E)
!                      or Equivalent_Keys (Generic_Keys.Key (E), Key));
! 
!       end Formal_Model;
!       use Formal_Model;
! 
!       function Key (Container : Set; Position : Cursor) return Key_Type with
!         Global => null,
!         Post   => Key'Result = Key (Element (Container, Position));
!       pragma Annotate (GNATprove, Inline_For_Proof, Key);
! 
!       function Element (Container : Set; Key : Key_Type) return Element_Type
!       with
!         Global => null,
!         Pre    => Contains (Container, Key),
!         Post   =>
!           Element'Result = Element (Container, Find (Container, Key));
!       pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!       procedure Replace
!         (Container : in out Set;
!          Key       : Key_Type;
!          New_Item  : Element_Type)
!       with
!         Global => null,
!         Pre    => Contains (Container, Key),
!         Post   =>
!           Length (Container) = Length (Container)'Old
! 
!              --  Key now maps to New_Item
! 
!              and Element (Container, Key) = New_Item
! 
!              --  New_Item is contained in Container
! 
!              and Contains (Model (Container), New_Item)
! 
!              --  Other elements are preserved
! 
!              and M_Included_Except
!                    (Model (Container)'Old,
!                     Model (Container),
!                     Key)
!              and M.Included_Except
!                    (Model (Container),
!                     Model (Container)'Old,
!                     New_Item)
! 
!              --  Mapping from cursors to elements is preserved
! 
!              and Mapping_Preserved_Except
!                    (E_Left   => Elements (Container)'Old,
!                     E_Right  => Elements (Container),
!                     P_Left   => Positions (Container)'Old,
!                     P_Right  => Positions (Container),
!                     Position => Find (Container, Key))
!              and Positions (Container) = Positions (Container)'Old;
! 
!       procedure Exclude (Container : in out Set; Key : Key_Type) with
!         Global         => null,
!         Post           => not Contains (Container, Key),
!         Contract_Cases =>
! 
!           --  If Key is not in Container, nothing is changed
! 
!           (not Contains (Container, Key) =>
!              Model (Container) = Model (Container)'Old
!                and Elements (Container) = Elements (Container)'Old
!                and Positions (Container) = Positions (Container)'Old,
! 
!            --  Otherwise, Key is removed from Container
! 
!            others =>
!              Length (Container) = Length (Container)'Old - 1
! 
!                --  Other elements are preserved
! 
!                and Model (Container) <= Model (Container)'Old
!                and M_Included_Except
!                      (Model (Container)'Old,
!                       Model (Container),
!                       Key)
! 
!                --  Mapping from cursors to elements is preserved
! 
!                and Mapping_Preserved
!                      (E_Left  => Elements (Container),
!                       E_Right => Elements (Container)'Old,
!                       P_Left  => Positions (Container),
!                       P_Right => Positions (Container)'Old)
!                and P.Keys_Included_Except
!                      (Positions (Container)'Old,
!                       Positions (Container),
!                       Find (Container, Key)'Old));
! 
!       procedure Delete (Container : in out Set; Key : Key_Type) with
!         Global => null,
!         Pre    => Contains (Container, Key),
!         Post   =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  Key is no longer in Container
! 
!             and not Contains (Container, Key)
! 
!             --  Other elements are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M_Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Key)
! 
!             --  Mapping from cursors to elements is preserved
! 
!             and Mapping_Preserved
!                   (E_Left  => Elements (Container),
!                    E_Right => Elements (Container)'Old,
!                    P_Left  => Positions (Container),
!                    P_Right => Positions (Container)'Old)
!             and P.Keys_Included_Except
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Find (Container, Key)'Old);
! 
!       function Find (Container : Set; Key : Key_Type) return Cursor with
!         Global         => null,
!         Contract_Cases =>
! 
!           --  If Key is not contained in Container, Find returns No_Element
! 
!           ((for all E of Model (Container) =>
!                not Equivalent_Keys (Key, Generic_Keys.Key (E))) =>
!              Find'Result = No_Element,
! 
!            --  Otherwise, Find returns a valid cursor in Container
! 
!            others =>
!              P.Has_Key (Positions (Container), Find'Result)
! 
!                --  The key designated by the result of Find is Key
! 
!                and Equivalent_Keys
!                      (Generic_Keys.Key (Container, Find'Result), Key));
! 
!       function Contains (Container : Set; Key : Key_Type) return Boolean with
!         Global => null,
!         Post   =>
!           Contains'Result =
!             (for some E of Model (Container) =>
!               Equivalent_Keys (Key, Generic_Keys.Key (E)));
! 
!    end Generic_Keys;
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    pragma Inline (Next);
! 
!    type Node_Type is
!       record
!          Element     : aliased Element_Type;
!          Next        : Count_Type;
!          Has_Element : Boolean := False;
!       end record;
! 
!    package HT_Types is new
!      Ada.Containers.Hash_Tables.Generic_Bounded_Hash_Table_Types (Node_Type);
! 
!    type Set (Capacity : Count_Type; Modulus : Hash_Type) is record
!      Content : HT_Types.Hash_Table_Type (Capacity, Modulus);
!    end record;
! 
!    use HT_Types;
  
!    Empty_Set : constant Set := (Capacity => 0, Modulus => 0, others => <>);
  
  end Ada.Containers.Formal_Hashed_Sets;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Hashed_Sets with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Hashed_Sets;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfidll.ads gcc-13.1.0/gcc/ada/libgnat/a-cfidll.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cfidll.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-cfidll.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,40 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --           ADA.CONTAINERS.FORMAL_INDEFINITE_DOUBLY_LINKED_LISTS           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, 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 --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ ------------------------------------------------------------------------------
+ 
+ generic
+ package Ada.Containers.Formal_Indefinite_Doubly_Linked_Lists with SPARK_Mode is
+ 
+    pragma Compile_Time_Error
+      (True,
+       "This package has been moved to the SPARK library shipped with any"
+       & " SPARK release starting with version 23.");
+ 
+ end Ada.Containers.Formal_Indefinite_Doubly_Linked_Lists;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfinse.ads gcc-13.1.0/gcc/ada/libgnat/a-cfinse.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cfinse.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-cfinse.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,40 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --                ADA.CONTAINERS.FUNCTIONAL_INFINITE_SEQUENCE               --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, 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 --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ ------------------------------------------------------------------------------
+ 
+ generic
+ package Ada.Containers.Functional_Infinite_Sequences with SPARK_Mode is
+ 
+    pragma Compile_Time_Error
+      (True,
+       "This package has been moved to the SPARK library shipped with any"
+       & " SPARK release starting with version 23.");
+ 
+ end Ada.Containers.Functional_Infinite_Sequences;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfinve.adb gcc-13.1.0/gcc/ada/libgnat/a-cfinve.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cfinve.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfinve.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1452 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                 ADA.CONTAINERS.FORMAL_INDEFINITE_VECTORS                 --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Generic_Array_Sort;
- with Ada.Unchecked_Deallocation;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Indefinite_Vectors with
-   SPARK_Mode => Off
- is
-    function H (New_Item : Element_Type) return Holder renames To_Holder;
-    function E (Container : Holder) return Element_Type renames Get;
- 
-    Growth_Factor : constant := 2;
-    --  When growing a container, multiply current capacity by this. Doubling
-    --  leads to amortized linear-time copying.
- 
-    subtype Int is Long_Long_Integer;
- 
-    procedure Free is
-      new Ada.Unchecked_Deallocation (Elements_Array, Elements_Array_Ptr);
- 
-    type Maximal_Array_Ptr is access all Elements_Array (Array_Index)
-      with Storage_Size => 0;
-    type Maximal_Array_Ptr_Const is access constant Elements_Array (Array_Index)
-      with Storage_Size => 0;
- 
-    function Elems (Container : in out Vector) return Maximal_Array_Ptr;
-    function Elemsc
-      (Container : Vector) return Maximal_Array_Ptr_Const;
-    --  Returns a pointer to the Elements array currently in use -- either
-    --  Container.Elements_Ptr or a pointer to Container.Elements. We work with
-    --  pointers to a bogus array subtype that is constrained with the maximum
-    --  possible bounds. This means that the pointer is a thin pointer. This is
-    --  necessary because 'Unrestricted_Access doesn't work when it produces
-    --  access-to-unconstrained and is returned from a function.
-    --
-    --  Note that this is dangerous: make sure calls to this use an indexed
-    --  component or slice that is within the bounds 1 .. Length (Container).
- 
-    function Get_Element
-      (Container : Vector;
-       Position  : Capacity_Range) return Element_Type;
- 
-    function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base;
- 
-    function Current_Capacity (Container : Vector) return Capacity_Range;
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left : Vector; Right : Vector) return Boolean is
-    begin
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       for J in 1 .. Length (Left) loop
-          if Get_Element (Left, J) /= Get_Element (Right, J) then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       if Is_Empty (New_Item) then
-          return;
-       end if;
- 
-       if Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       Insert (Container, Container.Last + 1, New_Item);
-    end Append;
- 
-    procedure Append (Container : in out Vector; New_Item : Element_Type) is
-    begin
-       Append (Container, New_Item, 1);
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       Insert (Container, Container.Last + 1, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Vector; Source : Vector) is
-       LS : constant Capacity_Range := Length (Source);
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Bounded and then Target.Capacity < LS then
-          raise Constraint_Error;
-       end if;
- 
-       Clear (Target);
-       Append (Target, Source);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Vector) return Capacity_Range is
-    begin
-       return
-         (if Bounded then
-             Container.Capacity
-          else
-             Capacity_Range'Last);
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Vector) is
-    begin
-       Container.Last := No_Index;
- 
-       --  Free element, note that this is OK if Elements_Ptr is null
- 
-       Free (Container.Elements_Ptr);
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return not null access constant Element_Type
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (Index) - Int (No_Index);
-          I  : constant Capacity_Range := Capacity_Range (II);
- 
-       begin
-          return Constant_Reference (Elemsc (Container) (I));
-       end;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find_Index (Container, Item) /= No_Index;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : Vector;
-       Capacity : Capacity_Range := 0) return Vector
-    is
-       LS : constant Capacity_Range := Length (Source);
-       C  : Capacity_Range;
- 
-    begin
-       if Capacity = 0 then
-          C := LS;
-       elsif Capacity >= LS then
-          C := Capacity;
-       else
-          raise Capacity_Error;
-       end if;
- 
-       return Target : Vector (C) do
-          Elems (Target) (1 .. LS) := Elemsc (Source) (1 .. LS);
-          Target.Last := Source.Last;
-       end return;
-    end Copy;
- 
-    ----------------------
-    -- Current_Capacity --
-    ----------------------
- 
-    function Current_Capacity (Container : Vector) return Capacity_Range is
-    begin
-       return
-         (if Container.Elements_Ptr = null then
-             Container.Elements'Length
-          else
-             Container.Elements_Ptr.all'Length);
-    end Current_Capacity;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Vector; Index : Extended_Index) is
-    begin
-       Delete (Container, Index, 1);
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type)
-    is
-       Old_Last : constant Index_Type'Base := Container.Last;
-       Old_Len  : constant Count_Type := Length (Container);
-       New_Last : Index_Type'Base;
-       Count2   : Count_Type'Base;  -- count of items from Index to Old_Last
-       Off      : Count_Type'Base;  -- Index expressed as offset from IT'First
- 
-    begin
-       --  Delete removes items from the vector, the number of which is the
-       --  minimum of the specified Count and the items (if any) that exist from
-       --  Index to Container.Last. There are no constraints on the specified
-       --  value of Count (it can be larger than what's available at this
-       --  position in the vector, for example), but there are constraints on
-       --  the allowed values of the Index.
- 
-       --  As a precondition on the generic actual Index_Type, the base type
-       --  must include Index_Type'Pred (Index_Type'First); this is the value
-       --  that Container.Last assumes when the vector is empty. However, we do
-       --  not allow that as the value for Index when specifying which items
-       --  should be deleted, so we must manually check. (That the user is
-       --  allowed to specify the value at all here is a consequence of the
-       --  declaration of the Extended_Index subtype, which includes the values
-       --  in the base range that immediately precede and immediately follow the
-       --  values in the Index_Type.)
- 
-       if Index < Index_Type'First then
-          raise Constraint_Error with "Index is out of range (too small)";
-       end if;
- 
-       --  We do allow a value greater than Container.Last to be specified as
-       --  the Index, but only if it's immediately greater. This allows the
-       --  corner case of deleting no items from the back end of the vector to
-       --  be treated as a no-op. (It is assumed that specifying an index value
-       --  greater than Last + 1 indicates some deeper flaw in the caller's
-       --  algorithm, so that case is treated as a proper error.)
- 
-       if Index > Old_Last then
-          if Index > Old_Last + 1 then
-             raise Constraint_Error with "Index is out of range (too large)";
-          end if;
- 
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  We first calculate what's available for deletion starting at
-       --  Index. Here and elsewhere we use the wider of Index_Type'Base and
-       --  Count_Type'Base as the type for intermediate values. (See function
-       --  Length for more information.)
- 
-       if Count_Type'Base'Last >= Index_Type'Pos (Index_Type'Base'Last) then
-          Count2 := Count_Type'Base (Old_Last) - Count_Type'Base (Index) + 1;
-       else
-          Count2 := Count_Type'Base (Old_Last - Index + 1);
-       end if;
- 
-       --  If more elements are requested (Count) for deletion than are
-       --  available (Count2) for deletion beginning at Index, then everything
-       --  from Index is deleted. There are no elements to slide down, and so
-       --  all we need to do is set the value of Container.Last.
- 
-       if Count >= Count2 then
-          Container.Last := Index - 1;
-          return;
-       end if;
- 
-       --  There are some elements that aren't being deleted (the requested
-       --  count was less than the available count), so we must slide them down
-       --  to Index. We first calculate the index values of the respective array
-       --  slices, using the wider of Index_Type'Base and Count_Type'Base as the
-       --  type for intermediate calculations.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Off := Count_Type'Base (Index - Index_Type'First);
-          New_Last := Old_Last - Index_Type'Base (Count);
-       else
-          Off := Count_Type'Base (Index) - Count_Type'Base (Index_Type'First);
-          New_Last := Index_Type'Base (Count_Type'Base (Old_Last) - Count);
-       end if;
- 
-       --  The array index values for each slice have already been determined,
-       --  so we just slide down to Index the elements that weren't deleted.
- 
-       declare
-          EA  : Maximal_Array_Ptr renames Elems (Container);
-          Idx : constant Count_Type := EA'First + Off;
- 
-       begin
-          EA (Idx .. Old_Len - Count) := EA (Idx + Count .. Old_Len);
-          Container.Last := New_Last;
-       end;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Vector) is
-    begin
-       Delete_First (Container, 1);
-    end Delete_First;
- 
-    procedure Delete_First (Container : in out Vector; Count : Count_Type) is
-    begin
-       if Count = 0 then
-          return;
- 
-       elsif Count >= Length (Container) then
-          Clear (Container);
-          return;
- 
-       else
-          Delete (Container, Index_Type'First, Count);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Vector) is
-    begin
-       Delete_Last (Container, 1);
-    end Delete_Last;
- 
-    procedure Delete_Last (Container : in out Vector; Count : Count_Type) is
-    begin
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  There is no restriction on how large Count can be when deleting
-       --  items. If it is equal or greater than the current length, then this
-       --  is equivalent to clearing the vector. (In particular, there's no need
-       --  for us to actually calculate the new value for Last.)
- 
-       --  If the requested count is less than the current length, then we must
-       --  calculate the new value for Last. For the type we use the widest of
-       --  Index_Type'Base and Count_Type'Base for the intermediate values of
-       --  our calculation.  (See the comments in Length for more information.)
- 
-       if Count >= Length (Container) then
-          Container.Last := No_Index;
- 
-       elsif Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Container.Last := Container.Last - Index_Type'Base (Count);
- 
-       else
-          Container.Last :=
-            Index_Type'Base (Count_Type'Base (Container.Last) - Count);
-       end if;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (Index) - Int (No_Index);
-          I  : constant Capacity_Range := Capacity_Range (II);
- 
-       begin
-          return Get_Element (Container, I);
-       end;
-    end Element;
- 
-    -----------
-    -- Elems --
-    -----------
- 
-    function Elems (Container : in out Vector) return Maximal_Array_Ptr is
-    begin
-       return
-         (if Container.Elements_Ptr = null then
-             Container.Elements'Unrestricted_Access
-          else
-             Container.Elements_Ptr.all'Unrestricted_Access);
-    end Elems;
- 
-    function Elemsc (Container : Vector) return Maximal_Array_Ptr_Const is
-    begin
-       return
-         (if Container.Elements_Ptr = null then
-             Container.Elements'Unrestricted_Access
-          else
-             Container.Elements_Ptr.all'Unrestricted_Access);
-    end Elemsc;
- 
-    ----------------
-    -- Find_Index --
-    ----------------
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    is
-       K    : Count_Type;
-       Last : constant Extended_Index := Last_Index (Container);
- 
-    begin
-       K := Capacity_Range (Int (Index) - Int (No_Index));
-       for Indx in Index .. Last loop
-          if Get_Element (Container, K) = Item then
-             return Indx;
-          end if;
- 
-          K := K + 1;
-       end loop;
- 
-       return No_Index;
-    end Find_Index;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Vector) return Element_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "Container is empty";
-       else
-          return Get_Element (Container, 1);
-       end if;
-    end First_Element;
- 
-    -----------------
-    -- First_Index --
-    -----------------
- 
-    function First_Index (Container : Vector) return Index_Type is
-       pragma Unreferenced (Container);
-    begin
-       return Index_Type'First;
-    end First_Index;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       -------------------------
-       -- M_Elements_In_Union --
-       -------------------------
- 
-       function M_Elements_In_Union
-         (Container : M.Sequence;
-          Left      : M.Sequence;
-          Right     : M.Sequence) return Boolean
-       is
-       begin
-          for Index in Index_Type'First .. M.Last (Container) loop
-             declare
-                Elem : constant Element_Type := Element (Container, Index);
-             begin
-                if not M.Contains (Left, Index_Type'First, M.Last (Left), Elem)
-                  and then
-                    not M.Contains
-                      (Right, Index_Type'First, M.Last (Right), Elem)
-                then
-                   return False;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end M_Elements_In_Union;
- 
-       -------------------------
-       -- M_Elements_Included --
-       -------------------------
- 
-       function M_Elements_Included
-         (Left  : M.Sequence;
-          L_Fst : Index_Type := Index_Type'First;
-          L_Lst : Extended_Index;
-          Right : M.Sequence;
-          R_Fst : Index_Type := Index_Type'First;
-          R_Lst : Extended_Index) return Boolean
-       is
-       begin
-          for I in L_Fst .. L_Lst loop
-             declare
-                Found : Boolean := False;
-                J     : Extended_Index := R_Fst - 1;
- 
-             begin
-                while not Found and J < R_Lst loop
-                   J := J + 1;
-                   if Element (Left, I) = Element (Right, J) then
-                      Found := True;
-                   end if;
-                end loop;
- 
-                if not Found then
-                   return False;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end M_Elements_Included;
- 
-       -------------------------
-       -- M_Elements_Reversed --
-       -------------------------
- 
-       function M_Elements_Reversed
-         (Left  : M.Sequence;
-          Right : M.Sequence) return Boolean
-       is
-          L : constant Index_Type := M.Last (Left);
- 
-       begin
-          if L /= M.Last (Right) then
-             return False;
-          end if;
- 
-          for I in Index_Type'First .. L loop
-             if Element (Left, I) /= Element (Right, L - I + 1)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_Reversed;
- 
-       ------------------------
-       -- M_Elements_Swapped --
-       ------------------------
- 
-       function M_Elements_Swapped
-         (Left  : M.Sequence;
-          Right : M.Sequence;
-          X     : Index_Type;
-          Y     : Index_Type) return Boolean
-       is
-       begin
-          if M.Length (Left) /= M.Length (Right)
-            or else Element (Left, X) /= Element (Right, Y)
-            or else Element (Left, Y) /= Element (Right, X)
-          then
-             return False;
-          end if;
- 
-          for I in Index_Type'First .. M.Last (Left) loop
-             if I /= X and then I /= Y
-               and then Element (Left, I) /= Element (Right, I)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_Swapped;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : Vector) return M.Sequence is
-          R : M.Sequence;
- 
-       begin
-          for Position in 1 .. Length (Container) loop
-             R := M.Add (R, E (Elemsc (Container) (Position)));
-          end loop;
- 
-          return R;
-       end Model;
- 
-    end Formal_Model;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting with SPARK_Mode => Off is
- 
-       ------------------
-       -- Formal_Model --
-       ------------------
- 
-       package body Formal_Model is
- 
-          -----------------------
-          -- M_Elements_Sorted --
-          -----------------------
- 
-          function M_Elements_Sorted (Container : M.Sequence) return Boolean is
-          begin
-             if M.Length (Container) = 0 then
-                return True;
-             end if;
- 
-             declare
-                E1 : Element_Type := Element (Container, Index_Type'First);
- 
-             begin
-                for I in Index_Type'First + 1 .. M.Last (Container) loop
-                   declare
-                      E2 : constant Element_Type := Element (Container, I);
- 
-                   begin
-                      if E2 < E1 then
-                         return False;
-                      end if;
- 
-                      E1 := E2;
-                   end;
-                end loop;
-             end;
- 
-             return True;
-          end M_Elements_Sorted;
- 
-       end Formal_Model;
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : Vector) return Boolean is
-          L : constant Capacity_Range := Length (Container);
- 
-       begin
-          for J in 1 .. L - 1 loop
-             if Get_Element (Container, J + 1) < Get_Element (Container, J) then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out Vector) is
-          function "<" (Left : Holder; Right : Holder) return Boolean is
-            (E (Left) < E (Right));
- 
-          procedure Sort is new Generic_Array_Sort
-            (Index_Type   => Array_Index,
-             Element_Type => Holder,
-             Array_Type   => Elements_Array,
-             "<"          => "<");
- 
-          Len : constant Capacity_Range := Length (Container);
- 
-       begin
-          if Container.Last <= Index_Type'First then
-             return;
-          else
-             Sort (Elems (Container) (1 .. Len));
-          end if;
-       end Sort;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge (Target : in out Vector; Source : in out Vector) is
-          I : Count_Type;
-          J : Count_Type;
- 
-       begin
-          if Target'Address = Source'Address then
-             raise Program_Error with "Target and Source denote same container";
-          end if;
- 
-          if Length (Source) = 0 then
-             return;
-          end if;
- 
-          if Length (Target) = 0 then
-             Move (Target => Target, Source => Source);
-             return;
-          end if;
- 
-          I := Length (Target);
- 
-          declare
-             New_Length : constant Count_Type := I + Length (Source);
- 
-          begin
-             if not Bounded
-               and then Current_Capacity (Target) < Capacity_Range (New_Length)
-             then
-                Reserve_Capacity
-                  (Target,
-                   Capacity_Range'Max
-                     (Current_Capacity (Target) * Growth_Factor,
-                      Capacity_Range (New_Length)));
-             end if;
- 
-             if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-                Target.Last := No_Index + Index_Type'Base (New_Length);
- 
-             else
-                Target.Last :=
-                  Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-             end if;
-          end;
- 
-          declare
-             TA : Maximal_Array_Ptr renames Elems (Target);
-             SA : Maximal_Array_Ptr renames Elems (Source);
- 
-          begin
-             J := Length (Target);
-             while Length (Source) /= 0 loop
-                if I = 0 then
-                   TA (1 .. J) := SA (1 .. Length (Source));
-                   Source.Last := No_Index;
-                   exit;
-                end if;
- 
-                if E (SA (Length (Source))) < E (TA (I)) then
-                   TA (J) := TA (I);
-                   I := I - 1;
- 
-                else
-                   TA (J) := SA (Length (Source));
-                   Source.Last := Source.Last - 1;
-                end if;
- 
-                J := J - 1;
-             end loop;
-          end;
-       end Merge;
- 
-    end Generic_Sorting;
- 
-    -----------------
-    -- Get_Element --
-    -----------------
- 
-    function Get_Element
-      (Container : Vector;
-       Position  : Capacity_Range) return Element_Type
-    is
-    begin
-       return E (Elemsc (Container) (Position));
-    end Get_Element;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element
-      (Container : Vector;
-       Position  : Extended_Index) return Boolean
-    is
-    begin
-       return Position in First_Index (Container) .. Last_Index (Container);
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type)
-    is
-    begin
-       Insert (Container, Before, New_Item, 1);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-       J : Count_Type'Base;  -- scratch
- 
-    begin
-       --  Use Insert_Space to create the "hole" (the destination slice)
- 
-       Insert_Space (Container, Before, Count);
- 
-       J := To_Array_Index (Before);
- 
-       Elems (Container) (J .. J - 1 + Count) := [others => H (New_Item)];
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector)
-    is
-       N : constant Count_Type := Length (New_Item);
-       B : Count_Type;  -- index Before converted to Count_Type
- 
-    begin
-       if Container'Address = New_Item'Address then
-          raise Program_Error with
-            "Container and New_Item denote same container";
-       end if;
- 
-       --  Use Insert_Space to create the "hole" (the destination slice) into
-       --  which we copy the source items.
- 
-       Insert_Space (Container, Before, Count => N);
- 
-       if N = 0 then
-          --  There's nothing else to do here (vetting of parameters was
-          --  performed already in Insert_Space), so we simply return.
- 
-          return;
-       end if;
- 
-       B := To_Array_Index (Before);
- 
-       Elems (Container) (B .. B + N - 1) := Elemsc (New_Item) (1 .. N);
-    end Insert;
- 
-    ------------------
-    -- Insert_Space --
-    ------------------
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Length : constant Count_Type := Length (Container);
- 
-       Max_Length : Count_Type'Base;  -- determined from range of Index_Type
-       New_Length : Count_Type'Base;  -- sum of current length and Count
- 
-       Index : Index_Type'Base;  -- scratch for intermediate values
-       J     : Count_Type'Base;  -- scratch
- 
-    begin
-       --  As a precondition on the generic actual Index_Type, the base type
-       --  must include Index_Type'Pred (Index_Type'First); this is the value
-       --  that Container.Last assumes when the vector is empty. However, we do
-       --  not allow that as the value for Index when specifying where the new
-       --  items should be inserted, so we must manually check. (That the user
-       --  is allowed to specify the value at all here is a consequence of the
-       --  declaration of the Extended_Index subtype, which includes the values
-       --  in the base range that immediately precede and immediately follow the
-       --  values in the Index_Type.)
- 
-       if Before < Index_Type'First then
-          raise Constraint_Error with
-            "Before index is out of range (too small)";
-       end if;
- 
-       --  We do allow a value greater than Container.Last to be specified as
-       --  the Index, but only if it's immediately greater. This allows for the
-       --  case of appending items to the back end of the vector. (It is assumed
-       --  that specifying an index value greater than Last + 1 indicates some
-       --  deeper flaw in the caller's algorithm, so that case is treated as a
-       --  proper error.)
- 
-       if Before > Container.Last
-         and then Before - 1 > Container.Last
-       then
-          raise Constraint_Error with
-            "Before index is out of range (too large)";
-       end if;
- 
-       --  We treat inserting 0 items into the container as a no-op, so we
-       --  simply return.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  There are two constraints we need to satisfy. The first constraint is
-       --  that a container cannot have more than Count_Type'Last elements, so
-       --  we must check the sum of the current length and the insertion
-       --  count. Note that we cannot simply add these values, because of the
-       --  possibility of overflow.
- 
-       if Old_Length > Count_Type'Last - Count then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  It is now safe compute the length of the new vector, without fear of
-       --  overflow.
- 
-       New_Length := Old_Length + Count;
- 
-       --  The second constraint is that the new Last index value cannot exceed
-       --  Index_Type'Last. In each branch below, we calculate the maximum
-       --  length (computed from the range of values in Index_Type), and then
-       --  compare the new length to the maximum length. If the new length is
-       --  acceptable, then we compute the new last index from that.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
- 
-          --  We have to handle the case when there might be more values in the
-          --  range of Index_Type than in the range of Count_Type.
- 
-          if Index_Type'First <= 0 then
- 
-             --  We know that No_Index (the same as Index_Type'First - 1) is
-             --  less than 0, so it is safe to compute the following sum without
-             --  fear of overflow.
- 
-             Index := No_Index + Index_Type'Base (Count_Type'Last);
- 
-             if Index <= Index_Type'Last then
- 
-                --  We have determined that range of Index_Type has at least as
-                --  many values as in Count_Type, so Count_Type'Last is the
-                --  maximum number of items that are allowed.
- 
-                Max_Length := Count_Type'Last;
- 
-             else
-                --  The range of Index_Type has fewer values than in Count_Type,
-                --  so the maximum number of items is computed from the range of
-                --  the Index_Type.
- 
-                Max_Length := Count_Type'Base (Index_Type'Last - No_Index);
-             end if;
- 
-          else
-             --  No_Index is equal or greater than 0, so we can safely compute
-             --  the difference without fear of overflow (which we would have to
-             --  worry about if No_Index were less than 0, but that case is
-             --  handled above).
- 
-             if Index_Type'Last - No_Index >= Count_Type'Pos (Count_Type'Last)
-             then
-                --  We have determined that range of Index_Type has at least as
-                --  many values as in Count_Type, so Count_Type'Last is the
-                --  maximum number of items that are allowed.
- 
-                Max_Length := Count_Type'Last;
- 
-             else
-                --  The range of Index_Type has fewer values than in Count_Type,
-                --  so the maximum number of items is computed from the range of
-                --  the Index_Type.
- 
-                Max_Length := Count_Type'Base (Index_Type'Last - No_Index);
-             end if;
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  We know that No_Index (the same as Index_Type'First - 1) is less
-          --  than 0, so it is safe to compute the following sum without fear of
-          --  overflow.
- 
-          J := Count_Type'Base (No_Index) + Count_Type'Last;
- 
-          if J <= Count_Type'Base (Index_Type'Last) then
- 
-             --  We have determined that range of Index_Type has at least as
-             --  many values as in Count_Type, so Count_Type'Last is the maximum
-             --  number of items that are allowed.
- 
-             Max_Length := Count_Type'Last;
- 
-          else
-             --  The range of Index_Type has fewer values than Count_Type does,
-             --  so the maximum number of items is computed from the range of
-             --  the Index_Type.
- 
-             Max_Length :=
-               Count_Type'Base (Index_Type'Last) - Count_Type'Base (No_Index);
-          end if;
- 
-       else
-          --  No_Index is equal or greater than 0, so we can safely compute the
-          --  difference without fear of overflow (which we would have to worry
-          --  about if No_Index were less than 0, but that case is handled
-          --  above).
- 
-          Max_Length :=
-            Count_Type'Base (Index_Type'Last) - Count_Type'Base (No_Index);
-       end if;
- 
-       --  We have just computed the maximum length (number of items). We must
-       --  now compare the requested length to the maximum length, as we do not
-       --  allow a vector expand beyond the maximum (because that would create
-       --  an internal array with a last index value greater than
-       --  Index_Type'Last, with no way to index those elements).
- 
-       if New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       J := To_Array_Index (Before);
- 
-       --  Increase the capacity of container if needed
- 
-       if not Bounded
-         and then Current_Capacity (Container) < Capacity_Range (New_Length)
-       then
-          Reserve_Capacity
-            (Container,
-             Capacity_Range'Max
-               (Current_Capacity (Container) * Growth_Factor,
-                Capacity_Range (New_Length)));
-       end if;
- 
-       declare
-          EA : Maximal_Array_Ptr renames Elems (Container);
- 
-       begin
-          if Before <= Container.Last then
- 
-             --  The new items are being inserted before some existing
-             --  elements, so we must slide the existing elements up to their
-             --  new home.
- 
-             EA (J + Count .. New_Length) := EA (J .. Old_Length);
-          end if;
-       end;
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Container.Last := No_Index + Index_Type'Base (New_Length);
- 
-       else
-          Container.Last :=
-            Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-       end if;
-    end Insert_Space;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Vector) return Boolean is
-    begin
-       return Last_Index (Container) < Index_Type'First;
-    end Is_Empty;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Vector) return Element_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "Container is empty";
-       else
-          return Get_Element (Container, Length (Container));
-       end if;
-    end Last_Element;
- 
-    ----------------
-    -- Last_Index --
-    ----------------
- 
-    function Last_Index (Container : Vector) return Extended_Index is
-    begin
-       return Container.Last;
-    end Last_Index;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Vector) return Capacity_Range is
-       L : constant Int := Int (Container.Last);
-       F : constant Int := Int (Index_Type'First);
-       N : constant Int'Base := L - F + 1;
- 
-    begin
-       return Capacity_Range (N);
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Vector; Source : in out Vector) is
-       LS : constant Capacity_Range := Length (Source);
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Bounded and then Target.Capacity < LS then
-          raise Constraint_Error;
-       end if;
- 
-       Clear (Target);
-       Append (Target, Source);
-       Clear (Source);
-    end Move;
- 
-    ------------
-    -- Prepend --
-    ------------
- 
-    procedure Prepend (Container : in out Vector; New_Item : Vector) is
-    begin
-       Insert (Container, Index_Type'First, New_Item);
-    end Prepend;
- 
-    procedure Prepend (Container : in out Vector; New_Item : Element_Type) is
-    begin
-       Prepend (Container, New_Item, 1);
-    end Prepend;
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       Insert (Container, Index_Type'First, New_Item, Count);
-    end Prepend;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : not null access Vector;
-       Index     : Index_Type) return not null access Element_Type
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (Index) - Int (No_Index);
-          I  : constant Capacity_Range := Capacity_Range (II);
- 
-       begin
-          if Container.Elements_Ptr = null then
-             return Reference (Container.Elements (I)'Access);
-          else
-             return Reference (Container.Elements_Ptr (I)'Access);
-          end if;
-       end;
-    end Reference;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (Index) - Int (No_Index);
-          I  : constant Capacity_Range := Capacity_Range (II);
- 
-       begin
-          Elems (Container) (I) := H (New_Item);
-       end;
-    end Replace_Element;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Capacity_Range)
-    is
-    begin
-       if Bounded then
-          if Capacity > Container.Capacity then
-             raise Constraint_Error with "Capacity is out of range";
-          end if;
- 
-       else
-          if Capacity > Current_Capacity (Container) then
-             declare
-                New_Elements : constant Elements_Array_Ptr :=
-                                 new Elements_Array (1 .. Capacity);
-                L            : constant Capacity_Range := Length (Container);
- 
-             begin
-                New_Elements (1 .. L) := Elemsc (Container) (1 .. L);
-                Free (Container.Elements_Ptr);
-                Container.Elements_Ptr := New_Elements;
-             end;
-          end if;
-       end if;
-    end Reserve_Capacity;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out Vector) is
-    begin
-       if Length (Container) <= 1 then
-          return;
-       end if;
- 
-       declare
-          I : Capacity_Range;
-          J : Capacity_Range;
-          E : Elements_Array renames
-                Elems (Container) (1 .. Length (Container));
- 
-       begin
-          I := 1;
-          J := Length (Container);
-          while I < J loop
-             declare
-                EI : constant Holder := E (I);
- 
-             begin
-                E (I) := E (J);
-                E (J) := EI;
-             end;
- 
-             I := I + 1;
-             J := J - 1;
-          end loop;
-       end;
-    end Reverse_Elements;
- 
-    ------------------------
-    -- Reverse_Find_Index --
-    ------------------------
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    is
-       Last : Index_Type'Base;
-       K    : Count_Type'Base;
- 
-    begin
-       if Index > Last_Index (Container) then
-          Last := Last_Index (Container);
-       else
-          Last := Index;
-       end if;
- 
-       K := Capacity_Range (Int (Last) - Int (No_Index));
-       for Indx in reverse Index_Type'First .. Last loop
-          if Get_Element (Container, K) = Item then
-             return Indx;
-          end if;
- 
-          K := K - 1;
-       end loop;
- 
-       return No_Index;
-    end Reverse_Find_Index;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out Vector;
-       I         : Index_Type;
-       J         : Index_Type)
-    is
-    begin
-       if I > Container.Last then
-          raise Constraint_Error with "I index is out of range";
-       end if;
- 
-       if J > Container.Last then
-          raise Constraint_Error with "J index is out of range";
-       end if;
- 
-       if I = J then
-          return;
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (I) - Int (No_Index);
-          JJ : constant Int'Base := Int (J) - Int (No_Index);
- 
-          EI : Holder renames Elems (Container) (Capacity_Range (II));
-          EJ : Holder renames Elems (Container) (Capacity_Range (JJ));
- 
-          EI_Copy : constant Holder := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    --------------------
-    -- To_Array_Index --
-    --------------------
- 
-    function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base is
-       Offset : Count_Type'Base;
- 
-    begin
-       --  We know that
-       --    Index >= Index_Type'First
-       --  hence we also know that
-       --    Index - Index_Type'First >= 0
- 
-       --  The issue is that even though 0 is guaranteed to be a value in the
-       --  type Index_Type'Base, there's no guarantee that the difference is a
-       --  value in that type. To prevent overflow we use the wider of
-       --  Count_Type'Base and Index_Type'Base to perform intermediate
-       --  calculations.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Offset := Count_Type'Base (Index - Index_Type'First);
- 
-       else
-          Offset := Count_Type'Base (Index) -
-                      Count_Type'Base (Index_Type'First);
-       end if;
- 
-       --  The array index subtype for all container element arrays always
-       --  starts with 1.
- 
-       return 1 + Offset;
-    end To_Array_Index;
- 
-    ---------------
-    -- To_Vector --
-    ---------------
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Capacity_Range) return Vector
-    is
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       declare
-          First       : constant Int := Int (Index_Type'First);
-          Last_As_Int : constant Int'Base := First + Int (Length) - 1;
-          Last        : Index_Type;
- 
-       begin
-          if Last_As_Int > Index_Type'Pos (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";  -- ???
-          end if;
- 
-          Last := Index_Type (Last_As_Int);
- 
-          return
-            (Capacity     => Length,
-             Last         => Last,
-             Elements_Ptr => <>,
-             Elements     => [others => H (New_Item)]);
-       end;
-    end To_Vector;
- 
- end Ada.Containers.Formal_Indefinite_Vectors;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cfinve.ads gcc-13.1.0/gcc/ada/libgnat/a-cfinve.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cfinve.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cfinve.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2014-2023, 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 --
***************
*** 29,985 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- --  Similar to Ada.Containers.Formal_Vectors. The main difference is that
- --  Element_Type may be indefinite (but not an unconstrained array).
- 
- with Ada.Containers.Bounded_Holders;
- with Ada.Containers.Functional_Vectors;
- 
  generic
!    type Index_Type is range <>;
!    type Element_Type (<>) is private;
!    with function "=" (Left, Right : Element_Type) return Boolean is <>;
!    Max_Size_In_Storage_Elements : Natural;
!    --  Maximum size of Vector elements in bytes. This has the same meaning as
!    --  in Ada.Containers.Bounded_Holders, with the same restrictions. Note that
!    --  setting this too small can lead to erroneous execution; see comments in
!    --  Ada.Containers.Bounded_Holders. If Element_Type is class-wide, it is the
!    --  responsibility of clients to calculate the maximum size of all types in
!    --  the class.
! 
!    Bounded : Boolean := True;
!    --  If True, the containers are bounded; the initial capacity is the maximum
!    --  size, and heap allocation will be avoided. If False, the containers can
!    --  grow via heap allocation.
! 
! package Ada.Containers.Formal_Indefinite_Vectors with
!   SPARK_Mode => On
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    subtype Extended_Index is Index_Type'Base
!      range Index_Type'First - 1 ..
!            Index_Type'Min (Index_Type'Base'Last - 1, Index_Type'Last) + 1;
! 
!    No_Index : constant Extended_Index := Extended_Index'First;
! 
!    Last_Count : constant Count_Type :=
!      (if Index_Type'Last < Index_Type'First then
!          0
!       elsif Index_Type'Last < -1
!         or else Index_Type'Pos (Index_Type'First) >
!                 Index_Type'Pos (Index_Type'Last) - Count_Type'Last
!       then
!          Index_Type'Pos (Index_Type'Last) -
!            Index_Type'Pos (Index_Type'First) + 1
!       else
!          Count_Type'Last);
!    --  Maximal capacity of any vector. It is the minimum of the size of the
!    --  index range and the last possible Count_Type.
! 
!    subtype Capacity_Range is Count_Type range 0 .. Last_Count;
! 
!    type Vector (Capacity : Capacity_Range) is limited private with
!      Default_Initial_Condition => Is_Empty (Vector);
!    --  In the bounded case, Capacity is the capacity of the container, which
!    --  never changes. In the unbounded case, Capacity is the initial capacity
!    --  of the container, and operations such as Reserve_Capacity and Append can
!    --  increase the capacity. The capacity never shrinks, except in the case of
!    --  Clear.
!    --
!    --  Note that all objects of type Vector are constrained, including in the
!    --  unbounded case; you can't assign from one object to another if the
!    --  Capacity is different.
! 
!    function Length (Container : Vector) return Capacity_Range with
!      Global => null,
!      Post   => Length'Result <= Capacity (Container);
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
! 
!       package M is new Ada.Containers.Functional_Vectors
!         (Index_Type   => Index_Type,
!          Element_Type => Element_Type);
! 
!       function "="
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."=";
! 
!       function "<"
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."<";
! 
!       function "<="
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."<=";
! 
!       function M_Elements_In_Union
!         (Container : M.Sequence;
!          Left      : M.Sequence;
!          Right     : M.Sequence) return Boolean
!       --  The elements of Container are contained in either Left or Right
!       with
!         Global => null,
!         Post   =>
!           M_Elements_In_Union'Result =
!             (for all I in Index_Type'First .. M.Last (Container) =>
!               (for some J in Index_Type'First .. M.Last (Left) =>
!                 Element (Container, I) = Element (Left, J))
!                   or (for some J in Index_Type'First .. M.Last (Right) =>
!                        Element (Container, I) = Element (Right, J)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_In_Union);
! 
!       function M_Elements_Included
!         (Left  : M.Sequence;
!          L_Fst : Index_Type := Index_Type'First;
!          L_Lst : Extended_Index;
!          Right : M.Sequence;
!          R_Fst : Index_Type := Index_Type'First;
!          R_Lst : Extended_Index) return Boolean
!       --  The elements of the slice from L_Fst to L_Lst in Left are contained
!       --  in the slide from R_Fst to R_Lst in Right.
!       with
!         Global => null,
!         Pre    => L_Lst <= M.Last (Left) and R_Lst <= M.Last (Right),
!         Post   =>
!           M_Elements_Included'Result =
!             (for all I in L_Fst .. L_Lst =>
!               (for some J in R_Fst .. R_Lst =>
!                 Element (Left, I) = Element (Right, J)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Included);
! 
!       function M_Elements_Reversed
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean
!       --  Right is Left in reverse order
!       with
!         Global => null,
!         Post   =>
!           M_Elements_Reversed'Result =
!             (M.Length (Left) = M.Length (Right)
!               and (for all I in Index_Type'First .. M.Last (Left) =>
!                     Element (Left, I) =
!                       Element (Right, M.Last (Left) - I + 1))
!               and (for all I in Index_Type'First .. M.Last (Right) =>
!                     Element (Right, I) =
!                       Element (Left, M.Last (Left) - I + 1)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Reversed);
! 
!       function M_Elements_Swapped
!         (Left  : M.Sequence;
!          Right : M.Sequence;
!          X     : Index_Type;
!          Y     : Index_Type) return Boolean
!       --  Elements stored at X and Y are reversed in Left and Right
!       with
!         Global => null,
!         Pre    => X <= M.Last (Left) and Y <= M.Last (Left),
!         Post   =>
!           M_Elements_Swapped'Result =
!             (M.Length (Left) = M.Length (Right)
!               and Element (Left, X) = Element (Right, Y)
!               and Element (Left, Y) = Element (Right, X)
!               and M.Equal_Except (Left, Right, X, Y));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Swapped);
! 
!       function Model (Container : Vector) return M.Sequence with
!       --  The high-level model of a vector is a sequence of elements. The
!       --  sequence really is similar to the vector itself. However, it is not
!       --  limited which allows usage of 'Old and 'Loop_Entry attributes.
! 
!         Ghost,
!         Global => null,
!         Post   => M.Length (Model'Result) = Length (Container);
! 
!       function Element
!         (S : M.Sequence;
!          I : Index_Type) return Element_Type renames M.Get;
!       --  To improve readability of contracts, we rename the function used to
!       --  access an element in the model to Element.
! 
!    end Formal_Model;
!    use Formal_Model;
! 
!    function Empty_Vector return Vector with
!      Global => null,
!      Post   => Length (Empty_Vector'Result) = 0;
! 
!    function "=" (Left, Right : Vector) return Boolean with
!      Global => null,
!      Post   => "="'Result = (Model (Left) = Model (Right));
! 
!    function To_Vector
!      (New_Item : Element_Type;
!       Length   : Capacity_Range) return Vector
!    with
!      Global => null,
!      Post   =>
!        Formal_Indefinite_Vectors.Length (To_Vector'Result) = Length
!          and M.Constant_Range
!                (Container => Model (To_Vector'Result),
!                 Fst       => Index_Type'First,
!                 Lst       => Last_Index (To_Vector'Result),
!                 Item      => New_Item);
! 
!    function Capacity (Container : Vector) return Capacity_Range with
!      Global => null,
!      Post   =>
!        Capacity'Result =
!          (if Bounded then
!              Container.Capacity
!           else
!              Capacity_Range'Last);
!    pragma Annotate (GNATprove, Inline_For_Proof, Capacity);
! 
!    procedure Reserve_Capacity
!      (Container : in out Vector;
!       Capacity  : Capacity_Range)
!    with
!      Global => null,
!      Pre    => (if Bounded then Capacity <= Container.Capacity),
!      Post   => Model (Container) = Model (Container)'Old;
! 
!    function Is_Empty (Container : Vector) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
! 
!    procedure Clear (Container : in out Vector) with
!      Global => null,
!      Post   => Length (Container) = 0;
!    --  Note that this reclaims storage in the unbounded case. You need to call
!    --  this before a container goes out of scope in order to avoid storage
!    --  leaks. In addition, "X := ..." can leak unless you Clear(X) first.
! 
!    procedure Assign (Target : in out Vector; Source : Vector) with
!      Global => null,
!      Pre    => (if Bounded then Length (Source) <= Target.Capacity),
!      Post   => Model (Target) = Model (Source);
! 
!    function Copy
!      (Source   : Vector;
!       Capacity : Capacity_Range := 0) return Vector
!    with
!      Global => null,
!      Pre    => (if Bounded then (Capacity = 0 or Length (Source) <= Capacity)),
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Length (Source)
!               else
!                  Copy'Result.Capacity = Capacity);
! 
!    procedure Move (Target : in out Vector; Source : in out Vector)
!    with
!      Global => null,
!      Pre    => (if Bounded then Length (Source) <= Capacity (Target)),
!      Post   => Model (Target) = Model (Source)'Old and Length (Source) = 0;
! 
!    function Element
!      (Container : Vector;
!       Index     : Index_Type) return Element_Type
!    with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   => Element'Result = Element (Model (Container), Index);
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out Vector;
!       Index     : Index_Type;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old
! 
!          --  Container now has New_Item at index Index
! 
!          and Element (Model (Container), Index) = New_Item
! 
!          --  All other elements are preserved
! 
!          and M.Equal_Except
!                (Left     => Model (Container)'Old,
!                 Right    => Model (Container),
!                 Position => Index);
! 
!    function At_End (E : access constant Vector) return access constant Vector
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function At_End
!      (E : access constant Element_Type) return access constant Element_Type
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function Constant_Reference
!      (Container : aliased Vector;
!       Index     : Index_Type) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!          Constant_Reference'Result.all = Element (Model (Container), Index);
! 
!    function Reference
!      (Container : not null access Vector;
!       Index     : Index_Type) return not null access Element_Type
!    with
!      Global => null,
!      Pre    =>
!       Index in First_Index (Container.all) .. Last_Index (Container.all),
!      Post   =>
!       Length (Container.all) = Length (At_End (Container).all)
! 
!          --  Container will have Result.all at index Index
! 
!          and At_End (Reference'Result).all =
!            Element (Model (At_End (Container).all), Index)
! 
!          --  All other elements are preserved
! 
!          and M.Equal_Except
!                (Left     => Model (Container.all),
!                 Right    => Model (At_End (Container).all),
!                 Position => Index);
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Extended_Index;
!       New_Item  : Vector)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) <= Capacity (Container) - Length (New_Item)
!          and (Before in Index_Type'First .. Last_Index (Container)
!                or (Before /= No_Index
!                     and then Before - 1 = Last_Index (Container))),
!      Post   =>
!        Length (Container) = Length (Container)'Old + Length (New_Item)
! 
!          --  Elements located before Before in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Before - 1)
! 
!          --  Elements of New_Item are inserted at position Before
! 
!          and (if Length (New_Item) > 0 then
!                  M.Range_Shifted
!                    (Left   => Model (New_Item),
!                      Right  => Model (Container),
!                      Fst    => Index_Type'First,
!                      Lst    => Last_Index (New_Item),
!                      Offset => Count_Type (Before - Index_Type'First)))
! 
!          --  Elements located after Before in Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Before,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Length (New_Item));
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Extended_Index;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Capacity (Container)
!          and then (Before in Index_Type'First .. Last_Index (Container) + 1),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Elements located before Before in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Before - 1)
! 
!          --  Container now has New_Item at index Before
! 
!          and Element (Model (Container), Before) = New_Item
! 
!          --  Elements located after Before in Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Before,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => 1);
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Extended_Index;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) <= Capacity (Container) - Count
!          and (Before in Index_Type'First .. Last_Index (Container)
!                or (Before /= No_Index
!                     and then Before - 1 = Last_Index (Container))),
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  Elements located before Before in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Before - 1)
! 
!          --  New_Item is inserted Count times at position Before
! 
!          and (if Count > 0 then
!                  M.Constant_Range
!                    (Container => Model (Container),
!                      Fst       => Before,
!                      Lst       => Before + Index_Type'Base (Count - 1),
!                      Item      => New_Item))
! 
!          --  Elements located after Before in Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Before,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Count);
! 
!    procedure Prepend (Container : in out Vector; New_Item : Vector) with
!      Global => null,
!      Pre    => Length (Container) <= Capacity (Container) - Length (New_Item),
!      Post   =>
!        Length (Container) = Length (Container)'Old + Length (New_Item)
! 
!          --  Elements of New_Item are inserted at the beginning of Container
! 
!          and M.Range_Equal
!                (Left  => Model (New_Item),
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Last_Index (New_Item))
! 
!          --  Elements of Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Length (New_Item));
! 
!    procedure Prepend (Container : in out Vector; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Capacity (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Container now has New_Item at Index_Type'First
! 
!          and Element (Model (Container), Index_Type'First) = New_Item
! 
!          --  Elements of Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => 1);
! 
!    procedure Prepend
!      (Container : in out Vector;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    => Length (Container) <= Capacity (Container) - Count,
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  New_Item is inserted Count times at the beginning of Container
! 
!          and M.Constant_Range
!                (Container => Model (Container),
!                 Fst       => Index_Type'First,
!                 Lst       => Index_Type'First + Index_Type'Base (Count - 1),
!                 Item      => New_Item)
! 
!          --  Elements of Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Count);
! 
!    procedure Append (Container : in out Vector; New_Item : Vector) with
!      Global         => null,
!      Pre            =>
!        Length (Container) <= Capacity (Container) - Length (New_Item),
!      Post           =>
!        Length (Container) = Length (Container)'Old + Length (New_Item)
! 
!          --  The elements of Container are preserved
! 
!          and Model (Container)'Old <= Model (Container)
! 
!          --  Elements of New_Item are inserted at the end of Container
! 
!          and (if Length (New_Item) > 0 then
!                  M.Range_Shifted
!                    (Left   => Model (New_Item),
!                     Right  => Model (Container),
!                     Fst    => Index_Type'First,
!                     Lst    => Last_Index (New_Item),
!                     Offset =>
!                       Count_Type
!                         (Last_Index (Container)'Old - Index_Type'First + 1)));
! 
!    procedure Append (Container : in out Vector; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Capacity (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Elements of Container are preserved
! 
!          and Model (Container)'Old < Model (Container)
! 
!          --  Container now has New_Item at the end of Container
! 
!          and Element
!                (Model (Container), Last_Index (Container)'Old + 1) = New_Item;
! 
!    procedure Append
!      (Container : in out Vector;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    => Length (Container) <= Capacity (Container) - Count,
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  Elements of Container are preserved
! 
!          and Model (Container)'Old <= Model (Container)
! 
!          --  New_Item is inserted Count times at the end of Container
! 
!          and (if Count > 0 then
!                  M.Constant_Range
!                    (Container => Model (Container),
!                      Fst       => Last_Index (Container)'Old + 1,
!                      Lst       =>
!                        Last_Index (Container)'Old + Index_Type'Base (Count),
!                      Item      => New_Item));
! 
!    procedure Delete (Container : in out Vector; Index : Extended_Index) with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Elements located before Index in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Index - 1)
! 
!          --  Elements located after Index in Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container),
!                 Right  => Model (Container)'Old,
!                 Fst    => Index,
!                 Lst    => Last_Index (Container),
!                 Offset => 1);
! 
!    procedure Delete
!      (Container : in out Vector;
!       Index     : Extended_Index;
!       Count     : Count_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Index in First_Index (Container) .. Last_Index (Container),
!      Post           =>
!        Length (Container) in
!          Length (Container)'Old - Count .. Length (Container)'Old
! 
!          --  The elements of Container located before Index are preserved.
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Index - 1),
! 
!      Contract_Cases =>
! 
!        --  All the elements after Position have been erased
! 
!        (Length (Container) - Count <= Count_Type (Index - Index_Type'First) =>
!           Length (Container) = Count_Type (Index - Index_Type'First),
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  Other elements are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container),
!                    Right  => Model (Container)'Old,
!                    Fst    => Index,
!                    Lst    => Last_Index (Container),
!                    Offset => Count));
! 
!    procedure Delete_First (Container : in out Vector) with
!      Global => null,
!      Pre    => Length (Container) > 0,
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Elements of Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container),
!                 Right  => Model (Container)'Old,
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container),
!                 Offset => 1);
! 
!    procedure Delete_First (Container : in out Vector; Count : Count_Type) with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  All the elements of Container have been erased
! 
!        (Length (Container) <= Count => Length (Container) = 0,
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  Elements of Container are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container),
!                    Right  => Model (Container)'Old,
!                    Fst    => Index_Type'First,
!                    Lst    => Last_Index (Container),
!                    Offset => Count));
! 
!    procedure Delete_Last (Container : in out Vector) with
!      Global => null,
!      Pre    => Length (Container) > 0,
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Elements of Container are preserved
! 
!          and Model (Container) < Model (Container)'Old;
! 
!    procedure Delete_Last (Container : in out Vector; Count : Count_Type) with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  All the elements after Position have been erased
! 
!        (Length (Container) <= Count => Length (Container) = 0,
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  The elements of Container are preserved
! 
!             and Model (Container) <= Model (Container)'Old);
! 
!    procedure Reverse_Elements (Container : in out Vector) with
!      Global => null,
!      Post   => M_Elements_Reversed (Model (Container)'Old, Model (Container));
! 
!    procedure Swap
!      (Container : in out Vector;
!       I         : Index_Type;
!       J         : Index_Type)
!    with
!      Global => null,
!      Pre    =>
!        I in First_Index (Container) .. Last_Index (Container)
!          and then J in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!        M_Elements_Swapped (Model (Container)'Old, Model (Container), I, J);
! 
!    function First_Index (Container : Vector) return Index_Type with
!      Global => null,
!      Post   => First_Index'Result = Index_Type'First;
!    pragma Annotate (GNATprove, Inline_For_Proof, First_Index);
! 
!    function First_Element (Container : Vector) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        First_Element'Result = Element (Model (Container), Index_Type'First);
!    pragma Annotate (GNATprove, Inline_For_Proof, First_Element);
! 
!    function Last_Index (Container : Vector) return Extended_Index with
!      Global => null,
!      Post   => Last_Index'Result = M.Last (Model (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Last_Index);
! 
!    function Last_Element (Container : Vector) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Last_Element'Result =
!          Element (Model (Container), Last_Index (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Last_Element);
! 
!    function Find_Index
!      (Container : Vector;
!       Item      : Element_Type;
!       Index     : Index_Type := Index_Type'First) return Extended_Index
!    with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container after Index, Find_Index
!        --  returns No_Index.
! 
!        (Index > Last_Index (Container)
!          or else not M.Contains
!                        (Container => Model (Container),
!                         Fst       => Index,
!                         Lst       => Last_Index (Container),
!                         Item      => Item)
!         =>
!           Find_Index'Result = No_Index,
! 
!         --  Otherwise, Find_Index returns a valid index greater than Index
! 
!         others =>
!            Find_Index'Result in Index .. Last_Index (Container)
! 
!             --  The element at this index in Container is Item
! 
!             and Element (Model (Container), Find_Index'Result) = Item
! 
!             --  It is the first occurrence of Item after Index in Container
! 
!             and not M.Contains
!                       (Container => Model (Container),
!                        Fst       => Index,
!                        Lst       => Find_Index'Result - 1,
!                        Item      => Item));
! 
!    function Reverse_Find_Index
!      (Container : Vector;
!       Item      : Element_Type;
!       Index     : Index_Type := Index_Type'Last) return Extended_Index
!    with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container before Index,
!        --  Reverse_Find_Index returns No_Index.
! 
!        (not M.Contains
!               (Container => Model (Container),
!                Fst       => Index_Type'First,
!                Lst       => (if Index <= Last_Index (Container) then Index
!                              else Last_Index (Container)),
!                Item      => Item)
!         =>
!           Reverse_Find_Index'Result = No_Index,
! 
!         --  Otherwise, Reverse_Find_Index returns a valid index smaller than
!         --  Index
! 
!         others =>
!            Reverse_Find_Index'Result in Index_Type'First .. Index
!             and Reverse_Find_Index'Result <= Last_Index (Container)
! 
!             --  The element at this index in Container is Item
! 
!             and Element (Model (Container), Reverse_Find_Index'Result) = Item
! 
!             --  It is the last occurrence of Item before Index in Container
! 
!             and not M.Contains
!                       (Container => Model (Container),
!                        Fst       => Reverse_Find_Index'Result + 1,
!                        Lst       =>
!                          (if Index <= Last_Index (Container) then
!                              Index
!                           else
!                              Last_Index (Container)),
!                        Item      => Item));
! 
!    function Contains
!      (Container : Vector;
!       Item      : Element_Type) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Contains'Result =
!          M.Contains
!            (Container => Model (Container),
!             Fst       => Index_Type'First,
!             Lst       => Last_Index (Container),
!             Item      => Item);
! 
!    function Has_Element
!      (Container : Vector;
!       Position  : Extended_Index) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result =
!          (Position in Index_Type'First .. Last_Index (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
!    generic
!       with function "<" (Left, Right : Element_Type) return Boolean is <>;
!    package Generic_Sorting with SPARK_Mode is
! 
!       package Formal_Model with Ghost is
! 
!          function M_Elements_Sorted (Container : M.Sequence) return Boolean
!          with
!            Global => null,
!            Post   =>
!              M_Elements_Sorted'Result =
!                (for all I in Index_Type'First .. M.Last (Container) =>
!                  (for all J in I .. M.Last (Container) =>
!                    Element (Container, I) = Element (Container, J)
!                      or Element (Container, I) < Element (Container, J)));
!          pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Sorted);
! 
!       end Formal_Model;
!       use Formal_Model;
! 
!       function Is_Sorted (Container : Vector) return Boolean with
!         Global => null,
!         Post   => Is_Sorted'Result = M_Elements_Sorted (Model (Container));
! 
!       procedure Sort (Container : in out Vector) with
!         Global => null,
!         Post   =>
!           Length (Container) = Length (Container)'Old
!             and M_Elements_Sorted (Model (Container))
!             and M_Elements_Included
!                   (Left  => Model (Container)'Old,
!                    L_Lst => Last_Index (Container),
!                    Right => Model (Container),
!                    R_Lst => Last_Index (Container))
!             and M_Elements_Included
!                   (Left  => Model (Container),
!                    L_Lst => Last_Index (Container),
!                    Right => Model (Container)'Old,
!                    R_Lst => Last_Index (Container));
! 
!       procedure Merge (Target : in out Vector; Source : in out Vector) with
!       --  Target and Source should not be aliased
!         Global => null,
!         Pre    => Length (Source) <= Capacity (Target) - Length (Target),
!         Post   =>
!           Length (Target) = Length (Target)'Old + Length (Source)'Old
!             and Length (Source) = 0
!             and (if M_Elements_Sorted (Model (Target)'Old)
!                    and M_Elements_Sorted (Model (Source)'Old)
!                  then
!                     M_Elements_Sorted (Model (Target)))
!             and M_Elements_Included
!                   (Left  => Model (Target)'Old,
!                    L_Lst => Last_Index (Target)'Old,
!                    Right => Model (Target),
!                    R_Lst => Last_Index (Target))
!             and M_Elements_Included
!                   (Left  => Model (Source)'Old,
!                    L_Lst => Last_Index (Source)'Old,
!                    Right => Model (Target),
!                    R_Lst => Last_Index (Target))
!             and M_Elements_In_Union
!                   (Model (Target),
!                    Model (Source)'Old,
!                    Model (Target)'Old);
!    end Generic_Sorting;
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    pragma Inline (First_Index);
!    pragma Inline (Last_Index);
!    pragma Inline (Element);
!    pragma Inline (First_Element);
!    pragma Inline (Last_Element);
!    pragma Inline (Replace_Element);
!    pragma Inline (Contains);
! 
!    --  The implementation method is to instantiate Bounded_Holders to get a
!    --  definite type for Element_Type.
! 
!    package Holders is new Bounded_Holders
!      (Element_Type, Max_Size_In_Storage_Elements, "=");
!    use Holders;
! 
!    subtype Array_Index is Capacity_Range range 1 .. Capacity_Range'Last;
!    type Elements_Array is array (Array_Index range <>) of aliased Holder;
!    function "=" (L, R : Elements_Array) return Boolean is abstract;
! 
!    type Elements_Array_Ptr is access all Elements_Array;
! 
!    type Vector (Capacity : Capacity_Range) is limited record
! 
!       --  In the bounded case, the elements are stored in Elements. In the
!       --  unbounded case, the elements are initially stored in Elements, until
!       --  we run out of room, then we switch to Elements_Ptr.
! 
!       Last         : Extended_Index := No_Index;
!       Elements_Ptr : Elements_Array_Ptr := null;
!       Elements     : aliased Elements_Array (1 .. Capacity);
!    end record;
! 
!    --  The primary reason Vector is limited is that in the unbounded case, once
!    --  Elements_Ptr is in use, assignment statements won't work. "X := Y;" will
!    --  cause X and Y to share state; that is, X.Elements_Ptr = Y.Elements_Ptr,
!    --  so for example "Append (X, ...);" will modify BOTH X and Y. That would
!    --  allow SPARK to "prove" things that are false. We could fix that by
!    --  making Vector a controlled type, and override Adjust to make a deep
!    --  copy, but finalization is not allowed in SPARK.
!    --
!    --  Note that (unfortunately) this means that 'Old and 'Loop_Entry are not
!    --  allowed on Vectors.
  
!    function Empty_Vector return Vector is
!      ((Capacity => 0, others => <>));
  
  end Ada.Containers.Formal_Indefinite_Vectors;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Indefinite_Vectors with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Indefinite_Vectors;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cforma.adb gcc-13.1.0/gcc/ada/libgnat/a-cforma.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cforma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cforma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1229 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . F O R M A L _ O R D E R E D _ M A P S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
- pragma Elaborate_All
-   (Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Ordered_Maps with
-   SPARK_Mode => Off
- is
- 
-    -----------------------------
-    -- Node Access Subprograms --
-    -----------------------------
- 
-    --  These subprograms provide a functional interface to access fields
-    --  of a node, and a procedural interface for modifying these values.
- 
-    function Color
-      (Node : Node_Type) return Ada.Containers.Red_Black_Trees.Color_Type;
-    pragma Inline (Color);
- 
-    function Left_Son (Node : Node_Type) return Count_Type;
-    pragma Inline (Left_Son);
- 
-    function Parent (Node : Node_Type) return Count_Type;
-    pragma Inline (Parent);
- 
-    function Right_Son (Node : Node_Type) return Count_Type;
-    pragma Inline (Right_Son);
- 
-    procedure Set_Color
-      (Node  : in out Node_Type;
-       Color : Ada.Containers.Red_Black_Trees.Color_Type);
-    pragma Inline (Set_Color);
- 
-    procedure Set_Left (Node : in out Node_Type; Left : Count_Type);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : in out Node_Type; Right : Count_Type);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Parent (Node : in out Node_Type; Parent : Count_Type);
-    pragma Inline (Set_Parent);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  All need comments ???
- 
-    generic
-       with procedure Set_Element (Node : in out Node_Type);
-    procedure Generic_Allocate
-      (Tree : in out Tree_Types.Tree_Type'Class;
-       Node : out Count_Type);
- 
-    procedure Free (Tree : in out Map; X : Count_Type);
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Type) return Boolean;
-    pragma Inline (Is_Greater_Key_Node);
- 
-    function Is_Less_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Type) return Boolean;
-    pragma Inline (Is_Less_Key_Node);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Bounded_Operations
-        (Tree_Types => Tree_Types,
-         Left       => Left_Son,
-         Right      => Right_Son);
- 
-    use Tree_Operations;
- 
-    package Key_Ops is
-      new Red_Black_Trees.Generic_Bounded_Keys
-        (Tree_Operations     => Tree_Operations,
-         Key_Type            => Key_Type,
-         Is_Less_Key_Node    => Is_Less_Key_Node,
-         Is_Greater_Key_Node => Is_Greater_Key_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Map) return Boolean is
-       Lst   : Count_Type;
-       Node  : Count_Type;
-       ENode : Count_Type;
- 
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       if Is_Empty (Left) then
-          return True;
-       end if;
- 
-       Lst := Next (Left.Content, Last (Left).Node);
- 
-       Node := First (Left).Node;
-       while Node /= Lst loop
-          ENode := Find (Right, Left.Content.Nodes (Node).Key).Node;
- 
-          if ENode = 0 or else
-            Left.Content.Nodes (Node).Element /=
-            Right.Content.Nodes (ENode).Element
-          then
-             return False;
-          end if;
- 
-          Node := Next (Left.Content, Node);
-       end loop;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Map; Source : Map) is
-       procedure Append_Element (Source_Node : Count_Type);
- 
-       procedure Append_Elements is
-          new Tree_Operations.Generic_Iteration (Append_Element);
- 
-       --------------------
-       -- Append_Element --
-       --------------------
- 
-       procedure Append_Element (Source_Node : Count_Type) is
-          SN : Node_Type renames Source.Content.Nodes (Source_Node);
- 
-          procedure Set_Element (Node : in out Node_Type);
-          pragma Inline (Set_Element);
- 
-          function New_Node return Count_Type;
-          pragma Inline (New_Node);
- 
-          procedure Insert_Post is new Key_Ops.Generic_Insert_Post (New_Node);
- 
-          procedure Unconditional_Insert_Sans_Hint is
-            new Key_Ops.Generic_Unconditional_Insert (Insert_Post);
- 
-          procedure Unconditional_Insert_Avec_Hint is
-            new Key_Ops.Generic_Unconditional_Insert_With_Hint
-              (Insert_Post,
-               Unconditional_Insert_Sans_Hint);
- 
-          procedure Allocate is new Generic_Allocate (Set_Element);
- 
-          --------------
-          -- New_Node --
-          --------------
- 
-          function New_Node return Count_Type is
-             Result : Count_Type;
-          begin
-             Allocate (Target.Content, Result);
-             return Result;
-          end New_Node;
- 
-          -----------------
-          -- Set_Element --
-          -----------------
- 
-          procedure Set_Element (Node : in out Node_Type) is
-          begin
-             Node.Key := SN.Key;
-             Node.Element := SN.Element;
-          end Set_Element;
- 
-          Target_Node : Count_Type;
- 
-       --  Start of processing for Append_Element
- 
-       begin
-          Unconditional_Insert_Avec_Hint
-            (Tree  => Target.Content,
-             Hint  => 0,
-             Key   => SN.Key,
-             Node  => Target_Node);
-       end Append_Element;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Storage_Error with "not enough capacity";  -- SE or CE? ???
-       end if;
- 
-       Tree_Operations.Clear_Tree (Target.Content);
-       Append_Elements (Source.Content);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Ceiling (Container.Content, Key);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Map) is
-    begin
-       Tree_Operations.Clear_Tree (Container.Content);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Type) return Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Position  : Cursor) return not null access constant Element_Type
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in function Constant_Reference");
- 
-       return Container.Content.Nodes (Position.Node).Element'Access;
-    end Constant_Reference;
- 
-    function Constant_Reference
-      (Container : aliased Map;
-       Key       : Key_Type) return not null access constant Element_Type
-    is
-       Node : constant Node_Access := Find (Container, Key).Node;
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Container.Content.Nodes (Node).Element'Access;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains (Container : Map; Key : Key_Type) return Boolean is
-    begin
-       return Find (Container, Key) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Map; Capacity : Count_Type := 0) return Map is
-       Node : Count_Type := 1;
-       N    : Count_Type;
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       return Target : Map (Count_Type'Max (Source.Capacity, Capacity)) do
-          if Length (Source) > 0 then
-             Target.Content.Length := Source.Content.Length;
-             Target.Content.Root := Source.Content.Root;
-             Target.Content.First := Source.Content.First;
-             Target.Content.Last := Source.Content.Last;
-             Target.Content.Free := Source.Content.Free;
- 
-             while Node <= Source.Capacity loop
-                Target.Content.Nodes (Node).Element :=
-                  Source.Content.Nodes (Node).Element;
-                Target.Content.Nodes (Node).Key :=
-                  Source.Content.Nodes (Node).Key;
-                Target.Content.Nodes (Node).Parent :=
-                  Source.Content.Nodes (Node).Parent;
-                Target.Content.Nodes (Node).Left :=
-                  Source.Content.Nodes (Node).Left;
-                Target.Content.Nodes (Node).Right :=
-                  Source.Content.Nodes (Node).Right;
-                Target.Content.Nodes (Node).Color :=
-                  Source.Content.Nodes (Node).Color;
-                Target.Content.Nodes (Node).Has_Element :=
-                  Source.Content.Nodes (Node).Has_Element;
-                Node := Node + 1;
-             end loop;
- 
-             while Node <= Target.Capacity loop
-                N := Node;
-                Free (Tree => Target, X => N);
-                Node := Node + 1;
-             end loop;
-          end if;
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Map; Position : in out Cursor) is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of Delete has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "Position cursor of Delete is bad");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Content,
-                                              Position.Node);
-       Free (Container, Position.Node);
-       Position := No_Element;
-    end Delete;
- 
-    procedure Delete (Container : in out Map; Key : Key_Type) is
-       X : constant Node_Access := Key_Ops.Find (Container.Content, Key);
- 
-    begin
-       if X = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-       Free (Container, X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Map) is
-       X : constant Node_Access := First (Container).Node;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Map) is
-       X : constant Node_Access := Last (Container).Node;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end if;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Map; Position : Cursor) return Element_Type is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of function Element has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "Position cursor of function Element is bad");
- 
-       return Container.Content.Nodes (Position.Node).Element;
- 
-    end Element;
- 
-    function Element (Container : Map; Key : Key_Type) return Element_Type is
-       Node : constant Node_Access := Find (Container, Key).Node;
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with "key not in map";
-       end if;
- 
-       return Container.Content.Nodes (Node).Element;
-    end Element;
- 
-    ---------------------
-    -- Equivalent_Keys --
-    ---------------------
- 
-    function Equivalent_Keys (Left, Right : Key_Type) return Boolean is
-    begin
-       if Left < Right
-         or else Right < Left
-       then
-          return False;
-       else
-          return True;
-       end if;
-    end Equivalent_Keys;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Map; Key : Key_Type) is
-       X : constant Node_Access := Key_Ops.Find (Container.Content, Key);
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end if;
-    end Exclude;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Find (Container.Content, Key);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Map) return Cursor is
-    begin
-       if Length (Container) = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Container.Content.First);
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Map) return Element_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Content.Nodes (First (Container).Node).Element;
-    end First_Element;
- 
-    ---------------
-    -- First_Key --
-    ---------------
- 
-    function First_Key (Container : Map) return Key_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Content.Nodes (First (Container).Node).Key;
-    end First_Key;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Map; Key : Key_Type) return Cursor is
-       Node : constant Count_Type := Key_Ops.Floor (Container.Content, Key);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Floor;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : K.Sequence;
-          Key       : Key_Type) return Count_Type
-       is
-       begin
-          for I in 1 .. K.Length (Container) loop
-             if Equivalent_Keys (Key, K.Get (Container, I)) then
-                return I;
-             elsif Key < K.Get (Container, I) then
-                return 0;
-             end if;
-          end loop;
-          return 0;
-       end Find;
- 
-       -------------------------
-       -- K_Bigger_Than_Range --
-       -------------------------
- 
-       function K_Bigger_Than_Range
-         (Container : K.Sequence;
-          Fst       : Positive_Count_Type;
-          Lst       : Count_Type;
-          Key       : Key_Type) return Boolean
-       is
-       begin
-          for I in Fst .. Lst loop
-             if not (K.Get (Container, I) < Key) then
-                return False;
-             end if;
-          end loop;
-          return True;
-       end K_Bigger_Than_Range;
- 
-       ---------------
-       -- K_Is_Find --
-       ---------------
- 
-       function K_Is_Find
-         (Container : K.Sequence;
-          Key       : Key_Type;
-          Position  : Count_Type) return Boolean
-       is
-       begin
-          for I in 1 .. Position - 1 loop
-             if Key < K.Get (Container, I) then
-                return False;
-             end if;
-          end loop;
- 
-          if Position < K.Length (Container) then
-             for I in Position + 1 .. K.Length (Container) loop
-                if K.Get (Container, I) < Key then
-                   return False;
-                end if;
-             end loop;
-          end if;
-          return True;
-       end K_Is_Find;
- 
-       --------------------------
-       -- K_Smaller_Than_Range --
-       --------------------------
- 
-       function K_Smaller_Than_Range
-         (Container : K.Sequence;
-          Fst       : Positive_Count_Type;
-          Lst       : Count_Type;
-          Key       : Key_Type) return Boolean
-       is
-       begin
-          for I in Fst .. Lst loop
-             if not (Key < K.Get (Container, I)) then
-                return False;
-             end if;
-          end loop;
-          return True;
-       end K_Smaller_Than_Range;
- 
-       ----------
-       -- Keys --
-       ----------
- 
-       function Keys (Container : Map) return K.Sequence is
-          Position : Count_Type := Container.Content.First;
-          R        : K.Sequence;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := K.Add (R, Container.Content.Nodes (Position).Key);
-             Position := Tree_Operations.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Keys;
- 
-       ----------------------------
-       -- Lift_Abstraction_Level --
-       ----------------------------
- 
-       procedure Lift_Abstraction_Level (Container : Map) is null;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : Map) return M.Map is
-          Position : Count_Type := Container.Content.First;
-          R        : M.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R :=
-               M.Add
-                 (Container => R,
-                  New_Key   => Container.Content.Nodes (Position).Key,
-                  New_Item  => Container.Content.Nodes (Position).Element);
- 
-             Position := Tree_Operations.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Model;
- 
-       -------------------------
-       -- P_Positions_Shifted --
-       -------------------------
- 
-       function P_Positions_Shifted
-         (Small : P.Map;
-          Big   : P.Map;
-          Cut   : Positive_Count_Type;
-          Count : Count_Type := 1) return Boolean
-       is
-       begin
-          for Cu of Small loop
-             if not P.Has_Key (Big, Cu) then
-                return False;
-             end if;
-          end loop;
- 
-          for Cu of Big loop
-             declare
-                Pos : constant Positive_Count_Type := P.Get (Big, Cu);
- 
-             begin
-                if Pos < Cut then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu)
-                   then
-                      return False;
-                   end if;
- 
-                elsif Pos >= Cut + Count then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu) + Count
-                   then
-                      return False;
-                   end if;
- 
-                else
-                   if P.Has_Key (Small, Cu) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end P_Positions_Shifted;
- 
-       ---------------
-       -- Positions --
-       ---------------
- 
-       function Positions (Container : Map) return P.Map is
-          I        : Count_Type := 1;
-          Position : Count_Type := Container.Content.First;
-          R        : P.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := P.Add (R, (Node => Position), I);
-             pragma Assert (P.Length (R) = I);
-             Position := Tree_Operations.Next (Container.Content, Position);
-             I := I + 1;
-          end loop;
- 
-          return R;
-       end Positions;
- 
-    end Formal_Model;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free
-      (Tree : in out Map;
-       X  : Count_Type)
-    is
-    begin
-       Tree.Content.Nodes (X).Has_Element := False;
-       Tree_Operations.Free (Tree.Content, X);
-    end Free;
- 
-    ----------------------
-    -- Generic_Allocate --
-    ----------------------
- 
-    procedure Generic_Allocate
-      (Tree : in out Tree_Types.Tree_Type'Class;
-       Node : out Count_Type)
-    is
-       procedure Allocate is
-         new Tree_Operations.Generic_Allocate (Set_Element);
-    begin
-       Allocate (Tree, Node);
-       Tree.Nodes (Node).Has_Element := True;
-    end Generic_Allocate;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Container : Map; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return False;
-       end if;
- 
-       return Container.Content.Nodes (Position.Node).Has_Element;
-    end Has_Element;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          declare
-             N : Node_Type renames Container.Content.Nodes (Position.Node);
-          begin
-             N.Key := Key;
-             N.Element := New_Item;
-          end;
-       end if;
-    end Include;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-       function New_Node return Node_Access;
-       --  Comment ???
- 
-       procedure Insert_Post is
-         new Key_Ops.Generic_Insert_Post (New_Node);
- 
-       procedure Insert_Sans_Hint is
-         new Key_Ops.Generic_Conditional_Insert (Insert_Post);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Node_Access is
-          procedure Initialize (Node : in out Node_Type);
-          procedure Allocate_Node is new Generic_Allocate (Initialize);
- 
-          procedure Initialize (Node : in out Node_Type) is
-          begin
-             Node.Key := Key;
-             Node.Element := New_Item;
-          end Initialize;
- 
-          X : Node_Access;
- 
-       begin
-          Allocate_Node (Container.Content, X);
-          return X;
-       end New_Node;
- 
-    --  Start of processing for Insert
- 
-    begin
-       Insert_Sans_Hint
-         (Container.Content,
-          Key,
-          Position.Node,
-          Inserted);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, Key, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          raise Constraint_Error with "key already in map";
-       end if;
-    end Insert;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Map) return Boolean is
-    begin
-       return Length (Container) = 0;
-    end Is_Empty;
- 
-    -------------------------
-    -- Is_Greater_Key_Node --
-    -------------------------
- 
-    function Is_Greater_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Type) return Boolean
-    is
-    begin
-       --  k > node same as node < k
- 
-       return Right.Key < Left;
-    end Is_Greater_Key_Node;
- 
-    ----------------------
-    -- Is_Less_Key_Node --
-    ----------------------
- 
-    function Is_Less_Key_Node
-      (Left  : Key_Type;
-       Right : Node_Type) return Boolean
-    is
-    begin
-       return Left < Right.Key;
-    end Is_Less_Key_Node;
- 
-    ---------
-    -- Key --
-    ---------
- 
-    function Key (Container : Map; Position : Cursor) return Key_Type is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of function Key has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "Position cursor of function Key is bad");
- 
-       return Container.Content.Nodes (Position.Node).Key;
-    end Key;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Map) return Cursor is
-    begin
-       if Length (Container) = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Container.Content.Last);
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Map) return Element_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Content.Nodes (Last (Container).Node).Element;
-    end Last_Element;
- 
-    --------------
-    -- Last_Key --
-    --------------
- 
-    function Last_Key (Container : Map) return Key_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "map is empty";
-       end if;
- 
-       return Container.Content.Nodes (Last (Container).Node).Key;
-    end Last_Key;
- 
-    --------------
-    -- Left_Son --
-    --------------
- 
-    function Left_Son (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Left;
-    end Left_Son;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Container.Content.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Map; Source : in out Map) is
-       NN : Tree_Types.Nodes_Type renames Source.Content.Nodes;
-       X  : Node_Access;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Constraint_Error with  -- ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       loop
-          X := First (Source).Node;
-          exit when X = 0;
- 
-          --  Here we insert a copy of the source element into the target, and
-          --  then delete the element from the source. Another possibility is
-          --  that delete it first (and hang onto its index), then insert it.
-          --  ???
- 
-          Insert (Target, NN (X).Key, NN (X).Element);  -- optimize???
- 
-          Tree_Operations.Delete_Node_Sans_Free (Source.Content, X);
-          Formal_Ordered_Maps.Free (Source, X);
-       end loop;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    procedure Next (Container : Map; Position : in out Cursor) is
-    begin
-       Position := Next (Container, Position);
-    end Next;
- 
-    function Next (Container : Map; Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error;
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Next");
- 
-       return (Node => Tree_Operations.Next (Container.Content, Position.Node));
-    end Next;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    procedure Previous (Container : Map; Position : in out Cursor) is
-    begin
-       Position := Previous (Container, Position);
-    end Previous;
- 
-    function Previous (Container : Map; Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error;
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Count_Type :=
-            Tree_Operations.Previous (Container.Content, Position.Node);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return (Node => Node);
-       end;
-    end Previous;
- 
-    --------------
-    -- Reference --
-    --------------
- 
-    function Reference
-      (Container : not null access Map;
-       Position  : Cursor) return not null access Element_Type
-    is
-    begin
-       if not Has_Element (Container.all, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert
-         (Vet (Container.Content, Position.Node),
-          "bad cursor in function Reference");
- 
-       return Container.Content.Nodes (Position.Node).Element'Access;
-    end Reference;
- 
-    function Reference
-      (Container : not null access Map;
-       Key       : Key_Type) return not null access Element_Type
-    is
-       Node : constant Count_Type := Find (Container.all, Key).Node;
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "no element available because key not in map";
-       end if;
- 
-       return Container.Content.Nodes (Node).Element'Access;
-    end Reference;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace
-      (Container : in out Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       declare
-          Node : constant Node_Access := Key_Ops.Find (Container.Content, Key);
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with "key not in map";
-          end if;
- 
-          declare
-             N : Node_Type renames Container.Content.Nodes (Node);
-          begin
-             N.Key := Key;
-             N.Element := New_Item;
-          end;
-       end;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Map;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor of Replace_Element has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "Position cursor of Replace_Element is bad");
- 
-       Container.Content.Nodes (Position.Node).Element := New_Item;
-    end Replace_Element;
- 
-    ---------------
-    -- Right_Son --
-    ---------------
- 
-    function Right_Son (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Right;
-    end Right_Son;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color (Node  : in out Node_Type; Color : Color_Type) is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : in out Node_Type; Left : Count_Type) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : in out Node_Type; Parent : Count_Type) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : in out Node_Type; Right : Count_Type) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
- end Ada.Containers.Formal_Ordered_Maps;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cforma.ads gcc-13.1.0/gcc/ada/libgnat/a-cforma.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cforma.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cforma.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
***************
*** 29,1150 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- --  This spec is derived from package Ada.Containers.Bounded_Ordered_Maps in
- --  the Ada 2012 RM. The modifications are meant to facilitate formal proofs by
- --  making it easier to express properties, and by making the specification of
- --  this unit compatible with SPARK 2014. Note that the API of this unit may be
- --  subject to incompatible changes as SPARK 2014 evolves.
- 
- --  The modifications are:
- 
- --    A parameter for the container is added to every function reading the
- --    content of a container: Key, Element, Next, Query_Element, Previous,
- --    Has_Element, Iterate, Reverse_Iterate. This change is motivated by the
- --    need to have cursors which are valid on different containers (typically a
- --    container C and its previous version C'Old) for expressing properties,
- --    which is not possible if cursors encapsulate an access to the underlying
- --    container. The operators "<" and ">" that could not be modified that way
- --    have been removed.
- 
- --  Iteration over maps is done using the Iterable aspect, which is SPARK
- --  compatible. "For of" iteration ranges over keys instead of elements.
- 
- with Ada.Containers.Functional_Vectors;
- with Ada.Containers.Functional_Maps;
- private with Ada.Containers.Red_Black_Trees;
- 
  generic
!    type Key_Type is private;
!    type Element_Type is private;
! 
!    with function "<" (Left, Right : Key_Type) return Boolean is <>;
!    with function "=" (Left, Right : Element_Type) return Boolean is <>;
! 
! package Ada.Containers.Formal_Ordered_Maps with
!   SPARK_Mode
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    function Equivalent_Keys (Left, Right : Key_Type) return Boolean with
!      Global => null,
!      Post   =>
!        Equivalent_Keys'Result = (not (Left < Right) and not (Right < Left));
!    pragma Annotate (GNATprove, Inline_For_Proof, Equivalent_Keys);
! 
!    type Map (Capacity : Count_Type) is private with
!      Iterable => (First       => First,
!                   Next        => Next,
!                   Has_Element => Has_Element,
!                   Element     => Key),
!      Default_Initial_Condition => Is_Empty (Map);
!    pragma Preelaborable_Initialization (Map);
! 
!    type Cursor is record
!       Node : Count_Type;
!    end record;
! 
!    No_Element : constant Cursor := (Node => 0);
! 
!    Empty_Map : constant Map;
! 
!    function Length (Container : Map) return Count_Type with
!      Global => null,
!      Post   => Length'Result <= Container.Capacity;
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
!       subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!       package M is new Ada.Containers.Functional_Maps
!         (Element_Type    => Element_Type,
!          Key_Type        => Key_Type,
!          Equivalent_Keys => Equivalent_Keys);
! 
!       function "="
!         (Left  : M.Map;
!          Right : M.Map) return Boolean renames M."=";
! 
!       function "<="
!         (Left  : M.Map;
!          Right : M.Map) return Boolean renames M."<=";
! 
!       package K is new Ada.Containers.Functional_Vectors
!         (Element_Type => Key_Type,
!          Index_Type   => Positive_Count_Type);
! 
!       function "="
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean renames K."=";
! 
!       function "<"
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean renames K."<";
! 
!       function "<="
!         (Left  : K.Sequence;
!          Right : K.Sequence) return Boolean renames K."<=";
! 
!       function K_Bigger_Than_Range
!         (Container : K.Sequence;
!          Fst       : Positive_Count_Type;
!          Lst       : Count_Type;
!          Key       : Key_Type) return Boolean
!       with
!         Global => null,
!         Pre    => Lst <= K.Length (Container),
!         Post   =>
!           K_Bigger_Than_Range'Result =
!             (for all I in Fst .. Lst => K.Get (Container, I) < Key);
!       pragma Annotate (GNATprove, Inline_For_Proof, K_Bigger_Than_Range);
! 
!       function K_Smaller_Than_Range
!         (Container : K.Sequence;
!          Fst       : Positive_Count_Type;
!          Lst       : Count_Type;
!          Key       : Key_Type) return Boolean
!       with
!         Global => null,
!         Pre    => Lst <= K.Length (Container),
!         Post   =>
!           K_Smaller_Than_Range'Result =
!             (for all I in Fst .. Lst => Key < K.Get (Container, I));
!       pragma Annotate (GNATprove, Inline_For_Proof, K_Smaller_Than_Range);
! 
!       function K_Is_Find
!         (Container : K.Sequence;
!          Key       : Key_Type;
!          Position  : Count_Type) return Boolean
!       with
!         Global => null,
!         Pre    => Position - 1 <= K.Length (Container),
!         Post   =>
!           K_Is_Find'Result =
!              ((if Position > 0 then
!                   K_Bigger_Than_Range (Container, 1, Position - 1, Key))
! 
!             and
!               (if Position < K.Length (Container) then
!                   K_Smaller_Than_Range
!                     (Container,
!                      Position + 1,
!                      K.Length (Container),
!                      Key)));
!       pragma Annotate (GNATprove, Inline_For_Proof, K_Is_Find);
! 
!       function Find (Container : K.Sequence; Key : Key_Type) return Count_Type
!       --  Search for Key in Container
! 
!       with
!         Global => null,
!         Post =>
!           (if Find'Result > 0 then
!               Find'Result <= K.Length (Container)
!                 and Equivalent_Keys (Key, K.Get (Container, Find'Result)));
! 
!       package P is new Ada.Containers.Functional_Maps
!         (Key_Type                       => Cursor,
!          Element_Type                   => Positive_Count_Type,
!          Equivalent_Keys                => "=",
!          Enable_Handling_Of_Equivalence => False);
! 
!       function "="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."=";
! 
!       function "<="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."<=";
! 
!       function P_Positions_Shifted
!         (Small : P.Map;
!          Big   : P.Map;
!          Cut   : Positive_Count_Type;
!          Count : Count_Type := 1) return Boolean
!       with
!         Global => null,
!         Post   =>
!           P_Positions_Shifted'Result =
! 
!             --  Big contains all cursors of Small
! 
!             (P.Keys_Included (Small, Big)
! 
!               --  Cursors located before Cut are not moved, cursors located
!               --  after are shifted by Count.
! 
!               and (for all I of Small =>
!                     (if P.Get (Small, I) < Cut then
!                         P.Get (Big, I) = P.Get (Small, I)
!                      else
!                         P.Get (Big, I) - Count = P.Get (Small, I)))
! 
!               --  New cursors of Big (if any) are between Cut and Cut - 1 +
!               --  Count.
! 
!               and (for all I of Big =>
!                     P.Has_Key (Small, I)
!                       or P.Get (Big, I) - Count in Cut - Count  .. Cut - 1));
! 
!       function Model (Container : Map) return M.Map with
!       --  The high-level model of a map is a map from keys to elements. Neither
!       --  cursors nor order of elements are represented in this model. Keys are
!       --  modeled up to equivalence.
! 
!         Ghost,
!         Global => null;
! 
!       function Keys (Container : Map) return K.Sequence with
!       --  The Keys sequence represents the underlying list structure of maps
!       --  that is used for iteration. It stores the actual values of keys in
!       --  the map. It does not model cursors nor elements.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           K.Length (Keys'Result) = Length (Container)
! 
!             --  It only contains keys contained in Model
! 
!             and (for all Key of Keys'Result =>
!                   M.Has_Key (Model (Container), Key))
! 
!             --  It contains all the keys contained in Model
! 
!             and (for all Key of Model (Container) =>
!                   (Find (Keys'Result, Key) > 0
!                     and then Equivalent_Keys
!                                (K.Get (Keys'Result, Find (Keys'Result, Key)),
!                                 Key)))
! 
!             --  It is sorted in increasing order
! 
!             and (for all I in 1 .. Length (Container) =>
!                   Find (Keys'Result, K.Get (Keys'Result, I)) = I
!                     and K_Is_Find (Keys'Result, K.Get (Keys'Result, I), I));
!       pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Keys);
! 
!       function Positions (Container : Map) return P.Map with
!       --  The Positions map is used to model cursors. It only contains valid
!       --  cursors and maps them to their position in the container.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           not P.Has_Key (Positions'Result, No_Element)
! 
!             --  Positions of cursors are smaller than the container's length.
! 
!             and then
!               (for all I of Positions'Result =>
!                 P.Get (Positions'Result, I) in 1 .. Length (Container)
! 
!             --  No two cursors have the same position. Note that we do not
!             --  state that there is a cursor in the map for each position, as
!             --  it is rarely needed.
! 
!             and then
!               (for all J of Positions'Result =>
!                 (if P.Get (Positions'Result, I) = P.Get (Positions'Result, J)
!                  then I = J)));
! 
!       procedure Lift_Abstraction_Level (Container : Map) with
!         --  Lift_Abstraction_Level is a ghost procedure that does nothing but
!         --  assume that we can access the same elements by iterating over
!         --  positions or cursors.
!         --  This information is not generally useful except when switching from
!         --  a low-level, cursor-aware view of a container, to a high-level,
!         --  position-based view.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           (for all Key of Keys (Container) =>
!             (for some I of Positions (Container) =>
!               K.Get (Keys (Container), P.Get (Positions (Container), I)) =
!                 Key));
! 
!       function Contains
!         (C : M.Map;
!          K : Key_Type) return Boolean renames M.Has_Key;
!       --  To improve readability of contracts, we rename the function used to
!       --  search for a key in the model to Contains.
! 
!       function Element
!         (C : M.Map;
!          K : Key_Type) return Element_Type renames M.Get;
!       --  To improve readability of contracts, we rename the function used to
!       --  access an element in the model to Element.
!    end Formal_Model;
!    use Formal_Model;
! 
!    function "=" (Left, Right : Map) return Boolean with
!      Global => null,
!      Post   => "="'Result = (Model (Left) = Model (Right));
! 
!    function Is_Empty (Container : Map) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
! 
!    procedure Clear (Container : in out Map) with
!      Global => null,
!      Post   => Length (Container) = 0 and M.Is_Empty (Model (Container));
! 
!    procedure Assign (Target : in out Map; Source : Map) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)
!          and Keys (Target) = Keys (Source)
!          and Length (Source) = Length (Target);
! 
!    function Copy (Source : Map; Capacity : Count_Type := 0) return Map with
!      Global => null,
!      Pre    => Capacity = 0 or else Capacity >= Source.Capacity,
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and Keys (Copy'Result) = Keys (Source)
!          and Positions (Copy'Result) = Positions (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Source.Capacity
!               else
!                  Copy'Result.Capacity = Capacity);
! 
!    function Key (Container : Map; Position : Cursor) return Key_Type with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Key'Result =
!          K.Get (Keys (Container), P.Get (Positions (Container), Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Key);
! 
!    function Element
!      (Container : Map;
!       Position  : Cursor) return Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Element'Result = Element (Model (Container), Key (Container, Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out Map;
!       Position  : Cursor;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
! 
!        --  Order of keys and cursors is preserved
! 
!        Keys (Container) = Keys (Container)'Old
!          and Positions (Container) = Positions (Container)'Old
! 
!          --  New_Item is now associated with the key at position Position in
!          --  Container.
! 
!          and Element (Container, Position) = New_Item
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys (Model (Container), Model (Container)'Old)
!          and M.Elements_Equal_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 Key (Container, Position));
! 
!    function At_End
!      (E : not null access constant Map) return not null access constant Map
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function At_End
!      (E : access constant Element_Type) return access constant Element_Type
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function Constant_Reference
!      (Container : aliased Map;
!       Position  : Cursor) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Constant_Reference'Result.all =
!            Element (Model (Container), Key (Container, Position));
! 
!    function Reference
!      (Container : not null access Map;
!       Position  : Cursor) return not null access Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container.all, Position),
!      Post   =>
! 
!        --  Order of keys and cursors is preserved
! 
!        Keys (At_End (Container).all) = Keys (Container.all)
!          and Positions (At_End (Container).all) = Positions (Container.all)
! 
!          --  The value designated by the result of Reference is now associated
!          --  with the key at position Position in Container.
! 
!          and Element (At_End (Container).all, Position) =
!                At_End (Reference'Result).all
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys
!                (Model (At_End (Container).all),
!                 Model (Container.all))
!          and M.Elements_Equal_Except
!                (Model (At_End (Container).all),
!                 Model (Container.all),
!                 Key (At_End (Container).all, Position));
! 
!    function Constant_Reference
!      (Container : aliased Map;
!       Key       : Key_Type) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   =>
!        Constant_Reference'Result.all = Element (Model (Container), Key);
! 
!    function Reference
!      (Container : not null access Map;
!       Key       : Key_Type) return not null access Element_Type
!    with
!      Global => null,
!      Pre    => Contains (Container.all, Key),
!      Post   =>
! 
!        --  Order of keys and cursors is preserved
! 
!        Keys (At_End (Container).all) = Keys (Container.all)
!          and Positions (At_End (Container).all) = Positions (Container.all)
! 
!          --  The value designated by the result of Reference is now associated
!          --  with Key in Container.
! 
!          and Element (Model (At_End (Container).all), Key) =
!                At_End (Reference'Result).all
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys
!                (Model (At_End (Container).all),
!                 Model (Container.all))
!          and M.Elements_Equal_Except
!                (Model (At_End (Container).all),
!                 Model (Container.all),
!                 Key);
! 
!    procedure Move (Target : in out Map; Source : in out Map) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)'Old
!          and Keys (Target) = Keys (Source)'Old
!          and Length (Source)'Old = Length (Target)
!          and Length (Source) = 0;
! 
!    procedure Insert
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type;
!       Position  : out Cursor;
!       Inserted  : out Boolean)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity or Contains (Container, Key),
!      Post           =>
!        Contains (Container, Key)
!          and Has_Element (Container, Position)
!          and Equivalent_Keys
!                (Formal_Ordered_Maps.Key (Container, Position), Key)
!          and K_Is_Find
!                (Keys (Container),
!                 Key,
!                 P.Get (Positions (Container), Position)),
!      Contract_Cases =>
! 
!        --  If Key is already in Container, it is not modified and Inserted is
!        --  set to False.
! 
!        (Contains (Container, Key) =>
!           not Inserted
!             and Model (Container) = Model (Container)'Old
!             and Keys (Container) = Keys (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, Key is inserted in Container and Inserted is set to True
! 
!         others =>
!           Inserted
!             and Length (Container) = Length (Container)'Old + 1
! 
!             --  Key now maps to New_Item
! 
!             and Formal_Ordered_Maps.Key (Container, Position) = Key
!             and Element (Model (Container), Key) = New_Item
! 
!             --  Other mappings are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Keys_Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    Key)
! 
!             --  The keys of Container located before Position are preserved
! 
!             and K.Range_Equal
!                   (Left  => Keys (Container)'Old,
!                    Right => Keys (Container),
!                    Fst   => 1,
!                    Lst   => P.Get (Positions (Container), Position) - 1)
! 
!             --  Other keys are shifted by 1
! 
!             and K.Range_Shifted
!                   (Left   => Keys (Container)'Old,
!                    Right  => Keys (Container),
!                    Fst    => P.Get (Positions (Container), Position),
!                    Lst    => Length (Container)'Old,
!                    Offset => 1)
! 
!             --  A new cursor has been inserted at position Position in
!             --  Container.
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut => P.Get (Positions (Container), Position)));
! 
!    procedure Insert
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Container.Capacity
!          and then (not Contains (Container, Key)),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
!          and Contains (Container, Key)
! 
!          --  Key now maps to New_Item
! 
!          and K.Get (Keys (Container), Find (Keys (Container), Key)) = Key
!          and Element (Model (Container), Key) = New_Item
! 
!          --  Other mappings are preserved
! 
!          and Model (Container)'Old <= Model (Container)
!          and M.Keys_Included_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 Key)
! 
!          --  The keys of Container located before Key are preserved
! 
!          and K.Range_Equal
!                (Left  => Keys (Container)'Old,
!                 Right => Keys (Container),
!                 Fst   => 1,
!                 Lst   => Find (Keys (Container), Key) - 1)
! 
!          --  Other keys are shifted by 1
! 
!          and K.Range_Shifted
!                (Left   => Keys (Container)'Old,
!                 Right  => Keys (Container),
!                 Fst    => Find (Keys (Container), Key),
!                 Lst    => Length (Container)'Old,
!                 Offset => 1)
! 
!          --  A new cursor has been inserted in Container
! 
!          and P_Positions_Shifted
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Cut => Find (Keys (Container), Key));
! 
!    procedure Include
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity or Contains (Container, Key),
!      Post           =>
!        Contains (Container, Key) and Element (Container, Key) = New_Item,
!      Contract_Cases =>
! 
!        --  If Key is already in Container, Key is mapped to New_Item
! 
!        (Contains (Container, Key) =>
! 
!           --  Cursors are preserved
! 
!           Positions (Container) = Positions (Container)'Old
! 
!             --  The key equivalent to Key in Container is replaced by Key
! 
!             and K.Get
!                   (Keys (Container), Find (Keys (Container), Key)) = Key
! 
!             and K.Equal_Except
!                   (Keys (Container)'Old,
!                    Keys (Container),
!                    Find (Keys (Container), Key))
! 
!             --  Elements associated with other keys are preserved
! 
!             and M.Same_Keys (Model (Container), Model (Container)'Old)
!             and M.Elements_Equal_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    Key),
! 
!         --  Otherwise, Key is inserted in Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old + 1
! 
!             --  Other mappings are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Keys_Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    Key)
! 
!             --  Key is inserted in Container
! 
!             and K.Get
!                   (Keys (Container), Find (Keys (Container), Key)) = Key
! 
!             --  The keys of Container located before Key are preserved
! 
!             and K.Range_Equal
!                   (Left  => Keys (Container)'Old,
!                    Right => Keys (Container),
!                    Fst   => 1,
!                    Lst   => Find (Keys (Container), Key) - 1)
! 
!             --  Other keys are shifted by 1
! 
!             and K.Range_Shifted
!                   (Left   => Keys (Container)'Old,
!                    Right  => Keys (Container),
!                    Fst    => Find (Keys (Container), Key),
!                    Lst    => Length (Container)'Old,
!                    Offset => 1)
! 
!             --  A new cursor has been inserted in Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut => Find (Keys (Container), Key)));
! 
!    procedure Replace
!      (Container : in out Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   =>
! 
!        --  Cursors are preserved
! 
!        Positions (Container) = Positions (Container)'Old
! 
!          --  The key equivalent to Key in Container is replaced by Key
! 
!          and K.Get (Keys (Container), Find (Keys (Container), Key)) = Key
!          and K.Equal_Except
!               (Keys (Container)'Old,
!                Keys (Container),
!                Find (Keys (Container), Key))
! 
!          --  New_Item is now associated with the Key in Container
! 
!          and Element (Model (Container), Key) = New_Item
! 
!          --  Elements associated with other keys are preserved
! 
!          and M.Same_Keys (Model (Container), Model (Container)'Old)
!          and M.Elements_Equal_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 Key);
! 
!    procedure Exclude (Container : in out Map; Key : Key_Type) with
!      Global         => null,
!      Post           => not Contains (Container, Key),
!      Contract_Cases =>
! 
!        --  If Key is not in Container, nothing is changed
! 
!        (not Contains (Container, Key) =>
!           Model (Container) = Model (Container)'Old
!             and Keys (Container) = Keys (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, Key is removed from Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  Other mappings are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Keys_Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Key)
! 
!             --  The keys of Container located before Key are preserved
! 
!             and K.Range_Equal
!                   (Left  => Keys (Container)'Old,
!                    Right => Keys (Container),
!                    Fst   => 1,
!                    Lst   => Find (Keys (Container), Key)'Old - 1)
! 
!             --  The keys located after Key are shifted by 1
! 
!             and K.Range_Shifted
!                   (Left   => Keys (Container),
!                    Right  => Keys (Container)'Old,
!                    Fst    => Find (Keys (Container), Key)'Old,
!                    Lst    => Length (Container),
!                    Offset => 1)
! 
!             --  A cursor has been removed from Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => Find (Keys (Container), Key)'Old));
! 
!    procedure Delete (Container : in out Map; Key : Key_Type) with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Key is no longer in Container
! 
!          and not Contains (Container, Key)
! 
!          --  Other mappings are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Keys_Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Key)
! 
!          --  The keys of Container located before Key are preserved
! 
!          and K.Range_Equal
!                (Left  => Keys (Container)'Old,
!                 Right => Keys (Container),
!                 Fst   => 1,
!                 Lst   => Find (Keys (Container), Key)'Old - 1)
! 
!          --  The keys located after Key are shifted by 1
! 
!          and K.Range_Shifted
!                (Left   => Keys (Container),
!                 Right  => Keys (Container)'Old,
!                 Fst    => Find (Keys (Container), Key)'Old,
!                 Lst    => Length (Container),
!                 Offset => 1)
! 
!          --  A cursor has been removed from Container
! 
!          and P_Positions_Shifted
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Cut   => Find (Keys (Container), Key)'Old);
! 
!    procedure Delete (Container : in out Map; Position : in out Cursor) with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
!        Position = No_Element
!          and Length (Container) = Length (Container)'Old - 1
! 
!          --  The key at position Position is no longer in Container
! 
!          and not Contains (Container, Key (Container, Position)'Old)
!          and not P.Has_Key (Positions (Container), Position'Old)
! 
!          --  Other mappings are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Keys_Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Key (Container, Position)'Old)
! 
!          --  The keys of Container located before Position are preserved.
! 
!          and K.Range_Equal
!                (Left  => Keys (Container)'Old,
!                 Right => Keys (Container),
!                 Fst   => 1,
!                 Lst   => P.Get (Positions (Container)'Old, Position'Old) - 1)
! 
!          --  The keys located after Position are shifted by 1
! 
!          and K.Range_Shifted
!                (Left   => Keys (Container),
!                 Right  => Keys (Container)'Old,
!                 Fst    => P.Get (Positions (Container)'Old, Position'Old),
!                 Lst    => Length (Container),
!                 Offset => 1)
! 
!          --  Position has been removed from Container
! 
!          and P_Positions_Shifted
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Cut   => P.Get (Positions (Container)'Old, Position'Old));
! 
!    procedure Delete_First (Container : in out Map) with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 => Length (Container) = 0,
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  The first key has been removed from Container
! 
!             and not Contains (Container, First_Key (Container)'Old)
! 
!             --  Other mappings are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Keys_Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                     First_Key (Container)'Old)
! 
!             --  Other keys are shifted by 1
! 
!             and K.Range_Shifted
!                   (Left   => Keys (Container),
!                    Right  => Keys (Container)'Old,
!                    Fst    => 1,
!                    Lst    => Length (Container),
!                    Offset => 1)
! 
!             --  First has been removed from Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => 1));
! 
!    procedure Delete_Last (Container : in out Map) with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 => Length (Container) = 0,
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  The last key has been removed from Container
! 
!             and not Contains (Container, Last_Key (Container)'Old)
! 
!             --  Other mappings are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Keys_Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Last_Key (Container)'Old)
! 
!             --  Others keys of Container are preserved
! 
!             and K.Range_Equal
!                   (Left  => Keys (Container)'Old,
!                    Right => Keys (Container),
!                    Fst   => 1,
!                    Lst   => Length (Container))
! 
!             --  Last cursor has been removed from Container
! 
!             and Positions (Container) <= Positions (Container)'Old);
! 
!    function First (Container : Map) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           First'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, First'Result)
!             and P.Get (Positions (Container), First'Result) = 1);
! 
!    function First_Element (Container : Map) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        First_Element'Result =
!          Element (Model (Container), First_Key (Container));
! 
!    function First_Key (Container : Map) return Key_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        First_Key'Result = K.Get (Keys (Container), 1)
!          and K_Smaller_Than_Range
!                (Keys (Container), 2, Length (Container), First_Key'Result);
! 
!    function Last (Container : Map) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           Last'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Last'Result)
!             and P.Get (Positions (Container), Last'Result) =
!                   Length (Container));
! 
!    function Last_Element (Container : Map) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Last_Element'Result = Element (Model (Container), Last_Key (Container));
! 
!    function Last_Key (Container : Map) return Key_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Last_Key'Result = K.Get (Keys (Container), Length (Container))
!          and K_Bigger_Than_Range
!                (Keys (Container), 1, Length (Container) - 1, Last_Key'Result);
! 
!    function Next (Container : Map; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Next'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Next'Result)
!             and then P.Get (Positions (Container), Next'Result) =
!                      P.Get (Positions (Container), Position) + 1);
! 
!    procedure Next (Container : Map; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) + 1);
! 
!    function Previous (Container : Map; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = 1
!         =>
!           Previous'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Previous'Result)
!             and then P.Get (Positions (Container), Previous'Result) =
!                      P.Get (Positions (Container), Position) - 1);
! 
!    procedure Previous (Container : Map; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = 1
!         =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) - 1);
! 
!    function Find (Container : Map; Key : Key_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Key is not contained in Container, Find returns No_Element
! 
!        (not Contains (Model (Container), Key) =>
!           not P.Has_Key (Positions (Container), Find'Result)
!             and Find'Result = No_Element,
! 
!         --  Otherwise, Find returns a valid cursor in Container
! 
!         others =>
!           P.Has_Key (Positions (Container), Find'Result)
!             and P.Get (Positions (Container), Find'Result) =
!                 Find (Keys (Container), Key)
! 
!             --  The key designated by the result of Find is Key
! 
!             and Equivalent_Keys
!                   (Formal_Ordered_Maps.Key (Container, Find'Result), Key));
! 
!    function Element (Container : Map; Key : Key_Type) return Element_Type with
!      Global => null,
!      Pre    => Contains (Container, Key),
!      Post   => Element'Result = Element (Model (Container), Key);
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    function Floor (Container : Map; Key : Key_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 or else Key < First_Key (Container) =>
!           Floor'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Floor'Result)
!             and not (Key < K.Get (Keys (Container),
!                                   P.Get (Positions (Container), Floor'Result)))
!             and K_Is_Find
!                   (Keys (Container),
!                    Key,
!                    P.Get (Positions (Container), Floor'Result)));
! 
!    function Ceiling (Container : Map; Key : Key_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 or else Last_Key (Container) < Key =>
!           Ceiling'Result = No_Element,
!         others =>
!           Has_Element (Container, Ceiling'Result)
!             and not (K.Get
!                        (Keys (Container),
!                         P.Get (Positions (Container), Ceiling'Result)) < Key)
!             and K_Is_Find
!                   (Keys (Container),
!                    Key,
!                    P.Get (Positions (Container), Ceiling'Result)));
! 
!    function Contains (Container : Map; Key : Key_Type) return Boolean with
!      Global => null,
!      Post   => Contains'Result = Contains (Model (Container), Key);
!    pragma Annotate (GNATprove, Inline_For_Proof, Contains);
! 
!    function Has_Element (Container : Map; Position : Cursor) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result = P.Has_Key (Positions (Container), Position);
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    pragma Inline (Next);
!    pragma Inline (Previous);
! 
!    subtype Node_Access is Count_Type;
! 
!    use Red_Black_Trees;
! 
!    type Node_Type is record
!       Has_Element : Boolean := False;
!       Parent  : Node_Access := 0;
!       Left    : Node_Access := 0;
!       Right   : Node_Access := 0;
!       Color   : Red_Black_Trees.Color_Type := Red;
!       Key     : Key_Type;
!       Element : aliased Element_Type;
!    end record;
! 
!    package Tree_Types is
!      new Ada.Containers.Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
! 
!    type Map (Capacity : Count_Type) is record
!      Content : Tree_Types.Tree_Type (Capacity);
!    end record;
  
!    Empty_Map : constant Map := (Capacity => 0, others => <>);
  
  end Ada.Containers.Formal_Ordered_Maps;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Ordered_Maps with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Ordered_Maps;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cforse.adb gcc-13.1.0/gcc/ada/libgnat/a-cforse.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cforse.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cforse.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1939 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --   A D A . C O N T A I N E R S . F O R M A L _ O R D E R E D _ S E T S    --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations;
- pragma Elaborate_All
-   (Ada.Containers.Red_Black_Trees.Generic_Bounded_Operations);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys;
- pragma Elaborate_All (Ada.Containers.Red_Black_Trees.Generic_Bounded_Keys);
- 
- with Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations;
- pragma Elaborate_All
-   (Ada.Containers.Red_Black_Trees.Generic_Bounded_Set_Operations);
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Ordered_Sets with
-   SPARK_Mode => Off
- is
- 
-    ------------------------------
-    -- Access to Fields of Node --
-    ------------------------------
- 
-    --  These subprograms provide functional notation for access to fields
-    --  of a node, and procedural notation for modifiying these fields.
- 
-    function Color (Node : Node_Type) return Red_Black_Trees.Color_Type;
-    pragma Inline (Color);
- 
-    function Left_Son (Node : Node_Type) return Count_Type;
-    pragma Inline (Left_Son);
- 
-    function Parent (Node : Node_Type) return Count_Type;
-    pragma Inline (Parent);
- 
-    function Right_Son (Node : Node_Type) return Count_Type;
-    pragma Inline (Right_Son);
- 
-    procedure Set_Color
-      (Node  : in out Node_Type;
-       Color : Red_Black_Trees.Color_Type);
-    pragma Inline (Set_Color);
- 
-    procedure Set_Left (Node : in out Node_Type; Left : Count_Type);
-    pragma Inline (Set_Left);
- 
-    procedure Set_Right (Node : in out Node_Type; Right : Count_Type);
-    pragma Inline (Set_Right);
- 
-    procedure Set_Parent (Node : in out Node_Type; Parent : Count_Type);
-    pragma Inline (Set_Parent);
- 
-    -----------------------
-    -- Local Subprograms --
-    -----------------------
- 
-    --  Comments needed???
- 
-    procedure Assign
-      (Target : in out Tree_Types.Tree_Type;
-       Source : Tree_Types.Tree_Type);
- 
-    generic
-       with procedure Set_Element (Node : in out Node_Type);
-    procedure Generic_Allocate
-      (Tree : in out Tree_Types.Tree_Type'Class;
-       Node : out Count_Type);
- 
-    procedure Free (Tree : in out Set; X : Count_Type);
- 
-    procedure Insert_Sans_Hint
-      (Container : in out Tree_Types.Tree_Type;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean);
- 
-    procedure Insert_With_Hint
-      (Dst_Set  : in out Tree_Types.Tree_Type;
-       Dst_Hint : Count_Type;
-       Src_Node : Node_Type;
-       Dst_Node : out Count_Type);
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Type) return Boolean;
-    pragma Inline (Is_Greater_Element_Node);
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Type) return Boolean;
-    pragma Inline (Is_Less_Element_Node);
- 
-    function Is_Less_Node_Node (L, R : Node_Type) return Boolean;
-    pragma Inline (Is_Less_Node_Node);
- 
-    procedure Replace_Element
-      (Tree : in out Set;
-       Node : Count_Type;
-       Item : Element_Type);
- 
-    --------------------------
-    -- Local Instantiations --
-    --------------------------
- 
-    package Tree_Operations is
-      new Red_Black_Trees.Generic_Bounded_Operations
-        (Tree_Types,
-         Left  => Left_Son,
-         Right => Right_Son);
- 
-    use Tree_Operations;
- 
-    package Element_Keys is
-      new Red_Black_Trees.Generic_Bounded_Keys
-        (Tree_Operations     => Tree_Operations,
-         Key_Type            => Element_Type,
-         Is_Less_Key_Node    => Is_Less_Element_Node,
-         Is_Greater_Key_Node => Is_Greater_Element_Node);
- 
-    package Set_Ops is
-      new Red_Black_Trees.Generic_Bounded_Set_Operations
-        (Tree_Operations  => Tree_Operations,
-         Set_Type         => Tree_Types.Tree_Type,
-         Assign           => Assign,
-         Insert_With_Hint => Insert_With_Hint,
-         Is_Less          => Is_Less_Node_Node);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left, Right : Set) return Boolean is
-       Lst   : Count_Type;
-       Node  : Count_Type;
-       ENode : Count_Type;
- 
-    begin
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       if Is_Empty (Left) then
-          return True;
-       end if;
- 
-       Lst := Next (Left.Content, Last (Left).Node);
- 
-       Node := First (Left).Node;
-       while Node /= Lst loop
-          ENode := Find (Right, Left.Content.Nodes (Node).Element).Node;
-          if ENode = 0
-            or else Left.Content.Nodes (Node).Element /=
-            Right.Content.Nodes (ENode).Element
-          then
-             return False;
-          end if;
- 
-          Node := Next (Left.Content, Node);
-       end loop;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign
-      (Target : in out Tree_Types.Tree_Type;
-       Source : Tree_Types.Tree_Type)
-    is
-       procedure Append_Element (Source_Node : Count_Type);
- 
-       procedure Append_Elements is
-         new Tree_Operations.Generic_Iteration (Append_Element);
- 
-       --------------------
-       -- Append_Element --
-       --------------------
- 
-       procedure Append_Element (Source_Node : Count_Type) is
-          SN : Node_Type renames Source.Nodes (Source_Node);
- 
-          procedure Set_Element (Node : in out Node_Type);
-          pragma Inline (Set_Element);
- 
-          function New_Node return Count_Type;
-          pragma Inline (New_Node);
- 
-          procedure Insert_Post is
-            new Element_Keys.Generic_Insert_Post (New_Node);
- 
-          procedure Unconditional_Insert_Sans_Hint is
-            new Element_Keys.Generic_Unconditional_Insert (Insert_Post);
- 
-          procedure Unconditional_Insert_Avec_Hint is
-            new Element_Keys.Generic_Unconditional_Insert_With_Hint
-                  (Insert_Post,
-                   Unconditional_Insert_Sans_Hint);
- 
-          procedure Allocate is new Generic_Allocate (Set_Element);
- 
-          --------------
-          -- New_Node --
-          --------------
- 
-          function New_Node return Count_Type is
-             Result : Count_Type;
-          begin
-             Allocate (Target, Result);
-             return Result;
-          end New_Node;
- 
-          -----------------
-          -- Set_Element --
-          -----------------
- 
-          procedure Set_Element (Node : in out Node_Type) is
-          begin
-             Node.Element := SN.Element;
-          end Set_Element;
- 
-          --  Local variables
- 
-          Target_Node : Count_Type;
- 
-       --  Start of processing for Append_Element
- 
-       begin
-          Unconditional_Insert_Avec_Hint
-            (Tree  => Target,
-             Hint  => 0,
-             Key   => SN.Element,
-             Node  => Target_Node);
-       end Append_Element;
- 
-    --  Start of processing for Assign
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Source.Length then
-          raise Constraint_Error
-            with "Target capacity is less than Source length";
-       end if;
- 
-       Tree_Operations.Clear_Tree (Target);
-       Append_Elements (Source);
-    end Assign;
- 
-    procedure Assign (Target : in out Set; Source : Set) is
-    begin
-       Assign (Target.Content, Source.Content);
-    end Assign;
- 
-    -------------
-    -- Ceiling --
-    -------------
- 
-    function Ceiling (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Count_Type :=
-         Element_Keys.Ceiling (Container.Content, Item);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Ceiling;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Set) is
-    begin
-       Tree_Operations.Clear_Tree (Container.Content);
-    end Clear;
- 
-    -----------
-    -- Color --
-    -----------
- 
-    function Color (Node : Node_Type) return Red_Black_Trees.Color_Type is
-    begin
-       return Node.Color;
-    end Color;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Set;
-       Position  : Cursor) return not null access constant Element_Type
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Element");
- 
-       return Container.Content.Nodes (Position.Node).Element'Access;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Set;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find (Container, Item) /= No_Element;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy (Source : Set; Capacity : Count_Type := 0) return Set is
-       Node   : Count_Type;
-       N      : Count_Type;
-       Target : Set (Count_Type'Max (Source.Capacity, Capacity));
- 
-    begin
-       if 0 < Capacity and then Capacity < Source.Capacity then
-          raise Capacity_Error;
-       end if;
- 
-       if Length (Source) > 0 then
-          Target.Content.Length := Source.Content.Length;
-          Target.Content.Root   := Source.Content.Root;
-          Target.Content.First  := Source.Content.First;
-          Target.Content.Last   := Source.Content.Last;
-          Target.Content.Free   := Source.Content.Free;
- 
-          Node := 1;
-          while Node <= Source.Capacity loop
-             Target.Content.Nodes (Node).Element :=
-               Source.Content.Nodes (Node).Element;
-             Target.Content.Nodes (Node).Parent :=
-               Source.Content.Nodes (Node).Parent;
-             Target.Content.Nodes (Node).Left :=
-               Source.Content.Nodes (Node).Left;
-             Target.Content.Nodes (Node).Right :=
-               Source.Content.Nodes (Node).Right;
-             Target.Content.Nodes (Node).Color :=
-               Source.Content.Nodes (Node).Color;
-             Target.Content.Nodes (Node).Has_Element :=
-               Source.Content.Nodes (Node).Has_Element;
-             Node := Node + 1;
-          end loop;
- 
-          while Node <= Target.Capacity loop
-             N := Node;
-             Free (Tree => Target, X => N);
-             Node := Node + 1;
-          end loop;
-       end if;
- 
-       return Target;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Set; Position : in out Cursor) is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Delete");
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Content,
-                                              Position.Node);
-       Free (Container, Position.Node);
-       Position := No_Element;
-    end Delete;
- 
-    procedure Delete (Container : in out Set; Item : Element_Type) is
-       X : constant Count_Type := Element_Keys.Find (Container.Content, Item);
- 
-    begin
-       if X = 0 then
-          raise Constraint_Error with "attempt to delete element not in set";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-       Free (Container, X);
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Set) is
-       X : constant Count_Type := Container.Content.First;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Set) is
-       X : constant Count_Type := Container.Content.Last;
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end if;
-    end Delete_Last;
- 
-    ----------------
-    -- Difference --
-    ----------------
- 
-    procedure Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Set_Difference (Target.Content, Source.Content);
-    end Difference;
- 
-    function Difference (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Length (Left) = 0 then
-          return Empty_Set;
-       end if;
- 
-       if Length (Right) = 0 then
-          return Copy (Left);
-       end if;
- 
-       return S : Set (Length (Left)) do
-          Assign
-            (S.Content, Set_Ops.Set_Difference (Left.Content, Right.Content));
-       end return;
-    end Difference;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element (Container : Set; Position : Cursor) return Element_Type is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Element");
- 
-       return Container.Content.Nodes (Position.Node).Element;
-    end Element;
- 
-    -------------------------
-    -- Equivalent_Elements --
-    -------------------------
- 
-    function Equivalent_Elements (Left, Right : Element_Type) return Boolean is
-    begin
-       if Left < Right
-         or else Right < Left
-       then
-          return False;
-       else
-          return True;
-       end if;
-    end Equivalent_Elements;
- 
-    ---------------------
-    -- Equivalent_Sets --
-    ---------------------
- 
-    function Equivalent_Sets (Left, Right : Set) return Boolean is
-       function Is_Equivalent_Node_Node
-         (L, R : Node_Type) return Boolean;
-       pragma Inline (Is_Equivalent_Node_Node);
- 
-       function Is_Equivalent is
-         new Tree_Operations.Generic_Equal (Is_Equivalent_Node_Node);
- 
-       -----------------------------
-       -- Is_Equivalent_Node_Node --
-       -----------------------------
- 
-       function Is_Equivalent_Node_Node (L, R : Node_Type) return Boolean is
-       begin
-          if L.Element < R.Element then
-             return False;
-          elsif R.Element < L.Element then
-             return False;
-          else
-             return True;
-          end if;
-       end Is_Equivalent_Node_Node;
- 
-    --  Start of processing for Equivalent_Sets
- 
-    begin
-       return Is_Equivalent (Left.Content, Right.Content);
-    end Equivalent_Sets;
- 
-    -------------
-    -- Exclude --
-    -------------
- 
-    procedure Exclude (Container : in out Set; Item : Element_Type) is
-       X : constant Count_Type := Element_Keys.Find (Container.Content, Item);
-    begin
-       if X /= 0 then
-          Tree_Operations.Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end if;
-    end Exclude;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (Container : Set; Item : Element_Type) return Cursor is
-       Node : constant Count_Type :=
-         Element_Keys.Find (Container.Content, Item);
- 
-    begin
-       if Node = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Node);
-    end Find;
- 
-    -----------
-    -- First --
-    -----------
- 
-    function First (Container : Set) return Cursor is
-    begin
-       if Length (Container) = 0 then
-          return No_Element;
-       end if;
- 
-       return (Node => Container.Content.First);
-    end First;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Set) return Element_Type is
-       Fst : constant Count_Type := First (Container).Node;
-    begin
-       if Fst = 0 then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       declare
-          N : Tree_Types.Nodes_Type renames Container.Content.Nodes;
-       begin
-          return N (Fst).Element;
-       end;
-    end First_Element;
- 
-    -----------
-    -- Floor --
-    -----------
- 
-    function Floor (Container : Set; Item : Element_Type) return Cursor is
-    begin
-       declare
-          Node : constant Count_Type :=
-            Element_Keys.Floor (Container.Content, Item);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return (Node => Node);
-       end;
-    end Floor;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       -------------------------
-       -- E_Bigger_Than_Range --
-       -------------------------
- 
-       function E_Bigger_Than_Range
-         (Container : E.Sequence;
-          Fst       : Positive_Count_Type;
-          Lst       : Count_Type;
-          Item      : Element_Type) return Boolean
-       is
-       begin
-          for I in Fst .. Lst loop
-             if not (E.Get (Container, I) < Item) then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end E_Bigger_Than_Range;
- 
-       -------------------------
-       -- E_Elements_Included --
-       -------------------------
- 
-       function E_Elements_Included
-         (Left  : E.Sequence;
-          Right : E.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. E.Length (Left) loop
-             if not E.Contains (Right, 1, E.Length (Right), E.Get (Left, I))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end E_Elements_Included;
- 
-       function E_Elements_Included
-         (Left  : E.Sequence;
-          Model : M.Set;
-          Right : E.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. E.Length (Left) loop
-             declare
-                Item : constant Element_Type := E.Get (Left, I);
-             begin
-                if M.Contains (Model, Item) then
-                   if not E.Contains (Right, 1, E.Length (Right), Item) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end E_Elements_Included;
- 
-       function E_Elements_Included
-         (Container : E.Sequence;
-          Model     : M.Set;
-          Left      : E.Sequence;
-          Right     : E.Sequence) return Boolean
-       is
-       begin
-          for I in 1 .. E.Length (Container) loop
-             declare
-                Item : constant Element_Type := E.Get (Container, I);
-             begin
-                if M.Contains (Model, Item) then
-                   if not E.Contains (Left, 1, E.Length (Left), Item) then
-                      return False;
-                   end if;
-                else
-                   if not E.Contains (Right, 1, E.Length (Right), Item) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end E_Elements_Included;
- 
-       ---------------
-       -- E_Is_Find --
-       ---------------
- 
-       function E_Is_Find
-         (Container : E.Sequence;
-          Item      : Element_Type;
-          Position  : Count_Type) return Boolean
-       is
-       begin
-          for I in 1 .. Position - 1 loop
-             if Item < E.Get (Container, I) then
-                return False;
-             end if;
-          end loop;
- 
-          if Position < E.Length (Container) then
-             for I in Position + 1 .. E.Length (Container) loop
-                if E.Get (Container, I) < Item then
-                   return False;
-                end if;
-             end loop;
-          end if;
- 
-          return True;
-       end E_Is_Find;
- 
-       --------------------------
-       -- E_Smaller_Than_Range --
-       --------------------------
- 
-       function E_Smaller_Than_Range
-         (Container : E.Sequence;
-          Fst       : Positive_Count_Type;
-          Lst       : Count_Type;
-          Item      : Element_Type) return Boolean
-       is
-       begin
-          for I in Fst .. Lst loop
-             if not (Item < E.Get (Container, I)) then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end E_Smaller_Than_Range;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find
-         (Container : E.Sequence;
-          Item      : Element_Type) return Count_Type
-       is
-       begin
-          for I in 1 .. E.Length (Container) loop
-             if Equivalent_Elements (Item, E.Get (Container, I)) then
-                return I;
-             end if;
-          end loop;
- 
-          return 0;
-       end Find;
- 
-       --------------
-       -- Elements --
-       --------------
- 
-       function Elements (Container : Set) return E.Sequence is
-          Position : Count_Type := Container.Content.First;
-          R        : E.Sequence;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := E.Add (R, Container.Content.Nodes (Position).Element);
-             Position := Tree_Operations.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Elements;
- 
-       ----------------------------
-       -- Lift_Abstraction_Level --
-       ----------------------------
- 
-       procedure Lift_Abstraction_Level (Container : Set) is null;
- 
-       -----------------------
-       -- Mapping_Preserved --
-       -----------------------
- 
-       function Mapping_Preserved
-         (E_Left  : E.Sequence;
-          E_Right : E.Sequence;
-          P_Left  : P.Map;
-          P_Right : P.Map) return Boolean
-       is
-       begin
-          for C of P_Left loop
-             if not P.Has_Key (P_Right, C)
-               or else P.Get (P_Left,  C) > E.Length (E_Left)
-               or else P.Get (P_Right, C) > E.Length (E_Right)
-               or else E.Get (E_Left,  P.Get (P_Left,  C)) /=
-                       E.Get (E_Right, P.Get (P_Right, C))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Mapping_Preserved;
- 
-       ------------------------------
-       -- Mapping_Preserved_Except --
-       ------------------------------
- 
-       function Mapping_Preserved_Except
-         (E_Left   : E.Sequence;
-          E_Right  : E.Sequence;
-          P_Left   : P.Map;
-          P_Right  : P.Map;
-          Position : Cursor) return Boolean
-       is
-       begin
-          for C of P_Left loop
-             if C /= Position
-               and (not P.Has_Key (P_Right, C)
-                     or else P.Get (P_Left,  C) > E.Length (E_Left)
-                     or else P.Get (P_Right, C) > E.Length (E_Right)
-                     or else E.Get (E_Left,  P.Get (P_Left,  C)) /=
-                             E.Get (E_Right, P.Get (P_Right, C)))
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Mapping_Preserved_Except;
- 
-       -------------------------
-       -- P_Positions_Shifted --
-       -------------------------
- 
-       function P_Positions_Shifted
-         (Small : P.Map;
-          Big   : P.Map;
-          Cut   : Positive_Count_Type;
-          Count : Count_Type := 1) return Boolean
-       is
-       begin
-          for Cu of Small loop
-             if not P.Has_Key (Big, Cu) then
-                return False;
-             end if;
-          end loop;
- 
-          for Cu of Big loop
-             declare
-                Pos : constant Positive_Count_Type := P.Get (Big, Cu);
- 
-             begin
-                if Pos < Cut then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu)
-                   then
-                      return False;
-                   end if;
- 
-                elsif Pos >= Cut + Count then
-                   if not P.Has_Key (Small, Cu)
-                     or else Pos /= P.Get (Small, Cu) + Count
-                   then
-                      return False;
-                   end if;
- 
-                else
-                   if P.Has_Key (Small, Cu) then
-                      return False;
-                   end if;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end P_Positions_Shifted;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : Set) return M.Set is
-          Position : Count_Type := Container.Content.First;
-          R        : M.Set;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R :=
-               M.Add
-                 (Container => R,
-                  Item      => Container.Content.Nodes (Position).Element);
- 
-             Position := Tree_Operations.Next (Container.Content, Position);
-          end loop;
- 
-          return R;
-       end Model;
- 
-       ---------------
-       -- Positions --
-       ---------------
- 
-       function Positions (Container : Set) return P.Map is
-          I        : Count_Type := 1;
-          Position : Count_Type := Container.Content.First;
-          R        : P.Map;
- 
-       begin
-          --  Can't use First, Next or Element here, since they depend on models
-          --  for their postconditions.
- 
-          while Position /= 0 loop
-             R := P.Add (R, (Node => Position), I);
-             pragma Assert (P.Length (R) = I);
-             Position := Tree_Operations.Next (Container.Content, Position);
-             I := I + 1;
-          end loop;
- 
-          return R;
-       end Positions;
- 
-    end Formal_Model;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Tree : in out Set; X : Count_Type) is
-    begin
-       Tree.Content.Nodes (X).Has_Element := False;
-       Tree_Operations.Free (Tree.Content, X);
-    end Free;
- 
-    ----------------------
-    -- Generic_Allocate --
-    ----------------------
- 
-    procedure Generic_Allocate
-      (Tree : in out Tree_Types.Tree_Type'Class;
-       Node : out Count_Type)
-    is
-       procedure Allocate is
-         new Tree_Operations.Generic_Allocate (Set_Element);
-    begin
-       Allocate (Tree, Node);
-       Tree.Nodes (Node).Has_Element := True;
-    end Generic_Allocate;
- 
-    ------------------
-    -- Generic_Keys --
-    ------------------
- 
-    package body Generic_Keys with SPARK_Mode => Off is
- 
-       -----------------------
-       -- Local Subprograms --
-       -----------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Type) return Boolean;
-       pragma Inline (Is_Greater_Key_Node);
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Type) return Boolean;
-       pragma Inline (Is_Less_Key_Node);
- 
-       --------------------------
-       -- Local Instantiations --
-       --------------------------
- 
-       package Key_Keys is
-         new Red_Black_Trees.Generic_Bounded_Keys
-           (Tree_Operations     => Tree_Operations,
-            Key_Type            => Key_Type,
-            Is_Less_Key_Node    => Is_Less_Key_Node,
-            Is_Greater_Key_Node => Is_Greater_Key_Node);
- 
-       -------------
-       -- Ceiling --
-       -------------
- 
-       function Ceiling (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Count_Type :=
-            Key_Keys.Ceiling (Container.Content, Key);
- 
-       begin
-          if Node = 0 then
-             return No_Element;
-          end if;
- 
-          return (Node => Node);
-       end Ceiling;
- 
-       --------------
-       -- Contains --
-       --------------
- 
-       function Contains (Container : Set; Key : Key_Type) return Boolean is
-       begin
-          return Find (Container, Key) /= No_Element;
-       end Contains;
- 
-       ------------
-       -- Delete --
-       ------------
- 
-       procedure Delete (Container : in out Set; Key : Key_Type) is
-          X : constant Count_Type := Key_Keys.Find (Container.Content, Key);
- 
-       begin
-          if X = 0 then
-             raise Constraint_Error with "attempt to delete key not in set";
-          end if;
- 
-          Delete_Node_Sans_Free (Container.Content, X);
-          Free (Container, X);
-       end Delete;
- 
-       -------------
-       -- Element --
-       -------------
- 
-       function Element (Container : Set; Key : Key_Type) return Element_Type is
-          Node : constant Count_Type := Key_Keys.Find (Container.Content, Key);
- 
-       begin
-          if Node = 0 then
-             raise Constraint_Error with "key not in set";
-          end if;
- 
-          declare
-             N : Tree_Types.Nodes_Type renames Container.Content.Nodes;
-          begin
-             return N (Node).Element;
-          end;
-       end Element;
- 
-       ---------------------
-       -- Equivalent_Keys --
-       ---------------------
- 
-       function Equivalent_Keys (Left, Right : Key_Type) return Boolean is
-       begin
-          if Left < Right
-            or else Right < Left
-          then
-             return False;
-          else
-             return True;
-          end if;
-       end Equivalent_Keys;
- 
-       -------------
-       -- Exclude --
-       -------------
- 
-       procedure Exclude (Container : in out Set; Key : Key_Type) is
-          X : constant Count_Type := Key_Keys.Find (Container.Content, Key);
-       begin
-          if X /= 0 then
-             Delete_Node_Sans_Free (Container.Content, X);
-             Free (Container, X);
-          end if;
-       end Exclude;
- 
-       ----------
-       -- Find --
-       ----------
- 
-       function Find (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Count_Type := Key_Keys.Find (Container.Content, Key);
-       begin
-          return (if Node = 0 then No_Element else (Node => Node));
-       end Find;
- 
-       -----------
-       -- Floor --
-       -----------
- 
-       function Floor (Container : Set; Key : Key_Type) return Cursor is
-          Node : constant Count_Type := Key_Keys.Floor (Container.Content, Key);
-       begin
-          return (if Node = 0 then No_Element else (Node => Node));
-       end Floor;
- 
-       ------------------
-       -- Formal_Model --
-       ------------------
- 
-       package body Formal_Model is
- 
-          -------------------------
-          -- E_Bigger_Than_Range --
-          -------------------------
- 
-          function E_Bigger_Than_Range
-            (Container : E.Sequence;
-             Fst       : Positive_Count_Type;
-             Lst       : Count_Type;
-             Key       : Key_Type) return Boolean
-          is
-          begin
-             for I in Fst .. Lst loop
-                if not (Generic_Keys.Key (E.Get (Container, I)) < Key) then
-                   return False;
-                end if;
-             end loop;
-             return True;
-          end E_Bigger_Than_Range;
- 
-          ---------------
-          -- E_Is_Find --
-          ---------------
- 
-          function E_Is_Find
-            (Container : E.Sequence;
-             Key       : Key_Type;
-             Position  : Count_Type) return Boolean
-          is
-          begin
-             for I in 1 .. Position - 1 loop
-                if Key < Generic_Keys.Key (E.Get (Container, I)) then
-                   return False;
-                end if;
-             end loop;
- 
-             if Position < E.Length (Container) then
-                for I in Position + 1 .. E.Length (Container) loop
-                   if Generic_Keys.Key (E.Get (Container, I)) < Key then
-                      return False;
-                   end if;
-                end loop;
-             end if;
-             return True;
-          end E_Is_Find;
- 
-          --------------------------
-          -- E_Smaller_Than_Range --
-          --------------------------
- 
-          function E_Smaller_Than_Range
-            (Container : E.Sequence;
-             Fst       : Positive_Count_Type;
-             Lst       : Count_Type;
-             Key       : Key_Type) return Boolean
-          is
-          begin
-             for I in Fst .. Lst loop
-                if not (Key < Generic_Keys.Key (E.Get (Container, I))) then
-                   return False;
-                end if;
-             end loop;
-             return True;
-          end E_Smaller_Than_Range;
- 
-          ----------
-          -- Find --
-          ----------
- 
-          function Find
-            (Container : E.Sequence;
-             Key       : Key_Type) return Count_Type
-          is
-          begin
-             for I in 1 .. E.Length (Container) loop
-                if Equivalent_Keys
-                    (Key, Generic_Keys.Key (E.Get (Container, I)))
-                then
-                   return I;
-                end if;
-             end loop;
-             return 0;
-          end Find;
- 
-          -----------------------
-          -- M_Included_Except --
-          -----------------------
- 
-          function M_Included_Except
-            (Left  : M.Set;
-             Right : M.Set;
-             Key   : Key_Type) return Boolean
-          is
-          begin
-             for E of Left loop
-                if not Contains (Right, E)
-                  and not Equivalent_Keys (Generic_Keys.Key (E), Key)
-                then
-                   return False;
-                end if;
-             end loop;
-             return True;
-          end M_Included_Except;
-       end Formal_Model;
- 
-       -------------------------
-       -- Is_Greater_Key_Node --
-       -------------------------
- 
-       function Is_Greater_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Type) return Boolean
-       is
-       begin
-          return Key (Right.Element) < Left;
-       end Is_Greater_Key_Node;
- 
-       ----------------------
-       -- Is_Less_Key_Node --
-       ----------------------
- 
-       function Is_Less_Key_Node
-         (Left  : Key_Type;
-          Right : Node_Type) return Boolean
-       is
-       begin
-          return Left < Key (Right.Element);
-       end Is_Less_Key_Node;
- 
-       ---------
-       -- Key --
-       ---------
- 
-       function Key (Container : Set; Position : Cursor) return Key_Type is
-       begin
-          if not Has_Element (Container, Position) then
-             raise Constraint_Error with
-               "Position cursor has no element";
-          end if;
- 
-          pragma Assert (Vet (Container.Content, Position.Node),
-                         "bad cursor in Key");
- 
-          declare
-             N : Tree_Types.Nodes_Type renames Container.Content.Nodes;
-          begin
-             return Key (N (Position.Node).Element);
-          end;
-       end Key;
- 
-       -------------
-       -- Replace --
-       -------------
- 
-       procedure Replace
-         (Container : in out Set;
-          Key       : Key_Type;
-          New_Item  : Element_Type)
-       is
-          Node : constant Count_Type := Key_Keys.Find (Container.Content, Key);
-       begin
-          if not Has_Element (Container, (Node => Node)) then
-             raise Constraint_Error with
-               "attempt to replace key not in set";
-          else
-             Replace_Element (Container, Node, New_Item);
-          end if;
-       end Replace;
- 
-    end Generic_Keys;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element (Container : Set; Position : Cursor) return Boolean is
-    begin
-       if Position.Node = 0 then
-          return False;
-       else
-          return Container.Content.Nodes (Position.Node).Has_Element;
-       end if;
-    end Has_Element;
- 
-    -------------
-    -- Include --
-    -------------
- 
-    procedure Include (Container : in out Set; New_Item : Element_Type) is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          declare
-             N : Tree_Types.Nodes_Type renames Container.Content.Nodes;
-          begin
-             N (Position.Node).Element := New_Item;
-          end;
-       end if;
-    end Include;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type;
-       Position  : out Cursor;
-       Inserted  : out Boolean)
-    is
-    begin
-       Insert_Sans_Hint (Container.Content, New_Item, Position.Node, Inserted);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Set;
-       New_Item  : Element_Type)
-    is
-       Position : Cursor;
-       Inserted : Boolean;
- 
-    begin
-       Insert (Container, New_Item, Position, Inserted);
- 
-       if not Inserted then
-          raise Constraint_Error with
-            "attempt to insert element already in set";
-       end if;
-    end Insert;
- 
-    ----------------------
-    -- Insert_Sans_Hint --
-    ----------------------
- 
-    procedure Insert_Sans_Hint
-      (Container : in out Tree_Types.Tree_Type;
-       New_Item  : Element_Type;
-       Node      : out Count_Type;
-       Inserted  : out Boolean)
-    is
-       procedure Set_Element (Node : in out Node_Type);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       procedure Insert_Post is
-         new Element_Keys.Generic_Insert_Post (New_Node);
- 
-       procedure Conditional_Insert_Sans_Hint is
-         new Element_Keys.Generic_Conditional_Insert (Insert_Post);
- 
-       procedure Allocate is new Generic_Allocate (Set_Element);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Count_Type is
-          Result : Count_Type;
-       begin
-          Allocate (Container, Result);
-          return Result;
-       end New_Node;
- 
-       -----------------
-       -- Set_Element --
-       -----------------
- 
-       procedure Set_Element (Node : in out Node_Type) is
-       begin
-          Node.Element := New_Item;
-       end Set_Element;
- 
-    --  Start of processing for Insert_Sans_Hint
- 
-    begin
-       Conditional_Insert_Sans_Hint
-         (Container,
-          New_Item,
-          Node,
-          Inserted);
-    end Insert_Sans_Hint;
- 
-    ----------------------
-    -- Insert_With_Hint --
-    ----------------------
- 
-    procedure Insert_With_Hint
-      (Dst_Set  : in out Tree_Types.Tree_Type;
-       Dst_Hint : Count_Type;
-       Src_Node : Node_Type;
-       Dst_Node : out Count_Type)
-    is
-       Success : Boolean;
- 
-       procedure Set_Element (Node : in out Node_Type);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       procedure Insert_Post is
-         new Element_Keys.Generic_Insert_Post (New_Node);
- 
-       procedure Insert_Sans_Hint is
-         new Element_Keys.Generic_Conditional_Insert (Insert_Post);
- 
-       procedure Local_Insert_With_Hint is
-         new Element_Keys.Generic_Conditional_Insert_With_Hint
-               (Insert_Post, Insert_Sans_Hint);
- 
-       procedure Allocate is new Generic_Allocate (Set_Element);
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Count_Type is
-          Result : Count_Type;
-       begin
-          Allocate (Dst_Set, Result);
-          return Result;
-       end New_Node;
- 
-       -----------------
-       -- Set_Element --
-       -----------------
- 
-       procedure Set_Element (Node : in out Node_Type) is
-       begin
-          Node.Element := Src_Node.Element;
-       end Set_Element;
- 
-    --  Start of processing for Insert_With_Hint
- 
-    begin
-       Local_Insert_With_Hint
-         (Dst_Set,
-          Dst_Hint,
-          Src_Node.Element,
-          Dst_Node,
-          Success);
-    end Insert_With_Hint;
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    procedure Intersection (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Set_Intersection (Target.Content, Source.Content);
-    end Intersection;
- 
-    function Intersection (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       return S : Set (Count_Type'Min (Length (Left), Length (Right))) do
-             Assign (S.Content,
-                     Set_Ops.Set_Intersection (Left.Content, Right.Content));
-       end return;
-    end Intersection;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-    begin
-       return Length (Container) = 0;
-    end Is_Empty;
- 
-    -----------------------------
-    -- Is_Greater_Element_Node --
-    -----------------------------
- 
-    function Is_Greater_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Type) return Boolean
-    is
-    begin
-       --  Compute e > node same as node < e
- 
-       return Right.Element < Left;
-    end Is_Greater_Element_Node;
- 
-    --------------------------
-    -- Is_Less_Element_Node --
-    --------------------------
- 
-    function Is_Less_Element_Node
-      (Left  : Element_Type;
-       Right : Node_Type) return Boolean
-    is
-    begin
-       return Left < Right.Element;
-    end Is_Less_Element_Node;
- 
-    -----------------------
-    -- Is_Less_Node_Node --
-    -----------------------
- 
-    function Is_Less_Node_Node (L, R : Node_Type) return Boolean is
-    begin
-       return L.Element < R.Element;
-    end Is_Less_Node_Node;
- 
-    ---------------
-    -- Is_Subset --
-    ---------------
- 
-    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean is
-    begin
-       return Set_Ops.Set_Subset (Subset.Content, Of_Set => Of_Set.Content);
-    end Is_Subset;
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Set) return Cursor is
-    begin
-       return (if Length (Container) = 0
-               then No_Element
-               else (Node => Container.Content.Last));
-    end Last;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Set) return Element_Type is
-    begin
-       if Last (Container).Node = 0 then
-          raise Constraint_Error with "set is empty";
-       end if;
- 
-       declare
-          N : Tree_Types.Nodes_Type renames Container.Content.Nodes;
-       begin
-          return N (Last (Container).Node).Element;
-       end;
-    end Last_Element;
- 
-    --------------
-    -- Left_Son --
-    --------------
- 
-    function Left_Son (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Left;
-    end Left_Son;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-    begin
-       return Container.Content.Length;
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Set; Source : in out Set) is
-       N : Tree_Types.Nodes_Type renames Source.Content.Nodes;
-       X : Count_Type;
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < Length (Source) then
-          raise Constraint_Error with  -- ???
-            "Source length exceeds Target capacity";
-       end if;
- 
-       Clear (Target);
- 
-       loop
-          X := Source.Content.First;
-          exit when X = 0;
- 
-          Insert (Target, N (X).Element);  -- optimize???
- 
-          Tree_Operations.Delete_Node_Sans_Free (Source.Content, X);
-          Free (Source, X);
-       end loop;
-    end Move;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (Container : Set; Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error;
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Next");
-       return (Node => Tree_Operations.Next (Container.Content, Position.Node));
-    end Next;
- 
-    procedure Next (Container : Set; Position : in out Cursor) is
-    begin
-       Position := Next (Container, Position);
-    end Next;
- 
-    -------------
-    -- Overlap --
-    -------------
- 
-    function Overlap (Left, Right : Set) return Boolean is
-    begin
-       return Set_Ops.Set_Overlap (Left.Content, Right.Content);
-    end Overlap;
- 
-    ------------
-    -- Parent --
-    ------------
- 
-    function Parent (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Parent;
-    end Parent;
- 
-    --------------
-    -- Previous --
-    --------------
- 
-    function Previous (Container : Set; Position : Cursor) return Cursor is
-    begin
-       if Position = No_Element then
-          return No_Element;
-       end if;
- 
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error;
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Previous");
- 
-       declare
-          Node : constant Count_Type :=
-            Tree_Operations.Previous (Container.Content, Position.Node);
-       begin
-          return (if Node = 0 then No_Element else (Node => Node));
-       end;
-    end Previous;
- 
-    procedure Previous (Container : Set; Position : in out Cursor) is
-    begin
-       Position := Previous (Container, Position);
-    end Previous;
- 
-    -------------
-    -- Replace --
-    -------------
- 
-    procedure Replace (Container : in out Set; New_Item : Element_Type) is
-       Node : constant Count_Type :=
-         Element_Keys.Find (Container.Content, New_Item);
- 
-    begin
-       if Node = 0 then
-          raise Constraint_Error with
-            "attempt to replace element not in set";
-       end if;
- 
-       Container.Content.Nodes (Node).Element := New_Item;
-    end Replace;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Tree : in out Set;
-       Node : Count_Type;
-       Item : Element_Type)
-    is
-       pragma Assert (Node /= 0);
- 
-       function New_Node return Count_Type;
-       pragma Inline (New_Node);
- 
-       procedure Local_Insert_Post is
-         new Element_Keys.Generic_Insert_Post (New_Node);
- 
-       procedure Local_Insert_Sans_Hint is
-         new Element_Keys.Generic_Conditional_Insert (Local_Insert_Post);
- 
-       procedure Local_Insert_With_Hint is
-         new Element_Keys.Generic_Conditional_Insert_With_Hint
-           (Local_Insert_Post,
-            Local_Insert_Sans_Hint);
- 
-       NN : Tree_Types.Nodes_Type renames Tree.Content.Nodes;
- 
-       --------------
-       -- New_Node --
-       --------------
- 
-       function New_Node return Count_Type is
-          N : Node_Type renames NN (Node);
-       begin
-          N.Element := Item;
-          N.Color   := Red;
-          N.Parent  := 0;
-          N.Right   := 0;
-          N.Left    := 0;
-          return Node;
-       end New_Node;
- 
-       Hint      : Count_Type;
-       Result    : Count_Type;
-       Inserted  : Boolean;
- 
-    --  Start of processing for Insert
- 
-    begin
-       if Item < NN (Node).Element
-         or else NN (Node).Element < Item
-       then
-          null;
- 
-       else
-          NN (Node).Element := Item;
-          return;
-       end if;
- 
-       Hint := Element_Keys.Ceiling (Tree.Content, Item);
- 
-       if Hint = 0 then
-          null;
- 
-       elsif Item < NN (Hint).Element then
-          if Hint = Node then
-             NN (Node).Element := Item;
-             return;
-          end if;
- 
-       else
-          pragma Assert (not (NN (Hint).Element < Item));
-          raise Program_Error with "attempt to replace existing element";
-       end if;
- 
-       Tree_Operations.Delete_Node_Sans_Free (Tree.Content, Node);
- 
-       Local_Insert_With_Hint
-         (Tree     => Tree.Content,
-          Position => Hint,
-          Key      => Item,
-          Node     => Result,
-          Inserted => Inserted);
- 
-       pragma Assert (Inserted);
-       pragma Assert (Result = Node);
-    end Replace_Element;
- 
-    procedure Replace_Element
-      (Container : in out Set;
-       Position  : Cursor;
-       New_Item  : Element_Type)
-    is
-    begin
-       if not Has_Element (Container, Position) then
-          raise Constraint_Error with
-            "Position cursor has no element";
-       end if;
- 
-       pragma Assert (Vet (Container.Content, Position.Node),
-                      "bad cursor in Replace_Element");
- 
-       Replace_Element (Container, Position.Node, New_Item);
-    end Replace_Element;
- 
-    ---------------
-    -- Right_Son --
-    ---------------
- 
-    function Right_Son (Node : Node_Type) return Count_Type is
-    begin
-       return Node.Right;
-    end Right_Son;
- 
-    ---------------
-    -- Set_Color --
-    ---------------
- 
-    procedure Set_Color
-      (Node  : in out Node_Type;
-       Color : Red_Black_Trees.Color_Type)
-    is
-    begin
-       Node.Color := Color;
-    end Set_Color;
- 
-    --------------
-    -- Set_Left --
-    --------------
- 
-    procedure Set_Left (Node : in out Node_Type; Left : Count_Type) is
-    begin
-       Node.Left := Left;
-    end Set_Left;
- 
-    ----------------
-    -- Set_Parent --
-    ----------------
- 
-    procedure Set_Parent (Node : in out Node_Type; Parent : Count_Type) is
-    begin
-       Node.Parent := Parent;
-    end Set_Parent;
- 
-    ---------------
-    -- Set_Right --
-    ---------------
- 
-    procedure Set_Right (Node : in out Node_Type; Right : Count_Type) is
-    begin
-       Node.Right := Right;
-    end Set_Right;
- 
-    --------------------------
-    -- Symmetric_Difference --
-    --------------------------
- 
-    procedure Symmetric_Difference (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Set_Symmetric_Difference (Target.Content, Source.Content);
-    end Symmetric_Difference;
- 
-    function Symmetric_Difference (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Empty_Set;
-       end if;
- 
-       if Length (Right) = 0 then
-          return Copy (Left);
-       end if;
- 
-       if Length (Left) = 0 then
-          return Copy (Right);
-       end if;
- 
-       return S : Set (Length (Left) + Length (Right)) do
-          Assign
-            (S.Content,
-             Set_Ops.Set_Symmetric_Difference (Left.Content, Right.Content));
-       end return;
-    end Symmetric_Difference;
- 
-    ------------
-    -- To_Set --
-    ------------
- 
-    function To_Set (New_Item : Element_Type) return Set is
-       Node     : Count_Type;
-       Inserted : Boolean;
- 
-    begin
-       return S : Set (Capacity => 1) do
-          Insert_Sans_Hint (S.Content, New_Item, Node, Inserted);
-          pragma Assert (Inserted);
-       end return;
-    end To_Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    procedure Union (Target : in out Set; Source : Set) is
-    begin
-       Set_Ops.Set_Union (Target.Content, Source.Content);
-    end Union;
- 
-    function Union (Left, Right : Set) return Set is
-    begin
-       if Left'Address = Right'Address then
-          return Copy (Left);
-       end if;
- 
-       if Length (Left) = 0 then
-          return Copy (Right);
-       end if;
- 
-       if Length (Right) = 0 then
-          return Copy (Left);
-       end if;
- 
-       return S : Set (Length (Left) + Length (Right)) do
-          Assign (S, Source => Left);
-          Union (S, Right);
-       end return;
-    end Union;
- 
- end Ada.Containers.Formal_Ordered_Sets;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cforse.ads gcc-13.1.0/gcc/ada/libgnat/a-cforse.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cforse.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cforse.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
***************
*** 29,1802 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- --  This spec is derived from package Ada.Containers.Bounded_Ordered_Sets in
- --  the Ada 2012 RM. The modifications are meant to facilitate formal proofs by
- --  making it easier to express properties, and by making the specification of
- --  this unit compatible with SPARK 2014. Note that the API of this unit may be
- --  subject to incompatible changes as SPARK 2014 evolves.
- 
- --  The modifications are:
- 
- --    A parameter for the container is added to every function reading the
- --    content of a container: Key, Element, Next, Query_Element, Previous,
- --    Has_Element, Iterate, Reverse_Iterate. This change is motivated by the
- --    need to have cursors which are valid on different containers (typically
- --    a container C and its previous version C'Old) for expressing properties,
- --    which is not possible if cursors encapsulate an access to the underlying
- --    container. The operators "<" and ">" that could not be modified that way
- --    have been removed.
- 
- with Ada.Containers.Functional_Maps;
- with Ada.Containers.Functional_Sets;
- with Ada.Containers.Functional_Vectors;
- private with Ada.Containers.Red_Black_Trees;
- 
  generic
!    type Element_Type is private;
! 
!    with function "<" (Left, Right : Element_Type) return Boolean is <>;
! 
! package Ada.Containers.Formal_Ordered_Sets with
!   SPARK_Mode
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    function Equivalent_Elements (Left, Right : Element_Type) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Equivalent_Elements'Result =
!          (not (Left < Right) and not (Right < Left));
!    pragma Annotate (GNATprove, Inline_For_Proof, Equivalent_Elements);
! 
!    type Set (Capacity : Count_Type) is private with
!      Iterable => (First       => First,
!                   Next        => Next,
!                   Has_Element => Has_Element,
!                   Element     => Element),
!      Default_Initial_Condition => Is_Empty (Set);
!    pragma Preelaborable_Initialization (Set);
! 
!    type Cursor is record
!       Node : Count_Type;
!    end record;
! 
!    No_Element : constant Cursor := (Node => 0);
! 
!    function Length (Container : Set) return Count_Type with
!      Global => null,
!      Post   => Length'Result <= Container.Capacity;
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
!       subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!       package M is new Ada.Containers.Functional_Sets
!         (Element_Type    => Element_Type,
!          Equivalent_Elements => Equivalent_Elements);
! 
!       function "="
!         (Left  : M.Set;
!          Right : M.Set) return Boolean renames M."=";
! 
!       function "<="
!         (Left  : M.Set;
!          Right : M.Set) return Boolean renames M."<=";
! 
!       package E is new Ada.Containers.Functional_Vectors
!         (Element_Type => Element_Type,
!          Index_Type   => Positive_Count_Type);
! 
!       function "="
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean renames E."=";
! 
!       function "<"
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean renames E."<";
! 
!       function "<="
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean renames E."<=";
! 
!       function E_Bigger_Than_Range
!         (Container : E.Sequence;
!          Fst       : Positive_Count_Type;
!          Lst       : Count_Type;
!          Item      : Element_Type) return Boolean
!       with
!         Global => null,
!         Pre    => Lst <= E.Length (Container),
!         Post   =>
!           E_Bigger_Than_Range'Result =
!             (for all I in Fst .. Lst => E.Get (Container, I) < Item);
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Bigger_Than_Range);
! 
!       function E_Smaller_Than_Range
!         (Container : E.Sequence;
!          Fst       : Positive_Count_Type;
!          Lst       : Count_Type;
!          Item      : Element_Type) return Boolean
!       with
!         Global => null,
!         Pre    => Lst <= E.Length (Container),
!         Post   =>
!           E_Smaller_Than_Range'Result =
!             (for all I in Fst .. Lst => Item < E.Get (Container, I));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Smaller_Than_Range);
! 
!       function E_Is_Find
!         (Container : E.Sequence;
!          Item      : Element_Type;
!          Position  : Count_Type) return Boolean
!       with
!         Global => null,
!         Pre    => Position - 1 <= E.Length (Container),
!         Post   =>
!           E_Is_Find'Result =
! 
!             ((if Position > 0 then
!                 E_Bigger_Than_Range (Container, 1, Position - 1, Item))
! 
!              and (if Position < E.Length (Container) then
!                     E_Smaller_Than_Range
!                       (Container,
!                        Position + 1,
!                        E.Length (Container),
!                        Item)));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Is_Find);
! 
!       function Find
!         (Container : E.Sequence;
!          Item      : Element_Type) return Count_Type
!       --  Search for Item in Container
! 
!       with
!         Global => null,
!         Post =>
!           (if Find'Result > 0 then
!              Find'Result <= E.Length (Container)
!                and Equivalent_Elements (Item, E.Get (Container, Find'Result)));
! 
!       function E_Elements_Included
!         (Left  : E.Sequence;
!          Right : E.Sequence) return Boolean
!       --  The elements of Left are contained in Right
! 
!       with
!         Global => null,
!         Post   =>
!           E_Elements_Included'Result =
!             (for all I in 1 .. E.Length (Left) =>
!                Find (Right, E.Get (Left, I)) > 0
!                  and then E.Get (Right, Find (Right, E.Get (Left, I))) =
!                      E.Get (Left, I));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Elements_Included);
! 
!       function E_Elements_Included
!         (Left  : E.Sequence;
!          Model : M.Set;
!          Right : E.Sequence) return Boolean
!       --  The elements of Container contained in Model are in Right
! 
!       with
!         Global => null,
!         Post   =>
!           E_Elements_Included'Result =
!             (for all I in 1 .. E.Length (Left) =>
!               (if M.Contains (Model, E.Get (Left, I)) then
!                  Find (Right, E.Get (Left, I)) > 0
!                    and then E.Get (Right, Find (Right, E.Get (Left, I))) =
!                        E.Get (Left, I)));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Elements_Included);
! 
!       function E_Elements_Included
!         (Container : E.Sequence;
!          Model     : M.Set;
!          Left      : E.Sequence;
!          Right     : E.Sequence) return Boolean
!       --  The elements of Container contained in Model are in Left and others
!       --  are in Right.
! 
!       with
!         Global => null,
!         Post   =>
!           E_Elements_Included'Result =
!             (for all I in 1 .. E.Length (Container) =>
!               (if M.Contains (Model, E.Get (Container, I)) then
!                  Find (Left, E.Get (Container, I)) > 0
!                    and then E.Get (Left, Find (Left, E.Get (Container, I))) =
!                        E.Get (Container, I)
!                else
!                  Find (Right, E.Get (Container, I)) > 0
!                    and then E.Get (Right, Find (Right, E.Get (Container, I))) =
!                        E.Get (Container, I)));
!       pragma Annotate (GNATprove, Inline_For_Proof, E_Elements_Included);
! 
!       package P is new Ada.Containers.Functional_Maps
!         (Key_Type                       => Cursor,
!          Element_Type                   => Positive_Count_Type,
!          Equivalent_Keys                => "=",
!          Enable_Handling_Of_Equivalence => False);
! 
!       function "="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."=";
! 
!       function "<="
!         (Left  : P.Map;
!          Right : P.Map) return Boolean renames P."<=";
! 
!       function P_Positions_Shifted
!         (Small : P.Map;
!          Big   : P.Map;
!          Cut   : Positive_Count_Type;
!          Count : Count_Type := 1) return Boolean
!       with
!         Global => null,
!         Post   =>
!           P_Positions_Shifted'Result =
! 
!             --  Big contains all cursors of Small
! 
!             (P.Keys_Included (Small, Big)
! 
!               --  Cursors located before Cut are not moved, cursors located
!               --  after are shifted by Count.
! 
!               and (for all I of Small =>
!                     (if P.Get (Small, I) < Cut then
!                         P.Get (Big, I) = P.Get (Small, I)
!                      else
!                         P.Get (Big, I) - Count = P.Get (Small, I)))
! 
!               --  New cursors of Big (if any) are between Cut and Cut - 1 +
!               --  Count.
! 
!               and (for all I of Big =>
!                     P.Has_Key (Small, I)
!                       or P.Get (Big, I) - Count in Cut - Count  .. Cut - 1));
! 
!       function Mapping_Preserved
!         (E_Left  : E.Sequence;
!          E_Right : E.Sequence;
!          P_Left  : P.Map;
!          P_Right : P.Map) return Boolean
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           (if Mapping_Preserved'Result then
! 
!              --  Right contains all the cursors of Left
! 
!              P.Keys_Included (P_Left, P_Right)
! 
!                --  Right contains all the elements of Left
! 
!                and E_Elements_Included (E_Left, E_Right)
! 
!                --  Mappings from cursors to elements induced by E_Left, P_Left
!                --  and E_Right, P_Right are the same.
! 
!                and (for all C of P_Left =>
!                      E.Get (E_Left, P.Get (P_Left, C)) =
!                      E.Get (E_Right, P.Get (P_Right, C))));
! 
!       function Mapping_Preserved_Except
!         (E_Left   : E.Sequence;
!          E_Right  : E.Sequence;
!          P_Left   : P.Map;
!          P_Right  : P.Map;
!          Position : Cursor) return Boolean
!       with
!         Ghost,
!         Global => null,
!         Post   =>
!           (if Mapping_Preserved_Except'Result then
! 
!              --  Right contains all the cursors of Left
! 
!              P.Keys_Included (P_Left, P_Right)
! 
!                --  Mappings from cursors to elements induced by E_Left, P_Left
!                --  and E_Right, P_Right are the same except for Position.
! 
!                and (for all C of P_Left =>
!                      (if C /= Position then
!                         E.Get (E_Left, P.Get (P_Left, C)) =
!                         E.Get (E_Right, P.Get (P_Right, C)))));
! 
!       function Model (Container : Set) return M.Set with
!       --  The high-level model of a set is a set of elements. Neither cursors
!       --  nor order of elements are represented in this model. Elements are
!       --  modeled up to equivalence.
! 
!         Ghost,
!         Global => null,
!         Post   => M.Length (Model'Result) = Length (Container);
! 
!       function Elements (Container : Set) return E.Sequence with
!       --  The Elements sequence represents the underlying list structure of
!       --  sets that is used for iteration. It stores the actual values of
!       --  elements in the set. It does not model cursors.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           E.Length (Elements'Result) = Length (Container)
! 
!             --  It only contains keys contained in Model
! 
!             and (for all Item of Elements'Result =>
!                    M.Contains (Model (Container), Item))
! 
!             --  It contains all the elements contained in Model
! 
!             and (for all Item of Model (Container) =>
!                   (Find (Elements'Result, Item) > 0
!                      and then Equivalent_Elements
!                       (E.Get (Elements'Result, Find (Elements'Result, Item)),
!                        Item)))
! 
!             --  It is sorted in increasing order
! 
!             and (for all I in 1 .. Length (Container) =>
!                   Find (Elements'Result, E.Get (Elements'Result, I)) = I
!                   and
!                     E_Is_Find
!                       (Elements'Result, E.Get (Elements'Result, I), I));
!       pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Elements);
! 
!       function Positions (Container : Set) return P.Map with
!       --  The Positions map is used to model cursors. It only contains valid
!       --  cursors and maps them to their position in the container.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           not P.Has_Key (Positions'Result, No_Element)
! 
!             --  Positions of cursors are smaller than the container's length
! 
!             and then
!               (for all I of Positions'Result =>
!                 P.Get (Positions'Result, I) in 1 .. Length (Container)
! 
!             --  No two cursors have the same position. Note that we do not
!             --  state that there is a cursor in the map for each position, as
!             --  it is rarely needed.
! 
!             and then
!               (for all J of Positions'Result =>
!                 (if P.Get (Positions'Result, I) = P.Get (Positions'Result, J)
!                   then I = J)));
! 
!       procedure Lift_Abstraction_Level (Container : Set) with
!         --  Lift_Abstraction_Level is a ghost procedure that does nothing but
!         --  assume that we can access the same elements by iterating over
!         --  positions or cursors.
!         --  This information is not generally useful except when switching from
!         --  a low-level, cursor-aware view of a container, to a high-level,
!         --  position-based view.
! 
!         Ghost,
!         Global => null,
!         Post   =>
!           (for all Item of Elements (Container) =>
!             (for some I of Positions (Container) =>
!               E.Get (Elements (Container), P.Get (Positions (Container), I)) =
!                 Item));
! 
!       function Contains
!         (C : M.Set;
!          K : Element_Type) return Boolean renames M.Contains;
!       --  To improve readability of contracts, we rename the function used to
!       --  search for an element in the model to Contains.
! 
!    end Formal_Model;
!    use Formal_Model;
! 
!    Empty_Set : constant Set;
! 
!    function "=" (Left, Right : Set) return Boolean with
!      Global => null,
!      Post   =>
! 
!        --  If two sets are equal, they contain the same elements in the same
!        --  order.
! 
!        (if "="'Result then Elements (Left) = Elements (Right)
! 
!         --  If they are different, then they do not contain the same elements
! 
!         else
!            not E_Elements_Included (Elements (Left), Elements (Right))
!               or not E_Elements_Included (Elements (Right), Elements (Left)));
! 
!    function Equivalent_Sets (Left, Right : Set) return Boolean with
!      Global => null,
!      Post   => Equivalent_Sets'Result = (Model (Left) = Model (Right));
! 
!    function To_Set (New_Item : Element_Type) return Set with
!      Global => null,
!      Post   =>
!        M.Is_Singleton (Model (To_Set'Result), New_Item)
!          and Length (To_Set'Result) = 1
!          and E.Get (Elements (To_Set'Result), 1) = New_Item;
! 
!    function Is_Empty (Container : Set) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
! 
!    procedure Clear (Container : in out Set) with
!      Global => null,
!      Post   => Length (Container) = 0 and M.Is_Empty (Model (Container));
! 
!    procedure Assign (Target : in out Set; Source : Set) with
!      Global => null,
!      Pre => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)
!          and Elements (Target) = Elements (Source)
!          and Length (Target) = Length (Source);
! 
!    function Copy (Source : Set; Capacity : Count_Type := 0) return Set with
!      Global => null,
!      Pre    => Capacity = 0 or else Capacity >= Source.Capacity,
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and Elements (Copy'Result) = Elements (Source)
!          and Positions (Copy'Result) = Positions (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Source.Capacity
!               else
!                  Copy'Result.Capacity = Capacity);
! 
!    function Element
!      (Container : Set;
!       Position  : Cursor) return Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Element'Result =
!          E.Get (Elements (Container), P.Get (Positions (Container), Position));
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out Set;
!       Position  : Cursor;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Length (Container) = Length (Container)'Old
! 
!           --  Position now maps to New_Item
! 
!           and Element (Container, Position) = New_Item
! 
!           --  New_Item is contained in Container
! 
!           and Contains (Model (Container), New_Item)
! 
!           --  Other elements are preserved
! 
!           and M.Included_Except
!                 (Model (Container)'Old,
!                  Model (Container),
!                  Element (Container, Position)'Old)
!           and M.Included_Except
!                 (Model (Container),
!                  Model (Container)'Old,
!                  New_Item)
! 
!           --  Mapping from cursors to elements is preserved
! 
!           and Mapping_Preserved_Except
!                 (E_Left   => Elements (Container)'Old,
!                  E_Right  => Elements (Container),
!                  P_Left   => Positions (Container)'Old,
!                  P_Right  => Positions (Container),
!                  Position => Position)
!           and Positions (Container) = Positions (Container)'Old;
! 
!    function Constant_Reference
!      (Container : aliased Set;
!       Position  : Cursor) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Has_Element (Container, Position),
!      Post   =>
!        Constant_Reference'Result.all =
!          E.Get (Elements (Container), P.Get (Positions (Container), Position));
! 
!    procedure Move (Target : in out Set; Source : in out Set) with
!      Global => null,
!      Pre    => Target.Capacity >= Length (Source),
!      Post   =>
!        Model (Target) = Model (Source)'Old
!          and Elements (Target) = Elements (Source)'Old
!          and Length (Source)'Old = Length (Target)
!          and Length (Source) = 0;
! 
!    procedure Insert
!      (Container : in out Set;
!       New_Item  : Element_Type;
!       Position  : out Cursor;
!       Inserted  : out Boolean)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity
!          or Contains (Container, New_Item),
!      Post           =>
!        Contains (Container, New_Item)
!          and Has_Element (Container, Position)
!          and Equivalent_Elements (Element (Container, Position), New_Item)
!          and E_Is_Find
!                (Elements (Container),
!                 New_Item,
!                 P.Get (Positions (Container), Position)),
!      Contract_Cases =>
! 
!        --  If New_Item is already in Container, it is not modified and Inserted
!        --  is set to False.
! 
!        (Contains (Container, New_Item) =>
!           not Inserted
!             and Model (Container) = Model (Container)'Old
!             and Elements (Container) = Elements (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, New_Item is inserted in Container and Inserted is set to
!         --  True
! 
!         others =>
!           Inserted
!             and Length (Container) = Length (Container)'Old + 1
! 
!             --  Position now maps to New_Item
! 
!             and Element (Container, Position) = New_Item
! 
!             --  Other elements are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    New_Item)
! 
!             --  The elements of Container located before Position are preserved
! 
!             and E.Range_Equal
!                   (Left  => Elements (Container)'Old,
!                    Right => Elements (Container),
!                    Fst   => 1,
!                    Lst   => P.Get (Positions (Container), Position) - 1)
! 
!             --  Other elements are shifted by 1
! 
!             and E.Range_Shifted
!                   (Left   => Elements (Container)'Old,
!                    Right  => Elements (Container),
!                    Fst    => P.Get (Positions (Container), Position),
!                    Lst    => Length (Container)'Old,
!                    Offset => 1)
! 
!             --  A new cursor has been inserted at position Position in
!             --  Container.
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut => P.Get (Positions (Container), Position)));
! 
!    procedure Insert
!      (Container : in out Set;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Container.Capacity
!          and then (not Contains (Container, New_Item)),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
!          and Contains (Container, New_Item)
! 
!          --  New_Item is inserted in the set
! 
!          and E.Get (Elements (Container),
!                     Find (Elements (Container), New_Item)) = New_Item
! 
!          --  Other mappings are preserved
! 
!          and Model (Container)'Old <= Model (Container)
!          and M.Included_Except
!                (Model (Container),
!                 Model (Container)'Old,
!                 New_Item)
! 
!          --  The elements of Container located before New_Item are preserved
! 
!          and E.Range_Equal
!                (Left  => Elements (Container)'Old,
!                 Right => Elements (Container),
!                 Fst   => 1,
!                 Lst   => Find (Elements (Container), New_Item) - 1)
! 
!          --  Other elements are shifted by 1
! 
!          and E.Range_Shifted
!                (Left   => Elements (Container)'Old,
!                 Right  => Elements (Container),
!                 Fst    => Find (Elements (Container), New_Item),
!                 Lst    => Length (Container)'Old,
!                 Offset => 1)
! 
!          --  A new cursor has been inserted in Container
! 
!          and P_Positions_Shifted
!                (Positions (Container)'Old,
!                 Positions (Container),
!                 Cut => Find (Elements (Container), New_Item));
! 
!    procedure Include
!      (Container : in out Set;
!       New_Item  : Element_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Length (Container) < Container.Capacity
!          or Contains (Container, New_Item),
!      Post           => Contains (Container, New_Item),
!      Contract_Cases =>
! 
!        --  If New_Item is already in Container
! 
!        (Contains (Container, New_Item) =>
! 
!           --  Elements are preserved
! 
!           Model (Container)'Old = Model (Container)
! 
!             --  Cursors are preserved
! 
!             and Positions (Container) = Positions (Container)'Old
! 
!             --  The element equivalent to New_Item in Container is replaced by
!             --  New_Item.
! 
!             and E.Get (Elements (Container),
!                        Find (Elements (Container), New_Item)) = New_Item
! 
!             and E.Equal_Except
!                   (Elements (Container)'Old,
!                    Elements (Container),
!                    Find (Elements (Container), New_Item)),
! 
!         --  Otherwise, New_Item is inserted in Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old + 1
! 
!             --  Other elements are preserved
! 
!             and Model (Container)'Old <= Model (Container)
!             and M.Included_Except
!                   (Model (Container),
!                    Model (Container)'Old,
!                    New_Item)
! 
!             --  New_Item is inserted in Container
! 
!             and E.Get (Elements (Container),
!                        Find (Elements (Container), New_Item)) = New_Item
! 
!             --  The Elements of Container located before New_Item are preserved
! 
!             and E.Range_Equal
!                   (Left  => Elements (Container)'Old,
!                    Right => Elements (Container),
!                    Fst   => 1,
!                    Lst   => Find (Elements (Container), New_Item) - 1)
! 
!             --  Other Elements are shifted by 1
! 
!             and E.Range_Shifted
!                   (Left   => Elements (Container)'Old,
!                    Right  => Elements (Container),
!                    Fst    => Find (Elements (Container), New_Item),
!                    Lst    => Length (Container)'Old,
!                    Offset => 1)
! 
!             --  A new cursor has been inserted in Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container)'Old,
!                    Positions (Container),
!                    Cut => Find (Elements (Container), New_Item)));
! 
!    procedure Replace
!      (Container : in out Set;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Contains (Container, New_Item),
!      Post   =>
! 
!        --  Elements are preserved
! 
!        Model (Container)'Old = Model (Container)
! 
!          --  Cursors are preserved
! 
!          and Positions (Container) = Positions (Container)'Old
! 
!          --  The element equivalent to New_Item in Container is replaced by
!          --  New_Item.
! 
!          and E.Get (Elements (Container),
!                     Find (Elements (Container), New_Item)) = New_Item
!          and E.Equal_Except
!               (Elements (Container)'Old,
!                Elements (Container),
!                Find (Elements (Container), New_Item));
! 
!    procedure Exclude
!      (Container : in out Set;
!       Item      : Element_Type)
!    with
!      Global         => null,
!      Post           => not Contains (Container, Item),
!      Contract_Cases =>
! 
!        --  If Item is not in Container, nothing is changed
! 
!        (not Contains (Container, Item) =>
!           Model (Container) = Model (Container)'Old
!             and Elements (Container) = Elements (Container)'Old
!             and Positions (Container) = Positions (Container)'Old,
! 
!         --  Otherwise, Item is removed from Container
! 
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  Other elements are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Item)
! 
!             --  The elements of Container located before Item are preserved
! 
!             and E.Range_Equal
!                   (Left  => Elements (Container)'Old,
!                    Right => Elements (Container),
!                    Fst   => 1,
!                    Lst   => Find (Elements (Container), Item)'Old - 1)
! 
!             --  The elements located after Item are shifted by 1
! 
!             and E.Range_Shifted
!                   (Left   => Elements (Container),
!                    Right  => Elements (Container)'Old,
!                    Fst    => Find (Elements (Container), Item)'Old,
!                    Lst    => Length (Container),
!                    Offset => 1)
! 
!             --  A cursor has been removed from Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => Find (Elements (Container), Item)'Old));
! 
!    procedure Delete
!      (Container : in out Set;
!       Item      : Element_Type)
!    with
!      Global => null,
!      Pre    => Contains (Container, Item),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Item is no longer in Container
! 
!          and not Contains (Container, Item)
! 
!          --  Other elements are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Item)
! 
!          --  The elements of Container located before Item are preserved
! 
!          and E.Range_Equal
!                (Left  => Elements (Container)'Old,
!                 Right => Elements (Container),
!                 Fst   => 1,
!                 Lst   => Find (Elements (Container), Item)'Old - 1)
! 
!          --  The elements located after Item are shifted by 1
! 
!          and E.Range_Shifted
!                (Left   => Elements (Container),
!                 Right  => Elements (Container)'Old,
!                 Fst    => Find (Elements (Container), Item)'Old,
!                 Lst    => Length (Container),
!                 Offset => 1)
! 
!          --  A cursor has been removed from Container
! 
!          and P_Positions_Shifted
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Cut   => Find (Elements (Container), Item)'Old);
! 
!    procedure Delete
!      (Container : in out Set;
!       Position  : in out Cursor)
!    with
!      Global  => null,
!      Depends => (Container =>+ Position, Position => null),
!      Pre     => Has_Element (Container, Position),
!      Post    =>
!        Position = No_Element
!          and Length (Container) = Length (Container)'Old - 1
! 
!          --  The element at position Position is no longer in Container
! 
!          and not Contains (Container, Element (Container, Position)'Old)
!          and not P.Has_Key (Positions (Container), Position'Old)
! 
!          --  Other elements are preserved
! 
!          and Model (Container) <= Model (Container)'Old
!          and M.Included_Except
!                (Model (Container)'Old,
!                 Model (Container),
!                 Element (Container, Position)'Old)
! 
!          --  The elements of Container located before Position are preserved.
! 
!          and E.Range_Equal
!                (Left  => Elements (Container)'Old,
!                 Right => Elements (Container),
!                 Fst   => 1,
!                 Lst   => P.Get (Positions (Container)'Old, Position'Old) - 1)
! 
!          --  The elements located after Position are shifted by 1
! 
!          and E.Range_Shifted
!                (Left   => Elements (Container),
!                 Right  => Elements (Container)'Old,
!                 Fst    => P.Get (Positions (Container)'Old, Position'Old),
!                 Lst    => Length (Container),
!                 Offset => 1)
! 
!          --  Position has been removed from Container
! 
!          and P_Positions_Shifted
!                (Positions (Container),
!                 Positions (Container)'Old,
!                 Cut   => P.Get (Positions (Container)'Old, Position'Old));
! 
!    procedure Delete_First (Container : in out Set) with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 => Length (Container) = 0,
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  The first element has been removed from Container
! 
!             and not Contains (Container, First_Element (Container)'Old)
! 
!             --  Other elements are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    First_Element (Container)'Old)
! 
!             --  Other elements are shifted by 1
! 
!             and E.Range_Shifted
!                   (Left   => Elements (Container),
!                    Right  => Elements (Container)'Old,
!                    Fst    => 1,
!                    Lst    => Length (Container),
!                    Offset => 1)
! 
!             --  First has been removed from Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => 1));
! 
!    procedure Delete_Last (Container : in out Set) with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 => Length (Container) = 0,
!         others =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  The last element has been removed from Container
! 
!             and not Contains (Container, Last_Element (Container)'Old)
! 
!             --  Other elements are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M.Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Last_Element (Container)'Old)
! 
!             --  Others elements of Container are preserved
! 
!             and E.Range_Equal
!                   (Left  => Elements (Container)'Old,
!                    Right => Elements (Container),
!                    Fst   => 1,
!                    Lst   => Length (Container))
! 
!             --  Last cursor has been removed from Container
! 
!             and Positions (Container) <= Positions (Container)'Old);
! 
!    procedure Union (Target : in out Set; Source : Set) with
!      Global => null,
!      Pre    =>
!        Length (Source) - Length (Target and Source) <=
!          Target.Capacity - Length (Target),
!      Post   =>
!        Length (Target) = Length (Target)'Old
!          - M.Num_Overlaps (Model (Target)'Old, Model (Source))
!          + Length (Source)
! 
!          --  Elements already in Target are still in Target
! 
!          and Model (Target)'Old <= Model (Target)
! 
!          --  Elements of Source are included in Target
! 
!          and Model (Source) <= Model (Target)
! 
!          --  Elements of Target come from either Source or Target
! 
!          and
!            M.Included_In_Union
!              (Model (Target), Model (Source), Model (Target)'Old)
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and
!            E_Elements_Included
!              (Elements (Target),
!               Model (Target)'Old,
!               Elements (Target)'Old,
!               Elements (Source))
!          and
!            E_Elements_Included
!              (Elements (Target)'Old, Model (Target)'Old, Elements (Target))
!          and
!            E_Elements_Included
!              (Elements (Source),
!               Model (Target)'Old,
!               Elements (Source),
!               Elements (Target))
! 
!          --  Mapping from cursors of Target to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Target)'Old,
!                 E_Right => Elements (Target),
!                 P_Left  => Positions (Target)'Old,
!                 P_Right => Positions (Target));
! 
!    function Union (Left, Right : Set) return Set with
!      Global => null,
!      Pre    => Length (Left) <= Count_Type'Last - Length (Right),
!      Post   =>
!        Length (Union'Result) = Length (Left)
!          - M.Num_Overlaps (Model (Left), Model (Right))
!          + Length (Right)
! 
!          --  Elements of Left and Right are in the result of Union
! 
!          and Model (Left) <= Model (Union'Result)
!          and Model (Right) <= Model (Union'Result)
! 
!          --  Elements of the result of union come from either Left or Right
! 
!          and
!            M.Included_In_Union
!              (Model (Union'Result), Model (Left), Model (Right))
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and
!            E_Elements_Included
!              (Elements (Union'Result),
!               Model (Left),
!               Elements (Left),
!               Elements (Right))
!          and
!            E_Elements_Included
!              (Elements (Left), Model (Left), Elements (Union'Result))
!          and
!            E_Elements_Included
!              (Elements (Right),
!               Model (Left),
!               Elements (Right),
!               Elements (Union'Result));
! 
!    function "or" (Left, Right : Set) return Set renames Union;
! 
!    procedure Intersection (Target : in out Set; Source : Set) with
!      Global => null,
!      Post   =>
!        Length (Target) =
!          M.Num_Overlaps (Model (Target)'Old, Model (Source))
! 
!          --  Elements of Target were already in Target
! 
!          and Model (Target) <= Model (Target)'Old
! 
!          --  Elements of Target are in Source
! 
!          and Model (Target) <= Model (Source)
! 
!          --  Elements both in Source and Target are in the intersection
! 
!          and
!            M.Includes_Intersection
!              (Model (Target), Model (Source), Model (Target)'Old)
! 
!          --  Actual value of elements of Target is preserved
! 
!          and E_Elements_Included (Elements (Target), Elements (Target)'Old)
!          and
!            E_Elements_Included
!              (Elements (Target)'Old, Model (Source), Elements (Target))
! 
!          --  Mapping from cursors of Target to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Target),
!                 E_Right => Elements (Target)'Old,
!                 P_Left  => Positions (Target),
!                 P_Right => Positions (Target)'Old);
! 
!    function Intersection (Left, Right : Set) return Set with
!      Global => null,
!      Post   =>
!        Length (Intersection'Result) =
!          M.Num_Overlaps (Model (Left), Model (Right))
! 
!          --  Elements in the result of Intersection are in Left and Right
! 
!          and Model (Intersection'Result) <= Model (Left)
!          and Model (Intersection'Result) <= Model (Right)
! 
!          --  Elements both in Left and Right are in the result of Intersection
! 
!          and
!            M.Includes_Intersection
!              (Model (Intersection'Result), Model (Left), Model (Right))
! 
!          --  Actual value of elements come from Left
! 
!          and
!            E_Elements_Included
!              (Elements (Intersection'Result), Elements (Left))
!          and
!            E_Elements_Included
!              (Elements (Left), Model (Right), Elements (Intersection'Result));
! 
!    function "and" (Left, Right : Set) return Set renames Intersection;
! 
!    procedure Difference (Target : in out Set; Source : Set) with
!      Global => null,
!      Post   =>
!        Length (Target) = Length (Target)'Old -
!          M.Num_Overlaps (Model (Target)'Old, Model (Source))
! 
!          --  Elements of Target were already in Target
! 
!          and Model (Target) <= Model (Target)'Old
! 
!          --  Elements of Target are not in Source
! 
!          and M.No_Overlap (Model (Target), Model (Source))
! 
!          --  Elements in Target but not in Source are in the difference
! 
!          and
!            M.Included_In_Union
!              (Model (Target)'Old, Model (Target), Model (Source))
! 
!          --  Actual value of elements of Target is preserved
! 
!          and E_Elements_Included (Elements (Target), Elements (Target)'Old)
!          and
!            E_Elements_Included
!              (Elements (Target)'Old, Model (Target), Elements (Target))
! 
!          --  Mapping from cursors of Target to elements is preserved
! 
!          and Mapping_Preserved
!                (E_Left  => Elements (Target),
!                 E_Right => Elements (Target)'Old,
!                 P_Left  => Positions (Target),
!                 P_Right => Positions (Target)'Old);
! 
!    function Difference (Left, Right : Set) return Set with
!      Global => null,
!      Post   =>
!        Length (Difference'Result) = Length (Left) -
!          M.Num_Overlaps (Model (Left), Model (Right))
! 
!          --  Elements of the result of Difference are in Left
! 
!          and Model (Difference'Result) <= Model (Left)
! 
!          --  Elements of the result of Difference are in Right
! 
!          and M.No_Overlap (Model (Difference'Result), Model (Right))
! 
!          --  Elements in Left but not in Right are in the difference
! 
!          and
!            M.Included_In_Union
!              (Model (Left), Model (Difference'Result), Model (Right))
! 
!          --  Actual value of elements come from Left
! 
!          and
!            E_Elements_Included (Elements (Difference'Result), Elements (Left))
!          and
!            E_Elements_Included
!              (Elements (Left),
!               Model (Difference'Result),
!               Elements (Difference'Result));
! 
!    function "-" (Left, Right : Set) return Set renames Difference;
! 
!    procedure Symmetric_Difference (Target : in out Set; Source : Set) with
!      Global => null,
!      Pre    =>
!        Length (Source) - Length (Target and Source) <=
!          Target.Capacity - Length (Target) + Length (Target and Source),
!      Post   =>
!        Length (Target) = Length (Target)'Old -
!          2 * M.Num_Overlaps (Model (Target)'Old, Model (Source)) +
!          Length (Source)
! 
!          --  Elements of the difference were not both in Source and in Target
! 
!          and M.Not_In_Both (Model (Target), Model (Target)'Old, Model (Source))
! 
!          --  Elements in Target but not in Source are in the difference
! 
!          and
!            M.Included_In_Union
!              (Model (Target)'Old, Model (Target), Model (Source))
! 
!          --  Elements in Source but not in Target are in the difference
! 
!          and
!            M.Included_In_Union
!              (Model (Source), Model (Target), Model (Target)'Old)
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and
!            E_Elements_Included
!              (Elements (Target),
!               Model (Target)'Old,
!               Elements (Target)'Old,
!               Elements (Source))
!          and
!            E_Elements_Included
!              (Elements (Target)'Old, Model (Target), Elements (Target))
!          and
!            E_Elements_Included
!              (Elements (Source), Model (Target), Elements (Target));
! 
!    function Symmetric_Difference (Left, Right : Set) return Set with
!      Global => null,
!      Pre    => Length (Left) <= Count_Type'Last - Length (Right),
!      Post   =>
!        Length (Symmetric_Difference'Result) = Length (Left) -
!          2 * M.Num_Overlaps (Model (Left), Model (Right)) +
!          Length (Right)
! 
!          --  Elements of the difference were not both in Left and Right
! 
!          and
!            M.Not_In_Both
!              (Model (Symmetric_Difference'Result), Model (Left), Model (Right))
! 
!          --  Elements in Left but not in Right are in the difference
! 
!          and
!            M.Included_In_Union
!              (Model (Left), Model (Symmetric_Difference'Result), Model (Right))
! 
!          --  Elements in Right but not in Left are in the difference
! 
!          and
!            M.Included_In_Union
!              (Model (Right), Model (Symmetric_Difference'Result), Model (Left))
! 
!          --  Actual value of elements come from either Left or Right
! 
!          and
!            E_Elements_Included
!              (Elements (Symmetric_Difference'Result),
!               Model (Left),
!               Elements (Left),
!               Elements (Right))
!          and
!            E_Elements_Included
!              (Elements (Left),
!               Model (Symmetric_Difference'Result),
!               Elements (Symmetric_Difference'Result))
!          and
!            E_Elements_Included
!              (Elements (Right),
!               Model (Symmetric_Difference'Result),
!               Elements (Symmetric_Difference'Result));
! 
!    function "xor" (Left, Right : Set) return Set
!      renames Symmetric_Difference;
! 
!    function Overlap (Left, Right : Set) return Boolean with
!      Global => null,
!      Post   =>
!        Overlap'Result = not (M.No_Overlap (Model (Left), Model (Right)));
! 
!    function Is_Subset (Subset : Set; Of_Set : Set) return Boolean with
!      Global => null,
!      Post   => Is_Subset'Result = (Model (Subset) <= Model (Of_Set));
! 
!    function First (Container : Set) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           First'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, First'Result)
!             and P.Get (Positions (Container), First'Result) = 1);
! 
!    function First_Element (Container : Set) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        First_Element'Result = E.Get (Elements (Container), 1)
!          and E_Smaller_Than_Range
!                (Elements (Container),
!                 2,
!                 Length (Container),
!                 First_Element'Result);
! 
!    function Last (Container : Set) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 =>
!           Last'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Last'Result)
!             and P.Get (Positions (Container), Last'Result) =
!                   Length (Container));
! 
!    function Last_Element (Container : Set) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Last_Element'Result = E.Get (Elements (Container), Length (Container))
!          and E_Bigger_Than_Range
!                (Elements (Container),
!                 1,
!                 Length (Container) - 1,
!                 Last_Element'Result);
! 
!    function Next (Container : Set; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Next'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Next'Result)
!             and then P.Get (Positions (Container), Next'Result) =
!                      P.Get (Positions (Container), Position) + 1);
! 
!    procedure Next (Container : Set; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = Length (Container)
!         =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) + 1);
! 
!    function Previous (Container : Set; Position : Cursor) return Cursor with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = 1
!         =>
!           Previous'Result = No_Element,
! 
!         others =>
!           Has_Element (Container, Previous'Result)
!             and then P.Get (Positions (Container), Previous'Result) =
!                      P.Get (Positions (Container), Position) - 1);
! 
!    procedure Previous (Container : Set; Position : in out Cursor) with
!      Global         => null,
!      Pre            =>
!        Has_Element (Container, Position) or else Position = No_Element,
!      Contract_Cases =>
!        (Position = No_Element
!           or else P.Get (Positions (Container), Position) = 1
!          =>
!           Position = No_Element,
! 
!         others =>
!           Has_Element (Container, Position)
!             and then P.Get (Positions (Container), Position) =
!                      P.Get (Positions (Container), Position'Old) - 1);
! 
!    function Find (Container : Set; Item : Element_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container, Find returns No_Element
! 
!        (not Contains (Model (Container), Item) =>
!           not P.Has_Key (Positions (Container), Find'Result)
!             and Find'Result = No_Element,
! 
!         --  Otherwise, Find returns a valid cursor in Container
! 
!         others =>
!           P.Has_Key (Positions (Container), Find'Result)
!             and P.Get (Positions (Container), Find'Result) =
!                 Find (Elements (Container), Item)
! 
!             --  The element designated by the result of Find is Item
! 
!             and Equivalent_Elements
!                   (Element (Container, Find'Result), Item));
! 
!    function Floor (Container : Set; Item : Element_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 or else Item < First_Element (Container) =>
!           Floor'Result = No_Element,
!         others =>
!           Has_Element (Container, Floor'Result)
!             and
!               not (Item < E.Get (Elements (Container),
!                                  P.Get (Positions (Container), Floor'Result)))
!             and E_Is_Find
!                   (Elements (Container),
!                    Item,
!                    P.Get (Positions (Container), Floor'Result)));
! 
!    function Ceiling (Container : Set; Item : Element_Type) return Cursor with
!      Global         => null,
!      Contract_Cases =>
!        (Length (Container) = 0 or else Last_Element (Container) < Item =>
!           Ceiling'Result = No_Element,
!         others =>
!           Has_Element (Container, Ceiling'Result)
!             and
!               not (E.Get (Elements (Container),
!                           P.Get (Positions (Container), Ceiling'Result)) <
!                    Item)
!             and E_Is_Find
!                   (Elements (Container),
!                    Item,
!                    P.Get (Positions (Container), Ceiling'Result)));
! 
!    function Contains (Container : Set; Item : Element_Type) return Boolean with
!      Global => null,
!      Post   => Contains'Result = Contains (Model (Container), Item);
!    pragma Annotate (GNATprove, Inline_For_Proof, Contains);
! 
!    function Has_Element (Container : Set; Position : Cursor) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result = P.Has_Key (Positions (Container), Position);
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
!    generic
!       type Key_Type (<>) is private;
! 
!       with function Key (Element : Element_Type) return Key_Type;
! 
!       with function "<" (Left, Right : Key_Type) return Boolean is <>;
! 
!    package Generic_Keys with SPARK_Mode is
! 
!       function Equivalent_Keys (Left, Right : Key_Type) return Boolean with
!         Global => null,
!         Post   =>
!           Equivalent_Keys'Result = (not (Left < Right) and not (Right < Left));
!       pragma Annotate (GNATprove, Inline_For_Proof, Equivalent_Keys);
! 
!       package Formal_Model with Ghost is
!          function E_Bigger_Than_Range
!            (Container : E.Sequence;
!             Fst       : Positive_Count_Type;
!             Lst       : Count_Type;
!             Key       : Key_Type) return Boolean
!          with
!            Global => null,
!            Pre    => Lst <= E.Length (Container),
!            Post   =>
!              E_Bigger_Than_Range'Result =
!                (for all I in Fst .. Lst =>
!                   Generic_Keys.Key (E.Get (Container, I)) < Key);
!          pragma Annotate (GNATprove, Inline_For_Proof, E_Bigger_Than_Range);
! 
!          function E_Smaller_Than_Range
!            (Container : E.Sequence;
!             Fst       : Positive_Count_Type;
!             Lst       : Count_Type;
!             Key       : Key_Type) return Boolean
!          with
!            Global => null,
!            Pre    => Lst <= E.Length (Container),
!            Post   =>
!              E_Smaller_Than_Range'Result =
!                (for all I in Fst .. Lst =>
!                   Key < Generic_Keys.Key (E.Get (Container, I)));
!          pragma Annotate (GNATprove, Inline_For_Proof, E_Smaller_Than_Range);
! 
!          function E_Is_Find
!            (Container : E.Sequence;
!             Key       : Key_Type;
!             Position  : Count_Type) return Boolean
!          with
!            Global => null,
!            Pre    => Position - 1 <= E.Length (Container),
!            Post   =>
!              E_Is_Find'Result =
! 
!                ((if Position > 0 then
!                    E_Bigger_Than_Range (Container, 1, Position - 1, Key))
! 
!                      and (if Position < E.Length (Container) then
!                         E_Smaller_Than_Range
!                           (Container,
!                            Position + 1,
!                            E.Length (Container),
!                            Key)));
!          pragma Annotate (GNATprove, Inline_For_Proof, E_Is_Find);
! 
!          function Find
!            (Container : E.Sequence;
!             Key       : Key_Type) return Count_Type
!          --  Search for Key in Container
! 
!            with
!              Global                  => null,
!              Post                    =>
!                (if Find'Result > 0 then
!                   Find'Result <= E.Length (Container)
!                     and Equivalent_Keys
!                       (Key, Generic_Keys.Key (E.Get (Container, Find'Result)))
!                     and E_Is_Find (Container, Key, Find'Result));
! 
!          function M_Included_Except
!            (Left  : M.Set;
!             Right : M.Set;
!             Key   : Key_Type) return Boolean
!            with
!              Global                  => null,
!              Post                    =>
!                M_Included_Except'Result =
!                  (for all E of Left =>
!                     Contains (Right, E)
!                       or Equivalent_Keys (Generic_Keys.Key (E), Key));
!       end Formal_Model;
!       use Formal_Model;
! 
!       function Key (Container : Set; Position : Cursor) return Key_Type with
!         Global => null,
!         Post   => Key'Result = Key (Element (Container, Position));
!       pragma Annotate (GNATprove, Inline_For_Proof, Key);
! 
!       function Element (Container : Set; Key : Key_Type) return Element_Type
!       with
!         Global => null,
!         Pre    => Contains (Container, Key),
!         Post   =>
!           Element'Result = Element (Container, Find (Container, Key));
!       pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!       procedure Replace
!         (Container : in out Set;
!          Key       : Key_Type;
!          New_Item  : Element_Type)
!       with
!         Global => null,
!         Pre    => Contains (Container, Key),
!         Post   =>
!           Length (Container) = Length (Container)'Old
! 
!              --  Key now maps to New_Item
! 
!              and Element (Container, Key) = New_Item
! 
!              --  New_Item is contained in Container
! 
!              and Contains (Model (Container), New_Item)
! 
!              --  Other elements are preserved
! 
!              and M_Included_Except
!                    (Model (Container)'Old,
!                     Model (Container),
!                     Key)
!              and M.Included_Except
!                    (Model (Container),
!                     Model (Container)'Old,
!                     New_Item)
! 
!              --  Mapping from cursors to elements is preserved
! 
!              and Mapping_Preserved_Except
!                    (E_Left   => Elements (Container)'Old,
!                     E_Right  => Elements (Container),
!                     P_Left   => Positions (Container)'Old,
!                     P_Right  => Positions (Container),
!                     Position => Find (Container, Key))
!              and Positions (Container) = Positions (Container)'Old;
! 
!       procedure Exclude (Container : in out Set; Key : Key_Type) with
!         Global         => null,
!         Post           => not Contains (Container, Key),
!         Contract_Cases =>
! 
!           --  If Key is not in Container, nothing is changed
! 
!           (not Contains (Container, Key) =>
!              Model (Container) = Model (Container)'Old
!                and Elements (Container) = Elements (Container)'Old
!                and Positions (Container) = Positions (Container)'Old,
! 
!            --  Otherwise, Key is removed from Container
! 
!            others =>
!              Length (Container) = Length (Container)'Old - 1
! 
!                --  Other elements are preserved
! 
!                and Model (Container) <= Model (Container)'Old
!                and M_Included_Except
!                      (Model (Container)'Old,
!                       Model (Container),
!                       Key)
! 
!                --  The elements of Container located before Key are preserved
! 
!                and E.Range_Equal
!                      (Left  => Elements (Container)'Old,
!                       Right => Elements (Container),
!                       Fst   => 1,
!                       Lst   => Find (Elements (Container), Key)'Old - 1)
! 
!                --  The elements located after Key are shifted by 1
! 
!                and E.Range_Shifted
!                      (Left   => Elements (Container),
!                       Right  => Elements (Container)'Old,
!                       Fst    => Find (Elements (Container), Key)'Old,
!                       Lst    => Length (Container),
!                       Offset => 1)
! 
!                --  A cursor has been removed from Container
! 
!                and P_Positions_Shifted
!                      (Positions (Container),
!                       Positions (Container)'Old,
!                       Cut   => Find (Elements (Container), Key)'Old));
! 
!       procedure Delete (Container : in out Set; Key : Key_Type) with
!         Global => null,
!         Pre    => Contains (Container, Key),
!         Post   =>
!           Length (Container) = Length (Container)'Old - 1
! 
!             --  Key is no longer in Container
! 
!             and not Contains (Container, Key)
! 
!             --  Other elements are preserved
! 
!             and Model (Container) <= Model (Container)'Old
!             and M_Included_Except
!                   (Model (Container)'Old,
!                    Model (Container),
!                    Key)
! 
!             --  The elements of Container located before Key are preserved
! 
!             and E.Range_Equal
!                   (Left  => Elements (Container)'Old,
!                    Right => Elements (Container),
!                    Fst   => 1,
!                    Lst   => Find (Elements (Container), Key)'Old - 1)
! 
!             --  The elements located after Key are shifted by 1
! 
!             and E.Range_Shifted
!                   (Left   => Elements (Container),
!                    Right  => Elements (Container)'Old,
!                    Fst    => Find (Elements (Container), Key)'Old,
!                    Lst    => Length (Container),
!                    Offset => 1)
! 
!             --  A cursor has been removed from Container
! 
!             and P_Positions_Shifted
!                   (Positions (Container),
!                    Positions (Container)'Old,
!                    Cut   => Find (Elements (Container), Key)'Old);
! 
!       function Find (Container : Set; Key : Key_Type) return Cursor with
!         Global         => null,
!         Contract_Cases =>
! 
!           --  If Key is not contained in Container, Find returns No_Element
! 
!           ((for all E of Model (Container) =>
!                not Equivalent_Keys (Key, Generic_Keys.Key (E))) =>
!              not P.Has_Key (Positions (Container), Find'Result)
!                and Find'Result = No_Element,
! 
!            --  Otherwise, Find returns a valid cursor in Container
! 
!            others =>
!              P.Has_Key (Positions (Container), Find'Result)
!                and P.Get (Positions (Container), Find'Result) =
!                    Find (Elements (Container), Key)
! 
!                --  The element designated by the result of Find is Key
! 
!                and Equivalent_Keys
!                   (Generic_Keys.Key (Element (Container, Find'Result)), Key));
! 
!       function Floor (Container : Set; Key : Key_Type) return Cursor with
!         Global         => null,
!         Contract_Cases =>
!           (Length (Container) = 0
!              or else Key < Generic_Keys.Key (First_Element (Container)) =>
!              Floor'Result = No_Element,
!            others =>
!               Has_Element (Container, Floor'Result)
!                and
!                  not (Key <
!                       Generic_Keys.Key
!                        (E.Get (Elements (Container),
!                                P.Get (Positions (Container), Floor'Result))))
!                and E_Is_Find
!                      (Elements (Container),
!                       Key,
!                       P.Get (Positions (Container), Floor'Result)));
! 
!       function Ceiling (Container : Set; Key : Key_Type) return Cursor with
!         Global         => null,
!         Contract_Cases =>
!           (Length (Container) = 0
!              or else Generic_Keys.Key (Last_Element (Container)) < Key =>
!              Ceiling'Result = No_Element,
!            others =>
!              Has_Element (Container, Ceiling'Result)
!                and
!                  not (Generic_Keys.Key
!                        (E.Get (Elements (Container),
!                                P.Get (Positions (Container), Ceiling'Result)))
!                       < Key)
!                and E_Is_Find
!                      (Elements (Container),
!                       Key,
!                       P.Get (Positions (Container), Ceiling'Result)));
! 
!       function Contains (Container : Set; Key : Key_Type) return Boolean with
!         Global => null,
!         Post   =>
!           Contains'Result =
!             (for some E of Model (Container) =>
!                 Equivalent_Keys (Key, Generic_Keys.Key (E)));
! 
!    end Generic_Keys;
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    pragma Inline (Next);
!    pragma Inline (Previous);
! 
!    type Node_Type is record
!       Has_Element : Boolean := False;
!       Parent      : Count_Type := 0;
!       Left        : Count_Type := 0;
!       Right       : Count_Type := 0;
!       Color       : Red_Black_Trees.Color_Type;
!       Element     : aliased Element_Type;
!    end record;
! 
!    package Tree_Types is
!      new Red_Black_Trees.Generic_Bounded_Tree_Types (Node_Type);
! 
!    type Set (Capacity : Count_Type) is record
!      Content : Tree_Types.Tree_Type (Capacity);
!    end record;
! 
!    use Red_Black_Trees;
  
!    Empty_Set : constant Set := (Capacity => 0, others => <>);
  
  end Ada.Containers.Formal_Ordered_Sets;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Ordered_Sets with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Ordered_Sets;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cgaaso.adb gcc-13.1.0/gcc/ada/libgnat/a-cgaaso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cgaaso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cgaaso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cgaaso.ads gcc-13.1.0/gcc/ada/libgnat/a-cgaaso.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cgaaso.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cgaaso.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cgarso.adb gcc-13.1.0/gcc/ada/libgnat/a-cgarso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cgarso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cgarso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cgcaso.adb gcc-13.1.0/gcc/ada/libgnat/a-cgcaso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cgcaso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cgcaso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chacon.adb gcc-13.1.0/gcc/ada/libgnat/a-chacon.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chacon.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chacon.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chacon.ads gcc-13.1.0/gcc/ada/libgnat/a-chacon.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chacon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chacon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chahan.adb gcc-13.1.0/gcc/ada/libgnat/a-chahan.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chahan.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chahan.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chahan.ads gcc-13.1.0/gcc/ada/libgnat/a-chahan.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chahan.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chahan.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** is
*** 46,51 ****
--- 46,53 ----
     pragma Pure;
     --  In accordance with Ada 2005 AI-362
  
+    pragma Annotate (GNATprove, Always_Return, Handling);
+ 
     ----------------------------------------
     -- Character Classification Functions --
     ----------------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chlat9.ads gcc-13.1.0/gcc/ada/libgnat/a-chlat9.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chlat9.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chlat9.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgbk.adb gcc-13.1.0/gcc/ada/libgnat/a-chtgbk.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgbk.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgbk.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgbk.ads gcc-13.1.0/gcc/ada/libgnat/a-chtgbk.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgbk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgbk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgbo.adb gcc-13.1.0/gcc/ada/libgnat/a-chtgbo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgbo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgbo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgbo.ads gcc-13.1.0/gcc/ada/libgnat/a-chtgbo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgbo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgbo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgfk.adb gcc-13.1.0/gcc/ada/libgnat/a-chtgfk.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgfk.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgfk.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,278 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --               ADA.CONTAINERS.HASH_TABLES.GENERIC_FORMAL_KEYS             --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- This unit was originally developed by Matthew J Heaney.                  --
+ ------------------------------------------------------------------------------
+ 
+ package body Ada.Containers.Hash_Tables.Generic_Formal_Keys is
+ 
+    Checks : constant Boolean := Container_Checks'Enabled;
+ 
+    --------------------------
+    -- Delete_Key_Sans_Free --
+    --------------------------
+ 
+    procedure Delete_Key_Sans_Free
+      (HT  : in out Hash_Table_Type;
+       Key : Key_Type;
+       X   : out Count_Type)
+    is
+       Indx : Hash_Type;
+       Prev : Count_Type;
+ 
+    begin
+       if HT.Length = 0 then
+          X := 0;
+          return;
+       end if;
+ 
+       Indx := Index (HT, Key);
+       X := HT.Buckets (Indx);
+ 
+       if X = 0 then
+          return;
+       end if;
+ 
+       if Equivalent_Keys (Key, HT.Nodes (X)) then
+          HT.Buckets (Indx) := Next (HT.Nodes (X));
+          HT.Length := HT.Length - 1;
+          return;
+       end if;
+ 
+       loop
+          Prev := X;
+          X := Next (HT.Nodes (Prev));
+ 
+          if X = 0 then
+             return;
+          end if;
+ 
+          if Equivalent_Keys (Key, HT.Nodes (X)) then
+             Set_Next (HT.Nodes (Prev), Next => Next (HT.Nodes (X)));
+             HT.Length := HT.Length - 1;
+             return;
+          end if;
+       end loop;
+    end Delete_Key_Sans_Free;
+ 
+    ----------
+    -- Find --
+    ----------
+ 
+    function Find
+      (HT  : Hash_Table_Type;
+       Key : Key_Type) return Count_Type
+    is
+       Indx : Hash_Type;
+       Node : Count_Type;
+ 
+    begin
+       if HT.Length = 0 then
+          return 0;
+       end if;
+ 
+       Indx := Index (HT, Key);
+ 
+       Node := HT.Buckets (Indx);
+       while Node /= 0 loop
+          if Equivalent_Keys (Key, HT.Nodes (Node)) then
+             return Node;
+          end if;
+          Node := Next (HT.Nodes (Node));
+       end loop;
+ 
+       return 0;
+    end Find;
+ 
+    --------------------------------
+    -- Generic_Conditional_Insert --
+    --------------------------------
+ 
+    procedure Generic_Conditional_Insert
+      (HT       : in out Hash_Table_Type;
+       Key      : Key_Type;
+       Node     : out Count_Type;
+       Inserted : out Boolean)
+    is
+       Indx : Hash_Type;
+ 
+    begin
+       Indx := Index (HT, Key);
+       Node := HT.Buckets (Indx);
+ 
+       if Node = 0 then
+          if Checks and then HT.Length = HT.Capacity then
+             raise Capacity_Error with "no more capacity for insertion";
+          end if;
+ 
+          New_Node (HT, Node);
+          Set_Next (HT.Nodes (Node), Next => 0);
+ 
+          Inserted := True;
+ 
+          HT.Buckets (Indx) := Node;
+          HT.Length := HT.Length + 1;
+ 
+          return;
+       end if;
+ 
+       loop
+          if Equivalent_Keys (Key, HT.Nodes (Node)) then
+             Inserted := False;
+             return;
+          end if;
+ 
+          Node := Next (HT.Nodes (Node));
+ 
+          exit when Node = 0;
+       end loop;
+ 
+       if Checks and then HT.Length = HT.Capacity then
+          raise Capacity_Error with "no more capacity for insertion";
+       end if;
+ 
+       New_Node (HT, Node);
+       Set_Next (HT.Nodes (Node), Next => HT.Buckets (Indx));
+ 
+       Inserted := True;
+ 
+       HT.Buckets (Indx) := Node;
+       HT.Length := HT.Length + 1;
+    end Generic_Conditional_Insert;
+ 
+    -----------------------------
+    -- Generic_Replace_Element --
+    -----------------------------
+ 
+    procedure Generic_Replace_Element
+      (HT   : in out Hash_Table_Type;
+       Node : Count_Type;
+       Key  : Key_Type)
+    is
+       pragma Assert (HT.Length > 0);
+       pragma Assert (Node /= 0);
+ 
+       BB : Buckets_Type renames HT.Buckets;
+       NN : Nodes_Type renames HT.Nodes;
+ 
+       Old_Indx : Hash_Type;
+       New_Indx : constant Hash_Type := Index (HT, Key);
+ 
+       New_Bucket : Count_Type renames BB (New_Indx);
+       N, M       : Count_Type;
+ 
+    begin
+       Old_Indx := HT.Buckets'First + Hash (NN (Node)) mod HT.Buckets'Length;
+ 
+       --  Replace_Element is allowed to change a node's key to Key
+       --  (generic formal operation Assign provides the mechanism), but
+       --  only if Key is not already in the hash table. (In a unique-key
+       --  hash table as this one, a key is mapped to exactly one node.)
+ 
+       if Equivalent_Keys (Key, NN (Node)) then
+          --  The new Key value is mapped to this same Node, so Node
+          --  stays in the same bucket.
+ 
+          Assign (NN (Node), Key);
+          return;
+       end if;
+ 
+       --  Key is not equivalent to Node, so we now have to determine if it's
+       --  equivalent to some other node in the hash table. This is the case
+       --  irrespective of whether Key is in the same or a different bucket from
+       --  Node.
+ 
+       N := New_Bucket;
+       while N /= 0 loop
+          if Checks and then Equivalent_Keys (Key, NN (N)) then
+             pragma Assert (N /= Node);
+             raise Program_Error with
+               "attempt to replace existing element";
+          end if;
+ 
+          N := Next (NN (N));
+       end loop;
+ 
+       --  We have determined that Key is not already in the hash table, so
+       --  the change is allowed.
+ 
+       if Old_Indx = New_Indx then
+          --  The node is already in the bucket implied by Key. In this case
+          --  we merely change its value without moving it.
+ 
+          Assign (NN (Node), Key);
+          return;
+       end if;
+ 
+       --  The node is in a bucket different from the bucket implied by Key.
+       --  Do the assignment first, before moving the node, so that if Assign
+       --  propagates an exception, then the hash table will not have been
+       --  modified (except for any possible side-effect Assign had on Node).
+ 
+       Assign (NN (Node), Key);
+ 
+       --  Now we can safely remove the node from its current bucket
+ 
+       N := BB (Old_Indx);  -- get value of first node in old bucket
+       pragma Assert (N /= 0);
+ 
+       if N = Node then  -- node is first node in its bucket
+          BB (Old_Indx) := Next (NN (Node));
+ 
+       else
+          pragma Assert (HT.Length > 1);
+ 
+          loop
+             M := Next (NN (N));
+             pragma Assert (M /= 0);
+ 
+             if M = Node then
+                Set_Next (NN (N), Next => Next (NN (Node)));
+                exit;
+             end if;
+ 
+             N := M;
+          end loop;
+       end if;
+ 
+       --  Now we link the node into its new bucket (corresponding to Key)
+ 
+       Set_Next (NN (Node), Next => New_Bucket);
+       New_Bucket := Node;
+    end Generic_Replace_Element;
+ 
+    -----------
+    -- Index --
+    -----------
+ 
+    function Index
+      (HT  : Hash_Table_Type;
+       Key : Key_Type) return Hash_Type is
+    begin
+       return HT.Buckets'First + Hash (Key) mod HT.Buckets'Length;
+    end Index;
+ 
+ end Ada.Containers.Hash_Tables.Generic_Formal_Keys;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgfk.ads gcc-13.1.0/gcc/ada/libgnat/a-chtgfk.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgfk.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgfk.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,101 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --               ADA.CONTAINERS.HASH_TABLES.GENERIC_FORMAL_KEYS             --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- This unit was originally developed by Matthew J Heaney.                  --
+ ------------------------------------------------------------------------------
+ 
+ --  Hash_Table_Type is used to implement hashed containers. This package
+ --  declares hash-table operations that depend on keys.
+ 
+ generic
+    with package HT_Types is
+      new Generic_Formal_Hash_Table_Types (<>);
+ 
+    use HT_Types;
+ 
+    with function Next (Node : Node_Type) return Count_Type;
+ 
+    with procedure Set_Next
+      (Node : in out Node_Type;
+       Next : Count_Type);
+ 
+    type Key_Type (<>) is limited private;
+ 
+    with function Hash (Key : Key_Type) return Hash_Type;
+ 
+    with function Equivalent_Keys
+      (Key  : Key_Type;
+       Node : Node_Type) return Boolean;
+ 
+ package Ada.Containers.Hash_Tables.Generic_Formal_Keys is
+    pragma Pure;
+ 
+    function Index
+      (HT  : Hash_Table_Type;
+       Key : Key_Type) return Hash_Type;
+    pragma Inline (Index);
+    --  Returns the bucket number (array index value) for the given key
+ 
+    procedure Delete_Key_Sans_Free
+      (HT  : in out Hash_Table_Type;
+       Key : Key_Type;
+       X   : out Count_Type);
+    --  Removes the node (if any) with the given key from the hash table
+ 
+    function Find
+      (HT  : Hash_Table_Type;
+       Key : Key_Type) return Count_Type;
+    --  Returns the node (if any) corresponding to the given key
+ 
+    generic
+       with procedure New_Node
+         (HT   : in out Hash_Table_Type;
+          Node : out Count_Type);
+    procedure Generic_Conditional_Insert
+      (HT       : in out Hash_Table_Type;
+       Key      : Key_Type;
+       Node     : out Count_Type;
+       Inserted : out Boolean);
+    --  Attempts to insert a new node with the given key into the hash table.
+    --  If a node with that key already exists in the table, then that node
+    --  is returned and Inserted returns False. Otherwise New_Node is called
+    --  to allocate a new node, and Inserted returns True.
+ 
+    generic
+       with function Hash (Node : Node_Type) return Hash_Type;
+       with procedure Assign (Node : in out Node_Type; Key : Key_Type);
+    procedure Generic_Replace_Element
+      (HT   : in out Hash_Table_Type;
+       Node : Count_Type;
+       Key  : Key_Type);
+    --  Assigns Key to Node, possibly changing its equivalence class. Procedure
+    --  Assign is called to assign Key to Node. If Node is not in the same
+    --  bucket as Key before the assignment, it is moved from its current bucket
+    --  to the bucket implied by Key. Note that it is never proper to assign to
+    --  Node a key value already in the hash table, and so if Key is equivalent
+    --  to some other node then Program_Error is raised.
+ 
+ end Ada.Containers.Hash_Tables.Generic_Formal_Keys;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgfo.adb gcc-13.1.0/gcc/ada/libgnat/a-chtgfo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgfo.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgfo.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,481 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --            ADA.CONTAINERS.HASH_TABLES.GENERIC_FORMAL_OPERATIONS          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- This unit was originally developed by Matthew J Heaney.                  --
+ ------------------------------------------------------------------------------
+ 
+ with System; use type System.Address;
+ 
+ package body Ada.Containers.Hash_Tables.Generic_Formal_Operations is
+ 
+    Checks : constant Boolean := Container_Checks'Enabled;
+ 
+    -----------
+    -- Clear --
+    -----------
+ 
+    procedure Clear (HT : in out Hash_Table_Type) is
+    begin
+       HT.Length := 0;
+       HT.Free := -1;
+       HT.Buckets := [others => 0];  -- optimize this somehow ???
+    end Clear;
+ 
+    ---------------------------
+    -- Delete_Node_Sans_Free --
+    ---------------------------
+ 
+    procedure Delete_Node_Sans_Free
+      (HT : in out Hash_Table_Type;
+       X  : Count_Type)
+    is
+       pragma Assert (X /= 0);
+ 
+       Indx : Hash_Type;
+       Prev : Count_Type;
+       Curr : Count_Type;
+ 
+    begin
+       if Checks and then HT.Length = 0 then
+          raise Program_Error with
+            "attempt to delete node from empty hashed container";
+       end if;
+ 
+       Indx := Index (HT, HT.Nodes (X));
+       Prev := HT.Buckets (Indx);
+ 
+       if Checks and then Prev = 0 then
+          raise Program_Error with
+            "attempt to delete node from empty hash bucket";
+       end if;
+ 
+       if Prev = X then
+          HT.Buckets (Indx) := Next (HT.Nodes (Prev));
+          HT.Length := HT.Length - 1;
+          return;
+       end if;
+ 
+       if Checks and then HT.Length = 1 then
+          raise Program_Error with
+            "attempt to delete node not in its proper hash bucket";
+       end if;
+ 
+       loop
+          Curr := Next (HT.Nodes (Prev));
+ 
+          if Checks and then Curr = 0 then
+             raise Program_Error with
+               "attempt to delete node not in its proper hash bucket";
+          end if;
+ 
+          if Curr = X then
+             Set_Next (HT.Nodes (Prev), Next => Next (HT.Nodes (Curr)));
+             HT.Length := HT.Length - 1;
+             return;
+          end if;
+ 
+          Prev := Curr;
+       end loop;
+    end Delete_Node_Sans_Free;
+ 
+    -----------
+    -- First --
+    -----------
+ 
+    function First (HT : Hash_Table_Type) return Count_Type is
+       Indx : Hash_Type;
+ 
+    begin
+       if HT.Length = 0 then
+          return 0;
+       end if;
+ 
+       Indx := HT.Buckets'First;
+       loop
+          if HT.Buckets (Indx) /= 0 then
+             return HT.Buckets (Indx);
+          end if;
+ 
+          Indx := Indx + 1;
+       end loop;
+    end First;
+ 
+    ----------
+    -- Free --
+    ----------
+ 
+    procedure Free
+      (HT : in out Hash_Table_Type;
+       X  : Count_Type)
+    is
+       N : Nodes_Type renames HT.Nodes;
+ 
+    begin
+       --  This subprogram "deallocates" a node by relinking the node off of the
+       --  active list and onto the free list. Previously it would flag index
+       --  value 0 as an error. The precondition was weakened, so that index
+       --  value 0 is now allowed, and this value is interpreted to mean "do
+       --  nothing". This makes its behavior analogous to the behavior of
+       --  Ada.Unchecked_Deallocation, and allows callers to avoid having to add
+       --  special-case checks at the point of call.
+ 
+       if X = 0 then
+          return;
+       end if;
+ 
+       pragma Assert (X <= HT.Capacity);
+ 
+       --  pragma Assert (N (X).Prev >= 0);  -- node is active
+       --  Find a way to mark a node as active vs. inactive; we could
+       --  use a special value in Color_Type for this.  ???
+ 
+       --  The hash table actually contains two data structures: a list for
+       --  the "active" nodes that contain elements that have been inserted
+       --  onto the container, and another for the "inactive" nodes of the free
+       --  store.
+       --
+       --  We desire that merely declaring an object should have only minimal
+       --  cost; specially, we want to avoid having to initialize the free
+       --  store (to fill in the links), especially if the capacity is large.
+       --
+       --  The head of the free list is indicated by Container.Free. If its
+       --  value is non-negative, then the free store has been initialized
+       --  in the "normal" way: Container.Free points to the head of the list
+       --  of free (inactive) nodes, and the value 0 means the free list is
+       --  empty. Each node on the free list has been initialized to point
+       --  to the next free node (via its Next component), and the value 0
+       --  means that this is the last free node.
+       --
+       --  If Container.Free is negative, then the links on the free store
+       --  have not been initialized. In this case the link values are
+       --  implied: the free store comprises the components of the node array
+       --  started with the absolute value of Container.Free, and continuing
+       --  until the end of the array (Nodes'Last).
+       --
+       --  ???
+       --  It might be possible to perform an optimization here. Suppose that
+       --  the free store can be represented as having two parts: one
+       --  comprising the non-contiguous inactive nodes linked together
+       --  in the normal way, and the other comprising the contiguous
+       --  inactive nodes (that are not linked together, at the end of the
+       --  nodes array). This would allow us to never have to initialize
+       --  the free store, except in a lazy way as nodes become inactive.
+ 
+       --  When an element is deleted from the list container, its node
+       --  becomes inactive, and so we set its Next component to value of
+       --  the node's index (in the nodes array), to indicate that it is
+       --  now inactive. This provides a useful way to detect a dangling
+       --  cursor reference.  ???
+ 
+       Set_Next (N (X), Next => X);  -- Node is deallocated (not on active list)
+ 
+       if HT.Free >= 0 then
+          --  The free store has previously been initialized. All we need to
+          --  do here is link the newly-free'd node onto the free list.
+ 
+          Set_Next (N (X), HT.Free);
+          HT.Free := X;
+ 
+       elsif X + 1 = abs HT.Free then
+          --  The free store has not been initialized, and the node becoming
+          --  inactive immediately precedes the start of the free store. All
+          --  we need to do is move the start of the free store back by one.
+ 
+          HT.Free := HT.Free + 1;
+ 
+       else
+          --  The free store has not been initialized, and the node becoming
+          --  inactive does not immediately precede the free store. Here we
+          --  first initialize the free store (meaning the links are given
+          --  values in the traditional way), and then link the newly-free'd
+          --  node onto the head of the free store.
+ 
+          --  ???
+          --  See the comments above for an optimization opportunity. If
+          --  the next link for a node on the free store is negative, then
+          --  this means the remaining nodes on the free store are
+          --  physically contiguous, starting as the absolute value of
+          --  that index value.
+ 
+          HT.Free := abs HT.Free;
+ 
+          if HT.Free > HT.Capacity then
+             HT.Free := 0;
+ 
+          else
+             for I in HT.Free .. HT.Capacity - 1 loop
+                Set_Next (Node => N (I), Next => I + 1);
+             end loop;
+ 
+             Set_Next (Node => N (HT.Capacity), Next => 0);
+          end if;
+ 
+          Set_Next (Node => N (X), Next => HT.Free);
+          HT.Free := X;
+       end if;
+    end Free;
+ 
+    ----------------------
+    -- Generic_Allocate --
+    ----------------------
+ 
+    procedure Generic_Allocate
+      (HT   : in out Hash_Table_Type;
+       Node : out Count_Type)
+    is
+       N : Nodes_Type renames HT.Nodes;
+ 
+    begin
+       if HT.Free >= 0 then
+          Node := HT.Free;
+ 
+          --  We always perform the assignment first, before we
+          --  change container state, in order to defend against
+          --  exceptions duration assignment.
+ 
+          Set_Element (N (Node));
+          HT.Free := Next (N (Node));
+ 
+       else
+          --  A negative free store value means that the links of the nodes
+          --  in the free store have not been initialized. In this case, the
+          --  nodes are physically contiguous in the array, starting at the
+          --  index that is the absolute value of the Container.Free, and
+          --  continuing until the end of the array (Nodes'Last).
+ 
+          Node := abs HT.Free;
+ 
+          --  As above, we perform this assignment first, before modifying
+          --  any container state.
+ 
+          Set_Element (N (Node));
+          HT.Free := HT.Free - 1;
+       end if;
+    end Generic_Allocate;
+ 
+    -------------------
+    -- Generic_Equal --
+    -------------------
+ 
+    function Generic_Equal
+      (L, R : Hash_Table_Type) return Boolean
+    is
+       L_Index : Hash_Type;
+       L_Node  : Count_Type;
+ 
+       N : Count_Type;
+ 
+    begin
+       if L.Length /= R.Length then
+          return False;
+       end if;
+ 
+       if L.Length = 0 then
+          return True;
+       end if;
+ 
+       --  Find the first node of hash table L
+ 
+       L_Index := L.Buckets'First;
+       loop
+          L_Node := L.Buckets (L_Index);
+          exit when L_Node /= 0;
+          L_Index := L_Index + 1;
+       end loop;
+ 
+       --  For each node of hash table L, search for an equivalent node in hash
+       --  table R.
+ 
+       N := L.Length;
+       loop
+          if not Find (HT => R, Key => L.Nodes (L_Node)) then
+             return False;
+          end if;
+ 
+          N := N - 1;
+ 
+          L_Node := Next (L.Nodes (L_Node));
+ 
+          if L_Node = 0 then
+ 
+             --  We have exhausted the nodes in this bucket
+ 
+             if N = 0 then
+                return True;
+             end if;
+ 
+             --  Find the next bucket
+ 
+             loop
+                L_Index := L_Index + 1;
+                L_Node := L.Buckets (L_Index);
+                exit when L_Node /= 0;
+             end loop;
+          end if;
+       end loop;
+    end Generic_Equal;
+ 
+    -----------------------
+    -- Generic_Iteration --
+    -----------------------
+ 
+    procedure Generic_Iteration (HT : Hash_Table_Type) is
+       Node : Count_Type;
+ 
+    begin
+       if HT.Length = 0 then
+          return;
+       end if;
+ 
+       for Indx in HT.Buckets'Range loop
+          Node := HT.Buckets (Indx);
+          while Node /= 0 loop
+             Process (Node);
+             Node := Next (HT.Nodes (Node));
+          end loop;
+       end loop;
+    end Generic_Iteration;
+ 
+    ------------------
+    -- Generic_Read --
+    ------------------
+ 
+    procedure Generic_Read
+      (Stream : not null access Root_Stream_Type'Class;
+       HT     : out Hash_Table_Type)
+    is
+       N : Count_Type'Base;
+ 
+    begin
+       Clear (HT);
+ 
+       Count_Type'Base'Read (Stream, N);
+ 
+       if Checks and then N < 0 then
+          raise Program_Error with "stream appears to be corrupt";
+       end if;
+ 
+       if N = 0 then
+          return;
+       end if;
+ 
+       if Checks and then N > HT.Capacity then
+          raise Capacity_Error with "too many elements in stream";
+       end if;
+ 
+       for J in 1 .. N loop
+          declare
+             Node : constant Count_Type := New_Node (Stream);
+             Indx : constant Hash_Type := Index (HT, HT.Nodes (Node));
+             B    : Count_Type renames HT.Buckets (Indx);
+          begin
+             Set_Next (HT.Nodes (Node), Next => B);
+             B := Node;
+          end;
+ 
+          HT.Length := HT.Length + 1;
+       end loop;
+    end Generic_Read;
+ 
+    -------------------
+    -- Generic_Write --
+    -------------------
+ 
+    procedure Generic_Write
+      (Stream : not null access Root_Stream_Type'Class;
+       HT     : Hash_Table_Type)
+    is
+       procedure Write (Node : Count_Type);
+       pragma Inline (Write);
+ 
+       procedure Write is new Generic_Iteration (Write);
+ 
+       -----------
+       -- Write --
+       -----------
+ 
+       procedure Write (Node : Count_Type) is
+       begin
+          Write (Stream, HT.Nodes (Node));
+       end Write;
+ 
+    begin
+       Count_Type'Base'Write (Stream, HT.Length);
+       Write (HT);
+    end Generic_Write;
+ 
+    -----------
+    -- Index --
+    -----------
+ 
+    function Index
+      (Buckets : Buckets_Type;
+       Node    : Node_Type) return Hash_Type is
+    begin
+       return Buckets'First + Hash_Node (Node) mod Buckets'Length;
+    end Index;
+ 
+    function Index
+      (HT   : Hash_Table_Type;
+       Node : Node_Type) return Hash_Type is
+    begin
+       return Index (HT.Buckets, Node);
+    end Index;
+ 
+    ----------
+    -- Next --
+    ----------
+ 
+    function Next
+      (HT   : Hash_Table_Type;
+       Node : Count_Type) return Count_Type
+    is
+       Result : Count_Type;
+       First  : Hash_Type;
+ 
+    begin
+       Result := Next (HT.Nodes (Node));
+ 
+       if Result /= 0 then  -- another node in same bucket
+          return Result;
+       end if;
+ 
+       --  This was the last node in the bucket, so move to the next
+       --  bucket, and start searching for next node from there.
+ 
+       First := Index (HT, HT.Nodes (Node)) + 1;
+       for Indx in First .. HT.Buckets'Last loop
+          Result := HT.Buckets (Indx);
+ 
+          if Result /= 0 then  -- bucket is not empty
+             return Result;
+          end if;
+       end loop;
+ 
+       return 0;
+    end Next;
+ 
+ end Ada.Containers.Hash_Tables.Generic_Formal_Operations;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgfo.ads gcc-13.1.0/gcc/ada/libgnat/a-chtgfo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgfo.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgfo.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,138 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT LIBRARY COMPONENTS                          --
+ --                                                                          --
+ --            ADA.CONTAINERS.HASH_TABLES.GENERIC_FORMAL_OPERATIONS          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- This unit was originally developed by Matthew J Heaney.                  --
+ ------------------------------------------------------------------------------
+ 
+ --  Hash_Table_Type is used to implement hashed containers. This package
+ --  declares hash-table operations that do not depend on keys.
+ 
+ with Ada.Streams;
+ 
+ generic
+    with package HT_Types is
+      new Generic_Formal_Hash_Table_Types (<>);
+ 
+    use HT_Types;
+ 
+    with function Hash_Node (Node : Node_Type) return Hash_Type;
+ 
+    with function Next (Node : Node_Type) return Count_Type;
+ 
+    with procedure Set_Next
+      (Node : in out Node_Type;
+       Next : Count_Type);
+ 
+ package Ada.Containers.Hash_Tables.Generic_Formal_Operations is
+    pragma Pure;
+ 
+    function Index
+      (Buckets : Buckets_Type;
+       Node    : Node_Type) return Hash_Type;
+    pragma Inline (Index);
+    --  Uses the hash value of Node to compute its Buckets array index
+ 
+    function Index
+      (HT   : Hash_Table_Type;
+       Node : Node_Type) return Hash_Type;
+    pragma Inline (Index);
+    --  Uses the hash value of Node to compute its Hash_Table buckets array
+    --  index.
+ 
+    generic
+       with function Find
+         (HT  : Hash_Table_Type;
+          Key : Node_Type) return Boolean;
+    function Generic_Equal (L, R : Hash_Table_Type) return Boolean;
+    --  Used to implement hashed container equality. For each node in hash table
+    --  L, it calls Find to search for an equivalent item in hash table R. If
+    --  Find returns False for any node then Generic_Equal terminates
+    --  immediately and returns False. Otherwise if Find returns True for every
+    --  node then Generic_Equal returns True.
+ 
+    procedure Clear (HT : in out Hash_Table_Type);
+    --  Empties the hash table HT
+ 
+    procedure Delete_Node_Sans_Free
+      (HT : in out Hash_Table_Type;
+       X  : Count_Type);
+    --  Removes node X from the hash table without deallocating the node
+ 
+    generic
+       with procedure Set_Element (Node : in out Node_Type);
+    procedure Generic_Allocate
+      (HT   : in out Hash_Table_Type;
+       Node : out Count_Type);
+    --  Claim a node from the free store. Generic_Allocate first
+    --  calls Set_Element on the potential node, and then returns
+    --  the node's index as the value of the Node parameter.
+ 
+    procedure Free
+      (HT : in out Hash_Table_Type;
+       X  : Count_Type);
+    --  Return a node back to the free store, from where it had
+    --  been previously claimed via Generic_Allocate.
+ 
+    function First (HT : Hash_Table_Type) return Count_Type;
+    --  Returns the head of the list in the first (lowest-index) non-empty
+    --  bucket.
+ 
+    function Next
+      (HT   : Hash_Table_Type;
+       Node : Count_Type) return Count_Type;
+    --  Returns the node that immediately follows Node. This corresponds to
+    --  either the next node in the same bucket, or (if Node is the last node in
+    --  its bucket) the head of the list in the first non-empty bucket that
+    --  follows.
+ 
+    generic
+       with procedure Process (Node : Count_Type);
+    procedure Generic_Iteration (HT : Hash_Table_Type);
+    --  Calls Process for each node in hash table HT
+ 
+    generic
+       use Ada.Streams;
+       with procedure Write
+         (Stream : not null access Root_Stream_Type'Class;
+          Node   : Node_Type);
+    procedure Generic_Write
+      (Stream : not null access Root_Stream_Type'Class;
+       HT     : Hash_Table_Type);
+    --  Used to implement the streaming attribute for hashed containers. It
+    --  calls Write for each node to write its value into Stream.
+ 
+    generic
+       use Ada.Streams;
+       with function New_Node (Stream : not null access Root_Stream_Type'Class)
+          return Count_Type;
+    procedure Generic_Read
+      (Stream : not null access Root_Stream_Type'Class;
+       HT     : out Hash_Table_Type);
+    --  Used to implement the streaming attribute for hashed containers. It
+    --  first clears hash table HT, then populates the hash table by calling
+    --  New_Node for each item in Stream.
+ 
+ end Ada.Containers.Hash_Tables.Generic_Formal_Operations;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgke.adb gcc-13.1.0/gcc/ada/libgnat/a-chtgke.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgke.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgke.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgke.ads gcc-13.1.0/gcc/ada/libgnat/a-chtgke.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgke.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgke.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgop.adb gcc-13.1.0/gcc/ada/libgnat/a-chtgop.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chtgop.ads gcc-13.1.0/gcc/ada/libgnat/a-chtgop.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chtgop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chtgop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chzla1.ads gcc-13.1.0/gcc/ada/libgnat/a-chzla1.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chzla1.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chzla1.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-chzla9.ads gcc-13.1.0/gcc/ada/libgnat/a-chzla9.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-chzla9.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-chzla9.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cidlli.adb gcc-13.1.0/gcc/ada/libgnat/a-cidlli.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cidlli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cidlli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 67,73 ****
        Source   : in out List;
        Position : Node_Access);
  
!    function Vet (Position : Cursor) return Boolean;
     --  Checks invariants of the cursor and its designated container, as a
     --  simple way of detecting dangling references (see operation Free for a
     --  description of the detection mechanism), returning True if all checks
--- 67,73 ----
        Source   : in out List;
        Position : Node_Access);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
     --  Checks invariants of the cursor and its designated container, as a
     --  simple way of detecting dangling references (see operation Free for a
     --  description of the detection mechanism), returning True if all checks
*************** is
*** 2103,2108 ****
--- 2103,2112 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = null then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cidlli.ads gcc-13.1.0/gcc/ada/libgnat/a-cidlli.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cidlli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cidlli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 368,377 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased List'Class) return Reference_Control_Type;
--- 368,377 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased List'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cihama.adb gcc-13.1.0/gcc/ada/libgnat/a-cihama.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cihama.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cihama.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 85,91 ****
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
--- 85,91 ----
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
*************** is
*** 1299,1304 ****
--- 1299,1308 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = null then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cihama.ads gcc-13.1.0/gcc/ada/libgnat/a-cihama.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cihama.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cihama.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 440,449 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
--- 440,448 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cihase.adb gcc-13.1.0/gcc/ada/libgnat/a-cihase.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cihase.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cihase.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 99,105 ****
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
--- 99,105 ----
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
*************** is
*** 1932,1937 ****
--- 1932,1941 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = null then
           return Position.Container = null;
        end if;
*************** is
*** 2027,2032 ****
--- 2031,2094 ----
        Element_Type'Output (Stream, Node.Element.all);
     end Write_Node;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean is
+    begin
+       pragma Assert (Vet (Position), "bad cursor in Has_Element");
+       pragma Assert ((Position.Container = null) = (Position.Node = null),
+                      "bad nullity in Has_Element");
+       return Position.Container = Container'Unrestricted_Access;
+    end Has_Element;
+ 
+    function Tampering_With_Cursors_Prohibited
+      (Container : Set) return Boolean
+    is
+    begin
+       return Is_Busy (Container.HT.TC);
+    end Tampering_With_Cursors_Prohibited;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Element (Position);
+    end Element;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type)) is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       Query_Element (Position, Process);
+    end Query_Element;
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor is
+    begin
+       if Checks and then
+         not (Position = No_Element or else Has_Element (Container, Position))
+       then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Next (Position);
+    end Next;
+ 
+    procedure Next (Container : Set; Position : in out Cursor) is
+    begin
+       Position := Next (Container, Position);
+    end Next;
+ 
+    ------------------
+    -- Generic_Keys --
+    ------------------
+ 
     package body Generic_Keys is
  
        -----------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cihase.ads gcc-13.1.0/gcc/ada/libgnat/a-cihase.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cihase.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cihase.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** is
*** 355,360 ****
--- 355,379 ----
     function Iterate (Container : Set)
       return Set_Iterator_Interfaces.Forward_Iterator'Class;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean;
+ 
+    function Tampering_With_Cursors_Prohibited (Container : Set) return Boolean;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type));
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor;
+ 
+    procedure Next (Container : Set; Position : in out Cursor);
+ 
+    ----------------
+ 
     generic
        type Key_Type (<>) is private;
  
*************** is
*** 370,375 ****
--- 389,397 ----
        --  Applies generic formal operation Key to the element of the node
        --  designated by Position.
  
+       function Key (Container : Set; Position : Cursor) return Key_Type is
+         (Key (Element (Container, Position)));
+ 
        function Element (Container : Set; Key : Key_Type) return Element_Type;
        --  Searches (as per the key-based Find) for the node containing Key, and
        --  returns the associated element.
*************** private
*** 567,576 ****
  
     for Constant_Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
--- 589,597 ----
  
     for Constant_Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cimutr.adb gcc-13.1.0/gcc/ada/libgnat/a-cimutr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cimutr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cimutr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cimutr.ads gcc-13.1.0/gcc/ada/libgnat/a-cimutr.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cimutr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cimutr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 439,448 ****
  
     for Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Tree'Class) return Reference_Control_Type;
--- 439,445 ----
  
     for Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
  
     function Pseudo_Reference
       (Container : aliased Tree'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ciorma.adb gcc-13.1.0/gcc/ada/libgnat/a-ciorma.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ciorma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ciorma.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ciorma.ads gcc-13.1.0/gcc/ada/libgnat/a-ciorma.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ciorma.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ciorma.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 355,364 ****
  
     for Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions.  See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
--- 355,364 ----
  
     for Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ciormu.adb gcc-13.1.0/gcc/ada/libgnat/a-ciormu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ciormu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ciormu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ciormu.ads gcc-13.1.0/gcc/ada/libgnat/a-ciormu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ciormu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ciormu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ciorse.adb gcc-13.1.0/gcc/ada/libgnat/a-ciorse.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ciorse.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ciorse.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 721,726 ****
--- 721,781 ----
        Deallocate (X);
     end Free;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean is
+    begin
+       pragma Assert
+         (Vet (Container.Tree, Position.Node), "bad cursor in Has_Element");
+       pragma Assert ((Position.Container = null) = (Position.Node = null),
+                      "bad nullity in Has_Element");
+       return Position.Container = Container'Unrestricted_Access;
+    end Has_Element;
+ 
+    function Tampering_With_Cursors_Prohibited
+      (Container : Set) return Boolean
+    is
+    begin
+       return Is_Busy (Container.Tree.TC);
+    end Tampering_With_Cursors_Prohibited;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Element (Position);
+    end Element;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type)) is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       Query_Element (Position, Process);
+    end Query_Element;
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor is
+    begin
+       if Checks and then
+         not (Position = No_Element or else Has_Element (Container, Position))
+       then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Next (Position);
+    end Next;
+ 
+    procedure Next (Container : Set; Position : in out Cursor) is
+    begin
+       Position := Next (Container, Position);
+    end Next;
+ 
     ------------------
     -- Generic_Keys --
     ------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ciorse.ads gcc-13.1.0/gcc/ada/libgnat/a-ciorse.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ciorse.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ciorse.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** is
*** 238,243 ****
--- 238,262 ----
        Start     : Cursor)
        return Set_Iterator_Interfaces.Reversible_Iterator'class;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean;
+ 
+    function Tampering_With_Cursors_Prohibited (Container : Set) return Boolean;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type));
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor;
+ 
+    procedure Next (Container : Set; Position : in out Cursor);
+ 
+    ----------------
+ 
     generic
        type Key_Type (<>) is private;
  
*************** is
*** 251,256 ****
--- 270,278 ----
  
        function Key (Position : Cursor) return Key_Type;
  
+       function Key (Container : Set; Position : Cursor) return Key_Type is
+         (Key (Element (Container, Position)));
+ 
        function Element (Container : Set; Key : Key_Type) return Element_Type;
  
        procedure Replace
*************** private
*** 432,441 ****
  
     for Constant_Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
--- 454,463 ----
  
     for Constant_Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-clrefi.adb gcc-13.1.0/gcc/ada/libgnat/a-clrefi.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-clrefi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-clrefi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-clrefi.ads gcc-13.1.0/gcc/ada/libgnat/a-clrefi.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-clrefi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-clrefi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coboho.adb gcc-13.1.0/gcc/ada/libgnat/a-coboho.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coboho.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coboho.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2015-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2015-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,31 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
! with Unchecked_Conversion;
  with System.Put_Images;
  
  package body Ada.Containers.Bounded_Holders is
--- 25,31 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Unchecked_Conversion;
  with System.Put_Images;
  
  package body Ada.Containers.Bounded_Holders is
*************** package body Ada.Containers.Bounded_Hold
*** 54,60 ****
     end Size_In_Storage_Elements;
  
     function Cast is new
!      Unchecked_Conversion (System.Address, Element_Access);
  
     ---------
     -- "=" --
--- 54,60 ----
     end Size_In_Storage_Elements;
  
     function Cast is new
!      Ada.Unchecked_Conversion (System.Address, Element_Access);
  
     ---------
     -- "=" --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coboho.ads gcc-13.1.0/gcc/ada/libgnat/a-coboho.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coboho.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coboho.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2015-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cobove.adb gcc-13.1.0/gcc/ada/libgnat/a-cobove.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cobove.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cobove.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cobove.ads gcc-13.1.0/gcc/ada/libgnat/a-cobove.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cobove.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cobove.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 511,520 ****
  
     for Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Vector'Class) return Reference_Control_Type;
--- 511,520 ----
  
     for Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Vector'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofove.adb gcc-13.1.0/gcc/ada/libgnat/a-cofove.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cofove.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofove.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1311 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --         A D A . C O N T A I N E R S . F O R M A L _ V E C T O R S        --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- with Ada.Containers.Generic_Array_Sort;
- 
- with System; use type System.Address;
- 
- package body Ada.Containers.Formal_Vectors with
-   SPARK_Mode => Off
- is
- 
-    subtype Int is Long_Long_Integer;
- 
-    function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base;
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1);
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left : Vector; Right : Vector) return Boolean is
-    begin
-       if Left'Address = Right'Address then
-          return True;
-       end if;
- 
-       if Length (Left) /= Length (Right) then
-          return False;
-       end if;
- 
-       for J in 1 .. Length (Left) loop
-          if Left.Elements (J) /= Right.Elements (J) then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end "=";
- 
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector; New_Item : Vector) is
-    begin
-       if Is_Empty (New_Item) then
-          return;
-       end if;
- 
-       if Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       Insert (Container, Container.Last + 1, New_Item);
-    end Append;
- 
-    procedure Append (Container : in out Vector; New_Item : Element_Type) is
-    begin
-       Append (Container, New_Item, 1);
-    end Append;
- 
-    procedure Append
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       if Count = 0 then
-          return;
-       end if;
- 
-       if Container.Last >= Index_Type'Last then
-          raise Constraint_Error with "vector is already at its maximum length";
-       end if;
- 
-       Insert (Container, Container.Last + 1, New_Item, Count);
-    end Append;
- 
-    ------------
-    -- Assign --
-    ------------
- 
-    procedure Assign (Target : in out Vector; Source : Vector) is
-       LS : constant Capacity_Range := Length (Source);
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < LS then
-          raise Constraint_Error;
-       end if;
- 
-       Clear (Target);
-       Append (Target, Source);
-    end Assign;
- 
-    --------------
-    -- Capacity --
-    --------------
- 
-    function Capacity (Container : Vector) return Capacity_Range is
-    begin
-       return Container.Capacity;
-    end Capacity;
- 
-    -----------
-    -- Clear --
-    -----------
- 
-    procedure Clear (Container : in out Vector) is
-    begin
-       Container.Last := No_Index;
-    end Clear;
- 
-    ------------------------
-    -- Constant_Reference --
-    ------------------------
- 
-    function Constant_Reference
-      (Container : aliased Vector;
-       Index     : Index_Type) return not null access constant Element_Type
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       return Container.Elements (To_Array_Index (Index))'Access;
-    end Constant_Reference;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Vector;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       return Find_Index (Container, Item) /= No_Index;
-    end Contains;
- 
-    ----------
-    -- Copy --
-    ----------
- 
-    function Copy
-      (Source   : Vector;
-       Capacity : Capacity_Range := 0) return Vector
-    is
-       LS : constant Capacity_Range := Length (Source);
-       C  : Capacity_Range;
- 
-    begin
-       if Capacity = 0 then
-          C := LS;
-       elsif Capacity >= LS then
-          C := Capacity;
-       else
-          raise Capacity_Error with "Capacity too small";
-       end if;
- 
-       return Target : Vector (C) do
-          Target.Elements (1 .. LS) := Source.Elements (1 .. LS);
-          Target.Last := Source.Last;
-       end return;
-    end Copy;
- 
-    ------------
-    -- Delete --
-    ------------
- 
-    procedure Delete (Container : in out Vector; Index : Extended_Index) is
-    begin
-       Delete (Container, Index, 1);
-    end Delete;
- 
-    procedure Delete
-      (Container : in out Vector;
-       Index     : Extended_Index;
-       Count     : Count_Type)
-    is
-       Old_Last : constant Index_Type'Base := Container.Last;
-       Old_Len  : constant Count_Type := Length (Container);
-       New_Last : Index_Type'Base;
-       Count2   : Count_Type'Base;  -- count of items from Index to Old_Last
-       Off      : Count_Type'Base;  -- Index expressed as offset from IT'First
- 
-    begin
-       --  Delete removes items from the vector, the number of which is the
-       --  minimum of the specified Count and the items (if any) that exist from
-       --  Index to Container.Last. There are no constraints on the specified
-       --  value of Count (it can be larger than what's available at this
-       --  position in the vector, for example), but there are constraints on
-       --  the allowed values of the Index.
- 
-       --  As a precondition on the generic actual Index_Type, the base type
-       --  must include Index_Type'Pred (Index_Type'First); this is the value
-       --  that Container.Last assumes when the vector is empty. However, we do
-       --  not allow that as the value for Index when specifying which items
-       --  should be deleted, so we must manually check. (That the user is
-       --  allowed to specify the value at all here is a consequence of the
-       --  declaration of the Extended_Index subtype, which includes the values
-       --  in the base range that immediately precede and immediately follow the
-       --  values in the Index_Type.)
- 
-       if Index < Index_Type'First then
-          raise Constraint_Error with "Index is out of range (too small)";
-       end if;
- 
-       --  We do allow a value greater than Container.Last to be specified as
-       --  the Index, but only if it's immediately greater. This allows the
-       --  corner case of deleting no items from the back end of the vector to
-       --  be treated as a no-op. (It is assumed that specifying an index value
-       --  greater than Last + 1 indicates some deeper flaw in the caller's
-       --  algorithm, so that case is treated as a proper error.)
- 
-       if Index > Old_Last then
-          if Index > Old_Last + 1 then
-             raise Constraint_Error with "Index is out of range (too large)";
-          end if;
- 
-          return;
-       end if;
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  We first calculate what's available for deletion starting at
-       --  Index. Here and elsewhere we use the wider of Index_Type'Base and
-       --  Count_Type'Base as the type for intermediate values. (See function
-       --  Length for more information.)
- 
-       if Count_Type'Base'Last >= Index_Type'Pos (Index_Type'Base'Last) then
-          Count2 := Count_Type'Base (Old_Last) - Count_Type'Base (Index) + 1;
-       else
-          Count2 := Count_Type'Base (Old_Last - Index + 1);
-       end if;
- 
-       --  If more elements are requested (Count) for deletion than are
-       --  available (Count2) for deletion beginning at Index, then everything
-       --  from Index is deleted. There are no elements to slide down, and so
-       --  all we need to do is set the value of Container.Last.
- 
-       if Count >= Count2 then
-          Container.Last := Index - 1;
-          return;
-       end if;
- 
-       --  There are some elements aren't being deleted (the requested count was
-       --  less than the available count), so we must slide them down to Index.
-       --  We first calculate the index values of the respective array slices,
-       --  using the wider of Index_Type'Base and Count_Type'Base as the type
-       --  for intermediate calculations.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Off := Count_Type'Base (Index - Index_Type'First);
-          New_Last := Old_Last - Index_Type'Base (Count);
-       else
-          Off := Count_Type'Base (Index) - Count_Type'Base (Index_Type'First);
-          New_Last := Index_Type'Base (Count_Type'Base (Old_Last) - Count);
-       end if;
- 
-       --  The array index values for each slice have already been determined,
-       --  so we just slide down to Index the elements that weren't deleted.
- 
-       declare
-          EA  : Elements_Array renames Container.Elements;
-          Idx : constant Count_Type := EA'First + Off;
-       begin
-          EA (Idx .. Old_Len - Count) := EA (Idx + Count .. Old_Len);
-          Container.Last := New_Last;
-       end;
-    end Delete;
- 
-    ------------------
-    -- Delete_First --
-    ------------------
- 
-    procedure Delete_First (Container : in out Vector) is
-    begin
-       Delete_First (Container, 1);
-    end Delete_First;
- 
-    procedure Delete_First (Container : in out Vector; Count : Count_Type) is
-    begin
-       if Count = 0 then
-          return;
- 
-       elsif Count >= Length (Container) then
-          Clear (Container);
-          return;
- 
-       else
-          Delete (Container, Index_Type'First, Count);
-       end if;
-    end Delete_First;
- 
-    -----------------
-    -- Delete_Last --
-    -----------------
- 
-    procedure Delete_Last (Container : in out Vector) is
-    begin
-       Delete_Last (Container, 1);
-    end Delete_Last;
- 
-    procedure Delete_Last (Container : in out Vector; Count : Count_Type) is
-    begin
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  There is no restriction on how large Count can be when deleting
-       --  items. If it is equal or greater than the current length, then this
-       --  is equivalent to clearing the vector. (In particular, there's no need
-       --  for us to actually calculate the new value for Last.)
- 
-       --  If the requested count is less than the current length, then we must
-       --  calculate the new value for Last. For the type we use the widest of
-       --  Index_Type'Base and Count_Type'Base for the intermediate values of
-       --  our calculation.  (See the comments in Length for more information.)
- 
-       if Count >= Length (Container) then
-          Container.Last := No_Index;
- 
-       elsif Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Container.Last := Container.Last - Index_Type'Base (Count);
- 
-       else
-          Container.Last :=
-            Index_Type'Base (Count_Type'Base (Container.Last) - Count);
-       end if;
-    end Delete_Last;
- 
-    -------------
-    -- Element --
-    -------------
- 
-    function Element
-      (Container : Vector;
-       Index     : Index_Type) return Element_Type
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (Index) - Int (No_Index);
-          I  : constant Capacity_Range := Capacity_Range (II);
-       begin
-          return Container.Elements (I);
-       end;
-    end Element;
- 
-    ----------------
-    -- Find_Index --
-    ----------------
- 
-    function Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'First) return Extended_Index
-    is
-       K    : Count_Type;
-       Last : constant Extended_Index := Last_Index (Container);
- 
-    begin
-       K := Capacity_Range (Int (Index) - Int (No_Index));
-       for Indx in Index .. Last loop
-          if Container.Elements (K) = Item then
-             return Indx;
-          end if;
- 
-          K := K + 1;
-       end loop;
- 
-       return No_Index;
-    end Find_Index;
- 
-    -------------------
-    -- First_Element --
-    -------------------
- 
-    function First_Element (Container : Vector) return Element_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "Container is empty";
-       else
-          return Container.Elements (1);
-       end if;
-    end First_Element;
- 
-    -----------------
-    -- First_Index --
-    -----------------
- 
-    function First_Index (Container : Vector) return Index_Type is
-       pragma Unreferenced (Container);
-    begin
-       return Index_Type'First;
-    end First_Index;
- 
-    ------------------
-    -- Formal_Model --
-    ------------------
- 
-    package body Formal_Model is
- 
-       -------------------------
-       -- M_Elements_In_Union --
-       -------------------------
- 
-       function M_Elements_In_Union
-         (Container : M.Sequence;
-          Left      : M.Sequence;
-          Right     : M.Sequence) return Boolean
-       is
-          Elem : Element_Type;
- 
-       begin
-          for Index in Index_Type'First .. M.Last (Container) loop
-             Elem := Element (Container, Index);
- 
-             if not M.Contains (Left, Index_Type'First, M.Last (Left), Elem)
-               and then
-                 not M.Contains (Right, Index_Type'First, M.Last (Right), Elem)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_In_Union;
- 
-       -------------------------
-       -- M_Elements_Included --
-       -------------------------
- 
-       function M_Elements_Included
-         (Left  : M.Sequence;
-          L_Fst : Index_Type := Index_Type'First;
-          L_Lst : Extended_Index;
-          Right : M.Sequence;
-          R_Fst : Index_Type := Index_Type'First;
-          R_Lst : Extended_Index) return Boolean
-       is
-       begin
-          for I in L_Fst .. L_Lst loop
-             declare
-                Found : Boolean := False;
-                J     : Extended_Index := R_Fst - 1;
- 
-             begin
-                while not Found and J < R_Lst loop
-                   J := J + 1;
-                   if Element (Left, I) = Element (Right, J) then
-                      Found := True;
-                   end if;
-                end loop;
- 
-                if not Found then
-                   return False;
-                end if;
-             end;
-          end loop;
- 
-          return True;
-       end M_Elements_Included;
- 
-       -------------------------
-       -- M_Elements_Reversed --
-       -------------------------
- 
-       function M_Elements_Reversed
-         (Left  : M.Sequence;
-          Right : M.Sequence) return Boolean
-       is
-          L : constant Index_Type := M.Last (Left);
- 
-       begin
-          if L /= M.Last (Right) then
-             return False;
-          end if;
- 
-          for I in Index_Type'First .. L loop
-             if Element (Left, I) /= Element (Right, L - I + 1)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_Reversed;
- 
-       ------------------------
-       -- M_Elements_Swapped --
-       ------------------------
- 
-       function M_Elements_Swapped
-         (Left  : M.Sequence;
-          Right : M.Sequence;
-          X     : Index_Type;
-          Y     : Index_Type) return Boolean
-       is
-       begin
-          if M.Length (Left) /= M.Length (Right)
-            or else Element (Left, X) /= Element (Right, Y)
-            or else Element (Left, Y) /= Element (Right, X)
-          then
-             return False;
-          end if;
- 
-          for I in Index_Type'First .. M.Last (Left) loop
-             if I /= X and then I /= Y
-               and then Element (Left, I) /= Element (Right, I)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end M_Elements_Swapped;
- 
-       -----------
-       -- Model --
-       -----------
- 
-       function Model (Container : Vector) return M.Sequence is
-          R : M.Sequence;
- 
-       begin
-          for Position in 1 .. Length (Container) loop
-             R := M.Add (R, Container.Elements (Position));
-          end loop;
- 
-          return R;
-       end Model;
- 
-    end Formal_Model;
- 
-    ---------------------
-    -- Generic_Sorting --
-    ---------------------
- 
-    package body Generic_Sorting with SPARK_Mode => Off is
- 
-       ------------------
-       -- Formal_Model --
-       ------------------
- 
-       package body Formal_Model is
- 
-          -----------------------
-          -- M_Elements_Sorted --
-          -----------------------
- 
-          function M_Elements_Sorted (Container : M.Sequence) return Boolean is
-          begin
-             if M.Length (Container) = 0 then
-                return True;
-             end if;
- 
-             declare
-                E1 : Element_Type := Element (Container, Index_Type'First);
- 
-             begin
-                for I in Index_Type'First + 1 .. M.Last (Container) loop
-                   declare
-                      E2 : constant Element_Type := Element (Container, I);
- 
-                   begin
-                      if E2 < E1 then
-                         return False;
-                      end if;
- 
-                      E1 := E2;
-                   end;
-                end loop;
-             end;
- 
-             return True;
-          end M_Elements_Sorted;
- 
-       end Formal_Model;
- 
-       ---------------
-       -- Is_Sorted --
-       ---------------
- 
-       function Is_Sorted (Container : Vector) return Boolean is
-          L : constant Capacity_Range := Length (Container);
- 
-       begin
-          for J in 1 .. L - 1 loop
-             if Container.Elements (J + 1) <
-                Container.Elements (J)
-             then
-                return False;
-             end if;
-          end loop;
- 
-          return True;
-       end Is_Sorted;
- 
-       ----------
-       -- Sort --
-       ----------
- 
-       procedure Sort (Container : in out Vector) is
-          procedure Sort is
-            new Generic_Array_Sort
-                  (Index_Type   => Array_Index,
-                   Element_Type => Element_Type,
-                   Array_Type   => Elements_Array,
-                   "<"          => "<");
- 
-          Len : constant Capacity_Range := Length (Container);
- 
-       begin
-          if Container.Last <= Index_Type'First then
-             return;
-          else
-             Sort (Container.Elements (1 .. Len));
-          end if;
-       end Sort;
- 
-       -----------
-       -- Merge --
-       -----------
- 
-       procedure Merge (Target : in out Vector; Source : in out Vector) is
-          I : Count_Type;
-          J : Count_Type;
- 
-       begin
-          if Target'Address = Source'Address then
-             raise Program_Error with "Target and Source denote same container";
-          end if;
- 
-          if Length (Source) = 0 then
-             return;
-          end if;
- 
-          if Length (Target) = 0 then
-             Move (Target => Target, Source => Source);
-             return;
-          end if;
- 
-          I := Length (Target);
- 
-          declare
-             New_Length : constant Count_Type := I + Length (Source);
- 
-          begin
-             if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-                Target.Last := No_Index + Index_Type'Base (New_Length);
- 
-             else
-                Target.Last :=
-                  Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-             end if;
-          end;
- 
-          declare
-             TA : Elements_Array renames Target.Elements;
-             SA : Elements_Array renames Source.Elements;
- 
-          begin
-             J := Length (Target);
-             while Length (Source) /= 0 loop
-                if I = 0 then
-                   TA (1 .. J) := SA (1 .. Length (Source));
-                   Source.Last := No_Index;
-                   exit;
-                end if;
- 
-                if SA (Length (Source)) < TA (I) then
-                   TA (J) := TA (I);
-                   I := I - 1;
- 
-                else
-                   TA (J) := SA (Length (Source));
-                   Source.Last := Source.Last - 1;
-                end if;
- 
-                J := J - 1;
-             end loop;
-          end;
-       end Merge;
- 
-    end Generic_Sorting;
- 
-    -----------------
-    -- Has_Element --
-    -----------------
- 
-    function Has_Element
-      (Container : Vector;
-       Position  : Extended_Index) return Boolean
-    is
-    begin
-       return Position in First_Index (Container) .. Last_Index (Container);
-    end Has_Element;
- 
-    ------------
-    -- Insert --
-    ------------
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type)
-    is
-    begin
-       Insert (Container, Before, New_Item, 1);
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-       J : Count_Type'Base;  -- scratch
- 
-    begin
-       --  Use Insert_Space to create the "hole" (the destination slice)
- 
-       Insert_Space (Container, Before, Count);
- 
-       J := To_Array_Index (Before);
- 
-       Container.Elements (J .. J - 1 + Count) := [others => New_Item];
-    end Insert;
- 
-    procedure Insert
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       New_Item  : Vector)
-    is
-       N : constant Count_Type := Length (New_Item);
-       B : Count_Type;  -- index Before converted to Count_Type
- 
-    begin
-       if Container'Address = New_Item'Address then
-          raise Program_Error with
-            "Container and New_Item denote same container";
-       end if;
- 
-       --  Use Insert_Space to create the "hole" (the destination slice) into
-       --  which we copy the source items.
- 
-       Insert_Space (Container, Before, Count => N);
- 
-       if N = 0 then
- 
-          --  There's nothing else to do here (vetting of parameters was
-          --  performed already in Insert_Space), so we simply return.
- 
-          return;
-       end if;
- 
-       B := To_Array_Index (Before);
- 
-       Container.Elements (B .. B + N - 1) := New_Item.Elements (1 .. N);
-    end Insert;
- 
-    ------------------
-    -- Insert_Space --
-    ------------------
- 
-    procedure Insert_Space
-      (Container : in out Vector;
-       Before    : Extended_Index;
-       Count     : Count_Type := 1)
-    is
-       Old_Length : constant Count_Type := Length (Container);
- 
-       Max_Length : Count_Type'Base;  -- determined from range of Index_Type
-       New_Length : Count_Type'Base;  -- sum of current length and Count
- 
-       Index : Index_Type'Base;  -- scratch for intermediate values
-       J     : Count_Type'Base;  -- scratch
- 
-    begin
-       --  As a precondition on the generic actual Index_Type, the base type
-       --  must include Index_Type'Pred (Index_Type'First); this is the value
-       --  that Container.Last assumes when the vector is empty. However, we do
-       --  not allow that as the value for Index when specifying where the new
-       --  items should be inserted, so we must manually check. (That the user
-       --  is allowed to specify the value at all here is a consequence of the
-       --  declaration of the Extended_Index subtype, which includes the values
-       --  in the base range that immediately precede and immediately follow the
-       --  values in the Index_Type.)
- 
-       if Before < Index_Type'First then
-          raise Constraint_Error with
-            "Before index is out of range (too small)";
-       end if;
- 
-       --  We do allow a value greater than Container.Last to be specified as
-       --  the Index, but only if it's immediately greater. This allows for the
-       --  case of appending items to the back end of the vector. (It is assumed
-       --  that specifying an index value greater than Last + 1 indicates some
-       --  deeper flaw in the caller's algorithm, so that case is treated as a
-       --  proper error.)
- 
-       if Before > Container.Last
-         and then Before - 1 > Container.Last
-       then
-          raise Constraint_Error with
-            "Before index is out of range (too large)";
-       end if;
- 
-       --  We treat inserting 0 items into the container as a no-op, so we
-       --  simply return.
- 
-       if Count = 0 then
-          return;
-       end if;
- 
-       --  There are two constraints we need to satisfy. The first constraint is
-       --  that a container cannot have more than Count_Type'Last elements, so
-       --  we must check the sum of the current length and the insertion count.
-       --  Note that the value cannot be simply added because the result may
-       --  overflow.
- 
-       if Old_Length > Count_Type'Last - Count then
-          raise Constraint_Error with "Count is out of range";
-       end if;
- 
-       --  It is now safe compute the length of the new vector, without fear of
-       --  overflow.
- 
-       New_Length := Old_Length + Count;
- 
-       --  The second constraint is that the new Last index value cannot exceed
-       --  Index_Type'Last. In each branch below, we calculate the maximum
-       --  length (computed from the range of values in Index_Type), and then
-       --  compare the new length to the maximum length. If the new length is
-       --  acceptable, then we compute the new last index from that.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
- 
-          --  We have to handle the case when there might be more values in the
-          --  range of Index_Type than in the range of Count_Type.
- 
-          if Index_Type'First <= 0 then
- 
-             --  We know that No_Index (the same as Index_Type'First - 1) is
-             --  less than 0, so it is safe to compute the following sum without
-             --  fear of overflow.
- 
-             Index := No_Index + Index_Type'Base (Count_Type'Last);
- 
-             if Index <= Index_Type'Last then
- 
-                --  We have determined that range of Index_Type has at least as
-                --  many values as in Count_Type, so Count_Type'Last is the
-                --  maximum number of items that are allowed.
- 
-                Max_Length := Count_Type'Last;
- 
-             else
-                --  The range of Index_Type has fewer values than in Count_Type,
-                --  so the maximum number of items is computed from the range of
-                --  the Index_Type.
- 
-                Max_Length := Count_Type'Base (Index_Type'Last - No_Index);
-             end if;
- 
-          else
-             --  No_Index is equal or greater than 0, so we can safely compute
-             --  the difference without fear of overflow (which we would have to
-             --  worry about if No_Index were less than 0, but that case is
-             --  handled above).
- 
-             if Index_Type'Last - No_Index >= Count_Type'Pos (Count_Type'Last)
-             then
-                --  We have determined that range of Index_Type has at least as
-                --  many values as in Count_Type, so Count_Type'Last is the
-                --  maximum number of items that are allowed.
- 
-                Max_Length := Count_Type'Last;
- 
-             else
-                --  The range of Index_Type has fewer values than in Count_Type,
-                --  so the maximum number of items is computed from the range of
-                --  the Index_Type.
- 
-                Max_Length := Count_Type'Base (Index_Type'Last - No_Index);
-             end if;
-          end if;
- 
-       elsif Index_Type'First <= 0 then
- 
-          --  We know that No_Index (the same as Index_Type'First - 1) is less
-          --  than 0, so it is safe to compute the following sum without fear of
-          --  overflow.
- 
-          J := Count_Type'Base (No_Index) + Count_Type'Last;
- 
-          if J <= Count_Type'Base (Index_Type'Last) then
- 
-             --  We have determined that range of Index_Type has at least as
-             --  many values as in Count_Type, so Count_Type'Last is the maximum
-             --  number of items that are allowed.
- 
-             Max_Length := Count_Type'Last;
- 
-          else
-             --  The range of Index_Type has fewer values than Count_Type does,
-             --  so the maximum number of items is computed from the range of
-             --  the Index_Type.
- 
-             Max_Length :=
-               Count_Type'Base (Index_Type'Last) - Count_Type'Base (No_Index);
-          end if;
- 
-       else
-          --  No_Index is equal or greater than 0, so we can safely compute the
-          --  difference without fear of overflow (which we would have to worry
-          --  about if No_Index were less than 0, but that case is handled
-          --  above).
- 
-          Max_Length :=
-            Count_Type'Base (Index_Type'Last) - Count_Type'Base (No_Index);
-       end if;
- 
-       --  We have just computed the maximum length (number of items). We must
-       --  now compare the requested length to the maximum length, as we do not
-       --  allow a vector expand beyond the maximum (because that would create
-       --  an internal array with a last index value greater than
-       --  Index_Type'Last, with no way to index those elements).
- 
-       if New_Length > Max_Length then
-          raise Constraint_Error with "Count is out of range";
- 
-       --  Raise Capacity_Error if the new length exceeds the container's
-       --  capacity.
- 
-       elsif New_Length > Container.Capacity then
-          raise Capacity_Error with "New length is larger than capacity";
-       end if;
- 
-       J := To_Array_Index (Before);
- 
-       declare
-          EA : Elements_Array renames Container.Elements;
- 
-       begin
-          if Before <= Container.Last then
- 
-             --  The new items are being inserted before some existing
-             --  elements, so we must slide the existing elements up to their
-             --  new home.
- 
-             EA (J + Count .. New_Length) := EA (J .. Old_Length);
-          end if;
-       end;
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Container.Last := No_Index + Index_Type'Base (New_Length);
- 
-       else
-          Container.Last :=
-            Index_Type'Base (Count_Type'Base (No_Index) + New_Length);
-       end if;
-    end Insert_Space;
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Vector) return Boolean is
-    begin
-       return Last_Index (Container) < Index_Type'First;
-    end Is_Empty;
- 
-    ------------------
-    -- Last_Element --
-    ------------------
- 
-    function Last_Element (Container : Vector) return Element_Type is
-    begin
-       if Is_Empty (Container) then
-          raise Constraint_Error with "Container is empty";
-       else
-          return Container.Elements (Length (Container));
-       end if;
-    end Last_Element;
- 
-    ----------------
-    -- Last_Index --
-    ----------------
- 
-    function Last_Index (Container : Vector) return Extended_Index is
-    begin
-       return Container.Last;
-    end Last_Index;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Vector) return Capacity_Range is
-       L : constant Int := Int (Container.Last);
-       F : constant Int := Int (Index_Type'First);
-       N : constant Int'Base := L - F + 1;
- 
-    begin
-       return Capacity_Range (N);
-    end Length;
- 
-    ----------
-    -- Move --
-    ----------
- 
-    procedure Move (Target : in out Vector; Source : in out Vector) is
-       LS : constant Capacity_Range := Length (Source);
- 
-    begin
-       if Target'Address = Source'Address then
-          return;
-       end if;
- 
-       if Target.Capacity < LS then
-          raise Constraint_Error;
-       end if;
- 
-       Clear (Target);
-       Append (Target, Source);
-       Clear (Source);
-    end Move;
- 
-    ------------
-    -- Prepend --
-    ------------
- 
-    procedure Prepend (Container : in out Vector; New_Item : Vector) is
-    begin
-       Insert (Container, Index_Type'First, New_Item);
-    end Prepend;
- 
-    procedure Prepend (Container : in out Vector; New_Item : Element_Type) is
-    begin
-       Prepend (Container, New_Item, 1);
-    end Prepend;
- 
-    procedure Prepend
-      (Container : in out Vector;
-       New_Item  : Element_Type;
-       Count     : Count_Type)
-    is
-    begin
-       Insert (Container, Index_Type'First, New_Item, Count);
-    end Prepend;
- 
-    ---------------------
-    -- Replace_Element --
-    ---------------------
- 
-    procedure Replace_Element
-      (Container : in out Vector;
-       Index     : Index_Type;
-       New_Item  : Element_Type)
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (Index) - Int (No_Index);
-          I  : constant Capacity_Range := Capacity_Range (II);
- 
-       begin
-          Container.Elements (I) := New_Item;
-       end;
-    end Replace_Element;
- 
-    ---------------
-    -- Reference --
-    ---------------
- 
-    function Reference
-      (Container : not null access Vector;
-       Index     : Index_Type) return not null access Element_Type
-    is
-    begin
-       if Index > Container.Last then
-          raise Constraint_Error with "Index is out of range";
-       end if;
- 
-       return Container.Elements (To_Array_Index (Index))'Access;
-    end Reference;
- 
-    ----------------------
-    -- Reserve_Capacity --
-    ----------------------
- 
-    procedure Reserve_Capacity
-      (Container : in out Vector;
-       Capacity  : Capacity_Range)
-    is
-    begin
-       if Capacity > Container.Capacity then
-          raise Capacity_Error with "Capacity is out of range";
-       end if;
-    end Reserve_Capacity;
- 
-    ----------------------
-    -- Reverse_Elements --
-    ----------------------
- 
-    procedure Reverse_Elements (Container : in out Vector) is
-    begin
-       if Length (Container) <= 1 then
-          return;
-       end if;
- 
-       declare
-          I, J : Capacity_Range;
-          E    : Elements_Array renames
-                   Container.Elements (1 .. Length (Container));
- 
-       begin
-          I := 1;
-          J := Length (Container);
-          while I < J loop
-             declare
-                EI : constant Element_Type := E (I);
- 
-             begin
-                E (I) := E (J);
-                E (J) := EI;
-             end;
- 
-             I := I + 1;
-             J := J - 1;
-          end loop;
-       end;
-    end Reverse_Elements;
- 
-    ------------------------
-    -- Reverse_Find_Index --
-    ------------------------
- 
-    function Reverse_Find_Index
-      (Container : Vector;
-       Item      : Element_Type;
-       Index     : Index_Type := Index_Type'Last) return Extended_Index
-    is
-       Last : Index_Type'Base;
-       K    : Count_Type'Base;
- 
-    begin
-       if Index > Last_Index (Container) then
-          Last := Last_Index (Container);
-       else
-          Last := Index;
-       end if;
- 
-       K := Capacity_Range (Int (Last) - Int (No_Index));
-       for Indx in reverse Index_Type'First .. Last loop
-          if Container.Elements (K) = Item then
-             return Indx;
-          end if;
- 
-          K := K - 1;
-       end loop;
- 
-       return No_Index;
-    end Reverse_Find_Index;
- 
-    ----------
-    -- Swap --
-    ----------
- 
-    procedure Swap
-      (Container : in out Vector;
-       I         : Index_Type;
-       J         : Index_Type)
-    is
-    begin
-       if I > Container.Last then
-          raise Constraint_Error with "I index is out of range";
-       end if;
- 
-       if J > Container.Last then
-          raise Constraint_Error with "J index is out of range";
-       end if;
- 
-       if I = J then
-          return;
-       end if;
- 
-       declare
-          II : constant Int'Base := Int (I) - Int (No_Index);
-          JJ : constant Int'Base := Int (J) - Int (No_Index);
- 
-          EI : Element_Type renames Container.Elements (Capacity_Range (II));
-          EJ : Element_Type renames Container.Elements (Capacity_Range (JJ));
- 
-          EI_Copy : constant Element_Type := EI;
- 
-       begin
-          EI := EJ;
-          EJ := EI_Copy;
-       end;
-    end Swap;
- 
-    --------------------
-    -- To_Array_Index --
-    --------------------
- 
-    function To_Array_Index (Index : Index_Type'Base) return Count_Type'Base is
-       Offset : Count_Type'Base;
- 
-    begin
-       --  We know that
-       --    Index >= Index_Type'First
-       --  hence we also know that
-       --    Index - Index_Type'First >= 0
- 
-       --  The issue is that even though 0 is guaranteed to be a value in
-       --  the type Index_Type'Base, there's no guarantee that the difference
-       --  is a value in that type. To prevent overflow we use the wider
-       --  of Count_Type'Base and Index_Type'Base to perform intermediate
-       --  calculations.
- 
-       if Index_Type'Base'Last >= Count_Type'Pos (Count_Type'Last) then
-          Offset := Count_Type'Base (Index - Index_Type'First);
- 
-       else
-          Offset :=
-            Count_Type'Base (Index) - Count_Type'Base (Index_Type'First);
-       end if;
- 
-       --  The array index subtype for all container element arrays always
-       --  starts with 1.
- 
-       return 1 + Offset;
-    end To_Array_Index;
- 
-    ---------------
-    -- To_Vector --
-    ---------------
- 
-    function To_Vector
-      (New_Item : Element_Type;
-       Length   : Capacity_Range) return Vector
-    is
-    begin
-       if Length = 0 then
-          return Empty_Vector;
-       end if;
- 
-       declare
-          First       : constant Int := Int (Index_Type'First);
-          Last_As_Int : constant Int'Base := First + Int (Length) - 1;
-          Last        : Index_Type;
- 
-       begin
-          if Last_As_Int > Index_Type'Pos (Index_Type'Last) then
-             raise Constraint_Error with "Length is out of range";  -- ???
-          end if;
- 
-          Last := Index_Type (Last_As_Int);
- 
-          return
-            (Capacity => Length,
-             Last     => Last,
-             Elements => [others => New_Item]);
-       end;
-    end To_Vector;
- 
- end Ada.Containers.Formal_Vectors;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofove.ads gcc-13.1.0/gcc/ada/libgnat/a-cofove.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cofove.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofove.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
***************
*** 29,980 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- --  This spec is derived from package Ada.Containers.Bounded_Vectors in the Ada
- --  2012 RM. The modifications are meant to facilitate formal proofs by making
- --  it easier to express properties, and by making the specification of this
- --  unit compatible with SPARK 2014. Note that the API of this unit may be
- --  subject to incompatible changes as SPARK 2014 evolves.
- 
- with Ada.Containers.Functional_Vectors;
- 
  generic
!    type Index_Type is range <>;
!    type Element_Type is private;
!    with function "=" (Left, Right : Element_Type) return Boolean is <>;
! 
! package Ada.Containers.Formal_Vectors with
!   SPARK_Mode
! is
!    --  Contracts in this unit are meant for analysis only, not for run-time
!    --  checking.
! 
!    pragma Assertion_Policy (Pre => Ignore);
!    pragma Assertion_Policy (Post => Ignore);
!    pragma Assertion_Policy (Contract_Cases => Ignore);
!    pragma Annotate (CodePeer, Skip_Analysis);
! 
!    subtype Extended_Index is Index_Type'Base
!      range Index_Type'First - 1 ..
!            Index_Type'Min (Index_Type'Base'Last - 1, Index_Type'Last) + 1;
! 
!    No_Index : constant Extended_Index := Extended_Index'First;
! 
!    Last_Count : constant Count_Type :=
!      (if Index_Type'Last < Index_Type'First then
!          0
!       elsif Index_Type'Last < -1
!         or else Index_Type'Pos (Index_Type'First) >
!                 Index_Type'Pos (Index_Type'Last) - Count_Type'Last
!       then
!          Index_Type'Pos (Index_Type'Last) -
!            Index_Type'Pos (Index_Type'First) + 1
!       else
!          Count_Type'Last);
!    --  Maximal capacity of any vector. It is the minimum of the size of the
!    --  index range and the last possible Count_Type.
! 
!    subtype Capacity_Range is Count_Type range 0 .. Last_Count;
! 
!    type Vector (Capacity : Capacity_Range) is private with
!      Default_Initial_Condition => Is_Empty (Vector),
!      Iterable => (First       => Iter_First,
!                   Has_Element => Iter_Has_Element,
!                   Next        => Iter_Next,
!                   Element     => Element);
! 
!    function Length (Container : Vector) return Capacity_Range with
!      Global => null,
!      Post   => Length'Result <= Capacity (Container);
! 
!    pragma Unevaluated_Use_Of_Old (Allow);
! 
!    package Formal_Model with Ghost is
! 
!       package M is new Ada.Containers.Functional_Vectors
!         (Index_Type   => Index_Type,
!          Element_Type => Element_Type);
! 
!       function "="
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."=";
! 
!       function "<"
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."<";
! 
!       function "<="
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean renames M."<=";
! 
!       function M_Elements_In_Union
!         (Container : M.Sequence;
!          Left      : M.Sequence;
!          Right     : M.Sequence) return Boolean
!       --  The elements of Container are contained in either Left or Right
!       with
!         Global => null,
!         Post   =>
!           M_Elements_In_Union'Result =
!             (for all I in Index_Type'First .. M.Last (Container) =>
!               (for some J in Index_Type'First .. M.Last (Left) =>
!                 Element (Container, I) = Element (Left, J))
!                   or (for some J in Index_Type'First .. M.Last (Right) =>
!                        Element (Container, I) = Element (Right, J)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_In_Union);
! 
!       function M_Elements_Included
!         (Left  : M.Sequence;
!          L_Fst : Index_Type := Index_Type'First;
!          L_Lst : Extended_Index;
!          Right : M.Sequence;
!          R_Fst : Index_Type := Index_Type'First;
!          R_Lst : Extended_Index) return Boolean
!       --  The elements of the slice from L_Fst to L_Lst in Left are contained
!       --  in the slide from R_Fst to R_Lst in Right.
!       with
!         Global => null,
!         Pre    => L_Lst <= M.Last (Left) and R_Lst <= M.Last (Right),
!         Post   =>
!           M_Elements_Included'Result =
!             (for all I in L_Fst .. L_Lst =>
!               (for some J in R_Fst .. R_Lst =>
!                 Element (Left, I) = Element (Right, J)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Included);
! 
!       function M_Elements_Reversed
!         (Left  : M.Sequence;
!          Right : M.Sequence) return Boolean
!       --  Right is Left in reverse order
!       with
!         Global => null,
!         Post   =>
!           M_Elements_Reversed'Result =
!             (M.Length (Left) = M.Length (Right)
!               and (for all I in Index_Type'First .. M.Last (Left) =>
!                     Element (Left, I) =
!                       Element (Right, M.Last (Left) - I + 1))
!               and (for all I in Index_Type'First .. M.Last (Right) =>
!                     Element (Right, I) =
!                       Element (Left, M.Last (Left) - I + 1)));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Reversed);
! 
!       function M_Elements_Swapped
!         (Left  : M.Sequence;
!          Right : M.Sequence;
!          X     : Index_Type;
!          Y     : Index_Type) return Boolean
!       --  Elements stored at X and Y are reversed in Left and Right
!       with
!         Global => null,
!         Pre    => X <= M.Last (Left) and Y <= M.Last (Left),
!         Post   =>
!           M_Elements_Swapped'Result =
!             (M.Length (Left) = M.Length (Right)
!               and Element (Left, X) = Element (Right, Y)
!               and Element (Left, Y) = Element (Right, X)
!               and M.Equal_Except (Left, Right, X, Y));
!       pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Swapped);
! 
!       function Model (Container : Vector) return M.Sequence with
!       --  The high-level model of a vector is a sequence of elements. The
!       --  sequence really is similar to the vector itself. However, it is not
!       --  limited which allows usage of 'Old and 'Loop_Entry attributes.
! 
!         Ghost,
!         Global => null,
!         Post   => M.Length (Model'Result) = Length (Container);
!       pragma Annotate (GNATprove, Iterable_For_Proof, "Model", Model);
! 
!       function Element
!         (S : M.Sequence;
!          I : Index_Type) return Element_Type renames M.Get;
!       --  To improve readability of contracts, we rename the function used to
!       --  access an element in the model to Element.
! 
!    end Formal_Model;
!    use Formal_Model;
! 
!    function Empty_Vector return Vector with
!      Global => null,
!      Post   => Length (Empty_Vector'Result) = 0;
! 
!    function "=" (Left, Right : Vector) return Boolean with
!      Global => null,
!      Post   => "="'Result = (Model (Left) = Model (Right));
! 
!    function To_Vector
!      (New_Item : Element_Type;
!       Length   : Capacity_Range) return Vector
!    with
!      Global => null,
!      Post   =>
!        Formal_Vectors.Length (To_Vector'Result) = Length
!          and M.Constant_Range
!                (Container => Model (To_Vector'Result),
!                 Fst       => Index_Type'First,
!                 Lst       => Last_Index (To_Vector'Result),
!                 Item      => New_Item);
! 
!    function Capacity (Container : Vector) return Capacity_Range with
!      Global => null,
!      Post   =>
!        Capacity'Result = Container.Capacity;
!    pragma Annotate (GNATprove, Inline_For_Proof, Capacity);
! 
!    procedure Reserve_Capacity
!      (Container : in out Vector;
!       Capacity  : Capacity_Range)
!    with
!      Global => null,
!      Pre    => Capacity <= Container.Capacity,
!      Post   => Model (Container) = Model (Container)'Old;
! 
!    function Is_Empty (Container : Vector) return Boolean with
!      Global => null,
!      Post   => Is_Empty'Result = (Length (Container) = 0);
! 
!    procedure Clear (Container : in out Vector) with
!      Global => null,
!      Post   => Length (Container) = 0;
! 
!    procedure Assign (Target : in out Vector; Source : Vector) with
!      Global => null,
!      Pre    => Length (Source) <= Target.Capacity,
!      Post   => Model (Target) = Model (Source);
! 
!    function Copy
!      (Source   : Vector;
!       Capacity : Capacity_Range := 0) return Vector
!    with
!      Global => null,
!      Pre    => (Capacity = 0 or Length (Source) <= Capacity),
!      Post   =>
!        Model (Copy'Result) = Model (Source)
!          and (if Capacity = 0 then
!                  Copy'Result.Capacity = Length (Source)
!               else
!                  Copy'Result.Capacity = Capacity);
! 
!    procedure Move (Target : in out Vector; Source : in out Vector)
!    with
!      Global => null,
!      Pre    => Length (Source) <= Capacity (Target),
!      Post   => Model (Target) = Model (Source)'Old and Length (Source) = 0;
! 
!    function Element
!      (Container : Vector;
!       Index     : Index_Type) return Element_Type
!    with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   => Element'Result = Element (Model (Container), Index);
!    pragma Annotate (GNATprove, Inline_For_Proof, Element);
! 
!    procedure Replace_Element
!      (Container : in out Vector;
!       Index     : Index_Type;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old
! 
!          --  Container now has New_Item at index Index
! 
!          and Element (Model (Container), Index) = New_Item
! 
!          --  All other elements are preserved
! 
!          and M.Equal_Except
!                (Left     => Model (Container)'Old,
!                 Right    => Model (Container),
!                 Position => Index);
! 
!    function At_End (E : access constant Vector) return access constant Vector
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function At_End
!      (E : access constant Element_Type) return access constant Element_Type
!    is (E)
!    with Ghost,
!      Annotate => (GNATprove, At_End_Borrow);
! 
!    function Constant_Reference
!      (Container : aliased Vector;
!       Index     : Index_Type) return not null access constant Element_Type
!    with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!          Constant_Reference'Result.all = Element (Model (Container), Index);
! 
!    function Reference
!      (Container : not null access Vector;
!       Index     : Index_Type) return not null access Element_Type
!    with
!      Global => null,
!      Pre    =>
!       Index in First_Index (Container.all) .. Last_Index (Container.all),
!      Post   =>
!       Length (Container.all) = Length (At_End (Container).all)
! 
!          --  Container will have Result.all at index Index
! 
!          and At_End (Reference'Result).all =
!            Element (Model (At_End (Container).all), Index)
! 
!          --  All other elements are preserved
! 
!          and M.Equal_Except
!                (Left     => Model (Container.all),
!                 Right    => Model (At_End (Container).all),
!                 Position => Index);
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Extended_Index;
!       New_Item  : Vector)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) <= Capacity (Container) - Length (New_Item)
!          and (Before in Index_Type'First .. Last_Index (Container)
!                or (Before /= No_Index
!                     and then Before - 1 = Last_Index (Container))),
!      Post   =>
!        Length (Container) = Length (Container)'Old + Length (New_Item)
! 
!          --  Elements located before Before in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Before - 1)
! 
!          --  Elements of New_Item are inserted at position Before
! 
!          and (if Length (New_Item) > 0 then
!                  M.Range_Shifted
!                    (Left   => Model (New_Item),
!                      Right  => Model (Container),
!                      Fst    => Index_Type'First,
!                      Lst    => Last_Index (New_Item),
!                      Offset => Count_Type (Before - Index_Type'First)))
! 
!          --  Elements located after Before in Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Before,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Length (New_Item));
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Extended_Index;
!       New_Item  : Element_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Capacity (Container)
!          and then (Before in Index_Type'First .. Last_Index (Container) + 1),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Elements located before Before in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Before - 1)
! 
!          --  Container now has New_Item at index Before
! 
!          and Element (Model (Container), Before) = New_Item
! 
!          --  Elements located after Before in Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Before,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => 1);
! 
!    procedure Insert
!      (Container : in out Vector;
!       Before    : Extended_Index;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) <= Capacity (Container) - Count
!          and (Before in Index_Type'First .. Last_Index (Container)
!                or (Before /= No_Index
!                     and then Before - 1 = Last_Index (Container))),
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  Elements located before Before in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Before - 1)
! 
!          --  New_Item is inserted Count times at position Before
! 
!          and (if Count > 0 then
!                  M.Constant_Range
!                    (Container => Model (Container),
!                      Fst       => Before,
!                      Lst       => Before + Index_Type'Base (Count - 1),
!                      Item      => New_Item))
! 
!          --  Elements located after Before in Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Before,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Count);
! 
!    procedure Prepend (Container : in out Vector; New_Item : Vector) with
!      Global => null,
!      Pre    => Length (Container) <= Capacity (Container) - Length (New_Item),
!      Post   =>
!        Length (Container) = Length (Container)'Old + Length (New_Item)
! 
!          --  Elements of New_Item are inserted at the beginning of Container
! 
!          and M.Range_Equal
!                (Left  => Model (New_Item),
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Last_Index (New_Item))
! 
!          --  Elements of Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Length (New_Item));
! 
!    procedure Prepend (Container : in out Vector; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Capacity (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Container now has New_Item at Index_Type'First
! 
!          and Element (Model (Container), Index_Type'First) = New_Item
! 
!          --  Elements of Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => 1);
! 
!    procedure Prepend
!      (Container : in out Vector;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    => Length (Container) <= Capacity (Container) - Count,
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  New_Item is inserted Count times at the beginning of Container
! 
!          and M.Constant_Range
!                (Container => Model (Container),
!                 Fst       => Index_Type'First,
!                 Lst       => Index_Type'First + Index_Type'Base (Count - 1),
!                 Item      => New_Item)
! 
!          --  Elements of Container are shifted
! 
!          and M.Range_Shifted
!                (Left   => Model (Container)'Old,
!                 Right  => Model (Container),
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container)'Old,
!                 Offset => Count);
! 
!    procedure Append (Container : in out Vector; New_Item : Vector) with
!      Global         => null,
!      Pre            =>
!        Length (Container) <= Capacity (Container) - Length (New_Item),
!      Post           =>
!        Length (Container) = Length (Container)'Old + Length (New_Item)
! 
!          --  The elements of Container are preserved
! 
!          and Model (Container)'Old <= Model (Container)
! 
!          --  Elements of New_Item are inserted at the end of Container
! 
!          and (if Length (New_Item) > 0 then
!                  M.Range_Shifted
!                   (Left   => Model (New_Item),
!                     Right  => Model (Container),
!                     Fst    => Index_Type'First,
!                     Lst    => Last_Index (New_Item),
!                     Offset =>
!                       Count_Type
!                         (Last_Index (Container)'Old - Index_Type'First + 1)));
! 
!    procedure Append (Container : in out Vector; New_Item : Element_Type) with
!      Global => null,
!      Pre    => Length (Container) < Capacity (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old + 1
! 
!          --  Elements of Container are preserved
! 
!          and Model (Container)'Old < Model (Container)
! 
!          --  Container now has New_Item at the end of Container
! 
!          and Element
!                (Model (Container), Last_Index (Container)'Old + 1) = New_Item;
! 
!    procedure Append
!      (Container : in out Vector;
!       New_Item  : Element_Type;
!       Count     : Count_Type)
!    with
!      Global => null,
!      Pre    => Length (Container) <= Capacity (Container) - Count,
!      Post   =>
!        Length (Container) = Length (Container)'Old + Count
! 
!          --  Elements of Container are preserved
! 
!          and Model (Container)'Old <= Model (Container)
! 
!          --  New_Item is inserted Count times at the end of Container
! 
!          and (if Count > 0 then
!                  M.Constant_Range
!                    (Container => Model (Container),
!                      Fst       => Last_Index (Container)'Old + 1,
!                      Lst       =>
!                        Last_Index (Container)'Old + Index_Type'Base (Count),
!                      Item      => New_Item));
! 
!    procedure Delete (Container : in out Vector; Index : Extended_Index) with
!      Global => null,
!      Pre    => Index in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Elements located before Index in Container are preserved
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Index - 1)
! 
!          --  Elements located after Index in Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container),
!                 Right  => Model (Container)'Old,
!                 Fst    => Index,
!                 Lst    => Last_Index (Container),
!                 Offset => 1);
! 
!    procedure Delete
!      (Container : in out Vector;
!       Index     : Extended_Index;
!       Count     : Count_Type)
!    with
!      Global         => null,
!      Pre            =>
!        Index in First_Index (Container) .. Last_Index (Container),
!      Post           =>
!        Length (Container) in
!          Length (Container)'Old - Count .. Length (Container)'Old
! 
!          --  The elements of Container located before Index are preserved.
! 
!          and M.Range_Equal
!                (Left  => Model (Container)'Old,
!                 Right => Model (Container),
!                 Fst   => Index_Type'First,
!                 Lst   => Index - 1),
! 
!      Contract_Cases =>
! 
!        --  All the elements after Position have been erased
! 
!        (Length (Container) - Count <= Count_Type (Index - Index_Type'First) =>
!           Length (Container) = Count_Type (Index - Index_Type'First),
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  Other elements are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container),
!                    Right  => Model (Container)'Old,
!                    Fst    => Index,
!                    Lst    => Last_Index (Container),
!                    Offset => Count));
! 
!    procedure Delete_First (Container : in out Vector) with
!      Global => null,
!      Pre    => Length (Container) > 0,
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Elements of Container are shifted by 1
! 
!          and M.Range_Shifted
!                (Left   => Model (Container),
!                 Right  => Model (Container)'Old,
!                 Fst    => Index_Type'First,
!                 Lst    => Last_Index (Container),
!                 Offset => 1);
! 
!    procedure Delete_First (Container : in out Vector; Count : Count_Type) with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  All the elements of Container have been erased
! 
!        (Length (Container) <= Count => Length (Container) = 0,
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  Elements of Container are shifted by Count
! 
!             and M.Range_Shifted
!                   (Left   => Model (Container),
!                    Right  => Model (Container)'Old,
!                    Fst    => Index_Type'First,
!                    Lst    => Last_Index (Container),
!                    Offset => Count));
! 
!    procedure Delete_Last (Container : in out Vector) with
!      Global => null,
!      Pre    => Length (Container) > 0,
!      Post   =>
!        Length (Container) = Length (Container)'Old - 1
! 
!          --  Elements of Container are preserved
! 
!          and Model (Container) < Model (Container)'Old;
! 
!    procedure Delete_Last (Container : in out Vector; Count : Count_Type) with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  All the elements after Position have been erased
! 
!        (Length (Container) <= Count => Length (Container) = 0,
! 
!         others =>
!           Length (Container) = Length (Container)'Old - Count
! 
!             --  The elements of Container are preserved
! 
!             and Model (Container) <= Model (Container)'Old);
! 
!    procedure Reverse_Elements (Container : in out Vector) with
!      Global => null,
!      Post   => M_Elements_Reversed (Model (Container)'Old, Model (Container));
! 
!    procedure Swap
!      (Container : in out Vector;
!       I         : Index_Type;
!       J         : Index_Type)
!    with
!      Global => null,
!      Pre    =>
!        I in First_Index (Container) .. Last_Index (Container)
!          and then J in First_Index (Container) .. Last_Index (Container),
!      Post   =>
!        M_Elements_Swapped (Model (Container)'Old, Model (Container), I, J);
! 
!    function First_Index (Container : Vector) return Index_Type with
!      Global => null,
!      Post   => First_Index'Result = Index_Type'First;
!    pragma Annotate (GNATprove, Inline_For_Proof, First_Index);
! 
!    function First_Element (Container : Vector) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        First_Element'Result = Element (Model (Container), Index_Type'First);
!    pragma Annotate (GNATprove, Inline_For_Proof, First_Element);
! 
!    function Last_Index (Container : Vector) return Extended_Index with
!      Global => null,
!      Post   => Last_Index'Result = M.Last (Model (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Last_Index);
! 
!    function Last_Element (Container : Vector) return Element_Type with
!      Global => null,
!      Pre    => not Is_Empty (Container),
!      Post   =>
!        Last_Element'Result =
!          Element (Model (Container), Last_Index (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Last_Element);
! 
!    function Find_Index
!      (Container : Vector;
!       Item      : Element_Type;
!       Index     : Index_Type := Index_Type'First) return Extended_Index
!    with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container after Index, Find_Index
!        --  returns No_Index.
! 
!        (Index > Last_Index (Container)
!          or else not M.Contains
!                        (Container => Model (Container),
!                         Fst       => Index,
!                         Lst       => Last_Index (Container),
!                         Item      => Item)
!         =>
!           Find_Index'Result = No_Index,
! 
!         --  Otherwise, Find_Index returns a valid index greater than Index
! 
!         others =>
!            Find_Index'Result in Index .. Last_Index (Container)
! 
!             --  The element at this index in Container is Item
! 
!             and Element (Model (Container), Find_Index'Result) = Item
! 
!             --  It is the first occurrence of Item after Index in Container
! 
!             and not M.Contains
!                       (Container => Model (Container),
!                        Fst       => Index,
!                        Lst       => Find_Index'Result - 1,
!                        Item      => Item));
! 
!    function Reverse_Find_Index
!      (Container : Vector;
!       Item      : Element_Type;
!       Index     : Index_Type := Index_Type'Last) return Extended_Index
!    with
!      Global         => null,
!      Contract_Cases =>
! 
!        --  If Item is not contained in Container before Index,
!        --  Reverse_Find_Index returns No_Index.
! 
!        (not M.Contains
!               (Container => Model (Container),
!                Fst       => Index_Type'First,
!                Lst       => (if Index <= Last_Index (Container) then Index
!                              else Last_Index (Container)),
!                Item      => Item)
!         =>
!           Reverse_Find_Index'Result = No_Index,
! 
!         --  Otherwise, Reverse_Find_Index returns a valid index smaller than
!         --  Index
! 
!         others =>
!           Reverse_Find_Index'Result in Index_Type'First .. Index
!             and Reverse_Find_Index'Result <= Last_Index (Container)
! 
!             --  The element at this index in Container is Item
! 
!             and Element (Model (Container), Reverse_Find_Index'Result) = Item
! 
!             --  It is the last occurrence of Item before Index in Container
! 
!             and not M.Contains
!                       (Container => Model (Container),
!                        Fst       => Reverse_Find_Index'Result + 1,
!                        Lst       =>
!                          (if Index <= Last_Index (Container) then
!                              Index
!                           else
!                              Last_Index (Container)),
!                        Item      => Item));
! 
!    function Contains
!      (Container : Vector;
!       Item      : Element_Type) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Contains'Result =
!          M.Contains
!            (Container => Model (Container),
!             Fst       => Index_Type'First,
!             Lst       => Last_Index (Container),
!             Item      => Item);
! 
!    function Has_Element
!      (Container : Vector;
!       Position  : Extended_Index) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Has_Element'Result =
!          (Position in Index_Type'First .. Last_Index (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Has_Element);
! 
!    generic
!       with function "<" (Left, Right : Element_Type) return Boolean is <>;
!    package Generic_Sorting with SPARK_Mode is
! 
!       package Formal_Model with Ghost is
! 
!          function M_Elements_Sorted (Container : M.Sequence) return Boolean
!          with
!            Global => null,
!            Post   =>
!              M_Elements_Sorted'Result =
!                (for all I in Index_Type'First .. M.Last (Container) =>
!                   (for all J in I .. M.Last (Container) =>
!                        Element (Container, I) = Element (Container, J)
!                          or Element (Container, I) < Element (Container, J)));
!          pragma Annotate (GNATprove, Inline_For_Proof, M_Elements_Sorted);
! 
!       end Formal_Model;
!       use Formal_Model;
! 
!       function Is_Sorted (Container : Vector) return Boolean with
!         Global => null,
!         Post   => Is_Sorted'Result = M_Elements_Sorted (Model (Container));
! 
!       procedure Sort (Container : in out Vector) with
!         Global => null,
!         Post   =>
!           Length (Container) = Length (Container)'Old
!             and M_Elements_Sorted (Model (Container))
!             and M_Elements_Included
!                   (Left  => Model (Container)'Old,
!                    L_Lst => Last_Index (Container),
!                    Right => Model (Container),
!                    R_Lst => Last_Index (Container))
!             and M_Elements_Included
!                   (Left  => Model (Container),
!                    L_Lst => Last_Index (Container),
!                    Right => Model (Container)'Old,
!                    R_Lst => Last_Index (Container));
! 
!       procedure Merge (Target : in out Vector; Source : in out Vector) with
!       --  Target and Source should not be aliased
!         Global => null,
!         Pre    => Length (Source) <= Capacity (Target) - Length (Target),
!         Post   =>
!           Length (Target) = Length (Target)'Old + Length (Source)'Old
!             and Length (Source) = 0
!             and (if M_Elements_Sorted (Model (Target)'Old)
!                    and M_Elements_Sorted (Model (Source)'Old)
!                  then
!                     M_Elements_Sorted (Model (Target)))
!             and M_Elements_Included
!                   (Left  => Model (Target)'Old,
!                    L_Lst => Last_Index (Target)'Old,
!                    Right => Model (Target),
!                    R_Lst => Last_Index (Target))
!             and M_Elements_Included
!                   (Left  => Model (Source)'Old,
!                    L_Lst => Last_Index (Source)'Old,
!                    Right => Model (Target),
!                    R_Lst => Last_Index (Target))
!             and M_Elements_In_Union
!                   (Model (Target),
!                    Model (Source)'Old,
!                    Model (Target)'Old);
!    end Generic_Sorting;
! 
!    ---------------------------
!    --  Iteration Primitives --
!    ---------------------------
! 
!    function Iter_First (Container : Vector) return Extended_Index with
!      Global => null;
! 
!    function Iter_Has_Element
!      (Container : Vector;
!       Position  : Extended_Index) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Iter_Has_Element'Result =
!          (Position in Index_Type'First .. Last_Index (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Iter_Has_Element);
! 
!    function Iter_Next
!      (Container : Vector;
!       Position  : Extended_Index) return Extended_Index
!    with
!      Global => null,
!      Pre    => Iter_Has_Element (Container, Position);
! 
! private
!    pragma SPARK_Mode (Off);
! 
!    pragma Inline (First_Index);
!    pragma Inline (Last_Index);
!    pragma Inline (Element);
!    pragma Inline (First_Element);
!    pragma Inline (Last_Element);
!    pragma Inline (Replace_Element);
!    pragma Inline (Contains);
! 
!    subtype Array_Index is Capacity_Range range 1 .. Capacity_Range'Last;
!    type Elements_Array is array (Array_Index range <>) of aliased Element_Type;
!    function "=" (L, R : Elements_Array) return Boolean is abstract;
! 
!    type Vector (Capacity : Capacity_Range) is record
!       Last     : Extended_Index := No_Index;
!       Elements : Elements_Array (1 .. Capacity);
!    end record;
! 
!    function Empty_Vector return Vector is
!      ((Capacity => 0, others => <>));
! 
!    function Iter_First (Container : Vector) return Extended_Index is
!      (Index_Type'First);
! 
!    function Iter_Next
!      (Container : Vector;
!       Position  : Extended_Index) return Extended_Index
!    is
!      (if Position = Extended_Index'Last then
!          Extended_Index'First
!       else
!          Extended_Index'Succ (Position));
  
!    function Iter_Has_Element
!      (Container : Vector;
!       Position  : Extended_Index) return Boolean
!    is
!      (Position in Index_Type'First .. Container.Last);
  
  end Ada.Containers.Formal_Vectors;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
! package Ada.Containers.Formal_Vectors with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Formal_Vectors;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuba.adb gcc-13.1.0/gcc/ada/libgnat/a-cofuba.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuba.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuba.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,325 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      ADA.CONTAINERS.FUNCTIONAL_BASE                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2016-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- with Ada.Unchecked_Deallocation;
- 
- package body Ada.Containers.Functional_Base with SPARK_Mode => Off is
- 
-    function To_Count (Idx : Extended_Index) return Count_Type is
-      (Count_Type
-        (Extended_Index'Pos (Idx) -
-         Extended_Index'Pos (Extended_Index'First)));
- 
-    function To_Index (Position : Count_Type) return Extended_Index is
-      (Extended_Index'Val
-        (Position + Extended_Index'Pos (Extended_Index'First)));
-    --  Conversion functions between Index_Type and Count_Type
- 
-    function Find (C : Container; E : access Element_Type) return Count_Type;
-    --  Search a container C for an element equal to E.all, returning the
-    --  position in the underlying array.
- 
-    procedure Resize (Base : Array_Base_Access);
-    --  Resize the underlying array if needed so that it can contain one more
-    --  element.
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (C1 : Container; C2 : Container) return Boolean is
-    begin
-       if C1.Length /= C2.Length then
-          return False;
-       end if;
- 
-       for I in 1 .. C1.Length loop
-          if C1.Base.Elements (I).all /= C2.Base.Elements (I).all then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end "=";
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<=" (C1 : Container; C2 : Container) return Boolean is
-    begin
-       for I in 1 .. C1.Length loop
-          if Find (C2, C1.Base.Elements (I)) = 0 then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end "<=";
- 
-    ---------
-    -- Add --
-    ---------
- 
-    function Add
-      (C : Container;
-       I : Index_Type;
-       E : Element_Type) return Container
-    is
-    begin
-       if To_Count (I) = C.Length + 1 and then C.Length = C.Base.Max_Length then
-          Resize (C.Base);
-          C.Base.Max_Length := C.Base.Max_Length + 1;
-          C.Base.Elements (C.Base.Max_Length) := new Element_Type'(E);
- 
-          return Container'(Length => C.Base.Max_Length, Base => C.Base);
-       else
-          declare
-             A : constant Array_Base_Access := Content_Init (C.Length);
-             P : Count_Type := 0;
-          begin
-             A.Max_Length := C.Length + 1;
-             for J in 1 .. C.Length + 1 loop
-                if J /= To_Count (I) then
-                   P := P + 1;
-                   A.Elements (J) := C.Base.Elements (P);
-                else
-                   A.Elements (J) := new Element_Type'(E);
-                end if;
-             end loop;
- 
-             return Container'(Length => A.Max_Length,
-                               Base   => A);
-          end;
-       end if;
-    end Add;
- 
-    ------------------
-    -- Content_Init --
-    ------------------
- 
-    function Content_Init (L : Count_Type := 0) return Array_Base_Access
-    is
-       Max_Init : constant Count_Type := 100;
-       Size     : constant Count_Type :=
-         (if L < Count_Type'Last - Max_Init then L + Max_Init
-          else Count_Type'Last);
-       Elements : constant Element_Array_Access :=
-         new Element_Array'(1 .. Size => <>);
-    begin
-       return new Array_Base'(Max_Length => 0, Elements => Elements);
-    end Content_Init;
- 
-    ----------
-    -- Find --
-    ----------
- 
-    function Find (C : Container; E : access Element_Type) return Count_Type is
-    begin
-       for I in 1 .. C.Length loop
-          if C.Base.Elements (I).all = E.all then
-             return I;
-          end if;
-       end loop;
- 
-       return 0;
-    end Find;
- 
-    function Find (C : Container; E : Element_Type) return Extended_Index is
-      (To_Index (Find (C, E'Unrestricted_Access)));
- 
-    ---------
-    -- Get --
-    ---------
- 
-    function Get (C : Container; I : Index_Type) return Element_Type is
-      (C.Base.Elements (To_Count (I)).all);
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    function Intersection (C1 : Container; C2 : Container) return Container is
-       L : constant Count_Type := Num_Overlaps (C1, C2);
-       A : constant Array_Base_Access := Content_Init (L);
-       P : Count_Type := 0;
- 
-    begin
-       A.Max_Length := L;
-       for I in 1 .. C1.Length loop
-          if Find (C2, C1.Base.Elements (I)) > 0 then
-             P := P + 1;
-             A.Elements (P) := C1.Base.Elements (I);
-          end if;
-       end loop;
- 
-       return Container'(Length => P, Base => A);
-    end Intersection;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (C : Container) return Count_Type is (C.Length);
-    ---------------------
-    -- Num_Overlaps --
-    ---------------------
- 
-    function Num_Overlaps (C1 : Container; C2 : Container) return Count_Type is
-       P : Count_Type := 0;
- 
-    begin
-       for I in 1 .. C1.Length loop
-          if Find (C2, C1.Base.Elements (I)) > 0 then
-             P := P + 1;
-          end if;
-       end loop;
- 
-       return P;
-    end Num_Overlaps;
- 
-    ------------
-    -- Remove --
-    ------------
- 
-    function Remove (C : Container; I : Index_Type) return Container is
-    begin
-       if To_Count (I) = C.Length then
-          return Container'(Length => C.Length - 1, Base => C.Base);
-       else
-          declare
-             A : constant Array_Base_Access := Content_Init (C.Length - 1);
-             P : Count_Type := 0;
-          begin
-             A.Max_Length := C.Length - 1;
-             for J in 1 .. C.Length loop
-                if J /= To_Count (I) then
-                   P := P + 1;
-                   A.Elements (P) := C.Base.Elements (J);
-                end if;
-             end loop;
- 
-             return Container'(Length => C.Length - 1, Base => A);
-          end;
-       end if;
-    end Remove;
- 
-    ------------
-    -- Resize --
-    ------------
- 
-    procedure Resize (Base : Array_Base_Access) is
-    begin
-       if Base.Max_Length < Base.Elements'Length then
-          return;
-       end if;
- 
-       pragma Assert (Base.Max_Length = Base.Elements'Length);
- 
-       if Base.Max_Length = Count_Type'Last then
-          raise Constraint_Error;
-       end if;
- 
-       declare
-          procedure Finalize is new Ada.Unchecked_Deallocation
-            (Object => Element_Array,
-             Name   => Element_Array_Access_Base);
- 
-          New_Length : constant Positive_Count_Type :=
-            (if Base.Max_Length > Count_Type'Last / 2 then Count_Type'Last
-             else 2 * Base.Max_Length);
-          Elements   : constant Element_Array_Access :=
-            new Element_Array (1 .. New_Length);
-          Old_Elmts  : Element_Array_Access_Base := Base.Elements;
-       begin
-          Elements (1 .. Base.Max_Length) := Base.Elements.all;
-          Base.Elements := Elements;
-          Finalize (Old_Elmts);
-       end;
-    end Resize;
- 
-    ---------
-    -- Set --
-    ---------
- 
-    function Set
-      (C : Container;
-       I : Index_Type;
-       E : Element_Type) return Container
-    is
-       Result : constant Container :=
-                  Container'(Length => C.Length,
-                             Base => Content_Init (C.Length));
- 
-    begin
-       Result.Base.Max_Length := C.Length;
-       Result.Base.Elements (1 .. C.Length) := C.Base.Elements (1 .. C.Length);
-       Result.Base.Elements (To_Count (I)) := new Element_Type'(E);
-       return Result;
-    end Set;
- 
-    -----------
-    -- Union --
-    -----------
- 
-    function Union (C1 : Container; C2 : Container) return Container is
-       N : constant Count_Type := Num_Overlaps (C1, C2);
- 
-    begin
-       --  if C2 is completely included in C1 then return C1
- 
-       if N = Length (C2) then
-          return C1;
-       end if;
- 
-       --  else loop through C2 to find the remaining elements
- 
-       declare
-          L : constant Count_Type := Length (C1) - N + Length (C2);
-          A : constant Array_Base_Access := Content_Init (L);
-          P : Count_Type := Length (C1);
- 
-       begin
-          A.Max_Length := L;
-          A.Elements (1 .. C1.Length) := C1.Base.Elements (1 .. C1.Length);
-          for I in 1 .. C2.Length loop
-             if Find (C1, C2.Base.Elements (I)) = 0 then
-                P := P + 1;
-                A.Elements (P) := C2.Base.Elements (I);
-             end if;
-          end loop;
- 
-          return Container'(Length => L, Base => A);
-       end;
-    end Union;
- 
- end Ada.Containers.Functional_Base;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuba.ads gcc-13.1.0/gcc/ada/libgnat/a-cofuba.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuba.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuba.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,130 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      ADA.CONTAINERS.FUNCTIONAL_BASE                      --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 2016-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- --  Functional containers are neither controlled nor limited. This is safe, as
- --  no primitives are provided to modify them.
- --  Memory allocated inside functional containers is never reclaimed.
- 
- pragma Ada_2012;
- 
- private generic
-    type Index_Type is (<>);
-    --  To avoid Constraint_Error being raised at run time, Index_Type'Base
-    --  should have at least one more element at the low end than Index_Type.
- 
-    type Element_Type (<>) is private;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
- package Ada.Containers.Functional_Base with SPARK_Mode => Off is
- 
-    subtype Extended_Index is Index_Type'Base range
-      Index_Type'Pred (Index_Type'First) .. Index_Type'Last;
- 
-    type Container is private;
- 
-    function "=" (C1 : Container; C2 : Container) return Boolean;
-    --  Return True if C1 and C2 contain the same elements at the same position
- 
-    function Length (C : Container) return Count_Type;
-    --  Number of elements stored in C
- 
-    function Get (C : Container; I : Index_Type) return Element_Type;
-    --  Access to the element at index I in C
- 
-    function Set
-      (C : Container;
-       I : Index_Type;
-       E : Element_Type) return Container;
-    --  Return a new container which is equal to C except for the element at
-    --  index I, which is set to E.
- 
-    function Add
-      (C : Container;
-       I : Index_Type;
-       E : Element_Type) return Container;
-    --  Return a new container that is C with E inserted at index I
- 
-    function Remove (C : Container; I : Index_Type) return Container;
-    --  Return a new container that is C without the element at index I
- 
-    function Find (C : Container; E : Element_Type) return Extended_Index;
-    --  Return the first index for which the element stored in C is I. If there
-    --  are no such indexes, return Extended_Index'First.
- 
-    --------------------
-    -- Set Operations --
-    --------------------
- 
-    function "<=" (C1 : Container; C2 : Container) return Boolean;
-    --  Return True if every element of C1 is in C2
- 
-    function Num_Overlaps (C1 : Container; C2 : Container) return Count_Type;
-    --  Return the number of elements that are in both C1 and C2
- 
-    function Union (C1 : Container; C2 : Container) return Container;
-    --  Return a container which is C1 plus all the elements of C2 that are not
-    --  in C1.
- 
-    function Intersection (C1 : Container; C2 : Container) return Container;
-    --  Return a container which is C1 minus all the elements that are also in
-    --  C2.
- 
- private
- 
-    subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
- 
-    type Element_Access is access all Element_Type;
- 
-    type Element_Array is
-      array (Positive_Count_Type range <>) of Element_Access;
- 
-    type Element_Array_Access_Base is access Element_Array;
- 
-    subtype Element_Array_Access is not null Element_Array_Access_Base;
- 
-    Empty_Element_Array_Access : constant Element_Array_Access :=
-      new Element_Array'(1 .. 0 => null);
- 
-    type Array_Base is record
-      Max_Length : Count_Type;
-      Elements   : Element_Array_Access;
-    end record;
- 
-    type Array_Base_Access is not null access Array_Base;
- 
-    function Content_Init (L : Count_Type := 0) return Array_Base_Access;
-    --  Used to initialize the content of an array base with length L
- 
-    type Container is record
-       Length : Count_Type := 0;
-       Base   : Array_Base_Access := Content_Init;
-    end record;
- 
- end Ada.Containers.Functional_Base;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuma.adb gcc-13.1.0/gcc/ada/libgnat/a-cofuma.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuma.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,296 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      ADA.CONTAINERS.FUNCTIONAL_MAPS                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2016-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- package body Ada.Containers.Functional_Maps with SPARK_Mode => Off is
-    use Key_Containers;
-    use Element_Containers;
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left : Map; Right : Map) return Boolean is
-      (Left.Keys <= Right.Keys and Right <= Left);
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<=" (Left : Map; Right : Map) return Boolean is
-       I2 : Count_Type;
- 
-    begin
-       for I1 in 1 .. Length (Left.Keys) loop
-          I2 := Find (Right.Keys, Get (Left.Keys, I1));
-          if I2 = 0
-            or else Get (Right.Elements, I2) /= Get (Left.Elements, I1)
-          then
-             return False;
-          end if;
-       end loop;
-       return True;
-    end "<=";
- 
-    ---------
-    -- Add --
-    ---------
- 
-    function Add
-      (Container : Map;
-       New_Key   : Key_Type;
-       New_Item  : Element_Type) return Map
-    is
-    begin
-       return
-         (Keys     =>
-            Add (Container.Keys, Length (Container.Keys) + 1, New_Key),
-          Elements =>
-            Add
-              (Container.Elements, Length (Container.Elements) + 1, New_Item));
-    end Add;
- 
-    ---------------------------
-    -- Elements_Equal_Except --
-    ---------------------------
- 
-    function Elements_Equal_Except
-      (Left    : Map;
-       Right   : Map;
-       New_Key : Key_Type) return Boolean
-    is
-    begin
-       for J in 1 .. Length (Left.Keys) loop
-          declare
-             K : constant Key_Type := Get (Left.Keys, J);
-          begin
-             if not Equivalent_Keys (K, New_Key)
-               and then
-                 (Find (Right.Keys, K) = 0
-                   or else Get (Right.Elements, Find (Right.Keys, K)) /=
-                           Get (Left.Elements, J))
-             then
-                return False;
-             end if;
-          end;
-       end loop;
-       return True;
-    end Elements_Equal_Except;
- 
-    function Elements_Equal_Except
-      (Left  : Map;
-       Right : Map;
-       X     : Key_Type;
-       Y     : Key_Type) return Boolean
-    is
-    begin
-       for J in 1 .. Length (Left.Keys) loop
-          declare
-             K : constant Key_Type := Get (Left.Keys, J);
-          begin
-             if not Equivalent_Keys (K, X)
-               and then not Equivalent_Keys (K, Y)
-               and then
-                 (Find (Right.Keys, K) = 0
-                   or else Get (Right.Elements, Find (Right.Keys, K)) /=
-                           Get (Left.Elements, J))
-             then
-                return False;
-             end if;
-          end;
-       end loop;
-       return True;
-    end Elements_Equal_Except;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    function Get (Container : Map; Key : Key_Type) return Element_Type is
-    begin
-       return Get (Container.Elements, Find (Container.Keys, Key));
-    end Get;
- 
-    -------------
-    -- Has_Key --
-    -------------
- 
-    function Has_Key (Container : Map; Key : Key_Type) return Boolean is
-    begin
-       return Find (Container.Keys, Key) > 0;
-    end Has_Key;
- 
-    -----------------
-    -- Has_Witness --
-    -----------------
- 
-    function Has_Witness
-      (Container : Map;
-       Witness   : Count_Type) return Boolean
-    is
-      (Witness in 1 .. Length (Container.Keys));
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Map) return Boolean is
-    begin
-       return Length (Container.Keys) = 0;
-    end Is_Empty;
- 
-    -------------------
-    -- Keys_Included --
-    -------------------
- 
-    function Keys_Included (Left : Map; Right : Map) return Boolean is
-    begin
-       for J in 1 .. Length (Left.Keys) loop
-          declare
-             K : constant Key_Type := Get (Left.Keys, J);
-          begin
-             if Find (Right.Keys, K) = 0 then
-                return False;
-             end if;
-          end;
-       end loop;
- 
-       return True;
-    end Keys_Included;
- 
-    --------------------------
-    -- Keys_Included_Except --
-    --------------------------
- 
-    function Keys_Included_Except
-      (Left    : Map;
-       Right   : Map;
-       New_Key : Key_Type) return Boolean
-    is
-    begin
-       for J in 1 .. Length (Left.Keys) loop
-          declare
-             K : constant Key_Type := Get (Left.Keys, J);
-          begin
-             if not Equivalent_Keys (K, New_Key)
-               and then Find (Right.Keys, K) = 0
-             then
-                return False;
-             end if;
-          end;
-       end loop;
- 
-       return True;
-    end Keys_Included_Except;
- 
-    function Keys_Included_Except
-      (Left  : Map;
-       Right : Map;
-       X     : Key_Type;
-       Y     : Key_Type) return Boolean
-    is
-    begin
-       for J in 1 .. Length (Left.Keys) loop
-          declare
-             K : constant Key_Type := Get (Left.Keys, J);
-          begin
-             if not Equivalent_Keys (K, X)
-               and then not Equivalent_Keys (K, Y)
-               and then Find (Right.Keys, K) = 0
-             then
-                return False;
-             end if;
-          end;
-       end loop;
- 
-       return True;
-    end Keys_Included_Except;
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Map) return Count_Type is
-    begin
-       return Length (Container.Elements);
-    end Length;
- 
-    ------------
-    -- Remove --
-    ------------
- 
-    function Remove (Container : Map; Key : Key_Type) return Map is
-       J : constant Extended_Index := Find (Container.Keys, Key);
-    begin
-       return
-         (Keys     => Remove (Container.Keys, J),
-          Elements => Remove (Container.Elements, J));
-    end Remove;
- 
-    ---------------
-    -- Same_Keys --
-    ---------------
- 
-    function Same_Keys (Left : Map; Right : Map) return Boolean is
-      (Keys_Included (Left, Right)
-        and Keys_Included (Left => Right, Right => Left));
- 
-    ---------
-    -- Set --
-    ---------
- 
-    function Set
-      (Container : Map;
-       Key       : Key_Type;
-       New_Item  : Element_Type) return Map
-    is
-      (Keys     => Container.Keys,
-       Elements =>
-         Set (Container.Elements, Find (Container.Keys, Key), New_Item));
- 
-    -----------
-    -- W_Get --
-    -----------
- 
-    function W_Get
-      (Container : Map;
-       Witness   : Count_Type) return Element_Type
-    is
-      (Get (Container.Elements, Witness));
- 
-    -------------
-    -- Witness --
-    -------------
- 
-    function Witness (Container : Map; Key : Key_Type) return Count_Type is
-      (Find (Container.Keys, Key));
- 
- end Ada.Containers.Functional_Maps;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuma.ads gcc-13.1.0/gcc/ada/libgnat/a-cofuma.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuma.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuma.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2023, 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 --
***************
*** 29,384 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- pragma Ada_2012;
- private with Ada.Containers.Functional_Base;
- 
  generic
-    type Key_Type (<>) is private;
-    type Element_Type (<>)  is private;
- 
-    with function Equivalent_Keys
-      (Left  : Key_Type;
-       Right : Key_Type) return Boolean is "=";
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
-    Enable_Handling_Of_Equivalence : Boolean := True;
-    --  This constant should only be set to False when no particular handling
-    --  of equivalence over keys is needed, that is, Equivalent_Keys defines a
-    --  key uniquely.
- 
  package Ada.Containers.Functional_Maps with SPARK_Mode is
  
!    type Map is private with
!      Default_Initial_Condition => Is_Empty (Map) and Length (Map) = 0,
!      Iterable                  => (First       => Iter_First,
!                                    Next        => Iter_Next,
!                                    Has_Element => Iter_Has_Element,
!                                    Element     => Iter_Element);
!    --  Maps are empty when default initialized.
!    --  "For in" quantification over maps should not be used.
!    --  "For of" quantification over maps iterates over keys.
!    --  Note that, for proof, "for of" quantification is understood modulo
!    --  equivalence (the range of quantification comprises all the keys that are
!    --  equivalent to any key of the map).
! 
!    -----------------------
!    --  Basic operations --
!    -----------------------
! 
!    --  Maps are axiomatized using Has_Key and Get, encoding respectively the
!    --  presence of a key in a map and an accessor to elements associated with
!    --  its keys. The length of a map is also added to protect Add against
!    --  overflows but it is not actually modeled.
! 
!    function Has_Key (Container : Map; Key : Key_Type) return Boolean with
!    --  Return True if Key is present in Container
! 
!      Global => null,
!      Post   =>
!        (if Enable_Handling_Of_Equivalence then
! 
!           --  Has_Key returns the same result on all equivalent keys
! 
!           (if (for some K of Container => Equivalent_Keys (K, Key)) then
!               Has_Key'Result));
! 
!    function Get (Container : Map; Key : Key_Type) return Element_Type with
!    --  Return the element associated with Key in Container
! 
!      Global => null,
!      Pre    => Has_Key (Container, Key),
!      Post   =>
!        (if Enable_Handling_Of_Equivalence then
! 
!           --  Get returns the same result on all equivalent keys
! 
!           Get'Result = W_Get (Container, Witness (Container, Key))
!             and (for all K of Container =>
!                   (Equivalent_Keys (K, Key) =
!                     (Witness (Container, Key) = Witness (Container, K)))));
! 
!    function Length (Container : Map) return Count_Type with
!      Global => null;
!    --  Return the number of mappings in Container
! 
!    ------------------------
!    -- Property Functions --
!    ------------------------
! 
!    function "<=" (Left : Map; Right : Map) return Boolean with
!    --  Map inclusion
! 
!      Global => null,
!      Post   =>
!        "<="'Result =
!          (for all Key of Left =>
!            Has_Key (Right, Key) and then Get (Right, Key) = Get (Left, Key));
! 
!    function "=" (Left : Map; Right : Map) return Boolean with
!    --  Extensional equality over maps
! 
!      Global => null,
!      Post   =>
!        "="'Result =
!          ((for all Key of Left =>
!             Has_Key (Right, Key)
!               and then Get (Right, Key) = Get (Left, Key))
!               and (for all Key of Right => Has_Key (Left, Key)));
! 
!    pragma Warnings (Off, "unused variable ""Key""");
!    function Is_Empty (Container : Map) return Boolean with
!    --  A map is empty if it contains no key
! 
!      Global => null,
!      Post   => Is_Empty'Result = (for all Key of Container => False);
!    pragma Warnings (On, "unused variable ""Key""");
! 
!    function Keys_Included (Left : Map; Right : Map) return Boolean
!    --  Returns True if every Key of Left is in Right
! 
!    with
!      Global => null,
!      Post   =>
!        Keys_Included'Result = (for all Key of Left => Has_Key (Right, Key));
! 
!    function Same_Keys (Left : Map; Right : Map) return Boolean
!    --  Returns True if Left and Right have the same keys
! 
!    with
!      Global => null,
!      Post   =>
!        Same_Keys'Result =
!          (Keys_Included (Left, Right)
!            and Keys_Included (Left => Right, Right => Left));
!    pragma Annotate (GNATprove, Inline_For_Proof, Same_Keys);
! 
!    function Keys_Included_Except
!      (Left    : Map;
!       Right   : Map;
!       New_Key : Key_Type) return Boolean
!    --  Returns True if Left contains only keys of Right and possibly New_Key
! 
!    with
!      Global => null,
!      Post   =>
!        Keys_Included_Except'Result =
!          (for all Key of Left =>
!            (if not Equivalent_Keys (Key, New_Key) then
!                Has_Key (Right, Key)));
! 
!    function Keys_Included_Except
!      (Left  : Map;
!       Right : Map;
!       X     : Key_Type;
!       Y     : Key_Type) return Boolean
!    --  Returns True if Left contains only keys of Right and possibly X and Y
! 
!    with
!      Global => null,
!      Post   =>
!        Keys_Included_Except'Result =
!          (for all Key of Left =>
!            (if not Equivalent_Keys (Key, X)
!               and not Equivalent_Keys (Key, Y)
!             then
!                Has_Key (Right, Key)));
! 
!    function Elements_Equal_Except
!      (Left    : Map;
!       Right   : Map;
!       New_Key : Key_Type) return Boolean
!    --  Returns True if all the keys of Left are mapped to the same elements in
!    --  Left and Right except New_Key.
! 
!    with
!      Global => null,
!      Post   =>
!        Elements_Equal_Except'Result =
!          (for all Key of Left =>
!            (if not Equivalent_Keys (Key, New_Key) then
!                Has_Key (Right, Key)
!                  and then Get (Left, Key) = Get (Right, Key)));
! 
!    function Elements_Equal_Except
!      (Left  : Map;
!       Right : Map;
!       X     : Key_Type;
!       Y     : Key_Type) return Boolean
!    --  Returns True if all the keys of Left are mapped to the same elements in
!    --  Left and Right except X and Y.
! 
!    with
!      Global => null,
!      Post   =>
!        Elements_Equal_Except'Result =
!          (for all Key of Left =>
!            (if not Equivalent_Keys (Key, X)
!               and not Equivalent_Keys (Key, Y)
!             then
!                Has_Key (Right, Key)
!                  and then Get (Left, Key) = Get (Right, Key)));
! 
!    ----------------------------
!    -- Construction Functions --
!    ----------------------------
! 
!    --  For better efficiency of both proofs and execution, avoid using
!    --  construction functions in annotations and rather use property functions.
! 
!    function Add
!      (Container : Map;
!       New_Key   : Key_Type;
!       New_Item  : Element_Type) return Map
!    --  Returns Container augmented with the mapping Key -> New_Item
! 
!    with
!      Global => null,
!      Pre    =>
!        not Has_Key (Container, New_Key)
!          and Length (Container) < Count_Type'Last,
!      Post   =>
!        Length (Container) + 1 = Length (Add'Result)
!          and Has_Key (Add'Result, New_Key)
!          and Get (Add'Result, New_Key) = New_Item
!          and Container <= Add'Result
!          and Keys_Included_Except (Add'Result, Container, New_Key);
! 
!    function Remove
!      (Container : Map;
!       Key       : Key_Type) return Map
!    --  Returns Container without any mapping for Key
! 
!    with
!      Global => null,
!      Pre    => Has_Key (Container, Key),
!      Post   =>
!        Length (Container) = Length (Remove'Result) + 1
!          and not Has_Key (Remove'Result, Key)
!          and Remove'Result <= Container
!          and Keys_Included_Except (Container, Remove'Result, Key);
! 
!    function Set
!      (Container : Map;
!       Key       : Key_Type;
!       New_Item  : Element_Type) return Map
!    --  Returns Container, where the element associated with Key has been
!    --  replaced by New_Item.
! 
!    with
!      Global => null,
!      Pre    => Has_Key (Container, Key),
!      Post   =>
!        Length (Container) = Length (Set'Result)
!          and Get (Set'Result, Key) = New_Item
!          and Same_Keys (Container, Set'Result)
!          and Elements_Equal_Except (Container, Set'Result, Key);
! 
!    ------------------------------
!    --  Handling of Equivalence --
!    ------------------------------
! 
!    --  These functions are used to specify that Get returns the same value on
!    --  equivalent keys. They should not be used directly in user code.
! 
!    function Has_Witness (Container : Map; Witness : Count_Type) return Boolean
!    with
!      Ghost,
!      Global => null;
!    --  Returns True if there is a key with witness Witness in Container
! 
!    function Witness (Container : Map; Key : Key_Type) return Count_Type with
!    --  Returns the witness of Key in Container
! 
!      Ghost,
!      Global => null,
!      Pre    => Has_Key (Container, Key),
!      Post   => Has_Witness (Container, Witness'Result);
! 
!    function W_Get (Container : Map; Witness : Count_Type) return Element_Type
!    with
!    --  Returns the element associated with a witness in Container
! 
!      Ghost,
!      Global => null,
!      Pre    => Has_Witness (Container, Witness);
! 
!    function Copy_Key (Key : Key_Type) return Key_Type is (Key);
!    function Copy_Element (Item : Element_Type) return Element_Type is (Item);
!    --  Elements and Keys of maps are copied by numerous primitives in this
!    --  package. This function causes GNATprove to verify that such a copy is
!    --  valid (in particular, it does not break the ownership policy of SPARK,
!    --  i.e. it does not contain pointers that could be used to alias mutable
!    --  data).
! 
!    ---------------------------
!    --  Iteration Primitives --
!    ---------------------------
! 
!    type Private_Key is private;
! 
!    function Iter_First (Container : Map) return Private_Key with
!      Global => null;
! 
!    function Iter_Has_Element
!      (Container : Map;
!       Key       : Private_Key) return Boolean
!    with
!      Global => null;
! 
!    function Iter_Next (Container : Map; Key : Private_Key) return Private_Key
!    with
!      Global => null,
!      Pre    => Iter_Has_Element (Container, Key);
! 
!    function Iter_Element (Container : Map; Key : Private_Key) return Key_Type
!    with
!      Global => null,
!      Pre    => Iter_Has_Element (Container, Key);
!    pragma Annotate (GNATprove, Iterable_For_Proof, "Contains", Has_Key);
! 
! private
! 
!    pragma SPARK_Mode (Off);
! 
!    function "="
!      (Left  : Key_Type;
!       Right : Key_Type) return Boolean renames Equivalent_Keys;
! 
!    subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!    package Element_Containers is new Ada.Containers.Functional_Base
!      (Element_Type => Element_Type,
!       Index_Type   => Positive_Count_Type);
! 
!    package Key_Containers is new Ada.Containers.Functional_Base
!      (Element_Type => Key_Type,
!       Index_Type   => Positive_Count_Type);
! 
!    type Map is record
!       Keys     : Key_Containers.Container;
!       Elements : Element_Containers.Container;
!    end record;
! 
!    type Private_Key is new Count_Type;
! 
!    function Iter_First (Container : Map) return Private_Key is (1);
! 
!    function Iter_Has_Element
!      (Container : Map;
!       Key       : Private_Key) return Boolean
!    is
!      (Count_Type (Key) in 1 .. Key_Containers.Length (Container.Keys));
! 
!    function Iter_Next
!      (Container : Map;
!       Key       : Private_Key) return Private_Key
!    is
!      (if Key = Private_Key'Last then 0 else Key + 1);
! 
!    function Iter_Element
!      (Container : Map;
!       Key       : Private_Key) return Key_Type
!    is
!      (Key_Containers.Get (Container.Keys, Count_Type (Key)));
  
  end Ada.Containers.Functional_Maps;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
  package Ada.Containers.Functional_Maps with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Functional_Maps;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuse.adb gcc-13.1.0/gcc/ada/libgnat/a-cofuse.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuse.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuse.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,174 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                      ADA.CONTAINERS.FUNCTIONAL_SETS                      --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2016-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- 
- package body Ada.Containers.Functional_Sets with SPARK_Mode => Off is
-    use Containers;
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left : Set; Right : Set) return Boolean is
-      (Left.Content <= Right.Content and Right.Content <= Left.Content);
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<=" (Left : Set; Right : Set) return Boolean is
-      (Left.Content <= Right.Content);
- 
-    ---------
-    -- Add --
-    ---------
- 
-    function Add (Container : Set; Item : Element_Type) return Set is
-      (Content =>
-        Add (Container.Content, Length (Container.Content) + 1, Item));
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains (Container : Set; Item : Element_Type) return Boolean is
-      (Find (Container.Content, Item) > 0);
- 
-    ---------------------
-    -- Included_Except --
-    ---------------------
- 
-    function Included_Except
-      (Left  : Set;
-       Right : Set;
-       Item  : Element_Type) return Boolean
-    is
-      (for all E of Left =>
-        Equivalent_Elements (E, Item) or Contains (Right, E));
- 
-    -----------------------
-    -- Included_In_Union --
-    -----------------------
- 
-    function Included_In_Union
-      (Container : Set;
-       Left      : Set;
-       Right     : Set) return Boolean
-    is
-      (for all Item of Container =>
-        Contains (Left, Item) or Contains (Right, Item));
- 
-    ---------------------------
-    -- Includes_Intersection --
-    ---------------------------
- 
-    function Includes_Intersection
-      (Container : Set;
-       Left      : Set;
-       Right     : Set) return Boolean
-    is
-      (for all Item of Left =>
-        (if Contains (Right, Item) then Contains (Container, Item)));
- 
-    ------------------
-    -- Intersection --
-    ------------------
- 
-    function Intersection (Left : Set; Right : Set) return Set is
-      (Content => Intersection (Left.Content, Right.Content));
- 
-    --------------
-    -- Is_Empty --
-    --------------
- 
-    function Is_Empty (Container : Set) return Boolean is
-      (Length (Container.Content) = 0);
- 
-    ------------------
-    -- Is_Singleton --
-    ------------------
- 
-    function Is_Singleton
-      (Container : Set;
-       New_Item  : Element_Type) return Boolean
-    is
-      (Length (Container.Content) = 1
-         and New_Item = Get (Container.Content, 1));
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Set) return Count_Type is
-      (Length (Container.Content));
- 
-    -----------------
-    -- Not_In_Both --
-    -----------------
- 
-    function Not_In_Both
-      (Container : Set;
-       Left      : Set;
-       Right     : Set) return Boolean
-    is
-      (for all Item of Container =>
-        not Contains (Right, Item) or not Contains (Left, Item));
- 
-    ----------------
-    -- No_Overlap --
-    ----------------
- 
-    function No_Overlap (Left : Set; Right : Set) return Boolean is
-      (Num_Overlaps (Left.Content, Right.Content) = 0);
- 
-    ------------------
-    -- Num_Overlaps --
-    ------------------
- 
-    function Num_Overlaps (Left : Set; Right : Set) return Count_Type is
-      (Num_Overlaps (Left.Content, Right.Content));
- 
-    ------------
-    -- Remove --
-    ------------
- 
-    function Remove (Container : Set; Item : Element_Type) return Set is
-      (Content => Remove (Container.Content, Find (Container.Content, Item)));
- 
-    -----------
-    -- Union --
-    -----------
- 
-    function Union (Left : Set; Right : Set) return Set is
-      (Content => Union (Left.Content, Right.Content));
- 
- end Ada.Containers.Functional_Sets;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuse.ads gcc-13.1.0/gcc/ada/libgnat/a-cofuse.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuse.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuse.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2023, 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 --
***************
*** 29,329 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- pragma Ada_2012;
- private with Ada.Containers.Functional_Base;
- 
  generic
-    type Element_Type (<>) is private;
- 
-    with function Equivalent_Elements
-      (Left  : Element_Type;
-       Right : Element_Type) return Boolean is "=";
- 
-    Enable_Handling_Of_Equivalence : Boolean := True;
-    --  This constant should only be set to False when no particular handling
-    --  of equivalence over elements is needed, that is, Equivalent_Elements
-    --  defines an element uniquely.
- 
  package Ada.Containers.Functional_Sets with SPARK_Mode is
  
!    type Set is private with
!      Default_Initial_Condition => Is_Empty (Set),
!      Iterable                  => (First       => Iter_First,
!                                    Next        => Iter_Next,
!                                    Has_Element => Iter_Has_Element,
!                                    Element     => Iter_Element);
!    --  Sets are empty when default initialized.
!    --  "For in" quantification over sets should not be used.
!    --  "For of" quantification over sets iterates over elements.
!    --  Note that, for proof, "for of" quantification is understood modulo
!    --  equivalence (the range of quantification comprises all the elements that
!    --  are equivalent to any element of the set).
! 
!    -----------------------
!    --  Basic operations --
!    -----------------------
! 
!    --  Sets are axiomatized using Contains, which encodes whether an element is
!    --  contained in a set. The length of a set is also added to protect Add
!    --  against overflows but it is not actually modeled.
! 
!    function Contains (Container : Set; Item : Element_Type) return Boolean with
!    --  Return True if Item is contained in Container
! 
!      Global => null,
!      Post   =>
!        (if Enable_Handling_Of_Equivalence then
! 
!           --  Contains returns the same result on all equivalent elements
! 
!           (if (for some E of Container => Equivalent_Elements (E, Item)) then
!               Contains'Result));
! 
!    function Length (Container : Set) return Count_Type with
!      Global => null;
!    --  Return the number of elements in Container
! 
!    ------------------------
!    -- Property Functions --
!    ------------------------
! 
!    function "<=" (Left : Set; Right : Set) return Boolean with
!    --  Set inclusion
! 
!      Global => null,
!      Post   => "<="'Result = (for all Item of Left => Contains (Right, Item));
! 
!    function "=" (Left : Set; Right : Set) return Boolean with
!    --  Extensional equality over sets
! 
!      Global => null,
!      Post   => "="'Result = (Left <= Right and Right <= Left);
! 
!    pragma Warnings (Off, "unused variable ""Item""");
!    function Is_Empty (Container : Set) return Boolean with
!    --  A set is empty if it contains no element
! 
!      Global => null,
!      Post   =>
!        Is_Empty'Result = (for all Item of Container => False)
!          and Is_Empty'Result = (Length (Container) = 0);
!    pragma Warnings (On, "unused variable ""Item""");
! 
!    function Included_Except
!      (Left  : Set;
!       Right : Set;
!       Item  : Element_Type) return Boolean
!    --  Return True if Left contains only elements of Right except possibly
!    --  Item.
! 
!    with
!      Global => null,
!      Post   =>
!        Included_Except'Result =
!          (for all E of Left =>
!            Contains (Right, E) or Equivalent_Elements (E, Item));
! 
!    function Includes_Intersection
!      (Container : Set;
!       Left      : Set;
!       Right     : Set) return Boolean
!    with
!    --  Return True if every element of the intersection of Left and Right is
!    --  in Container.
! 
!      Global => null,
!      Post   =>
!        Includes_Intersection'Result =
!          (for all Item of Left =>
!            (if Contains (Right, Item) then Contains (Container, Item)));
! 
!    function Included_In_Union
!      (Container : Set;
!       Left      : Set;
!       Right     : Set) return Boolean
!    with
!    --  Return True if every element of Container is the union of Left and Right
! 
!      Global => null,
!      Post   =>
!        Included_In_Union'Result =
!          (for all Item of Container =>
!            Contains (Left, Item) or Contains (Right, Item));
! 
!    function Is_Singleton
!      (Container : Set;
!       New_Item  : Element_Type) return Boolean
!    with
!    --  Return True Container only contains New_Item
! 
!      Global => null,
!      Post   =>
!        Is_Singleton'Result =
!          (for all Item of Container => Equivalent_Elements (Item, New_Item));
! 
!    function Not_In_Both
!      (Container : Set;
!       Left      : Set;
!       Right     : Set) return Boolean
!    --  Return True if there are no elements in Container that are in Left and
!    --  Right.
! 
!    with
!      Global => null,
!      Post   =>
!        Not_In_Both'Result =
!          (for all Item of Container =>
!             not Contains (Left, Item) or not Contains (Right, Item));
! 
!    function No_Overlap (Left : Set; Right : Set) return Boolean with
!    --  Return True if there are no equivalent elements in Left and Right
! 
!      Global => null,
!      Post   =>
!        No_Overlap'Result =
!          (for all Item of Left => not Contains (Right, Item));
! 
!    function Num_Overlaps (Left : Set; Right : Set) return Count_Type with
!    --  Number of elements that are both in Left and Right
! 
!      Global => null,
!      Post   =>
!        Num_Overlaps'Result = Length (Intersection (Left, Right))
!          and (if Left <= Right then Num_Overlaps'Result = Length (Left)
!               else Num_Overlaps'Result < Length (Left))
!          and (if Right <= Left then Num_Overlaps'Result = Length (Right)
!               else Num_Overlaps'Result < Length (Right))
!          and (Num_Overlaps'Result = 0) = No_Overlap (Left, Right);
! 
!    ----------------------------
!    -- Construction Functions --
!    ----------------------------
! 
!    --  For better efficiency of both proofs and execution, avoid using
!    --  construction functions in annotations and rather use property functions.
! 
!    function Add (Container : Set; Item : Element_Type) return Set with
!    --  Return a new set containing all the elements of Container plus E
! 
!      Global => null,
!      Pre    =>
!        not Contains (Container, Item)
!        and Length (Container) < Count_Type'Last,
!      Post   =>
!        Length (Add'Result) = Length (Container) + 1
!          and Contains (Add'Result, Item)
!          and Container <= Add'Result
!          and Included_Except (Add'Result, Container, Item);
! 
!    function Remove (Container : Set; Item : Element_Type) return Set with
!    --  Return a new set containing all the elements of Container except E
! 
!      Global => null,
!      Pre    => Contains (Container, Item),
!      Post   =>
!        Length (Remove'Result) = Length (Container) - 1
!          and not Contains (Remove'Result, Item)
!          and Remove'Result <= Container
!          and Included_Except (Container, Remove'Result, Item);
! 
!    function Intersection (Left : Set; Right : Set) return Set with
!    --  Returns the intersection of Left and Right
! 
!      Global => null,
!      Post   =>
!        Intersection'Result <= Left
!          and Intersection'Result <= Right
!          and Includes_Intersection (Intersection'Result, Left, Right);
! 
!    function Union (Left : Set; Right : Set) return Set with
!    --  Returns the union of Left and Right
! 
!      Global => null,
!      Pre    =>
!        Length (Left) - Num_Overlaps (Left, Right) <=
!          Count_Type'Last - Length (Right),
!      Post   =>
!        Length (Union'Result) =
!          Length (Left) - Num_Overlaps (Left, Right) + Length (Right)
!            and Left <= Union'Result
!            and Right <= Union'Result
!            and Included_In_Union (Union'Result, Left, Right);
! 
!    function Copy_Element (Item : Element_Type) return Element_Type is (Item);
!    --  Elements of containers are copied by numerous primitives in this
!    --  package. This function causes GNATprove to verify that such a copy is
!    --  valid (in particular, it does not break the ownership policy of SPARK,
!    --  i.e. it does not contain pointers that could be used to alias mutable
!    --  data).
! 
!    ---------------------------
!    --  Iteration Primitives --
!    ---------------------------
! 
!    type Private_Key is private;
! 
!    function Iter_First (Container : Set) return Private_Key with
!      Global => null;
! 
!    function Iter_Has_Element
!      (Container : Set;
!       Key       : Private_Key) return Boolean
!    with
!      Global => null;
! 
!    function Iter_Next
!      (Container : Set;
!       Key       : Private_Key) return Private_Key
!    with
!      Global => null,
!      Pre    => Iter_Has_Element (Container, Key);
! 
!    function Iter_Element
!      (Container : Set;
!       Key       : Private_Key) return Element_Type
!    with
!      Global => null,
!      Pre    => Iter_Has_Element (Container, Key);
!    pragma Annotate (GNATprove, Iterable_For_Proof, "Contains", Contains);
! 
! private
! 
!    pragma SPARK_Mode (Off);
! 
!    subtype Positive_Count_Type is Count_Type range 1 .. Count_Type'Last;
! 
!    function "="
!      (Left  : Element_Type;
!       Right : Element_Type) return Boolean renames Equivalent_Elements;
! 
!    package Containers is new Ada.Containers.Functional_Base
!      (Element_Type => Element_Type,
!       Index_Type   => Positive_Count_Type);
! 
!    type Set is record
!       Content : Containers.Container;
!    end record;
! 
!    type Private_Key is new Count_Type;
! 
!    function Iter_First (Container : Set) return Private_Key is (1);
! 
!    function Iter_Has_Element
!      (Container : Set;
!       Key       : Private_Key) return Boolean
!    is
!      (Count_Type (Key) in 1 .. Containers.Length (Container.Content));
! 
!    function Iter_Next
!      (Container : Set;
!       Key       : Private_Key) return Private_Key
!    is
!      (if Key = Private_Key'Last then 0 else Key + 1);
! 
!    function Iter_Element
!      (Container : Set;
!       Key       : Private_Key) return Element_Type
!    is
!      (Containers.Get (Container.Content, Count_Type (Key)));
  
  end Ada.Containers.Functional_Sets;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
  package Ada.Containers.Functional_Sets with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Functional_Sets;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuve.adb gcc-13.1.0/gcc/ada/libgnat/a-cofuve.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuve.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuve.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,255 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT LIBRARY COMPONENTS                          --
- --                                                                          --
- --                    ADA.CONTAINERS.FUNCTIONAL_VECTORS                     --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 2016-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- package body Ada.Containers.Functional_Vectors with SPARK_Mode => Off is
-    use Containers;
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left : Sequence; Right : Sequence) return Boolean is
-      (Length (Left.Content) < Length (Right.Content)
-        and then (for all I in Index_Type'First .. Last (Left) =>
-                   Get (Left.Content, I) = Get (Right.Content, I)));
- 
-    ----------
-    -- "<=" --
-    ----------
- 
-    function "<=" (Left : Sequence; Right : Sequence) return Boolean is
-      (Length (Left.Content) <= Length (Right.Content)
-        and then (for all I in Index_Type'First .. Last (Left) =>
-                   Get (Left.Content, I) = Get (Right.Content, I)));
- 
-    ---------
-    -- "=" --
-    ---------
- 
-    function "=" (Left : Sequence; Right : Sequence) return Boolean is
-      (Left.Content = Right.Content);
- 
-    ---------
-    -- Add --
-    ---------
- 
-    function Add
-      (Container : Sequence;
-       New_Item  : Element_Type) return Sequence
-    is
-      (Content =>
-        Add (Container.Content,
-             Index_Type'Val (Index_Type'Pos (Index_Type'First) +
-                             Length (Container.Content)),
-             New_Item));
- 
-    function Add
-      (Container : Sequence;
-       Position  : Index_Type;
-       New_Item  : Element_Type) return Sequence
-    is
-      (Content => Add (Container.Content, Position, New_Item));
- 
-    --------------------
-    -- Constant_Range --
-    --------------------
- 
-    function Constant_Range
-      (Container : Sequence;
-       Fst       : Index_Type;
-       Lst       : Extended_Index;
-       Item      : Element_Type) return Boolean is
-    begin
-       for I in Fst .. Lst loop
-          if Get (Container.Content, I) /= Item then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Constant_Range;
- 
-    --------------
-    -- Contains --
-    --------------
- 
-    function Contains
-      (Container : Sequence;
-       Fst       : Index_Type;
-       Lst       : Extended_Index;
-       Item      : Element_Type) return Boolean
-    is
-    begin
-       for I in Fst .. Lst loop
-          if Get (Container.Content, I) = Item then
-             return True;
-          end if;
-       end loop;
- 
-       return False;
-    end Contains;
- 
-    ------------------
-    -- Equal_Except --
-    ------------------
- 
-    function Equal_Except
-      (Left     : Sequence;
-       Right    : Sequence;
-       Position : Index_Type) return Boolean
-    is
-    begin
-       if Length (Left.Content) /= Length (Right.Content) then
-          return False;
-       end if;
- 
-       for I in Index_Type'First .. Last (Left) loop
-          if I /= Position
-            and then Get (Left.Content, I) /= Get (Right.Content, I)
-          then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Equal_Except;
- 
-    function Equal_Except
-      (Left  : Sequence;
-       Right : Sequence;
-       X     : Index_Type;
-       Y     : Index_Type) return Boolean
-    is
-    begin
-       if Length (Left.Content) /= Length (Right.Content) then
-          return False;
-       end if;
- 
-       for I in Index_Type'First .. Last (Left) loop
-          if I /= X and then I /= Y
-            and then Get (Left.Content, I) /= Get (Right.Content, I)
-          then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Equal_Except;
- 
-    ---------
-    -- Get --
-    ---------
- 
-    function Get (Container : Sequence;
-                  Position  : Extended_Index) return Element_Type
-    is
-      (Get (Container.Content, Position));
- 
-    ----------
-    -- Last --
-    ----------
- 
-    function Last (Container : Sequence) return Extended_Index is
-      (Index_Type'Val
-        ((Index_Type'Pos (Index_Type'First) - 1) + Length (Container)));
- 
-    ------------
-    -- Length --
-    ------------
- 
-    function Length (Container : Sequence) return Count_Type is
-      (Length (Container.Content));
- 
-    -----------------
-    -- Range_Equal --
-    -----------------
- 
-    function Range_Equal
-      (Left  : Sequence;
-       Right : Sequence;
-       Fst   : Index_Type;
-       Lst   : Extended_Index) return Boolean
-    is
-    begin
-       for I in Fst .. Lst loop
-          if Get (Left, I) /= Get (Right, I) then
-             return False;
-          end if;
-       end loop;
- 
-       return True;
-    end Range_Equal;
- 
-    -------------------
-    -- Range_Shifted --
-    -------------------
- 
-    function Range_Shifted
-      (Left   : Sequence;
-       Right  : Sequence;
-       Fst    : Index_Type;
-       Lst    : Extended_Index;
-       Offset : Count_Type'Base) return Boolean
-    is
-    begin
-       for I in Fst .. Lst loop
-          if Get (Left, I) /=
-               Get (Right, Index_Type'Val (Index_Type'Pos (I) + Offset))
-          then
-             return False;
-          end if;
-       end loop;
-       return True;
-    end Range_Shifted;
- 
-    ------------
-    -- Remove --
-    ------------
- 
-    function Remove
-      (Container : Sequence;
-       Position : Index_Type) return Sequence
-    is
-      (Content => Remove (Container.Content, Position));
- 
-    ---------
-    -- Set --
-    ---------
- 
-    function Set
-      (Container : Sequence;
-       Position  : Index_Type;
-       New_Item  : Element_Type) return Sequence
-    is
-      (Content => Set (Container.Content, Position, New_Item));
- 
- end Ada.Containers.Functional_Vectors;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cofuve.ads gcc-13.1.0/gcc/ada/libgnat/a-cofuve.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cofuve.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cofuve.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2016-2023, 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 --
***************
*** 29,402 ****
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
- pragma Ada_2012;
- private with Ada.Containers.Functional_Base;
- 
  generic
-    type Index_Type is (<>);
-    --  To avoid Constraint_Error being raised at run time, Index_Type'Base
-    --  should have at least one more element at the low end than Index_Type.
- 
-    type Element_Type (<>) is private;
-    with function "=" (Left, Right : Element_Type) return Boolean is <>;
- 
  package Ada.Containers.Functional_Vectors with SPARK_Mode is
  
!    subtype Extended_Index is Index_Type'Base range
!      Index_Type'Pred (Index_Type'First) .. Index_Type'Last;
!    --  Index_Type with one more element at the low end of the range.
!    --  This type is never used but it forces GNATprove to check that there is
!    --  room for one more element at the low end of Index_Type.
! 
!    type Sequence is private
!      with Default_Initial_Condition => Length (Sequence) = 0,
!      Iterable => (First       => Iter_First,
!                   Has_Element => Iter_Has_Element,
!                   Next        => Iter_Next,
!                   Element     => Get);
!    --  Sequences are empty when default initialized.
!    --  Quantification over sequences can be done using the regular
!    --  quantification over its range or directly on its elements with "for of".
! 
!    -----------------------
!    --  Basic operations --
!    -----------------------
! 
!    --  Sequences are axiomatized using Length and Get, providing respectively
!    --  the length of a sequence and an accessor to its Nth element:
! 
!    function Length (Container : Sequence) return Count_Type with
!    --  Length of a sequence
! 
!      Global => null,
!      Post   =>
!        (Index_Type'Pos (Index_Type'First) - 1) + Length'Result <=
!          Index_Type'Pos (Index_Type'Last);
! 
!    function Get
!      (Container : Sequence;
!       Position  : Extended_Index) return Element_Type
!    --  Access the Element at position Position in Container
! 
!    with
!      Global => null,
!      Pre    => Position in Index_Type'First .. Last (Container);
! 
!    function Last (Container : Sequence) return Extended_Index with
!    --  Last index of a sequence
! 
!      Global => null,
!      Post =>
!        Last'Result =
!          Index_Type'Val ((Index_Type'Pos (Index_Type'First) - 1) +
!            Length (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Last);
! 
!    function First return Extended_Index is (Index_Type'First) with
!      Global => null;
!    --  First index of a sequence
! 
!    ------------------------
!    -- Property Functions --
!    ------------------------
! 
!    function "=" (Left : Sequence; Right : Sequence) return Boolean with
!    --  Extensional equality over sequences
! 
!      Global => null,
!      Post   =>
!        "="'Result =
!          (Length (Left) = Length (Right)
!            and then (for all N in Index_Type'First .. Last (Left) =>
!                       Get (Left, N) = Get (Right, N)));
!    pragma Annotate (GNATprove, Inline_For_Proof, "=");
! 
!    function "<" (Left : Sequence; Right : Sequence) return Boolean with
!    --  Left is a strict subsequence of Right
! 
!      Global => null,
!      Post   =>
!        "<"'Result =
!          (Length (Left) < Length (Right)
!            and then (for all N in Index_Type'First .. Last (Left) =>
!                       Get (Left, N) = Get (Right, N)));
!    pragma Annotate (GNATprove, Inline_For_Proof, "<");
! 
!    function "<=" (Left : Sequence; Right : Sequence) return Boolean with
!    --  Left is a subsequence of Right
! 
!      Global => null,
!      Post   =>
!        "<="'Result =
!          (Length (Left) <= Length (Right)
!            and then (for all N in Index_Type'First .. Last (Left) =>
!                       Get (Left, N) = Get (Right, N)));
!    pragma Annotate (GNATprove, Inline_For_Proof, "<=");
! 
!    function Contains
!      (Container : Sequence;
!       Fst       : Index_Type;
!       Lst       : Extended_Index;
!       Item      : Element_Type) return Boolean
!    --  Returns True if Item occurs in the range from Fst to Lst of Container
! 
!    with
!      Global => null,
!      Pre    => Lst <= Last (Container),
!      Post   =>
!        Contains'Result =
!          (for some I in Fst .. Lst => Get (Container, I) = Item);
!    pragma Annotate (GNATprove, Inline_For_Proof, Contains);
! 
!    function Constant_Range
!      (Container : Sequence;
!       Fst       : Index_Type;
!       Lst       : Extended_Index;
!       Item      : Element_Type) return Boolean
!    --  Returns True if every element of the range from Fst to Lst of Container
!    --  is equal to Item.
! 
!    with
!      Global => null,
!      Pre    => Lst <= Last (Container),
!      Post   =>
!        Constant_Range'Result =
!          (for all I in Fst .. Lst => Get (Container, I) = Item);
!    pragma Annotate (GNATprove, Inline_For_Proof, Constant_Range);
! 
!    function Equal_Except
!      (Left     : Sequence;
!       Right    : Sequence;
!       Position : Index_Type) return Boolean
!    --  Returns True is Left and Right are the same except at position Position
! 
!    with
!      Global => null,
!      Pre    => Position <= Last (Left),
!      Post   =>
!        Equal_Except'Result =
!          (Length (Left) = Length (Right)
!            and then (for all I in Index_Type'First .. Last (Left) =>
!                       (if I /= Position then Get (Left, I) = Get (Right, I))));
!    pragma Annotate (GNATprove, Inline_For_Proof, Equal_Except);
! 
!    function Equal_Except
!      (Left  : Sequence;
!       Right : Sequence;
!       X     : Index_Type;
!       Y     : Index_Type) return Boolean
!    --  Returns True is Left and Right are the same except at positions X and Y
! 
!    with
!      Global => null,
!      Pre    => X <= Last (Left) and Y <= Last (Left),
!      Post   =>
!        Equal_Except'Result =
!          (Length (Left) = Length (Right)
!            and then (for all I in Index_Type'First .. Last (Left) =>
!                       (if I /= X and I /= Y then
!                           Get (Left, I) = Get (Right, I))));
!    pragma Annotate (GNATprove, Inline_For_Proof, Equal_Except);
! 
!    function Range_Equal
!      (Left  : Sequence;
!       Right : Sequence;
!       Fst   : Index_Type;
!       Lst   : Extended_Index) return Boolean
!    --  Returns True if the ranges from Fst to Lst contain the same elements in
!    --  Left and Right.
! 
!    with
!      Global => null,
!      Pre    => Lst <= Last (Left) and Lst <= Last (Right),
!      Post   =>
!        Range_Equal'Result =
!          (for all I in Fst .. Lst => Get (Left, I) = Get (Right, I));
!    pragma Annotate (GNATprove, Inline_For_Proof, Range_Equal);
! 
!    function Range_Shifted
!      (Left   : Sequence;
!       Right  : Sequence;
!       Fst    : Index_Type;
!       Lst    : Extended_Index;
!       Offset : Count_Type'Base) return Boolean
!    --  Returns True if the range from Fst to Lst in Left contains the same
!    --  elements as the range from Fst + Offset to Lst + Offset in Right.
! 
!    with
!      Global => null,
!      Pre    =>
!        Lst <= Last (Left)
!          and then
!            (if Offset < 0 then
!               Index_Type'Pos (Index_Type'Base'First) - Offset <=
!               Index_Type'Pos (Index_Type'First))
!          and then
!            (if Fst <= Lst then
!               Offset in
!                 Index_Type'Pos (Index_Type'First) - Index_Type'Pos (Fst) ..
!                   (Index_Type'Pos (Index_Type'First) - 1) + Length (Right) -
!                    Index_Type'Pos (Lst)),
!      Post   =>
!        Range_Shifted'Result =
!          ((for all I in Fst .. Lst =>
!             Get (Left, I) =
!             Get (Right, Index_Type'Val (Index_Type'Pos (I) + Offset)))
!           and
!             (for all I in Index_Type'Val (Index_Type'Pos (Fst) + Offset) ..
!                Index_Type'Val (Index_Type'Pos (Lst) + Offset)
!              =>
!                Get (Left, Index_Type'Val (Index_Type'Pos (I) - Offset)) =
!                Get (Right, I)));
!    pragma Annotate (GNATprove, Inline_For_Proof, Range_Shifted);
! 
!    ----------------------------
!    -- Construction Functions --
!    ----------------------------
! 
!    --  For better efficiency of both proofs and execution, avoid using
!    --  construction functions in annotations and rather use property functions.
! 
!    function Set
!      (Container : Sequence;
!       Position  : Index_Type;
!       New_Item  : Element_Type) return Sequence
!    --  Returns a new sequence which contains the same elements as Container
!    --  except for the one at position Position which is replaced by New_Item.
! 
!    with
!      Global => null,
!      Pre    => Position in Index_Type'First .. Last (Container),
!      Post   =>
!        Get (Set'Result, Position) = New_Item
!          and then Equal_Except (Container, Set'Result, Position);
! 
!    function Add (Container : Sequence; New_Item : Element_Type) return Sequence
!    --  Returns a new sequence which contains the same elements as Container
!    --  plus New_Item at the end.
! 
!    with
!      Global => null,
!      Pre    =>
!        Length (Container) < Count_Type'Last
!          and then Last (Container) < Index_Type'Last,
!      Post   =>
!        Length (Add'Result) = Length (Container) + 1
!          and then Get (Add'Result, Last (Add'Result)) = New_Item
!          and then Container <= Add'Result;
! 
!    function Add
!      (Container : Sequence;
!       Position  : Index_Type;
!       New_Item  : Element_Type) return Sequence
!    with
!    --  Returns a new sequence which contains the same elements as Container
!    --  except that New_Item has been inserted at position Position.
! 
!      Global => null,
!      Pre    =>
!        Length (Container) < Count_Type'Last
!          and then Last (Container) < Index_Type'Last
!          and then Position <= Extended_Index'Succ (Last (Container)),
!      Post   =>
!        Length (Add'Result) = Length (Container) + 1
!          and then Get (Add'Result, Position) = New_Item
!          and then Range_Equal
!                     (Left  => Container,
!                      Right => Add'Result,
!                      Fst   => Index_Type'First,
!                      Lst   => Index_Type'Pred (Position))
!          and then Range_Shifted
!                     (Left   => Container,
!                      Right  => Add'Result,
!                      Fst    => Position,
!                      Lst    => Last (Container),
!                      Offset => 1);
! 
!    function Remove
!      (Container : Sequence;
!       Position : Index_Type) return Sequence
!    --  Returns a new sequence which contains the same elements as Container
!    --  except that the element at position Position has been removed.
! 
!    with
!      Global => null,
!      Pre    => Position in Index_Type'First .. Last (Container),
!      Post   =>
!        Length (Remove'Result) = Length (Container) - 1
!          and then Range_Equal
!                     (Left  => Container,
!                      Right => Remove'Result,
!                      Fst   => Index_Type'First,
!                      Lst   => Index_Type'Pred (Position))
!          and then Range_Shifted
!                     (Left   => Remove'Result,
!                      Right  => Container,
!                      Fst    => Position,
!                      Lst    => Last (Remove'Result),
!                      Offset => 1);
! 
!    function Copy_Element (Item : Element_Type) return Element_Type is (Item);
!    --  Elements of containers are copied by numerous primitives in this
!    --  package. This function causes GNATprove to verify that such a copy is
!    --  valid (in particular, it does not break the ownership policy of SPARK,
!    --  i.e. it does not contain pointers that could be used to alias mutable
!    --  data).
! 
!    ---------------------------
!    --  Iteration Primitives --
!    ---------------------------
! 
!    function Iter_First (Container : Sequence) return Extended_Index with
!      Global => null;
! 
!    function Iter_Has_Element
!      (Container : Sequence;
!       Position  : Extended_Index) return Boolean
!    with
!      Global => null,
!      Post   =>
!        Iter_Has_Element'Result =
!          (Position in Index_Type'First .. Last (Container));
!    pragma Annotate (GNATprove, Inline_For_Proof, Iter_Has_Element);
! 
!    function Iter_Next
!      (Container : Sequence;
!       Position  : Extended_Index) return Extended_Index
!    with
!      Global => null,
!      Pre    => Iter_Has_Element (Container, Position);
! 
! private
! 
!    pragma SPARK_Mode (Off);
! 
!    package Containers is new Ada.Containers.Functional_Base
!      (Index_Type   => Index_Type,
!       Element_Type => Element_Type);
! 
!    type Sequence is record
!       Content : Containers.Container;
!    end record;
! 
!    function Iter_First (Container : Sequence) return Extended_Index is
!      (Index_Type'First);
! 
!    function Iter_Next
!      (Container : Sequence;
!       Position  : Extended_Index) return Extended_Index
!    is
!      (if Position = Extended_Index'Last then
!          Extended_Index'First
!       else
!          Extended_Index'Succ (Position));
! 
!    function Iter_Has_Element
!      (Container : Sequence;
!       Position  : Extended_Index) return Boolean
!    is
!      (Position in Index_Type'First ..
!        (Index_Type'Val
!          ((Index_Type'Pos (Index_Type'First) - 1) + Length (Container))));
  
  end Ada.Containers.Functional_Vectors;
--- 29,40 ----
  -- <http://www.gnu.org/licenses/>.                                          --
  ------------------------------------------------------------------------------
  
  generic
  package Ada.Containers.Functional_Vectors with SPARK_Mode is
  
!    pragma Compile_Time_Error
!      (True,
!       "This package has been moved to the SPARK library shipped with any"
!       & " SPARK release starting with version 23.");
  
  end Ada.Containers.Functional_Vectors;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cogeso.adb gcc-13.1.0/gcc/ada/libgnat/a-cogeso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cogeso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cogeso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cogeso.ads gcc-13.1.0/gcc/ada/libgnat/a-cogeso.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cogeso.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cogeso.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cohama.adb gcc-13.1.0/gcc/ada/libgnat/a-cohama.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cohama.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cohama.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 80,86 ****
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
--- 80,86 ----
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
*************** is
*** 1156,1161 ****
--- 1156,1165 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = null then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cohama.ads gcc-13.1.0/gcc/ada/libgnat/a-cohama.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cohama.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cohama.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 543,552 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
--- 543,551 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cohase.adb gcc-13.1.0/gcc/ada/libgnat/a-cohase.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cohase.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cohase.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 99,105 ****
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
--- 99,105 ----
     procedure Set_Next (Node : Node_Access; Next : Node_Access);
     pragma Inline (Set_Next);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     procedure Write_Node
       (Stream : not null access Root_Stream_Type'Class;
*************** is
*** 1749,1754 ****
--- 1749,1758 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = null then
           return Position.Container = null;
        end if;
*************** is
*** 1840,1845 ****
--- 1844,1907 ----
        Element_Type'Write (Stream, Node.Element);
     end Write_Node;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean is
+    begin
+       pragma Assert (Vet (Position), "bad cursor in Has_Element");
+       pragma Assert ((Position.Container = null) = (Position.Node = null),
+                      "bad nullity in Has_Element");
+       return Position.Container = Container'Unrestricted_Access;
+    end Has_Element;
+ 
+    function Tampering_With_Cursors_Prohibited
+      (Container : Set) return Boolean
+    is
+    begin
+       return Is_Busy (Container.HT.TC);
+    end Tampering_With_Cursors_Prohibited;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Element (Position);
+    end Element;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type)) is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       Query_Element (Position, Process);
+    end Query_Element;
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor is
+    begin
+       if Checks and then
+         not (Position = No_Element or else Has_Element (Container, Position))
+       then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Next (Position);
+    end Next;
+ 
+    procedure Next (Container : Set; Position : in out Cursor) is
+    begin
+       Position := Next (Container, Position);
+    end Next;
+ 
+    ------------------
+    -- Generic_Keys --
+    ------------------
+ 
     package body Generic_Keys is
  
        -----------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cohase.ads gcc-13.1.0/gcc/ada/libgnat/a-cohase.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cohase.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cohase.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** is
*** 367,372 ****
--- 367,391 ----
     function Iterate
       (Container : Set) return Set_Iterator_Interfaces.Forward_Iterator'Class;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean;
+ 
+    function Tampering_With_Cursors_Prohibited (Container : Set) return Boolean;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type));
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor;
+ 
+    procedure Next (Container : Set; Position : in out Cursor);
+ 
+    ----------------
+ 
     generic
        type Key_Type (<>) is private;
  
*************** is
*** 382,387 ****
--- 401,409 ----
        --  Applies generic formal operation Key to the element of the node
        --  designated by Position.
  
+       function Key (Container : Set; Position : Cursor) return Key_Type is
+         (Key (Element (Container, Position)));
+ 
        function Element (Container : Set; Key : Key_Type) return Element_Type;
        --  Searches (as per the key-based Find) for the node containing Key, and
        --  returns the associated element.
*************** private
*** 601,610 ****
  
     for Constant_Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
--- 623,631 ----
  
     for Constant_Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cohata.ads gcc-13.1.0/gcc/ada/libgnat/a-cohata.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cohata.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cohata.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Containers.Hash_Tables is
*** 79,82 ****
--- 79,101 ----
        package Implementation is new Helpers.Generic_Implementation;
     end Generic_Bounded_Hash_Table_Types;
  
+    generic
+       type Node_Type is private;
+    package Generic_Formal_Hash_Table_Types is
+ 
+       type Nodes_Type is array (Count_Type range <>) of Node_Type;
+       type Buckets_Type is array (Hash_Type range <>) of Count_Type;
+ 
+       type Hash_Table_Type
+         (Capacity : Count_Type;
+          Modulus  : Hash_Type) is
+       record
+          Length  : Count_Type                  := 0;
+          Free    : Count_Type'Base             := -1;
+          Nodes   : Nodes_Type (1 .. Capacity);
+          Buckets : Buckets_Type (1 .. Modulus) := [others => 0];
+       end record;
+ 
+    end Generic_Formal_Hash_Table_Types;
+ 
  end Ada.Containers.Hash_Tables;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coinho.adb gcc-13.1.0/gcc/ada/libgnat/a-coinho.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coinho.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coinho.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coinho.ads gcc-13.1.0/gcc/ada/libgnat/a-coinho.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coinho.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coinho.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coinho__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-coinho__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coinho__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coinho__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coinho__shared.ads gcc-13.1.0/gcc/ada/libgnat/a-coinho__shared.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coinho__shared.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coinho__shared.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coinve.adb gcc-13.1.0/gcc/ada/libgnat/a-coinve.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coinve.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coinve.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 197,208 ****
        Count     : Count_Type)
     is
     begin
!       --  In the general case, we pass the buck to Insert, but for efficiency,
!       --  we check for the usual case where Count = 1 and the vector has enough
!       --  room for at least one more element.
  
!       if Count = 1
!         and then Container.Elements /= null
          and then Container.Last /= Container.Elements.Last
        then
           TC_Check (Container.TC);
--- 197,225 ----
        Count     : Count_Type)
     is
     begin
!       --  In the general case, we take the slow path; for efficiency,
!       --  we check for the common case where Count = 1 .
  
!       if Count = 1 then
!          Append (Container, New_Item);
!       else
!          Append_Slow_Path (Container, New_Item, Count);
!       end if;
!    end Append;
! 
!    ------------
!    -- Append --
!    ------------
! 
!    procedure Append (Container : in out Vector;
!                      New_Item  :        Element_Type)
!    is
!    begin
!       --  For performance, check for the common special case where the
!       --  container already has room for at least one more element.
!       --  In the general case, pass the buck to Insert.
! 
!       if Container.Elements /= null
          and then Container.Last /= Container.Elements.Last
        then
           TC_Check (Container.TC);
*************** is
*** 223,245 ****
              Container.Elements.EA (New_Last) := new Element_Type'(New_Item);
              Container.Last := New_Last;
           end;
- 
        else
!          Append_Slow_Path (Container, New_Item, Count);
        end if;
     end Append;
  
-    ------------
-    -- Append --
-    ------------
- 
-    procedure Append (Container : in out Vector;
-                         New_Item   :        Element_Type)
-    is
-    begin
-       Insert (Container, Last_Index (Container) + 1, New_Item, 1);
-    end Append;
- 
     ----------------------
     -- Append_Slow_Path --
     ----------------------
--- 240,250 ----
              Container.Elements.EA (New_Last) := new Element_Type'(New_Item);
              Container.Last := New_Last;
           end;
        else
!          Insert (Container, Last_Index (Container) + 1, New_Item, 1);
        end if;
     end Append;
  
     ----------------------
     -- Append_Slow_Path --
     ----------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coinve.ads gcc-13.1.0/gcc/ada/libgnat/a-coinve.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coinve.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coinve.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 512,521 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Vector'Class) return Reference_Control_Type;
--- 512,521 ----
  
     for Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Vector'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-colien.adb gcc-13.1.0/gcc/ada/libgnat/a-colien.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-colien.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-colien.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-colien.ads gcc-13.1.0/gcc/ada/libgnat/a-colien.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-colien.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-colien.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-colire.adb gcc-13.1.0/gcc/ada/libgnat/a-colire.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-colire.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-colire.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-colire.ads gcc-13.1.0/gcc/ada/libgnat/a-colire.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-colire.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-colire.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-comlin.adb gcc-13.1.0/gcc/ada/libgnat/a-comlin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-comlin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-comlin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-comlin.ads gcc-13.1.0/gcc/ada/libgnat/a-comlin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-comlin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-comlin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-comutr.adb gcc-13.1.0/gcc/ada/libgnat/a-comutr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-comutr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-comutr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-comutr.ads gcc-13.1.0/gcc/ada/libgnat/a-comutr.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-comutr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-comutr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 491,500 ****
  
     for Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Tree'Class) return Reference_Control_Type;
--- 491,497 ----
  
     for Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
  
     function Pseudo_Reference
       (Container : aliased Tree'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-conhel.adb gcc-13.1.0/gcc/ada/libgnat/a-conhel.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-conhel.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-conhel.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2015-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2015-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Helpers is
*** 36,43 ****
  
     package body Generic_Implementation is
  
-       use type SAC.Atomic_Unsigned;
- 
        ------------
        -- Adjust --
        ------------
--- 36,41 ----
*************** package body Ada.Containers.Helpers is
*** 133,139 ****
        procedure TC_Check (T_Counts : Tamper_Counts) is
        begin
           if T_Check then
!             if T_Counts.Busy > 0 then
                 raise Program_Error with
                   "attempt to tamper with cursors";
              end if;
--- 131,137 ----
        procedure TC_Check (T_Counts : Tamper_Counts) is
        begin
           if T_Check then
!             if Is_Busy (T_Counts) then
                 raise Program_Error with
                   "attempt to tamper with cursors";
              end if;
*************** package body Ada.Containers.Helpers is
*** 144,150 ****
              --  Thus if the busy count is zero, then the lock count
              --  must also be zero.
  
!             pragma Assert (T_Counts.Lock = 0);
           end if;
        end TC_Check;
  
--- 142,148 ----
              --  Thus if the busy count is zero, then the lock count
              --  must also be zero.
  
!             pragma Assert (not Is_Locked (T_Counts));
           end if;
        end TC_Check;
  
*************** package body Ada.Containers.Helpers is
*** 154,160 ****
  
        procedure TE_Check (T_Counts : Tamper_Counts) is
        begin
!          if T_Check and then T_Counts.Lock > 0 then
              raise Program_Error with
                "attempt to tamper with elements";
           end if;
--- 152,158 ----
  
        procedure TE_Check (T_Counts : Tamper_Counts) is
        begin
!          if T_Check and then Is_Locked (T_Counts) then
              raise Program_Error with
                "attempt to tamper with elements";
           end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-conhel.ads gcc-13.1.0/gcc/ada/libgnat/a-conhel.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-conhel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-conhel.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Containers.Helpers is
*** 121,129 ****
        pragma Inline (TE_Check);
        --  Tampering-with-elements check
  
!       -----------------
!       --  RAII Types --
!       -----------------
  
        --  Initialize of With_Busy increments the Busy count, and Finalize
        --  decrements it. Thus, to prohibit tampering with elements within a
--- 121,151 ----
        pragma Inline (TE_Check);
        --  Tampering-with-elements check
  
!       ---------------------------------------
!       -- Queries of busy and locked status --
!       ---------------------------------------
! 
!       --  These are never called when tampering checks are suppressed.
! 
!       use type SAC.Atomic_Unsigned;
! 
!       pragma Warnings (Off);
!       --  Otherwise, the -gnatw.n switch triggers unwanted warnings on the
!       --  references to atomic variables below.
! 
!       function Is_Busy (T_Counts : Tamper_Counts) return Boolean is
!         (if T_Check then T_Counts.Busy > 0 else raise Program_Error);
!       pragma Inline (Is_Busy);
! 
!       function Is_Locked (T_Counts : Tamper_Counts) return Boolean is
!         (if T_Check then T_Counts.Lock > 0 else raise Program_Error);
!       pragma Inline (Is_Locked);
! 
!       pragma Warnings (On);
! 
!       ----------------
!       -- RAII Types --
!       ----------------
  
        --  Initialize of With_Busy increments the Busy count, and Finalize
        --  decrements it. Thus, to prohibit tampering with elements within a
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-convec.adb gcc-13.1.0/gcc/ada/libgnat/a-convec.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-convec.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-convec.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 173,199 ****
        Count     : Count_Type)
     is
     begin
!       --  In the general case, we pass the buck to Insert, but for efficiency,
!       --  we check for the usual case where Count = 1 and the vector has enough
!       --  room for at least one more element.
! 
!       if Count = 1
!         and then Container.Elements /= null
!         and then Container.Last /= Container.Elements.Last
!       then
!          TC_Check (Container.TC);
! 
!          --  Increment Container.Last after assigning the New_Item, so we
!          --  leave the Container unmodified in case Finalize/Adjust raises
!          --  an exception.
! 
!          declare
!             New_Last : constant Index_Type := Container.Last + 1;
!          begin
!             Container.Elements.EA (New_Last) := New_Item;
!             Container.Last := New_Last;
!          end;
  
        else
           Append_Slow_Path (Container, New_Item, Count);
        end if;
--- 173,183 ----
        Count     : Count_Type)
     is
     begin
!       --  In the general case, we take the slow path; for efficiency,
!       --  we check for the common case where Count = 1 .
  
+       if Count = 1 then
+          Append (Container, New_Item);
        else
           Append_Slow_Path (Container, New_Item, Count);
        end if;
*************** is
*** 222,228 ****
                       New_Item  :        Element_Type)
     is
     begin
!       Insert (Container, Last_Index (Container) + 1, New_Item, 1);
     end Append;
  
     ----------------------
--- 206,233 ----
                       New_Item  :        Element_Type)
     is
     begin
!       --  For performance, check for the common special case where the
!       --  container already has room for at least one more element.
!       --  In the general case, pass the buck to Insert.
! 
!       if Container.Elements /= null
!         and then Container.Last /= Container.Elements.Last
!       then
!          TC_Check (Container.TC);
! 
!          --  Increment Container.Last after assigning the New_Item, so we
!          --  leave the Container unmodified in case Finalize/Adjust raises
!          --  an exception.
! 
!          declare
!             New_Last : constant Index_Type := Container.Last + 1;
!          begin
!             Container.Elements.EA (New_Last) := New_Item;
!             Container.Last := New_Last;
!          end;
!       else
!          Insert (Container, Last_Index (Container) + 1, New_Item, 1);
!       end if;
     end Append;
  
     ----------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-convec.ads gcc-13.1.0/gcc/ada/libgnat/a-convec.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-convec.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-convec.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 829,838 ****
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Exp_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Vector'Class) return Reference_Control_Type;
--- 829,841 ----
  
     for Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize the expansion of "for ... of"
!    --  loops: the Next(Cursor) (or Previous) procedure in the visible part,
!    --  and the following Pseudo_Reference and Get_Element_Access functions.
!    --  See Exp_Ch5 for details, including the leading underscores here.
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Vector'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coorma.adb gcc-13.1.0/gcc/ada/libgnat/a-coorma.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coorma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coorma.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coorma.ads gcc-13.1.0/gcc/ada/libgnat/a-coorma.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coorma.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coorma.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** private
*** 357,366 ****
  
     for Reference_Type'Write use Write;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions.  See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
--- 357,366 ----
  
     for Reference_Type'Write use Write;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Map'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coormu.adb gcc-13.1.0/gcc/ada/libgnat/a-coormu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coormu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coormu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coormu.ads gcc-13.1.0/gcc/ada/libgnat/a-coormu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coormu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coormu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coorse.adb gcc-13.1.0/gcc/ada/libgnat/a-coorse.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coorse.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coorse.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 643,648 ****
--- 643,703 ----
        end if;
     end Free;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean is
+    begin
+       pragma Assert
+         (Vet (Container.Tree, Position.Node), "bad cursor in Has_Element");
+       pragma Assert ((Position.Container = null) = (Position.Node = null),
+                      "bad nullity in Has_Element");
+       return Position.Container = Container'Unrestricted_Access;
+    end Has_Element;
+ 
+    function Tampering_With_Cursors_Prohibited
+      (Container : Set) return Boolean
+    is
+    begin
+       return Is_Busy (Container.Tree.TC);
+    end Tampering_With_Cursors_Prohibited;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Element (Position);
+    end Element;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type)) is
+    begin
+       if Checks and then not Has_Element (Container, Position) then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       Query_Element (Position, Process);
+    end Query_Element;
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor is
+    begin
+       if Checks and then
+         not (Position = No_Element or else Has_Element (Container, Position))
+       then
+          raise Program_Error with "Position for wrong Container";
+       end if;
+ 
+       return Next (Position);
+    end Next;
+ 
+    procedure Next (Container : Set; Position : in out Cursor) is
+    begin
+       Position := Next (Container, Position);
+    end Next;
+ 
     ------------------
     -- Generic_Keys --
     ------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coorse.ads gcc-13.1.0/gcc/ada/libgnat/a-coorse.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coorse.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coorse.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 --
*************** is
*** 57,65 ****
     type Set is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type;
!         --  Aggregate         => (Empty       => Empty,
!         --                        Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
--- 57,65 ----
     type Set is tagged private
     with Constant_Indexing => Constant_Reference,
          Default_Iterator  => Iterate,
!         Iterator_Element  => Element_Type,
!         Aggregate         => (Empty       => Empty,
!                               Add_Unnamed => Include);
  
     pragma Preelaborable_Initialization (Set);
  
*************** is
*** 231,236 ****
--- 231,255 ----
        Start     : Cursor)
        return Set_Iterator_Interfaces.Reversible_Iterator'class;
  
+    --  Ada 2022 features:
+ 
+    function Has_Element (Container : Set; Position : Cursor) return Boolean;
+ 
+    function Tampering_With_Cursors_Prohibited (Container : Set) return Boolean;
+ 
+    function Element (Container : Set; Position : Cursor) return Element_Type;
+ 
+    procedure Query_Element
+      (Container : Set;
+       Position  : Cursor;
+       Process   : not null access procedure (Element : Element_Type));
+ 
+    function Next (Container : Set; Position : Cursor) return Cursor;
+ 
+    procedure Next (Container : Set; Position : in out Cursor);
+ 
+    ----------------
+ 
     generic
        type Key_Type (<>) is private;
  
*************** is
*** 244,249 ****
--- 263,271 ----
  
        function Key (Position : Cursor) return Key_Type;
  
+       function Key (Container : Set; Position : Cursor) return Key_Type is
+         (Key (Element (Container, Position)));
+ 
        function Element (Container : Set; Key : Key_Type) return Element_Type;
  
        procedure Replace
*************** private
*** 415,424 ****
  
     for Constant_Reference_Type'Read use Read;
  
!    --  Three operations are used to optimize in the expansion of "for ... of"
!    --  loops: the Next(Cursor) procedure in the visible part, and the following
!    --  Pseudo_Reference and Get_Element_Access functions. See Sem_Ch5 for
!    --  details.
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
--- 437,446 ----
  
     for Constant_Reference_Type'Read use Read;
  
!    --  See Ada.Containers.Vectors for documentation on the following
! 
!    procedure _Next (Position : in out Cursor) renames Next;
!    procedure _Previous (Position : in out Cursor) renames Previous;
  
     function Pseudo_Reference
       (Container : aliased Set'Class) return Reference_Control_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coprnu.adb gcc-13.1.0/gcc/ada/libgnat/a-coprnu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-coprnu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coprnu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-coprnu.ads gcc-13.1.0/gcc/ada/libgnat/a-coprnu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-coprnu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-coprnu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-costso.adb gcc-13.1.0/gcc/ada/libgnat/a-costso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-costso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-costso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-costso.ads gcc-13.1.0/gcc/ada/libgnat/a-costso.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-costso.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-costso.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crbltr.ads gcc-13.1.0/gcc/ada/libgnat/a-crbltr.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-crbltr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crbltr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crbtgk.adb gcc-13.1.0/gcc/ada/libgnat/a-crbtgk.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-crbtgk.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crbtgk.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crbtgk.ads gcc-13.1.0/gcc/ada/libgnat/a-crbtgk.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-crbtgk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crbtgk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crbtgo.adb gcc-13.1.0/gcc/ada/libgnat/a-crbtgo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-crbtgo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crbtgo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Red_Black_Tr
*** 1060,1065 ****
--- 1060,1069 ----
  
     function Vet (Tree : Tree_Type; Node : Node_Access) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Node = null then
           return True;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crbtgo.ads gcc-13.1.0/gcc/ada/libgnat/a-crbtgo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-crbtgo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crbtgo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Containers.Red_Black_Trees.G
*** 61,67 ****
  
     --  procedure Check_Invariant (Tree : Tree_Type);
  
!    function Vet (Tree : Tree_Type; Node : Node_Access) return Boolean;
     --  Inspects Node to determine (to the extent possible) whether
     --  the node is valid; used to detect if the node is dangling.
  
--- 61,68 ----
  
     --  procedure Check_Invariant (Tree : Tree_Type);
  
!    function Vet (Tree : Tree_Type; Node : Node_Access) return Boolean
!      with Inline;
     --  Inspects Node to determine (to the extent possible) whether
     --  the node is valid; used to detect if the node is dangling.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crdlli.adb gcc-13.1.0/gcc/ada/libgnat/a-crdlli.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-crdlli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crdlli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Restricted_D
*** 51,57 ****
        Before    : Count_Type;
        New_Node  : Count_Type);
  
!    function Vet (Position : Cursor) return Boolean;
  
     ---------
     -- "=" --
--- 51,57 ----
        Before    : Count_Type;
        New_Node  : Count_Type);
  
!    function Vet (Position : Cursor) return Boolean with Inline;
  
     ---------
     -- "=" --
*************** package body Ada.Containers.Restricted_D
*** 1330,1335 ****
--- 1330,1339 ----
  
     function Vet (Position : Cursor) return Boolean is
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Position.Node = 0 then
           return Position.Container = null;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-crdlli.ads gcc-13.1.0/gcc/ada/libgnat/a-crdlli.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-crdlli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-crdlli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-csquin.ads gcc-13.1.0/gcc/ada/libgnat/a-csquin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-csquin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-csquin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cuprqu.adb gcc-13.1.0/gcc/ada/libgnat/a-cuprqu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cuprqu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cuprqu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cuprqu.ads gcc-13.1.0/gcc/ada/libgnat/a-cuprqu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cuprqu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cuprqu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cusyqu.adb gcc-13.1.0/gcc/ada/libgnat/a-cusyqu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-cusyqu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cusyqu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cusyqu.ads gcc-13.1.0/gcc/ada/libgnat/a-cusyqu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cusyqu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cusyqu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cwila1.ads gcc-13.1.0/gcc/ada/libgnat/a-cwila1.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cwila1.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cwila1.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-cwila9.ads gcc-13.1.0/gcc/ada/libgnat/a-cwila9.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-cwila9.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-cwila9.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-decima.adb gcc-13.1.0/gcc/ada/libgnat/a-decima.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-decima.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-decima.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-decima.ads gcc-13.1.0/gcc/ada/libgnat/a-decima.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-decima.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-decima.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-decima__128.ads gcc-13.1.0/gcc/ada/libgnat/a-decima__128.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-decima__128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-decima__128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-dhfina.adb gcc-13.1.0/gcc/ada/libgnat/a-dhfina.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-dhfina.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-dhfina.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-dhfina.ads gcc-13.1.0/gcc/ada/libgnat/a-dhfina.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-dhfina.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-dhfina.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-diocst.adb gcc-13.1.0/gcc/ada/libgnat/a-diocst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-diocst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-diocst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-diocst.ads gcc-13.1.0/gcc/ada/libgnat/a-diocst.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-diocst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-diocst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-direct.adb gcc-13.1.0/gcc/ada/libgnat/a-direct.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-direct.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-direct.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** use  Ada.Directories.Hierarchical_File_N
*** 38,44 ****
  with Ada.Strings.Fixed;
  with Ada.Strings.Maps;           use Ada.Strings.Maps;
  with Ada.Strings.Unbounded;      use Ada.Strings.Unbounded;
- with Ada.Unchecked_Conversion;
  with Ada.Unchecked_Deallocation;
  
  with Interfaces.C;
--- 38,43 ----
*************** package body Ada.Directories is
*** 1404,1414 ****
                    if Error /= 0 then
                       Search.State.Dir_Contents.Append
                         (Directory_Entry_Type'
!                           [Valid           => True,
                             Name            => To_Unbounded_String (File_Name),
                             Full_Name       => To_Unbounded_String (Path),
                             Attr_Error_Code => Error,
!                            others          => <>]);
  
                    --  Otherwise, if the file exists and matches the file kind
                    --  Filter, add the file to the search results. We capture
--- 1403,1413 ----
                    if Error /= 0 then
                       Search.State.Dir_Contents.Append
                         (Directory_Entry_Type'
!                           (Valid           => True,
                             Name            => To_Unbounded_String (File_Name),
                             Full_Name       => To_Unbounded_String (Path),
                             Attr_Error_Code => Error,
!                            others          => <>));
  
                    --  Otherwise, if the file exists and matches the file kind
                    --  Filter, add the file to the search results. We capture
*************** package body Ada.Directories is
*** 1445,1458 ****
                       if Found then
                          Search.State.Dir_Contents.Append
                            (Directory_Entry_Type'
!                              [Valid             => True,
                                Name              =>
                                  To_Unbounded_String (File_Name),
                                Full_Name         => To_Unbounded_String (Path),
                                Attr_Error_Code   => 0,
                                Kind              => Kind,
                                Modification_Time => Modification_Time (Path),
!                               Size              => Size]);
                       end if;
                    end if;
                 end;
--- 1444,1457 ----
                       if Found then
                          Search.State.Dir_Contents.Append
                            (Directory_Entry_Type'
!                              (Valid             => True,
                                Name              =>
                                  To_Unbounded_String (File_Name),
                                Full_Name         => To_Unbounded_String (Path),
                                Attr_Error_Code   => 0,
                                Kind              => Kind,
                                Modification_Time => Modification_Time (Path),
!                               Size              => Size));
                       end if;
                    end if;
                 end;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-direct.ads gcc-13.1.0/gcc/ada/libgnat/a-direct.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-direct.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-direct.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, 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. --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-direio.adb gcc-13.1.0/gcc/ada/libgnat/a-direio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-direio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-direio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-direio.ads gcc-13.1.0/gcc/ada/libgnat/a-direio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-direio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-direio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-dirval.adb gcc-13.1.0/gcc/ada/libgnat/a-dirval.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-dirval.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-dirval.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                             (POSIX Version)                              --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                             (POSIX Version)                              --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-dirval.ads gcc-13.1.0/gcc/ada/libgnat/a-dirval.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-dirval.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-dirval.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-dirval__mingw.adb gcc-13.1.0/gcc/ada/libgnat/a-dirval__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-dirval__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-dirval__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-einuoc.adb gcc-13.1.0/gcc/ada/libgnat/a-einuoc.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-einuoc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-einuoc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-einuoc.ads gcc-13.1.0/gcc/ada/libgnat/a-einuoc.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-einuoc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-einuoc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-elchha.adb gcc-13.1.0/gcc/ada/libgnat/a-elchha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-elchha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-elchha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-elchha.ads gcc-13.1.0/gcc/ada/libgnat/a-elchha.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-elchha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-elchha.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-envvar.adb gcc-13.1.0/gcc/ada/libgnat/a-envvar.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-envvar.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-envvar.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-excach.adb gcc-13.1.0/gcc/ada/libgnat/a-excach.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-excach.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-excach.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-except.adb gcc-13.1.0/gcc/ada/libgnat/a-except.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-except.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-except.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-except.ads gcc-13.1.0/gcc/ada/libgnat/a-except.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-except.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-except.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-exctra.adb gcc-13.1.0/gcc/ada/libgnat/a-exctra.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-exctra.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-exctra.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-exctra.ads gcc-13.1.0/gcc/ada/libgnat/a-exctra.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-exctra.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-exctra.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-exexda.adb gcc-13.1.0/gcc/ada/libgnat/a-exexda.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-exexda.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-exexda.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-exexpr.adb gcc-13.1.0/gcc/ada/libgnat/a-exexpr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-exexpr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-exexpr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-exextr.adb gcc-13.1.0/gcc/ada/libgnat/a-exextr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-exextr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-exextr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-exstat.adb gcc-13.1.0/gcc/ada/libgnat/a-exstat.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-exstat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-exstat.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Stream_Attributes is
*** 109,121 ****
           Raise_Exception
             (Program_Error'Identity,
              "bad exception occurrence in stream input");
- 
-          --  The following junk raise of Program_Error is required because
-          --  this is a No_Return procedure, and unfortunately Raise_Exception
-          --  can return (this particular call can't, but the back end is not
-          --  clever enough to know that).
- 
-          raise Program_Error;
        end Bad_EO;
  
        procedure Next_String is
--- 109,114 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-finali.adb gcc-13.1.0/gcc/ada/libgnat/a-finali.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-finali.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-finali.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-finali.ads gcc-13.1.0/gcc/ada/libgnat/a-finali.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-finali.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-finali.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-locale.adb gcc-13.1.0/gcc/ada/libgnat/a-locale.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-locale.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-locale.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-locale.ads gcc-13.1.0/gcc/ada/libgnat/a-locale.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-locale.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-locale.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nagefl.ads gcc-13.1.0/gcc/ada/libgnat/a-nagefl.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nagefl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nagefl.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Generic Wrapper)                             --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Generic Wrapper)                             --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,40 ****
  ------------------------------------------------------------------------------
  
  --  This package provides the basic computational interface for the generic
! --  elementary functions. The C library version interfaces with the routines
! --  in the C mathematical library.
  
! --  This version here is for use with normal Unix math functions.
  
  with Ada.Numerics.Aux_Long_Long_Float;
  with Ada.Numerics.Aux_Long_Float;
--- 31,40 ----
  ------------------------------------------------------------------------------
  
  --  This package provides the basic computational interface for the generic
! --  elementary functions.
  
! --  This version here delegates to interfaces that typically import as
! --  intrinsics the expected math functions.
  
  with Ada.Numerics.Aux_Long_Long_Float;
  with Ada.Numerics.Aux_Long_Float;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-naliop.ads gcc-13.1.0/gcc/ada/libgnat/a-naliop.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-naliop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-naliop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-naliop__nolibm.ads gcc-13.1.0/gcc/ada/libgnat/a-naliop__nolibm.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-naliop__nolibm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-naliop__nolibm.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nallfl.ads gcc-13.1.0/gcc/ada/libgnat/a-nallfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nallfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nallfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 5,13 ****
  --     A D A . N U M E R I C S . A U X . L O N G _ L O N G _ F L O A T      --
  --                                                                          --
  --                                 S p e c                                  --
! --                  (C Math Library Version, Long Long Float)               --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,13 ----
  --     A D A . N U M E R I C S . A U X . L O N G _ L O N G _ F L O A T      --
  --                                                                          --
  --                                 S p e c                                  --
! --                    (Instrinsic Version, Long Long Float)                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the generic
! --  elementary functions. The C library version interfaces with the routines
! --  in the C mathematical library, and is thus quite portable.
  
  with Ada.Numerics.Aux_Linker_Options;
  pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
--- 30,41 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the
! --  generic elementary functions. With the intrinsic version, the
! --  compiler can use its knowledge of the functions to select the most
! --  suitable implementation. It is thus quite portable. These
! --  interfaces are suitable for cases in which Long Long Float and C's
! --  long double share the same representation.
  
  with Ada.Numerics.Aux_Linker_Options;
  pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
*************** package Ada.Numerics.Aux_Long_Long_Float
*** 42,48 ****
  
     subtype T is Long_Long_Float;
  
!    --  We import these functions directly from C. Note that we label them
     --  all as pure functions, because indeed all of them are in fact pure.
  
     function Sin (X : T) return T with
--- 45,51 ----
  
     subtype T is Long_Long_Float;
  
!    --  We import these functions as intrinsics. Note that we label them
     --  all as pure functions, because indeed all of them are in fact pure.
  
     function Sin (X : T) return T with
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nallfl__wraplf.ads gcc-13.1.0/gcc/ada/libgnat/a-nallfl__wraplf.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nallfl__wraplf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nallfl__wraplf.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --              (Long Long Float Wrapper in terms of Long Float)            --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --              (Long Long Float Wrapper in terms of Long Float)            --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nalofl.ads gcc-13.1.0/gcc/ada/libgnat/a-nalofl.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nalofl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nalofl.ads	Wed Apr 26 07:09:39 2023
***************
*** 5,13 ****
  --          A D A . N U M E R I C S . A U X _ L O N G _ F L O A T           --
  --                                                                          --
  --                                 S p e c                                  --
! --                     (C Math Library Version, Long Float)                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,13 ----
  --          A D A . N U M E R I C S . A U X _ L O N G _ F L O A T           --
  --                                                                          --
  --                                 S p e c                                  --
! --                       (Intrinsic Version, Long Float)                    --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the generic
! --  elementary functions. The C library version interfaces with the routines
! --  in the C mathematical library, and is thus quite portable.
  
  with Ada.Numerics.Aux_Linker_Options;
  pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
--- 30,41 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the
! --  generic elementary functions. With the intrinsic version, the
! --  compiler can use its knowledge of the functions to select the most
! --  suitable implementation. It is thus quite portable. These
! --  interfaces are suitable for cases in which Long Float and C's
! --  double share the same representation.
  
  with Ada.Numerics.Aux_Linker_Options;
  pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
*************** package Ada.Numerics.Aux_Long_Float is
*** 42,48 ****
  
     subtype T is Long_Float;
  
!    --  We import these functions directly from C. Note that we label them
     --  all as pure functions, because indeed all of them are in fact pure.
  
     function Sin (X : T) return T with
--- 45,51 ----
  
     subtype T is Long_Float;
  
!    --  We import these functions as intrinsics. Note that we label them
     --  all as pure functions, because indeed all of them are in fact pure.
  
     function Sin (X : T) return T with
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nalofl__simd.ads gcc-13.1.0/gcc/ada/libgnat/a-nalofl__simd.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nalofl__simd.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-nalofl__simd.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,95 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --          A D A . N U M E R I C S . A U X _ L O N G _ F L O A T           --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                     (Intrinsic/SIMD Version, Long Float)                 --
+ --                                                                          --
+ --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the
+ --  generic elementary functions. With the intrinsic/SIMD version, the
+ --  compiler can use its knowledge of the functions to select the most
+ --  suitable implementation, including a vector implementation. These
+ --  interfaces are suitable for cases in which Long Float and C's
+ --  double share the same representation.
+ 
+ with Ada.Numerics.Aux_Linker_Options;
+ pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
+ 
+ package Ada.Numerics.Aux_Long_Float is
+    pragma Pure;
+ 
+    subtype T is Long_Float;
+ 
+    --  We import these functions as intrinsics. Note that we label them
+    --  all as pure functions, because indeed all of them are in fact pure.
+ 
+    function Sin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sin";
+    pragma Machine_Attribute (Sin, "simd", "notinbranch");
+ 
+    function Cos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cos";
+    pragma Machine_Attribute (Cos, "simd", "notinbranch");
+ 
+    function Tan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tan";
+ 
+    function Exp (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "exp";
+    pragma Machine_Attribute (Exp, "simd", "notinbranch");
+ 
+    function Sqrt (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sqrt";
+ 
+    function Log (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "log";
+    pragma Machine_Attribute (Log, "simd", "notinbranch");
+ 
+    function Acos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "acos";
+ 
+    function Asin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "asin";
+ 
+    function Atan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "atan";
+ 
+    function Sinh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinh";
+ 
+    function Cosh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cosh";
+ 
+    function Tanh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanh";
+ 
+    function Pow (X, Y : T) return T with
+      Import, Convention => Intrinsic, External_Name => "pow";
+    pragma Machine_Attribute (Pow, "simd", "notinbranch");
+ 
+ end Ada.Numerics.Aux_Long_Float;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nashfl.ads gcc-13.1.0/gcc/ada/libgnat/a-nashfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nashfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nashfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                  (Short Float Wrapper in terms of Float)                 --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                  (Short Float Wrapper in terms of Float)                 --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nashfl__wraplf.ads gcc-13.1.0/gcc/ada/libgnat/a-nashfl__wraplf.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nashfl__wraplf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nashfl__wraplf.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                (Short Float Wrapper in terms of Long Float)              --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                (Short Float Wrapper in terms of Long Float)              --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbig.adb gcc-13.1.0/gcc/ada/libgnat/a-nbnbig.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbig.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbig.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbig.ads gcc-13.1.0/gcc/ada/libgnat/a-nbnbig.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbig.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbig.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Numerics.Big_Numbers.Big_Int
*** 32,37 ****
--- 32,39 ----
     Ghost,
     Pure
  is
+    pragma Annotate (GNATprove, Always_Return, Big_Integers_Ghost);
+ 
     type Big_Integer is private
       with Integer_Literal => From_Universal_Image;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbin.adb gcc-13.1.0/gcc/ada/libgnat/a-nbnbin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbin.ads gcc-13.1.0/gcc/ada/libgnat/a-nbnbin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbin.ads	Wed Apr 26 07:09:39 2023
*************** private with System;
*** 21,26 ****
--- 21,28 ----
  package Ada.Numerics.Big_Numbers.Big_Integers
    with Preelaborate
  is
+    pragma Annotate (GNATprove, Always_Return, Big_Integers);
+ 
     type Big_Integer is private
       with Integer_Literal => From_Universal_Image,
            Put_Image       => Put_Image;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbin__gmp.adb gcc-13.1.0/gcc/ada/libgnat/a-nbnbin__gmp.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbin__gmp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbin__gmp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbre.adb gcc-13.1.0/gcc/ada/libgnat/a-nbnbre.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbre.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbre.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2019-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nbnbre.ads gcc-13.1.0/gcc/ada/libgnat/a-nbnbre.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nbnbre.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nbnbre.ads	Wed Apr 26 07:09:39 2023
*************** with Ada.Strings.Text_Buffers; use Ada.S
*** 20,25 ****
--- 20,27 ----
  package Ada.Numerics.Big_Numbers.Big_Reals
    with Preelaborate
  is
+    pragma Annotate (GNATprove, Always_Return, Big_Reals);
+ 
     type Big_Real is private with
       Real_Literal => From_Universal_Image,
       Put_Image    => Put_Image;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngcefu.adb gcc-13.1.0/gcc/ada/libgnat/a-ngcefu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ngcefu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngcefu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Numerics.Generic_Comple
*** 225,231 ****
        elsif abs Re (X) > 1.0 / Epsilon or else
              abs Im (X) > 1.0 / Epsilon
        then
!          Xt := Complex_One  /  X;
  
           if Re (X) < 0.0 then
              Set_Re (Xt, PI - Re (Xt));
--- 225,231 ----
        elsif abs Re (X) > 1.0 / Epsilon or else
              abs Im (X) > 1.0 / Epsilon
        then
!          Xt := Complex_One / X;
  
           if Re (X) < 0.0 then
              Set_Re (Xt, PI - Re (Xt));
*************** package body Ada.Numerics.Generic_Comple
*** 442,448 ****
        if abs Re (X) < Square_Root_Epsilon and then
           abs Im (X) < Square_Root_Epsilon
        then
!          return Complex_One  /  X;
  
        elsif Im (X) > Log_Inverse_Epsilon_2 then
           return -Complex_I;
--- 442,448 ----
        if abs Re (X) < Square_Root_Epsilon and then
           abs Im (X) < Square_Root_Epsilon
        then
!          return Complex_One / X;
  
        elsif Im (X) > Log_Inverse_Epsilon_2 then
           return -Complex_I;
*************** package body Ada.Numerics.Generic_Comple
*** 463,469 ****
        if abs Re (X) < Square_Root_Epsilon and then
           abs Im (X) < Square_Root_Epsilon
        then
!          return Complex_One  /  X;
  
        elsif Re (X) > Log_Inverse_Epsilon_2 then
           return Complex_One;
--- 463,469 ----
        if abs Re (X) < Square_Root_Epsilon and then
           abs Im (X) < Square_Root_Epsilon
        then
!          return Complex_One / X;
  
        elsif Re (X) > Log_Inverse_Epsilon_2 then
           return Complex_One;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngcoar.adb gcc-13.1.0/gcc/ada/libgnat/a-ngcoar.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ngcoar.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngcoar.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2006-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2006-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Numerics.Generic_Comple
*** 902,908 ****
     function "-"
       (Left  : Real_Vector;
        Right : Complex_Vector) return Complex_Vector
!       renames Instantiations."-";
  
     function "-"
       (Left  : Complex_Vector;
--- 902,908 ----
     function "-"
       (Left  : Real_Vector;
        Right : Complex_Vector) return Complex_Vector
!      renames Instantiations."-";
  
     function "-"
       (Left  : Complex_Vector;
*************** package body Ada.Numerics.Generic_Comple
*** 956,962 ****
     -----------
  
     function "abs" (Right : Complex_Vector) return Real'Base
!       renames Instantiations."abs";
  
     --------------
     -- Argument --
--- 956,962 ----
     -----------
  
     function "abs" (Right : Complex_Vector) return Real'Base
!      renames Instantiations."abs";
  
     --------------
     -- Argument --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngcoar.ads gcc-13.1.0/gcc/ada/libgnat/a-ngcoar.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ngcoar.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngcoar.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Numerics.Generic_Complex_Arr
*** 135,141 ****
     function Compose_From_Cartesian (Re : Real_Matrix) return Complex_Matrix;
  
     function Compose_From_Cartesian
!      (Re, Im : Real_Matrix) return  Complex_Matrix;
  
     function Modulus (X : Complex_Matrix) return Real_Matrix;
     function "abs" (Right : Complex_Matrix) return Real_Matrix renames Modulus;
--- 135,141 ----
     function Compose_From_Cartesian (Re : Real_Matrix) return Complex_Matrix;
  
     function Compose_From_Cartesian
!      (Re, Im : Real_Matrix) return Complex_Matrix;
  
     function Modulus (X : Complex_Matrix) return Real_Matrix;
     function "abs" (Right : Complex_Matrix) return Real_Matrix renames Modulus;
*************** package Ada.Numerics.Generic_Complex_Arr
*** 229,235 ****
  
     function "*"
       (Left  : Complex;
!       Right : Complex_Matrix) return  Complex_Matrix;
  
     function "*"
       (Left  : Complex_Matrix;
--- 229,235 ----
  
     function "*"
       (Left  : Complex;
!       Right : Complex_Matrix) return Complex_Matrix;
  
     function "*"
       (Left  : Complex_Matrix;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngcoty.adb gcc-13.1.0/gcc/ada/libgnat/a-ngcoty.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ngcoty.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngcoty.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngcoty.ads gcc-13.1.0/gcc/ada/libgnat/a-ngcoty.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ngcoty.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngcoty.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngelfu.adb gcc-13.1.0/gcc/ada/libgnat/a-ngelfu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ngelfu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngelfu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngelfu.ads gcc-13.1.0/gcc/ada/libgnat/a-ngelfu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ngelfu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngelfu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2023, 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 --
*************** package Ada.Numerics.Generic_Elementary_
*** 40,45 ****
--- 40,46 ----
    SPARK_Mode => On
  is
     pragma Pure;
+    pragma Annotate (GNATprove, Always_Return, Generic_Elementary_Functions);
  
     --  Preconditions in this unit are meant for analysis only, not for run-time
     --  checking, so that the expected exceptions are raised when calling
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngrear.adb gcc-13.1.0/gcc/ada/libgnat/a-ngrear.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ngrear.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngrear.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ngrear.ads gcc-13.1.0/gcc/ada/libgnat/a-ngrear.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ngrear.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ngrear.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nlelfu.ads gcc-13.1.0/gcc/ada/libgnat/a-nlelfu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nlelfu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nlelfu.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Numerics.Long_Elementary_Fun
*** 19,21 ****
--- 19,22 ----
    new Ada.Numerics.Generic_Elementary_Functions (Long_Float);
  
  pragma Pure (Long_Elementary_Functions);
+ pragma Annotate (GNATprove, Always_Return, Long_Elementary_Functions);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nllefu.ads gcc-13.1.0/gcc/ada/libgnat/a-nllefu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nllefu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nllefu.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Numerics.Long_Long_Elementar
*** 19,21 ****
--- 19,22 ----
    new Ada.Numerics.Generic_Elementary_Functions (Long_Long_Float);
  
  pragma Pure (Long_Long_Elementary_Functions);
+ pragma Annotate (GNATprove, Always_Return, Long_Long_Elementary_Functions);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nselfu.ads gcc-13.1.0/gcc/ada/libgnat/a-nselfu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nselfu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nselfu.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Numerics.Short_Elementary_Fu
*** 19,21 ****
--- 19,22 ----
    new Ada.Numerics.Generic_Elementary_Functions (Short_Float);
  
  pragma Pure (Short_Elementary_Functions);
+ pragma Annotate (GNATprove, Always_Return, Short_Elementary_Functions);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuauco.ads gcc-13.1.0/gcc/ada/libgnat/a-nuauco.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuauco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuauco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuauco__x86.ads gcc-13.1.0/gcc/ada/libgnat/a-nuauco__x86.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuauco__x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuauco__x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuaufl.ads gcc-13.1.0/gcc/ada/libgnat/a-nuaufl.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuaufl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuaufl.ads	Wed Apr 26 07:09:39 2023
***************
*** 5,13 ****
  --               A D A . N U M E R I C S . A U X _ F L O A T                --
  --                                                                          --
  --                                 S p e c                                  --
! --                      (C Math Library Version, Float)                     --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,13 ----
  --               A D A . N U M E R I C S . A U X _ F L O A T                --
  --                                                                          --
  --                                 S p e c                                  --
! --                        (Intrinsic Version, Float)                        --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the generic
! --  elementary functions. The C library version interfaces with the routines
! --  in the C mathematical library, and is thus quite portable.
  
  with Ada.Numerics.Aux_Linker_Options;
  pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
--- 30,41 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides the basic computational interface for the
! --  generic elementary functions. With the intrinsic version, the
! --  compiler can use its knowledge of the functions to select the most
! --  suitable implementation. It is thus quite portable. These
! --  interfaces are suitable for cases in which Float and C's float
! --  share the same representation.
  
  with Ada.Numerics.Aux_Linker_Options;
  pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
*************** package Ada.Numerics.Aux_Float is
*** 42,48 ****
  
     subtype T is Float;
  
!    --  We import these functions directly from C. Note that we label them
     --  all as pure functions, because indeed all of them are in fact pure.
  
     function Sin (X : T) return T with
--- 45,51 ----
  
     subtype T is Float;
  
!    --  We import these functions as intrinsics. Note that we label them
     --  all as pure functions, because indeed all of them are in fact pure.
  
     function Sin (X : T) return T with
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuaufl__simd.ads gcc-13.1.0/gcc/ada/libgnat/a-nuaufl__simd.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuaufl__simd.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/a-nuaufl__simd.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,95 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --               A D A . N U M E R I C S . A U X _ F L O A T                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                      (Intrinsic/SIMD Version, Float)                     --
+ --                                                                          --
+ --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package provides the basic computational interface for the
+ --  generic elementary functions. With the intrinsic/SIMD version, the
+ --  compiler can use its knowledge of the functions to select the most
+ --  suitable implementation, including a vector implementation. These
+ --  interfaces are suitable for cases in which Float and C's float
+ --  share the same representation.
+ 
+ with Ada.Numerics.Aux_Linker_Options;
+ pragma Warnings (Off, Ada.Numerics.Aux_Linker_Options);
+ 
+ package Ada.Numerics.Aux_Float is
+    pragma Pure;
+ 
+    subtype T is Float;
+ 
+    --  We import these functions as intrinsics. Note that we label them
+    --  all as pure functions, because indeed all of them are in fact pure.
+ 
+    function Sin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinf";
+    pragma Machine_Attribute (Sin, "simd", "notinbranch");
+ 
+    function Cos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "cosf";
+    pragma Machine_Attribute (Cos, "simd", "notinbranch");
+ 
+    function Tan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanf";
+ 
+    function Exp (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "expf";
+    pragma Machine_Attribute (Exp, "simd", "notinbranch");
+ 
+    function Sqrt (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sqrtf";
+ 
+    function Log (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "logf";
+    pragma Machine_Attribute (Log, "simd", "notinbranch");
+ 
+    function Acos (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "acosf";
+ 
+    function Asin (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "asinf";
+ 
+    function Atan (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "atanf";
+ 
+    function Sinh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "sinhf";
+ 
+    function Cosh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "coshf";
+ 
+    function Tanh (X : T) return T with
+      Import, Convention => Intrinsic, External_Name => "tanhf";
+ 
+    function Pow (X, Y : T) return T with
+      Import, Convention => Intrinsic, External_Name => "powf";
+    pragma Machine_Attribute (Pow, "simd", "notinbranch");
+ 
+ end Ada.Numerics.Aux_Float;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads gcc-13.1.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuaufl__wraplf.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                       (Double-based Version, Float)                      --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                       (Double-based Version, Float)                      --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nudira.adb gcc-13.1.0/gcc/ada/libgnat/a-nudira.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-nudira.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nudira.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nudira.ads gcc-13.1.0/gcc/ada/libgnat/a-nudira.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nudira.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nudira.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuelfu.ads gcc-13.1.0/gcc/ada/libgnat/a-nuelfu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuelfu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuelfu.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Numerics.Elementary_Function
*** 19,21 ****
--- 19,22 ----
    new Ada.Numerics.Generic_Elementary_Functions (Float);
  
  pragma Pure (Elementary_Functions);
+ pragma Annotate (GNATprove, Always_Return, Elementary_Functions);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuflra.adb gcc-13.1.0/gcc/ada/libgnat/a-nuflra.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-nuflra.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuflra.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-nuflra.ads gcc-13.1.0/gcc/ada/libgnat/a-nuflra.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-nuflra.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-nuflra.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-numaux.ads gcc-13.1.0/gcc/ada/libgnat/a-numaux.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-numaux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-numaux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-rbtgbk.adb gcc-13.1.0/gcc/ada/libgnat/a-rbtgbk.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-rbtgbk.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-rbtgbk.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-rbtgbk.ads gcc-13.1.0/gcc/ada/libgnat/a-rbtgbk.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-rbtgbk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-rbtgbk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-rbtgbo.adb gcc-13.1.0/gcc/ada/libgnat/a-rbtgbo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-rbtgbo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-rbtgbo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Containers.Red_Black_Tr
*** 1038,1045 ****
     function Vet (Tree : Tree_Type'Class; Index : Count_Type) return Boolean is
        Nodes : Nodes_Type renames Tree.Nodes;
        Node  : Node_Type renames Nodes (Index);
- 
     begin
        if Parent (Node) = Index
          or else Left (Node) = Index
          or else Right (Node) = Index
--- 1038,1048 ----
     function Vet (Tree : Tree_Type'Class; Index : Count_Type) return Boolean is
        Nodes : Nodes_Type renames Tree.Nodes;
        Node  : Node_Type renames Nodes (Index);
     begin
+       if not Container_Checks'Enabled then
+          return True;
+       end if;
+ 
        if Parent (Node) = Index
          or else Left (Node) = Index
          or else Right (Node) = Index
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-rbtgbo.ads gcc-13.1.0/gcc/ada/libgnat/a-rbtgbo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-rbtgbo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-rbtgbo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Ada.Containers.Red_Black_Trees.G
*** 70,76 ****
     function Max (Tree : Tree_Type'Class; Node : Count_Type) return Count_Type;
     --  Returns the largest-valued node of the subtree rooted at Node
  
!    function Vet (Tree : Tree_Type'Class; Index : Count_Type) return Boolean;
     --  Inspects Node to determine (to the extent possible) whether
     --  the node is valid; used to detect if the node is dangling.
  
--- 70,77 ----
     function Max (Tree : Tree_Type'Class; Node : Count_Type) return Count_Type;
     --  Returns the largest-valued node of the subtree rooted at Node
  
!    function Vet (Tree : Tree_Type'Class; Index : Count_Type) return Boolean
!      with Inline;
     --  Inspects Node to determine (to the extent possible) whether
     --  the node is valid; used to detect if the node is dangling.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-rbtgso.adb gcc-13.1.0/gcc/ada/libgnat/a-rbtgso.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-rbtgso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-rbtgso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-rbtgso.ads gcc-13.1.0/gcc/ada/libgnat/a-rbtgso.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-rbtgso.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-rbtgso.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sbecin.adb gcc-13.1.0/gcc/ada/libgnat/a-sbecin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-sbecin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sbecin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sbecin.ads gcc-13.1.0/gcc/ada/libgnat/a-sbecin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sbecin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sbecin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sbhcin.adb gcc-13.1.0/gcc/ada/libgnat/a-sbhcin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-sbhcin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sbhcin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sbhcin.ads gcc-13.1.0/gcc/ada/libgnat/a-sbhcin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sbhcin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sbhcin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sblcin.adb gcc-13.1.0/gcc/ada/libgnat/a-sblcin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-sblcin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sblcin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sblcin.ads gcc-13.1.0/gcc/ada/libgnat/a-sblcin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sblcin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sblcin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-secain.adb gcc-13.1.0/gcc/ada/libgnat/a-secain.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-secain.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-secain.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-secain.ads gcc-13.1.0/gcc/ada/libgnat/a-secain.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-secain.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-secain.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sequio.adb gcc-13.1.0/gcc/ada/libgnat/a-sequio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-sequio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sequio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sequio.ads gcc-13.1.0/gcc/ada/libgnat/a-sequio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sequio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sequio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sfecin.ads gcc-13.1.0/gcc/ada/libgnat/a-sfecin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sfecin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sfecin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sfhcin.ads gcc-13.1.0/gcc/ada/libgnat/a-sfhcin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sfhcin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sfhcin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sflcin.ads gcc-13.1.0/gcc/ada/libgnat/a-sflcin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sflcin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sflcin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-shcain.adb gcc-13.1.0/gcc/ada/libgnat/a-shcain.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-shcain.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-shcain.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-shcain.ads gcc-13.1.0/gcc/ada/libgnat/a-shcain.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-shcain.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-shcain.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-siocst.adb gcc-13.1.0/gcc/ada/libgnat/a-siocst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-siocst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-siocst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-siocst.ads gcc-13.1.0/gcc/ada/libgnat/a-siocst.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-siocst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-siocst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-slcain.adb gcc-13.1.0/gcc/ada/libgnat/a-slcain.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-slcain.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-slcain.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-slcain.ads gcc-13.1.0/gcc/ada/libgnat/a-slcain.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-slcain.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-slcain.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ssicst.adb gcc-13.1.0/gcc/ada/libgnat/a-ssicst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ssicst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ssicst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ssicst.ads gcc-13.1.0/gcc/ada/libgnat/a-ssicst.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ssicst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ssicst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stboha.adb gcc-13.1.0/gcc/ada/libgnat/a-stboha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stboha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stboha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbubo.adb gcc-13.1.0/gcc/ada/libgnat/a-stbubo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stbubo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbubo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,34 ****
--- 29,35 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Characters.Handling;
  with Ada.Strings.UTF_Encoding.Conversions;
  with Ada.Strings.UTF_Encoding.Strings;
  with Ada.Strings.UTF_Encoding.Wide_Strings;
*************** package body Ada.Strings.Text_Buffers.Bo
*** 91,99 ****
              --  forget to add corresponding assignment statement below.
              Dummy : array (1 .. 0) of Buffer_Type (0) :=
                [others =>
!                  [Max_Characters => 0, Chars => <>, Indentation => <>,
!                   Indent_Pending => <>, UTF_8_Length => <>, UTF_8_Column => <>,
!                   All_7_Bits     => <>, All_8_Bits => <>, Truncated => <>]];
           begin
              Buffer.Indentation    := Defaulted.Indentation;
              Buffer.Indent_Pending := Defaulted.Indent_Pending;
--- 92,107 ----
              --  forget to add corresponding assignment statement below.
              Dummy : array (1 .. 0) of Buffer_Type (0) :=
                [others =>
!                  (Max_Characters            => 0,
!                   Chars                     => <>,
!                   Indentation               => <>,
!                   Indent_Pending            => <>,
!                   UTF_8_Length              => <>,
!                   UTF_8_Column              => <>,
!                   Trim_Leading_White_Spaces => <>,
!                   All_7_Bits                => <>,
!                   All_8_Bits                => <>,
!                   Truncated                 => <>)];
           begin
              Buffer.Indentation    := Defaulted.Indentation;
              Buffer.Indent_Pending := Defaulted.Indent_Pending;
*************** package body Ada.Strings.Text_Buffers.Bo
*** 131,137 ****
                 return;
              end if;
  
!             Buffer.All_7_Bits := @ and then Character'Pos (Char) < 128;
  
              Buffer.UTF_8_Length                                    := @ + 1;
              Buffer.UTF_8_Column                                    := @ + 1;
--- 139,148 ----
                 return;
              end if;
  
!             Buffer.All_7_Bits :=
!               @ and then Character'Pos (Char) < 128;
!             Buffer.Trim_Leading_White_Spaces :=
!               @ and then Characters.Handling.Is_Space (Char);
  
              Buffer.UTF_8_Length                                    := @ + 1;
              Buffer.UTF_8_Column                                    := @ + 1;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbubo.ads gcc-13.1.0/gcc/ada/libgnat/a-stbubo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stbubo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbubo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbufi.adb gcc-13.1.0/gcc/ada/libgnat/a-stbufi.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stbufi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbufi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbufi.ads gcc-13.1.0/gcc/ada/libgnat/a-stbufi.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stbufi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbufi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbufo.adb gcc-13.1.0/gcc/ada/libgnat/a-stbufo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stbufo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbufo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbufo.ads gcc-13.1.0/gcc/ada/libgnat/a-stbufo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stbufo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbufo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbuun.adb gcc-13.1.0/gcc/ada/libgnat/a-stbuun.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stbuun.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbuun.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,34 ****
--- 29,35 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Characters.Handling;
  with Ada.Unchecked_Deallocation;
  with Ada.Strings.UTF_Encoding.Conversions;
  with Ada.Strings.UTF_Encoding.Strings;
*************** package body Ada.Strings.Text_Buffers.Un
*** 104,112 ****
              --  forget to add corresponding assignment statement below.
              Dummy : array (1 .. 0) of Buffer_Type :=
                [others =>
!                  [Indentation  => <>, Indent_Pending => <>, UTF_8_Length => <>,
!                   UTF_8_Column => <>, All_7_Bits => <>, All_8_Bits => <>,
!                   List         => <>, Last_Used => <>]];
           begin
              Buffer.Indentation    := Defaulted.Indentation;
              Buffer.Indent_Pending := Defaulted.Indent_Pending;
--- 105,119 ----
              --  forget to add corresponding assignment statement below.
              Dummy : array (1 .. 0) of Buffer_Type :=
                [others =>
!                  (Indentation               => <>,
!                   Indent_Pending            => <>,
!                   UTF_8_Length              => <>,
!                   UTF_8_Column              => <>,
!                   All_7_Bits                => <>,
!                   All_8_Bits                => <>,
!                   Trim_Leading_White_Spaces => <>,
!                   List                      => <>,
!                   Last_Used                 => <>)];
           begin
              Buffer.Indentation    := Defaulted.Indentation;
              Buffer.Indent_Pending := Defaulted.Indent_Pending;
*************** package body Ada.Strings.Text_Buffers.Un
*** 140,167 ****
        procedure Buffer_Type_Implementation (Buffer : in out Buffer_Type) is
        begin
           for Char of Item loop
-             Buffer.All_7_Bits := @ and then Character'Pos (Char) < 128;
  
!             if Buffer.Last_Used = Buffer.List.Current_Chunk.Length then
!                --  Current chunk is full; allocate a new one with doubled size
  
!                declare
!                   Cc     : Chunk renames Buffer.List.Current_Chunk.all;
!                   Max    : constant Positive := Integer'Last / 2;
!                   Length : constant Natural  :=
!                     Integer'Min (Max, 2 * Cc.Length);
!                begin
!                   pragma Assert (Cc.Next = null);
!                   Cc.Next                   := new Chunk (Length => Length);
!                   Buffer.List.Current_Chunk := Cc.Next;
!                   Buffer.Last_Used          := 0;
!                end;
!             end if;
  
!             Buffer.UTF_8_Length                                := @ + 1;
!             Buffer.UTF_8_Column                                := @ + 1;
!             Buffer.Last_Used                                   := @ + 1;
!             Buffer.List.Current_Chunk.Chars (Buffer.Last_Used) := Char;
           end loop;
        end Buffer_Type_Implementation;
     begin
--- 147,187 ----
        procedure Buffer_Type_Implementation (Buffer : in out Buffer_Type) is
        begin
           for Char of Item loop
  
!             --  The Trim_Leading_Space flag, which can be set prior to calling
!             --  any of the Put operations, which will cause white space
!             --  characters to be discarded by any Put operation until a
!             --  non-white-space character is encountered, at which point
!             --  the flag will be reset.
  
!             if not Buffer.Trim_Leading_White_Spaces
!               or else not Characters.Handling.Is_Space (Char)
!             then
!                Buffer.All_7_Bits := @ and then Character'Pos (Char) < 128;
!                Buffer.Trim_Leading_White_Spaces := False;
  
!                if Buffer.Last_Used = Buffer.List.Current_Chunk.Length then
!                   --  Current chunk is full; allocate a new one with doubled
!                   --  size
! 
!                   declare
!                      Cc     : Chunk renames Buffer.List.Current_Chunk.all;
!                      Max    : constant Positive := Integer'Last / 2;
!                      Length : constant Natural  :=
!                                 Integer'Min (Max, 2 * Cc.Length);
!                   begin
!                      pragma Assert (Cc.Next = null);
!                      Cc.Next                   := new Chunk (Length => Length);
!                      Buffer.List.Current_Chunk := Cc.Next;
!                      Buffer.Last_Used          := 0;
!                   end;
!                end if;
! 
!                Buffer.UTF_8_Length                                := @ + 1;
!                Buffer.UTF_8_Column                                := @ + 1;
!                Buffer.Last_Used                                   := @ + 1;
!                Buffer.List.Current_Chunk.Chars (Buffer.Last_Used) := Char;
!             end if;
           end loop;
        end Buffer_Type_Implementation;
     begin
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbuut.adb gcc-13.1.0/gcc/ada/libgnat/a-stbuut.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stbuut.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbuut.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stbuut.ads gcc-13.1.0/gcc/ada/libgnat/a-stbuut.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stbuut.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stbuut.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stmaco.ads gcc-13.1.0/gcc/ada/libgnat/a-stmaco.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stmaco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stmaco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-storio.adb gcc-13.1.0/gcc/ada/libgnat/a-storio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-storio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-storio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strbou.adb gcc-13.1.0/gcc/ada/libgnat/a-strbou.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strbou.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strbou.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strbou.ads gcc-13.1.0/gcc/ada/libgnat/a-strbou.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strbou.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strbou.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** with Ada.Strings.Search;
*** 49,54 ****
--- 49,55 ----
  
  package Ada.Strings.Bounded with SPARK_Mode is
     pragma Preelaborate;
+    pragma Annotate (GNATprove, Always_Return, Bounded);
  
     generic
        Max : Positive;
*************** package Ada.Strings.Bounded with SPARK_M
*** 68,73 ****
--- 69,75 ----
                                 Post           => Ignore,
                                 Contract_Cases => Ignore,
                                 Ghost          => Ignore);
+       pragma Annotate (GNATprove, Always_Return, Generic_Bounded_Length);
  
        Max_Length : constant Positive := Max;
  
*************** package Ada.Strings.Bounded with SPARK_M
*** 1898,1904 ****
                 --  some characters of Source are remaining at the left.
  
                 and then
!                  (if New_Item'Length > Max_Length then
  
                      --  New_Item covers all Max_Length characters
  
--- 1900,1906 ----
                 --  some characters of Source are remaining at the left.
  
                 and then
!                  (if New_Item'Length >= Max_Length then
  
                      --  New_Item covers all Max_Length characters
  
*************** package Ada.Strings.Bounded with SPARK_M
*** 1984,1990 ****
                 --  some characters of Source are remaining at the left.
  
                 and then
!                  (if New_Item'Length > Max_Length then
  
                      --  New_Item covers all Max_Length characters
  
--- 1986,1992 ----
                 --  some characters of Source are remaining at the left.
  
                 and then
!                  (if New_Item'Length >= Max_Length then
  
                      --  New_Item covers all Max_Length characters
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stream.adb gcc-13.1.0/gcc/ada/libgnat/a-stream.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stream.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stream.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2013-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2013-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stream.ads gcc-13.1.0/gcc/ada/libgnat/a-stream.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stream.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stream.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strfix.adb gcc-13.1.0/gcc/ada/libgnat/a-strfix.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strfix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strfix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Fixed with SPAR
*** 628,633 ****
--- 628,638 ----
                   (Result (1 .. Integer'Max (0, Low - Source'First))
                    = Source (Source'First .. Low - 1));
                 Result (Front_Len + 1 .. Front_Len + By'Length) := By;
+                pragma Assert
+                  (Result
+                     (Integer'Max (0, Low - Source'First) + 1
+                      .. Integer'Max (0, Low - Source'First) + By'Length)
+                   = By);
  
                 if High < Source'Last then
                    Result (Front_Len + By'Length + 1 .. Result'Last) :=
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strfix.ads gcc-13.1.0/gcc/ada/libgnat/a-strfix.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strfix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strfix.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 63,69 ****
  
       --  Incomplete contract
  
!      Global => null;
     --  The Move procedure copies characters from Source to Target. If Source
     --  has the same length as Target, then the effect is to assign Source to
     --  Target. If Source is shorter than Target then:
--- 63,70 ----
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  The Move procedure copies characters from Source to Target. If Source
     --  has the same length as Target, then the effect is to assign Source to
     --  Target. If Source is shorter than Target then:
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 168,174 ****
          others
          =>
            Index'Result = 0),
!      Global         => null;
     pragma Ada_05 (Index);
  
     function Index
--- 169,176 ----
          others
          =>
            Index'Result = 0),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     pragma Ada_05 (Index);
  
     function Index
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 231,237 ****
          others
          =>
            Index'Result = 0),
!      Global         => null;
     pragma Ada_05 (Index);
  
     --  Each Index function searches, starting from From, for a slice of
--- 233,240 ----
          others
          =>
            Index'Result = 0),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     pragma Ada_05 (Index);
  
     --  Each Index function searches, starting from From, for a slice of
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 300,306 ****
          others
          =>
            Index'Result = 0),
!      Global         => null;
  
     function Index
       (Source  : String;
--- 303,310 ----
          others
          =>
            Index'Result = 0),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
  
     function Index
       (Source  : String;
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 355,361 ****
          others
          =>
            Index'Result = 0),
!      Global         => null;
  
     --  If Going = Forward, returns:
     --
--- 359,366 ----
          others
          =>
            Index'Result = 0),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
  
     --  If Going = Forward, returns:
     --
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 408,414 ****
                         and then (J < Index'Result) = (Going = Forward)
                    then (Test = Inside)
                         /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
!      Global         => null;
  
     function Index
       (Source  : String;
--- 413,420 ----
                         and then (J < Index'Result) = (Going = Forward)
                    then (Test = Inside)
                         /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
  
     function Index
       (Source  : String;
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 464,470 ****
                                  or else (J > From) = (Going = Forward))
                    then (Test = Inside)
                         /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
!      Global         => null;
     pragma Ada_05 (Index);
     --  Index searches for the first or last occurrence of any of a set of
     --  characters (when Test=Inside), or any of the complement of a set of
--- 470,477 ----
                                  or else (J > From) = (Going = Forward))
                    then (Test = Inside)
                         /= Ada.Strings.Maps.Is_In (Source (J), Set)))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     pragma Ada_05 (Index);
     --  Index searches for the first or last occurrence of any of a set of
     --  characters (when Test=Inside), or any of the complement of a set of
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 524,530 ****
                         and then (J = From or else (J > From)
                                  = (Going = Forward))
                    then Source (J) = ' '))),
!      Global         => null;
     pragma Ada_05 (Index_Non_Blank);
     --  Returns Index (Source, Maps.To_Set(Space), From, Outside, Going)
  
--- 531,538 ----
                         and then (J = From or else (J > From)
                                  = (Going = Forward))
                    then Source (J) = ' '))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     pragma Ada_05 (Index_Non_Blank);
     --  Returns Index (Source, Maps.To_Set(Space), From, Outside, Going)
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 562,568 ****
                         and then (J < Index_Non_Blank'Result)
                                = (Going = Forward)
                    then Source (J) = ' '))),
!      Global         => null;
     --  Returns Index (Source, Maps.To_Set(Space), Outside, Going)
  
     function Count
--- 570,577 ----
                         and then (J < Index_Non_Blank'Result)
                                = (Going = Forward)
                    then Source (J) = ' '))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     --  Returns Index (Source, Maps.To_Set(Space), Outside, Going)
  
     function Count
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 570,585 ****
        Pattern : String;
        Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
     with
!      Pre    => Pattern'Length /= 0,
!      Global => null;
  
     function Count
       (Source  : String;
        Pattern : String;
        Mapping : Maps.Character_Mapping_Function) return Natural
     with
!      Pre    => Pattern'Length /= 0 and then Mapping /= null,
!      Global => null;
  
     --  Returns the maximum number of nonoverlapping slices of Source that match
     --  Pattern with respect to Mapping. If Pattern is the null string then
--- 579,596 ----
        Pattern : String;
        Mapping : Maps.Character_Mapping := Maps.Identity) return Natural
     with
!      Pre      => Pattern'Length /= 0,
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     function Count
       (Source  : String;
        Pattern : String;
        Mapping : Maps.Character_Mapping_Function) return Natural
     with
!      Pre      => Pattern'Length /= 0 and then Mapping /= null,
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     --  Returns the maximum number of nonoverlapping slices of Source that match
     --  Pattern with respect to Mapping. If Pattern is the null string then
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 589,595 ****
       (Source : String;
        Set    : Maps.Character_Set) return Natural
     with
!      Global => null;
     --  Returns the number of occurrences in Source of characters that are in
     --  Set.
  
--- 600,607 ----
       (Source : String;
        Set    : Maps.Character_Set) return Natural
     with
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     --  Returns the number of occurrences in Source of characters that are in
     --  Set.
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 647,653 ****
                 then
                   (Test = Inside)
                   /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
!      Global         => null;
     pragma Ada_2012 (Find_Token);
     --  If Source is not the null string and From is not in Source'Range, then
     --  Index_Error is raised. Otherwise, First is set to the index of the first
--- 659,666 ----
                 then
                   (Test = Inside)
                   /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     pragma Ada_2012 (Find_Token);
     --  If Source is not the null string and From is not in Source'Range, then
     --  Index_Error is raised. Otherwise, First is set to the index of the first
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 709,715 ****
                 then
                   (Test = Inside)
                   /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
!      Global => null;
     --  Equivalent to Find_Token (Source, Set, Source'First, Test, First, Last)
  
     ------------------------------------
--- 722,729 ----
                 then
                   (Test = Inside)
                   /= Ada.Strings.Maps.Is_In (Source (Last + 1), Set))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     --  Equivalent to Find_Token (Source, Set, Source'First, Test, First, Last)
  
     ------------------------------------
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 738,744 ****
             (for all J in Source'Range =>
                Translate'Result (J - Source'First + 1)
                = Mapping (Source (J))),
!      Global => null;
  
     function Translate
       (Source  : String;
--- 752,759 ----
             (for all J in Source'Range =>
                Translate'Result (J - Source'First + 1)
                = Mapping (Source (J))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
  
     function Translate
       (Source  : String;
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 761,767 ****
             (for all J in Source'Range =>
                Translate'Result (J - Source'First + 1)
                = Ada.Strings.Maps.Value (Mapping, Source (J))),
!      Global => null;
  
     --  Returns the string S whose length is Source'Length and such that S (I)
     --  is the character to which Mapping maps the corresponding element of
--- 776,783 ----
             (for all J in Source'Range =>
                Translate'Result (J - Source'First + 1)
                = Ada.Strings.Maps.Value (Mapping, Source (J))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
  
     --  Returns the string S whose length is Source'Length and such that S (I)
     --  is the character to which Mapping maps the corresponding element of
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 771,797 ****
       (Source  : in out String;
        Mapping : Maps.Character_Mapping_Function)
     with
!      Pre    => Mapping /= null,
!      Post   =>
  
         --  Each character in Source after the call is the translation of the
         --  character at the same position before the call, through Mapping.
  
         (for all J in Source'Range => Source (J) = Mapping (Source'Old (J))),
!      Global => null;
  
     procedure Translate
       (Source  : in out String;
        Mapping : Maps.Character_Mapping)
     with
!      Post   =>
  
         --  Each character in Source after the call is the translation of the
         --  character at the same position before the call, through Mapping.
  
         (for all J in Source'Range =>
            Source (J) = Ada.Strings.Maps.Value (Mapping, Source'Old (J))),
!      Global => null;
  
     --  Equivalent to Source := Translate(Source, Mapping)
  
--- 787,815 ----
       (Source  : in out String;
        Mapping : Maps.Character_Mapping_Function)
     with
!      Pre      => Mapping /= null,
!      Post     =>
  
         --  Each character in Source after the call is the translation of the
         --  character at the same position before the call, through Mapping.
  
         (for all J in Source'Range => Source (J) = Mapping (Source'Old (J))),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     procedure Translate
       (Source  : in out String;
        Mapping : Maps.Character_Mapping)
     with
!      Post     =>
  
         --  Each character in Source after the call is the translation of the
         --  character at the same position before the call, through Mapping.
  
         (for all J in Source'Range =>
            Source (J) = Ada.Strings.Maps.Value (Mapping, Source'Old (J))),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     --  Equivalent to Source := Translate(Source, Mapping)
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 884,890 ****
                    (Low - Source'First + By'Length + 1
                     .. Replace_Slice'Result'Last)
                  = Source (Low .. Source'Last))),
!      Global         => null;
     --  If Low > Source'Last + 1, or High < Source'First - 1, then Index_Error
     --  is propagated. Otherwise:
     --
--- 902,909 ----
                    (Low - Source'First + By'Length + 1
                     .. Replace_Slice'Result'Last)
                  = Source (Low .. Source'Last))),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     --  If Low > Source'Last + 1, or High < Source'First - 1, then Index_Error
     --  is propagated. Otherwise:
     --
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 904,910 ****
        Justify : Alignment  := Left;
        Pad     : Character  := Space)
     with
!      Pre    =>
         Low - 1 <= Source'Last
           and then High >= Source'First - 1
           and then (if High >= Low
--- 923,929 ----
        Justify : Alignment  := Left;
        Pad     : Character  := Space)
     with
!      Pre      =>
         Low - 1 <= Source'Last
           and then High >= Source'First - 1
           and then (if High >= Low
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 916,922 ****
  
     --  Incomplete contract
  
!      Global => null;
     --  Equivalent to:
     --
     --    Move (Replace_Slice (Source, Low, High, By),
--- 935,942 ----
  
     --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to:
     --
     --    Move (Replace_Slice (Source, Low, High, By),
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 962,968 ****
                  (Before - Source'First + New_Item'Length + 1
                   .. Insert'Result'Last)
                = Source (Before .. Source'Last)),
!      Global => null;
     --  Propagates Index_Error if Before is not in
     --  Source'First .. Source'Last + 1; otherwise, returns
     --  Source (Source'First .. Before - 1)
--- 982,989 ----
                  (Before - Source'First + New_Item'Length + 1
                   .. Insert'Result'Last)
                = Source (Before .. Source'Last)),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     --  Propagates Index_Error if Before is not in
     --  Source'First .. Source'Last + 1; otherwise, returns
     --  Source (Source'First .. Before - 1)
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 974,986 ****
        New_Item : String;
        Drop     : Truncation := Error)
     with
!      Pre    =>
         Before - 1 in Source'First - 1 .. Source'Last
           and then Source'Length <= Natural'Last - New_Item'Length,
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to Move (Insert (Source, Before, New_Item), Source, Drop)
  
     function Overwrite
--- 995,1008 ----
        New_Item : String;
        Drop     : Truncation := Error)
     with
!      Pre      =>
         Before - 1 in Source'First - 1 .. Source'Last
           and then Source'Length <= Natural'Last - New_Item'Length,
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to Move (Insert (Source, Before, New_Item), Source, Drop)
  
     function Overwrite
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 988,1000 ****
        Position : Positive;
        New_Item : String) return String
     with
!      Pre    =>
         Position - 1 in Source'First - 1 .. Source'Last
           and then
             (if Position - Source'First >= Source'Length - New_Item'Length
              then Position - Source'First <= Natural'Last - New_Item'Length),
  
!      Post   =>
  
         --  Lower bound of the returned string is 1
  
--- 1010,1022 ----
        Position : Positive;
        New_Item : String) return String
     with
!      Pre      =>
         Position - 1 in Source'First - 1 .. Source'Last
           and then
             (if Position - Source'First >= Source'Length - New_Item'Length
              then Position - Source'First <= Natural'Last - New_Item'Length),
  
!      Post     =>
  
         --  Lower bound of the returned string is 1
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1029,1035 ****
                  (Position - Source'First + New_Item'Length + 1
                   .. Overwrite'Result'Last)
                = Source (Position + New_Item'Length .. Source'Last)),
!      Global => null;
     --  Propagates Index_Error if Position is not in
     --  Source'First .. Source'Last + 1; otherwise, returns the string obtained
     --  from Source by consecutively replacing characters starting at Position
--- 1051,1058 ----
                  (Position - Source'First + New_Item'Length + 1
                   .. Overwrite'Result'Last)
                = Source (Position + New_Item'Length .. Source'Last)),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     --  Propagates Index_Error if Position is not in
     --  Source'First .. Source'Last + 1; otherwise, returns the string obtained
     --  from Source by consecutively replacing characters starting at Position
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1043,1049 ****
        New_Item : String;
        Drop     : Truncation := Right)
     with
!      Pre    =>
         Position - 1 in Source'First - 1 .. Source'Last
           and then
             (if Position - Source'First >= Source'Length - New_Item'Length
--- 1066,1072 ----
        New_Item : String;
        Drop     : Truncation := Right)
     with
!      Pre      =>
         Position - 1 in Source'First - 1 .. Source'Last
           and then
             (if Position - Source'First >= Source'Length - New_Item'Length
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1051,1057 ****
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to Move(Overwrite(Source, Position, New_Item), Source, Drop)
  
     function Delete
--- 1074,1081 ----
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to Move(Overwrite(Source, Position, New_Item), Source, Drop)
  
     function Delete
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1099,1105 ****
          others          =>
            Delete'Result'Length = Source'Length
              and then Delete'Result = Source),
!      Global         => null;
     --  If From <= Through, the returned string is
     --  Replace_Slice(Source, From, Through, ""); otherwise, it is Source with
     --  lower bound 1.
--- 1123,1130 ----
          others          =>
            Delete'Result'Length = Source'Length
              and then Delete'Result = Source),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     --  If From <= Through, the returned string is
     --  Replace_Slice(Source, From, Through, ""); otherwise, it is Source with
     --  lower bound 1.
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1111,1123 ****
        Justify : Alignment := Left;
        Pad     : Character := Space)
     with
!      Pre    => (if From <= Through
!                 then (From in Source'Range
!                         and then Through <= Source'Last)),
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to:
     --
     --     Move (Delete (Source, From, Through),
--- 1136,1149 ----
        Justify : Alignment := Left;
        Pad     : Character := Space)
     with
!      Pre      => (if From <= Through
!                   then (From in Source'Range
!                           and then Through <= Source'Last)),
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to:
     --
     --     Move (Delete (Source, From, Through),
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1131,1137 ****
       (Source : String;
        Side   : Trim_End) return String
     with
!      Post   =>
  
         --  Lower bound of the returned string is 1
  
--- 1157,1163 ----
       (Source : String;
        Side   : Trim_End) return String
     with
!      Post     =>
  
         --  Lower bound of the returned string is 1
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1156,1162 ****
                      else Index_Non_Blank (Source, Backward));
                 begin
                   Trim'Result = Source (Low .. High))),
!      Global => null;
     --  Returns the string obtained by removing from Source all leading Space
     --  characters (if Side = Left), all trailing Space characters (if
     --  Side = Right), or all leading and trailing Space characters (if
--- 1182,1189 ----
                      else Index_Non_Blank (Source, Backward));
                 begin
                   Trim'Result = Source (Low .. High))),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     --  Returns the string obtained by removing from Source all leading Space
     --  characters (if Side = Left), all trailing Space characters (if
     --  Side = Right), or all leading and trailing Space characters (if
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1171,1177 ****
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to:
     --
     --     Move (Trim (Source, Side), Source, Justify=>Justify, Pad=>Pad).
--- 1198,1205 ----
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to:
     --
     --     Move (Trim (Source, Side), Source, Justify=>Justify, Pad=>Pad).
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1208,1214 ****
                  Index (Source, Right, Outside, Backward);
              begin
                Trim'Result = Source (Low .. High))),
!      Global => null;
     --  Returns the string obtained by removing from Source all leading
     --  characters in Left and all trailing characters in Right.
  
--- 1236,1243 ----
                  Index (Source, Right, Outside, Backward);
              begin
                Trim'Result = Source (Low .. High))),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     --  Returns the string obtained by removing from Source all leading
     --  characters in Left and all trailing characters in Right.
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1222,1228 ****
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to:
     --
     --     Move (Trim (Source, Left, Right),
--- 1251,1258 ----
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to:
     --
     --     Move (Trim (Source, Left, Right),
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1259,1265 ****
              and then
                Head'Result (Source'Length + 1 .. Count)
                = [1 .. Count - Source'Length => Pad]),
!      Global         => null;
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the first Count characters of Source. Otherwise, its contents
     --  are Source concatenated with Count - Source'Length Pad characters.
--- 1289,1296 ----
              and then
                Head'Result (Source'Length + 1 .. Count)
                = [1 .. Count - Source'Length => Pad]),
!      Global         => null,
!      Annotate       => (GNATprove, Always_Return);
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the first Count characters of Source. Otherwise, its contents
     --  are Source concatenated with Count - Source'Length Pad characters.
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1273,1279 ****
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to:
     --
     --     Move (Head (Source, Count, Pad),
--- 1304,1311 ----
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to:
     --
     --     Move (Head (Source, Count, Pad),
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1322,1328 ****
                 and then
                   Tail'Result (Count - Source'Length + 1 .. Tail'Result'Last)
                   = Source)),
!      Global => null;
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the last Count characters of Source. Otherwise, its contents
     --  are Count-Source'Length Pad characters concatenated with Source.
--- 1354,1361 ----
                 and then
                   Tail'Result (Count - Source'Length + 1 .. Tail'Result'Last)
                   = Source)),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     --  Returns a string of length Count. If Count <= Source'Length, the string
     --  comprises the last Count characters of Source. Otherwise, its contents
     --  are Count-Source'Length Pad characters concatenated with Source.
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1336,1342 ****
  
       --  Incomplete contract
  
!      Global => null;
     --  Equivalent to:
     --
     --     Move (Tail (Source, Count, Pad),
--- 1369,1376 ----
  
       --  Incomplete contract
  
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
     --  Equivalent to:
     --
     --     Move (Tail (Source, Count, Pad),
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1350,1356 ****
       (Left  : Natural;
        Right : Character) return String
     with
!      Post   =>
  
         --  Lower bound of the returned string is 1
  
--- 1384,1390 ----
       (Left  : Natural;
        Right : Character) return String
     with
!      Post     =>
  
         --  Lower bound of the returned string is 1
  
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1363,1369 ****
           --  All characters of the returned string are Right
  
           and then (for all C of "*"'Result => C = Right),
!      Global => null;
  
     function "*"
       (Left  : Natural;
--- 1397,1404 ----
           --  All characters of the returned string are Right
  
           and then (for all C of "*"'Result => C = Right),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     function "*"
       (Left  : Natural;
*************** package Ada.Strings.Fixed with SPARK_Mod
*** 1386,1392 ****
           and then
             (for all K in "*"'Result'Range =>
                "*"'Result (K) = Right (Right'First + (K - 1) mod Right'Length)),
!      Global => null;
  
     --  These functions replicate a character or string a specified number of
     --  times. The first function returns a string whose length is Left and each
--- 1421,1428 ----
           and then
             (for all K in "*"'Result'Range =>
                "*"'Result (K) = Right (Right'First + (K - 1) mod Right'Length)),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     --  These functions replicate a character or string a specified number of
     --  times. The first function returns a string whose length is Left and each
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strhas.adb gcc-13.1.0/gcc/ada/libgnat/a-strhas.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strhas.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strhas.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strmap.adb gcc-13.1.0/gcc/ada/libgnat/a-strmap.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strmap.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strmap.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 290,295 ****
--- 290,296 ----
           loop
              pragma Loop_Invariant
                (Seq1 (Seq1'First .. J) = Seq2 (Seq2'First .. J));
+             pragma Loop_Variant (Increases => J);
  
              if J = Positive'Last then
                 return;
*************** is
*** 440,445 ****
--- 441,447 ----
                (Character'Pos (C) >= Character'Pos (C'Loop_Entry));
              pragma Loop_Invariant
                (for all Char in C'Loop_Entry .. C => not Set (Char));
+             pragma Loop_Variant (Increases => C);
              exit when C = Character'Last;
              C := Character'Succ (C);
           end loop;
*************** is
*** 457,462 ****
--- 459,465 ----
              pragma Loop_Invariant
                (for all Char in C'Loop_Entry .. C =>
                   (if Char /= C then Set (Char)));
+             pragma Loop_Variant (Increases => C);
              exit when not Set (C) or else C = Character'Last;
              C := Character'Succ (C);
           end loop;
*************** is
*** 491,496 ****
--- 494,500 ----
           pragma Loop_Invariant
             (for all Span of Max_Ranges (1 .. Range_Num) =>
                (for all Char in Span.Low .. Span.High => Set (Char)));
+          pragma Loop_Variant (Increases => Range_Num);
        end loop;
  
        return Max_Ranges (1 .. Range_Num);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strmap.ads gcc-13.1.0/gcc/ada/libgnat/a-strmap.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strmap.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strmap.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** is
*** 54,59 ****
--- 54,61 ----
     pragma Pure;
     --  In accordance with Ada 2005 AI-362
  
+    pragma Annotate (GNATprove, Always_Return, Maps);
+ 
     --------------------------------
     -- Character Set Declarations --
     --------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strsea.adb gcc-13.1.0/gcc/ada/libgnat/a-strsea.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strsea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strsea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Search with SPA
*** 113,118 ****
--- 113,119 ----
  
              pragma Loop_Invariant (Num <= Ind - (Source'First - 1));
              pragma Loop_Invariant (Ind >= Source'First);
+             pragma Loop_Variant (Increases => Ind);
           end loop;
  
        --  Mapped case
*************** package body Ada.Strings.Search with SPA
*** 142,147 ****
--- 143,149 ----
              null;
              pragma Loop_Invariant (Num <= Ind - (Source'First - 1));
              pragma Loop_Invariant (Ind >= Source'First);
+             pragma Loop_Variant (Increases => Ind);
           end loop;
        end if;
  
*************** package body Ada.Strings.Search with SPA
*** 200,205 ****
--- 202,208 ----
           null;
           pragma Loop_Invariant (Num <= Ind - (Source'First - 1));
           pragma Loop_Invariant (Ind >= Source'First);
+          pragma Loop_Variant (Increases => Ind);
        end loop;
  
        return Num;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strsea.ads gcc-13.1.0/gcc/ada/libgnat/a-strsea.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strsea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strsea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Strings.Maps; use type Ada.Stri
*** 52,57 ****
--- 52,58 ----
  
  package Ada.Strings.Search with SPARK_Mode is
     pragma Preelaborate;
+    pragma Annotate (GNATprove, Always_Return, Search);
  
     --  The ghost function Match tells whether the slice of Source starting at
     --  From and of length Pattern'Length matches with Pattern with respect to
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strsto.ads gcc-13.1.0/gcc/ada/libgnat/a-strsto.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strsto.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strsto.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strsup.adb gcc-13.1.0/gcc/ada/libgnat/a-strsup.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strsup.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strsup.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Superbounded wi
*** 303,308 ****
--- 303,319 ----
        return Left <= Super_To_String (Right);
     end Less_Or_Equal;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S      : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+       Source : Super_String) is
+    begin
+       String'Put_Image (S, Super_To_String (Source));
+    end Put_Image;
+ 
     ----------------------
     -- Set_Super_String --
     ----------------------
*************** package body Ada.Strings.Superbounded wi
*** 1150,1155 ****
--- 1161,1174 ----
           Result.Data (Position .. Position - 1 + New_Item'Length) :=
             Super_String_Data (New_Item);
           Result.Current_Length := Source.Current_Length;
+          pragma Assert
+            (String'(Super_Slice (Result, 1, Position - 1)) =
+               Super_Slice (Source, 1, Position - 1));
+          pragma Assert
+            (Super_Slice (Result,
+             Position, Position - 1 + New_Item'Length) =
+               New_Item);
+ 
           return Result;
  
        elsif Position - 1 <= Max_Length - New_Item'Length then
*************** package body Ada.Strings.Superbounded wi
*** 1157,1162 ****
--- 1176,1189 ----
           Result.Data (Position .. Position - 1 + New_Item'Length) :=
             Super_String_Data (New_Item);
           Result.Current_Length := Position - 1 + New_Item'Length;
+          pragma Assert
+            (String'(Super_Slice (Result, 1, Position - 1)) =
+               Super_Slice (Source, 1, Position - 1));
+          pragma Assert
+            (Super_Slice (Result,
+             Position, Position - 1 + New_Item'Length) =
+               New_Item);
+ 
           return Result;
  
        else
*************** package body Ada.Strings.Superbounded wi
*** 1189,1194 ****
--- 1216,1222 ----
           end case;
  
           Result.Current_Length := Max_Length;
+          pragma Assert (Super_Length (Result) = Source.Max_Length);
           return Result;
        end if;
     end Super_Overwrite;
*************** package body Ada.Strings.Superbounded wi
*** 1226,1232 ****
                   (New_Item (New_Item'First .. New_Item'Last - Droplen));
  
              when Strings.Left =>
!                if New_Item'Length > Max_Length then
                    Source.Data (1 .. Max_Length) := Super_String_Data
                      (New_Item
                        (New_Item'Last - Max_Length + 1 .. New_Item'Last));
--- 1254,1260 ----
                   (New_Item (New_Item'First .. New_Item'Last - Droplen));
  
              when Strings.Left =>
!                if New_Item'Length >= Max_Length then
                    Source.Data (1 .. Max_Length) := Super_String_Data
                      (New_Item
                        (New_Item'Last - Max_Length + 1 .. New_Item'Last));
*************** package body Ada.Strings.Superbounded wi
*** 1634,1643 ****
              raise Index_Error;
           end if;
  
!          if High >= Low then
!             Result.Data (1 .. High - Low + 1) := Source.Data (Low .. High);
!             Result.Current_Length := High - Low + 1;
!          end if;
        end return;
     end Super_Slice;
  
--- 1662,1670 ----
              raise Index_Error;
           end if;
  
!          Result.Current_Length := (if Low > High then 0 else High - Low + 1);
!          Result.Data (1 .. Result.Current_Length) :=
!            Source.Data (Low .. High);
        end return;
     end Super_Slice;
  
*************** package body Ada.Strings.Superbounded wi
*** 1654,1665 ****
           raise Index_Error;
        end if;
  
!       if High >= Low then
!          Target.Data (1 .. High - Low + 1) := Source.Data (Low .. High);
!          Target.Current_Length := High - Low + 1;
!       else
!          Target.Current_Length := 0;
!       end if;
     end Super_Slice;
  
     ----------------
--- 1681,1688 ----
           raise Index_Error;
        end if;
  
!       Target.Current_Length := (if Low > High then 0 else High - Low + 1);
!       Target.Data (1 .. Target.Current_Length) := Source.Data (Low .. High);
     end Super_Slice;
  
     ----------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strsup.ads gcc-13.1.0/gcc/ada/libgnat/a-strsup.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strsup.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strsup.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Assertion_Policy (Pre
*** 49,54 ****
--- 49,55 ----
  
  with Ada.Strings.Maps; use type Ada.Strings.Maps.Character_Mapping_Function;
  with Ada.Strings.Search;
+ with Ada.Strings.Text_Buffers;
  
  package Ada.Strings.Superbounded with SPARK_Mode is
     pragma Preelaborate;
*************** package Ada.Strings.Superbounded with SP
*** 69,75 ****
     with
       Predicate =>
         Current_Length <= Max_Length
!          and then Data (1 .. Current_Length)'Initialized;
  
     --  The subprograms defined for Super_String are similar to those
     --  defined for Bounded_String, except that they have different names, so
--- 70,77 ----
     with
       Predicate =>
         Current_Length <= Max_Length
!          and then Data (1 .. Current_Length)'Initialized,
!      Put_Image => Put_Image;
  
     --  The subprograms defined for Super_String are similar to those
     --  defined for Bounded_String, except that they have different names, so
*************** package Ada.Strings.Superbounded with SP
*** 2000,2006 ****
              --  Source are remaining at the left.
  
              and then
!               (if New_Item'Length > Source.Max_Length then
  
                   --  New_Item covers all Max_Length characters
  
--- 2002,2008 ----
              --  Source are remaining at the left.
  
              and then
!               (if New_Item'Length >= Source.Max_Length then
  
                   --  New_Item covers all Max_Length characters
  
*************** package Ada.Strings.Superbounded with SP
*** 2089,2095 ****
              --  Source are remaining at the left.
  
              and then
!               (if New_Item'Length > Source.Max_Length then
  
                   --  New_Item covers all Max_Length characters
  
--- 2091,2097 ----
              --  Source are remaining at the left.
  
              and then
!               (if New_Item'Length >= Source.Max_Length then
  
                   --  New_Item covers all Max_Length characters
  
*************** package Ada.Strings.Superbounded with SP
*** 2695,2700 ****
--- 2697,2706 ----
                         - (Item.Max_Length - K) mod Super_Length (Item)))),
       Global         => null;
  
+    procedure Put_Image
+      (S      : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+       Source : Super_String);
+ 
  private
        --  Pragma Inline declarations
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strunb.adb gcc-13.1.0/gcc/ada/libgnat/a-strunb.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strunb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strunb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Unbounded is
*** 721,727 ****
        Realloc_For_Chunk (Source, New_Item'Length);
  
        Source.Reference
!         (Before +  New_Item'Length .. Source.Last + New_Item'Length) :=
             Source.Reference (Before .. Source.Last);
  
        Source.Reference (Before .. Before + New_Item'Length - 1) := New_Item;
--- 721,727 ----
        Realloc_For_Chunk (Source, New_Item'Length);
  
        Source.Reference
!         (Before + New_Item'Length .. Source.Last + New_Item'Length) :=
             Source.Reference (Before .. Source.Last);
  
        Source.Reference (Before .. Before + New_Item'Length - 1) := New_Item;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strunb.ads gcc-13.1.0/gcc/ada/libgnat/a-strunb.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strunb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strunb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Strings.Unbounded with
*** 57,62 ****
--- 57,63 ----
    Initial_Condition => Length (Null_Unbounded_String) = 0
  is
     pragma Preelaborate;
+    pragma Annotate (GNATprove, Always_Return, Unbounded);
  
     type Unbounded_String is private with
       Default_Initial_Condition => Length (Unbounded_String) = 0;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strunb__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-strunb__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-strunb__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strunb__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-strunb__shared.ads gcc-13.1.0/gcc/ada/libgnat/a-strunb__shared.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-strunb__shared.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-strunb__shared.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Strings.Unbounded with
*** 86,91 ****
--- 86,92 ----
    Initial_Condition => Length (Null_Unbounded_String) = 0
  is
     pragma Preelaborate;
+    pragma Annotate (GNATprove, Always_Return, Unbounded);
  
     type Unbounded_String is private with
       Default_Initial_Condition => Length (Unbounded_String) = 0;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ststbo.adb gcc-13.1.0/gcc/ada/libgnat/a-ststbo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ststbo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ststbo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ststbo.ads gcc-13.1.0/gcc/ada/libgnat/a-ststbo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ststbo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ststbo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ststio.adb gcc-13.1.0/gcc/ada/libgnat/a-ststio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ststio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ststio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ststio.ads gcc-13.1.0/gcc/ada/libgnat/a-ststio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ststio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ststio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ststun.adb gcc-13.1.0/gcc/ada/libgnat/a-ststun.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ststun.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ststun.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ststun.ads gcc-13.1.0/gcc/ada/libgnat/a-ststun.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ststun.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ststun.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sttebu.adb gcc-13.1.0/gcc/ada/libgnat/a-sttebu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-sttebu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sttebu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,34 ****
--- 29,35 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Strings.UTF_Encoding.Strings;
  with Ada.Strings.UTF_Encoding.Wide_Strings;
  with Ada.Strings.UTF_Encoding.Wide_Wide_Strings;
  
*************** package body Ada.Strings.Text_Buffers is
*** 53,65 ****
        Buffer.Indentation := @ - Natural (Amount);
     end Decrease_Indent;
  
     package body Output_Mapping is
        --  Implement indentation in Put_UTF_8 and New_Line.
        --  Implement other output procedures using Put_UTF_8.
  
        procedure Put (Buffer : in out Buffer_Type; Item : String) is
        begin
!          Put_UTF_8 (Buffer, Item);
        end Put;
  
        procedure Wide_Put (Buffer : in out Buffer_Type; Item : Wide_String) is
--- 54,79 ----
        Buffer.Indentation := @ - Natural (Amount);
     end Decrease_Indent;
  
+    procedure Set_Trim_Leading_Spaces
+      (Buffer : in out Root_Buffer_Type;
+       Trim   : Boolean := True) is
+    begin
+       Buffer.Trim_Leading_White_Spaces := Trim;
+    end Set_Trim_Leading_Spaces;
+ 
+    function Trim_Leading_Spaces
+      (Buffer : Root_Buffer_Type) return Boolean is
+    begin
+       return Buffer.Trim_Leading_White_Spaces;
+    end Trim_Leading_Spaces;
+ 
     package body Output_Mapping is
        --  Implement indentation in Put_UTF_8 and New_Line.
        --  Implement other output procedures using Put_UTF_8.
  
        procedure Put (Buffer : in out Buffer_Type; Item : String) is
        begin
!          Put_UTF_8 (Buffer, UTF_Encoding.Strings.Encode (Item));
        end Put;
  
        procedure Wide_Put (Buffer : in out Buffer_Type; Item : Wide_String) is
*************** package body Ada.Strings.Text_Buffers is
*** 90,96 ****
              return;
           end if;
  
!          if Buffer.Indent_Pending then
              Buffer.Indent_Pending := False;
              if Buffer.Indentation > 0 then
                 Put_UTF_8_Implementation
--- 104,112 ----
              return;
           end if;
  
!          if Buffer.Indent_Pending
!            and then not Buffer.Trim_Leading_White_Spaces
!          then
              Buffer.Indent_Pending := False;
              if Buffer.Indentation > 0 then
                 Put_UTF_8_Implementation
*************** package body Ada.Strings.Text_Buffers is
*** 112,119 ****
        begin
           Buffer.Indent_Pending := False; --  just for a moment
           Put (Buffer, [ASCII.LF]);
!          Buffer.Indent_Pending := True;
!          Buffer.UTF_8_Column   := 1;
        end New_Line;
  
     end Output_Mapping;
--- 128,136 ----
        begin
           Buffer.Indent_Pending := False; --  just for a moment
           Put (Buffer, [ASCII.LF]);
!          Buffer.Indent_Pending            := True;
!          Buffer.UTF_8_Column              := 1;
!          Buffer.Trim_Leading_White_Spaces := False;
        end New_Line;
  
     end Output_Mapping;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sttebu.ads gcc-13.1.0/gcc/ada/libgnat/a-sttebu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sttebu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sttebu.ads	Wed Apr 26 07:09:39 2023
*************** is
*** 64,69 ****
--- 64,79 ----
        Post'Class => Current_Indent (Buffer) =
        Current_Indent (Buffer)'Old - Amount;
  
+    procedure Set_Trim_Leading_Spaces
+      (Buffer : in out Root_Buffer_Type;
+       Trim   : Boolean := True) with
+       Post   => Trim_Leading_Spaces (Buffer) = Trim,
+       Inline => True;
+ 
+    function Trim_Leading_Spaces
+      (Buffer : Root_Buffer_Type) return Boolean
+      with Inline;
+ 
  private
  
     type Root_Buffer_Type is abstract tagged limited record
*************** private
*** 85,90 ****
--- 95,106 ----
        All_8_Bits : Boolean := True;
        --  True if all characters seen so far fit in 8 bits
  
+       Trim_Leading_White_Spaces : Boolean := False;
+       --  Flag set prior to calling any of the Put operations, which will
+       --  cause white space characters to be discarded by any Put operation
+       --  until a non-white-space character is encountered, at which point
+       --  the flag will be reset.
+ 
     end record;
  
     generic
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stunau.adb gcc-13.1.0/gcc/ada/libgnat/a-stunau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stunau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stunau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stunau.ads gcc-13.1.0/gcc/ada/libgnat/a-stunau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stunau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stunau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stunau__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-stunau__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stunau__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stunau__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stunha.adb gcc-13.1.0/gcc/ada/libgnat/a-stunha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stunha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stunha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stuten.adb gcc-13.1.0/gcc/ada/libgnat/a-stuten.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stuten.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stuten.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2010-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2010-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stuten.ads gcc-13.1.0/gcc/ada/libgnat/a-stuten.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stuten.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stuten.ads	Wed Apr 26 07:09:39 2023
***************
*** 36,43 ****
  --  UTF encoded strings. Note: this package is consistent with Ada 95, and may
  --  be used in Ada 95 or Ada 2005 mode.
  
  with Interfaces;
- with Unchecked_Conversion;
  
  package Ada.Strings.UTF_Encoding is
     pragma Pure (UTF_Encoding);
--- 36,43 ----
  --  UTF encoded strings. Note: this package is consistent with Ada 95, and may
  --  be used in Ada 95 or Ada 2005 mode.
  
+ with Ada.Unchecked_Conversion;
  with Interfaces;
  
  package Ada.Strings.UTF_Encoding is
     pragma Pure (UTF_Encoding);
*************** package Ada.Strings.UTF_Encoding is
*** 106,118 ****
  
  private
     function To_Unsigned_8 is new
!      Unchecked_Conversion (Character, Interfaces.Unsigned_8);
  
     function To_Unsigned_16 is new
!      Unchecked_Conversion (Wide_Character, Interfaces.Unsigned_16);
  
     function To_Unsigned_32 is new
!      Unchecked_Conversion (Wide_Wide_Character, Interfaces.Unsigned_32);
  
     subtype UTF_XE_Encoding is Encoding_Scheme range UTF_16BE .. UTF_16LE;
     --  Subtype containing only UTF_16BE and UTF_16LE entries
--- 106,118 ----
  
  private
     function To_Unsigned_8 is new
!      Ada.Unchecked_Conversion (Character, Interfaces.Unsigned_8);
  
     function To_Unsigned_16 is new
!      Ada.Unchecked_Conversion (Wide_Character, Interfaces.Unsigned_16);
  
     function To_Unsigned_32 is new
!      Ada.Unchecked_Conversion (Wide_Wide_Character, Interfaces.Unsigned_32);
  
     subtype UTF_XE_Encoding is Encoding_Scheme range UTF_16BE .. UTF_16LE;
     --  Subtype containing only UTF_16BE and UTF_16LE entries
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwibo.adb gcc-13.1.0/gcc/ada/libgnat/a-stwibo.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwibo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwibo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwibo.ads gcc-13.1.0/gcc/ada/libgnat/a-stwibo.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stwibo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwibo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwifi.adb gcc-13.1.0/gcc/ada/libgnat/a-stwifi.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwifi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwifi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwiha.adb gcc-13.1.0/gcc/ada/libgnat/a-stwiha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwiha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwiha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwima.adb gcc-13.1.0/gcc/ada/libgnat/a-stwima.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwima.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwima.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwima.ads gcc-13.1.0/gcc/ada/libgnat/a-stwima.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stwima.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwima.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwise.adb gcc-13.1.0/gcc/ada/libgnat/a-stwise.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwise.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwise.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwise.ads gcc-13.1.0/gcc/ada/libgnat/a-stwise.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stwise.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwise.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwisu.adb gcc-13.1.0/gcc/ada/libgnat/a-stwisu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwisu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwisu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Wide_Superbound
*** 297,302 ****
--- 297,313 ----
        return Left <= Right.Data (1 .. Right.Current_Length);
     end Less_Or_Equal;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S      : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+       Source : Super_String) is
+    begin
+       Wide_String'Put_Image (S, Super_To_String (Source));
+    end Put_Image;
+ 
     ----------------------
     -- Set_Super_String --
     ----------------------
*************** package body Ada.Strings.Wide_Superbound
*** 1497,1503 ****
              raise Index_Error;
           end if;
  
!          Result.Current_Length := High - Low + 1;
           Result.Data (1 .. Result.Current_Length) := Source.Data (Low .. High);
        end return;
     end Super_Slice;
--- 1508,1514 ----
              raise Index_Error;
           end if;
  
!          Result.Current_Length := (if Low > High then 0 else High - Low + 1);
           Result.Data (1 .. Result.Current_Length) := Source.Data (Low .. High);
        end return;
     end Super_Slice;
*************** package body Ada.Strings.Wide_Superbound
*** 1513,1522 ****
          or else High > Source.Current_Length
        then
           raise Index_Error;
-       else
-          Target.Current_Length := High - Low + 1;
-          Target.Data (1 .. Target.Current_Length) := Source.Data (Low .. High);
        end if;
     end Super_Slice;
  
     ----------------
--- 1524,1533 ----
          or else High > Source.Current_Length
        then
           raise Index_Error;
        end if;
+ 
+       Target.Current_Length := (if Low > High then 0 else High - Low + 1);
+       Target.Data (1 .. Target.Current_Length) := Source.Data (Low .. High);
     end Super_Slice;
  
     ----------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwisu.ads gcc-13.1.0/gcc/ada/libgnat/a-stwisu.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stwisu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwisu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 37,42 ****
--- 37,43 ----
  --  Strings.Wide_Bounded.Generic_Bounded_Length use this type with
  --  an appropriate discriminant value set.
  
+ with Ada.Strings.Text_Buffers;
  with Ada.Strings.Wide_Maps;
  
  package Ada.Strings.Wide_Superbounded is
*************** package Ada.Strings.Wide_Superbounded is
*** 54,60 ****
        --  no longer necessary, because we now special-case this type in the
        --  compiler, so "=" composes properly for descendants of this type.
        --  Leaving it out is more efficient.
!    end record;
  
     --  The subprograms defined for Super_String are similar to those defined
     --  for Bounded_Wide_String, except that they have different names, so that
--- 55,62 ----
        --  no longer necessary, because we now special-case this type in the
        --  compiler, so "=" composes properly for descendants of this type.
        --  Leaving it out is more efficient.
!    end record
!    with Put_Image => Put_Image;
  
     --  The subprograms defined for Super_String are similar to those defined
     --  for Bounded_Wide_String, except that they have different names, so that
*************** package Ada.Strings.Wide_Superbounded is
*** 477,482 ****
--- 479,488 ----
        Item  : Super_String;
        Drop  : Truncation := Error) return Super_String;
  
+    procedure Put_Image
+      (S      : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+       Source : Super_String);
+ 
  private
        --  Pragma Inline declarations
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwiun.adb gcc-13.1.0/gcc/ada/libgnat/a-stwiun.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwiun.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwiun.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Wide_Unbounded
*** 718,724 ****
        Realloc_For_Chunk (Source, New_Item'Length);
  
        Source.Reference
!         (Before +  New_Item'Length .. Source.Last + New_Item'Length) :=
             Source.Reference (Before .. Source.Last);
  
        Source.Reference (Before .. Before + New_Item'Length - 1) := New_Item;
--- 718,724 ----
        Realloc_For_Chunk (Source, New_Item'Length);
  
        Source.Reference
!         (Before + New_Item'Length .. Source.Last + New_Item'Length) :=
             Source.Reference (Before .. Source.Last);
  
        Source.Reference (Before .. Before + New_Item'Length - 1) := New_Item;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwiun.ads gcc-13.1.0/gcc/ada/libgnat/a-stwiun.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stwiun.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwiun.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwiun__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-stwiun__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stwiun__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwiun__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stwiun__shared.ads gcc-13.1.0/gcc/ada/libgnat/a-stwiun__shared.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stwiun__shared.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stwiun__shared.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzbou.adb gcc-13.1.0/gcc/ada/libgnat/a-stzbou.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzbou.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzbou.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzbou.ads gcc-13.1.0/gcc/ada/libgnat/a-stzbou.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stzbou.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzbou.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Strings.Wide_Wide_Bounded is
*** 493,503 ****
        --  the Wide_Wide_Superbounded package.
  
        Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String :=
!                                    [Max_Length         => Max_Length,
                                      Current_Length     => 0,
                                      Data               =>
                                        [1 .. Max_Length =>
!                                         Wide_Wide_Superbounded.Wide_Wide_NUL]];
  
        pragma Inline (To_Bounded_Wide_Wide_String);
  
--- 493,503 ----
        --  the Wide_Wide_Superbounded package.
  
        Null_Bounded_Wide_Wide_String : constant Bounded_Wide_Wide_String :=
!                                    (Max_Length         => Max_Length,
                                      Current_Length     => 0,
                                      Data               =>
                                        [1 .. Max_Length =>
!                                         Wide_Wide_Superbounded.Wide_Wide_NUL]);
  
        pragma Inline (To_Bounded_Wide_Wide_String);
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzfix.adb gcc-13.1.0/gcc/ada/libgnat/a-stzfix.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzfix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzfix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzhas.adb gcc-13.1.0/gcc/ada/libgnat/a-stzhas.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzhas.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzhas.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2009-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2009-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzmap.adb gcc-13.1.0/gcc/ada/libgnat/a-stzmap.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzmap.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzmap.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzmap.ads gcc-13.1.0/gcc/ada/libgnat/a-stzmap.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stzmap.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzmap.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzsea.adb gcc-13.1.0/gcc/ada/libgnat/a-stzsea.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzsea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzsea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzsea.ads gcc-13.1.0/gcc/ada/libgnat/a-stzsea.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stzsea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzsea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzsup.adb gcc-13.1.0/gcc/ada/libgnat/a-stzsup.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzsup.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzsup.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Wide_Wide_Super
*** 297,302 ****
--- 297,313 ----
        return Left <= Right.Data (1 .. Right.Current_Length);
     end Less_Or_Equal;
  
+    ---------------
+    -- Put_Image --
+    ---------------
+ 
+    procedure Put_Image
+      (S      : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+       Source : Super_String) is
+    begin
+       Wide_Wide_String'Put_Image (S, Super_To_String (Source));
+    end Put_Image;
+ 
     ----------------------
     -- Set_Super_String --
     ----------------------
*************** package body Ada.Strings.Wide_Wide_Super
*** 1498,1508 ****
             or else High > Source.Current_Length
           then
              raise Index_Error;
-          else
-             Result.Current_Length := High - Low + 1;
-             Result.Data (1 .. Result.Current_Length) :=
-               Source.Data (Low .. High);
           end if;
        end return;
     end Super_Slice;
  
--- 1509,1519 ----
             or else High > Source.Current_Length
           then
              raise Index_Error;
           end if;
+ 
+          Result.Current_Length := (if Low > High then 0 else High - Low + 1);
+          Result.Data (1 .. Result.Current_Length) :=
+            Source.Data (Low .. High);
        end return;
     end Super_Slice;
  
*************** package body Ada.Strings.Wide_Wide_Super
*** 1517,1526 ****
          or else High > Source.Current_Length
        then
           raise Index_Error;
-       else
-          Target.Current_Length := High - Low + 1;
-          Target.Data (1 .. Target.Current_Length) := Source.Data (Low .. High);
        end if;
     end Super_Slice;
  
     ----------------
--- 1528,1537 ----
          or else High > Source.Current_Length
        then
           raise Index_Error;
        end if;
+ 
+       Target.Current_Length := (if Low > High then 0 else High - Low + 1);
+       Target.Data (1 .. Target.Current_Length) := Source.Data (Low .. High);
     end Super_Slice;
  
     ----------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzsup.ads gcc-13.1.0/gcc/ada/libgnat/a-stzsup.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stzsup.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzsup.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 37,42 ****
--- 37,43 ----
  --  Strings.Wide_Wide_Bounded.Generic_Bounded_Length use this type with
  --  an appropriate discriminant value set.
  
+ with Ada.Strings.Text_Buffers;
  with Ada.Strings.Wide_Wide_Maps;
  
  package Ada.Strings.Wide_Wide_Superbounded is
*************** package Ada.Strings.Wide_Wide_Superbound
*** 55,61 ****
        --  no longer necessary, because we now special-case this type in the
        --  compiler, so "=" composes properly for descendants of this type.
        --  Leaving it out is more efficient.
!    end record;
  
     --  The subprograms defined for Super_String are similar to those defined
     --  for Bounded_Wide_Wide_String, except that they have different names, so
--- 56,63 ----
        --  no longer necessary, because we now special-case this type in the
        --  compiler, so "=" composes properly for descendants of this type.
        --  Leaving it out is more efficient.
!    end record
!    with Put_Image => Put_Image;
  
     --  The subprograms defined for Super_String are similar to those defined
     --  for Bounded_Wide_Wide_String, except that they have different names, so
*************** package Ada.Strings.Wide_Wide_Superbound
*** 486,491 ****
--- 488,497 ----
        Item  : Super_String;
        Drop  : Truncation := Error) return Super_String;
  
+    procedure Put_Image
+      (S      : in out Ada.Strings.Text_Buffers.Root_Buffer_Type'Class;
+       Source : Super_String);
+ 
  private
        --  Pragma Inline declarations
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzunb.adb gcc-13.1.0/gcc/ada/libgnat/a-stzunb.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzunb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzunb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Strings.Wide_Wide_Unbou
*** 726,732 ****
        Realloc_For_Chunk (Source, New_Item'Length);
  
        Source.Reference
!         (Before +  New_Item'Length .. Source.Last + New_Item'Length) :=
             Source.Reference (Before .. Source.Last);
  
        Source.Reference (Before .. Before + New_Item'Length - 1) := New_Item;
--- 726,732 ----
        Realloc_For_Chunk (Source, New_Item'Length);
  
        Source.Reference
!         (Before + New_Item'Length .. Source.Last + New_Item'Length) :=
             Source.Reference (Before .. Source.Last);
  
        Source.Reference (Before .. Before + New_Item'Length - 1) := New_Item;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzunb.ads gcc-13.1.0/gcc/ada/libgnat/a-stzunb.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stzunb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzunb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzunb__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-stzunb__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-stzunb__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzunb__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-stzunb__shared.ads gcc-13.1.0/gcc/ada/libgnat/a-stzunb__shared.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-stzunb__shared.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-stzunb__shared.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suecin.adb gcc-13.1.0/gcc/ada/libgnat/a-suecin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suecin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suecin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suecin.ads gcc-13.1.0/gcc/ada/libgnat/a-suecin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-suecin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suecin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suenco.adb gcc-13.1.0/gcc/ada/libgnat/a-suenco.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suenco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suenco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suenst.adb gcc-13.1.0/gcc/ada/libgnat/a-suenst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suenst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suenst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suewst.adb gcc-13.1.0/gcc/ada/libgnat/a-suewst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suewst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suewst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suezst.adb gcc-13.1.0/gcc/ada/libgnat/a-suezst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suezst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suezst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suhcin.adb gcc-13.1.0/gcc/ada/libgnat/a-suhcin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suhcin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suhcin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suhcin.ads gcc-13.1.0/gcc/ada/libgnat/a-suhcin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-suhcin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suhcin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sulcin.adb gcc-13.1.0/gcc/ada/libgnat/a-sulcin.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-sulcin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sulcin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-sulcin.ads gcc-13.1.0/gcc/ada/libgnat/a-sulcin.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-sulcin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-sulcin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suteio.adb gcc-13.1.0/gcc/ada/libgnat/a-suteio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suteio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suteio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suteio.ads gcc-13.1.0/gcc/ada/libgnat/a-suteio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-suteio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suteio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-suteio__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-suteio__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-suteio__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-suteio__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swbwha.adb gcc-13.1.0/gcc/ada/libgnat/a-swbwha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-swbwha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swbwha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swmwco.ads gcc-13.1.0/gcc/ada/libgnat/a-swmwco.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-swmwco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swmwco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 66,92 ****
     subtype WC is Wide_Character;
  
     Control_Ranges           : aliased constant Wide_Character_Ranges :=
!      [ (W.NUL, W.US),
!        (W.DEL, W.APC)];
  
     Control_Set              : constant Wide_Character_Set :=
       (AF.Controlled with
        Control_Ranges'Unrestricted_Access);
  
     Graphic_Ranges           : aliased constant Wide_Character_Ranges :=
!      [ (W.Space,      W.Tilde),
!        (WC'Val (256), WC'Last)];
  
     Graphic_Set              : constant Wide_Character_Set :=
       (AF.Controlled with
        Graphic_Ranges'Unrestricted_Access);
  
     Letter_Ranges            : aliased constant Wide_Character_Ranges :=
!      [ ('A',                   'Z'),
!        (W.LC_A,                W.LC_Z),
!        (W.UC_A_Grave,          W.UC_O_Diaeresis),
!        (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
!        (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis)];
  
     Letter_Set               : constant Wide_Character_Set :=
       (AF.Controlled with
--- 66,92 ----
     subtype WC is Wide_Character;
  
     Control_Ranges           : aliased constant Wide_Character_Ranges :=
!      [(W.NUL, W.US),
!       (W.DEL, W.APC)];
  
     Control_Set              : constant Wide_Character_Set :=
       (AF.Controlled with
        Control_Ranges'Unrestricted_Access);
  
     Graphic_Ranges           : aliased constant Wide_Character_Ranges :=
!      [(W.Space,      W.Tilde),
!       (WC'Val (256), WC'Last)];
  
     Graphic_Set              : constant Wide_Character_Set :=
       (AF.Controlled with
        Graphic_Ranges'Unrestricted_Access);
  
     Letter_Ranges            : aliased constant Wide_Character_Ranges :=
!      [('A',                   'Z'),
!       (W.LC_A,                W.LC_Z),
!       (W.UC_A_Grave,          W.UC_O_Diaeresis),
!       (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
!       (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis)];
  
     Letter_Set               : constant Wide_Character_Set :=
       (AF.Controlled with
*************** private
*** 126,132 ****
        Basic_Ranges'Unrestricted_Access);
  
     Decimal_Digit_Ranges     : aliased constant Wide_Character_Ranges :=
!      [ ('0', '9')];
  
     Decimal_Digit_Set        : constant Wide_Character_Set :=
       (AF.Controlled with
--- 126,132 ----
        Basic_Ranges'Unrestricted_Access);
  
     Decimal_Digit_Ranges     : aliased constant Wide_Character_Ranges :=
!      [('0', '9')];
  
     Decimal_Digit_Set        : constant Wide_Character_Set :=
       (AF.Controlled with
*************** private
*** 167,187 ****
        Special_Graphic_Ranges'Unrestricted_Access);
  
     ISO_646_Ranges           : aliased constant Wide_Character_Ranges :=
!      [ (W.NUL, W.DEL)];
  
     ISO_646_Set              : constant Wide_Character_Set :=
       (AF.Controlled with
        ISO_646_Ranges'Unrestricted_Access);
  
     Character_Ranges         : aliased constant Wide_Character_Ranges :=
!      [ (W.NUL, WC'Val (255))];
  
     Character_Set            : constant Wide_Character_Set :=
       (AF.Controlled with
        Character_Ranges'Unrestricted_Access);
  
     Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
!      [Length => 56,
  
        Domain =>
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
--- 167,187 ----
        Special_Graphic_Ranges'Unrestricted_Access);
  
     ISO_646_Ranges           : aliased constant Wide_Character_Ranges :=
!      [(W.NUL, W.DEL)];
  
     ISO_646_Set              : constant Wide_Character_Set :=
       (AF.Controlled with
        ISO_646_Ranges'Unrestricted_Access);
  
     Character_Ranges         : aliased constant Wide_Character_Ranges :=
!      [(W.NUL, WC'Val (255))];
  
     Character_Set            : constant Wide_Character_Set :=
       (AF.Controlled with
        Character_Ranges'Unrestricted_Access);
  
     Lower_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
!      (Length => 56,
  
        Domain =>
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
*************** private
*** 247,260 ****
           W.LC_U_Circumflex           &
           W.LC_U_Diaeresis            &
           W.LC_Y_Acute                &
!          W.LC_Icelandic_Thorn];
  
     Lower_Case_Map : constant Wide_Character_Mapping :=
       (AF.Controlled with
        Map => Lower_Case_Mapping'Unrestricted_Access);
  
     Upper_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
!      [Length => 56,
  
        Domain =>
          "abcdefghijklmnopqrstuvwxyz" &
--- 247,260 ----
           W.LC_U_Circumflex           &
           W.LC_U_Diaeresis            &
           W.LC_Y_Acute                &
!          W.LC_Icelandic_Thorn);
  
     Lower_Case_Map : constant Wide_Character_Mapping :=
       (AF.Controlled with
        Map => Lower_Case_Mapping'Unrestricted_Access);
  
     Upper_Case_Mapping : aliased constant Wide_Character_Mapping_Values :=
!      (Length => 56,
  
        Domain =>
          "abcdefghijklmnopqrstuvwxyz" &
*************** private
*** 320,333 ****
           W.UC_U_Circumflex           &
           W.UC_U_Diaeresis            &
           W.UC_Y_Acute                &
!          W.UC_Icelandic_Thorn];
  
     Upper_Case_Map : constant Wide_Character_Mapping :=
       (AF.Controlled with
        Upper_Case_Mapping'Unrestricted_Access);
  
     Basic_Mapping : aliased constant Wide_Character_Mapping_Values :=
!      [Length => 55,
  
        Domain =>
          W.UC_A_Grave          &
--- 320,333 ----
           W.UC_U_Circumflex           &
           W.UC_U_Diaeresis            &
           W.UC_Y_Acute                &
!          W.UC_Icelandic_Thorn);
  
     Upper_Case_Map : constant Wide_Character_Mapping :=
       (AF.Controlled with
        Upper_Case_Mapping'Unrestricted_Access);
  
     Basic_Mapping : aliased constant Wide_Character_Mapping_Values :=
!      (Length => 55,
  
        Domain =>
          W.UC_A_Grave          &
*************** private
*** 441,447 ****
          'u'        &  -- LC_U_Circumflex
          'u'        &  -- LC_U_Diaeresis
          'y'        &  -- LC_Y_Acute
!         'y'];         -- LC_Y_Diaeresis
  
     Basic_Map : constant Wide_Character_Mapping :=
       (AF.Controlled with
--- 441,447 ----
          'u'        &  -- LC_U_Circumflex
          'u'        &  -- LC_U_Diaeresis
          'y'        &  -- LC_Y_Acute
!         'y');         -- LC_Y_Diaeresis
  
     Basic_Map : constant Wide_Character_Mapping :=
       (AF.Controlled with
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swunau.adb gcc-13.1.0/gcc/ada/libgnat/a-swunau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-swunau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swunau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swunau.ads gcc-13.1.0/gcc/ada/libgnat/a-swunau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-swunau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swunau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swunau__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-swunau__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-swunau__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swunau__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swuwha.adb gcc-13.1.0/gcc/ada/libgnat/a-swuwha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-swuwha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swuwha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swuwti.adb gcc-13.1.0/gcc/ada/libgnat/a-swuwti.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-swuwti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swuwti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swuwti.ads gcc-13.1.0/gcc/ada/libgnat/a-swuwti.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-swuwti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swuwti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-swuwti__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-swuwti__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-swuwti__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-swuwti__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szbzha.adb gcc-13.1.0/gcc/ada/libgnat/a-szbzha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-szbzha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szbzha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szmzco.ads gcc-13.1.0/gcc/ada/libgnat/a-szmzco.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-szmzco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szmzco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 66,92 ****
     subtype WC is Wide_Wide_Character;
  
     Control_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
!      [ (W.NUL, W.US),
!        (W.DEL, W.APC)];
  
     Control_Set              : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        Control_Ranges'Unrestricted_Access);
  
     Graphic_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
!      [ (W.Space,      W.Tilde),
!        (WC'Val (256), WC'Last)];
  
     Graphic_Set              : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        Graphic_Ranges'Unrestricted_Access);
  
     Letter_Ranges            : aliased constant Wide_Wide_Character_Ranges :=
!      [ ('A',                  'Z'),
!        (W.LC_A,                W.LC_Z),
!        (W.UC_A_Grave,          W.UC_O_Diaeresis),
!        (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
!        (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis)];
  
     Letter_Set               : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
--- 66,92 ----
     subtype WC is Wide_Wide_Character;
  
     Control_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
!      [(W.NUL, W.US),
!       (W.DEL, W.APC)];
  
     Control_Set              : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        Control_Ranges'Unrestricted_Access);
  
     Graphic_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
!      [(W.Space,      W.Tilde),
!       (WC'Val (256), WC'Last)];
  
     Graphic_Set              : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        Graphic_Ranges'Unrestricted_Access);
  
     Letter_Ranges            : aliased constant Wide_Wide_Character_Ranges :=
!      [('A',                  'Z'),
!       (W.LC_A,                W.LC_Z),
!       (W.UC_A_Grave,          W.UC_O_Diaeresis),
!       (W.UC_O_Oblique_Stroke, W.LC_O_Diaeresis),
!       (W.LC_O_Oblique_Stroke, W.LC_Y_Diaeresis)];
  
     Letter_Set               : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
*************** private
*** 126,132 ****
        Basic_Ranges'Unrestricted_Access);
  
     Decimal_Digit_Ranges     : aliased constant Wide_Wide_Character_Ranges :=
!      [ ('0', '9')];
  
     Decimal_Digit_Set        : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
--- 126,132 ----
        Basic_Ranges'Unrestricted_Access);
  
     Decimal_Digit_Ranges     : aliased constant Wide_Wide_Character_Ranges :=
!      [('0', '9')];
  
     Decimal_Digit_Set        : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
*************** private
*** 167,187 ****
        Special_Graphic_Ranges'Unrestricted_Access);
  
     ISO_646_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
!      [ (W.NUL, W.DEL)];
  
     ISO_646_Set              : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        ISO_646_Ranges'Unrestricted_Access);
  
     Character_Ranges         : aliased constant Wide_Wide_Character_Ranges :=
!      [ (W.NUL, WC'Val (255))];
  
     Character_Set            : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        Character_Ranges'Unrestricted_Access);
  
     Lower_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
!      [Length => 56,
  
        Domain =>
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
--- 167,187 ----
        Special_Graphic_Ranges'Unrestricted_Access);
  
     ISO_646_Ranges           : aliased constant Wide_Wide_Character_Ranges :=
!      [(W.NUL, W.DEL)];
  
     ISO_646_Set              : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        ISO_646_Ranges'Unrestricted_Access);
  
     Character_Ranges         : aliased constant Wide_Wide_Character_Ranges :=
!      [(W.NUL, WC'Val (255))];
  
     Character_Set            : constant Wide_Wide_Character_Set :=
       (AF.Controlled with
        Character_Ranges'Unrestricted_Access);
  
     Lower_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
!      (Length => 56,
  
        Domain =>
          "ABCDEFGHIJKLMNOPQRSTUVWXYZ" &
*************** private
*** 247,260 ****
           W.LC_U_Circumflex           &
           W.LC_U_Diaeresis            &
           W.LC_Y_Acute                &
!          W.LC_Icelandic_Thorn];
  
     Lower_Case_Map : constant Wide_Wide_Character_Mapping :=
       (AF.Controlled with
        Map => Lower_Case_Mapping'Unrestricted_Access);
  
     Upper_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
!      [Length => 56,
  
        Domain =>
          "abcdefghijklmnopqrstuvwxyz" &
--- 247,260 ----
           W.LC_U_Circumflex           &
           W.LC_U_Diaeresis            &
           W.LC_Y_Acute                &
!          W.LC_Icelandic_Thorn);
  
     Lower_Case_Map : constant Wide_Wide_Character_Mapping :=
       (AF.Controlled with
        Map => Lower_Case_Mapping'Unrestricted_Access);
  
     Upper_Case_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
!      (Length => 56,
  
        Domain =>
          "abcdefghijklmnopqrstuvwxyz" &
*************** private
*** 320,333 ****
           W.UC_U_Circumflex           &
           W.UC_U_Diaeresis            &
           W.UC_Y_Acute                &
!          W.UC_Icelandic_Thorn];
  
     Upper_Case_Map : constant Wide_Wide_Character_Mapping :=
       (AF.Controlled with
        Upper_Case_Mapping'Unrestricted_Access);
  
     Basic_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
!      [Length => 55,
  
        Domain =>
          W.UC_A_Grave          &
--- 320,333 ----
           W.UC_U_Circumflex           &
           W.UC_U_Diaeresis            &
           W.UC_Y_Acute                &
!          W.UC_Icelandic_Thorn);
  
     Upper_Case_Map : constant Wide_Wide_Character_Mapping :=
       (AF.Controlled with
        Upper_Case_Mapping'Unrestricted_Access);
  
     Basic_Mapping : aliased constant Wide_Wide_Character_Mapping_Values :=
!      (Length => 55,
  
        Domain =>
          W.UC_A_Grave          &
*************** private
*** 441,447 ****
          'u'        &  -- LC_U_Circumflex
          'u'        &  -- LC_U_Diaeresis
          'y'        &  -- LC_Y_Acute
!         'y'];         -- LC_Y_Diaeresis
  
     Basic_Map : constant Wide_Wide_Character_Mapping :=
       (AF.Controlled with
--- 441,447 ----
          'u'        &  -- LC_U_Circumflex
          'u'        &  -- LC_U_Diaeresis
          'y'        &  -- LC_Y_Acute
!         'y');         -- LC_Y_Diaeresis
  
     Basic_Map : constant Wide_Wide_Character_Mapping :=
       (AF.Controlled with
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szunau.adb gcc-13.1.0/gcc/ada/libgnat/a-szunau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-szunau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szunau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szunau.ads gcc-13.1.0/gcc/ada/libgnat/a-szunau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-szunau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szunau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szunau__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-szunau__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-szunau__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szunau__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szuzha.adb gcc-13.1.0/gcc/ada/libgnat/a-szuzha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-szuzha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szuzha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szuzti.adb gcc-13.1.0/gcc/ada/libgnat/a-szuzti.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-szuzti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szuzti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szuzti.ads gcc-13.1.0/gcc/ada/libgnat/a-szuzti.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-szuzti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szuzti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-szuzti__shared.adb gcc-13.1.0/gcc/ada/libgnat/a-szuzti__shared.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-szuzti__shared.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-szuzti__shared.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tags.adb gcc-13.1.0/gcc/ada/libgnat/a-tags.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tags.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tags.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Tags is
*** 554,566 ****
     -----------------------------
  
     function Interface_Ancestor_Tags (T : Tag) return Tag_Array is
!       TSD_Ptr     : constant Addr_Ptr :=
!                       To_Addr_Ptr (To_Address (T) - DT_Typeinfo_Ptr_Size);
!       TSD         : constant Type_Specific_Data_Ptr :=
!                       To_Type_Specific_Data_Ptr (TSD_Ptr.all);
!       Iface_Table : constant Interface_Data_Ptr := TSD.Interfaces_Table;
! 
     begin
        if Iface_Table = null then
           declare
              Table : Tag_Array (1 .. 0);
--- 554,571 ----
     -----------------------------
  
     function Interface_Ancestor_Tags (T : Tag) return Tag_Array is
!       TSD_Ptr     : Addr_Ptr;
!       TSD         : Type_Specific_Data_Ptr;
!       Iface_Table : Interface_Data_Ptr;
     begin
+       if T = No_Tag then
+          raise Tag_Error;
+       end if;
+ 
+       TSD_Ptr     := To_Addr_Ptr (To_Address (T) - DT_Typeinfo_Ptr_Size);
+       TSD         := To_Type_Specific_Data_Ptr (TSD_Ptr.all);
+       Iface_Table := TSD.Interfaces_Table;
+ 
        if Iface_Table = null then
           declare
              Table : Tag_Array (1 .. 0);
*************** package body Ada.Tags is
*** 731,737 ****
        Ancestor   : Tag) return Boolean
     is
     begin
!       if Descendant = Ancestor then
           return True;
  
        else
--- 736,745 ----
        Ancestor   : Tag) return Boolean
     is
     begin
!       if Descendant = No_Tag or else Ancestor = No_Tag then
!          raise Tag_Error;
! 
!       elsif Descendant = Ancestor then
           return True;
  
        else
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tags.ads gcc-13.1.0/gcc/ada/libgnat/a-tags.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tags.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tags.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-teioed.adb gcc-13.1.0/gcc/ada/libgnat/a-teioed.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-teioed.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-teioed.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-teioed.ads gcc-13.1.0/gcc/ada/libgnat/a-teioed.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-teioed.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-teioed.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-textio.adb gcc-13.1.0/gcc/ada/libgnat/a-textio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-textio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-textio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-textio.ads gcc-13.1.0/gcc/ada/libgnat/a-textio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-textio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-textio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** is
*** 101,114 ****
        Name : String := "";
        Form : String := "")
     with
!      Pre    => not Is_Open (File),
!      Post   =>
         Is_Open (File)
         and then Ada.Text_IO.Mode (File) = Mode
         and then (if Mode /= In_File
                     then (Line_Length (File) = 0
                           and then Page_Length (File) = 0)),
!      Global => (In_Out => File_System);
  
     procedure Open
       (File : in out File_Type;
--- 101,115 ----
        Name : String := "";
        Form : String := "")
     with
!      Pre      => not Is_Open (File),
!      Post     =>
         Is_Open (File)
         and then Ada.Text_IO.Mode (File) = Mode
         and then (if Mode /= In_File
                     then (Line_Length (File) = 0
                           and then Page_Length (File) = 0)),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Open
       (File : in out File_Type;
*************** is
*** 116,169 ****
        Name : String;
        Form : String := "")
     with
!      Pre    => not Is_Open (File),
!      Post   =>
        Is_Open (File)
        and then Ada.Text_IO.Mode (File) = Mode
        and then (if Mode /= In_File
                    then (Line_Length (File) = 0
                          and then Page_Length (File) = 0)),
!      Global => (In_Out => File_System);
  
     procedure Close  (File : in out File_Type) with
!      Pre    => Is_Open (File),
!      Post   => not Is_Open (File),
!      Global => (In_Out => File_System);
     procedure Delete (File : in out File_Type) with
!      Pre    => Is_Open (File),
!      Post   => not Is_Open (File),
!      Global => (In_Out => File_System);
     procedure Reset  (File : in out File_Type; Mode : File_Mode) with
!      Pre    => Is_Open (File),
!      Post   =>
         Is_Open (File)
         and then Ada.Text_IO.Mode (File) = Mode
         and then (if Mode /= In_File
                     then (Line_Length (File) = 0
                           and then Page_Length (File) = 0)),
!      Global => (In_Out => File_System);
     procedure Reset  (File : in out File_Type) with
!      Pre    => Is_Open (File),
!      Post   =>
         Is_Open (File)
         and Mode (File)'Old = Mode (File)
         and (if Mode (File) /= In_File
                  then (Line_Length (File) = 0
                        and then Page_Length (File) = 0)),
!      Global => (In_Out => File_System);
  
     function Mode (File : File_Type) return File_Mode with
!      Pre    => Is_Open (File),
!      Global => null;
     function Name (File : File_Type) return String with
!      Pre    => Is_Open (File),
!      Global => null;
     function Form (File : File_Type) return String with
!      Pre    => Is_Open (File),
!      Global => null;
  
     function Is_Open (File : File_Type) return Boolean with
!      Global => null;
  
     ------------------------------------------------------
     -- Control of default input, output and error files --
--- 117,179 ----
        Name : String;
        Form : String := "")
     with
!      Pre      => not Is_Open (File),
!      Post     =>
        Is_Open (File)
        and then Ada.Text_IO.Mode (File) = Mode
        and then (if Mode /= In_File
                    then (Line_Length (File) = 0
                          and then Page_Length (File) = 0)),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Close  (File : in out File_Type) with
!      Pre      => Is_Open (File),
!      Post     => not Is_Open (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
     procedure Delete (File : in out File_Type) with
!      Pre      => Is_Open (File),
!      Post     => not Is_Open (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Reset  (File : in out File_Type; Mode : File_Mode) with
!      Pre      => Is_Open (File),
!      Post     =>
         Is_Open (File)
         and then Ada.Text_IO.Mode (File) = Mode
         and then (if Mode /= In_File
                     then (Line_Length (File) = 0
                           and then Page_Length (File) = 0)),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Reset  (File : in out File_Type) with
!      Pre      => Is_Open (File),
!      Post     =>
         Is_Open (File)
         and Mode (File)'Old = Mode (File)
         and (if Mode (File) /= In_File
                  then (Line_Length (File) = 0
                        and then Page_Length (File) = 0)),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     function Mode (File : File_Type) return File_Mode with
!      Pre      => Is_Open (File),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     function Name (File : File_Type) return String with
!      Pre      => Is_Open (File),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
     function Form (File : File_Type) return String with
!      Pre      => Is_Open (File),
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     function Is_Open (File : File_Type) return Boolean with
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
  
     ------------------------------------------------------
     -- Control of default input, output and error files --
*************** is
*** 199,318 ****
     --  an oversight, and was intended to be IN, see AI95-00057.
  
     procedure Flush (File : File_Type) with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
     procedure Flush with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     --------------------------------------------
     -- Specification of line and page lengths --
     --------------------------------------------
  
     procedure Set_Line_Length (File : File_Type; To : Count) with
!      Pre    => Is_Open (File)  and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File) = To
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
     procedure Set_Line_Length (To : Count) with
!      Post   =>
         Line_Length = To
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Set_Page_Length (File : File_Type; To : Count) with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Page_Length (File) = To
         and Line_Length (File)'Old = Line_Length (File),
!      Global => (In_Out => File_System);
     procedure Set_Page_Length (To : Count) with
!      Post   =>
         Page_Length = To
         and Line_Length'Old = Line_Length,
!      Global => (In_Out => File_System);
  
     function Line_Length (File : File_Type) return Count with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Global => (Input => File_System);
     function Line_Length return Count with
!      Global => (Input => File_System);
  
     function Page_Length (File : File_Type) return Count with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Global => (Input => File_System);
     function Page_Length return Count with
!      Global => (Input => File_System);
  
     ------------------------------------
     -- Column, Line, and Page Control --
     ------------------------------------
  
     procedure New_Line (File : File_Type; Spacing : Positive_Count := 1) with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
     procedure New_Line (Spacing : Positive_Count := 1) with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1) with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
     procedure Skip_Line (Spacing : Positive_Count := 1) with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     function End_Of_Line (File : File_Type) return Boolean with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (Input => File_System);
     function End_Of_Line return Boolean with
!      Global => (Input => File_System);
  
     procedure New_Page (File : File_Type) with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
     procedure New_Page with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Skip_Page (File : File_Type) with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
     procedure Skip_Page with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     function End_Of_Page (File : File_Type) return Boolean with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (Input => File_System);
     function End_Of_Page return Boolean with
!      Global => (Input => File_System);
  
     function End_Of_File (File : File_Type) return Boolean with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (Input => File_System);
     function End_Of_File return Boolean with
!      Global => (Input => File_System);
  
     procedure Set_Col (File : File_Type;  To : Positive_Count) with
       Pre            =>
--- 209,350 ----
     --  an oversight, and was intended to be IN, see AI95-00057.
  
     procedure Flush (File : File_Type) with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
     procedure Flush with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     --------------------------------------------
     -- Specification of line and page lengths --
     --------------------------------------------
  
     procedure Set_Line_Length (File : File_Type; To : Count) with
!      Pre      => Is_Open (File)  and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File) = To
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Set_Line_Length (To : Count) with
!      Post     =>
         Line_Length = To
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Set_Page_Length (File : File_Type; To : Count) with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Page_Length (File) = To
         and Line_Length (File)'Old = Line_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Set_Page_Length (To : Count) with
!      Post     =>
         Page_Length = To
         and Line_Length'Old = Line_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     function Line_Length (File : File_Type) return Count with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Global   => (Input => File_System);
     function Line_Length return Count with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     function Page_Length (File : File_Type) return Count with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Global   => (Input => File_System);
     function Page_Length return Count with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     ------------------------------------
     -- Column, Line, and Page Control --
     ------------------------------------
  
     procedure New_Line (File : File_Type; Spacing : Positive_Count := 1) with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
     procedure New_Line (Spacing : Positive_Count := 1) with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Skip_Line (File : File_Type; Spacing : Positive_Count := 1) with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Skip_Line (Spacing : Positive_Count := 1) with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     function End_Of_Line (File : File_Type) return Boolean with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
     function End_Of_Line return Boolean with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure New_Page (File : File_Type) with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
     procedure New_Page with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Skip_Page (File : File_Type) with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Skip_Page with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     function End_Of_Page (File : File_Type) return Boolean with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
     function End_Of_Page return Boolean with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     function End_Of_File (File : File_Type) return Boolean with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
     function End_Of_File return Boolean with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Set_Col (File : File_Type;  To : Positive_Count) with
       Pre            =>
*************** is
*** 325,337 ****
                Line_Length (File)'Old = Line_Length (File)
                and Page_Length (File)'Old = Page_Length (File),
          others                 => True),
!      Global         => (In_Out => File_System);
     procedure Set_Col (To : Positive_Count) with
!      Pre    => Line_Length = 0 or To <= Line_Length,
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Set_Line (File : File_Type; To : Positive_Count) with
       Pre            =>
--- 357,371 ----
                Line_Length (File)'Old = Line_Length (File)
                and Page_Length (File)'Old = Page_Length (File),
          others                 => True),
!      Global         => (In_Out => File_System),
!      Annotate       => (GNATprove, Might_Not_Return);
     procedure Set_Col (To : Positive_Count) with
!      Pre      => Line_Length = 0 or To <= Line_Length,
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Set_Line (File : File_Type; To : Positive_Count) with
       Pre            =>
*************** is
*** 344,492 ****
                Line_Length (File)'Old = Line_Length (File)
                and Page_Length (File)'Old = Page_Length (File),
          others                 => True),
!      Global         => (In_Out => File_System);
     procedure Set_Line (To : Positive_Count) with
!      Pre    => Page_Length = 0 or To <= Page_Length,
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     function Col (File : File_Type) return Positive_Count with
!      Pre    => Is_Open (File),
!      Global => (Input => File_System);
     function Col return Positive_Count with
!      Global => (Input => File_System);
  
     function Line (File : File_Type) return Positive_Count with
!      Pre    => Is_Open (File),
!      Global => (Input => File_System);
     function Line return Positive_Count with
!      Global => (Input => File_System);
  
     function Page (File : File_Type) return Positive_Count with
!      Pre => Is_Open (File),
!      Global => (Input => File_System);
     function Page return Positive_Count with
!      Global => (Input => File_System);
  
     ----------------------------
     -- Character Input-Output --
     ----------------------------
  
     procedure Get (File : File_Type; Item : out Character) with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
     procedure Get (Item : out Character) with
       Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
     procedure Put (File : File_Type; Item : Character) with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
     procedure Put (Item : Character) with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Look_Ahead
       (File        : File_Type;
        Item        : out Character;
        End_Of_Line : out Boolean)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (Input => File_System);
  
     procedure Look_Ahead
       (Item        : out Character;
        End_Of_Line : out Boolean)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (Input => File_System);
  
     procedure Get_Immediate
       (File : File_Type;
        Item : out Character)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get_Immediate
       (Item : out Character)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get_Immediate
       (File      : File_Type;
        Item      : out Character;
        Available : out Boolean)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get_Immediate
       (Item      : out Character;
        Available : out Boolean)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     -------------------------
     -- String Input-Output --
     -------------------------
  
     procedure Get (File : File_Type; Item : out String) with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
     procedure Get (Item : out String) with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
     procedure Put (File : File_Type; Item : String) with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
     procedure Put (Item : String) with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get_Line
       (File : File_Type;
        Item : out String;
        Last : out Natural)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Post   => (if Item'Length > 0 then Last in Item'First - 1 .. Item'Last
                 else Last = Item'First - 1),
!      Global => (In_Out => File_System);
  
     procedure Get_Line
       (Item : out String;
        Last : out Natural)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length
         and (if Item'Length > 0 then Last in Item'First - 1 .. Item'Last
              else Last = Item'First - 1),
!      Global => (In_Out => File_System);
  
     function Get_Line (File : File_Type) return String with SPARK_Mode => Off;
     pragma Ada_05 (Get_Line);
--- 378,550 ----
                Line_Length (File)'Old = Line_Length (File)
                and Page_Length (File)'Old = Page_Length (File),
          others                 => True),
!      Global         => (In_Out => File_System),
!      Annotate       => (GNATprove, Might_Not_Return);
     procedure Set_Line (To : Positive_Count) with
!      Pre      => Page_Length = 0 or To <= Page_Length,
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     function Col (File : File_Type) return Positive_Count with
!      Pre      => Is_Open (File),
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
     function Col return Positive_Count with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     function Line (File : File_Type) return Positive_Count with
!      Pre      => Is_Open (File),
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
     function Line return Positive_Count with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     function Page (File : File_Type) return Positive_Count with
!      Pre      => Is_Open (File),
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
     function Page return Positive_Count with
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     ----------------------------
     -- Character Input-Output --
     ----------------------------
  
     procedure Get (File : File_Type; Item : out Character) with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Get (Item : out Character) with
       Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Put (File : File_Type; Item : Character) with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
     procedure Put (Item : Character) with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Look_Ahead
       (File        : File_Type;
        Item        : out Character;
        End_Of_Line : out Boolean)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Look_Ahead
       (Item        : out Character;
        End_Of_Line : out Boolean)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (Input => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Get_Immediate
       (File : File_Type;
        Item : out Character)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get_Immediate
       (Item : out Character)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get_Immediate
       (File      : File_Type;
        Item      : out Character;
        Available : out Boolean)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get_Immediate
       (Item      : out Character;
        Available : out Boolean)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     -------------------------
     -- String Input-Output --
     -------------------------
  
     procedure Get (File : File_Type; Item : out String) with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Get (Item : out String) with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Put (File : File_Type; Item : String) with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
     procedure Put (Item : String) with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Get_Line
       (File : File_Type;
        Item : out String;
        Last : out Natural)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Post     => (if Item'Length > 0 then Last in Item'First - 1 .. Item'Last
                 else Last = Item'First - 1),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get_Line
       (Item : out String;
        Last : out Natural)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length
         and (if Item'Length > 0 then Last in Item'First - 1 .. Item'Last
              else Last = Item'First - 1),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     function Get_Line (File : File_Type) return String with SPARK_Mode => Off;
     pragma Ada_05 (Get_Line);
*************** is
*** 498,516 ****
       (File : File_Type;
        Item : String)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put_Line
       (Item : String)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     ---------------------------------------
     -- Generic packages for Input-Output --
--- 556,576 ----
       (File : File_Type;
        Item : String)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     procedure Put_Line
       (Item : String)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Always_Return);
  
     ---------------------------------------
     -- Generic packages for Input-Output --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiboio.adb gcc-13.1.0/gcc/ada/libgnat/a-tiboio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiboio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiboio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ticoau.adb gcc-13.1.0/gcc/ada/libgnat/a-ticoau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ticoau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ticoau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ticoau.ads gcc-13.1.0/gcc/ada/libgnat/a-ticoau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ticoau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ticoau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ticoio.adb gcc-13.1.0/gcc/ada/libgnat/a-ticoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ticoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ticoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ticoio.ads gcc-13.1.0/gcc/ada/libgnat/a-ticoio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ticoio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ticoio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tideau.adb gcc-13.1.0/gcc/ada/libgnat/a-tideau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tideau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tideau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tideau.ads gcc-13.1.0/gcc/ada/libgnat/a-tideau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tideau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tideau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tideio.adb gcc-13.1.0/gcc/ada/libgnat/a-tideio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tideio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tideio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tideio.ads gcc-13.1.0/gcc/ada/libgnat/a-tideio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tideio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tideio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Text_IO.Decimal_IO is
*** 54,70 ****
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Put
       (File : File_Type;
--- 54,72 ----
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (File : File_Type;
*************** package Ada.Text_IO.Decimal_IO is
*** 73,83 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put
       (Item : Num;
--- 75,86 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (Item : Num;
*************** package Ada.Text_IO.Decimal_IO is
*** 85,101 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global => null;
  
     procedure Put
       (To   : out String;
--- 88,106 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (To   : out String;
*************** package Ada.Text_IO.Decimal_IO is
*** 103,109 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Global => null;
  
  private
     pragma Inline (Get);
--- 108,115 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
  private
     pragma Inline (Get);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tideio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-tideio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tideio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tideio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tienau.adb gcc-13.1.0/gcc/ada/libgnat/a-tienau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tienau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tienau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tienau.ads gcc-13.1.0/gcc/ada/libgnat/a-tienau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tienau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tienau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tienio.adb gcc-13.1.0/gcc/ada/libgnat/a-tienio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tienio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tienio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tienio.ads gcc-13.1.0/gcc/ada/libgnat/a-tienio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tienio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tienio.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Text_IO.Enumeration_IO is
*** 29,41 ****
     Default_Setting : Type_Set := Upper_Case;
  
     procedure Get (File : File_Type; Item : out Enum) with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
     procedure Get (Item : out Enum) with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Put
       (File  : File_Type;
--- 29,43 ----
     Default_Setting : Type_Set := Upper_Case;
  
     procedure Get (File : File_Type; Item : out Enum) with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
     procedure Get (Item : out Enum) with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (File  : File_Type;
*************** package Ada.Text_IO.Enumeration_IO is
*** 43,76 ****
        Width : Field := Default_Width;
        Set   : Type_Set := Default_Setting)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put
       (Item  : Enum;
        Width : Field := Default_Width;
        Set   : Type_Set := Default_Setting)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get
       (From : String;
        Item : out Enum;
        Last : out Positive)
     with
!      Global => null;
  
     procedure Put
       (To   : out String;
        Item : Enum;
        Set  : Type_Set := Default_Setting)
     with
!      Global => null;
  
  end Ada.Text_IO.Enumeration_IO;
--- 45,82 ----
        Width : Field := Default_Width;
        Set   : Type_Set := Default_Setting)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (Item  : Enum;
        Width : Field := Default_Width;
        Set   : Type_Set := Default_Setting)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (From : String;
        Item : out Enum;
        Last : out Positive)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (To   : out String;
        Item : Enum;
        Set  : Type_Set := Default_Setting)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
  end Ada.Text_IO.Enumeration_IO;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tifiau.adb gcc-13.1.0/gcc/ada/libgnat/a-tifiau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tifiau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tifiau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tifiau.ads gcc-13.1.0/gcc/ada/libgnat/a-tifiau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tifiau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tifiau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tifiio.adb gcc-13.1.0/gcc/ada/libgnat/a-tifiio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tifiio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tifiio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tifiio.ads gcc-13.1.0/gcc/ada/libgnat/a-tifiio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tifiio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tifiio.ads	Wed Apr 26 07:09:39 2023
*************** package Ada.Text_IO.Fixed_IO with SPARK_
*** 34,50 ****
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Put
       (File : File_Type;
--- 34,52 ----
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (File : File_Type;
*************** package Ada.Text_IO.Fixed_IO with SPARK_
*** 53,63 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put
       (Item : Num;
--- 55,66 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (Item : Num;
*************** package Ada.Text_IO.Fixed_IO with SPARK_
*** 65,81 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global => null;
  
     procedure Put
       (To   : out String;
--- 68,86 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (To   : out String;
*************** package Ada.Text_IO.Fixed_IO with SPARK_
*** 83,89 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Global => null;
  
  private
     pragma Inline (Get);
--- 88,95 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
  private
     pragma Inline (Get);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tifiio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-tifiio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tifiio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tifiio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiflau.adb gcc-13.1.0/gcc/ada/libgnat/a-tiflau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiflau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiflau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiflau.ads gcc-13.1.0/gcc/ada/libgnat/a-tiflau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tiflau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiflau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiflio.adb gcc-13.1.0/gcc/ada/libgnat/a-tiflio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiflio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiflio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiflio.ads gcc-13.1.0/gcc/ada/libgnat/a-tiflio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tiflio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiflio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Text_IO.Float_IO with SPARK_
*** 54,70 ****
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Put
       (File : File_Type;
--- 54,72 ----
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (File : File_Type;
*************** package Ada.Text_IO.Float_IO with SPARK_
*** 73,83 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put
       (Item : Num;
--- 75,86 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (Item : Num;
*************** package Ada.Text_IO.Float_IO with SPARK_
*** 85,101 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global => null;
  
     procedure Put
       (To   : out String;
--- 88,106 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (To   : out String;
*************** package Ada.Text_IO.Float_IO with SPARK_
*** 103,109 ****
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Global => null;
  
  private
     pragma Inline (Get);
--- 108,115 ----
        Aft  : Field := Default_Aft;
        Exp  : Field := Default_Exp)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
  private
     pragma Inline (Get);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tigeau.adb gcc-13.1.0/gcc/ada/libgnat/a-tigeau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tigeau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tigeau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tigeau.ads gcc-13.1.0/gcc/ada/libgnat/a-tigeau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tigeau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tigeau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tigeli.adb gcc-13.1.0/gcc/ada/libgnat/a-tigeli.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tigeli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tigeli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiinau.adb gcc-13.1.0/gcc/ada/libgnat/a-tiinau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiinau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiinau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiinau.ads gcc-13.1.0/gcc/ada/libgnat/a-tiinau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tiinau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiinau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiinio.adb gcc-13.1.0/gcc/ada/libgnat/a-tiinio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiinio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiinio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiinio.ads gcc-13.1.0/gcc/ada/libgnat/a-tiinio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tiinio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiinio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package Ada.Text_IO.Integer_IO is
*** 53,69 ****
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Put
       (File  : File_Type;
--- 53,71 ----
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (File  : File_Type;
*************** package Ada.Text_IO.Integer_IO is
*** 71,105 ****
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put
       (Item  : Num;
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global => null;
  
     procedure Put
       (To   : out String;
        Item : Num;
        Base : Number_Base := Default_Base)
     with
!      Global => null;
  
  private
     pragma Inline (Get);
--- 73,111 ----
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (Item  : Num;
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (To   : out String;
        Item : Num;
        Base : Number_Base := Default_Base)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
  private
     pragma Inline (Get);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiinio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-tiinio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiinio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiinio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-timoio.adb gcc-13.1.0/gcc/ada/libgnat/a-timoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-timoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-timoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-timoio.ads gcc-13.1.0/gcc/ada/libgnat/a-timoio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-timoio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-timoio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2023, 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 --
*************** package Ada.Text_IO.Modular_IO is
*** 53,69 ****
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre    => Is_Open (File) and then Mode (File) = In_File,
!      Global => (In_Out => File_System);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Put
       (File  : File_Type;
--- 53,71 ----
        Item  : out Num;
        Width : Field := 0)
     with
!      Pre      => Is_Open (File) and then Mode (File) = In_File,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (Item  : out Num;
        Width : Field := 0)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (File  : File_Type;
*************** package Ada.Text_IO.Modular_IO is
*** 71,105 ****
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Pre    => Is_Open (File) and then Mode (File) /= In_File,
!      Post   =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global => (In_Out => File_System);
  
     procedure Put
       (Item  : Num;
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Post   =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global => (In_Out => File_System);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global => null;
  
     procedure Put
       (To   : out String;
        Item : Num;
        Base : Number_Base := Default_Base)
     with
!      Global => null;
  
  private
     pragma Inline (Get);
--- 73,111 ----
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Pre      => Is_Open (File) and then Mode (File) /= In_File,
!      Post     =>
         Line_Length (File)'Old = Line_Length (File)
         and Page_Length (File)'Old = Page_Length (File),
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (Item  : Num;
        Width : Field := Default_Width;
        Base  : Number_Base := Default_Base)
     with
!      Post     =>
         Line_Length'Old = Line_Length
         and Page_Length'Old = Page_Length,
!      Global   => (In_Out => File_System),
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Get
       (From : String;
        Item : out Num;
        Last : out Positive)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
     procedure Put
       (To   : out String;
        Item : Num;
        Base : Number_Base := Default_Base)
     with
!      Global   => null,
!      Annotate => (GNATprove, Might_Not_Return);
  
  private
     pragma Inline (Get);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-timoio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-timoio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-timoio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-timoio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiocst.adb gcc-13.1.0/gcc/ada/libgnat/a-tiocst.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tiocst.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiocst.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tiocst.ads gcc-13.1.0/gcc/ada/libgnat/a-tiocst.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tiocst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tiocst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tirsfi.adb gcc-13.1.0/gcc/ada/libgnat/a-tirsfi.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-tirsfi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tirsfi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-tirsfi.ads gcc-13.1.0/gcc/ada/libgnat/a-tirsfi.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-tirsfi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-tirsfi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-titest.adb gcc-13.1.0/gcc/ada/libgnat/a-titest.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-titest.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-titest.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-undesu.adb gcc-13.1.0/gcc/ada/libgnat/a-undesu.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-undesu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-undesu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2011-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wichha.adb gcc-13.1.0/gcc/ada/libgnat/a-wichha.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wichha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wichha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wichun.adb gcc-13.1.0/gcc/ada/libgnat/a-wichun.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wichun.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wichun.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wichun.ads gcc-13.1.0/gcc/ada/libgnat/a-wichun.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wichun.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wichun.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-witeio.adb gcc-13.1.0/gcc/ada/libgnat/a-witeio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-witeio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-witeio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-witeio.ads gcc-13.1.0/gcc/ada/libgnat/a-witeio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-witeio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-witeio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wrstfi.adb gcc-13.1.0/gcc/ada/libgnat/a-wrstfi.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wrstfi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wrstfi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wrstfi.ads gcc-13.1.0/gcc/ada/libgnat/a-wrstfi.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wrstfi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wrstfi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtcoau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtcoau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtcoau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtcoau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtcoau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtcoau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtcoau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtcoau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtcoio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtcoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtcoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtcoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtcstr.adb gcc-13.1.0/gcc/ada/libgnat/a-wtcstr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtcstr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtcstr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtcstr.ads gcc-13.1.0/gcc/ada/libgnat/a-wtcstr.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtcstr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtcstr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtdeau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtdeau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtdeau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtdeau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtdeau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtdeau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtdeau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtdeau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtdeio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtdeio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtdeio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtdeio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtdeio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-wtdeio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtdeio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtdeio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtedit.adb gcc-13.1.0/gcc/ada/libgnat/a-wtedit.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtedit.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtedit.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Text_IO.Editing is
*** 246,253 ****
  
                    else
                       Count := Count * 10
!                                 +  Character'Pos (Picture (Last)) -
!                                    Character'Pos ('0');
                    end if;
  
                    Last := Last + 1;
--- 246,253 ----
  
                    else
                       Count := Count * 10
!                                 + Character'Pos (Picture (Last)) -
!                                   Character'Pos ('0');
                    end if;
  
                    Last := Last + 1;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtedit.ads gcc-13.1.0/gcc/ada/libgnat/a-wtedit.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtedit.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtedit.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtenau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtenau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtenau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtenau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtenau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtenau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtenau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtenau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtenio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtenio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtenio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtenio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtfiau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtfiau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtfiau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtfiau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtfiau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtfiau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtfiau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtfiau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtfiio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtfiio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtfiio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtfiio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtfiio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-wtfiio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtfiio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtfiio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtflau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtflau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtflau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtflau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtflau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtflau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtflau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtflau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtflio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtflio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtflio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtflio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtgeau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtgeau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtgeau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtgeau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtgeau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtgeau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtgeau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtgeau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtinau.adb gcc-13.1.0/gcc/ada/libgnat/a-wtinau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtinau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtinau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtinau.ads gcc-13.1.0/gcc/ada/libgnat/a-wtinau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtinau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtinau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtinio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtinio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtinio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtinio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtinio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-wtinio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtinio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtinio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtmoio.adb gcc-13.1.0/gcc/ada/libgnat/a-wtmoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtmoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtmoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtmoio.ads gcc-13.1.0/gcc/ada/libgnat/a-wtmoio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-wtmoio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtmoio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wtmoio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-wtmoio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wtmoio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wtmoio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wttest.adb gcc-13.1.0/gcc/ada/libgnat/a-wttest.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wttest.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wttest.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-wwboio.adb gcc-13.1.0/gcc/ada/libgnat/a-wwboio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-wwboio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-wwboio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zchhan.adb gcc-13.1.0/gcc/ada/libgnat/a-zchhan.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-zchhan.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zchhan.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zchuni.adb gcc-13.1.0/gcc/ada/libgnat/a-zchuni.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-zchuni.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zchuni.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zchuni.ads gcc-13.1.0/gcc/ada/libgnat/a-zchuni.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-zchuni.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zchuni.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zrstfi.adb gcc-13.1.0/gcc/ada/libgnat/a-zrstfi.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-zrstfi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zrstfi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zrstfi.ads gcc-13.1.0/gcc/ada/libgnat/a-zrstfi.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-zrstfi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zrstfi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztcoau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztcoau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztcoau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztcoau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztcoio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztcoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztcoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztcoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztcstr.adb gcc-13.1.0/gcc/ada/libgnat/a-ztcstr.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztcstr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztcstr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztcstr.ads gcc-13.1.0/gcc/ada/libgnat/a-ztcstr.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztcstr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztcstr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztdeau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztdeau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztdeau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztdeau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztdeau.ads gcc-13.1.0/gcc/ada/libgnat/a-ztdeau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztdeau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztdeau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztdeio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztdeio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztdeio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztdeio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztdeio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-ztdeio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztdeio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztdeio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztedit.adb gcc-13.1.0/gcc/ada/libgnat/a-ztedit.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztedit.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztedit.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztedit.ads gcc-13.1.0/gcc/ada/libgnat/a-ztedit.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztedit.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztedit.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztenau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztenau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztenau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztenau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ada.Wide_Wide_Text_IO.Enume
*** 306,313 ****
                  and then
                    not Is_Letter (To_Character (WC))
                  and then
-                   not Is_Letter (To_Character (WC))
-                 and then
                    (WC /= '_' or else From (Stop - 1) = '_');
  
              Stop := Stop + 1;
--- 306,311 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztenau.ads gcc-13.1.0/gcc/ada/libgnat/a-ztenau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztenau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztenau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztenio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztenio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztenio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztenio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztexio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztexio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztexio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztexio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztexio.ads gcc-13.1.0/gcc/ada/libgnat/a-ztexio.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztexio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztexio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztfiau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztfiau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztfiau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztfiau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztfiau.ads gcc-13.1.0/gcc/ada/libgnat/a-ztfiau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztfiau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztfiau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztfiio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztfiio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztfiio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztfiio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztfiio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-ztfiio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztfiio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztfiio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztflau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztflau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztflau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztflau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztflau.ads gcc-13.1.0/gcc/ada/libgnat/a-ztflau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztflau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztflau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztflio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztflio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztflio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztflio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztgeau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztgeau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztgeau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztgeau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztgeau.ads gcc-13.1.0/gcc/ada/libgnat/a-ztgeau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztgeau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztgeau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztinau.adb gcc-13.1.0/gcc/ada/libgnat/a-ztinau.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztinau.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztinau.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztinau.ads gcc-13.1.0/gcc/ada/libgnat/a-ztinau.ads
*** gcc-12.2.0/gcc/ada/libgnat/a-ztinau.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztinau.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztinio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztinio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztinio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztinio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztinio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-ztinio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztinio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztinio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztmoio.adb gcc-13.1.0/gcc/ada/libgnat/a-ztmoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztmoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztmoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-ztmoio__128.adb gcc-13.1.0/gcc/ada/libgnat/a-ztmoio__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-ztmoio__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-ztmoio__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zttest.adb gcc-13.1.0/gcc/ada/libgnat/a-zttest.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-zttest.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zttest.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/a-zzboio.adb gcc-13.1.0/gcc/ada/libgnat/a-zzboio.adb
*** gcc-12.2.0/gcc/ada/libgnat/a-zzboio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/a-zzboio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-allein.ads gcc-13.1.0/gcc/ada/libgnat/g-allein.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-allein.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-allein.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alleve.adb gcc-13.1.0/gcc/ada/libgnat/g-alleve.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-alleve.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alleve.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Altivec.Low_Level_Vect
*** 3779,3785 ****
           return D;
        end Saturate;
  
!       --  Start of processing for vpksxus
  
     begin
        for J in 0 .. N - 1 loop
--- 3779,3785 ----
           return D;
        end Saturate;
  
!    --  Start of processing for vpksxus
  
     begin
        for J in 0 .. N - 1 loop
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alleve.ads gcc-13.1.0/gcc/ada/libgnat/g-alleve.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-alleve.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alleve.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (Soft Binding Version)                           --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alleve__hard.adb gcc-13.1.0/gcc/ada/libgnat/g-alleve__hard.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-alleve__hard.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alleve__hard.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alleve__hard.ads gcc-13.1.0/gcc/ada/libgnat/g-alleve__hard.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-alleve__hard.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alleve__hard.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Hard Binding Version)                          --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-altcon.adb gcc-13.1.0/gcc/ada/libgnat/g-altcon.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-altcon.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-altcon.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-altcon.ads gcc-13.1.0/gcc/ada/libgnat/g-altcon.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-altcon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-altcon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2009-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-altive.ads gcc-13.1.0/gcc/ada/libgnat/g-altive.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-altive.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-altive.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alveop.adb gcc-13.1.0/gcc/ada/libgnat/g-alveop.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-alveop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alveop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2004-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2004-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alveop.ads gcc-13.1.0/gcc/ada/libgnat/g-alveop.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-alveop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alveop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alvety.ads gcc-13.1.0/gcc/ada/libgnat/g-alvety.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-alvety.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alvety.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-alvevi.ads gcc-13.1.0/gcc/ada/libgnat/g-alvevi.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-alvevi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-alvevi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2005-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-arrspl.adb gcc-13.1.0/gcc/ada/libgnat/g-arrspl.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-arrspl.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-arrspl.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-arrspl.ads gcc-13.1.0/gcc/ada/libgnat/g-arrspl.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-arrspl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-arrspl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-awk.adb gcc-13.1.0/gcc/ada/libgnat/g-awk.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-awk.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-awk.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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- --
*************** package body GNAT.AWK is
*** 1211,1217 ****
        Exceptions.Raise_Exception
          (E,
           '[' & Filename & ':' & Line & "] " & Message);
-       raise Constraint_Error; -- to please GNAT as this is a No_Return proc
     end Raise_With_Info;
  
     ---------------
--- 1211,1216 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-awk.ads gcc-13.1.0/gcc/ada/libgnat/g-awk.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-awk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-awk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-binenv.adb gcc-13.1.0/gcc/ada/libgnat/g-binenv.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-binenv.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-binenv.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-binenv.ads gcc-13.1.0/gcc/ada/libgnat/g-binenv.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-binenv.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-binenv.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-binsea.adb gcc-13.1.0/gcc/ada/libgnat/g-binsea.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-binsea.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/g-binsea.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,123 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                           GNAT.BINARY_SEARCH                             --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --                        Copyright (C) 2022-2023, 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- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body GNAT.Binary_Search is
+ 
+    function Index
+      (First, Last, Start : Index_Type;
+       Element            : Element_Type) return Index_Type'Base is
+    begin
+       if Leftmost then
+          declare
+             function Before
+               (Index : Index_Type; Element : Element_Type) return Boolean
+             is (Before (Get (Index), Element)) with Inline_Always;
+ 
+             function Find is new Binary_Search.Leftmost
+               (Index_Type, Element_Type, Before);
+          begin
+             return Find (First, Last, Start, Element);
+          end;
+ 
+       else
+          declare
+             function Before
+               (Element : Element_Type; Index : Index_Type) return Boolean
+             is (Before (Element, Get (Index))) with Inline_Always;
+ 
+             function Find is new Rightmost (Index_Type, Element_Type, Before);
+          begin
+             return Find (First, Last, Start, Element);
+          end;
+       end if;
+    end Index;
+ 
+    --------------
+    -- Leftmost --
+    --------------
+ 
+    function Leftmost
+      (First, Last, Start : Index_Type;
+       Element            : Element_Type) return Index_Type'Base
+    is
+       L : Index_Type := First;
+       R : Index_Type := Index_Type'Succ (Last);
+       M : Index_Type := Start;
+    begin
+       if First <= Last then
+          loop
+             if Before (M, Element) then
+                L := Index_Type'Succ (M);
+             else
+                R := M;
+             end if;
+ 
+             exit when L >= R;
+ 
+             M := Index_Type'Val
+               (Index_Type'Pos (L) +
+                (Index_Type'Pos (R) - Index_Type'Pos (L)) / 2);
+          end loop;
+       end if;
+ 
+       return L;
+    end Leftmost;
+ 
+    ---------------
+    -- Rightmost --
+    ---------------
+ 
+    function Rightmost
+      (First, Last, Start : Index_Type;
+       Element            : Element_Type) return Index_Type'Base
+    is
+       L : Index_Type := First;
+       R : Index_Type := Index_Type'Succ (Last);
+       M : Index_Type := Start;
+    begin
+       if First > Last then
+          return Last;
+       else
+          loop
+             if Before (Element, M) then
+                R := M;
+             else
+                L := Index_Type'Succ (M);
+             end if;
+ 
+             exit when L >= R;
+ 
+             M := Index_Type'Val
+               (Index_Type'Pos (L) +
+                (Index_Type'Pos (R) - Index_Type'Pos (L)) / 2);
+          end loop;
+       end if;
+ 
+       return Index_Type'Pred (R);
+    end Rightmost;
+ 
+ end GNAT.Binary_Search;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-binsea.ads gcc-13.1.0/gcc/ada/libgnat/g-binsea.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-binsea.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/g-binsea.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,93 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --                           GNAT.BINARY_SEARCH                             --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --                        Copyright (C) 2022-2023, 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- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  Allow binary search of a sorted array (or of an array-like container;
+ --  the generic does not reference the array directly).
+ 
+ package GNAT.Binary_Search is
+ 
+    generic
+       type Index_Type is (<>);
+       type Element_Type (<>) is private;
+       with function Get (Index : Index_Type) return Element_Type;
+       with function Before (Left, Right : Element_Type) return Boolean;
+       Leftmost : Boolean := True;
+    function Index
+      (First, Last, Start : Index_Type;
+       Element            : Element_Type) return Index_Type'Base;
+    --  Search for element in sorted container. Function Before should return
+    --  True when Left and Right are in the container's sort order and not
+    --  equal. Function Get returns the container element indexed by Index;
+    --  Index will be in the range First .. Last. If there is at least one index
+    --  value in the range First .. Last for which Get would return Element,
+    --  then the Leftmost generic parameter indicates whether the least (if
+    --  Leftmost is True) or the greatest (if Leftmost is False) such index
+    --  value is returned. If no such index value exists, then Leftmost
+    --  determines whether to return the greater (if Leftmost is True) or the
+    --  smaller (if Leftmost is False) of the two index values between which
+    --  Element could be inserted. If First > Last (so that a null range is
+    --  being searched), some Index_Type'Base value will be returned.
+    --  Start is the index for the first probe of the binary search. It can
+    --  improve speed of many search operations when user can guess the most
+    --  likely values. If you do not know what value should be used there, use
+    --  (First + Last) / 2.
+ 
+    generic
+       type Index_Type is (<>);
+       type Element_Type (<>) is private;
+       with function Before
+         (Index : Index_Type; Element : Element_Type) return Boolean;
+    function Leftmost
+      (First, Last, Start : Index_Type;
+       Element            : Element_Type) return Index_Type'Base
+      with Pre => First > Last -- Empty array
+                  or else (Start in First .. Last
+                           and then ( -- To prevent overflow in function result
+                                     Index_Type'Base'Last > Last
+                                     or else not Before (Last, Element)));
+    --  Leftmost returns the result described for Index in the case where the
+    --  Leftmost parameter is True, with Index_Type values mapped to
+    --  Element_Type values via Get as needed.
+ 
+    generic
+       type Index_Type is (<>);
+       type Element_Type (<>) is private;
+       with function Before
+         (Element : Element_Type; Index : Index_Type) return Boolean;
+    function Rightmost
+      (First, Last, Start : Index_Type;
+       Element            : Element_Type) return Index_Type'Base
+      with Pre => First > Last -- Empty array
+                  or else (Start in First .. Last
+                           and then ( -- To prevent overflow in function result
+                                     Index_Type'Base'First < First
+                                     or else not Before (Element, First)));
+    --  Rightmost returns the result described for Index in the case where the
+    --  Leftmost parameter is False, with Index_Type values mapped to
+    --  Element_Type values via Get as needed.
+ 
+ end GNAT.Binary_Search;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-brapre.ads gcc-13.1.0/gcc/ada/libgnat/g-brapre.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-brapre.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-brapre.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                         Copyright (C) 2019-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                         Copyright (C) 2019-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-bubsor.adb gcc-13.1.0/gcc/ada/libgnat/g-bubsor.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-bubsor.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-bubsor.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-bubsor.ads gcc-13.1.0/gcc/ada/libgnat/g-bubsor.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-bubsor.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-bubsor.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-busora.adb gcc-13.1.0/gcc/ada/libgnat/g-busora.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-busora.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-busora.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-busora.ads gcc-13.1.0/gcc/ada/libgnat/g-busora.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-busora.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-busora.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-busorg.adb gcc-13.1.0/gcc/ada/libgnat/g-busorg.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-busorg.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-busorg.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-busorg.ads gcc-13.1.0/gcc/ada/libgnat/g-busorg.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-busorg.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-busorg.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-byorma.adb gcc-13.1.0/gcc/ada/libgnat/g-byorma.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-byorma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-byorma.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-byorma.ads gcc-13.1.0/gcc/ada/libgnat/g-byorma.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-byorma.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-byorma.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-bytswa.adb gcc-13.1.0/gcc/ada/libgnat/g-bytswa.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-bytswa.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-bytswa.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-bytswa.ads gcc-13.1.0/gcc/ada/libgnat/g-bytswa.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-bytswa.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-bytswa.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-calend.adb gcc-13.1.0/gcc/ada/libgnat/g-calend.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-calend.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-calend.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-calend.ads gcc-13.1.0/gcc/ada/libgnat/g-calend.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-calend.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-calend.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-casuti.adb gcc-13.1.0/gcc/ada/libgnat/g-casuti.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-casuti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-casuti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-casuti.ads gcc-13.1.0/gcc/ada/libgnat/g-casuti.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-casuti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-casuti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-catiio.adb gcc-13.1.0/gcc/ada/libgnat/g-catiio.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-catiio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-catiio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-catiio.ads gcc-13.1.0/gcc/ada/libgnat/g-catiio.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-catiio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-catiio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cgi.adb gcc-13.1.0/gcc/ada/libgnat/g-cgi.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-cgi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cgi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cgi.ads gcc-13.1.0/gcc/ada/libgnat/g-cgi.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-cgi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cgi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cgicoo.adb gcc-13.1.0/gcc/ada/libgnat/g-cgicoo.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-cgicoo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cgicoo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cgicoo.ads gcc-13.1.0/gcc/ada/libgnat/g-cgicoo.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-cgicoo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cgicoo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cgideb.adb gcc-13.1.0/gcc/ada/libgnat/g-cgideb.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-cgideb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cgideb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cgideb.ads gcc-13.1.0/gcc/ada/libgnat/g-cgideb.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-cgideb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cgideb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-comlin.adb gcc-13.1.0/gcc/ada/libgnat/g-comlin.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-comlin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-comlin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-comlin.ads gcc-13.1.0/gcc/ada/libgnat/g-comlin.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-comlin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-comlin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-comver.adb gcc-13.1.0/gcc/ada/libgnat/g-comver.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-comver.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-comver.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-comver.ads gcc-13.1.0/gcc/ada/libgnat/g-comver.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-comver.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-comver.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cppexc.adb gcc-13.1.0/gcc/ada/libgnat/g-cppexc.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-cppexc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cppexc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-cppexc.ads gcc-13.1.0/gcc/ada/libgnat/g-cppexc.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-cppexc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-cppexc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2013-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-crc32.adb gcc-13.1.0/gcc/ada/libgnat/g-crc32.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-crc32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-crc32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-crc32.ads gcc-13.1.0/gcc/ada/libgnat/g-crc32.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-crc32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-crc32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2004-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2004-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-ctrl_c.adb gcc-13.1.0/gcc/ada/libgnat/g-ctrl_c.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-ctrl_c.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-ctrl_c.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-ctrl_c.ads gcc-13.1.0/gcc/ada/libgnat/g-ctrl_c.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-ctrl_c.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-ctrl_c.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-curexc.ads gcc-13.1.0/gcc/ada/libgnat/g-curexc.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-curexc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-curexc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 1996-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 1996-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-debpoo.adb gcc-13.1.0/gcc/ada/libgnat/g-debpoo.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-debpoo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-debpoo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body GNAT.Debug_Pools is
*** 791,797 ****
  
           declare
              Block_Number : constant Integer_Address :=
!                              Int_Storage /  Memory_Chunk_Size;
              Ptr          : constant Validity_Bits_Ref :=
                               Validy_Htable.Get (Block_Number);
              Offset       : constant Integer_Address :=
--- 791,797 ----
  
           declare
              Block_Number : constant Integer_Address :=
!                              Int_Storage / Memory_Chunk_Size;
              Ptr          : constant Validity_Bits_Ref :=
                               Validy_Htable.Get (Block_Number);
              Offset       : constant Integer_Address :=
*************** package body GNAT.Debug_Pools is
*** 844,850 ****
        procedure Set_Valid (Storage : System.Address; Value : Boolean) is
           Int_Storage  : constant Integer_Address := To_Integer (Storage);
           Block_Number : constant Integer_Address :=
!                           Int_Storage /  Memory_Chunk_Size;
           Ptr          : Validity_Bits_Ref := Validy_Htable.Get (Block_Number);
           Offset       : constant Integer_Address :=
                            (Int_Storage - (Block_Number * Memory_Chunk_Size)) /
--- 844,850 ----
        procedure Set_Valid (Storage : System.Address; Value : Boolean) is
           Int_Storage  : constant Integer_Address := To_Integer (Storage);
           Block_Number : constant Integer_Address :=
!                           Int_Storage / Memory_Chunk_Size;
           Ptr          : Validity_Bits_Ref := Validy_Htable.Get (Block_Number);
           Offset       : constant Integer_Address :=
                            (Int_Storage - (Block_Number * Memory_Chunk_Size)) /
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-debpoo.ads gcc-13.1.0/gcc/ada/libgnat/g-debpoo.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-debpoo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-debpoo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Debug_Pools is
*** 123,129 ****
     --    traces that are output to indicate locations of actions for error
     --    conditions such as bad allocations. If set to zero, the debug pool
     --    will not try to compute backtraces. This is more efficient but gives
!    --    less information on problem locations
     --
     --    Maximum_Logically_Freed_Memory: maximum amount of memory (bytes)
     --    that should be kept before starting to physically deallocate some.
--- 123,130 ----
     --    traces that are output to indicate locations of actions for error
     --    conditions such as bad allocations. If set to zero, the debug pool
     --    will not try to compute backtraces. This is more efficient but gives
!    --    less information on problem locations (and in particular, this
!    --    disables the tracking of the biggest users of memory).
     --
     --    Maximum_Logically_Freed_Memory: maximum amount of memory (bytes)
     --    that should be kept before starting to physically deallocate some.
*************** package GNAT.Debug_Pools is
*** 275,282 ****
        Size   : Positive;
        Report : Report_Type := All_Reports);
     --  Dump information about memory usage.
!    --  Size is the number of the biggest memory users we want to show. Report
!    --  indicates which sorting order is used in the report.
  
     procedure Dump_Stdout
       (Pool   : Debug_Pool;
--- 276,287 ----
        Size   : Positive;
        Report : Report_Type := All_Reports);
     --  Dump information about memory usage.
!    --  Size is the number of the biggest memory users we want to show
!    --  (requires that the Debug_Pool has been configured with Stack_Trace_Depth
!    --  greater than zero). Also, for efficiency reasons, tracebacks with
!    --  a memory allocation below 1_000 bytes are not shown in the "biggest
!    --  memory users" part of the report.
!    --  Report indicates which sorting order is used in the report.
  
     procedure Dump_Stdout
       (Pool   : Debug_Pool;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-debuti.adb gcc-13.1.0/gcc/ada/libgnat/g-debuti.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-debuti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-debuti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-debuti.ads gcc-13.1.0/gcc/ada/libgnat/g-debuti.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-debuti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-debuti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-decstr.adb gcc-13.1.0/gcc/ada/libgnat/g-decstr.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-decstr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-decstr.adb	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
  --                                                                          --
  --                    G N A T . D E C O D E _ S T R I N G                   --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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- --
--- 4,12 ----
  --                                                                          --
  --                    G N A T . D E C O D E _ S T R I N G                   --
  --                                                                          --
! --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-decstr.ads gcc-13.1.0/gcc/ada/libgnat/g-decstr.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-decstr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-decstr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-deutst.ads gcc-13.1.0/gcc/ada/libgnat/g-deutst.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-deutst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-deutst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-diopit.adb gcc-13.1.0/gcc/ada/libgnat/g-diopit.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-diopit.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-diopit.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-diopit.ads gcc-13.1.0/gcc/ada/libgnat/g-diopit.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-diopit.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-diopit.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-dirope.adb gcc-13.1.0/gcc/ada/libgnat/g-dirope.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-dirope.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-dirope.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-dirope.ads gcc-13.1.0/gcc/ada/libgnat/g-dirope.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-dirope.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-dirope.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-dynhta.adb gcc-13.1.0/gcc/ada/libgnat/g-dynhta.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-dynhta.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-dynhta.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-dynhta.ads gcc-13.1.0/gcc/ada/libgnat/g-dynhta.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-dynhta.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-dynhta.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-dyntab.adb gcc-13.1.0/gcc/ada/libgnat/g-dyntab.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-dyntab.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-dyntab.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-dyntab.ads gcc-13.1.0/gcc/ada/libgnat/g-dyntab.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-dyntab.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-dyntab.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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- --
*************** package GNAT.Dynamic_Tables is
*** 82,91 ****
     --  freely (expensive reallocation occurs only at major granularity
     --  chunks controlled by the allocation parameters).
  
-    --  Note: we do not make the table components aliased, since this would
-    --  restrict the use of table for discriminated types. If it is necessary
-    --  to take the access of a table element, use Unrestricted_Access.
- 
     --  WARNING: On HPPA, the virtual addressing approach used in this unit is
     --  incompatible with the indexing instructions on the HPPA. So when using
     --  this unit, compile your application with -mdisable-indexing.
--- 82,87 ----
*************** package GNAT.Dynamic_Tables is
*** 120,128 ****
     --  freely (expensive reallocation occurs only at major granularity
     --  chunks controlled by the allocation parameters).
  
!    --  Note: we do not make the table components aliased, since this would
!    --  restrict the use of table for discriminated types. If it is necessary
!    --  to take the access of a table element, use Unrestricted_Access.
  
     type Table_Type is
       array (Valid_Table_Index_Type range <>) of Table_Component_Type;
--- 116,125 ----
     --  freely (expensive reallocation occurs only at major granularity
     --  chunks controlled by the allocation parameters).
  
!    --  Note: For backward compatibility we do not make the table components
!    --  aliased, since for Ada 95 this would have restricted the use of tables
!    --  for discriminated types. If it is necessary to take the access of a
!    --  table element, use Unrestricted_Access.
  
     type Table_Type is
       array (Valid_Table_Index_Type range <>) of Table_Component_Type;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-eacodu.adb gcc-13.1.0/gcc/ada/libgnat/g-eacodu.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-eacodu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-eacodu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-encstr.adb gcc-13.1.0/gcc/ada/libgnat/g-encstr.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-encstr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-encstr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2007-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2007-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-encstr.ads gcc-13.1.0/gcc/ada/libgnat/g-encstr.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-encstr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-encstr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-enutst.ads gcc-13.1.0/gcc/ada/libgnat/g-enutst.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-enutst.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-enutst.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-excact.adb gcc-13.1.0/gcc/ada/libgnat/g-excact.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-excact.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-excact.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-excact.ads gcc-13.1.0/gcc/ada/libgnat/g-excact.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-excact.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-excact.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package GNAT.Exception_Actions is
*** 71,78 ****
     --  If Action is null, this will in effect cancel all exception actions.
  
     procedure Register_Global_Unhandled_Action (Action : Exception_Action);
!    --  Similar to Register_Global_Action, called on unhandled exceptions
!    --  only.
  
     procedure Register_Id_Action
       (Id     : Exception_Id;
--- 71,77 ----
     --  If Action is null, this will in effect cancel all exception actions.
  
     procedure Register_Global_Unhandled_Action (Action : Exception_Action);
!    --  Similar to Register_Global_Action, called on unhandled exceptions only
  
     procedure Register_Id_Action
       (Id     : Exception_Id;
*************** package GNAT.Exception_Actions is
*** 90,96 ****
     --  an exception that is declared within an unlabeled block.
     --
     --  Note: All non-predefined exceptions will return Null_Id for programs
!    --  compiled with pragma Restriction (No_Exception_Registration)
  
     function Is_Foreign_Exception (E : Exception_Occurrence) return Boolean;
     --  Tell whether the exception occurrence E represents a foreign exception,
--- 89,95 ----
     --  an exception that is declared within an unlabeled block.
     --
     --  Note: All non-predefined exceptions will return Null_Id for programs
!    --  compiled with pragma Restrictions (No_Exception_Registration).
  
     function Is_Foreign_Exception (E : Exception_Occurrence) return Boolean;
     --  Tell whether the exception occurrence E represents a foreign exception,
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-except.ads gcc-13.1.0/gcc/ada/libgnat/g-except.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-except.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-except.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-exctra.adb gcc-13.1.0/gcc/ada/libgnat/g-exctra.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-exctra.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-exctra.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-exctra.ads gcc-13.1.0/gcc/ada/libgnat/g-exctra.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-exctra.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-exctra.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-expect.adb gcc-13.1.0/gcc/ada/libgnat/g-expect.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-expect.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-expect.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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- --
*************** package body GNAT.Expect is
*** 96,102 ****
     procedure Dup2 (Old_Fd, New_Fd : File_Descriptor);
     pragma Import (C, Dup2);
  
!    procedure Kill (Pid : Process_Id; Sig_Num : Integer; Close : Integer);
     pragma Import (C, Kill, "__gnat_kill");
     --  if Close is set to 1 all OS resources used by the Pid must be freed
  
--- 96,102 ----
     procedure Dup2 (Old_Fd, New_Fd : File_Descriptor);
     pragma Import (C, Dup2);
  
!    procedure Kill (Pid : Process_Id; Sig_Num : Integer);
     pragma Import (C, Kill, "__gnat_kill");
     --  if Close is set to 1 all OS resources used by the Pid must be freed
  
*************** package body GNAT.Expect is
*** 222,227 ****
--- 222,231 ----
        Next_Filter    : Filter_List;
  
     begin
+       if Descriptor.Pid > 0 then  --  see comment in Send_Signal
+          Kill (Descriptor.Pid, Sig_Num => 9);
+       end if;
+ 
        Close_Input (Descriptor);
  
        if Descriptor.Error_Fd /= Descriptor.Output_Fd
*************** package body GNAT.Expect is
*** 234,245 ****
           Close (Descriptor.Output_Fd);
        end if;
  
-       --  ??? Should have timeouts for different signals
- 
-       if Descriptor.Pid > 0 then  --  see comment in Send_Signal
-          Kill (Descriptor.Pid, Sig_Num => 9, Close => 0);
-       end if;
- 
        GNAT.OS_Lib.Free (Descriptor.Buffer);
        Descriptor.Buffer_Size := 0;
  
--- 238,243 ----
*************** package body GNAT.Expect is
*** 1349,1355 ****
        --  started; we don't want to kill ourself in that case.
  
        if Descriptor.Pid > 0 then
!          Kill (Descriptor.Pid, Signal, Close => 1);
           --  ??? Need to check process status here
        else
           raise Invalid_Process;
--- 1347,1353 ----
        --  started; we don't want to kill ourself in that case.
  
        if Descriptor.Pid > 0 then
!          Kill (Descriptor.Pid, Signal);
           --  ??? Need to check process status here
        else
           raise Invalid_Process;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-expect.ads gcc-13.1.0/gcc/ada/libgnat/g-expect.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-expect.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-expect.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-exptty.adb gcc-13.1.0/gcc/ada/libgnat/g-exptty.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-exptty.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-exptty.adb	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
  --                                                                          --
  --                      G N A T . E X P E C T . T T Y                       --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2022, 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- --
--- 4,12 ----
  --                                                                          --
  --                      G N A T . E X P E C T . T T Y                       --
  --                                                                          --
! --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-exptty.ads gcc-13.1.0/gcc/ada/libgnat/g-exptty.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-exptty.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-exptty.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-flocon.ads gcc-13.1.0/gcc/ada/libgnat/g-flocon.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-flocon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-flocon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-forstr.adb gcc-13.1.0/gcc/ada/libgnat/g-forstr.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-forstr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-forstr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2014-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Ada.Float_Text_IO;
*** 34,39 ****
--- 34,40 ----
  with Ada.Integer_Text_IO;
  with Ada.Long_Float_Text_IO;
  with Ada.Long_Integer_Text_IO;
+ with Ada.Strings;
  with Ada.Strings.Fixed;
  with Ada.Unchecked_Deallocation;
  
*************** package body GNAT.Formatted_String is
*** 49,56 ****
                     Decimal_Float,               -- %f %F
                     Decimal_Scientific_Float,    -- %e
                     Decimal_Scientific_Float_Up, -- %E
!                    Shortest_Decimal_Float,      -- %g
!                    Shortest_Decimal_Float_Up,   -- %G
                     Char,                        -- %c
                     Str,                         -- %s
                     Pointer                      -- %p
--- 50,57 ----
                     Decimal_Float,               -- %f %F
                     Decimal_Scientific_Float,    -- %e
                     Decimal_Scientific_Float_Up, -- %E
!                    G_Specifier,                 -- %g
!                    G_Specifier_Up,              -- %G
                     Char,                        -- %c
                     Str,                         -- %s
                     Pointer                      -- %p
*************** package body GNAT.Formatted_String is
*** 58,64 ****
  
     type Sign_Kind is (Neg, Zero, Pos);
  
!    subtype Is_Number is F_Kind range Decimal_Int .. Decimal_Float;
  
     type F_Sign is (If_Neg, Forced, Space) with Default_Value => If_Neg;
  
--- 59,65 ----
  
     type Sign_Kind is (Neg, Zero, Pos);
  
!    subtype Is_Number is F_Kind range Decimal_Int .. G_Specifier_Up;
  
     type F_Sign is (If_Neg, Forced, Space) with Default_Value => If_Neg;
  
*************** package body GNAT.Formatted_String is
*** 77,82 ****
--- 78,91 ----
        Value_Needed : Natural range 0 .. 2 := 0;
     end record;
  
+    type Notation is (Decimal, Scientific);
+ 
+    procedure Advance_And_Accumulate_Until_Next_Specifier
+      (Format : Formatted_String);
+    --  Advance Format.D.Index until either the next format specifier is
+    --  encountered, or the end of Format.D.Format is reached. The characters
+    --  advanced over are appended to Format.D.Result.
+ 
     procedure Next_Format
       (Format : Formatted_String;
        F_Spec : out F_Data;
*************** package body GNAT.Formatted_String is
*** 84,95 ****
--- 93,122 ----
     --  Parse the next format specifier, a format specifier has the following
     --  syntax: %[flags][width][.precision][length]specifier
  
+    procedure Determine_Notation_And_Aft
+      (Exponent                : Integer;
+       Precision               : Text_IO.Field;
+       Nota                    : out Notation;
+       Aft                     : out Text_IO.Field);
+    --  Determine whether to use scientific or decimal notation and the value of
+    --  Aft given the exponent and precision of a real number, as described in
+    --  the C language specification, section 7.21.6.1.
+ 
     function Get_Formatted
       (F_Spec : F_Data;
        Value  : String;
        Len    : Positive) return String;
     --  Returns Value formatted given the information in F_Spec
  
+    procedure Increment_Integral_Part
+      (Buffer              : in out String;
+       First_Non_Blank     : in out Positive;
+       Last_Digit_Position : Positive);
+    --  Buffer must contain the textual representation of a number.
+    --  Last_Digit_Position must be the position of the rightmost digit of the
+    --  integral part. Buffer must have at least one padding blank. Increment
+    --  the integral part.
+ 
     procedure Raise_Wrong_Format (Format : Formatted_String) with No_Return;
     --  Raise the Format_Error exception which information about the context
  
*************** package body GNAT.Formatted_String is
*** 122,127 ****
--- 149,166 ----
        Var    : Int) return Formatted_String;
     --  Generic routine which handles all the integer numbers
  
+    procedure Remove_Extraneous_Decimal_Digit
+      (Textual_Rep     : in out String;
+       First_Non_Blank : in out Positive);
+    --  Remove the unique digit to the right of the point in Textual_Rep
+ 
+    procedure Trim_Fractional_Part
+      (Textual_Rep     : in out String;
+       First_Non_Blank : in out Positive);
+    --  Remove trailing zeros from Textual_Rep, which must be the textual
+    --  representation of a real number. If the fractional part only contains
+    --  zeros, also remove the point.
+ 
     ---------
     -- "+" --
     ---------
*************** package body GNAT.Formatted_String is
*** 139,167 ****
     ---------
  
     function "-" (Format : Formatted_String) return String is
-       F : String renames Format.D.Format;
-       J : Natural renames Format.D.Index;
-       R : Unbounded_String := Format.D.Result;
- 
     begin
        --  Make sure we get the remaining character up to the next unhandled
        --  format specifier.
  
!       while (J <= F'Length and then F (J) /= '%')
!         or else (J < F'Length - 1 and then F (J + 1) = '%')
!       loop
!          Append (R, F (J));
! 
!          --  If we have two consecutive %, skip the second one
! 
!          if F (J) = '%' and then J < F'Length - 1 and then F (J + 1) = '%' then
!             J := J + 1;
!          end if;
! 
!          J := J + 1;
!       end loop;
  
!       return To_String (R);
     end "-";
  
     ---------
--- 178,190 ----
     ---------
  
     function "-" (Format : Formatted_String) return String is
     begin
        --  Make sure we get the remaining character up to the next unhandled
        --  format specifier.
  
!       Advance_And_Accumulate_Until_Next_Specifier (Format);
  
!       return To_String (Format.D.Result);
     end "-";
  
     ---------
*************** package body GNAT.Formatted_String is
*** 318,323 ****
--- 341,397 ----
        F.D.Ref_Count := F.D.Ref_Count + 1;
     end Adjust;
  
+    -------------------------------------------------
+    -- Advance_And_Accumulate_Until_Next_Specifier --
+    -------------------------------------------------
+ 
+    procedure Advance_And_Accumulate_Until_Next_Specifier
+      (Format : Formatted_String)
+    is
+    begin
+       loop
+          if Format.D.Index > Format.D.Format'Last then
+             exit;
+          end if;
+ 
+          if Format.D.Format (Format.D.Index) /= '%' then
+             Append (Format.D.Result, Format.D.Format (Format.D.Index));
+             Format.D.Index := Format.D.Index + 1;
+          elsif Format.D.Index + 1 <= Format.D.Format'Last
+            and then Format.D.Format (Format.D.Index + 1) = '%'
+          then
+             Append (Format.D.Result, '%');
+             Format.D.Index := Format.D.Index + 2;
+          else
+             exit;
+          end if;
+       end loop;
+    end Advance_And_Accumulate_Until_Next_Specifier;
+ 
+    --------------------------------
+    -- Determine_Notation_And_Aft --
+    --------------------------------
+ 
+    procedure Determine_Notation_And_Aft
+      (Exponent  : Integer;
+       Precision : Text_IO.Field;
+       Nota      : out Notation;
+       Aft       : out Text_IO.Field)
+    is
+       --  The constants use the same names as those from the C specification
+       --  in order to match the description of the predicate.
+       P : constant Text_IO.Field := (if Precision /= 0 then Precision else 1);
+       X : constant Integer       := Exponent;
+    begin
+       if P > X and X >= -4 then
+          Nota := Decimal;
+          Aft  := P - (X + 1);
+       else
+          Nota := Scientific;
+          Aft  := P - 1;
+       end if;
+    end Determine_Notation_And_Aft;
+ 
     --------------------
     -- Decimal_Format --
     --------------------
*************** package body GNAT.Formatted_String is
*** 445,450 ****
--- 519,553 ----
        end;
     end Get_Formatted;
  
+    -----------------------------
+    -- Increment_Integral_Part --
+    -----------------------------
+ 
+    procedure Increment_Integral_Part
+      (Buffer              : in out String;
+       First_Non_Blank     : in out Positive;
+       Last_Digit_Position : Positive)
+    is
+       Cursor : Natural := Last_Digit_Position;
+    begin
+       while Buffer (Cursor) = '9' loop
+          Buffer (Cursor) := '0';
+          Cursor          := Cursor - 1;
+       end loop;
+ 
+       pragma Assert (Cursor > 0);
+ 
+       if Buffer (Cursor) in '0' .. '8' then
+          Buffer (Cursor) := Character'Succ (Buffer (Cursor));
+       else
+          Ada.Strings.Fixed.Insert
+            (Buffer,
+             Cursor + 1,
+             "1");
+          First_Non_Blank := First_Non_Blank - 1;
+       end if;
+    end Increment_Integral_Part;
+ 
     ----------------
     -- Int_Format --
     ----------------
*************** package body GNAT.Formatted_String is
*** 505,523 ****
  
        --  Got to next %
  
!       while (J <= F'Last and then F (J) /= '%')
!         or else (J < F'Last - 1 and then F (J + 1) = '%')
!       loop
!          Append (Format.D.Result, F (J));
! 
!          --  If we have two consecutive %, skip the second one
! 
!          if F (J) = '%' and then J < F'Last - 1 and then F (J + 1) = '%' then
!             J := J + 1;
!          end if;
! 
!          J := J + 1;
!       end loop;
  
        if J >= F'Last or else F (J) /= '%'  then
           raise Format_Error with "no format specifier found for parameter"
--- 608,614 ----
  
        --  Got to next %
  
!       Advance_And_Accumulate_Until_Next_Specifier (Format);
  
        if J >= F'Last or else F (J) /= '%'  then
           raise Format_Error with "no format specifier found for parameter"
*************** package body GNAT.Formatted_String is
*** 634,641 ****
           when 'f' | 'F' => F_Spec.Kind := Decimal_Float;
           when 'e'       => F_Spec.Kind := Decimal_Scientific_Float;
           when 'E'       => F_Spec.Kind := Decimal_Scientific_Float_Up;
!          when 'g'       => F_Spec.Kind := Shortest_Decimal_Float;
!          when 'G'       => F_Spec.Kind := Shortest_Decimal_Float_Up;
           when 'o'       => F_Spec.Kind := Unsigned_Octal;
           when 'x'       => F_Spec.Kind := Unsigned_Hexadecimal_Int;
           when 'X'       => F_Spec.Kind := Unsigned_Hexadecimal_Int_Up;
--- 725,732 ----
           when 'f' | 'F' => F_Spec.Kind := Decimal_Float;
           when 'e'       => F_Spec.Kind := Decimal_Scientific_Float;
           when 'E'       => F_Spec.Kind := Decimal_Scientific_Float_Up;
!          when 'g'       => F_Spec.Kind := G_Specifier;
!          when 'G'       => F_Spec.Kind := G_Specifier_Up;
           when 'o'       => F_Spec.Kind := Unsigned_Octal;
           when 'x'       => F_Spec.Kind := Unsigned_Hexadecimal_Int;
           when 'X'       => F_Spec.Kind := Unsigned_Hexadecimal_Int_Up;
*************** package body GNAT.Formatted_String is
*** 672,689 ****
       (Format : Formatted_String;
        Var    : Flt) return Formatted_String
     is
        F      : F_Data;
        Buffer : String (1 .. 50);
        S, E   : Positive := 1;
        Start  : Positive;
        Aft    : Text_IO.Field;
  
     begin
        Next_Format (Format, F, Start);
  
!       if F.Value_Needed > 0 then
           Raise_Wrong_Format (Format);
        end if;
  
        if F.Precision = Unset then
           Aft := 6;
--- 763,925 ----
       (Format : Formatted_String;
        Var    : Flt) return Formatted_String
     is
+       procedure Compute_Exponent
+         (Var      : Flt;
+          Valid    : out Boolean;
+          Exponent : out Integer);
+       --  If Var is invalid (for example, a NaN of an inf), set Valid False and
+       --  set Exponent to 0. Otherwise, set Valid True, and store the exponent
+       --  of the scientific notation representation of Var in Exponent. The
+       --  exponent can also be defined as:
+       --  - If Var = 0, 0.
+       --  - Otherwise, Floor (Log_10 (Abs (Var))).
+ 
+       procedure Format_With_Notation
+         (Var : Flt;
+          Nota : Notation;
+          Aft : Text_IO.Field;
+          Buffer : out String);
+       --  Fill buffer with the formatted value of Var following the notation
+       --  specified through Nota.
+ 
+       procedure Handle_G_Specifier
+         (Buffer          : out String;
+          First_Non_Blank : out Positive;
+          Aft             : Text_IO.Field);
+       --  Fill Buffer with the formatted value of Var according to the rules of
+       --  the "%g" specifier. Buffer is right-justified and padded with blanks.
+ 
+       ----------------------
+       -- Compute_Exponent --
+       ----------------------
+ 
+       procedure Compute_Exponent
+         (Var      : Flt;
+          Valid    : out Boolean;
+          Exponent : out Integer)
+       is
+          --  The way the exponent is computed is convoluted. It is not possible
+          --  to use the logarithm in base 10 of Var and floor it, because the
+          --  math functions for this are not available for fixed point types.
+          --  Instead, use the generic Put procedure to produce a scientific
+          --  representation of Var, and parse the exponent part of that back
+          --  into an Integer.
+          Scientific_Rep : String (1 .. 50);
+ 
+          E_Position : Natural;
+       begin
+          Put (Scientific_Rep, Var, Aft => 1, Exp => 1);
+ 
+          E_Position := Ada.Strings.Fixed.Index (Scientific_Rep, "E");
+ 
+          if E_Position = 0 then
+             Valid    := False;
+             Exponent := 0;
+          else
+             Valid    := True;
+             Exponent :=
+               Integer'Value
+                 (Scientific_Rep (E_Position + 1 .. Scientific_Rep'Last));
+          end if;
+       end Compute_Exponent;
+ 
+       --------------------------
+       -- Format_With_Notation --
+       --------------------------
+ 
+       procedure Format_With_Notation
+         (Var : Flt;
+          Nota : Notation;
+          Aft : Text_IO.Field;
+          Buffer : out String)
+       is
+          Exp : constant Text_IO.Field :=
+            (case Nota is when Decimal => 0, when Scientific => 3);
+       begin
+          Put (Buffer, Var, Aft, Exp);
+       end Format_With_Notation;
+ 
+       ------------------------
+       -- Handle_G_Specifier --
+       ------------------------
+ 
+       procedure Handle_G_Specifier
+         (Buffer          : out String;
+          First_Non_Blank : out Positive;
+          Aft             : Text_IO.Field)
+       is
+          --  There is nothing that is directly equivalent to the "%g" specifier
+          --  in the standard Ada functionality provided by Ada.Text_IO. The
+          --  procedure Put will still be used, but significant postprocessing
+          --  will be performed on the output of that procedure.
+ 
+          --  The following code is intended to match the behavior of C's printf
+          --  for %g, as described by paragraph "7.21.6.1 The fprintf function"
+          --  of the C language specification.
+ 
+          --  As explained in the C specification, we're going to have to make a
+          --  choice between decimal notation and scientific notation. One of
+          --  the elements we need in order to make that choice is the value of
+          --  the exponent in the decimal representation of Var. We will store
+          --  that value in Exponent.
+          Exponent : Integer;
+          Valid    : Boolean;
+ 
+          Nota : Notation;
+ 
+          --  The value of the formal Aft comes from the precision specifier in
+          --  the format string. For %g, the precision specifier corresponds to
+          --  the number of significant figures desired, whereas the formal Aft
+          --  in Put corresponds to the number of digits after the point.
+          --  Effective_Aft is what will be passed to Put as Aft in order to
+          --  respect the semantics of %g.
+          Effective_Aft : Text_IO.Field;
+ 
+          Textual_Rep : String (Buffer'Range);
+       begin
+          Compute_Exponent (Var, Valid, Exponent);
+ 
+          Determine_Notation_And_Aft
+            (Exponent, Aft, Nota, Effective_Aft);
+ 
+          Format_With_Notation (Var, Nota, Effective_Aft, Textual_Rep);
+ 
+          First_Non_Blank := Strings.Fixed.Index_Non_Blank (Textual_Rep);
+ 
+          if not Valid then
+             null;
+          elsif Effective_Aft = 0 then
+             --  Special case: it is possible at this point that Effective_Aft
+             --  is zero. But when Put is passed zero through Aft, it still
+             --  outputs one digit after the point. See the reference manual,
+             --  A.10.9.25.
+ 
+             Remove_Extraneous_Decimal_Digit (Textual_Rep, First_Non_Blank);
+          else
+             Trim_Fractional_Part
+               (Textual_Rep, First_Non_Blank);
+          end if;
+ 
+          Buffer := Textual_Rep;
+       end Handle_G_Specifier;
+ 
+       --  Local variables
+ 
        F      : F_Data;
        Buffer : String (1 .. 50);
        S, E   : Positive := 1;
        Start  : Positive;
        Aft    : Text_IO.Field;
  
+    --  Start of processing for P_Flt_Format
+ 
     begin
        Next_Format (Format, F, Start);
  
!       if F.Value_Needed /= Format.D.Stored_Value then
           Raise_Wrong_Format (Format);
        end if;
+       Format.D.Stored_Value := 0;
  
        if F.Precision = Unset then
           Aft := 6;
*************** package body GNAT.Formatted_String is
*** 710,745 ****
                   Characters.Handling.To_Lower (Buffer (S .. E));
              end if;
  
!          when Shortest_Decimal_Float
!             | Shortest_Decimal_Float_Up
           =>
!             --  Without exponent
! 
!             Put (Buffer, Var, Aft, Exp => 0);
!             S := Strings.Fixed.Index_Non_Blank (Buffer);
              E := Buffer'Last;
  
!             --  Check with exponent
! 
!             declare
!                Buffer2 : String (1 .. 50);
!                S2, E2  : Positive;
! 
!             begin
!                Put (Buffer2, Var, Aft, Exp => 3);
!                S2 := Strings.Fixed.Index_Non_Blank (Buffer2);
!                E2 := Buffer2'Last;
! 
!                --  If with exponent it is shorter, use it
! 
!                if (E2 - S2) < (E - S) then
!                   Buffer := Buffer2;
!                   S := S2;
!                   E := E2;
!                end if;
!             end;
! 
!             if F.Kind = Shortest_Decimal_Float then
                 Buffer (S .. E) :=
                   Characters.Handling.To_Lower (Buffer (S .. E));
              end if;
--- 946,958 ----
                   Characters.Handling.To_Lower (Buffer (S .. E));
              end if;
  
!          when G_Specifier
!             | G_Specifier_Up
           =>
!             Handle_G_Specifier (Buffer, S, Aft);
              E := Buffer'Last;
  
!             if F.Kind = G_Specifier then
                 Buffer (S .. E) :=
                   Characters.Handling.To_Lower (Buffer (S .. E));
              end if;
*************** package body GNAT.Formatted_String is
*** 803,808 ****
--- 1016,1022 ----
           Format.D.Index := Start;
           return Format;
        end if;
+       Format.D.Stored_Value := 0;
  
        case F.Kind is
           when Unsigned_Octal =>
*************** package body GNAT.Formatted_String is
*** 981,984 ****
--- 1195,1268 ----
          & Positive'Image (Format.D.Current);
     end Raise_Wrong_Format;
  
+    -------------------------------------
+    -- Remove_Extraneous_Decimal_Digit --
+    -------------------------------------
+ 
+    procedure Remove_Extraneous_Decimal_Digit
+      (Textual_Rep     : in out String;
+       First_Non_Blank : in out Positive)
+    is
+       Point_Position : constant Positive := Ada.Strings.Fixed.Index
+         (Textual_Rep,
+          ".",
+          First_Non_Blank);
+ 
+       Integral_Part_Needs_Increment : constant Boolean :=
+         Textual_Rep (Point_Position + 1) in '5' .. '9';
+    begin
+       Ada.Strings.Fixed.Delete
+         (Textual_Rep,
+          Point_Position,
+          Point_Position + 1,
+          Ada.Strings.Right);
+ 
+       First_Non_Blank := First_Non_Blank + 2;
+ 
+       if Integral_Part_Needs_Increment then
+          Increment_Integral_Part
+            (Textual_Rep,
+             First_Non_Blank,
+             Last_Digit_Position => Point_Position + 1);
+       end if;
+    end Remove_Extraneous_Decimal_Digit;
+ 
+    --------------------------
+    -- Trim_Fractional_Part --
+    --------------------------
+ 
+    procedure Trim_Fractional_Part
+      (Textual_Rep     : in out String;
+       First_Non_Blank : in out Positive)
+    is
+       Cursor : Positive :=
+         Ada.Strings.Fixed.Index (Textual_Rep, ".", First_Non_Blank);
+ 
+       First_To_Trim : Positive;
+       Fractional_Part_Last : Positive;
+    begin
+       while Cursor + 1 <= Textual_Rep'Last
+         and then Textual_Rep (Cursor + 1) in '0' .. '9' loop
+          Cursor := Cursor + 1;
+       end loop;
+ 
+       Fractional_Part_Last := Cursor;
+ 
+       while Textual_Rep (Cursor) = '0' loop
+          Cursor := Cursor - 1;
+       end loop;
+ 
+       if Textual_Rep (Cursor) = '.' then
+          Cursor := Cursor - 1;
+       end if;
+ 
+       First_To_Trim := Cursor + 1;
+ 
+       Ada.Strings.Fixed.Delete
+         (Textual_Rep, First_To_Trim, Fractional_Part_Last, Ada.Strings.Right);
+ 
+       First_Non_Blank :=
+         First_Non_Blank + (Fractional_Part_Last - First_To_Trim + 1);
+    end Trim_Fractional_Part;
+ 
  end GNAT.Formatted_String;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-forstr.ads gcc-13.1.0/gcc/ada/libgnat/g-forstr.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-forstr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-forstr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 70,77 ****
  --    F         Decimal floating point, uppercase
  --    e         Scientific notation (mantissa/exponent), lowercase
  --    E         Scientific notation (mantissa/exponent), uppercase
! --    g         Use the shortest representation: %e or %f
! --    G         Use the shortest representation: %E or %F
  --    c         Character
  --    s         String of characters
  --    p         Pointer address
--- 70,79 ----
  --    F         Decimal floating point, uppercase
  --    e         Scientific notation (mantissa/exponent), lowercase
  --    E         Scientific notation (mantissa/exponent), uppercase
! --    g         Interpret the precision as the number of significant figures,
! --              choose the most adequate of decimal or scientific notation, and
! --              trim trailing zeroes and point. Letters are in lowercase.
! --    G         Same as g, except that letters are in uppercase
  --    c         Character
  --    s         String of characters
  --    p         Pointer address
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-gfmafu.ads gcc-13.1.0/gcc/ada/libgnat/g-gfmafu.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-gfmafu.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/g-gfmafu.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,35 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT RUN-TIME COMPONENTS                         --
+ --                                                                          --
+ --     G N A T . G E N E R I C _ F A S T _ M A T H _ F U N C T I O N S      --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2022-2023, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ with Ada.Numerics.Aux_Generic_Float;
+ 
+ generic package GNAT.Generic_Fast_Math_Functions
+    renames Ada.Numerics.Aux_Generic_Float;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-graphs.adb gcc-13.1.0/gcc/ada/libgnat/g-graphs.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-graphs.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-graphs.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-graphs.ads gcc-13.1.0/gcc/ada/libgnat/g-graphs.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-graphs.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-graphs.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-heasor.adb gcc-13.1.0/gcc/ada/libgnat/g-heasor.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-heasor.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-heasor.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-heasor.ads gcc-13.1.0/gcc/ada/libgnat/g-heasor.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-heasor.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-heasor.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-hesora.adb gcc-13.1.0/gcc/ada/libgnat/g-hesora.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-hesora.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-hesora.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-hesora.ads gcc-13.1.0/gcc/ada/libgnat/g-hesora.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-hesora.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-hesora.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-hesorg.adb gcc-13.1.0/gcc/ada/libgnat/g-hesorg.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-hesorg.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-hesorg.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-hesorg.ads gcc-13.1.0/gcc/ada/libgnat/g-hesorg.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-hesorg.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-hesorg.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-htable.adb gcc-13.1.0/gcc/ada/libgnat/g-htable.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-htable.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-htable.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-htable.ads gcc-13.1.0/gcc/ada/libgnat/g-htable.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-htable.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-htable.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-io.adb gcc-13.1.0/gcc/ada/libgnat/g-io.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-io.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-io.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-io.ads gcc-13.1.0/gcc/ada/libgnat/g-io.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-io.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-io.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-io_aux.adb gcc-13.1.0/gcc/ada/libgnat/g-io_aux.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-io_aux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-io_aux.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-io_aux.ads gcc-13.1.0/gcc/ada/libgnat/g-io_aux.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-io_aux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-io_aux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-lists.adb gcc-13.1.0/gcc/ada/libgnat/g-lists.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-lists.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-lists.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-lists.ads gcc-13.1.0/gcc/ada/libgnat/g-lists.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-lists.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-lists.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-locfil.adb gcc-13.1.0/gcc/ada/libgnat/g-locfil.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-locfil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-locfil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-locfil.ads gcc-13.1.0/gcc/ada/libgnat/g-locfil.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-locfil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-locfil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-mbdira.adb gcc-13.1.0/gcc/ada/libgnat/g-mbdira.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-mbdira.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-mbdira.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-mbdira.ads gcc-13.1.0/gcc/ada/libgnat/g-mbdira.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-mbdira.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-mbdira.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-mbflra.adb gcc-13.1.0/gcc/ada/libgnat/g-mbflra.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-mbflra.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-mbflra.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-mbflra.ads gcc-13.1.0/gcc/ada/libgnat/g-mbflra.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-mbflra.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-mbflra.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-md5.adb gcc-13.1.0/gcc/ada/libgnat/g-md5.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-md5.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-md5.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-md5.ads gcc-13.1.0/gcc/ada/libgnat/g-md5.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-md5.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-md5.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-memdum.adb gcc-13.1.0/gcc/ada/libgnat/g-memdum.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-memdum.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-memdum.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-memdum.ads gcc-13.1.0/gcc/ada/libgnat/g-memdum.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-memdum.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-memdum.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-moreex.adb gcc-13.1.0/gcc/ada/libgnat/g-moreex.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-moreex.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-moreex.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-moreex.ads gcc-13.1.0/gcc/ada/libgnat/g-moreex.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-moreex.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-moreex.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-os_lib.adb gcc-13.1.0/gcc/ada/libgnat/g-os_lib.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-os_lib.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-os_lib.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-os_lib.ads gcc-13.1.0/gcc/ada/libgnat/g-os_lib.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-os_lib.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-os_lib.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-pehage.adb gcc-13.1.0/gcc/ada/libgnat/g-pehage.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-pehage.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-pehage.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-pehage.ads gcc-13.1.0/gcc/ada/libgnat/g-pehage.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-pehage.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-pehage.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-rannum.adb gcc-13.1.0/gcc/ada/libgnat/g-rannum.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-rannum.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-rannum.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-rannum.ads gcc-13.1.0/gcc/ada/libgnat/g-rannum.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-rannum.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-rannum.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-regexp.adb gcc-13.1.0/gcc/ada/libgnat/g-regexp.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-regexp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-regexp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-regexp.ads gcc-13.1.0/gcc/ada/libgnat/g-regexp.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-regexp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-regexp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-regist.adb gcc-13.1.0/gcc/ada/libgnat/g-regist.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-regist.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-regist.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2001-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2001-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-regist.ads gcc-13.1.0/gcc/ada/libgnat/g-regist.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-regist.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-regist.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-regpat.adb gcc-13.1.0/gcc/ada/libgnat/g-regpat.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-regpat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-regpat.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2022, 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- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-regpat.ads gcc-13.1.0/gcc/ada/libgnat/g-regpat.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-regpat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-regpat.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2022, 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- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-rewdat.adb gcc-13.1.0/gcc/ada/libgnat/g-rewdat.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-rewdat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-rewdat.adb	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,11 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-rewdat.ads gcc-13.1.0/gcc/ada/libgnat/g-rewdat.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-rewdat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-rewdat.ads	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 5,11 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2014-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sechas.adb gcc-13.1.0/gcc/ada/libgnat/g-sechas.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sechas.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sechas.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sechas.ads gcc-13.1.0/gcc/ada/libgnat/g-sechas.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sechas.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sechas.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sehamd.adb gcc-13.1.0/gcc/ada/libgnat/g-sehamd.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sehamd.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sehamd.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sehamd.ads gcc-13.1.0/gcc/ada/libgnat/g-sehamd.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sehamd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sehamd.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sehash.adb gcc-13.1.0/gcc/ada/libgnat/g-sehash.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sehash.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sehash.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2002-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sehash.ads gcc-13.1.0/gcc/ada/libgnat/g-sehash.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sehash.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sehash.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2002-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sercom.adb gcc-13.1.0/gcc/ada/libgnat/g-sercom.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sercom.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sercom.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sercom.ads gcc-13.1.0/gcc/ada/libgnat/g-sercom.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sercom.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sercom.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sercom__linux.adb gcc-13.1.0/gcc/ada/libgnat/g-sercom__linux.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sercom__linux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sercom__linux.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sercom__mingw.adb gcc-13.1.0/gcc/ada/libgnat/g-sercom__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sercom__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sercom__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sestin.ads gcc-13.1.0/gcc/ada/libgnat/g-sestin.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sestin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sestin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2004-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                      Copyright (C) 2004-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sets.adb gcc-13.1.0/gcc/ada/libgnat/g-sets.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sets.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sets.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sets.ads gcc-13.1.0/gcc/ada/libgnat/g-sets.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sets.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sets.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                        Copyright (C) 2018-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sha1.adb gcc-13.1.0/gcc/ada/libgnat/g-sha1.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sha1.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sha1.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sha1.ads gcc-13.1.0/gcc/ada/libgnat/g-sha1.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sha1.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sha1.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sha224.ads gcc-13.1.0/gcc/ada/libgnat/g-sha224.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sha224.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sha224.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sha256.ads gcc-13.1.0/gcc/ada/libgnat/g-sha256.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sha256.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sha256.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2022, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2023, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sha384.ads gcc-13.1.0/gcc/ada/libgnat/g-sha384.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sha384.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sha384.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2022, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2023, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sha512.ads gcc-13.1.0/gcc/ada/libgnat/g-sha512.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sha512.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sha512.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2022, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --        Copyright (C) 2009-2023, Free Software Foundation, Inc.           --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-shsh32.adb gcc-13.1.0/gcc/ada/libgnat/g-shsh32.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-shsh32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-shsh32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-shsh32.ads gcc-13.1.0/gcc/ada/libgnat/g-shsh32.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-shsh32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-shsh32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-shsh64.adb gcc-13.1.0/gcc/ada/libgnat/g-shsh64.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-shsh64.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-shsh64.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-shsh64.ads gcc-13.1.0/gcc/ada/libgnat/g-shsh64.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-shsh64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-shsh64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-shshco.adb gcc-13.1.0/gcc/ada/libgnat/g-shshco.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-shshco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-shshco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-shshco.ads gcc-13.1.0/gcc/ada/libgnat/g-shshco.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-shshco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-shshco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-soccon.ads gcc-13.1.0/gcc/ada/libgnat/g-soccon.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-soccon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-soccon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socket.adb gcc-13.1.0/gcc/ada/libgnat/g-socket.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socket.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socket.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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- --
*************** package body GNAT.Sockets is
*** 191,202 ****
         else Value);
     --  Removes dot at the end of error message
  
!    procedure Raise_Host_Error (H_Error : Integer; Name : String);
     --  Raise Host_Error exception with message describing error code (note
     --  hstrerror seems to be obsolete) from h_errno. Name is the name
     --  or address that was being looked up.
  
!    procedure Raise_GAI_Error (RC : C.int; Name : String);
     --  Raise Host_Error with exception message in case of errors in
     --  getaddrinfo and getnameinfo.
  
--- 191,204 ----
         else Value);
     --  Removes dot at the end of error message
  
!    procedure Raise_Host_Error (H_Error : Integer; Name : String)
!    with No_Return;
     --  Raise Host_Error exception with message describing error code (note
     --  hstrerror seems to be obsolete) from h_errno. Name is the name
     --  or address that was being looked up.
  
!    procedure Raise_GAI_Error (RC : C.int; Name : String)
!    with No_Return;
     --  Raise Host_Error with exception message in case of errors in
     --  getaddrinfo and getnameinfo.
  
*************** package body GNAT.Sockets is
*** 1034,1040 ****
  
        R     : C.int;
        Iter  : Addrinfo_Access;
-       Found : Boolean;
  
        function To_Array return Address_Info_Array;
        --  Convert taken from OS addrinfo list A into Address_Info_Array
--- 1036,1041 ----
*************** package body GNAT.Sockets is
*** 1044,1051 ****
        --------------
  
        function To_Array return Address_Info_Array is
-          Result : Address_Info_Array (1 .. 8);
- 
           procedure Unsupported;
           --  Calls Unknown callback if defiend
  
--- 1045,1050 ----
*************** package body GNAT.Sockets is
*** 1064,1069 ****
--- 1063,1071 ----
              end if;
           end Unsupported;
  
+          Found  : Boolean;
+          Result : Address_Info_Array (1 .. 8);
+ 
        --  Start of processing for To_Array
  
        begin
*************** package body GNAT.Sockets is
*** 1085,1092 ****
                 if Result (J).Addr.Family = Family_Unspec then
                    Unsupported;
                 else
                    for M in Modes'Range loop
-                      Found := False;
                       if Modes (M) = Iter.ai_socktype then
                          Result (J).Mode := M;
                          Found := True;
--- 1087,1094 ----
                 if Result (J).Addr.Family = Family_Unspec then
                    Unsupported;
                 else
+                   Found := False;
                    for M in Modes'Range loop
                       if Modes (M) = Iter.ai_socktype then
                          Result (J).Mode := M;
                          Found := True;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socket.ads gcc-13.1.0/gcc/ada/libgnat/g-socket.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socket.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socket.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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- --
*************** private
*** 1593,1599 ****
     Wait_For_A_Full_Reception : constant Request_Flag_Type := 4;
     Send_End_Of_Record        : constant Request_Flag_Type := 8;
  
!    procedure Raise_Socket_Error (Error : Integer);
     --  Raise Socket_Error with an exception message describing the error code
     --  from errno.
  
--- 1593,1599 ----
     Wait_For_A_Full_Reception : constant Request_Flag_Type := 4;
     Send_End_Of_Record        : constant Request_Flag_Type := 8;
  
!    procedure Raise_Socket_Error (Error : Integer) with No_Return;
     --  Raise Socket_Error with an exception message describing the error code
     --  from errno.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socket__dummy.adb gcc-13.1.0/gcc/ada/libgnat/g-socket__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socket__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socket__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socket__dummy.ads gcc-13.1.0/gcc/ada/libgnat/g-socket__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socket__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socket__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socpol.adb gcc-13.1.0/gcc/ada/libgnat/g-socpol.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socpol.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socpol.adb	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
  --                                                                          --
  --                    G N A T . S O C K E T S . P O L L                     --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 4,12 ----
  --                                                                          --
  --                    G N A T . S O C K E T S . P O L L                     --
  --                                                                          --
! --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socpol.ads gcc-13.1.0/gcc/ada/libgnat/g-socpol.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socpol.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socpol.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socpol__dummy.adb gcc-13.1.0/gcc/ada/libgnat/g-socpol__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socpol__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socpol__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                         Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                         Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socpol__dummy.ads gcc-13.1.0/gcc/ada/libgnat/g-socpol__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socpol__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socpol__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                         Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                         Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi.adb gcc-13.1.0/gcc/ada/libgnat/g-socthi.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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- --
*************** package body GNAT.Sockets.Thin is
*** 187,193 ****
           return Res;
        end if;
  
!       declare
           WSet : aliased Fd_Set;
           Now  : aliased Timeval;
  
--- 187,195 ----
           return Res;
        end if;
  
!       pragma Warnings (Off, "unreachable code");
!       declare -- unreachable if Thread_Blocking_IO is statically True
!          pragma Warnings (On, "unreachable code");
           WSet : aliased Fd_Set;
           Now  : aliased Timeval;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi.ads gcc-13.1.0/gcc/ada/libgnat/g-socthi.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi__dummy.adb gcc-13.1.0/gcc/ada/libgnat/g-socthi__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi__dummy.ads gcc-13.1.0/gcc/ada/libgnat/g-socthi__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi__mingw.adb gcc-13.1.0/gcc/ada/libgnat/g-socthi__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi__mingw.ads gcc-13.1.0/gcc/ada/libgnat/g-socthi__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi__vxworks.adb gcc-13.1.0/gcc/ada/libgnat/g-socthi__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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- --
*************** package body GNAT.Sockets.Thin is
*** 190,196 ****
           return Res;
        end if;
  
!       declare
           WSet : aliased Fd_Set;
           Now  : aliased Timeval;
        begin
--- 190,198 ----
           return Res;
        end if;
  
!       pragma Warnings (Off, "unreachable code");
!       declare -- unreachable if Thread_Blocking_IO is statically True
!          pragma Warnings (On, "unreachable code");
           WSet : aliased Fd_Set;
           Now  : aliased Timeval;
        begin
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-socthi__vxworks.ads gcc-13.1.0/gcc/ada/libgnat/g-socthi__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-socthi__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-socthi__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-soliop.ads gcc-13.1.0/gcc/ada/libgnat/g-soliop.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-soliop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-soliop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-soliop__lynxos.ads gcc-13.1.0/gcc/ada/libgnat/g-soliop__lynxos.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-soliop__lynxos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-soliop__lynxos.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-soliop__mingw.ads gcc-13.1.0/gcc/ada/libgnat/g-soliop__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-soliop__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-soliop__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-soliop__qnx.ads gcc-13.1.0/gcc/ada/libgnat/g-soliop__qnx.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-soliop__qnx.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-soliop__qnx.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-soliop__solaris.ads gcc-13.1.0/gcc/ada/libgnat/g-soliop__solaris.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-soliop__solaris.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-soliop__solaris.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sopowa.adb gcc-13.1.0/gcc/ada/libgnat/g-sopowa.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sopowa.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sopowa.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sopowa__mingw.adb gcc-13.1.0/gcc/ada/libgnat/g-sopowa__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sopowa__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sopowa__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sopowa__posix.adb gcc-13.1.0/gcc/ada/libgnat/g-sopowa__posix.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sopowa__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sopowa__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sothco.adb gcc-13.1.0/gcc/ada/libgnat/g-sothco.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sothco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sothco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sothco.ads gcc-13.1.0/gcc/ada/libgnat/g-sothco.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sothco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sothco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sothco__dummy.adb gcc-13.1.0/gcc/ada/libgnat/g-sothco__dummy.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sothco__dummy.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sothco__dummy.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2008-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2008-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sothco__dummy.ads gcc-13.1.0/gcc/ada/libgnat/g-sothco__dummy.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sothco__dummy.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sothco__dummy.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2008-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-souinf.ads gcc-13.1.0/gcc/ada/libgnat/g-souinf.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-souinf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-souinf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 36,42 ****
  --  and logging purposes. For example, an exception handler can print out
  --  the name of the source file in which the exception is handled.
  
! package GNAT.Source_Info is
     pragma Preelaborate;
     --  Note that this unit is Preelaborate, but not Pure, that's because the
     --  functions here such as Line are clearly not pure functions, and normally
--- 36,48 ----
  --  and logging purposes. For example, an exception handler can print out
  --  the name of the source file in which the exception is handled.
  
! package GNAT.Source_Info with
!    SPARK_Mode,
!    Abstract_State =>
!      (Source_Code_Information with
!          External => (Async_Writers, Async_Readers)),
!    Annotate => (GNATprove, Always_Return)
! is
     pragma Preelaborate;
     --  Note that this unit is Preelaborate, but not Pure, that's because the
     --  functions here such as Line are clearly not pure functions, and normally
*************** package GNAT.Source_Info is
*** 47,52 ****
--- 53,60 ----
     --  intrinsics as not Pure, even in Pure units, so no problems arose.
  
     function File return String with
+      Volatile_Function,
+      Global => Source_Code_Information,
       Import, Convention => Intrinsic;
     --  Return the name of the current file, not including the path information.
     --  The result is considered to be a static string constant.
*************** package GNAT.Source_Info is
*** 57,62 ****
--- 65,72 ----
     --  static expression.
  
     function Source_Location return String with
+      Volatile_Function,
+      Global => Source_Code_Information,
       Import, Convention => Intrinsic;
     --  Return a string literal of the form "name:line", where name is the
     --  current source file name without path information, and line is the
*************** package GNAT.Source_Info is
*** 66,71 ****
--- 76,83 ----
     --  string constant.
  
     function Enclosing_Entity return String with
+      Volatile_Function,
+      Global => Source_Code_Information,
       Import, Convention => Intrinsic;
     --  Return the name of the current subprogram, package, task, entry or
     --  protected subprogram. The string is in exactly the form used for the
*************** package GNAT.Source_Info is
*** 80,94 ****
--- 92,112 ----
     --  from within generic templates.
  
     function Compilation_ISO_Date return String with
+      Volatile_Function,
+      Global => Source_Code_Information,
       Import, Convention => Intrinsic;
     --  Returns date of compilation as a static string "yyyy-mm-dd".
  
     function Compilation_Date return String with
+      Volatile_Function,
+      Global => Source_Code_Information,
       Import, Convention => Intrinsic;
     --  Returns date of compilation as a static string "mmm dd yyyy". This is
     --  in local time form, and is exactly compatible with C macro __DATE__.
  
     function Compilation_Time return String with
+      Volatile_Function,
+      Global => Source_Code_Information,
       Import, Convention => Intrinsic;
     --  Returns GMT time of compilation as a static string "hh:mm:ss". This is
     --  in local time form, and is exactly compatible with C macro __TIME__.
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spchge.adb gcc-13.1.0/gcc/ada/libgnat/g-spchge.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-spchge.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spchge.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spchge.ads gcc-13.1.0/gcc/ada/libgnat/g-spchge.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-spchge.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spchge.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-speche.adb gcc-13.1.0/gcc/ada/libgnat/g-speche.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-speche.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-speche.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-speche.ads gcc-13.1.0/gcc/ada/libgnat/g-speche.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-speche.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-speche.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spipat.adb gcc-13.1.0/gcc/ada/libgnat/g-spipat.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-spipat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spipat.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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- --
*************** package body GNAT.Spitbol.Patterns is
*** 3961,3967 ****
  
           --  Any (one character case)
  
!          when PC_Any_CH =>
              if Cursor < Length
                and then Subject (Cursor + 1) = Node.Char
              then
--- 3961,3967 ----
  
           --  Any (one character case)
  
!          when PC_Any_CH | PC_Char =>
              if Cursor < Length
                and then Subject (Cursor + 1) = Node.Char
              then
*************** package body GNAT.Spitbol.Patterns is
*** 4103,4111 ****
              Pop_Region;
              goto Succeed;
  
!          --  Assign on match. This node sets up for the eventual assignment
  
!          when PC_Assign_OnM =>
              Stack (Stack_Base - 1).Node := Node;
              Push (CP_Assign'Access);
              Pop_Region;
--- 4103,4112 ----
              Pop_Region;
              goto Succeed;
  
!          --  Write/assign on match. This node sets up for the eventual write
!          --  or assignment.
  
!          when PC_Assign_OnM | PC_Write_OnM =>
              Stack (Stack_Base - 1).Node := Node;
              Push (CP_Assign'Access);
              Pop_Region;
*************** package body GNAT.Spitbol.Patterns is
*** 4144,4220 ****
              Push (Node);
              goto Succeed;
  
!          --  Break (one character case)
! 
!          when PC_Break_CH =>
!             while Cursor < Length loop
!                if Subject (Cursor + 1) = Node.Char then
!                   goto Succeed;
!                else
!                   Cursor := Cursor + 1;
!                end if;
!             end loop;
! 
!             goto Fail;
! 
!          --  Break (character set case)
! 
!          when PC_Break_CS =>
!             while Cursor < Length loop
!                if Is_In (Subject (Cursor + 1), Node.CS) then
!                   goto Succeed;
!                else
!                   Cursor := Cursor + 1;
!                end if;
!             end loop;
! 
!             goto Fail;
! 
!          --  Break (string function case)
! 
!          when PC_Break_VF => declare
!             U : constant VString := Node.VF.all;
!             S : Big_String_Access;
!             L : Natural;
! 
!          begin
!             Get_String (U, S, L);
! 
!             while Cursor < Length loop
!                if Is_In (Subject (Cursor + 1), S (1 .. L)) then
!                   goto Succeed;
!                else
!                   Cursor := Cursor + 1;
!                end if;
!             end loop;
! 
!             goto Fail;
!          end;
! 
!          --  Break (string pointer case)
! 
!          when PC_Break_VP => declare
!             U : constant VString := Node.VP.all;
!             S : Big_String_Access;
!             L : Natural;
! 
!          begin
!             Get_String (U, S, L);
! 
!             while Cursor < Length loop
!                if Is_In (Subject (Cursor + 1), S (1 .. L)) then
!                   goto Succeed;
!                else
!                   Cursor := Cursor + 1;
!                end if;
!             end loop;
! 
!             goto Fail;
!          end;
! 
!          --  BreakX (one character case)
  
!          when PC_BreakX_CH =>
              while Cursor < Length loop
                 if Subject (Cursor + 1) = Node.Char then
                    goto Succeed;
--- 4145,4153 ----
              Push (Node);
              goto Succeed;
  
!          --  Break & BreakX (one character case)
  
!          when PC_Break_CH | PC_BreakX_CH =>
              while Cursor < Length loop
                 if Subject (Cursor + 1) = Node.Char then
                    goto Succeed;
*************** package body GNAT.Spitbol.Patterns is
*** 4225,4233 ****
  
              goto Fail;
  
!          --  BreakX (character set case)
  
!          when PC_BreakX_CS =>
              while Cursor < Length loop
                 if Is_In (Subject (Cursor + 1), Node.CS) then
                    goto Succeed;
--- 4158,4166 ----
  
              goto Fail;
  
!          --  Break & BreakX (character set case)
  
!          when PC_Break_CS | PC_BreakX_CS =>
              while Cursor < Length loop
                 if Is_In (Subject (Cursor + 1), Node.CS) then
                    goto Succeed;
*************** package body GNAT.Spitbol.Patterns is
*** 4238,4246 ****
  
              goto Fail;
  
!          --  BreakX (string function case)
  
!          when PC_BreakX_VF => declare
              U : constant VString := Node.VF.all;
              S : Big_String_Access;
              L : Natural;
--- 4171,4179 ----
  
              goto Fail;
  
!          --  Break & BreakX (string function case)
  
!          when PC_Break_VF | PC_BreakX_VF => declare
              U : constant VString := Node.VF.all;
              S : Big_String_Access;
              L : Natural;
*************** package body GNAT.Spitbol.Patterns is
*** 4259,4267 ****
              goto Fail;
           end;
  
!          --  BreakX (string pointer case)
  
!          when PC_BreakX_VP => declare
              U : constant VString := Node.VP.all;
              S : Big_String_Access;
              L : Natural;
--- 4192,4200 ----
              goto Fail;
           end;
  
!          --  Break & BreakX (string pointer case)
  
!          when PC_Break_VP | PC_BreakX_VP => declare
              U : constant VString := Node.VP.all;
              S : Big_String_Access;
              L : Natural;
*************** package body GNAT.Spitbol.Patterns is
*** 4288,4305 ****
              Cursor := Cursor + 1;
              goto Succeed;
  
-          --  Character (one character string)
- 
-          when PC_Char =>
-             if Cursor < Length
-               and then Subject (Cursor + 1) = Node.Char
-             then
-                Cursor := Cursor + 1;
-                goto Succeed;
-             else
-                goto Fail;
-             end if;
- 
           --  End of Pattern
  
           when PC_EOP =>
--- 4221,4226 ----
*************** package body GNAT.Spitbol.Patterns is
*** 4941,4955 ****
                 Subject (Stack (Stack_Base - 1).Cursor + 1 .. Cursor));
              Pop_Region;
              goto Succeed;
- 
-          --  Write on match. This node sets up for the eventual write
- 
-          when PC_Write_OnM =>
-             Stack (Stack_Base - 1).Node := Node;
-             Push (CP_Assign'Access);
-             Pop_Region;
-             Assign_OnM := True;
-             goto Succeed;
        end case;
  
        --  We are NOT allowed to fall though this case statement, since every
--- 4862,4867 ----
*************** package body GNAT.Spitbol.Patterns is
*** 5445,5464 ****
                 goto Fail;
              end if;
  
!          --  Arbno_S (simple Arbno initialize). This is the node that
!          --  initiates the match of a simple Arbno structure.
! 
!          when PC_Arbno_S =>
!             Dout (Img (Node) &
!                   "setting up Arbno alternative " & Img (Node.Alt));
!             Push (Node.Alt);
!             Node := Node.Pthen;
!             goto Match;
! 
!          --  Arbno_X (Arbno initialize). This is the node that initiates
!          --  the match of a complex Arbno structure.
  
!          when PC_Arbno_X =>
              Dout (Img (Node) &
                    "setting up Arbno alternative " & Img (Node.Alt));
              Push (Node.Alt);
--- 5357,5366 ----
                 goto Fail;
              end if;
  
!          --  Arbno_S/X (simple and complex Arbno initialize). This is the node
!          --  that initiates the match of a simple or complex Arbno structure.
  
!          when PC_Arbno_S | PC_Arbno_X =>
              Dout (Img (Node) &
                    "setting up Arbno alternative " & Img (Node.Alt));
              Push (Node.Alt);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spipat.ads gcc-13.1.0/gcc/ada/libgnat/g-spipat.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-spipat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spipat.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spitbo.adb gcc-13.1.0/gcc/ada/libgnat/g-spitbo.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-spitbo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spitbo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spitbo.ads gcc-13.1.0/gcc/ada/libgnat/g-spitbo.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-spitbo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spitbo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spogwa.adb gcc-13.1.0/gcc/ada/libgnat/g-spogwa.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-spogwa.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spogwa.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-spogwa.ads gcc-13.1.0/gcc/ada/libgnat/g-spogwa.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-spogwa.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-spogwa.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2020-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sptabo.ads gcc-13.1.0/gcc/ada/libgnat/g-sptabo.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sptabo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sptabo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sptain.ads gcc-13.1.0/gcc/ada/libgnat/g-sptain.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sptain.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sptain.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sptavs.ads gcc-13.1.0/gcc/ada/libgnat/g-sptavs.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sptavs.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sptavs.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sse.ads gcc-13.1.0/gcc/ada/libgnat/g-sse.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-sse.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sse.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-ssvety.ads gcc-13.1.0/gcc/ada/libgnat/g-ssvety.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-ssvety.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-ssvety.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2009-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2009-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-sthcso.adb gcc-13.1.0/gcc/ada/libgnat/g-sthcso.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-sthcso.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-sthcso.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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- --
*************** function C_Socketpair
*** 41,47 ****
--- 41,52 ----
     Protocol : C.int;
     Fds      : not null access Fd_Pair) return C.int
  is
+    --  This use type clause is not required on all platforms
+    --  using this implementation. So we suppress the warning
+    --  for the platforms that already use this type.
+    pragma Warnings (Off, "use clause for type *");
     use type C.char_array;
+    pragma Warnings (On, "use clause for type *");
  
     L_Sock, C_Sock, P_Sock : C.int := Failure;
     --  Listening socket, client socket and peer socket
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-stheme.adb gcc-13.1.0/gcc/ada/libgnat/g-stheme.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-stheme.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-stheme.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-strhas.ads gcc-13.1.0/gcc/ada/libgnat/g-strhas.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-strhas.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-strhas.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2015-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-string.adb gcc-13.1.0/gcc/ada/libgnat/g-string.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-string.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-string.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-string.ads gcc-13.1.0/gcc/ada/libgnat/g-string.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-string.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-string.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-strspl.ads gcc-13.1.0/gcc/ada/libgnat/g-strspl.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-strspl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-strspl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-stseme.adb gcc-13.1.0/gcc/ada/libgnat/g-stseme.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-stseme.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-stseme.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-stsifd__sockets.adb gcc-13.1.0/gcc/ada/libgnat/g-stsifd__sockets.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-stsifd__sockets.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-stsifd__sockets.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-table.adb gcc-13.1.0/gcc/ada/libgnat/g-table.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-table.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-table.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-table.ads gcc-13.1.0/gcc/ada/libgnat/g-table.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-table.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-table.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-tasloc.adb gcc-13.1.0/gcc/ada/libgnat/g-tasloc.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-tasloc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-tasloc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-tasloc.ads gcc-13.1.0/gcc/ada/libgnat/g-tasloc.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-tasloc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-tasloc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-timsta.adb gcc-13.1.0/gcc/ada/libgnat/g-timsta.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-timsta.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-timsta.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-timsta.ads gcc-13.1.0/gcc/ada/libgnat/g-timsta.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-timsta.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-timsta.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2008-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2008-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-traceb.adb gcc-13.1.0/gcc/ada/libgnat/g-traceb.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-traceb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-traceb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                      Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-traceb.ads gcc-13.1.0/gcc/ada/libgnat/g-traceb.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-traceb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-traceb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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- --
***************
*** 38,75 ****
  
  --  The traceback information is in the form of absolute code locations.
  --  These code locations may be converted to corresponding source locations
! --  using the external addr2line utility, or from within GDB.
  
  --  In order to use this facility, in some cases the binder must be invoked
  --  with -E switch (store the backtrace with exception occurrence). Please
  --  refer to gnatbind documentation for more information.
  
! --  To analyze the code locations later using addr2line or gdb, the necessary
! --  units must be compiled with the debugging switch -g in the usual manner.
! --  Note that it is not necessary to compile with -g to use Call_Chain. In
! --  other words, the following sequence of steps can be used:
  
  --     Compile without -g
  --     Run the program, and call Call_Chain
  --     Recompile with -g
! --     Use addr2line to interpret the absolute call locations (note that
! --      addr2line expects addresses in hexadecimal format).
  
  --  This capability is currently supported on the following targets:
  
! --     AiX PowerPC
  --     GNU/Linux x86
  --     GNU/Linux PowerPC
  --     LynxOS x86
! --     LynxOS 178 xcoff PowerPC
! --     LynxOS 178 elf PowerPC
  --     Solaris x86
! --     Solaris sparc
  --     VxWorks ARM
- --     VxWorks7 ARM
  --     VxWorks PowerPC
  --     VxWorks x86
! --     Windows XP
  
  --  Note: see also GNAT.Traceback.Symbolic, a child unit in file g-trasym.ads
  --  providing symbolic trace back capability for a subset of the above targets.
--- 38,73 ----
  
  --  The traceback information is in the form of absolute code locations.
  --  These code locations may be converted to corresponding source locations
! --  using the addr2line or gnatsymbolize utilities, or from within GDB.
  
  --  In order to use this facility, in some cases the binder must be invoked
  --  with -E switch (store the backtrace with exception occurrence). Please
  --  refer to gnatbind documentation for more information.
  
! --  To analyze the code locations later using addr2line, gnatsymbolize or GDB,
! --  the necessary units must be compiled with the debugging switch -g in the
! --  usual manner. Note that it is not necessary to compile with -g to use
! --  Call_Chain. In other words, the following sequence of steps can be used:
  
  --     Compile without -g
  --     Run the program, and call Call_Chain
  --     Recompile with -g
! --     Use addr2line or gnatsymbolize to interpret the absolute call locations
! --     (note that addr2line expects addresses in hexadecimal format).
  
  --  This capability is currently supported on the following targets:
  
! --     AIX PowerPC
  --     GNU/Linux x86
  --     GNU/Linux PowerPC
  --     LynxOS x86
! --     LynxOS-178 PowerPC
  --     Solaris x86
! --     Solaris SPARC
  --     VxWorks ARM
  --     VxWorks PowerPC
  --     VxWorks x86
! --     Windows
  
  --  Note: see also GNAT.Traceback.Symbolic, a child unit in file g-trasym.ads
  --  providing symbolic trace back capability for a subset of the above targets.
*************** package GNAT.Traceback is
*** 101,111 ****
     function Call_Chain
       (Max_Len     : Positive;
        Skip_Frames : Natural := 1) return Tracebacks_Array;
!    --  Returns up to Max_Len tracebacks corresponding to the current call
     --  chain. Result array order is the same as in above procedure Call_Chain
     --  except that Skip_Frames says how many of the most recent calls should be
     --  excluded from the result, starting with this procedure itself: 1 means
     --  exclude the frame for this procedure, 2 means 1 + exclude the frame for
     --  this procedure's caller, ...
  
  end GNAT.Traceback;
--- 99,119 ----
     function Call_Chain
       (Max_Len     : Positive;
        Skip_Frames : Natural := 1) return Tracebacks_Array;
!    --  Return up to Max_Len tracebacks corresponding to the current call
     --  chain. Result array order is the same as in above procedure Call_Chain
     --  except that Skip_Frames says how many of the most recent calls should be
     --  excluded from the result, starting with this procedure itself: 1 means
     --  exclude the frame for this procedure, 2 means 1 + exclude the frame for
     --  this procedure's caller, ...
  
+    function Executable_Load_Address return System.Address;
+    pragma Import (C,
+                   Executable_Load_Address,
+                   "__gnat_get_executable_load_address");
+    --  Return the load address of the executable or System.Null_Address if the
+    --  executable has been loaded at the address computed by the static linker.
+    --  This address is needed to interpret the absolute call locations given by
+    --  the subprograms of this unit when Position-Independent Executables (PIE)
+    --  are used on recent GNU/Linux and Windows versions.
+ 
  end GNAT.Traceback;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-trasym.adb gcc-13.1.0/gcc/ada/libgnat/g-trasym.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-trasym.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-trasym.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-trasym.ads gcc-13.1.0/gcc/ada/libgnat/g-trasym.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-trasym.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-trasym.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-tty.adb gcc-13.1.0/gcc/ada/libgnat/g-tty.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-tty.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-tty.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-tty.ads gcc-13.1.0/gcc/ada/libgnat/g-tty.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-tty.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-tty.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-u3spch.adb gcc-13.1.0/gcc/ada/libgnat/g-u3spch.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-u3spch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-u3spch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-u3spch.ads gcc-13.1.0/gcc/ada/libgnat/g-u3spch.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-u3spch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-u3spch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-utf_32.adb gcc-13.1.0/gcc/ada/libgnat/g-utf_32.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-utf_32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-utf_32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-utf_32.ads gcc-13.1.0/gcc/ada/libgnat/g-utf_32.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-utf_32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-utf_32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-wispch.adb gcc-13.1.0/gcc/ada/libgnat/g-wispch.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-wispch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-wispch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-wispch.ads gcc-13.1.0/gcc/ada/libgnat/g-wispch.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-wispch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-wispch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-wistsp.ads gcc-13.1.0/gcc/ada/libgnat/g-wistsp.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-wistsp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-wistsp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-zspche.adb gcc-13.1.0/gcc/ada/libgnat/g-zspche.adb
*** gcc-12.2.0/gcc/ada/libgnat/g-zspche.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-zspche.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-zspche.ads gcc-13.1.0/gcc/ada/libgnat/g-zspche.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-zspche.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-zspche.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/g-zstspl.ads gcc-13.1.0/gcc/ada/libgnat/g-zstspl.ads
*** gcc-12.2.0/gcc/ada/libgnat/g-zstspl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/g-zstspl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/gnat.ads gcc-13.1.0/gcc/ada/libgnat/gnat.ads
*** gcc-12.2.0/gcc/ada/libgnat/gnat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/gnat.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1992-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-c.adb gcc-13.1.0/gcc/ada/libgnat/i-c.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-c.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-c.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 186,192 ****
       (Item     : char_array;
        Trim_Nul : Boolean := True) return String
     is
!       Count : Natural;
        From  : size_t;
  
     begin
--- 186,192 ----
       (Item     : char_array;
        Trim_Nul : Boolean := True) return String
     is
!       Count : Natural := 0;
        From  : size_t;
  
     begin
*************** is
*** 1177,1183 ****
        To : size_t;
  
     begin
!       if Target'Length < Item'Length then
           raise Constraint_Error;
  
        else
--- 1177,1183 ----
        To : size_t;
  
     begin
!       if Target'Length < Item'Length + (if Append_Nul then 1 else 0) then
           raise Constraint_Error;
  
        else
*************** is
*** 1210,1226 ****
                       Target'First + (Item'Length - 1))'Initialized);
  
           if Append_Nul then
!             if To > Target'Last then
!                raise Constraint_Error;
!             else
!                Target (To) := char32_nul;
!                Count := Item'Length + 1;
!             end if;
! 
           else
              Count := Item'Length;
           end if;
        end if;
     end To_C;
  
  end Interfaces.C;
--- 1210,1223 ----
                       Target'First + (Item'Length - 1))'Initialized);
  
           if Append_Nul then
!             Target (To) := char32_nul;
!             Count := Item'Length + 1;
           else
              Count := Item'Length;
           end if;
        end if;
     end To_C;
+    pragma Annotate (CodePeer, False_Positive, "validity check",
+      "Count is only uninitialized on abnormal return.");
  
  end Interfaces.C;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-c.ads gcc-13.1.0/gcc/ada/libgnat/i-c.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-c.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-c.ads	Wed Apr 26 07:09:39 2023
*************** with System.Parameters;
*** 29,34 ****
--- 29,36 ----
  package Interfaces.C
    with SPARK_Mode, Pure
  is
+    pragma Annotate (GNATprove, Always_Return, C);
+ 
     --  Each of the types declared in Interfaces.C is C-compatible.
  
     --  The types int, short, long, unsigned, ptrdiff_t, size_t, double,
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cexten.ads gcc-13.1.0/gcc/ada/libgnat/i-cexten.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-cexten.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cexten.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cexten__128.ads gcc-13.1.0/gcc/ada/libgnat/i-cexten__128.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-cexten__128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cexten__128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cobol.adb gcc-13.1.0/gcc/ada/libgnat/i-cobol.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-cobol.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cobol.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cobol.ads gcc-13.1.0/gcc/ada/libgnat/i-cobol.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-cobol.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cobol.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                             (ASCII Version)                              --
  --                                                                          --
! --          Copyright (C) 1993-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                             (ASCII Version)                              --
  --                                                                          --
! --          Copyright (C) 1993-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cpoint.adb gcc-13.1.0/gcc/ada/libgnat/i-cpoint.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-cpoint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cpoint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cpoint.ads gcc-13.1.0/gcc/ada/libgnat/i-cpoint.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-cpoint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cpoint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cstrea.adb gcc-13.1.0/gcc/ada/libgnat/i-cstrea.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-cstrea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cstrea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cstrea.ads gcc-13.1.0/gcc/ada/libgnat/i-cstrea.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-cstrea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cstrea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cstrin.adb gcc-13.1.0/gcc/ada/libgnat/i-cstrin.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-cstrin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cstrin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Storage_Elements; use System
*** 34,40 ****
  
  with Ada.Unchecked_Conversion;
  
! package body Interfaces.C.Strings is
  
     --  Note that the type chars_ptr has a pragma No_Strict_Aliasing in the
     --  spec, to prevent any assumptions about aliasing for values of this type,
--- 34,42 ----
  
  with Ada.Unchecked_Conversion;
  
! package body Interfaces.C.Strings with
!   SPARK_Mode => Off
! is
  
     --  Note that the type chars_ptr has a pragma No_Strict_Aliasing in the
     --  spec, to prevent any assumptions about aliasing for values of this type,
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-cstrin.ads gcc-13.1.0/gcc/ada/libgnat/i-cstrin.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-cstrin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-cstrin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1993-2023, 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 --
***************
*** 33,39 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package Interfaces.C.Strings is
     pragma Preelaborate;
  
     type char_array_access is access all char_array;
--- 33,51 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  Preconditions in this unit are meant for analysis only, not for run-time
! --  checking, so that the expected exceptions are raised. This is enforced by
! --  setting the corresponding assertion policy to Ignore. These preconditions
! --  protect from Dereference_Error and Update_Error, but not from
! --  Storage_Error.
! 
! pragma Assertion_Policy (Pre => Ignore);
! 
! package Interfaces.C.Strings with
!   SPARK_Mode     => On,
!   Abstract_State => (C_Memory),
!   Initializes    => (C_Memory)
! is
     pragma Preelaborate;
  
     type char_array_access is access all char_array;
*************** package Interfaces.C.Strings is
*** 53,99 ****
  
     function To_Chars_Ptr
       (Item      : char_array_access;
!       Nul_Check : Boolean := False) return chars_ptr;
  
!    function New_Char_Array (Chars : char_array) return chars_ptr;
  
!    function New_String (Str : String) return chars_ptr;
  
!    procedure Free (Item : in out chars_ptr);
     --  When deallocation is prohibited (eg: cert runtimes) this routine
     --  will raise Program_Error
  
     Dereference_Error : exception;
  
!    function Value (Item : chars_ptr) return char_array;
  
     function Value
       (Item   : chars_ptr;
!       Length : size_t) return char_array;
  
!    function Value (Item : chars_ptr) return String;
  
     function Value
       (Item   : chars_ptr;
!       Length : size_t) return String;
  
!    function Strlen (Item : chars_ptr) return size_t;
  
     procedure Update
       (Item   : chars_ptr;
        Offset : size_t;
        Chars  : char_array;
!       Check  : Boolean := True);
  
     procedure Update
       (Item   : chars_ptr;
        Offset : size_t;
        Str    : String;
!       Check  : Boolean := True);
  
     Update_Error : exception;
  
  private
     type chars_ptr is access all Character;
     for chars_ptr'Size use System.Parameters.ptr_bits;
  
--- 65,149 ----
  
     function To_Chars_Ptr
       (Item      : char_array_access;
!       Nul_Check : Boolean := False) return chars_ptr
!    with
!      SPARK_Mode => Off;
  
!    function New_Char_Array (Chars : char_array) return chars_ptr with
!      Volatile_Function,
!      Post   => New_Char_Array'Result /= Null_Ptr,
!      Global => (Input => C_Memory);
  
!    function New_String (Str : String) return chars_ptr with
!      Volatile_Function,
!      Post   => New_String'Result /= Null_Ptr,
!      Global => (Input => C_Memory);
  
!    procedure Free (Item : in out chars_ptr) with
!      SPARK_Mode => Off;
     --  When deallocation is prohibited (eg: cert runtimes) this routine
     --  will raise Program_Error
  
     Dereference_Error : exception;
  
!    function Value (Item : chars_ptr) return char_array with
!      Pre    => Item /= Null_Ptr,
!      Global => (Input => C_Memory);
  
     function Value
       (Item   : chars_ptr;
!       Length : size_t) return char_array
!    with
!      Pre    => Item /= Null_Ptr,
!      Global => (Input => C_Memory);
  
!    function Value (Item : chars_ptr) return String with
!      Pre    => Item /= Null_Ptr,
!      Global => (Input => C_Memory);
  
     function Value
       (Item   : chars_ptr;
!       Length : size_t) return String
!    with
!      Pre    => Item /= Null_Ptr,
!      Global => (Input => C_Memory);
  
!    function Strlen (Item : chars_ptr) return size_t with
!      Pre    => Item /= Null_Ptr,
!      Global => (Input => C_Memory);
  
     procedure Update
       (Item   : chars_ptr;
        Offset : size_t;
        Chars  : char_array;
!       Check  : Boolean := True)
!    with
!      Pre    =>
!        Item /= Null_Ptr
!          and then
!       (if Check then
!          Strlen (Item) <= size_t'Last - Offset
!            and then Strlen (Item) + Offset <= Chars'Length),
!      Global => (In_Out => C_Memory);
  
     procedure Update
       (Item   : chars_ptr;
        Offset : size_t;
        Str    : String;
!       Check  : Boolean := True)
!    with
!      Pre    =>
!        Item /= Null_Ptr
!          and then
!       (if Check then
!          Strlen (Item) <= size_t'Last - Offset
!            and then Strlen (Item) + Offset <= Str'Length),
!      Global => (In_Out => C_Memory);
  
     Update_Error : exception;
  
  private
+    pragma SPARK_Mode (Off);
     type chars_ptr is access all Character;
     for chars_ptr'Size use System.Parameters.ptr_bits;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-fortra.adb gcc-13.1.0/gcc/ada/libgnat/i-fortra.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-fortra.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-fortra.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-pacdec.adb gcc-13.1.0/gcc/ada/libgnat/i-pacdec.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-pacdec.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-pacdec.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-pacdec.ads gcc-13.1.0/gcc/ada/libgnat/i-pacdec.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-pacdec.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-pacdec.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 S p e c                                  --
  --            (Version for IBM Mainframe Packed Decimal Format)             --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-vxwoio.adb gcc-13.1.0/gcc/ada/libgnat/i-vxwoio.adb
*** gcc-12.2.0/gcc/ada/libgnat/i-vxwoio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-vxwoio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-vxwoio.ads gcc-13.1.0/gcc/ada/libgnat/i-vxwoio.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-vxwoio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-vxwoio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-vxwork.ads gcc-13.1.0/gcc/ada/libgnat/i-vxwork.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-vxwork.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-vxwork.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/i-vxwork__x86.ads gcc-13.1.0/gcc/ada/libgnat/i-vxwork__x86.ads
*** gcc-12.2.0/gcc/ada/libgnat/i-vxwork__x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/i-vxwork__x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                   S p e c                                --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/interfac.ads gcc-13.1.0/gcc/ada/libgnat/interfac.ads
*** gcc-12.2.0/gcc/ada/libgnat/interfac.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/interfac.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, 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 --
***************
*** 38,43 ****
--- 38,44 ----
  package Interfaces is
     pragma No_Elaboration_Code_All;
     pragma Pure;
+    pragma Annotate (GNATprove, Always_Return, Interfaces);
  
     --  All identifiers in this unit are implementation defined
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/interfac__2020.ads gcc-13.1.0/gcc/ada/libgnat/interfac__2020.ads
*** gcc-12.2.0/gcc/ada/libgnat/interfac__2020.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/interfac__2020.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, 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 --
***************
*** 38,43 ****
--- 38,44 ----
  package Interfaces is
     pragma No_Elaboration_Code_All;
     pragma Pure;
+    pragma Annotate (GNATprove, Always_Return, Interfaces);
  
     --  All identifiers in this unit are implementation defined
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/memtrack.adb gcc-13.1.0/gcc/ada/libgnat/memtrack.adb
*** gcc-12.2.0/gcc/ada/libgnat/memtrack.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/memtrack.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-addima.adb gcc-13.1.0/gcc/ada/libgnat/s-addima.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-addima.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-addima.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-addima.ads gcc-13.1.0/gcc/ada/libgnat/s-addima.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-addima.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-addima.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-addope.adb gcc-13.1.0/gcc/ada/libgnat/s-addope.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-addope.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-addope.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-addope.ads gcc-13.1.0/gcc/ada/libgnat/s-addope.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-addope.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-addope.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aoinar.adb gcc-13.1.0/gcc/ada/libgnat/s-aoinar.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-aoinar.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aoinar.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aoinar.ads gcc-13.1.0/gcc/ada/libgnat/s-aoinar.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-aoinar.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aoinar.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aomoar.adb gcc-13.1.0/gcc/ada/libgnat/s-aomoar.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-aomoar.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aomoar.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aomoar.ads gcc-13.1.0/gcc/ada/libgnat/s-aomoar.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-aomoar.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aomoar.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aotase.adb gcc-13.1.0/gcc/ada/libgnat/s-aotase.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-aotase.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aotase.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aotase.ads gcc-13.1.0/gcc/ada/libgnat/s-aotase.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-aotase.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aotase.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aridou.adb gcc-13.1.0/gcc/ada/libgnat/s-aridou.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-aridou.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aridou.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 30,35 ****
--- 30,36 ----
  ------------------------------------------------------------------------------
  
  with Ada.Unchecked_Conversion;
+ with System.SPARK.Cut_Operations; use System.SPARK.Cut_Operations;
  
  package body System.Arith_Double
    with SPARK_Mode
*************** is
*** 125,131 ****
       Pre => B /= 0;
     --  Length doubling remainder
  
!    function Big_2xx (N : Natural) return Big_Integer is
       (Big (Double_Uns'(2 ** N)))
     with
       Ghost,
--- 126,132 ----
       Pre => B /= 0;
     --  Length doubling remainder
  
!    function Big_2xx (N : Natural) return Big_Positive is
       (Big (Double_Uns'(2 ** N)))
     with
       Ghost,
*************** is
*** 133,145 ****
       Post => Big_2xx'Result > 0;
     --  2**N as a big integer
  
!    function Big3 (X1, X2, X3 : Single_Uns) return Big_Integer is
       (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (X1))
                      + Big_2xxSingle * Big (Double_Uns (X2))
                                      + Big (Double_Uns (X3)))
     with Ghost;
     --  X1&X2&X3 as a big integer
  
     function Le3 (X1, X2, X3, Y1, Y2, Y3 : Single_Uns) return Boolean
     with
       Post => Le3'Result = (Big3 (X1, X2, X3) <= Big3 (Y1, Y2, Y3));
--- 134,153 ----
       Post => Big_2xx'Result > 0;
     --  2**N as a big integer
  
!    function Big3 (X1, X2, X3 : Single_Uns) return Big_Natural is
       (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (X1))
                      + Big_2xxSingle * Big (Double_Uns (X2))
                                      + Big (Double_Uns (X3)))
     with Ghost;
     --  X1&X2&X3 as a big integer
  
+    function Big3 (X1, X2, X3 : Big_Integer) return Big_Integer is
+      (Big_2xxSingle * Big_2xxSingle * X1
+                     + Big_2xxSingle * X2
+                                     + X3)
+    with Ghost;
+    --  Version of Big3 on big integers
+ 
     function Le3 (X1, X2, X3, Y1, Y2, Y3 : Single_Uns) return Boolean
     with
       Post => Le3'Result = (Big3 (X1, X2, X3) <= Big3 (Y1, Y2, Y3));
*************** is
*** 161,167 ****
  
     function To_Neg_Int (A : Double_Uns) return Double_Int
     with
!      Annotate => (GNATprove, Terminating),
       Pre      => In_Double_Int_Range (-Big (A)),
       Post     => Big (To_Neg_Int'Result) = -Big (A);
     --  Convert to negative integer equivalent. If the input is in the range
--- 169,175 ----
  
     function To_Neg_Int (A : Double_Uns) return Double_Int
     with
!      Annotate => (GNATprove, Always_Return),
       Pre      => In_Double_Int_Range (-Big (A)),
       Post     => Big (To_Neg_Int'Result) = -Big (A);
     --  Convert to negative integer equivalent. If the input is in the range
*************** is
*** 171,177 ****
  
     function To_Pos_Int (A : Double_Uns) return Double_Int
     with
!      Annotate => (GNATprove, Terminating),
       Pre      => In_Double_Int_Range (Big (A)),
       Post     => Big (To_Pos_Int'Result) = Big (A);
     --  Convert to positive integer equivalent. If the input is in the range
--- 179,185 ----
  
     function To_Pos_Int (A : Double_Uns) return Double_Int
     with
!      Annotate => (GNATprove, Always_Return),
       Pre      => In_Double_Int_Range (Big (A)),
       Post     => Big (To_Pos_Int'Result) = Big (A);
     --  Convert to positive integer equivalent. If the input is in the range
*************** is
*** 208,226 ****
       Ghost,
       Post => abs (X * Y) = abs X * abs Y;
  
!    procedure Lemma_Mult_Non_Negative (X, Y : Big_Integer)
!    with
!      Ghost,
!      Pre  => (X >= Big_0 and then Y >= Big_0)
!        or else (X <= Big_0 and then Y <= Big_0),
!      Post => X * Y >= Big_0;
! 
!    procedure Lemma_Mult_Non_Positive (X, Y : Big_Integer)
     with
       Ghost,
!      Pre  => (X <= Big_0 and then Y >= Big_0)
!        or else (X >= Big_0 and then Y <= Big_0),
!      Post => X * Y <= Big_0;
  
     procedure Lemma_Abs_Rem_Commutation (X, Y : Big_Integer)
     with
--- 216,227 ----
       Ghost,
       Post => abs (X * Y) = abs X * abs Y;
  
!    procedure Lemma_Abs_Range (X : Big_Integer)
     with
       Ghost,
!      Pre  => In_Double_Int_Range (X),
!      Post => abs (X) <= Big_2xxDouble_Minus_1
!        and then In_Double_Int_Range (-abs (X));
  
     procedure Lemma_Abs_Rem_Commutation (X, Y : Big_Integer)
     with
*************** is
*** 240,251 ****
--- 241,269 ----
       Pre  => X /= Double_Uns'Last,
       Post => Big (X + Double_Uns'(1)) = Big (X) + 1;
  
+    procedure Lemma_Big_Of_Double_Uns (X : Double_Uns)
+    with
+      Ghost,
+      Post => Big (X) < Big_2xxDouble;
+ 
+    procedure Lemma_Big_Of_Double_Uns_Of_Single_Uns (X : Single_Uns)
+    with
+      Ghost,
+      Post => Big (Double_Uns (X)) >= 0
+        and then Big (Double_Uns (X)) < Big_2xxSingle;
+ 
     procedure Lemma_Bounded_Powers_Of_2_Increasing (M, N : Natural)
     with
       Ghost,
       Pre  => M < N and then N < Double_Size,
       Post => Double_Uns'(2)**M < Double_Uns'(2)**N;
  
+    procedure Lemma_Concat_Definition (X, Y : Single_Uns)
+    with
+      Ghost,
+      Post => Big (X & Y) = Big_2xxSingle * Big (Double_Uns (X))
+                                          + Big (Double_Uns (Y));
+ 
     procedure Lemma_Deep_Mult_Commutation
       (Factor : Big_Integer;
        X, Y   : Single_Uns)
*************** is
*** 289,294 ****
--- 307,317 ----
       Pre  => A * S = B * S + R and then S /= 0,
       Post => A = B + R / S;
  
+    procedure Lemma_Double_Big_2xxSingle
+    with
+      Ghost,
+      Post => Big_2xxSingle * Big_2xxSingle = Big_2xxDouble;
+ 
     procedure Lemma_Double_Shift (X : Double_Uns; S, S1 : Double_Uns)
     with
       Ghost,
*************** is
*** 309,314 ****
--- 332,351 ----
       Pre  => S <= Double_Size - S1,
       Post => Shift_Left (Shift_Left (X, S), S1) = Shift_Left (X, S + S1);
  
+    procedure Lemma_Double_Shift_Left (X : Double_Uns; S, S1 : Double_Uns)
+    with
+      Ghost,
+      Pre  => S <= Double_Uns (Double_Size)
+        and then S1 <= Double_Uns (Double_Size),
+      Post => Shift_Left (Shift_Left (X, Natural (S)), Natural (S1)) =
+              Shift_Left (X, Natural (S + S1));
+ 
+    procedure Lemma_Double_Shift_Left (X : Double_Uns; S, S1 : Natural)
+    with
+      Ghost,
+      Pre  => S <= Double_Size - S1,
+      Post => Shift_Left (Shift_Left (X, S), S1) = Shift_Left (X, S + S1);
+ 
     procedure Lemma_Double_Shift_Right (X : Double_Uns; S, S1 : Double_Uns)
     with
       Ghost,
*************** is
*** 419,424 ****
--- 456,488 ----
       Ghost,
       Post => X * (Y + Z) = X * Y + X * Z;
  
+    procedure Lemma_Mult_Div (A, B : Big_Integer)
+    with
+      Ghost,
+      Pre  => B /= 0,
+      Post => A * B / B = A;
+ 
+    procedure Lemma_Mult_Non_Negative (X, Y : Big_Integer)
+    with
+      Ghost,
+      Pre  => (X >= 0 and then Y >= 0)
+        or else (X <= 0 and then Y <= 0),
+      Post => X * Y >= 0;
+ 
+    procedure Lemma_Mult_Non_Positive (X, Y : Big_Integer)
+    with
+      Ghost,
+      Pre  => (X <= Big_0 and then Y >= Big_0)
+        or else (X >= Big_0 and then Y <= Big_0),
+      Post => X * Y <= Big_0;
+ 
+    procedure Lemma_Mult_Positive (X, Y : Big_Integer)
+    with
+      Ghost,
+      Pre  => (X > Big_0 and then Y > Big_0)
+        or else (X < Big_0 and then Y < Big_0),
+      Post => X * Y > Big_0;
+ 
     procedure Lemma_Neg_Div (X, Y : Big_Integer)
     with
       Ghost,
*************** is
*** 436,441 ****
--- 500,511 ----
       Post => not In_Double_Int_Range (Big_2xxDouble)
         and then not In_Double_Int_Range (-Big_2xxDouble);
  
+    procedure Lemma_Powers (A : Big_Natural; B, C : Natural)
+    with
+      Ghost,
+      Pre  => B <= Natural'Last - C,
+      Post => A**B * A**C = A**(B + C);
+ 
     procedure Lemma_Powers_Of_2 (M, N : Natural)
     with
       Ghost,
*************** is
*** 494,499 ****
--- 564,576 ----
       Pre  => A = B * Q + R and then R < B,
       Post => Q = A / B and then R = A rem B;
  
+    procedure Lemma_Shift_Left (X : Double_Uns; Shift : Natural)
+    with
+      Ghost,
+      Pre  => Shift < Double_Size
+        and then Big (X) * Big_2xx (Shift) < Big_2xxDouble,
+      Post => Big (Shift_Left (X, Shift)) = Big (X) * Big_2xx (Shift);
+ 
     procedure Lemma_Shift_Right (X : Double_Uns; Shift : Natural)
     with
       Ghost,
*************** is
*** 549,556 ****
--- 626,636 ----
     procedure Inline_Le3 (X1, X2, X3, Y1, Y2, Y3 : Single_Uns) is null;
     procedure Lemma_Abs_Commutation (X : Double_Int) is null;
     procedure Lemma_Abs_Mult_Commutation (X, Y : Big_Integer) is null;
+    procedure Lemma_Abs_Range (X : Big_Integer) is null;
     procedure Lemma_Add_Commutation (X : Double_Uns; Y : Single_Uns) is null;
     procedure Lemma_Add_One (X : Double_Uns) is null;
+    procedure Lemma_Big_Of_Double_Uns (X : Double_Uns) is null;
+    procedure Lemma_Big_Of_Double_Uns_Of_Single_Uns (X : Single_Uns) is null;
     procedure Lemma_Bounded_Powers_Of_2_Increasing (M, N : Natural) is null;
     procedure Lemma_Deep_Mult_Commutation
       (Factor : Big_Integer;
*************** is
*** 565,573 ****
     is null;
     procedure Lemma_Div_Ge (X, Y, Z : Big_Integer) is null;
     procedure Lemma_Div_Lt (X, Y, Z : Big_Natural) is null;
!    procedure Lemma_Div_Eq (A, B, S, R : Big_Integer) is null;
     procedure Lemma_Double_Shift (X : Double_Uns; S, S1 : Double_Uns) is null;
     procedure Lemma_Double_Shift (X : Single_Uns; S, S1 : Natural) is null;
     procedure Lemma_Double_Shift_Right (X : Double_Uns; S, S1 : Double_Uns)
     is null;
     procedure Lemma_Ge_Commutation (A, B : Double_Uns) is null;
--- 645,655 ----
     is null;
     procedure Lemma_Div_Ge (X, Y, Z : Big_Integer) is null;
     procedure Lemma_Div_Lt (X, Y, Z : Big_Natural) is null;
!    procedure Lemma_Double_Big_2xxSingle is null;
     procedure Lemma_Double_Shift (X : Double_Uns; S, S1 : Double_Uns) is null;
     procedure Lemma_Double_Shift (X : Single_Uns; S, S1 : Natural) is null;
+    procedure Lemma_Double_Shift_Left (X : Double_Uns; S, S1 : Double_Uns)
+    is null;
     procedure Lemma_Double_Shift_Right (X : Double_Uns; S, S1 : Double_Uns)
     is null;
     procedure Lemma_Ge_Commutation (A, B : Double_Uns) is null;
*************** is
*** 583,590 ****
--- 665,674 ----
     procedure Lemma_Mult_Distribution (X, Y, Z : Big_Integer) is null;
     procedure Lemma_Mult_Non_Negative (X, Y : Big_Integer) is null;
     procedure Lemma_Mult_Non_Positive (X, Y : Big_Integer) is null;
+    procedure Lemma_Mult_Positive (X, Y : Big_Integer) is null;
     procedure Lemma_Neg_Rem (X, Y : Big_Integer) is null;
     procedure Lemma_Not_In_Range_Big2xx64 is null;
+    procedure Lemma_Powers (A : Big_Natural; B, C : Natural) is null;
     procedure Lemma_Rem_Commutation (X, Y : Double_Uns) is null;
     procedure Lemma_Rem_Is_Ident (X, Y : Big_Integer) is null;
     procedure Lemma_Rem_Sign (X, Y : Big_Integer) is null;
*************** is
*** 820,825 ****
--- 904,926 ----
          Post => abs Big_Q = Big (Qu);
        --  Proves correctness of the rounding of the unsigned quotient
  
+       procedure Prove_Sign_Quotient
+       with
+         Ghost,
+         Pre  => Mult /= 0
+           and then Quot = Big (X) / (Big (Y) * Big (Z))
+           and then Big_R = Big (X) rem (Big (Y) * Big (Z))
+           and then Big_Q =
+             (if Round then
+                Round_Quotient (Big (X), Big (Y) * Big (Z), Quot, Big_R)
+              else Quot),
+         Post =>
+           (if X >= 0 then
+              (if Den_Pos then Big_Q >= 0 else Big_Q <= 0)
+            else
+              (if Den_Pos then Big_Q <= 0 else Big_Q >= 0));
+       --  Proves the correct sign of the signed quotient Big_Q
+ 
        procedure Prove_Signs
        with
          Ghost,
*************** is
*** 836,842 ****
            and then
              Q = (if (X >= 0) = Den_Pos then To_Int (Qu) else To_Int (-Qu))
            and then not (X = Double_Int'First and then Big (Y) * Big (Z) = -1),
!         Post => Big (R) = Big_R and then Big (Q) = Big_Q;
        --  Proves final signs match the intended result after the unsigned
        --  division is done.
  
--- 937,949 ----
            and then
              Q = (if (X >= 0) = Den_Pos then To_Int (Qu) else To_Int (-Qu))
            and then not (X = Double_Int'First and then Big (Y) * Big (Z) = -1),
!         Post => Big (R) = Big (X) rem (Big (Y) * Big (Z))
!           and then
!             (if Round then
!                Big (Q) = Round_Quotient (Big (X), Big (Y) * Big (Z),
!                                          Big (X) / (Big (Y) * Big (Z)),
!                                          Big (R))
!              else Big (Q) = Big (X) / (Big (Y) * Big (Z)));
        --  Proves final signs match the intended result after the unsigned
        --  division is done.
  
*************** is
*** 847,852 ****
--- 954,960 ----
        procedure Prove_Overflow_Case is null;
        procedure Prove_Quotient_Zero is null;
        procedure Prove_Round_To_One is null;
+       procedure Prove_Sign_Quotient is null;
  
        -------------------------
        -- Prove_Rounding_Case --
*************** is
*** 924,936 ****
--- 1032,1055 ----
              else
                 Q := 0;
  
+                pragma Assert (Double_Uns'(Yhi * Zhi) >= Double_Uns (Yhi));
+                pragma Assert (Double_Uns'(Yhi * Zhi) >= Double_Uns (Zhi));
                 pragma Assert (Big (Double_Uns'(Yhi * Zhi)) >= 1);
                 if Yhi > 1 or else Zhi > 1 then
                    pragma Assert (Big (Double_Uns'(Yhi * Zhi)) > 1);
+                   pragma Assert (if X = Double_Int'First and then Round then
+                                     Mult > Big_2xxDouble);
                 elsif Zlo > 0 then
                    pragma Assert (Big (Double_Uns'(Yhi * Zlo)) > 0);
+                   pragma Assert (if X = Double_Int'First and then Round then
+                                     Mult > Big_2xxDouble);
                 elsif Ylo > 0 then
+                   pragma Assert (Double_Uns'(Ylo * Zhi) > 0);
                    pragma Assert (Big (Double_Uns'(Ylo * Zhi)) > 0);
+                   pragma Assert (if X = Double_Int'First and then Round then
+                                     Mult > Big_2xxDouble);
+                else
+                   pragma Assert (not (X = Double_Int'First and then Round));
                 end if;
                 Prove_Quotient_Zero;
              end if;
*************** is
*** 938,947 ****
--- 1057,1070 ----
              return;
           else
              T2 := Yhi * Zlo;
+             pragma Assert (Big (T2) = Big (Double_Uns'(Yhi * Zlo)));
+             pragma Assert (Big_0 = Big (Double_Uns'(Ylo * Zhi)));
           end if;
  
        else
           T2 := Ylo * Zhi;
+          pragma Assert (Big (T2) = Big (Double_Uns'(Ylo * Zhi)));
+          pragma Assert (Big_0 = Big (Double_Uns'(Yhi * Zlo)));
        end if;
  
        T1 := Ylo * Zlo;
*************** is
*** 970,975 ****
--- 1093,1099 ----
        Lemma_Mult_Distribution (Big_2xxSingle,
                                 Big (Double_Uns (Hi (T2))),
                                 Big (Double_Uns (Lo (T2))));
+       Lemma_Double_Big_2xxSingle;
        pragma Assert
          (Mult = Big_2xxDouble * Big (Double_Uns (Hi (T2)))
                + Big_2xxSingle * Big (Double_Uns (Lo (T2)))
*************** is
*** 996,1010 ****
--- 1120,1149 ----
              pragma Assert (Big (Double_Uns (Hi (T2))) >= 1);
              pragma Assert (Big (Double_Uns (Lo (T2))) >= 0);
              pragma Assert (Big (Double_Uns (Lo (T1))) >= 0);
+             pragma Assert (Big_2xxSingle * Big (Double_Uns (Lo (T2)))
+                                          + Big (Double_Uns (Lo (T1))) >= 0);
+             pragma Assert (Mult >= Big_2xxDouble * Big (Double_Uns (Hi (T2))));
              pragma Assert (Mult >= Big_2xxDouble);
              if Hi (T2) > 1 then
                 pragma Assert (Big (Double_Uns (Hi (T2))) > 1);
+                pragma Assert (if X = Double_Int'First and then Round then
+                                  Mult > Big_2xxDouble);
              elsif Lo (T2) > 0 then
                 pragma Assert (Big (Double_Uns (Lo (T2))) > 0);
+                pragma Assert (Big_2xxSingle > 0);
+                pragma Assert (Big_2xxSingle * Big (Double_Uns (Lo (T2))) > 0);
+                pragma Assert (Big_2xxSingle * Big (Double_Uns (Lo (T2)))
+                                             + Big (Double_Uns (Lo (T1))) > 0);
+                pragma Assert (if X = Double_Int'First and then Round then
+                                  Mult > Big_2xxDouble);
              elsif Lo (T1) > 0 then
                 pragma Assert (Double_Uns (Lo (T1)) > 0);
                 Lemma_Gt_Commutation (Double_Uns (Lo (T1)), 0);
                 pragma Assert (Big (Double_Uns (Lo (T1))) > 0);
+                pragma Assert (if X = Double_Int'First and then Round then
+                                  Mult > Big_2xxDouble);
+             else
+                pragma Assert (not (X = Double_Int'First and then Round));
              end if;
              Prove_Quotient_Zero;
           end if;
*************** is
*** 1069,1074 ****
--- 1208,1214 ----
        end if;
  
        pragma Assert (abs Big_Q = Big (Qu));
+       Prove_Sign_Quotient;
  
        --  Set final signs (RM 4.5.5(27-30))
  
*************** is
*** 1144,1149 ****
--- 1284,1313 ----
        end if;
     end Lemma_Abs_Rem_Commutation;
  
+    -----------------------------
+    -- Lemma_Concat_Definition --
+    -----------------------------
+ 
+    procedure Lemma_Concat_Definition (X, Y : Single_Uns) is
+       Hi : constant Double_Uns := Shift_Left (Double_Uns (X), Single_Size);
+       Lo : constant Double_Uns := Double_Uns (Y);
+    begin
+       pragma Assert (Hi = Double_Uns'(2 ** Single_Size) * Double_Uns (X));
+       pragma Assert ((Hi or Lo) = Hi + Lo);
+    end Lemma_Concat_Definition;
+ 
+    ------------------
+    -- Lemma_Div_Eq --
+    ------------------
+ 
+    procedure Lemma_Div_Eq (A, B, S, R : Big_Integer) is
+    begin
+       pragma Assert ((A - B) * S = R);
+       pragma Assert ((A - B) * S / S = R / S);
+       Lemma_Mult_Div (A - B, S);
+       pragma Assert (A - B = R / S);
+    end Lemma_Div_Eq;
+ 
     ------------------------
     -- Lemma_Double_Shift --
     ------------------------
*************** is
*** 1157,1162 ****
--- 1321,1339 ----
          = Shift_Left (X, Natural (Double_Uns (S + S1))));
     end Lemma_Double_Shift;
  
+    -----------------------------
+    -- Lemma_Double_Shift_Left --
+    -----------------------------
+ 
+    procedure Lemma_Double_Shift_Left (X : Double_Uns; S, S1 : Natural) is
+    begin
+       Lemma_Double_Shift_Left (X, Double_Uns (S), Double_Uns (S1));
+       pragma Assert (Shift_Left (Shift_Left (X, S), S1)
+         = Shift_Left (Shift_Left (X, S), Natural (Double_Uns (S1))));
+       pragma Assert (Shift_Left (X, S + S1)
+         = Shift_Left (X, Natural (Double_Uns (S + S1))));
+    end Lemma_Double_Shift_Left;
+ 
     ------------------------------
     -- Lemma_Double_Shift_Right --
     ------------------------------
*************** is
*** 1223,1228 ****
--- 1400,1418 ----
                                        + Big (Double_Uns'(Xlo * Ylo)));
     end Lemma_Mult_Decomposition;
  
+    --------------------
+    -- Lemma_Mult_Div --
+    --------------------
+ 
+    procedure Lemma_Mult_Div (A, B : Big_Integer) is
+    begin
+       if B > 0 then
+          pragma Assert (A * B / B = A);
+       else
+          pragma Assert (A * (-B) / (-B) = A);
+       end if;
+    end Lemma_Mult_Div;
+ 
     -------------------
     -- Lemma_Neg_Div --
     -------------------
*************** is
*** 1247,1252 ****
--- 1437,1443 ----
        Lemma_Powers_Of_2_Commutation (M);
        Lemma_Powers_Of_2_Commutation (N);
        Lemma_Powers_Of_2_Commutation (M + N);
+       Lemma_Powers (Big (Double_Uns'(2)), M, N);
  
        if M + N < Double_Size then
           pragma Assert (Big (Double_Uns'(2))**M * Big (Double_Uns'(2))**N
*************** is
*** 1300,1314 ****
        Lemma_Neg_Rem (X, Y);
     end Lemma_Rem_Abs;
  
     -----------------------
     -- Lemma_Shift_Right --
     -----------------------
  
     procedure Lemma_Shift_Right (X : Double_Uns; Shift : Natural) is
        XX : Double_Uns := X;
     begin
        for J in 1 .. Shift loop
!          XX := Shift_Right (XX, 1);
           Lemma_Double_Shift_Right (X, J - 1, 1);
           pragma Loop_Invariant (XX = Shift_Right (X, J));
           pragma Loop_Invariant (XX = X / Double_Uns'(2) ** J);
--- 1491,1568 ----
        Lemma_Neg_Rem (X, Y);
     end Lemma_Rem_Abs;
  
+    ----------------------
+    -- Lemma_Shift_Left --
+    ----------------------
+ 
+    procedure Lemma_Shift_Left (X : Double_Uns; Shift : Natural) is
+ 
+       procedure Lemma_Mult_Pow2 (X : Double_Uns; I : Natural)
+       with
+         Ghost,
+         Pre  => I < Double_Size - 1,
+         Post => X * Double_Uns'(2) ** I * Double_Uns'(2)
+           = X * Double_Uns'(2) ** (I + 1);
+ 
+       procedure Lemma_Mult_Pow2 (X : Double_Uns; I : Natural) is
+          Mul1 : constant Double_Uns := Double_Uns'(2) ** I;
+          Mul2 : constant Double_Uns := Double_Uns'(2);
+          Left : constant Double_Uns := X * Mul1 * Mul2;
+       begin
+          pragma Assert (Left = X * (Mul1 * Mul2));
+          pragma Assert (Mul1 * Mul2 = Double_Uns'(2) ** (I + 1));
+       end Lemma_Mult_Pow2;
+ 
+       XX : Double_Uns := X;
+ 
+    begin
+       for J in 1 .. Shift loop
+          declare
+             Cur_XX : constant Double_Uns := XX;
+          begin
+             XX := Shift_Left (XX, 1);
+             pragma Assert (XX = Cur_XX * Double_Uns'(2));
+             Lemma_Mult_Pow2 (X, J - 1);
+          end;
+          Lemma_Double_Shift_Left (X, J - 1, 1);
+          pragma Loop_Invariant (XX = Shift_Left (X, J));
+          pragma Loop_Invariant (XX = X * Double_Uns'(2) ** J);
+       end loop;
+    end Lemma_Shift_Left;
+ 
     -----------------------
     -- Lemma_Shift_Right --
     -----------------------
  
     procedure Lemma_Shift_Right (X : Double_Uns; Shift : Natural) is
+ 
+       procedure Lemma_Div_Pow2 (X : Double_Uns; I : Natural)
+       with
+         Ghost,
+         Pre  => I < Double_Size - 1,
+         Post => X / Double_Uns'(2) ** I / Double_Uns'(2)
+           = X / Double_Uns'(2) ** (I + 1);
+ 
+       procedure Lemma_Div_Pow2 (X : Double_Uns; I : Natural) is
+          Div1 : constant Double_Uns := Double_Uns'(2) ** I;
+          Div2 : constant Double_Uns := Double_Uns'(2);
+          Left : constant Double_Uns := X / Div1 / Div2;
+       begin
+          pragma Assert (Left = X / (Div1 * Div2));
+          pragma Assert (Div1 * Div2 = Double_Uns'(2) ** (I + 1));
+       end Lemma_Div_Pow2;
+ 
        XX : Double_Uns := X;
+ 
     begin
        for J in 1 .. Shift loop
!          declare
!             Cur_XX : constant Double_Uns := XX;
!          begin
!             XX := Shift_Right (XX, 1);
!             pragma Assert (XX = Cur_XX / Double_Uns'(2));
!             Lemma_Div_Pow2 (X, J - 1);
!          end;
           Lemma_Double_Shift_Right (X, J - 1, 1);
           pragma Loop_Invariant (XX = Shift_Right (X, J));
           pragma Loop_Invariant (XX = X / Double_Uns'(2) ** J);
*************** is
*** 1359,1364 ****
--- 1613,1620 ----
        pragma Assert (X < 2**(Double_Size - Shift));
        pragma Assert (Big (X) < Big_2xx (Double_Size - Shift));
        pragma Assert (Y = 2**Shift * X);
+       Lemma_Lt_Mult (Big (X), Big_2xx (Double_Size - Shift), Big_2xx (Shift),
+                      Big_2xx (Shift) * Big_2xx (Double_Size - Shift));
        pragma Assert (Big_2xx (Shift) * Big (X)
                       < Big_2xx (Shift) * Big_2xx (Double_Size - Shift));
        Lemma_Powers_Of_2 (Shift, Double_Size - Shift);
*************** is
*** 1527,1536 ****
--- 1783,1796 ----
              Raise_Error;
           else
              T2 := Xhi * Ylo;
+             pragma Assert (Big (T2) = Big (Double_Uns'(Xhi * Ylo))
+                                     + Big (Double_Uns'(Xlo * Yhi)));
           end if;
  
        elsif Yhi /= 0 then
           T2 := Xlo * Yhi;
+          pragma Assert (Big (T2) = Big (Double_Uns'(Xhi * Ylo))
+                                  + Big (Double_Uns'(Xlo * Yhi)));
  
        else -- Yhi = Xhi = 0
           T2 := 0;
*************** is
*** 1544,1550 ****
        pragma Assert (Big (T2) = Big (Double_Uns'(Xhi * Ylo))
                                + Big (Double_Uns'(Xlo * Yhi)));
        Lemma_Mult_Distribution (Big_2xxSingle, Big (Double_Uns'(Xhi * Ylo)),
!                                           Big (Double_Uns'(Xlo * Yhi)));
        pragma Assert (Mult = Big_2xxSingle * Big (T2) + Big (T1));
        Lemma_Add_Commutation (T2, Hi (T1));
        pragma Assert
--- 1804,1810 ----
        pragma Assert (Big (T2) = Big (Double_Uns'(Xhi * Ylo))
                                + Big (Double_Uns'(Xlo * Yhi)));
        Lemma_Mult_Distribution (Big_2xxSingle, Big (Double_Uns'(Xhi * Ylo)),
!                                               Big (Double_Uns'(Xlo * Yhi)));
        pragma Assert (Mult = Big_2xxSingle * Big (T2) + Big (T1));
        Lemma_Add_Commutation (T2, Hi (T1));
        pragma Assert
*************** is
*** 1575,1580 ****
--- 1835,1841 ----
                               "Intentional Unsigned->Signed conversion");
           else
              Prove_Neg_Int;
+             Lemma_Abs_Range (Big (X) * Big (Y));
              return To_Neg_Int (T2);
           end if;
        else -- X < 0
*************** is
*** 1585,1590 ****
--- 1846,1852 ----
                               "Intentional Unsigned->Signed conversion");
           else
              Prove_Neg_Int;
+             Lemma_Abs_Range (Big (X) * Big (Y));
              return To_Neg_Int (T2);
           end if;
        end if;
*************** is
*** 1654,1665 ****
  
        --  Local ghost variables
  
!       Mult  : constant Big_Integer := abs (Big (X) * Big (Y)) with Ghost;
        Quot  : Big_Integer with Ghost;
        Big_R : Big_Integer with Ghost;
        Big_Q : Big_Integer with Ghost;
        Inter : Natural with Ghost;
  
        --  Local lemmas
  
        procedure Prove_Dividend_Scaling
--- 1916,1952 ----
  
        --  Local ghost variables
  
!       Mult  : constant Big_Natural := abs (Big (X) * Big (Y)) with Ghost;
        Quot  : Big_Integer with Ghost;
        Big_R : Big_Integer with Ghost;
        Big_Q : Big_Integer with Ghost;
        Inter : Natural with Ghost;
  
+       --  Local ghost functions
+ 
+       function Is_Mult_Decomposition
+         (D1, D2, D3, D4 : Big_Integer)
+          return Boolean
+       is
+         (Mult = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle * D1
+                               + Big_2xxSingle * Big_2xxSingle * D2
+                                               + Big_2xxSingle * D3
+                                                               + D4)
+       with Ghost;
+ 
+       function Is_Scaled_Mult_Decomposition
+         (D1, D2, D3, D4 : Big_Integer)
+          return Boolean
+       is
+         (Mult * Big_2xx (Scale)
+            = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle * D1
+                            + Big_2xxSingle * Big_2xxSingle * D2
+                                            + Big_2xxSingle * D3
+                                                            + D4)
+       with
+         Ghost,
+         Pre  => Scale < Double_Size;
+ 
        --  Local lemmas
  
        procedure Prove_Dividend_Scaling
*************** is
*** 1667,1690 ****
          Ghost,
          Pre  => D'Initialized
            and then Scale <= Single_Size
!           and then Mult =
!             Big_2xxSingle
!               * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))
!               + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                               + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                               + Big (Double_Uns (D (4)))
            and then Big (D (1) & D (2)) * Big_2xx (Scale) < Big_2xxDouble
            and then T1 = Shift_Left (D (1) & D (2), Scale)
            and then T2 = Shift_Left (Double_Uns (D (3)), Scale)
            and then T3 = Shift_Left (Double_Uns (D (4)), Scale),
!         Post => Mult * Big_2xx (Scale) =
!           Big_2xxSingle
!             * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T1)))
!             + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1) or
!                                                                       Hi (T2)))
!                             + Big_2xxSingle * Big (Double_Uns (Lo (T2) or
!                                                                       Hi (T3)))
!                                             + Big (Double_Uns (Lo (T3)));
        --  Proves the scaling of the 4-digit dividend actually multiplies it by
        --  2**Scale.
  
--- 1954,1972 ----
          Ghost,
          Pre  => D'Initialized
            and then Scale <= Single_Size
!           and then Is_Mult_Decomposition (Big (Double_Uns (D (1))),
!                                           Big (Double_Uns (D (2))),
!                                           Big (Double_Uns (D (3))),
!                                           Big (Double_Uns (D (4))))
            and then Big (D (1) & D (2)) * Big_2xx (Scale) < Big_2xxDouble
            and then T1 = Shift_Left (D (1) & D (2), Scale)
            and then T2 = Shift_Left (Double_Uns (D (3)), Scale)
            and then T3 = Shift_Left (Double_Uns (D (4)), Scale),
!         Post => Is_Scaled_Mult_Decomposition
!           (Big (Double_Uns (Hi (T1))),
!            Big (Double_Uns (Lo (T1) or Hi (T2))),
!            Big (Double_Uns (Lo (T2) or Hi (T3))),
!            Big (Double_Uns (Lo (T3))));
        --  Proves the scaling of the 4-digit dividend actually multiplies it by
        --  2**Scale.
  
*************** is
*** 1701,1706 ****
--- 1983,1997 ----
        --  Proves correctness of the multiplication of divisor by quotient to
        --  compute amount to subtract.
  
+       procedure Prove_Mult_Decomposition_Split3
+         (D1, D2, D3, D3_Hi, D3_Lo, D4 : Big_Integer)
+       with
+         Ghost,
+         Pre  => Is_Mult_Decomposition (D1, D2, D3, D4)
+           and then D3 = Big_2xxSingle * D3_Hi + D3_Lo,
+         Post => Is_Mult_Decomposition (D1, D2 + D3_Hi, D3_Lo, D4);
+       --  Proves decomposition of Mult after splitting third component
+ 
        procedure Prove_Negative_Dividend
        with
          Ghost,
*************** is
*** 1812,1817 ****
--- 2103,2129 ----
             else abs Quot);
        --  Proves correctness of the rounding of the unsigned quotient
  
+       procedure Prove_Scaled_Mult_Decomposition_Regroup24
+         (D1, D2, D3, D4 : Big_Integer)
+       with
+         Ghost,
+         Pre  => Scale < Double_Size
+           and then Is_Scaled_Mult_Decomposition (D1, D2, D3, D4),
+         Post => Is_Scaled_Mult_Decomposition
+           (0, Big_2xxSingle * D1 + D2, 0, Big_2xxSingle * D3 + D4);
+       --  Proves scaled decomposition of Mult after regrouping on second and
+       --  fourth component.
+ 
+       procedure Prove_Scaled_Mult_Decomposition_Regroup3
+         (D1, D2, D3, D4 : Big_Integer)
+       with
+         Ghost,
+         Pre  => Scale < Double_Size
+           and then Is_Scaled_Mult_Decomposition (D1, D2, D3, D4),
+         Post => Is_Scaled_Mult_Decomposition (0, 0, Big3 (D1, D2, D3), D4);
+       --  Proves scaled decomposition of Mult after regrouping on third
+       --  component.
+ 
        procedure Prove_Sign_R
        with
          Ghost,
*************** is
*** 1868,1923 ****
        ----------------------------
  
        procedure Prove_Dividend_Scaling is
        begin
!          Lemma_Hi_Lo (D (1) & D (2), D (1), D (2));
!          pragma Assert (Mult * Big_2xx (Scale) =
!            Big_2xxSingle
!              * Big_2xxSingle * Big_2xx (Scale) * Big (D (1) & D (2))
!              + Big_2xxSingle * Big_2xx (Scale) * Big (Double_Uns (D (3)))
!                              + Big_2xx (Scale) * Big (Double_Uns (D (4))));
!          pragma Assert (Big_2xx (Scale) > 0);
           Lemma_Lt_Mult (Big (Double_Uns (D (3))), Big_2xxSingle,
                          Big_2xx (Scale), Big_2xxDouble);
           Lemma_Lt_Mult (Big (Double_Uns (D (4))), Big_2xxSingle,
                          Big_2xx (Scale), Big_2xxDouble);
!          Lemma_Mult_Commutation (2 ** Scale, D (1) & D (2), T1);
           declare
!             Big_D12 : constant Big_Integer :=
!               Big_2xx (Scale) * Big (D (1) & D (2));
!             Big_T1  : constant Big_Integer := Big (T1);
           begin
!             pragma Assert (Big_D12 = Big_T1);
!             pragma Assert (Big_2xxSingle * Big_2xxSingle * Big_D12
!                            = Big_2xxSingle * Big_2xxSingle * Big_T1);
           end;
           Lemma_Mult_Commutation (2 ** Scale, Double_Uns (D (3)), T2);
!          declare
!             Big_D3 : constant Big_Integer :=
!               Big_2xx (Scale) * Big (Double_Uns (D (3)));
!             Big_T2 : constant Big_Integer := Big (T2);
!          begin
!             pragma Assert (Big_D3 = Big_T2);
!             pragma Assert (Big_2xxSingle * Big_D3 = Big_2xxSingle * Big_T2);
!          end;
           Lemma_Mult_Commutation (2 ** Scale, Double_Uns (D (4)), T3);
!          declare
!             Big_D4 : constant Big_Integer :=
!               Big_2xx (Scale) * Big (Double_Uns (D (4)));
!             Big_T3 : constant Big_Integer := Big (T3);
!          begin
!             pragma Assert (Big_D4 = Big_T3);
!          end;
!          pragma Assert (Mult * Big_2xx (Scale) =
!            Big_2xxSingle * Big_2xxSingle * Big (T1)
!                          + Big_2xxSingle * Big (T2)
!                                          + Big (T3));
           Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
           Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
           Lemma_Hi_Lo (T3, Hi (T3), Lo (T3));
           pragma Assert (Double_Uns (Lo (T1) or Hi (T2)) =
                            Double_Uns (Lo (T1)) + Double_Uns (Hi (T2)));
           pragma Assert (Double_Uns (Lo (T2) or Hi (T3)) =
                            Double_Uns (Lo (T2)) + Double_Uns (Hi (T3)));
        end Prove_Dividend_Scaling;
  
        --------------------------
--- 2180,2333 ----
        ----------------------------
  
        procedure Prove_Dividend_Scaling is
+          Big_D12 : constant Big_Integer :=
+            Big_2xx (Scale) * Big (D (1) & D (2));
+          Big_T1  : constant Big_Integer := Big (T1);
+          Big_D3  : constant Big_Integer :=
+            Big_2xx (Scale) * Big (Double_Uns (D (3)));
+          Big_T2  : constant Big_Integer := Big (T2);
+          Big_D4  : constant Big_Integer :=
+            Big_2xx (Scale) * Big (Double_Uns (D (4)));
+          Big_T3  : constant Big_Integer := Big (T3);
+ 
        begin
!          Lemma_Shift_Left (D (1) & D (2), Scale);
!          Lemma_Ge_Mult (Big_2xxSingle, Big_2xx (Scale), Big_2xxSingle,
!                         Big_2xxSingle * Big_2xx (Scale));
           Lemma_Lt_Mult (Big (Double_Uns (D (3))), Big_2xxSingle,
                          Big_2xx (Scale), Big_2xxDouble);
+          Lemma_Shift_Left (Double_Uns (D (3)), Scale);
           Lemma_Lt_Mult (Big (Double_Uns (D (4))), Big_2xxSingle,
                          Big_2xx (Scale), Big_2xxDouble);
!          Lemma_Shift_Left (Double_Uns (D (4)), Scale);
!          Lemma_Hi_Lo (D (1) & D (2), D (1), D (2));
!          pragma Assert (Mult * Big_2xx (Scale) =
!            Big_2xxSingle * Big_2xxSingle * Big_D12
!                          + Big_2xxSingle * Big_D3
!                                          + Big_D4);
!          pragma Assert (Big_2xx (Scale) > 0);
           declare
!             Two_xx_Scale : constant Double_Uns := Double_Uns'(2 ** Scale);
!             D12          : constant Double_Uns := D (1) & D (2);
           begin
!             pragma Assert (Big_2xx (Scale) * Big (D12) < Big_2xxDouble);
!             pragma Assert (Big (Two_xx_Scale) * Big (D12) < Big_2xxDouble);
!             Lemma_Mult_Commutation (Two_xx_Scale, D12, T1);
           end;
+          pragma Assert (Big_D12 = Big_T1);
+          pragma Assert (Big_2xxSingle * Big_2xxSingle * Big_D12
+                         = Big_2xxSingle * Big_2xxSingle * Big_T1);
           Lemma_Mult_Commutation (2 ** Scale, Double_Uns (D (3)), T2);
!          pragma Assert (Big_D3 = Big_T2);
!          pragma Assert (Big_2xxSingle * Big_D3 = Big_2xxSingle * Big_T2);
           Lemma_Mult_Commutation (2 ** Scale, Double_Uns (D (4)), T3);
!          pragma Assert (Big_D4 = Big_T3);
!          pragma Assert
!            (By (Is_Scaled_Mult_Decomposition (0, Big_T1, Big_T2, Big_T3),
!             By (Big_2xxSingle * Big_2xxSingle * Big_D12 =
!                 Big_2xxSingle * Big_2xxSingle * Big_T1,
!                 Big_D12 = Big_T1)
!               and then
!             By (Big_2xxSingle * Big_D3  = Big_2xxSingle * Big_T2,
!                 Big_D3 = Big_T2)
!               and then
!             Big_D4 = Big_T3));
           Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
           Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
           Lemma_Hi_Lo (T3, Hi (T3), Lo (T3));
+          Lemma_Mult_Distribution (Big_2xxSingle * Big_2xxSingle,
+                                   Big_2xxSingle * Big (Double_Uns (Hi (T1))),
+                                   Big (Double_Uns (Lo (T1))));
+          Lemma_Mult_Distribution (Big_2xxSingle,
+                                   Big_2xxSingle * Big (Double_Uns (Hi (T2))),
+                                   Big (Double_Uns (Lo (T2))));
+          Lemma_Mult_Distribution (Big_2xxSingle * Big_2xxSingle,
+                                   Big (Double_Uns (Lo (T1))),
+                                   Big (Double_Uns (Hi (T2))));
+          Lemma_Mult_Distribution (Big_2xxSingle,
+                                   Big (Double_Uns (Lo (T2))),
+                                   Big (Double_Uns (Hi (T3))));
+          pragma Assert
+            (By (Is_Scaled_Mult_Decomposition
+               (Big (Double_Uns (Hi (T1))),
+                Big (Double_Uns (Lo (T1))) + Big (Double_Uns (Hi (T2))),
+                Big (Double_Uns (Lo (T2))) + Big (Double_Uns (Hi (T3))),
+                Big (Double_Uns (Lo (T3)))),
+             --  Start from stating equality between the expanded values of
+             --  the right-hand side in the known and desired assertions over
+             --  Is_Scaled_Mult_Decomposition.
+             By (Big_2xxSingle * Big_2xxSingle * Big_2xxSingle *
+               Big (Double_Uns (Hi (T1)))
+             + Big_2xxSingle * Big_2xxSingle *
+               (Big (Double_Uns (Lo (T1))) + Big (Double_Uns (Hi (T2))))
+             + Big_2xxSingle *
+               (Big (Double_Uns (Lo (T2))) + Big (Double_Uns (Hi (T3))))
+             + Big (Double_Uns (Lo (T3))) =
+               Big_2xxSingle * Big_2xxSingle * Big_2xxSingle * 0
+             + Big_2xxSingle * Big_2xxSingle * Big_T1
+             + Big_2xxSingle * Big_T2
+             + Big_T3,
+               --  Now list all known equalities that contribute
+               Big_2xxSingle * Big_2xxSingle * Big_2xxSingle *
+               Big (Double_Uns (Hi (T1)))
+             + Big_2xxSingle * Big_2xxSingle *
+               (Big (Double_Uns (Lo (T1))) + Big (Double_Uns (Hi (T2))))
+             + Big_2xxSingle *
+               (Big (Double_Uns (Lo (T2))) + Big (Double_Uns (Hi (T3))))
+             + Big (Double_Uns (Lo (T3))) =
+               Big_2xxSingle * Big_2xxSingle * Big_2xxSingle *
+                 Big (Double_Uns (Hi (T1)))
+             + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1)))
+             + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T2)))
+             + Big_2xxSingle * Big (Double_Uns (Lo (T2)))
+             + Big_2xxSingle * Big (Double_Uns (Hi (T3)))
+             + Big (Double_Uns (Lo (T3)))
+               and then
+             By (Big_2xxSingle * Big_2xxSingle * Big (T1)
+             = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
+             * Big (Double_Uns (Hi (T1)))
+             + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1))),
+             Big_2xxSingle * Big_2xxSingle * Big (T1)
+             = Big_2xxSingle * Big_2xxSingle
+             * (Big_2xxSingle * Big (Double_Uns (Hi (T1)))
+                + Big (Double_Uns (Lo (T1)))))
+               and then
+             By (Big_2xxSingle * Big (T2)
+             = Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T2)))
+             + Big_2xxSingle * Big (Double_Uns (Lo (T2))),
+             Big_2xxSingle * Big (T2)
+             = Big_2xxSingle * (Big_2xxSingle * Big (Double_Uns (Hi (T2)))
+               + Big (Double_Uns (Lo (T2)))))
+               and then
+             Big (T3) = Big_2xxSingle * Big (Double_Uns (Hi (T3)))
+             + Big (Double_Uns (Lo (T3))))));
+          Lemma_Mult_Distribution (Big_2xxSingle * Big_2xxSingle,
+                                   Big (Double_Uns (Lo (T1))),
+                                   Big (Double_Uns (Hi (T2))));
           pragma Assert (Double_Uns (Lo (T1) or Hi (T2)) =
                            Double_Uns (Lo (T1)) + Double_Uns (Hi (T2)));
           pragma Assert (Double_Uns (Lo (T2) or Hi (T3)) =
                            Double_Uns (Lo (T2)) + Double_Uns (Hi (T3)));
+          Lemma_Add_Commutation (Double_Uns (Lo (T1)), Hi (T2));
+          Lemma_Add_Commutation (Double_Uns (Lo (T2)), Hi (T3));
+          pragma Assert
+            (By (Is_Scaled_Mult_Decomposition
+               (Big (Double_Uns (Hi (T1))),
+                Big (Double_Uns (Lo (T1) or Hi (T2))),
+                Big (Double_Uns (Lo (T2) or Hi (T3))),
+                Big (Double_Uns (Lo (T3)))),
+             By (Big_2xxSingle * Big_2xxSingle
+               * Big (Double_Uns (Lo (T1) or Hi (T2))) =
+                 Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1)))
+               + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T2))),
+               Big_2xxSingle * Big_2xxSingle
+               * Big (Double_Uns (Lo (T1)) + Double_Uns (Hi (T2))) =
+                 Big_2xxSingle * Big_2xxSingle
+               * (Big (Double_Uns (Lo (T1))) + Big (Double_Uns (Hi (T2)))))
+               and then
+             Big_2xxSingle * Big (Double_Uns (Lo (T2) or Hi (T3))) =
+             Big_2xxSingle * Big (Double_Uns (Lo (T2)))
+             + Big_2xxSingle * Big (Double_Uns (Hi (T3)))));
        end Prove_Dividend_Scaling;
  
        --------------------------
*************** is
*** 1944,1951 ****
--- 2354,2386 ----
           pragma Assert
             (Big (Double_Uns (Hi (T3))) + Big (Double_Uns (Hi (T2))) =
                Big (Double_Uns (S1)));
+          Lemma_Mult_Distribution (Big_2xxSingle * Big_2xxSingle,
+                                   Big (Double_Uns (Hi (T3))),
+                                   Big (Double_Uns (Hi (T2))));
+          pragma Assert
+            (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T2)))
+             + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T3)))
+             = Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (S1)));
+          pragma Assert (Big (Double_Uns (Q)) * Big (Zu) =
+            Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (S1))
+                          + Big_2xxSingle * Big (Double_Uns (S2))
+                                          + Big (Double_Uns (S3)));
+          pragma Assert
+            (By (Big (Double_Uns (Q)) * Big (Zu) = Big3 (S1, S2, S3),
+               Big3 (S1, S2, S3) =
+                 Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (S1))
+                               + Big_2xxSingle * Big (Double_Uns (S2))
+                                               + Big (Double_Uns (S3))));
        end Prove_Multiplication;
  
+       -------------------------------------
+       -- Prove_Mult_Decomposition_Split3 --
+       -------------------------------------
+ 
+       procedure Prove_Mult_Decomposition_Split3
+         (D1, D2, D3, D3_Hi, D3_Lo, D4 : Big_Integer)
+       is null;
+ 
        -----------------------------
        -- Prove_Negative_Dividend --
        -----------------------------
*************** is
*** 2044,2049 ****
--- 2479,2500 ----
           end if;
        end Prove_Rounding_Case;
  
+       -----------------------------------------------
+       -- Prove_Scaled_Mult_Decomposition_Regroup24 --
+       -----------------------------------------------
+ 
+       procedure Prove_Scaled_Mult_Decomposition_Regroup24
+         (D1, D2, D3, D4 : Big_Integer)
+       is null;
+ 
+       ----------------------------------------------
+       -- Prove_Scaled_Mult_Decomposition_Regroup3 --
+       ----------------------------------------------
+ 
+       procedure Prove_Scaled_Mult_Decomposition_Regroup3
+         (D1, D2, D3, D4 : Big_Integer)
+       is null;
+ 
        ------------------
        -- Prove_Sign_R --
        ------------------
*************** is
*** 2072,2087 ****
--- 2523,2546 ----
           Lemma_Div_Definition (T1, Zlo, T1 / Zlo, T1 rem Zlo);
           pragma Assert (Double_Uns (Lo (T1 rem Zlo)) = T1 rem Zlo);
           Lemma_Hi_Lo (T2, Lo (T1 rem Zlo), D (4));
+          pragma Assert (T1 rem Zlo < Double_Uns (Zlo));
           pragma Assert (T1 rem Zlo + Double_Uns'(1) <= Double_Uns (Zlo));
+          Lemma_Ge_Commutation (Double_Uns (Zlo), T1 rem Zlo + Double_Uns'(1));
           Lemma_Add_Commutation (T1 rem Zlo, 1);
           pragma Assert (Big (T1 rem Zlo) + 1 <= Big (Double_Uns (Zlo)));
           Lemma_Div_Definition (T2, Zlo, T2 / Zlo, Ru);
           pragma Assert
             (Mult = Big (Double_Uns (Zlo)) *
                (Big_2xxSingle * Big (T1 / Zlo) + Big (T2 / Zlo)) + Big (Ru));
+          pragma Assert (Big_2xxSingle * Big (Double_Uns (D (2)))
+                                       + Big (Double_Uns (D (3)))
+                         < Big_2xxSingle * (Big (Double_Uns (D (2))) + 1));
           Lemma_Div_Lt (Big (T1), Big_2xxSingle, Big (Double_Uns (Zlo)));
           Lemma_Div_Commutation (T1, Double_Uns (Zlo));
           Lemma_Lo_Is_Ident (T1 / Zlo);
+          pragma Assert
+            (Big (T2) <= Big_2xxSingle * (Big (Double_Uns (Zlo)) - 1)
+                                       + Big (Double_Uns (D (4))));
           Lemma_Div_Lt (Big (T2), Big_2xxSingle, Big (Double_Uns (Zlo)));
           Lemma_Div_Commutation (T2, Double_Uns (Zlo));
           Lemma_Lo_Is_Ident (T2 / Zlo);
*************** is
*** 2119,2142 ****
--- 2578,2635 ----
        Lemma_Abs_Commutation (X);
        Lemma_Abs_Commutation (Y);
        Lemma_Mult_Decomposition (Mult, Xu, Yu, Xhi, Xlo, Yhi, Ylo);
+       pragma Assert
+         (Is_Mult_Decomposition
+            (D1 => 0,
+             D2 => Big (Double_Uns'(Xhi * Yhi)),
+             D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns'(Xlo * Yhi)),
+             D4 => Big (Double_Uns'(Xlo * Ylo))));
  
        T1 := Xlo * Ylo;
        D (4) := Lo (T1);
        D (3) := Hi (T1);
  
        Lemma_Hi_Lo (T1, D (3), D (4));
+       pragma Assert
+         (Is_Mult_Decomposition
+            (D1 => 0,
+             D2 => Big (Double_Uns'(Xhi * Yhi)),
+             D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns'(Xlo * Yhi))
+               + Big (Double_Uns (D (3))),
+             D4 => Big (Double_Uns (D (4)))));
  
        if Yhi /= 0 then
           T1 := Xlo * Yhi;
  
           Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
+          pragma Assert
+            (Is_Mult_Decomposition
+               (D1 => 0,
+                D2 => Big (Double_Uns'(Xhi * Yhi)) + Big (Double_Uns (Hi (T1))),
+                D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns (Lo (T1)))
+                  + Big (Double_Uns (D (3))),
+                D4 => Big (Double_Uns (D (4)))));
  
           T2 := D (3) + Lo (T1);
  
+          Lemma_Add_Commutation (Double_Uns (Lo (T1)), D (3));
+          pragma Assert
+            (Is_Mult_Decomposition
+               (D1 => 0,
+                D2 => Big (Double_Uns'(Xhi * Yhi)) + Big (Double_Uns (Hi (T1))),
+                D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (T2),
+                D4 => Big (Double_Uns (D (4)))));
           Lemma_Mult_Distribution (Big_2xxSingle,
                                    Big (Double_Uns (D (3))),
                                    Big (Double_Uns (Lo (T1))));
           Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
+          pragma Assert
+            (Is_Mult_Decomposition
+               (D1 => 0,
+                D2 => Big (Double_Uns'(Xhi * Yhi)) + Big (Double_Uns (Hi (T1)))
+                  + Big (Double_Uns (Hi (T2))),
+                D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns (Lo (T2))),
+                D4 => Big (Double_Uns (D (4)))));
  
           D (3) := Lo (T2);
           D (2) := Hi (T1) + Hi (T2);
*************** is
*** 2146,2176 ****
           pragma Assert
             (Big (Double_Uns (Hi (T1))) + Big (Double_Uns (Hi (T2))) =
                Big (Double_Uns (D (2))));
  
           if Xhi /= 0 then
              T1 := Xhi * Ylo;
  
              Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
  
              T2 := D (3) + Lo (T1);
  
              Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
  
              D (3) := Lo (T2);
              T3 := D (2) + Hi (T1);
  
              Lemma_Add_Commutation (T3, Hi (T2));
  
              T3 := T3 + Hi (T2);
              T2 := Double_Uns'(Xhi * Yhi);
  
              Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
!             Lemma_Add_Commutation (T3, Lo (T2));
  
              T1 := T3 + Lo (T2);
              D (2) := Lo (T1);
  
!             Lemma_Hi_Lo (T1, Hi (T1), D (2));
  
              D (1) := Hi (T2) + Hi (T1);
  
--- 2639,2755 ----
           pragma Assert
             (Big (Double_Uns (Hi (T1))) + Big (Double_Uns (Hi (T2))) =
                Big (Double_Uns (D (2))));
+          pragma Assert
+            (Is_Mult_Decomposition
+               (D1 => 0,
+                D2 => Big (Double_Uns'(Xhi * Yhi)) + Big (Double_Uns (D (2))),
+                D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns (D (3))),
+                D4 => Big (Double_Uns (D (4)))));
  
           if Xhi /= 0 then
              T1 := Xhi * Ylo;
  
              Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
+             pragma Assert
+               (By (Is_Mult_Decomposition
+                  (D1 => 0,
+                   D2 => Big (Double_Uns'(Xhi * Yhi)) + Big (Double_Uns (D (2)))
+                     + Big (Double_Uns (Hi (T1))),
+                   D3 => Big (Double_Uns (Lo (T1))) + Big (Double_Uns (D (3))),
+                   D4 => Big (Double_Uns (D (4)))),
+                (By (Big_2xxSingle * Big (T1) =
+                     Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T1)))
+                     + Big_2xxSingle * Big (Double_Uns (Lo (T1))),
+                     Big_2xxSingle * Big (T1) =
+                     Big_2xxSingle * (Big_2xxSingle * Big (Double_Uns (Hi (T1)))
+                     + Big (Double_Uns (Lo (T1))))))));
  
              T2 := D (3) + Lo (T1);
  
+             Lemma_Add_Commutation (Double_Uns (D (3)), Lo (T1));
              Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
+             Prove_Mult_Decomposition_Split3
+               (D1    => 0,
+                D2    => Big (Double_Uns'(Xhi * Yhi)) + Big (Double_Uns (D (2)))
+                  + Big (Double_Uns (Hi (T1))),
+                D3    => Big (T2),
+                D3_Hi => Big (Double_Uns (Hi (T2))),
+                D3_Lo => Big (Double_Uns (Lo (T2))),
+                D4    => Big (Double_Uns (D (4))));
  
              D (3) := Lo (T2);
              T3 := D (2) + Hi (T1);
  
+             Lemma_Add_Commutation (Double_Uns (D (2)), Hi (T1));
+             pragma Assert
+               (Is_Mult_Decomposition
+                  (D1 => 0,
+                   D2 => Big (Double_Uns'(Xhi * Yhi)) + Big (T3)
+                     + Big (Double_Uns (Hi (T2))),
+                   D3 => Big (Double_Uns (D (3))),
+                   D4 => Big (Double_Uns (D (4)))));
              Lemma_Add_Commutation (T3, Hi (T2));
  
              T3 := T3 + Hi (T2);
              T2 := Double_Uns'(Xhi * Yhi);
  
+             pragma Assert
+               (Is_Mult_Decomposition
+                  (D1 => 0,
+                   D2 => Big (T2) + Big (T3),
+                   D3 => Big (Double_Uns (D (3))),
+                   D4 => Big (Double_Uns (D (4)))));
              Lemma_Hi_Lo (T2, Hi (T2), Lo (T2));
!             pragma Assert
!               (By (Is_Mult_Decomposition
!                  (D1 => Big (Double_Uns (Hi (T2))),
!                   D2 => Big (Double_Uns (Lo (T2))) + Big (T3),
!                   D3 => Big (Double_Uns (D (3))),
!                   D4 => Big (Double_Uns (D (4)))),
!                By (Big_2xxSingle * Big_2xxSingle * Big (T2) =
!                    Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
!                  * Big (Double_Uns (Hi (T2)))
!                  + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T2))),
!                Big_2xxSingle * Big_2xxSingle *
!                  (Big_2xxSingle * Big (Double_Uns (Hi (T2)))
!                                 + Big (Double_Uns (Lo (T2))))
!                  = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
!                      * Big (Double_Uns (Hi (T2)))
!                    + Big_2xxSingle * Big_2xxSingle
!                      * Big (Double_Uns (Lo (T2))))));
  
              T1 := T3 + Lo (T2);
              D (2) := Lo (T1);
  
!             Lemma_Add_Commutation (T3, Lo (T2));
!             pragma Assert
!               (Is_Mult_Decomposition
!                  (D1 => Big (Double_Uns (Hi (T2))),
!                   D2 => Big (T1),
!                   D3 => Big (Double_Uns (D (3))),
!                   D4 => Big (Double_Uns (D (4)))));
!             Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
!             pragma Assert
!               (By (Is_Mult_Decomposition
!                 (D1 => Big (Double_Uns (Hi (T2))) + Big (Double_Uns (Hi (T1))),
!                  D2 => Big (Double_Uns (D (2))),
!                  D3 => Big (Double_Uns (D (3))),
!                  D4 => Big (Double_Uns (D (4)))),
!                By (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1))) =
!                    Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2))),
!                    D (2) = Lo (T1))
!                  and then
!                By (Big_2xxSingle * Big_2xxSingle * Big (T1) =
!                    Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
!                  * Big (Double_Uns (Hi (T1)))
!                  + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Lo (T1))),
!                Big_2xxSingle * Big_2xxSingle *
!                  (Big_2xxSingle * Big (Double_Uns (Hi (T1)))
!                                 + Big (Double_Uns (Lo (T1))))
!                  = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
!                      * Big (Double_Uns (Hi (T1)))
!                    + Big_2xxSingle * Big_2xxSingle
!                      * Big (Double_Uns (Lo (T1))))));
  
              D (1) := Hi (T2) + Hi (T1);
  
*************** is
*** 2181,2212 ****
                (Big (Double_Uns (Hi (T2))) + Big (Double_Uns (Hi (T1))) =
                     Big (Double_Uns (D (1))));
  
!             pragma Assert (Mult =
!               Big_2xxSingle
!                 * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))
!                 + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                                 + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                                 + Big (Double_Uns (D (4))));
! 
           else
              D (1) := 0;
-          end if;
  
!          pragma Assert (Mult =
!            Big_2xxSingle
!              * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))
!              + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                              + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                              + Big (Double_Uns (D (4))));
  
        else
           if Xhi /= 0 then
              T1 := Xhi * Ylo;
  
              Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
  
              T2 := D (3) + Lo (T1);
  
              Lemma_Mult_Distribution (Big_2xxSingle,
                                       Big (Double_Uns (D (3))),
                                       Big (Double_Uns (Lo (T1))));
--- 2760,2830 ----
                (Big (Double_Uns (Hi (T2))) + Big (Double_Uns (Hi (T1))) =
                     Big (Double_Uns (D (1))));
  
!             pragma Assert
!               (By (Is_Mult_Decomposition
!                  (D1 => Big (Double_Uns (D (1))),
!                   D2 => Big (Double_Uns (D (2))),
!                   D3 => Big (Double_Uns (D (3))),
!                   D4 => Big (Double_Uns (D (4)))),
!                Big_2xxSingle * Big_2xxSingle * Big_2xxSingle *
!                  Big (Double_Uns (D (1)))
!                = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle *
!                  (Big (Double_Uns (Hi (T2)) + Double_Uns (Hi (T1))))));
           else
              D (1) := 0;
  
!             pragma Assert
!               (By (Is_Mult_Decomposition
!                  (D1 => Big (Double_Uns (D (1))),
!                   D2 => Big (Double_Uns (D (2))),
!                   D3 => Big (Double_Uns (D (3))),
!                   D4 => Big (Double_Uns (D (4)))),
!                Big (Double_Uns'(Xhi * Yhi)) = 0
!                  and then Big (Double_Uns'(Xhi * Ylo)) = 0
!                  and then Big (Double_Uns (D (1))) = 0));
!          end if;
  
+          pragma Assert
+            (Is_Mult_Decomposition (D1 => Big (Double_Uns (D (1))),
+                                    D2 => Big (Double_Uns (D (2))),
+                                    D3 => Big (Double_Uns (D (3))),
+                                    D4 => Big (Double_Uns (D (4)))));
        else
+          pragma Assert
+            (By (Is_Mult_Decomposition
+               (D1 => 0,
+                D2 => 0,
+                D3 => Big (Double_Uns'(Xhi * Ylo)) + Big (Double_Uns (D (3))),
+                D4 => Big (Double_Uns (D (4)))),
+             Big (Double_Uns'(Xhi * Yhi)) = 0
+               and then Big (Double_Uns'(Xlo * Yhi)) = 0));
+ 
           if Xhi /= 0 then
              T1 := Xhi * Ylo;
  
              Lemma_Hi_Lo (T1, Hi (T1), Lo (T1));
+             pragma Assert
+               (By (Is_Mult_Decomposition
+                  (D1 => 0,
+                   D2 => Big (Double_Uns (Hi (T1))),
+                   D3 => Big (Double_Uns (Lo (T1))) + Big (Double_Uns (D (3))),
+                   D4 => Big (Double_Uns (D (4)))),
+                Big_2xxSingle * Big (Double_Uns'(Xhi * Ylo)) =
+                  Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (Hi (T1)))
+                    + Big_2xxSingle * Big (Double_Uns (Lo (T1)))));
  
              T2 := D (3) + Lo (T1);
  
+             Lemma_Add_Commutation (Double_Uns (Lo (T1)), D (3));
+             pragma Assert
+               (By (Is_Mult_Decomposition
+                  (D1 => 0,
+                   D2 => Big (Double_Uns (Hi (T1))),
+                   D3 => Big (T2),
+                   D4 => Big (Double_Uns (D (4)))),
+                Big_2xxSingle * Big (T2) =
+                  Big_2xxSingle *
+                    (Big (Double_Uns (Lo (T1))) + Big (Double_Uns (D (3))))));
              Lemma_Mult_Distribution (Big_2xxSingle,
                                       Big (Double_Uns (D (3))),
                                       Big (Double_Uns (Lo (T1))));
*************** is
*** 2221,2248 ****
              pragma Assert
                (Big (Double_Uns (Hi (T1))) + Big (Double_Uns (Hi (T2))) =
                   Big (Double_Uns (D (2))));
!             pragma Assert (Mult =
!               Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                             + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                             + Big (Double_Uns (D (4))));
           else
              D (2) := 0;
  
!             pragma Assert (Mult =
!               Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                             + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                             + Big (Double_Uns (D (4))));
           end if;
  
           D (1) := 0;
        end if;
  
!       pragma Assert (Mult =
!         Big_2xxSingle
!           * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))
!           + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                           + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                           + Big (Double_Uns (D (4))));
  
        --  Now it is time for the dreaded multiple precision division. First an
        --  easy case, check for the simple case of a one digit divisor.
--- 2839,2870 ----
              pragma Assert
                (Big (Double_Uns (Hi (T1))) + Big (Double_Uns (Hi (T2))) =
                   Big (Double_Uns (D (2))));
!             pragma Assert
!               (Is_Mult_Decomposition
!                  (D1 => 0,
!                   D2 => Big (Double_Uns (D (2))),
!                   D3 => Big (Double_Uns (D (3))),
!                   D4 => Big (Double_Uns (D (4)))));
           else
              D (2) := 0;
  
!             pragma Assert
!               (By (Is_Mult_Decomposition
!                  (D1 => 0,
!                   D2 => Big (Double_Uns (D (2))),
!                   D3 => Big (Double_Uns (D (3))),
!                   D4 => Big (Double_Uns (D (4)))),
!                Big (Double_Uns'(Xhi * Ylo)) = 0
!                  and then Big (Double_Uns (D (2))) = 0));
           end if;
  
           D (1) := 0;
        end if;
  
!       pragma Assert (Is_Mult_Decomposition (D1 => Big (Double_Uns (D (1))),
!                                             D2 => Big (Double_Uns (D (2))),
!                                             D3 => Big (Double_Uns (D (3))),
!                                             D4 => Big (Double_Uns (D (4)))));
  
        --  Now it is time for the dreaded multiple precision division. First an
        --  easy case, check for the simple case of a one digit divisor.
*************** is
*** 2253,2260 ****
--- 2875,2894 ----
                 pragma Assert
                   (Mult >= Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
                            * Big (Double_Uns (D (1))));
+                Lemma_Double_Big_2xxSingle;
+                Lemma_Mult_Positive (Big_2xxDouble, Big_2xxSingle);
+                Lemma_Ge_Mult (Big (Double_Uns (D (1))),
+                               1,
+                               Big_2xxDouble * Big_2xxSingle,
+                               Big_2xxDouble * Big_2xxSingle);
+                Lemma_Mult_Positive (Big_2xxSingle, Big (Double_Uns (D (1))));
+                Lemma_Ge_Mult (Big_2xxSingle * Big_2xxSingle, Big_2xxDouble,
+                               Big_2xxSingle * Big (Double_Uns (D (1))),
+                               Big_2xxDouble * Big_2xxSingle);
                 pragma Assert (Mult >= Big_2xxDouble * Big_2xxSingle);
                 Lemma_Ge_Commutation (2 ** Single_Size, Zu);
+                Lemma_Ge_Mult (Big_2xxSingle, Big (Zu), Big_2xxDouble,
+                               Big_2xxDouble * Big (Zu));
                 pragma Assert (Mult >= Big_2xxDouble * Big (Zu));
              else
                 Lemma_Ge_Commutation (Double_Uns (D (2)), Zu);
*************** is
*** 2294,2299 ****
--- 2928,2936 ----
           --  First normalize the divisor so that it has the leading bit on.
           --  We do this by finding the appropriate left shift amount.
  
+          Lemma_Lt_Commutation (D (1) & D (2), Zu);
+          pragma Assert (Mult < Big_2xxDouble * Big (Zu));
+ 
           Shift := Single_Size;
           Mask  := Single_Uns'Last;
           Scale := 0;
*************** is
*** 2330,2335 ****
--- 2967,2979 ----
                   Post => Shift / 2 = 2 ** (Log_Single_Size - (Inter + 1))
                     and then (Shift = 2 or (Shift / 2) mod 2 = 0);
  
+                procedure Prove_Prev_And_Mask (Prev, Mask : Single_Uns)
+                with
+                  Ghost,
+                  Pre  => Prev /= 0
+                    and then (Prev and Mask) = 0,
+                  Post => (Prev and not Mask) /= 0;
+ 
                 procedure Prove_Shift_Progress
                 with
                   Ghost,
*************** is
*** 2361,2371 ****
--- 3005,3018 ----
                 -- Local lemma null bodies --
                 -----------------------------
  
+                procedure Prove_Prev_And_Mask (Prev, Mask : Single_Uns) is null;
                 procedure Prove_Power is null;
                 procedure Prove_Shifting is null;
                 procedure Prove_Shift_Progress is null;
  
              begin
+                pragma Assert (Mask = Shift_Left (Single_Uns'Last,
+                               Single_Size - Shift_Prev));
                 Prove_Power;
  
                 Shift := Shift / 2;
*************** is
*** 2382,2387 ****
--- 3029,3043 ----
                 if (Hi (Zu) and Mask) = 0 then
                    Zu := Shift_Left (Zu, Shift);
  
+                   pragma Assert ((Hi (Zu_Prev) and Mask_Prev) /= 0);
+                   pragma Assert
+                     (By ((Hi (Zu_Prev) and Mask_Prev and Mask) = 0,
+                      (Hi (Zu_Prev) and Mask) = 0
+                      and then
+                      (Hi (Zu_Prev) and Mask_Prev and Mask)
+                      = (Hi (Zu_Prev) and Mask and Mask_Prev)
+                     ));
+                   Prove_Prev_And_Mask (Hi (Zu_Prev) and Mask_Prev, Mask);
                    Prove_Shifting;
                    pragma Assert (Big (Zu_Prev) =
                      Big (Double_Uns'(abs Z)) * Big_2xx (Scale));
*************** is
*** 2427,2432 ****
--- 3083,3089 ----
           --  not change the invariant that (D (1) & D (2)) < Zu.
  
           Lemma_Lt_Commutation (D (1) & D (2), abs Z);
+          Lemma_Big_Of_Double_Uns (Zu);
           Lemma_Lt_Mult (Big (D (1) & D (2)),
                          Big (Double_Uns'(abs Z)), Big_2xx (Scale),
                          Big_2xxDouble);
*************** is
*** 2442,2465 ****
           D (3) := Lo (T2) or Hi (T3);
           D (4) := Lo (T3);
  
!          pragma Assert (Mult * Big_2xx (Scale) =
!            Big_2xxSingle
!              * Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))
!              + Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                              + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                              + Big (Double_Uns (D (4))));
           Lemma_Substitution (Big_2xxDouble * Big (Zu), Big_2xxDouble, Big (Zu),
                               Big (Double_Uns'(abs Z)) * Big_2xx (Scale), 0);
           Lemma_Lt_Mult (Mult, Big_2xxDouble * Big (Double_Uns'(abs Z)),
                          Big_2xx (Scale), Big_2xxDouble * Big (Zu));
           Lemma_Div_Lt (Mult * Big_2xx (Scale), Big (Zu), Big_2xxDouble);
!          Lemma_Substitution
!            (Mult * Big_2xx (Scale), Big_2xxSingle,
!             Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (1)))
!                           + Big_2xxSingle * Big (Double_Uns (D (2)))
!                                           + Big (Double_Uns (D (3))),
!             Big3 (D (1), D (2), D (3)),
              Big (Double_Uns (D (4))));
  
           --  Loop to compute quotient digits, runs twice for Qd (1) and Qd (2)
  
--- 3099,3133 ----
           D (3) := Lo (T2) or Hi (T3);
           D (4) := Lo (T3);
  
!          pragma Assert (Big (Double_Uns (Hi (T1))) = Big (Double_Uns (D (1))));
!          pragma Assert
!            (Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
!             * Big (Double_Uns (Hi (T1)))
!             = Big_2xxSingle * Big_2xxSingle * Big_2xxSingle
!             * Big (Double_Uns (D (1))));
           Lemma_Substitution (Big_2xxDouble * Big (Zu), Big_2xxDouble, Big (Zu),
                               Big (Double_Uns'(abs Z)) * Big_2xx (Scale), 0);
           Lemma_Lt_Mult (Mult, Big_2xxDouble * Big (Double_Uns'(abs Z)),
                          Big_2xx (Scale), Big_2xxDouble * Big (Zu));
+          pragma Assert (Mult >= Big_0);
+          pragma Assert (Big_2xx (Scale) >= Big_0);
+          Lemma_Mult_Non_Negative (Mult, Big_2xx (Scale));
           Lemma_Div_Lt (Mult * Big_2xx (Scale), Big (Zu), Big_2xxDouble);
!          Lemma_Concat_Definition (D (1), D (2));
!          Lemma_Double_Big_2xxSingle;
!          Prove_Scaled_Mult_Decomposition_Regroup24
!            (Big (Double_Uns (D (1))),
!             Big (Double_Uns (D (2))),
!             Big (Double_Uns (D (3))),
              Big (Double_Uns (D (4))));
+          Lemma_Substitution
+            (Mult * Big_2xx (Scale), Big_2xxSingle * Big_2xxSingle,
+               Big_2xxSingle * Big (Double_Uns (D (1)))
+                             + Big (Double_Uns (D (2))),
+               Big (D (1) & D (2)),
+               Big_2xxSingle * Big (Double_Uns (D (3)))
+                             + Big (Double_Uns (D (4))));
+          pragma Assert (Big (D (1) & D (2)) < Big (Zu));
  
           --  Loop to compute quotient digits, runs twice for Qd (1) and Qd (2)
  
*************** is
*** 2484,2493 ****
--- 3152,3171 ----
              --  Local ghost variables
  
              Qd1  : Single_Uns := 0 with Ghost;
+             D234 : Big_Integer := 0 with Ghost;
              D123 : constant Big_Integer := Big3 (D (1), D (2), D (3))
                with Ghost;
+             D4   : constant Big_Integer := Big (Double_Uns (D (4)))
+               with Ghost;
  
           begin
+             Prove_Scaled_Mult_Decomposition_Regroup3
+               (Big (Double_Uns (D (1))),
+                Big (Double_Uns (D (2))),
+                Big (Double_Uns (D (3))),
+                Big (Double_Uns (D (4))));
+             pragma Assert (Mult * Big_2xx (Scale) = Big_2xxSingle * D123 + D4);
+ 
              for J in 1 .. 2 loop
                 Lemma_Hi_Lo (D (J) & D (J + 1), D (J), D (J + 1));
                 pragma Assert (Big (D (J) & D (J + 1)) < Big (Zu));
*************** is
*** 2506,2517 ****
--- 3184,3213 ----
                 elsif D (J) = Zhi then
                    Qd (J) := Single_Uns'Last;
  
+                   Lemma_Concat_Definition (D (J), D (J + 1));
+                   Lemma_Big_Of_Double_Uns_Of_Single_Uns (D (J + 2));
+                   pragma Assert (Big_2xxSingle > Big (Double_Uns (D (J + 2))));
+                   pragma Assert (Big3 (D (J), D (J + 1), 0) + Big_2xxSingle
+                                  > Big3 (D (J), D (J + 1), D (J + 2)));
+                   pragma Assert (Big (Double_Uns'(0)) = 0);
+                   pragma Assert (Big (D (J) & D (J + 1)) * Big_2xxSingle =
+                     Big_2xxSingle * (Big_2xxSingle * Big (Double_Uns (D (J)))
+                                               + Big (Double_Uns (D (J + 1)))));
+                   pragma Assert (Big (D (J) & D (J + 1)) * Big_2xxSingle =
+                     Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (J)))
+                                + Big_2xxSingle * Big (Double_Uns (D (J + 1))));
+                   pragma Assert (Big (D (J) & D (J + 1)) * Big_2xxSingle
+                                  = Big3 (D (J), D (J + 1), 0));
+                   pragma Assert ((Big (D (J) & D (J + 1)) + 1) * Big_2xxSingle
+                                  = Big3 (D (J), D (J + 1), 0) + Big_2xxSingle);
                    Lemma_Gt_Mult (Big (Zu), Big (D (J) & D (J + 1)) + 1,
                                   Big_2xxSingle,
                                   Big3 (D (J), D (J + 1), D (J + 2)));
                    Lemma_Div_Lt
                      (Big3 (D (J), D (J + 1), D (J + 2)),
                       Big_2xxSingle, Big (Zu));
+                   pragma Assert (Big (Double_Uns (Qd (J))) >=
+                     Big3 (D (J), D (J + 1), D (J + 2)) / Big (Zu));
  
                 else
                    Qd (J) := Lo ((D (J) & D (J + 1)) / Zhi);
*************** is
*** 2519,2524 ****
--- 3215,3221 ----
                    Prove_Qd_Calculation_Part_1 (J);
                 end if;
  
+                pragma Assert (for all K in 1 .. J => Qd (K)'Initialized);
                 Lemma_Gt_Mult
                   (Big (Double_Uns (Qd (J))),
                    Big3 (D (J), D (J + 1), D (J + 2)) / Big (Zu),
*************** is
*** 2553,2561 ****
                 Lemma_Hi_Lo_3 (Zu, Zhi, Zlo);
  
                 while not Le3 (S1, S2, S3, D (J), D (J + 1), D (J + 2)) loop
!                   pragma Loop_Invariant (Qd (J)'Initialized);
                    pragma Loop_Invariant
                      (Big3 (S1, S2, S3) = Big (Double_Uns (Qd (J))) * Big (Zu));
                    pragma Assert (Big3 (S1, S2, S3) > 0);
                    if Qd (J) = 0 then
                       pragma Assert (Big3 (S1, S2, S3) = 0);
--- 3250,3262 ----
                 Lemma_Hi_Lo_3 (Zu, Zhi, Zlo);
  
                 while not Le3 (S1, S2, S3, D (J), D (J + 1), D (J + 2)) loop
!                   pragma Loop_Invariant
!                     (for all K in 1 .. J => Qd (K)'Initialized);
!                   pragma Loop_Invariant (if J = 2 then Qd (1) = Qd1);
                    pragma Loop_Invariant
                      (Big3 (S1, S2, S3) = Big (Double_Uns (Qd (J))) * Big (Zu));
+                   pragma Loop_Invariant
+                     (Big3 (S1, S2, S3) > Big3 (D (J), D (J + 1), D (J + 2)));
                    pragma Assert (Big3 (S1, S2, S3) > 0);
                    if Qd (J) = 0 then
                       pragma Assert (Big3 (S1, S2, S3) = 0);
*************** is
*** 2571,2581 ****
                      (Big3 (S1, S2, S3) >
                         Big3 (D (J), D (J + 1), D (J + 2)) - Big (Zu));
                    Lemma_Subtract_Commutation (Double_Uns (Qd (J)), 1);
                    Lemma_Substitution (Big3 (S1, S2, S3), Big (Zu),
                                        Big (Double_Uns (Qd (J))) - 1,
                                        Big (Double_Uns (Qd (J) - 1)), 0);
  
!                   Qd (J) := Qd (J) - 1;
  
                    pragma Assert
                      (Big3 (S1, S2, S3) = Big (Double_Uns (Qd (J))) * Big (Zu));
--- 3272,3291 ----
                      (Big3 (S1, S2, S3) >
                         Big3 (D (J), D (J + 1), D (J + 2)) - Big (Zu));
                    Lemma_Subtract_Commutation (Double_Uns (Qd (J)), 1);
+                   pragma Assert (Double_Uns (Qd (J)) - Double_Uns'(1)
+                                  = Double_Uns (Qd (J) - 1));
+                   pragma Assert (Big (Double_Uns'(1)) = 1);
                    Lemma_Substitution (Big3 (S1, S2, S3), Big (Zu),
                                        Big (Double_Uns (Qd (J))) - 1,
                                        Big (Double_Uns (Qd (J) - 1)), 0);
  
!                   declare
!                      Prev : constant Single_Uns := Qd (J) - 1 with Ghost;
!                   begin
!                      Qd (J) := Qd (J) - 1;
! 
!                      pragma Assert (Qd (J) = Prev);
!                   end;
  
                    pragma Assert
                      (Big3 (S1, S2, S3) = Big (Double_Uns (Qd (J))) * Big (Zu));
*************** is
*** 2583,2588 ****
--- 3293,3299 ----
  
                 --  Now subtract S1&S2&S3 from D1&D2&D3 ready for next step
  
+                pragma Assert (for all K in 1 .. J => Qd (K)'Initialized);
                 pragma Assert
                   (Big3 (S1, S2, S3) = Big (Double_Uns (Qd (J))) * Big (Zu));
                 pragma Assert (Big3 (S1, S2, S3) >
*************** is
*** 2593,2612 ****
  
                 pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) < Big (Zu));
                 if D (J) > 0 then
!                   pragma Assert
!                     (Big_2xxSingle * Big_2xxSingle = Big_2xxDouble);
                    pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) =
                      Big_2xxSingle
                        * Big_2xxSingle * Big (Double_Uns (D (J)))
                        + Big_2xxSingle * Big (Double_Uns (D (J + 1)))
                                        + Big (Double_Uns (D (J + 2))));
!                   pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) =
!                     Big_2xxDouble * Big (Double_Uns (D (J)))
!                   + Big_2xxSingle * Big (Double_Uns (D (J + 1)))
!                                   + Big (Double_Uns (D (J + 2))));
!                   pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) >=
!                                    Big_2xxDouble * Big (Double_Uns (D (J))));
                    Lemma_Ge_Commutation (Double_Uns (D (J)), Double_Uns'(1));
                    pragma Assert
                      (Big3 (D (J), D (J + 1), D (J + 2)) >= Big_2xxDouble);
                    pragma Assert (False);
--- 3304,3348 ----
  
                 pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) < Big (Zu));
                 if D (J) > 0 then
!                   Lemma_Double_Big_2xxSingle;
                    pragma Assert (Big3 (D (J), D (J + 1), D (J + 2)) =
                      Big_2xxSingle
                        * Big_2xxSingle * Big (Double_Uns (D (J)))
                        + Big_2xxSingle * Big (Double_Uns (D (J + 1)))
                                        + Big (Double_Uns (D (J + 2))));
!                   pragma Assert (Big_2xxSingle >= 0);
!                   Lemma_Big_Of_Double_Uns_Of_Single_Uns (D (J + 1));
!                   pragma Assert (Big (Double_Uns (D (J + 1))) >= 0);
!                   Lemma_Mult_Non_Negative
!                     (Big_2xxSingle, Big (Double_Uns (D (J + 1))));
!                   pragma Assert
!                     (By (Big3 (D (J), D (J + 1), D (J + 2)) >=
!                        Big_2xxSingle * Big_2xxSingle
!                        * Big (Double_Uns (D (J))),
!                      By (Big3 (D (J), D (J + 1), D (J + 2))
!                      - Big_2xxSingle * Big_2xxSingle
!                        * Big (Double_Uns (D (J)))
!                      = Big_2xxSingle * Big (Double_Uns (D (J + 1)))
!                                      + Big (Double_Uns (D (J + 2))),
!                      Big3 (D (J), D (J + 1), D (J + 2)) =
!                        Big_2xxSingle
!                        * Big_2xxSingle * Big (Double_Uns (D (J)))
!                        + Big_2xxSingle * Big (Double_Uns (D (J + 1)))
!                                        + Big (Double_Uns (D (J + 2))))
!                        and then
!                      By (Big_2xxSingle * Big (Double_Uns (D (J + 1)))
!                                        + Big (Double_Uns (D (J + 2))) >= 0,
!                      Big_2xxSingle * Big (Double_Uns (D (J + 1))) >= 0
!                        and then
!                      Big (Double_Uns (D (J + 2))) >= 0
!                     )));
                    Lemma_Ge_Commutation (Double_Uns (D (J)), Double_Uns'(1));
+                   Lemma_Ge_Mult (Big (Double_Uns (D (J))),
+                                  Big (Double_Uns'(1)),
+                                  Big_2xxDouble,
+                                  Big (Double_Uns'(1)) * Big_2xxDouble);
+                   pragma Assert
+                     (Big_2xxDouble * Big (Double_Uns'(1)) = Big_2xxDouble);
                    pragma Assert
                      (Big3 (D (J), D (J + 1), D (J + 2)) >= Big_2xxDouble);
                    pragma Assert (False);
*************** is
*** 2614,2619 ****
--- 3350,3357 ----
  
                 if J = 1 then
                    Qd1 := Qd (1);
+                   D234 := Big3 (D (2), D (3), D (4));
+                   pragma Assert (D4 = Big (Double_Uns (D (4))));
                    Lemma_Substitution
                      (Mult * Big_2xx (Scale), Big_2xxSingle, D123,
                       Big3 (D (1), D (2), D (3)) + Big3 (S1, S2, S3),
*************** is
*** 2622,2644 ****
                    Lemma_Substitution (Mult * Big_2xx (Scale), Big_2xxSingle,
                                        Big3 (S1, S2, S3),
                                        Big (Double_Uns (Qd1)) * Big (Zu),
!                                       Big3 (D (2), D (3), D (4)));
                 else
                    pragma Assert (Qd1 = Qd (1));
                    pragma Assert
!                     (Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                      = 0);
!                   pragma Assert
!                     (Mult * Big_2xx (Scale) =
!                        Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu)
                       + Big3 (S1, S2, S3)
!                      + Big3 (D (2), D (3), D (4)));
                    pragma Assert
!                     (Mult * Big_2xx (Scale) =
                         Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu)
                                       + Big (Double_Uns (Qd (2))) * Big (Zu)
                       + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                      + Big (Double_Uns (D (4))));
                 end if;
              end loop;
           end;
--- 3360,3397 ----
                    Lemma_Substitution (Mult * Big_2xx (Scale), Big_2xxSingle,
                                        Big3 (S1, S2, S3),
                                        Big (Double_Uns (Qd1)) * Big (Zu),
!                                       D234);
                 else
                    pragma Assert (Qd1 = Qd (1));
                    pragma Assert
!                     (By (Mult * Big_2xx (Scale) =
!                        Big_2xxSingle * Big (Double_Uns (Qd1)) * Big (Zu)
                       + Big3 (S1, S2, S3)
!                      + Big3 (D (2), D (3), D (4)),
!                      Big3 (D (2), D (3), D (4)) = D234 - Big3 (S1, S2, S3)));
                    pragma Assert
!                     (By (Mult * Big_2xx (Scale) =
                         Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu)
                                       + Big (Double_Uns (Qd (2))) * Big (Zu)
                       + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                      + Big (Double_Uns (D (4))),
!                      Big_2xxSingle * Big (Double_Uns (Qd (1))) * Big (Zu)
!                        = Big_2xxSingle * Big (Double_Uns (Qd1)) * Big (Zu)
!                        and then
!                      Big3 (S1, S2, S3) = Big (Double_Uns (Qd (2))) * Big (Zu)
!                        and then
!                      By (Big3 (D (2), D (3), D (4))
!                          = Big_2xxSingle * Big (Double_Uns (D (3)))
!                                          + Big (Double_Uns (D (4))),
!                         Big3 (D (2), D (3), D (4))
!                          = Big_2xxSingle * Big_2xxSingle *
!                            Big (Double_Uns (D (2)))
!                            + Big_2xxSingle * Big (Double_Uns (D (3)))
!                                            + Big (Double_Uns (D (4)))
!                           and then
!                        Big_2xxSingle * Big_2xxSingle * Big (Double_Uns (D (2)))
!                         = 0)
!                     ));
                 end if;
              end loop;
           end;
*************** is
*** 2650,2655 ****
--- 3403,3409 ----
           --  We rescale the divisor as well, to make the proper comparison
           --  for rounding below.
  
+          pragma Assert (for all K in 1 .. 2 => Qd (K)'Initialized);
           Qu := Qd (1) & Qd (2);
           Ru := D (3) & D (4);
  
*************** is
*** 2771,2784 ****
          Ghost,
          Pre  => X2 < Y2,
          Post => Big3 (X1, X2 - Y2, X3)
!               = Big3 (X1, X2, X3) + Big3 (1, 0, 0) - Big3 (0, Y2, 0);
  
        procedure Lemma_Sub3_With_Carry3 (X1, X2, X3, Y3 : Single_Uns)
        with
          Ghost,
          Pre  => X3 < Y3,
          Post => Big3 (X1, X2, X3 - Y3)
!               = Big3 (X1, X2, X3) + Big3 (0, 1, 0) - Big3 (0, 0, Y3);
  
        -------------------------
        -- Lemma_Add3_No_Carry --
--- 3525,3538 ----
          Ghost,
          Pre  => X2 < Y2,
          Post => Big3 (X1, X2 - Y2, X3)
!           = Big3 (X1, X2, X3) + Big3 (Single_Uns'(1), 0, 0) - Big3 (0, Y2, 0);
  
        procedure Lemma_Sub3_With_Carry3 (X1, X2, X3, Y3 : Single_Uns)
        with
          Ghost,
          Pre  => X3 < Y3,
          Post => Big3 (X1, X2, X3 - Y3)
!           = Big3 (X1, X2, X3) + Big3 (Single_Uns'(0), 1, 0) - Big3 (0, 0, Y3);
  
        -------------------------
        -- Lemma_Add3_No_Carry --
*************** is
*** 2853,2862 ****
              X1 := X1 - 1;
  
              pragma Assert
!               (Big3 (X1, X2, X3) = Big3 (XX1, XX2, XX3) - Big3 (1, 0, 0));
              pragma Assert
                (Big3 (X1, X2, X3) = Big3 (XX1, XX2, XX3)
!                - Big3 (0, Single_Uns'Last, 0) - Big3 (0, 1, 0));
              Lemma_Add3_No_Carry (X1, X2, X3, 0, Single_Uns'Last, 0);
           else
              Lemma_Sub3_No_Carry (X1, X2, X3, 0, 1, 0);
--- 3607,3618 ----
              X1 := X1 - 1;
  
              pragma Assert
!               (Big3 (X1, X2, X3) =
!                  Big3 (XX1, XX2, XX3) - Big3 (Single_Uns'(1), 0, 0));
              pragma Assert
                (Big3 (X1, X2, X3) = Big3 (XX1, XX2, XX3)
!                - Big3 (Single_Uns'(0), Single_Uns'Last, 0)
!                - Big3 (Single_Uns'(0), 1, 0));
              Lemma_Add3_No_Carry (X1, X2, X3, 0, Single_Uns'Last, 0);
           else
              Lemma_Sub3_No_Carry (X1, X2, X3, 0, 1, 0);
*************** is
*** 2865,2871 ****
           X2 := X2 - 1;
  
           pragma Assert
!            (Big3 (X1, X2, X3) = Big3 (XX1, XX2, XX3) - Big3 (0, 1, 0));
           Lemma_Sub3_With_Carry3 (X1, X2, X3, Y3);
        else
           Lemma_Sub3_No_Carry (X1, X2, X3, 0, 0, Y3);
--- 3621,3628 ----
           X2 := X2 - 1;
  
           pragma Assert
!            (Big3 (X1, X2, X3) =
!               Big3 (XX1, XX2, XX3) - Big3 (Single_Uns'(0), 1, 0));
           Lemma_Sub3_With_Carry3 (X1, X2, X3, Y3);
        else
           Lemma_Sub3_No_Carry (X1, X2, X3, 0, 0, Y3);
*************** is
*** 2884,2890 ****
  
           pragma Assert
             (Big3 (X1, X2, X3) = Big3 (XX1, XX2, XX3)
!             - Big3 (0, 0, Y3) - Big3 (1, 0, 0));
           Lemma_Sub3_With_Carry2 (X1, X2, X3, Y2);
        else
           Lemma_Sub3_No_Carry (X1, X2, X3, 0, Y2, 0);
--- 3641,3647 ----
  
           pragma Assert
             (Big3 (X1, X2, X3) = Big3 (XX1, XX2, XX3)
!             - Big3 (0, 0, Y3) - Big3 (Single_Uns'(1), 0, 0));
           Lemma_Sub3_With_Carry2 (X1, X2, X3, Y2);
        else
           Lemma_Sub3_No_Carry (X1, X2, X3, 0, Y2, 0);
*************** is
*** 2972,2977 ****
--- 3729,3735 ----
              begin
                 pragma Assert (Ru = Double_Uns (X) - Double_Uns (Y));
                 if Ru < 2 ** (Double_Size - 1) then  --  R >= 0
+                   pragma Assert (To_Uns (Y) <= To_Uns (X));
                    Lemma_Subtract_Double_Uns (X => Y, Y => X);
                    pragma Assert (Ru = Double_Uns (X - Y));
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-aridou.ads gcc-13.1.0/gcc/ada/libgnat/s-aridou.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-aridou.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-aridou.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,40 ****
  --  or intermediate results are longer than the result type.
  
  with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
- use Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
  
  generic
  
--- 34,39 ----
*************** is
*** 67,86 ****
                              Contract_Cases => Ignore,
                              Ghost          => Ignore);
  
!    package Signed_Conversion is new Signed_Conversions (Int => Double_Int);
  
     function Big (Arg : Double_Int) return Big_Integer is
       (Signed_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
!    package Unsigned_Conversion is new Unsigned_Conversions (Int => Double_Uns);
  
     function Big (Arg : Double_Uns) return Big_Integer is
       (Unsigned_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
     function In_Double_Int_Range (Arg : Big_Integer) return Boolean is
!      (In_Range (Arg, Big (Double_Int'First), Big (Double_Int'Last)))
     with Ghost;
  
     function Add_With_Ovflo_Check (X, Y : Double_Int) return Double_Int
--- 66,93 ----
                              Contract_Cases => Ignore,
                              Ghost          => Ignore);
  
!    package BI_Ghost renames Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
!    subtype Big_Integer is BI_Ghost.Big_Integer with Ghost;
!    subtype Big_Natural is BI_Ghost.Big_Natural with Ghost;
!    subtype Big_Positive is BI_Ghost.Big_Positive with Ghost;
!    use type BI_Ghost.Big_Integer;
! 
!    package Signed_Conversion is
!      new BI_Ghost.Signed_Conversions (Int => Double_Int);
  
     function Big (Arg : Double_Int) return Big_Integer is
       (Signed_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
!    package Unsigned_Conversion is
!      new BI_Ghost.Unsigned_Conversions (Int => Double_Uns);
  
     function Big (Arg : Double_Uns) return Big_Integer is
       (Unsigned_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
     function In_Double_Int_Range (Arg : Big_Integer) return Boolean is
!      (BI_Ghost.In_Range (Arg, Big (Double_Int'First), Big (Double_Int'Last)))
     with Ghost;
  
     function Add_With_Ovflo_Check (X, Y : Double_Int) return Double_Int
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-arit128.adb gcc-13.1.0/gcc/ada/libgnat/s-arit128.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-arit128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-arit128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-arit128.ads gcc-13.1.0/gcc/ada/libgnat/s-arit128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-arit128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-arit128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-arit32.adb gcc-13.1.0/gcc/ada/libgnat/s-arit32.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-arit32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-arit32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 104,110 ****
  
     function To_Neg_Int (A : Uns32) return Int32
     with
!      Annotate => (GNATprove, Terminating),
       Pre      => In_Int32_Range (-Big (A)),
       Post     => Big (To_Neg_Int'Result) = -Big (A);
     --  Convert to negative integer equivalent. If the input is in the range
--- 104,110 ----
  
     function To_Neg_Int (A : Uns32) return Int32
     with
!      Annotate => (GNATprove, Always_Return),
       Pre      => In_Int32_Range (-Big (A)),
       Post     => Big (To_Neg_Int'Result) = -Big (A);
     --  Convert to negative integer equivalent. If the input is in the range
*************** is
*** 114,120 ****
  
     function To_Pos_Int (A : Uns32) return Int32
     with
!      Annotate => (GNATprove, Terminating),
       Pre      => In_Int32_Range (Big (A)),
       Post     => Big (To_Pos_Int'Result) = Big (A);
     --  Convert to positive integer equivalent. If the input is in the range
--- 114,120 ----
  
     function To_Pos_Int (A : Uns32) return Int32
     with
!      Annotate => (GNATprove, Always_Return),
       Pre      => In_Int32_Range (Big (A)),
       Post     => Big (To_Pos_Int'Result) = Big (A);
     --  Convert to positive integer equivalent. If the input is in the range
*************** is
*** 474,479 ****
--- 474,480 ----
  
        D := Uns64 (Xu) * Uns64 (Yu);
  
+       Lemma_Abs_Mult_Commutation (Big (X), Big (Y));
        pragma Assert (Mult = Big (D));
        Lemma_Hi_Lo (D, Hi (D), Lo (D));
        pragma Assert (Mult = Big_2xx32 * Big (Hi (D)) + Big (Lo (D)));
*************** is
*** 508,514 ****
  
        Lemma_Abs_Div_Commutation (Big (X) * Big (Y), Big (Z));
        Lemma_Abs_Rem_Commutation (Big (X) * Big (Y), Big (Z));
-       Lemma_Abs_Mult_Commutation (Big (X), Big (Y));
        Lemma_Abs_Commutation (X);
        Lemma_Abs_Commutation (Y);
        Lemma_Abs_Commutation (Z);
--- 509,514 ----
*************** is
*** 541,548 ****
--- 541,550 ----
           end if;
        end if;
  
+       pragma Assert (In_Int32_Range (Big_Q));
        pragma Assert (Big (Qu) = abs Big_Q);
        pragma Assert (Big (Ru) = abs Big_R);
+       Prove_Sign_R;
  
        --  Set final signs (RM 4.5.5(27-30))
  
*************** is
*** 563,569 ****
           Q := (if Z > 0 then To_Neg_Int (Qu) else To_Pos_Int (Qu));
        end if;
  
-       Prove_Sign_R;
        Prove_Signs;
     end Scaled_Divide32;
  
--- 565,570 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-arit32.ads gcc-13.1.0/gcc/ada/libgnat/s-arit32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-arit32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-arit32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-arit64.adb gcc-13.1.0/gcc/ada/libgnat/s-arit64.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-arit64.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-arit64.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-arit64.ads gcc-13.1.0/gcc/ada/libgnat/s-arit64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-arit64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-arit64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-assert.adb gcc-13.1.0/gcc/ada/libgnat/s-assert.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-assert.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-assert.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-assert.ads gcc-13.1.0/gcc/ada/libgnat/s-assert.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-assert.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-assert.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atacco.adb gcc-13.1.0/gcc/ada/libgnat/s-atacco.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-atacco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atacco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atacco.ads gcc-13.1.0/gcc/ada/libgnat/s-atacco.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-atacco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atacco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System.Address_To_Access_Convers
*** 54,61 ****
     --  optimizations that may cause unexpected results based on the assumption
     --  of no strict aliasing.
  
!    function To_Pointer (Value : Address)        return Object_Pointer;
!    function To_Address (Value : Object_Pointer) return Address;
  
     pragma Import (Intrinsic, To_Pointer);
     pragma Import (Intrinsic, To_Address);
--- 54,65 ----
     --  optimizations that may cause unexpected results based on the assumption
     --  of no strict aliasing.
  
!    function To_Pointer (Value : Address)        return Object_Pointer with
!      Global   => null,
!      Annotate => (GNATprove, Always_Return);
!    function To_Address (Value : Object_Pointer) return Address with
!      SPARK_Mode => Off,
!      Annotate => (GNATprove, Always_Return);
  
     pragma Import (Intrinsic, To_Pointer);
     pragma Import (Intrinsic, To_Address);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atocou.adb gcc-13.1.0/gcc/ada/libgnat/s-atocou.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-atocou.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atocou.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atocou.ads gcc-13.1.0/gcc/ada/libgnat/s-atocou.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-atocou.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atocou.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atocou__builtin.adb gcc-13.1.0/gcc/ada/libgnat/s-atocou__builtin.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-atocou__builtin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atocou__builtin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atoope.ads gcc-13.1.0/gcc/ada/libgnat/s-atoope.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-atoope.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atoope.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atopex.adb gcc-13.1.0/gcc/ada/libgnat/s-atopex.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-atopex.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atopex.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, Free Software Foundation, Inc.  --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atopex.ads gcc-13.1.0/gcc/ada/libgnat/s-atopex.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-atopex.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atopex.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                 Copyright (C) 2019-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atopri.adb gcc-13.1.0/gcc/ada/libgnat/s-atopri.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-atopri.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atopri.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --              Copyright (C) 2012-2022, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --              Copyright (C) 2012-2023, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-atopri.ads gcc-13.1.0/gcc/ada/libgnat/s-atopri.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-atopri.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-atopri.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --              Copyright (C) 2012-2022, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --              Copyright (C) 2012-2023, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-auxdec.adb gcc-13.1.0/gcc/ada/libgnat/s-auxdec.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-auxdec.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-auxdec.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/Or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/Or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-auxdec.ads gcc-13.1.0/gcc/ada/libgnat/s-auxdec.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-auxdec.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-auxdec.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bignum.adb gcc-13.1.0/gcc/ada/libgnat/s-bignum.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-bignum.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bignum.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,35 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Ada.Unchecked_Conversion;
  with System.Generic_Bignums;
  with System.Secondary_Stack;  use System.Secondary_Stack;
  with System.Shared_Bignums;   use System.Shared_Bignums;
--- 29,34 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bignum.ads gcc-13.1.0/gcc/ada/libgnat/s-bignum.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-bignum.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bignum.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bitfie.ads gcc-13.1.0/gcc/ada/libgnat/s-bitfie.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-bitfie.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bitfie.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019-2022, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019-2023, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bitops.adb gcc-13.1.0/gcc/ada/libgnat/s-bitops.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-bitops.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bitops.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1996-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1996-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bitops.ads gcc-13.1.0/gcc/ada/libgnat/s-bitops.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-bitops.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bitops.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bituti.adb gcc-13.1.0/gcc/ada/libgnat/s-bituti.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-bituti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bituti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --               Copyright (C) 2019-2022, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --               Copyright (C) 2019-2023, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bituti.ads gcc-13.1.0/gcc/ada/libgnat/s-bituti.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-bituti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bituti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019-2022, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --               Copyright (C) 2019-2023, Free Software Foundation, Inc.    --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-boarop.ads gcc-13.1.0/gcc/ada/libgnat/s-boarop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-boarop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-boarop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-boustr.adb gcc-13.1.0/gcc/ada/libgnat/s-boustr.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-boustr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-boustr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-boustr.ads gcc-13.1.0/gcc/ada/libgnat/s-boustr.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-boustr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-boustr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                       Copyright (C) 2016-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-bytswa.ads gcc-13.1.0/gcc/ada/libgnat/s-bytswa.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-bytswa.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-bytswa.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2006-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-carsi8.adb gcc-13.1.0/gcc/ada/libgnat/s-carsi8.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-carsi8.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-carsi8.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-carsi8.ads gcc-13.1.0/gcc/ada/libgnat/s-carsi8.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-carsi8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-carsi8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-carun8.adb gcc-13.1.0/gcc/ada/libgnat/s-carun8.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-carun8.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-carun8.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-carun8.ads gcc-13.1.0/gcc/ada/libgnat/s-carun8.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-carun8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-carun8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi128.adb gcc-13.1.0/gcc/ada/libgnat/s-casi128.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-casi128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi128.ads gcc-13.1.0/gcc/ada/libgnat/s-casi128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-casi128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi16.adb gcc-13.1.0/gcc/ada/libgnat/s-casi16.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-casi16.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi16.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi16.ads gcc-13.1.0/gcc/ada/libgnat/s-casi16.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-casi16.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi16.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi32.adb gcc-13.1.0/gcc/ada/libgnat/s-casi32.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-casi32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi32.ads gcc-13.1.0/gcc/ada/libgnat/s-casi32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-casi32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi64.adb gcc-13.1.0/gcc/ada/libgnat/s-casi64.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-casi64.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi64.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casi64.ads gcc-13.1.0/gcc/ada/libgnat/s-casi64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-casi64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casi64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casuti.adb gcc-13.1.0/gcc/ada/libgnat/s-casuti.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-casuti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casuti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-casuti.ads gcc-13.1.0/gcc/ada/libgnat/s-casuti.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-casuti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-casuti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun128.adb gcc-13.1.0/gcc/ada/libgnat/s-caun128.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-caun128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun128.ads gcc-13.1.0/gcc/ada/libgnat/s-caun128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-caun128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun16.adb gcc-13.1.0/gcc/ada/libgnat/s-caun16.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-caun16.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun16.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun16.ads gcc-13.1.0/gcc/ada/libgnat/s-caun16.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-caun16.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun16.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun32.adb gcc-13.1.0/gcc/ada/libgnat/s-caun32.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-caun32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun32.ads gcc-13.1.0/gcc/ada/libgnat/s-caun32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-caun32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun64.adb gcc-13.1.0/gcc/ada/libgnat/s-caun64.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-caun64.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun64.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-caun64.ads gcc-13.1.0/gcc/ada/libgnat/s-caun64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-caun64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-caun64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-chepoo.ads gcc-13.1.0/gcc/ada/libgnat/s-chepoo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-chepoo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-chepoo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-commun.adb gcc-13.1.0/gcc/ada/libgnat/s-commun.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-commun.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-commun.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-commun.ads gcc-13.1.0/gcc/ada/libgnat/s-commun.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-commun.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-commun.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca2.adb gcc-13.1.0/gcc/ada/libgnat/s-conca2.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca2.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca2.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Concat_2 is
*** 46,71 ****
        R (F .. L) := S1;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S2;
     end Str_Concat_2;
  
-    -------------------------
-    -- Str_Concat_Bounds_2 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_2
-      (Lo, Hi : out Natural;
-       S1, S2 : String)
-    is
-    begin
-       if S1 = "" then
-          Lo := S2'First;
-          Hi := S2'Last;
-       else
-          Lo := S1'First;
-          Hi := S1'Last + S2'Length;
-       end if;
-    end Str_Concat_Bounds_2;
- 
  end System.Concat_2;
--- 46,53 ----
        R (F .. L) := S1;
  
        F := L + 1;
!       L := F + S2'Length - 1;
        R (F .. L) := S2;
     end Str_Concat_2;
  
  end System.Concat_2;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca2.ads gcc-13.1.0/gcc/ada/libgnat/s-conca2.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca2.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca2.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_2 is
*** 36,50 ****
  
     procedure Str_Concat_2 (R : out String; S1, S2 : String);
     --  Performs the operation R := S1 & S2. The bounds of R are known to be
!    --  correct (usually set by a call to the Str_Concat_Bounds_2 procedure
!    --  below), so no bounds checks are required, and it is known that none of
     --  the input operands overlaps R. No assumptions can be made about the
     --  lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_2
-      (Lo, Hi : out Natural;
-       S1, S2 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the two
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_2;
--- 36,43 ----
  
     procedure Str_Concat_2 (R : out String; S1, S2 : String);
     --  Performs the operation R := S1 & S2. The bounds of R are known to be
!    --  sufficient so no bound checks are required, and it is known that none of
     --  the input operands overlaps R. No assumptions can be made about the
     --  lower bounds of any of the operands.
  
  end System.Concat_2;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca3.adb gcc-13.1.0/gcc/ada/libgnat/s-conca3.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca3.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca3.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_2;
- 
  package body System.Concat_3 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_3 is
*** 52,76 ****
        R (F .. L) := S2;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S3;
     end Str_Concat_3;
  
-    -------------------------
-    -- Str_Concat_Bounds_3 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_3
-      (Lo, Hi     : out Natural;
-       S1, S2, S3 : String)
-    is
-    begin
-       System.Concat_2.Str_Concat_Bounds_2 (Lo, Hi, S2, S3);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_3;
- 
  end System.Concat_3;
--- 50,57 ----
        R (F .. L) := S2;
  
        F := L + 1;
!       L := F + S3'Length - 1;
        R (F .. L) := S3;
     end Str_Concat_3;
  
  end System.Concat_3;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca3.ads gcc-13.1.0/gcc/ada/libgnat/s-conca3.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca3.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca3.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_3 is
*** 36,50 ****
  
     procedure Str_Concat_3 (R : out String; S1, S2, S3 : String);
     --  Performs the operation R := S1 & S2 & S3. The bounds of R are known to
!    --  be correct (usually set by a call to the Str_Concat_Bounds_3 procedure
!    --  below), so no bounds checks are required, and it is known that none of
!    --  the input operands overlaps R. No assumptions can be made about the
     --  lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_3
-      (Lo, Hi     : out Natural;
-       S1, S2, S3 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the three
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_3;
--- 36,43 ----
  
     procedure Str_Concat_3 (R : out String; S1, S2, S3 : String);
     --  Performs the operation R := S1 & S2 & S3. The bounds of R are known to
!    --  be sufficient so no bound checks are required, and it is known that none
!    --  of the input operands overlaps R. No assumptions can be made about the
     --  lower bounds of any of the operands.
  
  end System.Concat_3;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca4.adb gcc-13.1.0/gcc/ada/libgnat/s-conca4.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca4.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca4.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_3;
- 
  package body System.Concat_4 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_4 is
*** 56,80 ****
        R (F .. L) := S3;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S4;
     end Str_Concat_4;
  
-    -------------------------
-    -- Str_Concat_Bounds_4 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_4
-      (Lo, Hi         : out Natural;
-       S1, S2, S3, S4 : String)
-    is
-    begin
-       System.Concat_3.Str_Concat_Bounds_3 (Lo, Hi, S2, S3, S4);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_4;
- 
  end System.Concat_4;
--- 54,61 ----
        R (F .. L) := S3;
  
        F := L + 1;
!       L := F + S4'Length - 1;
        R (F .. L) := S4;
     end Str_Concat_4;
  
  end System.Concat_4;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca4.ads gcc-13.1.0/gcc/ada/libgnat/s-conca4.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca4.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca4.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_4 is
*** 36,50 ****
  
     procedure Str_Concat_4 (R : out String; S1, S2, S3, S4 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4. The bounds
!    --  of R are known to be correct (usually set by a call to the
!    --  Str_Concat_Bounds_5 procedure below), so no bounds checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_4
-      (Lo, Hi         : out Natural;
-       S1, S2, S3, S4 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the four
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_4;
--- 36,43 ----
  
     procedure Str_Concat_4 (R : out String; S1, S2, S3, S4 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4. The bounds
!    --  of R are known to be sufficient so no bound checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
  end System.Concat_4;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca5.adb gcc-13.1.0/gcc/ada/libgnat/s-conca5.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca5.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca5.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_4;
- 
  package body System.Concat_5 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_5 is
*** 60,84 ****
        R (F .. L) := S4;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S5;
     end Str_Concat_5;
  
-    -------------------------
-    -- Str_Concat_Bounds_5 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_5
-      (Lo, Hi             : out Natural;
-       S1, S2, S3, S4, S5 : String)
-    is
-    begin
-       System.Concat_4.Str_Concat_Bounds_4 (Lo, Hi, S2, S3, S4, S5);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_5;
- 
  end System.Concat_5;
--- 58,65 ----
        R (F .. L) := S4;
  
        F := L + 1;
!       L := F + S5'Length - 1;
        R (F .. L) := S5;
     end Str_Concat_5;
  
  end System.Concat_5;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca5.ads gcc-13.1.0/gcc/ada/libgnat/s-conca5.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca5.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca5.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_5 is
*** 36,50 ****
  
     procedure Str_Concat_5 (R : out String; S1, S2, S3, S4, S5 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5. The bounds
!    --  of R are known to be correct (usually set by a call to the
!    --  Str_Concat_Bounds_5 procedure below), so no bounds checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_5
-      (Lo, Hi             : out Natural;
-       S1, S2, S3, S4, S5 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the five
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_5;
--- 36,43 ----
  
     procedure Str_Concat_5 (R : out String; S1, S2, S3, S4, S5 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5. The bounds
!    --  of R are known to be sufficient so no bound checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
  end System.Concat_5;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca6.adb gcc-13.1.0/gcc/ada/libgnat/s-conca6.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca6.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca6.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_5;
- 
  package body System.Concat_6 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_6 is
*** 64,88 ****
        R (F .. L) := S5;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S6;
     end Str_Concat_6;
  
-    -------------------------
-    -- Str_Concat_Bounds_6 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_6
-      (Lo, Hi                 : out Natural;
-       S1, S2, S3, S4, S5, S6 : String)
-    is
-    begin
-       System.Concat_5.Str_Concat_Bounds_5 (Lo, Hi, S2, S3, S4, S5, S6);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_6;
- 
  end System.Concat_6;
--- 62,69 ----
        R (F .. L) := S5;
  
        F := L + 1;
!       L := F + S6'Length - 1;
        R (F .. L) := S6;
     end Str_Concat_6;
  
  end System.Concat_6;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca6.ads gcc-13.1.0/gcc/ada/libgnat/s-conca6.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca6.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca6.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_6 is
*** 36,50 ****
  
     procedure Str_Concat_6 (R : out String; S1, S2, S3, S4, S5, S6 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6. The
!    --  bounds of R are known to be correct (usually set by a call to the
!    --  Str_Concat_Bounds_6 procedure below), so no bounds checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_6
-      (Lo, Hi                 : out Natural;
-       S1, S2, S3, S4, S5, S6 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the six
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_6;
--- 36,43 ----
  
     procedure Str_Concat_6 (R : out String; S1, S2, S3, S4, S5, S6 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6. The
!    --  bounds of R are known to be sufficient so no bound checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
  end System.Concat_6;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca7.adb gcc-13.1.0/gcc/ada/libgnat/s-conca7.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca7.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca7.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_6;
- 
  package body System.Concat_7 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_7 is
*** 71,95 ****
        R (F .. L) := S6;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S7;
     end Str_Concat_7;
  
-    -------------------------
-    -- Str_Concat_Bounds_7 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_7
-      (Lo, Hi                     : out Natural;
-       S1, S2, S3, S4, S5, S6, S7 : String)
-    is
-    begin
-       System.Concat_6.Str_Concat_Bounds_6 (Lo, Hi, S2, S3, S4, S5, S6, S7);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_7;
- 
  end System.Concat_7;
--- 69,76 ----
        R (F .. L) := S6;
  
        F := L + 1;
!       L := F + S7'Length - 1;
        R (F .. L) := S7;
     end Str_Concat_7;
  
  end System.Concat_7;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca7.ads gcc-13.1.0/gcc/ada/libgnat/s-conca7.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca7.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca7.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_7 is
*** 38,52 ****
       (R                          : out String;
        S1, S2, S3, S4, S5, S6, S7 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7. The
!    --  bounds of R are known to be correct (usually set by a call to the
!    --  Str_Concat_Bounds_8 procedure below), so no bounds checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_7
-      (Lo, Hi                     : out Natural;
-       S1, S2, S3, S4, S5, S6, S7 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the seven
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_7;
--- 38,45 ----
       (R                          : out String;
        S1, S2, S3, S4, S5, S6, S7 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7. The
!    --  bounds of R are known to be sufficient so no bound checks are required,
     --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
  end System.Concat_7;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca8.adb gcc-13.1.0/gcc/ada/libgnat/s-conca8.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca8.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca8.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_7;
- 
  package body System.Concat_8 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_8 is
*** 75,100 ****
        R (F .. L) := S7;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S8;
     end Str_Concat_8;
  
-    -------------------------
-    -- Str_Concat_Bounds_8 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_8
-      (Lo, Hi                         : out Natural;
-       S1, S2, S3, S4, S5, S6, S7, S8 : String)
-    is
-    begin
-       System.Concat_7.Str_Concat_Bounds_7
-         (Lo, Hi, S2, S3, S4, S5, S6, S7, S8);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_8;
- 
  end System.Concat_8;
--- 73,80 ----
        R (F .. L) := S7;
  
        F := L + 1;
!       L := F + S8'Length - 1;
        R (F .. L) := S8;
     end Str_Concat_8;
  
  end System.Concat_8;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca8.ads gcc-13.1.0/gcc/ada/libgnat/s-conca8.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_8 is
*** 38,52 ****
       (R                              : out String;
        S1, S2, S3, S4, S5, S6, S7, S8 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8.
!    --  The bounds of R are known to be correct (usually set by a call to the
!    --  Str_Concat_Bounds_8 procedure below), so no bounds checks are required,
!    --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_8
-      (Lo, Hi                         : out Natural;
-       S1, S2, S3, S4, S5, S6, S7, S8 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the eight
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_8;
--- 38,45 ----
       (R                              : out String;
        S1, S2, S3, S4, S5, S6, S7, S8 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8.
!    --  The bounds of R are known to be sufficient so no bound checks are
!    --  required and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
  end System.Concat_8;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca9.adb gcc-13.1.0/gcc/ada/libgnat/s-conca9.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-conca9.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca9.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Concat_8;
- 
  package body System.Concat_9 is
  
     pragma Suppress (All_Checks);
--- 29,34 ----
*************** package body System.Concat_9 is
*** 79,104 ****
        R (F .. L) := S8;
  
        F := L + 1;
!       L := R'Last;
        R (F .. L) := S9;
     end Str_Concat_9;
  
-    -------------------------
-    -- Str_Concat_Bounds_9 --
-    -------------------------
- 
-    procedure Str_Concat_Bounds_9
-      (Lo, Hi                             : out Natural;
-       S1, S2, S3, S4, S5, S6, S7, S8, S9 : String)
-    is
-    begin
-       System.Concat_8.Str_Concat_Bounds_8
-         (Lo, Hi, S2, S3, S4, S5, S6, S7, S8, S9);
- 
-       if S1 /= "" then
-          Hi := S1'Last + Hi - Lo + 1;
-          Lo := S1'First;
-       end if;
-    end Str_Concat_Bounds_9;
- 
  end System.Concat_9;
--- 77,84 ----
        R (F .. L) := S8;
  
        F := L + 1;
!       L := F + S9'Length - 1;
        R (F .. L) := S9;
     end Str_Concat_9;
  
  end System.Concat_9;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-conca9.ads gcc-13.1.0/gcc/ada/libgnat/s-conca9.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-conca9.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-conca9.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Concat_9 is
*** 38,52 ****
       (R                                  : out String;
        S1, S2, S3, S4, S5, S6, S7, S8, S9 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9.
!    --  The bounds of R are known to be correct (usually set by a call to the
!    --  Str_Concat_Bounds_9 procedure below), so no bounds checks are required,
!    --  and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
-    procedure Str_Concat_Bounds_9
-      (Lo, Hi                             : out Natural;
-       S1, S2, S3, S4, S5, S6, S7, S8, S9 : String);
-    --  Assigns to Lo..Hi the bounds of the result of concatenating the nine
-    --  given strings, following the rules in the RM regarding null operands.
- 
  end System.Concat_9;
--- 38,45 ----
       (R                                  : out String;
        S1, S2, S3, S4, S5, S6, S7, S8, S9 : String);
     --  Performs the operation R := S1 & S2 & S3 & S4 & S5 & S6 & S7 & S8 & S9.
!    --  The bounds of R are known to be sufficient so no bound checks are
!    --  required, and it is known that none of the input operands overlaps R. No
     --  assumptions can be made about the lower bounds of any of the operands.
  
  end System.Concat_9;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-crc32.adb gcc-13.1.0/gcc/ada/libgnat/s-crc32.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-crc32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-crc32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-crc32.ads gcc-13.1.0/gcc/ada/libgnat/s-crc32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-crc32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-crc32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-crtl.ads gcc-13.1.0/gcc/ada/libgnat/s-crtl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-crtl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-crtl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dfmkio.ads gcc-13.1.0/gcc/ada/libgnat/s-dfmkio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dfmkio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dfmkio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dfmopr.ads gcc-13.1.0/gcc/ada/libgnat/s-dfmopr.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dfmopr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dfmopr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2022, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2023, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dgmgop.ads gcc-13.1.0/gcc/ada/libgnat/s-dgmgop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dgmgop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dgmgop.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-diflio.adb gcc-13.1.0/gcc/ada/libgnat/s-diflio.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-diflio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-diflio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-diflio.ads gcc-13.1.0/gcc/ada/libgnat/s-diflio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-diflio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-diflio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-diflmk.ads gcc-13.1.0/gcc/ada/libgnat/s-diflmk.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-diflmk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-diflmk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-digemk.ads gcc-13.1.0/gcc/ada/libgnat/s-digemk.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-digemk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-digemk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-diinio.adb gcc-13.1.0/gcc/ada/libgnat/s-diinio.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-diinio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-diinio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-diinio.ads gcc-13.1.0/gcc/ada/libgnat/s-diinio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-diinio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-diinio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dilomk.ads gcc-13.1.0/gcc/ada/libgnat/s-dilomk.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dilomk.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dilomk.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dim.ads gcc-13.1.0/gcc/ada/libgnat/s-dim.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dim.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dim.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2012-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dimkio.ads gcc-13.1.0/gcc/ada/libgnat/s-dimkio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dimkio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dimkio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dimmks.ads gcc-13.1.0/gcc/ada/libgnat/s-dimmks.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dimmks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dimmks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-direio.adb gcc-13.1.0/gcc/ada/libgnat/s-direio.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-direio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-direio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-direio.ads gcc-13.1.0/gcc/ada/libgnat/s-direio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-direio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-direio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dlmkio.ads gcc-13.1.0/gcc/ada/libgnat/s-dlmkio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dlmkio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dlmkio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --             Copyright (C) 2018-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dlmopr.ads gcc-13.1.0/gcc/ada/libgnat/s-dlmopr.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dlmopr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dlmopr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2022, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --              Copyright (C) 2018-2023, Free Software Foundation, Inc.     --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dmotpr.ads gcc-13.1.0/gcc/ada/libgnat/s-dmotpr.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dmotpr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dmotpr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 2011-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dorepr.adb gcc-13.1.0/gcc/ada/libgnat/s-dorepr.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-dorepr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dorepr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dorepr__fma.adb gcc-13.1.0/gcc/ada/libgnat/s-dorepr__fma.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-dorepr__fma.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dorepr__fma.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dourea.adb gcc-13.1.0/gcc/ada/libgnat/s-dourea.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-dourea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dourea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Double_Real is
*** 178,183 ****
--- 178,189 ----
        P, R   : Double_T;
  
     begin
+       if Is_Infinity (B) or else Is_Zero (B) then
+          return (A.Hi / B, 0.0);
+       end if;
+       pragma Annotate (CodePeer, Intentional, "test always false",
+                        "code deals with infinity");
+ 
        Q1 := A.Hi / B;
  
        --  Compute R = A - B * Q1
*************** package body System.Double_Real is
*** 196,201 ****
--- 202,213 ----
        R, S       : Double_T;
  
     begin
+       if Is_Infinity (B.Hi) or else Is_Zero (B.Hi) then
+          return (A.Hi / B.Hi, 0.0);
+       end if;
+       pragma Annotate (CodePeer, Intentional, "test always false",
+                        "code deals with infinity");
+ 
        Q1 := A.Hi / B.Hi;
        R := A - B * Q1;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dourea.ads gcc-13.1.0/gcc/ada/libgnat/s-dourea.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dourea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dourea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dsaser.ads gcc-13.1.0/gcc/ada/libgnat/s-dsaser.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dsaser.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dsaser.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2006-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 2006-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dwalin.adb gcc-13.1.0/gcc/ada/libgnat/s-dwalin.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-dwalin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dwalin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Storage_Elements;  use Syste
*** 44,50 ****
  
  package body System.Dwarf_Lines is
  
!    SSU : constant := System.Storage_Unit;
  
     function Get_Load_Displacement (C : Dwarf_Context) return Storage_Offset;
     --  Return the displacement between the load address present in the binary
--- 44,50 ----
  
  package body System.Dwarf_Lines is
  
!    subtype Offset is Object_Reader.Offset;
  
     function Get_Load_Displacement (C : Dwarf_Context) return Storage_Offset;
     --  Return the displacement between the load address present in the binary
*************** package body System.Dwarf_Lines is
*** 76,89 ****
     --  Read an entry format array, as specified by 6.2.4.1
  
     procedure Read_Aranges_Entry
!      (C     : in out Dwarf_Context;
!       Start :    out Address;
!       Len   :    out Storage_Count);
     --  Read a single .debug_aranges pair
  
     procedure Read_Aranges_Header
       (C           : in out Dwarf_Context;
        Info_Offset :    out Offset;
        Success     :    out Boolean);
     --  Read .debug_aranges header
  
--- 76,91 ----
     --  Read an entry format array, as specified by 6.2.4.1
  
     procedure Read_Aranges_Entry
!      (C         : in out Dwarf_Context;
!       Addr_Size :        Natural;
!       Start     :    out Address;
!       Len       :    out Storage_Count);
     --  Read a single .debug_aranges pair
  
     procedure Read_Aranges_Header
       (C           : in out Dwarf_Context;
        Info_Offset :    out Offset;
+       Addr_Size   :    out Natural;
        Success     :    out Boolean);
     --  Read .debug_aranges header
  
*************** package body System.Dwarf_Lines is
*** 1069,1080 ****
        Info_Offset :    out Offset;
        Success     :    out Boolean)
     is
     begin
        Info_Offset := 0;
        Seek (C.Aranges, 0);
  
        while Tell (C.Aranges) < Length (C.Aranges) loop
!          Read_Aranges_Header (C, Info_Offset, Success);
           exit when not Success;
  
           loop
--- 1071,1083 ----
        Info_Offset :    out Offset;
        Success     :    out Boolean)
     is
+       Addr_Size : Natural;
     begin
        Info_Offset := 0;
        Seek (C.Aranges, 0);
  
        while Tell (C.Aranges) < Length (C.Aranges) loop
!          Read_Aranges_Header (C, Info_Offset, Addr_Size, Success);
           exit when not Success;
  
           loop
*************** package body System.Dwarf_Lines is
*** 1082,1088 ****
                 Start : Address;
                 Len   : Storage_Count;
              begin
!                Read_Aranges_Entry (C, Start, Len);
                 exit when Start = 0 and Len = 0;
                 if Addr >= Start
                   and then Addr < Start + Len
--- 1085,1091 ----
                 Start : Address;
                 Len   : Storage_Count;
              begin
!                Read_Aranges_Entry (C, Addr_Size, Start, Len);
                 exit when Start = 0 and Len = 0;
                 if Addr >= Start
                   and then Addr < Start + Len
*************** package body System.Dwarf_Lines is
*** 1280,1288 ****
           Unit_Type := Read (C.Info);
  
           Addr_Sz := Read (C.Info);
-          if Addr_Sz /= (Address'Size / SSU) then
-             return;
-          end if;
  
           Read_Section_Offset (C.Info, Abbrev_Offset, Is64);
  
--- 1283,1288 ----
*************** package body System.Dwarf_Lines is
*** 1290,1298 ****
           Read_Section_Offset (C.Info, Abbrev_Offset, Is64);
  
           Addr_Sz := Read (C.Info);
-          if Addr_Sz /= (Address'Size / SSU) then
-             return;
-          end if;
  
        else
           return;
--- 1290,1295 ----
*************** package body System.Dwarf_Lines is
*** 1354,1359 ****
--- 1351,1357 ----
     procedure Read_Aranges_Header
       (C           : in out Dwarf_Context;
        Info_Offset :    out Offset;
+       Addr_Size   :    out Natural;
        Success     :    out Boolean)
     is
        Unit_Length : Offset;
*************** package body System.Dwarf_Lines is
*** 1364,1369 ****
--- 1362,1368 ----
     begin
        Success     := False;
        Info_Offset := 0;
+       Addr_Size   := 0;
  
        Read_Initial_Length (C.Aranges, Unit_Length, Is64);
  
*************** package body System.Dwarf_Lines is
*** 1376,1385 ****
  
        --  Read address_size (ubyte)
  
!       Sz := Read (C.Aranges);
!       if Sz /= (Address'Size / SSU) then
!          return;
!       end if;
  
        --  Read segment_size (ubyte)
  
--- 1375,1381 ----
  
        --  Read address_size (ubyte)
  
!       Addr_Size := Natural (uint8'(Read (C.Aranges)));
  
        --  Read segment_size (ubyte)
  
*************** package body System.Dwarf_Lines is
*** 1392,1398 ****
  
        declare
           Cur_Off : constant Offset := Tell (C.Aranges);
!          Align   : constant Offset := 2 * Address'Size / SSU;
           Space   : constant Offset := Cur_Off mod Align;
        begin
           if Space /= 0 then
--- 1388,1394 ----
  
        declare
           Cur_Off : constant Offset := Tell (C.Aranges);
!          Align   : constant Offset := 2 * Offset (Addr_Size);
           Space   : constant Offset := Cur_Off mod Align;
        begin
           if Space /= 0 then
*************** package body System.Dwarf_Lines is
*** 1408,1421 ****
     ------------------------
  
     procedure Read_Aranges_Entry
!      (C     : in out Dwarf_Context;
!       Start :    out Address;
!       Len   :    out Storage_Count)
     is
     begin
        --  Read table
  
!       if Address'Size = 32 then
           declare
              S, L : uint32;
           begin
--- 1404,1418 ----
     ------------------------
  
     procedure Read_Aranges_Entry
!      (C         : in out Dwarf_Context;
!       Addr_Size :        Natural;
!       Start     :    out Address;
!       Len       :    out Storage_Count)
     is
     begin
        --  Read table
  
!       if Addr_Size = 4 then
           declare
              S, L : uint32;
           begin
*************** package body System.Dwarf_Lines is
*** 1425,1431 ****
              Len   := Storage_Count (L);
           end;
  
!       elsif Address'Size = 64 then
           declare
              S, L : uint64;
           begin
--- 1422,1428 ----
              Len   := Storage_Count (L);
           end;
  
!       elsif Addr_Size = 8 then
           declare
              S, L : uint64;
           begin
*************** package body System.Dwarf_Lines is
*** 1520,1525 ****
--- 1517,1523 ----
        declare
           Info_Offset : Offset;
           Line_Offset : Offset;
+          Addr_Size   : Natural;
           Success     : Boolean;
           Ar_Start    : Address;
           Ar_Len      : Storage_Count;
*************** package body System.Dwarf_Lines is
*** 1531,1537 ****
           Seek (C.Aranges, 0);
  
           while Tell (C.Aranges) < Length (C.Aranges) loop
!             Read_Aranges_Header (C, Info_Offset, Success);
              exit when not Success;
  
              Debug_Info_Lookup (C, Info_Offset, Line_Offset, Success);
--- 1529,1535 ----
           Seek (C.Aranges, 0);
  
           while Tell (C.Aranges) < Length (C.Aranges) loop
!             Read_Aranges_Header (C, Info_Offset, Addr_Size, Success);
              exit when not Success;
  
              Debug_Info_Lookup (C, Info_Offset, Line_Offset, Success);
*************** package body System.Dwarf_Lines is
*** 1540,1550 ****
              --  Read table
  
              loop
!                Read_Aranges_Entry (C, Ar_Start, Ar_Len);
                 exit when Ar_Start = Null_Address and Ar_Len = 0;
  
                 Len   := uint32 (Ar_Len);
!                Start := uint32 (Ar_Start - C.Low);
  
                 --  Search START in the array
  
--- 1538,1548 ----
              --  Read table
  
              loop
!                Read_Aranges_Entry (C, Addr_Size, Ar_Start, Ar_Len);
                 exit when Ar_Start = Null_Address and Ar_Len = 0;
  
                 Len   := uint32 (Ar_Len);
!                Start := uint32 (Address'(Ar_Start - C.Low));
  
                 --  Search START in the array
  
*************** package body System.Dwarf_Lines is
*** 1764,1770 ****
  
        if C.Cache /= null then
           declare
!             Addr_Off         : constant uint32 := uint32 (Addr - C.Low);
              First, Last, Mid : Natural;
           begin
              First := C.Cache'First;
--- 1762,1769 ----
  
        if C.Cache /= null then
           declare
!             Addr_Off : constant uint32 := uint32 (Address'(Addr - C.Low));
! 
              First, Last, Mid : Natural;
           begin
              First := C.Cache'First;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-dwalin.ads gcc-13.1.0/gcc/ada/libgnat/s-dwalin.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-dwalin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-dwalin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-elaall.adb gcc-13.1.0/gcc/ada/libgnat/s-elaall.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-elaall.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-elaall.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2014-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-elaall.ads gcc-13.1.0/gcc/ada/libgnat/s-elaall.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-elaall.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-elaall.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2014-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-excdeb.adb gcc-13.1.0/gcc/ada/libgnat/s-excdeb.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-excdeb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-excdeb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-excdeb.ads gcc-13.1.0/gcc/ada/libgnat/s-excdeb.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-excdeb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-excdeb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-except.adb gcc-13.1.0/gcc/ada/libgnat/s-except.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-except.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-except.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-except.ads gcc-13.1.0/gcc/ada/libgnat/s-except.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-except.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-except.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-excmac__arm.adb gcc-13.1.0/gcc/ada/libgnat/s-excmac__arm.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-excmac__arm.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-excmac__arm.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2013-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2013-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-excmac__arm.ads gcc-13.1.0/gcc/ada/libgnat/s-excmac__arm.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-excmac__arm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-excmac__arm.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-excmac__gcc.adb gcc-13.1.0/gcc/ada/libgnat/s-excmac__gcc.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-excmac__gcc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-excmac__gcc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-excmac__gcc.ads gcc-13.1.0/gcc/ada/libgnat/s-excmac__gcc.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-excmac__gcc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-excmac__gcc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exctab.adb gcc-13.1.0/gcc/ada/libgnat/s-exctab.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exctab.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exctab.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exctab.ads gcc-13.1.0/gcc/ada/libgnat/s-exctab.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exctab.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exctab.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exctra.adb gcc-13.1.0/gcc/ada/libgnat/s-exctra.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exctra.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exctra.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exctra.ads gcc-13.1.0/gcc/ada/libgnat/s-exctra.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exctra.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exctra.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnflt.ads gcc-13.1.0/gcc/ada/libgnat/s-exnflt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exnflt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnflt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnint.adb gcc-13.1.0/gcc/ada/libgnat/s-exnint.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exnint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnint.ads gcc-13.1.0/gcc/ada/libgnat/s-exnint.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exnint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnlfl.ads gcc-13.1.0/gcc/ada/libgnat/s-exnlfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exnlfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnlfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnllf.adb gcc-13.1.0/gcc/ada/libgnat/s-exnllf.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exnllf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnllf.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnllf.ads gcc-13.1.0/gcc/ada/libgnat/s-exnllf.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exnllf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnllf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnlli.adb gcc-13.1.0/gcc/ada/libgnat/s-exnlli.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exnlli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnlli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnlli.ads gcc-13.1.0/gcc/ada/libgnat/s-exnlli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exnlli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnlli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exnllli.ads gcc-13.1.0/gcc/ada/libgnat/s-exnllli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exnllli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exnllli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expint.adb gcc-13.1.0/gcc/ada/libgnat/s-expint.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-expint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expint.ads gcc-13.1.0/gcc/ada/libgnat/s-expint.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-expint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-explli.adb gcc-13.1.0/gcc/ada/libgnat/s-explli.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-explli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-explli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-explli.ads gcc-13.1.0/gcc/ada/libgnat/s-explli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-explli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-explli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expllli.ads gcc-13.1.0/gcc/ada/libgnat/s-expllli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-expllli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expllli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-explllu.ads gcc-13.1.0/gcc/ada/libgnat/s-explllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-explllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-explllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expllu.adb gcc-13.1.0/gcc/ada/libgnat/s-expllu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-expllu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expllu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expllu.ads gcc-13.1.0/gcc/ada/libgnat/s-expllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-expllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expmod.adb gcc-13.1.0/gcc/ada/libgnat/s-expmod.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-expmod.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expmod.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** is
*** 106,111 ****
--- 106,118 ----
     -------------------
  
     procedure Lemma_Add_Mod (X, Y : Big_Natural; B : Big_Positive) is
+ 
+       procedure Lemma_Euclidean_Mod (Q, F, R : Big_Natural) with
+         Pre  => F /= 0,
+         Post => (Q * F + R) mod F = R mod F;
+ 
+       procedure Lemma_Euclidean_Mod (Q, F, R : Big_Natural) is null;
+ 
        Left  : constant Big_Natural := (X + Y) mod B;
        Right : constant Big_Natural := ((X mod B) + (Y mod B)) mod B;
        XQuot : constant Big_Natural := X / B;
*************** is
*** 119,124 ****
--- 126,133 ----
             (Left = ((XQuot + YQuot) * B + X mod B + Y mod B) mod B);
           pragma Assert (X mod B + Y mod B = AQuot * B + Right);
           pragma Assert (Left = ((XQuot + YQuot + AQuot) * B + Right) mod B);
+          Lemma_Euclidean_Mod (XQuot + YQuot + AQuot, B, Right);
+          pragma Assert (Left = (Right mod B));
           pragma Assert (Left = Right);
        end if;
     end Lemma_Add_Mod;
*************** is
*** 251,259 ****
              pragma Loop_Invariant (Equal_Modulo
                (Big (Result) * Big (Factor) ** Exp, Big (Left) ** Right));
              pragma Loop_Variant (Decreases => Exp);
-             pragma Annotate
-               (CodePeer, False_Positive,
-                "validity check", "confusion on generated code");
  
              if Exp rem 2 /= 0 then
                 pragma Assert
--- 260,265 ----
*************** is
*** 262,267 ****
--- 268,274 ----
                 pragma Assert (Equal_Modulo
                   ((Big (Result) * Big (Factor)) * Big (Factor) ** (Exp - 1),
                    Big (Left) ** Right));
+                pragma Assert (Big (Factor) >= 0);
                 Lemma_Mult_Mod (Big (Result) * Big (Factor),
                                    Big (Factor) ** (Exp - 1),
                                    Big (Modulus));
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expmod.ads gcc-13.1.0/gcc/ada/libgnat/s-expmod.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-expmod.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expmod.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exponn.adb gcc-13.1.0/gcc/ada/libgnat/s-exponn.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exponn.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exponn.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exponn.ads gcc-13.1.0/gcc/ada/libgnat/s-exponn.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exponn.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exponn.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  --  Signed integer exponentiation (checks off)
  
  with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
- use Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
  
  generic
  
--- 32,37 ----
*************** generic
*** 41,47 ****
  package System.Exponn
    with Pure, SPARK_Mode
  is
- 
     --  Preconditions in this unit are meant for analysis only, not for run-time
     --  checking, so that the expected exceptions are raised. This is enforced
     --  by setting the corresponding assertion policy to Ignore. Postconditions
--- 40,45 ----
*************** is
*** 53,66 ****
                              Contract_Cases => Ignore,
                              Ghost          => Ignore);
  
!    package Signed_Conversion is new Signed_Conversions (Int => Int);
  
     function Big (Arg : Int) return Big_Integer is
       (Signed_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
     function In_Int_Range (Arg : Big_Integer) return Boolean is
!      (In_Range (Arg, Big (Int'First), Big (Int'Last)))
     with Ghost;
  
     function Expon (Left : Int; Right : Natural) return Int
--- 51,68 ----
                              Contract_Cases => Ignore,
                              Ghost          => Ignore);
  
!    package BI_Ghost renames Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
!    subtype Big_Integer is BI_Ghost.Big_Integer with Ghost;
!    use type BI_Ghost.Big_Integer;
! 
!    package Signed_Conversion is new BI_Ghost.Signed_Conversions (Int => Int);
  
     function Big (Arg : Int) return Big_Integer is
       (Signed_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
     function In_Int_Range (Arg : Big_Integer) return Boolean is
!      (BI_Ghost.In_Range (Arg, Big (Int'First), Big (Int'Last)))
     with Ghost;
  
     function Expon (Left : Int; Right : Natural) return Int
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exponr.adb gcc-13.1.0/gcc/ada/libgnat/s-exponr.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exponr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exponr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exponr.ads gcc-13.1.0/gcc/ada/libgnat/s-exponr.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exponr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exponr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expont.adb gcc-13.1.0/gcc/ada/libgnat/s-expont.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-expont.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expont.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expont.ads gcc-13.1.0/gcc/ada/libgnat/s-expont.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-expont.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expont.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  --  Signed integer exponentiation (checks on)
  
  with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
- use Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
  
  generic
  
--- 32,37 ----
*************** generic
*** 41,47 ****
  package System.Expont
    with Pure, SPARK_Mode
  is
- 
     --  Preconditions in this unit are meant for analysis only, not for run-time
     --  checking, so that the expected exceptions are raised. This is enforced
     --  by setting the corresponding assertion policy to Ignore. Postconditions
--- 40,45 ----
*************** is
*** 53,66 ****
                              Contract_Cases => Ignore,
                              Ghost          => Ignore);
  
!    package Signed_Conversion is new Signed_Conversions (Int => Int);
  
     function Big (Arg : Int) return Big_Integer is
       (Signed_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
     function In_Int_Range (Arg : Big_Integer) return Boolean is
!      (In_Range (Arg, Big (Int'First), Big (Int'Last)))
     with Ghost;
  
     function Expon (Left : Int; Right : Natural) return Int
--- 51,68 ----
                              Contract_Cases => Ignore,
                              Ghost          => Ignore);
  
!    package BI_Ghost renames Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
!    subtype Big_Integer is BI_Ghost.Big_Integer with Ghost;
!    use type BI_Ghost.Big_Integer;
! 
!    package Signed_Conversion is new BI_Ghost.Signed_Conversions (Int => Int);
  
     function Big (Arg : Int) return Big_Integer is
       (Signed_Conversion.To_Big_Integer (Arg))
     with Ghost;
  
     function In_Int_Range (Arg : Big_Integer) return Boolean is
!      (BI_Ghost.In_Range (Arg, Big (Int'First), Big (Int'Last)))
     with Ghost;
  
     function Expon (Left : Int; Right : Natural) return Int
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exponu.adb gcc-13.1.0/gcc/ada/libgnat/s-exponu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-exponu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exponu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-exponu.ads gcc-13.1.0/gcc/ada/libgnat/s-exponu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-exponu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-exponu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expuns.adb gcc-13.1.0/gcc/ada/libgnat/s-expuns.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-expuns.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expuns.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-expuns.ads gcc-13.1.0/gcc/ada/libgnat/s-expuns.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-expuns.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-expuns.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fatflt.ads gcc-13.1.0/gcc/ada/libgnat/s-fatflt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fatflt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fatflt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fatgen.adb gcc-13.1.0/gcc/ada/libgnat/s-fatgen.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-fatgen.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fatgen.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fatgen.ads gcc-13.1.0/gcc/ada/libgnat/s-fatgen.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fatgen.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fatgen.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fatlfl.ads gcc-13.1.0/gcc/ada/libgnat/s-fatlfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fatlfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fatlfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fatllf.ads gcc-13.1.0/gcc/ada/libgnat/s-fatllf.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fatllf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fatllf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-ficobl.ads gcc-13.1.0/gcc/ada/libgnat/s-ficobl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-ficobl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-ficobl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1992-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 1992-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-filatt.ads gcc-13.1.0/gcc/ada/libgnat/s-filatt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-filatt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-filatt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2013-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2013-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fileio.adb gcc-13.1.0/gcc/ada/libgnat/s-fileio.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-fileio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fileio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fileio.ads gcc-13.1.0/gcc/ada/libgnat/s-fileio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fileio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fileio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-finmas.adb gcc-13.1.0/gcc/ada/libgnat/s-finmas.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-finmas.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-finmas.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2015-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-finmas.ads gcc-13.1.0/gcc/ada/libgnat/s-finmas.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-finmas.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-finmas.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-finroo.adb gcc-13.1.0/gcc/ada/libgnat/s-finroo.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-finroo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-finroo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-finroo.ads gcc-13.1.0/gcc/ada/libgnat/s-finroo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-finroo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-finroo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-flocon.adb gcc-13.1.0/gcc/ada/libgnat/s-flocon.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-flocon.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-flocon.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-flocon.ads gcc-13.1.0/gcc/ada/libgnat/s-flocon.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-flocon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-flocon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2000-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-flocon__none.adb gcc-13.1.0/gcc/ada/libgnat/s-flocon__none.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-flocon__none.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-flocon__none.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                       Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fode128.ads gcc-13.1.0/gcc/ada/libgnat/s-fode128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fode128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fode128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fode32.ads gcc-13.1.0/gcc/ada/libgnat/s-fode32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fode32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fode32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fode64.ads gcc-13.1.0/gcc/ada/libgnat/s-fode64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fode64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fode64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fofi128.ads gcc-13.1.0/gcc/ada/libgnat/s-fofi128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fofi128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fofi128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fofi32.ads gcc-13.1.0/gcc/ada/libgnat/s-fofi32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fofi32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fofi32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fofi64.ads gcc-13.1.0/gcc/ada/libgnat/s-fofi64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fofi64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fofi64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fore_d.adb gcc-13.1.0/gcc/ada/libgnat/s-fore_d.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-fore_d.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fore_d.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fore_d.ads gcc-13.1.0/gcc/ada/libgnat/s-fore_d.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fore_d.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fore_d.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fore_f.adb gcc-13.1.0/gcc/ada/libgnat/s-fore_f.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-fore_f.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fore_f.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-fore_f.ads gcc-13.1.0/gcc/ada/libgnat/s-fore_f.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-fore_f.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-fore_f.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-forrea.adb gcc-13.1.0/gcc/ada/libgnat/s-forrea.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-forrea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-forrea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-forrea.ads gcc-13.1.0/gcc/ada/libgnat/s-forrea.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-forrea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-forrea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-gearop.adb gcc-13.1.0/gcc/ada/libgnat/s-gearop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-gearop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-gearop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2006-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  --  Preconditions, postconditions, ghost code, loop invariants and assertions
  --  in this unit are meant for analysis only, not for run-time checking, as it
  --  would be too costly otherwise. This is enforced by setting the assertion
! --  policy to Ignore.
  
  pragma Assertion_Policy (Pre            => Ignore,
                           Post           => Ignore,
--- 32,39 ----
  --  Preconditions, postconditions, ghost code, loop invariants and assertions
  --  in this unit are meant for analysis only, not for run-time checking, as it
  --  would be too costly otherwise. This is enforced by setting the assertion
! --  policy to Ignore, here for non-generic code, and inside the generic for
! --  generic code.
  
  pragma Assertion_Policy (Pre            => Ignore,
                           Post           => Ignore,
*************** is
*** 72,77 ****
--- 73,84 ----
     --------------
  
     function Diagonal (A : Matrix) return Vector is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
+ 
        N : constant Natural := Natural'Min (A'Length (1), A'Length (2));
     begin
        return R : Vector (A'First (1) .. A'First (1) + (N - 1))
*************** is
*** 126,131 ****
--- 133,143 ----
     ---------------------
  
     procedure Back_Substitute (M, N : in out Matrix) is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
        pragma Assert (M'First (1) = N'First (1)
                         and then
                       M'Last  (1) = N'Last (1));
*************** is
*** 215,220 ****
--- 227,237 ----
        N   : in out Matrix;
        Det : out Scalar)
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
        pragma Assert (M'First (1) = N'First (1)
                         and then
                       M'Last  (1) = N'Last (1));
*************** is
*** 460,465 ****
--- 477,487 ----
     -------------
  
     function L2_Norm (X : X_Vector) return Result_Real'Base is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
        Sum : Result_Real'Base := 0.0;
  
     begin
*************** is
*** 479,484 ****
--- 501,511 ----
     ----------------------------------
  
     function Matrix_Elementwise_Operation (X : X_Matrix) return Result_Matrix is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Result_Matrix (X'Range (1), X'Range (2))
          with Relaxed_Initialization
*************** is
*** 524,529 ****
--- 551,561 ----
       (Left  : Left_Matrix;
        Right : Right_Matrix) return Result_Matrix
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Result_Matrix (Left'Range (1), Left'Range (2))
          with Relaxed_Initialization
*************** is
*** 570,575 ****
--- 602,612 ----
        Y : Y_Matrix;
        Z : Z_Scalar) return Result_Matrix
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Result_Matrix (X'Range (1), X'Range (2))
          with Relaxed_Initialization
*************** is
*** 657,662 ****
--- 694,704 ----
       (Left  : Left_Matrix;
        Right : Right_Scalar) return Result_Matrix
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Result_Matrix (Left'Range (1), Left'Range (2))
          with Relaxed_Initialization
*************** is
*** 705,710 ****
--- 747,757 ----
       (Left  : Left_Scalar;
        Right : Right_Matrix) return Result_Matrix
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Result_Matrix (Right'Range (1), Right'Range (2))
          with Relaxed_Initialization
*************** is
*** 811,816 ****
--- 858,868 ----
       (Left  : Left_Matrix;
        Right : Right_Matrix) return Result_Matrix
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Result_Matrix (Left'Range (1), Right'Range (2))
          with Relaxed_Initialization
*************** is
*** 856,861 ****
--- 908,918 ----
     ----------------------------
  
     function Matrix_Vector_Solution (A : Matrix; X : Vector) return Vector is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
  
        procedure Ignore (M : Matrix)
        with
*************** is
*** 917,922 ****
--- 974,984 ----
     ----------------------------
  
     function Matrix_Matrix_Solution (A, X : Matrix) return Matrix is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
  
        procedure Ignore (M : Matrix)
        with
*************** is
*** 1035,1040 ****
--- 1097,1107 ----
       (Left  : Left_Vector;
        Right : Right_Vector) return Matrix
     is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        return R : Matrix (Left'Range, Right'Range)
          with Relaxed_Initialization
*************** is
*** 1078,1083 ****
--- 1145,1155 ----
     ---------------
  
     procedure Transpose (A : Matrix; R : out Matrix) is
+       pragma Assertion_Policy (Pre            => Ignore,
+                                Post           => Ignore,
+                                Ghost          => Ignore,
+                                Loop_Invariant => Ignore,
+                                Assert         => Ignore);
     begin
        for J in R'Range (1) loop
           for K in R'Range (2) loop
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-gearop.ads gcc-13.1.0/gcc/ada/libgnat/s-gearop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-gearop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-gearop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2006-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 36,51 ****
  --  overflows in arithmetic operations passed on as formal generic subprogram
  --  parameters.
  
! --  Preconditions in this unit are meant for analysis only, not for run-time
! --  checking, so that the expected exceptions are raised. This is enforced
! --  by setting the corresponding assertion policy to Ignore. Postconditions
! --  and contract cases should not be executed at runtime as well, in order
! --  not to slow down the execution of these functions.
! 
! pragma Assertion_Policy (Pre            => Ignore,
!                          Post           => Ignore,
!                          Contract_Cases => Ignore,
!                          Ghost          => Ignore);
  
  package System.Generic_Array_Operations
    with SPARK_Mode
--- 36,45 ----
  --  overflows in arithmetic operations passed on as formal generic subprogram
  --  parameters.
  
! --  Preconditions in this unit are meant mostly for analysis, but will be
! --  activated at runtime depending on the assertion policy for preconditions at
! --  the program point of instantiation. These preconditions are simply checking
! --  bounds, so should not impact running time.
  
  package System.Generic_Array_Operations
    with SPARK_Mode
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-genbig.adb gcc-13.1.0/gcc/ada/libgnat/s-genbig.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-genbig.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-genbig.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2012-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-genbig.ads gcc-13.1.0/gcc/ada/libgnat/s-genbig.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-genbig.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-genbig.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-geveop.adb gcc-13.1.0/gcc/ada/libgnat/s-geveop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-geveop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-geveop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-geveop.ads gcc-13.1.0/gcc/ada/libgnat/s-geveop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-geveop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-geveop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-gloloc.adb gcc-13.1.0/gcc/ada/libgnat/s-gloloc.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-gloloc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-gloloc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-gloloc.ads gcc-13.1.0/gcc/ada/libgnat/s-gloloc.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-gloloc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-gloloc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-gloloc__mingw.adb gcc-13.1.0/gcc/ada/libgnat/s-gloloc__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-gloloc__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-gloloc__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-htable.adb gcc-13.1.0/gcc/ada/libgnat/s-htable.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-htable.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-htable.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                    Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-htable.ads gcc-13.1.0/gcc/ada/libgnat/s-htable.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-htable.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-htable.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imageb.adb gcc-13.1.0/gcc/ada/libgnat/s-imageb.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imageb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imageb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imageb.ads gcc-13.1.0/gcc/ada/libgnat/s-imageb.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imageb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imageb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imaged.adb gcc-13.1.0/gcc/ada/libgnat/s-imaged.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imaged.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imaged.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imaged.ads gcc-13.1.0/gcc/ada/libgnat/s-imaged.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imaged.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imaged.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** generic
*** 38,44 ****
     type Int is range <>;
  
  package System.Image_D is
-    pragma Pure;
  
     procedure Image_Decimal
       (V     : Int;
--- 38,43 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagef.adb gcc-13.1.0/gcc/ada/libgnat/s-imagef.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imagef.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagef.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 31,39 ****
--- 31,55 ----
  
  with System.Image_I;
  with System.Img_Util; use System.Img_Util;
+ with System.Value_I_Spec;
+ with System.Value_U_Spec;
  
  package body System.Image_F is
  
+    --  Contracts, ghost code, loop invariants and assertions in this unit are
+    --  meant for analysis only, not for run-time checking, as it would be too
+    --  costly otherwise. This is enforced by setting the assertion policy to
+    --  Ignore.
+ 
+    pragma Assertion_Policy (Assert             => Ignore,
+                             Assert_And_Cut     => Ignore,
+                             Contract_Cases     => Ignore,
+                             Ghost              => Ignore,
+                             Loop_Invariant     => Ignore,
+                             Pre                => Ignore,
+                             Post               => Ignore,
+                             Subprogram_Variant => Ignore);
+ 
     Maxdigs : constant Natural := Int'Width - 2;
     --  Maximum number of decimal digits that can be represented in an Int.
     --  The "-2" accounts for the sign and one extra digit, since we need the
*************** package body System.Image_F is
*** 54,60 ****
     --  if the small is larger than 1, and smaller than 2**(Int'Size - 1) / 10
     --  if the small is smaller than 1.
  
!    package Image_I is new System.Image_I (Int);
  
     procedure Set_Image_Integer
       (V : Int;
--- 70,85 ----
     --  if the small is larger than 1, and smaller than 2**(Int'Size - 1) / 10
     --  if the small is smaller than 1.
  
!    Unsigned_Width_Ghost : constant Natural := Int'Width;
! 
!    package Uns_Spec is new System.Value_U_Spec (Uns);
!    package Int_Spec is new System.Value_I_Spec (Int, Uns, Uns_Spec.Uns_Params);
! 
!    package Image_I is new System.Image_I
!      (Int                  => Int,
!       Uns                  => Uns,
!       Unsigned_Width_Ghost => Unsigned_Width_Ghost,
!       Int_Params           => Int_Spec.Int_Params);
  
     procedure Set_Image_Integer
       (V : Int;
*************** package body System.Image_F is
*** 96,102 ****
     --  operation are omitted here.
  
     --  A 64-bit value can represent all integers with 18 decimal digits, but
!    --  not all with 19 decimal digits. If the total number of requested ouput
     --  digits (Fore - 1) + Aft is greater than 18 then, for purposes of the
     --  conversion, Aft is adjusted to 18 - (Fore - 1). In that case, trailing
     --  zeros can complete the output after writing the first 18 significant
--- 121,127 ----
     --  operation are omitted here.
  
     --  A 64-bit value can represent all integers with 18 decimal digits, but
!    --  not all with 19 decimal digits. If the total number of requested output
     --  digits (Fore - 1) + Aft is greater than 18 then, for purposes of the
     --  conversion, Aft is adjusted to 18 - (Fore - 1). In that case, trailing
     --  zeros can complete the output after writing the first 18 significant
*************** package body System.Image_F is
*** 355,360 ****
--- 380,387 ----
           Digs (1 .. 2) := " 0";
           Ndigs := 2;
        end if;
+       pragma Annotate (CodePeer, False_Positive, "test always true",
+                        "no digits were output for zero");
  
        Set_Decimal_Digits (Digs, Ndigs, S, P, Scale, Fore, Aft, Exp);
     end Set_Image_Fixed;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagef.ads gcc-13.1.0/gcc/ada/libgnat/s-imagef.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imagef.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagef.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 36,41 ****
--- 36,42 ----
  generic
  
     type Int is range <>;
+    type Uns is mod <>;
  
     with procedure Scaled_Divide
            (X, Y, Z : Int;
*************** generic
*** 43,49 ****
             Round : Boolean);
  
  package System.Image_F is
-    pragma Pure;
  
     procedure Image_Fixed
       (V    : Int;
--- 44,49 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagei.adb gcc-13.1.0/gcc/ada/libgnat/s-imagei.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imagei.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagei.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,46 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  package body System.Image_I is
  
     subtype Non_Positive is Int range Int'First .. 0;
  
     procedure Set_Digits
       (T : Non_Positive;
        S : in out String;
!       P : in out Natural);
     --  Set digits of absolute value of T, which is zero or negative. We work
     --  with the negative of the value so that the largest negative number is
     --  not a special case.
  
     -------------------
     -- Image_Integer --
     -------------------
--- 29,132 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
+ use Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
+ 
  package body System.Image_I is
  
+    --  Ghost code, loop invariants and assertions in this unit are meant for
+    --  analysis only, not for run-time checking, as it would be too costly
+    --  otherwise. This is enforced by setting the assertion policy to Ignore.
+ 
+    pragma Assertion_Policy (Ghost              => Ignore,
+                             Loop_Invariant     => Ignore,
+                             Assert             => Ignore,
+                             Assert_And_Cut     => Ignore,
+                             Pre                => Ignore,
+                             Post               => Ignore,
+                             Subprogram_Variant => Ignore);
+ 
     subtype Non_Positive is Int range Int'First .. 0;
  
+    function Uns_Of_Non_Positive (T : Non_Positive) return Uns is
+      (if T = Int'First then Uns (Int'Last) + 1 else Uns (-T));
+ 
     procedure Set_Digits
       (T : Non_Positive;
        S : in out String;
!       P : in out Natural)
!    with
!      Pre  => P < Integer'Last
!        and then S'Last < Integer'Last
!        and then S'First <= P + 1
!        and then S'First <= S'Last
!        and then P <= S'Last - Unsigned_Width_Ghost + 1,
!      Post => S (S'First .. P'Old) = S'Old (S'First .. P'Old)
!        and then P in P'Old + 1 .. S'Last
!        and then UP.Only_Decimal_Ghost (S, From => P'Old + 1, To => P)
!        and then UP.Scan_Based_Number_Ghost (S, From => P'Old + 1, To => P)
!          = UP.Wrap_Option (Uns_Of_Non_Positive (T));
     --  Set digits of absolute value of T, which is zero or negative. We work
     --  with the negative of the value so that the largest negative number is
     --  not a special case.
  
+    package Unsigned_Conversion is new Unsigned_Conversions (Int => Uns);
+ 
+    function Big (Arg : Uns) return Big_Integer renames
+      Unsigned_Conversion.To_Big_Integer;
+ 
+    function From_Big (Arg : Big_Integer) return Uns renames
+      Unsigned_Conversion.From_Big_Integer;
+ 
+    Big_10 : constant Big_Integer := Big (10) with Ghost;
+ 
+    ------------------
+    -- Local Lemmas --
+    ------------------
+ 
+    procedure Lemma_Non_Zero (X : Uns)
+    with
+      Ghost,
+      Pre  => X /= 0,
+      Post => Big (X) /= 0;
+ 
+    procedure Lemma_Div_Commutation (X, Y : Uns)
+    with
+      Ghost,
+      Pre  => Y /= 0,
+      Post => Big (X) / Big (Y) = Big (X / Y);
+ 
+    procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive)
+    with
+      Ghost,
+      Post => X / Y / Z = X / (Y * Z);
+ 
+    ---------------------------
+    -- Lemma_Div_Commutation --
+    ---------------------------
+ 
+    procedure Lemma_Non_Zero (X : Uns) is null;
+    procedure Lemma_Div_Commutation (X, Y : Uns) is null;
+ 
+    ---------------------
+    -- Lemma_Div_Twice --
+    ---------------------
+ 
+    procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive) is
+       XY  : constant Big_Natural := X / Y;
+       YZ  : constant Big_Natural := Y * Z;
+       XYZ : constant Big_Natural := X / Y / Z;
+       R   : constant Big_Natural := (XY rem Z) * Y + (X rem Y);
+    begin
+       pragma Assert (X = XY * Y + (X rem Y));
+       pragma Assert (XY = XY / Z * Z + (XY rem Z));
+       pragma Assert (X = XYZ * YZ + R);
+       pragma Assert ((XY rem Z) * Y <= (Z - 1) * Y);
+       pragma Assert (R <= YZ - 1);
+       pragma Assert (X / YZ = (XYZ * YZ + R) / YZ);
+       pragma Assert (X / YZ = XYZ + R / YZ);
+    end Lemma_Div_Twice;
+ 
     -------------------
     -- Image_Integer --
     -------------------
*************** package body System.Image_I is
*** 52,59 ****
--- 138,184 ----
     is
        pragma Assert (S'First = 1);
  
+       procedure Prove_Value_Integer
+       with
+         Ghost,
+         Pre => S'First = 1
+           and then S'Last < Integer'Last
+           and then P in 2 .. S'Last
+           and then S (1) in ' ' | '-'
+           and then (S (1) = '-') = (V < 0)
+           and then UP.Only_Decimal_Ghost (S, From => 2, To => P)
+           and then UP.Scan_Based_Number_Ghost (S, From => 2, To => P)
+             = UP.Wrap_Option (IP.Abs_Uns_Of_Int (V)),
+         Post => not System.Val_Util.Only_Space_Ghost (S, 1, P)
+           and then IP.Is_Integer_Ghost (S (1 .. P))
+           and then IP.Is_Value_Integer_Ghost (S (1 .. P), V);
+       --  Ghost lemma to prove the value of Value_Integer from the value of
+       --  Scan_Based_Number_Ghost and the sign on a decimal string.
+ 
+       -------------------------
+       -- Prove_Value_Integer --
+       -------------------------
+ 
+       procedure Prove_Value_Integer is
+          Str : constant String := S (1 .. P);
+       begin
+          pragma Assert (Str'First = 1);
+          pragma Assert (Str (2) /= ' ');
+          pragma Assert
+            (UP.Only_Decimal_Ghost (Str, From => 2, To => P));
+          UP.Prove_Scan_Based_Number_Ghost_Eq (S, Str, From => 2, To => P);
+          pragma Assert
+            (UP.Scan_Based_Number_Ghost (Str, From => 2, To => P)
+             = UP.Wrap_Option (IP.Abs_Uns_Of_Int (V)));
+          IP.Prove_Scan_Only_Decimal_Ghost (Str, V);
+       end Prove_Value_Integer;
+ 
+    --  Start of processing for Image_Integer
+ 
     begin
        if V >= 0 then
+          pragma Annotate (CodePeer, False_Positive, "test always false",
+                           "V can be positive");
           S (1) := ' ';
           P := 1;
           pragma Assert (P < S'Last);
*************** package body System.Image_I is
*** 63,69 ****
           pragma Assert (P < S'Last - 1);
        end if;
  
!       Set_Image_Integer (V, S, P);
     end Image_Integer;
  
     ----------------
--- 188,205 ----
           pragma Assert (P < S'Last - 1);
        end if;
  
!       declare
!          P_Prev : constant Integer := P with Ghost;
!          Offset : constant Positive := (if V >= 0 then 1 else 2) with Ghost;
!       begin
!          Set_Image_Integer (V, S, P);
! 
!          pragma Assert (P_Prev + Offset = 2);
!       end;
!       pragma Assert (if V >= 0 then S (1) = ' ');
!       pragma Assert (S (1) in ' ' | '-');
! 
!       Prove_Value_Integer;
     end Image_Integer;
  
     ----------------
*************** package body System.Image_I is
*** 77,82 ****
--- 213,348 ----
     is
        Nb_Digits : Natural := 0;
        Value     : Non_Positive := T;
+ 
+       --  Local ghost variables
+ 
+       Pow        : Big_Positive := 1 with Ghost;
+       S_Init     : constant String := S with Ghost;
+       Uns_T      : constant Uns := Uns_Of_Non_Positive (T) with Ghost;
+       Uns_Value  : Uns := Uns_Of_Non_Positive (Value) with Ghost;
+       Prev_Value : Uns with Ghost;
+       Prev_S     : String := S with Ghost;
+ 
+       --  Local ghost lemmas
+ 
+       procedure Prove_Character_Val (RU : Uns; RI : Non_Positive)
+       with
+         Ghost,
+         Post => RU rem 10 in 0 .. 9
+           and then -(RI rem 10) in 0 .. 9
+           and then Character'Val (48 + RU rem 10) in '0' .. '9'
+           and then Character'Val (48 - RI rem 10) in '0' .. '9';
+       --  Ghost lemma to prove the value of a character corresponding to the
+       --  next figure.
+ 
+       procedure Prove_Euclidian (Val, Quot, Rest : Uns)
+       with
+         Ghost,
+         Pre  => Quot = Val / 10
+           and then Rest = Val rem 10,
+         Post => Uns'Last - Rest >= 10 * Quot and then Val = 10 * Quot + Rest;
+       --  Ghost lemma to prove the relation between the quotient/remainder of
+       --  division by 10 and the initial value.
+ 
+       procedure Prove_Hexa_To_Unsigned_Ghost (RU : Uns; RI : Int)
+       with
+         Ghost,
+         Pre  => RU in 0 .. 9
+           and then RI in 0 .. 9,
+         Post => UP.Hexa_To_Unsigned_Ghost
+             (Character'Val (48 + RU)) = RU
+           and then UP.Hexa_To_Unsigned_Ghost
+             (Character'Val (48 + RI)) = Uns (RI);
+       --  Ghost lemma to prove that Hexa_To_Unsigned_Ghost returns the source
+       --  figure when applied to the corresponding character.
+ 
+       procedure Prove_Scan_Iter
+         (S, Prev_S      : String;
+          V, Prev_V, Res : Uns;
+          P, Max         : Natural)
+         with
+           Ghost,
+           Pre =>
+             S'First = Prev_S'First and then S'Last = Prev_S'Last
+             and then S'Last < Natural'Last and then
+             Max in S'Range and then P in S'First .. Max and then
+             (for all I in P + 1 .. Max => Prev_S (I) in '0' .. '9')
+             and then (for all I in P + 1 .. Max => Prev_S (I) = S (I))
+             and then S (P) in '0' .. '9'
+             and then V <= Uns'Last / 10
+             and then Uns'Last - UP.Hexa_To_Unsigned_Ghost (S (P))
+               >= 10 * V
+             and then Prev_V =
+               V * 10 + UP.Hexa_To_Unsigned_Ghost (S (P))
+             and then
+               (if P = Max then Prev_V = Res
+                else UP.Scan_Based_Number_Ghost
+                  (Str  => Prev_S,
+                   From => P + 1,
+                   To   => Max,
+                   Base => 10,
+                   Acc  => Prev_V) = UP.Wrap_Option (Res)),
+           Post =>
+             (for all I in P .. Max => S (I) in '0' .. '9')
+             and then UP.Scan_Based_Number_Ghost
+               (Str  => S,
+                From => P,
+                To   => Max,
+                Base => 10,
+                Acc  => V) = UP.Wrap_Option (Res);
+       --  Ghost lemma to prove that Scan_Based_Number_Ghost is preserved
+       --  through an iteration of the loop.
+ 
+       procedure Prove_Uns_Of_Non_Positive_Value
+       with
+         Ghost,
+         Pre  => Uns_Value = Uns_Of_Non_Positive (Value),
+         Post => Uns_Value / 10 = Uns_Of_Non_Positive (Value / 10)
+           and then Uns_Value rem 10 = Uns_Of_Non_Positive (Value rem 10);
+       --  Ghost lemma to prove that the relation between Value and its unsigned
+       --  version is preserved.
+ 
+       -----------------------------
+       -- Local lemma null bodies --
+       -----------------------------
+ 
+       procedure Prove_Character_Val (RU : Uns; RI : Non_Positive) is null;
+       procedure Prove_Euclidian (Val, Quot, Rest : Uns) is null;
+       procedure Prove_Hexa_To_Unsigned_Ghost (RU : Uns; RI : Int) is null;
+       procedure Prove_Uns_Of_Non_Positive_Value is null;
+ 
+       ---------------------
+       -- Prove_Scan_Iter --
+       ---------------------
+ 
+       procedure Prove_Scan_Iter
+         (S, Prev_S      : String;
+          V, Prev_V, Res : Uns;
+          P, Max         : Natural)
+       is
+          pragma Unreferenced (Res);
+       begin
+          UP.Lemma_Scan_Based_Number_Ghost_Step
+            (Str  => S,
+             From => P,
+             To   => Max,
+             Base => 10,
+             Acc  => V);
+          if P < Max then
+             UP.Prove_Scan_Based_Number_Ghost_Eq
+               (Prev_S, S, P + 1, Max, 10, Prev_V);
+          else
+             UP.Lemma_Scan_Based_Number_Ghost_Base
+               (Str  => S,
+                From => P + 1,
+                To   => Max,
+                Base => 10,
+                Acc  => Prev_V);
+          end if;
+       end Prove_Scan_Iter;
+ 
+    --  Start of processing for Set_Digits
+ 
     begin
        pragma Assert (P >= S'First - 1 and P < S'Last);
        --  No check is done since, as documented in the Set_Image_Integer
*************** package body System.Image_I is
*** 86,104 ****
--- 352,441 ----
        --  First we compute the number of characters needed for representing
        --  the number.
        loop
+          Lemma_Div_Commutation (Uns_Of_Non_Positive (Value), 10);
+          Lemma_Div_Twice (Big (Uns_Of_Non_Positive (T)),
+                           Big_10 ** Nb_Digits, Big_10);
+          Prove_Uns_Of_Non_Positive_Value;
+ 
           Value := Value / 10;
           Nb_Digits := Nb_Digits + 1;
+ 
+          Uns_Value := Uns_Value / 10;
+          Pow := Pow * 10;
+ 
+          pragma Loop_Invariant (Uns_Value = Uns_Of_Non_Positive (Value));
+          pragma Loop_Invariant (Nb_Digits in 1 .. Unsigned_Width_Ghost - 1);
+          pragma Loop_Invariant (Pow = Big_10 ** Nb_Digits);
+          pragma Loop_Invariant (Big (Uns_Value) = Big (Uns_T) / Pow);
+          pragma Loop_Variant (Increases => Value);
+ 
           exit when Value = 0;
+ 
+          Lemma_Non_Zero (Uns_Value);
+          pragma Assert (Pow <= Big (Uns'Last));
        end loop;
  
        Value := T;
+       Uns_Value := Uns_Of_Non_Positive (T);
+       Pow := 1;
+ 
+       pragma Assert (Uns_Value = From_Big (Big (Uns_T) / Big_10 ** 0));
  
        --  We now populate digits from the end of the string to the beginning
        for J in reverse  1 .. Nb_Digits loop
+          Lemma_Div_Commutation (Uns_Value, 10);
+          Lemma_Div_Twice (Big (Uns_T), Big_10 ** (Nb_Digits - J), Big_10);
+          Prove_Character_Val (Uns_Value, Value);
+          Prove_Hexa_To_Unsigned_Ghost (Uns_Value rem 10, -(Value rem 10));
+          Prove_Uns_Of_Non_Positive_Value;
+ 
+          Prev_Value := Uns_Value;
+          Prev_S := S;
+          Pow := Pow * 10;
+          Uns_Value := Uns_Value / 10;
+ 
           S (P + J) := Character'Val (48 - (Value rem 10));
           Value := Value / 10;
+ 
+          Prove_Euclidian
+            (Val  => Prev_Value,
+             Quot => Uns_Value,
+             Rest => UP.Hexa_To_Unsigned_Ghost (S (P + J)));
+ 
+          Prove_Scan_Iter
+            (S, Prev_S, Uns_Value, Prev_Value, Uns_T, P + J, P + Nb_Digits);
+ 
+          pragma Loop_Invariant (Uns_Value = Uns_Of_Non_Positive (Value));
+          pragma Loop_Invariant (Uns_Value <= Uns'Last / 10);
+          pragma Loop_Invariant
+            (for all K in S'First .. P => S (K) = S_Init (K));
+          pragma Loop_Invariant
+            (UP.Only_Decimal_Ghost (S, P + J, P + Nb_Digits));
+          pragma Loop_Invariant
+            (for all K in P + J .. P + Nb_Digits => S (K) in '0' .. '9');
+          pragma Loop_Invariant (Pow = Big_10 ** (Nb_Digits - J + 1));
+          pragma Loop_Invariant (Big (Uns_Value) = Big (Uns_T) / Pow);
+          pragma Loop_Invariant
+            (UP.Scan_Based_Number_Ghost
+               (Str  => S,
+                From => P + J,
+                To   => P + Nb_Digits,
+                Base => 10,
+                Acc  => Uns_Value)
+               = UP.Wrap_Option (Uns_T));
        end loop;
  
+       pragma Assert (Big (Uns_Value) = Big (Uns_T) / Big_10 ** (Nb_Digits));
+       pragma Assert (Uns_Value = 0);
+       pragma Assert
+         (UP.Scan_Based_Number_Ghost
+            (Str  => S,
+             From => P + 1,
+             To   => P + Nb_Digits,
+             Base => 10,
+             Acc  => Uns_Value)
+          = UP.Wrap_Option (Uns_T));
+ 
        P := P + Nb_Digits;
     end Set_Digits;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagei.ads gcc-13.1.0/gcc/ada/libgnat/s-imagei.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imagei.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagei.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,49 ****
  --  signed integer types, and also for conversion operations required in
  --  Text_IO.Integer_IO for such types.
  
! generic
  
     type Int is range <>;
  
  package System.Image_I is
!    pragma Pure;
  
     procedure Image_Integer
       (V : Int;
        S : in out String;
!       P : out Natural);
     --  Computes Int'Image (V) and stores the result in S (1 .. P)
     --  setting the resulting value of P. The caller guarantees that S
     --  is long enough to hold the result, and that S'First is 1.
--- 33,77 ----
  --  signed integer types, and also for conversion operations required in
  --  Text_IO.Integer_IO for such types.
  
! --  Preconditions in this unit are meant for analysis only, not for run-time
! --  checking, so that the expected exceptions are raised. This is enforced by
! --  setting the corresponding assertion policy to Ignore. Postconditions and
! --  contract cases should not be executed at runtime as well, in order not to
! --  slow down the execution of these functions.
! 
! pragma Assertion_Policy (Pre                => Ignore,
!                          Post               => Ignore,
!                          Contract_Cases     => Ignore,
!                          Ghost              => Ignore,
!                          Subprogram_Variant => Ignore);
! 
! with System.Val_Util;
  
+ generic
     type Int is range <>;
+    type Uns is mod <>;
+ 
+    Unsigned_Width_Ghost : Natural;
+ 
+    with package Int_Params is new System.Val_Util.Int_Params
+      (Int => Int, Uns => Uns, others => <>)
+    with Ghost;
  
  package System.Image_I is
!    package IP renames Int_Params;
!    package UP renames IP.Uns_Params;
!    use type UP.Uns_Option;
  
     procedure Image_Integer
       (V : Int;
        S : in out String;
!       P : out Natural)
!    with
!      Pre  => S'First = 1
!        and then S'Last < Integer'Last
!        and then S'Last >= Unsigned_Width_Ghost,
!      Post => P in S'Range
!        and then IP.Is_Value_Integer_Ghost (S (1 .. P), V);
     --  Computes Int'Image (V) and stores the result in S (1 .. P)
     --  setting the resulting value of P. The caller guarantees that S
     --  is long enough to hold the result, and that S'First is 1.
*************** package System.Image_I is
*** 51,57 ****
     procedure Set_Image_Integer
       (V : Int;
        S : in out String;
!       P : in out Natural);
     --  Stores the image of V in S starting at S (P + 1), P is updated to point
     --  to the last character stored. The value stored is identical to the value
     --  of Int'Image (V) except that no leading space is stored when V is
--- 79,109 ----
     procedure Set_Image_Integer
       (V : Int;
        S : in out String;
!       P : in out Natural)
!    with
!      Pre  => P < Integer'Last
!        and then S'Last < Integer'Last
!        and then S'First <= P + 1
!        and then S'First <= S'Last
!        and then
!          (if V >= 0 then
!             P <= S'Last - Unsigned_Width_Ghost + 1
!           else
!             P <= S'Last - Unsigned_Width_Ghost),
!      Post => S (S'First .. P'Old) = S'Old (S'First .. P'Old)
!        and then
!          (declare
!             Minus  : constant Boolean := S (P'Old + 1) = '-';
!             Offset : constant Positive := (if V >= 0 then 1 else 2);
!             Abs_V  : constant Uns := IP.Abs_Uns_Of_Int (V);
!           begin
!             Minus = (V < 0)
!               and then P in P'Old + Offset .. S'Last
!               and then UP.Only_Decimal_Ghost
!                 (S, From => P'Old + Offset, To => P)
!               and then UP.Scan_Based_Number_Ghost
!                 (S, From => P'Old + Offset, To => P)
!                 = UP.Wrap_Option (Abs_V));
     --  Stores the image of V in S starting at S (P + 1), P is updated to point
     --  to the last character stored. The value stored is identical to the value
     --  of Int'Image (V) except that no leading space is stored when V is
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagen.adb gcc-13.1.0/gcc/ada/libgnat/s-imagen.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imagen.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagen.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagen.ads gcc-13.1.0/gcc/ada/libgnat/s-imagen.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imagen.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagen.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imager.adb gcc-13.1.0/gcc/ada/libgnat/s-imager.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imager.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imager.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imager.ads gcc-13.1.0/gcc/ada/libgnat/s-imager.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imager.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imager.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** generic
*** 48,54 ****
        P : in out Natural);
  
  package System.Image_R is
-    pragma Pure;
  
     procedure Image_Fixed_Point
       (V   : Num;
--- 48,53 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imageu.adb gcc-13.1.0/gcc/ada/libgnat/s-imageu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imageu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imageu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,36 ****
--- 29,134 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
+ use Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
+ 
  package body System.Image_U is
  
+    --  Ghost code, loop invariants and assertions in this unit are meant for
+    --  analysis only, not for run-time checking, as it would be too costly
+    --  otherwise. This is enforced by setting the assertion policy to Ignore.
+ 
+    pragma Assertion_Policy (Ghost              => Ignore,
+                             Loop_Invariant     => Ignore,
+                             Assert             => Ignore,
+                             Assert_And_Cut     => Ignore,
+                             Subprogram_Variant => Ignore);
+ 
+    package Unsigned_Conversion is new Unsigned_Conversions (Int => Uns);
+ 
+    function Big (Arg : Uns) return Big_Integer renames
+      Unsigned_Conversion.To_Big_Integer;
+ 
+    function From_Big (Arg : Big_Integer) return Uns renames
+      Unsigned_Conversion.From_Big_Integer;
+ 
+    Big_10 : constant Big_Integer := Big (10) with Ghost;
+ 
+    --  Maximum value of exponent for 10 that fits in Uns'Base
+    function Max_Log10 return Natural is
+      (case Uns'Base'Size is
+         when 8   => 2,
+         when 16  => 4,
+         when 32  => 9,
+         when 64  => 19,
+         when 128 => 38,
+         when others => raise Program_Error)
+    with Ghost;
+ 
+    ------------------
+    -- Local Lemmas --
+    ------------------
+ 
+    procedure Lemma_Non_Zero (X : Uns)
+    with
+      Ghost,
+      Pre  => X /= 0,
+      Post => Big (X) /= 0;
+ 
+    procedure Lemma_Div_Commutation (X, Y : Uns)
+    with
+      Ghost,
+      Pre  => Y /= 0,
+      Post => Big (X) / Big (Y) = Big (X / Y);
+ 
+    procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive)
+    with
+      Ghost,
+      Post => X / Y / Z = X / (Y * Z);
+ 
+    procedure Lemma_Unsigned_Width_Ghost
+    with
+      Ghost,
+      Post => Unsigned_Width_Ghost = Max_Log10 + 2;
+ 
+    ---------------------------
+    -- Lemma_Div_Commutation --
+    ---------------------------
+ 
+    procedure Lemma_Non_Zero (X : Uns) is null;
+    procedure Lemma_Div_Commutation (X, Y : Uns) is null;
+ 
+    ---------------------
+    -- Lemma_Div_Twice --
+    ---------------------
+ 
+    procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive) is
+       XY  : constant Big_Natural := X / Y;
+       YZ  : constant Big_Natural := Y * Z;
+       XYZ : constant Big_Natural := X / Y / Z;
+       R   : constant Big_Natural := (XY rem Z) * Y + (X rem Y);
+    begin
+       pragma Assert (X = XY * Y + (X rem Y));
+       pragma Assert (XY = XY / Z * Z + (XY rem Z));
+       pragma Assert (X = XYZ * YZ + R);
+       pragma Assert ((XY rem Z) * Y <= (Z - 1) * Y);
+       pragma Assert (R <= YZ - 1);
+       pragma Assert (X / YZ = (XYZ * YZ + R) / YZ);
+       pragma Assert (X / YZ = XYZ + R / YZ);
+    end Lemma_Div_Twice;
+ 
+    --------------------------------
+    -- Lemma_Unsigned_Width_Ghost --
+    --------------------------------
+ 
+    procedure Lemma_Unsigned_Width_Ghost is
+    begin
+       pragma Assert (Unsigned_Width_Ghost <= Max_Log10 + 2);
+       pragma Assert (Big (Uns'Last) > Big_10 ** Max_Log10);
+       pragma Assert (Big (Uns'Last) < Big_10 ** (Unsigned_Width_Ghost - 1));
+       pragma Assert (Unsigned_Width_Ghost >= Max_Log10 + 2);
+    end Lemma_Unsigned_Width_Ghost;
+ 
     --------------------
     -- Image_Unsigned --
     --------------------
*************** package body System.Image_U is
*** 41,50 ****
--- 139,188 ----
        P : out Natural)
     is
        pragma Assert (S'First = 1);
+ 
+       procedure Prove_Value_Unsigned
+       with
+         Ghost,
+         Pre => S'First = 1
+           and then S'Last < Integer'Last
+           and then P in 2 .. S'Last
+           and then S (1) = ' '
+           and then Uns_Params.Only_Decimal_Ghost (S, From => 2, To => P)
+           and then Uns_Params.Scan_Based_Number_Ghost (S, From => 2, To => P)
+             = Uns_Params.Wrap_Option (V),
+         Post => not System.Val_Util.Only_Space_Ghost (S, 1, P)
+           and then Uns_Params.Is_Unsigned_Ghost (S (1 .. P))
+           and then Uns_Params.Is_Value_Unsigned_Ghost (S (1 .. P), V);
+       --  Ghost lemma to prove the value of Value_Unsigned from the value of
+       --  Scan_Based_Number_Ghost on a decimal string.
+ 
+       --------------------------
+       -- Prove_Value_Unsigned --
+       --------------------------
+ 
+       procedure Prove_Value_Unsigned is
+          Str : constant String := S (1 .. P);
+       begin
+          pragma Assert (Str'First = 1);
+          pragma Assert (S (2) /= ' ');
+          pragma Assert
+            (Uns_Params.Only_Decimal_Ghost (Str, From => 2, To => P));
+          Uns_Params.Prove_Scan_Based_Number_Ghost_Eq
+            (S, Str, From => 2, To => P);
+          pragma Assert
+            (Uns_Params.Scan_Based_Number_Ghost (Str, From => 2, To => P)
+             = Uns_Params.Wrap_Option (V));
+          Uns_Params.Prove_Scan_Only_Decimal_Ghost (Str, V);
+       end Prove_Value_Unsigned;
+ 
+    --  Start of processing for Image_Unsigned
+ 
     begin
        S (1) := ' ';
        P := 1;
        Set_Image_Unsigned (V, S, P);
+ 
+       Prove_Value_Unsigned;
     end Image_Unsigned;
  
     ------------------------
*************** package body System.Image_U is
*** 58,84 ****
     is
        Nb_Digits : Natural := 0;
        Value     : Uns := V;
     begin
        pragma Assert (P >= S'First - 1 and then P < S'Last and then
                       P < Natural'Last);
        --  No check is done since, as documented in the specification, the
        --  caller guarantees that S is long enough to hold the result.
  
        --  First we compute the number of characters needed for representing
        --  the number.
        loop
           Value := Value / 10;
           Nb_Digits := Nb_Digits + 1;
           exit when Value = 0;
        end loop;
  
        Value := V;
  
        --  We now populate digits from the end of the string to the beginning
!       for J in reverse  1 .. Nb_Digits loop
           S (P + J) := Character'Val (48 + (Value rem 10));
           Value := Value / 10;
        end loop;
  
        P := P + Nb_Digits;
     end Set_Image_Unsigned;
--- 196,388 ----
     is
        Nb_Digits : Natural := 0;
        Value     : Uns := V;
+ 
+       --  Local ghost variables
+ 
+       Pow        : Big_Positive := 1 with Ghost;
+       S_Init     : constant String := S with Ghost;
+       Prev_Value : Uns with Ghost;
+       Prev_S     : String := S with Ghost;
+ 
+       --  Local ghost lemmas
+ 
+       procedure Prove_Character_Val (R : Uns)
+       with
+         Ghost,
+         Post => R rem 10 in 0 .. 9
+           and then Character'Val (48 + R rem 10) in '0' .. '9';
+       --  Ghost lemma to prove the value of a character corresponding to the
+       --  next figure.
+ 
+       procedure Prove_Euclidian (Val, Quot, Rest : Uns)
+       with
+         Ghost,
+         Pre  => Quot = Val / 10
+           and then Rest = Val rem 10,
+         Post => Uns'Last - Rest >= 10 * Quot and then Val = 10 * Quot + Rest;
+       --  Ghost lemma to prove the relation between the quotient/remainder of
+       --  division by 10 and the initial value.
+ 
+       procedure Prove_Hexa_To_Unsigned_Ghost (R : Uns)
+       with
+         Ghost,
+         Pre  => R in 0 .. 9,
+         Post => Uns_Params.Hexa_To_Unsigned_Ghost (Character'Val (48 + R)) = R;
+       --  Ghost lemma to prove that Hexa_To_Unsigned_Ghost returns the source
+       --  figure when applied to the corresponding character.
+ 
+       procedure Prove_Scan_Iter
+         (S, Prev_S      : String;
+          V, Prev_V, Res : Uns;
+          P, Max         : Natural)
+         with
+           Ghost,
+           Pre =>
+             S'First = Prev_S'First and then S'Last = Prev_S'Last
+             and then S'Last < Natural'Last and then
+             Max in S'Range and then P in S'First .. Max and then
+             (for all I in P + 1 .. Max => Prev_S (I) in '0' .. '9')
+             and then (for all I in P + 1 .. Max => Prev_S (I) = S (I))
+             and then S (P) in '0' .. '9'
+             and then V <= Uns'Last / 10
+             and then Uns'Last - Uns_Params.Hexa_To_Unsigned_Ghost (S (P))
+               >= 10 * V
+             and then Prev_V =
+               V * 10 + Uns_Params.Hexa_To_Unsigned_Ghost (S (P))
+             and then
+               (if P = Max then Prev_V = Res
+                else Uns_Params.Scan_Based_Number_Ghost
+                  (Str  => Prev_S,
+                   From => P + 1,
+                   To   => Max,
+                   Base => 10,
+                   Acc  => Prev_V) = Uns_Params.Wrap_Option (Res)),
+           Post =>
+             (for all I in P .. Max => S (I) in '0' .. '9')
+             and then Uns_Params.Scan_Based_Number_Ghost
+               (Str  => S,
+                From => P,
+                To   => Max,
+                Base => 10,
+                Acc  => V) = Uns_Params.Wrap_Option (Res);
+       --  Ghost lemma to prove that Scan_Based_Number_Ghost is preserved
+       --  through an iteration of the loop.
+ 
+       -----------------------------
+       -- Local lemma null bodies --
+       -----------------------------
+ 
+       procedure Prove_Character_Val (R : Uns) is null;
+       procedure Prove_Euclidian (Val, Quot, Rest : Uns) is null;
+       procedure Prove_Hexa_To_Unsigned_Ghost (R : Uns) is null;
+ 
+       ---------------------
+       -- Prove_Scan_Iter --
+       ---------------------
+ 
+       procedure Prove_Scan_Iter
+         (S, Prev_S      : String;
+          V, Prev_V, Res : Uns;
+          P, Max         : Natural)
+       is
+          pragma Unreferenced (Res);
+       begin
+          Uns_Params.Lemma_Scan_Based_Number_Ghost_Step
+            (Str  => S,
+             From => P,
+             To   => Max,
+             Base => 10,
+             Acc  => V);
+          if P < Max then
+             Uns_Params.Prove_Scan_Based_Number_Ghost_Eq
+               (Prev_S, S, P + 1, Max, 10, Prev_V);
+          else
+             Uns_Params.Lemma_Scan_Based_Number_Ghost_Base
+               (Str  => S,
+                From => P + 1,
+                To   => Max,
+                Base => 10,
+                Acc  => Prev_V);
+          end if;
+       end Prove_Scan_Iter;
+ 
+    --  Start of processing for Set_Image_Unsigned
+ 
     begin
        pragma Assert (P >= S'First - 1 and then P < S'Last and then
                       P < Natural'Last);
        --  No check is done since, as documented in the specification, the
        --  caller guarantees that S is long enough to hold the result.
  
+       Lemma_Unsigned_Width_Ghost;
+ 
        --  First we compute the number of characters needed for representing
        --  the number.
        loop
+          Lemma_Div_Commutation (Value, 10);
+          Lemma_Div_Twice (Big (V), Big_10 ** Nb_Digits, Big_10);
+ 
           Value := Value / 10;
           Nb_Digits := Nb_Digits + 1;
+          Pow := Pow * 10;
+ 
+          pragma Loop_Invariant (Nb_Digits in 1 .. Unsigned_Width_Ghost - 1);
+          pragma Loop_Invariant (Pow = Big_10 ** Nb_Digits);
+          pragma Loop_Invariant (Big (Value) = Big (V) / Pow);
+          pragma Loop_Variant (Decreases => Value);
+ 
           exit when Value = 0;
+ 
+          Lemma_Non_Zero (Value);
+          pragma Assert (Pow <= Big (Uns'Last));
        end loop;
+       pragma Assert (Big (V) / (Big_10 ** Nb_Digits) = 0);
  
        Value := V;
+       Pow := 1;
+ 
+       pragma Assert (Value = From_Big (Big (V) / Big_10 ** 0));
  
        --  We now populate digits from the end of the string to the beginning
!       for J in reverse 1 .. Nb_Digits loop
!          Lemma_Div_Commutation (Value, 10);
!          Lemma_Div_Twice (Big (V), Big_10 ** (Nb_Digits - J), Big_10);
!          Prove_Character_Val (Value);
!          Prove_Hexa_To_Unsigned_Ghost (Value rem 10);
! 
!          Prev_Value := Value;
!          Prev_S := S;
!          Pow := Pow * 10;
           S (P + J) := Character'Val (48 + (Value rem 10));
           Value := Value / 10;
+ 
+          Prove_Euclidian
+            (Val  => Prev_Value,
+             Quot => Value,
+             Rest => Uns_Params.Hexa_To_Unsigned_Ghost (S (P + J)));
+ 
+          Prove_Scan_Iter
+            (S, Prev_S, Value, Prev_Value, V, P + J, P + Nb_Digits);
+ 
+          pragma Loop_Invariant (Value <= Uns'Last / 10);
+          pragma Loop_Invariant
+            (for all K in S'First .. P => S (K) = S_Init (K));
+          pragma Loop_Invariant
+            (Uns_Params.Only_Decimal_Ghost
+               (S, From => P + J, To => P + Nb_Digits));
+          pragma Loop_Invariant (Pow = Big_10 ** (Nb_Digits - J + 1));
+          pragma Loop_Invariant (Big (Value) = Big (V) / Pow);
+          pragma Loop_Invariant
+            (Uns_Params.Scan_Based_Number_Ghost
+               (Str  => S,
+                From => P + J,
+                To   => P + Nb_Digits,
+                Base => 10,
+                Acc  => Value)
+               = Uns_Params.Wrap_Option (V));
        end loop;
+       pragma Assert (Big (Value) = Big (V) / (Big_10 ** Nb_Digits));
+       pragma Assert (Value = 0);
  
        P := P + Nb_Digits;
     end Set_Image_Unsigned;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imageu.ads gcc-13.1.0/gcc/ada/libgnat/s-imageu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imageu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imageu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,49 ****
  --  modular integer types, and also for conversion operations required in
  --  Text_IO.Modular_IO for such types.
  
  generic
  
     type Uns is mod <>;
  
  package System.Image_U is
!    pragma Pure;
  
     procedure Image_Unsigned
       (V : Uns;
        S : in out String;
!       P : out Natural);
     pragma Inline (Image_Unsigned);
     --  Computes Uns'Image (V) and stores the result in S (1 .. P) setting
     --  the resulting value of P. The caller guarantees that S is long enough to
--- 33,77 ----
  --  modular integer types, and also for conversion operations required in
  --  Text_IO.Modular_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
+ with System.Val_Util;
+ 
  generic
  
     type Uns is mod <>;
  
+    --  Additional parameters for ghost subprograms used inside contracts
+ 
+    Unsigned_Width_Ghost : Natural;
+ 
+    with package Uns_Params is new System.Val_Util.Uns_Params
+      (Uns => Uns, others => <>)
+    with Ghost;
+ 
  package System.Image_U is
!    use all type Uns_Params.Uns_Option;
  
     procedure Image_Unsigned
       (V : Uns;
        S : in out String;
!       P : out Natural)
!    with
!      Pre  => S'First = 1
!        and then S'Last < Integer'Last
!        and then S'Last >= Unsigned_Width_Ghost,
!      Post => P in S'Range
!        and then Uns_Params.Is_Value_Unsigned_Ghost (S (1 .. P), V);
     pragma Inline (Image_Unsigned);
     --  Computes Uns'Image (V) and stores the result in S (1 .. P) setting
     --  the resulting value of P. The caller guarantees that S is long enough to
*************** package System.Image_U is
*** 52,58 ****
     procedure Set_Image_Unsigned
       (V : Uns;
        S : in out String;
!       P : in out Natural);
     --  Stores the image of V in S starting at S (P + 1), P is updated to point
     --  to the last character stored. The value stored is identical to the value
     --  of Uns'Image (V) except that no leading space is stored. The caller
--- 80,98 ----
     procedure Set_Image_Unsigned
       (V : Uns;
        S : in out String;
!       P : in out Natural)
!    with
!      Pre  => P < Integer'Last
!        and then S'Last < Integer'Last
!        and then S'First <= P + 1
!        and then S'First <= S'Last
!        and then P <= S'Last - Unsigned_Width_Ghost + 1,
!      Post => S (S'First .. P'Old) = S'Old (S'First .. P'Old)
!        and then P in P'Old + 1 .. S'Last
!        and then Uns_Params.Only_Decimal_Ghost (S, From => P'Old + 1, To => P)
!        and then Uns_Params.Scan_Based_Number_Ghost
!          (S, From => P'Old + 1, To => P)
!          = Uns_Params.Wrap_Option (V);
     --  Stores the image of V in S starting at S (P + 1), P is updated to point
     --  to the last character stored. The value stored is identical to the value
     --  of Uns'Image (V) except that no leading space is stored. The caller
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagew.adb gcc-13.1.0/gcc/ada/libgnat/s-imagew.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imagew.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagew.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imagew.ads gcc-13.1.0/gcc/ada/libgnat/s-imagew.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imagew.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imagew.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imde128.ads gcc-13.1.0/gcc/ada/libgnat/s-imde128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imde128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imde128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Interfaces;
*** 37,43 ****
  with System.Image_D;
  
  package System.Img_Decimal_128 is
-    pragma Pure;
  
     subtype Int128 is Interfaces.Integer_128;
  
--- 37,42 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imde32.ads gcc-13.1.0/gcc/ada/libgnat/s-imde32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imde32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imde32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Interfaces;
*** 37,43 ****
  with System.Image_D;
  
  package System.Img_Decimal_32 is
-    pragma Pure;
  
     subtype Int32 is Interfaces.Integer_32;
  
--- 37,42 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imde64.ads gcc-13.1.0/gcc/ada/libgnat/s-imde64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imde64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imde64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Interfaces;
*** 37,43 ****
  with System.Image_D;
  
  package System.Img_Decimal_64 is
-    pragma Pure;
  
     subtype Int64 is Interfaces.Integer_64;
  
--- 37,42 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imen16.ads gcc-13.1.0/gcc/ada/libgnat/s-imen16.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imen16.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imen16.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imen32.ads gcc-13.1.0/gcc/ada/libgnat/s-imen32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imen32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imen32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imenu8.ads gcc-13.1.0/gcc/ada/libgnat/s-imenu8.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imenu8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imenu8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imfi128.ads gcc-13.1.0/gcc/ada/libgnat/s-imfi128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imfi128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imfi128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Arith_128;
*** 37,47 ****
  with System.Image_F;
  
  package System.Img_Fixed_128 is
-    pragma Pure;
  
     subtype Int128 is Interfaces.Integer_128;
  
!    package Impl is new Image_F (Int128, Arith_128.Scaled_Divide128);
  
     procedure Image_Fixed128
       (V    : Int128;
--- 37,47 ----
  with System.Image_F;
  
  package System.Img_Fixed_128 is
  
     subtype Int128 is Interfaces.Integer_128;
+    subtype Uns128 is Interfaces.Unsigned_128;
  
!    package Impl is new Image_F (Int128, Uns128, Arith_128.Scaled_Divide128);
  
     procedure Image_Fixed128
       (V    : Int128;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imfi32.ads gcc-13.1.0/gcc/ada/libgnat/s-imfi32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imfi32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imfi32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Arith_32;
*** 37,47 ****
  with System.Image_F;
  
  package System.Img_Fixed_32 is
-    pragma Pure;
  
     subtype Int32 is Interfaces.Integer_32;
  
!    package Impl is new Image_F (Int32, Arith_32.Scaled_Divide32);
  
     procedure Image_Fixed32
       (V    : Int32;
--- 37,47 ----
  with System.Image_F;
  
  package System.Img_Fixed_32 is
  
     subtype Int32 is Interfaces.Integer_32;
+    subtype Uns32 is Interfaces.Unsigned_32;
  
!    package Impl is new Image_F (Int32, Uns32, Arith_32.Scaled_Divide32);
  
     procedure Image_Fixed32
       (V    : Int32;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imfi64.ads gcc-13.1.0/gcc/ada/libgnat/s-imfi64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imfi64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imfi64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Arith_64;
*** 37,47 ****
  with System.Image_F;
  
  package System.Img_Fixed_64 is
-    pragma Pure;
  
     subtype Int64 is Interfaces.Integer_64;
  
!    package Impl is new Image_F (Int64, Arith_64.Scaled_Divide64);
  
     procedure Image_Fixed64
       (V    : Int64;
--- 37,47 ----
  with System.Image_F;
  
  package System.Img_Fixed_64 is
  
     subtype Int64 is Interfaces.Integer_64;
+    subtype Uns64 is Interfaces.Unsigned_64;
  
!    package Impl is new Image_F (Int64, Uns64, Arith_64.Scaled_Divide64);
  
     procedure Image_Fixed64
       (V    : Int64;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgbiu.adb gcc-13.1.0/gcc/ada/libgnat/s-imgbiu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgbiu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgbiu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgbiu.ads gcc-13.1.0/gcc/ada/libgnat/s-imgbiu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgbiu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgbiu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgboo.adb gcc-13.1.0/gcc/ada/libgnat/s-imgboo.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgboo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgboo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Assertion_Policy (Ghost
*** 37,42 ****
--- 37,44 ----
                           Loop_Invariant => Ignore,
                           Assert         => Ignore);
  
+ with System.Val_Util;
+ 
  package body System.Img_Bool
    with SPARK_Mode
  is
*************** is
*** 55,63 ****
--- 57,69 ----
        if V then
           S (1 .. 4) := "TRUE";
           P := 4;
+          pragma Assert
+            (System.Val_Util.First_Non_Space_Ghost (S, S'First, S'Last) = 1);
        else
           S (1 .. 5) := "FALSE";
           P := 5;
+          pragma Assert
+            (System.Val_Util.First_Non_Space_Ghost (S, S'First, S'Last) = 1);
        end if;
     end Image_Boolean;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgboo.ads gcc-13.1.0/gcc/ada/libgnat/s-imgboo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgboo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgboo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgcha.adb gcc-13.1.0/gcc/ada/libgnat/s-imgcha.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgcha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgcha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgcha.ads gcc-13.1.0/gcc/ada/libgnat/s-imgcha.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgcha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgcha.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgflt.ads gcc-13.1.0/gcc/ada/libgnat/s-imgflt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgflt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgflt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Powten_Flt;
*** 38,44 ****
  with System.Unsigned_Types;
  
  package System.Img_Flt is
-    pragma Pure;
  
     package Impl is new Image_R
       (Float,
--- 38,43 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgint.adb gcc-13.1.0/gcc/ada/libgnat/s-imgint.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgint.ads gcc-13.1.0/gcc/ada/libgnat/s-imgint.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,44 ****
  --  signed integer types up to Integer, and also for conversion operations
  --  required in Text_IO.Integer_IO for such types.
  
  with System.Image_I;
  
! package System.Img_Int is
!    pragma Pure;
  
!    package Impl is new Image_I (Integer);
  
     procedure Image_Integer
       (V : Integer;
--- 33,66 ----
  --  signed integer types up to Integer, and also for conversion operations
  --  required in Text_IO.Integer_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Image_I;
+ with System.Unsigned_Types;
+ with System.Val_Int;
+ with System.Wid_Uns;
  
! package System.Img_Int
!   with SPARK_Mode
! is
!    subtype Unsigned is Unsigned_Types.Unsigned;
  
!    package Impl is new Image_I
!      (Int                  => Integer,
!       Uns                  => Unsigned,
!       Unsigned_Width_Ghost =>
!          Wid_Uns.Width_Unsigned (0, Unsigned'Last),
!       Int_Params           => System.Val_Int.Impl.Spec.Int_Params);
  
     procedure Image_Integer
       (V : Integer;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imglfl.ads gcc-13.1.0/gcc/ada/libgnat/s-imglfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imglfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imglfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Powten_LFlt;
*** 38,44 ****
  with System.Unsigned_Types;
  
  package System.Img_LFlt is
-    pragma Pure;
  
     --  Note that the following instantiation is really for a 32-bit target,
     --  where 128-bit integer types are not available. For a 64-bit targaet,
--- 38,43 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllb.adb gcc-13.1.0/gcc/ada/libgnat/s-imgllb.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllb.ads gcc-13.1.0/gcc/ada/libgnat/s-imgllb.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllf.ads gcc-13.1.0/gcc/ada/libgnat/s-imgllf.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Powten_LLF;
*** 38,44 ****
  with System.Unsigned_Types;
  
  package System.Img_LLF is
-    pragma Pure;
  
     --  Note that the following instantiation is really for a 32-bit target,
     --  where 128-bit integer types are not available. For a 64-bit targaet,
--- 38,43 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imglli.adb gcc-13.1.0/gcc/ada/libgnat/s-imglli.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imglli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imglli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imglli.ads gcc-13.1.0/gcc/ada/libgnat/s-imglli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imglli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imglli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,44 ****
  --  signed integer types larger than Integer, and also for conversion
  --  operations required in Text_IO.Integer_IO for such types.
  
  with System.Image_I;
  
! package System.Img_LLI is
!    pragma Pure;
  
!    package Impl is new Image_I (Long_Long_Integer);
  
     procedure Image_Long_Long_Integer
       (V : Long_Long_Integer;
--- 33,67 ----
  --  signed integer types larger than Integer, and also for conversion
  --  operations required in Text_IO.Integer_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Image_I;
+ with System.Unsigned_Types;
+ with System.Val_LLI;
+ with System.Wid_LLU;
  
! package System.Img_LLI
!   with SPARK_Mode
! is
!    subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    package Impl is new Image_I
!      (Int                  => Long_Long_Integer,
!       Uns                  => Long_Long_Unsigned,
!       Unsigned_Width_Ghost =>
!          Wid_LLU.Width_Long_Long_Unsigned
!            (0, Long_Long_Unsigned'Last),
!       Int_Params           => System.Val_LLI.Impl.Spec.Int_Params);
  
     procedure Image_Long_Long_Integer
       (V : Long_Long_Integer;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imglllb.ads gcc-13.1.0/gcc/ada/libgnat/s-imglllb.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imglllb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imglllb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllli.ads gcc-13.1.0/gcc/ada/libgnat/s-imgllli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,44 ****
  --  signed integer types larger than Long_Long_Integer, and also for conversion
  --  operations required in Text_IO.Integer_IO for such types.
  
  with System.Image_I;
  
! package System.Img_LLLI is
!    pragma Pure;
  
!    package Impl is new Image_I (Long_Long_Long_Integer);
  
     procedure Image_Long_Long_Long_Integer
       (V : Long_Long_Long_Integer;
--- 33,67 ----
  --  signed integer types larger than Long_Long_Integer, and also for conversion
  --  operations required in Text_IO.Integer_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Image_I;
+ with System.Unsigned_Types;
+ with System.Val_LLLI;
+ with System.Wid_LLLU;
  
! package System.Img_LLLI
!   with SPARK_Mode
! is
!    subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    package Impl is new Image_I
!      (Int                  => Long_Long_Long_Integer,
!       Uns                  => Long_Long_Long_Unsigned,
!       Unsigned_Width_Ghost =>
!          Wid_LLLU.Width_Long_Long_Long_Unsigned
!            (0, Long_Long_Long_Unsigned'Last),
!       Int_Params           => System.Val_LLLI.Impl.Spec.Int_Params);
  
     procedure Image_Long_Long_Long_Integer
       (V : Long_Long_Long_Integer;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imglllu.ads gcc-13.1.0/gcc/ada/libgnat/s-imglllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imglllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imglllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,47 ****
  --  modular integer types larger than Long_Long_Unsigned, and also for
  --  conversion operations required in Text_IO.Modular_IO for such types.
  
  with System.Image_U;
  with System.Unsigned_Types;
  
! package System.Img_LLLU is
!    pragma Pure;
! 
     subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    package Impl is new Image_U (Long_Long_Long_Unsigned);
  
     procedure Image_Long_Long_Long_Unsigned
       (V : Long_Long_Long_Unsigned;
--- 33,66 ----
  --  modular integer types larger than Long_Long_Unsigned, and also for
  --  conversion operations required in Text_IO.Modular_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Image_U;
  with System.Unsigned_Types;
+ with System.Val_LLLU;
+ with System.Wid_LLLU;
  
! package System.Img_LLLU
!   with SPARK_Mode
! is
     subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    package Impl is new Image_U
!      (Uns                  => Long_Long_Long_Unsigned,
!       Unsigned_Width_Ghost =>
!          Wid_LLLU.Width_Long_Long_Long_Unsigned
!         (0, Long_Long_Long_Unsigned'Last),
!       Uns_Params           => System.Val_LLLU.Impl.Spec.Uns_Params);
  
     procedure Image_Long_Long_Long_Unsigned
       (V : Long_Long_Long_Unsigned;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imglllw.ads gcc-13.1.0/gcc/ada/libgnat/s-imglllw.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imglllw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imglllw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllu.adb gcc-13.1.0/gcc/ada/libgnat/s-imgllu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllu.ads gcc-13.1.0/gcc/ada/libgnat/s-imgllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,47 ****
  --  modular integer types larger than Unsigned, and also for conversion
  --  operations required in Text_IO.Modular_IO for such types.
  
  with System.Image_U;
  with System.Unsigned_Types;
  
! package System.Img_LLU is
!    pragma Pure;
! 
     subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    package Impl is new Image_U (Long_Long_Unsigned);
  
     procedure Image_Long_Long_Unsigned
       (V : Long_Long_Unsigned;
--- 33,65 ----
  --  modular integer types larger than Unsigned, and also for conversion
  --  operations required in Text_IO.Modular_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Image_U;
  with System.Unsigned_Types;
+ with System.Val_LLU;
+ with System.Wid_LLU;
  
! package System.Img_LLU
!   with SPARK_Mode
! is
     subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    package Impl is new Image_U
!      (Uns                  => Long_Long_Unsigned,
!       Unsigned_Width_Ghost =>
!          Wid_LLU.Width_Long_Long_Unsigned (0, Long_Long_Unsigned'Last),
!       Uns_Params           => System.Val_LLU.Impl.Spec.Uns_Params);
  
     procedure Image_Long_Long_Unsigned
       (V : Long_Long_Unsigned;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllw.adb gcc-13.1.0/gcc/ada/libgnat/s-imgllw.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgllw.ads gcc-13.1.0/gcc/ada/libgnat/s-imgllw.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgllw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgllw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgrea.adb gcc-13.1.0/gcc/ada/libgnat/s-imgrea.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgrea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgrea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgrea.ads gcc-13.1.0/gcc/ada/libgnat/s-imgrea.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgrea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgrea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 34,40 ****
  with System.Img_LLF;
  
  package System.Img_Real is
-    pragma Pure;
  
     procedure Set_Image_Real
       (V    : Long_Long_Float;
--- 34,39 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imguns.adb gcc-13.1.0/gcc/ada/libgnat/s-imguns.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imguns.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imguns.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imguns.ads gcc-13.1.0/gcc/ada/libgnat/s-imguns.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imguns.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imguns.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,47 ****
  --  modular integer types up to Unsigned, and also for conversion operations
  --  required in Text_IO.Modular_IO for such types.
  
  with System.Image_U;
  with System.Unsigned_Types;
  
! package System.Img_Uns is
!    pragma Pure;
! 
     subtype Unsigned is Unsigned_Types.Unsigned;
  
!    package Impl is new Image_U (Unsigned);
  
     procedure Image_Unsigned
       (V : Unsigned;
--- 33,65 ----
  --  modular integer types up to Unsigned, and also for conversion operations
  --  required in Text_IO.Modular_IO for such types.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Image_U;
  with System.Unsigned_Types;
+ with System.Val_Uns;
+ with System.Wid_Uns;
  
! package System.Img_Uns
!   with SPARK_Mode
! is
     subtype Unsigned is Unsigned_Types.Unsigned;
  
!    package Impl is new Image_U
!      (Uns                  => Unsigned,
!       Unsigned_Width_Ghost =>
!          Wid_Uns.Width_Unsigned (0, Unsigned'Last),
!       Uns_Params           => System.Val_Uns.Impl.Spec.Uns_Params);
  
     procedure Image_Unsigned
       (V : Unsigned;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imguti.adb gcc-13.1.0/gcc/ada/libgnat/s-imguti.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imguti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imguti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imguti.ads gcc-13.1.0/gcc/ada/libgnat/s-imguti.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imguti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imguti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  --  This package provides some common utilities used by the s-imgxxx files
  
  package System.Img_Util is
-    pragma Pure;
  
     Max_Real_Image_Length : constant := 5200;
     --  If Exp is set to zero and Aft is set to Text_IO.Field'Last (i.e., 255)
--- 32,37 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgwch.adb gcc-13.1.0/gcc/ada/libgnat/s-imgwch.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgwch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgwch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgwch.ads gcc-13.1.0/gcc/ada/libgnat/s-imgwch.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgwch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgwch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgwiu.adb gcc-13.1.0/gcc/ada/libgnat/s-imgwiu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-imgwiu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgwiu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-imgwiu.ads gcc-13.1.0/gcc/ada/libgnat/s-imgwiu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-imgwiu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-imgwiu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-io.adb gcc-13.1.0/gcc/ada/libgnat/s-io.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-io.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-io.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-io.ads gcc-13.1.0/gcc/ada/libgnat/s-io.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-io.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-io.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-llflex.ads gcc-13.1.0/gcc/ada/libgnat/s-llflex.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-llflex.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-llflex.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-maccod.ads gcc-13.1.0/gcc/ada/libgnat/s-maccod.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-maccod.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-maccod.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 33,39 ****
  --  operations, and also for machine code statements. See GNAT documentation
  --  for full details.
  
! package System.Machine_Code is
     pragma No_Elaboration_Code_All;
     pragma Pure;
  
--- 33,41 ----
  --  operations, and also for machine code statements. See GNAT documentation
  --  for full details.
  
! package System.Machine_Code
!   with SPARK_Mode => Off
! is
     pragma No_Elaboration_Code_All;
     pragma Pure;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mantis.adb gcc-13.1.0/gcc/ada/libgnat/s-mantis.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-mantis.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mantis.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mantis.ads gcc-13.1.0/gcc/ada/libgnat/s-mantis.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-mantis.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mantis.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mastop.adb gcc-13.1.0/gcc/ada/libgnat/s-mastop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-mastop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mastop.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                             (Dummy version)                              --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                             (Dummy version)                              --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mastop.ads gcc-13.1.0/gcc/ada/libgnat/s-mastop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-mastop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mastop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-memcop.ads gcc-13.1.0/gcc/ada/libgnat/s-memcop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-memcop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-memcop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-memory.adb gcc-13.1.0/gcc/ada/libgnat/s-memory.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-memory.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-memory.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-memory.ads gcc-13.1.0/gcc/ada/libgnat/s-memory.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-memory.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-memory.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmap.adb gcc-13.1.0/gcc/ada/libgnat/s-mmap.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-mmap.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmap.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmap.ads gcc-13.1.0/gcc/ada/libgnat/s-mmap.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-mmap.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmap.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmauni__long.ads gcc-13.1.0/gcc/ada/libgnat/s-mmauni__long.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-mmauni__long.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmauni__long.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmosin__mingw.adb gcc-13.1.0/gcc/ada/libgnat/s-mmosin__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-mmosin__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmosin__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmosin__mingw.ads gcc-13.1.0/gcc/ada/libgnat/s-mmosin__mingw.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-mmosin__mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmosin__mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmosin__unix.adb gcc-13.1.0/gcc/ada/libgnat/s-mmosin__unix.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-mmosin__unix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmosin__unix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-mmosin__unix.ads gcc-13.1.0/gcc/ada/libgnat/s-mmosin__unix.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-mmosin__unix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-mmosin__unix.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2007-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-multip.adb gcc-13.1.0/gcc/ada/libgnat/s-multip.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-multip.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-multip.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 2010-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --         Copyright (C) 2010-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-objrea.adb gcc-13.1.0/gcc/ada/libgnat/s-objrea.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-objrea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-objrea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2009-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Object_Reader is
*** 979,985 ****
  
           --  Map section table
  
!          Opt_Stream := Create_Stream (Res.Mf, Signature_Loc_Offset, 4);
           Hdr_Offset := Offset (uint32'(Read (Opt_Stream)));
           Close (Opt_Stream);
           Res.Sectab_Stream := Create_Stream
--- 979,985 ----
  
           --  Map section table
  
!          Opt_Stream := Create_Stream (Res.MF, Signature_Loc_Offset, 4);
           Hdr_Offset := Offset (uint32'(Read (Opt_Stream)));
           Close (Opt_Stream);
           Res.Sectab_Stream := Create_Stream
*************** package body System.Object_Reader is
*** 999,1005 ****
                 Opt_32 : Optional_Header_PE32;
              begin
                 Opt_Stream := Create_Stream
!                  (Res.Mf, Opt_Offset, Opt_32'Size / SSU);
                 Read_Raw
                   (Opt_Stream, Opt_32'Address, uint32 (Opt_32'Size / SSU));
                 Res.ImageBase := uint64 (Opt_32.ImageBase);
--- 999,1005 ----
                 Opt_32 : Optional_Header_PE32;
              begin
                 Opt_Stream := Create_Stream
!                  (Res.MF, Opt_Offset, Opt_32'Size / SSU);
                 Read_Raw
                   (Opt_Stream, Opt_32'Address, uint32 (Opt_32'Size / SSU));
                 Res.ImageBase := uint64 (Opt_32.ImageBase);
*************** package body System.Object_Reader is
*** 1011,1017 ****
                 Opt_64 : Optional_Header_PE64;
              begin
                 Opt_Stream := Create_Stream
!                  (Res.Mf, Opt_Offset, Opt_64'Size / SSU);
                 Read_Raw
                   (Opt_Stream, Opt_64'Address, uint32 (Opt_64'Size / SSU));
                 Res.ImageBase := Opt_64.ImageBase;
--- 1011,1017 ----
                 Opt_64 : Optional_Header_PE64;
              begin
                 Opt_Stream := Create_Stream
!                  (Res.MF, Opt_Offset, Opt_64'Size / SSU);
                 Read_Raw
                   (Opt_Stream, Opt_64'Address, uint32 (Opt_64'Size / SSU));
                 Res.ImageBase := Opt_64.ImageBase;
*************** package body System.Object_Reader is
*** 1367,1373 ****
           Strtab_Sz : uint32;
  
        begin
!          Res.Mf := F;
           Res.In_Exception := In_Exception;
  
           Res.Arch := PPC;
--- 1367,1373 ----
           Strtab_Sz : uint32;
  
        begin
!          Res.MF := F;
           Res.In_Exception := In_Exception;
  
           Res.Arch := PPC;
*************** package body System.Object_Reader is
*** 1515,1528 ****
     end Arch;
  
     function Create_Stream
!      (Mf : Mapped_File;
        File_Offset : File_Size;
        File_Length : File_Size)
       return Mapped_Stream
     is
        Region : Mapped_Region;
     begin
!       Read (Mf, Region, File_Offset, File_Length, False);
        return (Region, 0, Offset (File_Length));
     end Create_Stream;
  
--- 1515,1528 ----
     end Arch;
  
     function Create_Stream
!      (MF : Mapped_File;
        File_Offset : File_Size;
        File_Length : File_Size)
       return Mapped_Stream
     is
        Region : Mapped_Region;
     begin
!       Read (MF, Region, File_Offset, File_Length, False);
        return (Region, 0, Offset (File_Length));
     end Create_Stream;
  
*************** package body System.Object_Reader is
*** 1531,1537 ****
        Sec : Object_Section) return Mapped_Stream
     is
     begin
!       return Create_Stream (Obj.Mf, File_Size (Sec.Off), File_Size (Sec.Size));
     end Create_Stream;
  
     procedure Tell (Obj : in out Mapped_Stream; Off : out Offset) is
--- 1531,1537 ----
        Sec : Object_Section) return Mapped_Stream
     is
     begin
!       return Create_Stream (Obj.MF, File_Size (Sec.Off), File_Size (Sec.Size));
     end Create_Stream;
  
     procedure Tell (Obj : in out Mapped_Stream; Off : out Offset) is
*************** package body System.Object_Reader is
*** 1573,1579 ****
              null;
        end case;
  
!       Close (Obj.Mf);
     end Close;
  
     ------------------------
--- 1573,1579 ----
              null;
        end case;
  
!       Close (Obj.MF);
     end Close;
  
     ------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-objrea.ads gcc-13.1.0/gcc/ada/libgnat/s-objrea.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-objrea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-objrea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Object_Reader is
*** 187,193 ****
     type Mapped_Stream is private;
     --  Provide an abstraction of a stream on a memory mapped file
  
!    function Create_Stream (Mf : System.Mmap.Mapped_File;
                             File_Offset : System.Mmap.File_Size;
                             File_Length : System.Mmap.File_Size)
                            return Mapped_Stream;
--- 187,193 ----
     type Mapped_Stream is private;
     --  Provide an abstraction of a stream on a memory mapped file
  
!    function Create_Stream (MF : System.Mmap.Mapped_File;
                             File_Offset : System.Mmap.File_Size;
                             File_Length : System.Mmap.File_Size)
                            return Mapped_Stream;
*************** private
*** 381,387 ****
     subtype Any_PECOFF is Object_Format range PECOFF .. PECOFF_PLUS;
  
     type Object_File (Format : Object_Format) is record
!       Mf   : System.Mmap.Mapped_File := System.Mmap.Invalid_Mapped_File;
        Arch : Object_Arch := Unknown;
  
        Num_Sections : uint32 := 0;
--- 381,387 ----
     subtype Any_PECOFF is Object_Format range PECOFF .. PECOFF_PLUS;
  
     type Object_File (Format : Object_Format) is record
!       MF   : System.Mmap.Mapped_File := System.Mmap.Invalid_Mapped_File;
        Arch : Object_Arch := Unknown;
  
        Num_Sections : uint32 := 0;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-optide.adb gcc-13.1.0/gcc/ada/libgnat/s-optide.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-optide.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-optide.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-os_lib.adb gcc-13.1.0/gcc/ada/libgnat/s-os_lib.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-os_lib.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-os_lib.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1995-2023, 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- --
*************** package body System.OS_Lib is
*** 1602,1616 ****
        SIGKILL : constant := 9;
        SIGINT  : constant := 2;
  
!       procedure C_Kill (Pid : Process_Id; Sig_Num : Integer; Close : Integer);
        pragma Import (C, C_Kill, "__gnat_kill");
  
     begin
        if Pid /= Invalid_Pid then
           if Hard_Kill then
!             C_Kill (Pid, SIGKILL, 1);
           else
!             C_Kill (Pid, SIGINT, 1);
           end if;
        end if;
     end Kill;
--- 1602,1616 ----
        SIGKILL : constant := 9;
        SIGINT  : constant := 2;
  
!       procedure C_Kill (Pid : Process_Id; Sig_Num : Integer);
        pragma Import (C, C_Kill, "__gnat_kill");
  
     begin
        if Pid /= Invalid_Pid then
           if Hard_Kill then
!             C_Kill (Pid, SIGKILL);
           else
!             C_Kill (Pid, SIGINT);
           end if;
        end if;
     end Kill;
*************** package body System.OS_Lib is
*** 1940,1946 ****
        procedure Quote_Argument (Arg : in out String_Access) is
           J            : Positive := 1;
           Quote_Needed : Boolean  := False;
!          Res          : String (1 .. Arg'Length * 2);
  
        begin
           if Arg (Arg'First) /= '"' or else Arg (Arg'Last) /= '"' then
--- 1940,1946 ----
        procedure Quote_Argument (Arg : in out String_Access) is
           J            : Positive := 1;
           Quote_Needed : Boolean  := False;
!          Res          : String (1 .. Arg'Length * 2 + 2);
  
        begin
           if Arg (Arg'First) /= '"' or else Arg (Arg'Last) /= '"' then
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-os_lib.ads gcc-13.1.0/gcc/ada/libgnat/s-os_lib.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-os_lib.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-os_lib.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim.ads gcc-13.1.0/gcc/ada/libgnat/s-osprim.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__darwin.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__darwin.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__darwin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__darwin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__lynxos.ads gcc-13.1.0/gcc/ada/libgnat/s-osprim__lynxos.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__lynxos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__lynxos.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__mingw.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__posix.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__posix.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__posix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__posix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__posix2008.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__posix2008.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__posix2008.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__posix2008.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__rtems.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__rtems.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__rtems.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__rtems.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__solaris.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__solaris.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__solaris.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__solaris.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__unix.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__unix.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__unix.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__unix.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-osprim__x32.adb gcc-13.1.0/gcc/ada/libgnat/s-osprim__x32.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-osprim__x32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-osprim__x32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --             Copyright (C) 2013-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --             Copyright (C) 2013-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack03.adb gcc-13.1.0/gcc/ada/libgnat/s-pack03.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack03.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack03.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack03.ads gcc-13.1.0/gcc/ada/libgnat/s-pack03.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack03.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack03.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack05.adb gcc-13.1.0/gcc/ada/libgnat/s-pack05.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack05.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack05.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack05.ads gcc-13.1.0/gcc/ada/libgnat/s-pack05.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack05.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack05.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack06.adb gcc-13.1.0/gcc/ada/libgnat/s-pack06.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack06.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack06.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack06.ads gcc-13.1.0/gcc/ada/libgnat/s-pack06.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack06.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack06.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack07.adb gcc-13.1.0/gcc/ada/libgnat/s-pack07.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack07.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack07.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack07.ads gcc-13.1.0/gcc/ada/libgnat/s-pack07.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack07.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack07.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack09.adb gcc-13.1.0/gcc/ada/libgnat/s-pack09.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack09.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack09.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack09.ads gcc-13.1.0/gcc/ada/libgnat/s-pack09.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack09.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack09.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack10.adb gcc-13.1.0/gcc/ada/libgnat/s-pack10.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack10.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack10.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack10.ads gcc-13.1.0/gcc/ada/libgnat/s-pack10.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack10.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack10.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack100.adb gcc-13.1.0/gcc/ada/libgnat/s-pack100.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack100.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack100.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack100.ads gcc-13.1.0/gcc/ada/libgnat/s-pack100.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack100.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack100.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack101.adb gcc-13.1.0/gcc/ada/libgnat/s-pack101.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack101.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack101.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack101.ads gcc-13.1.0/gcc/ada/libgnat/s-pack101.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack101.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack101.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack102.adb gcc-13.1.0/gcc/ada/libgnat/s-pack102.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack102.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack102.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack102.ads gcc-13.1.0/gcc/ada/libgnat/s-pack102.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack102.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack102.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack103.adb gcc-13.1.0/gcc/ada/libgnat/s-pack103.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack103.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack103.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack103.ads gcc-13.1.0/gcc/ada/libgnat/s-pack103.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack103.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack103.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack104.adb gcc-13.1.0/gcc/ada/libgnat/s-pack104.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack104.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack104.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack104.ads gcc-13.1.0/gcc/ada/libgnat/s-pack104.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack104.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack104.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack105.adb gcc-13.1.0/gcc/ada/libgnat/s-pack105.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack105.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack105.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack105.ads gcc-13.1.0/gcc/ada/libgnat/s-pack105.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack105.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack105.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack106.adb gcc-13.1.0/gcc/ada/libgnat/s-pack106.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack106.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack106.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack106.ads gcc-13.1.0/gcc/ada/libgnat/s-pack106.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack106.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack106.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack107.adb gcc-13.1.0/gcc/ada/libgnat/s-pack107.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack107.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack107.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack107.ads gcc-13.1.0/gcc/ada/libgnat/s-pack107.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack107.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack107.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack108.adb gcc-13.1.0/gcc/ada/libgnat/s-pack108.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack108.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack108.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack108.ads gcc-13.1.0/gcc/ada/libgnat/s-pack108.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack108.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack108.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack109.adb gcc-13.1.0/gcc/ada/libgnat/s-pack109.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack109.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack109.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack109.ads gcc-13.1.0/gcc/ada/libgnat/s-pack109.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack109.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack109.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack11.adb gcc-13.1.0/gcc/ada/libgnat/s-pack11.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack11.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack11.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack11.ads gcc-13.1.0/gcc/ada/libgnat/s-pack11.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack11.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack11.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack110.adb gcc-13.1.0/gcc/ada/libgnat/s-pack110.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack110.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack110.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack110.ads gcc-13.1.0/gcc/ada/libgnat/s-pack110.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack110.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack110.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack111.adb gcc-13.1.0/gcc/ada/libgnat/s-pack111.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack111.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack111.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack111.ads gcc-13.1.0/gcc/ada/libgnat/s-pack111.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack111.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack111.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack112.adb gcc-13.1.0/gcc/ada/libgnat/s-pack112.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack112.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack112.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack112.ads gcc-13.1.0/gcc/ada/libgnat/s-pack112.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack112.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack112.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack113.adb gcc-13.1.0/gcc/ada/libgnat/s-pack113.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack113.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack113.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack113.ads gcc-13.1.0/gcc/ada/libgnat/s-pack113.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack113.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack113.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack114.adb gcc-13.1.0/gcc/ada/libgnat/s-pack114.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack114.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack114.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack114.ads gcc-13.1.0/gcc/ada/libgnat/s-pack114.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack114.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack114.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack115.adb gcc-13.1.0/gcc/ada/libgnat/s-pack115.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack115.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack115.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack115.ads gcc-13.1.0/gcc/ada/libgnat/s-pack115.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack115.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack115.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack116.adb gcc-13.1.0/gcc/ada/libgnat/s-pack116.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack116.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack116.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack116.ads gcc-13.1.0/gcc/ada/libgnat/s-pack116.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack116.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack116.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack117.adb gcc-13.1.0/gcc/ada/libgnat/s-pack117.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack117.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack117.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack117.ads gcc-13.1.0/gcc/ada/libgnat/s-pack117.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack117.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack117.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack118.adb gcc-13.1.0/gcc/ada/libgnat/s-pack118.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack118.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack118.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack118.ads gcc-13.1.0/gcc/ada/libgnat/s-pack118.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack118.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack118.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack119.adb gcc-13.1.0/gcc/ada/libgnat/s-pack119.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack119.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack119.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack119.ads gcc-13.1.0/gcc/ada/libgnat/s-pack119.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack119.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack119.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack12.adb gcc-13.1.0/gcc/ada/libgnat/s-pack12.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack12.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack12.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack12.ads gcc-13.1.0/gcc/ada/libgnat/s-pack12.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack12.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack12.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack120.adb gcc-13.1.0/gcc/ada/libgnat/s-pack120.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack120.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack120.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack120.ads gcc-13.1.0/gcc/ada/libgnat/s-pack120.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack120.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack120.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack121.adb gcc-13.1.0/gcc/ada/libgnat/s-pack121.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack121.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack121.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack121.ads gcc-13.1.0/gcc/ada/libgnat/s-pack121.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack121.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack121.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack122.adb gcc-13.1.0/gcc/ada/libgnat/s-pack122.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack122.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack122.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack122.ads gcc-13.1.0/gcc/ada/libgnat/s-pack122.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack122.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack122.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack123.adb gcc-13.1.0/gcc/ada/libgnat/s-pack123.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack123.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack123.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack123.ads gcc-13.1.0/gcc/ada/libgnat/s-pack123.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack123.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack123.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack124.adb gcc-13.1.0/gcc/ada/libgnat/s-pack124.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack124.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack124.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack124.ads gcc-13.1.0/gcc/ada/libgnat/s-pack124.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack124.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack124.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack125.adb gcc-13.1.0/gcc/ada/libgnat/s-pack125.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack125.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack125.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack125.ads gcc-13.1.0/gcc/ada/libgnat/s-pack125.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack125.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack125.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack126.adb gcc-13.1.0/gcc/ada/libgnat/s-pack126.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack126.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack126.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack126.ads gcc-13.1.0/gcc/ada/libgnat/s-pack126.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack126.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack126.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack127.adb gcc-13.1.0/gcc/ada/libgnat/s-pack127.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack127.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack127.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack127.ads gcc-13.1.0/gcc/ada/libgnat/s-pack127.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack127.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack127.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack13.adb gcc-13.1.0/gcc/ada/libgnat/s-pack13.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack13.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack13.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack13.ads gcc-13.1.0/gcc/ada/libgnat/s-pack13.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack13.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack13.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack14.adb gcc-13.1.0/gcc/ada/libgnat/s-pack14.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack14.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack14.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack14.ads gcc-13.1.0/gcc/ada/libgnat/s-pack14.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack14.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack14.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack15.adb gcc-13.1.0/gcc/ada/libgnat/s-pack15.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack15.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack15.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack15.ads gcc-13.1.0/gcc/ada/libgnat/s-pack15.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack15.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack15.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack17.adb gcc-13.1.0/gcc/ada/libgnat/s-pack17.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack17.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack17.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack17.ads gcc-13.1.0/gcc/ada/libgnat/s-pack17.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack17.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack17.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack18.adb gcc-13.1.0/gcc/ada/libgnat/s-pack18.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack18.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack18.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack18.ads gcc-13.1.0/gcc/ada/libgnat/s-pack18.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack18.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack18.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack19.adb gcc-13.1.0/gcc/ada/libgnat/s-pack19.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack19.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack19.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack19.ads gcc-13.1.0/gcc/ada/libgnat/s-pack19.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack19.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack19.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack20.adb gcc-13.1.0/gcc/ada/libgnat/s-pack20.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack20.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack20.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack20.ads gcc-13.1.0/gcc/ada/libgnat/s-pack20.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack20.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack20.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack21.adb gcc-13.1.0/gcc/ada/libgnat/s-pack21.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack21.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack21.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack21.ads gcc-13.1.0/gcc/ada/libgnat/s-pack21.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack21.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack21.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack22.adb gcc-13.1.0/gcc/ada/libgnat/s-pack22.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack22.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack22.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack22.ads gcc-13.1.0/gcc/ada/libgnat/s-pack22.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack22.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack22.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack23.adb gcc-13.1.0/gcc/ada/libgnat/s-pack23.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack23.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack23.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack23.ads gcc-13.1.0/gcc/ada/libgnat/s-pack23.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack23.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack23.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack24.adb gcc-13.1.0/gcc/ada/libgnat/s-pack24.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack24.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack24.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack24.ads gcc-13.1.0/gcc/ada/libgnat/s-pack24.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack24.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack24.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack25.adb gcc-13.1.0/gcc/ada/libgnat/s-pack25.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack25.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack25.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack25.ads gcc-13.1.0/gcc/ada/libgnat/s-pack25.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack25.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack25.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack26.adb gcc-13.1.0/gcc/ada/libgnat/s-pack26.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack26.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack26.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack26.ads gcc-13.1.0/gcc/ada/libgnat/s-pack26.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack26.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack26.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack27.adb gcc-13.1.0/gcc/ada/libgnat/s-pack27.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack27.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack27.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack27.ads gcc-13.1.0/gcc/ada/libgnat/s-pack27.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack27.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack27.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack28.adb gcc-13.1.0/gcc/ada/libgnat/s-pack28.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack28.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack28.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack28.ads gcc-13.1.0/gcc/ada/libgnat/s-pack28.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack28.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack28.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack29.adb gcc-13.1.0/gcc/ada/libgnat/s-pack29.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack29.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack29.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack29.ads gcc-13.1.0/gcc/ada/libgnat/s-pack29.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack29.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack29.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack30.adb gcc-13.1.0/gcc/ada/libgnat/s-pack30.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack30.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack30.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack30.ads gcc-13.1.0/gcc/ada/libgnat/s-pack30.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack30.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack30.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack31.adb gcc-13.1.0/gcc/ada/libgnat/s-pack31.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack31.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack31.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack31.ads gcc-13.1.0/gcc/ada/libgnat/s-pack31.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack31.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack31.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack33.adb gcc-13.1.0/gcc/ada/libgnat/s-pack33.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack33.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack33.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack33.ads gcc-13.1.0/gcc/ada/libgnat/s-pack33.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack33.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack33.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack34.adb gcc-13.1.0/gcc/ada/libgnat/s-pack34.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack34.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack34.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack34.ads gcc-13.1.0/gcc/ada/libgnat/s-pack34.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack34.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack34.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack35.adb gcc-13.1.0/gcc/ada/libgnat/s-pack35.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack35.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack35.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack35.ads gcc-13.1.0/gcc/ada/libgnat/s-pack35.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack35.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack35.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack36.adb gcc-13.1.0/gcc/ada/libgnat/s-pack36.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack36.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack36.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack36.ads gcc-13.1.0/gcc/ada/libgnat/s-pack36.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack36.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack36.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack37.adb gcc-13.1.0/gcc/ada/libgnat/s-pack37.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack37.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack37.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack37.ads gcc-13.1.0/gcc/ada/libgnat/s-pack37.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack37.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack37.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack38.adb gcc-13.1.0/gcc/ada/libgnat/s-pack38.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack38.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack38.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack38.ads gcc-13.1.0/gcc/ada/libgnat/s-pack38.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack38.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack38.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack39.adb gcc-13.1.0/gcc/ada/libgnat/s-pack39.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack39.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack39.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack39.ads gcc-13.1.0/gcc/ada/libgnat/s-pack39.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack39.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack39.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack40.adb gcc-13.1.0/gcc/ada/libgnat/s-pack40.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack40.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack40.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack40.ads gcc-13.1.0/gcc/ada/libgnat/s-pack40.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack40.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack40.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack41.adb gcc-13.1.0/gcc/ada/libgnat/s-pack41.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack41.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack41.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack41.ads gcc-13.1.0/gcc/ada/libgnat/s-pack41.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack41.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack41.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack42.adb gcc-13.1.0/gcc/ada/libgnat/s-pack42.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack42.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack42.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack42.ads gcc-13.1.0/gcc/ada/libgnat/s-pack42.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack42.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack42.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack43.adb gcc-13.1.0/gcc/ada/libgnat/s-pack43.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack43.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack43.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack43.ads gcc-13.1.0/gcc/ada/libgnat/s-pack43.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack43.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack43.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack44.adb gcc-13.1.0/gcc/ada/libgnat/s-pack44.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack44.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack44.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack44.ads gcc-13.1.0/gcc/ada/libgnat/s-pack44.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack44.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack44.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack45.adb gcc-13.1.0/gcc/ada/libgnat/s-pack45.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack45.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack45.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack45.ads gcc-13.1.0/gcc/ada/libgnat/s-pack45.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack45.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack45.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack46.adb gcc-13.1.0/gcc/ada/libgnat/s-pack46.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack46.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack46.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack46.ads gcc-13.1.0/gcc/ada/libgnat/s-pack46.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack46.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack46.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack47.adb gcc-13.1.0/gcc/ada/libgnat/s-pack47.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack47.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack47.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack47.ads gcc-13.1.0/gcc/ada/libgnat/s-pack47.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack47.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack47.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack48.adb gcc-13.1.0/gcc/ada/libgnat/s-pack48.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack48.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack48.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack48.ads gcc-13.1.0/gcc/ada/libgnat/s-pack48.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack48.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack48.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack49.adb gcc-13.1.0/gcc/ada/libgnat/s-pack49.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack49.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack49.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack49.ads gcc-13.1.0/gcc/ada/libgnat/s-pack49.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack49.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack49.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack50.adb gcc-13.1.0/gcc/ada/libgnat/s-pack50.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack50.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack50.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack50.ads gcc-13.1.0/gcc/ada/libgnat/s-pack50.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack50.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack50.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack51.adb gcc-13.1.0/gcc/ada/libgnat/s-pack51.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack51.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack51.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack51.ads gcc-13.1.0/gcc/ada/libgnat/s-pack51.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack51.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack51.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack52.adb gcc-13.1.0/gcc/ada/libgnat/s-pack52.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack52.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack52.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack52.ads gcc-13.1.0/gcc/ada/libgnat/s-pack52.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack52.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack52.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack53.adb gcc-13.1.0/gcc/ada/libgnat/s-pack53.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack53.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack53.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack53.ads gcc-13.1.0/gcc/ada/libgnat/s-pack53.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack53.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack53.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack54.adb gcc-13.1.0/gcc/ada/libgnat/s-pack54.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack54.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack54.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack54.ads gcc-13.1.0/gcc/ada/libgnat/s-pack54.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack54.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack54.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack55.adb gcc-13.1.0/gcc/ada/libgnat/s-pack55.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack55.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack55.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack55.ads gcc-13.1.0/gcc/ada/libgnat/s-pack55.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack55.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack55.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack56.adb gcc-13.1.0/gcc/ada/libgnat/s-pack56.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack56.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack56.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack56.ads gcc-13.1.0/gcc/ada/libgnat/s-pack56.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack56.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack56.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack57.adb gcc-13.1.0/gcc/ada/libgnat/s-pack57.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack57.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack57.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack57.ads gcc-13.1.0/gcc/ada/libgnat/s-pack57.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack57.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack57.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack58.adb gcc-13.1.0/gcc/ada/libgnat/s-pack58.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack58.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack58.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack58.ads gcc-13.1.0/gcc/ada/libgnat/s-pack58.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack58.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack58.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack59.adb gcc-13.1.0/gcc/ada/libgnat/s-pack59.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack59.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack59.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack59.ads gcc-13.1.0/gcc/ada/libgnat/s-pack59.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack59.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack59.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack60.adb gcc-13.1.0/gcc/ada/libgnat/s-pack60.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack60.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack60.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack60.ads gcc-13.1.0/gcc/ada/libgnat/s-pack60.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack60.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack60.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack61.adb gcc-13.1.0/gcc/ada/libgnat/s-pack61.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack61.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack61.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack61.ads gcc-13.1.0/gcc/ada/libgnat/s-pack61.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack61.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack61.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack62.adb gcc-13.1.0/gcc/ada/libgnat/s-pack62.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack62.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack62.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack62.ads gcc-13.1.0/gcc/ada/libgnat/s-pack62.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack62.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack62.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack63.adb gcc-13.1.0/gcc/ada/libgnat/s-pack63.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack63.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack63.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack63.ads gcc-13.1.0/gcc/ada/libgnat/s-pack63.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack63.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack63.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack65.adb gcc-13.1.0/gcc/ada/libgnat/s-pack65.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack65.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack65.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack65.ads gcc-13.1.0/gcc/ada/libgnat/s-pack65.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack65.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack65.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack66.adb gcc-13.1.0/gcc/ada/libgnat/s-pack66.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack66.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack66.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack66.ads gcc-13.1.0/gcc/ada/libgnat/s-pack66.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack66.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack66.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack67.adb gcc-13.1.0/gcc/ada/libgnat/s-pack67.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack67.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack67.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack67.ads gcc-13.1.0/gcc/ada/libgnat/s-pack67.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack67.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack67.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack68.adb gcc-13.1.0/gcc/ada/libgnat/s-pack68.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack68.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack68.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack68.ads gcc-13.1.0/gcc/ada/libgnat/s-pack68.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack68.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack68.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack69.adb gcc-13.1.0/gcc/ada/libgnat/s-pack69.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack69.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack69.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack69.ads gcc-13.1.0/gcc/ada/libgnat/s-pack69.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack69.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack69.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack70.adb gcc-13.1.0/gcc/ada/libgnat/s-pack70.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack70.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack70.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack70.ads gcc-13.1.0/gcc/ada/libgnat/s-pack70.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack70.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack70.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack71.adb gcc-13.1.0/gcc/ada/libgnat/s-pack71.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack71.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack71.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack71.ads gcc-13.1.0/gcc/ada/libgnat/s-pack71.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack71.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack71.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack72.adb gcc-13.1.0/gcc/ada/libgnat/s-pack72.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack72.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack72.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack72.ads gcc-13.1.0/gcc/ada/libgnat/s-pack72.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack72.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack72.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack73.adb gcc-13.1.0/gcc/ada/libgnat/s-pack73.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack73.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack73.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack73.ads gcc-13.1.0/gcc/ada/libgnat/s-pack73.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack73.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack73.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack74.adb gcc-13.1.0/gcc/ada/libgnat/s-pack74.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack74.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack74.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack74.ads gcc-13.1.0/gcc/ada/libgnat/s-pack74.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack74.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack74.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack75.adb gcc-13.1.0/gcc/ada/libgnat/s-pack75.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack75.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack75.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack75.ads gcc-13.1.0/gcc/ada/libgnat/s-pack75.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack75.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack75.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack76.adb gcc-13.1.0/gcc/ada/libgnat/s-pack76.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack76.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack76.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack76.ads gcc-13.1.0/gcc/ada/libgnat/s-pack76.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack76.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack76.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack77.adb gcc-13.1.0/gcc/ada/libgnat/s-pack77.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack77.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack77.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack77.ads gcc-13.1.0/gcc/ada/libgnat/s-pack77.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack77.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack77.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack78.adb gcc-13.1.0/gcc/ada/libgnat/s-pack78.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack78.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack78.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack78.ads gcc-13.1.0/gcc/ada/libgnat/s-pack78.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack78.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack78.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack79.adb gcc-13.1.0/gcc/ada/libgnat/s-pack79.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack79.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack79.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack79.ads gcc-13.1.0/gcc/ada/libgnat/s-pack79.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack79.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack79.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack80.adb gcc-13.1.0/gcc/ada/libgnat/s-pack80.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack80.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack80.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack80.ads gcc-13.1.0/gcc/ada/libgnat/s-pack80.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack80.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack80.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack81.adb gcc-13.1.0/gcc/ada/libgnat/s-pack81.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack81.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack81.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack81.ads gcc-13.1.0/gcc/ada/libgnat/s-pack81.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack81.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack81.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack82.adb gcc-13.1.0/gcc/ada/libgnat/s-pack82.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack82.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack82.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack82.ads gcc-13.1.0/gcc/ada/libgnat/s-pack82.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack82.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack82.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack83.adb gcc-13.1.0/gcc/ada/libgnat/s-pack83.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack83.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack83.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack83.ads gcc-13.1.0/gcc/ada/libgnat/s-pack83.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack83.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack83.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack84.adb gcc-13.1.0/gcc/ada/libgnat/s-pack84.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack84.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack84.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack84.ads gcc-13.1.0/gcc/ada/libgnat/s-pack84.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack84.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack84.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack85.adb gcc-13.1.0/gcc/ada/libgnat/s-pack85.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack85.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack85.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack85.ads gcc-13.1.0/gcc/ada/libgnat/s-pack85.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack85.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack85.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack86.adb gcc-13.1.0/gcc/ada/libgnat/s-pack86.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack86.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack86.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack86.ads gcc-13.1.0/gcc/ada/libgnat/s-pack86.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack86.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack87.adb gcc-13.1.0/gcc/ada/libgnat/s-pack87.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack87.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack87.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack87.ads gcc-13.1.0/gcc/ada/libgnat/s-pack87.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack87.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack87.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack88.adb gcc-13.1.0/gcc/ada/libgnat/s-pack88.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack88.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack88.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack88.ads gcc-13.1.0/gcc/ada/libgnat/s-pack88.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack88.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack88.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack89.adb gcc-13.1.0/gcc/ada/libgnat/s-pack89.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack89.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack89.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack89.ads gcc-13.1.0/gcc/ada/libgnat/s-pack89.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack89.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack89.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack90.adb gcc-13.1.0/gcc/ada/libgnat/s-pack90.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack90.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack90.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack90.ads gcc-13.1.0/gcc/ada/libgnat/s-pack90.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack90.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack90.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack91.adb gcc-13.1.0/gcc/ada/libgnat/s-pack91.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack91.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack91.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack91.ads gcc-13.1.0/gcc/ada/libgnat/s-pack91.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack91.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack91.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack92.adb gcc-13.1.0/gcc/ada/libgnat/s-pack92.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack92.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack92.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack92.ads gcc-13.1.0/gcc/ada/libgnat/s-pack92.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack92.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack92.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack93.adb gcc-13.1.0/gcc/ada/libgnat/s-pack93.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack93.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack93.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack93.ads gcc-13.1.0/gcc/ada/libgnat/s-pack93.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack93.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack93.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack94.adb gcc-13.1.0/gcc/ada/libgnat/s-pack94.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack94.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack94.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack94.ads gcc-13.1.0/gcc/ada/libgnat/s-pack94.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack94.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack94.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack95.adb gcc-13.1.0/gcc/ada/libgnat/s-pack95.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack95.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack95.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack95.ads gcc-13.1.0/gcc/ada/libgnat/s-pack95.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack95.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack95.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack96.adb gcc-13.1.0/gcc/ada/libgnat/s-pack96.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack96.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack96.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack96.ads gcc-13.1.0/gcc/ada/libgnat/s-pack96.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack96.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack96.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack97.adb gcc-13.1.0/gcc/ada/libgnat/s-pack97.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack97.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack97.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack97.ads gcc-13.1.0/gcc/ada/libgnat/s-pack97.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack97.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack97.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack98.adb gcc-13.1.0/gcc/ada/libgnat/s-pack98.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack98.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack98.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack98.ads gcc-13.1.0/gcc/ada/libgnat/s-pack98.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack98.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack98.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack99.adb gcc-13.1.0/gcc/ada/libgnat/s-pack99.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pack99.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack99.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pack99.ads gcc-13.1.0/gcc/ada/libgnat/s-pack99.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pack99.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pack99.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame.adb gcc-13.1.0/gcc/ada/libgnat/s-parame.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-parame.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame.ads gcc-13.1.0/gcc/ada/libgnat/s-parame.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-parame.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame__hpux.ads gcc-13.1.0/gcc/ada/libgnat/s-parame__hpux.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-parame__hpux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame__hpux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame__posix2008.ads gcc-13.1.0/gcc/ada/libgnat/s-parame__posix2008.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-parame__posix2008.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame__posix2008.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame__rtems.adb gcc-13.1.0/gcc/ada/libgnat/s-parame__rtems.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-parame__rtems.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame__rtems.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame__vxworks.adb gcc-13.1.0/gcc/ada/libgnat/s-parame__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-parame__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parame__vxworks.ads gcc-13.1.0/gcc/ada/libgnat/s-parame__vxworks.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-parame__vxworks.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parame__vxworks.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parint.adb gcc-13.1.0/gcc/ada/libgnat/s-parint.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-parint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parint.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                  B o d y                                 --
  --                   (Dummy body for non-distributed case)                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, 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- --
--- 7,13 ----
  --                                  B o d y                                 --
  --                   (Dummy body for non-distributed case)                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-parint.ads gcc-13.1.0/gcc/ada/libgnat/s-parint.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-parint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-parint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1995-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pehage.adb gcc-13.1.0/gcc/ada/libgnat/s-pehage.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pehage.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pehage.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pehage.ads gcc-13.1.0/gcc/ada/libgnat/s-pehage.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pehage.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pehage.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 2002-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pooglo.adb gcc-13.1.0/gcc/ada/libgnat/s-pooglo.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pooglo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pooglo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pooglo.ads gcc-13.1.0/gcc/ada/libgnat/s-pooglo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pooglo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pooglo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pooloc.adb gcc-13.1.0/gcc/ada/libgnat/s-pooloc.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-pooloc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pooloc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-pooloc.ads gcc-13.1.0/gcc/ada/libgnat/s-pooloc.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-pooloc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-pooloc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-poosiz.adb gcc-13.1.0/gcc/ada/libgnat/s-poosiz.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-poosiz.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-poosiz.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-poosiz.ads gcc-13.1.0/gcc/ada/libgnat/s-poosiz.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-poosiz.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-poosiz.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-powflt.ads gcc-13.1.0/gcc/ada/libgnat/s-powflt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-powflt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-powflt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,45 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides a powers of ten table used for real conversions
  
  package System.Powten_Flt is
     pragma Pure;
  
     Maxpow_Exact : constant := 10;
!    --  Largest power of ten exactly representable with Float. It is equal to
     --  floor (M * log 2 / log 5), when M is the size of the mantissa (24).
  
     Maxpow : constant := Maxpow_Exact * 2;
!    --  Largest power of ten exactly representable with a double Float
  
     Powten : constant array (0 .. Maxpow, 1 .. 2) of Float :=
       [00 => [1.0E+00, 0.0],
--- 29,69 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides tables of powers used for real conversions
  
  package System.Powten_Flt is
     pragma Pure;
  
     Maxpow_Exact : constant := 10;
!    --  Largest power of five exactly representable with Float. It is equal to
     --  floor (M * log 2 / log 5), when M is the size of the mantissa (24).
+    --  It also works for any number of the form 5*(2**N) and in particular 10.
  
     Maxpow : constant := Maxpow_Exact * 2;
!    --  Largest power of five exactly representable with double Float
! 
!    Powfive : constant array (0 .. Maxpow, 1 .. 2) of Float :=
!      [00 => [5.0**00, 0.0],
!       01 => [5.0**01, 0.0],
!       02 => [5.0**02, 0.0],
!       03 => [5.0**03, 0.0],
!       04 => [5.0**04, 0.0],
!       05 => [5.0**05, 0.0],
!       06 => [5.0**06, 0.0],
!       07 => [5.0**07, 0.0],
!       08 => [5.0**08, 0.0],
!       09 => [5.0**09, 0.0],
!       10 => [5.0**10, 0.0],
!       11 => [5.0**11, 5.0**11 - Float'Machine (5.0**11)],
!       12 => [5.0**12, 5.0**12 - Float'Machine (5.0**12)],
!       13 => [5.0**13, 5.0**13 - Float'Machine (5.0**13)],
!       14 => [5.0**14, 5.0**14 - Float'Machine (5.0**14)],
!       15 => [5.0**15, 5.0**15 - Float'Machine (5.0**15)],
!       16 => [5.0**16, 5.0**16 - Float'Machine (5.0**16)],
!       17 => [5.0**17, 5.0**17 - Float'Machine (5.0**17)],
!       18 => [5.0**18, 5.0**18 - Float'Machine (5.0**18)],
!       19 => [5.0**19, 5.0**19 - Float'Machine (5.0**19)],
!       20 => [5.0**20, 5.0**20 - Float'Machine (5.0**20)]];
  
     Powten : constant array (0 .. Maxpow, 1 .. 2) of Float :=
       [00 => [1.0E+00, 0.0],
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-powlfl.ads gcc-13.1.0/gcc/ada/libgnat/s-powlfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-powlfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-powlfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,45 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides a powers of ten table used for real conversions
  
  package System.Powten_LFlt is
     pragma Pure;
  
     Maxpow_Exact : constant := 22;
!    --  Largest power of ten exactly representable with Long_Float. It is equal
     --  to floor (M * log 2 / log 5), when M is the size of the mantissa (53).
  
     Maxpow : constant := Maxpow_Exact * 2;
!    --  Largest power of ten exactly representable with a double Long_Float
  
     Powten : constant array (0 .. Maxpow, 1 .. 2) of Long_Float :=
       [00 => [1.0E+00, 0.0],
--- 29,102 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides tables of powers used for real conversions
  
  package System.Powten_LFlt is
     pragma Pure;
  
     Maxpow_Exact : constant := 22;
!    --  Largest power of five exactly representable with Long_Float. It is equal
     --  to floor (M * log 2 / log 5), when M is the size of the mantissa (53).
+    --  It also works for any number of the form 5*(2**N) and in particular 10.
  
     Maxpow : constant := Maxpow_Exact * 2;
!    --  Largest power of five exactly representable with double Long_Float
! 
!    Powfive : constant array (0 .. Maxpow, 1 .. 2) of Long_Float :=
!      [00 => [5.0**00, 0.0],
!       01 => [5.0**01, 0.0],
!       02 => [5.0**02, 0.0],
!       03 => [5.0**03, 0.0],
!       04 => [5.0**04, 0.0],
!       05 => [5.0**05, 0.0],
!       06 => [5.0**06, 0.0],
!       07 => [5.0**07, 0.0],
!       08 => [5.0**08, 0.0],
!       09 => [5.0**09, 0.0],
!       10 => [5.0**10, 0.0],
!       11 => [5.0**11, 0.0],
!       12 => [5.0**12, 0.0],
!       13 => [5.0**13, 0.0],
!       14 => [5.0**14, 0.0],
!       15 => [5.0**15, 0.0],
!       16 => [5.0**16, 0.0],
!       17 => [5.0**17, 0.0],
!       18 => [5.0**18, 0.0],
!       19 => [5.0**19, 0.0],
!       20 => [5.0**20, 0.0],
!       21 => [5.0**21, 0.0],
!       22 => [5.0**22, 0.0],
!       23 => [5.0**23, 5.0**23 - Long_Float'Machine (5.0**23)],
!       24 => [5.0**24, 5.0**24 - Long_Float'Machine (5.0**24)],
!       25 => [5.0**25, 5.0**25 - Long_Float'Machine (5.0**25)],
!       26 => [5.0**26, 5.0**26 - Long_Float'Machine (5.0**26)],
!       27 => [5.0**27, 5.0**27 - Long_Float'Machine (5.0**27)],
!       28 => [5.0**28, 5.0**28 - Long_Float'Machine (5.0**28)],
!       29 => [5.0**29, 5.0**29 - Long_Float'Machine (5.0**29)],
!       30 => [5.0**30, 5.0**30 - Long_Float'Machine (5.0**30)],
!       31 => [5.0**31, 5.0**31 - Long_Float'Machine (5.0**31)],
!       32 => [5.0**32, 5.0**32 - Long_Float'Machine (5.0**32)],
!       33 => [5.0**33, 5.0**33 - Long_Float'Machine (5.0**33)],
!       34 => [5.0**34, 5.0**34 - Long_Float'Machine (5.0**34)],
!       35 => [5.0**35, 5.0**35 - Long_Float'Machine (5.0**35)],
!       36 => [5.0**36, 5.0**36 - Long_Float'Machine (5.0**36)],
!       37 => [5.0**37, 5.0**37 - Long_Float'Machine (5.0**37)],
!       38 => [5.0**38, 5.0**38 - Long_Float'Machine (5.0**38)],
!       39 => [5.0**39, 5.0**39 - Long_Float'Machine (5.0**39)],
!       40 => [5.0**40, 5.0**40 - Long_Float'Machine (5.0**40)],
!       41 => [5.0**41, 5.0**41 - Long_Float'Machine (5.0**41)],
!       42 => [5.0**42, 5.0**42 - Long_Float'Machine (5.0**42)],
!       43 => [5.0**43, 5.0**43 - Long_Float'Machine (5.0**43)],
!       44 => [5.0**44, 5.0**44 - Long_Float'Machine (5.0**44)]];
! 
!    Powfive_100 : constant array (1 .. 2) of Long_Float :=
!      [5.0**100, 5.0**100 - Long_Float'Machine (5.0**100)];
! 
!    Powfive_200 : constant array (1 .. 2) of Long_Float :=
!      [5.0**200, 5.0**200 - Long_Float'Machine (5.0**200)];
! 
!    Powfive_300 : constant array (1 .. 2) of Long_Float :=
!      [5.0**300, 5.0**300 - Long_Float'Machine (5.0**300)];
  
     Powten : constant array (0 .. Maxpow, 1 .. 2) of Long_Float :=
       [00 => [1.0E+00, 0.0],
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-powllf.ads gcc-13.1.0/gcc/ada/libgnat/s-powllf.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-powllf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-powllf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,47 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides a powers of ten table used for real conversions
  
  package System.Powten_LLF is
     pragma Pure;
  
     Maxpow_Exact : constant :=
       (if Long_Long_Float'Machine_Mantissa = 64 then 27 else 22);
!    --  Largest power of ten exactly representable with Long_Long_Float. It is
     --  equal to floor (M * log 2 / log 5), when M is the size of the mantissa
     --  assumed to be either 64 for IEEE Extended or 53 for IEEE Double.
  
     Maxpow : constant := Maxpow_Exact * 2;
!    --  Largest power of ten exactly representable with a double Long_Long_Float
  
     Powten : constant array (0 .. 54, 1 .. 2) of Long_Long_Float :=
       [00 => [1.0E+00, 0.0],
--- 29,114 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package provides tables of powers used for real conversions
  
  package System.Powten_LLF is
     pragma Pure;
  
     Maxpow_Exact : constant :=
       (if Long_Long_Float'Machine_Mantissa = 64 then 27 else 22);
!    --  Largest power of five exactly representable with Long_Long_Float. It is
     --  equal to floor (M * log 2 / log 5), when M is the size of the mantissa
     --  assumed to be either 64 for IEEE Extended or 53 for IEEE Double.
+    --  It also works for any number of the form 5*(2**N) and in particular 10.
  
     Maxpow : constant := Maxpow_Exact * 2;
!    --  Largest power of five exactly representable with double Long_Long_Float
! 
!    Powfive : constant array (0 .. 54, 1 .. 2) of Long_Long_Float :=
!      [00 => [5.0**00, 0.0],
!       01 => [5.0**01, 0.0],
!       02 => [5.0**02, 0.0],
!       03 => [5.0**03, 0.0],
!       04 => [5.0**04, 0.0],
!       05 => [5.0**05, 0.0],
!       06 => [5.0**06, 0.0],
!       07 => [5.0**07, 0.0],
!       08 => [5.0**08, 0.0],
!       09 => [5.0**09, 0.0],
!       10 => [5.0**10, 0.0],
!       11 => [5.0**11, 0.0],
!       12 => [5.0**12, 0.0],
!       13 => [5.0**13, 0.0],
!       14 => [5.0**14, 0.0],
!       15 => [5.0**15, 0.0],
!       16 => [5.0**16, 0.0],
!       17 => [5.0**17, 0.0],
!       18 => [5.0**18, 0.0],
!       19 => [5.0**19, 0.0],
!       20 => [5.0**20, 0.0],
!       21 => [5.0**21, 0.0],
!       22 => [5.0**22, 0.0],
!       23 => [5.0**23, 5.0**23 - Long_Long_Float'Machine (5.0**23)],
!       24 => [5.0**24, 5.0**24 - Long_Long_Float'Machine (5.0**24)],
!       25 => [5.0**25, 5.0**25 - Long_Long_Float'Machine (5.0**25)],
!       26 => [5.0**26, 5.0**26 - Long_Long_Float'Machine (5.0**26)],
!       27 => [5.0**27, 5.0**27 - Long_Long_Float'Machine (5.0**27)],
!       28 => [5.0**28, 5.0**28 - Long_Long_Float'Machine (5.0**28)],
!       29 => [5.0**29, 5.0**29 - Long_Long_Float'Machine (5.0**29)],
!       30 => [5.0**30, 5.0**30 - Long_Long_Float'Machine (5.0**30)],
!       31 => [5.0**31, 5.0**31 - Long_Long_Float'Machine (5.0**31)],
!       32 => [5.0**32, 5.0**32 - Long_Long_Float'Machine (5.0**32)],
!       33 => [5.0**33, 5.0**33 - Long_Long_Float'Machine (5.0**33)],
!       34 => [5.0**34, 5.0**34 - Long_Long_Float'Machine (5.0**34)],
!       35 => [5.0**35, 5.0**35 - Long_Long_Float'Machine (5.0**35)],
!       36 => [5.0**36, 5.0**36 - Long_Long_Float'Machine (5.0**36)],
!       37 => [5.0**37, 5.0**37 - Long_Long_Float'Machine (5.0**37)],
!       38 => [5.0**38, 5.0**38 - Long_Long_Float'Machine (5.0**38)],
!       39 => [5.0**39, 5.0**39 - Long_Long_Float'Machine (5.0**39)],
!       40 => [5.0**40, 5.0**40 - Long_Long_Float'Machine (5.0**40)],
!       41 => [5.0**41, 5.0**41 - Long_Long_Float'Machine (5.0**41)],
!       42 => [5.0**42, 5.0**42 - Long_Long_Float'Machine (5.0**42)],
!       43 => [5.0**43, 5.0**43 - Long_Long_Float'Machine (5.0**43)],
!       44 => [5.0**44, 5.0**44 - Long_Long_Float'Machine (5.0**44)],
!       45 => [5.0**45, 5.0**45 - Long_Long_Float'Machine (5.0**45)],
!       46 => [5.0**46, 5.0**46 - Long_Long_Float'Machine (5.0**46)],
!       47 => [5.0**47, 5.0**47 - Long_Long_Float'Machine (5.0**47)],
!       48 => [5.0**48, 5.0**48 - Long_Long_Float'Machine (5.0**48)],
!       49 => [5.0**49, 5.0**49 - Long_Long_Float'Machine (5.0**49)],
!       50 => [5.0**50, 5.0**50 - Long_Long_Float'Machine (5.0**50)],
!       51 => [5.0**51, 5.0**51 - Long_Long_Float'Machine (5.0**51)],
!       52 => [5.0**52, 5.0**52 - Long_Long_Float'Machine (5.0**52)],
!       53 => [5.0**53, 5.0**53 - Long_Long_Float'Machine (5.0**53)],
!       54 => [5.0**54, 5.0**54 - Long_Long_Float'Machine (5.0**54)]];
! 
!    Powfive_100 : constant array (1 .. 2) of Long_Long_Float :=
!      [5.0**100, 5.0**100 - Long_Long_Float'Machine (5.0**100)];
! 
!    Powfive_200 : constant array (1 .. 2) of Long_Long_Float :=
!      [5.0**200, 5.0**200 - Long_Long_Float'Machine (5.0**200)];
! 
!    Powfive_300 : constant array (1 .. 2) of Long_Long_Float :=
!      [5.0**300, 5.0**300 - Long_Long_Float'Machine (5.0**300)];
  
     Powten : constant array (0 .. 54, 1 .. 2) of Long_Long_Float :=
       [00 => [1.0E+00, 0.0],
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-purexc.ads gcc-13.1.0/gcc/ada/libgnat/s-purexc.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-purexc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-purexc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-putima.adb gcc-13.1.0/gcc/ada/libgnat/s-putima.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-putima.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-putima.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  with Ada.Strings.Text_Buffers.Utils;
  use Ada.Strings.Text_Buffers;
  use Ada.Strings.Text_Buffers.Utils;
! with Unchecked_Conversion;
  
  package body System.Put_Images is
  
--- 32,38 ----
  with Ada.Strings.Text_Buffers.Utils;
  use Ada.Strings.Text_Buffers;
  use Ada.Strings.Text_Buffers.Utils;
! with Ada.Unchecked_Conversion;
  
  package body System.Put_Images is
  
*************** package body System.Put_Images is
*** 133,139 ****
     procedure Put_Image_Pointer
       (S : in out Sink'Class; X : Pointer; Type_Kind : String)
     is
!       function Cast is new Unchecked_Conversion
          (System.Address, Unsigned_Address);
     begin
        if X = null then
--- 133,139 ----
     procedure Put_Image_Pointer
       (S : in out Sink'Class; X : Pointer; Type_Kind : String)
     is
!       function Cast is new Ada.Unchecked_Conversion
          (System.Address, Unsigned_Address);
     begin
        if X = null then
*************** package body System.Put_Images is
*** 174,214 ****
        Thin_Instance (S, X, "access protected subprogram");
     end Put_Image_Access_Prot_Subp;
  
!    procedure Put_Image_String (S : in out Sink'Class; X : String) is
     begin
!       Put_UTF_8 (S, """");
        for C of X loop
!          if C = '"' then
              Put_UTF_8 (S, """");
           end if;
           Put_Character (S, C);
        end loop;
!       Put_UTF_8 (S, """");
     end Put_Image_String;
  
!    procedure Put_Image_Wide_String (S : in out Sink'Class; X : Wide_String) is
     begin
!       Put_UTF_8 (S, """");
        for C of X loop
!          if C = '"' then
              Put_UTF_8 (S, """");
           end if;
           Put_Wide_Character (S, C);
        end loop;
!       Put_UTF_8 (S, """");
     end Put_Image_Wide_String;
  
     procedure Put_Image_Wide_Wide_String
!      (S : in out Sink'Class; X : Wide_Wide_String) is
     begin
!       Put_UTF_8 (S, """");
        for C of X loop
!          if C = '"' then
              Put_UTF_8 (S, """");
           end if;
           Put_Wide_Wide_Character (S, C);
        end loop;
!       Put_UTF_8 (S, """");
     end Put_Image_Wide_Wide_String;
  
     procedure Array_Before (S : in out Sink'Class) is
--- 174,240 ----
        Thin_Instance (S, X, "access protected subprogram");
     end Put_Image_Access_Prot_Subp;
  
!    procedure Put_Image_String
!      (S               : in out Sink'Class;
!       X               : String;
!       With_Delimiters : Boolean := True) is
     begin
!       if With_Delimiters then
!          Put_UTF_8 (S, """");
!       end if;
! 
        for C of X loop
!          if C = '"' and then With_Delimiters then
              Put_UTF_8 (S, """");
           end if;
           Put_Character (S, C);
        end loop;
! 
!       if With_Delimiters then
!          Put_UTF_8 (S, """");
!       end if;
     end Put_Image_String;
  
!    procedure Put_Image_Wide_String
!      (S               : in out Sink'Class;
!       X               : Wide_String;
!       With_Delimiters : Boolean := True) is
     begin
!       if With_Delimiters then
!          Put_UTF_8 (S, """");
!       end if;
! 
        for C of X loop
!          if C = '"' and then With_Delimiters then
              Put_UTF_8 (S, """");
           end if;
           Put_Wide_Character (S, C);
        end loop;
! 
!       if With_Delimiters then
!          Put_UTF_8 (S, """");
!       end if;
     end Put_Image_Wide_String;
  
     procedure Put_Image_Wide_Wide_String
!      (S               : in out Sink'Class;
!       X               : Wide_Wide_String;
!       With_Delimiters : Boolean := True) is
     begin
!       if With_Delimiters then
!          Put_UTF_8 (S, """");
!       end if;
! 
        for C of X loop
!          if C = '"' and then With_Delimiters then
              Put_UTF_8 (S, """");
           end if;
           Put_Wide_Wide_Character (S, C);
        end loop;
! 
!       if With_Delimiters then
!          Put_UTF_8 (S, """");
!       end if;
     end Put_Image_Wide_Wide_String;
  
     procedure Array_Before (S : in out Sink'Class) is
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-putima.ads gcc-13.1.0/gcc/ada/libgnat/s-putima.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-putima.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-putima.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Put_Images with Pure is
*** 84,93 ****
       (S : in out Sink'Class; X : Thin_Pointer);
     --  For access-to-protected-subprogram types
  
!    procedure Put_Image_String (S : in out Sink'Class; X : String);
!    procedure Put_Image_Wide_String (S : in out Sink'Class; X : Wide_String);
     procedure Put_Image_Wide_Wide_String
!      (S : in out Sink'Class; X : Wide_Wide_String);
  
     procedure Array_Before (S : in out Sink'Class);
     procedure Array_Between (S : in out Sink'Class);
--- 84,103 ----
       (S : in out Sink'Class; X : Thin_Pointer);
     --  For access-to-protected-subprogram types
  
!    procedure Put_Image_String
!      (S               : in out Sink'Class;
!       X               : String;
!       With_Delimiters : Boolean := True);
! 
!    procedure Put_Image_Wide_String
!      (S               : in out Sink'Class;
!       X               : Wide_String;
!       With_Delimiters : Boolean := True);
! 
     procedure Put_Image_Wide_Wide_String
!      (S               : in out Sink'Class;
!       X               : Wide_Wide_String;
!       With_Delimiters : Boolean := True);
  
     procedure Array_Before (S : in out Sink'Class);
     procedure Array_Between (S : in out Sink'Class);
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-rannum.adb gcc-13.1.0/gcc/ada/libgnat/s-rannum.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-rannum.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-rannum.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-rannum.ads gcc-13.1.0/gcc/ada/libgnat/s-rannum.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-rannum.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-rannum.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-ransee.adb gcc-13.1.0/gcc/ada/libgnat/s-ransee.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-ransee.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-ransee.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-ransee.ads gcc-13.1.0/gcc/ada/libgnat/s-ransee.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-ransee.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-ransee.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-regexp.adb gcc-13.1.0/gcc/ada/libgnat/s-regexp.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-regexp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-regexp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-regexp.ads gcc-13.1.0/gcc/ada/libgnat/s-regexp.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-regexp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-regexp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-regpat.adb gcc-13.1.0/gcc/ada/libgnat/s-regpat.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-regpat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-regpat.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2022, 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- --
--- 7,13 ----
  --                                 B o d y                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                      Copyright (C) 1999-2023, 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- --
*************** package body System.Regpat is
*** 359,368 ****
     -------------
  
     procedure Compile
!      (Matcher         : out Pattern_Matcher;
!       Expression      : String;
!       Final_Code_Size : out Program_Size;
!       Flags           : Regexp_Flags := No_Flags)
     is
        --  We can't allocate space until we know how big the compiled form
        --  will be, but we can't compile it (and thus know how big it is)
--- 359,369 ----
     -------------
  
     procedure Compile
!      (Matcher              : out Pattern_Matcher;
!       Expression           : String;
!       Final_Code_Size      : out Program_Size;
!       Flags                : Regexp_Flags := No_Flags;
!       Error_When_Too_Small : Boolean := True)
     is
        --  We can't allocate space until we know how big the compiled form
        --  will be, but we can't compile it (and thus know how big it is)
*************** package body System.Regpat is
*** 919,936 ****
              if Capturing then
                 Ender := Emit_Node (CLOSE);
                 Emit (Character'Val (Par_No));
-                Link_Tail (IP, Ender);
- 
              else
!                --  Need to keep looking after the closing parenthesis
!                Ender := Emit_Ptr;
              end if;
  
           else
              Ender := Emit_Node (EOP);
-             Link_Tail (IP, Ender);
           end if;
  
           if Have_Branch and then Emit_Ptr <= PM.Size + 1 then
  
              --  Hook the tails of the branches to the closing node
--- 920,935 ----
              if Capturing then
                 Ender := Emit_Node (CLOSE);
                 Emit (Character'Val (Par_No));
              else
!                Ender := Emit_Node (NOTHING);
              end if;
  
           else
              Ender := Emit_Node (EOP);
           end if;
  
+          Link_Tail (IP, Ender);
+ 
           if Have_Branch and then Emit_Ptr <= PM.Size + 1 then
  
              --  Hook the tails of the branches to the closing node
*************** package body System.Regpat is
*** 1994,1999 ****
--- 1993,2004 ----
        end if;
  
        PM.Flags := Flags;
+ 
+       --  Raise the appropriate error when Matcher does not have enough space
+ 
+       if Error_When_Too_Small and then Matcher.Size < Final_Code_Size then
+          raise Expression_Error with "Pattern_Matcher is too small";
+       end if;
     end Compile;
  
     function Compile
*************** package body System.Regpat is
*** 2009,2015 ****
        Size  : Program_Size;
  
     begin
!       Compile (Dummy, Expression, Size, Flags);
  
        if Size <= Dummy.Size then
           return Pattern_Matcher'
--- 2014,2020 ----
        Size  : Program_Size;
  
     begin
!       Compile (Dummy, Expression, Size, Flags, Error_When_Too_Small => False);
  
        if Size <= Dummy.Size then
           return Pattern_Matcher'
*************** package body System.Regpat is
*** 2023,2039 ****
              Program          =>
                Dummy.Program
                  (Dummy.Program'First .. Dummy.Program'First + Size - 1));
-       else
-          --  We have to recompile now that we know the size
-          --  ??? Can we use Ada 2005's return construct ?
- 
-          declare
-             Result : Pattern_Matcher (Size);
-          begin
-             Compile (Result, Expression, Size, Flags);
-             return Result;
-          end;
        end if;
     end Compile;
  
     procedure Compile
--- 2028,2040 ----
              Program          =>
                Dummy.Program
                  (Dummy.Program'First .. Dummy.Program'First + Size - 1));
        end if;
+ 
+       return
+          Result : Pattern_Matcher (Size)
+       do
+          Compile (Result, Expression, Size, Flags);
+       end return;
     end Compile;
  
     procedure Compile
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-regpat.ads gcc-13.1.0/gcc/ada/libgnat/s-regpat.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-regpat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-regpat.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2022, 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- --
--- 7,13 ----
  --                                 S p e c                                  --
  --                                                                          --
  --               Copyright (C) 1986 by University of Toronto.               --
! --                     Copyright (C) 1996-2023, 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- --
*************** package System.Regpat is
*** 403,412 ****
     --  (e.g. case sensitivity,...).
  
     procedure Compile
!      (Matcher         : out Pattern_Matcher;
!       Expression      : String;
!       Final_Code_Size : out Program_Size;
!       Flags           : Regexp_Flags := No_Flags);
     --  Compile a regular expression into internal code
  
     --  This procedure is significantly faster than the Compile function since
--- 403,413 ----
     --  (e.g. case sensitivity,...).
  
     procedure Compile
!      (Matcher              : out Pattern_Matcher;
!       Expression           : String;
!       Final_Code_Size      : out Program_Size;
!       Flags                : Regexp_Flags := No_Flags;
!       Error_When_Too_Small : Boolean := True);
     --  Compile a regular expression into internal code
  
     --  This procedure is significantly faster than the Compile function since
*************** package System.Regpat is
*** 426,432 ****
     --  expression.
     --
     --  This function raises Storage_Error if Matcher is too small to hold
!    --  the resulting code (i.e. Matcher.Size has too small a value).
     --
     --  Expression_Error is raised if the string Expression does not contain
     --  a valid regular expression.
--- 427,451 ----
     --  expression.
     --
     --  This function raises Storage_Error if Matcher is too small to hold
!    --  the resulting code (i.e. Matcher.Size has too small a value) only when
!    --  the paramter Error_When_Too_Small is set to True. Otherwise, no error
!    --  will be raised and the required size will be placed in the
!    --  Final_Code_Size parameter.
!    --
!    --  Thus when Error_When_Too_Small is specified as false a check will need
!    --  to be made to ensure successful compilation - as in:
!    --
!    --     ...
!    --     Compile
!    --       (Matcher, Expr, Code_Size, Flags, Error_When_Too_Small => False);
!    --
!    --     if Matcher.Size < Code_Size then
!    --        declare
!    --           New_Matcher : Pattern_Matcher (1..Code_Size);
!    --        begin
!    --           Compile (New_Matcher, Expr, Code_Size, Flags);
!    --        end;
!    --     end if;
     --
     --  Expression_Error is raised if the string Expression does not contain
     --  a valid regular expression.
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-resfil.adb gcc-13.1.0/gcc/ada/libgnat/s-resfil.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-resfil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-resfil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-resfil.ads gcc-13.1.0/gcc/ada/libgnat/s-resfil.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-resfil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-resfil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2007-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-restri.adb gcc-13.1.0/gcc/ada/libgnat/s-restri.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-restri.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-restri.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-restri.ads gcc-13.1.0/gcc/ada/libgnat/s-restri.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-restri.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-restri.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-retsta.ads gcc-13.1.0/gcc/ada/libgnat/s-retsta.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-retsta.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-retsta.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,57 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                  S Y S T E M . R E T U R N _ S T A C K                   --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2022-2023, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This small package provides direct access to the return stack of the code
+ --  generator for functions returning a by-reference type. This return stack
+ --  is the portion of the primary stack that has been allocated by callers of
+ --  the functions and onto which the functions put the result before returning.
+ 
+ with System.Storage_Elements;
+ 
+ package System.Return_Stack is
+    pragma Preelaborate;
+ 
+    package SSE renames System.Storage_Elements;
+ 
+    procedure RS_Allocate
+      (Addr         : out Address;
+       Storage_Size : SSE.Storage_Count);
+    pragma Import (Intrinsic, RS_Allocate, "__builtin_return_slot");
+    --  Allocate enough space on the return stack of the invoking task to
+    --  accommodate a return of size Storage_Size. Return the address of the
+    --  first byte of the allocation in Addr.
+ 
+ private
+    RS_Pool : Integer;
+    --  Unused entity that is just present to ease the sharing of the pool
+    --  mechanism for specific allocation/deallocation in the compiler.
+ 
+ end System.Return_Stack;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-rident.ads gcc-13.1.0/gcc/ada/libgnat/s-rident.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-rident.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-rident.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Rident is
*** 81,87 ****
  
     --  To add a new restriction identifier, add an entry with the name to be
     --  used in the pragma, and add calls to the Restrict.Check_Restriction
!    --  routine as appropriate.
  
     type Restriction_Id is
  
--- 81,88 ----
  
     --  To add a new restriction identifier, add an entry with the name to be
     --  used in the pragma, and add calls to the Restrict.Check_Restriction
!    --  routine as appropriate. If the new restriction is GNAT specific, also
!    --  add an entry in Restrict.Implementation_Restriction (restrict.ads).
  
     type Restriction_Id is
  
*************** package System.Rident is
*** 90,96 ****
        --  does not violate the restriction.
  
       (Simple_Barriers,                           -- Ada 2012 (D.7 (10.9/3))
!       Pure_Barriers,                             -- GNAT
        No_Abort_Statements,                       -- (RM D.7(5), H.4(3))
        No_Access_Parameter_Allocators,            -- Ada 2012 (RM H.4 (8.3/3))
        No_Access_Subprograms,                     -- (RM H.4(17))
--- 91,97 ----
        --  does not violate the restriction.
  
       (Simple_Barriers,                           -- Ada 2012 (D.7 (10.9/3))
!       Pure_Barriers,                             -- Ada 2022 (D.7(10.11/5))
        No_Abort_Statements,                       -- (RM D.7(5), H.4(3))
        No_Access_Parameter_Allocators,            -- Ada 2012 (RM H.4 (8.3/3))
        No_Access_Subprograms,                     -- (RM H.4(17))
*************** package System.Rident is
*** 106,112 ****
        No_Dispatching_Calls,                      -- GNAT
        No_Dynamic_Accessibility_Checks,           -- GNAT
        No_Dynamic_Attachment,                     -- Ada 2012 (RM E.7(10/3))
!       No_Dynamic_CPU_Assignment,                 -- Ada 202x (RM D.7(10/3))
        No_Dynamic_Priorities,                     -- (RM D.9(9))
        No_Enumeration_Maps,                       -- GNAT
        No_Entry_Calls_In_Elaboration_Code,        -- GNAT
--- 107,113 ----
        No_Dispatching_Calls,                      -- GNAT
        No_Dynamic_Accessibility_Checks,           -- GNAT
        No_Dynamic_Attachment,                     -- Ada 2012 (RM E.7(10/3))
!       No_Dynamic_CPU_Assignment,                 -- Ada 2022 (RM D.7(10/3))
        No_Dynamic_Priorities,                     -- (RM D.9(9))
        No_Enumeration_Maps,                       -- GNAT
        No_Entry_Calls_In_Elaboration_Code,        -- GNAT
*************** package System.Rident is
*** 126,131 ****
--- 127,133 ----
        No_Implicit_Task_Allocations,              -- GNAT
        No_Implicit_Protected_Object_Allocations,  -- GNAT
        No_Initialize_Scalars,                     -- GNAT
+       No_Local_Tagged_Types,                     -- GNAT
        No_Local_Allocators,                       -- (RM H.4(8))
        No_Local_Timing_Events,                    -- (RM D.7(10.2/2))
        No_Local_Protected_Objects,                -- Ada 2012 (D.7(10/1.3))
*************** package System.Rident is
*** 150,157 ****
        No_Task_Attributes_Package,                -- GNAT
        No_Task_At_Interrupt_Priority,             -- GNAT
        No_Task_Hierarchy,                         -- (RM D.7(3), H.4(3))
!       No_Task_Termination,                       -- GNAT (Ravenscar)
!       No_Tasks_Unassigned_To_CPU,                -- Ada 202x (D.7(10.10/4))
        No_Tasking,                                -- GNAT
        No_Terminate_Alternatives,                 -- (RM D.7(6))
        No_Unchecked_Access,                       -- (RM H.4(18))
--- 152,160 ----
        No_Task_Attributes_Package,                -- GNAT
        No_Task_At_Interrupt_Priority,             -- GNAT
        No_Task_Hierarchy,                         -- (RM D.7(3), H.4(3))
!       No_Task_Hierarchy_Implicit,                -- GNAT
!       No_Task_Termination,                       -- Ada 2005 (D.7(15.1/2))
!       No_Tasks_Unassigned_To_CPU,                -- Ada 2022 (D.7(10.10/4))
        No_Tasking,                                -- GNAT
        No_Terminate_Alternatives,                 -- (RM D.7(6))
        No_Unchecked_Access,                       -- (RM H.4(18))
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-rpc.adb gcc-13.1.0/gcc/ada/libgnat/s-rpc.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-rpc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-rpc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-rpc.ads gcc-13.1.0/gcc/ada/libgnat/s-rpc.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-rpc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-rpc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-scaval.adb gcc-13.1.0/gcc/ada/libgnat/s-scaval.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-scaval.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-scaval.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-scaval.ads gcc-13.1.0/gcc/ada/libgnat/s-scaval.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-scaval.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-scaval.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-scaval__128.adb gcc-13.1.0/gcc/ada/libgnat/s-scaval__128.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-scaval__128.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-scaval__128.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-scaval__128.ads gcc-13.1.0/gcc/ada/libgnat/s-scaval__128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-scaval__128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-scaval__128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-secsta.adb gcc-13.1.0/gcc/ada/libgnat/s-secsta.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-secsta.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-secsta.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Secondary_Stack is
*** 53,59 ****
     --  in order to avoid depending on the binder. Their values are set by the
     --  binder.
  
!    Binder_SS_Count : Natural;
     pragma Export (Ada, Binder_SS_Count, "__gnat_binder_ss_count");
     --  The number of secondary stacks in the pool created by the binder
  
--- 53,59 ----
     --  in order to avoid depending on the binder. Their values are set by the
     --  binder.
  
!    Binder_SS_Count : Natural := 0;
     pragma Export (Ada, Binder_SS_Count, "__gnat_binder_ss_count");
     --  The number of secondary stacks in the pool created by the binder
  
*************** package body System.Secondary_Stack is
*** 506,517 ****
        Mem_Size : Memory_Size) return Boolean
     is
     begin
        --  Byte - 1 denotes the last occupied byte. Subtracting that byte from
        --  the memory capacity of the chunk yields the size of the free memory
        --  within the chunk. The chunk can fit the request as long as the free
        --  memory is as big as the request.
  
!       return Chunk.Size - (Byte - 1) >= Mem_Size;
     end Has_Enough_Free_Memory;
  
     ----------------------
--- 506,522 ----
        Mem_Size : Memory_Size) return Boolean
     is
     begin
+       --  First check if the chunk is full (Byte is > Memory'Last in that
+       --  case), then check there is enough free memory.
+ 
        --  Byte - 1 denotes the last occupied byte. Subtracting that byte from
        --  the memory capacity of the chunk yields the size of the free memory
        --  within the chunk. The chunk can fit the request as long as the free
        --  memory is as big as the request.
  
!       return Chunk.Memory'Last >= Byte
!         and then Chunk.Size - (Byte - 1) >= Mem_Size;
! 
     end Has_Enough_Free_Memory;
  
     ----------------------
*************** package body System.Secondary_Stack is
*** 550,571 ****
  
     procedure SS_Allocate
       (Addr         : out Address;
!       Storage_Size : Storage_Count)
     is
        function Round_Up (Size : Storage_Count) return Memory_Size;
        pragma Inline (Round_Up);
        --  Round Size up to the nearest multiple of the maximum alignment
  
        --------------
        -- Round_Up --
        --------------
  
        function Round_Up (Size : Storage_Count) return Memory_Size is
!          Algn_MS : constant Memory_Size := Memory_Alignment;
           Size_MS : constant Memory_Size := Memory_Size (Size);
  
        begin
!          --  Detect a case where the Storage_Size is very large and may yield
           --  a rounded result which is outside the range of Chunk_Memory_Size.
           --  Treat this case as secondary-stack depletion.
  
--- 555,606 ----
  
     procedure SS_Allocate
       (Addr         : out Address;
!       Storage_Size : Storage_Count;
!       Alignment    : SSE.Storage_Count := Standard'Maximum_Alignment)
     is
+ 
        function Round_Up (Size : Storage_Count) return Memory_Size;
        pragma Inline (Round_Up);
        --  Round Size up to the nearest multiple of the maximum alignment
  
+       function Align_Addr (Addr : Address) return Address;
+       pragma Inline (Align_Addr);
+       --  Align Addr to the next multiple of Alignment
+ 
+       ----------------
+       -- Align_Addr --
+       ----------------
+ 
+       function Align_Addr (Addr : Address) return Address is
+          Int_Algn : constant Integer_Address := Integer_Address (Alignment);
+          Int_Addr : constant Integer_Address := To_Integer (Addr);
+       begin
+ 
+          --  L : Alignment
+          --  A : Standard'Maximum_Alignment
+ 
+          --           Addr
+          --      L     |     L           L
+          --      A--A--A--A--A--A--A--A--A--A--A
+          --                  |     |
+          --      \----/      |     |
+          --     Addr mod L   |   Addr + L
+          --                  |
+          --                Addr + L - (Addr mod L)
+ 
+          return To_Address (Int_Addr + Int_Algn - (Int_Addr mod Int_Algn));
+       end Align_Addr;
+ 
        --------------
        -- Round_Up --
        --------------
  
        function Round_Up (Size : Storage_Count) return Memory_Size is
!          Algn_MS : constant Memory_Size := Standard'Maximum_Alignment;
           Size_MS : constant Memory_Size := Memory_Size (Size);
  
        begin
!          --  Detect a case where the Size is very large and may yield
           --  a rounded result which is outside the range of Chunk_Memory_Size.
           --  Treat this case as secondary-stack depletion.
  
*************** package body System.Secondary_Stack is
*** 581,607 ****
        Stack    : constant SS_Stack_Ptr := Get_Sec_Stack.all;
        Mem_Size : Memory_Size;
  
     --  Start of processing for SS_Allocate
  
     begin
!       --  Round the requested size up to the nearest multiple of the maximum
!       --  alignment to ensure efficient access.
  
!       if Storage_Size = 0 then
!          Mem_Size := Memory_Alignment;
!       else
!          --  It should not be possible to request an allocation of negative
!          --  size.
  
!          pragma Assert (Storage_Size >= 0);
!          Mem_Size := Round_Up (Storage_Size);
        end if;
  
        if Sec_Stack_Dynamic then
           Allocate_Dynamic (Stack, Mem_Size, Addr);
        else
           Allocate_Static  (Stack, Mem_Size, Addr);
        end if;
     end SS_Allocate;
  
     -------------
--- 616,661 ----
        Stack    : constant SS_Stack_Ptr := Get_Sec_Stack.all;
        Mem_Size : Memory_Size;
  
+       Over_Aligning : constant Boolean :=
+         Alignment > Standard'Maximum_Alignment;
+ 
+       Padding : SSE.Storage_Count := 0;
+ 
     --  Start of processing for SS_Allocate
  
     begin
!       --  Alignment must be a power of two and can be:
  
!       --  - lower than or equal to Maximum_Alignment, in which case the result
!       --    will be aligned on Maximum_Alignment;
!       --  - higher than Maximum_Alignment, in which case the result will be
!       --    dynamically realigned.
  
!       if Over_Aligning then
!          Padding := Alignment;
        end if;
  
+       --  Round the requested size (plus the needed padding in case of
+       --  over-alignment) up to the nearest multiple of the default
+       --  alignment to ensure efficient access and that the next available
+       --  Byte is always aligned on the default alignement value.
+ 
+       --  It should not be possible to request an allocation of negative
+       --  size.
+ 
+       pragma Assert (Storage_Size >= 0);
+       Mem_Size := Round_Up (Storage_Size + Padding);
+ 
        if Sec_Stack_Dynamic then
           Allocate_Dynamic (Stack, Mem_Size, Addr);
        else
           Allocate_Static  (Stack, Mem_Size, Addr);
        end if;
+ 
+       if Over_Aligning then
+          Addr := Align_Addr (Addr);
+       end if;
+ 
     end SS_Allocate;
  
     -------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-secsta.ads gcc-13.1.0/gcc/ada/libgnat/s-secsta.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-secsta.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-secsta.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Secondary_Stack is
*** 69,79 ****
  
     procedure SS_Allocate
       (Addr         : out Address;
!       Storage_Size : SSE.Storage_Count);
     --  Allocate enough space on the secondary stack of the invoking task to
!    --  accommodate an alloction of size Storage_Size. Return the address of the
!    --  first byte of the allocation in Addr. The routine may carry out one or
!    --  more of the following actions:
     --
     --    * Reuse an existing chunk that is big enough to accommodate the
     --      requested Storage_Size.
--- 69,81 ----
  
     procedure SS_Allocate
       (Addr         : out Address;
!       Storage_Size : SSE.Storage_Count;
!       Alignment    : SSE.Storage_Count := Standard'Maximum_Alignment);
     --  Allocate enough space on the secondary stack of the invoking task to
!    --  accommodate an allocation of size Storage_Size. Return the address of
!    --  the first byte of the allocation in Addr, which is a multiple of
!    --  Alignment. The routine may carry out one or more of the following
!    --  actions:
     --
     --    * Reuse an existing chunk that is big enough to accommodate the
     --      requested Storage_Size.
*************** private
*** 259,280 ****
     subtype Memory_Index is Memory_Size;
     --  Index into the memory storage of a single chunk
  
-    Memory_Alignment : constant := Standard'Maximum_Alignment * 2;
-    --  The memory alignment we will want to honor on every allocation.
-    --
-    --  At this stage, gigi assumes we can accommodate any alignment requirement
-    --  there might be on the data type for which the memory gets allocated (see
-    --  build_call_alloc_dealloc).
-    --
-    --  The multiplication factor is intended to account for requirements
-    --  by user code compiled with specific arch/cpu options such as -mavx
-    --  on X86[_64] targets, which Standard'Maximum_Alignment doesn't convey
-    --  without such compilation options. * 4 would actually be needed to
-    --  support -mavx512f on X86, but this would incur more annoying memory
-    --  consumption overheads.
- 
     type Chunk_Memory is array (Memory_Size range <>) of SSE.Storage_Element;
!    for Chunk_Memory'Alignment use Memory_Alignment;
     --  The memory storage of a single chunk
  
     --------------
--- 261,268 ----
     subtype Memory_Index is Memory_Size;
     --  Index into the memory storage of a single chunk
  
     type Chunk_Memory is array (Memory_Size range <>) of SSE.Storage_Element;
!    for Chunk_Memory'Alignment use Standard'Maximum_Alignment;
     --  The memory storage of a single chunk
  
     --------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-sequio.adb gcc-13.1.0/gcc/ada/libgnat/s-sequio.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-sequio.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-sequio.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-sequio.ads gcc-13.1.0/gcc/ada/libgnat/s-sequio.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-sequio.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-sequio.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 1992-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-shabig.ads gcc-13.1.0/gcc/ada/libgnat/s-shabig.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-shabig.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-shabig.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2012-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-shasto.adb gcc-13.1.0/gcc/ada/libgnat/s-shasto.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-shasto.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-shasto.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-shasto.ads gcc-13.1.0/gcc/ada/libgnat/s-shasto.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-shasto.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-shasto.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-soflin.adb gcc-13.1.0/gcc/ada/libgnat/s-soflin.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-soflin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-soflin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-soflin.ads gcc-13.1.0/gcc/ada/libgnat/s-soflin.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-soflin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-soflin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-soliin.adb gcc-13.1.0/gcc/ada/libgnat/s-soliin.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-soliin.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-soliin.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2017-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2017-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-soliin.ads gcc-13.1.0/gcc/ada/libgnat/s-soliin.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-soliin.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-soliin.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2017-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2017-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-spark.ads gcc-13.1.0/gcc/ada/libgnat/s-spark.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-spark.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-spark.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,36 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                         S Y S T E M . S P A R K                          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2022-2023, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package System.SPARK with
+   SPARK_Mode,
+   Pure
+ is
+ end System.SPARK;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-spcuop.adb gcc-13.1.0/gcc/ada/libgnat/s-spcuop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-spcuop.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-spcuop.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,42 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --           S Y S T E M . S P A R K . C U T _ O P E R A T I O N S          --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --             Copyright (C) 2022-2023, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package body System.SPARK.Cut_Operations with
+   SPARK_Mode => Off
+ is
+ 
+    function By (Consequence, Premise : Boolean) return Boolean is
+      (Premise and then Consequence);
+ 
+    function So (Premise, Consequence : Boolean) return Boolean is
+      (Premise and then Consequence);
+ 
+ end System.SPARK.Cut_Operations;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-spcuop.ads gcc-13.1.0/gcc/ada/libgnat/s-spcuop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-spcuop.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-spcuop.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,59 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --           S Y S T E M . S P A R K . C U T _ O P E R A T I O N S          --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --             Copyright (C) 2022-2023, Free Software Foundation, Inc.      --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  By and So are connectors used to manually help the proof of assertions by
+ --  introducing intermediate steps. They can only be used inside pragmas
+ --  Assert or Assert_And_Cut. They are handled in the following way:
+ --
+ --  *  If A and B are two boolean expressions, proving By (A, B) requires
+ --     proving B, the premise, and then A assuming B, the side-condition. When
+ --     By (A, B) is assumed on the other hand, we only assume A. B is used
+ --     for the proof, but is not visible afterward.
+ --
+ --  *  If A and B are two boolean expressions, proving So (A, B) requires
+ --     proving A, the premise, and then B assuming A, the side-condition. When
+ --     So (A, B) is assumed both A and B are assumed to be true.
+ 
+ package System.SPARK.Cut_Operations with
+   SPARK_Mode,
+   Pure,
+   Annotate => (GNATprove, Always_Return)
+ is
+ 
+    function By (Consequence, Premise : Boolean) return Boolean with
+      Ghost,
+      Global => null;
+ 
+    function So (Premise, Consequence : Boolean) return Boolean with
+      Ghost,
+      Global => null;
+ 
+ end System.SPARK.Cut_Operations;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-spsufi.adb gcc-13.1.0/gcc/ada/libgnat/s-spsufi.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-spsufi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-spsufi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-spsufi.ads gcc-13.1.0/gcc/ada/libgnat/s-spsufi.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-spsufi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-spsufi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stache.adb gcc-13.1.0/gcc/ada/libgnat/s-stache.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stache.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stache.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --           Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stache.ads gcc-13.1.0/gcc/ada/libgnat/s-stache.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stache.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stache.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --           Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stalib.adb gcc-13.1.0/gcc/ada/libgnat/s-stalib.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stalib.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stalib.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stalib.ads gcc-13.1.0/gcc/ada/libgnat/s-stalib.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stalib.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stalib.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-statxd.adb gcc-13.1.0/gcc/ada/libgnat/s-statxd.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-statxd.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-statxd.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1996-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 1996-2023, 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- --
*************** package body System.Stream_Attributes.XD
*** 76,111 ****
  
                 --  Single precision
  
!               [E_Size  => 8,
                 E_Bias  => 127,
                 F_Size  => 23,
                 E_Last  => 2 ** 8 - 1,
                 F_Mask  => 16#7F#,                  --  2 ** 7 - 1,
                 E_Bytes => 2,
                 F_Bytes => 3,
!                F_Bits  => 23 mod US],
  
                 --  Double precision
  
!               [E_Size  => 11,
                 E_Bias  => 1023,
                 F_Size  => 52,
                 E_Last  => 2 ** 11 - 1,
                 F_Mask  => 16#0F#,                  --  2 ** 4 - 1,
                 E_Bytes => 2,
                 F_Bytes => 7,
!                F_Bits  => 52 mod US],
  
                 --  Quadruple precision
  
!               [E_Size  => 15,
                 E_Bias  => 16383,
                 F_Size  => 112,
                 E_Last  => 2 ** 8 - 1,
                 F_Mask  => 16#FF#,                  --  2 ** 8 - 1,
                 E_Bytes => 2,
                 F_Bytes => 14,
!                F_Bits  => 112 mod US]];
  
     --  The representation of all items requires a multiple of four bytes
     --  (or 32 bits) of data. The bytes are numbered 0 through n-1. The bytes
--- 76,111 ----
  
                 --  Single precision
  
!               (E_Size  => 8,
                 E_Bias  => 127,
                 F_Size  => 23,
                 E_Last  => 2 ** 8 - 1,
                 F_Mask  => 16#7F#,                  --  2 ** 7 - 1,
                 E_Bytes => 2,
                 F_Bytes => 3,
!                F_Bits  => 23 mod US),
  
                 --  Double precision
  
!               (E_Size  => 11,
                 E_Bias  => 1023,
                 F_Size  => 52,
                 E_Last  => 2 ** 11 - 1,
                 F_Mask  => 16#0F#,                  --  2 ** 4 - 1,
                 E_Bytes => 2,
                 F_Bytes => 7,
!                F_Bits  => 52 mod US),
  
                 --  Quadruple precision
  
!               (E_Size  => 15,
                 E_Bias  => 16383,
                 F_Size  => 112,
                 E_Last  => 2 ** 8 - 1,
                 F_Mask  => 16#FF#,                  --  2 ** 8 - 1,
                 E_Bytes => 2,
                 F_Bytes => 14,
!                F_Bits  => 112 mod US)];
  
     --  The representation of all items requires a multiple of four bytes
     --  (or 32 bits) of data. The bytes are numbered 0 through n-1. The bytes
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-statxd.ads gcc-13.1.0/gcc/ada/libgnat/s-statxd.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-statxd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-statxd.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stausa.adb gcc-13.1.0/gcc/ada/libgnat/s-stausa.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stausa.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stausa.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2004-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --         Copyright (C) 2004-2023, 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- --
*************** package body System.Stack_Usage is
*** 128,136 ****
        Result_Array := new Result_Array_Type (1 .. Buffer_Size);
        Result_Array.all :=
          [others =>
!            [Task_Name   => [others => ASCII.NUL],
              Value       => 0,
!             Stack_Size  => 0]];
  
        --  Set the Is_Enabled flag to true, so that the task wrapper knows that
        --  it has to handle dynamic stack analysis
--- 128,136 ----
        Result_Array := new Result_Array_Type (1 .. Buffer_Size);
        Result_Array.all :=
          [others =>
!            (Task_Name   => [others => ASCII.NUL],
              Value       => 0,
!             Stack_Size  => 0)];
  
        --  Set the Is_Enabled flag to true, so that the task wrapper knows that
        --  it has to handle dynamic stack analysis
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stausa.ads gcc-13.1.0/gcc/ada/libgnat/s-stausa.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stausa.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stausa.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2004-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2004-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stchop.adb gcc-13.1.0/gcc/ada/libgnat/s-stchop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stchop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stchop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stchop.ads gcc-13.1.0/gcc/ada/libgnat/s-stchop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stchop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stchop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2023, 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- --
*************** package System.Stack_Checking.Operations
*** 72,78 ****
  private
     Cache : aliased Stack_Access := Null_Stack;
  
!    pragma Export (C, Cache, "_gnat_stack_cache");
!    pragma Export (C, Stack_Check, "_gnat_stack_check");
  
  end System.Stack_Checking.Operations;
--- 72,78 ----
  private
     Cache : aliased Stack_Access := Null_Stack;
  
!    pragma Export (C, Cache, "__gnat_stack_cache");
!    pragma Export (C, Stack_Check, "__gnat_stack_check");
  
  end System.Stack_Checking.Operations;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stchop__limit.ads gcc-13.1.0/gcc/ada/libgnat/s-stchop__limit.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stchop__limit.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stchop__limit.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  S p e c                                 --
  --                                                                          --
! --          Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stchop__vxworks.adb gcc-13.1.0/gcc/ada/libgnat/s-stchop__vxworks.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stchop__vxworks.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stchop__vxworks.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                  B o d y                                 --
  --                                                                          --
! --          Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stoele.adb gcc-13.1.0/gcc/ada/libgnat/s-stoele.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stoele.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stoele.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stoele.ads gcc-13.1.0/gcc/ada/libgnat/s-stoele.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stoele.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stoele.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, 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 --
*************** package System.Storage_Elements is
*** 43,48 ****
--- 43,50 ----
     --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada 2005,
     --  this is Pure in any case (AI-362).
  
+    pragma Annotate (GNATprove, Always_Return, Storage_Elements);
+ 
     --  We also add the pragma Pure_Function to the operations in this package,
     --  because otherwise functions with parameters derived from Address are
     --  treated as non-pure by the back-end (see exp_ch6.adb). This is because
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stopoo.adb gcc-13.1.0/gcc/ada/libgnat/s-stopoo.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stopoo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stopoo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stopoo.ads gcc-13.1.0/gcc/ada/libgnat/s-stopoo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stopoo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stopoo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stposu.adb gcc-13.1.0/gcc/ada/libgnat/s-stposu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stposu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stposu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stposu.ads gcc-13.1.0/gcc/ada/libgnat/s-stposu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stposu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stposu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stratt.adb gcc-13.1.0/gcc/ada/libgnat/s-stratt.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-stratt.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stratt.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-stratt.ads gcc-13.1.0/gcc/ada/libgnat/s-stratt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-stratt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-stratt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-strcom.adb gcc-13.1.0/gcc/ada/libgnat/s-strcom.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-strcom.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-strcom.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-strcom.ads gcc-13.1.0/gcc/ada/libgnat/s-strcom.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-strcom.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-strcom.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-strhas.adb gcc-13.1.0/gcc/ada/libgnat/s-strhas.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-strhas.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-strhas.adb	Wed Apr 26 07:09:39 2023
***************
*** 4,12 ****
  --                                                                          --
  --                    S Y S T E M . S T R I N G _ H A S H                   --
  --                                                                          --
! --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 4,12 ----
  --                                                                          --
  --                    S Y S T E M . S T R I N G _ H A S H                   --
  --                                                                          --
! --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-strhas.ads gcc-13.1.0/gcc/ada/libgnat/s-strhas.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-strhas.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-strhas.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-string.adb gcc-13.1.0/gcc/ada/libgnat/s-string.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-string.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-string.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-string.ads gcc-13.1.0/gcc/ada/libgnat/s-string.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-string.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-string.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1995-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-ststop.adb gcc-13.1.0/gcc/ada/libgnat/s-ststop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-ststop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-ststop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-ststop.ads gcc-13.1.0/gcc/ada/libgnat/s-ststop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-ststop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-ststop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-tasloc.adb gcc-13.1.0/gcc/ada/libgnat/s-tasloc.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-tasloc.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-tasloc.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1997-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-tasloc.ads gcc-13.1.0/gcc/ada/libgnat/s-tasloc.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-tasloc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-tasloc.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1998-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-traceb.adb gcc-13.1.0/gcc/ada/libgnat/s-traceb.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-traceb.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-traceb.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-traceb.ads gcc-13.1.0/gcc/ada/libgnat/s-traceb.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-traceb.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-traceb.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-traceb__hpux.adb gcc-13.1.0/gcc/ada/libgnat/s-traceb__hpux.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-traceb__hpux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-traceb__hpux.adb	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2009-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-traceb__mastop.adb gcc-13.1.0/gcc/ada/libgnat/s-traceb__mastop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-traceb__mastop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-traceb__mastop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-traent.adb gcc-13.1.0/gcc/ada/libgnat/s-traent.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-traent.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-traent.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-traent.ads gcc-13.1.0/gcc/ada/libgnat/s-traent.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-traent.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-traent.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, 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 --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-trasym.adb gcc-13.1.0/gcc/ada/libgnat/s-trasym.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-trasym.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-trasym.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-trasym.ads gcc-13.1.0/gcc/ada/libgnat/s-trasym.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-trasym.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-trasym.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-trasym__dwarf.adb gcc-13.1.0/gcc/ada/libgnat/s-trasym__dwarf.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-trasym__dwarf.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-trasym__dwarf.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 1999-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-tsmona.adb gcc-13.1.0/gcc/ada/libgnat/s-tsmona.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-tsmona.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-tsmona.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-tsmona__linux.adb gcc-13.1.0/gcc/ada/libgnat/s-tsmona__linux.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-tsmona__linux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-tsmona__linux.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-tsmona__mingw.adb gcc-13.1.0/gcc/ada/libgnat/s-tsmona__mingw.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-tsmona__mingw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-tsmona__mingw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2022, 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- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --                     Copyright (C) 2012-2023, 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 -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-unstyp.ads gcc-13.1.0/gcc/ada/libgnat/s-unstyp.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-unstyp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-unstyp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-utf_32.adb gcc-13.1.0/gcc/ada/libgnat/s-utf_32.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-utf_32.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-utf_32.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-utf_32.ads gcc-13.1.0/gcc/ada/libgnat/s-utf_32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-utf_32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-utf_32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vade128.ads gcc-13.1.0/gcc/ada/libgnat/s-vade128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vade128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vade128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vade32.ads gcc-13.1.0/gcc/ada/libgnat/s-vade32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vade32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vade32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vade64.ads gcc-13.1.0/gcc/ada/libgnat/s-vade64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vade64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vade64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vaen16.ads gcc-13.1.0/gcc/ada/libgnat/s-vaen16.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vaen16.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vaen16.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vaen32.ads gcc-13.1.0/gcc/ada/libgnat/s-vaen32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vaen32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vaen32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vaenu8.ads gcc-13.1.0/gcc/ada/libgnat/s-vaenu8.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vaenu8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vaenu8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vafi128.ads gcc-13.1.0/gcc/ada/libgnat/s-vafi128.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vafi128.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vafi128.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vafi32.ads gcc-13.1.0/gcc/ada/libgnat/s-vafi32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vafi32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vafi32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vafi64.ads gcc-13.1.0/gcc/ada/libgnat/s-vafi64.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vafi64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vafi64.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vaispe.adb gcc-13.1.0/gcc/ada/libgnat/s-vaispe.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-vaispe.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-vaispe.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,87 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                   S Y S T E M . V A L U E _ I _ S P E C                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
+ package body System.Value_I_Spec is
+ 
+    -----------------------------------
+    -- Prove_Scan_Only_Decimal_Ghost --
+    -----------------------------------
+ 
+    procedure Prove_Scan_Only_Decimal_Ghost (Str : String; Val : Int) is
+       Non_Blank : constant Positive := First_Non_Space_Ghost
+         (Str, Str'First, Str'Last);
+       pragma Assert (Str (Str'First + 1) /= ' ');
+       pragma Assert
+         (if Val < 0 then Non_Blank = Str'First
+          else
+            Str (Str'First) = ' '
+             and then Non_Blank = Str'First + 1);
+       Minus     : constant Boolean := Str (Non_Blank) = '-';
+       Fst_Num   : constant Positive :=
+         (if Minus then Non_Blank + 1 else Non_Blank);
+       pragma Assert (Fst_Num = Str'First + 1);
+       Uval      : constant Uns := Abs_Uns_Of_Int (Val);
+ 
+       procedure Prove_Conversion_Is_Identity (Val : Int; Uval : Uns)
+       with
+         Pre  => Minus = (Val < 0)
+           and then Uval = Abs_Uns_Of_Int (Val),
+         Post => Uns_Is_Valid_Int (Minus, Uval)
+           and then Is_Int_Of_Uns (Minus, Uval, Val);
+       --  Local proof of the unicity of the signed representation
+ 
+       procedure Prove_Conversion_Is_Identity (Val : Int; Uval : Uns) is null;
+ 
+    --  Start of processing for Prove_Scan_Only_Decimal_Ghost
+ 
+    begin
+       Prove_Conversion_Is_Identity (Val, Uval);
+       pragma Assert
+         (Uns_Params.Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last)));
+       pragma Assert
+         (Uns_Params.Scan_Split_No_Overflow_Ghost (Str, Fst_Num, Str'Last));
+       Uns_Params.Lemma_Exponent_Unsigned_Ghost_Base (Uval, 0, 10);
+       pragma Assert
+         (Uns_Params.Raw_Unsigned_No_Overflow_Ghost (Str, Fst_Num, Str'Last));
+       pragma Assert (Only_Space_Ghost
+         (Str, Uns_Params.Raw_Unsigned_Last_Ghost
+                         (Str, Fst_Num, Str'Last), Str'Last));
+       pragma Assert (Is_Integer_Ghost (Str));
+       pragma Assert (Is_Value_Integer_Ghost (Str, Val));
+    end Prove_Scan_Only_Decimal_Ghost;
+ 
+ end System.Value_I_Spec;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vaispe.ads gcc-13.1.0/gcc/ada/libgnat/s-vaispe.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vaispe.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-vaispe.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,199 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                   S Y S T E M . V A L U E _ I _ S P E C                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the specification entities using for the formal
+ --  verification of the routines for scanning signed integer values.
+ 
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
+ with System.Val_Util; use System.Val_Util;
+ 
+ generic
+ 
+    type Int is range <>;
+ 
+    type Uns is mod <>;
+ 
+    --  Additional parameters for specification subprograms on modular Unsigned
+    --  integers.
+ 
+    with package Uns_Params is new System.Val_Util.Uns_Params
+      (Uns => Uns, others => <>)
+    with Ghost;
+ 
+ package System.Value_I_Spec with
+    Ghost,
+    SPARK_Mode,
+    Annotate => (GNATprove, Always_Return)
+ is
+    pragma Preelaborate;
+    use all type Uns_Params.Uns_Option;
+ 
+    function Uns_Is_Valid_Int (Minus : Boolean; Uval : Uns) return Boolean is
+      (if Minus then Uval <= Uns (Int'Last) + 1
+       else Uval <= Uns (Int'Last))
+    with Post => True;
+    --  Return True if Uval (or -Uval when Minus is True) is a valid number of
+    --  type Int.
+ 
+    function Is_Int_Of_Uns
+      (Minus : Boolean;
+       Uval  : Uns;
+       Val   : Int)
+       return Boolean
+    is
+      (if Minus and then Uval = Uns (Int'Last) + 1 then Val = Int'First
+       elsif Minus then Val = -(Int (Uval))
+       else Val = Int (Uval))
+    with
+      Pre  => Uns_Is_Valid_Int (Minus, Uval),
+      Post => True;
+    --  Return True if Uval (or -Uval when Minus is True) is equal to Val
+ 
+    function Abs_Uns_Of_Int (Val : Int) return Uns is
+      (if Val = Int'First then Uns (Int'Last) + 1
+       elsif Val < 0 then Uns (-Val)
+       else Uns (Val));
+    --  Return the unsigned absolute value of Val
+ 
+    function Slide_To_1 (Str : String) return String
+    with
+      Post =>
+        Only_Space_Ghost (Str, Str'First, Str'Last) =
+          (for all J in Str'First .. Str'Last =>
+             Slide_To_1'Result (J - Str'First + 1) = ' ');
+    --  Slides Str so that it starts at 1
+ 
+    function Slide_If_Necessary (Str : String) return String is
+      (if Str'Last = Positive'Last then Slide_To_1 (Str) else Str);
+    --  If Str'Last = Positive'Last then slides Str so that it starts at 1
+ 
+    function Is_Integer_Ghost (Str : String) return Boolean is
+      (declare
+         Non_Blank : constant Positive := First_Non_Space_Ghost
+           (Str, Str'First, Str'Last);
+         Fst_Num   : constant Positive :=
+           (if Str (Non_Blank) in '+' | '-' then Non_Blank + 1 else Non_Blank);
+       begin
+         Uns_Params.Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last))
+           and then Uns_Params.Raw_Unsigned_No_Overflow_Ghost
+              (Str, Fst_Num, Str'Last)
+           and then
+             Uns_Is_Valid_Int
+               (Minus => Str (Non_Blank) = '-',
+                Uval  => Uns_Params.Scan_Raw_Unsigned_Ghost
+                  (Str, Fst_Num, Str'Last))
+           and then Only_Space_Ghost
+             (Str, Uns_Params.Raw_Unsigned_Last_Ghost
+              (Str, Fst_Num, Str'Last), Str'Last))
+    with
+      Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
+        and then Str'Last /= Positive'Last,
+      Post => True;
+    --  Ghost function that determines if Str has the correct format for a
+    --  signed number, consisting in some blank characters, an optional
+    --  sign, a raw unsigned number which does not overflow and then some
+    --  more blank characters.
+ 
+    function Is_Value_Integer_Ghost (Str : String; Val : Int) return Boolean is
+      (declare
+         Non_Blank : constant Positive := First_Non_Space_Ghost
+           (Str, Str'First, Str'Last);
+         Fst_Num   : constant Positive :=
+           (if Str (Non_Blank) in '+' | '-' then Non_Blank + 1 else Non_Blank);
+         Uval      : constant Uns :=
+           Uns_Params.Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last);
+       begin
+         Is_Int_Of_Uns (Minus => Str (Non_Blank) = '-',
+                        Uval  => Uval,
+                        Val   => Val))
+    with
+      Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
+        and then Str'Last /= Positive'Last
+        and then Is_Integer_Ghost (Str),
+      Post => True;
+    --  Ghost function that returns True if Val is the value corresponding to
+    --  the signed number represented by Str.
+ 
+    procedure Prove_Scan_Only_Decimal_Ghost (Str : String; Val : Int)
+    with
+      Ghost,
+      Pre  => Str'Last /= Positive'Last
+        and then Str'Length >= 2
+        and then Str (Str'First) in ' ' | '-'
+        and then (Str (Str'First) = '-') = (Val < 0)
+        and then Uns_Params.Only_Decimal_Ghost (Str, Str'First + 1, Str'Last)
+        and then Uns_Params.Scan_Based_Number_Ghost
+          (Str, Str'First + 1, Str'Last)
+          = Uns_Params.Wrap_Option (Abs_Uns_Of_Int (Val)),
+      Post => Is_Integer_Ghost (Slide_If_Necessary (Str))
+        and then Is_Value_Integer_Ghost (Str, Val);
+    --  Ghost lemma used in the proof of 'Image implementation, to prove that
+    --  the result of Value_Integer on a decimal string is the same as the
+    --  signing the result of Scan_Based_Number_Ghost.
+ 
+    --  Bundle Int type with other types, constants and subprograms used in
+    --  ghost code, so that this package can be instantiated once and used
+    --  multiple times as generic formal for a given Int type.
+ 
+    package Int_Params is new System.Val_Util.Int_Params
+      (Uns                             => Uns,
+       Int                             => Int,
+       P_Uns_Params                    => Uns_Params,
+       P_Is_Integer_Ghost              => Is_Integer_Ghost,
+       P_Is_Value_Integer_Ghost        => Is_Value_Integer_Ghost,
+       P_Is_Int_Of_Uns                 => Is_Int_Of_Uns,
+       P_Abs_Uns_Of_Int                => Abs_Uns_Of_Int,
+       P_Prove_Scan_Only_Decimal_Ghost => Prove_Scan_Only_Decimal_Ghost);
+ 
+ private
+ 
+    ----------------
+    -- Slide_To_1 --
+    ----------------
+ 
+    function Slide_To_1 (Str : String) return String is
+      (declare
+         Res : constant String (1 .. Str'Length) := Str;
+       begin
+         Res);
+ 
+ end System.Value_I_Spec;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valboo.adb gcc-13.1.0/gcc/ada/libgnat/s-valboo.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valboo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valboo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valboo.ads gcc-13.1.0/gcc/ada/libgnat/s-valboo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valboo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valboo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valcha.adb gcc-13.1.0/gcc/ada/libgnat/s-valcha.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valcha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valcha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valcha.ads gcc-13.1.0/gcc/ada/libgnat/s-valcha.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valcha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valcha.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valflt.ads gcc-13.1.0/gcc/ada/libgnat/s-valflt.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valflt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valflt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Val_Flt is
*** 42,48 ****
     package Impl is new Val_Real
       (Float,
        System.Powten_Flt.Maxpow,
!       System.Powten_Flt.Powten'Address,
        Unsigned_Types.Unsigned);
  
     function Scan_Float
--- 42,51 ----
     package Impl is new Val_Real
       (Float,
        System.Powten_Flt.Maxpow,
!       System.Powten_Flt.Powfive'Address,
!       System.Null_Address,
!       System.Null_Address,
!       System.Null_Address,
        Unsigned_Types.Unsigned);
  
     function Scan_Float
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valint.adb gcc-13.1.0/gcc/ada/libgnat/s-valint.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valint.ads gcc-13.1.0/gcc/ada/libgnat/s-valint.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,47 ****
  --  This package contains routines for scanning signed Integer values for use
  --  in Text_IO.Integer_IO, and the Value attribute.
  
  with System.Unsigned_Types;
  with System.Val_Uns;
  with System.Value_I;
  
! package System.Val_Int is
     pragma Preelaborate;
  
     subtype Unsigned is Unsigned_Types.Unsigned;
  
!    package Impl is new Value_I (Integer, Unsigned, Val_Uns.Scan_Raw_Unsigned);
  
     procedure Scan_Integer
       (Str : String;
--- 32,63 ----
  --  This package contains routines for scanning signed Integer values for use
  --  in Text_IO.Integer_IO, and the Value attribute.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Unsigned_Types;
  with System.Val_Uns;
  with System.Value_I;
  
! package System.Val_Int with SPARK_Mode is
     pragma Preelaborate;
  
     subtype Unsigned is Unsigned_Types.Unsigned;
  
!    package Impl is new Value_I
!      (Int               => Integer,
!       Uns               => Unsigned,
!       Scan_Raw_Unsigned => Val_Uns.Scan_Raw_Unsigned,
!       Uns_Params        => System.Val_Uns.Impl.Spec.Uns_Params);
  
     procedure Scan_Integer
       (Str : String;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vallfl.ads gcc-13.1.0/gcc/ada/libgnat/s-vallfl.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vallfl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vallfl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Val_LFlt is
*** 42,48 ****
     package Impl is new Val_Real
       (Long_Float,
        System.Powten_LFlt.Maxpow,
!       System.Powten_LFlt.Powten'Address,
        Unsigned_Types.Long_Long_Unsigned);
  
     function Scan_Long_Float
--- 42,51 ----
     package Impl is new Val_Real
       (Long_Float,
        System.Powten_LFlt.Maxpow,
!       System.Powten_LFlt.Powfive'Address,
!       System.Powten_LFlt.Powfive_100'Address,
!       System.Powten_LFlt.Powfive_200'Address,
!       System.Powten_LFlt.Powfive_300'Address,
        Unsigned_Types.Long_Long_Unsigned);
  
     function Scan_Long_Float
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valllf.ads gcc-13.1.0/gcc/ada/libgnat/s-valllf.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valllf.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valllf.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Val_LLF is
*** 42,48 ****
     package Impl is new Val_Real
       (Long_Long_Float,
        System.Powten_LLF.Maxpow,
!       System.Powten_LLF.Powten'Address,
        System.Unsigned_Types.Long_Long_Unsigned);
  
     function Scan_Long_Long_Float
--- 42,51 ----
     package Impl is new Val_Real
       (Long_Long_Float,
        System.Powten_LLF.Maxpow,
!       System.Powten_LLF.Powfive'Address,
!       System.Powten_LLF.Powfive_100'Address,
!       System.Powten_LLF.Powfive_200'Address,
!       System.Powten_LLF.Powfive_300'Address,
        System.Unsigned_Types.Long_Long_Unsigned);
  
     function Scan_Long_Long_Float
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vallli.adb gcc-13.1.0/gcc/ada/libgnat/s-vallli.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-vallli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vallli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vallli.ads gcc-13.1.0/gcc/ada/libgnat/s-vallli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vallli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vallli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,50 ****
  --  This package contains routines for scanning signed Long_Long_Integer
  --  values for use in Text_IO.Integer_IO, and the Value attribute.
  
  with System.Unsigned_Types;
  with System.Val_LLU;
  with System.Value_I;
  
! package System.Val_LLI is
     pragma Preelaborate;
  
     subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    package Impl is new
!      Value_I (Long_Long_Integer,
!               Long_Long_Unsigned,
!               Val_LLU.Scan_Raw_Long_Long_Unsigned);
  
     procedure Scan_Long_Long_Integer
       (Str  : String;
--- 32,63 ----
  --  This package contains routines for scanning signed Long_Long_Integer
  --  values for use in Text_IO.Integer_IO, and the Value attribute.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Unsigned_Types;
  with System.Val_LLU;
  with System.Value_I;
  
! package System.Val_LLI with SPARK_Mode is
     pragma Preelaborate;
  
     subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    package Impl is new Value_I
!      (Int               => Long_Long_Integer,
!       Uns               => Long_Long_Unsigned,
!       Scan_Raw_Unsigned => Val_LLU.Scan_Raw_Long_Long_Unsigned,
!       Uns_Params        => System.Val_LLU.Impl.Spec.Uns_Params);
  
     procedure Scan_Long_Long_Integer
       (Str  : String;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valllli.ads gcc-13.1.0/gcc/ada/libgnat/s-valllli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valllli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valllli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,50 ****
  --  This package contains routines for scanning signed Long_Long_Long_Integer
  --  values for use in Text_IO.Integer_IO, and the Value attribute.
  
  with System.Unsigned_Types;
  with System.Val_LLLU;
  with System.Value_I;
  
! package System.Val_LLLI is
     pragma Preelaborate;
  
     subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    package Impl is new
!      Value_I (Long_Long_Long_Integer,
!               Long_Long_Long_Unsigned,
!               Val_LLLU.Scan_Raw_Long_Long_Long_Unsigned);
  
     procedure Scan_Long_Long_Long_Integer
       (Str  : String;
--- 32,63 ----
  --  This package contains routines for scanning signed Long_Long_Long_Integer
  --  values for use in Text_IO.Integer_IO, and the Value attribute.
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  with System.Unsigned_Types;
  with System.Val_LLLU;
  with System.Value_I;
  
! package System.Val_LLLI with SPARK_Mode is
     pragma Preelaborate;
  
     subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    package Impl is new Value_I
!      (Int               => Long_Long_Long_Integer,
!       Uns               => Long_Long_Long_Unsigned,
!       Scan_Raw_Unsigned => Val_LLLU.Scan_Raw_Long_Long_Long_Unsigned,
!       Uns_Params        => System.Val_LLLU.Impl.Spec.Uns_Params);
  
     procedure Scan_Long_Long_Long_Integer
       (Str  : String;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vallllu.ads gcc-13.1.0/gcc/ada/libgnat/s-vallllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vallllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vallllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valllu.adb gcc-13.1.0/gcc/ada/libgnat/s-valllu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valllu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valllu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valllu.ads gcc-13.1.0/gcc/ada/libgnat/s-valllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valrea.adb gcc-13.1.0/gcc/ada/libgnat/s-valrea.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valrea.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valrea.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Val_Real is
*** 43,60 ****
     pragma Assert (Num'Machine_Mantissa <= Uns'Size);
     --  We need an unsigned type large enough to represent the mantissa
  
!    Need_Extra : constant Boolean := Num'Machine_Mantissa > Uns'Size - 4;
!    --  If the mantissa of the floating-point type is almost as large as the
!    --  unsigned type, we do not have enough space for an extra digit in the
!    --  unsigned type so we handle the extra digit separately, at the cost of
!    --  a bit more work in Integer_to_Real.
  
!    Precision_Limit : constant Uns :=
!      (if Need_Extra then 2**Num'Machine_Mantissa - 1 else 2**Uns'Size - 1);
!    --  If we handle the extra digit separately, we use the precision of the
!    --  floating-point type so that the conversion is exact.
  
!    package Impl is new Value_R (Uns, Precision_Limit, Round => Need_Extra);
  
     subtype Base_T is Unsigned range 2 .. 16;
  
--- 43,55 ----
     pragma Assert (Num'Machine_Mantissa <= Uns'Size);
     --  We need an unsigned type large enough to represent the mantissa
  
!    Is_Large_Type : constant Boolean := Num'Machine_Mantissa >= 53;
!    --  True if the floating-point type is at least IEEE Double
  
!    Precision_Limit : constant Uns := 2**Num'Machine_Mantissa - 1;
!    --  See below for the rationale
  
!    package Impl is new Value_R (Uns, 2, Precision_Limit, Round => False);
  
     subtype Base_T is Unsigned range 2 .. 16;
  
*************** package body System.Val_Real is
*** 64,81 ****
  
     Maxexp32 : constant array (Base_T) of Positive :=
       [2  => 127, 3 => 80,  4 => 63,  5 => 55,  6 => 49,
!       7  => 45,  8 => 42,  9 => 40, 10 => 38, 11 => 37,
        12 => 35, 13 => 34, 14 => 33, 15 => 32, 16 => 31];
  
     Maxexp64 : constant array (Base_T) of Positive :=
       [2  => 1023, 3 => 646,  4 => 511,  5 => 441,  6 => 396,
!       7  => 364,  8 => 341,  9 => 323, 10 => 308, 11 => 296,
        12 => 285, 13 => 276, 14 => 268, 15 => 262, 16 => 255];
  
     Maxexp80 : constant array (Base_T) of Positive :=
       [2  => 16383, 3 => 10337, 4 => 8191,  5 => 7056,  6 => 6338,
!       7  => 5836,  8 => 5461,  9 => 5168, 10 => 4932, 11 => 4736,
        12 => 4570, 13 => 4427, 14 => 4303, 15 => 4193, 16 => 4095];
  
     package Double_Real is new System.Double_Real (Num);
     use type Double_Real.Double_T;
--- 59,79 ----
  
     Maxexp32 : constant array (Base_T) of Positive :=
       [2  => 127, 3 => 80,  4 => 63,  5 => 55,  6 => 49,
!       7  => 45,  8 => 42,  9 => 40, 10 => 55, 11 => 37,
        12 => 35, 13 => 34, 14 => 33, 15 => 32, 16 => 31];
+    --  The actual value for 10 is 38 but we also use scaling for 10
  
     Maxexp64 : constant array (Base_T) of Positive :=
       [2  => 1023, 3 => 646,  4 => 511,  5 => 441,  6 => 396,
!       7  => 364,  8 => 341,  9 => 323, 10 => 441, 11 => 296,
        12 => 285, 13 => 276, 14 => 268, 15 => 262, 16 => 255];
+    --  The actual value for 10 is 308 but we also use scaling for 10
  
     Maxexp80 : constant array (Base_T) of Positive :=
       [2  => 16383, 3 => 10337, 4 => 8191,  5 => 7056,  6 => 6338,
!       7  => 5836,  8 => 5461,  9 => 5168, 10 => 7056, 11 => 4736,
        12 => 4570, 13 => 4427, 14 => 4303, 15 => 4193, 16 => 4095];
+    --  The actual value for 10 is 4932 but we also use scaling for 10
  
     package Double_Real is new System.Double_Real (Num);
     use type Double_Real.Double_T;
*************** package body System.Val_Real is
*** 83,99 ****
     subtype Double_T is Double_Real.Double_T;
     --  The double floating-point type
  
     function Integer_to_Real
       (Str   : String;
!       Val   : Uns;
        Base  : Unsigned;
!       Scale : Integer;
!       Extra : Unsigned;
        Minus : Boolean) return Num;
     --  Convert the real value from integer to real representation
  
!    function Large_Powten (Exp : Natural) return Double_T;
!    --  Return 10.0**Exp as a double number, where Exp > Maxpow
  
     ---------------------
     -- Integer_to_Real --
--- 81,108 ----
     subtype Double_T is Double_Real.Double_T;
     --  The double floating-point type
  
+    function Exact_Log2 (N : Unsigned) return Positive is
+      (case N is
+         when  2     => 1,
+         when  4     => 2,
+         when  8     => 3,
+         when 16     => 4,
+         when others => raise Program_Error);
+    --  Return the exponent of a power of 2
+ 
     function Integer_to_Real
       (Str   : String;
!       Val   : Impl.Value_Array;
        Base  : Unsigned;
!       Scale : Impl.Scale_Array;
        Minus : Boolean) return Num;
     --  Convert the real value from integer to real representation
  
!    function Large_Powfive (Exp : Natural) return Double_T;
!    --  Return 5.0**Exp as a double number, where Exp > Maxpow
! 
!    function Large_Powfive (Exp : Natural; S : out Natural) return Double_T;
!    --  Return Num'Scaling (5.0**Exp, -S) as a double number where Exp > Maxexp
  
     ---------------------
     -- Integer_to_Real --
*************** package body System.Val_Real is
*** 101,110 ****
  
     function Integer_to_Real
       (Str   : String;
!       Val   : Uns;
        Base  : Unsigned;
!       Scale : Integer;
!       Extra : Unsigned;
        Minus : Boolean) return Num
     is
        pragma Assert (Base in 2 .. 16);
--- 110,118 ----
  
     function Integer_to_Real
       (Str   : String;
!       Val   : Impl.Value_Array;
        Base  : Unsigned;
!       Scale : Impl.Scale_Array;
        Minus : Boolean) return Num
     is
        pragma Assert (Base in 2 .. 16);
*************** package body System.Val_Real is
*** 120,128 ****
                    else  raise Program_Error);
        --  Maximum exponent of the base that can fit in Num
  
-       R_Val : Num;
        D_Val : Double_T;
!       S     : Integer := Scale;
  
     begin
        --  We call the floating-point processor reset routine so we can be sure
--- 128,136 ----
                    else  raise Program_Error);
        --  Maximum exponent of the base that can fit in Num
  
        D_Val : Double_T;
!       R_Val : Num;
!       S     : Integer;
  
     begin
        --  We call the floating-point processor reset routine so we can be sure
*************** package body System.Val_Real is
*** 134,215 ****
           System.Float_Control.Reset;
        end if;
  
!       --  Take into account the extra digit, i.e. do the two computations
! 
!       --    (1)  R_Val := R_Val * Num (B) + Num (Extra)
!       --    (2)  S := S - 1
  
!       --  In the first, the three operands are exact, so using an FMA would
!       --  be ideal, but we are most likely running on the x87 FPU, hence we
!       --  may not have one. That is why we turn the multiplication into an
!       --  iterated addition with exact error handling, so that we can do a
!       --  single rounding at the end.
  
!       if Need_Extra and then Extra > 0 then
           declare
!             B   : Unsigned := Base;
!             Acc : Num      := 0.0;
!             Err : Num      := 0.0;
!             Fac : Num      := Num (Val);
!             DS  : Double_T;
  
!          begin
!             loop
!                --  If B is odd, add one factor. Note that the accumulator is
!                --  never larger than the factor at this point (it is in fact
!                --  never larger than the factor minus the initial value).
  
!                if B rem 2 /= 0 then
!                   if Acc = 0.0 then
!                      Acc := Fac;
!                   else
!                      DS  := Double_Real.Quick_Two_Sum (Fac, Acc);
!                      Acc := DS.Hi;
!                      Err := Err + DS.Lo;
!                   end if;
!                   exit when B = 1;
!                end if;
  
!                --  Now B is (morally) even, halve it and double the factor,
!                --  which is always an exact operation.
  
!                B := B / 2;
!                Fac := Fac * 2.0;
!             end loop;
  
!             --  Add Extra to the error, which are both small integers
  
!             D_Val := Double_Real.Quick_Two_Sum (Acc, Err + Num (Extra));
  
!             S := S - 1;
!          end;
  
!       --  Or else, if the Extra digit is zero, do the exact conversion
  
!       elsif Need_Extra then
!          D_Val := Double_Real.To_Double (Num (Val));
  
!       --  Otherwise, the value contains more bits than the mantissa so do the
!       --  conversion in two steps.
  
!       else
!          declare
!             Mask : constant Uns := 2**(Uns'Size - Num'Machine_Mantissa) - 1;
!             Hi   : constant Uns := Val and not Mask;
!             Lo   : constant Uns := Val and Mask;
  
!          begin
!             if Hi = 0 then
!                D_Val := Double_Real.To_Double (Num (Lo));
!             else
!                D_Val := Double_Real.Quick_Two_Sum (Num (Hi), Num (Lo));
!             end if;
           end;
        end if;
  
        --  Compute the final value by applying the scaling, if any
  
!       if Val = 0 or else S = 0 then
           R_Val := Double_Real.To_Single (D_Val);
  
        else
--- 142,219 ----
           System.Float_Control.Reset;
        end if;
  
!       --  First convert the integer mantissa into a double real. The conversion
!       --  of each part is exact, given the precision limit we used above. Then,
!       --  if the contribution of the low part might be nonnull, scale the high
!       --  part appropriately and add the low part to the result.
  
!       if Val (2) = 0 then
!          D_Val := Double_Real.To_Double (Num (Val (1)));
!          S := Scale (1);
  
!       else
           declare
!             V1 : constant Num := Num (Val (1));
!             V2 : constant Num := Num (Val (2));
  
!             DS : Positive;
  
!          begin
!             DS := Scale (1) - Scale (2);
  
!             case Base is
!                --  If the base is a power of two, we use the efficient Scaling
!                --  attribute up to an amount worth a double mantissa.
  
!                when 2 | 4 | 8 | 16 =>
!                   declare
!                      L : constant Positive := Exact_Log2 (Base);
  
!                   begin
!                      if DS <= 2 * Num'Machine_Mantissa / L then
!                         DS := DS * L;
!                         D_Val :=
!                           Double_Real.Quick_Two_Sum (Num'Scaling (V1, DS), V2);
!                         S := Scale (2);
  
!                      else
!                         D_Val := Double_Real.To_Double (V1);
!                         S := Scale (1);
!                      end if;
!                   end;
  
!                --  If the base is 10, we also scale up to an amount worth a
!                --  double mantissa.
  
!                when 10 =>
!                   declare
!                      Powfive : constant array (0 .. Maxpow) of Double_T;
!                      pragma Import (Ada, Powfive);
!                      for Powfive'Address use Powfive_Address;
  
!                   begin
!                      if DS <= Maxpow then
!                         D_Val := Powfive (DS) * Num'Scaling (V1, DS) + V2;
!                         S := Scale (2);
  
!                      else
!                         D_Val := Double_Real.To_Double (V1);
!                         S := Scale (1);
!                      end if;
!                   end;
  
!                --  Inaccurate implementation for other bases
  
!                when others =>
!                   D_Val := Double_Real.To_Double (V1);
!                   S := Scale (1);
!             end case;
           end;
        end if;
  
        --  Compute the final value by applying the scaling, if any
  
!       if (Val (1) = 0 and then Val (2) = 0) or else S = 0 then
           R_Val := Double_Real.To_Single (D_Val);
  
        else
*************** package body System.Val_Real is
*** 218,284 ****
              --  attribute with an overflow check, if it is not 2, to catch
              --  ludicrous exponents that would result in an infinity or zero.
  
!             when 2 =>
!                R_Val := Num'Scaling (Double_Real.To_Single (D_Val), S);
! 
!             when 4 =>
!                if Integer'First / 2 <= S and then S <= Integer'Last / 2 then
!                   S := S * 2;
!                end if;
! 
!                R_Val := Num'Scaling (Double_Real.To_Single (D_Val), S);
! 
!             when 8 =>
!                if Integer'First / 3 <= S and then S <= Integer'Last / 3 then
!                   S := S * 3;
!                end if;
! 
!                R_Val := Num'Scaling (Double_Real.To_Single (D_Val), S);
! 
!             when 16 =>
!                if Integer'First / 4 <= S and then S <= Integer'Last / 4 then
!                   S := S * 4;
!                end if;
  
!                R_Val := Num'Scaling (Double_Real.To_Single (D_Val), S);
  
!             --  If the base is 10, use a double implementation for the sake
!             --  of accuracy, to be removed when exponentiation is improved.
  
!             --  When the exponent is positive, we can do the computation
!             --  directly because, if the exponentiation overflows, then
!             --  the final value overflows as well. But when the exponent
!             --  is negative, we may need to do it in two steps to avoid
!             --  an artificial underflow.
  
              when 10 =>
                 declare
!                   Powten : constant array (0 .. Maxpow) of Double_T;
!                   pragma Import (Ada, Powten);
!                   for Powten'Address use Powten_Address;
  
                 begin
                    if S > 0 then
                       if S <= Maxpow then
!                         D_Val := D_Val * Powten (S);
                       else
!                         D_Val := D_Val * Large_Powten (S);
                       end if;
  
                    else
-                      if S < -Maxexp then
-                         D_Val := D_Val / Large_Powten (Maxexp);
-                         S := S + Maxexp;
-                      end if;
- 
                       if S >= -Maxpow then
!                         D_Val := D_Val / Powten (-S);
                       else
!                         D_Val := D_Val / Large_Powten (-S);
                       end if;
                    end if;
  
!                   R_Val := Double_Real.To_Single (D_Val);
                 end;
  
              --  Implementation for other bases with exponentiation
--- 222,279 ----
              --  attribute with an overflow check, if it is not 2, to catch
              --  ludicrous exponents that would result in an infinity or zero.
  
!             when 2 | 4 | 8 | 16 =>
!                declare
!                   L : constant Positive := Exact_Log2 (Base);
  
!                begin
!                   if Integer'First / L <= S and then S <= Integer'Last / L then
!                      S := S * L;
!                   end if;
  
!                   R_Val := Num'Scaling (Double_Real.To_Single (D_Val), S);
!                end;
  
!             --  If the base is 10, we use a double implementation for the sake
!             --  of accuracy combining powers of 5 and scaling attribute. Using
!             --  this combination is better than using powers of 10 only because
!             --  the Large_Powfive function may overflow only if the final value
!             --  will also either overflow or underflow, thus making it possible
!             --  to use a single division for the case of negative powers of 10.
  
              when 10 =>
                 declare
!                   Powfive : constant array (0 .. Maxpow) of Double_T;
!                   pragma Import (Ada, Powfive);
!                   for Powfive'Address use Powfive_Address;
! 
!                   RS : Natural;
  
                 begin
                    if S > 0 then
                       if S <= Maxpow then
!                         D_Val := D_Val * Powfive (S);
                       else
!                         D_Val := D_Val * Large_Powfive (S);
                       end if;
  
                    else
                       if S >= -Maxpow then
!                         D_Val := D_Val / Powfive (-S);
! 
!                      --  For small types, typically IEEE Single, the trick
!                      --  described above does not fully work.
! 
!                      elsif not Is_Large_Type and then S < -Maxexp then
!                         D_Val := D_Val / Large_Powfive (-S, RS);
!                         S := S - RS;
! 
                       else
!                         D_Val := D_Val / Large_Powfive (-S);
                       end if;
                    end if;
  
!                   R_Val := Num'Scaling (Double_Real.To_Single (D_Val), S);
                 end;
  
              --  Implementation for other bases with exponentiation
*************** package body System.Val_Real is
*** 320,333 ****
        when Constraint_Error => Bad_Value (Str);
     end Integer_to_Real;
  
!    ------------------
!    -- Large_Powten --
!    ------------------
  
!    function Large_Powten (Exp : Natural) return Double_T is
!       Powten : constant array (0 .. Maxpow) of Double_T;
!       pragma Import (Ada, Powten);
!       for Powten'Address use Powten_Address;
  
        R : Double_T;
        E : Natural;
--- 315,340 ----
        when Constraint_Error => Bad_Value (Str);
     end Integer_to_Real;
  
!    -------------------
!    -- Large_Powfive --
!    -------------------
  
!    function Large_Powfive (Exp : Natural) return Double_T is
!       Powfive : constant array (0 .. Maxpow) of Double_T;
!       pragma Import (Ada, Powfive);
!       for Powfive'Address use Powfive_Address;
! 
!       Powfive_100 : constant Double_T;
!       pragma Import (Ada, Powfive_100);
!       for Powfive_100'Address use Powfive_100_Address;
! 
!       Powfive_200 : constant Double_T;
!       pragma Import (Ada, Powfive_200);
!       for Powfive_200'Address use Powfive_200_Address;
! 
!       Powfive_300 : constant Double_T;
!       pragma Import (Ada, Powfive_300);
!       for Powfive_300'Address use Powfive_300_Address;
  
        R : Double_T;
        E : Natural;
*************** package body System.Val_Real is
*** 335,352 ****
     begin
        pragma Assert (Exp > Maxpow);
  
!       R := Powten (Maxpow);
        E := Exp - Maxpow;
  
        while E > Maxpow loop
!          R := R * Powten (Maxpow);
           E := E - Maxpow;
        end loop;
  
!       R := R * Powten (E);
  
        return R;
!    end Large_Powten;
  
     ---------------
     -- Scan_Real --
--- 342,421 ----
     begin
        pragma Assert (Exp > Maxpow);
  
!       if Is_Large_Type and then Exp >= 300 then
!          R := Powfive_300;
!          E := Exp - 300;
! 
!       elsif Is_Large_Type and then Exp >= 200 then
!          R := Powfive_200;
!          E := Exp - 200;
! 
!       elsif Is_Large_Type and then Exp >= 100 then
!          R := Powfive_100;
!          E := Exp - 100;
! 
!       else
!          R := Powfive (Maxpow);
!          E := Exp - Maxpow;
!       end if;
! 
!       while E > Maxpow loop
!          R := R * Powfive (Maxpow);
!          E := E - Maxpow;
!       end loop;
! 
!       R := R * Powfive (E);
! 
!       return R;
!    end Large_Powfive;
! 
!    function Large_Powfive (Exp : Natural; S : out Natural) return Double_T is
!       Maxexp : constant Positive :=
!         (if    Num'Size = 32             then Maxexp32 (5)
!          elsif Num'Size = 64             then Maxexp64 (5)
!          elsif Num'Machine_Mantissa = 64 then Maxexp80 (5)
!          else  raise Program_Error);
!       --  Maximum exponent of 5 that can fit in Num
! 
!       Powfive : constant array (0 .. Maxpow) of Double_T;
!       pragma Import (Ada, Powfive);
!       for Powfive'Address use Powfive_Address;
! 
!       R : Double_T;
!       E : Natural;
! 
!    begin
!       pragma Assert (Exp > Maxexp);
! 
!       pragma Warnings (Off, "-gnatw.a");
!       pragma Assert (not Is_Large_Type);
!       pragma Warnings (On, "-gnatw.a");
! 
!       R := Powfive (Maxpow);
        E := Exp - Maxpow;
  
+       --  If the exponent is not too large, then scale down the result so that
+       --  its final value does not overflow but, if it's too large, then do not
+       --  bother doing it since overflow is just fine. The scaling factor is -3
+       --  for every power of 5 above the maximum, in other words division by 8.
+ 
+       if Exp - Maxexp <= Maxpow then
+          S := 3 * (Exp - Maxexp);
+          R.Hi := Num'Scaling (R.Hi, -S);
+          R.Lo := Num'Scaling (R.Lo, -S);
+       else
+          S := 0;
+       end if;
+ 
        while E > Maxpow loop
!          R := R * Powfive (Maxpow);
           E := E - Maxpow;
        end loop;
  
!       R := R * Powfive (E);
  
        return R;
!    end Large_Powfive;
  
     ---------------
     -- Scan_Real --
*************** package body System.Val_Real is
*** 358,372 ****
        Max : Integer) return Num
     is
        Base  : Unsigned;
!       Scale : Integer;
        Extra : Unsigned;
        Minus : Boolean;
!       Val   : Uns;
  
     begin
        Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scale, Extra, Minus);
  
!       return Integer_to_Real (Str, Val, Base, Scale, Extra, Minus);
     end Scan_Real;
  
     ----------------
--- 427,441 ----
        Max : Integer) return Num
     is
        Base  : Unsigned;
!       Scale : Impl.Scale_Array;
        Extra : Unsigned;
        Minus : Boolean;
!       Val   : Impl.Value_Array;
  
     begin
        Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scale, Extra, Minus);
  
!       return Integer_to_Real (Str, Val, Base, Scale, Minus);
     end Scan_Real;
  
     ----------------
*************** package body System.Val_Real is
*** 375,389 ****
  
     function Value_Real (Str : String) return Num is
        Base  : Unsigned;
!       Scale : Integer;
        Extra : Unsigned;
        Minus : Boolean;
!       Val   : Uns;
  
     begin
        Val := Impl.Value_Raw_Real (Str, Base, Scale, Extra, Minus);
  
!       return Integer_to_Real (Str, Val, Base, Scale, Extra, Minus);
     end Value_Real;
  
  end System.Val_Real;
--- 444,458 ----
  
     function Value_Real (Str : String) return Num is
        Base  : Unsigned;
!       Scale : Impl.Scale_Array;
        Extra : Unsigned;
        Minus : Boolean;
!       Val   : Impl.Value_Array;
  
     begin
        Val := Impl.Value_Raw_Real (Str, Base, Scale, Extra, Minus);
  
!       return Integer_to_Real (Str, Val, Base, Scale, Minus);
     end Value_Real;
  
  end System.Val_Real;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valrea.ads gcc-13.1.0/gcc/ada/libgnat/s-valrea.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valrea.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valrea.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** generic
*** 38,44 ****
  
     Maxpow : Positive;
  
!    Powten_Address : System.Address;
  
     type Uns is mod <>;
  
--- 38,50 ----
  
     Maxpow : Positive;
  
!    Powfive_Address : System.Address;
! 
!    Powfive_100_Address : System.Address;
! 
!    Powfive_200_Address : System.Address;
! 
!    Powfive_300_Address : System.Address;
  
     type Uns is mod <>;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valued.adb gcc-13.1.0/gcc/ada/libgnat/s-valued.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valued.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valued.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Value_D is
*** 38,44 ****
     pragma Assert (Int'Size <= Uns'Size);
     --  We need an unsigned type large enough to represent the mantissa
  
!    package Impl is new Value_R (Uns, 2**(Int'Size - 1), Round => False);
     --  We do not use the Extra digit for decimal fixed-point types
  
     function Integer_to_Decimal
--- 38,44 ----
     pragma Assert (Int'Size <= Uns'Size);
     --  We need an unsigned type large enough to represent the mantissa
  
!    package Impl is new Value_R (Uns, 1, 2**(Int'Size - 1), Round => False);
     --  We do not use the Extra digit for decimal fixed-point types
  
     function Integer_to_Decimal
*************** package body System.Value_D is
*** 229,244 ****
        Max   : Integer;
        Scale : Integer) return Int
     is
!       Base   : Unsigned;
!       ScaleB : Integer;
!       Extra  : Unsigned;
!       Minus  : Boolean;
!       Val    : Uns;
  
     begin
!       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, ScaleB, Extra, Minus);
  
!       return Integer_to_Decimal (Str, Val, Base, ScaleB, Minus, Scale);
     end Scan_Decimal;
  
     -------------------
--- 229,244 ----
        Max   : Integer;
        Scale : Integer) return Int
     is
!       Base  : Unsigned;
!       Scl   : Impl.Scale_Array;
!       Extra : Unsigned;
!       Minus : Boolean;
!       Val   : Impl.Value_Array;
  
     begin
!       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scl, Extra, Minus);
  
!       return Integer_to_Decimal (Str, Val (1), Base, Scl (1), Minus, Scale);
     end Scan_Decimal;
  
     -------------------
*************** package body System.Value_D is
*** 246,261 ****
     -------------------
  
     function Value_Decimal (Str : String; Scale : Integer) return Int is
!       Base   : Unsigned;
!       ScaleB : Integer;
!       Extra  : Unsigned;
!       Minus  : Boolean;
!       Val    : Uns;
  
     begin
!       Val := Impl.Value_Raw_Real (Str, Base, ScaleB, Extra, Minus);
  
!       return Integer_to_Decimal (Str, Val, Base, ScaleB, Minus, Scale);
     end Value_Decimal;
  
  end System.Value_D;
--- 246,261 ----
     -------------------
  
     function Value_Decimal (Str : String; Scale : Integer) return Int is
!       Base  : Unsigned;
!       Scl   : Impl.Scale_Array;
!       Extra : Unsigned;
!       Minus : Boolean;
!       Val   : Impl.Value_Array;
  
     begin
!       Val := Impl.Value_Raw_Real (Str, Base, Scl, Extra, Minus);
  
!       return Integer_to_Decimal (Str, Val (1), Base, Scl (1), Minus, Scale);
     end Value_Decimal;
  
  end System.Value_D;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valued.ads gcc-13.1.0/gcc/ada/libgnat/s-valued.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valued.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valued.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuef.adb gcc-13.1.0/gcc/ada/libgnat/s-valuef.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valuef.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuef.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Value_F is
*** 46,52 ****
     pragma Assert (Int'Size <= Uns'Size);
     --  We need an unsigned type large enough to represent the mantissa
  
!    package Impl is new Value_R (Uns, 2**(Int'Size - 1), Round => True);
     --  We use the Extra digit for ordinary fixed-point types
  
     function Integer_To_Fixed
--- 46,52 ----
     pragma Assert (Int'Size <= Uns'Size);
     --  We need an unsigned type large enough to represent the mantissa
  
!    package Impl is new Value_R (Uns, 1, 2**(Int'Size - 1), Round => True);
     --  We use the Extra digit for ordinary fixed-point types
  
     function Integer_To_Fixed
*************** package body System.Value_F is
*** 332,347 ****
        Num : Int;
        Den : Int) return Int
     is
!       Base   : Unsigned;
!       ScaleB : Integer;
!       Extra  : Unsigned;
!       Minus  : Boolean;
!       Val    : Uns;
  
     begin
!       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, ScaleB, Extra, Minus);
  
!       return Integer_To_Fixed (Str, Val, Base, ScaleB, Extra, Minus, Num, Den);
     end Scan_Fixed;
  
     -----------------
--- 332,348 ----
        Num : Int;
        Den : Int) return Int
     is
!       Base  : Unsigned;
!       Scl   : Impl.Scale_Array;
!       Extra : Unsigned;
!       Minus : Boolean;
!       Val   : Impl.Value_Array;
  
     begin
!       Val := Impl.Scan_Raw_Real (Str, Ptr, Max, Base, Scl, Extra, Minus);
  
!       return
!         Integer_To_Fixed (Str, Val (1), Base, Scl (1), Extra, Minus, Num, Den);
     end Scan_Fixed;
  
     -----------------
*************** package body System.Value_F is
*** 353,368 ****
        Num : Int;
        Den : Int) return Int
     is
!       Base   : Unsigned;
!       ScaleB : Integer;
!       Extra  : Unsigned;
!       Minus  : Boolean;
!       Val    : Uns;
  
     begin
!       Val := Impl.Value_Raw_Real (Str, Base, ScaleB, Extra, Minus);
  
!       return Integer_To_Fixed (Str, Val, Base, ScaleB, Extra, Minus, Num, Den);
     end Value_Fixed;
  
  end System.Value_F;
--- 354,370 ----
        Num : Int;
        Den : Int) return Int
     is
!       Base  : Unsigned;
!       Scl   : Impl.Scale_Array;
!       Extra : Unsigned;
!       Minus : Boolean;
!       Val   : Impl.Value_Array;
  
     begin
!       Val := Impl.Value_Raw_Real (Str, Base, Scl, Extra, Minus);
  
!       return
!         Integer_To_Fixed (Str, Val (1), Base, Scl (1), Extra, Minus, Num, Den);
     end Value_Fixed;
  
  end System.Value_F;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuef.ads gcc-13.1.0/gcc/ada/libgnat/s-valuef.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valuef.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuef.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuei.adb gcc-13.1.0/gcc/ada/libgnat/s-valuei.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valuei.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuei.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,38 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with System.Val_Util; use System.Val_Util;
- 
  package body System.Value_I is
  
     ------------------
     -- Scan_Integer --
     ------------------
--- 29,46 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  package body System.Value_I is
  
+    --  Ghost code, loop invariants and assertions in this unit are meant for
+    --  analysis only, not for run-time checking, as it would be too costly
+    --  otherwise. This is enforced by setting the assertion policy to Ignore.
+ 
+    pragma Assertion_Policy (Ghost              => Ignore,
+                             Loop_Invariant     => Ignore,
+                             Assert             => Ignore,
+                             Assert_And_Cut     => Ignore,
+                             Subprogram_Variant => Ignore);
+ 
     ------------------
     -- Scan_Integer --
     ------------------
*************** package body System.Value_I is
*** 43,71 ****
        Max : Integer;
        Res : out Int)
     is
        Uval : Uns;
        --  Unsigned result
  
!       Minus : Boolean := False;
        --  Set to True if minus sign is present, otherwise to False
  
!       Start : Positive;
        --  Saves location of first non-blank (not used in this case)
  
     begin
!       Scan_Sign (Str, Ptr, Max, Minus, Start);
  
        if Str (Ptr.all) not in '0' .. '9' then
!          Ptr.all := Start;
           Bad_Value (Str);
        end if;
  
        Scan_Raw_Unsigned (Str, Ptr, Max, Uval);
  
        --  Deal with overflow cases, and also with largest negative number
  
        if Uval > Uns (Int'Last) then
!          if Minus and then Uval = Uns (-(Int'First)) then
              Res := Int'First;
           else
              Bad_Value (Str);
--- 51,109 ----
        Max : Integer;
        Res : out Int)
     is
+       procedure Prove_Is_Int_Of_Uns
+         (Minus : Boolean;
+          Uval  : Uns;
+          Val   : Int)
+       with Ghost,
+         Pre => Spec.Uns_Is_Valid_Int (Minus, Uval)
+           and then
+             (if Minus and then Uval = Uns (Int'Last) + 1 then Val = Int'First
+              elsif Minus then Val = -(Int (Uval))
+              else Val = Int (Uval)),
+         Post => Spec.Is_Int_Of_Uns (Minus, Uval, Val);
+       --  Unfold the definition of Is_Int_Of_Uns
+ 
+       procedure Prove_Is_Int_Of_Uns
+         (Minus : Boolean;
+          Uval  : Uns;
+          Val   : Int)
+       is null;
+ 
        Uval : Uns;
        --  Unsigned result
  
!       Minus : Boolean;
        --  Set to True if minus sign is present, otherwise to False
  
!       Unused_Start : Positive;
        --  Saves location of first non-blank (not used in this case)
  
+       Non_Blank : constant Positive :=
+         First_Non_Space_Ghost (Str, Ptr.all, Max)
+       with Ghost;
+ 
+       Fst_Num   : constant Positive :=
+         (if Str (Non_Blank) in '+' | '-' then Non_Blank + 1
+          else Non_Blank)
+       with Ghost;
+ 
     begin
!       Scan_Sign (Str, Ptr, Max, Minus, Unused_Start);
  
        if Str (Ptr.all) not in '0' .. '9' then
!          Ptr.all := Unused_Start;
           Bad_Value (Str);
        end if;
  
        Scan_Raw_Unsigned (Str, Ptr, Max, Uval);
+       pragma Assert
+         (Uval = Uns_Params.Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Max));
  
        --  Deal with overflow cases, and also with largest negative number
  
        if Uval > Uns (Int'Last) then
!          if Minus and then Uval = Uns (Int'Last) + 1 then
              Res := Int'First;
           else
              Bad_Value (Str);
*************** package body System.Value_I is
*** 81,86 ****
--- 119,129 ----
        else
           Res := Int (Uval);
        end if;
+ 
+       Prove_Is_Int_Of_Uns
+         (Minus => Str (Non_Blank) = '-',
+          Uval  => Uval,
+          Val   => Res);
     end Scan_Integer;
  
     -------------------
*************** package body System.Value_I is
*** 96,102 ****
--- 139,153 ----
        if Str'Last = Positive'Last then
           declare
              subtype NT is String (1 .. Str'Length);
+             procedure Prove_Is_Integer_Ghost with
+               Ghost,
+               Pre  => Str'Length < Natural'Last
+               and then not Only_Space_Ghost (Str, Str'First, Str'Last)
+               and then Spec.Is_Integer_Ghost (Spec.Slide_To_1 (Str)),
+               Post => Spec.Is_Integer_Ghost (NT (Str));
+             procedure Prove_Is_Integer_Ghost is null;
           begin
+             Prove_Is_Integer_Ghost;
              return Value_Integer (NT (Str));
           end;
  
*************** package body System.Value_I is
*** 106,114 ****
           declare
              V : Int;
              P : aliased Integer := Str'First;
           begin
!             Scan_Integer (Str, P'Access, Str'Last, V);
              Scan_Trailing_Blanks (Str, P);
              return V;
           end;
        end if;
--- 157,187 ----
           declare
              V : Int;
              P : aliased Integer := Str'First;
+ 
+             Non_Blank : constant Positive := First_Non_Space_Ghost
+               (Str, Str'First, Str'Last)
+             with Ghost;
+ 
+             Fst_Num   : constant Positive :=
+               (if Str (Non_Blank) in '+' | '-' then Non_Blank + 1
+                else Non_Blank)
+             with Ghost;
           begin
! 
!             declare
!                P_Acc : constant not null access Integer := P'Access;
!             begin
!                Scan_Integer (Str, P_Acc, Str'Last, V);
!             end;
! 
!             pragma Assert
!               (P = Uns_Params.Raw_Unsigned_Last_Ghost
!                  (Str, Fst_Num, Str'Last));
! 
              Scan_Trailing_Blanks (Str, P);
+ 
+             pragma Assert
+               (Spec.Is_Value_Integer_Ghost (Spec.Slide_If_Necessary (Str), V));
              return V;
           end;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuei.ads gcc-13.1.0/gcc/ada/libgnat/s-valuei.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valuei.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuei.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,37 ****
--- 32,46 ----
  --  This package contains routines for scanning signed integer values for use
  --  in Text_IO.Integer_IO, and the Value attribute.
  
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
+ with System.Val_Util; use System.Val_Util;
+ with System.Value_I_Spec;
+ 
  generic
  
     type Int is range <>;
*************** generic
*** 44,57 ****
             Max : Integer;
             Res : out Uns);
  
  package System.Value_I is
     pragma Preelaborate;
  
     procedure Scan_Integer
       (Str : String;
        Ptr : not null access Integer;
        Max : Integer;
!       Res : out Int);
     --  This procedure scans the string starting at Str (Ptr.all) for a valid
     --  integer according to the syntax described in (RM 3.5(43)). The substring
     --  scanned extends no further than Str (Max). There are three cases for the
--- 53,111 ----
             Max : Integer;
             Res : out Uns);
  
+    --  Additional parameters for ghost subprograms used inside contracts
+ 
+    with package Uns_Params is new System.Val_Util.Uns_Params
+      (Uns => Uns, others => <>)
+    with Ghost;
+ 
  package System.Value_I is
     pragma Preelaborate;
+    use all type Uns_Params.Uns_Option;
+ 
+    package Spec is new System.Value_I_Spec (Int, Uns, Uns_Params);
  
     procedure Scan_Integer
       (Str : String;
        Ptr : not null access Integer;
        Max : Integer;
!       Res : out Int)
!    with
!      Pre  => Str'Last /= Positive'Last
!        --  Ptr.all .. Max is either an empty range, or a valid range in Str
!        and then (Ptr.all > Max
!                  or else (Ptr.all >= Str'First and then Max <= Str'Last))
!        and then not Only_Space_Ghost (Str, Ptr.all, Max)
!        and then
!          (declare
!             Non_Blank : constant Positive := First_Non_Space_Ghost
!               (Str, Ptr.all, Max);
!             Fst_Num   : constant Positive :=
!               (if Str (Non_Blank) in '+' | '-' then Non_Blank + 1
!                else Non_Blank);
!           begin
!             Uns_Params.Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Max))
!               and then Uns_Params.Raw_Unsigned_No_Overflow_Ghost
!                 (Str, Fst_Num, Max)
!               and then Spec.Uns_Is_Valid_Int
!                 (Minus => Str (Non_Blank) = '-',
!                  Uval  => Uns_Params.Scan_Raw_Unsigned_Ghost
!                    (Str, Fst_Num, Max))),
!     Post =>
!       (declare
!          Non_Blank : constant Positive := First_Non_Space_Ghost
!            (Str, Ptr.all'Old, Max);
!          Fst_Num   : constant Positive :=
!            (if Str (Non_Blank) in '+' | '-' then Non_Blank + 1
!             else Non_Blank);
!          Uval      : constant Uns :=
!             Uns_Params.Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Max);
!        begin
!            Spec.Is_Int_Of_Uns (Minus => Str (Non_Blank) = '-',
!                                Uval  => Uval,
!                                Val   => Res)
!            and then Ptr.all = Uns_Params.Raw_Unsigned_Last_Ghost
!              (Str, Fst_Num, Max));
     --  This procedure scans the string starting at Str (Ptr.all) for a valid
     --  integer according to the syntax described in (RM 3.5(43)). The substring
     --  scanned extends no further than Str (Max). There are three cases for the
*************** package System.Value_I is
*** 77,83 ****
     --  special case of an all-blank string, and Ptr is unchanged, and hence
     --  is greater than Max as required in this case.
  
!    function Value_Integer (Str : String) return Int;
     --  Used in computing X'Value (Str) where X is a signed integer type whose
     --  base range does not exceed the base range of Integer. Str is the string
     --  argument of the attribute. Constraint_Error is raised if the string is
--- 131,144 ----
     --  special case of an all-blank string, and Ptr is unchanged, and hence
     --  is greater than Max as required in this case.
  
!    function Value_Integer (Str : String) return Int
!    with
!      Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
!        and then Str'Length /= Positive'Last
!        and then Spec.Is_Integer_Ghost (Spec.Slide_If_Necessary (Str)),
!      Post => Spec.Is_Value_Integer_Ghost
!        (Spec.Slide_If_Necessary (Str), Value_Integer'Result),
!      Subprogram_Variant => (Decreases => Str'First);
     --  Used in computing X'Value (Str) where X is a signed integer type whose
     --  base range does not exceed the base range of Integer. Str is the string
     --  argument of the attribute. Constraint_Error is raised if the string is
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuen.adb gcc-13.1.0/gcc/ada/libgnat/s-valuen.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valuen.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuen.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuen.ads gcc-13.1.0/gcc/ada/libgnat/s-valuen.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valuen.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuen.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2021-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuer.adb gcc-13.1.0/gcc/ada/libgnat/s-valuer.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valuer.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuer.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Value_R is
*** 44,65 ****
  
     procedure Round_Extra
       (Digit : Char_As_Digit;
        Value : in out Uns;
        Scale : in out Integer;
!       Extra : in out Char_As_Digit;
!       Base  : Unsigned);
     --  Round the triplet (Value, Scale, Extra) according to Digit in Base
  
     procedure Scan_Decimal_Digits
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
-        Value          : in out Uns;
-        Scale          : in out Integer;
-        Extra          : in out Char_As_Digit;
-        Base_Violation : in out Boolean;
         Base           : Unsigned;
!        Base_Specified : Boolean);
     --  Scan the decimal part of a real (i.e. after decimal separator)
     --
     --  The string parsed is Str (Index .. Max) and after the call Index will
--- 44,66 ----
  
     procedure Round_Extra
       (Digit : Char_As_Digit;
+       Base  : Unsigned;
        Value : in out Uns;
        Scale : in out Integer;
!       Extra : in out Char_As_Digit);
     --  Round the triplet (Value, Scale, Extra) according to Digit in Base
  
     procedure Scan_Decimal_Digits
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
         Base           : Unsigned;
!        Base_Specified : Boolean;
!        Value          : in out Value_Array;
!        Scale          : in out Scale_Array;
!        N              : in out Positive;
!        Extra          : in out Char_As_Digit;
!        Base_Violation : in out Boolean);
     --  Scan the decimal part of a real (i.e. after decimal separator)
     --
     --  The string parsed is Str (Index .. Max) and after the call Index will
*************** package body System.Value_R is
*** 77,88 ****
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
-        Value          : out Uns;
-        Scale          : out Integer;
-        Extra          : out Char_As_Digit;
-        Base_Violation : in out Boolean;
         Base           : Unsigned;
!        Base_Specified : Boolean);
     --  Scan the integral part of a real (i.e. before decimal separator)
     --
     --  The string parsed is Str (Index .. Max) and after the call Index will
--- 78,90 ----
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
         Base           : Unsigned;
!        Base_Specified : Boolean;
!        Value          : out Value_Array;
!        Scale          : out Scale_Array;
!        N              : out Positive;
!        Extra          : out Char_As_Digit;
!        Base_Violation : in out Boolean);
     --  Scan the integral part of a real (i.e. before decimal separator)
     --
     --  The string parsed is Str (Index .. Max) and after the call Index will
*************** package body System.Value_R is
*** 123,132 ****
  
     procedure Round_Extra
       (Digit : Char_As_Digit;
        Value : in out Uns;
        Scale : in out Integer;
!       Extra : in out Char_As_Digit;
!       Base  : Unsigned)
     is
        pragma Assert (Base in 2 .. 16);
  
--- 125,134 ----
  
     procedure Round_Extra
       (Digit : Char_As_Digit;
+       Base  : Unsigned;
        Value : in out Uns;
        Scale : in out Integer;
!       Extra : in out Char_As_Digit)
     is
        pragma Assert (Base in 2 .. 16);
  
*************** package body System.Value_R is
*** 145,151 ****
                 Extra := Char_As_Digit (Value mod B);
                 Value := Value / B;
                 Scale := Scale + 1;
!                Round_Extra (Digit, Value, Scale, Extra, Base);
  
              else
                 Extra := 0;
--- 147,153 ----
                 Extra := Char_As_Digit (Value mod B);
                 Value := Value / B;
                 Scale := Scale + 1;
!                Round_Extra (Digit, Base, Value, Scale, Extra);
  
              else
                 Extra := 0;
*************** package body System.Value_R is
*** 166,177 ****
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
-        Value          : in out Uns;
-        Scale          : in out Integer;
-        Extra          : in out Char_As_Digit;
-        Base_Violation : in out Boolean;
         Base           : Unsigned;
!        Base_Specified : Boolean)
  
     is
        pragma Assert (Base in 2 .. 16);
--- 168,180 ----
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
         Base           : Unsigned;
!        Base_Specified : Boolean;
!        Value          : in out Value_Array;
!        Scale          : in out Scale_Array;
!        N              : in out Positive;
!        Extra          : in out Char_As_Digit;
!        Base_Violation : in out Boolean)
  
     is
        pragma Assert (Base in 2 .. 16);
*************** package body System.Value_R is
*** 184,190 ****
        UmaxB : constant Uns := Precision_Limit / Uns (Base);
        --  Numbers bigger than UmaxB overflow if multiplied by base
  
!       Precision_Limit_Reached : Boolean := False;
        --  Set to True if addition of a digit will cause Value to be superior
        --  to Precision_Limit.
  
--- 187,193 ----
        UmaxB : constant Uns := Precision_Limit / Uns (Base);
        --  Numbers bigger than UmaxB overflow if multiplied by base
  
!       Precision_Limit_Reached : Boolean;
        --  Set to True if addition of a digit will cause Value to be superior
        --  to Precision_Limit.
  
*************** package body System.Value_R is
*** 198,220 ****
        Temp : Uns;
        --  Temporary
  
!       Trailing_Zeros : Natural := 0;
        --  Number of trailing zeros at a given point
  
     begin
        --  If initial Scale is not 0 then it means that Precision_Limit was
        --  reached during scanning of the integral part.
  
!       if Scale > 0 then
           Precision_Limit_Reached := True;
        else
           Extra := 0;
        end if;
  
        if Round then
           Precision_Limit_Just_Reached := False;
        end if;
  
        --  The function precondition is that the first character is a valid
        --  digit.
  
--- 201,228 ----
        Temp : Uns;
        --  Temporary
  
!       Trailing_Zeros : Natural;
        --  Number of trailing zeros at a given point
  
     begin
        --  If initial Scale is not 0 then it means that Precision_Limit was
        --  reached during scanning of the integral part.
  
!       if Scale (Data_Index'Last) > 0 then
           Precision_Limit_Reached := True;
        else
           Extra := 0;
+          Precision_Limit_Reached := False;
        end if;
  
        if Round then
           Precision_Limit_Just_Reached := False;
        end if;
  
+       --  Initialize trailing zero counter
+ 
+       Trailing_Zeros := 0;
+ 
        --  The function precondition is that the first character is a valid
        --  digit.
  
*************** package body System.Value_R is
*** 242,248 ****
  
           if Precision_Limit_Reached then
              if Round and then Precision_Limit_Just_Reached then
!                Round_Extra (Digit, Value, Scale, Extra, Base);
                 Precision_Limit_Just_Reached := False;
              end if;
  
--- 250,256 ----
  
           if Precision_Limit_Reached then
              if Round and then Precision_Limit_Just_Reached then
!                Round_Extra (Digit, Base, Value (N), Scale (N), Extra);
                 Precision_Limit_Just_Reached := False;
              end if;
  
*************** package body System.Value_R is
*** 253,271 ****
                 Trailing_Zeros := Trailing_Zeros + 1;
  
              else
!                --  Handle accumulated zeros.
  
                 for J in 1 .. Trailing_Zeros loop
!                   if Value <= UmaxB then
!                      Value := Value * Uns (Base);
!                      Scale := Scale - 1;
  
                    else
                       Extra := 0;
                       Precision_Limit_Reached := True;
                       if Round and then J = Trailing_Zeros then
!                         Round_Extra (Digit, Value, Scale, Extra, Base);
                       end if;
                       exit;
                    end if;
                 end loop;
--- 261,284 ----
                 Trailing_Zeros := Trailing_Zeros + 1;
  
              else
!                --  Handle accumulated zeros
  
                 for J in 1 .. Trailing_Zeros loop
!                   if Value (N) <= UmaxB then
!                      Value (N) := Value (N) * Uns (Base);
!                      Scale (N) := Scale (N) - 1;
! 
!                   elsif Parts > 1 and then N < Data_Index'Last then
!                      N := N + 1;
!                      Scale (N) := Scale (N - 1) - 1;
  
                    else
                       Extra := 0;
                       Precision_Limit_Reached := True;
                       if Round and then J = Trailing_Zeros then
!                         Round_Extra (Digit, Base, Value (N), Scale (N), Extra);
                       end if;
+ 
                       exit;
                    end if;
                 end loop;
*************** package body System.Value_R is
*** 276,282 ****
  
                 --  Handle current non zero digit
  
!                Temp := Value * Uns (Base) + Uns (Digit);
  
                 --  Precision_Limit_Reached may have been set above
  
--- 289,295 ----
  
                 --  Handle current non zero digit
  
!                Temp := Value (N) * Uns (Base) + Uns (Digit);
  
                 --  Precision_Limit_Reached may have been set above
  
*************** package body System.Value_R is
*** 287,301 ****
                 --  account that Temp may wrap around when Precision_Limit is
                 --  equal to the largest integer.
  
!                elsif Value <= Umax
!                  or else (Value <= UmaxB
                             and then ((Precision_Limit < Uns'Last
                                         and then Temp <= Precision_Limit)
                                       or else (Precision_Limit = Uns'Last
                                                 and then Temp >= Uns (Base))))
                 then
!                   Value := Temp;
!                   Scale := Scale - 1;
  
                 else
                    Extra := Digit;
--- 300,319 ----
                 --  account that Temp may wrap around when Precision_Limit is
                 --  equal to the largest integer.
  
!                elsif Value (N) <= Umax
!                  or else (Value (N) <= UmaxB
                             and then ((Precision_Limit < Uns'Last
                                         and then Temp <= Precision_Limit)
                                       or else (Precision_Limit = Uns'Last
                                                 and then Temp >= Uns (Base))))
                 then
!                   Value (N) := Temp;
!                   Scale (N) := Scale (N) - 1;
! 
!                elsif Parts > 1 and then N < Data_Index'Last then
!                   N := N + 1;
!                   Value (N) := Uns (Digit);
!                   Scale (N) := Scale (N - 1) - 1;
  
                 else
                    Extra := Digit;
*************** package body System.Value_R is
*** 347,358 ****
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
-        Value          : out Uns;
-        Scale          : out Integer;
-        Extra          : out Char_As_Digit;
-        Base_Violation : in out Boolean;
         Base           : Unsigned;
!        Base_Specified : Boolean)
     is
        pragma Assert (Base in 2 .. 16);
  
--- 365,377 ----
        (Str            : String;
         Index          : in out Integer;
         Max            : Integer;
         Base           : Unsigned;
!        Base_Specified : Boolean;
!        Value          : out Value_Array;
!        Scale          : out Scale_Array;
!        N              : out Positive;
!        Extra          : out Char_As_Digit;
!        Base_Violation : in out Boolean)
     is
        pragma Assert (Base in 2 .. 16);
  
*************** package body System.Value_R is
*** 362,368 ****
        UmaxB : constant Uns := Precision_Limit / Uns (Base);
        --  Numbers bigger than UmaxB overflow if multiplied by base
  
!       Precision_Limit_Reached : Boolean := False;
        --  Set to True if addition of a digit will cause Value to be superior
        --  to Precision_Limit.
  
--- 381,387 ----
        UmaxB : constant Uns := Precision_Limit / Uns (Base);
        --  Numbers bigger than UmaxB overflow if multiplied by base
  
!       Precision_Limit_Reached : Boolean;
        --  Set to True if addition of a digit will cause Value to be superior
        --  to Precision_Limit.
  
*************** package body System.Value_R is
*** 377,388 ****
        --  Temporary
  
     begin
!       --  Initialize Value, Scale and Extra
  
!       Value := 0;
!       Scale := 0;
        Extra := 0;
  
        if Round then
           Precision_Limit_Just_Reached := False;
        end if;
--- 396,410 ----
        --  Temporary
  
     begin
!       --  Initialize N, Value, Scale and Extra
  
!       N := 1;
!       Value := (others => 0);
!       Scale := (others => 0);
        Extra := 0;
  
+       Precision_Limit_Reached := False;
+ 
        if Round then
           Precision_Limit_Just_Reached := False;
        end if;
*************** package body System.Value_R is
*** 415,442 ****
           --  should continue only to assess the validity of the string.
  
           if Precision_Limit_Reached then
!             Scale := Scale + 1;
  
              if Round and then Precision_Limit_Just_Reached then
!                Round_Extra (Digit, Value, Scale, Extra, Base);
                 Precision_Limit_Just_Reached := False;
              end if;
  
           else
!             Temp := Value * Uns (Base) + Uns (Digit);
  
              --  Check if Temp is larger than Precision_Limit, taking into
              --  account that Temp may wrap around when Precision_Limit is
              --  equal to the largest integer.
  
!             if Value <= Umax
!               or else (Value <= UmaxB
                          and then ((Precision_Limit < Uns'Last
                                      and then Temp <= Precision_Limit)
                                    or else (Precision_Limit = Uns'Last
                                              and then Temp >= Uns (Base))))
              then
!                Value := Temp;
  
              else
                 Extra := Digit;
--- 437,468 ----
           --  should continue only to assess the validity of the string.
  
           if Precision_Limit_Reached then
!             Scale (N) := Scale (N) + 1;
  
              if Round and then Precision_Limit_Just_Reached then
!                Round_Extra (Digit, Base, Value (N), Scale (N), Extra);
                 Precision_Limit_Just_Reached := False;
              end if;
  
           else
!             Temp := Value (N) * Uns (Base) + Uns (Digit);
  
              --  Check if Temp is larger than Precision_Limit, taking into
              --  account that Temp may wrap around when Precision_Limit is
              --  equal to the largest integer.
  
!             if Value (N) <= Umax
!               or else (Value (N) <= UmaxB
                          and then ((Precision_Limit < Uns'Last
                                      and then Temp <= Precision_Limit)
                                    or else (Precision_Limit = Uns'Last
                                              and then Temp >= Uns (Base))))
              then
!                Value (N) := Temp;
! 
!             elsif Parts > 1 and then N < Data_Index'Last then
!                N := N + 1;
!                Value (N) := Uns (Digit);
  
              else
                 Extra := Digit;
*************** package body System.Value_R is
*** 444,453 ****
                 if Round then
                    Precision_Limit_Just_Reached := True;
                 end if;
!                Scale := Scale + 1;
              end if;
           end if;
  
           --  Look for the next character
  
           Index := Index + 1;
--- 470,485 ----
                 if Round then
                    Precision_Limit_Just_Reached := True;
                 end if;
!                Scale (N) := Scale (N) + 1;
              end if;
           end if;
  
+          --  Every parsed digit also scales the previous parts
+ 
+          for J in 1 .. N - 1 loop
+             Scale (J) := Scale (J) + 1;
+          end loop;
+ 
           --  Look for the next character
  
           Index := Index + 1;
*************** package body System.Value_R is
*** 485,521 ****
        Ptr   : not null access Integer;
        Max   : Integer;
        Base  : out Unsigned;
!       Scale : out Integer;
        Extra : out Unsigned;
!       Minus : out Boolean) return Uns
     is
        pragma Assert (Max <= Str'Last);
  
        After_Point : Boolean;
        --  True if a decimal should be parsed
  
!       Base_Char : Character := ASCII.NUL;
!       --  Character used to set the base. If Nul this means that default
        --  base is used.
  
!       Base_Violation : Boolean := False;
        --  If True some digits where not in the base. The real is still scanned
        --  till the end even if an error will be raised.
  
        Index : Integer;
        --  Local copy of string pointer
  
        Start : Positive;
  
!       Value : Uns;
!       --  Mantissa as an Integer
! 
!       Expon : Integer;
  
     begin
        --  The default base is 10
  
!       Base := 10;
  
        --  We do not tolerate strings with Str'Last = Positive'Last
  
--- 517,560 ----
        Ptr   : not null access Integer;
        Max   : Integer;
        Base  : out Unsigned;
!       Scale : out Scale_Array;
        Extra : out Unsigned;
!       Minus : out Boolean) return Value_Array
     is
        pragma Assert (Max <= Str'Last);
  
        After_Point : Boolean;
        --  True if a decimal should be parsed
  
!       Base_Char : Character;
!       --  Character used to set the base. If it is Nul, this means that default
        --  base is used.
  
!       Base_Violation : Boolean;
        --  If True some digits where not in the base. The real is still scanned
        --  till the end even if an error will be raised.
  
+       N : Positive;
+       --  Index number of the current part
+ 
+       Expon : Integer;
+       --  Exponent as an integer
+ 
        Index : Integer;
        --  Local copy of string pointer
  
        Start : Positive;
+       --  Index of the first non-blank character
  
!       Value : Value_Array;
!       --  Mantissa as an array of integers
  
     begin
        --  The default base is 10
  
!       Base           := 10;
!       Base_Char      := ASCII.NUL;
!       Base_Violation := False;
  
        --  We do not tolerate strings with Str'Last = Positive'Last
  
*************** package body System.Value_R is
*** 543,550 ****
           --  part or the base to use.
  
           Scan_Integral_Digits
!            (Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
!             Base_Violation, Base, Base_Specified => False);
  
        --  A dot is allowed only if followed by a digit (RM 3.5(47))
  
--- 582,589 ----
           --  part or the base to use.
  
           Scan_Integral_Digits
!            (Str, Index, Max, Base, False, Value, Scale, N,
!             Char_As_Digit (Extra), Base_Violation);
  
        --  A dot is allowed only if followed by a digit (RM 3.5(47))
  
*************** package body System.Value_R is
*** 554,561 ****
        then
           After_Point := True;
           Index := Index + 1;
!          Value := 0;
!          Scale := 0;
           Extra := 0;
  
        else
--- 593,601 ----
        then
           After_Point := True;
           Index := Index + 1;
!          N := 1;
!          Value := (others => 0);
!          Scale := (others => 0);
           Extra := 0;
  
        else
*************** package body System.Value_R is
*** 571,578 ****
        then
           Base_Char := Str (Index);
  
!          if Value in 2 .. 16 then
!             Base := Unsigned (Value);
           else
              Base_Violation := True;
              Base := 16;
--- 611,618 ----
        then
           Base_Char := Str (Index);
  
!          if N = 1 and then Value (1) in 2 .. 16 then
!             Base := Unsigned (Value (1));
           else
              Base_Violation := True;
              Base := 16;
*************** package body System.Value_R is
*** 586,592 ****
           then
              After_Point := True;
              Index := Index + 1;
!             Value := 0;
           end if;
        end if;
  
--- 626,632 ----
           then
              After_Point := True;
              Index := Index + 1;
!             Value := (others => 0);
           end if;
        end if;
  
*************** package body System.Value_R is
*** 598,605 ****
           end if;
  
           Scan_Integral_Digits
!            (Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
!             Base_Violation, Base, Base_Specified => Base_Char /= ASCII.NUL);
        end if;
  
        --  Do we have a dot?
--- 638,645 ----
           end if;
  
           Scan_Integral_Digits
!            (Str, Index, Max, Base, Base_Char /= ASCII.NUL, Value, Scale,
!             N, Char_As_Digit (Extra), Base_Violation);
        end if;
  
        --  Do we have a dot?
*************** package body System.Value_R is
*** 625,632 ****
           pragma Assert (Index <= Max);
  
           Scan_Decimal_Digits
!            (Str, Index, Max, Value, Scale, Char_As_Digit (Extra),
!             Base_Violation, Base, Base_Specified => Base_Char /= ASCII.NUL);
        end if;
  
        --  If an explicit base was specified ensure that the delimiter is found
--- 665,672 ----
           pragma Assert (Index <= Max);
  
           Scan_Decimal_Digits
!            (Str, Index, Max, Base, Base_Char /= ASCII.NUL, Value, Scale,
!             N, Char_As_Digit (Extra), Base_Violation);
        end if;
  
        --  If an explicit base was specified ensure that the delimiter is found
*************** package body System.Value_R is
*** 645,651 ****
  
        Ptr.all := Index;
        Scan_Exponent (Str, Ptr, Max, Expon, Real => True);
!       Scale := Scale + Expon;
  
        --  Here is where we check for a bad based number
  
--- 685,704 ----
  
        Ptr.all := Index;
        Scan_Exponent (Str, Ptr, Max, Expon, Real => True);
! 
!       --  Handle very large exponents like Scan_Exponent
! 
!       if Expon < Integer'First / 10 or else Expon > Integer'Last / 10 then
!          Scale (1) := Expon;
!          for J in 2 .. Data_Index'Last loop
!             Value (J) := 0;
!          end loop;
! 
!       else
!          for J in Data_Index'Range loop
!             Scale (J) := Scale (J) + Expon;
!          end loop;
!       end if;
  
        --  Here is where we check for a bad based number
  
*************** package body System.Value_R is
*** 654,660 ****
        else
           return Value;
        end if;
- 
     end Scan_Raw_Real;
  
     --------------------
--- 707,712 ----
*************** package body System.Value_R is
*** 664,673 ****
     function Value_Raw_Real
       (Str   : String;
        Base  : out Unsigned;
!       Scale : out Integer;
        Extra : out Unsigned;
!       Minus : out Boolean) return Uns
     is
     begin
        --  We have to special case Str'Last = Positive'Last because the normal
        --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
--- 716,728 ----
     function Value_Raw_Real
       (Str   : String;
        Base  : out Unsigned;
!       Scale : out Scale_Array;
        Extra : out Unsigned;
!       Minus : out Boolean) return Value_Array
     is
+       P : aliased Integer;
+       V : Value_Array;
+ 
     begin
        --  We have to special case Str'Last = Positive'Last because the normal
        --  circuit ends up setting P to Str'Last + 1 which is out of bounds. We
*************** package body System.Value_R is
*** 679,698 ****
           begin
              return Value_Raw_Real (NT (Str), Base, Scale, Extra, Minus);
           end;
  
!       --  Normal case where Str'Last < Positive'Last
  
!       else
!          declare
!             V : Uns;
!             P : aliased Integer := Str'First;
!          begin
!             V := Scan_Raw_Real
!                    (Str, P'Access, Str'Last, Base, Scale, Extra, Minus);
!             Scan_Trailing_Blanks (Str, P);
!             return V;
!          end;
!       end if;
     end Value_Raw_Real;
  
  end System.Value_R;
--- 734,748 ----
           begin
              return Value_Raw_Real (NT (Str), Base, Scale, Extra, Minus);
           end;
+       end if;
  
!       --  Normal case
  
!       P := Str'First;
!       V := Scan_Raw_Real (Str, P'Access, Str'Last, Base, Scale, Extra, Minus);
!       Scan_Trailing_Blanks (Str, P);
! 
!       return V;
     end Value_Raw_Real;
  
  end System.Value_R;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuer.ads gcc-13.1.0/gcc/ada/libgnat/s-valuer.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valuer.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuer.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2020-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Unsigned_Types; use System.U
*** 37,58 ****
  generic
  
     type Uns is mod <>;
  
     Precision_Limit : Uns;
  
     Round : Boolean;
  
  package System.Value_R is
     pragma Preelaborate;
  
     function Scan_Raw_Real
       (Str   : String;
        Ptr   : not null access Integer;
        Max   : Integer;
        Base  : out Unsigned;
!       Scale : out Integer;
        Extra : out Unsigned;
!       Minus : out Boolean) return Uns;
     --  This function scans the string starting at Str (Ptr.all) for a valid
     --  real literal according to the syntax described in (RM 3.5(43)). The
     --  substring scanned extends no further than Str (Max). There are three
--- 37,73 ----
  generic
  
     type Uns is mod <>;
+    --  Modular type used for the value
+ 
+    Parts : Positive;
+    --  Number of Uns parts in the value
  
     Precision_Limit : Uns;
+    --  Precision limit for each part of the value
  
     Round : Boolean;
+    --  If Parts = 1, True if the extra digit must be rounded
  
  package System.Value_R is
     pragma Preelaborate;
  
+    subtype Data_Index is Positive range 1 .. Parts;
+    --  The type indexing the value
+ 
+    type Scale_Array is array (Data_Index) of Integer;
+    --  The scale for each part of the value
+ 
+    type Value_Array is array (Data_Index) of Uns;
+    --  The value split into parts
+ 
     function Scan_Raw_Real
       (Str   : String;
        Ptr   : not null access Integer;
        Max   : Integer;
        Base  : out Unsigned;
!       Scale : out Scale_Array;
        Extra : out Unsigned;
!       Minus : out Boolean) return Value_Array;
     --  This function scans the string starting at Str (Ptr.all) for a valid
     --  real literal according to the syntax described in (RM 3.5(43)). The
     --  substring scanned extends no further than Str (Max). There are three
*************** package System.Value_R is
*** 64,72 ****
     --  parameters are set; if Val is the result of the call, then the real
     --  represented by the literal is equal to
     --
!    --    (Val * Base + Extra) * (Base ** (Scale - 1))
     --
!    --  with the negative sign if Minus is true.
     --
     --  If no valid real is found, then Ptr.all points either to an initial
     --  non-blank character, or to Max + 1 if the field is all spaces and the
--- 79,91 ----
     --  parameters are set; if Val is the result of the call, then the real
     --  represented by the literal is equal to
     --
!    --    (Val (1) * Base + Extra) * (Base ** (Scale (1) - 1))
     --
!    --  when Parts = 1 and
!    --
!    --    Sum [Val (N) * (Base ** Scale (N)), N in 1 .. Parts]
!    --
!    --  when Parts > 1, with the negative sign if Minus is true.
     --
     --  If no valid real is found, then Ptr.all points either to an initial
     --  non-blank character, or to Max + 1 if the field is all spaces and the
*************** package System.Value_R is
*** 91,99 ****
     function Value_Raw_Real
       (Str   : String;
        Base  : out Unsigned;
!       Scale : out Integer;
        Extra : out Unsigned;
!       Minus : out Boolean) return Uns;
     --  Used in computing X'Value (Str) where X is a real type. Str is the
     --  string argument of the attribute. Constraint_Error is raised if the
     --  string is malformed.
--- 110,118 ----
     function Value_Raw_Real
       (Str   : String;
        Base  : out Unsigned;
!       Scale : out Scale_Array;
        Extra : out Unsigned;
!       Minus : out Boolean) return Value_Array;
     --  Used in computing X'Value (Str) where X is a real type. Str is the
     --  string argument of the attribute. Constraint_Error is raised if the
     --  string is malformed.
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valueu.adb gcc-13.1.0/gcc/ada/libgnat/s-valueu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valueu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valueu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body System.Value_U is
*** 41,49 ****
                              Assert_And_Cut     => Ignore,
                              Subprogram_Variant => Ignore);
  
     --  Local lemmas
  
!    procedure Lemma_Digit_Is_Before_Last
       (Str  : String;
        P    : Integer;
        From : Integer;
--- 41,52 ----
                              Assert_And_Cut     => Ignore,
                              Subprogram_Variant => Ignore);
  
+    use type Spec.Uns_Option;
+    use type Spec.Split_Value_Ghost;
+ 
     --  Local lemmas
  
!    procedure Lemma_Digit_Not_Last
       (Str  : String;
        P    : Integer;
        From : Integer;
*************** package body System.Value_U is
*** 54,239 ****
         and then To in From .. Str'Last
         and then Str (From) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
         and then P in From .. To
!        and then Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F',
!      Post => P /= Last_Hexa_Ghost (Str (From .. To)) + 1;
!    --  If the character at position P is a digit, P cannot be the position of
!    --  of the first non-digit in Str.
  
!    procedure Lemma_End_Of_Scan
       (Str  : String;
        From : Integer;
!       To   : Integer;
!       Base : Uns;
!       Acc  : Uns)
!    with Ghost,
!      Pre  => Str'Last /= Positive'Last and then From > To,
!      Post => Scan_Based_Number_Ghost (Str, From, To, Base, Acc) =
!        (False, Acc);
!    --  Unfold the definition of Scan_Based_Number_Ghost on an empty string
! 
!    procedure Lemma_Scan_Digit
!      (Str          : String;
!       P            : Integer;
!       Lst          : Integer;
!       Digit        : Uns;
!       Base         : Uns;
!       Old_Acc      : Uns;
!       Acc          : Uns;
!       Scan_Val     : Uns_Option;
!       Old_Overflow : Boolean;
!       Overflow     : Boolean)
!    with Ghost,
!      Pre  => Str'Last /= Positive'Last
!        and then Lst in Str'Range
!        and then P in Str'First .. Lst
!        and then Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!        and then Digit = Hexa_To_Unsigned_Ghost (Str (P))
!        and then Only_Hexa_Ghost (Str, P, Lst)
!        and then Base in 2 .. 16
!        and then (if Digit < Base and then Old_Acc <= Uns'Last / Base
!                  then Acc = Base * Old_Acc + Digit)
!        and then (if Digit >= Base
!                    or else Old_Acc > Uns'Last / Base
!                    or else (Old_Acc > (Uns'Last - Base + 1) / Base
!                             and then Acc < Uns'Last / Base)
!                  then Overflow
!                  else Overflow = Old_Overflow)
!        and then
!          (if not Old_Overflow then
!            Scan_Val = Scan_Based_Number_Ghost
!               (Str, P, Lst, Base, Old_Acc)),
!      Post =>
!         (if not Overflow then
!            Scan_Val = Scan_Based_Number_Ghost
!              (Str, P + 1, Lst, Base, Acc))
!        and then
!         (if Overflow then Old_Overflow or else Scan_Val.Overflow);
!    --  Unfold the definition of Scan_Based_Number_Ghost when the string starts
!    --  with a digit.
! 
!    procedure Lemma_Scan_Underscore
!      (Str      : String;
!       P        : Integer;
!       From     : Integer;
!       To       : Integer;
!       Lst      : Integer;
!       Base     : Uns;
!       Acc      : Uns;
!       Scan_Val : Uns_Option;
!       Overflow : Boolean;
!       Ext      : Boolean)
     with Ghost,
       Pre  => Str'Last /= Positive'Last
         and then From in Str'Range
         and then To in From .. Str'Last
!        and then Lst <= To
!        and then P in From .. Lst + 1
!        and then P <= To
!        and then
!          (if Ext then
!             Is_Based_Format_Ghost (Str (From .. To))
!             and then Lst = Last_Hexa_Ghost (Str (From .. To))
!           else Is_Natural_Format_Ghost (Str (From .. To))
!             and then Lst = Last_Number_Ghost (Str (From .. To)))
         and then Str (P) = '_'
!        and then
!          (if not Overflow then
!            Scan_Val = Scan_Based_Number_Ghost (Str, P, Lst, Base, Acc)),
!      Post => P + 1 <= Lst
!        and then
!          (if Ext then Str (P + 1) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!           else Str (P + 1) in '0' .. '9')
!        and then
!          (if not Overflow then
!            Scan_Val = Scan_Based_Number_Ghost (Str, P + 1, Lst, Base, Acc));
!    --  Unfold the definition of Scan_Based_Number_Ghost when the string starts
!    --  with an underscore.
  
     -----------------------------
     -- Local lemma null bodies --
     -----------------------------
  
!    procedure Lemma_Digit_Is_Before_Last
       (Str  : String;
        P    : Integer;
        From : Integer;
        To   : Integer)
     is null;
  
!    procedure Lemma_End_Of_Scan
!      (Str          : String;
!       From         : Integer;
!       To           : Integer;
!       Base         : Uns;
!       Acc          : Uns)
!    is null;
! 
!    procedure Lemma_Scan_Underscore
!      (Str      : String;
!       P        : Integer;
!       From     : Integer;
!       To       : Integer;
!       Lst      : Integer;
!       Base     : Uns;
!       Acc      : Uns;
!       Scan_Val : Uns_Option;
!       Overflow : Boolean;
!       Ext      : Boolean)
     is null;
  
-    ---------------------
-    -- Last_Hexa_Ghost --
-    ---------------------
- 
-    function Last_Hexa_Ghost (Str : String) return Positive is
-    begin
-       for J in Str'Range loop
-          if Str (J) not in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' then
-             return J - 1;
-          end if;
- 
-          pragma Loop_Invariant
-            (for all K in Str'First .. J =>
-               Str (K) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_');
-       end loop;
- 
-       return Str'Last;
-    end Last_Hexa_Ghost;
- 
-    ----------------------
-    -- Lemma_Scan_Digit --
-    ----------------------
- 
-    procedure Lemma_Scan_Digit
-      (Str          : String;
-       P            : Integer;
-       Lst          : Integer;
-       Digit        : Uns;
-       Base         : Uns;
-       Old_Acc      : Uns;
-       Acc          : Uns;
-       Scan_Val     : Uns_Option;
-       Old_Overflow : Boolean;
-       Overflow     : Boolean)
-    is
-       pragma Unreferenced (Str, P, Lst, Scan_Val, Overflow, Old_Overflow);
-    begin
-       if Digit >= Base then
-          null;
- 
-       elsif Old_Acc <= (Uns'Last - Base + 1) / Base then
-          pragma Assert (not Scan_Overflows_Ghost (Digit, Base, Old_Acc));
- 
-       elsif Old_Acc > Uns'Last / Base then
-          null;
- 
-       else
-          pragma Assert
-            ((Acc < Uns'Last / Base) =
-               Scan_Overflows_Ghost (Digit, Base, Old_Acc));
-       end if;
-    end Lemma_Scan_Digit;
- 
     -----------------------
     -- Scan_Raw_Unsigned --
     -----------------------
--- 57,103 ----
         and then To in From .. Str'Last
         and then Str (From) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
         and then P in From .. To
!        and then P <= Spec.Last_Hexa_Ghost (Str (From .. To)) + 1
!        and then Spec.Is_Based_Format_Ghost (Str (From .. To)),
!      Post =>
!        (if Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!         then P <= Spec.Last_Hexa_Ghost (Str (From .. To)));
  
!    procedure Lemma_Underscore_Not_Last
       (Str  : String;
+       P    : Integer;
        From : Integer;
!       To   : Integer)
     with Ghost,
       Pre  => Str'Last /= Positive'Last
         and then From in Str'Range
         and then To in From .. Str'Last
!        and then Str (From) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!        and then P in From .. To
         and then Str (P) = '_'
!        and then P <= Spec.Last_Hexa_Ghost (Str (From .. To)) + 1
!        and then Spec.Is_Based_Format_Ghost (Str (From .. To)),
!      Post => P + 1 <= Spec.Last_Hexa_Ghost (Str (From .. To))
!        and then Str (P + 1) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
  
     -----------------------------
     -- Local lemma null bodies --
     -----------------------------
  
!    procedure Lemma_Digit_Not_Last
       (Str  : String;
        P    : Integer;
        From : Integer;
        To   : Integer)
     is null;
  
!    procedure Lemma_Underscore_Not_Last
!      (Str  : String;
!       P    : Integer;
!       From : Integer;
!       To   : Integer)
     is null;
  
     -----------------------
     -- Scan_Raw_Unsigned --
     -----------------------
*************** package body System.Value_U is
*** 270,277 ****
        Last_Num_Init : constant Integer :=
          Last_Number_Ghost (Str (Ptr.all .. Max))
        with Ghost;
!       Init_Val      : constant Uns_Option :=
!         Scan_Based_Number_Ghost (Str, Ptr.all, Last_Num_Init)
        with Ghost;
        Starts_As_Based : constant Boolean :=
          Last_Num_Init < Max - 1
--- 134,141 ----
        Last_Num_Init : constant Integer :=
          Last_Number_Ghost (Str (Ptr.all .. Max))
        with Ghost;
!       Init_Val      : constant Spec.Uns_Option :=
!         Spec.Scan_Based_Number_Ghost (Str, Ptr.all, Last_Num_Init)
        with Ghost;
        Starts_As_Based : constant Boolean :=
          Last_Num_Init < Max - 1
*************** package body System.Value_U is
*** 281,287 ****
        with Ghost;
        Last_Num_Based  : constant Integer :=
          (if Starts_As_Based
!          then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. Max))
           else Last_Num_Init)
        with Ghost;
        Is_Based        : constant Boolean :=
--- 145,151 ----
        with Ghost;
        Last_Num_Based  : constant Integer :=
          (if Starts_As_Based
!          then Spec.Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. Max))
           else Last_Num_Init)
        with Ghost;
        Is_Based        : constant Boolean :=
*************** package body System.Value_U is
*** 289,297 ****
          and then Last_Num_Based < Max
          and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1)
        with Ghost;
!       Based_Val       : constant Uns_Option :=
          (if Starts_As_Based and then not Init_Val.Overflow
!          then Scan_Based_Number_Ghost
             (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value)
           else Init_Val)
        with Ghost;
--- 153,161 ----
          and then Last_Num_Based < Max
          and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1)
        with Ghost;
!       Based_Val       : constant Spec.Uns_Option :=
          (if Starts_As_Based and then not Init_Val.Overflow
!          then Spec.Scan_Based_Number_Ghost
             (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value)
           else Init_Val)
        with Ghost;
*************** package body System.Value_U is
*** 308,313 ****
--- 172,178 ----
        end if;
  
        P := Ptr.all;
+       Spec.Lemma_Scan_Based_Number_Ghost_Step (Str, P, Last_Num_Init);
        Uval := Character'Pos (Str (P)) - Character'Pos ('0');
        P := P + 1;
  
*************** package body System.Value_U is
*** 321,329 ****
           Umax10 : constant Uns := Uns'Last / 10;
           --  Numbers bigger than Umax10 overflow if multiplied by 10
  
-          Old_Uval     : Uns with Ghost;
-          Old_Overflow : Boolean with Ghost;
- 
        begin
           --  Loop through decimal digits
           loop
--- 186,191 ----
*************** package body System.Value_U is
*** 332,338 ****
                (if Overflow then Init_Val.Overflow);
              pragma Loop_Invariant
                (if not Overflow
!                then Init_Val = Scan_Based_Number_Ghost
                   (Str, P, Last_Num_Init, Acc => Uval));
  
              exit when P > Max;
--- 194,200 ----
                (if Overflow then Init_Val.Overflow);
              pragma Loop_Invariant
                (if not Overflow
!                then Init_Val = Spec.Scan_Based_Number_Ghost
                   (Str, P, Last_Num_Init, Acc => Uval));
  
              exit when P > Max;
*************** package body System.Value_U is
*** 343,351 ****
  
              if Digit > 9 then
                 if Str (P) = '_' then
!                   Lemma_Scan_Underscore
!                     (Str, P, Ptr_Old, Max, Last_Num_Init, 10, Uval,
!                      Init_Val, Overflow, False);
                    Scan_Underscore (Str, P, Ptr, Max, False);
                 else
                    exit;
--- 205,212 ----
  
              if Digit > 9 then
                 if Str (P) = '_' then
!                   Spec.Lemma_Scan_Based_Number_Ghost_Underscore
!                     (Str, P, Last_Num_Init, Acc => Uval);
                    Scan_Underscore (Str, P, Ptr, Max, False);
                 else
                    exit;
*************** package body System.Value_U is
*** 354,364 ****
              --  Accumulate result, checking for overflow
  
              else
!                Old_Uval := Uval;
!                Old_Overflow := Overflow;
  
                 if Uval <= Umax then
                    Uval := 10 * Uval + Digit;
  
                 elsif Uval > Umax10 then
                    Overflow := True;
--- 215,233 ----
              --  Accumulate result, checking for overflow
  
              else
!                Spec.Lemma_Scan_Based_Number_Ghost_Step
!                  (Str, P, Last_Num_Init, Acc => Uval);
!                Spec.Lemma_Scan_Based_Number_Ghost_Overflow
!                  (Str, P, Last_Num_Init, Acc => Uval);
  
                 if Uval <= Umax then
+                   pragma Assert
+                     (Spec.Hexa_To_Unsigned_Ghost (Str (P)) = Digit);
                    Uval := 10 * Uval + Digit;
+                   pragma Assert
+                     (if not Overflow
+                      then Init_Val = Spec.Scan_Based_Number_Ghost
+                        (Str, P + 1, Last_Num_Init, Acc => Uval));
  
                 elsif Uval > Umax10 then
                    Overflow := True;
*************** package body System.Value_U is
*** 369,385 ****
                    if Uval < Umax10 then
                       Overflow := True;
                    end if;
                 end if;
  
-                Lemma_Scan_Digit
-                  (Str, P, Last_Num_Init, Digit, 10, Old_Uval, Uval, Init_Val,
-                   Old_Overflow, Overflow);
- 
                 P := P + 1;
              end if;
           end loop;
!          pragma Assert (P = Last_Num_Init + 1);
!          pragma Assert (Init_Val.Overflow = Overflow);
        end;
  
        pragma Assert_And_Cut
--- 238,254 ----
                    if Uval < Umax10 then
                       Overflow := True;
                    end if;
+                   pragma Assert
+                     (if not Overflow
+                      then Init_Val = Spec.Scan_Based_Number_Ghost
+                        (Str, P + 1, Last_Num_Init, Acc => Uval));
                 end if;
  
                 P := P + 1;
              end if;
           end loop;
!          Spec.Lemma_Scan_Based_Number_Ghost_Base
!             (Str, P, Last_Num_Init, Acc => Uval);
        end;
  
        pragma Assert_And_Cut
*************** package body System.Value_U is
*** 417,434 ****
              UmaxB : constant Uns := Uns'Last / Base;
              --  Numbers bigger than UmaxB overflow if multiplied by base
  
-             Old_Uval     : Uns with Ghost;
-             Old_Overflow : Boolean with Ghost;
- 
           begin
              pragma Assert
                (if Str (P) in '0' .. '9' | 'A' .. 'F' | 'a' .. 'f'
!                then Is_Based_Format_Ghost (Str (P .. Max)));
  
              --  Loop to scan out based integer value
  
              loop
- 
                 --  We require a digit at this stage
  
                 if Str (P) in '0' .. '9' then
--- 286,299 ----
              UmaxB : constant Uns := Uns'Last / Base;
              --  Numbers bigger than UmaxB overflow if multiplied by base
  
           begin
              pragma Assert
                (if Str (P) in '0' .. '9' | 'A' .. 'F' | 'a' .. 'f'
!                then Spec.Is_Based_Format_Ghost (Str (P .. Max)));
  
              --  Loop to scan out based integer value
  
              loop
                 --  We require a digit at this stage
  
                 if Str (P) in '0' .. '9' then
*************** package body System.Value_U is
*** 448,479 ****
                 --  already stored in Ptr.all.
  
                 else
                    Uval := Base;
                    Base := 10;
                    pragma Assert (Ptr.all = Last_Num_Init + 1);
                    pragma Assert (if not Overflow then Uval = Init_Val.Value);
                    exit;
                 end if;
  
-                Lemma_Digit_Is_Before_Last (Str, P, Last_Num_Init + 2, Max);
- 
                 pragma Loop_Invariant (P in P'Loop_Entry .. Last_Num_Based);
                 pragma Loop_Invariant
                   (Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!                   and then Digit = Hexa_To_Unsigned_Ghost (Str (P)));
                 pragma Loop_Invariant
                   (if Overflow'Loop_Entry then Overflow);
                 pragma Loop_Invariant
                   (if Overflow then
!                     Overflow'Loop_Entry or else Based_Val.Overflow);
                 pragma Loop_Invariant
                   (if not Overflow
!                   then Based_Val = Scan_Based_Number_Ghost
                      (Str, P, Last_Num_Based, Base, Uval));
                 pragma Loop_Invariant (Ptr.all = Last_Num_Init + 1);
  
!                Old_Uval := Uval;
!                Old_Overflow := Overflow;
  
                 --  If digit is too large, just signal overflow and continue.
                 --  The idea here is to keep scanning as long as the input is
--- 313,349 ----
                 --  already stored in Ptr.all.
  
                 else
+                   Spec.Lemma_Scan_Based_Number_Ghost_Base
+                     (Str, P, Last_Num_Based, Base, Uval);
                    Uval := Base;
                    Base := 10;
                    pragma Assert (Ptr.all = Last_Num_Init + 1);
+                   pragma Assert
+                     (if Starts_As_Based then P = Last_Num_Based + 1);
+                   pragma Assert (not Is_Based);
                    pragma Assert (if not Overflow then Uval = Init_Val.Value);
                    exit;
                 end if;
  
                 pragma Loop_Invariant (P in P'Loop_Entry .. Last_Num_Based);
                 pragma Loop_Invariant
                   (Str (P) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!                   and then Digit = Spec.Hexa_To_Unsigned_Ghost (Str (P)));
                 pragma Loop_Invariant
                   (if Overflow'Loop_Entry then Overflow);
                 pragma Loop_Invariant
                   (if Overflow then
!                     (Overflow'Loop_Entry or else Based_Val.Overflow));
                 pragma Loop_Invariant
                   (if not Overflow
!                   then Based_Val = Spec.Scan_Based_Number_Ghost
                      (Str, P, Last_Num_Based, Base, Uval));
                 pragma Loop_Invariant (Ptr.all = Last_Num_Init + 1);
  
!                Spec.Lemma_Scan_Based_Number_Ghost_Step
!                  (Str, P, Last_Num_Based, Base, Uval);
!                Spec.Lemma_Scan_Based_Number_Ghost_Overflow
!                  (Str, P, Last_Num_Based, Base, Uval);
  
                 --  If digit is too large, just signal overflow and continue.
                 --  The idea here is to keep scanning as long as the input is
*************** package body System.Value_U is
*** 486,491 ****
--- 356,365 ----
  
                 elsif Uval <= Umax then
                    Uval := Base * Uval + Digit;
+                   pragma Assert
+                     (if not Overflow
+                      then Based_Val = Spec.Scan_Based_Number_Ghost
+                        (Str, P + 1, Last_Num_Based, Base, Uval));
  
                 elsif Uval > UmaxB then
                    Overflow := True;
*************** package body System.Value_U is
*** 496,507 ****
                    if Uval < UmaxB then
                       Overflow := True;
                    end if;
                 end if;
  
-                Lemma_Scan_Digit
-                  (Str, P, Last_Num_Based, Digit, Base, Old_Uval, Uval,
-                   Based_Val, Old_Overflow, Overflow);
- 
                 --  If at end of string with no base char, not a based number
                 --  but we signal Constraint_Error and set the pointer past
                 --  the end of the field, since this is what the ACVC tests
--- 370,381 ----
                    if Uval < UmaxB then
                       Overflow := True;
                    end if;
+                   pragma Assert
+                     (if not Overflow
+                      then Based_Val = Spec.Scan_Based_Number_Ghost
+                        (Str, P + 1, Last_Num_Based, Base, Uval));
                 end if;
  
                 --  If at end of string with no base char, not a based number
                 --  but we signal Constraint_Error and set the pointer past
                 --  the end of the field, since this is what the ACVC tests
*************** package body System.Value_U is
*** 518,560 ****
  
                 if Str (P) = Base_Char then
                    Ptr.all := P + 1;
                    pragma Assert (Ptr.all = Last_Num_Based + 2);
!                   Lemma_End_Of_Scan (Str, P, Last_Num_Based, Base, Uval);
!                   pragma Assert (if not Overflow then Uval = Based_Val.Value);
                    exit;
  
                 --  Deal with underscore
  
                 elsif Str (P) = '_' then
!                   Lemma_Scan_Underscore
!                     (Str, P, Last_Num_Init + 2, Max, Last_Num_Based, Base,
!                      Uval, Based_Val, Overflow, True);
                    Scan_Underscore (Str, P, Ptr, Max, True);
                    pragma Assert
                      (if not Overflow
!                      then Based_Val = Scan_Based_Number_Ghost
                         (Str, P, Last_Num_Based, Base, Uval));
                 end if;
              end loop;
           end;
           pragma Assert
             (if Starts_As_Based then P = Last_Num_Based + 1
              else P = Last_Num_Init + 2);
           pragma Assert
             (Overflow =
                (Init_Val.Overflow
                 or else Init_Val.Value not in 2 .. 16
                 or else (Starts_As_Based and then Based_Val.Overflow)));
        end if;
  
        pragma Assert_And_Cut
!         (Overflow =
!            (Init_Val.Overflow
!             or else
!               (Last_Num_Init < Max - 1
!                and then Str (Last_Num_Init + 1) in '#' | ':'
!                and then Init_Val.Value not in 2 .. 16)
!             or else (Starts_As_Based and then Based_Val.Overflow))
           and then
             (if not Overflow then
                  (if Is_Based then Uval = Based_Val.Value
--- 392,445 ----
  
                 if Str (P) = Base_Char then
                    Ptr.all := P + 1;
+                   pragma Assert (P = Last_Num_Based + 1);
                    pragma Assert (Ptr.all = Last_Num_Based + 2);
!                   pragma Assert (Starts_As_Based);
!                   pragma Assert (Last_Num_Based < Max);
!                   pragma Assert (Str (Last_Num_Based + 1) = Base_Char);
!                   pragma Assert (Base_Char = Str (Last_Num_Init + 1));
!                   pragma Assert (Is_Based);
!                   Spec.Lemma_Scan_Based_Number_Ghost_Base
!                     (Str, P, Last_Num_Based, Base, Uval);
                    exit;
  
                 --  Deal with underscore
  
                 elsif Str (P) = '_' then
!                   Lemma_Underscore_Not_Last (Str, P, Last_Num_Init + 2, Max);
!                   Spec.Lemma_Scan_Based_Number_Ghost_Underscore
!                     (Str, P, Last_Num_Based, Base, Uval);
                    Scan_Underscore (Str, P, Ptr, Max, True);
                    pragma Assert
                      (if not Overflow
!                      then Based_Val = Spec.Scan_Based_Number_Ghost
                         (Str, P, Last_Num_Based, Base, Uval));
+                   pragma Assert (Str (P) /= '_');
+                   pragma Assert (Str (P) /= Base_Char);
                 end if;
+ 
+                Lemma_Digit_Not_Last (Str, P, Last_Num_Init + 2, Max);
+                pragma Assert (Str (P) /= '_');
+                pragma Assert (Str (P) /= Base_Char);
              end loop;
           end;
           pragma Assert
             (if Starts_As_Based then P = Last_Num_Based + 1
              else P = Last_Num_Init + 2);
           pragma Assert
+            (Last_Num_Init < Max - 1
+             and then Str (Last_Num_Init + 1) in '#' | ':');
+          pragma Assert
             (Overflow =
                (Init_Val.Overflow
                 or else Init_Val.Value not in 2 .. 16
                 or else (Starts_As_Based and then Based_Val.Overflow)));
+          pragma Assert
+            (Overflow /= Spec.Scan_Split_No_Overflow_Ghost (Str, Ptr_Old, Max));
        end if;
  
        pragma Assert_And_Cut
!         (Overflow /= Spec.Scan_Split_No_Overflow_Ghost (Str, Ptr_Old, Max)
           and then
             (if not Overflow then
                  (if Is_Based then Uval = Based_Val.Value
*************** package body System.Value_U is
*** 571,578 ****
        Scan_Exponent (Str, Ptr, Max, Expon);
  
        pragma Assert
!         (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. Max))
!          then Expon = Scan_Exponent_Ghost (Str (First_Exp .. Max)));
  
        if Expon /= 0 and then Uval /= 0 then
  
--- 456,466 ----
        Scan_Exponent (Str, Ptr, Max, Expon);
  
        pragma Assert
!         (Ptr.all = Spec.Raw_Unsigned_Last_Ghost (Str, Ptr_Old, Max));
!       pragma Assert
!         (if not Overflow
!          then Spec.Scan_Split_Value_Ghost (Str, Ptr_Old, Max) =
!            (Uval, Base, Expon));
  
        if Expon /= 0 and then Uval /= 0 then
  
*************** package body System.Value_U is
*** 584,591 ****
              UmaxB : constant Uns := Uns'Last / Base;
              --  Numbers bigger than UmaxB overflow if multiplied by base
  
!             Res_Val : constant Uns_Option :=
!               Exponent_Unsigned_Ghost (Uval, Expon, Base)
              with Ghost;
           begin
              for J in 1 .. Expon loop
--- 472,479 ----
              UmaxB : constant Uns := Uns'Last / Base;
              --  Numbers bigger than UmaxB overflow if multiplied by base
  
!             Res_Val : constant Spec.Uns_Option :=
!               Spec.Exponent_Unsigned_Ghost (Uval, Expon, Base)
              with Ghost;
           begin
              for J in 1 .. Expon loop
*************** package body System.Value_U is
*** 594,641 ****
                 pragma Loop_Invariant
                   (if Overflow
                    then Overflow'Loop_Entry or else Res_Val.Overflow);
                 pragma Loop_Invariant
                   (if not Overflow
!                   then Res_Val = Exponent_Unsigned_Ghost
                      (Uval, Expon - J + 1, Base));
  
                 pragma Assert
!                  ((Uval > UmaxB) = Scan_Overflows_Ghost (0, Base, Uval));
  
                 if Uval > UmaxB then
                    Overflow := True;
                    exit;
                 end if;
  
                 Uval := Uval * Base;
              end loop;
              pragma Assert
!               (Overflow = (Init_Val.Overflow
!                or else
!                  (Last_Num_Init < Max - 1
!                   and then Str (Last_Num_Init + 1) in '#' | ':'
!                   and then Init_Val.Value not in 2 .. 16)
!                or else (Starts_As_Based and then Based_Val.Overflow)
!                or else Res_Val.Overflow));
!             pragma Assert
!               (Overflow = Raw_Unsigned_Overflows_Ghost (Str, Ptr_Old, Max));
!             pragma Assert
!               (Exponent_Unsigned_Ghost (Uval, 0, Base) = (False, Uval));
!             pragma Assert
!               (if not Overflow then Uval = Res_Val.Value);
!             pragma Assert
!               (if not Overflow then
!                   Uval = Scan_Raw_Unsigned_Ghost (Str, Ptr_Old, Max));
           end;
        end if;
        pragma Assert
          (if Expon = 0 or else Uval = 0 then
!             Exponent_Unsigned_Ghost (Uval, Expon, Base) = (False, Uval));
        pragma Assert
!         (Overflow = Raw_Unsigned_Overflows_Ghost (Str, Ptr_Old, Max));
        pragma Assert
          (if not Overflow then
!             Uval = Scan_Raw_Unsigned_Ghost (Str, Ptr_Old, Max));
  
        --  Return result, dealing with overflow
  
--- 482,526 ----
                 pragma Loop_Invariant
                   (if Overflow
                    then Overflow'Loop_Entry or else Res_Val.Overflow);
+                pragma Loop_Invariant (Uval /= 0);
                 pragma Loop_Invariant
                   (if not Overflow
!                   then Res_Val = Spec.Exponent_Unsigned_Ghost
                      (Uval, Expon - J + 1, Base));
  
                 pragma Assert
!                  ((Uval > UmaxB) = Spec.Scan_Overflows_Ghost (0, Base, Uval));
  
                 if Uval > UmaxB then
+                   Spec.Lemma_Exponent_Unsigned_Ghost_Overflow
+                      (Uval, Expon - J + 1, Base);
                    Overflow := True;
                    exit;
                 end if;
  
+                Spec.Lemma_Exponent_Unsigned_Ghost_Step
+                   (Uval, Expon - J + 1, Base);
+ 
                 Uval := Uval * Base;
              end loop;
+             Spec.Lemma_Exponent_Unsigned_Ghost_Base (Uval, 0, Base);
+ 
              pragma Assert
!               (Overflow /=
!                  Spec.Raw_Unsigned_No_Overflow_Ghost (Str, Ptr_Old, Max));
!             pragma Assert (if not Overflow then Res_Val = (False, Uval));
           end;
        end if;
+       Spec.Lemma_Exponent_Unsigned_Ghost_Base (Uval, Expon, Base);
        pragma Assert
          (if Expon = 0 or else Uval = 0 then
!             Spec.Exponent_Unsigned_Ghost (Uval, Expon, Base) = (False, Uval));
        pragma Assert
!         (Overflow /=
!            Spec.Raw_Unsigned_No_Overflow_Ghost (Str, Ptr_Old, Max));
        pragma Assert
          (if not Overflow then
!             Uval = Spec.Scan_Raw_Unsigned_Ghost (Str, Ptr_Old, Max));
  
        --  Return result, dealing with overflow
  
*************** package body System.Value_U is
*** 694,700 ****
--- 579,593 ----
        if Str'Last = Positive'Last then
           declare
              subtype NT is String (1 .. Str'Length);
+             procedure Prove_Is_Unsigned_Ghost with
+               Ghost,
+               Pre  => Str'Length < Natural'Last
+               and then not Only_Space_Ghost (Str, Str'First, Str'Last)
+               and then Spec.Is_Unsigned_Ghost (Spec.Slide_To_1 (Str)),
+               Post => Spec.Is_Unsigned_Ghost (NT (Str));
+             procedure Prove_Is_Unsigned_Ghost is null;
           begin
+             Prove_Is_Unsigned_Ghost;
              return Value_Unsigned (NT (Str));
           end;
  
*************** package body System.Value_U is
*** 704,710 ****
           declare
              V : Uns;
              P : aliased Integer := Str'First;
- 
              Non_Blank : constant Positive := First_Non_Space_Ghost
                (Str, Str'First, Str'Last)
              with Ghost;
--- 597,602 ----
*************** package body System.Value_U is
*** 712,720 ****
                (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank)
              with Ghost;
           begin
-             pragma Assert
-               (Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last)));
- 
              declare
                 P_Acc : constant not null access Integer := P'Access;
              begin
--- 604,609 ----
*************** package body System.Value_U is
*** 722,735 ****
              end;
  
              pragma Assert
!               (P = Raw_Unsigned_Last_Ghost (Str, Fst_Num, Str'Last));
              pragma Assert
!               (V = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last));
  
              Scan_Trailing_Blanks (Str, P);
  
              pragma Assert
!               (Is_Value_Unsigned_Ghost (Slide_If_Necessary (Str), V));
              return V;
           end;
        end if;
--- 611,625 ----
              end;
  
              pragma Assert
!               (P = Spec.Raw_Unsigned_Last_Ghost (Str, Fst_Num, Str'Last));
              pragma Assert
!               (V = Spec.Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last));
  
              Scan_Trailing_Blanks (Str, P);
  
              pragma Assert
!               (Spec.Is_Value_Unsigned_Ghost
!                  (Spec.Slide_If_Necessary (Str), V));
              return V;
           end;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valueu.ads gcc-13.1.0/gcc/ada/libgnat/s-valueu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valueu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valueu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Assertion_Policy (Pre
*** 43,51 ****
                           Contract_Cases     => Ignore,
                           Ghost              => Ignore,
                           Subprogram_Variant => Ignore);
- pragma Warnings (Off, "postcondition does not mention function result");
- --  True postconditions are used to avoid inlining for GNATprove
  
  with System.Val_Util; use System.Val_Util;
  
  generic
--- 43,50 ----
                           Contract_Cases     => Ignore,
                           Ghost              => Ignore,
                           Subprogram_Variant => Ignore);
  
+ with System.Value_U_Spec;
  with System.Val_Util; use System.Val_Util;
  
  generic
*************** generic
*** 55,354 ****
  package System.Value_U is
     pragma Preelaborate;
  
!    type Uns_Option (Overflow : Boolean := False) is record
!       case Overflow is
!          when True =>
!             null;
!          when False =>
!             Value : Uns := 0;
!       end case;
!    end record with Ghost;
! 
!    function Only_Hexa_Ghost (Str : String; From, To : Integer) return Boolean
!    is
!       (for all J in From .. To =>
!           Str (J) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_')
!    with
!      Ghost,
!      Pre => From > To or else (From >= Str'First and then To <= Str'Last);
!    --  Ghost function that returns True if S has only hexadecimal characters
!    --  from index From to index To.
! 
!    function Last_Hexa_Ghost (Str : String) return Positive
!    with
!      Ghost,
!      Pre  => Str /= ""
!        and then Str (Str'First) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F',
!      Post => Last_Hexa_Ghost'Result in Str'Range
!        and then (if Last_Hexa_Ghost'Result < Str'Last then
!                    Str (Last_Hexa_Ghost'Result + 1) not in
!                      '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_')
!        and then Only_Hexa_Ghost (Str, Str'First, Last_Hexa_Ghost'Result);
!    --  Ghost function that returns the index of the last character in S that
!    --  is either an hexadecimal digit or an underscore, which necessarily
!    --  exists given the precondition on Str.
! 
!    function Is_Based_Format_Ghost (Str : String) return Boolean
!    is
!      (Str /= ""
!         and then Str (Str'First) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
!         and then
!         (declare
!            L : constant Positive := Last_Hexa_Ghost (Str);
!          begin
!            Str (L) /= '_'
!              and then (for all J in Str'First .. L =>
!                          (if Str (J) = '_' then Str (J + 1) /= '_'))))
!    with
!      Ghost;
!    --  Ghost function that determines if Str has the correct format for a
!    --  based number, consisting in a sequence of hexadecimal digits possibly
!    --  separated by single underscores. It may be followed by other characters.
! 
!    function Hexa_To_Unsigned_Ghost (X : Character) return Uns is
!      (case X is
!          when '0' .. '9' => Character'Pos (X) - Character'Pos ('0'),
!          when 'a' .. 'f' => Character'Pos (X) - Character'Pos ('a') + 10,
!          when 'A' .. 'F' => Character'Pos (X) - Character'Pos ('A') + 10,
!          when others     => raise Program_Error)
!    with
!      Ghost,
!      Pre => X in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
!    --  Ghost function that computes the value corresponding to an hexadecimal
!    --  digit.
! 
!    function Scan_Overflows_Ghost
!      (Digit : Uns;
!       Base  : Uns;
!       Acc   : Uns) return Boolean
!    is
!      (Digit >= Base
!       or else Acc > Uns'Last / Base
!       or else Uns'Last - Digit < Base * Acc)
!    with Ghost;
!    --  Ghost function which returns True if Digit + Base * Acc overflows or
!    --  Digit is greater than Base, as this is used by the algorithm for the
!    --  test of overflow.
! 
!    function Scan_Based_Number_Ghost
!      (Str      : String;
!       From, To : Integer;
!       Base     : Uns := 10;
!       Acc      : Uns := 0) return Uns_Option
!    with
!      Ghost,
!      Subprogram_Variant => (Increases => From),
!      Pre  => Str'Last /= Positive'Last
!          and then
!            (From > To or else (From >= Str'First and then To <= Str'Last))
!          and then Only_Hexa_Ghost (Str, From, To);
!    --  Ghost function that recursively computes the based number in Str,
!    --  assuming Acc has been scanned already and scanning continues at index
!    --  From.
! 
!    function Exponent_Unsigned_Ghost
!      (Value : Uns;
!       Exp   : Natural;
!       Base  : Uns := 10) return Uns_Option
!    with
!      Ghost,
!      Subprogram_Variant => (Decreases => Exp);
!    --  Ghost function that recursively computes Value * Base ** Exp
! 
!    function Is_Raw_Unsigned_Format_Ghost (Str : String) return Boolean is
!      (Is_Natural_Format_Ghost (Str)
!       and then
!         (declare
!            Last_Num_Init   : constant Integer := Last_Number_Ghost (Str);
!            Starts_As_Based : constant Boolean :=
!              Last_Num_Init < Str'Last - 1
!              and then Str (Last_Num_Init + 1) in '#' | ':'
!              and then Str (Last_Num_Init + 2) in
!                '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
!            Last_Num_Based  : constant Integer :=
!              (if Starts_As_Based
!               then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. Str'Last))
!               else Last_Num_Init);
!            Is_Based        : constant Boolean :=
!              Starts_As_Based
!              and then Last_Num_Based < Str'Last
!              and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
!            First_Exp       : constant Integer :=
!              (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
!          begin
!            (if Starts_As_Based then
!               Is_Based_Format_Ghost (Str (Last_Num_Init + 2 .. Str'Last))
!               and then Last_Num_Based < Str'Last)
!             and then Is_Opt_Exponent_Format_Ghost
!               (Str (First_Exp .. Str'Last))))
!    with
!      Ghost,
!      Pre  => Str'Last /= Positive'Last,
!      Post => True;
!    --  Ghost function that determines if Str has the correct format for an
!    --  unsigned number without a sign character.
!    --  It is a natural number in base 10, optionally followed by a based
!    --  number surrounded by delimiters # or :, optionally followed by an
!    --  exponent part.
! 
!    function Raw_Unsigned_Overflows_Ghost
!      (Str      : String;
!       From, To : Integer)
!       return Boolean
!    is
!      (declare
!         Last_Num_Init   : constant Integer :=
!           Last_Number_Ghost (Str (From .. To));
!         Init_Val        : constant Uns_Option :=
!           Scan_Based_Number_Ghost (Str, From, Last_Num_Init);
!         Starts_As_Based : constant Boolean :=
!           Last_Num_Init < To - 1
!           and then Str (Last_Num_Init + 1) in '#' | ':'
!           and then Str (Last_Num_Init + 2) in
!           '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
!         Last_Num_Based  : constant Integer :=
!           (if Starts_As_Based
!            then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To))
!            else Last_Num_Init);
!         Is_Based        : constant Boolean :=
!           Starts_As_Based
!           and then Last_Num_Based < To
!           and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
!         Based_Val       : constant Uns_Option :=
!           (if Starts_As_Based and then not Init_Val.Overflow
!            then Scan_Based_Number_Ghost
!              (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value)
!            else Init_Val);
!         First_Exp       : constant Integer :=
!           (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
!         Expon           : constant Natural :=
!           (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To))
!            then Scan_Exponent_Ghost (Str (First_Exp .. To))
!            else 0);
!       begin
!         Init_Val.Overflow
!         or else
!           (Last_Num_Init < To - 1
!            and then Str (Last_Num_Init + 1) in '#' | ':'
!            and then Init_Val.Value not in 2 .. 16)
!         or else
!           (Starts_As_Based
!            and then Based_Val.Overflow)
!         or else
!           (Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To))
!            and then
!              (declare
!                 Base  : constant Uns :=
!                   (if Is_Based then Init_Val.Value else 10);
!                 Value : constant Uns :=
!                   (if Is_Based then Based_Val.Value else Init_Val.Value);
!               begin
!                 Exponent_Unsigned_Ghost
!                   (Value, Expon, Base).Overflow)))
!    with
!      Ghost,
!      Pre  => Str'Last /= Positive'Last
!        and then From in Str'Range
!        and then To in From .. Str'Last
!        and then Str (From) in '0' .. '9',
!      Post => True;
!    --  Ghost function that determines if the computation of the unsigned number
!    --  represented by Str will overflow. The computation overflows if either:
!    --    * The computation of the decimal part overflows,
!    --    * The decimal part is followed by a valid delimiter for a based
!    --      part, and the number corresponding to the base is not a valid base,
!    --    * The computation of the based part overflows, or
!    --    * There is an exponent and the computation of the exponentiation
!    --      overflows.
! 
!    function Scan_Raw_Unsigned_Ghost
!      (Str      : String;
!       From, To : Integer)
!       return Uns
!    is
!      (declare
!         Last_Num_Init   : constant Integer :=
!           Last_Number_Ghost (Str (From .. To));
!         Init_Val        : constant Uns_Option :=
!           Scan_Based_Number_Ghost (Str, From, Last_Num_Init);
!         Starts_As_Based : constant Boolean :=
!           Last_Num_Init < To - 1
!           and then Str (Last_Num_Init + 1) in '#' | ':'
!           and then Str (Last_Num_Init + 2) in
!           '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
!         Last_Num_Based  : constant Integer :=
!           (if Starts_As_Based
!            then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To))
!            else Last_Num_Init);
!         Is_Based        : constant Boolean :=
!           Starts_As_Based
!           and then Last_Num_Based < To
!           and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
!         Based_Val       : constant Uns_Option :=
!           (if Starts_As_Based and then not Init_Val.Overflow
!            then Scan_Based_Number_Ghost
!              (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value)
!            else Init_Val);
!         First_Exp       : constant Integer :=
!           (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
!         Expon           : constant Natural :=
!           (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To))
!            then Scan_Exponent_Ghost (Str (First_Exp .. To))
!            else 0);
!         Base            : constant Uns :=
!           (if Is_Based then Init_Val.Value else 10);
!         Value           : constant Uns :=
!           (if Is_Based then Based_Val.Value else Init_Val.Value);
!       begin
!         Exponent_Unsigned_Ghost (Value, Expon, Base).Value)
!    with
!      Ghost,
!      Pre  => Str'Last /= Positive'Last
!        and then From in Str'Range
!        and then To in From .. Str'Last
!        and then Str (From) in '0' .. '9'
!        and then not Raw_Unsigned_Overflows_Ghost (Str, From, To),
!      Post => True;
!    --  Ghost function that scans an unsigned number without a sign character
! 
!    function Raw_Unsigned_Last_Ghost
!      (Str      : String;
!       From, To : Integer)
!       return Positive
!    is
!      (declare
!         Last_Num_Init   : constant Integer :=
!           Last_Number_Ghost (Str (From .. To));
!         Starts_As_Based : constant Boolean :=
!           Last_Num_Init < To - 1
!           and then Str (Last_Num_Init + 1) in '#' | ':'
!           and then Str (Last_Num_Init + 2) in
!           '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
!         Last_Num_Based  : constant Integer :=
!           (if Starts_As_Based
!            then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To))
!            else Last_Num_Init);
!         Is_Based        : constant Boolean :=
!           Starts_As_Based
!           and then Last_Num_Based < To
!           and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
!         First_Exp       : constant Integer :=
!           (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
!       begin
!         (if not Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To))
!          then First_Exp
!          elsif Str (First_Exp + 1) in '-' | '+' then
!            Last_Number_Ghost (Str (First_Exp + 2 .. To)) + 1
!          else Last_Number_Ghost (Str (First_Exp + 1 .. To)) + 1))
!    with
!      Ghost,
!      Pre  => Str'Last /= Positive'Last
!        and then From in Str'Range
!        and then To in From .. Str'Last
!        and then Str (From) in '0' .. '9',
!      Post => Raw_Unsigned_Last_Ghost'Result in From .. To + 1;
!    --  Ghost function that returns the position of the cursor once an unsigned
!    --  number has been seen.
  
     procedure Scan_Raw_Unsigned
       (Str : String;
--- 54,60 ----
  package System.Value_U is
     pragma Preelaborate;
  
!    package Spec is new System.Value_U_Spec (Uns);
  
     procedure Scan_Raw_Unsigned
       (Str : String;
*************** package System.Value_U is
*** 358,367 ****
     with Pre => Str'Last /= Positive'Last
       and then Ptr.all in Str'Range
       and then Max in Ptr.all .. Str'Last
!      and then Is_Raw_Unsigned_Format_Ghost (Str (Ptr.all .. Max)),
!      Post => not Raw_Unsigned_Overflows_Ghost (Str, Ptr.all'Old, Max)
!      and Res = Scan_Raw_Unsigned_Ghost (Str, Ptr.all'Old, Max)
!      and Ptr.all = Raw_Unsigned_Last_Ghost (Str, Ptr.all'Old, Max);
  
     --  This function scans the string starting at Str (Ptr.all) for a valid
     --  integer according to the syntax described in (RM 3.5(43)). The substring
--- 64,73 ----
     with Pre => Str'Last /= Positive'Last
       and then Ptr.all in Str'Range
       and then Max in Ptr.all .. Str'Last
!      and then Spec.Is_Raw_Unsigned_Format_Ghost (Str (Ptr.all .. Max)),
!      Post => Spec.Raw_Unsigned_No_Overflow_Ghost (Str, Ptr.all'Old, Max)
!      and Res = Spec.Scan_Raw_Unsigned_Ghost (Str, Ptr.all'Old, Max)
!      and Ptr.all = Spec.Raw_Unsigned_Last_Ghost (Str, Ptr.all'Old, Max);
  
     --  This function scans the string starting at Str (Ptr.all) for a valid
     --  integer according to the syntax described in (RM 3.5(43)). The substring
*************** package System.Value_U is
*** 449,455 ****
            Fst_Num   : constant Positive :=
              (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
          begin
!           Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Max))),
       Post =>
         (declare
            Non_Blank : constant Positive :=
--- 155,161 ----
            Fst_Num   : constant Positive :=
              (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
          begin
!           Spec.Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Max))),
       Post =>
         (declare
            Non_Blank : constant Positive :=
*************** package System.Value_U is
*** 457,465 ****
            Fst_Num   : constant Positive :=
              (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
          begin
!           not Raw_Unsigned_Overflows_Ghost (Str, Fst_Num, Max)
!           and then Res = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Max)
!           and then Ptr.all = Raw_Unsigned_Last_Ghost (Str, Fst_Num, Max));
  
     --  Same as Scan_Raw_Unsigned, except scans optional leading
     --  blanks, and an optional leading plus sign.
--- 163,171 ----
            Fst_Num   : constant Positive :=
              (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
          begin
!           Spec.Raw_Unsigned_No_Overflow_Ghost (Str, Fst_Num, Max)
!           and then Res = Spec.Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Max)
!           and then Ptr.all = Spec.Raw_Unsigned_Last_Ghost (Str, Fst_Num, Max));
  
     --  Same as Scan_Raw_Unsigned, except scans optional leading
     --  blanks, and an optional leading plus sign.
*************** package System.Value_U is
*** 467,583 ****
     --  Note: if a minus sign is present, Constraint_Error will be raised.
     --  Note: trailing blanks are not scanned.
  
-    function Slide_To_1 (Str : String) return String
-    with Ghost,
-        Post =>
-          Only_Space_Ghost (Str, Str'First, Str'Last) =
-          (for all J in Str'First .. Str'Last =>
-             Slide_To_1'Result (J - Str'First + 1) = ' ');
-    --  Slides Str so that it starts at 1
- 
-    function Slide_If_Necessary (Str : String) return String is
-      (if Str'Last = Positive'Last then Slide_To_1 (Str) else Str)
-    with Ghost,
-        Post =>
-          Only_Space_Ghost (Str, Str'First, Str'Last) =
-          Only_Space_Ghost (Slide_If_Necessary'Result,
-                            Slide_If_Necessary'Result'First,
-                            Slide_If_Necessary'Result'Last);
-    --  If Str'Last = Positive'Last then slides Str so that it starts at 1
- 
-    function Is_Unsigned_Ghost (Str : String) return Boolean is
-      (declare
-         Non_Blank : constant Positive := First_Non_Space_Ghost
-           (Str, Str'First, Str'Last);
-         Fst_Num   : constant Positive :=
-           (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
-       begin
-         Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last))
-           and then not Raw_Unsigned_Overflows_Ghost (Str, Fst_Num, Str'Last)
-           and then Only_Space_Ghost
-              (Str, Raw_Unsigned_Last_Ghost (Str, Fst_Num, Str'Last), Str'Last))
-    with Ghost,
-        Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
-        and then Str'Last /= Positive'Last,
-        Post => True;
-    --  Ghost function that determines if Str has the correct format for an
-    --  unsigned number, consisting in some blank characters, an optional
-    --  + sign, a raw unsigned number which does not overflow and then some
-    --  more blank characters.
- 
-    function Is_Value_Unsigned_Ghost (Str : String; Val : Uns) return Boolean is
-      (declare
-         Non_Blank : constant Positive := First_Non_Space_Ghost
-           (Str, Str'First, Str'Last);
-         Fst_Num   : constant Positive :=
-           (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
-       begin
-         Val = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last))
-    with Ghost,
-        Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
-        and then Str'Last /= Positive'Last
-        and then Is_Unsigned_Ghost (Str),
-        Post => True;
-    --  Ghost function that returns True if Val is the value corresponding to
-    --  the unsigned number represented by Str.
- 
     function Value_Unsigned
       (Str : String) return Uns
!    with Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
!      and then Str'Length /= Positive'Last
!      and then Is_Unsigned_Ghost (Slide_If_Necessary (Str)),
       Post =>
!          Is_Value_Unsigned_Ghost
!            (Slide_If_Necessary (Str), Value_Unsigned'Result),
       Subprogram_Variant => (Decreases => Str'First);
     --  Used in computing X'Value (Str) where X is a modular integer type whose
     --  modulus does not exceed the range of System.Unsigned_Types.Unsigned. Str
     --  is the string argument of the attribute. Constraint_Error is raised if
     --  the string is malformed, or if the value is out of range.
  
- private
- 
-    -----------------------------
-    -- Exponent_Unsigned_Ghost --
-    -----------------------------
- 
-    function Exponent_Unsigned_Ghost
-      (Value : Uns;
-       Exp   : Natural;
-       Base  : Uns := 10) return Uns_Option
-    is
-       (if Exp = 0 or Value = 0 then (Overflow => False, Value => Value)
-        elsif Scan_Overflows_Ghost (0, Base, Value) then (Overflow => True)
-        else Exponent_Unsigned_Ghost (Value * Base, Exp - 1, Base));
- 
-    -----------------------------
-    -- Scan_Based_Number_Ghost --
-    -----------------------------
- 
-    function Scan_Based_Number_Ghost
-      (Str      : String;
-       From, To : Integer;
-       Base     : Uns := 10;
-       Acc      : Uns := 0) return Uns_Option
-    is
-       (if From > To then (Overflow => False, Value => Acc)
-        elsif Str (From) = '_'
-        then Scan_Based_Number_Ghost (Str, From + 1, To, Base, Acc)
-        elsif Scan_Overflows_Ghost
-          (Hexa_To_Unsigned_Ghost (Str (From)), Base, Acc)
-        then (Overflow => True)
-        else Scan_Based_Number_Ghost
-          (Str, From + 1, To, Base,
-           Base * Acc + Hexa_To_Unsigned_Ghost (Str (From))));
- 
-    ----------------
-    -- Slide_To_1 --
-    ----------------
- 
-    function Slide_To_1 (Str : String) return String is
-       (declare
-          Res : constant String (1 .. Str'Length) := Str;
-        begin
-          Res);
- 
  end System.Value_U;
--- 173,190 ----
     --  Note: if a minus sign is present, Constraint_Error will be raised.
     --  Note: trailing blanks are not scanned.
  
     function Value_Unsigned
       (Str : String) return Uns
!    with Pre => Str'Length /= Positive'Last
!      and then not Only_Space_Ghost (Str, Str'First, Str'Last)
!      and then Spec.Is_Unsigned_Ghost (Spec.Slide_If_Necessary (Str)),
       Post =>
!          Spec.Is_Value_Unsigned_Ghost
!            (Spec.Slide_If_Necessary (Str), Value_Unsigned'Result),
       Subprogram_Variant => (Decreases => Str'First);
     --  Used in computing X'Value (Str) where X is a modular integer type whose
     --  modulus does not exceed the range of System.Unsigned_Types.Unsigned. Str
     --  is the string argument of the attribute. Constraint_Error is raised if
     --  the string is malformed, or if the value is out of range.
  
  end System.Value_U;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuns.adb gcc-13.1.0/gcc/ada/libgnat/s-valuns.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valuns.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuns.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuns.ads gcc-13.1.0/gcc/ada/libgnat/s-valuns.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valuns.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuns.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuti.adb gcc-13.1.0/gcc/ada/libgnat/s-valuti.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valuti.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuti.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valuti.ads gcc-13.1.0/gcc/ada/libgnat/s-valuti.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valuti.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valuti.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** pragma Assertion_Policy (Pre
*** 41,48 ****
                           Post           => Ignore,
                           Contract_Cases => Ignore,
                           Ghost          => Ignore);
- pragma Warnings (Off, "postcondition does not mention function result");
- --  True postconditions are used to avoid inlining for GNATprove
  
  with System.Case_Util;
  
--- 41,46 ----
*************** is
*** 376,381 ****
--- 374,649 ----
     --  no check for this case, the caller must ensure this condition is met.
     pragma Warnings (GNATprove, On, """Ptr"" is not modified");
  
+    --  Bundle Uns type with other types, constants and subprograms used in
+    --  ghost code, so that this package can be instantiated once and used
+    --  multiple times as generic formal for a given Uns type.
+    generic
+       type Uns is mod <>;
+       type P_Uns_Option is private with Ghost;
+       with function P_Wrap_Option (Value : Uns) return P_Uns_Option
+         with Ghost;
+       with function P_Hexa_To_Unsigned_Ghost (X : Character) return Uns
+         with Ghost;
+       with function P_Scan_Overflows_Ghost
+         (Digit : Uns;
+          Base  : Uns;
+          Acc   : Uns) return Boolean
+         with Ghost;
+       with function P_Is_Raw_Unsigned_Format_Ghost
+         (Str : String) return Boolean
+         with Ghost;
+       with function P_Scan_Split_No_Overflow_Ghost
+         (Str      : String;
+          From, To : Integer)
+       return Boolean
+         with Ghost;
+       with function P_Raw_Unsigned_No_Overflow_Ghost
+         (Str      : String;
+          From, To : Integer)
+       return Boolean
+         with Ghost;
+ 
+       with function P_Exponent_Unsigned_Ghost
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10) return P_Uns_Option
+         with Ghost;
+       with procedure P_Lemma_Exponent_Unsigned_Ghost_Base
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10)
+         with Ghost;
+       with procedure P_Lemma_Exponent_Unsigned_Ghost_Overflow
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10)
+         with Ghost;
+       with procedure P_Lemma_Exponent_Unsigned_Ghost_Step
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10)
+         with Ghost;
+ 
+       with function P_Scan_Raw_Unsigned_Ghost
+         (Str      : String;
+          From, To : Integer)
+       return Uns
+         with Ghost;
+       with procedure P_Lemma_Scan_Based_Number_Ghost_Base
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+         with Ghost;
+       with procedure P_Lemma_Scan_Based_Number_Ghost_Underscore
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+         with Ghost;
+       with procedure P_Lemma_Scan_Based_Number_Ghost_Overflow
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+         with Ghost;
+       with procedure P_Lemma_Scan_Based_Number_Ghost_Step
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+         with Ghost;
+ 
+       with function P_Raw_Unsigned_Last_Ghost
+         (Str      : String;
+          From, To : Integer)
+       return Positive
+         with Ghost;
+       with function P_Only_Decimal_Ghost
+         (Str      : String;
+          From, To : Integer)
+       return Boolean
+         with Ghost;
+       with function P_Scan_Based_Number_Ghost
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+       return P_Uns_Option
+         with Ghost;
+       with function P_Is_Unsigned_Ghost (Str : String) return Boolean
+         with Ghost;
+       with function P_Is_Value_Unsigned_Ghost
+         (Str : String;
+          Val : Uns) return Boolean
+         with Ghost;
+ 
+       with procedure P_Prove_Scan_Only_Decimal_Ghost
+         (Str : String;
+          Val : Uns)
+         with Ghost;
+       with procedure P_Prove_Scan_Based_Number_Ghost_Eq
+         (Str1, Str2 : String;
+          From, To   : Integer;
+          Base       : Uns := 10;
+          Acc        : Uns := 0)
+         with Ghost;
+ 
+    package Uns_Params is
+       subtype Uns_Option is P_Uns_Option with Ghost;
+       function Wrap_Option (Value : Uns) return Uns_Option renames
+         P_Wrap_Option;
+       function Hexa_To_Unsigned_Ghost
+         (X : Character) return Uns
+          renames P_Hexa_To_Unsigned_Ghost;
+       function Scan_Overflows_Ghost
+         (Digit : Uns;
+          Base  : Uns;
+          Acc   : Uns) return Boolean
+          renames P_Scan_Overflows_Ghost;
+       function Is_Raw_Unsigned_Format_Ghost
+         (Str : String) return Boolean
+          renames P_Is_Raw_Unsigned_Format_Ghost;
+       function Scan_Split_No_Overflow_Ghost
+         (Str      : String;
+          From, To : Integer) return Boolean
+          renames P_Scan_Split_No_Overflow_Ghost;
+       function Raw_Unsigned_No_Overflow_Ghost
+         (Str      : String;
+          From, To : Integer) return Boolean
+          renames P_Raw_Unsigned_No_Overflow_Ghost;
+ 
+       function Exponent_Unsigned_Ghost
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10) return Uns_Option
+          renames P_Exponent_Unsigned_Ghost;
+       procedure Lemma_Exponent_Unsigned_Ghost_Base
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10)
+          renames P_Lemma_Exponent_Unsigned_Ghost_Base;
+       procedure Lemma_Exponent_Unsigned_Ghost_Overflow
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10)
+          renames P_Lemma_Exponent_Unsigned_Ghost_Overflow;
+       procedure Lemma_Exponent_Unsigned_Ghost_Step
+         (Value : Uns;
+          Exp   : Natural;
+          Base  : Uns := 10)
+          renames P_Lemma_Exponent_Unsigned_Ghost_Step;
+ 
+       function Scan_Raw_Unsigned_Ghost
+         (Str      : String;
+          From, To : Integer) return Uns
+          renames P_Scan_Raw_Unsigned_Ghost;
+       procedure Lemma_Scan_Based_Number_Ghost_Base
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+          renames P_Lemma_Scan_Based_Number_Ghost_Base;
+       procedure Lemma_Scan_Based_Number_Ghost_Underscore
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+          renames P_Lemma_Scan_Based_Number_Ghost_Underscore;
+       procedure Lemma_Scan_Based_Number_Ghost_Overflow
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+          renames P_Lemma_Scan_Based_Number_Ghost_Overflow;
+       procedure Lemma_Scan_Based_Number_Ghost_Step
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0)
+          renames P_Lemma_Scan_Based_Number_Ghost_Step;
+ 
+       function Raw_Unsigned_Last_Ghost
+         (Str      : String;
+          From, To : Integer) return Positive
+          renames P_Raw_Unsigned_Last_Ghost;
+       function Only_Decimal_Ghost
+         (Str      : String;
+          From, To : Integer) return Boolean
+          renames P_Only_Decimal_Ghost;
+       function Scan_Based_Number_Ghost
+         (Str      : String;
+          From, To : Integer;
+          Base     : Uns := 10;
+          Acc      : Uns := 0) return Uns_Option
+          renames P_Scan_Based_Number_Ghost;
+       function Is_Unsigned_Ghost (Str : String) return Boolean
+          renames P_Is_Unsigned_Ghost;
+       function Is_Value_Unsigned_Ghost
+         (Str : String;
+          Val : Uns) return Boolean
+          renames P_Is_Value_Unsigned_Ghost;
+ 
+       procedure Prove_Scan_Only_Decimal_Ghost
+         (Str : String;
+          Val : Uns)
+          renames P_Prove_Scan_Only_Decimal_Ghost;
+       procedure Prove_Scan_Based_Number_Ghost_Eq
+         (Str1, Str2 : String;
+          From, To   : Integer;
+          Base       : Uns := 10;
+          Acc        : Uns := 0)
+       renames P_Prove_Scan_Based_Number_Ghost_Eq;
+    end Uns_Params;
+ 
+    --  Bundle Int type with other types, constants and subprograms used in
+    --  ghost code, so that this package can be instantiated once and used
+    --  multiple times as generic formal for a given Int type.
+    generic
+       type Int is range <>;
+       type Uns is mod <>;
+ 
+       with package P_Uns_Params is new System.Val_Util.Uns_Params
+         (Uns => Uns, others => <>)
+          with Ghost;
+ 
+       with function P_Abs_Uns_Of_Int (Val : Int) return Uns
+          with Ghost;
+       with function P_Is_Int_Of_Uns
+         (Minus : Boolean;
+          Uval  : Uns;
+          Val   : Int)
+       return Boolean
+          with Ghost;
+       with function P_Is_Integer_Ghost (Str : String) return Boolean
+          with Ghost;
+       with function P_Is_Value_Integer_Ghost
+         (Str : String;
+          Val : Int) return Boolean
+          with Ghost;
+       with procedure P_Prove_Scan_Only_Decimal_Ghost (Str : String; Val : Int)
+          with Ghost;
+ 
+    package Int_Params is
+       package Uns_Params renames P_Uns_Params;
+       function Abs_Uns_Of_Int (Val : Int) return Uns renames
+         P_Abs_Uns_Of_Int;
+       function Is_Int_Of_Uns
+         (Minus : Boolean;
+          Uval  : Uns;
+          Val   : Int)
+       return Boolean
+          renames P_Is_Int_Of_Uns;
+       function Is_Integer_Ghost (Str : String) return Boolean renames
+         P_Is_Integer_Ghost;
+       function Is_Value_Integer_Ghost
+         (Str : String;
+          Val : Int) return Boolean
+          renames P_Is_Value_Integer_Ghost;
+       procedure Prove_Scan_Only_Decimal_Ghost (Str : String; Val : Int) renames
+         P_Prove_Scan_Only_Decimal_Ghost;
+    end Int_Params;
+ 
  private
  
     ------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valwch.adb gcc-13.1.0/gcc/ada/libgnat/s-valwch.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-valwch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valwch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-valwch.ads gcc-13.1.0/gcc/ada/libgnat/s-valwch.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-valwch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-valwch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vauspe.adb gcc-13.1.0/gcc/ada/libgnat/s-vauspe.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-vauspe.adb	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-vauspe.adb	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,198 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                   S Y S T E M . V A L U E _ U _ S P E C                  --
+ --                                                                          --
+ --                                 B o d y                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
+ package body System.Value_U_Spec with SPARK_Mode is
+ 
+    -----------------------------
+    -- Exponent_Unsigned_Ghost --
+    -----------------------------
+ 
+    function Exponent_Unsigned_Ghost
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10) return Uns_Option
+    is
+       (if Exp = 0 or Value = 0 then (Overflow => False, Value => Value)
+        elsif Scan_Overflows_Ghost (0, Base, Value) then (Overflow => True)
+        else Exponent_Unsigned_Ghost (Value * Base, Exp - 1, Base));
+ 
+    ---------------------
+    -- Last_Hexa_Ghost --
+    ---------------------
+ 
+    function Last_Hexa_Ghost (Str : String) return Positive is
+    begin
+       for J in Str'Range loop
+          if Str (J) not in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_' then
+             return J - 1;
+          end if;
+ 
+          pragma Loop_Invariant
+            (for all K in Str'First .. J =>
+               Str (K) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_');
+       end loop;
+ 
+       return Str'Last;
+    end Last_Hexa_Ghost;
+ 
+    -----------------------------
+    -- Lemmas with null bodies --
+    -----------------------------
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Base
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    is null;
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Underscore
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    is null;
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Overflow
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    is null;
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Step
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    is null;
+ 
+    procedure Lemma_Exponent_Unsigned_Ghost_Base
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10)
+    is null;
+ 
+    procedure Lemma_Exponent_Unsigned_Ghost_Overflow
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10)
+    is null;
+ 
+    procedure Lemma_Exponent_Unsigned_Ghost_Step
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10)
+    is null;
+ 
+    --------------------------------------
+    -- Prove_Scan_Based_Number_Ghost_Eq --
+    --------------------------------------
+ 
+    procedure Prove_Scan_Based_Number_Ghost_Eq
+      (Str1, Str2 : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    is
+    begin
+       if From > To then
+          null;
+       elsif Str1 (From) = '_' then
+          Prove_Scan_Based_Number_Ghost_Eq
+            (Str1, Str2, From + 1, To, Base, Acc);
+       elsif Scan_Overflows_Ghost
+         (Hexa_To_Unsigned_Ghost (Str1 (From)), Base, Acc)
+       then
+          null;
+       else
+          Prove_Scan_Based_Number_Ghost_Eq
+            (Str1, Str2, From + 1, To, Base,
+             Base * Acc + Hexa_To_Unsigned_Ghost (Str1 (From)));
+       end if;
+    end Prove_Scan_Based_Number_Ghost_Eq;
+ 
+    -----------------------------------
+    -- Prove_Scan_Only_Decimal_Ghost --
+    -----------------------------------
+ 
+    procedure Prove_Scan_Only_Decimal_Ghost
+      (Str : String;
+       Val : Uns)
+    is
+       pragma Assert (Str (Str'First + 1) /= ' ');
+       Non_Blank : constant Positive := First_Non_Space_Ghost
+         (Str, Str'First, Str'Last);
+       pragma Assert (Non_Blank = Str'First + 1);
+       Fst_Num   : constant Positive :=
+         (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
+       pragma Assert (Fst_Num = Str'First + 1);
+    begin
+       pragma Assert
+         (Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last)));
+       pragma Assert
+         (Scan_Split_No_Overflow_Ghost (Str, Str'First + 1, Str'Last));
+       pragma Assert
+         ((Val, 10, 0) = Scan_Split_Value_Ghost (Str, Str'First + 1, Str'Last));
+       pragma Assert
+         (Raw_Unsigned_No_Overflow_Ghost (Str, Fst_Num, Str'Last));
+       pragma Assert (Val = Exponent_Unsigned_Ghost (Val, 0, 10).Value);
+       pragma Assert (Is_Unsigned_Ghost (Str));
+       pragma Assert (Is_Value_Unsigned_Ghost (Str, Val));
+    end Prove_Scan_Only_Decimal_Ghost;
+ 
+    -----------------------------
+    -- Scan_Based_Number_Ghost --
+    -----------------------------
+ 
+    function Scan_Based_Number_Ghost
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0) return Uns_Option
+    is
+       (if From > To then (Overflow => False, Value => Acc)
+        elsif Str (From) = '_'
+        then Scan_Based_Number_Ghost (Str, From + 1, To, Base, Acc)
+        elsif Scan_Overflows_Ghost
+          (Hexa_To_Unsigned_Ghost (Str (From)), Base, Acc)
+        then (Overflow => True)
+        else Scan_Based_Number_Ghost
+          (Str, From + 1, To, Base,
+           Base * Acc + Hexa_To_Unsigned_Ghost (Str (From))));
+ 
+ end System.Value_U_Spec;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vauspe.ads gcc-13.1.0/gcc/ada/libgnat/s-vauspe.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vauspe.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/s-vauspe.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,639 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                         GNAT COMPILER COMPONENTS                         --
+ --                                                                          --
+ --                   S Y S T E M . V A L U E _ U _ S P E C                  --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                                                                          --
+ --          Copyright (C) 2022-2023, Free Software Foundation, Inc.         --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ --  This package contains the specification entities using for the formal
+ --  verification of the routines for scanning modular Unsigned values.
+ 
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
+ with System.Val_Util; use System.Val_Util;
+ 
+ generic
+ 
+    type Uns is mod <>;
+ 
+ package System.Value_U_Spec with
+    Ghost,
+    SPARK_Mode,
+    Annotate => (GNATprove, Always_Return)
+ is
+    pragma Preelaborate;
+ 
+    type Uns_Option (Overflow : Boolean := False) is record
+       case Overflow is
+          when True =>
+             null;
+          when False =>
+             Value : Uns := 0;
+       end case;
+    end record;
+ 
+    function Wrap_Option (Value : Uns) return Uns_Option is
+      (Overflow => False, Value => Value);
+ 
+    function Only_Decimal_Ghost
+      (Str      : String;
+       From, To : Integer)
+       return Boolean
+    is
+       (for all J in From .. To => Str (J) in '0' .. '9')
+    with
+      Pre => From > To or else (From >= Str'First and then To <= Str'Last);
+    --  Ghost function that returns True if S has only decimal characters
+    --  from index From to index To.
+ 
+    function Only_Hexa_Ghost (Str : String; From, To : Integer) return Boolean
+    is
+       (for all J in From .. To =>
+           Str (J) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_')
+    with
+      Pre => From > To or else (From >= Str'First and then To <= Str'Last);
+    --  Ghost function that returns True if S has only hexadecimal characters
+    --  from index From to index To.
+ 
+    function Last_Hexa_Ghost (Str : String) return Positive
+    with
+      Pre  => Str /= ""
+        and then Str (Str'First) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F',
+      Post => Last_Hexa_Ghost'Result in Str'Range
+        and then (if Last_Hexa_Ghost'Result < Str'Last then
+                    Str (Last_Hexa_Ghost'Result + 1) not in
+                      '0' .. '9' | 'a' .. 'f' | 'A' .. 'F' | '_')
+        and then Only_Hexa_Ghost (Str, Str'First, Last_Hexa_Ghost'Result);
+    --  Ghost function that returns the index of the last character in S that
+    --  is either an hexadecimal digit or an underscore, which necessarily
+    --  exists given the precondition on Str.
+ 
+    function Is_Based_Format_Ghost (Str : String) return Boolean
+    is
+      (Str /= ""
+         and then Str (Str'First) in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F'
+         and then
+         (declare
+            L : constant Positive := Last_Hexa_Ghost (Str);
+          begin
+            Str (L) /= '_'
+              and then (for all J in Str'First .. L =>
+                          (if Str (J) = '_' then Str (J + 1) /= '_'))));
+    --  Ghost function that determines if Str has the correct format for a
+    --  based number, consisting in a sequence of hexadecimal digits possibly
+    --  separated by single underscores. It may be followed by other characters.
+ 
+    function Hexa_To_Unsigned_Ghost (X : Character) return Uns is
+      (case X is
+          when '0' .. '9' => Character'Pos (X) - Character'Pos ('0'),
+          when 'a' .. 'f' => Character'Pos (X) - Character'Pos ('a') + 10,
+          when 'A' .. 'F' => Character'Pos (X) - Character'Pos ('A') + 10,
+          when others     => raise Program_Error)
+    with
+      Pre => X in '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
+    --  Ghost function that computes the value corresponding to an hexadecimal
+    --  digit.
+ 
+    function Scan_Overflows_Ghost
+      (Digit : Uns;
+       Base  : Uns;
+       Acc   : Uns) return Boolean
+    is
+      (Digit >= Base
+       or else Acc > Uns'Last / Base
+       or else Uns'Last - Digit < Base * Acc);
+    --  Ghost function which returns True if Digit + Base * Acc overflows or
+    --  Digit is greater than Base, as this is used by the algorithm for the
+    --  test of overflow.
+ 
+    function Scan_Based_Number_Ghost
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0) return Uns_Option
+    with
+      Subprogram_Variant => (Increases => From),
+      Pre  => Str'Last /= Positive'Last
+          and then
+            (From > To or else (From >= Str'First and then To <= Str'Last))
+          and then Only_Hexa_Ghost (Str, From, To);
+    --  Ghost function that recursively computes the based number in Str,
+    --  assuming Acc has been scanned already and scanning continues at index
+    --  From.
+ 
+    --  Lemmas unfolding the recursive definition of Scan_Based_Number_Ghost
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Base
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    with
+      Global => null,
+      Pre  => Str'Last /= Positive'Last
+          and then
+            (From > To or else (From >= Str'First and then To <= Str'Last))
+          and then Only_Hexa_Ghost (Str, From, To),
+      Post =>
+       (if From > To
+        then Scan_Based_Number_Ghost (Str, From, To, Base, Acc) =
+          (Overflow => False, Value => Acc));
+    --  Base case: Scan_Based_Number_Ghost returns Acc if From is bigger than To
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Underscore
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    with
+      Global => null,
+      Pre  => Str'Last /= Positive'Last
+          and then
+            (From > To or else (From >= Str'First and then To <= Str'Last))
+          and then Only_Hexa_Ghost (Str, From, To),
+      Post =>
+       (if From <= To and then Str (From) = '_'
+        then Scan_Based_Number_Ghost (Str, From, To, Base, Acc) =
+            Scan_Based_Number_Ghost (Str, From + 1, To, Base, Acc));
+    --  Underscore case: underscores are ignored while scanning
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Overflow
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    with
+      Global => null,
+      Pre  => Str'Last /= Positive'Last
+          and then
+            (From > To or else (From >= Str'First and then To <= Str'Last))
+          and then Only_Hexa_Ghost (Str, From, To),
+      Post =>
+       (if From <= To
+          and then Str (From) /= '_'
+          and then Scan_Overflows_Ghost
+            (Hexa_To_Unsigned_Ghost (Str (From)), Base, Acc)
+        then Scan_Based_Number_Ghost (Str, From, To, Base, Acc) =
+            (Overflow => True));
+    --  Overflow case: scanning a digit which causes an overflow
+ 
+    procedure Lemma_Scan_Based_Number_Ghost_Step
+      (Str      : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    with
+      Global => null,
+      Pre  => Str'Last /= Positive'Last
+          and then
+            (From > To or else (From >= Str'First and then To <= Str'Last))
+          and then Only_Hexa_Ghost (Str, From, To),
+      Post =>
+       (if From <= To
+          and then Str (From) /= '_'
+          and then not Scan_Overflows_Ghost
+            (Hexa_To_Unsigned_Ghost (Str (From)), Base, Acc)
+        then Scan_Based_Number_Ghost (Str, From, To, Base, Acc) =
+          Scan_Based_Number_Ghost
+            (Str, From + 1, To, Base,
+             Base * Acc + Hexa_To_Unsigned_Ghost (Str (From))));
+    --  Normal case: scanning a digit without overflows
+ 
+    function Exponent_Unsigned_Ghost
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10) return Uns_Option
+    with
+      Subprogram_Variant => (Decreases => Exp);
+    --  Ghost function that recursively computes Value * Base ** Exp
+ 
+    --  Lemmas unfolding the recursive definition of Exponent_Unsigned_Ghost
+ 
+    procedure Lemma_Exponent_Unsigned_Ghost_Base
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10)
+    with
+      Post =>
+        (if Exp = 0 or Value = 0
+         then Exponent_Unsigned_Ghost (Value, Exp, Base) =
+           (Overflow => False, Value => Value));
+    --  Base case: Exponent_Unsigned_Ghost returns 0 if Value or Exp is 0
+ 
+    procedure Lemma_Exponent_Unsigned_Ghost_Overflow
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10)
+    with
+      Post =>
+        (if Exp /= 0
+           and then Value /= 0
+           and then Scan_Overflows_Ghost (0, Base, Value)
+         then Exponent_Unsigned_Ghost (Value, Exp, Base) = (Overflow => True));
+    --  Overflow case: the next multiplication overflows
+ 
+    procedure Lemma_Exponent_Unsigned_Ghost_Step
+      (Value : Uns;
+       Exp   : Natural;
+       Base  : Uns := 10)
+    with
+      Post =>
+        (if Exp /= 0
+           and then Value /= 0
+           and then not Scan_Overflows_Ghost (0, Base, Value)
+         then Exponent_Unsigned_Ghost (Value, Exp, Base) =
+             Exponent_Unsigned_Ghost (Value * Base, Exp - 1, Base));
+    --  Normal case: exponentiation without overflows
+ 
+    function Is_Raw_Unsigned_Format_Ghost (Str : String) return Boolean is
+      (Is_Natural_Format_Ghost (Str)
+       and then
+         (declare
+            Last_Num_Init   : constant Integer := Last_Number_Ghost (Str);
+            Starts_As_Based : constant Boolean :=
+              Last_Num_Init < Str'Last - 1
+              and then Str (Last_Num_Init + 1) in '#' | ':'
+              and then Str (Last_Num_Init + 2) in
+                '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
+            Last_Num_Based  : constant Integer :=
+              (if Starts_As_Based
+               then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. Str'Last))
+               else Last_Num_Init);
+            Is_Based        : constant Boolean :=
+              Starts_As_Based
+              and then Last_Num_Based < Str'Last
+              and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
+            First_Exp       : constant Integer :=
+              (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
+          begin
+            (if Starts_As_Based then
+               Is_Based_Format_Ghost (Str (Last_Num_Init + 2 .. Str'Last))
+               and then Last_Num_Based < Str'Last)
+             and then Is_Opt_Exponent_Format_Ghost
+               (Str (First_Exp .. Str'Last))))
+    with
+      Pre  => Str'Last /= Positive'Last;
+    --  Ghost function that determines if Str has the correct format for an
+    --  unsigned number without a sign character.
+    --  It is a natural number in base 10, optionally followed by a based
+    --  number surrounded by delimiters # or :, optionally followed by an
+    --  exponent part.
+ 
+    type Split_Value_Ghost is record
+       Value : Uns;
+       Base  : Uns;
+       Expon : Natural;
+    end record;
+ 
+    function Scan_Split_No_Overflow_Ghost
+      (Str      : String;
+       From, To : Integer)
+       return Boolean
+    is
+      (declare
+         Last_Num_Init   : constant Integer :=
+           Last_Number_Ghost (Str (From .. To));
+         Init_Val        : constant Uns_Option :=
+           Scan_Based_Number_Ghost (Str, From, Last_Num_Init);
+         Starts_As_Based : constant Boolean :=
+           Last_Num_Init < To - 1
+           and then Str (Last_Num_Init + 1) in '#' | ':'
+           and then Str (Last_Num_Init + 2) in
+           '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
+         Last_Num_Based  : constant Integer :=
+           (if Starts_As_Based
+            then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To))
+            else Last_Num_Init);
+         Based_Val       : constant Uns_Option :=
+           (if Starts_As_Based and then not Init_Val.Overflow
+            then Scan_Based_Number_Ghost
+              (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value)
+            else Init_Val);
+       begin
+         not Init_Val.Overflow
+         and then
+           (Last_Num_Init >= To - 1
+            or else Str (Last_Num_Init + 1) not in '#' | ':'
+            or else Init_Val.Value in 2 .. 16)
+         and then
+           (not Starts_As_Based
+            or else not Based_Val.Overflow))
+    with
+      Pre  => Str'Last /= Positive'Last
+        and then From in Str'Range
+        and then To in From .. Str'Last
+        and then Str (From) in '0' .. '9';
+    --  Ghost function that determines if an overflow might occur while scanning
+    --  the representation of an unsigned number. The computation overflows if
+    --  either:
+    --    * The computation of the decimal part overflows,
+    --    * The decimal part is followed by a valid delimiter for a based
+    --      part, and the number corresponding to the base is not a valid base,
+    --      or
+    --    * The computation of the based part overflows.
+ 
+    pragma Warnings (Off, "constant * is not referenced");
+    function Scan_Split_Value_Ghost
+      (Str      : String;
+       From, To : Integer)
+       return Split_Value_Ghost
+    is
+      (declare
+         Last_Num_Init   : constant Integer :=
+           Last_Number_Ghost (Str (From .. To));
+         Init_Val        : constant Uns_Option :=
+           Scan_Based_Number_Ghost (Str, From, Last_Num_Init);
+         Starts_As_Based : constant Boolean :=
+           Last_Num_Init < To - 1
+           and then Str (Last_Num_Init + 1) in '#' | ':'
+           and then Str (Last_Num_Init + 2) in
+           '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
+         Last_Num_Based  : constant Integer :=
+           (if Starts_As_Based
+            then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To))
+            else Last_Num_Init);
+         Is_Based        : constant Boolean :=
+           Starts_As_Based
+           and then Last_Num_Based < To
+           and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
+         Based_Val       : constant Uns_Option :=
+           (if Starts_As_Based and then not Init_Val.Overflow
+            then Scan_Based_Number_Ghost
+              (Str, Last_Num_Init + 2, Last_Num_Based, Init_Val.Value)
+            else Init_Val);
+         First_Exp       : constant Integer :=
+           (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
+         Expon           : constant Natural :=
+           (if Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To))
+            then Scan_Exponent_Ghost (Str (First_Exp .. To))
+            else 0);
+         Base            : constant Uns :=
+           (if Is_Based then Init_Val.Value else 10);
+         Value           : constant Uns :=
+           (if Is_Based then Based_Val.Value else Init_Val.Value);
+       begin
+         (Value => Value, Base => Base, Expon => Expon))
+    with
+      Pre => Str'Last /= Positive'Last
+        and then From in Str'Range
+        and then To in From .. Str'Last
+        and then Str (From) in '0' .. '9'
+        and then Scan_Split_No_Overflow_Ghost (Str, From, To);
+    --  Ghost function that scans an unsigned number without a sign character
+    --  and return a record containing the values scanned for its value, its
+    --  base, and its exponent.
+    pragma Warnings (On, "constant * is not referenced");
+ 
+    function Raw_Unsigned_No_Overflow_Ghost
+      (Str      : String;
+       From, To : Integer)
+       return Boolean
+    is
+      (Scan_Split_No_Overflow_Ghost (Str, From, To)
+       and then
+         (declare
+            Val : constant Split_Value_Ghost := Scan_Split_Value_Ghost
+              (Str, From, To);
+          begin
+            not Exponent_Unsigned_Ghost
+              (Val.Value, Val.Expon, Val.Base).Overflow))
+    with
+      Pre => Str'Last /= Positive'Last
+        and then From in Str'Range
+        and then To in From .. Str'Last
+        and then Str (From) in '0' .. '9';
+    --  Ghost function that determines if the computation of the unsigned number
+    --  represented by Str will overflow. The computation overflows if either:
+    --    * The scan of the string overflows, or
+    --    * The computation of the exponentiation overflows.
+ 
+    function Scan_Raw_Unsigned_Ghost
+      (Str      : String;
+       From, To : Integer)
+       return Uns
+    is
+      (declare
+         Val : constant Split_Value_Ghost := Scan_Split_Value_Ghost
+           (Str, From, To);
+       begin
+         Exponent_Unsigned_Ghost (Val.Value, Val.Expon, Val.Base).Value)
+    with
+      Pre  => Str'Last /= Positive'Last
+        and then From in Str'Range
+        and then To in From .. Str'Last
+        and then Str (From) in '0' .. '9'
+        and then Raw_Unsigned_No_Overflow_Ghost (Str, From, To);
+    --  Ghost function that scans an unsigned number without a sign character
+ 
+    function Raw_Unsigned_Last_Ghost
+      (Str      : String;
+       From, To : Integer)
+       return Positive
+    is
+      (declare
+         Last_Num_Init   : constant Integer :=
+           Last_Number_Ghost (Str (From .. To));
+         Starts_As_Based : constant Boolean :=
+           Last_Num_Init < To - 1
+           and then Str (Last_Num_Init + 1) in '#' | ':'
+           and then Str (Last_Num_Init + 2) in
+           '0' .. '9' | 'a' .. 'f' | 'A' .. 'F';
+         Last_Num_Based  : constant Integer :=
+           (if Starts_As_Based
+            then Last_Hexa_Ghost (Str (Last_Num_Init + 2 .. To))
+            else Last_Num_Init);
+         Is_Based        : constant Boolean :=
+           Starts_As_Based
+           and then Last_Num_Based < To
+           and then Str (Last_Num_Based + 1) = Str (Last_Num_Init + 1);
+         First_Exp       : constant Integer :=
+           (if Is_Based then Last_Num_Based + 2 else Last_Num_Init + 1);
+       begin
+         (if not Starts_As_Exponent_Format_Ghost (Str (First_Exp .. To))
+          then First_Exp
+          elsif Str (First_Exp + 1) in '-' | '+' then
+            Last_Number_Ghost (Str (First_Exp + 2 .. To)) + 1
+          else Last_Number_Ghost (Str (First_Exp + 1 .. To)) + 1))
+    with
+      Pre  => Str'Last /= Positive'Last
+        and then From in Str'Range
+        and then To in From .. Str'Last
+        and then Str (From) in '0' .. '9';
+    --  Ghost function that returns the position of the cursor once an unsigned
+    --  number has been seen.
+ 
+    function Slide_To_1 (Str : String) return String
+    with
+      Post =>
+        Only_Space_Ghost (Str, Str'First, Str'Last) =
+        (for all J in Str'First .. Str'Last =>
+           Slide_To_1'Result (J - Str'First + 1) = ' ');
+    --  Slides Str so that it starts at 1
+ 
+    function Slide_If_Necessary (Str : String) return String is
+      (if Str'Last = Positive'Last then Slide_To_1 (Str) else Str);
+    --  If Str'Last = Positive'Last then slides Str so that it starts at 1
+ 
+    function Is_Unsigned_Ghost (Str : String) return Boolean is
+      (declare
+         Non_Blank : constant Positive := First_Non_Space_Ghost
+           (Str, Str'First, Str'Last);
+         Fst_Num   : constant Positive :=
+           (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
+       begin
+         Is_Raw_Unsigned_Format_Ghost (Str (Fst_Num .. Str'Last))
+           and then Raw_Unsigned_No_Overflow_Ghost (Str, Fst_Num, Str'Last)
+           and then Only_Space_Ghost
+              (Str, Raw_Unsigned_Last_Ghost (Str, Fst_Num, Str'Last), Str'Last))
+    with
+        Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
+        and then Str'Last /= Positive'Last;
+    --  Ghost function that determines if Str has the correct format for an
+    --  unsigned number, consisting in some blank characters, an optional
+    --  + sign, a raw unsigned number which does not overflow and then some
+    --  more blank characters.
+ 
+    function Is_Value_Unsigned_Ghost (Str : String; Val : Uns) return Boolean is
+      (declare
+         Non_Blank : constant Positive := First_Non_Space_Ghost
+           (Str, Str'First, Str'Last);
+         Fst_Num   : constant Positive :=
+           (if Str (Non_Blank) = '+' then Non_Blank + 1 else Non_Blank);
+       begin
+         Val = Scan_Raw_Unsigned_Ghost (Str, Fst_Num, Str'Last))
+    with
+        Pre => not Only_Space_Ghost (Str, Str'First, Str'Last)
+        and then Str'Last /= Positive'Last
+        and then Is_Unsigned_Ghost (Str);
+    --  Ghost function that returns True if Val is the value corresponding to
+    --  the unsigned number represented by Str.
+ 
+    procedure Prove_Scan_Based_Number_Ghost_Eq
+      (Str1, Str2 : String;
+       From, To : Integer;
+       Base     : Uns := 10;
+       Acc      : Uns := 0)
+    with
+      Subprogram_Variant => (Increases => From),
+      Pre  => Str1'Last /= Positive'Last
+        and then Str2'Last /= Positive'Last
+        and then
+          (From > To or else (From >= Str1'First and then To <= Str1'Last))
+        and then
+          (From > To or else (From >= Str2'First and then To <= Str2'Last))
+        and then Only_Hexa_Ghost (Str1, From, To)
+        and then (for all J in From .. To => Str1 (J) = Str2 (J)),
+      Post =>
+        Scan_Based_Number_Ghost (Str1, From, To, Base, Acc)
+          = Scan_Based_Number_Ghost (Str2, From, To, Base, Acc);
+    --  Scan_Based_Number_Ghost returns the same value on two slices which are
+    --  equal.
+ 
+    procedure Prove_Scan_Only_Decimal_Ghost
+      (Str : String;
+       Val : Uns)
+    with
+      Pre  => Str'Last /= Positive'Last
+        and then Str'Length >= 2
+        and then Str (Str'First) = ' '
+        and then Only_Decimal_Ghost (Str, Str'First + 1, Str'Last)
+        and then Scan_Based_Number_Ghost (Str, Str'First + 1, Str'Last)
+          = Wrap_Option (Val),
+      Post => Is_Unsigned_Ghost (Slide_If_Necessary (Str))
+        and then
+          Is_Value_Unsigned_Ghost (Slide_If_Necessary (Str), Val);
+    --  Ghost lemma used in the proof of 'Image implementation, to prove that
+    --  the result of Value_Unsigned on a decimal string is the same as the
+    --  result of Scan_Based_Number_Ghost.
+ 
+    --  Bundle Uns type with other types, constants and subprograms used in
+    --  ghost code, so that this package can be instantiated once and used
+    --  multiple times as generic formal for a given Int type.
+ 
+    package Uns_Params is new System.Val_Util.Uns_Params
+      (Uns                                        => Uns,
+       P_Uns_Option                               => Uns_Option,
+       P_Wrap_Option                              => Wrap_Option,
+       P_Hexa_To_Unsigned_Ghost                   => Hexa_To_Unsigned_Ghost,
+       P_Scan_Overflows_Ghost                     => Scan_Overflows_Ghost,
+       P_Is_Raw_Unsigned_Format_Ghost             =>
+          Is_Raw_Unsigned_Format_Ghost,
+       P_Scan_Split_No_Overflow_Ghost             =>
+          Scan_Split_No_Overflow_Ghost,
+       P_Raw_Unsigned_No_Overflow_Ghost           =>
+          Raw_Unsigned_No_Overflow_Ghost,
+       P_Exponent_Unsigned_Ghost                  => Exponent_Unsigned_Ghost,
+       P_Lemma_Exponent_Unsigned_Ghost_Base       =>
+          Lemma_Exponent_Unsigned_Ghost_Base,
+       P_Lemma_Exponent_Unsigned_Ghost_Overflow   =>
+          Lemma_Exponent_Unsigned_Ghost_Overflow,
+       P_Lemma_Exponent_Unsigned_Ghost_Step       =>
+          Lemma_Exponent_Unsigned_Ghost_Step,
+       P_Scan_Raw_Unsigned_Ghost                  => Scan_Raw_Unsigned_Ghost,
+       P_Lemma_Scan_Based_Number_Ghost_Base       =>
+          Lemma_Scan_Based_Number_Ghost_Base,
+       P_Lemma_Scan_Based_Number_Ghost_Underscore =>
+          Lemma_Scan_Based_Number_Ghost_Underscore,
+       P_Lemma_Scan_Based_Number_Ghost_Overflow   =>
+          Lemma_Scan_Based_Number_Ghost_Overflow,
+       P_Lemma_Scan_Based_Number_Ghost_Step       =>
+          Lemma_Scan_Based_Number_Ghost_Step,
+       P_Raw_Unsigned_Last_Ghost                  => Raw_Unsigned_Last_Ghost,
+       P_Only_Decimal_Ghost                       => Only_Decimal_Ghost,
+       P_Scan_Based_Number_Ghost                  => Scan_Based_Number_Ghost,
+       P_Is_Unsigned_Ghost                        =>
+          Is_Unsigned_Ghost,
+       P_Is_Value_Unsigned_Ghost                  =>
+          Is_Value_Unsigned_Ghost,
+       P_Prove_Scan_Only_Decimal_Ghost            =>
+          Prove_Scan_Only_Decimal_Ghost,
+       P_Prove_Scan_Based_Number_Ghost_Eq         =>
+          Prove_Scan_Based_Number_Ghost_Eq);
+ 
+ private
+ 
+    ----------------
+    -- Slide_To_1 --
+    ----------------
+ 
+    function Slide_To_1 (Str : String) return String is
+       (declare
+          Res : constant String (1 .. Str'Length) := Str;
+        begin
+          Res);
+ 
+ end System.Value_U_Spec;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-veboop.adb gcc-13.1.0/gcc/ada/libgnat/s-veboop.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-veboop.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-veboop.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-veboop.ads gcc-13.1.0/gcc/ada/libgnat/s-veboop.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-veboop.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-veboop.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vector.ads gcc-13.1.0/gcc/ada/libgnat/s-vector.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vector.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vector.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vercon.adb gcc-13.1.0/gcc/ada/libgnat/s-vercon.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-vercon.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vercon.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-vercon.ads gcc-13.1.0/gcc/ada/libgnat/s-vercon.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-vercon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-vercon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchcnv.adb gcc-13.1.0/gcc/ada/libgnat/s-wchcnv.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wchcnv.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchcnv.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchcnv.ads gcc-13.1.0/gcc/ada/libgnat/s-wchcnv.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wchcnv.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchcnv.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchcon.adb gcc-13.1.0/gcc/ada/libgnat/s-wchcon.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wchcon.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchcon.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2005-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchcon.ads gcc-13.1.0/gcc/ada/libgnat/s-wchcon.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wchcon.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchcon.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchjis.adb gcc-13.1.0/gcc/ada/libgnat/s-wchjis.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wchjis.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchjis.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchjis.ads gcc-13.1.0/gcc/ada/libgnat/s-wchjis.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wchjis.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchjis.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchstw.adb gcc-13.1.0/gcc/ada/libgnat/s-wchstw.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wchstw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchstw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchstw.ads gcc-13.1.0/gcc/ada/libgnat/s-wchstw.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wchstw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchstw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchwts.adb gcc-13.1.0/gcc/ada/libgnat/s-wchwts.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wchwts.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchwts.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wchwts.ads gcc-13.1.0/gcc/ada/libgnat/s-wchwts.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wchwts.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wchwts.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widboo.adb gcc-13.1.0/gcc/ada/libgnat/s-widboo.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widboo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widboo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widboo.ads gcc-13.1.0/gcc/ada/libgnat/s-widboo.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widboo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widboo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widcha.adb gcc-13.1.0/gcc/ada/libgnat/s-widcha.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widcha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widcha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widcha.ads gcc-13.1.0/gcc/ada/libgnat/s-widcha.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widcha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widcha.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widenu.adb gcc-13.1.0/gcc/ada/libgnat/s-widenu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widenu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widenu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widenu.ads gcc-13.1.0/gcc/ada/libgnat/s-widenu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widenu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widenu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widint.ads gcc-13.1.0/gcc/ada/libgnat/s-widint.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widlli.adb gcc-13.1.0/gcc/ada/libgnat/s-widlli.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widlli.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widlli.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widlli.ads gcc-13.1.0/gcc/ada/libgnat/s-widlli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widlli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widlli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widllli.ads gcc-13.1.0/gcc/ada/libgnat/s-widllli.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widllli.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widllli.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widlllu.ads gcc-13.1.0/gcc/ada/libgnat/s-widlllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widlllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widlllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Wid_LLLU
*** 50,57 ****
  is
     subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    function Width_Long_Long_Long_Unsigned is
!      new Width_U (Long_Long_Long_Unsigned);
!    pragma Pure_Function (Width_Long_Long_Long_Unsigned);
  
  end System.Wid_LLLU;
--- 50,60 ----
  is
     subtype Long_Long_Long_Unsigned is Unsigned_Types.Long_Long_Long_Unsigned;
  
!    package Width_Uns is new Width_U (Long_Long_Long_Unsigned);
! 
!    function Width_Long_Long_Long_Unsigned
!      (Lo, Hi : Long_Long_Long_Unsigned)
!       return Natural
!       renames Width_Uns.Width;
  
  end System.Wid_LLLU;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widllu.adb gcc-13.1.0/gcc/ada/libgnat/s-widllu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widllu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widllu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widllu.ads gcc-13.1.0/gcc/ada/libgnat/s-widllu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widllu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widllu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Wid_LLU
*** 50,56 ****
  is
     subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    function Width_Long_Long_Unsigned is new Width_U (Long_Long_Unsigned);
!    pragma Pure_Function (Width_Long_Long_Unsigned);
  
  end System.Wid_LLU;
--- 50,60 ----
  is
     subtype Long_Long_Unsigned is Unsigned_Types.Long_Long_Unsigned;
  
!    package Width_Uns is new Width_U (Long_Long_Unsigned);
! 
!    function Width_Long_Long_Unsigned
!      (Lo, Hi : Long_Long_Unsigned)
!       return Natural
!       renames Width_Uns.Width;
  
  end System.Wid_LLU;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widthi.adb gcc-13.1.0/gcc/ada/libgnat/s-widthi.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widthi.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widthi.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widthi.ads gcc-13.1.0/gcc/ada/libgnat/s-widthi.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widthi.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widthi.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widthu.adb gcc-13.1.0/gcc/ada/libgnat/s-widthu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widthu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widthu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,185 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
! use Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
! 
! function System.Width_U (Lo, Hi : Uns) return Natural is
  
     --  Ghost code, loop invariants and assertions in this unit are meant for
     --  analysis only, not for run-time checking, as it would be too costly
     --  otherwise. This is enforced by setting the assertion policy to Ignore.
  
!    pragma Assertion_Policy (Ghost          => Ignore,
!                             Loop_Invariant => Ignore,
!                             Assert         => Ignore);
! 
!    -----------------------
!    -- Local Subprograms --
!    -----------------------
  
!    package Unsigned_Conversion is new Unsigned_Conversions (Int => Uns);
  
!    function Big (Arg : Uns) return Big_Integer renames
!      Unsigned_Conversion.To_Big_Integer;
  
!    --  Maximum value of exponent for 10 that fits in Uns'Base
!    function Max_Log10 return Natural is
!      (case Uns'Base'Size is
!         when 8   => 2,
!         when 16  => 4,
!         when 32  => 9,
!         when 64  => 19,
!         when 128 => 38,
!         when others => raise Program_Error)
!    with Ghost;
  
!    ------------------
!    -- Local Lemmas --
!    ------------------
  
!    procedure Lemma_Lower_Mult (A, B, C : Big_Natural)
!    with
!      Ghost,
!      Pre  => A <= B,
!      Post => A * C <= B * C;
  
!    procedure Lemma_Div_Commutation (X, Y : Uns)
!    with
!      Ghost,
!      Pre  => Y /= 0,
!      Post => Big (X) / Big (Y) = Big (X / Y);
  
!    procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive)
!    with
!      Ghost,
!      Post => X / Y / Z = X / (Y * Z);
  
!    ----------------------
!    -- Lemma_Lower_Mult --
!    ----------------------
  
!    procedure Lemma_Lower_Mult (A, B, C : Big_Natural) is null;
  
!    ---------------------------
!    -- Lemma_Div_Commutation --
!    ---------------------------
  
!    procedure Lemma_Div_Commutation (X, Y : Uns) is null;
  
!    ---------------------
!    -- Lemma_Div_Twice --
!    ---------------------
  
!    procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive) is
!       XY  : constant Big_Natural := X / Y;
!       YZ  : constant Big_Natural := Y * Z;
!       XYZ : constant Big_Natural := X / Y / Z;
!       R   : constant Big_Natural := (XY rem Z) * Y + (X rem Y);
!    begin
!       pragma Assert (X = XY * Y + (X rem Y));
!       pragma Assert (XY = XY / Z * Z + (XY rem Z));
!       pragma Assert (X = XYZ * YZ + R);
!       pragma Assert ((XY rem Z) * Y <= (Z - 1) * Y);
!       pragma Assert (R <= YZ - 1);
!       pragma Assert (X / YZ = (XYZ * YZ + R) / YZ);
!       pragma Assert (X / YZ = XYZ + R / YZ);
!    end Lemma_Div_Twice;
  
!    --  Local variables
  
!    W : Natural;
!    T : Uns;
  
!    --  Local ghost variables
  
!    Max_W  : constant Natural := Max_Log10 with Ghost;
!    Big_10 : constant Big_Integer := Big (10) with Ghost;
  
!    Pow    : Big_Integer := 1 with Ghost;
!    T_Init : constant Uns := Uns'Max (Lo, Hi) with Ghost;
  
! --  Start of processing for System.Width_U
  
! begin
!    if Lo > Hi then
!       return 0;
  
!    else
!       --  Minimum value is 2, one for space, one for digit
  
!       W := 2;
  
!       --  Get max of absolute values
  
!       T := Uns'Max (Lo, Hi);
  
!       --  Increase value if more digits required
  
!       while T >= 10 loop
!          Lemma_Div_Commutation (T, 10);
!          Lemma_Div_Twice (Big (T_Init), Big_10 ** (W - 2), Big_10);
  
!          T := T / 10;
!          W := W + 1;
!          Pow := Pow * 10;
  
!          pragma Loop_Invariant (W in 3 .. Max_W + 3);
!          pragma Loop_Invariant (Pow = Big_10 ** (W - 2));
!          pragma Loop_Invariant (Big (T) = Big (T_Init) / Pow);
!          pragma Loop_Variant (Decreases => T);
!       end loop;
  
!       declare
!          F : constant Big_Integer := Big_10 ** (W - 2) with Ghost;
!          Q : constant Big_Integer := Big (T_Init) / F with Ghost;
!          R : constant Big_Integer := Big (T_Init) rem F with Ghost;
!       begin
!          pragma Assert (Q < Big_10);
!          pragma Assert (Big (T_Init) = Q * F + R);
!          Lemma_Lower_Mult (Q, Big (9), F);
!          pragma Assert (Big (T_Init) <= Big (9) * F + F - 1);
!          pragma Assert (Big (T_Init) < Big_10 * F);
!          pragma Assert (Big_10 * F = Big_10 ** (W - 1));
!       end;
  
!       --  This is an expression of the functional postcondition for Width_U,
!       --  which cannot be expressed readily as a postcondition as this would
!       --  require making the instantiation Unsigned_Conversion and function
!       --  Big available from the spec.
  
!       pragma Assert (Big (Lo) < Big_10 ** (W - 1));
!       pragma Assert (Big (Hi) < Big_10 ** (W - 1));
  
!       return W;
!    end if;
  
  end System.Width_U;
--- 29,180 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body System.Width_U is
  
     --  Ghost code, loop invariants and assertions in this unit are meant for
     --  analysis only, not for run-time checking, as it would be too costly
     --  otherwise. This is enforced by setting the assertion policy to Ignore.
  
!    pragma Assertion_Policy (Ghost              => Ignore,
!                             Loop_Invariant     => Ignore,
!                             Assert             => Ignore,
!                             Assert_And_Cut     => Ignore,
!                             Subprogram_Variant => Ignore);
  
!    function Width (Lo, Hi : Uns) return Natural is
  
!       --  Ghost code, loop invariants and assertions in this unit are meant for
!       --  analysis only, not for run-time checking, as it would be too costly
!       --  otherwise. This is enforced by setting the assertion policy to
!       --  Ignore.
  
!       pragma Assertion_Policy (Ghost          => Ignore,
!                                Loop_Invariant => Ignore,
!                                Assert         => Ignore);
  
!       ------------------
!       -- Local Lemmas --
!       ------------------
  
!       procedure Lemma_Lower_Mult (A, B, C : Big_Natural)
!       with
!         Ghost,
!         Pre  => A <= B,
!         Post => A * C <= B * C;
  
!       procedure Lemma_Div_Commutation (X, Y : Uns)
!       with
!         Ghost,
!         Pre  => Y /= 0,
!         Post => Big (X) / Big (Y) = Big (X / Y);
  
!       procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive)
!       with
!         Ghost,
!         Post => X / Y / Z = X / (Y * Z);
  
!       procedure Lemma_Euclidian (V, Q, F, R : Big_Integer)
!       with
!         Ghost,
!         Pre  => F > 0 and then Q = V / F and then R = V rem F,
!         Post => V = Q * F + R;
!       --  Ghost lemma to prove the relation between the quotient/remainder of
!       --  division by F and the value V.
  
!       ----------------------
!       -- Lemma_Lower_Mult --
!       ----------------------
  
!       procedure Lemma_Lower_Mult (A, B, C : Big_Natural) is null;
  
!       ---------------------------
!       -- Lemma_Div_Commutation --
!       ---------------------------
  
!       procedure Lemma_Div_Commutation (X, Y : Uns) is null;
  
!       ---------------------
!       -- Lemma_Div_Twice --
!       ---------------------
  
!       procedure Lemma_Div_Twice (X : Big_Natural; Y, Z : Big_Positive) is
!          XY  : constant Big_Natural := X / Y;
!          YZ  : constant Big_Natural := Y * Z;
!          XYZ : constant Big_Natural := X / Y / Z;
!          R   : constant Big_Natural := (XY rem Z) * Y + (X rem Y);
!       begin
!          pragma Assert (X = XY * Y + (X rem Y));
!          pragma Assert (XY = XY / Z * Z + (XY rem Z));
!          pragma Assert (X = XYZ * YZ + R);
!          pragma Assert ((XY rem Z) * Y <= (Z - 1) * Y);
!          pragma Assert (R <= YZ - 1);
!          pragma Assert (X / YZ = (XYZ * YZ + R) / YZ);
!          pragma Assert (X / YZ = XYZ + R / YZ);
!       end Lemma_Div_Twice;
  
!       ---------------------
!       -- Lemma_Euclidian --
!       ---------------------
  
!       procedure Lemma_Euclidian (V, Q, F, R : Big_Integer) is null;
  
!       --  Local variables
  
!       W : Natural;
!       T : Uns;
  
!       --  Local ghost variables
  
!       Max_W  : constant Natural := Max_Log10 with Ghost;
!       Pow    : Big_Integer := 1 with Ghost;
!       T_Init : constant Uns := Uns'Max (Lo, Hi) with Ghost;
  
!    --  Start of processing for System.Width_U
  
!    begin
!       if Lo > Hi then
!          return 0;
  
!       else
!          --  Minimum value is 2, one for space, one for digit
  
!          W := 2;
  
!          --  Get max of absolute values
  
!          T := Uns'Max (Lo, Hi);
  
!          --  Increase value if more digits required
  
!          while T >= 10 loop
!             Lemma_Div_Commutation (T, 10);
!             Lemma_Div_Twice (Big (T_Init), Big_10 ** (W - 2), Big_10);
  
!             T := T / 10;
!             W := W + 1;
!             Pow := Pow * 10;
  
!             pragma Loop_Invariant (W in 3 .. Max_W + 2);
!             pragma Loop_Invariant (Pow = Big_10 ** (W - 2));
!             pragma Loop_Invariant (Big (T) = Big (T_Init) / Pow);
!             pragma Loop_Variant (Decreases => T);
!          end loop;
  
!          declare
!             F : constant Big_Integer := Big_10 ** (W - 2) with Ghost;
!             Q : constant Big_Integer := Big (T_Init) / F with Ghost;
!             R : constant Big_Integer := Big (T_Init) rem F with Ghost;
!          begin
!             pragma Assert (Q < Big_10);
!             Lemma_Euclidian (Big (T_Init), Q, F, R);
!             Lemma_Lower_Mult (Q, Big (9), F);
!             pragma Assert (Big (T_Init) <= Big (9) * F + F - 1);
!             pragma Assert (Big (T_Init) < Big_10 * F);
!             pragma Assert (Big_10 * F = Big_10 ** (W - 1));
!          end;
  
!          return W;
!       end if;
!    end Width;
  
  end System.Width_U;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widthu.ads gcc-13.1.0/gcc/ada/libgnat/s-widthu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widthu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widthu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,44 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  --  Compute Width attribute for non-static type derived from a modular integer
  --  type. The arguments Lo, Hi are the bounds of the type.
  
  generic
  
     type Uns is mod <>;
  
! function System.Width_U (Lo, Hi : Uns) return Natural
! with
!   Post => (if Lo > Hi then
!              System.Width_U'Result = 0
!            else
!              System.Width_U'Result > 0);
--- 29,93 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ --  Preconditions in this unit are meant for analysis only, not for run-time
+ --  checking, so that the expected exceptions are raised. This is enforced by
+ --  setting the corresponding assertion policy to Ignore. Postconditions and
+ --  contract cases should not be executed at runtime as well, in order not to
+ --  slow down the execution of these functions.
+ 
+ pragma Assertion_Policy (Pre                => Ignore,
+                          Post               => Ignore,
+                          Contract_Cases     => Ignore,
+                          Ghost              => Ignore,
+                          Subprogram_Variant => Ignore);
+ 
  --  Compute Width attribute for non-static type derived from a modular integer
  --  type. The arguments Lo, Hi are the bounds of the type.
  
+ with Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
+ 
  generic
  
     type Uns is mod <>;
  
! package System.Width_U
!   with Pure
! is
!    package BI_Ghost renames Ada.Numerics.Big_Numbers.Big_Integers_Ghost;
!    subtype Big_Integer is BI_Ghost.Big_Integer with Ghost;
!    subtype Big_Natural is BI_Ghost.Big_Natural with Ghost;
!    subtype Big_Positive is BI_Ghost.Big_Positive with Ghost;
!    use type BI_Ghost.Big_Integer;
! 
!    package Unsigned_Conversion is
!      new BI_Ghost.Unsigned_Conversions (Int => Uns);
! 
!    function Big (Arg : Uns) return Big_Integer renames
!      Unsigned_Conversion.To_Big_Integer;
! 
!    Big_10 : constant Big_Integer := Big (Uns'(10)) with Ghost;
! 
!    --  Maximum value of exponent for 10 that fits in Uns'Base
!    function Max_Log10 return Natural is
!      (case Uns'Base'Size is
!         when 8   => 2,
!         when 16  => 4,
!         when 32  => 9,
!         when 64  => 19,
!         when 128 => 38,
!         when others => raise Program_Error)
!    with Ghost;
! 
!    function Width (Lo, Hi : Uns) return Natural
!    with
!      Post =>
!        (declare
!           W : constant Natural := System.Width_U.Width'Result;
!         begin
!           (if Lo > Hi then W = 0
!            else W > 0
!              and then W <= Max_Log10 + 2
!              and then Big (Lo) < Big_10 ** (W - 1)
!              and then Big (Hi) < Big_10 ** (W - 1)));
! 
! end System.Width_U;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widuns.ads gcc-13.1.0/gcc/ada/libgnat/s-widuns.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widuns.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widuns.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package System.Wid_Uns
*** 50,56 ****
  is
     subtype Unsigned is Unsigned_Types.Unsigned;
  
!    function Width_Unsigned is new Width_U (Unsigned);
!    pragma Pure_Function (Width_Unsigned);
  
  end System.Wid_Uns;
--- 50,58 ----
  is
     subtype Unsigned is Unsigned_Types.Unsigned;
  
!    package Width_Uns is new Width_U (Unsigned);
! 
!    function Width_Unsigned (Lo, Hi : Unsigned) return Natural
!      renames Width_Uns.Width;
  
  end System.Wid_Uns;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widwch.adb gcc-13.1.0/gcc/ada/libgnat/s-widwch.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-widwch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widwch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-widwch.ads gcc-13.1.0/gcc/ada/libgnat/s-widwch.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-widwch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-widwch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-win32.ads gcc-13.1.0/gcc/ada/libgnat/s-win32.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-win32.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-win32.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-winext.ads gcc-13.1.0/gcc/ada/libgnat/s-winext.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-winext.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-winext.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2022, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --         Copyright (C) 2009-2023, Free Software Foundation, Inc.          --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wwdcha.adb gcc-13.1.0/gcc/ada/libgnat/s-wwdcha.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wwdcha.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wwdcha.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wwdcha.ads gcc-13.1.0/gcc/ada/libgnat/s-wwdcha.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wwdcha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wwdcha.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                           --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                           --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wwdenu.adb gcc-13.1.0/gcc/ada/libgnat/s-wwdenu.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wwdenu.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wwdenu.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wwdenu.ads gcc-13.1.0/gcc/ada/libgnat/s-wwdenu.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wwdenu.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wwdenu.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wwdwch.adb gcc-13.1.0/gcc/ada/libgnat/s-wwdwch.adb
*** gcc-12.2.0/gcc/ada/libgnat/s-wwdwch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wwdwch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/s-wwdwch.ads gcc-13.1.0/gcc/ada/libgnat/s-wwdwch.ads
*** gcc-12.2.0/gcc/ada/libgnat/s-wwdwch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/s-wwdwch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-aix.ads gcc-13.1.0/gcc/ada/libgnat/system-aix.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-aix.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-aix.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (AIX/PPC Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (AIX/PPC Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 150,156 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 150,155 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-darwin-arm.ads gcc-13.1.0/gcc/ada/libgnat/system-darwin-arm.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-darwin-arm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-darwin-arm.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Darwin/ARM Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Darwin/ARM Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 166,172 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 166,171 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-darwin-ppc.ads gcc-13.1.0/gcc/ada/libgnat/system-darwin-ppc.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-darwin-ppc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-darwin-ppc.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Darwin/PPC Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Darwin/PPC Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 166,172 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 166,171 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-darwin-x86.ads gcc-13.1.0/gcc/ada/libgnat/system-darwin-x86.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-darwin-x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-darwin-x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (Darwin/x86 Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (Darwin/x86 Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 166,172 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 166,171 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-djgpp.ads gcc-13.1.0/gcc/ada/libgnat/system-djgpp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-djgpp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-djgpp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (DJGPP Version)                               --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (DJGPP Version)                               --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads gcc-13.1.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-dragonfly-x86_64.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (DragonFly BSD/x86_64 Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (DragonFly BSD/x86_64 Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-freebsd.ads gcc-13.1.0/gcc/ada/libgnat/system-freebsd.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-freebsd.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-freebsd.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (FreeBSD Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (FreeBSD Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 141,147 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 141,146 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-hpux-ia64.ads gcc-13.1.0/gcc/ada/libgnat/system-hpux-ia64.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-hpux-ia64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-hpux-ia64.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                           (HP-UX/ia64 Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                           (HP-UX/ia64 Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-hpux.ads gcc-13.1.0/gcc/ada/libgnat/system-hpux.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-hpux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-hpux.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                             (HP-UX Version)                              --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                             (HP-UX Version)                              --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 139,145 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     --------------------------
--- 139,144 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-alpha.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-alpha.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-alpha.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-alpha.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/alpha Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/alpha Version)                         --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-arm.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-arm.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-arm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-arm.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/ARM Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/ARM Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 70,76 ****
  
     Storage_Unit : constant := 8;
     Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Long_Integer'Size;
  
     --  Address comparison
  
--- 70,76 ----
  
     Storage_Unit : constant := 8;
     Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 149,155 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 149,154 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-hppa.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-hppa.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-hppa.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-hppa.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU/Linux-HPPA Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU/Linux-HPPA Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 139,145 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 139,144 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-ia64.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-ia64.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-ia64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-ia64.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (GNU-Linux/ia64 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (GNU-Linux/ia64 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 148,154 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 148,153 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-m68k.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-m68k.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-m68k.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-m68k.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU/Linux/m68k Version)                         --
  --                                                                          --
! --          Copyright (C) 2014-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU/Linux/m68k Version)                         --
  --                                                                          --
! --          Copyright (C) 2014-2023, 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 --
*************** private
*** 150,156 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 150,155 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-mips.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-mips.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-mips.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-mips.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/MIPS Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/MIPS Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-ppc.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-ppc.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-ppc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-ppc.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/PPC Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/PPC Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 148,154 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 148,153 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-riscv.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-riscv.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-riscv.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-riscv.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/RISC-V Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/RISC-V Version)                      --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 139,145 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 139,144 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-s390.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-s390.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-s390.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-s390.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390 Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU-Linux/s390 Version)                        --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 139,145 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 139,144 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-sh4.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-sh4.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-sh4.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-sh4.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/sh4 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/sh4 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 147,153 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 147,152 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-sparc.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-sparc.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-sparc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-sparc.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (GNU/Linux-SPARC Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (GNU/Linux-SPARC Version)                       --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 133,145 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 133,145 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-linux-x86.ads gcc-13.1.0/gcc/ada/libgnat/system-linux-x86.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-linux-x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-linux-x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (GNU-Linux/x86 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (GNU-Linux/x86 Version)                          --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 148,154 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 148,153 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-lynxos178-ppc.ads gcc-13.1.0/gcc/ada/libgnat/system-lynxos178-ppc.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-lynxos178-ppc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-lynxos178-ppc.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (LynxOS-178 PPC Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (LynxOS-178 PPC Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2023, 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 --
*************** private
*** 154,160 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := False;
  
  end System;
--- 154,159 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-lynxos178-x86.ads gcc-13.1.0/gcc/ada/libgnat/system-lynxos178-x86.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-lynxos178-x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-lynxos178-x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (LynxOS-178 X86 Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (LynxOS-178 X86 Version)                         --
  --                                                                          --
! --          Copyright (C) 2009-2023, 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 --
*************** private
*** 154,160 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := False;
  
  end System;
--- 154,159 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-mingw.ads gcc-13.1.0/gcc/ada/libgnat/system-mingw.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-mingw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-mingw.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Windows Version)                             --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     ---------------------------
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-qnx-aarch64.ads gcc-13.1.0/gcc/ada/libgnat/system-qnx-aarch64.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-qnx-aarch64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-qnx-aarch64.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,155 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                         (QNX/Aarch64 Version)                            --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 0.000_001;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := Standard'Word_Size;
-    Memory_Size  : constant := 2 ** Long_Integer'Size;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order :=
-                          Bit_Order'Val (Standard'Default_Bit_Order);
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  System priority is Ada priority + 1, so lies in the range 1 .. 63.
-    --
-    --  If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use
-    --  of the entire range provided by the system.
-    --
-    --  If the scheduling policy is SCHED_OTHER the only valid system priority
-    --  is 1 and other values are simply ignored.
- 
-    Max_Priority           : constant Positive := 61;
-    Max_Interrupt_Priority : constant Positive := 62;
- 
-    subtype Any_Priority       is Integer      range  0 .. 62;
-    subtype Priority           is Any_Priority range  0 .. 61;
-    subtype Interrupt_Priority is Any_Priority range 62 .. 62;
- 
-    Default_Priority : constant Priority := 30;
- 
- private
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Atomic_Primitives : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-qnx-arm.ads gcc-13.1.0/gcc/ada/libgnat/system-qnx-arm.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-qnx-arm.ads	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/libgnat/system-qnx-arm.ads	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,154 ----
+ ------------------------------------------------------------------------------
+ --                                                                          --
+ --                        GNAT RUN-TIME COMPONENTS                          --
+ --                                                                          --
+ --                               S Y S T E M                                --
+ --                                                                          --
+ --                                 S p e c                                  --
+ --                        (QNX-ARM/AARCH64 Version)                         --
+ --                                                                          --
+ --          Copyright (C) 1992-2023, 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 --
+ -- apply solely to the  contents of the part following the private keyword. --
+ --                                                                          --
+ -- GNAT is free software;  you can  redistribute it  and/or modify it under --
+ -- terms of the  GNU General Public License as published  by the Free Soft- --
+ -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
+ -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
+ -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
+ -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
+ --                                                                          --
+ -- As a special exception 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/>.                                          --
+ --                                                                          --
+ -- GNAT was originally developed  by the GNAT team at  New York University. --
+ -- Extensive contributions were provided by Ada Core Technologies Inc.      --
+ --                                                                          --
+ ------------------------------------------------------------------------------
+ 
+ package System is
+    pragma Pure;
+    --  Note that we take advantage of the implementation permission to make
+    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
+    --  2005, this is Pure in any case (AI-362).
+ 
+    pragma No_Elaboration_Code_All;
+    --  Allow the use of that restriction in units that WITH this unit
+ 
+    type Name is (SYSTEM_NAME_GNAT);
+    System_Name : constant Name := SYSTEM_NAME_GNAT;
+ 
+    --  System-Dependent Named Numbers
+ 
+    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
+    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
+ 
+    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
+    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
+ 
+    Max_Base_Digits       : constant := Long_Long_Float'Digits;
+    Max_Digits            : constant := Long_Long_Float'Digits;
+ 
+    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
+    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
+ 
+    Tick                  : constant := 0.000_001;
+ 
+    --  Storage-related Declarations
+ 
+    type Address is private;
+    pragma Preelaborable_Initialization (Address);
+    Null_Address : constant Address;
+ 
+    Storage_Unit : constant := 8;
+    Word_Size    : constant := Standard'Word_Size;
+    Memory_Size  : constant := 2 ** Word_Size;
+ 
+    --  Address comparison
+ 
+    function "<"  (Left, Right : Address) return Boolean;
+    function "<=" (Left, Right : Address) return Boolean;
+    function ">"  (Left, Right : Address) return Boolean;
+    function ">=" (Left, Right : Address) return Boolean;
+    function "="  (Left, Right : Address) return Boolean;
+ 
+    pragma Import (Intrinsic, "<");
+    pragma Import (Intrinsic, "<=");
+    pragma Import (Intrinsic, ">");
+    pragma Import (Intrinsic, ">=");
+    pragma Import (Intrinsic, "=");
+ 
+    --  Other System-Dependent Declarations
+ 
+    type Bit_Order is (High_Order_First, Low_Order_First);
+    Default_Bit_Order : constant Bit_Order :=
+                          Bit_Order'Val (Standard'Default_Bit_Order);
+    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
+ 
+    --  Priority-related Declarations (RM D.1)
+ 
+    --  System priority is Ada priority + 1, so lies in the range 1 .. 63.
+    --
+    --  If the scheduling policy is SCHED_FIFO or SCHED_RR the runtime makes use
+    --  of the entire range provided by the system.
+    --
+    --  If the scheduling policy is SCHED_OTHER the only valid system priority
+    --  is 1 and other values are simply ignored.
+ 
+    Max_Priority           : constant Positive := 61;
+    Max_Interrupt_Priority : constant Positive := 62;
+ 
+    subtype Any_Priority       is Integer      range  0 .. 62;
+    subtype Priority           is Any_Priority range  0 .. 61;
+    subtype Interrupt_Priority is Any_Priority range 62 .. 62;
+ 
+    Default_Priority : constant Priority := 30;
+ 
+ private
+ 
+    type Address is mod Memory_Size;
+    Null_Address : constant Address := 0;
+ 
+    --------------------------------------
+    -- System Implementation Parameters --
+    --------------------------------------
+ 
+    --  These parameters provide information about the target that is used
+    --  by the compiler. They are in the private part of System, where they
+    --  can be accessed using the special circuitry in the Targparm unit
+    --  whose source should be consulted for more detailed descriptions
+    --  of the individual switch values.
+ 
+    Backend_Divide_Checks     : constant Boolean := False;
+    Backend_Overflow_Checks   : constant Boolean := True;
+    Command_Line_Args         : constant Boolean := True;
+    Configurable_Run_Time     : constant Boolean := False;
+    Denorm                    : constant Boolean := True;
+    Duration_32_Bits          : constant Boolean := False;
+    Exit_Status_Supported     : constant Boolean := True;
+    Machine_Overflows         : constant Boolean := False;
+    Machine_Rounds            : constant Boolean := True;
+    Preallocated_Stacks       : constant Boolean := False;
+    Signed_Zeros              : constant Boolean := True;
+    Stack_Check_Default       : constant Boolean := False;
+    Stack_Check_Probes        : constant Boolean := True;
+    Stack_Check_Limits        : constant Boolean := False;
+    Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
+    Support_Composite_Assign  : constant Boolean := True;
+    Support_Composite_Compare : constant Boolean := True;
+    Support_Long_Shifts       : constant Boolean := True;
+    Always_Compatible_Rep     : constant Boolean := False;
+    Suppress_Standard_Library : constant Boolean := False;
+    Use_Ada_Main_Program_Name : constant Boolean := False;
+    ZCX_By_Default            : constant Boolean := True;
+ 
+ end System;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-rtems.ads gcc-13.1.0/gcc/ada/libgnat/system-rtems.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-rtems.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-rtems.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                            (Compiler Version)                            --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 150,162 ****
     Stack_Check_Probes        : constant Boolean := False;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 150,162 ----
     Stack_Check_Probes        : constant Boolean := False;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-solaris-sparc.ads gcc-13.1.0/gcc/ada/libgnat/system-solaris-sparc.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-solaris-sparc.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-solaris-sparc.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (SUN Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (SUN Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-solaris-x86.ads gcc-13.1.0/gcc/ada/libgnat/system-solaris-x86.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-solaris-x86.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-solaris-x86.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (x86 Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (x86 Solaris Version)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 140,146 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
  end System;
--- 140,145 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp-smp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,166 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (VxWorks 6.x ARM RTP)                           --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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.               --
- --                                                                          --
- -- In particular,  you can freely  distribute your programs  built with the --
- -- GNAT Pro compiler, including any required library run-time units,  using --
- -- any licensing terms  of your choosing.  See the AdaCore Software License --
- -- for full details.                                                        --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-smp-arm-link.spec");
-    pragma Linker_Options ("--specs=vxworks-arm-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-arm-rtp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,165 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (VxWorks 6.x ARM RTP)                           --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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.               --
- --                                                                          --
- -- In particular,  you can freely  distribute your programs  built with the --
- -- GNAT Pro compiler, including any required library run-time units,  using --
- -- any licensing terms  of your choosing.  See the AdaCore Software License --
- -- for full details.                                                        --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-arm-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-arm.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-arm.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-arm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-arm.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,160 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (VxWorks Version ARM)                           --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := False;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".out";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-e500-kernel.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,161 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                      (VxWorks 6 Kernel Version E500)                     --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := False;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    --  MPC8548ECE Chip Errata Rev 8: signed zero not reliable
-    Signed_Zeros              : constant Boolean := False;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".out";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp-smp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,167 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                        (VxWorks 6.x SMP E500 RTP)                        --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks SMP version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-smp-e500-link.spec");
-    pragma Linker_Options ("--specs=vxworks-e500-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    --  MPC8548ECE Chip Errata Rev 8: signed zero not reliable
-    Signed_Zeros              : constant Boolean := False;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-e500-rtp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,165 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (VxWorks 6.x E500 RTP)                          --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-e500-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-ppc-kernel.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 6 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 152,158 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 152,157 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (VxWorks 6.x SMP PPC RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (VxWorks 6.x SMP PPC RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 158,164 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 158,163 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-ppc-rtp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 6.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 6.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 157,163 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 157,162 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-x86-kernel.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,164 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                      (VxWorks 6 Kernel Version x86)                      --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-x86-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := False;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Atomic_Primitives : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".out";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp-smp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,165 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                    (VxWorks Version x86 for SMP RTPs)                    --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-smp-x86-link.spec");
-    pragma Linker_Options ("--specs=vxworks-x86-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Atomic_Primitives : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks-x86-rtp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,164 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                     (VxWorks Version x86 for RTPs)                       --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-x86-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Atomic_Primitives : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-aarch64-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                        (VxWorks 7.x AARCH64 RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                        (VxWorks 7.x AARCH64 RTP)                         --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 64;
!    Memory_Size  : constant := 2 ** 64;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 151,163 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 151,163 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-aarch64.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7.x AARCH64 Kernel)                        --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7.x AARCH64 Kernel)                        --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 64;
!    Memory_Size  : constant := 2 ** 64;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 148,160 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 148,160 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-arm-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                           (VxWorks 7 ARM RTP)                            --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                           (VxWorks 7 ARM RTP)                            --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 148,160 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 148,160 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-arm.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-arm.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-arm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-arm.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks Version ARM)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks Version ARM)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 146,158 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 146,158 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-e500-kernel.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,161 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                      (VxWorks 7 Kernel Version E500)                     --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := False;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    --  MPC8548ECE Chip Errata Rev 8: signed zero not reliable
-    Signed_Zeros              : constant Boolean := False;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".out";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp-smp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,166 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                         (VxWorks 7.x E500 RTP)                           --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks7-rtp-base-link.spec");
-    --  Define the symbol wrs_rtp_base
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    --  MPC8548ECE Chip Errata Rev 8: signed zero not reliable
-    Signed_Zeros              : constant Boolean := False;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-e500-rtp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,165 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (VxWorks 7.x E500 RTP)                          --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-e500-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc-kernel.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version PPC)                      --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 146,158 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 146,158 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := False;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                          (VxWorks 7.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                          (VxWorks 7.x PPC RTP)                           --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 151,163 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 151,163 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := False;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc-rtp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,165 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                          (VxWorks 7.x PPC RTP)                           --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  This is the VxWorks version of this package for RTPs
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := High_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-ppc-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-kernel.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                       (VxWorks 7.x PPC64 Kernel)                         --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                       (VxWorks 7.x PPC64 Kernel)                         --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 64;
!    Memory_Size  : constant := 2 ** 64;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 148,160 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 148,160 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-ppc64-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                         (VxWorks 7.x PPC64 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                         (VxWorks 7.x PPC64 RTP)                          --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 71,78 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 64;
!    Memory_Size  : constant := 2 ** 64;
  
     --  Address comparison
  
--- 71,78 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 151,163 ****
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 151,163 ----
     Stack_Check_Probes        : constant Boolean := True;
     Stack_Check_Limits        : constant Boolean := False;
     Support_Aggregates        : constant Boolean := True;
+    Support_Atomic_Primitives : constant Boolean := True;
     Support_Composite_Assign  : constant Boolean := True;
     Support_Composite_Compare : constant Boolean := True;
     Support_Long_Shifts       : constant Boolean := True;
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86-kernel.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version x86)                      --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                      (VxWorks 7 Kernel Version x86)                      --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 153,159 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 153,158 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                     (VxWorks 7 Version x86 for RTPs)                     --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                     (VxWorks 7 Version x86 for RTPs)                     --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 32;
!    Memory_Size  : constant := 2 ** 32;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 156,162 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 156,161 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86-rtp.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,164 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                        GNAT RUN-TIME COMPONENTS                          --
- --                                                                          --
- --                               S Y S T E M                                --
- --                                                                          --
- --                                 S p e c                                  --
- --                    (VxWorks 7 Version x86 for RTPs)                      --
- --                                                                          --
- --          Copyright (C) 1992-2022, 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 --
- -- apply solely to the  contents of the part following the private keyword. --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY --
- -- or FITNESS FOR A PARTICULAR PURPOSE.                                     --
- --                                                                          --
- -- As a special exception 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/>.                                          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- package System is
-    pragma Pure;
-    --  Note that we take advantage of the implementation permission to make
-    --  this unit Pure instead of Preelaborable; see RM 13.7.1(15). In Ada
-    --  2005, this is Pure in any case (AI-362).
- 
-    pragma No_Elaboration_Code_All;
-    --  Allow the use of that restriction in units that WITH this unit
- 
-    type Name is (SYSTEM_NAME_GNAT);
-    System_Name : constant Name := SYSTEM_NAME_GNAT;
- 
-    --  System-Dependent Named Numbers
- 
-    Min_Int             : constant := -2 ** (Standard'Max_Integer_Size - 1);
-    Max_Int             : constant :=  2 ** (Standard'Max_Integer_Size - 1) - 1;
- 
-    Max_Binary_Modulus    : constant := 2 ** Standard'Max_Integer_Size;
-    Max_Nonbinary_Modulus : constant := 2 ** Integer'Size - 1;
- 
-    Max_Base_Digits       : constant := Long_Long_Float'Digits;
-    Max_Digits            : constant := Long_Long_Float'Digits;
- 
-    Max_Mantissa          : constant := Standard'Max_Integer_Size - 1;
-    Fine_Delta            : constant := 2.0 ** (-Max_Mantissa);
- 
-    Tick                  : constant := 1.0 / 60.0;
- 
-    --  Storage-related Declarations
- 
-    type Address is private;
-    pragma Preelaborable_Initialization (Address);
-    Null_Address : constant Address;
- 
-    Storage_Unit : constant := 8;
-    Word_Size    : constant := 32;
-    Memory_Size  : constant := 2 ** 32;
- 
-    --  Address comparison
- 
-    function "<"  (Left, Right : Address) return Boolean;
-    function "<=" (Left, Right : Address) return Boolean;
-    function ">"  (Left, Right : Address) return Boolean;
-    function ">=" (Left, Right : Address) return Boolean;
-    function "="  (Left, Right : Address) return Boolean;
- 
-    pragma Import (Intrinsic, "<");
-    pragma Import (Intrinsic, "<=");
-    pragma Import (Intrinsic, ">");
-    pragma Import (Intrinsic, ">=");
-    pragma Import (Intrinsic, "=");
- 
-    --  Other System-Dependent Declarations
- 
-    type Bit_Order is (High_Order_First, Low_Order_First);
-    Default_Bit_Order : constant Bit_Order := Low_Order_First;
-    pragma Warnings (Off, Default_Bit_Order); -- kill constant condition warning
- 
-    --  Priority-related Declarations (RM D.1)
- 
-    --  Ada priorities are mapped to VxWorks priorities using the following
-    --  transformation: 255 - Ada Priority
- 
-    --  Ada priorities are used as follows:
- 
-    --  256        is reserved for the VxWorks kernel
-    --  248 - 255  correspond to hardware interrupt levels 0 .. 7
-    --  247        is a catchall default "interrupt" priority for signals,
-    --             allowing higher priority than normal tasks, but lower than
-    --             hardware priority levels.  Protected Object ceilings can
-    --             override these values.
-    --  246        is used by the Interrupt_Manager task
- 
-    Max_Priority           : constant Positive := 245;
-    Max_Interrupt_Priority : constant Positive := 255;
- 
-    subtype Any_Priority       is Integer      range   0 .. 255;
-    subtype Priority           is Any_Priority range   0 .. 245;
-    subtype Interrupt_Priority is Any_Priority range 246 .. 255;
- 
-    Default_Priority : constant Priority := 122;
- 
- private
- 
-    pragma Linker_Options ("--specs=vxworks-x86-link.spec");
-    --  Setup proper set of -L's for this configuration
- 
-    type Address is mod Memory_Size;
-    Null_Address : constant Address := 0;
- 
-    --------------------------------------
-    -- System Implementation Parameters --
-    --------------------------------------
- 
-    --  These parameters provide information about the target that is used
-    --  by the compiler. They are in the private part of System, where they
-    --  can be accessed using the special circuitry in the Targparm unit
-    --  whose source should be consulted for more detailed descriptions
-    --  of the individual switch values.
- 
-    Backend_Divide_Checks     : constant Boolean := False;
-    Backend_Overflow_Checks   : constant Boolean := True;
-    Command_Line_Args         : constant Boolean := True;
-    Configurable_Run_Time     : constant Boolean := False;
-    Denorm                    : constant Boolean := True;
-    Duration_32_Bits          : constant Boolean := False;
-    Exit_Status_Supported     : constant Boolean := True;
-    Machine_Overflows         : constant Boolean := False;
-    Machine_Rounds            : constant Boolean := True;
-    Preallocated_Stacks       : constant Boolean := False;
-    Signed_Zeros              : constant Boolean := True;
-    Stack_Check_Default       : constant Boolean := False;
-    Stack_Check_Probes        : constant Boolean := True;
-    Stack_Check_Limits        : constant Boolean := False;
-    Support_Aggregates        : constant Boolean := True;
-    Support_Atomic_Primitives : constant Boolean := True;
-    Support_Composite_Assign  : constant Boolean := True;
-    Support_Composite_Compare : constant Boolean := True;
-    Support_Long_Shifts       : constant Boolean := True;
-    Always_Compatible_Rep     : constant Boolean := False;
-    Suppress_Standard_Library : constant Boolean := False;
-    Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
-    ZCX_By_Default            : constant Boolean := True;
- 
-    Executable_Extension : constant String := ".vxe";
- 
- end System;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-kernel.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                    (VxWorks 7 Kernel Version x86_64)                     --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                    (VxWorks 7 Kernel Version x86_64)                     --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** package System is
*** 69,76 ****
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := 64;
!    Memory_Size  : constant := 2 ** 64;
  
     --  Address comparison
  
--- 69,76 ----
     Null_Address : constant Address;
  
     Storage_Unit : constant := 8;
!    Word_Size    : constant := Standard'Word_Size;
!    Memory_Size  : constant := 2 ** Word_Size;
  
     --  Address comparison
  
*************** private
*** 153,159 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := True;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".out";
--- 153,158 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads
*** gcc-12.2.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/libgnat/system-vxworks7-x86_64-rtp-smp.ads	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                 S p e c                                  --
  --                    (VxWorks 7 Version x86_64 for RTPs)                   --
  --                                                                          --
! --          Copyright (C) 1992-2022, 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 --
--- 7,13 ----
  --                                 S p e c                                  --
  --                    (VxWorks 7 Version x86_64 for RTPs)                   --
  --                                                                          --
! --          Copyright (C) 1992-2023, 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 --
*************** private
*** 156,162 ****
     Always_Compatible_Rep     : constant Boolean := False;
     Suppress_Standard_Library : constant Boolean := False;
     Use_Ada_Main_Program_Name : constant Boolean := False;
-    Frontend_Exceptions       : constant Boolean := False;
     ZCX_By_Default            : constant Boolean := True;
  
     Executable_Extension : constant String := ".vxe";
--- 156,161 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/link.c gcc-13.1.0/gcc/ada/link.c
*** gcc-12.2.0/gcc/ada/link.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/link.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/live.adb gcc-13.1.0/gcc/ada/live.adb
*** gcc-12.2.0/gcc/ada/live.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/live.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/live.ads gcc-13.1.0/gcc/ada/live.ads
*** gcc-12.2.0/gcc/ada/live.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/live.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/locales.c gcc-13.1.0/gcc/ada/locales.c
*** gcc-12.2.0/gcc/ada/locales.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/locales.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2010-2022, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2010-2023, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 35,40 ****
--- 35,42 ----
  #include <ctype.h>
  #include <stddef.h>
  
+ #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+ 
  typedef char char4 [4];
  
  /* Table containing equivalences between ISO_639_1 codes and their ISO_639_3
*************** str_get_last_byte (char *lc_all) {
*** 649,655 ****
  
  static char*
  iso_639_1_to_639_3(char* iso_639_1_code) {
!   int len = sizeof(iso_639)/sizeof(iso_639[0]);
    char **p = iso_639;
    int j;
  
--- 651,657 ----
  
  static char*
  iso_639_1_to_639_3(char* iso_639_1_code) {
!   int len = ARRAY_SIZE (iso_639);
    char **p = iso_639;
    int j;
  
*************** iso_639_1_to_639_3(char* iso_639_1_code)
*** 673,679 ****
  
  static char*
  language_name_to_639_3(char* name) {
!   int len = sizeof(iso_639)/sizeof(iso_639[0]);
    char **p = iso_639;
    int j;
  
--- 675,681 ----
  
  static char*
  language_name_to_639_3(char* name) {
!   int len = ARRAY_SIZE (iso_639);
    char **p = iso_639;
    int j;
  
*************** language_name_to_639_3(char* name) {
*** 695,701 ****
  
  static char*
  country_name_to_3166 (char* name) {
!   int len = sizeof(iso_3166)/sizeof(iso_3166[0]);
    char **p = iso_3166;
    int j;
  
--- 697,703 ----
  
  static char*
  country_name_to_3166 (char* name) {
!   int len = ARRAY_SIZE (iso_3166);
    char **p = iso_3166;
    int j;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/make.adb gcc-13.1.0/gcc/ada/make.adb
*** gcc-12.2.0/gcc/ada/make.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/make.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with SFN_Scan;
*** 44,49 ****
--- 44,50 ----
  with Sinput;
  with Snames;
  with Stringt;
+ with Uintp;
  
  pragma Warnings (Off);
  with System.HTable;
*************** package body Make is
*** 3676,3681 ****
--- 3677,3683 ----
        Linker_Switches.Init;
  
        Csets.Initialize;
+       Uintp.Initialize;
        Snames.Initialize;
        Stringt.Initialize;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/make.ads gcc-13.1.0/gcc/ada/make.ads
*** gcc-12.2.0/gcc/ada/make.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/make.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/make_util.adb gcc-13.1.0/gcc/ada/make_util.adb
*** gcc-12.2.0/gcc/ada/make_util.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/make_util.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/make_util.ads gcc-13.1.0/gcc/ada/make_util.ads
*** gcc-12.2.0/gcc/ada/make_util.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/make_util.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2004-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/makeusg.adb gcc-13.1.0/gcc/ada/makeusg.adb
*** gcc-12.2.0/gcc/ada/makeusg.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/makeusg.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin
*** 54,59 ****
--- 54,66 ----
  
     Display_Usage_Version_And_Help;
  
+    --  Line for -P
+ 
+    Write_Str ("  -Pproj   Build GNAT Project File proj using GPRbuild");
+    Write_Eol;
+    Write_Str ("           Treats all other switches as GPRbuild switches");
+    Write_Eol;
+ 
     --  Line for -a
  
     Write_Str ("  -a       Consider all files, even readonly ali files");
*************** begin
*** 169,179 ****
     Write_Str ("  -p       Create missing obj, lib and exec dirs");
     Write_Eol;
  
-    --  Line for -P
- 
-    Write_Str ("  -Pproj   Use GNAT Project File proj");
-    Write_Eol;
- 
     --  Line for -q
  
     Write_Str ("  -q       Be quiet/terse");
--- 176,181 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/makeusg.ads gcc-13.1.0/gcc/ada/makeusg.ads
*** gcc-12.2.0/gcc/ada/makeusg.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/makeusg.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/mdll-fil.adb gcc-13.1.0/gcc/ada/mdll-fil.adb
*** gcc-12.2.0/gcc/ada/mdll-fil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mdll-fil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/mdll-fil.ads gcc-13.1.0/gcc/ada/mdll-fil.ads
*** gcc-12.2.0/gcc/ada/mdll-fil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mdll-fil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/mdll-utl.adb gcc-13.1.0/gcc/ada/mdll-utl.adb
*** gcc-12.2.0/gcc/ada/mdll-utl.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mdll-utl.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/mdll-utl.ads gcc-13.1.0/gcc/ada/mdll-utl.ads
*** gcc-12.2.0/gcc/ada/mdll-utl.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mdll-utl.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/mdll.adb gcc-13.1.0/gcc/ada/mdll.adb
*** gcc-12.2.0/gcc/ada/mdll.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mdll.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body MDLL is
*** 448,504 ****
       (Lib_Filename : String;
        Def_Filename : String)
     is
!       procedure Build_Import_Library (Lib_Filename : String);
!       --  Build an import library. This is to build only a .a library to link
!       --  against a DLL.
! 
!       --------------------------
!       -- Build_Import_Library --
!       --------------------------
! 
!       procedure Build_Import_Library (Lib_Filename : String) is
! 
!          function No_Lib_Prefix (Filename : String) return String;
!          --  Return Filename without the lib prefix if present
! 
!          -------------------
!          -- No_Lib_Prefix --
!          -------------------
! 
!          function No_Lib_Prefix (Filename : String) return String is
!          begin
!             if Filename (Filename'First .. Filename'First + 2) = "lib" then
!                return Filename (Filename'First + 3 .. Filename'Last);
!             else
!                return Filename;
!             end if;
!          end No_Lib_Prefix;
! 
!          --  Local variables
! 
!          Def_File      : String renames Def_Filename;
!          Dll_File      : constant String := Get_Dll_Name (Lib_Filename);
!          Base_Filename : constant String :=
!                            MDLL.Fil.Ext_To (No_Lib_Prefix (Lib_Filename));
!          Lib_File      : constant String := "lib" & Base_Filename & ".dll.a";
  
!       --  Start of processing for Build_Import_Library
  
        begin
!          if not Quiet then
!             Text_IO.Put_Line ("Building import library...");
!             Text_IO.Put_Line
!               ("make " & Lib_File & " to use dynamic library " & Dll_File);
           end if;
  
!          Utl.Dlltool
!            (Def_File, Dll_File, Lib_File, Build_Import => True);
!       end Build_Import_Library;
  
     --  Start of processing for Build_Import_Library
  
     begin
!       Build_Import_Library (Lib_Filename);
     end Build_Import_Library;
  
     ------------------
--- 448,488 ----
       (Lib_Filename : String;
        Def_Filename : String)
     is
!       function Strip_Lib_Prefix (Filename : String) return String;
!       --  Return Filename without the lib prefix if present
  
!       ----------------------
!       -- Strip_Lib_Prefix --
!       ----------------------
  
+       function Strip_Lib_Prefix (Filename : String) return String is
        begin
!          if Filename (Filename'First .. Filename'First + 2) = "lib" then
!             return Filename (Filename'First + 3 .. Filename'Last);
!          else
!             return Filename;
           end if;
+       end Strip_Lib_Prefix;
  
!       --  Local variables
! 
!       Def_File      : String renames Def_Filename;
!       Dll_File      : constant String := Get_Dll_Name (Lib_Filename);
!       Base_Filename : constant String :=
!                         MDLL.Fil.Ext_To (Strip_Lib_Prefix (Lib_Filename));
!       Lib_File      : constant String := "lib" & Base_Filename & ".dll.a";
  
     --  Start of processing for Build_Import_Library
  
     begin
!       if not Quiet then
!          Text_IO.Put_Line ("Building import library...");
!          Text_IO.Put_Line
!            ("make " & Lib_File & " to use dynamic library " & Dll_File);
!       end if;
! 
!       Utl.Dlltool
!         (Def_File, Dll_File, Lib_File, Build_Import => True);
     end Build_Import_Library;
  
     ------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/mdll.ads gcc-13.1.0/gcc/ada/mdll.ads
*** gcc-12.2.0/gcc/ada/mdll.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mdll.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package MDLL is
*** 74,80 ****
     procedure Build_Import_Library
       (Lib_Filename : String;
        Def_Filename : String);
!    --  Build an import library (.a) from a definition files. An import library
!    --  is needed to link against a DLL.
  
  end MDLL;
--- 74,80 ----
     procedure Build_Import_Library
       (Lib_Filename : String;
        Def_Filename : String);
!    --  Build an import library (.a) from definition files. An import library is
!    --  needed to link against a DLL.
  
  end MDLL;
diff -Nrcpad gcc-12.2.0/gcc/ada/mingw32.h gcc-13.1.0/gcc/ada/mingw32.h
*** gcc-12.2.0/gcc/ada/mingw32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mingw32.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2002-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2002-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 44,54 ****
  #define UNICODE  /* For Win32 API */
  #endif
  
- /* We need functionality available only starting with Windows XP */
- #ifndef _WIN32_WINNT
- #define _WIN32_WINNT 0x0501
- #endif
- 
  #ifndef __CYGWIN__
  #include <tchar.h>
  #endif
--- 44,49 ----
***************
*** 58,63 ****
--- 53,59 ----
  #define _X86INTRIN_H_INCLUDED
  #define _EMMINTRIN_H_INCLUDED
  #endif
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  
  /* After including this file it is possible to use the character t as prefix
*************** extern UINT __gnat_current_ccs_encoding;
*** 99,125 ****
  #define WS2S(str,wstr,len) strncpy(str,wstr,len)
  #endif
  
- #include <stdlib.h>
- 
- /* STD_MINGW: standard if MINGW32 version > 1.3, we have switched to this
-    version instead of the previous enhanced version to ease building GNAT on
-    Windows platforms. By using STD_MINGW or OLD_MINGW it is possible to build
-    GNAT using both MingW include files (Old MingW + ACT changes and standard
-    MingW starting with version 1.3.
-    For w64 Mingw the define STD_MINGW is always set to value 1, because
-    there is no old header set present.  */
- #ifdef _WIN64
- #define STD_MINGW 1
- #else
- #define STD_MINGW ((__MINGW32_MAJOR_VERSION == 1 \
- 		   && __MINGW32_MINOR_VERSION >= 3) \
-      || (__MINGW32_MAJOR_VERSION >= 2))
- #endif
- 
- #define OLD_MINGW (!(STD_MINGW))
- 
- #ifndef MAXPATHLEN
- #define MAXPATHLEN MAX_PATH
- #endif
- 
  #endif /* _MINGW32_H */
--- 95,98 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/mkdir.c gcc-13.1.0/gcc/ada/mkdir.c
*** gcc-12.2.0/gcc/ada/mkdir.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/mkdir.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2002-2022, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 2002-2023, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 43,48 ****
--- 43,49 ----
  #endif
  
  #ifdef __MINGW32__
+ #define WIN32_LEAN_AND_MEAN
  #include "mingw32.h"
  #include <windows.h>
  #ifdef MAXPATHLEN
diff -Nrcpad gcc-12.2.0/gcc/ada/namet-sp.adb gcc-13.1.0/gcc/ada/namet-sp.adb
*** gcc-12.2.0/gcc/ada/namet-sp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/namet-sp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2008-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/namet-sp.ads gcc-13.1.0/gcc/ada/namet-sp.ads
*** gcc-12.2.0/gcc/ada/namet-sp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/namet-sp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/namet.adb gcc-13.1.0/gcc/ada/namet.adb
*** gcc-12.2.0/gcc/ada/namet.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/namet.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Namet is
*** 170,208 ****
       (Buf : in out Bounded_String;
        Id  : Valid_Name_Id)
     is
-       C    : Character;
-       P    : Natural;
        Temp : Bounded_String;
  
     begin
        Append (Temp, Id);
  
!       --  Skip scan if we already know there are no encodings
  
        if Name_Entries.Table (Id).Name_Has_No_Encodings then
           goto Done;
        end if;
  
!       --  Quick loop to see if there is anything special to do
! 
!       P := 1;
!       loop
!          if P = Temp.Length then
!             Name_Entries.Table (Id).Name_Has_No_Encodings := True;
!             goto Done;
! 
!          else
!             C := Temp.Chars (P);
! 
!             exit when
!               C = 'U' or else
!               C = 'W' or else
!               C = 'Q' or else
!               C = 'O';
! 
!             P := P + 1;
!          end if;
!       end loop;
  
        --  Here we have at least some encoding that we must decode
  
--- 170,208 ----
       (Buf : in out Bounded_String;
        Id  : Valid_Name_Id)
     is
        Temp : Bounded_String;
  
+       function Has_Encodings (Temp : Bounded_String) return Boolean;
+       --  True if Temp contains encoded characters. If not, we can set
+       --  Name_Has_No_Encodings to True below, and never call this again
+       --  on the same Name_Id.
+ 
+       function Has_Encodings (Temp : Bounded_String) return Boolean is
+       begin
+          for J in 1 .. Temp.Length loop
+             if Temp.Chars (J) in 'U' | 'W' | 'Q' | 'O' then
+                return True;
+             end if;
+          end loop;
+ 
+          return False;
+       end Has_Encodings;
+ 
     begin
        Append (Temp, Id);
  
!       --  Skip scan if we already know there are no encodings (i.e. the first
!       --  time this was called on Id, the Has_Encodings call below returned
!       --  False).
  
        if Name_Entries.Table (Id).Name_Has_No_Encodings then
           goto Done;
        end if;
  
!       if not Has_Encodings (Temp) then
!          Name_Entries.Table (Id).Name_Has_No_Encodings := True;
!          goto Done;
!       end if;
  
        --  Here we have at least some encoding that we must decode
  
*************** package body Namet is
*** 235,242 ****
  
              if C = 'U'
                and then Old < Temp.Length
!               and then Temp.Chars (Old + 1) not in 'A' .. 'Z'
!               and then Temp.Chars (Old + 1) /= '_'
              then
                 Old := Old + 1;
  
--- 235,241 ----
  
              if C = 'U'
                and then Old < Temp.Length
!               and then Temp.Chars (Old + 1) not in 'A' .. 'Z' | '_'
              then
                 Old := Old + 1;
  
*************** package body Namet is
*** 274,281 ****
  
              elsif C = 'W'
                and then Old < Temp.Length
!               and then Temp.Chars (Old + 1) not in 'A' .. 'Z'
!               and then Temp.Chars (Old + 1) /= '_'
              then
                 Old := Old + 1;
                 Widechar.Set_Wide (Char_Code (Hex (4)), New_Buf, New_Len);
--- 273,279 ----
  
              elsif C = 'W'
                and then Old < Temp.Length
!               and then Temp.Chars (Old + 1) not in 'A' .. 'Z' | '_'
              then
                 Old := Old + 1;
                 Widechar.Set_Wide (Char_Code (Hex (4)), New_Buf, New_Len);
*************** package body Namet is
*** 301,307 ****
                 C := Temp.Chars (Old);
                 Old := Old + 1;
  
!                pragma Assert (C in '0' .. '9' or else C in 'a' .. 'f');
  
                 if C <= '9' then
                    T := 16 * T + Character'Pos (C) - Character'Pos ('0');
--- 299,305 ----
                 C := Temp.Chars (Old);
                 Old := Old + 1;
  
!                pragma Assert (C in '0' .. '9' | 'a' .. 'f');
  
                 if C <= '9' then
                    T := 16 * T + Character'Pos (C) - Character'Pos ('0');
*************** package body Namet is
*** 347,354 ****
  
              elsif Temp.Chars (Old) = 'O'
                and then Old < Temp.Length
!               and then Temp.Chars (Old + 1) not in 'A' .. 'Z'
!               and then Temp.Chars (Old + 1) /= '_'
              then
                 Old := Old + 1;
  
--- 345,351 ----
  
              elsif Temp.Chars (Old) = 'O'
                and then Old < Temp.Length
!               and then Temp.Chars (Old + 1) not in 'A' .. 'Z' | '_'
              then
                 Old := Old + 1;
  
*************** package body Namet is
*** 501,508 ****
                 elsif Temp.Chars (P) = 'W'
                   and then P + 9 <= Temp.Length
                   and then Temp.Chars (P + 1) = 'W'
!                  and then Temp.Chars (P + 2) not in 'A' .. 'Z'
!                  and then Temp.Chars (P + 2) /= '_'
                 then
                    Temp.Chars (P + 12 .. Temp.Length + 2) :=
                      Temp.Chars (P + 10 .. Temp.Length);
--- 498,504 ----
                 elsif Temp.Chars (P) = 'W'
                   and then P + 9 <= Temp.Length
                   and then Temp.Chars (P + 1) = 'W'
!                  and then Temp.Chars (P + 2) not in 'A' .. 'Z' | '_'
                 then
                    Temp.Chars (P + 12 .. Temp.Length + 2) :=
                      Temp.Chars (P + 10 .. Temp.Length);
*************** package body Namet is
*** 517,524 ****
  
                 elsif Temp.Chars (P) = 'W'
                   and then P < Temp.Length
!                  and then Temp.Chars (P + 1) not in 'A' .. 'Z'
!                  and then Temp.Chars (P + 1) /= '_'
                 then
                    Temp.Chars (P + 8 .. P + Temp.Length + 3) :=
                      Temp.Chars (P + 5 .. Temp.Length);
--- 513,519 ----
  
                 elsif Temp.Chars (P) = 'W'
                   and then P < Temp.Length
!                  and then Temp.Chars (P + 1) not in 'A' .. 'Z' | '_'
                 then
                    Temp.Chars (P + 8 .. P + Temp.Length + 3) :=
                      Temp.Chars (P + 5 .. Temp.Length);
*************** package body Namet is
*** 571,577 ****
           declare
              CC : constant Character := Get_Character (C);
           begin
!             if CC in 'a' .. 'z' or else CC in '0' .. '9' then
                 Buf.Chars (Buf.Length) := CC;
              else
                 Buf.Chars (Buf.Length) := 'U';
--- 566,572 ----
           declare
              CC : constant Character := Get_Character (C);
           begin
!             if CC in 'a' .. 'z' | '0' .. '9' then
                 Buf.Chars (Buf.Length) := CC;
              else
                 Buf.Chars (Buf.Length) := 'U';
*************** package body Namet is
*** 625,630 ****
--- 620,644 ----
        Append (Buf, Temp);
     end Append_Unqualified_Decoded;
  
+    --------------------------------
+    -- Destroy_Global_Name_Buffer --
+    --------------------------------
+ 
+    procedure Destroy_Global_Name_Buffer is
+       procedure Do_It;
+       --  Do the work. Needed only for "pragma Debug" below, so we don't do
+       --  anything in production mode.
+ 
+       procedure Do_It is
+       begin
+          Global_Name_Buffer.Length := Global_Name_Buffer.Max_Length;
+          Global_Name_Buffer.Chars := (others => '!');
+       end Do_It;
+       pragma Debug (Do_It);
+    begin
+       null;
+    end Destroy_Global_Name_Buffer;
+ 
     --------------
     -- Finalize --
     --------------
*************** package body Namet is
*** 990,998 ****
     begin
        --  Any name starting or ending with underscore is internal
  
!       if Buf.Chars (1) = '_'
!         or else Buf.Chars (Buf.Length) = '_'
!       then
           return True;
  
        --  Allow quoted character
--- 1004,1010 ----
     begin
        --  Any name starting or ending with underscore is internal
  
!       if Buf.Chars (1) = '_' or else Buf.Chars (Buf.Length) = '_' then
           return True;
  
        --  Allow quoted character
*************** package body Namet is
*** 1059,1070 ****
  
     function Is_OK_Internal_Letter (C : Character) return Boolean is
     begin
!       return C in 'A' .. 'Z'
!         and then C /= 'O'
!         and then C /= 'Q'
!         and then C /= 'U'
!         and then C /= 'W'
!         and then C /= 'X';
     end Is_OK_Internal_Letter;
  
     ----------------------
--- 1071,1077 ----
  
     function Is_OK_Internal_Letter (C : Character) return Boolean is
     begin
!       return C in 'A' .. 'Z' and then C not in 'O' | 'Q' | 'U' | 'W' | 'X';
     end Is_OK_Internal_Letter;
  
     ----------------------
*************** package body Namet is
*** 1450,1458 ****
              exit;
           end if;
  
!          exit when Buf.Chars (J) /= 'b'
!            and then Buf.Chars (J) /= 'n'
!            and then Buf.Chars (J) /= 'p';
        end loop;
  
        --  Find rightmost __ or $ separator if one exists. First we position
--- 1457,1463 ----
              exit;
           end if;
  
!          exit when Buf.Chars (J) not in 'b' | 'n' | 'p';
        end loop;
  
        --  Find rightmost __ or $ separator if one exists. First we position
*************** package body Namet is
*** 1535,1559 ****
  
     procedure wn (Id : Name_Id) is
     begin
!       if Is_Valid_Name (Id) then
!          declare
!             Buf : Bounded_String (Max_Length => Natural (Length_Of_Name (Id)));
!          begin
!             Append (Buf, Id);
!             Write_Str (Buf.Chars (1 .. Buf.Length));
!          end;
! 
!       elsif Id = No_Name then
!          Write_Str ("<No_Name>");
! 
!       elsif Id = Error_Name then
!          Write_Str ("<Error_Name>");
! 
!       else
!          Write_Str ("<invalid name_id>");
!          Write_Int (Int (Id));
!       end if;
! 
        Write_Eol;
     end wn;
  
--- 1540,1546 ----
  
     procedure wn (Id : Name_Id) is
     begin
!       Write_Name_For_Debug (Id);
        Write_Eol;
     end wn;
  
*************** package body Namet is
*** 1579,1584 ****
--- 1566,1602 ----
        Write_Str (Buf.Chars (1 .. Buf.Length));
     end Write_Name_Decoded;
  
+    --------------------------
+    -- Write_Name_For_Debug --
+    --------------------------
+ 
+    procedure Write_Name_For_Debug (Id : Name_Id; Quote : String := "") is
+    begin
+       if Is_Valid_Name (Id) then
+          Write_Str (Quote);
+ 
+          declare
+             Buf : Bounded_String (Max_Length => Natural (Length_Of_Name (Id)));
+          begin
+             Append (Buf, Id);
+             Write_Str (Buf.Chars (1 .. Buf.Length));
+          end;
+ 
+          Write_Str (Quote);
+ 
+       elsif Id = No_Name then
+          Write_Str ("<No_Name>");
+ 
+       elsif Id = Error_Name then
+          Write_Str ("<Error_Name>");
+ 
+       else
+          Write_Str ("<invalid name ");
+          Write_Int (Int (Id));
+          Write_Str (">");
+       end if;
+    end Write_Name_For_Debug;
+ 
  --  Package initialization, initialize tables
  
  begin
diff -Nrcpad gcc-12.2.0/gcc/ada/namet.ads gcc-13.1.0/gcc/ada/namet.ads
*** gcc-12.2.0/gcc/ada/namet.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/namet.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Namet is
*** 166,171 ****
--- 166,176 ----
     --  does a save/restore on Name_Len and Name_Buffer (1 .. Name_Len). This
     --  works in part because Name_Len is default-initialized to 0.
  
+    procedure Destroy_Global_Name_Buffer with Inline;
+    --  Overwrites Global_Name_Buffer with meaningless data. This can be used in
+    --  the transition away from Global_Name_Buffer, in order to detect cases
+    --  where we incorrectly rely on the global.
+ 
     -----------------------------
     -- Types for Namet Package --
     -----------------------------
*************** package Namet is
*** 422,433 ****
     --  Write_Name writes the characters of the specified name using the
     --  standard output procedures in package Output. The name is written
     --  in encoded form (i.e. including Uhh, Whhh, Qx, _op as they appear in
!    --  the name table). If Id is Error_Name, or No_Name, no text is output.
  
     procedure Write_Name_Decoded (Id : Valid_Name_Id);
     --  Like Write_Name, except that the name written is the decoded name, as
     --  described for Append_Decoded.
  
     function Name_Entries_Count return Nat;
     --  Return current number of entries in the names table
  
--- 427,442 ----
     --  Write_Name writes the characters of the specified name using the
     --  standard output procedures in package Output. The name is written
     --  in encoded form (i.e. including Uhh, Whhh, Qx, _op as they appear in
!    --  the name table). If Id is Error_Name or No_Name, no text is output.
  
     procedure Write_Name_Decoded (Id : Valid_Name_Id);
     --  Like Write_Name, except that the name written is the decoded name, as
     --  described for Append_Decoded.
  
+    procedure Write_Name_For_Debug (Id : Name_Id; Quote : String := "");
+    --  Like Write_Name, except it tries to be robust in the presence of invalid
+    --  data, and valid names are surrounded by Quote.
+ 
     function Name_Entries_Count return Nat;
     --  Return current number of entries in the names table
  
*************** package Namet is
*** 537,550 ****
  
     procedure wn (Id : Name_Id);
     pragma Export (Ada, wn);
!    --  This routine is intended for debugging use only (i.e. it is intended to
!    --  be called from the debugger). It writes the characters of the specified
!    --  name using the standard output procedures in package Output, followed by
!    --  a new line. The name is written in encoded form (i.e. including Uhh,
!    --  Whhh, Qx, _op as they appear in the name table). If Id is Error_Name,
!    --  No_Name, or invalid an appropriate string is written (<Error_Name>,
!    --  <No_Name>, <invalid name>). Unlike Write_Name, this call does not affect
!    --  the contents of Name_Buffer or Name_Len.
  
  private
  
--- 546,553 ----
  
     procedure wn (Id : Name_Id);
     pragma Export (Ada, wn);
!    --  Write Id to standard output, followed by a newline. Intended to be
!    --  called in the debugger.
  
  private
  
diff -Nrcpad gcc-12.2.0/gcc/ada/namet.h gcc-13.1.0/gcc/ada/namet.h
*** gcc-12.2.0/gcc/ada/namet.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/namet.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/nlists.adb gcc-13.1.0/gcc/ada/nlists.adb
*** gcc-12.2.0/gcc/ada/nlists.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/nlists.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Nlists is
*** 1013,1024 ****
     -- Parent --
     ------------
  
!    function Parent (List : List_Id) return Node_Or_Entity_Id is
     begin
        pragma Assert (Present (List));
        pragma Assert (List <= Lists.Last);
        return Lists.Table (List).Parent;
!    end Parent;
  
     ----------
     -- Pick --
--- 1013,1024 ----
     -- Parent --
     ------------
  
!    function List_Parent (List : List_Id) return Node_Or_Entity_Id is
     begin
        pragma Assert (Present (List));
        pragma Assert (List <= Lists.Last);
        return Lists.Table (List).Parent;
!    end List_Parent;
  
     ----------
     -- Pick --
*************** package body Nlists is
*** 1442,1453 ****
     -- Set_Parent --
     ----------------
  
!    procedure Set_Parent (List : List_Id; Node : Node_Or_Entity_Id) is
     begin
        pragma Assert (not Locked);
        pragma Assert (List <= Lists.Last);
        Lists.Table (List).Parent := Node;
!    end Set_Parent;
  
     --------------
     -- Set_Prev --
--- 1442,1453 ----
     -- Set_Parent --
     ----------------
  
!    procedure Set_List_Parent (List : List_Id; Node : Node_Or_Entity_Id) is
     begin
        pragma Assert (not Locked);
        pragma Assert (List <= Lists.Last);
        Lists.Table (List).Parent := Node;
!    end Set_List_Parent;
  
     --------------
     -- Set_Prev --
diff -Nrcpad gcc-12.2.0/gcc/ada/nlists.ads gcc-13.1.0/gcc/ada/nlists.ads
*** gcc-12.2.0/gcc/ada/nlists.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/nlists.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Nlists is
*** 348,360 ****
     --  Called to unlock list contents when assertions are enabled; if
     --  assertions are not enabled calling this subprogram has no effect.
  
!    function Parent (List : List_Id) return Node_Or_Entity_Id;
     pragma Inline (Parent);
     --  Node lists may have a parent in the same way as a node. The function
     --  accesses the Parent value, which is either Empty when a list header
     --  is first created, or the value that has been set by Set_Parent.
  
!    procedure Set_Parent (List : List_Id; Node : Node_Or_Entity_Id);
     pragma Inline (Set_Parent);
     --  Sets the parent field of the given list to reference the given node
  
--- 348,368 ----
     --  Called to unlock list contents when assertions are enabled; if
     --  assertions are not enabled calling this subprogram has no effect.
  
!    function List_Parent (List : List_Id) return Node_Or_Entity_Id;
!    pragma Inline (List_Parent);
!    function Parent (List : List_Id) return Node_Or_Entity_Id
!      renames List_Parent;
     pragma Inline (Parent);
     --  Node lists may have a parent in the same way as a node. The function
     --  accesses the Parent value, which is either Empty when a list header
     --  is first created, or the value that has been set by Set_Parent.
+    --  Parent has the same name as the one in Atree; List_Parent can be used
+    --  more easily in the debugger.
  
!    procedure Set_List_Parent (List : List_Id; Node : Node_Or_Entity_Id);
!    pragma Inline (Set_List_Parent);
!    procedure Set_Parent (List : List_Id; Node : Node_Or_Entity_Id)
!      renames Set_List_Parent;
     pragma Inline (Set_Parent);
     --  Sets the parent field of the given list to reference the given node
  
diff -Nrcpad gcc-12.2.0/gcc/ada/nlists.h gcc-13.1.0/gcc/ada/nlists.h
*** gcc-12.2.0/gcc/ada/nlists.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/nlists.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/opt.adb gcc-13.1.0/gcc/ada/opt.adb
*** gcc-12.2.0/gcc/ada/opt.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/opt.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,50 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! package body Opt is
! 
!    -------------------------
!    -- Back_End_Exceptions --
!    -------------------------
! 
!    function Back_End_Exceptions return Boolean is
!    begin
!       return
!         Exception_Mechanism = Back_End_SJLJ
!           or else
!         Exception_Mechanism = Back_End_ZCX;
!    end Back_End_Exceptions;
! 
!    -------------------------
!    -- Front_End_Exceptions --
!    -------------------------
  
!    function Front_End_Exceptions return Boolean is
!    begin
!       return Exception_Mechanism = Front_End_SJLJ;
!    end Front_End_Exceptions;
  
     --------------------
     -- SJLJ_Exceptions --
--- 23,31 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Csets;          use Csets;
  
! package body Opt is
  
     --------------------
     -- SJLJ_Exceptions --
*************** package body Opt is
*** 52,61 ****
  
     function SJLJ_Exceptions return Boolean is
     begin
!       return
!         Exception_Mechanism = Back_End_SJLJ
!           or else
!         Exception_Mechanism = Front_End_SJLJ;
     end SJLJ_Exceptions;
  
     --------------------
--- 33,39 ----
  
     function SJLJ_Exceptions return Boolean is
     begin
!       return Exception_Mechanism = Back_End_SJLJ;
     end SJLJ_Exceptions;
  
     --------------------
*************** package body Opt is
*** 210,215 ****
--- 188,194 ----
           Prefix_Exception_Messages   := True;
           Uneval_Old                  := 'E';
           Use_VADS_Size               := False;
+          Identifier_Char ('[')       := False;
  
           --  Note: we do not need to worry about Warnings_As_Errors_Count since
           --  we do not expect to get any warnings from compiling such a unit.
diff -Nrcpad gcc-12.2.0/gcc/ada/opt.ads gcc-13.1.0/gcc/ada/opt.ads
*** gcc-12.2.0/gcc/ada/opt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/opt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Opt is
*** 73,87 ****
     --  Ada_xxx) or generate an error (in case of -gnat83/95/xx switches).
  
     type Ada_Version_Type is
!      (Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2022, Ada_With_Extensions);
     pragma Ordered (Ada_Version_Type);
     pragma Convention (C, Ada_Version_Type);
     --  Versions of Ada for Ada_Version below. Note that these are ordered,
     --  so that tests like Ada_Version >= Ada_95 are legitimate and useful.
     --  Think twice before using "="; Ada_Version >= Ada_2012 is more likely
     --  what you want, because it will apply to future versions of the language.
!    --  Note that Ada_With_Extensions should always be last since it should
!    --  always be a superset of the latest Ada version.
  
     --  WARNING: There is a matching C declaration of this type in fe.h
  
--- 73,88 ----
     --  Ada_xxx) or generate an error (in case of -gnat83/95/xx switches).
  
     type Ada_Version_Type is
!      (Ada_83, Ada_95, Ada_2005, Ada_2012, Ada_2022,
!       Ada_With_Core_Extensions, Ada_With_All_Extensions);
     pragma Ordered (Ada_Version_Type);
     pragma Convention (C, Ada_Version_Type);
     --  Versions of Ada for Ada_Version below. Note that these are ordered,
     --  so that tests like Ada_Version >= Ada_95 are legitimate and useful.
     --  Think twice before using "="; Ada_Version >= Ada_2012 is more likely
     --  what you want, because it will apply to future versions of the language.
!    --  Note that Ada_With_All_Extensions should always be last since it should
!    --  always be a superset of the other Ada versions.
  
     --  WARNING: There is a matching C declaration of this type in fe.h
  
*************** package Opt is
*** 111,117 ****
     --  remains set to Ada_Version_Default). This is used in the rare cases
     --  (notably pragma Obsolescent) where we want the explicit version set.
  
!    Ada_Version_Runtime : Ada_Version_Type := Ada_With_Extensions;
     --  GNAT
     --  Ada version used to compile the runtime. Used to set Ada_Version (but
     --  not Ada_Version_Explicit) when compiling predefined or internal units.
--- 112,118 ----
     --  remains set to Ada_Version_Default). This is used in the rare cases
     --  (notably pragma Obsolescent) where we want the explicit version set.
  
!    Ada_Version_Runtime : Ada_Version_Type := Ada_With_All_Extensions;
     --  GNAT
     --  Ada version used to compile the runtime. Used to set Ada_Version (but
     --  not Ada_Version_Explicit) when compiling predefined or internal units.
*************** package Opt is
*** 140,150 ****
     --  The name of the Ada package generated by the binder (when in Ada mode).
     --  This variable may be modified by Gnatbind.Scan_Bind_Arg.
  
-    Address_Clause_Overlay_Warnings : Boolean := True;
-    --  GNAT
-    --  Set False to disable address clause warnings. Modified by use of
-    --  -gnatwo/O.
- 
     Address_Is_Private : Boolean := False;
     --  GNAT, GNATBIND
     --  Set True if package System has the line "type Address is private;"
--- 141,146 ----
*************** package Opt is
*** 186,197 ****
     Assume_No_Invalid_Values : Boolean := False;
     --  GNAT Normally, in accordance with (RM 13.9.1 (9-11)) the front end
     --  assumes that values could have invalid representations, unless it can
!    --  clearly prove that the values are valid. If this switch is set (by
     --  pragma Assume_No_Invalid_Values (On)), then the compiler assumes values
!    --  are valid and in range of their representations. This feature is now
!    --  fully enabled in the compiler.
! 
!    --  WARNING: There is a matching C declaration of this variable in fe.h
  
     Back_Annotate_Rep_Info : Boolean := False;
     --  GNAT
--- 182,190 ----
     Assume_No_Invalid_Values : Boolean := False;
     --  GNAT Normally, in accordance with (RM 13.9.1 (9-11)) the front end
     --  assumes that values could have invalid representations, unless it can
!    --  prove that the values are valid. If this switch is set (by -gnatB or
     --  pragma Assume_No_Invalid_Values (On)), then the compiler assumes values
!    --  are valid and in range of their representations.
  
     Back_Annotate_Rep_Info : Boolean := False;
     --  GNAT
*************** package Opt is
*** 202,208 ****
     --  values.
  
     Back_End_Handles_Limited_Types : Boolean;
!    --  This flag is set true if the back end can properly handle limited or
     --  other by reference types, and avoid copies. If this flag is False, then
     --  the front end does special expansion for if/case expressions to make
     --  sure that no copy occurs. If the flag is True, then the expansion for
--- 195,201 ----
     --  values.
  
     Back_End_Handles_Limited_Types : Boolean;
!    --  This flag is set True if the back end can properly handle limited or
     --  other by reference types, and avoid copies. If this flag is False, then
     --  the front end does special expansion for if/case expressions to make
     --  sure that no copy occurs. If the flag is True, then the expansion for
*************** package Opt is
*** 214,225 ****
     Back_End_Inlining : Boolean := False;
     --  GNAT
     --  Set True to activate inlining by back-end expansion. This is the normal
!    --  default mode for gcc targets, so it is True on such targets unless the
     --  switches -gnatN or -gnatd.z are used. See circuitry in gnat1drv for the
     --  exact conditions for setting this switch.
  
     --  WARNING: There is a matching C declaration of this variable in fe.h
  
     Bind_Alternate_Main_Name : Boolean := False;
     --  GNATBIND
     --  True if main should be called Alternate_Main_Name.all.
--- 207,226 ----
     Back_End_Inlining : Boolean := False;
     --  GNAT
     --  Set True to activate inlining by back-end expansion. This is the normal
!    --  default mode for GCC targets, so it is True on such targets unless the
     --  switches -gnatN or -gnatd.z are used. See circuitry in gnat1drv for the
     --  exact conditions for setting this switch.
  
     --  WARNING: There is a matching C declaration of this variable in fe.h
  
+    Back_End_Return_Slot : Boolean := True;
+    --  GNAT
+    --  This flag is set True if the return slot of the back end for functions
+    --  returning a by-reference type can be accessed by means of an intrinsic
+    --  function callable in the body of these functions. This is the normal
+    --  default mode for GCC targets, so it is True on such targets unless the
+    --  switch -gnatd_r is used.
+ 
     Bind_Alternate_Main_Name : Boolean := False;
     --  GNATBIND
     --  True if main should be called Alternate_Main_Name.all.
*************** package Opt is
*** 254,264 ****
--- 255,272 ----
     --  Set to True to build, bind and link all the sources of a project file
     --  (switch -B)
  
+    CCG_Mode : Boolean := False;
+    --  Set to True when running as CCG (either via -gnatceg or via -emit-c)
+ 
     Check_Aliasing_Of_Parameters : Boolean := False;
     --  GNAT
     --  Set to True to detect whether subprogram parameters and function results
     --  alias the same object(s).
  
+    Check_Elaboration_Flags : Boolean := True;
+    --  GNATBIND
+    --  Set to False if switch -k is set.
+ 
     Check_Float_Overflow : Boolean := False;
     --  GNAT
     --  Set to True to check that operations on predefined unconstrained float
*************** package Opt is
*** 304,331 ****
     --  GNATMAKE, GPBUILD
     --  Set to True to check compiler options during the make process
  
-    Check_Unreferenced : Boolean := False;
-    --  GNAT
-    --  Set to True to enable checking for unreferenced entities other
-    --  than formal parameters (for which see Check_Unreferenced_Formals)
-    --  Modified by use of -gnatwu/U.
- 
-    Check_Unreferenced_Formals : Boolean := False;
-    --  GNAT
-    --  Set to True to check for unreferenced formals. This is turned on by
-    --  -gnatwa/wf/wu and turned off by -gnatwA/wF/wU.
- 
     Check_Validity_Of_Parameters : Boolean := False;
     --  GNAT
     --  Set to True to check for proper scalar initialization of subprogram
     --  parameters on both entry and exit. This is turned on by -gnateV.
  
-    Check_Withs : Boolean := False;
-    --  GNAT
-    --  Set to True to enable checking for unused withs, and also the case
-    --  of withing a package and using none of the entities in the package.
-    --  Modified by use of -gnatwu/U.
- 
     CodePeer_Mode : Boolean := False;
     --  GNAT, GNATBIND, GPRBUILD
     --  Enable full CodePeer mode (SCIL generation, disable switches that
--- 312,322 ----
*************** package Opt is
*** 372,387 ****
     --  True, or if pragma No_Run_Time is used. See the spec of Rtsfind for
     --  details on the handling of the latter pragma.
  
-    Constant_Condition_Warnings : Boolean := False;
-    --  GNAT
-    --  Set to True to activate warnings on constant conditions. Modified by
-    --  use of -gnatwc/C.
- 
     Create_Mapping_File : Boolean := False;
     --  GNATMAKE
     --  Set to True (-C switch) to indicate that the compiler will be invoked
     --  with a mapping file (-gnatem compiler switch).
  
     subtype Debug_Level_Value is Nat range 0 .. 3;
     Debugger_Level : Debug_Level_Value := 0;
     --  GNAT, GNATBIND
--- 363,377 ----
     --  True, or if pragma No_Run_Time is used. See the spec of Rtsfind for
     --  details on the handling of the latter pragma.
  
     Create_Mapping_File : Boolean := False;
     --  GNATMAKE
     --  Set to True (-C switch) to indicate that the compiler will be invoked
     --  with a mapping file (-gnatem compiler switch).
  
+    CUDA_Device_Library_Name : String_Ptr := null;
+    --  GNATBIND
+    --  Non-null only if Enable_CUDA_Expansion is True.
+ 
     subtype Debug_Level_Value is Nat range 0 .. 3;
     Debugger_Level : Debug_Level_Value := 0;
     --  GNAT, GNATBIND
*************** package Opt is
*** 508,525 ****
     --  GNATBIND
     --  Set to True to output chosen elaboration order
  
-    Elab_Info_Messages : Boolean := False;
-    --  GNAT
-    --  Set to True to output info messages for static elabmodel (-gnatel)
- 
-    Elab_Warnings : Boolean := True;
-    --  GNAT
-    --  Set to True to generate elaboration warnings (-gnatwl). The warnings are
-    --  enabled by default because they carry the same importance as errors. The
-    --  compiler cannot emit actual errors because elaboration diagnostics need
-    --  dataflow analysis, which is not available. This behavior parallels that
-    --  of the old ABE mechanism.
- 
     Enable_128bit_Types : Boolean := False;
     --  GNAT
     --  Set to True to enable the support for 128-bit types in the compiler.
--- 498,503 ----
*************** package Opt is
*** 527,532 ****
--- 505,521 ----
  
     --  WARNING: There is a matching C declaration of this variable in fe.h
  
+    Enable_CUDA_Expansion : Boolean := False;
+    --  GNAT, GNATBIND
+    --  Set to True to enable CUDA host expansion:
+    --    - Removal of CUDA_Global and CUDA_Device symbols
+    --    - Generation of kernel registration code in packages
+    --    - Binder invokes device elaboration/finalization code
+ 
+    Enable_CUDA_Device_Expansion : Boolean := False;
+    --  GNATBIND
+    --  Set to True to enable CUDA device (as opposed to host) expansion.
+ 
     Error_Msg_Line_Length : Nat := 0;
     --  GNAT
     --  Records the error message line length limit. If this is set to zero,
*************** package Opt is
*** 567,579 ****
     type Exception_Mechanism_Type is
     --  Determines the kind of mechanism used to handle exceptions
     --
!      (Front_End_SJLJ,
!       --  Exceptions use setjmp/longjmp generated explicitly by the front end
!       --  (this includes gigi or other equivalent parts of the code generator).
!       --  AT END handlers are converted into exception handlers by the front
!       --  end in this mode.
! 
!       Back_End_ZCX,
        --  Exceptions are handled by the back end. The front end simply
        --  generates the handlers as they appear in the source, and AT END
        --  handlers are left untouched (they are not converted into exception
--- 556,562 ----
     type Exception_Mechanism_Type is
     --  Determines the kind of mechanism used to handle exceptions
     --
!      (Back_End_ZCX,
        --  Exceptions are handled by the back end. The front end simply
        --  generates the handlers as they appear in the source, and AT END
        --  handlers are left untouched (they are not converted into exception
*************** package Opt is
*** 585,604 ****
        --  Similar to Back_End_ZCX with respect to the front-end processing
        --  of regular and AT-END handlers. A setjmp/longjmp scheme is used to
        --  propagate and setup handler contexts on regular execution paths.
-    pragma Convention (C, Exception_Mechanism_Type);
- 
-    --  WARNING: There is a matching C declaration of this type in fe.h
  
!    Exception_Mechanism : Exception_Mechanism_Type := Front_End_SJLJ;
     --  GNAT
     --  Set to the appropriate value depending on the flags in system.ads
!    --  (Frontend_Exceptions + ZCX_By_Default). The C convention is there to
!    --  allow access by gigi.
! 
!    --  WARNING: There is a matching C declaration of this variable in fe.h
  
-    function Back_End_Exceptions return Boolean;
-    function Front_End_Exceptions return Boolean;
     function ZCX_Exceptions return Boolean;
     function SJLJ_Exceptions return Boolean;
     --  GNAT
--- 568,579 ----
        --  Similar to Back_End_ZCX with respect to the front-end processing
        --  of regular and AT-END handlers. A setjmp/longjmp scheme is used to
        --  propagate and setup handler contexts on regular execution paths.
  
!    Exception_Mechanism : Exception_Mechanism_Type := Back_End_SJLJ;
     --  GNAT
     --  Set to the appropriate value depending on the flags in system.ads
!    --  (ZCX_By_Default).
  
     function ZCX_Exceptions return Boolean;
     function SJLJ_Exceptions return Boolean;
     --  GNAT
*************** package Opt is
*** 619,629 ****
     --  Set to True to convert nonbinary modular additions into code
     --  that relies on the front-end expansion of operator Mod.
  
!    function Extensions_Allowed return Boolean is
!      (Ada_Version = Ada_With_Extensions);
     --  True if GNAT specific language extensions are allowed. See GNAT RM for
     --  details.
  
     type External_Casing_Type is (
       As_Is,       -- External names cased as they appear in the Ada source
       Uppercase,   -- External names forced to all uppercase letters
--- 594,609 ----
     --  Set to True to convert nonbinary modular additions into code
     --  that relies on the front-end expansion of operator Mod.
  
!    function All_Extensions_Allowed return Boolean is
!      (Ada_Version = Ada_With_All_Extensions);
     --  True if GNAT specific language extensions are allowed. See GNAT RM for
     --  details.
  
+    function Core_Extensions_Allowed return Boolean is
+      (Ada_Version >= Ada_With_Core_Extensions);
+    --  True if some but not all GNAT specific language extensions are allowed.
+    --  See GNAT RM for details.
+ 
     type External_Casing_Type is (
       As_Is,       -- External names cased as they appear in the Ada source
       Uppercase,   -- External names forced to all uppercase letters
*************** package Opt is
*** 835,845 ****
     --  reflect the starting node of the outermost ignored Ghost region. If a
     --  nested ignored Ghost region is entered, the value must remain unchanged.
  
-    Implementation_Unit_Warnings : Boolean := True;
-    --  GNAT
-    --  Set True to active warnings for use of implementation internal units.
-    --  Modified by use of -gnatwi/-gnatwI.
- 
     Implicit_Packing : Boolean := False;
     --  GNAT
     --  If set True, then a Size attribute clause on an array is allowed to
--- 815,820 ----
*************** package Opt is
*** 850,863 ****
     --  GNAT
     --  Set True to include the enclosing subprogram in compiler messages.
  
-    Ineffective_Inline_Warnings : Boolean := False;
-    --  GNAT
-    --  Set True to activate warnings if front-end inlining (-gnatN) is not able
-    --  to actually inline a particular call (or all calls). Can be controlled
-    --  by use of -gnatwp/-gnatwP. Also set True to activate warnings if
-    --  frontend inlining is not able to inline a subprogram expected to
-    --  be inlined in GNATprove mode.
- 
     Init_Or_Norm_Scalars : Boolean := False;
     --  GNAT, GNATBIND
     --  Set True if a pragma Initialize_Scalars applies to the current unit.
--- 825,830 ----
*************** package Opt is
*** 943,959 ****
     --  Set to True to skip compile and bind steps (except when Bind_Only is
     --  set to True).
  
-    List_Body_Required_Info : Boolean := False;
-    --  GNATMAKE
-    --  List info messages about why a package requires a body. Modified by use
-    --  of -gnatw.y/.Y.
- 
-    List_Inherited_Aspects : Boolean := False;
-    --  GNAT
-    --  List inherited invariants, preconditions, and postconditions from
-    --  Invariant'Class, Pre'Class, and Post'Class aspects. Also list inherited
-    --  subtype predicates. Modified by use of -gnatw.l/.L.
- 
     List_Restrictions : Boolean := False;
     --  GNATBIND
     --  Set to True to list restrictions pragmas that could apply to partition
--- 910,915 ----
*************** package Opt is
*** 1700,1913 ****
     --  In High Verbosity, additional lines are output when the ALI file
     --  is part of an Ada library, is read-only or is part of the runtime.
  
-    Warn_On_Ada_2005_Compatibility : Boolean := True;
-    --  GNAT
-    --  Set to True to generate all warnings on Ada 2005 compatibility issues,
-    --  including warnings on Ada 2005 obsolescent features used in Ada 2005
-    --  mode. Set by default, modified by use of -gnatwy/Y.
- 
-    Warn_On_Ada_2012_Compatibility : Boolean := True;
-    --  GNAT
-    --  Set to True to generate all warnings on Ada 2012 compatibility issues,
-    --  including warnings on Ada 2012 obsolescent features used in Ada 2012
-    --  mode. Modified by use of -gnatwy/Y.
- 
-    Warn_On_Ada_2022_Compatibility : Boolean := True;
-    --  GNAT
-    --  Set to True to generate all warnings on Ada 2022 compatibility issues,
-    --  including warnings on Ada 2022 obsolescent features used in Ada 2022
-    --  mode.
- 
-    Warn_On_All_Unread_Out_Parameters : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings in all cases where a variable is
-    --  modified by being passed as to an OUT formal, but the resulting value is
-    --  never read. The default is that this warning is suppressed. Modified
-    --  by use of gnatw.o/.O.
- 
-    Warn_On_Assertion_Failure : Boolean := True;
-    --  GNAT
-    --  Set to True to activate warnings on assertions that can be determined
-    --  at compile time will always fail. Modified by use of -gnatw.a/.A.
- 
-    Warn_On_Assumed_Low_Bound : Boolean := True;
-    --  GNAT
-    --  Set to True to activate warnings for string parameters that are indexed
-    --  with literals or S'Length, presumably assuming a lower bound of one.
-    --  Modified by use of -gnatww/W.
- 
-    Warn_On_Atomic_Synchronization : Boolean := False;
-    --  GNAT
-    --  Set to True to generate information messages for atomic synchronization.
-    --  Modified by use of -gnatw.n/.N.
- 
-    Warn_On_Bad_Fixed_Value : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for static fixed-point expression
-    --  values that are not an exact multiple of the small value of the type.
-    --  Odd by default, modified by use of -gnatwb/B.
- 
-    Warn_On_Biased_Representation : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for size clauses, component clauses
-    --  and component_size clauses that force biased representation. Modified
-    --  by use of -gnatw.b/.B.
- 
-    Warn_On_Constant : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for variables that could be declared
-    --  as constants. Modified by use of -gnatwk/K.
- 
-    Warn_On_Deleted_Code : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for code deleted by the front end
-    --  for conditional statements whose outcome is known at compile time.
-    --  Modified by use of -gnatwt/T.
- 
-    Warn_On_Dereference : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for implicit dereferences for array
-    --  indexing and record component access. Modified by use of -gnatwd/D.
- 
-    Warn_On_Export_Import : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for suspicious use of export or
-    --  import pragmas. Modified by use of -gnatwx/X.
- 
-    Warn_On_Elab_Access : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for P'Access in the case where
-    --  subprogram P is in the same package as the P'Access, and the P'Access is
-    --  evaluated at package elaboration time, and occurs before the body of P
-    --  has been elaborated.
- 
-    Warn_On_Hiding : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings if a declared entity hides another
-    --  entity. The default is that this warning is suppressed. Modified by
-    --  use of -gnatwh/H.
- 
-    Warn_On_Modified_Unread : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings if a variable is assigned but is never
-    --  read. Also controls warnings for similar cases involving out parameters,
-    --  but only if there is only one out parameter for the procedure involved.
-    --  The default is that this warning is suppressed, modified by use of
-    --  -gnatwm/M.
- 
-    Warn_On_No_Value_Assigned : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings if no value is ever assigned to a
-    --  variable that is at least partially uninitialized. Set to false to
-    --  suppress such warnings. The default is that such warnings are enabled.
-    --  Modified by use of -gnatwv/V.
- 
-    Warn_On_Non_Local_Exception : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for non-local exception raises and also
-    --  handlers that can never handle a local raise. This warning is only ever
-    --  generated if pragma Restrictions (No_Exception_Propagation) is set. The
-    --  default is not to generate the warnings except that if the source has
-    --  at least one exception handler, and this restriction is set, and the
-    --  warning was not explicitly turned off, then it is turned on by default.
-    --  Modified by use of -gnatw.x/.X.
- 
-    No_Warn_On_Non_Local_Exception : Boolean := False;
-    --  GNAT
-    --  This is set to True if the above warning is explicitly suppressed. We
-    --  use this to avoid turning it on by default when No_Exception_Propagation
-    --  restriction is set and an exception handler is present.
- 
-    Warn_On_Object_Renames_Function : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings when a function result is renamed as
-    --  an object. The default is that this warning is disabled. Modified by
-    --  use of -gnatw.r/.R.
- 
-    Warn_On_Obsolescent_Feature : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings on use of any feature in Annex or if a
-    --  subprogram is called for which a pragma Obsolescent applies. Modified
-    --  by use of -gnatwj/J.
- 
-    Warn_On_Overlap : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings when a writable actual overlaps with
-    --  another actual in a subprogram call. This applies only in modes before
-    --  Ada 2012. Starting with Ada 2012, such overlaps are illegal.
-    --  Modified by use of -gnatw.i/.I.
- 
-    Warn_On_Questionable_Missing_Parens : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for cases where parentheses are missing
-    --  and the usage is questionable, because the intent is unclear. On by
-    --  default, modified by use of -gnatwq/Q.
- 
-    Warn_On_Parameter_Order : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for cases where the argument list for
-    --  a call is a sequence of identifiers that match the formal identifiers,
-    --  but are in the wrong order.
- 
-    Warn_On_Redundant_Constructs : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for redundant constructs (e.g. useless
-    --  assignments/conversions). The default is that this warning is disabled.
-    --  Modified by use of -gnatwr/R.
- 
-    Warn_On_Reverse_Bit_Order : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warning (informational) messages for component
-    --  clauses that are affected by non-standard bit-order. The default is
-    --  that this warning is enabled. Modified by -gnatw.v/.V.
- 
-    Warn_On_Suspicious_Contract : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for suspicious contracts expressed as
-    --  pragmas or aspects precondition and postcondition, as well as other
-    --  suspicious cases of expressions typically found in contracts like
-    --  quantified expressions and uses of Update attribute. The default is that
-    --  this warning is enabled. Modified by use of -gnatw.t/.T.
- 
-    Warn_On_Suspicious_Modulus_Value : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for suspicious modulus values, as well
-    --  as negative literals of a modular type. The default is that this warning
-    --  is enabled. Modified by -gnatw.m/.M.
- 
-    Warn_On_Unchecked_Conversion : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for unchecked conversions that may have
-    --  non-portable semantics (e.g. because sizes of types differ). Modified
-    --  by use of -gnatwz/Z.
- 
-    Warn_On_Unordered_Enumeration_Type : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for inappropriate uses (comparisons
-    --  and explicit ranges) on unordered enumeration types (which includes
-    --  all enumeration types for which pragma Ordered is not given). The
-    --  default is that this warning is disabled. Modified by -gnat.u/.U.
- 
-    Warn_On_Unrecognized_Pragma : Boolean := True;
-    --  GNAT
-    --  Set to True to generate warnings for unrecognized pragmas. The default
-    --  is that this warning is enabled. Modified by use of -gnatwg/G.
- 
-    Warn_On_Unrepped_Components : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for the case of components of record
-    --  which have a record representation clause but this component does not
-    --  have a component clause. Modified by use of -gnatw.c/.C.
- 
-    Warn_On_Warnings_Off : Boolean := False;
-    --  GNAT
-    --  Set to True to generate warnings for use of Pragma Warnings (Off, ent),
-    --  where either the pragma is never used, or it could be replaced by a
-    --  pragma Unmodified or Unreferenced. Also generates warnings for pragma
-    --  Warning (Off, string) which either has no matching pragma Warning On,
-    --  or where no warning has been suppressed by the use of the pragma.
-    --  Modified by use of -gnatw.w/.W.
- 
     type Warning_Mode_Type is
       (Suppress, Normal, Treat_As_Error, Treat_Run_Time_Warnings_As_Errors);
     Warning_Mode : Warning_Mode_Type := Normal;
--- 1656,1661 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-b.adb gcc-13.1.0/gcc/ada/osint-b.adb
*** gcc-12.2.0/gcc/ada/osint-b.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-b.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-b.ads gcc-13.1.0/gcc/ada/osint-b.ads
*** gcc-12.2.0/gcc/ada/osint-b.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-b.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-c.adb gcc-13.1.0/gcc/ada/osint-c.adb
*** gcc-12.2.0/gcc/ada/osint-c.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-c.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-c.ads gcc-13.1.0/gcc/ada/osint-c.ads
*** gcc-12.2.0/gcc/ada/osint-c.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-c.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-l.adb gcc-13.1.0/gcc/ada/osint-l.adb
*** gcc-12.2.0/gcc/ada/osint-l.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-l.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-l.ads gcc-13.1.0/gcc/ada/osint-l.ads
*** gcc-12.2.0/gcc/ada/osint-l.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-l.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-m.adb gcc-13.1.0/gcc/ada/osint-m.adb
*** gcc-12.2.0/gcc/ada/osint-m.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-m.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint-m.ads gcc-13.1.0/gcc/ada/osint-m.ads
*** gcc-12.2.0/gcc/ada/osint-m.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint-m.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/osint.adb gcc-13.1.0/gcc/ada/osint.adb
*** gcc-12.2.0/gcc/ada/osint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sdefault; use Sdefault;
*** 34,40 ****
  with Table;
  with Targparm; use Targparm;
  
! with Unchecked_Conversion;
  
  pragma Warnings (Off);
  --  This package is used also by gnatcoll
--- 34,40 ----
  with Table;
  with Targparm; use Targparm;
  
! with Ada.Unchecked_Conversion;
  
  pragma Warnings (Off);
  --  This package is used also by gnatcoll
*************** package body Osint is
*** 1886,1898 ****
        end if;
  
        declare
!          Full_Name : String (1 .. Dir_Name'Length + Name'Length + 1);
  
        begin
-          Full_Name (1 .. Dir_Name'Length) := Dir_Name.all;
-          Full_Name (Dir_Name'Length + 1 .. Full_Name'Last - 1) := Name;
-          Full_Name (Full_Name'Last) := ASCII.NUL;
- 
           Attr.all := Unknown_Attributes;
  
           if not Is_Regular_File (Full_Name'Address, Attr) then
--- 1886,1898 ----
        end if;
  
        declare
!          Full_Name :
!            constant String (1 .. Dir_Name'Length + Name'Length + 1) :=
!            Dir_Name.all & Name & ASCII.NUL;
!          --  Use explicit bounds, because Dir_Name might be a substring whose
!          --  'First is not 1.
  
        begin
           Attr.all := Unknown_Attributes;
  
           if not Is_Regular_File (Full_Name'Address, Attr) then
*************** package body Osint is
*** 1904,1913 ****
              if Dir_Name'Length = 0 then
                 Found := N;
              else
!                Name_Len := Full_Name'Length - 1;
!                Name_Buffer (1 .. Name_Len) :=
!                  Full_Name (1 .. Full_Name'Last - 1);
!                Found := Name_Find;
              end if;
           end if;
        end;
--- 1904,1911 ----
              if Dir_Name'Length = 0 then
                 Found := N;
              else
!                Found :=
!                  Name_Find (Full_Name (Full_Name'First .. Full_Name'Last - 1));
              end if;
           end if;
        end;
*************** package body Osint is
*** 1971,1979 ****
     function Nb_Dir_In_Obj_Search_Path return Natural is
     begin
        if Opt.Look_In_Primary_Dir then
!          return Lib_Search_Directories.Last -  Primary_Directory + 1;
        else
!          return Lib_Search_Directories.Last -  Primary_Directory;
        end if;
     end Nb_Dir_In_Obj_Search_Path;
  
--- 1969,1977 ----
     function Nb_Dir_In_Obj_Search_Path return Natural is
     begin
        if Opt.Look_In_Primary_Dir then
!          return Lib_Search_Directories.Last - Primary_Directory + 1;
        else
!          return Lib_Search_Directories.Last - Primary_Directory;
        end if;
     end Nb_Dir_In_Obj_Search_Path;
  
*************** package body Osint is
*** 1984,1992 ****
     function Nb_Dir_In_Src_Search_Path return Natural is
     begin
        if Opt.Look_In_Primary_Dir then
!          return Src_Search_Directories.Last -  Primary_Directory + 1;
        else
!          return Src_Search_Directories.Last -  Primary_Directory;
        end if;
     end Nb_Dir_In_Src_Search_Path;
  
--- 1982,1990 ----
     function Nb_Dir_In_Src_Search_Path return Natural is
     begin
        if Opt.Look_In_Primary_Dir then
!          return Src_Search_Directories.Last - Primary_Directory + 1;
        else
!          return Src_Search_Directories.Last - Primary_Directory;
        end if;
     end Nb_Dir_In_Src_Search_Path;
  
*************** package body Osint is
*** 2216,2224 ****
        --  GNAT releases are available with these functions.
  
        function To_Int is
!         new Unchecked_Conversion (OS_Time, Underlying_OS_Time);
        function From_Int is
!         new Unchecked_Conversion (Underlying_OS_Time, OS_Time);
  
        TI : Underlying_OS_Time := To_Int (T);
        Y  : Year_Type;
--- 2214,2222 ----
        --  GNAT releases are available with these functions.
  
        function To_Int is
!         new Ada.Unchecked_Conversion (OS_Time, Underlying_OS_Time);
        function From_Int is
!         new Ada.Unchecked_Conversion (Underlying_OS_Time, OS_Time);
  
        TI : Underlying_OS_Time := To_Int (T);
        Y  : Year_Type;
*************** package body Osint is
*** 2758,2764 ****
  
     begin
        if Std_Prefix = null then
!          Std_Prefix := Executable_Prefix;
  
           if Std_Prefix.all /= "" then
  
--- 2756,2780 ----
  
     begin
        if Std_Prefix = null then
!          Std_Prefix := String_Ptr (Getenv ("GNSA_ROOT"));
! 
!          if Std_Prefix.all = "" then
!             Std_Prefix := Executable_Prefix;
! 
!          elsif not Is_Directory_Separator (Std_Prefix (Std_Prefix'Last)) then
! 
!             --  The remainder of this function assumes that Std_Prefix
!             --  terminates with a dir separator, so we force this here.
! 
!             declare
!                Old_Prefix : String_Ptr := Std_Prefix;
!             begin
!                Std_Prefix := new String (1 .. Old_Prefix'Length + 1);
!                Std_Prefix (1 .. Old_Prefix'Length) := Old_Prefix.all;
!                Std_Prefix (Old_Prefix'Length + 1) := Directory_Separator;
!                Free (Old_Prefix);
!             end;
!          end if;
  
           if Std_Prefix.all /= "" then
  
*************** package body Osint is
*** 3085,3092 ****
        type Path_String_Access is access Path_String;
  
        function Address_To_Access is new
!         Unchecked_Conversion (Source => Address,
!                               Target => Path_String_Access);
  
        Path_Access : constant Path_String_Access :=
                        Address_To_Access (Path_Addr);
--- 3101,3108 ----
        type Path_String_Access is access Path_String;
  
        function Address_To_Access is new
!         Ada.Unchecked_Conversion (Source => Address,
!                                   Target => Path_String_Access);
  
        Path_Access : constant Path_String_Access :=
                        Address_To_Access (Path_Addr);
diff -Nrcpad gcc-12.2.0/gcc/ada/osint.ads gcc-13.1.0/gcc/ada/osint.ads
*** gcc-12.2.0/gcc/ada/osint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/osint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Osint is
*** 237,244 ****
     --  replace the Prefix substring with the root installation directory.
     --  By default, try to compute the root installation directory by looking
     --  at the executable name as it was typed on the command line and, if
!    --  needed, use the PATH environment variable. If the above computation
!    --  fails, return Path. This function assumes Prefix'First = Path'First.
  
     function Shared_Lib (Name : String) return String;
     --  Returns the runtime shared library in the form -l<name>-<version> where
--- 237,247 ----
     --  replace the Prefix substring with the root installation directory.
     --  By default, try to compute the root installation directory by looking
     --  at the executable name as it was typed on the command line and, if
!    --  needed, use the PATH environment variable. If the GNSA_ROOT environment
!    --  variable is set, then the content of this variable is used as the root
!    --  installation directory.
!    --  If the above computation fails, return Path. This function assumes
!    --  Prefix'First = Path'First.
  
     function Shared_Lib (Name : String) return String;
     --  Returns the runtime shared library in the form -l<name>-<version> where
diff -Nrcpad gcc-12.2.0/gcc/ada/output.adb gcc-13.1.0/gcc/ada/output.adb
*** gcc-12.2.0/gcc/ada/output.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/output.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Output is
*** 235,240 ****
--- 235,241 ----
  
     procedure Pop_Output is
     begin
+       Flush_Buffer;
        pragma Assert (FD_Stack_Idx >= FD_Array'First);
        Current_FD := FD_Stack (FD_Stack_Idx);
        FD_Stack_Idx := FD_Stack_Idx - 1;
*************** package body Output is
*** 292,301 ****
  
     procedure Set_Output (FD : File_Descriptor) is
     begin
!       if Special_Output_Proc = null then
!          Flush_Buffer;
!       end if;
! 
        Current_FD := FD;
     end Set_Output;
  
--- 293,299 ----
  
     procedure Set_Output (FD : File_Descriptor) is
     begin
!       Flush_Buffer;
        Current_FD := FD;
     end Set_Output;
  
*************** package body Output is
*** 323,381 ****
--- 321,419 ----
  
     procedure w (C : Character) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Char (''');
        Write_Char (C);
        Write_Char (''');
        Write_Eol;
+ 
+       Pop_Output;
     end w;
  
     procedure w (S : String) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Str (S);
        Write_Eol;
+ 
+       Pop_Output;
     end w;
  
     procedure w (V : Int) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Int (V);
        Write_Eol;
+ 
+       Pop_Output;
     end w;
  
     procedure w (B : Boolean) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        if B then
           w ("True");
        else
           w ("False");
        end if;
+ 
+       Pop_Output;
     end w;
  
     procedure w (L : String; C : Character) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Str (L);
        Write_Char (' ');
        w (C);
+ 
+       Pop_Output;
     end w;
  
     procedure w (L : String; S : String) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Str (L);
        Write_Char (' ');
        w (S);
+ 
+       Pop_Output;
     end w;
  
     procedure w (L : String; V : Int) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Str (L);
        Write_Char (' ');
        w (V);
+ 
+       Pop_Output;
     end w;
  
     procedure w (L : String; B : Boolean) is
     begin
+       Push_Output;
+       Set_Standard_Error;
+ 
        Write_Str (L);
        Write_Char (' ');
        w (B);
+ 
+       Pop_Output;
     end w;
  
     ----------------
*************** package body Output is
*** 384,393 ****
  
     procedure Write_Char (C : Character) is
     begin
!       pragma Assert (Next_Col in Buffer'Range);
!       if Next_Col = Buffer'Length then
!          Write_Eol;
        end if;
  
        if C = ASCII.LF then
           Write_Eol;
--- 422,431 ----
  
     procedure Write_Char (C : Character) is
     begin
!       if Next_Col > Buffer'Length then
!          Flush_Buffer;
        end if;
+       pragma Assert (Next_Col in Buffer'Range);
  
        if C = ASCII.LF then
           Write_Eol;
diff -Nrcpad gcc-12.2.0/gcc/ada/output.ads gcc-13.1.0/gcc/ada/output.ads
*** gcc-12.2.0/gcc/ada/output.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/output.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch10.adb gcc-13.1.0/gcc/ada/par-ch10.adb
*** gcc-12.2.0/gcc/ada/par-ch10.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch10.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch10 is
*** 279,288 ****
                 Set_Private_Present (Comp_Unit_Node, True);
              end if;
  
!          elsif Token = Tok_Procedure
!            or else Token = Tok_Function
!            or else Token = Tok_Generic
!          then
              Set_Private_Present (Comp_Unit_Node, True);
           end if;
        end if;
--- 279,285 ----
                 Set_Private_Present (Comp_Unit_Node, True);
              end if;
  
!          elsif Token in Tok_Procedure | Tok_Function | Tok_Generic then
              Set_Private_Present (Comp_Unit_Node, True);
           end if;
        end if;
*************** package body Ch10 is
*** 300,307 ****
  
           --  Allow task and protected for nice error recovery purposes
  
!          exit when Token = Tok_Task
!            or else Token = Tok_Protected;
  
           if Token = Tok_With then
              Error_Msg_SC ("misplaced WITH");
--- 297,303 ----
  
           --  Allow task and protected for nice error recovery purposes
  
!          exit when Token in Tok_Task | Tok_Protected;
  
           if Token = Tok_With then
              Error_Msg_SC ("misplaced WITH");
*************** package body Ch10 is
*** 376,385 ****
        elsif Token = Tok_Separate then
           Set_Unit (Comp_Unit_Node, P_Subunit);
  
!       elsif Token = Tok_Function
!         or else Token = Tok_Not
!         or else Token = Tok_Overriding
!         or else Token = Tok_Procedure
        then
           Set_Unit (Comp_Unit_Node, P_Subprogram (Pf_Decl_Gins_Pbod_Rnam_Pexp));
  
--- 372,378 ----
        elsif Token = Tok_Separate then
           Set_Unit (Comp_Unit_Node, P_Subunit);
  
!       elsif Token in Tok_Function | Tok_Not | Tok_Overriding | Tok_Procedure
        then
           Set_Unit (Comp_Unit_Node, P_Subprogram (Pf_Decl_Gins_Pbod_Rnam_Pexp));
  
*************** package body Ch10 is
*** 392,401 ****
  
           if SIS_Entry_Active then
  
!             if Token = Tok_Begin
!                or else Token = Tok_Identifier
!                or else Token in Token_Class_Deckn
!             then
                 Push_Scope_Stack;
                 Scopes (Scope.Last).Etyp := E_Name;
                 Scopes (Scope.Last).Sloc := SIS_Sloc;
--- 385,391 ----
  
           if SIS_Entry_Active then
  
!             if Token in Tok_Begin | Tok_Identifier | Token_Class_Deckn then
                 Push_Scope_Stack;
                 Scopes (Scope.Last).Etyp := E_Name;
                 Scopes (Scope.Last).Sloc := SIS_Sloc;
*************** package body Ch10 is
*** 947,956 ****
                    Save_Scan_State (Scan_State);
                    Scan; -- past comma
  
!                   if Token in Token_Class_Cunit
!                     or else Token = Tok_Use
!                     or else Token = Tok_Pragma
!                   then
                       Restore_Scan_State (Scan_State);
                       exit;
                    end if;
--- 937,943 ----
                    Save_Scan_State (Scan_State);
                    Scan; -- past comma
  
!                   if Token in Token_Class_Cunit | Tok_Use | Tok_Pragma then
                       Restore_Scan_State (Scan_State);
                       exit;
                    end if;
*************** package body Ch10 is
*** 1047,1057 ****
  
        Ignore (Tok_Semicolon);
  
!       if Token = Tok_Function
!         or else Token = Tok_Not
!         or else Token = Tok_Overriding
!         or else Token = Tok_Procedure
!       then
           Body_Node := P_Subprogram (Pf_Pbod_Pexp);
  
        elsif Token = Tok_Package then
--- 1034,1040 ----
  
        Ignore (Tok_Semicolon);
  
!       if Token in Tok_Function | Tok_Not | Tok_Overriding | Tok_Procedure then
           Body_Node := P_Subprogram (Pf_Pbod_Pexp);
  
        elsif Token = Tok_Package then
*************** package body Ch10 is
*** 1194,1200 ****
        Write_Int (Int (Line));
  
        Write_Str (", file offset ");
!       Write_Int (Int (Loc) - Int (Source_First (Sind)));
     end Unit_Location;
  
  end Ch10;
--- 1177,1183 ----
        Write_Int (Int (Line));
  
        Write_Str (", file offset ");
!       Write_Int (Int (Loc - Source_First (Sind)));
     end Unit_Location;
  
  end Ch10;
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch11.adb gcc-13.1.0/gcc/ada/par-ch11.adb
*** gcc-12.2.0/gcc/ada/par-ch11.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch11.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch11 is
*** 61,67 ****
        Handled_Stmt_Seq_Node :=
          New_Node (N_Handled_Sequence_Of_Statements, Token_Ptr);
        Set_Statements
!         (Handled_Stmt_Seq_Node, P_Sequence_Of_Statements (SS_Extm_Sreq));
  
        if Token = Tok_Exception then
           Scan; -- past EXCEPTION
--- 61,68 ----
        Handled_Stmt_Seq_Node :=
          New_Node (N_Handled_Sequence_Of_Statements, Token_Ptr);
        Set_Statements
!         (Handled_Stmt_Seq_Node,
!          P_Sequence_Of_Statements (SS_Extm_Sreq, Handled => True));
  
        if Token = Tok_Exception then
           Scan; -- past EXCEPTION
*************** package body Ch11 is
*** 234,240 ****
        end if;
  
        if Token = Tok_When then
!          Error_Msg_GNAT_Extension ("raise when statement");
  
           Mutate_Nkind (Raise_Node, N_Raise_When_Statement);
  
--- 235,241 ----
        end if;
  
        if Token = Tok_When then
!          Error_Msg_GNAT_Extension ("raise when statement", Token_Ptr);
  
           Mutate_Nkind (Raise_Node, N_Raise_When_Statement);
  
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch12.adb gcc-13.1.0/gcc/ada/par-ch12.adb
*** gcc-12.2.0/gcc/ada/par-ch12.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch12.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch12 is
*** 114,123 ****
  
        --  Check for generic renaming declaration case
  
!       if Token = Tok_Package
!         or else Token = Tok_Function
!         or else Token = Tok_Procedure
!       then
           Ren_Token := Token;
           Scan; -- scan past PACKAGE, FUNCTION or PROCEDURE
  
--- 114,120 ----
  
        --  Check for generic renaming declaration case
  
!       if Token in Tok_Package | Tok_Function | Tok_Procedure then
           Ren_Token := Token;
           Scan; -- scan past PACKAGE, FUNCTION or PROCEDURE
  
*************** package body Ch12 is
*** 1225,1231 ****
  
           elsif Token = Tok_Left_Paren then
              Error_Msg_GNAT_Extension
!               ("expression default for formal subprograms");
  
              if Nkind (Spec_Node) = N_Function_Specification then
                 Scan;  --  past "("
--- 1222,1228 ----
  
           elsif Token = Tok_Left_Paren then
              Error_Msg_GNAT_Extension
!               ("expression default for formal subprograms", Token_Ptr);
  
              if Nkind (Spec_Node) = N_Function_Specification then
                 Scan;  --  past "("
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch13.adb gcc-13.1.0/gcc/ada/par-ch13.adb
*** gcc-12.2.0/gcc/ada/par-ch13.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch13.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch13 is
*** 336,342 ****
              --  Check for a missing aspect definition. Aspects with optional
              --  definitions are not considered.
  
!             if Token = Tok_Comma or else Token = Tok_Semicolon then
                 if not Opt then
                    Error_Msg_Node_1 := Identifier (Aspect);
                    Error_Msg_AP ("aspect& requires an aspect definition");
--- 336,342 ----
              --  Check for a missing aspect definition. Aspects with optional
              --  definitions are not considered.
  
!             if Token in Tok_Comma | Tok_Semicolon then
                 if not Opt then
                    Error_Msg_Node_1 := Identifier (Aspect);
                    Error_Msg_AP ("aspect& requires an aspect definition");
*************** package body Ch13 is
*** 367,373 ****
                 --  aspect Depends, Global, Refined_Depends, Refined_Global
                 --  or Refined_State lacks enclosing parentheses.
  
!                if Token /= Tok_Left_Paren and then Token /= Tok_Null then
  
                    --  [Refined_]Depends
  
--- 367,373 ----
                 --  aspect Depends, Global, Refined_Depends, Refined_Global
                 --  or Refined_State lacks enclosing parentheses.
  
!                if Token not in Tok_Left_Paren | Tok_Null then
  
                    --  [Refined_]Depends
  
*************** package body Ch13 is
*** 571,577 ****
                 --  Attempt to detect ' or => following a potential aspect
                 --  mark.
  
!                if Token = Tok_Apostrophe or else Token = Tok_Arrow then
                    Restore_Scan_State (Scan_State);
                    Error_Msg_AP -- CODEFIX
                      ("|missing "",""");
--- 571,577 ----
                 --  Attempt to detect ' or => following a potential aspect
                 --  mark.
  
!                if Token in Tok_Apostrophe | Tok_Arrow then
                    Restore_Scan_State (Scan_State);
                    Error_Msg_AP -- CODEFIX
                      ("|missing "",""");
*************** package body Ch13 is
*** 603,609 ****
  
                    --  Attempt to detect ' or => following potential aspect mark
  
!                   if Token = Tok_Apostrophe or else Token = Tok_Arrow then
                       Restore_Scan_State (Scan_State);
                       Error_Msg_SC -- CODEFIX
                         ("|"";"" should be "",""");
--- 603,609 ----
  
                    --  Attempt to detect ' or => following potential aspect mark
  
!                   if Token in Tok_Apostrophe | Tok_Arrow then
                       Restore_Scan_State (Scan_State);
                       Error_Msg_SC -- CODEFIX
                         ("|"";"" should be "",""");
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch2.adb gcc-13.1.0/gcc/ada/par-ch2.adb
*** gcc-12.2.0/gcc/ada/par-ch2.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch2.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch2 is
*** 199,204 ****
--- 199,277 ----
  
     --  Handled by scanner as part of string literal handling (see 2.4)
  
+    ---------------------------------------
+    --  2.6  Interpolated String Literal --
+    ---------------------------------------
+ 
+    --  INTERPOLATED_STRING_LITERAL ::=
+    --    'f' "{INTERPOLATED_STRING_ELEMENT}" {
+    --        "{INTERPOLATED_STRING_ELEMENT}" }
+ 
+    --  INTERPOLATED_STRING_ELEMENT ::=
+    --     ESCAPED_CHARACTER | INTERPOLATED_EXPRESSION
+    --   | non_quotation_mark_non_left_brace_GRAPHIC_CHARACTER
+ 
+    --  ESCAPED_CHARACTER ::= '\GRAPHIC_CHARACTER'
+ 
+    --  INTERPOLATED_EXPRESSION ::= '{' EXPRESSION '}'
+ 
+    --  Interpolated string element and escaped character rules are handled by
+    --  scanner as part of string literal handling.
+ 
+    -----------------------------------
+    -- P_Interpolated_String_Literal --
+    -----------------------------------
+ 
+    function P_Interpolated_String_Literal return Node_Id is
+       Elements_List : constant List_Id := New_List;
+       NL_Node       : Node_Id;
+       String_Node   : Node_Id;
+ 
+    begin
+       String_Node := New_Node (N_Interpolated_String_Literal, Token_Ptr);
+       Inside_Interpolated_String_Literal := True;
+ 
+       Scan;   --  past 'f'
+ 
+       if Token /= Tok_String_Literal then
+          Error_Msg_SC ("string literal expected");
+ 
+       else
+          Append_To (Elements_List, Token_Node);
+          Scan;  --  past string_literal
+ 
+          while Token in Tok_Left_Curly_Bracket | Tok_String_Literal loop
+ 
+             --  Interpolated expression
+ 
+             if Token = Tok_Left_Curly_Bracket then
+                Scan; --  past '{'
+                Append_To (Elements_List, P_Expression);
+                T_Right_Curly_Bracket;
+             else
+                if Prev_Token = Tok_String_Literal then
+                   NL_Node := New_Node (N_String_Literal, Token_Ptr);
+                   Set_Has_Wide_Character (NL_Node, False);
+                   Set_Has_Wide_Wide_Character (NL_Node, False);
+ 
+                   Start_String;
+                   Store_String_Char (Get_Char_Code (ASCII.LF));
+                   Set_Strval (NL_Node, End_String);
+                   Append_To (Elements_List, NL_Node);
+                end if;
+ 
+                Append_To (Elements_List, Token_Node);
+                Scan; --  past string_literal
+             end if;
+          end loop;
+       end if;
+ 
+       Inside_Interpolated_String_Literal := False;
+       Set_Expressions (String_Node, Elements_List);
+ 
+       return String_Node;
+    end P_Interpolated_String_Literal;
+ 
     ------------------
     -- 2.7  Comment --
     ------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch3.adb gcc-13.1.0/gcc/ada/par-ch3.adb
*** gcc-12.2.0/gcc/ada/par-ch3.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch3.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch3 is
*** 77,116 ****
     --  are enabled, to remove the ambiguity of "when X in A | B". We consider
     --  it very unlikely that this will ever arise in practice.
  
!    procedure P_Declarative_Items
       (Decls              : List_Id;
        Done               : out Boolean;
        Declare_Expression : Boolean;
!       In_Spec            : Boolean);
!    --  Scans out a single declarative item, or, in the case of a declaration
!    --  with a list of identifiers, a list of declarations, one for each of the
!    --  identifiers in the list. The declaration or declarations scanned are
!    --  appended to the given list. Done indicates whether or not there may be
!    --  additional declarative items to scan. If Done is True, then a decision
!    --  has been made that there are no more items to scan. If Done is False,
!    --  then there may be additional declarations to scan.
!    --
!    --  Declare_Expression is true if we are parsing a declare_expression, in
!    --  which case we want to suppress certain style checking.
!    --
!    --  In_Spec is true if we are scanning a package declaration, and is used to
!    --  generate an appropriate message if a statement is encountered in such a
!    --  context.
  
     procedure P_Identifier_Declarations
!      (Decls   : List_Id;
!       Done    : out Boolean;
!       In_Spec : Boolean);
!    --  Scans out a set of declarations for an identifier or list of
!    --  identifiers, and appends them to the given list. The parameters have
!    --  the same significance as for P_Declarative_Items.
  
     procedure Statement_When_Declaration_Expected
       (Decls   : List_Id;
        Done    : out Boolean;
        In_Spec : Boolean);
     --  Called when a statement is found at a point where a declaration was
!    --  expected. The parameters are as described for P_Declarative_Items.
  
     procedure Set_Declaration_Expected;
     --  Posts a "declaration expected" error messages at the start of the
--- 77,109 ----
     --  are enabled, to remove the ambiguity of "when X in A | B". We consider
     --  it very unlikely that this will ever arise in practice.
  
!    procedure P_Declarative_Item
       (Decls              : List_Id;
        Done               : out Boolean;
        Declare_Expression : Boolean;
!       In_Spec            : Boolean;
!       In_Statements      : Boolean);
!    --  Parses a single declarative item. The parameters have the same meaning
!    --  as for P_Declarative_Items. If the declarative item has multiple
!    --  identifiers, as in "X, Y, Z : ...", then one declaration is appended to
!    --  Decls for each of the identifiers.
  
     procedure P_Identifier_Declarations
!      (Decls         : List_Id;
!       Done          : out Boolean;
!       In_Spec       : Boolean;
!       In_Statements : Boolean);
!    --  Parses a sequence of declarations for an identifier or list of
!    --  identifiers, and appends them to the given list. The parameters
!    --  have the same meaning as for P_Declarative_Items.
  
     procedure Statement_When_Declaration_Expected
       (Decls   : List_Id;
        Done    : out Boolean;
        In_Spec : Boolean);
     --  Called when a statement is found at a point where a declaration was
!    --  expected. The parameters have the same meaning as for
!    --  P_Declarative_Items.
  
     procedure Set_Declaration_Expected;
     --  Posts a "declaration expected" error messages at the start of the
*************** package body Ch3 is
*** 152,161 ****
  
        --  Here if := or something that we will take as equivalent
  
!       elsif Token = Tok_Colon_Equal
!         or else Token = Tok_Equal
!         or else Token = Tok_Is
!       then
           null;
  
        --  Another possibility. If we have a literal followed by a semicolon,
--- 145,151 ----
  
        --  Here if := or something that we will take as equivalent
  
!       elsif Token in Tok_Colon_Equal | Tok_Equal | Tok_Is then
           null;
  
        --  Another possibility. If we have a literal followed by a semicolon,
*************** package body Ch3 is
*** 407,415 ****
           --  Ada 2005 (AI-419): AARM 3.4 (2/2)
  
           if (Ada_Version < Ada_2005 and then Token = Tok_Limited)
!            or else Token = Tok_Private
!            or else Token = Tok_Record
!            or else Token = Tok_Null
           then
              Error_Msg_AP ("TAGGED expected");
           end if;
--- 397,403 ----
           --  Ada 2005 (AI-419): AARM 3.4 (2/2)
  
           if (Ada_Version < Ada_2005 and then Token = Tok_Limited)
!            or else Token in Tok_Private | Tok_Record | Tok_Null
           then
              Error_Msg_AP ("TAGGED expected");
           end if;
*************** package body Ch3 is
*** 617,623 ****
  
                 --  LIMITED RECORD or LIMITED NULL RECORD
  
!                if Token = Tok_Record or else Token = Tok_Null then
                    if Ada_Version = Ada_83 then
                       Error_Msg_SP
                         ("(Ada 83) limited record declaration not allowed!");
--- 605,611 ----
  
                 --  LIMITED RECORD or LIMITED NULL RECORD
  
!                if Token in Tok_Record | Tok_Null then
                    if Ada_Version = Ada_83 then
                       Error_Msg_SP
                         ("(Ada 83) limited record declaration not allowed!");
*************** package body Ch3 is
*** 1012,1018 ****
        Type_Node : Node_Id;
  
     begin
!       if Token = Tok_Identifier or else Token = Tok_Operator_Symbol then
           Type_Node := P_Subtype_Mark;
           return P_Subtype_Indication (Type_Node, Not_Null_Present);
  
--- 1000,1006 ----
        Type_Node : Node_Id;
  
     begin
!       if Token in Tok_Identifier | Tok_Operator_Symbol then
           Type_Node := P_Subtype_Mark;
           return P_Subtype_Indication (Type_Node, Not_Null_Present);
  
*************** package body Ch3 is
*** 1307,1315 ****
     --  Error recovery: can raise Error_Resync
  
     procedure P_Identifier_Declarations
!      (Decls   : List_Id;
!       Done    : out Boolean;
!       In_Spec : Boolean)
     is
        Acc_Node         : Node_Id;
        Decl_Node        : Node_Id;
--- 1295,1304 ----
     --  Error recovery: can raise Error_Resync
  
     procedure P_Identifier_Declarations
!      (Decls         : List_Id;
!       Done          : out Boolean;
!       In_Spec       : Boolean;
!       In_Statements : Boolean)
     is
        Acc_Node         : Node_Id;
        Decl_Node        : Node_Id;
*************** package body Ch3 is
*** 1331,1336 ****
--- 1320,1332 ----
        Num_Idents : Nat := 1;
        --  Number of identifiers stored in Idents
  
+       function Identifier_Starts_Statement return Boolean;
+       --  Called with Token being an identifier that might start a declaration
+       --  or a statement. True if we are parsing declarations in a sequence of
+       --  statements, and this identifier is the start of a statement. If this
+       --  is true, we quit parsing declarations, and return Done = True so the
+       --  caller will switch to parsing statements.
+ 
        procedure No_List;
        --  This procedure is called in renames cases to make sure that we do
        --  not have more than one identifier. If we do have more than one
*************** package body Ch3 is
*** 1342,1347 ****
--- 1338,1392 ----
        --  returns True, otherwise returns False. Includes checking for some
        --  common error cases.
  
+       ---------------------------------
+       -- Identifier_Starts_Statement --
+       ---------------------------------
+ 
+       function Identifier_Starts_Statement return Boolean is
+          pragma Assert (Token = Tok_Identifier);
+          Scan_State : Saved_Scan_State;
+          Result : Boolean := False;
+       begin
+          if not In_Statements then
+             return False;
+          end if;
+ 
+          Save_Scan_State (Scan_State);
+          Scan;
+ 
+          case Token is
+             when Tok_Comma => -- "X, ..." is a declaration
+                null;
+ 
+             when Tok_Colon =>
+                --  "X : ..." is usually a declaration, but "X : begin..."  is
+                --  not. We return true for things like "X : Y : begin...",
+                --  which is a syntax error, because that gives better error
+                --  recovery for some ACATS.
+ 
+                Scan;
+ 
+                if Token in Token_Class_Labeled_Stmt then
+                   Result := True;
+ 
+                elsif Token = Tok_Identifier then
+                   Scan;
+                   if Token = Tok_Colon then
+                      Scan;
+                      if Token in Token_Class_Labeled_Stmt then
+                         Result := True;
+                      end if;
+                   end if;
+                end if;
+ 
+             when others =>
+                Result := True;
+          end case;
+ 
+          Restore_Scan_State (Scan_State);
+          return Result;
+       end Identifier_Starts_Statement;
+ 
        -------------
        -- No_List --
        -------------
*************** package body Ch3 is
*** 1395,1400 ****
--- 1440,1450 ----
     --  Start of processing for P_Identifier_Declarations
  
     begin
+       if Identifier_Starts_Statement then
+          Done := True;
+          return;
+       end if;
+ 
        Ident_Sloc := Token_Ptr;
        Save_Scan_State (Scan_State); -- at first identifier
        Idents (1) := P_Defining_Identifier (C_Comma_Colon);
*************** package body Ch3 is
*** 1514,1519 ****
--- 1564,1573 ----
           --  Otherwise we definitely have an ordinary identifier with a junk
           --  token after it.
  
+          elsif In_Statements then
+             Done := True;
+             return;
+ 
           else
              --  If in -gnatd.2 mode, try for statements
  
*************** package body Ch3 is
*** 2036,2045 ****
  
        --  OK, not an aspect specification, so continue test for extension
  
!       elsif Token = Tok_With
!         or else Token = Tok_Record
!         or else Token = Tok_Null
!       then
           T_With; -- past WITH or give error message
  
           if Token = Tok_Limited then
--- 2090,2096 ----
  
        --  OK, not an aspect specification, so continue test for extension
  
!       elsif Token in Tok_With | Tok_Record | Tok_Null then
           T_With; -- past WITH or give error message
  
           if Token = Tok_Limited then
*************** package body Ch3 is
*** 2220,2226 ****
  
           --  Check for error of DIGITS or DELTA after a subtype mark
  
!          elsif Token = Tok_Digits or else Token = Tok_Delta then
              Error_Msg_SC
                ("accuracy definition not allowed in membership test");
              Scan; -- past DIGITS or DELTA
--- 2271,2277 ----
  
           --  Check for error of DIGITS or DELTA after a subtype mark
  
!          elsif Token in Tok_Digits | Tok_Delta then
              Error_Msg_SC
                ("accuracy definition not allowed in membership test");
              Scan; -- past DIGITS or DELTA
*************** package body Ch3 is
*** 2788,2797 ****
              else
                 P_Index_Subtype_Def_With_Fixed_Lower_Bound (Subtype_Mark_Node);
  
!                Error_Msg_GNAT_Extension ("fixed-lower-bound array");
              end if;
  
!             exit when Token = Tok_Right_Paren or else Token = Tok_Of;
              T_Comma;
           end loop;
  
--- 2839,2849 ----
              else
                 P_Index_Subtype_Def_With_Fixed_Lower_Bound (Subtype_Mark_Node);
  
!                Error_Msg_GNAT_Extension ("fixed-lower-bound array", Token_Ptr,
!                                          Is_Core_Extension => True);
              end if;
  
!             exit when Token in Tok_Right_Paren | Tok_Of;
              T_Comma;
           end loop;
  
*************** package body Ch3 is
*** 2806,2812 ****
        --  constrained_array_definition, which will be processed further below.
  
        elsif Prev_Token = Tok_Range
!         and then Token /= Tok_Right_Paren and then Token /= Tok_Comma
        then
           --  If we have an expression followed by "..", then scan farther
           --  and check for "<>" to see if we have a fixed-lower-bound range.
--- 2858,2864 ----
        --  constrained_array_definition, which will be processed further below.
  
        elsif Prev_Token = Tok_Range
!         and then Token not in Tok_Right_Paren | Tok_Comma
        then
           --  If we have an expression followed by "..", then scan farther
           --  and check for "<>" to see if we have a fixed-lower-bound range.
*************** package body Ch3 is
*** 2857,2866 ****
                       P_Index_Subtype_Def_With_Fixed_Lower_Bound
                         (Subtype_Mark_Node);
  
!                      Error_Msg_GNAT_Extension ("fixed-lower-bound array");
                    end if;
  
!                   exit when Token = Tok_Right_Paren or else Token = Tok_Of;
                    T_Comma;
                 end loop;
  
--- 2909,2920 ----
                       P_Index_Subtype_Def_With_Fixed_Lower_Bound
                         (Subtype_Mark_Node);
  
!                      Error_Msg_GNAT_Extension
!                        ("fixed-lower-bound array", Token_Ptr,
!                         Is_Core_Extension => True);
                    end if;
  
!                   exit when Token in Tok_Right_Paren | Tok_Of;
                    T_Comma;
                 end loop;
  
*************** package body Ch3 is
*** 3179,3185 ****
                    Scan;
  
                    if Token = Tok_Access then
!                      Error_Msg_SC ("CONSTANT must appear after ACCESS");
                       Set_Discriminant_Type
                         (Specification_Node,
                          P_Access_Definition (Not_Null_Present));
--- 3233,3240 ----
                    Scan;
  
                    if Token = Tok_Access then
!                      Error_Msg_SC -- CODEFIX
!                        ("ACCESS must come before CONSTANT");
                       Set_Discriminant_Type
                         (Specification_Node,
                          P_Access_Definition (Not_Null_Present));
*************** package body Ch3 is
*** 3321,3327 ****
              Save_Scan_State (Scan_State); -- at Id
              Scan; -- past Id
  
!             if Token = Tok_Arrow or else Token = Tok_Vertical_Bar then
                 Restore_Scan_State (Scan_State); -- to Id
                 Append (P_Discriminant_Association, Constr_List);
                 goto Loop_Continue;
--- 3376,3382 ----
              Save_Scan_State (Scan_State); -- at Id
              Scan; -- past Id
  
!             if Token in Tok_Arrow | Tok_Vertical_Bar then
                 Restore_Scan_State (Scan_State); -- to Id
                 Append (P_Discriminant_Association, Constr_List);
                 goto Loop_Continue;
*************** package body Ch3 is
*** 3359,3365 ****
              --  later during analysis), and scan to the next token.
  
              if Token = Tok_Box then
!                Error_Msg_GNAT_Extension ("fixed-lower-bound array");
  
                 Expr_Node := Empty;
                 Scan;
--- 3414,3421 ----
              --  later during analysis), and scan to the next token.
  
              if Token = Tok_Box then
!                Error_Msg_GNAT_Extension ("fixed-lower-bound array", Token_Ptr,
!                                          Is_Core_Extension => True);
  
                 Expr_Node := Empty;
                 Scan;
*************** package body Ch3 is
*** 3461,3468 ****
--- 3517,3558 ----
     --  Error recovery: can raise Error_Resync
  
     function P_Record_Definition return Node_Id is
+ 
+       procedure Catch_Out_Of_Order_Keywords (Keyword : String);
+       --  Catch ouf-of-order keywords in a record definition
+ 
+       ---------------------------------
+       -- Catch_Out_Of_Order_Keywords --
+       ---------------------------------
+ 
+       procedure Catch_Out_Of_Order_Keywords (Keyword : String) is
+       begin
+          loop
+             if Token = Tok_Abstract then
+                Error_Msg_SC -- CODEFIX
+                  ("ABSTRACT must come before " & Keyword);
+                Scan; -- past ABSTRACT
+ 
+             elsif Token = Tok_Tagged then
+                Error_Msg_SC -- CODEFIX
+                  ("TAGGED must come before " & Keyword);
+                Scan; -- past TAGGED
+ 
+             elsif Token = Tok_Limited then
+                Error_Msg_SC -- CODEFIX
+                  ("LIMITED must come before " & Keyword);
+                Scan; -- past LIMITED
+ 
+             else
+                exit;
+             end if;
+          end loop;
+       end Catch_Out_Of_Order_Keywords;
+ 
        Rec_Node : Node_Id;
  
+    --  Start of processing for P_Record_Definition
+ 
     begin
        Inside_Record_Definition := True;
        Rec_Node := New_Node (N_Record_Definition, Token_Ptr);
*************** package body Ch3 is
*** 3471,3478 ****
--- 3561,3571 ----
  
        if Token = Tok_Null then
           Scan; -- past NULL
+ 
+          Catch_Out_Of_Order_Keywords ("NULL");
           T_Record;
           Set_Null_Present (Rec_Node, True);
+          Catch_Out_Of_Order_Keywords ("RECORD");
  
        --  Catch incomplete declaration to prevent cascaded errors, see
        --  ACATS B393002 for an example.
*************** package body Ch3 is
*** 3500,3505 ****
--- 3593,3599 ----
           Scopes (Scope.Last).Junk := (Token /= Tok_Record);
  
           T_Record;
+          Catch_Out_Of_Order_Keywords ("RECORD");
  
           Set_Component_List (Rec_Node, P_Component_List);
  
*************** package body Ch3 is
*** 3545,3551 ****
           --  If we have an END or WHEN now, everything is fine, otherwise we
           --  complain about the null, ignore it, and scan for more components.
  
!          if Token = Tok_End or else Token = Tok_When then
              Set_Null_Present (Component_List_Node, True);
              return Component_List_Node;
           else
--- 3639,3645 ----
           --  If we have an END or WHEN now, everything is fine, otherwise we
           --  complain about the null, ignore it, and scan for more components.
  
!          if Token in Tok_End | Tok_When then
              Set_Null_Present (Component_List_Node, True);
              return Component_List_Node;
           else
*************** package body Ch3 is
*** 3558,3570 ****
        P_Pragmas_Opt (Decls_List);
  
        if Token /= Tok_Case then
!          Component_Scan_Loop : loop
              P_Component_Items (Decls_List);
              P_Pragmas_Opt (Decls_List);
  
!             exit Component_Scan_Loop when Token = Tok_End
!               or else Token = Tok_Case
!               or else Token = Tok_When;
  
              --  We are done if we do not have an identifier. However, if we
              --  have a misspelled reserved identifier that is in a column to
--- 3652,3662 ----
        P_Pragmas_Opt (Decls_List);
  
        if Token /= Tok_Case then
!          loop
              P_Component_Items (Decls_List);
              P_Pragmas_Opt (Decls_List);
  
!             exit when Token in Tok_End | Tok_Case | Tok_When;
  
              --  We are done if we do not have an identifier. However, if we
              --  have a misspelled reserved identifier that is in a column to
*************** package body Ch3 is
*** 3580,3586 ****
                    Save_Scan_State (Scan_State); -- at reserved id
                    Scan; -- possible reserved id
  
!                   if Token = Tok_Comma or else Token = Tok_Colon then
                       Restore_Scan_State (Scan_State);
                       Scan_Reserved_Identifier (Force_Msg => True);
  
--- 3672,3678 ----
                    Save_Scan_State (Scan_State); -- at reserved id
                    Scan; -- possible reserved id
  
!                   if Token in Tok_Comma | Tok_Colon then
                       Restore_Scan_State (Scan_State);
                       Scan_Reserved_Identifier (Force_Msg => True);
  
*************** package body Ch3 is
*** 3589,3604 ****
  
                    else
                       Restore_Scan_State (Scan_State);
!                      exit Component_Scan_Loop;
                    end if;
  
                    --  Non-identifier that definitely was not reserved id
  
                 else
!                   exit Component_Scan_Loop;
                 end if;
              end if;
!          end loop Component_Scan_Loop;
        end if;
  
        if Token = Tok_Case then
--- 3681,3696 ----
  
                    else
                       Restore_Scan_State (Scan_State);
!                      exit;
                    end if;
  
                    --  Non-identifier that definitely was not reserved id
  
                 else
!                   exit;
                 end if;
              end if;
!          end loop;
        end if;
  
        if Token = Tok_Case then
*************** package body Ch3 is
*** 3849,3858 ****
        loop
           P_Pragmas_Opt (Variants_List);
  
!          if Token /= Tok_When
!            and then Token /= Tok_If
!            and then Token /= Tok_Others
!          then
              exit when Check_End;
           end if;
  
--- 3941,3947 ----
        loop
           P_Pragmas_Opt (Variants_List);
  
!          if Token not in Tok_When | Tok_If | Tok_Others then
              exit when Check_End;
           end if;
  
*************** package body Ch3 is
*** 4168,4181 ****
           Saved_State : Saved_Scan_State;
  
        begin
!          if Token = Tok_Identifier or else Token = Tok_Operator_Symbol then
              Save_Scan_State (Saved_State);
              Scan; -- past possible junk subprogram name
  
!             if Token = Tok_Left_Paren or else Token = Tok_Semicolon then
                 Error_Msg_SP ("unexpected subprogram name ignored");
-                return;
- 
              else
                 Restore_Scan_State (Saved_State);
              end if;
--- 4257,4268 ----
           Saved_State : Saved_Scan_State;
  
        begin
!          if Token in Tok_Identifier | Tok_Operator_Symbol then
              Save_Scan_State (Saved_State);
              Scan; -- past possible junk subprogram name
  
!             if Token in Tok_Left_Paren | Tok_Semicolon then
                 Error_Msg_SP ("unexpected subprogram name ignored");
              else
                 Restore_Scan_State (Saved_State);
              end if;
*************** package body Ch3 is
*** 4205,4211 ****
--- 4292,4306 ----
           --  second null exclusion is present in the access type definition.
  
           Not_Null_Present := P_Null_Exclusion; --  Ada 2005 (AI-231)
+ 
+          if Token /= Tok_Access then
+             Error_Msg
+               ("ACCESS expected",
+                Token_Ptr);
+          end if;
+ 
           Scan; -- past ACCESS
+ 
           Not_Null_Subtype_Loc := Token_Ptr;
           Not_Null_Subtype := P_Null_Exclusion; --  Might also appear
        end if;
*************** package body Ch3 is
*** 4220,4226 ****
        if Prot_Flag then
           Scan; -- past PROTECTED
  
!          if Token /= Tok_Procedure and then Token /= Tok_Function then
              Error_Msg_SC -- CODEFIX
                ("FUNCTION or PROCEDURE expected");
           end if;
--- 4315,4321 ----
        if Prot_Flag then
           Scan; -- past PROTECTED
  
!          if Token not in Tok_Procedure | Tok_Function then
              Error_Msg_SC -- CODEFIX
                ("FUNCTION or PROCEDURE expected");
           end if;
*************** package body Ch3 is
*** 4295,4301 ****
           Set_Null_Exclusion_Present (Type_Def_Node, Not_Null_Present);
           Set_Null_Excluding_Subtype (Type_Def_Node, Not_Null_Subtype);
  
!          if Token = Tok_All or else Token = Tok_Constant then
              if Ada_Version = Ada_83 then
                 Error_Msg_SC ("(Ada 83) access modifier not allowed!");
              end if;
--- 4390,4396 ----
           Set_Null_Exclusion_Present (Type_Def_Node, Not_Null_Present);
           Set_Null_Excluding_Subtype (Type_Def_Node, Not_Null_Subtype);
  
!          if Token in Tok_All | Tok_Constant then
              if Ada_Version = Ada_83 then
                 Error_Msg_SC ("(Ada 83) access modifier not allowed!");
              end if;
*************** package body Ch3 is
*** 4365,4374 ****
  
        --  Ada 2005 (AI-254): Access_To_Subprogram_Definition
  
!       if Token = Tok_Protected
!         or else Token = Tok_Procedure
!         or else Token = Tok_Function
!       then
           Error_Msg_Ada_2005_Extension ("access-to-subprogram");
  
           Subp_Node := P_Access_Type_Definition (Header_Already_Parsed => True);
--- 4460,4466 ----
  
        --  Ada 2005 (AI-254): Access_To_Subprogram_Definition
  
!       if Token in Tok_Protected | Tok_Procedure | Tok_Function then
           Error_Msg_Ada_2005_Extension ("access-to-subprogram");
  
           Subp_Node := P_Access_Type_Definition (Header_Already_Parsed => True);
*************** package body Ch3 is
*** 4416,4428 ****
  
     --  DECLARATIVE_PART ::= {DECLARATIVE_ITEM}
  
!    --  Error recovery: cannot raise Error_Resync (because P_Declarative_Items
     --  handles errors, and returns cleanly after an error has occurred)
  
     function P_Declarative_Part return List_Id is
!       Decls : List_Id;
!       Done  : Boolean;
! 
     begin
        --  Indicate no bad declarations detected yet. This will be reset by
        --  P_Declarative_Items if a bad declaration is discovered.
--- 4508,4518 ----
  
     --  DECLARATIVE_PART ::= {DECLARATIVE_ITEM}
  
!    --  Error recovery: cannot raise Error_Resync (because P_Declarative_Item
     --  handles errors, and returns cleanly after an error has occurred)
  
     function P_Declarative_Part return List_Id is
!       Decls : constant List_Id := New_List;
     begin
        --  Indicate no bad declarations detected yet. This will be reset by
        --  P_Declarative_Items if a bad declaration is discovered.
*************** package body Ch3 is
*** 4434,4448 ****
        --  discussion in Par for further details
  
        SIS_Entry_Active := False;
-       Decls := New_List;
- 
-       --  Loop to scan out the declarations
  
!       loop
!          P_Declarative_Items
!            (Decls, Done, Declare_Expression => False, In_Spec => False);
!          exit when Done;
!       end loop;
  
        --  Get rid of active SIS entry which is left set only if we scanned a
        --  procedure declaration and have not found the body. We could give
--- 4524,4533 ----
        --  discussion in Par for further details
  
        SIS_Entry_Active := False;
  
!       P_Declarative_Items
!         (Decls, Declare_Expression => False,
!          In_Spec => False, In_Statements => False);
  
        --  Get rid of active SIS entry which is left set only if we scanned a
        --  procedure declaration and have not found the body. We could give
*************** package body Ch3 is
*** 4466,4476 ****
     --  Error recovery: cannot raise Error_Resync. If an error resync occurs,
     --  then the scan is set past the next semicolon and Error is returned.
  
!    procedure P_Declarative_Items
       (Decls              : List_Id;
        Done               : out Boolean;
        Declare_Expression : Boolean;
!       In_Spec            : Boolean)
     is
        Scan_State : Saved_Scan_State;
  
--- 4551,4562 ----
     --  Error recovery: cannot raise Error_Resync. If an error resync occurs,
     --  then the scan is set past the next semicolon and Error is returned.
  
!    procedure P_Declarative_Item
       (Decls              : List_Id;
        Done               : out Boolean;
        Declare_Expression : Boolean;
!       In_Spec            : Boolean;
!       In_Statements      : Boolean)
     is
        Scan_State : Saved_Scan_State;
  
*************** package body Ch3 is
*** 4501,4520 ****
              Save_Scan_State (Scan_State);
              Scan; -- past FOR
  
!             if Token = Tok_Identifier then
!                Scan; -- past identifier
! 
!                if Token = Tok_In then
!                   Restore_Scan_State (Scan_State);
!                   Statement_When_Declaration_Expected (Decls, Done, In_Spec);
!                   return;
                 end if;
-             end if;
  
!             --  Not a loop, so must be rep clause
  
!             Restore_Scan_State (Scan_State);
!             Append (P_Representation_Clause, Decls);
  
           when Tok_Generic =>
              Check_Bad_Layout;
--- 4587,4623 ----
              Save_Scan_State (Scan_State);
              Scan; -- past FOR
  
!             declare
!                Is_Statement : Boolean := True;
!             begin
!                if Token = Tok_Identifier then
!                   Scan; -- past identifier
!                   if Token in Tok_Use | Tok_Apostrophe then
!                      Is_Statement := False;
!                   elsif Token = Tok_Dot then
!                      Scan;
!                      if Token = Tok_Identifier then
!                         Scan;
!                         Is_Statement := Token in Tok_In | Tok_Of;
!                      end if;
!                   end if;
!                else
!                   Is_Statement := False;
                 end if;
  
!                Restore_Scan_State (Scan_State);
  
!                if Is_Statement then
!                   if not In_Statements then
!                      Statement_When_Declaration_Expected
!                        (Decls, Done, In_Spec);
!                   end if;
! 
!                   Done := True;
!                else
!                   Append (P_Representation_Clause, Decls);
!                end if;
!             end;
  
           when Tok_Generic =>
              Check_Bad_Layout;
*************** package body Ch3 is
*** 4537,4543 ****
              --  Normal case, no overriding, or overriding followed by colon
  
              else
!                P_Identifier_Declarations (Decls, Done, In_Spec);
              end if;
  
           when Tok_Package =>
--- 4640,4646 ----
              --  Normal case, no overriding, or overriding followed by colon
  
              else
!                P_Identifier_Declarations (Decls, Done, In_Spec, In_Statements);
              end if;
  
           when Tok_Package =>
*************** package body Ch3 is
*** 4545,4551 ****
              Append (P_Package (Pf_Decl_Gins_Pbod_Rnam_Stub_Pexp), Decls);
  
           when Tok_Pragma =>
!             Append (P_Pragma, Decls);
  
           when Tok_Protected =>
              Check_Bad_Layout;
--- 4648,4661 ----
              Append (P_Package (Pf_Decl_Gins_Pbod_Rnam_Stub_Pexp), Decls);
  
           when Tok_Pragma =>
!             --  If we see a pragma and In_Statements is true, we want to let
!             --  the statement-parser deal with it.
! 
!             if In_Statements then
!                Done := True;
!             else
!                Append (P_Pragma, Decls);
!             end if;
  
           when Tok_Protected =>
              Check_Bad_Layout;
*************** package body Ch3 is
*** 4572,4578 ****
           when Tok_With =>
              Check_Bad_Layout;
  
!             if Aspect_Specifications_Present then
  
                 --  If we are after a semicolon, complain that it was ignored.
                 --  But we don't really ignore it, since we dump the aspects,
--- 4682,4688 ----
           when Tok_With =>
              Check_Bad_Layout;
  
!             if Aspect_Specifications_Present (Strict => True) then
  
                 --  If we are after a semicolon, complain that it was ignored.
                 --  But we don't really ignore it, since we dump the aspects,
*************** package body Ch3 is
*** 4731,4773 ****
              | Tok_Select
              | Tok_While
           =>
!             --  But before we decide that it's a statement, let's check for
!             --  a reserved word misused as an identifier.
  
!             if Is_Reserved_Identifier then
                 Save_Scan_State (Scan_State);
                 Scan; -- past the token
  
                 --  If reserved identifier not followed by colon or comma, then
                 --  this is most likely an assignment statement to the bad id.
  
!                if Token /= Tok_Colon and then Token /= Tok_Comma then
                    Restore_Scan_State (Scan_State);
                    Statement_When_Declaration_Expected (Decls, Done, In_Spec);
-                   return;
  
                 --  Otherwise we have a declaration of the bad id
  
                 else
                    Restore_Scan_State (Scan_State);
                    Scan_Reserved_Identifier (Force_Msg => True);
!                   P_Identifier_Declarations (Decls, Done, In_Spec);
                 end if;
  
!             --  If not reserved identifier, then it's definitely a statement
  
              else
                 Statement_When_Declaration_Expected (Decls, Done, In_Spec);
-                return;
              end if;
  
           --  The token RETURN may well also signal a missing BEGIN situation,
!          --  however, we never let it end the declarative part, because it may
!          --  also be part of a half-baked function declaration.
  
           when Tok_Return =>
!             Error_Msg_SC ("misplaced RETURN statement");
!             raise Error_Resync;
  
           --  PRIVATE definitely terminates the declarations in a spec,
           --  and is an error in a body.
--- 4841,4895 ----
              | Tok_Select
              | Tok_While
           =>
!             --  If we parsing declarations in a sequence of statements, we want
!             --  to let the caller continue parsing statements.
  
!             if In_Statements then
!                Done := True;
! 
!             --  Otherwise, give an error. But before we decide that it's a
!             --  statement, check for a reserved word misused as an identifier.
! 
!             elsif Is_Reserved_Identifier then
                 Save_Scan_State (Scan_State);
                 Scan; -- past the token
  
                 --  If reserved identifier not followed by colon or comma, then
                 --  this is most likely an assignment statement to the bad id.
  
!                if Token not in Tok_Colon | Tok_Comma then
                    Restore_Scan_State (Scan_State);
                    Statement_When_Declaration_Expected (Decls, Done, In_Spec);
  
                 --  Otherwise we have a declaration of the bad id
  
                 else
                    Restore_Scan_State (Scan_State);
                    Scan_Reserved_Identifier (Force_Msg => True);
!                   P_Identifier_Declarations
!                     (Decls, Done, In_Spec, In_Statements);
                 end if;
  
!             --  If not reserved identifier, then it's an incorrectly placed a
!             --  statement.
  
              else
                 Statement_When_Declaration_Expected (Decls, Done, In_Spec);
              end if;
  
           --  The token RETURN may well also signal a missing BEGIN situation,
!          --  however, we never let it end the declarative part, because it
!          --  might also be part of a half-baked function declaration. If we are
!          --  In_Statements, then let the caller parse it; otherwise, it's an
!          --  error.
  
           when Tok_Return =>
!             if In_Statements then
!                Done := True;
!             else
!                Error_Msg_SC ("misplaced RETURN statement");
!                raise Error_Resync;
!             end if;
  
           --  PRIVATE definitely terminates the declarations in a spec,
           --  and is an error in a body.
*************** package body Ch3 is
*** 4790,4795 ****
--- 4912,4921 ----
           --  But first check for misuse of a reserved identifier.
  
           when others =>
+             if In_Statements then
+                Done := True;
+                return;
+             end if;
  
              --  Here we check for a reserved identifier
  
*************** package body Ch3 is
*** 4797,4803 ****
                 Save_Scan_State (Scan_State);
                 Scan; -- past the token
  
!                if Token /= Tok_Colon and then Token /= Tok_Comma then
                    Restore_Scan_State (Scan_State);
                    Set_Declaration_Expected;
                    raise Error_Resync;
--- 4923,4929 ----
                 Save_Scan_State (Scan_State);
                 Scan; -- past the token
  
!                if Token not in Tok_Colon | Tok_Comma then
                    Restore_Scan_State (Scan_State);
                    Set_Declaration_Expected;
                    raise Error_Resync;
*************** package body Ch3 is
*** 4805,4811 ****
                    Restore_Scan_State (Scan_State);
                    Scan_Reserved_Identifier (Force_Msg => True);
                    Check_Bad_Layout;
!                   P_Identifier_Declarations (Decls, Done, In_Spec);
                 end if;
  
              else
--- 4931,4938 ----
                    Restore_Scan_State (Scan_State);
                    Scan_Reserved_Identifier (Force_Msg => True);
                    Check_Bad_Layout;
!                   P_Identifier_Declarations
!                     (Decls, Done, In_Spec, In_Statements);
                 end if;
  
              else
*************** package body Ch3 is
*** 4821,4826 ****
--- 4948,4968 ----
     exception
        when Error_Resync =>
           Resync_Past_Semicolon;
+    end P_Declarative_Item;
+ 
+    procedure P_Declarative_Items
+      (Decls              : List_Id;
+       Declare_Expression : Boolean;
+       In_Spec            : Boolean;
+       In_Statements      : Boolean)
+    is
+       Done  : Boolean;
+    begin
+       loop
+          P_Declarative_Item
+            (Decls, Done, Declare_Expression, In_Spec, In_Statements);
+          exit when Done;
+       end loop;
     end P_Declarative_Items;
  
     ----------------------------------
*************** package body Ch3 is
*** 4840,4848 ****
       (Declare_Expression : Boolean) return List_Id
     is
        Decl  : Node_Id;
!       Decls : List_Id;
        Kind  : Node_Kind;
-       Done  : Boolean;
  
     begin
        --  Indicate no bad declarations detected yet in the current context:
--- 4982,4989 ----
       (Declare_Expression : Boolean) return List_Id
     is
        Decl  : Node_Id;
!       Decls : constant List_Id := New_List;
        Kind  : Node_Kind;
  
     begin
        --  Indicate no bad declarations detected yet in the current context:
*************** package body Ch3 is
*** 4856,4870 ****
  
        SIS_Entry_Active := False;
  
!       --  Loop to scan out declarations
! 
!       Decls := New_List;
! 
!       loop
!          P_Declarative_Items
!            (Decls, Done, Declare_Expression, In_Spec => True);
!          exit when Done;
!       end loop;
  
        --  Get rid of active SIS entry. This is set only if we have scanned a
        --  procedure declaration and have not found the body. We could give
--- 4997,5004 ----
  
        SIS_Entry_Active := False;
  
!       P_Declarative_Items
!         (Decls, Declare_Expression, In_Spec => True, In_Statements => False);
  
        --  Get rid of active SIS entry. This is set only if we have scanned a
        --  procedure declaration and have not found the body. We could give
*************** package body Ch3 is
*** 4959,4969 ****
     ----------------------
  
     procedure Skip_Declaration (S : List_Id) is
!       Dummy_Done : Boolean;
!       pragma Warnings (Off, Dummy_Done);
     begin
!       P_Declarative_Items
!         (S, Dummy_Done, Declare_Expression => False, In_Spec => False);
     end Skip_Declaration;
  
     -----------------------------------------
--- 5093,5103 ----
     ----------------------
  
     procedure Skip_Declaration (S : List_Id) is
!       Ignored_Done : Boolean;
     begin
!       P_Declarative_Item
!         (S, Ignored_Done, Declare_Expression => False, In_Spec => False,
!          In_Statements => False);
     end Skip_Declaration;
  
     -----------------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch4.adb gcc-13.1.0/gcc/ada/par-ch4.adb
*** gcc-12.2.0/gcc/ada/par-ch4.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch4.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch4 is
*** 225,233 ****
  
           --  If it looks like start of expression, complain and scan expression
  
!          if Token in Token_Class_Literal
!            or else Token = Tok_Left_Paren
!          then
              Error_Msg_SC ("name expected");
              return P_Expression;
  
--- 225,231 ----
  
           --  If it looks like start of expression, complain and scan expression
  
!          if Token in Token_Class_Literal | Tok_Left_Paren then
              Error_Msg_SC ("name expected");
              return P_Expression;
  
*************** package body Ch4 is
*** 303,309 ****
           --  The treatment for the range attribute is similar (we do not
           --  consider x'range to be a name in this grammar).
  
!          elsif Token = Tok_Left_Paren or else Token = Tok_Range then
              Restore_Scan_State (Scan_State); -- to apostrophe
              Expr_Form := EF_Simple_Name;
              return Name_Node;
--- 301,307 ----
           --  The treatment for the range attribute is similar (we do not
           --  consider x'range to be a name in this grammar).
  
!          elsif Token in Tok_Left_Paren | Tok_Range then
              Restore_Scan_State (Scan_State); -- to apostrophe
              Expr_Form := EF_Simple_Name;
              return Name_Node;
*************** package body Ch4 is
*** 334,779 ****
  
        <<Scan_Name_Extension>>
  
!          --  Character literal used as name cannot be extended. Also this
!          --  cannot be a call, since the name for a call must be a designator.
!          --  Return in these cases, or if there is no name extension
  
!          if Token not in Token_Class_Namext
!            or else Prev_Token = Tok_Char_Literal
!          then
!             Expr_Form := EF_Name;
!             return Name_Node;
!          end if;
  
        --  Merge here when we know there is a name extension
  
        <<Scan_Name_Extension_OK>>
  
!          if Token = Tok_Left_Paren then
              Scan; -- past left paren
              goto Scan_Name_Extension_Left_Paren;
  
!          elsif Token = Tok_Apostrophe then
              Save_Scan_State (Scan_State); -- at apostrophe
              Scan; -- past apostrophe
              goto Scan_Name_Extension_Apostrophe;
  
!          else -- Token = Tok_Dot
              Save_Scan_State (Scan_State); -- at dot
              Scan; -- past dot
              goto Scan_Name_Extension_Dot;
!          end if;
  
        --  Case of name extended by dot (selection), dot is already skipped
        --  and the scan state at the point of the dot is saved in Scan_State.
  
        <<Scan_Name_Extension_Dot>>
  
!          --  Explicit dereference case
  
!          if Token = Tok_All then
!             Prefix_Node := Name_Node;
!             Name_Node := New_Node (N_Explicit_Dereference, Token_Ptr);
!             Set_Prefix (Name_Node, Prefix_Node);
!             Scan; -- past ALL
!             goto Scan_Name_Extension;
  
           --  Selected component case
  
!          elsif Token in Token_Class_Name then
!             Prefix_Node := Name_Node;
!             Name_Node := New_Node (N_Selected_Component, Prev_Token_Ptr);
!             Set_Prefix (Name_Node, Prefix_Node);
!             Set_Selector_Name (Name_Node, Token_Node);
!             Scan; -- past selector
!             goto Scan_Name_Extension;
  
           --  Reserved identifier as selector
  
!          elsif Is_Reserved_Identifier then
!             Scan_Reserved_Identifier (Force_Msg => False);
!             Prefix_Node := Name_Node;
!             Name_Node := New_Node (N_Selected_Component, Prev_Token_Ptr);
!             Set_Prefix (Name_Node, Prefix_Node);
!             Set_Selector_Name (Name_Node, Token_Node);
!             Scan; -- past identifier used as selector
!             goto Scan_Name_Extension;
  
           --  If dot is at end of line and followed by nothing legal,
           --  then assume end of name and quit (dot will be taken as
           --  an incorrect form of some other punctuation by our caller).
  
!          elsif Token_Is_At_Start_Of_Line then
!             Restore_Scan_State (Scan_State);
!             return Name_Node;
  
           --  Here if nothing legal after the dot
  
!          else
!             Error_Msg_AP ("selector expected");
!             raise Error_Resync;
!          end if;
  
        --  Here for an apostrophe as name extension. The scan position at the
        --  apostrophe has already been saved, and the apostrophe scanned out.
  
        <<Scan_Name_Extension_Apostrophe>>
  
!          Scan_Apostrophe : declare
!             function Apostrophe_Should_Be_Semicolon return Boolean;
!             --  Checks for case where apostrophe should probably be
!             --  a semicolon, and if so, gives appropriate message,
!             --  resets the scan pointer to the apostrophe, changes
!             --  the current token to Tok_Semicolon, and returns True.
!             --  Otherwise returns False.
! 
!             ------------------------------------
!             -- Apostrophe_Should_Be_Semicolon --
!             ------------------------------------
! 
!             function Apostrophe_Should_Be_Semicolon return Boolean is
!             begin
!                if Token_Is_At_Start_Of_Line then
!                   Restore_Scan_State (Scan_State); -- to apostrophe
!                   Error_Msg_SC ("|""''"" should be "";""");
!                   Token := Tok_Semicolon;
!                   return True;
!                else
!                   return False;
!                end if;
!             end Apostrophe_Should_Be_Semicolon;
  
!          --  Start of processing for Scan_Apostrophe
  
           begin
!             --  Check for qualified expression case in Ada 2012 mode
  
!             if Ada_Version >= Ada_2012
!               and then Token in Tok_Left_Paren | Tok_Left_Bracket
!             then
!                Name_Node := P_Qualified_Expression (Name_Node);
!                goto Scan_Name_Extension;
  
!             --  If range attribute after apostrophe, then return with Token
!             --  pointing to the apostrophe. Note that in this case the prefix
!             --  need not be a simple name (cases like A.all'range). Similarly
!             --  if there is a left paren after the apostrophe, then we also
!             --  return with Token pointing to the apostrophe (this is the
!             --  aggregate case, or some error case).
  
!             elsif Token = Tok_Range or else Token = Tok_Left_Paren then
!                Restore_Scan_State (Scan_State); -- to apostrophe
!                Expr_Form := EF_Name;
!                return Name_Node;
  
!             --  Here for cases where attribute designator is an identifier
  
!             elsif Token = Tok_Identifier then
!                Attr_Name := Token_Name;
  
!                if not Is_Attribute_Name (Attr_Name) then
!                   if Apostrophe_Should_Be_Semicolon then
!                      Expr_Form := EF_Name;
!                      return Name_Node;
  
!                   --  Here for a bad attribute name
  
!                   else
!                      Signal_Bad_Attribute;
!                      Scan; -- past bad identifier
  
!                      if Token = Tok_Left_Paren then
!                         Scan; -- past left paren
  
!                         loop
!                            Discard_Junk_Node (P_Expression_If_OK);
!                            exit when not Comma_Present;
!                         end loop;
  
!                         T_Right_Paren;
!                      end if;
  
!                      return Error;
                    end if;
-                end if;
  
!                if Style_Check then
!                   Style.Check_Attribute_Name (False);
                 end if;
  
!             --  Here for case of attribute designator is not an identifier
  
!             else
!                if Token = Tok_Delta then
!                   Attr_Name := Name_Delta;
  
!                elsif Token = Tok_Digits then
!                   Attr_Name := Name_Digits;
  
!                elsif Token = Tok_Access then
!                   Attr_Name := Name_Access;
  
!                elsif Token = Tok_Mod and then Ada_Version >= Ada_95 then
!                   Attr_Name := Name_Mod;
  
!                elsif Apostrophe_Should_Be_Semicolon then
!                   Expr_Form := EF_Name;
!                   return Name_Node;
  
!                else
!                   Error_Msg_AP ("attribute designator expected");
!                   raise Error_Resync;
!                end if;
  
!                if Style_Check then
!                   Style.Check_Attribute_Name (True);
!                end if;
              end if;
  
!             --  We come here with an OK attribute scanned, and corresponding
!             --  Attribute identifier node stored in Ident_Node.
! 
!             Prefix_Node := Name_Node;
!             Name_Node := New_Node (N_Attribute_Reference, Prev_Token_Ptr);
!             Scan; -- past attribute designator
!             Set_Prefix (Name_Node, Prefix_Node);
!             Set_Attribute_Name (Name_Node, Attr_Name);
  
!             --  Scan attribute arguments/designator. We skip this if we know
!             --  that the attribute cannot have an argument (see documentation
!             --  of Is_Parameterless_Attribute for further details).
  
!             if Token = Tok_Left_Paren
!               and then not
!                 Is_Parameterless_Attribute (Get_Attribute_Id (Attr_Name))
!             then
!                --  Attribute Update contains an array or record association
!                --  list which provides new values for various components or
!                --  elements. The list is parsed as an aggregate, and we get
!                --  better error handling by knowing that in the parser.
  
!                if Attr_Name = Name_Update then
!                   Set_Expressions (Name_Node, New_List);
!                   Append (P_Aggregate, Expressions (Name_Node));
  
!                --  All other cases of parsing attribute arguments
  
!                else
!                   Set_Expressions (Name_Node, New_List);
!                   Scan; -- past left paren
  
!                   loop
!                      declare
!                         Expr : constant Node_Id := P_Expression_If_OK;
!                         Rnam : Node_Id;
  
!                      begin
!                         --  Case of => for named notation
  
!                         if Token = Tok_Arrow then
  
!                            --  Named notation allowed only for the special
!                            --  case of System'Restriction_Set (No_Dependence =>
!                            --  unit_NAME), in which case construct a parameter
!                            --  assocation node and append to the arguments.
  
!                            if Attr_Name = Name_Restriction_Set
!                              and then Nkind (Expr) = N_Identifier
!                              and then Chars (Expr) = Name_No_Dependence
!                            then
!                               Scan; -- past arrow
!                               Rnam := P_Name;
!                               Append_To (Expressions (Name_Node),
!                                 Make_Parameter_Association (Sloc (Rnam),
!                                   Selector_Name             => Expr,
!                                   Explicit_Actual_Parameter => Rnam));
!                               exit;
  
!                            --  For all other cases named notation is illegal
  
!                            else
!                               Error_Msg_SC
!                                 ("named parameters not permitted "
!                                  & "for attributes");
!                               Scan; -- past junk arrow
!                            end if;
  
!                         --  Here for normal case (not => for named parameter)
  
                          else
!                            --  Special handling for 'Image in Ada 2012, where
!                            --  the attribute can be parameterless and its value
!                            --  can be the prefix of a slice. Rewrite name as a
!                            --  slice, Expr is its low bound.
  
!                            if Token = Tok_Dot_Dot
!                              and then Attr_Name = Name_Image
!                              and then Ada_Version >= Ada_2012
!                            then
!                               Set_Expressions (Name_Node, No_List);
!                               Prefix_Node := Name_Node;
!                               Name_Node :=
!                                 New_Node (N_Slice, Sloc (Prefix_Node));
!                               Set_Prefix (Name_Node, Prefix_Node);
!                               Range_Node := New_Node (N_Range, Token_Ptr);
!                               Set_Low_Bound (Range_Node, Expr);
!                               Scan; -- past ..
!                               Expr_Node := P_Expression;
!                               Check_Simple_Expression (Expr_Node);
!                               Set_High_Bound (Range_Node, Expr_Node);
!                               Set_Discrete_Range (Name_Node, Range_Node);
!                               T_Right_Paren;
  
!                               goto Scan_Name_Extension;
  
!                            else
!                               Append (Expr, Expressions (Name_Node));
!                               exit when not Comma_Present;
!                            end if;
                          end if;
!                      end;
!                   end loop;
  
!                   T_Right_Paren;
!                end if;
              end if;
  
!             goto Scan_Name_Extension;
!          end Scan_Apostrophe;
  
        --  Here for left parenthesis extending name (left paren skipped)
  
        <<Scan_Name_Extension_Left_Paren>>
  
!          --  We now have to scan through a list of items, terminated by a
!          --  right parenthesis. The scan is handled by a finite state
!          --  machine. The possibilities are:
  
!          --   (discrete_range)
  
!          --      This is a slice. This case is handled in LP_State_Init
  
!          --   (expression, expression, ..)
  
!          --      This is interpreted as an indexed component, i.e. as a
!          --      case of a name which can be extended in the normal manner.
!          --      This case is handled by LP_State_Name or LP_State_Expr.
  
!          --      Note: if and case expressions (without an extra level of
!          --      parentheses) are permitted in this context).
  
!          --   (..., identifier => expression , ...)
  
!          --      If there is at least one occurrence of identifier => (but
!          --      none of the other cases apply), then we have a call.
  
!          --  Test for Id => case
  
!          if Token = Tok_Identifier then
!             Save_Scan_State (Scan_State); -- at Id
!             Scan; -- past Id
  
!             --  Test for => (allow := as an error substitute)
  
!             if Token = Tok_Arrow or else Token = Tok_Colon_Equal then
!                Restore_Scan_State (Scan_State); -- to Id
!                Arg_List := New_List;
!                goto LP_State_Call;
  
!             else
!                Restore_Scan_State (Scan_State); -- to Id
!             end if;
           end if;
  
!          --  Here we have an expression after all
! 
!          Expr_Node := P_Expression_Or_Range_Attribute_If_OK;
  
!          --  Check cases of discrete range for a slice
  
!          --  First possibility: Range_Attribute_Reference
  
!          if Expr_Form = EF_Range_Attr then
!             Range_Node := Expr_Node;
  
!          --  Second possibility: Simple_expression .. Simple_expression
  
!          elsif Token = Tok_Dot_Dot then
!             Check_Simple_Expression (Expr_Node);
!             Range_Node := New_Node (N_Range, Token_Ptr);
!             Set_Low_Bound (Range_Node, Expr_Node);
!             Scan; -- past ..
!             Expr_Node := P_Expression;
!             Check_Simple_Expression (Expr_Node);
!             Set_High_Bound (Range_Node, Expr_Node);
  
!          --  Third possibility: Type_name range Range
  
!          elsif Token = Tok_Range then
!             if Expr_Form /= EF_Simple_Name then
!                Error_Msg_SC ("subtype mark must precede RANGE");
!                raise Error_Resync;
!             end if;
  
!             Range_Node := P_Subtype_Indication (Expr_Node);
  
!          --  Otherwise we just have an expression. It is true that we might
!          --  have a subtype mark without a range constraint but this case
!          --  is syntactically indistinguishable from the expression case.
  
!          else
!             Arg_List := New_List;
!             goto LP_State_Expr;
!          end if;
  
!          --  Fall through here with unmistakable Discrete range scanned,
!          --  which means that we definitely have the case of a slice. The
!          --  Discrete range is in Range_Node.
  
!          if Token = Tok_Comma then
!             Error_Msg_SC ("slice cannot have more than one dimension");
!             raise Error_Resync;
  
!          elsif Token /= Tok_Right_Paren then
!             if Token = Tok_Arrow then
  
!                --  This may be an aggregate that is missing a qualification
  
!                Error_Msg_SC
!                  ("context of aggregate must be a qualified expression");
!                raise Error_Resync;
  
!             else
!                T_Right_Paren;
!                raise Error_Resync;
!             end if;
  
           else
!             Scan; -- past right paren
!             Prefix_Node := Name_Node;
!             Name_Node := New_Node (N_Slice, Sloc (Prefix_Node));
!             Set_Prefix (Name_Node, Prefix_Node);
!             Set_Discrete_Range (Name_Node, Range_Node);
  
!             --  An operator node is legal as a prefix to other names,
!             --  but not for a slice.
  
!             if Nkind (Prefix_Node) = N_Operator_Symbol then
!                Error_Msg_N ("illegal prefix for slice", Prefix_Node);
!             end if;
  
!             --  If we have a name extension, go scan it
  
!             if Token in Token_Class_Namext then
!                goto Scan_Name_Extension_OK;
  
!             --  Otherwise return (a slice is a name, but is not a call)
  
!             else
!                Expr_Form := EF_Name;
!                return Name_Node;
!             end if;
           end if;
  
        --  In LP_State_Expr, we have scanned one or more expressions, and
        --  so we have a call or an indexed component which is a name. On
--- 332,780 ----
  
        <<Scan_Name_Extension>>
  
!       --  Character literal used as name cannot be extended. Also this
!       --  cannot be a call, since the name for a call must be a designator.
!       --  Return in these cases, or if there is no name extension
  
!       if Token not in Token_Class_Namext
!         or else Prev_Token = Tok_Char_Literal
!       then
!          Expr_Form := EF_Name;
!          return Name_Node;
!       end if;
  
        --  Merge here when we know there is a name extension
  
        <<Scan_Name_Extension_OK>>
  
!       case Token is
!          when Tok_Left_Paren =>
              Scan; -- past left paren
              goto Scan_Name_Extension_Left_Paren;
  
!          when Tok_Apostrophe =>
              Save_Scan_State (Scan_State); -- at apostrophe
              Scan; -- past apostrophe
              goto Scan_Name_Extension_Apostrophe;
  
!          when Tok_Dot =>
              Save_Scan_State (Scan_State); -- at dot
              Scan; -- past dot
              goto Scan_Name_Extension_Dot;
! 
!          when others => raise Program_Error;
!       end case;
  
        --  Case of name extended by dot (selection), dot is already skipped
        --  and the scan state at the point of the dot is saved in Scan_State.
  
        <<Scan_Name_Extension_Dot>>
  
!       --  Explicit dereference case
  
!       if Token = Tok_All then
!          Prefix_Node := Name_Node;
!          Name_Node := New_Node (N_Explicit_Dereference, Token_Ptr);
!          Set_Prefix (Name_Node, Prefix_Node);
!          Scan; -- past ALL
!          goto Scan_Name_Extension;
  
           --  Selected component case
  
!       elsif Token in Token_Class_Name then
!          Prefix_Node := Name_Node;
!          Name_Node := New_Node (N_Selected_Component, Prev_Token_Ptr);
!          Set_Prefix (Name_Node, Prefix_Node);
!          Set_Selector_Name (Name_Node, Token_Node);
!          Scan; -- past selector
!          goto Scan_Name_Extension;
  
           --  Reserved identifier as selector
  
!       elsif Is_Reserved_Identifier then
!          Scan_Reserved_Identifier (Force_Msg => False);
!          Prefix_Node := Name_Node;
!          Name_Node := New_Node (N_Selected_Component, Prev_Token_Ptr);
!          Set_Prefix (Name_Node, Prefix_Node);
!          Set_Selector_Name (Name_Node, Token_Node);
!          Scan; -- past identifier used as selector
!          goto Scan_Name_Extension;
  
           --  If dot is at end of line and followed by nothing legal,
           --  then assume end of name and quit (dot will be taken as
           --  an incorrect form of some other punctuation by our caller).
  
!       elsif Token_Is_At_Start_Of_Line then
!          Restore_Scan_State (Scan_State);
!          return Name_Node;
  
           --  Here if nothing legal after the dot
  
!       else
!          Error_Msg_AP ("selector expected");
!          raise Error_Resync;
!       end if;
  
        --  Here for an apostrophe as name extension. The scan position at the
        --  apostrophe has already been saved, and the apostrophe scanned out.
  
        <<Scan_Name_Extension_Apostrophe>>
  
!       Scan_Apostrophe : declare
!          function Apostrophe_Should_Be_Semicolon return Boolean;
!          --  Checks for case where apostrophe should probably be
!          --  a semicolon, and if so, gives appropriate message,
!          --  resets the scan pointer to the apostrophe, changes
!          --  the current token to Tok_Semicolon, and returns True.
!          --  Otherwise returns False.
  
!          ------------------------------------
!          -- Apostrophe_Should_Be_Semicolon --
!          ------------------------------------
  
+          function Apostrophe_Should_Be_Semicolon return Boolean is
           begin
!             if Token_Is_At_Start_Of_Line then
!                Restore_Scan_State (Scan_State); -- to apostrophe
!                Error_Msg_SC ("|""''"" should be "";""");
!                Token := Tok_Semicolon;
!                return True;
!             else
!                return False;
!             end if;
!          end Apostrophe_Should_Be_Semicolon;
  
!       --  Start of processing for Scan_Apostrophe
  
!       begin
!          --  Check for qualified expression case in Ada 2012 mode
  
!          if Ada_Version >= Ada_2012
!            and then Token in Tok_Left_Paren | Tok_Left_Bracket
!          then
!             Name_Node := P_Qualified_Expression (Name_Node);
!             goto Scan_Name_Extension;
  
!          --  If range attribute after apostrophe, then return with Token
!          --  pointing to the apostrophe. Note that in this case the prefix
!          --  need not be a simple name (cases like A.all'range). Similarly
!          --  if there is a left paren after the apostrophe, then we also
!          --  return with Token pointing to the apostrophe (this is the
!          --  aggregate case, or some error case).
  
!          elsif Token in Tok_Range | Tok_Left_Paren then
!             Restore_Scan_State (Scan_State); -- to apostrophe
!             Expr_Form := EF_Name;
!             return Name_Node;
  
!          --  Here for cases where attribute designator is an identifier
  
!          elsif Token = Tok_Identifier then
!             Attr_Name := Token_Name;
  
!             if not Is_Attribute_Name (Attr_Name) then
!                if Apostrophe_Should_Be_Semicolon then
!                   Expr_Form := EF_Name;
!                   return Name_Node;
  
!                --  Here for a bad attribute name
  
!                else
!                   Signal_Bad_Attribute;
!                   Scan; -- past bad identifier
  
!                   if Token = Tok_Left_Paren then
!                      Scan; -- past left paren
  
!                      loop
!                         Discard_Junk_Node (P_Expression_If_OK);
!                         exit when not Comma_Present;
!                      end loop;
! 
!                      T_Right_Paren;
                    end if;
  
!                   return Error;
                 end if;
+             end if;
  
!             if Style_Check then
!                Style.Check_Attribute_Name (False);
!             end if;
  
!          --  Here for case of attribute designator is not an identifier
  
!          else
!             if Token = Tok_Delta then
!                Attr_Name := Name_Delta;
  
!             elsif Token = Tok_Digits then
!                Attr_Name := Name_Digits;
  
!             elsif Token = Tok_Access then
!                Attr_Name := Name_Access;
  
!             elsif Token = Tok_Mod and then Ada_Version >= Ada_95 then
!                Attr_Name := Name_Mod;
  
!             elsif Apostrophe_Should_Be_Semicolon then
!                Expr_Form := EF_Name;
!                return Name_Node;
  
!             else
!                Error_Msg_AP ("attribute designator expected");
!                raise Error_Resync;
              end if;
  
!             if Style_Check then
!                Style.Check_Attribute_Name (True);
!             end if;
!          end if;
  
!          --  We come here with an OK attribute scanned, and corresponding
!          --  Attribute identifier node stored in Ident_Node.
  
!          Prefix_Node := Name_Node;
!          Name_Node := New_Node (N_Attribute_Reference, Prev_Token_Ptr);
!          Scan; -- past attribute designator
!          Set_Prefix (Name_Node, Prefix_Node);
!          Set_Attribute_Name (Name_Node, Attr_Name);
  
!          --  Scan attribute arguments/designator. We skip this if we know
!          --  that the attribute cannot have an argument (see documentation
!          --  of Is_Parameterless_Attribute for further details).
  
!          if Token = Tok_Left_Paren
!            and then not
!              Is_Parameterless_Attribute (Get_Attribute_Id (Attr_Name))
!          then
!             --  Attribute Update contains an array or record association
!             --  list which provides new values for various components or
!             --  elements. The list is parsed as an aggregate, and we get
!             --  better error handling by knowing that in the parser.
  
!             if Attr_Name = Name_Update then
!                Set_Expressions (Name_Node, New_List);
!                Append (P_Aggregate, Expressions (Name_Node));
  
!             --  All other cases of parsing attribute arguments
  
!             else
!                Set_Expressions (Name_Node, New_List);
!                Scan; -- past left paren
  
!                loop
!                   declare
!                      Expr : constant Node_Id := P_Expression_If_OK;
!                      Rnam : Node_Id;
  
!                   begin
!                      --  Case of => for named notation
  
!                      if Token = Tok_Arrow then
  
!                         --  Named notation allowed only for the special
!                         --  case of System'Restriction_Set (No_Dependence =>
!                         --  unit_NAME), in which case construct a parameter
!                         --  assocation node and append to the arguments.
  
!                         if Attr_Name = Name_Restriction_Set
!                           and then Nkind (Expr) = N_Identifier
!                           and then Chars (Expr) = Name_No_Dependence
!                         then
!                            Scan; -- past arrow
!                            Rnam := P_Name;
!                            Append_To (Expressions (Name_Node),
!                              Make_Parameter_Association (Sloc (Rnam),
!                                Selector_Name             => Expr,
!                                Explicit_Actual_Parameter => Rnam));
!                            exit;
  
!                         --  For all other cases named notation is illegal
  
                          else
!                            Error_Msg_SC
!                              ("named parameters not permitted "
!                               & "for attributes");
!                            Scan; -- past junk arrow
!                         end if;
  
!                      --  Here for normal case (not => for named parameter)
  
!                      else
!                         --  Special handling for 'Image in Ada 2012, where
!                         --  the attribute can be parameterless and its value
!                         --  can be the prefix of a slice. Rewrite name as a
!                         --  slice, Expr is its low bound.
  
!                         if Token = Tok_Dot_Dot
!                           and then Attr_Name = Name_Image
!                           and then Ada_Version >= Ada_2012
!                         then
!                            Set_Expressions (Name_Node, No_List);
!                            Prefix_Node := Name_Node;
!                            Name_Node :=
!                              New_Node (N_Slice, Sloc (Prefix_Node));
!                            Set_Prefix (Name_Node, Prefix_Node);
!                            Range_Node := New_Node (N_Range, Token_Ptr);
!                            Set_Low_Bound (Range_Node, Expr);
!                            Scan; -- past ..
!                            Expr_Node := P_Expression;
!                            Check_Simple_Expression (Expr_Node);
!                            Set_High_Bound (Range_Node, Expr_Node);
!                            Set_Discrete_Range (Name_Node, Range_Node);
!                            T_Right_Paren;
! 
!                            goto Scan_Name_Extension;
! 
!                         else
!                            Append (Expr, Expressions (Name_Node));
!                            exit when not Comma_Present;
                          end if;
!                      end if;
!                   end;
!                end loop;
  
!                T_Right_Paren;
              end if;
+          end if;
  
!          goto Scan_Name_Extension;
!       end Scan_Apostrophe;
  
        --  Here for left parenthesis extending name (left paren skipped)
  
        <<Scan_Name_Extension_Left_Paren>>
  
!       --  We now have to scan through a list of items, terminated by a
!       --  right parenthesis. The scan is handled by a finite state
!       --  machine. The possibilities are:
  
!       --   (discrete_range)
  
!       --      This is a slice. This case is handled in LP_State_Init
  
!       --   (expression, expression, ..)
  
!       --      This is interpreted as an indexed component, i.e. as a
!       --      case of a name which can be extended in the normal manner.
!       --      This case is handled by LP_State_Name or LP_State_Expr.
  
!       --      Note: if and case expressions (without an extra level of
!       --      parentheses) are permitted in this context).
  
!       --   (..., identifier => expression , ...)
  
!       --      If there is at least one occurrence of identifier => (but
!       --      none of the other cases apply), then we have a call.
  
!       --  Test for Id => case
  
!       if Token = Tok_Identifier then
!          Save_Scan_State (Scan_State); -- at Id
!          Scan; -- past Id
  
!          --  Test for => (allow := as an error substitute)
  
!          if Token in Tok_Arrow | Tok_Colon_Equal then
!             Restore_Scan_State (Scan_State); -- to Id
!             Arg_List := New_List;
!             goto LP_State_Call;
  
!          else
!             Restore_Scan_State (Scan_State); -- to Id
           end if;
+       end if;
  
!       --  Here we have an expression after all
  
!       Expr_Node := P_Expression_Or_Range_Attribute_If_OK;
  
!       --  Check cases of discrete range for a slice
  
!       --  First possibility: Range_Attribute_Reference
  
!       if Expr_Form = EF_Range_Attr then
!          Range_Node := Expr_Node;
  
!       --  Second possibility: Simple_expression .. Simple_expression
  
!       elsif Token = Tok_Dot_Dot then
!          Check_Simple_Expression (Expr_Node);
!          Range_Node := New_Node (N_Range, Token_Ptr);
!          Set_Low_Bound (Range_Node, Expr_Node);
!          Scan; -- past ..
!          Expr_Node := P_Expression;
!          Check_Simple_Expression (Expr_Node);
!          Set_High_Bound (Range_Node, Expr_Node);
  
!       --  Third possibility: Type_name range Range
  
!       elsif Token = Tok_Range then
!          if Expr_Form /= EF_Simple_Name then
!             Error_Msg_SC ("subtype mark must precede RANGE");
!             raise Error_Resync;
!          end if;
  
!          Range_Node := P_Subtype_Indication (Expr_Node);
  
!       --  Otherwise we just have an expression. It is true that we might
!       --  have a subtype mark without a range constraint but this case
!       --  is syntactically indistinguishable from the expression case.
  
!       else
!          Arg_List := New_List;
!          goto LP_State_Expr;
!       end if;
  
!       --  Fall through here with unmistakable Discrete range scanned,
!       --  which means that we definitely have the case of a slice. The
!       --  Discrete range is in Range_Node.
  
!       if Token = Tok_Comma then
!          Error_Msg_SC ("slice cannot have more than one dimension");
!          raise Error_Resync;
  
!       elsif Token /= Tok_Right_Paren then
!          if Token = Tok_Arrow then
  
!             --  This may be an aggregate that is missing a qualification
  
!             Error_Msg_SC
!               ("context of aggregate must be a qualified expression");
!             raise Error_Resync;
  
           else
!             T_Right_Paren;
!             raise Error_Resync;
!          end if;
  
!       else
!          Scan; -- past right paren
!          Prefix_Node := Name_Node;
!          Name_Node := New_Node (N_Slice, Sloc (Prefix_Node));
!          Set_Prefix (Name_Node, Prefix_Node);
!          Set_Discrete_Range (Name_Node, Range_Node);
  
!          --  An operator node is legal as a prefix to other names,
!          --  but not for a slice.
  
!          if Nkind (Prefix_Node) = N_Operator_Symbol then
!             Error_Msg_N ("illegal prefix for slice", Prefix_Node);
!          end if;
  
!          --  If we have a name extension, go scan it
  
!          if Token in Token_Class_Namext then
!             goto Scan_Name_Extension_OK;
  
!          --  Otherwise return (a slice is a name, but is not a call)
! 
!          else
!             Expr_Form := EF_Name;
!             return Name_Node;
           end if;
+       end if;
  
        --  In LP_State_Expr, we have scanned one or more expressions, and
        --  so we have a call or an indexed component which is a name. On
*************** package body Ch4 is
*** 781,828 ****
        --  Arg_List contains the list of expressions encountered so far
  
        <<LP_State_Expr>>
!          Append (Expr_Node, Arg_List);
  
!          if Token = Tok_Arrow then
!             Error_Msg
!               ("expect identifier in parameter association", Sloc (Expr_Node));
!             Scan;  -- past arrow
  
!          elsif not Comma_Present then
!             T_Right_Paren;
  
!             Prefix_Node := Name_Node;
!             Name_Node := New_Node (N_Indexed_Component, Sloc (Prefix_Node));
!             Set_Prefix (Name_Node, Prefix_Node);
!             Set_Expressions (Name_Node, Arg_List);
  
!             goto Scan_Name_Extension;
!          end if;
  
!          --  Comma present (and scanned out), test for identifier => case
!          --  Test for identifier => case
  
!          if Token = Tok_Identifier then
!             Save_Scan_State (Scan_State); -- at Id
!             Scan; -- past Id
  
!             --  Test for => (allow := as error substitute)
  
!             if Token = Tok_Arrow or else Token = Tok_Colon_Equal then
!                Restore_Scan_State (Scan_State); -- to Id
!                goto LP_State_Call;
  
!             --  Otherwise it's just an expression after all, so backup
  
!             else
!                Restore_Scan_State (Scan_State); -- to Id
!             end if;
           end if;
  
!          --  Here we have an expression after all, so stay in this state
  
!          Expr_Node := P_Expression_If_OK;
!          goto LP_State_Expr;
  
        --  LP_State_Call corresponds to the situation in which at least one
        --  instance of Id => Expression has been encountered, so we know that
--- 782,829 ----
        --  Arg_List contains the list of expressions encountered so far
  
        <<LP_State_Expr>>
!       Append (Expr_Node, Arg_List);
  
!       if Token = Tok_Arrow then
!          Error_Msg
!            ("expect identifier in parameter association", Sloc (Expr_Node));
!          Scan;  -- past arrow
  
!       elsif not Comma_Present then
!          T_Right_Paren;
  
!          Prefix_Node := Name_Node;
!          Name_Node := New_Node (N_Indexed_Component, Sloc (Prefix_Node));
!          Set_Prefix (Name_Node, Prefix_Node);
!          Set_Expressions (Name_Node, Arg_List);
  
!          goto Scan_Name_Extension;
!       end if;
  
!       --  Comma present (and scanned out), test for identifier => case
!       --  Test for identifier => case
  
!       if Token = Tok_Identifier then
!          Save_Scan_State (Scan_State); -- at Id
!          Scan; -- past Id
  
!          --  Test for => (allow := as error substitute)
  
!          if Token in Tok_Arrow | Tok_Colon_Equal then
!             Restore_Scan_State (Scan_State); -- to Id
!             goto LP_State_Call;
  
!          --  Otherwise it's just an expression after all, so backup
  
!          else
!             Restore_Scan_State (Scan_State); -- to Id
           end if;
+       end if;
  
!       --  Here we have an expression after all, so stay in this state
  
!       Expr_Node := P_Expression_If_OK;
!       goto LP_State_Expr;
  
        --  LP_State_Call corresponds to the situation in which at least one
        --  instance of Id => Expression has been encountered, so we know that
*************** package body Ch4 is
*** 832,909 ****
  
        <<LP_State_Call>>
  
!          --  Test for case of Id => Expression (named parameter)
  
!          if Token = Tok_Identifier then
!             Save_Scan_State (Scan_State); -- at Id
!             Ident_Node := Token_Node;
!             Scan; -- past Id
  
!             --  Deal with => (allow := as incorrect substitute)
  
!             if Token = Tok_Arrow or else Token = Tok_Colon_Equal then
!                Arg_Node := New_Node (N_Parameter_Association, Prev_Token_Ptr);
!                Set_Selector_Name (Arg_Node, Ident_Node);
!                T_Arrow;
!                Set_Explicit_Actual_Parameter (Arg_Node, P_Expression);
!                Append (Arg_Node, Arg_List);
  
!                --  If a comma follows, go back and scan next entry
  
!                if Comma_Present then
!                   goto LP_State_Call;
  
!                --  Otherwise we have the end of a call
  
!                else
!                   Prefix_Node := Name_Node;
!                   Name_Node := New_Node (N_Function_Call, Sloc (Prefix_Node));
!                   Set_Name (Name_Node, Prefix_Node);
!                   Set_Parameter_Associations (Name_Node, Arg_List);
!                   T_Right_Paren;
  
!                   if Token in Token_Class_Namext then
!                      goto Scan_Name_Extension_OK;
  
!                   --  This is a case of a call which cannot be a name
  
!                   else
!                      Expr_Form := EF_Name;
!                      return Name_Node;
!                   end if;
                 end if;
  
!             --  Not named parameter: Id started an expression after all
  
!             else
!                Restore_Scan_State (Scan_State); -- to Id
!             end if;
           end if;
  
!          --  Here if entry did not start with Id => which means that it
!          --  is a positional parameter, which is not allowed, since we
!          --  have seen at least one named parameter already.
  
!          Error_Msg_SC
!             ("positional parameter association " &
!               "not allowed after named one");
  
!          Expr_Node := P_Expression_If_OK;
  
!          --  Leaving the '>' in an association is not unusual, so suggest
!          --  a possible fix.
  
!          if Nkind (Expr_Node) = N_Op_Eq then
!             Error_Msg_N ("\maybe `='>` was intended", Expr_Node);
!          end if;
  
!          --  We go back to scanning out expressions, so that we do not get
!          --  multiple error messages when several positional parameters
!          --  follow a named parameter.
  
!          goto LP_State_Expr;
  
!          --  End of treatment for name extensions starting with left paren
  
        --  End of loop through name extensions
  
--- 833,910 ----
  
        <<LP_State_Call>>
  
!       --  Test for case of Id => Expression (named parameter)
  
!       if Token = Tok_Identifier then
!          Save_Scan_State (Scan_State); -- at Id
!          Ident_Node := Token_Node;
!          Scan; -- past Id
  
!          --  Deal with => (allow := as incorrect substitute)
  
!          if Token in Tok_Arrow | Tok_Colon_Equal then
!             Arg_Node := New_Node (N_Parameter_Association, Prev_Token_Ptr);
!             Set_Selector_Name (Arg_Node, Ident_Node);
!             T_Arrow;
!             Set_Explicit_Actual_Parameter (Arg_Node, P_Expression);
!             Append (Arg_Node, Arg_List);
  
!             --  If a comma follows, go back and scan next entry
  
!             if Comma_Present then
!                goto LP_State_Call;
  
!             --  Otherwise we have the end of a call
  
!             else
!                Prefix_Node := Name_Node;
!                Name_Node := New_Node (N_Function_Call, Sloc (Prefix_Node));
!                Set_Name (Name_Node, Prefix_Node);
!                Set_Parameter_Associations (Name_Node, Arg_List);
!                T_Right_Paren;
  
!                if Token in Token_Class_Namext then
!                   goto Scan_Name_Extension_OK;
  
!                --  This is a case of a call which cannot be a name
  
!                else
!                   Expr_Form := EF_Name;
!                   return Name_Node;
                 end if;
+             end if;
  
!          --  Not named parameter: Id started an expression after all
  
!          else
!             Restore_Scan_State (Scan_State); -- to Id
           end if;
+       end if;
  
!       --  Here if entry did not start with Id => which means that it
!       --  is a positional parameter, which is not allowed, since we
!       --  have seen at least one named parameter already.
  
!       Error_Msg_SC
!          ("positional parameter association " &
!            "not allowed after named one");
  
!       Expr_Node := P_Expression_If_OK;
  
!       --  Leaving the '>' in an association is not unusual, so suggest
!       --  a possible fix.
  
!       if Nkind (Expr_Node) = N_Op_Eq then
!          Error_Msg_N ("\maybe `='>` was intended", Expr_Node);
!       end if;
  
!       --  We go back to scanning out expressions, so that we do not get
!       --  multiple error messages when several positional parameters
!       --  follow a named parameter.
  
!       goto LP_State_Expr;
  
!       --  End of treatment for name extensions starting with left paren
  
        --  End of loop through name extensions
  
*************** package body Ch4 is
*** 1384,1390 ****
        begin
           Save_Scan_State (Scan_State);
           Scan;   --  past FOR
!          Maybe := Token = Tok_All or else Token = Tok_Some;
           Restore_Scan_State (Scan_State);  --  to FOR
           return Maybe;
        end Is_Quantified_Expression;
--- 1385,1391 ----
        begin
           Save_Scan_State (Scan_State);
           Scan;   --  past FOR
!          Maybe := Token in Tok_All | Tok_Some;
           Restore_Scan_State (Scan_State);  --  to FOR
           return Maybe;
        end Is_Quantified_Expression;
*************** package body Ch4 is
*** 1405,1410 ****
--- 1406,1412 ----
              Scan;   --  past ]
              Aggregate_Node := New_Node (N_Aggregate, Lparen_Sloc);
              Set_Expressions (Aggregate_Node, New_List);
+             Set_Component_Associations (Aggregate_Node, New_List);
              Set_Is_Homogeneous_Aggregate (Aggregate_Node);
              return Aggregate_Node;
           end if;
*************** package body Ch4 is
*** 1608,1618 ****
           then
              Append_New (Expr_Node, Assoc_List);
  
!          elsif Token = Tok_Comma
!            or else Token = Tok_Right_Paren
!            or else Token = Tok_Others
!            or else Token in Token_Class_Lit_Or_Name
!            or else Token = Tok_Semicolon
           then
              if Present (Assoc_List) then
                 Error_Msg_BC -- CODEFIX
--- 1610,1617 ----
           then
              Append_New (Expr_Node, Assoc_List);
  
!          elsif Token in Tok_Comma | Tok_Right_Paren | Tok_Others
!            | Token_Class_Lit_Or_Name | Tok_Semicolon
           then
              if Present (Assoc_List) then
                 Error_Msg_BC -- CODEFIX
*************** package body Ch4 is
*** 1682,1687 ****
--- 1681,1687 ----
  
        case Start_Token is
           when Tok_Left_Bracket =>
+ 
              Set_Component_Associations (Aggregate_Node, Assoc_List);
              Set_Is_Homogeneous_Aggregate (Aggregate_Node);
              T_Right_Bracket;
*************** package body Ch4 is
*** 1775,1790 ****
              if Token = Tok_Identifier then
                 Id := P_Defining_Identifier;
                 if Token = Tok_Greater then
!                   if Extensions_Allowed then
                       Set_Box_Present (Assoc_Node);
                       Set_Binding_Chars (Assoc_Node, Chars (Id));
                       Box_Present := True;
                       Box_With_Identifier_Present := True;
                       Scan; -- past ">"
                    else
!                      Error_Msg
!                        ("Identifier within box only supported under -gnatX",
!                         Token_Ptr);
                       Box_Present := True;
                       --  Avoid cascading errors by ignoring the identifier
                    end if;
--- 1775,1789 ----
              if Token = Tok_Identifier then
                 Id := P_Defining_Identifier;
                 if Token = Tok_Greater then
!                   if Core_Extensions_Allowed then
                       Set_Box_Present (Assoc_Node);
                       Set_Binding_Chars (Assoc_Node, Chars (Id));
                       Box_Present := True;
                       Box_With_Identifier_Present := True;
                       Scan; -- past ">"
                    else
!                      Error_Msg_GNAT_Extension
!                        ("identifier within box", Token_Ptr);
                       Box_Present := True;
                       --  Avoid cascading errors by ignoring the identifier
                    end if;
*************** package body Ch4 is
*** 1814,1824 ****
              if Token = Tok_Identifier then
                 Id := P_Defining_Identifier;
  
!                if not Extensions_Allowed then
!                   Error_Msg
!                     ("IS following component association"
!                        & " only supported under -gnatX",
!                      Token_Ptr);
                 elsif Box_With_Identifier_Present then
                    Error_Msg
                      ("Both identifier-in-box and trailing identifier"
--- 1813,1821 ----
              if Token = Tok_Identifier then
                 Id := P_Defining_Identifier;
  
!                if not Core_Extensions_Allowed then
!                   Error_Msg_GNAT_Extension
!                     ("IS following component association", Token_Ptr);
                 elsif Box_With_Identifier_Present then
                    Error_Msg
                      ("Both identifier-in-box and trailing identifier"
*************** package body Ch4 is
*** 1946,1952 ****
  
              --  Check for case of errant comma or semicolon
  
!             if Token = Tok_Comma or else Token = Tok_Semicolon then
                 declare
                    Com        : constant Boolean := Token = Tok_Comma;
                    Scan_State : Saved_Scan_State;
--- 1943,1949 ----
  
              --  Check for case of errant comma or semicolon
  
!             if Token in Tok_Comma | Tok_Semicolon then
                 declare
                    Com        : constant Boolean := Token = Tok_Comma;
                    Scan_State : Saved_Scan_State;
*************** package body Ch4 is
*** 1960,1966 ****
                    --  do not deal with AND/OR because those cases get mixed up
                    --  with the select alternatives case.
  
!                   if Token = Tok_And or else Token = Tok_Or then
                       Logop := P_Logical_Operator;
                       Restore_Scan_State (Scan_State); -- to comma/semicolon
  
--- 1957,1963 ----
                    --  do not deal with AND/OR because those cases get mixed up
                    --  with the select alternatives case.
  
!                   if Token in Tok_And | Tok_Or then
                       Logop := P_Logical_Operator;
                       Restore_Scan_State (Scan_State); -- to comma/semicolon
  
*************** package body Ch4 is
*** 2009,2019 ****
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token = Tok_Case
!         or else Token = Tok_If
!         or else Token = Tok_For
!         or else Token = Tok_Declare
!       then
           return P_Unparen_Cond_Expr_Etc;
  
        --  Normal case, not case/conditional/quantified expression
--- 2006,2012 ----
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token in Tok_Case | Tok_If | Tok_For | Tok_Declare then
           return P_Unparen_Cond_Expr_Etc;
  
        --  Normal case, not case/conditional/quantified expression
*************** package body Ch4 is
*** 2122,2132 ****
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token = Tok_Case
!         or else Token = Tok_If
!         or else Token = Tok_For
!         or else Token = Tok_Declare
!       then
           return P_Unparen_Cond_Expr_Etc;
  
        --  Normal case, not one of the above expression types
--- 2115,2121 ----
     begin
        --  Case of conditional, case or quantified expression
  
!       if Token in Tok_Case | Tok_If | Tok_For | Tok_Declare then
           return P_Unparen_Cond_Expr_Etc;
  
        --  Normal case, not one of the above expression types
*************** package body Ch4 is
*** 2330,2335 ****
--- 2319,2332 ----
           if Token in Token_Class_Sterm then
              null;
  
+          --  Handle '}' as expression terminator of an interpolated
+          --  expression.
+ 
+          elsif Inside_Interpolated_String_Literal
+            and then Token = Tok_Right_Curly_Bracket
+          then
+             null;
+ 
           --  If we do not have an expression terminator, then complete the
           --  scan of a simple expression. This code duplicates the code
           --  found in P_Term and P_Factor.
*************** package body Ch4 is
*** 2568,2575 ****
--- 2565,2577 ----
        --  an expression terminator, and is not in Token_Class_Sterm, but
        --  in this special case we know that the expression is complete.
  
+       --  We disable this error recovery machinery when we are processing an
+       --  interpolated string and we reach the expression terminator '}'.
+ 
        if not Token_Is_At_Start_Of_Line
           and then Token not in Token_Class_Sterm
+          and then not (Inside_Interpolated_String_Literal
+                          and then Token = Tok_Right_Curly_Bracket)
        then
           --  Normally the right error message is indeed that we expected a
           --  binary operator, but in the case of being between a right and left
*************** package body Ch4 is
*** 2862,2867 ****
--- 2864,2872 ----
              when Tok_Left_Bracket =>
                 return P_Aggregate;
  
+             when Tok_Left_Interpolated_String =>
+                return P_Interpolated_String_Literal;
+ 
              --  Allocator
  
              when Tok_New =>
*************** package body Ch4 is
*** 2968,2974 ****
                    Save_Scan_State (Scan_State);
                    Scan;   --  past FOR
  
!                   if Token = Tok_All or else Token = Tok_Some then
                       Restore_Scan_State (Scan_State);  -- To FOR
                       Node1 := P_Quantified_Expression;
  
--- 2973,2979 ----
                    Save_Scan_State (Scan_State);
                    Scan;   --  past FOR
  
!                   if Token in Tok_All | Tok_Some then
                       Restore_Scan_State (Scan_State);  -- To FOR
                       Node1 := P_Quantified_Expression;
  
*************** package body Ch4 is
*** 3555,3561 ****
           when Tok_Of =>
              Restore_Scan_State (State);
              Scan;  -- past OF
-             Set_Defining_Identifier (Assoc_Node, Id);
              Iter_Spec := P_Iterator_Specification (Id);
              Set_Iterator_Specification (Assoc_Node, Iter_Spec);
  
--- 3560,3565 ----
*************** package body Ch4 is
*** 3640,3646 ****
              Save_Scan_State (State);
              Scan; -- past semicolon
  
!             if Token = Tok_Else or else Token = Tok_Elsif then
                 Error_Msg_SP -- CODEFIX
                   ("|extra "";"" ignored");
  
--- 3644,3650 ----
              Save_Scan_State (State);
              Scan; -- past semicolon
  
!             if Token in Tok_Else | Tok_Elsif then
                 Error_Msg_SP -- CODEFIX
                   ("|extra "";"" ignored");
  
*************** package body Ch4 is
*** 3839,3845 ****
           Save_Scan_State (Scan_State);
           Scan;  --  past FOR
  
!          if Token = Tok_All or else Token = Tok_Some then
              Restore_Scan_State (Scan_State);
              Result := P_Quantified_Expression;
  
--- 3843,3849 ----
           Save_Scan_State (Scan_State);
           Scan;  --  past FOR
  
!          if Token in Tok_All | Tok_Some then
              Restore_Scan_State (Scan_State);
              Result := P_Quantified_Expression;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch5.adb gcc-13.1.0/gcc/ada/par-ch5.adb
*** gcc-12.2.0/gcc/ada/par-ch5.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch5.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch5 is
*** 103,123 ****
     --  | LOOP_STATEMENT       | BLOCK_STATEMENT
     --  | ACCEPT_STATEMENT     | SELECT_STATEMENT
  
!    --  This procedure scans a sequence of statements. The caller sets SS_Flags
!    --  to indicate acceptable termination conditions for the sequence:
! 
!    --    SS_Flags.Eftm Terminate on ELSIF
!    --    SS_Flags.Eltm Terminate on ELSE
!    --    SS_Flags.Extm Terminate on EXCEPTION
!    --    SS_Flags.Ortm Terminate on OR
!    --    SS_Flags.Tatm Terminate on THEN ABORT (Token = ABORT on return)
!    --    SS_Flags.Whtm Terminate on WHEN
!    --    SS_Flags.Unco Unconditional terminate after scanning one statement
! 
!    --  In addition, the scan is always terminated by encountering END or the
!    --  end of file (EOF) condition. If one of the six above terminators is
!    --  encountered with the corresponding SS_Flags flag not set, then the
!    --  action taken is as follows:
  
     --    If the keyword occurs to the left of the expected column of the end
     --    for the current sequence (as recorded in the current end context),
--- 103,113 ----
     --  | LOOP_STATEMENT       | BLOCK_STATEMENT
     --  | ACCEPT_STATEMENT     | SELECT_STATEMENT
  
!    --  This procedure scans a sequence of statements. SS_Flags indicates
!    --  termination conditions for the sequence. In addition, the sequence is
!    --  always terminated by encountering END or end of file. If one of the six
!    --  above terminators is encountered with the corresponding SS_Flags flag
!    --  not set, then the action taken is as follows:
  
     --    If the keyword occurs to the left of the expected column of the end
     --    for the current sequence (as recorded in the current end context),
*************** package body Ch5 is
*** 131,137 ****
  
     --  Note that the first action means that control can return to the caller
     --  with Token set to a terminator other than one of those specified by the
!    --  SS parameter. The caller should treat such a case as equivalent to END.
  
     --  In addition, the flag SS_Flags.Sreq is set to True to indicate that at
     --  least one real statement (other than a pragma) is required in the
--- 121,128 ----
  
     --  Note that the first action means that control can return to the caller
     --  with Token set to a terminator other than one of those specified by the
!    --  SS_Flags parameter. The caller should treat such a case as equivalent to
!    --  END.
  
     --  In addition, the flag SS_Flags.Sreq is set to True to indicate that at
     --  least one real statement (other than a pragma) is required in the
*************** package body Ch5 is
*** 144,198 ****
     --  parsing a statement, then the scan pointer is advanced past the next
     --  semicolon and the parse continues.
  
!    function P_Sequence_Of_Statements (SS_Flags : SS_Rec) return List_Id is
! 
!       Statement_Required : Boolean;
        --  This flag indicates if a subsequent statement (other than a pragma)
        --  is required. It is initialized from the Sreq flag, and modified as
        --  statements are scanned (a statement turns it off, and a label turns
        --  it back on again since a statement must follow a label).
        --  Note : this final requirement is lifted in Ada 2012.
  
!       Statement_Seen : Boolean;
        --  In Ada 2012, a label can end a sequence of statements, but the
        --  sequence cannot contain only labels. This flag is set whenever a
        --  label is encountered, to enforce this rule at the end of a sequence.
  
-       Declaration_Found : Boolean := False;
-       --  This flag is set True if a declaration is encountered, so that the
-       --  error message about declarations in the statement part is only
-       --  given once for a given sequence of statements.
- 
        Scan_State_Label : Saved_Scan_State;
        Scan_State       : Saved_Scan_State;
  
!       Statement_List : List_Id;
        Block_Label    : Name_Id;
        Id_Node        : Node_Id;
        Name_Node      : Node_Id;
  
!       procedure Junk_Declaration;
!       --  Procedure called to handle error of declaration encountered in
!       --  statement sequence.
  
        procedure Test_Statement_Required;
        --  Flag error if Statement_Required flag set
  
-       ----------------------
-       -- Junk_Declaration --
-       ----------------------
- 
-       procedure Junk_Declaration is
-       begin
-          if (not Declaration_Found) or All_Errors_Mode then
-             Error_Msg_SC -- CODEFIX
-               ("declarations must come before BEGIN");
-             Declaration_Found := True;
-          end if;
- 
-          Skip_Declaration (Statement_List);
-       end Junk_Declaration;
- 
        -----------------------------
        -- Test_Statement_Required --
        -----------------------------
--- 135,169 ----
     --  parsing a statement, then the scan pointer is advanced past the next
     --  semicolon and the parse continues.
  
!    function P_Sequence_Of_Statements
!      (SS_Flags : SS_Rec; Handled : Boolean := False) return List_Id
!    is
!       Statement_Required : Boolean := SS_Flags.Sreq;
        --  This flag indicates if a subsequent statement (other than a pragma)
        --  is required. It is initialized from the Sreq flag, and modified as
        --  statements are scanned (a statement turns it off, and a label turns
        --  it back on again since a statement must follow a label).
        --  Note : this final requirement is lifted in Ada 2012.
  
!       Statement_Seen : Boolean := False;
        --  In Ada 2012, a label can end a sequence of statements, but the
        --  sequence cannot contain only labels. This flag is set whenever a
        --  label is encountered, to enforce this rule at the end of a sequence.
  
        Scan_State_Label : Saved_Scan_State;
        Scan_State       : Saved_Scan_State;
  
!       Statement_List : constant List_Id := New_List;
        Block_Label    : Name_Id;
        Id_Node        : Node_Id;
        Name_Node      : Node_Id;
  
!       Decl_Loc, Label_Loc : Source_Ptr := No_Location;
!       --  Sloc of the first declaration/label encountered, if any.
  
        procedure Test_Statement_Required;
        --  Flag error if Statement_Required flag set
  
        -----------------------------
        -- Test_Statement_Required --
        -----------------------------
*************** package body Ch5 is
*** 235,251 ****
                     and then Statement_Seen)
                  or else All_Pragmas)
              then
!                declare
!                   Null_Stm : constant Node_Id :=
!                                Make_Null_Statement (Token_Ptr);
!                begin
!                   Set_Comes_From_Source (Null_Stm, False);
!                   Append_To (Statement_List, Null_Stm);
!                end;
  
!             --  If not Ada 2012, or not special case above, give error message
  
!             else
                 Error_Msg_BC -- CODEFIX
                   ("statement expected");
              end if;
--- 206,217 ----
                     and then Statement_Seen)
                  or else All_Pragmas)
              then
!                null;
  
!             --  If not Ada 2012, or not special case above, and no declaration
!             --  seen (as allowed in Ada 2020), give error message.
  
!             elsif No (Decl_Loc) then
                 Error_Msg_BC -- CODEFIX
                   ("statement expected");
              end if;
*************** package body Ch5 is
*** 255,268 ****
     --  Start of processing for P_Sequence_Of_Statements
  
     begin
!       Statement_List := New_List;
!       Statement_Required := SS_Flags.Sreq;
!       Statement_Seen     := False;
  
        loop
           Ignore (Tok_Semicolon);
  
           begin
              if Style_Check then
                 Style.Check_Indentation;
              end if;
--- 221,257 ----
     --  Start of processing for P_Sequence_Of_Statements
  
     begin
!       --  In Ada 2022, we allow declarative items to be mixed with
!       --  statements. The loop below alternates between calling
!       --  P_Declarative_Items to parse zero or more declarative items,
!       --  and parsing a statement.
  
        loop
           Ignore (Tok_Semicolon);
  
+          declare
+             Num_Statements : constant Nat := List_Length (Statement_List);
           begin
+             P_Declarative_Items
+               (Statement_List, Declare_Expression => False,
+                In_Spec => False, In_Statements => True);
+ 
+             --  Use the length of the list to determine whether we parsed
+             --  any declarative items. If so, it's an error unless language
+             --  extensions are enabled.
+ 
+             if List_Length (Statement_List) > Num_Statements then
+                if All_Errors_Mode or else No (Decl_Loc) then
+                   Decl_Loc := Sloc (Pick (Statement_List, Num_Statements + 1));
+ 
+                   Error_Msg_GNAT_Extension
+                     ("declarations mixed with statements",
+                      Sloc (Pick (Statement_List, Num_Statements + 1)));
+                end if;
+             end if;
+          end;
+ 
+          begin -- handle Error_Resync
              if Style_Check then
                 Style.Check_Indentation;
              end if;
*************** package body Ch5 is
*** 282,299 ****
                    --  with the exception of the cases tested for below.
  
                    (Token = Tok_Semicolon
!                     and then Prev_Token /= Tok_Return
!                     and then Prev_Token /= Tok_Null
!                     and then Prev_Token /= Tok_Raise
!                     and then Prev_Token /= Tok_End
!                     and then Prev_Token /= Tok_Exit)
  
                    --  If followed by colon, colon-equal, or dot, then we
                    --  definitely  have an identifier (could not be reserved)
  
!                   or else Token = Tok_Colon
!                   or else Token = Tok_Colon_Equal
!                   or else Token = Tok_Dot
  
                    --  Left paren means we have an identifier except for those
                    --  reserved words that can legitimately be followed by a
--- 271,283 ----
                    --  with the exception of the cases tested for below.
  
                    (Token = Tok_Semicolon
!                     and then Prev_Token not in
!                      Tok_Return | Tok_Null | Tok_Raise | Tok_End | Tok_Exit)
  
                    --  If followed by colon, colon-equal, or dot, then we
                    --  definitely  have an identifier (could not be reserved)
  
!                   or else Token in Tok_Colon | Tok_Colon_Equal | Tok_Dot
  
                    --  Left paren means we have an identifier except for those
                    --  reserved words that can legitimately be followed by a
*************** package body Ch5 is
*** 301,314 ****
  
                    or else
                      (Token = Tok_Left_Paren
!                       and then Prev_Token /= Tok_Case
!                       and then Prev_Token /= Tok_Delay
!                       and then Prev_Token /= Tok_If
!                       and then Prev_Token /= Tok_Elsif
!                       and then Prev_Token /= Tok_Return
!                       and then Prev_Token /= Tok_When
!                       and then Prev_Token /= Tok_While
!                       and then Prev_Token /= Tok_Separate)
                 then
                    --  Here we have an apparent reserved identifier and the
                    --  token past it is appropriate to this usage (and would
--- 285,293 ----
  
                    or else
                      (Token = Tok_Left_Paren
!                       and then Prev_Token not in
!                        Tok_Case | Tok_Delay | Tok_If | Tok_Elsif | Tok_Return |
!                        Tok_When | Tok_While | Tok_Separate)
                 then
                    --  Here we have an apparent reserved identifier and the
                    --  token past it is appropriate to this usage (and would
*************** package body Ch5 is
*** 613,626 ****
                          Append_To (Statement_List,
                            P_For_Statement (Id_Node));
  
-                      --  Improper statement follows label. If we have an
-                      --  expression token, then assume the colon was part
-                      --  of a misplaced declaration.
- 
-                      elsif Token not in Token_Class_Eterm then
-                         Restore_Scan_State (Scan_State_Label);
-                         Junk_Declaration;
- 
                       --  Otherwise complain we have inappropriate statement
  
                       else
--- 592,597 ----
*************** package body Ch5 is
*** 704,714 ****
                    --  instance of an incorrectly spelled keyword. If so, we
                    --  do nothing. The Bad_Spelling_Of will have reset Token
                    --  to the appropriate keyword, so the next time round the
!                   --  loop we will process the modified token. Note that we
!                   --  check for ELSIF before ELSE here. That's not accidental.
!                   --  We don't want to identify a misspelling of ELSE as
!                   --  ELSIF, and in particular we do not want to treat ELSEIF
!                   --  as ELSE IF.
  
                    else
                       Restore_Scan_State (Scan_State_Label); -- to identifier
--- 675,686 ----
                    --  instance of an incorrectly spelled keyword. If so, we
                    --  do nothing. The Bad_Spelling_Of will have reset Token
                    --  to the appropriate keyword, so the next time round the
!                   --  loop we will process the modified token.
!                   --
!                   --  Note that we check for ELSIF before ELSE here, because
!                   --  we don't want to identify a misspelling of ELSE as ELSIF,
!                   --  and in particular we do not want to treat ELSEIF as
!                   --  ELSE IF.
  
                    else
                       Restore_Scan_State (Scan_State_Label); -- to identifier
*************** package body Ch5 is
*** 811,816 ****
--- 783,792 ----
                    Append_To (Statement_List, P_Label);
                    Statement_Required := True;
  
+                   if No (Label_Loc) then
+                      Label_Loc := Sloc (Last (Statement_List));
+                   end if;
+ 
                 --  Pragma appearing as a statement in a statement sequence
  
                 when Tok_Pragma =>
*************** package body Ch5 is
*** 941,954 ****
                 --  handling of a bad statement.
  
                 when others =>
!                   if Token in Token_Class_Declk then
!                      Junk_Declaration;
! 
!                   else
!                      Error_Msg_BC -- CODEFIX
!                        ("statement expected");
!                      raise Error_Resync;
!                   end if;
              end case;
  
           --  On error resynchronization, skip past next semicolon, and, since
--- 917,925 ----
                 --  handling of a bad statement.
  
                 when others =>
!                   Error_Msg_BC -- CODEFIX
!                     ("statement expected");
!                   raise Error_Resync;
              end case;
  
           --  On error resynchronization, skip past next semicolon, and, since
*************** package body Ch5 is
*** 966,972 ****
           exit when SS_Flags.Unco;
        end loop;
  
!       return Statement_List;
     end P_Sequence_Of_Statements;
  
     --------------------
--- 937,1032 ----
           exit when SS_Flags.Unco;
        end loop;
  
!       --  If there are no declarative items in the list, or if the list is part
!       --  of a handled sequence of statements, we just return the list.
!       --  Otherwise, we wrap the list in a block statement, so the declarations
!       --  will have a proper scope. In the Handled case, it would be wrong to
!       --  wrap, because we want the code before and after "begin" to be in the
!       --  same scope. Example:
!       --
!       --     if ... then
!       --        use Some_Package;
!       --        Do_Something (...);
!       --     end if;
!       --
!       --  is tranformed into:
!       --
!       --     if ... then
!       --        begin
!       --           use Some_Package;
!       --           Do_Something (...);
!       --        end;
!       --     end if;
!       --
!       --  But we don't wrap this:
!       --
!       --     declare
!       --        X : Integer;
!       --     begin
!       --        X : Integer;
!       --
!       --  Otherwise, we would fail to detect the error (conflicting X's).
!       --  Similarly, if a representation clause appears in the statement
!       --  part, we don't want it to appear more nested than the declarative
!       --  part -- that would cause an unwanted error.
! 
!       if Present (Decl_Loc) then
!          --  Forbid labels and declarative items from coexisting. Otherwise,
!          --  one could jump past a declaration, leading to chaos. Jumping
!          --  backward past a declaration is also questionable -- does the
!          --  declaration get elaborated again? Is secondary stack storage
!          --  reclaimed? (A more liberal rule was proposed, but this is what
!          --  we're doing for now.)
! 
!          if Present (Label_Loc) then
!             Error_Msg ("declarative item in same list as label", Decl_Loc);
!             Error_Msg ("label in same list as declarative item", Label_Loc);
!          end if;
! 
!          --  Forbid exception handlers and declarative items from
!          --  coexisting. Example:
!          --
!          --     X : Integer := 123;
!          --     procedure P is
!          --     begin
!          --        X : Integer := 456;
!          --     exception
!          --        when Cain =>
!          --           Put(X);
!          --     end P;
!          --
!          --  It was proposed that in the handler, X should refer to the outer
!          --  X, but that's just confusing.
! 
!          if Token = Tok_Exception then
!             Error_Msg
!               ("declarative item in statements conflicts with " &
!                "exception handler below",
!                Decl_Loc);
!             Error_Msg
!               ("exception handler conflicts with " &
!                "declarative item in statements above",
!                Token_Ptr);
!          end if;
! 
!          if Handled then
!             return Statement_List;
!          else
!             declare
!                Loc : constant Source_Ptr := Sloc (First (Statement_List));
!                Block : constant Node_Id :=
!                  Make_Block_Statement
!                    (Loc,
!                     Handled_Statement_Sequence =>
!                       Make_Handled_Sequence_Of_Statements
!                         (Loc, Statements => Statement_List));
!             begin
!                return New_List (Block);
!             end;
!          end if;
!       else
!          return Statement_List;
!       end if;
     end P_Sequence_Of_Statements;
  
     --------------------
*************** package body Ch5 is
*** 1364,1370 ****
           --  If we have a WHEN or OTHERS, then that's fine keep going. Note
           --  that it is a semantic check to ensure the proper use of OTHERS
  
!          if Token = Tok_When or else Token = Tok_Others then
              Append (P_Case_Statement_Alternative, Alternatives_List);
  
           --  If we have an END, then probably we are at the end of the case
--- 1424,1430 ----
           --  If we have a WHEN or OTHERS, then that's fine keep going. Note
           --  that it is a semantic check to ensure the proper use of OTHERS
  
!          if Token in Tok_When | Tok_Others then
              Append (P_Case_Statement_Alternative, Alternatives_List);
  
           --  If we have an END, then probably we are at the end of the case
*************** package body Ch5 is
*** 1676,1682 ****
        --  expression it is an iterator specification. Ambiguity is resolved
        --  during analysis of the loop parameter specification.
  
!       if Token = Tok_Of or else Token = Tok_Colon then
           Error_Msg_Ada_2012_Feature ("iterator", Token_Ptr);
           return P_Iterator_Specification (ID_Node);
        end if;
--- 1736,1742 ----
        --  expression it is an iterator specification. Ambiguity is resolved
        --  during analysis of the loop parameter specification.
  
!       if Token in Tok_Of | Tok_Colon then
           Error_Msg_Ada_2012_Feature ("iterator", Token_Ptr);
           return P_Iterator_Specification (ID_Node);
        end if;
*************** package body Ch5 is
*** 1975,1981 ****
        Append_Elmt (Goto_Node, Goto_List);
  
        if Token = Tok_When then
!          Error_Msg_GNAT_Extension ("goto when statement");
  
           Scan; -- past WHEN
           Mutate_Nkind (Goto_Node, N_Goto_When_Statement);
--- 2035,2041 ----
        Append_Elmt (Goto_Node, Goto_List);
  
        if Token = Tok_When then
!          Error_Msg_GNAT_Extension ("goto when statement", Token_Ptr);
  
           Scan; -- past WHEN
           Mutate_Nkind (Goto_Node, N_Goto_When_Statement);
*************** package body Ch5 is
*** 2184,2192 ****
              --  END, EOF, or a token which starts declarations.
  
              elsif Parent_Nkind = N_Package_Body
!               and then (Token = Tok_End
!                           or else Token = Tok_EOF
!                           or else Token in Token_Class_Declk)
              then
                 Set_Null_HSS (Parent);
  
--- 2244,2250 ----
              --  END, EOF, or a token which starts declarations.
  
              elsif Parent_Nkind = N_Package_Body
!               and then (Token in Tok_End | Tok_EOF | Token_Class_Declk)
              then
                 Set_Null_HSS (Parent);
  
*************** package body Ch5 is
*** 2296,2302 ****
           TF_Then;
        end loop;
  
!       if Token = Tok_And or else Token = Tok_Or then
           Error_Msg_SC ("unexpected logical operator");
           Scan; -- past logical operator
  
--- 2354,2360 ----
           TF_Then;
        end loop;
  
!       if Token in Tok_And | Tok_Or then
           Error_Msg_SC ("unexpected logical operator");
           Scan; -- past logical operator
  
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch6.adb gcc-13.1.0/gcc/ada/par-ch6.adb
*** gcc-12.2.0/gcc/ada/par-ch6.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch6.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch6 is
*** 180,200 ****
     --    FUNCTION SPECIFICATION IS (EXPRESSION)
     --      [ASPECT_SPECIFICATIONS];
  
-    --  The value in Pf_Flags indicates which of these possible declarations
-    --  is acceptable to the caller:
- 
-    --    Pf_Flags.Decl                 Set if declaration OK
-    --    Pf_Flags.Gins                 Set if generic instantiation OK
-    --    Pf_Flags.Pbod                 Set if proper body OK
-    --    Pf_Flags.Rnam                 Set if renaming declaration OK
-    --    Pf_Flags.Stub                 Set if body stub OK
-    --    Pf_Flags.Pexp                 Set if expression function OK
- 
-    --  If an inappropriate form is encountered, it is scanned out but an
-    --  error message indicating that it is appearing in an inappropriate
-    --  context is issued. The only possible values for Pf_Flags are those
-    --  defined as constants in the Par package.
- 
     --  The caller has checked that the initial token is FUNCTION, PROCEDURE,
     --  NOT or OVERRIDING.
  
--- 180,185 ----
*************** package body Ch6 is
*** 316,322 ****
           then
              Error_Msg_SC ("overriding indicator not allowed here!");
  
!          elsif Token /= Tok_Function and then Token /= Tok_Procedure then
              Error_Msg_SC -- CODEFIX
                ("FUNCTION or PROCEDURE expected!");
           end if;
--- 301,307 ----
           then
              Error_Msg_SC ("overriding indicator not allowed here!");
  
!          elsif Token not in Tok_Function | Tok_Procedure then
              Error_Msg_SC -- CODEFIX
                ("FUNCTION or PROCEDURE expected!");
           end if;
*************** package body Ch6 is
*** 737,758 ****
                    --  or a pragma, then we definitely have a subprogram body.
                    --  This is a common case, so worth testing first.
  
!                   if Token = Tok_Begin
!                     or else Token in Token_Class_Declk
!                     or else Token = Tok_Pragma
!                   then
                       return False;
  
                    --  Test for tokens which could only start an expression and
                    --  thus signal the case of a expression function.
  
!                   elsif Token     in Token_Class_Literal
!                     or else Token in Token_Class_Unary_Addop
!                     or else Token =  Tok_Left_Paren
!                     or else Token =  Tok_Abs
!                     or else Token =  Tok_Null
!                     or else Token =  Tok_New
!                     or else Token =  Tok_Not
                    then
                       null;
  
--- 722,736 ----
                    --  or a pragma, then we definitely have a subprogram body.
                    --  This is a common case, so worth testing first.
  
!                   if Token in Tok_Begin | Token_Class_Declk | Tok_Pragma then
                       return False;
  
                    --  Test for tokens which could only start an expression and
                    --  thus signal the case of a expression function.
  
!                   elsif Token in
!                     Token_Class_Literal | Token_Class_Unary_Addop |
!                     Tok_Left_Paren | Tok_Abs | Tok_Null | Tok_New | Tok_Not
                    then
                       null;
  
*************** package body Ch6 is
*** 1161,1169 ****
              Save_Scan_State (Scan_State);
              Scan; -- past dot
  
!             if Token = Tok_Identifier
!               or else Token = Tok_Operator_Symbol
!               or else Token = Tok_String_Literal
              then
                 return True;
  
--- 1139,1146 ----
              Save_Scan_State (Scan_State);
              Scan; -- past dot
  
!             if Token in
!               Tok_Identifier | Tok_Operator_Symbol | Tok_String_Literal
              then
                 return True;
  
*************** package body Ch6 is
*** 1180,1187 ****
        Ident_Node := Token_Node;
        Scan; -- past initial token
  
!       if Prev_Token = Tok_Operator_Symbol
!         or else Prev_Token = Tok_String_Literal
          or else not Real_Dot
        then
           return Ident_Node;
--- 1157,1163 ----
        Ident_Node := Token_Node;
        Scan; -- past initial token
  
!       if Prev_Token in Tok_Operator_Symbol | Tok_String_Literal
          or else not Real_Dot
        then
           return Ident_Node;
*************** package body Ch6 is
*** 1216,1222 ****
  
     exception
        when Error_Resync =>
!          while Token = Tok_Dot or else Token = Tok_Identifier loop
              Scan;
           end loop;
  
--- 1192,1198 ----
  
     exception
        when Error_Resync =>
!          while Token in Tok_Dot | Tok_Identifier loop
              Scan;
           end loop;
  
*************** package body Ch6 is
*** 1327,1333 ****
  
     exception
        when Error_Resync =>
!          while Token = Tok_Dot or else Token = Tok_Identifier loop
              Scan;
           end loop;
  
--- 1303,1309 ----
  
     exception
        when Error_Resync =>
!          while Token in Tok_Dot | Tok_Identifier loop
              Scan;
           end loop;
  
*************** package body Ch6 is
*** 1462,1471 ****
                       --  and on a right paren, e.g. Parms (X Y), and also
                       --  on an assignment symbol, e.g. Parms (X Y := ..)
  
!                      if Token = Tok_Semicolon
!                        or else Token = Tok_Right_Paren
!                        or else Token = Tok_EOF
!                        or else Token = Tok_Colon_Equal
                       then
                          Restore_Scan_State (Scan_State);
                          exit Ident_Loop;
--- 1438,1445 ----
                       --  and on a right paren, e.g. Parms (X Y), and also
                       --  on an assignment symbol, e.g. Parms (X Y := ..)
  
!                      if Token in Tok_Semicolon | Tok_Right_Paren |
!                        Tok_EOF | Tok_Colon_Equal
                       then
                          Restore_Scan_State (Scan_State);
                          exit Ident_Loop;
*************** package body Ch6 is
*** 1474,1482 ****
                       --  comma, e.g. Parms (A B : ...). Also assume a missing
                       --  comma if we hit another comma, e.g. Parms (A B, C ..)
  
!                      elsif Token = Tok_Colon
!                        or else Token = Tok_Comma
!                      then
                          Restore_Scan_State (Scan_State);
                          exit Look_Ahead;
                       end if;
--- 1448,1454 ----
                       --  comma, e.g. Parms (A B : ...). Also assume a missing
                       --  comma if we hit another comma, e.g. Parms (A B, C ..)
  
!                      elsif Token in Tok_Colon | Tok_Comma then
                          Restore_Scan_State (Scan_State);
                          exit Look_Ahead;
                       end if;
*************** package body Ch6 is
*** 1551,1557 ****
                 --  Case of IN or OUT present
  
                 else
!                   if Token = Tok_In or else Token = Tok_Out then
                       if Not_Null_Present then
                          Error_Msg
                            ("`NOT NULL` can only be used with `ACCESS`",
--- 1523,1529 ----
                 --  Case of IN or OUT present
  
                 else
!                   if Token in Tok_In | Tok_Out then
                       if Not_Null_Present then
                          Error_Msg
                            ("`NOT NULL` can only be used with `ACCESS`",
*************** package body Ch6 is
*** 1627,1633 ****
              --  If we have RETURN or IS after the semicolon, then assume
              --  that semicolon should have been a right parenthesis and exit
  
!             if Token = Tok_Is or else Token = Tok_Return then
                 Error_Msg_SP -- CODEFIX
                   ("|"";"" should be "")""");
                 exit Specification_Loop;
--- 1599,1605 ----
              --  If we have RETURN or IS after the semicolon, then assume
              --  that semicolon should have been a right parenthesis and exit
  
!             if Token in Tok_Is | Tok_Return then
                 Error_Msg_SP -- CODEFIX
                   ("|"";"" should be "")""");
                 exit Specification_Loop;
*************** package body Ch6 is
*** 1656,1661 ****
--- 1628,1655 ----
  
              P_Aspect_Specifications (Specification_Node, False);
  
+             --  Set the aspect specifications for previous Ids
+ 
+             if Has_Aspects (Specification_Node)
+               and then Prev_Ids (Specification_Node)
+             then
+                --  Loop through each previous id
+ 
+                declare
+                   Prev_Id : Node_Id := Prev (Specification_Node);
+                begin
+                   loop
+                      Set_Aspect_Specifications
+                        (Prev_Id, Aspect_Specifications (Specification_Node));
+ 
+                      --  Exit when we reach the first parameter in the list
+ 
+                      exit when not Prev_Ids (Prev_Id);
+                      Prev_Id := Prev (Prev_Id);
+                   end loop;
+                end;
+             end if;
+ 
              if Token = Tok_Right_Paren then
                 Scan;  -- past right paren
                 exit Specification_Loop;
*************** package body Ch6 is
*** 1999,2005 ****
              --  at a Return_when_statement
  
              if Token = Tok_When and then not Missing_Semicolon_On_When then
!                Error_Msg_GNAT_Extension ("return when statement");
                 Mutate_Nkind (Ret_Node, N_Return_When_Statement);
  
                 Scan; -- past WHEN
--- 1993,1999 ----
              --  at a Return_when_statement
  
              if Token = Tok_When and then not Missing_Semicolon_On_When then
!                Error_Msg_GNAT_Extension ("return when statement", Token_Ptr);
                 Mutate_Nkind (Ret_Node, N_Return_When_Statement);
  
                 Scan; -- past WHEN
*************** package body Ch6 is
*** 2008,2014 ****
              --  Allow IF instead of WHEN, giving error message
  
              elsif Token = Tok_If then
!                Error_Msg_GNAT_Extension ("return when statement");
                 Mutate_Nkind (Ret_Node, N_Return_When_Statement);
  
                 T_When;
--- 2002,2008 ----
              --  Allow IF instead of WHEN, giving error message
  
              elsif Token = Tok_If then
!                Error_Msg_GNAT_Extension ("return when statement", Token_Ptr);
                 Mutate_Nkind (Ret_Node, N_Return_When_Statement);
  
                 T_When;
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch7.adb gcc-13.1.0/gcc/ada/par-ch7.adb
*** gcc-12.2.0/gcc/ada/par-ch7.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch7.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch7 is
*** 71,91 ****
     --      new generic_package_NAME [GENERIC_ACTUAL_PART]
     --        [ASPECT_SPECIFICATIONS];
  
-    --  The value in Pf_Flags indicates which of these possible declarations
-    --  is acceptable to the caller:
- 
-    --    Pf_Flags.Spcn                 Set if specification OK
-    --    Pf_Flags.Decl                 Set if declaration OK
-    --    Pf_Flags.Gins                 Set if generic instantiation OK
-    --    Pf_Flags.Pbod                 Set if proper body OK
-    --    Pf_Flags.Rnam                 Set if renaming declaration OK
-    --    Pf_Flags.Stub                 Set if body stub OK
- 
-    --  If an inappropriate form is encountered, it is scanned out but an error
-    --  message indicating that it is appearing in an inappropriate context is
-    --  issued. The only possible settings for Pf_Flags are those defined as
-    --  constants in package Par.
- 
     --  Note: in all contexts where a package specification is required, there
     --  is a terminating semicolon. This semicolon is scanned out in the case
     --  where Pf_Flags is set to Pf_Spcn, even though it is not strictly part
--- 71,76 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch8.adb gcc-13.1.0/gcc/ada/par-ch8.adb
*** gcc-12.2.0/gcc/ada/par-ch8.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch8.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch8 is
*** 94,100 ****
     begin
        Scan; -- past USE
  
!       if Token = Tok_Type or else Token = Tok_All then
           P_Use_Type_Clause (Item_List);
        else
           P_Use_Package_Clause (Item_List);
--- 94,100 ----
     begin
        Scan; -- past USE
  
!       if Token in Tok_Type | Tok_All then
           P_Use_Type_Clause (Item_List);
        else
           P_Use_Package_Clause (Item_List);
diff -Nrcpad gcc-12.2.0/gcc/ada/par-ch9.adb gcc-13.1.0/gcc/ada/par-ch9.adb
*** gcc-12.2.0/gcc/ada/par-ch9.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-ch9.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Ch9 is
*** 343,352 ****
           --  Ada 2005 (AI-397): Reserved words NOT and OVERRIDING may begin an
           --  entry declaration.
  
!          elsif Token = Tok_Entry
!            or else Token = Tok_Not
!            or else Token = Tok_Overriding
!          then
              Append (P_Entry_Declaration, Items);
  
           elsif Token = Tok_For then
--- 343,349 ----
           --  Ada 2005 (AI-397): Reserved words NOT and OVERRIDING may begin an
           --  entry declaration.
  
!          elsif Token in Tok_Entry | Tok_Not | Tok_Overriding then
              Append (P_Entry_Declaration, Items);
  
           elsif Token = Tok_For then
*************** package body Ch9 is
*** 760,766 ****
                 Set_Must_Override     (Decl, Is_Overriding);
                 Set_Must_Not_Override (Decl, Not_Overriding);
  
!             elsif Token = Tok_Function or else Token = Tok_Procedure then
                 Decl := P_Subprogram (Pf_Decl_Pexp);
  
                 Set_Must_Override     (Specification (Decl), Is_Overriding);
--- 757,763 ----
                 Set_Must_Override     (Decl, Is_Overriding);
                 Set_Must_Not_Override (Decl, Not_Overriding);
  
!             elsif Token in Tok_Function | Tok_Procedure then
                 Decl := P_Subprogram (Pf_Decl_Pexp);
  
                 Set_Must_Override     (Specification (Decl), Is_Overriding);
*************** package body Ch9 is
*** 987,993 ****
  
              --  If comma or colon after Id, must be Formal_Part
  
!             if Token = Tok_Comma or else Token = Tok_Colon then
                 Restore_Scan_State (Scan_State); -- to Id
                 Set_Parameter_Specifications (Decl_Node, P_Formal_Part);
  
--- 984,990 ----
  
              --  If comma or colon after Id, must be Formal_Part
  
!             if Token in Tok_Comma | Tok_Colon then
                 Restore_Scan_State (Scan_State); -- to Id
                 Set_Parameter_Specifications (Decl_Node, P_Formal_Part);
  
*************** package body Ch9 is
*** 1095,1101 ****
  
              --  If identifier followed by comma or colon, must be Formal_Part
  
!             if Token = Tok_Comma or else Token = Tok_Colon then
                 Restore_Scan_State (Scan_State); -- to left paren
                 Set_Parameter_Specifications (Accept_Node, P_Parameter_Profile);
  
--- 1092,1098 ----
  
              --  If identifier followed by comma or colon, must be Formal_Part
  
!             if Token in Tok_Comma | Tok_Colon then
                 Restore_Scan_State (Scan_State); -- to left paren
                 Set_Parameter_Specifications (Accept_Node, P_Parameter_Profile);
  
diff -Nrcpad gcc-12.2.0/gcc/ada/par-endh.adb gcc-13.1.0/gcc/ada/par-endh.adb
*** gcc-12.2.0/gcc/ada/par-endh.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-endh.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Endh is
*** 242,248 ****
              --  FOR or WHILE allowed (signalling error) to substitute for LOOP
              --  if on the same line as the END.
  
!             elsif (Token = Tok_For or else Token = Tok_While)
                and then not Token_Is_At_Start_Of_Line
              then
                 Scan; -- past FOR or WHILE
--- 242,248 ----
              --  FOR or WHILE allowed (signalling error) to substitute for LOOP
              --  if on the same line as the END.
  
!             elsif Token in Tok_For | Tok_While
                and then not Token_Is_At_Start_Of_Line
              then
                 Scan; -- past FOR or WHILE
*************** package body Endh is
*** 445,452 ****
                 --  incorrect. Same thing for a period in place of a semicolon.
  
                 elsif Token_Is_At_Start_Of_Line
!                  or else Token = Tok_Colon
!                  or else Token = Tok_Dot
                 then
                    T_Semicolon;
  
--- 445,451 ----
                 --  incorrect. Same thing for a period in place of a semicolon.
  
                 elsif Token_Is_At_Start_Of_Line
!                  or else Token in Tok_Colon | Tok_Dot
                 then
                    T_Semicolon;
  
*************** package body Endh is
*** 480,489 ****
              --  on the same line as the END
  
              while not Token_Is_At_Start_Of_Line
!               and then Prev_Token /= Tok_Record
!               and then Prev_Token /= Tok_Semicolon
!               and then Token /= Tok_End
!               and then Token /= Tok_EOF
              loop
                 Scan; -- past junk
              end loop;
--- 479,486 ----
              --  on the same line as the END
  
              while not Token_Is_At_Start_Of_Line
!               and then Prev_Token not in Tok_Record | Tok_Semicolon
!               and then Token not in Tok_End | Tok_EOF
              loop
                 Scan; -- past junk
              end loop;
*************** package body Endh is
*** 625,633 ****
              return;
           end if;
  
!          if Token /= Tok_Identifier
!            and then Token /= Tok_Operator_Symbol
!            and then Token /= Tok_String_Literal
           then
              exit;
           end if;
--- 622,629 ----
              return;
           end if;
  
!          if Token not in
!            Tok_Identifier | Tok_Operator_Symbol | Tok_String_Literal
           then
              exit;
           end if;
*************** package body Endh is
*** 655,663 ****
        --  if there is no line end at the end of the last line of the file)
  
        else
!          while Token /= Tok_End
!            and then Token /= Tok_EOF
!            and then Token /= Tok_Semicolon
             and then not Token_Is_At_Start_Of_Line
           loop
              Scan; -- past junk token on same line
--- 651,657 ----
        --  if there is no line end at the end of the last line of the file)
  
        else
!          while Token not in Tok_End | Tok_EOF | Tok_Semicolon
             and then not Token_Is_At_Start_Of_Line
           loop
              Scan; -- past junk token on same line
*************** package body Endh is
*** 1157,1165 ****
  
                    Scan; -- past END
  
!                   if Token = Tok_Identifier
!                     or else Token = Tok_Operator_Symbol
!                   then
                       Nxt_Labl := P_Designator;
  
                       --  We only consider it an error if the label is a match
--- 1151,1157 ----
  
                    Scan; -- past END
  
!                   if Token in Tok_Identifier | Tok_Operator_Symbol then
                       Nxt_Labl := P_Designator;
  
                       --  We only consider it an error if the label is a match
diff -Nrcpad gcc-12.2.0/gcc/ada/par-labl.adb gcc-13.1.0/gcc/ada/par-labl.adb
*** gcc-12.2.0/gcc/ada/par-labl.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-labl.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/par-load.adb gcc-13.1.0/gcc/ada/par-load.adb
*** gcc-12.2.0/gcc/ada/par-load.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-load.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/par-prag.adb gcc-13.1.0/gcc/ada/par-prag.adb
*** gcc-12.2.0/gcc/ada/par-prag.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-prag.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** function Prag (Pragma_Node : Node_Id; Se
*** 65,71 ****
     --  the routine for the argument one past the last present argument, but
     --  that is the only case in which a non-present argument can be referenced.
  
!    procedure Check_Arg_Count (Required : Int);
     --  Check argument count for pragma = Required. If not give error and raise
     --  Error_Resync.
  
--- 65,71 ----
     --  the routine for the argument one past the last present argument, but
     --  that is the only case in which a non-present argument can be referenced.
  
!    procedure Check_Arg_Count (Required : Nat);
     --  Check argument count for pragma = Required. If not give error and raise
     --  Error_Resync.
  
*************** function Prag (Pragma_Node : Node_Id; Se
*** 73,82 ****
     --  Check the expression of the specified argument to make sure that it
     --  is a string literal. If not give error and raise Error_Resync.
  
!    procedure Check_Arg_Is_On_Or_Off (Arg : Node_Id);
     --  Check the expression of the specified argument to make sure that it
     --  is an identifier which is either ON or OFF, and if not, then issue
!    --  an error message and raise Error_Resync.
  
     procedure Check_No_Identifier (Arg : Node_Id);
     --  Checks that the given argument does not have an identifier. If
--- 73,84 ----
     --  Check the expression of the specified argument to make sure that it
     --  is a string literal. If not give error and raise Error_Resync.
  
!    procedure Check_Arg_Is_On_Or_Off
!      (Arg : Node_Id; All_OK_Too : Boolean := False);
     --  Check the expression of the specified argument to make sure that it
     --  is an identifier which is either ON or OFF, and if not, then issue
!    --  an error message and raise Error_Resync. If All_OK_Too is True,
!    --  then an ALL identifer is also acceptable.
  
     procedure Check_No_Identifier (Arg : Node_Id);
     --  Checks that the given argument does not have an identifier. If
*************** function Prag (Pragma_Node : Node_Id; Se
*** 155,161 ****
     -- Check_Arg_Count --
     ---------------------
  
!    procedure Check_Arg_Count (Required : Int) is
     begin
        if Arg_Count /= Required then
           Error_Msg_N ("wrong number of arguments for pragma%", Pragma_Node);
--- 157,163 ----
     -- Check_Arg_Count --
     ---------------------
  
!    procedure Check_Arg_Count (Required : Nat) is
     begin
        if Arg_Count /= Required then
           Error_Msg_N ("wrong number of arguments for pragma%", Pragma_Node);
*************** function Prag (Pragma_Node : Node_Id; Se
*** 167,183 ****
     -- Check_Arg_Is_On_Or_Off --
     ----------------------------
  
!    procedure Check_Arg_Is_On_Or_Off (Arg : Node_Id) is
        Argx : constant Node_Id := Expression (Arg);
! 
     begin
!       if Nkind (Expression (Arg)) /= N_Identifier
!         or else Chars (Argx) not in Name_On | Name_Off
!       then
           Error_Msg_Name_2 := Name_On;
           Error_Msg_Name_3 := Name_Off;
  
!          Error_Msg_N ("argument for pragma% must be% or%", Argx);
           raise Error_Resync;
        end if;
     end Check_Arg_Is_On_Or_Off;
--- 169,194 ----
     -- Check_Arg_Is_On_Or_Off --
     ----------------------------
  
!    procedure Check_Arg_Is_On_Or_Off
!      (Arg : Node_Id; All_OK_Too : Boolean := False)
!    is
        Argx : constant Node_Id := Expression (Arg);
!       Error : Boolean := Nkind (Expression (Arg)) /= N_Identifier;
     begin
!       if not Error then
!          Error := (Chars (Argx) not in Name_On | Name_Off)
!            and then not (All_OK_Too and Chars (Argx) = Name_All);
!       end if;
!       if Error then
           Error_Msg_Name_2 := Name_On;
           Error_Msg_Name_3 := Name_Off;
  
!          if All_OK_Too then
!             Error_Msg_Name_4 := Name_All;
!             Error_Msg_N ("argument for pragma% must be% or% or%", Argx);
!          else
!             Error_Msg_N ("argument for pragma% must be% or%", Argx);
!          end if;
           raise Error_Resync;
        end if;
     end Check_Arg_Is_On_Or_Off;
*************** begin
*** 414,420 ****
        -- Extensions_Allowed (GNAT) --
        -------------------------------
  
!       --  pragma Extensions_Allowed (Off | On)
  
        --  The processing for pragma Extensions_Allowed must be done at
        --  parse time, since extensions mode may affect what is accepted.
--- 425,431 ----
        -- Extensions_Allowed (GNAT) --
        -------------------------------
  
!       --  pragma Extensions_Allowed (Off | On | All)
  
        --  The processing for pragma Extensions_Allowed must be done at
        --  parse time, since extensions mode may affect what is accepted.
*************** begin
*** 422,431 ****
        when Pragma_Extensions_Allowed =>
           Check_Arg_Count (1);
           Check_No_Identifier (Arg1);
!          Check_Arg_Is_On_Or_Off (Arg1);
  
           if Chars (Expression (Arg1)) = Name_On then
!             Ada_Version := Ada_With_Extensions;
           else
              Ada_Version := Ada_Version_Explicit;
           end if;
--- 433,444 ----
        when Pragma_Extensions_Allowed =>
           Check_Arg_Count (1);
           Check_No_Identifier (Arg1);
!          Check_Arg_Is_On_Or_Off (Arg1, All_OK_Too => True);
  
           if Chars (Expression (Arg1)) = Name_On then
!             Ada_Version := Ada_With_Core_Extensions;
!          elsif Chars (Expression (Arg1)) = Name_All then
!             Ada_Version := Ada_With_All_Extensions;
           else
              Ada_Version := Ada_Version_Explicit;
           end if;
*************** begin
*** 1266,1273 ****
  
           elsif Nkind (A) = N_Character_Literal then
              declare
!                R : constant Char_Code :=
!                      Char_Code (UI_To_Int (Char_Literal_Value (A)));
              begin
                 if In_Character_Range (R) then
                    Wide_Character_Encoding_Method :=
--- 1279,1285 ----
  
           elsif Nkind (A) = N_Character_Literal then
              declare
!                R : constant Char_Code := UI_To_CC (Char_Literal_Value (A));
              begin
                 if In_Character_Range (R) then
                    Wide_Character_Encoding_Method :=
diff -Nrcpad gcc-12.2.0/gcc/ada/par-sync.adb gcc-13.1.0/gcc/ada/par-sync.adb
*** gcc-12.2.0/gcc/ada/par-sync.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-sync.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sync is
*** 58,66 ****
     begin
        Resync_Init;
  
!       while Token not in Token_Class_Cunit
!         and then Token /= Tok_EOF
!       loop
           Scan;
        end loop;
  
--- 58,64 ----
     begin
        Resync_Init;
  
!       while Token not in Token_Class_Cunit | Tok_EOF loop
           Scan;
        end loop;
  
*************** package body Sync is
*** 92,100 ****
  
             or else (Paren_Count = 0
                       and then
!                        (Token = Tok_Comma
!                          or else Token = Tok_Right_Paren
!                          or else Token = Tok_Vertical_Bar))
           then
              --  A special check: if we stop on the ELSE of OR ELSE or the
              --  THEN of AND THEN, keep going, because this is not really an
--- 90,96 ----
  
             or else (Paren_Count = 0
                       and then
!                        Token in Tok_Comma | Tok_Right_Paren | Tok_Vertical_Bar)
           then
              --  A special check: if we stop on the ELSE of OR ELSE or the
              --  THEN of AND THEN, keep going, because this is not really an
*************** package body Sync is
*** 232,238 ****
           --  in this category only if it does NOT appear after WITH.
  
           elsif Token in Token_Class_After_SM
!             and then (Token /= Tok_Private or else Prev_Token /= Tok_With)
           then
              exit;
  
--- 228,234 ----
           --  in this category only if it does NOT appear after WITH.
  
           elsif Token in Token_Class_After_SM
!            and then (Token /= Tok_Private or else Prev_Token /= Tok_With)
           then
              exit;
  
*************** package body Sync is
*** 274,280 ****
  
           --  Done if we are at THEN or LOOP
  
!          elsif Token = Tok_Then or else Token = Tok_Loop then
              exit;
  
           --  Otherwise keep going
--- 270,276 ----
  
           --  Done if we are at THEN or LOOP
  
!          elsif Token in Tok_Then | Tok_Loop then
              exit;
  
           --  Otherwise keep going
*************** package body Sync is
*** 316,325 ****
        Paren_Count := 0;
  
        loop
!          if Token = Tok_EOF
!            or else Token = Tok_Semicolon
!            or else Token = Tok_Is
!            or else Token in Token_Class_After_SM
           then
              exit;
  
--- 312,318 ----
        Paren_Count := 0;
  
        loop
!          if Token in Tok_EOF | Tok_Semicolon | Tok_Is | Token_Class_After_SM
           then
              exit;
  
*************** package body Sync is
*** 386,395 ****
        loop
           --  Done if at semicolon, WHEN or IS
  
!          if Token = Tok_Semicolon
!            or else Token = Tok_When
!            or else Token = Tok_Is
!          then
              exit;
  
           --  Otherwise keep going
--- 379,385 ----
        loop
           --  Done if at semicolon, WHEN or IS
  
!          if Token in Tok_Semicolon | Tok_When | Tok_Is then
              exit;
  
           --  Otherwise keep going
diff -Nrcpad gcc-12.2.0/gcc/ada/par-tchk.adb gcc-13.1.0/gcc/ada/par-tchk.adb
*** gcc-12.2.0/gcc/ada/par-tchk.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-tchk.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Tchk is
*** 402,407 ****
--- 402,421 ----
        Check_Token (Tok_Record, AP);
     end T_Record;
  
+    ---------------------------
+    -- T_Right_Curly_Bracket --
+    ---------------------------
+ 
+    procedure T_Right_Curly_Bracket is
+    begin
+       if Token = Tok_Right_Curly_Bracket then
+          Scan;
+       else
+          Error_Msg_AP
+            ("|missing ""'}'""");
+       end if;
+    end T_Right_Curly_Bracket;
+ 
     ---------------------
     -- T_Right_Bracket --
     ---------------------
*************** package body Tchk is
*** 567,574 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_Semicolon
!               or else Token = Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 581,587 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_Semicolon | Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
*************** package body Tchk is
*** 597,606 ****
  
        --  Allow OF or => or = in place of IS (with error message)
  
!       elsif Token = Tok_Of
!         or else Token = Tok_Arrow
!         or else Token = Tok_Equal
!       then
           T_Is; -- give missing IS message and skip bad token
  
        else
--- 610,616 ----
  
        --  Allow OF or => or = in place of IS (with error message)
  
!       elsif Token in Tok_Of | Tok_Arrow | Tok_Equal then
           T_Is; -- give missing IS message and skip bad token
  
        else
*************** package body Tchk is
*** 609,616 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_Semicolon
!               or else Token = Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 619,625 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_Semicolon | Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
*************** package body Tchk is
*** 618,627 ****
  
              Scan; -- continue search
  
!             if Token = Tok_Is
!               or else Token = Tok_Of
!               or else Token = Tok_Arrow
!             then
                 Scan; -- past IS or OF or =>
                 return;
              end if;
--- 627,633 ----
  
              Scan; -- continue search
  
!             if Token in Tok_Is | Tok_Of | Tok_Arrow then
                 Scan; -- past IS or OF or =>
                 return;
              end if;
*************** package body Tchk is
*** 642,648 ****
  
        --  Allow DO or THEN in place of LOOP
  
!       elsif Token = Tok_Then or else Token = Tok_Do then
           T_Loop; -- give missing LOOP message
  
        else
--- 648,654 ----
  
        --  Allow DO or THEN in place of LOOP
  
!       elsif Token in Tok_Then | Tok_Do then
           T_Loop; -- give missing LOOP message
  
        else
*************** package body Tchk is
*** 651,658 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_Semicolon
!               or else Token = Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 657,663 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_Semicolon | Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
*************** package body Tchk is
*** 660,666 ****
  
              Scan; -- continue search
  
!             if Token = Tok_Loop or else Token = Tok_Then then
                 Scan; -- past loop or then (message already generated)
                 return;
              end if;
--- 665,671 ----
  
              Scan; -- continue search
  
!             if Token in Tok_Loop | Tok_Then then
                 Scan; -- past loop or then (message already generated)
                 return;
              end if;
*************** package body Tchk is
*** 686,693 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_Semicolon
!               or else Token = Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 691,697 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_Semicolon | Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
*************** package body Tchk is
*** 752,759 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_EOF
!               or else Token = Tok_End
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 756,762 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_EOF | Tok_End
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
*************** package body Tchk is
*** 789,796 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_Semicolon
!               or else Token = Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 792,798 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_Semicolon | Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
*************** package body Tchk is
*** 823,830 ****
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token = Tok_Semicolon
!               or else Token = Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
--- 825,831 ----
  
           loop
              if Prev_Token_Ptr < Current_Line_Start
!               or else Token in Tok_Semicolon | Tok_EOF
              then
                 Restore_Scan_State (Scan_State); -- to where we were
                 return;
diff -Nrcpad gcc-12.2.0/gcc/ada/par-util.adb gcc-13.1.0/gcc/ada/par-util.adb
*** gcc-12.2.0/gcc/ada/par-util.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par-util.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Util is
*** 336,342 ****
              --  probably the semicolon did end the list. Indeed that is
              --  certainly the only single error correction possible here.
  
!             if Token = Tok_Semicolon or else Token = Tok_EOF then
                 Restore_Scan_State (Scan_State);
                 return False;
  
--- 336,342 ----
              --  probably the semicolon did end the list. Indeed that is
              --  certainly the only single error correction possible here.
  
!             if Token in Tok_Semicolon | Tok_EOF then
                 Restore_Scan_State (Scan_State);
                 return False;
  
*************** package body Util is
*** 462,468 ****
              declare
                 Tname : constant String := Token_Type'Image (Token);
              begin
!                Error_Msg_SC ("|extra " & Tname (5 .. Tname'Last) & "ignored");
              end;
           end if;
  
--- 462,468 ----
              declare
                 Tname : constant String := Token_Type'Image (Token);
              begin
!                Error_Msg_SC ("|extra " & Tname (5 .. Tname'Last) & " ignored");
              end;
           end if;
  
*************** package body Util is
*** 521,564 ****
                          raise Program_Error;
  
                       when C_Comma_Right_Paren =>
!                         OK_Next_Tok :=
!                           Token = Tok_Comma or else Token = Tok_Right_Paren;
  
                       when C_Comma_Colon =>
!                         OK_Next_Tok :=
!                           Token = Tok_Comma or else Token = Tok_Colon;
  
                       when C_Do =>
!                         OK_Next_Tok :=
!                           Token = Tok_Do;
  
                       when C_Dot =>
!                         OK_Next_Tok :=
!                           Token = Tok_Dot;
  
                       when C_Greater_Greater =>
!                         OK_Next_Tok :=
!                           Token = Tok_Greater_Greater;
  
                       when C_In =>
!                         OK_Next_Tok :=
!                           Token = Tok_In;
  
                       when C_Is =>
!                         OK_Next_Tok :=
!                           Token = Tok_Is;
  
                       when C_Left_Paren_Semicolon =>
!                         OK_Next_Tok :=
!                           Token = Tok_Left_Paren or else Token = Tok_Semicolon;
  
                       when C_Use =>
!                         OK_Next_Tok :=
!                           Token = Tok_Use;
  
                       when C_Vertical_Bar_Arrow =>
!                         OK_Next_Tok :=
!                           Token = Tok_Vertical_Bar or else Token = Tok_Arrow;
                    end case;
  
                    Restore_Scan_State (Scan_State);
--- 521,554 ----
                          raise Program_Error;
  
                       when C_Comma_Right_Paren =>
!                         OK_Next_Tok := Token in Tok_Comma | Tok_Right_Paren;
  
                       when C_Comma_Colon =>
!                         OK_Next_Tok := Token in Tok_Comma | Tok_Colon;
  
                       when C_Do =>
!                         OK_Next_Tok := Token = Tok_Do;
  
                       when C_Dot =>
!                         OK_Next_Tok := Token = Tok_Dot;
  
                       when C_Greater_Greater =>
!                         OK_Next_Tok := Token = Tok_Greater_Greater;
  
                       when C_In =>
!                         OK_Next_Tok := Token = Tok_In;
  
                       when C_Is =>
!                         OK_Next_Tok := Token = Tok_Is;
  
                       when C_Left_Paren_Semicolon =>
!                         OK_Next_Tok := Token in Tok_Left_Paren | Tok_Semicolon;
  
                       when C_Use =>
!                         OK_Next_Tok := Token = Tok_Use;
  
                       when C_Vertical_Bar_Arrow =>
!                         OK_Next_Tok := Token in Tok_Vertical_Bar | Tok_Arrow;
                    end case;
  
                    Restore_Scan_State (Scan_State);
*************** package body Util is
*** 802,808 ****
  
     function Token_Is_At_Start_Of_Line return Boolean is
     begin
!       return (Token_Ptr = First_Non_Blank_Location or else Token = Tok_EOF);
     end Token_Is_At_Start_Of_Line;
  
     -----------------------------------
--- 792,798 ----
  
     function Token_Is_At_Start_Of_Line return Boolean is
     begin
!       return Token_Ptr = First_Non_Blank_Location or else Token = Tok_EOF;
     end Token_Is_At_Start_Of_Line;
  
     -----------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/par.adb gcc-13.1.0/gcc/ada/par.adb
*** gcc-12.2.0/gcc/ada/par.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinfo;          use Sinfo;
*** 48,53 ****
--- 48,54 ----
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Snames;         use Snames;
+ with Stringt;        use Stringt;
  with Style;
  with Stylesw;        use Stylesw;
  with Table;
*************** function Par (Configuration_Pragmas : Bo
*** 361,396 ****
  
     Expr_Form : Expr_Form_Type;
  
!    --  The following type is used for calls to P_Subprogram, P_Package, P_Task,
!    --  P_Protected to indicate which of several possibilities is acceptable.
  
     type Pf_Rec is record
!       Spcn : Boolean;                  -- True if specification OK
!       Decl : Boolean;                  -- True if declaration OK
!       Gins : Boolean;                  -- True if generic instantiation OK
!       Pbod : Boolean;                  -- True if proper body OK
!       Rnam : Boolean;                  -- True if renaming declaration OK
!       Stub : Boolean;                  -- True if body stub OK
!       Pexp : Boolean;                  -- True if parameterized expression OK
!       Fil2 : Boolean;                  -- Filler to fill to 8 bits
     end record;
     pragma Pack (Pf_Rec);
  
     function T return Boolean renames True;
     function F return Boolean renames False;
  
!    Pf_Decl_Gins_Pbod_Rnam_Stub_Pexp : constant Pf_Rec :=
!                                        Pf_Rec'(F, T, T, T, T, T, T, F);
!    Pf_Decl_Pexp                     : constant Pf_Rec :=
!                                        Pf_Rec'(F, T, F, F, F, F, T, F);
!    Pf_Decl_Gins_Pbod_Rnam_Pexp      : constant Pf_Rec :=
!                                        Pf_Rec'(F, T, T, T, T, F, T, F);
!    Pf_Decl_Pbod_Pexp                : constant Pf_Rec :=
!                                        Pf_Rec'(F, T, F, T, F, F, T, F);
!    Pf_Pbod_Pexp                     : constant Pf_Rec :=
!                                        Pf_Rec'(F, F, F, T, F, F, T, F);
!    Pf_Spcn                         : constant Pf_Rec :=
!                                        Pf_Rec'(T, F, F, F, F, F, F, F);
     --  The above are the only allowed values of Pf_Rec arguments
  
     type SS_Rec is record
--- 362,390 ----
  
     Expr_Form : Expr_Form_Type;
  
!    --  The following type is used by P_Subprogram, P_Package, to indicate which
!    --  of several possibilities is acceptable.
  
     type Pf_Rec is record
!       Spcn : Boolean; -- True if specification OK
!       Decl : Boolean; -- True if declaration OK
!       Gins : Boolean; -- True if generic instantiation OK
!       Pbod : Boolean; -- True if proper body OK
!       Rnam : Boolean; -- True if renaming declaration OK
!       Stub : Boolean; -- True if body stub OK
!       Pexp : Boolean; -- True if parameterized expression OK
     end record;
     pragma Pack (Pf_Rec);
  
     function T return Boolean renames True;
     function F return Boolean renames False;
  
!    Pf_Decl_Gins_Pbod_Rnam_Stub_Pexp : constant Pf_Rec := (F, T, T, T, T, T, T);
!    Pf_Decl_Pexp                     : constant Pf_Rec := (F, T, F, F, F, F, T);
!    Pf_Decl_Gins_Pbod_Rnam_Pexp      : constant Pf_Rec := (F, T, T, T, T, F, T);
!    Pf_Decl_Pbod_Pexp                : constant Pf_Rec := (F, T, F, T, F, F, T);
!    Pf_Pbod_Pexp                     : constant Pf_Rec := (F, F, F, T, F, F, T);
!    Pf_Spcn                          : constant Pf_Rec := (T, F, F, F, F, F, F);
     --  The above are the only allowed values of Pf_Rec arguments
  
     type SS_Rec is record
*************** function Par (Configuration_Pragmas : Bo
*** 405,419 ****
     end record;
     pragma Pack (SS_Rec);
  
!    SS_Eftm_Eltm_Sreq : constant SS_Rec := SS_Rec'(T, T, F, F, T, F, F, F);
!    SS_Eltm_Ortm_Tatm : constant SS_Rec := SS_Rec'(F, T, F, T, F, T, F, F);
!    SS_Extm_Sreq      : constant SS_Rec := SS_Rec'(F, F, T, F, T, F, F, F);
!    SS_None           : constant SS_Rec := SS_Rec'(F, F, F, F, F, F, F, F);
!    SS_Ortm_Sreq      : constant SS_Rec := SS_Rec'(F, F, F, T, T, F, F, F);
!    SS_Sreq           : constant SS_Rec := SS_Rec'(F, F, F, F, T, F, F, F);
!    SS_Sreq_Whtm      : constant SS_Rec := SS_Rec'(F, F, F, F, T, F, T, F);
!    SS_Whtm           : constant SS_Rec := SS_Rec'(F, F, F, F, F, F, T, F);
!    SS_Unco           : constant SS_Rec := SS_Rec'(F, F, F, F, F, F, F, T);
  
     Goto_List : Elist_Id;
     --  List of goto nodes appearing in the current compilation. Used to
--- 399,413 ----
     end record;
     pragma Pack (SS_Rec);
  
!    SS_Eftm_Eltm_Sreq : constant SS_Rec := (T, T, F, F, T, F, F, F);
!    SS_Eltm_Ortm_Tatm : constant SS_Rec := (F, T, F, T, F, T, F, F);
!    SS_Extm_Sreq      : constant SS_Rec := (F, F, T, F, T, F, F, F);
!    SS_None           : constant SS_Rec := (F, F, F, F, F, F, F, F);
!    SS_Ortm_Sreq      : constant SS_Rec := (F, F, F, T, T, F, F, F);
!    SS_Sreq           : constant SS_Rec := (F, F, F, F, T, F, F, F);
!    SS_Sreq_Whtm      : constant SS_Rec := (F, F, F, F, T, F, T, F);
!    SS_Whtm           : constant SS_Rec := (F, F, F, F, F, F, T, F);
!    SS_Unco           : constant SS_Rec := (F, F, F, F, F, F, F, T);
  
     Goto_List : Elist_Id;
     --  List of goto nodes appearing in the current compilation. Used to
*************** function Par (Configuration_Pragmas : Bo
*** 659,664 ****
--- 653,660 ----
        --  if either this is the first occurrence of misuse of this identifier,
        --  or if Force_Msg is True.
  
+       function P_Interpolated_String_Literal return Node_Id;
+ 
        function P_Pragmas_Opt return List_Id;
        --  This function scans for a sequence of pragmas in other than a
        --  declaration sequence or statement sequence context. All pragmas
*************** function Par (Configuration_Pragmas : Bo
*** 701,706 ****
--- 697,724 ----
        function P_Subtype_Mark_Resync                  return Node_Id;
        function P_Unknown_Discriminant_Part_Opt        return Boolean;
  
+       procedure P_Declarative_Items
+         (Decls              : List_Id;
+          Declare_Expression : Boolean;
+          In_Spec            : Boolean;
+          In_Statements      : Boolean);
+       --  Parses a sequence of zero or more declarative items, and appends them
+       --  to Decls. Done indicates whether or not there might be additional
+       --  declarative items to parse. If Done is True, then there are no more
+       --  to parse; otherwise there might be more.
+       --
+       --  Declare_Expression is true if we are parsing a declare_expression, in
+       --  which case we want to suppress certain style checking.
+       --
+       --  In_Spec is true if we are scanning a package declaration, and is used
+       --  to generate an appropriate message if a statement is encountered in
+       --  such a context.
+       --
+       --  In_Statements is true if we are called to parse declarative items in
+       --  a sequence of statements. In this case, we do not give an error upon
+       --  encountering a statement, but return to the caller with Done = True,
+       --  so the caller can resume parsing statements.
+ 
        function P_Basic_Declarative_Items
          (Declare_Expression : Boolean) return List_Id;
        --  Used to parse the declarative items in a package visible or
*************** function Par (Configuration_Pragmas : Bo
*** 858,866 ****
        function P_Loop_Parameter_Specification return Node_Id;
        --  Used in loop constructs and quantified expressions.
  
!       function P_Sequence_Of_Statements (SS_Flags : SS_Rec) return List_Id;
!       --  The argument indicates the acceptable termination tokens.
!       --  See body in Par.Ch5 for details of the use of this parameter.
  
        procedure Parse_Decls_Begin_End (Parent : Node_Id);
        --  Parses declarations and handled statement sequence, setting
--- 876,886 ----
        function P_Loop_Parameter_Specification return Node_Id;
        --  Used in loop constructs and quantified expressions.
  
!       function P_Sequence_Of_Statements
!         (SS_Flags : SS_Rec; Handled : Boolean := False) return List_Id;
!       --  SS_Flags indicates the acceptable termination tokens; see body for
!       --  details. Handled is true if we are parsing a handled sequence of
!       --  statements.
  
        procedure Parse_Decls_Begin_End (Parent : Node_Id);
        --  Parses declarations and handled statement sequence, setting
*************** function Par (Configuration_Pragmas : Bo
*** 1221,1226 ****
--- 1241,1247 ----
        procedure T_Range;
        procedure T_Record;
        procedure T_Right_Bracket;
+       procedure T_Right_Curly_Bracket;
        procedure T_Right_Paren;
        procedure T_Semicolon;
        procedure T_Then;
diff -Nrcpad gcc-12.2.0/gcc/ada/par.ads gcc-13.1.0/gcc/ada/par.ads
*** gcc-12.2.0/gcc/ada/par.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/par_sco.adb gcc-13.1.0/gcc/ada/par_sco.adb
*** gcc-12.2.0/gcc/ada/par_sco.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par_sco.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Par_SCO is
*** 480,492 ****
        N : Node_Id;
  
     begin
!       if L /= No_List then
!          N := First (L);
!          while Present (N) loop
!             Process_Decisions (N, T, Pragma_Sloc);
!             Next (N);
!          end loop;
!       end if;
     end Process_Decisions;
  
     --  Version taking a node
--- 480,490 ----
        N : Node_Id;
  
     begin
!       N := First (L);
!       while Present (N) loop
!          Process_Decisions (N, T, Pragma_Sloc);
!          Next (N);
!       end loop;
     end Process_Decisions;
  
     --  Version taking a node
diff -Nrcpad gcc-12.2.0/gcc/ada/par_sco.ads gcc-13.1.0/gcc/ada/par_sco.ads
*** gcc-12.2.0/gcc/ada/par_sco.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/par_sco.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/pprint.adb gcc-13.1.0/gcc/ada/pprint.adb
*** gcc-12.2.0/gcc/ada/pprint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/pprint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Pprint is
*** 114,120 ****
              Num       : Natural := 1) return String
           is
           begin
!             if not Present (List) then
                 if First or else not Add_Paren then
                    return "";
                 else
--- 114,120 ----
              Num       : Natural := 1) return String
           is
           begin
!             if No (List) then
                 if First or else not Add_Paren then
                    return "";
                 else
*************** package body Pprint is
*** 229,235 ****
                 --  is not prepared to deal with a zero-length result.
  
                 elsif Null_Record_Present (Expr)
!                  or else not Present (First (Component_Associations (Expr)))
                 then
                    return ("(null record)");
  
--- 229,235 ----
                 --  is not prepared to deal with a zero-length result.
  
                 elsif Null_Record_Present (Expr)
!                  or else No (First (Component_Associations (Expr)))
                 then
                    return ("(null record)");
  
diff -Nrcpad gcc-12.2.0/gcc/ada/pprint.ads gcc-13.1.0/gcc/ada/pprint.ads
*** gcc-12.2.0/gcc/ada/pprint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/pprint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/prep.adb gcc-13.1.0/gcc/ada/prep.adb
*** gcc-12.2.0/gcc/ada/prep.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/prep.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Prep is
*** 461,471 ****
  
                 --  Handle relational operator
  
!                elsif     Token = Tok_Equal
!                  or else Token = Tok_Less
!                  or else Token = Tok_Less_Equal
!                  or else Token = Tok_Greater
!                  or else Token = Tok_Greater_Equal
                 then
                    Relop := Token;
                    Scan.all;
--- 461,468 ----
  
                 --  Handle relational operator
  
!                elsif Token in Tok_Equal | Tok_Less | Tok_Less_Equal |
!                  Tok_Greater | Tok_Greater_Equal
                 then
                    Relop := Token;
                    Scan.all;
*************** package body Prep is
*** 771,779 ****
     begin
        --  Scan until we get an end of line or we reach the end of the buffer
  
!       while Token /= Tok_End_Of_Line
!         and then Token /= Tok_EOF
!       loop
           Scan.all;
        end loop;
     end Go_To_End_Of_Line;
--- 768,774 ----
     begin
        --  Scan until we get an end of line or we reach the end of the buffer
  
!       while Token not in Tok_End_Of_Line | Tok_EOF loop
           Scan.all;
        end loop;
     end Go_To_End_Of_Line;
*************** package body Prep is
*** 1042,1048 ****
  
                 Scan.all;
  
!                if Token /= Tok_End_Of_Line and then Token /= Tok_EOF then
                    Error_Msg ("extraneous text in definition", Token_Ptr);
                    goto Cleanup;
                 end if;
--- 1037,1043 ----
  
                 Scan.all;
  
!                if Token not in Tok_End_Of_Line | Tok_EOF then
                    Error_Msg ("extraneous text in definition", Token_Ptr);
                    goto Cleanup;
                 end if;
*************** package body Prep is
*** 1056,1067 ****
  
                 Scan.all;
  
!                if Token /= Tok_End_Of_Line and then Token /= Tok_EOF then
                    Error_Msg ("extraneous text in definition", Token_Ptr);
                    goto Cleanup;
                 end if;
  
!             elsif Token = Tok_End_Of_Line or else Token = Tok_EOF then
                 Data := (Symbol              => Symbol_Name,
                          Original            => Original_Name,
                          On_The_Command_Line => False,
--- 1051,1062 ----
  
                 Scan.all;
  
!                if Token not in Tok_End_Of_Line | Tok_EOF then
                    Error_Msg ("extraneous text in definition", Token_Ptr);
                    goto Cleanup;
                 end if;
  
!             elsif Token in Tok_End_Of_Line | Tok_EOF then
                 Data := (Symbol              => Symbol_Name,
                          Original            => Original_Name,
                          On_The_Command_Line => False,
*************** package body Prep is
*** 1093,1099 ****
  
                 Scan.all;
  
!                if Token /= Tok_End_Of_Line and then Token /= Tok_EOF then
                    Error_Msg ("extraneous text in definition", Token_Ptr);
                    goto Cleanup;
                 end if;
--- 1088,1094 ----
  
                 Scan.all;
  
!                if Token not in Tok_End_Of_Line | Tok_EOF then
                    Error_Msg ("extraneous text in definition", Token_Ptr);
                    goto Cleanup;
                 end if;
*************** package body Prep is
*** 1144,1150 ****
              <<Cleanup>>
                 Set_Ignore_Errors (To => True);
  
!                while Token /= Tok_End_Of_Line and then Token /= Tok_EOF loop
                    Scan.all;
                 end loop;
  
--- 1139,1145 ----
              <<Cleanup>>
                 Set_Ignore_Errors (To => True);
  
!                while Token not in Tok_End_Of_Line | Tok_EOF loop
                    Scan.all;
                 end loop;
  
*************** package body Prep is
*** 1261,1269 ****
                          --  It is an error to have trailing characters after
                          --  the condition or "then".
  
!                         if Token /= Tok_End_Of_Line
!                           and then Token /= Tok_EOF
!                         then
                             Error_Msg
                               ("extraneous text on preprocessor line",
                                Token_Ptr);
--- 1256,1262 ----
                          --  It is an error to have trailing characters after
                          --  the condition or "then".
  
!                         if Token not in Tok_End_Of_Line | Tok_EOF then
                             Error_Msg
                               ("extraneous text on preprocessor line",
                                Token_Ptr);
*************** package body Prep is
*** 1318,1326 ****
                       --  It is an error to have trailing characters after the
                       --  condition or "then".
  
!                      if Token /= Tok_End_Of_Line
!                        and then Token /= Tok_EOF
!                      then
                          Error_Msg
                            ("extraneous text on preprocessor line",
                             Token_Ptr);
--- 1311,1317 ----
                       --  It is an error to have trailing characters after the
                       --  condition or "then".
  
!                      if Token not in Tok_End_Of_Line | Tok_EOF then
                          Error_Msg
                            ("extraneous text on preprocessor line",
                             Token_Ptr);
*************** package body Prep is
*** 1384,1392 ****
  
                       --  Error of character present after "#else"
  
!                      if Token /= Tok_End_Of_Line
!                        and then Token /= Tok_EOF
!                      then
                          Error_Msg
                            ("extraneous text on preprocessor line",
                             Token_Ptr);
--- 1375,1381 ----
  
                       --  Error of character present after "#else"
  
!                      if Token not in Tok_End_Of_Line | Tok_EOF then
                          Error_Msg
                            ("extraneous text on preprocessor line",
                             Token_Ptr);
*************** package body Prep is
*** 1427,1435 ****
  
                             --  Error of character present after "#end if;"
  
!                            if Token /= Tok_End_Of_Line
!                              and then Token /= Tok_EOF
!                            then
                                Error_Msg
                                  ("extraneous text on preprocessor line",
                                   Token_Ptr);
--- 1416,1422 ----
  
                             --  Error of character present after "#end if;"
  
!                            if Token not in Tok_End_Of_Line | Tok_EOF then
                                Error_Msg
                                  ("extraneous text on preprocessor line",
                                   Token_Ptr);
*************** package body Prep is
*** 1496,1504 ****
                    Go_To_End_Of_Line;
  
                 else
!                   while Token /= Tok_End_Of_Line
!                     and then Token /= Tok_EOF
!                   loop
                       if Token = Tok_Special
                         and then Special_Character = '$'
                       then
--- 1483,1489 ----
                    Go_To_End_Of_Line;
  
                 else
!                   while Token not in Tok_End_Of_Line | Tok_EOF loop
                       if Token = Tok_Special
                         and then Special_Character = '$'
                       then
*************** package body Prep is
*** 1564,1570 ****
              end if;
           end if;
  
!          pragma Assert (Token = Tok_End_Of_Line or else Token = Tok_EOF);
  
           --  At this point, the token is either end of line or EOF. The line to
           --  possibly output stops just before the token.
--- 1549,1555 ----
              end if;
           end if;
  
!          pragma Assert (Token in Tok_End_Of_Line | Tok_EOF);
  
           --  At this point, the token is either end of line or EOF. The line to
           --  possibly output stops just before the token.
diff -Nrcpad gcc-12.2.0/gcc/ada/prep.ads gcc-13.1.0/gcc/ada/prep.ads
*** gcc-12.2.0/gcc/ada/prep.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/prep.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/prepcomp.adb gcc-13.1.0/gcc/ada/prepcomp.adb
*** gcc-12.2.0/gcc/ada/prepcomp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/prepcomp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Prepcomp is
*** 311,317 ****
  
           --  Check the switches that may follow
  
!          while Token /= Tok_End_Of_Line and then Token /= Tok_EOF loop
              if Token /= Tok_Minus then
                 Error_Msg -- CODEFIX
                   ("`'-` expected", Token_Ptr);
--- 311,317 ----
  
           --  Check the switches that may follow
  
!          while Token not in Tok_End_Of_Line | Tok_EOF loop
              if Token /= Tok_Minus then
                 Error_Msg -- CODEFIX
                   ("`'-` expected", Token_Ptr);
*************** package body Prepcomp is
*** 755,761 ****
     begin
        Set_Ignore_Errors (To => True);
  
!       while Token /= Tok_End_Of_Line and then Token /= Tok_EOF loop
           Scan;
        end loop;
  
--- 755,761 ----
     begin
        Set_Ignore_Errors (To => True);
  
!       while Token not in Tok_End_Of_Line | Tok_EOF loop
           Scan;
        end loop;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/prepcomp.ads gcc-13.1.0/gcc/ada/prepcomp.ads
*** gcc-12.2.0/gcc/ada/prepcomp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/prepcomp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/put_scos.adb gcc-13.1.0/gcc/ada/put_scos.adb
*** gcc-12.2.0/gcc/ada/put_scos.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/put_scos.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/put_scos.ads gcc-13.1.0/gcc/ada/put_scos.ads
*** gcc-12.2.0/gcc/ada/put_scos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/put_scos.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/raise-gcc.c gcc-13.1.0/gcc/ada/raise-gcc.c
*** gcc-12.2.0/gcc/ada/raise-gcc.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/raise-gcc.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2022, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2023, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 78,84 ****
     (SJLJ or DWARF). We need a consistently named interface to import from
     a-except, so wrappers are defined here.  */
  
! #ifdef __CYGWIN__
  /* Prevent compile error due to unwind-generic.h including <windows.h>,
     see comment above #include <windows.h> in mingw32.h.  */
  #include "mingw32.h"
--- 78,84 ----
     (SJLJ or DWARF). We need a consistently named interface to import from
     a-except, so wrappers are defined here.  */
  
! #if defined (__CYGWIN__) || (defined(__SEH__) && defined(STANDALONE))
  /* Prevent compile error due to unwind-generic.h including <windows.h>,
     see comment above #include <windows.h> in mingw32.h.  */
  #include "mingw32.h"
*************** __gnat_cleanupunwind_handler (int versio
*** 1377,1382 ****
--- 1377,1386 ----
  _Unwind_Reason_Code
  __gnat_Unwind_RaiseException (_Unwind_Exception *e)
  {
+ #ifdef NO_EXCEPTION_PROPAGATION
+   abort();
+ #endif
+ 
  #ifdef __USING_SJLJ_EXCEPTIONS__
    return _Unwind_SjLj_RaiseException (e);
  #else
diff -Nrcpad gcc-12.2.0/gcc/ada/raise.c gcc-13.1.0/gcc/ada/raise.c
*** gcc-12.2.0/gcc/ada/raise.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/raise.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2022, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *             Copyright (C) 1992-2023, Free Software Foundation, Inc.      *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/raise.h gcc-13.1.0/gcc/ada/raise.h
*** gcc-12.2.0/gcc/ada/raise.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/raise.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/repinfo-input.adb gcc-13.1.0/gcc/ada/repinfo-input.adb
*** gcc-12.2.0/gcc/ada/repinfo-input.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/repinfo-input.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2018-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2018-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/repinfo-input.ads gcc-13.1.0/gcc/ada/repinfo-input.ads
*** gcc-12.2.0/gcc/ada/repinfo-input.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/repinfo-input.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2018-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2018-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/repinfo.adb gcc-13.1.0/gcc/ada/repinfo.adb
*** gcc-12.2.0/gcc/ada/repinfo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/repinfo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinfo.Nodes;    use Sinfo.Nodes;
*** 44,49 ****
--- 44,50 ----
  with Sinfo.Utils;    use Sinfo.Utils;
  with Sinput;         use Sinput;
  with Snames;         use Snames;
+ with Stand;          use Stand;
  with Stringt;        use Stringt;
  with Table;
  with Ttypes;
*************** package body Repinfo is
*** 189,197 ****
     procedure List_Type_Info (Ent : Entity_Id);
     --  List type info for type Ent
  
!    function Rep_Not_Constant (Val : Node_Ref_Or_Val) return Boolean;
!    --  Returns True if Val represents a variable value, and False if it
!    --  represents a value that is fixed at compile time.
  
     procedure Spaces (N : Natural);
     --  Output given number of spaces
--- 190,198 ----
     procedure List_Type_Info (Ent : Entity_Id);
     --  List type info for type Ent
  
!    function Compile_Time_Known_Rep (Val : Node_Ref_Or_Val) return Boolean;
!    --  Returns True if Val represents a representation value that is known at
!    --  compile time.
  
     procedure Spaces (N : Natural);
     --  Output given number of spaces
*************** package body Repinfo is
*** 874,883 ****
        C : Character;
  
     begin
!       --  List the qualified name recursively, except
!       --  at compilation unit level in default mode.
  
!       if Is_Compilation_Unit (Ent) then
           null;
        elsif not Is_Compilation_Unit (Scope (Ent))
          or else List_Representation_Info_To_JSON
--- 875,885 ----
        C : Character;
  
     begin
!       --  In JSON mode, we recurse up to Standard. This is also valid in
!       --  default mode where we recurse up to the first compilation unit and
!       --  should not get to Standard.
  
!       if Scope (Ent) = Standard_Standard then
           null;
        elsif not Is_Compilation_Unit (Scope (Ent))
          or else List_Representation_Info_To_JSON
*************** package body Repinfo is
*** 906,915 ****
  
     procedure List_Object_Info (Ent : Entity_Id) is
     begin
!       --  The information has not been computed in a generic unit, so don't try
!       --  to print it.
  
!       if Sem_Util.In_Generic_Scope (Ent) then
           return;
        end if;
  
--- 908,919 ----
  
     procedure List_Object_Info (Ent : Entity_Id) is
     begin
!       --  If size and alignment have not been computed (e.g. if we are in a
!       --  generic unit, or if the back end is not being run), don't try to
!       --  print them.
  
!       pragma Assert (Known_Esize (Ent) = Known_Alignment (Ent));
!       if not Known_Alignment (Ent) then
           return;
        end if;
  
*************** package body Repinfo is
*** 1053,1072 ****
                 Get_Decoded_Name_String (Chars (Comp));
                 Name_Length := Prefix_Length + Name_Len;
  
!                if Rep_Not_Constant (Bofs) then
! 
!                   --  If the record is not packed, then we know that all fields
!                   --  whose position is not specified have starting normalized
!                   --  bit position of zero.
! 
!                   if not Known_Normalized_First_Bit (Comp)
!                     and then not Is_Packed (Ent)
!                   then
!                      Set_Normalized_First_Bit (Comp, Uint_0);
!                   end if;
! 
!                   UI_Image_Length := 2; -- For "??" marker
!                else
                    Npos := Bofs / SSU;
                    Fbit := Bofs mod SSU;
  
--- 1057,1063 ----
                 Get_Decoded_Name_String (Chars (Comp));
                 Name_Length := Prefix_Length + Name_Len;
  
!                if Compile_Time_Known_Rep (Bofs) then
                    Npos := Bofs / SSU;
                    Fbit := Bofs mod SSU;
  
*************** package body Repinfo is
*** 1096,1101 ****
--- 1087,1104 ----
                    end if;
  
                    UI_Image (Spos);
+                else
+                   --  If the record is not packed, then we know that all fields
+                   --  whose position is not specified have starting normalized
+                   --  bit position of zero.
+ 
+                   if not Known_Normalized_First_Bit (Comp)
+                     and then not Is_Packed (Ent)
+                   then
+                      Set_Normalized_First_Bit (Comp, Uint_0);
+                   end if;
+ 
+                   UI_Image_Length := 2; -- For "??" marker
                 end if;
  
                 Max_Name_Length := Natural'Max (Max_Name_Length, Name_Length);
*************** package body Repinfo is
*** 2116,2133 ****
        end if;
     end List_Type_Info;
  
!    ----------------------
!    -- Rep_Not_Constant --
!    ----------------------
  
!    function Rep_Not_Constant (Val : Node_Ref_Or_Val) return Boolean is
     begin
!       if No (Val) or else Val < 0 then
!          return True;
!       else
!          return False;
!       end if;
!    end Rep_Not_Constant;
  
     ---------------
     -- Rep_Value --
--- 2119,2132 ----
        end if;
     end List_Type_Info;
  
!    ----------------------------
!    -- Compile_Time_Known_Rep --
!    ----------------------------
  
!    function Compile_Time_Known_Rep (Val : Node_Ref_Or_Val) return Boolean is
     begin
!       return Present (Val) and then Val >= 0;
!    end Compile_Time_Known_Rep;
  
     ---------------
     -- Rep_Value --
*************** package body Repinfo is
*** 2406,2429 ****
  
     procedure Write_Val (Val : Node_Ref_Or_Val; Paren : Boolean := False) is
     begin
!       if Rep_Not_Constant (Val) then
!          if List_Representation_Info < 3 or else No (Val) then
!             Write_Unknown_Val;
! 
!          else
!             if Paren then
!                Write_Char ('(');
!             end if;
  
!             List_GCC_Expression (Val);
  
!             if Paren then
!                Write_Char (')');
!             end if;
           end if;
- 
-       else
-          UI_Write (Val, Decimal);
        end if;
     end Write_Val;
  
--- 2405,2424 ----
  
     procedure Write_Val (Val : Node_Ref_Or_Val; Paren : Boolean := False) is
     begin
!       if Compile_Time_Known_Rep (Val) then
!          UI_Write (Val, Decimal);
!       elsif List_Representation_Info < 3 or else No (Val) then
!          Write_Unknown_Val;
!       else
!          if Paren then
!             Write_Char ('(');
!          end if;
  
!          List_GCC_Expression (Val);
  
!          if Paren then
!             Write_Char (')');
           end if;
        end if;
     end Write_Val;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/repinfo.ads gcc-13.1.0/gcc/ada/repinfo.ads
*** gcc-12.2.0/gcc/ada/repinfo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/repinfo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Repinfo is
*** 196,203 ****
     --    "Object_Size"          :  numerical expression
     --    "Value_Size"           :  numerical expression
     --    "Component_Size"       :  numerical expression
!    --    "Range"                :  array of numbers
!    --    "Small"                :  number
     --    "Alignment"            :  number
     --    "Convention"           :  string
     --    "Linker_Section"       :  string
--- 196,203 ----
     --    "Object_Size"          :  numerical expression
     --    "Value_Size"           :  numerical expression
     --    "Component_Size"       :  numerical expression
!    --    "Range"                :  array of numerical expressions
!    --    "Small"                :  numerical expression
     --    "Alignment"            :  number
     --    "Convention"           :  string
     --    "Linker_Section"       :  string
diff -Nrcpad gcc-12.2.0/gcc/ada/repinfo.h gcc-13.1.0/gcc/ada/repinfo.h
*** gcc-12.2.0/gcc/ada/repinfo.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/repinfo.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1999-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1999-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/restrict.adb gcc-13.1.0/gcc/ada/restrict.adb
*** gcc-12.2.0/gcc/ada/restrict.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/restrict.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinput;         use Sinput;
*** 41,53 ****
  with Stand;          use Stand;
  with Targparm;       use Targparm;
  with Uname;          use Uname;
  
  package body Restrict is
  
-    Global_Restriction_No_Tasking : Boolean := False;
-    --  Set to True when No_Tasking is set in the run-time package System
-    --  or in a configuration pragmas file (for example, gnat.adc).
- 
     --------------------------------
     -- Package Local Declarations --
     --------------------------------
--- 41,50 ----
  with Stand;          use Stand;
  with Targparm;       use Targparm;
  with Uname;          use Uname;
+ with Warnsw;         use Warnsw;
  
  package body Restrict is
  
     --------------------------------
     -- Package Local Declarations --
     --------------------------------
*************** package body Restrict is
*** 55,60 ****
--- 52,61 ----
     Config_Cunit_Boolean_Restrictions : Save_Cunit_Boolean_Restrictions;
     --  Save compilation unit restrictions set by config pragma files
  
+    Global_Restriction_No_Tasking : Boolean := False;
+    --  Set to True when No_Tasking is set in the run-time package System
+    --  or in a configuration pragmas file (for example, gnat.adc).
+ 
     Restricted_Profile_Result : Boolean := False;
     --  This switch memoizes the result of Restricted_Profile function calls for
     --  improved efficiency. Valid only if Restricted_Profile_Cached is True.
*************** package body Restrict is
*** 122,127 ****
--- 123,133 ----
     --  message is to be suppressed if this is an internal file and this file is
     --  not the main unit. Returns True if message is to be suppressed.
  
+    procedure Violation_Of_No_Dependence (Unit : Int; N : Node_Id);
+    --  Called if a violation of restriction No_Dependence for Unit at node N
+    --  is found. This routine outputs the appropriate message, taking care of
+    --  warning vs real violation.
+ 
     -------------------
     -- Abort_Allowed --
     -------------------
*************** package body Restrict is
*** 550,557 ****
     -------------------------------------
  
     procedure Check_Restriction_No_Dependence (U : Node_Id; Err : Node_Id) is
-       DU : Node_Id;
- 
     begin
        --  Ignore call if node U is not in the main source unit. This avoids
        --  cascaded errors, e.g. when Ada.Containers units with other units.
--- 556,561 ----
*************** package body Restrict is
*** 567,592 ****
        --  Loop through entries in No_Dependence table to check each one in turn
  
        for J in No_Dependences.First .. No_Dependences.Last loop
!          DU := No_Dependences.Table (J).Unit;
  
!          if Same_Unit (U, DU) then
!             Error_Msg_Sloc := Sloc (DU);
!             Error_Msg_Node_1 := DU;
  
!             if No_Dependences.Table (J).Warn then
!                Error_Msg
!                  ("?*?violation of restriction `No_Dependence '='> &`#",
!                   Sloc (Err));
!             else
!                Error_Msg
!                  ("|violation of restriction `No_Dependence '='> &`#",
!                   Sloc (Err));
!             end if;
  
              return;
           end if;
        end loop;
!    end Check_Restriction_No_Dependence;
  
     --------------------------------------------------
     -- Check_Restriction_No_Specification_Of_Aspect --
--- 571,603 ----
        --  Loop through entries in No_Dependence table to check each one in turn
  
        for J in No_Dependences.First .. No_Dependences.Last loop
!          if Same_Unit (No_Dependences.Table (J).Unit, U) then
!             Violation_Of_No_Dependence (J, Err);
!             return;
!          end if;
!       end loop;
!    end Check_Restriction_No_Dependence;
  
!    -----------------------------------------------
!    -- Check_Restriction_No_Dependence_On_System --
!    -----------------------------------------------
  
!    procedure Check_Restriction_No_Dependence_On_System
!      (U   : Name_Id;
!       Err : Node_Id)
!    is
!       pragma Assert (U /= No_Name);
  
+    begin
+       --  Loop through entries in No_Dependence table to check each one in turn
+ 
+       for J in No_Dependences.First .. No_Dependences.Last loop
+          if No_Dependences.Table (J).System_Child = U then
+             Violation_Of_No_Dependence (J, Err);
              return;
           end if;
        end loop;
!    end Check_Restriction_No_Dependence_On_System;
  
     --------------------------------------------------
     -- Check_Restriction_No_Specification_Of_Aspect --
*************** package body Restrict is
*** 886,892 ****
           declare
              S : constant String := Restriction_Id'Image (J);
           begin
!             if S = Name_Buffer (1 .. Name_Len) then
                 return J;
              end if;
           end;
--- 897,906 ----
           declare
              S : constant String := Restriction_Id'Image (J);
           begin
!             if S = Name_Buffer (1 .. Name_Len)
!               --  users cannot name the N_T_H_Implicit restriction
!               and then J /= No_Task_Hierarchy_Implicit
!             then
                 return J;
              end if;
           end;
*************** package body Restrict is
*** 1093,1099 ****
  
     function Restriction_Active (R : All_Restrictions) return Boolean is
     begin
!       return Restrictions.Set (R) and then not Restriction_Warnings (R);
     end Restriction_Active;
  
     --------------------------------
--- 1107,1118 ----
  
     function Restriction_Active (R : All_Restrictions) return Boolean is
     begin
!       if Restrictions.Set (R) and then not Restriction_Warnings (R) then
!          return True;
!       else
!          return R = No_Task_Hierarchy
!            and then Restriction_Active (No_Task_Hierarchy_Implicit);
!       end if;
     end Restriction_Active;
  
     --------------------------------
*************** package body Restrict is
*** 1474,1479 ****
--- 1493,1500 ----
        Warn    : Boolean;
        Profile : Profile_Name := No_Profile)
     is
+       ND : ND_Entry;
+ 
     begin
        --  Loop to check for duplicate entry
  
*************** package body Restrict is
*** 1495,1501 ****
  
        --  Entry is not currently in table
  
!       No_Dependences.Append ((Unit, Warn, Profile));
     end Set_Restriction_No_Dependence;
  
     --------------------------------------
--- 1516,1541 ----
  
        --  Entry is not currently in table
  
!       ND := (Unit, No_Name, Warn, Profile);
! 
!       --  Check whether this is a child unit of System
! 
!       if Nkind (Unit) = N_Selected_Component then
!          declare
!             Root : Node_Id := Unit;
! 
!          begin
!             while Nkind (Prefix (Root)) = N_Selected_Component loop
!                Root := Prefix (Root);
!             end loop;
! 
!             if Chars (Prefix (Root)) = Name_System then
!                ND.System_Child := Chars (Selector_Name (Root));
!             end if;
!          end;
!       end if;
! 
!       No_Dependences.Append (ND);
     end Set_Restriction_No_Dependence;
  
     --------------------------------------
*************** package body Restrict is
*** 1647,1652 ****
--- 1687,1710 ----
        end if;
     end Suppress_Restriction_Message;
  
+    --------------------------------
+    -- Violation_Of_No_Dependence --
+    --------------------------------
+ 
+    procedure Violation_Of_No_Dependence (Unit : Int; N : Node_Id) is
+    begin
+       Error_Msg_Node_1 := No_Dependences.Table (Unit).Unit;
+       Error_Msg_Sloc   := Sloc (Error_Msg_Node_1);
+ 
+       if No_Dependences.Table (Unit).Warn then
+          Error_Msg
+            ("?*?violation of restriction `No_Dependence '='> &`#", Sloc (N));
+       else
+          Error_Msg
+            ("|violation of restriction `No_Dependence '='> &`#", Sloc (N));
+       end if;
+    end Violation_Of_No_Dependence;
+ 
     ---------------------
     -- Tasking_Allowed --
     ---------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/restrict.ads gcc-13.1.0/gcc/ada/restrict.ads
*** gcc-12.2.0/gcc/ada/restrict.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/restrict.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Restrict is
*** 109,158 ****
     --  is why this restriction itself is excluded from the list).
  
     Implementation_Restriction : constant array (All_Restrictions) of Boolean :=
!      (Simple_Barriers                    => True,
!       No_Calendar                        => True,
!       No_Default_Initialization          => True,
!       No_Direct_Boolean_Operators        => True,
!       No_Dispatching_Calls               => True,
!       No_Dynamic_Accessibility_Checks    => True,
!       No_Dynamic_Attachment              => True,
!       No_Elaboration_Code                => True,
!       No_Enumeration_Maps                => True,
!       No_Entry_Calls_In_Elaboration_Code => True,
!       No_Entry_Queue                     => True,
!       No_Exception_Handlers              => True,
!       No_Exception_Propagation           => True,
!       No_Exception_Registration          => True,
!       No_Finalization                    => True,
!       No_Fixed_IO                        => True,
!       No_Implementation_Attributes       => True,
!       No_Implementation_Pragmas          => True,
!       No_Implicit_Conditionals           => True,
!       No_Implicit_Aliasing               => True,
!       No_Implicit_Dynamic_Code           => True,
!       No_Implicit_Loops                  => True,
!       No_Initialize_Scalars              => True,
!       No_Local_Protected_Objects         => True,
!       No_Long_Long_Integers              => True,
!       No_Multiple_Elaboration            => True,
!       No_Protected_Type_Allocators       => True,
!       No_Relative_Delay                  => True,
!       No_Requeue_Statements              => True,
!       No_Secondary_Stack                 => True,
!       No_Select_Statements               => True,
!       No_Standard_Storage_Pools          => True,
!       No_Stream_Optimizations            => True,
!       No_Streams                         => True,
!       No_Tagged_Type_Registration        => True,
!       No_Task_Attributes_Package         => True,
!       No_Task_Termination                => True,
!       No_Tasking                         => True,
!       No_Wide_Characters                 => True,
!       Static_Priorities                  => True,
!       Static_Storage_Size                => True,
!       Pure_Barriers                      => True,
!       SPARK_05                           => True,
!       others                             => False);
  
     --------------------------
     -- No_Dependences Table --
--- 109,153 ----
     --  is why this restriction itself is excluded from the list).
  
     Implementation_Restriction : constant array (All_Restrictions) of Boolean :=
!      (No_Calendar                              => True,
!       No_Default_Initialization                => True,
!       No_Direct_Boolean_Operators              => True,
!       No_Dispatching_Calls                     => True,
!       No_Dynamic_Accessibility_Checks          => True,
!       No_Dynamic_Sized_Objects                 => True,
!       No_Elaboration_Code                      => True,
!       No_Entry_Calls_In_Elaboration_Code       => True,
!       No_Entry_Queue                           => True,
!       No_Enumeration_Maps                      => True,
!       No_Exception_Handlers                    => True,
!       No_Exception_Propagation                 => True,
!       No_Exception_Registration                => True,
!       No_Finalization                          => True,
!       No_Fixed_IO                              => True,
!       No_Implicit_Aliasing                     => True,
!       No_Implicit_Conditionals                 => True,
!       No_Implicit_Dynamic_Code                 => True,
!       No_Implicit_Loops                        => True,
!       No_Implicit_Protected_Object_Allocations => True,
!       No_Implicit_Task_Allocations             => True,
!       No_Initialize_Scalars                    => True,
!       No_Local_Tagged_Types                    => True,
!       No_Long_Long_Integers                    => True,
!       No_Multiple_Elaboration                  => True,
!       No_Secondary_Stack                       => True,
!       No_Standard_Storage_Pools                => True,
!       No_Stream_Optimizations                  => True,
!       No_Streams                               => True,
!       No_Tagged_Type_Registration              => True,
!       No_Task_At_Interrupt_Priority            => True,
!       No_Task_Attributes_Package               => True,
!       No_Tasking                               => True,
!       No_Wide_Characters                       => True,
!       Static_Dispatch_Tables                   => True,
!       Static_Priorities                        => True,
!       Static_Storage_Size                      => True,
!       SPARK_05                                 => True,
!       others                                   => False);
  
     --------------------------
     -- No_Dependences Table --
*************** package Restrict is
*** 173,178 ****
--- 168,176 ----
        Unit : Node_Id;
        --  The unit parameter from the No_Dependence pragma
  
+       System_Child : Name_Id;
+       --  The name if the unit is a child of System, or else No_Name
+ 
        Warn : Boolean;
        --  True if from Restriction_Warnings, False if from Restrictions
  
*************** package Restrict is
*** 274,279 ****
--- 272,284 ----
     --  an explicit WITH clause). U is a node for the unit involved, and Err is
     --  the node to which an error will be attached if necessary.
  
+    procedure Check_Restriction_No_Dependence_On_System
+      (U   : Name_Id;
+       Err : Node_Id);
+    --  Likewise, but for the child units of System referenced by their name
+ 
+    --  WARNING: There is a matching C declaration of this subprogram in fe.h
+ 
     procedure Check_Restriction_No_Specification_Of_Aspect (N : Node_Id);
     --  N is the node id for an N_Aspect_Specification, an N_Pragma, or an
     --  N_Attribute_Definition_Clause. An error message (warning) will be issued
diff -Nrcpad gcc-12.2.0/gcc/ada/rident.ads gcc-13.1.0/gcc/ada/rident.ads
*** gcc-12.2.0/gcc/ada/rident.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/rident.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/rtfinal.c gcc-13.1.0/gcc/ada/rtfinal.c
*** gcc-12.2.0/gcc/ada/rtfinal.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/rtfinal.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern int __gnat_rt_init_count;
*** 46,51 ****
--- 46,52 ----
  /*  see initialize.c  */
  
  #if defined (__MINGW32__)
+ #define WIN32_LEAN_AND_MEAN
  #include "mingw32.h"
  #include <windows.h>
  
diff -Nrcpad gcc-12.2.0/gcc/ada/rtinit.c gcc-13.1.0/gcc/ada/rtinit.c
*** gcc-12.2.0/gcc/ada/rtinit.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/rtinit.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2014-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** int __gnat_rt_init_count = 0;
*** 70,75 ****
--- 70,76 ----
     and finalize properly the run-time. */
  
  #if defined (__MINGW32__)
+ #define WIN32_LEAN_AND_MEAN
  #include "mingw32.h"
  #include <windows.h>
  
diff -Nrcpad gcc-12.2.0/gcc/ada/rtsfind.adb gcc-13.1.0/gcc/ada/rtsfind.adb
*** gcc-12.2.0/gcc/ada/rtsfind.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/rtsfind.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Rtsfind is
*** 564,571 ****
       Ada_Interrupts_Names .. Ada_Interrupts_Names;
  
     subtype Ada_Numerics_Descendant is Ada_Descendant
!      range Ada_Numerics_Generic_Elementary_Functions ..
!            Ada_Numerics_Generic_Elementary_Functions;
  
     subtype Ada_Real_Time_Descendant is Ada_Descendant
       range Ada_Real_Time_Delays .. Ada_Real_Time_Timing_Events;
--- 564,575 ----
       Ada_Interrupts_Names .. Ada_Interrupts_Names;
  
     subtype Ada_Numerics_Descendant is Ada_Descendant
!      range Ada_Numerics_Big_Numbers ..
!            Ada_Numerics_Big_Numbers_Big_Integers_Ghost;
! 
!    subtype Ada_Numerics_Big_Numbers_Descendant is Ada_Descendant
!      range Ada_Numerics_Big_Numbers_Big_Integers ..
!            Ada_Numerics_Big_Numbers_Big_Integers_Ghost;
  
     subtype Ada_Real_Time_Descendant is Ada_Descendant
       range Ada_Real_Time_Delays .. Ada_Real_Time_Timing_Events;
*************** package body Rtsfind is
*** 657,662 ****
--- 661,670 ----
           elsif U_Id in Ada_Numerics_Descendant then
              Name_Buffer (13) := '.';
  
+             if U_Id in Ada_Numerics_Big_Numbers_Descendant then
+                Name_Buffer (25) := '.';
+             end if;
+ 
           elsif U_Id in Ada_Real_Time_Descendant then
              Name_Buffer (14) := '.';
  
*************** package body Rtsfind is
*** 1660,1666 ****
  
        --  Load unit if unit not previously loaded
  
!       if not Present (U.Entity) then
           Load_RTU (U_Id, Id => E);
        end if;
  
--- 1668,1674 ----
  
        --  Load unit if unit not previously loaded
  
!       if No (U.Entity) then
           Load_RTU (U_Id, Id => E);
        end if;
  
*************** package body Rtsfind is
*** 1679,1685 ****
              E1 := First_Entity (Pkg_Ent);
              while Present (E1) loop
                 if Ename = Chars (E1) then
!                   pragma Assert (not Present (Found_E));
                    Found_E := E1;
                 end if;
  
--- 1687,1693 ----
              E1 := First_Entity (Pkg_Ent);
              while Present (E1) loop
                 if Ename = Chars (E1) then
!                   pragma Assert (No (Found_E));
                    Found_E := E1;
                 end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/rtsfind.ads gcc-13.1.0/gcc/ada/rtsfind.ads
*** gcc-12.2.0/gcc/ada/rtsfind.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/rtsfind.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Rtsfind is
*** 115,122 ****
--- 115,128 ----
  
        --  Children of Ada.Numerics
  
+       Ada_Numerics_Big_Numbers,
        Ada_Numerics_Generic_Elementary_Functions,
  
+       --  Children of Ada.Numerics.Big_Numbers
+ 
+       Ada_Numerics_Big_Numbers_Big_Integers,
+       Ada_Numerics_Big_Numbers_Big_Integers_Ghost,
+ 
        --  Children of Ada.Real_Time
  
        Ada_Real_Time_Delays,
*************** package Rtsfind is
*** 183,189 ****
        --  Children of Interfaces
  
        Interfaces_C,
-       Interfaces_Packed_Decimal,
  
        --  Children of Interfaces.C
  
--- 189,194 ----
*************** package Rtsfind is
*** 199,205 ****
        System_Address_To_Access_Conversions,
        System_Arith_64,
        System_Arith_128,
-       System_AST_Handling,
        System_Assertions,
        System_Atomic_Operations,
        System_Atomic_Primitives,
--- 204,209 ----
*************** package Rtsfind is
*** 251,259 ****
        System_Fat_LFlt,
        System_Fat_LLF,
        System_Fat_SFlt,
-       System_Fat_VAX_D_Float,
-       System_Fat_VAX_F_Float,
-       System_Fat_VAX_G_Float,
        System_Finalization_Masters,
        System_Finalization_Root,
        System_Fore_Decimal_32,
--- 255,260 ----
*************** package Rtsfind is
*** 282,295 ****
        System_Img_LLLI,
        System_Img_LLU,
        System_Img_LLLU,
-       System_Img_Name,
        System_Img_Uns,
        System_Img_WChar,
        System_Interrupts,
        System_Long_Long_Float_Expon,
        System_Machine_Code,
        System_Mantissa,
-       System_Memcop,
        System_Memory,
        System_Multiprocessors,
        System_Pack_03,
--- 283,294 ----
*************** package Rtsfind is
*** 414,427 ****
        System_Pack_127,
        System_Parameters,
        System_Partition_Interface,
-       System_Pool_32_Global,
        System_Pool_Global,
-       System_Pool_Empty,
-       System_Pool_Local,
        System_Pool_Size,
        System_Put_Images,
        System_Put_Task_Images,
        System_Relative_Delays,
        System_RPC,
        System_Scalar_Values,
        System_Secondary_Stack,
--- 413,424 ----
        System_Pack_127,
        System_Parameters,
        System_Partition_Interface,
        System_Pool_Global,
        System_Pool_Size,
        System_Put_Images,
        System_Put_Task_Images,
        System_Relative_Delays,
+       System_Return_Stack,
        System_RPC,
        System_Scalar_Values,
        System_Secondary_Stack,
*************** package Rtsfind is
*** 433,439 ****
        System_Stream_Attributes,
        System_Task_Info,
        System_Tasking,
-       System_Threads,
        System_Unsigned_Types,
        System_Val_Bool,
        System_Val_Char,
--- 430,435 ----
*************** package Rtsfind is
*** 454,460 ****
        System_Val_LLLI,
        System_Val_LLU,
        System_Val_LLLU,
-       System_Val_Name,
        System_Val_Uns,
        System_Val_WChar,
        System_Version_Control,
--- 450,455 ----
*************** package Rtsfind is
*** 468,474 ****
        System_Wid_LLLI,
        System_Wid_LLU,
        System_Wid_LLLU,
-       System_Wid_Name,
        System_Wid_Uns,
        System_Wid_WChar,
        System_WWd_Char,
--- 463,468 ----
*************** package Rtsfind is
*** 477,483 ****
  
        --  Children of System.Atomic_Operations
  
!        System_Atomic_Operations_Test_And_Set,
  
        --  Children of System.Dim
  
--- 471,477 ----
  
        --  Children of System.Atomic_Operations
  
!       System_Atomic_Operations_Test_And_Set,
  
        --  Children of System.Dim
  
*************** package Rtsfind is
*** 533,545 ****
     --  value is required syntactically, but no real entry is required or
     --  needed. Use of this value will cause a fatal error in an RTE call.
  
!    --  Note that under no circumstances can any of these entities be defined
!    --  more than once in a given package, i.e. no overloading is allowed for
!    --  any entity that is found using rtsfind. A fatal error is given if this
!    --  rule is violated. The one exception is for Save_Occurrence, where the
!    --  RM mandates the overloading. In this case, the compiler only uses the
!    --  procedure, not the function, and the procedure must come first so that
!    --  the compiler finds it and not the function.
  
     type RE_Id is (
  
--- 527,537 ----
     --  value is required syntactically, but no real entry is required or
     --  needed. Use of this value will cause a fatal error in an RTE call.
  
!    --  It is normally not allowed to have more than one of these entities with
!    --  the same name in a given package. The one exception is Save_Occurrence,
!    --  where the RM mandates the overloading. In this case, the compiler uses
!    --  the procedure, not the function, and the procedure must come first so
!    --  that the compiler finds it and not the function.
  
     type RE_Id is (
  
*************** package Rtsfind is
*** 556,572 ****
  
       RE_Set_Deadline,                    -- Ada.Dispatching.EDF
  
-      RE_Code_Loc,                        -- Ada.Exceptions
       RE_Exception_Id,                    -- Ada.Exceptions
-      RE_Exception_Identity,              -- Ada.Exceptions
       RE_Exception_Information,           -- Ada.Exceptions
       RE_Exception_Message,               -- Ada.Exceptions
       RE_Exception_Name_Simple,           -- Ada.Exceptions
       RE_Exception_Occurrence,            -- Ada.Exceptions
-      RE_Exception_Occurrence_Access,     -- Ada.Exceptions
       RE_Null_Id,                         -- Ada.Exceptions
       RE_Null_Occurrence,                 -- Ada.Exceptions
-      RE_Poll,                            -- Ada.Exceptions
       RE_Raise_Exception,                 -- Ada.Exceptions
       RE_Raise_Exception_Always,          -- Ada.Exceptions
       RE_Raise_From_Controlled_Operation, -- Ada.Exceptions
--- 548,560 ----
*************** package Rtsfind is
*** 585,594 ****
       RE_Detach_Handler,                  -- Ada.Interrupts
       RE_Reference,                       -- Ada.Interrupts
  
       RE_Names,                           -- Ada.Interrupts.Names
  
       RE_Clock,                           -- Ada.Real_Time
!      RE_Clock_Time,                      -- Ada.Real_Time
       RE_Time_Span,                       -- Ada.Real_Time
       RE_Time_Span_Zero,                  -- Ada.Real_Time
       RO_RT_Time,                         -- Ada.Real_Time
--- 573,585 ----
       RE_Detach_Handler,                  -- Ada.Interrupts
       RE_Reference,                       -- Ada.Interrupts
  
+      RE_Big_Integer,             -- Ada.Numerics.Big_Numbers.Big_Integers
+      RO_GH_Big_Integer,          -- Ada.Numerics.Big_Numbers.Big_Integers_Ghost
+ 
       RE_Names,                           -- Ada.Interrupts.Names
  
       RE_Clock,                           -- Ada.Real_Time
!      RE_Clock_Time,                      -- Ada.Real_Time [used by GNATprove]
       RE_Time_Span,                       -- Ada.Real_Time
       RE_Time_Span_Zero,                  -- Ada.Real_Time
       RO_RT_Time,                         -- Ada.Real_Time
*************** package Rtsfind is
*** 604,611 ****
       RE_Stream_Element_Array,            -- Ada.Streams
       RE_Stream_Element_Offset,           -- Ada.Streams
  
-      RE_Stream_Access,                   -- Ada.Streams.Stream_IO
- 
       RO_SU_Super_String,                 -- Ada.Strings.Superbounded
  
       RO_WI_Super_String,                 -- Ada.Strings.Wide_Superbounded
--- 595,600 ----
*************** package Rtsfind is
*** 616,621 ****
--- 605,611 ----
  
       RE_Root_Buffer_Type,                -- Ada.Strings.Text_Buffers
       RE_Put_UTF_8,                       -- Ada.Strings.Text_Buffers
+      RE_Set_Trim_Leading_Spaces,         -- Ada.Strings.Text_Buffers
       RE_Wide_Wide_Put,                   -- Ada.Strings.Text_Buffers
  
       RE_Buffer_Type,                     -- Ada.Strings.Text_Buffers.Unbounded
*************** package Rtsfind is
*** 633,639 ****
       RE_Address_Array,                   -- Ada.Tags
       RE_Addr_Ptr,                        -- Ada.Tags
       RE_Base_Address,                    -- Ada.Tags
-      RE_Check_Interface_Conversion,      -- Ada.Tags
       RE_Check_TSD,                       -- Ada.Tags
       RE_Cstring_Ptr,                     -- Ada.Tags
       RE_CW_Membership,                   -- Ada.Tags
--- 623,628 ----
*************** package Rtsfind is
*** 648,660 ****
       RE_External_Tag,                    -- Ada.Tags
       RO_TA_External_Tag,                 -- Ada.Tags
       RE_Get_Access_Level,                -- Ada.Tags
-      RE_Get_Alignment,                   -- Ada.Tags
       RE_Get_Entry_Index,                 -- Ada.Tags
       RE_Get_Offset_Index,                -- Ada.Tags
       RE_Get_Prim_Op_Kind,                -- Ada.Tags
       RE_Get_Tagged_Kind,                 -- Ada.Tags
       RE_HT_Link,                         -- Ada.Tags
-      RE_Idepth,                          -- Ada.Tags
       RE_Interfaces_Array,                -- Ada.Tags
       RE_Interfaces_Table,                -- Ada.Tags
       RE_Interface_Data,                  -- Ada.Tags
--- 637,647 ----
*************** package Rtsfind is
*** 667,674 ****
       RE_No_Dispatch_Table_Wrapper,       -- Ada.Tags
       RE_No_Tag,                          -- Ada.Tags
       RE_NDT_Prims_Ptr,                   -- Ada.Tags
-      RE_NDT_TSD,                         -- Ada.Tags
-      RE_Num_Prims,                       -- Ada.Tags
       RE_Object_Specific_Data,            -- Ada.Tags
       RE_Offset_To_Top,                   -- Ada.Tags
       RE_Offset_To_Top_Ptr,               -- Ada.Tags
--- 654,659 ----
*************** package Rtsfind is
*** 691,701 ****
       RE_Primary_DT,                      -- Ada.Tags
       RE_Signature,                       -- Ada.Tags
       RE_SSD,                             -- Ada.Tags
-      RE_TSD,                             -- Ada.Tags
       RE_Type_Specific_Data,              -- Ada.Tags
       RE_Register_Interface_Offset,       -- Ada.Tags
       RE_Register_Tag,                    -- Ada.Tags
-      RE_Register_TSD,                    -- Ada.Tags
       RE_Transportable,                   -- Ada.Tags
       RE_Secondary_DT,                    -- Ada.Tags
       RE_Secondary_Tag,                   -- Ada.Tags
--- 676,684 ----
*************** package Rtsfind is
*** 741,747 ****
  
       RE_Stream_T,                        -- CUDA.Driver_Types
  
-      RE_Fatbin_Wrapper,                  -- CUDA.Internal
       RE_Launch_Kernel,                   -- CUDA.Internal
       RE_Pop_Call_Configuration,          -- CUDA.Internal
       RE_Push_Call_Configuration,         -- CUDA.Internal
--- 724,729 ----
*************** package Rtsfind is
*** 764,782 ****
  
       RO_IC_Unsigned,                     -- Interfaces.C
  
-      RE_Chars_Ptr,                       -- Interfaces.C.Strings
-      RE_New_Char_Array,                  -- Interfaces.C.Strings
- 
       RE_Address,                         -- System
       RE_Any_Priority,                    -- System
       RE_Bit_Order,                       -- System
       RE_Default_Priority,                -- System
       RE_High_Order_First,                -- System
       RE_Interrupt_Priority,              -- System
-      RE_Lib_Stop,                        -- System
       RE_Low_Order_First,                 -- System
       RE_Max_Base_Digits,                 -- System
-      RE_Max_Priority,                    -- System
       RE_Null_Address,                    -- System
       RE_Priority,                        -- System
  
--- 746,759 ----
*************** package Rtsfind is
*** 794,801 ****
       RE_Subtract_With_Ovflo_Check128,    -- System.Arith_128
       RE_Scaled_Divide128,                -- System.Arith_128
  
-      RE_Create_AST_Handler,              -- System.AST_Handling
- 
       RE_Assert_Failure,                  -- System.Assertions
       RE_Raise_Assert_Failure,            -- System.Assertions
  
--- 771,776 ----
*************** package Rtsfind is
*** 816,824 ****
       RE_Atomic_Test_And_Set,           -- System.Atomic_Operations.Test_And_Set
  
       RE_AST_Handler,                     -- System.Aux_DEC
-      RE_Import_Address,                  -- System.Aux_DEC
-      RE_Import_Value,                    -- System.Aux_DEC
-      RE_No_AST_Handler,                  -- System.Aux_DEC
       RE_Type_Class,                      -- System.Aux_DEC
       RE_Type_Class_Enumeration,          -- System.Aux_DEC
       RE_Type_Class_Integer,              -- System.Aux_DEC
--- 791,796 ----
*************** package Rtsfind is
*** 902,916 ****
       RE_Str_Concat_8,                    -- System.Concat_8
       RE_Str_Concat_9,                    -- System.Concat_9
  
-      RE_Str_Concat_Bounds_2,             -- System.Concat_2
-      RE_Str_Concat_Bounds_3,             -- System.Concat_3
-      RE_Str_Concat_Bounds_4,             -- System.Concat_4
-      RE_Str_Concat_Bounds_5,             -- System.Concat_5
-      RE_Str_Concat_Bounds_6,             -- System.Concat_6
-      RE_Str_Concat_Bounds_7,             -- System.Concat_7
-      RE_Str_Concat_Bounds_8,             -- System.Concat_8
-      RE_Str_Concat_Bounds_9,             -- System.Concat_9
- 
       RE_Get_Active_Partition_Id,         -- System.DSA_Services
       RE_Get_Local_Partition_Id,          -- System.DSA_Services
       RE_Get_Passive_Partition_Id,        -- System.DSA_Services
--- 874,879 ----
*************** package Rtsfind is
*** 955,969 ****
  
       RE_Attr_Long_Long_Float,            -- System.Fat_LLF
  
-      RE_Attr_VAX_D_Float,                -- System.Fat_VAX_D_Float
-      RE_Fat_VAX_D,                       -- System.Fat_VAX_D_Float
- 
-      RE_Attr_VAX_F_Float,                -- System.Fat_VAX_F_Float
-      RE_Fat_VAX_F,                       -- System.Fat_VAX_F_Float
- 
-      RE_Attr_VAX_G_Float,                -- System.Fat_VAX_G_Float
-      RE_Fat_VAX_G,                       -- System.Fat_VAX_G_Float
- 
       RE_Add_Offset_To_Address,           -- System.Finalization_Masters
       RE_Attach,                          -- System.Finalization_Masters
       RE_Base_Pool,                       -- System.Finalization_Masters
--- 918,923 ----
*************** package Rtsfind is
*** 971,980 ****
       RE_Finalization_Master_Ptr,         -- System.Finalization_Masters
       RE_Set_Base_Pool,                   -- System.Finalization_Masters
       RE_Set_Finalize_Address,            -- System.Finalization_Masters
-      RE_Set_Is_Heterogeneous,            -- System.Finalization_Masters
  
       RE_Root_Controlled,                 -- System.Finalization_Root
-      RE_Root_Controlled_Ptr,             -- System.Finalization_Root
  
       RE_Fore_Decimal32,                  -- System.Fore_Decimal_32
  
--- 925,932 ----
*************** package Rtsfind is
*** 1650,1658 ****
       RE_Set_127,                         -- System.Pack_127
  
       RE_Adjust_Storage_Size,             -- System.Parameters
-      RE_Default_Secondary_Stack_Size,    -- System.Parameters
       RE_Default_Stack_Size,              -- System.Parameters
-      RE_Garbage_Collected,               -- System.Parameters
       RE_Size_Type,                       -- System.Parameters
       RE_Unspecified_Size,                -- System.Parameters
  
--- 1602,1608 ----
*************** package Rtsfind is
*** 1678,1685 ****
  
       RE_Global_Pool_Object,              -- System.Pool_Global
  
-      RE_Global_Pool_32_Object,           -- System.Pool_32_Global
- 
       RE_Stack_Bounded_Pool,              -- System.Pool_Size
  
       RE_Put_Image_Integer,               -- System.Put_Images
--- 1628,1633 ----
*************** package Rtsfind is
*** 1745,1755 ****
       RE_Set_Result,                      -- System.Partition_Interface
       RE_Register_Obj_Receiving_Stub,     -- System.Partition_Interface
       RE_Register_Pkg_Receiving_Stub,     -- System.Partition_Interface
-      RE_Is_Nil,                          -- System.Partition_Interface
-      RE_Entity_Ptr,                      -- System.Partition_Interface
       RE_Entity_Of,                       -- System.Partition_Interface
       RE_Inc_Usage,                       -- System.Partition_Interface
-      RE_Set_Ref,                         -- System.Partition_Interface
       RE_Make_Ref,                        -- System.Partition_Interface
       RE_Get_Local_Address,               -- System.Partition_Interface
       RE_Get_Reference,                   -- System.Partition_Interface
--- 1693,1700 ----
*************** package Rtsfind is
*** 1834,1839 ****
--- 1779,1787 ----
  
       RO_RD_Delay_For,                    -- System.Relative_Delays
  
+      RE_RS_Allocate,                     -- System.Return_Stack
+      RE_RS_Pool,                         -- System.Return_Stack
+ 
       RE_IS_Is1,                          -- System.Scalar_Values
       RE_IS_Is2,                          -- System.Scalar_Values
       RE_IS_Is4,                          -- System.Scalar_Values
*************** package Rtsfind is
*** 1879,1886 ****
       RE_Deallocate_Any_Controlled,       -- System.Storage_Pools.Subpools
       RE_Header_Size_With_Padding,        -- System.Storage_Pools.Subpools
       RE_Root_Storage_Pool_With_Subpools, -- System.Storage_Pools.Subpools
-      RE_Root_Subpool,                    -- System.Storage_Pools.Subpools
-      RE_Subpool_Handle,                  -- System.Storage_Pools.Subpools
  
       RE_I_AD,                            -- System.Stream_Attributes
       RE_I_AS,                            -- System.Stream_Attributes
--- 1827,1832 ----
*************** package Rtsfind is
*** 2004,2010 ****
       RE_Simple_Mode,                     -- System.Tasking
       RE_Terminate_Mode,                  -- System.Tasking
       RE_Delay_Mode,                      -- System.Tasking
-      RE_Entry_Index,                     -- System.Tasking
       RE_Task_Entry_Index,                -- System.Tasking
       RE_Self,                            -- System.Tasking
  
--- 1950,1955 ----
*************** package Rtsfind is
*** 2242,2258 ****
  
       RE_Set_Deadline                     => Ada_Dispatching_EDF,
  
-      RE_Code_Loc                         => Ada_Exceptions,
       RE_Exception_Id                     => Ada_Exceptions,
-      RE_Exception_Identity               => Ada_Exceptions,
       RE_Exception_Information            => Ada_Exceptions,
       RE_Exception_Message                => Ada_Exceptions,
       RE_Exception_Name_Simple            => Ada_Exceptions,
       RE_Exception_Occurrence             => Ada_Exceptions,
-      RE_Exception_Occurrence_Access      => Ada_Exceptions,
       RE_Null_Id                          => Ada_Exceptions,
       RE_Null_Occurrence                  => Ada_Exceptions,
-      RE_Poll                             => Ada_Exceptions,
       RE_Raise_Exception                  => Ada_Exceptions,
       RE_Raise_Exception_Always           => Ada_Exceptions,
       RE_Raise_From_Controlled_Operation  => Ada_Exceptions,
--- 2187,2199 ----
*************** package Rtsfind is
*** 2271,2276 ****
--- 2212,2220 ----
       RE_Detach_Handler                   => Ada_Interrupts,
       RE_Reference                        => Ada_Interrupts,
  
+      RE_Big_Integer             => Ada_Numerics_Big_Numbers_Big_Integers,
+      RO_GH_Big_Integer          => Ada_Numerics_Big_Numbers_Big_Integers_Ghost,
+ 
       RE_Names                            => Ada_Interrupts_Names,
  
       RE_Clock                            => Ada_Real_Time,
*************** package Rtsfind is
*** 2290,2297 ****
       RE_Stream_Element_Array             => Ada_Streams,
       RE_Stream_Element_Offset            => Ada_Streams,
  
-      RE_Stream_Access                    => Ada_Streams_Stream_IO,
- 
       RO_SU_Super_String                  => Ada_Strings_Superbounded,
  
       RO_WI_Super_String                  => Ada_Strings_Wide_Superbounded,
--- 2234,2239 ----
*************** package Rtsfind is
*** 2302,2307 ****
--- 2244,2250 ----
  
       RE_Root_Buffer_Type                 => Ada_Strings_Text_Buffers,
       RE_Put_UTF_8                        => Ada_Strings_Text_Buffers,
+      RE_Set_Trim_Leading_Spaces          => Ada_Strings_Text_Buffers,
       RE_Wide_Wide_Put                    => Ada_Strings_Text_Buffers,
  
       RE_Buffer_Type                      => Ada_Strings_Text_Buffers_Unbounded,
*************** package Rtsfind is
*** 2319,2325 ****
       RE_Address_Array                    => Ada_Tags,
       RE_Addr_Ptr                         => Ada_Tags,
       RE_Base_Address                     => Ada_Tags,
-      RE_Check_Interface_Conversion       => Ada_Tags,
       RE_Check_TSD                        => Ada_Tags,
       RE_Cstring_Ptr                      => Ada_Tags,
       RE_CW_Membership                    => Ada_Tags,
--- 2262,2267 ----
*************** package Rtsfind is
*** 2334,2346 ****
       RE_External_Tag                     => Ada_Tags,
       RO_TA_External_Tag                  => Ada_Tags,
       RE_Get_Access_Level                 => Ada_Tags,
-      RE_Get_Alignment                    => Ada_Tags,
       RE_Get_Entry_Index                  => Ada_Tags,
       RE_Get_Offset_Index                 => Ada_Tags,
       RE_Get_Prim_Op_Kind                 => Ada_Tags,
       RE_Get_Tagged_Kind                  => Ada_Tags,
       RE_HT_Link                          => Ada_Tags,
-      RE_Idepth                           => Ada_Tags,
       RE_Interfaces_Array                 => Ada_Tags,
       RE_Interfaces_Table                 => Ada_Tags,
       RE_Interface_Data                   => Ada_Tags,
--- 2276,2286 ----
*************** package Rtsfind is
*** 2353,2360 ****
       RE_No_Dispatch_Table_Wrapper        => Ada_Tags,
       RE_No_Tag                           => Ada_Tags,
       RE_NDT_Prims_Ptr                    => Ada_Tags,
-      RE_NDT_TSD                          => Ada_Tags,
-      RE_Num_Prims                        => Ada_Tags,
       RE_Object_Specific_Data             => Ada_Tags,
       RE_Offset_To_Top                    => Ada_Tags,
       RE_Offset_To_Top_Ptr                => Ada_Tags,
--- 2293,2298 ----
*************** package Rtsfind is
*** 2377,2387 ****
       RE_Primary_DT                       => Ada_Tags,
       RE_Signature                        => Ada_Tags,
       RE_SSD                              => Ada_Tags,
-      RE_TSD                              => Ada_Tags,
       RE_Type_Specific_Data               => Ada_Tags,
       RE_Register_Interface_Offset        => Ada_Tags,
       RE_Register_Tag                     => Ada_Tags,
-      RE_Register_TSD                     => Ada_Tags,
       RE_Transportable                    => Ada_Tags,
       RE_Secondary_DT                     => Ada_Tags,
       RE_Secondary_Tag                    => Ada_Tags,
--- 2315,2323 ----
*************** package Rtsfind is
*** 2427,2433 ****
  
       RE_Stream_T                         => CUDA_Driver_Types,
  
-      RE_Fatbin_Wrapper                   => CUDA_Internal,
       RE_Launch_Kernel                    => CUDA_Internal,
       RE_Pop_Call_Configuration           => CUDA_Internal,
       RE_Push_Call_Configuration          => CUDA_Internal,
--- 2363,2368 ----
*************** package Rtsfind is
*** 2450,2468 ****
  
       RO_IC_Unsigned                      => Interfaces_C,
  
-      RE_Chars_Ptr                        => Interfaces_C_Strings,
-      RE_New_Char_Array                   => Interfaces_C_Strings,
- 
       RE_Address                          => System,
       RE_Any_Priority                     => System,
       RE_Bit_Order                        => System,
       RE_Default_Priority                 => System,
       RE_High_Order_First                 => System,
       RE_Interrupt_Priority               => System,
-      RE_Lib_Stop                         => System,
       RE_Low_Order_First                  => System,
       RE_Max_Base_Digits                  => System,
-      RE_Max_Priority                     => System,
       RE_Null_Address                     => System,
       RE_Priority                         => System,
  
--- 2385,2398 ----
*************** package Rtsfind is
*** 2480,2487 ****
       RE_Subtract_With_Ovflo_Check128     => System_Arith_128,
       RE_Scaled_Divide128                 => System_Arith_128,
  
-      RE_Create_AST_Handler               => System_AST_Handling,
- 
       RE_Assert_Failure                   => System_Assertions,
       RE_Raise_Assert_Failure             => System_Assertions,
  
--- 2410,2415 ----
*************** package Rtsfind is
*** 2502,2510 ****
       RE_Atomic_Test_And_Set           => System_Atomic_Operations_Test_And_Set,
  
       RE_AST_Handler                      => System_Aux_DEC,
-      RE_Import_Address                   => System_Aux_DEC,
-      RE_Import_Value                     => System_Aux_DEC,
-      RE_No_AST_Handler                   => System_Aux_DEC,
       RE_Type_Class                       => System_Aux_DEC,
       RE_Type_Class_Enumeration           => System_Aux_DEC,
       RE_Type_Class_Integer               => System_Aux_DEC,
--- 2430,2435 ----
*************** package Rtsfind is
*** 2594,2608 ****
       RE_Str_Concat_8                     => System_Concat_8,
       RE_Str_Concat_9                     => System_Concat_9,
  
-      RE_Str_Concat_Bounds_2              => System_Concat_2,
-      RE_Str_Concat_Bounds_3              => System_Concat_3,
-      RE_Str_Concat_Bounds_4              => System_Concat_4,
-      RE_Str_Concat_Bounds_5              => System_Concat_5,
-      RE_Str_Concat_Bounds_6              => System_Concat_6,
-      RE_Str_Concat_Bounds_7              => System_Concat_7,
-      RE_Str_Concat_Bounds_8              => System_Concat_8,
-      RE_Str_Concat_Bounds_9              => System_Concat_9,
- 
       RE_Get_Active_Partition_Id          => System_DSA_Services,
       RE_Get_Local_Partition_Id           => System_DSA_Services,
       RE_Get_Passive_Partition_Id         => System_DSA_Services,
--- 2519,2524 ----
*************** package Rtsfind is
*** 2647,2661 ****
  
       RE_Attr_Long_Long_Float             => System_Fat_LLF,
  
-      RE_Attr_VAX_D_Float                 => System_Fat_VAX_D_Float,
-      RE_Fat_VAX_D                        => System_Fat_VAX_D_Float,
- 
-      RE_Attr_VAX_F_Float                 => System_Fat_VAX_F_Float,
-      RE_Fat_VAX_F                        => System_Fat_VAX_F_Float,
- 
-      RE_Attr_VAX_G_Float                 => System_Fat_VAX_G_Float,
-      RE_Fat_VAX_G                        => System_Fat_VAX_G_Float,
- 
       RE_Add_Offset_To_Address            => System_Finalization_Masters,
       RE_Attach                           => System_Finalization_Masters,
       RE_Base_Pool                        => System_Finalization_Masters,
--- 2563,2568 ----
*************** package Rtsfind is
*** 2663,2672 ****
       RE_Finalization_Master_Ptr          => System_Finalization_Masters,
       RE_Set_Base_Pool                    => System_Finalization_Masters,
       RE_Set_Finalize_Address             => System_Finalization_Masters,
-      RE_Set_Is_Heterogeneous             => System_Finalization_Masters,
  
       RE_Root_Controlled                  => System_Finalization_Root,
-      RE_Root_Controlled_Ptr              => System_Finalization_Root,
  
       RE_Fore_Decimal32                   => System_Fore_Decimal_32,
  
--- 2570,2577 ----
*************** package Rtsfind is
*** 3344,3352 ****
       RE_Set_127                          => System_Pack_127,
  
       RE_Adjust_Storage_Size              => System_Parameters,
-      RE_Default_Secondary_Stack_Size     => System_Parameters,
       RE_Default_Stack_Size               => System_Parameters,
-      RE_Garbage_Collected                => System_Parameters,
       RE_Size_Type                        => System_Parameters,
       RE_Unspecified_Size                 => System_Parameters,
  
--- 3249,3255 ----
*************** package Rtsfind is
*** 3403,3413 ****
       RE_Set_Result                       => System_Partition_Interface,
       RE_Register_Obj_Receiving_Stub      => System_Partition_Interface,
       RE_Register_Pkg_Receiving_Stub      => System_Partition_Interface,
-      RE_Is_Nil                           => System_Partition_Interface,
-      RE_Entity_Ptr                       => System_Partition_Interface,
       RE_Entity_Of                        => System_Partition_Interface,
       RE_Inc_Usage                        => System_Partition_Interface,
-      RE_Set_Ref                          => System_Partition_Interface,
       RE_Make_Ref                         => System_Partition_Interface,
       RE_Get_Local_Address                => System_Partition_Interface,
       RE_Get_Reference                    => System_Partition_Interface,
--- 3306,3313 ----
*************** package Rtsfind is
*** 3492,3499 ****
  
       RE_Global_Pool_Object               => System_Pool_Global,
  
-      RE_Global_Pool_32_Object            => System_Pool_32_Global,
- 
       RE_Stack_Bounded_Pool               => System_Pool_Size,
  
       RE_Put_Image_Integer                => System_Put_Images,
--- 3392,3397 ----
*************** package Rtsfind is
*** 3523,3528 ****
--- 3421,3429 ----
  
       RO_RD_Delay_For                     => System_Relative_Delays,
  
+      RE_RS_Allocate                      => System_Return_Stack,
+      RE_RS_Pool                          => System_Return_Stack,
+ 
       RE_Do_Apc                           => System_RPC,
       RE_Do_Rpc                           => System_RPC,
       RE_Params_Stream_Type               => System_RPC,
*************** package Rtsfind is
*** 3573,3580 ****
       RE_Deallocate_Any_Controlled        => System_Storage_Pools_Subpools,
       RE_Header_Size_With_Padding         => System_Storage_Pools_Subpools,
       RE_Root_Storage_Pool_With_Subpools  => System_Storage_Pools_Subpools,
-      RE_Root_Subpool                     => System_Storage_Pools_Subpools,
-      RE_Subpool_Handle                   => System_Storage_Pools_Subpools,
  
       RE_I_AD                             => System_Stream_Attributes,
       RE_I_AS                             => System_Stream_Attributes,
--- 3474,3479 ----
*************** package Rtsfind is
*** 3698,3704 ****
       RE_Simple_Mode                      => System_Tasking,
       RE_Terminate_Mode                   => System_Tasking,
       RE_Delay_Mode                       => System_Tasking,
-      RE_Entry_Index                      => System_Tasking,
       RE_Task_Entry_Index                 => System_Tasking,
       RE_Self                             => System_Tasking,
  
--- 3597,3602 ----
*************** package Rtsfind is
*** 4009,4014 ****
--- 3907,3913 ----
        System_Fat_LLF          => True,
        System_Fat_SFlt         => True,
        System_Machine_Code     => True,
+       System_Return_Stack     => True,
        System_Secondary_Stack  => True,
        System_Storage_Elements => True,
        System_Task_Info        => True,
diff -Nrcpad gcc-12.2.0/gcc/ada/runtime.h gcc-13.1.0/gcc/ada/runtime.h
*** gcc-12.2.0/gcc/ada/runtime.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/runtime.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2019-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2019-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/s-oscons-tmplt.c gcc-13.1.0/gcc/ada/s-oscons-tmplt.c
*** gcc-12.2.0/gcc/ada/s-oscons-tmplt.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/s-oscons-tmplt.c	Wed Apr 26 07:09:39 2023
***************
*** 7,13 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 7,13 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** int counter = 0;
*** 237,245 ****
  #define CST(name,comment) C(#name,String,name,comment)
  /* String constant */
  
- #define STR(x) STR1(x)
- #define STR1(x) #x
- 
  #ifdef __MINGW32__
  unsigned int _CRT_fmode = _O_BINARY;
  #endif
--- 237,242 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sa_messages.adb gcc-13.1.0/gcc/ada/sa_messages.adb
*** gcc-12.2.0/gcc/ada/sa_messages.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sa_messages.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,539 ****
- ------------------------------------------------------------------------------
- --                       C O D E P E E R / S P A R K                        --
- --                                                                          --
- --                     Copyright (C) 2015-2022, AdaCore                     --
- --                                                                          --
- -- This is free software;  you can redistribute it  and/or modify it  under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  This software is distributed in the hope  that it will be useful, --
- -- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
- -- TABILITY 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  distributed  with  this  software;   see  file --
- -- COPYING3.  If not, go to http://www.gnu.org/licenses for a complete copy --
- -- of the license.                                                          --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- 
- with Ada.Directories; use Ada.Directories;
- with Ada.Strings.Unbounded.Hash;
- 
- with Ada.Text_IO;     use Ada.Text_IO;
- with GNATCOLL.JSON;   use GNATCOLL.JSON;
- 
- package body SA_Messages is
- 
-    -----------------------
-    -- Local subprograms --
-    -----------------------
- 
-    function "<" (Left, Right : SA_Message) return Boolean is
-      (if Left.Kind /= Right.Kind then
-          Left.Kind < Right.Kind
-       else
-          Left.Kind in Check_Kind
-            and then Left.Check_Result < Right.Check_Result);
- 
-    function "<" (Left, Right : Simple_Source_Location) return Boolean is
-       (if Left.File_Name /= Right.File_Name then
-           Left.File_Name < Right.File_Name
-        elsif Left.Line /= Right.Line then
-           Left.Line < Right.Line
-        else
-           Left.Column < Right.Column);
- 
-    function "<" (Left, Right : Source_Locations) return Boolean is
-      (if Left'Length /= Right'Length then
-          Left'Length < Right'Length
-       elsif Left'Length = 0 then
-          False
-       elsif Left (Left'Last) /= Right (Right'Last) then
-          Left (Left'Last) < Right (Right'Last)
-       else
-          Left (Left'First .. Left'Last - 1) <
-            Right (Right'First .. Right'Last - 1));
- 
-    function "<" (Left, Right : Source_Location) return Boolean is
-      (Left.Locations < Right.Locations);
- 
-    function Base_Location
-      (Location : Source_Location) return Simple_Source_Location is
-      (Location.Locations (1));
- 
-    function Hash (Key : SA_Message) return Hash_Type;
-    function Hash (Key : Source_Location) return Hash_Type;
- 
-    ---------
-    -- "<" --
-    ---------
- 
-    function "<" (Left, Right : Message_And_Location) return Boolean is
-      (if Left.Message = Right.Message
-       then Left.Location < Right.Location
-       else Left.Message < Right.Message);
- 
-    ------------
-    -- Column --
-    ------------
- 
-    function Column (Location : Source_Location) return Column_Number is
-      (Base_Location (Location).Column);
- 
-    ---------------
-    -- File_Name --
-    ---------------
- 
-    function File_Name (Location : Source_Location) return String is
-      (To_String (Base_Location (Location).File_Name));
- 
-    function File_Name (Location : Source_Location) return Unbounded_String is
-      (Base_Location (Location).File_Name);
- 
-    ------------------------
-    -- Enclosing_Instance --
-    ------------------------
- 
-    function Enclosing_Instance
-      (Location : Source_Location) return Source_Location_Or_Null is
-      (Count     => Location.Count - 1,
-       Locations => Location.Locations (2 .. Location.Count));
- 
-    ----------
-    -- Hash --
-    ----------
- 
-    function Hash (Key : Message_And_Location) return Hash_Type is
-      (Hash (Key.Message) + Hash (Key.Location));
- 
-    function Hash (Key : SA_Message) return Hash_Type is
-    begin
-       return Result : Hash_Type :=
-                         Hash_Type'Mod (Message_Kind'Pos (Key.Kind))
-       do
-          if Key.Kind in Check_Kind then
-             Result := Result +
-               Hash_Type'Mod (SA_Check_Result'Pos (Key.Check_Result));
-          end if;
-       end return;
-    end Hash;
- 
-    function Hash (Key : Source_Location) return Hash_Type is
-    begin
-       return Result : Hash_Type := Hash_Type'Mod (Key.Count) do
-          for Loc of Key.Locations loop
-             Result := Result + Hash (Loc.File_Name);
-             Result := Result + Hash_Type'Mod (Loc.Line);
-             Result := Result + Hash_Type'Mod (Loc.Column);
-          end loop;
-       end return;
-    end Hash;
- 
-    ---------------
-    -- Iteration --
-    ---------------
- 
-    function Iteration (Location : Source_Location) return Iteration_Id is
-      (Base_Location (Location).Iteration);
- 
-    ----------
-    -- Line --
-    ----------
- 
-    function Line (Location : Source_Location) return Line_Number is
-      (Base_Location (Location).Line);
- 
-    --------------
-    -- Location --
-    --------------
- 
-    function Location
-      (Item : Message_And_Location) return Source_Location is
-      (Item.Location);
- 
-    ----------
-    -- Make --
-    ----------
- 
-    function Make
-      (File_Name          : String;
-       Line               : Line_Number;
-       Column             : Column_Number;
-       Iteration          : Iteration_Id;
-       Enclosing_Instance : Source_Location_Or_Null) return Source_Location
-    is
-    begin
-       return Result : Source_Location
-                         (Count => Enclosing_Instance.Count + 1)
-       do
-          Result.Locations (1) :=
-            (File_Name => To_Unbounded_String (File_Name),
-             Line      => Line,
-             Column    => Column,
-             Iteration => Iteration);
- 
-          Result.Locations (2 .. Result.Count) := Enclosing_Instance.Locations;
-       end return;
-    end Make;
- 
-    ------------------
-    -- Make_Msg_Loc --
-    ------------------
- 
-    function Make_Msg_Loc
-      (Msg : SA_Message;
-       Loc : Source_Location) return Message_And_Location
-    is
-    begin
-       return Message_And_Location'(Count    => Loc.Count,
-                                    Message  => Msg,
-                                    Location => Loc);
-    end Make_Msg_Loc;
- 
-    -------------
-    -- Message --
-    -------------
- 
-    function Message (Item : Message_And_Location) return SA_Message is
-      (Item.Message);
- 
-    package Field_Names is
- 
-       --  A Source_Location value is represented in JSON as a two or three
-       --  field value having fields Message_Kind (a string) and Locations (an
-       --  array); if the Message_Kind indicates a check kind, then a third
-       --  field is present: Check_Result (a string). The element type of the
-       --  Locations array is a value having at least 4 fields:
-       --  File_Name (a string), Line (an integer), Column (an integer),
-       --  and Iteration_Kind (an integer); if the Iteration_Kind field
-       --  has the value corresponding to the enumeration literal Numbered,
-       --  then two additional integer fields are present, Iteration_Number
-       --  and Iteration_Of_Total.
- 
-       Check_Result       : constant String := "Check_Result";
-       Column             : constant String := "Column";
-       File_Name          : constant String := "File_Name";
-       Iteration_Kind     : constant String := "Iteration_Kind";
-       Iteration_Number   : constant String := "Iteration_Number";
-       Iteration_Of_Total : constant String := "Iteration_Total";
-       Line               : constant String := "Line";
-       Locations          : constant String := "Locations";
-       Message_Kind       : constant String := "Message_Kind";
-       Messages           : constant String := "Messages";
-    end Field_Names;
- 
-    package body Writing is
-       File : File_Type;
-       --  The file to which output will be written (in Close, not in Write)
- 
-       Messages : JSON_Array;
-       --  Successive calls to Write append messages to this list
- 
-       -----------------------
-       -- Local subprograms --
-       -----------------------
- 
-       function To_JSON_Array
-         (Locations : Source_Locations) return JSON_Array;
-       --  Represent a Source_Locations array as a JSON_Array
- 
-       function To_JSON_Value
-         (Location : Simple_Source_Location) return JSON_Value;
-       --  Represent a Simple_Source_Location as a JSON_Value
- 
-       -----------
-       -- Close --
-       -----------
- 
-       procedure Close is
-          Value : constant JSON_Value := Create_Object;
- 
-       begin
-          --  only one field for now
-          Set_Field (Value, Field_Names.Messages, Messages);
-          Put_Line (File, Write (Item => Value, Compact => False));
-          Clear (Messages);
-          Close (File => File);
-       end Close;
- 
-       -------------
-       -- Is_Open --
-       -------------
- 
-       function Is_Open return Boolean is (Is_Open (File));
- 
-       ----------
-       -- Open --
-       ----------
- 
-       procedure Open (File_Name : String) is
-       begin
-          Create (File => File, Mode => Out_File, Name => File_Name);
-          Clear (Messages);
-       end Open;
- 
-       -------------------
-       -- To_JSON_Array --
-       -------------------
- 
-       function To_JSON_Array
-         (Locations : Source_Locations) return JSON_Array
-       is
-       begin
-          return Result : JSON_Array := Empty_Array do
-             for Location of Locations loop
-                Append (Result, To_JSON_Value (Location));
-             end loop;
-          end return;
-       end To_JSON_Array;
- 
-       -------------------
-       -- To_JSON_Value --
-       -------------------
- 
-       function To_JSON_Value
-         (Location : Simple_Source_Location) return JSON_Value
-       is
-       begin
-          return Result : constant JSON_Value := Create_Object do
-             Set_Field (Result, Field_Names.File_Name, Location.File_Name);
-             Set_Field (Result, Field_Names.Line, Integer (Location.Line));
-             Set_Field (Result, Field_Names.Column, Integer (Location.Column));
-             Set_Field (Result, Field_Names.Iteration_Kind, Integer'(
-                        Iteration_Kind'Pos (Location.Iteration.Kind)));
- 
-             if Location.Iteration.Kind = Numbered then
-                Set_Field (Result, Field_Names.Iteration_Number,
-                           Location.Iteration.Number);
-                Set_Field (Result, Field_Names.Iteration_Of_Total,
-                           Location.Iteration.Of_Total);
-             end if;
-          end return;
-       end To_JSON_Value;
- 
-       -----------
-       -- Write --
-       -----------
- 
-       procedure Write (Message : SA_Message; Location : Source_Location) is
-          Value : constant JSON_Value := Create_Object;
- 
-       begin
-          Set_Field (Value, Field_Names.Message_Kind, Message.Kind'Img);
- 
-          if Message.Kind in Check_Kind then
-             Set_Field
-               (Value, Field_Names.Check_Result, Message.Check_Result'Img);
-          end if;
- 
-          Set_Field
-            (Value, Field_Names.Locations, To_JSON_Array (Location.Locations));
-          Append (Messages, Value);
-       end Write;
-    end Writing;
- 
-    package body Reading is
-       File       : File_Type;
-       --  The file from which messages are read (in Open, not in Read)
- 
-       Messages   : JSON_Array;
-       --  The list of messages that were read in from File
- 
-       Next_Index : Positive;
-       --  The index of the message in Messages which will be returned by the
-       --  next call to Get.
- 
-       Parse_Full_Path : Boolean := True;
-       --  if the full path or only the base name of the file should be parsed
- 
-       -----------
-       -- Close --
-       -----------
- 
-       procedure Close is
-       begin
-          Clear (Messages);
-          Close (File);
-       end Close;
- 
-       ----------
-       -- Done --
-       ----------
- 
-       function Done return Boolean is (Next_Index > Length (Messages));
- 
-       ---------
-       -- Get --
-       ---------
- 
-       function Get return Message_And_Location is
-          Value : constant JSON_Value := Get (Messages, Next_Index);
- 
-          function Get_Message (Kind :  Message_Kind) return SA_Message;
-          --  Return SA_Message of given kind, filling in any non-discriminant
-          --  by reading from Value.
- 
-          function Make
-            (Location : Source_Location;
-             Message  : SA_Message) return Message_And_Location;
-          --  Constructor
- 
-          function To_Location
-            (Encoded   : JSON_Array;
-             Full_Path : Boolean) return Source_Location;
-          --  Decode a Source_Location from JSON_Array representation
- 
-          function To_Simple_Location
-            (Encoded   : JSON_Value;
-             Full_Path : Boolean) return Simple_Source_Location;
-          --  Decode a Simple_Source_Location from JSON_Value representation
- 
-          -----------------
-          -- Get_Message --
-          -----------------
- 
-          function Get_Message (Kind :  Message_Kind) return SA_Message is
-          begin
-             --  If we had AI12-0086, then we could use aggregates here (which
-             --  would be better than field-by-field assignment for the usual
-             --  maintainability reasons). But we don't, so we won't.
- 
-             return Result : SA_Message (Kind => Kind) do
-                if Kind in Check_Kind then
-                   Result.Check_Result :=
-                     SA_Check_Result'Value
-                       (Get (Value, Field_Names.Check_Result));
-                end if;
-             end return;
-          end Get_Message;
- 
-          ----------
-          -- Make --
-          ----------
- 
-          function Make
-            (Location : Source_Location;
-             Message  : SA_Message) return Message_And_Location
-          is
-            (Count => Location.Count, Message => Message, Location => Location);
- 
-          -----------------
-          -- To_Location --
-          -----------------
- 
-          function To_Location
-            (Encoded   : JSON_Array;
-             Full_Path : Boolean) return Source_Location is
-          begin
-             return Result : Source_Location (Count => Length (Encoded)) do
-                for I in Result.Locations'Range loop
-                   Result.Locations (I) :=
-                     To_Simple_Location (Get (Encoded, I), Full_Path);
-                end loop;
-             end return;
-          end To_Location;
- 
-          ------------------------
-          -- To_Simple_Location --
-          ------------------------
- 
-          function To_Simple_Location
-            (Encoded   : JSON_Value;
-             Full_Path : Boolean) return Simple_Source_Location
-          is
-             function Get_Iteration_Id
-               (Kind : Iteration_Kind) return Iteration_Id;
-             --  Given the discriminant for an Iteration_Id value, return the
-             --  entire value.
- 
-             ----------------------
-             -- Get_Iteration_Id --
-             ----------------------
- 
-             function Get_Iteration_Id (Kind : Iteration_Kind)
-               return Iteration_Id
-             is
-             begin
-                --  Initialize non-discriminant fields, if any
- 
-                return Result : Iteration_Id (Kind => Kind) do
-                   if Kind = Numbered then
-                      Result :=
-                        (Kind     => Numbered,
-                         Number   =>
-                           Get (Encoded, Field_Names.Iteration_Number),
-                         Of_Total =>
-                           Get (Encoded, Field_Names.Iteration_Of_Total));
-                   end if;
-                end return;
-             end Get_Iteration_Id;
- 
-             --  Local variables
- 
-             FN : constant Unbounded_String :=
-                    Get (Encoded, Field_Names.File_Name);
- 
-          --  Start of processing for To_Simple_Location
- 
-          begin
-             return
-               (File_Name =>
-                  (if Full_Path then
-                      FN
-                   else
-                      To_Unbounded_String (Simple_Name (To_String (FN)))),
-                Line      =>
-                  Line_Number (Integer'(Get (Encoded, Field_Names.Line))),
-                Column    =>
-                  Column_Number (Integer'(Get (Encoded, Field_Names.Column))),
-                Iteration =>
-                  Get_Iteration_Id
-                    (Kind => Iteration_Kind'Val (Integer'(Get
-                               (Encoded, Field_Names.Iteration_Kind)))));
-          end To_Simple_Location;
- 
-       --  Start of processing for Get
- 
-       begin
-          Next_Index := Next_Index + 1;
- 
-          return Make
-            (Message  =>
-               Get_Message
-                 (Message_Kind'Value (Get (Value, Field_Names.Message_Kind))),
-             Location =>
-               To_Location
-                 (Get (Value, Field_Names.Locations), Parse_Full_Path));
-       end Get;
- 
-       -------------
-       -- Is_Open --
-       -------------
- 
-       function Is_Open return Boolean is (Is_Open (File));
- 
-       ----------
-       -- Open --
-       ----------
- 
-       procedure Open (File_Name : String; Full_Path : Boolean := True) is
-          File_Text : Unbounded_String := Null_Unbounded_String;
- 
-       begin
-          Parse_Full_Path := Full_Path;
-          Open (File => File, Mode => In_File, Name => File_Name);
- 
-          --  File read here, not in Get, but that's an implementation detail
- 
-          while not End_Of_File (File) loop
-             Append (File_Text, Get_Line (File));
-          end loop;
- 
-          Messages   := Get (Read (File_Text), Field_Names.Messages);
-          Next_Index := 1;
-       end Open;
-    end Reading;
- 
- end SA_Messages;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sa_messages.ads gcc-13.1.0/gcc/ada/sa_messages.ads
*** gcc-12.2.0/gcc/ada/sa_messages.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sa_messages.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,267 ****
- ------------------------------------------------------------------------------
- --                       C O D E P E E R / S P A R K                        --
- --                                                                          --
- --                     Copyright (C) 2015-2022, AdaCore                     --
- --                                                                          --
- -- This is free software;  you can redistribute it  and/or modify it  under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  This software is distributed in the hope  that it will be useful, --
- -- but WITHOUT ANY WARRANTY;  without even the implied warranty of MERCHAN- --
- -- TABILITY 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  distributed  with  this  software;   see  file --
- -- COPYING3.  If not, go to http://www.gnu.org/licenses for a complete copy --
- -- of the license.                                                          --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- 
- with Ada.Containers;        use Ada.Containers;
- with Ada.Strings.Unbounded; use Ada.Strings.Unbounded;
- 
- package SA_Messages is
- 
-    --  This package can be used for reading/writing a file containing a
-    --  sequence of static anaysis results. Each element can describe a runtime
-    --  check whose outcome has been statically determined, or it might be a
-    --  warning or diagnostic message. It is expected that typically CodePeer
-    --  will do the writing and SPARK will do the reading; this will allow SPARK
-    --  to get the benefit of CodePeer's analysis.
-    --
-    --  Each item is represented as a pair consisting of a message and an
-    --  associated source location. Source locations may refer to a location
-    --  within the expansion of an instance of a generic; this is represented
-    --  by combining the corresponding location within the generic with the
-    --  location of the instance (repeated if the instance itself occurs within
-    --  a generic). In addition, the type Iteration_Id is intended for use in
-    --  distinguishing messages which refer to a specific iteration of a loop
-    --  (this case can arise, for example, if CodePeer chooses to unroll a
-    --  for-loop). This data structure is only general enough to support the
-    --  kinds of unrolling that are currently planned for CodePeer. For
-    --  example, an Iteration_Id can only identify an iteration of the nearest
-    --  enclosing loop of the associated File/Line/Column source location.
-    --  This is not a problem because CodePeer doesn't unroll loops which
-    --  contain other loops.
- 
-    type Message_Kind is (
- 
-       --  Check kinds
- 
-       Array_Index_Check,
-       Divide_By_Zero_Check,
-       Tag_Check,
-       Discriminant_Check,
-       Range_Check,
-       Overflow_Check,
-       Assertion_Check,
- 
-       --  Warning kinds
- 
-       Suspicious_Range_Precondition_Warning,
-       Suspicious_First_Precondition_Warning,
-       Suspicious_Input_Warning,
-       Suspicious_Constant_Operation_Warning,
-       Unread_In_Out_Parameter_Warning,
-       Unassigned_In_Out_Parameter_Warning,
-       Non_Analyzed_Call_Warning,
-       Procedure_Does_Not_Return_Warning,
-       Check_Fails_On_Every_Call_Warning,
-       Unknown_Call_Warning,
-       Dead_Store_Warning,
-       Dead_Outparam_Store_Warning,
-       Potentially_Dead_Store_Warning,
-       Same_Value_Dead_Store_Warning,
-       Dead_Block_Warning,
-       Infinite_Loop_Warning,
-       Dead_Edge_Warning,
-       Plain_Dead_Edge_Warning,
-       True_Dead_Edge_Warning,
-       False_Dead_Edge_Warning,
-       True_Condition_Dead_Edge_Warning,
-       False_Condition_Dead_Edge_Warning,
-       Unrepeatable_While_Loop_Warning,
-       Dead_Block_Continuation_Warning,
-       Local_Lock_Of_Global_Object_Warning,
-       Analyzed_Module_Warning,
-       Non_Analyzed_Module_Warning,
-       Non_Analyzed_Procedure_Warning,
-       Incompletely_Analyzed_Procedure_Warning);
- 
-    --  Assertion_Check includes checks for user-defined PPCs (both specific
-    --  and class-wide), Assert pragma checks, subtype predicate checks,
-    --  type invariant checks (specific and class-wide), and checks for
-    --  implementation-defined assertions such as Assert_And_Cut, Assume,
-    --  Contract_Cases, Default_Initial_Condition, Initial_Condition,
-    --  Loop_Invariant, Loop_Variant, Refined_Post, and Subprogram_Variant.
-    --
-    --  It might be nice to distinguish these different kinds of assertions
-    --  as is done in SPARK's VC_Kind enumeration type, but any distinction
-    --  which isn't already present in CP's BE_Message_Subkind enumeration type
-    --  would require more work on the CP side.
-    --
-    --  The warning kinds are pretty much a copy of the set of
-    --  Be_Message_Subkind values for which CP's Is_Warning predicate returns
-    --  True; see descriptive comment for each in CP's message_kinds.ads .
- 
-    subtype Check_Kind is Message_Kind
-      range Array_Index_Check .. Assertion_Check;
-    subtype Warning_Kind is Message_Kind
-      range Message_Kind'Succ (Check_Kind'Last) .. Message_Kind'Last;
- 
-    --  Possible outcomes of the static analysis of a runtime check
-    --
-    --  Not_Statically_Known_With_Low_Severity could be used instead of of
-    --  Not_Statically_Known if there is some reason to believe that (although
-    --  the tool couldn't prove it) the check is likely to always pass (in CP
-    --  terms, if the corresponding CP message has severity Low as opposed to
-    --  Medium). It's not clear yet whether SPARK will care about this
-    --  distinction.
- 
-    type SA_Check_Result is
-      (Statically_Known_Success,
-       Not_Statically_Known_With_Low_Severity,
-       Not_Statically_Known,
-       Statically_Known_Failure);
- 
-    type SA_Message (Kind : Message_Kind := Message_Kind'Last) is record
-       case Kind is
-          when Check_Kind =>
-             Check_Result : SA_Check_Result;
- 
-          when Warning_Kind =>
-             null;
-       end case;
-    end record;
- 
-    type Source_Location_Or_Null (<>) is private;
-    Null_Location : constant Source_Location_Or_Null;
-    subtype Source_Location is Source_Location_Or_Null with
-      Dynamic_Predicate => Source_Location /= Null_Location;
- 
-    type Line_Number is new Positive;
-    type Column_Number is new Positive;
- 
-    function File_Name (Location : Source_Location) return String;
-    function File_Name (Location : Source_Location) return Unbounded_String;
-    function Line      (Location : Source_Location) return Line_Number;
-    function Column    (Location : Source_Location) return Column_Number;
- 
-    type Iteration_Kind is (None, Initial, Subsequent, Numbered);
-    --  None is for the usual no-unrolling case.
-    --  Initial and Subsequent are for use in the case where only the first
-    --  iteration of a loop (or some part thereof, such as the termination
-    --  test of a while-loop) is unrolled.
-    --  Numbered is for use in the case where a for-loop with a statically
-    --  known number of iterations is fully unrolled.
- 
-    subtype Iteration_Number is Integer range 1 .. 255;
-    subtype Iteration_Total  is Integer range 2 .. 255;
- 
-    type Iteration_Id (Kind : Iteration_Kind := None) is record
-       case Kind is
-          when Numbered =>
-             Number   : Iteration_Number;
-             Of_Total : Iteration_Total;
-          when others =>
-             null;
-       end case;
-    end record;
- 
-    function Iteration (Location : Source_Location) return Iteration_Id;
- 
-    function Enclosing_Instance
-      (Location : Source_Location) return Source_Location_Or_Null;
-    --  For a source location occurring within the expansion of an instance of a
-    --  generic unit, the Line, Column, and File_Name selectors will indicate a
-    --  location within the generic; the Enclosing_Instance selector yields the
-    --  location of the declaration of the instance.
- 
-    function Make
-      (File_Name : String;
-       Line      : Line_Number;
-       Column    : Column_Number;
-       Iteration : Iteration_Id;
-       Enclosing_Instance : Source_Location_Or_Null) return Source_Location;
-    --  Constructor
- 
-    type Message_And_Location (<>) is private;
- 
-    function Location (Item : Message_And_Location) return Source_Location;
-    function Message (Item : Message_And_Location) return SA_Message;
- 
-    function Make_Msg_Loc
-      (Msg : SA_Message;
-       Loc : Source_Location) return Message_And_Location;
-    --  Selectors
- 
-    function "<" (Left, Right : Message_And_Location) return Boolean;
-    function Hash (Key : Message_And_Location) return Hash_Type;
-    --  Actuals for container instances
- 
-    File_Extension : constant String; -- ".json" (but could change in future)
-    --  Clients may wish to use File_Extension in constructing
-    --  File_Name parameters for calls to Open.
- 
-    package Writing is
-       function Is_Open return Boolean;
- 
-       procedure Open (File_Name : String) with
-         Precondition  => not Is_Open,
-         Postcondition => Is_Open;
-       --  Behaves like Text_IO.Create with respect to error cases
- 
-       procedure Write (Message : SA_Message; Location : Source_Location);
- 
-       procedure Close with
-         Precondition  => Is_Open,
-         Postcondition => not Is_Open;
-       --  Behaves like Text_IO.Close with respect to error cases
-    end Writing;
- 
-    package Reading is
-       function Is_Open return Boolean;
- 
-       procedure Open (File_Name : String; Full_Path : Boolean := True) with
-         Precondition  => not Is_Open,
-         Postcondition => Is_Open;
-       --  Behaves like Text_IO.Open with respect to error cases
- 
-       function Done return Boolean with
-         Precondition => Is_Open;
- 
-       function Get return Message_And_Location with
-         Precondition => not Done;
- 
-       procedure Close with
-         Precondition  => Is_Open,
-         Postcondition => not Is_Open;
-       --  Behaves like Text_IO.Close with respect to error cases
-    end Reading;
- 
- private
-    type Simple_Source_Location is record
-       File_Name : Unbounded_String := Null_Unbounded_String;
-       Line      : Line_Number      := Line_Number'Last;
-       Column    : Column_Number    := Column_Number'Last;
-       Iteration : Iteration_Id     := (Kind => None);
-    end record;
- 
-    type Source_Locations is
-      array (Natural range <>) of Simple_Source_Location;
- 
-    type Source_Location_Or_Null (Count : Natural) is record
-       Locations : Source_Locations (1 .. Count);
-    end record;
- 
-    Null_Location : constant Source_Location_Or_Null :=
-                      (Count => 0, Locations => (others => <>));
- 
-    type Message_And_Location (Count : Positive) is record
-       Message  : SA_Message;
-       Location : Source_Location (Count => Count);
-    end record;
- 
-    File_Extension : constant String := ".json";
- end SA_Messages;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/scans.adb gcc-13.1.0/gcc/ada/scans.adb
*** gcc-12.2.0/gcc/ada/scans.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scans.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/scans.ads gcc-13.1.0/gcc/ada/scans.ads
*** gcc-12.2.0/gcc/ada/scans.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scans.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Scans is
*** 84,95 ****
        --  Ada 2022 introduces square brackets as delimiters for array and
        --  container aggregates.
  
!       Tok_Raise,           -- RAISE
  
        Tok_Dot,             -- .            Namext
        Tok_Apostrophe,      -- '            Namext
  
!       Tok_Left_Bracket,    -- [            Namest
        Tok_Left_Paren,      -- (            Namext, Consk
  
        Tok_Delta,           -- DELTA        Atkwd, Sterm, Consk
--- 84,102 ----
        --  Ada 2022 introduces square brackets as delimiters for array and
        --  container aggregates.
  
!       --  The left delimiter token of interpolated strings, and tokens { and }
!       --  of interpolated expressions are currently placed in no category since
!       --  they don't fit well in the existing categories.
! 
!       Tok_Left_Interpolated_String, -- f"
!       Tok_Left_Curly_Bracket,       -- {
!       Tok_Raise,                    -- RAISE
!       Tok_Right_Curly_Bracket,      -- }
  
        Tok_Dot,             -- .            Namext
        Tok_Apostrophe,      -- '            Namext
  
!       Tok_Left_Bracket,    -- [            Namext
        Tok_Left_Paren,      -- (            Namext, Consk
  
        Tok_Delta,           -- DELTA        Atkwd, Sterm, Consk
*************** package Scans is
*** 210,224 ****
  
        Tok_End_Of_Line,
        --  Represents an end of line. Not used during normal compilation scans
!       --  where end of line is ignored. Active for preprocessor scanning and
!       --  also when scanning project files (where it is needed because of ???)
  
        Tok_Special,
!       --  AI12-0125-03 : target name as abbreviation for LHS
! 
!       --  Otherwise used only in preprocessor scanning (to represent one of
!       --  the characters '#', '$', '?', '@', '`', '\', '^', '~', or '_'. The
!       --  character value itself is stored in Scans.Special_Character.
  
        No_Token);
        --  No_Token is used for initializing Token values to indicate that
--- 217,227 ----
  
        Tok_End_Of_Line,
        --  Represents an end of line. Not used during normal compilation scans
!       --  where end of line is ignored. Active for preprocessor scanning.
  
        Tok_Special,
!       --  Special character used by the preprocessor. The character itself is
!       --  stored in Special_Character below.
  
        No_Token);
        --  No_Token is used for initializing Token values to indicate that
*************** package Scans is
*** 362,399 ****
     --  Note: these variables can only be referenced during the parsing of a
     --  file. Reference to any of them from Sem or the expander is wrong.
  
!    --  These variables are initialized as required by Scn.Initialize_Scanner,
!    --  and should not be referenced before such a call. However, there are
!    --  situations in which these variables are saved and restored, and this
!    --  may happen before the first Initialize_Scanner call, resulting in the
!    --  assignment of invalid values. To avoid this, and allow building with
!    --  the -gnatVa switch, we initialize some variables to known valid values.
  
!    Scan_Ptr : Source_Ptr := No_Location; -- init for -gnatVa
     --  Current scan pointer location. After a call to Scan, this points
     --  just past the end of the token just scanned.
  
!    Token : Token_Type := No_Token; -- init for -gnatVa
     --  Type of current token
  
!    Token_Ptr : Source_Ptr := No_Location; -- init for -gnatVa
     --  Pointer to first character of current token
  
!    Current_Line_Start : Source_Ptr := No_Location; -- init for -gnatVa
     --  Pointer to first character of line containing current token
  
!    Start_Column : Column_Number := No_Column_Number; -- init for -gnatVa
     --  Starting column number (zero origin) of the first non-blank character
     --  on the line containing the current token. This is used for error
     --  recovery circuits which depend on looking at the column line up.
  
!    Type_Token_Location : Source_Ptr := No_Location; -- init for -gnatVa
     --  Within a type declaration, gives the location of the TYPE keyword that
     --  opened the type declaration. Used in checking the end column of a record
     --  declaration, which can line up either with the TYPE keyword, or with the
     --  start of the line containing the RECORD keyword.
  
!    Checksum : Word := 0; -- init for -gnatVa
     --  Used to accumulate a CRC representing the tokens in the source
     --  file being compiled. This CRC includes only program tokens, and
     --  excludes comments.
--- 365,399 ----
     --  Note: these variables can only be referenced during the parsing of a
     --  file. Reference to any of them from Sem or the expander is wrong.
  
!    --  These variables are initialized by Scn.Initialize_Scanner, and should
!    --  not be referenced before such a call, except for saving and restoring
!    --  them.
  
!    Scan_Ptr : Source_Ptr := No_Location;
     --  Current scan pointer location. After a call to Scan, this points
     --  just past the end of the token just scanned.
  
!    Token : Token_Type := No_Token;
     --  Type of current token
  
!    Token_Ptr : Source_Ptr := No_Location;
     --  Pointer to first character of current token
  
!    Current_Line_Start : Source_Ptr := No_Location;
     --  Pointer to first character of line containing current token
  
!    Start_Column : Column_Number := No_Column_Number;
     --  Starting column number (zero origin) of the first non-blank character
     --  on the line containing the current token. This is used for error
     --  recovery circuits which depend on looking at the column line up.
  
!    Type_Token_Location : Source_Ptr := No_Location;
     --  Within a type declaration, gives the location of the TYPE keyword that
     --  opened the type declaration. Used in checking the end column of a record
     --  declaration, which can line up either with the TYPE keyword, or with the
     --  start of the line containing the RECORD keyword.
  
!    Checksum : Word := 0;
     --  Used to accumulate a CRC representing the tokens in the source
     --  file being compiled. This CRC includes only program tokens, and
     --  excludes comments.
*************** package Scans is
*** 403,409 ****
     --  limited view of a package, i.e. visible type names and related
     --  tagged indicators.
  
!    First_Non_Blank_Location : Source_Ptr := No_Location; -- init for -gnatVa
     --  Location of first non-blank character on the line containing the
     --  current token (i.e. the location of the character whose column number
     --  is stored in Start_Column).
--- 403,409 ----
     --  limited view of a package, i.e. visible type names and related
     --  tagged indicators.
  
!    First_Non_Blank_Location : Source_Ptr := No_Location;
     --  Location of first non-blank character on the line containing the
     --  current token (i.e. the location of the character whose column number
     --  is stored in Start_Column).
*************** package Scans is
*** 466,477 ****
     --  character found (i.e. a character that does not fit in Character or
     --  Wide_Character).
  
!    Special_Character : Character;
!    --  AI12-0125-03 : '@' as target name is handled elsewhere.
!    --  Valid only when Token = Tok_Special. Returns one of the characters
!    --  '#', '$', '?', '`', '\', '^', '~', or '_'.
!    --
!    --  Why only this set? What about wide characters???
  
     Comment_Id : Name_Id := No_Name;
     --  Valid only when Token = Tok_Comment. Store the string that follows
--- 466,474 ----
     --  character found (i.e. a character that does not fit in Character or
     --  Wide_Character).
  
!    subtype Special_Preprocessor_Character is Character with
!      Predicate => Special_Preprocessor_Character in '#' | '$';
!    Special_Character : Special_Preprocessor_Character;
  
     Comment_Id : Name_Id := No_Name;
     --  Valid only when Token = Tok_Comment. Store the string that follows
*************** package Scans is
*** 485,490 ****
--- 482,490 ----
     --  or aspect. Used to allow/require nonstandard style rules for =>+ with
     --  -gnatyt.
  
+    Inside_Interpolated_String_Literal : Boolean := False;
+    --  True while parsing an interpolated string literal
+ 
     Inside_If_Expression : Nat := 0;
     --  This is a counter that is set non-zero while scanning out an if
     --  expression (incremented on entry, decremented on exit). It is used to
diff -Nrcpad gcc-12.2.0/gcc/ada/scil_ll.adb gcc-13.1.0/gcc/ada/scil_ll.adb
*** gcc-12.2.0/gcc/ada/scil_ll.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scil_ll.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/scil_ll.ads gcc-13.1.0/gcc/ada/scil_ll.ads
*** gcc-12.2.0/gcc/ada/scil_ll.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scil_ll.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2010-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/scn.adb gcc-13.1.0/gcc/ada/scn.adb
*** gcc-12.2.0/gcc/ada/scn.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scn.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 26,32 ****
  with Atree;          use Atree;
  with Csets;          use Csets;
  with Namet;          use Namet;
- with Opt;            use Opt;
  with Restrict;       use Restrict;
  with Rident;         use Rident;
  with Scans;          use Scans;
--- 26,31 ----
*************** with Sinfo;          use Sinfo;
*** 34,39 ****
--- 33,39 ----
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinput;         use Sinput;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Scn is
  
diff -Nrcpad gcc-12.2.0/gcc/ada/scn.ads gcc-13.1.0/gcc/ada/scn.ads
*** gcc-12.2.0/gcc/ada/scn.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scn.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 29,35 ****
  with Casing; use Casing;
  with Errout; use Errout;
  with Scng;
! with Style;  --  use Style;
  with Types;  use Types;
  
  package Scn is
--- 29,35 ----
  with Casing; use Casing;
  with Errout; use Errout;
  with Scng;
! with Style;
  with Types;  use Types;
  
  package Scn is
*************** package Scn is
*** 75,83 ****
        Style        => Style.Style_Inst);
  
     procedure Scan renames Scanner.Scan;
-    --  Scan scans out the next token, and advances the scan state accordingly
-    --  (see package Scans for details). If the scan encounters an illegal
-    --  token, then an error message is issued pointing to the bad character,
-    --  and Scan returns a reasonable substitute token of some kind.
  
  end Scn;
--- 75,79 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/scng.adb gcc-13.1.0/gcc/ada/scng.adb
*** gcc-12.2.0/gcc/ada/scng.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scng.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Atree;    use Atree;
*** 27,35 ****
  with Csets;    use Csets;
  with Errout;   use Errout;
  with Hostparm; use Hostparm;
  with Namet;    use Namet;
  with Opt;      use Opt;
- with Scans;    use Scans;
  with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stringt;  use Stringt;
--- 27,35 ----
  with Csets;    use Csets;
  with Errout;   use Errout;
  with Hostparm; use Hostparm;
+ with Lib;      use Lib;
  with Namet;    use Namet;
  with Opt;      use Opt;
  with Sinput;   use Sinput;
  with Snames;   use Snames;
  with Stringt;  use Stringt;
*************** package body Scng is
*** 53,61 ****
     Special_Characters : array (Character) of Boolean := (others => False);
     --  For characters that are Special token, the value is True
  
-    Comment_Is_Token : Boolean := False;
-    --  True if comments are tokens
- 
     End_Of_Line_Is_Token : Boolean := False;
     --  True if End_Of_Line is a token
  
--- 53,58 ----
*************** package body Scng is
*** 130,140 ****
  
     procedure Check_End_Of_Line is
        Len : constant Int :=
!               Int (Scan_Ptr) -
!                 Int (Current_Line_Start) -
!                   Wide_Char_Byte_Count;
! 
!    --  Start of processing for Check_End_Of_Line
  
     begin
        if Style_Check then
--- 127,133 ----
  
     procedure Check_End_Of_Line is
        Len : constant Int :=
!               Int (Scan_Ptr - Current_Line_Start) - Wide_Char_Byte_Count;
  
     begin
        if Style_Check then
*************** package body Scng is
*** 263,271 ****
  
     procedure Scan is
  
-       Start_Of_Comment : Source_Ptr;
-       --  Record start of comment position
- 
        Underline_Found : Boolean;
        --  During scanning of an identifier, set to True if last character
        --  scanned was an underline or other punctuation character. This
--- 256,261 ----
*************** package body Scng is
*** 772,777 ****
--- 762,776 ----
              if UI_Scale = 0 then
                 Int_Literal_Value := UI_Num_Value;
  
+             --  When the exponent is large, computing is expected to take a
+             --  rather unreasonable time. We generate an error so that it
+             --  does not appear that the compiler has gotten stuck. Such a
+             --  large exponent is most likely a typo anyway.
+ 
+             elsif UI_Scale >= 800_000 then
+                Error_Msg_SC ("exponent too large");
+                Int_Literal_Value := No_Uint;
+ 
              --  Avoid doing possibly expensive calculations in cases like
              --  parsing 163E800_000# when semantics will not be done anyway.
              --  This is especially useful when parsing garbled input.
*************** package body Scng is
*** 1078,1085 ****
  
           String_Start := Scan_Ptr;
  
!          Delimiter := Source (Scan_Ptr);
!          Accumulate_Checksum (Delimiter);
  
           Start_String;
           Wide_Character_Found      := False;
--- 1077,1096 ----
  
           String_Start := Scan_Ptr;
  
!          --  Continuation of interpolated string literal
! 
!          if Inside_Interpolated_String_Literal
!            and then Prev_Token = Tok_Right_Curly_Bracket
!          then
!             Scan_Ptr := Scan_Ptr - 1;
!             Delimiter := '"';
! 
!          --  Common case
! 
!          else
!             Delimiter := Source (Scan_Ptr);
!             Accumulate_Checksum (Delimiter);
!          end if;
  
           Start_String;
           Wide_Character_Found      := False;
*************** package body Scng is
*** 1095,1100 ****
--- 1106,1120 ----
                 Accumulate_Checksum (C);
                 Scan_Ptr := Scan_Ptr + 1;
                 exit when Source (Scan_Ptr) /= Delimiter;
+ 
+                --  Unlike normal string literals, doubled delimiter has no
+                --  special significance in interpolated string literals.
+ 
+                if Inside_Interpolated_String_Literal then
+                   Error_Msg_S
+                     ("double quotations not allowed in interpolated string");
+                end if;
+ 
                 Code := Get_Char_Code (C);
                 Accumulate_Checksum (C);
                 Scan_Ptr := Scan_Ptr + 1;
*************** package body Scng is
*** 1106,1111 ****
--- 1126,1165 ----
                    Code := Get_Char_Code (C);
                    Scan_Ptr := Scan_Ptr + 1;
  
+                --  Found interpolated expression
+ 
+                elsif Inside_Interpolated_String_Literal
+                  and then C = '{'
+                then
+                   Accumulate_Checksum (C);
+                   exit;
+ 
+                --  Escaped character in interpolated string literal
+ 
+                elsif Inside_Interpolated_String_Literal
+                  and then C = '\'
+                then
+                   Accumulate_Checksum (C);
+                   Scan_Ptr := Scan_Ptr + 1;
+                   C := Source (Scan_Ptr);
+                   Accumulate_Checksum (C);
+                   Scan_Ptr := Scan_Ptr + 1;
+ 
+                   case C is
+                      when 'a' => Code := Get_Char_Code (ASCII.BEL);
+                      when 'b' => Code := Get_Char_Code (ASCII.BS);
+                      when 'f' => Code := Get_Char_Code (ASCII.FF);
+                      when 'n' => Code := Get_Char_Code (ASCII.LF);
+                      when 'r' => Code := Get_Char_Code (ASCII.CR);
+                      when 't' => Code := Get_Char_Code (ASCII.HT);
+                      when 'v' => Code := Get_Char_Code (ASCII.VT);
+                      when '0' => Code := Get_Char_Code (ASCII.NUL);
+                      when '\' | '"' | '{' | '}'
+                               => Code := Get_Char_Code (C);
+                      when others =>
+                         Error_Msg_S ("illegal escaped character");
+                   end case;
+ 
                 elsif Start_Of_Wide_Character then
                    Wptr := Scan_Ptr;
                    Scan_Wide (Source, Scan_Ptr, Code, Err);
*************** package body Scng is
*** 1235,1240 ****
--- 1289,1317 ----
        Prev_Token_Ptr := Token_Ptr;
        Token_Name := Error_Name;
  
+       if Inside_Interpolated_String_Literal
+         and then Prev_Token = Tok_Right_Curly_Bracket
+       then
+          --  Consecutive interpolated expressions
+ 
+          if Source (Scan_Ptr) = '{' then
+             null;
+ 
+          --  Ending delimiter placed immediately after interpolated expression
+ 
+          elsif Source (Scan_Ptr) = '"' then
+             Scan_Ptr := Scan_Ptr + 1;
+             Prev_Token := Tok_String_Literal;
+ 
+          --  String literal placed after interpolated expression
+ 
+          else
+             Slit;
+             Post_Scan;
+             return;
+          end if;
+       end if;
+ 
        --  The following loop runs more than once only if a format effector
        --  (tab, vertical tab, form  feed, line feed, carriage return) is
        --  encountered and skipped, or some error situation, such as an
*************** package body Scng is
*** 1416,1422 ****
              Token := Tok_Left_Paren;
  
              if Style_Check then
!                Style.Check_Left_Paren;
              end if;
  
              return;
--- 1493,1499 ----
              Token := Tok_Left_Paren;
  
              if Style_Check then
!                Style.Check_Left_Paren_Square_Bracket;
              end if;
  
              return;
*************** package body Scng is
*** 1432,1437 ****
--- 1509,1519 ----
              if Ada_Version >= Ada_2022 then
                 Scan_Ptr := Scan_Ptr + 1;
                 Token := Tok_Left_Bracket;
+ 
+                if Style_Check then
+                   Style.Check_Left_Paren_Square_Bracket;
+                end if;
+ 
                 return;
  
              elsif Source (Scan_Ptr + 1) = '"' then
*************** package body Scng is
*** 1444,1455 ****
                 return;
              end if;
  
!          --  Left brace
  
           when '{' =>
!             Error_Msg_S ("illegal character, replaced by ""(""");
!             Scan_Ptr := Scan_Ptr + 1;
!             Token := Tok_Left_Paren;
              return;
  
           --  Comma
--- 1526,1545 ----
                 return;
              end if;
  
!          --  Left curly bracket, treated as right paren but proper delimiter
!          --  of interpolated string literals when all extensions are allowed.
  
           when '{' =>
!             if All_Extensions_Allowed then
!                Scan_Ptr := Scan_Ptr + 1;
!                Token := Tok_Left_Curly_Bracket;
! 
!             else
!                Error_Msg_S ("illegal character, replaced by ""(""");
!                Scan_Ptr := Scan_Ptr + 1;
!                Token := Tok_Left_Paren;
!             end if;
! 
              return;
  
           --  Comma
*************** package body Scng is
*** 1599,1608 ****
                    return;
                 end if;
  
-                --  Otherwise scan out the comment
- 
-                Start_Of_Comment := Scan_Ptr;
- 
                 --  Loop to scan comment (this loop runs more than once only if
                 --  a horizontal tab or other non-graphic character is scanned)
  
--- 1689,1694 ----
*************** package body Scng is
*** 1701,1718 ****
                    end if;
                 end loop;
  
!                --  Note that, except when comments are tokens, we do NOT
!                --  execute a return here, instead we fall through to reexecute
!                --  the scan loop to look for a token.
! 
!                if Comment_Is_Token then
!                   Name_Len := Integer (Scan_Ptr - Start_Of_Comment);
!                   Name_Buffer (1 .. Name_Len) :=
!                     String (Source (Start_Of_Comment .. Scan_Ptr - 1));
!                   Comment_Id := Name_Find;
!                   Token := Tok_Comment;
!                   return;
!                end if;
              end if;
           end Minus_Case;
  
--- 1787,1794 ----
                    end if;
                 end loop;
  
!                --  Note that we do not return here; instead we fall through to
!                --  reexecute the scan loop to look for a token.
              end if;
           end Minus_Case;
  
*************** package body Scng is
*** 1757,1771 ****
              --  In Ada 2022, a target name (i.e. @) is a valid prefix of an
              --  attribute, and functions like a name.
  
!             if Prev_Token = Tok_All
!               or else Prev_Token = Tok_At_Sign
!               or else Prev_Token = Tok_Delta
!               or else Prev_Token = Tok_Digits
!               or else Prev_Token = Tok_Identifier
!               or else Prev_Token = Tok_Project
!               or else Prev_Token = Tok_Right_Paren
!               or else Prev_Token = Tok_Right_Bracket
!               or else Prev_Token in Token_Class_Literal
              then
                 Token := Tok_Apostrophe;
  
--- 1833,1841 ----
              --  In Ada 2022, a target name (i.e. @) is a valid prefix of an
              --  attribute, and functions like a name.
  
!             if Prev_Token in Tok_All | Tok_At_Sign | Tok_Delta | Tok_Digits |
!               Tok_Identifier | Tok_Project | Tok_Right_Paren |
!               Tok_Right_Bracket | Token_Class_Literal
              then
                 Token := Tok_Apostrophe;
  
*************** package body Scng is
*** 1879,1885 ****
           --  Right bracket or right brace, treated as right paren but proper
           --  aggregate delimiter in Ada 2022.
  
!          when ']' | '}' =>
              if Ada_Version >= Ada_2022 then
                 Token := Tok_Right_Bracket;
  
--- 1949,1955 ----
           --  Right bracket or right brace, treated as right paren but proper
           --  aggregate delimiter in Ada 2022.
  
!          when ']' =>
              if Ada_Version >= Ada_2022 then
                 Token := Tok_Right_Bracket;
  
*************** package body Scng is
*** 1891,1896 ****
--- 1961,1981 ----
              Scan_Ptr := Scan_Ptr + 1;
              return;
  
+          --  Right curly bracket, treated as right paren but proper delimiter
+          --  of interpolated string literals when all extensions are allowed.
+ 
+          when '}' =>
+             if All_Extensions_Allowed then
+                Token := Tok_Right_Curly_Bracket;
+ 
+             else
+                Error_Msg_S ("illegal character, replaced by "")""");
+                Token := Tok_Right_Paren;
+             end if;
+ 
+             Scan_Ptr := Scan_Ptr + 1;
+             return;
+ 
           --  Slash (can be division operator or first character of not equal)
  
           when '/' =>
*************** package body Scng is
*** 2040,2045 ****
--- 2125,2140 ----
           --  Lower case letters
  
           when 'a' .. 'z' =>
+             if All_Extensions_Allowed
+               and then Source (Scan_Ptr) = 'f'
+               and then Source (Scan_Ptr + 1) = '"'
+             then
+                Scan_Ptr := Scan_Ptr + 1;
+                Accumulate_Checksum (Source (Scan_Ptr));
+                Token := Tok_Left_Interpolated_String;
+                return;
+             end if;
+ 
              Name_Len := 1;
              Underline_Found := False;
              Name_Buffer (1) := Source (Scan_Ptr);
*************** package body Scng is
*** 2050,2055 ****
--- 2145,2161 ----
           --  Upper case letters
  
           when 'A' .. 'Z' =>
+             if All_Extensions_Allowed
+               and then Source (Scan_Ptr) = 'F'
+               and then Source (Scan_Ptr + 1) = '"'
+             then
+                Error_Msg_S
+                  ("delimiter of interpolated string must be in lowercase");
+                Scan_Ptr := Scan_Ptr + 1;
+                Token := Tok_Left_Interpolated_String;
+                return;
+             end if;
+ 
              Token_Contains_Uppercase := True;
              Name_Len := 1;
              Underline_Found := False;
*************** package body Scng is
*** 2062,2076 ****
           --  Underline character
  
           when '_' =>
!             if Special_Characters ('_') then
!                Token_Ptr := Scan_Ptr;
!                Scan_Ptr := Scan_Ptr + 1;
!                Token := Tok_Special;
!                Special_Character := '_';
!                return;
              end if;
  
-             Error_Msg_S ("identifier cannot start with underline");
              Name_Len := 1;
              Name_Buffer (1) := '_';
              Scan_Ptr := Scan_Ptr + 1;
--- 2168,2182 ----
           --  Underline character
  
           when '_' =>
!             --  Identifiers with leading underscores are not allowed in Ada.
!             --  However, we allow them in the run-time library, so we can
!             --  create names that are hidden from normal Ada code. For an
!             --  example, search for "Name_uNext", which is "_Next".
! 
!             if not In_Internal_Unit (Scan_Ptr) then
!                Error_Msg_S ("identifier cannot start with underline");
              end if;
  
              Name_Len := 1;
              Name_Buffer (1) := '_';
              Scan_Ptr := Scan_Ptr + 1;
*************** package body Scng is
*** 2122,2163 ****
                 Error_Illegal_Character;
              end if;
  
!          --  Invalid control characters
  
!          when ACK
!             | ASCII.SO
!             | BEL
!             | BS
!             | CAN
!             | DC1
!             | DC2
!             | DC3
!             | DC4
!             | DEL
!             | DLE
!             | EM
!             | ENQ
!             | EOT
!             | ETB
!             | ETX
!             | FS
!             | GS
!             | NAK
!             | NUL
!             | RS
!             | SI
!             | SOH
!             | STX
!             | SYN
!             | US
           =>
              Error_Illegal_Character;
  
!          --  Invalid graphic characters
!          --  Note that '@' is handled elsewhere, because following AI12-125
!          --  it denotes the target_name of an assignment.
  
!          when '#' | '$' | '?' | '`' | '\' | '^' | '~' =>
  
              --  If Set_Special_Character has been called for this character,
              --  set Scans.Special_Character and return a Special token.
--- 2228,2246 ----
                 Error_Illegal_Character;
              end if;
  
!          --  Illegal characters
  
!          when ACK | ASCII.SO | BEL | BS | CAN | DC1 | DC2 | DC3 | DC4 | DEL
!            | DLE | EM | ENQ | EOT | ETB | ETX | FS | GS | NAK | NUL | RS | SI
!            | SOH | STX | SYN | US
!            | '?' | '`' | '\' | '^' | '~'
           =>
              Error_Illegal_Character;
  
!          --  Special preprocessor characters. If Set_Special_Character has been
!          --  called, return a Special token. Otherwise give an error.
  
!          when Special_Preprocessor_Character =>
  
              --  If Set_Special_Character has been called for this character,
              --  set Scans.Special_Character and return a Special token.
*************** package body Scng is
*** 2700,2714 ****
           end if;
     end Scan;
  
-    --------------------------
-    -- Set_Comment_As_Token --
-    --------------------------
- 
-    procedure Set_Comment_As_Token (Value : Boolean) is
-    begin
-       Comment_Is_Token := Value;
-    end Set_Comment_As_Token;
- 
     ------------------------------
     -- Set_End_Of_Line_As_Token --
     ------------------------------
--- 2783,2788 ----
*************** package body Scng is
*** 2722,2736 ****
     -- Set_Special_Character --
     ---------------------------
  
!    procedure Set_Special_Character (C : Character) is
     begin
!       case C is
!          when '#' | '$' | '_' | '?' | '@' | '`' | '\' | '^' | '~' =>
!             Special_Characters (C) := True;
! 
!          when others =>
!             null;
!       end case;
     end Set_Special_Character;
  
     ----------------------
--- 2796,2804 ----
     -- Set_Special_Character --
     ---------------------------
  
!    procedure Set_Special_Character (C : Special_Preprocessor_Character) is
     begin
!       Special_Characters (C) := True;
     end Set_Special_Character;
  
     ----------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/scng.ads gcc-13.1.0/gcc/ada/scng.ads
*** gcc-12.2.0/gcc/ada/scng.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scng.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,33 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This package contains a generic lexical analyzer. This is used for scanning
! --  Ada source files or text files with an Ada-like syntax, such as project
! --  files. It is instantiated in Scn and Prj.Err.
  
  with Casing; use Casing;
  with Styleg;
  with Types;  use Types;
  
--- 23,33 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! --  This is a generic lexical analyzer, used for scanning Ada source files, and
! --  also for preprocessor files.
  
  with Casing; use Casing;
+ with Scans;  use Scans;
  with Styleg;
  with Types;  use Types;
  
*************** package Scng is
*** 68,100 ****
     --  Scan scans out the next token, and advances the scan state accordingly
     --  (see package Scan_State for details). If the scan encounters an illegal
     --  token, then an error message is issued pointing to the bad character,
!    --  and Scan returns a reasonable substitute token of some kind.
!    --  For tokens Char_Literal, Identifier, Real_Literal, Integer_Literal,
!    --  String_Literal and Operator_Symbol, Post_Scan is called after scanning.
  
     function Determine_Token_Casing return Casing_Type;
     pragma Inline (Determine_Token_Casing);
     --  Determines the casing style of the current token, which is
     --  either a keyword or an identifier. See also package Casing.
  
!    procedure Set_Special_Character (C : Character);
!    --  Indicate that one of the following character '#', '$', '?',  '`',
!    --  '\', '^', '_' or '~', when found is a Special token.
!    --  AI12-0125-03 : target name (ES) is not in this list because '@' is
!    --  handled as a special token as abbreviation of LHS of assignment.
  
     procedure Reset_Special_Characters;
!    --  Indicate that there is no characters that are Special tokens., which
     --  is the default.
  
     procedure Set_End_Of_Line_As_Token (Value : Boolean);
     --  Indicate if End_Of_Line is a token or not.
     --  By default, End_Of_Line is not a token.
  
-    procedure Set_Comment_As_Token (Value : Boolean);
-    --  Indicate if a comment is a token or not.
-    --  By default, a comment is not a token.
- 
     function Set_Start_Column return Column_Number;
     --  This routine is called with Scan_Ptr pointing to the first character
     --  of a line. On exit, Scan_Ptr is advanced to the first non-blank
--- 68,94 ----
     --  Scan scans out the next token, and advances the scan state accordingly
     --  (see package Scan_State for details). If the scan encounters an illegal
     --  token, then an error message is issued pointing to the bad character,
!    --  and Scan returns a reasonable substitute token. For tokens Char_Literal,
!    --  Identifier, Real_Literal, Integer_Literal, String_Literal and
!    --  Operator_Symbol, Post_Scan is called after scanning.
  
     function Determine_Token_Casing return Casing_Type;
     pragma Inline (Determine_Token_Casing);
     --  Determines the casing style of the current token, which is
     --  either a keyword or an identifier. See also package Casing.
  
!    procedure Set_Special_Character (C : Special_Preprocessor_Character);
!    --  Called when the preprocessor is active to indicate that Scan should
!    --  return a Special token for C.
  
     procedure Reset_Special_Characters;
!    --  Indicate that there are no characters that are Special tokens, which
     --  is the default.
  
     procedure Set_End_Of_Line_As_Token (Value : Boolean);
     --  Indicate if End_Of_Line is a token or not.
     --  By default, End_Of_Line is not a token.
  
     function Set_Start_Column return Column_Number;
     --  This routine is called with Scan_Ptr pointing to the first character
     --  of a line. On exit, Scan_Ptr is advanced to the first non-blank
diff -Nrcpad gcc-12.2.0/gcc/ada/scos.adb gcc-13.1.0/gcc/ada/scos.adb
*** gcc-12.2.0/gcc/ada/scos.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scos.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/scos.ads gcc-13.1.0/gcc/ada/scos.ads
*** gcc-12.2.0/gcc/ada/scos.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scos.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/scos.h gcc-13.1.0/gcc/ada/scos.h
*** gcc-12.2.0/gcc/ada/scos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/scos.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2014-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *           Copyright (C) 2014-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/sdefault.ads gcc-13.1.0/gcc/ada/sdefault.ads
*** gcc-12.2.0/gcc/ada/sdefault.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sdefault.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/seh_init.c gcc-13.1.0/gcc/ada/seh_init.c
*** gcc-12.2.0/gcc/ada/seh_init.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/seh_init.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2005-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *           Copyright (C) 2005-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 34,39 ****
--- 34,40 ----
  
  #if defined (_WIN32) || (defined (__CYGWIN__) && defined (__SEH__))
  /* Include system headers, before system.h poisons malloc.  */
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #include <excpt.h>
  #endif
diff -Nrcpad gcc-12.2.0/gcc/ada/sem.adb gcc-13.1.0/gcc/ada/sem.adb
*** gcc-12.2.0/gcc/ada/sem.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Stylesw;        use Stylesw;
*** 61,67 ****
  with Uintp;          use Uintp;
  with Uname;          use Uname;
  
! with Unchecked_Deallocation;
  
  pragma Warnings (Off, Sem_Util);
  --  Suppress warnings of unused with for Sem_Util (used only in asserts)
--- 61,67 ----
  with Uintp;          use Uintp;
  with Uname;          use Uname;
  
! with Ada.Unchecked_Deallocation;
  
  pragma Warnings (Off, Sem_Util);
  --  Suppress warnings of unused with for Sem_Util (used only in asserts)
*************** package body Sem is
*** 380,401 ****
              Analyze_Arithmetic_Op (N);
  
           when N_Op_Eq =>
!             Analyze_Equality_Op (N);
  
           when N_Op_Expon =>
              Analyze_Arithmetic_Op (N);
  
           when N_Op_Ge =>
!             Analyze_Comparison_Op (N);
  
           when N_Op_Gt =>
!             Analyze_Comparison_Op (N);
  
           when N_Op_Le =>
!             Analyze_Comparison_Op (N);
  
           when N_Op_Lt =>
!             Analyze_Comparison_Op (N);
  
           when N_Op_Minus =>
              Analyze_Unary_Op (N);
--- 380,401 ----
              Analyze_Arithmetic_Op (N);
  
           when N_Op_Eq =>
!             Analyze_Comparison_Equality_Op (N);
  
           when N_Op_Expon =>
              Analyze_Arithmetic_Op (N);
  
           when N_Op_Ge =>
!             Analyze_Comparison_Equality_Op (N);
  
           when N_Op_Gt =>
!             Analyze_Comparison_Equality_Op (N);
  
           when N_Op_Le =>
!             Analyze_Comparison_Equality_Op (N);
  
           when N_Op_Lt =>
!             Analyze_Comparison_Equality_Op (N);
  
           when N_Op_Minus =>
              Analyze_Unary_Op (N);
*************** package body Sem is
*** 407,413 ****
              Analyze_Arithmetic_Op (N);
  
           when N_Op_Ne =>
!             Analyze_Equality_Op (N);
  
           when N_Op_Not =>
              Analyze_Negation (N);
--- 407,413 ----
              Analyze_Arithmetic_Op (N);
  
           when N_Op_Ne =>
!             Analyze_Comparison_Equality_Op (N);
  
           when N_Op_Not =>
              Analyze_Negation (N);
*************** package body Sem is
*** 557,562 ****
--- 557,565 ----
           when N_String_Literal =>
              Analyze_String_Literal (N);
  
+          when N_Interpolated_String_Literal =>
+             Analyze_Interpolated_String_Literal (N);
+ 
           when N_Subprogram_Body =>
              Analyze_Subprogram_Body (N);
  
*************** package body Sem is
*** 1062,1068 ****
     procedure Initialize is
        Next : Suppress_Stack_Entry_Ptr;
  
!       procedure Free is new Unchecked_Deallocation
          (Suppress_Stack_Entry, Suppress_Stack_Entry_Ptr);
  
     begin
--- 1065,1071 ----
     procedure Initialize is
        Next : Suppress_Stack_Entry_Ptr;
  
!       procedure Free is new Ada.Unchecked_Deallocation
          (Suppress_Stack_Entry, Suppress_Stack_Entry_Ptr);
  
     begin
*************** package body Sem is
*** 1338,1344 ****
        Full_Analysis := False;
        Expander_Mode_Save_And_Set (False);
  
!       Analyze (N);
  
        Expander_Mode_Restore;
        Full_Analysis := Save_Full_Analysis;
--- 1341,1355 ----
        Full_Analysis := False;
        Expander_Mode_Save_And_Set (False);
  
!       --  See comment in sem_res.adb for Preanalyze_And_Resolve
! 
!       if GNATprove_Mode
!         or else Nkind (Parent (N)) = N_Simple_Return_Statement
!       then
!          Analyze (N);
!       else
!          Analyze (N, Suppress => All_Checks);
!       end if;
  
        Expander_Mode_Restore;
        Full_Analysis := Save_Full_Analysis;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem.ads gcc-13.1.0/gcc/ada/sem.ads
*** gcc-12.2.0/gcc/ada/sem.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 32,38 ****
  
  --    Analysis     implements the bulk of semantic analysis such as
  --                 name analysis and type resolution for declarations,
! --                 instructions and expressions. The main routine
  --                 driving this process is procedure Analyze given below.
  --                 This analysis phase is really a bottom up pass that is
  --                 achieved during the recursive traversal performed by the
--- 32,38 ----
  
  --    Analysis     implements the bulk of semantic analysis such as
  --                 name analysis and type resolution for declarations,
! --                 statements, and expressions. The main routine
  --                 driving this process is procedure Analyze given below.
  --                 This analysis phase is really a bottom up pass that is
  --                 achieved during the recursive traversal performed by the
***************
*** 46,71 ****
  --                 completed during analysis (because of overloading
  --                 ambiguities). Specifically, after completing the bottom
  --                 up pass carried out during analysis for expressions, the
! --                 Resolve routine (see the spec of sem_res for more info)
  --                 is called to perform a top down resolution with
  --                 recursive calls to itself to resolve operands.
  
! --    Expansion    if we are not generating code this phase is a no-op.
  --                 Otherwise this phase expands, i.e. transforms, original
! --                 declaration, expressions or instructions into simpler
! --                 structures that can be handled by the back-end. This
! --                 phase is also in charge of generating code which is
! --                 implicit in the original source (for instance for
! --                 default initializations, controlled types, etc.)
! --                 There are two separate instances where expansion is
  --                 invoked. For declarations and instructions, expansion is
! --                 invoked just after analysis since no resolution needs
! --                 to be performed. For expressions, expansion is done just
! --                 after resolution. In both cases expansion is done from the
! --                 bottom up just before the end of Analyze for instructions
! --                 and declarations or the call to Resolve for expressions.
! --                 The main routine driving expansion is Expand.
! --                 See the spec of Expander for more details.
  
  --  To summarize, in normal code generation mode we recursively traverse the
  --  abstract syntax tree top-down performing semantic analysis bottom
--- 46,70 ----
  --                 completed during analysis (because of overloading
  --                 ambiguities). Specifically, after completing the bottom
  --                 up pass carried out during analysis for expressions, the
! --                 Resolve routine (see the spec of Sem_Res for more info)
  --                 is called to perform a top down resolution with
  --                 recursive calls to itself to resolve operands.
  
! --    Expansion    If we are not generating code this phase is a no-op.
  --                 Otherwise this phase expands, i.e. transforms, original
! --                 source constructs into simpler constructs that can be
! --                 handled by the back-end. This phase is also in charge of
! --                 generating code which is implicit in the original source
! --                 (for instance for default initializations, controlled types,
! --                 etc.)  There are two separate instances where expansion is
  --                 invoked. For declarations and instructions, expansion is
! --                 invoked just after analysis since no resolution needs to be
! --                 performed. For expressions, expansion is done just after
! --                 resolution. In both cases expansion is done from the bottom
! --                 up just before the end of Analyze for instructions and
! --                 declarations or the call to Resolve for expressions.  The
! --                 main routine driving expansion is Expand.  See the spec of
! --                 Expander for more details.
  
  --  To summarize, in normal code generation mode we recursively traverse the
  --  abstract syntax tree top-down performing semantic analysis bottom
***************
*** 110,116 ****
  --  pragmas that appear with subprogram specifications rather than in the body.
  
  --  Collectively we call these Spec_Expressions. The routine that performs the
! --  special analysis is called Analyze_Spec_Expression.
  
  --  Expansion has to be deferred since you can't generate code for expressions
  --  that reference types that have not been frozen yet. As an example, consider
--- 109,115 ----
  --  pragmas that appear with subprogram specifications rather than in the body.
  
  --  Collectively we call these Spec_Expressions. The routine that performs the
! --  special analysis is called Preanalyze_Spec_Expression.
  
  --  Expansion has to be deferred since you can't generate code for expressions
  --  that reference types that have not been frozen yet. As an example, consider
***************
*** 134,140 ****
  --  of the expression cannot be obtained at the point of declaration, only at
  --  the point of use.
  
! --  Generally our model is to combine analysis resolution and expansion, but
  --  this is the one case where this model falls down. Here is how we patch
  --  it up without causing too much distortion to our basic model.
  
--- 133,139 ----
  --  of the expression cannot be obtained at the point of declaration, only at
  --  the point of use.
  
! --  Generally our model is to combine analysis, resolution, and expansion, but
  --  this is the one case where this model falls down. Here is how we patch
  --  it up without causing too much distortion to our basic model.
  
***************
*** 175,181 ****
  --  children is performed before expansion of the parent does not work if the
  --  code generated for the children by the expander needs to be evaluated
  --  repeatedly (for instance in the above aggregate "new Thing (Function_Call)"
! --  needs to be called 100 times.)
  
  --  The reason this mechanism does not work is that the expanded code for the
  --  children is typically inserted above the parent and thus when the parent
--- 174,180 ----
  --  children is performed before expansion of the parent does not work if the
  --  code generated for the children by the expander needs to be evaluated
  --  repeatedly (for instance in the above aggregate "new Thing (Function_Call)"
! --  needs to be called 100 times).
  
  --  The reason this mechanism does not work is that the expanded code for the
  --  children is typically inserted above the parent and thus when the parent
*************** package Sem is
*** 327,334 ****
     --  using pragma Check_Name), are handled as follows. If a suppress or
     --  unsuppress pragma is encountered for a given entity, then the flag
     --  Checks_May_Be_Suppressed is set in the entity and an entry is made in
!    --  either the Local_Entity_Suppress stack (case of pragma that appears in
!    --  other than a package spec), or in the Global_Entity_Suppress stack (case
     --  of pragma that appears in a package spec, which is by the rule of RM
     --  11.5(7) applicable throughout the life of the entity). Similarly, a
     --  Suppress/Unsuppress pragma for a non-predefined check which does not
--- 326,333 ----
     --  using pragma Check_Name), are handled as follows. If a suppress or
     --  unsuppress pragma is encountered for a given entity, then the flag
     --  Checks_May_Be_Suppressed is set in the entity and an entry is made in
!    --  either the local suppress stack (case of pragma that appears in
!    --  other than a package spec), or in the global suppress stack (case
     --  of pragma that appears in a package spec, which is by the rule of RM
     --  11.5(7) applicable throughout the life of the entity). Similarly, a
     --  Suppress/Unsuppress pragma for a non-predefined check which does not
*************** package Sem is
*** 340,346 ****
     --  other point is that we have to make sure that we have proper nested
     --  interaction between such specific pragmas and locally applied general
     --  pragmas applying to all entities. This is achieved by including in the
!    --  Local_Entity_Suppress table dummy entries with an empty Entity field
     --  that are applicable to all entities. A similar search is needed for any
     --  non-predefined check even if no specific entity is involved.
  
--- 339,345 ----
     --  other point is that we have to make sure that we have proper nested
     --  interaction between such specific pragmas and locally applied general
     --  pragmas applying to all entities. This is achieved by including in the
!    --  local suppress stack dummy entries with an empty Entity field
     --  that are applicable to all entities. A similar search is needed for any
     --  non-predefined check even if no specific entity is involved.
  
*************** package Sem is
*** 359,376 ****
     --  applies, and gives the right result when such pragmas are used even
     --  in complex cases of nested Suppress and Unsuppress pragmas.
  
!    --  The Local_Entity_Suppress and Global_Entity_Suppress stacks are handled
!    --  using dynamic allocation and linked lists. We do not often use this
!    --  approach in the compiler (preferring to use extensible tables instead).
!    --  The reason we do it here is that scope stack entries save a pointer to
!    --  the current local stack top, which is also saved and restored on scope
!    --  exit. Furthermore for processing of generics we save pointers to the
!    --  top of the stack, so that the local stack is actually a tree of stacks
!    --  rather than a single stack, a structure that is easy to represent using
!    --  linked lists, but impossible to represent using a single table. Note
!    --  that because of the generic issue, we never release entries in these
!    --  stacks, but that's no big deal, since we are unlikely to have a huge
!    --  number of Suppress/Unsuppress entries in a single compilation.
  
     type Suppress_Stack_Entry;
     type Suppress_Stack_Entry_Ptr is access all Suppress_Stack_Entry;
--- 358,375 ----
     --  applies, and gives the right result when such pragmas are used even
     --  in complex cases of nested Suppress and Unsuppress pragmas.
  
!    --  The local and global suppress stacks are handled using dynamic
!    --  allocation and linked lists. We do not often use this approach in the
!    --  compiler (preferring to use extensible tables instead). The reason we do
!    --  it here is that scope stack entries save a pointer to the current local
!    --  stack top, which is also saved and restored on scope exit. Furthermore
!    --  for processing of generics we save pointers to the top of the stack, so
!    --  that the local stack is actually a tree of stacks rather than a single
!    --  stack, a structure that is easy to represent using linked lists, but
!    --  impossible to represent using a single table. Note that because of the
!    --  generic issue, we never release entries in these stacks, but that's no
!    --  big deal, since we are unlikely to have a huge number of
!    --  Suppress/Unsuppress entries in a single compilation.
  
     type Suppress_Stack_Entry;
     type Suppress_Stack_Entry_Ptr is access all Suppress_Stack_Entry;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_aggr.adb gcc-13.1.0/gcc/ada/sem_aggr.adb
*** gcc-12.2.0/gcc/ada/sem_aggr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_aggr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Aux;        use Sem_Aux;
*** 51,57 ****
  with Sem_Case;       use Sem_Case;
  with Sem_Cat;        use Sem_Cat;
  with Sem_Ch3;        use Sem_Ch3;
- with Sem_Ch5;        use Sem_Ch5;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Ch13;       use Sem_Ch13;
  with Sem_Dim;        use Sem_Dim;
--- 51,56 ----
*************** with Targparm;       use Targparm;
*** 71,76 ****
--- 70,76 ----
  with Tbuild;         use Tbuild;
  with Ttypes;         use Ttypes;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Aggr is
  
*************** package body Sem_Aggr is
*** 410,415 ****
--- 410,422 ----
     --  array of characters is expected. This procedure simply rewrites the
     --  string as an aggregate, prior to resolution.
  
+    function Resolve_Null_Array_Aggregate (N : Node_Id) return Boolean;
+    --  For the Ada 2022 construct, build a subtype with a null range for each
+    --  dimension, using the bounds from the context subtype (if the subtype
+    --  is constrained). If the subtype is unconstrained, then the bounds
+    --  are determined in much the same way as the bounds for a null string
+    --  literal with no applicable index constraint.
+ 
     ---------------------------------
     --  Delta aggregate processing --
     ---------------------------------
*************** package body Sem_Aggr is
*** 554,560 ****
        end if;
  
        Set_Parent (Index_Constraints, N);
!       Collect_Aggr_Bounds (N, 1);
  
        --  Build the list of constrained indexes of our aggregate itype
  
--- 561,589 ----
        end if;
  
        Set_Parent (Index_Constraints, N);
! 
!       --  When resolving a null aggregate we created a list of aggregate bounds
!       --  for the consecutive dimensions. The bounds for the first dimension
!       --  are attached as the Aggregate_Bounds of the aggregate node.
! 
!       if Is_Null_Aggregate (N) then
!          declare
!             This_Range : Node_Id := Aggregate_Bounds (N);
!          begin
!             for J in 1 .. Aggr_Dimension loop
!                Aggr_Range (J) := This_Range;
!                Next_Index (This_Range);
! 
!                --  Remove bounds from the list, so they can be reattached as
!                --  the First_Index/Next_Index again by the code that also
!                --  handles non-null aggregates.
! 
!                Remove (Aggr_Range (J));
!             end loop;
!          end;
!       else
!          Collect_Aggr_Bounds (N, 1);
!       end if;
  
        --  Build the list of constrained indexes of our aggregate itype
  
*************** package body Sem_Aggr is
*** 755,760 ****
--- 784,817 ----
          and then No (Next (First (Choice_List (First (Assoc)))));
     end Is_Single_Aggregate;
  
+    -----------------------
+    -- Is_Null_Aggregate --
+    -----------------------
+ 
+    function Is_Null_Aggregate (N : Node_Id) return Boolean is
+    begin
+       return Ada_Version >= Ada_2022
+         and then Is_Homogeneous_Aggregate (N)
+         and then Is_Empty_List (Expressions (N))
+         and then Is_Empty_List (Component_Associations (N));
+    end Is_Null_Aggregate;
+ 
+    ----------------------------------------
+    -- Is_Null_Array_Aggregate_High_Bound --
+    ----------------------------------------
+ 
+    function Is_Null_Array_Aggregate_High_Bound (N : Node_Id) return Boolean is
+       Original_N : constant Node_Id := Original_Node (N);
+    begin
+       return Ada_Version >= Ada_2022
+         and then not Comes_From_Source (Original_N)
+         and then Nkind (Original_N) = N_Attribute_Reference
+         and then
+           Get_Attribute_Id (Attribute_Name (Original_N)) = Attribute_Pred
+         and then Nkind (Parent (N)) in N_Range | N_Op_Le
+         and then not Comes_From_Source (Parent (N));
+    end Is_Null_Array_Aggregate_High_Bound;
+ 
     --------------------------------
     -- Make_String_Into_Aggregate --
     --------------------------------
*************** package body Sem_Aggr is
*** 808,816 ****
--- 865,945 ----
        --  Set to True if N represents a simple aggregate with only
        --  (others => <>), not nested as part of another aggregate.
  
+       function Is_Full_Access_Aggregate (N : Node_Id) return Boolean;
+       --  If a full access object is initialized with an aggregate or is
+       --  assigned an aggregate, we have to prevent a piecemeal access or
+       --  assignment to the object, even if the aggregate is to be expanded.
+       --  We create a temporary for the aggregate, and assign the temporary
+       --  instead, so that the back end can generate an atomic move for it.
+       --  This is only done in the context of an object declaration or an
+       --  assignment. Function is a noop and returns false in other contexts.
+ 
        function Within_Aggregate (N : Node_Id) return Boolean;
        --  Return True if N is part of an N_Aggregate
  
+       ------------------------------
+       -- Is_Full_Access_Aggregate --
+       ------------------------------
+ 
+       function Is_Full_Access_Aggregate (N : Node_Id) return Boolean is
+          Loc : constant Source_Ptr := Sloc (N);
+ 
+          New_N : Node_Id;
+          Par   : Node_Id;
+          Temp  : Entity_Id;
+          Typ   : Entity_Id;
+ 
+       begin
+          Par := Parent (N);
+ 
+          --  Aggregate may be qualified, so find outer context
+ 
+          if Nkind (Par) = N_Qualified_Expression then
+             Par := Parent (Par);
+          end if;
+ 
+          if not Comes_From_Source (Par) then
+             return False;
+          end if;
+ 
+          case Nkind (Par) is
+             when N_Assignment_Statement =>
+                Typ := Etype (Name (Par));
+ 
+                if not Is_Full_Access (Typ)
+                  and then not Is_Full_Access_Object (Name (Par))
+                then
+                   return False;
+                end if;
+ 
+             when N_Object_Declaration =>
+                Typ := Etype (Defining_Identifier (Par));
+ 
+                if not Is_Full_Access (Typ)
+                  and then not Is_Full_Access (Defining_Identifier (Par))
+                then
+                   return False;
+                end if;
+ 
+             when others =>
+                return False;
+          end case;
+ 
+          Temp := Make_Temporary (Loc, 'T', N);
+          New_N :=
+            Make_Object_Declaration (Loc,
+              Defining_Identifier => Temp,
+              Constant_Present    => True,
+              Object_Definition   => New_Occurrence_Of (Typ, Loc),
+              Expression          => Relocate_Node (N));
+          Insert_Action (Par, New_N);
+ 
+          Rewrite (N, New_Occurrence_Of (Temp, Loc));
+          Analyze_And_Resolve (N, Typ);
+ 
+          return True;
+       end Is_Full_Access_Aggregate;
+ 
        ----------------------
        -- Within_Aggregate --
        ----------------------
*************** package body Sem_Aggr is
*** 839,844 ****
--- 968,983 ----
          and then not Null_Record_Present (N)
        then
           return;
+ 
+       --  If the aggregate is assigned to a full access variable, we have
+       --  to prevent a piecemeal assignment even if the aggregate is to be
+       --  expanded. We create a temporary for the aggregate, and assign the
+       --  temporary instead, so that the back end can generate an atomic move
+       --  for it. This is properly an expansion activity but it must be done
+       --  before resolution because aggregate resolution cannot be done twice.
+ 
+       elsif Expander_Active and then Is_Full_Access_Aggregate (N) then
+          return;
        end if;
  
        --  If the aggregate has box-initialized components, its type must be
*************** package body Sem_Aggr is
*** 914,920 ****
        elsif Is_Array_Type (Typ) and then Null_Record_Present (N) then
           Error_Msg_N ("null record forbidden in array aggregate", N);
  
!       elsif Present (Find_Aspect (Typ, Aspect_Aggregate))
          and then Ekind (Typ) /= E_Record_Type
          and then Ada_Version >= Ada_2022
        then
--- 1053,1059 ----
        elsif Is_Array_Type (Typ) and then Null_Record_Present (N) then
           Error_Msg_N ("null record forbidden in array aggregate", N);
  
!       elsif Has_Aspect (Typ, Aspect_Aggregate)
          and then Ekind (Typ) /= E_Record_Type
          and then Ada_Version >= Ada_2022
        then
*************** package body Sem_Aggr is
*** 984,996 ****
  
           Array_Aggregate : declare
              Aggr_Resolved : Boolean;
- 
              Aggr_Typ : constant Entity_Id := Etype (Typ);
              --  This is the unconstrained array type, which is the type against
              --  which the aggregate is to be resolved. Typ itself is the array
              --  type of the context which may not be the same subtype as the
              --  subtype for the final aggregate.
  
           begin
              --  In the following we determine whether an OTHERS choice is
              --  allowed inside the array aggregate. The test checks the context
--- 1123,1136 ----
  
           Array_Aggregate : declare
              Aggr_Resolved : Boolean;
              Aggr_Typ : constant Entity_Id := Etype (Typ);
              --  This is the unconstrained array type, which is the type against
              --  which the aggregate is to be resolved. Typ itself is the array
              --  type of the context which may not be the same subtype as the
              --  subtype for the final aggregate.
  
+             Is_Null_Aggr : constant Boolean := Is_Null_Aggregate (N);
+ 
           begin
              --  In the following we determine whether an OTHERS choice is
              --  allowed inside the array aggregate. The test checks the context
*************** package body Sem_Aggr is
*** 1022,1028 ****
  
              Set_Etype (N, Aggr_Typ);  --  May be overridden later on
  
!             if Nkind (Parent (N)) = N_Assignment_Statement
                or else Inside_Init_Proc
                or else (Is_Constrained (Typ)
                          and then Nkind (Parent (N)) in
--- 1162,1172 ----
  
              Set_Etype (N, Aggr_Typ);  --  May be overridden later on
  
!             if Is_Null_Aggr then
!                Set_Etype (N, Typ);
!                Aggr_Resolved := Resolve_Null_Array_Aggregate (N);
! 
!             elsif Nkind (Parent (N)) = N_Assignment_Statement
                or else Inside_Init_Proc
                or else (Is_Constrained (Typ)
                          and then Nkind (Parent (N)) in
*************** package body Sem_Aggr is
*** 1611,1627 ****
           Loc : constant Source_Ptr := Sloc (N);
           Id  : constant Entity_Id  := Defining_Identifier (N);
  
-          Id_Typ : Entity_Id := Any_Type;
- 
           -----------------------
           -- Remove_References --
           -----------------------
  
!          function Remove_Ref (N : Node_Id) return Traverse_Result;
!          --  Remove references to the entity Id after analysis, so it can be
           --  properly reanalyzed after construct is expanded into a loop.
  
!          function Remove_Ref (N : Node_Id) return Traverse_Result is
           begin
              if Nkind (N) = N_Identifier
                 and then Present (Entity (N))
--- 1755,1769 ----
           Loc : constant Source_Ptr := Sloc (N);
           Id  : constant Entity_Id  := Defining_Identifier (N);
  
           -----------------------
           -- Remove_References --
           -----------------------
  
!          function Remove_Reference (N : Node_Id) return Traverse_Result;
!          --  Remove reference to the entity Id after analysis, so it can be
           --  properly reanalyzed after construct is expanded into a loop.
  
!          function Remove_Reference (N : Node_Id) return Traverse_Result is
           begin
              if Nkind (N) = N_Identifier
                 and then Present (Entity (N))
*************** package body Sem_Aggr is
*** 1632,1646 ****
              end if;
              Set_Analyzed (N, False);
              return OK;
!          end Remove_Ref;
  
!          procedure Remove_References is new Traverse_Proc (Remove_Ref);
  
           --  Local variables
  
           Choice : Node_Id;
           Dummy  : Boolean;
!          Ent    : Entity_Id;
           Expr   : Node_Id;
  
        --  Start of processing for Resolve_Iterated_Component_Association
--- 1774,1788 ----
              end if;
              Set_Analyzed (N, False);
              return OK;
!          end Remove_Reference;
  
!          procedure Remove_References is new Traverse_Proc (Remove_Reference);
  
           --  Local variables
  
           Choice : Node_Id;
           Dummy  : Boolean;
!          Scop   : Entity_Id;
           Expr   : Node_Id;
  
        --  Start of processing for Resolve_Iterated_Component_Association
*************** package body Sem_Aggr is
*** 1648,1684 ****
        begin
           Error_Msg_Ada_2022_Feature ("iterated component", Loc);
  
!          if Present (Iterator_Specification (N)) then
!             Analyze (Name (Iterator_Specification (N)));
  
!             --  We assume that the domain of iteration cannot be overloaded.
  
!             declare
!                Domain : constant Node_Id := Name (Iterator_Specification (N));
!                D_Type : constant Entity_Id := Etype (Domain);
!                Elt    : Entity_Id;
!             begin
!                if Is_Array_Type (D_Type) then
!                   Id_Typ := Component_Type (D_Type);
  
!                else
!                   if Has_Aspect (D_Type, Aspect_Iterable) then
!                      Elt :=
!                        Get_Iterable_Type_Primitive (D_Type, Name_Element);
!                      if No (Elt) then
!                         Error_Msg_N
!                           ("missing Element primitive for iteration", Domain);
!                      else
!                         Id_Typ := Etype (Elt);
!                      end if;
!                   else
!                      Error_Msg_N ("cannot iterate over", Domain);
!                   end if;
!                end if;
!             end;
  
           else
!             Id_Typ := Index_Typ;
              Choice := First (Discrete_Choices (N));
  
              while Present (Choice) loop
--- 1790,1818 ----
        begin
           Error_Msg_Ada_2022_Feature ("iterated component", Loc);
  
!          --  Create a scope in which to introduce an index, to make it visible
!          --  for the analysis of component expression.
  
!          Scop := New_Internal_Entity (E_Loop, Current_Scope, Loc, 'L');
!          Set_Etype  (Scop, Standard_Void_Type);
!          Set_Parent (Scop, Parent (N));
!          Push_Scope (Scop);
  
!          --  If there is iterator specification, then its preanalysis will make
!          --  the index visible.
  
!          if Present (Iterator_Specification (N)) then
!             Preanalyze (Iterator_Specification (N));
! 
!          --  Otherwise, analyze discrete choices and make the index visible
  
           else
!             --  Insert index name into current scope but don't decorate it yet,
!             --  so that a premature usage of this name in discrete choices will
!             --  be nicely diagnosed.
! 
!             Enter_Name (Id);
! 
              Choice := First (Discrete_Choices (N));
  
              while Present (Choice) loop
*************** package body Sem_Aggr is
*** 1704,1728 ****
  
                 Next (Choice);
              end loop;
-          end if;
- 
-          --  Create a scope in which to introduce an index, which is usually
-          --  visible in the expression for the component, and needed for its
-          --  analysis.
  
!          Ent := New_Internal_Entity (E_Loop, Current_Scope, Loc, 'L');
!          Set_Etype  (Ent, Standard_Void_Type);
!          Set_Parent (Ent, Parent (N));
!          Push_Scope (Ent);
! 
!          --  Insert and decorate the index variable in the current scope.
!          --  The expression has to be analyzed once the index variable is
!          --  directly visible.
  
!          Enter_Name (Id);
!          Set_Etype (Id, Id_Typ);
!          Mutate_Ekind (Id, E_Variable);
!          Set_Scope (Id, Ent);
  
           --  Analyze  expression without expansion, to verify legality.
           --  When generating code, we then remove references to the index
--- 1838,1850 ----
  
                 Next (Choice);
              end loop;
  
!             --  Decorate the index variable
  
!             Set_Etype (Id, Index_Typ);
!             Mutate_Ekind (Id, E_Variable);
!             Set_Scope (Id, Scop);
!          end if;
  
           --  Analyze  expression without expansion, to verify legality.
           --  When generating code, we then remove references to the index
*************** package body Sem_Aggr is
*** 1795,1806 ****
          and then No (Component_Associations (N))
          and then not Null_Record_Present (N)
        then
!          return False;
        end if;
  
        --  Disable the warning for GNAT Mode to allow for easier transition.
  
!       if Ada_Version >= Ada_2022
          and then Warn_On_Obsolescent_Feature
          and then not GNAT_Mode
          and then not Is_Homogeneous_Aggregate (N)
--- 1917,1928 ----
          and then No (Component_Associations (N))
          and then not Null_Record_Present (N)
        then
!          return Failure;
        end if;
  
        --  Disable the warning for GNAT Mode to allow for easier transition.
  
!       if Ada_Version_Explicit >= Ada_2022
          and then Warn_On_Obsolescent_Feature
          and then not GNAT_Mode
          and then not Is_Homogeneous_Aggregate (N)
*************** package body Sem_Aggr is
*** 1833,1841 ****
                   or else No (Iterator_Specification (Assoc))
                 then
                    Error_Msg_N ("mixed iterated component association"
!                    & " (RM 4.4.3 (17.1/5))",
                        Assoc);
!                   return False;
                 end if;
  
                 Next (Assoc);
--- 1955,1963 ----
                   or else No (Iterator_Specification (Assoc))
                 then
                    Error_Msg_N ("mixed iterated component association"
!                    & " (RM 4.3.3 (17.1/5))",
                        Assoc);
!                   return Failure;
                 end if;
  
                 Next (Assoc);
*************** package body Sem_Aggr is
*** 1852,1874 ****
                   and then Present (Iterator_Specification (Assoc))
                 then
                    Error_Msg_N ("mixed iterated component association"
!                     & " (RM 4.4.3 (17.1/5))",
                        Assoc);
!                   return False;
                 end if;
  
                 Next (Assoc);
              end loop;
  
-             while Present (Assoc) loop
-                Next (Assoc);
-             end loop;
           end if;
  
           Assoc := First (Component_Associations (N));
           while Present (Assoc) loop
              if Nkind (Assoc) = N_Iterated_Component_Association then
                 Resolve_Iterated_Component_Association (Assoc, Index_Typ);
              end if;
  
              Choice := First (Choice_List (Assoc));
--- 1974,1998 ----
                   and then Present (Iterator_Specification (Assoc))
                 then
                    Error_Msg_N ("mixed iterated component association"
!                     & " (RM 4.3.3 (17.1/5))",
                        Assoc);
!                   return Failure;
                 end if;
  
                 Next (Assoc);
              end loop;
  
           end if;
  
           Assoc := First (Component_Associations (N));
           while Present (Assoc) loop
              if Nkind (Assoc) = N_Iterated_Component_Association then
                 Resolve_Iterated_Component_Association (Assoc, Index_Typ);
+ 
+             elsif Nkind (Assoc) /= N_Component_Association then
+                Error_Msg_N
+                  ("invalid component association for aggregate", Assoc);
+                return Failure;
              end if;
  
              Choice := First (Choice_List (Assoc));
*************** package body Sem_Aggr is
*** 2232,2238 ****
                 --  duplicate the expression tree to analyze the copy and
                 --  perform the required check.
  
!                elsif not Present (Etype (Expression (Assoc))) then
                    declare
                       Save_Analysis : constant Boolean := Full_Analysis;
                       Expr          : constant Node_Id :=
--- 2356,2362 ----
                 --  duplicate the expression tree to analyze the copy and
                 --  perform the required check.
  
!                elsif No (Etype (Expression (Assoc))) then
                    declare
                       Save_Analysis : constant Boolean := Full_Analysis;
                       Expr          : constant Node_Id :=
*************** package body Sem_Aggr is
*** 2893,2904 ****
        is
           Loc      : constant Source_Ptr := Sloc (N);
           Choice   : Node_Id;
           Ent      : Entity_Id;
           Expr     : Node_Id;
           Key_Expr : Node_Id;
           Id       : Entity_Id;
           Id_Name  : Name_Id;
-          Iter     : Node_Id;
           Typ      : Entity_Id := Empty;
  
        begin
--- 3017,3028 ----
        is
           Loc      : constant Source_Ptr := Sloc (N);
           Choice   : Node_Id;
+          Copy     : Node_Id;
           Ent      : Entity_Id;
           Expr     : Node_Id;
           Key_Expr : Node_Id;
           Id       : Entity_Id;
           Id_Name  : Name_Id;
           Typ      : Entity_Id := Empty;
  
        begin
*************** package body Sem_Aggr is
*** 2909,2923 ****
           --  is present. In both cases a Key_Expression is present.
  
           if Nkind (Comp) = N_Iterated_Element_Association then
              if Present (Loop_Parameter_Specification (Comp)) then
!                Analyze_Loop_Parameter_Specification
!                   (Loop_Parameter_Specification (Comp));
                 Id_Name := Chars (Defining_Identifier
                              (Loop_Parameter_Specification (Comp)));
              else
!                Iter := Copy_Separate_Tree (Iterator_Specification (Comp));
!                Analyze (Iter);
!                Typ := Etype (Defining_Identifier (Iter));
                 Id_Name := Chars (Defining_Identifier
                              (Iterator_Specification (Comp)));
              end if;
--- 3033,3061 ----
           --  is present. In both cases a Key_Expression is present.
  
           if Nkind (Comp) = N_Iterated_Element_Association then
+ 
+             --  Create a temporary scope to avoid some modifications from
+             --  escaping the Analyze call below. The original Tree will be
+             --  reanalyzed later.
+ 
+             Ent := New_Internal_Entity
+                      (E_Loop, Current_Scope, Sloc (Comp), 'L');
+             Set_Etype  (Ent, Standard_Void_Type);
+             Set_Parent (Ent, Parent (Comp));
+             Push_Scope (Ent);
+ 
              if Present (Loop_Parameter_Specification (Comp)) then
!                Copy := Copy_Separate_Tree (Comp);
! 
!                Analyze
!                  (Loop_Parameter_Specification (Copy));
! 
                 Id_Name := Chars (Defining_Identifier
                              (Loop_Parameter_Specification (Comp)));
              else
!                Copy := Copy_Separate_Tree (Iterator_Specification (Comp));
!                Analyze (Copy);
! 
                 Id_Name := Chars (Defining_Identifier
                              (Iterator_Specification (Comp)));
              end if;
*************** package body Sem_Aggr is
*** 2929,2940 ****
  
              Key_Expr := Key_Expression (Comp);
              Analyze_And_Resolve (New_Copy_Tree (Key_Expr), Key_Type);
  
           elsif Present (Iterator_Specification (Comp)) then
!             Iter    := Copy_Separate_Tree (Iterator_Specification (Comp));
!             Id_Name := Chars (Defining_Identifier (Comp));
!             Analyze (Iter);
!             Typ := Etype (Defining_Identifier (Iter));
  
           else
              Choice := First (Discrete_Choices (Comp));
--- 3067,3081 ----
  
              Key_Expr := Key_Expression (Comp);
              Analyze_And_Resolve (New_Copy_Tree (Key_Expr), Key_Type);
+             End_Scope;
  
           elsif Present (Iterator_Specification (Comp)) then
!             Copy    := Copy_Separate_Tree (Iterator_Specification (Comp));
!             Id_Name :=
!               Chars (Defining_Identifier (Iterator_Specification (Comp)));
! 
!             Analyze (Copy);
!             Typ := Etype (Defining_Identifier (Copy));
  
           else
              Choice := First (Discrete_Choices (Comp));
*************** package body Sem_Aggr is
*** 2968,2974 ****
           --  analysis.
  
           Id := Make_Defining_Identifier (Sloc (Comp), Id_Name);
!          Ent := New_Internal_Entity (E_Loop, Current_Scope, Sloc (Comp), 'L');
           Set_Etype  (Ent, Standard_Void_Type);
           Set_Parent (Ent, Parent (Comp));
           Push_Scope (Ent);
--- 3109,3116 ----
           --  analysis.
  
           Id := Make_Defining_Identifier (Sloc (Comp), Id_Name);
!          Ent := New_Internal_Entity (E_Loop,
!                   Current_Scope, Sloc (Comp), 'L');
           Set_Etype  (Ent, Standard_Void_Type);
           Set_Parent (Ent, Parent (Comp));
           Push_Scope (Ent);
*************** package body Sem_Aggr is
*** 3003,3008 ****
--- 3145,3152 ----
  
        end Resolve_Iterated_Association;
  
+    --  Start of processing for Resolve_Container_Aggregate
+ 
     begin
        pragma Assert (Nkind (Asp) = N_Aggregate);
  
*************** package body Sem_Aggr is
*** 3056,3062 ****
              end if;
           end;
  
!       elsif  Present (Add_Named_Subp) then
           declare
              --  Retrieves types of container, key, and element from the
              --  specified insertion procedure.
--- 3200,3206 ----
              end if;
           end;
  
!       elsif Present (Add_Named_Subp) then
           declare
              --  Retrieves types of container, key, and element from the
              --  specified insertion procedure.
*************** package body Sem_Aggr is
*** 3098,3104 ****
              end loop;
           end;
  
!       else
           --  Indexed Aggregate. Positional or indexed component
           --  can be present, but not both. Choices must be static
           --  values or ranges with static bounds.
--- 3242,3248 ----
              end loop;
           end;
  
!       elsif Present (Assign_Indexed_Subp) then
           --  Indexed Aggregate. Positional or indexed component
           --  can be present, but not both. Choices must be static
           --  values or ranges with static bounds.
*************** package body Sem_Aggr is
*** 3124,3131 ****
                 end loop;
              end if;
  
!             if Present (Component_Associations (N)) then
!                if Present (Expressions (N)) then
                    Error_Msg_N ("container aggregate cannot be "
                      & "both positional and named", N);
                    return;
--- 3268,3279 ----
                 end loop;
              end if;
  
!             if Present (Component_Associations (N))
!               and then not Is_Empty_List (Component_Associations (N))
!             then
!                if Present (Expressions (N))
!                  and then not Is_Empty_List (Expressions (N))
!                then
                    Error_Msg_N ("container aggregate cannot be "
                      & "both positional and named", N);
                    return;
*************** package body Sem_Aggr is
*** 3274,3281 ****
--- 3422,3455 ----
        Analyze_And_Resolve (Base, Typ);
  
        if Is_Array_Type (Typ) then
+          --  For an array_delta_aggregate, the base_expression and each
+          --  expression in every array_component_association shall be of a
+          --  nonlimited type; RM 4.3.4(13/5). However, to prevent repeated
+          --  errors we only check the base expression and not array component
+          --  associations.
+ 
+          if Is_Limited_Type (Etype (Base)) then
+             Error_Msg_N
+               ("array delta aggregate shall be of a nonlimited type", Base);
+             Explain_Limited_Type (Etype (Base), Base);
+          end if;
+ 
           Resolve_Delta_Array_Aggregate (N, Typ);
        else
+ 
+          --  Delta aggregates for record types must use parentheses,
+          --  not square brackets.
+ 
+          if Is_Homogeneous_Aggregate (N) then
+             Error_Msg_N
+               ("delta aggregates for record types must use (), not '[']", N);
+          end if;
+ 
+          --  The base_expression of a record_delta_aggregate can be of a
+          --  limited type only if it is newly constructed; RM 7.5(2.1/5).
+ 
+          Check_Expr_OK_In_Limited_Aggregate (Base);
+ 
           Resolve_Delta_Record_Aggregate (N, Typ);
        end if;
  
*************** package body Sem_Aggr is
*** 3375,3381 ****
                 Next (Choice);
              end loop;
  
!             Analyze_And_Resolve (Expression (Assoc), Component_Type (Typ));
           end if;
  
           Next (Assoc);
--- 3549,3566 ----
                 Next (Choice);
              end loop;
  
!             --  For an array_delta_aggregate, the array_component_association
!             --  shall not use the box symbol <>; RM 4.3.4(11/5).
! 
!             pragma Assert
!               (Box_Present (Assoc) xor Present (Expression (Assoc)));
! 
!             if Box_Present (Assoc) then
!                Error_Msg_N
!                  ("'<'> in array delta aggregate is not allowed", Assoc);
!             else
!                Analyze_And_Resolve (Expression (Assoc), Component_Type (Typ));
!             end if;
           end if;
  
           Next (Assoc);
*************** package body Sem_Aggr is
*** 3579,3585 ****
--- 3764,3780 ----
                ("'<'> in record delta aggregate is not allowed", Assoc);
           else
              Analyze_And_Resolve (Expression (Assoc), Comp_Type);
+ 
+             --  The expression must not be of a limited type; RM 4.3.1(17.4/5)
+ 
+             if Is_Limited_Type (Etype (Expression (Assoc))) then
+                Error_Msg_N
+                  ("expression of a limited type in record delta aggregate " &
+                     "is not allowed",
+                   Expression (Assoc));
+             end if;
           end if;
+ 
           Next (Assoc);
        end loop;
     end Resolve_Delta_Record_Aggregate;
*************** package body Sem_Aggr is
*** 3933,3938 ****
--- 4128,4180 ----
        Check_Function_Writable_Actuals (N);
     end Resolve_Extension_Aggregate;
  
+    ----------------------------------
+    -- Resolve_Null_Array_Aggregate --
+    ----------------------------------
+ 
+    function Resolve_Null_Array_Aggregate (N : Node_Id) return Boolean is
+       --  Never returns False, but declared as a function to match
+       --  other Resolve_Mumble functions.
+ 
+       Loc    : constant Source_Ptr := Sloc (N);
+       Typ    : constant Entity_Id := Etype (N);
+ 
+       Index  : Node_Id;
+       Lo, Hi : Node_Id;
+       Constr : constant List_Id := New_List;
+ 
+    begin
+       --  Attach the list of constraints at the location of the aggregate, so
+       --  the individual constraints can be analyzed.
+ 
+       Set_Parent (Constr, N);
+ 
+       --  Create a constrained subtype with null dimensions
+ 
+       Index := First_Index (Typ);
+       while Present (Index) loop
+          Get_Index_Bounds (Index, L => Lo, H => Hi);
+ 
+          --  The upper bound is the predecessor of the lower bound
+ 
+          Hi := Make_Attribute_Reference
+             (Loc,
+              Prefix         => New_Occurrence_Of (Etype (Index), Loc),
+              Attribute_Name => Name_Pred,
+              Expressions    => New_List (New_Copy_Tree (Lo)));
+ 
+          Append (Make_Range (Loc, New_Copy_Tree (Lo), Hi), Constr);
+          Analyze_And_Resolve (Last (Constr), Etype (Index));
+ 
+          Index := Next_Index (Index);
+       end loop;
+ 
+       Set_Compile_Time_Known_Aggregate (N);
+       Set_Aggregate_Bounds (N, First (Constr));
+ 
+       return True;
+    end Resolve_Null_Array_Aggregate;
+ 
     ------------------------------
     -- Resolve_Record_Aggregate --
     ------------------------------
*************** package body Sem_Aggr is
*** 4836,4844 ****
        --    OTHERS cannot be used.
        --    Positional and named associations cannot be mixed.
  
!       if Present (Component_Associations (N))
!         and then Present (First (Component_Associations (N)))
!       then
           declare
              Assoc : Node_Id;
  
--- 5078,5084 ----
        --    OTHERS cannot be used.
        --    Positional and named associations cannot be mixed.
  
!       if Present (Component_Associations (N)) then
           declare
              Assoc : Node_Id;
  
*************** package body Sem_Aggr is
*** 4896,4901 ****
--- 5136,5150 ----
           return;
        end if;
  
+       --  A record aggregate can only use parentheses
+ 
+       if Nkind (N) = N_Aggregate
+         and then Is_Homogeneous_Aggregate (N)
+       then
+          Error_Msg_N ("record aggregate must use (), not '[']", N);
+          return;
+       end if;
+ 
        --  STEP 2: Verify aggregate structure
  
        Step_2 : declare
*************** package body Sem_Aggr is
*** 5537,5543 ****
              --  Ignore hidden components associated with the position of the
              --  interface tags: these are initialized dynamically.
  
!             if not Present (Related_Type (Component)) then
                 Error_Msg_NE
                   ("no value supplied for component &!", N, Component);
              end if;
--- 5786,5792 ----
              --  Ignore hidden components associated with the position of the
              --  interface tags: these are initialized dynamically.
  
!             if No (Related_Type (Component)) then
                 Error_Msg_NE
                   ("no value supplied for component &!", N, Component);
              end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_aggr.ads gcc-13.1.0/gcc/ada/sem_aggr.ads
*** gcc-12.2.0/gcc/ada/sem_aggr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_aggr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Aggr is
*** 43,46 ****
--- 43,53 ----
  
     --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
+    function Is_Null_Aggregate (N : Node_Id) return Boolean;
+    --  Returns True for a "[]" aggregate (an Ada 2022 feature), even after
+    --  it has been transformed by expansion. Returns False otherwise.
+ 
+    function Is_Null_Array_Aggregate_High_Bound (N : Node_Id) return Boolean;
+    --  Returns True for the high bound of a null array aggregate.
+ 
  end Sem_Aggr;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_attr.adb gcc-13.1.0/gcc/ada/sem_attr.adb
*** gcc-12.2.0/gcc/ada/sem_attr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_attr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 25,30 ****
--- 25,31 ----
  
  with Ada.Characters.Latin_1; use Ada.Characters.Latin_1;
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Casing;         use Casing;
*************** with Rident;         use Rident;
*** 52,57 ****
--- 53,59 ----
  with Rtsfind;        use Rtsfind;
  with Sdefault;
  with Sem;            use Sem;
+ with Sem_Aggr;       use Sem_Aggr;
  with Sem_Aux;        use Sem_Aux;
  with Sem_Cat;        use Sem_Cat;
  with Sem_Ch6;        use Sem_Ch6;
*************** with Tbuild;         use Tbuild;
*** 83,88 ****
--- 85,91 ----
  with Uintp;          use Uintp;
  with Uname;          use Uname;
  with Urealp;         use Urealp;
+ with Warnsw;         use Warnsw;
  
  with System.CRC32;   use System.CRC32;
  
*************** package body Sem_Attr is
*** 176,181 ****
--- 179,185 ----
     Attribute_22 : constant Attribute_Class_Array := Attribute_Class_Array'(
        Attribute_Enum_Rep                     |
        Attribute_Enum_Val                     => True,
+       Attribute_Index                        => True,
        Attribute_Preelaborable_Initialization => True,
        others                                 => False);
  
*************** package body Sem_Attr is
*** 276,281 ****
--- 280,294 ----
        --  sets the type of the attribute to the one specified by Str_Typ (e.g.
        --  Standard_String for 'Image and Standard_Wide_String for 'Wide_Image).
  
+       procedure Analyze_Index_Attribute
+         (Legal   : out Boolean;
+          Spec_Id : out Entity_Id);
+       --  Processing for attribute 'Index. It checks that the attribute appears
+       --  in a pre/postcondition-like aspect or pragma associated with an entry
+       --  family. Flag Legal is set when the above criteria are met. Spec_Id
+       --  denotes the entity of the wrapper of the entry family or Empty if
+       --  the attribute is illegal.
+ 
        procedure Bad_Attribute_For_Predicate;
        --  Output error message for use of a predicate (First, Last, Range) not
        --  allowed with a type that has predicates. If the type is a generic
*************** package body Sem_Attr is
*** 504,510 ****
              begin
                 if Is_Subprogram (Ent) then
                    Set_Address_Taken (Ent);
-                   Kill_Current_Values (Ent);
  
                    --  An Address attribute is accepted when generated by the
                    --  compiler for dispatching operation, and an error is
--- 517,522 ----
*************** package body Sem_Attr is
*** 1080,1086 ****
  
                 else
                    Error_Attr ("% attribute cannot be applied to type", P);
-                   return;
                 end if;
              end if;
           end if;
--- 1092,1097 ----
*************** package body Sem_Attr is
*** 1129,1135 ****
                    --  pointer can be used to modify the variable, and we might
                    --  not detect this, leading to some junk warnings.
  
!                   --  We only do this for source references, since otherwise
                    --  we can suppress warnings, e.g. from the unrestricted
                    --  access generated for validity checks in -gnatVa mode.
  
--- 1140,1146 ----
                    --  pointer can be used to modify the variable, and we might
                    --  not detect this, leading to some junk warnings.
  
!                   --  We do this only for source references, since otherwise
                    --  we can suppress warnings, e.g. from the unrestricted
                    --  access generated for validity checks in -gnatVa mode.
  
*************** package body Sem_Attr is
*** 1419,1433 ****
  
              else
                 Placement_Error;
-                return;
              end if;
  
!          --  'Old attribute reference ok in a _Postconditions procedure
  
           elsif Nkind (Prag) = N_Subprogram_Body
!            and then not Comes_From_Source (Prag)
!            and then Nkind (Corresponding_Spec (Prag)) = N_Defining_Identifier
!            and then Chars (Corresponding_Spec (Prag)) = Name_uPostconditions
           then
              null;
  
--- 1430,1442 ----
  
              else
                 Placement_Error;
              end if;
  
!          --  'Old attribute reference ok in a _Wrapped_Statements procedure
  
           elsif Nkind (Prag) = N_Subprogram_Body
!            and then Ekind (Defining_Entity (Prag)) in Subprogram_Kind
!            and then Present (Wrapped_Statements (Defining_Entity (Prag)))
           then
              null;
  
*************** package body Sem_Attr is
*** 1435,1441 ****
  
           else
              Placement_Error;
-             return;
           end if;
  
           --  Find the related subprogram subject to the aspect or pragma
--- 1444,1449 ----
*************** package body Sem_Attr is
*** 1443,1460 ****
           if Nkind (Prag) = N_Aspect_Specification then
              Subp_Decl := Parent (Prag);
           elsif Nkind (Prag) = N_Subprogram_Body then
!             declare
!                Enclosing_Scope : constant Node_Id :=
!                  Scope (Corresponding_Spec (Prag));
!             begin
!                pragma Assert (Postconditions_Proc (Enclosing_Scope)
!                                = Corresponding_Spec (Prag));
!                Subp_Decl := Parent (Parent (Enclosing_Scope));
!             end;
           else
              Subp_Decl := Find_Related_Declaration_Or_Body (Prag);
           end if;
  
           --  The aspect or pragma where the attribute resides should be
           --  associated with a subprogram declaration or a body. If this is not
           --  the case, then the aspect or pragma is illegal. Return as analysis
--- 1451,1470 ----
           if Nkind (Prag) = N_Aspect_Specification then
              Subp_Decl := Parent (Prag);
           elsif Nkind (Prag) = N_Subprogram_Body then
!             Subp_Decl := Prag;
           else
              Subp_Decl := Find_Related_Declaration_Or_Body (Prag);
           end if;
  
+          --  'Old objects appear in block and extended return statements as
+          --  part of the expansion of contract wrappers.
+ 
+          if Nkind (Subp_Decl) in N_Block_Statement
+                                | N_Extended_Return_Statement
+          then
+             Subp_Decl := Parent (Parent (Subp_Decl));
+          end if;
+ 
           --  The aspect or pragma where the attribute resides should be
           --  associated with a subprogram declaration or a body. If this is not
           --  the case, then the aspect or pragma is illegal. Return as analysis
*************** package body Sem_Attr is
*** 1499,1509 ****
  
           if Modify_Tree_For_C
             and then Chars (Spec_Id) = Name_uParent
!            and then Chars (Scope (Spec_Id)) = Name_uPostconditions
           then
!             --  This situation occurs only when preanalyzing the inlined body
  
!             pragma Assert (not Full_Analysis);
  
              Spec_Id := Scope (Spec_Id);
              pragma Assert (Is_Inlined (Spec_Id));
--- 1509,1519 ----
  
           if Modify_Tree_For_C
             and then Chars (Spec_Id) = Name_uParent
!            and then Chars (Scope (Spec_Id)) = Name_uWrapped_Statements
           then
!             --  This situation occurs only when analyzing the body-to-inline
  
!             pragma Assert (Inside_A_Generic);
  
              Spec_Id := Scope (Spec_Id);
              pragma Assert (Is_Inlined (Spec_Id));
*************** package body Sem_Attr is
*** 1586,1591 ****
--- 1596,1771 ----
           end if;
        end Analyze_Image_Attribute;
  
+       -----------------------------
+       -- Analyze_Index_Attribute --
+       -----------------------------
+ 
+       procedure Analyze_Index_Attribute
+         (Legal   : out Boolean;
+          Spec_Id : out Entity_Id)
+       is
+          procedure Check_Placement_In_Check (Prag : Node_Id);
+          --  Verify that the attribute appears within pragma Check that mimics
+          --  a postcondition.
+ 
+          procedure Placement_Error;
+          pragma No_Return (Placement_Error);
+          --  Emit a general error when the attributes does not appear in a
+          --  precondition or postcondition aspect or pragma, and then raises
+          --  Bad_Attribute to avoid any further semantic processing.
+ 
+          ------------------------------
+          -- Check_Placement_In_Check --
+          ------------------------------
+ 
+          procedure Check_Placement_In_Check (Prag : Node_Id) is
+             Args : constant List_Id := Pragma_Argument_Associations (Prag);
+             Nam  : constant Name_Id := Chars (Get_Pragma_Arg (First (Args)));
+ 
+          begin
+             --  The "Name" argument of pragma Check denotes a precondition or
+             --  postcondition.
+ 
+             if Nam in Name_Post
+                     | Name_Postcondition
+                     | Name_Pre
+                     | Name_Precondition
+                     | Name_Refined_Post
+             then
+                null;
+ 
+             --  Otherwise the placement of the attribute is illegal
+ 
+             else
+                Placement_Error;
+             end if;
+          end Check_Placement_In_Check;
+ 
+          ---------------------
+          -- Placement_Error --
+          ---------------------
+ 
+          procedure Placement_Error is
+          begin
+             Error_Attr
+               ("attribute % can only appear in pre- or postcondition", P);
+          end Placement_Error;
+ 
+          --  Local variables
+ 
+          Prag      : Node_Id;
+          Prag_Nam  : Name_Id;
+          Subp_Decl : Node_Id;
+ 
+       --  Start of processing for Analyze_Index_Attribute
+ 
+       begin
+          --  Assume that the attribute is illegal
+ 
+          Legal   := False;
+          Spec_Id := Empty;
+ 
+          --  Skip processing during preanalysis of class-wide preconditions and
+          --  postconditions since at this stage the expression is not installed
+          --  yet on its definite context.
+ 
+          if Inside_Class_Condition_Preanalysis then
+             Legal   := True;
+             Spec_Id := Current_Scope;
+             return;
+          end if;
+ 
+          --  Traverse the parent chain to find the aspect or pragma where the
+          --  attribute resides.
+ 
+          Prag := N;
+          while Present (Prag) loop
+             if Nkind (Prag) in N_Aspect_Specification | N_Pragma then
+                exit;
+ 
+             --  Prevent the search from going too far
+ 
+             elsif Is_Body_Or_Package_Declaration (Prag) then
+                exit;
+             end if;
+ 
+             Prag := Parent (Prag);
+          end loop;
+ 
+          --  The attribute is allowed to appear only in precondition and
+          --  postcondition-like aspects or pragmas.
+ 
+          if Nkind (Prag) in N_Aspect_Specification | N_Pragma then
+             if Nkind (Prag) = N_Aspect_Specification then
+                Prag_Nam := Chars (Identifier (Prag));
+             else
+                Prag_Nam := Pragma_Name (Prag);
+             end if;
+ 
+             if Prag_Nam = Name_Check then
+                Check_Placement_In_Check (Prag);
+ 
+             elsif Prag_Nam in Name_Post
+                             | Name_Postcondition
+                             | Name_Pre
+                             | Name_Precondition
+                             | Name_Refined_Post
+             then
+                null;
+ 
+             else
+                Placement_Error;
+             end if;
+ 
+          --  Otherwise the placement of the attribute is illegal
+ 
+          else
+             Placement_Error;
+          end if;
+ 
+          --  Find the related subprogram subject to the aspect or pragma
+ 
+          if Nkind (Prag) = N_Aspect_Specification then
+             Subp_Decl := Parent (Prag);
+          else
+             Subp_Decl := Find_Related_Declaration_Or_Body (Prag);
+          end if;
+ 
+          --  The aspect or pragma where the attribute resides should be
+          --  associated with a subprogram declaration or a body since the
+          --  analysis of pre-/postconditions of entry and entry families is
+          --  performed in their wrapper subprogram. If this is not the case,
+          --  then the aspect or pragma is illegal and no further analysis is
+          --  required.
+ 
+          if Nkind (Subp_Decl) not in N_Subprogram_Body
+                                    | N_Subprogram_Declaration
+          then
+             return;
+          end if;
+ 
+          Spec_Id := Unique_Defining_Entity (Subp_Decl);
+ 
+          --  If we get here and Spec_Id denotes the entity of the entry wrapper
+          --  (or the postcondition procedure of the entry wrapper) then the
+          --  attribute is legal.
+ 
+          if Is_Entry_Wrapper (Spec_Id) then
+             Legal := True;
+ 
+          elsif Chars (Spec_Id) = Name_uWrapped_Statements
+            and then Is_Entry_Wrapper (Scope (Spec_Id))
+          then
+             Spec_Id := Scope (Spec_Id);
+             Legal   := True;
+ 
+          --  Otherwise the attribute is illegal and we return Empty
+ 
+          else
+             Spec_Id := Empty;
+          end if;
+       end Analyze_Index_Attribute;
+ 
        ---------------------------------
        -- Bad_Attribute_For_Predicate --
        ---------------------------------
*************** package body Sem_Attr is
*** 2693,2700 ****
  
        procedure Check_Task_Prefix is
        begin
-          Analyze (P);
- 
           --  Ada 2005 (AI-345): Attribute 'Terminated can be applied to
           --  task interface class-wide types.
  
--- 2873,2878 ----
*************** package body Sem_Attr is
*** 3253,3259 ****
           Check_E0;
           Address_Checks;
           Check_Not_Incomplete_Type;
!          Set_Etype (N, RTE (RE_Address));
  
        ------------------
        -- Address_Size --
--- 3431,3464 ----
           Check_E0;
           Address_Checks;
           Check_Not_Incomplete_Type;
! 
!          --  If the prefix is a dereference of a value whose associated access
!          --  type has been specified with aspect Designated_Storage_Model, then
!          --  use the associated Storage_Model_Type's address type as the type
!          --  of the attribute. Otherwise we use System.Address as usual. This
!          --  isn't normally legit for a predefined attribute, but this is for
!          --  our own extension to addressing and currently requires extensions
!          --  to be enabled (such as with -gnatX0).
! 
!          declare
!             Prefix_Obj : constant Node_Id := Get_Referenced_Object (P);
!             Addr_Type  : Entity_Id        := RTE (RE_Address);
!          begin
!             if Nkind (Prefix_Obj) = N_Explicit_Dereference then
!                declare
!                   P_Type : constant Entity_Id := Etype (Prefix (Prefix_Obj));
! 
!                   use Storage_Model_Support;
!                begin
!                   if Has_Designated_Storage_Model_Aspect (P_Type) then
!                      Addr_Type := Storage_Model_Address_Type
!                                     (Storage_Model_Object (P_Type));
!                   end if;
!                end;
!             end if;
! 
!             Set_Etype (N, Addr_Type);
!          end;
  
        ------------------
        -- Address_Size --
*************** package body Sem_Attr is
*** 3421,3427 ****
                New_Occurrence_Of (RTE (RE_Low_Order_First), Loc));
           end if;
  
-          Set_Etype (N, RTE (RE_Bit_Order));
           Resolve (N);
  
           --  Reset incorrect indication of staticness
--- 3626,3631 ----
*************** package body Sem_Attr is
*** 3487,3493 ****
  
           else
              Error_Attr ("invalid entry name", N);
-             return;
           end if;
  
           for J in reverse 0 .. Scope_Stack.Last loop
--- 3691,3696 ----
*************** package body Sem_Attr is
*** 3567,3577 ****
                      Ekind (Entity (P)) /= E_Procedure)
           then
              Error_Attr ("invalid prefix for % attribute", P);
-             Set_Address_Taken (Entity (P));
  
           --  Issue an error if the prefix denotes an eliminated subprogram
  
           else
              Check_For_Eliminated_Subprogram (P, Entity (P));
           end if;
  
--- 3770,3780 ----
                      Ekind (Entity (P)) /= E_Procedure)
           then
              Error_Attr ("invalid prefix for % attribute", P);
  
           --  Issue an error if the prefix denotes an eliminated subprogram
  
           else
+             Set_Address_Taken (Entity (P));
              Check_For_Eliminated_Subprogram (P, Entity (P));
           end if;
  
*************** package body Sem_Attr is
*** 3714,3720 ****
  
              elsif (Is_Generic_Type (P_Type)
                      or else Is_Generic_Actual_Type (P_Type))
!               and then Extensions_Allowed
              then
                 return;
              end if;
--- 3917,3923 ----
  
              elsif (Is_Generic_Type (P_Type)
                      or else Is_Generic_Actual_Type (P_Type))
!               and then All_Extensions_Allowed
              then
                 return;
              end if;
*************** package body Sem_Attr is
*** 3766,3772 ****
                 else
                    Error_Attr ("invalid entry family name", P);
                 end if;
-                return;
  
              else
                 Ent := Entity (Prefix (P));
--- 3969,3974 ----
*************** package body Sem_Attr is
*** 3781,3787 ****
  
           else
              Error_Attr ("invalid entry name", N);
-             return;
           end if;
  
           for J in reverse 0 .. Scope_Stack.Last loop
--- 3983,3988 ----
*************** package body Sem_Attr is
*** 4272,4278 ****
        -- Has_Same_Storage --
        ----------------------
  
!       when Attribute_Has_Same_Storage =>
           Check_E1;
  
           --  The arguments must be objects of any type
--- 4473,4481 ----
        -- Has_Same_Storage --
        ----------------------
  
!       when Attribute_Has_Same_Storage
!          | Attribute_Overlaps_Storage
!       =>
           Check_E1;
  
           --  The arguments must be objects of any type
*************** package body Sem_Attr is
*** 4283,4288 ****
--- 4486,4539 ----
           Check_Object_Reference (E1);
           Set_Etype (N, Standard_Boolean);
  
+       -----------
+       -- Index --
+       -----------
+ 
+       when Attribute_Index => Index : declare
+          Ent     : Entity_Id;
+          Legal   : Boolean;
+          Spec_Id : Entity_Id;
+ 
+       begin
+          Check_E0;
+          Analyze_Index_Attribute (Legal, Spec_Id);
+ 
+          if not Legal or else No (Spec_Id) then
+             Error_Attr ("attribute % must apply to entry family", P);
+          end if;
+ 
+          --  Legality checks
+ 
+          if Nkind (P) in N_Identifier | N_Expanded_Name then
+             Ent := Entity (P);
+ 
+             if Ekind (Ent) /= E_Entry_Family then
+                Error_Attr
+                  ("attribute % must apply to entry family", P);
+ 
+             --  Analysis of pre/postconditions of an entry [family] occurs when
+             --  the conditions are relocated to the contract wrapper procedure
+             --  (see subprogram Build_Contract_Wrapper).
+ 
+             elsif Contract_Wrapper (Ent) /= Spec_Id then
+                Error_Attr
+                  ("attribute % must apply to current entry family", P);
+             end if;
+ 
+          elsif Nkind (P) in N_Indexed_Component
+                           | N_Selected_Component
+          then
+             Error_Attr
+               ("attribute % must apply to current entry family", P);
+ 
+          else
+             Error_Attr ("invalid entry family name", N);
+          end if;
+ 
+          Set_Etype (N, Entry_Index_Type (Ent));
+       end Index;
+ 
        -----------------------
        -- Has_Tagged_Values --
        -----------------------
*************** package body Sem_Attr is
*** 4302,4308 ****
  
        when Attribute_Identity =>
           Check_E0;
-          Analyze (P);
  
           if Etype (P) = Standard_Exception_Type then
              Set_Etype (N, RTE (RE_Exception_Id));
--- 4553,4558 ----
*************** package body Sem_Attr is
*** 4477,4495 ****
  
           Set_Etype (N, Standard_Boolean);
  
-       ---------------
-       -- Lock_Free --
-       ---------------
- 
-       when Attribute_Lock_Free =>
-          Check_E0;
-          Set_Etype (N, Standard_Boolean);
- 
-          if not Is_Protected_Type (P_Type) then
-             Error_Attr_P
-               ("prefix of % attribute must be a protected object");
-          end if;
- 
        ----------------
        -- Loop_Entry --
        ----------------
--- 4727,4732 ----
*************** package body Sem_Attr is
*** 4527,4533 ****
                    Error_Attr
                      ("prefix of attribute % cannot reference local entities",
                       Nod);
-                   return Abandon;
                 else
                    return OK;
                 end if;
--- 4764,4769 ----
*************** package body Sem_Attr is
*** 4769,4775 ****
              else
                 Error_Attr
                   ("attribute % cannot appear in body or accept statement", N);
-                exit;
              end if;
           end loop;
  
--- 5005,5010 ----
*************** package body Sem_Attr is
*** 5163,5169 ****
                    Error_Attr
                      ("prefix of attribute % cannot reference local entities",
                       Nod);
-                   return Abandon;
  
                 --  Otherwise keep inspecting the prefix
  
--- 5398,5403 ----
*************** package body Sem_Attr is
*** 5336,5356 ****
           end if;
        end Old;
  
-       ----------------------
-       -- Overlaps_Storage --
-       ----------------------
- 
-       when Attribute_Overlaps_Storage =>
-          Check_E1;
- 
-          --  Both arguments must be objects of any type
- 
-          Analyze_And_Resolve (P);
-          Analyze_And_Resolve (E1);
-          Check_Object_Reference (P);
-          Check_Object_Reference (E1);
-          Set_Etype (N, Standard_Boolean);
- 
        ------------
        -- Output --
        ------------
--- 5570,5575 ----
*************** package body Sem_Attr is
*** 5506,5513 ****
  
           --  The prefix must be a protected object (AARM D.5.2 (2/2))
  
-          Analyze (P);
- 
           if Is_Protected_Type (Etype (P))
             or else (Is_Access_Type (Etype (P))
                        and then Is_Protected_Type (Designated_Type (Etype (P))))
--- 5725,5730 ----
*************** package body Sem_Attr is
*** 5635,5640 ****
--- 5852,5863 ----
  
              elsif Present (Over_Id) and then Pref_Id = Over_Id then
                 return True;
+ 
+             --  When a qualified name is used for the prefix, homonyms may come
+             --  before the current function in the homonym chain.
+ 
+             elsif Has_Homonym (Pref_Id) then
+                return Denote_Same_Function (Homonym (Pref_Id), Spec_Id);
              end if;
  
              --  Otherwise the prefix does not denote the related subprogram
*************** package body Sem_Attr is
*** 5686,5701 ****
  
           elsif not Legal then
              Error_Attr ("prefix of % attribute must be a function", P);
-             return;
           end if;
  
!          --  Attribute 'Result is part of a _Postconditions procedure. There is
           --  no need to perform the semantic checks below as they were already
           --  verified when the attribute was analyzed in its original context.
           --  Instead, rewrite the attribute as a reference to formal parameter
!          --  _Result of the _Postconditions procedure.
  
!          if Chars (Spec_Id) = Name_uPostconditions
             or else
               (In_Inlined_C_Postcondition
                 and then Nkind (Parent (Spec_Id)) = N_Block_Statement)
--- 5909,5923 ----
  
           elsif not Legal then
              Error_Attr ("prefix of % attribute must be a function", P);
           end if;
  
!          --  Attribute 'Result is part of postconditions expansion. There is
           --  no need to perform the semantic checks below as they were already
           --  verified when the attribute was analyzed in its original context.
           --  Instead, rewrite the attribute as a reference to formal parameter
!          --  _Result of the _Wrapped_Statements procedure.
  
!          if Chars (Spec_Id) = Name_uWrapped_Statements
             or else
               (In_Inlined_C_Postcondition
                 and then Nkind (Parent (Spec_Id)) = N_Block_Statement)
*************** package body Sem_Attr is
*** 5782,5792 ****
  
        when Attribute_Reduce =>
           Check_E2;
! 
!          if not Extensions_Allowed then
!             Error_Attr
!               ("% attribute only supported under -gnatX", P);
!          end if;
  
           declare
              Stream : constant Node_Id := Prefix (N);
--- 6004,6010 ----
  
        when Attribute_Reduce =>
           Check_E2;
!          Error_Msg_Ada_2022_Feature ("Reduce attribute", Sloc (N));
  
           declare
              Stream : constant Node_Id := Prefix (N);
*************** package body Sem_Attr is
*** 5807,5814 ****
                 --  Verify that prefix can be iterated upon.
  
                 if Is_Array_Type (Typ)
!                  or else Present (Find_Aspect (Typ, Aspect_Default_Iterator))
!                  or else Present (Find_Aspect (Typ, Aspect_Iterable))
                 then
                    null;
                 else
--- 6025,6032 ----
                 --  Verify that prefix can be iterated upon.
  
                 if Is_Array_Type (Typ)
!                  or else Has_Aspect (Typ, Aspect_Default_Iterator)
!                  or else Has_Aspect (Typ, Aspect_Iterable)
                 then
                    null;
                 else
*************** package body Sem_Attr is
*** 5847,5853 ****
  
        when Attribute_Ref =>
           Check_E1;
-          Analyze (P);
  
           if Nkind (P) /= N_Expanded_Name
             or else not Is_RTE (P_Type, RE_Address)
--- 6065,6070 ----
*************** package body Sem_Attr is
*** 5875,5881 ****
  
        begin
           Check_E1;
-          Analyze (P);
           Check_System_Prefix;
  
           --  No_Dependence case
--- 6092,6097 ----
*************** package body Sem_Attr is
*** 6238,6244 ****
              --  type to the pool object's type.
  
              else
!                if not Present (Get_Rep_Pragma (Etype (Entity (N)),
                                                 Name_Simple_Storage_Pool_Type))
                 then
                    Error_Attr_P
--- 6454,6460 ----
              --  type to the pool object's type.
  
              else
!                if No (Get_Rep_Pragma (Etype (Entity (N)),
                                                 Name_Simple_Storage_Pool_Type))
                 then
                    Error_Attr_P
*************** package body Sem_Attr is
*** 6457,6463 ****
           Val : Uint;
        begin
           Check_E1;
-          Analyze (P);
           Check_System_Prefix;
  
           Generate_Reference (RTE (RE_Address), P);
--- 6673,6678 ----
*************** package body Sem_Attr is
*** 7215,7224 ****
           if Comes_From_Source (N) then
              Check_Object_Reference (P);
  
              --  Do not emit any diagnostics related to private types to avoid
              --  disclosing the structure of the type.
  
!             if Is_Private_Type (P_Type) then
  
                 --  Attribute 'Valid_Scalars is not supported on private tagged
                 --  types due to a code generation issue. Is_Visible_Component
--- 7430,7448 ----
           if Comes_From_Source (N) then
              Check_Object_Reference (P);
  
+             --  Attribute 'Valid_Scalars is illegal on unchecked union types
+             --  regardles of the privacy, because it is not always guaranteed
+             --  that the components are retrievable based on whether the
+             --  discriminants are inferable.
+ 
+             if Has_Unchecked_Union (Validated_View (P_Type)) then
+                Error_Attr_P
+                  ("attribute % not allowed for Unchecked_Union type");
+ 
              --  Do not emit any diagnostics related to private types to avoid
              --  disclosing the structure of the type.
  
!             elsif Is_Private_Type (P_Type) then
  
                 --  Attribute 'Valid_Scalars is not supported on private tagged
                 --  types due to a code generation issue. Is_Visible_Component
*************** package body Sem_Attr is
*** 7248,7262 ****
                      ("??attribute % always True, no scalars to check", P);
                    Set_Boolean_Result (N, True);
                 end if;
- 
-                --  Attribute 'Valid_Scalars is illegal on unchecked union types
-                --  because it is not always guaranteed that the components are
-                --  retrievable based on whether the discriminants are inferable
- 
-                if Has_Unchecked_Union (P_Type) then
-                   Error_Attr_P
-                     ("attribute % not allowed for Unchecked_Union type");
-                end if;
              end if;
           end if;
  
--- 7472,7477 ----
*************** package body Sem_Attr is
*** 8140,8154 ****
  
              return;
  
-          --  For Lock_Free, we apply the attribute to the type of the object.
-          --  This is allowed since we have already verified that the type is a
-          --  protected type.
- 
-          elsif Id = Attribute_Lock_Free then
-             P_Entity := Etype (P);
- 
-          --  No other attributes for objects are folded
- 
           else
              Check_Expressions;
              return;
--- 8355,8360 ----
*************** package body Sem_Attr is
*** 8221,8226 ****
--- 8427,8438 ----
              or else (Is_Static_Expression (E2)
                        and then Is_Scalar_Type (Etype (E1))))
          and then Id /= Attribute_Descriptor_Size
+ 
+         --  If the front-end conjures up Integer'Pred (Integer'First)
+         --  as the high bound of a null array aggregate, then we don't
+         --  want to reject that as an illegal static expression.
+ 
+         and then not Is_Null_Array_Aggregate_High_Bound (N)
        then
           Static := True;
           Set_Is_Static_Expression (N, True);
*************** package body Sem_Attr is
*** 8272,8278 ****
               Id = Attribute_Has_Access_Values            or else
               Id = Attribute_Has_Discriminants            or else
               Id = Attribute_Has_Tagged_Values            or else
-              Id = Attribute_Lock_Free                    or else
               Id = Attribute_Preelaborable_Initialization or else
               Id = Attribute_Type_Class                   or else
               Id = Attribute_Unconstrained_Array          or else
--- 8484,8489 ----
*************** package body Sem_Attr is
*** 8391,8397 ****
        --  only the First, Last and Length attributes are possibly static.
  
        --  Atomic_Always_Lock_Free, Definite, Descriptor_Size, Has_Access_Values
!       --  Has_Discriminants, Has_Tagged_Values, Lock_Free, Type_Class, and
        --  Unconstrained_Array are again exceptions, because they apply as well
        --  to unconstrained types.
  
--- 8602,8608 ----
        --  only the First, Last and Length attributes are possibly static.
  
        --  Atomic_Always_Lock_Free, Definite, Descriptor_Size, Has_Access_Values
!       --  Has_Discriminants, Has_Tagged_Values, Type_Class, and
        --  Unconstrained_Array are again exceptions, because they apply as well
        --  to unconstrained types.
  
*************** package body Sem_Attr is
*** 8410,8416 ****
              Id = Attribute_Has_Access_Values            or else
              Id = Attribute_Has_Discriminants            or else
              Id = Attribute_Has_Tagged_Values            or else
-             Id = Attribute_Lock_Free                    or else
              Id = Attribute_Preelaborable_Initialization or else
              Id = Attribute_Type_Class                   or else
              Id = Attribute_Unconstrained_Array          or else
--- 8621,8626 ----
*************** package body Sem_Attr is
*** 9022,9034 ****
        --  Image is a scalar attribute, but is never static, because it is
        --  not a static function (having a non-scalar argument (RM 4.9(22))
        --  However, we can constant-fold the image of an enumeration literal
!       --  if names are available.
  
        when Attribute_Image =>
           if Is_Entity_Name (E1)
             and then Ekind (Entity (E1)) = E_Enumeration_Literal
             and then not Discard_Names (First_Subtype (Etype (E1)))
             and then not Global_Discard_Names
           then
              declare
                 Lit : constant Entity_Id := Entity (E1);
--- 9232,9246 ----
        --  Image is a scalar attribute, but is never static, because it is
        --  not a static function (having a non-scalar argument (RM 4.9(22))
        --  However, we can constant-fold the image of an enumeration literal
!       --  if names are available and default Image implementation has not
!       --  been overridden.
  
        when Attribute_Image =>
           if Is_Entity_Name (E1)
             and then Ekind (Entity (E1)) = E_Enumeration_Literal
             and then not Discard_Names (First_Subtype (Etype (E1)))
             and then not Global_Discard_Names
+            and then not Has_Aspect (Etype (E1), Aspect_Put_Image)
           then
              declare
                 Lit : constant Entity_Id := Entity (E1);
*************** package body Sem_Attr is
*** 9111,9134 ****
                 True);
           end if;
  
-       ---------------
-       -- Lock_Free --
-       ---------------
- 
-       when Attribute_Lock_Free => Lock_Free : declare
-          V : constant Entity_Id := Boolean_Literals (Uses_Lock_Free (P_Type));
- 
-       begin
-          Rewrite (N, New_Occurrence_Of (V, Loc));
- 
-          --  Analyze and resolve as boolean. Note that this attribute is a
-          --  static attribute in GNAT.
- 
-          Analyze_And_Resolve (N, Standard_Boolean);
-          Static := True;
-          Set_Is_Static_Expression (N);
-       end Lock_Free;
- 
        ----------
        -- Last --
        ----------
--- 9323,9328 ----
*************** package body Sem_Attr is
*** 9706,9711 ****
--- 9900,9924 ----
  
                 Check_Expressions;
                 return;
+ 
+             --  Rewrite the FE-constructed high bound of a null array
+             --  aggregate to raise CE.
+ 
+             elsif Is_Signed_Integer_Type (P_Type)
+               and then Expr_Value (E1) =
+                          Expr_Value (Type_Low_Bound (P_Base_Type))
+               and then Is_Null_Array_Aggregate_High_Bound (N)
+             then
+                Apply_Compile_Time_Constraint_Error
+                  (N, "Pred of `&''First`",
+                   CE_Overflow_Check_Failed,
+                   Ent  => P_Base_Type,
+                   Warn => True);
+ 
+                Rewrite (N, Make_Raise_Constraint_Error (Sloc (N),
+                              Reason => CE_Overflow_Check_Failed));
+                Set_Etype (N, P_Base_Type);
+                return;
              end if;
  
              Fold_Uint (N, Expr_Value (E1) - 1, Static);
*************** package body Sem_Attr is
*** 10609,10614 ****
--- 10822,10828 ----
           | Attribute_First_Bit
           | Attribute_Img
           | Attribute_Input
+          | Attribute_Index
           | Attribute_Initialized
           | Attribute_Last_Bit
           | Attribute_Library_Level
*************** package body Sem_Attr is
*** 10723,10794 ****
        It       : Interp;
        Nom_Subt : Entity_Id;
  
-       procedure Accessibility_Message;
-       --  Error, or warning within an instance, if the static accessibility
-       --  rules of 3.10.2 are violated.
- 
        function Declared_Within_Generic_Unit
          (Entity       : Entity_Id;
           Generic_Unit : Node_Id) return Boolean;
        --  Returns True if Declared_Entity is declared within the declarative
        --  region of Generic_Unit; otherwise returns False.
  
-       function Prefix_With_Safe_Accessibility_Level return Boolean;
-       --  Return True if the prefix does not have a value conversion of an
-       --  array because a value conversion is like an aggregate with respect
-       --  to determining accessibility level (RM 3.10.2); even if evaluation
-       --  of a value conversion is guaranteed to not create a new object,
-       --  accessibility rules are defined as if it might.
- 
-       ---------------------------
-       -- Accessibility_Message --
-       ---------------------------
- 
-       procedure Accessibility_Message is
-          Indic : Node_Id := Parent (Parent (N));
- 
-       begin
-          --  In an instance, this is a runtime check, but one we
-          --  know will fail, so generate an appropriate warning.
- 
-          if In_Instance_Body then
-             Error_Msg_Warn := SPARK_Mode /= On;
-             Error_Msg_F
-               ("non-local pointer cannot point to local object<<", P);
-             Error_Msg_F ("\Program_Error [<<", P);
-             Rewrite (N,
-               Make_Raise_Program_Error (Loc,
-                 Reason => PE_Accessibility_Check_Failed));
-             Set_Etype (N, Typ);
-             return;
- 
-          else
-             Error_Msg_F ("non-local pointer cannot point to local object", P);
- 
-             --  Check for case where we have a missing access definition
- 
-             if Is_Record_Type (Current_Scope)
-               and then
-                 Nkind (Parent (N)) in N_Discriminant_Association
-                                     | N_Index_Or_Discriminant_Constraint
-             then
-                Indic := Parent (Parent (N));
-                while Present (Indic)
-                  and then Nkind (Indic) /= N_Subtype_Indication
-                loop
-                   Indic := Parent (Indic);
-                end loop;
- 
-                if Present (Indic) then
-                   Error_Msg_NE
-                     ("\use an access definition for" &
-                      " the access discriminant of&",
-                      N, Entity (Subtype_Mark (Indic)));
-                end if;
-             end if;
-          end if;
-       end Accessibility_Message;
- 
        ----------------------------------
        -- Declared_Within_Generic_Unit --
        ----------------------------------
--- 10937,10948 ----
*************** package body Sem_Attr is
*** 10816,10885 ****
           return False;
        end Declared_Within_Generic_Unit;
  
-       ------------------------------------------
-       -- Prefix_With_Safe_Accessibility_Level --
-       ------------------------------------------
- 
-       function Prefix_With_Safe_Accessibility_Level return Boolean is
-          function Safe_Value_Conversions return Boolean;
-          --  Return False if the prefix has a value conversion of an array type
- 
-          ----------------------------
-          -- Safe_Value_Conversions --
-          ----------------------------
- 
-          function Safe_Value_Conversions return Boolean is
-             PP : Node_Id := P;
- 
-          begin
-             loop
-                if Nkind (PP) in N_Selected_Component | N_Indexed_Component then
-                   PP := Prefix (PP);
- 
-                elsif Comes_From_Source (PP)
-                  and then Nkind (PP) in N_Type_Conversion
-                                       | N_Unchecked_Type_Conversion
-                  and then Is_Array_Type (Etype (PP))
-                then
-                   return False;
- 
-                elsif Comes_From_Source (PP)
-                  and then Nkind (PP) = N_Qualified_Expression
-                  and then Is_Array_Type (Etype (PP))
-                  and then Nkind (Original_Node (Expression (PP))) in
-                             N_Aggregate | N_Extension_Aggregate
-                then
-                   return False;
- 
-                else
-                   exit;
-                end if;
-             end loop;
- 
-             return True;
-          end Safe_Value_Conversions;
- 
-       --  Start of processing for Prefix_With_Safe_Accessibility_Level
- 
-       begin
-          --  No check required for unchecked and unrestricted access
- 
-          if Attr_Id = Attribute_Unchecked_Access
-            or else Attr_Id = Attribute_Unrestricted_Access
-          then
-             return True;
- 
-          --  Check value conversions
- 
-          elsif Ekind (Btyp) = E_General_Access_Type
-            and then not Safe_Value_Conversions
-          then
-             return False;
-          end if;
- 
-          return True;
-       end Prefix_With_Safe_Accessibility_Level;
- 
     --  Start of processing for Resolve_Attribute
  
     begin
--- 10970,10975 ----
*************** package body Sem_Attr is
*** 10921,10963 ****
           =>
              --  Note possible modification if we have a variable
  
!             if Is_Variable (P) then
!                declare
!                   PN : constant Node_Id := Parent (N);
!                   Nm : Node_Id;
! 
!                   Note : Boolean := True;
!                   --  Skip this for the case of Unrestricted_Access occurring
!                   --  in the context of a Valid check, since this otherwise
!                   --  leads to a missed warning (the Valid check does not
!                   --  really modify!) If this case, Note will be reset to
!                   --  False.
! 
!                   --  Skip it as well if the type is an Access_To_Constant,
!                   --  given that no use of the value can modify the prefix.
! 
!                begin
!                   if Attr_Id = Attribute_Unrestricted_Access
!                     and then Nkind (PN) = N_Function_Call
!                   then
!                      Nm := Name (PN);
! 
!                      if Nkind (Nm) = N_Expanded_Name
!                        and then Chars (Nm) = Name_Valid
!                        and then Nkind (Prefix (Nm)) = N_Identifier
!                        and then Chars (Prefix (Nm)) = Name_Attr_Long_Float
!                      then
!                         Note := False;
!                      end if;
! 
!                   elsif Is_Access_Constant (Typ) then
!                      Note := False;
!                   end if;
! 
!                   if Note then
!                      Note_Possible_Modification (P, Sure => False);
!                   end if;
!                end;
              end if;
  
              --  Case where prefix is an entity name
--- 11011,11020 ----
           =>
              --  Note possible modification if we have a variable
  
!             if Is_Variable (P)
!               and then not Is_Access_Constant (Typ)
!             then
!                Note_Possible_Modification (P, Sure => False);
              end if;
  
              --  Case where prefix is an entity name
*************** package body Sem_Attr is
*** 11388,11396 ****
                 end if;
              end if;
  
!             if (Attr_Id = Attribute_Access
!                   or else
!                 Attr_Id = Attribute_Unchecked_Access)
                and then (Ekind (Btyp) = E_General_Access_Type
                           or else Ekind (Btyp) = E_Anonymous_Access_Type)
              then
--- 11445,11451 ----
                 end if;
              end if;
  
!             if Attr_Id in Attribute_Access | Attribute_Unchecked_Access
                and then (Ekind (Btyp) = E_General_Access_Type
                           or else Ekind (Btyp) = E_Anonymous_Access_Type)
              then
*************** package body Sem_Attr is
*** 11600,11606 ****
                        Intval (Accessibility_Level (P, Dynamic_Level))
                          > Deepest_Type_Access_Level (Btyp)
                    then
!                      Accessibility_Message;
                       return;
                    end if;
                 end;
--- 11655,11661 ----
                        Intval (Accessibility_Level (P, Dynamic_Level))
                          > Deepest_Type_Access_Level (Btyp)
                    then
!                      Accessibility_Message (N, Typ);
                       return;
                    end if;
                 end;
*************** package body Sem_Attr is
*** 11626,11632 ****
                   and then Ekind (Btyp) = E_Access_Protected_Subprogram_Type
                   and then Attr_Id /= Attribute_Unrestricted_Access
                 then
!                   Accessibility_Message;
                    return;
  
                 --  AI05-0225: If the context is not an access to protected
--- 11681,11687 ----
                   and then Ekind (Btyp) = E_Access_Protected_Subprogram_Type
                   and then Attr_Id /= Attribute_Unrestricted_Access
                 then
!                   Accessibility_Message (N, Typ);
                    return;
  
                 --  AI05-0225: If the context is not an access to protected
*************** package body Sem_Attr is
*** 11785,11792 ****
              --  array type since a value conversion is like an aggregate with
              --  respect to determining accessibility level (RM 3.10.2).
  
!             if not Prefix_With_Safe_Accessibility_Level then
!                Accessibility_Message;
                 return;
              end if;
  
--- 11840,11847 ----
              --  array type since a value conversion is like an aggregate with
              --  respect to determining accessibility level (RM 3.10.2).
  
!             if not Prefix_With_Safe_Accessibility_Level (N, Typ) then
!                Accessibility_Message (N, Typ);
                 return;
              end if;
  
*************** package body Sem_Attr is
*** 11900,11910 ****
                       elsif Scope (Subp_Id) /= Current_Scope then
                          null;
  
                        --  Analyze the body of the expression function to freeze
!                       --  the expression. This takes care of the case where the
!                       --  'Access is part of dispatch table initialization and
!                       --  the generated body of the expression function has not
!                       --  been analyzed yet.
  
                       else
                          Analyze (Subp_Body);
--- 11955,11969 ----
                       elsif Scope (Subp_Id) /= Current_Scope then
                          null;
  
+                      --  Dispatch tables are not a freeze point either
+ 
+                      elsif Nkind (Parent (N)) = N_Unchecked_Type_Conversion
+                        and then Is_Dispatch_Table_Entity (Etype (Parent (N)))
+                      then
+                         null;
+ 
                        --  Analyze the body of the expression function to freeze
!                       --  the expression.
  
                       else
                          Analyze (Subp_Body);
*************** package body Sem_Attr is
*** 12067,12073 ****
           --  if it is an element of an entry family, the index itself may
           --  have to be resolved because it can be a general expression.
  
!          when Attribute_Count =>
              if Nkind (P) = N_Indexed_Component
                and then Is_Entity_Name (Prefix (P))
              then
--- 12126,12134 ----
           --  if it is an element of an entry family, the index itself may
           --  have to be resolved because it can be a general expression.
  
!          when Attribute_Count
!             | Attribute_Index
!          =>
              if Nkind (P) = N_Indexed_Component
                and then Is_Entity_Name (Prefix (P))
              then
*************** package body Sem_Attr is
*** 12101,12106 ****
--- 12162,12173 ----
           when Attribute_Enabled =>
              null;
  
+          -----------
+          -- Index --
+          -----------
+ 
+          --  Processing is shared with Count
+ 
           ----------------
           -- Loop_Entry --
           ----------------
*************** package body Sem_Attr is
*** 12509,12514 ****
--- 12576,12603 ----
                 when others => null;
              end case;
  
+             --  Ensure that attribute expressions are resolved at this stage;
+             --  required for preanalyzed references to discriminants since
+             --  their resolution (and expansion) will take care of updating
+             --  their Entity attribute to reference their discriminal.
+ 
+             if Expander_Active
+               and then Present (Expressions (N))
+             then
+                declare
+                   Expr : Node_Id := First (Expressions (N));
+ 
+                begin
+                   while Present (Expr) loop
+                      if not Analyzed (Expr) then
+                         Resolve (Expr, Etype (Expr));
+                      end if;
+ 
+                      Next (Expr);
+                   end loop;
+                end;
+             end if;
+ 
              --  If the prefix of the attribute is a class-wide type then it
              --  will be expanded into a dispatching call to a predefined
              --  primitive. Therefore we must check for potential violation
*************** package body Sem_Attr is
*** 12555,12567 ****
     ------------------------
  
     procedure Set_Boolean_Result (N : Node_Id; B : Boolean) is
-       Loc : constant Source_Ptr := Sloc (N);
     begin
!       if B then
!          Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
!       else
!          Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
!       end if;
     end Set_Boolean_Result;
  
     --------------------------------
--- 12644,12651 ----
     ------------------------
  
     procedure Set_Boolean_Result (N : Node_Id; B : Boolean) is
     begin
!       Rewrite (N, New_Occurrence_Of (Boolean_Literals (B), Sloc (N)));
     end Set_Boolean_Result;
  
     --------------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_attr.ads gcc-13.1.0/gcc/ada/sem_attr.ads
*** gcc-12.2.0/gcc/ada/sem_attr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_attr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Attr is
*** 407,419 ****
        --  as Range applied to the array itself. The result is of type universal
        --  integer.
  
-       ------------
-       -- Reduce --
-       ------------
- 
-       Attribute_Reduce => True,
-       --  See AI12-0262-1
- 
        ---------
        -- Ref --
        ---------
--- 407,412 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_aux.adb gcc-13.1.0/gcc/ada/sem_aux.adb
*** gcc-12.2.0/gcc/ada/sem_aux.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_aux.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Aux is
*** 410,417 ****
        Ctyp : Entity_Id;
  
     begin
        Ctyp := Typ;
-       pragma Assert (Is_Tagged_Type (Ctyp));
  
        if Is_Class_Wide_Type (Ctyp) then
           Ctyp := Root_Type (Ctyp);
--- 410,419 ----
        Ctyp : Entity_Id;
  
     begin
+       pragma Assert (Is_Tagged_Type (Typ)
+         or else Is_Class_Wide_Equivalent_Type (Typ));
+ 
        Ctyp := Typ;
  
        if Is_Class_Wide_Type (Ctyp) then
           Ctyp := Root_Type (Ctyp);
*************** package body Sem_Aux is
*** 962,968 ****
     -- Is_Derived_Type --
     ---------------------
  
!    function Is_Derived_Type (Ent : E) return B is
        Par : Node_Id;
  
     begin
--- 964,970 ----
     -- Is_Derived_Type --
     ---------------------
  
!    function Is_Derived_Type (Ent : Entity_Id) return B is
        Par : Node_Id;
  
     begin
*************** package body Sem_Aux is
*** 1057,1071 ****
              end if;
  
           else
!             declare
!                Utyp : constant Entity_Id := Underlying_Type (Btype);
!             begin
!                if No (Utyp) then
!                   return False;
!                else
!                   return Is_Immutably_Limited_Type (Utyp);
!                end if;
!             end;
           end if;
  
        elsif Is_Concurrent_Type (Btype) then
--- 1059,1065 ----
              end if;
  
           else
!             return False;
           end if;
  
        elsif Is_Concurrent_Type (Btype) then
*************** package body Sem_Aux is
*** 1136,1145 ****
  
           else
              declare
!                C : E;
! 
              begin
-                C := First_Component (Btype);
                 while Present (C) loop
                    if Is_Limited_Type (Etype (C)) then
                       return True;
--- 1130,1137 ----
  
           else
              declare
!                C : Entity_Id := First_Component (Btype);
              begin
                 while Present (C) loop
                    if Is_Limited_Type (Etype (C)) then
                       return True;
*************** package body Sem_Aux is
*** 1259,1273 ****
        end if;
     end Is_Limited_View;
  
-    -------------------------------
-    -- Is_Record_Or_Limited_Type --
-    -------------------------------
- 
-    function Is_Record_Or_Limited_Type (Typ : Entity_Id) return Boolean is
-    begin
-       return Is_Record_Type (Typ) or else Is_Limited_Type (Typ);
-    end Is_Record_Or_Limited_Type;
- 
     ----------------------
     -- Nearest_Ancestor --
     ----------------------
--- 1251,1256 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_aux.ads gcc-13.1.0/gcc/ada/sem_aux.ads
*** gcc-12.2.0/gcc/ada/sem_aux.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_aux.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Aux is
*** 279,285 ****
     --  or subtype. This is true if Suppress_Initialization is set either for
     --  the subtype itself, or for the corresponding base type.
  
!    function Is_Body (N : Node_Id) return Boolean;
     --  Determine whether an arbitrary node denotes a body
  
     function Is_By_Copy_Type (Ent : Entity_Id) return Boolean;
--- 279,285 ----
     --  or subtype. This is true if Suppress_Initialization is set either for
     --  the subtype itself, or for the corresponding base type.
  
!    function Is_Body (N : Node_Id) return Boolean with Inline;
     --  Determine whether an arbitrary node denotes a body
  
     function Is_By_Copy_Type (Ent : Entity_Id) return Boolean;
*************** package Sem_Aux is
*** 334,342 ****
     --  these types). This older routine overlaps with the previous one, this
     --  should be cleaned up???
  
-    function Is_Record_Or_Limited_Type (Typ : Entity_Id) return Boolean;
-    --  Return True if Typ requires is a record or limited type.
- 
     function Nearest_Ancestor (Typ : Entity_Id) return Entity_Id;
     --  Given a subtype Typ, this function finds out the nearest ancestor from
     --  which constraints and predicates are inherited. There is no simple link
--- 334,339 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_case.adb gcc-13.1.0/gcc/ada/sem_case.adb
*** gcc-12.2.0/gcc/ada/sem_case.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_case.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Stringt;        use Stringt;
*** 48,53 ****
--- 48,54 ----
  with Table;
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  with Ada.Unchecked_Deallocation;
  
*************** package body Sem_Case is
*** 106,111 ****
--- 107,120 ----
  
     package Composite_Case_Ops is
  
+       Simplified_Composite_Coverage_Rules : constant Boolean := True;
+       --  Indicates that, as a temporary stopgap, we implement
+       --  simpler coverage-checking rules when casing on a
+       --  composite selector:
+       --     1) Require that an Others choice must be given, regardless
+       --        of whether all possible values are covered explicitly.
+       --     2) No legality checks regarding overlapping choices.
+ 
        function Box_Value_Required (Subtyp : Entity_Id) return Boolean;
        --  If result is True, then the only allowed value (in a choice
        --  aggregate) for a component of this (sub)type is a box. This rule
*************** package body Sem_Case is
*** 184,191 ****
--- 193,205 ----
             record
                Low, High : Uint;
             end record;
+          function "=" (X, Y : Discrete_Range_Info) return Boolean is abstract;
+          --  Here (and below), we don't use "=", which is a good thing,
+          --  because it wouldn't work, because the user-defined "=" on
+          --  Uint does not compose according to Ada rules.
  
           type Composite_Range_Info is array (Part_Id) of Discrete_Range_Info;
+          function "=" (X, Y : Composite_Range_Info) return Boolean is abstract;
  
           type Choice_Range_Info (Is_Others : Boolean := False) is
             record
*************** package body Sem_Case is
*** 196,201 ****
--- 210,218 ----
                      null;
                end case;
             end record;
+          pragma Annotate (CodePeer, False_Positive, "raise exception",
+                           "function is abstract, hence never called");
+          function "=" (X, Y : Choice_Range_Info) return Boolean is abstract;
  
           type Choices_Range_Info is array (Choice_Id) of Choice_Range_Info;
  
*************** package body Sem_Case is
*** 263,269 ****
           type Bound_Values is array (Positive range <>) of Node_Id;
  
        end Choice_Analysis;
- 
     end Composite_Case_Ops;
  
     procedure Expand_Others_Choice
--- 280,285 ----
*************** package body Sem_Case is
*** 1104,1110 ****
           C := UI_To_Int (Value);
  
           if C in 16#20# .. 16#7E# then
!             Set_Character_Literal_Name (Char_Code (UI_To_Int (Value)));
              return Name_Find;
           end if;
  
--- 1120,1126 ----
           C := UI_To_Int (Value);
  
           if C in 16#20# .. 16#7E# then
!             Set_Character_Literal_Name (UI_To_CC (Value));
              return Name_Find;
           end if;
  
*************** package body Sem_Case is
*** 1604,1610 ****
                    begin
                       while Present (Comp) loop
                          if Chars (First (Choices (Comp))) = Orig_Name then
!                            pragma Assert (not Present (Matching_Comp));
                             Matching_Comp := Comp;
                          end if;
  
--- 1620,1626 ----
                    begin
                       while Present (Comp) loop
                          if Chars (First (Choices (Comp))) = Orig_Name then
!                            pragma Assert (No (Matching_Comp));
                             Matching_Comp := Comp;
                          end if;
  
*************** package body Sem_Case is
*** 2526,2531 ****
--- 2542,2555 ----
                 for P in Part_Id loop
                    Insert_Representative (Component_Bounds (P).Low, P);
                 end loop;
+ 
+                if Simplified_Composite_Coverage_Rules then
+                   --  Omit other representative values to avoid capacity
+                   --  problems building data structures only used in
+                   --  compile-time checks that will not be performed.
+                   return Result;
+                end if;
+ 
                 for C of Choices_Bounds loop
                    if not C.Is_Others then
                       for P in Part_Id loop
*************** package body Sem_Case is
*** 2667,2672 ****
--- 2691,2697 ----
              ---------------------
              -- Free_Value_Sets --
              ---------------------
+ 
              procedure Free_Value_Sets is
              begin
                 Value_Index_Set_Table.Free;
*************** package body Sem_Case is
*** 2925,2931 ****
           --  is created with the appropriate Char_Code and Chars fields.
  
           if Is_Standard_Character_Type (Choice_Type) then
!             Set_Character_Literal_Name (Char_Code (UI_To_Int (Value)));
              Lit :=
                Make_Character_Literal (Loc,
                  Chars              => Name_Find,
--- 2950,2956 ----
           --  is created with the appropriate Char_Code and Chars fields.
  
           if Is_Standard_Character_Type (Choice_Type) then
!             Set_Character_Literal_Name (UI_To_CC (Value));
              Lit :=
                Make_Character_Literal (Loc,
                  Chars              => Name_Find,
*************** package body Sem_Case is
*** 3367,3374 ****
           --------------------------------
  
           procedure Check_Case_Pattern_Choices is
-             --  ??? Need to Free/Finalize value sets allocated here.
- 
              package Ops is new Composite_Case_Ops.Choice_Analysis
                (Case_Statement => N);
              use Ops;
--- 3392,3397 ----
*************** package body Sem_Case is
*** 3393,3400 ****
  
                 Covered : Value_Set := Empty;
                 --  The union of all alternatives seen so far
- 
              begin
                 for Choice of Info loop
                    if Choice.Is_Others then
                       Others_Seen := True;
--- 3416,3429 ----
  
                 Covered : Value_Set := Empty;
                 --  The union of all alternatives seen so far
              begin
+                if Composite_Case_Ops.Simplified_Composite_Coverage_Rules then
+                   if not (for some Choice of Info => Choice.Is_Others) then
+                      Error_Msg_N ("others choice required", N);
+                   end if;
+                   return;
+                end if;
+ 
                 for Choice of Info loop
                    if Choice.Is_Others then
                       Others_Seen := True;
*************** package body Sem_Case is
*** 3561,3567 ****
  
              --  Hold on, maybe it isn't a complete mess after all.
  
!             if Extensions_Allowed and then Subtyp /= Any_Type then
                 Check_Composite_Case_Selector;
                 Check_Case_Pattern_Choices;
              end if;
--- 3590,3596 ----
  
              --  Hold on, maybe it isn't a complete mess after all.
  
!             if Core_Extensions_Allowed and then Subtyp /= Any_Type then
                 Check_Composite_Case_Selector;
                 Check_Case_Pattern_Choices;
              end if;
*************** package body Sem_Case is
*** 3844,3850 ****
     function Is_Case_Choice_Pattern (Expr : Node_Id) return Boolean is
        E : Node_Id := Expr;
     begin
!       if not Extensions_Allowed then
           return False;
        end if;
  
--- 3873,3879 ----
     function Is_Case_Choice_Pattern (Expr : Node_Id) return Boolean is
        E : Node_Id := Expr;
     begin
!       if not Core_Extensions_Allowed then
           return False;
        end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_case.ads gcc-13.1.0/gcc/ada/sem_case.ads
*** gcc-12.2.0/gcc/ada/sem_case.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_case.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_cat.adb gcc-13.1.0/gcc/ada/sem_cat.adb
*** gcc-12.2.0/gcc/ada/sem_cat.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_cat.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_cat.ads gcc-13.1.0/gcc/ada/sem_cat.ads
*** gcc-12.2.0/gcc/ada/sem_cat.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_cat.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch10.adb gcc-13.1.0/gcc/ada/sem_ch10.adb
*** gcc-12.2.0/gcc/ada/sem_ch10.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch10.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Einfo;          use Einfo;
*** 31,36 ****
--- 31,37 ----
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
  with Errout;         use Errout;
+ with Exp_Disp;       use Exp_Disp;
  with Exp_Put_Image;
  with Exp_Util;       use Exp_Util;
  with Elists;         use Elists;
*************** with Style;          use Style;
*** 73,78 ****
--- 74,80 ----
  with Stylesw;        use Stylesw;
  with Tbuild;         use Tbuild;
  with Uname;          use Uname;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Ch10 is
  
*************** package body Sem_Ch10 is
*** 946,961 ****
  
        --  Treat compilation unit pragmas that appear after the library unit
  
!       if Present (Pragmas_After (Aux_Decls_Node (N))) then
!          declare
!             Prag_Node : Node_Id := First (Pragmas_After (Aux_Decls_Node (N)));
!          begin
!             while Present (Prag_Node) loop
!                Analyze (Prag_Node);
!                Next (Prag_Node);
!             end loop;
!          end;
!       end if;
  
        --  Analyze the contract of a [generic] subprogram that acts as a
        --  compilation unit after all compilation pragmas have been analyzed.
--- 948,961 ----
  
        --  Treat compilation unit pragmas that appear after the library unit
  
!       declare
!          Prag_Node : Node_Id := First (Pragmas_After (Aux_Decls_Node (N)));
!       begin
!          while Present (Prag_Node) loop
!             Analyze (Prag_Node);
!             Next (Prag_Node);
!          end loop;
!       end;
  
        --  Analyze the contract of a [generic] subprogram that acts as a
        --  compilation unit after all compilation pragmas have been analyzed.
*************** package body Sem_Ch10 is
*** 1002,1007 ****
--- 1002,1023 ----
           end if;
        end if;
  
+       --  Build dispatch tables of library-level tagged types only now because
+       --  the generation of distribution stubs above may create some of them.
+ 
+       if Expander_Active and then Tagged_Type_Expansion then
+          case Nkind (Unit_Node) is
+             when N_Package_Declaration | N_Package_Body =>
+                Build_Static_Dispatch_Tables (Unit_Node);
+ 
+             when N_Package_Instantiation =>
+                Build_Static_Dispatch_Tables (Instance_Spec (Unit_Node));
+ 
+             when others =>
+                null;
+          end case;
+       end if;
+ 
        --  Remove unit from visibility, so that environment is clean for the
        --  next compilation, which is either the main unit or some other unit
        --  in the context.
*************** package body Sem_Ch10 is
*** 2582,2592 ****
        --  Note: this is not quite right if the user defines one of these units
        --  himself, but that's a marginal case, and fixing it is hard ???
  
!       if Restriction_Check_Required (No_Obsolescent_Features) then
!          if In_Predefined_Renaming (U) then
              Check_Restriction (No_Obsolescent_Features, N);
              Restriction_Violation := True;
           end if;
        end if;
  
        --  Check No_Implementation_Units violation
--- 2598,2616 ----
        --  Note: this is not quite right if the user defines one of these units
        --  himself, but that's a marginal case, and fixing it is hard ???
  
!       if Ada_Version >= Ada_95
!         and then In_Predefined_Renaming (U)
!       then
!          if Restriction_Check_Required (No_Obsolescent_Features) then
              Check_Restriction (No_Obsolescent_Features, N);
              Restriction_Violation := True;
           end if;
+ 
+          if Warn_On_Obsolescent_Feature then
+             Error_Msg_N
+               ("renamed predefined unit is an obsolescent feature "
+                & "(RM J.1)?j?", N);
+          end if;
        end if;
  
        --  Check No_Implementation_Units violation
*************** package body Sem_Ch10 is
*** 3107,3112 ****
--- 3131,3202 ----
        end if;
     end Check_Stub_Level;
  
+    -------------------
+    -- Decorate_Type --
+    -------------------
+ 
+    procedure Decorate_Type
+      (Ent         : Entity_Id;
+       Scop        : Entity_Id;
+       Is_Tagged   : Boolean := False;
+       Materialize : Boolean := False)
+    is
+       CW_Typ : Entity_Id;
+ 
+    begin
+       --  An unanalyzed type or a shadow entity of a type is treated as an
+       --  incomplete type, and carries the corresponding attributes.
+ 
+       Mutate_Ekind           (Ent, E_Incomplete_Type);
+       Set_Etype              (Ent, Ent);
+       Set_Full_View          (Ent, Empty);
+       Set_Is_First_Subtype   (Ent);
+       Set_Scope              (Ent, Scop);
+       Set_Stored_Constraint  (Ent, No_Elist);
+       Reinit_Size_Align      (Ent);
+ 
+       if From_Limited_With (Ent) then
+          Set_Private_Dependents (Ent, New_Elmt_List);
+       end if;
+ 
+       --  A tagged type and its corresponding shadow entity share one common
+       --  class-wide type. The list of primitive operations for the shadow
+       --  entity is empty.
+ 
+       if Is_Tagged then
+          Set_Is_Tagged_Type (Ent);
+          Set_Direct_Primitive_Operations (Ent, New_Elmt_List);
+ 
+          CW_Typ :=
+            New_External_Entity
+              (E_Void, Scope (Ent), Sloc (Ent), Ent, 'C', 0, 'T');
+ 
+          Set_Class_Wide_Type (Ent, CW_Typ);
+ 
+          --  Set parent to be the same as the parent of the tagged type.
+          --  We need a parent field set, and it is supposed to point to
+          --  the declaration of the type. The tagged type declaration
+          --  essentially declares two separate types, the tagged type
+          --  itself and the corresponding class-wide type, so it is
+          --  reasonable for the parent fields to point to the declaration
+          --  in both cases.
+ 
+          Set_Parent (CW_Typ, Parent (Ent));
+ 
+          Mutate_Ekind                  (CW_Typ, E_Class_Wide_Type);
+          Set_Class_Wide_Type           (CW_Typ, CW_Typ);
+          Set_Etype                     (CW_Typ, Ent);
+          Set_Equivalent_Type           (CW_Typ, Empty);
+          Set_From_Limited_With         (CW_Typ, From_Limited_With (Ent));
+          Set_Has_Unknown_Discriminants (CW_Typ);
+          Set_Is_First_Subtype          (CW_Typ);
+          Set_Is_Tagged_Type            (CW_Typ);
+          Set_Materialize_Entity        (CW_Typ, Materialize);
+          Set_Scope                     (CW_Typ, Scop);
+          Reinit_Size_Align             (CW_Typ);
+       end if;
+    end Decorate_Type;
+ 
     ------------------------
     -- Expand_With_Clause --
     ------------------------
*************** package body Sem_Ch10 is
*** 3287,3305 ****
     --  Start of processing for Has_With_Clause
  
     begin
!       if Present (Context_Items (C_Unit)) then
!          Item := First (Context_Items (C_Unit));
!          while Present (Item) loop
!             if Nkind (Item) = N_With_Clause
!               and then Limited_Present (Item) = Is_Limited
!               and then Named_Unit (Item) = Pack
!             then
!                return True;
!             end if;
  
!             Next (Item);
!          end loop;
!       end if;
  
        return False;
     end Has_With_Clause;
--- 3377,3393 ----
     --  Start of processing for Has_With_Clause
  
     begin
!       Item := First (Context_Items (C_Unit));
!       while Present (Item) loop
!          if Nkind (Item) = N_With_Clause
!            and then Limited_Present (Item) = Is_Limited
!            and then Named_Unit (Item) = Pack
!          then
!             return True;
!          end if;
  
!          Next (Item);
!       end loop;
  
        return False;
     end Has_With_Clause;
*************** package body Sem_Ch10 is
*** 5021,5029 ****
        --  by the shadow ones.
  
        --  This code must be kept synchronized with the code that replaces the
!       --  shadow entities by the real entities (see body of Remove_Limited
!       --  With_Clause); otherwise the contents of the homonym chains are not
!       --  consistent.
  
        else
           --  Hide all the type entities of the public part of the package to
--- 5109,5116 ----
        --  by the shadow ones.
  
        --  This code must be kept synchronized with the code that replaces the
!       --  shadow entities by the real entities in Remove_Limited_With_Unit,
!       --  otherwise the contents of the homonym chains are not consistent.
  
        else
           --  Hide all the type entities of the public part of the package to
*************** package body Sem_Ch10 is
*** 5060,5073 ****
                and then not Is_Child_Unit (Lim_Typ)
              then
                 declare
                    Prev : Entity_Id;
  
                 begin
                    Prev := Current_Entity (Lim_Typ);
-                   E := Prev;
  
!                   --  Replace E in the homonyms list, so that the limited view
!                   --  becomes available.
  
                    --  If the nonlimited view is a record with an anonymous
                    --  self-referential component, the analysis of the record
--- 5147,5162 ----
                and then not Is_Child_Unit (Lim_Typ)
              then
                 declare
+                   Non_Lim_View : constant Entity_Id :=
+                                    Non_Limited_View (Lim_Typ);
+ 
                    Prev : Entity_Id;
  
                 begin
                    Prev := Current_Entity (Lim_Typ);
  
!                   --  Replace Non_Lim_View in the homonyms list, so that the
!                   --  limited view becomes available.
  
                    --  If the nonlimited view is a record with an anonymous
                    --  self-referential component, the analysis of the record
*************** package body Sem_Ch10 is
*** 5076,5106 ****
                    --  entity is now the incomplete type, and that is the one to
                    --  replace in the visibility structure.
  
!                   if E = Non_Limited_View (Lim_Typ)
                      or else
!                       (Ekind (E) = E_Incomplete_Type
!                         and then Full_View (E) = Non_Limited_View (Lim_Typ))
                    then
-                      Set_Homonym (Lim_Typ, Homonym (Prev));
                       Set_Current_Entity (Lim_Typ);
  
                    else
                       loop
-                         E := Homonym (Prev);
- 
-                         --  E may have been removed when installing a previous
-                         --  limited_with_clause.
- 
-                         exit when No (E);
-                         exit when E = Non_Limited_View (Lim_Typ);
                          Prev := Homonym (Prev);
                       end loop;
  
!                      if Present (E) then
!                         Set_Homonym (Lim_Typ, Homonym (Homonym (Prev)));
!                         Set_Homonym (Prev, Lim_Typ);
!                      end if;
                    end if;
                 end;
  
                 if Debug_Flag_I then
--- 5165,5217 ----
                    --  entity is now the incomplete type, and that is the one to
                    --  replace in the visibility structure.
  
!                   --  Similarly, if the source already contains the incomplete
!                   --  type declaration, the limited view of the incomplete type
!                   --  is in fact never visible (AI05-129) but we have created a
!                   --  shadow entity E1 for it that points to E2, the incomplete
!                   --  type at stake. This in turn has full view E3 that is the
!                   --  full declaration, with a corresponding shadow entity E4.
!                   --  When reinstalling the limited view, the visible entity E2
!                   --  is first replaced with E1, but E4 must eventually become
!                   --  the visible entity as per the AI and thus displace E1, as
!                   --  it is replacing E3 in the homonyms list.
!                   --
!                   --           regular views          limited views
!                   --
!                   --        * E2 (incomplete)   <--    E1 (shadow)
!                   --
!                   --                |
!                   --                V
!                   --
!                   --           E3 (full)        <--    E4 (shadow) *
!                   --
!                   --  [*] denotes the visible entity (Current_Entity)
! 
!                   if Prev = Non_Lim_View
                      or else
!                       (Ekind (Prev) = E_Incomplete_Type
!                         and then Full_View (Prev) = Non_Lim_View)
!                     or else
!                       (Ekind (Prev) = E_Incomplete_Type
!                         and then From_Limited_With (Prev)
!                         and then
!                           Ekind (Non_Limited_View (Prev)) = E_Incomplete_Type
!                         and then
!                           Full_View (Non_Limited_View (Prev)) = Non_Lim_View)
                    then
                       Set_Current_Entity (Lim_Typ);
  
                    else
+                      while Present (Homonym (Prev))
+                        and then Homonym (Prev) /= Non_Lim_View
                       loop
                          Prev := Homonym (Prev);
                       end loop;
  
!                      Set_Homonym (Prev, Lim_Typ);
                    end if;
+ 
+                   Set_Homonym (Lim_Typ, Homonym (Non_Lim_View));
                 end;
  
                 if Debug_Flag_I then
*************** package body Sem_Ch10 is
*** 5665,5671 ****
        --  Create a shadow entity that hides Ent and offers an abstract or
        --  incomplete view of Ent. Scop is the proper scope. Flag Is_Tagged
        --  should be set when Ent is a tagged type. The generated entity is
!       --  added to Lim_Header. This routine updates the value of Last_Shadow.
  
        procedure Decorate_Package (Ent : Entity_Id; Scop : Entity_Id);
        --  Perform minimal decoration of a package or its corresponding shadow
--- 5776,5782 ----
        --  Create a shadow entity that hides Ent and offers an abstract or
        --  incomplete view of Ent. Scop is the proper scope. Flag Is_Tagged
        --  should be set when Ent is a tagged type. The generated entity is
!       --  added to Shadow_Pack. The routine updates the value of Last_Shadow.
  
        procedure Decorate_Package (Ent : Entity_Id; Scop : Entity_Id);
        --  Perform minimal decoration of a package or its corresponding shadow
*************** package body Sem_Ch10 is
*** 5675,5691 ****
        --  Perform full decoration of an abstract state or its corresponding
        --  shadow entity denoted by Ent. Scop is the proper scope.
  
-       procedure Decorate_Type
-         (Ent         : Entity_Id;
-          Scop        : Entity_Id;
-          Is_Tagged   : Boolean := False;
-          Materialize : Boolean := False);
-       --  Perform minimal decoration of a type or its corresponding shadow
-       --  entity denoted by Ent. Scop is the proper scope. Flag Is_Tagged
-       --  should be set when Ent is a tagged type. Flag Materialize should be
-       --  set when Ent is a tagged type and its class-wide type needs to appear
-       --  in the tree.
- 
        procedure Decorate_Variable (Ent : Entity_Id; Scop : Entity_Id);
        --  Perform minimal decoration of a variable denoted by Ent. Scop is the
        --  proper scope.
--- 5786,5791 ----
*************** package body Sem_Ch10 is
*** 5745,5752 ****
              Decorate_Package (Shadow, Scop);
  
           elsif Is_Type (Ent) then
!             Decorate_Type        (Shadow, Scop, Is_Tagged);
!             Set_Non_Limited_View (Shadow, Ent);
  
              if Is_Tagged then
                 Set_Non_Limited_View
--- 5845,5865 ----
              Decorate_Package (Shadow, Scop);
  
           elsif Is_Type (Ent) then
!             Decorate_Type (Shadow, Scop, Is_Tagged);
! 
!             --  If Ent is a private type and we are analyzing the body of its
!             --  scope, its private and full views are swapped and, therefore,
!             --  we need to undo this swapping in order to build the same shadow
!             --  entity as we would have in other contexts.
! 
!             if Is_Private_Type (Ent)
!               and then Present (Full_View (Ent))
!               and then In_Package_Body (Scop)
!             then
!                Set_Non_Limited_View (Shadow, Full_View (Ent));
!             else
!                Set_Non_Limited_View (Shadow, Ent);
!             end if;
  
              if Is_Tagged then
                 Set_Non_Limited_View
*************** package body Sem_Ch10 is
*** 5786,5857 ****
           Set_Encapsulating_State (Ent, Empty);
        end Decorate_State;
  
-       -------------------
-       -- Decorate_Type --
-       -------------------
- 
-       procedure Decorate_Type
-         (Ent         : Entity_Id;
-          Scop        : Entity_Id;
-          Is_Tagged   : Boolean := False;
-          Materialize : Boolean := False)
-       is
-          CW_Typ : Entity_Id;
- 
-       begin
-          --  An unanalyzed type or a shadow entity of a type is treated as an
-          --  incomplete type, and carries the corresponding attributes.
- 
-          Mutate_Ekind           (Ent, E_Incomplete_Type);
-          Set_Etype              (Ent, Ent);
-          Set_Full_View          (Ent, Empty);
-          Set_Is_First_Subtype   (Ent);
-          Set_Scope              (Ent, Scop);
-          Set_Stored_Constraint  (Ent, No_Elist);
-          Reinit_Size_Align      (Ent);
- 
-          if From_Limited_With (Ent) then
-             Set_Private_Dependents (Ent, New_Elmt_List);
-          end if;
- 
-          --  A tagged type and its corresponding shadow entity share one common
-          --  class-wide type. The list of primitive operations for the shadow
-          --  entity is empty.
- 
-          if Is_Tagged then
-             Set_Is_Tagged_Type (Ent);
-             Set_Direct_Primitive_Operations (Ent, New_Elmt_List);
- 
-             CW_Typ :=
-               New_External_Entity
-                 (E_Void, Scope (Ent), Sloc (Ent), Ent, 'C', 0, 'T');
- 
-             Set_Class_Wide_Type (Ent, CW_Typ);
- 
-             --  Set parent to be the same as the parent of the tagged type.
-             --  We need a parent field set, and it is supposed to point to
-             --  the declaration of the type. The tagged type declaration
-             --  essentially declares two separate types, the tagged type
-             --  itself and the corresponding class-wide type, so it is
-             --  reasonable for the parent fields to point to the declaration
-             --  in both cases.
- 
-             Set_Parent (CW_Typ, Parent (Ent));
- 
-             Mutate_Ekind                  (CW_Typ, E_Class_Wide_Type);
-             Set_Class_Wide_Type           (CW_Typ, CW_Typ);
-             Set_Etype                     (CW_Typ, Ent);
-             Set_Equivalent_Type           (CW_Typ, Empty);
-             Set_From_Limited_With         (CW_Typ, From_Limited_With (Ent));
-             Set_Has_Unknown_Discriminants (CW_Typ);
-             Set_Is_First_Subtype          (CW_Typ);
-             Set_Is_Tagged_Type            (CW_Typ);
-             Set_Materialize_Entity        (CW_Typ, Materialize);
-             Set_Scope                     (CW_Typ, Scop);
-             Reinit_Size_Align             (CW_Typ);
-          end if;
-       end Decorate_Type;
- 
        -----------------------
        -- Decorate_Variable --
        -----------------------
--- 5899,5904 ----
*************** package body Sem_Ch10 is
*** 6577,6582 ****
--- 6624,6633 ----
        -- Remove_Shadow_Entities_With_Restore --
        -----------------------------------------
  
+       --  This code must be kept synchronized with the code that replaces the
+       --  real entities by the shadow entities in Install_Limited_With_Clause,
+       --  otherwise the contents of the homonym chains are not consistent.
+ 
        procedure Remove_Shadow_Entities_With_Restore (Pack_Id : Entity_Id) is
           procedure Restore_Chain_For_Shadow (Shadow : Entity_Id);
           --  Remove shadow entity Shadow by updating the entity and homonym
*************** package body Sem_Ch10 is
*** 6599,6642 ****
           ------------------------------
  
           procedure Restore_Chain_For_Shadow (Shadow : Entity_Id) is
!             Prev : Entity_Id;
!             Typ  : Entity_Id;
  
           begin
              --  If the package has incomplete types, the limited view of the
              --  incomplete type is in fact never visible (AI05-129) but we
              --  have created a shadow entity E1 for it, that points to E2,
!             --  a nonlimited incomplete type. This in turn has a full view
!             --  E3 that is the full declaration. There is a corresponding
              --  shadow entity E4. When reinstalling the nonlimited view,
!             --  E2 must become the current entity and E3 must be ignored.
  
              Typ := Non_Limited_View (Shadow);
- 
-             --  Shadow is the limited view of a full type declaration that has
-             --  a previous incomplete declaration, i.e. E3 from the previous
-             --  description. Nothing to insert.
- 
-             if Present (Current_Entity (Typ))
-               and then Ekind (Current_Entity (Typ)) = E_Incomplete_Type
-               and then Full_View (Current_Entity (Typ)) = Typ
-             then
-                return;
-             end if;
- 
              pragma Assert (not In_Chain (Typ));
  
              Prev := Current_Entity (Shadow);
  
              if Prev = Shadow then
!                Set_Current_Entity (Typ);
  
              else
!                while Present (Prev) and then Homonym (Prev) /= Shadow loop
                    Prev := Homonym (Prev);
                 end loop;
  
!                if Present (Prev) then
                    Set_Homonym (Prev, Typ);
                 end if;
              end if;
--- 6650,6710 ----
           ------------------------------
  
           procedure Restore_Chain_For_Shadow (Shadow : Entity_Id) is
!             Is_E3 : Boolean;
!             Prev  : Entity_Id;
!             Typ   : Entity_Id;
  
           begin
              --  If the package has incomplete types, the limited view of the
              --  incomplete type is in fact never visible (AI05-129) but we
              --  have created a shadow entity E1 for it, that points to E2,
!             --  the incomplete type at stake. This in turn has a full view
!             --  E3 that is the full declaration, with a corresponding
              --  shadow entity E4. When reinstalling the nonlimited view,
!             --  the nonvisible entity E1 is first replaced with E2, but then
!             --  E3 must *not* become the visible entity as it is replacing E4
!             --  in the homonyms list and simply be ignored.
!             --
!             --           regular views          limited views
!             --
!             --        * E2 (incomplete)   <--    E1 (shadow)
!             --
!             --                |
!             --                V
!             --
!             --           E3 (full)        <--    E4 (shadow) *
!             --
!             --  [*] denotes the visible entity (Current_Entity)
  
              Typ := Non_Limited_View (Shadow);
              pragma Assert (not In_Chain (Typ));
  
+             Is_E3 := Nkind (Parent (Typ)) = N_Full_Type_Declaration
+               and then Present (Incomplete_View (Parent (Typ)));
+ 
              Prev := Current_Entity (Shadow);
  
              if Prev = Shadow then
!                if Is_E3 then
!                   Set_Name_Entity_Id (Chars (Prev), Homonym (Prev));
!                   return;
! 
!                else
!                   Set_Current_Entity (Typ);
!                end if;
  
              else
!                while Present (Homonym (Prev))
!                  and then Homonym (Prev) /= Shadow
!                loop
                    Prev := Homonym (Prev);
                 end loop;
  
!                if Is_E3 then
!                   Set_Homonym (Prev, Homonym (Shadow));
!                   return;
! 
!                else
                    Set_Homonym (Prev, Typ);
                 end if;
              end if;
*************** package body Sem_Ch10 is
*** 6760,6768 ****
        --  and the previously hidden entities must be entered back into direct
        --  visibility.
  
-       --  WARNING: This code must be kept synchronized with that of routine
-       --  Install_Limited_Withed_Clause.
- 
        if Analyzed (Pack_Decl) then
           Remove_Shadow_Entities_With_Restore (Pack_Id);
  
--- 6828,6833 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch10.ads gcc-13.1.0/gcc/ada/sem_ch10.ads
*** gcc-12.2.0/gcc/ada/sem_ch10.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch10.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch10 is
*** 34,39 ****
--- 34,50 ----
     procedure Analyze_Protected_Body_Stub                (N : Node_Id);
     procedure Analyze_Subunit                            (N : Node_Id);
  
+    procedure Decorate_Type
+      (Ent         : Entity_Id;
+       Scop        : Entity_Id;
+       Is_Tagged   : Boolean := False;
+       Materialize : Boolean := False);
+    --  Perform minimal decoration of a type or its corresponding shadow
+    --  entity denoted by Ent. Scop is the proper scope. Flag Is_Tagged
+    --  should be set when Ent is a tagged type. Flag Materialize should be
+    --  set when Ent is a tagged type and its class-wide type needs to appear
+    --  in the tree.
+ 
     procedure Install_Context (N : Node_Id; Chain : Boolean := True);
     --  Installs the entities from the context clause of the given compilation
     --  unit into the visibility chains. This is done before analyzing a unit.
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch11.adb gcc-13.1.0/gcc/ada/sem_ch11.adb
*** gcc-12.2.0/gcc/ada/sem_ch11.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch11.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem_Warn;       use Sem_Warn;
*** 49,56 ****
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
- with Snames;         use Snames;
  with Stand;          use Stand;
  
  package body Sem_Ch11 is
  
--- 49,56 ----
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Stand;          use Stand;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Ch11 is
  
*************** package body Sem_Ch11 is
*** 431,443 ****
  
        --  If the current scope is a subprogram, entry or task body or declare
        --  block then this is the right place to check for hanging useless
!       --  assignments from the statement sequence. Skip this in the body of a
!       --  postcondition, since in that case there are no source references, and
!       --  we need to preserve deferred references from the enclosing scope.
  
!       if (Is_Subprogram_Or_Entry (Current_Scope)
!            and then Chars (Current_Scope) /= Name_uPostconditions)
!          or else Ekind (Current_Scope) in E_Block | E_Task_Type
        then
           Warn_On_Useless_Assignments (Current_Scope);
        end if;
--- 431,440 ----
  
        --  If the current scope is a subprogram, entry or task body or declare
        --  block then this is the right place to check for hanging useless
!       --  assignments from the statement sequence.
  
!       if Is_Subprogram_Or_Entry (Current_Scope)
!         or else Ekind (Current_Scope) in E_Block | E_Task_Type
        then
           Warn_On_Useless_Assignments (Current_Scope);
        end if;
*************** package body Sem_Ch11 is
*** 611,625 ****
  
           else
              Set_Local_Raise_Not_OK (P);
! 
!             --  Do not check the restriction if the reraise statement is part
!             --  of the code generated for an AT-END handler. That's because
!             --  if the restriction is actually active, we never generate this
!             --  raise anyway, so the apparent violation is bogus.
! 
!             if not From_At_End (N) then
!                Check_Restriction (No_Exception_Propagation, N);
!             end if;
           end if;
  
        --  Normal case with exception id present
--- 608,614 ----
  
           else
              Set_Local_Raise_Not_OK (P);
!             Check_Restriction (No_Exception_Propagation, N);
           end if;
  
        --  Normal case with exception id present
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch11.ads gcc-13.1.0/gcc/ada/sem_ch11.ads
*** gcc-12.2.0/gcc/ada/sem_ch11.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch11.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch12.adb gcc-13.1.0/gcc/ada/sem_ch12.adb
*** gcc-12.2.0/gcc/ada/sem_ch12.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch12.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Ch12 is
*** 516,521 ****
--- 516,537 ----
     --  The body of the wrapper is a call to the actual, with the generated
     --  pre/postconditon checks added.
  
+    procedure Check_Abbreviated_Instance
+      (N                : Node_Id;
+       Parent_Installed : in out Boolean);
+    --  If the name of the generic unit in an abbreviated instantiation is an
+    --  expanded name, then the prefix may be an instance and the selector may
+    --  designate a child unit. If the parent is installed as a result of this
+    --  call, then Parent_Installed is set True, otherwise Parent_Installed is
+    --  unchanged by the call.
+ 
+    --  This routine needs to be called for declaration nodes of formal objects,
+    --  types and subprograms to check whether they are the copy, present in the
+    --  visible part of the abbreviated instantiation of formal packages, of the
+    --  declaration node of their corresponding formal parameter in the template
+    --  of the formal package, as specified by RM 12.7(10/2), so as to establish
+    --  the proper context for their analysis.
+ 
     procedure Check_Access_Definition (N : Node_Id);
     --  Subsidiary routine to null exclusion processing. Perform an assertion
     --  check on Ada version and the presence of an access definition in N.
*************** package body Sem_Ch12 is
*** 865,870 ****
--- 881,890 ----
     procedure Remove_Parent (In_Body : Boolean := False);
     --  Reverse effect after instantiation of child is complete
  
+    function Requires_Conformance_Checking (N : Node_Id) return Boolean;
+    --  Determine whether the formal package declaration N requires conformance
+    --  checking with actuals in instantiations.
+ 
     procedure Restore_Hidden_Primitives (Prims_List : in out Elist_Id);
     --  Restore suffix 'P' to primitives of Prims_List and leave Prims_List
     --  set to No_Elist.
*************** package body Sem_Ch12 is
*** 1093,1099 ****
        Analyzed_Formal : Node_Id;
        First_Named     : Node_Id := Empty;
        Formal          : Node_Id;
!       Match           : Node_Id;
        Named           : Node_Id;
        Saved_Formal    : Node_Id;
  
--- 1113,1119 ----
        Analyzed_Formal : Node_Id;
        First_Named     : Node_Id := Empty;
        Formal          : Node_Id;
!       Match           : Node_Id := Empty;
        Named           : Node_Id;
        Saved_Formal    : Node_Id;
  
*************** package body Sem_Ch12 is
*** 1131,1137 ****
        --  in which case the predefined operations will be used. This merits
        --  a warning because of the special semantics of fixed point ops.
  
!       procedure Check_Overloaded_Formal_Subprogram (Formal : Entity_Id);
        --  Apply RM 12.3(9): if a formal subprogram is overloaded, the instance
        --  cannot have a named association for it. AI05-0025 extends this rule
        --  to formals of formal packages by AI05-0025, and it also applies to
--- 1151,1157 ----
        --  in which case the predefined operations will be used. This merits
        --  a warning because of the special semantics of fixed point ops.
  
!       procedure Check_Overloaded_Formal_Subprogram (Formal : Node_Id);
        --  Apply RM 12.3(9): if a formal subprogram is overloaded, the instance
        --  cannot have a named association for it. AI05-0025 extends this rule
        --  to formals of formal packages by AI05-0025, and it also applies to
*************** package body Sem_Ch12 is
*** 1144,1150 ****
        function Matching_Actual
          (F   : Entity_Id;
           A_F : Entity_Id) return Node_Id;
!       --  Find actual that corresponds to a given a formal parameter. If the
        --  actuals are positional, return the next one, if any. If the actuals
        --  are named, scan the parameter associations to find the right one.
        --  A_F is the corresponding entity in the analyzed generic, which is
--- 1164,1170 ----
        function Matching_Actual
          (F   : Entity_Id;
           A_F : Entity_Id) return Node_Id;
!       --  Find actual that corresponds to a given formal parameter. If the
        --  actuals are positional, return the next one, if any. If the actuals
        --  are named, scan the parameter associations to find the right one.
        --  A_F is the corresponding entity in the analyzed generic, which is
*************** package body Sem_Ch12 is
*** 1160,1169 ****
        --  association for it includes a box, or whether the associations
        --  include an Others clause.
  
!       procedure Process_Default (F : Entity_Id);
!       --  Add a copy of the declaration of generic formal F to the list of
!       --  associations, and add an explicit box association for F if there
!       --  is none yet, and the default comes from an Others_Choice.
  
        function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean;
        --  Determine whether Subp renames one of the subprograms defined in the
--- 1180,1189 ----
        --  association for it includes a box, or whether the associations
        --  include an Others clause.
  
!       procedure Process_Default (Formal : Node_Id);
!       --  Add a copy of the declaration of a generic formal to the list of
!       --  associations, and add an explicit box association for its entity
!       --  if there is none yet, and the default comes from an Others_Choice.
  
        function Renames_Standard_Subprogram (Subp : Entity_Id) return Boolean;
        --  Determine whether Subp renames one of the subprograms defined in the
*************** package body Sem_Ch12 is
*** 1178,1194 ****
        --  anonymous types, the presence a formal equality will introduce an
        --  implicit declaration for the corresponding inequality.
  
!       -----------------------------------------
!       -- procedure Build_Subprogram_Wrappers --
!       -----------------------------------------
  
        procedure Build_Subprogram_Wrappers is
           Formal : constant Entity_Id :=
             Defining_Unit_Name (Specification (Analyzed_Formal));
           Aspect_Spec : Node_Id;
           Decl_Node   : Node_Id;
           Actual_Name : Node_Id;
  
        begin
           --  Create declaration for wrapper subprogram
           --  The actual can be overloaded, in which case it will be
--- 1198,1233 ----
        --  anonymous types, the presence a formal equality will introduce an
        --  implicit declaration for the corresponding inequality.
  
!       -------------------------------
!       -- Build_Subprogram_Wrappers --
!       -------------------------------
  
        procedure Build_Subprogram_Wrappers is
+          function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result;
+          --  Adjust sloc so that errors located at N will be reported with
+          --  information about the instance and not just about the generic.
+ 
+          ------------------------
+          -- Adjust_Aspect_Sloc --
+          ------------------------
+ 
+          function Adjust_Aspect_Sloc (N : Node_Id) return Traverse_Result is
+          begin
+             Adjust_Instantiation_Sloc (N, S_Adjustment);
+             return OK;
+          end Adjust_Aspect_Sloc;
+ 
+          procedure Adjust_Aspect_Slocs is new
+            Traverse_Proc (Adjust_Aspect_Sloc);
+ 
           Formal : constant Entity_Id :=
             Defining_Unit_Name (Specification (Analyzed_Formal));
           Aspect_Spec : Node_Id;
           Decl_Node   : Node_Id;
           Actual_Name : Node_Id;
  
+       --  Start of processing for Build_Subprogram_Wrappers
+ 
        begin
           --  Create declaration for wrapper subprogram
           --  The actual can be overloaded, in which case it will be
*************** package body Sem_Ch12 is
*** 1227,1232 ****
--- 1266,1272 ----
  
           Aspect_Spec := First (Aspect_Specifications (Decl_Node));
           while Present (Aspect_Spec) loop
+             Adjust_Aspect_Slocs (Aspect_Spec);
              Set_Analyzed (Aspect_Spec, False);
              Next (Aspect_Spec);
           end loop;
*************** package body Sem_Ch12 is
*** 1239,1253 ****
           --  actuals.
  
           Append_To (Assoc_List,
!             Build_Subprogram_Body_Wrapper (Formal, Actual_Name));
        end Build_Subprogram_Wrappers;
  
        ----------------------------------------
        -- Check_Overloaded_Formal_Subprogram --
        ----------------------------------------
  
!       procedure Check_Overloaded_Formal_Subprogram (Formal : Entity_Id) is
!          Temp_Formal : Entity_Id;
  
        begin
           Temp_Formal := First (Formals);
--- 1279,1293 ----
           --  actuals.
  
           Append_To (Assoc_List,
!            Build_Subprogram_Body_Wrapper (Formal, Actual_Name));
        end Build_Subprogram_Wrappers;
  
        ----------------------------------------
        -- Check_Overloaded_Formal_Subprogram --
        ----------------------------------------
  
!       procedure Check_Overloaded_Formal_Subprogram (Formal : Node_Id) is
!          Temp_Formal : Node_Id;
  
        begin
           Temp_Formal := First (Formals);
*************** package body Sem_Ch12 is
*** 1429,1436 ****
          (F   : Entity_Id;
           A_F : Entity_Id) return Node_Id
        is
!          Prev  : Node_Id;
!          Act   : Node_Id;
  
        begin
           Is_Named_Assoc := False;
--- 1469,1476 ----
          (F   : Entity_Id;
           A_F : Entity_Id) return Node_Id
        is
!          Prev : Node_Id;
!          Act  : Node_Id;
  
        begin
           Is_Named_Assoc := False;
*************** package body Sem_Ch12 is
*** 1517,1525 ****
        -- Process_Default --
        ---------------------
  
!       procedure Process_Default (F : Entity_Id) is
           Loc     : constant Source_Ptr := Sloc (I_Node);
!          F_Id    : constant Entity_Id  := Defining_Entity (F);
           Decl    : Node_Id;
           Default : Node_Id;
           Id      : Entity_Id;
--- 1557,1565 ----
        -- Process_Default --
        ---------------------
  
!       procedure Process_Default (Formal : Node_Id) is
           Loc     : constant Source_Ptr := Sloc (I_Node);
!          F_Id    : constant Entity_Id  := Defining_Entity (Formal);
           Decl    : Node_Id;
           Default : Node_Id;
           Id      : Entity_Id;
*************** package body Sem_Ch12 is
*** 1528,1537 ****
           --  Append copy of formal declaration to associations, and create new
           --  defining identifier for it.
  
!          Decl := New_Copy_Tree (F);
           Id := Make_Defining_Identifier (Sloc (F_Id), Chars (F_Id));
  
!          if Nkind (F) in N_Formal_Subprogram_Declaration then
              Set_Defining_Unit_Name (Specification (Decl), Id);
  
           else
--- 1568,1577 ----
           --  Append copy of formal declaration to associations, and create new
           --  defining identifier for it.
  
!          Decl := New_Copy_Tree (Formal);
           Id := Make_Defining_Identifier (Sloc (F_Id), Chars (F_Id));
  
!          if Nkind (Formal) in N_Formal_Subprogram_Declaration then
              Set_Defining_Unit_Name (Specification (Decl), Id);
  
           else
*************** package body Sem_Ch12 is
*** 1917,1923 ****
                       --  take place e.g. within an enclosing generic unit.
  
                       if Has_Contracts (Analyzed_Formal)
!                        and then Expander_Active
                       then
                          Build_Subprogram_Wrappers;
                       end if;
--- 1957,1963 ----
                       --  take place e.g. within an enclosing generic unit.
  
                       if Has_Contracts (Analyzed_Formal)
!                        and then (Expander_Active or GNATprove_Mode)
                       then
                          Build_Subprogram_Wrappers;
                       end if;
*************** package body Sem_Ch12 is
*** 2043,2049 ****
  
                          procedure Check_Generic_Parent is
                             Inst : constant Node_Id :=
!                                     Next (Unit_Declaration_Node (Actual));
                             Par  : Entity_Id;
  
                          begin
--- 2083,2089 ----
  
                          procedure Check_Generic_Parent is
                             Inst : constant Node_Id :=
!                                     Get_Unit_Instantiation_Node (Actual);
                             Par  : Entity_Id;
  
                          begin
*************** package body Sem_Ch12 is
*** 2184,2189 ****
--- 2224,2242 ----
                    raise Program_Error;
              end case;
  
+             --  Check here the correct use of Ghost entities in generic
+             --  instantiations, as now the generic has been resolved and
+             --  we know which formal generic parameters are ghost (SPARK
+             --  RM 6.9(10)).
+ 
+             if Nkind (Formal) not in N_Use_Package_Clause
+                                    | N_Use_Type_Clause
+             then
+                Check_Ghost_Context_In_Generic_Association
+                  (Actual => Match,
+                   Formal => Defining_Entity (Analyzed_Formal));
+             end if;
+ 
              Formal := Saved_Formal;
              Next_Non_Pragma (Analyzed_Formal);
           end loop;
*************** package body Sem_Ch12 is
*** 2612,2623 ****
     procedure Analyze_Formal_Object_Declaration (N : Node_Id) is
        E  : constant Node_Id := Default_Expression (N);
        Id : constant Node_Id := Defining_Identifier (N);
!       K  : Entity_Kind;
!       T  : Node_Id;
  
     begin
        Enter_Name (Id);
  
        --  Determine the mode of the formal object
  
        if Out_Present (N) then
--- 2665,2680 ----
     procedure Analyze_Formal_Object_Declaration (N : Node_Id) is
        E  : constant Node_Id := Default_Expression (N);
        Id : constant Node_Id := Defining_Identifier (N);
! 
!       K                : Entity_Kind;
!       Parent_Installed : Boolean := False;
!       T                : Node_Id;
  
     begin
        Enter_Name (Id);
  
+       Check_Abbreviated_Instance (Parent (N), Parent_Installed);
+ 
        --  Determine the mode of the formal object
  
        if Out_Present (N) then
*************** package body Sem_Ch12 is
*** 2691,2696 ****
--- 2748,2764 ----
           if Present (E) then
              Preanalyze_Spec_Expression (E, T);
  
+             --  The default for a ghost generic formal IN parameter of
+             --  access-to-variable type should be a ghost object (SPARK
+             --  RM 6.9(13)).
+ 
+             if Is_Access_Variable (T) then
+                Check_Ghost_Formal_Variable
+                  (Actual     => E,
+                   Formal     => Id,
+                   Is_Default => True);
+             end if;
+ 
              if Is_Limited_Type (T) and then not OK_For_Limited_Init (T, E) then
                 Error_Msg_N
                   ("initialization not allowed for limited types", E);
*************** package body Sem_Ch12 is
*** 2740,2745 ****
--- 2808,2817 ----
        if Has_Aspects (N) then
           Analyze_Aspect_Specifications (N, Id);
        end if;
+ 
+       if Parent_Installed then
+          Remove_Parent;
+       end if;
     end Analyze_Formal_Object_Declaration;
  
     ----------------------------------------------
*************** package body Sem_Ch12 is
*** 3069,3075 ****
        if Present (Aspect_Specifications (Gen_Decl)) then
           if No (Aspect_Specifications (N)) then
              Set_Aspect_Specifications (N, New_List);
-             Set_Has_Aspects (N);
           end if;
  
           declare
--- 3141,3146 ----
*************** package body Sem_Ch12 is
*** 3279,3285 ****
        Def  : constant Node_Id   := Default_Name (N);
        Expr : constant Node_Id   := Expression (N);
        Nam  : constant Entity_Id := Defining_Unit_Name (Spec);
!       Subp : Entity_Id;
  
     begin
        if Nam = Error then
--- 3350,3358 ----
        Def  : constant Node_Id   := Default_Name (N);
        Expr : constant Node_Id   := Expression (N);
        Nam  : constant Entity_Id := Defining_Unit_Name (Spec);
! 
!       Parent_Installed : Boolean := False;
!       Subp             : Entity_Id;
  
     begin
        if Nam = Error then
*************** package body Sem_Ch12 is
*** 3291,3296 ****
--- 3364,3371 ----
           goto Leave;
        end if;
  
+       Check_Abbreviated_Instance (Parent (N), Parent_Installed);
+ 
        Analyze_Subprogram_Declaration (N);
        Set_Is_Formal_Subprogram (Nam);
        Set_Has_Completion (Nam);
*************** package body Sem_Ch12 is
*** 3366,3371 ****
--- 3441,3465 ----
              goto Leave;
           end if;
  
+          --  The default for a ghost generic formal procedure should be a ghost
+          --  procedure (SPARK RM 6.9(13)).
+ 
+          if Ekind (Nam) = E_Procedure then
+             declare
+                Def_E : Entity_Id := Empty;
+             begin
+                if Nkind (Def) in N_Has_Entity then
+                   Def_E := Entity (Def);
+                end if;
+ 
+                Check_Ghost_Formal_Procedure_Or_Package
+                  (N          => Def,
+                   Actual     => Def_E,
+                   Formal     => Nam,
+                   Is_Default => True);
+             end;
+          end if;
+ 
           --  Default name may be overloaded, in which case the interpretation
           --  with the correct profile must be selected, as for a renaming.
           --  If the definition is an indexed component, it must denote a
*************** package body Sem_Ch12 is
*** 3490,3495 ****
--- 3584,3592 ----
           Analyze_Aspect_Specifications (N, Nam);
        end if;
  
+       if Parent_Installed then
+          Remove_Parent;
+       end if;
     end Analyze_Formal_Subprogram_Declaration;
  
     -------------------------------------
*************** package body Sem_Ch12 is
*** 3498,3504 ****
  
     procedure Analyze_Formal_Type_Declaration (N : Node_Id) is
        Def : constant Node_Id := Formal_Type_Definition (N);
!       T   : Entity_Id;
  
     begin
        T := Defining_Identifier (N);
--- 3595,3603 ----
  
     procedure Analyze_Formal_Type_Declaration (N : Node_Id) is
        Def : constant Node_Id := Formal_Type_Definition (N);
! 
!       Parent_Installed : Boolean := False;
!       T                : Entity_Id;
  
     begin
        T := Defining_Identifier (N);
*************** package body Sem_Ch12 is
*** 3510,3515 ****
--- 3609,3616 ----
             ("discriminants not allowed for this formal type", T);
        end if;
  
+       Check_Abbreviated_Instance (Parent (N), Parent_Installed);
+ 
        --  Enter the new name, and branch to specific routine
  
        case Nkind (Def) is
*************** package body Sem_Ch12 is
*** 3578,3583 ****
--- 3679,3688 ----
        if Has_Aspects (N) then
           Analyze_Aspect_Specifications (N, T);
        end if;
+ 
+       if Parent_Installed then
+          Remove_Parent;
+       end if;
     end Analyze_Formal_Type_Declaration;
  
     ------------------------------------
*************** package body Sem_Ch12 is
*** 4211,4217 ****
  
        if Nkind (N) = N_Package_Instantiation then
           Act_Decl_Id := New_Copy (Defining_Entity (N));
-          Set_Comes_From_Source (Act_Decl_Id, True);
  
           if Nkind (Defining_Unit_Name (N)) = N_Defining_Program_Unit_Name then
              Act_Decl_Name :=
--- 4316,4321 ----
*************** package body Sem_Ch12 is
*** 4258,4264 ****
        Generic_Renamings.Set_Last (0);
        Generic_Renamings_HTable.Reset;
  
!       Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
        Gen_Unit := Entity (Gen_Id);
  
        --  A package instantiation is Ghost when it is subject to pragma Ghost
--- 4362,4374 ----
        Generic_Renamings.Set_Last (0);
        Generic_Renamings_HTable.Reset;
  
!       --  Except for an abbreviated instance created to check a formal package,
!       --  install the parent if this is a generic child unit.
! 
!       if not Is_Abbreviated_Instance (Inst_Id) then
!          Check_Generic_Child_Unit (Gen_Id, Parent_Installed);
!       end if;
! 
        Gen_Unit := Entity (Gen_Id);
  
        --  A package instantiation is Ghost when it is subject to pragma Ghost
*************** package body Sem_Ch12 is
*** 5708,5716 ****
           Set_Scope (Inst_Id, Current_Scope);
  
           Set_Entity (Gen_Id, Gen_Unit);
-          Set_Is_Instantiated (Gen_Unit);
  
           if In_Extended_Main_Source_Unit (N) then
              Generate_Reference (Gen_Unit, N);
           end if;
  
--- 5818,5826 ----
           Set_Scope (Inst_Id, Current_Scope);
  
           Set_Entity (Gen_Id, Gen_Unit);
  
           if In_Extended_Main_Source_Unit (N) then
+             Set_Is_Instantiated (Gen_Unit);
              Generate_Reference (Gen_Unit, N);
           end if;
  
*************** package body Sem_Ch12 is
*** 6162,6168 ****
  
        while Present (Act) loop
           Append_To (Actuals,
!             Make_Identifier  (Loc, Chars (Defining_Identifier (Act))));
           Next (Act);
        end loop;
  
--- 6272,6278 ----
  
        while Present (Act) loop
           Append_To (Actuals,
!             Make_Identifier (Loc, Chars (Defining_Identifier (Act))));
           Next (Act);
        end loop;
  
*************** package body Sem_Ch12 is
*** 6183,6190 ****
          Specification => Spec_Node,
          Declarations  => New_List,
          Handled_Statement_Sequence =>
!            Make_Handled_Sequence_Of_Statements (Loc,
!              Statements    => New_List (Stmt)));
  
        return Body_Node;
     end Build_Subprogram_Body_Wrapper;
--- 6293,6300 ----
          Specification => Spec_Node,
          Declarations  => New_List,
          Handled_Statement_Sequence =>
!           Make_Handled_Sequence_Of_Statements (Loc,
!             Statements => New_List (Stmt)));
  
        return Body_Node;
     end Build_Subprogram_Body_Wrapper;
*************** package body Sem_Ch12 is
*** 6205,6217 ****
        Old_Main   : constant Entity_Id := Cunit_Entity (Main_Unit);
  
     begin
!       --  A new compilation unit node is built for the instance declaration
  
        Decl_Cunit :=
          Make_Compilation_Unit (Sloc (N),
            Context_Items  => Empty_List,
            Unit           => Act_Decl,
!           Aux_Decls_Node => Make_Compilation_Unit_Aux (Sloc (N)));
  
        Set_Parent_Spec (Act_Decl, Parent_Spec (N));
  
--- 6315,6330 ----
        Old_Main   : constant Entity_Id := Cunit_Entity (Main_Unit);
  
     begin
!       --  A new compilation unit node is built for the instance declaration.
!       --  It relocates the auxiliary declaration node from the compilation unit
!       --  where the instance appeared, so that declarations that originally
!       --  followed the instance will be attached to the spec compilation unit.
  
        Decl_Cunit :=
          Make_Compilation_Unit (Sloc (N),
            Context_Items  => Empty_List,
            Unit           => Act_Decl,
!           Aux_Decls_Node => Relocate_Node (Aux_Decls_Node (Parent (N))));
  
        Set_Parent_Spec (Act_Decl, Parent_Spec (N));
  
*************** package body Sem_Ch12 is
*** 6289,6294 ****
--- 6402,6426 ----
        Build_Elaboration_Entity (Decl_Cunit, New_Main);
     end Build_Instance_Compilation_Unit_Nodes;
  
+    --------------------------------
+    -- Check_Abbreviated_Instance --
+    --------------------------------
+ 
+    procedure Check_Abbreviated_Instance
+      (N                : Node_Id;
+       Parent_Installed : in out Boolean)
+    is
+       Inst_Node : Node_Id;
+ 
+    begin
+       if Nkind (N) = N_Package_Specification
+         and then Is_Abbreviated_Instance (Defining_Entity (N))
+       then
+          Inst_Node := Get_Unit_Instantiation_Node (Defining_Entity (N));
+          Check_Generic_Child_Unit (Name (Inst_Node), Parent_Installed);
+       end if;
+    end Check_Abbreviated_Instance;
+ 
     -----------------------------
     -- Check_Access_Definition --
     -----------------------------
*************** package body Sem_Ch12 is
*** 6738,6780 ****
        E           : Entity_Id;
        Formal_P    : Entity_Id;
        Formal_Decl : Node_Id;
     begin
        --  Iterate through the declarations in the instance, looking for package
!       --  renaming declarations that denote instances of formal packages. Stop
!       --  when we find the renaming of the current package itself. The
!       --  declaration for a formal package without a box is followed by an
!       --  internal entity that repeats the instantiation.
  
        E := First_Entity (P_Id);
        while Present (E) loop
           if Ekind (E) = E_Package then
!             if Renamed_Entity (E) = P_Id then
!                exit;
! 
!             elsif Nkind (Parent (E)) /= N_Package_Renaming_Declaration then
!                null;
  
!             else
                 Formal_Decl := Parent (Associated_Formal_Package (E));
  
!                --  Nothing to check if the formal has a box or an others_clause
!                --  (necessarily with a box), or no associations altogether
! 
!                if Box_Present (Formal_Decl)
!                  or else No (Generic_Associations (Formal_Decl))
!                then
!                   null;
! 
!                elsif Nkind (First (Generic_Associations (Formal_Decl))) =
!                        N_Others_Choice
!                then
!                   --  The internal validating package was generated but formal
!                   --  and instance are known to be compatible.
! 
!                   Formal_P := Next_Entity (E);
!                   Remove (Unit_Declaration_Node (Formal_P));
! 
!                else
                    Formal_P := Next_Entity (E);
  
                    --  If the instance is within an enclosing instance body
--- 6870,6892 ----
        E           : Entity_Id;
        Formal_P    : Entity_Id;
        Formal_Decl : Node_Id;
+ 
     begin
        --  Iterate through the declarations in the instance, looking for package
!       --  renaming declarations that denote instances of formal packages, until
!       --  we find the renaming of the current package itself. The declaration
!       --  of a formal package that requires conformance checking is followed by
!       --  an internal entity that is the abbreviated instance.
  
        E := First_Entity (P_Id);
        while Present (E) loop
           if Ekind (E) = E_Package then
!             exit when Renamed_Entity (E) = P_Id;
  
!             if Nkind (Parent (E)) = N_Package_Renaming_Declaration then
                 Formal_Decl := Parent (Associated_Formal_Package (E));
  
!                if Requires_Conformance_Checking (Formal_Decl) then
                    Formal_P := Next_Entity (E);
  
                    --  If the instance is within an enclosing instance body
*************** package body Sem_Ch12 is
*** 6931,6937 ****
                 Astype := First_Subtype (E);
              end if;
  
!             Set_Size_Info      (E, (Astype));
              Copy_RM_Size       (To => E, From => Astype);
              Set_First_Rep_Item (E, First_Rep_Item (Astype));
  
--- 7043,7049 ----
                 Astype := First_Subtype (E);
              end if;
  
!             Set_Size_Info      (E, Astype);
              Copy_RM_Size       (To => E, From => Astype);
              Set_First_Rep_Item (E, First_Rep_Item (Astype));
  
*************** package body Sem_Ch12 is
*** 6962,6973 ****
              elsif Present (Associated_Formal_Package (E))
                and then not Is_Generic_Formal (E)
              then
!                if Box_Present (Parent (Associated_Formal_Package (E))) then
!                   Check_Generic_Actuals (Renamed_Entity (E), True);
! 
!                else
!                   Check_Generic_Actuals (Renamed_Entity (E), False);
!                end if;
  
                 Set_Is_Hidden (E, False);
              end if;
--- 7074,7083 ----
              elsif Present (Associated_Formal_Package (E))
                and then not Is_Generic_Formal (E)
              then
!                Check_Generic_Actuals
!                  (Renamed_Entity (E),
!                   Is_Formal_Box =>
!                     Box_Present (Parent (Associated_Formal_Package (E))));
  
                 Set_Is_Hidden (E, False);
              end if;
*************** package body Sem_Ch12 is
*** 7708,7714 ****
        function Copy_Generic_List
          (L         : List_Id;
           Parent_Id : Node_Id) return List_Id;
!       --  Apply Copy_Node recursively to the members of a node list
  
        function In_Defining_Unit_Name (Nam : Node_Id) return Boolean;
        --  True if an identifier is part of the defining program unit name of
--- 7818,7824 ----
        function Copy_Generic_List
          (L         : List_Id;
           Parent_Id : Node_Id) return List_Id;
!       --  Apply Copy_Generic_Node recursively to the members of a node list
  
        function In_Defining_Unit_Name (Nam : Node_Id) return Boolean;
        --  True if an identifier is part of the defining program unit name of
*************** package body Sem_Ch12 is
*** 8074,8080 ****
                       Set_Entity (New_N, Entity (Name (Assoc)));
  
                    elsif Nkind (Assoc) in N_Entity
!                     and then Expander_Active
                    then
                       --  Inlining case: we are copying a tree that contains
                       --  global entities, which are preserved in the copy to be
--- 8184,8193 ----
                       Set_Entity (New_N, Entity (Name (Assoc)));
  
                    elsif Nkind (Assoc) in N_Entity
!                     and then (Expander_Active or
!                                 (GNATprove_Mode
!                                   and then not In_Spec_Expression
!                                   and then not Inside_A_Generic))
                    then
                       --  Inlining case: we are copying a tree that contains
                       --  global entities, which are preserved in the copy to be
*************** package body Sem_Ch12 is
*** 10224,10230 ****
        Prim      : Node_Id;
  
     begin
!       if Prims_List /= No_Elist then
           Prim_Elmt := First_Elmt (Prims_List);
           while Present (Prim_Elmt) loop
              Prim := Node (Prim_Elmt);
--- 10337,10343 ----
        Prim      : Node_Id;
  
     begin
!       if Present (Prims_List) then
           Prim_Elmt := First_Elmt (Prims_List);
           while Present (Prim_Elmt) loop
              Prim := Node (Prim_Elmt);
*************** package body Sem_Ch12 is
*** 10247,10258 ****
     is
        Loc            : constant Source_Ptr := Sloc (Actual);
        Hidden_Formals : constant Elist_Id   := New_Elmt_List;
!       Actual_Pack    : Entity_Id;
!       Formal_Pack    : Entity_Id;
!       Gen_Parent     : Entity_Id;
!       Decls          : List_Id;
!       Nod            : Node_Id;
!       Parent_Spec    : Node_Id;
  
        procedure Find_Matching_Actual
         (F    : Node_Id;
--- 10360,10372 ----
     is
        Loc            : constant Source_Ptr := Sloc (Actual);
        Hidden_Formals : constant Elist_Id   := New_Elmt_List;
! 
!       Actual_Pack : Entity_Id;
!       Formal_Pack : Entity_Id;
!       Gen_Parent  : Entity_Id;
!       Decls       : List_Id;
!       Nod         : Node_Id;
!       Parent_Spec : Node_Id;
  
        procedure Find_Matching_Actual
         (F    : Node_Id;
*************** package body Sem_Ch12 is
*** 10520,10526 ****
           Error_Msg_N
             ("expect package instance to instantiate formal", Actual);
           Abandon_Instantiation (Actual);
-          raise Program_Error;
  
        else
           Actual_Pack := Entity (Actual);
--- 10634,10639 ----
*************** package body Sem_Ch12 is
*** 10533,10547 ****
              Actual_Pack := Renamed_Entity (Actual_Pack);
           end if;
  
!          if Nkind (Analyzed_Formal) = N_Formal_Package_Declaration then
!             Gen_Parent  := Get_Instance_Of (Entity (Name (Analyzed_Formal)));
!             Formal_Pack := Defining_Identifier (Analyzed_Formal);
!          else
!             Gen_Parent :=
!               Generic_Parent (Specification (Analyzed_Formal));
!             Formal_Pack :=
!               Defining_Unit_Name (Specification (Analyzed_Formal));
!          end if;
  
           if Nkind (Parent (Actual_Pack)) = N_Defining_Program_Unit_Name then
              Parent_Spec := Package_Specification (Actual_Pack);
--- 10646,10668 ----
              Actual_Pack := Renamed_Entity (Actual_Pack);
           end if;
  
!          --  The analyzed formal is expected to be the result of the rewriting
!          --  of the formal package into a regular package by analysis.
! 
!          pragma Assert (Nkind (Analyzed_Formal) = N_Package_Declaration
!            and then Nkind (Original_Node (Analyzed_Formal)) =
!                                                  N_Formal_Package_Declaration);
! 
!          Gen_Parent := Generic_Parent (Specification (Analyzed_Formal));
!          Formal_Pack := Defining_Unit_Name (Specification (Analyzed_Formal));
! 
!          --  The actual for a ghost generic formal package should be a ghost
!          --  package (SPARK RM 6.9(14)).
! 
!          Check_Ghost_Formal_Procedure_Or_Package
!            (N      => Actual,
!             Actual => Actual_Pack,
!             Formal => Formal_Pack);
  
           if Nkind (Parent (Actual_Pack)) = N_Defining_Program_Unit_Name then
              Parent_Spec := Package_Specification (Actual_Pack);
*************** package body Sem_Ch12 is
*** 10708,10727 ****
  
                 Next_Entity (Actual_Ent);
              end loop;
- 
-             --  No conformance to check if the generic has no formal parameters
-             --  and the formal package has no generic associations.
- 
-             if Is_Empty_List (Formals)
-               and then
-                 (Box_Present (Formal)
-                    or else No (Generic_Associations (Formal)))
-             then
-                return Decls;
-             end if;
           end;
  
!          --  If the formal is not declared with a box, reanalyze it as an
           --  abbreviated instantiation, to verify the matching rules of 12.7.
           --  The actual checks are performed after the generic associations
           --  have been analyzed, to guarantee the same visibility for this
--- 10829,10837 ----
  
                 Next_Entity (Actual_Ent);
              end loop;
           end;
  
!          --  If the formal requires conformance checking, reanalyze it as an
           --  abbreviated instantiation, to verify the matching rules of 12.7.
           --  The actual checks are performed after the generic associations
           --  have been analyzed, to guarantee the same visibility for this
*************** package body Sem_Ch12 is
*** 10733,10754 ****
           --  checking, because it contains formal declarations for those
           --  defaulted parameters, and those should not reach the back-end.
  
!          if not Box_Present (Formal) then
              declare
!                I_Pack : constant Entity_Id :=
!                           Make_Temporary (Sloc (Actual), 'P');
  
              begin
                 Set_Is_Internal (I_Pack);
                 Mutate_Ekind (I_Pack, E_Package);
                 Set_Hidden_In_Formal_Instance (I_Pack, Hidden_Formals);
  
                 Append_To (Decls,
!                  Make_Package_Instantiation (Sloc (Actual),
                     Defining_Unit_Name   => I_Pack,
!                    Name                 =>
!                      New_Occurrence_Of
!                        (Get_Instance_Of (Gen_Parent), Sloc (Actual)),
                     Generic_Associations => Generic_Associations (Formal)));
              end;
           end if;
--- 10843,10882 ----
           --  checking, because it contains formal declarations for those
           --  defaulted parameters, and those should not reach the back-end.
  
!          if Requires_Conformance_Checking (Formal) then
              declare
!                I_Pack : constant Entity_Id := Make_Temporary (Loc, 'P');
! 
!                I_Nam : Node_Id;
  
              begin
                 Set_Is_Internal (I_Pack);
                 Mutate_Ekind (I_Pack, E_Package);
+ 
+                --  Insert the package into the list of its hidden entities so
+                --  that the list is not empty for Is_Abbreviated_Instance.
+ 
+                Append_Elmt (I_Pack, Hidden_Formals);
+ 
                 Set_Hidden_In_Formal_Instance (I_Pack, Hidden_Formals);
  
+                --  If the generic is a child unit, Check_Generic_Child_Unit
+                --  needs its original name in case it is qualified.
+ 
+                if Is_Child_Unit (Gen_Parent) then
+                   I_Nam :=
+                     New_Copy_Tree (Name (Original_Node (Analyzed_Formal)));
+                   pragma Assert (Entity (I_Nam) = Gen_Parent);
+ 
+                else
+                   I_Nam :=
+                     New_Occurrence_Of (Get_Instance_Of (Gen_Parent), Loc);
+                end if;
+ 
                 Append_To (Decls,
!                  Make_Package_Instantiation (Loc,
                     Defining_Unit_Name   => I_Pack,
!                    Name                 => I_Nam,
                     Generic_Associations => Generic_Associations (Formal)));
              end;
           end if;
*************** package body Sem_Ch12 is
*** 10823,10828 ****
--- 10951,10968 ----
              Act_E := Empty;
           end if;
  
+          --  The actual for a ghost generic formal procedure should be a ghost
+          --  procedure (SPARK RM 6.9(14)).
+ 
+          if Present (Act_E)
+            and then Ekind (Act_E) = E_Procedure
+          then
+             Check_Ghost_Formal_Procedure_Or_Package
+               (N      => Act,
+                Actual => Act_E,
+                Formal => Analyzed_S);
+          end if;
+ 
           if (Present (Act_E) and then Is_Overloadable (Act_E))
             or else Nkind (Act) in N_Attribute_Reference
                                  | N_Indexed_Component
*************** package body Sem_Ch12 is
*** 10968,10973 ****
--- 11108,11115 ----
  
           Set_Convention (Defining_Unit_Name (New_Spec), Convention_Intrinsic);
  
+          Copy_Ghost_Aspect (Formal, To => Decl_Node);
+ 
           --  Eliminate the calls to it when optimization is enabled
  
           Set_Is_Inlined (Defining_Unit_Name (New_Spec));
*************** package body Sem_Ch12 is
*** 11342,11381 ****
           --  volatility refinement aspects.
  
           declare
!             Actual_Obj : Entity_Id;
!             N          : Node_Id := Actual;
           begin
-             --  Similar to Sem_Util.Get_Enclosing_Object, but treat
-             --  pointer dereference like component selection.
-             loop
-                if Is_Entity_Name (N) then
-                   Actual_Obj := Entity (N);
-                   exit;
-                end if;
- 
-                case Nkind (N) is
-                   when N_Indexed_Component
-                      | N_Selected_Component
-                      | N_Slice
-                      | N_Explicit_Dereference
-                   =>
-                      N := Prefix (N);
- 
-                   when N_Type_Conversion =>
-                      N := Expression (N);
- 
-                   when others =>
-                      Actual_Obj := Etype (N);
-                      exit;
-                end case;
-             end loop;
- 
              Check_Volatility_Compatibility
                (Actual_Obj, A_Gen_Obj, "actual object",
                 "its corresponding formal object of mode in out",
                 Srcpos_Bearer => Actual);
           end;
  
        --  Formal in-parameter
  
        else
--- 11484,11505 ----
           --  volatility refinement aspects.
  
           declare
!             Actual_Obj : constant Entity_Id :=
!               Get_Enclosing_Deep_Object (Actual);
           begin
              Check_Volatility_Compatibility
                (Actual_Obj, A_Gen_Obj, "actual object",
                 "its corresponding formal object of mode in out",
                 Srcpos_Bearer => Actual);
           end;
  
+          --  The actual for a ghost generic formal IN OUT parameter should be a
+          --  ghost object (SPARK RM 6.9(14)).
+ 
+          Check_Ghost_Formal_Variable
+            (Actual => Actual,
+             Formal => A_Gen_Obj);
+ 
        --  Formal in-parameter
  
        else
*************** package body Sem_Ch12 is
*** 11401,11406 ****
--- 11525,11531 ----
                  Object_Definition      => Def,
                  Expression             => Actual);
  
+             Copy_Ghost_Aspect (Formal, To => Decl_Node);
              Set_Corresponding_Generic_Association (Decl_Node, Act_Assoc);
  
              --  A generic formal object of a tagged type is defined to be
*************** package body Sem_Ch12 is
*** 11412,11417 ****
--- 11537,11552 ----
  
              Append (Decl_Node, List);
  
+             --  The actual for a ghost generic formal IN parameter of
+             --  access-to-variable type should be a ghost object (SPARK
+             --  RM 6.9(14)).
+ 
+             if Is_Access_Variable (Etype (A_Gen_Obj)) then
+                Check_Ghost_Formal_Variable
+                  (Actual => Actual,
+                   Formal => A_Gen_Obj);
+             end if;
+ 
              --  No need to repeat (pre-)analysis of some expression nodes
              --  already handled in Preanalyze_Actuals.
  
*************** package body Sem_Ch12 is
*** 11485,11490 ****
--- 11620,11626 ----
                  Expression             => New_Copy_Tree
                                              (Default_Expression (Formal)));
  
+             Copy_Ghost_Aspect (Formal, To => Decl_Node);
              Set_Corresponding_Generic_Association
                (Decl_Node, Expression (Decl_Node));
  
*************** package body Sem_Ch12 is
*** 11756,11762 ****
        Saved_SM   : constant SPARK_Mode_Type          := SPARK_Mode;
        Saved_SMP  : constant Node_Id                  := SPARK_Mode_Pragma;
        Saved_SS   : constant Suppress_Record          := Scope_Suppress;
!       Saved_Warn : constant Warning_Record           := Save_Warnings;
  
        Act_Body      : Node_Id;
        Act_Body_Id   : Entity_Id;
--- 11892,11898 ----
        Saved_SM   : constant SPARK_Mode_Type          := SPARK_Mode;
        Saved_SMP  : constant Node_Id                  := SPARK_Mode_Pragma;
        Saved_SS   : constant Suppress_Record          := Scope_Suppress;
!       Saved_Warn : constant Warnings_State           := Save_Warnings;
  
        Act_Body      : Node_Id;
        Act_Body_Id   : Entity_Id;
*************** package body Sem_Ch12 is
*** 12014,12021 ****
           end;
  
           --  If it is a child unit, make the parent instance (which is an
!          --  instance of the parent of the generic) visible. The parent
!          --  instance is the prefix of the name of the generic unit.
  
           if Ekind (Scope (Gen_Unit)) = E_Generic_Package
             and then Nkind (Gen_Id) = N_Expanded_Name
--- 12150,12175 ----
           end;
  
           --  If it is a child unit, make the parent instance (which is an
!          --  instance of the parent of the generic) visible.
! 
!          --  1) The child unit's parent is an explicit parent instance (the
!          --  prefix of the name of the generic unit):
! 
!          --    package Child_Package is new Parent_Instance.Child_Unit;
! 
!          --  2) The child unit's parent is an implicit parent instance (e.g.
!          --  when instantiating a sibling package):
! 
!          --  generic
!          --  package Parent.Second_Child is
!          --    ...
! 
!          --  generic
!          --  package Parent.First_Child is
!          --    package Sibling_Package is new Second_Child;
! 
!          --  3) The child unit's parent is not an instance, so the scope is
!          --  simply the one of the unit.
  
           if Ekind (Scope (Gen_Unit)) = E_Generic_Package
             and then Nkind (Gen_Id) = N_Expanded_Name
*************** package body Sem_Ch12 is
*** 12025,12030 ****
--- 12179,12198 ----
              Install_Parent (Par_Ent, In_Body => True);
              Par_Installed := True;
  
+          elsif Ekind (Scope (Gen_Unit)) = E_Generic_Package
+            and then Ekind (Scope (Act_Decl_Id)) = E_Package
+            and then Is_Generic_Instance (Scope (Act_Decl_Id))
+            and then Nkind
+              (Name (Get_Unit_Instantiation_Node
+                       (Scope (Act_Decl_Id)))) = N_Expanded_Name
+          then
+             Par_Ent := Entity
+               (Prefix (Name (Get_Unit_Instantiation_Node
+                                (Scope (Act_Decl_Id)))));
+             Par_Vis := Is_Immediately_Visible (Par_Ent);
+             Install_Parent (Par_Ent, In_Body => True);
+             Par_Installed := True;
+ 
           elsif Is_Child_Unit (Gen_Unit) then
              Par_Ent := Scope (Gen_Unit);
              Par_Vis := Is_Immediately_Visible (Par_Ent);
*************** package body Sem_Ch12 is
*** 12293,12299 ****
        Saved_SM   : constant SPARK_Mode_Type          := SPARK_Mode;
        Saved_SMP  : constant Node_Id                  := SPARK_Mode_Pragma;
        Saved_SS   : constant Suppress_Record          := Scope_Suppress;
!       Saved_Warn : constant Warning_Record           := Save_Warnings;
  
        Act_Body      : Node_Id;
        Act_Body_Id   : Entity_Id;
--- 12461,12467 ----
        Saved_SM   : constant SPARK_Mode_Type          := SPARK_Mode;
        Saved_SMP  : constant Node_Id                  := SPARK_Mode_Pragma;
        Saved_SS   : constant Suppress_Record          := Scope_Suppress;
!       Saved_Warn : constant Warnings_State           := Save_Warnings;
  
        Act_Body      : Node_Id;
        Act_Body_Id   : Entity_Id;
*************** package body Sem_Ch12 is
*** 13969,13975 ****
              --  a full view, then we'll retrieve that.
  
              if Ekind (A_Gen_T) = E_Incomplete_Type
!               and then not Present (Full_View (Act_T))
              then
                 null;
  
--- 14137,14143 ----
              --  a full view, then we'll retrieve that.
  
              if Ekind (A_Gen_T) = E_Incomplete_Type
!               and then No (Full_View (Act_T))
              then
                 null;
  
*************** package body Sem_Ch12 is
*** 14141,14146 ****
--- 14309,14316 ----
            Defining_Identifier => Subt,
            Subtype_Indication  => New_Occurrence_Of (Act_T, Loc));
  
+       Copy_Ghost_Aspect (Formal, To => Decl_Node);
+ 
        --  Record whether the actual is private at this point, so that
        --  Check_Generic_Actuals can restore its proper view before the
        --  semantic analysis of the instance.
*************** package body Sem_Ch12 is
*** 14234,14239 ****
--- 14404,14419 ----
        return Decl_Nodes;
     end Instantiate_Type;
  
+    -----------------------------
+    -- Is_Abbreviated_Instance --
+    -----------------------------
+ 
+    function Is_Abbreviated_Instance (E : Entity_Id) return Boolean is
+    begin
+       return Ekind (E) = E_Package
+         and then Present (Hidden_In_Formal_Instance (E));
+    end Is_Abbreviated_Instance;
+ 
     ---------------------
     -- Is_In_Main_Unit --
     ---------------------
*************** package body Sem_Ch12 is
*** 14284,14290 ****
     is
        Comp_Unit          : constant Node_Id := Cunit (Get_Source_Unit (Spec));
        Saved_Style_Check  : constant Boolean := Style_Check;
!       Saved_Warnings     : constant Warning_Record := Save_Warnings;
        True_Parent        : Node_Id;
        Inst_Node          : Node_Id;
        OK                 : Boolean;
--- 14464,14470 ----
     is
        Comp_Unit          : constant Node_Id := Cunit (Get_Source_Unit (Spec));
        Saved_Style_Check  : constant Boolean := Style_Check;
!       Saved_Warn         : constant Warnings_State := Save_Warnings;
        True_Parent        : Node_Id;
        Inst_Node          : Node_Id;
        OK                 : Boolean;
*************** package body Sem_Ch12 is
*** 14323,14329 ****
              --  not analyzed here either.
  
              elsif Nkind (Decl) = N_Package_Instantiation
!               and then not Is_Internal (Defining_Entity (Decl))
              then
                 Append_Elmt (Decl, Previous_Instances);
  
--- 14503,14509 ----
              --  not analyzed here either.
  
              elsif Nkind (Decl) = N_Package_Instantiation
!               and then not Is_Abbreviated_Instance (Defining_Entity (Decl))
              then
                 Append_Elmt (Decl, Previous_Instances);
  
*************** package body Sem_Ch12 is
*** 14615,14621 ****
              Expander_Mode_Save_And_Set (True);
              Load_Needed_Body (Comp_Unit, OK);
              Opt.Style_Check := Saved_Style_Check;
!             Restore_Warnings (Saved_Warnings);
              Expander_Mode_Restore;
  
              if not OK
--- 14795,14801 ----
              Expander_Mode_Save_And_Set (True);
              Load_Needed_Body (Comp_Unit, OK);
              Opt.Style_Check := Saved_Style_Check;
!             Restore_Warnings (Saved_Warn);
              Expander_Mode_Restore;
  
              if not OK
*************** package body Sem_Ch12 is
*** 15206,15211 ****
--- 15386,15405 ----
        end if;
     end Remove_Parent;
  
+    -----------------------------------
+    -- Requires_Conformance_Checking --
+    -----------------------------------
+ 
+    function Requires_Conformance_Checking (N : Node_Id) return Boolean is
+    begin
+       --  No conformance checking required if the generic actual part is empty,
+       --  or is a box or an others_clause (necessarily with a box).
+ 
+       return Present (Generic_Associations (N))
+         and then not Box_Present (N)
+         and then Nkind (First (Generic_Associations (N))) /= N_Others_Choice;
+    end Requires_Conformance_Checking;
+ 
     -----------------
     -- Restore_Env --
     -----------------
*************** package body Sem_Ch12 is
*** 15315,15321 ****
              end loop;
           end if;
  
!          Exchange_Declarations (Node (M));
           Next_Elmt (M);
        end loop;
  
--- 15509,15515 ----
              end loop;
           end if;
  
!          Exchange_Declarations (Typ);
           Next_Elmt (M);
        end loop;
  
*************** package body Sem_Ch12 is
*** 17163,17175 ****
  
              else
                 declare
!                   Act_Iface_List : Elist_Id;
!                   Iface          : Node_Id;
!                   Iface_Ent      : Entity_Id;
  
                 begin
                    Iface := First (Abstract_Interface_List (Formal));
-                   Collect_Interfaces (Def_Sub, Act_Iface_List);
  
                    while Present (Iface) loop
                       Iface_Ent := Entity (Iface);
--- 17357,17367 ----
  
              else
                 declare
!                   Iface     : Node_Id;
!                   Iface_Ent : Entity_Id;
  
                 begin
                    Iface := First (Abstract_Interface_List (Formal));
  
                    while Present (Iface) loop
                       Iface_Ent := Entity (Iface);
*************** package body Sem_Ch12 is
*** 17192,17198 ****
           end if;
        end Validate_Derived_Type_Default;
  
!       --  Start of processing for Validate_Formal_Type_Default
  
     begin
        Analyze (Default);
--- 17384,17390 ----
           end if;
        end Validate_Derived_Type_Default;
  
!    --  Start of processing for Validate_Formal_Type_Default
  
     begin
        Analyze (Default);
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch12.ads gcc-13.1.0/gcc/ada/sem_ch12.ads
*** gcc-12.2.0/gcc/ada/sem_ch12.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch12.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Inline; use Inline;
*** 27,41 ****
  with Types;  use Types;
  
  package Sem_Ch12 is
!    procedure Analyze_Generic_Package_Declaration        (N : Node_Id);
!    procedure Analyze_Generic_Subprogram_Declaration     (N : Node_Id);
!    procedure Analyze_Package_Instantiation              (N : Node_Id);
!    procedure Analyze_Procedure_Instantiation            (N : Node_Id);
!    procedure Analyze_Function_Instantiation             (N : Node_Id);
!    procedure Analyze_Formal_Object_Declaration          (N : Node_Id);
!    procedure Analyze_Formal_Type_Declaration            (N : Node_Id);
!    procedure Analyze_Formal_Subprogram_Declaration      (N : Node_Id);
!    procedure Analyze_Formal_Package_Declaration         (N : Node_Id);
  
     procedure Start_Generic;
     --  Must be invoked before starting to process a generic spec or body
--- 27,41 ----
  with Types;  use Types;
  
  package Sem_Ch12 is
!    procedure Analyze_Generic_Package_Declaration    (N : Node_Id);
!    procedure Analyze_Generic_Subprogram_Declaration (N : Node_Id);
!    procedure Analyze_Package_Instantiation          (N : Node_Id);
!    procedure Analyze_Procedure_Instantiation        (N : Node_Id);
!    procedure Analyze_Function_Instantiation         (N : Node_Id);
!    procedure Analyze_Formal_Object_Declaration      (N : Node_Id);
!    procedure Analyze_Formal_Type_Declaration        (N : Node_Id);
!    procedure Analyze_Formal_Subprogram_Declaration  (N : Node_Id);
!    procedure Analyze_Formal_Package_Declaration     (N : Node_Id);
  
     procedure Start_Generic;
     --  Must be invoked before starting to process a generic spec or body
*************** package Sem_Ch12 is
*** 110,115 ****
--- 110,119 ----
     --  function and procedure instances. The flag Body_Optional has the
     --  same purpose as described for Instantiate_Package_Body.
  
+    function Is_Abbreviated_Instance (E : Entity_Id) return Boolean;
+    --  Return true if E is a package created for an abbreviated instantiation
+    --  to check conformance between formal package and corresponding actual.
+ 
     function Need_Subprogram_Instance_Body
       (N    : Node_Id;
        Subp : Entity_Id) return Boolean;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch13.adb gcc-13.1.0/gcc/ada/sem_ch13.adb
*** gcc-12.2.0/gcc/ada/sem_ch13.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch13.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,80 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Aspects;        use Aspects;
! with Atree;          use Atree;
! with Checks;         use Checks;
! with Contracts;      use Contracts;
! with Debug;          use Debug;
! with Einfo;          use Einfo;
! with Einfo.Entities; use Einfo.Entities;
! with Einfo.Utils;    use Einfo.Utils;
! with Elists;         use Elists;
! with Errout;         use Errout;
! with Exp_Disp;       use Exp_Disp;
! with Exp_Tss;        use Exp_Tss;
! with Exp_Util;       use Exp_Util;
! with Freeze;         use Freeze;
! with Ghost;          use Ghost;
! with Lib;            use Lib;
! with Lib.Xref;       use Lib.Xref;
! with Namet;          use Namet;
! with Nlists;         use Nlists;
! with Nmake;          use Nmake;
! with Opt;            use Opt;
! with Par_SCO;        use Par_SCO;
! with Restrict;       use Restrict;
! with Rident;         use Rident;
! with Rtsfind;        use Rtsfind;
! with Sem;            use Sem;
! with Sem_Aux;        use Sem_Aux;
! with Sem_Case;       use Sem_Case;
! with Sem_Cat;        use Sem_Cat;
! with Sem_Ch3;        use Sem_Ch3;
! with Sem_Ch6;        use Sem_Ch6;
! with Sem_Ch7;        use Sem_Ch7;
! with Sem_Ch8;        use Sem_Ch8;
! with Sem_Dim;        use Sem_Dim;
! with Sem_Eval;       use Sem_Eval;
! with Sem_Prag;       use Sem_Prag;
! with Sem_Res;        use Sem_Res;
! with Sem_Type;       use Sem_Type;
! with Sem_Util;       use Sem_Util;
! with Sem_Warn;       use Sem_Warn;
! with Sinfo;          use Sinfo;
! with Sinfo.Nodes;    use Sinfo.Nodes;
! with Sinfo.Utils;    use Sinfo.Utils;
! with Sinput;         use Sinput;
! with Snames;         use Snames;
! with Stand;          use Stand;
  with Table;
! with Targparm;       use Targparm;
! with Ttypes;         use Ttypes;
! with Tbuild;         use Tbuild;
! with Urealp;         use Urealp;
! with Warnsw;         use Warnsw;
  
  with GNAT.Heap_Sort_G;
  
--- 23,83 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
! with Accessibility;    use Accessibility;
! with Aspects;          use Aspects;
! with Atree;            use Atree;
! with Checks;           use Checks;
! with Contracts;        use Contracts;
! with Debug;            use Debug;
! with Einfo;            use Einfo;
! with Einfo.Entities;   use Einfo.Entities;
! with Einfo.Utils;      use Einfo.Utils;
! with Elists;           use Elists;
! with Errout;           use Errout;
! with Exp_Ch3;          use Exp_Ch3;
! with Exp_Disp;         use Exp_Disp;
! with Exp_Tss;          use Exp_Tss;
! with Exp_Util;         use Exp_Util;
! with Freeze;           use Freeze;
! with Ghost;            use Ghost;
! with Lib;              use Lib;
! with Lib.Xref;         use Lib.Xref;
! with Namet;            use Namet;
! with Nlists;           use Nlists;
! with Nmake;            use Nmake;
! with Opt;              use Opt;
! with Par_SCO;          use Par_SCO;
! with Restrict;         use Restrict;
! with Rident;           use Rident;
! with Rtsfind;          use Rtsfind;
! with Sem;              use Sem;
! with Sem_Aux;          use Sem_Aux;
! with Sem_Case;         use Sem_Case;
! with Sem_Cat;          use Sem_Cat;
! with Sem_Ch3;          use Sem_Ch3;
! with Sem_Ch6;          use Sem_Ch6;
! with Sem_Ch7;          use Sem_Ch7;
! with Sem_Ch8;          use Sem_Ch8;
! with Sem_Dim;          use Sem_Dim;
! with Sem_Eval;         use Sem_Eval;
! with Sem_Prag;         use Sem_Prag;
! with Sem_Res;          use Sem_Res;
! with Sem_Type;         use Sem_Type;
! with Sem_Util;         use Sem_Util;
! with Sem_Warn;         use Sem_Warn;
! with Sinfo;            use Sinfo;
! with Sinfo.Nodes;      use Sinfo.Nodes;
! with Sinfo.Utils;      use Sinfo.Utils;
! with Sinput;           use Sinput;
! with Snames;           use Snames;
! with Stand;            use Stand;
! with System.Case_Util; use System.Case_Util;
  with Table;
! with Targparm;         use Targparm;
! with Ttypes;           use Ttypes;
! with Tbuild;           use Tbuild;
! with Urealp;           use Urealp;
! with Warnsw;           use Warnsw;
  
  with GNAT.Heap_Sort_G;
  
*************** package body Sem_Ch13 is
*** 133,139 ****
     --  may be before the freeze point of the type. The predicate expression is
     --  preanalyzed at this point, to catch visibility errors.
  
!    procedure Build_Predicate_Functions (Typ : Entity_Id; N : Node_Id);
     --  If Typ has predicates (indicated by Has_Predicates being set for Typ),
     --  then either there are pragma Predicate entries on the rep chain for the
     --  type (note that Predicate aspects are converted to pragma Predicate), or
--- 136,142 ----
     --  may be before the freeze point of the type. The predicate expression is
     --  preanalyzed at this point, to catch visibility errors.
  
!    procedure Build_Predicate_Function (Typ : Entity_Id; N : Node_Id);
     --  If Typ has predicates (indicated by Has_Predicates being set for Typ),
     --  then either there are pragma Predicate entries on the rep chain for the
     --  type (note that Predicate aspects are converted to pragma Predicate), or
*************** package body Sem_Ch13 is
*** 141,149 ****
     --  This procedure builds body for the Predicate function that tests these
     --  predicates. N is the freeze node for the type. The spec of the function
     --  is inserted before the freeze node, and the body of the function is
!    --  inserted after the freeze node. If the predicate expression has a least
!    --  one Raise_Expression, then this procedure also builds the M version of
!    --  the predicate function for use in membership tests.
  
     procedure Check_Pool_Size_Clash (Ent : Entity_Id; SP, SS : Node_Id);
     --  Called if both Storage_Pool and Storage_Size attribute definition
--- 144,150 ----
     --  This procedure builds body for the Predicate function that tests these
     --  predicates. N is the freeze node for the type. The spec of the function
     --  is inserted before the freeze node, and the body of the function is
!    --  inserted after the freeze node.
  
     procedure Check_Pool_Size_Clash (Ent : Entity_Id; SP, SS : Node_Id);
     --  Called if both Storage_Pool and Storage_Size attribute definition
*************** package body Sem_Ch13 is
*** 182,188 ****
  
     function Is_Predicate_Static
       (Expr : Node_Id;
!       Nam  : Name_Id) return Boolean;
     --  Given predicate expression Expr, tests if Expr is predicate-static in
     --  the sense of the rules in (RM 3.2.4 (15-24)). Occurrences of the type
     --  name in the predicate expression have been replaced by references to
--- 183,190 ----
  
     function Is_Predicate_Static
       (Expr : Node_Id;
!       Nam  : Name_Id;
!       Warn : Boolean := True) return Boolean;
     --  Given predicate expression Expr, tests if Expr is predicate-static in
     --  the sense of the rules in (RM 3.2.4 (15-24)). Occurrences of the type
     --  name in the predicate expression have been replaced by references to
*************** package body Sem_Ch13 is
*** 195,201 ****
     --  returned for non-scalar types.
     --
     --  Note: the RM seems to suggest that string types can also have static
!    --  predicates. But that really makes lttle sense as very few useful
     --  predicates can be constructed for strings. Remember that:
     --
     --     "ABC" < "DEF"
--- 197,203 ----
     --  returned for non-scalar types.
     --
     --  Note: the RM seems to suggest that string types can also have static
!    --  predicates. But that really makes little sense as very few useful
     --  predicates can be constructed for strings. Remember that:
     --
     --     "ABC" < "DEF"
*************** package body Sem_Ch13 is
*** 207,212 ****
--- 209,219 ----
     --
     --  We can't allow this, otherwise we have predicate-static applying to a
     --  larger class than static expressions, which was never intended.
+    --
+    --  The Warn parameter is True iff this is not a recursive call. This
+    --  parameter is used to avoid generating warnings for subexpressions and
+    --  for cases where the predicate expression (as originally written by
+    --  the user, before any transformations) is a Boolean literal.
  
     procedure New_Put_Image_Subprogram
       (N    : Node_Id;
*************** package body Sem_Ch13 is
*** 938,966 ****
        --  aspect node N for the given type (entity) of the aspect does not
        --  appear too late according to the rules in RM 13.1(9) and 13.1(10).
  
-       procedure Inherit_Delayed_Rep_Aspects (ASN : Node_Id);
-       --  As discussed in the spec of Aspects (see Aspect_Delay declaration),
-       --  a derived type can inherit aspects from its parent which have been
-       --  specified at the time of the derivation using an aspect, as in:
-       --
-       --    type A is range 1 .. 10
-       --      with Size => Not_Defined_Yet;
-       --    ..
-       --    type B is new A;
-       --    ..
-       --    Not_Defined_Yet : constant := 64;
-       --
-       --  In this example, the Size of A is considered to be specified prior
-       --  to the derivation, and thus inherited, even though the value is not
-       --  known at the time of derivation. To deal with this, we use two entity
-       --  flags. The flag Has_Derived_Rep_Aspects is set in the parent type (A
-       --  here), and then the flag May_Inherit_Delayed_Rep_Aspects is set in
-       --  the derived type (B here). If this flag is set when the derived type
-       --  is frozen, then this procedure is called to ensure proper inheritance
-       --  of all delayed aspects from the parent type. The derived type is E,
-       --  the argument to Analyze_Aspects_At_Freeze_Point. ASN is the first
-       --  aspect specification node in the Rep_Item chain for the parent type.
- 
        procedure Make_Pragma_From_Boolean_Aspect (ASN : Node_Id);
        --  Given an aspect specification node ASN whose expression is an
        --  optional Boolean, this routines creates the corresponding pragma
--- 945,950 ----
*************** package body Sem_Ch13 is
*** 1078,1276 ****
           end if;
        end Check_Aspect_Too_Late;
  
-       ---------------------------------
-       -- Inherit_Delayed_Rep_Aspects --
-       ---------------------------------
- 
-       procedure Inherit_Delayed_Rep_Aspects (ASN : Node_Id) is
-          A_Id : constant Aspect_Id := Get_Aspect_Id (ASN);
-          P    : constant Entity_Id := Entity (ASN);
-          --  Entity for parent type
- 
-          N : Node_Id;
-          --  Item from Rep_Item chain
- 
-          A : Aspect_Id;
- 
-       begin
-          --  Loop through delayed aspects for the parent type
- 
-          N := ASN;
-          while Present (N) loop
-             if Nkind (N) = N_Aspect_Specification then
-                exit when Entity (N) /= P;
- 
-                if Is_Delayed_Aspect (N) then
-                   A := Get_Aspect_Id (Chars (Identifier (N)));
- 
-                   --  Process delayed rep aspect. For Boolean attributes it is
-                   --  not possible to cancel an attribute once set (the attempt
-                   --  to use an aspect with xxx => False is an error) for a
-                   --  derived type. So for those cases, we do not have to check
-                   --  if a clause has been given for the derived type, since it
-                   --  is harmless to set it again if it is already set.
- 
-                   case A is
- 
-                      --  Alignment
- 
-                      when Aspect_Alignment =>
-                         if not Has_Alignment_Clause (E) then
-                            Set_Alignment (E, Alignment (P));
-                         end if;
- 
-                      --  Atomic
- 
-                      when Aspect_Atomic =>
-                         if Is_Atomic (P) then
-                            Set_Is_Atomic (E);
-                         end if;
- 
-                      --  Atomic_Components
- 
-                      when Aspect_Atomic_Components =>
-                         if Has_Atomic_Components (P) then
-                            Set_Has_Atomic_Components (Base_Type (E));
-                         end if;
- 
-                      --  Bit_Order
- 
-                      when Aspect_Bit_Order =>
-                         if Is_Record_Type (E)
-                           and then No (Get_Attribute_Definition_Clause
-                                          (E, Attribute_Bit_Order))
-                           and then Reverse_Bit_Order (P)
-                         then
-                            Set_Reverse_Bit_Order (Base_Type (E));
-                         end if;
- 
-                      --  Component_Size
- 
-                      when Aspect_Component_Size =>
-                         if Is_Array_Type (E)
-                           and then not Has_Component_Size_Clause (E)
-                         then
-                            Set_Component_Size
-                              (Base_Type (E), Component_Size (P));
-                         end if;
- 
-                      --  Machine_Radix
- 
-                      when Aspect_Machine_Radix =>
-                         if Is_Decimal_Fixed_Point_Type (E)
-                           and then not Has_Machine_Radix_Clause (E)
-                         then
-                            Set_Machine_Radix_10 (E, Machine_Radix_10 (P));
-                         end if;
- 
-                      --  Object_Size (also Size which also sets Object_Size)
- 
-                      when Aspect_Object_Size
-                         | Aspect_Size
-                      =>
-                         if not Has_Size_Clause (E)
-                           and then
-                             No (Get_Attribute_Definition_Clause
-                                   (E, Attribute_Object_Size))
-                         then
-                            Set_Esize (E, Esize (P));
-                         end if;
- 
-                      --  Pack
- 
-                      when Aspect_Pack =>
-                         if not Is_Packed (E) then
-                            Set_Is_Packed (Base_Type (E));
- 
-                            if Is_Bit_Packed_Array (P) then
-                               Set_Is_Bit_Packed_Array (Base_Type (E));
-                               Set_Packed_Array_Impl_Type
-                                 (E, Packed_Array_Impl_Type (P));
-                            end if;
-                         end if;
- 
-                      --  Scalar_Storage_Order
- 
-                      when Aspect_Scalar_Storage_Order =>
-                         if (Is_Record_Type (E) or else Is_Array_Type (E))
-                           and then No (Get_Attribute_Definition_Clause
-                                          (E, Attribute_Scalar_Storage_Order))
-                           and then Reverse_Storage_Order (P)
-                         then
-                            Set_Reverse_Storage_Order (Base_Type (E));
- 
-                            --  Clear default SSO indications, since the aspect
-                            --  overrides the default.
- 
-                            Set_SSO_Set_Low_By_Default  (Base_Type (E), False);
-                            Set_SSO_Set_High_By_Default (Base_Type (E), False);
-                         end if;
- 
-                      --  Small
- 
-                      when Aspect_Small =>
-                         if Is_Fixed_Point_Type (E)
-                           and then not Has_Small_Clause (E)
-                         then
-                            Set_Small_Value (E, Small_Value (P));
-                         end if;
- 
-                      --  Storage_Size
- 
-                      when Aspect_Storage_Size =>
-                         if (Is_Access_Type (E) or else Is_Task_Type (E))
-                           and then not Has_Storage_Size_Clause (E)
-                         then
-                            Set_Storage_Size_Variable
-                              (Base_Type (E), Storage_Size_Variable (P));
-                         end if;
- 
-                      --  Value_Size
- 
-                      when Aspect_Value_Size =>
- 
-                         --  Value_Size is never inherited, it is either set by
-                         --  default, or it is explicitly set for the derived
-                         --  type. So nothing to do here.
- 
-                         null;
- 
-                      --  Volatile
- 
-                      when Aspect_Volatile =>
-                         if Is_Volatile (P) then
-                            Set_Is_Volatile (E);
-                         end if;
- 
-                      --  Volatile_Full_Access (also Full_Access_Only)
- 
-                      when Aspect_Volatile_Full_Access
-                         | Aspect_Full_Access_Only
-                      =>
-                         if Is_Volatile_Full_Access (P) then
-                            Set_Is_Volatile_Full_Access (E);
-                         end if;
- 
-                      --  Volatile_Components
- 
-                      when Aspect_Volatile_Components =>
-                         if Has_Volatile_Components (P) then
-                            Set_Has_Volatile_Components (Base_Type (E));
-                         end if;
- 
-                      --  That should be all the Rep Aspects
- 
-                      when others =>
-                         pragma Assert (Aspect_Delay (A_Id) /= Rep_Aspect);
-                         null;
-                   end case;
-                end if;
-             end if;
- 
-             Next_Rep_Item (N);
-          end loop;
-       end Inherit_Delayed_Rep_Aspects;
- 
        -------------------------------------
        -- Make_Pragma_From_Boolean_Aspect --
        -------------------------------------
--- 1062,1067 ----
*************** package body Sem_Ch13 is
*** 1481,1487 ****
                                    | Aspect_Full_Access_Only
                                    | Aspect_Import
                         and then (A_Id /= Aspect_Preelaborable_Initialization
!                                   or else not Present (Expression (ASN)))
                       then
                          Make_Pragma_From_Boolean_Aspect (ASN);
                       end if;
--- 1272,1278 ----
                                    | Aspect_Full_Access_Only
                                    | Aspect_Import
                         and then (A_Id /= Aspect_Preelaborable_Initialization
!                                   or else No (Expression (ASN)))
                       then
                          Make_Pragma_From_Boolean_Aspect (ASN);
                       end if;
*************** package body Sem_Ch13 is
*** 1537,1543 ****
                       if not Is_Entity_Name (Expression (ASN))
                         or else not Is_Object (Entity (Expression (ASN)))
                         or else
!                          not Present (Find_Aspect (Etype (Expression (ASN)),
                                                     Aspect_Storage_Model_Type))
                       then
                          Error_Msg_N
--- 1328,1334 ----
                       if not Is_Entity_Name (Expression (ASN))
                         or else not Is_Object (Entity (Expression (ASN)))
                         or else
!                          No (Find_Aspect (Etype (Expression (ASN)),
                                                     Aspect_Storage_Model_Type))
                       then
                          Error_Msg_N
*************** package body Sem_Ch13 is
*** 1594,1608 ****
           Next_Rep_Item (ASN);
        end loop;
  
-       --  This is where we inherit delayed rep aspects from our parent. Note
-       --  that if we fell out of the above loop with ASN non-empty, it means
-       --  we hit an aspect for an entity other than E, and it must be the
-       --  type from which we were derived.
- 
-       if May_Inherit_Delayed_Rep_Aspects (E) then
-          Inherit_Delayed_Rep_Aspects (ASN);
-       end if;
- 
        if In_Instance
          and then E /= Base_Type (E)
          and then Is_First_Subtype (E)
--- 1385,1390 ----
*************** package body Sem_Ch13 is
*** 1645,1650 ****
--- 1427,1444 ----
        --  pragma of the same kind. Flag Is_Generic should be set when the
        --  context denotes a generic instance.
  
+       function Relocate_Expression (Source : Node_Id) return Node_Id;
+       --  Outside of a generic this function is equivalent to Relocate_Node.
+       --  Inside a generic it is an identity function, because Relocate_Node
+       --  would create a new node that is not associated with the generic
+       --  template. This association is needed to save references to entities
+       --  that are global to the generic (and might be not visible from where
+       --  the generic is instantiated).
+       --
+       --  Inside a generic the original tree is shared between aspect and
+       --  a corresponding pragma (or an attribute definition clause). This
+       --  parallels what is done in sem_prag.adb (see Get_Argument).
+ 
        --------------
        -- Decorate --
        --------------
*************** package body Sem_Ch13 is
*** 1830,1835 ****
--- 1624,1642 ----
           end if;
        end Insert_Pragma;
  
+       -------------------------
+       -- Relocate_Expression --
+       -------------------------
+ 
+       function Relocate_Expression (Source : Node_Id) return Node_Id is
+       begin
+          if Inside_A_Generic then
+             return Source;
+          else
+             return Atree.Relocate_Node (Source);
+          end if;
+       end Relocate_Expression;
+ 
        --  Local variables
  
        Aspect : Node_Id;
*************** package body Sem_Ch13 is
*** 2109,2115 ****
                 --  aspects are replaced with pragmas at the freeze point in
                 --  Make_Pragma_From_Boolean_Aspect.
  
!                if not Present (Expr)
                   or else Is_True (Static_Boolean (Expr))
                 then
                    if A_Id = Aspect_Import then
--- 1916,1922 ----
                 --  aspects are replaced with pragmas at the freeze point in
                 --  Make_Pragma_From_Boolean_Aspect.
  
!                if No (Expr)
                   or else Is_True (Static_Boolean (Expr))
                 then
                    if A_Id = Aspect_Import then
*************** package body Sem_Ch13 is
*** 2487,2493 ****
                                      then
                                         Error_Msg_Name_1 := Nam;
                                         Error_Msg_N
!                                          ("expression of aspect %" &
                                            "must be static", Aspect);
                                      end if;
  
--- 2294,2300 ----
                                      then
                                         Error_Msg_Name_1 := Nam;
                                         Error_Msg_N
!                                          ("expression of aspect % " &
                                            "must be static", Aspect);
                                      end if;
  
*************** package body Sem_Ch13 is
*** 2593,2610 ****
  
                 if not Is_Expression_Function (E)
                   and then
!                    not (Extensions_Allowed and then Is_Imported_Intrinsic)
                 then
!                   if Extensions_Allowed then
                       Error_Msg_N
                         ("aspect % requires intrinsic or expression function",
                          Aspect);
  
                    elsif Is_Imported_Intrinsic then
!                      Error_Msg_N
!                        ("aspect % on intrinsic function is an extension: " &
!                         "use -gnatX",
!                         Aspect);
  
                    else
                       Error_Msg_N
--- 2400,2416 ----
  
                 if not Is_Expression_Function (E)
                   and then
!                    not (All_Extensions_Allowed and then Is_Imported_Intrinsic)
                 then
!                   if All_Extensions_Allowed then
                       Error_Msg_N
                         ("aspect % requires intrinsic or expression function",
                          Aspect);
  
                    elsif Is_Imported_Intrinsic then
!                      Error_Msg_GNAT_Extension
!                        ("aspect % on intrinsic function", Sloc (Aspect),
!                         Is_Core_Extension => True);
  
                    else
                       Error_Msg_N
*************** package body Sem_Ch13 is
*** 2721,2733 ****
                 Expr_Value : Boolean := False;
  
              begin
!                --  Check valid declarations for 'Yield
  
!                if Nkind (N) in N_Abstract_Subprogram_Declaration
!                              | N_Entry_Declaration
!                              | N_Generic_Subprogram_Declaration
!                              | N_Subprogram_Declaration
!                              | N_Formal_Subprogram_Declaration
                   and then not Within_Protected_Type (E)
                 then
                    null;
--- 2527,2537 ----
                 Expr_Value : Boolean := False;
  
              begin
!                --  Check valid entity for 'Yield
  
!                if (Is_Subprogram (E)
!                      or else Is_Generic_Subprogram (E)
!                      or else Is_Entry (E))
                   and then not Within_Protected_Type (E)
                 then
                    null;
*************** package body Sem_Ch13 is
*** 3228,3234 ****
                      Make_Attribute_Definition_Clause (Loc,
                        Name       => Ent,
                        Chars      => Nam,
!                       Expression => Relocate_Node (Expr));
  
                    --  If the address is specified, then we treat the entity as
                    --  referenced, to avoid spurious warnings. This is analogous
--- 3032,3038 ----
                      Make_Attribute_Definition_Clause (Loc,
                        Name       => Ent,
                        Chars      => Nam,
!                       Expression => Relocate_Expression (Expr));
  
                    --  If the address is specified, then we treat the entity as
                    --  referenced, to avoid spurious warnings. This is analogous
*************** package body Sem_Ch13 is
*** 3292,3298 ****
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
                         Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr))),
                       Pragma_Name                  => Name_Attach_Handler);
  
                    --  We need to insert this pragma into the tree to get proper
--- 3096,3102 ----
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
                         Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Expression (Expr))),
                       Pragma_Name                  => Name_Attach_Handler);
  
                    --  We need to insert this pragma into the tree to get proper
*************** package body Sem_Ch13 is
*** 3334,3340 ****
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
                         Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Node (Expr))),
                       Pragma_Name => Name_Predicate);
  
                    --  Mark type has predicates, and remember what kind of
--- 3138,3144 ----
                         Make_Pragma_Argument_Association (Sloc (Ent),
                           Expression => Ent),
                         Make_Pragma_Argument_Association (Sloc (Expr),
!                          Expression => Relocate_Expression (Expr))),
                       Pragma_Name => Name_Predicate);
  
                    --  Mark type has predicates, and remember what kind of
*************** package body Sem_Ch13 is
*** 3579,3585 ****
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
                           Chars      => Nam,
!                          Expression => Relocate_Node (Expr));
                    end if;
  
                 --  Suppress/Unsuppress
--- 3383,3389 ----
                         Make_Attribute_Definition_Clause (Loc,
                           Name       => Ent,
                           Chars      => Nam,
!                          Expression => Relocate_Expression (Expr));
                    end if;
  
                 --  Suppress/Unsuppress
*************** package body Sem_Ch13 is
*** 4410,4421 ****
                    goto Continue;
  
                 when Aspect_Designated_Storage_Model =>
!                   if not Extensions_Allowed then
!                      Error_Msg_N
!                        ("aspect only allowed if extensions enabled",
!                         Aspect);
!                      Error_Msg_N
!                        ("\unit must be compiled with -gnatX switch", Aspect);
  
                    elsif not Is_Type (E)
                      or else Ekind (E) /= E_Access_Type
--- 4214,4221 ----
                    goto Continue;
  
                 when Aspect_Designated_Storage_Model =>
!                   if not All_Extensions_Allowed then
!                      Error_Msg_GNAT_Extension ("aspect %", Sloc (Aspect));
  
                    elsif not Is_Type (E)
                      or else Ekind (E) /= E_Access_Type
*************** package body Sem_Ch13 is
*** 4429,4440 ****
                    goto Continue;
  
                 when Aspect_Storage_Model_Type =>
!                   if not Extensions_Allowed then
!                      Error_Msg_N
!                        ("aspect only allowed if extensions enabled",
!                         Aspect);
!                      Error_Msg_N
!                        ("\unit must be compiled with -gnatX switch", Aspect);
  
                    elsif not Is_Type (E)
                      or else not Is_Immutably_Limited_Type (E)
--- 4229,4236 ----
                    goto Continue;
  
                 when Aspect_Storage_Model_Type =>
!                   if not All_Extensions_Allowed then
!                      Error_Msg_GNAT_Extension ("aspect %", Sloc (Aspect));
  
                    elsif not Is_Type (E)
                      or else not Is_Immutably_Limited_Type (E)
*************** package body Sem_Ch13 is
*** 4606,4637 ****
  
                    --  Build the precondition/postcondition pragma
  
!                   --  We use Relocate_Node here rather than New_Copy_Tree
!                   --  because subsequent visibility analysis of the aspect
!                   --  depends on this sharing. This should be cleaned up???
! 
!                   --  If the context is generic, we want to preserve the
!                   --  original tree, and simply share it between aspect and
!                   --  generated attribute. This parallels what is done in
!                   --  sem_prag.adb (see Get_Argument).
! 
!                   declare
!                      New_Expr : Node_Id;
! 
!                   begin
!                      if Inside_A_Generic then
!                         New_Expr := Expr;
!                      else
!                         New_Expr := Relocate_Node (Expr);
!                      end if;
! 
!                      Aitem := Make_Aitem_Pragma
!                        (Pragma_Argument_Associations => New_List (
!                           Make_Pragma_Argument_Association (Eloc,
!                             Chars      => Name_Check,
!                             Expression => New_Expr)),
!                           Pragma_Name                => Pname);
!                   end;
  
                    --  Add message unless exception messages are suppressed
  
--- 4402,4413 ----
  
                    --  Build the precondition/postcondition pragma
  
!                   Aitem := Make_Aitem_Pragma
!                     (Pragma_Argument_Associations => New_List (
!                        Make_Pragma_Argument_Association (Eloc,
!                          Chars      => Name_Check,
!                          Expression => Relocate_Expression (Expr))),
!                        Pragma_Name                => Pname);
  
                    --  Add message unless exception messages are suppressed
  
*************** package body Sem_Ch13 is
*** 6550,6571 ****
                      ("\?j?use interrupt procedure instead", N);
                 end if;
  
-             --  Case of an address clause for a class-wide object, which is
-             --  considered erroneous.
- 
-             elsif Is_Class_Wide_Type (Etype (U_Ent)) then
-                Error_Msg_NE
-                  ("??class-wide object & must not be overlaid", Nam, U_Ent);
-                Error_Msg_N
-                  ("\??Program_Error will be raised at run time", Nam);
-                Insert_Action (Declaration_Node (U_Ent),
-                  Make_Raise_Program_Error (Loc,
-                    Reason => PE_Overlaid_Controlled_Object));
-                return;
- 
              --  Case of address clause for an object
  
              elsif Ekind (U_Ent) in E_Constant | E_Variable then
                 declare
                    Expr  : constant Node_Id := Expression (N);
                    O_Ent : Entity_Id;
--- 6326,6372 ----
                      ("\?j?use interrupt procedure instead", N);
                 end if;
  
              --  Case of address clause for an object
  
              elsif Ekind (U_Ent) in E_Constant | E_Variable then
+ 
+                --  Disallow case of an address clause for an object of an
+                --  indefinite subtype which takes its bounds/discriminant/tag
+                --  from its initial value. Without this, we get a Gigi
+                --  assertion failure for things like
+                --    X : String := Some_Function (...) with Address => ...;
+                --  where the result subtype of the function is unconstrained.
+                --
+                --  We want to reject two cases: the class-wide case, and the
+                --  case where the FE conjures up a renaming declaration and
+                --  would then otherwise generate an address specification for
+                --  that renaming (which is a malformed tree, which is why Gigi
+                --  complains).
+ 
+                if Is_Class_Wide_Type (Etype (U_Ent)) then
+                   Error_Msg_N
+                     ("address specification not supported for class-wide " &
+                      "object declaration", Nam);
+                   return;
+                elsif Is_Constr_Subt_For_U_Nominal (Etype (U_Ent))
+                  and then
+                    Nkind (Parent (U_Ent)) = N_Object_Renaming_Declaration
+                then
+                   --  Confirm accuracy of " and dynamic size" message text
+                   --  before including it. We want to include that text when
+                   --  it is correct because it may be useful to the reader.
+                   --  The case where we omit that part of the message text
+                   --  might be dead code, but let's not rely on that.
+ 
+                   Error_Msg_N
+                     ("address specification not supported for object " &
+                      "declaration with indefinite nominal subtype" &
+                      (if Size_Known_At_Compile_Time (Etype (U_Ent))
+                       then ""
+                       else " and dynamic size"), Nam);
+                   return;
+                end if;
+ 
                 declare
                    Expr  : constant Node_Id := Expression (N);
                    O_Ent : Entity_Id;
*************** package body Sem_Ch13 is
*** 6686,6692 ****
                      and then not Overlays_Constant (U_Ent)
                      and then Address_Clause_Overlay_Warnings
                    then
!                      Error_Msg_N ("??constant overlays a variable", Expr);
  
                    --  Imported variables can have an address clause, but then
                    --  the import is pretty meaningless except to suppress
--- 6487,6493 ----
                      and then not Overlays_Constant (U_Ent)
                      and then Address_Clause_Overlay_Warnings
                    then
!                      Error_Msg_N ("?o?constant overlays a variable", Expr);
  
                    --  Imported variables can have an address clause, but then
                    --  the import is pretty meaningless except to suppress
*************** package body Sem_Ch13 is
*** 7160,7165 ****
--- 6961,6967 ----
  
              if Nkind (Expr) /= N_Aggregate then
                 Error_Msg_N ("aspect Iterable must be an aggregate", Expr);
+                return;
              end if;
  
              declare
*************** package body Sem_Ch13 is
*** 7170,7176 ****
                 while Present (Assoc) loop
                    Analyze (Expression (Assoc));
  
!                   if not Is_Entity_Name (Expression (Assoc)) then
                       Error_Msg_N ("value must be a function", Assoc);
                    end if;
  
--- 6972,6980 ----
                 while Present (Assoc) loop
                    Analyze (Expression (Assoc));
  
!                   if not Is_Entity_Name (Expression (Assoc))
!                     or else Ekind (Entity (Expression (Assoc))) /= E_Function
!                   then
                       Error_Msg_N ("value must be a function", Assoc);
                    end if;
  
*************** package body Sem_Ch13 is
*** 7507,7512 ****
--- 7311,7331 ----
                       Set_Esize (U_Ent, Size);
                    end if;
  
+                   --  As of RM 13.1, only confirming size
+                   --  (i.e. (Size = Esize (Etyp))) for aliased object of
+                   --  elementary type must be supported.
+                   --  GNAT rejects nonconfirming size for such object.
+ 
+                   if Is_Aliased (U_Ent)
+                     and then Is_Elementary_Type (Etyp)
+                     and then Known_Esize (U_Ent)
+                     and then Size /= Esize (Etyp)
+                   then
+                      Error_Msg_N
+                        ("nonconfirming Size for aliased object is not "
+                         & "supported", N);
+                   end if;
+ 
                    Set_Has_Size_Clause (U_Ent);
                 end;
              end if;
*************** package body Sem_Ch13 is
*** 7745,7751 ****
              else
                 Analyze_And_Resolve (Expr);
  
!                if not Present (Get_Rep_Pragma
                                   (Etype (Expr), Name_Simple_Storage_Pool_Type))
                 then
                    Error_Msg_N
--- 7564,7570 ----
              else
                 Analyze_And_Resolve (Expr);
  
!                if No (Get_Rep_Pragma
                                   (Etype (Expr), Name_Simple_Storage_Pool_Type))
                 then
                    Error_Msg_N
*************** package body Sem_Ch13 is
*** 9447,9456 ****
                    declare
                       Ent : constant Entity_Id := Entity (Name (Exp));
                    begin
!                      if Is_Predicate_Function (Ent)
!                           or else
!                         Is_Predicate_Function_M (Ent)
!                      then
                          return Stat_Pred (Etype (First_Formal (Ent)), Static);
                       end if;
                    end;
--- 9266,9272 ----
                    declare
                       Ent : constant Entity_Id := Entity (Name (Exp));
                    begin
!                      if Is_Predicate_Function (Ent) then
                          return Stat_Pred (Etype (First_Formal (Ent)), Static);
                       end if;
                    end;
*************** package body Sem_Ch13 is
*** 9991,10001 ****
        return Prag;
     end Build_Export_Import_Pragma;
  
!    -------------------------------
!    -- Build_Predicate_Functions --
!    -------------------------------
  
!    --  The functions that are constructed here have the form:
  
     --    function typPredicate (Ixxx : typ) return Boolean is
     --    begin
--- 9807,9817 ----
        return Prag;
     end Build_Export_Import_Pragma;
  
!    ------------------------------
!    -- Build_Predicate_Function --
!    ------------------------------
  
!    --  The function constructed here has the form:
  
     --    function typPredicate (Ixxx : typ) return Boolean is
     --    begin
*************** package body Sem_Ch13 is
*** 10006,10011 ****
--- 9822,9839 ----
     --          and then exp1 and then exp2 and then ...;
     --    end typPredicate;
  
+    --  If Predicate_Function_Needs_Membership_Parameter is true, then this
+    --  function takes an additional boolean parameter; the parameter
+    --  indicates whether the predicate evaluation is part of a membership
+    --  test. This parameter is used in two cases: 1) It is passed along
+    --  if another predicate function is called and that predicate function
+    --  expects to be passed a boolean parameter. 2) If the Predicate_Failure
+    --  aspect is directly specified for typ, then we replace the return
+    --  expression described above with
+    --      (if <expression described above> then True
+    --       elsif For_Membership_Test then False
+    --       else (raise Assertion_Error
+    --                     with <Predicate_Failure expression>))
     --  Here exp1, and exp2 are expressions from Predicate pragmas. Note that
     --  this is the point at which these expressions get analyzed, providing the
     --  required delay, and typ1, typ2, are entities from which predicates are
*************** package body Sem_Ch13 is
*** 10018,10043 ****
     --  Note that Sem_Eval.Real_Or_String_Static_Predicate_Matches depends on
     --  the form of this return expression.
  
-    --  If the expression has at least one Raise_Expression, then we also build
-    --  the typPredicateM version of the function, in which any occurrence of a
-    --  Raise_Expression is converted to "return False".
- 
     --  WARNING: This routine manages Ghost regions. Return statements must be
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    procedure Build_Predicate_Functions (Typ : Entity_Id; N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        Expr : Node_Id;
        --  This is the expression for the result of the function. It is
        --  is build by connecting the component predicates with AND THEN.
  
-       Expr_M : Node_Id := Empty; -- init to avoid warning
-       --  This is the corresponding return expression for the Predicate_M
-       --  function. It differs in that raise expressions are marked for
-       --  special expansion (see Process_REs).
- 
        Object_Name : Name_Id;
        --  Name for argument of Predicate procedure. Note that we use the same
        --  name for both predicate functions. That way the reference within the
--- 9846,9862 ----
     --  Note that Sem_Eval.Real_Or_String_Static_Predicate_Matches depends on
     --  the form of this return expression.
  
     --  WARNING: This routine manages Ghost regions. Return statements must be
     --  replaced by gotos which jump to the end of the routine and restore the
     --  Ghost mode.
  
!    procedure Build_Predicate_Function (Typ : Entity_Id; N : Node_Id) is
        Loc : constant Source_Ptr := Sloc (Typ);
  
        Expr : Node_Id;
        --  This is the expression for the result of the function. It is
        --  is build by connecting the component predicates with AND THEN.
  
        Object_Name : Name_Id;
        --  Name for argument of Predicate procedure. Note that we use the same
        --  name for both predicate functions. That way the reference within the
*************** package body Sem_Ch13 is
*** 10046,10063 ****
        Object_Entity : Entity_Id;
        --  Entity for argument of Predicate procedure
  
-       Object_Entity_M : Entity_Id;
-       --  Entity for argument of separate Predicate procedure when exceptions
-       --  are present in expression.
- 
        FDecl : Node_Id;
        --  The function declaration
  
        SId : Entity_Id;
        --  Its entity
  
!       Raise_Expression_Present : Boolean := False;
!       --  Set True if Expr has at least one Raise_Expression
  
        procedure Add_Condition (Cond : Node_Id);
        --  Append Cond to Expr using "and then" (or just copy Cond to Expr if
--- 9865,9879 ----
        Object_Entity : Entity_Id;
        --  Entity for argument of Predicate procedure
  
        FDecl : Node_Id;
        --  The function declaration
  
        SId : Entity_Id;
        --  Its entity
  
!       Ancestor_Predicate_Function_Called : Boolean := False;
!       --  Does this predicate function include a call to the
!       --  predication function of an ancestor subtype?
  
        procedure Add_Condition (Cond : Node_Id);
        --  Append Cond to Expr using "and then" (or just copy Cond to Expr if
*************** package body Sem_Ch13 is
*** 10073,10091 ****
        --  Includes a call to the predicate function for type T in Expr if
        --  Predicate_Function (T) is non-empty.
  
!       function Process_RE (N : Node_Id) return Traverse_Result;
!       --  Used in Process REs, tests if node N is a raise expression, and if
!       --  so, marks it to be converted to return False.
! 
!       procedure Process_REs is new Traverse_Proc (Process_RE);
!       --  Marks any raise expressions in Expr_M to return False
! 
!       function Test_RE (N : Node_Id) return Traverse_Result;
!       --  Used in Test_REs, tests one node for being a raise expression, and if
!       --  so sets Raise_Expression_Present True.
! 
!       procedure Test_REs is new Traverse_Proc (Test_RE);
!       --  Tests to see if Expr contains any raise expressions
  
        --------------
        -- Add_Call --
--- 9889,9899 ----
        --  Includes a call to the predicate function for type T in Expr if
        --  Predicate_Function (T) is non-empty.
  
!       procedure Replace_Current_Instance_References
!          (N : Node_Id; Typ, New_Entity : Entity_Id);
!       --  Replace all references to Typ in the tree rooted at N with
!       --  references to Param. [New_Entity will be a formal parameter of a
!       --  predicate function.]
  
        --------------
        -- Add_Call --
*************** package body Sem_Ch13 is
*** 10101,10116 ****
              --  Build the call to the predicate function of T. The type may be
              --  derived, so use an unchecked conversion for the actual.
  
!             Exp :=
!               Make_Predicate_Call
!                 (Typ  => T,
!                  Expr =>
!                    Unchecked_Convert_To (T,
!                      Make_Identifier (Loc, Object_Name)));
  
              --  "and"-in the call to evolving expression
  
              Add_Condition (Exp);
  
              --  Output info message on inheritance if required. Note we do not
              --  give this information for generic actual types, since it is
--- 9909,9942 ----
              --  Build the call to the predicate function of T. The type may be
              --  derived, so use an unchecked conversion for the actual.
  
!             declare
!                Dynamic_Mem : Node_Id := Empty;
!                Second_Formal : constant Entity_Id :=
!                  Next_Entity (Object_Entity);
!             begin
!                --  Some predicate functions require a second parameter;
!                --  If one predicate function calls another and the second
!                --  requires two parameters, then the first should also
!                --  take two parameters (so that the first function has
!                --  something to pass to the second function).
!                if Predicate_Function_Needs_Membership_Parameter (T) then
!                   pragma Assert (Present (Second_Formal));
!                   Dynamic_Mem := New_Occurrence_Of (Second_Formal, Loc);
!                end if;
! 
!                Exp :=
!                  Make_Predicate_Call
!                    (Typ  => T,
!                     Expr =>
!                       Unchecked_Convert_To (T,
!                         Make_Identifier (Loc, Object_Name)),
!                     Dynamic_Mem => Dynamic_Mem);
!             end;
  
              --  "and"-in the call to evolving expression
  
              Add_Condition (Exp);
+             Ancestor_Predicate_Function_Called := True;
  
              --  Output info message on inheritance if required. Note we do not
              --  give this information for generic actual types, since it is
*************** package body Sem_Ch13 is
*** 10118,10126 ****
              --  generally suppress the message in instantiations, and also
              --  if it involves internal names.
  
!             if Opt.List_Inherited_Aspects
                and then not Is_Generic_Actual_Type (Typ)
!               and then Instantiation_Depth (Sloc (Typ)) = 0
                and then not Is_Internal_Name (Chars (T))
                and then not Is_Internal_Name (Chars (Typ))
              then
--- 9944,9952 ----
              --  generally suppress the message in instantiations, and also
              --  if it involves internal names.
  
!             if List_Inherited_Aspects
                and then not Is_Generic_Actual_Type (Typ)
!               and then Instantiation_Location (Sloc (Typ)) = No_Location
                and then not Is_Internal_Name (Chars (T))
                and then not Is_Internal_Name (Chars (Typ))
              then
*************** package body Sem_Ch13 is
*** 10167,10198 ****
           -------------------
  
           procedure Add_Predicate (Prag : Node_Id) is
-             procedure Replace_Type_Reference (N : Node_Id);
-             --  Replace a single occurrence N of the subtype name with a
-             --  reference to the formal of the predicate function. N can be an
-             --  identifier referencing the subtype, or a selected component,
-             --  representing an appropriately qualified occurrence of the
-             --  subtype name.
- 
-             procedure Replace_Type_References is
-               new Replace_Type_References_Generic (Replace_Type_Reference);
-             --  Traverse an expression changing every occurrence of an
-             --  identifier whose name matches the name of the subtype with a
-             --  reference to the formal parameter of the predicate function.
- 
-             ----------------------------
-             -- Replace_Type_Reference --
-             ----------------------------
- 
-             procedure Replace_Type_Reference (N : Node_Id) is
-             begin
-                Rewrite (N, Make_Identifier (Sloc (N), Object_Name));
-                --  Use the Sloc of the usage name, not the defining name
- 
-                Set_Etype (N, Typ);
-                Set_Entity (N, Object_Entity);
-             end Replace_Type_Reference;
- 
              --  Local variables
  
              Asp  : constant Node_Id := Corresponding_Aspect (Prag);
--- 9993,9998 ----
*************** package body Sem_Ch13 is
*** 10206,10221 ****
  
              Set_SCO_Pragma_Enabled (Sloc (Prag));
  
!             --  Extract the arguments of the pragma. The expression itself
!             --  is copied for use in the predicate function, to preserve the
!             --  original version for ASIS use.
!             --  Is this still needed???
  
              Arg1 := First (Pragma_Argument_Associations (Prag));
              Arg2 := Next (Arg1);
  
              Arg1 := Get_Pragma_Arg (Arg1);
!             Arg2 := New_Copy_Tree (Get_Pragma_Arg (Arg2));
  
              --  When the predicate pragma applies to the current type or its
              --  full view, replace all occurrences of the subtype name with
--- 10006,10018 ----
  
              Set_SCO_Pragma_Enabled (Sloc (Prag));
  
!             --  Extract the arguments of the pragma
  
              Arg1 := First (Pragma_Argument_Associations (Prag));
              Arg2 := Next (Arg1);
  
              Arg1 := Get_Pragma_Arg (Arg1);
!             Arg2 := Get_Pragma_Arg (Arg2);
  
              --  When the predicate pragma applies to the current type or its
              --  full view, replace all occurrences of the subtype name with
*************** package body Sem_Ch13 is
*** 10224,10243 ****
              if Entity (Arg1) = Typ
                or else Full_View (Entity (Arg1)) = Typ
              then
!                Replace_Type_References (Arg2, Typ);
  
!                --  If the predicate pragma comes from an aspect, replace the
!                --  saved expression because we need the subtype references
!                --  replaced for the calls to Preanalyze_Spec_Expression in
!                --  Check_Aspect_At_xxx routines.
  
!                if Present (Asp) then
!                   Set_Entity (Identifier (Asp), New_Copy_Tree (Arg2));
!                end if;
  
!                --  "and"-in the Arg2 condition to evolving expression
  
!                Add_Condition (Relocate_Node (Arg2));
              end if;
           end Add_Predicate;
  
--- 10021,10045 ----
              if Entity (Arg1) = Typ
                or else Full_View (Entity (Arg1)) = Typ
              then
!                declare
!                   Arg2_Copy : constant Node_Id := New_Copy_Tree (Arg2);
!                begin
!                   Replace_Current_Instance_References
!                    (Arg2_Copy, Typ => Typ, New_Entity => Object_Entity);
  
!                   --  If the predicate pragma comes from an aspect, replace the
!                   --  saved expression because we need the subtype references
!                   --  replaced for the calls to Preanalyze_Spec_Expression in
!                   --  Check_Aspect_At_xxx routines.
  
!                   if Present (Asp) then
!                      Set_Entity (Identifier (Asp), New_Copy_Tree (Arg2_Copy));
!                   end if;
  
!                   --  "and"-in the Arg2 condition to evolving expression
  
!                   Add_Condition (Arg2_Copy);
!                end;
              end if;
           end Add_Predicate;
  
*************** package body Sem_Ch13 is
*** 10291,10323 ****
           end loop;
        end Add_Predicates;
  
!       ----------------
!       -- Process_RE --
!       ----------------
  
!       function Process_RE (N : Node_Id) return Traverse_Result is
!       begin
!          if Nkind (N) = N_Raise_Expression then
!             Set_Convert_To_Return_False (N);
!             return Skip;
!          else
!             return OK;
!          end if;
!       end Process_RE;
  
!       -------------
!       -- Test_RE --
!       -------------
  
!       function Test_RE (N : Node_Id) return Traverse_Result is
        begin
!          if Nkind (N) = N_Raise_Expression then
!             Raise_Expression_Present := True;
!             return Abandon;
!          else
!             return OK;
!          end if;
!       end Test_RE;
  
        --  Local variables
  
--- 10093,10126 ----
           end loop;
        end Add_Predicates;
  
!       -----------------------------------------
!       -- Replace_Current_Instance_References --
!       -----------------------------------------
  
!       procedure Replace_Current_Instance_References
!          (N : Node_Id; Typ, New_Entity : Entity_Id)
!       is
!          Root : Node_Id renames N;
  
!          procedure Replace_One_Reference (N : Node_Id);
!          --  Actual parameter for Replace_Type_References_Generic instance
  
!          ---------------------------
!          -- Replace_One_Reference --
!          ---------------------------
! 
!          procedure Replace_One_Reference (N : Node_Id) is
!             pragma Assert (In_Subtree (N, Root => Root));
!          begin
!             Rewrite (N, New_Occurrence_Of (New_Entity, Sloc (N)));
!             --  Use the Sloc of the usage name, not the defining name
!          end Replace_One_Reference;
! 
!          procedure Replace_Type_References is
!            new Replace_Type_References_Generic (Replace_One_Reference);
        begin
!          Replace_Type_References (N, Typ);
!       end Replace_Current_Instance_References;
  
        --  Local variables
  
*************** package body Sem_Ch13 is
*** 10325,10331 ****
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
        --  Save the Ghost-related attributes to restore on exit
  
!    --  Start of processing for Build_Predicate_Functions
  
     begin
        --  Return if already built, if type does not have predicates,
--- 10128,10134 ----
        Saved_IGR : constant Node_Id         := Ignored_Ghost_Region;
        --  Save the Ghost-related attributes to restore on exit
  
!    --  Start of processing for Build_Predicate_Function
  
     begin
        --  Return if already built, if type does not have predicates,
*************** package body Sem_Ch13 is
*** 10387,10394 ****
           Defining_Identifier
             (First (Parameter_Specifications (Specification (FDecl))));
  
!       Object_Name     := Chars (Object_Entity);
!       Object_Entity_M := Make_Defining_Identifier (Loc, Chars => Object_Name);
  
        --  Add predicates for ancestor if present. These must come before the
        --  ones for the current type, as required by AI12-0071-1.
--- 10190,10196 ----
           Defining_Identifier
             (First (Parameter_Specifications (Specification (FDecl))));
  
!       Object_Name   := Chars (Object_Entity);
  
        --  Add predicates for ancestor if present. These must come before the
        --  ones for the current type, as required by AI12-0071-1.
*************** package body Sem_Ch13 is
*** 10420,10515 ****
  
        if Present (Expr) then
  
!          --  Test for raise expression present
! 
!          Test_REs (Expr);
  
!          --  If raise expression is present, capture a copy of Expr for use
!          --  in building the predicateM function version later on. For this
!          --  copy we replace references to Object_Entity by Object_Entity_M.
  
!          if Raise_Expression_Present then
!             declare
!                function Reset_Loop_Variable
!                  (N : Node_Id) return Traverse_Result;
  
!                procedure Reset_Loop_Variables is
!                  new Traverse_Proc (Reset_Loop_Variable);
  
!                ------------------------
!                -- Reset_Loop_Variable --
!                ------------------------
  
!                function Reset_Loop_Variable
!                  (N : Node_Id) return Traverse_Result
!                is
!                begin
!                   if Nkind (N) = N_Iterator_Specification then
!                      Set_Defining_Identifier (N,
!                        Make_Defining_Identifier
!                          (Sloc (N), Chars (Defining_Identifier (N))));
!                   end if;
  
!                   return OK;
!                end Reset_Loop_Variable;
  
!                --  Local variables
  
!                Map : constant Elist_Id := New_Elmt_List;
  
              begin
!                Append_Elmt (Object_Entity, Map);
!                Append_Elmt (Object_Entity_M, Map);
!                Expr_M := New_Copy_Tree (Expr, Map => Map);
  
!                --  The unanalyzed expression will be copied and appear in
!                --  both functions. Normally expressions do not declare new
!                --  entities, but quantified expressions do, so we need to
!                --  create new entities for their bound variables, to prevent
!                --  multiple definitions in gigi.
  
!                Reset_Loop_Variables (Expr_M);
!             end;
!          end if;
  
!          --  Build the main predicate function
  
!          declare
!             SIdB : constant Entity_Id :=
!               Make_Defining_Identifier (Loc,
!                 Chars => New_External_Name (Chars (Typ), "Predicate"));
!             --  The entity for the function body
  
!             Spec  : Node_Id;
!             FBody : Node_Id;
  
!          begin
!             Mutate_Ekind (SIdB, E_Function);
!             Set_Is_Predicate_Function (SIdB);
  
!             --  Build function body
  
!             Spec :=
!               Make_Function_Specification (Loc,
!                 Defining_Unit_Name       => SIdB,
!                 Parameter_Specifications => New_List (
!                   Make_Parameter_Specification (Loc,
!                     Defining_Identifier =>
!                       Make_Defining_Identifier (Loc, Object_Name),
!                     Parameter_Type =>
!                       New_Occurrence_Of (Typ, Loc))),
!                 Result_Definition        =>
!                   New_Occurrence_Of (Standard_Boolean, Loc));
  
!             FBody :=
!               Make_Subprogram_Body (Loc,
!                 Specification              => Spec,
!                 Declarations               => Empty_List,
!                 Handled_Statement_Sequence =>
!                   Make_Handled_Sequence_Of_Statements (Loc,
!                     Statements => New_List (
!                       Make_Simple_Return_Statement (Loc,
!                         Expression => Expr))));
  
              --  The declaration has been analyzed when created, and placed
              --  after type declaration. Insert body itself after freeze node,
--- 10222,10427 ----
  
        if Present (Expr) then
  
!          --  Build the main predicate function
  
!          declare
!             SIdB : constant Entity_Id :=
!               Make_Defining_Identifier (Loc,
!                 Chars => New_External_Name (Chars (Typ), "Predicate"));
!             --  The entity for the function body
  
!             Spec  : Node_Id;
!             FBody : Node_Id;
  
!          begin
!             Mutate_Ekind (SIdB, E_Function);
!             Set_Is_Predicate_Function (SIdB);
  
!             --  Build function body
  
!             declare
!                Param_Specs : constant List_Id := New_List (
!                  Make_Parameter_Specification (Loc,
!                    Defining_Identifier =>
!                      Make_Defining_Identifier (Loc, Object_Name),
!                    Parameter_Type =>
!                      New_Occurrence_Of (Typ, Loc)));
!             begin
!                --  if Spec has 2 parameters, then body should too
!                if Present (Next_Entity (Object_Entity)) then
!                   Append (Make_Parameter_Specification (Loc,
!                             Defining_Identifier =>
!                               Make_Defining_Identifier
!                                 (Loc, Chars (Next_Entity (Object_Entity))),
!                             Parameter_Type      =>
!                               New_Occurrence_Of (Standard_Boolean, Loc)),
!                           Param_Specs);
!                end if;
  
!                Spec :=
!                  Make_Function_Specification (Loc,
!                    Defining_Unit_Name       => SIdB,
!                    Parameter_Specifications => Param_Specs,
!                    Result_Definition        =>
!                      New_Occurrence_Of (Standard_Boolean, Loc));
!             end;
  
!             --  The Predicate_Expression attribute is used by SPARK.
!             --
!             --  If Ancestor_Predicate_Function_Called is True, then
!             --  we try to exclude that call to the ancestor's
!             --  predicate function by calling Right_Opnd.
!             --  The call is not excluded in the case where
!             --  it is not "and"ed with anything else (so we don't have
!             --  an N_And_Then node). This exclusion is required if the
!             --  Predicate_Failure aspect is specified for Typ because
!             --  in that case we are going to drop the N_And_Then node
!             --  on the floor. Otherwise, it is a question of what is
!             --  most convenient for SPARK.
  
!             Set_Predicate_Expression
!               (SId, (if Ancestor_Predicate_Function_Called
!                        and then Nkind (Expr) = N_And_Then
!                      then Right_Opnd (Expr)
!                      else Expr));
  
+             declare
+                Result_Expr   : Node_Id := Expr;
+                PF_Expr       : Node_Id := Predicate_Failure_Expression
+                                             (Typ, Inherited_OK => False);
+                PF_Expr_Copy  : Node_Id;
+                Second_Formal : constant Entity_Id :=
+                  Next_Entity (Object_Entity);
              begin
!                --  In GNATprove mode we are only interested in the predicate
!                --  expression itself and don't want a raise expression that
!                --  comes from the Predicate_Failure. Ditto for CodePeer.
!                --  And an illegal Predicate_Failure aspect can lead to cases
!                --  we want to avoid.
  
!                if Present (PF_Expr)
!                  and then not GNATprove_Mode
!                  and then not CodePeer_Mode
!                  and then Serious_Errors_Detected = 0
!                then
!                   pragma Assert (Present (Second_Formal));
  
!                   --  This is an ugly hack to cope with an ugly situation.
!                   --  PF_Expr may have children whose Parent attribute
!                   --  does not point back to PF_Expr. If we pass such a
!                   --  tree to New_Copy_Tree, then it does not make a deep
!                   --  copy. But we need a deep copy. So we need to find a
!                   --  tree for which New_Copy_Tree *will* make a deep copy.
  
!                   declare
!                      function Check_Node_Parent (Parent_Node, Node : Node_Id)
!                        return Traverse_Result;
!                      function Check_Node_Parent (Parent_Node, Node : Node_Id)
!                        return Traverse_Result is
!                      begin
!                         if Parent_Node = PF_Expr
!                           and then not Is_List_Member (Node)
!                         then
!                            pragma Assert
!                              (Nkind (PF_Expr) = Nkind (Parent (Node)));
  
!                            --  We need PF_Expr to be a node for which
!                            --  New_Copy_Tree will make a deep copy.
!                            PF_Expr := Parent (Node);
!                            return Abandon;
!                         end if;
!                         return OK;
!                      end Check_Node_Parent;
!                      procedure Check_Parentage is
!                        new Traverse_Proc_With_Parent (Check_Node_Parent);
!                   begin
!                      Check_Parentage (PF_Expr);
!                      PF_Expr_Copy := New_Copy_Tree (PF_Expr);
!                   end;
  
!                   --  Current instance uses need to have their Entity
!                   --  fields set so that Replace_Current_Instance_References
!                   --  can find them. So we preanalyze. Just for purposes of
!                   --  calls to Is_Current_Instance during this preanalysis,
!                   --  we set the Parent field.
!                   Set_Parent (PF_Expr_Copy, Parent (PF_Expr));
!                   Preanalyze (PF_Expr_Copy);
!                   Set_Parent (PF_Expr_Copy, Empty);
  
!                   Replace_Current_Instance_References
!                     (PF_Expr_Copy, Typ => Typ, New_Entity => Object_Entity);
  
!                   if Ancestor_Predicate_Function_Called then
!                      --  If the call to an ancestor predicate function
!                      --  returns False, we do not want to raise an
!                      --  exception here. Our Predicate_Failure aspect does
!                      --  not apply in that case. So we have to build a
!                      --  more complicated result expression:
!                      --   (if not Ancestor_Predicate_Function (...) then False
!                      --    elsif Noninherited_Predicates (...) then True
!                      --    elsif Is_Membership_Test then False
!                      --    else (raise Assertion_Error with PF text))
  
!                      declare
!                         Ancestor_Call : constant Node_Id :=
!                           Left_Opnd (Result_Expr);
!                         Local_Preds   : constant Node_Id :=
!                           Right_Opnd (Result_Expr);
!                      begin
!                         Result_Expr :=
!                           Make_If_Expression (Loc,
!                             Expressions => New_List (
!                               Make_Op_Not (Loc, Ancestor_Call),
!                               New_Occurrence_Of (Standard_False, Loc),
!                               Make_If_Expression (Loc,
!                                 Is_Elsif => True,
!                                 Expressions => New_List (
!                                   Local_Preds,
!                                   New_Occurrence_Of (Standard_True, Loc),
!                                   Make_If_Expression (Loc,
!                                     Is_Elsif => True,
!                                     Expressions => New_List (
!                                       New_Occurrence_Of (Second_Formal, Loc),
!                                       New_Occurrence_Of (Standard_False, Loc),
!                                       Make_Raise_Expression (Loc,
!                                         New_Occurrence_Of (RTE
!                                           (RE_Assert_Failure), Loc),
!                                         PF_Expr_Copy)))))));
!                      end;
  
!                   else
!                      --  Build a conditional expression:
!                      --   (if <predicate evaluates to True> then True
!                      --    elsif Is_Membership_Test then False
!                      --    else (raise Assertion_Error with PF text))
! 
!                      Result_Expr :=
!                        Make_If_Expression (Loc,
!                          Expressions => New_List (
!                            Result_Expr,
!                            New_Occurrence_Of (Standard_True, Loc),
!                            Make_If_Expression (Loc,
!                              Is_Elsif => True,
!                              Expressions => New_List (
!                                New_Occurrence_Of (Second_Formal, Loc),
!                                New_Occurrence_Of (Standard_False, Loc),
!                                Make_Raise_Expression (Loc,
!                                  New_Occurrence_Of (RTE
!                                    (RE_Assert_Failure), Loc),
!                                  PF_Expr_Copy)))));
!                   end if;
!                end if;
! 
!                FBody :=
!                  Make_Subprogram_Body (Loc,
!                    Specification              => Spec,
!                    Declarations               => Empty_List,
!                    Handled_Statement_Sequence =>
!                      Make_Handled_Sequence_Of_Statements (Loc,
!                        Statements => New_List (
!                          Make_Simple_Return_Statement (Loc,
!                            Expression => Result_Expr))));
!             end;
  
              --  The declaration has been analyzed when created, and placed
              --  after type declaration. Insert body itself after freeze node,
*************** package body Sem_Ch13 is
*** 10580,10700 ****
              end if;
           end;
  
-          --  Test for raise expressions present and if so build M version
- 
-          if Raise_Expression_Present then
-             declare
-                SId : constant Entity_Id :=
-                  Make_Defining_Identifier (Loc,
-                    Chars => New_External_Name (Chars (Typ), "PredicateM"));
-                --  The entity for the function spec
- 
-                SIdB : constant Entity_Id :=
-                  Make_Defining_Identifier (Loc,
-                    Chars => New_External_Name (Chars (Typ), "PredicateM"));
-                --  The entity for the function body
- 
-                Spec  : Node_Id;
-                FBody : Node_Id;
-                FDecl : Node_Id;
-                BTemp : Entity_Id;
- 
-                CRec_Typ : Entity_Id;
-                --  The corresponding record type of Full_Typ
- 
-                Full_Typ : Entity_Id;
-                --  The full view of Typ
- 
-                Priv_Typ : Entity_Id;
-                --  The partial view of Typ
- 
-                UFull_Typ : Entity_Id;
-                --  The underlying full view of Full_Typ
- 
-             begin
-                --  Mark any raise expressions for special expansion
- 
-                Process_REs (Expr_M);
- 
-                --  Build function declaration
- 
-                Mutate_Ekind (SId, E_Function);
-                Set_Is_Predicate_Function_M (SId);
-                Set_Predicate_Function_M (Typ, SId);
- 
-                --  Obtain all views of the input type
- 
-                Get_Views (Typ, Priv_Typ, Full_Typ, UFull_Typ, CRec_Typ);
- 
-                --  Associate the predicate function with all views
- 
-                Propagate_Predicate_Attributes (Priv_Typ,  From_Typ => Typ);
-                Propagate_Predicate_Attributes (Full_Typ,  From_Typ => Typ);
-                Propagate_Predicate_Attributes (UFull_Typ, From_Typ => Typ);
-                Propagate_Predicate_Attributes (CRec_Typ,  From_Typ => Typ);
- 
-                Spec :=
-                  Make_Function_Specification (Loc,
-                    Defining_Unit_Name       => SId,
-                    Parameter_Specifications => New_List (
-                      Make_Parameter_Specification (Loc,
-                        Defining_Identifier => Object_Entity_M,
-                        Parameter_Type      => New_Occurrence_Of (Typ, Loc))),
-                    Result_Definition        =>
-                      New_Occurrence_Of (Standard_Boolean, Loc));
- 
-                FDecl :=
-                  Make_Subprogram_Declaration (Loc,
-                    Specification => Spec);
- 
-                --  Build function body
- 
-                Spec :=
-                  Make_Function_Specification (Loc,
-                    Defining_Unit_Name       => SIdB,
-                    Parameter_Specifications => New_List (
-                      Make_Parameter_Specification (Loc,
-                        Defining_Identifier =>
-                          Make_Defining_Identifier (Loc, Object_Name),
-                        Parameter_Type =>
-                          New_Occurrence_Of (Typ, Loc))),
-                    Result_Definition        =>
-                      New_Occurrence_Of (Standard_Boolean, Loc));
- 
-                --  Build the body, we declare the boolean expression before
-                --  doing the return, because we are not really confident of
-                --  what happens if a return appears within a return.
- 
-                BTemp :=
-                  Make_Temporary (Loc, 'B');
- 
-                FBody :=
-                  Make_Subprogram_Body (Loc,
-                    Specification              => Spec,
- 
-                    Declarations               => New_List (
-                      Make_Object_Declaration (Loc,
-                        Defining_Identifier => BTemp,
-                        Constant_Present    => True,
-                          Object_Definition =>
-                            New_Occurrence_Of (Standard_Boolean, Loc),
-                          Expression        => Expr_M)),
- 
-                    Handled_Statement_Sequence =>
-                      Make_Handled_Sequence_Of_Statements (Loc,
-                        Statements => New_List (
-                          Make_Simple_Return_Statement (Loc,
-                            Expression => New_Occurrence_Of (BTemp, Loc)))));
- 
-                --  Insert declaration before freeze node and body after
- 
-                Insert_Before_And_Analyze (N, FDecl);
-                Insert_After_And_Analyze  (N, FBody);
- 
-                --  Should quantified expressions be handled here as well ???
-             end;
-          end if;
- 
           --  See if we have a static predicate. Note that the answer may be
           --  yes even if we have an explicit Dynamic_Predicate present.
  
--- 10492,10497 ----
*************** package body Sem_Ch13 is
*** 10787,10793 ****
        end if;
  
        Restore_Ghost_Region (Saved_GM, Saved_IGR);
!    end Build_Predicate_Functions;
  
     ------------------------------------------
     -- Build_Predicate_Function_Declaration --
--- 10584,10590 ----
        end if;
  
        Restore_Ghost_Region (Saved_GM, Saved_IGR);
!    end Build_Predicate_Function;
  
     ------------------------------------------
     -- Build_Predicate_Function_Declaration --
*************** package body Sem_Ch13 is
*** 10856,10870 ****
        Propagate_Predicate_Attributes (UFull_Typ, From_Typ => Typ);
        Propagate_Predicate_Attributes (CRec_Typ,  From_Typ => Typ);
  
!       Spec :=
!         Make_Function_Specification (Loc,
!           Defining_Unit_Name       => Func_Id,
!           Parameter_Specifications => New_List (
!             Make_Parameter_Specification (Loc,
!               Defining_Identifier => Make_Temporary (Loc, 'I'),
!               Parameter_Type      => New_Occurrence_Of (Typ, Loc))),
!           Result_Definition        =>
!             New_Occurrence_Of (Standard_Boolean, Loc));
  
        Func_Decl := Make_Subprogram_Declaration (Loc, Specification => Spec);
  
--- 10653,10680 ----
        Propagate_Predicate_Attributes (UFull_Typ, From_Typ => Typ);
        Propagate_Predicate_Attributes (CRec_Typ,  From_Typ => Typ);
  
!       declare
!          Param_Specs : constant List_Id := New_List (
!            Make_Parameter_Specification (Loc,
!              Defining_Identifier => Make_Temporary (Loc, 'I'),
!              Parameter_Type      => New_Occurrence_Of (Typ, Loc)));
!       begin
!          if Predicate_Function_Needs_Membership_Parameter (Typ) then
!             --  Add Boolean-valued For_Membership_Test param
!             Append (Make_Parameter_Specification (Loc,
!                       Defining_Identifier => Make_Temporary (Loc, 'M'),
!                       Parameter_Type      =>
!                         New_Occurrence_Of (Standard_Boolean, Loc)),
!                     Param_Specs);
!          end if;
! 
!          Spec :=
!            Make_Function_Specification (Loc,
!              Defining_Unit_Name       => Func_Id,
!              Parameter_Specifications => Param_Specs,
!              Result_Definition        =>
!                New_Occurrence_Of (Standard_Boolean, Loc));
!       end;
  
        Func_Decl := Make_Subprogram_Declaration (Loc, Specification => Spec);
  
*************** package body Sem_Ch13 is
*** 11334,11345 ****
           when Aspect_Predicate_Failure =>
              T := Standard_String;
  
!          --  Here is the list of aspects that don't require delay analysis
  
           when Aspect_Designated_Storage_Model =>
              return;
  
           when Aspect_Storage_Model_Type =>
              T := Entity (ASN);
  
              declare
--- 11144,11167 ----
           when Aspect_Predicate_Failure =>
              T := Standard_String;
  
!          --  As for some other aspects above, the expression of this aspect is
!          --  just an entity that does not need any resolution, so just analyze.
  
           when Aspect_Designated_Storage_Model =>
+             Analyze (Expression (ASN));
              return;
  
           when Aspect_Storage_Model_Type =>
+ 
+             --  The aggregate argument of Storage_Model_Type is optional, and
+             --  when not present the aspect defaults to the native storage
+             --  model (where the address type is System.Address, and other
+             --  arguments default to corresponding native storage operations).
+ 
+             if No (Expression (ASN)) then
+                return;
+             end if;
+ 
              T := Entity (ASN);
  
              declare
*************** package body Sem_Ch13 is
*** 11364,11369 ****
--- 11186,11193 ----
  
              return;
  
+          --  Here is the list of aspects that don't require delay analysis
+ 
           when Aspect_Abstract_State
              | Aspect_Annotate
              | Aspect_Async_Readers
*************** package body Sem_Ch13 is
*** 11740,11752 ****
           Nod1 : Node_Id;
  
        begin
!          if Present (Lst) then
!             Nod1 := First (Lst);
!             while Present (Nod1) loop
!                Check_Expr_Constants (Nod1);
!                Next (Nod1);
!             end loop;
!          end if;
        end Check_List_Constants;
  
     --  Start of processing for Check_Constant_Address_Clause
--- 11564,11574 ----
           Nod1 : Node_Id;
  
        begin
!          Nod1 := First (Lst);
!          while Present (Nod1) loop
!             Check_Expr_Constants (Nod1);
!             Next (Nod1);
!          end loop;
        end Check_List_Constants;
  
     --  Start of processing for Check_Constant_Address_Clause
*************** package body Sem_Ch13 is
*** 12122,12145 ****
              begin
                 --  Gather discriminants into Comp
  
!                if DS /= No_List then
!                   Citem := First (DS);
!                   while Present (Citem) loop
!                      if Nkind (Citem) = N_Discriminant_Specification then
!                         declare
!                            Ent : constant Entity_Id :=
!                                    Defining_Identifier (Citem);
!                         begin
!                            if Ekind (Ent) = E_Discriminant then
!                               Ncomps := Ncomps + 1;
!                               Comps (Ncomps) := Ent;
!                            end if;
!                         end;
!                      end if;
  
!                      Next (Citem);
!                   end loop;
!                end if;
  
                 --  Gather component entities into Comp
  
--- 11944,11965 ----
              begin
                 --  Gather discriminants into Comp
  
!                Citem := First (DS);
!                while Present (Citem) loop
!                   if Nkind (Citem) = N_Discriminant_Specification then
!                      declare
!                         Ent : constant Entity_Id :=
!                                 Defining_Identifier (Citem);
!                      begin
!                         if Ekind (Ent) = E_Discriminant then
!                            Ncomps := Ncomps + 1;
!                            Comps (Ncomps) := Ent;
!                         end if;
!                      end;
!                   end if;
  
!                   Next (Citem);
!                end loop;
  
                 --  Gather component entities into Comp
  
*************** package body Sem_Ch13 is
*** 12449,12455 ****
                 OC_Lbit (To) := OC_Lbit (From);
              end OC_Move;
  
!             --  Start of processing for Overlap_Check
  
           begin
              CC := First (Component_Clauses (N));
--- 12269,12275 ----
                 OC_Lbit (To) := OC_Lbit (From);
              end OC_Move;
  
!          --  Start of processing for Overlap_Check
  
           begin
              CC := First (Component_Clauses (N));
*************** package body Sem_Ch13 is
*** 13101,13231 ****
  
        Inside_Freezing_Actions := Inside_Freezing_Actions - 1;
  
-       --  If we have a type with predicates, build predicate function. This is
-       --  not needed in the generic case, nor within e.g. TSS subprograms and
-       --  other predefined primitives. For a derived type, ensure that the
-       --  parent type is already frozen so that its predicate function has been
-       --  constructed already. This is necessary if the parent is declared
-       --  in a nested package and its own freeze point has not been reached.
- 
-       if Is_Type (E)
-         and then Nongeneric_Case
-         and then Has_Predicates (E)
-         and then Predicate_Check_In_Scope (N)
-       then
-          declare
-             Atyp : constant Entity_Id := Nearest_Ancestor (E);
-          begin
-             if Present (Atyp)
-               and then Has_Predicates (Atyp)
-               and then not Is_Frozen (Atyp)
-             then
-                Freeze_Before (N, Atyp);
-             end if;
-          end;
- 
-          Build_Predicate_Functions (E, N);
-       end if;
- 
-       --  If type has delayed aspects, this is where we do the preanalysis at
-       --  the freeze point, as part of the consistent visibility check. Note
-       --  that this must be done after calling Build_Predicate_Functions or
-       --  Build_Invariant_Procedure since these subprograms fix occurrences of
-       --  the subtype name in the saved expression so that they will not cause
-       --  trouble in the preanalysis.
- 
-       --  This is also not needed in the generic case
- 
-       if Nongeneric_Case
-         and then Has_Delayed_Aspects (E)
-         and then Scope (E) = Current_Scope
-       then
-          declare
-             Ritem : Node_Id;
- 
-          begin
-             --  Look for aspect specification entries for this entity
- 
-             Ritem := First_Rep_Item (E);
-             while Present (Ritem) loop
-                if Nkind (Ritem) = N_Aspect_Specification
-                  and then Entity (Ritem) = E
-                  and then Is_Delayed_Aspect (Ritem)
-                then
-                   if Get_Aspect_Id (Ritem) in Aspect_CPU
-                                             | Aspect_Dynamic_Predicate
-                                             | Aspect_Predicate
-                                             | Aspect_Static_Predicate
-                                             | Aspect_Priority
-                   then
-                     --  Retrieve the visibility to components and discriminants
-                     --  in order to properly analyze the aspects.
- 
-                      Push_Type (E);
-                      Check_Aspect_At_Freeze_Point (Ritem);
- 
-                      --  In the case of predicate aspects, there will be
-                      --  a corresponding Predicate pragma associated with
-                      --  the aspect, and the expression of the pragma also
-                      --  needs to be analyzed at this point, to ensure that
-                      --  Save_Global_References will capture global refs in
-                      --  expressions that occur in generic bodies, for proper
-                      --  later resolution of the pragma in instantiations.
- 
-                      if Is_Type (E)
-                        and then Inside_A_Generic
-                        and then Has_Predicates (E)
-                        and then Present (Aspect_Rep_Item (Ritem))
-                      then
-                         declare
-                            Pragma_Args : constant List_Id :=
-                              Pragma_Argument_Associations
-                                (Aspect_Rep_Item (Ritem));
-                            Pragma_Expr : constant Node_Id :=
-                              Expression (Next (First (Pragma_Args)));
-                         begin
-                            if Present (Pragma_Expr) then
-                               Analyze_And_Resolve
-                                 (Pragma_Expr, Standard_Boolean);
-                            end if;
-                         end;
-                      end if;
- 
-                      Pop_Type (E);
- 
-                   else
-                      Check_Aspect_At_Freeze_Point (Ritem);
-                   end if;
- 
-                --  A pragma Predicate should be checked like one of the
-                --  corresponding aspects, wrt possible misuse of ghost
-                --  entities.
- 
-                elsif Nkind (Ritem) = N_Pragma
-                  and then No (Corresponding_Aspect (Ritem))
-                  and then
-                    Get_Pragma_Id (Pragma_Name (Ritem)) = Pragma_Predicate
-                then
-                   --  Retrieve the visibility to components and discriminants
-                   --  in order to properly analyze the pragma.
- 
-                   declare
-                      Arg : constant Node_Id :=
-                         Next (First (Pragma_Argument_Associations (Ritem)));
-                   begin
-                      Push_Type (E);
-                      Preanalyze_Spec_Expression
-                        (Expression (Arg), Standard_Boolean);
-                      Pop_Type (E);
-                   end;
-                end if;
- 
-                Next_Rep_Item (Ritem);
-             end loop;
-          end;
- 
-       end if;
- 
        --  For a record type, deal with variant parts. This has to be delayed to
        --  this point, because of the issue of statically predicated subtypes,
        --  which we have to ensure are frozen before checking choices, since we
--- 12921,12926 ----
*************** package body Sem_Ch13 is
*** 13391,13396 ****
--- 13086,13225 ----
           end Check_Variant_Part;
        end if;
  
+       --  If we have a type with predicates, build predicate function. This is
+       --  not needed in the generic case, nor within e.g. TSS subprograms and
+       --  other predefined primitives. For a derived type, ensure that the
+       --  parent type is already frozen so that its predicate function has been
+       --  constructed already. This is necessary if the parent is declared
+       --  in a nested package and its own freeze point has not been reached.
+ 
+       if Is_Type (E)
+         and then Nongeneric_Case
+         and then Has_Predicates (E)
+         and then Predicate_Check_In_Scope (N)
+       then
+          declare
+             Atyp : constant Entity_Id := Nearest_Ancestor (E);
+ 
+          begin
+             if Present (Atyp)
+               and then Has_Predicates (Atyp)
+               and then not Is_Frozen (Atyp)
+             then
+                Freeze_Before (N, Atyp);
+             end if;
+          end;
+ 
+          --  Before we build a predicate function, ensure that discriminant
+          --  checking functions are available. The predicate function might
+          --  need to call these functions if the predicate references any
+          --  components declared in a variant part.
+ 
+          if Ekind (E) = E_Record_Type and then Has_Discriminants (E) then
+             Build_Or_Copy_Discr_Checking_Funcs (Parent (E));
+          end if;
+ 
+          Build_Predicate_Function (E, N);
+       end if;
+ 
+       --  If type has delayed aspects, this is where we do the preanalysis at
+       --  the freeze point, as part of the consistent visibility check. Note
+       --  that this must be done after calling Build_Predicate_Function or
+       --  Build_Invariant_Procedure since these subprograms fix occurrences of
+       --  the subtype name in the saved expression so that they will not cause
+       --  trouble in the preanalysis.
+ 
+       --  This is also not needed in the generic case
+ 
+       if Nongeneric_Case
+         and then Has_Delayed_Aspects (E)
+         and then Scope (E) = Current_Scope
+       then
+          declare
+             Ritem : Node_Id;
+ 
+          begin
+             --  Look for aspect specification entries for this entity
+ 
+             Ritem := First_Rep_Item (E);
+             while Present (Ritem) loop
+                if Nkind (Ritem) = N_Aspect_Specification
+                  and then Entity (Ritem) = E
+                  and then Is_Delayed_Aspect (Ritem)
+                then
+                   if Get_Aspect_Id (Ritem) in Aspect_CPU
+                                             | Aspect_Dynamic_Predicate
+                                             | Aspect_Predicate
+                                             | Aspect_Static_Predicate
+                                             | Aspect_Priority
+                   then
+                     --  Retrieve the visibility to components and discriminants
+                     --  in order to properly analyze the aspects.
+ 
+                      Push_Type (E);
+                      Check_Aspect_At_Freeze_Point (Ritem);
+ 
+                      --  In the case of predicate aspects, there will be
+                      --  a corresponding Predicate pragma associated with
+                      --  the aspect, and the expression of the pragma also
+                      --  needs to be analyzed at this point, to ensure that
+                      --  Save_Global_References will capture global refs in
+                      --  expressions that occur in generic bodies, for proper
+                      --  later resolution of the pragma in instantiations.
+ 
+                      if Is_Type (E)
+                        and then Inside_A_Generic
+                        and then Has_Predicates (E)
+                        and then Present (Aspect_Rep_Item (Ritem))
+                      then
+                         declare
+                            Pragma_Args : constant List_Id :=
+                              Pragma_Argument_Associations
+                                (Aspect_Rep_Item (Ritem));
+                            Pragma_Expr : constant Node_Id :=
+                              Expression (Next (First (Pragma_Args)));
+                         begin
+                            if Present (Pragma_Expr) then
+                               Analyze_And_Resolve
+                                 (Pragma_Expr, Standard_Boolean);
+                            end if;
+                         end;
+                      end if;
+ 
+                      Pop_Type (E);
+ 
+                   else
+                      Check_Aspect_At_Freeze_Point (Ritem);
+                   end if;
+ 
+                --  A pragma Predicate should be checked like one of the
+                --  corresponding aspects, wrt possible misuse of ghost
+                --  entities.
+ 
+                elsif Nkind (Ritem) = N_Pragma
+                  and then No (Corresponding_Aspect (Ritem))
+                  and then
+                    Get_Pragma_Id (Pragma_Name (Ritem)) = Pragma_Predicate
+                then
+                   --  Retrieve the visibility to components and discriminants
+                   --  in order to properly analyze the pragma.
+ 
+                   declare
+                      Arg : constant Node_Id :=
+                         Next (First (Pragma_Argument_Associations (Ritem)));
+                   begin
+                      Push_Type (E);
+                      Preanalyze_Spec_Expression
+                        (Expression (Arg), Standard_Boolean);
+                      Pop_Type (E);
+                   end;
+                end if;
+ 
+                Next_Rep_Item (Ritem);
+             end loop;
+          end;
+       end if;
+ 
        if not In_Generic_Scope (E)
          and then Ekind (E) = E_Record_Type
          and then Is_Tagged_Type (E)
*************** package body Sem_Ch13 is
*** 13443,13498 ****
     -----------------------------------
  
     function Has_Compatible_Representation
!      (Target_Type, Operand_Type : Entity_Id) return Boolean
     is
!       T1 : constant Entity_Id := Underlying_Type (Target_Type);
!       T2 : constant Entity_Id := Underlying_Type (Operand_Type);
! 
!    begin
!       --  A quick check, if base types are the same, then we definitely have
!       --  the same representation, because the subtype specific representation
!       --  attributes (Size and Alignment) do not affect representation from
!       --  the point of view of this test.
! 
!       if Base_Type (T1) = Base_Type (T2) then
!          return True;
  
!       elsif Is_Private_Type (Base_Type (T2))
!         and then Base_Type (T1) = Full_View (Base_Type (T2))
!       then
!          return True;
  
!       --  If T2 is a generic actual it is declared as a subtype, so
!       --  check against its base type.
  
!       elsif Is_Generic_Actual_Type (T1)
!         and then Has_Compatible_Representation (Base_Type (T1), T2)
!       then
           return True;
-       end if;
  
        --  Tagged types always have the same representation, because it is not
        --  possible to specify different representations for common fields.
  
!       if Is_Tagged_Type (T1) then
           return True;
-       end if;
  
        --  Representations are definitely different if conventions differ
  
!       if Convention (T1) /= Convention (T2) then
           return False;
-       end if;
  
        --  Representations are different if component alignments or scalar
        --  storage orders differ.
  
!       if (Is_Record_Type (T1) or else Is_Array_Type (T1))
!             and then
!          (Is_Record_Type (T2) or else Is_Array_Type (T2))
!         and then
!          (Component_Alignment (T1) /= Component_Alignment (T2)
!            or else Reverse_Storage_Order (T1) /= Reverse_Storage_Order (T2))
        then
           return False;
        end if;
--- 13272,13311 ----
     -----------------------------------
  
     function Has_Compatible_Representation
!      (Target_Typ, Operand_Typ : Entity_Id) return Boolean
     is
!       --  The subtype-specific representation attributes (Size and Alignment)
!       --  do not affect representation from the point of view of this function.
  
!       T1 : constant Entity_Id := Implementation_Base_Type (Target_Typ);
!       T2 : constant Entity_Id := Implementation_Base_Type (Operand_Typ);
  
!    begin
!       --  Return true immediately for the same base type
  
!       if T1 = T2 then
           return True;
  
        --  Tagged types always have the same representation, because it is not
        --  possible to specify different representations for common fields.
  
!       elsif Is_Tagged_Type (T1) then
           return True;
  
        --  Representations are definitely different if conventions differ
  
!       elsif Convention (T1) /= Convention (T2) then
           return False;
  
        --  Representations are different if component alignments or scalar
        --  storage orders differ.
  
!       elsif (Is_Record_Type (T1) or else Is_Array_Type (T1))
!               and then
!             (Is_Record_Type (T2) or else Is_Array_Type (T2))
!         and then (Component_Alignment (T1) /= Component_Alignment (T2)
!                    or else
!                   Reverse_Storage_Order (T1) /= Reverse_Storage_Order (T2))
        then
           return False;
        end if;
*************** package body Sem_Ch13 is
*** 13519,13529 ****
           then
              return True;
           end if;
-       end if;
  
!       --  For records, representations are different if reorderings differ
  
!       if Is_Record_Type (T1)
          and then Is_Record_Type (T2)
          and then No_Reordering (T1) /= No_Reordering (T2)
        then
--- 13332,13341 ----
           then
              return True;
           end if;
  
!       --  For records, representations are different if reordering differs
  
!       elsif Is_Record_Type (T1)
          and then Is_Record_Type (T2)
          and then No_Reordering (T1) /= No_Reordering (T2)
        then
*************** package body Sem_Ch13 is
*** 13563,13568 ****
--- 13375,13390 ----
           if Is_Packed (T1) /= Is_Packed (T2) then
              return False;
  
+          --  If the operand type is derived from the target type and no clause
+          --  has been given after the derivation, then the representations are
+          --  the same since the derived type inherits that of the parent type.
+ 
+          elsif Is_Derived_Type (T2)
+            and then Etype (T2) = T1
+            and then not Has_Record_Rep_Clause (T2)
+          then
+             return True;
+ 
           --  Otherwise we must check components. Typ2 maybe a constrained
           --  subtype with fewer components, so we compare the components
           --  of the base types.
*************** package body Sem_Ch13 is
*** 13671,13682 ****
--- 13493,13560 ----
     -------------------------------------
  
     procedure Inherit_Aspects_At_Freeze_Point (Typ : Entity_Id) is
+       function Get_Inherited_Rep_Item
+         (E   : Entity_Id;
+          Nam : Name_Id) return Node_Id;
+       --  Search the Rep_Item chain of entity E for an instance of a rep item
+       --  (pragma, attribute definition clause, or aspect specification) whose
+       --  name matches the given name Nam, and that has been inherited from its
+       --  parent, i.e. that has not been directly specified for E . If one is
+       --  found, it is returned, otherwise Empty is returned.
+ 
+       function Get_Inherited_Rep_Item
+         (E    : Entity_Id;
+          Nam1 : Name_Id;
+          Nam2 : Name_Id) return Node_Id;
+       --  Search the Rep_Item chain of entity E for an instance of a rep item
+       --  (pragma, attribute definition clause, or aspect specification) whose
+       --  name matches one of the given names Nam1 or Nam2, and that has been
+       --  inherited from its parent, i.e. that has not been directly specified
+       --  for E . If one is found, it is returned, otherwise Empty is returned.
+ 
        function Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
          (Rep_Item : Node_Id) return Boolean;
        --  This routine checks if Rep_Item is either a pragma or an aspect
        --  specification node whose corresponding pragma (if any) is present in
        --  the Rep Item chain of the entity it has been specified to.
  
+       ----------------------------
+       -- Get_Inherited_Rep_Item --
+       ----------------------------
+ 
+       function Get_Inherited_Rep_Item
+         (E   : Entity_Id;
+          Nam : Name_Id) return Node_Id
+       is
+          Rep : constant Node_Id
+                  := Get_Rep_Item (E, Nam, Check_Parents => True);
+       begin
+          if Present (Rep)
+            and then not Has_Rep_Item (E, Nam, Check_Parents => False)
+          then
+             return Rep;
+          else
+             return Empty;
+          end if;
+       end Get_Inherited_Rep_Item;
+ 
+       function Get_Inherited_Rep_Item
+         (E    : Entity_Id;
+          Nam1 : Name_Id;
+          Nam2 : Name_Id) return Node_Id
+       is
+          Rep : constant Node_Id
+                  := Get_Rep_Item (E, Nam1, Nam2, Check_Parents => True);
+       begin
+          if Present (Rep)
+            and then not Has_Rep_Item (E, Nam1, Nam2, Check_Parents => False)
+          then
+             return Rep;
+          else
+             return Empty;
+          end if;
+       end Get_Inherited_Rep_Item;
+ 
        --------------------------------------------------
        -- Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item --
        --------------------------------------------------
*************** package body Sem_Ch13 is
*** 13691,13696 ****
--- 13569,13576 ----
             Present_In_Rep_Item (Entity (Rep_Item), Aspect_Rep_Item (Rep_Item));
        end Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item;
  
+       Rep : Node_Id;
+ 
     --  Start of processing for Inherit_Aspects_At_Freeze_Point
  
     begin
*************** package body Sem_Ch13 is
*** 13712,13725 ****
        --  representation aspect in the rep item chain of Typ, if any, isn't
        --  directly specified to Typ but to one of its parents.
  
-       --  ??? Note that, for now, just a limited number of representation
-       --  aspects have been inherited here so far. Many of them are
-       --  still inherited in Sem_Ch3. This will be fixed soon. Here is
-       --  a non- exhaustive list of aspects that likely also need to
-       --  be moved to this routine: Alignment, Component_Alignment,
-       --  Component_Size, Machine_Radix, Object_Size, Pack, Predicates,
-       --  Preelaborable_Initialization, RM_Size and Small.
- 
        --  In addition, Convention must be propagated from base type to subtype,
        --  because the subtype may have been declared on an incomplete view.
  
--- 13592,13597 ----
*************** package body Sem_Ch13 is
*** 13729,13768 ****
  
        --  Ada_05/Ada_2005
  
!       if not Has_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005, False)
!         and then Has_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005))
        then
           Set_Is_Ada_2005_Only (Typ);
        end if;
  
        --  Ada_12/Ada_2012
  
!       if not Has_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012, False)
!         and then Has_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012))
        then
           Set_Is_Ada_2012_Only (Typ);
        end if;
  
        --  Ada_2022
  
!       if not Has_Rep_Item (Typ, Name_Ada_2022, False)
!         and then Has_Rep_Item (Typ, Name_Ada_2022)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Ada_2022))
        then
           Set_Is_Ada_2022_Only (Typ);
        end if;
  
        --  Atomic/Shared
  
!       if not Has_Rep_Item (Typ, Name_Atomic, Name_Shared, False)
!         and then Has_Rep_Pragma (Typ, Name_Atomic, Name_Shared)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Atomic, Name_Shared))
        then
           Set_Is_Atomic (Typ);
           Set_Is_Volatile (Typ);
--- 13601,13636 ----
  
        --  Ada_05/Ada_2005
  
!       Rep := Get_Inherited_Rep_Item (Typ, Name_Ada_05, Name_Ada_2005);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Is_Ada_2005_Only (Typ);
        end if;
  
        --  Ada_12/Ada_2012
  
!       Rep := Get_Inherited_Rep_Item (Typ, Name_Ada_12, Name_Ada_2012);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Is_Ada_2012_Only (Typ);
        end if;
  
        --  Ada_2022
  
!       Rep := Get_Inherited_Rep_Item (Typ, Name_Ada_2022);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Is_Ada_2022_Only (Typ);
        end if;
  
        --  Atomic/Shared
  
!       Rep := Get_Inherited_Rep_Item (Typ,  Name_Atomic, Name_Shared);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Is_Atomic (Typ);
           Set_Is_Volatile (Typ);
*************** package body Sem_Ch13 is
*** 13777,13826 ****
           Set_Convention (Typ, Convention (Base_Type (Typ)));
        end if;
  
!       --  Default_Component_Value
  
!       --  Verify that there is no rep_item declared for the type, and there
!       --  is one coming from an ancestor.
  
!       if Is_Array_Type (Typ)
!         and then Is_Base_Type (Typ)
!         and then not Has_Rep_Item (Typ, Name_Default_Component_Value, False)
!         and then Has_Rep_Item (Typ, Name_Default_Component_Value)
!       then
!          Set_Default_Aspect_Component_Value (Typ,
!            Default_Aspect_Component_Value
!              (Entity (Get_Rep_Item (Typ, Name_Default_Component_Value))));
        end if;
  
!       --  Default_Value
  
!       if Is_Scalar_Type (Typ)
!         and then Is_Base_Type (Typ)
!         and then not Has_Rep_Item (Typ, Name_Default_Value, False)
!         and then Has_Rep_Item (Typ, Name_Default_Value)
!       then
!          Set_Has_Default_Aspect (Typ);
!          Set_Default_Aspect_Value (Typ,
!            Default_Aspect_Value
!              (Entity (Get_Rep_Item (Typ, Name_Default_Value))));
        end if;
  
        --  Discard_Names
  
!       if not Has_Rep_Item (Typ, Name_Discard_Names, False)
!         and then Has_Rep_Item (Typ, Name_Discard_Names)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Discard_Names))
        then
           Set_Discard_Names (Typ);
        end if;
  
        --  Volatile
  
!       if not Has_Rep_Item (Typ, Name_Volatile, False)
!         and then Has_Rep_Item (Typ, Name_Volatile)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Volatile))
        then
           Set_Is_Volatile (Typ);
           Set_Treat_As_Volatile (Typ);
--- 13645,13724 ----
           Set_Convention (Typ, Convention (Base_Type (Typ)));
        end if;
  
!       --  Default_Component_Value (for base types only)
  
!       --  Note that we need to look into the first subtype because the base
!       --  type may be the implicit base type built by the compiler for the
!       --  declaration of a constrained subtype with the aspect.
  
!       if Is_Array_Type (Typ) and then Is_Base_Type (Typ) then
!          declare
!             F_Typ : constant Entity_Id := First_Subtype (Typ);
! 
!             E : Entity_Id;
! 
!          begin
!             Rep :=
!               Get_Inherited_Rep_Item (F_Typ, Name_Default_Component_Value);
!             if Present (Rep) then
!                E := Entity (Rep);
! 
!                --  Deal with private types
! 
!                if Is_Private_Type (E) then
!                   E := Full_View (E);
!                end if;
! 
!                Set_Default_Aspect_Component_Value
!                  (Typ, Default_Aspect_Component_Value (E));
!                Set_Has_Default_Aspect (Typ);
!             end if;
!          end;
        end if;
  
!       --  Default_Value (for base types only)
  
!       --  Note that we need to look into the first subtype because the base
!       --  type may be the implicit base type built by the compiler for the
!       --  declaration of a constrained subtype with the aspect.
! 
!       if Is_Scalar_Type (Typ) and then Is_Base_Type (Typ) then
!          declare
!             F_Typ : constant Entity_Id := First_Subtype (Typ);
! 
!             E : Entity_Id;
! 
!          begin
!             Rep := Get_Inherited_Rep_Item (F_Typ, Name_Default_Value);
!             if Present (Rep) then
!                E := Entity (Rep);
! 
!                --  Deal with private types
! 
!                if Is_Private_Type (E) then
!                   E := Full_View (E);
!                end if;
! 
!                Set_Default_Aspect_Value (Typ, Default_Aspect_Value (E));
!                Set_Has_Default_Aspect (Typ);
!             end if;
!          end;
        end if;
  
        --  Discard_Names
  
!       Rep := Get_Inherited_Rep_Item (Typ, Name_Discard_Names);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Discard_Names (Typ);
        end if;
  
        --  Volatile
  
!       Rep := Get_Inherited_Rep_Item (Typ, Name_Volatile);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Is_Volatile (Typ);
           Set_Treat_As_Volatile (Typ);
*************** package body Sem_Ch13 is
*** 13828,13839 ****
  
        --  Volatile_Full_Access and Full_Access_Only
  
!       if not Has_Rep_Item (Typ, Name_Volatile_Full_Access, False)
!         and then not Has_Rep_Item (Typ, Name_Full_Access_Only, False)
!         and then (Has_Rep_Item (Typ, Name_Volatile_Full_Access)
!                     or else Has_Rep_Item (Typ, Name_Full_Access_Only))
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Volatile_Full_Access))
        then
           Set_Is_Volatile_Full_Access (Typ);
           Set_Is_Volatile (Typ);
--- 13726,13735 ----
  
        --  Volatile_Full_Access and Full_Access_Only
  
!       Rep := Get_Inherited_Rep_Item
!                (Typ, Name_Volatile_Full_Access, Name_Full_Access_Only);
!       if Present (Rep)
!         and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
        then
           Set_Is_Volatile_Full_Access (Typ);
           Set_Is_Volatile (Typ);
*************** package body Sem_Ch13 is
*** 13850,13887 ****
           begin
              --  Atomic_Components
  
!             if not Has_Rep_Item (Typ, Name_Atomic_Components, False)
!               and then Has_Rep_Item (Typ, Name_Atomic_Components)
!               and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Atomic_Components))
              then
                 Set_Has_Atomic_Components (Imp_Bas_Typ);
              end if;
  
              --  Volatile_Components
  
!             if not Has_Rep_Item (Typ, Name_Volatile_Components, False)
!               and then Has_Rep_Item (Typ, Name_Volatile_Components)
!               and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Volatile_Components))
              then
                 Set_Has_Volatile_Components (Imp_Bas_Typ);
              end if;
  
              --  Finalize_Storage_Only
  
!             if not Has_Rep_Pragma (Typ, Name_Finalize_Storage_Only, False)
!               and then Has_Rep_Pragma (Typ, Name_Finalize_Storage_Only)
!             then
                 Set_Finalize_Storage_Only (Bas_Typ);
              end if;
  
              --  Universal_Aliasing
  
!             if not Has_Rep_Item (Typ, Name_Universal_Aliasing, False)
!               and then Has_Rep_Item (Typ, Name_Universal_Aliasing)
!               and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item
!                    (Get_Rep_Item (Typ, Name_Universal_Aliasing))
              then
                 Set_Universal_Aliasing (Imp_Bas_Typ);
              end if;
--- 13746,13779 ----
           begin
              --  Atomic_Components
  
!             Rep := Get_Inherited_Rep_Item (Typ, Name_Atomic_Components);
!             if Present (Rep)
!               and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
              then
                 Set_Has_Atomic_Components (Imp_Bas_Typ);
              end if;
  
              --  Volatile_Components
  
!             Rep := Get_Inherited_Rep_Item (Typ, Name_Volatile_Components);
!             if Present (Rep)
!               and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
              then
                 Set_Has_Volatile_Components (Imp_Bas_Typ);
              end if;
  
              --  Finalize_Storage_Only
  
!             Rep := Get_Inherited_Rep_Item (Typ, Name_Finalize_Storage_Only);
!             if Present (Rep) then
                 Set_Finalize_Storage_Only (Bas_Typ);
              end if;
  
              --  Universal_Aliasing
  
!             Rep := Get_Inherited_Rep_Item (Typ, Name_Universal_Aliasing);
!             if Present (Rep)
!               and then Is_Pragma_Or_Corr_Pragma_Present_In_Rep_Item (Rep)
              then
                 Set_Universal_Aliasing (Imp_Bas_Typ);
              end if;
*************** package body Sem_Ch13 is
*** 13889,13897 ****
              --  Bit_Order
  
              if Is_Record_Type (Typ) and then Typ = Bas_Typ then
!                if not Has_Rep_Item (Typ, Name_Bit_Order, False)
!                  and then Has_Rep_Item (Typ, Name_Bit_Order)
!                then
                    Set_Reverse_Bit_Order (Bas_Typ,
                      Reverse_Bit_Order
                        (Implementation_Base_Type (Etype (Bas_Typ))));
--- 13781,13788 ----
              --  Bit_Order
  
              if Is_Record_Type (Typ) and then Typ = Bas_Typ then
!                Rep := Get_Inherited_Rep_Item (Typ, Name_Bit_Order);
!                if Present (Rep) then
                    Set_Reverse_Bit_Order (Bas_Typ,
                      Reverse_Bit_Order
                        (Implementation_Base_Type (Etype (Bas_Typ))));
*************** package body Sem_Ch13 is
*** 13930,13935 ****
--- 13821,14029 ----
        end if;
     end Inherit_Aspects_At_Freeze_Point;
  
+    ---------------------------------
+    -- Inherit_Delayed_Rep_Aspects --
+    ---------------------------------
+ 
+    procedure Inherit_Delayed_Rep_Aspects (Typ : Entity_Id) is
+       A : Aspect_Id;
+       N : Node_Id;
+       P : Entity_Id;
+ 
+    begin
+       --  Find the first aspect that has been inherited
+ 
+       N := First_Rep_Item (Typ);
+       while Present (N) loop
+          if Nkind (N) = N_Aspect_Specification then
+             exit when Entity (N) /= Typ;
+          end if;
+ 
+          Next_Rep_Item (N);
+       end loop;
+ 
+       --  There must be one if we reach here
+ 
+       pragma Assert (Present (N));
+       P := Entity (N);
+ 
+       --  Loop through delayed aspects for the parent type
+ 
+       while Present (N) loop
+          if Nkind (N) = N_Aspect_Specification then
+             exit when Entity (N) /= P;
+ 
+             if Is_Delayed_Aspect (N) then
+                A := Get_Aspect_Id (N);
+ 
+                --  Process delayed rep aspect. For Boolean attributes it is
+                --  not possible to cancel an attribute once set (the attempt
+                --  to use an aspect with xxx => False is an error) for a
+                --  derived type. So for those cases, we do not have to check
+                --  if a clause has been given for the derived type, since it
+                --  is harmless to set it again if it is already set.
+ 
+                case A is
+ 
+                   --  Alignment
+ 
+                   when Aspect_Alignment =>
+                      if not Has_Alignment_Clause (Typ) then
+                         Set_Alignment (Typ, Alignment (P));
+                      end if;
+ 
+                   --  Atomic
+ 
+                   when Aspect_Atomic =>
+                      if Is_Atomic (P) then
+                         Set_Is_Atomic (Typ);
+                      end if;
+ 
+                   --  Atomic_Components
+ 
+                   when Aspect_Atomic_Components =>
+                      if Has_Atomic_Components (P) then
+                         Set_Has_Atomic_Components (Base_Type (Typ));
+                      end if;
+ 
+                   --  Bit_Order
+ 
+                   when Aspect_Bit_Order =>
+                      if Is_Record_Type (Typ)
+                        and then No (Get_Attribute_Definition_Clause
+                                       (Typ, Attribute_Bit_Order))
+                        and then Reverse_Bit_Order (P)
+                      then
+                         Set_Reverse_Bit_Order (Base_Type (Typ));
+                      end if;
+ 
+                   --  Component_Size
+ 
+                   when Aspect_Component_Size =>
+                      if Is_Array_Type (Typ)
+                        and then not Has_Component_Size_Clause (Typ)
+                      then
+                         Set_Component_Size
+                           (Base_Type (Typ), Component_Size (P));
+                      end if;
+ 
+                   --  Machine_Radix
+ 
+                   when Aspect_Machine_Radix =>
+                      if Is_Decimal_Fixed_Point_Type (Typ)
+                        and then not Has_Machine_Radix_Clause (Typ)
+                      then
+                         Set_Machine_Radix_10 (Typ, Machine_Radix_10 (P));
+                      end if;
+ 
+                   --  Object_Size (also Size which also sets Object_Size)
+ 
+                   when Aspect_Object_Size
+                      | Aspect_Size
+                   =>
+                      if not Has_Size_Clause (Typ)
+                        and then
+                          No (Get_Attribute_Definition_Clause
+                                (Typ, Attribute_Object_Size))
+                      then
+                         Set_Esize (Typ, Esize (P));
+                      end if;
+ 
+                   --  Pack
+ 
+                   when Aspect_Pack =>
+                      if not Is_Packed (Typ) then
+                         Set_Is_Packed (Base_Type (Typ));
+ 
+                         if Is_Bit_Packed_Array (P) then
+                            Set_Is_Bit_Packed_Array (Base_Type (Typ));
+                            Set_Packed_Array_Impl_Type
+                              (Typ, Packed_Array_Impl_Type (P));
+                         end if;
+                      end if;
+ 
+                   --  Scalar_Storage_Order
+ 
+                   when Aspect_Scalar_Storage_Order =>
+                      if (Is_Record_Type (Typ) or else Is_Array_Type (Typ))
+                        and then No (Get_Attribute_Definition_Clause
+                                       (Typ, Attribute_Scalar_Storage_Order))
+                        and then Reverse_Storage_Order (P)
+                      then
+                         Set_Reverse_Storage_Order (Base_Type (Typ));
+ 
+                         --  Clear default SSO indications, since the aspect
+                         --  overrides the default.
+ 
+                         Set_SSO_Set_Low_By_Default  (Base_Type (Typ), False);
+                         Set_SSO_Set_High_By_Default (Base_Type (Typ), False);
+                      end if;
+ 
+                   --  Small
+ 
+                   when Aspect_Small =>
+                      if Is_Fixed_Point_Type (Typ)
+                        and then not Has_Small_Clause (Typ)
+                      then
+                         Set_Small_Value (Typ, Small_Value (P));
+                      end if;
+ 
+                   --  Storage_Size
+ 
+                   when Aspect_Storage_Size =>
+                      if (Is_Access_Type (Typ) or else Is_Task_Type (Typ))
+                        and then not Has_Storage_Size_Clause (Typ)
+                      then
+                         Set_Storage_Size_Variable
+                           (Base_Type (Typ), Storage_Size_Variable (P));
+                      end if;
+ 
+                   --  Value_Size
+ 
+                   when Aspect_Value_Size =>
+ 
+                      --  Value_Size is never inherited, it is either set by
+                      --  default, or it is explicitly set for the derived
+                      --  type. So nothing to do here.
+ 
+                      null;
+ 
+                   --  Volatile
+ 
+                   when Aspect_Volatile =>
+                      if Is_Volatile (P) then
+                         Set_Is_Volatile (Typ);
+                      end if;
+ 
+                   --  Volatile_Full_Access (also Full_Access_Only)
+ 
+                   when Aspect_Volatile_Full_Access
+                      | Aspect_Full_Access_Only
+                   =>
+                      if Is_Volatile_Full_Access (P) then
+                         Set_Is_Volatile_Full_Access (Typ);
+                      end if;
+ 
+                   --  Volatile_Components
+ 
+                   when Aspect_Volatile_Components =>
+                      if Has_Volatile_Components (P) then
+                         Set_Has_Volatile_Components (Base_Type (Typ));
+                      end if;
+ 
+                   --  That should be all the Rep Aspects
+ 
+                   when others =>
+                      pragma Assert (Aspect_Delay (A) /= Rep_Aspect);
+                      null;
+                end case;
+             end if;
+          end if;
+ 
+          Next_Rep_Item (N);
+       end loop;
+    end Inherit_Delayed_Rep_Aspects;
+ 
     ----------------
     -- Initialize --
     ----------------
*************** package body Sem_Ch13 is
*** 13999,14005 ****
  
     function Is_Predicate_Static
       (Expr : Node_Id;
!       Nam  : Name_Id) return Boolean
     is
        function All_Static_Case_Alternatives (L : List_Id) return Boolean;
        --  Given a list of case expression alternatives, returns True if all
--- 14093,14100 ----
  
     function Is_Predicate_Static
       (Expr : Node_Id;
!       Nam  : Name_Id;
!       Warn : Boolean := True) return Boolean
     is
        function All_Static_Case_Alternatives (L : List_Id) return Boolean;
        --  Given a list of case expression alternatives, returns True if all
*************** package body Sem_Ch13 is
*** 14049,14061 ****
        begin
           return (Nkind (N) = N_Identifier
                    and then Chars (N) = Nam
!                   and then Paren_Count (N) = 0)
!            or else Nkind (N) = N_Function_Call;
        end Is_Type_Ref;
  
     --  Start of processing for Is_Predicate_Static
  
     begin
        --  Predicate_Static means one of the following holds. Numbers are the
        --  corresponding paragraph numbers in (RM 3.2.4(16-22)).
  
--- 14144,14185 ----
        begin
           return (Nkind (N) = N_Identifier
                    and then Chars (N) = Nam
!                   and then Paren_Count (N) = 0);
        end Is_Type_Ref;
  
+       --  helper function for recursive calls
+       function Is_Predicate_Static_Aux (Expr : Node_Id) return Boolean is
+         (Is_Predicate_Static (Expr, Nam, Warn => False));
+ 
     --  Start of processing for Is_Predicate_Static
  
     begin
+       --   Handle cases like
+       --     subtype S is Integer with Static_Predicate =>
+       --       (Some_Integer_Variable in Integer) and then (S /= 0);
+       --   where the predicate (which should be rejected) might have been
+       --   transformed into just "(S /= 0)", which would appear to be
+       --   a predicate-static expression (and therefore legal).
+ 
+       if Original_Node (Expr) /= Expr then
+ 
+          --  Emit warnings for predicates that are always True or always False
+          --  and were not originally expressed as Boolean literals.
+ 
+          return Result : constant Boolean :=
+            Is_Predicate_Static_Aux (Original_Node (Expr))
+          do
+             if Result and then Warn and then Is_Entity_Name (Expr) then
+                if Entity (Expr) = Standard_True then
+                   Error_Msg_N ("predicate is redundant (always True)?", Expr);
+                elsif Entity (Expr) = Standard_False then
+                   Error_Msg_N
+                     ("predicate is unsatisfiable (always False)?", Expr);
+                end if;
+             end if;
+          end return;
+       end if;
+ 
        --  Predicate_Static means one of the following holds. Numbers are the
        --  corresponding paragraph numbers in (RM 3.2.4(16-22)).
  
*************** package body Sem_Ch13 is
*** 14069,14074 ****
--- 14193,14199 ----
        --  for a static membership test.
  
        elsif Nkind (Expr) in N_Membership_Test
+         and then Is_Type_Ref (Left_Opnd (Expr))
          and then All_Membership_Choices_Static (Expr)
        then
           return True;
*************** package body Sem_Ch13 is
*** 14114,14124 ****
        --  operand is predicate-static.
  
        elsif (Nkind (Expr) in N_Op_And | N_Op_Or | N_Op_Xor
!               and then Is_Predicate_Static (Left_Opnd (Expr), Nam)
!               and then Is_Predicate_Static (Right_Opnd (Expr), Nam))
          or else
              (Nkind (Expr) = N_Op_Not
!               and then Is_Predicate_Static (Right_Opnd (Expr), Nam))
        then
           return True;
  
--- 14239,14249 ----
        --  operand is predicate-static.
  
        elsif (Nkind (Expr) in N_Op_And | N_Op_Or | N_Op_Xor
!               and then Is_Predicate_Static_Aux (Left_Opnd (Expr))
!               and then Is_Predicate_Static_Aux (Right_Opnd (Expr)))
          or else
              (Nkind (Expr) = N_Op_Not
!               and then Is_Predicate_Static_Aux (Right_Opnd (Expr)))
        then
           return True;
  
*************** package body Sem_Ch13 is
*** 14126,14133 ****
        --  predicate-static.
  
        elsif Nkind (Expr) in N_Short_Circuit
!         and then Is_Predicate_Static (Left_Opnd (Expr), Nam)
!         and then Is_Predicate_Static (Right_Opnd (Expr), Nam)
        then
           return True;
  
--- 14251,14258 ----
        --  predicate-static.
  
        elsif Nkind (Expr) in N_Short_Circuit
!         and then Is_Predicate_Static_Aux (Left_Opnd (Expr))
!         and then Is_Predicate_Static_Aux (Right_Opnd (Expr))
        then
           return True;
  
*************** package body Sem_Ch13 is
*** 14158,14169 ****
        then
           return True;
  
-       elsif Is_Entity_Name (Expr)
-         and then Entity (Expr) = Standard_True
-       then
-          Error_Msg_N ("predicate is redundant (always True)?", Expr);
-          return True;
- 
        --  That's an exhaustive list of tests, all other cases are not
        --  predicate-static, so we return False.
  
--- 14283,14288 ----
*************** package body Sem_Ch13 is
*** 15176,15202 ****
                 end if;
  
                 --  The components of the type are directly visible and can
!                --  be referenced without a prefix.
! 
!                if Nkind (Parent (N)) = N_Selected_Component then
!                   null;
! 
!                --  In expression C (I), C may be a directly visible function
!                --  or a visible component that has an array type. Disambiguate
!                --  by examining the component type.
  
!                elsif Nkind (Parent (N)) = N_Indexed_Component
!                  and then N = Prefix (Parent (N))
                 then
                    Comp := Visible_Component (Chars (N));
  
-                   if Present (Comp) and then Is_Array_Type (Etype (Comp)) then
-                      Add_Prefix (N, Comp);
-                   end if;
- 
-                else
-                   Comp := Visible_Component (Chars (N));
- 
                    if Present (Comp) then
                       Add_Prefix (N, Comp);
                    end if;
--- 15295,15320 ----
                 end if;
  
                 --  The components of the type are directly visible and can
!                --  be referenced in the source code without a prefix.
!                --  If a name denoting a component doesn't already have a
!                --  prefix, then normalize it by adding a reference to the
!                --  current instance of the type as a prefix.
!                --
!                --  This isn't right in the pathological corner case of an
!                --  object-declaring expression (e.g., a quantified expression
!                --  or a declare expression) that declares an object with the
!                --  same name as a visible component declaration, thereby hiding
!                --  the component within that expression. For example, given a
!                --  record with a Boolean component "C" and a dynamic predicate
!                --  "C = (for some C in Character => Some_Function (C))", only
!                --  the first of the two uses of C should have a prefix added
!                --  here; instead, both will get prefixes.
  
!                if Nkind (Parent (N)) /= N_Selected_Component
!                  or else N /= Selector_Name (Parent (N))
                 then
                    Comp := Visible_Component (Chars (N));
  
                    if Present (Comp) then
                       Add_Prefix (N, Comp);
                    end if;
*************** package body Sem_Ch13 is
*** 15665,15670 ****
--- 15783,15794 ----
              return;
           end if;
  
+       elsif No (Add_Named_Subp)
+         and then No (Add_Unnamed_Subp)
+         and then No (Assign_Indexed_Subp)
+       then
+          Error_Msg_N ("incomplete specification for aggregate", N);
+ 
        elsif Present (New_Indexed_Subp) /= Present (Assign_Indexed_Subp) then
           Error_Msg_N ("incomplete specification for indexed aggregate", N);
        end if;
*************** package body Sem_Ch13 is
*** 15830,15851 ****
  
           Ent := Entity (N);
           F1  := First_Formal (Ent);
  
!          if Nam in Name_First | Name_Last then
  
!             --  First or Last (Container) => Cursor
  
              if Etype (Ent) /= Cursor then
                 Error_Msg_N ("primitive for First must yield a cursor", N);
              end if;
  
           elsif Nam = Name_Next then
  
              --  Next (Container, Cursor) => Cursor
  
!             F2 := Next_Formal (F1);
! 
!             if Etype (F2) /= Cursor
                or else Etype (Ent) /= Cursor
                or else Present (Next_Formal (F2))
              then
--- 15954,15987 ----
  
           Ent := Entity (N);
           F1  := First_Formal (Ent);
+          F2  := Next_Formal (F1);
  
!          if Nam = Name_First then
  
!             --  First (Container) => Cursor
  
              if Etype (Ent) /= Cursor then
                 Error_Msg_N ("primitive for First must yield a cursor", N);
+             elsif Present (F2) then
+                Error_Msg_N ("no match for First iterable primitive", N);
+             end if;
+ 
+          elsif Nam = Name_Last then
+ 
+             --  Last (Container) => Cursor
+ 
+             if Etype (Ent) /= Cursor then
+                Error_Msg_N ("primitive for Last must yield a cursor", N);
+             elsif Present (F2) then
+                Error_Msg_N ("no match for Last iterable primitive", N);
              end if;
  
           elsif Nam = Name_Next then
  
              --  Next (Container, Cursor) => Cursor
  
!             if No (F2)
!               or else Etype (F2) /= Cursor
                or else Etype (Ent) /= Cursor
                or else Present (Next_Formal (F2))
              then
*************** package body Sem_Ch13 is
*** 15856,15864 ****
  
              --  Previous (Container, Cursor) => Cursor
  
!             F2 := Next_Formal (F1);
! 
!             if Etype (F2) /= Cursor
                or else Etype (Ent) /= Cursor
                or else Present (Next_Formal (F2))
              then
--- 15992,15999 ----
  
              --  Previous (Container, Cursor) => Cursor
  
!             if No (F2)
!               or else Etype (F2) /= Cursor
                or else Etype (Ent) /= Cursor
                or else Present (Next_Formal (F2))
              then
*************** package body Sem_Ch13 is
*** 15869,15877 ****
  
              --  Has_Element (Container, Cursor) => Boolean
  
!             F2 := Next_Formal (F1);
! 
!             if Etype (F2) /= Cursor
                or else Etype (Ent) /= Standard_Boolean
                or else Present (Next_Formal (F2))
              then
--- 16004,16011 ----
  
              --  Has_Element (Container, Cursor) => Boolean
  
!             if No (F2)
!               or else Etype (F2) /= Cursor
                or else Etype (Ent) /= Standard_Boolean
                or else Present (Next_Formal (F2))
              then
*************** package body Sem_Ch13 is
*** 15879,15885 ****
              end if;
  
           elsif Nam = Name_Element then
!             F2 := Next_Formal (F1);
  
              if No (F2)
                or else Etype (F2) /= Cursor
--- 16013,16020 ----
              end if;
  
           elsif Nam = Name_Element then
! 
!             --  Element (Container, Cursor) => Element_Type;
  
              if No (F2)
                or else Etype (F2) /= Cursor
*************** package body Sem_Ch13 is
*** 15905,15910 ****
--- 16040,16046 ----
              while Present (It.Typ) loop
                 if Ekind (It.Nam) = E_Function
                    and then Scope (It.Nam) = Scope (Typ)
+                   and then Present (First_Formal (It.Nam))
                    and then Etype (First_Formal (It.Nam)) = Typ
                 then
                    F1 := First_Formal (It.Nam);
*************** package body Sem_Ch13 is
*** 16451,16457 ****
  
        begin
           for FP of Profiles loop
!             if not Present (Formal) then
                 Is_Error := True;
                 Report_Argument_Error ("missing formal of }", Subt => FP.Subt);
                 exit;
--- 16587,16593 ----
  
        begin
           for FP of Profiles loop
!             if No (Formal) then
                 Is_Error := True;
                 Report_Argument_Error ("missing formal of }", Subt => FP.Subt);
                 exit;
*************** package body Sem_Ch13 is
*** 16519,16530 ****
  
           return;
  
!       elsif not Present (Addr_Type) then
!          Error_Msg_N ("argument association for Address_Type missing; "
!                          & "must be specified as first aspect argument", N);
!          return;
  
!       elsif Nam = Name_Null_Address then
           if not Is_Entity_Name (N)
             or else not Is_Constant_Object (Entity (N))
             or else
--- 16655,16668 ----
  
           return;
  
!       --  If Addr_Type is not present as the first association, then we default
!       --  it to System.Address.
  
!       elsif No (Addr_Type) then
!          Addr_Type := RTE (RE_Address);
!       end if;
! 
!       if Nam = Name_Null_Address then
           if not Is_Entity_Name (N)
             or else not Is_Constant_Object (Entity (N))
             or else
*************** package body Sem_Ch13 is
*** 17036,17069 ****
     ------------------------------
  
     procedure Validate_Iterable_Aspect (Typ : Entity_Id; ASN : Node_Id) is
        Assoc : Node_Id;
        Expr  : Node_Id;
  
        Prim   : Node_Id;
!       Cursor : constant Entity_Id := Get_Cursor_Type (ASN, Typ);
  
!       First_Id       : Entity_Id;
!       Last_Id        : Entity_Id;
!       Next_Id        : Entity_Id;
!       Has_Element_Id : Entity_Id;
!       Element_Id     : Entity_Id;
  
     begin
        --  If previous error aspect is unusable
  
        if Cursor = Any_Type then
           return;
        end if;
  
!       First_Id       := Empty;
!       Last_Id        := Empty;
!       Next_Id        := Empty;
!       Has_Element_Id := Empty;
!       Element_Id     := Empty;
  
        --  Each expression must resolve to a function with the proper signature
  
!       Assoc := First (Component_Associations (Expression (ASN)));
        while Present (Assoc) loop
           Expr := Expression (Assoc);
           Analyze (Expr);
--- 17174,17214 ----
     ------------------------------
  
     procedure Validate_Iterable_Aspect (Typ : Entity_Id; ASN : Node_Id) is
+       Aggr  : constant Node_Id := Expression (ASN);
        Assoc : Node_Id;
        Expr  : Node_Id;
  
        Prim   : Node_Id;
!       Cursor : Entity_Id;
  
!       First_Id       : Entity_Id := Empty;
!       Last_Id        : Entity_Id := Empty;
!       Next_Id        : Entity_Id := Empty;
!       Has_Element_Id : Entity_Id := Empty;
!       Element_Id     : Entity_Id := Empty;
  
     begin
+       if Nkind (Aggr) /= N_Aggregate then
+          Error_Msg_N ("aspect Iterable must be an aggregate", Aggr);
+          return;
+       end if;
+ 
+       Cursor := Get_Cursor_Type (ASN, Typ);
+ 
        --  If previous error aspect is unusable
  
        if Cursor = Any_Type then
           return;
        end if;
  
!       if not Is_Empty_List (Expressions (Aggr)) then
!          Error_Msg_N
!            ("illegal positional association", First (Expressions (Aggr)));
!       end if;
  
        --  Each expression must resolve to a function with the proper signature
  
!       Assoc := First (Component_Associations (Aggr));
        while Present (Assoc) loop
           Expr := Expression (Assoc);
           Analyze (Expr);
*************** package body Sem_Ch13 is
*** 17182,17188 ****
           Param_Type := Standard_String;
        end if;
  
!       if not Overloaded and then not Present (Entity (Func_Name)) then
           --  The aspect is specified by a subprogram name, which
           --  may be an operator name given originally by a string.
  
--- 17327,17333 ----
           Param_Type := Standard_String;
        end if;
  
!       if not Overloaded and then No (Entity (Func_Name)) then
           --  The aspect is specified by a subprogram name, which
           --  may be an operator name given originally by a string.
  
*************** package body Sem_Ch13 is
*** 17295,17303 ****
     procedure Validate_Storage_Model_Type_Aspect
       (Typ : Entity_Id; ASN : Node_Id)
     is
!       Assoc  : Node_Id;
!       Choice : Entity_Id;
!       Expr   : Node_Id;
  
        Address_Type_Id : Entity_Id := Empty;
        Null_Address_Id : Entity_Id := Empty;
--- 17440,17449 ----
     procedure Validate_Storage_Model_Type_Aspect
       (Typ : Entity_Id; ASN : Node_Id)
     is
!       Assoc       : Node_Id;
!       Choice      : Entity_Id;
!       Choice_Name : Name_Id;
!       Expr        : Node_Id;
  
        Address_Type_Id : Entity_Id := Empty;
        Null_Address_Id : Entity_Id := Empty;
*************** package body Sem_Ch13 is
*** 17307,17313 ****
--- 17453,17501 ----
        Copy_To_Id      : Entity_Id := Empty;
        Storage_Size_Id : Entity_Id := Empty;
  
+       procedure Check_And_Resolve_Storage_Model_Type_Argument
+         (Expr        : Node_Id;
+          Typ         : Entity_Id;
+          Argument_Id : in out Entity_Id;
+          Nam         : Name_Id);
+       --  Checks that the subaspect for Nam has not already been specified for
+       --  Typ's Storage_Model_Type aspect (i.e., checks Argument_Id = Empty),
+       --  resolves Expr, and sets Argument_Id to the entity resolved for Expr.
+ 
+       procedure Check_And_Resolve_Storage_Model_Type_Argument
+         (Expr        : Node_Id;
+          Typ         : Entity_Id;
+          Argument_Id : in out Entity_Id;
+          Nam         : Name_Id)
+       is
+          Name_String : String := Get_Name_String (Nam);
+ 
+       begin
+          To_Mixed (Name_String);
+ 
+          if Present (Argument_Id) then
+             Error_Msg_String (1 .. Name_String'Length) := Name_String;
+             Error_Msg_Strlen := Name_String'Length;
+ 
+             Error_Msg_N ("~ already specified", Expr);
+          end if;
+ 
+          Resolve_Storage_Model_Type_Argument (Expr, Typ, Address_Type_Id, Nam);
+          Argument_Id := Entity (Expr);
+       end Check_And_Resolve_Storage_Model_Type_Argument;
+ 
+    --  Start of processing for Validate_Storage_Model_Type_Aspect
+ 
     begin
+       --  The aggregate argument of Storage_Model_Type is optional, and when
+       --  not present the aspect defaults to the native storage model (where
+       --  the address type is System.Address, and other arguments default to
+       --  the corresponding native storage operations).
+ 
+       if No (Expression (ASN)) then
+          return;
+       end if;
+ 
        --  Each expression must resolve to an entity of the right kind or proper
        --  profile.
  
*************** package body Sem_Ch13 is
*** 17318,17382 ****
  
           Choice := First (Choices (Assoc));
  
           if Nkind (Choice) /= N_Identifier or else Present (Next (Choice)) then
              Error_Msg_N ("illegal name in association", Choice);
  
!          elsif Chars (Choice) = Name_Address_Type then
              if Assoc /= First (Component_Associations (Expression (ASN))) then
                 Error_Msg_N ("Address_Type must be first association", Choice);
              end if;
  
!             Resolve_Storage_Model_Type_Argument
                (Expr, Typ, Address_Type_Id, Name_Address_Type);
-             Address_Type_Id := Entity (Expr);
  
!          --  Shouldn't we check for duplicates of the same subaspect name,
!          --  and issue an error in such cases???
  
!          elsif not Present (Address_Type_Id) then
!             Error_Msg_N
!               ("Address_Type missing, must be first association", Choice);
  
!          elsif Chars (Choice) = Name_Null_Address then
!             Resolve_Storage_Model_Type_Argument
!               (Expr, Typ, Address_Type_Id, Name_Null_Address);
!             Null_Address_Id := Entity (Expr);
  
!          elsif Chars (Choice) = Name_Allocate then
!             Resolve_Storage_Model_Type_Argument
!               (Expr, Typ, Address_Type_Id, Name_Allocate);
!             Allocate_Id := Entity (Expr);
  
!          elsif Chars (Choice) = Name_Deallocate then
!             Resolve_Storage_Model_Type_Argument
!               (Expr, Typ, Address_Type_Id, Name_Deallocate);
!             Deallocate_Id := Entity (Expr);
  
!          elsif Chars (Choice) = Name_Copy_From then
!             Resolve_Storage_Model_Type_Argument
!               (Expr, Typ, Address_Type_Id, Name_Copy_From);
!             Copy_From_Id := Entity (Expr);
  
!          elsif Chars (Choice) = Name_Copy_To then
!             Resolve_Storage_Model_Type_Argument
!               (Expr, Typ, Address_Type_Id, Name_Copy_To);
!             Copy_To_Id := Entity (Expr);
  
!          elsif Chars (Choice) = Name_Storage_Size then
!             Resolve_Storage_Model_Type_Argument
!               (Expr, Typ, Address_Type_Id, Name_Storage_Size);
!             Storage_Size_Id := Entity (Expr);
  
!          else
!             Error_Msg_N
!               ("invalid name for Storage_Model_Type argument", Choice);
           end if;
  
           Next (Assoc);
        end loop;
  
!       if No (Address_Type_Id) then
!          Error_Msg_N ("match for Address_Type not found", ASN);
  
        elsif No (Null_Address_Id) then
           Error_Msg_N ("match for Null_Address primitive not found", ASN);
--- 17506,17572 ----
  
           Choice := First (Choices (Assoc));
  
+          Choice_Name := Chars (Choice);
+ 
           if Nkind (Choice) /= N_Identifier or else Present (Next (Choice)) then
              Error_Msg_N ("illegal name in association", Choice);
  
!          elsif Choice_Name = Name_Address_Type then
              if Assoc /= First (Component_Associations (Expression (ASN))) then
                 Error_Msg_N ("Address_Type must be first association", Choice);
              end if;
  
!             Check_And_Resolve_Storage_Model_Type_Argument
                (Expr, Typ, Address_Type_Id, Name_Address_Type);
  
!          else
!             --  It's allowed to leave out the Address_Type argument, in which
!             --  case the address type is defined to default to System.Address.
  
!             if No (Address_Type_Id) then
!                Address_Type_Id := RTE (RE_Address);
!             end if;
  
!             if Choice_Name = Name_Null_Address then
!                Check_And_Resolve_Storage_Model_Type_Argument
!                  (Expr, Typ, Null_Address_Id, Name_Null_Address);
  
!             elsif Choice_Name = Name_Allocate then
!                Check_And_Resolve_Storage_Model_Type_Argument
!                  (Expr, Typ, Allocate_Id, Name_Allocate);
  
!             elsif Choice_Name = Name_Deallocate then
!                Check_And_Resolve_Storage_Model_Type_Argument
!                  (Expr, Typ, Deallocate_Id, Name_Deallocate);
  
!             elsif Choice_Name = Name_Copy_From then
!                Check_And_Resolve_Storage_Model_Type_Argument
!                  (Expr, Typ, Copy_From_Id, Name_Copy_From);
  
!             elsif Choice_Name = Name_Copy_To then
!                Check_And_Resolve_Storage_Model_Type_Argument
!                  (Expr, Typ, Copy_To_Id, Name_Copy_To);
  
!             elsif Choice_Name = Name_Storage_Size then
!                Check_And_Resolve_Storage_Model_Type_Argument
!                  (Expr, Typ, Storage_Size_Id, Name_Storage_Size);
  
!             else
!                Error_Msg_N
!                  ("invalid name for Storage_Model_Type argument", Choice);
!             end if;
           end if;
  
           Next (Assoc);
        end loop;
  
!       --  If Address_Type has been specified as or defaults to System.Address,
!       --  then other "subaspect" arguments can be specified, but are optional.
!       --  Otherwise, all other arguments are required and an error is flagged
!       --  about any that are missing.
! 
!       if Address_Type_Id = RTE (RE_Address) then
!          return;
  
        elsif No (Null_Address_Id) then
           Error_Msg_N ("match for Null_Address primitive not found", ASN);
*************** package body Sem_Ch13 is
*** 17633,17639 ****
           begin
              --  Skip if function marked as warnings off
  
!             if Warnings_Off (Act_Unit) or else Serious_Errors_Detected > 0 then
                 goto Continue;
              end if;
  
--- 17823,17831 ----
           begin
              --  Skip if function marked as warnings off
  
!             if Has_Warnings_Off (Act_Unit)
!               or else Serious_Errors_Detected > 0
!             then
                 goto Continue;
              end if;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch13.ads gcc-13.1.0/gcc/ada/sem_ch13.ads
*** gcc-12.2.0/gcc/ada/sem_ch13.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch13.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch13 is
*** 130,141 ****
     --  clause, T is the component type.
  
     function Has_Compatible_Representation
!      (Target_Type, Operand_Type : Entity_Id) return Boolean;
!    --  Given two types, where the two types are related by possible derivation,
!    --  determines if the two types have compatible representation, or different
!    --  representations, requiring the special processing for representation
!    --  change. A False result is possible only for array, enumeration or
!    --  record types.
  
     procedure Parse_Aspect_Aggregate
       (N                   : Node_Id;
--- 130,140 ----
     --  clause, T is the component type.
  
     function Has_Compatible_Representation
!      (Target_Typ, Operand_Typ : Entity_Id) return Boolean;
!    --  Given an explicit or implicit conversion from Operand_Typ to Target_Typ,
!    --  determine whether the types have compatible or different representation,
!    --  thus requiring special processing for the conversion in the latter case.
!    --  A False result is possible only for array, enumeration and record types.
  
     procedure Parse_Aspect_Aggregate
       (N                   : Node_Id;
*************** package Sem_Ch13 is
*** 325,330 ****
--- 324,359 ----
     --  Given an entity Typ that denotes a derived type or a subtype, this
     --  routine performs the inheritance of aspects at the freeze point.
  
+    --  ??? Note that, for now, just a limited number of representation aspects
+    --  have been inherited here so far. Many of them are still inherited in
+    --  Sem_Ch3 and need to be dealt with. Here is a non-exhaustive list of
+    --  aspects that likely also need to be moved to this routine: Alignment,
+    --  Component_Alignment, Component_Size, Machine_Radix, Object_Size, Pack,
+    --  Predicates, Preelaborable_Initialization, Size and Small.
+ 
+    procedure Inherit_Delayed_Rep_Aspects (Typ : Entity_Id);
+    --  As discussed in the spec of Aspects (see Aspect_Delay declaration),
+    --  a derived type can inherit aspects from its parent which have been
+    --  specified at the time of the derivation using an aspect, as in:
+    --
+    --    type A is range 1 .. 10
+    --      with Size => Not_Defined_Yet;
+    --    ..
+    --    type B is new A;
+    --    ..
+    --    Not_Defined_Yet : constant := 64;
+    --
+    --  In this example, the Size of A is considered to be specified prior
+    --  to the derivation, and thus inherited, even though the value is not
+    --  known at the time of derivation. To deal with this, we use two entity
+    --  flags. The flag Has_Derived_Rep_Aspects is set in the parent type (A
+    --  here), and then the flag May_Inherit_Delayed_Rep_Aspects is set in
+    --  the derived type (B here). If this flag is set when the derived type
+    --  is frozen, then this procedure is called to ensure proper inheritance
+    --  of all delayed aspects from the parent type.
+ 
+    --  ??? Obviously we ought not to have two mechanisms to do the same thing
+ 
     procedure Resolve_Aspect_Expressions (E : Entity_Id);
     --  Name resolution of an aspect expression happens at the end of the
     --  current declarative part or at the freeze point for the entity,
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch2.adb gcc-13.1.0/gcc/ada/sem_ch2.adb
*** gcc-12.2.0/gcc/ada/sem_ch2.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch2.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 26,39 ****
--- 26,43 ----
  with Atree;          use Atree;
  with Einfo;          use Einfo;
  with Einfo.Utils;    use Einfo.Utils;
+ with Ghost;          use Ghost;
  with Namet;          use Namet;
+ with Nlists;         use Nlists;
  with Opt;            use Opt;
  with Restrict;       use Restrict;
  with Rident;         use Rident;
+ with Sem;            use Sem;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Dim;        use Sem_Dim;
  with Sinfo;          use Sinfo;
  with Sinfo.Nodes;    use Sinfo.Nodes;
+ with Sinfo.Utils;    use Sinfo.Utils;
  with Stand;          use Stand;
  with Uintp;          use Uintp;
  
*************** package body Sem_Ch2 is
*** 77,82 ****
--- 81,98 ----
           Find_Direct_Name (N);
        end if;
  
+       --  A Ghost entity must appear in a specific context. Only do this
+       --  checking on non-overloaded expressions, as otherwise we need to
+       --  wait for resolution, and the checking is done in Resolve_Entity_Name.
+ 
+       if Nkind (N) in N_Expanded_Name | N_Identifier
+         and then Present (Entity (N))
+         and then Is_Ghost_Entity (Entity (N))
+         and then not Is_Overloaded (N)
+       then
+          Check_Ghost_Context (Entity (N), N);
+       end if;
+ 
        Analyze_Dimension (N);
     end Analyze_Identifier;
  
*************** package body Sem_Ch2 is
*** 105,110 ****
--- 121,143 ----
        Set_Is_Static_Expression (N);
     end Analyze_Integer_Literal;
  
+    -----------------------------------------
+    -- Analyze_Interpolated_String_Literal --
+    -----------------------------------------
+ 
+    procedure Analyze_Interpolated_String_Literal (N : Node_Id) is
+       Str_Elem : Node_Id;
+ 
+    begin
+       Set_Etype (N, Any_String);
+ 
+       Str_Elem := First (Expressions (N));
+       while Present (Str_Elem) loop
+          Analyze (Str_Elem);
+          Next (Str_Elem);
+       end loop;
+    end Analyze_Interpolated_String_Literal;
+ 
     --------------------------
     -- Analyze_Real_Literal --
     --------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch2.ads gcc-13.1.0/gcc/ada/sem_ch2.ads
*** gcc-12.2.0/gcc/ada/sem_ch2.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch2.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Types; use Types;
*** 27,37 ****
  
  package Sem_Ch2 is
  
!    procedure Analyze_Character_Literal (N : Node_Id);
!    procedure Analyze_Identifier        (N : Node_Id);
!    procedure Analyze_Integer_Literal   (N : Node_Id);
!    procedure Analyze_Real_Literal      (N : Node_Id);
!    procedure Analyze_String_Literal    (N : Node_Id);
  
  private
     pragma Inline (Analyze_Character_Literal);
--- 27,38 ----
  
  package Sem_Ch2 is
  
!    procedure Analyze_Character_Literal           (N : Node_Id);
!    procedure Analyze_Identifier                  (N : Node_Id);
!    procedure Analyze_Integer_Literal             (N : Node_Id);
!    procedure Analyze_Interpolated_String_Literal (N : Node_Id);
!    procedure Analyze_Real_Literal                (N : Node_Id);
!    procedure Analyze_String_Literal              (N : Node_Id);
  
  private
     pragma Inline (Analyze_Character_Literal);
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch3.adb gcc-13.1.0/gcc/ada/sem_ch3.adb
*** gcc-12.2.0/gcc/ada/sem_ch3.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch3.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
*************** with Exp_Disp;       use Exp_Disp;
*** 40,45 ****
--- 41,47 ----
  with Exp_Dist;       use Exp_Dist;
  with Exp_Tss;        use Exp_Tss;
  with Exp_Util;       use Exp_Util;
+ with Expander;       use Expander;
  with Freeze;         use Freeze;
  with Ghost;          use Ghost;
  with Itypes;         use Itypes;
*************** with Sem_Cat;        use Sem_Cat;
*** 60,65 ****
--- 62,68 ----
  with Sem_Ch6;        use Sem_Ch6;
  with Sem_Ch7;        use Sem_Ch7;
  with Sem_Ch8;        use Sem_Ch8;
+ with Sem_Ch10;       use Sem_Ch10;
  with Sem_Ch13;       use Sem_Ch13;
  with Sem_Dim;        use Sem_Dim;
  with Sem_Disp;       use Sem_Disp;
*************** with Tbuild;         use Tbuild;
*** 85,90 ****
--- 88,94 ----
  with Ttypes;         use Ttypes;
  with Uintp;          use Uintp;
  with Urealp;         use Urealp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Ch3 is
  
*************** package body Sem_Ch3 is
*** 723,738 ****
     --  sets the flags SSO_Set_Low_By_Default/SSO_Set_High_By_Default according
     --  to the setting of Opt.Default_SSO.
  
-    function Should_Build_Subtype (T : Entity_Id) return Boolean;
-    --  When analyzing components or object declarations, it is possible, in
-    --  some cases, to build subtypes for discriminated types. This is
-    --  worthwhile to avoid the backend allocating the maximum possible size for
-    --  objects of the type.
-    --  In particular, when T is limited, the discriminants and therefore the
-    --  size of an object of type T cannot change. Furthermore, if T is definite
-    --  with statically initialized defaulted discriminants, we are able and
-    --  want to build a constrained subtype of the right size.
- 
     procedure Signed_Integer_Type_Declaration (T : Entity_Id; Def : Node_Id);
     --  Create a new signed integer entity, and apply the constraint to obtain
     --  the required first named subtype of this type.
--- 727,732 ----
*************** package body Sem_Ch3 is
*** 874,882 ****
              Mutate_Ekind (Anon_Type, E_Anonymous_Access_Subprogram_Type);
           end if;
  
-          Set_Can_Use_Internal_Rep
-            (Anon_Type, not Always_Compatible_Rep_On_Target);
- 
           --  If the anonymous access is associated with a protected operation,
           --  create a reference to it after the enclosing protected definition
           --  because the itype will be used in the subsequent bodies.
--- 868,873 ----
*************** package body Sem_Ch3 is
*** 1329,1335 ****
  
        Check_Restriction (No_Access_Subprograms, T_Def);
  
!       Create_Extra_Formals (Desig_Type);
     end Access_Subprogram_Declaration;
  
     ----------------------------
--- 1320,1327 ----
  
        Check_Restriction (No_Access_Subprograms, T_Def);
  
!       --  Addition of extra formals must be delayed till the freeze point so
!       --  that we know the convention.
     end Access_Subprogram_Declaration;
  
     ----------------------------
*************** package body Sem_Ch3 is
*** 2215,2221 ****
  
        --  When possible, build the default subtype
  
!       if Should_Build_Subtype (T) then
           declare
              Act_T : constant Entity_Id := Build_Default_Subtype (T, N);
  
--- 2207,2213 ----
  
        --  When possible, build the default subtype
  
!       if Build_Default_Subtype_OK (T) then
           declare
              Act_T : constant Entity_Id := Build_Default_Subtype (T, N);
  
*************** package body Sem_Ch3 is
*** 2679,2685 ****
                    --  Is_Conjunction_Of_Formal_Preelab_Init_Attributes goes to
                    --  Original_Node if needed, hence test for Standard_False.)
  
!                   if not Present (Expr)
                      or else (Is_Entity_Name (Expr)
                                and then Entity (Expr) = Standard_True)
                      or else
--- 2671,2677 ----
                    --  Is_Conjunction_Of_Formal_Preelab_Init_Attributes goes to
                    --  Original_Node if needed, hence test for Standard_False.)
  
!                   if No (Expr)
                      or else (Is_Entity_Name (Expr)
                                and then Entity (Expr) = Standard_True)
                      or else
*************** package body Sem_Ch3 is
*** 2951,2957 ****
           --  Verify that all abstract states found in any package declared in
           --  the input declarative list have proper refinements. The check is
           --  performed only when the context denotes a block, entry, package,
!          --  protected, subprogram, or task body (SPARK RM 7.2.2(3)).
  
           Check_State_Refinements (Context);
  
--- 2943,2950 ----
           --  Verify that all abstract states found in any package declared in
           --  the input declarative list have proper refinements. The check is
           --  performed only when the context denotes a block, entry, package,
!          --  protected, subprogram, or task body (SPARK RM 7.1.4(4) and SPARK
!          --  RM 7.2.2(3)).
  
           Check_State_Refinements (Context);
  
*************** package body Sem_Ch3 is
*** 3157,3163 ****
          and then Present (Full_View (Prev))
        then
           T := Full_View (Prev);
!          Set_Incomplete_View (N, Parent (Prev));
        else
           T := Prev;
        end if;
--- 3150,3156 ----
          and then Present (Full_View (Prev))
        then
           T := Full_View (Prev);
!          Set_Incomplete_View (N, Prev);
        else
           T := Prev;
        end if;
*************** package body Sem_Ch3 is
*** 3478,3483 ****
--- 3471,3484 ----
        then
           Check_Nonoverridable_Aspects;
        end if;
+ 
+       --  Check for tagged type declaration at library level
+ 
+       if Is_Tagged_Type (T)
+         and then not Is_Library_Level_Entity (T)
+       then
+          Check_Restriction (No_Local_Tagged_Types, T);
+       end if;
     end Analyze_Full_Type_Declaration;
  
     ----------------------------------
*************** package body Sem_Ch3 is
*** 3522,3528 ****
        --  Initialize the list of primitive operations to an empty list,
        --  to cover tagged types as well as untagged types. For untagged
        --  types this is used either to analyze the call as legal when
!       --  Extensions_Allowed is True, or to issue a better error message
        --  otherwise.
  
        Set_Direct_Primitive_Operations (T, New_Elmt_List);
--- 3523,3529 ----
        --  Initialize the list of primitive operations to an empty list,
        --  to cover tagged types as well as untagged types. For untagged
        --  types this is used either to analyze the call as legal when
!       --  Core_Extensions_Allowed is True, or to issue a better error message
        --  otherwise.
  
        Set_Direct_Primitive_Operations (T, New_Elmt_List);
*************** package body Sem_Ch3 is
*** 3780,3785 ****
--- 3781,3791 ----
        --  Obj_Decl carrying type Obj_Typ has explicit initialization. Emit
        --  a compile-time warning if this is not the case.
  
+       procedure Check_Return_Subtype_Indication (Obj_Decl : Node_Id);
+       --  Check that the return subtype indication properly matches the result
+       --  subtype of the function in an extended return object declaration, as
+       --  required by RM 6.5(5.1/2-5.3/2).
+ 
        function Count_Tasks (T : Entity_Id) return Uint;
        --  This function is called when a non-generic library level object of a
        --  task type is declared. Its function is to count the static number of
*************** package body Sem_Ch3 is
*** 3953,3958 ****
--- 3959,4092 ----
           Check_Component (Obj_Typ, Obj_Decl);
        end Check_For_Null_Excluding_Components;
  
+       -------------------------------------
+       -- Check_Return_Subtype_Indication --
+       -------------------------------------
+ 
+       procedure Check_Return_Subtype_Indication (Obj_Decl : Node_Id) is
+          Obj_Id  : constant Entity_Id := Defining_Identifier (Obj_Decl);
+          Obj_Typ : constant Entity_Id := Etype (Obj_Id);
+          Func_Id : constant Entity_Id := Return_Applies_To (Scope (Obj_Id));
+          R_Typ   : constant Entity_Id := Etype (Func_Id);
+          Indic   : constant Node_Id   :=
+                      Object_Definition (Original_Node (Obj_Decl));
+ 
+          procedure Error_No_Match (N : Node_Id);
+          --  Output error messages for case where types do not statically
+          --  match. N is the location for the messages.
+ 
+          --------------------
+          -- Error_No_Match --
+          --------------------
+ 
+          procedure Error_No_Match (N : Node_Id) is
+          begin
+             Error_Msg_N
+               ("subtype must statically match function result subtype", N);
+ 
+             if not Predicates_Match (Obj_Typ, R_Typ) then
+                Error_Msg_Node_2 := R_Typ;
+                Error_Msg_NE
+                  ("\predicate of& does not match predicate of&",
+                   N, Obj_Typ);
+             end if;
+          end Error_No_Match;
+ 
+       --  Start of processing for Check_Return_Subtype_Indication
+ 
+       begin
+          --  First, avoid cascaded errors
+ 
+          if Error_Posted (Obj_Decl) or else Error_Posted (Indic) then
+             return;
+          end if;
+ 
+          --  "return access T" case; check that the return statement also has
+          --  "access T", and that the subtypes statically match:
+          --   if this is an access to subprogram the signatures must match.
+ 
+          if Is_Anonymous_Access_Type (R_Typ) then
+             if Is_Anonymous_Access_Type (Obj_Typ) then
+                if Ekind (Designated_Type (Obj_Typ)) /= E_Subprogram_Type
+                then
+                   if Base_Type (Designated_Type (Obj_Typ)) /=
+                      Base_Type (Designated_Type (R_Typ))
+                     or else not Subtypes_Statically_Match (Obj_Typ, R_Typ)
+                   then
+                      Error_No_Match (Subtype_Mark (Indic));
+                   end if;
+ 
+                else
+                   --  For two anonymous access to subprogram types, the types
+                   --  themselves must be type conformant.
+ 
+                   if not Conforming_Types
+                            (Obj_Typ, R_Typ, Fully_Conformant)
+                   then
+                      Error_No_Match (Indic);
+                   end if;
+                end if;
+ 
+             else
+                Error_Msg_N ("must use anonymous access type", Indic);
+             end if;
+ 
+          --  If the return object is of an anonymous access type, then report
+          --  an error if the function's result type is not also anonymous.
+ 
+          elsif Is_Anonymous_Access_Type (Obj_Typ) then
+             pragma Assert (not Is_Anonymous_Access_Type (R_Typ));
+             Error_Msg_N
+               ("anonymous access not allowed for function with named access "
+                & "result", Indic);
+ 
+          --  Subtype indication case: check that the return object's type is
+          --  covered by the result type, and that the subtypes statically match
+          --  when the result subtype is constrained. Also handle record types
+          --  with unknown discriminants for which we have built the underlying
+          --  record view. Coverage is needed to allow specific-type return
+          --  objects when the result type is class-wide (see AI05-32).
+ 
+          elsif Covers (Base_Type (R_Typ), Base_Type (Obj_Typ))
+            or else (Is_Underlying_Record_View (Base_Type (Obj_Typ))
+                      and then
+                        Covers
+                          (Base_Type (R_Typ),
+                           Underlying_Record_View (Base_Type (Obj_Typ))))
+          then
+             --  A null exclusion may be present on the return type, on the
+             --  function specification, on the object declaration or on the
+             --  subtype itself.
+ 
+             if Is_Access_Type (R_Typ)
+               and then
+                 (Can_Never_Be_Null (R_Typ)
+                   or else Null_Exclusion_Present (Parent (Func_Id))) /=
+                             Can_Never_Be_Null (Obj_Typ)
+             then
+                Error_No_Match (Indic);
+             end if;
+ 
+             --  AI05-103: for elementary types, subtypes must statically match
+ 
+             if Is_Constrained (R_Typ) or else Is_Access_Type (R_Typ) then
+                if not Subtypes_Statically_Match (Obj_Typ, R_Typ) then
+                   Error_No_Match (Indic);
+                end if;
+             end if;
+ 
+          --  All remaining cases are illegal
+ 
+          --  Note: previous versions of this subprogram allowed the return
+          --  value to be the ancestor of the return type if the return type
+          --  was a null extension. This was plainly incorrect.
+ 
+          else
+             Error_Msg_N
+               ("wrong type for return_subtype_indication", Indic);
+          end if;
+       end Check_Return_Subtype_Indication;
+ 
        -----------------
        -- Count_Tasks --
        -----------------
*************** package body Sem_Ch3 is
*** 4046,4052 ****
  
        Prev_Entity       : Entity_Id := Empty;
        Related_Id        : Entity_Id;
-       Full_View_Present : Boolean := False;
  
     --  Start of processing for Analyze_Object_Declaration
  
--- 4180,4185 ----
*************** package body Sem_Ch3 is
*** 4562,4572 ****
              null;
  
           --  Do not generate a predicate check if the initialization expression
!          --  is a type conversion because the conversion has been subjected to
!          --  the same check. This is a small optimization which avoid redundant
           --  checks.
  
!          elsif Present (E) and then Nkind (E) = N_Type_Conversion then
              null;
  
           else
--- 4695,4709 ----
              null;
  
           --  Do not generate a predicate check if the initialization expression
!          --  is a type conversion whose target subtype statically matches the
!          --  object's subtype because the conversion has been subjected to the
!          --  same check. This is a small optimization which avoids redundant
           --  checks.
  
!          elsif Present (E)
!            and then Nkind (E) in N_Type_Conversion
!            and then Subtypes_Statically_Match (Etype (Subtype_Mark (E)), T)
!          then
              null;
  
           else
*************** package body Sem_Ch3 is
*** 4721,4726 ****
--- 4858,4883 ----
                    Expand_Sliding_Conversion (E, T);
                 end if;
  
+                if In_Spec_Expression and then In_Declare_Expr > 0 then
+                   --  It is too early to be doing expansion-ish things,
+                   --  so exit early. But we have to set Ekind (Id) now so
+                   --  that subsequent uses of this entity are not rejected
+                   --  via the same mechanism that (correctly) rejects
+                   --  "X : Integer := X;".
+ 
+                   if Constant_Present (N) then
+                      Mutate_Ekind         (Id, E_Constant);
+                      Set_Is_True_Constant (Id);
+                   else
+                      Mutate_Ekind (Id, E_Variable);
+                      if Present (E) then
+                         Set_Has_Initial_Value (Id);
+                      end if;
+                   end if;
+ 
+                   goto Leave;
+                end if;
+ 
                 Expand_Subtype_From_Expr
                   (N             => N,
                    Unc_Type      => T,
*************** package body Sem_Ch3 is
*** 4731,4758 ****
                 Act_T := Find_Type_Of_Object (Object_Definition (N), N);
              end if;
  
!             --  Propagate attributes to full view when needed
  
!             Set_Is_Constr_Subt_For_U_Nominal (Act_T);
  
!             if Is_Private_Type (Act_T) and then Present (Full_View (Act_T))
!             then
!                Full_View_Present := True;
!             end if;
  
!             if Full_View_Present then
!                Set_Is_Constr_Subt_For_U_Nominal (Full_View (Act_T));
!             end if;
  
!             if Aliased_Present (N) then
!                Set_Is_Constr_Subt_For_UN_Aliased (Act_T);
  
!                if Full_View_Present then
!                   Set_Is_Constr_Subt_For_UN_Aliased (Full_View (Act_T));
!                end if;
              end if;
  
-             Freeze_Before (N, Act_T);
              Freeze_Before (N, T);
           end if;
  
--- 4888,4919 ----
                 Act_T := Find_Type_Of_Object (Object_Definition (N), N);
              end if;
  
!             if Act_T /= T then
!                declare
!                   Full_View_Present : constant Boolean :=
!                     Is_Private_Type (Act_T)
!                       and then Present (Full_View (Act_T));
!                   --  Propagate attributes to full view when needed
  
!                begin
!                   Set_Is_Constr_Subt_For_U_Nominal (Act_T);
  
!                   if Full_View_Present then
!                      Set_Is_Constr_Subt_For_U_Nominal (Full_View (Act_T));
!                   end if;
  
!                   if Aliased_Present (N) then
!                      Set_Is_Constr_Subt_For_UN_Aliased (Act_T);
  
!                      if Full_View_Present then
!                         Set_Is_Constr_Subt_For_UN_Aliased (Full_View (Act_T));
!                      end if;
!                   end if;
  
!                   Freeze_Before (N, Act_T);
!                end;
              end if;
  
              Freeze_Before (N, T);
           end if;
  
*************** package body Sem_Ch3 is
*** 4766,4785 ****
           if not Is_Entity_Name (Object_Definition (N)) then
              Act_T := Etype (E);
              Check_Compile_Time_Size (Act_T);
- 
-             if Aliased_Present (N) then
-                Set_Is_Constr_Subt_For_UN_Aliased (Act_T);
-             end if;
           end if;
  
           --  When the given object definition and the aggregate are specified
           --  independently, and their lengths might differ do a length check.
           --  This cannot happen if the aggregate is of the form (others =>...)
  
!          if not Is_Constrained (T) then
!             null;
! 
!          elsif Nkind (E) = N_Raise_Constraint_Error then
  
              --  Aggregate is statically illegal. Place back in declaration
  
--- 4927,4939 ----
           if not Is_Entity_Name (Object_Definition (N)) then
              Act_T := Etype (E);
              Check_Compile_Time_Size (Act_T);
           end if;
  
           --  When the given object definition and the aggregate are specified
           --  independently, and their lengths might differ do a length check.
           --  This cannot happen if the aggregate is of the form (others =>...)
  
!          if Nkind (E) = N_Raise_Constraint_Error then
  
              --  Aggregate is statically illegal. Place back in declaration
  
*************** package body Sem_Ch3 is
*** 4804,4810 ****
  
        --  When possible, build the default subtype
  
!       elsif Should_Build_Subtype (T) then
           if No (E) then
              Act_T := Build_Default_Subtype (T, N);
           else
--- 4958,4964 ----
  
        --  When possible, build the default subtype
  
!       elsif Build_Default_Subtype_OK (T) then
           if No (E) then
              Act_T := Build_Default_Subtype (T, N);
           else
*************** package body Sem_Ch3 is
*** 5026,5031 ****
--- 5180,5191 ----
           end if;
        end if;
  
+       --  Check specific legality rules for a return object
+ 
+       if Is_Return_Object (Id) then
+          Check_Return_Subtype_Indication (N);
+       end if;
+ 
        --  Some simple constant-propagation: if the expression is a constant
        --  string initialized with a literal, share the literal. This avoids
        --  a run-time copy.
*************** package body Sem_Ch3 is
*** 5044,5084 ****
           end;
        end if;
  
-       --  Another optimization: if the nominal subtype is unconstrained and
-       --  the expression is a function call that returns an unconstrained
-       --  type, rewrite the declaration as a renaming of the result of the
-       --  call. The exceptions below are cases where the copy is expected,
-       --  either by the back end (Aliased case) or by the semantics, as for
-       --  initializing controlled types or copying tags for class-wide types.
- 
-       if Present (E)
-         and then Nkind (E) = N_Explicit_Dereference
-         and then Nkind (Original_Node (E)) = N_Function_Call
-         and then not Is_Library_Level_Entity (Id)
-         and then not Is_Constrained (Underlying_Type (T))
-         and then not Is_Aliased (Id)
-         and then not Is_Class_Wide_Type (T)
-         and then not Is_Controlled (T)
-         and then not Has_Controlled_Component (Base_Type (T))
-         and then Expander_Active
-       then
-          Rewrite (N,
-            Make_Object_Renaming_Declaration (Loc,
-              Defining_Identifier => Id,
-              Access_Definition   => Empty,
-              Subtype_Mark        => New_Occurrence_Of
-                                       (Base_Type (Etype (Id)), Loc),
-              Name                => E));
- 
-          Set_Renamed_Object (Id, E);
- 
-          --  Force generation of debugging information for the constant and for
-          --  the renamed function call.
- 
-          Set_Debug_Info_Needed (Id);
-          Set_Debug_Info_Needed (Entity (Prefix (E)));
-       end if;
- 
        if Present (Prev_Entity)
          and then Is_Frozen (Prev_Entity)
          and then not Error_Posted (Id)
--- 5204,5209 ----
*************** package body Sem_Ch3 is
*** 5426,5432 ****
        --  Finally this happens in some complex cases when validity checks are
        --  enabled, where the same subtype declaration may be analyzed twice.
        --  This can happen if the subtype is created by the preanalysis of
!       --  an attribute tht gives the range of a loop statement, and the loop
        --  itself appears within an if_statement that will be rewritten during
        --  expansion.
  
--- 5551,5557 ----
        --  Finally this happens in some complex cases when validity checks are
        --  enabled, where the same subtype declaration may be analyzed twice.
        --  This can happen if the subtype is created by the preanalysis of
!       --  an attribute that gives the range of a loop statement, and the loop
        --  itself appears within an if_statement that will be rewritten during
        --  expansion.
  
*************** package body Sem_Ch3 is
*** 5768,5774 ****
                    --  operations to an empty list.
  
                    if Is_Tagged_Type (Id)
!                     or else Extensions_Allowed
                    then
                       Set_Direct_Primitive_Operations (Id, New_Elmt_List);
                    end if;
--- 5893,5899 ----
                    --  operations to an empty list.
  
                    if Is_Tagged_Type (Id)
!                     or else Core_Extensions_Allowed
                    then
                       Set_Direct_Primitive_Operations (Id, New_Elmt_List);
                    end if;
*************** package body Sem_Ch3 is
*** 5848,5854 ****
           --  Inherit Subprograms_For_Type from the full view, if present
  
           if Present (Full_View (T))
!            and then Subprograms_For_Type (Full_View (T)) /= No_Elist
           then
              Set_Subprograms_For_Type
                (Id, Subprograms_For_Type (Full_View (T)));
--- 5973,5979 ----
           --  Inherit Subprograms_For_Type from the full view, if present
  
           if Present (Full_View (T))
!            and then Present (Subprograms_For_Type (Full_View (T)))
           then
              Set_Subprograms_For_Type
                (Id, Subprograms_For_Type (Full_View (T)));
*************** package body Sem_Ch3 is
*** 5968,5974 ****
        if Nkind (Subtype_Indication (N)) = N_Subtype_Indication then
           declare
              Indic_Typ    : constant Entity_Id :=
!                              Etype (Subtype_Mark (Subtype_Indication (N)));
              Subt_Index   : Node_Id;
              Target_Index : Node_Id;
  
--- 6093,6099 ----
        if Nkind (Subtype_Indication (N)) = N_Subtype_Indication then
           declare
              Indic_Typ    : constant Entity_Id :=
!               Underlying_Type (Etype (Subtype_Mark (Subtype_Indication (N))));
              Subt_Index   : Node_Id;
              Target_Index : Node_Id;
  
*************** package body Sem_Ch3 is
*** 7450,7461 ****
              Analyze (High_Bound (Range_Expression (Constraint (Indic))));
           end if;
  
!          --  Introduce an implicit base type for the derived type even if there
           --  is no constraint attached to it, since this seems closer to the
!          --  Ada semantics. Build a full type declaration tree for the derived
!          --  type using the implicit base type as the defining identifier. Then
!          --  build a subtype declaration tree which applies the constraint (if
!          --  any) have it replace the derived type declaration.
  
           Literal := First_Literal (Parent_Type);
           Literals_List := New_List;
--- 7575,7587 ----
              Analyze (High_Bound (Range_Expression (Constraint (Indic))));
           end if;
  
!          --  Create an implicit base type for the derived type even if there
           --  is no constraint attached to it, since this seems closer to the
!          --  Ada semantics. Use an Itype like for the implicit base type of
!          --  other kinds of derived type, but build a full type declaration
!          --  for it so as to analyze the new literals properly. Then build a
!          --  subtype declaration tree which applies the constraint (if any)
!          --  and have it replace the derived type declaration.
  
           Literal := First_Literal (Parent_Type);
           Literals_List := New_List;
*************** package body Sem_Ch3 is
*** 7488,7495 ****
           end loop;
  
           Implicit_Base :=
!            Make_Defining_Identifier (Sloc (Derived_Type),
!              Chars => New_External_Name (Chars (Derived_Type), 'B'));
  
           --  Indicate the proper nature of the derived type. This must be done
           --  before analysis of the literals, to recognize cases when a literal
--- 7614,7620 ----
           end loop;
  
           Implicit_Base :=
!            Create_Itype (E_Enumeration_Type, N, Derived_Type, 'B');
  
           --  Indicate the proper nature of the derived type. This must be done
           --  before analysis of the literals, to recognize cases when a literal
*************** package body Sem_Ch3 is
*** 7502,7513 ****
           Type_Decl :=
             Make_Full_Type_Declaration (Loc,
               Defining_Identifier => Implicit_Base,
-              Discriminant_Specifications => No_List,
               Type_Definition =>
                 Make_Enumeration_Type_Definition (Loc, Literals_List));
  
!          Mark_Rewrite_Insertion (Type_Decl);
!          Insert_Before (N, Type_Decl);
           Analyze (Type_Decl);
  
           --  The anonymous base now has a full declaration, but this base
--- 7627,7638 ----
           Type_Decl :=
             Make_Full_Type_Declaration (Loc,
               Defining_Identifier => Implicit_Base,
               Type_Definition =>
                 Make_Enumeration_Type_Definition (Loc, Literals_List));
  
!          --  Do not insert the declarationn, just analyze it in the context
! 
!          Set_Parent (Type_Decl, Parent (N));
           Analyze (Type_Decl);
  
           --  The anonymous base now has a full declaration, but this base
*************** package body Sem_Ch3 is
*** 7808,7842 ****
        --  must be converted to the derived type.
  
        Convert_Scalar_Bounds (N, Parent_Type, Derived_Type, Loc);
- 
-       --  The implicit_base should be frozen when the derived type is frozen,
-       --  but note that it is used in the conversions of the bounds. For fixed
-       --  types we delay the determination of the bounds until the proper
-       --  freezing point. For other numeric types this is rejected by GCC, for
-       --  reasons that are currently unclear (???), so we choose to freeze the
-       --  implicit base now. In the case of integers and floating point types
-       --  this is harmless because subsequent representation clauses cannot
-       --  affect anything, but it is still baffling that we cannot use the
-       --  same mechanism for all derived numeric types.
- 
-       --  There is a further complication: actually some representation
-       --  clauses can affect the implicit base type. For example, attribute
-       --  definition clauses for stream-oriented attributes need to set the
-       --  corresponding TSS entries on the base type, and this normally
-       --  cannot be done after the base type is frozen, so the circuitry in
-       --  Sem_Ch13.New_Stream_Subprogram must account for this possibility
-       --  and not use Set_TSS in this case.
- 
-       --  There are also consequences for the case of delayed representation
-       --  aspects for some cases. For example, a Size aspect is delayed and
-       --  should not be evaluated to the freeze point. This early freezing
-       --  means that the size attribute evaluation happens too early???
- 
-       if Is_Fixed_Point_Type (Parent_Type) then
-          Conditional_Delay (Implicit_Base, Parent_Type);
-       else
-          Freeze_Before (N, Implicit_Base);
-       end if;
     end Build_Derived_Numeric_Type;
  
     --------------------------------
--- 7933,7938 ----
*************** package body Sem_Ch3 is
*** 11037,11042 ****
--- 11133,11146 ----
           Subp := Node (Elmt);
           Alias_Subp := Alias (Subp);
  
+          --  If the parent type is untagged, then no overriding error checks
+          --  are needed (such as in the case of an implicit full type for
+          --  a derived type whose parent is an untagged private type with
+          --  a tagged full type).
+ 
+          if not Is_Tagged_Type (Etype (T)) then
+             null;
+ 
           --  Inherited subprograms are identified by the fact that they do not
           --  come from source, and the associated source location is the
           --  location of the first subtype of the derived type.
*************** package body Sem_Ch3 is
*** 11055,11061 ****
           --  overriding in Ada 2005, but wrappers need to be built for them
           --  (see exp_ch3, Build_Controlling_Function_Wrappers).
  
!          if Is_Null_Extension (T)
             and then Has_Controlling_Result (Subp)
             and then Ada_Version >= Ada_2005
             and then Present (Alias_Subp)
--- 11159,11165 ----
           --  overriding in Ada 2005, but wrappers need to be built for them
           --  (see exp_ch3, Build_Controlling_Function_Wrappers).
  
!          elsif Is_Null_Extension (T)
             and then Has_Controlling_Result (Subp)
             and then Ada_Version >= Ada_2005
             and then Present (Alias_Subp)
*************** package body Sem_Ch3 is
*** 11109,11115 ****
              --  with the aliased entity (otherwise we generate a duplicated
              --  error message).
  
!            and then not Present (Interface_Alias (Subp))
           then
              if Present (Alias_Subp) then
  
--- 11213,11219 ----
              --  with the aliased entity (otherwise we generate a duplicated
              --  error message).
  
!            and then No (Interface_Alias (Subp))
           then
              if Present (Alias_Subp) then
  
*************** package body Sem_Ch3 is
*** 11591,11600 ****
  
              if H = Typ then
                 Set_Name_Entity_Id (Chars (Typ), Homonym (Typ));
              else
!                while Present (H)
!                  and then Homonym (H) /= Typ
!                loop
                    H := Homonym (Typ);
                 end loop;
  
--- 11695,11703 ----
  
              if H = Typ then
                 Set_Name_Entity_Id (Chars (Typ), Homonym (Typ));
+ 
              else
!                while Present (Homonym (H)) and then Homonym (H) /= Typ loop
                    H := Homonym (Typ);
                 end loop;
  
*************** package body Sem_Ch3 is
*** 11604,11619 ****
              Insert_Before (Typ_Decl, Decl);
              Analyze (Decl);
              Set_Full_View (Inc_T, Typ);
  
!             if Is_Tagged then
! 
!                --  Create a common class-wide type for both views, and set the
!                --  Etype of the class-wide type to the full view.
  
                 Make_Class_Wide_Type (Inc_T);
                 Set_Class_Wide_Type (Typ, Class_Wide_Type (Inc_T));
                 Set_Etype (Class_Wide_Type (Typ), Typ);
              end if;
           end if;
        end Build_Incomplete_Type_Declaration;
  
--- 11707,11754 ----
              Insert_Before (Typ_Decl, Decl);
              Analyze (Decl);
              Set_Full_View (Inc_T, Typ);
+             Set_Incomplete_View (Typ_Decl, Inc_T);
  
!             --  If the type is tagged, create a common class-wide type for
!             --  both views, and set the Etype of the class-wide type to the
!             --  full view.
  
+             if Is_Tagged then
                 Make_Class_Wide_Type (Inc_T);
                 Set_Class_Wide_Type (Typ, Class_Wide_Type (Inc_T));
                 Set_Etype (Class_Wide_Type (Typ), Typ);
              end if;
+ 
+             --  If the scope is a package with a limited view, create a shadow
+             --  entity for the incomplete type like Build_Limited_Views, so as
+             --  to make it possible for Remove_Limited_With_Unit to reinstall
+             --  this incomplete type as the visible entity.
+ 
+             if Ekind (Scope (Inc_T)) = E_Package
+               and then Present (Limited_View (Scope (Inc_T)))
+             then
+                declare
+                   Shadow : constant Entity_Id := Make_Temporary (Loc, 'Z');
+ 
+                begin
+                   --  This is modeled on Build_Shadow_Entity
+ 
+                   Set_Chars              (Shadow, Chars (Inc_T));
+                   Set_Parent             (Shadow, Decl);
+                   Decorate_Type          (Shadow, Scope (Inc_T), Is_Tagged);
+                   Set_Is_Internal        (Shadow);
+                   Set_From_Limited_With  (Shadow);
+                   Set_Non_Limited_View   (Shadow, Inc_T);
+                   Set_Private_Dependents (Shadow, New_Elmt_List);
+ 
+                   if Is_Tagged then
+                      Set_Non_Limited_View
+                        (Class_Wide_Type (Shadow), Class_Wide_Type (Inc_T));
+                   end if;
+ 
+                   Append_Entity (Shadow, Limited_View (Scope (Inc_T)));
+                end;
+             end if;
           end if;
        end Build_Incomplete_Type_Declaration;
  
*************** package body Sem_Ch3 is
*** 11796,11806 ****
           Insert_Before (Typ_Decl, Decl);
           Analyze (Decl);
  
!          --  If an access to subprogram, create the extra formals
! 
!          if Present (Acc_Def) then
!             Create_Extra_Formals (Designated_Type (Anon_Access));
!          end if;
  
           if Nkind (Comp_Def) = N_Component_Definition then
              Rewrite (Comp_Def,
--- 11931,11939 ----
           Insert_Before (Typ_Decl, Decl);
           Analyze (Decl);
  
!          --  At first sight we could add here the extra formals of an access to
!          --  subprogram; however, it must delayed till the freeze point so that
!          --  we know the convention.
  
           if Nkind (Comp_Def) = N_Component_Definition then
              Rewrite (Comp_Def,
*************** package body Sem_Ch3 is
*** 13086,13092 ****
  
        procedure Check_Possible_Deferred_Completion
          (Prev_Id      : Entity_Id;
-          Prev_Obj_Def : Node_Id;
           Curr_Obj_Def : Node_Id);
        --  Determine whether the two object definitions describe the partial
        --  and the full view of a constrained deferred constant. Generate
--- 13219,13224 ----
*************** package body Sem_Ch3 is
*** 13106,13120 ****
  
        procedure Check_Possible_Deferred_Completion
          (Prev_Id      : Entity_Id;
-          Prev_Obj_Def : Node_Id;
           Curr_Obj_Def : Node_Id)
        is
        begin
!          if Nkind (Prev_Obj_Def) = N_Subtype_Indication
!            and then Present (Constraint (Prev_Obj_Def))
!            and then Nkind (Curr_Obj_Def) = N_Subtype_Indication
!            and then Present (Constraint (Curr_Obj_Def))
!          then
              declare
                 Loc    : constant Source_Ptr := Sloc (N);
                 Def_Id : constant Entity_Id  := Make_Temporary (Loc, 'S');
--- 13238,13253 ----
  
        procedure Check_Possible_Deferred_Completion
          (Prev_Id      : Entity_Id;
           Curr_Obj_Def : Node_Id)
        is
+          Curr_Typ : Entity_Id;
+          Prev_Typ : constant Entity_Id := Etype (Prev_Id);
+          Anon_Acc : constant Boolean := Is_Anonymous_Access_Type (Prev_Typ);
+          Mismatch : Boolean := False;
        begin
!          if Anon_Acc then
!             null;
!          elsif Nkind (Curr_Obj_Def) = N_Subtype_Indication then
              declare
                 Loc    : constant Source_Ptr := Sloc (N);
                 Def_Id : constant Entity_Id  := Make_Temporary (Loc, 'S');
*************** package body Sem_Ch3 is
*** 13127,13139 ****
              begin
                 Insert_Before_And_Analyze (N, Decl);
                 Set_Etype (Id, Def_Id);
! 
!                if not Subtypes_Statically_Match (Etype (Prev_Id), Def_Id) then
!                   Error_Msg_Sloc := Sloc (Prev_Id);
!                   Error_Msg_N ("subtype does not statically match deferred "
!                                & "declaration #", N);
!                end if;
              end;
           end if;
        end Check_Possible_Deferred_Completion;
  
--- 13260,13291 ----
              begin
                 Insert_Before_And_Analyze (N, Decl);
                 Set_Etype (Id, Def_Id);
!                Curr_Typ := Def_Id;
              end;
+          else
+             Curr_Typ := Etype (Curr_Obj_Def);
+          end if;
+ 
+          if Anon_Acc then
+             if Nkind (Curr_Obj_Def) /= N_Access_Definition then
+                Mismatch := True;
+             elsif Has_Null_Exclusion (Prev_Typ)
+               and then not Null_Exclusion_Present (Curr_Obj_Def)
+             then
+                Mismatch := True;
+             end if;
+             --  ??? Another check needed: mismatch if disagreement
+             --  between designated types/profiles .
+          else
+             Mismatch :=
+               Is_Constrained (Prev_Typ)
+                 and then not Subtypes_Statically_Match (Prev_Typ, Curr_Typ);
+          end if;
+ 
+          if Mismatch then
+             Error_Msg_Sloc := Sloc (Prev_Id);
+             Error_Msg_N ("subtype does not statically match deferred "
+                          & "declaration #", N);
           end if;
        end Check_Possible_Deferred_Completion;
  
*************** package body Sem_Ch3 is
*** 13276,13282 ****
  
           Check_Possible_Deferred_Completion
             (Prev_Id      => Prev,
-             Prev_Obj_Def => Object_Definition (Parent (Prev)),
              Curr_Obj_Def => Obj_Def);
  
           Set_Full_View (Prev, Id);
--- 13428,13433 ----
*************** package body Sem_Ch3 is
*** 13344,13354 ****
     is
        T             : constant Entity_Id := Entity (Subtype_Mark (S));
        Desig_Type    : constant Entity_Id := Designated_Type (T);
!       Desig_Subtype : Entity_Id := Create_Itype (E_Void, Related_Nod);
        Constraint_OK : Boolean := True;
  
     begin
        if Is_Array_Type (Desig_Type) then
           Constrain_Array (Desig_Subtype, S, Related_Nod, Def_Id, 'P');
  
        elsif (Is_Record_Type (Desig_Type)
--- 13495,13506 ----
     is
        T             : constant Entity_Id := Entity (Subtype_Mark (S));
        Desig_Type    : constant Entity_Id := Designated_Type (T);
!       Desig_Subtype : Entity_Id;
        Constraint_OK : Boolean := True;
  
     begin
        if Is_Array_Type (Desig_Type) then
+          Desig_Subtype := Create_Itype (E_Void, Related_Nod);
           Constrain_Array (Desig_Subtype, S, Related_Nod, Def_Id, 'P');
  
        elsif (Is_Record_Type (Desig_Type)
*************** package body Sem_Ch3 is
*** 13444,13455 ****
--- 13596,13609 ----
              end;
           end if;
  
+          Desig_Subtype := Create_Itype (E_Void, Related_Nod);
           Constrain_Discriminated_Type (Desig_Subtype, S, Related_Nod,
             For_Access => True);
  
        elsif Is_Concurrent_Type (Desig_Type)
          and then not Is_Constrained (Desig_Type)
        then
+          Desig_Subtype := Create_Itype (E_Void, Related_Nod);
           Constrain_Concurrent (Desig_Subtype, S, Related_Nod, Desig_Type, ' ');
  
        else
*************** package body Sem_Ch3 is
*** 13482,13487 ****
--- 13636,13642 ----
        Set_Directly_Designated_Type (Def_Id, Desig_Subtype);
        Set_Depends_On_Private       (Def_Id, Has_Private_Component (Def_Id));
        Set_Is_Access_Constant       (Def_Id, Is_Access_Constant (T));
+       Set_Can_Never_Be_Null        (Def_Id, Can_Never_Be_Null (T));
  
        Conditional_Delay (Def_Id, T);
  
*************** package body Sem_Ch3 is
*** 13551,13556 ****
--- 13706,13713 ----
           T := Designated_Type (T);
        end if;
  
+       T := Underlying_Type (T);
+ 
        --  If an index constraint follows a subtype mark in a subtype indication
        --  then the type or subtype denoted by the subtype mark must not already
        --  impose an index constraint. The subtype mark must denote either an
*************** package body Sem_Ch3 is
*** 13962,13968 ****
                or else D = CR_Discriminant (Discr_Id)
                or else Corresponding_Discriminant (D) = Discr_Id
              then
!                return Node (E);
              end if;
  
              Next_Discriminant (D);
--- 14119,14125 ----
                or else D = CR_Discriminant (Discr_Id)
                or else Corresponding_Discriminant (D) = Discr_Id
              then
!                return New_Copy_Tree (Node (E));
              end if;
  
              Next_Discriminant (D);
*************** package body Sem_Ch3 is
*** 13986,13992 ****
              E := First_Elmt (Constraints);
              while Present (D) loop
                 if D = Discr_Id then
!                   return Node (E);
                 end if;
  
                 Next_Discriminant (D);
--- 14143,14149 ----
              E := First_Elmt (Constraints);
              while Present (D) loop
                 if D = Discr_Id then
!                   return New_Copy_Tree (Node (E));
                 end if;
  
                 Next_Discriminant (D);
*************** package body Sem_Ch3 is
*** 14418,14431 ****
     begin
        Mutate_Ekind (Def_Id, E_Enumeration_Subtype);
  
!       Set_First_Literal     (Def_Id, First_Literal (Base_Type (T)));
  
!       Set_Etype             (Def_Id, Base_Type         (T));
!       Set_Size_Info         (Def_Id,                   (T));
!       Set_First_Rep_Item    (Def_Id, First_Rep_Item    (T));
!       Set_Is_Character_Type (Def_Id, Is_Character_Type (T));
  
!       Set_Scalar_Range_For_Subtype (Def_Id, Range_Expression (C), T);
  
        Set_Discrete_RM_Size (Def_Id);
     end Constrain_Enumeration;
--- 14575,14592 ----
     begin
        Mutate_Ekind (Def_Id, E_Enumeration_Subtype);
  
!       Set_First_Literal            (Def_Id, First_Literal (Base_Type (T)));
!       Set_Etype                    (Def_Id, Base_Type         (T));
!       Set_Size_Info                (Def_Id,                   (T));
!       Set_Is_Character_Type        (Def_Id, Is_Character_Type (T));
!       Set_Scalar_Range_For_Subtype (Def_Id, Range_Expression (C), T);
  
!       --  Inherit the chain of representation items instead of replacing it
!       --  because Build_Derived_Enumeration_Type rewrites the declaration of
!       --  the derived type as a subtype declaration and the former needs to
!       --  preserve existing representation items (see Build_Derived_Type).
  
!       Inherit_Rep_Item_Chain (Def_Id, T);
  
        Set_Discrete_RM_Size (Def_Id);
     end Constrain_Enumeration;
*************** package body Sem_Ch3 is
*** 14541,14547 ****
           --  in various places for an Empty upper bound, and in any case it
           --  accurately characterizes the index's range of values.
  
!          if Nkind (S) = N_Range and then not Present (High_Bound (S)) then
              Is_FLB_Index := True;
              Set_High_Bound (S, Type_High_Bound (T));
           end if;
--- 14702,14708 ----
           --  in various places for an Empty upper bound, and in any case it
           --  accurately characterizes the index's range of values.
  
!          if Nkind (S) = N_Range and then No (High_Bound (S)) then
              Is_FLB_Index := True;
              Set_High_Bound (S, Type_High_Bound (T));
           end if;
*************** package body Sem_Ch3 is
*** 16033,16044 ****
           Next_Formal (Formal);
        end loop;
  
!       --  Extra formals are shared between the parent subprogram and the
!       --  derived subprogram (implicit in the above copy of formals), unless
!       --  the parent type is a limited interface type; hence we must inherit
!       --  also the reference to the first extra formal. When the parent type is
!       --  an interface the extra formals will be added when the subprogram is
!       --  frozen (see Freeze.Freeze_Subprogram).
  
        if not Is_Limited_Interface (Parent_Type) then
           Set_Extra_Formals (New_Subp, Extra_Formals (Parent_Subp));
--- 16194,16205 ----
           Next_Formal (Formal);
        end loop;
  
!       --  Extra formals are shared between the parent subprogram and this
!       --  internal entity built by Derive_Subprogram (implicit in the above
!       --  copy of formals), unless the parent type is a limited interface type;
!       --  hence we must inherit also the reference to the first extra formal.
!       --  When the parent type is an interface, the extra formals will be added
!       --  when the tagged type is frozen (see Expand_Freeze_Record_Type).
  
        if not Is_Limited_Interface (Parent_Type) then
           Set_Extra_Formals (New_Subp, Extra_Formals (Parent_Subp));
*************** package body Sem_Ch3 is
*** 16079,16085 ****
        Copy_Strub_Mode (New_Subp, Alias (New_Subp));
  
        --  Derived subprograms of a tagged type must inherit the convention
!       --  of the parent subprogram (a requirement of AI-117). Derived
        --  subprograms of untagged types simply get convention Ada by default.
  
        --  If the derived type is a tagged generic formal type with unknown
--- 16240,16246 ----
        Copy_Strub_Mode (New_Subp, Alias (New_Subp));
  
        --  Derived subprograms of a tagged type must inherit the convention
!       --  of the parent subprogram (a requirement of AI95-117). Derived
        --  subprograms of untagged types simply get convention Ada by default.
  
        --  If the derived type is a tagged generic formal type with unknown
*************** package body Sem_Ch3 is
*** 16321,16326 ****
--- 16482,16488 ----
  
        if Ekind (New_Subp) = E_Function then
           Set_Mechanism (New_Subp, Mechanism (Parent_Subp));
+          Set_Returns_By_Ref (New_Subp, Returns_By_Ref (Parent_Subp));
        end if;
  
        --  Ada 2022 (AI12-0279): If a Yield aspect is specified True for a
*************** package body Sem_Ch3 is
*** 16496,16510 ****
  
        --  Local variables
  
!       Alias_Subp   : Entity_Id;
!       Act_List     : Elist_Id;
!       Act_Elmt     : Elmt_Id;
!       Act_Subp     : Entity_Id := Empty;
!       Elmt         : Elmt_Id;
!       Need_Search  : Boolean   := False;
!       New_Subp     : Entity_Id := Empty;
!       Parent_Base  : Entity_Id;
!       Subp         : Entity_Id;
  
     --  Start of processing for Derive_Subprograms
  
--- 16658,16672 ----
  
        --  Local variables
  
!       Alias_Subp  : Entity_Id;
!       Act_List    : Elist_Id;
!       Act_Elmt    : Elmt_Id;
!       Act_Subp    : Entity_Id := Empty;
!       Elmt        : Elmt_Id;
!       Need_Search : Boolean   := False;
!       New_Subp    : Entity_Id;
!       Parent_Base : Entity_Id;
!       Subp        : Entity_Id;
  
     --  Start of processing for Derive_Subprograms
  
*************** package body Sem_Ch3 is
*** 16719,16727 ****
                         (Is_Generic_Unit
                            (Scope (Find_Dispatching_Type (Alias_Subp)))
                           or else
!                            Instantiation_Depth
!                              (Sloc (Find_Dispatching_Type (Alias_Subp))) > 0);
! 
                       declare
                          Iface_Prim_Loc : constant Source_Ptr :=
                                           Original_Location (Sloc (Alias_Subp));
--- 16881,16889 ----
                         (Is_Generic_Unit
                            (Scope (Find_Dispatching_Type (Alias_Subp)))
                           or else
!                            Instantiation_Location
!                              (Sloc (Find_Dispatching_Type (Alias_Subp)))
!                                /= No_Location);
                       declare
                          Iface_Prim_Loc : constant Source_Ptr :=
                                           Original_Location (Sloc (Alias_Subp));
*************** package body Sem_Ch3 is
*** 16783,16789 ****
              --   have such primitives.
  
              if Present (Generic_Actual)
!               and then not Present (Act_Subp)
                and then Is_Limited_Interface (Parent_Base)
                and then Is_Predefined_Interface_Primitive (Subp)
              then
--- 16945,16951 ----
              --   have such primitives.
  
              if Present (Generic_Actual)
!               and then No (Act_Subp)
                and then Is_Limited_Interface (Parent_Base)
                and then Is_Predefined_Interface_Primitive (Subp)
              then
*************** package body Sem_Ch3 is
*** 16966,16976 ****
            Low_Bound  => Lo,
            High_Bound => Hi));
  
!       Conditional_Delay (Derived_Type, Parent_Type);
! 
!       Mutate_Ekind (Derived_Type, E_Enumeration_Subtype);
!       Set_Etype (Derived_Type, Implicit_Base);
!       Set_Size_Info         (Derived_Type, Parent_Type);
  
        if not Known_RM_Size (Derived_Type) then
           Set_RM_Size (Derived_Type, RM_Size (Parent_Type));
--- 17128,17136 ----
            Low_Bound  => Lo,
            High_Bound => Hi));
  
!       Mutate_Ekind  (Derived_Type, E_Enumeration_Subtype);
!       Set_Etype     (Derived_Type, Implicit_Base);
!       Set_Size_Info (Derived_Type, Parent_Type);
  
        if not Known_RM_Size (Derived_Type) then
           Set_RM_Size (Derived_Type, RM_Size (Parent_Type));
*************** package body Sem_Ch3 is
*** 16989,17004 ****
        end if;
  
        Convert_Scalar_Bounds (N, Parent_Type, Derived_Type, Loc);
- 
-       --  Because the implicit base is used in the conversion of the bounds, we
-       --  have to freeze it now. This is similar to what is done for numeric
-       --  types, and it equally suspicious, but otherwise a nonstatic bound
-       --  will have a reference to an unfrozen type, which is rejected by Gigi
-       --  (???). This requires specific care for definition of stream
-       --  attributes. For details, see comments at the end of
-       --  Build_Derived_Numeric_Type.
- 
-       Freeze_Before (N, Implicit_Base);
     end Derived_Standard_Character;
  
     ------------------------------
--- 17149,17154 ----
*************** package body Sem_Ch3 is
*** 18229,18235 ****
  
     begin
        --  If the parent is a component_definition node we climb to the
!       --  component_declaration node
  
        if Nkind (P) = N_Component_Definition then
           P := Parent (P);
--- 18379,18385 ----
  
     begin
        --  If the parent is a component_definition node we climb to the
!       --  component_declaration node.
  
        if Nkind (P) = N_Component_Definition then
           P := Parent (P);
*************** package body Sem_Ch3 is
*** 18266,18272 ****
           --  If In_Spec_Expression, for example within a pre/postcondition,
           --  provide enough information for use of the subtype without
           --  depending on full analysis and freezing, which will happen when
!          --  building the correspondiing subprogram.
  
           if In_Spec_Expression then
              Analyze (Subtype_Mark (Obj_Def));
--- 18416,18422 ----
           --  If In_Spec_Expression, for example within a pre/postcondition,
           --  provide enough information for use of the subtype without
           --  depending on full analysis and freezing, which will happen when
!          --  building the corresponding subprogram.
  
           if In_Spec_Expression then
              Analyze (Subtype_Mark (Obj_Def));
*************** package body Sem_Ch3 is
*** 20156,20161 ****
--- 20306,20312 ----
  
        case Nkind (Original_Node (Exp)) is
           when N_Aggregate
+             | N_Delta_Aggregate
              | N_Extension_Aggregate
              | N_Function_Call
              | N_Op
*************** package body Sem_Ch3 is
*** 20184,20203 ****
           =>
              return not Comes_From_Source (Exp)
                and then
!                 --  If the conversion has been rewritten, check Original_Node
! 
!                 ((Original_Node (Exp) /= Exp
!                    and then
!                      OK_For_Limited_Init_In_05 (Typ, Original_Node (Exp)))
! 
!                   --  Otherwise, check the expression of the compiler-generated
!                   --  conversion (which is a conversion that we want to ignore
!                   --  for purposes of the limited-initialization restrictions).
  
!                   or else
!                     (Original_Node (Exp) = Exp
!                       and then
!                         OK_For_Limited_Init_In_05 (Typ, Expression (Exp))));
  
           when N_Explicit_Dereference
              | N_Indexed_Component
--- 20335,20348 ----
           =>
              return not Comes_From_Source (Exp)
                and then
!                 --  If the conversion has been rewritten, check Original_Node;
!                 --  otherwise, check the expression of the compiler-generated
!                 --  conversion (which is a conversion that we want to ignore
!                 --  for purposes of the limited-initialization restrictions).
  
!                 (if Is_Rewrite_Substitution (Exp)
!                  then OK_For_Limited_Init_In_05 (Typ, Original_Node (Exp))
!                  else OK_For_Limited_Init_In_05 (Typ, Expression (Exp)));
  
           when N_Explicit_Dereference
              | N_Indexed_Component
*************** package body Sem_Ch3 is
*** 20387,20392 ****
--- 20532,20571 ----
        In_Assertion_Expr := In_Assertion_Expr - 1;
     end Preanalyze_Assert_Expression;
  
+    --  ??? The variant below explicitly saves and restores all the flags,
+    --  because it is impossible to compose the existing variety of
+    --  Analyze/Resolve (and their wrappers, e.g. Preanalyze_Spec_Expression)
+    --  to achieve the desired semantics.
+ 
+    procedure Preanalyze_Assert_Expression (N : Node_Id) is
+       Save_In_Spec_Expression : constant Boolean := In_Spec_Expression;
+       Save_Must_Not_Freeze    : constant Boolean := Must_Not_Freeze (N);
+       Save_Full_Analysis      : constant Boolean := Full_Analysis;
+ 
+    begin
+       In_Assertion_Expr  := In_Assertion_Expr + 1;
+       In_Spec_Expression := True;
+       Set_Must_Not_Freeze (N);
+       Inside_Preanalysis_Without_Freezing :=
+         Inside_Preanalysis_Without_Freezing + 1;
+       Full_Analysis      := False;
+       Expander_Mode_Save_And_Set (False);
+ 
+       if GNATprove_Mode then
+          Analyze_And_Resolve (N);
+       else
+          Analyze_And_Resolve (N, Suppress => All_Checks);
+       end if;
+ 
+       Expander_Mode_Restore;
+       Full_Analysis      := Save_Full_Analysis;
+       Inside_Preanalysis_Without_Freezing :=
+         Inside_Preanalysis_Without_Freezing - 1;
+       Set_Must_Not_Freeze (N, Save_Must_Not_Freeze);
+       In_Spec_Expression := Save_In_Spec_Expression;
+       In_Assertion_Expr  := In_Assertion_Expr - 1;
+    end Preanalyze_Assert_Expression;
+ 
     -----------------------------------
     -- Preanalyze_Default_Expression --
     -----------------------------------
*************** package body Sem_Ch3 is
*** 20512,20518 ****
              --  its Original_Node points to the old Discr and the access type
              --  for Discr_Type has already been created.
  
!             if Original_Node (Discr) /= Discr then
                 Discr_Type := Etype (Discriminant_Type (Discr));
              else
                 Discr_Type :=
--- 20691,20697 ----
              --  its Original_Node points to the old Discr and the access type
              --  for Discr_Type has already been created.
  
!             if Is_Rewrite_Substitution (Discr) then
                 Discr_Type := Etype (Discriminant_Type (Discr));
              else
                 Discr_Type :=
*************** package body Sem_Ch3 is
*** 22878,22957 ****
        end if;
     end Set_Stored_Constraint_From_Discriminant_Constraint;
  
-    --------------------------
-    -- Should_Build_Subtype --
-    --------------------------
- 
-    function Should_Build_Subtype (T : Entity_Id) return Boolean is
- 
-       function Default_Discriminant_Values_Known_At_Compile_Time
-          (T : Entity_Id) return Boolean;
-          --  For an unconstrained type T, return False if the given type has a
-          --  discriminant with default value not known at compile time. Return
-          --  True otherwise.
- 
-       ---------------------------------------------------------
-       -- Default_Discriminant_Values_Known_At_Compile_Time --
-       ---------------------------------------------------------
- 
-       function Default_Discriminant_Values_Known_At_Compile_Time
-          (T : Entity_Id) return Boolean
-       is
-          Discr : Entity_Id;
-          DDV : Node_Id;
- 
-       begin
- 
-          --  If the type has no discriminant, we know them all at compile time
- 
-          if not Has_Discriminants (T) then
-             return True;
-          end if;
- 
-          --  The type has discriminants, check that none of them has a default
-          --  value not known at compile time.
- 
-          Discr := First_Discriminant (T);
- 
-          while Present (Discr) loop
-             DDV := Discriminant_Default_Value (Discr);
- 
-             if Present (DDV) and then not Compile_Time_Known_Value (DDV) then
-                return False;
-             end if;
- 
-             Next_Discriminant (Discr);
-          end loop;
- 
-          return True;
-       end Default_Discriminant_Values_Known_At_Compile_Time;
- 
-    --  Start of processing for Should_Build_Subtype
- 
-    begin
- 
-       if Is_Constrained (T) then
- 
-          --  We won't build a new subtype if T is constrained
- 
-          return False;
-       end if;
- 
-       if not Default_Discriminant_Values_Known_At_Compile_Time (T) then
- 
-          --  This is a special case of definite subtypes. To allocate a
-          --  specific size to the subtype, we need to know the value at compile
-          --  time. This might not be the case if the default value is the
-          --  result of a function. In that case, the object might be definite
-          --  and limited but the needed size might not be statically known or
-          --  too tricky to obtain. In that case, we will not build the subtype.
- 
-          return False;
-       end if;
- 
-       return Is_Definite_Subtype (T) and then Is_Limited_View (T);
-    end Should_Build_Subtype;
- 
     -------------------------------------
     -- Signed_Integer_Type_Declaration --
     -------------------------------------
--- 23057,23062 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch3.ads gcc-13.1.0/gcc/ada/sem_ch3.ads
*** gcc-12.2.0/gcc/ada/sem_ch3.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch3.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch3 is
*** 235,240 ****
--- 235,243 ----
     --  Wrapper on Preanalyze_Spec_Expression for assertion expressions, so that
     --  In_Assertion_Expr can be properly adjusted.
  
+    procedure Preanalyze_Assert_Expression (N : Node_Id);
+    --  Similar to the above, but without forcing N to be of a particular type
+ 
     procedure Preanalyze_Spec_Expression (N : Node_Id; T : Entity_Id);
     --  Default and per object expressions do not freeze their components, and
     --  must be analyzed and resolved accordingly. The analysis is done by
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch4.adb gcc-13.1.0/gcc/ada/sem_ch4.adb
*** gcc-12.2.0/gcc/ada/sem_ch4.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch4.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Debug;          use Debug;
*************** with Opt;            use Opt;
*** 43,48 ****
--- 44,50 ----
  with Output;         use Output;
  with Restrict;       use Restrict;
  with Rident;         use Rident;
+ with Rtsfind;        use Rtsfind;
  with Sem;            use Sem;
  with Sem_Aux;        use Sem_Aux;
  with Sem_Case;       use Sem_Case;
*************** with Sinfo.Utils;    use Sinfo.Utils;
*** 65,70 ****
--- 67,73 ----
  with Snames;         use Snames;
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Ch4 is
  
*************** package body Sem_Ch4 is
*** 148,157 ****
     --  like a function, but instead of a list of actuals, it is presented with
     --  the operand of the operator node.
  
-    procedure Ambiguous_Operands (N : Node_Id);
-    --  For equality, membership, and comparison operators with overloaded
-    --  arguments, list possible interpretations.
- 
     procedure Analyze_One_Call
        (N          : Node_Id;
         Nam        : Entity_Id;
--- 151,156 ----
*************** package body Sem_Ch4 is
*** 184,195 ****
     --  Analyze_Selected_Component after producing an invalid selector error
     --  message.
  
-    function Defined_In_Scope (T : Entity_Id; S : Entity_Id) return Boolean;
-    --  Verify that type T is declared in scope S. Used to find interpretations
-    --  for operators given by expanded names. This is abstracted as a separate
-    --  function to handle extensions to System, where S is System, but T is
-    --  declared in the extension.
- 
     procedure Find_Arithmetic_Types
       (L, R  : Node_Id;
        Op_Id : Entity_Id;
--- 183,188 ----
*************** package body Sem_Ch4 is
*** 198,209 ****
     --  pairs of interpretations for L and R that have a numeric type consistent
     --  with the semantics of the operator.
  
!    procedure Find_Comparison_Types
       (L, R  : Node_Id;
        Op_Id : Entity_Id;
        N     : Node_Id);
!    --  L and R are operands of a comparison operator. Find consistent pairs of
!    --  interpretations for L and R.
  
     procedure Find_Concatenation_Types
       (L, R  : Node_Id;
--- 191,202 ----
     --  pairs of interpretations for L and R that have a numeric type consistent
     --  with the semantics of the operator.
  
!    procedure Find_Comparison_Equality_Types
       (L, R  : Node_Id;
        Op_Id : Entity_Id;
        N     : Node_Id);
!    --  L and R are operands of a comparison or equality operator. Find valid
!    --  pairs of interpretations for L and R.
  
     procedure Find_Concatenation_Types
       (L, R  : Node_Id;
*************** package body Sem_Ch4 is
*** 211,222 ****
        N     : Node_Id);
     --  For the four varieties of concatenation
  
-    procedure Find_Equality_Types
-      (L, R  : Node_Id;
-       Op_Id : Entity_Id;
-       N     : Node_Id);
-    --  Ditto for equality operators
- 
     procedure Find_Boolean_Types
       (L, R  : Node_Id;
        Op_Id : Entity_Id;
--- 204,209 ----
*************** package body Sem_Ch4 is
*** 229,246 ****
        N     : Node_Id);
     --  Find consistent interpretation for operand of negation operator
  
-    procedure Find_Non_Universal_Interpretations
-      (N     : Node_Id;
-       R     : Node_Id;
-       Op_Id : Entity_Id;
-       T1    : Entity_Id);
-    --  For equality and comparison operators, the result is always boolean, and
-    --  the legality of the operation is determined from the visibility of the
-    --  operand types. If one of the operands has a universal interpretation,
-    --  the legality check uses some compatible non-universal interpretation of
-    --  the other operand. N can be an operator node, or a function call whose
-    --  name is an operator designator.
- 
     function Find_Primitive_Operation (N : Node_Id) return Boolean;
     --  Find candidate interpretations for the name Obj.Proc when it appears in
     --  a subprogram renaming declaration.
--- 216,221 ----
*************** package body Sem_Ch4 is
*** 293,298 ****
--- 268,289 ----
     --  these aspects can be achieved without larger modifications to the
     --  two-pass resolution algorithm.
  
+    function Possible_Type_For_Conditional_Expression
+      (T1, T2 : Entity_Id) return Entity_Id;
+    --  Given two types T1 and T2 that are _not_ compatible, return a type that
+    --  may still be used as the possible type of a conditional expression whose
+    --  dependent expressions, or part thereof, have type T1 and T2 respectively
+    --  during the first phase of type resolution, or Empty if such a type does
+    --  not exist.
+ 
+    --  The typical example is an if_expression whose then_expression is of a
+    --  tagged type and whose else_expresssion is of an extension of this type:
+    --  the types are not compatible but such an if_expression can be legal if
+    --  its expected type is the 'Class of the tagged type, so the function will
+    --  return the tagged type in this case. If the expected type turns out to
+    --  be something else, including the tagged type itself, then an error will
+    --  be given during the second phase of type resolution.
+ 
     procedure Remove_Abstract_Operations (N : Node_Id);
     --  Ada 2005: implementation of AI-310. An abstract non-dispatching
     --  operation is not a candidate interpretation.
*************** package body Sem_Ch4 is
*** 682,691 ****
                 then
                    Def_Id := Make_Temporary (Loc, 'S');
  
!                   Insert_Action (E,
!                     Make_Subtype_Declaration (Loc,
!                       Defining_Identifier => Def_Id,
!                       Subtype_Indication  => Relocate_Node (E)));
  
                    if Sav_Errs /= Serious_Errors_Detected
                      and then Nkind (Constraint (E)) =
--- 673,691 ----
                 then
                    Def_Id := Make_Temporary (Loc, 'S');
  
!                   declare
!                      Subtype_Decl : constant Node_Id :=
!                        Make_Subtype_Declaration (Loc,
!                          Defining_Identifier => Def_Id,
!                          Subtype_Indication  => Relocate_Node (E));
!                   begin
!                      Insert_Action (E, Subtype_Decl);
! 
!                      --  Handle unusual case where Insert_Action does not
!                      --  analyze the declaration. Subtype_Decl must be
!                      --  preanalyzed before call to Process_Subtype below.
!                      Preanalyze (Subtype_Decl);
!                   end;
  
                    if Sav_Errs /= Serious_Errors_Detected
                      and then Nkind (Constraint (E)) =
*************** package body Sem_Ch4 is
*** 734,776 ****
              end;
           end if;
  
!          --  Check for missing initialization. Skip this check if we already
!          --  had errors on analyzing the allocator, since in that case these
!          --  are probably cascaded errors.
  
           if not Is_Definite_Subtype (Type_Id)
             and then Serious_Errors_Detected = Sav_Errs
           then
!             --  The build-in-place machinery may produce an allocator when
!             --  the designated type is indefinite but the underlying type is
!             --  not. In this case the unknown discriminants are meaningless
!             --  and should not trigger error messages. Check the parent node
!             --  because the allocator is marked as coming from source.
! 
!             if Present (Underlying_Type (Type_Id))
!               and then Is_Definite_Subtype (Underlying_Type (Type_Id))
!               and then not Comes_From_Source (Parent (N))
!             then
!                null;
! 
!             --  An unusual case arises when the parent of a derived type is
!             --  a limited record extension  with unknown discriminants, and
!             --  its full view has no discriminants.
!             --
!             --  A more general fix might be to create the proper underlying
!             --  type for such a derived type, but it is a record type with
!             --  no private attributes, so this required extending the
!             --  meaning of this attribute. ???
! 
!             elsif Ekind (Etype (Type_Id)) = E_Record_Type_With_Private
!               and then Present (Underlying_Type (Etype (Type_Id)))
!               and then
!                 not Has_Discriminants (Underlying_Type (Etype (Type_Id)))
!               and then not Comes_From_Source (Parent (N))
!             then
!                null;
! 
!             elsif Is_Class_Wide_Type (Type_Id) then
                 Error_Msg_N
                   ("initialization required in class-wide allocation", N);
  
--- 734,749 ----
              end;
           end if;
  
!          --  Check for missing initialization. Skip this check if the allocator
!          --  is made for a special return object or if we already had errors on
!          --  analyzing the allocator since, in that case, these are very likely
!          --  cascaded errors.
  
           if not Is_Definite_Subtype (Type_Id)
+            and then not For_Special_Return_Object (N)
             and then Serious_Errors_Detected = Sav_Errs
           then
!             if Is_Class_Wide_Type (Type_Id) then
                 Error_Msg_N
                   ("initialization required in class-wide allocation", N);
  
*************** package body Sem_Ch4 is
*** 800,806 ****
                 --  type.
  
                 else
!                   if Original_Node (N) /= N
                      and then Nkind (Original_Node (N)) = N_Allocator
                    then
                       declare
--- 773,779 ----
                 --  type.
  
                 else
!                   if Is_Rewrite_Substitution (N)
                      and then Nkind (Original_Node (N)) = N_Allocator
                    then
                       declare
*************** package body Sem_Ch4 is
*** 843,848 ****
--- 816,842 ----
           Error_Msg_N ("cannot allocate abstract object", E);
        end if;
  
+       Set_Etype (N, Acc_Type);
+ 
+       --  If this is an allocator for the return stack, then no restriction may
+       --  be violated since it's just a low-level access to the primary stack.
+ 
+       if Nkind (Parent (N)) = N_Object_Declaration
+         and then Is_Entity_Name (Object_Definition (Parent (N)))
+         and then Is_Access_Type (Entity (Object_Definition (Parent (N))))
+       then
+          declare
+             Pool : constant Entity_Id :=
+               Associated_Storage_Pool
+                 (Root_Type (Entity (Object_Definition (Parent (N)))));
+ 
+          begin
+             if Present (Pool) and then Is_RTE (Pool, RE_RS_Pool) then
+                goto Leave;
+             end if;
+          end;
+       end if;
+ 
        if Has_Task (Designated_Type (Acc_Type)) then
           Check_Restriction (No_Tasking, N);
           Check_Restriction (Max_Tasks, N);
*************** package body Sem_Ch4 is
*** 894,905 ****
           end if;
        end if;
  
-       Set_Etype (N, Acc_Type);
- 
        if not Is_Library_Level_Entity (Acc_Type) then
           Check_Restriction (No_Local_Allocators, N);
        end if;
  
        if Serious_Errors_Detected > Sav_Errs then
           Set_Error_Posted (N);
           Set_Etype (N, Any_Type);
--- 888,898 ----
           end if;
        end if;
  
        if not Is_Library_Level_Entity (Acc_Type) then
           Check_Restriction (No_Local_Allocators, N);
        end if;
  
+    <<Leave>>
        if Serious_Errors_Detected > Sav_Errs then
           Set_Error_Posted (N);
           Set_Etype (N, Any_Type);
*************** package body Sem_Ch4 is
*** 911,922 ****
     ---------------------------
  
     procedure Analyze_Arithmetic_Op (N : Node_Id) is
!       L     : constant Node_Id := Left_Opnd (N);
!       R     : constant Node_Id := Right_Opnd (N);
        Op_Id : Entity_Id;
  
     begin
        Candidate_Type := Empty;
        Analyze_Expression (L);
        Analyze_Expression (R);
  
--- 904,918 ----
     ---------------------------
  
     procedure Analyze_Arithmetic_Op (N : Node_Id) is
!       L : constant Node_Id := Left_Opnd (N);
!       R : constant Node_Id := Right_Opnd (N);
! 
        Op_Id : Entity_Id;
  
     begin
+       Set_Etype (N, Any_Type);
        Candidate_Type := Empty;
+ 
        Analyze_Expression (L);
        Analyze_Expression (R);
  
*************** package body Sem_Ch4 is
*** 926,947 ****
        --  and we do not need to collect interpretations, instead we just get
        --  the single possible interpretation.
  
!       Op_Id := Entity (N);
  
-       if Present (Op_Id) then
           if Ekind (Op_Id) = E_Operator then
-             Set_Etype (N, Any_Type);
              Find_Arithmetic_Types (L, R, Op_Id, N);
           else
-             Set_Etype (N, Any_Type);
              Add_One_Interp (N, Op_Id, Etype (Op_Id));
           end if;
  
        --  Entity is not already set, so we do need to collect interpretations
  
        else
-          Set_Etype (N, Any_Type);
- 
           Op_Id := Get_Name_Entity_Id (Chars (N));
           while Present (Op_Id) loop
              if Ekind (Op_Id) = E_Operator
--- 922,939 ----
        --  and we do not need to collect interpretations, instead we just get
        --  the single possible interpretation.
  
!       if Present (Entity (N)) then
!          Op_Id := Entity (N);
  
           if Ekind (Op_Id) = E_Operator then
              Find_Arithmetic_Types (L, R, Op_Id, N);
           else
              Add_One_Interp (N, Op_Id, Etype (Op_Id));
           end if;
  
        --  Entity is not already set, so we do need to collect interpretations
  
        else
           Op_Id := Get_Name_Entity_Id (Chars (N));
           while Present (Op_Id) loop
              if Ekind (Op_Id) = E_Operator
*************** package body Sem_Ch4 is
*** 1266,1284 ****
           --  If the nonoverloaded interpretation is a call to an abstract
           --  nondispatching operation, then flag an error and return.
  
-          --  Should this be incorporated in Remove_Abstract_Operations (which
-          --  currently only deals with cases where the name is overloaded)? ???
- 
           if Is_Overloadable (Nam_Ent)
             and then Is_Abstract_Subprogram (Nam_Ent)
             and then not Is_Dispatching_Operation (Nam_Ent)
           then
!             Set_Etype (N, Any_Type);
! 
!             Error_Msg_Sloc := Sloc (Nam_Ent);
!             Error_Msg_NE
!               ("cannot call abstract operation& declared#", N, Nam_Ent);
! 
              return;
           end if;
  
--- 1258,1268 ----
           --  If the nonoverloaded interpretation is a call to an abstract
           --  nondispatching operation, then flag an error and return.
  
           if Is_Overloadable (Nam_Ent)
             and then Is_Abstract_Subprogram (Nam_Ent)
             and then not Is_Dispatching_Operation (Nam_Ent)
           then
!             Nondispatching_Call_To_Abstract_Operation (N, Nam_Ent);
              return;
           end if;
  
*************** package body Sem_Ch4 is
*** 1479,1490 ****
        end if;
  
        --  Check the accessibility level for actuals for explicitly aliased
!       --  formals.
  
        if Nkind (N) = N_Function_Call
          and then Comes_From_Source (N)
          and then Present (Nam_Ent)
          and then In_Return_Value (N)
        then
           declare
              Form : Node_Id;
--- 1463,1479 ----
        end if;
  
        --  Check the accessibility level for actuals for explicitly aliased
!       --  formals when a function call appears within a return statement.
!       --  This is only checked if the enclosing subprogram Comes_From_Source,
!       --  to avoid issuing errors on calls occurring in wrapper subprograms
!       --  (for example, where the call is part of an expression of an aspect
!       --  associated with a wrapper, such as Pre'Class).
  
        if Nkind (N) = N_Function_Call
          and then Comes_From_Source (N)
          and then Present (Nam_Ent)
          and then In_Return_Value (N)
+         and then Comes_From_Source (Current_Subprogram)
        then
           declare
              Form : Node_Id;
*************** package body Sem_Ch4 is
*** 1588,1597 ****
--- 1577,1606 ----
     -----------------------------
  
     procedure Analyze_Case_Expression (N : Node_Id) is
+       Expr      : constant Node_Id := Expression (N);
+       First_Alt : constant Node_Id := First (Alternatives (N));
+ 
+       First_Expr : Node_Id := Empty;
+       --  First expression in the case where there is some type information
+       --  available, i.e. there is not Any_Type everywhere, which can happen
+       --  because of some error.
+ 
+       Second_Expr : Node_Id := Empty;
+       --  Second expression as above
+ 
+       Wrong_Alt : Node_Id := Empty;
+       --  For error reporting
+ 
        procedure Non_Static_Choice_Error (Choice : Node_Id);
        --  Error routine invoked by the generic instantiation below when
        --  the case expression has a non static choice.
  
+       procedure Check_Next_Expression (T : Entity_Id; Alt : Node_Id);
+       --  Check one interpretation of the next expression with type T
+ 
+       procedure Check_Expression_Pair (T1, T2 : Entity_Id; Alt : Node_Id);
+       --  Check first expression with type T1 and next expression with type T2
+ 
        package Case_Choices_Analysis is new
          Generic_Analyze_Choices
            (Process_Associated_Node => No_OP);
*************** package body Sem_Ch4 is
*** 1614,1636 ****
             ("choice given in case expression is not static!", Choice);
        end Non_Static_Choice_Error;
  
!       --  Local variables
  
!       Expr      : constant Node_Id := Expression (N);
!       Alt       : Node_Id;
!       Exp_Type  : Entity_Id;
!       Exp_Btype : Entity_Id;
  
!       FirstX : Node_Id := Empty;
!       --  First expression in the case for which there is some type information
!       --  available, i.e. it is not Any_Type, which can happen because of some
!       --  error, or from the use of e.g. raise Constraint_Error.
  
!       Others_Present : Boolean;
!       --  Indicates if Others was present
  
!       Wrong_Alt : Node_Id := Empty;
!       --  For error reporting
  
     --  Start of processing for Analyze_Case_Expression
  
--- 1623,1703 ----
             ("choice given in case expression is not static!", Choice);
        end Non_Static_Choice_Error;
  
!       ---------------------------
!       -- Check_Next_Expression --
!       ---------------------------
  
!       procedure Check_Next_Expression (T : Entity_Id; Alt : Node_Id) is
!          Next_Expr : constant Node_Id := Expression (Alt);
  
!          I     : Interp_Index;
!          It    : Interp;
  
!       begin
!          if Next_Expr = First_Expr then
!             Check_Next_Expression (T, Next (Alt));
!             return;
!          end if;
  
!          --  Loop through the interpretations of the next expression
! 
!          if not Is_Overloaded (Next_Expr) then
!             Check_Expression_Pair (T, Etype (Next_Expr), Alt);
! 
!          else
!             Get_First_Interp (Next_Expr, I, It);
!             while Present (It.Typ) loop
!                Check_Expression_Pair (T, It.Typ, Alt);
!                Get_Next_Interp (I, It);
!             end loop;
!          end if;
!       end Check_Next_Expression;
! 
!       ---------------------------
!       -- Check_Expression_Pair --
!       ---------------------------
! 
!       procedure Check_Expression_Pair (T1, T2 : Entity_Id; Alt : Node_Id) is
!          Next_Expr : constant Node_Id := Expression (Alt);
! 
!          T : Entity_Id;
! 
!       begin
!          if Covers (T1 => T1, T2 => T2)
!            or else Covers (T1 => T2, T2 => T1)
!          then
!             T := Specific_Type (T1, T2);
! 
!          elsif Is_User_Defined_Literal (First_Expr, T2) then
!             T := T2;
! 
!          elsif Is_User_Defined_Literal (Next_Expr, T1) then
!             T := T1;
! 
!          else
!             T := Possible_Type_For_Conditional_Expression (T1, T2);
! 
!             if No (T) then
!                Wrong_Alt := Alt;
!                return;
!             end if;
!          end if;
! 
!          if Present (Next (Alt)) then
!             Check_Next_Expression (T, Next (Alt));
!          else
!             Add_One_Interp (N, T, T);
!          end if;
!       end Check_Expression_Pair;
! 
!       --  Local variables
! 
!       Alt            : Node_Id;
!       Exp_Type       : Entity_Id;
!       Exp_Btype      : Entity_Id;
!       I              : Interp_Index;
!       It             : Interp;
!       Others_Present : Boolean;
  
     --  Start of processing for Analyze_Case_Expression
  
*************** package body Sem_Ch4 is
*** 1640,1655 ****
        Exp_Type := Etype (Expr);
        Exp_Btype := Base_Type (Exp_Type);
  
!       Alt := First (Alternatives (N));
        while Present (Alt) loop
           if Error_Posted (Expression (Alt)) then
              return;
           end if;
  
!          Analyze (Expression (Alt));
  
!          if No (FirstX) and then Etype (Expression (Alt)) /= Any_Type then
!             FirstX := Expression (Alt);
           end if;
  
           Next (Alt);
--- 1707,1729 ----
        Exp_Type := Etype (Expr);
        Exp_Btype := Base_Type (Exp_Type);
  
!       Set_Etype (N, Any_Type);
! 
!       Alt := First_Alt;
        while Present (Alt) loop
           if Error_Posted (Expression (Alt)) then
              return;
           end if;
  
!          Analyze_Expression (Expression (Alt));
  
!          if Etype (Expression (Alt)) /= Any_Type then
!             if No (First_Expr) then
!                First_Expr := Expression (Alt);
! 
!             elsif No (Second_Expr) then
!                Second_Expr := Expression (Alt);
!             end if;
           end if;
  
           Next (Alt);
*************** package body Sem_Ch4 is
*** 1658,1704 ****
        --  Get our initial type from the first expression for which we got some
        --  useful type information from the expression.
  
!       if No (FirstX) then
           return;
        end if;
  
-       if not Is_Overloaded (FirstX) then
-          Set_Etype (N, Etype (FirstX));
- 
-       else
-          declare
-             I  : Interp_Index;
-             It : Interp;
- 
-          begin
-             Set_Etype (N, Any_Type);
- 
-             Get_First_Interp (FirstX, I, It);
-             while Present (It.Nam) loop
- 
-                --  For each interpretation of the first expression, we only
-                --  add the interpretation if every other expression in the
-                --  case expression alternatives has a compatible type.
- 
-                Alt := Next (First (Alternatives (N)));
-                while Present (Alt) loop
-                   exit when not Has_Compatible_Type (Expression (Alt), It.Typ);
-                   Next (Alt);
-                end loop;
- 
-                if No (Alt) then
-                   Add_One_Interp (N, It.Typ, It.Typ);
-                else
-                   Wrong_Alt := Alt;
-                end if;
- 
-                Get_Next_Interp (I, It);
-             end loop;
-          end;
-       end if;
- 
-       Exp_Btype := Base_Type (Exp_Type);
- 
        --  The expression must be of a discrete type which must be determinable
        --  independently of the context in which the expression occurs, but
        --  using the fact that the expression must be of a discrete type.
--- 1732,1741 ----
        --  Get our initial type from the first expression for which we got some
        --  useful type information from the expression.
  
!       if No (First_Expr) then
           return;
        end if;
  
        --  The expression must be of a discrete type which must be determinable
        --  independently of the context in which the expression occurs, but
        --  using the fact that the expression must be of a discrete type.
*************** package body Sem_Ch4 is
*** 1710,1716 ****
        if Exp_Btype = Any_Discrete or else Exp_Btype = Any_Type then
           return;
  
!       --  Special casee message for character literal
  
        elsif Exp_Btype = Any_Character then
           Error_Msg_N
--- 1747,1753 ----
        if Exp_Btype = Any_Discrete or else Exp_Btype = Any_Type then
           return;
  
!       --  Special case message for character literal
  
        elsif Exp_Btype = Any_Character then
           Error_Msg_N
*************** package body Sem_Ch4 is
*** 1718,1730 ****
           return;
        end if;
  
-       if Etype (N) = Any_Type and then Present (Wrong_Alt) then
-          Error_Msg_N
-            ("type incompatible with that of previous alternatives",
-             Expression (Wrong_Alt));
-          return;
-       end if;
- 
        --  If the case expression is a formal object of mode in out, then
        --  treat it as having a nonstatic subtype by forcing use of the base
        --  type (which has to get passed to Check_Case_Choices below). Also
--- 1755,1760 ----
*************** package body Sem_Ch4 is
*** 1757,1809 ****
           if Exp_Type = Universal_Integer and then not Others_Present then
              Error_Msg_N
                ("case on universal integer requires OTHERS choice", Expr);
           end if;
        end if;
-    end Analyze_Case_Expression;
  
!    ---------------------------
!    -- Analyze_Comparison_Op --
!    ---------------------------
! 
!    procedure Analyze_Comparison_Op (N : Node_Id) is
!       L     : constant Node_Id := Left_Opnd (N);
!       R     : constant Node_Id := Right_Opnd (N);
!       Op_Id : Entity_Id        := Entity (N);
  
!    begin
!       Set_Etype (N, Any_Type);
!       Candidate_Type := Empty;
  
!       Analyze_Expression (L);
!       Analyze_Expression (R);
  
!       if Present (Op_Id) then
!          if Ekind (Op_Id) = E_Operator then
!             Find_Comparison_Types (L, R, Op_Id, N);
           else
!             Add_One_Interp (N, Op_Id, Etype (Op_Id));
!          end if;
! 
!          if Is_Overloaded (L) then
!             Set_Etype (L, Intersect_Types (L, R));
           end if;
  
        else
!          Op_Id := Get_Name_Entity_Id (Chars (N));
!          while Present (Op_Id) loop
!             if Ekind (Op_Id) = E_Operator then
!                Find_Comparison_Types (L, R, Op_Id, N);
              else
!                Analyze_User_Defined_Binary_Op (N, Op_Id);
              end if;
  
!             Op_Id := Homonym (Op_Id);
           end loop;
        end if;
  
!       Operator_Check (N);
!       Check_Function_Writable_Actuals (N);
!    end Analyze_Comparison_Op;
  
     ---------------------------
     -- Analyze_Concatenation --
--- 1787,1877 ----
           if Exp_Type = Universal_Integer and then not Others_Present then
              Error_Msg_N
                ("case on universal integer requires OTHERS choice", Expr);
+             return;
           end if;
        end if;
  
!       --  RM 4.5.7(10/3): If the case_expression is the operand of a type
!       --  conversion, the type of the case_expression is the target type
!       --  of the conversion.
  
!       if Nkind (Parent (N)) = N_Type_Conversion then
!          Set_Etype (N, Etype (Parent (N)));
!          return;
!       end if;
  
!       --  Loop through the interpretations of the first expression and check
!       --  the other expressions if present.
  
!       if not Is_Overloaded (First_Expr) then
!          if Present (Second_Expr) then
!             Check_Next_Expression (Etype (First_Expr), First_Alt);
           else
!             Set_Etype (N, Etype (First_Expr));
           end if;
  
        else
!          Get_First_Interp (First_Expr, I, It);
!          while Present (It.Typ) loop
!             if Present (Second_Expr) then
!                Check_Next_Expression (It.Typ, First_Alt);
              else
!                Add_One_Interp (N, It.Typ, It.Typ);
              end if;
  
!             Get_Next_Interp (I, It);
           end loop;
        end if;
  
!       --  If no possible interpretation has been found, the type of the wrong
!       --  alternative doesn't match any interpretation of the FIRST expression.
! 
!       if Etype (N) = Any_Type and then Present (Wrong_Alt) then
!          Second_Expr := Expression (Wrong_Alt);
! 
!          if Is_Overloaded (First_Expr) then
!             if Is_Overloaded (Second_Expr) then
!                Error_Msg_N
!                  ("no interpretation compatible with those of previous "
!                   & "alternative",
!                   Second_Expr);
!             else
!                Error_Msg_N
!                  ("type incompatible with interpretations of previous "
!                   & "alternative",
!                   Second_Expr);
!                Error_Msg_NE
!                  ("\this alternative has}!",
!                   Second_Expr,
!                   Etype (Second_Expr));
!             end if;
! 
!          else
!             if Is_Overloaded (Second_Expr) then
!                Error_Msg_N
!                  ("no interpretation compatible with type of previous "
!                   & "alternative",
!                   Second_Expr);
!                Error_Msg_NE
!                  ("\previous alternative has}!",
!                   Second_Expr,
!                   Etype (First_Expr));
!             else
!                Error_Msg_N
!                  ("type incompatible with that of previous alternative",
!                   Second_Expr);
!                Error_Msg_NE
!                  ("\previous alternative has}!",
!                   Second_Expr,
!                   Etype (First_Expr));
!                Error_Msg_NE
!                  ("\this alternative has}!",
!                   Second_Expr,
!                   Etype (Second_Expr));
!             end if;
!          end if;
!       end if;
!    end Analyze_Case_Expression;
  
     ---------------------------
     -- Analyze_Concatenation --
*************** package body Sem_Ch4 is
*** 1956,1969 ****
        Operator_Check (N);
     end Analyze_Concatenation_Rest;
  
!    -------------------------
!    -- Analyze_Equality_Op --
!    -------------------------
  
-    procedure Analyze_Equality_Op (N : Node_Id) is
-       Loc   : constant Source_Ptr := Sloc (N);
-       L     : constant Node_Id := Left_Opnd (N);
-       R     : constant Node_Id := Right_Opnd (N);
        Op_Id : Entity_Id;
  
     begin
--- 2024,2038 ----
        Operator_Check (N);
     end Analyze_Concatenation_Rest;
  
!    ------------------------------------
!    -- Analyze_Comparison_Equality_Op --
!    ------------------------------------
! 
!    procedure Analyze_Comparison_Equality_Op (N : Node_Id) is
!       Loc : constant Source_Ptr := Sloc (N);
!       L   : constant Node_Id    := Left_Opnd (N);
!       R   : constant Node_Id    := Right_Opnd (N);
  
        Op_Id : Entity_Id;
  
     begin
*************** package body Sem_Ch4 is
*** 1980,1988 ****
  
        --  For the predefined case, the result is Boolean, regardless of the
        --  type of the operands. The operands may even be limited, if they are
!       --  generic actuals. If they are overloaded, label the left argument with
!       --  the common type that must be present, or with the type of the formal
!       --  of the user-defined function.
  
        if Present (Entity (N)) then
           Op_Id := Entity (N);
--- 2049,2057 ----
  
        --  For the predefined case, the result is Boolean, regardless of the
        --  type of the operands. The operands may even be limited, if they are
!       --  generic actuals. If they are overloaded, label the operands with the
!       --  common type that must be present, or with the type of the formal of
!       --  the user-defined function.
  
        if Present (Entity (N)) then
           Op_Id := Entity (N);
*************** package body Sem_Ch4 is
*** 2001,2011 ****
              end if;
           end if;
  
        else
           Op_Id := Get_Name_Entity_Id (Chars (N));
           while Present (Op_Id) loop
              if Ekind (Op_Id) = E_Operator then
!                Find_Equality_Types (L, R, Op_Id, N);
              else
                 Analyze_User_Defined_Binary_Op (N, Op_Id);
              end if;
--- 2070,2089 ----
              end if;
           end if;
  
+          if Is_Overloaded (R) then
+             if Ekind (Op_Id) = E_Operator then
+                Set_Etype (R, Intersect_Types (L, R));
+             else
+                Set_Etype (R, Etype (Next_Formal (First_Formal (Op_Id))));
+             end if;
+          end if;
+ 
        else
           Op_Id := Get_Name_Entity_Id (Chars (N));
+ 
           while Present (Op_Id) loop
              if Ekind (Op_Id) = E_Operator then
!                Find_Comparison_Equality_Types (L, R, Op_Id, N);
              else
                 Analyze_User_Defined_Binary_Op (N, Op_Id);
              end if;
*************** package body Sem_Ch4 is
*** 2026,2032 ****
           Op_Id := Get_Name_Entity_Id (Name_Op_Eq);
           while Present (Op_Id) loop
              if Ekind (Op_Id) = E_Operator then
!                Find_Equality_Types (L, R, Op_Id, N);
              else
                 Analyze_User_Defined_Binary_Op (N, Op_Id);
              end if;
--- 2104,2110 ----
           Op_Id := Get_Name_Entity_Id (Name_Op_Eq);
           while Present (Op_Id) loop
              if Ekind (Op_Id) = E_Operator then
!                Find_Comparison_Equality_Types (L, R, Op_Id, N);
              else
                 Analyze_User_Defined_Binary_Op (N, Op_Id);
              end if;
*************** package body Sem_Ch4 is
*** 2051,2057 ****
  
        Operator_Check (N);
        Check_Function_Writable_Actuals (N);
!    end Analyze_Equality_Op;
  
     ----------------------------------
     -- Analyze_Explicit_Dereference --
--- 2129,2135 ----
  
        Operator_Check (N);
        Check_Function_Writable_Actuals (N);
!    end Analyze_Comparison_Equality_Op;
  
     ----------------------------------
     -- Analyze_Explicit_Dereference --
*************** package body Sem_Ch4 is
*** 2259,2265 ****
  
     procedure Analyze_Expression (N : Node_Id) is
     begin
- 
        --  If the expression is an indexed component that will be rewritten
        --  as a container indexing, it has already been analyzed.
  
--- 2337,2342 ----
*************** package body Sem_Ch4 is
*** 2375,2383 ****
--- 2452,2527 ----
  
     procedure Analyze_If_Expression (N : Node_Id) is
        Condition : constant Node_Id := First (Expressions (N));
+ 
        Then_Expr : Node_Id;
        Else_Expr : Node_Id;
  
+       procedure Check_Else_Expression (T : Entity_Id);
+       --  Check one interpretation of the THEN expression with type T
+ 
+       procedure Check_Expression_Pair (T1, T2 : Entity_Id);
+       --  Check THEN expression with type T1 and ELSE expression with type T2
+ 
+       ---------------------------
+       -- Check_Else_Expression --
+       ---------------------------
+ 
+       procedure Check_Else_Expression (T : Entity_Id) is
+          I    : Interp_Index;
+          It   : Interp;
+ 
+       begin
+          --  Loop through the interpretations of the ELSE expression
+ 
+          if not Is_Overloaded (Else_Expr) then
+             Check_Expression_Pair (T, Etype (Else_Expr));
+ 
+          else
+             Get_First_Interp (Else_Expr, I, It);
+             while Present (It.Typ) loop
+                Check_Expression_Pair (T, It.Typ);
+                Get_Next_Interp (I, It);
+             end loop;
+          end if;
+       end Check_Else_Expression;
+ 
+       ---------------------------
+       -- Check_Expression_Pair --
+       ---------------------------
+ 
+       procedure Check_Expression_Pair (T1, T2 : Entity_Id) is
+          T : Entity_Id;
+ 
+       begin
+          if Covers (T1 => T1, T2 => T2)
+            or else Covers (T1 => T2, T2 => T1)
+          then
+             T := Specific_Type (T1, T2);
+ 
+          elsif Is_User_Defined_Literal (Then_Expr, T2) then
+             T := T2;
+ 
+          elsif Is_User_Defined_Literal (Else_Expr, T1) then
+             T := T1;
+ 
+          else
+             T := Possible_Type_For_Conditional_Expression (T1, T2);
+ 
+             if No (T) then
+                return;
+             end if;
+          end if;
+ 
+          Add_One_Interp (N, T, T);
+       end Check_Expression_Pair;
+ 
+       --  Local variables
+ 
+       I  : Interp_Index;
+       It : Interp;
+ 
+       --  Start of processing for Analyze_If_Expression
+ 
     begin
        --  Defend against error of missing expressions from previous error
  
*************** package body Sem_Ch4 is
*** 2386,2391 ****
--- 2530,2537 ----
           return;
        end if;
  
+       Set_Etype (N, Any_Type);
+ 
        Then_Expr := Next (Condition);
  
        if No (Then_Expr) then
*************** package body Sem_Ch4 is
*** 2404,2411 ****
        Analyze_Expression (Condition);
        Resolve (Condition, Any_Boolean);
  
!       --  Analyze THEN expression and (if present) ELSE expression. For those
!       --  we delay resolution in the normal manner, because of overloading etc.
  
        Analyze_Expression (Then_Expr);
  
--- 2550,2557 ----
        Analyze_Expression (Condition);
        Resolve (Condition, Any_Boolean);
  
!       --  Analyze the THEN expression and (if present) the ELSE expression. For
!       --  them we delay resolution in the normal manner because of overloading.
  
        Analyze_Expression (Then_Expr);
  
*************** package body Sem_Ch4 is
*** 2413,2461 ****
           Analyze_Expression (Else_Expr);
        end if;
  
!       --  If then expression not overloaded, then that decides the type
! 
!       if not Is_Overloaded (Then_Expr) then
!          Set_Etype (N, Etype (Then_Expr));
! 
!       --  Case where then expression is overloaded
! 
!       else
!          declare
!             I  : Interp_Index;
!             It : Interp;
  
!          begin
!             Set_Etype (N, Any_Type);
  
!             --  Loop through interpretations of Then_Expr
  
!             Get_First_Interp (Then_Expr, I, It);
!             while Present (It.Nam) loop
  
!                --  Add possible interpretation of Then_Expr if no Else_Expr, or
!                --  Else_Expr is present and has a compatible type.
  
!                if No (Else_Expr)
!                  or else Has_Compatible_Type (Else_Expr, It.Typ)
!                then
!                   Add_One_Interp (N, It.Typ, It.Typ);
!                end if;
  
!                Get_Next_Interp (I, It);
!             end loop;
  
!             --  If no valid interpretation has been found, then the type of the
!             --  ELSE expression does not match any interpretation of the THEN
!             --  expression.
  
!             if Etype (N) = Any_Type then
                 Error_Msg_N
!                  ("type incompatible with that of THEN expression",
                    Else_Expr);
!                return;
              end if;
!          end;
        end if;
     end Analyze_If_Expression;
  
--- 2559,2632 ----
           Analyze_Expression (Else_Expr);
        end if;
  
!       --  RM 4.5.7(10/3): If the if_expression is the operand of a type
!       --  conversion, the type of the if_expression is the target type
!       --  of the conversion.
  
!       if Nkind (Parent (N)) = N_Type_Conversion then
!          Set_Etype (N, Etype (Parent (N)));
!          return;
!       end if;
  
!       --  Loop through the interpretations of the THEN expression and check the
!       --  ELSE expression if present.
  
!       if not Is_Overloaded (Then_Expr) then
!          if Present (Else_Expr) then
!             Check_Else_Expression (Etype (Then_Expr));
!          else
!             Set_Etype (N, Etype (Then_Expr));
!          end if;
  
!       else
!          Get_First_Interp (Then_Expr, I, It);
!          while Present (It.Typ) loop
!             if Present (Else_Expr) then
!                Check_Else_Expression (It.Typ);
!             else
!                Add_One_Interp (N, It.Typ, It.Typ);
!             end if;
  
!             Get_Next_Interp (I, It);
!          end loop;
!       end if;
  
!       --  If no possible interpretation has been found, the type of the
!       --  ELSE expression does not match any interpretation of the THEN
!       --  expression.
  
!       if Etype (N) = Any_Type then
!          if Is_Overloaded (Then_Expr) then
!             if Is_Overloaded (Else_Expr) then
!                Error_Msg_N
!                  ("no interpretation compatible with those of THEN expression",
!                   Else_Expr);
!             else
!                Error_Msg_N
!                  ("type of ELSE incompatible with interpretations of THEN "
!                   & "expression",
!                   Else_Expr);
!                Error_Msg_NE
!                  ("\ELSE expression has}!", Else_Expr, Etype (Else_Expr));
!             end if;
  
!          else
!             if Is_Overloaded (Else_Expr) then
                 Error_Msg_N
!                  ("no interpretation compatible with type of THEN expression",
                    Else_Expr);
!                Error_Msg_NE
!                  ("\THEN expression has}!", Else_Expr, Etype (Then_Expr));
!             else
!                Error_Msg_N
!                  ("type of ELSE incompatible with that of THEN expression",
!                   Else_Expr);
!                Error_Msg_NE
!                  ("\THEN expression has}!", Else_Expr, Etype (Then_Expr));
!                Error_Msg_NE
!                  ("\ELSE expression has}!", Else_Expr, Etype (Else_Expr));
              end if;
!          end if;
        end if;
     end Analyze_If_Expression;
  
*************** package body Sem_Ch4 is
*** 2909,2917 ****
     ------------------------
  
     procedure Analyze_Logical_Op (N : Node_Id) is
!       L     : constant Node_Id := Left_Opnd (N);
!       R     : constant Node_Id := Right_Opnd (N);
!       Op_Id : Entity_Id := Entity (N);
  
     begin
        Set_Etype (N, Any_Type);
--- 3080,3089 ----
     ------------------------
  
     procedure Analyze_Logical_Op (N : Node_Id) is
!       L : constant Node_Id := Left_Opnd (N);
!       R : constant Node_Id := Right_Opnd (N);
! 
!       Op_Id : Entity_Id;
  
     begin
        Set_Etype (N, Any_Type);
*************** package body Sem_Ch4 is
*** 2920,2926 ****
        Analyze_Expression (L);
        Analyze_Expression (R);
  
!       if Present (Op_Id) then
  
           if Ekind (Op_Id) = E_Operator then
              Find_Boolean_Types (L, R, Op_Id, N);
--- 3092,3105 ----
        Analyze_Expression (L);
        Analyze_Expression (R);
  
!       --  If the entity is already set, the node is the instantiation of a
!       --  generic node with a non-local reference, or was manufactured by a
!       --  call to Make_Op_xxx. In either case the entity is known to be valid,
!       --  and we do not need to collect interpretations, instead we just get
!       --  the single possible interpretation.
! 
!       if Present (Entity (N)) then
!          Op_Id := Entity (N);
  
           if Ekind (Op_Id) = E_Operator then
              Find_Boolean_Types (L, R, Op_Id, N);
*************** package body Sem_Ch4 is
*** 2928,2933 ****
--- 3107,3114 ----
              Add_One_Interp (N, Op_Id, Etype (Op_Id));
           end if;
  
+       --  Entity is not already set, so we do need to collect interpretations
+ 
        else
           Op_Id := Get_Name_Entity_Id (Chars (N));
           while Present (Op_Id) loop
*************** package body Sem_Ch4 is
*** 2954,2978 ****
        L     : constant Node_Id    := Left_Opnd (N);
        R     : constant Node_Id    := Right_Opnd (N);
  
-       Index : Interp_Index;
-       It    : Interp;
-       Found : Boolean := False;
-       I_F   : Interp_Index;
-       T_F   : Entity_Id;
- 
        procedure Analyze_Set_Membership;
        --  If a set of alternatives is present, analyze each and find the
        --  common type to which they must all resolve.
  
!       procedure Find_Interpretation;
!       function Find_Interpretation return Boolean;
!       --  Routine and wrapper to find a matching interpretation
  
!       procedure Try_One_Interp (T1 : Entity_Id);
!       --  Routine to try one proposed interpretation. Note that the context
!       --  of the operation plays no role in resolving the arguments, so that
!       --  if there is more than one interpretation of the operands that is
!       --  compatible with a membership test, the operation is ambiguous.
  
        ----------------------------
        -- Analyze_Set_Membership --
--- 3135,3158 ----
        L     : constant Node_Id    := Left_Opnd (N);
        R     : constant Node_Id    := Right_Opnd (N);
  
        procedure Analyze_Set_Membership;
        --  If a set of alternatives is present, analyze each and find the
        --  common type to which they must all resolve.
  
!       function Find_Interp return Boolean;
!       --  Find a valid interpretation of the test. Note that the context of the
!       --  operation plays no role in resolving the operands, so that if there
!       --  is more than one interpretation of the operands that is compatible
!       --  with the test, the operation is ambiguous.
  
!       function Try_Left_Interp (T : Entity_Id) return Boolean;
!       --  Try an interpretation of the left operand with type T. Return true if
!       --  one interpretation (at least) of the right operand making up a valid
!       --  operand pair exists, otherwise false if no such pair exists.
! 
!       function Is_Valid_Pair (T1, T2 : Entity_Id) return Boolean;
!       --  Return true if T1 and T2 constitute a valid pair of operand types for
!       --  L and R respectively.
  
        ----------------------------
        -- Analyze_Set_Membership --
*************** package body Sem_Ch4 is
*** 3055,3062 ****
              end loop;
           end if;
  
-          Set_Etype (N, Standard_Boolean);
- 
           if Present (Common_Type) then
              Set_Etype (L, Common_Type);
  
--- 3235,3240 ----
*************** package body Sem_Ch4 is
*** 3068,3130 ****
           end if;
        end Analyze_Set_Membership;
  
!       -------------------------
!       -- Find_Interpretation --
!       -------------------------
  
-       procedure Find_Interpretation is
        begin
           if not Is_Overloaded (L) then
!             Try_One_Interp (Etype (L));
  
           else
!             Get_First_Interp (L, Index, It);
              while Present (It.Typ) loop
!                Try_One_Interp (It.Typ);
!                Get_Next_Interp (Index, It);
              end loop;
           end if;
-       end Find_Interpretation;
- 
-       function Find_Interpretation return Boolean is
-       begin
-          Find_Interpretation;
  
           return Found;
!       end Find_Interpretation;
  
!       --------------------
!       -- Try_One_Interp --
!       --------------------
  
-       procedure Try_One_Interp (T1 : Entity_Id) is
        begin
!          if Has_Compatible_Type (R, T1, For_Comparison => True) then
!             if Found
!               and then Base_Type (T1) /= Base_Type (T_F)
!             then
!                It := Disambiguate (L, I_F, Index, Any_Type);
  
!                if It = No_Interp then
!                   Ambiguous_Operands (N);
!                   Set_Etype (L, Any_Type);
!                   return;
  
!                else
!                   T_F := It.Typ;
!                end if;
  
!             else
!                Found := True;
!                T_F   := T1;
!                I_F   := Index;
!             end if;
  
!             Set_Etype (L, T_F);
           end if;
-       end Try_One_Interp;
  
!       Op : Node_Id;
  
     --  Start of processing for Analyze_Membership_Op
  
--- 3246,3379 ----
           end if;
        end Analyze_Set_Membership;
  
!       -----------------
!       -- Find_Interp --
!       -----------------
! 
!       function Find_Interp return Boolean is
!          Found   : Boolean;
!          I       : Interp_Index;
!          It      : Interp;
!          L_Typ   : Entity_Id;
!          Valid_I : Interp_Index;
  
        begin
+          --  Loop through the interpretations of the left operand
+ 
           if not Is_Overloaded (L) then
!             Found := Try_Left_Interp (Etype (L));
  
           else
!             Found   := False;
!             L_Typ   := Empty;
!             Valid_I := 0;
! 
!             Get_First_Interp (L, I, It);
              while Present (It.Typ) loop
!                if Try_Left_Interp (It.Typ) then
!                   --  If several interpretations are possible, disambiguate
! 
!                   if Present (L_Typ)
!                     and then Base_Type (It.Typ) /= Base_Type (L_Typ)
!                   then
!                      It := Disambiguate (L, Valid_I, I, Any_Type);
! 
!                      if It = No_Interp then
!                         Ambiguous_Operands (N);
!                         Set_Etype (L, Any_Type);
!                         return True;
!                      end if;
! 
!                   else
!                      Valid_I := I;
!                   end if;
! 
!                   L_Typ := It.Typ;
!                   Set_Etype (L, L_Typ);
!                   Found := True;
!                end if;
! 
!                Get_Next_Interp (I, It);
              end loop;
           end if;
  
           return Found;
!       end Find_Interp;
  
!       ---------------------
!       -- Try_Left_Interp --
!       ---------------------
! 
!       function Try_Left_Interp (T : Entity_Id) return Boolean is
!          Found   : Boolean;
!          I       : Interp_Index;
!          It      : Interp;
!          R_Typ   : Entity_Id;
!          Valid_I : Interp_Index;
  
        begin
!          --  Defend against previous error
  
!          if Nkind (R) = N_Error then
!             Found := False;
  
!          --  Loop through the interpretations of the right operand
  
!          elsif not Is_Overloaded (R) then
!             Found := Is_Valid_Pair (T, Etype (R));
  
!          else
!             Found   := False;
!             R_Typ   := Empty;
!             Valid_I := 0;
! 
!             Get_First_Interp (R, I, It);
!             while Present (It.Typ) loop
!                if Is_Valid_Pair (T, It.Typ) then
!                   --  If several interpretations are possible, disambiguate
! 
!                   if Present (R_Typ)
!                     and then Base_Type (It.Typ) /= Base_Type (R_Typ)
!                   then
!                      It := Disambiguate (R, Valid_I, I, Any_Type);
! 
!                      if It = No_Interp then
!                         Ambiguous_Operands (N);
!                         Set_Etype (R, Any_Type);
!                         return True;
!                      end if;
! 
!                   else
!                      Valid_I := I;
!                   end if;
! 
!                   R_Typ := It.Typ;
!                   Found := True;
!                end if;
! 
!                Get_Next_Interp (I, It);
!             end loop;
           end if;
  
!          return Found;
!       end Try_Left_Interp;
! 
!       -------------------
!       -- Is_Valid_Pair --
!       -------------------
! 
!       function Is_Valid_Pair (T1, T2 : Entity_Id) return Boolean is
!       begin
!          return Covers (T1 => T1, T2 => T2)
!            or else Covers (T1 => T2, T2 => T1)
!            or else Is_User_Defined_Literal (L, T2)
!            or else Is_User_Defined_Literal (R, T1);
!       end Is_Valid_Pair;
! 
!       --  Local variables
! 
!       Dummy : Boolean;
!       Op    : Node_Id;
  
     --  Start of processing for Analyze_Membership_Op
  
*************** package body Sem_Ch4 is
*** 3133,3175 ****
  
        if No (R) then
           pragma Assert (Ada_Version >= Ada_2012);
           Analyze_Set_Membership;
-          Check_Function_Writable_Actuals (N);
-          return;
-       end if;
  
!       if Nkind (R) = N_Range
          or else (Nkind (R) = N_Attribute_Reference
                    and then Attribute_Name (R) = Name_Range)
        then
!          Analyze (R);
  
!          Find_Interpretation;
  
        --  If not a range, it can be a subtype mark, or else it is a degenerate
        --  membership test with a singleton value, i.e. a test for equality,
        --  if the types are compatible.
  
        else
!          Analyze (R);
  
           if Is_Entity_Name (R) and then Is_Type (Entity (R)) then
              Find_Type (R);
              Check_Fully_Declared (Entity (R), R);
  
!          elsif Ada_Version >= Ada_2012 and then Find_Interpretation then
!             if Nkind (N) = N_In then
!                Op := Make_Op_Eq (Loc, Left_Opnd => L, Right_Opnd => R);
!             else
!                Op := Make_Op_Ne (Loc, Left_Opnd => L, Right_Opnd => R);
!             end if;
! 
!             if Is_Record_Or_Limited_Type (Etype (L)) then
! 
!                --  We reset the Entity in order to use the primitive equality
!                --  of the type, as per RM 4.5.2 (28.1/4).
  
!                Set_Entity (Op, Empty);
              end if;
  
              Rewrite (N, Op);
--- 3382,3415 ----
  
        if No (R) then
           pragma Assert (Ada_Version >= Ada_2012);
+ 
           Analyze_Set_Membership;
  
!       elsif Nkind (R) = N_Range
          or else (Nkind (R) = N_Attribute_Reference
                    and then Attribute_Name (R) = Name_Range)
        then
!          Analyze_Expression (R);
  
!          Dummy := Find_Interp;
  
        --  If not a range, it can be a subtype mark, or else it is a degenerate
        --  membership test with a singleton value, i.e. a test for equality,
        --  if the types are compatible.
  
        else
!          Analyze_Expression (R);
  
           if Is_Entity_Name (R) and then Is_Type (Entity (R)) then
              Find_Type (R);
              Check_Fully_Declared (Entity (R), R);
  
!          elsif Ada_Version >= Ada_2012 and then Find_Interp then
!             Op := Make_Op_Eq (Loc, Left_Opnd => L, Right_Opnd => R);
!             Resolve_Membership_Equality (Op, Etype (L));
  
!             if Nkind (N) = N_Not_In then
!                Op := Make_Op_Not (Loc, Op);
              end if;
  
              Rewrite (N, Op);
*************** package body Sem_Ch4 is
*** 3233,3240 ****
     ----------------------
  
     procedure Analyze_Negation (N : Node_Id) is
!       R     : constant Node_Id := Right_Opnd (N);
!       Op_Id : Entity_Id := Entity (N);
  
     begin
        Set_Etype (N, Any_Type);
--- 3473,3481 ----
     ----------------------
  
     procedure Analyze_Negation (N : Node_Id) is
!       R : constant Node_Id := Right_Opnd (N);
! 
!       Op_Id : Entity_Id;
  
     begin
        Set_Etype (N, Any_Type);
*************** package body Sem_Ch4 is
*** 3242,3248 ****
  
        Analyze_Expression (R);
  
!       if Present (Op_Id) then
           if Ekind (Op_Id) = E_Operator then
              Find_Negation_Types (R, Op_Id, N);
           else
--- 3483,3497 ----
  
        Analyze_Expression (R);
  
!       --  If the entity is already set, the node is the instantiation of a
!       --  generic node with a non-local reference, or was manufactured by a
!       --  call to Make_Op_xxx. In either case the entity is known to be valid,
!       --  and we do not need to collect interpretations, instead we just get
!       --  the single possible interpretation.
! 
!       if Present (Entity (N)) then
!          Op_Id := Entity (N);
! 
           if Ekind (Op_Id) = E_Operator then
              Find_Negation_Types (R, Op_Id, N);
           else
*************** package body Sem_Ch4 is
*** 3616,3623 ****
              return;
           end if;
  
!          --  This can occur when the prefix of the call is an operator
!          --  name or an expanded name whose selector is an operator name.
  
           Analyze_Operator_Call (N, Nam);
  
--- 3865,3872 ----
              return;
           end if;
  
!          --  This occurs when the prefix of the call is an operator name
!          --  or an expanded name whose selector is an operator name.
  
           Analyze_Operator_Call (N, Nam);
  
*************** package body Sem_Ch4 is
*** 3933,3949 ****
              =>
                 Find_Boolean_Types (Act1, Act2, Op_Id, N);
  
!             when Name_Op_Ge
                 | Name_Op_Gt
                 | Name_Op_Le
                 | Name_Op_Lt
-             =>
-                Find_Comparison_Types (Act1, Act2, Op_Id,  N);
- 
-             when Name_Op_Eq
                 | Name_Op_Ne
              =>
!                Find_Equality_Types (Act1, Act2, Op_Id,  N);
  
              when Name_Op_Concat =>
                 Find_Concatenation_Types (Act1, Act2, Op_Id, N);
--- 4182,4195 ----
              =>
                 Find_Boolean_Types (Act1, Act2, Op_Id, N);
  
!             when Name_Op_Eq
!                | Name_Op_Ge
                 | Name_Op_Gt
                 | Name_Op_Le
                 | Name_Op_Lt
                 | Name_Op_Ne
              =>
!                Find_Comparison_Equality_Types (Act1, Act2, Op_Id,  N);
  
              when Name_Op_Concat =>
                 Find_Concatenation_Types (Act1, Act2, Op_Id, N);
*************** package body Sem_Ch4 is
*** 4090,4105 ****
     ----------------------------------
  
     procedure Analyze_Qualified_Expression (N : Node_Id) is
-       Mark : constant Entity_Id := Subtype_Mark (N);
        Expr : constant Node_Id   := Expression (N);
        I    : Interp_Index;
        It   : Interp;
        T    : Entity_Id;
  
     begin
-       Analyze_Expression (Expr);
- 
-       Set_Etype (N, Any_Type);
        Find_Type (Mark);
        T := Entity (Mark);
  
--- 4336,4349 ----
     ----------------------------------
  
     procedure Analyze_Qualified_Expression (N : Node_Id) is
        Expr : constant Node_Id   := Expression (N);
+       Mark : constant Entity_Id := Subtype_Mark (N);
+ 
        I    : Interp_Index;
        It   : Interp;
        T    : Entity_Id;
  
     begin
        Find_Type (Mark);
        T := Entity (Mark);
  
*************** package body Sem_Ch4 is
*** 4120,4125 ****
--- 4364,4371 ----
  
        Set_Etype (N, T);
  
+       Analyze_Expression (Expr);
+ 
        if T = Any_Type then
           return;
        end if;
*************** package body Sem_Ch4 is
*** 4156,4163 ****
              end loop;
           end if;
        end if;
- 
-       Set_Etype  (N, T);
     end Analyze_Qualified_Expression;
  
     -----------------------------------
--- 4402,4407 ----
*************** package body Sem_Ch4 is
*** 4166,4174 ****
  
     procedure Analyze_Quantified_Expression (N : Node_Id) is
        function Is_Empty_Range (Typ : Entity_Id) return Boolean;
!       --  If the iterator is part of a quantified expression, and the range is
!       --  known to be statically empty, emit a warning and replace expression
!       --  with its static value. Returns True if the replacement occurs.
  
        function No_Else_Or_Trivial_True (If_Expr : Node_Id) return Boolean;
        --  Determine whether if expression If_Expr lacks an else part or if it
--- 4410,4417 ----
  
     procedure Analyze_Quantified_Expression (N : Node_Id) is
        function Is_Empty_Range (Typ : Entity_Id) return Boolean;
!       --  Return True if the iterator is part of a quantified expression and
!       --  the range is known to be statically empty.
  
        function No_Else_Or_Trivial_True (If_Expr : Node_Id) return Boolean;
        --  Determine whether if expression If_Expr lacks an else part or if it
*************** package body Sem_Ch4 is
*** 4179,4214 ****
        --------------------
  
        function Is_Empty_Range (Typ : Entity_Id) return Boolean is
-          Loc : constant Source_Ptr := Sloc (N);
- 
        begin
!          if Is_Array_Type (Typ)
             and then Compile_Time_Known_Bounds (Typ)
             and then
!              (Expr_Value (Type_Low_Bound  (Etype (First_Index (Typ)))) >
!               Expr_Value (Type_High_Bound (Etype (First_Index (Typ)))))
!          then
!             Preanalyze_And_Resolve (Condition (N), Standard_Boolean);
! 
!             if All_Present (N) then
!                Error_Msg_N
!                  ("??quantified expression with ALL "
!                   & "over a null range has value True", N);
!                Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
! 
!             else
!                Error_Msg_N
!                  ("??quantified expression with SOME "
!                   & "over a null range has value False", N);
!                Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
!             end if;
! 
!             Analyze (N);
!             return True;
! 
!          else
!             return False;
!          end if;
        end Is_Empty_Range;
  
        -----------------------------
--- 4422,4433 ----
        --------------------
  
        function Is_Empty_Range (Typ : Entity_Id) return Boolean is
        begin
!          return Is_Array_Type (Typ)
             and then Compile_Time_Known_Bounds (Typ)
             and then
!              Expr_Value (Type_Low_Bound  (Etype (First_Index (Typ)))) >
!              Expr_Value (Type_High_Bound (Etype (First_Index (Typ))));
        end Is_Empty_Range;
  
        -----------------------------
*************** package body Sem_Ch4 is
*** 4228,4233 ****
--- 4447,4453 ----
        --  Local variables
  
        Cond    : constant Node_Id := Condition (N);
+       Loc     : constant Source_Ptr := Sloc (N);
        Loop_Id : Entity_Id;
        QE_Scop : Entity_Id;
  
*************** package body Sem_Ch4 is
*** 4238,4244 ****
        --  expression. The scope is needed to provide proper visibility of the
        --  loop variable.
  
!       QE_Scop := New_Internal_Entity (E_Loop, Current_Scope, Sloc (N), 'L');
        Set_Etype  (QE_Scop, Standard_Void_Type);
        Set_Scope  (QE_Scop, Current_Scope);
        Set_Parent (QE_Scop, N);
--- 4458,4464 ----
        --  expression. The scope is needed to provide proper visibility of the
        --  loop variable.
  
!       QE_Scop := New_Internal_Entity (E_Loop, Current_Scope, Loc, 'L');
        Set_Etype  (QE_Scop, Standard_Void_Type);
        Set_Scope  (QE_Scop, Current_Scope);
        Set_Parent (QE_Scop, N);
*************** package body Sem_Ch4 is
*** 4254,4264 ****
           Preanalyze (Iterator_Specification (N));
  
           --  Do not proceed with the analysis when the range of iteration is
!          --  empty. The appropriate error is issued by Is_Empty_Range.
  
           if Is_Entity_Name (Name (Iterator_Specification (N)))
             and then Is_Empty_Range (Etype (Name (Iterator_Specification (N))))
           then
              return;
           end if;
  
--- 4474,4503 ----
           Preanalyze (Iterator_Specification (N));
  
           --  Do not proceed with the analysis when the range of iteration is
!          --  empty.
  
           if Is_Entity_Name (Name (Iterator_Specification (N)))
             and then Is_Empty_Range (Etype (Name (Iterator_Specification (N))))
           then
+             Preanalyze_And_Resolve (Condition (N), Standard_Boolean);
+             End_Scope;
+ 
+             --  Emit a warning and replace expression with its static value
+ 
+             if All_Present (N) then
+                Error_Msg_N
+                  ("??quantified expression with ALL "
+                   & "over a null range has value True", N);
+                Rewrite (N, New_Occurrence_Of (Standard_True, Loc));
+ 
+             else
+                Error_Msg_N
+                  ("??quantified expression with SOME "
+                   & "over a null range has value False", N);
+                Rewrite (N, New_Occurrence_Of (Standard_False, Loc));
+             end if;
+ 
+             Analyze (N);
              return;
           end if;
  
*************** package body Sem_Ch4 is
*** 4575,4581 ****
        Name          : constant Node_Id := Prefix (N);
        Sel           : constant Node_Id := Selector_Name (N);
        Act_Decl      : Node_Id;
!       Comp          : Entity_Id;
        Has_Candidate : Boolean := False;
        Hidden_Comp   : Entity_Id;
        In_Scope      : Boolean;
--- 4814,4820 ----
        Name          : constant Node_Id := Prefix (N);
        Sel           : constant Node_Id := Selector_Name (N);
        Act_Decl      : Node_Id;
!       Comp          : Entity_Id := Empty;
        Has_Candidate : Boolean := False;
        Hidden_Comp   : Entity_Id;
        In_Scope      : Boolean;
*************** package body Sem_Ch4 is
*** 4591,4596 ****
--- 4830,4843 ----
        Is_Single_Concurrent_Object : Boolean;
        --  Set True if the prefix is a single task or a single protected object
  
+       function Constraint_Has_Unprefixed_Discriminant_Reference
+         (Typ : Entity_Id) return Boolean;
+       --  Given a subtype that is subject to a discriminant-dependent
+       --  constraint, returns True if any of the values of the constraint
+       --  (i.e., any of the index values for an index constraint, any of
+       --  the discriminant values for a discriminant constraint)
+       --  are unprefixed discriminant names.
+ 
        procedure Find_Component_In_Instance (Rec : Entity_Id);
        --  In an instance, a component of a private extension may not be visible
        --  while it was visible in the generic. Search candidate scope for a
*************** package body Sem_Ch4 is
*** 4619,4624 ****
--- 4866,4921 ----
        --  _Procedure, and collect all its interpretations (since it may be an
        --  overloaded interface primitive); otherwise return False.
  
+       ------------------------------------------------------
+       -- Constraint_Has_Unprefixed_Discriminant_Reference --
+       ------------------------------------------------------
+ 
+       function Constraint_Has_Unprefixed_Discriminant_Reference
+         (Typ : Entity_Id) return Boolean
+       is
+ 
+          function Is_Discriminant_Name (N : Node_Id) return Boolean is
+            ((Nkind (N) = N_Identifier)
+               and then (Ekind (Entity (N)) = E_Discriminant));
+       begin
+          if Is_Array_Type (Typ) then
+             declare
+                Index : Node_Id := First_Index (Typ);
+                Rng   : Node_Id;
+             begin
+                while Present (Index) loop
+                   Rng := Index;
+                   if Nkind (Rng) = N_Subtype_Indication then
+                      Rng := Range_Expression (Constraint (Rng));
+                   end if;
+ 
+                   if Nkind (Rng) = N_Range then
+                      if Is_Discriminant_Name (Low_Bound (Rng))
+                        or else Is_Discriminant_Name (High_Bound (Rng))
+                      then
+                         return True;
+                      end if;
+                   end if;
+ 
+                   Next_Index (Index);
+                end loop;
+             end;
+          else
+             declare
+                Elmt : Elmt_Id := First_Elmt (Discriminant_Constraint (Typ));
+             begin
+                while Present (Elmt) loop
+                   if Is_Discriminant_Name (Node (Elmt)) then
+                      return True;
+                   end if;
+                   Next_Elmt (Elmt);
+                end loop;
+             end;
+          end if;
+ 
+          return False;
+       end Constraint_Has_Unprefixed_Discriminant_Reference;
+ 
        --------------------------------
        -- Find_Component_In_Instance --
        --------------------------------
*************** package body Sem_Ch4 is
*** 4906,4912 ****
            and then not Is_Derived_Type (Prefix_Type)
            and then Is_Entity_Name (Name);
  
!       Comp := First_Entity (Type_To_Use);
  
        --  If the selector has an original discriminant, the node appears in
        --  an instance. Replace the discriminant with the corresponding one
--- 5203,5218 ----
            and then not Is_Derived_Type (Prefix_Type)
            and then Is_Entity_Name (Name);
  
!       --  Avoid initializing Comp if that initialization is not needed
!       --  (and, more importantly, if the call to First_Entity could fail).
! 
!       if Has_Discriminants (Type_To_Use)
!         or else Is_Record_Type (Type_To_Use)
!         or else Is_Private_Type (Type_To_Use)
!         or else Is_Concurrent_Type (Type_To_Use)
!       then
!          Comp := First_Entity (Type_To_Use);
!       end if;
  
        --  If the selector has an original discriminant, the node appears in
        --  an instance. Replace the discriminant with the corresponding one
*************** package body Sem_Ch4 is
*** 4930,4940 ****
  
        elsif Is_Record_Type (Prefix_Type) then
  
!          --  Find component with given name. In an instance, if the node is
!          --  known as a prefixed call, do not examine components whose
!          --  visibility may be accidental.
  
!          while Present (Comp) and then not Is_Prefixed_Call (N) loop
              if Chars (Comp) = Chars (Sel)
                and then Is_Visible_Component (Comp, N)
              then
--- 5236,5261 ----
  
        elsif Is_Record_Type (Prefix_Type) then
  
!          --  Find a component with the given name. If the node is a prefixed
!          --  call, do not examine components whose visibility may be
!          --  accidental.
  
!          while Present (Comp)
!            and then not Is_Prefixed_Call (N)
! 
!            --  When the selector has been resolved to a function then we may be
!            --  looking at a prefixed call which has been preanalyzed already as
!            --  part of a class condition. In such cases it is possible for a
!            --  derived type to declare a component which has the same name as
!            --  a primitive used in a parent's class condition.
! 
!            --  Avoid seeing components as possible interpretations of the
!            --  selected component when this is true.
! 
!            and then not (Inside_Class_Condition_Preanalysis
!                           and then Present (Entity (Sel))
!                           and then Ekind (Entity (Sel)) = E_Function)
!          loop
              if Chars (Comp) = Chars (Sel)
                and then Is_Visible_Component (Comp, N)
              then
*************** package body Sem_Ch4 is
*** 5051,5056 ****
--- 5372,5404 ----
                       end;
                    end if;
  
+                --  If Etype (Comp) is an access type whose designated subtype
+                --  is constrained by an unprefixed discriminant value,
+                --  then ideally we would build a new subtype with an
+                --  appropriately prefixed discriminant value and use that
+                --  instead, as is done in Build_Actual_Subtype_Of_Component.
+                --  That turns out to be difficult in this context (with
+                --  Full_Analysis = False, we could be processing a selected
+                --  component that occurs in a Postcondition pragma;
+                --  PPC pragmas are odd because they can contain references
+                --  to formal parameters that occur outside the subprogram).
+                --  So instead we punt on building a new subtype and we
+                --  use the base type instead. This might introduce
+                --  correctness problems if N were the target of an
+                --  assignment (because a required check might be omitted);
+                --  fortunately, that's impossible because a reference to the
+                --  current instance of a type does not denote a variable view
+                --  when the reference occurs within an aspect_specification.
+                --  GNAT's Precondition and Postcondition pragmas follow the
+                --  same rules as a Pre or Post aspect_specification.
+ 
+                elsif Has_Discriminant_Dependent_Constraint (Comp)
+                  and then Ekind (Etype (Comp)) = E_Access_Subtype
+                  and then Constraint_Has_Unprefixed_Discriminant_Reference
+                             (Designated_Type (Etype (Comp)))
+                then
+                   Set_Etype (N, Base_Type (Etype (Comp)));
+ 
                 --  If Full_Analysis not enabled, just set the Etype
  
                 else
*************** package body Sem_Ch4 is
*** 5086,5092 ****
           --  untagged record types.
  
           if Ada_Version >= Ada_2005
!            and then (Is_Tagged_Type (Prefix_Type) or else Extensions_Allowed)
             and then not Is_Concurrent_Type (Prefix_Type)
           then
              if Nkind (Parent (N)) = N_Generic_Association
--- 5434,5441 ----
           --  untagged record types.
  
           if Ada_Version >= Ada_2005
!            and then (Is_Tagged_Type (Prefix_Type)
!                        or else Core_Extensions_Allowed)
             and then not Is_Concurrent_Type (Prefix_Type)
           then
              if Nkind (Parent (N)) = N_Generic_Association
*************** package body Sem_Ch4 is
*** 5162,5168 ****
           --  Extension feature: Also support calls with prefixed views for
           --  untagged private types.
  
!          if Extensions_Allowed then
              if Try_Object_Operation (N) then
                 return;
              end if;
--- 5511,5517 ----
           --  Extension feature: Also support calls with prefixed views for
           --  untagged private types.
  
!          if Core_Extensions_Allowed then
              if Try_Object_Operation (N) then
                 return;
              end if;
*************** package body Sem_Ch4 is
*** 5423,5429 ****
        --  Extension feature: Also support calls with prefixed views for
        --  untagged types.
  
!       elsif Extensions_Allowed
          and then Try_Object_Operation (N)
        then
           return;
--- 5772,5778 ----
        --  Extension feature: Also support calls with prefixed views for
        --  untagged types.
  
!       elsif Core_Extensions_Allowed
          and then Try_Object_Operation (N)
        then
           return;
*************** package body Sem_Ch4 is
*** 5612,5620 ****
        It  : Interp;
  
     begin
        Analyze_Expression (L);
        Analyze_Expression (R);
-       Set_Etype (N, Any_Type);
  
        if not Is_Overloaded (L) then
           if Root_Type (Etype (L)) = Standard_Boolean
--- 5961,5969 ----
        It  : Interp;
  
     begin
+       Set_Etype (N, Any_Type);
        Analyze_Expression (L);
        Analyze_Expression (R);
  
        if not Is_Overloaded (L) then
           if Root_Type (Etype (L)) = Standard_Boolean
*************** package body Sem_Ch4 is
*** 5747,5753 ****
     -----------------------------
  
     procedure Analyze_Type_Conversion (N : Node_Id) is
!       Expr : constant Node_Id := Expression (N);
        Typ  : Entity_Id;
  
     begin
--- 6096,6104 ----
     -----------------------------
  
     procedure Analyze_Type_Conversion (N : Node_Id) is
!       Expr : constant Node_Id   := Expression (N);
!       Mark : constant Entity_Id := Subtype_Mark (N);
! 
        Typ  : Entity_Id;
  
     begin
*************** package body Sem_Ch4 is
*** 5764,5774 ****
        --  Otherwise full type analysis is required, as well as some semantic
        --  checks to make sure the argument of the conversion is appropriate.
  
!       Find_Type (Subtype_Mark (N));
!       Typ := Entity (Subtype_Mark (N));
        Set_Etype (N, Typ);
!       Check_Fully_Declared (Typ, N);
        Analyze_Expression (Expr);
        Validate_Remote_Type_Type_Conversion (N);
  
        --  Only remaining step is validity checks on the argument. These
--- 6115,6127 ----
        --  Otherwise full type analysis is required, as well as some semantic
        --  checks to make sure the argument of the conversion is appropriate.
  
!       Find_Type (Mark);
!       Typ := Entity (Mark);
        Set_Etype (N, Typ);
! 
        Analyze_Expression (Expr);
+ 
+       Check_Fully_Declared (Typ, N);
        Validate_Remote_Type_Type_Conversion (N);
  
        --  Only remaining step is validity checks on the argument. These
*************** package body Sem_Ch4 is
*** 5842,5849 ****
     ----------------------
  
     procedure Analyze_Unary_Op (N : Node_Id) is
!       R     : constant Node_Id := Right_Opnd (N);
!       Op_Id : Entity_Id := Entity (N);
  
     begin
        Set_Etype (N, Any_Type);
--- 6195,6203 ----
     ----------------------
  
     procedure Analyze_Unary_Op (N : Node_Id) is
!       R : constant Node_Id := Right_Opnd (N);
! 
!       Op_Id : Entity_Id;
  
     begin
        Set_Etype (N, Any_Type);
*************** package body Sem_Ch4 is
*** 5851,5857 ****
  
        Analyze_Expression (R);
  
!       if Present (Op_Id) then
           if Ekind (Op_Id) = E_Operator then
              Find_Unary_Types (R, Op_Id,  N);
           else
--- 6205,6219 ----
  
        Analyze_Expression (R);
  
!       --  If the entity is already set, the node is the instantiation of a
!       --  generic node with a non-local reference, or was manufactured by a
!       --  call to Make_Op_xxx. In either case the entity is known to be valid,
!       --  and we do not need to collect interpretations, instead we just get
!       --  the single possible interpretation.
! 
!       if Present (Entity (N)) then
!          Op_Id := Entity (N);
! 
           if Ekind (Op_Id) = E_Operator then
              Find_Unary_Types (R, Op_Id,  N);
           else
*************** package body Sem_Ch4 is
*** 5882,5891 ****
     ----------------------------------
  
     procedure Analyze_Unchecked_Expression (N : Node_Id) is
     begin
!       Analyze (Expression (N), Suppress => All_Checks);
!       Set_Etype (N, Etype (Expression (N)));
!       Save_Interps (Expression (N), N);
     end Analyze_Unchecked_Expression;
  
     ---------------------------------------
--- 6244,6255 ----
     ----------------------------------
  
     procedure Analyze_Unchecked_Expression (N : Node_Id) is
+       Expr : constant Node_Id := Expression (N);
+ 
     begin
!       Analyze (Expr, Suppress => All_Checks);
!       Set_Etype (N, Etype (Expr));
!       Save_Interps (Expr, N);
     end Analyze_Unchecked_Expression;
  
     ---------------------------------------
*************** package body Sem_Ch4 is
*** 5893,5902 ****
     ---------------------------------------
  
     procedure Analyze_Unchecked_Type_Conversion (N : Node_Id) is
     begin
!       Find_Type (Subtype_Mark (N));
!       Analyze_Expression (Expression (N));
!       Set_Etype (N, Entity (Subtype_Mark (N)));
     end Analyze_Unchecked_Type_Conversion;
  
     ------------------------------------
--- 6257,6269 ----
     ---------------------------------------
  
     procedure Analyze_Unchecked_Type_Conversion (N : Node_Id) is
+       Expr : constant Node_Id   := Expression (N);
+       Mark : constant Entity_Id := Subtype_Mark (N);
+ 
     begin
!       Find_Type (Mark);
!       Set_Etype (N, Entity (Mark));
!       Analyze_Expression (Expr);
     end Analyze_Unchecked_Type_Conversion;
  
     ------------------------------------
*************** package body Sem_Ch4 is
*** 5925,5933 ****
             and then (Has_Compatible_Type (Right_Opnd (N), Etype (F2))
                        or else Etype (F2) = Any_Type)
           then
!             Add_One_Interp (N, Op_Id, Etype (Op_Id));
  
!             --  If the left operand is overloaded, indicate that the current
              --  type is a viable candidate. This is redundant in most cases,
              --  but for equality and comparison operators where the context
              --  does not impose a type on the operands, setting the proper
--- 6292,6300 ----
             and then (Has_Compatible_Type (Right_Opnd (N), Etype (F2))
                        or else Etype (F2) = Any_Type)
           then
!             Add_One_Interp (N, Op_Id, Base_Type (Etype (Op_Id)));
  
!             --  If the operands are overloaded, indicate that the current
              --  type is a viable candidate. This is redundant in most cases,
              --  but for equality and comparison operators where the context
              --  does not impose a type on the operands, setting the proper
*************** package body Sem_Ch4 is
*** 5939,5944 ****
--- 6306,6315 ----
                 Set_Etype (Left_Opnd (N), Etype (F1));
              end if;
  
+             if Is_Overloaded (Right_Opnd (N)) then
+                Set_Etype (Right_Opnd (N), Etype (F2));
+             end if;
+ 
              if Debug_Flag_E then
                 Write_Str ("user defined operator ");
                 Write_Name (Chars (Op_Id));
*************** package body Sem_Ch4 is
*** 6005,6013 ****
        --  Standard, the predefined universal fixed operator is available,
        --  as specified by AI-420 (RM 4.5.5 (19.1/2)).
  
-       function Specific_Type (T1, T2 : Entity_Id) return Entity_Id;
-       --  Get specific type (i.e. non-universal type if there is one)
- 
        ------------------
        -- Has_Fixed_Op --
        ------------------
--- 6376,6381 ----
*************** package body Sem_Ch4 is
*** 6064,6082 ****
           return False;
        end Has_Fixed_Op;
  
-       -------------------
-       -- Specific_Type --
-       -------------------
- 
-       function Specific_Type (T1, T2 : Entity_Id) return Entity_Id is
-       begin
-          if Is_Universal_Numeric_Type (T1) then
-             return Base_Type (T2);
-          else
-             return Base_Type (T1);
-          end if;
-       end Specific_Type;
- 
     --  Start of processing for Check_Arithmetic_Pair
  
     begin
--- 6432,6437 ----
*************** package body Sem_Ch4 is
*** 6246,6263 ****
        end if;
     end Check_Misspelled_Selector;
  
-    ----------------------
-    -- Defined_In_Scope --
-    ----------------------
- 
-    function Defined_In_Scope (T : Entity_Id; S : Entity_Id) return Boolean
-    is
-       S1 : constant Entity_Id := Scope (Base_Type (T));
-    begin
-       return S1 = S
-         or else (S1 = System_Aux_Id and then S = Scope (S1));
-    end Defined_In_Scope;
- 
     -------------------
     -- Diagnose_Call --
     -------------------
--- 6601,6606 ----
*************** package body Sem_Ch4 is
*** 6268,6299 ****
        It               : Interp;
        Err_Mode         : Boolean;
        New_Nam          : Node_Id;
        Void_Interp_Seen : Boolean := False;
  
        Success : Boolean;
        pragma Warnings (Off, Boolean);
  
     begin
!       if Ada_Version >= Ada_2005 then
!          Actual := First_Actual (N);
!          while Present (Actual) loop
  
!             --  Ada 2005 (AI-50217): Post an error in case of premature
!             --  usage of an entity from the limited view.
  
!             if not Analyzed (Etype (Actual))
!              and then From_Limited_With (Etype (Actual))
!             then
!                Error_Msg_Qual_Level := 1;
!                Error_Msg_NE
!                 ("missing with_clause for scope of imported type&",
!                   Actual, Etype (Actual));
!                Error_Msg_Qual_Level := 0;
!             end if;
  
!             Next_Actual (Actual);
!          end loop;
!       end if;
  
        --  Before listing the possible candidates, check whether this is
        --  a prefix of a selected component that has been rewritten as a
--- 6611,6645 ----
        It               : Interp;
        Err_Mode         : Boolean;
        New_Nam          : Node_Id;
+       Num_Actuals      : Natural;
+       Num_Interps      : Natural;
        Void_Interp_Seen : Boolean := False;
  
        Success : Boolean;
        pragma Warnings (Off, Boolean);
  
     begin
!       Num_Actuals := 0;
!       Actual := First_Actual (N);
  
!       while Present (Actual) loop
!          --  Ada 2005 (AI-50217): Post an error in case of premature
!          --  usage of an entity from the limited view.
  
!          if not Analyzed (Etype (Actual))
!           and then From_Limited_With (Etype (Actual))
!           and then Ada_Version >= Ada_2005
!          then
!             Error_Msg_Qual_Level := 1;
!             Error_Msg_NE
!              ("missing with_clause for scope of imported type&",
!                Actual, Etype (Actual));
!             Error_Msg_Qual_Level := 0;
!          end if;
  
!          Num_Actuals := Num_Actuals + 1;
!          Next_Actual (Actual);
!       end loop;
  
        --  Before listing the possible candidates, check whether this is
        --  a prefix of a selected component that has been rewritten as a
*************** package body Sem_Ch4 is
*** 6328,6344 ****
           end;
        end if;
  
!       --  Analyze each candidate call again, with full error reporting for
!       --  each.
! 
!       Error_Msg_N
!         ("no candidate interpretations match the actuals:!", Nam);
!       Err_Mode := All_Errors_Mode;
!       All_Errors_Mode := True;
! 
!       --  If this is a call to an operation of a concurrent type,
!       --  the failed interpretations have been removed from the
!       --  name. Recover them to provide full diagnostics.
  
        if Nkind (Parent (Nam)) = N_Selected_Component then
           Set_Entity (Nam, Empty);
--- 6674,6682 ----
           end;
        end if;
  
!       --  If this is a call to an operation of a concurrent type, the failed
!       --  interpretations have been removed from the name. Recover them now
!       --  in order to provide full diagnostics.
  
        if Nkind (Parent (Nam)) = N_Selected_Component then
           Set_Entity (Nam, Empty);
*************** package body Sem_Ch4 is
*** 6352,6357 ****
--- 6690,6737 ----
           Get_First_Interp (Nam, X, It);
        end if;
  
+       --  If the number of actuals is 2, then remove interpretations involving
+       --  a unary "+" operator as they might yield confusing errors downstream.
+ 
+       if Num_Actuals = 2
+         and then Nkind (Parent (Nam)) /= N_Selected_Component
+       then
+          Num_Interps := 0;
+ 
+          while Present (It.Nam) loop
+             if Ekind (It.Nam) = E_Operator
+               and then Chars (It.Nam) = Name_Op_Add
+               and then (No (First_Formal (It.Nam))
+                          or else No (Next_Formal (First_Formal (It.Nam))))
+             then
+                Remove_Interp (X);
+             else
+                Num_Interps := Num_Interps + 1;
+             end if;
+ 
+             Get_Next_Interp (X, It);
+          end loop;
+ 
+          if Num_Interps = 0 then
+             Error_Msg_N ("!too many arguments in call to&", Nam);
+             return;
+          end if;
+ 
+          Get_First_Interp (Nam, X, It);
+ 
+       else
+          Num_Interps := 2; -- at least
+       end if;
+ 
+       --  Analyze each candidate call again with full error reporting for each
+ 
+       if Num_Interps > 1 then
+          Error_Msg_N ("!no candidate interpretations match the actuals:", Nam);
+       end if;
+ 
+       Err_Mode := All_Errors_Mode;
+       All_Errors_Mode := True;
+ 
        while Present (It.Nam) loop
           if Etype (It.Nam) = Standard_Void_Type then
              Void_Interp_Seen := True;
*************** package body Sem_Ch4 is
*** 6428,6438 ****
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
-       Index1 : Interp_Index;
-       Index2 : Interp_Index;
-       It1    : Interp;
-       It2    : Interp;
- 
        procedure Check_Right_Argument (T : Entity_Id);
        --  Check right operand of operator
  
--- 6808,6813 ----
*************** package body Sem_Ch4 is
*** 6441,6458 ****
        --------------------------
  
        procedure Check_Right_Argument (T : Entity_Id) is
        begin
           if not Is_Overloaded (R) then
!             Check_Arithmetic_Pair (T, Etype (R), Op_Id,  N);
           else
!             Get_First_Interp (R, Index2, It2);
!             while Present (It2.Typ) loop
!                Check_Arithmetic_Pair (T, It2.Typ, Op_Id, N);
!                Get_Next_Interp (Index2, It2);
              end loop;
           end if;
        end Check_Right_Argument;
  
     --  Start of processing for Find_Arithmetic_Types
  
     begin
--- 6816,6842 ----
        --------------------------
  
        procedure Check_Right_Argument (T : Entity_Id) is
+          I  : Interp_Index;
+          It : Interp;
+ 
        begin
           if not Is_Overloaded (R) then
!             Check_Arithmetic_Pair (T, Etype (R), Op_Id, N);
! 
           else
!             Get_First_Interp (R, I, It);
!             while Present (It.Typ) loop
!                Check_Arithmetic_Pair (T, It.Typ, Op_Id, N);
!                Get_Next_Interp (I, It);
              end loop;
           end if;
        end Check_Right_Argument;
  
+       --  Local variables
+ 
+       I  : Interp_Index;
+       It : Interp;
+ 
     --  Start of processing for Find_Arithmetic_Types
  
     begin
*************** package body Sem_Ch4 is
*** 6460,6472 ****
           Check_Right_Argument (Etype (L));
  
        else
!          Get_First_Interp (L, Index1, It1);
!          while Present (It1.Typ) loop
!             Check_Right_Argument (It1.Typ);
!             Get_Next_Interp (Index1, It1);
           end loop;
        end if;
- 
     end Find_Arithmetic_Types;
  
     ------------------------
--- 6844,6855 ----
           Check_Right_Argument (Etype (L));
  
        else
!          Get_First_Interp (L, I, It);
!          while Present (It.Typ) loop
!             Check_Right_Argument (It.Typ);
!             Get_Next_Interp (I, It);
           end loop;
        end if;
     end Find_Arithmetic_Types;
  
     ------------------------
*************** package body Sem_Ch4 is
*** 6478,7213 ****
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
!       Index : Interp_Index;
!       It    : Interp;
! 
!       procedure Check_Numeric_Argument (T : Entity_Id);
!       --  Special case for logical operations one of whose operands is an
!       --  integer literal. If both are literal the result is any modular type.
! 
!       ----------------------------
!       -- Check_Numeric_Argument --
!       ----------------------------
  
!       procedure Check_Numeric_Argument (T : Entity_Id) is
!       begin
!          if T = Universal_Integer then
!             Add_One_Interp (N, Op_Id, Any_Modular);
  
!          elsif Is_Modular_Integer_Type (T) then
!             Add_One_Interp (N, Op_Id, T);
!          end if;
!       end Check_Numeric_Argument;
  
!    --  Start of processing for Find_Boolean_Types
  
!    begin
!       if not Is_Overloaded (L) then
!          if Etype (L) = Universal_Integer
!            or else Etype (L) = Any_Modular
           then
!             if not Is_Overloaded (R) then
!                Check_Numeric_Argument (Etype (R));
! 
!             else
!                Get_First_Interp (R, Index, It);
!                while Present (It.Typ) loop
!                   Check_Numeric_Argument (It.Typ);
!                   Get_Next_Interp (Index, It);
!                end loop;
!             end if;
! 
!          --  If operands are aggregates, we must assume that they may be
!          --  boolean arrays, and leave disambiguation for the second pass.
!          --  If only one is an aggregate, verify that the other one has an
!          --  interpretation as a boolean array
! 
!          elsif Nkind (L) = N_Aggregate then
!             if Nkind (R) = N_Aggregate then
!                Add_One_Interp (N, Op_Id, Etype (L));
! 
!             elsif not Is_Overloaded (R) then
!                if Valid_Boolean_Arg (Etype (R)) then
!                   Add_One_Interp (N, Op_Id, Etype (R));
!                end if;
! 
!             else
!                Get_First_Interp (R, Index, It);
!                while Present (It.Typ) loop
!                   if Valid_Boolean_Arg (It.Typ) then
!                      Add_One_Interp (N, Op_Id, It.Typ);
!                   end if;
  
!                   Get_Next_Interp (Index, It);
!                end loop;
              end if;
  
!          elsif Valid_Boolean_Arg (Etype (L))
!            and then Has_Compatible_Type (R, Etype (L))
!          then
!             Add_One_Interp (N, Op_Id, Etype (L));
           end if;
  
!       else
!          Get_First_Interp (L, Index, It);
!          while Present (It.Typ) loop
!             if Valid_Boolean_Arg (It.Typ)
!               and then Has_Compatible_Type (R, It.Typ)
!             then
!                Add_One_Interp (N, Op_Id, It.Typ);
!             end if;
! 
!             Get_Next_Interp (Index, It);
!          end loop;
!       end if;
!    end Find_Boolean_Types;
! 
!    ---------------------------
!    -- Find_Comparison_Types --
!    ---------------------------
! 
!    procedure Find_Comparison_Types
!      (L, R  : Node_Id;
!       Op_Id : Entity_Id;
!       N     : Node_Id)
!    is
!       Index : Interp_Index;
!       It    : Interp;
!       Found : Boolean := False;
!       I_F   : Interp_Index;
!       T_F   : Entity_Id;
!       Scop  : Entity_Id := Empty;
! 
!       procedure Try_One_Interp (T1 : Entity_Id);
!       --  Routine to try one proposed interpretation. Note that the context
!       --  of the operator plays no role in resolving the arguments, so that
!       --  if there is more than one interpretation of the operands that is
!       --  compatible with comparison, the operation is ambiguous.
  
!       --------------------
!       -- Try_One_Interp --
!       --------------------
  
-       procedure Try_One_Interp (T1 : Entity_Id) is
        begin
!          --  If the operator is an expanded name, then the type of the operand
!          --  must be defined in the corresponding scope. If the type is
!          --  universal, the context will impose the correct type. Note that we
!          --  also avoid returning if we are currently within a generic instance
!          --  due to the fact that the generic package declaration has already
!          --  been successfully analyzed and Defined_In_Scope expects the base
!          --  type to be defined within the instance which will never be the
!          --  case.
! 
!          if Present (Scop)
!            and then not Defined_In_Scope (T1, Scop)
!            and then not In_Instance
!            and then T1 /= Universal_Integer
!            and then T1 /= Universal_Real
!            and then T1 /= Any_String
!            and then T1 /= Any_Composite
!          then
!             return;
!          end if;
! 
!          if Valid_Comparison_Arg (T1)
!            and then Has_Compatible_Type (R, T1, For_Comparison => True)
!          then
!             if Found and then Base_Type (T1) /= Base_Type (T_F) then
!                It := Disambiguate (L, I_F, Index, Any_Type);
  
!                if It = No_Interp then
!                   Ambiguous_Operands (N);
!                   Set_Etype (L, Any_Type);
!                   return;
  
!                else
!                   T_F := It.Typ;
!                end if;
!             else
!                Found := True;
!                T_F   := T1;
!                I_F   := Index;
!             end if;
  
!             Set_Etype (L, T_F);
!             Find_Non_Universal_Interpretations (N, R, Op_Id, T1);
           end if;
!       end Try_One_Interp;
! 
!    --  Start of processing for Find_Comparison_Types
! 
!    begin
!       --  If left operand is aggregate, the right operand has to
!       --  provide a usable type for it.
! 
!       if Nkind (L) = N_Aggregate and then Nkind (R) /= N_Aggregate then
!          Find_Comparison_Types (L => R, R => L, Op_Id => Op_Id, N => N);
!          return;
!       end if;
  
!       if Nkind (N) = N_Function_Call
!          and then Nkind (Name (N)) = N_Expanded_Name
!       then
!          Scop := Entity (Prefix (Name (N)));
  
!          --  The prefix may be a package renaming, and the subsequent test
!          --  requires the original package.
  
!          if Ekind (Scop) = E_Package
!            and then Present (Renamed_Entity (Scop))
!          then
!             Scop := Renamed_Entity (Scop);
!             Set_Entity (Prefix (Name (N)), Scop);
!          end if;
!       end if;
  
        if not Is_Overloaded (L) then
!          Try_One_Interp (Etype (L));
  
        else
!          Get_First_Interp (L, Index, It);
           while Present (It.Typ) loop
!             Try_One_Interp (It.Typ);
!             Get_Next_Interp (Index, It);
           end loop;
        end if;
!    end Find_Comparison_Types;
! 
!    ----------------------------------------
!    -- Find_Non_Universal_Interpretations --
!    ----------------------------------------
! 
!    procedure Find_Non_Universal_Interpretations
!      (N     : Node_Id;
!       R     : Node_Id;
!       Op_Id : Entity_Id;
!       T1    : Entity_Id)
!    is
!       Index : Interp_Index;
!       It    : Interp;
! 
!    begin
!       --  Defend against previous error
! 
!       if Nkind (R) = N_Error then
!          return;
!       end if;
! 
!       if T1 = Universal_Integer
!         or else T1 = Universal_Real
!         or else T1 = Universal_Access
!       then
!          if not Is_Overloaded (R) then
!             Add_One_Interp (N, Op_Id, Standard_Boolean, Base_Type (Etype (R)));
!          else
!             Get_First_Interp (R, Index, It);
!             while Present (It.Typ) loop
!                if Covers (It.Typ, T1) then
!                   Add_One_Interp
!                     (N, Op_Id, Standard_Boolean, Base_Type (It.Typ));
!                end if;
! 
!                Get_Next_Interp (Index, It);
!             end loop;
!          end if;
  
!       elsif Has_Compatible_Type (R, T1) or else Covers (Etype (R), T1) then
!          Add_One_Interp (N, Op_Id, Standard_Boolean, Base_Type (T1));
!       end if;
!    end Find_Non_Universal_Interpretations;
  
!    ------------------------------
!    -- Find_Concatenation_Types --
!    ------------------------------
  
!    procedure Find_Concatenation_Types
       (L, R  : Node_Id;
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
!       Is_String : constant Boolean := Nkind (L) = N_String_Literal
!                                         or else
!                                       Nkind (R) = N_String_Literal;
!       Op_Type   : constant Entity_Id := Etype (Op_Id);
! 
!    begin
!       if Is_Array_Type (Op_Type)
! 
!         --  Small but very effective optimization: if at least one operand is a
!         --  string literal, then the type of the operator must be either array
!         --  of characters or array of strings.
! 
!         and then (not Is_String
!                     or else
!                   Is_Character_Type (Component_Type (Op_Type))
!                     or else
!                   Is_String_Type (Component_Type (Op_Type)))
! 
!         and then not Is_Limited_Type (Op_Type)
  
!         and then (Has_Compatible_Type (L, Op_Type)
!                     or else
!                   Has_Compatible_Type (L, Component_Type (Op_Type)))
  
!         and then (Has_Compatible_Type (R, Op_Type)
!                     or else
!                   Has_Compatible_Type (R, Component_Type (Op_Type)))
!       then
!          Add_One_Interp (N, Op_Id, Op_Type);
!       end if;
!    end Find_Concatenation_Types;
  
!    -------------------------
!    -- Find_Equality_Types --
!    -------------------------
  
!    procedure Find_Equality_Types
!      (L, R  : Node_Id;
!       Op_Id : Entity_Id;
!       N     : Node_Id)
!    is
!       Index               : Interp_Index := 0;
!       It                  : Interp;
!       Found               : Boolean := False;
!       Is_Universal_Access : Boolean := False;
!       I_F                 : Interp_Index;
!       T_F                 : Entity_Id;
!       Scop                : Entity_Id := Empty;
  
!       procedure Check_Access_Attribute (N : Node_Id);
!       --  For any object, '[Unchecked_]Access of such object can never be
!       --  passed as a parameter of a call to the Universal_Access equality
!       --  operator.
!       --  This is because the expected type for Obj'Access in a call to
!       --  the Standard."=" operator whose formals are of type
!       --  Universal_Access is Universal_Access, and Universal_Access
!       --  doesn't have a designated type. For more detail see RM 6.4.1(3)
!       --  and 3.10.2.
!       --  This procedure assumes that the context is a universal_access.
  
!       function Check_Access_Object_Types
!         (N : Node_Id; Typ : Entity_Id) return Boolean;
!       --  Check for RM 4.5.2 (9.6/2): When both are of access-to-object types,
!       --  the designated types shall be the same or one shall cover the other,
!       --  and if the designated types are elementary or array types, then the
!       --  designated subtypes shall statically match.
!       --  If N is not overloaded, then its unique type must be compatible as
!       --  per above. Otherwise iterate through the interpretations of N looking
!       --  for a compatible one.
  
!       procedure Check_Compatible_Profiles (N : Node_Id; Typ : Entity_Id);
!       --  Check for RM 4.5.2(9.7/2): When both are of access-to-subprogram
!       --  types, the designated profiles shall be subtype conformant.
  
!       function References_Anonymous_Access_Type
!         (N : Node_Id; Typ : Entity_Id) return Boolean;
!       --  Return True either if N is not overloaded and its Etype is an
!       --  anonymous access type or if one of the interpretations of N refers
!       --  to an anonymous access type compatible with Typ.
  
!       procedure Try_One_Interp (T1 : Entity_Id);
!       --  The context of the equality operator plays no role in resolving the
!       --  arguments, so that if there is more than one interpretation of the
!       --  operands that is compatible with equality, the construct is ambiguous
!       --  and an error can be emitted now, after trying to disambiguate, i.e.
!       --  applying preference rules.
  
!       ----------------------------
!       -- Check_Access_Attribute --
!       ----------------------------
  
!       procedure Check_Access_Attribute (N : Node_Id) is
!       begin
!          if Nkind (N) = N_Attribute_Reference
!            and then Attribute_Name (N) in Name_Access | Name_Unchecked_Access
!          then
!             Error_Msg_N
!               ("access attribute cannot be used as actual for "
!                & "universal_access equality", N);
!          end if;
!       end Check_Access_Attribute;
  
!       -------------------------------
!       -- Check_Access_Object_Types --
!       -------------------------------
  
!       function Check_Access_Object_Types
!         (N : Node_Id; Typ : Entity_Id) return Boolean
!       is
!          function Check_Designated_Types (DT1, DT2 : Entity_Id) return Boolean;
!          --  Check RM 4.5.2 (9.6/2) on the given designated types.
  
!          ----------------------------
!          -- Check_Designated_Types --
!          ----------------------------
  
!          function Check_Designated_Types
!            (DT1, DT2 : Entity_Id) return Boolean is
!          begin
!             --  If the designated types are elementary or array types, then
!             --  the designated subtypes shall statically match.
  
!             if Is_Elementary_Type (DT1) or else Is_Array_Type (DT1) then
!                if Base_Type (DT1) /= Base_Type (DT2) then
!                   return False;
!                else
!                   return Subtypes_Statically_Match (DT1, DT2);
                 end if;
  
!             --  Otherwise, the designated types shall be the same or one
!             --  shall cover the other.
  
!             else
!                return DT1 = DT2
!                  or else Covers (DT1, DT2)
!                  or else Covers (DT2, DT1);
              end if;
!          end Check_Designated_Types;
  
!       --  Start of processing for Check_Access_Object_Types
  
!       begin
!          --  Return immediately with no checks if Typ is not an
!          --  access-to-object type.
  
!          if not Is_Access_Object_Type (Typ) then
!             return True;
  
!          --  Any_Type is compatible with all types in this context, and is used
!          --  in particular for the designated type of a 'null' value.
  
!          elsif Directly_Designated_Type (Typ) = Any_Type
!            or else Nkind (N) = N_Null
!          then
!             return True;
!          end if;
  
-          if not Is_Overloaded (N) then
-             if Is_Access_Object_Type (Etype (N)) then
-                return Check_Designated_Types
-                  (Designated_Type (Typ), Designated_Type (Etype (N)));
-             end if;
           else
!             declare
!                Typ_Is_Anonymous : constant Boolean :=
!                  Is_Anonymous_Access_Type (Typ);
! 
!                I  : Interp_Index;
!                It : Interp;
! 
!             begin
!                Get_First_Interp (N, I, It);
!                while Present (It.Typ) loop
! 
!                   --  The check on designated types if only relevant when one
!                   --  of the types is anonymous, ignore other (non relevant)
!                   --  types.
! 
!                   if (Typ_Is_Anonymous
!                        or else Is_Anonymous_Access_Type (It.Typ))
!                     and then Is_Access_Object_Type (It.Typ)
!                   then
!                      if Check_Designated_Types
!                           (Designated_Type (Typ), Designated_Type (It.Typ))
!                      then
!                         return True;
!                      end if;
!                   end if;
  
!                   Get_Next_Interp (I, It);
!                end loop;
!             end;
           end if;
  
!          return False;
!       end Check_Access_Object_Types;
  
!       -------------------------------
!       -- Check_Compatible_Profiles --
!       -------------------------------
  
!       procedure Check_Compatible_Profiles (N : Node_Id; Typ : Entity_Id) is
!          I     : Interp_Index;
!          It    : Interp;
!          I1    : Interp_Index := 0;
!          Found : Boolean      := False;
!          Tmp   : Entity_Id    := Empty;
  
        begin
!          if not Is_Overloaded (N) then
!             Check_Subtype_Conformant
!               (Designated_Type (Etype (N)), Designated_Type (Typ), N);
!          else
!             Get_First_Interp (N, I, It);
!             while Present (It.Typ) loop
!                if Is_Access_Subprogram_Type (It.Typ) then
!                   if not Found then
!                      Found := True;
!                      Tmp   := It.Typ;
!                      I1    := I;
! 
!                   else
!                      It := Disambiguate (N, I1, I, Any_Type);
  
!                      if It /= No_Interp then
!                         Tmp := It.Typ;
!                         I1  := I;
!                      else
!                         Found := False;
!                         exit;
!                      end if;
!                   end if;
!                end if;
  
!                Get_Next_Interp (I, It);
!             end loop;
  
!             if Found then
!                Check_Subtype_Conformant
!                  (Designated_Type (Tmp), Designated_Type (Typ), N);
              end if;
-          end if;
-       end Check_Compatible_Profiles;
  
!       --------------------------------------
!       -- References_Anonymous_Access_Type --
!       --------------------------------------
  
-       function References_Anonymous_Access_Type
-         (N : Node_Id; Typ : Entity_Id) return Boolean
-       is
-          I  : Interp_Index;
-          It : Interp;
-       begin
-          if not Is_Overloaded (N) then
-             return Is_Anonymous_Access_Type (Etype (N));
           else
!             Get_First_Interp (N, I, It);
!             while Present (It.Typ) loop
!                if Is_Anonymous_Access_Type (It.Typ)
!                  and then (Covers (It.Typ, Typ) or else Covers (Typ, It.Typ))
!                then
!                   return True;
!                end if;
! 
!                Get_Next_Interp (I, It);
!             end loop;
  
              return False;
           end if;
-       end References_Anonymous_Access_Type;
  
!       --------------------
!       -- Try_One_Interp --
!       --------------------
  
!       procedure Try_One_Interp (T1 : Entity_Id) is
!          Anonymous_Access : Boolean;
!          Bas              : Entity_Id;
  
!       begin
!          --  Perform a sanity check in case of previous errors
  
!          if No (T1) then
!             return;
           end if;
  
!          Bas := Base_Type (T1);
! 
!          --  If the operator is an expanded name, then the type of the operand
!          --  must be defined in the corresponding scope. If the type is
!          --  universal, the context will impose the correct type. An anonymous
!          --  type for a 'Access reference is also universal in this sense, as
!          --  the actual type is obtained from context.
! 
!          --  In Ada 2005, the equality operator for anonymous access types
!          --  is declared in Standard, and preference rules apply to it.
! 
!          Anonymous_Access := Is_Anonymous_Access_Type (T1)
!            or else References_Anonymous_Access_Type (R, T1);
  
!          if Present (Scop) then
  
!             --  Note that we avoid returning if we are currently within a
!             --  generic instance due to the fact that the generic package
!             --  declaration has already been successfully analyzed and
!             --  Defined_In_Scope expects the base type to be defined within
!             --  the instance which will never be the case.
  
!             if Defined_In_Scope (T1, Scop)
!               or else In_Instance
!               or else T1 = Universal_Integer
!               or else T1 = Universal_Real
!               or else T1 = Universal_Access
!               or else T1 = Any_String
!               or else T1 = Any_Composite
!               or else (Ekind (T1) = E_Access_Subprogram_Type
!                         and then not Comes_From_Source (T1))
              then
!                null;
! 
!             elsif Scop /= Standard_Standard or else not Anonymous_Access then
! 
!                --  The scope does not contain an operator for the type
! 
!                return;
              end if;
  
!          --  If we have infix notation, the operator must be usable. Within
!          --  an instance, the type may have been immediately visible if the
!          --  types are compatible.
  
!          elsif In_Open_Scopes (Scope (Bas))
!            or else Is_Potentially_Use_Visible (Bas)
!            or else In_Use (Bas)
!            or else (In_Use (Scope (Bas)) and then not Is_Hidden (Bas))
!            or else
!              ((In_Instance or else In_Inlined_Body)
!                 and then Has_Compatible_Type (R, T1))
!          then
!             null;
  
!          elsif not Anonymous_Access then
!             --  Save candidate type for subsequent error message, if any
  
!             if not Is_Limited_Type (T1) then
!                Candidate_Type := T1;
!             end if;
  
!             return;
!          end if;
  
!          --  Ada 2005 (AI-230): Keep restriction imposed by Ada 83 and 95:
!          --  Do not allow anonymous access types in equality operators.
  
!          if Ada_Version < Ada_2005 and then Anonymous_Access then
!             return;
           end if;
  
!          --  If the right operand has a type compatible with T1, check for an
!          --  acceptable interpretation, unless T1 is limited (no predefined
!          --  equality available), or this is use of a "/=" for a tagged type.
!          --  In the latter case, possible interpretations of equality need
!          --  to be considered, we don't want the default inequality declared
!          --  in Standard to be chosen, and the "/=" will be rewritten as a
!          --  negation of "=" (see the end of Analyze_Equality_Op). This ensures
!          --  that rewriting happens during analysis rather than being
!          --  delayed until expansion (is this still needed now that ASIS mode
!          --  is gone???). Note that if the node is N_Op_Ne, but Op_Id
!          --  is Name_Op_Eq then we still proceed with the interpretation,
!          --  because that indicates the potential rewriting case where the
!          --  interpretation to consider is actually "=" and the node may be
!          --  about to be rewritten by Analyze_Equality_Op.
!          --  Finally, also check for RM 4.5.2 (9.6/2).
! 
!          if T1 /= Standard_Void_Type
!            and then (Anonymous_Access
!                       or else
!                      Has_Compatible_Type (R, T1, For_Comparison => True))
! 
!            and then
!              ((not Is_Limited_Type (T1)
!                 and then not Is_Limited_Composite (T1))
  
!                or else
!                  (Is_Array_Type (T1)
!                    and then not Is_Limited_Type (Component_Type (T1))
!                    and then Available_Full_View_Of_Component (T1)))
  
!            and then
!              (Nkind (N) /= N_Op_Ne
!                or else not Is_Tagged_Type (T1)
!                or else Chars (Op_Id) = Name_Op_Eq)
  
!            and then (not Anonymous_Access
!                       or else Check_Access_Object_Types (R, T1))
!          then
!             if Found
!               and then Base_Type (T1) /= Base_Type (T_F)
!             then
!                It := Disambiguate (L, I_F, Index, Any_Type);
  
!                if It = No_Interp then
!                   Ambiguous_Operands (N);
!                   Set_Etype (L, Any_Type);
!                   return;
  
                 else
!                   T_F := It.Typ;
!                   Is_Universal_Access := Anonymous_Access;
                 end if;
  
!             else
!                Found := True;
!                T_F   := T1;
!                I_F   := Index;
!                Is_Universal_Access := Anonymous_Access;
!             end if;
! 
!             if not Analyzed (L) then
!                Set_Etype (L, T_F);
              end if;
  
!             Find_Non_Universal_Interpretations (N, R, Op_Id, T1);
! 
!             --  Case of operator was not visible, Etype still set to Any_Type
  
!             if Etype (N) = Any_Type then
!                Found := False;
!             end if;
           end if;
!       end Try_One_Interp;
! 
!    --  Start of processing for Find_Equality_Types
  
!    begin
!       --  If left operand is aggregate, the right operand has to
!       --  provide a usable type for it.
  
!       if Nkind (L) = N_Aggregate and then Nkind (R) /= N_Aggregate then
!          Find_Equality_Types (L => R, R => L, Op_Id => Op_Id, N => N);
!          return;
!       end if;
  
!       if Nkind (N) = N_Function_Call
!          and then Nkind (Name (N)) = N_Expanded_Name
!       then
!          Scop := Entity (Prefix (Name (N)));
  
!          --  The prefix may be a package renaming, and the subsequent test
!          --  requires the original package.
  
!          if Ekind (Scop) = E_Package
!            and then Present (Renamed_Entity (Scop))
!          then
!             Scop := Renamed_Entity (Scop);
!             Set_Entity (Prefix (Name (N)), Scop);
!          end if;
!       end if;
  
!       if not Is_Overloaded (L) then
!          Try_One_Interp (Etype (L));
!       else
!          Get_First_Interp (L, Index, It);
!          while Present (It.Typ) loop
!             Try_One_Interp (It.Typ);
!             Get_Next_Interp (Index, It);
!          end loop;
!       end if;
  
!       if Is_Universal_Access then
!          if Is_Access_Subprogram_Type (Etype (L))
!            and then Nkind (L) /= N_Null
!            and then Nkind (R) /= N_Null
!          then
!             Check_Compatible_Profiles (R, Etype (L));
!          end if;
  
!          Check_Access_Attribute (R);
!          Check_Access_Attribute (L);
        end if;
!    end Find_Equality_Types;
  
     -------------------------
     -- Find_Negation_Types --
--- 6861,7269 ----
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
!       procedure Check_Boolean_Pair (T1, T2 : Entity_Id);
!       --  Check operand pair of operator
  
!       procedure Check_Right_Argument (T : Entity_Id);
!       --  Check right operand of operator
  
!       ------------------------
!       -- Check_Boolean_Pair --
!       ------------------------
  
!       procedure Check_Boolean_Pair (T1, T2 : Entity_Id) is
!          T : Entity_Id;
  
!       begin
!          if Valid_Boolean_Arg (T1)
!            and then Valid_Boolean_Arg (T2)
!            and then (Covers (T1 => T1, T2 => T2)
!                       or else Covers (T1 => T2, T2 => T1))
           then
!             T := Specific_Type (T1, T2);
  
!             if T = Universal_Integer then
!                T := Any_Modular;
              end if;
  
!             Add_One_Interp (N, Op_Id, T);
           end if;
+       end Check_Boolean_Pair;
  
!       --------------------------
!       -- Check_Right_Argument --
!       --------------------------
  
!       procedure Check_Right_Argument (T : Entity_Id) is
!          I  : Interp_Index;
!          It : Interp;
  
        begin
!          --  Defend against previous error
  
!          if Nkind (R) = N_Error then
!             null;
  
!          elsif not Is_Overloaded (R) then
!             Check_Boolean_Pair (T, Etype (R));
  
!          else
!             Get_First_Interp (R, I, It);
!             while Present (It.Typ) loop
!                Check_Boolean_Pair (T, It.Typ);
!                Get_Next_Interp (I, It);
!             end loop;
           end if;
!       end Check_Right_Argument;
  
!       --  Local variables
  
!       I  : Interp_Index;
!       It : Interp;
  
!    --  Start of processing for Find_Boolean_Types
  
+    begin
        if not Is_Overloaded (L) then
!          Check_Right_Argument (Etype (L));
  
        else
!          Get_First_Interp (L, I, It);
           while Present (It.Typ) loop
!             Check_Right_Argument (It.Typ);
!             Get_Next_Interp (I, It);
           end loop;
        end if;
!    end Find_Boolean_Types;
  
!    ------------------------------------
!    -- Find_Comparison_Equality_Types --
!    ------------------------------------
  
!    --  The context of the operator plays no role in resolving the operands,
!    --  so that if there is more than one interpretation of the operands that
!    --  is compatible with the comparison or equality, then the operation is
!    --  ambiguous, but this cannot be reported at this point because there is
!    --  no guarantee that the operation will be resolved to this operator yet.
  
!    procedure Find_Comparison_Equality_Types
       (L, R  : Node_Id;
        Op_Id : Entity_Id;
        N     : Node_Id)
     is
!       Op_Name : constant Name_Id := Chars (Op_Id);
!       Op_Typ  : Entity_Id renames Standard_Boolean;
  
!       function Try_Left_Interp (T : Entity_Id) return Entity_Id;
!       --  Try an interpretation of the left operand with type T. Return the
!       --  type of the interpretation of the right operand making up a valid
!       --  operand pair, or else Any_Type if the right operand is ambiguous,
!       --  otherwise Empty if no such pair exists.
  
!       function Is_Valid_Comparison_Type (T : Entity_Id) return Boolean;
!       --  Return true if T is a valid comparison type
  
!       function Is_Valid_Equality_Type
!         (T           : Entity_Id;
!          Anon_Access : Boolean) return Boolean;
!       --  Return true if T is a valid equality type
  
!       function Is_Valid_Pair (T1, T2 : Entity_Id) return Boolean;
!       --  Return true if T1 and T2 constitute a valid pair of operand types for
!       --  L and R respectively.
  
!       ---------------------
!       -- Try_Left_Interp --
!       ---------------------
  
!       function Try_Left_Interp (T : Entity_Id) return Entity_Id is
!          I       : Interp_Index;
!          It      : Interp;
!          R_Typ   : Entity_Id;
!          Valid_I : Interp_Index;
  
!       begin
!          --  Defend against previous error
  
!          if Nkind (R) = N_Error then
!             null;
  
!          --  Loop through the interpretations of the right operand
  
!          elsif not Is_Overloaded (R) then
!             if Is_Valid_Pair (T, Etype (R)) then
!                return Etype (R);
!             end if;
  
!          else
!             R_Typ   := Empty;
!             Valid_I := 0;
  
!             Get_First_Interp (R, I, It);
!             while Present (It.Typ) loop
!                if Is_Valid_Pair (T, It.Typ) then
!                   --  If several interpretations are possible, disambiguate
  
!                   if Present (R_Typ)
!                     and then Base_Type (It.Typ) /= Base_Type (R_Typ)
!                   then
!                      It := Disambiguate (R, Valid_I, I, Any_Type);
  
!                      if It = No_Interp then
!                         R_Typ := Any_Type;
!                         exit;
!                      end if;
  
!                   else
!                      Valid_I := I;
!                   end if;
  
!                   R_Typ := It.Typ;
                 end if;
  
!                Get_Next_Interp (I, It);
!             end loop;
  
!             if Present (R_Typ) then
!                return R_Typ;
              end if;
!          end if;
  
!          return Empty;
!       end Try_Left_Interp;
  
!       ------------------------------
!       -- Is_Valid_Comparison_Type --
!       ------------------------------
  
!       function Is_Valid_Comparison_Type (T : Entity_Id) return Boolean is
!       begin
!          --  The operation must be performed in a context where the operators
!          --  of the base type are visible.
  
!          if Is_Visible_Operator (N, Base_Type (T)) then
!             null;
  
!          --  Save candidate type for subsequent error message, if any
  
           else
!             if Valid_Comparison_Arg (T) then
!                Candidate_Type := T;
!             end if;
  
!             return False;
           end if;
  
!          --  Defer to the common implementation for the rest
  
!          return Valid_Comparison_Arg (T);
!       end Is_Valid_Comparison_Type;
  
!       ----------------------------
!       -- Is_Valid_Equality_Type --
!       ----------------------------
  
+       function Is_Valid_Equality_Type
+         (T           : Entity_Id;
+          Anon_Access : Boolean) return Boolean
+       is
        begin
!          --  The operation must be performed in a context where the operators
!          --  of the base type are visible. Deal with special types used with
!          --  access types before type resolution is done.
  
!          if Ekind (T) = E_Access_Attribute_Type
!            or else (Ekind (T) in E_Access_Subprogram_Type
!                                | E_Access_Protected_Subprogram_Type
!                       and then
!                     Ekind (Designated_Type (T)) /= E_Subprogram_Type)
!            or else Is_Visible_Operator (N, Base_Type (T))
!          then
!             null;
  
!          --  AI95-0230: Keep restriction imposed by Ada 83 and 95, do not allow
!          --  anonymous access types in universal_access equality operators.
  
!          elsif Anon_Access then
!             if Ada_Version < Ada_2005 then
!                return False;
              end if;
  
!          --  Save candidate type for subsequent error message, if any
  
           else
!             if Valid_Equality_Arg (T) then
!                Candidate_Type := T;
!             end if;
  
              return False;
           end if;
  
!          --  For the use of a "/=" operator on a tagged type, several possible
!          --  interpretations of equality need to be considered, we don't want
!          --  the default inequality declared in Standard to be chosen, and the
!          --  "/=" operator will be rewritten as a negation of "=" (see the end
!          --  of Analyze_Comparison_Equality_Op). This ensures the rewriting
!          --  occurs during analysis rather than being delayed until expansion.
!          --  Note that, if the node is N_Op_Ne but Op_Id is Name_Op_Eq, then we
!          --  still proceed with the interpretation, because this indicates
!          --  the aforementioned rewriting case where the interpretation to be
!          --  considered is actually that of the "=" operator.
  
!          if Nkind (N) = N_Op_Ne
!            and then Op_Name /= Name_Op_Eq
!            and then Is_Tagged_Type (T)
!          then
!             return False;
  
!          --  Defer to the common implementation for the rest
  
!          else
!             return Valid_Equality_Arg (T);
           end if;
+       end Is_Valid_Equality_Type;
  
!       -------------------
!       -- Is_Valid_Pair --
!       -------------------
  
!       function Is_Valid_Pair (T1, T2 : Entity_Id) return Boolean is
!       begin
!          if Op_Name = Name_Op_Eq or else Op_Name = Name_Op_Ne then
!             declare
!                Anon_Access : constant Boolean :=
!                  Is_Anonymous_Access_Type (T1)
!                    or else Is_Anonymous_Access_Type (T2);
!                --  RM 4.5.2(9.1/2): At least one of the operands of an equality
!                --  operator for universal_access shall be of specific anonymous
!                --  access type.
  
!             begin
!                if not Is_Valid_Equality_Type (T1, Anon_Access)
!                  or else not Is_Valid_Equality_Type (T2, Anon_Access)
!                then
!                   return False;
!                end if;
!             end;
  
!          else
!             if not Is_Valid_Comparison_Type (T1)
!               or else not Is_Valid_Comparison_Type (T2)
              then
!                return False;
              end if;
+          end if;
  
!          return Covers (T1 => T1, T2 => T2)
!            or else Covers (T1 => T2, T2 => T1)
!            or else Is_User_Defined_Literal (L, T2)
!            or else Is_User_Defined_Literal (R, T1);
!       end Is_Valid_Pair;
  
!       --  Local variables
  
!       I       : Interp_Index;
!       It      : Interp;
!       L_Typ   : Entity_Id;
!       R_Typ   : Entity_Id;
!       T       : Entity_Id;
!       Valid_I : Interp_Index;
  
!    --  Start of processing for Find_Comparison_Equality_Types
  
!    begin
!       --  Loop through the interpretations of the left operand
  
!       if not Is_Overloaded (L) then
!          T := Try_Left_Interp (Etype (L));
  
!          if Present (T) then
!             Set_Etype (R, T);
!             Add_One_Interp (N, Op_Id, Op_Typ, Find_Unique_Type (L, R));
           end if;
  
!       else
!          L_Typ   := Empty;
!          R_Typ   := Empty;
!          Valid_I := 0;
  
!          Get_First_Interp (L, I, It);
!          while Present (It.Typ) loop
!             T := Try_Left_Interp (It.Typ);
  
!             if Present (T) then
!                --  If several interpretations are possible, disambiguate
  
!                if Present (L_Typ)
!                  and then Base_Type (It.Typ) /= Base_Type (L_Typ)
!                then
!                   It := Disambiguate (L, Valid_I, I, Any_Type);
  
!                   if It = No_Interp then
!                      L_Typ := Any_Type;
!                      R_Typ := T;
!                      exit;
!                   end if;
  
                 else
!                   Valid_I := I;
                 end if;
  
!                L_Typ := It.Typ;
!                R_Typ := T;
              end if;
  
!             Get_Next_Interp (I, It);
!          end loop;
  
!          if Present (L_Typ) then
!             Set_Etype (L, L_Typ);
!             Set_Etype (R, R_Typ);
!             Add_One_Interp (N, Op_Id, Op_Typ, Find_Unique_Type (L, R));
           end if;
!       end if;
!    end Find_Comparison_Equality_Types;
  
!    ------------------------------
!    -- Find_Concatenation_Types --
!    ------------------------------
  
!    procedure Find_Concatenation_Types
!      (L, R  : Node_Id;
!       Op_Id : Entity_Id;
!       N     : Node_Id)
!    is
!       Is_String : constant Boolean := Nkind (L) = N_String_Literal
!                                         or else
!                                       Nkind (R) = N_String_Literal;
!       Op_Type   : constant Entity_Id := Etype (Op_Id);
  
!    begin
!       if Is_Array_Type (Op_Type)
  
!         --  Small but very effective optimization: if at least one operand is a
!         --  string literal, then the type of the operator must be either array
!         --  of characters or array of strings.
  
!         and then (not Is_String
!                     or else
!                   Is_Character_Type (Component_Type (Op_Type))
!                     or else
!                   Is_String_Type (Component_Type (Op_Type)))
  
!         and then not Is_Limited_Type (Op_Type)
  
!         and then (Has_Compatible_Type (L, Op_Type)
!                     or else
!                   Has_Compatible_Type (L, Component_Type (Op_Type)))
  
!         and then (Has_Compatible_Type (R, Op_Type)
!                     or else
!                   Has_Compatible_Type (R, Component_Type (Op_Type)))
!       then
!          Add_One_Interp (N, Op_Id, Op_Type);
        end if;
!    end Find_Concatenation_Types;
  
     -------------------------
     -- Find_Negation_Types --
*************** package body Sem_Ch4 is
*** 7556,7562 ****
              then
                 return;
  
!             elsif Has_Possible_Literal_Aspects (N) then
                 return;
  
              --  If we have a logical operator, one of whose operands is
--- 7612,7620 ----
              then
                 return;
  
!             elsif Present (Entity (N))
!               and then Has_Possible_Literal_Aspects (N)
!             then
                 return;
  
              --  If we have a logical operator, one of whose operands is
*************** package body Sem_Ch4 is
*** 7605,7611 ****
                           Standard_Address, Relocate_Node (R)));
  
                       if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                         Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
                       end if;
--- 7663,7669 ----
                           Standard_Address, Relocate_Node (R)));
  
                       if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                         Analyze_Comparison_Equality_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
                       end if;
*************** package body Sem_Ch4 is
*** 7627,7633 ****
                           Standard_Address, Relocate_Node (R)));
  
                       if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                         Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
                       end if;
--- 7685,7691 ----
                           Standard_Address, Relocate_Node (R)));
  
                       if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                         Analyze_Comparison_Equality_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
                       end if;
*************** package body Sem_Ch4 is
*** 7657,7663 ****
                           Standard_Address, Relocate_Node (R)));
  
                       if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                         Analyze_Comparison_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
                       end if;
--- 7715,7721 ----
                           Standard_Address, Relocate_Node (R)));
  
                       if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                         Analyze_Comparison_Equality_Op (N);
                       else
                          Analyze_Arithmetic_Op (N);
                       end if;
*************** package body Sem_Ch4 is
*** 7681,7687 ****
                    Replace_Null_By_Null_Address (N);
  
                    if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                      Analyze_Comparison_Op (N);
                    else
                       Analyze_Arithmetic_Op (N);
                    end if;
--- 7739,7745 ----
                    Replace_Null_By_Null_Address (N);
  
                    if Nkind (N) in N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt then
!                      Analyze_Comparison_Equality_Op (N);
                    else
                       Analyze_Arithmetic_Op (N);
                    end if;
*************** package body Sem_Ch4 is
*** 7758,7764 ****
                    Rewrite (R,
                      Unchecked_Convert_To (
                        Standard_Address, Relocate_Node (R)));
!                   Analyze_Equality_Op (N);
                    return;
  
                 --  Under relaxed RM semantics silently replace occurrences of
--- 7816,7822 ----
                    Rewrite (R,
                      Unchecked_Convert_To (
                        Standard_Address, Relocate_Node (R)));
!                   Analyze_Comparison_Equality_Op (N);
                    return;
  
                 --  Under relaxed RM semantics silently replace occurrences of
*************** package body Sem_Ch4 is
*** 7766,7772 ****
  
                 elsif Null_To_Null_Address_Convert_OK (N) then
                    Replace_Null_By_Null_Address (N);
!                   Analyze_Equality_Op (N);
                    return;
                 end if;
              end if;
--- 7824,7830 ----
  
                 elsif Null_To_Null_Address_Convert_OK (N) then
                    Replace_Null_By_Null_Address (N);
!                   Analyze_Comparison_Equality_Op (N);
                    return;
                 end if;
              end if;
*************** package body Sem_Ch4 is
*** 7938,7943 ****
--- 7996,8128 ----
        return Etype (N) /= Any_Type;
     end Has_Possible_Literal_Aspects;
  
+    -----------------------------------------------
+    -- Nondispatching_Call_To_Abstract_Operation --
+    -----------------------------------------------
+ 
+    procedure Nondispatching_Call_To_Abstract_Operation
+      (N : Node_Id;
+       Abstract_Op : Entity_Id)
+    is
+       Typ : constant Entity_Id := Etype (N);
+ 
+    begin
+       --  In an instance body, this is a runtime check, but one we know will
+       --  fail, so give an appropriate warning. As usual this kind of warning
+       --  is an error in SPARK mode.
+ 
+       Error_Msg_Sloc := Sloc (Abstract_Op);
+ 
+       if In_Instance_Body and then SPARK_Mode /= On then
+          Error_Msg_NE
+            ("??cannot call abstract operation& declared#",
+             N, Abstract_Op);
+          Error_Msg_N ("\Program_Error [??", N);
+          Rewrite (N,
+            Make_Raise_Program_Error (Sloc (N),
+            Reason => PE_Explicit_Raise));
+          Analyze (N);
+          Set_Etype (N, Typ);
+ 
+       else
+          Error_Msg_NE
+            ("cannot call abstract operation& declared#",
+             N, Abstract_Op);
+          Set_Etype (N, Any_Type);
+       end if;
+    end Nondispatching_Call_To_Abstract_Operation;
+ 
+    ----------------------------------------------
+    -- Possible_Type_For_Conditional_Expression --
+    ----------------------------------------------
+ 
+    function Possible_Type_For_Conditional_Expression
+      (T1, T2 : Entity_Id) return Entity_Id
+    is
+       function Is_Access_Protected_Subprogram_Attribute
+         (T : Entity_Id) return Boolean;
+       --  Return true if T is the type of an access-to-protected-subprogram
+       --  attribute.
+ 
+       function Is_Access_Subprogram_Attribute (T : Entity_Id) return Boolean;
+       --  Return true if T is the type of an access-to-subprogram attribute
+ 
+       ----------------------------------------------
+       -- Is_Access_Protected_Subprogram_Attribute --
+       ----------------------------------------------
+ 
+       function Is_Access_Protected_Subprogram_Attribute
+         (T : Entity_Id) return Boolean
+       is
+       begin
+          return Ekind (T) = E_Access_Protected_Subprogram_Type
+            and then Ekind (Designated_Type (T)) /= E_Subprogram_Type;
+       end Is_Access_Protected_Subprogram_Attribute;
+ 
+       ------------------------------------
+       -- Is_Access_Subprogram_Attribute --
+       ------------------------------------
+ 
+       function Is_Access_Subprogram_Attribute (T : Entity_Id) return Boolean is
+       begin
+          return Ekind (T) = E_Access_Subprogram_Type
+            and then Ekind (Designated_Type (T)) /= E_Subprogram_Type;
+       end Is_Access_Subprogram_Attribute;
+ 
+    --  Start of processing for Possible_Type_For_Conditional_Expression
+ 
+    begin
+       --  If both types are those of similar access attributes or allocators,
+       --  pick one of them, for example the first.
+ 
+       if Ekind (T1) in E_Access_Attribute_Type | E_Allocator_Type
+         and then Ekind (T2) in E_Access_Attribute_Type | E_Allocator_Type
+       then
+          return T1;
+ 
+       elsif Is_Access_Subprogram_Attribute (T1)
+         and then Is_Access_Subprogram_Attribute (T2)
+         and then
+           Subtype_Conformant (Designated_Type (T1), Designated_Type (T2))
+       then
+          return T1;
+ 
+       elsif Is_Access_Protected_Subprogram_Attribute (T1)
+         and then Is_Access_Protected_Subprogram_Attribute (T2)
+         and then
+           Subtype_Conformant (Designated_Type (T1), Designated_Type (T2))
+       then
+          return T1;
+ 
+       --  The other case to be considered is a pair of tagged types
+ 
+       elsif Is_Tagged_Type (T1) and then Is_Tagged_Type (T2) then
+          --  Covers performs the same checks when T1 or T2 are a CW type, so
+          --  we don't need to do them again here.
+ 
+          if not Is_Class_Wide_Type (T1) and then Is_Ancestor (T1, T2) then
+             return T1;
+ 
+          elsif not Is_Class_Wide_Type (T2) and then Is_Ancestor (T2, T1) then
+             return T2;
+ 
+          --  Neither type is an ancestor of the other, but they may have one in
+          --  common, so we pick the first type as above. We could perform here
+          --  the computation of the nearest common ancestors of T1 and T2, but
+          --  this would require a significant amount of work and the practical
+          --  benefit would very likely be negligible.
+ 
+          else
+             return T1;
+          end if;
+ 
+       --  Otherwise no type is possible
+ 
+       else
+          return Empty;
+       end if;
+    end Possible_Type_For_Conditional_Expression;
+ 
     --------------------------------
     -- Remove_Abstract_Operations --
     --------------------------------
*************** package body Sem_Ch4 is
*** 8166,8175 ****
  
                 --  Removal of abstract operation left no viable candidate
  
!                Set_Etype (N, Any_Type);
!                Error_Msg_Sloc := Sloc (Abstract_Op);
!                Error_Msg_NE
!                  ("cannot call abstract operation& declared#", N, Abstract_Op);
  
              --  In Ada 2005, an abstract operation may disable predefined
              --  operators. Since the context is not yet known, we mark the
--- 8351,8357 ----
  
                 --  Removal of abstract operation left no viable candidate
  
!                Nondispatching_Call_To_Abstract_Operation (N, Abstract_Op);
  
              --  In Ada 2005, an abstract operation may disable predefined
              --  operators. Since the context is not yet known, we mark the
*************** package body Sem_Ch4 is
*** 9241,9259 ****
              Save_Interps (Subprog, Node_To_Replace);
  
           else
-             --  The type of the subprogram may be a limited view obtained
-             --  transitively from another unit. If full view is available,
-             --  use it to analyze call. If there is no nonlimited view, then
-             --  this is diagnosed when analyzing the rewritten call.
- 
-             declare
-                T : constant Entity_Id := Etype (Subprog);
-             begin
-                if From_Limited_With (T) then
-                   Set_Etype (Entity (Subprog), Available_View (T));
-                end if;
-             end;
- 
              Analyze (Node_To_Replace);
  
              --  If the operation has been rewritten into a call, which may get
--- 9423,9428 ----
*************** package body Sem_Ch4 is
*** 9714,9720 ****
  
           if (not Is_Tagged_Type (Obj_Type)
                and then
!                 (not (Extensions_Allowed or Allow_Extensions)
                    or else not Present (Primitive_Operations (Obj_Type))))
             or else Is_Incomplete_Type (Obj_Type)
           then
--- 9883,9889 ----
  
           if (not Is_Tagged_Type (Obj_Type)
                and then
!                 (not (Core_Extensions_Allowed or Allow_Extensions)
                    or else not Present (Primitive_Operations (Obj_Type))))
             or else Is_Incomplete_Type (Obj_Type)
           then
*************** package body Sem_Ch4 is
*** 9743,9749 ****
                 --  have homographic prefixed-view operations that could result
                 --  in an ambiguity, but handling properly may be tricky. ???)
  
!                if (Extensions_Allowed or Allow_Extensions)
                   and then not Prim_Result
                   and then Is_Named_Access_Type (Prev_Obj_Type)
                   and then Present (Direct_Primitive_Operations (Prev_Obj_Type))
--- 9912,9918 ----
                 --  have homographic prefixed-view operations that could result
                 --  in an ambiguity, but handling properly may be tricky. ???)
  
!                if (Core_Extensions_Allowed or Allow_Extensions)
                   and then not Prim_Result
                   and then Is_Named_Access_Type (Prev_Obj_Type)
                   and then Present (Direct_Primitive_Operations (Prev_Obj_Type))
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch4.ads gcc-13.1.0/gcc/ada/sem_ch4.ads
*** gcc-12.2.0/gcc/ada/sem_ch4.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch4.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch4  is
*** 31,39 ****
     procedure Analyze_Arithmetic_Op             (N : Node_Id);
     procedure Analyze_Call                      (N : Node_Id);
     procedure Analyze_Case_Expression           (N : Node_Id);
!    procedure Analyze_Comparison_Op             (N : Node_Id);
     procedure Analyze_Concatenation             (N : Node_Id);
-    procedure Analyze_Equality_Op               (N : Node_Id);
     procedure Analyze_Explicit_Dereference      (N : Node_Id);
     procedure Analyze_Expression_With_Actions   (N : Node_Id);
     procedure Analyze_If_Expression             (N : Node_Id);
--- 31,38 ----
     procedure Analyze_Arithmetic_Op             (N : Node_Id);
     procedure Analyze_Call                      (N : Node_Id);
     procedure Analyze_Case_Expression           (N : Node_Id);
!    procedure Analyze_Comparison_Equality_Op    (N : Node_Id);
     procedure Analyze_Concatenation             (N : Node_Id);
     procedure Analyze_Explicit_Dereference      (N : Node_Id);
     procedure Analyze_Expression_With_Actions   (N : Node_Id);
     procedure Analyze_If_Expression             (N : Node_Id);
*************** package Sem_Ch4  is
*** 54,59 ****
--- 53,62 ----
     procedure Analyze_Unchecked_Expression      (N : Node_Id);
     procedure Analyze_Unchecked_Type_Conversion (N : Node_Id);
  
+    procedure Ambiguous_Operands (N : Node_Id);
+    --  Give an error for comparison, equality and membership operators with
+    --  ambiguous operands, and list possible interpretations.
+ 
     procedure Analyze_Indexed_Component_Form    (N : Node_Id);
     --  Prior to semantic analysis, an indexed component node can denote any
     --  of the following syntactic constructs:
*************** package Sem_Ch4  is
*** 64,69 ****
--- 67,78 ----
     --  The resolution of the construct requires some semantic information
     --  on the prefix and the indexes.
  
+    procedure Nondispatching_Call_To_Abstract_Operation
+      (N           : Node_Id;
+       Abstract_Op : Entity_Id);
+    --  Give an error, or a warning and rewrite N to raise Program_Error because
+    --  it is a nondispatching call to an abstract operation.
+ 
     function Try_Object_Operation
       (N                : Node_Id;
        CW_Test_Only     : Boolean := False;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch5.adb gcc-13.1.0/gcc/ada/sem_ch5.adb
*** gcc-12.2.0/gcc/ada/sem_ch5.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch5.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Targparm;       use Targparm;
*** 66,71 ****
--- 66,72 ----
  with Tbuild;         use Tbuild;
  with Ttypes;         use Ttypes;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Ch5 is
  
*************** package body Sem_Ch5 is
*** 306,312 ****
           --  get the actual subtype (needed for the unconstrained case). If the
           --  operand is the actual in an entry declaration, then within the
           --  accept statement it is replaced with a local renaming, which may
!          --  also have an actual subtype.
  
           if Is_Entity_Name (Opnd)
             and then (Ekind (Entity (Opnd)) in E_Out_Parameter
--- 307,314 ----
           --  get the actual subtype (needed for the unconstrained case). If the
           --  operand is the actual in an entry declaration, then within the
           --  accept statement it is replaced with a local renaming, which may
!          --  also have an actual subtype. Likewise for a return object that
!          --  lives on the secondary stack.
  
           if Is_Entity_Name (Opnd)
             and then (Ekind (Entity (Opnd)) in E_Out_Parameter
*************** package body Sem_Ch5 is
*** 317,323 ****
                            and then Nkind (Parent (Entity (Opnd))) =
                                       N_Object_Renaming_Declaration
                            and then Nkind (Parent (Parent (Entity (Opnd)))) =
!                                      N_Accept_Statement))
           then
              Opnd_Type := Get_Actual_Subtype (Opnd);
  
--- 319,326 ----
                            and then Nkind (Parent (Entity (Opnd))) =
                                       N_Object_Renaming_Declaration
                            and then Nkind (Parent (Parent (Entity (Opnd)))) =
!                                      N_Accept_Statement)
!                       or else Is_Secondary_Stack_Return_Object (Entity (Opnd)))
           then
              Opnd_Type := Get_Actual_Subtype (Opnd);
  
*************** package body Sem_Ch5 is
*** 1042,1049 ****
                          if Ekind (Comp_Id) = E_Component
                            and then Nkind (Parent (Comp_Id))
                                       = N_Component_Declaration
!                           and then
!                             not Present (Expression (Parent (Comp_Id)))
                          then
                             return True;
                          end if;
--- 1045,1051 ----
                          if Ekind (Comp_Id) = E_Component
                            and then Nkind (Parent (Comp_Id))
                                       = N_Component_Declaration
!                           and then No (Expression (Parent (Comp_Id)))
                          then
                             return True;
                          end if;
*************** package body Sem_Ch5 is
*** 1111,1117 ****
  
           --  Where the object is the same on both sides
  
!          and then Same_Object (Lhs, Original_Node (Rhs))
  
           --  But exclude the case where the right side was an operation that
           --  got rewritten (e.g. JUNK + K, where K was known to be zero). We
--- 1113,1119 ----
  
           --  Where the object is the same on both sides
  
!          and then Same_Object (Lhs, Rhs)
  
           --  But exclude the case where the right side was an operation that
           --  got rewritten (e.g. JUNK + K, where K was known to be zero). We
*************** package body Sem_Ch5 is
*** 1152,1164 ****
  
        Record_Elaboration_Scenario (N);
  
!       --  Set Referenced_As_LHS if appropriate. We only set this flag if the
!       --  assignment is a source assignment in the extended main source unit.
!       --  We are not interested in any reference information outside this
!       --  context, or in compiler generated assignment statements.
  
        if Comes_From_Source (N)
!         and then In_Extended_Main_Source_Unit (Lhs)
        then
           Set_Referenced_Modified (Lhs, Out_Param => False);
        end if;
--- 1154,1169 ----
  
        Record_Elaboration_Scenario (N);
  
!       --  Set Referenced_As_LHS if appropriate. We are not interested in
!       --  compiler-generated assignment statements, nor in references outside
!       --  the extended main source unit. We check whether the Original_Node is
!       --  in the extended main source unit because in the case of a renaming of
!       --  a component of a packed array, the Lhs itself has a Sloc from the
!       --  place of the renaming.
  
        if Comes_From_Source (N)
!         and then (In_Extended_Main_Source_Unit (Lhs)
!           or else In_Extended_Main_Source_Unit (Original_Node (Lhs)))
        then
           Set_Referenced_Modified (Lhs, Out_Param => False);
        end if;
*************** package body Sem_Ch5 is
*** 1207,1227 ****
                 --  There may have been a previous reference to a component of
                 --  the variable, which in general removes the Last_Assignment
                 --  field of the variable to indicate a relevant use of the
!                --  previous assignment. However, if the assignment is to a
!                --  subcomponent the reference may not have registered, because
!                --  it is not possible to determine whether the context is an
!                --  assignment. In those cases we generate a Deferred_Reference,
!                --  to be used at the end of compilation to generate the right
!                --  kind of reference, and we suppress a potential warning for
!                --  a useless assignment, which might be premature. This may
!                --  lose a warning in rare cases, but seems preferable to a
!                --  misleading warning.
  
                 if Warn_On_Modified_Unread
                   and then Is_Assignable (Ent)
                   and then Comes_From_Source (N)
                   and then In_Extended_Main_Source_Unit (Ent)
-                  and then not Has_Deferred_Reference (Ent)
                   and then not Has_Target_Names (N)
                 then
                    Warn_On_Useless_Assignment (Ent, N);
--- 1212,1223 ----
                 --  There may have been a previous reference to a component of
                 --  the variable, which in general removes the Last_Assignment
                 --  field of the variable to indicate a relevant use of the
!                --  previous assignment.
  
                 if Warn_On_Modified_Unread
                   and then Is_Assignable (Ent)
                   and then Comes_From_Source (N)
                   and then In_Extended_Main_Source_Unit (Ent)
                   and then not Has_Target_Names (N)
                 then
                    Warn_On_Useless_Assignment (Ent, N);
*************** package body Sem_Ch5 is
*** 1385,1395 ****
           --  Initialize unblocked exit count for statements of begin block
           --  plus one for each exception handler that is present.
  
!          Unblocked_Exit_Count := 1;
! 
!          if Present (EH) then
!             Unblocked_Exit_Count := Unblocked_Exit_Count + List_Length (EH);
!          end if;
  
           --  If a label is present analyze it and mark it as referenced
  
--- 1381,1387 ----
           --  Initialize unblocked exit count for statements of begin block
           --  plus one for each exception handler that is present.
  
!          Unblocked_Exit_Count := 1 + List_Length (EH);
  
           --  If a label is present analyze it and mark it as referenced
  
*************** package body Sem_Ch5 is
*** 1627,1633 ****
        --  out non-discretes may resolve the ambiguity.
        --  But GNAT extensions allow casing on non-discretes.
  
!       elsif Extensions_Allowed and then Is_Overloaded (Exp) then
  
           --  It would be nice if we could generate all the right error
           --  messages by calling "Resolve (Exp, Any_Type);" in the
--- 1619,1625 ----
        --  out non-discretes may resolve the ambiguity.
        --  But GNAT extensions allow casing on non-discretes.
  
!       elsif Core_Extensions_Allowed and then Is_Overloaded (Exp) then
  
           --  It would be nice if we could generate all the right error
           --  messages by calling "Resolve (Exp, Any_Type);" in the
*************** package body Sem_Ch5 is
*** 1645,1651 ****
        --  Check for a GNAT-extension "general" case statement (i.e., one where
        --  the type of the selecting expression is not discrete).
  
!       elsif Extensions_Allowed
           and then not Is_Discrete_Type (Etype (Exp))
        then
           Resolve (Exp, Etype (Exp));
--- 1637,1643 ----
        --  Check for a GNAT-extension "general" case statement (i.e., one where
        --  the type of the selecting expression is not discrete).
  
!       elsif Core_Extensions_Allowed
           and then not Is_Discrete_Type (Etype (Exp))
        then
           Resolve (Exp, Etype (Exp));
*************** package body Sem_Ch5 is
*** 1683,1689 ****
             ("(Ada 83) case expression cannot be of a generic type", Exp);
           return;
  
!       elsif not Extensions_Allowed
          and then not Is_Discrete_Type (Exp_Type)
        then
           Error_Msg_N
--- 1675,1681 ----
             ("(Ada 83) case expression cannot be of a generic type", Exp);
           return;
  
!       elsif not Core_Extensions_Allowed
          and then not Is_Discrete_Type (Exp_Type)
        then
           Error_Msg_N
*************** package body Sem_Ch5 is
*** 2028,2040 ****
  
        --  Now to analyze the elsif parts if any are present
  
!       if Present (Elsif_Parts (N)) then
!          E := First (Elsif_Parts (N));
!          while Present (E) loop
!             Analyze_Cond_Then (E);
!             Next (E);
!          end loop;
!       end if;
  
        if Present (Else_Statements (N)) then
           Analyze_Statements (Else_Statements (N));
--- 2020,2030 ----
  
        --  Now to analyze the elsif parts if any are present
  
!       E := First (Elsif_Parts (N));
!       while Present (E) loop
!          Analyze_Cond_Then (E);
!          Next (E);
!       end loop;
  
        if Present (Else_Statements (N)) then
           Analyze_Statements (Else_Statements (N));
*************** package body Sem_Ch5 is
*** 2063,2075 ****
           if Is_True (Expr_Value (Condition (N))) then
              Remove_Warning_Messages (Else_Statements (N));
  
!             if Present (Elsif_Parts (N)) then
!                E := First (Elsif_Parts (N));
!                while Present (E) loop
!                   Remove_Warning_Messages (Then_Statements (E));
!                   Next (E);
!                end loop;
!             end if;
  
           else
              Remove_Warning_Messages (Then_Statements (N));
--- 2053,2063 ----
           if Is_True (Expr_Value (Condition (N))) then
              Remove_Warning_Messages (Else_Statements (N));
  
!             E := First (Elsif_Parts (N));
!             while Present (E) loop
!                Remove_Warning_Messages (Then_Statements (E));
!                Next (E);
!             end loop;
  
           else
              Remove_Warning_Messages (Then_Statements (N));
*************** package body Sem_Ch5 is
*** 2121,2129 ****
     --  An implicit label declaration is generated in the innermost enclosing
     --  declarative part. This is done for labels, and block and loop names.
  
-    --  Note: any changes in this routine may need to be reflected in
-    --  Analyze_Label_Entity.
- 
     procedure Analyze_Implicit_Label_Declaration (N : Node_Id) is
        Id : constant Node_Id := Defining_Identifier (N);
     begin
--- 2109,2114 ----
*************** package body Sem_Ch5 is
*** 2131,2136 ****
--- 2116,2128 ----
        Mutate_Ekind        (Id, E_Label);
        Set_Etype           (Id, Standard_Void_Type);
        Set_Enclosing_Scope (Id, Current_Scope);
+ 
+       --  A label declared within a Ghost region becomes Ghost (SPARK RM
+       --  6.9(2)).
+ 
+       if Ghost_Mode > None then
+          Set_Is_Ghost_Entity (Id);
+       end if;
     end Analyze_Implicit_Label_Declaration;
  
     ------------------------------
*************** package body Sem_Ch5 is
*** 2205,2211 ****
              if Is_Array_Type (Typ)
                or else Is_Reversible_Iterator (Typ)
                or else
!                 (Present (Find_Aspect (Typ, Aspect_Iterable))
                    and then
                      Present
                        (Get_Iterable_Type_Primitive (Typ, Name_Previous)))
--- 2197,2203 ----
              if Is_Array_Type (Typ)
                or else Is_Reversible_Iterator (Typ)
                or else
!                 (Has_Aspect (Typ, Aspect_Iterable)
                    and then
                      Present
                        (Get_Iterable_Type_Primitive (Typ, Name_Previous)))
*************** package body Sem_Ch5 is
*** 2224,2230 ****
  
        procedure Check_Subtype_Definition (Comp_Type : Entity_Id) is
        begin
!          if not Present (Subt) then
              return;
           end if;
  
--- 2216,2222 ----
  
        procedure Check_Subtype_Definition (Comp_Type : Entity_Id) is
        begin
!          if No (Subt) then
              return;
           end if;
  
*************** package body Sem_Ch5 is
*** 2244,2252 ****
                    Subt, Comp_Type);
              end if;
  
!          elsif Present (Subt)
!            and then (not Covers (Base_Type (Bas), Comp_Type)
!                       or else not Subtypes_Statically_Match (Bas, Comp_Type))
           then
              if Is_Array_Type (Typ) then
                 Error_Msg_NE
--- 2236,2243 ----
                    Subt, Comp_Type);
              end if;
  
!          elsif not Covers (Base_Type (Bas), Comp_Type)
!            or else not Subtypes_Statically_Match (Bas, Comp_Type)
           then
              if Is_Array_Type (Typ) then
                 Error_Msg_NE
*************** package body Sem_Ch5 is
*** 2316,2322 ****
                            Defining_Identifier => S,
                            Subtype_Indication  => New_Copy_Tree (Subt));
              begin
!                Insert_Before (Parent (Parent (N)), Decl);
                 Analyze (Decl);
                 Rewrite (Subt, New_Occurrence_Of (S, Sloc (Subt)));
              end;
--- 2307,2313 ----
                            Defining_Identifier => S,
                            Subtype_Indication  => New_Copy_Tree (Subt));
              begin
!                Insert_Action (N, Decl);
                 Analyze (Decl);
                 Rewrite (Subt, New_Occurrence_Of (S, Sloc (Subt)));
              end;
*************** package body Sem_Ch5 is
*** 2343,2349 ****
                    Decl :=
                      Make_Full_Type_Declaration (Loc,
                        Defining_Identifier => S,
!                       Type_Definition  =>
                          New_Copy_Tree
                            (Access_To_Subprogram_Definition (Subt)));
                 end if;
--- 2334,2340 ----
                    Decl :=
                      Make_Full_Type_Declaration (Loc,
                        Defining_Identifier => S,
!                       Type_Definition     =>
                          New_Copy_Tree
                            (Access_To_Subprogram_Definition (Subt)));
                 end if;
*************** package body Sem_Ch5 is
*** 2443,2455 ****
  
        if not Is_Entity_Name (Iter_Name)
  
!         --  When the context is a quantified expression, the renaming
!         --  declaration is delayed until the expansion phase if we are
!         --  doing expansion.
  
!         and then (Nkind (Parent (N)) /= N_Quantified_Expression
!                    or else (Operating_Mode = Check_Semantics
!                             and then not GNATprove_Mode))
  
          --  Do not perform this expansion when expansion is disabled, where the
          --  temporary may hide the transformation of a selected component into
--- 2434,2442 ----
  
        if not Is_Entity_Name (Iter_Name)
  
!         --  Do not perform this expansion in preanalysis
  
!         and then Full_Analysis
  
          --  Do not perform this expansion when expansion is disabled, where the
          --  temporary may hide the transformation of a selected component into
*************** package body Sem_Ch5 is
*** 2541,2546 ****
--- 2528,2534 ----
                  Subtype_Mark        => New_Occurrence_Of (Typ, Loc),
                  Name                =>
                    New_Copy_Tree (Iter_Name, New_Sloc => Loc));
+             Set_Comes_From_Iterator (Decl);
  
              Insert_Actions (Parent (Parent (N)), New_List (Decl));
              Rewrite (Name (N), New_Occurrence_Of (Id, Loc));
*************** package body Sem_Ch5 is
*** 2761,2769 ****
                 end;
              end if;
  
!          --  IN iterator, domain is a range, or a call to Iterate function
  
           else
              --  For an iteration of the form IN, the name must denote an
              --  iterator, typically the result of a call to Iterate. Give a
              --  useful error message when the name is a container by itself.
--- 2749,2769 ----
                 end;
              end if;
  
!          --  IN iterator, domain is a range, a call to Iterate function,
!          --  or an object/actual parameter of an iterator type.
  
           else
+             --  If the type of the name is class-wide and its root type is a
+             --  derived type, the primitive operations (First, Next, etc.) are
+             --  those inherited by its specific type. Calls to these primitives
+             --  will be dispatching.
+ 
+             if Is_Class_Wide_Type (Typ)
+               and then Is_Derived_Type (Etype (Typ))
+             then
+                Typ := Etype (Typ);
+             end if;
+ 
              --  For an iteration of the form IN, the name must denote an
              --  iterator, typically the result of a call to Iterate. Give a
              --  useful error message when the name is a container by itself.
*************** package body Sem_Ch5 is
*** 2878,2895 ****
        Kill_Current_Values;
     end Analyze_Label;
  
-    --------------------------
-    -- Analyze_Label_Entity --
-    --------------------------
- 
-    procedure Analyze_Label_Entity (E : Entity_Id) is
-    begin
-       Mutate_Ekind        (E, E_Label);
-       Set_Etype           (E, Standard_Void_Type);
-       Set_Enclosing_Scope (E, Current_Scope);
-       Set_Reachable       (E, True);
-    end Analyze_Label_Entity;
- 
     ------------------------------------------
     -- Analyze_Loop_Parameter_Specification --
     ------------------------------------------
--- 2878,2883 ----
*************** package body Sem_Ch5 is
*** 3378,3386 ****
           declare
              Flist : constant List_Id := Freeze_Entity (Id, N);
           begin
!             if Is_Non_Empty_List (Flist) then
!                Insert_Actions (N, Flist);
!             end if;
           end;
        end if;
  
--- 3366,3372 ----
           declare
              Flist : constant List_Id := Freeze_Entity (Id, N);
           begin
!             Insert_Actions (N, Flist);
           end;
        end if;
  
*************** package body Sem_Ch5 is
*** 3675,3680 ****
--- 3661,3667 ----
           begin
              return
                Present (Def_Iter)
+                 and then Present (Etype (Def_Iter))
                  and then Requires_Transient_Scope (Etype (Def_Iter));
           end Has_Sec_Stack_Default_Iterator;
  
*************** package body Sem_Ch5 is
*** 4012,4017 ****
--- 3999,4005 ----
  
              if Ekind (Ent) = E_Label then
                 Reinit_Field_To_Zero (Ent, F_Enclosing_Scope);
+                Reinit_Field_To_Zero (Ent, F_Reachable);
                 Mutate_Ekind (Ent, E_Loop);
  
                 if Nkind (Parent (Ent)) = N_Implicit_Label_Declaration then
*************** package body Sem_Ch5 is
*** 4051,4056 ****
--- 4039,4050 ----
        --      range requires the secondary stack. In this case the loop is
        --      wrapped within a block in order to manage the secondary stack.
  
+       --  ??? This overlooks finalization: the loop may leave the secondary
+       --  stack untouched, but its iterator or discrete range may need
+       --  finalization, in which case the block is also required. Therefore
+       --  the criterion must be based on Sem_Util.Requires_Transient_Scope,
+       --  which happens to be what is currently implemented.
+ 
        if Present (Iter) then
           declare
              Stop_Processing : Boolean;
*************** package body Sem_Ch5 is
*** 4383,4389 ****
  
        S := First (L);
        while Present (S) loop
!          if Nkind (S) = N_Label then
              Set_Reachable (Entity (Identifier (S)), False);
           end if;
  
--- 4377,4385 ----
  
        S := First (L);
        while Present (S) loop
!          if Nkind (S) = N_Label
!            and then Ekind (Entity (Identifier (S))) = E_Label
!          then
              Set_Reachable (Entity (Identifier (S)), False);
           end if;
  
*************** package body Sem_Ch5 is
*** 4396,4545 ****
     ----------------------------
  
     procedure Check_Unreachable_Code (N : Node_Id) is
        Error_Node : Node_Id;
        P          : Node_Id;
  
     begin
!       if Is_List_Member (N) and then Comes_From_Source (N) then
!          declare
!             Nxt : Node_Id;
  
!          begin
!             Nxt := Original_Node (Next (N));
  
!             --  Skip past pragmas
  
!             while Nkind (Nxt) = N_Pragma loop
!                Nxt := Original_Node (Next (Nxt));
!             end loop;
  
!             --  If a label follows us, then we never have dead code, since
!             --  someone could branch to the label, so we just ignore it.
  
!             if Nkind (Nxt) = N_Label then
!                return;
  
!             --  Otherwise see if we have a real statement following us
  
!             elsif Present (Nxt)
!               and then Comes_From_Source (Nxt)
!               and then Is_Statement (Nxt)
              then
!                --  Special very annoying exception. If we have a return that
!                --  follows a raise, then we allow it without a warning, since
!                --  the Ada RM annoyingly requires a useless return here.
! 
!                if Nkind (Original_Node (N)) /= N_Raise_Statement
!                  or else Nkind (Nxt) /= N_Simple_Return_Statement
!                then
!                   --  The rather strange shenanigans with the warning message
!                   --  here reflects the fact that Kill_Dead_Code is very good
!                   --  at removing warnings in deleted code, and this is one
!                   --  warning we would prefer NOT to have removed.
! 
!                   Error_Node := Nxt;
  
!                   --  If we have unreachable code, analyze and remove the
!                   --  unreachable code, since it is useless and we don't
!                   --  want to generate junk warnings.
  
!                   --  We skip this step if we are not in code generation mode
!                   --  or CodePeer mode.
  
!                   --  This is the one case where we remove dead code in the
!                   --  semantics as opposed to the expander, and we do not want
!                   --  to remove code if we are not in code generation mode,
!                   --  since this messes up the tree or loses useful information
!                   --  for CodePeer.
  
!                   --  Note that one might react by moving the whole circuit to
!                   --  exp_ch5, but then we lose the warning in -gnatc mode.
  
!                   if Operating_Mode = Generate_Code
!                     and then not CodePeer_Mode
!                   then
!                      loop
!                         Nxt := Next (N);
  
                          --  Quit deleting when we have nothing more to delete
                          --  or if we hit a label (since someone could transfer
                          --  control to a label, so we should not delete it).
  
!                         exit when No (Nxt) or else Nkind (Nxt) = N_Label;
  
                          --  Statement/declaration is to be deleted
  
!                         Analyze (Nxt);
!                         Remove (Nxt);
!                         Kill_Dead_Code (Nxt);
!                      end loop;
!                   end if;
  
!                   Error_Msg
!                     ("??unreachable code!", Sloc (Error_Node), Error_Node);
!                end if;
  
!             --  If the unconditional transfer of control instruction is the
!             --  last statement of a sequence, then see if our parent is one of
!             --  the constructs for which we count unblocked exits, and if so,
!             --  adjust the count.
  
!             else
!                P := Parent (N);
  
!                --  Statements in THEN part or ELSE part of IF statement
  
!                if Nkind (P) = N_If_Statement then
!                   null;
  
!                --  Statements in ELSIF part of an IF statement
  
!                elsif Nkind (P) = N_Elsif_Part then
!                   P := Parent (P);
!                   pragma Assert (Nkind (P) = N_If_Statement);
  
!                --  Statements in CASE statement alternative
  
!                elsif Nkind (P) = N_Case_Statement_Alternative then
!                   P := Parent (P);
!                   pragma Assert (Nkind (P) = N_Case_Statement);
  
!                --  Statements in body of block
  
!                elsif Nkind (P) = N_Handled_Sequence_Of_Statements
!                  and then Nkind (Parent (P)) = N_Block_Statement
!                then
!                   --  The original loop is now placed inside a block statement
!                   --  due to the expansion of attribute 'Loop_Entry. Return as
!                   --  this is not a "real" block for the purposes of exit
!                   --  counting.
  
!                   if Nkind (N) = N_Loop_Statement
!                     and then Subject_To_Loop_Entry_Attributes (N)
!                   then
!                      return;
!                   end if;
  
!                --  Statements in exception handler in a block
  
!                elsif Nkind (P) = N_Exception_Handler
!                  and then Nkind (Parent (P)) = N_Handled_Sequence_Of_Statements
!                  and then Nkind (Parent (Parent (P))) = N_Block_Statement
!                then
!                   null;
  
!                --  None of these cases, so return
  
!                else
                    return;
                 end if;
  
!                --  This was one of the cases we are looking for (i.e. the
!                --  parent construct was IF, CASE or block) so decrement count.
  
                 Unblocked_Exit_Count := Unblocked_Exit_Count - 1;
              end if;
!          end;
        end if;
     end Check_Unreachable_Code;
  
--- 4392,4611 ----
     ----------------------------
  
     procedure Check_Unreachable_Code (N : Node_Id) is
+ 
+       function Is_Simple_Case (N : Node_Id) return Boolean;
+       --  N is the condition of an if statement. True if N is simple enough
+       --  that we should not set Unblocked_Exit_Count in the special case
+       --  below.
+ 
+       --------------------
+       -- Is_Simple_Case --
+       --------------------
+ 
+       function Is_Simple_Case (N : Node_Id) return Boolean is
+       begin
+          return
+             Is_Trivial_Boolean (N)
+            or else
+             (Comes_From_Source (N)
+                and then Is_Static_Expression (N)
+                and then Nkind (N) in N_Identifier | N_Expanded_Name
+                and then Ekind (Entity (N)) = E_Constant)
+            or else
+             (not In_Instance
+                and then Nkind (Original_Node (N)) = N_Op_Not
+                and then Is_Simple_Case (Right_Opnd (Original_Node (N))));
+       end Is_Simple_Case;
+ 
        Error_Node : Node_Id;
+       Nxt        : Node_Id;
        P          : Node_Id;
  
     begin
!       if Comes_From_Source (N) then
!          Nxt := Original_Node (Next (N));
  
!          --  Skip past pragmas
  
!          while Nkind (Nxt) = N_Pragma loop
!             Nxt := Original_Node (Next (Nxt));
!          end loop;
  
!          --  If a label follows us, then we never have dead code, since someone
!          --  could branch to the label, so we just ignore it.
  
!          if Nkind (Nxt) = N_Label then
!             return;
  
!          --  Otherwise see if we have a real statement following us
  
!          elsif Comes_From_Source (Nxt)
!            and then Is_Statement (Nxt)
!          then
!             --  Special very annoying exception. Ada RM 6.5(5) annoyingly
!             --  requires functions to have at least one return statement, so
!             --  don't complain about a simple return that follows a raise or a
!             --  call to procedure with No_Return.
  
!             if not (Present (Current_Subprogram)
!                     and then Ekind (Current_Subprogram) = E_Function
!                     and then (Nkind (N) in N_Raise_Statement
!                                 or else
!                               (Nkind (N) = N_Procedure_Call_Statement
!                                and then Is_Entity_Name (Name (N))
!                                and then Present (Entity (Name (N)))
!                                and then No_Return (Entity (Name (N)))))
!                     and then Nkind (Nxt) = N_Simple_Return_Statement)
              then
!                --  The rather strange shenanigans with the warning message
!                --  here reflects the fact that Kill_Dead_Code is very good at
!                --  removing warnings in deleted code, and this is one warning
!                --  we would prefer NOT to have removed.
  
!                Error_Node := Nxt;
  
!                --  If we have unreachable code, analyze and remove the
!                --  unreachable code, since it is useless and we don't want
!                --  to generate junk warnings.
  
!                --  We skip this step if we are not in code generation mode.
  
!                --  This is the one case where we remove dead code in the
!                --  semantics as opposed to the expander, and we do not want
!                --  to remove code if we are not in code generation mode, since
!                --  this messes up the tree or loses useful information for
!                --  analysis tools such as CodePeer.
  
!                --  Note that one might react by moving the whole circuit to
!                --  exp_ch5, but then we lose the warning in -gnatc mode.
  
+                if Operating_Mode = Generate_Code then
+                   loop
+                      declare
+                         Del : constant Node_Id := Next (N);
+                         --  Node to be possibly deleted
+                      begin
                          --  Quit deleting when we have nothing more to delete
                          --  or if we hit a label (since someone could transfer
                          --  control to a label, so we should not delete it).
  
!                         exit when No (Del) or else Nkind (Del) = N_Label;
  
                          --  Statement/declaration is to be deleted
  
!                         Analyze (Del);
!                         Kill_Dead_Code (Del);
!                         Remove (Del);
!                      end;
!                   end loop;
  
!                   --  If this is a function, we add "raise Program_Error;",
!                   --  because otherwise, we will get incorrect warnings about
!                   --  falling off the end of the function.
  
!                   declare
!                      Subp : constant Entity_Id := Current_Subprogram;
!                   begin
!                      if Present (Subp) and then Ekind (Subp) = E_Function then
!                         Insert_After_And_Analyze (N,
!                           Make_Raise_Program_Error (Sloc (Error_Node),
!                             Reason => PE_Missing_Return));
!                      end if;
!                   end;
  
!                end if;
  
!                --  Suppress the warning in instances, because a statement can
!                --  be unreachable in some instances but not others.
  
!                if not In_Instance then
!                   Error_Msg_N ("??unreachable code!", Error_Node);
!                end if;
!             end if;
  
!          --  If the unconditional transfer of control instruction is the
!          --  last statement of a sequence, then see if our parent is one of
!          --  the constructs for which we count unblocked exits, and if so,
!          --  adjust the count.
  
!          else
!             P := Parent (N);
  
!             --  Statements in THEN part or ELSE part of IF statement
  
!             if Nkind (P) = N_If_Statement then
!                null;
  
!             --  Statements in ELSIF part of an IF statement
  
!             elsif Nkind (P) = N_Elsif_Part then
!                P := Parent (P);
!                pragma Assert (Nkind (P) = N_If_Statement);
  
!             --  Statements in CASE statement alternative
  
!             elsif Nkind (P) = N_Case_Statement_Alternative then
!                P := Parent (P);
!                pragma Assert (Nkind (P) = N_Case_Statement);
  
!             --  Statements in body of block
  
!             elsif Nkind (P) = N_Handled_Sequence_Of_Statements
!               and then Nkind (Parent (P)) = N_Block_Statement
!             then
!                --  The original loop is now placed inside a block statement
!                --  due to the expansion of attribute 'Loop_Entry. Return as
!                --  this is not a "real" block for the purposes of exit
!                --  counting.
  
!                if Nkind (N) = N_Loop_Statement
!                  and then Subject_To_Loop_Entry_Attributes (N)
!                then
                    return;
                 end if;
  
!             --  Statements in exception handler in a block
! 
!             elsif Nkind (P) = N_Exception_Handler
!               and then Nkind (Parent (P)) = N_Handled_Sequence_Of_Statements
!               and then Nkind (Parent (Parent (P))) = N_Block_Statement
!             then
!                null;
! 
!             --  None of these cases, so return
  
+             else
+                return;
+             end if;
+ 
+             --  This was one of the cases we are looking for (i.e. the parent
+             --  construct was IF, CASE or block). In most cases, we simply
+             --  decrement the count. However, if the parent is something like:
+             --
+             --     if cond then
+             --        raise ...; -- or some other jump
+             --     end if;
+             --
+             --  where cond is an expression that is known-true at compile time,
+             --  we can treat that as just the jump -- i.e. anything following
+             --  the if statement is unreachable. We don't do this for simple
+             --  cases like "if True" or "if Debug_Flag", because that causes
+             --  too many warnings.
+ 
+             if Nkind (P) = N_If_Statement
+               and then Present (Then_Statements (P))
+               and then No (Elsif_Parts (P))
+               and then No (Else_Statements (P))
+               and then Is_OK_Static_Expression (Condition (P))
+               and then Is_True (Expr_Value (Condition (P)))
+               and then not Is_Simple_Case (Condition (P))
+             then
+                pragma Assert (Unblocked_Exit_Count = 2);
+                Unblocked_Exit_Count := 0;
+             else
                 Unblocked_Exit_Count := Unblocked_Exit_Count - 1;
              end if;
!          end if;
        end if;
     end Check_Unreachable_Code;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch5.ads gcc-13.1.0/gcc/ada/sem_ch5.ads
*** gcc-12.2.0/gcc/ada/sem_ch5.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch5.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch5 is
*** 45,57 ****
     procedure Analyze_Statements                   (L : List_Id);
     procedure Analyze_Target_Name                  (N : Node_Id);
  
-    procedure Analyze_Label_Entity (E : Entity_Id);
-    --  This procedure performs direct analysis of the label entity E. It
-    --  is used when a label is created by the expander without bothering
-    --  to insert an N_Implicit_Label_Declaration in the tree. It also takes
-    --  care of setting Reachable, since labels defined by the expander can
-    --  be assumed to be reachable.
- 
     procedure Check_Unreachable_Code (N : Node_Id);
     --  This procedure is called with N being the node for a statement that is
     --  an unconditional transfer of control or an apparent infinite loop. It
--- 45,50 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch6.adb gcc-13.1.0/gcc/ada/sem_ch6.adb
*** gcc-12.2.0/gcc/ada/sem_ch6.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch6.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
*************** package body Sem_Ch6 is
*** 190,208 ****
     --  in posting the warning message.
  
     procedure Check_Untagged_Equality (Eq_Op : Entity_Id);
!    --  In Ada 2012, a primitive equality operator on an untagged record type
!    --  must appear before the type is frozen, and have the same visibility as
!    --  that of the type. This procedure checks that this rule is met, and
!    --  otherwise emits an error on the subprogram declaration and a warning
!    --  on the earlier freeze point if it is easy to locate. In Ada 2012 mode,
!    --  this routine outputs errors (or warnings if -gnatd.E is set). In earlier
!    --  versions of Ada, warnings are output if Warn_On_Ada_2012_Incompatibility
!    --  is set, otherwise the call has no effect.
  
     procedure Enter_Overloaded_Entity (S : Entity_Id);
     --  This procedure makes S, a new overloaded entity, into the first visible
     --  entity with that name.
  
     function Is_Non_Overriding_Operation
       (Prev_E : Entity_Id;
        New_E  : Entity_Id) return Boolean;
--- 191,214 ----
     --  in posting the warning message.
  
     procedure Check_Untagged_Equality (Eq_Op : Entity_Id);
!    --  In Ada 2012, a primitive equality operator for an untagged record type
!    --  must appear before the type is frozen. This procedure checks that this
!    --  rule is met, and otherwise gives an error on the subprogram declaration
!    --  and a warning on the earlier freeze point if it is easy to pinpoint. In
!    --  earlier versions of Ada, the call has not effect, unless compatibility
!    --  warnings are requested by means of Warn_On_Ada_2012_Incompatibility.
  
     procedure Enter_Overloaded_Entity (S : Entity_Id);
     --  This procedure makes S, a new overloaded entity, into the first visible
     --  entity with that name.
  
+    function Has_Reliable_Extra_Formals (E : Entity_Id) return Boolean;
+    --  E is the entity for a subprogram spec. Returns False for abstract
+    --  predefined dispatching primitives of Root_Controlled since they
+    --  cannot have extra formals (this is required to build the runtime);
+    --  it also returns False for predefined stream dispatching operations
+    --  not emitted by the frontend. Otherwise returns True.
+ 
     function Is_Non_Overriding_Operation
       (Prev_E : Entity_Id;
        New_E  : Entity_Id) return Boolean;
*************** package body Sem_Ch6 is
*** 267,273 ****
  
        elsif Warn_On_Redundant_Constructs
          and then not Is_Dispatching_Operation (Subp_Id)
!         and then not Present (Overridden_Operation (Subp_Id))
          and then (not Is_Operator_Symbol_Name (Chars (Subp_Id))
                     or else Scop /= Scope (Etype (First_Formal (Subp_Id))))
        then
--- 273,279 ----
  
        elsif Warn_On_Redundant_Constructs
          and then not Is_Dispatching_Operation (Subp_Id)
!         and then No (Overridden_Operation (Subp_Id))
          and then (not Is_Operator_Symbol_Name (Chars (Subp_Id))
                     or else Scop /= Scope (Etype (First_Formal (Subp_Id))))
        then
*************** package body Sem_Ch6 is
*** 508,514 ****
           --  this because it is not part of the original source.
           --  If this is an ignored Ghost entity, analysis of the generated
           --  body is needed to hide external references (as is done in
!          --  Analyze_Subprogram_Body) after which the the subprogram profile
           --  can be frozen, which is needed to expand calls to such an ignored
           --  Ghost subprogram.
  
--- 514,520 ----
           --  this because it is not part of the original source.
           --  If this is an ignored Ghost entity, analysis of the generated
           --  body is needed to hide external references (as is done in
!          --  Analyze_Subprogram_Body) after which the subprogram profile
           --  can be frozen, which is needed to expand calls to such an ignored
           --  Ghost subprogram.
  
*************** package body Sem_Ch6 is
*** 572,613 ****
           --  RM in 4.9(3.2/5-3.4/5) and we flag an error.
  
           if Is_Static_Function (Def_Id) then
!             if not Is_Static_Expression (Expr) then
!                declare
!                   Exp_Copy : constant Node_Id := New_Copy_Tree (Expr);
!                begin
!                   Set_Checking_Potentially_Static_Expression (True);
  
!                   Preanalyze_Formal_Expression (Exp_Copy, Typ);
  
!                   if not Is_Static_Expression (Exp_Copy) then
!                      Error_Msg_N
!                        ("static expression function requires "
!                           & "potentially static expression", Expr);
!                   end if;
  
!                   Set_Checking_Potentially_Static_Expression (False);
!                end;
!             end if;
  
!             --  We also make an additional copy of the expression and
!             --  replace the expression of the expression function with
!             --  this copy, because the currently present expression is
!             --  now associated with the body created for the static
!             --  expression function, which will later be analyzed and
!             --  possibly rewritten, and we need to have the separate
!             --  unanalyzed copy available for use with later static
!             --  calls.
  
!             Set_Expression
!               (Original_Node (Subprogram_Spec (Def_Id)),
!                New_Copy_Tree (Expr));
  
!             --  Mark static expression functions as inlined, to ensure
!             --  that even calls with nonstatic actuals will be inlined.
  
!             Set_Has_Pragma_Inline (Def_Id);
!             Set_Is_Inlined (Def_Id);
           end if;
        end if;
  
--- 578,629 ----
           --  RM in 4.9(3.2/5-3.4/5) and we flag an error.
  
           if Is_Static_Function (Def_Id) then
!             declare
!                --  If a potentially static expr like "Parameter / 0"
!                --  is transformed into "(raise Constraint_Error)", then we
!                --  need to copy the Original_Node.
!                function Make_Expr_Copy return Node_Id is
!                  (New_Copy_Tree (if Expr in N_Raise_xxx_Error_Id
!                                  then Original_Node (Expr)
!                                  else Expr));
!             begin
!                if not Is_Static_Expression (Expr) then
!                   declare
!                      Exp_Copy : constant Node_Id := Make_Expr_Copy;
!                   begin
!                      Set_Checking_Potentially_Static_Expression (True);
  
!                      Preanalyze_Formal_Expression (Exp_Copy, Typ);
  
!                      if not Is_Static_Expression (Exp_Copy) then
!                         Error_Msg_N
!                           ("static expression function requires "
!                              & "potentially static expression", Expr);
!                      end if;
  
!                      Set_Checking_Potentially_Static_Expression (False);
!                   end;
!                end if;
  
!                --  We also make an additional copy of the expression and
!                --  replace the expression of the expression function with
!                --  this copy, because the currently present expression is
!                --  now associated with the body created for the static
!                --  expression function, which will later be analyzed and
!                --  possibly rewritten, and we need to have the separate
!                --  unanalyzed copy available for use with later static
!                --  calls.
  
!                Set_Expression
!                  (Original_Node (Subprogram_Spec (Def_Id)),
!                   Make_Expr_Copy);
  
!                --  Mark static expression functions as inlined, to ensure
!                --  that even calls with nonstatic actuals will be inlined.
  
!                Set_Has_Pragma_Inline (Def_Id);
!                Set_Is_Inlined (Def_Id);
!             end;
           end if;
        end if;
  
*************** package body Sem_Ch6 is
*** 704,717 ****
  
        --  Otherwise analyze the parameters
  
!       if Present (Actuals) then
!          Actual := First (Actuals);
!          while Present (Actual) loop
!             Analyze (Actual);
!             Check_Parameterless_Call (Actual);
!             Next (Actual);
!          end loop;
!       end if;
  
        Analyze_Call (N);
     end Analyze_Function_Call;
--- 720,731 ----
  
        --  Otherwise analyze the parameters
  
!       Actual := First (Actuals);
!       while Present (Actual) loop
!          Analyze (Actual);
!          Check_Parameterless_Call (Actual);
!          Next (Actual);
!       end loop;
  
        Analyze_Call (N);
     end Analyze_Function_Call;
*************** package body Sem_Ch6 is
*** 732,745 ****
        --  Ada 2022: Check that the return expression in a No_Return function
        --  meets the conditions specified by RM 6.5.1(5.1/5).
  
-       procedure Check_Return_Construct_Accessibility (Return_Stmt : Node_Id);
-       --  Apply legality rule of 6.5 (5.9) to the access discriminants of an
-       --  aggregate in a return statement.
- 
-       procedure Check_Return_Subtype_Indication (Obj_Decl : Node_Id);
-       --  Check that the return_subtype_indication properly matches the result
-       --  subtype of the function, as required by RM-6.5(5.1/2-5.3/2).
- 
        --------------------------------
        -- Check_No_Return_Expression --
        --------------------------------
--- 746,751 ----
*************** package body Sem_Ch6 is
*** 768,1367 ****
              Return_Expr);
        end Check_No_Return_Expression;
  
-       ------------------------------------------
-       -- Check_Return_Construct_Accessibility --
-       ------------------------------------------
- 
-       procedure Check_Return_Construct_Accessibility (Return_Stmt : Node_Id) is
- 
-          function First_Selector (Assoc : Node_Id) return Node_Id;
-          --  Obtain the first selector or choice from a given association
- 
-          --------------------
-          -- First_Selector --
-          --------------------
- 
-          function First_Selector (Assoc : Node_Id) return Node_Id is
-          begin
-             if Nkind (Assoc) = N_Component_Association then
-                return First (Choices (Assoc));
- 
-             elsif Nkind (Assoc) = N_Discriminant_Association then
-                return (First (Selector_Names (Assoc)));
- 
-             else
-                raise Program_Error;
-             end if;
-          end First_Selector;
- 
-          --  Local declarations
- 
-          Assoc : Node_Id := Empty;
-          --  Assoc should perhaps be renamed and declared as a
-          --  Node_Or_Entity_Id since it encompasses not only component and
-          --  discriminant associations, but also discriminant components within
-          --  a type declaration or subtype indication ???
- 
-          Assoc_Expr    : Node_Id;
-          Assoc_Present : Boolean := False;
- 
-          Check_Cond        : Node_Id;
-          Unseen_Disc_Count : Nat := 0;
-          Seen_Discs        : Elist_Id;
-          Disc              : Entity_Id;
-          First_Disc        : Entity_Id;
- 
-          Obj_Decl   : Node_Id;
-          Return_Con : Node_Id;
-          Unqual     : Node_Id;
- 
-       --  Start of processing for Check_Return_Construct_Accessibility
- 
-       begin
-          --  Only perform checks on record types with access discriminants and
-          --  non-internally generated functions.
- 
-          if not Is_Record_Type (R_Type)
-            or else not Has_Anonymous_Access_Discriminant (R_Type)
-            or else not Comes_From_Source (Return_Stmt)
-          then
-             return;
-          end if;
- 
-          --  We are only interested in return statements
- 
-          if Nkind (Return_Stmt) not in
-               N_Extended_Return_Statement | N_Simple_Return_Statement
-          then
-             return;
-          end if;
- 
-          --  Fetch the object from the return statement, in the case of a
-          --  simple return statement the expression is part of the node.
- 
-          if Nkind (Return_Stmt) = N_Extended_Return_Statement then
-             --  Obtain the object definition from the expanded extended return
- 
-             Return_Con := First (Return_Object_Declarations (Return_Stmt));
-             while Present (Return_Con) loop
-                --  Inspect the original node to avoid object declarations
-                --  expanded into renamings.
- 
-                if Nkind (Original_Node (Return_Con)) = N_Object_Declaration
-                  and then Comes_From_Source (Original_Node (Return_Con))
-                then
-                   exit;
-                end if;
- 
-                Nlists.Next (Return_Con);
-             end loop;
- 
-             pragma Assert (Present (Return_Con));
- 
-             --  Could be dealing with a renaming
- 
-             Return_Con := Original_Node (Return_Con);
-          else
-             Return_Con := Expression (Return_Stmt);
-          end if;
- 
-          --  Obtain the accessibility levels of the expressions associated
-          --  with all anonymous access discriminants, then generate a
-          --  dynamic check or static error when relevant.
- 
-          Unqual := Unqualify (Original_Node (Return_Con));
- 
-          --  Get the corresponding declaration based on the return object's
-          --  identifier.
- 
-          if Nkind (Unqual) = N_Identifier
-            and then Nkind (Parent (Entity (Unqual)))
-                       in N_Object_Declaration
-                        | N_Object_Renaming_Declaration
-          then
-             Obj_Decl := Original_Node (Parent (Entity (Unqual)));
- 
-          --  We were passed the object declaration directly, so use it
- 
-          elsif Nkind (Unqual) in N_Object_Declaration
-                                | N_Object_Renaming_Declaration
-          then
-             Obj_Decl := Unqual;
- 
-          --  Otherwise, we are looking at something else
- 
-          else
-             Obj_Decl := Empty;
- 
-          end if;
- 
-          --  Hop up object renamings when present
- 
-          if Present (Obj_Decl)
-            and then Nkind (Obj_Decl) = N_Object_Renaming_Declaration
-          then
-             while Nkind (Obj_Decl) = N_Object_Renaming_Declaration loop
- 
-                if Nkind (Name (Obj_Decl)) not in N_Entity then
-                   --  We may be looking at the expansion of iterators or
-                   --  some other internally generated construct, so it is safe
-                   --  to ignore checks ???
- 
-                   if not Comes_From_Source (Obj_Decl) then
-                      return;
-                   end if;
- 
-                   Obj_Decl := Original_Node
-                                 (Declaration_Node
-                                   (Ultimate_Prefix (Name (Obj_Decl))));
- 
-                --  Move up to the next declaration based on the object's name
- 
-                else
-                   Obj_Decl := Original_Node
-                                 (Declaration_Node (Name (Obj_Decl)));
-                end if;
-             end loop;
-          end if;
- 
-          --  Obtain the discriminant values from the return aggregate
- 
-          --  Do we cover extension aggregates correctly ???
- 
-          if Nkind (Unqual) = N_Aggregate then
-             if Present (Expressions (Unqual)) then
-                Assoc := First (Expressions (Unqual));
-             else
-                Assoc := First (Component_Associations (Unqual));
-             end if;
- 
-          --  There is an object declaration for the return object
- 
-          elsif Present (Obj_Decl) then
-             --  When a subtype indication is present in an object declaration
-             --  it must contain the object's discriminants.
- 
-             if Nkind (Object_Definition (Obj_Decl)) = N_Subtype_Indication then
-                Assoc := First
-                           (Constraints
-                             (Constraint
-                               (Object_Definition (Obj_Decl))));
- 
-             --  The object declaration contains an aggregate
- 
-             elsif Present (Expression (Obj_Decl)) then
- 
-                if Nkind (Unqualify (Expression (Obj_Decl))) = N_Aggregate then
-                   --  Grab the first associated discriminant expresion
- 
-                   if Present
-                        (Expressions (Unqualify (Expression (Obj_Decl))))
-                   then
-                      Assoc := First
-                                 (Expressions
-                                   (Unqualify (Expression (Obj_Decl))));
-                   else
-                      Assoc := First
-                                 (Component_Associations
-                                   (Unqualify (Expression (Obj_Decl))));
-                   end if;
- 
-                --  Otherwise, this is something else
- 
-                else
-                   return;
-                end if;
- 
-             --  There are no supplied discriminants in the object declaration,
-             --  so get them from the type definition since they must be default
-             --  initialized.
- 
-             --  Do we handle constrained subtypes correctly ???
- 
-             elsif Nkind (Unqual) = N_Object_Declaration then
-                Assoc := First_Discriminant
-                           (Etype (Object_Definition (Obj_Decl)));
- 
-             else
-                Assoc := First_Discriminant (Etype (Unqual));
-             end if;
- 
-          --  When we are not looking at an aggregate or an identifier, return
-          --  since any other construct (like a function call) is not
-          --  applicable since checks will be performed on the side of the
-          --  callee.
- 
-          else
-             return;
-          end if;
- 
-          --  Obtain the discriminants so we know the actual type in case the
-          --  value of their associated expression gets implicitly converted.
- 
-          if No (Obj_Decl) then
-             pragma Assert (Nkind (Unqual) = N_Aggregate);
- 
-             Disc := First_Discriminant (Etype (Unqual));
- 
-          else
-             Disc := First_Discriminant
-                       (Etype (Defining_Identifier (Obj_Decl)));
-          end if;
- 
-          --  Preserve the first discriminant for checking named associations
- 
-          First_Disc := Disc;
- 
-          --  Count the number of discriminants for processing an aggregate
-          --  which includes an others.
- 
-          Disc := First_Disc;
-          while Present (Disc) loop
-             Unseen_Disc_Count := Unseen_Disc_Count + 1;
- 
-             Next_Discriminant (Disc);
-          end loop;
- 
-          Seen_Discs := New_Elmt_List;
- 
-          --  Loop through each of the discriminants and check each expression
-          --  associated with an anonymous access discriminant.
- 
-          --  When named associations occur in the return aggregate then
-          --  discriminants can be in any order, so we need to ensure we do
-          --  not continue to loop when all discriminants have been seen.
- 
-          Disc := First_Disc;
-          while Present (Assoc)
-            and then (Present (Disc) or else Assoc_Present)
-            and then Unseen_Disc_Count > 0
-          loop
-             --  Handle named associations by searching through the names of
-             --  the relevant discriminant components.
- 
-             if Nkind (Assoc)
-                  in N_Component_Association | N_Discriminant_Association
-             then
-                Assoc_Expr    := Expression (Assoc);
-                Assoc_Present := True;
- 
-                --  We currently don't handle box initialized discriminants,
-                --  however, since default initialized anonymous access
-                --  discriminants are a corner case, this is ok for now ???
- 
-                if Nkind (Assoc) = N_Component_Association
-                  and then Box_Present (Assoc)
-                then
-                   Assoc_Present := False;
- 
-                   if Nkind (First_Selector (Assoc)) = N_Others_Choice then
-                      Unseen_Disc_Count := 0;
-                   end if;
- 
-                --  When others is present we must identify a discriminant we
-                --  haven't already seen so as to get the appropriate type for
-                --  the static accessibility check.
- 
-                --  This works because all components within an others clause
-                --  must have the same type.
- 
-                elsif Nkind (First_Selector (Assoc)) = N_Others_Choice then
- 
-                   Disc := First_Disc;
-                   Outer : while Present (Disc) loop
-                      declare
-                         Current_Seen_Disc : Elmt_Id;
-                      begin
-                         --  Move through the list of identified discriminants
- 
-                         Current_Seen_Disc := First_Elmt (Seen_Discs);
-                         while Present (Current_Seen_Disc) loop
-                            --  Exit the loop when we found a match
- 
-                            exit when
-                              Chars (Node (Current_Seen_Disc)) = Chars (Disc);
- 
-                            Next_Elmt (Current_Seen_Disc);
-                         end loop;
- 
-                         --  When we have exited the above loop without finding
-                         --  a match then we know that Disc has not been seen.
- 
-                         exit Outer when No (Current_Seen_Disc);
-                      end;
- 
-                      Next_Discriminant (Disc);
-                   end loop Outer;
- 
-                   --  If we got to an others clause with a non-zero
-                   --  discriminant count there must be a discriminant left to
-                   --  check.
- 
-                   pragma Assert (Present (Disc));
- 
-                   --  Set the unseen discriminant count to zero because we know
-                   --  an others clause sets all remaining components of an
-                   --  aggregate.
- 
-                   Unseen_Disc_Count := 0;
- 
-                --  Move through each of the selectors in the named association
-                --  and obtain a discriminant for accessibility checking if one
-                --  is referenced in the list. Also track which discriminants
-                --  are referenced for the purpose of handling an others clause.
- 
-                else
-                   declare
-                      Assoc_Choice : Node_Id;
-                      Curr_Disc    : Node_Id;
-                   begin
- 
-                      Disc      := Empty;
-                      Curr_Disc := First_Disc;
-                      while Present (Curr_Disc) loop
-                         --  Check each of the choices in the associations for a
-                         --  match to the name of the current discriminant.
- 
-                         Assoc_Choice := First_Selector (Assoc);
-                         while Present (Assoc_Choice) loop
-                            --  When the name matches we track that we have seen
-                            --  the discriminant, but instead of exiting the
-                            --  loop we continue iterating to make sure all the
-                            --  discriminants within the named association get
-                            --  tracked.
- 
-                            if Chars (Assoc_Choice) = Chars (Curr_Disc) then
-                               Append_Elmt (Curr_Disc, Seen_Discs);
- 
-                               Disc              := Curr_Disc;
-                               Unseen_Disc_Count := Unseen_Disc_Count - 1;
-                            end if;
- 
-                            Next (Assoc_Choice);
-                         end loop;
- 
-                         Next_Discriminant (Curr_Disc);
-                      end loop;
-                   end;
-                end if;
- 
-             --  Unwrap the associated expression if we are looking at a default
-             --  initialized type declaration. In this case Assoc is not really
-             --  an association, but a component declaration. Should Assoc be
-             --  renamed in some way to be more clear ???
- 
-             --  This occurs when the return object does not initialize
-             --  discriminant and instead relies on the type declaration for
-             --  their supplied values.
- 
-             elsif Nkind (Assoc) in N_Entity
-               and then Ekind (Assoc) = E_Discriminant
-             then
-                Append_Elmt (Disc, Seen_Discs);
- 
-                Assoc_Expr        := Discriminant_Default_Value (Assoc);
-                Unseen_Disc_Count := Unseen_Disc_Count - 1;
- 
-             --  Otherwise, there is nothing to do because Assoc is an
-             --  expression within the return aggregate itself.
- 
-             else
-                Append_Elmt (Disc, Seen_Discs);
- 
-                Assoc_Expr        := Assoc;
-                Unseen_Disc_Count := Unseen_Disc_Count - 1;
-             end if;
- 
-             --  Check the accessibility level of the expression when the
-             --  discriminant is of an anonymous access type.
- 
-             if Present (Assoc_Expr)
-               and then Present (Disc)
-               and then Ekind (Etype (Disc)) = E_Anonymous_Access_Type
-             then
-                --  Generate a dynamic check based on the extra accessibility of
-                --  the result or the scope.
- 
-                Check_Cond :=
-                  Make_Op_Gt (Loc,
-                    Left_Opnd  => Accessibility_Level
-                                    (Expr              => Assoc_Expr,
-                                     Level             => Dynamic_Level,
-                                     In_Return_Context => True),
-                    Right_Opnd => (if Present
-                                        (Extra_Accessibility_Of_Result
-                                          (Scope_Id))
-                                   then
-                                      Extra_Accessibility_Of_Result (Scope_Id)
-                                   else
-                                      Make_Integer_Literal
-                                        (Loc, Scope_Depth (Scope (Scope_Id)))));
- 
-                Insert_Before_And_Analyze (Return_Stmt,
-                  Make_Raise_Program_Error (Loc,
-                    Condition => Check_Cond,
-                    Reason    => PE_Accessibility_Check_Failed));
- 
-                --  If constant folding has happened on the condition for the
-                --  generated error, then warn about it being unconditional when
-                --  we know an error will be raised.
- 
-                if Nkind (Check_Cond) = N_Identifier
-                  and then Entity (Check_Cond) = Standard_True
-                then
-                   Error_Msg_N
-                     ("access discriminant in return object would be a dangling"
-                      & " reference", Return_Stmt);
-                end if;
-             end if;
- 
-             --  Iterate over the discriminants, except when we have encountered
-             --  a named association since the discriminant order becomes
-             --  irrelevant in that case.
- 
-             if not Assoc_Present then
-                Next_Discriminant (Disc);
-             end if;
- 
-             --  Iterate over associations
- 
-             if not Is_List_Member (Assoc) then
-                exit;
-             else
-                Nlists.Next (Assoc);
-             end if;
-          end loop;
-       end Check_Return_Construct_Accessibility;
- 
-       -------------------------------------
-       -- Check_Return_Subtype_Indication --
-       -------------------------------------
- 
-       procedure Check_Return_Subtype_Indication (Obj_Decl : Node_Id) is
-          Return_Obj : constant Node_Id   := Defining_Identifier (Obj_Decl);
- 
-          R_Stm_Type : constant Entity_Id := Etype (Return_Obj);
-          --  Subtype given in the extended return statement (must match R_Type)
- 
-          Subtype_Ind : constant Node_Id :=
-                          Object_Definition (Original_Node (Obj_Decl));
- 
-          procedure Error_No_Match (N : Node_Id);
-          --  Output error messages for case where types do not statically
-          --  match. N is the location for the messages.
- 
-          --------------------
-          -- Error_No_Match --
-          --------------------
- 
-          procedure Error_No_Match (N : Node_Id) is
-          begin
-             Error_Msg_N
-               ("subtype must statically match function result subtype", N);
- 
-             if not Predicates_Match (R_Stm_Type, R_Type) then
-                Error_Msg_Node_2 := R_Type;
-                Error_Msg_NE
-                  ("\predicate of& does not match predicate of&",
-                   N, R_Stm_Type);
-             end if;
-          end Error_No_Match;
- 
-       --  Start of processing for Check_Return_Subtype_Indication
- 
-       begin
-          --  First, avoid cascaded errors
- 
-          if Error_Posted (Obj_Decl) or else Error_Posted (Subtype_Ind) then
-             return;
-          end if;
- 
-          --  "return access T" case; check that the return statement also has
-          --  "access T", and that the subtypes statically match:
-          --   if this is an access to subprogram the signatures must match.
- 
-          if Is_Anonymous_Access_Type (R_Type) then
-             if Is_Anonymous_Access_Type (R_Stm_Type) then
-                if Ekind (Designated_Type (R_Stm_Type)) /= E_Subprogram_Type
-                then
-                   if Base_Type (Designated_Type (R_Stm_Type)) /=
-                      Base_Type (Designated_Type (R_Type))
-                     or else not Subtypes_Statically_Match (R_Stm_Type, R_Type)
-                   then
-                      Error_No_Match (Subtype_Mark (Subtype_Ind));
-                   end if;
- 
-                else
-                   --  For two anonymous access to subprogram types, the types
-                   --  themselves must be type conformant.
- 
-                   if not Conforming_Types
-                            (R_Stm_Type, R_Type, Fully_Conformant)
-                   then
-                      Error_No_Match (Subtype_Ind);
-                   end if;
-                end if;
- 
-             else
-                Error_Msg_N ("must use anonymous access type", Subtype_Ind);
-             end if;
- 
-          --  If the return object is of an anonymous access type, then report
-          --  an error if the function's result type is not also anonymous.
- 
-          elsif Is_Anonymous_Access_Type (R_Stm_Type) then
-             pragma Assert (not Is_Anonymous_Access_Type (R_Type));
-             Error_Msg_N
-               ("anonymous access not allowed for function with named access "
-                & "result", Subtype_Ind);
- 
-          --  Subtype indication case: check that the return object's type is
-          --  covered by the result type, and that the subtypes statically match
-          --  when the result subtype is constrained. Also handle record types
-          --  with unknown discriminants for which we have built the underlying
-          --  record view. Coverage is needed to allow specific-type return
-          --  objects when the result type is class-wide (see AI05-32).
- 
-          elsif Covers (Base_Type (R_Type), Base_Type (R_Stm_Type))
-            or else (Is_Underlying_Record_View (Base_Type (R_Stm_Type))
-                      and then
-                        Covers
-                          (Base_Type (R_Type),
-                           Underlying_Record_View (Base_Type (R_Stm_Type))))
-          then
-             --  A null exclusion may be present on the return type, on the
-             --  function specification, on the object declaration or on the
-             --  subtype itself.
- 
-             if Is_Access_Type (R_Type)
-               and then
-                 (Can_Never_Be_Null (R_Type)
-                   or else Null_Exclusion_Present (Parent (Scope_Id))) /=
-                             Can_Never_Be_Null (R_Stm_Type)
-             then
-                Error_No_Match (Subtype_Ind);
-             end if;
- 
-             --  AI05-103: for elementary types, subtypes must statically match
- 
-             if Is_Constrained (R_Type) or else Is_Access_Type (R_Type) then
-                if not Subtypes_Statically_Match (R_Stm_Type, R_Type) then
-                   Error_No_Match (Subtype_Ind);
-                end if;
-             end if;
- 
-          --  All remaining cases are illegal
- 
-          --  Note: previous versions of this subprogram allowed the return
-          --  value to be the ancestor of the return type if the return type
-          --  was a null extension. This was plainly incorrect.
- 
-          else
-             Error_Msg_N
-               ("wrong type for return_subtype_indication", Subtype_Ind);
-          end if;
-       end Check_Return_Subtype_Indication;
- 
        ---------------------
        -- Local Variables --
        ---------------------
--- 774,779 ----
*************** package body Sem_Ch6 is
*** 1437,1443 ****
              Resolve (Expr, R_Type);
              Check_Limited_Return (N, Expr, R_Type);
  
!             Check_Return_Construct_Accessibility (N);
  
              --  Ada 2022 (AI12-0269): Any return statement that applies to a
              --  nonreturning function shall be a simple_return_statement with
--- 849,855 ----
              Resolve (Expr, R_Type);
              Check_Limited_Return (N, Expr, R_Type);
  
!             Check_Return_Construct_Accessibility (N, Stm_Entity);
  
              --  Ada 2022 (AI12-0269): Any return statement that applies to a
              --  nonreturning function shall be a simple_return_statement with
*************** package body Sem_Ch6 is
*** 1469,1503 ****
              --  object declaration.
  
              Set_Is_Return_Object (Defining_Identifier (Obj_Decl));
! 
!             --  Returning a build-in-place unconstrained array type we defer
!             --  the full analysis of the returned object to avoid generating
!             --  the corresponding constrained subtype; otherwise the bounds
!             --  would be created in the stack and a dangling reference would
!             --  be returned pointing to the bounds. We perform its preanalysis
!             --  to report errors on the initializing aggregate now (if any);
!             --  we also ensure its activation chain and Master variable are
!             --  defined (if tasks are being declared) since they are generated
!             --  as part of the analysis and expansion of the object declaration
!             --  at this stage.
! 
!             if Is_Array_Type (R_Type)
!               and then not Is_Constrained (R_Type)
!               and then Is_Build_In_Place_Function (Scope_Id)
!               and then Needs_BIP_Alloc_Form (Scope_Id)
!               and then Nkind (Expr) in N_Aggregate | N_Extension_Aggregate
!             then
!                Preanalyze (Obj_Decl);
! 
!                if Expander_Active then
!                   Ensure_Activation_Chain_And_Master (Obj_Decl);
!                end if;
! 
!             else
!                Analyze (Obj_Decl);
!             end if;
! 
!             Check_Return_Subtype_Indication (Obj_Decl);
  
              if Present (HSS) then
                 Analyze (HSS);
--- 881,887 ----
              --  object declaration.
  
              Set_Is_Return_Object (Defining_Identifier (Obj_Decl));
!             Analyze (Obj_Decl);
  
              if Present (HSS) then
                 Analyze (HSS);
*************** package body Sem_Ch6 is
*** 1519,1539 ****
  
              Check_References (Stm_Entity);
  
!             Check_Return_Construct_Accessibility (N);
  
              --  Check RM 6.5 (5.9/3)
  
!             if Has_Aliased then
                 if Ada_Version < Ada_2012
                   and then Warn_On_Ada_2012_Compatibility
                 then
                    Error_Msg_N
!                     ("ALIASED only allowed for limited return objects "
!                      & "in Ada 2012?y?", N);
  
!                elsif not Is_Limited_View (R_Type) then
                    Error_Msg_N
!                     ("ALIASED only allowed for limited return objects", N);
                 end if;
              end if;
  
--- 903,924 ----
  
              Check_References (Stm_Entity);
  
!             Check_Return_Construct_Accessibility (N, Stm_Entity);
  
              --  Check RM 6.5 (5.9/3)
  
!             if Has_Aliased and then not Is_Immutably_Limited_Type (R_Type) then
                 if Ada_Version < Ada_2012
                   and then Warn_On_Ada_2012_Compatibility
                 then
                    Error_Msg_N
!                     ("ALIASED only allowed for immutably limited return " &
!                      "objects in Ada 2012?y?", N);
  
!                else
                    Error_Msg_N
!                     ("ALIASED only allowed for immutably limited return " &
!                      "objects", N);
                 end if;
              end if;
  
*************** package body Sem_Ch6 is
*** 1886,1900 ****
              Analyze_Aspects_On_Subprogram_Body_Or_Stub (N);
           end if;
  
!          Analyze_Declarations (Declarations (N));
!          Check_Completion;
! 
!          --  Process the contract of the subprogram body after all declarations
!          --  have been analyzed. This ensures that any contract-related pragmas
!          --  are available through the N_Contract node of the body.
  
           Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id);
  
           Analyze (Handled_Statement_Sequence (N));
           Save_Global_References (Original_Node (N));
  
--- 1271,1289 ----
              Analyze_Aspects_On_Subprogram_Body_Or_Stub (N);
           end if;
  
!          --  Process the contract of the subprogram body after analyzing all
!          --  the contract-related pragmas within the declarations.
  
+          Analyze_Pragmas_In_Declarations (Body_Id);
           Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id);
  
+          --  Continue on with analyzing the declarations and statements once
+          --  contract expansion is done and we are done expanding contract
+          --  related wrappers.
+ 
+          Analyze_Declarations (Declarations (N));
+          Check_Completion;
+ 
           Analyze (Handled_Statement_Sequence (N));
           Save_Global_References (Original_Node (N));
  
*************** package body Sem_Ch6 is
*** 2007,2013 ****
        end loop;
  
        --  Determine whether the null procedure may be a completion of a generic
!       --  suprogram, in which case we use the new null body as the completion
        --  and set minimal semantic information on the original declaration,
        --  which is rewritten as a null statement.
  
--- 1396,1402 ----
        end loop;
  
        --  Determine whether the null procedure may be a completion of a generic
!       --  subprogram, in which case we use the new null body as the completion
        --  and set minimal semantic information on the original declaration,
        --  which is rewritten as a null statement.
  
*************** package body Sem_Ch6 is
*** 2019,2024 ****
--- 1408,1418 ----
           Analyze_Generic_Subprogram_Body (Null_Body, Prev);
           Is_Completion := True;
  
+          --  Mark the newly generated subprogram body as trivial
+ 
+          Set_Is_Trivial_Subprogram
+            (Defining_Unit_Name (Specification (Null_Body)));
+ 
           goto Leave;
  
        else
*************** package body Sem_Ch6 is
*** 2241,2255 ****
  
        --  Otherwise analyze the parameters
  
!       if Present (Actuals) then
!          Actual := First (Actuals);
  
!          while Present (Actual) loop
!             Analyze (Actual);
!             Check_Parameterless_Call (Actual);
!             Next (Actual);
!          end loop;
!       end if;
  
        --  Special processing for Elab_Spec, Elab_Body and Elab_Subp_Body calls
  
--- 1635,1647 ----
  
        --  Otherwise analyze the parameters
  
!       Actual := First (Actuals);
  
!       while Present (Actual) loop
!          Analyze (Actual);
!          Check_Parameterless_Call (Actual);
!          Next (Actual);
!       end loop;
  
        --  Special processing for Elab_Spec, Elab_Body and Elab_Subp_Body calls
  
*************** package body Sem_Ch6 is
*** 2366,2372 ****
                             Class_Wide_Type (Etype (First_Formal (Subp))) = Typ)
                   and then Try_Object_Operation (P)
                 then
!                   return;
  
                 else
                    Analyze_Call_And_Resolve;
--- 1758,1764 ----
                             Class_Wide_Type (Etype (First_Formal (Subp))) = Typ)
                   and then Try_Object_Operation (P)
                 then
!                   goto Leave;
  
                 else
                    Analyze_Call_And_Resolve;
*************** package body Sem_Ch6 is
*** 2867,2873 ****
        Conformant : Boolean;
        Desig_View : Entity_Id := Empty;
        Exch_Views : Elist_Id  := No_Elist;
-       HSS        : Node_Id;
        Mask_Types : Elist_Id  := No_Elist;
        Prot_Typ   : Entity_Id := Empty;
        Spec_Decl  : Node_Id   := Empty;
--- 2259,2264 ----
*************** package body Sem_Ch6 is
*** 2932,2940 ****
  
        procedure Check_Missing_Return;
        --  Checks for a function with a no return statements, and also performs
!       --  the warning checks implemented by Check_Returns. In formal mode, also
!       --  verify that a function ends with a RETURN and that a procedure does
!       --  not contain any RETURN.
  
        function Disambiguate_Spec return Entity_Id;
        --  When a primitive is declared between the private view and the full
--- 2323,2329 ----
  
        procedure Check_Missing_Return;
        --  Checks for a function with a no return statements, and also performs
!       --  the warning checks implemented by Check_Returns.
  
        function Disambiguate_Spec return Entity_Id;
        --  When a primitive is declared between the private view and the full
*************** package body Sem_Ch6 is
*** 3002,3032 ****
        begin
           --  Check for aspects that may generate a contract
  
!          if Present (Aspect_Specifications (N)) then
!             Item := First (Aspect_Specifications (N));
!             while Present (Item) loop
!                if Is_Subprogram_Contract_Annotation (Item) then
!                   return True;
!                end if;
  
!                Next (Item);
!             end loop;
!          end if;
  
           --  Check for pragmas that may generate a contract
  
!          if Present (Decls) then
!             Item := First (Decls);
!             while Present (Item) loop
!                if Nkind (Item) = N_Pragma
!                  and then Is_Subprogram_Contract_Annotation (Item)
!                then
!                   return True;
!                end if;
  
!                Next (Item);
!             end loop;
!          end if;
  
           return False;
        end Body_Has_Contract;
--- 2391,2417 ----
        begin
           --  Check for aspects that may generate a contract
  
!          Item := First (Aspect_Specifications (N));
!          while Present (Item) loop
!             if Is_Subprogram_Contract_Annotation (Item) then
!                return True;
!             end if;
  
!             Next (Item);
!          end loop;
  
           --  Check for pragmas that may generate a contract
  
!          Item := First (Decls);
!          while Present (Item) loop
!             if Nkind (Item) = N_Pragma
!               and then Is_Subprogram_Contract_Annotation (Item)
!             then
!                return True;
!             end if;
  
!             Next (Item);
!          end loop;
  
           return False;
        end Body_Has_Contract;
*************** package body Sem_Ch6 is
*** 3042,3082 ****
        begin
           --  Check for SPARK_Mode aspect
  
!          if Present (Aspect_Specifications (N)) then
!             Item := First (Aspect_Specifications (N));
!             while Present (Item) loop
!                if Get_Aspect_Id (Item) = Aspect_SPARK_Mode then
!                   return Get_SPARK_Mode_From_Annotation (Item) = On;
!                end if;
  
!                Next (Item);
!             end loop;
!          end if;
  
           --  Check for SPARK_Mode pragma
  
!          if Present (Decls) then
!             Item := First (Decls);
!             while Present (Item) loop
  
!                --  Pragmas that apply to a subprogram body are usually grouped
!                --  together. Look for a potential pragma SPARK_Mode among them.
  
!                if Nkind (Item) = N_Pragma then
!                   if Get_Pragma_Id (Item) = Pragma_SPARK_Mode then
!                      return Get_SPARK_Mode_From_Annotation (Item) = On;
!                   end if;
  
!                --  Otherwise the first non-pragma declarative item terminates
!                --  the region where pragma SPARK_Mode may appear.
  
!                else
!                   exit;
!                end if;
  
!                Next (Item);
!             end loop;
!          end if;
  
           --  Otherwise, the applicable SPARK_Mode is inherited from the
           --  enclosing subprogram or package.
--- 2427,2463 ----
        begin
           --  Check for SPARK_Mode aspect
  
!          Item := First (Aspect_Specifications (N));
!          while Present (Item) loop
!             if Get_Aspect_Id (Item) = Aspect_SPARK_Mode then
!                return Get_SPARK_Mode_From_Annotation (Item) = On;
!             end if;
  
!             Next (Item);
!          end loop;
  
           --  Check for SPARK_Mode pragma
  
!          Item := First (Decls);
!          while Present (Item) loop
  
!             --  Pragmas that apply to a subprogram body are usually grouped
!             --  together. Look for a potential pragma SPARK_Mode among them.
  
!             if Nkind (Item) = N_Pragma then
!                if Get_Pragma_Id (Item) = Pragma_SPARK_Mode then
!                   return Get_SPARK_Mode_From_Annotation (Item) = On;
!                end if;
  
!             --  Otherwise the first non-pragma declarative item terminates the
!             --  region where pragma SPARK_Mode may appear.
  
!             else
!                exit;
!             end if;
  
!             Next (Item);
!          end loop;
  
           --  Otherwise, the applicable SPARK_Mode is inherited from the
           --  enclosing subprogram or package.
*************** package body Sem_Ch6 is
*** 3331,3337 ****
                        or else
                          (Is_Class_Wide_Type (Designated_Type (Etype (Scop)))
                             and then
!                          Is_Limited_Record (Designated_Type (Etype (Scop)))))
             and then Expander_Active
           then
              Decl := Build_Master_Declaration (Loc);
--- 2712,2719 ----
                        or else
                          (Is_Class_Wide_Type (Designated_Type (Etype (Scop)))
                             and then
!                          Is_Limited_Record
!                            (Etype (Designated_Type (Etype (Scop))))))
             and then Expander_Active
           then
              Decl := Build_Master_Declaration (Loc);
*************** package body Sem_Ch6 is
*** 3512,3517 ****
--- 2894,2901 ----
        --------------------------
  
        procedure Check_Missing_Return is
+          HSS : constant Node_Id := Handled_Statement_Sequence (N);
+ 
           Id          : Entity_Id;
           Missing_Ret : Boolean;
  
*************** package body Sem_Ch6 is
*** 3523,3528 ****
--- 2907,2916 ----
                 Id := Body_Id;
              end if;
  
+             --  A function body shall contain at least one return statement
+             --  that applies to the function body, unless the function contains
+             --  code_statements; RM 6.5(5).
+ 
              if Return_Present (Id) then
                 Check_Returns (HSS, 'F', Missing_Ret);
  
*************** package body Sem_Ch6 is
*** 3688,3693 ****
--- 3076,3082 ----
  
           procedure Detect_And_Exchange (Id : Entity_Id) is
              Typ : constant Entity_Id := Etype (Id);
+ 
           begin
              if From_Limited_With (Typ)
                and then Has_Non_Limited_View (Typ)
*************** package body Sem_Ch6 is
*** 3945,3962 ****
  
                 --  Move relevant pragmas to the spec
  
!                elsif Pragma_Name_Unmapped (Decl) in Name_Depends
!                                                   | Name_Ghost
!                                                   | Name_Global
!                                                   | Name_Pre
!                                                   | Name_Precondition
!                                                   | Name_Post
!                                                   | Name_Refined_Depends
!                                                   | Name_Refined_Global
!                                                   | Name_Refined_Post
!                                                   | Name_Inline
!                                                   | Name_Pure_Function
!                                                   | Name_Volatile_Function
                 then
                    Remove (Decl);
                    Insert_After (Insert_Nod, Decl);
--- 3334,3342 ----
  
                 --  Move relevant pragmas to the spec
  
!                elsif
!                  Pragma_Significant_To_Subprograms
!                    (Get_Pragma_Id (Decl))
                 then
                    Remove (Decl);
                    Insert_After (Insert_Nod, Decl);
*************** package body Sem_Ch6 is
*** 4051,4057 ****
              --  an instance that may have manipulated the flag during
              --  expansion. As a result, we add an exception for this case.
  
!             elsif not Present (Overridden_Operation (Spec_Id))
                and then not (Chars (Spec_Id) in Name_Adjust
                                               | Name_Finalize
                                               | Name_Initialize
--- 3431,3437 ----
              --  an instance that may have manipulated the flag during
              --  expansion. As a result, we add an exception for this case.
  
!             elsif No (Overridden_Operation (Spec_Id))
                and then not (Chars (Spec_Id) in Name_Adjust
                                               | Name_Finalize
                                               | Name_Initialize
*************** package body Sem_Ch6 is
*** 4200,4206 ****
              Analyze_Generic_Subprogram_Body (N, Spec_Id);
  
              if Nkind (N) = N_Subprogram_Body then
-                HSS := Handled_Statement_Sequence (N);
                 Check_Missing_Return;
              end if;
  
--- 3580,3585 ----
*************** package body Sem_Ch6 is
*** 4329,4353 ****
              end if;
  
              --  A subprogram body should cause freezing of its own declaration,
!             --  but if there was no previous explicit declaration, then the
!             --  subprogram will get frozen too late (there may be code within
!             --  the body that depends on the subprogram having been frozen,
!             --  such as uses of extra formals), so we force it to be frozen
!             --  here. Same holds if the body and spec are compilation units.
!             --  Finally, if the return type is an anonymous access to protected
!             --  subprogram, it must be frozen before the body because its
!             --  expansion has generated an equivalent type that is used when
!             --  elaborating the body.
! 
!             --  An exception in the case of Ada 2012, AI05-177: The bodies
!             --  created for expression functions do not freeze.
  
!             if No (Spec_Id)
!               and then Nkind (Original_Node (N)) /= N_Expression_Function
              then
-                Freeze_Before (N, Body_Id);
- 
-             elsif Nkind (Parent (N)) = N_Compilation_Unit then
                 Freeze_Before (N, Spec_Id);
  
              elsif Is_Access_Subprogram_Type (Etype (Body_Id)) then
--- 3708,3722 ----
              end if;
  
              --  A subprogram body should cause freezing of its own declaration,
!             --  so, if the body and spec are compilation units, we must do it
!             --  manually here. Moreover, if the return type is anonymous access
!             --  to protected subprogram, it must be frozen before the body
!             --  because its expansion has generated an equivalent type that is
!             --  used when elaborating the body.
  
!             if Present (Spec_Id)
!               and then Nkind (Parent (N)) = N_Compilation_Unit
              then
                 Freeze_Before (N, Spec_Id);
  
              elsif Is_Access_Subprogram_Type (Etype (Body_Id)) then
*************** package body Sem_Ch6 is
*** 4467,4472 ****
--- 3836,3856 ----
           Spec_Decl := Unit_Declaration_Node (Spec_Id);
           Verify_Overriding_Indicator;
  
+          --  For functions with separate spec, if their return type was visible
+          --  through a limited-with context clause, their extra formals were
+          --  not added when the spec was frozen. Now the full view must be
+          --  available, and the extra formals can be created and Returns_By_Ref
+          --  computed (required to generate its return statements).
+ 
+          if Ekind (Spec_Id) = E_Function
+            and then From_Limited_With (Etype (Spec_Id))
+            and then Is_Build_In_Place_Function (Spec_Id)
+            and then not Has_BIP_Formals (Spec_Id)
+          then
+             Create_Extra_Formals (Spec_Id);
+             Compute_Returns_By_Ref (Spec_Id);
+          end if;
+ 
           --  In general, the spec will be frozen when we start analyzing the
           --  body. However, for internally generated operations, such as
           --  wrapper functions for inherited operations with controlling
*************** package body Sem_Ch6 is
*** 4495,4501 ****
              --  This also needs to be done in the case of an ignored Ghost
              --  expression function, where the expander isn't active.
  
!             Set_Is_Frozen (Spec_Id);
              Mask_Types := Mask_Unfrozen_Types (Spec_Id);
  
           elsif not Is_Frozen (Spec_Id)
--- 3879,3894 ----
              --  This also needs to be done in the case of an ignored Ghost
              --  expression function, where the expander isn't active.
  
!             --  A further complication arises if the expression function is
!             --  a primitive operation of a tagged type: in that case the
!             --  function entity must be frozen before the dispatch table for
!             --  the type is constructed, so it will be frozen like other local
!             --  entities, at the end of the current scope.
! 
!             if not Is_Dispatching_Operation (Spec_Id) then
!                Set_Is_Frozen (Spec_Id);
!             end if;
! 
              Mask_Types := Mask_Unfrozen_Types (Spec_Id);
  
           elsif not Is_Frozen (Spec_Id)
*************** package body Sem_Ch6 is
*** 4715,4729 ****
  
             --  No warnings for expression functions
  
!            and then Nkind (Original_Node (N)) /= N_Expression_Function
           then
              Style.Body_With_No_Spec (N);
           end if;
  
!          New_Overloaded_Entity (Body_Id);
  
           if Nkind (N) /= N_Subprogram_Body_Stub then
              Set_Acts_As_Spec (N);
              Generate_Definition (Body_Id);
              Generate_Reference
                (Body_Id, Body_Id, 'b', Set_Ref => False, Force => True);
--- 4108,4149 ----
  
             --  No warnings for expression functions
  
!            and then (Nkind (N) /= N_Subprogram_Body
!                       or else not Was_Expression_Function (N))
           then
              Style.Body_With_No_Spec (N);
           end if;
  
!          --  First set Acts_As_Spec if appropriate
  
           if Nkind (N) /= N_Subprogram_Body_Stub then
              Set_Acts_As_Spec (N);
+          end if;
+ 
+          New_Overloaded_Entity (Body_Id);
+ 
+          --  A subprogram body should cause freezing of its own declaration,
+          --  but if there was no previous explicit declaration, then the
+          --  subprogram will get frozen too late (there may be code within
+          --  the body that depends on the subprogram having been frozen,
+          --  such as uses of extra formals), so we force it to be frozen here.
+          --  An exception in Ada 2012 is that the body created for expression
+          --  functions does not freeze.
+ 
+          if Nkind (N) /= N_Subprogram_Body
+            or else not Was_Expression_Function (N)
+          then
+             --  First clear the Is_Public flag on thunks since they are only
+             --  referenced locally by dispatch tables and thus never inlined.
+ 
+             if Is_Thunk (Body_Id) then
+                Set_Is_Public (Body_Id, False);
+             end if;
+ 
+             Freeze_Before (N, Body_Id);
+          end if;
+ 
+          if Nkind (N) /= N_Subprogram_Body_Stub then
              Generate_Definition (Body_Id);
              Generate_Reference
                (Body_Id, Body_Id, 'b', Set_Ref => False, Force => True);
*************** package body Sem_Ch6 is
*** 4931,4939 ****
                       --  by the GCC backend (ie. "function might not be
                       --  inlinable").
  
!                      if Present (Subp_Decl)
!                        and then Has_Excluded_Declaration (Spec_Id, Subp_Decl)
!                      then
                          null;
  
                       elsif Has_Excluded_Statement
--- 4351,4357 ----
                       --  by the GCC backend (ie. "function might not be
                       --  inlinable").
  
!                      if Has_Excluded_Declaration (Spec_Id, Subp_Decl) then
                          null;
  
                       elsif Has_Excluded_Statement
*************** package body Sem_Ch6 is
*** 5110,5118 ****
           end;
        end if;
  
!       --  Now we can go on to analyze the body
  
-       HSS := Handled_Statement_Sequence (N);
        Set_Actual_Subtypes (N, Current_Scope);
  
        --  Add a declaration for the Protection object, renaming declarations
--- 4528,4554 ----
           end;
        end if;
  
!       --  Ada 2012 (AI05-0151): Incomplete types coming from a limited context
!       --  may now appear in parameter and result profiles. Since the analysis
!       --  of a subprogram body may use the parameter and result profile of the
!       --  spec, swap any limited views with their non-limited counterpart.
! 
!       if Ada_Version >= Ada_2012 and then Present (Spec_Id) then
!          Exch_Views := Exchange_Limited_Views (Spec_Id);
!       end if;
! 
!       --  Analyze any aspect specifications that appear on the subprogram body
! 
!       if Has_Aspects (N) then
!          Analyze_Aspects_On_Subprogram_Body_Or_Stub (N);
!       end if;
! 
!       --  Process the contract of the subprogram body after analyzing all the
!       --  contract-related pragmas within the declarations.
! 
!       Analyze_Pragmas_In_Declarations (Body_Id);
!       Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id);
  
        Set_Actual_Subtypes (N, Current_Scope);
  
        --  Add a declaration for the Protection object, renaming declarations
*************** package body Sem_Ch6 is
*** 5133,5178 ****
             (Sloc (N), Spec_Id, Prot_Typ, N, Declarations (N));
        end if;
  
-       --  Ada 2012 (AI05-0151): Incomplete types coming from a limited context
-       --  may now appear in parameter and result profiles. Since the analysis
-       --  of a subprogram body may use the parameter and result profile of the
-       --  spec, swap any limited views with their non-limited counterpart.
- 
-       if Ada_Version >= Ada_2012 and then Present (Spec_Id) then
-          Exch_Views := Exchange_Limited_Views (Spec_Id);
-       end if;
- 
        --  If the return type is an anonymous access type whose designated type
        --  is the limited view of a class-wide type and the non-limited view is
        --  available, update the return type accordingly.
  
!       if Ada_Version >= Ada_2005 and then Present (Spec_Id) then
           declare
              Etyp : Entity_Id;
-             Rtyp : Entity_Id;
  
           begin
!             Rtyp := Etype (Spec_Id);
  
!             if Ekind (Rtyp) = E_Anonymous_Access_Type then
!                Etyp := Directly_Designated_Type (Rtyp);
  
!                if Is_Class_Wide_Type (Etyp)
!                  and then From_Limited_With (Etyp)
                 then
!                   Desig_View := Etyp;
!                   Set_Directly_Designated_Type (Rtyp, Available_View (Etyp));
                 end if;
              end if;
           end;
        end if;
  
-       --  Analyze any aspect specifications that appear on the subprogram body
- 
-       if Has_Aspects (N) then
-          Analyze_Aspects_On_Subprogram_Body_Or_Stub (N);
-       end if;
- 
        Analyze_Declarations (Declarations (N));
  
        --  Verify that the SPARK_Mode of the body agrees with that of its spec
--- 4569,4610 ----
             (Sloc (N), Spec_Id, Prot_Typ, N, Declarations (N));
        end if;
  
        --  If the return type is an anonymous access type whose designated type
        --  is the limited view of a class-wide type and the non-limited view is
        --  available, update the return type accordingly.
  
!       if Ada_Version >= Ada_2005
!         and then Present (Spec_Id)
!         and then Ekind (Etype (Spec_Id)) = E_Anonymous_Access_Type
!       then
           declare
              Etyp : Entity_Id;
  
           begin
!             Etyp := Directly_Designated_Type (Etype (Spec_Id));
  
!             if Is_Class_Wide_Type (Etyp)
!               and then From_Limited_With (Etyp)
!               and then Has_Non_Limited_View (Etyp)
!             then
!                Desig_View := Etyp;
!                Etyp := Non_Limited_View (Etyp);
  
!                --  If the class-wide type has been created by the completion of
!                --  an incomplete tagged type declaration, get the class-wide
!                --  type of the incomplete tagged type to match Find_Type_Name.
! 
!                if Nkind (Parent (Etyp)) = N_Full_Type_Declaration
!                  and then Present (Incomplete_View (Parent (Etyp)))
                 then
!                   Etyp := Class_Wide_Type (Incomplete_View (Parent (Etyp)));
                 end if;
+ 
+                Set_Directly_Designated_Type (Etype (Spec_Id), Etyp);
              end if;
           end;
        end if;
  
        Analyze_Declarations (Declarations (N));
  
        --  Verify that the SPARK_Mode of the body agrees with that of its spec
*************** package body Sem_Ch6 is
*** 5211,5227 ****
           end if;
        end if;
  
-       --  A subprogram body freezes its own contract. Analyze the contract
-       --  after the declarations of the body have been processed as pragmas
-       --  are now chained on the contract of the subprogram body.
- 
-       Analyze_Entry_Or_Subprogram_Body_Contract (Body_Id);
- 
        --  Check completion, and analyze the statements
  
        Check_Completion;
        Inspect_Deferred_Constant_Completion (Declarations (N));
!       Analyze (HSS);
  
        --  Add the generated minimum accessibility objects to the subprogram
        --  body's list of declarations after analysis of the statements and
--- 4643,4653 ----
           end if;
        end if;
  
        --  Check completion, and analyze the statements
  
        Check_Completion;
        Inspect_Deferred_Constant_Completion (Declarations (N));
!       Analyze (Handled_Statement_Sequence (N));
  
        --  Add the generated minimum accessibility objects to the subprogram
        --  body's list of declarations after analysis of the statements and
*************** package body Sem_Ch6 is
*** 5238,5244 ****
  
        --  Deal with end of scope processing for the body
  
!       Process_End_Label (HSS, 't', Current_Scope);
        Update_Use_Clause_Chain;
        End_Scope;
  
--- 4664,4671 ----
  
        --  Deal with end of scope processing for the body
  
!       Process_End_Label
!         (Handled_Statement_Sequence (N), 't', Current_Scope);
        Update_Use_Clause_Chain;
        End_Scope;
  
*************** package body Sem_Ch6 is
*** 5352,5364 ****
        --  the warning.
  
        declare
!          Stm : Node_Id;
! 
        begin
           --  Skip call markers installed by the ABE mechanism, labels, and
           --  Push_xxx_Error_Label to find the first real statement.
  
-          Stm := First (Statements (HSS));
           while Nkind (Stm) in N_Call_Marker | N_Label | N_Push_xxx_Label loop
              Next (Stm);
           end loop;
--- 4779,4789 ----
        --  the warning.
  
        declare
!          Stm : Node_Id := First (Statements (Handled_Statement_Sequence (N)));
        begin
           --  Skip call markers installed by the ABE mechanism, labels, and
           --  Push_xxx_Error_Label to find the first real statement.
  
           while Nkind (Stm) in N_Call_Marker | N_Label | N_Push_xxx_Label loop
              Next (Stm);
           end loop;
*************** package body Sem_Ch6 is
*** 5406,5416 ****
           end;
        end;
  
        --  Check for variables that are never modified
  
        declare
!          E1 : Entity_Id;
!          E2 : Entity_Id;
  
        begin
           --  If there is a separate spec, then transfer Never_Set_In_Source
--- 4831,4857 ----
           end;
        end;
  
+       --  Check if a Body_To_Inline was created, but the subprogram has
+       --  references to object renamings which will be replaced by the special
+       --  SPARK expansion into nodes of a different kind, which is not expected
+       --  by the inlining mechanism. In that case, the Body_To_Inline is
+       --  deleted prior to being analyzed. This check needs to take place
+       --  after analysis of the subprogram body.
+ 
+       if GNATprove_Mode
+         and then Present (Spec_Id)
+         and then
+           Nkind (Unit_Declaration_Node (Spec_Id)) = N_Subprogram_Declaration
+         and then Present (Body_To_Inline (Unit_Declaration_Node (Spec_Id)))
+       then
+          Check_Object_Renaming_In_GNATprove_Mode (Spec_Id);
+       end if;
+ 
        --  Check for variables that are never modified
  
        declare
!          F1 : Entity_Id;
!          F2 : Entity_Id;
  
        begin
           --  If there is a separate spec, then transfer Never_Set_In_Source
*************** package body Sem_Ch6 is
*** 5419,5450 ****
           --  the body entities, not the spec entities.
  
           if Present (Spec_Id) then
!             E1 := First_Entity (Spec_Id);
!             while Present (E1) loop
!                if Ekind (E1) = E_Out_Parameter then
!                   E2 := First_Entity (Body_Id);
!                   while Present (E2) loop
!                      exit when Chars (E1) = Chars (E2);
!                      Next_Entity (E2);
                    end loop;
  
!                   if Present (E2) then
!                      Set_Never_Set_In_Source (E2, Never_Set_In_Source (E1));
                    end if;
                 end if;
  
!                Next_Entity (E1);
              end loop;
           end if;
  
           --  Check references of the subprogram spec when we are dealing with
           --  an expression function due to it having a generated body.
-          --  Otherwise, we simply check the formals of the subprogram body.
  
           if Present (Spec_Id)
             and then Is_Expression_Function (Spec_Id)
           then
              Check_References (Spec_Id);
           else
              Check_References (Body_Id);
           end if;
--- 4860,4901 ----
           --  the body entities, not the spec entities.
  
           if Present (Spec_Id) then
!             F1 := First_Formal (Spec_Id);
!             while Present (F1) loop
!                if Ekind (F1) = E_Out_Parameter then
!                   F2 := First_Formal (Body_Id);
!                   while Present (F2) loop
!                      exit when Chars (F1) = Chars (F2);
!                      Next_Formal (F2);
                    end loop;
  
!                   if Present (F2) then
!                      Set_Never_Set_In_Source (F2, Never_Set_In_Source (F1));
                    end if;
                 end if;
  
!                Next_Formal (F1);
              end loop;
           end if;
  
           --  Check references of the subprogram spec when we are dealing with
           --  an expression function due to it having a generated body.
  
           if Present (Spec_Id)
             and then Is_Expression_Function (Spec_Id)
           then
              Check_References (Spec_Id);
+ 
+          --  Skip the check for subprograms generated for protected subprograms
+          --  because it is also done for the protected subprograms themselves.
+ 
+          elsif Present (Spec_Id)
+            and then Present (Protected_Subprogram (Spec_Id))
+          then
+             null;
+ 
+          --  Otherwise, we simply check the formals of the subprogram body.
+ 
           else
              Check_References (Body_Id);
           end if;
*************** package body Sem_Ch6 is
*** 5475,5485 ****
        --  Restore the limited views in the spec, if any, to let the back end
        --  process it without running into circularities.
  
!       if Exch_Views /= No_Elist then
           Restore_Limited_Views (Exch_Views);
        end if;
  
!       if Mask_Types /= No_Elist then
           Unmask_Unfrozen_Types (Mask_Types);
        end if;
  
--- 4926,4936 ----
        --  Restore the limited views in the spec, if any, to let the back end
        --  process it without running into circularities.
  
!       if Present (Exch_Views) then
           Restore_Limited_Views (Exch_Views);
        end if;
  
!       if Present (Mask_Types) then
           Unmask_Unfrozen_Types (Mask_Types);
        end if;
  
*************** package body Sem_Ch6 is
*** 5899,5905 ****
           --  the subprogram is abstract also. This does not apply to renaming
           --  declarations, where abstractness is inherited, and to subprogram
           --  bodies generated for stream operations, which become renamings as
!          --  bodies.
  
           --  In case of primitives associated with abstract interface types
           --  the check is applied later (see Analyze_Subprogram_Declaration).
--- 5350,5356 ----
           --  the subprogram is abstract also. This does not apply to renaming
           --  declarations, where abstractness is inherited, and to subprogram
           --  bodies generated for stream operations, which become renamings as
!          --  bodies. We also skip the check for thunks.
  
           --  In case of primitives associated with abstract interface types
           --  the check is applied later (see Analyze_Subprogram_Declaration).
*************** package body Sem_Ch6 is
*** 5908,5913 ****
--- 5359,5365 ----
                N_Abstract_Subprogram_Declaration        |
                N_Formal_Abstract_Subprogram_Declaration |
                N_Subprogram_Renaming_Declaration
+            and then not Is_Thunk (Designator)
           then
              if Is_Abstract_Type (Etype (Designator)) then
                 Error_Msg_N
*************** package body Sem_Ch6 is
*** 6719,6725 ****
                    Error_Msg_Sloc   := Sloc (Op);
  
                    if Comes_From_Source (Op) or else No (Alias (Op)) then
!                      if not Present (Overridden_Operation (Op)) then
                          Error_Msg_N ("\\primitive % defined #", Typ);
                       else
                          Error_Msg_N
--- 6171,6177 ----
                    Error_Msg_Sloc   := Sloc (Op);
  
                    if Comes_From_Source (Op) or else No (Alias (Op)) then
!                      if No (Overridden_Operation (Op)) then
                          Error_Msg_N ("\\primitive % defined #", Typ);
                       else
                          Error_Msg_N
*************** package body Sem_Ch6 is
*** 7494,7499 ****
--- 6946,6953 ----
        Err  : out Boolean;
        Proc : Entity_Id := Empty)
     is
+       pragma Assert (Mode in 'F' | 'P');
+       pragma Assert (if Mode = 'F' then No (Proc));
        Handler : Node_Id;
  
        procedure Check_Statement_Sequence (L : List_Id);
*************** package body Sem_Ch6 is
*** 7543,7557 ****
  
           --  Local variables
  
!          Raise_Exception_Call : Boolean;
           --  Set True if statement sequence terminated by Raise_Exception call
           --  or a Reraise_Occurrence call.
  
        --  Start of processing for Check_Statement_Sequence
  
        begin
-          Raise_Exception_Call := False;
- 
           --  Get last real statement
  
           Last_Stm := Last (L);
--- 6997,7009 ----
  
           --  Local variables
  
!          Raise_Exception_Call : Boolean := False;
           --  Set True if statement sequence terminated by Raise_Exception call
           --  or a Reraise_Occurrence call.
  
        --  Start of processing for Check_Statement_Sequence
  
        begin
           --  Get last real statement
  
           Last_Stm := Last (L);
*************** package body Sem_Ch6 is
*** 7617,7623 ****
  
           while Nkind (Last_Stm) = N_Pragma
  
!          --  Don't count call to SS_Release (can happen after Raise_Exception)
  
             or else
               (Nkind (Last_Stm) = N_Procedure_Call_Statement
--- 7069,7076 ----
  
           while Nkind (Last_Stm) = N_Pragma
  
!            --  Don't count call to SS_Release (can happen after
!            --  Raise_Exception).
  
             or else
               (Nkind (Last_Stm) = N_Procedure_Call_Statement
*************** package body Sem_Ch6 is
*** 7626,7632 ****
                  and then
                Is_RTE (Entity (Name (Last_Stm)), RE_SS_Release))
  
!          --  Don't count exception junk
  
             or else
               (Nkind (Last_Stm) in
--- 7079,7085 ----
                  and then
                Is_RTE (Entity (Name (Last_Stm)), RE_SS_Release))
  
!            --  Don't count exception junk
  
             or else
               (Nkind (Last_Stm) in
*************** package body Sem_Ch6 is
*** 7634,7643 ****
                 and then Exception_Junk (Last_Stm))
             or else Nkind (Last_Stm) in N_Push_xxx_Label | N_Pop_xxx_Label
  
!          --  Inserted code, such as finalization calls, is irrelevant: we only
!          --  need to check original source.
  
!            or else Is_Rewrite_Insertion (Last_Stm)
           loop
              Prev (Last_Stm);
           end loop;
--- 7087,7098 ----
                 and then Exception_Junk (Last_Stm))
             or else Nkind (Last_Stm) in N_Push_xxx_Label | N_Pop_xxx_Label
  
!            --  Inserted code, such as finalization calls, is irrelevant; we
!            --  only need to check original source. If we see a transfer of
!            --  control, we stop.
  
!            or else (Is_Rewrite_Insertion (Last_Stm)
!                       and then not Is_Transfer (Last_Stm))
           loop
              Prev (Last_Stm);
           end loop;
*************** package body Sem_Ch6 is
*** 7701,7717 ****
              Check_Statement_Sequence (Then_Statements (Last_Stm));
              Check_Statement_Sequence (Else_Statements (Last_Stm));
  
!             if Present (Elsif_Parts (Last_Stm)) then
!                declare
!                   Elsif_Part : Node_Id := First (Elsif_Parts (Last_Stm));
  
!                begin
!                   while Present (Elsif_Part) loop
!                      Check_Statement_Sequence (Then_Statements (Elsif_Part));
!                      Next (Elsif_Part);
!                   end loop;
!                end;
!             end if;
  
              return;
  
--- 7156,7170 ----
              Check_Statement_Sequence (Then_Statements (Last_Stm));
              Check_Statement_Sequence (Else_Statements (Last_Stm));
  
!             declare
!                Elsif_Part : Node_Id := First (Elsif_Parts (Last_Stm));
  
!             begin
!                while Present (Elsif_Part) loop
!                   Check_Statement_Sequence (Then_Statements (Elsif_Part));
!                   Next (Elsif_Part);
!                end loop;
!             end;
  
              return;
  
*************** package body Sem_Ch6 is
*** 8289,8295 ****
                or else not Is_Overloadable (Subp)
                or else not Is_Primitive (Subp)
                or else not Is_Dispatching_Operation (Subp)
!               or else not Present (Find_Dispatching_Type (Subp))
                or else not Is_Interface (Find_Dispatching_Type (Subp))
              then
                 null;
--- 7742,7748 ----
                or else not Is_Overloadable (Subp)
                or else not Is_Primitive (Subp)
                or else not Is_Dispatching_Operation (Subp)
!               or else No (Find_Dispatching_Type (Subp))
                or else not Is_Interface (Find_Dispatching_Type (Subp))
              then
                 null;
*************** package body Sem_Ch6 is
*** 8394,8399 ****
--- 7847,8099 ----
          (New_Id, Old_Id, Type_Conformant, True, Result, Err_Loc);
     end Check_Type_Conformant;
  
+    -----------------------------
+    -- Check_Untagged_Equality --
+    -----------------------------
+ 
+    procedure Check_Untagged_Equality (Eq_Op : Entity_Id) is
+       Eq_Decl : constant Node_Id   := Unit_Declaration_Node (Eq_Op);
+       Typ     : constant Entity_Id := Etype (First_Formal (Eq_Op));
+ 
+       procedure Freezing_Point_Warning (N : Node_Id; S : String);
+       --  Output a warning about the freezing point N of Typ
+ 
+       function Is_Actual_Of_Instantiation
+         (E    : Entity_Id;
+          Inst : Node_Id) return Boolean;
+       --  Return True if E is an actual parameter of instantiation Inst
+ 
+       -----------------------------------
+       -- Output_Freezing_Point_Warning --
+       -----------------------------------
+ 
+       procedure Freezing_Point_Warning (N : Node_Id; S : String) is
+       begin
+          Error_Msg_String (1 .. S'Length) := S;
+          Error_Msg_Strlen := S'Length;
+ 
+          if Ada_Version >= Ada_2012 then
+             Error_Msg_NE ("type& is frozen by ~??", N, Typ);
+             Error_Msg_N
+               ("\an equality operator cannot be declared after this point??",
+                N);
+ 
+          else
+             Error_Msg_NE ("type& is frozen by ~ (Ada 2012)?y?", N, Typ);
+             Error_Msg_N
+               ("\an equality operator cannot be declared after this point"
+                & " (Ada 2012)?y?", N);
+          end if;
+       end Freezing_Point_Warning;
+ 
+       --------------------------------
+       -- Is_Actual_Of_Instantiation --
+       --------------------------------
+ 
+       function Is_Actual_Of_Instantiation
+         (E    : Entity_Id;
+          Inst : Node_Id) return Boolean
+       is
+          Assoc : Node_Id;
+ 
+       begin
+          if Present (Generic_Associations (Inst)) then
+             Assoc := First (Generic_Associations (Inst));
+ 
+             while Present (Assoc) loop
+                if Present (Explicit_Generic_Actual_Parameter (Assoc))
+                  and then
+                    Is_Entity_Name (Explicit_Generic_Actual_Parameter (Assoc))
+                  and then
+                    Entity (Explicit_Generic_Actual_Parameter (Assoc)) = E
+                then
+                   return True;
+                end if;
+ 
+                Next (Assoc);
+             end loop;
+          end if;
+ 
+          return False;
+       end Is_Actual_Of_Instantiation;
+ 
+       --  Local variable
+ 
+       Decl : Node_Id;
+ 
+    --  Start of processing for Check_Untagged_Equality
+ 
+    begin
+       --  This check applies only if we have a subprogram declaration or a
+       --  subprogram body that is not a completion, for an untagged record
+       --  type, and that is conformant with the predefined operator.
+ 
+       if (Nkind (Eq_Decl) /= N_Subprogram_Declaration
+            and then not (Nkind (Eq_Decl) = N_Subprogram_Body
+                           and then Acts_As_Spec (Eq_Decl)))
+         or else not Is_Record_Type (Typ)
+         or else Is_Tagged_Type (Typ)
+         or else not Is_User_Defined_Equality (Eq_Op)
+       then
+          return;
+       end if;
+ 
+       --  In Ada 2012 case, we will output errors or warnings depending on
+       --  the setting of debug flag -gnatd.E.
+ 
+       if Ada_Version >= Ada_2012 then
+          Error_Msg_Warn := Debug_Flag_Dot_EE;
+ 
+       --  In earlier versions of Ada, nothing to do unless we are warning on
+       --  Ada 2012 incompatibilities (Warn_On_Ada_2012_Incompatibility set).
+ 
+       else
+          if not Warn_On_Ada_2012_Compatibility then
+             return;
+          end if;
+       end if;
+ 
+       --  Cases where the type has already been frozen
+ 
+       if Is_Frozen (Typ) then
+ 
+          --  The check applies to a primitive operation, so check that type
+          --  and equality operation are in the same scope.
+ 
+          if Scope (Typ) /= Current_Scope then
+             return;
+ 
+          --  If the type is a generic actual (sub)type, the operation is not
+          --  primitive either because the base type is declared elsewhere.
+ 
+          elsif Is_Generic_Actual_Type (Typ) then
+             return;
+ 
+          --  Here we may have an error of declaration after freezing, but we
+          --  must make sure not to flag the equality operator itself causing
+          --  the freezing when it is a subprogram body.
+ 
+          else
+             Decl := Next (Declaration_Node (Typ));
+ 
+             while Present (Decl) and then Decl /= Eq_Decl loop
+ 
+                --  The declaration of an object of the type
+ 
+                if Nkind (Decl) = N_Object_Declaration
+                  and then Etype (Defining_Identifier (Decl)) = Typ
+                then
+                   Freezing_Point_Warning (Decl, "declaration");
+                   exit;
+ 
+                --  The instantiation of a generic on the type
+ 
+                elsif Nkind (Decl) in N_Generic_Instantiation
+                  and then Is_Actual_Of_Instantiation (Typ, Decl)
+                then
+                   Freezing_Point_Warning (Decl, "instantiation");
+                   exit;
+ 
+                --  A noninstance proper body, body stub or entry body
+ 
+                elsif Nkind (Decl) in N_Proper_Body
+                                    | N_Body_Stub
+                                    | N_Entry_Body
+                  and then not Is_Generic_Instance (Defining_Entity (Decl))
+                then
+                   Freezing_Point_Warning (Decl, "body");
+                   exit;
+ 
+                --  If we have reached the freeze node and immediately after we
+                --  have the body or generated code for the body, then it is the
+                --  body that caused the freezing and this is legal.
+ 
+                elsif Nkind (Decl) = N_Freeze_Entity
+                  and then Entity (Decl) = Typ
+                  and then (Next (Decl) = Eq_Decl
+                             or else
+                            Sloc (Next (Decl)) = Sloc (Eq_Decl))
+                then
+                   return;
+                end if;
+ 
+                Next (Decl);
+             end loop;
+ 
+             --  Here we have a definite error of declaration after freezing
+ 
+             if Ada_Version >= Ada_2012 then
+                Error_Msg_NE
+                  ("equality operator must be declared before type & is "
+                   & "frozen (RM 4.5.2 (9.8)) (Ada 2012)<<", Eq_Op, Typ);
+ 
+                --  In Ada 2012 mode with error turned to warning, output one
+                --  more warning to warn that the equality operation may not
+                --  compose. This is the consequence of ignoring the error.
+ 
+                if Error_Msg_Warn then
+                   Error_Msg_N ("\equality operation may not compose??", Eq_Op);
+                end if;
+ 
+             else
+                Error_Msg_NE
+                  ("equality operator must be declared before type& is "
+                   & "frozen (RM 4.5.2 (9.8)) (Ada 2012)?y?", Eq_Op, Typ);
+             end if;
+ 
+             --  If we have found no freezing point and the declaration of the
+             --  operator could not be reached from that of the type and we are
+             --  in a package body, this must be because the type is declared
+             --  in the spec of the package. Add a message tailored to this.
+ 
+             if No (Decl) and then In_Package_Body (Scope (Typ)) then
+                if Ada_Version >= Ada_2012 then
+                   if Nkind (Eq_Decl) = N_Subprogram_Body then
+                      Error_Msg_N
+                        ("\put declaration in package spec<<", Eq_Op);
+                   else
+                      Error_Msg_N
+                        ("\move declaration to package spec<<", Eq_Op);
+                   end if;
+ 
+                else
+                   if Nkind (Eq_Decl) = N_Subprogram_Body then
+                      Error_Msg_N
+                        ("\put declaration in package spec (Ada 2012)?y?",
+                         Eq_Op);
+                   else
+                      Error_Msg_N
+                        ("\move declaration to package spec (Ada 2012)?y?",
+                         Eq_Op);
+                   end if;
+                end if;
+             end if;
+          end if;
+ 
+       --  Now check for AI12-0352: the declaration of a user-defined primitive
+       --  equality operation for a record type T is illegal if it occurs after
+       --  a type has been derived from T.
+ 
+       else
+          Decl := Next (Declaration_Node (Typ));
+ 
+          while Present (Decl) and then Decl /= Eq_Decl loop
+             if Nkind (Decl) = N_Full_Type_Declaration
+               and then Etype (Defining_Identifier (Decl)) = Typ
+             then
+                Error_Msg_N
+                  ("equality operator cannot appear after derivation", Eq_Op);
+                Error_Msg_NE
+                  ("an equality operator for& cannot be declared after "
+                   & "this point??",
+                   Decl, Typ);
+             end if;
+ 
+             Next (Decl);
+          end loop;
+       end if;
+    end Check_Untagged_Equality;
+ 
     ---------------------------
     -- Can_Override_Operator --
     ---------------------------
*************** package body Sem_Ch6 is
*** 8873,8878 ****
--- 8573,8598 ----
        --  BIP_xxx denotes an extra formal for a build-in-place function. See
        --  the full list in exp_ch6.BIP_Formal_Kind.
  
+       function Has_Extra_Formals (E : Entity_Id) return Boolean;
+       --  Determines if E has its extra formals
+ 
+       function Needs_Accessibility_Check_Extra
+         (E      : Entity_Id;
+          Formal : Node_Id) return Boolean;
+       --  Determines whether the given formal of E needs an extra formal for
+       --  supporting accessibility checking. Returns True for both anonymous
+       --  access formals and formals of named access types that are marked as
+       --  controlling formals. The latter case can occur when the subprogram
+       --  Expand_Dispatching_Call creates a subprogram-type and substitutes
+       --  the types of access-to-class-wide actuals for the anonymous access-
+       --  to-specific-type of controlling formals.
+ 
+       function Parent_Subprogram (Subp_Id : Entity_Id) return Entity_Id;
+       --  Subp_Id is a subprogram of a derived type; return its parent
+       --  subprogram if Subp_Id overrides a parent primitive or derives
+       --  from a parent primitive, and such parent primitive can have extra
+       --  formals. Otherwise return Empty.
+ 
        ----------------------
        -- Add_Extra_Formal --
        ----------------------
*************** package body Sem_Ch6 is
*** 8883,8892 ****
           Scope        : Entity_Id;
           Suffix       : String) return Entity_Id
        is
!          EF : constant Entity_Id :=
!                 Make_Defining_Identifier (Sloc (Assoc_Entity),
!                   Chars  => New_External_Name (Chars (Assoc_Entity),
!                                                Suffix => Suffix));
  
        begin
           --  A little optimization. Never generate an extra formal for the
--- 8603,8609 ----
           Scope        : Entity_Id;
           Suffix       : String) return Entity_Id
        is
!          EF : Entity_Id;
  
        begin
           --  A little optimization. Never generate an extra formal for the
*************** package body Sem_Ch6 is
*** 8897,8902 ****
--- 8614,8623 ----
              return Empty;
           end if;
  
+          EF := Make_Defining_Identifier (Sloc (Assoc_Entity),
+                  Chars => New_External_Name (Chars (Assoc_Entity),
+                                              Suffix => Suffix));
+ 
           Mutate_Ekind        (EF, E_In_Parameter);
           Set_Actual_Subtype  (EF, Typ);
           Set_Etype           (EF, Typ);
*************** package body Sem_Ch6 is
*** 8918,8964 ****
           return EF;
        end Add_Extra_Formal;
  
        --  Local variables
  
!       Formal_Type : Entity_Id;
!       P_Formal    : Entity_Id := Empty;
  
     --  Start of processing for Create_Extra_Formals
  
     begin
        --  We never generate extra formals if expansion is not active because we
        --  don't need them unless we are generating code.
  
        if not Expander_Active then
           return;
-       end if;
  
!       --  No need to generate extra formals in interface thunks whose target
!       --  primitive has no extra formals.
  
!       if Is_Thunk (E) and then No (Extra_Formals (Thunk_Entity (E))) then
           return;
-       end if;
  
!       --  If this is a derived subprogram then the subtypes of the parent
!       --  subprogram's formal parameters will be used to determine the need
!       --  for extra formals.
  
!       if Is_Overloadable (E) and then Present (Alias (E)) then
!          P_Formal := First_Formal (Alias (E));
        end if;
  
        Formal := First_Formal (E);
        while Present (Formal) loop
           Last_Extra := Formal;
           Next_Formal (Formal);
        end loop;
  
!       --  If Extra_Formals were already created, don't do it again. This
!       --  situation may arise for subprogram types created as part of
!       --  dispatching calls (see Expand_Dispatching_Call).
  
!       if Present (Last_Extra) and then Present (Extra_Formal (Last_Extra)) then
           return;
        end if;
  
--- 8639,8904 ----
           return EF;
        end Add_Extra_Formal;
  
+       -----------------------
+       -- Has_Extra_Formals --
+       -----------------------
+ 
+       function Has_Extra_Formals (E : Entity_Id) return Boolean is
+       begin
+          return Present (Extra_Formals (E))
+            or else
+              (Ekind (E) = E_Function
+                 and then Present (Extra_Accessibility_Of_Result (E)));
+       end Has_Extra_Formals;
+ 
+       -------------------------------------
+       -- Needs_Accessibility_Check_Extra --
+       -------------------------------------
+ 
+       function Needs_Accessibility_Check_Extra
+         (E      : Entity_Id;
+          Formal : Node_Id) return Boolean is
+ 
+       begin
+          --  For dispatching operations this extra formal is not suppressed
+          --  since all the derivations must have matching formals.
+ 
+          --  For nondispatching operations it is suppressed if we specifically
+          --  suppress accessibility checks at the package level for either the
+          --  subprogram, or the package in which it resides. However, we do
+          --  not suppress it simply if the scope has accessibility checks
+          --  suppressed, since this could cause trouble when clients are
+          --  compiled with a different suppression setting. The explicit checks
+          --  at the package level are safe from this point of view.
+ 
+          if not Is_Dispatching_Operation (E)
+            and then
+              (Explicit_Suppress (E, Accessibility_Check)
+                 or else Explicit_Suppress (Scope (E), Accessibility_Check))
+          then
+             return False;
+          end if;
+ 
+          --  Base_Type is applied to handle cases where there is a null
+          --  exclusion the formal may have an access subtype.
+ 
+          return
+            Ekind (Base_Type (Etype (Formal))) = E_Anonymous_Access_Type
+              or else
+                (Is_Controlling_Formal (Formal)
+                   and then Is_Access_Type (Base_Type (Etype (Formal))));
+       end Needs_Accessibility_Check_Extra;
+ 
+       -----------------------
+       -- Parent_Subprogram --
+       -----------------------
+ 
+       function Parent_Subprogram (Subp_Id : Entity_Id) return Entity_Id is
+          pragma Assert (not Is_Thunk (Subp_Id));
+          Ovr_E     : Entity_Id := Overridden_Operation (Subp_Id);
+          Ovr_Alias : Entity_Id;
+ 
+       begin
+          if Present (Ovr_E) then
+             Ovr_Alias := Ultimate_Alias (Ovr_E);
+ 
+             --  There is no real overridden subprogram if there is a mutual
+             --  reference between the E and its overridden operation. This
+             --  weird scenery occurs in the following cases:
+ 
+             --  1) Controlling function wrappers internally built by
+             --     Make_Controlling_Function_Wrappers.
+ 
+             --  2) Hidden overridden primitives of type extensions or private
+             --     extensions (cf. Find_Hidden_Overridden_Primitive). These
+             --     hidden primitives have suffix 'P'.
+ 
+             --  3) Overriding primitives of stub types (see the subprogram
+             --     Add_RACW_Primitive_Declarations_And_Bodies).
+ 
+             if Ovr_Alias = Subp_Id then
+                pragma Assert
+                  ((Is_Wrapper (Subp_Id)
+                      and then Has_Controlling_Result (Subp_Id))
+                    or else Has_Suffix (Ovr_E, 'P')
+                    or else Is_RACW_Stub_Type
+                              (Find_Dispatching_Type (Subp_Id)));
+ 
+                if Present (Overridden_Operation (Ovr_E)) then
+                   Ovr_E := Overridden_Operation (Ovr_E);
+ 
+                --  Ovr_E is an internal entity built by Derive_Subprogram and
+                --  we have no direct way to climb to the corresponding parent
+                --  subprogram but this internal entity has the extra formals
+                --  (if any) required for the purpose of checking the extra
+                --  formals of Subp_Id.
+ 
+                else
+                   pragma Assert (not Comes_From_Source (Ovr_E));
+                end if;
+ 
+             --  Use as our reference entity the ultimate renaming of the
+             --  overridden subprogram.
+ 
+             elsif Present (Alias (Ovr_E)) then
+                pragma Assert (No (Overridden_Operation (Ovr_Alias))
+                  or else Overridden_Operation (Ovr_Alias) /= Ovr_E);
+ 
+                Ovr_E := Ovr_Alias;
+             end if;
+          end if;
+ 
+          if Present (Ovr_E) and then Has_Reliable_Extra_Formals (Ovr_E) then
+             return Ovr_E;
+          else
+             return Empty;
+          end if;
+       end Parent_Subprogram;
+ 
        --  Local variables
  
!       Formal_Type      : Entity_Id;
!       May_Have_Alias   : Boolean;
!       Alias_Formal     : Entity_Id := Empty;
!       Alias_Subp       : Entity_Id := Empty;
!       Parent_Formal    : Entity_Id := Empty;
!       Parent_Subp      : Entity_Id := Empty;
!       Ref_E            : Entity_Id;
  
     --  Start of processing for Create_Extra_Formals
  
     begin
+       pragma Assert (Is_Subprogram_Or_Entry (E)
+         or else Ekind (E) in E_Subprogram_Type);
+ 
        --  We never generate extra formals if expansion is not active because we
        --  don't need them unless we are generating code.
  
        if not Expander_Active then
           return;
  
!       --  Enumeration literals have no extra formal; this case occurs when
!       --  a function renames it.
  
!       elsif Ekind (E) = E_Function
!         and then Ekind (Ultimate_Alias (E)) = E_Enumeration_Literal
!       then
           return;
  
!       --  Initialization procedures don't have extra formals
  
!       elsif Is_Init_Proc (E) then
!          return;
! 
!       --  No need to generate extra formals in thunks whose target has no extra
!       --  formals, but we can have two of them chained (interface and stack).
! 
!       elsif Is_Thunk (E) and then No (Extra_Formals (Thunk_Target (E))) then
!          return;
! 
!       --  If Extra_Formals were already created, don't do it again. This
!       --  situation may arise for subprogram types created as part of
!       --  dispatching calls (see Expand_Dispatching_Call).
! 
!       elsif Has_Extra_Formals (E) then
!          return;
! 
!       --  Extra formals of renamings of generic actual subprograms and
!       --  renamings of instances of generic subprograms are shared. The
!       --  check performed on the last formal is required to ensure that
!       --  this is the renaming built by Analyze_Instance_And_Renamings
!       --  (which shares all the formals); otherwise this would be wrong.
! 
!       elsif Ekind (E) in E_Function | E_Procedure
!         and then Is_Generic_Instance (E)
!         and then Present (Alias (E))
!         and then Last_Formal (Ultimate_Alias (E)) = Last_Formal (E)
!       then
!          pragma Assert (Is_Generic_Instance (E)
!            = Is_Generic_Instance (Ultimate_Alias (E)));
! 
!          Create_Extra_Formals (Ultimate_Alias (E));
! 
!          --  Share the extra formals
! 
!          Set_Extra_Formals (E, Extra_Formals (Ultimate_Alias (E)));
! 
!          if Ekind (E) = E_Function then
!             Set_Extra_Accessibility_Of_Result (E,
!               Extra_Accessibility_Of_Result (Ultimate_Alias (E)));
!          end if;
! 
!          pragma Assert (Extra_Formals_OK (E));
!          return;
        end if;
  
+       --  Locate the last formal; required by Add_Extra_Formal.
+ 
        Formal := First_Formal (E);
        while Present (Formal) loop
           Last_Extra := Formal;
           Next_Formal (Formal);
        end loop;
  
!       --  We rely on three entities to ensure consistency of extra formals of
!       --  entity E:
!       --
!       --    1. A reference entity (Ref_E). For thunks it is their target
!       --       primitive since this ensures that they have exactly the
!       --       same extra formals; otherwise it is the identity.
!       --
!       --    2. The parent subprogram; only for derived types and references
!       --       either the overridden subprogram or the internal entity built
!       --       by Derive_Subprogram that has the extra formals of the parent
!       --       subprogram; otherwise it is Empty. This entity ensures matching
!       --       extra formals in derived types.
!       --
!       --    3. For renamings, their ultimate alias; this ensures taking the
!       --       same decision in all the renamings (independently of the Ada
!       --       mode on which they are compiled). For example:
!       --
!       --          pragma Ada_2012;
!       --          function Id_A (I : access Integer) return access Integer;
!       --
!       --          pragma Ada_2005;
!       --          function Id_B (I : access Integer) return access Integer
!       --             renames Id_A;
  
!       if Is_Thunk (E) then
!          Ref_E := Thunk_Target (E);
!       else
!          Ref_E := E;
!       end if;
! 
!       if Is_Subprogram (Ref_E) then
!          Parent_Subp := Parent_Subprogram (Ref_E);
!       end if;
! 
!       May_Have_Alias :=
!         (Is_Subprogram (Ref_E) or else Ekind (Ref_E) = E_Subprogram_Type);
! 
!       --  If the parent subprogram is available then its ultimate alias of
!       --  Ref_E is not needed since it will not be used to check its extra
!       --  formals.
! 
!       if No (Parent_Subp)
!         and then May_Have_Alias
!         and then Present (Alias (Ref_E))
!         and then Has_Reliable_Extra_Formals (Ultimate_Alias (Ref_E))
!       then
!          Alias_Subp := Ultimate_Alias (Ref_E);
!       end if;
! 
!       --  Cannot add extra formals to subprograms and access types that have
!       --  foreign convention nor to subprograms overriding primitives that
!       --  have foreign convention since the foreign language does not know
!       --  how to handle these extra formals; same for renamings of entities
!       --  with foreign convention.
! 
!       if Has_Foreign_Convention (Ref_E)
!         or else (Present (Alias_Subp)
!                    and then Has_Foreign_Convention (Alias_Subp))
!       then
           return;
        end if;
  
*************** package body Sem_Ch6 is
*** 8973,8992 ****
           goto Test_For_Func_Result_Extras;
        end if;
  
        Formal := First_Formal (E);
        while Present (Formal) loop
  
           --  Create extra formal for supporting the attribute 'Constrained.
           --  The case of a private type view without discriminants also
           --  requires the extra formal if the underlying type has defaulted
           --  discriminants.
  
           if Ekind (Formal) /= E_In_Parameter then
-             if Present (P_Formal) then
-                Formal_Type := Etype (P_Formal);
-             else
-                Formal_Type := Etype (Formal);
-             end if;
  
              --  Do not produce extra formals for Unchecked_Union parameters.
              --  Jump directly to the end of the loop.
--- 8913,8986 ----
           goto Test_For_Func_Result_Extras;
        end if;
  
+       --  Process the formals relying on the formals of our reference entities:
+       --  Parent_Formal, Alias_Formal and Formal. Notice that we don't use the
+       --  formal of Ref_E; we must use the formal of E which is the entity to
+       --  which we are adding the extra formals.
+ 
+       --  If this is a derived subprogram then the subtypes of the parent
+       --  subprogram's formal parameters will be used to determine the need
+       --  for extra formals.
+ 
+       if Present (Parent_Subp) then
+          Parent_Formal := First_Formal (Parent_Subp);
+ 
+          --  For concurrent types, the controlling argument of a dispatching
+          --  primitive implementing an interface primitive is implicit. For
+          --  example:
+          --
+          --     type Iface is protected interface;
+          --     function Prim
+          --       (Obj   : Iface;
+          --        Value : Integer) return Natural is abstract;
+          --
+          --     protected type PO is new Iface with
+          --        function Prim (Value : Integer) return Natural;
+          --     end PO;
+ 
+          if Convention (Ref_E) = Convention_Protected
+            and then Is_Abstract_Subprogram (Parent_Subp)
+            and then Is_Interface (Find_Dispatching_Type (Parent_Subp))
+          then
+             Parent_Formal := Next_Formal (Parent_Formal);
+ 
+             --  This is the nondispatching subprogram of a concurrent type
+             --  that overrides the interface primitive; the expander will
+             --  create the dispatching primitive (without Convention_Protected)
+             --  with all the matching formals (see exp_ch9.Build_Wrapper_Specs)
+ 
+             pragma Assert (not Is_Dispatching_Operation (Ref_E));
+          end if;
+ 
+       --  Ensure that the ultimate alias has all its extra formals
+ 
+       elsif Present (Alias_Subp) then
+          Create_Extra_Formals (Alias_Subp);
+          Alias_Formal := First_Formal (Alias_Subp);
+       end if;
+ 
        Formal := First_Formal (E);
        while Present (Formal) loop
  
+          --  Here we establish our priority for deciding on the extra
+          --  formals: 1) Parent primitive 2) Aliased primitive 3) Identity
+ 
+          if Present (Parent_Formal) then
+             Formal_Type := Etype (Parent_Formal);
+ 
+          elsif Present (Alias_Formal) then
+             Formal_Type := Etype (Alias_Formal);
+ 
+          else
+             Formal_Type := Etype (Formal);
+          end if;
+ 
           --  Create extra formal for supporting the attribute 'Constrained.
           --  The case of a private type view without discriminants also
           --  requires the extra formal if the underlying type has defaulted
           --  discriminants.
  
           if Ekind (Formal) /= E_In_Parameter then
  
              --  Do not produce extra formals for Unchecked_Union parameters.
              --  Jump directly to the end of the loop.
*************** package body Sem_Ch6 is
*** 9031,9066 ****
              end if;
           end if;
  
!          --  Create extra formal for supporting accessibility checking. This
!          --  is done for both anonymous access formals and formals of named
!          --  access types that are marked as controlling formals. The latter
!          --  case can occur when Expand_Dispatching_Call creates a subprogram
!          --  type and substitutes the types of access-to-class-wide actuals
!          --  for the anonymous access-to-specific-type of controlling formals.
!          --  Base_Type is applied because in cases where there is a null
!          --  exclusion the formal may have an access subtype.
  
!          --  This is suppressed if we specifically suppress accessibility
!          --  checks at the package level for either the subprogram, or the
!          --  package in which it resides. However, we do not suppress it
!          --  simply if the scope has accessibility checks suppressed, since
!          --  this could cause trouble when clients are compiled with a
!          --  different suppression setting. The explicit checks at the
!          --  package level are safe from this point of view.
  
-          if (Ekind (Base_Type (Etype (Formal))) = E_Anonymous_Access_Type
-               or else (Is_Controlling_Formal (Formal)
-                         and then Is_Access_Type (Base_Type (Etype (Formal)))))
-            and then not
-              (Explicit_Suppress (E, Accessibility_Check)
-                or else
-               Explicit_Suppress (Scope (E), Accessibility_Check))
-            and then
-              (No (P_Formal)
-                or else Present (Extra_Accessibility (P_Formal)))
-          then
              Set_Extra_Accessibility
                (Formal, Add_Extra_Formal (Formal, Standard_Natural, E, "L"));
           end if;
  
           --  This label is required when skipping extra formal generation for
--- 9025,9046 ----
              end if;
           end if;
  
!          --  Extra formal for supporting accessibility checking
  
!          if Needs_Accessibility_Check_Extra (Ref_E, Formal) then
!             pragma Assert (No (Parent_Formal)
!               or else Present (Extra_Accessibility (Parent_Formal)));
!             pragma Assert (No (Alias_Formal)
!               or else Present (Extra_Accessibility (Alias_Formal)));
  
              Set_Extra_Accessibility
                (Formal, Add_Extra_Formal (Formal, Standard_Natural, E, "L"));
+ 
+          else
+             pragma Assert (No (Parent_Formal)
+               or else No (Extra_Accessibility (Parent_Formal)));
+             pragma Assert (No (Alias_Formal)
+               or else No (Extra_Accessibility (Alias_Formal)));
           end if;
  
           --  This label is required when skipping extra formal generation for
*************** package body Sem_Ch6 is
*** 9068,9075 ****
  
           <<Skip_Extra_Formal_Generation>>
  
!          if Present (P_Formal) then
!             Next_Formal (P_Formal);
           end if;
  
           Next_Formal (Formal);
--- 9048,9059 ----
  
           <<Skip_Extra_Formal_Generation>>
  
!          if Present (Parent_Formal) then
!             Next_Formal (Parent_Formal);
!          end if;
! 
!          if Present (Alias_Formal) then
!             Next_Formal (Alias_Formal);
           end if;
  
           Next_Formal (Formal);
*************** package body Sem_Ch6 is
*** 9077,9096 ****
  
        <<Test_For_Func_Result_Extras>>
  
!       --  Ada 2012 (AI05-234): "the accessibility level of the result of a
!       --  function call is ... determined by the point of call ...".
  
!       if Needs_Result_Accessibility_Level (E) then
!          Set_Extra_Accessibility_Of_Result
!            (E, Add_Extra_Formal (E, Standard_Natural, E, "L"));
!       end if;
  
        --  Ada 2005 (AI-318-02): In the case of build-in-place functions, add
        --  appropriate extra formals. See type Exp_Ch6.BIP_Formal_Kind.
  
!       if Is_Build_In_Place_Function (E) then
           declare
!             Result_Subt : constant Entity_Id := Etype (E);
              Formal_Typ  : Entity_Id;
              Subp_Decl   : Node_Id;
              Discard     : Entity_Id;
--- 9061,9107 ----
  
        <<Test_For_Func_Result_Extras>>
  
!       --  Assume the worst case (Ada 2022) to evaluate this extra formal;
!       --  required to ensure matching of extra formals between subprograms
!       --  and access-to-subprogram types in projects with mixed Ada dialects.
  
!       declare
!          Save_Ada_Version : constant Ada_Version_Type := Ada_Version;
! 
!       begin
!          Ada_Version := Ada_2022;
! 
!          if Needs_Result_Accessibility_Level (Ref_E) then
!             pragma Assert (No (Parent_Subp)
!               or else Needs_Result_Accessibility_Level (Parent_Subp));
!             pragma Assert (No (Alias_Subp)
!               or else Needs_Result_Accessibility_Level (Alias_Subp));
! 
!             Set_Extra_Accessibility_Of_Result (E,
!               Add_Extra_Formal (E, Standard_Natural, E, "L"));
! 
!          else
!             pragma Assert (No (Parent_Subp)
!               or else not Needs_Result_Accessibility_Level (Parent_Subp));
!             pragma Assert (No (Alias_Subp)
!               or else not Needs_Result_Accessibility_Level (Alias_Subp));
!          end if;
! 
!          Ada_Version := Save_Ada_Version;
!       end;
  
        --  Ada 2005 (AI-318-02): In the case of build-in-place functions, add
        --  appropriate extra formals. See type Exp_Ch6.BIP_Formal_Kind.
  
!       if (Present (Parent_Subp) and then Has_BIP_Formals (Parent_Subp))
!             or else
!          (Present (Alias_Subp) and then Has_BIP_Formals (Alias_Subp))
!             or else
!          (Is_Build_In_Place_Function (Ref_E)
!             and then Has_Reliable_Extra_Formals (Ref_E))
!       then
           declare
!             Result_Subt : constant Entity_Id := Etype (Ref_E);
              Formal_Typ  : Entity_Id;
              Subp_Decl   : Node_Id;
              Discard     : Entity_Id;
*************** package body Sem_Ch6 is
*** 9108,9114 ****
              --  dispatching context and such calls must be handled like calls
              --  to a class-wide function.
  
!             if Needs_BIP_Alloc_Form (E) then
                 Discard :=
                   Add_Extra_Formal
                     (E, Standard_Natural,
--- 9119,9132 ----
              --  dispatching context and such calls must be handled like calls
              --  to a class-wide function.
  
!             if Needs_BIP_Alloc_Form (Ref_E) then
!                pragma Assert (No (Parent_Subp)
!                  or else Has_BIP_Extra_Formal (Parent_Subp, BIP_Alloc_Form,
!                            Must_Be_Frozen => False));
!                pragma Assert (No (Alias_Subp)
!                  or else Has_BIP_Extra_Formal (Alias_Subp, BIP_Alloc_Form,
!                            Must_Be_Frozen => False));
! 
                 Discard :=
                   Add_Extra_Formal
                     (E, Standard_Natural,
*************** package body Sem_Ch6 is
*** 9124,9146 ****
                        (E, RTE (RE_Root_Storage_Pool_Ptr),
                         E, BIP_Formal_Suffix (BIP_Storage_Pool));
                 end if;
              end if;
  
              --  In the case of functions whose result type needs finalization,
              --  add an extra formal which represents the finalization master.
  
!             if Needs_BIP_Finalization_Master (E) then
                 Discard :=
                   Add_Extra_Formal
                     (E, RTE (RE_Finalization_Master_Ptr),
                      E, BIP_Formal_Suffix (BIP_Finalization_Master));
              end if;
  
              --  When the result type contains tasks, add two extra formals: the
              --  master of the tasks to be created, and the caller's activation
              --  chain.
  
!             if Needs_BIP_Task_Actuals (E) then
                 Discard :=
                   Add_Extra_Formal
                     (E, Standard_Integer,
--- 9142,9207 ----
                        (E, RTE (RE_Root_Storage_Pool_Ptr),
                         E, BIP_Formal_Suffix (BIP_Storage_Pool));
                 end if;
+ 
+             else
+                pragma Assert (No (Parent_Subp)
+                  or else not
+                    Has_BIP_Extra_Formal (Parent_Subp, BIP_Alloc_Form,
+                      Must_Be_Frozen => False));
+                pragma Assert (No (Alias_Subp)
+                  or else not
+                    Has_BIP_Extra_Formal (Alias_Subp, BIP_Alloc_Form,
+                      Must_Be_Frozen => False));
              end if;
  
              --  In the case of functions whose result type needs finalization,
              --  add an extra formal which represents the finalization master.
  
!             if Needs_BIP_Finalization_Master (Ref_E) then
!                pragma Assert (No (Parent_Subp)
!                  or else Has_BIP_Extra_Formal (Parent_Subp,
!                            Kind           => BIP_Finalization_Master,
!                            Must_Be_Frozen => False));
!                pragma Assert (No (Alias_Subp)
!                  or else Has_BIP_Extra_Formal (Alias_Subp,
!                            Kind           => BIP_Finalization_Master,
!                            Must_Be_Frozen => False));
! 
                 Discard :=
                   Add_Extra_Formal
                     (E, RTE (RE_Finalization_Master_Ptr),
                      E, BIP_Formal_Suffix (BIP_Finalization_Master));
+ 
+             else
+                pragma Assert (No (Parent_Subp)
+                  or else not
+                    Has_BIP_Extra_Formal (Parent_Subp,
+                      Kind           => BIP_Finalization_Master,
+                      Must_Be_Frozen => False));
+                pragma Assert (No (Alias_Subp)
+                  or else not
+                    Has_BIP_Extra_Formal (Alias_Subp,
+                      Kind           => BIP_Finalization_Master,
+                      Must_Be_Frozen => False));
              end if;
  
              --  When the result type contains tasks, add two extra formals: the
              --  master of the tasks to be created, and the caller's activation
              --  chain.
  
!             if Needs_BIP_Task_Actuals (Ref_E) then
!                pragma Assert (No (Parent_Subp)
!                  or else Has_BIP_Extra_Formal (Parent_Subp, BIP_Task_Master,
!                            Must_Be_Frozen => False));
!                pragma Assert (No (Alias_Subp)
!                  or else Has_BIP_Extra_Formal (Alias_Subp, BIP_Task_Master,
!                            Must_Be_Frozen => False)
!                  or else
!                    (Is_Abstract_Subprogram (Ref_E)
!                       and then Is_Predefined_Dispatching_Operation (Ref_E)
!                       and then Is_Interface
!                                  (Find_Dispatching_Type (Alias_Subp))));
! 
                 Discard :=
                   Add_Extra_Formal
                     (E, Standard_Integer,
*************** package body Sem_Ch6 is
*** 9152,9157 ****
--- 9213,9228 ----
                   Add_Extra_Formal
                     (E, RTE (RE_Activation_Chain_Access),
                      E, BIP_Formal_Suffix (BIP_Activation_Chain));
+ 
+             else
+                pragma Assert (No (Parent_Subp)
+                  or else not
+                    Has_BIP_Extra_Formal (Parent_Subp, BIP_Task_Master,
+                      Must_Be_Frozen => False));
+                pragma Assert (No (Alias_Subp)
+                  or else not
+                    Has_BIP_Extra_Formal (Alias_Subp, BIP_Task_Master,
+                      Must_Be_Frozen => False));
              end if;
  
              --  All build-in-place functions get an extra formal that will be
*************** package body Sem_Ch6 is
*** 9186,9192 ****
              --  Force the definition of the Itype in case of internal function
              --  calls within the same or nested scope.
  
!             if Is_Subprogram_Or_Generic_Subprogram (E) then
                 Subp_Decl := Parent (E);
  
                 --  The insertion point for an Itype reference should be after
--- 9257,9265 ----
              --  Force the definition of the Itype in case of internal function
              --  calls within the same or nested scope.
  
!             if Is_Subprogram_Or_Generic_Subprogram (E)
!               and then not Is_Compilation_Unit (E)
!             then
                 Subp_Decl := Parent (E);
  
                 --  The insertion point for an Itype reference should be after
*************** package body Sem_Ch6 is
*** 9215,9220 ****
--- 9288,9301 ----
        if Is_Generic_Instance (E) and then Present (Alias (E)) then
           Set_Extra_Formals (Alias (E), Extra_Formals (E));
        end if;
+ 
+       pragma Assert (No (Alias_Subp)
+         or else Extra_Formals_Match_OK (E, Alias_Subp));
+ 
+       pragma Assert (No (Parent_Subp)
+         or else Extra_Formals_Match_OK (E, Parent_Subp));
+ 
+       pragma Assert (Extra_Formals_OK (E));
     end Create_Extra_Formals;
  
     -----------------------------
*************** package body Sem_Ch6 is
*** 9445,9616 ****
        end if;
     end Enter_Overloaded_Entity;
  
!    -----------------------------
!    -- Check_Untagged_Equality --
!    -----------------------------
! 
!    procedure Check_Untagged_Equality (Eq_Op : Entity_Id) is
!       Typ      : constant Entity_Id := Etype (First_Formal (Eq_Op));
!       Decl     : constant Node_Id   := Unit_Declaration_Node (Eq_Op);
!       Obj_Decl : Node_Id;
  
     begin
!       --  This check applies only if we have a subprogram declaration with an
!       --  untagged record type that is conformant to the predefined op.
! 
!       if Nkind (Decl) /= N_Subprogram_Declaration
!         or else not Is_Record_Type (Typ)
!         or else Is_Tagged_Type (Typ)
!         or else Etype (Next_Formal (First_Formal (Eq_Op))) /= Typ
!       then
!          return;
!       end if;
! 
!       --  In Ada 2012 case, we will output errors or warnings depending on
!       --  the setting of debug flag -gnatd.E.
  
!       if Ada_Version >= Ada_2012 then
!          Error_Msg_Warn := Debug_Flag_Dot_EE;
  
!       --  In earlier versions of Ada, nothing to do unless we are warning on
!       --  Ada 2012 incompatibilities (Warn_On_Ada_2012_Incompatibility set).
  
!       else
!          if not Warn_On_Ada_2012_Compatibility then
!             return;
!          end if;
        end if;
  
!       --  Cases where the type has already been frozen
! 
!       if Is_Frozen (Typ) then
! 
!          --  The check applies to a primitive operation, so check that type
!          --  and equality operation are in the same scope.
! 
!          if Scope (Typ) /= Current_Scope then
!             return;
! 
!          --  If the type is a generic actual (sub)type, the operation is not
!          --  primitive either because the base type is declared elsewhere.
  
!          elsif Is_Generic_Actual_Type (Typ) then
!             return;
  
!          --  Here we have a definite error of declaration after freezing
  
!          else
!             if Ada_Version >= Ada_2012 then
!                Error_Msg_NE
!                  ("equality operator must be declared before type & is "
!                   & "frozen (RM 4.5.2 (9.8)) (Ada 2012)<<", Eq_Op, Typ);
  
!                --  In Ada 2012 mode with error turned to warning, output one
!                --  more warning to warn that the equality operation may not
!                --  compose. This is the consequence of ignoring the error.
  
!                if Error_Msg_Warn then
!                   Error_Msg_N ("\equality operation may not compose??", Eq_Op);
                 end if;
  
!             else
!                Error_Msg_NE
!                  ("equality operator must be declared before type& is "
!                   & "frozen (RM 4.5.2 (9.8)) (Ada 2012)?y?", Eq_Op, Typ);
              end if;
  
!             --  If we are in the package body, we could just move the
!             --  declaration to the package spec, so add a message saying that.
  
!             if In_Package_Body (Scope (Typ)) then
!                if Ada_Version >= Ada_2012 then
!                   Error_Msg_N
!                     ("\move declaration to package spec<<", Eq_Op);
!                else
!                   Error_Msg_N
!                     ("\move declaration to package spec (Ada 2012)?y?", Eq_Op);
!                end if;
  
!             --  Otherwise try to find the freezing point for better message.
  
!             else
!                Obj_Decl := Next (Parent (Typ));
!                while Present (Obj_Decl) and then Obj_Decl /= Decl loop
!                   if Nkind (Obj_Decl) = N_Object_Declaration
!                     and then Etype (Defining_Identifier (Obj_Decl)) = Typ
!                   then
!                      --  Freezing point, output warnings
  
!                      if Ada_Version >= Ada_2012 then
!                         Error_Msg_NE
!                           ("type& is frozen by declaration??", Obj_Decl, Typ);
!                         Error_Msg_N
!                           ("\an equality operator cannot be declared after "
!                            & "this point??",
!                            Obj_Decl);
!                      else
!                         Error_Msg_NE
!                           ("type& is frozen by declaration (Ada 2012)?y?",
!                            Obj_Decl, Typ);
!                         Error_Msg_N
!                           ("\an equality operator cannot be declared after "
!                            & "this point (Ada 2012)?y?",
!                            Obj_Decl);
!                      end if;
  
!                      exit;
  
!                   --  If we reach generated code for subprogram declaration
!                   --  or body, it is the body that froze the type and the
!                   --  declaration is legal.
  
!                   elsif Sloc (Obj_Decl) = Sloc (Decl) then
!                      return;
!                   end if;
  
!                   Next (Obj_Decl);
!                end loop;
              end if;
           end if;
  
!       --  Here if type is not frozen yet. It is illegal to have a primitive
!       --  equality declared in the private part if the type is visible
!       --  (RM 4.5.2(9.8)).
  
!       elsif not In_Same_List (Parent (Typ), Decl)
!         and then not Is_Limited_Type (Typ)
        then
!          if Ada_Version >= Ada_2012 then
!             Error_Msg_N
!               ("equality operator appears too late<<", Eq_Op);
!          else
!             Error_Msg_N
!               ("equality operator appears too late (Ada 2012)?y?", Eq_Op);
!          end if;
  
!       --  Finally check for AI12-0352: declaration of a user-defined primitive
!       --  equality operation for a record type T is illegal if it occurs after
!       --  a type has been derived from T.
  
!       else
!          Obj_Decl := Next (Parent (Typ));
  
!          while Present (Obj_Decl) and then Obj_Decl /= Decl loop
!             if Nkind (Obj_Decl) = N_Full_Type_Declaration
!               and then Etype (Defining_Identifier (Obj_Decl)) = Typ
!             then
!                Error_Msg_N
!                  ("equality operator cannot appear after derivation", Eq_Op);
!                Error_Msg_NE
!                  ("an equality operator for& cannot be declared after "
!                   & "this point??",
!                   Obj_Decl, Typ);
!             end if;
  
!             Next (Obj_Decl);
!          end loop;
        end if;
!    end Check_Untagged_Equality;
  
     -----------------------------
     -- Find_Corresponding_Spec --
--- 9526,9687 ----
        end if;
     end Enter_Overloaded_Entity;
  
!    ----------------------------
!    -- Extra_Formals_Match_OK --
!    ----------------------------
  
+    function Extra_Formals_Match_OK
+      (E     : Entity_Id;
+       Ref_E : Entity_Id) return Boolean is
     begin
!       pragma Assert (Is_Subprogram (E));
  
!       --  Cases where no check can be performed:
!       --    1) When expansion is not active (since we never generate extra
!       --       formals if expansion is not active because we don't need them
!       --       unless we are generating code).
!       --    2) On abstract predefined dispatching operations of Root_Controlled
!       --       and predefined stream operations not emitted by the frontend.
!       --    3) On renamings of abstract predefined dispatching operations of
!       --       interface types (since limitedness is not inherited in such
!       --       case (AI-419)).
!       --    4) The controlling formal of the nondispatching subprogram of
!       --       a concurrent type that overrides an interface primitive is
!       --       implicit and hence we cannot check here if all its extra
!       --       formals match; the expander will create the dispatching
!       --       primitive (without Convention_Protected) with the matching
!       --       formals (see exp_ch9.Build_Wrapper_Specs) which will be
!       --       checked later.
  
!       if Debug_Flag_Underscore_XX
!         or else not Expander_Active
!         or else
!           (Is_Predefined_Dispatching_Operation (E)
!              and then (not Has_Reliable_Extra_Formals (E)
!                          or else not Has_Reliable_Extra_Formals (Ref_E)))
!         or else
!           (Is_Predefined_Dispatching_Operation (E)
!              and then Is_Abstract_Subprogram (E)
!              and then Is_Interface (Find_Dispatching_Type (Ref_E)))
!       then
!          return True;
  
!       elsif Convention (E) = Convention_Protected
!         and then not Is_Dispatching_Operation (E)
!         and then Is_Abstract_Subprogram (Ref_E)
!         and then Is_Interface (Find_Dispatching_Type (Ref_E))
!       then
!          return True;
        end if;
  
!       --  Perform the checks
  
!       if No (Extra_Formals (E)) then
!          return No (Extra_Formals (Ref_E));
!       end if;
  
!       if Ekind (E) in E_Function | E_Subprogram_Type
!         and then Present (Extra_Accessibility_Of_Result (E))
!                    /= Present (Extra_Accessibility_Of_Result (Ref_E))
!       then
!          return False;
!       end if;
  
!       declare
!          Formal_1 : Entity_Id := Extra_Formals (E);
!          Formal_2 : Entity_Id := Extra_Formals (Ref_E);
  
!       begin
!          while Present (Formal_1) and then Present (Formal_2) loop
!             if Has_Suffix (Formal_1, 'L') then
!                if not Has_Suffix (Formal_2, 'L') then
!                   return False;
!                end if;
  
!             elsif Has_Suffix (Formal_1, 'O') then
!                if not Has_Suffix (Formal_2, 'O') then
!                   return False;
                 end if;
  
!             elsif BIP_Suffix_Kind (Formal_1) /= BIP_Suffix_Kind (Formal_2) then
!                return False;
              end if;
  
!             Formal_1 := Next_Formal_With_Extras (Formal_1);
!             Formal_2 := Next_Formal_With_Extras (Formal_2);
!          end loop;
  
!          return No (Formal_1) and then No (Formal_2);
!       end;
!    end Extra_Formals_Match_OK;
  
!    ----------------------
!    -- Extra_Formals_OK --
!    ----------------------
  
!    function Extra_Formals_OK (E : Entity_Id) return Boolean is
!       Last_Formal       : Entity_Id := Empty;
!       Formal            : Entity_Id;
!       Has_Extra_Formals : Boolean := False;
  
!    begin
!       --  No check required if explicitly disabled
  
!       if Debug_Flag_Underscore_XX then
!          return True;
  
!       --  No check required if expansion is disabled because extra
!       --  formals are only generated when we are generating code.
!       --  See Create_Extra_Formals.
  
!       elsif not Expander_Active then
!          return True;
!       end if;
  
!       --  Check attribute Extra_Formal: If available, it must be set only
!       --  on the last formal of E.
! 
!       Formal := First_Formal (E);
!       while Present (Formal) loop
!          if Present (Extra_Formal (Formal)) then
!             if Has_Extra_Formals then
!                return False;
              end if;
+ 
+             Has_Extra_Formals := True;
           end if;
  
!          Last_Formal := Formal;
!          Next_Formal (Formal);
!       end loop;
  
!       --  Check attribute Extra_Accessibility_Of_Result
! 
!       if Ekind (E) in E_Function | E_Subprogram_Type
!         and then Needs_Result_Accessibility_Level (E)
!         and then No (Extra_Accessibility_Of_Result (E))
        then
!          return False;
!       end if;
  
!       --  Check attribute Extra_Formals: If E has extra formals, then this
!       --  attribute must point to the first extra formal of E.
  
!       if Has_Extra_Formals then
!          return Present (Extra_Formals (E))
!            and then Present (Extra_Formal (Last_Formal))
!            and then Extra_Formal (Last_Formal) = Extra_Formals (E);
  
!       --  When E has no formals, the first extra formal is available through
!       --  the Extra_Formals attribute.
  
!       elsif Present (Extra_Formals (E)) then
!          return No (First_Formal (E));
! 
!       else
!          return True;
        end if;
!    end Extra_Formals_OK;
  
     -----------------------------
     -- Find_Corresponding_Spec --
*************** package body Sem_Ch6 is
*** 9812,9818 ****
                   and then Ada_Version >= Ada_2005
                   and then not Comes_From_Source (E)
                   and then Has_Controlling_Result (E)
!                  and then Is_Null_Extension (Etype (E))
                   and then Comes_From_Source (Spec)
                 then
                    Set_Has_Completion (E, False);
--- 9883,9890 ----
                   and then Ada_Version >= Ada_2005
                   and then not Comes_From_Source (E)
                   and then Has_Controlling_Result (E)
!                  and then (not Is_Class_Wide_Type (Etype (E))
!                             and then Is_Null_Extension (Etype (E)))
                   and then Comes_From_Source (Spec)
                 then
                    Set_Has_Completion (E, False);
*************** package body Sem_Ch6 is
*** 9939,9955 ****
           N2 : Node_Id;
  
        begin
!          if L1 = No_List then
!             N1 := Empty;
!          else
!             N1 := First (L1);
!          end if;
! 
!          if L2 = No_List then
!             N2 := Empty;
!          else
!             N2 := First (L2);
!          end if;
  
           --  Compare two lists, skipping rewrite insertions (we want to compare
           --  the original trees, not the expanded versions).
--- 10011,10018 ----
           N2 : Node_Id;
  
        begin
!          N1 := First (L1);
!          N2 := First (L2);
  
           --  Compare two lists, skipping rewrite insertions (we want to compare
           --  the original trees, not the expanded versions).
*************** package body Sem_Ch6 is
*** 10068,10081 ****
                   and then Discriminal_Link (Entity (E1)) =
                            Discriminal_Link (Entity (E2)))
  
!              --  AI12-050: The loop variables of quantified expressions match
!              --  if they have the same identifier, even though they may have
!              --  different entities.
  
                or else
                  (Chars (Entity (E1)) = Chars (Entity (E2))
!                   and then Ekind (Entity (E1)) = E_Loop_Parameter
!                   and then Ekind (Entity (E2)) = E_Loop_Parameter)
  
                --  A call to an instantiation of Unchecked_Conversion is
                --  rewritten with the name of the generated function created for
--- 10131,10143 ----
                   and then Discriminal_Link (Entity (E1)) =
                            Discriminal_Link (Entity (E2)))
  
!              --  AI12-050: The entities of quantified expressions match if they
!              --  have the same identifier, even if they may be distinct nodes.
  
                or else
                  (Chars (Entity (E1)) = Chars (Entity (E2))
!                   and then Is_Entity_Of_Quantified_Expression (Entity (E1))
!                   and then Is_Entity_Of_Quantified_Expression (Entity (E2)))
  
                --  A call to an instantiation of Unchecked_Conversion is
                --  rewritten with the name of the generated function created for
*************** package body Sem_Ch6 is
*** 10504,10509 ****
--- 10566,10654 ----
        end if;
     end Fully_Conformant_Discrete_Subtypes;
  
+    ---------------------
+    -- Has_BIP_Formals --
+    ---------------------
+ 
+    function Has_BIP_Formals (E : Entity_Id) return Boolean is
+       Formal : Entity_Id := First_Formal_With_Extras (E);
+ 
+    begin
+       while Present (Formal) loop
+          if Is_Build_In_Place_Entity (Formal) then
+             return True;
+          end if;
+ 
+          Next_Formal_With_Extras (Formal);
+       end loop;
+ 
+       return False;
+    end Has_BIP_Formals;
+ 
+    --------------------------------
+    -- Has_Reliable_Extra_Formals --
+    --------------------------------
+ 
+    function Has_Reliable_Extra_Formals (E : Entity_Id) return Boolean is
+       Alias_E : Entity_Id;
+ 
+    begin
+       --  Extra formals are not added if expansion is not active (and hence if
+       --  available they are not reliable for extra formals check).
+ 
+       if not Expander_Active then
+          return False;
+ 
+       --  Currently the unique cases where extra formals are not reliable
+       --  are associated with predefined dispatching operations; otherwise
+       --  they are properly added when required.
+ 
+       elsif not Is_Predefined_Dispatching_Operation (E) then
+          return True;
+       end if;
+ 
+       Alias_E := Ultimate_Alias (E);
+ 
+       --  Abstract predefined primitives of Root_Controlled don't have
+       --  extra formals; this is required to build the runtime.
+ 
+       if Ekind (Alias_E) = E_Function
+         and then Is_Abstract_Subprogram (Alias_E)
+         and then Is_RTE (Underlying_Type (Etype (Alias_E)),
+                            RE_Root_Controlled)
+       then
+          return False;
+ 
+       --  Predefined stream dispatching operations that are not emitted by
+       --  the frontend; they have a renaming of the corresponding primitive
+       --  of their parent type and hence they don't have extra formals.
+ 
+       else
+          declare
+             Typ : constant Entity_Id :=
+                     Underlying_Type (Find_Dispatching_Type (Alias_E));
+ 
+          begin
+             if (Get_TSS_Name (E) = TSS_Stream_Input
+                   and then not Stream_Operation_OK (Typ, TSS_Stream_Input))
+               or else
+                 (Get_TSS_Name (E) = TSS_Stream_Output
+                    and then not Stream_Operation_OK (Typ, TSS_Stream_Output))
+               or else
+                 (Get_TSS_Name (E) = TSS_Stream_Read
+                    and then not Stream_Operation_OK (Typ, TSS_Stream_Read))
+               or else
+                 (Get_TSS_Name (E) = TSS_Stream_Write
+                    and then not Stream_Operation_OK (Typ, TSS_Stream_Write))
+             then
+                return False;
+             end if;
+          end;
+       end if;
+ 
+       return True;
+    end Has_Reliable_Extra_Formals;
+ 
     --------------------
     -- Install_Entity --
     --------------------
*************** package body Sem_Ch6 is
*** 10559,10571 ****
           E : Entity_Id;
  
        begin
!          E := First_Entity (Prim);
           while Present (E) loop
!             if Is_Formal (E) and then Is_Controlling_Formal (E) then
                 return E;
              end if;
  
!             Next_Entity (E);
           end loop;
  
           return Empty;
--- 10704,10716 ----
           E : Entity_Id;
  
        begin
!          E := First_Formal (Prim);
           while Present (E) loop
!             if Is_Controlling_Formal (E) then
                 return E;
              end if;
  
!             Next_Formal (E);
           end loop;
  
           return Empty;
*************** package body Sem_Ch6 is
*** 10891,10897 ****
  
     procedure List_Inherited_Pre_Post_Aspects (E : Entity_Id) is
     begin
!       if Opt.List_Inherited_Aspects
          and then Is_Subprogram_Or_Generic_Subprogram (E)
        then
           declare
--- 11036,11042 ----
  
     procedure List_Inherited_Pre_Post_Aspects (E : Entity_Id) is
     begin
!       if List_Inherited_Aspects
          and then Is_Subprogram_Or_Generic_Subprogram (E)
        then
           declare
*************** package body Sem_Ch6 is
*** 11211,11217 ****
  
              function Overrides_Private_Part_Op return Boolean is
                 Over_Decl : constant Node_Id :=
!                              Unit_Declaration_Node (Overridden_Operation (S));
                 Subp_Decl : constant Node_Id := Unit_Declaration_Node (S);
  
              begin
--- 11356,11363 ----
  
              function Overrides_Private_Part_Op return Boolean is
                 Over_Decl : constant Node_Id :=
!                              Unit_Declaration_Node
!                                (Ultimate_Alias (Overridden_Operation (S)));
                 Subp_Decl : constant Node_Id := Unit_Declaration_Node (S);
  
              begin
*************** package body Sem_Ch6 is
*** 11236,11242 ****
                    return False;
                 end if;
  
!                if not Present (Partial_View) then
                    return True;
                 end if;
  
--- 11382,11388 ----
                    return False;
                 end if;
  
!                if No (Partial_View) then
                    return True;
                 end if;
  
*************** package body Sem_Ch6 is
*** 11250,11256 ****
                 begin
                    loop
                       H := Homonym (H);
!                      exit when not Present (H) or else Scope (H) /= Scope (S);
  
                       if Nkind (Parent (H)) in
                          N_Private_Extension_Declaration |
--- 11396,11402 ----
                 begin
                    loop
                       H := Homonym (H);
!                      exit when No (H) or else Scope (H) /= Scope (S);
  
                       if Nkind (Parent (H)) in
                          N_Private_Extension_Declaration |
*************** package body Sem_Ch6 is
*** 11298,11304 ****
  
                          if ((Present (Partial_View)
                                and then Is_Tagged_Type (Partial_View))
!                           or else (not Present (Partial_View)
                                      and then Is_Tagged_Type (T)))
                            and then T = Base_Type (Etype (S))
                          then
--- 11444,11450 ----
  
                          if ((Present (Partial_View)
                                and then Is_Tagged_Type (Partial_View))
!                           or else (No (Partial_View)
                                      and then Is_Tagged_Type (T)))
                            and then T = Base_Type (Etype (S))
                          then
*************** package body Sem_Ch6 is
*** 12247,12253 ****
                             --  Work done in Override_Dispatching_Operation, so
                             --  nothing else needs to be done here.
  
!                            null;
                          end if;
  
                       else
--- 12393,12426 ----
                             --  Work done in Override_Dispatching_Operation, so
                             --  nothing else needs to be done here.
  
!                            --  ??? Special case to keep supporting the hiding
!                            --  of the predefined "=" operator for a nonlimited
!                            --  tagged type by a user-defined "=" operator for
!                            --  its class-wide type when the type is private.
! 
!                            if Chars (E) = Name_Op_Eq then
!                               declare
!                                  Typ : constant Entity_Id
!                                          := Etype (First_Entity (E));
!                                  H   : Entity_Id := Homonym (E);
! 
!                               begin
!                                  while Present (H)
!                                    and then Scope (H) = Scope (E)
!                                  loop
!                                     if Is_User_Defined_Equality (H)
!                                        and then Is_Immediately_Visible (H)
!                                        and then Etype (First_Entity (H))
!                                                   = Class_Wide_Type (Typ)
!                                     then
!                                        Remove_Entity_And_Homonym (E);
!                                        exit;
!                                     end if;
! 
!                                     H := Homonym (H);
!                                  end loop;
!                               end;
!                            end if;
                          end if;
  
                       else
*************** package body Sem_Ch6 is
*** 12347,12353 ****
                    if Is_Dispatching_Operation (E) then
  
                       --  An overriding dispatching subprogram inherits the
!                      --  convention of the overridden subprogram (AI-117).
  
                       Set_Convention (S, Convention (E));
                       Check_Dispatching_Operation (S, E);
--- 12520,12526 ----
                    if Is_Dispatching_Operation (E) then
  
                       --  An overriding dispatching subprogram inherits the
!                      --  convention of the overridden subprogram (AI95-117).
  
                       Set_Convention (S, Convention (E));
                       Check_Dispatching_Operation (S, E);
*************** package body Sem_Ch6 is
*** 12767,12773 ****
  
              --  No need to continue if we already notified errors
  
!             if not Present (Formal_Type) then
                 return;
              end if;
  
--- 12940,12946 ----
  
              --  No need to continue if we already notified errors
  
!             if No (Formal_Type) then
                 return;
              end if;
  
*************** package body Sem_Ch6 is
*** 12918,12927 ****
           Set_Formal_Mode (Formal);
  
           if Ekind (Formal) = E_In_Parameter then
!             Set_Default_Value (Formal, Expression (Param_Spec));
  
!             if Present (Expression (Param_Spec)) then
!                Default := Expression (Param_Spec);
  
                 if Is_Scalar_Type (Etype (Default)) then
                    if Nkind (Parameter_Type (Param_Spec)) /=
--- 13091,13100 ----
           Set_Formal_Mode (Formal);
  
           if Ekind (Formal) = E_In_Parameter then
!             Default := Expression (Param_Spec);
  
!             if Present (Default) then
!                Set_Default_Value (Formal, Default);
  
                 if Is_Scalar_Type (Etype (Default)) then
                    if Nkind (Parameter_Type (Param_Spec)) /=
*************** package body Sem_Ch6 is
*** 13231,13240 ****
              Mutate_Ekind (Formal_Id, E_In_Out_Parameter);
  
           else
!             Mutate_Ekind            (Formal_Id, E_Out_Parameter);
!             Set_Never_Set_In_Source (Formal_Id, True);
!             Set_Is_True_Constant    (Formal_Id, False);
!             Set_Current_Value       (Formal_Id, Empty);
           end if;
  
        else
--- 13404,13412 ----
              Mutate_Ekind (Formal_Id, E_In_Out_Parameter);
  
           else
!             Mutate_Ekind         (Formal_Id, E_Out_Parameter);
!             Set_Is_True_Constant (Formal_Id, False);
!             Set_Current_Value    (Formal_Id, Empty);
           end if;
  
        else
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch6.ads gcc-13.1.0/gcc/ada/sem_ch6.ads
*** gcc-12.2.0/gcc/ada/sem_ch6.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch6.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Ch6 is
*** 174,179 ****
--- 174,195 ----
     --  the end of Subp's parameter list (with each subsequent extra formal
     --  being attached to the preceding extra formal).
  
+    function Extra_Formals_Match_OK
+      (E     : Entity_Id;
+       Ref_E : Entity_Id) return Boolean;
+    --  Return True if the extra formals of the given entities match. E is a
+    --  subprogram, and Ref_E is the reference entity that will be used to check
+    --  the extra formals of E: a subprogram type or another subprogram. For
+    --  example, if E is a dispatching primitive of a tagged type then Ref_E
+    --  may be the overridden primitive of its parent type or its ultimate
+    --  renamed entity; however, if E is a subprogram to which 'Access is
+    --  applied then Ref_E is its corresponding subprogram type. Used in
+    --  assertions.
+ 
+    function Extra_Formals_OK (E : Entity_Id) return Boolean;
+    --  Return True if the decoration of the attributes associated with extra
+    --  formals are properly set. Used in assertions.
+ 
     function Find_Corresponding_Spec
       (N          : Node_Id;
        Post_Error : Boolean := True) return Entity_Id;
*************** package Sem_Ch6 is
*** 197,202 ****
--- 213,221 ----
     --  Determines if two subtype definitions are fully conformant. Used
     --  for entry family conformance checks (RM 6.3.1 (24)).
  
+    function Has_BIP_Formals (E : Entity_Id) return Boolean;
+    --  Determines if a given entity has build-in-place formals
+ 
     procedure Install_Entity (E : Entity_Id);
     --  Place a single entity on the visibility chain
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch7.adb gcc-13.1.0/gcc/ada/sem_ch7.adb
*** gcc-12.2.0/gcc/ada/sem_ch7.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch7.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sinfo.Utils;    use Sinfo.Utils;
*** 72,77 ****
--- 72,78 ----
  with Sinput;         use Sinput;
  with Style;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  with GNAT.HTable;
  
*************** package body Sem_Ch7 is
*** 269,275 ****
           --  declaration. Examine all declarations in list Decls in reverse
           --  and determine whether one such referencer exists. All entities
           --  in the range Last (Decls) .. Referencer are hidden from external
!          --  visibility.
  
           function Scan_Subprogram_Ref (N : Node_Id) return Traverse_Result;
           --  Determine whether a node denotes a reference to a subprogram
--- 270,277 ----
           --  declaration. Examine all declarations in list Decls in reverse
           --  and determine whether one such referencer exists. All entities
           --  in the range Last (Decls) .. Referencer are hidden from external
!          --  visibility. In_Nested_Instance is true if we are inside a package
!          --  instance that has a body.
  
           function Scan_Subprogram_Ref (N : Node_Id) return Traverse_Result;
           --  Determine whether a node denotes a reference to a subprogram
*************** package body Sem_Ch7 is
*** 282,289 ****
           --  tree traversal.
  
           procedure Scan_Subprogram_Refs (Node : Node_Id);
!          --  If we haven't already traversed Node, then mark it and traverse
!          --  it.
  
           --------------------
           -- Has_Referencer --
--- 284,290 ----
           --  tree traversal.
  
           procedure Scan_Subprogram_Refs (Node : Node_Id);
!          --  If we haven't already traversed Node, then mark and traverse it.
  
           --------------------
           -- Has_Referencer --
*************** package body Sem_Ch7 is
*** 294,309 ****
              In_Nested_Instance                      : Boolean;
              Has_Outer_Referencer_Of_Non_Subprograms : Boolean) return Boolean
           is
-             Decl    : Node_Id;
-             Decl_Id : Entity_Id;
-             Spec    : Node_Id;
- 
              Has_Referencer_Of_Non_Subprograms : Boolean :=
                                         Has_Outer_Referencer_Of_Non_Subprograms;
              --  Set if an inlined subprogram body was detected as a referencer.
              --  In this case, we do not return True immediately but keep hiding
              --  subprograms from external visibility.
  
           begin
              if No (Decls) then
                 return False;
--- 295,351 ----
              In_Nested_Instance                      : Boolean;
              Has_Outer_Referencer_Of_Non_Subprograms : Boolean) return Boolean
           is
              Has_Referencer_Of_Non_Subprograms : Boolean :=
                                         Has_Outer_Referencer_Of_Non_Subprograms;
              --  Set if an inlined subprogram body was detected as a referencer.
              --  In this case, we do not return True immediately but keep hiding
              --  subprograms from external visibility.
  
+             Decl        : Node_Id;
+             Decl_Id     : Entity_Id;
+             In_Instance : Boolean;
+             Spec        : Node_Id;
+             Ignore      : Boolean;
+ 
+             function Set_Referencer_Of_Non_Subprograms return Boolean;
+             --  Set Has_Referencer_Of_Non_Subprograms and call
+             --  Scan_Subprogram_Refs if relevant.
+             --  Return whether Scan_Subprogram_Refs was called.
+ 
+             ---------------------------------------
+             -- Set_Referencer_Of_Non_Subprograms --
+             ---------------------------------------
+ 
+             function Set_Referencer_Of_Non_Subprograms return Boolean is
+             begin
+                --  An inlined subprogram body acts as a referencer
+                --  unless we generate C code since inlining is then
+                --  handled by the C compiler.
+ 
+                --  Note that we test Has_Pragma_Inline here in addition
+                --  to Is_Inlined. We are doing this for a client, since
+                --  we are computing which entities should be public, and
+                --  it is the client who will decide if actual inlining
+                --  should occur, so we need to catch all cases where the
+                --  subprogram may be inlined by the client.
+ 
+                if (not CCG_Mode or else Has_Pragma_Inline_Always (Decl_Id))
+                  and then (Is_Inlined (Decl_Id)
+                             or else Has_Pragma_Inline (Decl_Id))
+                then
+                   Has_Referencer_Of_Non_Subprograms := True;
+ 
+                   --  Inspect the statements of the subprogram body
+                   --  to determine whether the body references other
+                   --  subprograms.
+ 
+                   Scan_Subprogram_Refs (Decl);
+                   return True;
+                else
+                   return False;
+                end if;
+             end Set_Referencer_Of_Non_Subprograms;
+ 
           begin
              if No (Decls) then
                 return False;
*************** package body Sem_Ch7 is
*** 331,346 ****
                    --  and hide more entities from external visibility.
  
                    if not Is_Generic_Unit (Decl_Id) then
                       if Has_Referencer (Private_Declarations (Spec),
!                                         In_Nested_Instance
!                                           or else
!                                         Is_Generic_Instance (Decl_Id),
                                          Has_Referencer_Of_Non_Subprograms)
                         or else
                          Has_Referencer (Visible_Declarations (Spec),
!                                         In_Nested_Instance
!                                           or else
!                                         Is_Generic_Instance (Decl_Id),
                                          Has_Referencer_Of_Non_Subprograms)
                       then
                          return True;
--- 373,394 ----
                    --  and hide more entities from external visibility.
  
                    if not Is_Generic_Unit (Decl_Id) then
+                      if In_Nested_Instance then
+                         In_Instance := True;
+                      elsif Is_Generic_Instance (Decl_Id) then
+                         In_Instance :=
+                           Has_Completion (Decl_Id)
+                             or else Unit_Requires_Body (Generic_Parent (Spec));
+                      else
+                         In_Instance := False;
+                      end if;
+ 
                       if Has_Referencer (Private_Declarations (Spec),
!                                         In_Instance,
                                          Has_Referencer_Of_Non_Subprograms)
                         or else
                          Has_Referencer (Visible_Declarations (Spec),
!                                         In_Instance,
                                          Has_Referencer_Of_Non_Subprograms)
                       then
                          return True;
*************** package body Sem_Ch7 is
*** 391,444 ****
                          return True;
                       end if;
  
!                      --  An inlined subprogram body acts as a referencer
!                      --  unless we generate C code since inlining is then
!                      --  handled by the C compiler.
! 
!                      --  Note that we test Has_Pragma_Inline here in addition
!                      --  to Is_Inlined. We are doing this for a client, since
!                      --  we are computing which entities should be public, and
!                      --  it is the client who will decide if actual inlining
!                      --  should occur, so we need to catch all cases where the
!                      --  subprogram may be inlined by the client.
! 
!                      if not Generate_C_Code
!                        and then (Is_Inlined (Decl_Id)
!                                   or else Has_Pragma_Inline (Decl_Id))
!                      then
!                         Has_Referencer_Of_Non_Subprograms := True;
! 
!                         --  Inspect the statements of the subprogram body
!                         --  to determine whether the body references other
!                         --  subprograms.
! 
!                         Scan_Subprogram_Refs (Decl);
!                      end if;
  
                    --  Otherwise this is a stand alone subprogram body
  
                    else
                       Decl_Id := Defining_Entity (Decl);
  
!                      --  An inlined subprogram body acts as a referencer
!                      --  unless we generate C code since inlining is then
!                      --  handled by the C compiler.
! 
!                      if not Generate_C_Code
!                        and then (Is_Inlined (Decl_Id)
!                                   or else Has_Pragma_Inline (Decl_Id))
                       then
!                         Has_Referencer_Of_Non_Subprograms := True;
! 
!                         --  Inspect the statements of the subprogram body
!                         --  to determine whether the body references other
!                         --  subprograms.
! 
!                         Scan_Subprogram_Refs (Decl);
! 
!                      --  Otherwise we can reset Is_Public right away
! 
!                      elsif not Subprogram_Table.Get (Decl_Id) then
                          Set_Is_Public (Decl_Id, False);
                       end if;
                    end if;
--- 439,455 ----
                          return True;
                       end if;
  
!                      Ignore := Set_Referencer_Of_Non_Subprograms;
  
                    --  Otherwise this is a stand alone subprogram body
  
                    else
                       Decl_Id := Defining_Entity (Decl);
  
!                      if not Set_Referencer_Of_Non_Subprograms
!                        and then not Subprogram_Table.Get (Decl_Id)
                       then
!                         --  We can reset Is_Public right away
                          Set_Is_Public (Decl_Id, False);
                       end if;
                    end if;
*************** package body Sem_Ch7 is
*** 474,479 ****
--- 485,495 ----
                 then
                    Decl_Id := Defining_Entity (Decl);
  
+                   --  We cannot say anything for objects declared in nested
+                   --  instances because instantiations are not done yet so the
+                   --  bodies are not visible and could contain references to
+                   --  them.
+ 
                    if not In_Nested_Instance
                      and then not Is_Imported (Decl_Id)
                      and then not Is_Exported (Decl_Id)
*************** package body Sem_Ch7 is
*** 1227,1243 ****
           Check_Completion;
  
           --  If the package spec does not require an explicit body, then all
!          --  abstract states declared in nested packages cannot possibly get
!          --  a proper refinement (SPARK RM 7.2.2(3)). This check is performed
!          --  only when the compilation unit is the main unit to allow for
!          --  modular SPARK analysis where packages do not necessarily have
!          --  bodies.
  
           if Is_Comp_Unit then
              Check_State_Refinements
                (Context      => N,
                 Is_Main_Unit => Parent (N) = Cunit (Main_Unit));
           end if;
        end if;
  
        --  Set Body_Required indication on the compilation unit node
--- 1243,1266 ----
           Check_Completion;
  
           --  If the package spec does not require an explicit body, then all
!          --  abstract states declared in nested packages cannot possibly get a
!          --  proper refinement (SPARK RM 7.1.4(4) and SPARK RM 7.2.2(3)). This
!          --  check is performed only when the compilation unit is the main
!          --  unit to allow for modular SPARK analysis where packages do not
!          --  necessarily have bodies.
  
           if Is_Comp_Unit then
              Check_State_Refinements
                (Context      => N,
                 Is_Main_Unit => Parent (N) = Cunit (Main_Unit));
           end if;
+ 
+          --  Warn about references to unset objects, which is straightforward
+          --  for packages with no bodies. For packages with bodies this is more
+          --  complicated, because some of the objects might be set between spec
+          --  and body elaboration, in nested or child packages, etc.
+ 
+          Check_References (Id);
        end if;
  
        --  Set Body_Required indication on the compilation unit node
*************** package body Sem_Ch7 is
*** 1295,1305 ****
        --  private_with_clauses, and remove them at the end of the nested
        --  package.
  
!       procedure Clear_Constants (Id : Entity_Id; FE : Entity_Id);
!       --  Clears constant indications (Never_Set_In_Source, Constant_Value, and
!       --  Is_True_Constant) on all variables that are entities of Id, and on
!       --  the chain whose first element is FE. A recursive call is made for all
!       --  packages and generic packages.
  
        procedure Generate_Parent_References;
        --  For a child unit, generate references to parent units, for
--- 1318,1327 ----
        --  private_with_clauses, and remove them at the end of the nested
        --  package.
  
!       procedure Clear_Constants (Id : Entity_Id);
!       --  Clears constant indications (Never_Set_In_Source, Constant_Value,
!       --  and Is_True_Constant) on all variables that are entities of Id.
!       --  A recursive call is made for all packages and generic packages.
  
        procedure Generate_Parent_References;
        --  For a child unit, generate references to parent units, for
*************** package body Sem_Ch7 is
*** 1313,1318 ****
--- 1335,1345 ----
        --  Reject completion of an incomplete or private type declarations
        --  having a known discriminant part by an unchecked union.
  
+       procedure Inspect_Untagged_Record_Completion (Decls : List_Id);
+       --  Find out whether a nonlimited untagged record completion has got a
+       --  primitive equality operator and, if so, make it so that it will be
+       --  used as the predefined operator of the private view of the record.
+ 
        procedure Install_Parent_Private_Declarations (Inst_Id : Entity_Id);
        --  Given the package entity of a generic package instantiation or
        --  formal package whose corresponding generic is a child unit, installs
*************** package body Sem_Ch7 is
*** 1325,1331 ****
        -- Clear_Constants --
        ---------------------
  
!       procedure Clear_Constants (Id : Entity_Id; FE : Entity_Id) is
           E : Entity_Id;
  
        begin
--- 1352,1358 ----
        -- Clear_Constants --
        ---------------------
  
!       procedure Clear_Constants (Id : Entity_Id) is
           E : Entity_Id;
  
        begin
*************** package body Sem_Ch7 is
*** 1341,1349 ****
           --  package can contain a renaming declaration to itself, and such
           --  renamings are generated automatically within package instances.
  
!          E := FE;
           while Present (E) and then E /= Id loop
!             if Is_Assignable (E) then
                 Set_Never_Set_In_Source (E, False);
                 Set_Is_True_Constant    (E, False);
                 Set_Current_Value       (E, Empty);
--- 1368,1376 ----
           --  package can contain a renaming declaration to itself, and such
           --  renamings are generated automatically within package instances.
  
!          E := First_Entity (Id);
           while Present (E) and then E /= Id loop
!             if Ekind (E) = E_Variable then
                 Set_Never_Set_In_Source (E, False);
                 Set_Is_True_Constant    (E, False);
                 Set_Current_Value       (E, Empty);
*************** package body Sem_Ch7 is
*** 1355,1362 ****
                 end if;
  
              elsif Is_Package_Or_Generic_Package (E) then
!                Clear_Constants (E, First_Entity (E));
!                Clear_Constants (E, First_Private_Entity (E));
              end if;
  
              Next_Entity (E);
--- 1382,1388 ----
                 end if;
  
              elsif Is_Package_Or_Generic_Package (E) then
!                Clear_Constants (E);
              end if;
  
              Next_Entity (E);
*************** package body Sem_Ch7 is
*** 1437,1443 ****
           Decl := First (Decls);
           while Present (Decl) loop
  
!             --  We are looking at an incomplete or private type declaration
              --  with a known_discriminant_part whose full view is an
              --  Unchecked_Union. The seemingly useless check with Is_Type
              --  prevents cascaded errors when routines defined only for type
--- 1463,1469 ----
           Decl := First (Decls);
           while Present (Decl) loop
  
!             --  We are looking for an incomplete or private type declaration
              --  with a known_discriminant_part whose full view is an
              --  Unchecked_Union. The seemingly useless check with Is_Type
              --  prevents cascaded errors when routines defined only for type
*************** package body Sem_Ch7 is
*** 1461,1466 ****
--- 1487,1589 ----
           end loop;
        end Inspect_Unchecked_Union_Completion;
  
+       ----------------------------------------
+       -- Inspect_Untagged_Record_Completion --
+       ----------------------------------------
+ 
+       procedure Inspect_Untagged_Record_Completion (Decls : List_Id) is
+          Decl : Node_Id;
+ 
+       begin
+          Decl := First (Decls);
+          while Present (Decl) loop
+ 
+             --  We are looking for a full type declaration of an untagged
+             --  record with a private declaration and primitive operations.
+ 
+             if Nkind (Decl) in N_Full_Type_Declaration
+               and then Is_Record_Type (Defining_Identifier (Decl))
+               and then not Is_Limited_Type (Defining_Identifier (Decl))
+               and then not Is_Tagged_Type (Defining_Identifier (Decl))
+               and then Has_Private_Declaration (Defining_Identifier (Decl))
+               and then Has_Primitive_Operations (Defining_Identifier (Decl))
+             then
+                declare
+                   Prim_List : constant Elist_Id :=
+                      Collect_Primitive_Operations (Defining_Identifier (Decl));
+ 
+                   E       : Entity_Id;
+                   Ne_Id   : Entity_Id;
+                   Op_Decl : Node_Id;
+                   Op_Id   : Entity_Id;
+                   Prim    : Elmt_Id;
+ 
+                begin
+                   Prim := First_Elmt (Prim_List);
+                   while Present (Prim) loop
+                      Op_Id   := Node (Prim);
+                      Op_Decl := Declaration_Node (Op_Id);
+                      if Nkind (Op_Decl) in N_Subprogram_Specification then
+                         Op_Decl := Parent (Op_Decl);
+                      end if;
+ 
+                      --  We are looking for an equality operator immediately
+                      --  visible and declared in the private part followed by
+                      --  the synthesized inequality operator.
+ 
+                      if Is_User_Defined_Equality (Op_Id)
+                        and then Is_Immediately_Visible (Op_Id)
+                        and then List_Containing (Op_Decl) = Decls
+                      then
+                         Ne_Id := Next_Entity (Op_Id);
+                         pragma Assert (Ekind (Ne_Id) = E_Function
+                           and then Corresponding_Equality (Ne_Id) = Op_Id);
+ 
+                         E := First_Private_Entity (Id);
+ 
+                         --  Move them from the private part of the entity list
+                         --  up to the end of the visible part of the same list.
+ 
+                         Remove_Entity (Op_Id);
+                         Remove_Entity (Ne_Id);
+ 
+                         Link_Entities (Prev_Entity (E), Op_Id);
+                         Link_Entities (Op_Id, Ne_Id);
+                         Link_Entities (Ne_Id, E);
+ 
+                         --  And if the private part contains another equality
+                         --  operator, move the equality operator to after it
+                         --  in the homonym chain, so that all its next homonyms
+                         --  in the same scope, if any, also are in the visible
+                         --  part. This is relied upon to resolve expanded names
+                         --  in Collect_Interps for example.
+ 
+                         while Present (E) loop
+                            exit when Ekind (E) = E_Function
+                              and then Chars (E) = Name_Op_Eq;
+ 
+                            Next_Entity (E);
+                         end loop;
+ 
+                         if Present (E) then
+                            Remove_Homonym (Op_Id);
+ 
+                            Set_Homonym (Op_Id, Homonym (E));
+                            Set_Homonym (E, Op_Id);
+                         end if;
+ 
+                         exit;
+                      end if;
+ 
+                      Next_Elmt (Prim);
+                   end loop;
+                end;
+             end if;
+ 
+             Next (Decl);
+          end loop;
+       end Inspect_Untagged_Record_Completion;
+ 
        -----------------------------------------
        -- Install_Parent_Private_Declarations --
        -----------------------------------------
*************** package body Sem_Ch7 is
*** 1711,1724 ****
  
        --  If this is a package associated with a generic instance or formal
        --  package, then the private declarations of each of the generic's
!       --  parents must be installed at this point.
  
!       if Is_Generic_Instance (Id) then
           Install_Parent_Private_Declarations (Id);
        end if;
  
        --  Analyze private part if present. The flag In_Private_Part is reset
!       --  in End_Package_Scope.
  
        L := Last_Entity (Id);
  
--- 1834,1851 ----
  
        --  If this is a package associated with a generic instance or formal
        --  package, then the private declarations of each of the generic's
!       --  parents must be installed at this point, but not if this is the
!       --  abbreviated instance created to check a formal package, see the
!       --  same condition in Analyze_Package_Instantiation.
  
!       if Is_Generic_Instance (Id)
!         and then not Is_Abbreviated_Instance (Id)
!       then
           Install_Parent_Private_Declarations (Id);
        end if;
  
        --  Analyze private part if present. The flag In_Private_Part is reset
!       --  in Uninstall_Declarations.
  
        L := Last_Entity (Id);
  
*************** package body Sem_Ch7 is
*** 1815,1820 ****
--- 1942,1955 ----
           Inspect_Unchecked_Union_Completion (Priv_Decls);
        end if;
  
+       --  Implement AI12-0101 (which only removes a legality rule) and then
+       --  AI05-0123 (which directly applies in the previously illegal case)
+       --  in Ada 2012. Note that AI12-0101 is a binding interpretation.
+ 
+       if Present (Priv_Decls) and then Ada_Version >= Ada_2012 then
+          Inspect_Untagged_Record_Completion (Priv_Decls);
+       end if;
+ 
        if Ekind (Id) = E_Generic_Package
          and then Nkind (Orig_Decl) = N_Generic_Package_Declaration
          and then Present (Priv_Decls)
*************** package body Sem_Ch7 is
*** 1873,1880 ****
        if Is_Library_Level_Entity (Id)
          or else Is_Generic_Instance (Id)
        then
!          Clear_Constants (Id, First_Entity (Id));
!          Clear_Constants (Id, First_Private_Entity (Id));
        end if;
  
        --  Output relevant information as to why the package requires a body.
--- 2008,2014 ----
        if Is_Library_Level_Entity (Id)
          or else Is_Generic_Instance (Id)
        then
!          Clear_Constants (Id);
        end if;
  
        --  Output relevant information as to why the package requires a body.
*************** package body Sem_Ch7 is
*** 2172,2180 ****
                    --  a derived scalar type). Further declarations cannot
                    --  include inherited operations of the type.
  
!                   if Present (Prim_Op) then
!                      exit when Ekind (Prim_Op) not in Overloadable_Kind;
!                   end if;
                 end loop;
              end if;
           end if;
--- 2306,2313 ----
                    --  a derived scalar type). Further declarations cannot
                    --  include inherited operations of the type.
  
!                   exit when Present (Prim_Op)
!                     and then not Is_Overloadable (Prim_Op);
                 end loop;
              end if;
           end if;
*************** package body Sem_Ch7 is
*** 3093,3102 ****
  
        if not In_Private_Part (P) then
           return;
-       else
-          Set_In_Private_Part (P, False);
        end if;
  
        --  Make private entities invisible and exchange full and private
        --  declarations for private types. Id is now the first private entity
        --  in the package.
--- 3226,3237 ----
  
        if not In_Private_Part (P) then
           return;
        end if;
  
+       --  Reset the flag now
+ 
+       Set_In_Private_Part (P, False);
+ 
        --  Make private entities invisible and exchange full and private
        --  declarations for private types. Id is now the first private entity
        --  in the package.
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch7.ads gcc-13.1.0/gcc/ada/sem_ch7.ads
*** gcc-12.2.0/gcc/ada/sem_ch7.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch7.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch8.adb gcc-13.1.0/gcc/ada/sem_ch8.adb
*** gcc-12.2.0/gcc/ada/sem_ch8.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch8.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Style;
*** 76,81 ****
--- 76,82 ----
  with Table;
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Ch8 is
  
*************** package body Sem_Ch8 is
*** 474,479 ****
--- 475,484 ----
     --  scope: the defining entity for U, unless U is a package instance, in
     --  which case we retrieve the entity of the instance spec.
  
+    procedure Error_Missing_With_Of_Known_Unit (Pkg : Node_Id);
+    --  Display an error message denoting a "with" is missing for a given known
+    --  package Pkg with its full path name.
+ 
     procedure Find_Expanded_Name (N : Node_Id);
     --  The input is a selected component known to be an expanded name. Verify
     --  legality of selector given the scope denoted by prefix, and change node
*************** package body Sem_Ch8 is
*** 509,514 ****
--- 514,520 ----
  
     function Has_Implicit_Operator (N : Node_Id) return Boolean;
     --  N is an expanded name whose selector is an operator name (e.g. P."+").
+    --  Determine if N denotes an operator implicitly declared in prefix P: P's
     --  declarative part contains an implicit declaration of an operator if it
     --  has a declaration of a type to which one of the predefined operators
     --  apply. The existence of this routine is an implementation artifact. A
*************** package body Sem_Ch8 is
*** 955,961 ****
              Set_Etype (Nam, T);
           end if;
        elsif Present (Subtype_Mark (N))
!         or else not Present (Access_Definition (N))
        then
           if Present (Subtype_Mark (N)) then
              Find_Type (Subtype_Mark (N));
--- 961,967 ----
              Set_Etype (Nam, T);
           end if;
        elsif Present (Subtype_Mark (N))
!         or else No (Access_Definition (N))
        then
           if Present (Subtype_Mark (N)) then
              Find_Type (Subtype_Mark (N));
*************** package body Sem_Ch8 is
*** 3962,3967 ****
--- 3968,3997 ----
                   ("implicit operation& is not visible (RM 8.3 (15))",
                    Nam, Old_S);
              end if;
+ 
+          --  Check whether an expanded name used for the renamed subprogram
+          --  begins with the same name as the renaming itself, and if so,
+          --  issue an error about the prefix being hidden by the renaming.
+          --  We exclude generic instances from this checking, since such
+          --  normally illegal renamings can be constructed when expanding
+          --  instantiations.
+ 
+          elsif Nkind (Nam) = N_Expanded_Name and then not In_Instance then
+             declare
+                function Ult_Expanded_Prefix (N : Node_Id) return Node_Id is
+                  (if Nkind (N) /= N_Expanded_Name
+                   then N
+                   else Ult_Expanded_Prefix (Prefix (N)));
+                --  Returns the ultimate prefix of an expanded name
+ 
+             begin
+                if Chars (Entity (Ult_Expanded_Prefix (Nam))) = Chars (New_S)
+                then
+                   Error_Msg_Sloc := Sloc (N);
+                   Error_Msg_NE
+                     ("& is hidden by declaration#", Nam, New_S);
+                end if;
+             end;
           end if;
  
           Set_Convention (New_S, Convention (Old_S));
*************** package body Sem_Ch8 is
*** 4532,4538 ****
        --  have at least one formal parameter, with the exceptions of the GNAT
        --  attribute 'Img, which GNAT treats as renameable.
  
!       if not Is_Non_Empty_List (Parameter_Specifications (Spec)) then
           if Aname /= Name_Img then
              Error_Msg_N
                ("subprogram renaming an attribute must have formals", N);
--- 4562,4568 ----
        --  have at least one formal parameter, with the exceptions of the GNAT
        --  attribute 'Img, which GNAT treats as renameable.
  
!       if Is_Empty_List (Parameter_Specifications (Spec)) then
           if Aname /= Name_Img then
              Error_Msg_N
                ("subprogram renaming an attribute must have formals", N);
*************** package body Sem_Ch8 is
*** 4673,4679 ****
        --  want to deal with AST_Handler in ZFP mode.
  
        if not Configurable_Run_Time_Mode
!         and then not Present (Corresponding_Formal_Spec (N))
          and then not Is_RTE (Etype (Nam), RE_AST_Handler)
        then
           declare
--- 4703,4709 ----
        --  want to deal with AST_Handler in ZFP mode.
  
        if not Configurable_Run_Time_Mode
!         and then No (Corresponding_Formal_Spec (N))
          and then not Is_RTE (Etype (Nam), RE_AST_Handler)
        then
           declare
*************** package body Sem_Ch8 is
*** 4861,4866 ****
--- 4891,4910 ----
           then
              null;
  
+          --  Don't replace a non-qualified discriminant in strict preanalysis
+          --  mode since it can lead to errors during full analysis when the
+          --  discriminant gets referenced later.
+ 
+          --  This can occur in situations where a protected type contains
+          --  an expression function which references a non-prefixed
+          --  discriminant.
+ 
+          elsif No (P)
+            and then Preanalysis_Active
+            and then Inside_Preanalysis_Without_Freezing = 0
+          then
+             null;
+ 
           else
              Set_Entity (N, Discriminal (E));
           end if;
*************** package body Sem_Ch8 is
*** 5333,5338 ****
--- 5377,5457 ----
        end if;
     end Entity_Of_Unit;
  
+    --------------------------------------
+    -- Error_Missing_With_Of_Known_Unit --
+    --------------------------------------
+ 
+    procedure Error_Missing_With_Of_Known_Unit (Pkg : Node_Id) is
+       Selectors : array (1 .. 6) of Node_Id;
+       --  Contains the chars of the full package name up to maximum number
+       --  allowed as per Errout.Error_Msg_Name_# variables.
+ 
+       Count : Integer := Selectors'First;
+       --  Count of selector names forming the full package name
+ 
+       Current_Pkg : Node_Id := Parent (Pkg);
+ 
+    begin
+       Selectors (Count) := Pkg;
+ 
+       --  Gather all the selectors we can display
+ 
+       while Nkind (Current_Pkg) = N_Selected_Component
+         and then Is_Known_Unit (Current_Pkg)
+         and then Count < Selectors'Length
+       loop
+          Count             := Count + 1;
+          Selectors (Count) := Selector_Name (Current_Pkg);
+          Current_Pkg       := Parent (Current_Pkg);
+       end loop;
+ 
+       --  Display the error message based on the number of selectors found
+ 
+       case Count is
+          when 1 =>
+             Error_Msg_Node_1 := Selectors (1);
+             Error_Msg_N -- CODEFIX
+               ("\\missing `WITH &;`", Pkg);
+          when 2 =>
+             Error_Msg_Node_1 := Selectors (1);
+             Error_Msg_Node_2 := Selectors (2);
+             Error_Msg_N -- CODEFIX
+               ("\\missing `WITH &.&;`", Pkg);
+          when 3 =>
+             Error_Msg_Node_1 := Selectors (1);
+             Error_Msg_Node_2 := Selectors (2);
+             Error_Msg_Node_3 := Selectors (3);
+             Error_Msg_N -- CODEFIX
+               ("\\missing `WITH &.&.&;`", Pkg);
+          when 4 =>
+             Error_Msg_Node_1 := Selectors (1);
+             Error_Msg_Node_2 := Selectors (2);
+             Error_Msg_Node_3 := Selectors (3);
+             Error_Msg_Node_3 := Selectors (4);
+             Error_Msg_N -- CODEFIX
+               ("\\missing `WITH &.&.&.&;`", Pkg);
+          when 5 =>
+             Error_Msg_Node_1 := Selectors (1);
+             Error_Msg_Node_2 := Selectors (2);
+             Error_Msg_Node_3 := Selectors (3);
+             Error_Msg_Node_3 := Selectors (4);
+             Error_Msg_Node_3 := Selectors (5);
+             Error_Msg_N -- CODEFIX
+               ("\\missing `WITH &.&.&.&.&;`", Pkg);
+          when 6 =>
+             Error_Msg_Node_1 := Selectors (1);
+             Error_Msg_Node_2 := Selectors (2);
+             Error_Msg_Node_3 := Selectors (3);
+             Error_Msg_Node_4 := Selectors (4);
+             Error_Msg_Node_5 := Selectors (5);
+             Error_Msg_Node_6 := Selectors (6);
+             Error_Msg_N -- CODEFIX
+               ("\\missing `WITH &.&.&.&.&.&;`", Pkg);
+          when others =>
+             raise Program_Error;
+       end case;
+    end Error_Missing_With_Of_Known_Unit;
+ 
     ----------------------
     -- Find_Direct_Name --
     ----------------------
*************** package body Sem_Ch8 is
*** 5876,5900 ****
                and then N = Prefix (Parent (N))
                and then Is_Known_Unit (Parent (N))
              then
!                declare
!                   P : Node_Id := Parent (N);
!                begin
!                   Error_Msg_Name_1 := Chars (N);
!                   Error_Msg_Name_2 := Chars (Selector_Name (P));
! 
!                   if Nkind (Parent (P)) = N_Selected_Component
!                     and then Is_Known_Unit (Parent (P))
!                   then
!                      P := Parent (P);
!                      Error_Msg_Name_3 := Chars (Selector_Name (P));
!                      Error_Msg_N -- CODEFIX
!                        ("\\missing `WITH %.%.%;`", N);
! 
!                   else
!                      Error_Msg_N -- CODEFIX
!                        ("\\missing `WITH %.%;`", N);
!                   end if;
!                end;
              end if;
  
              --  Now check for possible misspellings
--- 5995,6001 ----
                and then N = Prefix (Parent (N))
                and then Is_Known_Unit (Parent (N))
              then
!                Error_Missing_With_Of_Known_Unit (N);
              end if;
  
              --  Now check for possible misspellings
*************** package body Sem_Ch8 is
*** 5961,5981 ****
           if Is_Type (Entity (N)) then
              Set_Etype (N, Entity (N));
  
-          --  The exception to this general rule are constants associated with
-          --  discriminals of protected types because for each protected op
-          --  a new set of discriminals is internally created by the frontend
-          --  (see Exp_Ch9.Set_Discriminals), and the current decoration of the
-          --  entity pointer may have been set as part of a preanalysis, where
-          --  discriminals still reference the first subprogram or entry to be
-          --  expanded (see Expand_Protected_Body_Declarations).
- 
-          elsif Full_Analysis
-            and then Ekind (Entity (N)) = E_Constant
-            and then Present (Discriminal_Link (Entity (N)))
-            and then Is_Protected_Type (Scope (Discriminal_Link (Entity (N))))
-          then
-             goto Find_Name;
- 
           else
              declare
                 Entyp : constant Entity_Id := Etype (Entity (N));
--- 6062,6067 ----
*************** package body Sem_Ch8 is
*** 5996,6002 ****
                 --  If not that special case, then just reset the Etype
  
                 else
!                   Set_Etype (N, Etype (Entity (N)));
                 end if;
              end;
           end if;
--- 6082,6088 ----
                 --  If not that special case, then just reset the Etype
  
                 else
!                   Set_Etype (N, Entyp);
                 end if;
              end;
           end if;
*************** package body Sem_Ch8 is
*** 6015,6022 ****
           return;
        end if;
  
-       <<Find_Name>>
- 
        --  Preserve relevant elaboration-related attributes of the context which
        --  are no longer available or very expensive to recompute once analysis,
        --  resolution, and expansion are over.
--- 6101,6106 ----
*************** package body Sem_Ch8 is
*** 6909,6917 ****
                                             Standard_Standard)
                 then
                    if not Error_Posted (N) then
!                      Error_Msg_Node_2 := Selector;
!                      Error_Msg_N -- CODEFIX
!                        ("missing `WITH &.&;`", Prefix (N));
                    end if;
  
                 --  If this is a selection from a dummy package, then suppress
--- 6993,7001 ----
                                             Standard_Standard)
                 then
                    if not Error_Posted (N) then
!                      Error_Msg_NE
!                        ("& is not a visible entity of&", Prefix (N), Selector);
!                      Error_Missing_With_Of_Known_Unit (Prefix (N));
                    end if;
  
                 --  If this is a selection from a dummy package, then suppress
*************** package body Sem_Ch8 is
*** 7832,7838 ****
  
           if Is_Type (P_Type)
             and then (Has_Components (P_Type)
!                       or else (Extensions_Allowed
                                  and then not Is_Concurrent_Type (P_Type)))
             and then not Is_Overloadable (P_Name)
             and then not Is_Type (P_Name)
--- 7916,7922 ----
  
           if Is_Type (P_Type)
             and then (Has_Components (P_Type)
!                       or else (Core_Extensions_Allowed
                                  and then not Is_Concurrent_Type (P_Type)))
             and then not Is_Overloadable (P_Name)
             and then not Is_Type (P_Name)
*************** package body Sem_Ch8 is
*** 8087,8093 ****
                         ("prefixed call is only allowed for objects of a "
                          & "tagged type unless -gnatX is used", N);
  
!                      if not Extensions_Allowed
                         and then
                           Try_Object_Operation (N, Allow_Extensions => True)
                       then
--- 8171,8177 ----
                         ("prefixed call is only allowed for objects of a "
                          & "tagged type unless -gnatX is used", N);
  
!                      if not Core_Extensions_Allowed
                         and then
                           Try_Object_Operation (N, Allow_Extensions => True)
                       then
*************** package body Sem_Ch8 is
*** 8650,8656 ****
              | Name_Op_Xor
           =>
              while Id /= Priv_Id loop
!                if Valid_Boolean_Arg (Id) and then Is_Base_Type (Id) then
                    Add_Implicit_Operator (Id);
                    return True;
                 end if;
--- 8734,8743 ----
              | Name_Op_Xor
           =>
              while Id /= Priv_Id loop
!                if Is_Type (Id)
!                  and then Valid_Boolean_Arg (Id)
!                  and then Is_Base_Type (Id)
!                then
                    Add_Implicit_Operator (Id);
                    return True;
                 end if;
*************** package body Sem_Ch8 is
*** 8665,8671 ****
           =>
              while Id /= Priv_Id loop
                 if Is_Type (Id)
!                  and then not Is_Limited_Type (Id)
                   and then Is_Base_Type (Id)
                 then
                    Add_Implicit_Operator (Standard_Boolean, Id);
--- 8752,8758 ----
           =>
              while Id /= Priv_Id loop
                 if Is_Type (Id)
!                  and then Valid_Equality_Arg (Id)
                   and then Is_Base_Type (Id)
                 then
                    Add_Implicit_Operator (Standard_Boolean, Id);
*************** package body Sem_Ch8 is
*** 8683,8691 ****
              | Name_Op_Lt
           =>
              while Id /= Priv_Id loop
!                if (Is_Scalar_Type (Id)
!                     or else (Is_Array_Type (Id)
!                               and then Is_Scalar_Type (Component_Type (Id))))
                   and then Is_Base_Type (Id)
                 then
                    Add_Implicit_Operator (Standard_Boolean, Id);
--- 8770,8777 ----
              | Name_Op_Lt
           =>
              while Id /= Priv_Id loop
!                if Is_Type (Id)
!                  and then Valid_Comparison_Arg (Id)
                   and then Is_Base_Type (Id)
                 then
                    Add_Implicit_Operator (Standard_Boolean, Id);
*************** package body Sem_Ch8 is
*** 9140,9148 ****
--- 9226,9259 ----
       (Clause1 : Entity_Id;
        Clause2 : Entity_Id) return Entity_Id
     is
+       function Determine_Package_Scope (Clause : Node_Id) return Entity_Id;
+       --  Given a use clause, determine which package it belongs to
+ 
+       -----------------------------
+       -- Determine_Package_Scope --
+       -----------------------------
+ 
+       function Determine_Package_Scope (Clause : Node_Id) return Entity_Id is
+       begin
+          --  Check if the clause appears in the context area
+ 
+          --  Note we cannot employ Enclosing_Packge for use clauses within
+          --  context clauses since they are not actually "enclosed."
+ 
+          if Nkind (Parent (Clause)) = N_Compilation_Unit then
+             return Entity_Of_Unit (Unit (Parent (Clause)));
+          end if;
+ 
+          --  Otherwise, obtain the enclosing package normally
+ 
+          return Enclosing_Package (Clause);
+       end Determine_Package_Scope;
+ 
        Scope1 : Entity_Id;
        Scope2 : Entity_Id;
  
+    --  Start of processing for Most_Descendant_Use_Clause
+ 
     begin
        if Clause1 = Clause2 then
           return Clause1;
*************** package body Sem_Ch8 is
*** 9151,9167 ****
        --  We determine which one is the most descendant by the scope distance
        --  to the ultimate parent unit.
  
!       Scope1 := Entity_Of_Unit (Unit (Parent (Clause1)));
!       Scope2 := Entity_Of_Unit (Unit (Parent (Clause2)));
        while Scope1 /= Standard_Standard
          and then Scope2 /= Standard_Standard
        loop
           Scope1 := Scope (Scope1);
           Scope2 := Scope (Scope2);
  
!          if not Present (Scope1) then
              return Clause1;
!          elsif not Present (Scope2) then
              return Clause2;
           end if;
        end loop;
--- 9262,9278 ----
        --  We determine which one is the most descendant by the scope distance
        --  to the ultimate parent unit.
  
!       Scope1 := Determine_Package_Scope (Clause1);
!       Scope2 := Determine_Package_Scope (Clause2);
        while Scope1 /= Standard_Standard
          and then Scope2 /= Standard_Standard
        loop
           Scope1 := Scope (Scope1);
           Scope2 := Scope (Scope2);
  
!          if No (Scope1) then
              return Clause1;
!          elsif No (Scope2) then
              return Clause2;
           end if;
        end loop;
*************** package body Sem_Ch8 is
*** 9604,9613 ****
        --  we saved (we use Remove, since this list will not be used again).
  
        loop
!          Elmt := Last_Elmt (List);
           exit when Elmt = No_Elmt;
           Set_Is_Immediately_Visible (Node (Elmt));
!          Remove_Last_Elmt (List);
        end loop;
  
        --  Restore use clauses
--- 9715,9724 ----
        --  we saved (we use Remove, since this list will not be used again).
  
        loop
!          Elmt := First_Elmt (List);
           exit when Elmt = No_Elmt;
           Set_Is_Immediately_Visible (Node (Elmt));
!          Remove_Elmt (List, Elmt);
        end loop;
  
        --  Restore use clauses
*************** package body Sem_Ch8 is
*** 9718,9739 ****
        Decl : Node_Id;
  
     begin
!       if Present (L) then
!          Decl := First (L);
!          while Present (Decl) loop
!             if Nkind (Decl) = N_Use_Package_Clause then
!                Chain_Use_Clause (Decl);
!                Use_One_Package (Decl, Name (Decl));
  
!             elsif Nkind (Decl) = N_Use_Type_Clause then
!                Chain_Use_Clause (Decl);
!                Use_One_Type (Subtype_Mark (Decl));
  
!             end if;
  
!             Next (Decl);
!          end loop;
!       end if;
     end Set_Use;
  
     -----------------------------
--- 9829,9848 ----
        Decl : Node_Id;
  
     begin
!       Decl := First (L);
!       while Present (Decl) loop
!          if Nkind (Decl) = N_Use_Package_Clause then
!             Chain_Use_Clause (Decl);
!             Use_One_Package (Decl, Name (Decl));
  
!          elsif Nkind (Decl) = N_Use_Type_Clause then
!             Chain_Use_Clause (Decl);
!             Use_One_Type (Subtype_Mark (Decl));
  
!          end if;
  
!          Next (Decl);
!       end loop;
     end Set_Use;
  
     -----------------------------
*************** package body Sem_Ch8 is
*** 10213,10218 ****
--- 10322,10332 ----
  
                    --  Potentially use-visible entity remains hidden
  
+                   if Warn_On_Hiding then
+                      Warn_On_Hiding_Entity (N, Hidden => Id, Visible => Prev,
+                                             On_Use_Clause => True);
+                   end if;
+ 
                    goto Next_Usable_Entity;
  
                 --  A use clause within an instance hides outer global entities,
*************** package body Sem_Ch8 is
*** 10509,10528 ****
        --  even if it is redundant at the place of the instantiation.
  
        elsif Redundant_Use (Id) then
- 
-          --  We must avoid incorrectly setting the Current_Use_Clause when we
-          --  are working with a redundant clause that has already been linked
-          --  in the Prev_Use_Clause chain, otherwise the chain will break.
- 
-          if Present (Current_Use_Clause (T))
-            and then Present (Prev_Use_Clause (Current_Use_Clause (T)))
-            and then Parent (Id) = Prev_Use_Clause (Current_Use_Clause (T))
-          then
-             null;
-          else
-             Set_Current_Use_Clause (T, Parent (Id));
-          end if;
- 
           Set_Used_Operations (Parent (Id), New_Elmt_List);
  
        --  If the subtype mark designates a subtype in a different package,
--- 10623,10628 ----
*************** package body Sem_Ch8 is
*** 10627,10747 ****
                 --  Start of processing for Use_Clause_Known
  
                 begin
!                   --  If both current use_type_clause and the use_type_clause
!                   --  for the type are at the compilation unit level, one of
!                   --  the units must be an ancestor of the other, and the
!                   --  warning belongs on the descendant.
  
!                   if Nkind (Parent (Clause1)) = N_Compilation_Unit
!                        and then
!                      Nkind (Parent (Clause2)) = N_Compilation_Unit
!                   then
!                      --  If the unit is a subprogram body that acts as spec,
!                      --  the context clause is shared with the constructed
!                      --  subprogram spec. Clearly there is no redundancy.
  
!                      if Clause1 = Clause2 then
!                         return;
!                      end if;
  
!                      Unit1 := Unit (Parent (Clause1));
!                      Unit2 := Unit (Parent (Clause2));
  
!                      --  If both clauses are on same unit, or one is the body
!                      --  of the other, or one of them is in a subunit, report
!                      --  redundancy on the later one.
  
!                      if Unit1 = Unit2 or else Nkind (Unit1) = N_Subunit then
!                         Error_Msg_Sloc := Sloc (Current_Use_Clause (T));
!                         Error_Msg_NE -- CODEFIX
!                           ("& is already use-visible through previous "
!                            & "use_type_clause #??", Clause1, T);
!                         return;
  
!                      elsif Nkind (Unit2) in N_Package_Body | N_Subprogram_Body
!                        and then Nkind (Unit1) /= Nkind (Unit2)
!                        and then Nkind (Unit1) /= N_Subunit
!                      then
!                         Error_Msg_Sloc := Sloc (Clause1);
!                         Error_Msg_NE -- CODEFIX
!                           ("& is already use-visible through previous "
!                            & "use_type_clause #??", Current_Use_Clause (T), T);
!                         return;
!                      end if;
  
!                      --  There is a redundant use_type_clause in a child unit.
!                      --  Determine which of the units is more deeply nested.
!                      --  If a unit is a package instance, retrieve the entity
!                      --  and its scope from the instance spec.
  
!                      Ent1 := Entity_Of_Unit (Unit1);
!                      Ent2 := Entity_Of_Unit (Unit2);
  
!                      if Scope (Ent2) = Standard_Standard then
!                         Error_Msg_Sloc := Sloc (Current_Use_Clause (T));
!                         Err_No := Clause1;
  
!                      elsif Scope (Ent1) = Standard_Standard then
!                         Error_Msg_Sloc := Sloc (Id);
!                         Err_No := Clause2;
  
!                      --  If both units are child units, we determine which one
!                      --  is the descendant by the scope distance to the
!                      --  ultimate parent unit.
  
!                      else
!                         declare
!                            S1 : Entity_Id;
!                            S2 : Entity_Id;
  
!                         begin
!                            S1 := Scope (Ent1);
!                            S2 := Scope (Ent2);
!                            while Present (S1)
!                              and then Present (S2)
!                              and then S1 /= Standard_Standard
!                              and then S2 /= Standard_Standard
!                            loop
!                               S1 := Scope (S1);
!                               S2 := Scope (S2);
!                            end loop;
  
!                            if S1 = Standard_Standard then
!                               Error_Msg_Sloc := Sloc (Id);
!                               Err_No := Clause2;
!                            else
!                               Error_Msg_Sloc := Sloc (Current_Use_Clause (T));
!                               Err_No := Clause1;
!                            end if;
!                         end;
!                      end if;
  
!                      if Parent (Id) /= Err_No then
!                         if Most_Descendant_Use_Clause
!                              (Err_No, Parent (Id)) = Parent (Id)
!                         then
!                            Error_Msg_Sloc := Sloc (Err_No);
!                            Err_No := Parent (Id);
                          end if;
  
!                         Error_Msg_NE -- CODEFIX
!                           ("& is already use-visible through previous "
!                            & "use_type_clause #??", Err_No, Id);
                       end if;
  
-                   --  Case where current use_type_clause and use_type_clause
-                   --  for the type are not both at the compilation unit level.
-                   --  In this case we don't have location information.
- 
-                   else
                       Error_Msg_NE -- CODEFIX
                         ("& is already use-visible through previous "
!                         & "use_type_clause??", Id, T);
                    end if;
                 end Use_Clause_Known;
  
!             --  Here if Current_Use_Clause is not set for T, another case where
!             --  we do not have the location information available.
  
              else
                 Error_Msg_NE -- CODEFIX
--- 10727,10835 ----
                 --  Start of processing for Use_Clause_Known
  
                 begin
!                   --  If the unit is a subprogram body that acts as spec, the
!                   --  context clause is shared with the constructed subprogram
!                   --  spec. Clearly there is no redundancy.
  
!                   if Clause1 = Clause2 then
!                      return;
!                   end if;
  
!                   Unit1 := Unit (Enclosing_Comp_Unit_Node (Clause1));
!                   Unit2 := Unit (Enclosing_Comp_Unit_Node (Clause2));
  
!                   --  If both clauses are on same unit, or one is the body of
!                   --  the other, or one of them is in a subunit, report
!                   --  redundancy on the later one.
  
!                   if Unit1 = Unit2
!                     or else Nkind (Unit1) = N_Subunit
!                     or else
!                       (Nkind (Unit2) in N_Package_Body | N_Subprogram_Body
!                         and then Nkind (Unit1) /= Nkind (Unit2)
!                         and then Nkind (Unit1) /= N_Subunit)
!                   then
!                      Error_Msg_Sloc := Sloc (Clause1);
!                      Error_Msg_NE -- CODEFIX
!                        ("& is already use-visible through previous "
!                         & "use_type_clause #??", Clause2, T);
!                      return;
!                   end if;
  
!                   --  If there is a redundant use_type_clause in a child unit
!                   --  determine which of the units is more deeply nested. If a
!                   --  unit is a package instance, retrieve the entity and its
!                   --  scope from the instance spec.
  
!                   Ent1 := Entity_Of_Unit (Unit1);
!                   Ent2 := Entity_Of_Unit (Unit2);
  
!                   --  When the scope of both units' entities are
!                   --  Standard_Standard then neither Unit1 or Unit2 are child
!                   --  units - so return in that case.
  
!                   if Scope (Ent1) = Standard_Standard
!                     and then Scope (Ent2) = Standard_Standard
!                   then
!                      return;
  
!                   --  Otherwise, determine if one of the units is not a child
  
!                   elsif Scope (Ent2) = Standard_Standard then
!                      Error_Msg_Sloc := Sloc (Clause2);
!                      Err_No := Clause1;
  
!                   elsif Scope (Ent1) = Standard_Standard then
!                      Error_Msg_Sloc := Sloc (Id);
!                      Err_No := Clause2;
  
!                   --  If both units are child units, we determine which one is
!                   --  the descendant by the scope distance to the ultimate
!                   --  parent unit.
  
!                   else
!                      declare
!                         S1 : Entity_Id;
!                         S2 : Entity_Id;
  
!                      begin
!                         S1 := Scope (Ent1);
!                         S2 := Scope (Ent2);
!                         while Present (S1)
!                           and then Present (S2)
!                           and then S1 /= Standard_Standard
!                           and then S2 /= Standard_Standard
!                         loop
!                            S1 := Scope (S1);
!                            S2 := Scope (S2);
!                         end loop;
  
!                         if S1 = Standard_Standard then
!                            Error_Msg_Sloc := Sloc (Id);
!                            Err_No := Clause2;
!                         else
!                            Error_Msg_Sloc := Sloc (Clause2);
!                            Err_No := Clause1;
                          end if;
+                      end;
+                   end if;
  
!                   if Parent (Id) /= Err_No then
!                      if Most_Descendant_Use_Clause
!                           (Err_No, Parent (Id)) = Parent (Id)
!                      then
!                         Error_Msg_Sloc := Sloc (Err_No);
!                         Err_No := Parent (Id);
                       end if;
  
                       Error_Msg_NE -- CODEFIX
                         ("& is already use-visible through previous "
!                         & "use_type_clause #??", Err_No, Id);
                    end if;
                 end Use_Clause_Known;
  
!             --  Here Current_Use_Clause is not set for T, so we do not have the
!             --  location information available.
  
              else
                 Error_Msg_NE -- CODEFIX
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch8.ads gcc-13.1.0/gcc/ada/sem_ch8.ads
*** gcc-12.2.0/gcc/ada/sem_ch8.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch8.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch9.adb gcc-13.1.0/gcc/ada/sem_ch9.adb
*** gcc-12.2.0/gcc/ada/sem_ch9.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch9.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,33 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
  with Contracts;      use Contracts;
- with Debug;          use Debug;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
--- 23,33 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
  with Contracts;      use Contracts;
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
*************** with Sinfo;          use Sinfo;
*** 65,70 ****
--- 65,71 ----
  with Sinfo.Nodes;    use Sinfo.Nodes;
  with Sinfo.Utils;    use Sinfo.Utils;
  with Style;
+ with Targparm;       use Targparm;
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
  
*************** package body Sem_Ch9 is
*** 140,153 ****
        pragma Assert
          (Nkind (N) in N_Protected_Type_Declaration | N_Protected_Body);
  
-       --  The lock-free implementation is currently enabled through a debug
-       --  flag. When Lock_Free_Given is True, an aspect Lock_Free forces the
-       --  lock-free implementation. In that case, the debug flag is not needed.
- 
-       if not Lock_Free_Given and then not Debug_Flag_9 then
-          return False;
-       end if;
- 
        --  Get the number of errors detected by the compiler so far
  
        if Lock_Free_Given then
--- 141,146 ----
*************** package body Sem_Ch9 is
*** 186,193 ****
                 elsif Nkind (Decl) = N_Subprogram_Declaration
                   and then
                     Nkind (Specification (Decl)) = N_Procedure_Specification
-                  and then
-                    Present (Parameter_Specifications (Specification (Decl)))
                 then
                    declare
                       Par_Specs : constant List_Id   :=
--- 179,184 ----
*************** package body Sem_Ch9 is
*** 215,220 ****
--- 206,232 ----
                          Next (Par);
                       end loop;
                    end;
+ 
+                elsif Nkind (Decl) = N_Subprogram_Declaration
+                  and then
+                    Nkind (Specification (Decl)) = N_Function_Specification
+                  and then
+                    Nkind (Result_Definition (Specification (Decl)))
+                      in N_Has_Entity
+                  and then
+                    Needs_Secondary_Stack
+                      (Entity (Result_Definition (Specification (Decl))))
+                then
+                   if Lock_Free_Given then
+                      --  Message text is imprecise; "unconstrained" is
+                      --  similar to "needs secondary stack" but not identical.
+                      Error_Msg_N
+                        ("unconstrained function result subtype not allowed "
+                         & "when Lock_Free given",
+                         Decl);
+                   else
+                      return False;
+                   end if;
                 end if;
  
                 --  Examine private declarations after visible declarations
*************** package body Sem_Ch9 is
*** 254,264 ****
              function Satisfies_Lock_Free_Requirements
                (Sub_Body : Node_Id) return Boolean
              is
-                Is_Procedure : constant Boolean    :=
-                                 Ekind (Corresponding_Spec (Sub_Body)) =
-                                   E_Procedure;
-                --  Indicates if Sub_Body is a procedure body
- 
                 Comp : Entity_Id := Empty;
                 --  Track the current component which the body references
  
--- 266,271 ----
*************** package body Sem_Ch9 is
*** 338,566 ****
                 --  Start of processing for Check_Node
  
                 begin
!                   if Is_Procedure then
!                      --  Allocators restricted
! 
!                      if Kind = N_Allocator then
!                         if Lock_Free_Given then
!                            Error_Msg_N ("allocator not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
  
!                      --  Aspects Address, Export and Import restricted
  
!                      elsif Kind = N_Aspect_Specification then
!                         declare
!                            Asp_Name : constant Name_Id   :=
!                                         Chars (Identifier (N));
!                            Asp_Id   : constant Aspect_Id :=
!                                         Get_Aspect_Id (Asp_Name);
  
!                         begin
!                            if Asp_Id = Aspect_Address or else
!                               Asp_Id = Aspect_Export  or else
!                               Asp_Id = Aspect_Import
!                            then
!                               Error_Msg_Name_1 := Asp_Name;
  
!                               if Lock_Free_Given then
!                                  Error_Msg_N ("aspect% not allowed", N);
!                                  return Skip;
!                               end if;
  
!                               return Abandon;
                             end if;
-                         end;
  
!                      --  Address attribute definition clause restricted
  
!                      elsif Kind = N_Attribute_Definition_Clause
!                        and then Get_Attribute_Id (Chars (N)) =
!                                   Attribute_Address
!                      then
!                         Error_Msg_Name_1 := Chars (N);
  
!                         if Lock_Free_Given then
!                            if From_Aspect_Specification (N) then
!                               Error_Msg_N ("aspect% not allowed", N);
!                            else
!                               Error_Msg_N ("% clause not allowed", N);
!                            end if;
  
!                            return Skip;
                          end if;
  
!                         return Abandon;
  
!                      --  Non-static Attribute references that don't denote a
!                      --  static function restricted.
  
!                      elsif Kind = N_Attribute_Reference
!                        and then not Is_OK_Static_Expression (N)
!                        and then not Is_Static_Function (N)
!                      then
!                         if Lock_Free_Given then
!                            Error_Msg_N
!                              ("non-static attribute reference not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
  
!                      --  Delay statements restricted
  
!                      elsif Kind in N_Delay_Statement then
!                         if Lock_Free_Given then
!                            Error_Msg_N ("delay not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
  
!                      --  Dereferences of access values restricted
  
!                      elsif Kind = N_Explicit_Dereference
!                        or else (Kind = N_Selected_Component
!                                  and then Is_Access_Type (Etype (Prefix (N))))
!                      then
!                         if Lock_Free_Given then
!                            Error_Msg_N
!                              ("dereference of access value not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
  
!                      --  Non-static function calls restricted
  
!                      elsif Kind = N_Function_Call
!                        and then not Is_OK_Static_Expression (N)
!                      then
!                         if Lock_Free_Given then
!                            Error_Msg_N
!                              ("non-static function call not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
  
!                      --  Goto statements restricted
  
!                      elsif Kind = N_Goto_Statement then
!                         if Lock_Free_Given then
!                            Error_Msg_N ("goto statement not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
  
!                      --  References
  
!                      elsif Kind = N_Identifier
!                        and then Present (Entity (N))
!                      then
!                         declare
!                            Id     : constant Entity_Id := Entity (N);
!                            Sub_Id : constant Entity_Id :=
!                                       Corresponding_Spec (Sub_Body);
  
!                         begin
!                            --  Prohibit references to non-constant entities
!                            --  outside the protected subprogram scope.
  
!                            if Ekind (Id) in Assignable_Kind
!                              and then not
!                                Scope_Within_Or_Same (Scope (Id), Sub_Id)
!                              and then not
!                                Scope_Within_Or_Same
!                                  (Scope (Id),
!                                   Protected_Body_Subprogram (Sub_Id))
!                            then
!                               if Lock_Free_Given then
!                                  Error_Msg_NE
!                                    ("reference to global variable& not " &
!                                     "allowed", N, Id);
!                                  return Skip;
!                               end if;
  
!                               return Abandon;
                             end if;
-                         end;
  
!                      --  Loop statements restricted
! 
!                      elsif Kind = N_Loop_Statement then
!                         if Lock_Free_Given then
!                            Error_Msg_N ("loop not allowed", N);
!                            return Skip;
                          end if;
  
!                         return Abandon;
  
!                      --  Pragmas Export and Import restricted
  
!                      elsif Kind = N_Pragma then
!                         declare
!                            Prag_Name : constant Name_Id   :=
!                              Pragma_Name (N);
!                            Prag_Id   : constant Pragma_Id :=
!                              Get_Pragma_Id (Prag_Name);
  
!                         begin
!                            if Prag_Id = Pragma_Export
!                              or else Prag_Id = Pragma_Import
!                            then
!                               Error_Msg_Name_1 := Prag_Name;
  
!                               if Lock_Free_Given then
!                                  if From_Aspect_Specification (N) then
!                                     Error_Msg_N ("aspect% not allowed", N);
!                                  else
!                                     Error_Msg_N ("pragma% not allowed", N);
!                                  end if;
  
!                                  return Skip;
                                end if;
  
!                               return Abandon;
                             end if;
-                         end;
- 
-                      --  Procedure call statements restricted
  
!                      elsif Kind = N_Procedure_Call_Statement then
!                         if Lock_Free_Given then
!                            Error_Msg_N ("procedure call not allowed", N);
!                            return Skip;
                          end if;
  
!                         return Abandon;
  
!                      --  Quantified expression restricted. Note that we have
!                      --  to check the original node as well, since at this
!                      --  stage, it may have been rewritten.
  
!                      elsif Kind = N_Quantified_Expression
!                        or else
!                          Nkind (Original_Node (N)) = N_Quantified_Expression
!                      then
!                         if Lock_Free_Given then
!                            Error_Msg_N
!                              ("quantified expression not allowed", N);
!                            return Skip;
!                         end if;
  
!                         return Abandon;
                       end if;
                    end if;
  
                    --  A protected subprogram (function or procedure) may
                    --  reference only one component of the protected type, plus
                    --  the type of the component must support atomic operation.
  
!                   if Kind = N_Identifier
                      and then Present (Entity (N))
                    then
                       declare
--- 345,580 ----
                 --  Start of processing for Check_Node
  
                 begin
!                   --  Allocators restricted
  
!                   if Kind = N_Allocator then
!                      if Lock_Free_Given then
!                         Error_Msg_N ("allocator not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Aspects Address, Export and Import restricted
  
!                   elsif Kind = N_Aspect_Specification then
!                      declare
!                         Asp_Name : constant Name_Id   :=
!                                      Chars (Identifier (N));
!                         Asp_Id   : constant Aspect_Id :=
!                                      Get_Aspect_Id (Asp_Name);
  
!                      begin
!                         if Asp_Id = Aspect_Address or else
!                            Asp_Id = Aspect_Export  or else
!                            Asp_Id = Aspect_Import
!                         then
!                            Error_Msg_Name_1 := Asp_Name;
  
!                            if Lock_Free_Given then
!                               Error_Msg_N ("aspect% not allowed", N);
!                               return Skip;
                             end if;
  
!                            return Abandon;
!                         end if;
!                      end;
  
!                   --  Address attribute definition clause restricted
  
!                   elsif Kind = N_Attribute_Definition_Clause
!                     and then Get_Attribute_Id (Chars (N)) =
!                                Attribute_Address
!                   then
!                      Error_Msg_Name_1 := Chars (N);
  
!                      if Lock_Free_Given then
!                         if From_Aspect_Specification (N) then
!                            Error_Msg_N ("aspect% not allowed", N);
!                         else
!                            Error_Msg_N ("% clause not allowed", N);
                          end if;
  
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Non-static Attribute references that don't denote a
!                   --  static function restricted.
  
!                   elsif Kind = N_Attribute_Reference
!                     and then not Is_OK_Static_Expression (N)
!                     and then not Is_Static_Function (N)
!                   then
!                      if Lock_Free_Given then
!                         Error_Msg_N
!                           ("non-static attribute reference not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Delay statements restricted
  
!                   elsif Kind in N_Delay_Statement then
!                      if Lock_Free_Given then
!                         Error_Msg_N ("delay not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Dereferences of access values restricted
  
!                   elsif Kind = N_Explicit_Dereference
!                     or else (Kind = N_Selected_Component
!                               and then Is_Access_Type (Etype (Prefix (N))))
!                   then
!                      if Lock_Free_Given then
!                         Error_Msg_N
!                           ("dereference of access value not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Non-static function calls restricted
  
!                   elsif Kind = N_Function_Call
!                     and then not Is_OK_Static_Expression (N)
!                   then
!                      if Lock_Free_Given then
!                         Error_Msg_N
!                           ("non-static function call not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Goto statements restricted
  
!                   elsif Kind in N_Goto_Statement | N_Goto_When_Statement then
!                      if Lock_Free_Given then
!                         Error_Msg_N ("goto statement not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  References
  
!                   elsif Kind in N_Identifier | N_Expanded_Name
!                     and then Present (Entity (N))
!                   then
!                      declare
!                         Id     : constant Entity_Id := Entity (N);
!                         Sub_Id : constant Entity_Id :=
!                                    Corresponding_Spec (Sub_Body);
  
!                      begin
!                         --  Prohibit references to non-constant entities
!                         --  outside the protected subprogram scope.
!                         --
!                         --  References to variables in System.Scalar_Values
!                         --  generated because of pragma Initialize_Scalars are
!                         --  allowed, because once those variables are
!                         --  initialized by the binder-generated code, they
!                         --  behave like constants.
  
!                         if Is_Assignable (Id)
!                           and then not
!                             Scope_Within_Or_Same (Scope (Id), Sub_Id)
!                           and then not
!                             Scope_Within_Or_Same
!                               (Scope (Id),
!                                Protected_Body_Subprogram (Sub_Id))
!                           and then not
!                             (Is_RTU (Scope (Id), System_Scalar_Values)
!                                and then not Comes_From_Source (N))
!                         then
!                            if Lock_Free_Given then
!                               Error_Msg_NE
!                                 ("reference to global variable& not allowed",
!                                  N, Id);
!                               return Skip;
                             end if;
  
!                            return Abandon;
                          end if;
+                      end;
  
!                   --  Loop statements restricted
  
!                   elsif Kind = N_Loop_Statement then
!                      if Lock_Free_Given then
!                         Error_Msg_N ("loop not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Pragmas Export and Import restricted
  
!                   elsif Kind = N_Pragma then
!                      declare
!                         Prag_Name : constant Name_Id   :=
!                           Pragma_Name (N);
!                         Prag_Id   : constant Pragma_Id :=
!                           Get_Pragma_Id (Prag_Name);
  
!                      begin
!                         if Prag_Id = Pragma_Export
!                           or else Prag_Id = Pragma_Import
!                         then
!                            Error_Msg_Name_1 := Prag_Name;
! 
!                            if Lock_Free_Given then
!                               if From_Aspect_Specification (N) then
!                                  Error_Msg_N ("aspect% not allowed", N);
!                               else
!                                  Error_Msg_N ("pragma% not allowed", N);
                                end if;
  
!                               return Skip;
                             end if;
  
!                            return Abandon;
                          end if;
+                      end;
  
!                   --  Procedure call statements restricted
  
!                   elsif Kind = N_Procedure_Call_Statement then
!                      if Lock_Free_Given then
!                         Error_Msg_N ("procedure call not allowed", N);
!                         return Skip;
!                      end if;
  
!                      return Abandon;
  
!                   --  Quantified expression restricted. Note that we have
!                   --  to check the original node as well, since at this
!                   --  stage, it may have been rewritten.
! 
!                   elsif Kind = N_Quantified_Expression
!                     or else
!                       Nkind (Original_Node (N)) = N_Quantified_Expression
!                   then
!                      if Lock_Free_Given then
!                         Error_Msg_N
!                           ("quantified expression not allowed", N);
!                         return Skip;
                       end if;
+ 
+                      return Abandon;
                    end if;
  
                    --  A protected subprogram (function or procedure) may
                    --  reference only one component of the protected type, plus
                    --  the type of the component must support atomic operation.
  
!                   if Kind in N_Identifier | N_Expanded_Name
                      and then Present (Entity (N))
                    then
                       declare
*************** package body Sem_Ch9 is
*** 644,649 ****
--- 658,692 ----
              --  Start of processing for Satisfies_Lock_Free_Requirements
  
              begin
+                if not Support_Atomic_Primitives_On_Target then
+                   if Lock_Free_Given then
+                      Error_Msg_N
+                        ("Lock_Free aspect requires target support for "
+                           & "atomic primitives", N);
+                   end if;
+                   return False;
+                end if;
+ 
+                --  Deal with case where Ceiling_Locking locking policy is
+                --  in effect.
+ 
+                if Locking_Policy = 'C' then
+                   if Lock_Free_Given then
+                      --  Explicit Lock_Free aspect spec overrides
+                      --  Ceiling_Locking so we generate a warning.
+ 
+                      Error_Msg_N
+                        ("Lock_Free aspect specification overrides "
+                           & "Ceiling_Locking locking policy??", N);
+                   else
+                      --  If Ceiling_Locking locking policy is in effect, then
+                      --  Lock_Free can be explicitly specified but it is
+                      --  never the default.
+ 
+                      return False;
+                   end if;
+                end if;
+ 
                 --  Get the number of errors detected by the compiler so far
  
                 if Lock_Free_Given then
*************** package body Sem_Ch9 is
*** 2293,2298 ****
--- 2336,2399 ----
     ---------------------
  
     procedure Analyze_Requeue (N : Node_Id) is
+ 
+       procedure Check_Wrong_Attribute_In_Postconditions
+         (Entry_Id   : Entity_Id;
+          Error_Node : Node_Id);
+       --  Check that the requeue target Entry_Id does not have an specific or
+       --  class-wide postcondition that references an Old or Index attribute.
+ 
+       ---------------------------------------------
+       -- Check_Wrong_Attribute_In_Postconditions --
+       ---------------------------------------------
+ 
+       procedure Check_Wrong_Attribute_In_Postconditions
+         (Entry_Id   : Entity_Id;
+          Error_Node : Node_Id)
+       is
+          function Check_Node (N : Node_Id) return Traverse_Result;
+          --  Check that N is not a reference to attribute Index or Old; report
+          --  an error otherwise.
+ 
+          ----------------
+          -- Check_Node --
+          ----------------
+ 
+          function Check_Node (N : Node_Id) return Traverse_Result is
+          begin
+             if Nkind (N) = N_Attribute_Reference
+               and then Attribute_Name (N) in Name_Index
+                                            | Name_Old
+             then
+                Error_Msg_Name_1 := Attribute_Name (N);
+                Error_Msg_N
+                  ("target of requeue must not have references to attribute % "
+                   & "in postcondition",
+                   Error_Node);
+             end if;
+ 
+             return OK;
+          end Check_Node;
+ 
+          procedure Check_Attr_Refs is new Traverse_Proc (Check_Node);
+ 
+          --  Local variables
+ 
+          Prag : Node_Id;
+       begin
+          Prag := Pre_Post_Conditions (Contract (Entry_Id));
+ 
+          while Present (Prag) loop
+             if Pragma_Name (Prag) = Name_Postcondition then
+                Check_Attr_Refs (First (Pragma_Argument_Associations (Prag)));
+             end if;
+ 
+             Prag := Next_Pragma (Prag);
+          end loop;
+       end Check_Wrong_Attribute_In_Postconditions;
+ 
+       --  Local variables
+ 
        Count       : Natural := 0;
        Entry_Name  : Node_Id := Name (N);
        Entry_Id    : Entity_Id;
*************** package body Sem_Ch9 is
*** 2305,2310 ****
--- 2406,2413 ----
        Outer_Ent   : Entity_Id;
        Synch_Type  : Entity_Id := Empty;
  
+    --  Start of processing for Analyze_Requeue
+ 
     begin
        --  Preserve relevant elaboration-related attributes of the context which
        --  are no longer available or very expensive to recompute once analysis,
*************** package body Sem_Ch9 is
*** 2588,2593 ****
--- 2691,2708 ----
             ("target protected object of requeue must be a variable", N);
        end if;
  
+       --  Ada 2022 (AI12-0143): The requeue target shall not have an
+       --  applicable specific or class-wide postcondition which includes
+       --  an Old or Index attribute reference.
+ 
+       if Ekind (Entry_Id) = E_Entry_Family
+         and then Present (Contract (Entry_Id))
+       then
+          Check_Wrong_Attribute_In_Postconditions
+            (Entry_Id   => Entry_Id,
+             Error_Node => Entry_Name);
+       end if;
+ 
        --  A requeue statement is treated as a call for purposes of ABE checks
        --  and diagnostics. Annotate the tree by creating a call marker in case
        --  the requeue statement is transformed by expansion.
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_ch9.ads gcc-13.1.0/gcc/ada/sem_ch9.ads
*** gcc-12.2.0/gcc/ada/sem_ch9.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_ch9.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_dim.adb gcc-13.1.0/gcc/ada/sem_dim.adb
*** gcc-12.2.0/gcc/ada/sem_dim.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_dim.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Dim is
*** 1316,1322 ****
  
           --  Look at the named components right after the positional components
  
!          if not Present (Next (Comp))
             and then List_Containing (Comp) = Exps
           then
              Comp := First (Comp_Ass);
--- 1316,1322 ----
  
           --  Look at the named components right after the positional components
  
!          if No (Next (Comp))
             and then List_Containing (Comp) = Exps
           then
              Comp := First (Comp_Ass);
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_dim.ads gcc-13.1.0/gcc/ada/sem_dim.ads
*** gcc-12.2.0/gcc/ada/sem_dim.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_dim.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_disp.adb gcc-13.1.0/gcc/ada/sem_disp.adb
*** gcc-12.2.0/gcc/ada/sem_disp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_disp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Disp is
*** 296,301 ****
--- 296,307 ----
        Ctrl_Type : Entity_Id;
  
     begin
+       --  We skip the check for thunks
+ 
+       if Is_Thunk (Subp) then
+          return;
+       end if;
+ 
        Formal := First_Formal (Subp);
        while Present (Formal) loop
           Ctrl_Type := Check_Controlling_Type (Etype (Formal), Subp);
*************** package body Sem_Disp is
*** 502,513 ****
           return Empty;
  
        --  The dispatching type and the primitive operation must be defined in
!       --  the same scope, except in the case of internal operations and formal
!       --  abstract subprograms.
  
!       elsif ((Scope (Subp) = Scope (Tagged_Type) or else Is_Internal (Subp))
!                and then (not Is_Generic_Type (Tagged_Type)
!                           or else not Comes_From_Source (Subp)))
          or else
            (Is_Formal_Subprogram (Subp) and then Is_Abstract_Subprogram (Subp))
          or else
--- 508,518 ----
           return Empty;
  
        --  The dispatching type and the primitive operation must be defined in
!       --  the same scope, except in the case of abstract formal subprograms.
  
!       elsif (Scope (Subp) = Scope (Tagged_Type)
!               and then (not Is_Generic_Type (Tagged_Type)
!                          or else not Comes_From_Source (Subp)))
          or else
            (Is_Formal_Subprogram (Subp) and then Is_Abstract_Subprogram (Subp))
          or else
*************** package body Sem_Disp is
*** 535,542 ****
        Control                : Node_Id := Empty;
        Func                   : Entity_Id;
        Subp_Entity            : Entity_Id;
!       Indeterm_Ancestor_Call : Boolean := False;
!       Indeterm_Ctrl_Type     : Entity_Id := Empty; -- init to avoid warning
  
        Static_Tag : Node_Id := Empty;
        --  If a controlling formal has a statically tagged actual, the tag of
--- 540,549 ----
        Control                : Node_Id := Empty;
        Func                   : Entity_Id;
        Subp_Entity            : Entity_Id;
! 
!       Indeterm_Ctrl_Type : Entity_Id := Empty;
!       --  Type of a controlling formal whose actual is a tag-indeterminate call
!       --  whose result type is different from, but is an ancestor of, the type.
  
        Static_Tag : Node_Id := Empty;
        --  If a controlling formal has a statically tagged actual, the tag of
*************** package body Sem_Disp is
*** 566,572 ****
           --  when it is user-defined.
  
           if Is_Predefined_Dispatching_Operation (Subp_Entity)
!            and then not Is_User_Defined_Equality (Subp_Entity)
           then
              return;
           end if;
--- 573,582 ----
           --  when it is user-defined.
  
           if Is_Predefined_Dispatching_Operation (Subp_Entity)
!            and then not (Is_User_Defined_Equality (Subp_Entity)
!                           and then Comes_From_Source (Subp_Entity)
!                           and then Nkind (Parent (Subp_Entity)) =
!                                                       N_Function_Specification)
           then
              return;
           end if;
*************** package body Sem_Disp is
*** 748,761 ****
  
              elsif Is_Subprogram (Scop)
                and then not Is_Tag_Indeterminate (N)
!               and then In_Pre_Post_Condition (Call, Class_Wide_Only => True)
  
!               --  The tagged type associated with the called subprogram must be
!               --  the same as that of the subprogram with a class-wide aspect.
  
!               and then Is_Dispatching_Operation (Scop)
!               and then
!                 Find_Dispatching_Type (Subp) = Find_Dispatching_Type (Scop)
              then
                 null;
  
--- 758,779 ----
  
              elsif Is_Subprogram (Scop)
                and then not Is_Tag_Indeterminate (N)
!               and then
!                --  The context is an internally built helper or an indirect
!                --  call wrapper that handles class-wide preconditions
!                  (Present (Class_Preconditions_Subprogram (Scop))
  
!                --  ... or the context is a class-wide pre/postcondition.
!                    or else
!                      (In_Pre_Post_Condition (Call, Class_Wide_Only => True)
  
!                        --  The tagged type associated with the called
!                        --  subprogram must be the same as that of the
!                        --  subprogram with a class-wide aspect.
! 
!                        and then Is_Dispatching_Operation (Scop)
!                        and then Find_Dispatching_Type (Subp)
!                                   = Find_Dispatching_Type (Scop)))
              then
                 null;
  
*************** package body Sem_Disp is
*** 919,926 ****
                and then Base_Type (Etype (Actual)) /= Base_Type (Etype (Formal))
                and then Is_Ancestor (Etype (Actual), Etype (Formal))
              then
!                Indeterm_Ancestor_Call := True;
!                Indeterm_Ctrl_Type     := Etype (Formal);
  
              --  If the formal is controlling but the actual is not, the type
              --  of the actual is statically known, and may be used as the
--- 937,943 ----
                and then Base_Type (Etype (Actual)) /= Base_Type (Etype (Formal))
                and then Is_Ancestor (Etype (Actual), Etype (Formal))
              then
!                Indeterm_Ctrl_Type := Etype (Formal);
  
              --  If the formal is controlling but the actual is not, the type
              --  of the actual is statically known, and may be used as the
*************** package body Sem_Disp is
*** 930,968 ****
                and then Is_Entity_Name (Actual)
                and then Is_Tagged_Type (Etype (Actual))
              then
!                Static_Tag := Actual;
              end if;
  
              Next_Actual (Actual);
              Next_Formal (Formal);
           end loop;
  
-          --  If the call doesn't have a controlling actual but does have an
-          --  indeterminate actual that requires dispatching treatment, then an
-          --  object is needed that will serve as the controlling argument for
-          --  a dispatching call on the indeterminate actual. This can occur
-          --  in the unusual situation of a default actual given by a tag-
-          --  indeterminate call and where the type of the call is an ancestor
-          --  of the type associated with a containing call to an inherited
-          --  operation (see AI-239).
- 
-          --  Rather than create an object of the tagged type, which would
-          --  be problematic for various reasons (default initialization,
-          --  discriminants), the tag of the containing call's associated
-          --  tagged type is directly used to control the dispatching.
- 
-          if No (Control)
-            and then Indeterm_Ancestor_Call
-            and then No (Static_Tag)
-          then
-             Control :=
-               Make_Attribute_Reference (Loc,
-                 Prefix         => New_Occurrence_Of (Indeterm_Ctrl_Type, Loc),
-                 Attribute_Name => Name_Tag);
- 
-             Analyze (Control);
-          end if;
- 
           if Present (Control) then
  
              --  Verify that no controlling arguments are statically tagged
--- 947,959 ----
                and then Is_Entity_Name (Actual)
                and then Is_Tagged_Type (Etype (Actual))
              then
!                Static_Tag := Etype (Actual);
              end if;
  
              Next_Actual (Actual);
              Next_Formal (Formal);
           end loop;
  
           if Present (Control) then
  
              --  Verify that no controlling arguments are statically tagged
*************** package body Sem_Disp is
*** 1014,1030 ****
  
              Check_Direct_Call;
  
!          --  If there is a statically tagged actual and a tag-indeterminate
!          --  call to a function of the ancestor (such as that provided by a
!          --  default), then treat this as a dispatching call and propagate
!          --  the tag to the tag-indeterminate call(s).
  
!          elsif Present (Static_Tag) and then Indeterm_Ancestor_Call then
!             Control :=
!               Make_Attribute_Reference (Loc,
!                 Prefix         =>
!                   New_Occurrence_Of (Etype (Static_Tag), Loc),
!                 Attribute_Name => Name_Tag);
  
              Analyze (Control);
  
--- 1005,1039 ----
  
              Check_Direct_Call;
  
!          --  If the call doesn't have a controlling actual but does have an
!          --  indeterminate actual that requires dispatching treatment, then an
!          --  object is needed that will serve as the controlling argument for
!          --  a dispatching call on the indeterminate actual. This can occur
!          --  in the unusual situation of a default actual given by a tag-
!          --  indeterminate call and where the type of the call is an ancestor
!          --  of the type associated with a containing call to an inherited
!          --  operation (see AI-239).
  
!          --  Rather than create an object of the tagged type, which would
!          --  be problematic for various reasons (default initialization,
!          --  discriminants), the tag of the containing call's associated
!          --  tagged type is directly used to control the dispatching.
! 
!          elsif Present (Indeterm_Ctrl_Type) then
!             if Present (Static_Tag) then
!                Control :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix         =>
!                      New_Occurrence_Of (Static_Tag, Loc),
!                    Attribute_Name => Name_Tag);
! 
!             else
!                Control :=
!                  Make_Attribute_Reference (Loc,
!                    Prefix         =>
!                       New_Occurrence_Of (Indeterm_Ctrl_Type, Loc),
!                    Attribute_Name => Name_Tag);
!             end if;
  
              Analyze (Control);
  
*************** package body Sem_Disp is
*** 1196,1202 ****
                    Error_Msg_Name_2 := Chars (E);
                    Error_Msg_Sloc := Sloc (E);
                    Error_Msg_N
!                     ("?j?primitive of type % defined after private extension "
                       & "% #?", Prim);
                    Error_Msg_Name_1 := Chars (Prim);
                    Error_Msg_Name_2 := Chars (E);
--- 1205,1211 ----
                    Error_Msg_Name_2 := Chars (E);
                    Error_Msg_Sloc := Sloc (E);
                    Error_Msg_N
!                     ("?.j?primitive of type % defined after private extension "
                       & "% #?", Prim);
                    Error_Msg_Name_1 := Chars (Prim);
                    Error_Msg_Name_2 := Chars (E);
*************** package body Sem_Disp is
*** 1505,1515 ****
                         ("\spec should appear immediately after the type!",
                          Subp);
  
!                   elsif Is_Frozen (Subp) then
  
                       --  The subprogram body declares a primitive operation.
!                      --  If the subprogram is already frozen, we must update
!                      --  its dispatching information explicitly here. The
                       --  information is taken from the overridden subprogram.
                       --  We must also generate a cross-reference entry because
                       --  references to other primitives were already created
--- 1514,1523 ----
                         ("\spec should appear immediately after the type!",
                          Subp);
  
!                   else
  
                       --  The subprogram body declares a primitive operation.
!                      --  We must update its dispatching information here. The
                       --  information is taken from the overridden subprogram.
                       --  We must also generate a cross-reference entry because
                       --  references to other primitives were already created
*************** package body Sem_Disp is
*** 1717,1723 ****
              --  emitted after those tables are built, to prevent access before
              --  elaboration in gigi.
  
!             if Body_Is_Last_Primitive and then Expander_Active then
                 declare
                    Subp_Body : constant Node_Id := Unit_Declaration_Node (Subp);
                    Elmt      : Elmt_Id;
--- 1725,1735 ----
              --  emitted after those tables are built, to prevent access before
              --  elaboration in gigi.
  
!             if Body_Is_Last_Primitive
!               and then not Building_Static_DT (Tagged_Type)
!               and then Expander_Active
!               and then Tagged_Type_Expansion
!             then
                 declare
                    Subp_Body : constant Node_Id := Unit_Declaration_Node (Subp);
                    Elmt      : Elmt_Id;
*************** package body Sem_Disp is
*** 1728,1740 ****
                    while Present (Elmt) loop
                       Prim := Node (Elmt);
  
-                      --  No code required to register primitives in VM targets
- 
                       if Present (Alias (Prim))
                         and then Present (Interface_Alias (Prim))
                         and then Alias (Prim) = Subp
-                        and then not Building_Static_DT (Tagged_Type)
-                        and then Tagged_Type_Expansion
                       then
                          Insert_Actions_After (Subp_Body,
                            Register_Primitive (Sloc (Subp_Body), Prim => Prim));
--- 1740,1748 ----
*************** package body Sem_Disp is
*** 3064,3081 ****
  
        if Tagged_Type_Expansion then
           declare
!             Call_Typ : constant Entity_Id := Etype (Call_Node);
  
           begin
              Expand_Dispatching_Call (Call_Node);
  
              --  If the controlling argument is an interface type and the type
              --  of Call_Node differs then we must add an implicit conversion to
              --  force displacement of the pointer to the object to reference
              --  the secondary dispatch table of the interface.
  
!             if Is_Interface (Etype (Control))
!               and then Etype (Control) /= Call_Typ
              then
                 --  Cannot use Convert_To because the previous call to
                 --  Expand_Dispatching_Call leaves decorated the Call_Node
--- 3072,3098 ----
  
        if Tagged_Type_Expansion then
           declare
!             Call_Typ : Entity_Id := Etype (Call_Node);
!             Ctrl_Typ : Entity_Id := Etype (Control);
  
           begin
              Expand_Dispatching_Call (Call_Node);
  
+             if Is_Class_Wide_Type (Call_Typ) then
+                Call_Typ := Root_Type (Call_Typ);
+             end if;
+ 
+             if Is_Class_Wide_Type (Ctrl_Typ) then
+                Ctrl_Typ := Root_Type (Ctrl_Typ);
+             end if;
+ 
              --  If the controlling argument is an interface type and the type
              --  of Call_Node differs then we must add an implicit conversion to
              --  force displacement of the pointer to the object to reference
              --  the secondary dispatch table of the interface.
  
!             if Is_Interface (Ctrl_Typ)
!               and then Ctrl_Typ /= Call_Typ
              then
                 --  Cannot use Convert_To because the previous call to
                 --  Expand_Dispatching_Call leaves decorated the Call_Node
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_disp.ads gcc-13.1.0/gcc/ada/sem_disp.ads
*** gcc-12.2.0/gcc/ada/sem_disp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_disp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Disp is
*** 63,69 ****
     --  the inherited subprogram will have been hidden by the current one at
     --  the point of the type derivation, so it does not appear in the list
     --  of primitive operations of the type, and this procedure inserts the
!    --  overriding subprogram in the the full type's list of primitives by
     --  iterating over the list for the parent type. If instead Subp is a new
     --  primitive, then it's simply appended to the primitive list.
  
--- 63,69 ----
     --  the inherited subprogram will have been hidden by the current one at
     --  the point of the type derivation, so it does not appear in the list
     --  of primitive operations of the type, and this procedure inserts the
!    --  overriding subprogram in the full type's list of primitives by
     --  iterating over the list for the parent type. If instead Subp is a new
     --  primitive, then it's simply appended to the primitive list.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_dist.adb gcc-13.1.0/gcc/ada/sem_dist.adb
*** gcc-12.2.0/gcc/ada/sem_dist.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_dist.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Dist is
*** 394,404 ****
             (RTE (RE_Get_Local_Partition_Id), Loc);
        end if;
  
!       --  Get and store the String_Id corresponding to the name of the
!       --  library unit whose Partition_Id is needed.
  
!       Get_Library_Unit_Name_String (Unit_Declaration_Node (Ety));
!       Prefix_String := String_From_Name_Buffer;
  
        --  Build the function call which will replace the attribute
  
--- 394,403 ----
             (RTE (RE_Get_Local_Partition_Id), Loc);
        end if;
  
!       --  Get the String_Id corresponding to the name of the library unit whose
!       --  Partition_Id is needed.
  
!       Prefix_String := Get_Library_Unit_Name (Unit_Declaration_Node (Ety));
  
        --  Build the function call which will replace the attribute
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_dist.ads gcc-13.1.0/gcc/ada/sem_dist.ads
*** gcc-12.2.0/gcc/ada/sem_dist.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_dist.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_elab.adb gcc-13.1.0/gcc/ada/sem_elab.adb
*** gcc-12.2.0/gcc/ada/sem_elab.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_elab.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Table;
*** 64,69 ****
--- 64,70 ----
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
  with Uname;          use Uname;
+ with Warnsw;         use Warnsw;
  
  with GNAT;                 use GNAT;
  with GNAT.Dynamic_HTables; use GNAT.Dynamic_HTables;
*************** package body Sem_Elab is
*** 880,885 ****
--- 881,890 ----
        --  The subprogram body traversal mode. Once set, this value should not
        --  be changed.
  
+       Within_Freezing_Actions : Boolean := False;
+       --  This flag is set when the Processing phase is currently examining a
+       --  scenario which was reached from the actions of a freeze node.
+ 
        Within_Generic : Boolean := False;
        --  This flag is set when the Processing phase is currently within a
        --  generic unit.
*************** package body Sem_Elab is
*** 1809,1819 ****
        --  Determine whether arbitrary entity Id denotes a partial invariant
        --  procedure.
  
-       function Is_Postconditions_Proc (Id : Entity_Id) return Boolean;
-       pragma Inline (Is_Postconditions_Proc);
-       --  Determine whether arbitrary entity Id denotes internally generated
-       --  routine _Postconditions.
- 
        function Is_Preelaborated_Unit (Id : Entity_Id) return Boolean;
        pragma Inline (Is_Preelaborated_Unit);
        --  Determine whether arbitrary entity Id denotes a unit which is subject
--- 1814,1819 ----
*************** package body Sem_Elab is
*** 1845,1851 ****
  
        function Is_SPARK_Semantic_Target (Id : Entity_Id) return Boolean;
        pragma Inline (Is_SPARK_Semantic_Target);
!       --  Determine whether arbitrary entity Id nodes a source or internally
        --  generated subprogram which emulates SPARK semantics.
  
        function Is_Subprogram_Inst (Id : Entity_Id) return Boolean;
--- 1845,1851 ----
  
        function Is_SPARK_Semantic_Target (Id : Entity_Id) return Boolean;
        pragma Inline (Is_SPARK_Semantic_Target);
!       --  Determine whether arbitrary entity Id denotes a source or internally
        --  generated subprogram which emulates SPARK semantics.
  
        function Is_Subprogram_Inst (Id : Entity_Id) return Boolean;
*************** package body Sem_Elab is
*** 2481,2494 ****
           elsif Is_Partial_Invariant_Proc (Subp_Id) then
              null;
  
-          --  _Postconditions
- 
-          elsif Is_Postconditions_Proc (Subp_Id) then
-             Output_Verification_Call
-               (Pred    => "postconditions",
-                Id      => Find_Enclosing_Scope (Call),
-                Id_Kind => "subprogram");
- 
           --  Subprograms must come last because some of the previous cases fall
           --  under this category.
  
--- 2481,2486 ----
*************** package body Sem_Elab is
*** 3339,3345 ****
                 Traverse_List (Else_Actions (Scen));
  
              elsif Nkind (Scen) in
!                     N_Component_Association | N_Iterated_Component_Association
              then
                 Traverse_List (Loop_Actions (Scen));
  
--- 3331,3339 ----
                 Traverse_List (Else_Actions (Scen));
  
              elsif Nkind (Scen) in
!                     N_Component_Association
!                   | N_Iterated_Component_Association
!                   | N_Iterated_Element_Association
              then
                 Traverse_List (Loop_Actions (Scen));
  
*************** package body Sem_Elab is
*** 4958,4964 ****
           then
              Error_Msg_Name_1 := Attribute_Name (Attr);
              Error_Msg_NE
!               ("??% attribute of & before body seen", Attr, Subp_Id);
              Error_Msg_N ("\possible Program_Error on later references", Attr);
  
              Output_Active_Scenarios (Attr, New_In_State);
--- 4952,4958 ----
           then
              Error_Msg_Name_1 := Attribute_Name (Attr);
              Error_Msg_NE
!               ("?.f?% attribute of & before body seen", Attr, Subp_Id);
              Error_Msg_N ("\possible Program_Error on later references", Attr);
  
              Output_Active_Scenarios (Attr, New_In_State);
*************** package body Sem_Elab is
*** 5363,5368 ****
--- 5357,5363 ----
           Subp_Id   : constant Entity_Id     := Target (Call_Rep);
           Subp_Rep  : constant Target_Rep_Id :=
                         Target_Representation_Of (Subp_Id, In_State);
+          Body_Decl : constant Node_Id       := Body_Declaration (Subp_Rep);
           Subp_Decl : constant Node_Id       := Spec_Declaration (Subp_Rep);
  
           SPARK_Rules_On : constant Boolean :=
*************** package body Sem_Elab is
*** 5462,5467 ****
--- 5457,5472 ----
               or else not Elaboration_Warnings_OK (Call_Rep)
               or else not Elaboration_Warnings_OK (Subp_Rep);
  
+          --  The call occurs in freezing actions context when a prior scenario
+          --  is already in that mode, or when the target is a subprogram whose
+          --  body has been generated as a freezing action. Update the state of
+          --  the Processing phase to reflect this.
+ 
+          New_In_State.Within_Freezing_Actions :=
+            New_In_State.Within_Freezing_Actions
+              or else (Present (Body_Decl)
+                        and then Nkind (Parent (Body_Decl)) = N_Freeze_Entity);
+ 
           --  The call occurs in an initial condition context when a prior
           --  scenario is already in that mode, or when the target is an
           --  Initial_Condition procedure. Update the state of the Processing
*************** package body Sem_Elab is
*** 5512,5518 ****
              In_State => New_In_State);
  
           Traverse_Conditional_ABE_Body
!            (N        => Body_Declaration (Subp_Rep),
              In_State => New_In_State);
        end Process_Conditional_ABE_Call;
  
--- 5517,5523 ----
              In_State => New_In_State);
  
           Traverse_Conditional_ABE_Body
!            (N        => Body_Decl,
              In_State => New_In_State);
        end Process_Conditional_ABE_Call;
  
*************** package body Sem_Elab is
*** 5731,5736 ****
--- 5736,5748 ----
              if In_State.Suppress_Warnings then
                 null;
  
+             --  Do not emit any ABE diagnostics when the call occurs in a
+             --  freezing actions context because this leads to incorrect
+             --  diagnostics.
+ 
+             elsif In_State.Within_Freezing_Actions then
+                null;
+ 
              --  Do not emit any ABE diagnostics when the call occurs in an
              --  initial condition context because this leads to incorrect
              --  diagnostics.
*************** package body Sem_Elab is
*** 6636,6649 ****
              elsif Is_Partial_Invariant_Proc (Subp_Id) then
                 null;
  
-             --  _Postconditions
- 
-             elsif Is_Postconditions_Proc (Subp_Id) then
-                Info_Verification_Call
-                  (Pred    => "postconditions",
-                   Id      => Find_Enclosing_Scope (Call),
-                   Id_Kind => "subprogram");
- 
              --  Subprograms must come last because some of the previous cases
              --  fall under this category.
  
--- 6648,6653 ----
*************** package body Sem_Elab is
*** 7346,7352 ****
              --  is a byproduct of the parser. Such a null statement should be
              --  excluded from the early call region because it carries the
              --  source location of the "end" keyword, and may lead to confusing
!             --  diagnistics.
  
              if Nkind (N) = N_Null_Statement
                and then not Comes_From_Source (N)
--- 7350,7356 ----
              --  is a byproduct of the parser. Such a null statement should be
              --  excluded from the early call region because it carries the
              --  source location of the "end" keyword, and may lead to confusing
!             --  diagnostics.
  
              if Nkind (N) = N_Null_Statement
                and then not Comes_From_Source (N)
*************** package body Sem_Elab is
*** 7354,7359 ****
--- 7358,7373 ----
                and then Nkind (Context) = N_Handled_Sequence_Of_Statements
              then
                 return False;
+ 
+             --  Similarly, internally-generated objects and types may have
+             --  out-of-order source locations that confuse diagnostics, e.g.
+             --  source locations in the body for objects/types generated in
+             --  the spec.
+ 
+             elsif Nkind (N) in N_Full_Type_Declaration | N_Object_Declaration
+               and then not Comes_From_Source (N)
+             then
+                return False;
              end if;
  
              --  Otherwise only constructs which correspond to pure Ada
*************** package body Sem_Elab is
*** 13079,13088 ****
             (Extra : out Entity_Id;
              Kind  : out Invocation_Kind)
           is
-             Targ_Rep  : constant Target_Rep_Id :=
-                           Target_Representation_Of (Targ_Id, In_State);
-             Spec_Decl : constant Node_Id := Spec_Declaration (Targ_Rep);
- 
           begin
              --  Accept within a task body
  
--- 13093,13098 ----
*************** package body Sem_Elab is
*** 13168,13179 ****
                 Extra := First_Formal_Type (Targ_Id);
                 Kind  := Invariant_Verification;
  
-             --  Postcondition verification
- 
-             elsif Is_Postconditions_Proc (Targ_Id) then
-                Extra := Find_Enclosing_Scope (Spec_Decl);
-                Kind  := Postcondition_Verification;
- 
              --  Protected entry call
  
              elsif Is_Protected_Entry (Targ_Id) then
--- 13178,13183 ----
*************** package body Sem_Elab is
*** 14442,14449 ****
             Is_Default_Initial_Condition_Proc (Id)
               or else Is_Initial_Condition_Proc (Id)
               or else Is_Invariant_Proc (Id)
!              or else Is_Partial_Invariant_Proc (Id)
!              or else Is_Postconditions_Proc (Id);
        end Is_Assertion_Pragma_Target;
  
        ----------------------------
--- 14446,14452 ----
             Is_Default_Initial_Condition_Proc (Id)
               or else Is_Initial_Condition_Proc (Id)
               or else Is_Invariant_Proc (Id)
!              or else Is_Partial_Invariant_Proc (Id);
        end Is_Assertion_Pragma_Target;
  
        ----------------------------
*************** package body Sem_Elab is
*** 14485,14491 ****
             Is_Accept_Alternative_Proc (Id)
               or else Is_Finalizer_Proc (Id)
               or else Is_Partial_Invariant_Proc (Id)
-              or else Is_Postconditions_Proc (Id)
               or else Is_TSS (Id, TSS_Deep_Adjust)
               or else Is_TSS (Id, TSS_Deep_Finalize)
               or else Is_TSS (Id, TSS_Deep_Initialize);
--- 14488,14493 ----
*************** package body Sem_Elab is
*** 14641,14658 ****
               and then Is_Partial_Invariant_Procedure (Id);
        end Is_Partial_Invariant_Proc;
  
-       ----------------------------
-       -- Is_Postconditions_Proc --
-       ----------------------------
- 
-       function Is_Postconditions_Proc (Id : Entity_Id) return Boolean is
-       begin
-          --  To qualify, the entity must denote a _Postconditions procedure
- 
-          return
-            Ekind (Id) = E_Procedure and then Chars (Id) = Name_uPostconditions;
-       end Is_Postconditions_Proc;
- 
        ---------------------------
        -- Is_Preelaborated_Unit --
        ---------------------------
--- 14643,14648 ----
*************** package body Sem_Elab is
*** 17470,17476 ****
  
        if Nkind (N) = N_Procedure_Call_Statement
          and then Is_Entity_Name (Name (N))
!         and then Chars (Entity (Name (N))) = Name_uPostconditions
        then
           return;
        end if;
--- 17460,17466 ----
  
        if Nkind (N) = N_Procedure_Call_Statement
          and then Is_Entity_Name (Name (N))
!         and then Chars (Entity (Name (N))) = Name_uWrapped_Statements
        then
           return;
        end if;
*************** package body Sem_Elab is
*** 18755,18763 ****
                       T : constant Entity_Id := Etype (First_Formal (E));
                    begin
                       if Is_Controlled (T) then
!                         if Warnings_Off (T)
                            or else (Ekind (T) = E_Private_Type
!                                     and then Warnings_Off (Full_View (T)))
                          then
                             goto Output;
                          end if;
--- 18745,18753 ----
                       T : constant Entity_Id := Etype (First_Formal (E));
                    begin
                       if Is_Controlled (T) then
!                         if Has_Warnings_Off (T)
                            or else (Ekind (T) = E_Private_Type
!                                     and then Has_Warnings_Off (Full_View (T)))
                          then
                             goto Output;
                          end if;
*************** package body Sem_Elab is
*** 18900,18917 ****
  
        procedure Collect_Tasks (Decls : List_Id) is
        begin
!          if Present (Decls) then
!             Decl := First (Decls);
!             while Present (Decl) loop
!                if Nkind (Decl) = N_Object_Declaration
!                  and then Has_Task (Etype (Defining_Identifier (Decl)))
!                then
!                   Add_Task_Proc (Etype (Defining_Identifier (Decl)));
!                end if;
  
!                Next (Decl);
!             end loop;
!          end if;
        end Collect_Tasks;
  
        ----------------
--- 18890,18905 ----
  
        procedure Collect_Tasks (Decls : List_Id) is
        begin
!          Decl := First (Decls);
!          while Present (Decl) loop
!             if Nkind (Decl) = N_Object_Declaration
!               and then Has_Task (Etype (Defining_Identifier (Decl)))
!             then
!                Add_Task_Proc (Etype (Defining_Identifier (Decl)));
!             end if;
  
!             Next (Decl);
!          end loop;
        end Collect_Tasks;
  
        ----------------
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_elab.ads gcc-13.1.0/gcc/ada/sem_elab.ads
*** gcc-12.2.0/gcc/ada/sem_elab.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_elab.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_elim.adb gcc-13.1.0/gcc/ada/sem_elim.adb
*** gcc-12.2.0/gcc/ada/sem_elim.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_elim.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_elim.ads gcc-13.1.0/gcc/ada/sem_elim.ads
*** gcc-12.2.0/gcc/ada/sem_elim.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_elim.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1997-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_eval.adb gcc-13.1.0/gcc/ada/sem_eval.adb
*** gcc-12.2.0/gcc/ada/sem_eval.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_eval.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Opt;            use Opt;
*** 43,48 ****
--- 43,49 ----
  with Par_SCO;        use Par_SCO;
  with Rtsfind;        use Rtsfind;
  with Sem;            use Sem;
+ with Sem_Aggr;       use Sem_Aggr;
  with Sem_Aux;        use Sem_Aux;
  with Sem_Cat;        use Sem_Cat;
  with Sem_Ch3;        use Sem_Ch3;
*************** with Snames;         use Snames;
*** 60,65 ****
--- 61,67 ----
  with Stand;          use Stand;
  with Stringt;        use Stringt;
  with Tbuild;         use Tbuild;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Eval is
  
*************** package body Sem_Eval is
*** 1815,1827 ****
  
     begin
        --  Never known at compile time if bad type or raises Constraint_Error
!       --  or empty (latter case occurs only as a result of a previous error).
  
        if No (Op) then
-          Check_Error_Detected;
           return False;
  
        elsif Op = Error
          or else Etype (Op) = Any_Type
          or else Raises_Constraint_Error (Op)
        then
--- 1817,1830 ----
  
     begin
        --  Never known at compile time if bad type or raises Constraint_Error
!       --  or empty (which can occur as a result of a previous error or in the
!       --  case of e.g. an imported constant).
  
        if No (Op) then
           return False;
  
        elsif Op = Error
+         or else Nkind (Op) not in N_Has_Etype
          or else Etype (Op) = Any_Type
          or else Raises_Constraint_Error (Op)
        then
*************** package body Sem_Eval is
*** 2797,2803 ****
        --  Check_Non_Static_Context on an expanded literal may lead to spurious
        --  and misleading warnings.
  
!       if (PK not in N_Subexpr
             or else (PK in N_Case_Expression_Alternative | N_If_Expression
                       and then
                      Comes_From_Source (N)))
--- 2800,2806 ----
        --  Check_Non_Static_Context on an expanded literal may lead to spurious
        --  and misleading warnings.
  
!       if (PK not in N_Case_Expression_Alternative | N_Subexpr
             or else (PK in N_Case_Expression_Alternative | N_If_Expression
                       and then
                      Comes_From_Source (N)))
*************** package body Sem_Eval is
*** 2855,2864 ****
           return;
        end if;
  
!       --  Intrinsic calls as part of a static function is a language extension.
  
        if Checking_Potentially_Static_Expression
!         and then not Extensions_Allowed
        then
           return;
        end if;
--- 2858,2868 ----
           return;
        end if;
  
!       --  Intrinsic calls as part of a static function is a (core)
!       --  language extension.
  
        if Checking_Potentially_Static_Expression
!         and then not Core_Extensions_Allowed
        then
           return;
        end if;
*************** package body Sem_Eval is
*** 6054,6059 ****
--- 6058,6073 ----
     ------------------
  
     procedure Out_Of_Range (N : Node_Id) is
+ 
+       --  If the FE conjures up an expression that would normally be
+       --  an illegal static expression (e.g., an integer literal with
+       --  a value outside of its base subtype), we don't want to
+       --  flag it as illegal; we only want a warning in such cases.
+ 
+       function Force_Warning return Boolean is
+         (if Comes_From_Source (Original_Node (N)) then False
+          elsif Nkind (Original_Node (N)) = N_Type_Conversion then True
+          else Is_Null_Array_Aggregate_High_Bound (N));
     begin
        --  If we have the static expression case, then this is an illegality
        --  in Ada 95 mode, except that in an instance, we never generate an
*************** package body Sem_Eval is
*** 6093,6101 ****
              --  Determine if the out-of-range violation constitutes a warning
              --  or an error based on context, according to RM 4.9 (34/3).
  
!             if Nkind (Original_Node (N)) = N_Type_Conversion
!               and then not Comes_From_Source (Original_Node (N))
!             then
                 Apply_Compile_Time_Constraint_Error
                   (N, "value not in range of}??", CE_Range_Check_Failed);
              else
--- 6107,6113 ----
              --  Determine if the out-of-range violation constitutes a warning
              --  or an error based on context, according to RM 4.9 (34/3).
  
!             if Force_Warning then
                 Apply_Compile_Time_Constraint_Error
                   (N, "value not in range of}??", CE_Range_Check_Failed);
              else
*************** package body Sem_Eval is
*** 7476,7492 ****
                    return;
                 end if;
  
!                if Present (Expressions (N)) then
!                   Exp := First (Expressions (N));
!                   while Present (Exp) loop
!                      if Raises_Constraint_Error (Exp) then
!                         Why_Not_Static (Exp);
!                         return;
!                      end if;
  
!                      Next (Exp);
!                   end loop;
!                end if;
  
              --  Special case a subtype name
  
--- 7488,7502 ----
                    return;
                 end if;
  
!                Exp := First (Expressions (N));
!                while Present (Exp) loop
!                   if Raises_Constraint_Error (Exp) then
!                      Why_Not_Static (Exp);
!                      return;
!                   end if;
  
!                   Next (Exp);
!                end loop;
  
              --  Special case a subtype name
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_eval.ads gcc-13.1.0/gcc/ada/sem_eval.ads
*** gcc-12.2.0/gcc/ada/sem_eval.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_eval.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_intr.adb gcc-13.1.0/gcc/ada/sem_intr.adb
*** gcc-12.2.0/gcc/ada/sem_intr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_intr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_intr.ads gcc-13.1.0/gcc/ada/sem_intr.ads
*** gcc-12.2.0/gcc/ada/sem_intr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_intr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_mech.adb gcc-13.1.0/gcc/ada/sem_mech.adb
*** gcc-12.2.0/gcc/ada/sem_mech.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_mech.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_mech.ads gcc-13.1.0/gcc/ada/sem_mech.ads
*** gcc-12.2.0/gcc/ada/sem_mech.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_mech.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1996-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_prag.adb gcc-13.1.0/gcc/ada/sem_prag.adb
*** gcc-12.2.0/gcc/ada/sem_prag.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_prag.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Sem;            use Sem;
*** 63,68 ****
--- 63,69 ----
  with Sem_Aux;        use Sem_Aux;
  with Sem_Ch3;        use Sem_Ch3;
  with Sem_Ch6;        use Sem_Ch6;
+ with Sem_Ch7;        use Sem_Ch7;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Ch12;       use Sem_Ch12;
  with Sem_Ch13;       use Sem_Ch13;
*************** package body Sem_Prag is
*** 1361,1396 ****
  
                 when E_Generic_In_Out_Parameter
                    | E_In_Out_Parameter
                    | E_Variable
                 =>
-                   --  When pragma Global is present it determines the mode of
-                   --  the object.
- 
-                   if Global_Seen then
- 
-                      --  A variable has mode IN when its type is unconstrained
-                      --  or tagged because array bounds, discriminants or tags
-                      --  can be read.
- 
-                      Item_Is_Input :=
-                        Appears_In (Subp_Inputs, Item_Id)
-                          or else Is_Unconstrained_Or_Tagged_Item (Item_Id);
- 
-                      Item_Is_Output := Appears_In (Subp_Outputs, Item_Id);
- 
-                   --  Otherwise the variable has a default IN OUT mode
- 
-                   else
-                      Item_Is_Input  := True;
-                      Item_Is_Output := True;
-                   end if;
- 
-                when E_Out_Parameter =>
- 
                    --  An OUT parameter of the related subprogram; it cannot
                    --  appear in Global.
  
!                   if Scope (Item_Id) = Spec_Id then
  
                       --  The parameter has mode IN if its type is unconstrained
                       --  or tagged because array bounds, discriminants or tags
--- 1362,1376 ----
  
                 when E_Generic_In_Out_Parameter
                    | E_In_Out_Parameter
+                   | E_Out_Parameter
                    | E_Variable
                 =>
                    --  An OUT parameter of the related subprogram; it cannot
                    --  appear in Global.
  
!                   if Adjusted_Kind = E_Out_Parameter
!                     and then Scope (Item_Id) = Spec_Id
!                   then
  
                       --  The parameter has mode IN if its type is unconstrained
                       --  or tagged because array bounds, discriminants or tags
*************** package body Sem_Prag is
*** 1401,1408 ****
  
                       Item_Is_Output := True;
  
!                   --  An OUT parameter of an enclosing subprogram; it can
!                   --  appear in Global and behaves as a read-write variable.
  
                    else
                       --  When pragma Global is present it determines the mode
--- 1381,1388 ----
  
                       Item_Is_Output := True;
  
!                   --  A parameter of an enclosing subprogram; it can appear
!                   --  in Global and behaves as a read-write variable.
  
                    else
                       --  When pragma Global is present it determines the mode
*************** package body Sem_Prag is
*** 1411,1418 ****
                       if Global_Seen then
  
                          --  A variable has mode IN when its type is
!                         --  unconstrained or tagged because array
!                         --  bounds, discriminants or tags can be read.
  
                          Item_Is_Input :=
                            Appears_In (Subp_Inputs, Item_Id)
--- 1391,1398 ----
                       if Global_Seen then
  
                          --  A variable has mode IN when its type is
!                         --  unconstrained or tagged because array bounds,
!                         --  discriminants, or tags can be read.
  
                          Item_Is_Input :=
                            Appears_In (Subp_Inputs, Item_Id)
*************** package body Sem_Prag is
*** 2136,2149 ****
                     First (Pragma_Argument_Associations (N));
        Obj_Decl : constant Node_Id   := Find_Related_Context (N);
        Obj_Id   : constant Entity_Id := Defining_Entity (Obj_Decl);
        Expr     : Node_Id;
  
     begin
!       --  Do not analyze the pragma multiple times, but set the output
!       --  parameter to the argument specified by the pragma.
  
        if Is_Analyzed_Pragma (N) then
!          goto Leave;
        end if;
  
        Error_Msg_Name_1 := Pragma_Name (N);
--- 2116,2149 ----
                     First (Pragma_Argument_Associations (N));
        Obj_Decl : constant Node_Id   := Find_Related_Context (N);
        Obj_Id   : constant Entity_Id := Defining_Entity (Obj_Decl);
+       Obj_Typ  : Entity_Id;
        Expr     : Node_Id;
  
     begin
!       if Is_Type (Obj_Id) then
!          Obj_Typ := Obj_Id;
!       else
!          Obj_Typ := Etype (Obj_Id);
!       end if;
! 
!       --  Ensure that the Boolean expression (if present) is static. A missing
!       --  argument defaults the value to True (SPARK RM 7.1.2(5)).
! 
!       Expr_Val := True;
! 
!       if Present (Arg1) then
!          Expr := Get_Pragma_Arg (Arg1);
! 
!          if Is_OK_Static_Expression (Expr) then
!             Expr_Val := Is_True (Expr_Value (Expr));
!          end if;
!       end if;
! 
!       --  The output parameter was set to the argument specified by the pragma.
!       --  Do not analyze the pragma multiple times.
  
        if Is_Analyzed_Pragma (N) then
!          return;
        end if;
  
        Error_Msg_Name_1 := Pragma_Name (N);
*************** package body Sem_Prag is
*** 2160,2206 ****
        if Prag_Id /= Pragma_No_Caching
          and then not Is_Effectively_Volatile (Obj_Id)
        then
!          if Ekind (Obj_Id) = E_Variable
!            and then No_Caching_Enabled (Obj_Id)
!          then
!             SPARK_Msg_N
!               ("illegal combination of external property % and property "
!                & """No_Caching"" (SPARK RM 7.1.2(6))", N);
           else
              SPARK_Msg_N
                ("external property % must apply to a volatile type or object",
                 N);
           end if;
  
!       --  Pragma No_Caching should only apply to volatile variables of
        --  a non-effectively volatile type (SPARK RM 7.1.2).
  
        elsif Prag_Id = Pragma_No_Caching then
!          if Is_Effectively_Volatile (Etype (Obj_Id)) then
!             SPARK_Msg_N ("property % must not apply to an object of "
                           & "an effectively volatile type", N);
           elsif not Is_Volatile (Obj_Id) then
!             SPARK_Msg_N ("property % must apply to a volatile object", N);
           end if;
        end if;
  
        Set_Is_Analyzed_Pragma (N);
- 
-       <<Leave>>
- 
-       --  Ensure that the Boolean expression (if present) is static. A missing
-       --  argument defaults the value to True (SPARK RM 7.1.2(5)).
- 
-       Expr_Val := True;
- 
-       if Present (Arg1) then
-          Expr := Get_Pragma_Arg (Arg1);
- 
-          if Is_OK_Static_Expression (Expr) then
-             Expr_Val := Is_True (Expr_Value (Expr));
-          end if;
-       end if;
- 
     end Analyze_External_Property_In_Decl_Part;
  
     ---------------------------------
--- 2160,2191 ----
        if Prag_Id /= Pragma_No_Caching
          and then not Is_Effectively_Volatile (Obj_Id)
        then
!          if No_Caching_Enabled (Obj_Id) then
!             if Expr_Val then  --  Confirming value of False is allowed
!                SPARK_Msg_N
!                  ("illegal combination of external property % and property "
!                   & """No_Caching"" (SPARK RM 7.1.2(6))", N);
!             end if;
           else
              SPARK_Msg_N
                ("external property % must apply to a volatile type or object",
                 N);
           end if;
  
!       --  Pragma No_Caching should only apply to volatile types or variables of
        --  a non-effectively volatile type (SPARK RM 7.1.2).
  
        elsif Prag_Id = Pragma_No_Caching then
!          if Is_Effectively_Volatile (Obj_Typ) then
!             SPARK_Msg_N ("property % must not apply to a type or object of "
                           & "an effectively volatile type", N);
           elsif not Is_Volatile (Obj_Id) then
!             SPARK_Msg_N
!               ("property % must apply to a volatile type or object", N);
           end if;
        end if;
  
        Set_Is_Analyzed_Pragma (N);
     end Analyze_External_Property_In_Decl_Part;
  
     ---------------------------------
*************** package body Sem_Prag is
*** 3293,3319 ****
           --  Collect all objects that appear in the visible declarations of the
           --  related package.
  
!          if Present (Visible_Declarations (Pack_Spec)) then
!             Decl := First (Visible_Declarations (Pack_Spec));
!             while Present (Decl) loop
!                if Comes_From_Source (Decl)
!                  and then Nkind (Decl) in N_Object_Declaration
!                                         | N_Object_Renaming_Declaration
!                then
!                   Append_New_Elmt (Defining_Entity (Decl), States_And_Objs);
  
!                elsif Nkind (Decl) = N_Package_Declaration then
!                   Collect_States_And_Objects (Decl);
  
!                elsif Is_Single_Concurrent_Type_Declaration (Decl) then
!                   Append_New_Elmt
!                     (Anonymous_Object (Defining_Entity (Decl)),
!                      States_And_Objs);
!                end if;
  
!                Next (Decl);
!             end loop;
!          end if;
        end Collect_States_And_Objects;
  
        --  Local variables
--- 3278,3302 ----
           --  Collect all objects that appear in the visible declarations of the
           --  related package.
  
!          Decl := First (Visible_Declarations (Pack_Spec));
!          while Present (Decl) loop
!             if Comes_From_Source (Decl)
!               and then Nkind (Decl) in N_Object_Declaration
!                                      | N_Object_Renaming_Declaration
!             then
!                Append_New_Elmt (Defining_Entity (Decl), States_And_Objs);
  
!             elsif Nkind (Decl) = N_Package_Declaration then
!                Collect_States_And_Objects (Decl);
  
!             elsif Is_Single_Concurrent_Type_Declaration (Decl) then
!                Append_New_Elmt
!                  (Anonymous_Object (Defining_Entity (Decl)),
!                   States_And_Objs);
!             end if;
  
!             Next (Decl);
!          end loop;
        end Collect_States_And_Objects;
  
        --  Local variables
*************** package body Sem_Prag is
*** 3591,3596 ****
--- 3574,3594 ----
              return;
           end if;
  
+          --  In the case of state in a (descendant of a private) child which
+          --  is Part_Of the state of another package, the package defining the
+          --  encapsulating abstract state should have a body, to ensure that it
+          --  has a state refinement (SPARK RM 7.1.4(4)).
+ 
+          if Enclosing_Comp_Unit_Node (Encap_Id) /=
+             Enclosing_Comp_Unit_Node (Item_Id)
+            and then not Unit_Requires_Body (Scope (Encap_Id))
+          then
+             SPARK_Msg_N
+               ("indicator Part_Of must denote abstract state of package "
+                & "with a body (SPARK RM 7.1.4(4))", Indic);
+             return;
+          end if;
+ 
           --  At this point it is known that the Part_Of indicator is legal
  
           Legal := True;
*************** package body Sem_Prag is
*** 4573,4578 ****
--- 4571,4581 ----
           elsif Nkind (Subp_Decl) = N_Single_Task_Declaration then
              null;
  
+          --  Abstract subprogram declaration
+ 
+          elsif Nkind (Subp_Decl) = N_Abstract_Subprogram_Declaration then
+             null;
+ 
           --  Subprogram body acts as spec
  
           elsif Nkind (Subp_Decl) = N_Subprogram_Body
*************** package body Sem_Prag is
*** 4609,4615 ****
  
           else
              Pragma_Misplaced;
-             return;
           end if;
  
           --  If we get here, then the pragma is legal
--- 4612,4617 ----
*************** package body Sem_Prag is
*** 4624,4630 ****
             and then Ekind (Scope (Spec_Id)) /= E_Protected_Type
           then
              Pragma_Misplaced;
-             return;
  
           --  When the related context is an anonymous object created for a
           --  simple concurrent type, the type must be a task
--- 4626,4631 ----
*************** package body Sem_Prag is
*** 4634,4640 ****
             and then Ekind (Etype (Spec_Id)) /= E_Task_Type
           then
              Pragma_Misplaced;
-             return;
           end if;
  
           --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 4635,4640 ----
*************** package body Sem_Prag is
*** 4950,4956 ****
  
           else
              Pragma_Misplaced;
-             return;
           end if;
  
           Subp_Id := Defining_Entity (Subp_Decl);
--- 4950,4955 ----
*************** package body Sem_Prag is
*** 5015,5021 ****
                N_Task_Body  | N_Task_Body_Stub
           then
              Pragma_Misplaced;
-             return;
           end if;
  
           Body_Id := Defining_Entity (Body_Decl);
--- 5014,5019 ----
*************** package body Sem_Prag is
*** 5026,5039 ****
  
           if No (Spec_Id) then
              Error_Pragma ("pragma % cannot apply to a stand alone body");
-             return;
  
           --  Catch the case where the subprogram body is a subunit and acts as
           --  the third declaration of the subprogram.
  
           elsif Nkind (Parent (Body_Decl)) = N_Subunit then
              Error_Pragma ("pragma % cannot apply to a subunit");
-             return;
           end if;
  
           --  A refined pragma can only apply to the body [stub] of a subprogram
--- 5024,5035 ----
*************** package body Sem_Prag is
*** 5058,5064 ****
              Error_Pragma
                (Fix_Msg (Spec_Id, "pragma % must apply to the body of "
                 & "subprogram declared in a package specification"));
-             return;
           end if;
  
           --  If we get here, then the pragma is legal
--- 5054,5059 ----
*************** package body Sem_Prag is
*** 5168,5179 ****
                 elsif Has_Pragma_Unmodified (Arg_Id) then
                    if Has_Pragma_Unused (Arg_Id) then
                       Error_Msg_NE
!                        ("??pragma Unused already given for &!", Arg_Expr,
!                          Arg_Id);
                    else
                       Error_Msg_NE
!                        ("??pragma Unmodified already given for &!", Arg_Expr,
!                          Arg_Id);
                    end if;
  
                 --  Otherwise the pragma referenced an illegal entity
--- 5163,5174 ----
                 elsif Has_Pragma_Unmodified (Arg_Id) then
                    if Has_Pragma_Unused (Arg_Id) then
                       Error_Msg_NE
!                        (Fix_Error ("??pragma Unused already given for &!"),
!                         Arg_Expr, Arg_Id);
                    else
                       Error_Msg_NE
!                        (Fix_Error ("??pragma Unmodified already given for &!"),
!                         Arg_Expr, Arg_Id);
                    end if;
  
                 --  Otherwise the pragma referenced an illegal entity
*************** package body Sem_Prag is
*** 5276,5287 ****
                    if Has_Pragma_Unreferenced (Arg_Id) then
                       if Has_Pragma_Unused (Arg_Id) then
                          Error_Msg_NE
!                           ("??pragma Unused already given for &!", Arg_Expr,
!                             Arg_Id);
                       else
                          Error_Msg_NE
!                           ("??pragma Unreferenced already given for &!",
!                             Arg_Expr, Arg_Id);
                       end if;
  
                    --  Apply Unreferenced to the entity
--- 5271,5283 ----
                    if Has_Pragma_Unreferenced (Arg_Id) then
                       if Has_Pragma_Unused (Arg_Id) then
                          Error_Msg_NE
!                           (Fix_Error ("??pragma Unused already given for &!"),
!                            Arg_Expr, Arg_Id);
                       else
                          Error_Msg_NE
!                           (Fix_Error
!                              ("??pragma Unreferenced already given for &!"),
!                            Arg_Expr, Arg_Id);
                       end if;
  
                    --  Apply Unreferenced to the entity
*************** package body Sem_Prag is
*** 5579,5584 ****
--- 5575,5588 ----
                 then
                    OK := True;
  
+                --  Special case for postconditions wrappers
+ 
+                elsif Ekind (Scop) in Subprogram_Kind
+                  and then Present (Wrapped_Statements (Scop))
+                  and then Wrapped_Statements (Scop) = Current_Scope
+                then
+                   OK := True;
+ 
                 --  Default case, just check that the pragma occurs in the scope
                 --  of the entity denoted by the name.
  
*************** package body Sem_Prag is
*** 6183,6197 ****
           --------------------------------
  
           procedure Check_Loop_Pragma_Grouping (Loop_Stmt : Node_Id) is
!             Stop_Search : exception;
!             --  This exception is used to terminate the recursive descent of
!             --  routine Check_Grouping.
! 
!             procedure Check_Grouping (L : List_Id);
              --  Find the first group of pragmas in list L and if successful,
              --  ensure that the current pragma is part of that group. The
!             --  routine raises Stop_Search once such a check is performed to
!             --  halt the recursive descent.
  
              procedure Grouping_Error (Prag : Node_Id);
              pragma No_Return (Grouping_Error);
--- 6187,6197 ----
           --------------------------------
  
           procedure Check_Loop_Pragma_Grouping (Loop_Stmt : Node_Id) is
!             function Check_Grouping (L : List_Id) return Boolean;
              --  Find the first group of pragmas in list L and if successful,
              --  ensure that the current pragma is part of that group. The
!             --  routine returns True once such a check is performed to
!             --  stop the analysis.
  
              procedure Grouping_Error (Prag : Node_Id);
              pragma No_Return (Grouping_Error);
*************** package body Sem_Prag is
*** 6202,6208 ****
              -- Check_Grouping --
              --------------------
  
!             procedure Check_Grouping (L : List_Id) is
                 HSS  : Node_Id;
                 Stmt : Node_Id;
                 Prag : Node_Id := Empty; -- init to avoid warning
--- 6202,6208 ----
              -- Check_Grouping --
              --------------------
  
!             function Check_Grouping (L : List_Id) return Boolean is
                 HSS  : Node_Id;
                 Stmt : Node_Id;
                 Prag : Node_Id := Empty; -- init to avoid warning
*************** package body Sem_Prag is
*** 6250,6256 ****
                             --  Stop the search as the placement is legal.
  
                             if Stmt = N then
!                               raise Stop_Search;
  
                             --  Skip group members, but keep track of the
                             --  last pragma in the group.
--- 6250,6256 ----
                             --  Stop the search as the placement is legal.
  
                             if Stmt = N then
!                               return True;
  
                             --  Skip group members, but keep track of the
                             --  last pragma in the group.
*************** package body Sem_Prag is
*** 6297,6311 ****
                    elsif Nkind (Stmt) = N_Block_Statement then
                       HSS := Handled_Statement_Sequence (Stmt);
  
!                      Check_Grouping (Declarations (Stmt));
  
                       if Present (HSS) then
!                         Check_Grouping (Statements (HSS));
                       end if;
                    end if;
  
                    Next (Stmt);
                 end loop;
              end Check_Grouping;
  
              --------------------
--- 6297,6317 ----
                    elsif Nkind (Stmt) = N_Block_Statement then
                       HSS := Handled_Statement_Sequence (Stmt);
  
!                      if Check_Grouping (Declarations (Stmt)) then
!                         return True;
!                      end if;
  
                       if Present (HSS) then
!                         if Check_Grouping (Statements (HSS)) then
!                            return True;
!                         end if;
                       end if;
                    end if;
  
                    Next (Stmt);
                 end loop;
+ 
+                return False;
              end Check_Grouping;
  
              --------------------
*************** package body Sem_Prag is
*** 6318,6323 ****
--- 6324,6331 ----
                 Error_Pragma ("pragma% must appear next to pragma#");
              end Grouping_Error;
  
+             Ignore : Boolean;
+ 
           --  Start of processing for Check_Loop_Pragma_Grouping
  
           begin
*************** package body Sem_Prag is
*** 6325,6334 ****
              --  within to determine whether the current pragma is part of the
              --  first topmost grouping of Loop_Invariant and Loop_Variant.
  
!             Check_Grouping (Statements (Loop_Stmt));
! 
!          exception
!             when Stop_Search => null;
           end Check_Loop_Pragma_Grouping;
  
           --------------------
--- 6333,6339 ----
              --  within to determine whether the current pragma is part of the
              --  first topmost grouping of Loop_Invariant and Loop_Variant.
  
!             Ignore := Check_Grouping (Statements (Loop_Stmt));
           end Check_Loop_Pragma_Grouping;
  
           --------------------
*************** package body Sem_Prag is
*** 6399,6405 ****
                       Statements (Handled_Statement_Sequence (Stmt))
                 then
                    Placement_Error (Prev);
-                   return;
  
                 --  Keep inspecting the parents because we are now within a
                 --  chain of nested blocks.
--- 6404,6409 ----
*************** package body Sem_Prag is
*** 6434,6440 ****
  
              else
                 Placement_Error (Prev);
-                return;
              end if;
           end loop;
  
--- 6438,6443 ----
*************** package body Sem_Prag is
*** 6726,6732 ****
                 if Loc not in Source_First (Sindex) .. Source_Last (Sindex) then
                    --  We do not want to raise an exception here since this code
                    --  is part of the bootstrap path where we cannot rely on
!                   --  exception proapgation working.
                    --  Instead the caller should check for N being rewritten as
                    --  a null statement.
                    --  This code triggers when compiling a-except.adb.
--- 6729,6735 ----
                 if Loc not in Source_First (Sindex) .. Source_Last (Sindex) then
                    --  We do not want to raise an exception here since this code
                    --  is part of the bootstrap path where we cannot rely on
!                   --  exception propagation working.
                    --  Instead the caller should check for N being rewritten as
                    --  a null statement.
                    --  This code triggers when compiling a-except.adb.
*************** package body Sem_Prag is
*** 7295,7305 ****
        --  the test below also permits use in a configuration pragma file.
  
        function Is_Configuration_Pragma return Boolean is
!          Lis : constant List_Id := List_Containing (N);
           Par : constant Node_Id := Parent (N);
           Prg : Node_Id;
  
        begin
           --  If no parent, then we are in the configuration pragma file,
           --  so the placement is definitely appropriate.
  
--- 7298,7317 ----
        --  the test below also permits use in a configuration pragma file.
  
        function Is_Configuration_Pragma return Boolean is
!          Lis : List_Id;
           Par : constant Node_Id := Parent (N);
           Prg : Node_Id;
  
        begin
+          --  Don't evaluate List_Containing (N) if Parent (N) could be
+          --  an N_Aspect_Specification node.
+ 
+          if not Is_List_Member (N) then
+             return False;
+          end if;
+ 
+          Lis := List_Containing (N);
+ 
           --  If no parent, then we are in the configuration pragma file,
           --  so the placement is definitely appropriate.
  
*************** package body Sem_Prag is
*** 7339,7360 ****
           Parent_Node : Node_Id;
  
        begin
!          if not Is_List_Member (N) then
!             return False;
! 
!          else
              Plist := List_Containing (N);
              Parent_Node := Parent (Plist);
  
!             if Parent_Node = Empty
!               or else Nkind (Parent_Node) /= N_Compilation_Unit
!               or else Context_Items (Parent_Node) /= Plist
!             then
!                return False;
!             end if;
           end if;
  
!          return True;
        end Is_In_Context_Clause;
  
        ---------------------------------
--- 7351,7366 ----
           Parent_Node : Node_Id;
  
        begin
!          if Is_List_Member (N) then
              Plist := List_Containing (N);
              Parent_Node := Parent (Plist);
  
!             return Present (Parent_Node)
!               and then Nkind (Parent_Node) = N_Compilation_Unit
!               and then Context_Items (Parent_Node) = Plist;
           end if;
  
!          return False;
        end Is_In_Context_Clause;
  
        ---------------------------------
*************** package body Sem_Prag is
*** 7498,7504 ****
                 Error_Pragma
                   ("cannot have Full_Access_Only without Volatile/Atomic "
                    & "(RM C.6(8.2))");
-                return;
              end if;
  
              --  Check all the subcomponents of the type recursively, if any
--- 7504,7509 ----
*************** package body Sem_Prag is
*** 8006,8012 ****
                             Error_Msg_Sloc := Sloc (Decl);
                             Error_Pragma_Arg
                               ("convention differs from that given#", Arg1);
-                            return;
                          end if;
                       end if;
                    end if;
--- 8011,8016 ----
*************** package body Sem_Prag is
*** 8371,8377 ****
                 Error_Pragma_Arg
                   ("argument of pragma% must be subprogram or access type",
                    Arg2);
-                Subp := Empty;
              end if;
  
              --  ISO C requires a named parameter before the ellipsis, so a
--- 8375,8380 ----
*************** package body Sem_Prag is
*** 9465,9472 ****
  
                    --  If the pragma comes from an aspect specification, there
                    --  must be an Import aspect specified as well. In the rare
!                   --  case where Import is set to False, the suprogram needs to
!                   --  have a local completion.
  
                    declare
                       Imp_Aspect : constant Node_Id :=
--- 9468,9475 ----
  
                    --  If the pragma comes from an aspect specification, there
                    --  must be an Import aspect specified as well. In the rare
!                   --  case where Import is set to False, the subprogram needs
!                   --  to have a local completion.
  
                    declare
                       Imp_Aspect : constant Node_Id :=
*************** package body Sem_Prag is
*** 10011,10017 ****
              then
                 Error_Pragma_Arg
                   ("argument of% must be entity in current scope", Assoc);
-                return;
              end if;
  
              --  Processing for procedure, operator or function. If subprogram
--- 10014,10019 ----
*************** package body Sem_Prag is
*** 10597,10603 ****
  
                    --  Check for possible misspelling
  
!                   for J in Restriction_Id loop
                       declare
                          Rnm : constant String := Restriction_Id'Image (J);
  
--- 10599,10605 ----
  
                    --  Check for possible misspelling
  
!                   for J in All_Restrictions loop
                       declare
                          Rnm : constant String := Restriction_Id'Image (J);
  
*************** package body Sem_Prag is
*** 10828,10840 ****
  
              else
                 R_Id := Get_Restriction_Id (Process_Restriction_Synonyms (Arg));
-                Analyze_And_Resolve (Expr, Any_Integer);
  
                 if R_Id not in All_Parameter_Restrictions then
                    Error_Pragma_Arg
                      ("invalid restriction parameter identifier", Arg);
  
!                elsif not Is_OK_Static_Expression (Expr) then
                    Flag_Non_Static_Expr
                      ("value must be static expression!", Expr);
                    raise Pragma_Exit;
--- 10830,10844 ----
  
              else
                 R_Id := Get_Restriction_Id (Process_Restriction_Synonyms (Arg));
  
                 if R_Id not in All_Parameter_Restrictions then
                    Error_Pragma_Arg
                      ("invalid restriction parameter identifier", Arg);
+                end if;
  
!                Analyze_And_Resolve (Expr, Any_Integer);
! 
!                if not Is_OK_Static_Expression (Expr) then
                    Flag_Non_Static_Expr
                      ("value must be static expression!", Expr);
                    raise Pragma_Exit;
*************** package body Sem_Prag is
*** 11000,11006 ****
                 Scope_Suppress.Suppress (C) := Suppress_Case;
              end if;
  
!             --  Also make an entry in the Local_Entity_Suppress table
  
              Push_Local_Suppress_Stack_Entry
                (Entity   => Empty,
--- 11004,11010 ----
                 Scope_Suppress.Suppress (C) := Suppress_Case;
              end if;
  
!             --  Also push an entry in the local suppress stack
  
              Push_Local_Suppress_Stack_Entry
                (Entity   => Empty,
*************** package body Sem_Prag is
*** 12484,12490 ****
                   N_Generic_Package_Declaration | N_Package_Declaration
              then
                 Pragma_Misplaced;
-                return;
              end if;
  
              Pack_Id := Defining_Entity (Pack_Decl);
--- 12488,12493 ----
*************** package body Sem_Prag is
*** 13496,13518 ****
              Obj_Or_Type_Decl := Find_Related_Context (N, Do_Checks => True);
  
              --  Pragma must apply to a object declaration or to a type
!             --  declaration (only the former in the No_Caching case).
!             --  Original_Node is necessary to account for untagged derived
!             --  types that are rewritten as subtypes of their
!             --  respective root types.
  
!             if Nkind (Obj_Or_Type_Decl) /= N_Object_Declaration then
!                if Prag_Id = Pragma_No_Caching
!                   or else Nkind (Original_Node (Obj_Or_Type_Decl)) not in
!                             N_Full_Type_Declaration    |
!                             N_Private_Type_Declaration |
!                             N_Formal_Type_Declaration  |
!                             N_Task_Type_Declaration    |
!                             N_Protected_Type_Declaration
!                then
!                   Pragma_Misplaced;
!                   return;
!                end if;
              end if;
  
              Obj_Or_Type_Id := Defining_Entity (Obj_Or_Type_Decl);
--- 13499,13517 ----
              Obj_Or_Type_Decl := Find_Related_Context (N, Do_Checks => True);
  
              --  Pragma must apply to a object declaration or to a type
!             --  declaration. Original_Node is necessary to account for
!             --  untagged derived types that are rewritten as subtypes of
!             --  their respective root types.
  
!             if Nkind (Obj_Or_Type_Decl) /= N_Object_Declaration
!               and then Nkind (Original_Node (Obj_Or_Type_Decl)) not in
!                 N_Full_Type_Declaration    |
!                 N_Private_Type_Declaration |
!                 N_Formal_Type_Declaration  |
!                 N_Task_Type_Declaration    |
!                 N_Protected_Type_Declaration
!             then
!                Pragma_Misplaced;
              end if;
  
              Obj_Or_Type_Id := Defining_Entity (Obj_Or_Type_Decl);
*************** package body Sem_Prag is
*** 14321,14335 ****
           when Pragma_Compile_Time_Error | Pragma_Compile_Time_Warning =>
              GNAT_Pragma;
  
-             --  These pragmas rely on the context. In adc files they raise
-             --  Constraint_Error. Ban them from use as configuration pragmas
-             --  even in cases where such a use could work.
- 
-             if Is_Configuration_Pragma then
-                Error_Pragma
-                   ("pragma% is not allowed as a configuration pragma");
-             end if;
- 
              Process_Compile_Time_Warning_Or_Error;
  
           -----------------------------
--- 14320,14325 ----
*************** package body Sem_Prag is
*** 14530,14536 ****
  
              if Nkind (Obj_Decl) /= N_Object_Declaration then
                 Pragma_Misplaced;
-                return;
              end if;
  
              Obj_Id := Defining_Entity (Obj_Decl);
--- 14520,14525 ----
*************** package body Sem_Prag is
*** 14543,14556 ****
                 if not Is_Library_Level_Entity (Obj_Id) then
                    Error_Pragma
                      ("pragma % must apply to a library level variable");
-                   return;
                 end if;
  
              --  Otherwise the pragma applies to a constant, which is illegal
  
              else
                 Error_Pragma ("pragma % must apply to a variable declaration");
-                return;
              end if;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 14532,14543 ----
*************** package body Sem_Prag is
*** 14673,14679 ****
  
              else
                 Pragma_Misplaced;
-                return;
              end if;
  
              Spec_Id := Unique_Defining_Entity (Subp_Decl);
--- 14660,14665 ----
*************** package body Sem_Prag is
*** 15423,15429 ****
  
                 else
                    Pragma_Misplaced;
-                   return;
                 end if;
  
                 Stmt := Prev (Stmt);
--- 15409,15414 ----
*************** package body Sem_Prag is
*** 15434,15440 ****
  
              if No (Typ) then
                 Pragma_Misplaced;
-                return;
              end if;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 15419,15424 ----
*************** package body Sem_Prag is
*** 15451,15462 ****
              --  aspect/pragma from parent types (see Build_DIC_Procedure_Body),
              --  though that extra argument isn't documented for the pragma.
  
!             if not Present (Arg2) then
                 --  When the pragma has no arguments, create an argument with
                 --  the value Empty, so the type name argument can be appended
                 --  following it (since it's expected as the second argument).
  
!                if not Present (Arg1) then
                    Set_Pragma_Argument_Associations (N, New_List (
                      Make_Pragma_Argument_Association (Sloc (Typ),
                        Expression => Empty)));
--- 15435,15446 ----
              --  aspect/pragma from parent types (see Build_DIC_Procedure_Body),
              --  though that extra argument isn't documented for the pragma.
  
!             if No (Arg2) then
                 --  When the pragma has no arguments, create an argument with
                 --  the value Empty, so the type name argument can be appended
                 --  following it (since it's expected as the second argument).
  
!                if No (Arg1) then
                    Set_Pragma_Argument_Associations (N, New_List (
                      Make_Pragma_Argument_Association (Sloc (Typ),
                        Expression => Empty)));
*************** package body Sem_Prag is
*** 15754,15761 ****
  
              --  Deal with configuration pragma case
  
!             if Arg_Count = 0 and then Is_Configuration_Pragma then
!                Global_Discard_Names := True;
                 return;
  
              --  Otherwise, check correct appropriate context
--- 15738,15750 ----
  
              --  Deal with configuration pragma case
  
!             if Is_Configuration_Pragma then
!                if Arg_Count /= 0 then
!                   Error_Pragma
!                     ("nonzero number of arguments for configuration pragma%");
!                else
!                   Global_Discard_Names := True;
!                end if;
                 return;
  
              --  Otherwise, check correct appropriate context
*************** package body Sem_Prag is
*** 16016,16022 ****
                 end loop Innr;
  
                 if Citem = N then
-                   Set_Error_Posted (N);
                    Error_Pragma_Arg
                      ("argument of pragma% is not withed unit", Arg);
                 end if;
--- 16005,16010 ----
*************** package body Sem_Prag is
*** 16639,16654 ****
           -- Extensions_Allowed --
           ------------------------
  
!          --  pragma Extensions_Allowed (ON | OFF);
  
           when Pragma_Extensions_Allowed =>
              GNAT_Pragma;
              Check_Arg_Count (1);
              Check_No_Identifiers;
!             Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off);
  
              if Chars (Get_Pragma_Arg (Arg1)) = Name_On then
!                Ada_Version := Ada_With_Extensions;
              else
                 Ada_Version := Ada_Version_Explicit;
                 Ada_Version_Pragma := Empty;
--- 16627,16644 ----
           -- Extensions_Allowed --
           ------------------------
  
!          --  pragma Extensions_Allowed (ON | OFF | ALL);
  
           when Pragma_Extensions_Allowed =>
              GNAT_Pragma;
              Check_Arg_Count (1);
              Check_No_Identifiers;
!             Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off, Name_All);
  
              if Chars (Get_Pragma_Arg (Arg1)) = Name_On then
!                Ada_Version := Ada_With_Core_Extensions;
!             elsif Chars (Get_Pragma_Arg (Arg1)) = Name_All then
!                Ada_Version := Ada_With_All_Extensions;
              else
                 Ada_Version := Ada_Version_Explicit;
                 Ada_Version_Pragma := Empty;
*************** package body Sem_Prag is
*** 16733,16739 ****
  
              else
                 Error_Pragma ("pragma % must apply to a subprogram");
-                return;
              end if;
  
              --  Mark the pragma as Ghost if the related subprogram is also
--- 16723,16728 ----
*************** package body Sem_Prag is
*** 17012,17018 ****
                         N_Single_Task_Declaration | N_Task_Type_Declaration
                 then
                    Error_Pragma ("pragma % cannot apply to a task type");
-                   return;
  
                 --  Skip internally generated code
  
--- 17001,17006 ----
*************** package body Sem_Prag is
*** 17053,17063 ****
--- 17041,17064 ----
                    then
                       Id := Defining_Entity (Stmt);
                       exit;
+ 
+                   --  When pragma Ghost applies to a generic formal type, the
+                   --  type declaration in the instantiation is a generated
+                   --  subtype declaration.
+ 
+                   elsif Nkind (Stmt) = N_Subtype_Declaration
+                     and then Present (Generic_Parent_Type (Stmt))
+                   then
+                      Id := Defining_Entity (Stmt);
+                      exit;
                    end if;
  
                 --  The pragma applies to a legal construct, stop the traversal
  
                 elsif Nkind (Stmt) in N_Abstract_Subprogram_Declaration
+                                    | N_Formal_Object_Declaration
+                                    | N_Formal_Subprogram_Declaration
+                                    | N_Formal_Type_Declaration
                                     | N_Full_Type_Declaration
                                     | N_Generic_Subprogram_Declaration
                                     | N_Object_Declaration
*************** package body Sem_Prag is
*** 17076,17082 ****
                    Error_Pragma
                      ("pragma % must apply to an object, package, subprogram "
                       & "or type");
-                   return;
                 end if;
  
                 Stmt := Prev (Stmt);
--- 17077,17082 ----
*************** package body Sem_Prag is
*** 17096,17106 ****
              if Nkind (Context) in N_Protected_Body | N_Protected_Definition
              then
                 Error_Pragma ("pragma % cannot apply to a protected type");
-                return;
  
              elsif Nkind (Context) in N_Task_Body | N_Task_Definition then
                 Error_Pragma ("pragma % cannot apply to a task type");
-                return;
              end if;
  
              if No (Id) then
--- 17096,17104 ----
*************** package body Sem_Prag is
*** 17138,17144 ****
                 Error_Pragma
                   ("pragma % must apply to an object, package, subprogram or "
                    & "type");
-                return;
              end if;
  
              --  Handle completions of types and constants that are subject to
--- 17136,17141 ----
*************** package body Sem_Prag is
*** 17186,17196 ****
              elsif Ekind (Id) = E_Variable then
                 if Is_Protected_Type (Etype (Id)) then
                    Error_Pragma ("pragma % cannot apply to a protected object");
-                   return;
  
                 elsif Is_Task_Type (Etype (Id)) then
                    Error_Pragma ("pragma % cannot apply to a task object");
-                   return;
                 end if;
              end if;
  
--- 17183,17191 ----
*************** package body Sem_Prag is
*** 17212,17218 ****
                       Error_Pragma
                         ("pragma % with value False cannot appear in enabled "
                          & "ghost region");
-                      return;
                    end if;
  
                 --  Otherwise the expression is not static
--- 17207,17212 ----
*************** package body Sem_Prag is
*** 17220,17226 ****
                 else
                    Error_Pragma_Arg
                      ("expression of pragma % must be static", Expr);
-                   return;
                 end if;
              end if;
  
--- 17214,17219 ----
*************** package body Sem_Prag is
*** 17503,17509 ****
                    Error_Pragma_Arg
                      ("controlling formal must be of synchronized tagged type",
                       Arg1);
-                   return;
                 end if;
  
                 --  Ada 2012 (AI05-0030): Cannot apply the implementation_kind
--- 17496,17501 ----
*************** package body Sem_Prag is
*** 17517,17523 ****
                    Error_Pragma_Arg
                      ("implementation kind By_Protected_Procedure cannot be "
                       & "applied to a task interface primitive", Arg2);
-                   return;
                 end if;
  
              --  Procedures declared inside a protected type must be accepted
--- 17509,17514 ----
*************** package body Sem_Prag is
*** 17532,17538 ****
              else
                 Error_Pragma_Arg
                   ("pragma % must be applied to a primitive procedure", Arg1);
-                return;
              end if;
  
              --  Ada 2012 (AI12-0279): Cannot apply the implementation_kind
--- 17523,17528 ----
*************** package body Sem_Prag is
*** 17544,17550 ****
                 Error_Pragma_Arg
                   ("implementation kind By_Protected_Procedure cannot be "
                    & "applied to entities with aspect 'Yield", Arg2);
-                return;
              end if;
  
              Record_Rep_Item (Proc_Id, N);
--- 17534,17539 ----
*************** package body Sem_Prag is
*** 17955,17961 ****
                   N_Generic_Package_Declaration | N_Package_Declaration
              then
                 Pragma_Misplaced;
-                return;
              end if;
  
              Pack_Id := Defining_Entity (Pack_Decl);
--- 17944,17949 ----
*************** package body Sem_Prag is
*** 18236,18242 ****
                   N_Generic_Package_Declaration | N_Package_Declaration
              then
                 Pragma_Misplaced;
-                return;
              end if;
  
              Pack_Id := Defining_Entity (Pack_Decl);
--- 18224,18229 ----
*************** package body Sem_Prag is
*** 18572,18578 ****
  
              if Nkind (P) not in N_Task_Definition | N_Protected_Definition then
                 Pragma_Misplaced;
-                return;
  
              else
                 Ent := Defining_Identifier (Parent (P));
--- 18559,18564 ----
*************** package body Sem_Prag is
*** 18712,18718 ****
                      Interrupt_States.Table (IST_Num).Pragma_Loc;
                    Error_Pragma_Arg
                      ("state conflicts with that given #", Arg2);
-                   exit;
                 end if;
  
                 IST_Num := IST_Num + 1;
--- 18698,18703 ----
*************** package body Sem_Prag is
*** 18788,18794 ****
              elsif Class_Present (N) then
                 Error_Pragma_Arg
                   ("pragma % only allowed for private type", Arg1);
-                return;
  
              --  A regular invariant may appear on both views
  
--- 18773,18778 ----
*************** package body Sem_Prag is
*** 18796,18802 ****
                 Error_Pragma_Arg
                   ("pragma % only allowed for private type or corresponding "
                    & "full view", Arg1);
-                return;
              end if;
  
              --  An invariant associated with an abstract type (this includes
--- 18780,18785 ----
*************** package body Sem_Prag is
*** 18805,18811 ****
              if Is_Abstract_Type (Typ) and then not Class_Present (N) then
                 Error_Pragma_Arg
                   ("pragma % not allowed for abstract type", Arg1);
-                return;
              end if;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 18788,18793 ----
*************** package body Sem_Prag is
*** 19422,19428 ****
                 if Chars (Variant) = No_Name then
                    Error_Pragma_Arg_Ident ("expect name `Increases`", Variant);
  
!                elsif Chars (Variant) not in Name_Decreases | Name_Increases
                 then
                    declare
                       Name : String := Get_Name_String (Chars (Variant));
--- 19404,19411 ----
                 if Chars (Variant) = No_Name then
                    Error_Pragma_Arg_Ident ("expect name `Increases`", Variant);
  
!                elsif Chars (Variant) not in
!                     Name_Decreases | Name_Increases | Name_Structural
                 then
                    declare
                       Name : String := Get_Name_String (Chars (Variant));
*************** package body Sem_Prag is
*** 19447,19461 ****
                          Error_Pragma_Arg_Ident
                            ("expect name `Decreases`", Variant);
  
                       else
                          Error_Pragma_Arg_Ident
!                           ("expect name `Increases` or `Decreases`", Variant);
                       end if;
                    end;
                 end if;
  
!                Preanalyze_Assert_Expression
!                  (Expression (Variant), Any_Discrete);
  
                 Next (Variant);
              end loop;
--- 19430,19491 ----
                          Error_Pragma_Arg_Ident
                            ("expect name `Decreases`", Variant);
  
+                      elsif Name'Length >= 4
+                        and then Name (1 .. 4) = "stru"
+                      then
+                         Error_Pragma_Arg_Ident
+                           ("expect name `Structural`", Variant);
+ 
                       else
                          Error_Pragma_Arg_Ident
!                           ("expect name `Increases`, `Decreases`,"
!                            & " or `Structural`", Variant);
                       end if;
                    end;
+ 
+                elsif Chars (Variant) = Name_Structural
+                  and then List_Length (Pragma_Argument_Associations (N)) > 1
+                then
+                   Error_Pragma_Arg_Ident
+                     ("Structural variant shall be the only variant", Variant);
                 end if;
  
!                --  Preanalyze_Assert_Expression, but without enforcing any of
!                --  the two acceptable types.
! 
!                Preanalyze_Assert_Expression (Expression (Variant));
! 
!                --  Expression of a discrete type is allowed. Nothing to
!                --  check for structural variants.
! 
!                if Chars (Variant) = Name_Structural
!                  or else Is_Discrete_Type (Etype (Expression (Variant)))
!                then
!                   null;
! 
!                --  Expression of a Big_Integer type (or its ghost variant) is
!                --  only allowed in Decreases clause.
! 
!                elsif
!                  Is_RTE (Base_Type (Etype (Expression (Variant))),
!                          RE_Big_Integer)
!                    or else
!                  Is_RTE (Base_Type (Etype (Expression (Variant))),
!                          RO_GH_Big_Integer)
!                then
!                   if Chars (Variant) = Name_Increases then
!                      Error_Msg_N
!                        ("Loop_Variant with Big_Integer can only decrease",
!                         Expression (Variant));
!                   end if;
! 
!                --  Expression of other types is not allowed
! 
!                else
!                   Error_Msg_N
!                     ("expected a discrete or Big_Integer type",
!                      Expression (Variant));
!                end if;
  
                 Next (Variant);
              end loop;
*************** package body Sem_Prag is
*** 19670,19676 ****
  
                 if Nkind (Parent (N)) = N_Task_Definition then
                    Error_Pragma ("pragma % cannot apply to task entries");
-                   return;
                 end if;
  
                 Entry_Id := Defining_Entity (Entry_Decl);
--- 19700,19705 ----
*************** package body Sem_Prag is
*** 19680,19686 ****
              else
                 Error_Pragma
                   ("pragma % must apply to a protected entry declaration");
-                return;
              end if;
  
              --  Mark the pragma as Ghost if the related subprogram is also
--- 19709,19714 ----
*************** package body Sem_Prag is
*** 20153,20159 ****
                 end loop;
  
                 --  If entity in not in current scope it may be the enclosing
!                --  suprogram body to which the aspect applies.
  
                 if not Found then
                    if Entity (Id) = Current_Scope
--- 20181,20187 ----
                 end loop;
  
                 --  If entity in not in current scope it may be the enclosing
!                --  subprogram body to which the aspect applies.
  
                 if not Found then
                    if Entity (Id) = Current_Scope
*************** package body Sem_Prag is
*** 20332,20343 ****
  
           --  pragma Obsolescent (
           --    [Message =>] static_string_EXPRESSION
!          --  [,[Version =>] Ada_05]]);
  
           --  pragma Obsolescent (
           --    [Entity  =>] NAME
           --  [,[Message =>] static_string_EXPRESSION
!          --  [,[Version =>] Ada_05]] );
  
           when Pragma_Obsolescent => Obsolescent : declare
              Decl  : Node_Id;
--- 20360,20371 ----
  
           --  pragma Obsolescent (
           --    [Message =>] static_string_EXPRESSION
!          --  [,[Version =>] Ada_05]);
  
           --  pragma Obsolescent (
           --    [Entity  =>] NAME
           --  [,[Message =>] static_string_EXPRESSION
!          --  [,[Version =>] Ada_05]]);
  
           when Pragma_Obsolescent => Obsolescent : declare
              Decl  : Node_Id;
*************** package body Sem_Prag is
*** 20506,20515 ****
  
              if No (Decl) then
  
!                --  First case: library level compilation unit declaration with
                 --  the pragma immediately following the declaration.
  
!                if Nkind (Parent (N)) = N_Compilation_Unit_Aux then
                    Set_Obsolescent
                      (Defining_Entity (Unit (Parent (Parent (N)))));
                    return;
--- 20534,20549 ----
  
              if No (Decl) then
  
!                --  Case 0: library level compilation unit declaration with
!                --  the pragma preceding the declaration.
! 
!                if Nkind (Parent (N)) = N_Compilation_Unit then
!                   Pragma_Misplaced;
! 
!                --  Case 1: library level compilation unit declaration with
                 --  the pragma immediately following the declaration.
  
!                elsif Nkind (Parent (N)) = N_Compilation_Unit_Aux then
                    Set_Obsolescent
                      (Defining_Entity (Unit (Parent (Parent (N)))));
                    return;
*************** package body Sem_Prag is
*** 20984,20990 ****
  
              else
                 Pragma_Misplaced;
-                return;
              end if;
  
              --  Extract the entity of the related object declaration or package
--- 21018,21023 ----
*************** package body Sem_Prag is
*** 21102,21107 ****
--- 21135,21159 ----
                 if Partition_Elaboration_Policy_Sloc /= System_Location then
                    Partition_Elaboration_Policy_Sloc := Loc;
                 end if;
+ 
+                if PEP_Val = Name_Sequential
+                  and then not Restriction_Active (No_Task_Hierarchy)
+                then
+                   --  RM H.6(6) guarantees that No_Task_Hierarchy will be
+                   --  set eventually, so take advantage of that knowledge now.
+                   --  But we have to do this in a tricky way. If we simply
+                   --  set the No_Task_Hierarchy restriction here, then the
+                   --  assumption that the restriction will be set eventually
+                   --  becomes a self-fulfilling prophecy; the binder can
+                   --  then mistakenly conclude that the H.6(6) rule is
+                   --  satisified in cases where the post-compilation check
+                   --  should fail. So we invent a new restriction,
+                   --  No_Task_Hierarchy_Implicit, which is treated specially
+                   --  in the function Restriction_Active.
+ 
+                   Set_Restriction (No_Task_Hierarchy_Implicit, N);
+                   pragma Assert (Restriction_Active (No_Task_Hierarchy));
+                end if;
              end if;
           end PEP;
  
*************** package body Sem_Prag is
*** 22597,22603 ****
  
              if Nkind (Pack_Decl) /= N_Package_Body then
                 Pragma_Misplaced;
-                return;
              end if;
  
              Spec_Id := Corresponding_Spec (Pack_Decl);
--- 22649,22654 ----
*************** package body Sem_Prag is
*** 23184,23190 ****
           -- SPARK_Mode --
           ----------------
  
!          --  pragma SPARK_Mode [(On | Off)];
  
           when Pragma_SPARK_Mode => Do_SPARK_Mode : declare
              Mode_Id : SPARK_Mode_Type;
--- 23235,23241 ----
           -- SPARK_Mode --
           ----------------
  
!          --  pragma SPARK_Mode [(Auto | On | Off)];
  
           when Pragma_SPARK_Mode => Do_SPARK_Mode : declare
              Mode_Id : SPARK_Mode_Type;
*************** package body Sem_Prag is
*** 23430,23439 ****
                 Spec_Id : constant Entity_Id := Unique_Defining_Entity (Decl);
  
              begin
!                --  Ignore pragma when applied to the special body created for
!                --  inlining, recognized by its internal name _Parent.
  
!                if Chars (Body_Id) = Name_uParent then
                    return;
                 end if;
  
--- 23481,23494 ----
                 Spec_Id : constant Entity_Id := Unique_Defining_Entity (Decl);
  
              begin
!                --  Ignore pragma when applied to the special body created
!                --  for inlining, recognized by its internal name _Parent; or
!                --  when applied to the special body created for contracts,
!                --  recognized by its internal name _Wrapped_Statements.
  
!                if Chars (Body_Id) in Name_uParent
!                                    | Name_uWrapped_Statements
!                then
                    return;
                 end if;
  
*************** package body Sem_Prag is
*** 23670,23676 ****
              --  Check the legality of the mode (no argument = ON)
  
              if Arg_Count = 1 then
!                Check_Arg_Is_One_Of (Arg1, Name_On, Name_Off);
                 Mode := Chars (Get_Pragma_Arg (Arg1));
              else
                 Mode := Name_On;
--- 23725,23731 ----
              --  Check the legality of the mode (no argument = ON)
  
              if Arg_Count = 1 then
!                Check_Arg_Is_One_Of (Arg1, Name_Auto, Name_On, Name_Off);
                 Mode := Chars (Get_Pragma_Arg (Arg1));
              else
                 Mode := Name_On;
*************** package body Sem_Prag is
*** 23721,23726 ****
--- 23776,23790 ----
              --  the pragma resides to find a potential construct.
  
              else
+                --  An explicit mode of Auto is only allowed as a configuration
+                --  pragma. Escape "pragma" to avoid replacement with "aspect".
+ 
+                if Mode_Id = None then
+                   Error_Pragma_Arg
+                     ("only configuration 'p'r'a'g'm'a% can have value &",
+                      Arg1);
+                end if;
+ 
                 Stmt := Prev (N);
                 while Present (Stmt) loop
  
*************** package body Sem_Prag is
*** 23792,23798 ****
  
                    else
                       Pragma_Misplaced;
-                      exit;
                    end if;
  
                    Prev (Stmt);
--- 23856,23861 ----
*************** package body Sem_Prag is
*** 23929,23935 ****
  
              if Nkind (P) /= N_Task_Definition then
                 Pragma_Misplaced;
-                return;
  
              else
                 if Has_Storage_Size_Pragma (P) then
--- 23992,23997 ----
*************** package body Sem_Prag is
*** 24195,24207 ****
           -- Subprogram_Variant --
           ------------------------
  
!          --  pragma Subprogram_Variant ( SUBPROGRAM_VARIANT_ITEM
!          --                           {, SUBPROGRAM_VARIANT_ITEM } );
! 
!          --  SUBPROGRAM_VARIANT_ITEM ::=
!          --    CHANGE_DIRECTION => discrete_EXPRESSION
  
!          --  CHANGE_DIRECTION ::= Increases | Decreases
  
           --  Characteristics:
  
--- 24257,24272 ----
           -- Subprogram_Variant --
           ------------------------
  
!          --  pragma Subprogram_Variant ( SUBPROGRAM_VARIANT_LIST );
  
!          --  SUBPROGRAM_VARIANT_LIST ::= STRUCTURAL_SUBPROGRAM_VARIANT_ITEM
!          --                            | NUMERIC_SUBPROGRAM_VARIANT_ITEMS
!          --  NUMERIC_SUBPROGRAM_VARIANT_ITEMS ::=
!          --    NUMERIC_SUBPROGRAM_VARIANT_ITEM
!          --      {, NUMERIC_SUBPROGRAM_VARIANT_ITEM}
!          --  NUMERIC_SUBPROGRAM_VARIANT_ITEM ::= CHANGE_DIRECTION => EXPRESSION
!          --  STRUCTURAL_SUBPROGRAM_VARIANT_ITEM ::= Structural => EXPRESSION
!          --  CHANGE_DIRECTION        ::= Increases | Decreases
  
           --  Characteristics:
  
*************** package body Sem_Prag is
*** 24292,24298 ****
  
              else
                 Pragma_Misplaced;
-                return;
              end if;
  
              Spec_Id := Unique_Defining_Entity (Subp_Decl);
--- 24357,24362 ----
*************** package body Sem_Prag is
*** 24649,24655 ****
              Check_First_Subtype (Task_Type);
  
              if Rep_Item_Too_Late (Ent, N) then
!                raise Pragma_Exit;
              end if;
           end Task_Storage;
  
--- 24713,24719 ----
              Check_First_Subtype (Task_Type);
  
              if Rep_Item_Too_Late (Ent, N) then
!                return;
              end if;
           end Task_Storage;
  
*************** package body Sem_Prag is
*** 24780,24786 ****
              else
                 Error_Pragma
                   ("pragma % must be specified within a package declaration");
-                return;
              end if;
  
              Subp_Decl := Find_Related_Declaration_Or_Body (N);
--- 24844,24849 ----
*************** package body Sem_Prag is
*** 24798,24808 ****
              if Nkind (Subp_Decl) = N_Abstract_Subprogram_Declaration then
                 Error_Pragma
                   ("pragma % cannot be applied to abstract subprogram");
-                return;
  
              elsif Nkind (Subp_Decl) = N_Entry_Declaration then
                 Error_Pragma ("pragma % cannot be applied to entry");
-                return;
  
              --  The context is a [generic] subprogram declared at the top level
              --  of the [generic] package unit.
--- 24861,24869 ----
*************** package body Sem_Prag is
*** 24821,24827 ****
                 Error_Pragma
                   ("pragma % must be applied to a library-level subprogram "
                    & "declaration");
-                return;
              end if;
  
              Subp_Id := Defining_Entity (Subp_Decl);
--- 24882,24887 ----
*************** package body Sem_Prag is
*** 24896,24902 ****
              Check_Arg_Is_Library_Level_Local_Name (Arg1);
  
              Id := Get_Pragma_Arg (Arg1);
-             Analyze (Id);
  
              if not Is_Entity_Name (Id)
                or else Ekind (Entity (Id)) /= E_Variable
--- 24956,24961 ----
*************** package body Sem_Prag is
*** 24915,24921 ****
                   or else
                 Rep_Item_Too_Late (E, N)
              then
!                raise Pragma_Exit;
              end if;
  
              Set_Has_Pragma_Thread_Local_Storage (E);
--- 24974,24980 ----
                   or else
                 Rep_Item_Too_Late (E, N)
              then
!                return;
              end if;
  
              Set_Has_Pragma_Thread_Local_Storage (E);
*************** package body Sem_Prag is
*** 25512,25525 ****
  
              else
                 Pragma_Misplaced;
-                return;
              end if;
  
              Spec_Id := Unique_Defining_Entity (Subp_Decl);
  
              if Ekind (Spec_Id) not in E_Function | E_Generic_Function then
                 Pragma_Misplaced;
-                return;
              end if;
  
              --  A pragma that applies to a Ghost entity becomes Ghost for the
--- 25571,25582 ----
*************** package body Sem_Prag is
*** 25680,25695 ****
                       if CodePeer_Mode or GNATprove_Mode then
                          Rewrite (N, Make_Null_Statement (Loc));
                          Analyze (N);
!                         raise Pragma_Exit;
                       end if;
  
                    elsif Chars (Argx) = Name_Gnatprove then
                       if not GNATprove_Mode then
                          Rewrite (N, Make_Null_Statement (Loc));
                          Analyze (N);
!                         raise Pragma_Exit;
                       end if;
- 
                    else
                       raise Program_Error;
                    end if;
--- 25737,25751 ----
                       if CodePeer_Mode or GNATprove_Mode then
                          Rewrite (N, Make_Null_Statement (Loc));
                          Analyze (N);
!                         return;
                       end if;
  
                    elsif Chars (Argx) = Name_Gnatprove then
                       if not GNATprove_Mode then
                          Rewrite (N, Make_Null_Statement (Loc));
                          Analyze (N);
!                         return;
                       end if;
                    else
                       raise Program_Error;
                    end if;
*************** package body Sem_Prag is
*** 25717,25723 ****
                        Chars                        => Name_Warnings,
                        Pragma_Argument_Associations => Shifted_Args));
                    Analyze (N);
!                   raise Pragma_Exit;
                 end if;
  
                 --  One argument case
--- 25773,25779 ----
                        Chars                        => Name_Warnings,
                        Pragma_Argument_Associations => Shifted_Args));
                    Analyze (N);
!                   return;
                 end if;
  
                 --  One argument case
*************** package body Sem_Prag is
*** 25738,25743 ****
--- 25794,25806 ----
                         ("argument of pragma% must be On/Off or static string "
                          & "expression", Arg1);
  
+                   --  Use of pragma Warnings to set warning switches is
+                   --  ignored in GNATprove mode, as these switches apply to
+                   --  the compiler only.
+ 
+                   elsif GNATprove_Mode then
+                      null;
+ 
                    --  One argument string expression case
  
                    else
*************** package body Sem_Prag is
*** 25778,25784 ****
                                   C := Get_String_Char (Str, J);
                                   Chr := Get_Character (C);
  
!                                  if not Set_Dot_Warning_Switch (Chr) then
                                      Error_Pragma_Arg
                                        ("invalid warning switch character "
                                         & '.' & Chr, Arg1);
--- 25841,25847 ----
                                   C := Get_String_Char (Str, J);
                                   Chr := Get_Character (C);
  
!                                  if not Set_Warning_Switch ('.', Chr) then
                                      Error_Pragma_Arg
                                        ("invalid warning switch character "
                                         & '.' & Chr, Arg1);
*************** package body Sem_Prag is
*** 25787,25793 ****
                                --  Non-Dot case
  
                                else
!                                  OK := Set_Warning_Switch (Chr);
                                end if;
  
                                if not OK then
--- 25850,25856 ----
                                --  Non-Dot case
  
                                else
!                                  OK := Set_Warning_Switch (Plain, Chr);
                                end if;
  
                                if not OK then
*************** package body Sem_Prag is
*** 26162,26173 ****
        if Class_Present (N) then
  
           --  Verify that a class-wide condition is legal, i.e. the operation is
!          --  a primitive of a tagged type. Note that a generic subprogram is
!          --  not a primitive operation.
! 
!          Disp_Typ := Find_Dispatching_Type (Spec_Id);
  
!          if No (Disp_Typ) or else Is_Generic_Subprogram (Spec_Id) then
              Error_Msg_Name_1 := Original_Aspect_Pragma_Name (N);
  
              if From_Aspect_Specification (N) then
--- 26225,26233 ----
        if Class_Present (N) then
  
           --  Verify that a class-wide condition is legal, i.e. the operation is
!          --  a primitive of a tagged type.
  
!          if not Is_Dispatching_Operation (Spec_Id) then
              Error_Msg_Name_1 := Original_Aspect_Pragma_Name (N);
  
              if From_Aspect_Specification (N) then
*************** package body Sem_Prag is
*** 26186,26191 ****
--- 26246,26252 ----
           --  Remaining semantic checks require a full tree traversal
  
           else
+             Disp_Typ := Find_Dispatching_Type (Spec_Id);
              Check_Class_Wide_Condition (Expr);
           end if;
  
*************** package body Sem_Prag is
*** 26201,26206 ****
--- 26262,26281 ----
        Check_Postcondition_Use_In_Inlined_Subprogram (N, Spec_Id);
        Set_Is_Analyzed_Pragma (N);
  
+       --  If the subprogram is frozen then its class-wide pre- and post-
+       --  conditions have been preanalyzed (see Merge_Class_Conditions);
+       --  otherwise they must be preanalyzed now to ensure the correct
+       --  visibility of their referenced entities. This scenario occurs
+       --  when the subprogram is defined in a nested package (since the
+       --  end of the package does not cause freezing).
+ 
+       if Class_Present (N)
+         and then Is_Dispatching_Operation (Spec_Id)
+         and then not Is_Frozen (Spec_Id)
+       then
+          Preanalyze_Class_Conditions (Spec_Id);
+       end if;
+ 
        Restore_Ghost_Region (Saved_GM, Saved_IGR);
     end Analyze_Pre_Post_Condition_In_Decl_Part;
  
*************** package body Sem_Prag is
*** 29403,29411 ****
           --  Check placement of OTHERS if available (SPARK RM 6.1.3(1))
  
           if Nkind (Direction) = N_Identifier then
!             if Chars (Direction) /= Name_Decreases
!                  and then
!                Chars (Direction) /= Name_Increases
              then
                 Error_Msg_N ("wrong direction", Direction);
              end if;
--- 29478,29486 ----
           --  Check placement of OTHERS if available (SPARK RM 6.1.3(1))
  
           if Nkind (Direction) = N_Identifier then
!             if Chars (Direction) not in Name_Decreases
!                                       | Name_Increases
!                                       | Name_Structural
              then
                 Error_Msg_N ("wrong direction", Direction);
              end if;
*************** package body Sem_Prag is
*** 29414,29420 ****
           end if;
  
           Errors := Serious_Errors_Detected;
!          Preanalyze_Assert_Expression (Expr, Any_Discrete);
  
           --  Emit a clarification message when the variant expression
           --  contains at least one undefined reference, possibly due
--- 29489,29527 ----
           end if;
  
           Errors := Serious_Errors_Detected;
! 
!          --  Preanalyze_Assert_Expression, but without enforcing any of the two
!          --  acceptable types.
! 
!          Preanalyze_Assert_Expression (Expr);
! 
!          --  Expression of a discrete type is allowed. Nothing more to check
!          --  for structural variants.
! 
!          if Is_Discrete_Type (Etype (Expr))
!               or else Chars (Direction) = Name_Structural
!          then
!             null;
! 
!          --  Expression of a Big_Integer type (or its ghost variant) is only
!          --  allowed in Decreases clause.
! 
!          elsif
!            Is_RTE (Base_Type (Etype (Expr)), RE_Big_Integer)
!              or else
!            Is_RTE (Base_Type (Etype (Expr)), RO_GH_Big_Integer)
!          then
!             if Chars (Direction) = Name_Increases then
!                Error_Msg_N
!                  ("Subprogram_Variant with Big_Integer can only decrease",
!                   Expr);
!             end if;
! 
!          --  Expression of other types is not allowed
! 
!          else
!             Error_Msg_N ("expected a discrete or Big_Integer type", Expr);
!          end if;
  
           --  Emit a clarification message when the variant expression
           --  contains at least one undefined reference, possibly due
*************** package body Sem_Prag is
*** 29500,29505 ****
--- 29607,29620 ----
           Variant := First (Component_Associations (Variants));
           while Present (Variant) loop
              Analyze_Variant (Variant);
+ 
+             if Chars (First (Choices (Variant))) = Name_Structural
+               and then List_Length (Component_Associations (Variants)) > 1
+             then
+                Error_Msg_N
+                  ("Structural variant shall be the only variant", Variant);
+             end if;
+ 
              Next (Variant);
           end loop;
  
*************** package body Sem_Prag is
*** 31141,31163 ****
        end if;
     end Get_Base_Subprogram;
  
!    -----------------------
     -- Get_SPARK_Mode_Type --
!    -----------------------
  
     function Get_SPARK_Mode_Type (N : Name_Id) return SPARK_Mode_Type is
     begin
!       if N = Name_On then
!          return On;
!       elsif N = Name_Off then
!          return Off;
  
!       --  Any other argument is illegal. Assume that no SPARK mode applies to
!       --  avoid potential cascaded errors.
  
!       else
!          return None;
!       end if;
     end Get_SPARK_Mode_Type;
  
     ------------------------------------
--- 31256,31281 ----
        end if;
     end Get_Base_Subprogram;
  
!    -------------------------
     -- Get_SPARK_Mode_Type --
!    -------------------------
  
     function Get_SPARK_Mode_Type (N : Name_Id) return SPARK_Mode_Type is
     begin
!       case N is
!          when Name_Auto =>
!             return None;
!          when Name_On =>
!             return On;
!          when Name_Off =>
!             return Off;
  
!          --  Any other argument is illegal. Assume that no SPARK mode applies
!          --  to avoid potential cascaded errors.
  
!          when others =>
!             return None;
!       end case;
     end Get_SPARK_Mode_Type;
  
     ------------------------------------
*************** package body Sem_Prag is
*** 31574,31580 ****
        Pragma_Refined_Depends                => -1,
        Pragma_Refined_Global                 => -1,
        Pragma_Refined_Post                   => -1,
!       Pragma_Refined_State                  => -1,
        Pragma_Relative_Deadline              =>  0,
        Pragma_Remote_Access_Type             => -1,
        Pragma_Remote_Call_Interface          => -1,
--- 31692,31698 ----
        Pragma_Refined_Depends                => -1,
        Pragma_Refined_Global                 => -1,
        Pragma_Refined_Post                   => -1,
!       Pragma_Refined_State                  =>  0,
        Pragma_Relative_Deadline              =>  0,
        Pragma_Remote_Access_Type             => -1,
        Pragma_Remote_Call_Interface          => -1,
*************** package body Sem_Prag is
*** 31676,31709 ****
     --  Start of processing for Non_Significant_Pragma_Reference
  
     begin
        P := Parent (N);
  
!       if Nkind (P) /= N_Pragma_Argument_Association then
           return False;
  
!       else
!          Id := Get_Pragma_Id (Parent (P));
!          C := Sig_Flags (Id);
!          AN := Arg_No;
  
!          if AN = 0 then
              return False;
-          end if;
- 
-          case C is
-             when -1 =>
-                return False;
  
!             when 0 =>
!                return True;
  
!             when 92 .. 99 =>
!                return AN < (C - 90);
  
!             when others =>
!                return AN /= C;
!          end case;
!       end if;
     end Is_Non_Significant_Pragma_Reference;
  
     ------------------------------
--- 31794,31838 ----
     --  Start of processing for Non_Significant_Pragma_Reference
  
     begin
+       --  Reference might appear either directly as expression of a pragma
+       --  argument association, e.g. pragma Export (...), or within an
+       --  aggregate with component associations, e.g. pragma Refined_State
+       --  ((... => ...)).
+ 
        P := Parent (N);
+       loop
+          case Nkind (P) is
+             when N_Pragma_Argument_Association =>
+                exit;
+             when N_Aggregate | N_Component_Association =>
+                P := Parent (P);
+             when others =>
+                return False;
+          end case;
+       end loop;
  
!       AN := Arg_No;
! 
!       if AN = 0 then
           return False;
+       end if;
  
!       Id := Get_Pragma_Id (Parent (P));
!       C := Sig_Flags (Id);
  
!       case C is
!          when -1 =>
              return False;
  
!          when 0 =>
!             return True;
  
!          when 92 .. 99 =>
!             return AN < (C - 90);
  
!          when others =>
!             return AN /= C;
!       end case;
     end Is_Non_Significant_Pragma_Reference;
  
     ------------------------------
*************** package body Sem_Prag is
*** 32222,32231 ****
        then
           return;
  
!       --  Do not process internally generated routine _Postconditions
  
        elsif Ekind (Body_Id) = E_Procedure
!         and then Chars (Body_Id) = Name_uPostconditions
        then
           return;
        end if;
--- 32351,32360 ----
        then
           return;
  
!       --  Do not process internally generated routine _Wrapped_Statements
  
        elsif Ekind (Body_Id) = E_Procedure
!         and then Chars (Body_Id) = Name_uWrapped_Statements
        then
           return;
        end if;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_prag.ads gcc-13.1.0/gcc/ada/sem_prag.ads
*** gcc-12.2.0/gcc/ada/sem_prag.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_prag.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Prag is
*** 135,140 ****
--- 135,141 ----
        Pragma_Assert_And_Cut            => True,
        Pragma_Assume                    => True,
        Pragma_Check                     => True,
+       Pragma_Compile_Time_Error        => True,
        Pragma_Contract_Cases            => True,
        Pragma_Default_Initial_Condition => True,
        Pragma_Initial_Condition         => True,
*************** package Sem_Prag is
*** 149,159 ****
--- 150,164 ----
        Pragma_Precondition              => True,
        Pragma_Predicate                 => True,
        Pragma_Refined_Post              => True,
+       Pragma_Subprogram_Variant        => True,
        Pragma_Test_Case                 => True,
        Pragma_Type_Invariant            => True,
        Pragma_Type_Invariant_Class      => True,
        others                           => False);
  
+    --  Should to following constant arrays be renamed to better suit their
+    --  use as a predicate (e.g. Is_Pragma_*) ???
+ 
     --  The following table lists all the implementation-defined pragmas that
     --  should apply to the anonymous object produced by the analysis of a
     --  single protected or task type. The table should be synchronized with
*************** package Sem_Prag is
*** 198,203 ****
--- 203,234 ----
        Pragma_Warnings                      => False,
        others                               => True);
  
+    --  The following table lists all pragmas which are relevant to the analysis
+    --  of subprogram bodies.
+ 
+    Pragma_Significant_To_Subprograms : constant array (Pragma_Id) of Boolean :=
+      (Pragma_Contract_Cases    => True,
+       Pragma_Depends           => True,
+       Pragma_Ghost             => True,
+       Pragma_Global            => True,
+       Pragma_Inline            => True,
+       Pragma_Inline_Always     => True,
+       Pragma_Post              => True,
+       Pragma_Post_Class        => True,
+       Pragma_Postcondition     => True,
+       Pragma_Pre               => True,
+       Pragma_Pre_Class         => True,
+       Pragma_Precondition      => True,
+       Pragma_Pure              => True,
+       Pragma_Pure_Function     => True,
+       Pragma_Refined_Depends   => True,
+       Pragma_Refined_Global    => True,
+       Pragma_Refined_Post      => True,
+       Pragma_Refined_State     => True,
+       Pragma_Volatile          => True,
+       Pragma_Volatile_Function => True,
+       others                   => False);
+ 
     -----------------
     -- Subprograms --
     -----------------
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_res.adb gcc-13.1.0/gcc/ada/sem_res.adb
*** gcc-12.2.0/gcc/ada/sem_res.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_res.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Aspects;        use Aspects;
  with Atree;          use Atree;
  with Checks;         use Checks;
*************** with Debug_A;        use Debug_A;
*** 31,36 ****
--- 32,38 ----
  with Einfo;          use Einfo;
  with Einfo.Entities; use Einfo.Entities;
  with Einfo.Utils;    use Einfo.Utils;
+ with Elists;         use Elists;
  with Errout;         use Errout;
  with Expander;       use Expander;
  with Exp_Ch6;        use Exp_Ch6;
*************** with Sem_Case;       use Sem_Case;
*** 61,66 ****
--- 63,69 ----
  with Sem_Cat;        use Sem_Cat;
  with Sem_Ch3;        use Sem_Ch3;
  with Sem_Ch4;        use Sem_Ch4;
+ with Sem_Ch5;        use Sem_Ch5;
  with Sem_Ch6;        use Sem_Ch6;
  with Sem_Ch8;        use Sem_Ch8;
  with Sem_Ch13;       use Sem_Ch13;
*************** with Targparm;       use Targparm;
*** 88,93 ****
--- 91,97 ----
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
  with Urealp;         use Urealp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Res is
  
*************** package body Sem_Res is
*** 141,150 ****
  
     function Is_Atomic_Ref_With_Address (N : Node_Id) return Boolean;
     --  N is either an indexed component or a selected component. This function
!    --  returns true if the prefix refers to an object that has an address
     --  clause (the case in which we may want to issue a warning).
  
!    function Is_Definite_Access_Type (E : Entity_Id) return Boolean;
     --  Determine whether E is an access type declared by an access declaration,
     --  and not an (anonymous) allocator type.
  
--- 145,154 ----
  
     function Is_Atomic_Ref_With_Address (N : Node_Id) return Boolean;
     --  N is either an indexed component or a selected component. This function
!    --  returns true if the prefix denotes an atomic object that has an address
     --  clause (the case in which we may want to issue a warning).
  
!    function Is_Definite_Access_Type (E : N_Entity_Id) return Boolean;
     --  Determine whether E is an access type declared by an access declaration,
     --  and not an (anonymous) allocator type.
  
*************** package body Sem_Res is
*** 169,174 ****
--- 173,185 ----
     --  of the task, it must be replaced with a reference to the discriminant
     --  of the task being called.
  
+    procedure Resolve_Dependent_Expression
+      (N    : Node_Id;
+       Expr : Node_Id;
+       Typ  : Entity_Id);
+    --  Internal procedure to resolve the dependent expression Expr of the
+    --  conditional expression N with type Typ.
+ 
     procedure Resolve_Op_Concat_Arg
       (N       : Node_Id;
        Arg     : Node_Id;
*************** package body Sem_Res is
*** 201,206 ****
--- 212,220 ----
     procedure Resolve_Generalized_Indexing      (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Indexed_Component         (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Integer_Literal           (N : Node_Id; Typ : Entity_Id);
+    procedure Resolve_Interpolated_String_Literal
+      (N   : Node_Id;
+       Typ : Entity_Id);
     procedure Resolve_Logical_Op                (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Membership_Op             (N : Node_Id; Typ : Entity_Id);
     procedure Resolve_Null                      (N : Node_Id; Typ : Entity_Id);
*************** package body Sem_Res is
*** 289,300 ****
     --  Called after N has been resolved and evaluated, but before range checks
     --  have been applied. This rewrites the conversion into a simpler form.
  
-    function Unique_Fixed_Point_Type (N : Node_Id) return Entity_Id;
-    --  A universal_fixed expression in an universal context is unambiguous if
-    --  there is only one applicable fixed point type. Determining whether there
-    --  is only one requires a search over all visible entities, and happens
-    --  only in very pathological cases (see 6115-006).
- 
     function Try_User_Defined_Literal
       (N   : Node_Id;
        Typ : Entity_Id) return Boolean;
--- 303,308 ----
*************** package body Sem_Res is
*** 304,309 ****
--- 312,323 ----
     --  If such aspect exists, replace literal with a call to the
     --  corresponding function and return True, return false otherwise.
  
+    function Unique_Fixed_Point_Type (N : Node_Id) return Entity_Id;
+    --  A universal_fixed expression in an universal context is unambiguous if
+    --  there is only one applicable fixed point type. Determining whether there
+    --  is only one requires a search over all visible entities, and happens
+    --  only in very pathological cases (see 6115-006).
+ 
     -------------------------
     -- Ambiguous_Character --
     -------------------------
*************** package body Sem_Res is
*** 438,446 ****
        Loc  : constant Source_Ptr := Sloc (N);
        Literal_Aspect_Map :
          constant array (N_Numeric_Or_String_Literal) of Aspect_Id :=
!           (N_Integer_Literal => Aspect_Integer_Literal,
!            N_Real_Literal    => Aspect_Real_Literal,
!            N_String_Literal  => Aspect_String_Literal);
  
        Named_Number_Aspect_Map : constant array (Named_Kind) of Aspect_Id :=
          (E_Named_Integer => Aspect_Integer_Literal,
--- 452,461 ----
        Loc  : constant Source_Ptr := Sloc (N);
        Literal_Aspect_Map :
          constant array (N_Numeric_Or_String_Literal) of Aspect_Id :=
!           (N_Integer_Literal             => Aspect_Integer_Literal,
!            N_Interpolated_String_Literal => No_Aspect,
!            N_Real_Literal                => Aspect_Real_Literal,
!            N_String_Literal              => Aspect_String_Literal);
  
        Named_Number_Aspect_Map : constant array (Named_Kind) of Aspect_Id :=
          (E_Named_Integer => Aspect_Integer_Literal,
*************** package body Sem_Res is
*** 559,565 ****
  
           Set_Etype (Call, Etype (Callee));
  
!          if Base_Type (Etype (Call)) /= Base_Type (Typ) then
              --  Conversion may be needed in case of an inherited
              --  aspect of a derived type. For a null extension, we
              --  use a null extension aggregate instead because the
--- 574,585 ----
  
           Set_Etype (Call, Etype (Callee));
  
!          --  Conversion not needed if the result type of the call is class-wide
!          --  or if the result type matches the context type.
! 
!          if not Is_Class_Wide_Type (Typ)
!            and then Base_Type (Etype (Call)) /= Base_Type (Typ)
!          then
              --  Conversion may be needed in case of an inherited
              --  aspect of a derived type. For a null extension, we
              --  use a null extension aggregate instead because the
*************** package body Sem_Res is
*** 823,829 ****
  
     procedure Check_For_Visible_Operator (N : Node_Id; T : Entity_Id) is
     begin
!       if Is_Invisible_Operator (N, T) then
           Error_Msg_NE -- CODEFIX
             ("operator for} is not directly visible!", N, First_Subtype (T));
           Error_Msg_N -- CODEFIX
--- 843,852 ----
  
     procedure Check_For_Visible_Operator (N : Node_Id; T : Entity_Id) is
     begin
!       if Comes_From_Source (N)
!         and then not Is_Visible_Operator (Original_Node (N), T)
!         and then not Error_Posted (N)
!       then
           Error_Msg_NE -- CODEFIX
             ("operator for} is not directly visible!", N, First_Subtype (T));
           Error_Msg_N -- CODEFIX
*************** package body Sem_Res is
*** 885,894 ****
     ------------------------------
  
     function Check_Infinite_Recursion (Call : Node_Id) return Boolean is
-       function Enclosing_Declaration_Or_Statement (N : Node_Id) return Node_Id;
-       --  Return the nearest enclosing declaration or statement that houses
-       --  arbitrary node N.
- 
        function Invoked_With_Different_Arguments (N : Node_Id) return Boolean;
        --  Determine whether call N invokes the related enclosing subprogram
        --  with actuals that differ from the subprogram's formals.
--- 908,913 ----
*************** package body Sem_Res is
*** 924,956 ****
        --  Determine whether arbitrary node N appears within a conditional
        --  construct.
  
-       ----------------------------------------
-       -- Enclosing_Declaration_Or_Statement --
-       ----------------------------------------
- 
-       function Enclosing_Declaration_Or_Statement
-         (N : Node_Id) return Node_Id
-       is
-          Par : Node_Id;
- 
-       begin
-          Par := N;
-          while Present (Par) loop
-             if Is_Declaration (Par) or else Is_Statement (Par) then
-                return Par;
- 
-             --  Prevent the search from going too far
- 
-             elsif Is_Body_Or_Package_Declaration (Par) then
-                exit;
-             end if;
- 
-             Par := Parent (Par);
-          end loop;
- 
-          return N;
-       end Enclosing_Declaration_Or_Statement;
- 
        --------------------------------------
        -- Invoked_With_Different_Arguments --
        --------------------------------------
--- 943,948 ----
*************** package body Sem_Res is
*** 1502,1508 ****
     -- Is_Definite_Access_Type --
     -----------------------------
  
!    function Is_Definite_Access_Type (E : Entity_Id) return Boolean is
        Btyp : constant Entity_Id := Base_Type (E);
     begin
        return Ekind (Btyp) = E_Access_Type
--- 1494,1500 ----
     -- Is_Definite_Access_Type --
     -----------------------------
  
!    function Is_Definite_Access_Type (E : N_Entity_Id) return Boolean is
        Btyp : constant Entity_Id := Base_Type (E);
     begin
        return Ekind (Btyp) = E_Access_Type
*************** package body Sem_Res is
*** 1553,1559 ****
        Orig_Type : Entity_Id := Empty;
        Pack      : Entity_Id;
  
!       type Kind_Test is access function (E : Entity_Id) return Boolean;
  
        function Operand_Type_In_Scope (S : Entity_Id) return Boolean;
        --  If the operand is not universal, and the operator is given by an
--- 1545,1551 ----
        Orig_Type : Entity_Id := Empty;
        Pack      : Entity_Id;
  
!       type Kind_Test is access function (E : N_Entity_Id) return Boolean;
  
        function Operand_Type_In_Scope (S : Entity_Id) return Boolean;
        --  If the operand is not universal, and the operator is given by an
*************** package body Sem_Res is
*** 1662,1667 ****
--- 1654,1667 ----
     begin
        Op_Node := New_Node (Operator_Kind (Op_Name, Is_Binary), Sloc (N));
  
+       --  Preserve the Comes_From_Source flag on the result if the original
+       --  call came from source. Although it is not strictly the case that the
+       --  operator as such comes from the source, logically it corresponds
+       --  exactly to the function call in the source, so it should be marked
+       --  this way (e.g. to make sure that validity checks work fine).
+ 
+       Preserve_Comes_From_Source (Op_Node, N);
+ 
        --  Ensure that the corresponding operator has the same parent as the
        --  original call. This guarantees that parent traversals performed by
        --  the ABE mechanism succeed.
*************** package body Sem_Res is
*** 1900,1917 ****
        Set_Entity (Op_Node, Op_Id);
        Generate_Reference (Op_Id, N, ' ');
  
!       --  Do rewrite setting Comes_From_Source on the result if the original
!       --  call came from source. Although it is not strictly the case that the
!       --  operator as such comes from the source, logically it corresponds
!       --  exactly to the function call in the source, so it should be marked
!       --  this way (e.g. to make sure that validity checks work fine).
! 
!       declare
!          CS : constant Boolean := Comes_From_Source (N);
!       begin
!          Rewrite (N, Op_Node);
!          Set_Comes_From_Source (N, CS);
!       end;
  
        --  If this is an arithmetic operator and the result type is private,
        --  the operands and the result must be wrapped in conversion to
--- 1900,1906 ----
        Set_Entity (Op_Node, Op_Id);
        Generate_Reference (Op_Id, N, ' ');
  
!       Rewrite (N, Op_Node);
  
        --  If this is an arithmetic operator and the result type is private,
        --  the operands and the result must be wrapped in conversion to
*************** package body Sem_Res is
*** 2040,2061 ****
        Full_Analysis := False;
        Expander_Mode_Save_And_Set (False);
  
        --  Normally, we suppress all checks for this preanalysis. There is no
        --  point in processing them now, since they will be applied properly
        --  and in the proper location when the default expressions reanalyzed
        --  and reexpanded later on. We will also have more information at that
        --  point for possible suppression of individual checks.
  
!       --  However, in SPARK mode, most expansion is suppressed, and this
!       --  later reanalysis and reexpansion may not occur. SPARK mode does
        --  require the setting of checking flags for proof purposes, so we
!       --  do the SPARK preanalysis without suppressing checks.
  
        --  This special handling for SPARK mode is required for example in the
        --  case of Ada 2012 constructs such as quantified expressions, which are
        --  expanded in two separate steps.
  
!       if GNATprove_Mode then
           Analyze_And_Resolve (N, T);
        else
           Analyze_And_Resolve (N, T, Suppress => All_Checks);
--- 2029,2056 ----
        Full_Analysis := False;
        Expander_Mode_Save_And_Set (False);
  
+       --  See also Preanalyze_And_Resolve in sem.adb for similar handling
+ 
        --  Normally, we suppress all checks for this preanalysis. There is no
        --  point in processing them now, since they will be applied properly
        --  and in the proper location when the default expressions reanalyzed
        --  and reexpanded later on. We will also have more information at that
        --  point for possible suppression of individual checks.
  
!       --  However, in GNATprove mode, most expansion is suppressed, and this
!       --  later reanalysis and reexpansion may not occur. GNATprove mode does
        --  require the setting of checking flags for proof purposes, so we
!       --  do the GNATprove preanalysis without suppressing checks.
  
        --  This special handling for SPARK mode is required for example in the
        --  case of Ada 2012 constructs such as quantified expressions, which are
        --  expanded in two separate steps.
  
!       --  We also do not want to suppress checks if we are not dealing
!       --  with a default expression. One such case that is known to reach
!       --  this point is the expression of an expression function.
! 
!       if GNATprove_Mode or Nkind (Parent (N)) = N_Simple_Return_Statement then
           Analyze_And_Resolve (N, T);
        else
           Analyze_And_Resolve (N, T, Suppress => All_Checks);
*************** package body Sem_Res is
*** 2245,2256 ****
           elsif Nkind (N) = N_String_Literal
                   and then Is_Character_Type (Typ)
           then
!             Set_Character_Literal_Name (Char_Code (Character'Pos ('A')));
              Rewrite (N,
                Make_Character_Literal (Sloc (N),
                  Chars => Name_Find,
                  Char_Literal_Value =>
!                   UI_From_Int (Character'Pos ('A'))));
              Set_Etype (N, Any_Character);
              Set_Is_Static_Expression (N);
  
--- 2240,2251 ----
           elsif Nkind (N) = N_String_Literal
                   and then Is_Character_Type (Typ)
           then
!             Set_Character_Literal_Name (Get_Char_Code ('A'));
              Rewrite (N,
                Make_Character_Literal (Sloc (N),
                  Chars => Name_Find,
                  Char_Literal_Value =>
!                   UI_From_CC (Get_Char_Code ('A'))));
              Set_Etype (N, Any_Character);
              Set_Is_Static_Expression (N);
  
*************** package body Sem_Res is
*** 2357,2364 ****
             ("prefix must statically denote a non-remote subprogram", N);
        end if;
  
-       From_Lib := Comes_From_Predefined_Lib_Unit (N);
- 
        --  If the context is a Remote_Access_To_Subprogram, access attributes
        --  must be resolved with the corresponding fat pointer. There is no need
        --  to check for the attribute name since the return type of an
--- 2352,2357 ----
*************** package body Sem_Res is
*** 2472,2478 ****
        --  Declare_Expression and requires scope management.
  
        if Nkind (N) = N_Expression_With_Actions then
!          if Comes_From_Source (N) and then N = Original_Node (N) then
              Resolve_Declare_Expression (N, Typ);
           else
              Resolve (Expression (N), Typ);
--- 2465,2471 ----
        --  Declare_Expression and requires scope management.
  
        if Nkind (N) = N_Expression_With_Actions then
!          if Comes_From_Source (N) and then not Is_Rewrite_Substitution (N) then
              Resolve_Declare_Expression (N, Typ);
           else
              Resolve (Expression (N), Typ);
*************** package body Sem_Res is
*** 2481,2486 ****
--- 2474,2488 ----
           Found := True;
           Expr_Type := Etype (Expression (N));
  
+       --  The resolution of a conditional expression that is the operand of a
+       --  type conversion is determined by the conversion (RM 4.5.7(10/3)).
+ 
+       elsif Nkind (N) in N_Case_Expression | N_If_Expression
+         and then Nkind (Parent (N)) = N_Type_Conversion
+       then
+          Found := True;
+          Expr_Type := Etype (Parent (N));
+ 
        --  If not overloaded, then we know the type, and all that needs doing
        --  is to check that this type is compatible with the context.
  
*************** package body Sem_Res is
*** 2492,2497 ****
--- 2494,2501 ----
        --  is compatible with the context (i.e. the type passed to Resolve)
  
        else
+          From_Lib := Comes_From_Predefined_Lib_Unit (N);
+ 
           --  Loop through possible interpretations
  
           Get_First_Interp (N, I, It);
*************** package body Sem_Res is
*** 3150,3158 ****
                     = N_Iterated_Component_Association
                   and then Is_Boolean_Type (Typ)
                 then
!                   Error_Msg_N -- CODEFIX
!                     ("missing ALL or SOME in quantified expression",
!                      Defining_Identifier (First (Component_Associations (N))));
  
                 --  For an operator with no interpretation, check whether
                 --  one of its operands may be a user-defined literal.
--- 3154,3174 ----
                     = N_Iterated_Component_Association
                   and then Is_Boolean_Type (Typ)
                 then
!                   if Present
!                        (Iterator_Specification
!                          (First (Component_Associations (N))))
!                   then
!                      Error_Msg_N -- CODEFIX
!                        ("missing ALL or SOME in quantified expression",
!                         Defining_Identifier
!                           (Iterator_Specification
!                             (First (Component_Associations (N)))));
!                   else
!                      Error_Msg_N -- CODEFIX
!                        ("missing ALL or SOME in quantified expression",
!                         Defining_Identifier
!                           (First (Component_Associations (N))));
!                   end if;
  
                 --  For an operator with no interpretation, check whether
                 --  one of its operands may be a user-defined literal.
*************** package body Sem_Res is
*** 3215,3225 ****
           then
              Get_First_Interp (N, I, It);
              while Present (It.Typ) loop
!                if Present (It.Abstract_Op) and then
!                  Etype (It.Abstract_Op) = Typ
                 then
!                   Error_Msg_NE
!                     ("cannot call abstract subprogram &!", N, It.Abstract_Op);
                    return;
                 end if;
  
--- 3231,3241 ----
           then
              Get_First_Interp (N, I, It);
              while Present (It.Typ) loop
!                if Present (It.Abstract_Op)
!                  and then Etype (It.Abstract_Op) = Typ
                 then
!                   Nondispatching_Call_To_Abstract_Operation
!                     (N, It.Abstract_Op);
                    return;
                 end if;
  
*************** package body Sem_Res is
*** 3425,3430 ****
--- 3441,3449 ----
              when N_String_Literal =>
                 Resolve_String_Literal            (N, Ctx_Type);
  
+             when N_Interpolated_String_Literal =>
+                Resolve_Interpolated_String_Literal (N, Ctx_Type);
+ 
              when N_Target_Name =>
                 Resolve_Target_Name               (N, Ctx_Type);
  
*************** package body Sem_Res is
*** 3868,3875 ****
--- 3887,3900 ----
                 when N_Identifier | N_Expanded_Name =>
                    Id := Entity (N);
  
+                   --  Identifiers of components and discriminants are not names
+                   --  in the sense of Ada RM 4.1. They can only occur as a
+                   --  selector_name in selected_component or as a choice in
+                   --  component_association.
+ 
                    if Present (Id)
                      and then Is_Object (Id)
+                     and then Ekind (Id) not in E_Component | E_Discriminant
                      and then Is_Effectively_Volatile_For_Reading (Id)
                      and then
                        not Is_OK_Volatile_Context (Context       => Parent (N),
*************** package body Sem_Res is
*** 4148,4162 ****
           if No (A) and then Needs_No_Actuals (Nam) then
              null;
  
!          --  If we have an error in any actual or formal, indicated by a type
           --  of Any_Type, then abandon resolution attempt, and set result type
!          --  to Any_Type. Skip this if the actual is a Raise_Expression, whose
!          --  type is imposed from context.
  
!          elsif (Present (A) and then Etype (A) = Any_Type)
!            or else Etype (F) = Any_Type
!          then
!             if Nkind (A) /= N_Raise_Expression then
                 Set_Etype (N, Any_Type);
                 return;
              end if;
--- 4173,4205 ----
           if No (A) and then Needs_No_Actuals (Nam) then
              null;
  
!          --  If we have an error in any formal or actual, indicated by a type
           --  of Any_Type, then abandon resolution attempt, and set result type
!          --  to Any_Type.
  
!          elsif Etype (F) = Any_Type then
!             Set_Etype (N, Any_Type);
!             return;
! 
!          elsif Present (A) and then Etype (A) = Any_Type then
!             --  For the peculiar case of a user-defined comparison or equality
!             --  operator that does not return a boolean type, the operands may
!             --  have been ambiguous for the predefined operator and, therefore,
!             --  marked with Any_Type. Since the operation has been resolved to
!             --  the user-defined operator, that is irrelevant, so reset Etype.
! 
!             if Nkind (Original_Node (N)) in N_Op_Compare
!               and then not Is_Boolean_Type (Etype (N))
!             then
!                Set_Etype (A, Etype (F));
! 
!             --  Also skip this if the actual is a Raise_Expression, whose type
!             --  is imposed from context.
! 
!             elsif Nkind (A) = N_Raise_Expression then
!                null;
! 
!             else
                 Set_Etype (N, Any_Type);
                 return;
              end if;
*************** package body Sem_Res is
*** 4587,4592 ****
--- 4630,4636 ----
                   ("invalid use of untagged formal incomplete type", A);
              end if;
  
+             --  For mode IN, if actual is an entity, and the type of the formal
              --  has warnings suppressed, then we reset Never_Set_In_Source for
              --  the calling entity. The reason for this is to catch cases like
              --  GNAT.Spitbol.Patterns.Vstring_Var where the called subprogram
*************** package body Sem_Res is
*** 5585,5591 ****
        --  caller does use an allocator, it will be caught at the call site.
  
        if No_Pool_Assigned (Typ)
!         and then not Alloc_For_BIP_Return (N)
        then
           Error_Msg_N ("allocation from empty storage pool!", N);
  
--- 5629,5635 ----
        --  caller does use an allocator, it will be caught at the call site.
  
        if No_Pool_Assigned (Typ)
!         and then not For_Special_Return_Object (N)
        then
           Error_Msg_N ("allocation from empty storage pool!", N);
  
*************** package body Sem_Res is
*** 6856,6868 ****
        --  functional notation. Replace call node with operator node, so
        --  that actuals can be resolved appropriately.
  
!       if Is_Predefined_Op (Nam) or else Ekind (Nam) = E_Operator then
!          Make_Call_Into_Operator (N, Typ, Entity (Name (N)));
           return;
  
!       elsif Present (Alias (Nam))
!         and then Is_Predefined_Op (Alias (Nam))
!       then
           Resolve_Actuals (N, Nam);
           Make_Call_Into_Operator (N, Typ, Alias (Nam));
           return;
--- 6900,6910 ----
        --  functional notation. Replace call node with operator node, so
        --  that actuals can be resolved appropriately.
  
!       if Ekind (Nam) = E_Operator or else Is_Predefined_Op (Nam) then
!          Make_Call_Into_Operator (N, Typ, Nam);
           return;
  
!       elsif Present (Alias (Nam)) and then Is_Predefined_Op (Alias (Nam)) then
           Resolve_Actuals (N, Nam);
           Make_Call_Into_Operator (N, Typ, Alias (Nam));
           return;
*************** package body Sem_Res is
*** 6928,6934 ****
          and then Requires_Transient_Scope (Etype (Nam))
          and then not Is_Ignored_Ghost_Entity (Nam)
        then
!          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
  
           --  If the call appears within the bounds of a loop, it will be
           --  rewritten and reanalyzed, nothing left to do here.
--- 6970,6976 ----
          and then Requires_Transient_Scope (Etype (Nam))
          and then not Is_Ignored_Ghost_Entity (Nam)
        then
!          Establish_Transient_Scope (N, Needs_Secondary_Stack (Etype (Nam)));
  
           --  If the call appears within the bounds of a loop, it will be
           --  rewritten and reanalyzed, nothing left to do here.
*************** package body Sem_Res is
*** 7042,7065 ****
        --  If the subprogram is a primitive operation, check whether or not
        --  it is a correct dispatching call.
  
!       if Is_Overloadable (Nam)
!         and then Is_Dispatching_Operation (Nam)
!       then
           Check_Dispatching_Call (N);
  
!       elsif Ekind (Nam) /= E_Subprogram_Type
!         and then Is_Abstract_Subprogram (Nam)
!         and then not In_Instance
!       then
!          Error_Msg_NE ("cannot call abstract subprogram &!", N, Nam);
        end if;
  
        --  If this is a dispatching call, generate the appropriate reference,
        --  for better source navigation in GNAT Studio.
  
!       if Is_Overloadable (Nam)
!         and then Present (Controlling_Argument (N))
!       then
           Generate_Reference (Nam, Subp, 'R');
  
        --  Normal case, not a dispatching call: generate a call reference
--- 7084,7102 ----
        --  If the subprogram is a primitive operation, check whether or not
        --  it is a correct dispatching call.
  
!       if Is_Overloadable (Nam) and then Is_Dispatching_Operation (Nam) then
           Check_Dispatching_Call (N);
  
!       --  If the subprogram is an abstract operation, then flag an error
! 
!       elsif Is_Overloadable (Nam) and then Is_Abstract_Subprogram (Nam) then
!          Nondispatching_Call_To_Abstract_Operation (N, Nam);
        end if;
  
        --  If this is a dispatching call, generate the appropriate reference,
        --  for better source navigation in GNAT Studio.
  
!       if Is_Overloadable (Nam) and then Present (Controlling_Argument (N)) then
           Generate_Reference (Nam, Subp, 'R');
  
        --  Normal case, not a dispatching call: generate a call reference
*************** package body Sem_Res is
*** 7163,7168 ****
--- 7200,7211 ----
  
        Analyze_Dimension_Call (N, Nam);
  
+       --  Check unreachable code after calls to procedures with No_Return
+ 
+       if Ekind (Nam) = E_Procedure and then No_Return (Nam) then
+          Check_Unreachable_Code (N);
+       end if;
+ 
        --  All done, evaluate call and deal with elaboration issues
  
        Eval_Call (N);
*************** package body Sem_Res is
*** 7325,7331 ****
                 --  loops, as this would create complex actions inside
                 --  the condition, that are not handled by GNATprove.
  
!                elsif In_While_Loop_Condition (N) then
                    Cannot_Inline
                      ("cannot inline & (in while loop condition)?", N, Nam_UA);
  
--- 7368,7374 ----
                 --  loops, as this would create complex actions inside
                 --  the condition, that are not handled by GNATprove.
  
!                elsif In_Statement_Condition_With_Actions (N) then
                    Cannot_Inline
                      ("cannot inline & (in while loop condition)?", N, Nam_UA);
  
*************** package body Sem_Res is
*** 7372,7378 ****
              return;
           end if;
  
!          Resolve (Alt_Expr, Typ);
           Alt_Typ := Etype (Alt_Expr);
  
           --  When the expression is of a scalar subtype different from the
--- 7415,7423 ----
              return;
           end if;
  
!          Resolve_Dependent_Expression (N, Alt_Expr, Typ);
! 
!          Check_Unset_Reference (Alt_Expr);
           Alt_Typ := Etype (Alt_Expr);
  
           --  When the expression is of a scalar subtype different from the
*************** package body Sem_Res is
*** 7489,7527 ****
     -- Resolve_Comparison_Op --
     ---------------------------
  
!    --  Context requires a boolean type, and plays no role in resolution.
!    --  Processing identical to that for equality operators. The result type is
!    --  the base type, which matters when pathological subtypes of booleans with
!    --  limited ranges are used.
  
     procedure Resolve_Comparison_Op (N : Node_Id; Typ : Entity_Id) is
        L : constant Node_Id := Left_Opnd (N);
        R : constant Node_Id := Right_Opnd (N);
-       T : Entity_Id;
  
!    begin
!       --  If this is an intrinsic operation which is not predefined, use the
!       --  types of its declared arguments to resolve the possibly overloaded
!       --  operands. Otherwise the operands are unambiguous and specify the
!       --  expected type.
! 
!       if Scope (Entity (N)) /= Standard_Standard then
!          T := Etype (First_Entity (Entity (N)));
! 
!       else
!          T := Find_Unique_Type (L, R);
  
!          if T = Any_Fixed then
!             T := Unique_Fixed_Point_Type (L);
!          end if;
        end if;
  
        Set_Etype (N, Base_Type (Typ));
        Generate_Reference (T, N, ' ');
  
-       --  Skip remaining processing if already set to Any_Type
- 
        if T = Any_Type then
           return;
        end if;
  
--- 7534,7566 ----
     -- Resolve_Comparison_Op --
     ---------------------------
  
!    --  The operands must have compatible types and the boolean context does not
!    --  participate in the resolution. The first pass verifies that the operands
!    --  are not ambiguous and sets their type correctly, or to Any_Type in case
!    --  of ambiguity. If both operands are strings or aggregates, then they are
!    --  ambiguous even if they carry a single (universal) type.
  
     procedure Resolve_Comparison_Op (N : Node_Id; Typ : Entity_Id) is
        L : constant Node_Id := Left_Opnd (N);
        R : constant Node_Id := Right_Opnd (N);
  
!       T : Entity_Id := Find_Unique_Type (L, R);
  
!    begin
!       if T = Any_Fixed then
!          T := Unique_Fixed_Point_Type (L);
        end if;
  
        Set_Etype (N, Base_Type (Typ));
        Generate_Reference (T, N, ' ');
  
        if T = Any_Type then
+          --  Deal with explicit ambiguity of operands
+ 
+          if Is_Overloaded (L) or else Is_Overloaded (R) then
+             Ambiguous_Operands (N);
+          end if;
+ 
           return;
        end if;
  
*************** package body Sem_Res is
*** 7578,7584 ****
        Local : Entity_Id := Empty;
  
        function Replace_Local (N  : Node_Id) return Traverse_Result;
!       --  Use a tree traversal to replace each ocurrence of the name of
        --  a local object declared in the construct, with the corresponding
        --  entity. This replaces the usual way to perform name capture by
        --  visibility, because it is not possible to place on the scope
--- 7617,7623 ----
        Local : Entity_Id := Empty;
  
        function Replace_Local (N  : Node_Id) return Traverse_Result;
!       --  Use a tree traversal to replace each occurrence of the name of
        --  a local object declared in the construct, with the corresponding
        --  entity. This replaces the usual way to perform name capture by
        --  visibility, because it is not possible to place on the scope
*************** package body Sem_Res is
*** 7615,7621 ****
  
        procedure Replace_Local_Ref is new Traverse_Proc (Replace_Local);
  
!       --  Start of processing for  Resolve_Declare_Expression
  
     begin
  
--- 7654,7660 ----
  
        procedure Replace_Local_Ref is new Traverse_Proc (Replace_Local);
  
!    --  Start of processing for Resolve_Declare_Expression
  
     begin
  
*************** package body Sem_Res is
*** 7628,7633 ****
--- 7667,7685 ----
           then
              Local := Defining_Identifier (Decl);
              Replace_Local_Ref (Expr);
+ 
+             --  Traverse the expression to replace references to local
+             --  variables that occur within declarations of the
+             --  declare_expression.
+ 
+             declare
+                D : Node_Id := Next (Decl);
+             begin
+                while Present (D) loop
+                   Replace_Local_Ref (D);
+                   Next (D);
+                end loop;
+             end;
           end if;
  
           Next (Decl);
*************** package body Sem_Res is
*** 7642,7649 ****
--- 7694,7730 ----
        end if;
  
        Resolve (Expr, Typ);
+       Check_Unset_Reference (Expr);
     end Resolve_Declare_Expression;
  
+    -----------------------------------
+    --  Resolve_Dependent_Expression --
+    -----------------------------------
+ 
+    procedure Resolve_Dependent_Expression
+      (N    : Node_Id;
+       Expr : Node_Id;
+       Typ  : Entity_Id)
+    is
+    begin
+       --  RM 4.5.7(8/3) says that the expected type of dependent expressions is
+       --  that of the conditional expression but RM 4.5.7(10/3) forces the type
+       --  of the conditional expression without changing the expected type (the
+       --  expected type of the operand of a type conversion is any type), so we
+       --  may have a gap between these two types that is bridged by the dynamic
+       --  semantics specified by RM 4.5.7(20/3) with the associated legality
+       --  rule RM 4.5.7(16/3) that will be automatically enforced.
+ 
+       if Nkind (Parent (N)) = N_Type_Conversion
+         and then Nkind (Expr) /= N_Raise_Expression
+       then
+          Convert_To_And_Rewrite (Typ, Expr);
+          Analyze_And_Resolve (Expr);
+       else
+          Resolve (Expr, Typ);
+       end if;
+    end Resolve_Dependent_Expression;
+ 
     -----------------------------------------
     -- Resolve_Discrete_Subtype_Indication --
     -----------------------------------------
*************** package body Sem_Res is
*** 8354,8359 ****
--- 8435,8441 ----
        if Is_Entry (Nam)
          and then Present (Contract_Wrapper (Nam))
          and then Current_Scope /= Contract_Wrapper (Nam)
+         and then Current_Scope /= Wrapped_Statements (Contract_Wrapper (Nam))
        then
           --  Note the entity being called before rewriting the call, so that
           --  it appears used at this point.
*************** package body Sem_Res is
*** 8502,8508 ****
        elsif Expander_Active
          and then Requires_Transient_Scope (Etype (Nam))
        then
!          Establish_Transient_Scope (N, Manage_Sec_Stack => True);
        end if;
  
        --  Now we know that this is not a call to a function that returns an
--- 8584,8590 ----
        elsif Expander_Active
          and then Requires_Transient_Scope (Etype (Nam))
        then
!          Establish_Transient_Scope (N, Needs_Secondary_Stack (Etype (Nam)));
        end if;
  
        --  Now we know that this is not a call to a function that returns an
*************** package body Sem_Res is
*** 8510,8534 ****
        --  overlapping actuals, just like for a subprogram call.
  
        Warn_On_Overlapping_Actuals (Nam, N);
- 
     end Resolve_Entry_Call;
  
     -------------------------
     -- Resolve_Equality_Op --
     -------------------------
  
!    --  Both arguments must have the same type, and the boolean context does
!    --  not participate in the resolution. The first pass verifies that the
!    --  interpretation is not ambiguous, and the type of the left argument is
!    --  correctly set, or is Any_Type in case of ambiguity. If both arguments
!    --  are strings or aggregates, allocators, or Null, they are ambiguous even
!    --  though they carry a single (universal) type. Diagnose this case here.
  
     procedure Resolve_Equality_Op (N : Node_Id; Typ : Entity_Id) is
!       L : constant Node_Id   := Left_Opnd (N);
!       R : constant Node_Id   := Right_Opnd (N);
        T : Entity_Id := Find_Unique_Type (L, R);
  
        procedure Check_If_Expression (Cond : Node_Id);
        --  The resolution rule for if expressions requires that each such must
        --  have a unique type. This means that if several dependent expressions
--- 8592,8639 ----
        --  overlapping actuals, just like for a subprogram call.
  
        Warn_On_Overlapping_Actuals (Nam, N);
     end Resolve_Entry_Call;
  
     -------------------------
     -- Resolve_Equality_Op --
     -------------------------
  
!    --  The operands must have compatible types and the boolean context does not
!    --  participate in the resolution. The first pass verifies that the operands
!    --  are not ambiguous and sets their type correctly, or to Any_Type in case
!    --  of ambiguity. If both operands are strings, aggregates, allocators, or
!    --  null, they are ambiguous even if they carry a single (universal) type.
  
     procedure Resolve_Equality_Op (N : Node_Id; Typ : Entity_Id) is
!       L : constant Node_Id := Left_Opnd (N);
!       R : constant Node_Id := Right_Opnd (N);
! 
!       Implicit_NE_For_User_Defined_Operator : constant Boolean :=
!         Nkind (N) = N_Op_Ne
!           and then Ekind (Entity (N)) = E_Function
!           and then not Comes_From_Source (Entity (N))
!           and then not
!             Is_Intrinsic_Subprogram (Corresponding_Equality (Entity (N)));
!       --  Whether this is a call to the implicit inequality operator created
!       --  for a user-defined operator that is not an intrinsic subprogram, in
!       --  which case we need to skip some processing.
! 
        T : Entity_Id := Find_Unique_Type (L, R);
  
+       procedure Check_Access_Attribute (N : Node_Id);
+       --  For any object, '[Unchecked_]Access of such object can never be
+       --  passed as an operand to the Universal_Access equality operators.
+       --  This is so because the expected type for Obj'Access in a call to
+       --  these operators, whose formals are of type Universal_Access, is
+       --  Universal_Access, and Universal_Access does not have a designated
+       --  type. For more details, see RM 3.10.2(2/2) and 6.4.1(3).
+ 
+       procedure Check_Designated_Object_Types (T1, T2 : Entity_Id);
+       --  Check RM 4.5.2(9.6/2) on the given designated object types
+ 
+       procedure Check_Designated_Subprogram_Types (T1, T2 : Entity_Id);
+       --  Check RM 4.5.2(9.7/2) on the given designated subprogram types
+ 
        procedure Check_If_Expression (Cond : Node_Id);
        --  The resolution rule for if expressions requires that each such must
        --  have a unique type. This means that if several dependent expressions
*************** package body Sem_Res is
*** 8554,8559 ****
--- 8659,8712 ----
        --  could be the cause of confused priorities. Note that if the not is
        --  in parens, then False is returned.
  
+       ----------------------------
+       -- Check_Access_Attribute --
+       ----------------------------
+ 
+       procedure Check_Access_Attribute (N : Node_Id) is
+       begin
+          if Nkind (N) = N_Attribute_Reference
+            and then Attribute_Name (N) in Name_Access | Name_Unchecked_Access
+          then
+             Error_Msg_N
+               ("access attribute cannot be used as actual for "
+                & "universal_access equality", N);
+          end if;
+       end Check_Access_Attribute;
+ 
+       -----------------------------------
+       -- Check_Designated_Object_Types --
+       -----------------------------------
+ 
+       procedure Check_Designated_Object_Types (T1, T2 : Entity_Id) is
+       begin
+          if (Is_Elementary_Type (T1) or else Is_Array_Type (T1))
+            and then (Base_Type (T1) /= Base_Type (T2)
+                       or else not Subtypes_Statically_Match (T1, T2))
+          then
+             Error_Msg_N
+               ("designated subtypes for universal_access equality "
+                & "do not statically match (RM 4.5.2(9.6/2)", N);
+             Error_Msg_NE ("\left operand has}!",  N, Etype (L));
+             Error_Msg_NE ("\right operand has}!", N, Etype (R));
+          end if;
+       end Check_Designated_Object_Types;
+ 
+       ---------------------------------------
+       -- Check_Designated_Subprogram_Types --
+       ---------------------------------------
+ 
+       procedure Check_Designated_Subprogram_Types (T1, T2 : Entity_Id) is
+       begin
+          if not Subtype_Conformant (T1, T2) then
+             Error_Msg_N
+               ("designated subtypes for universal_access equality "
+                & "not subtype conformant (RM 4.5.2(9.7/2)", N);
+             Error_Msg_NE ("\left operand has}!",  N, Etype (L));
+             Error_Msg_NE ("\right operand has}!", N, Etype (R));
+          end if;
+       end Check_Designated_Subprogram_Types;
+ 
        -------------------------
        -- Check_If_Expression --
        -------------------------
*************** package body Sem_Res is
*** 8727,8740 ****
     --  Start of processing for Resolve_Equality_Op
  
     begin
-       Set_Etype (N, Base_Type (Typ));
-       Generate_Reference (T, N, ' ');
- 
        if T = Any_Fixed then
           T := Unique_Fixed_Point_Type (L);
        end if;
  
!       if T /= Any_Type then
           if T = Any_String    or else
              T = Any_Composite or else
              T = Any_Character
--- 8880,8921 ----
     --  Start of processing for Resolve_Equality_Op
  
     begin
        if T = Any_Fixed then
           T := Unique_Fixed_Point_Type (L);
        end if;
  
!       Set_Etype (N, Base_Type (Typ));
!       Generate_Reference (T, N, ' ');
! 
!       if T = Any_Type then
!          --  Deal with explicit ambiguity of operands, unless this is a call
!          --  to the implicit inequality operator created for a user-defined
!          --  operator that is not an intrinsic subprogram, since the common
!          --  resolution of operands done here does not apply to it.
! 
!          if not Implicit_NE_For_User_Defined_Operator
!            and then (Is_Overloaded (L) or else Is_Overloaded (R))
!          then
!             Ambiguous_Operands (N);
!          end if;
! 
!       else
! 
!          --  For Ada 2022, check for user-defined literals when the type has
!          --  the appropriate aspect.
! 
!          if Has_Applicable_User_Defined_Literal (L, Etype (R)) then
!             Resolve (L, Etype (R));
!             Set_Etype (N, Standard_Boolean);
!          end if;
! 
!          if Has_Applicable_User_Defined_Literal (R, Etype (L)) then
!             Resolve (R, Etype (L));
!             Set_Etype (N, Standard_Boolean);
!          end if;
! 
!          --  Deal with other error cases
! 
           if T = Any_String    or else
              T = Any_Composite or else
              T = Any_Character
*************** package body Sem_Res is
*** 8773,8781 ****
--- 8954,9035 ----
              Check_If_Expression (R);
           end if;
  
+          --  RM 4.5.2(9.5/2): At least one of the operands of the equality
+          --  operators for universal_access shall be of type universal_access,
+          --  or both shall be of access-to-object types, or both shall be of
+          --  access-to-subprogram types (RM 4.5.2(9.5/2)).
+ 
+          if Is_Anonymous_Access_Type (T)
+            and then Etype (L) /= Universal_Access
+            and then Etype (R) /= Universal_Access
+          then
+             --  RM 4.5.2(9.6/2): When both are of access-to-object types, the
+             --  designated types shall be the same or one shall cover the other
+             --  and if the designated types are elementary or array types, then
+             --  the designated subtypes shall statically match.
+ 
+             if Is_Access_Object_Type (Etype (L))
+               and then Is_Access_Object_Type (Etype (R))
+             then
+                Check_Designated_Object_Types
+                  (Designated_Type (Etype (L)), Designated_Type (Etype (R)));
+ 
+             --  RM 4.5.2(9.7/2): When both are of access-to-subprogram types,
+             --  the designated profiles shall be subtype conformant.
+ 
+             elsif Is_Access_Subprogram_Type (Etype (L))
+               and then Is_Access_Subprogram_Type (Etype (R))
+             then
+                Check_Designated_Subprogram_Types
+                  (Designated_Type (Etype (L)), Designated_Type (Etype (R)));
+             end if;
+          end if;
+ 
+          --  Check another case of equality operators for universal_access
+ 
+          if Is_Anonymous_Access_Type (T) and then Comes_From_Source (N) then
+             Check_Access_Attribute (L);
+             Check_Access_Attribute (R);
+          end if;
+ 
           Resolve (L, T);
           Resolve (R, T);
  
+          --  AI12-0413: user-defined primitive equality of an untagged record
+          --  type hides the predefined equality operator, including within a
+          --  generic, and if it is declared abstract, results in an illegal
+          --  instance if the operator is used in the spec, or in the raising
+          --  of Program_Error if used in the body of an instance.
+ 
+          if Nkind (N) = N_Op_Eq
+            and then In_Instance
+            and then Ada_Version >= Ada_2012
+          then
+             declare
+                U : constant Entity_Id := Underlying_Type (T);
+ 
+                Eq : Entity_Id;
+ 
+             begin
+                if Present (U)
+                  and then Is_Record_Type (U)
+                  and then not Is_Tagged_Type (U)
+                then
+                   Eq := Get_User_Defined_Equality (T);
+ 
+                   if Present (Eq) then
+                      if Is_Abstract_Subprogram (Eq) then
+                         Nondispatching_Call_To_Abstract_Operation (N, Eq);
+                      else
+                         Rewrite_Operator_As_Call (N, Eq);
+                      end if;
+ 
+                      return;
+                   end if;
+                end if;
+             end;
+          end if;
+ 
           --  If the unique type is a class-wide type then it will be expanded
           --  into a dispatching call to the predefined primitive. Therefore we
           --  check here for potential violation of such restriction.
*************** package body Sem_Res is
*** 8822,8926 ****
              Error_Msg_N ("?q?equality should be parenthesized here!", N);
           end if;
  
-          --  If the equality is overloaded and the operands have resolved
-          --  properly, set the proper equality operator on the node. The
-          --  current setting is the first one found during analysis, which
-          --  is not necessarily the one to which the node has resolved.
- 
-          if Is_Overloaded (N) then
-             declare
-                I  : Interp_Index;
-                It : Interp;
- 
-             begin
-                Get_First_Interp (N, I, It);
- 
-                --  If the equality is user-defined, the type of the operands
-                --  matches that of the formals. For a predefined operator,
-                --  it is the scope that matters, given that the predefined
-                --  equality has Any_Type formals. In either case the result
-                --  type (most often Boolean) must match the context. The scope
-                --  is either that of the type, if there is a generated equality
-                --  (when there is an equality for the component type), or else
-                --  Standard otherwise.
- 
-                while Present (It.Typ) loop
-                   if Etype (It.Nam) = Typ
-                     and then
-                      (Etype (First_Entity (It.Nam)) = Etype (L)
-                        or else Scope (It.Nam) = Standard_Standard
-                        or else Scope (It.Nam) = Scope (T))
-                   then
-                      Set_Entity (N, It.Nam);
- 
-                      Set_Is_Overloaded (N, False);
-                      exit;
-                   end if;
- 
-                   Get_Next_Interp (I, It);
-                end loop;
- 
-                --  If expansion is active and this is an inherited operation,
-                --  replace it with its ancestor. This must not be done during
-                --  preanalysis because the type may not be frozen yet, as when
-                --  the context is a precondition or postcondition.
- 
-                if Present (Alias (Entity (N))) and then Expander_Active then
-                   Set_Entity (N, Alias (Entity (N)));
-                end if;
-             end;
-          end if;
- 
           Check_Unset_Reference (L);
           Check_Unset_Reference (R);
           Generate_Operator_Reference (N, T);
           Check_Low_Bound_Tested (N);
  
!          --  If this is an inequality, it may be the implicit inequality
!          --  created for a user-defined operation, in which case the corres-
!          --  ponding equality operation is not intrinsic, and the operation
!          --  cannot be constant-folded. Else fold.
  
!          if Nkind (N) = N_Op_Eq
!            or else Comes_From_Source (Entity (N))
!            or else Ekind (Entity (N)) = E_Operator
!            or else Is_Intrinsic_Subprogram
!                      (Corresponding_Equality (Entity (N)))
!          then
              Analyze_Dimension (N);
              Eval_Relational_Op (N);
  
           elsif Nkind (N) = N_Op_Ne
             and then Is_Abstract_Subprogram (Entity (N))
           then
!             Error_Msg_NE ("cannot call abstract subprogram &!", N, Entity (N));
!          end if;
! 
!          --  Ada 2005: If one operand is an anonymous access type, convert the
!          --  other operand to it, to ensure that the underlying types match in
!          --  the back-end. Same for access_to_subprogram, and the conversion
!          --  verifies that the types are subtype conformant.
! 
!          --  We apply the same conversion in the case one of the operands is a
!          --  private subtype of the type of the other.
! 
!          --  Why the Expander_Active test here ???
! 
!          if Expander_Active
!            and then
!              (Ekind (T) in E_Anonymous_Access_Type
!                          | E_Anonymous_Access_Subprogram_Type
!                or else Is_Private_Type (T))
!          then
!             if Etype (L) /= T then
!                Rewrite (L, Unchecked_Convert_To (T, L));
!                Analyze_And_Resolve (L, T);
!             end if;
! 
!             if (Etype (R)) /= T then
!                Rewrite (R, Unchecked_Convert_To (Etype (L), R));
!                Analyze_And_Resolve (R, T);
!             end if;
           end if;
        end if;
     end Resolve_Equality_Op;
--- 9076,9098 ----
              Error_Msg_N ("?q?equality should be parenthesized here!", N);
           end if;
  
           Check_Unset_Reference (L);
           Check_Unset_Reference (R);
           Generate_Operator_Reference (N, T);
           Check_Low_Bound_Tested (N);
  
!          --  Unless this is a call to the implicit inequality operator created
!          --  for a user-defined operator that is not an intrinsic subprogram,
!          --  try to fold the operation.
  
!          if not Implicit_NE_For_User_Defined_Operator then
              Analyze_Dimension (N);
              Eval_Relational_Op (N);
  
           elsif Nkind (N) = N_Op_Ne
             and then Is_Abstract_Subprogram (Entity (N))
           then
!             Nondispatching_Call_To_Abstract_Operation (N, Entity (N));
           end if;
        end if;
     end Resolve_Equality_Op;
*************** package body Sem_Res is
*** 9070,9075 ****
--- 9242,9251 ----
        --  Expr is an expression with compile-time-known value. This returns the
        --  literal node that reprsents that value.
  
+       -------------------
+       -- OK_For_Static --
+       -------------------
+ 
        function OK_For_Static (Act : Node_Id) return Boolean is
        begin
           case Nkind (Act) is
*************** package body Sem_Res is
*** 9095,9100 ****
--- 9271,9280 ----
           return False;
        end OK_For_Static;
  
+       -----------------------
+       -- All_OK_For_Static --
+       -----------------------
+ 
        function All_OK_For_Static return Boolean is
           Act : Node_Id := First (Actions (N));
        begin
*************** package body Sem_Res is
*** 9109,9114 ****
--- 9289,9298 ----
           return True;
        end All_OK_For_Static;
  
+       -----------------
+       -- Get_Literal --
+       -----------------
+ 
        function Get_Literal (Expr : Node_Id) return Node_Id is
           pragma Assert (Compile_Time_Known_Value (Expr));
           Result : Node_Id;
*************** package body Sem_Res is
*** 9132,9139 ****
--- 9316,9327 ----
           return Result;
        end Get_Literal;
  
+       --  Local variables
+ 
        Loc : constant Source_Ptr := Sloc (N);
  
+    --  Start of processing for Resolve_Expression_With_Actions
+ 
     begin
        Set_Etype (N, Typ);
  
*************** package body Sem_Res is
*** 9173,9179 ****
     ---------------------------
  
     procedure Resolve_If_Expression (N : Node_Id; Typ : Entity_Id) is
!       procedure Apply_Check (Expr : Node_Id);
        --  When a dependent expression is of a subtype different from
        --  the context subtype, then insert a qualification to ensure
        --  the generation of a constraint check. This was previously
--- 9361,9369 ----
     ---------------------------
  
     procedure Resolve_If_Expression (N : Node_Id; Typ : Entity_Id) is
!       Condition : constant Node_Id := First (Expressions (N));
! 
!       procedure Apply_Check (Expr : Node_Id; Result_Type : Entity_Id);
        --  When a dependent expression is of a subtype different from
        --  the context subtype, then insert a qualification to ensure
        --  the generation of a constraint check. This was previously
*************** package body Sem_Res is
*** 9181,9201 ****
        --  that the context in general allows sliding, while a qualified
        --  expression forces equality of bounds.
  
-       Result_Type  : Entity_Id := Typ;
-       --  So in most cases the type of the If_Expression and of its
-       --  dependent expressions is that of the context. However, if
-       --  the expression is the index of an Indexed_Component, we must
-       --  ensure that a proper index check is applied, rather than a
-       --  range check on the index type (which might be discriminant
-       --  dependent). In this case we resolve with the base type of the
-       --  index type, and the index check is generated in the resolution
-       --  of the indexed_component above.
- 
        -----------------
        -- Apply_Check --
        -----------------
  
!       procedure Apply_Check (Expr : Node_Id) is
           Expr_Typ : constant Entity_Id  := Etype (Expr);
           Loc      : constant Source_Ptr := Sloc (Expr);
  
--- 9371,9381 ----
        --  that the context in general allows sliding, while a qualified
        --  expression forces equality of bounds.
  
        -----------------
        -- Apply_Check --
        -----------------
  
!       procedure Apply_Check (Expr : Node_Id; Result_Type : Entity_Id) is
           Expr_Typ : constant Entity_Id  := Etype (Expr);
           Loc      : constant Source_Ptr := Sloc (Expr);
  
*************** package body Sem_Res is
*** 9223,9232 ****
  
        --  Local variables
  
-       Condition : constant Node_Id := First (Expressions (N));
        Else_Expr : Node_Id;
        Then_Expr : Node_Id;
  
     --  Start of processing for Resolve_If_Expression
  
     begin
--- 9403,9421 ----
  
        --  Local variables
  
        Else_Expr : Node_Id;
        Then_Expr : Node_Id;
  
+       Result_Type : Entity_Id;
+       --  So in most cases the type of the if_expression and of its
+       --  dependent expressions is that of the context. However, if
+       --  the expression is the index of an Indexed_Component, we must
+       --  ensure that a proper index check is applied, rather than a
+       --  range check on the index type (which might be discriminant
+       --  dependent). In this case we resolve with the base type of the
+       --  index type, and the index check is generated in the resolution
+       --  of the indexed_component above.
+ 
     --  Start of processing for Resolve_If_Expression
  
     begin
*************** package body Sem_Res is
*** 9241,9246 ****
--- 9430,9438 ----
                      or else Nkind (Parent (Parent (N))) = N_Indexed_Component)
        then
           Result_Type := Base_Type (Typ);
+ 
+       else
+          Result_Type := Typ;
        end if;
  
        Then_Expr := Next (Condition);
*************** package body Sem_Res is
*** 9249,9275 ****
           return;
        end if;
  
-       Else_Expr := Next (Then_Expr);
- 
        Resolve (Condition, Any_Boolean);
!       Resolve (Then_Expr, Result_Type);
!       Apply_Check (Then_Expr);
  
!       --  If ELSE expression present, just resolve using the determined type
!       --  If type is universal, resolve to any member of the class.
  
!       if Present (Else_Expr) then
!          if Typ = Universal_Integer then
!             Resolve (Else_Expr, Any_Integer);
  
!          elsif Typ = Universal_Real then
!             Resolve (Else_Expr, Any_Real);
  
!          else
!             Resolve (Else_Expr, Result_Type);
!          end if;
  
!          Apply_Check (Else_Expr);
  
           --  Apply RM 4.5.7 (17/3): whether the expression is statically or
           --  dynamically tagged must be known statically.
--- 9441,9463 ----
           return;
        end if;
  
        Resolve (Condition, Any_Boolean);
!       Check_Unset_Reference (Condition);
  
!       Resolve_Dependent_Expression (N, Then_Expr, Result_Type);
  
!       Check_Unset_Reference (Then_Expr);
!       Apply_Check (Then_Expr, Result_Type);
  
!       Else_Expr := Next (Then_Expr);
  
!       --  If ELSE expression present, just resolve using the determined type
  
!       if Present (Else_Expr) then
!          Resolve_Dependent_Expression (N, Else_Expr, Result_Type);
! 
!          Check_Unset_Reference (Else_Expr);
!          Apply_Check (Else_Expr, Result_Type);
  
           --  Apply RM 4.5.7 (17/3): whether the expression is statically or
           --  dynamically tagged must be known statically.
*************** package body Sem_Res is
*** 9491,9496 ****
--- 9679,9713 ----
        Eval_Integer_Literal (N);
     end Resolve_Integer_Literal;
  
+    -----------------------------------------
+    -- Resolve_Interpolated_String_Literal --
+    -----------------------------------------
+ 
+    procedure Resolve_Interpolated_String_Literal (N : Node_Id; Typ : Entity_Id)
+    is
+       Str_Elem : Node_Id;
+ 
+    begin
+       Str_Elem := First (Expressions (N));
+       pragma Assert (Nkind (Str_Elem) = N_String_Literal);
+ 
+       while Present (Str_Elem) loop
+ 
+          --  Resolve string elements using the context type; for interpolated
+          --  expressions there is no need to check if their type has a suitable
+          --  image function because under Ada 2022 all the types have such
+          --  function available.
+ 
+          if Etype (Str_Elem) = Any_String then
+             Resolve (Str_Elem, Typ);
+          end if;
+ 
+          Next (Str_Elem);
+       end loop;
+ 
+       Set_Etype (N, Typ);
+    end Resolve_Interpolated_String_Literal;
+ 
     --------------------------------
     -- Resolve_Intrinsic_Operator --
     --------------------------------
*************** package body Sem_Res is
*** 9750,9755 ****
--- 9967,10004 ----
        Eval_Logical_Op (N);
     end Resolve_Logical_Op;
  
+    ---------------------------------
+    -- Resolve_Membership_Equality --
+    ---------------------------------
+ 
+    procedure Resolve_Membership_Equality (N : Node_Id; Typ : Entity_Id) is
+       Utyp : constant Entity_Id := Underlying_Type (Typ);
+ 
+    begin
+       --  RM 4.5.2(4.1/3): if the type is limited, then it shall have a visible
+       --  primitive equality operator. This means that we can use the regular
+       --  visibility-based resolution and reset Entity in order to trigger it.
+ 
+       if Is_Limited_Type (Typ) then
+          Set_Entity (N, Empty);
+ 
+       --  RM 4.5.2(28.1/3): if the type is a record, then the membership test
+       --  uses the primitive equality for the type [even if it is not visible].
+       --  We only deal with the untagged case here, because the tagged case is
+       --  handled uniformly in the expander.
+ 
+       elsif Is_Record_Type (Utyp) and then not Is_Tagged_Type (Utyp) then
+          declare
+             Eq_Id : constant Entity_Id := Get_User_Defined_Equality (Typ);
+ 
+          begin
+             if Present (Eq_Id) then
+                Rewrite_Operator_As_Call (N, Eq_Id);
+             end if;
+          end;
+       end if;
+    end Resolve_Membership_Equality;
+ 
     ---------------------------
     -- Resolve_Membership_Op --
     ---------------------------
*************** package body Sem_Res is
*** 9866,9872 ****
           --  following warning appears useful for the most common case.
  
           if Is_Scalar_Type (Etype (L))
!            and then Present (Get_User_Defined_Eq (Etype (L)))
           then
              Error_Msg_NE
                ("membership test on& uses predefined equality?", N, Etype (L));
--- 10115,10121 ----
           --  following warning appears useful for the most common case.
  
           if Is_Scalar_Type (Etype (L))
!            and then Present (Get_User_Defined_Equality (Etype (L)))
           then
              Error_Msg_NE
                ("membership test on& uses predefined equality?", N, Etype (L));
*************** package body Sem_Res is
*** 9892,9897 ****
--- 10141,10200 ----
        then
           T := Etype (R);
  
+       --  If the left operand is of a universal numeric type and the right
+       --  operand is not, we do not resolve the operands to the tested type
+       --  but to the universal type instead. If not conforming to the letter,
+       --  it's conforming to the spirit of the specification of membership
+       --  tests, which are typically used to guard a specific operation and
+       --  ought not to fail a check in doing so. Without this, in the case of
+ 
+       --    type Small_Length is range 1 .. 16;
+ 
+       --    function Is_Small_String (S : String) return Boolean is
+       --    begin
+       --      return S'Length in Small_Length;
+       --    end;
+ 
+       --   the function Is_Small_String would fail a range check for strings
+       --   larger than 127 characters.
+ 
+       --  The test on the size is required in GNAT because universal_integer
+       --  does not cover all the values of all the supported integer types,
+       --  for example the large values of Long_Long_Long_Unsigned.
+ 
+       elsif not Is_Overloaded (L)
+         and then Is_Universal_Numeric_Type (Etype (L))
+         and then (Is_Overloaded (R)
+                    or else
+                      (not Is_Universal_Numeric_Type (Etype (R))
+                        and then
+                          (not Is_Integer_Type (Etype (R))
+                            or else
+                           RM_Size (Etype (R)) < RM_Size (Universal_Integer))))
+       then
+          T := Etype (L);
+ 
+          --  If the right operand is 'Range, we first need to resolve it (to
+          --  the tested type) so that it is rewritten as an N_Range, before
+          --  converting its bounds and resolving it again below.
+ 
+          if Nkind (R) = N_Attribute_Reference
+            and then Attribute_Name (R) = Name_Range
+          then
+             Resolve (R);
+          end if;
+ 
+          --  If the right operand is an N_Range, we convert its bounds to the
+          --  universal type before resolving it.
+ 
+          if Nkind (R) = N_Range then
+             Rewrite (R,
+               Make_Range (Sloc (R),
+                 Low_Bound  => Convert_To (T, Low_Bound (R)),
+                 High_Bound => Convert_To (T, High_Bound (R))));
+             Analyze (R);
+          end if;
+ 
        --  Ada 2005 (AI-251): Support the following case:
  
        --      type I is interface;
*************** package body Sem_Res is
*** 9911,9916 ****
--- 10214,10220 ----
          and then not Is_Interface (Etype (R))
        then
           return;
+ 
        else
           T := Intersect_Types (L, R);
        end if;
*************** package body Sem_Res is
*** 10481,10522 ****
           end if;
  
           --  Complete resolution and evaluation of NOT
-          --  If argument is an equality and expected type is boolean, that
-          --  expected type has no effect on resolution, and there are
-          --  special rules for resolution of Eq, Neq in the presence of
-          --  overloaded operands, so we directly call its resolution routines.
- 
-          declare
-             Opnd : constant Node_Id := Right_Opnd (N);
-             Op_Id : Entity_Id;
- 
-          begin
-             if B_Typ = Standard_Boolean
-               and then Nkind (Opnd) in N_Op_Eq | N_Op_Ne
-               and then Is_Overloaded (Opnd)
-             then
-                Resolve_Equality_Op (Opnd, B_Typ);
-                Op_Id := Entity (Opnd);
- 
-                if Ekind (Op_Id) = E_Function
-                  and then not Is_Intrinsic_Subprogram (Op_Id)
-                then
-                   Rewrite_Operator_As_Call (Opnd, Op_Id);
-                end if;
- 
-                if not Inside_A_Generic or else Is_Entity_Name (Opnd) then
-                   Freeze_Expression (Opnd);
-                end if;
- 
-                Expand (Opnd);
- 
-             else
-                Resolve (Opnd, B_Typ);
-             end if;
- 
-             Check_Unset_Reference (Opnd);
-          end;
  
           Set_Etype (N, B_Typ);
           Generate_Operator_Reference (N, B_Typ);
           Eval_Op_Not (N);
--- 10785,10793 ----
           end if;
  
           --  Complete resolution and evaluation of NOT
  
+          Resolve (Right_Opnd (N), B_Typ);
+          Check_Unset_Reference (Right_Opnd (N));
           Set_Etype (N, B_Typ);
           Generate_Operator_Reference (N, B_Typ);
           Eval_Op_Not (N);
*************** package body Sem_Res is
*** 10549,10554 ****
--- 10820,10826 ----
  
     begin
        Resolve (Expr, Target_Typ);
+       Check_Unset_Reference (Expr);
  
        --  A qualified expression requires an exact match of the type, class-
        --  wide matching is not allowed. However, if the qualifying type is
*************** package body Sem_Res is
*** 11086,11107 ****
  
        else
           T := Etype (P);
- 
-          --  If the prefix is an entity it may have a deferred reference set
-          --  during analysis of the selected component. After resolution we
-          --  can transform it into a proper reference. This prevents spurious
-          --  warnings on useless assignments when the same selected component
-          --  is the actual for an out parameter in a subsequent call.
- 
-          if Is_Entity_Name (P)
-            and then Has_Deferred_Reference (Entity (P))
-          then
-             if Known_To_Be_Assigned (N) then
-                Generate_Reference (Entity (P), P, 'm');
-             else
-                Generate_Reference (Entity (P), P, 'r');
-             end if;
-          end if;
        end if;
  
        --  Set flag for expander if discriminant check required on a component
--- 11358,11363 ----
*************** package body Sem_Res is
*** 11699,11705 ****
  
                    Error_Msg
                      ("literal out of range of type Standard.Character",
!                      Source_Ptr (Int (Loc) + J));
                    return;
                 end if;
              end loop;
--- 11955,11961 ----
  
                    Error_Msg
                      ("literal out of range of type Standard.Character",
!                      Loc + Source_Ptr (J));
                    return;
                 end if;
              end loop;
*************** package body Sem_Res is
*** 11728,11734 ****
  
                    Error_Msg
                      ("literal out of range of type Standard.Wide_Character",
!                      Source_Ptr (Int (Loc) + J));
                    return;
                 end if;
              end loop;
--- 11984,11990 ----
  
                    Error_Msg
                      ("literal out of range of type Standard.Wide_Character",
!                      Loc + Source_Ptr (J));
                    return;
                 end if;
              end loop;
*************** package body Sem_Res is
*** 12046,12051 ****
--- 12302,12313 ----
              then
                 null;
  
+             --  Never give a warning if the operand is a conditional expression
+             --  because RM 4.5.7(10/3) forces its type to be the target type.
+ 
+             elsif Nkind (Orig_N) in N_Case_Expression | N_If_Expression then
+                null;
+ 
              --  Finally, if this type conversion occurs in a context requiring
              --  a prefix, and the expression is a qualified expression then the
              --  type conversion is not redundant, since a qualified expression
*************** package body Sem_Res is
*** 12191,12216 ****
              --  Conversion to interface type
  
              elsif Is_Interface (Target) then
! 
!                --  Handle subtypes
! 
!                if Ekind (Opnd) in E_Protected_Subtype | E_Task_Subtype then
!                   Opnd := Etype (Opnd);
!                end if;
! 
!                if Is_Class_Wide_Type (Opnd)
!                  or else Interface_Present_In_Ancestor
!                            (Typ   => Opnd,
!                             Iface => Target)
!                then
!                   Expand_Interface_Conversion (N);
!                else
!                   Error_Msg_Name_1 := Chars (Etype (Target));
!                   Error_Msg_Name_2 := Chars (Opnd);
!                   Error_Msg_N
!                     ("wrong interface conversion (% is not a progenitor "
!                      & "of %)", N);
!                end if;
              end if;
           end;
        end if;
--- 12453,12459 ----
              --  Conversion to interface type
  
              elsif Is_Interface (Target) then
!                Expand_Interface_Conversion (N);
              end if;
           end;
        end if;
*************** package body Sem_Res is
*** 12592,12654 ****
           end;
        end if;
  
!       --  Rewrite the operator node using the real operator, not its renaming.
!       --  Exclude user-defined intrinsic operations of the same name, which are
!       --  treated separately and rewritten as calls.
! 
!       if Ekind (Op) /= E_Function or else Chars (N) /= Nam then
!          Op_Node := New_Node (Operator_Kind (Nam, Is_Binary), Sloc (N));
!          Set_Chars      (Op_Node, Nam);
!          Set_Etype      (Op_Node, Etype (N));
!          Set_Entity     (Op_Node, Op);
!          Set_Right_Opnd (Op_Node, Right_Opnd (N));
! 
!          --  Indicate that both the original entity and its renaming are
!          --  referenced at this point.
! 
!          Generate_Reference (Entity (N), N);
!          Generate_Reference (Op, N);
! 
!          if Is_Binary then
!             Set_Left_Opnd (Op_Node, Left_Opnd (N));
!          end if;
  
!          Rewrite (N, Op_Node);
  
!          --  If the context type is private, add the appropriate conversions so
!          --  that the operator is applied to the full view. This is done in the
!          --  routines that resolve intrinsic operators.
  
!          if Is_Intrinsic_Subprogram (Op) and then Is_Private_Type (Typ) then
!             case Nkind (N) is
!                when N_Op_Add
!                   | N_Op_Divide
!                   | N_Op_Expon
!                   | N_Op_Mod
!                   | N_Op_Multiply
!                   | N_Op_Rem
!                   | N_Op_Subtract
!                =>
!                   Resolve_Intrinsic_Operator (N, Typ);
  
!                when N_Op_Abs
!                   | N_Op_Minus
!                   | N_Op_Plus
!                =>
!                   Resolve_Intrinsic_Unary_Operator (N, Typ);
  
!                when others =>
!                   Resolve (N, Typ);
!             end case;
!          end if;
  
!       elsif Ekind (Op) = E_Function and then Is_Intrinsic_Subprogram (Op) then
  
!          --  Operator renames a user-defined operator of the same name. Use the
!          --  original operator in the node, which is the one Gigi knows about.
  
!          Set_Entity (N, Op);
!          Set_Is_Overloaded (N, False);
        end if;
     end Rewrite_Renamed_Operator;
  
--- 12835,12883 ----
           end;
        end if;
  
!       Op_Node := New_Node (Operator_Kind (Nam, Is_Binary), Sloc (N));
!       Set_Chars      (Op_Node, Nam);
!       Set_Etype      (Op_Node, Etype (N));
!       Set_Entity     (Op_Node, Op);
!       Set_Right_Opnd (Op_Node, Right_Opnd (N));
  
!       if Is_Binary then
!          Set_Left_Opnd (Op_Node, Left_Opnd (N));
!       end if;
  
!       --  Indicate that both the original entity and its renaming are
!       --  referenced at this point.
  
!       Generate_Reference (Entity (N), N);
!       Generate_Reference (Op, N);
  
!       Rewrite (N, Op_Node);
  
!       --  If the context type is private, add the appropriate conversions so
!       --  that the operator is applied to the full view. This is done in the
!       --  routines that resolve intrinsic operators.
  
!       if Is_Intrinsic_Subprogram (Op) and then Is_Private_Type (Typ) then
!          case Nkind (N) is
!             when N_Op_Add
!                | N_Op_Divide
!                | N_Op_Expon
!                | N_Op_Mod
!                | N_Op_Multiply
!                | N_Op_Rem
!                | N_Op_Subtract
!             =>
!                Resolve_Intrinsic_Operator (N, Typ);
  
!             when N_Op_Abs
!                | N_Op_Minus
!                | N_Op_Plus
!             =>
!                Resolve_Intrinsic_Unary_Operator (N, Typ);
  
!             when others =>
!                Resolve (N, Typ);
!          end case;
        end if;
     end Rewrite_Renamed_Operator;
  
*************** package body Sem_Res is
*** 13518,13546 ****
                Conversion_Check (False,
                  "downward conversion of tagged objects not allowed");
  
!          --  Ada 2005 (AI-251): The conversion to/from interface types is
!          --  always valid. The types involved may be class-wide (sub)types.
  
!          elsif Is_Interface (Etype (Base_Type (Target_Type)))
!            or else Is_Interface (Etype (Base_Type (Opnd_Type)))
           then
              return True;
  
!          --  If the operand is a class-wide type obtained through a limited_
!          --  with clause, and the context includes the nonlimited view, use
!          --  it to determine whether the conversion is legal.
  
           elsif Is_Class_Wide_Type (Opnd_Type)
!            and then From_Limited_With (Opnd_Type)
!            and then Present (Non_Limited_View (Etype (Opnd_Type)))
!            and then Is_Interface (Non_Limited_View (Etype (Opnd_Type)))
           then
!             return True;
  
!          elsif Is_Access_Type (Opnd_Type)
!            and then Is_Interface (Directly_Designated_Type (Opnd_Type))
           then
!             return True;
  
           else
              Conversion_Error_NE
--- 13747,13861 ----
                Conversion_Check (False,
                  "downward conversion of tagged objects not allowed");
  
!          --  Ada 2005 (AI-251): A conversion is valid if the operand and target
!          --  types are both class-wide types and the specific type associated
!          --  with at least one of them is an interface type (RM 4.6 (23.1/2));
!          --  at run-time a check will verify the validity of this interface
!          --  type conversion.
  
!          elsif Is_Class_Wide_Type (Target_Type)
!             and then Is_Class_Wide_Type (Opnd_Type)
!             and then (Is_Interface (Target_Type)
!                         or else Is_Interface (Opnd_Type))
           then
              return True;
  
!          --  Report errors
! 
!          elsif Is_Class_Wide_Type (Target_Type)
!            and then Is_Interface (Target_Type)
!            and then not Is_Interface (Opnd_Type)
!            and then not Interface_Present_In_Ancestor
!                           (Typ   => Opnd_Type,
!                            Iface => Target_Type)
!          then
!             Error_Msg_Name_1 := Chars (Etype (Target_Type));
!             Error_Msg_Name_2 := Chars (Opnd_Type);
!             Conversion_Error_N
!               ("wrong interface conversion (% is not a progenitor "
!                & "of %)", N);
!             return False;
  
           elsif Is_Class_Wide_Type (Opnd_Type)
!            and then Is_Interface (Opnd_Type)
!            and then not Is_Interface (Target_Type)
!            and then not Interface_Present_In_Ancestor
!                           (Typ   => Target_Type,
!                            Iface => Opnd_Type)
           then
!             Error_Msg_Name_1 := Chars (Etype (Opnd_Type));
!             Error_Msg_Name_2 := Chars (Target_Type);
!             Conversion_Error_N
!               ("wrong interface conversion (% is not a progenitor "
!                & "of %)", N);
  
!             --  Search for interface types shared between the target type and
!             --  the operand interface type to complete the text of the error
!             --  since the source of this error is a missing type conversion
!             --  to such interface type.
! 
!             if Has_Interfaces (Target_Type) then
!                declare
!                   Operand_Ifaces_List : Elist_Id;
!                   Operand_Iface_Elmt  : Elmt_Id;
!                   Target_Ifaces_List  : Elist_Id;
!                   Target_Iface_Elmt   : Elmt_Id;
!                   First_Candidate     : Boolean := True;
! 
!                begin
!                   Collect_Interfaces (Base_Type (Target_Type),
!                     Target_Ifaces_List);
!                   Collect_Interfaces (Root_Type (Base_Type (Opnd_Type)),
!                     Operand_Ifaces_List);
! 
!                   Operand_Iface_Elmt := First_Elmt (Operand_Ifaces_List);
!                   while Present (Operand_Iface_Elmt) loop
!                      Target_Iface_Elmt := First_Elmt (Target_Ifaces_List);
!                      while Present (Target_Iface_Elmt) loop
!                         if Node (Operand_Iface_Elmt)
!                           = Node (Target_Iface_Elmt)
!                         then
!                            Error_Msg_Name_1 :=
!                              Chars (Node (Target_Iface_Elmt));
! 
!                            if First_Candidate then
!                               First_Candidate := False;
!                               Conversion_Error_N
!                                 ("\must convert to `%''Class` before downward "
!                                  & "conversion", Operand);
!                            else
!                               Conversion_Error_N
!                                 ("\or must convert to `%''Class` before "
!                                  & "downward conversion", Operand);
!                            end if;
!                         end if;
! 
!                         Next_Elmt (Target_Iface_Elmt);
!                      end loop;
! 
!                      Next_Elmt (Operand_Iface_Elmt);
!                   end loop;
!                end;
!             end if;
! 
!             return False;
! 
!          elsif not Is_Class_Wide_Type (Target_Type)
!            and then Is_Interface (Target_Type)
           then
!             Conversion_Error_N
!               ("wrong use of interface type in tagged conversion", N);
!             Conversion_Error_N
!               ("\add ''Class to the target interface type", N);
!             return False;
! 
!          elsif not Is_Class_Wide_Type (Opnd_Type)
!            and then Is_Interface (Opnd_Type)
!          then
!             Conversion_Error_N
!               ("must convert to class-wide interface type before downward "
!                & "conversion", Operand);
!             return False;
  
           else
              Conversion_Error_NE
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_res.ads gcc-13.1.0/gcc/ada/sem_res.ads
*** gcc-12.2.0/gcc/ada/sem_res.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_res.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Res is
*** 125,130 ****
--- 125,133 ----
     --  own type. For now we assume that the prefix cannot be overloaded and
     --  the name of the entry plays no role in the resolution.
  
+    procedure Resolve_Membership_Equality (N : Node_Id; Typ : Entity_Id);
+    --  Resolve the equality operator in an individual membership test
+ 
     function Valid_Conversion
       (N           : Node_Id;
        Target      : Entity_Id;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_scil.adb gcc-13.1.0/gcc/ada/sem_scil.adb
*** gcc-12.2.0/gcc/ada/sem_scil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_scil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_scil.ads gcc-13.1.0/gcc/ada/sem_scil.ads
*** gcc-12.2.0/gcc/ada/sem_scil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_scil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2009-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_smem.adb gcc-13.1.0/gcc/ada/sem_smem.adb
*** gcc-12.2.0/gcc/ada/sem_smem.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_smem.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_smem.ads gcc-13.1.0/gcc/ada/sem_smem.ads
*** gcc-12.2.0/gcc/ada/sem_smem.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_smem.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1998-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_type.adb gcc-13.1.0/gcc/ada/sem_type.adb
*** gcc-12.2.0/gcc/ada/sem_type.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_type.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sem_Type is
*** 192,201 ****
     --  multiple interpretations. Interpretations can be added to only one
     --  node at a time.
  
-    function Specific_Type (Typ_1, Typ_2 : Entity_Id) return Entity_Id;
-    --  If Typ_1 and Typ_2 are compatible, return the one that is not universal
-    --  or is not a "class" type (any_character, etc).
- 
     --------------------
     -- Add_One_Interp --
     --------------------
--- 192,197 ----
*************** package body Sem_Type is
*** 365,378 ****
     --  Start of processing for Add_One_Interp
  
     begin
!       --  If the interpretation is a predefined operator, verify that the
!       --  result type is visible, or that the entity has already been
!       --  resolved (case of an instantiation node that refers to a predefined
!       --  operation, or an internally generated operator node, or an operator
!       --  given as an expanded name). If the operator is a comparison or
!       --  equality, it is the type of the operand that matters to determine
!       --  whether the operator is visible. In an instance, the check is not
!       --  performed, given that the operator was visible in the generic.
  
        if Ekind (E) = E_Operator then
           if Present (Opnd_Type) then
--- 361,372 ----
     --  Start of processing for Add_One_Interp
  
     begin
!       --  If the interpretation is a predefined operator, verify that it is
!       --  visible, or that the entity has already been resolved (case of an
!       --  instantiation node that refers to a predefined operation, or an
!       --  internally generated operator node, or an operator given as an
!       --  expanded name). If the operator is a comparison or equality, then
!       --  it is the type of the operand that is relevant here.
  
        if Ekind (E) = E_Operator then
           if Present (Opnd_Type) then
*************** package body Sem_Type is
*** 381,409 ****
              Vis_Type := Base_Type (T);
           end if;
  
!          if In_Open_Scopes (Scope (Vis_Type))
!            or else Is_Potentially_Use_Visible (Vis_Type)
!            or else In_Use (Vis_Type)
!            or else (In_Use (Scope (Vis_Type))
!                      and then not Is_Hidden (Vis_Type))
!            or else Nkind (N) = N_Expanded_Name
             or else (Nkind (N) in N_Op and then E = Entity (N))
!            or else (In_Instance or else In_Inlined_Body)
!            or else Is_Anonymous_Access_Type (Vis_Type)
!          then
!             null;
! 
!          --  If the node is given in functional notation and the prefix
!          --  is an expanded name, then the operator is visible if the
!          --  prefix is the scope of the result type as well. If the
!          --  operator is (implicitly) defined in an extension of system,
!          --  it is know to be valid (see Defined_In_Scope, sem_ch4.adb).
! 
!          elsif Nkind (N) = N_Function_Call
!            and then Nkind (Name (N)) = N_Expanded_Name
!            and then (Entity (Prefix (Name (N))) = Scope (Base_Type (T))
!                       or else Entity (Prefix (Name (N))) = Scope (Vis_Type)
!                       or else Scope (Vis_Type) = System_Aux_Id)
           then
              null;
  
--- 375,383 ----
              Vis_Type := Base_Type (T);
           end if;
  
!          if Nkind (N) = N_Expanded_Name
             or else (Nkind (N) in N_Op and then E = Entity (N))
!            or else Is_Visible_Operator (N, Vis_Type)
           then
              null;
  
*************** package body Sem_Type is
*** 1033,1039 ****
  
        elsif Ada_Version >= Ada_2022
          and then T2 = Any_Composite
!         and then Present (Find_Aspect (T1, Aspect_Aggregate))
        then
           return True;
  
--- 1007,1013 ----
  
        elsif Ada_Version >= Ada_2022
          and then T2 = Any_Composite
!         and then Has_Aspect (T1, Aspect_Aggregate)
        then
           return True;
  
*************** package body Sem_Type is
*** 1334,1340 ****
        --  It may given by an operator name, or by an expanded name whose prefix
        --  is Standard.
  
!       function Remove_Conversions return Interp;
        --  Last chance for pathological cases involving comparisons on literals,
        --  and user overloadings of the same operator. Such pathologies have
        --  been removed from the ACVC, but still appear in two DEC tests, with
--- 1308,1314 ----
        --  It may given by an operator name, or by an expanded name whose prefix
        --  is Standard.
  
!       function Remove_Conversions_And_Abstract_Operations return Interp;
        --  Last chance for pathological cases involving comparisons on literals,
        --  and user overloadings of the same operator. Such pathologies have
        --  been removed from the ACVC, but still appear in two DEC tests, with
*************** package body Sem_Type is
*** 1522,1532 ****
           return Etype (Opnd);
        end Operand_Type;
  
!       ------------------------
!       -- Remove_Conversions --
!       ------------------------
  
!       function Remove_Conversions return Interp is
           I    : Interp_Index;
           It   : Interp;
           It1  : Interp;
--- 1496,1506 ----
           return Etype (Opnd);
        end Operand_Type;
  
!       ------------------------------------------------
!       -- Remove_Conversions_And_Abstract_Operations --
!       ------------------------------------------------
  
!       function Remove_Conversions_And_Abstract_Operations return Interp is
           I    : Interp_Index;
           It   : Interp;
           It1  : Interp;
*************** package body Sem_Type is
*** 1535,1547 ****
           Act2 : Node_Id;
  
           function Has_Abstract_Interpretation (N : Node_Id) return Boolean;
!          --  If an operation has universal operands the universal operation
           --  is present among its interpretations. If there is an abstract
           --  interpretation for the operator, with a numeric result, this
           --  interpretation was already removed in sem_ch4, but the universal
           --  one is still visible. We must rescan the list of operators and
           --  remove the universal interpretation to resolve the ambiguity.
  
           ---------------------------------
           -- Has_Abstract_Interpretation --
           ---------------------------------
--- 1509,1524 ----
           Act2 : Node_Id;
  
           function Has_Abstract_Interpretation (N : Node_Id) return Boolean;
!          --  If an operation has universal operands, the universal operation
           --  is present among its interpretations. If there is an abstract
           --  interpretation for the operator, with a numeric result, this
           --  interpretation was already removed in sem_ch4, but the universal
           --  one is still visible. We must rescan the list of operators and
           --  remove the universal interpretation to resolve the ambiguity.
  
+          function Is_Numeric_Only_Type (T : Entity_Id) return Boolean;
+          --  Return True if T is a numeric type and not Any_Type
+ 
           ---------------------------------
           -- Has_Abstract_Interpretation --
           ---------------------------------
*************** package body Sem_Type is
*** 1562,1568 ****
                 while Present (E) loop
                    if Is_Overloadable (E)
                      and then Is_Abstract_Subprogram (E)
!                     and then Is_Numeric_Type (Etype (E))
                    then
                       return True;
                    else
--- 1539,1545 ----
                 while Present (E) loop
                    if Is_Overloadable (E)
                      and then Is_Abstract_Subprogram (E)
!                     and then Is_Numeric_Only_Type (Etype (E))
                    then
                       return True;
                    else
*************** package body Sem_Type is
*** 1587,1593 ****
              end if;
           end Has_Abstract_Interpretation;
  
!       --  Start of processing for Remove_Conversions
  
        begin
           It1 := No_Interp;
--- 1564,1579 ----
              end if;
           end Has_Abstract_Interpretation;
  
!          --------------------------
!          -- Is_Numeric_Only_Type --
!          --------------------------
! 
!          function Is_Numeric_Only_Type (T : Entity_Id) return Boolean is
!          begin
!             return Is_Numeric_Type (T) and then T /= Any_Type;
!          end Is_Numeric_Only_Type;
! 
!       --  Start of processing for Remove_Conversions_And_Abstract_Operations
  
        begin
           It1 := No_Interp;
*************** package body Sem_Type is
*** 1676,1686 ****
                       It1 := It;
                    end if;
  
!                elsif Is_Numeric_Type (Etype (F1))
                   and then Has_Abstract_Interpretation (Act1)
                 then
                    --  Current interpretation is not the right one because it
!                   --  expects a numeric operand. Examine all the other ones.
  
                    declare
                       I  : Interp_Index;
--- 1662,1672 ----
                       It1 := It;
                    end if;
  
!                elsif Is_Numeric_Only_Type (Etype (F1))
                   and then Has_Abstract_Interpretation (Act1)
                 then
                    --  Current interpretation is not the right one because it
!                   --  expects a numeric operand. Examine all the others.
  
                    declare
                       I  : Interp_Index;
*************** package body Sem_Type is
*** 1689,1702 ****
                    begin
                       Get_First_Interp (N, I, It);
                       while Present (It.Typ) loop
!                         if
!                           not Is_Numeric_Type (Etype (First_Formal (It.Nam)))
                          then
                             if No (Act2)
-                              or else not Has_Abstract_Interpretation (Act2)
                               or else not
!                                Is_Numeric_Type
                                   (Etype (Next_Formal (First_Formal (It.Nam))))
                             then
                                return It;
                             end if;
--- 1675,1688 ----
                    begin
                       Get_First_Interp (N, I, It);
                       while Present (It.Typ) loop
!                         if not Is_Numeric_Only_Type
!                                  (Etype (First_Formal (It.Nam)))
                          then
                             if No (Act2)
                               or else not
!                                Is_Numeric_Only_Type
                                   (Etype (Next_Formal (First_Formal (It.Nam))))
+                              or else not Has_Abstract_Interpretation (Act2)
                             then
                                return It;
                             end if;
*************** package body Sem_Type is
*** 1707,1750 ****
  
                       return No_Interp;
                    end;
-                end if;
-             end if;
  
!             <<Next_Interp>>
!                Get_Next_Interp (I, It);
!          end loop;
! 
!          --  After some error, a formal may have Any_Type and yield a spurious
!          --  match. To avoid cascaded errors if possible, check for such a
!          --  formal in either candidate.
  
!          if Serious_Errors_Detected > 0 then
!             declare
!                Formal : Entity_Id;
  
!             begin
!                Formal := First_Formal (Nam1);
!                while Present (Formal) loop
!                   if Etype (Formal) = Any_Type then
!                      return Disambiguate.It2;
!                   end if;
  
!                   Next_Formal (Formal);
!                end loop;
  
!                Formal := First_Formal (Nam2);
!                while Present (Formal) loop
!                   if Etype (Formal) = Any_Type then
!                      return Disambiguate.It1;
!                   end if;
  
!                   Next_Formal (Formal);
!                end loop;
!             end;
!          end if;
  
           return It1;
!       end Remove_Conversions;
  
        -----------------------
        -- Standard_Operator --
--- 1693,1738 ----
  
                       return No_Interp;
                    end;
  
!                elsif Is_Numeric_Only_Type (Etype (F1))
!                  and then Present (Act2)
!                  and then Has_Abstract_Interpretation (Act2)
!                then
!                   --  Current interpretation is not the right one because it
!                   --  expects a numeric operand. Examine all the others.
  
!                   declare
!                      I  : Interp_Index;
!                      It : Interp;
  
!                   begin
!                      Get_First_Interp (N, I, It);
!                      while Present (It.Typ) loop
!                         if not Is_Numeric_Only_Type
!                                 (Etype (Next_Formal (First_Formal (It.Nam))))
!                         then
!                            if not Is_Numeric_Only_Type
!                                     (Etype (First_Formal (It.Nam)))
!                              or else not Has_Abstract_Interpretation (Act1)
!                            then
!                               return It;
!                            end if;
!                         end if;
  
!                         Get_Next_Interp (I, It);
!                      end loop;
  
!                      return No_Interp;
!                   end;
!                end if;
!             end if;
  
!             <<Next_Interp>>
!                Get_Next_Interp (I, It);
!          end loop;
  
           return It1;
!       end Remove_Conversions_And_Abstract_Operations;
  
        -----------------------
        -- Standard_Operator --
*************** package body Sem_Type is
*** 2145,2154 ****
                 end if;
  
              else
!                return Remove_Conversions;
              end if;
           else
!             return Remove_Conversions;
           end if;
        end if;
  
--- 2133,2142 ----
                 end if;
  
              else
!                return Remove_Conversions_And_Abstract_Operations;
              end if;
           else
!             return Remove_Conversions_And_Abstract_Operations;
           end if;
        end if;
  
*************** package body Sem_Type is
*** 2162,2179 ****
        then
           return No_Interp;
  
!       --  If the user-defined operator is in an open scope, or in the scope
!       --  of the resulting type, or given by an expanded name that names its
!       --  scope, it hides the predefined operator for the type. Exponentiation
!       --  has to be special-cased because the implicit operator does not have
!       --  a symmetric signature, and may not be hidden by the explicit one.
  
!       elsif (Nkind (N) = N_Function_Call
!               and then Nkind (Name (N)) = N_Expanded_Name
!               and then (Chars (Predef_Subp) /= Name_Op_Expon
!                          or else Hides_Op (User_Subp, Predef_Subp))
!               and then Scope (User_Subp) = Entity (Prefix (Name (N))))
!         or else Hides_Op (User_Subp, Predef_Subp)
        then
           if It1.Nam = User_Subp then
              return It1;
--- 2150,2168 ----
        then
           return No_Interp;
  
!       --  If the user-defined operator matches the signature of the operator,
!       --  and is declared in an open scope, or in the scope of the resulting
!       --  type, or given by an expanded name that names its scope, it hides
!       --  the predefined operator for the type. But exponentiation has to be
!       --  special-cased because the latter operator does not have a symmetric
!       --  signature, and may not be hidden by the explicit one.
  
!       elsif Hides_Op (User_Subp, Predef_Subp)
!         or else (Nkind (N) = N_Function_Call
!                   and then Nkind (Name (N)) = N_Expanded_Name
!                   and then (Chars (Predef_Subp) /= Name_Op_Expon
!                              or else Hides_Op (User_Subp, Predef_Subp))
!                   and then Scope (User_Subp) = Entity (Prefix (Name (N))))
        then
           if It1.Nam = User_Subp then
              return It1;
*************** package body Sem_Type is
*** 2226,2238 ****
                    return It2;
                 end if;
  
!             --  An immediately visible operator hides a use-visible user-
!             --  defined operation. This disambiguation cannot take place
!             --  earlier because the visibility of the predefined operator
!             --  can only be established when operand types are known.
  
              elsif Ekind (User_Subp) = E_Function
                and then Ekind (Predef_Subp) = E_Operator
                and then Nkind (N) in N_Op
                and then not Is_Overloaded (Right_Opnd (N))
                and then
--- 2215,2228 ----
                    return It2;
                 end if;
  
!             --  RM 8.4(10): an immediately visible operator hides a use-visible
!             --  user-defined operation that is a homograph. This disambiguation
!             --  cannot take place earlier because visibility of the predefined
!             --  operator can only be established when operand types are known.
  
              elsif Ekind (User_Subp) = E_Function
                and then Ekind (Predef_Subp) = E_Operator
+               and then Operator_Matches_Spec (Predef_Subp, User_Subp)
                and then Nkind (N) in N_Op
                and then not Is_Overloaded (Right_Opnd (N))
                and then
*************** package body Sem_Type is
*** 2246,2252 ****
                 end if;
  
              else
!                return No_Interp;
              end if;
  
           elsif It1.Nam = Predef_Subp then
--- 2236,2242 ----
                 end if;
  
              else
!                return Remove_Conversions_And_Abstract_Operations;
              end if;
  
           elsif It1.Nam = Predef_Subp then
*************** package body Sem_Type is
*** 2264,2271 ****
  
     function Entity_Matches_Spec (Old_S, New_S : Entity_Id) return Boolean is
     begin
!       --  Simple case: same entity kinds, type conformance is required. A
!       --  parameterless function can also rename a literal.
  
        if Ekind (Old_S) = Ekind (New_S)
          or else (Ekind (New_S) = E_Function
--- 2254,2261 ----
  
     function Entity_Matches_Spec (Old_S, New_S : Entity_Id) return Boolean is
     begin
!       --  For the simple case of same kinds, type conformance is required, but
!       --  a parameterless function can also rename a literal.
  
        if Ekind (Old_S) = Ekind (New_S)
          or else (Ekind (New_S) = E_Function
*************** package body Sem_Type is
*** 2273,2284 ****
        then
           return Type_Conformant (New_S, Old_S);
  
!       elsif Ekind (New_S) = E_Function and then Ekind (Old_S) = E_Operator then
!          return Operator_Matches_Spec (Old_S, New_S);
  
        elsif Ekind (New_S) = E_Procedure and then Is_Entry (Old_S) then
           return Type_Conformant (New_S, Old_S);
  
        else
           return False;
        end if;
--- 2263,2278 ----
        then
           return Type_Conformant (New_S, Old_S);
  
!       --  Likewise for a procedure and an entry
  
        elsif Ekind (New_S) = E_Procedure and then Is_Entry (Old_S) then
           return Type_Conformant (New_S, Old_S);
  
+       --  For a user-defined operator, use the dedicated predicate
+ 
+       elsif Ekind (New_S) = E_Function and then Ekind (Old_S) = E_Operator then
+          return Operator_Matches_Spec (Old_S, New_S);
+ 
        else
           return False;
        end if;
*************** package body Sem_Type is
*** 2289,2348 ****
     ----------------------
  
     function Find_Unique_Type (L : Node_Id; R : Node_Id) return Entity_Id is
!       T  : constant Entity_Id := Etype (L);
!       I  : Interp_Index;
!       It : Interp;
!       TR : Entity_Id := Any_Type;
  
     begin
!       if Is_Overloaded (R) then
!          Get_First_Interp (R, I, It);
!          while Present (It.Typ) loop
!             if Covers (T, It.Typ) or else Covers (It.Typ, T) then
! 
!                --  If several interpretations are possible and L is universal,
!                --  apply preference rule.
! 
!                if TR /= Any_Type then
!                   if Is_Universal_Numeric_Type (T)
!                     and then It.Typ = T
!                   then
!                      TR := It.Typ;
!                   end if;
! 
!                else
!                   TR := It.Typ;
!                end if;
!             end if;
! 
!             Get_Next_Interp (I, It);
!          end loop;
! 
!          Set_Etype (R, TR);
! 
!       --  In the non-overloaded case, the Etype of R is already set correctly
! 
!       else
!          null;
        end if;
  
!       --  If one of the operands is Universal_Fixed, the type of the other
!       --  operand provides the context.
! 
!       if Etype (R) = Universal_Fixed then
!          return T;
! 
!       elsif T = Universal_Fixed then
!          return Etype (R);
! 
!       --  If one operand is a raise_expression, use type of other operand
! 
!       elsif Nkind (L) = N_Raise_Expression then
!          return Etype (R);
! 
!       else
!          return Specific_Type (T, Etype (R));
!       end if;
     end Find_Unique_Type;
  
     -------------------------------------
--- 2283,2300 ----
     ----------------------
  
     function Find_Unique_Type (L : Node_Id; R : Node_Id) return Entity_Id is
!       T  : constant Entity_Id := Specific_Type (Etype (L), Etype (R));
  
     begin
!       if T = Any_Type then
!          if Is_User_Defined_Literal (L, Etype (R)) then
!             return Etype (R);
!          elsif Is_User_Defined_Literal (R, Etype (L)) then
!             return Etype (L);
!          end if;
        end if;
  
!       return T;
     end Find_Unique_Type;
  
     -------------------------------------
*************** package body Sem_Type is
*** 2446,2455 ****
     -- Has_Compatible_Type --
     -------------------------
  
!    function Has_Compatible_Type
!      (N              : Node_Id;
!       Typ            : Entity_Id;
!       For_Comparison : Boolean := False) return Boolean
     is
        I  : Interp_Index;
        It : Interp;
--- 2398,2404 ----
     -- Has_Compatible_Type --
     -------------------------
  
!    function Has_Compatible_Type (N : Node_Id; Typ : Entity_Id) return Boolean
     is
        I  : Interp_Index;
        It : Interp;
*************** package body Sem_Type is
*** 2463,2470 ****
           if Covers (Typ, Etype (N))
  
              --  Ada 2005 (AI-345): The context may be a synchronized interface.
!             --  If the type is already frozen use the corresponding_record
!             --  to check whether it is a proper descendant.
  
             or else
               (Is_Record_Type (Typ)
--- 2412,2419 ----
           if Covers (Typ, Etype (N))
  
              --  Ada 2005 (AI-345): The context may be a synchronized interface.
!             --  If the type is already frozen, use the corresponding_record to
!             --  check whether it is a proper descendant.
  
             or else
               (Is_Record_Type (Typ)
*************** package body Sem_Type is
*** 2478,2500 ****
                 and then Present (Corresponding_Record_Type (Typ))
                 and then Covers (Corresponding_Record_Type (Typ), Etype (N)))
  
!            or else
!              (Nkind (N) = N_Integer_Literal
!                and then Present (Find_Aspect (Typ, Aspect_Integer_Literal)))
! 
!            or else
!              (Nkind (N) = N_Real_Literal
!                and then Present (Find_Aspect (Typ, Aspect_Real_Literal)))
! 
!            or else
!              (Nkind (N) = N_String_Literal
!                and then Present (Find_Aspect (Typ, Aspect_String_Literal)))
  
-            or else
-              (For_Comparison
-                and then not Is_Tagged_Type (Typ)
-                and then Ekind (Typ) /= E_Anonymous_Access_Type
-                and then Covers (Etype (N), Typ))
           then
              return True;
           end if;
--- 2427,2434 ----
                 and then Present (Corresponding_Record_Type (Typ))
                 and then Covers (Corresponding_Record_Type (Typ), Etype (N)))
  
!            or else Is_User_Defined_Literal (N, Typ)
  
           then
              return True;
           end if;
*************** package body Sem_Type is
*** 2504,2529 ****
        else
           Get_First_Interp (N, I, It);
           while Present (It.Typ) loop
!             if (Covers (Typ, It.Typ)
!                  and then
!                    (Scope (It.Nam) /= Standard_Standard
!                      or else not Is_Invisible_Operator (N, Base_Type (Typ))))
  
                 --  Ada 2005 (AI-345)
  
                or else
                  (Is_Record_Type (Typ)
                    and then Is_Concurrent_Type (It.Typ)
!                   and then Present (Corresponding_Record_Type
!                                                              (Etype (It.Typ)))
!                   and then Covers (Typ, Corresponding_Record_Type
!                                                              (Etype (It.Typ))))
  
-              or else
-                (For_Comparison
-                  and then not Is_Tagged_Type (Typ)
-                  and then Ekind (Typ) /= E_Anonymous_Access_Type
-                  and then Covers (It.Typ, Typ))
              then
                 return True;
              end if;
--- 2438,2461 ----
        else
           Get_First_Interp (N, I, It);
           while Present (It.Typ) loop
!             if Covers (Typ, It.Typ)
  
                 --  Ada 2005 (AI-345)
  
                or else
                  (Is_Record_Type (Typ)
                    and then Is_Concurrent_Type (It.Typ)
!                   and then Present (Corresponding_Record_Type (Etype (It.Typ)))
!                   and then
!                     Covers (Typ, Corresponding_Record_Type (Etype (It.Typ))))
! 
!               or else
!                 (Is_Concurrent_Type (Typ)
!                   and then Is_Record_Type (It.Typ)
!                   and then Present (Corresponding_Record_Type (Typ))
!                   and then
!                     Covers (Corresponding_Record_Type (Typ), Etype (It.Typ)))
  
              then
                 return True;
              end if;
*************** package body Sem_Type is
*** 3010,3054 ****
        end if;
     end Is_Ancestor;
  
-    ---------------------------
-    -- Is_Invisible_Operator --
-    ---------------------------
- 
-    function Is_Invisible_Operator
-      (N : Node_Id;
-       T : Entity_Id) return Boolean
-    is
-       Orig_Node : constant Node_Id := Original_Node (N);
- 
-    begin
-       if Nkind (N) not in N_Op then
-          return False;
- 
-       elsif not Comes_From_Source (N) then
-          return False;
- 
-       elsif No (Universal_Interpretation (Right_Opnd (N))) then
-          return False;
- 
-       elsif Nkind (N) in N_Binary_Op
-         and then No (Universal_Interpretation (Left_Opnd (N)))
-       then
-          return False;
- 
-       else
-          return Is_Numeric_Type (T)
-            and then not In_Open_Scopes (Scope (T))
-            and then not Is_Potentially_Use_Visible (T)
-            and then not In_Use (T)
-            and then not In_Use (Scope (T))
-            and then
-             (Nkind (Orig_Node) /= N_Function_Call
-               or else Nkind (Name (Orig_Node)) /= N_Expanded_Name
-               or else Entity (Prefix (Name (Orig_Node))) /= Scope (T))
-            and then not In_Instance;
-       end if;
-    end Is_Invisible_Operator;
- 
     --------------------
     --  Is_Progenitor --
     --------------------
--- 2942,2947 ----
*************** package body Sem_Type is
*** 3081,3086 ****
--- 2974,3038 ----
        return False;
     end Is_Subtype_Of;
  
+    -------------------------
+    -- Is_Visible_Operator --
+    -------------------------
+ 
+    function Is_Visible_Operator (N : Node_Id; Typ : Entity_Id) return Boolean
+    is
+    begin
+       --  The predefined operators of the universal types are always visible
+ 
+       if Typ in Universal_Integer | Universal_Real | Universal_Access then
+          return True;
+ 
+       --  AI95-0230: Keep restriction imposed by Ada 83 and 95, do not allow
+       --  anonymous access types in universal_access equality operators.
+ 
+       elsif Is_Anonymous_Access_Type (Typ) then
+          return Ada_Version >= Ada_2005;
+ 
+       --  Similar reasoning for special types used for composite types before
+       --  type resolution is done.
+ 
+       elsif Typ = Any_Composite or else Typ = Any_String then
+          return True;
+ 
+       --  Within an instance, the predefined operators of the formal types are
+       --  visible and, for the other types, the generic package declaration has
+       --  already been successfully analyzed. Likewise for an inlined body.
+ 
+       elsif In_Instance or else In_Inlined_Body then
+          return True;
+ 
+      --  If the operation is given in functional notation and the prefix is an
+      --  expanded name, then the operator is visible if the prefix is the scope
+      --  of the type, or System if the type is declared in an extension of it.
+ 
+       elsif Nkind (N) = N_Function_Call
+         and then Nkind (Name (N)) = N_Expanded_Name
+       then
+          declare
+             Pref : constant Entity_Id := Entity (Prefix (Name (N)));
+             Scop : constant Entity_Id := Scope (Typ);
+ 
+          begin
+             return Pref = Scop
+               or else (Present (System_Aux_Id)
+                         and then Scop = System_Aux_Id
+                         and then Pref = Scope (Scop));
+          end;
+ 
+       --  Otherwise the operator is visible when the type is visible
+ 
+       else
+          return Is_Potentially_Use_Visible (Typ)
+            or else In_Use (Typ)
+            or else (In_Use (Scope (Typ)) and then not Is_Hidden (Typ))
+            or else In_Open_Scopes (Scope (Typ));
+       end if;
+    end Is_Visible_Operator;
+ 
     ------------------
     -- List_Interps --
     ------------------
*************** package body Sem_Type is
*** 3184,3190 ****
  
           elsif Op_Name in Name_Op_Eq | Name_Op_Ne then
              return Base_Type (T1) = Base_Type (T2)
!               and then not Is_Limited_Type (T1)
                and then Is_Boolean_Type (T);
  
           elsif Op_Name in Name_Op_Lt | Name_Op_Le | Name_Op_Gt | Name_Op_Ge
--- 3136,3142 ----
  
           elsif Op_Name in Name_Op_Eq | Name_Op_Ne then
              return Base_Type (T1) = Base_Type (T2)
!               and then Valid_Equality_Arg (T1)
                and then Is_Boolean_Type (T);
  
           elsif Op_Name in Name_Op_Lt | Name_Op_Le | Name_Op_Gt | Name_Op_Ge
*************** package body Sem_Type is
*** 3366,3442 ****
          or else (T1 = Universal_Real    and then Is_Real_Type (T2))
          or else (T1 = Universal_Fixed   and then Is_Fixed_Point_Type (T2))
          or else (T1 = Any_Fixed         and then Is_Fixed_Point_Type (T2))
        then
           return B2;
  
!       elsif     (T2 = Universal_Integer and then Is_Integer_Type (T1))
!         or else (T2 = Universal_Real    and then Is_Real_Type (T1))
!         or else (T2 = Universal_Fixed   and then Is_Fixed_Point_Type (T1))
!         or else (T2 = Any_Fixed         and then Is_Fixed_Point_Type (T1))
        then
-          return B1;
- 
-       elsif T2 = Any_String and then Is_String_Type (T1) then
-          return B1;
- 
-       elsif T1 = Any_String and then Is_String_Type (T2) then
           return B2;
  
!       elsif T2 = Any_Character and then Is_Character_Type (T1) then
!          return B1;
! 
!       elsif T1 = Any_Character and then Is_Character_Type (T2) then
           return B2;
  
!       elsif T1 = Universal_Access
!         and then (Is_Access_Type (T2) or else Is_Remote_Access (T2))
        then
!          return T2;
  
!       elsif T2 = Universal_Access
          and then (Is_Access_Type (T1) or else Is_Remote_Access (T1))
        then
!          return T1;
! 
!       --  In an instance, the specific type may have a private view. Use full
!       --  view to check legality.
! 
!       elsif T2 = Universal_Access
!         and then Is_Private_Type (T1)
!         and then Present (Full_View (T1))
!         and then Is_Access_Type (Full_View (T1))
!         and then In_Instance
!       then
!          return T1;
! 
!       elsif T2 = Any_Composite and then Is_Aggregate_Type (T1) then
!          return T1;
! 
!       elsif T1 = Any_Composite and then Is_Aggregate_Type (T2) then
!          return T2;
! 
!       elsif T1 = Any_Modular and then Is_Modular_Integer_Type (T2) then
!          return T2;
! 
!       elsif T2 = Any_Modular and then Is_Modular_Integer_Type (T1) then
!          return T1;
  
!       --  ----------------------------------------------------------
!       --  Special cases for equality operators (all other predefined
!       --  operators can never apply to tagged types)
!       --  ----------------------------------------------------------
  
        --  Ada 2005 (AI-251): T1 and T2 are class-wide types, and T2 is an
!       --  interface
  
        elsif Is_Class_Wide_Type (T1)
          and then Is_Class_Wide_Type (T2)
          and then Is_Interface (Etype (T2))
        then
!          return T1;
  
        --  Ada 2005 (AI-251): T1 is a concrete type that implements the
!       --  class-wide interface T2
  
        elsif Is_Tagged_Type (T1)
          and then Is_Class_Wide_Type (T2)
--- 3318,3376 ----
          or else (T1 = Universal_Real    and then Is_Real_Type (T2))
          or else (T1 = Universal_Fixed   and then Is_Fixed_Point_Type (T2))
          or else (T1 = Any_Fixed         and then Is_Fixed_Point_Type (T2))
+         or else (T1 = Any_Modular       and then Is_Modular_Integer_Type (T2))
+         or else (T1 = Any_Character     and then Is_Character_Type (T2))
+         or else (T1 = Any_String        and then Is_String_Type (T2))
+         or else (T1 = Any_Composite     and then Is_Aggregate_Type (T2))
        then
           return B2;
  
!       elsif (T1 = Universal_Access
!               or else Ekind (T1) in E_Allocator_Type | E_Access_Attribute_Type)
!         and then (Is_Access_Type (T2) or else Is_Remote_Access (T2))
        then
           return B2;
  
!       elsif T1 = Raise_Type then
           return B2;
  
!       elsif     (T2 = Universal_Integer and then Is_Integer_Type (T1))
!         or else (T2 = Universal_Real    and then Is_Real_Type (T1))
!         or else (T2 = Universal_Fixed   and then Is_Fixed_Point_Type (T1))
!         or else (T2 = Any_Fixed         and then Is_Fixed_Point_Type (T1))
!         or else (T2 = Any_Modular       and then Is_Modular_Integer_Type (T1))
!         or else (T2 = Any_Character     and then Is_Character_Type (T1))
!         or else (T2 = Any_String        and then Is_String_Type (T1))
!         or else (T2 = Any_Composite     and then Is_Aggregate_Type (T1))
        then
!          return B1;
  
!       elsif (T2 = Universal_Access
!               or else Ekind (T2) in E_Allocator_Type | E_Access_Attribute_Type)
          and then (Is_Access_Type (T1) or else Is_Remote_Access (T1))
        then
!          return B1;
  
!       elsif T2 = Raise_Type then
!          return B1;
  
        --  Ada 2005 (AI-251): T1 and T2 are class-wide types, and T2 is an
!       --  interface, return T1, and vice versa.
  
        elsif Is_Class_Wide_Type (T1)
          and then Is_Class_Wide_Type (T2)
          and then Is_Interface (Etype (T2))
        then
!          return B1;
! 
!       elsif Is_Class_Wide_Type (T2)
!         and then Is_Class_Wide_Type (T1)
!         and then Is_Interface (Etype (T1))
!       then
!          return B2;
  
        --  Ada 2005 (AI-251): T1 is a concrete type that implements the
!       --  class-wide interface T2, return T1, and vice versa.
  
        elsif Is_Tagged_Type (T1)
          and then Is_Class_Wide_Type (T2)
*************** package body Sem_Type is
*** 3444,3460 ****
          and then Interface_Present_In_Ancestor (Typ   => T1,
                                                  Iface => Etype (T2))
        then
!          return T1;
  
        elsif Is_Class_Wide_Type (T1)
          and then Is_Ancestor (Root_Type (T1), T2)
        then
!          return T1;
  
        elsif Is_Class_Wide_Type (T2)
          and then Is_Ancestor (Root_Type (T2), T1)
        then
!          return T2;
  
        elsif Is_Access_Type (T1)
          and then Is_Access_Type (T2)
--- 3378,3402 ----
          and then Interface_Present_In_Ancestor (Typ   => T1,
                                                  Iface => Etype (T2))
        then
!          return B1;
! 
!       elsif Is_Tagged_Type (T2)
!         and then Is_Class_Wide_Type (T1)
!         and then Is_Interface (Etype (T1))
!         and then Interface_Present_In_Ancestor (Typ   => T2,
!                                                 Iface => Etype (T1))
!       then
!          return B2;
  
        elsif Is_Class_Wide_Type (T1)
          and then Is_Ancestor (Root_Type (T1), T2)
        then
!          return B1;
  
        elsif Is_Class_Wide_Type (T2)
          and then Is_Ancestor (Root_Type (T2), T1)
        then
!          return B2;
  
        elsif Is_Access_Type (T1)
          and then Is_Access_Type (T2)
*************** package body Sem_Type is
*** 3488,3503 ****
        then
           return T1;
  
-       elsif Ekind (T1) in E_Allocator_Type | E_Access_Attribute_Type
-         and then Is_Access_Type (T2)
-       then
-          return T2;
- 
-       elsif Ekind (T2) in E_Allocator_Type | E_Access_Attribute_Type
-         and then Is_Access_Type (T1)
-       then
-          return T1;
- 
        --  Ada 2005 (AI-230): Support the following operators:
  
        --    function "="  (L, R : universal_access) return Boolean;
--- 3430,3435 ----
*************** package body Sem_Type is
*** 3513,3528 ****
        --  Note that this does not preclude one operand to be a pool-specific
        --  access type, as a previous version of this code enforced.
  
!       elsif Ada_Version >= Ada_2005 then
!          if Is_Anonymous_Access_Type (T1)
!            and then Is_Access_Type (T2)
!          then
!             return T1;
  
!          elsif Is_Anonymous_Access_Type (T2)
!            and then Is_Access_Type (T1)
!          then
!             return T2;
           end if;
        end if;
  
--- 3445,3478 ----
        --  Note that this does not preclude one operand to be a pool-specific
        --  access type, as a previous version of this code enforced.
  
!       elsif Is_Anonymous_Access_Type (T1)
!         and then Is_Access_Type (T2)
!         and then Ada_Version >= Ada_2005
!       then
!          return T1;
  
!       elsif Is_Anonymous_Access_Type (T2)
!         and then Is_Access_Type (T1)
!         and then Ada_Version >= Ada_2005
!       then
!          return T2;
! 
!       --  In instances, also check private views the same way as Covers
! 
!       elsif Is_Private_Type (T1) and then In_Instance then
!          if Present (Full_View (T1)) then
!             return Specific_Type (Full_View (T1), T2);
! 
!          elsif Present (Underlying_Full_View (T1)) then
!             return Specific_Type (Underlying_Full_View (T1), T2);
!          end if;
! 
!       elsif Is_Private_Type (T2) and then In_Instance then
!          if Present (Full_View (T2)) then
!             return Specific_Type (T1, Full_View (T2));
! 
!          elsif Present (Underlying_Full_View (T2)) then
!             return Specific_Type (T1, Underlying_Full_View (T2));
           end if;
        end if;
  
*************** package body Sem_Type is
*** 3557,3567 ****
          or else Is_Modular_Integer_Type (T)
          or else T = Universal_Integer
          or else T = Any_Composite
        then
           return True;
  
        elsif Is_Array_Type (T)
-         and then T /= Any_String
          and then Number_Dimensions (T) = 1
          and then Is_Boolean_Type (Component_Type (T))
          and then
--- 3507,3517 ----
          or else Is_Modular_Integer_Type (T)
          or else T = Universal_Integer
          or else T = Any_Composite
+         or else T = Raise_Type
        then
           return True;
  
        elsif Is_Array_Type (T)
          and then Number_Dimensions (T) = 1
          and then Is_Boolean_Type (Component_Type (T))
          and then
*************** package body Sem_Type is
*** 3580,3594 ****
     -- Valid_Comparison_Arg --
     --------------------------
  
     function Valid_Comparison_Arg (T : Entity_Id) return Boolean is
     begin
  
!       if T = Any_Composite then
!          return False;
! 
!       elsif Is_Discrete_Type (T)
!         or else Is_Real_Type (T)
!       then
           return True;
  
        elsif Is_Array_Type (T)
--- 3530,3543 ----
     -- Valid_Comparison_Arg --
     --------------------------
  
+    --  See above for the reason why aggregates and strings are included
+ 
     function Valid_Comparison_Arg (T : Entity_Id) return Boolean is
     begin
+       if Is_Discrete_Type (T) or else Is_Real_Type (T) then
+          return True;
  
!       elsif T = Any_Composite or else T = Any_String then
           return True;
  
        elsif Is_Array_Type (T)
*************** package body Sem_Type is
*** 3608,3618 ****
--- 3557,3596 ----
  
        elsif Is_String_Type (T) then
           return True;
+ 
        else
           return False;
        end if;
     end Valid_Comparison_Arg;
  
+    ------------------------
+    -- Valid_Equality_Arg --
+    ------------------------
+ 
+    --  Same reasoning as above but implicit because of the nonlimited test
+ 
+    function Valid_Equality_Arg (T : Entity_Id) return Boolean is
+    begin
+       --  AI95-0230: Keep restriction imposed by Ada 83 and 95, do not allow
+       --  anonymous access types in universal_access equality operators.
+ 
+       if Is_Anonymous_Access_Type (T) then
+          return Ada_Version >= Ada_2005;
+ 
+       elsif not Is_Limited_Type (T) then
+          return True;
+ 
+       elsif Is_Array_Type (T)
+         and then not Is_Limited_Type (Component_Type (T))
+         and then Available_Full_View_Of_Component (T)
+       then
+          return True;
+ 
+       else
+          return False;
+       end if;
+    end Valid_Equality_Arg;
+ 
     ------------------
     -- Write_Interp --
     ------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_type.ads gcc-13.1.0/gcc/ada/sem_type.ads
*** gcc-12.2.0/gcc/ada/sem_type.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_type.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Type is
*** 103,111 ****
     --  in N. If the name is an expanded name, the homonyms are only those that
     --  belong to the same scope.
  
!    function Is_Invisible_Operator (N : Node_Id; T : Entity_Id) return Boolean;
!    --  Check whether a predefined operation with universal operands appears in
!    --  a context in which the operators of the expected type are not visible.
  
     procedure List_Interps (Nam : Node_Id; Err : Node_Id);
     --  List candidate interpretations of an overloaded name. Used for various
--- 103,114 ----
     --  in N. If the name is an expanded name, the homonyms are only those that
     --  belong to the same scope.
  
!    function Is_Visible_Operator (N : Node_Id; Typ : Entity_Id) return Boolean;
!    --  Determine whether a predefined operation is performed in a context where
!    --  the predefined operators of base type Typ are visible. The existence of
!    --  this routine is an implementation artifact. A more straightforward but
!    --  more space-consuming choice would be to make all inherited operators
!    --  explicit in the symbol table. See also Sem_ch8.Has_Implicit_Operator.
  
     procedure List_Interps (Nam : Node_Id; Err : Node_Id);
     --  List candidate interpretations of an overloaded name. Used for various
*************** package Sem_Type is
*** 181,202 ****
     --  opposed to an operator, type and mode conformance are required.
  
     function Find_Unique_Type (L : Node_Id; R : Node_Id) return Entity_Id;
!    --  Used in second pass of resolution, for equality and comparison nodes. L
!    --  is the left operand, whose type is known to be correct, and R is the
!    --  right operand, which has one interpretation compatible with that of L.
!    --  Return the type intersection of the two.
  
!    function Has_Compatible_Type
!      (N              : Node_Id;
!       Typ            : Entity_Id;
!       For_Comparison : Boolean := False) return Boolean;
     --  Verify that some interpretation of the node N has a type compatible with
     --  Typ. If N is not overloaded, then its unique type must be compatible
     --  with Typ. Otherwise iterate through the interpretations of N looking for
!    --  a compatible one. If For_Comparison is true, the function is invoked for
!    --  a comparison (or equality) operator and also needs to verify the reverse
!    --  compatibility, because the implementation of type resolution for these
!    --  operators is not fully symmetrical.
  
     function Hides_Op (F : Entity_Id; Op : Entity_Id) return Boolean;
     --  A user-defined function hides a predefined operator if it matches the
--- 184,198 ----
     --  opposed to an operator, type and mode conformance are required.
  
     function Find_Unique_Type (L : Node_Id; R : Node_Id) return Entity_Id;
!    --  Used in type resolution for equality and comparison nodes. L and R are
!    --  the operands, whose type is known to be correct or Any_Type in case of
!    --  ambiguity. Return the type intersection of the two.
  
!    function Has_Compatible_Type (N : Node_Id; Typ : Entity_Id) return Boolean;
     --  Verify that some interpretation of the node N has a type compatible with
     --  Typ. If N is not overloaded, then its unique type must be compatible
     --  with Typ. Otherwise iterate through the interpretations of N looking for
!    --  a compatible one.
  
     function Hides_Op (F : Entity_Id; Op : Entity_Id) return Boolean;
     --  A user-defined function hides a predefined operator if it matches the
*************** package Sem_Type is
*** 259,271 ****
     procedure Set_Abstract_Op (I : Interp_Index; V : Entity_Id);
     --  Set the abstract operation field of an interpretation
  
!    function Valid_Comparison_Arg (T : Entity_Id) return Boolean;
!    --  A valid argument to an ordering operator must be a discrete type, a
!    --  real type, or a one dimensional array with a discrete component type.
  
     function Valid_Boolean_Arg (T : Entity_Id) return Boolean;
!    --  A valid argument of a boolean operator is either some boolean type, or a
!    --  one-dimensional array of boolean type.
  
     procedure Write_Interp (It : Interp);
     --  Debugging procedure to display an Interp
--- 255,276 ----
     procedure Set_Abstract_Op (I : Interp_Index; V : Entity_Id);
     --  Set the abstract operation field of an interpretation
  
!    function Specific_Type (Typ_1, Typ_2 : Entity_Id) return Entity_Id;
!    --  If Typ_1 and Typ_2 are compatible, return the one that is not universal
!    --  or is not a "class" type (any_character, etc).
  
     function Valid_Boolean_Arg (T : Entity_Id) return Boolean;
!    --  A valid argument of a predefined boolean operator must be a boolean type
!    --  or a 1-dimensional array of boolean type.
! 
!    function Valid_Comparison_Arg (T : Entity_Id) return Boolean;
!    --  A valid argument of a predefined comparison operator must be a discrete
!    --  type, real type or a 1-dimensional array with a discrete component type.
! 
!    function Valid_Equality_Arg (T : Entity_Id) return Boolean;
!    --  A valid argument of a predefined equality operator must be a nonlimited
!    --  type or an array with a limited private component whose full view is not
!    --  limited.
  
     procedure Write_Interp (It : Interp);
     --  Debugging procedure to display an Interp
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_util.adb gcc-13.1.0/gcc/ada/sem_util.adb
*** gcc-12.2.0/gcc/ada/sem_util.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_util.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Casing;         use Casing;
  with Checks;         use Checks;
  with Debug;          use Debug;
*************** with Einfo.Utils;    use Einfo.Utils;
*** 30,36 ****
  with Elists;         use Elists;
  with Errout;         use Errout;
  with Erroutc;        use Erroutc;
! with Exp_Ch3;        use Exp_Ch3;
  with Exp_Ch11;       use Exp_Ch11;
  with Exp_Util;       use Exp_Util;
  with Fname;          use Fname;
--- 31,37 ----
  with Elists;         use Elists;
  with Errout;         use Errout;
  with Erroutc;        use Erroutc;
! with Exp_Ch6;        use Exp_Ch6;
  with Exp_Ch11;       use Exp_Ch11;
  with Exp_Util;       use Exp_Util;
  with Fname;          use Fname;
*************** with Targparm;       use Targparm;
*** 70,75 ****
--- 71,77 ----
  with Tbuild;         use Tbuild;
  with Ttypes;         use Ttypes;
  with Uname;          use Uname;
+ with Warnsw;         use Warnsw;
  
  with GNAT.Heap_Sort_G;
  with GNAT.HTable;    use GNAT.HTable;
*************** package body Sem_Util is
*** 253,984 ****
        return Interface_List (Nod);
     end Abstract_Interface_List;
  
-    -------------------------
-    -- Accessibility_Level --
-    -------------------------
- 
-    function Accessibility_Level
-      (Expr              : Node_Id;
-       Level             : Accessibility_Level_Kind;
-       In_Return_Context : Boolean := False;
-       Allow_Alt_Model   : Boolean := True) return Node_Id
-    is
-       Loc : constant Source_Ptr := Sloc (Expr);
- 
-       function Accessibility_Level (Expr : Node_Id) return Node_Id
-         is (Accessibility_Level (Expr, Level, In_Return_Context));
-       --  Renaming of the enclosing function to facilitate recursive calls
- 
-       function Make_Level_Literal (Level : Uint) return Node_Id;
-       --  Construct an integer literal representing an accessibility level
-       --  with its type set to Natural.
- 
-       function Innermost_Master_Scope_Depth (N : Node_Id) return Uint;
-       --  Returns the scope depth of the given node's innermost
-       --  enclosing dynamic scope (effectively the accessibility
-       --  level of the innermost enclosing master).
- 
-       function Function_Call_Or_Allocator_Level (N : Node_Id) return Node_Id;
-       --  Centralized processing of subprogram calls which may appear in
-       --  prefix notation.
- 
-       function Typ_Access_Level (Typ : Entity_Id) return Uint
-         is (Type_Access_Level (Typ, Allow_Alt_Model));
-       --  Renaming of Type_Access_Level with Allow_Alt_Model specified to avoid
-       --  passing the parameter specifically in every call.
- 
-       ----------------------------------
-       -- Innermost_Master_Scope_Depth --
-       ----------------------------------
- 
-       function Innermost_Master_Scope_Depth (N : Node_Id) return Uint is
-          Encl_Scop           : Entity_Id;
-          Ent                 : Entity_Id;
-          Node_Par            : Node_Id := Parent (N);
-          Master_Lvl_Modifier : Int     := 0;
- 
-       begin
-          --  Locate the nearest enclosing node (by traversing Parents)
-          --  that Defining_Entity can be applied to, and return the
-          --  depth of that entity's nearest enclosing dynamic scope.
- 
-          --  The rules that define what a master are defined in
-          --  RM 7.6.1 (3), and include statements and conditions for loops
-          --  among other things. These cases are detected properly ???
- 
-          while Present (Node_Par) loop
-             Ent := Defining_Entity_Or_Empty (Node_Par);
- 
-             if Present (Ent) then
-                Encl_Scop := Nearest_Dynamic_Scope (Ent);
- 
-                --  Ignore transient scopes made during expansion
- 
-                if Comes_From_Source (Node_Par) then
-                   return
-                     Scope_Depth_Default_0 (Encl_Scop) + Master_Lvl_Modifier;
-                end if;
- 
-             --  For a return statement within a function, return
-             --  the depth of the function itself. This is not just
-             --  a small optimization, but matters when analyzing
-             --  the expression in an expression function before
-             --  the body is created.
- 
-             elsif Nkind (Node_Par) in N_Extended_Return_Statement
-                                     | N_Simple_Return_Statement
-               and then Ekind (Current_Scope) = E_Function
-             then
-                return Scope_Depth (Current_Scope);
- 
-             --  Statements are counted as masters
- 
-             elsif Is_Master (Node_Par) then
-                Master_Lvl_Modifier := Master_Lvl_Modifier + 1;
- 
-             end if;
- 
-             Node_Par := Parent (Node_Par);
-          end loop;
- 
-          --  Should never reach the following return
- 
-          pragma Assert (False);
- 
-          return Scope_Depth (Current_Scope) + 1;
-       end Innermost_Master_Scope_Depth;
- 
-       ------------------------
-       -- Make_Level_Literal --
-       ------------------------
- 
-       function Make_Level_Literal (Level : Uint) return Node_Id is
-          Result : constant Node_Id := Make_Integer_Literal (Loc, Level);
- 
-       begin
-          Set_Etype (Result, Standard_Natural);
-          return Result;
-       end Make_Level_Literal;
- 
-       --------------------------------------
-       -- Function_Call_Or_Allocator_Level --
-       --------------------------------------
- 
-       function Function_Call_Or_Allocator_Level (N : Node_Id) return Node_Id is
-          Par      : Node_Id;
-          Prev_Par : Node_Id;
-       begin
-          --  Results of functions are objects, so we either get the
-          --  accessibility of the function or, in case of a call which is
-          --  indirect, the level of the access-to-subprogram type.
- 
-          --  This code looks wrong ???
- 
-          if Nkind (N) = N_Function_Call
-            and then Ada_Version < Ada_2005
-          then
-             if Is_Entity_Name (Name (N)) then
-                return Make_Level_Literal
-                         (Subprogram_Access_Level (Entity (Name (N))));
-             else
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (Prefix (Name (N)))));
-             end if;
- 
-          --  We ignore coextensions as they cannot be implemented under the
-          --  "small-integer" model.
- 
-          elsif Nkind (N) = N_Allocator
-            and then (Is_Static_Coextension (N)
-                       or else Is_Dynamic_Coextension (N))
-          then
-             return Make_Level_Literal (Scope_Depth (Standard_Standard));
-          end if;
- 
-          --  Named access types have a designated level
- 
-          if Is_Named_Access_Type (Etype (N)) then
-             return Make_Level_Literal (Typ_Access_Level (Etype (N)));
- 
-          --  Otherwise, the level is dictated by RM 3.10.2 (10.7/3)
- 
-          else
-             --  Check No_Dynamic_Accessibility_Checks restriction override for
-             --  alternative accessibility model.
- 
-             if Allow_Alt_Model
-               and then No_Dynamic_Accessibility_Checks_Enabled (N)
-               and then Is_Anonymous_Access_Type (Etype (N))
-             then
-                --  In the alternative model the level is that of the
-                --  designated type.
- 
-                if Debug_Flag_Underscore_B then
-                   return Make_Level_Literal (Typ_Access_Level (Etype (N)));
- 
-                --  For function calls the level is that of the innermost
-                --  master, otherwise (for allocators etc.) we get the level
-                --  of the corresponding anonymous access type, which is
-                --  calculated through the normal path of execution.
- 
-                elsif Nkind (N) = N_Function_Call then
-                   return Make_Level_Literal
-                            (Innermost_Master_Scope_Depth (Expr));
-                end if;
-             end if;
- 
-             if Nkind (N) = N_Function_Call then
-                --  Dynamic checks are generated when we are within a return
-                --  value or we are in a function call within an anonymous
-                --  access discriminant constraint of a return object (signified
-                --  by In_Return_Context) on the side of the callee.
- 
-                --  So, in this case, return accessibility level of the
-                --  enclosing subprogram.
- 
-                if In_Return_Value (N)
-                  or else In_Return_Context
-                then
-                   return Make_Level_Literal
-                            (Subprogram_Access_Level (Current_Subprogram));
-                end if;
-             end if;
- 
-             --  When the call is being dereferenced the level is that of the
-             --  enclosing master of the dereferenced call.
- 
-             if Nkind (Parent (N)) in N_Explicit_Dereference
-                                    | N_Indexed_Component
-                                    | N_Selected_Component
-             then
-                return Make_Level_Literal
-                         (Innermost_Master_Scope_Depth (Expr));
-             end if;
- 
-             --  Find any relevant enclosing parent nodes that designate an
-             --  object being initialized.
- 
-             --  Note: The above is only relevant if the result is used "in its
-             --  entirety" as RM 3.10.2 (10.2/3) states. However, this is
-             --  accounted for in the case statement in the main body of
-             --  Accessibility_Level for N_Selected_Component.
- 
-             Par      := Parent (Expr);
-             Prev_Par := Empty;
-             while Present (Par) loop
-                --  Detect an expanded implicit conversion, typically this
-                --  occurs on implicitly converted actuals in calls.
- 
-                --  Does this catch all implicit conversions ???
- 
-                if Nkind (Par) = N_Type_Conversion
-                  and then Is_Named_Access_Type (Etype (Par))
-                then
-                   return Make_Level_Literal
-                            (Typ_Access_Level (Etype (Par)));
-                end if;
- 
-                --  Jump out when we hit an object declaration or the right-hand
-                --  side of an assignment, or a construct such as an aggregate
-                --  subtype indication which would be the result is not used
-                --  "in its entirety."
- 
-                exit when Nkind (Par) in N_Object_Declaration
-                            or else (Nkind (Par) = N_Assignment_Statement
-                                      and then Name (Par) /= Prev_Par);
- 
-                Prev_Par := Par;
-                Par      := Parent (Par);
-             end loop;
- 
-             --  Assignment statements are handled in a similar way in
-             --  accordance to the left-hand part. However, strictly speaking,
-             --  this is illegal according to the RM, but this change is needed
-             --  to pass an ACATS C-test and is useful in general ???
- 
-             case Nkind (Par) is
-                when N_Object_Declaration =>
-                   return Make_Level_Literal
-                            (Scope_Depth
-                              (Scope (Defining_Identifier (Par))));
- 
-                when N_Assignment_Statement =>
-                   --  Return the accessibility level of the left-hand part
- 
-                   return Accessibility_Level
-                            (Expr              => Name (Par),
-                             Level             => Object_Decl_Level,
-                             In_Return_Context => In_Return_Context);
- 
-                when others =>
-                   return Make_Level_Literal
-                            (Innermost_Master_Scope_Depth (Expr));
-             end case;
-          end if;
-       end Function_Call_Or_Allocator_Level;
- 
-       --  Local variables
- 
-       E   : Entity_Id := Original_Node (Expr);
-       Pre : Node_Id;
- 
-    --  Start of processing for Accessibility_Level
- 
-    begin
-       --  We could be looking at a reference to a formal due to the expansion
-       --  of entries and other cases, so obtain the renaming if necessary.
- 
-       if Present (Param_Entity (Expr)) then
-          E := Param_Entity (Expr);
-       end if;
- 
-       --  Extract the entity
- 
-       if Nkind (E) in N_Has_Entity and then Present (Entity (E)) then
-          E := Entity (E);
- 
-          --  Deal with a possible renaming of a private protected component
- 
-          if Ekind (E) in E_Constant | E_Variable and then Is_Prival (E) then
-             E := Prival_Link (E);
-          end if;
-       end if;
- 
-       --  Perform the processing on the expression
- 
-       case Nkind (E) is
-          --  The level of an aggregate is that of the innermost master that
-          --  evaluates it as defined in RM 3.10.2 (10/4).
- 
-          when N_Aggregate =>
-             return Make_Level_Literal (Innermost_Master_Scope_Depth (Expr));
- 
-          --  The accessibility level is that of the access type, except for an
-          --  anonymous allocators which have special rules defined in RM 3.10.2
-          --  (14/3).
- 
-          when N_Allocator =>
-             return Function_Call_Or_Allocator_Level (E);
- 
-          --  We could reach this point for two reasons. Either the expression
-          --  applies to a special attribute ('Loop_Entry, 'Result, or 'Old), or
-          --  we are looking at the access attributes directly ('Access,
-          --  'Address, or 'Unchecked_Access).
- 
-          when N_Attribute_Reference =>
-             Pre := Original_Node (Prefix (E));
- 
-             --  Regular 'Access attribute presence means we have to look at the
-             --  prefix.
- 
-             if Attribute_Name (E) = Name_Access then
-                return Accessibility_Level (Prefix (E));
- 
-             --  Unchecked or unrestricted attributes have unlimited depth
- 
-             elsif Attribute_Name (E) in Name_Address
-                                       | Name_Unchecked_Access
-                                       | Name_Unrestricted_Access
-             then
-                return Make_Level_Literal (Scope_Depth (Standard_Standard));
- 
-             --  'Access can be taken further against other special attributes,
-             --  so handle these cases explicitly.
- 
-             elsif Attribute_Name (E)
-                     in Name_Old | Name_Loop_Entry | Name_Result
-             then
-                --  Named access types
- 
-                if Is_Named_Access_Type (Etype (Pre)) then
-                   return Make_Level_Literal
-                            (Typ_Access_Level (Etype (Pre)));
- 
-                --  Anonymous access types
- 
-                elsif Nkind (Pre) in N_Has_Entity
-                  and then Present (Get_Dynamic_Accessibility (Entity (Pre)))
-                  and then Level = Dynamic_Level
-                then
-                   return New_Occurrence_Of
-                            (Get_Dynamic_Accessibility (Entity (Pre)), Loc);
- 
-                --  Otherwise the level is treated in a similar way as
-                --  aggregates according to RM 6.1.1 (35.1/4) which concerns
-                --  an implicit constant declaration - in turn defining the
-                --  accessibility level to be that of the implicit constant
-                --  declaration.
- 
-                else
-                   return Make_Level_Literal
-                            (Innermost_Master_Scope_Depth (Expr));
-                end if;
- 
-             else
-                raise Program_Error;
-             end if;
- 
-          --  This is the "base case" for accessibility level calculations which
-          --  means we are near the end of our recursive traversal.
- 
-          when N_Defining_Identifier =>
-             --  A dynamic check is performed on the side of the callee when we
-             --  are within a return statement, so return a library-level
-             --  accessibility level to null out checks on the side of the
-             --  caller.
- 
-             if Is_Explicitly_Aliased (E)
-               and then (In_Return_Context
-                          or else (Level /= Dynamic_Level
-                                    and then In_Return_Value (Expr)))
-             then
-                return Make_Level_Literal (Scope_Depth (Standard_Standard));
- 
-             --  Something went wrong and an extra accessibility formal has not
-             --  been generated when one should have ???
- 
-             elsif Is_Formal (E)
-               and then not Present (Get_Dynamic_Accessibility (E))
-               and then Ekind (Etype (E)) = E_Anonymous_Access_Type
-             then
-                return Make_Level_Literal (Scope_Depth (Standard_Standard));
- 
-             --  Stand-alone object of an anonymous access type "SAOAAT"
- 
-             elsif (Is_Formal (E)
-                     or else Ekind (E) in E_Variable
-                                        | E_Constant)
-               and then Present (Get_Dynamic_Accessibility (E))
-               and then (Level = Dynamic_Level
-                          or else Level = Zero_On_Dynamic_Level)
-             then
-                if Level = Zero_On_Dynamic_Level then
-                   return Make_Level_Literal
-                            (Scope_Depth (Standard_Standard));
-                end if;
- 
-                --  No_Dynamic_Accessibility_Checks restriction override for
-                --  alternative accessibility model.
- 
-                if Allow_Alt_Model
-                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
-                then
-                   --  In the alternative model the level is that of the
-                   --  designated type entity's context.
- 
-                   if Debug_Flag_Underscore_B then
-                      return Make_Level_Literal (Typ_Access_Level (Etype (E)));
- 
-                   --  Otherwise the level depends on the entity's context
- 
-                   elsif Is_Formal (E) then
-                      return Make_Level_Literal
-                               (Subprogram_Access_Level
-                                 (Enclosing_Subprogram (E)));
-                   else
-                      return Make_Level_Literal
-                               (Scope_Depth (Enclosing_Dynamic_Scope (E)));
-                   end if;
-                end if;
- 
-                --  Return the dynamic level in the normal case
- 
-                return New_Occurrence_Of
-                         (Get_Dynamic_Accessibility (E), Loc);
- 
-             --  Initialization procedures have a special extra accessibility
-             --  parameter associated with the level at which the object
-             --  being initialized exists
- 
-             elsif Ekind (E) = E_Record_Type
-               and then Is_Limited_Record (E)
-               and then Current_Scope = Init_Proc (E)
-               and then Present (Init_Proc_Level_Formal (Current_Scope))
-             then
-                return New_Occurrence_Of
-                         (Init_Proc_Level_Formal (Current_Scope), Loc);
- 
-             --  Current instance of the type is deeper than that of the type
-             --  according to RM 3.10.2 (21).
- 
-             elsif Is_Type (E) then
-                --  When restriction No_Dynamic_Accessibility_Checks is active
-                --  along with -gnatd_b.
- 
-                if Allow_Alt_Model
-                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
-                  and then Debug_Flag_Underscore_B
-                then
-                   return Make_Level_Literal (Typ_Access_Level (E));
-                end if;
- 
-                --  Normal path
- 
-                return Make_Level_Literal (Typ_Access_Level (E) + 1);
- 
-             --  Move up the renamed entity or object if it came from source
-             --  since expansion may have created a dummy renaming under
-             --  certain circumstances.
- 
-             --  Note: We check if the original node of the renaming comes
-             --  from source because the node may have been rewritten.
- 
-             elsif Present (Renamed_Entity_Or_Object (E))
-               and then Comes_From_Source
-                 (Original_Node (Renamed_Entity_Or_Object (E)))
-             then
-                return Accessibility_Level (Renamed_Entity_Or_Object (E));
- 
-             --  Named access types get their level from their associated type
- 
-             elsif Is_Named_Access_Type (Etype (E)) then
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (E)));
- 
-             --  Check if E is an expansion-generated renaming of an iterator
-             --  by examining Related_Expression. If so, determine the
-             --  accessibility level based on the original expression.
- 
-             elsif Ekind (E) in E_Constant | E_Variable
-               and then Present (Related_Expression (E))
-             then
-                return Accessibility_Level (Related_Expression (E));
- 
-             elsif Level = Dynamic_Level
-                and then Ekind (E) in E_In_Parameter | E_In_Out_Parameter
-                and then Present (Init_Proc_Level_Formal (Scope (E)))
-             then
-                return New_Occurrence_Of
-                         (Init_Proc_Level_Formal (Scope (E)), Loc);
- 
-             --  Normal object - get the level of the enclosing scope
- 
-             else
-                return Make_Level_Literal
-                         (Scope_Depth (Enclosing_Dynamic_Scope (E)));
-             end if;
- 
-          --  Handle indexed and selected components including the special cases
-          --  whereby there is an implicit dereference, a component of a
-          --  composite type, or a function call in prefix notation.
- 
-          --  We don't handle function calls in prefix notation correctly ???
- 
-          when N_Indexed_Component | N_Selected_Component =>
-             Pre := Original_Node (Prefix (E));
- 
-             --  When E is an indexed component or selected component and
-             --  the current Expr is a function call, we know that we are
-             --  looking at an expanded call in prefix notation.
- 
-             if Nkind (Expr) = N_Function_Call then
-                return Function_Call_Or_Allocator_Level (Expr);
- 
-             --  If the prefix is a named access type, then we are dealing
-             --  with an implicit deferences. In that case the level is that
-             --  of the named access type in the prefix.
- 
-             elsif Is_Named_Access_Type (Etype (Pre)) then
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (Pre)));
- 
-             --  The current expression is a named access type, so there is no
-             --  reason to look at the prefix. Instead obtain the level of E's
-             --  named access type.
- 
-             elsif Is_Named_Access_Type (Etype (E)) then
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (E)));
- 
-             --  A nondiscriminant selected component where the component
-             --  is an anonymous access type means that its associated
-             --  level is that of the containing type - see RM 3.10.2 (16).
- 
-             --  Note that when restriction No_Dynamic_Accessibility_Checks is
-             --  in effect we treat discriminant components as regular
-             --  components.
- 
-             elsif Nkind (E) = N_Selected_Component
-               and then Ekind (Etype (E))   =  E_Anonymous_Access_Type
-               and then Ekind (Etype (Pre)) /= E_Anonymous_Access_Type
-               and then (not (Nkind (Selector_Name (E)) in N_Has_Entity
-                               and then Ekind (Entity (Selector_Name (E)))
-                                          = E_Discriminant)
- 
-                         --  The alternative accessibility models both treat
-                         --  discriminants as regular components.
- 
-                         or else (No_Dynamic_Accessibility_Checks_Enabled (E)
-                                   and then Allow_Alt_Model))
-             then
-                --  When restriction No_Dynamic_Accessibility_Checks is active
-                --  and -gnatd_b set, the level is that of the designated type.
- 
-                if Allow_Alt_Model
-                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
-                  and then Debug_Flag_Underscore_B
-                then
-                   return Make_Level_Literal
-                            (Typ_Access_Level (Etype (E)));
-                end if;
- 
-                --  Otherwise proceed normally
- 
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (Prefix (E))));
- 
-             --  Similar to the previous case - arrays featuring components of
-             --  anonymous access components get their corresponding level from
-             --  their containing type's declaration.
- 
-             elsif Nkind (E) = N_Indexed_Component
-               and then Ekind (Etype (E)) = E_Anonymous_Access_Type
-               and then Ekind (Etype (Pre)) in Array_Kind
-               and then Ekind (Component_Type (Base_Type (Etype (Pre))))
-                          = E_Anonymous_Access_Type
-             then
-                --  When restriction No_Dynamic_Accessibility_Checks is active
-                --  and -gnatd_b set, the level is that of the designated type.
- 
-                if Allow_Alt_Model
-                  and then No_Dynamic_Accessibility_Checks_Enabled (E)
-                  and then Debug_Flag_Underscore_B
-                then
-                   return Make_Level_Literal
-                            (Typ_Access_Level (Etype (E)));
-                end if;
- 
-                --  Otherwise proceed normally
- 
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (Prefix (E))));
- 
-             --  The accessibility calculation routine that handles function
-             --  calls (Function_Call_Level) assumes, in the case the
-             --  result is of an anonymous access type, that the result will be
-             --  used "in its entirety" when the call is present within an
-             --  assignment or object declaration.
- 
-             --  To properly handle cases where the result is not used in its
-             --  entirety, we test if the prefix of the component in question is
-             --  a function call, which tells us that one of its components has
-             --  been identified and is being accessed. Therefore we can
-             --  conclude that the result is not used "in its entirety"
-             --  according to RM 3.10.2 (10.2/3).
- 
-             elsif Nkind (Pre) = N_Function_Call
-               and then not Is_Named_Access_Type (Etype (Pre))
-             then
-                --  Dynamic checks are generated when we are within a return
-                --  value or we are in a function call within an anonymous
-                --  access discriminant constraint of a return object (signified
-                --  by In_Return_Context) on the side of the callee.
- 
-                --  So, in this case, return a library accessibility level to
-                --  null out the check on the side of the caller.
- 
-                if (In_Return_Value (E)
-                     or else In_Return_Context)
-                  and then Level /= Dynamic_Level
-                then
-                   return Make_Level_Literal
-                            (Scope_Depth (Standard_Standard));
-                end if;
- 
-                return Make_Level_Literal
-                         (Innermost_Master_Scope_Depth (Expr));
- 
-             --  Otherwise, continue recursing over the expression prefixes
- 
-             else
-                return Accessibility_Level (Prefix (E));
-             end if;
- 
-          --  Qualified expressions
- 
-          when N_Qualified_Expression =>
-             if Is_Named_Access_Type (Etype (E)) then
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (E)));
-             else
-                return Accessibility_Level (Expression (E));
-             end if;
- 
-          --  Handle function calls
- 
-          when N_Function_Call =>
-             return Function_Call_Or_Allocator_Level (E);
- 
-          --  Explicit dereference accessibility level calculation
- 
-          when N_Explicit_Dereference =>
-             Pre := Original_Node (Prefix (E));
- 
-             --  The prefix is a named access type so the level is taken from
-             --  its type.
- 
-             if Is_Named_Access_Type (Etype (Pre)) then
-                return Make_Level_Literal (Typ_Access_Level (Etype (Pre)));
- 
-             --  Otherwise, recurse deeper
- 
-             else
-                return Accessibility_Level (Prefix (E));
-             end if;
- 
-          --  Type conversions
- 
-          when N_Type_Conversion | N_Unchecked_Type_Conversion =>
-             --  View conversions are special in that they require use to
-             --  inspect the expression of the type conversion.
- 
-             --  Allocators of anonymous access types are internally generated,
-             --  so recurse deeper in that case as well.
- 
-             if Is_View_Conversion (E)
-               or else Ekind (Etype (E)) = E_Anonymous_Access_Type
-             then
-                return Accessibility_Level (Expression (E));
- 
-             --  We don't care about the master if we are looking at a named
-             --  access type.
- 
-             elsif Is_Named_Access_Type (Etype (E)) then
-                return Make_Level_Literal
-                         (Typ_Access_Level (Etype (E)));
- 
-             --  In section RM 3.10.2 (10/4) the accessibility rules for
-             --  aggregates and value conversions are outlined. Are these
-             --  followed in the case of initialization of an object ???
- 
-             --  Should use Innermost_Master_Scope_Depth ???
- 
-             else
-                return Accessibility_Level (Current_Scope);
-             end if;
- 
-          --  Default to the type accessibility level for the type of the
-          --  expression's entity.
- 
-          when others =>
-             return Make_Level_Literal (Typ_Access_Level (Etype (E)));
-       end case;
-    end Accessibility_Level;
- 
-    --------------------------------
-    -- Static_Accessibility_Level --
-    --------------------------------
- 
-    function Static_Accessibility_Level
-      (Expr              : Node_Id;
-       Level             : Static_Accessibility_Level_Kind;
-       In_Return_Context : Boolean := False) return Uint
-    is
-    begin
-       return Intval
-                (Accessibility_Level (Expr, Level, In_Return_Context));
-    end Static_Accessibility_Level;
- 
     ----------------------------------
     -- Acquire_Warning_Match_String --
     ----------------------------------
--- 255,260 ----
*************** package body Sem_Util is
*** 1035,1041 ****
     -- Add_Block_Identifier --
     --------------------------
  
!    procedure Add_Block_Identifier (N : Node_Id; Id : out Entity_Id) is
        Loc : constant Source_Ptr := Sloc (N);
     begin
        pragma Assert (Nkind (N) = N_Block_Statement);
--- 311,321 ----
     -- Add_Block_Identifier --
     --------------------------
  
!    procedure Add_Block_Identifier
!        (N : Node_Id;
!         Id : out Entity_Id;
!         Scope : Entity_Id := Current_Scope)
!    is
        Loc : constant Source_Ptr := Sloc (N);
     begin
        pragma Assert (Nkind (N) = N_Block_Statement);
*************** package body Sem_Util is
*** 1048,1054 ****
        --  Create a new block label and set its attributes
  
        else
!          Id := New_Internal_Entity (E_Block, Current_Scope, Loc, 'B');
           Set_Etype  (Id, Standard_Void_Type);
           Set_Parent (Id, N);
  
--- 328,334 ----
        --  Create a new block label and set its attributes
  
        else
!          Id := New_Internal_Entity (E_Block, Scope, Loc, 'B');
           Set_Etype  (Id, Standard_Void_Type);
           Set_Parent (Id, N);
  
*************** package body Sem_Util is
*** 1167,1173 ****
       (Exp       : Node_Id;
        Check_Typ : Entity_Id)
     is
!       Exp_Typ : constant Entity_Id  := Etype (Exp);
  
     begin
        if Raises_Constraint_Error (Exp) then
--- 447,453 ----
       (Exp       : Node_Id;
        Check_Typ : Entity_Id)
     is
!       Exp_Typ : constant Entity_Id := Etype (Exp);
  
     begin
        if Raises_Constraint_Error (Exp) then
*************** package body Sem_Util is
*** 1250,1261 ****
          and then Is_Scalar_Type (Check_Typ)
          and then Exp_Typ /= Check_Typ
        then
           if Is_Entity_Name (Exp)
             and then Ekind (Entity (Exp)) = E_Constant
           then
-             --  If expression is a constant, it is worthwhile checking whether
-             --  it is a bound of the type.
- 
              if (Is_Entity_Name (Type_Low_Bound (Check_Typ))
                   and then Entity (Exp) = Entity (Type_Low_Bound (Check_Typ)))
                or else
--- 530,541 ----
          and then Is_Scalar_Type (Check_Typ)
          and then Exp_Typ /= Check_Typ
        then
+          --  If expression is a constant, it is worthwhile checking whether it
+          --  is a bound of the type.
+ 
           if Is_Entity_Name (Exp)
             and then Ekind (Entity (Exp)) = E_Constant
           then
              if (Is_Entity_Name (Type_Low_Bound (Check_Typ))
                   and then Entity (Exp) = Entity (Type_Low_Bound (Check_Typ)))
                or else
*************** package body Sem_Util is
*** 1263,1282 ****
                   and then Entity (Exp) = Entity (Type_High_Bound (Check_Typ)))
              then
                 return;
- 
-             else
-                Rewrite (Exp, Convert_To (Check_Typ, Relocate_Node (Exp)));
-                Analyze_And_Resolve (Exp, Check_Typ);
-                Check_Unset_Reference (Exp);
              end if;
  
!          --  Could use a comment on this case ???
  
!          else
!             Rewrite (Exp, Convert_To (Check_Typ, Relocate_Node (Exp)));
!             Analyze_And_Resolve (Exp, Check_Typ);
!             Check_Unset_Reference (Exp);
!          end if;
  
        end if;
     end Aggregate_Constraint_Checks;
--- 543,557 ----
                   and then Entity (Exp) = Entity (Type_High_Bound (Check_Typ)))
              then
                 return;
              end if;
+          end if;
  
!          --  Change Exp into Check_Typ'(Exp) to ensure that range checks are
!          --  performed at run time.
  
!          Rewrite (Exp, Convert_To (Check_Typ, Relocate_Node (Exp)));
!          Analyze_And_Resolve (Exp, Check_Typ);
!          Check_Unset_Reference (Exp);
  
        end if;
     end Aggregate_Constraint_Checks;
*************** package body Sem_Util is
*** 1331,1337 ****
              end if;
  
              return
!               not Present (Etype (Constr)) -- previous error
                  or else not Is_Discrete_Type (Etype (Constr))
                  or else Is_OK_Static_Expression (Constr);
  
--- 606,612 ----
              end if;
  
              return
!               No (Etype (Constr)) -- previous error
                  or else not Is_Discrete_Type (Etype (Constr))
                  or else Is_OK_Static_Expression (Constr);
  
*************** package body Sem_Util is
*** 1719,1724 ****
--- 994,1024 ----
              Error_Msg_FE (Msg, N, Typ);
           end if;
  
+          --  Suggest to use First_Valid/Last_Valid instead of First/Last/Range
+          --  if the predicate is static.
+ 
+          if not Has_Dynamic_Predicate_Aspect (Typ)
+            and then Has_Static_Predicate (Typ)
+            and then Nkind (N) = N_Attribute_Reference
+          then
+             declare
+                Aname   : constant Name_Id := Attribute_Name (N);
+                Attr_Id : constant Attribute_Id := Get_Attribute_Id (Aname);
+             begin
+                case Attr_Id is
+                   when Attribute_First =>
+                      Error_Msg_F ("\use attribute First_Valid instead", N);
+                   when Attribute_Last =>
+                      Error_Msg_F ("\use attribute Last_Valid instead", N);
+                   when Attribute_Range =>
+                      Error_Msg_F ("\use attributes First_Valid and "
+                                   & "Last_Valid instead", N);
+                   when others =>
+                      null;
+                end case;
+             end;
+          end if;
+ 
           --  Emit an optional suggestion on how to remedy the error if the
           --  context warrants it.
  
*************** package body Sem_Util is
*** 2509,2514 ****
--- 1809,1888 ----
        end;
     end Build_Default_Subtype;
  
+    ------------------------------
+    -- Build_Default_Subtype_OK --
+    ------------------------------
+ 
+    function Build_Default_Subtype_OK (T : Entity_Id) return Boolean is
+ 
+       function Default_Discriminant_Values_Known_At_Compile_Time
+          (T : Entity_Id) return Boolean;
+          --  For an unconstrained type T, return False if the given type has a
+          --  discriminant with default value not known at compile time. Return
+          --  True otherwise.
+ 
+       ---------------------------------------------------------
+       -- Default_Discriminant_Values_Known_At_Compile_Time --
+       ---------------------------------------------------------
+ 
+       function Default_Discriminant_Values_Known_At_Compile_Time
+          (T : Entity_Id) return Boolean
+       is
+          Discr : Entity_Id;
+          DDV : Node_Id;
+ 
+       begin
+ 
+          --  If the type has no discriminant, we know them all at compile time
+ 
+          if not Has_Discriminants (T) then
+             return True;
+          end if;
+ 
+          --  The type has discriminants, check that none of them has a default
+          --  value not known at compile time.
+ 
+          Discr := First_Discriminant (T);
+ 
+          while Present (Discr) loop
+             DDV := Discriminant_Default_Value (Discr);
+ 
+             if Present (DDV) and then not Compile_Time_Known_Value (DDV) then
+                return False;
+             end if;
+ 
+             Next_Discriminant (Discr);
+          end loop;
+ 
+          return True;
+       end Default_Discriminant_Values_Known_At_Compile_Time;
+ 
+    --  Start of processing for Build_Default_Subtype_OK
+ 
+    begin
+ 
+       if Is_Constrained (T) then
+ 
+          --  We won't build a new subtype if T is constrained
+ 
+          return False;
+       end if;
+ 
+       if not Default_Discriminant_Values_Known_At_Compile_Time (T) then
+ 
+          --  This is a special case of definite subtypes. To allocate a
+          --  specific size to the subtype, we need to know the value at compile
+          --  time. This might not be the case if the default value is the
+          --  result of a function. In that case, the object might be definite
+          --  and limited but the needed size might not be statically known or
+          --  too tricky to obtain. In that case, we will not build the subtype.
+ 
+          return False;
+       end if;
+ 
+       return Is_Definite_Subtype (T) and then Is_Limited_View (T);
+    end Build_Default_Subtype_OK;
+ 
     --------------------------------------------
     -- Build_Discriminal_Subtype_Of_Component --
     --------------------------------------------
*************** package body Sem_Util is
*** 3092,3098 ****
        Actual : Node_Id;
  
     begin
!       if Extensions_Allowed then
           Actual := First_Actual (Call);
           while Present (Actual) loop
              if Nkind (Actual) = N_Aggregate then
--- 2466,2472 ----
        Actual : Node_Id;
  
     begin
!       if All_Extensions_Allowed then
           Actual := First_Actual (Call);
           while Present (Actual) loop
              if Nkind (Actual) = N_Aggregate then
*************** package body Sem_Util is
*** 3389,3395 ****
                    end if;
  
                 else
!                   if Identifiers_List = No_Elist then
                       Identifiers_List := New_Elmt_List;
                    end if;
  
--- 2763,2769 ----
                    end if;
  
                 else
!                   if No (Identifiers_List) then
                       Identifiers_List := New_Elmt_List;
                    end if;
  
*************** package body Sem_Util is
*** 3413,3419 ****
              Elmt : Elmt_Id;
  
           begin
!             if List = No_Elist then
                 return False;
              end if;
  
--- 2787,2793 ----
              Elmt : Elmt_Id;
  
           begin
!             if No (List) then
                 return False;
              end if;
  
*************** package body Sem_Util is
*** 3720,3726 ****
  
                             Collect_Identifiers (Comp_Expr);
  
!                            if Writable_Actuals_List /= No_Elist then
  
                                --  As suggested by Robert, at current stage we
                                --  report occurrences of this case as warnings.
--- 3094,3100 ----
  
                             Collect_Identifiers (Comp_Expr);
  
!                            if Present (Writable_Actuals_List) then
  
                                --  As suggested by Robert, at current stage we
                                --  report occurrences of this case as warnings.
*************** package body Sem_Util is
*** 3883,3889 ****
        --  Check violation of RM 6.20/3 in aggregates
  
        if Present (Aggr_Error_Node)
!         and then Writable_Actuals_List /= No_Elist
        then
           Error_Msg_N
             ("value may be affected by call in other component because they "
--- 3257,3263 ----
        --  Check violation of RM 6.20/3 in aggregates
  
        if Present (Aggr_Error_Node)
!         and then Present (Writable_Actuals_List)
        then
           Error_Msg_N
             ("value may be affected by call in other component because they "
*************** package body Sem_Util is
*** 3894,3901 ****
  
        --  Check if some writable argument of a function is referenced
  
!       if Writable_Actuals_List /= No_Elist
!         and then Identifiers_List /= No_Elist
        then
           declare
              Elmt_1 : Elmt_Id;
--- 3268,3275 ----
  
        --  Check if some writable argument of a function is referenced
  
!       if Present (Writable_Actuals_List)
!         and then Present (Identifiers_List)
        then
           declare
              Elmt_1 : Elmt_Id;
*************** package body Sem_Util is
*** 4346,4352 ****
              pragma Assert (Present (Ifc_Ancestors (Idx)));
              Ifc := Next (Ifc);
           end loop;
!          pragma Assert (not Present (Ifc));
           if Present (Parent_Type) then
              return Parent_Type & Ifc_Ancestors;
           else
--- 3720,3726 ----
              pragma Assert (Present (Ifc_Ancestors (Idx)));
              Ifc := Next (Ifc);
           end loop;
!          pragma Assert (No (Ifc));
           if Present (Parent_Type) then
              return Parent_Type & Ifc_Ancestors;
           else
*************** package body Sem_Util is
*** 4811,4819 ****
           function Is_Function_Result (N : Node_Id) return Traverse_Result;
           --  Attempt to find attribute 'Result in a subtree denoted by N
  
-          function Is_Trivial_Boolean (N : Node_Id) return Boolean;
-          --  Determine whether source node N denotes "True" or "False"
- 
           function Mentions_Post_State (N : Node_Id) return Boolean;
           --  Determine whether a subtree denoted by N mentions any construct
           --  that denotes a post-state.
--- 4185,4190 ----
*************** package body Sem_Util is
*** 5064,5083 ****
              end if;
           end Is_Function_Result;
  
-          ------------------------
-          -- Is_Trivial_Boolean --
-          ------------------------
- 
-          function Is_Trivial_Boolean (N : Node_Id) return Boolean is
-          begin
-             return
-               Comes_From_Source (N)
-                 and then Is_Entity_Name (N)
-                 and then (Entity (N) = Standard_True
-                             or else
-                           Entity (N) = Standard_False);
-          end Is_Trivial_Boolean;
- 
           -------------------------
           -- Mentions_Post_State --
           -------------------------
--- 4435,4440 ----
*************** package body Sem_Util is
*** 5280,5289 ****
        elsif Present (Case_Prag) and then not Seen_In_Case then
           Error_Msg_N ("contract cases do not mention result?.t?", Case_Prag);
  
!       --  The function has postconditions only and they do not mention
!       --  attribute 'Result.
  
!       elsif Present (Post_Prag) and then not Seen_In_Post then
           Error_Msg_N
             ("postcondition does not mention function result?.t?", Post_Prag);
        end if;
--- 4637,4650 ----
        elsif Present (Case_Prag) and then not Seen_In_Case then
           Error_Msg_N ("contract cases do not mention result?.t?", Case_Prag);
  
!       --  The function has non-trivial postconditions only and they do not
!       --  mention attribute 'Result.
  
!       elsif Present (Post_Prag)
!         and then not Seen_In_Post
!         and then not Is_Trivial_Boolean
!           (Get_Pragma_Arg (First (Pragma_Argument_Associations (Post_Prag))))
!       then
           Error_Msg_N
             ("postcondition does not mention function result?.t?", Post_Prag);
        end if;
*************** package body Sem_Util is
*** 5355,5366 ****
                 while Present (State_Elmt) loop
                    State_Id := Node (State_Elmt);
  
!                   --  Emit an error when a non-null state lacks any form of
!                   --  refinement.
  
                    if not Is_Null_State (State_Id)
!                     and then not Has_Null_Refinement (State_Id)
!                     and then not Has_Non_Null_Refinement (State_Id)
                    then
                       Error_Msg_N ("state & requires refinement", State_Id);
                       Error_Msg_N ("\package body should have Refined_State "
--- 4716,4733 ----
                 while Present (State_Elmt) loop
                    State_Id := Node (State_Elmt);
  
!                   --  Emit an error when a non-null state lacks refinement,
!                   --  but has Part_Of constituents or there is a package
!                   --  body (SPARK RM 7.1.4(4)). Constituents in private
!                   --  child packages, which are not known at this stage,
!                   --  independently require the existence of a package body.
  
                    if not Is_Null_State (State_Id)
!                     and then No (Refinement_Constituents (State_Id))
!                     and then
!                       (Present (Part_Of_Constituents (State_Id))
!                          or else
!                        Present (Body_Id))
                    then
                       Error_Msg_N ("state & requires refinement", State_Id);
                       Error_Msg_N ("\package body should have Refined_State "
*************** package body Sem_Util is
*** 5928,5935 ****
                 Append_New_Elmt (Item_Id, States);
  
              --  Recursively gather the visible states of a nested package
  
!             elsif Ekind (Item_Id) = E_Package then
                 Collect_Visible_States (Item_Id, States);
              end if;
  
--- 5295,5305 ----
                 Append_New_Elmt (Item_Id, States);
  
              --  Recursively gather the visible states of a nested package
+             --  except for nested package renamings.
  
!             elsif Ekind (Item_Id) = E_Package
!               and then No (Renamed_Entity (Item_Id))
!             then
                 Collect_Visible_States (Item_Id, States);
              end if;
  
*************** package body Sem_Util is
*** 6447,6453 ****
           elsif Nkind (Parent (B_Type)) = N_Full_Type_Declaration
             and then Present (Incomplete_View (Parent (B_Type)))
           then
!             Id := Defining_Entity (Incomplete_View (Parent (B_Type)));
  
              --  If T is a derived from a type with an incomplete view declared
              --  elsewhere, that incomplete view is irrelevant, we want the
--- 5817,5823 ----
           elsif Nkind (Parent (B_Type)) = N_Full_Type_Declaration
             and then Present (Incomplete_View (Parent (B_Type)))
           then
!             Id := Incomplete_View (Parent (B_Type));
  
              --  If T is a derived from a type with an incomplete view declared
              --  elsewhere, that incomplete view is irrelevant, we want the
*************** package body Sem_Util is
*** 6624,6631 ****
        Wmsg : Boolean;
        Eloc : Source_Ptr;
  
-    --  Start of processing for Compile_Time_Constraint_Error
- 
     begin
        --  If this is a warning, convert it into an error if we are in code
        --  subject to SPARK_Mode being set On, unless Warn is True to force a
--- 5994,5999 ----
*************** package body Sem_Util is
*** 6779,6792 ****
     ----------------------------
  
     procedure Compute_Returns_By_Ref (Func : Entity_Id) is
!       Typ  : constant Entity_Id := Etype (Func);
!       Utyp : constant Entity_Id := Underlying_Type (Typ);
  
     begin
!       if Is_Limited_View (Typ) then
           Set_Returns_By_Ref (Func);
  
!       elsif Present (Utyp) and then CW_Or_Has_Controlled_Part (Utyp) then
           Set_Returns_By_Ref (Func);
        end if;
     end Compute_Returns_By_Ref;
--- 6147,6174 ----
     ----------------------------
  
     procedure Compute_Returns_By_Ref (Func : Entity_Id) is
!       Kind : constant Entity_Kind := Ekind (Func);
!       Typ  : constant Entity_Id   := Etype (Func);
  
     begin
!       --  Nothing to do for procedures
! 
!       if Kind in E_Procedure | E_Generic_Procedure
!         or else (Kind = E_Subprogram_Type and then Typ = Standard_Void_Type)
!       then
!          null;
! 
!       --  The build-in-place protocols return a reference to the result
! 
!       elsif Is_Build_In_Place_Function (Func) then
           Set_Returns_By_Ref (Func);
  
!       --  In Ada 95, limited types are returned by reference, but not if the
!       --  convention is other than Ada.
! 
!       elsif Is_Limited_View (Typ)
!         and then not Has_Foreign_Convention (Func)
!       then
           Set_Returns_By_Ref (Func);
        end if;
     end Compute_Returns_By_Ref;
*************** package body Sem_Util is
*** 6929,6934 ****
--- 6311,6334 ----
        return Comps;
     end Copy_Component_List;
  
+    -----------------------
+    -- Copy_Ghost_Aspect --
+    -----------------------
+ 
+    procedure Copy_Ghost_Aspect (From : Node_Id; To : Node_Id) is
+       pragma Assert (not Has_Aspects (To));
+       Asp : Node_Id;
+ 
+    begin
+       if Has_Aspects (From) then
+          Asp := Find_Aspect (Defining_Entity (From), Aspect_Ghost);
+ 
+          if Present (Asp) then
+             Set_Aspect_Specifications (To, New_List (New_Copy_Tree (Asp)));
+          end if;
+       end if;
+    end Copy_Ghost_Aspect;
+ 
     -------------------------
     -- Copy_Parameter_List --
     -------------------------
*************** package body Sem_Util is
*** 6976,6982 ****
  
           if Present (Asp) then
              Set_Aspect_Specifications (To, New_List (New_Copy_Tree (Asp)));
-             Set_Has_Aspects (To, True);
           end if;
        end if;
     end Copy_SPARK_Mode_Aspect;
--- 6376,6381 ----
*************** package body Sem_Util is
*** 7015,7030 ****
  
        --  Create new entities for the formal parameters
  
!       if Present (Parameter_Specifications (Result)) then
!          Formal_Spec := First (Parameter_Specifications (Result));
!          while Present (Formal_Spec) loop
!             Def_Id := Defining_Identifier (Formal_Spec);
!             Set_Defining_Identifier (Formal_Spec,
!               Make_Defining_Identifier (Sloc (Def_Id), Chars (Def_Id)));
  
!             Next (Formal_Spec);
!          end loop;
!       end if;
  
        return Result;
     end Copy_Subprogram_Spec;
--- 6414,6427 ----
  
        --  Create new entities for the formal parameters
  
!       Formal_Spec := First (Parameter_Specifications (Result));
!       while Present (Formal_Spec) loop
!          Def_Id := Defining_Identifier (Formal_Spec);
!          Set_Defining_Identifier (Formal_Spec,
!            Make_Defining_Identifier (Sloc (Def_Id), Chars (Def_Id)));
  
!          Next (Formal_Spec);
!       end loop;
  
        return Result;
     end Copy_Subprogram_Spec;
*************** package body Sem_Util is
*** 7089,7095 ****
        Typ  : constant Entity_Id := Find_Dispatching_Type (Ancestor_Op);
        Elmt : Elmt_Id;
        Subp : Entity_Id;
!       Prim : Entity_Id;
     begin
        pragma Assert (Is_Dispatching_Operation (Ancestor_Op));
        pragma Assert (Is_Ancestor (Typ, Descendant_Type)
--- 6486,6536 ----
        Typ  : constant Entity_Id := Find_Dispatching_Type (Ancestor_Op);
        Elmt : Elmt_Id;
        Subp : Entity_Id;
! 
!       function Profile_Matches_Ancestor (S : Entity_Id) return Boolean;
!       --  Returns True if subprogram S has the proper profile for an
!       --  overriding of Ancestor_Op (that is, corresponding formals either
!       --  have the same type, or are corresponding controlling formals,
!       --  and similarly for result types).
! 
!       ------------------------------
!       -- Profile_Matches_Ancestor --
!       ------------------------------
! 
!       function Profile_Matches_Ancestor (S : Entity_Id) return Boolean is
!          F1 : Entity_Id := First_Formal (Ancestor_Op);
!          F2 : Entity_Id := First_Formal (S);
! 
!       begin
!          if Ekind (Ancestor_Op) /= Ekind (S) then
!             return False;
!          end if;
! 
!          --  ??? This should probably account for anonymous access formals,
!          --  but the parent function (Corresponding_Primitive_Op) is currently
!          --  only called for user-defined literal functions, which can't have
!          --  such formals. But if this is ever used in a more general context
!          --  it should be extended to handle such formals (and result types).
! 
!          while Present (F1) and then Present (F2) loop
!             if Etype (F1) = Etype (F2)
!               or else Is_Ancestor (Typ, Etype (F2))
!             then
!                Next_Formal (F1);
!                Next_Formal (F2);
!             else
!                return False;
!             end if;
!          end loop;
! 
!          return No (F1)
!            and then No (F2)
!            and then (Etype (Ancestor_Op) = Etype (S)
!                       or else Is_Ancestor (Typ, Etype (S)));
!       end Profile_Matches_Ancestor;
! 
!    --  Start of processing for Corresponding_Primitive_Op
! 
     begin
        pragma Assert (Is_Dispatching_Operation (Ancestor_Op));
        pragma Assert (Is_Ancestor (Typ, Descendant_Type)
*************** package body Sem_Util is
*** 7100,7111 ****
        while Present (Elmt) loop
           Subp := Node (Elmt);
  
!          --  For regular primitives we only need to traverse the chain of
!          --  ancestors when the name matches the name of Ancestor_Op, but
!          --  for predefined dispatching operations we cannot rely on the
!          --  name of the primitive to identify a candidate since their name
!          --  is internally built adding a suffix to the name of the tagged
!          --  type.
  
           if Chars (Subp) = Chars (Ancestor_Op)
             or else Is_Predefined_Dispatching_Operation (Subp)
--- 6541,6552 ----
        while Present (Elmt) loop
           Subp := Node (Elmt);
  
!          --  For regular primitives we need to check the profile against
!          --  the ancestor when the name matches the name of Ancestor_Op,
!          --  but for predefined dispatching operations we cannot rely on
!          --  the name of the primitive to identify a candidate since their
!          --  name is internally built by adding a suffix to the name of the
!          --  tagged type.
  
           if Chars (Subp) = Chars (Ancestor_Op)
             or else Is_Predefined_Dispatching_Operation (Subp)
*************** package body Sem_Util is
*** 7121,7146 ****
                    return Alias (Subp);
                 end if;
  
!             --  Traverse the chain of ancestors searching for Ancestor_Op.
!             --  Overridden primitives have attribute Overridden_Operation;
!             --  inherited primitives have attribute Alias.
! 
!             else
!                Prim := Subp;
! 
!                while Present (Overridden_Operation (Prim))
!                  or else Present (Alias (Prim))
!                loop
!                   if Present (Overridden_Operation (Prim)) then
!                      Prim := Overridden_Operation (Prim);
!                   else
!                      Prim := Alias (Prim);
!                   end if;
  
!                   if Prim = Ancestor_Op then
!                      return Subp;
!                   end if;
!                end loop;
              end if;
           end if;
  
--- 6562,6571 ----
                    return Alias (Subp);
                 end if;
  
!             --  Otherwise, return subprogram when profile matches its ancestor
  
!             elsif Profile_Matches_Ancestor (Subp) then
!                return Subp;
              end if;
           end if;
  
*************** package body Sem_Util is
*** 7266,7320 ****
        end if;
     end Current_Subprogram;
  
!    -------------------------------
!    -- CW_Or_Has_Controlled_Part --
!    -------------------------------
! 
!    function CW_Or_Has_Controlled_Part (T : Entity_Id) return Boolean is
!    begin
!       return Is_Class_Wide_Type (T) or else Needs_Finalization (T);
!    end CW_Or_Has_Controlled_Part;
! 
!    -------------------------------
!    -- Deepest_Type_Access_Level --
!    -------------------------------
  
!    function Deepest_Type_Access_Level
!      (Typ             : Entity_Id;
!       Allow_Alt_Model : Boolean := True) return Uint
!    is
     begin
!       if Ekind (Typ) = E_Anonymous_Access_Type
!         and then not Is_Local_Anonymous_Access (Typ)
!         and then Nkind (Associated_Node_For_Itype (Typ)) = N_Object_Declaration
!       then
!          --  No_Dynamic_Accessibility_Checks override for alternative
!          --  accessibility model.
! 
!          if Allow_Alt_Model
!            and then No_Dynamic_Accessibility_Checks_Enabled (Typ)
!          then
!             return Type_Access_Level (Typ, Allow_Alt_Model);
!          end if;
! 
!          --  Typ is the type of an Ada 2012 stand-alone object of an anonymous
!          --  access type.
! 
!          return
!            Scope_Depth (Enclosing_Dynamic_Scope
!                          (Defining_Identifier
!                            (Associated_Node_For_Itype (Typ))));
! 
!       --  For generic formal type, return Int'Last (infinite).
!       --  See comment preceding Is_Generic_Type call in Type_Access_Level.
! 
!       elsif Is_Generic_Type (Root_Type (Typ)) then
!          return UI_From_Int (Int'Last);
! 
!       else
!          return Type_Access_Level (Typ, Allow_Alt_Model);
!       end if;
!    end Deepest_Type_Access_Level;
  
     ---------------------
     -- Defining_Entity --
--- 6691,6704 ----
        end if;
     end Current_Subprogram;
  
!    ------------------------------
!    -- CW_Or_Needs_Finalization --
!    ------------------------------
  
!    function CW_Or_Needs_Finalization (Typ : Entity_Id) return Boolean is
     begin
!       return Is_Class_Wide_Type (Typ) or else Needs_Finalization (Typ);
!    end CW_Or_Needs_Finalization;
  
     ---------------------
     -- Defining_Entity --
*************** package body Sem_Util is
*** 8026,8046 ****
        return False;
     end Discriminated_Size;
  
-    -----------------------------------
-    -- Effective_Extra_Accessibility --
-    -----------------------------------
- 
-    function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id is
-    begin
-       if Present (Renamed_Object (Id))
-         and then Is_Entity_Name (Renamed_Object (Id))
-       then
-          return Effective_Extra_Accessibility (Entity (Renamed_Object (Id)));
-       else
-          return Extra_Accessibility (Id);
-       end if;
-    end Effective_Extra_Accessibility;
- 
     -----------------------------
     -- Effective_Reads_Enabled --
     -----------------------------
--- 7410,7415 ----
*************** package body Sem_Util is
*** 8122,8127 ****
--- 7491,7523 ----
        return Decl;
     end Enclosing_Declaration;
  
+    ----------------------------------------
+    -- Enclosing_Declaration_Or_Statement --
+    ----------------------------------------
+ 
+    function Enclosing_Declaration_Or_Statement
+      (N : Node_Id) return Node_Id
+    is
+       Par : Node_Id;
+ 
+    begin
+       Par := N;
+       while Present (Par) loop
+          if Is_Declaration (Par) or else Is_Statement (Par) then
+             return Par;
+ 
+          --  Prevent the search from going too far
+ 
+          elsif Is_Body_Or_Package_Declaration (Par) then
+             exit;
+          end if;
+ 
+          Par := Parent (Par);
+       end loop;
+ 
+       return N;
+    end Enclosing_Declaration_Or_Statement;
+ 
     ----------------------------
     -- Enclosing_Generic_Body --
     ----------------------------
*************** package body Sem_Util is
*** 8258,8267 ****
     -- Enclosing_Package --
     -----------------------
  
!    function Enclosing_Package (E : Entity_Id) return Entity_Id is
!       Dynamic_Scope : constant Entity_Id := Enclosing_Dynamic_Scope (E);
  
     begin
        if Dynamic_Scope = Standard_Standard then
           return Standard_Standard;
  
--- 7654,7685 ----
     -- Enclosing_Package --
     -----------------------
  
!    function Enclosing_Package (N : Node_Or_Entity_Id) return Entity_Id is
!       Dynamic_Scope : Entity_Id;
  
     begin
+       --  Obtain the enclosing scope when N is a Node_Id - taking care to
+       --  handle the case when the enclosing scope is already a package.
+ 
+       if Nkind (N) not in N_Entity then
+          declare
+             Encl_Scop : constant Entity_Id := Find_Enclosing_Scope (N);
+          begin
+             if No (Encl_Scop) then
+                return Empty;
+             elsif Ekind (Encl_Scop) in
+                     E_Generic_Package | E_Package | E_Package_Body
+             then
+                return Encl_Scop;
+             end if;
+ 
+             return Enclosing_Package (Encl_Scop);
+          end;
+       end if;
+ 
+       --  When N is already an Entity_Id proceed
+ 
+       Dynamic_Scope := Enclosing_Dynamic_Scope (N);
        if Dynamic_Scope = Standard_Standard then
           return Standard_Standard;
  
*************** package body Sem_Util is
*** 8305,8314 ****
     -- Enclosing_Subprogram --
     --------------------------
  
!    function Enclosing_Subprogram (E : Entity_Id) return Entity_Id is
!       Dyn_Scop : constant Entity_Id := Enclosing_Dynamic_Scope (E);
  
     begin
        if Dyn_Scop = Standard_Standard then
           return Empty;
  
--- 7723,7751 ----
     -- Enclosing_Subprogram --
     --------------------------
  
!    function Enclosing_Subprogram (N : Node_Or_Entity_Id) return Entity_Id is
!       Dyn_Scop  : Entity_Id;
!       Encl_Scop : Entity_Id;
  
     begin
+       --  Obtain the enclosing scope when N is a Node_Id - taking care to
+       --  handle the case when the enclosing scope is already a subprogram.
+ 
+       if Nkind (N) not in N_Entity then
+          Encl_Scop := Find_Enclosing_Scope (N);
+ 
+          if No (Encl_Scop) then
+             return Empty;
+          elsif Ekind (Encl_Scop) in Subprogram_Kind then
+             return Encl_Scop;
+          end if;
+ 
+          return Enclosing_Subprogram (Encl_Scop);
+       end if;
+ 
+       --  When N is already an Entity_Id proceed
+ 
+       Dyn_Scop := Enclosing_Dynamic_Scope (N);
        if Dyn_Scop = Standard_Standard then
           return Empty;
  
*************** package body Sem_Util is
*** 8751,8797 ****
  
        --  Warn if new entity hides an old one
  
!       if Warn_On_Hiding and then Present (C)
! 
!         --  Don't warn for record components since they always have a well
!         --  defined scope which does not confuse other uses. Note that in
!         --  some cases, Ekind has not been set yet.
! 
!         and then Ekind (C) /= E_Component
!         and then Ekind (C) /= E_Discriminant
!         and then Nkind (Parent (C)) /= N_Component_Declaration
!         and then Ekind (Def_Id) /= E_Component
!         and then Ekind (Def_Id) /= E_Discriminant
!         and then Nkind (Parent (Def_Id)) /= N_Component_Declaration
! 
!         --  Don't warn for one character variables. It is too common to use
!         --  such variables as locals and will just cause too many false hits.
! 
!         and then Length_Of_Name (Chars (C)) /= 1
! 
!         --  Don't warn for non-source entities
! 
!         and then Comes_From_Source (C)
!         and then Comes_From_Source (Def_Id)
! 
!         --  Don't warn within a generic instantiation
! 
!         and then not In_Instance
! 
!         --  Don't warn unless entity in question is in extended main source
! 
!         and then In_Extended_Main_Source_Unit (Def_Id)
! 
!         --  Finally, the hidden entity must be either immediately visible or
!         --  use visible (i.e. from a used package).
! 
!         and then
!           (Is_Immediately_Visible (C)
!              or else
!            Is_Potentially_Use_Visible (C))
!       then
!          Error_Msg_Sloc := Sloc (C);
!          Error_Msg_N ("declaration hides &#?h?", Def_Id);
        end if;
     end Enter_Name;
  
--- 8188,8196 ----
  
        --  Warn if new entity hides an old one
  
!       if Warn_On_Hiding and then Present (C) then
!          Warn_On_Hiding_Entity (Def_Id, Hidden => C, Visible => Def_Id,
!                                 On_Use_Clause => False);
        end if;
     end Enter_Name;
  
*************** package body Sem_Util is
*** 9235,9242 ****
                    return;
  
                 --  An actual that is the prefix in a prefixed call may have
!                --  been rewritten in the call, after the deferred reference
!                --  was collected. Check if sloc and kinds and names match.
  
                 elsif Sloc (Actual) = Sloc (N)
                   and then Nkind (Actual) = N_Identifier
--- 8634,8641 ----
                    return;
  
                 --  An actual that is the prefix in a prefixed call may have
!                --  been rewritten in the call. Check if sloc and kinds and
!                --  names match.
  
                 elsif Sloc (Actual) = Sloc (N)
                   and then Nkind (Actual) = N_Identifier
*************** package body Sem_Util is
*** 10410,10416 ****
           Discrim_Value_Status := Static_Expr;
        else
           if Ada_Version >= Ada_2022 then
!             if Original_Node (Discrim_Value) /= Discrim_Value
                 and then Nkind (Discrim_Value) = N_Type_Conversion
                 and then Etype (Original_Node (Discrim_Value))
                        = Etype (Expression (Discrim_Value))
--- 9809,9815 ----
           Discrim_Value_Status := Static_Expr;
        else
           if Ada_Version >= Ada_2022 then
!             if Is_Rewrite_Substitution (Discrim_Value)
                 and then Nkind (Discrim_Value) = N_Type_Conversion
                 and then Etype (Original_Node (Discrim_Value))
                        = Etype (Expression (Discrim_Value))
*************** package body Sem_Util is
*** 10590,10619 ****
        end if;
     end Gather_Components;
  
-    -------------------------------
-    -- Get_Dynamic_Accessibility --
-    -------------------------------
- 
-    function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id is
-    begin
-       --  When minimum accessibility is set for E then we utilize it - except
-       --  in a few edge cases like the expansion of select statements where
-       --  generated subprogram may attempt to unnecessarily use a minimum
-       --  accessibility object declared outside of scope.
- 
-       --  To avoid these situations where expansion may get complex we verify
-       --  that the minimum accessibility object is within scope.
- 
-       if Is_Formal (E)
-         and then Present (Minimum_Accessibility (E))
-         and then In_Open_Scopes (Scope (Minimum_Accessibility (E)))
-       then
-          return Minimum_Accessibility (E);
-       end if;
- 
-       return Extra_Accessibility (E);
-    end Get_Dynamic_Accessibility;
- 
     ------------------------
     -- Get_Actual_Subtype --
     ------------------------
--- 9989,9994 ----
*************** package body Sem_Util is
*** 10699,10712 ****
                 Set_Is_Itype (Atyp);
                 Analyze (Decl, Suppress => All_Checks);
                 Set_Associated_Node_For_Itype (Atyp, N);
!                Set_Has_Delayed_Freeze (Atyp, False);
  
!                --  We need to freeze the actual subtype immediately. This is
!                --  needed, because otherwise this Itype will not get frozen
!                --  at all, and it is always safe to freeze on creation because
!                --  any associated types must be frozen at this point.
  
!                Freeze_Itype (Atyp, N);
                 return Atyp;
  
              --  Otherwise we did not build a declaration, so return original
--- 10074,10097 ----
                 Set_Is_Itype (Atyp);
                 Analyze (Decl, Suppress => All_Checks);
                 Set_Associated_Node_For_Itype (Atyp, N);
!                if Expander_Active then
!                   Set_Has_Delayed_Freeze (Atyp, False);
  
!                   --  We need to freeze the actual subtype immediately. This is
!                   --  needed because otherwise this Itype will not get frozen
!                   --  at all; it is always safe to freeze on creation because
!                   --  any associated types must be frozen at this point.
  
!                   --  On the other hand, if we are performing preanalysis on
!                   --  a conjured-up copy of a name (see calls to
!                   --  Preanalyze_Range in sem_ch5.adb) then we don't want
!                   --  to freeze Atyp, now or ever. In this case, the tree
!                   --  we eventually pass to the back end should contain no
!                   --  references to Atyp (and a freeze node would contain
!                   --  such a reference). That's why Expander_Active is tested.
! 
!                   Freeze_Itype (Atyp, N);
!                end if;
                 return Atyp;
  
              --  Otherwise we did not build a declaration, so return original
*************** package body Sem_Util is
*** 10786,10792 ****
        --  First.
  
        Assoc := First (Component_Associations (Expression (Aspect)));
!       First_Op  := Any_Id;
        while Present (Assoc) loop
           if Chars (First (Choices (Assoc))) = Name_First then
              First_Op := Expression (Assoc);
--- 10171,10177 ----
        --  First.
  
        Assoc := First (Component_Associations (Expression (Aspect)));
!       First_Op := Any_Id;
        while Present (Assoc) loop
           if Chars (First (Choices (Assoc))) = Name_First then
              First_Op := Expression (Assoc);
*************** package body Sem_Util is
*** 10898,10903 ****
--- 10283,10314 ----
        end if;
     end Get_Enclosing_Object;
  
+    -------------------------------
+    -- Get_Enclosing_Deep_Object --
+    -------------------------------
+ 
+    function Get_Enclosing_Deep_Object (N : Node_Id) return Entity_Id is
+    begin
+       if Is_Entity_Name (N) then
+          return Entity (N);
+       else
+          case Nkind (N) is
+             when N_Explicit_Dereference
+                | N_Indexed_Component
+                | N_Selected_Component
+                | N_Slice
+             =>
+                return Get_Enclosing_Deep_Object (Prefix (N));
+ 
+             when N_Type_Conversion =>
+                return Get_Enclosing_Deep_Object (Expression (N));
+ 
+             when others =>
+                return Empty;
+          end case;
+       end if;
+    end Get_Enclosing_Deep_Object;
+ 
     ---------------------------
     -- Get_Enum_Lit_From_Pos --
     ---------------------------
*************** package body Sem_Util is
*** 11355,11375 ****
        end if;
     end Get_Iterable_Type_Primitive;
  
!    ----------------------------------
!    -- Get_Library_Unit_Name_String --
!    ----------------------------------
  
!    procedure Get_Library_Unit_Name_String (Decl_Node : Node_Id) is
        Unit_Name_Id : constant Unit_Name_Type := Get_Unit_Name (Decl_Node);
! 
     begin
!       Get_Unit_Name_String (Unit_Name_Id);
  
!       --  Remove seven last character (" (spec)" or " (body)")
  
!       Name_Len := Name_Len - 7;
!       pragma Assert (Name_Buffer (Name_Len + 1) = ' ');
!    end Get_Library_Unit_Name_String;
  
     --------------------------
     -- Get_Max_Queue_Length --
--- 10766,10788 ----
        end if;
     end Get_Iterable_Type_Primitive;
  
!    ---------------------------
!    -- Get_Library_Unit_Name --
!    ---------------------------
  
!    function Get_Library_Unit_Name (Decl_Node : Node_Id) return String_Id is
        Unit_Name_Id : constant Unit_Name_Type := Get_Unit_Name (Decl_Node);
!       Buf : Bounded_String;
     begin
!       Get_Unit_Name_String (Buf, Unit_Name_Id);
  
!       --  Remove the last seven characters (" (spec)" or " (body)")
  
!       Buf.Length := Buf.Length - 7;
!       pragma Assert (Buf.Chars (Buf.Length + 1) = ' ');
! 
!       return String_From_Name_Buffer (Buf);
!    end Get_Library_Unit_Name;
  
     --------------------------
     -- Get_Max_Queue_Length --
*************** package body Sem_Util is
*** 11385,11391 ****
        --  entry families with no Max_Queue_Length aspect or pragma default to
        --  it.
  
!       if not Present (Prag) then
           return Uint_0;
        end if;
  
--- 10798,10804 ----
        --  entry families with no Max_Queue_Length aspect or pragma default to
        --  it.
  
!       if No (Prag) then
           return Uint_0;
        end if;
  
*************** package body Sem_Util is
*** 11689,11720 ****
        return Task_Body_Procedure (Underlying_Type (Root_Type (E)));
     end Get_Task_Body_Procedure;
  
!    -------------------------
!    -- Get_User_Defined_Eq --
!    -------------------------
  
!    function Get_User_Defined_Eq (E : Entity_Id) return Entity_Id is
        Prim : Elmt_Id;
-       Op   : Entity_Id;
  
     begin
        Prim := First_Elmt (Collect_Primitive_Operations (E));
        while Present (Prim) loop
!          Op := Node (Prim);
! 
!          if Chars (Op) = Name_Op_Eq
!            and then Etype (Op) = Standard_Boolean
!            and then Etype (First_Formal (Op)) = E
!            and then Etype (Next_Formal (First_Formal (Op))) = E
!          then
!             return Op;
           end if;
  
           Next_Elmt (Prim);
        end loop;
  
        return Empty;
!    end Get_User_Defined_Eq;
  
     ---------------
     -- Get_Views --
--- 11102,11126 ----
        return Task_Body_Procedure (Underlying_Type (Root_Type (E)));
     end Get_Task_Body_Procedure;
  
!    -------------------------------
!    -- Get_User_Defined_Equality --
!    -------------------------------
  
!    function Get_User_Defined_Equality (E : Entity_Id) return Entity_Id is
        Prim : Elmt_Id;
  
     begin
        Prim := First_Elmt (Collect_Primitive_Operations (E));
        while Present (Prim) loop
!          if Is_User_Defined_Equality (Node (Prim)) then
!             return Node (Prim);
           end if;
  
           Next_Elmt (Prim);
        end loop;
  
        return Empty;
!    end Get_User_Defined_Equality;
  
     ---------------
     -- Get_Views --
*************** package body Sem_Util is
*** 11789,11873 ****
        end if;
     end Get_Views;
  
-    -----------------------
-    -- Has_Access_Values --
-    -----------------------
- 
-    function Has_Access_Values (T : Entity_Id) return Boolean
-    is
-       Typ : constant Entity_Id := Underlying_Type (T);
- 
-    begin
-       --  Case of a private type which is not completed yet. This can only
-       --  happen in the case of a generic formal type appearing directly, or
-       --  as a component of the type to which this function is being applied
-       --  at the top level. Return False in this case, since we certainly do
-       --  not know that the type contains access types.
- 
-       if No (Typ) then
-          return False;
- 
-       elsif Is_Access_Type (Typ) then
-          return True;
- 
-       elsif Is_Array_Type (Typ) then
-          return Has_Access_Values (Component_Type (Typ));
- 
-       elsif Is_Record_Type (Typ) then
-          declare
-             Comp : Entity_Id;
- 
-          begin
-             --  Loop to check components
- 
-             Comp := First_Component_Or_Discriminant (Typ);
-             while Present (Comp) loop
- 
-                --  Check for access component, tag field does not count, even
-                --  though it is implemented internally using an access type.
- 
-                if Has_Access_Values (Etype (Comp))
-                  and then Chars (Comp) /= Name_uTag
-                then
-                   return True;
-                end if;
- 
-                Next_Component_Or_Discriminant (Comp);
-             end loop;
-          end;
- 
-          return False;
- 
-       else
-          return False;
-       end if;
-    end Has_Access_Values;
- 
-    ---------------------------------------
-    -- Has_Anonymous_Access_Discriminant --
-    ---------------------------------------
- 
-    function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean
-    is
-       Disc : Node_Id;
- 
-    begin
-       if not Has_Discriminants (Typ) then
-          return False;
-       end if;
- 
-       Disc := First_Discriminant (Typ);
-       while Present (Disc) loop
-          if Ekind (Etype (Disc)) = E_Anonymous_Access_Type then
-             return True;
-          end if;
- 
-          Next_Discriminant (Disc);
-       end loop;
- 
-       return False;
-    end Has_Anonymous_Access_Discriminant;
- 
     ------------------------------
     -- Has_Compatible_Alignment --
     ------------------------------
--- 11195,11200 ----
*************** package body Sem_Util is
*** 12551,12594 ****
        function Type_Or_Variable_Has_Enabled_Property
          (Item_Id : Entity_Id) return Boolean
        is
-          function Is_Enabled (Prag : Node_Id) return Boolean;
-          --  Determine whether property pragma Prag (if present) denotes an
-          --  enabled property.
- 
-          ----------------
-          -- Is_Enabled --
-          ----------------
- 
-          function Is_Enabled (Prag : Node_Id) return Boolean is
-             Arg1 : Node_Id;
- 
-          begin
-             if Present (Prag) then
-                Arg1 := First (Pragma_Argument_Associations (Prag));
- 
-                --  The pragma has an optional Boolean expression, the related
-                --  property is enabled only when the expression evaluates to
-                --  True.
- 
-                if Present (Arg1) then
-                   return Is_True (Expr_Value (Get_Pragma_Arg (Arg1)));
- 
-                --  Otherwise the lack of expression enables the property by
-                --  default.
- 
-                else
-                   return True;
-                end if;
- 
-             --  The property was never set in the first place
- 
-             else
-                return False;
-             end if;
-          end Is_Enabled;
- 
-          --  Local variables
- 
           AR : constant Node_Id :=
                  Get_Pragma (Item_Id, Pragma_Async_Readers);
           AW : constant Node_Id :=
--- 11878,11883 ----
*************** package body Sem_Util is
*** 12602,12609 ****
             Is_Derived_Type (Item_Id)
             and then Is_Effectively_Volatile (Etype (Base_Type (Item_Id)));
  
-       --  Start of processing for Type_Or_Variable_Has_Enabled_Property
- 
        begin
           --  A non-effectively volatile object can never possess external
           --  properties.
--- 11891,11896 ----
*************** package body Sem_Util is
*** 12618,12633 ****
           --  missing altogether.
  
           elsif Property = Name_Async_Readers    and then Present (AR) then
!             return Is_Enabled (AR);
  
           elsif Property = Name_Async_Writers    and then Present (AW) then
!             return Is_Enabled (AW);
  
           elsif Property = Name_Effective_Reads  and then Present (ER) then
!             return Is_Enabled (ER);
  
           elsif Property = Name_Effective_Writes and then Present (EW) then
!             return Is_Enabled (EW);
  
           --  If other properties are set explicitly, then this one is set
           --  implicitly to False, except in the case of a derived type
--- 11905,11920 ----
           --  missing altogether.
  
           elsif Property = Name_Async_Readers    and then Present (AR) then
!             return Is_Enabled_Pragma (AR);
  
           elsif Property = Name_Async_Writers    and then Present (AW) then
!             return Is_Enabled_Pragma (AW);
  
           elsif Property = Name_Effective_Reads  and then Present (ER) then
!             return Is_Enabled_Pragma (ER);
  
           elsif Property = Name_Effective_Writes and then Present (EW) then
!             return Is_Enabled_Pragma (EW);
  
           --  If other properties are set explicitly, then this one is set
           --  implicitly to False, except in the case of a derived type
*************** package body Sem_Util is
*** 12642,12648 ****
           then
              return False;
  
!          --  For a private type, may need to look at the full view
  
           elsif Is_Private_Type (Item_Id) and then Present (Full_View (Item_Id))
           then
--- 11929,11936 ----
           then
              return False;
  
!          --  For a private type (including subtype of a private types), look at
!          --  the full view.
  
           elsif Is_Private_Type (Item_Id) and then Present (Full_View (Item_Id))
           then
*************** package body Sem_Util is
*** 12655,12664 ****
              return Type_Or_Variable_Has_Enabled_Property
                (First_Subtype (Etype (Base_Type (Item_Id))));
  
!          --  If not specified explicitly for an object and the type
           --  is effectively volatile, then take result from the type.
  
!          elsif not Is_Type (Item_Id)
             and then Is_Effectively_Volatile (Etype (Item_Id))
           then
              return Has_Enabled_Property (Etype (Item_Id), Property);
--- 11943,11959 ----
              return Type_Or_Variable_Has_Enabled_Property
                (First_Subtype (Etype (Base_Type (Item_Id))));
  
!          --  For a subtype, the property will be inherited from its base type.
! 
!          elsif Is_Type (Item_Id)
!            and then not Is_Base_Type (Item_Id)
!          then
!             return Type_Or_Variable_Has_Enabled_Property (Etype (Item_Id));
! 
!          --  If not specified explicitly for an object and its type
           --  is effectively volatile, then take result from the type.
  
!          elsif Is_Object (Item_Id)
             and then Is_Effectively_Volatile (Etype (Item_Id))
           then
              return Has_Enabled_Property (Etype (Item_Id), Property);
*************** package body Sem_Util is
*** 12943,12949 ****
           Typ := Corresponding_Record_Type (Typ);
        end if;
  
!       if not Present (Typ)
          or else not Is_Record_Type (Typ)
          or else not Is_Tagged_Type (Typ)
        then
--- 12238,12244 ----
           Typ := Corresponding_Record_Type (Typ);
        end if;
  
!       if No (Typ)
          or else not Is_Record_Type (Typ)
          or else not Is_Tagged_Type (Typ)
        then
*************** package body Sem_Util is
*** 13131,13137 ****
  
     begin
        return Nkind (Exp) = N_Aggregate
!         and then Present (Find_Aspect (Etype (Exp), Aspect_Aggregate))
          and then not Is_Record_Aggregate;
     end Is_Container_Aggregate;
  
--- 12426,12432 ----
  
     begin
        return Nkind (Exp) = N_Aggregate
!         and then Has_Aspect (Etype (Exp), Aspect_Aggregate)
          and then not Is_Record_Aggregate;
     end Is_Container_Aggregate;
  
*************** package body Sem_Util is
*** 13526,13540 ****
           Exp : Node_Id;
  
        begin
!          --  Loop through entities of record or protected type
  
!          Ent := E;
           while Present (Ent) loop
  
-             --  We are interested only in components and discriminants
- 
-             Exp := Empty;
- 
              case Ekind (Ent) is
                 when E_Component =>
  
--- 12821,12832 ----
           Exp : Node_Id;
  
        begin
!          --  Loop through components and discriminants of record or protected
!          --  type.
  
!          Ent := First_Component_Or_Discriminant (E);
           while Present (Ent) loop
  
              case Ekind (Ent) is
                 when E_Component =>
  
*************** package body Sem_Util is
*** 13545,13550 ****
--- 12837,12844 ----
  
                    if Present (Declaration_Node (Ent)) then
                       Exp := Expression (Declaration_Node (Ent));
+                   else
+                      Exp := Empty;
                    end if;
  
                 when E_Discriminant =>
*************** package body Sem_Util is
*** 13557,13563 ****
                    Exp := Discriminant_Default_Value (Ent);
  
                 when others =>
!                   goto Check_Next_Entity;
              end case;
  
              --  A component has PI if it has no default expression and the
--- 12851,12857 ----
                    Exp := Discriminant_Default_Value (Ent);
  
                 when others =>
!                   raise Program_Error;
              end case;
  
              --  A component has PI if it has no default expression and the
*************** package body Sem_Util is
*** 13578,13585 ****
                 exit;
              end if;
  
!          <<Check_Next_Entity>>
!             Next_Entity (Ent);
           end loop;
        end Check_Components;
  
--- 12872,12878 ----
                 exit;
              end if;
  
!             Next_Component_Or_Discriminant (Ent);
           end loop;
        end Check_Components;
  
*************** package body Sem_Util is
*** 13689,13695 ****
           --  If OK, check extension components (if any)
  
           if Has_PE and then Is_Record_Type (E) then
!             Check_Components (First_Entity (E));
           end if;
  
           --  Check specifically for 10.2.1(11.4/2) exception: a controlled type
--- 12982,12988 ----
           --  If OK, check extension components (if any)
  
           if Has_PE and then Is_Record_Type (E) then
!             Check_Components (E);
           end if;
  
           --  Check specifically for 10.2.1(11.4/2) exception: a controlled type
*************** package body Sem_Util is
*** 13729,13735 ****
  
        elsif Is_Record_Type (E) then
           Has_PE := True;
!          Check_Components (First_Entity (E));
  
        --  Protected types must not have entries, and components must meet
        --  same set of rules as for record components.
--- 13022,13028 ----
  
        elsif Is_Record_Type (E) then
           Has_PE := True;
!          Check_Components (E);
  
        --  Protected types must not have entries, and components must meet
        --  same set of rules as for record components.
*************** package body Sem_Util is
*** 13739,13746 ****
              Has_PE := False;
           else
              Has_PE := True;
!             Check_Components (First_Entity (E));
!             Check_Components (First_Private_Entity (E));
           end if;
  
        --  Type System.Address always has preelaborable initialization
--- 13032,13038 ----
              Has_PE := False;
           else
              Has_PE := True;
!             Check_Components (E);
           end if;
  
        --  Type System.Address always has preelaborable initialization
*************** package body Sem_Util is
*** 13999,14007 ****
        if Subp_Nam = Name_uFinalizer then
           return False;
  
!       --  _Postconditions procedure
  
!       elsif Subp_Nam = Name_uPostconditions then
           return False;
  
        --  Predicate function
--- 13291,13300 ----
        if Subp_Nam = Name_uFinalizer then
           return False;
  
!       --  _Wrapped_Statements procedure which gets generated as part of the
!       --  expansion of postconditions.
  
!       elsif Subp_Nam = Name_uWrapped_Statements then
           return False;
  
        --  Predicate function
*************** package body Sem_Util is
*** 14148,14156 ****
  
     begin
        pragma Assert (Relaxed_RM_Semantics);
!       pragma Assert
!         (Nkind (N) in
!            N_Null | N_Op_Eq | N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt | N_Op_Ne);
  
        if Nkind (N) = N_Null then
           Rewrite (N, New_Occurrence_Of (RTE (RE_Null_Address), Sloc (N)));
--- 13441,13447 ----
  
     begin
        pragma Assert (Relaxed_RM_Semantics);
!       pragma Assert (Nkind (N) in N_Null | N_Op_Compare);
  
        if Nkind (N) = N_Null then
           Rewrite (N, New_Occurrence_Of (RTE (RE_Null_Address), Sloc (N)));
*************** package body Sem_Util is
*** 14201,14232 ****
        end if;
     end Has_Tagged_Component;
  
-    --------------------------------------------
-    -- Has_Unconstrained_Access_Discriminants --
-    --------------------------------------------
- 
-    function Has_Unconstrained_Access_Discriminants
-      (Subtyp : Entity_Id) return Boolean
-    is
-       Discr : Entity_Id;
- 
-    begin
-       if Has_Discriminants (Subtyp)
-         and then not Is_Constrained (Subtyp)
-       then
-          Discr := First_Discriminant (Subtyp);
-          while Present (Discr) loop
-             if Ekind (Etype (Discr)) = E_Anonymous_Access_Type then
-                return True;
-             end if;
- 
-             Next_Discriminant (Discr);
-          end loop;
-       end if;
- 
-       return False;
-    end Has_Unconstrained_Access_Discriminants;
- 
     -----------------------------
     -- Has_Undefined_Reference --
     -----------------------------
--- 13492,13497 ----
*************** package body Sem_Util is
*** 14268,14273 ****
--- 13533,13568 ----
        return Has_Undef_Ref;
     end Has_Undefined_Reference;
  
+    ----------------------------------------
+    -- Has_Effectively_Volatile_Component --
+    ----------------------------------------
+ 
+    function Has_Effectively_Volatile_Component
+      (Typ : Entity_Id) return Boolean
+    is
+       Comp : Entity_Id;
+ 
+    begin
+       if Has_Volatile_Components (Typ) then
+          return True;
+ 
+       elsif Is_Array_Type (Typ) then
+          return Is_Effectively_Volatile (Component_Type (Typ));
+ 
+       elsif Is_Record_Type (Typ) then
+          Comp := First_Component (Typ);
+          while Present (Comp) loop
+             if Is_Effectively_Volatile (Etype (Comp)) then
+                return True;
+             end if;
+ 
+             Next_Component (Comp);
+          end loop;
+       end if;
+ 
+       return False;
+    end Has_Effectively_Volatile_Component;
+ 
     ----------------------------
     -- Has_Volatile_Component --
     ----------------------------
*************** package body Sem_Util is
*** 14647,14654 ****
--- 13942,13956 ----
        loop
           if No (P) then
              return False;
+ 
+          --  Prevent the search from going too far
+ 
+          elsif Is_Body_Or_Package_Declaration (P) then
+             return False;
+ 
           elsif Nkind (P) = N_Pragma and then Pragma_Name (P) = Nam then
              return True;
+ 
           else
              P := Parent (P);
           end if;
*************** package body Sem_Util is
*** 14724,14729 ****
--- 14026,14037 ----
        loop
           if No (P) then
              return False;
+ 
+          --  Prevent the search from going too far
+ 
+          elsif Is_Body_Or_Package_Declaration (P) then
+             return False;
+ 
           elsif Nkind (P) = N_Quantified_Expression then
              return True;
           else
*************** package body Sem_Util is
*** 14986,15026 ****
        return False;
     end In_Return_Value;
  
!    ---------------------
!    -- In_Visible_Part --
!    ---------------------
! 
!    function In_Visible_Part (Scope_Id : Entity_Id) return Boolean is
!    begin
!       return Is_Package_Or_Generic_Package (Scope_Id)
!         and then In_Open_Scopes (Scope_Id)
!         and then not In_Package_Body (Scope_Id)
!         and then not In_Private_Part (Scope_Id);
!    end In_Visible_Part;
! 
!    -----------------------------
!    -- In_While_Loop_Condition --
!    -----------------------------
  
!    function In_While_Loop_Condition (N : Node_Id) return Boolean is
        Prev : Node_Id := N;
        P    : Node_Id := Parent (N);
        --  P and Prev will be used for traversing the AST, while maintaining an
        --  invariant that P = Parent (Prev).
     begin
!       loop
!          if No (P) then
!             return False;
!          elsif Nkind (P) = N_Iteration_Scheme
             and then Prev = Condition (P)
           then
              return True;
!          else
!             Prev := P;
!             P := Parent (P);
           end if;
        end loop;
!    end In_While_Loop_Condition;
  
     --------------------------------
     -- Incomplete_Or_Partial_View --
--- 14294,14351 ----
        return False;
     end In_Return_Value;
  
!    -----------------------------------------
!    -- In_Statement_Condition_With_Actions --
!    -----------------------------------------
  
!    function In_Statement_Condition_With_Actions (N : Node_Id) return Boolean is
        Prev : Node_Id := N;
        P    : Node_Id := Parent (N);
        --  P and Prev will be used for traversing the AST, while maintaining an
        --  invariant that P = Parent (Prev).
     begin
!       while Present (P) loop
!          if Nkind (P) = N_Iteration_Scheme
             and then Prev = Condition (P)
           then
              return True;
! 
!          elsif Nkind (P) = N_Elsif_Part
!            and then Prev = Condition (P)
!          then
!             return True;
! 
!          --  No point in going beyond statements
! 
!          elsif Nkind (N) in N_Statement_Other_Than_Procedure_Call
!                           | N_Procedure_Call_Statement
!          then
!             exit;
! 
!          --  Prevent the search from going too far
! 
!          elsif Is_Body_Or_Package_Declaration (P) then
!             exit;
           end if;
+ 
+          Prev := P;
+          P := Parent (P);
        end loop;
! 
!       return False;
!    end In_Statement_Condition_With_Actions;
! 
!    ---------------------
!    -- In_Visible_Part --
!    ---------------------
! 
!    function In_Visible_Part (Scope_Id : Entity_Id) return Boolean is
!    begin
!       return Is_Package_Or_Generic_Package (Scope_Id)
!         and then In_Open_Scopes (Scope_Id)
!         and then not In_Package_Body (Scope_Id)
!         and then not In_Private_Part (Scope_Id);
!    end In_Visible_Part;
  
     --------------------------------
     -- Incomplete_Or_Partial_View --
*************** package body Sem_Util is
*** 15778,15805 ****
        end if;
     end Invalid_Scalar_Value;
  
-    --------------------------------
-    -- Is_Anonymous_Access_Actual --
-    --------------------------------
- 
-    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean is
-       Par : Node_Id;
-    begin
-       if Ekind (Etype (N)) /= E_Anonymous_Access_Type then
-          return False;
-       end if;
- 
-       Par := Parent (N);
-       while Present (Par)
-         and then Nkind (Par) in N_Case_Expression
-                               | N_If_Expression
-                               | N_Parameter_Association
-       loop
-          Par := Parent (Par);
-       end loop;
-       return Nkind (Par) in N_Subprogram_Call;
-    end Is_Anonymous_Access_Actual;
- 
     ------------------------
     -- Is_Access_Variable --
     ------------------------
--- 15103,15108 ----
*************** package body Sem_Util is
*** 15955,15962 ****
        then
           return Is_Aliased_View (Expression (Obj));
  
        elsif Nkind (Obj) = N_Explicit_Dereference then
!          return Nkind (Original_Node (Obj)) /= N_Function_Call;
  
        else
           return False;
--- 15258,15272 ----
        then
           return Is_Aliased_View (Expression (Obj));
  
+       --  The dereference of an access-to-object value denotes an aliased view,
+       --  but this routine uses the rules of the language so we need to exclude
+       --  rewritten constructs that introduce artificial dereferences.
+ 
        elsif Nkind (Obj) = N_Explicit_Dereference then
!          return not Is_Captured_Function_Call (Obj)
!            and then not
!              (Nkind (Parent (Obj)) = N_Object_Renaming_Declaration
!                and then Is_Return_Object (Defining_Entity (Parent (Obj))));
  
        else
           return False;
*************** package body Sem_Util is
*** 16830,16835 ****
--- 16140,16147 ----
  
              elsif Nkind (P) = N_Aspect_Specification
                and then Nkind (Parent (P)) = N_Subtype_Declaration
+               and then Underlying_Type (Defining_Identifier (Parent (P))) =
+                        Underlying_Type (Typ)
              then
                 return True;
  
*************** package body Sem_Util is
*** 16837,16843 ****
                and then Get_Pragma_Id (P) in Pragma_Predicate
                                            | Pragma_Predicate_Failure
              then
!                return True;
              end if;
  
              P := Parent (P);
--- 16149,16162 ----
                and then Get_Pragma_Id (P) in Pragma_Predicate
                                            | Pragma_Predicate_Failure
              then
!                declare
!                   Arg : constant Entity_Id :=
!                     Entity (Expression (Get_Argument (P)));
!                begin
!                   if Underlying_Type (Arg) = Underlying_Type (Typ) then
!                      return True;
!                   end if;
!                end;
              end if;
  
              P := Parent (P);
*************** package body Sem_Util is
*** 16871,16877 ****
             and then Ekind (Scope (Entity (N))) in E_Function | E_Procedure
             and then
               (Is_Predicate_Function (Scope (Entity (N)))
-                or else Is_Predicate_Function_M (Scope (Entity (N)))
                 or else Is_Invariant_Procedure (Scope (Entity (N)))
                 or else Is_Partial_Invariant_Procedure (Scope (Entity (N)))
                 or else Is_DIC_Procedure (Scope (Entity (N))));
--- 16190,16195 ----
*************** package body Sem_Util is
*** 17385,17393 ****
        if Is_Type (Id) then
  
           --  An arbitrary type is effectively volatile when it is subject to
!          --  pragma Atomic or Volatile.
  
!          if Is_Volatile (Id) then
              return True;
  
           --  An array type is effectively volatile when it is subject to pragma
--- 16703,16713 ----
        if Is_Type (Id) then
  
           --  An arbitrary type is effectively volatile when it is subject to
!          --  pragma Atomic or Volatile, unless No_Caching is enabled.
  
!          if Is_Volatile (Id)
!            and then not No_Caching_Enabled (Id)
!          then
              return True;
  
           --  An array type is effectively volatile when it is subject to pragma
*************** package body Sem_Util is
*** 17567,17572 ****
--- 16887,16907 ----
        end if;
     end Is_Effectively_Volatile_Object_Shared;
  
+    ----------------------------------------
+    -- Is_Entity_Of_Quantified_Expression --
+    ----------------------------------------
+ 
+    function Is_Entity_Of_Quantified_Expression (Id : Entity_Id) return Boolean
+    is
+       Par : constant Node_Id := Parent (Id);
+ 
+    begin
+       return (Nkind (Par) = N_Loop_Parameter_Specification
+                or else Nkind (Par) = N_Iterator_Specification)
+         and then Defining_Identifier (Par) = Id
+         and then Nkind (Parent (Par)) = N_Quantified_Expression;
+    end Is_Entity_Of_Quantified_Expression;
+ 
     -------------------
     -- Is_Entry_Body --
     -------------------
*************** package body Sem_Util is
*** 18113,18119 ****
             Is_Object (Id)
               and then (Is_Independent (Id)
                          or else
!                       Is_Independent (Etype (Id)));
        end Is_Independent_Object_Entity;
  
        -------------------------------------
--- 17448,17454 ----
             Is_Object (Id)
               and then (Is_Independent (Id)
                          or else
!                        Is_Independent (Etype (Id)));
        end Is_Independent_Object_Entity;
  
        -------------------------------------
*************** package body Sem_Util is
*** 18800,18807 ****
                 if Has_Init_Expression (Nod) then
                    Visit (Expression (Nod));
  
!                elsif not Has_Preelaborable_Initialization
!                            (Etype (Defining_Entity (Nod)))
                 then
                    raise Non_Preelaborable;
                 end if;
--- 18135,18143 ----
                 if Has_Init_Expression (Nod) then
                    Visit (Expression (Nod));
  
!                elsif not Constant_Present (Nod)
!                  and then not Has_Preelaborable_Initialization
!                                 (Etype (Defining_Entity (Nod)))
                 then
                    raise Non_Preelaborable;
                 end if;
*************** package body Sem_Util is
*** 18967,18979 ****
           Nod : Node_Id;
  
        begin
!          if Present (List) then
!             Nod := First (List);
!             while Present (Nod) loop
!                Visit (Nod);
!                Next (Nod);
!             end loop;
!          end if;
        end Visit_List;
  
        ------------------
--- 18303,18313 ----
           Nod : Node_Id;
  
        begin
!          Nod := First (List);
!          while Present (Nod) loop
!             Visit (Nod);
!             Next (Nod);
!          end loop;
        end Visit_List;
  
        ------------------
*************** package body Sem_Util is
*** 19207,19212 ****
--- 18541,18548 ----
        Type_Decl : Node_Id;
        Type_Def  : Node_Id;
     begin
+       pragma Assert (not Is_Class_Wide_Type (T));
+ 
        if Ignore_Privacy then
           Type_Decl := Parent (Underlying_Type (Base_Type (T)));
        else
*************** package body Sem_Util is
*** 19239,19245 ****
--- 18575,18584 ----
          := Underlying_Type (Base_Type (Ancestor));
        Descendant_Type : Entity_Id := Underlying_Type (Base_Type (Descendant));
     begin
+       pragma Assert (not Is_Class_Wide_Type (Descendant));
+       pragma Assert (not Is_Class_Wide_Type (Ancestor));
        pragma Assert (Descendant_Type /= Ancestor_Type);
+ 
        while Descendant_Type /= Ancestor_Type loop
           if not Is_Null_Extension
                    (Descendant_Type, Ignore_Privacy => True)
*************** package body Sem_Util is
*** 19266,19272 ****
           return True;
        elsif Present (Variant_Part (Component_List (Record_Def))) then
           return False;
!       elsif not Present (Component_List (Record_Def)) then
           return True;
        end if;
  
--- 18605,18611 ----
           return True;
        elsif Present (Variant_Part (Component_List (Record_Def))) then
           return False;
!       elsif No (Component_List (Record_Def)) then
           return True;
        end if;
  
*************** package body Sem_Util is
*** 19533,19541 ****
           if Nkind (Original_Node (AV)) in N_Function_Call | N_Aggregate then
              return False;
  
!          elsif Comes_From_Source (AV)
!            and then Nkind (Original_Node (Expression (AV))) = N_Function_Call
!          then
              return False;
  
           elsif Nkind (Original_Node (AV)) = N_Type_Conversion then
--- 18872,18878 ----
           if Nkind (Original_Node (AV)) in N_Function_Call | N_Aggregate then
              return False;
  
!          elsif Nkind (Original_Node (Expression (AV))) = N_Function_Call then
              return False;
  
           elsif Nkind (Original_Node (AV)) = N_Type_Conversion then
*************** package body Sem_Util is
*** 20916,20952 ****
        return False;
     end Is_Reversible_Iterator;
  
-    ----------------------
-    -- Is_Selector_Name --
-    ----------------------
- 
-    function Is_Selector_Name (N : Node_Id) return Boolean is
-    begin
-       if not Is_List_Member (N) then
-          declare
-             P : constant Node_Id := Parent (N);
-          begin
-             return Nkind (P) in N_Expanded_Name
-                               | N_Generic_Association
-                               | N_Parameter_Association
-                               | N_Selected_Component
-               and then Selector_Name (P) = N;
-          end;
- 
-       else
-          declare
-             L : constant List_Id := List_Containing (N);
-             P : constant Node_Id := Parent (L);
-          begin
-             return (Nkind (P) = N_Discriminant_Association
-                      and then Selector_Names (P) = L)
-               or else
-                    (Nkind (P) = N_Component_Association
-                      and then Choices (P) = L);
-          end;
-       end if;
-    end Is_Selector_Name;
- 
     ---------------------------------
     -- Is_Single_Concurrent_Object --
     ---------------------------------
--- 20253,20258 ----
*************** package body Sem_Util is
*** 21019,21056 ****
            and then Is_Single_Concurrent_Type (Etype (Id));
     end Is_Single_Task_Object;
  
-    --------------------------------------
-    -- Is_Special_Aliased_Formal_Access --
-    --------------------------------------
- 
-    function Is_Special_Aliased_Formal_Access
-      (Exp               : Node_Id;
-       In_Return_Context : Boolean := False) return Boolean
-    is
-       Scop : constant Entity_Id := Current_Subprogram;
-    begin
-       --  Verify the expression is an access reference to 'Access within a
-       --  return statement as this is the only time an explicitly aliased
-       --  formal has different semantics.
- 
-       if Nkind (Exp) /= N_Attribute_Reference
-         or else Get_Attribute_Id (Attribute_Name (Exp)) /= Attribute_Access
-         or else not (In_Return_Value (Exp)
-                       or else In_Return_Context)
-         or else not Needs_Result_Accessibility_Level (Scop)
-       then
-          return False;
-       end if;
- 
-       --  Check if the prefix of the reference is indeed an explicitly aliased
-       --  formal parameter for the function Scop. Additionally, we must check
-       --  that Scop returns an anonymous access type, otherwise the special
-       --  rules dictating a need for a dynamic check are not in effect.
- 
-       return Is_Entity_Name (Prefix (Exp))
-                and then Is_Explicitly_Aliased (Entity (Prefix (Exp)));
-    end Is_Special_Aliased_Formal_Access;
- 
     -----------------------------
     -- Is_Specific_Tagged_Type --
     -----------------------------
--- 20325,20330 ----
*************** package body Sem_Util is
*** 21378,21396 ****
        Kind : constant Node_Kind := Nkind (N);
  
     begin
!       if Kind = N_Simple_Return_Statement
!            or else
!          Kind = N_Extended_Return_Statement
!            or else
!          Kind = N_Goto_Statement
!            or else
!          Kind = N_Raise_Statement
!            or else
!          Kind = N_Requeue_Statement
        then
           return True;
  
!       elsif (Kind = N_Exit_Statement or else Kind in N_Raise_xxx_Error)
          and then No (Condition (N))
        then
           return True;
--- 20652,20666 ----
        Kind : constant Node_Kind := Nkind (N);
  
     begin
!       if Kind in N_Simple_Return_Statement
!                | N_Extended_Return_Statement
!                | N_Goto_Statement
!                | N_Raise_Statement
!                | N_Requeue_Statement
        then
           return True;
  
!       elsif Kind in N_Exit_Statement | N_Raise_xxx_Error
          and then No (Condition (N))
        then
           return True;
*************** package body Sem_Util is
*** 21419,21424 ****
--- 20689,20705 ----
        return No (U) or else U = Uint_1;
     end Is_True;
  
+    ------------------------
+    -- Is_Trivial_Boolean --
+    ------------------------
+ 
+    function Is_Trivial_Boolean (N : Node_Id) return Boolean is
+    begin
+       return Comes_From_Source (N)
+         and then Nkind (N) in N_Identifier | N_Expanded_Name
+         and then Entity (N) in Standard_True | Standard_False;
+    end Is_Trivial_Boolean;
+ 
     --------------------------------------
     -- Is_Unchecked_Conversion_Instance --
     --------------------------------------
*************** package body Sem_Util is
*** 21467,21483 ****
     ------------------------------
  
     function Is_User_Defined_Equality (Id : Entity_Id) return Boolean is
     begin
!       return Ekind (Id) = E_Function
          and then Chars (Id) = Name_Op_Eq
!         and then Comes_From_Source (Id)
  
!         --  Internally generated equalities have a full type declaration
!         --  as their parent.
  
!         and then Nkind (Parent (Id)) = N_Function_Specification;
     end Is_User_Defined_Equality;
  
     --------------------------------------
     -- Is_Validation_Variable_Reference --
     --------------------------------------
--- 20748,20812 ----
     ------------------------------
  
     function Is_User_Defined_Equality (Id : Entity_Id) return Boolean is
+       F1, F2 : Entity_Id;
+ 
     begin
!       --  An equality operator is a function that carries the name "=", returns
!       --  Boolean, and has exactly two formal parameters of an identical type.
! 
!       if Ekind (Id) = E_Function
          and then Chars (Id) = Name_Op_Eq
!         and then Base_Type (Etype (Id)) = Standard_Boolean
!       then
!          F1 := First_Formal (Id);
  
!          if No (F1) then
!             return False;
!          end if;
  
!          F2 := Next_Formal (F1);
! 
!          return Present (F2)
!            and then No (Next_Formal (F2))
!            and then Base_Type (Etype (F1)) = Base_Type (Etype (F2));
! 
!       else
!          return False;
!       end if;
     end Is_User_Defined_Equality;
  
+    -----------------------------
+    -- Is_User_Defined_Literal --
+    -----------------------------
+ 
+    function Is_User_Defined_Literal
+      (N   : Node_Id;
+       Typ : Entity_Id) return Boolean
+    is
+       Literal_Aspect_Map :
+         constant array (N_Numeric_Or_String_Literal) of Aspect_Id :=
+           (N_Integer_Literal             => Aspect_Integer_Literal,
+            N_Interpolated_String_Literal => No_Aspect,
+            N_Real_Literal                => Aspect_Real_Literal,
+            N_String_Literal              => Aspect_String_Literal);
+ 
+    begin
+       --  Return True when N is either a literal or a named number and the
+       --  type has the appropriate user-defined literal aspect.
+ 
+       return (Nkind (N) in N_Numeric_Or_String_Literal
+         and then Has_Aspect (Typ, Literal_Aspect_Map (Nkind (N))))
+           or else
+             (Is_Entity_Name (N)
+               and then Present (Entity (N))
+               and then
+                 ((Ekind (Entity (N)) = E_Named_Integer
+                     and then Has_Aspect (Typ, Aspect_Integer_Literal))
+                    or else
+                      (Ekind (Entity (N)) = E_Named_Real
+                         and then Has_Aspect (Typ, Aspect_Real_Literal))));
+    end Is_User_Defined_Literal;
+ 
     --------------------------------------
     -- Is_Validation_Variable_Reference --
     --------------------------------------
*************** package body Sem_Util is
*** 21738,21744 ****
                or else (K = E_Component
                          and then not In_Protected_Function (E))
                or else (Present (Etype (E))
-                         and then Is_Access_Object_Type (Etype (E))
                          and then Is_Access_Variable (Etype (E))
                          and then Is_Dereferenced (N))
                or else K = E_Out_Parameter
--- 21067,21072 ----
*************** package body Sem_Util is
*** 22020,22038 ****
        pragma Assert (No (Actual));
     end Iterate_Call_Parameters;
  
-    ---------------------------
-    -- Itype_Has_Declaration --
-    ---------------------------
- 
-    function Itype_Has_Declaration (Id : Entity_Id) return Boolean is
-    begin
-       pragma Assert (Is_Itype (Id));
-       return Present (Parent (Id))
-         and then Nkind (Parent (Id)) in
-                    N_Full_Type_Declaration | N_Subtype_Declaration
-         and then Defining_Entity (Parent (Id)) = Id;
-    end Itype_Has_Declaration;
- 
     -------------------------
     -- Kill_Current_Values --
     -------------------------
--- 21348,21353 ----
*************** package body Sem_Util is
*** 22086,22110 ****
     procedure Kill_Current_Values (Last_Assignment_Only : Boolean := False) is
        S : Entity_Id;
  
-       procedure Kill_Current_Values_For_Entity_Chain (E : Entity_Id);
-       --  Clear current value for entity E and all entities chained to E
- 
-       ------------------------------------------
-       -- Kill_Current_Values_For_Entity_Chain --
-       ------------------------------------------
- 
-       procedure Kill_Current_Values_For_Entity_Chain (E : Entity_Id) is
-          Ent : Entity_Id;
-       begin
-          Ent := E;
-          while Present (Ent) loop
-             Kill_Current_Values (Ent, Last_Assignment_Only);
-             Next_Entity (Ent);
-          end loop;
-       end Kill_Current_Values_For_Entity_Chain;
- 
-    --  Start of processing for Kill_Current_Values
- 
     begin
        --  Kill all saved checks, a special case of killing saved values
  
--- 21401,21406 ----
*************** package body Sem_Util is
*** 22120,22135 ****
  
           --  Clear current values of all entities in current scope
  
!          Kill_Current_Values_For_Entity_Chain (First_Entity (S));
! 
!          --  If scope is a package, also clear current values of all private
!          --  entities in the scope.
! 
!          if Is_Package_Or_Generic_Package (S)
!            or else Is_Concurrent_Type (S)
!          then
!             Kill_Current_Values_For_Entity_Chain (First_Private_Entity (S));
!          end if;
  
           --  If this is a not a subprogram, deal with parents
  
--- 21416,21430 ----
  
           --  Clear current values of all entities in current scope
  
!          declare
!             Ent : Entity_Id;
!          begin
!             Ent := First_Entity (S);
!             while Present (Ent) loop
!                Kill_Current_Values (Ent, Last_Assignment_Only);
!                Next_Entity (Ent);
!             end loop;
!          end;
  
           --  If this is a not a subprogram, deal with parents
  
*************** package body Sem_Util is
*** 22766,22771 ****
--- 22061,22067 ----
                         | N_Function_Call
                         | N_Raise_Statement
                         | N_Raise_xxx_Error
+                        | N_Raise_Expression
           then
              Result := True;
              return Abandon;
*************** package body Sem_Util is
*** 23002,23054 ****
        end if;
     end Needs_One_Actual;
  
!    --------------------------------------
!    -- Needs_Result_Accessibility_Level --
!    --------------------------------------
  
!    function Needs_Result_Accessibility_Level
!      (Func_Id : Entity_Id) return Boolean
!    is
!       Func_Typ : constant Entity_Id := Underlying_Type (Etype (Func_Id));
  
!       function Has_Unconstrained_Access_Discriminant_Component
!         (Comp_Typ : Entity_Id) return Boolean;
!       --  Returns True if any component of the type has an unconstrained access
!       --  discriminant.
  
!       -----------------------------------------------------
!       -- Has_Unconstrained_Access_Discriminant_Component --
!       -----------------------------------------------------
  
-       function Has_Unconstrained_Access_Discriminant_Component
-         (Comp_Typ :  Entity_Id) return Boolean
-       is
-       begin
-          if not Is_Limited_Type (Comp_Typ) then
              return False;
  
!             --  Only limited types can have access discriminants with
!             --  defaults.
  
!          elsif Has_Unconstrained_Access_Discriminants (Comp_Typ) then
              return True;
  
!          elsif Is_Array_Type (Comp_Typ) then
!             return Has_Unconstrained_Access_Discriminant_Component
!                      (Underlying_Type (Component_Type (Comp_Typ)));
  
-          elsif Is_Record_Type (Comp_Typ) then
              declare
                 Comp : Entity_Id;
  
              begin
!                Comp := First_Component (Comp_Typ);
                 while Present (Comp) loop
!                   if Has_Unconstrained_Access_Discriminant_Component
!                        (Underlying_Type (Etype (Comp)))
!                   then
!                      return True;
!                   end if;
  
                    Next_Component (Comp);
                 end loop;
--- 22298,22491 ----
        end if;
     end Needs_One_Actual;
  
!    ----------------------------
!    --  Needs_Secondary_Stack --
!    ----------------------------
  
!    function Needs_Secondary_Stack (Id : Entity_Id) return Boolean is
!       pragma Assert (if Present (Id) then Ekind (Id) in E_Void | Type_Kind);
  
!       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean;
!       --  Called for untagged record and protected types. Return True if the
!       --  size of function results is known in the caller for Typ.
  
!       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean;
!       --  Returns True if Typ is a nonlimited record with defaulted
!       --  discriminants whose max size makes it unsuitable for allocating on
!       --  the primary stack.
! 
!       ------------------------------
!       -- Caller_Known_Size_Record --
!       ------------------------------
! 
!       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean is
!          pragma Assert (if Present (Typ) then Typ = Underlying_Type (Typ));
! 
!          function Depends_On_Discriminant (Typ : Entity_Id) return Boolean;
!          --  Called for untagged record and protected types. Return True if Typ
!          --  depends on discriminants, either directly when it is unconstrained
!          --  or indirectly when it is constrained by uplevel discriminants.
! 
!          -----------------------------
!          -- Depends_On_Discriminant --
!          -----------------------------
! 
!          function Depends_On_Discriminant (Typ : Entity_Id) return Boolean is
!             Cons : Elmt_Id;
! 
!          begin
!             if Has_Discriminants (Typ) then
!                if not Is_Constrained (Typ) then
!                   return True;
! 
!                else
!                   Cons := First_Elmt (Discriminant_Constraint (Typ));
!                   while Present (Cons) loop
!                      if Nkind (Node (Cons)) = N_Identifier
!                        and then Ekind (Entity (Node (Cons))) = E_Discriminant
!                      then
!                         return True;
!                      end if;
! 
!                      Next_Elmt (Cons);
!                   end loop;
!                end if;
!             end if;
  
              return False;
+          end Depends_On_Discriminant;
  
!       begin
!          --  This is a protected type without Corresponding_Record_Type set,
!          --  typically because expansion is disabled. The safe thing to do is
!          --  to return True, so Needs_Secondary_Stack returns False.
  
!          if No (Typ) then
              return True;
+          end if;
  
!          --  First see if we have a variant part and return False if it depends
!          --  on discriminants.
! 
!          if Has_Variant_Part (Typ) and then Depends_On_Discriminant (Typ) then
!             return False;
!          end if;
! 
!          --  Then loop over components and return False if their subtype has a
!          --  caller-unknown size, possibly recursively.
! 
!          --  ??? This is overly conservative, an array could be nested inside
!          --  some other record that is constrained by nondiscriminants. That
!          --  is, the recursive calls are too conservative.
! 
!          declare
!             Comp : Entity_Id;
! 
!          begin
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
!                declare
!                   Comp_Type : constant Entity_Id :=
!                                 Underlying_Type (Etype (Comp));
! 
!                begin
!                   if Is_Record_Type (Comp_Type) then
!                      if not Caller_Known_Size_Record (Comp_Type) then
!                         return False;
!                      end if;
! 
!                   elsif Is_Protected_Type (Comp_Type) then
!                      if not Caller_Known_Size_Record
!                               (Corresponding_Record_Type (Comp_Type))
!                      then
!                         return False;
!                      end if;
! 
!                   elsif Is_Array_Type (Comp_Type) then
!                      if Size_Depends_On_Discriminant (Comp_Type) then
!                         return False;
!                      end if;
!                   end if;
!                end;
! 
!                Next_Component (Comp);
!             end loop;
!          end;
! 
!          return True;
!       end Caller_Known_Size_Record;
! 
!       ------------------------------
!       -- Large_Max_Size_Mutable --
!       ------------------------------
! 
!       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean is
!          pragma Assert (Typ = Underlying_Type (Typ));
! 
!          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean;
!          --  Returns true if the discrete type T has a large range
! 
!          ----------------------------
!          -- Is_Large_Discrete_Type --
!          ----------------------------
! 
!          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean is
!             Threshold : constant Int := 16;
!             --  Arbitrary threshold above which we consider it "large". We want
!             --  a fairly large threshold, because these large types really
!             --  shouldn't have default discriminants in the first place, in
!             --  most cases.
! 
!          begin
!             return UI_To_Int (RM_Size (T)) > Threshold;
!          end Is_Large_Discrete_Type;
! 
!       --  Start of processing for Large_Max_Size_Mutable
! 
!       begin
!          if Is_Record_Type (Typ)
!            and then not Is_Limited_View (Typ)
!            and then Has_Defaulted_Discriminants (Typ)
!          then
!             --  Loop through the components, looking for an array whose upper
!             --  bound(s) depends on discriminants, where both the subtype of
!             --  the discriminant and the index subtype are too large.
  
              declare
                 Comp : Entity_Id;
  
              begin
!                Comp := First_Component (Typ);
                 while Present (Comp) loop
!                   declare
!                      Comp_Type : constant Entity_Id :=
!                                    Underlying_Type (Etype (Comp));
! 
!                      Hi   : Node_Id;
!                      Indx : Node_Id;
!                      Ityp : Entity_Id;
! 
!                   begin
!                      if Is_Array_Type (Comp_Type) then
!                         Indx := First_Index (Comp_Type);
! 
!                         while Present (Indx) loop
!                            Ityp := Etype (Indx);
!                            Hi := Type_High_Bound (Ityp);
! 
!                            if Nkind (Hi) = N_Identifier
!                              and then Ekind (Entity (Hi)) = E_Discriminant
!                              and then Is_Large_Discrete_Type (Ityp)
!                              and then Is_Large_Discrete_Type
!                                         (Etype (Entity (Hi)))
!                            then
!                               return True;
!                            end if;
! 
!                            Next_Index (Indx);
!                         end loop;
!                      end if;
!                   end;
  
                    Next_Component (Comp);
                 end loop;
*************** package body Sem_Util is
*** 23056,23144 ****
           end if;
  
           return False;
!       end Has_Unconstrained_Access_Discriminant_Component;
  
!       Disable_Coextension_Cases : constant Boolean := True;
!       --  Flag used to temporarily disable a "True" result for types with
!       --  access discriminants and related coextension cases.
  
!    --  Start of processing for Needs_Result_Accessibility_Level
  
     begin
!       --  False if completion unavailable (how does this happen???)
  
!       if not Present (Func_Typ) then
           return False;
  
!       --  False if not a function, also handle enum-lit renames case
  
!       elsif Func_Typ = Standard_Void_Type
!         or else Is_Scalar_Type (Func_Typ)
        then
           return False;
  
!       --  Handle a corner case, a cross-dialect subp renaming. For example,
!       --  an Ada 2012 renaming of an Ada 2005 subprogram. This can occur when
!       --  an Ada 2005 (or earlier) unit references predefined run-time units.
! 
!       elsif Present (Alias (Func_Id)) then
! 
!          --  Unimplemented: a cross-dialect subp renaming which does not set
!          --  the Alias attribute (e.g., a rename of a dereference of an access
!          --  to subprogram value). ???
! 
!          return Present (Extra_Accessibility_Of_Result (Alias (Func_Id)));
! 
!       --  Remaining cases require Ada 2012 mode
  
!       elsif Ada_Version < Ada_2012 then
!          return False;
  
!       --  Handle the situation where a result is an anonymous access type
!       --  RM 3.10.2 (10.3/3).
  
!       elsif Ekind (Func_Typ) = E_Anonymous_Access_Type then
           return True;
  
!       --  The following cases are related to coextensions and do not fully
!       --  cover everything mentioned in RM 3.10.2 (12) ???
! 
!       --  Temporarily disabled ???
  
!       elsif Disable_Coextension_Cases then
!          return False;
  
!       --  In the case of, say, a null tagged record result type, the need for
!       --  this extra parameter might not be obvious so this function returns
!       --  True for all tagged types for compatibility reasons.
  
!       --  A function with, say, a tagged null controlling result type might
!       --  be overridden by a primitive of an extension having an access
!       --  discriminant and the overrider and overridden must have compatible
!       --  calling conventions (including implicitly declared parameters).
  
!       --  Similarly, values of one access-to-subprogram type might designate
!       --  both a primitive subprogram of a given type and a function which is,
!       --  for example, not a primitive subprogram of any type. Again, this
!       --  requires calling convention compatibility. It might be possible to
!       --  solve these issues by introducing wrappers, but that is not the
!       --  approach that was chosen.
  
!       elsif Is_Tagged_Type (Func_Typ) then
!          return True;
  
!       elsif Has_Unconstrained_Access_Discriminants (Func_Typ) then
!          return True;
  
!       elsif Has_Unconstrained_Access_Discriminant_Component (Func_Typ) then
!          return True;
  
!       --  False for all other cases
  
        else
!          return False;
        end if;
!    end Needs_Result_Accessibility_Level;
  
     ---------------------------------
     -- Needs_Simple_Initialization --
--- 22493,22581 ----
           end if;
  
           return False;
!       end Large_Max_Size_Mutable;
  
!       --  Local declarations
  
!       Typ : constant Entity_Id := Underlying_Type (Id);
! 
!    --  Start of processing for Needs_Secondary_Stack
  
     begin
!       --  This is a private type which is not completed yet. This can only
!       --  happen in a default expression (of a formal parameter or of a
!       --  record component). The safe thing to do is to return False.
  
!       if No (Typ) then
           return False;
+       end if;
  
!       --  Do not expand transient scope for non-existent procedure return or
!       --  string literal types.
  
!       if Typ = Standard_Void_Type
!         or else Ekind (Typ) = E_String_Literal_Subtype
        then
           return False;
  
!       --  If Typ is a generic formal incomplete type, then we want to look at
!       --  the actual type.
  
!       elsif Ekind (Typ) = E_Record_Subtype
!         and then Present (Cloned_Subtype (Typ))
!       then
!          return Needs_Secondary_Stack (Cloned_Subtype (Typ));
  
!       --  Class-wide types obviously have an unknown size. For specific tagged
!       --  types, if a call returning one of them is dispatching on result, and
!       --  this type is not returned on the secondary stack, then the call goes
!       --  through a thunk that only moves the result from the primary onto the
!       --  secondary stack, because the computation of the size of the result is
!       --  possible but complex from the outside.
  
!       elsif Is_Class_Wide_Type (Typ) then
           return True;
  
!       --  If the return slot of the back end cannot be accessed, then there
!       --  is no way to call Adjust at the right time for the return object if
!       --  the type needs finalization, so the return object must be allocated
!       --  on the secondary stack.
  
!       elsif not Back_End_Return_Slot and then Needs_Finalization (Typ) then
!          return True;
  
!       --  Definite subtypes have a known size. This includes all elementary
!       --  types. Tasks have a known size even if they have discriminants, so
!       --  we return False here, with one exception:
!       --  For a type like:
!       --    type T (Last : Natural := 0) is
!       --       X : String (1 .. Last);
!       --    end record;
!       --  we return True. That's because for "P(F(...));", where F returns T,
!       --  we don't know the size of the result at the call site, so if we
!       --  allocated it on the primary stack, we would have to allocate the
!       --  maximum size, which is way too big.
  
!       elsif Is_Definite_Subtype (Typ) or else Is_Task_Type (Typ) then
!          return Large_Max_Size_Mutable (Typ);
  
!       --  Indefinite (discriminated) record type
  
!       elsif Is_Record_Type (Typ) then
!          return not Caller_Known_Size_Record (Typ);
  
!       --  Indefinite (discriminated) protected type
  
!       elsif Is_Protected_Type (Typ) then
!          return not Caller_Known_Size_Record (Corresponding_Record_Type (Typ));
  
!       --  Unconstrained array type
  
        else
!          pragma Assert (Is_Array_Type (Typ) and then not Is_Constrained (Typ));
!          return True;
        end if;
!    end Needs_Secondary_Stack;
  
     ---------------------------------
     -- Needs_Simple_Initialization --
*************** package body Sem_Util is
*** 23639,23651 ****
        pragma Inline (Update_CFS_Sloc);
        --  Update the Comes_From_Source and Sloc attributes of node or entity N
  
-       procedure Update_First_Real_Statement
-         (Old_HSS : Node_Id;
-          New_HSS : Node_Id);
-       pragma Inline (Update_First_Real_Statement);
-       --  Update semantic attribute First_Real_Statement of handled sequence of
-       --  statements New_HSS based on handled sequence of statements Old_HSS.
- 
        procedure Update_Named_Associations
          (Old_Call : Node_Id;
           New_Call : Node_Id);
--- 23076,23081 ----
*************** package body Sem_Util is
*** 24160,24173 ****
                 Set_Renamed_Object_Of_Possibly_Void
                   (Defining_Entity (Result), Name (Result));
  
-             --  Update the First_Real_Statement attribute of a replicated
-             --  handled sequence of statements.
- 
-             elsif Nkind (N) = N_Handled_Sequence_Of_Statements then
-                Update_First_Real_Statement
-                  (Old_HSS => N,
-                   New_HSS => Result);
- 
              --  Update the Chars attribute of identifiers
  
              elsif Nkind (N) = N_Identifier then
--- 23590,23595 ----
*************** package body Sem_Util is
*** 24270,24308 ****
           end if;
        end Update_CFS_Sloc;
  
-       ---------------------------------
-       -- Update_First_Real_Statement --
-       ---------------------------------
- 
-       procedure Update_First_Real_Statement
-         (Old_HSS : Node_Id;
-          New_HSS : Node_Id)
-       is
-          Old_First_Stmt : constant Node_Id := First_Real_Statement (Old_HSS);
- 
-          New_Stmt : Node_Id;
-          Old_Stmt : Node_Id;
- 
-       begin
-          --  Recreate the First_Real_Statement attribute of a handled sequence
-          --  of statements by traversing the statement lists of both sequences
-          --  in parallel.
- 
-          if Present (Old_First_Stmt) then
-             New_Stmt := First (Statements (New_HSS));
-             Old_Stmt := First (Statements (Old_HSS));
-             while Present (Old_Stmt) and then Old_Stmt /= Old_First_Stmt loop
-                Next (New_Stmt);
-                Next (Old_Stmt);
-             end loop;
- 
-             pragma Assert (Present (New_Stmt));
-             pragma Assert (Present (Old_Stmt));
- 
-             Set_First_Real_Statement (New_HSS, New_Stmt);
-          end if;
-       end Update_First_Real_Statement;
- 
        -------------------------------
        -- Update_Named_Associations --
        -------------------------------
--- 23692,23697 ----
*************** package body Sem_Util is
*** 24566,24587 ****
           --  ??? this list is flaky, and may hide dormant bugs
           --  Should functions be included???
  
!          --  Loop parameters appear within quantified expressions and contain
!          --  an entity declaration that must be replaced when the expander is
!          --  active if the expression has been preanalyzed or analyzed.
  
!          elsif Ekind (Id) not in
!                  E_Block     | E_Constant | E_Label | E_Loop_Parameter |
!                  E_Procedure | E_Variable
             and then not Is_Type (Id)
           then
              return;
  
-          elsif Ekind (Id) = E_Loop_Parameter
-            and then No (Etype (Condition (Parent (Parent (Id)))))
-          then
-             return;
- 
           --  Nothing to do when the entity was already visited
  
           elsif NCT_Tables_In_Use
--- 23955,23974 ----
           --  ??? this list is flaky, and may hide dormant bugs
           --  Should functions be included???
  
!          --  Quantified expressions contain an entity declaration that must
!          --  always be replaced when the expander is active, even if it has
!          --  not been analyzed yet like e.g. in predicates.
  
!          elsif Ekind (Id) not in E_Block
!                                | E_Constant
!                                | E_Label
!                                | E_Procedure
!                                | E_Variable
!            and then not Is_Entity_Of_Quantified_Expression (Id)
             and then not Is_Type (Id)
           then
              return;
  
           --  Nothing to do when the entity was already visited
  
           elsif NCT_Tables_In_Use
*************** package body Sem_Util is
*** 24605,24613 ****
           New_Id := New_Copy (Id);
  
           --  Create a new name for the new entity because the back end needs
!          --  distinct names for debugging purposes.
  
!          Set_Chars (New_Id, New_Internal_Name ('T'));
  
           --  Update the Comes_From_Source and Sloc attributes of the entity in
           --  case the caller has supplied new values.
--- 23992,24003 ----
           New_Id := New_Copy (Id);
  
           --  Create a new name for the new entity because the back end needs
!          --  distinct names for debugging purposes, provided that the entity
!          --  has already been analyzed.
  
!          if Ekind (Id) /= E_Void then
!             Set_Chars (New_Id, New_Internal_Name ('T'));
!          end if;
  
           --  Update the Comes_From_Source and Sloc attributes of the entity in
           --  case the caller has supplied new values.
*************** package body Sem_Util is
*** 24774,24781 ****
           end if;
  
           --  If a record subtype is simply copied, the entity list will be
!          --  shared. Thus cloned_Subtype must be set to indicate the sharing.
!          --  ??? What does this do?
  
           if Ekind (Itype) in E_Class_Wide_Subtype | E_Record_Subtype then
              Set_Cloned_Subtype (New_Itype, Itype);
--- 24164,24170 ----
           end if;
  
           --  If a record subtype is simply copied, the entity list will be
!          --  shared, so Cloned_Subtype must be set to indicate this.
  
           if Ekind (Itype) in E_Class_Wide_Subtype | E_Record_Subtype then
              Set_Cloned_Subtype (New_Itype, Itype);
*************** package body Sem_Util is
*** 25014,25021 ****
        --    * Semantic fields of entities such as Etype and Scope must be
        --      updated to reference the proper replicated entities.
  
!       --    * Semantic fields of nodes such as First_Real_Statement must be
!       --      updated to reference the proper replicated nodes.
  
        --  Finally, quantified expressions contain an implicit declaration for
        --  the bound variable. Given that quantified expressions appearing
--- 24403,24410 ----
        --    * Semantic fields of entities such as Etype and Scope must be
        --      updated to reference the proper replicated entities.
  
!       --    * Some semantic fields of nodes must be updated to reference
!       --      the proper replicated nodes.
  
        --  Finally, quantified expressions contain an implicit declaration for
        --  the bound variable. Given that quantified expressions appearing
*************** package body Sem_Util is
*** 25233,25239 ****
     ------------------------
  
     function No_Caching_Enabled (Id : Entity_Id) return Boolean is
-       pragma Assert (Ekind (Id) = E_Variable);
        Prag : constant Node_Id := Get_Pragma (Id, Pragma_No_Caching);
        Arg1 : Node_Id;
  
--- 24622,24627 ----
*************** package body Sem_Util is
*** 25698,25707 ****
                       --  of pragma Unused.
  
                       if Has_Pragma_Unused (Ent) then
!                         Error_Msg_NE ("??pragma Unused given for &!", N, Ent);
                       else
                          Error_Msg_NE
!                           ("??pragma Unmodified given for &!", N, Ent);
                       end if;
                    end if;
  
--- 25086,25096 ----
                       --  of pragma Unused.
  
                       if Has_Pragma_Unused (Ent) then
!                         Error_Msg_NE
!                           ("??aspect Unused specified for &!", N, Ent);
                       else
                          Error_Msg_NE
!                           ("??aspect Unmodified specified for &!", N, Ent);
                       end if;
                    end if;
  
*************** package body Sem_Util is
*** 25802,25808 ****
  
                    Error_Msg_Sloc := Sloc (Addr);
                    Error_Msg_NE
!                     ("??constant& may be modified via address clause#",
                       N, O_Ent);
                 end;
              end if;
--- 25191,25197 ----
  
                    Error_Msg_Sloc := Sloc (Addr);
                    Error_Msg_NE
!                     ("?o?constant& may be modified via address clause#",
                       N, O_Ent);
                 end;
              end if;
*************** package body Sem_Util is
*** 26034,26042 ****
        if Nkind (N) = N_Null then
           return Present (Typ) and then Is_Descendant_Of_Address (Typ);
  
!       elsif Nkind (N) in
!               N_Op_Eq | N_Op_Ge | N_Op_Gt | N_Op_Le | N_Op_Lt | N_Op_Ne
!       then
           declare
              L : constant Node_Id := Left_Opnd (N);
              R : constant Node_Id := Right_Opnd (N);
--- 25423,25429 ----
        if Nkind (N) = N_Null then
           return Present (Typ) and then Is_Descendant_Of_Address (Typ);
  
!       elsif Nkind (N) in N_Op_Compare then
           declare
              L : constant Node_Id := Left_Opnd (N);
              R : constant Node_Id := Right_Opnd (N);
*************** package body Sem_Util is
*** 26133,26138 ****
--- 25520,25533 ----
           Item_Nam :=
             Chars (Original_Node (Pragma_Identifier (Original_Node (Item))));
  
+          if Item_Nam = Name_Check then
+             --  Pragma "Check" preserves the original pragma name as its first
+             --  argument.
+             Item_Nam :=
+               Chars (Expression (First (Pragma_Argument_Associations
+                 (Original_Node (Item)))));
+          end if;
+ 
        else
           pragma Assert (Nkind (Item) = N_Aspect_Specification);
           Item_Nam := Chars (Identifier (Item));
*************** package body Sem_Util is
*** 26459,26464 ****
--- 25854,25922 ----
     end Predicate_Enabled;
  
     ----------------------------------
+    -- Predicate_Failure_Expression --
+    ----------------------------------
+ 
+    function Predicate_Failure_Expression
+     (Typ : Entity_Id; Inherited_OK : Boolean) return Node_Id
+    is
+       PF_Aspect : constant Node_Id :=
+         Find_Aspect (Typ, Aspect_Predicate_Failure);
+    begin
+       --  Check for Predicate_Failure aspect specification via an
+       --  aspect_specification (as opposed to via a pragma).
+ 
+       if Present (PF_Aspect) then
+          if Inherited_OK or else Entity (PF_Aspect) = Typ then
+             return Expression (PF_Aspect);
+          else
+             return Empty;
+          end if;
+       end if;
+ 
+       --  Check for Predicate_Failure aspect specification via a pragma.
+ 
+       declare
+          Rep_Item : Node_Id := First_Rep_Item (Typ);
+       begin
+          while Present (Rep_Item) loop
+             if Nkind (Rep_Item) = N_Pragma
+                and then Get_Pragma_Id (Rep_Item) = Pragma_Predicate_Failure
+             then
+                declare
+                   Arg1 : constant Node_Id :=
+                     Get_Pragma_Arg
+                       (First (Pragma_Argument_Associations (Rep_Item)));
+                   Arg2 : constant Node_Id :=
+                     Get_Pragma_Arg
+                       (Next (First (Pragma_Argument_Associations (Rep_Item))));
+                begin
+                   if Inherited_OK or else
+                      (Nkind (Arg1) in N_Has_Entity
+                       and then Entity (Arg1) = Typ)
+                   then
+                      return Arg2;
+                   end if;
+                end;
+             end if;
+ 
+             Next_Rep_Item (Rep_Item);
+          end loop;
+       end;
+ 
+       --  If we are interested in an inherited Predicate_Failure aspect
+       --  and we have an ancestor to inherit from, then recursively check
+       --  for that case.
+ 
+       if Inherited_OK and then Present (Nearest_Ancestor (Typ)) then
+          return Predicate_Failure_Expression (Nearest_Ancestor (Typ),
+                                               Inherited_OK => True);
+       end if;
+ 
+       return Empty;
+    end Predicate_Failure_Expression;
+ 
+    ----------------------------------
     -- Predicate_Tests_On_Arguments --
     ----------------------------------
  
*************** package body Sem_Util is
*** 26493,26501 ****
        --  would cause infinite recursion.
  
        elsif Ekind (Subp) = E_Function
!         and then (Is_Predicate_Function   (Subp)
!                     or else
!                   Is_Predicate_Function_M (Subp))
        then
           return False;
  
--- 25951,25957 ----
        --  would cause infinite recursion.
  
        elsif Ekind (Subp) = E_Function
!         and then Is_Predicate_Function (Subp)
        then
           return False;
  
*************** package body Sem_Util is
*** 26865,26871 ****
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes. We need to
           --  call Base_Type twice, because it is sometimes not set to an actual
!          --  base type.
  
           if Has_Inherited_DIC (From_Typ) then
              Set_Has_Inherited_DIC (Base_Type (Base_Type (Typ)));
--- 26321,26327 ----
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes. We need to
           --  call Base_Type twice, because it is sometimes not set to an actual
!          --  base type???
  
           if Has_Inherited_DIC (From_Typ) then
              Set_Has_Inherited_DIC (Base_Type (Base_Type (Typ)));
*************** package body Sem_Util is
*** 26915,26928 ****
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes. We need to
           --  call Base_Type twice, because it is sometimes not set to an actual
!          --  base type.
  
           if Has_Inheritable_Invariants (From_Typ) then
!             Set_Has_Inheritable_Invariants (Typ);
           end if;
  
           if Has_Inherited_Invariants (From_Typ) then
!             Set_Has_Inherited_Invariants (Typ);
           end if;
  
           if Has_Own_Invariants (From_Typ) then
--- 26371,26384 ----
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes. We need to
           --  call Base_Type twice, because it is sometimes not set to an actual
!          --  base type???
  
           if Has_Inheritable_Invariants (From_Typ) then
!             Set_Has_Inheritable_Invariants (Base_Type (Base_Type (Typ)));
           end if;
  
           if Has_Inherited_Invariants (From_Typ) then
!             Set_Has_Inherited_Invariants (Base_Type (Base_Type (Typ)));
           end if;
  
           if Has_Own_Invariants (From_Typ) then
*************** package body Sem_Util is
*** 26948,26956 ****
       (Typ      : Entity_Id;
        From_Typ : Entity_Id)
     is
!       Pred_Func   : Entity_Id;
!       Pred_Func_M : Entity_Id;
! 
     begin
        if Present (Typ) and then Present (From_Typ) then
           pragma Assert (Is_Type (Typ) and then Is_Type (From_Typ));
--- 26404,26410 ----
       (Typ      : Entity_Id;
        From_Typ : Entity_Id)
     is
!       Pred_Func : Entity_Id;
     begin
        if Present (Typ) and then Present (From_Typ) then
           pragma Assert (Is_Type (Typ) and then Is_Type (From_Typ));
*************** package body Sem_Util is
*** 26963,26969 ****
           end if;
  
           Pred_Func   := Predicate_Function (From_Typ);
-          Pred_Func_M := Predicate_Function_M (From_Typ);
  
           --  The setting of the attributes is intentionally conservative. This
           --  prevents accidental clobbering of enabled attributes.
--- 26417,26422 ----
*************** package body Sem_Util is
*** 26975,26984 ****
           if Present (Pred_Func) and then No (Predicate_Function (Typ)) then
              Set_Predicate_Function (Typ, Pred_Func);
           end if;
- 
-          if Present (Pred_Func_M) and then No (Predicate_Function_M (Typ)) then
-             Set_Predicate_Function_M (Typ, Pred_Func_M);
-          end if;
        end if;
     end Propagate_Predicate_Attributes;
  
--- 26428,26433 ----
*************** package body Sem_Util is
*** 27225,27500 ****
     -- Requires_Transient_Scope --
     ------------------------------
  
!    --  A transient scope is required when variable-sized temporaries are
!    --  allocated on the secondary stack, or when finalization actions must be
!    --  generated before the next instruction.
! 
!    function Requires_Transient_Scope (Id : Entity_Id) return Boolean is
!       pragma Assert (if Present (Id) then Ekind (Id) in E_Void | Type_Kind);
! 
!       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean;
!       --  This is called for untagged records and protected types, with
!       --  nondefaulted discriminants. Returns True if the size of function
!       --  results is known at the call site, False otherwise. Returns False
!       --  if there is a variant part that depends on the discriminants of
!       --  this type, or if there is an array constrained by the discriminants
!       --  of this type. ???Currently, this is overly conservative (the array
!       --  could be nested inside some other record that is constrained by
!       --  nondiscriminants). That is, the recursive calls are too conservative.
! 
!       procedure Ensure_Minimum_Decoration (Typ : Entity_Id);
!       --  If Typ is not frozen then add to Typ the minimum decoration required
!       --  by Requires_Transient_Scope to reliably provide its functionality;
!       --  otherwise no action is performed.
! 
!       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean;
!       --  Returns True if Typ is a nonlimited record with defaulted
!       --  discriminants whose max size makes it unsuitable for allocating on
!       --  the primary stack.
! 
!       ------------------------------
!       -- Caller_Known_Size_Record --
!       ------------------------------
! 
!       function Caller_Known_Size_Record (Typ : Entity_Id) return Boolean is
!          pragma Assert (Typ = Underlying_Type (Typ));
! 
!       begin
!          if Has_Variant_Part (Typ) and then not Is_Definite_Subtype (Typ) then
!             return False;
!          end if;
! 
!          declare
!             Comp : Entity_Id;
! 
!          begin
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
! 
!                --  Only look at E_Component entities. No need to look at
!                --  E_Discriminant entities, and we must ignore internal
!                --  subtypes generated for constrained components.
! 
!                declare
!                   Comp_Type : constant Entity_Id :=
!                                 Underlying_Type (Etype (Comp));
! 
!                begin
!                   if Is_Record_Type (Comp_Type)
!                         or else
!                      Is_Protected_Type (Comp_Type)
!                   then
!                      if not Caller_Known_Size_Record (Comp_Type) then
!                         return False;
!                      end if;
! 
!                   elsif Is_Array_Type (Comp_Type) then
!                      if Size_Depends_On_Discriminant (Comp_Type) then
!                         return False;
!                      end if;
!                   end if;
!                end;
! 
!                Next_Component (Comp);
!             end loop;
!          end;
! 
!          return True;
!       end Caller_Known_Size_Record;
! 
!       -------------------------------
!       -- Ensure_Minimum_Decoration --
!       -------------------------------
! 
!       procedure Ensure_Minimum_Decoration (Typ : Entity_Id) is
!          Comp : Entity_Id;
!       begin
!          --  Do not set Has_Controlled_Component on a class-wide equivalent
!          --  type. See Make_CW_Equivalent_Type.
! 
!          if not Is_Frozen (Typ)
!            and then Is_Base_Type (Typ)
!            and then (Is_Record_Type (Typ)
!                        or else Is_Concurrent_Type (Typ)
!                        or else Is_Incomplete_Or_Private_Type (Typ))
!            and then not Is_Class_Wide_Equivalent_Type (Typ)
!          then
!             Comp := First_Component (Typ);
!             while Present (Comp) loop
!                if Has_Controlled_Component (Etype (Comp))
!                  or else
!                    (Chars (Comp) /= Name_uParent
!                       and then Is_Controlled (Etype (Comp)))
!                  or else
!                    (Is_Protected_Type (Etype (Comp))
!                       and then
!                         Present (Corresponding_Record_Type (Etype (Comp)))
!                       and then
!                         Has_Controlled_Component
!                           (Corresponding_Record_Type (Etype (Comp))))
!                then
!                   Set_Has_Controlled_Component (Typ);
!                   exit;
!                end if;
! 
!                Next_Component (Comp);
!             end loop;
!          end if;
!       end Ensure_Minimum_Decoration;
! 
!       ------------------------------
!       -- Large_Max_Size_Mutable --
!       ------------------------------
! 
!       function Large_Max_Size_Mutable (Typ : Entity_Id) return Boolean is
!          pragma Assert (Typ = Underlying_Type (Typ));
! 
!          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean;
!          --  Returns true if the discrete type T has a large range
! 
!          ----------------------------
!          -- Is_Large_Discrete_Type --
!          ----------------------------
! 
!          function Is_Large_Discrete_Type (T : Entity_Id) return Boolean is
!             Threshold : constant Int := 16;
!             --  Arbitrary threshold above which we consider it "large". We want
!             --  a fairly large threshold, because these large types really
!             --  shouldn't have default discriminants in the first place, in
!             --  most cases.
! 
!          begin
!             return UI_To_Int (RM_Size (T)) > Threshold;
!          end Is_Large_Discrete_Type;
! 
!       --  Start of processing for Large_Max_Size_Mutable
! 
!       begin
!          if Is_Record_Type (Typ)
!            and then not Is_Limited_View (Typ)
!            and then Has_Defaulted_Discriminants (Typ)
!          then
!             --  Loop through the components, looking for an array whose upper
!             --  bound(s) depends on discriminants, where both the subtype of
!             --  the discriminant and the index subtype are too large.
! 
!             declare
!                Comp : Entity_Id;
! 
!             begin
!                Comp := First_Component (Typ);
!                while Present (Comp) loop
!                   declare
!                      Comp_Type : constant Entity_Id :=
!                                    Underlying_Type (Etype (Comp));
! 
!                      Hi   : Node_Id;
!                      Indx : Node_Id;
!                      Ityp : Entity_Id;
! 
!                   begin
!                      if Is_Array_Type (Comp_Type) then
!                         Indx := First_Index (Comp_Type);
! 
!                         while Present (Indx) loop
!                            Ityp := Etype (Indx);
!                            Hi := Type_High_Bound (Ityp);
! 
!                            if Nkind (Hi) = N_Identifier
!                              and then Ekind (Entity (Hi)) = E_Discriminant
!                              and then Is_Large_Discrete_Type (Ityp)
!                              and then Is_Large_Discrete_Type
!                                         (Etype (Entity (Hi)))
!                            then
!                               return True;
!                            end if;
! 
!                            Next_Index (Indx);
!                         end loop;
!                      end if;
!                   end;
! 
!                   Next_Component (Comp);
!                end loop;
!             end;
!          end if;
! 
!          return False;
!       end Large_Max_Size_Mutable;
! 
!       --  Local declarations
! 
!       Typ : constant Entity_Id := Underlying_Type (Id);
! 
!    --  Start of processing for Requires_Transient_Scope
! 
     begin
!       --  This is a private type which is not completed yet. This can only
!       --  happen in a default expression (of a formal parameter or of a
!       --  record component). Do not expand transient scope in this case.
! 
!       if No (Typ) then
!          return False;
!       end if;
! 
!       Ensure_Minimum_Decoration (Id);
! 
!       --  Do not expand transient scope for non-existent procedure return or
!       --  string literal types.
! 
!       if Typ = Standard_Void_Type
!         or else Ekind (Typ) = E_String_Literal_Subtype
!       then
!          return False;
! 
!       --  If Typ is a generic formal incomplete type, then we want to look at
!       --  the actual type.
! 
!       elsif Ekind (Typ) = E_Record_Subtype
!         and then Present (Cloned_Subtype (Typ))
!       then
!          return Requires_Transient_Scope (Cloned_Subtype (Typ));
! 
!       --  Functions returning specific tagged types may dispatch on result, so
!       --  their returned value is allocated on the secondary stack, even in the
!       --  definite case. We must treat nondispatching functions the same way,
!       --  because access-to-function types can point at both, so the calling
!       --  conventions must be compatible. Is_Tagged_Type includes controlled
!       --  types and class-wide types. Controlled type temporaries need
!       --  finalization.
! 
!       --  ???It's not clear why we need to return noncontrolled types with
!       --  controlled components on the secondary stack.
! 
!       elsif Is_Tagged_Type (Typ) or else Has_Controlled_Component (Typ) then
!          return True;
! 
!       --  Untagged definite subtypes are known size. This includes all
!       --  elementary [sub]types. Tasks are known size even if they have
!       --  discriminants. So we return False here, with one exception:
!       --  For a type like:
!       --    type T (Last : Natural := 0) is
!       --       X : String (1 .. Last);
!       --    end record;
!       --  we return True. That's because for "P(F(...));", where F returns T,
!       --  we don't know the size of the result at the call site, so if we
!       --  allocated it on the primary stack, we would have to allocate the
!       --  maximum size, which is way too big.
! 
!       elsif Is_Definite_Subtype (Typ) or else Is_Task_Type (Typ) then
!          return Large_Max_Size_Mutable (Typ);
! 
!       --  Indefinite (discriminated) untagged record or protected type
! 
!       elsif Is_Record_Type (Typ) or else Is_Protected_Type (Typ) then
!          return not Caller_Known_Size_Record (Typ);
! 
!       --  Unconstrained array
! 
!       else
!          pragma Assert (Is_Array_Type (Typ) and not Is_Definite_Subtype (Typ));
!          return True;
!       end if;
     end Requires_Transient_Scope;
  
     --------------------------
--- 26674,26682 ----
     -- Requires_Transient_Scope --
     ------------------------------
  
!    function Requires_Transient_Scope (Typ : Entity_Id) return Boolean is
     begin
!       return Needs_Secondary_Stack (Typ) or else Needs_Finalization (Typ);
     end Requires_Transient_Scope;
  
     --------------------------
*************** package body Sem_Util is
*** 27669,27675 ****
  
           P := Parent (N);
           while Present (P) loop
!             if         Nkind (P) = N_If_Statement
                or else  Nkind (P) = N_Case_Statement
                or else (Nkind (P) in N_Short_Circuit
                          and then Desc = Right_Opnd (P))
--- 26851,26860 ----
  
           P := Parent (N);
           while Present (P) loop
!             if Is_Body (P) then
!                return True;
! 
!             elsif      Nkind (P) = N_If_Statement
                or else  Nkind (P) = N_Case_Statement
                or else (Nkind (P) in N_Short_Circuit
                          and then Desc = Right_Opnd (P))
*************** package body Sem_Util is
*** 27824,27831 ****
        E : Entity_Id) return Boolean
     is
        Subp_Alias : constant Entity_Id := Alias (S);
     begin
!       return S = E or else (Present (Subp_Alias) and then Subp_Alias = E);
     end Same_Or_Aliased_Subprograms;
  
     ---------------
--- 27009,27026 ----
        E : Entity_Id) return Boolean
     is
        Subp_Alias : constant Entity_Id := Alias (S);
+       Subp       : Entity_Id := E;
     begin
!       --  During expansion of subprograms with postconditions the original
!       --  subprogram's declarations and statements get wrapped into a local
!       --  _Wrapped_Statements subprogram.
! 
!       if Chars (Subp) = Name_uWrapped_Statements then
!          Subp := Enclosing_Subprogram (Subp);
!       end if;
! 
!       return S = Subp
!         or else (Present (Subp_Alias) and then Subp_Alias = Subp);
     end Same_Or_Aliased_Subprograms;
  
     ---------------
*************** package body Sem_Util is
*** 28210,28216 ****
  
     procedure Set_Debug_Info_Defining_Id (N : Node_Id) is
     begin
!       if Comes_From_Source (Defining_Identifier (N)) then
           Set_Debug_Info_Needed (Defining_Identifier (N));
        end if;
     end Set_Debug_Info_Defining_Id;
--- 27405,27413 ----
  
     procedure Set_Debug_Info_Defining_Id (N : Node_Id) is
     begin
!       if Comes_From_Source (Defining_Identifier (N))
!         or else Debug_Generated_Code
!       then
           Set_Debug_Info_Needed (Defining_Identifier (N));
        end if;
     end Set_Debug_Info_Defining_Id;
*************** package body Sem_Util is
*** 28693,28698 ****
--- 27890,27896 ----
     -------------------------------
     -- Statically_Denotes_Entity --
     -------------------------------
+ 
     function Statically_Denotes_Entity (N : Node_Id) return Boolean is
        E : Entity_Id;
     begin
*************** package body Sem_Util is
*** 28914,28932 ****
            and then Has_Loop_Entry_Attributes (Entity (Identifier (Stmt)));
     end Subject_To_Loop_Entry_Attributes;
  
-    -----------------------------
-    -- Subprogram_Access_Level --
-    -----------------------------
- 
-    function Subprogram_Access_Level (Subp : Entity_Id) return Uint is
-    begin
-       if Present (Alias (Subp)) then
-          return Subprogram_Access_Level (Alias (Subp));
-       else
-          return Scope_Depth (Enclosing_Dynamic_Scope (Subp));
-       end if;
-    end Subprogram_Access_Level;
- 
     ---------------------
     -- Subprogram_Name --
     ---------------------
--- 28112,28117 ----
*************** package body Sem_Util is
*** 29290,29295 ****
--- 28475,28483 ----
              when N_Iterated_Component_Association =>
                 Traverse_More (Loop_Actions (Node),      Result);
  
+             when N_Iterated_Element_Association =>
+                Traverse_More (Loop_Actions (Node),      Result);
+ 
              when N_Iteration_Scheme =>
                 Traverse_More (Condition_Actions (Node), Result);
  
*************** package body Sem_Util is
*** 29383,29561 ****
        Discard := Traverse (Node);
     end Traverse_More_Proc;
  
-    -----------------------
-    -- Type_Access_Level --
-    -----------------------
- 
-    function Type_Access_Level
-      (Typ             : Entity_Id;
-       Allow_Alt_Model : Boolean   := True;
-       Assoc_Ent       : Entity_Id := Empty) return Uint
-    is
-       Btyp    : Entity_Id := Base_Type (Typ);
-       Def_Ent : Entity_Id;
- 
-    begin
-       --  Ada 2005 (AI-230): For most cases of anonymous access types, we
-       --  simply use the level where the type is declared. This is true for
-       --  stand-alone object declarations, and for anonymous access types
-       --  associated with components the level is the same as that of the
-       --  enclosing composite type. However, special treatment is needed for
-       --  the cases of access parameters, return objects of an anonymous access
-       --  type, and, in Ada 95, access discriminants of limited types.
- 
-       if Is_Access_Type (Btyp) then
-          if Ekind (Btyp) = E_Anonymous_Access_Type then
-             --  No_Dynamic_Accessibility_Checks restriction override for
-             --  alternative accessibility model.
- 
-             if Allow_Alt_Model
-               and then No_Dynamic_Accessibility_Checks_Enabled (Btyp)
-             then
-                --  In the -gnatd_b model, the level of an anonymous access
-                --  type is always that of the designated type.
- 
-                if Debug_Flag_Underscore_B then
-                   return Type_Access_Level
-                            (Designated_Type (Btyp), Allow_Alt_Model);
-                end if;
- 
-                --  When an anonymous access type's Assoc_Ent is specified,
-                --  calculate the result based on the general accessibility
-                --  level routine.
- 
-                --  We would like to use Associated_Node_For_Itype here instead,
-                --  but in some cases it is not fine grained enough ???
- 
-                if Present (Assoc_Ent) then
-                   return Static_Accessibility_Level
-                            (Assoc_Ent, Object_Decl_Level);
-                end if;
- 
-                --  Otherwise take the context of the anonymous access type into
-                --  account.
- 
-                --  Obtain the defining entity for the internally generated
-                --  anonymous access type.
- 
-                Def_Ent := Defining_Entity_Or_Empty
-                             (Associated_Node_For_Itype (Typ));
- 
-                if Present (Def_Ent) then
-                   --  When the defining entity is a subprogram then we know the
-                   --  anonymous access type Typ has been generated to either
-                   --  describe an anonymous access type formal or an anonymous
-                   --  access result type.
- 
-                   --  Since we are only interested in the formal case, avoid
-                   --  the anonymous access result type.
- 
-                   if Is_Subprogram (Def_Ent)
-                     and then not (Ekind (Def_Ent) = E_Function
-                                    and then Etype (Def_Ent) = Typ)
-                   then
-                      --  When the type comes from an anonymous access
-                      --  parameter, the level is that of the subprogram
-                      --  declaration.
- 
-                      return Scope_Depth (Def_Ent);
- 
-                   --  When the type is an access discriminant, the level is
-                   --  that of the type.
- 
-                   elsif Ekind (Def_Ent) = E_Discriminant then
-                      return Scope_Depth (Scope (Def_Ent));
-                   end if;
-                end if;
- 
-             --  If the type is a nonlocal anonymous access type (such as for
-             --  an access parameter) we treat it as being declared at the
-             --  library level to ensure that names such as X.all'access don't
-             --  fail static accessibility checks.
- 
-             elsif not Is_Local_Anonymous_Access (Typ) then
-                return Scope_Depth (Standard_Standard);
- 
-             --  If this is a return object, the accessibility level is that of
-             --  the result subtype of the enclosing function. The test here is
-             --  little complicated, because we have to account for extended
-             --  return statements that have been rewritten as blocks, in which
-             --  case we have to find and the Is_Return_Object attribute of the
-             --  itype's associated object. It would be nice to find a way to
-             --  simplify this test, but it doesn't seem worthwhile to add a new
-             --  flag just for purposes of this test. ???
- 
-             elsif Ekind (Scope (Btyp)) = E_Return_Statement
-               or else
-                 (Is_Itype (Btyp)
-                   and then Nkind (Associated_Node_For_Itype (Btyp)) =
-                                                          N_Object_Declaration
-                   and then Is_Return_Object
-                              (Defining_Identifier
-                                 (Associated_Node_For_Itype (Btyp))))
-             then
-                declare
-                   Scop : Entity_Id;
- 
-                begin
-                   Scop := Scope (Scope (Btyp));
-                   while Present (Scop) loop
-                      exit when Ekind (Scop) = E_Function;
-                      Scop := Scope (Scop);
-                   end loop;
- 
-                   --  Treat the return object's type as having the level of the
-                   --  function's result subtype (as per RM05-6.5(5.3/2)).
- 
-                   return Type_Access_Level (Etype (Scop), Allow_Alt_Model);
-                end;
-             end if;
-          end if;
- 
-          Btyp := Root_Type (Btyp);
- 
-          --  The accessibility level of anonymous access types associated with
-          --  discriminants is that of the current instance of the type, and
-          --  that's deeper than the type itself (AARM 3.10.2 (12.3.21)).
- 
-          --  AI-402: access discriminants have accessibility based on the
-          --  object rather than the type in Ada 2005, so the above paragraph
-          --  doesn't apply.
- 
-          --  ??? Needs completion with rules from AI-416
- 
-          if Ada_Version <= Ada_95
-            and then Ekind (Typ) = E_Anonymous_Access_Type
-            and then Present (Associated_Node_For_Itype (Typ))
-            and then Nkind (Associated_Node_For_Itype (Typ)) =
-                                                  N_Discriminant_Specification
-          then
-             return Scope_Depth (Enclosing_Dynamic_Scope (Btyp)) + 1;
-          end if;
-       end if;
- 
-       --  Return library level for a generic formal type. This is done because
-       --  RM(10.3.2) says that "The statically deeper relationship does not
-       --  apply to ... a descendant of a generic formal type". Rather than
-       --  checking at each point where a static accessibility check is
-       --  performed to see if we are dealing with a formal type, this rule is
-       --  implemented by having Type_Access_Level and Deepest_Type_Access_Level
-       --  return extreme values for a formal type; Deepest_Type_Access_Level
-       --  returns Int'Last. By calling the appropriate function from among the
-       --  two, we ensure that the static accessibility check will pass if we
-       --  happen to run into a formal type. More specifically, we should call
-       --  Deepest_Type_Access_Level instead of Type_Access_Level whenever the
-       --  call occurs as part of a static accessibility check and the error
-       --  case is the case where the type's level is too shallow (as opposed
-       --  to too deep).
- 
-       if Is_Generic_Type (Root_Type (Btyp)) then
-          return Scope_Depth (Standard_Standard);
-       end if;
- 
-       return Scope_Depth (Enclosing_Dynamic_Scope (Btyp));
-    end Type_Access_Level;
- 
     ------------------------------------
     -- Type_Without_Stream_Operation  --
     ------------------------------------
--- 28571,28576 ----
*************** package body Sem_Util is
*** 30239,30244 ****
--- 29254,29322 ----
        return List_1;
     end Visible_Ancestors;
  
+    ---------------------------
+    -- Warn_On_Hiding_Entity --
+    ---------------------------
+ 
+    procedure Warn_On_Hiding_Entity
+      (N               : Node_Id;
+       Hidden, Visible : Entity_Id;
+       On_Use_Clause   : Boolean)
+    is
+    begin
+       --  Don't warn for record components since they always have a well
+       --  defined scope which does not confuse other uses. Note that in
+       --  some cases, Ekind has not been set yet.
+ 
+       if Ekind (Hidden) /= E_Component
+         and then Ekind (Hidden) /= E_Discriminant
+         and then Nkind (Parent (Hidden)) /= N_Component_Declaration
+         and then Ekind (Visible) /= E_Component
+         and then Ekind (Visible) /= E_Discriminant
+         and then Nkind (Parent (Visible)) /= N_Component_Declaration
+ 
+         --  Don't warn for one character variables. It is too common to use
+         --  such variables as locals and will just cause too many false hits.
+ 
+         and then Length_Of_Name (Chars (Hidden)) /= 1
+ 
+         --  Don't warn for non-source entities
+ 
+         and then Comes_From_Source (Hidden)
+         and then Comes_From_Source (Visible)
+ 
+         --  Don't warn within a generic instantiation
+ 
+         and then not In_Instance
+ 
+         --  Don't warn unless entity in question is in extended main source
+ 
+         and then In_Extended_Main_Source_Unit (Visible)
+ 
+         --  Finally, in the case of a declaration, the hidden entity must
+         --  be either immediately visible or use visible (i.e. from a used
+         --  package). In the case of a use clause, the visible entity must
+         --  be immediately visible.
+ 
+         and then
+           (if On_Use_Clause then
+              Is_Immediately_Visible (Visible)
+            else
+              (Is_Immediately_Visible (Hidden)
+                or else
+               Is_Potentially_Use_Visible (Hidden)))
+       then
+          if On_Use_Clause then
+             Error_Msg_Sloc := Sloc (Visible);
+             Error_Msg_NE ("visible declaration of&# hides homonym "
+                           & "from use clause?h?", N, Hidden);
+          else
+             Error_Msg_Sloc := Sloc (Hidden);
+             Error_Msg_NE ("declaration hides &#?h?", N, Visible);
+          end if;
+       end if;
+    end Warn_On_Hiding_Entity;
+ 
     ----------------------
     -- Within_Init_Proc --
     ----------------------
*************** package body Sem_Util is
*** 30295,30300 ****
--- 29373,29381 ----
        Found_Type : constant Entity_Id := First_Subtype (Etype (Expr));
        Expec_Type : constant Entity_Id := First_Subtype (Expected_Type);
  
+       Err_Msg_Exp_Typ : Entity_Id := Expected_Type;
+       --  Type entity used when printing errors concerning the expected type
+ 
        Matching_Field : Entity_Id;
        --  Entity to give a more precise suggestion on how to write a one-
        --  element positional aggregate.
*************** package body Sem_Util is
*** 30452,30457 ****
--- 29533,29547 ----
           end if;
        end if;
  
+       --  Avoid printing internally generated subtypes in error messages and
+       --  instead use the corresponding first subtype in such cases.
+ 
+       if not Comes_From_Source (Err_Msg_Exp_Typ)
+         or else not Comes_From_Source (Declaration_Node (Err_Msg_Exp_Typ))
+       then
+          Err_Msg_Exp_Typ := First_Subtype (Err_Msg_Exp_Typ);
+       end if;
+ 
        --  An interesting special check. If the expression is parenthesized
        --  and its type corresponds to the type of the sole component of the
        --  expected record type, or to the component type of the expected one
*************** package body Sem_Util is
*** 30489,30495 ****
           Error_Msg_N
             ("result must be general access type!", Expr);
           Error_Msg_NE -- CODEFIX
!            ("\add ALL to }!", Expr, Expec_Type);
  
        --  Another special check, if the expected type is an integer type,
        --  but the expression is of type System.Address, and the parent is
--- 29579,29585 ----
           Error_Msg_N
             ("result must be general access type!", Expr);
           Error_Msg_NE -- CODEFIX
!            ("\add ALL to }!", Expr, Err_Msg_Exp_Typ);
  
        --  Another special check, if the expected type is an integer type,
        --  but the expression is of type System.Address, and the parent is
*************** package body Sem_Util is
*** 30581,30587 ****
              Error_Msg_NE ("expected}!", Expr,
                            Corresponding_Remote_Type (Expec_Type));
           else
!             Error_Msg_NE ("expected}!", Expr, Expec_Type);
           end if;
  
           if Is_Entity_Name (Expr)
--- 29671,29677 ----
              Error_Msg_NE ("expected}!", Expr,
                            Corresponding_Remote_Type (Expec_Type));
           else
!             Error_Msg_NE ("expected}!", Expr, Err_Msg_Exp_Typ);
           end if;
  
           if Is_Entity_Name (Expr)
*************** package body Sem_Util is
*** 31262,31268 ****
                    Next (Range_Or_Expr);
                 end loop;
  
!                pragma Assert (not Present (Range_Or_Expr));
                 Check_Consistency (Result);
                 return Result;
              end;
--- 30352,30358 ----
                    Next (Range_Or_Expr);
                 end loop;
  
!                pragma Assert (No (Range_Or_Expr));
                 Check_Consistency (Result);
                 return Result;
              end;
*************** package body Sem_Util is
*** 31512,31518 ****
                         and then Is_Non_Empty_List (Alternatives (Par))
                         and then Trailer /= First (Alternatives (Par))
                       then
!                         pragma Assert (not Present (Right_Opnd (Par)));
                          pragma Assert
                            (Is_List_Member (Trailer)
                             and then List_Containing (Trailer)
--- 30602,30608 ----
                         and then Is_Non_Empty_List (Alternatives (Par))
                         and then Trailer /= First (Alternatives (Par))
                       then
!                         pragma Assert (No (Right_Opnd (Par)));
                          pragma Assert
                            (Is_List_Member (Trailer)
                             and then List_Containing (Trailer)
*************** package body Sem_Util is
*** 31952,31961 ****
              --    type Typ (Len : Natural := 0) is
              --      record F : String (1 .. Len); end record;
              --
!             --  See Large_Max_Size_Mutable function elsewhere in this
!             --  file (currently declared inside of
!             --  Requires_Transient_Scope, so it would have to be
!             --  moved if we want it to be callable from here).
  
           end Indirect_Temp_Needed;
  
--- 31042,31050 ----
              --    type Typ (Len : Natural := 0) is
              --      record F : String (1 .. Len); end record;
              --
!             --  See Large_Max_Size_Mutable function elsewhere in this file,
!             --  currently declared inside of Needs_Secondary_Stack, so it
!             --  would have to be moved if we want it to be callable from here.
  
           end Indirect_Temp_Needed;
  
*************** package body Sem_Util is
*** 32195,32201 ****
                 and then Ekind (Scope (T))
                   in E_Entry | E_Entry_Family | E_Function | E_Procedure
                 and then
!                  (Present (Postconditions_Proc (Scope (T)))
                    or else Present (Contract (Scope (T))))
              then
                 --  ??? Should define a flag for this. We could incorrectly
--- 31284,31290 ----
                 and then Ekind (Scope (T))
                   in E_Entry | E_Entry_Family | E_Function | E_Procedure
                 and then
!                  (Present (Wrapped_Statements (Scope (T)))
                    or else Present (Contract (Scope (T))))
              then
                 --  ??? Should define a flag for this. We could incorrectly
*************** package body Sem_Util is
*** 32218,32264 ****
  
     package body Storage_Model_Support is
  
-       -----------------------------------
-       -- Get_Storage_Model_Type_Entity --
-       -----------------------------------
- 
-       function Get_Storage_Model_Type_Entity
-         (Typ : Entity_Id;
-          Nam : Name_Id) return Entity_Id
-       is
-          pragma Assert
-            (Is_Type (Typ)
-             and then
-               Nam in Name_Address_Type
-                    | Name_Null_Address
-                    | Name_Allocate
-                    | Name_Deallocate
-                    | Name_Copy_From
-                    | Name_Copy_To
-                    | Name_Storage_Size);
- 
-          SMT_Aspect_Value : constant Node_Id :=
-            Find_Value_Of_Aspect (Typ, Aspect_Storage_Model_Type);
-          Assoc            : Node_Id;
- 
-       begin
-          if No (SMT_Aspect_Value) then
-             return Empty;
- 
-          else
-             Assoc := First (Component_Associations (SMT_Aspect_Value));
-             while Present (Assoc) loop
-                if Chars (First (Choices (Assoc))) = Nam then
-                   return Entity (Expression (Assoc));
-                end if;
- 
-                Next (Assoc);
-             end loop;
- 
-             return Empty;
-          end if;
-       end Get_Storage_Model_Type_Entity;
- 
        -----------------------------------------
        -- Has_Designated_Storage_Model_Aspect --
        -----------------------------------------
--- 31307,31312 ----
*************** package body Sem_Util is
*** 32267,32273 ****
          (Typ : Entity_Id) return Boolean
        is
        begin
!          return Present (Find_Aspect (Typ, Aspect_Designated_Storage_Model));
        end Has_Designated_Storage_Model_Aspect;
  
        -----------------------------------
--- 31315,31321 ----
          (Typ : Entity_Id) return Boolean
        is
        begin
!          return Has_Aspect (Typ, Aspect_Designated_Storage_Model);
        end Has_Designated_Storage_Model_Aspect;
  
        -----------------------------------
*************** package body Sem_Util is
*** 32277,32283 ****
        function Has_Storage_Model_Type_Aspect (Typ : Entity_Id) return Boolean
        is
        begin
!          return Present (Find_Aspect (Typ, Aspect_Storage_Model_Type));
        end Has_Storage_Model_Type_Aspect;
  
        --------------------------
--- 31325,31331 ----
        function Has_Storage_Model_Type_Aspect (Typ : Entity_Id) return Boolean
        is
        begin
!          return Has_Aspect (Typ, Aspect_Storage_Model_Type);
        end Has_Storage_Model_Type_Aspect;
  
        --------------------------
*************** package body Sem_Util is
*** 32286,32298 ****
  
        function Storage_Model_Object (Typ : Entity_Id) return Entity_Id is
        begin
!          if Has_Designated_Storage_Model_Aspect (Typ) then
!             return
!               Entity
!                 (Find_Value_Of_Aspect (Typ, Aspect_Designated_Storage_Model));
!          else
!             return Empty;
!          end if;
        end Storage_Model_Object;
  
        ------------------------
--- 31334,31344 ----
  
        function Storage_Model_Object (Typ : Entity_Id) return Entity_Id is
        begin
!          pragma Assert (Has_Designated_Storage_Model_Aspect (Typ));
! 
!          return
!            Entity
!              (Find_Value_Of_Aspect (Typ, Aspect_Designated_Storage_Model));
        end Storage_Model_Object;
  
        ------------------------
*************** package body Sem_Util is
*** 32301,32376 ****
  
        function Storage_Model_Type (Obj : Entity_Id) return Entity_Id is
        begin
!          if Present
!               (Find_Value_Of_Aspect (Etype (Obj), Aspect_Storage_Model_Type))
!          then
!             return Etype (Obj);
           else
              return Empty;
           end if;
!       end Storage_Model_Type;
  
        --------------------------------
        -- Storage_Model_Address_Type --
        --------------------------------
  
!       function Storage_Model_Address_Type (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Address_Type);
        end Storage_Model_Address_Type;
  
        --------------------------------
        -- Storage_Model_Null_Address --
        --------------------------------
  
!       function Storage_Model_Null_Address (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Null_Address);
        end Storage_Model_Null_Address;
  
        ----------------------------
        -- Storage_Model_Allocate --
        ----------------------------
  
!       function Storage_Model_Allocate (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Allocate);
        end Storage_Model_Allocate;
  
        ------------------------------
        -- Storage_Model_Deallocate --
        ------------------------------
  
!       function Storage_Model_Deallocate (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Deallocate);
        end Storage_Model_Deallocate;
  
        -----------------------------
        -- Storage_Model_Copy_From --
        -----------------------------
  
!       function Storage_Model_Copy_From (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Copy_From);
        end Storage_Model_Copy_From;
  
        ---------------------------
        -- Storage_Model_Copy_To --
        ---------------------------
  
!       function Storage_Model_Copy_To (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Copy_To);
        end Storage_Model_Copy_To;
  
        --------------------------------
        -- Storage_Model_Storage_Size --
        --------------------------------
  
!       function Storage_Model_Storage_Size (Typ : Entity_Id) return Entity_Id is
        begin
!          return Get_Storage_Model_Type_Entity (Typ, Name_Storage_Size);
        end Storage_Model_Storage_Size;
  
     end Storage_Model_Support;
--- 31347,31497 ----
  
        function Storage_Model_Type (Obj : Entity_Id) return Entity_Id is
        begin
!          pragma Assert (Has_Storage_Model_Type_Aspect (Etype (Obj)));
! 
!          return Etype (Obj);
!       end Storage_Model_Type;
! 
!       -----------------------------------
!       -- Get_Storage_Model_Type_Entity --
!       -----------------------------------
! 
!       function Get_Storage_Model_Type_Entity
!         (SM_Obj_Or_Type : Entity_Id;
!          Nam            : Name_Id) return Entity_Id
!       is
!          Typ : constant Entity_Id := (if Is_Object (SM_Obj_Or_Type) then
!                                          Storage_Model_Type (SM_Obj_Or_Type)
!                                       else
!                                          SM_Obj_Or_Type);
!          pragma Assert
!            (Is_Type (Typ)
!              and then
!                Nam in Name_Address_Type
!                     | Name_Null_Address
!                     | Name_Allocate
!                     | Name_Deallocate
!                     | Name_Copy_From
!                     | Name_Copy_To
!                     | Name_Storage_Size);
! 
!          Assoc            : Node_Id;
!          SMT_Aspect_Value : constant Node_Id :=
!            Find_Value_Of_Aspect (Typ, Aspect_Storage_Model_Type);
! 
!       begin
!          --  When the aspect has an aggregate expression, search through it
!          --  to locate a match for the name of the given "subaspect" and return
!          --  the entity of the aggregate association's expression.
! 
!          if Present (SMT_Aspect_Value) then
!             Assoc := First (Component_Associations (SMT_Aspect_Value));
!             while Present (Assoc) loop
!                if Chars (First (Choices (Assoc))) = Nam then
!                   return Entity (Expression (Assoc));
!                end if;
! 
!                Next (Assoc);
!             end loop;
!          end if;
! 
!          --  The aggregate argument of Storage_Model_Type is optional, and when
!          --  not present the aspect defaults to the native storage model, where
!          --  the address type is System.Address. In that case, we return
!          --  System.Address for Name_Address_Type and System.Null_Address for
!          --  Name_Null_Address, but return Empty for other cases, and leave it
!          --  to the back end to map those to the appropriate native operations.
! 
!          if Nam = Name_Address_Type then
!             return RTE (RE_Address);
! 
!          elsif Nam = Name_Null_Address then
!             return RTE (RE_Null_Address);
! 
           else
              return Empty;
           end if;
!       end Get_Storage_Model_Type_Entity;
  
        --------------------------------
        -- Storage_Model_Address_Type --
        --------------------------------
  
!       function Storage_Model_Address_Type
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return
!            Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Address_Type);
        end Storage_Model_Address_Type;
  
        --------------------------------
        -- Storage_Model_Null_Address --
        --------------------------------
  
!       function Storage_Model_Null_Address
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return
!            Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Null_Address);
        end Storage_Model_Null_Address;
  
        ----------------------------
        -- Storage_Model_Allocate --
        ----------------------------
  
!       function Storage_Model_Allocate
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Allocate);
        end Storage_Model_Allocate;
  
        ------------------------------
        -- Storage_Model_Deallocate --
        ------------------------------
  
!       function Storage_Model_Deallocate
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return
!            Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Deallocate);
        end Storage_Model_Deallocate;
  
        -----------------------------
        -- Storage_Model_Copy_From --
        -----------------------------
  
!       function Storage_Model_Copy_From
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Copy_From);
        end Storage_Model_Copy_From;
  
        ---------------------------
        -- Storage_Model_Copy_To --
        ---------------------------
  
!       function Storage_Model_Copy_To
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Copy_To);
        end Storage_Model_Copy_To;
  
        --------------------------------
        -- Storage_Model_Storage_Size --
        --------------------------------
  
!       function Storage_Model_Storage_Size
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id
!       is
        begin
!          return
!            Get_Storage_Model_Type_Entity (SM_Obj_Or_Type, Name_Storage_Size);
        end Storage_Model_Storage_Size;
  
     end Storage_Model_Support;
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_util.ads gcc-13.1.0/gcc/ada/sem_util.ads
*** gcc-12.2.0/gcc/ada/sem_util.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_util.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Util is
*** 44,83 ****
     --  including the cases where there can't be any because e.g. the type is
     --  not tagged.
  
-    type Accessibility_Level_Kind is
-      (Dynamic_Level,
-       Object_Decl_Level,
-       Zero_On_Dynamic_Level);
-    --  Accessibility_Level_Kind is an enumerated type which captures the
-    --  different modes in which an accessibility level could be obtained for
-    --  a given expression.
- 
-    --  When in the context of the function Accessibility_Level,
-    --  Accessibility_Level_Kind signals what type of accessibility level to
-    --  obtain. For example, when Level is Dynamic_Level, a defining identifier
-    --  associated with a SAOOAAT may be returned or an N_Integer_Literal node.
-    --  When the level is Object_Decl_Level, an N_Integer_Literal node is
-    --  returned containing the level of the declaration of the object if
-    --  relevant (be it a SAOOAAT or otherwise). Finally, Zero_On_Dynamic_Level
-    --  returns library level for all cases where the accessibility level is
-    --  dynamic (used to bypass static accessibility checks in dynamic cases).
- 
-    function Accessibility_Level
-      (Expr              : Node_Id;
-       Level             : Accessibility_Level_Kind;
-       In_Return_Context : Boolean := False;
-       Allow_Alt_Model   : Boolean := True) return Node_Id;
-    --  Centralized accessibility level calculation routine for finding the
-    --  accessibility level of a given expression Expr.
- 
-    --  In_Return_Context forces the Accessibility_Level calculations to be
-    --  carried out "as if" Expr existed in a return value. This is useful for
-    --  calculating the accessibility levels for discriminant associations
-    --  and return aggregates.
- 
-    --  The Allow_Alt_Model parameter allows the alternative level calculation
-    --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
- 
     function Acquire_Warning_Match_String (Str_Lit : Node_Id) return String;
     --  Used by pragma Warnings (Off, string), and Warn_As_Error (string) to get
     --  the given string argument, adding leading and trailing asterisks if they
--- 44,49 ----
*************** package Sem_Util is
*** 88,98 ****
     --  Add A to the list of access types to process when expanding the
     --  freeze node of E.
  
-    procedure Add_Block_Identifier (N : Node_Id; Id : out Entity_Id);
-    --  Given a block statement N, generate an internal E_Block label and make
-    --  it the identifier of the block. Id denotes the generated entity. If the
-    --  block already has an identifier, Id returns the entity of its label.
- 
     procedure Add_Global_Declaration (N : Node_Id);
     --  These procedures adds a declaration N at the library level, to be
     --  elaborated before any other code in the unit. It is used for example
--- 54,59 ----
*************** package Sem_Util is
*** 320,325 ****
--- 281,296 ----
     --  declaration in the tree before N, and return the entity of that
     --  subtype. Otherwise, simply return T.
  
+    function Build_Default_Subtype_OK (T : Entity_Id) return Boolean;
+    --  When analyzing components or object declarations, it is possible, in
+    --  some cases, to build subtypes for discriminated types. This is
+    --  worthwhile to avoid the backend allocating the maximum possible size for
+    --  objects of the type.
+    --  In particular, when T is limited, the discriminants and therefore the
+    --  size of an object of type T cannot change. Furthermore, if T is definite
+    --  with statically initialized defaulted discriminants, we are able and
+    --  want to build a constrained subtype of the right size.
+ 
     function Build_Discriminal_Subtype_Of_Component
       (T : Entity_Id) return Node_Id;
     --  Determine whether a record component has a type that depends on
*************** package Sem_Util is
*** 615,620 ****
--- 586,596 ----
     --  create a new compatible record type. Loc is the source location assigned
     --  to the created nodes.
  
+    procedure Copy_Ghost_Aspect (From : Node_Id; To : Node_Id);
+    --  Copy the Ghost aspect if present in the aspect specifications of node
+    --  From to node To. On entry it is assumed that To does not have aspect
+    --  specifications. If From has no aspects, the routine has no effect.
+ 
     function Copy_Parameter_List (Subp_Id : Entity_Id) return List_Id;
     --  Utility to create a parameter profile for a new subprogram spec, when
     --  the subprogram has a body that acts as spec. This is done for some cases
*************** package Sem_Util is
*** 663,668 ****
--- 639,653 ----
     function Current_Scope return Entity_Id;
     --  Get entity representing current scope
  
+    procedure Add_Block_Identifier
+        (N : Node_Id;
+         Id : out Entity_Id;
+         Scope : Entity_Id := Current_Scope);
+    --  Given a block statement N, generate an internal E_Block label and make
+    --  it the identifier of the block. Scope denotes the scope in which the
+    --  generated entity Id is created and defaults to the current scope. If the
+    --  block already has an identifier, Id returns the entity of its label.
+ 
     function Current_Scope_No_Loops return Entity_Id;
     --  Return the current scope ignoring internally generated loops
  
*************** package Sem_Util is
*** 672,698 ****
     --  Current_Scope is returned. The returned value is Empty if this is called
     --  from a library package which is not within any subprogram.
  
!    function CW_Or_Has_Controlled_Part (T : Entity_Id) return Boolean;
!    --  True if T is a class-wide type, or if it has controlled parts ("part"
!    --  means T or any of its subcomponents). Same as Needs_Finalization, except
!    --  when pragma Restrictions (No_Finalization) applies, in which case we
!    --  know that class-wide objects do not contain controlled parts.
! 
!    function Deepest_Type_Access_Level
!      (Typ             : Entity_Id;
!       Allow_Alt_Model : Boolean := True) return Uint;
! 
!    --  Same as Type_Access_Level, except that if the type is the type of an Ada
!    --  2012 stand-alone object of an anonymous access type, then return the
!    --  static accessibility level of the object. In that case, the dynamic
!    --  accessibility level of the object may take on values in a range. The low
!    --  bound of that range is returned by Type_Access_Level; this function
!    --  yields the high bound of that range. Also differs from Type_Access_Level
!    --  in the case of a descendant of a generic formal type (returns Int'Last
!    --  instead of 0).
! 
!    --  The Allow_Alt_Model parameter allows the alternative level calculation
!    --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
  
     function Defining_Entity (N : Node_Id) return Entity_Id;
     --  Given a declaration N, returns the associated defining entity. If the
--- 657,666 ----
     --  Current_Scope is returned. The returned value is Empty if this is called
     --  from a library package which is not within any subprogram.
  
!    function CW_Or_Needs_Finalization (Typ : Entity_Id) return Boolean;
!    --  True if Typ is a class-wide type or requires finalization actions. Same
!    --  as Needs_Finalization except with pragma Restrictions (No_Finalization),
!    --  in which case we know that class-wide objects do not need finalization.
  
     function Defining_Entity (N : Node_Id) return Entity_Id;
     --  Given a declaration N, returns the associated defining entity. If the
*************** package Sem_Util is
*** 768,777 ****
     --  private components of protected objects, but is generally useful when
     --  restriction No_Implicit_Heap_Allocation is active.
  
-    function Effective_Extra_Accessibility (Id : Entity_Id) return Entity_Id;
-    --  Same as Einfo.Extra_Accessibility except thtat object renames
-    --  are looked through.
- 
     function Effective_Reads_Enabled (Id : Entity_Id) return Boolean;
     --  Id should be the entity of a state abstraction, an object, or a type.
     --  Returns True iff Id is subject to external property Effective_Reads.
--- 736,741 ----
*************** package Sem_Util is
*** 791,796 ****
--- 755,764 ----
     --  Returns the declaration node enclosing N (including possibly N itself),
     --  if any, or Empty otherwise.
  
+    function Enclosing_Declaration_Or_Statement (N : Node_Id) return Node_Id;
+    --  Return the nearest enclosing declaration or statement that houses
+    --  arbitrary node N.
+ 
     function Enclosing_Generic_Body (N : Node_Id) return Node_Id;
     --  Returns the Node_Id associated with the innermost enclosing generic
     --  body, if any. If none, then returns Empty.
*************** package Sem_Util is
*** 816,832 ****
     --  Enclosing_Comp_Unit_Node returns a subunit, then the corresponding
     --  library unit. If no such item is found, returns Empty.
  
!    function Enclosing_Package (E : Entity_Id) return Entity_Id;
     --  Utility function to return the Ada entity of the package enclosing
!    --  the entity E, if any. Returns Empty if no enclosing package.
  
     function Enclosing_Package_Or_Subprogram (E : Entity_Id) return Entity_Id;
     --  Returns the entity of the package or subprogram enclosing E, if any.
     --  Returns Empty if no enclosing package or subprogram.
  
!    function Enclosing_Subprogram (E : Entity_Id) return Entity_Id;
     --  Utility function to return the Ada entity of the subprogram enclosing
!    --  the entity E, if any. Returns Empty if no enclosing subprogram.
  
     function End_Keyword_Location (N : Node_Id) return Source_Ptr;
     --  Given block statement, entry body, package body, package declaration,
--- 784,800 ----
     --  Enclosing_Comp_Unit_Node returns a subunit, then the corresponding
     --  library unit. If no such item is found, returns Empty.
  
!    function Enclosing_Package (N : Node_Or_Entity_Id) return Entity_Id;
     --  Utility function to return the Ada entity of the package enclosing
!    --  the entity or node N, if any. Returns Empty if no enclosing package.
  
     function Enclosing_Package_Or_Subprogram (E : Entity_Id) return Entity_Id;
     --  Returns the entity of the package or subprogram enclosing E, if any.
     --  Returns Empty if no enclosing package or subprogram.
  
!    function Enclosing_Subprogram (N : Node_Or_Entity_Id) return Entity_Id;
     --  Utility function to return the Ada entity of the subprogram enclosing
!    --  N, if any. Returns Empty if no enclosing subprogram.
  
     function End_Keyword_Location (N : Node_Id) return Source_Ptr;
     --  Given block statement, entry body, package body, package declaration,
*************** package Sem_Util is
*** 1124,1133 ****
     --  discriminants. Otherwise all components of the parent must be included
     --  in the subtype for semantic analysis.
  
-    function Get_Dynamic_Accessibility (E : Entity_Id) return Entity_Id;
-    --  Obtain the accessibility level for a given entity formal taking into
-    --  account both extra and minimum accessibility.
- 
     function Get_Actual_Subtype (N : Node_Id) return Entity_Id;
     --  Given a node for an expression, obtain the actual subtype of the
     --  expression. In the case of a parameter where the formal is an
--- 1092,1097 ----
*************** package Sem_Util is
*** 1174,1179 ****
--- 1138,1149 ----
     --  If expression N references a part of an object, return this object.
     --  Otherwise return Empty. Expression N should have been resolved already.
  
+    function Get_Enclosing_Deep_Object (N : Node_Id) return Entity_Id;
+    --  If expression N references a reachable part of an object (as defined in
+    --  SPARK RM 6.9), return this object. Otherwise return Empty. It is similar
+    --  to Get_Enclosing_Object, but treats pointer dereference like component
+    --  selection. Expression N should have been resolved already.
+ 
     function Get_Generic_Entity (N : Node_Id) return Entity_Id;
     --  Returns the true generic entity in an instantiation. If the name in the
     --  instantiation is a renaming, the function returns the renamed generic.
*************** package Sem_Util is
*** 1258,1266 ****
     --  Retrieve one of the primitives First, Last, Next, Previous, Has_Element,
     --  Element from the value of the Iterable aspect of a type.
  
!    procedure Get_Library_Unit_Name_String (Decl_Node : Node_Id);
!    --  Retrieve the fully expanded name of the library unit declared by
!    --  Decl_Node into the name buffer.
  
     function Get_Max_Queue_Length (Id : Entity_Id) return Uint;
     --  Return the argument of pragma Max_Queue_Length or zero if the annotation
--- 1228,1235 ----
     --  Retrieve one of the primitives First, Last, Next, Previous, Has_Element,
     --  Element from the value of the Iterable aspect of a type.
  
!    function Get_Library_Unit_Name (Decl_Node : Node_Id) return String_Id;
!    --  Return the full expanded name of the library unit declared by Decl_Node
  
     function Get_Max_Queue_Length (Id : Entity_Id) return Uint;
     --  Return the argument of pragma Max_Queue_Length or zero if the annotation
*************** package Sem_Util is
*** 1339,1345 ****
     --  Given an entity for a task type or subtype, retrieves the
     --  Task_Body_Procedure field from the corresponding task type declaration.
  
!    function Get_User_Defined_Eq (E : Entity_Id) return Entity_Id;
     --  For a type entity, return the entity of the primitive equality function
     --  for the type if it exists, otherwise return Empty.
  
--- 1308,1314 ----
     --  Given an entity for a task type or subtype, retrieves the
     --  Task_Body_Procedure field from the corresponding task type declaration.
  
!    function Get_User_Defined_Equality (E : Entity_Id) return Entity_Id;
     --  For a type entity, return the entity of the primitive equality function
     --  for the type if it exists, otherwise return Empty.
  
*************** package Sem_Util is
*** 1366,1383 ****
     --  don't look inside packed array types. If Recurse is False, just
     --  go down one level (so it's no longer the "fullest" view).
  
-    function Has_Access_Values (T : Entity_Id) return Boolean;
-    --  Returns true if the underlying type of T is an access type, or has a
-    --  component (at any recursive level) that is an access type. This is a
-    --  conservative predicate, if it is not known whether or not T contains
-    --  access values (happens for generic formals in some cases), then False is
-    --  returned.  Note that tagged types return False. Even though the tag is
-    --  implemented as an access type internally, this function tests only for
-    --  access types known to the programmer. See also Has_Tagged_Component.
- 
-    function Has_Anonymous_Access_Discriminant (Typ : Entity_Id) return Boolean;
-    --  Returns True if Typ has one or more anonymous access discriminants
- 
     type Alignment_Result is (Known_Compatible, Unknown, Known_Incompatible);
     --  Result of Has_Compatible_Alignment test, description found below. Note
     --  that the values are arranged in increasing order of problematicness.
--- 1335,1340 ----
*************** package Sem_Util is
*** 1517,1536 ****
     --  Return True if the loop has no side effect and can therefore be
     --  marked for removal. Return False if N is not a N_Loop_Statement.
  
-    subtype Static_Accessibility_Level_Kind
-      is Accessibility_Level_Kind range Object_Decl_Level
-                                          .. Zero_On_Dynamic_Level;
-    --  Restrict the reange of Accessibility_Level_Kind to be non-dynamic for
-    --  use in the static version of Accessibility_Level below.
- 
-    function Static_Accessibility_Level
-      (Expr              : Node_Id;
-       Level             : Static_Accessibility_Level_Kind;
-       In_Return_Context : Boolean := False) return Uint;
-    --  Overloaded version of Accessibility_Level which returns a universal
-    --  integer for use in compile-time checking. Note: Level is restricted to
-    --  be non-dynamic.
- 
     function Is_Newly_Constructed
       (Exp : Node_Id; Context_Requires_NC : Boolean) return Boolean;
     --  Indicates whether a given expression is "newly constructed" (RM 4.4).
--- 1474,1479 ----
*************** package Sem_Util is
*** 1617,1631 ****
     --  a tagged type or has a subcomponent that is tagged. Returns False for a
     --  noncomposite type, or if no tagged subcomponents are present.
  
-    function Has_Unconstrained_Access_Discriminants
-      (Subtyp : Entity_Id) return Boolean;
-    --  Returns True if the given subtype is unconstrained and has one or more
-    --  access discriminants.
- 
     function Has_Undefined_Reference (Expr : Node_Id) return Boolean;
     --  Given arbitrary expression Expr, determine whether it contains at
     --  least one name whose entity is Any_Id.
  
     function Has_Volatile_Component (Typ : Entity_Id) return Boolean;
     --  Given arbitrary type Typ, determine whether it contains at least one
     --  volatile component.
--- 1560,1574 ----
     --  a tagged type or has a subcomponent that is tagged. Returns False for a
     --  noncomposite type, or if no tagged subcomponents are present.
  
     function Has_Undefined_Reference (Expr : Node_Id) return Boolean;
     --  Given arbitrary expression Expr, determine whether it contains at
     --  least one name whose entity is Any_Id.
  
+    function Has_Effectively_Volatile_Component
+      (Typ : Entity_Id) return Boolean;
+    --  Given arbitrary type Typ, determine whether it contains at least one
+    --  effectively volatile component.
+ 
     function Has_Volatile_Component (Typ : Entity_Id) return Boolean;
     --  Given arbitrary type Typ, determine whether it contains at least one
     --  volatile component.
*************** package Sem_Util is
*** 1723,1736 ****
     --  This version is more efficient than calling the single root version of
     --  Is_Subtree twice.
  
     function In_Visible_Part (Scope_Id : Entity_Id) return Boolean;
     --  Determine whether a declaration occurs within the visible part of a
     --  package specification. The package must be on the scope stack, and the
     --  corresponding private part must not.
  
-    function In_While_Loop_Condition (N : Node_Id) return Boolean;
-    --  Returns true if the expression N occurs within the condition of a while
- 
     function Incomplete_Or_Partial_View (Id : Entity_Id) return Entity_Id;
     --  Given the entity of a constant or a type, retrieve the incomplete or
     --  partial view of the same entity. Note that Id may not have a partial
--- 1666,1683 ----
     --  This version is more efficient than calling the single root version of
     --  Is_Subtree twice.
  
+    function In_Statement_Condition_With_Actions (N : Node_Id) return Boolean;
+    --  Returns true if the expression N occurs within the condition of a
+    --  statement node with actions. Subsidiary to inlining for GNATprove, where
+    --  inlining of function calls in such expressions would expand the called
+    --  body into actions list of the condition node. GNATprove cannot yet cope
+    --  with such a complex AST.
+ 
     function In_Visible_Part (Scope_Id : Entity_Id) return Boolean;
     --  Determine whether a declaration occurs within the visible part of a
     --  package specification. The package must be on the scope stack, and the
     --  corresponding private part must not.
  
     function Incomplete_Or_Partial_View (Id : Entity_Id) return Entity_Id;
     --  Given the entity of a constant or a type, retrieve the incomplete or
     --  partial view of the same entity. Note that Id may not have a partial
*************** package Sem_Util is
*** 1791,1800 ****
     --  pragma Initialize_Scalars or by the binder. Return an expression created
     --  at source location Loc, which denotes the invalid value.
  
-    function Is_Anonymous_Access_Actual (N : Node_Id) return Boolean;
-    --  Determine if N is used as an actual for a call whose corresponding
-    --  formal is of an anonymous access type.
- 
     function Is_Access_Subprogram_Wrapper (E : Entity_Id) return Boolean;
     --  True if E is the constructed wrapper for an access_to_subprogram
     --  type with Pre/Postconditions.
--- 1738,1743 ----
*************** package Sem_Util is
*** 1850,1861 ****
     function Is_Attribute_Update (N : Node_Id) return Boolean;
     --  Determine whether node N denotes attribute 'Update
  
!    function Is_Body_Or_Package_Declaration (N : Node_Id) return Boolean;
     --  Determine whether node N denotes a body or a package declaration
  
     function Is_Bounded_String (T : Entity_Id) return Boolean;
     --  True if T is a bounded string type. Used to make sure "=" composes
!    --  properly for bounded string types.
  
     function Is_By_Protected_Procedure (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id denotes a procedure with synchronization
--- 1793,1805 ----
     function Is_Attribute_Update (N : Node_Id) return Boolean;
     --  Determine whether node N denotes attribute 'Update
  
!    function Is_Body_Or_Package_Declaration (N : Node_Id) return Boolean
!      with Inline;
     --  Determine whether node N denotes a body or a package declaration
  
     function Is_Bounded_String (T : Entity_Id) return Boolean;
     --  True if T is a bounded string type. Used to make sure "=" composes
!    --  properly for bounded string types (see 4.5.2(32.1/1)).
  
     function Is_By_Protected_Procedure (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id denotes a procedure with synchronization
*************** package Sem_Util is
*** 2052,2057 ****
--- 1996,2004 ----
     --  Determine whether an arbitrary node denotes an effectively volatile
     --  object for reading (SPARK RM 7.1.2).
  
+    function Is_Entity_Of_Quantified_Expression (Id : Entity_Id) return Boolean;
+    --  Determine whether entity Id is the entity of a quantified expression
+ 
     function Is_Entry_Body (Id : Entity_Id) return Boolean;
     --  Determine whether entity Id is the body entity of an entry [family]
  
*************** package Sem_Util is
*** 2069,2074 ****
--- 2016,2023 ----
     function Is_Expression_Function (Subp : Entity_Id) return Boolean;
     --  Determine whether subprogram [body] Subp denotes an expression function
  
+    --  WARNING: There is a matching C declaration of this subprogram in fe.h
+ 
     function Is_Expression_Function_Or_Completion
       (Subp : Entity_Id) return Boolean;
     --  Determine whether subprogram [body] Subp denotes an expression function
*************** package Sem_Util is
*** 2201,2212 ****
--- 2150,2163 ----
     --  Given a tagged type, returns True if argument is a type extension
     --  that introduces no new components (discriminant or nondiscriminant).
     --  Ignore_Privacy should be True for use in implementing dynamic semantics.
+    --  Cannot be called with class-wide types.
  
     function Is_Null_Extension_Of
       (Descendant, Ancestor : Entity_Id) return Boolean;
     --  Given two tagged types, the first a descendant of the second,
     --  returns True if every component of Descendant is inherited
     --  (directly or indirectly) from Ancestor. Privacy is ignored.
+    --  Cannot be called with class-wide types.
  
     function Is_Null_Record_Definition (Record_Def : Node_Id) return Boolean;
     --  Returns True for an N_Record_Definition node that has no user-defined
*************** package Sem_Util is
*** 2332,2343 ****
     --  AI05-0139-2: Check whether Typ is derived from the predefined interface
     --  Ada.Iterator_Interfaces.Reversible_Iterator.
  
-    function Is_Selector_Name (N : Node_Id) return Boolean;
-    --  Given an N_Identifier node N, determines if it is a Selector_Name.
-    --  As described in Sinfo, Selector_Names are special because they
-    --  represent use of the N_Identifier node for a true identifier, when
-    --  normally such nodes represent a direct name.
- 
     function Is_Single_Concurrent_Object (Id : Entity_Id) return Boolean;
     --  Determine whether arbitrary entity Id denotes the anonymous object
     --  created for a single protected or single task type.
--- 2283,2288 ----
*************** package Sem_Util is
*** 2367,2387 ****
     --  Determine whether arbitrary entity Id denotes the anonymous object
     --  created for a single task type.
  
-    function Is_Special_Aliased_Formal_Access
-      (Exp               : Node_Id;
-       In_Return_Context : Boolean := False) return Boolean;
-    --  Determines whether a dynamic check must be generated for explicitly
-    --  aliased formals within a function Scop for the expression Exp.
- 
-    --  In_Return_Context forces Is_Special_Aliased_Formal_Access to assume
-    --  that Exp is within a return value which is useful for checking
-    --  expressions within discriminant associations of return objects.
- 
-    --  More specially, Is_Special_Aliased_Formal_Access checks that Exp is a
-    --  'Access attribute reference within a return statement where the ultimate
-    --  prefix is an aliased formal of Scop and that Scop returns an anonymous
-    --  access type. See RM 3.10.2 for more details.
- 
     function Is_Specific_Tagged_Type (Typ : Entity_Id) return Boolean;
     --  Determine whether an arbitrary [private] type is specifically tagged
  
--- 2312,2317 ----
*************** package Sem_Util is
*** 2457,2462 ****
--- 2387,2396 ----
     --  unconditional transfer of control at run time, i.e. the following
     --  statement definitely will not be executed.
  
+    function Is_Trivial_Boolean (N : Node_Id) return Boolean;
+    --  Determine whether source node N denotes "True" or "False". Note that
+    --  this is not true for expressions that got folded to True or False.
+ 
     function Is_Unchecked_Conversion_Instance (Id : Entity_Id) return Boolean;
     --  Determine whether an arbitrary entity denotes an instance of function
     --  Ada.Unchecked_Conversion.
*************** package Sem_Util is
*** 2468,2473 ****
--- 2402,2415 ----
     function Is_User_Defined_Equality (Id : Entity_Id) return Boolean;
     --  Determine whether an entity denotes a user-defined equality
  
+    function Is_User_Defined_Literal
+      (N   : Node_Id;
+       Typ : Entity_Id) return Boolean;
+    pragma Inline (Is_User_Defined_Literal);
+    --  Determine whether N is a user-defined literal for Typ, including
+    --  the case where N denotes a named number of the appropriate kind
+    --  when Typ has an Integer_Literal or Real_Literal aspect.
+ 
     function Is_Validation_Variable_Reference (N : Node_Id) return Boolean;
     --  Determine whether N denotes a reference to a variable which captures the
     --  value of an object for validation purposes.
*************** package Sem_Util is
*** 2527,2537 ****
     --  Calls Handle_Parameter for each pair of formal and actual parameters of
     --  a function, procedure, or entry call.
  
-    function Itype_Has_Declaration (Id : Entity_Id) return Boolean;
-    --  Applies to Itypes. True if the Itype is attached to a declaration for
-    --  the type through its Parent field, which may or not be present in the
-    --  tree.
- 
     procedure Kill_Current_Values (Last_Assignment_Only : Boolean := False);
     --  This procedure is called to clear all constant indications from all
     --  entities in the current scope and in any parent scopes if the current
--- 2469,2474 ----
*************** package Sem_Util is
*** 2652,2662 ****
     --  syntactic ambiguity that results from an indexing of a function call
     --  that returns an array, so that Obj.F (X, Y) may mean F (Ob) (X, Y).
  
!    function Needs_Result_Accessibility_Level
!      (Func_Id : Entity_Id) return Boolean;
!    --  Ada 2012 (AI05-0234): Return True if the function needs an implicit
!    --  parameter to identify the accessibility level of the function result
!    --  "determined by the point of call".
  
     function Needs_Simple_Initialization
       (Typ         : Entity_Id;
--- 2589,2599 ----
     --  syntactic ambiguity that results from an indexing of a function call
     --  that returns an array, so that Obj.F (X, Y) may mean F (Ob) (X, Y).
  
!    function Needs_Secondary_Stack (Id : Entity_Id) return Boolean;
!    --  Return true if functions whose result type is Id must return on the
!    --  secondary stack, i.e. allocate the return object on this stack.
! 
!    --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
     function Needs_Simple_Initialization
       (Typ         : Entity_Id;
*************** package Sem_Util is
*** 2708,2714 ****
     --      fields are recreated after the replication takes place.
     --
     --        First_Named_Actual
-    --        First_Real_Statement
     --        Next_Named_Actual
     --
     --      If applicable, the Etype field (if any) is updated to refer to a
--- 2645,2650 ----
*************** package Sem_Util is
*** 2827,2835 ****
     --  inline this procedural form, but not the functional form above.
  
     function No_Caching_Enabled (Id : Entity_Id) return Boolean;
!    --  Given the entity of a variable, determine whether Id is subject to
!    --  volatility property No_Caching and if it is, the related expression
!    --  evaluates to True.
  
     function No_Heap_Finalization (Typ : Entity_Id) return Boolean;
     --  Determine whether type Typ is subject to pragma No_Heap_Finalization
--- 2763,2771 ----
     --  inline this procedural form, but not the functional form above.
  
     function No_Caching_Enabled (Id : Entity_Id) return Boolean;
!    --  Given any entity Id, determine whether Id is subject to volatility
!    --  property No_Caching and if it is, the related expression evaluates
!    --  to True.
  
     function No_Heap_Finalization (Typ : Entity_Id) return Boolean;
     --  Determine whether type Typ is subject to pragma No_Heap_Finalization
*************** package Sem_Util is
*** 2847,2853 ****
     --  This routine is called if the sub-expression N maybe the target of
     --  an assignment (e.g. it is the left side of an assignment, used as
     --  an out parameters, or used as prefixes of access attributes). It
!    --  sets May_Be_Modified in the associated entity if there is one,
     --  taking into account the rule that in the case of renamed objects,
     --  it is the flag in the renamed object that must be set.
     --
--- 2783,2789 ----
     --  This routine is called if the sub-expression N maybe the target of
     --  an assignment (e.g. it is the left side of an assignment, used as
     --  an out parameters, or used as prefixes of access attributes). It
!    --  sets Never_Set_In_Source in the associated entity if there is one,
     --  taking into account the rule that in the case of renamed objects,
     --  it is the flag in the renamed object that must be set.
     --
*************** package Sem_Util is
*** 2921,2926 ****
--- 2857,2882 ----
     --  Typ, taking into account Predicates_Ignored and
     --  Predicate_Checks_Suppressed.
  
+    function Predicate_Failure_Expression
+     (Typ : Entity_Id; Inherited_OK : Boolean) return Node_Id;
+    --  If the given type or subtype is subject to a Predicate_Failure
+    --  aspect specification, then returns the specified expression.
+    --  Otherwise, if Inherited_OK is False then returns Empty.
+    --  Otherwise, if Typ denotes a subtype or a derived type then
+    --  returns the result of recursing on the ancestor subtype.
+    --  Otherwise, returns Empty.
+ 
+    function Predicate_Function_Needs_Membership_Parameter (Typ : Entity_Id)
+      return Boolean is
+      (Present (Predicate_Failure_Expression (Typ, Inherited_OK => True)));
+    --  The predicate function for some, but not all, subtypes needs to
+    --  know whether the predicate is being evaluated as part of a membership
+    --  test. The predicate function for such a subtype takes an additional
+    --  boolean to convey this information. This function returns True if this
+    --  additional parameter is needed. More specifically, this function
+    --  returns true if the Predicate_Failure aspect is specified for the
+    --  given subtype or for any of its "ancestor" subtypes.
+ 
     function Predicate_Tests_On_Arguments (Subp : Entity_Id) return Boolean;
     --  Subp is the entity for a subprogram call. This function returns True if
     --  predicate tests are required for the arguments in this call (this is the
*************** package Sem_Util is
*** 3020,3035 ****
  
     function Rep_To_Pos_Flag (E : Entity_Id; Loc : Source_Ptr) return Node_Id;
     --  This is used to construct the second argument in a call to Rep_To_Pos
!    --  which is Standard_True if range checks are enabled (E is an entity to
!    --  which the Range_Checks_Suppressed test is applied), and Standard_False
!    --  if range checks are suppressed. Loc is the location for the node that
!    --  is returned (which is a New_Occurrence of the appropriate entity).
     --
!    --  Note: one might think that it would be fine to always use True and
!    --  to ignore the suppress in this case, but it is generally better to
!    --  believe a request to suppress exceptions if possible, and further
!    --  more there is at least one case in the generated code (the code for
!    --  array assignment in a loop) that depends on this suppression.
  
     procedure Require_Entity (N : Node_Id);
     --  N is a node which should have an entity value if it is an entity name.
--- 2976,2991 ----
  
     function Rep_To_Pos_Flag (E : Entity_Id; Loc : Source_Ptr) return Node_Id;
     --  This is used to construct the second argument in a call to Rep_To_Pos
!    --  which is True if range checks are enabled (E is an entity to which the
!    --  Range_Checks_Suppressed test is applied), and False if range checks are
!    --  suppressed. Loc is the location for the node that is returned (which is
!    --  a New_Occurrence of the appropriate entity).
     --
!    --  Note: one might think that it would be fine to always use True and to
!    --  ignore the suppress in this case, but there is at least one case in the
!    --  generated code (the code for array assignment in a loop) that depends on
!    --  this suppression. Anyway, it is generally better to believe a request to
!    --  suppress exceptions if possible.
  
     procedure Require_Entity (N : Node_Id);
     --  N is a node which should have an entity value if it is an entity name.
*************** package Sem_Util is
*** 3038,3051 ****
     --  This is used as a defense mechanism against ill-formed trees caused by
     --  previous errors (particularly in -gnatq mode).
  
!    function Requires_Transient_Scope (Id : Entity_Id) return Boolean;
!    --  Id is a type entity. The result is True when temporaries of this type
!    --  need to be wrapped in a transient scope to be reclaimed properly when a
!    --  secondary stack is in use. Examples of types requiring such wrapping are
!    --  controlled types and variable-sized types including unconstrained
!    --  arrays.
! 
!    --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
     procedure Reset_Analyzed_Flags (N : Node_Id);
     --  Reset the Analyzed flags in all nodes of the tree whose root is N
--- 2994,3006 ----
     --  This is used as a defense mechanism against ill-formed trees caused by
     --  previous errors (particularly in -gnatq mode).
  
!    function Requires_Transient_Scope (Typ : Entity_Id) return Boolean;
!    pragma Inline (Requires_Transient_Scope);
!    --  Return true if temporaries of Typ need to be wrapped in a transient
!    --  scope, either because they are allocated on the secondary stack or
!    --  finalization actions must be generated before the next instruction.
!    --  Examples of types requiring such wrapping are variable-sized types,
!    --  including unconstrained arrays, and controlled types.
  
     procedure Reset_Analyzed_Flags (N : Node_Id);
     --  Reset the Analyzed flags in all nodes of the tree whose root is N
*************** package Sem_Util is
*** 3141,3148 ****
     --  associated name (i.e. the Node_Id associated with its name).
  
     procedure Set_Debug_Info_Defining_Id (N : Node_Id);
!    --  Call Set_Debug_Info_Needed on Defining_Identifier (N) if it comes
!    --  from source.
  
     procedure Set_Debug_Info_Needed (T : Entity_Id);
     --  Sets the Debug_Info_Needed flag on entity T , and also on any entities
--- 3096,3103 ----
     --  associated name (i.e. the Node_Id associated with its name).
  
     procedure Set_Debug_Info_Defining_Id (N : Node_Id);
!    --  Call Set_Debug_Info_Needed on Defining_Identifier (N) if it comes from
!    --  source or we are in -gnatD mode, where we are debugging generated code.
  
     procedure Set_Debug_Info_Needed (T : Entity_Id);
     --  Sets the Debug_Info_Needed flag on entity T , and also on any entities
*************** package Sem_Util is
*** 3156,3164 ****
     --  This procedure has the same calling sequence as Set_Entity, but it
     --  performs additional checks as follows:
     --
!    --    If Style_Check is set, then it calls a style checking routine which
!    --    can check identifier spelling style. This procedure also takes care
!    --    of checking the restriction No_Implementation_Identifiers.
     --
     --    If restriction No_Abort_Statements is set, then it checks that the
     --    entity is not Ada.Task_Identification.Abort_Task.
--- 3111,3118 ----
     --  This procedure has the same calling sequence as Set_Entity, but it
     --  performs additional checks as follows:
     --
!    --    If Style_Check is set, then it calls a style checking routine that
!    --    can check identifier spelling style.
     --
     --    If restriction No_Abort_Statements is set, then it checks that the
     --    entity is not Ada.Task_Identification.Abort_Task.
*************** package Sem_Util is
*** 3277,3285 ****
     --  Determine whether node N is a loop statement subject to at least one
     --  'Loop_Entry attribute.
  
-    function Subprogram_Access_Level (Subp : Entity_Id) return Uint;
-    --  Return the accessibility level of the view denoted by Subp
- 
     function Support_Atomic_Primitives (Typ : Entity_Id) return Boolean;
     --  Return True if Typ supports the GCC built-in atomic operations (i.e. if
     --  Typ is properly sized and aligned).
--- 3231,3236 ----
*************** package Sem_Util is
*** 3310,3328 ****
     --  returned, i.e. Traverse_More_Func is called and the result is simply
     --  discarded.
  
-    function Type_Access_Level
-      (Typ             : Entity_Id;
-       Allow_Alt_Model : Boolean   := True;
-       Assoc_Ent       : Entity_Id := Empty) return Uint;
-    --  Return the accessibility level of Typ
- 
-    --  The Allow_Alt_Model parameter allows the alternative level calculation
-    --  under the restriction No_Dynamic_Accessibility_Checks to be performed.
- 
-    --  Assoc_Ent allows for the optional specification of the entity associated
-    --  with Typ. This gets utilized mostly for anonymous access type
-    --  processing, where context matters in interpreting Typ's level.
- 
     function Type_Without_Stream_Operation
       (T  : Entity_Id;
        Op : TSS_Name_Type := TSS_Null) return Entity_Id;
--- 3261,3266 ----
*************** package Sem_Util is
*** 3420,3425 ****
--- 3358,3375 ----
     function Within_Scope (E : Entity_Id; S : Entity_Id) return Boolean;
     --  Returns True if entity E is declared within scope S
  
+    procedure Warn_On_Hiding_Entity
+      (N               : Node_Id;
+       Hidden, Visible : Entity_Id;
+       On_Use_Clause   : Boolean);
+    --  Warn on hiding of an entity, either because a new declaration hides
+    --  an entity directly visible or potentially visible through a use_clause
+    --  (On_Use_Clause = False), or because the entity would be potentially
+    --  visible through a use_clause if it was now hidden by a visible
+    --  declaration (On_Use_Clause = True). N is the node on which the warning
+    --  is potentially issued: it is the visible entity in the former case, and
+    --  the use_clause in the latter case.
+ 
     procedure Wrong_Type (Expr : Node_Id; Expected_Type : Entity_Id);
     --  Output error message for incorrectly typed expression. Expr is the node
     --  for the incorrectly typed construct (Etype (Expr) is the type found),
*************** package Sem_Util is
*** 3583,3650 ****
        --  for the Storage_Model feature. These functions provide an interface
        --  that the compiler (in particular back-end phases such as gigi and
        --  GNAT-LLVM) can use to easily obtain entities and operations that
!       --  are specified for types in the aspects Storage_Model_Type and
        --  Designated_Storage_Model.
  
!       function Get_Storage_Model_Type_Entity
!         (Typ : Entity_Id;
!          Nam : Name_Id) return Entity_Id;
!       --  Given type Typ with aspect Storage_Model_Type, returns the Entity_Id
!       --  corresponding to the entity associated with Nam in the aspect. If the
!       --  type does not specify the aspect, or such an entity is not present,
!       --  then returns Empty. (Note: This function is modeled on function
!       --  Get_Iterable_Type_Primitive.)
  
        function Has_Designated_Storage_Model_Aspect
          (Typ : Entity_Id) return Boolean;
        --  Returns True iff Typ specifies aspect Designated_Storage_Model
  
!       function Has_Storage_Model_Type_Aspect (Typ : Entity_Id) return Boolean;
!       --  Returns True iff Typ specifies aspect Storage_Model_Type
  
        function Storage_Model_Object (Typ : Entity_Id) return Entity_Id;
!       --  Given an access type with aspect Designated_Storage_Model, returns
!       --  the storage-model object associated with that type; returns Empty
!       --  if there is no associated object.
  
        function Storage_Model_Type (Obj : Entity_Id) return Entity_Id;
        --  Given an object Obj of a type specifying aspect Storage_Model_Type,
!       --  returns that type; otherwise returns Empty.
  
!       function Storage_Model_Address_Type (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  the type specified for the Address_Type choice in that aspect;
!       --  returns Empty if the aspect or the type isn't specified.
  
!       function Storage_Model_Null_Address (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  constant specified for Null_Address choice in that aspect; returns
!       --  Empty if the aspect or the constant object isn't specified.
  
!       function Storage_Model_Allocate (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  procedure specified for the Allocate choice in that aspect; returns
!       --  Empty if the aspect or the procedure isn't specified.
  
!       function Storage_Model_Deallocate (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  procedure specified for the Deallocate choice in that aspect; returns
!       --  Empty if the aspect or the procedure isn't specified.
  
!       function Storage_Model_Copy_From (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  procedure specified for the Copy_From choice in that aspect; returns
!       --  Empty if the aspect or the procedure isn't specified.
  
!       function Storage_Model_Copy_To (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  procedure specified for the Copy_To choice in that aspect; returns
!       --  Empty if the aspect or the procedure isn't specified.
  
!       function Storage_Model_Storage_Size (Typ : Entity_Id) return Entity_Id;
!       --  Given a type Typ that specifies aspect Storage_Model_Type, returns
!       --  function specified for Storage_Size choice in that aspect; returns
!       --  Empty if the aspect or the procedure isn't specified.
  
     end Storage_Model_Support;
  
--- 3533,3625 ----
        --  for the Storage_Model feature. These functions provide an interface
        --  that the compiler (in particular back-end phases such as gigi and
        --  GNAT-LLVM) can use to easily obtain entities and operations that
!       --  are specified for types that have aspects Storage_Model_Type or
        --  Designated_Storage_Model.
  
!       function Has_Storage_Model_Type_Aspect (Typ : Entity_Id) return Boolean;
!       --  Returns True iff Typ specifies aspect Storage_Model_Type
! 
!       --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
        function Has_Designated_Storage_Model_Aspect
          (Typ : Entity_Id) return Boolean;
        --  Returns True iff Typ specifies aspect Designated_Storage_Model
  
!       --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
        function Storage_Model_Object (Typ : Entity_Id) return Entity_Id;
!       --  Given an access type Typ with aspect Designated_Storage_Model,
!       --  returns the storage-model object associated with that type.
!       --  The object Entity_Ids returned by this function can be passed
!       --  other functions declared in this interface to retrieve operations
!       --  associated with Storage_Model_Type aspect of the object's type.
! 
!       --  WARNING: There is a matching C declaration of this subprogram in fe.h
  
        function Storage_Model_Type (Obj : Entity_Id) return Entity_Id;
        --  Given an object Obj of a type specifying aspect Storage_Model_Type,
!       --  returns that type.
  
!       function Get_Storage_Model_Type_Entity
!         (SM_Obj_Or_Type : Entity_Id;
!          Nam            : Name_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, and Nam denoting the name of one of the argument kinds allowed
!       --  for that aspect, returns the Entity_Id corresponding to the entity
!       --  associated with Nam in the aspect. If an entity was not explicitly
!       --  specified for Nam, then returns Empty, except that in the defaulted
!       --  Address_Type case, System.Address will be returned, and in the
!       --  defaulted Null_Address case, System.Null_Address will be returned.
!       --  (Note: This function is modeled on Get_Iterable_Type_Primitive.)
  
!       function Storage_Model_Address_Type
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the type specified for the Address_Type choice in that
!       --  aspect; returns type System.Address if the address type was not
!       --  explicitly specified (indicating use of the native memory model).
  
!       function Storage_Model_Null_Address
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the constant specified for the Null_Address choice in
!       --  that aspect; returns Empty if the constant object isn't specified,
!       --  unless the native memory model is in use (System.Address), in which
!       --  case it returns System.Null_Address.
  
!       function Storage_Model_Allocate
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the procedure specified for the Allocate choice in that
!       --  aspect; returns Empty if the procedure isn't specified.
  
!       function Storage_Model_Deallocate
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the procedure specified for the Deallocate choice in
!       --  that aspect; returns Empty if the procedure isn't specified.
  
!       function Storage_Model_Copy_From
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the procedure specified for the Copy_From choice in
!       --  that aspect; returns Empty if the procedure isn't specified.
  
!       --  WARNING: There is a matching C declaration of this subprogram in fe.h
! 
!       function Storage_Model_Copy_To
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the procedure specified for the Copy_To choice in that
!       --  aspect; returns Empty if the procedure isn't specified.
! 
!       --  WARNING: There is a matching C declaration of this subprogram in fe.h
! 
!       function Storage_Model_Storage_Size
!         (SM_Obj_Or_Type : Entity_Id) return Entity_Id;
!       --  Given a type with aspect Storage_Model_Type or an object of such a
!       --  type, returns the function specified for the Storage_Size choice in
!       --  that aspect; returns Empty if the procedure isn't specified.
  
     end Storage_Model_Support;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_warn.adb gcc-13.1.0/gcc/ada/sem_warn.adb
*** gcc-12.2.0/gcc/ada/sem_warn.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_warn.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Accessibility;  use Accessibility;
  with Atree;          use Atree;
  with Debug;          use Debug;
  with Einfo;          use Einfo;
*************** with Einfo.Utils;    use Einfo.Utils;
*** 31,37 ****
  with Errout;         use Errout;
  with Exp_Code;       use Exp_Code;
  with Lib;            use Lib;
- with Lib.Xref;       use Lib.Xref;
  with Namet;          use Namet;
  with Nlists;         use Nlists;
  with Opt;            use Opt;
--- 32,37 ----
*************** with Stand;          use Stand;
*** 52,57 ****
--- 52,58 ----
  with Stringt;        use Stringt;
  with Tbuild;         use Tbuild;
  with Uintp;          use Uintp;
+ with Warnsw;         use Warnsw;
  
  package body Sem_Warn is
  
*************** package body Sem_Warn is
*** 284,298 ****
  
        procedure Find_Var (N : Node_Id) is
        begin
!          --  Condition is a direct variable reference
  
           if Is_Entity_Name (N) then
              Ref := N;
              Var := Entity (Ref);
  
!          --  Case of condition is a comparison with compile time known value
  
!          elsif Nkind (N) in N_Op_Compare then
              if Compile_Time_Known_Value (Right_Opnd (N)) then
                 Find_Var (Left_Opnd (N));
  
--- 285,299 ----
  
        procedure Find_Var (N : Node_Id) is
        begin
!          --  Expression is a direct variable reference
  
           if Is_Entity_Name (N) then
              Ref := N;
              Var := Entity (Ref);
  
!          --  If expression is an operator, check its operands
  
!          elsif Nkind (N) in N_Binary_Op then
              if Compile_Time_Known_Value (Right_Opnd (N)) then
                 Find_Var (Left_Opnd (N));
  
*************** package body Sem_Warn is
*** 305,313 ****
                 return;
              end if;
  
!          --  If condition is a negation, check its operand
  
!          elsif Nkind (N) = N_Op_Not then
              Find_Var (Right_Opnd (N));
  
           --  Case of condition is function call
--- 306,314 ----
                 return;
              end if;
  
!          --  If expression is a unary operator, check its operand
  
!          elsif Nkind (N) in N_Unary_Op then
              Find_Var (Right_Opnd (N));
  
           --  Case of condition is function call
*************** package body Sem_Warn is
*** 445,452 ****
        ---------------------------------
  
        function Is_Suspicious_Function_Name (E : Entity_Id) return Boolean is
-          S : Entity_Id;
- 
           function Substring_Present (S : String) return Boolean;
           --  Returns True if name buffer has given string delimited by non-
           --  alphabetic characters or by end of string. S is lower case.
--- 446,451 ----
*************** package body Sem_Warn is
*** 473,478 ****
--- 472,481 ----
              return False;
           end Substring_Present;
  
+          --  Local variables
+ 
+          S : Entity_Id;
+ 
        --  Start of processing for Is_Suspicious_Function_Name
  
        begin
*************** package body Sem_Warn is
*** 927,933 ****
           if not Is_Generic_Type (T) then
              null;
  
!          elsif (Nkind (Par)) = N_Private_Extension_Declaration then
  
              --  We only indicate the first such variable in the generic.
  
--- 930,936 ----
           if not Is_Generic_Type (T) then
              null;
  
!          elsif Nkind (Par) = N_Private_Extension_Declaration then
  
              --  We only indicate the first such variable in the generic.
  
*************** package body Sem_Warn is
*** 935,941 ****
                 Set_Uninitialized_Variable (Par, Ent);
              end if;
  
!          elsif (Nkind (Par)) = N_Formal_Type_Declaration
             and then Nkind (Formal_Type_Definition (Par)) =
                                           N_Formal_Private_Type_Definition
           then
--- 938,944 ----
                 Set_Uninitialized_Variable (Par, Ent);
              end if;
  
!          elsif Nkind (Par) = N_Formal_Type_Declaration
             and then Nkind (Formal_Type_Definition (Par)) =
                                           N_Formal_Private_Type_Definition
           then
*************** package body Sem_Warn is
*** 1130,1137 ****
     --  Start of processing for Check_References
  
     begin
-       Process_Deferred_References;
- 
        --  No messages if warnings are suppressed, or if we have detected any
        --  real errors so far (this last check avoids junk messages resulting
        --  from errors, e.g. a subunit that is not loaded).
--- 1133,1138 ----
*************** package body Sem_Warn is
*** 1152,1159 ****
  
        E1 := First_Entity (E);
        while Present (E1) loop
-          E1T := Etype (E1);
- 
           --  We are only interested in source entities. We also don't issue
           --  warnings within instances, since the proper place for such
           --  warnings is on the template when it is compiled, and we don't
--- 1153,1158 ----
*************** package body Sem_Warn is
*** 1162,1167 ****
--- 1161,1168 ----
           if Comes_From_Source (E1)
             and then Instantiation_Location (Sloc (E1)) = No_Location
           then
+             E1T := Etype (E1);
+ 
              --  We are interested in variables and out/in-out parameters, but
              --  we exclude protected types, too complicated to worry about.
  
*************** package body Sem_Warn is
*** 1222,1228 ****
                 elsif Warn_On_Constant
                   and then Ekind (E1) = E_Variable
                   and then Has_Initial_Value (E1)
!                  and then Never_Set_In_Source_Check_Spec (E1)
                   and then not Generic_Package_Spec_Entity (E1)
                 then
                    --  A special case, if this variable is volatile and not
--- 1223,1229 ----
                 elsif Warn_On_Constant
                   and then Ekind (E1) = E_Variable
                   and then Has_Initial_Value (E1)
!                  and then Never_Set_In_Source (E1)
                   and then not Generic_Package_Spec_Entity (E1)
                 then
                    --  A special case, if this variable is volatile and not
*************** package body Sem_Warn is
*** 1249,1282 ****
                    --  Here we give the warning if referenced and no pragma
                    --  Unreferenced or Unmodified is present.
  
!                   else
!                      --  Variable case
! 
!                      if Ekind (E1) = E_Variable then
!                         if Referenced_Check_Spec (E1)
!                           and then not Has_Pragma_Unreferenced_Check_Spec (E1)
!                           and then not Has_Pragma_Unmodified_Check_Spec (E1)
!                         then
!                            if not Warnings_Off_E1
!                              and then not Has_Junk_Name (E1)
!                            then
!                               Error_Msg_N -- CODEFIX
!                                 ("?k?& is not modified, "
!                                  & "could be declared constant!",
!                                  E1);
!                            end if;
!                         end if;
!                      end if;
                    end if;
  
                 --  Other cases of a variable or parameter never set in source
  
                 elsif Never_Set_In_Source_Check_Spec (E1)
  
-                  --  No warning if warning for this case turned off
- 
-                  and then Warn_On_No_Value_Assigned
- 
                   --  No warning if address taken somewhere
  
                   and then not Address_Taken (E1)
--- 1250,1270 ----
                    --  Here we give the warning if referenced and no pragma
                    --  Unreferenced or Unmodified is present.
  
!                   elsif Referenced (E1)
!                     and then not Has_Unreferenced (E1)
!                     and then not Has_Unmodified (E1)
!                     and then not Warnings_Off_E1
!                     and then not Has_Junk_Name (E1)
!                   then
!                      Error_Msg_N -- CODEFIX
!                        ("?k?& is not modified, could be declared constant!",
!                         E1);
                    end if;
  
                 --  Other cases of a variable or parameter never set in source
  
                 elsif Never_Set_In_Source_Check_Spec (E1)
  
                   --  No warning if address taken somewhere
  
                   and then not Address_Taken (E1)
*************** package body Sem_Warn is
*** 1382,1388 ****
                       --  force use of IN OUT, even if in this particular case
                       --  the formal is not modified.
  
!                      else
                          --  Suppress the warnings for a junk name
  
                          if not Has_Junk_Name (E1) then
--- 1370,1376 ----
                       --  force use of IN OUT, even if in this particular case
                       --  the formal is not modified.
  
!                      elsif Warn_On_No_Value_Assigned then
                          --  Suppress the warnings for a junk name
  
                          if not Has_Junk_Name (E1) then
*************** package body Sem_Warn is
*** 1398,1412 ****
                             if not Has_Pragma_Unmodified_Check_Spec (E1)
                               and then not Warnings_Off_E1
                               and then not Has_Junk_Name (E1)
                             then
                                Output_Reference_Error
!                                 ("?f?formal parameter& is read but "
                                   & "never assigned!");
                             end if;
  
                          elsif not Has_Pragma_Unreferenced_Check_Spec (E1)
                            and then not Warnings_Off_E1
                            and then not Has_Junk_Name (E1)
                          then
                             Output_Reference_Error
                               ("?f?formal parameter& is not referenced!");
--- 1386,1402 ----
                             if not Has_Pragma_Unmodified_Check_Spec (E1)
                               and then not Warnings_Off_E1
                               and then not Has_Junk_Name (E1)
+                              and then Warn_On_No_Value_Assigned
                             then
                                Output_Reference_Error
!                                 ("?v?formal parameter& is read but "
                                   & "never assigned!");
                             end if;
  
                          elsif not Has_Pragma_Unreferenced_Check_Spec (E1)
                            and then not Warnings_Off_E1
                            and then not Has_Junk_Name (E1)
+                           and then Check_Unreferenced_Formals
                          then
                             Output_Reference_Error
                               ("?f?formal parameter& is not referenced!");
*************** package body Sem_Warn is
*** 1417,1423 ****
  
                    else
                       if Referenced (E1) then
!                         if not Has_Unmodified (E1)
                            and then not Warnings_Off_E1
                            and then not Has_Junk_Name (E1)
                          then
--- 1407,1414 ----
  
                    else
                       if Referenced (E1) then
!                         if Warn_On_No_Value_Assigned
!                           and then not Has_Unmodified (E1)
                            and then not Warnings_Off_E1
                            and then not Has_Junk_Name (E1)
                          then
*************** package body Sem_Warn is
*** 1432,1443 ****
                             May_Need_Initialized_Actual (E1);
                          end if;
  
!                      elsif not Has_Unreferenced (E1)
                         and then not Warnings_Off_E1
                         and then not Has_Junk_Name (E1)
                       then
                          Output_Reference_Error -- CODEFIX
!                           ("?v?variable& is never read and never assigned!");
                       end if;
  
                       --  Deal with special case where this variable is hidden
--- 1423,1435 ----
                             May_Need_Initialized_Actual (E1);
                          end if;
  
!                      elsif Check_Unreferenced
!                        and then not Has_Unreferenced (E1)
                         and then not Warnings_Off_E1
                         and then not Has_Junk_Name (E1)
                       then
                          Output_Reference_Error -- CODEFIX
!                           ("?u?variable& is never read and never assigned!");
                       end if;
  
                       --  Deal with special case where this variable is hidden
*************** package body Sem_Warn is
*** 1446,1459 ****
                       if Ekind (E1) = E_Variable
                         and then Present (Hiding_Loop_Variable (E1))
                         and then not Warnings_Off_E1
                       then
                          Error_Msg_N
!                           ("?v?for loop implicitly declares loop variable!",
                             Hiding_Loop_Variable (E1));
  
                          Error_Msg_Sloc := Sloc (E1);
                          Error_Msg_N
!                           ("\?v?declaration hides & declared#!",
                             Hiding_Loop_Variable (E1));
                       end if;
                    end if;
--- 1438,1452 ----
                       if Ekind (E1) = E_Variable
                         and then Present (Hiding_Loop_Variable (E1))
                         and then not Warnings_Off_E1
+                        and then Warn_On_Hiding
                       then
                          Error_Msg_N
!                           ("?h?for loop implicitly declares loop variable!",
                             Hiding_Loop_Variable (E1));
  
                          Error_Msg_Sloc := Sloc (E1);
                          Error_Msg_N
!                           ("\?h?declaration hides & declared#!",
                             Hiding_Loop_Variable (E1));
                       end if;
                    end if;
*************** package body Sem_Warn is
*** 1469,1499 ****
                   and then not Known_To_Have_Preelab_Init (Etype (E1))
                 then
  
-                   --  For other than access type, go back to original node to
-                   --  deal with case where original unset reference has been
-                   --  rewritten during expansion.
- 
-                   --  In some cases, the original node may be a type
-                   --  conversion, a qualification or an attribute reference and
-                   --  in this case we want the object entity inside. Same for
-                   --  an expression with actions.
- 
-                   UR := Original_Node (UR);
-                   loop
-                      if Nkind (UR) in N_Expression_With_Actions
-                                     | N_Qualified_Expression
-                                     | N_Type_Conversion
-                      then
-                         UR := Expression (UR);
- 
-                      elsif Nkind (UR) = N_Attribute_Reference then
-                         UR := Prefix (UR);
- 
-                      else
-                         exit;
-                      end if;
-                   end loop;
- 
                    --  Don't issue warning if appearing inside Initial_Condition
                    --  pragma or aspect, since that expression is not evaluated
                    --  at the point where it occurs in the source.
--- 1462,1467 ----
*************** package body Sem_Warn is
*** 1648,1667 ****
                                 not Is_Package_Or_Generic_Package
                                       (Cunit_Entity (Current_Sem_Unit))))
  
-               --  Exclude instantiations, since there is no reason why every
-               --  entity in an instantiation should be referenced.
- 
-               and then Instantiation_Location (Sloc (E1)) = No_Location
- 
-               --  Exclude formal parameters from bodies if the corresponding
-               --  spec entity has been referenced in the case where there is
-               --  a separate spec.
- 
-               and then not (Is_Formal (E1)
-                              and then Ekind (Scope (E1)) = E_Subprogram_Body
-                              and then Present (Spec_Entity (E1))
-                              and then Referenced (Spec_Entity (E1)))
- 
                --  Consider private type referenced if full view is referenced.
                --  If there is not full view, this is a generic type on which
                --  warnings are also useful.
--- 1616,1621 ----
*************** package body Sem_Warn is
*** 1768,1774 ****
              elsif Is_Generic_Subprogram (E1)
                and then not Is_Instantiated (E1)
                and then not Publicly_Referenceable (E1)
-               and then Instantiation_Depth (Sloc (E1)) = 0
                and then Warn_On_Redundant_Constructs
              then
                 if not Warnings_Off_E1 and then not Has_Junk_Name (E1) then
--- 1722,1727 ----
*************** package body Sem_Warn is
*** 1882,1896 ****
           return;
        end if;
  
-       --  Nothing to do for numeric or string literal. Do this test early to
-       --  save time in a common case (it does not matter that we do not include
-       --  character literal here, since that will be caught later on in the
-       --  when others branch of the case statement).
- 
-       if Nkind (N) in N_Numeric_Or_String_Literal then
-          return;
-       end if;
- 
        --  Ignore reference unless it comes from source. Almost always if we
        --  have a reference from generated code, it is bogus (e.g. calls to init
        --  procs to set default discriminant values).
--- 1835,1840 ----
*************** package body Sem_Warn is
*** 1924,1930 ****
                   and then (No (Unset_Reference (E))
                              or else
                                Earlier_In_Extended_Unit
!                                 (Sloc (N), Sloc (Unset_Reference (E))))
                   and then not Has_Pragma_Unmodified_Check_Spec (E)
                   and then not Warnings_Off_Check_Spec (E)
                   and then not Has_Junk_Name (E)
--- 1868,1874 ----
                   and then (No (Unset_Reference (E))
                              or else
                                Earlier_In_Extended_Unit
!                                 (N, Unset_Reference (E)))
                   and then not Has_Pragma_Unmodified_Check_Spec (E)
                   and then not Warnings_Off_Check_Spec (E)
                   and then not Has_Junk_Name (E)
*************** package body Sem_Warn is
*** 2010,2021 ****
                                P := Parent (Nod);
  
                                if Nkind (P) = N_Pragma
!                                 and then Pragma_Name (P) =
!                                   Name_Test_Case
                                  and then Nod = Test_Case_Arg (P, Name_Ensures)
                                then
                                   return True;
                                end if;
                             end if;
  
                             Nod := Parent (Nod);
--- 1954,1969 ----
                                P := Parent (Nod);
  
                                if Nkind (P) = N_Pragma
!                                 and then Pragma_Name (P) = Name_Test_Case
                                  and then Nod = Test_Case_Arg (P, Name_Ensures)
                                then
                                   return True;
                                end if;
+ 
+                            --  Prevent the search from going too far
+ 
+                            elsif Is_Body_Or_Package_Declaration (Nod) then
+                               exit;
                             end if;
  
                             Nod := Parent (Nod);
*************** package body Sem_Warn is
*** 2244,2256 ****
                 Check_Unset_Reference (Pref);
              end;
  
!          --  For type conversions, qualifications, or expressions with actions,
!          --  examine the expression.
  
!          when N_Expression_With_Actions
!             | N_Qualified_Expression
!             | N_Type_Conversion
!          =>
              Check_Unset_Reference (Expression (N));
  
           --  For explicit dereference, always check prefix, which will generate
--- 2192,2202 ----
                 Check_Unset_Reference (Pref);
              end;
  
!          --  Type conversions can appear in assignment statements both
!          --  as variable names and as expressions. We examine their own
!          --  expressions only when processing their parent node.
  
!          when N_Type_Conversion =>
              Check_Unset_Reference (Expression (N));
  
           --  For explicit dereference, always check prefix, which will generate
*************** package body Sem_Warn is
*** 2762,2773 ****
     begin
        --  Immediate return if no semantics or warning flag not set
  
!       if not Opt.Check_Withs or else Operating_Mode = Check_Syntax then
           return;
        end if;
  
-       Process_Deferred_References;
- 
        --  Flag any unused with clauses. For a subunit, check only the units
        --  in its context, not those of the parent, which may be needed by other
        --  subunits. We will get the full warnings when we compile the parent,
--- 2708,2717 ----
     begin
        --  Immediate return if no semantics or warning flag not set
  
!       if not Check_Withs or else Operating_Mode = Check_Syntax then
           return;
        end if;
  
        --  Flag any unused with clauses. For a subunit, check only the units
        --  in its context, not those of the parent, which may be needed by other
        --  subunits. We will get the full warnings when we compile the parent,
*************** package body Sem_Warn is
*** 2876,2882 ****
          Match ("dummy")   or else
          Match ("ignore")  or else
          Match ("junk")    or else
!         Match ("unused");
     end Has_Junk_Name;
  
     --------------------------------------
--- 2820,2828 ----
          Match ("dummy")   or else
          Match ("ignore")  or else
          Match ("junk")    or else
!         Match ("unuse")   or else
!         Match ("tmp")     or else
!         Match ("temp");
     end Has_Junk_Name;
  
     --------------------------------------
*************** package body Sem_Warn is
*** 3004,3024 ****
  
     begin
        return Traverse (N) = Abandon;
- 
-    --  If any exception occurs, then something has gone wrong, and this is
-    --  only a minor aesthetic issue anyway, so just say we did not find what
-    --  we are looking for, rather than blow up.
- 
-    exception
-       when others =>
-          --  With debug flag K we will get an exception unless an error has
-          --  already occurred (useful for debugging).
- 
-          if Debug_Flag_K then
-             Check_Error_Detected;
-          end if;
- 
-          return False;
     end Operand_Has_Warnings_Suppressed;
  
     -----------------------------------------
--- 2950,2955 ----
*************** package body Sem_Warn is
*** 3027,3046 ****
  
     procedure Output_Non_Modified_In_Out_Warnings is
  
!       function No_Warn_On_In_Out (E : Entity_Id) return Boolean;
        --  Given a formal parameter entity E, determines if there is a reason to
        --  suppress IN OUT warnings (not modified, could be IN) for formals of
        --  the subprogram. We suppress these warnings if Warnings Off is set, or
        --  if we have seen the address of the subprogram being taken, or if the
        --  subprogram is used as a generic actual (in the latter cases the
        --  context may force use of IN OUT, even if the parameter is not
!       --  modified for this particular case.
  
!       -----------------------
!       -- No_Warn_On_In_Out --
!       -----------------------
  
!       function No_Warn_On_In_Out (E : Entity_Id) return Boolean is
           S  : constant Entity_Id := Scope (E);
           SE : constant Entity_Id := Spec_Entity (E);
  
--- 2958,2977 ----
  
     procedure Output_Non_Modified_In_Out_Warnings is
  
!       function Warn_On_In_Out (E : Entity_Id) return Boolean;
        --  Given a formal parameter entity E, determines if there is a reason to
        --  suppress IN OUT warnings (not modified, could be IN) for formals of
        --  the subprogram. We suppress these warnings if Warnings Off is set, or
        --  if we have seen the address of the subprogram being taken, or if the
        --  subprogram is used as a generic actual (in the latter cases the
        --  context may force use of IN OUT, even if the parameter is not
!       --  modified for this particular case).
  
!       --------------------
!       -- Warn_On_In_Out --
!       --------------------
  
!       function Warn_On_In_Out (E : Entity_Id) return Boolean is
           S  : constant Entity_Id := Scope (E);
           SE : constant Entity_Id := Spec_Entity (E);
  
*************** package body Sem_Warn is
*** 3051,3057 ****
           if Address_Taken (S)
             or else (Present (SE) and then Address_Taken (Scope (SE)))
           then
!             return True;
  
           --  Do not warn if used as a generic actual, since the generic may be
           --  what is forcing the use of an "unnecessary" IN OUT.
--- 2982,2988 ----
           if Address_Taken (S)
             or else (Present (SE) and then Address_Taken (Scope (SE)))
           then
!             return False;
  
           --  Do not warn if used as a generic actual, since the generic may be
           --  what is forcing the use of an "unnecessary" IN OUT.
*************** package body Sem_Warn is
*** 3059,3077 ****
           elsif Used_As_Generic_Actual (S)
             or else (Present (SE) and then Used_As_Generic_Actual (Scope (SE)))
           then
!             return True;
  
!          --  Else test warnings off
  
!          elsif Warnings_Off_Check_Spec (S) then
!             return True;
  
           --  All tests for suppressing warning failed
  
           else
!             return False;
           end if;
!       end No_Warn_On_In_Out;
  
     --  Start of processing for Output_Non_Modified_In_Out_Warnings
  
--- 2990,3008 ----
           elsif Used_As_Generic_Actual (S)
             or else (Present (SE) and then Used_As_Generic_Actual (Scope (SE)))
           then
!             return False;
  
!          --  Else test warnings off on the subprogram
  
!          elsif Warnings_Off (S) then
!             return False;
  
           --  All tests for suppressing warning failed
  
           else
!             return True;
           end if;
!       end Warn_On_In_Out;
  
     --  Start of processing for Output_Non_Modified_In_Out_Warnings
  
*************** package body Sem_Warn is
*** 3084,3099 ****
  
           begin
              --  Suppress warning in specific cases (see details in comments for
!             --  No_Warn_On_In_Out), or if there is a pragma Unmodified.
! 
!             if Has_Pragma_Unmodified_Check_Spec (E1)
!               or else No_Warn_On_In_Out (E1)
!             then
!                null;
! 
!             --  Here we generate the warning
  
!             else
                 --  If -gnatwk is set then output message that it could be IN
  
                 if not Is_Trivial_Subprogram (Scope (E1)) then
--- 3015,3023 ----
  
           begin
              --  Suppress warning in specific cases (see details in comments for
!             --  No_Warn_On_In_Out).
  
!             if Warn_On_In_Out (E1) then
                 --  If -gnatwk is set then output message that it could be IN
  
                 if not Is_Trivial_Subprogram (Scope (E1)) then
*************** package body Sem_Warn is
*** 3176,3182 ****
                ("?j?with of obsolescent procedure& declared#", N, E);
           else
              Error_Msg_NE
!               ("??with of obsolescent function& declared#", N, E);
           end if;
  
        --  If we do not have a with clause, then ignore any reference to an
--- 3100,3106 ----
                ("?j?with of obsolescent procedure& declared#", N, E);
           else
              Error_Msg_NE
!               ("?j?with of obsolescent function& declared#", N, E);
           end if;
  
        --  If we do not have a with clause, then ignore any reference to an
*************** package body Sem_Warn is
*** 3366,3371 ****
--- 3290,3333 ----
        Left  : constant Node_Id := Left_Opnd  (Op);
        Right : constant Node_Id := Right_Opnd (Op);
  
+       function Comes_From_Simple_Condition_In_Source
+         (Op : Node_Id) return Boolean;
+       --  Return True if Op comes from a simple condition present in the source
+ 
+       -------------------------------------------
+       -- Comes_From_Simple_Condition_In_Source --
+       -------------------------------------------
+ 
+       function Comes_From_Simple_Condition_In_Source
+         (Op : Node_Id) return Boolean
+       is
+          Orig_Op : constant Node_Id := Original_Node (Op);
+ 
+       begin
+          if not Comes_From_Source (Orig_Op) then
+             return False;
+          end if;
+ 
+          --  We do not want to give warnings on a membership test with a mark
+          --  for a subtype that is predicated, see also Exp_Ch4.Expand_N_In.
+ 
+          if Nkind (Orig_Op) = N_In then
+             declare
+                Orig_Rop : constant Node_Id :=
+                             Original_Node (Right_Opnd (Orig_Op));
+             begin
+                if Is_Entity_Name (Orig_Rop)
+                  and then Is_Type (Entity (Orig_Rop))
+                  and then Present (Predicate_Function (Entity (Orig_Rop)))
+                then
+                   return False;
+                end if;
+             end;
+          end if;
+ 
+          return True;
+       end Comes_From_Simple_Condition_In_Source;
+ 
        True_Result  : Boolean;
        False_Result : Boolean;
  
*************** package body Sem_Warn is
*** 3374,3380 ****
        --  scalar operands are valid.
  
        if Constant_Condition_Warnings
!         and then Comes_From_Source (Original_Node (Op))
          and then Is_Scalar_Type (Etype (Left))
          and then Is_Scalar_Type (Etype (Right))
  
--- 3336,3342 ----
        --  scalar operands are valid.
  
        if Constant_Condition_Warnings
!         and then Comes_From_Simple_Condition_In_Source (Op)
          and then Is_Scalar_Type (Etype (Left))
          and then Is_Scalar_Type (Etype (Right))
  
*************** package body Sem_Warn is
*** 3407,3415 ****
              False_Result => False_Result);
  
           --  Warn on a possible evaluation to False / True in the presence of
!          --  invalid values.
  
!          if True_Result then
              Error_Msg_N
                ("condition can only be False if invalid values present?c?", Op);
  
--- 3369,3382 ----
              False_Result => False_Result);
  
           --  Warn on a possible evaluation to False / True in the presence of
!          --  invalid values. But issue no warning for an assertion expression
!          --  (or a subexpression thereof); in particular, we don't want a
!          --  warning about an assertion that will always succeed.
  
!          if In_Assertion_Expression_Pragma (Op) then
!             null;
! 
!          elsif True_Result then
              Error_Msg_N
                ("condition can only be False if invalid values present?c?", Op);
  
*************** package body Sem_Warn is
*** 3437,3447 ****
        --  determined, and Test_Result is set True/False accordingly. Otherwise
        --  False is returned, and Test_Result is unchanged.
  
!       procedure Track (N : Node_Id; Loc : Node_Id);
        --  Adds continuation warning(s) pointing to reason (assignment or test)
        --  for the operand of the conditional having a known value (or at least
!       --  enough is known about the value to issue the warning). N is the node
!       --  which is judged to have a known value. Loc is the warning location.
  
        ---------------------
        -- Is_Known_Branch --
--- 3404,3413 ----
        --  determined, and Test_Result is set True/False accordingly. Otherwise
        --  False is returned, and Test_Result is unchanged.
  
!       procedure Track (N : Node_Id);
        --  Adds continuation warning(s) pointing to reason (assignment or test)
        --  for the operand of the conditional having a known value (or at least
!       --  enough is known about the value to issue the warning).
  
        ---------------------
        -- Is_Known_Branch --
*************** package body Sem_Warn is
*** 3475,3510 ****
        -- Track --
        -----------
  
!       procedure Track (N : Node_Id; Loc : Node_Id) is
!          Nod : constant Node_Id := Original_Node (N);
  
!       begin
!          if Nkind (Nod) in N_Op_Compare then
!             Track (Left_Opnd (Nod), Loc);
!             Track (Right_Opnd (Nod), Loc);
  
!          elsif Is_Entity_Name (Nod) and then Is_Object (Entity (Nod)) then
!             declare
!                CV : constant Node_Id := Current_Value (Entity (Nod));
  
!             begin
!                if Present (CV) then
!                   Error_Msg_Sloc := Sloc (CV);
  
!                   if Nkind (CV) not in N_Subexpr then
!                      Error_Msg_N ("\\??(see test #)", Loc);
  
!                   elsif Nkind (Parent (CV)) =
!                           N_Case_Statement_Alternative
!                   then
!                      Error_Msg_N ("\\??(see case alternative #)", Loc);
  
!                   else
!                      Error_Msg_N ("\\??(see assignment #)", Loc);
                    end if;
!                end if;
!             end;
!          end if;
        end Track;
  
        --  Local variables
--- 3441,3485 ----
        -- Track --
        -----------
  
!       procedure Track (N : Node_Id) is
  
!          procedure Rec (Sub_N : Node_Id);
!          --  Recursive helper to do the work of Track, so we can refer to N's
!          --  Sloc in error messages. Sub_N is initially N, and a proper subnode
!          --  when recursively walking comparison operations.
  
!          procedure Rec (Sub_N : Node_Id) is
!             Orig : constant Node_Id := Original_Node (Sub_N);
!          begin
!             if Nkind (Orig) in N_Op_Compare then
!                Rec (Left_Opnd (Orig));
!                Rec (Right_Opnd (Orig));
  
!             elsif Is_Entity_Name (Orig) and then Is_Object (Entity (Orig)) then
!                declare
!                   CV : constant Node_Id := Current_Value (Entity (Orig));
!                begin
!                   if Present (CV) then
!                      Error_Msg_Sloc := Sloc (CV);
  
!                      if Nkind (CV) not in N_Subexpr then
!                         Error_Msg_N ("\\??(see test #)", N);
  
!                      elsif Nkind (Parent (CV)) =
!                              N_Case_Statement_Alternative
!                      then
!                         Error_Msg_N ("\\??(see case alternative #)", N);
  
!                      else
!                         Error_Msg_N ("\\??(see assignment #)", N);
!                      end if;
                    end if;
!                end;
!             end if;
!          end Rec;
! 
!       begin
!          Rec (N);
        end Track;
  
        --  Local variables
*************** package body Sem_Warn is
*** 3522,3532 ****
          and then Is_Known_Branch
        then
           declare
!             Atrue : Boolean;
! 
           begin
-             Atrue := Test_Result;
- 
              if Present (Parent (C)) and then Nkind (Parent (C)) = N_Op_Not then
                 Atrue := not Atrue;
              end if;
--- 3497,3504 ----
          and then Is_Known_Branch
        then
           declare
!             Atrue : Boolean := Test_Result;
           begin
              if Present (Parent (C)) and then Nkind (Parent (C)) = N_Op_Not then
                 Atrue := not Atrue;
              end if;
*************** package body Sem_Warn is
*** 3608,3614 ****
              declare
                 True_Branch : Boolean := Test_Result;
                 Cond        : Node_Id := C;
- 
              begin
                 if Present (Parent (C))
                   and then Nkind (Parent (C)) = N_Op_Not
--- 3580,3585 ----
*************** package body Sem_Warn is
*** 3617,3653 ****
                    Cond := Parent (C);
                 end if;
  
!                --  Condition always True
! 
!                if True_Branch then
!                   if Is_Entity_Name (Original_Node (C))
!                     and then Nkind (Cond) /= N_Op_Not
!                   then
!                      Error_Msg_NE
!                        ("object & is always True at this point?c?",
!                         Cond, Original_Node (C));
!                      Track (Original_Node (C), Cond);
  
!                   else
!                      Error_Msg_N ("condition is always True?c?", Cond);
!                      Track (Cond, Cond);
!                   end if;
  
!                --  Condition always False
  
                 else
!                   if Is_Entity_Name (Original_Node (C))
!                     and then Nkind (Cond) /= N_Op_Not
!                   then
!                      Error_Msg_NE
!                        ("object & is always False at this point?c?",
!                         Cond, Original_Node (C));
!                      Track (Original_Node (C), Cond);
! 
                    else
                       Error_Msg_N ("condition is always False?c?", Cond);
-                      Track (Cond, Cond);
                    end if;
                 end if;
              end;
           end if;
--- 3588,3614 ----
                    Cond := Parent (C);
                 end if;
  
!                --  Suppress warning if this is True/False of a derived boolean
!                --  type with Nonzero_Is_True, which gets rewritten as Boolean
!                --  True/False.
  
!                if Is_Entity_Name (Original_Node (C))
!                  and then Ekind (Entity (Original_Node (C)))
!                                  = E_Enumeration_Literal
!                  and then Nonzero_Is_True (Etype (Original_Node (C)))
!                then
!                   null;
  
!                --  Give warning for nontrivial always True/False case
  
                 else
!                   if True_Branch then
!                      Error_Msg_N ("condition is always True?c?", Cond);
                    else
                       Error_Msg_N ("condition is always False?c?", Cond);
                    end if;
+ 
+                   Track (Cond);
                 end if;
              end;
           end if;
*************** package body Sem_Warn is
*** 4283,4289 ****
           if Ekind (Form) = E_Out_Parameter
             and then Never_Set_In_Source_Check_Spec (Form)
             and then Is_Scalar_Type (Etype (Form))
!            and then not Present (Unset_Reference (Form))
           then
              --  Here all conditions are met, record possible unset reference
  
--- 4244,4250 ----
           if Ekind (Form) = E_Out_Parameter
             and then Never_Set_In_Source_Check_Spec (Form)
             and then Is_Scalar_Type (Etype (Form))
!            and then No (Unset_Reference (Form))
           then
              --  Here all conditions are met, record possible unset reference
  
*************** package body Sem_Warn is
*** 4420,4428 ****
  
                          if (No (S) or else not Is_Dispatching_Operation (S))
                            and then not Is_Trivial_Subprogram (Scope (E))
                          then
                             Error_Msg_NE -- CODEFIX
!                              ("?u?formal parameter & is not referenced!",
                                E, Spec_E);
                          end if;
                       end;
--- 4381,4390 ----
  
                          if (No (S) or else not Is_Dispatching_Operation (S))
                            and then not Is_Trivial_Subprogram (Scope (E))
+                           and then Check_Unreferenced_Formals
                          then
                             Error_Msg_NE -- CODEFIX
!                              ("?f?formal parameter & is not referenced!",
                                E, Spec_E);
                          end if;
                       end;
*************** package body Sem_Warn is
*** 4602,4608 ****
                          then
                             if Warn_On_All_Unread_Out_Parameters then
                                Error_Msg_NE
!                                 ("?m?& modified by call, but value might not "
                                   & "be referenced", LA, Ent);
                             end if;
                          else
--- 4564,4570 ----
                          then
                             if Warn_On_All_Unread_Out_Parameters then
                                Error_Msg_NE
!                                 ("?.o?& modified by call, but value might not "
                                   & "be referenced", LA, Ent);
                             end if;
                          else
*************** package body Sem_Warn is
*** 4705,4712 ****
        Ent : Entity_Id;
  
     begin
-       Process_Deferred_References;
- 
        if Warn_On_Modified_Unread
          and then In_Extended_Main_Source_Unit (E)
        then
--- 4667,4672 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sem_warn.ads gcc-13.1.0/gcc/ada/sem_warn.ads
*** gcc-12.2.0/gcc/ada/sem_warn.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sem_warn.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sem_Warn is
*** 86,100 ****
     --  N is the node for an expression which occurs in a reference position,
     --  e.g. as the right side of an assignment. This procedure checks to see
     --  if the node is a reference to a variable entity where the entity has
!    --  Not_Assigned set. If so, the Unset_Reference field is set if it is not
!    --  the first occurrence. No warning is posted, instead warnings will be
!    --  posted later by Check_References. The reason we do things that
!    --  way is that if there are no assignments anywhere, we prefer to flag
!    --  the entity, rather than a reference to it. Note that for the purposes
!    --  of this routine, a type conversion or qualified expression whose
!    --  expression is an entity is also processed. The reason that we do not
!    --  process these at the point of occurrence is that both these constructs
!    --  can occur in non-reference positions (e.g. as out parameters).
  
     procedure Check_Unused_Withs (Spec_Unit : Unit_Number_Type := No_Unit);
     --  This routine performs two kinds of checks. It checks that all with'ed
--- 86,100 ----
     --  N is the node for an expression which occurs in a reference position,
     --  e.g. as the right side of an assignment. This procedure checks to see
     --  if the node is a reference to a variable entity where the entity has
!    --  Never_Set_In_Source set. If so, the Unset_Reference field is set if it
!    --  is not the first occurrence. No warning is posted, instead warnings will
!    --  be posted later by Check_References. The reason we do things that way is
!    --  that if there are no assignments anywhere, we prefer to flag the entity,
!    --  rather than a reference to it. Note that for the purposes of this
!    --  routine, a type conversion or qualified expression whose expression is
!    --  an entity is also processed. The reason that we do not process these
!    --  at the point of occurrence is that both these constructs can occur in
!    --  non-reference positions (e.g. as out parameters).
  
     procedure Check_Unused_Withs (Spec_Unit : Unit_Number_Type := No_Unit);
     --  This routine performs two kinds of checks. It checks that all with'ed
*************** package Sem_Warn is
*** 257,268 ****
     ----------------------
  
     function Has_Junk_Name (E : Entity_Id) return Boolean;
!    --  Return True if the entity name contains any of the following substrings:
!    --    discard
!    --    dummy
!    --    ignore
!    --    junk
!    --    unused
     --  Used to suppress warnings on names matching these patterns. The contents
     --  of Name_Buffer and Name_Len are destroyed by this call.
  
--- 257,265 ----
     ----------------------
  
     function Has_Junk_Name (E : Entity_Id) return Boolean;
!    --  Return True if the entity name contains substrings like "junk" or
!    --  "dummy" (see the body for the complete list).
!    --
     --  Used to suppress warnings on names matching these patterns. The contents
     --  of Name_Buffer and Name_Len are destroyed by this call.
  
diff -Nrcpad gcc-12.2.0/gcc/ada/set_targ.adb gcc-13.1.0/gcc/ada/set_targ.adb
*** gcc-12.2.0/gcc/ada/set_targ.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/set_targ.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with Output;   use Output;
*** 31,37 ****
  with System;        use System;
  with System.OS_Lib; use System.OS_Lib;
  
! with Unchecked_Conversion;
  
  package body Set_Targ is
  
--- 31,37 ----
  with System;        use System;
  with System.OS_Lib; use System.OS_Lib;
  
! with Ada.Unchecked_Conversion;
  
  package body Set_Targ is
  
*************** package body Set_Targ is
*** 404,410 ****
        --  Pointer to Nat or Pos value (it is harmless to treat Pos values and
        --  Nat values as Natural via Unchecked_Conversion).
  
!       function To_ANat is new Unchecked_Conversion (Address, ANat);
  
        procedure AddC (C : Character);
        --  Add one character to buffer
--- 404,410 ----
        --  Pointer to Nat or Pos value (it is harmless to treat Pos values and
        --  Nat values as Natural via Unchecked_Conversion).
  
!       function To_ANat is new Ada.Unchecked_Conversion (Address, ANat);
  
        procedure AddC (C : Character);
        --  Add one character to buffer
*************** package body Set_Targ is
*** 566,572 ****
        --  Pointer to Nat or Pos value (it is harmless to treat Pos values
        --  as Nat via Unchecked_Conversion).
  
!       function To_ANat is new Unchecked_Conversion (Address, ANat);
  
        VP : ANat;
  
--- 566,572 ----
        --  Pointer to Nat or Pos value (it is harmless to treat Pos values
        --  as Nat via Unchecked_Conversion).
  
!       function To_ANat is new Ada.Unchecked_Conversion (Address, ANat);
  
        VP : ANat;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/set_targ.ads gcc-13.1.0/gcc/ada/set_targ.ads
*** gcc-12.2.0/gcc/ada/set_targ.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/set_targ.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2013-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sfn_scan.adb gcc-13.1.0/gcc/ada/sfn_scan.adb
*** gcc-12.2.0/gcc/ada/sfn_scan.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sfn_scan.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body SFN_Scan is
*** 583,588 ****
--- 583,589 ----
  
           else
              Skip_Loop : loop
+                Skip_WS;
                 exit Main_Scan_Loop when At_EOF;
                 exit Skip_Loop when S (P) = ';';
  
*************** package body SFN_Scan is
*** 622,628 ****
           Q := '%';
        else
           Error ("bad string");
-          Q := '"';
        end if;
  
        --  Scan out the string, B points to first char
--- 623,628 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/sfn_scan.ads gcc-13.1.0/gcc/ada/sfn_scan.ads
*** gcc-12.2.0/gcc/ada/sfn_scan.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sfn_scan.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2000-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp-arm-qnx.c gcc-13.1.0/gcc/ada/sigtramp-arm-qnx.c
*** gcc-12.2.0/gcc/ada/sigtramp-arm-qnx.c	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/ada/sigtramp-arm-qnx.c	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,148 ----
+ /****************************************************************************
+  *                                                                          *
+  *                         GNAT COMPILER COMPONENTS                         *
+  *                                                                          *
+  *                             S I G T R A M P                              *
+  *                                                                          *
+  *                         Asm Implementation File                          *
+  *                                                                          *
+  *         Copyright (C) 2011-2023, Free Software Foundation, Inc.          *
+  *                                                                          *
+  * GNAT is free software;  you can  redistribute it  and/or modify it under *
+  * terms of the  GNU General Public License as published  by the Free Soft- *
+  * ware  Foundation;  either version 3,  or (at your option) any later ver- *
+  * sion.  GNAT is distributed in the hope that it will be useful, but WITH- *
+  * OUT ANY WARRANTY;  without even the  implied warranty of MERCHANTABILITY *
+  * or FITNESS FOR A PARTICULAR PURPOSE.                                     *
+  *                                                                          *
+  * As a special exception 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.               *
+  *                                                                          *
+  * In particular,  you can freely  distribute your programs  built with the *
+  * GNAT Pro compiler, including any required library run-time units,  using *
+  * any licensing terms  of your choosing.  See the AdaCore Software License *
+  * for full details.                                                        *
+  *                                                                          *
+  * GNAT was originally developed  by the GNAT team at  New York University. *
+  * Extensive contributions were provided by Ada Core Technologies Inc.      *
+  *                                                                          *
+  ****************************************************************************/
+ 
+ /**************************************************
+  * ARM-QNX version of the __gnat_sigtramp service *
+  **************************************************/
+ 
+ #include <signal.h>
+ #include <ucontext.h>
+ 
+ #include "sigtramp.h"
+ /* See sigtramp.h for a general explanation of functionality.  */
+ 
+ /* -------------------------------------------
+    -- Prototypes for our internal asm stubs --
+    -------------------------------------------
+ 
+    Eventhough our symbols will remain local, the prototype claims "extern"
+    and not "static" to prevent compiler complaints about a symbol used but
+    never defined.  */
+ 
+ /* sigtramp stub providing ARM unwinding info for common registers.  */
+ 
+ extern void __gnat_sigtramp_common
+ (int signo, void *siginfo, void *sigcontext,
+  __sigtramphandler_t * handler, void * sc_pregs);
+ 
+ /* -------------------------------------
+    -- Common interface implementation --
+    -------------------------------------
+ 
+    We enforce optimization to minimize the overhead of the extra layer.  */
+ 
+ void __gnat_sigtramp (int signo, void *si, void *sc,
+ 		      __sigtramphandler_t * handler)
+      __attribute__((optimize(2)));
+ 
+ void __gnat_sigtramp (int signo, void *si, void *sc,
+ 		      __sigtramphandler_t * handler)
+ {
+   mcontext_t *mcontext = &((ucontext_t *) sc)->uc_mcontext;
+ 
+   /* Pass MCONTEXT in the fifth position so that the assembly code can find
+      it at the same stack location as SC_PREGS.  */
+   __gnat_sigtramp_common (signo, si, mcontext, handler, &mcontext->cpu);
+ }
+ 
+ /* asm string construction helpers.  */
+ 
+ #define STR(TEXT) #TEXT
+ /* stringify expanded TEXT, surrounding it with double quotes.  */
+ 
+ #define S(E) STR(E)
+ /* stringify E, which will resolve as text but may contain macros
+    still to be expanded.  */
+ 
+ /* asm (TEXT) outputs <tab>TEXT. These facilitate the output of
+    multiline contents:  */
+ #define TAB(S) "\t" S
+ #define CR(S)  S "\n"
+ 
+ #undef TCR
+ #define TCR(S) TAB(CR(S))
+ 
+ /* Trampoline body block
+    ---------------------  */
+ 
+ /* The 5 arguments passed to __gnat_sigtramp_common are located in:
+    - r0-r2: arguments to pass on to the actual handler
+    - r3: the actual handler
+    - sp: the address of the reg set to restore
+    All we have to do then is to instruct the unwinder to restore the registers
+    from the value in VSP. Unwinder instructions are executed backwards, so we
+    1- instruct to pop r2 from the VSP (.save {r2})
+    2- move the VSP to the address pointed to by r2 (.movsp r2)
+    3- restore all registers from there. (.save {r0-r15})
+    Once the unwinding instructions are set, we just need to call the handler
+    as r0-r2 are already properly set.
+ */
+ #define SIGTRAMP_BODY \
+ CR("") \
+ TCR(".save {r0-r15}") \
+ TCR(".movsp r2") \
+ TCR(".save {r2}") \
+ TCR("blx	r3") \
+ TCR("# No return here.")
+ 
+ /* Symbol definition block
+    -----------------------  */
+ 
+ #define SIGTRAMP_START(SYM) \
+ CR("# " S(SYM) " unwind trampoline") \
+ TCR(".type " S(SYM) ", %function") \
+ CR("") \
+ CR(S(SYM) ":") \
+ TCR(".fnstart")
+ 
+ /* Symbol termination block
+    ------------------------  */
+ 
+ #define SIGTRAMP_END(SYM) \
+ CR(".fnend") \
+ TCR(".size " S(SYM) ", .-" S(SYM))
+ 
+ /*----------------------------
+   -- And now, the real code --
+   ---------------------------- */
+ 
+ /* Text section start.  The compiler isn't aware of that switch.  */
+ 
+ asm (".text\n"
+      TCR(".align 2"));
+ 
+ /* sigtramp stub for common registers.  */
+ 
+ #define TRAMP_COMMON __gnat_sigtramp_common
+ 
+ asm (SIGTRAMP_START(TRAMP_COMMON));
+ asm (SIGTRAMP_BODY);
+ asm (SIGTRAMP_END(TRAMP_COMMON));
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp-armdroid.c gcc-13.1.0/gcc/ada/sigtramp-armdroid.c
*** gcc-12.2.0/gcc/ada/sigtramp-armdroid.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sigtramp-armdroid.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp-ios.c gcc-13.1.0/gcc/ada/sigtramp-ios.c
*** gcc-12.2.0/gcc/ada/sigtramp-ios.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sigtramp-ios.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2015-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp-qnx.c gcc-13.1.0/gcc/ada/sigtramp-qnx.c
*** gcc-12.2.0/gcc/ada/sigtramp-qnx.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sigtramp-qnx.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2017-2022, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *           Copyright (C) 2017-2023, Free Software Foundation, Inc.        *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** void __gnat_sigtramp (int signo, void *s
*** 49,55 ****
  void __gnat_sigtramp (int signo, void *si, void *ucontext,
                        __sigtramphandler_t * handler)
  {
!   struct sigcontext *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
  
    __gnat_sigtramp_common (signo, si, mcontext, handler);
  }
--- 49,55 ----
  void __gnat_sigtramp (int signo, void *si, void *ucontext,
                        __sigtramphandler_t * handler)
  {
!   mcontext_t *mcontext = &((ucontext_t *) ucontext)->uc_mcontext;
  
    __gnat_sigtramp_common (signo, si, mcontext, handler);
  }
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp-vxworks-target.h gcc-13.1.0/gcc/ada/sigtramp-vxworks-target.h
*** gcc-12.2.0/gcc/ada/sigtramp-vxworks-target.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sigtramp-vxworks-target.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                     Asm Implementation Include File                      *
   *                                                                          *
!  *         Copyright (C) 2011-2022, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                     Asm Implementation Include File                      *
   *                                                                          *
!  *         Copyright (C) 2011-2023, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 149,155 ****
  
     In general:
     There is no unique numbering for the x86 architecture.  It's parameterized
!    by DWARF_FRAME_REGNUM, which is DBX_REGISTER_NUMBER except for Windows, and
     the latter depends on the platform.
  */
  
--- 149,155 ----
  
     In general:
     There is no unique numbering for the x86 architecture.  It's parameterized
!    by DWARF_FRAME_REGNUM, which is DEBUGGER_REGNO except for Windows, and
     the latter depends on the platform.
  */
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp-vxworks.c gcc-13.1.0/gcc/ada/sigtramp-vxworks.c
*** gcc-12.2.0/gcc/ada/sigtramp-vxworks.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sigtramp-vxworks.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *         Copyright (C) 2011-2022, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                         Asm Implementation File                          *
   *                                                                          *
!  *         Copyright (C) 2011-2023, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
***************
*** 49,63 ****
  
  typedef struct mcontext
    {
!     REG_SET     regs;
    } mcontext_t;
  
  typedef struct ucontext
    {
!     mcontext_t          uc_mcontext;    /* register set */
!     struct ucontext *   uc_link;        /* not used */
!     sigset_t            uc_sigmask;     /* set of signals blocked */
!     stack_t             uc_stack;       /* stack of context signaled */
    } ucontext_t;
  #endif
  
--- 49,63 ----
  
  typedef struct mcontext
    {
!     REG_SET regs;
    } mcontext_t;
  
  typedef struct ucontext
    {
!     mcontext_t        uc_mcontext;    /* register set */
!     struct ucontext * uc_link;        /* not used */
!     sigset_t          uc_sigmask;     /* set of signals blocked */
!     stack_t           uc_stack;       /* stack of context signaled */
    } ucontext_t;
  #endif
  
diff -Nrcpad gcc-12.2.0/gcc/ada/sigtramp.h gcc-13.1.0/gcc/ada/sigtramp.h
*** gcc-12.2.0/gcc/ada/sigtramp.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sigtramp.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2011-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 2011-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/sinfo-cn.adb gcc-13.1.0/gcc/ada/sinfo-cn.adb
*** gcc-12.2.0/gcc/ada/sinfo-cn.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinfo-cn.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinfo-cn.ads gcc-13.1.0/gcc/ada/sinfo-cn.ads
*** gcc-12.2.0/gcc/ada/sinfo-cn.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinfo-cn.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinfo-utils.adb gcc-13.1.0/gcc/ada/sinfo-utils.adb
*** gcc-12.2.0/gcc/ada/sinfo-utils.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinfo-utils.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sinfo.Utils is
*** 191,197 ****
     function End_Location (N : Node_Id) return Source_Ptr is
        L : constant Valid_Uint := End_Span (N);
     begin
!       return Source_Ptr (Int (Sloc (N)) + UI_To_Int (L));
     end End_Location;
  
     --------------------
--- 191,197 ----
     function End_Location (N : Node_Id) return Source_Ptr is
        L : constant Valid_Uint := End_Span (N);
     begin
!       return Sloc (N) + Source_Ptr (UI_To_Int (L));
     end End_Location;
  
     --------------------
*************** package body Sinfo.Utils is
*** 214,220 ****
     procedure Set_End_Location (N : Node_Id; S : Source_Ptr) is
     begin
        Set_End_Span (N,
!         UI_From_Int (Int (S) - Int (Sloc (N))));
     end Set_End_Location;
  
     --------------------------
--- 214,220 ----
     procedure Set_End_Location (N : Node_Id; S : Source_Ptr) is
     begin
        Set_End_Span (N,
!         UI_From_Int (Int (S - Sloc (N))));
     end Set_End_Location;
  
     --------------------------
diff -Nrcpad gcc-12.2.0/gcc/ada/sinfo-utils.ads gcc-13.1.0/gcc/ada/sinfo-utils.ads
*** gcc-12.2.0/gcc/ada/sinfo-utils.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinfo-utils.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2020-2022, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --           Copyright (C) 2020-2023, Free Software Foundation, Inc.        --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sinfo.Utils is
*** 54,59 ****
--- 54,65 ----
     -- Miscellaneous Tree Access Subprograms --
     -------------------------------------------
  
+    function First_Real_Statement -- ????
+      (Ignored : N_Handled_Sequence_Of_Statements_Id) return Node_Id is (Empty);
+    --  The First_Real_Statement field is going away, but it is referenced in
+    --  codepeer and gnat-llvm. This is a temporary version, always returning
+    --  Empty, to ease the transition.
+ 
     function End_Location (N : Node_Id) return Source_Ptr;
     --  N is an N_If_Statement or N_Case_Statement node, and this function
     --  returns the location of the IF token in the END IF sequence by
diff -Nrcpad gcc-12.2.0/gcc/ada/sinfo.adb gcc-13.1.0/gcc/ada/sinfo.adb
*** gcc-12.2.0/gcc/ada/sinfo.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinfo.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinfo.ads gcc-13.1.0/gcc/ada/sinfo.ads
*** gcc-12.2.0/gcc/ada/sinfo.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinfo.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sinfo is
*** 82,87 ****
--- 82,93 ----
     --                 for this purpose, so e.g. in X := (if A then B else C);
     --                 Paren_Count for the right side will be 1.
  
+    --   Comes_From_Check_Or_Contract
+    --                 This flag is present in all N_If_Statement nodes and
+    --                 gets set when an N_If_Statement is generated as part of
+    --                 the expansion of a Check, Assert, or contract-related
+    --                 pragma.
+ 
     --   Comes_From_Source
     --                 This flag is present in all nodes. It is set if the
     --                 node is built by the scanner or parser, and clear if
*************** package Sinfo is
*** 434,440 ****
     --  documents the restriction.
  
     --  Note that most of these restrictions apply only to trees generated when
!    --  code is being generated, since they involved expander actions that
     --  destroy the tree.
  
     ----------------
--- 440,446 ----
     --  documents the restriction.
  
     --  Note that most of these restrictions apply only to trees generated when
!    --  code is being generated, since they involve expander actions that
     --  destroy the tree.
  
     ----------------
*************** package Sinfo is
*** 522,528 ****
     --  function.
     --
     --  If the mode of a Ghost region is Ignore, any newly created nodes as well
!    --  as source entities are marked as ignored Ghost. In additon, the marking
     --  process signals all enclosing scopes that an ignored Ghost node resides
     --  within. The compilation unit where the node resides is also added to an
     --  auxiliary table for post processing.
--- 528,534 ----
     --  function.
     --
     --  If the mode of a Ghost region is Ignore, any newly created nodes as well
!    --  as source entities are marked as ignored Ghost. In addition, the marking
     --  process signals all enclosing scopes that an ignored Ghost node resides
     --  within. The compilation unit where the node resides is also added to an
     --  auxiliary table for post processing.
*************** package Sinfo is
*** 554,562 ****
     --  The tree after this light expansion should be fully analyzed
     --  semantically, which sometimes requires the insertion of semantic
     --  preanalysis, for example for subprogram contracts and pragma
!    --  check/assert. In particular, all expression must have their proper type,
!    --  and semantic links should be set between tree nodes (partial to full
!    --  view, etc.) Some kinds of nodes should be either absent, or can be
     --  ignored by the formal verification backend:
  
     --      N_Object_Renaming_Declaration: can be ignored safely
--- 560,568 ----
     --  The tree after this light expansion should be fully analyzed
     --  semantically, which sometimes requires the insertion of semantic
     --  preanalysis, for example for subprogram contracts and pragma
!    --  check/assert. In particular, all expressions must have their proper
!    --  type, and semantic links should be set between tree nodes (partial to
!    --  full view, etc.). Some kinds of nodes should be either absent, or can be
     --  ignored by the formal verification backend:
  
     --      N_Object_Renaming_Declaration: can be ignored safely
*************** package Sinfo is
*** 623,629 ****
     --  specified by means of an aspect or a pragma.
  
     --  The following entities may be subject to a SPARK mode. Entities marked
!    --  with * may possess two differente SPARK modes.
  
     --     E_Entry
     --     E_Entry_Family
--- 629,635 ----
     --  specified by means of an aspect or a pragma.
  
     --  The following entities may be subject to a SPARK mode. Entities marked
!    --  with * may possess two different SPARK modes.
  
     --     E_Entry
     --     E_Entry_Family
*************** package Sinfo is
*** 709,717 ****
     --    This flag is set if the node comes directly from an explicit construct
     --    in the source. It is normally on for any nodes built by the scanner or
     --    parser from the source program, with the exception that in a few cases
!    --    the parser adds nodes to normalize the representation (in particular
     --    a null statement is added to a package body if there is no begin/end
!    --    initialization section.
     --
     --    Most nodes inserted by the analyzer or expander are not considered
     --    as coming from source, so the flag is off for such nodes. In a few
--- 715,723 ----
     --    This flag is set if the node comes directly from an explicit construct
     --    in the source. It is normally on for any nodes built by the scanner or
     --    parser from the source program, with the exception that in a few cases
!    --    the parser adds nodes to normalize the representation (in particular,
     --    a null statement is added to a package body if there is no begin/end
!    --    initialization section).
     --
     --    Most nodes inserted by the analyzer or expander are not considered
     --    as coming from source, so the flag is off for such nodes. In a few
*************** package Sinfo is
*** 816,827 ****
  
     --  Actual_Designated_Subtype
     --    Present in N_Free_Statement and N_Explicit_Dereference nodes. If gigi
!    --    needs to known the dynamic constrained subtype of the designated
!    --    object, this attribute is set to that type. This is done for
!    --    N_Free_Statements for access-to-classwide types and access to
!    --    unconstrained packed array types, and for N_Explicit_Dereference when
!    --    the designated type is an unconstrained packed array and the
!    --    dereference is the prefix of a 'Size attribute reference.
  
     --  Address_Warning_Posted
     --    Present in N_Attribute_Definition nodes. Set to indicate that we have
--- 822,836 ----
  
     --  Actual_Designated_Subtype
     --    Present in N_Free_Statement and N_Explicit_Dereference nodes. If gigi
!    --    needs to know the dynamic constrained subtype of the designated
!    --    object, this attribute is set to that subtype. This is done for
!    --    N_Free_Statements for access-to-classwide types and access-to-
!    --    unconstrained packed array types. For N_Explicit_Dereference,
!    --    this is done in two circumstances: 1) when the designated type is
!    --    an unconstrained packed array and the dereference is the prefix of
!    --    a 'Size attribute reference, or 2) when the dereference node is
!    --    created for the expansion of an allocator with a subtype_indication
!    --    and the designated subtype is an unconstrained discriminated type.
  
     --  Address_Warning_Posted
     --    Present in N_Attribute_Definition nodes. Set to indicate that we have
*************** package Sinfo is
*** 833,842 ****
     --    known at compile time, this field points to an N_Range node with those
     --    bounds. Otherwise Empty.
  
-    --  Alloc_For_BIP_Return
-    --    Present in N_Allocator nodes. True if the allocator is one of those
-    --    generated for a build-in-place return statement.
- 
     --  All_Others
     --    Present in an N_Others_Choice node. This flag is set for an others
     --    exception where all exceptions are to be caught, even those that are
--- 842,847 ----
*************** package Sinfo is
*** 888,896 ****
     --    required for the corresponding reference or modification.
  
     --  At_End_Proc
!    --    This field is present in an N_Handled_Sequence_Of_Statements node.
     --    It contains an identifier reference for the cleanup procedure to be
!    --    called. See description of this node for further details.
  
     --  Backwards_OK
     --    A flag present in the N_Assignment_Statement node. It is used only
--- 893,904 ----
     --    required for the corresponding reference or modification.
  
     --  At_End_Proc
!    --    This field is present in N_Handled_Sequence_Of_Statements,
!    --    N_Package_Body, N_Subprogram_Body, N_Task_Body, N_Block_Statement,
!    --    and N_Entry_Body.
     --    It contains an identifier reference for the cleanup procedure to be
!    --    called. See description of N_Handled_Sequence_Of_Statements node
!    --    for further details.
  
     --  Backwards_OK
     --    A flag present in the N_Assignment_Statement node. It is used only
*************** package Sinfo is
*** 924,935 ****
     --    a pragma Import or Interface applies, in which case no body is
     --    permitted (in Ada 83 or Ada 95).
  
-    --  By_Ref
-    --    Present in N_Simple_Return_Statement and N_Extended_Return_Statement,
-    --    this flag is set when the returned expression is already allocated on
-    --    the secondary stack and thus the result is passed by reference rather
-    --    than copied another time.
- 
     --  Cleanup_Actions
     --    Present in block statements created for transient blocks, contains
     --    additional cleanup actions carried over from the transient scope.
--- 932,937 ----
*************** package Sinfo is
*** 947,952 ****
--- 949,959 ----
     --    Present in N_Simple_Return_Statement nodes. True if this node was
     --    constructed as part of the N_Extended_Return_Statement expansion.
  
+    --  Comes_From_Iterator
+    --    Present in N_Object_Renaming_Declaration nodes. True if this node was
+    --    was constructed as part of the expansion of an iterator
+    --    specification.
+ 
     --  Compile_Time_Known_Aggregate
     --    Present in N_Aggregate nodes. Set for aggregates which can be fully
     --    evaluated at compile time without raising constraint error. Such
*************** package Sinfo is
*** 1002,1013 ****
     --    direct conversion of the underlying integer result, with no regard to
     --    the small operand.
  
-    --  Convert_To_Return_False
-    --    Present in N_Raise_Expression nodes that appear in the body of the
-    --    special predicateM function used to test a predicate in the context
-    --    of a membership test, where raise expression results in returning a
-    --    value of False rather than raising an exception.
- 
     --  Corresponding_Aspect
     --    Present in N_Pragma node. Used to point back to the source aspect from
     --    the corresponding pragma. This field is Empty for source pragmas.
--- 1009,1014 ----
*************** package Sinfo is
*** 1316,1330 ****
     --    named associations). Note: this field points to the explicit actual
     --    parameter itself, not the N_Parameter_Association node (its parent).
  
-    --  First_Real_Statement
-    --    Present in N_Handled_Sequence_Of_Statements node. Normally set to
-    --    Empty. Used only when declarations are moved into the statement part
-    --    of a construct as a result of wrapping an AT END handler that is
-    --    required to cover the declarations. In this case, this field is used
-    --    to remember the location in the statements list of the first real
-    --    statement, i.e. the statement that used to be first in the statement
-    --    list before the declarations were prepended.
- 
     --  First_Subtype_Link
     --    Present in N_Freeze_Entity node for an anonymous base type that is
     --    implicitly created by the declaration of a first subtype. It points
--- 1317,1322 ----
*************** package Sinfo is
*** 1348,1366 ****
     --    cannot figure it out. If both flags Forwards_OK and Backwards_OK are
     --    set, it means that the front end can assure no overlap of operands.
  
     --  From_Aspect_Specification
     --    Processing of aspect specifications typically results in insertion in
     --    the tree of corresponding pragma or attribute definition clause nodes.
     --    These generated nodes have the From_Aspect_Specification flag set to
     --    indicate that they came from aspect specifications originally.
  
-    --  From_At_End
-    --    This flag is set on an N_Raise_Statement node if it corresponds to
-    --    the reraise statement generated as the last statement of an AT END
-    --    handler when SJLJ exception handling is active. It is used to stop
-    --    a bogus violation of restriction (No_Exception_Propagation), bogus
-    --    because if the restriction is set, the reraise is not generated.
- 
     --  From_At_Mod
     --    This flag is set on the attribute definition clause node that is
     --    generated by a transformation of an at mod phrase in a record
--- 1340,1355 ----
     --    cannot figure it out. If both flags Forwards_OK and Backwards_OK are
     --    set, it means that the front end can assure no overlap of operands.
  
+    --  For_Special_Return_Object
+    --    Present in N_Allocator nodes. True if the allocator is generated for
+    --    the initialization of a special return object.
+ 
     --  From_Aspect_Specification
     --    Processing of aspect specifications typically results in insertion in
     --    the tree of corresponding pragma or attribute definition clause nodes.
     --    These generated nodes have the From_Aspect_Specification flag set to
     --    indicate that they came from aspect specifications originally.
  
     --  From_At_Mod
     --    This flag is set on the attribute definition clause node that is
     --    generated by a transformation of an at mod phrase in a record
*************** package Sinfo is
*** 1536,1545 ****
  
     --  Incomplete_View
     --    Present in full type declarations that are completions of incomplete
!    --    type declarations. Denotes the corresponding incomplete type
!    --    declaration. Used to simplify the retrieval of primitive operations
!    --    that may be declared between the partial and the full view of an
!    --    untagged type.
  
     --  Inherited_Discriminant
     --    This flag is present in N_Component_Association nodes. It indicates
--- 1525,1532 ----
  
     --  Incomplete_View
     --    Present in full type declarations that are completions of incomplete
!    --    type declarations. Denotes the corresponding incomplete view declared
!    --    by the incomplete declaration.
  
     --  Inherited_Discriminant
     --    This flag is present in N_Component_Association nodes. It indicates
*************** package Sinfo is
*** 1567,1573 ****
  
     --  Is_Analyzed_Pragma
     --    Present in N_Pragma nodes. Set for delayed pragmas that require a two
!    --    step analysis. The initial step is peformed by routine Analyze_Pragma
     --    and verifies the overall legality of the pragma. The second step takes
     --    place in the various Analyze_xxx_In_Decl_Part routines which perform
     --    full analysis. The flag prevents the reanalysis of a delayed pragma.
--- 1554,1560 ----
  
     --  Is_Analyzed_Pragma
     --    Present in N_Pragma nodes. Set for delayed pragmas that require a two
!    --    step analysis. The initial step is performed by routine Analyze_Pragma
     --    and verifies the overall legality of the pragma. The second step takes
     --    place in the various Analyze_xxx_In_Decl_Part routines which perform
     --    full analysis. The flag prevents the reanalysis of a delayed pragma.
*************** package Sinfo is
*** 1659,1666 ****
     --      variable reference marker
     --
     --    Set when the node appears within a context which allows the generation
!    --    of run-time ABE checks. This flag detemines whether the ABE Processing
!    --    phase generates conditional ABE checks and guaranteed ABE failures.
  
     --  Is_Elaboration_Code
     --    Present in assignment statements. Set for an assignment which updates
--- 1646,1654 ----
     --      variable reference marker
     --
     --    Set when the node appears within a context which allows the generation
!    --    of run-time ABE checks. This flag determines whether the ABE
!    --    Processing phase generates conditional ABE checks and guaranteed ABE
!    --    failures.
  
     --  Is_Elaboration_Code
     --    Present in assignment statements. Set for an assignment which updates
*************** package Sinfo is
*** 1692,1697 ****
--- 1680,1689 ----
     --    nodes which emulate the barrier function of a protected entry body.
     --    The flag is used when checking for incorrect use of Current_Task.
  
+    --  Is_Enum_Array_Aggregate
+    --    A flag set on an aggregate created internally while building the
+    --    images tables for enumerations.
+ 
     --  Is_Expanded_Build_In_Place_Call
     --    This flag is set in an N_Function_Call node to indicate that the extra
     --    actuals to support a build-in-place style of call have been added to
*************** package Sinfo is
*** 1806,1811 ****
--- 1798,1806 ----
     --    overloading determination. The setting of this flag is not relevant
     --    once overloading analysis is complete.
  
+    --  Is_Parenthesis_Aggregate
+    --    A flag set on an aggregate that uses parentheses as delimiters
+ 
     --  Is_Power_Of_2_For_Shift
     --    A flag present only in N_Op_Expon nodes. It is set when the
     --    exponentiation is of the form 2 ** N, where the type of N is an
*************** package Sinfo is
*** 2310,2316 ****
     --    can be set in N_Object_Declaration nodes, to similarly suppress any
     --    checks on the initializing value. In assignment statements it also
     --    suppresses access checks in the generated code for out- and in-out
!    --    parameters in entry calls.
  
     --  Suppress_Loop_Warnings
     --    Used in N_Loop_Statement node to indicate that warnings within the
--- 2305,2311 ----
     --    can be set in N_Object_Declaration nodes, to similarly suppress any
     --    checks on the initializing value. In assignment statements it also
     --    suppresses access checks in the generated code for out- and in-out
!    --    parameters in entry calls, as well as length checks.
  
     --  Suppress_Loop_Warnings
     --    Used in N_Loop_Statement node to indicate that warnings within the
*************** package Sinfo is
*** 2623,2628 ****
--- 2618,2650 ----
        --  Is_Folded_In_Parser
        --  plus fields for expression
  
+       ---------------------------------------
+       --  2.6  Interpolated String Literal --
+       ---------------------------------------
+ 
+       --  INTERPOLATED_STRING_LITERAL ::=
+       --    '{' "{INTERPOLATED_STRING_ELEMENT}" {
+       --        "{INTERPOLATED_STRING_ELEMENT}" } '}'
+ 
+       --  INTERPOLATED_STRING_ELEMENT ::=
+       --      ESCAPED_CHARACTER | INTERPOLATED_EXPRESSION
+       --    | non_quotation_mark_non_left_brace_GRAPHIC_CHARACTER
+ 
+       --  ESCAPED_CHARACTER ::= '\GRAPHIC_CHARACTER'
+ 
+       --  INTERPOLATED_EXPRESSION ::= '{' EXPRESSION '}'
+ 
+       --  Most of these syntax rules are omitted as tree nodes to simplify
+       --  semantic processing. The scanner handles escaped characters as part
+       --  of processing an interpolated string literal, and the parser stores
+       --  in the Expressions field of this node a list containing the sequence
+       --  of string literals and the roots of the interpolated expressions.
+ 
+       --  N_Interpolated_String_Literal
+       --  Sloc points to literal
+       --  Expressions
+       --  plus fields for expression
+ 
        ------------------
        -- 2.7  Comment --
        ------------------
*************** package Sinfo is
*** 2828,2834 ****
        --  Defining_Identifier
        --  Null_Exclusion_Present
        --  Subtype_Indication
!       --  Generic_Parent_Type (set for an actual derived type).
        --  Exception_Junk
  
        -------------------------------
--- 2850,2856 ----
        --  Defining_Identifier
        --  Null_Exclusion_Present
        --  Subtype_Indication
!       --  Generic_Parent_Type (for actual of formal private or derived type)
        --  Exception_Junk
  
        -------------------------------
*************** package Sinfo is
*** 4036,4042 ****
--- 4058,4066 ----
        --  Compile_Time_Known_Aggregate
        --  Expansion_Delayed
        --  Has_Self_Reference
+       --  Is_Enum_Array_Aggregate
        --  Is_Homogeneous_Aggregate
+       --  Is_Parenthesis_Aggregate
        --  plus fields for expression
  
        --  Note: this structure is used for both record and array aggregates
*************** package Sinfo is
*** 4192,4202 ****
  
        --  ITERATED_COMPONENT_ASSOCIATION ::=
        --    for DEFINING_IDENTIFIER in DISCRETE_CHOICE_LIST => EXPRESSION
  
        --  N_Iterated_Component_Association
        --  Sloc points to FOR
        --  Defining_Identifier
!       --  Iterator_Specification (set to Empty if no Iterator_Spec)
        --  Expression
        --  Discrete_Choices
        --  Loop_Actions
--- 4216,4230 ----
  
        --  ITERATED_COMPONENT_ASSOCIATION ::=
        --    for DEFINING_IDENTIFIER in DISCRETE_CHOICE_LIST => EXPRESSION
+       --    for ITERATOR_SPECIFICATION => EXPRESSION
+ 
+       --  At most one of (Defining_Identifier, Iterator_Specification)
+       --  is present at a time, in which case the other one is empty.
  
        --  N_Iterated_Component_Association
        --  Sloc points to FOR
        --  Defining_Identifier
!       --  Iterator_Specification
        --  Expression
        --  Discrete_Choices
        --  Loop_Actions
*************** package Sinfo is
*** 4216,4224 ****
        --  Etype
  
        ---------------------------------
!       --  3.4.5 Comtainer_Aggregates --
        ---------------------------------
  
        --  N_Iterated_Element_Association
        --  Key_Expression
        --  Iterator_Specification
--- 4244,4256 ----
        --  Etype
  
        ---------------------------------
!       --  3.4.5 Container_Aggregates --
        ---------------------------------
  
+       --  ITERATED_ELEMENT_ASSOCIATION ::=
+       --    for LOOP_PARAMETER_SPECIFICATION[ use KEY_EXPRESSION] => EXPRESSION
+       --  | for ITERATOR_SPECIFICATION[ use KEY_EXPRESSION] => EXPRESSION
+ 
        --  N_Iterated_Element_Association
        --  Key_Expression
        --  Iterator_Specification
*************** package Sinfo is
*** 4660,4666 ****
  
        --  Note: The Actions field temporarily holds any actions associated with
        --  evaluation of the Expression. During expansion of the case expression
!       --  these actions are wrapped into an N_Expressions_With_Actions node
        --  replacing the original expression.
  
        --  Note: this node never appears in the tree passed to the back end,
--- 4692,4698 ----
  
        --  Note: The Actions field temporarily holds any actions associated with
        --  evaluation of the Expression. During expansion of the case expression
!       --  these actions are wrapped into an N_Expression_With_Actions node
        --  replacing the original expression.
  
        --  Note: this node never appears in the tree passed to the back end,
*************** package Sinfo is
*** 4772,4778 ****
        --  Subpool_Handle_Name (set to Empty if not present)
        --  Storage_Pool
        --  Procedure_To_Call
!       --  Alloc_For_BIP_Return
        --  Null_Exclusion_Present
        --  No_Initialization
        --  Is_Static_Coextension
--- 4804,4810 ----
        --  Subpool_Handle_Name (set to Empty if not present)
        --  Storage_Pool
        --  Procedure_To_Call
!       --  For_Special_Return_Object
        --  Null_Exclusion_Present
        --  No_Initialization
        --  Is_Static_Coextension
*************** package Sinfo is
*** 5168,5173 ****
--- 5200,5206 ----
        --  Is_Finalization_Wrapper
        --  Is_Initialization_Block
        --  Is_Task_Master
+       --  At_End_Proc (set to Empty if no clean up procedure)
  
        -------------------------
        -- 5.7  Exit Statement --
*************** package Sinfo is
*** 5570,5576 ****
  
        --  The term "return statement" is defined in 6.5 to mean either a
        --  SIMPLE_RETURN_STATEMENT or an EXTENDED_RETURN_STATEMENT. We avoid
!       --  the use of this term, since it used to mean someting else in earlier
        --  versions of Ada.
  
        --  N_Simple_Return_Statement
--- 5603,5609 ----
  
        --  The term "return statement" is defined in 6.5 to mean either a
        --  SIMPLE_RETURN_STATEMENT or an EXTENDED_RETURN_STATEMENT. We avoid
!       --  the use of this term, since it used to mean something else in earlier
        --  versions of Ada.
  
        --  N_Simple_Return_Statement
*************** package Sinfo is
*** 5579,5585 ****
        --  Expression (set to Empty if no expression present)
        --  Storage_Pool
        --  Procedure_To_Call
-       --  By_Ref
        --  Comes_From_Extended_Return_Statement
  
        --  Note: Return_Statement_Entity points to an E_Return_Statement
--- 5612,5617 ----
*************** package Sinfo is
*** 5594,5600 ****
        --  Handled_Statement_Sequence (set to Empty if not present)
        --  Storage_Pool
        --  Procedure_To_Call
-       --  By_Ref
  
        --  Note: Return_Statement_Entity points to an E_Return_Statement.
  
--- 5626,5631 ----
*************** package Sinfo is
*** 5689,5694 ****
--- 5720,5726 ----
        --  Handled_Statement_Sequence (set to Empty if no HSS present)
        --  Corresponding_Spec
        --  Was_Originally_Stub
+       --  At_End_Proc (set to Empty if no clean up procedure)
  
        --  Note: if a source level package does not contain a handled sequence
        --  of statements, then the parser supplies a dummy one with a null
*************** package Sinfo is
*** 6167,6172 ****
--- 6199,6205 ----
        --  Declarations
        --  Handled_Statement_Sequence
        --  Activation_Chain_Entity
+       --  At_End_Proc (set to Empty if no clean up procedure)
  
        -----------------------------------
        -- 9.5.2  Entry Body Formal Part --
*************** package Sinfo is
*** 6718,6723 ****
--- 6751,6757 ----
        --  Corresponding_Spec_Of_Stub
        --  Library_Unit points to the subunit
        --  Corresponding_Body
+       --  At_End_Proc (set to Empty if no clean up procedure)
  
        -------------------------------
        -- 10.1.3  Package Body Stub --
*************** package Sinfo is
*** 6748,6753 ****
--- 6782,6788 ----
        --  Corresponding_Spec_Of_Stub
        --  Library_Unit points to the subunit
        --  Corresponding_Body
+       --  At_End_Proc (set to Empty if no clean up procedure)
  
        ---------------------------------
        -- 10.1.3  Protected Body Stub --
*************** package Sinfo is
*** 6813,6852 ****
  
        --  The AT END phrase is a GNAT extension to provide for cleanups. It is
        --  used only internally currently, but is considered to be syntactic.
!       --  At the moment, the only cleanup action allowed is a single call to
!       --  a parameterless procedure, and the Identifier field of the node is
!       --  the procedure to be called. The cleanup action occurs whenever the
!       --  sequence of statements is left for any reason. The possible reasons
!       --  are:
        --      1. reaching the end of the sequence
        --      2. exit, return, or goto
        --      3. exception or abort
!       --  For some back ends, such as gcc with ZCX, "at end" is implemented
!       --  entirely in the back end. In this case, a handled sequence of
!       --  statements with an "at end" cannot also have exception handlers.
!       --  For other back ends, such as gcc with front-end SJLJ, the
!       --  implementation is split between the front end and back end; the front
!       --  end implements 3, and the back end implements 1 and 2. In this case,
!       --  if there is an "at end", the front end inserts the appropriate
!       --  exception handler, and this handler takes precedence over "at end"
!       --  in case of exception.
! 
!       --  The inserted exception handler is of the form:
! 
!       --     when all others =>
!       --        cleanup;
!       --        raise;
! 
!       --  where cleanup is the procedure to be called. The reason we do this is
!       --  so that the front end can handle the necessary entries in the
!       --  exception tables, and other exception handler actions required as
!       --  part of the normal handling for exception handlers.
  
        --  The AT END cleanup handler protects only the sequence of statements
!       --  (not the associated declarations of the parent), just like exception
!       --  handlers. The big difference is that the cleanup procedure is called
        --  on either a normal or an abnormal exit from the statement sequence.
  
        --  Note: the list of Exception_Handlers can contain pragmas as well
        --  as actual handlers. In practice these pragmas can only occur at
        --  the start of the list, since any pragmas occurring later on will
--- 6848,6878 ----
  
        --  The AT END phrase is a GNAT extension to provide for cleanups. It is
        --  used only internally currently, but is considered to be syntactic.
!       --  At the moment, the only cleanup action allowed is a single call to a
!       --  parameterless procedure; this restriction could be lifted if we make
!       --  some changes in gigi. The At_End_Proc field is an N_Identifier node
!       --  that denotes the procedure to be called. The cleanup action occurs
!       --  whenever the sequence of statements is left for any reason. The
!       --  possible reasons are:
!       --
        --      1. reaching the end of the sequence
        --      2. exit, return, or goto
        --      3. exception or abort
!       --
!       --  The cleanup action also occurs whenever the exception handlers are
!       --  left.
  
        --  The AT END cleanup handler protects only the sequence of statements
!       --  and the exception handlers (not the associated declarations of
!       --  the parent), just like exception handlers do not protect the
!       --  declarations. The big difference is that the cleanup actions occur
        --  on either a normal or an abnormal exit from the statement sequence.
  
+       --  At_End_Proc is also a field of various nodes that can contain
+       --  both Declarations and Handled_Statement_Sequence, such as subprogram
+       --  bodies and block statements. In that case, the At_End_Proc
+       --  protects the Declarations as well as the Handled_Statement_Sequence.
+ 
        --  Note: the list of Exception_Handlers can contain pragmas as well
        --  as actual handlers. In practice these pragmas can only occur at
        --  the start of the list, since any pragmas occurring later on will
*************** package Sinfo is
*** 6873,6879 ****
        --  End_Label (set to Empty if expander generated)
        --  Exception_Handlers (set to No_List if none present)
        --  At_End_Proc (set to Empty if no clean up procedure)
!       --  First_Real_Statement
  
        --  Note: the parent always contains a Declarations field which contains
        --  declarations associated with the handled sequence of statements. This
--- 6899,6907 ----
        --  End_Label (set to Empty if expander generated)
        --  Exception_Handlers (set to No_List if none present)
        --  At_End_Proc (set to Empty if no clean up procedure)
! 
!       --  Note: A Handled_Sequence_Of_Statements can contain both
!       --  Exception_Handlers and an At_End_Proc.
  
        --  Note: the parent always contains a Declarations field which contains
        --  declarations associated with the handled sequence of statements. This
*************** package Sinfo is
*** 6938,6944 ****
        --  Sloc points to RAISE
        --  Name (set to Empty if no exception name present)
        --  Expression (set to Empty if no expression present)
-       --  From_At_End
  
        ----------------------------
        -- 11.3  Raise Expression --
--- 6966,6971 ----
*************** package Sinfo is
*** 6950,6956 ****
        --  Sloc points to RAISE
        --  Name (always present)
        --  Expression (set to Empty if no expression present)
-       --  Convert_To_Return_False
        --  plus fields for expression
  
        -------------------------------
--- 6977,6982 ----
*************** package Sinfo is
*** 7334,7343 ****
        --  Specification
        --  Default_Name (set to Empty if no subprogram default)
        --  Box_Present
  
!       --  Note: if no subprogram default is present, then Name is set
        --  to Empty, and Box_Present is False.
  
        --------------------------------------------------
        -- 12.6  Formal Abstract Subprogram Declaration --
        --------------------------------------------------
--- 7360,7374 ----
        --  Specification
        --  Default_Name (set to Empty if no subprogram default)
        --  Box_Present
+       --  Expression (set to Empty if no expression present)
  
!       --  Note: If no subprogram default is present, then Name is set
        --  to Empty, and Box_Present is False.
  
+       --  Note: The Expression field is only used for the GNAT extension
+       --  that allows a FORMAL_CONCRETE_SUBPROGRAM_DECLARATION to specify
+       --  an expression default for generic formal functions.
+ 
        --------------------------------------------------
        -- 12.6  Formal Abstract Subprogram Declaration --
        --------------------------------------------------
*************** package Sinfo is
*** 7359,7371 ****
        -- 12.6  Subprogram Default --
        ------------------------------
  
!       --  SUBPROGRAM_DEFAULT ::= DEFAULT_NAME | <>
  
        --  There is no separate node in the tree for a subprogram default.
        --  Instead the parent (N_Formal_Concrete_Subprogram_Declaration
        --  or N_Formal_Abstract_Subprogram_Declaration) node contains the
        --  default name or box indication, as needed.
  
        ------------------------
        -- 12.6  Default Name --
        ------------------------
--- 7390,7406 ----
        -- 12.6  Subprogram Default --
        ------------------------------
  
!       --  SUBPROGRAM_DEFAULT ::= DEFAULT_NAME | <> | (EXPRESSION)
  
        --  There is no separate node in the tree for a subprogram default.
        --  Instead the parent (N_Formal_Concrete_Subprogram_Declaration
        --  or N_Formal_Abstract_Subprogram_Declaration) node contains the
        --  default name or box indication, as needed.
  
+       --  Note: The syntax "(EXPRESSION)" is a GNAT extension, and allows
+       --  a FORMAL_CONCRETE_SUBPROGRAM_DECLARATION to specify an expression
+       --  default for formal functions, in analogy with expression_functions.
+ 
        ------------------------
        -- 12.6  Default Name --
        ------------------------
*************** package Sinfo is
*** 7813,7819 ****
        --      ABE mechanism, regardless of whether expansion took place.
  
        --    * The call marker captures the target of the related call along
!       --      with other attributes which are either unavailabe or expensive
        --      to recompute once analysis, resolution, and expansion are over.
  
        --    * The call marker aids the ABE Processing phase by signaling the
--- 7848,7854 ----
        --      ABE mechanism, regardless of whether expansion took place.
  
        --    * The call marker captures the target of the related call along
!       --      with other attributes which are either unavailable or expensive
        --      to recompute once analysis, resolution, and expansion are over.
  
        --    * The call marker aids the ABE Processing phase by signaling the
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput-c.adb gcc-13.1.0/gcc/ada/sinput-c.adb
*** gcc-12.2.0/gcc/ada/sinput-c.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput-c.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput-c.ads gcc-13.1.0/gcc/ada/sinput-c.ads
*** gcc-12.2.0/gcc/ada/sinput-c.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput-c.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput-d.adb gcc-13.1.0/gcc/ada/sinput-d.adb
*** gcc-12.2.0/gcc/ada/sinput-d.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput-d.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2002-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput-d.ads gcc-13.1.0/gcc/ada/sinput-d.ads
*** gcc-12.2.0/gcc/ada/sinput-d.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput-d.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput-l.adb gcc-13.1.0/gcc/ada/sinput-l.adb
*** gcc-12.2.0/gcc/ada/sinput-l.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput-l.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput-l.ads gcc-13.1.0/gcc/ada/sinput-l.ads
*** gcc-12.2.0/gcc/ada/sinput-l.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput-l.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput.adb gcc-13.1.0/gcc/ada/sinput.adb
*** gcc-12.2.0/gcc/ada/sinput.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System.Storage_Elements;
*** 41,48 ****
  with System.Memory;
  with System.WCh_Con; use System.WCh_Con;
  
! with Unchecked_Conversion;
! with Unchecked_Deallocation;
  
  package body Sinput is
  
--- 41,48 ----
  with System.Memory;
  with System.WCh_Con; use System.WCh_Con;
  
! with Ada.Unchecked_Conversion;
! with Ada.Unchecked_Deallocation;
  
  package body Sinput is
  
*************** package body Sinput is
*** 56,71 ****
     --  used to construct improperly aliased pointer values.
  
     function To_Address is
!      new Unchecked_Conversion (Lines_Table_Ptr, Address);
  
     function To_Address is
!      new Unchecked_Conversion (Logical_Lines_Table_Ptr, Address);
  
     function To_Pointer is
!      new Unchecked_Conversion (Address, Lines_Table_Ptr);
  
     function To_Pointer is
!      new Unchecked_Conversion (Address, Logical_Lines_Table_Ptr);
  
     pragma Warnings (On);
  
--- 56,71 ----
     --  used to construct improperly aliased pointer values.
  
     function To_Address is
!      new Ada.Unchecked_Conversion (Lines_Table_Ptr, Address);
  
     function To_Address is
!      new Ada.Unchecked_Conversion (Logical_Lines_Table_Ptr, Address);
  
     function To_Pointer is
!      new Ada.Unchecked_Conversion (Address, Lines_Table_Ptr);
  
     function To_Pointer is
!      new Ada.Unchecked_Conversion (Address, Logical_Lines_Table_Ptr);
  
     pragma Warnings (On);
  
*************** package body Sinput is
*** 319,328 ****
     -- Clear_Source_File_Table --
     -----------------------------
  
!    procedure Free is new Unchecked_Deallocation
       (Lines_Table_Type, Lines_Table_Ptr);
  
!    procedure Free is new Unchecked_Deallocation
       (Logical_Lines_Table_Type, Logical_Lines_Table_Ptr);
  
     procedure Clear_Source_File_Table is
--- 319,328 ----
     -- Clear_Source_File_Table --
     -----------------------------
  
!    procedure Free is new Ada.Unchecked_Deallocation
       (Lines_Table_Type, Lines_Table_Ptr);
  
!    procedure Free is new Ada.Unchecked_Deallocation
       (Logical_Lines_Table_Type, Logical_Lines_Table_Ptr);
  
     procedure Clear_Source_File_Table is
*************** package body Sinput is
*** 378,389 ****
        --  to first Unchecked_Convert to access-to-variable.
  
        function To_Source_Buffer_Ptr_Var is new
!         Unchecked_Conversion (Source_Buffer_Ptr, Source_Buffer_Ptr_Var);
  
        Temp : Source_Buffer_Ptr_Var := To_Source_Buffer_Ptr_Var (Src);
  
        procedure Free_Ptr is new
!         Unchecked_Deallocation (Source_Buffer, Source_Buffer_Ptr_Var);
     begin
        Free_Ptr (Temp);
        Src := null;
--- 378,389 ----
        --  to first Unchecked_Convert to access-to-variable.
  
        function To_Source_Buffer_Ptr_Var is new
!         Ada.Unchecked_Conversion (Source_Buffer_Ptr, Source_Buffer_Ptr_Var);
  
        Temp : Source_Buffer_Ptr_Var := To_Source_Buffer_Ptr_Var (Src);
  
        procedure Free_Ptr is new
!         Ada.Unchecked_Deallocation (Source_Buffer, Source_Buffer_Ptr_Var);
     begin
        Free_Ptr (Temp);
        Src := null;
*************** package body Sinput is
*** 620,626 ****
     -------------------------
  
     function Instantiation_Depth (S : Source_Ptr) return Nat is
-       Sind  : Source_File_Index;
        Sval  : Source_Ptr;
        Depth : Nat;
  
--- 620,625 ----
*************** package body Sinput is
*** 629,636 ****
        Depth := 0;
  
        loop
!          Sind := Get_Source_File_Index (Sval);
!          Sval := Instantiation (Sind);
           exit when Sval = No_Location;
           Depth := Depth + 1;
        end loop;
--- 628,634 ----
        Depth := 0;
  
        loop
!          Sval := Instantiation_Location (Sval);
           exit when Sval = No_Location;
           Depth := Depth + 1;
        end loop;
*************** package body Sinput is
*** 922,928 ****
        pragma Import (Ada, Dope);
        use System.Storage_Elements;
        for Dope'Address use Src + System.Address'Size / 8;
!       procedure Free is new Unchecked_Deallocation (Dope_Rec, Dope_Ptr);
     begin
        Free (Dope);
     end Free_Dope;
--- 920,926 ----
        pragma Import (Ada, Dope);
        use System.Storage_Elements;
        for Dope'Address use Src + System.Address'Size / 8;
!       procedure Free is new Ada.Unchecked_Deallocation (Dope_Rec, Dope_Ptr);
     begin
        Free (Dope);
     end Free_Dope;
*************** package body Sinput is
*** 1023,1029 ****
              SI : constant Source_File_Index := Get_Source_File_Index (P);
  
           begin
!             Write_Name (Debug_Source_Name (SI));
              Write_Char (':');
              Write_Int (Int (Get_Logical_Line_Number (P)));
              Write_Char (':');
--- 1021,1027 ----
              SI : constant Source_File_Index := Get_Source_File_Index (P);
  
           begin
!             Write_Name_For_Debug (Debug_Source_Name (SI));
              Write_Char (':');
              Write_Int (Int (Get_Logical_Line_Number (P)));
              Write_Char (':');
diff -Nrcpad gcc-12.2.0/gcc/ada/sinput.ads gcc-13.1.0/gcc/ada/sinput.ads
*** gcc-12.2.0/gcc/ada/sinput.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sinput.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Sinput is
*** 409,416 ****
  
     Current_Source_File : Source_File_Index := No_Source_File;
     --  Source_File table index of source file currently being scanned.
-    --  Initialized so that some tools (such as gprbuild) can be built with
-    --  -gnatVa and pragma Initialize_Scalars without problems.
  
     Current_Source_Unit : Unit_Number_Type := No_Unit;
     --  Unit number of source file currently being scanned. Initialized to
--- 409,414 ----
*************** package Sinput is
*** 693,706 ****
     --  names in some situations.
  
     procedure Write_Location (P : Source_Ptr);
!    --  Writes out a string of the form fff:nn:cc, where fff, nn, cc are the
!    --  file name, line number and column corresponding to the given source
!    --  location. No_Location and Standard_Location appear as the strings
!    --  <no location> and <standard location>. If the location is within an
!    --  instantiation, then the instance location is appended, enclosed in
!    --  square brackets (which can nest if necessary). Note that this routine
!    --  is used only for internal compiler debugging output purposes (which
!    --  is why the somewhat cryptic use of brackets is acceptable).
  
     procedure wl (P : Source_Ptr);
     pragma Export (Ada, wl);
--- 691,701 ----
     --  names in some situations.
  
     procedure Write_Location (P : Source_Ptr);
!    --  Writes P, in the form fff:nn:cc, where fff, nn, cc are the file name,
!    --  line number and column corresponding to the given source location. If
!    --  the location is within an instantiation, then the instance location is
!    --  appended, enclosed in square brackets, which can nest if necessary. This
!    --  is used only for debugging output.
  
     procedure wl (P : Source_Ptr);
     pragma Export (Ada, wl);
diff -Nrcpad gcc-12.2.0/gcc/ada/snames.adb-tmpl gcc-13.1.0/gcc/ada/snames.adb-tmpl
*** gcc-12.2.0/gcc/ada/snames.adb-tmpl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/snames.adb-tmpl	Wed Apr 26 07:09:39 2023
*************** package body Snames is
*** 256,263 ****
              return Pragma_Interface;
           when Name_Interrupt_Priority               =>
              return Pragma_Interrupt_Priority;
-          when Name_Lock_Free                        =>
-             return Pragma_Lock_Free;
           when Name_Preelaborable_Initialization     =>
              return Pragma_Preelaborable_Initialization;
           when Name_Priority                         =>
--- 256,261 ----
*************** package body Snames is
*** 489,495 ****
          or else N = Name_Fast_Math
          or else N = Name_Interface
          or else N = Name_Interrupt_Priority
-         or else N = Name_Lock_Free
          or else N = Name_Preelaborable_Initialization
          or else N = Name_Priority
          or else N = Name_Secondary_Stack_Size
--- 487,492 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/snames.ads-tmpl gcc-13.1.0/gcc/ada/snames.ads-tmpl
*** gcc-12.2.0/gcc/ada/snames.ads-tmpl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/snames.ads-tmpl	Wed Apr 26 07:09:39 2023
*************** package Snames is
*** 190,196 ****
     Name_uMaster                        : constant Name_Id := N + $;
     Name_uObject                        : constant Name_Id := N + $;
     Name_uPost                          : constant Name_Id := N + $;
-    Name_uPostconditions                : constant Name_Id := N + $;
     Name_uPostcond_Enabled              : constant Name_Id := N + $;
     Name_uPre                           : constant Name_Id := N + $;
     Name_uPriority                      : constant Name_Id := N + $;
--- 190,195 ----
*************** package Snames is
*** 208,213 ****
--- 207,213 ----
     Name_uTask_Name                     : constant Name_Id := N + $;
     Name_uType_Invariant                : constant Name_Id := N + $;
     Name_uVariants                      : constant Name_Id := N + $;
+    Name_uWrapped_Statements            : constant Name_Id := N + $;
  
     --  Names of predefined primitives used in the expansion of dispatching
     --  requeue and select statements, Abort, 'Callable and 'Terminated.
*************** package Snames is
*** 274,283 ****
--- 274,291 ----
  
     --  Names for packages that are treated specially by the compiler
  
+    Name_Arith_64                       : constant Name_Id := N + $;
+    Name_Arith_128                      : constant Name_Id := N + $;
     Name_Exception_Traces               : constant Name_Id := N + $;
     Name_Finalization                   : constant Name_Id := N + $;
     Name_Interfaces                     : constant Name_Id := N + $;
+    Name_Memory                         : constant Name_Id := N + $;
+    Name_Memory_Compare                 : constant Name_Id := N + $;
+    Name_Memory_Copy                    : constant Name_Id := N + $;
+    Name_Memory_Move                    : constant Name_Id := N + $;
+    Name_Memory_Set                     : constant Name_Id := N + $;
     Name_Most_Recent_Exception          : constant Name_Id := N + $;
+    Name_Stack_Checking                 : constant Name_Id := N + $;
     Name_Standard                       : constant Name_Id := N + $;
     Name_System                         : constant Name_Id := N + $;
     Name_Text_IO                        : constant Name_Id := N + $;
*************** package Snames is
*** 414,425 ****
     Name_Check_Float_Overflow           : constant Name_Id := N + $; -- GNAT
     Name_Check_Name                     : constant Name_Id := N + $; -- GNAT
     Name_Check_Policy                   : constant Name_Id := N + $; -- GNAT
-    Name_Compile_Time_Error             : constant Name_Id := N + $; -- GNAT
-    Name_Compile_Time_Warning           : constant Name_Id := N + $; -- GNAT
     Name_Component_Alignment            : constant Name_Id := N + $; -- GNAT
     Name_Convention_Identifier          : constant Name_Id := N + $; -- GNAT
     Name_Debug_Policy                   : constant Name_Id := N + $; -- GNAT
-    Name_Detect_Blocking                : constant Name_Id := N + $; -- Ada 05
  
     --  Note: Default_Scalar_Storage_Order is not in this list because its name
     --  matches the name of the corresponding attribute. However, it is included
--- 422,430 ----
*************** package Snames is
*** 427,432 ****
--- 432,438 ----
     --  and Is_Pragma_Name correctly recognize Default_Scalar_Storage_Order.
  
     Name_Default_Storage_Pool           : constant Name_Id := N + $; -- Ada 12
+    Name_Detect_Blocking                : constant Name_Id := N + $; -- Ada 05
     Name_Disable_Atomic_Synchronization : constant Name_Id := N + $; -- GNAT
     Name_Discard_Names                  : constant Name_Id := N + $;
     Name_Elaboration_Checks             : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 508,513 ****
--- 514,521 ----
     Name_Check                          : constant Name_Id := N + $; -- GNAT
     Name_Comment                        : constant Name_Id := N + $; -- GNAT
     Name_Common_Object                  : constant Name_Id := N + $; -- GNAT
+    Name_Compile_Time_Error             : constant Name_Id := N + $; -- GNAT
+    Name_Compile_Time_Warning           : constant Name_Id := N + $; -- GNAT
     Name_Complete_Representation        : constant Name_Id := N + $; -- GNAT
     Name_Complex_Representation         : constant Name_Id := N + $; -- GNAT
     Name_Constant_After_Elaboration     : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 592,603 ****
     Name_Linker_Options                 : constant Name_Id := N + $;
     Name_Linker_Section                 : constant Name_Id := N + $; -- GNAT
     Name_List                           : constant Name_Id := N + $;
! 
!    --  Note: Lock_Free is not in this list because its name matches the name of
!    --  the corresponding attribute. However, it is included in the definition
!    --  of the type Pragma_Id and the functions Get_Pragma_Id and Is_Pragma_Name
!    --  correctly recognize and process Lock_Free. Lock_Free is a GNAT pragma.
! 
     Name_Loop_Invariant                 : constant Name_Id := N + $; -- GNAT
     Name_Loop_Optimize                  : constant Name_Id := N + $; -- GNAT
     Name_Loop_Variant                   : constant Name_Id := N + $; -- GNAT
--- 600,606 ----
     Name_Linker_Options                 : constant Name_Id := N + $;
     Name_Linker_Section                 : constant Name_Id := N + $; -- GNAT
     Name_List                           : constant Name_Id := N + $;
!    Name_Lock_Free                      : constant Name_Id := N + $; -- GNAT
     Name_Loop_Invariant                 : constant Name_Id := N + $; -- GNAT
     Name_Loop_Optimize                  : constant Name_Id := N + $; -- GNAT
     Name_Loop_Variant                   : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 776,785 ****
     Name_Allow                          : constant Name_Id := N + $;
     Name_Amount                         : constant Name_Id := N + $;
     Name_As_Is                          : constant Name_Id := N + $;
-    Name_Attr_Long_Float                : constant Name_Id := N + $;
     Name_Assertion                      : constant Name_Id := N + $;
     Name_Assertions                     : constant Name_Id := N + $;
     Name_Attribute_Name                 : constant Name_Id := N + $;
     Name_Body_File_Name                 : constant Name_Id := N + $;
     Name_Boolean_Entry_Barriers         : constant Name_Id := N + $;
     Name_By_Any                         : constant Name_Id := N + $;
--- 779,788 ----
     Name_Allow                          : constant Name_Id := N + $;
     Name_Amount                         : constant Name_Id := N + $;
     Name_As_Is                          : constant Name_Id := N + $;
     Name_Assertion                      : constant Name_Id := N + $;
     Name_Assertions                     : constant Name_Id := N + $;
     Name_Attribute_Name                 : constant Name_Id := N + $;
+    Name_Auto                           : constant Name_Id := N + $;
     Name_Body_File_Name                 : constant Name_Id := N + $;
     Name_Boolean_Entry_Barriers         : constant Name_Id := N + $;
     Name_By_Any                         : constant Name_Id := N + $;
*************** package Snames is
*** 875,880 ****
--- 878,884 ----
     Name_Static                         : constant Name_Id := N + $;
     Name_Stack_Size                     : constant Name_Id := N + $;
     Name_Strict                         : constant Name_Id := N + $;
+    Name_Structural                     : constant Name_Id := N + $;
     Name_Subunit_File_Name              : constant Name_Id := N + $;
     Name_Suppressible                   : constant Name_Id := N + $;
     Name_Synchronous                    : constant Name_Id := N + $;
*************** package Snames is
*** 957,962 ****
--- 961,967 ----
     Name_Has_Tagged_Values              : constant Name_Id := N + $; -- GNAT
     Name_Identity                       : constant Name_Id := N + $;
     Name_Implicit_Dereference           : constant Name_Id := N + $; -- GNAT
+    Name_Index                          : constant Name_Id := N + $; -- Ada 22
     Name_Initialized                    : constant Name_Id := N + $; -- GNAT
     Name_Integer_Value                  : constant Name_Id := N + $; -- GNAT
     Name_Invalid_Value                  : constant Name_Id := N + $; -- GNAT
*************** package Snames is
*** 969,975 ****
     Name_Leading_Part                   : constant Name_Id := N + $;
     Name_Length                         : constant Name_Id := N + $;
     Name_Library_Level                  : constant Name_Id := N + $; -- GNAT
-    Name_Lock_Free                      : constant Name_Id := N + $; -- GNAT
     Name_Loop_Entry                     : constant Name_Id := N + $; -- GNAT
     Name_Machine_Emax                   : constant Name_Id := N + $;
     Name_Machine_Emin                   : constant Name_Id := N + $;
--- 974,979 ----
*************** package Snames is
*** 1374,1380 ****
--- 1378,1386 ----
     Name_Has_Element                      : constant Name_Id := N + $;
     Name_Forward_Iterator                 : constant Name_Id := N + $;
     Name_Reversible_Iterator              : constant Name_Id := N + $;
+    Name_uNext                            : constant Name_Id := N + $;
     Name_Previous                         : constant Name_Id := N + $;
+    Name_uPrevious                        : constant Name_Id := N + $;
     Name_Pseudo_Reference                 : constant Name_Id := N + $;
     Name_Reference_Control_Type           : constant Name_Id := N + $;
     Name_Get_Element_Access               : constant Name_Id := N + $;
*************** package Snames is
*** 1479,1484 ****
--- 1485,1491 ----
        Attribute_Has_Tagged_Values,
        Attribute_Identity,
        Attribute_Implicit_Dereference,
+       Attribute_Index,
        Attribute_Initialized,
        Attribute_Integer_Value,
        Attribute_Invalid_Value,
*************** package Snames is
*** 1491,1497 ****
        Attribute_Leading_Part,
        Attribute_Length,
        Attribute_Library_Level,
-       Attribute_Lock_Free,
        Attribute_Loop_Entry,
        Attribute_Machine_Emax,
        Attribute_Machine_Emin,
--- 1498,1503 ----
*************** package Snames is
*** 1737,1749 ****
        Pragma_Check_Float_Overflow,
        Pragma_Check_Name,
        Pragma_Check_Policy,
-       Pragma_Compile_Time_Error,
-       Pragma_Compile_Time_Warning,
        Pragma_Component_Alignment,
        Pragma_Convention_Identifier,
        Pragma_Debug_Policy,
-       Pragma_Detect_Blocking,
        Pragma_Default_Storage_Pool,
        Pragma_Disable_Atomic_Synchronization,
        Pragma_Discard_Names,
        Pragma_Elaboration_Checks,
--- 1743,1753 ----
        Pragma_Check_Float_Overflow,
        Pragma_Check_Name,
        Pragma_Check_Policy,
        Pragma_Component_Alignment,
        Pragma_Convention_Identifier,
        Pragma_Debug_Policy,
        Pragma_Default_Storage_Pool,
+       Pragma_Detect_Blocking,
        Pragma_Disable_Atomic_Synchronization,
        Pragma_Discard_Names,
        Pragma_Elaboration_Checks,
*************** package Snames is
*** 1818,1823 ****
--- 1822,1829 ----
        Pragma_Check,
        Pragma_Comment,
        Pragma_Common_Object,
+       Pragma_Compile_Time_Error,
+       Pragma_Compile_Time_Warning,
        Pragma_Complete_Representation,
        Pragma_Complex_Representation,
        Pragma_Constant_After_Elaboration,
*************** package Snames is
*** 1877,1882 ****
--- 1883,1889 ----
        Pragma_Linker_Options,
        Pragma_Linker_Section,
        Pragma_List,
+       Pragma_Lock_Free,
        Pragma_Loop_Invariant,
        Pragma_Loop_Optimize,
        Pragma_Loop_Variant,
*************** package Snames is
*** 1969,1975 ****
        Pragma_Fast_Math,
        Pragma_Interface,
        Pragma_Interrupt_Priority,
-       Pragma_Lock_Free,
        Pragma_Preelaborable_Initialization,
        Pragma_Priority,
        Pragma_Secondary_Stack_Size,
--- 1976,1981 ----
*************** package Snames is
*** 2061,2070 ****
     function Is_Pragma_Name (N : Name_Id) return Boolean;
     --  Test to see if the name N is the name of a recognized pragma. Note
     --  that pragmas CPU, Dispatching_Domain, Fast_Math, Interrupt_Priority,
!    --  Lock_Free, Priority, Storage_Size, and Storage_Unit are recognized
!    --  as pragmas by this function even though their names are separate from
!    --  the other pragma names. For this reason, clients should always use
!    --  this function, rather than do range tests on Name_Id values.
  
     function Is_Configuration_Pragma_Name (N : Name_Id) return Boolean;
     --  Test to see if the name N is the name of a recognized configuration
--- 2067,2076 ----
     function Is_Pragma_Name (N : Name_Id) return Boolean;
     --  Test to see if the name N is the name of a recognized pragma. Note
     --  that pragmas CPU, Dispatching_Domain, Fast_Math, Interrupt_Priority,
!    --  Priority, Storage_Size, and Storage_Unit are recognized as pragmas by
!    --  this function even though their names are separate from the other
!    --  pragma names. For this reason, clients should always use this function,
!    --  rather than do range tests on Name_Id values.
  
     function Is_Configuration_Pragma_Name (N : Name_Id) return Boolean;
     --  Test to see if the name N is the name of a recognized configuration
diff -Nrcpad gcc-12.2.0/gcc/ada/socket.c gcc-13.1.0/gcc/ada/socket.c
*** gcc-12.2.0/gcc/ada/socket.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/socket.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2003-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *          Copyright (C) 2003-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/spark_xrefs.adb gcc-13.1.0/gcc/ada/spark_xrefs.adb
*** gcc-12.2.0/gcc/ada/spark_xrefs.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/spark_xrefs.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/spark_xrefs.ads gcc-13.1.0/gcc/ada/spark_xrefs.ads
*** gcc-12.2.0/gcc/ada/spark_xrefs.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/spark_xrefs.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2011-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sprint.adb gcc-13.1.0/gcc/ada/sprint.adb
*** gcc-12.2.0/gcc/ada/sprint.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sprint.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Sprint is
*** 199,204 ****
--- 199,207 ----
     --  For the case of Semicolon False, no semicolon is removed or output, and
     --  all the aspects are printed on a single line.
  
+    procedure Sprint_At_End_Proc (Node : Node_Id);
+    --  Print At_End_Proc attribute if present
+ 
     procedure Sprint_Bar_List (List : List_Id);
     --  Print the given list with items separated by vertical bars
  
*************** package body Sprint is
*** 750,755 ****
--- 753,774 ----
        end if;
     end Sprint_Aspect_Specifications;
  
+    ------------------------
+    -- Sprint_At_End_Proc --
+    ------------------------
+ 
+    procedure Sprint_At_End_Proc (Node : Node_Id) is
+    begin
+       if Present (At_End_Proc (Node)) then
+          Write_Indent_Str ("at end");
+          Indent_Begin;
+          Write_Indent;
+          Sprint_Node (At_End_Proc (Node));
+          Write_Char (';');
+          Indent_End;
+       end if;
+    end Sprint_At_End_Proc;
+ 
     ---------------------
     -- Sprint_Bar_List --
     ---------------------
*************** package body Sprint is
*** 1226,1231 ****
--- 1245,1251 ----
              end if;
  
              Write_Char (';');
+             Sprint_At_End_Proc (Node);
  
           when N_Call_Marker =>
              null;
*************** package body Sprint is
*** 1341,1349 ****
           when N_Iterated_Component_Association =>
              Set_Debug_Sloc;
              Write_Str (" for ");
!             Write_Id (Defining_Identifier (Node));
!             Write_Str (" in ");
!             Sprint_Bar_List (Discrete_Choices (Node));
              Write_Str (" => ");
              Sprint_Node (Expression (Node));
  
--- 1361,1373 ----
           when N_Iterated_Component_Association =>
              Set_Debug_Sloc;
              Write_Str (" for ");
!             if Present (Iterator_Specification (Node)) then
!                Sprint_Node (Iterator_Specification (Node));
!             else
!                Write_Id (Defining_Identifier (Node));
!                Write_Str (" in ");
!                Sprint_Bar_List (Discrete_Choices (Node));
!             end if;
              Write_Str (" => ");
              Sprint_Node (Expression (Node));
  
*************** package body Sprint is
*** 1642,1647 ****
--- 1666,1672 ----
              Write_Indent_Str ("end ");
              Write_Id (Defining_Identifier (Node));
              Write_Char (';');
+             Sprint_At_End_Proc (Node);
  
           when N_Entry_Body_Formal_Part =>
              if Present (Entry_Index_Specification (Node)) then
*************** package body Sprint is
*** 2160,2173 ****
                 Indent_End;
              end if;
  
!             if Present (At_End_Proc (Node)) then
!                Write_Indent_Str ("at end");
!                Indent_Begin;
!                Write_Indent;
!                Sprint_Node (At_End_Proc (Node));
!                Write_Char (';');
!                Indent_End;
!             end if;
  
           when N_Identifier =>
              Set_Debug_Sloc;
--- 2185,2191 ----
                 Indent_End;
              end if;
  
!             Sprint_At_End_Proc (Node);
  
           when N_Identifier =>
              Set_Debug_Sloc;
*************** package body Sprint is
*** 2307,2312 ****
--- 2325,2335 ----
  
              Sprint_Node (Name (Node));
  
+             if Present (Iterator_Filter (Node)) then
+                Write_Str (" when ");
+                Sprint_Node (Iterator_Filter (Node));
+             end if;
+ 
           when N_Itype_Reference =>
              Write_Indent_Str_Sloc ("reference ");
              Write_Id (Itype (Node));
*************** package body Sprint is
*** 2690,2695 ****
--- 2713,2719 ----
              Sprint_End_Label
                (Handled_Statement_Sequence (Node), Defining_Unit_Name (Node));
              Write_Char (';');
+             Sprint_At_End_Proc (Node);
  
           when N_Package_Body_Stub =>
              Write_Indent_Str_Sloc ("package body ");
*************** package body Sprint is
*** 3132,3138 ****
           when N_Real_Literal =>
              Write_Ureal_With_Col_Check_Sloc (Realval (Node));
  
!          when N_Real_Range_Specification =>
              Write_Str_With_Col_Check_Sloc ("range ");
              Sprint_Node (Low_Bound (Node));
              Write_Str (" .. ");
--- 3156,3164 ----
           when N_Real_Literal =>
              Write_Ureal_With_Col_Check_Sloc (Realval (Node));
  
!          when N_Real_Range_Specification
!             | N_Signed_Integer_Type_Definition
!          =>
              Write_Str_With_Col_Check_Sloc ("range ");
              Sprint_Node (Low_Bound (Node));
              Write_Str (" .. ");
*************** package body Sprint is
*** 3248,3259 ****
  
              Write_Indent_Str ("end select;");
  
-          when N_Signed_Integer_Type_Definition =>
-             Write_Str_With_Col_Check_Sloc ("range ");
-             Sprint_Node (Low_Bound (Node));
-             Write_Str (" .. ");
-             Sprint_Node (High_Bound (Node));
- 
           when N_Single_Protected_Declaration =>
              Write_Indent_Str_Sloc ("protected ");
              Write_Id (Defining_Identifier (Node));
--- 3274,3279 ----
*************** package body Sprint is
*** 3293,3298 ****
--- 3313,3350 ----
              Set_Debug_Sloc;
              Write_String_Table_Entry (Strval (Node));
  
+          when N_Interpolated_String_Literal =>
+             Write_Char ('{');
+ 
+             declare
+                Str_Elem : Node_Id := First (Expressions (Node));
+                Is_First : Boolean := True;
+ 
+             begin
+                while Present (Str_Elem) loop
+                   if not Is_First then
+                      Write_Str (" & ");
+                   end if;
+ 
+                   if Nkind (Str_Elem) = N_String_Literal then
+                      Sprint_Node (Str_Elem);
+ 
+                   else
+                      Write_Char ('"');
+                      Write_Char ('{');
+                      Sprint_Node (Str_Elem);
+                      Write_Char ('}');
+                      Write_Char ('"');
+                   end if;
+ 
+                   Is_First := False;
+ 
+                   Next (Str_Elem);
+                end loop;
+             end;
+ 
+             Write_Char ('}');
+ 
           when N_Subprogram_Body =>
  
              --  Output extra blank line unless we are in freeze actions
*************** package body Sprint is
*** 3321,3326 ****
--- 3373,3379 ----
                (Handled_Statement_Sequence (Node),
                   Defining_Unit_Name (Specification (Node)));
              Write_Char (';');
+             Sprint_At_End_Proc (Node);
  
              if Is_List_Member (Node)
                and then Present (Next (Node))
*************** package body Sprint is
*** 3393,3398 ****
--- 3446,3452 ----
              Sprint_End_Label
                (Handled_Statement_Sequence (Node), Defining_Identifier (Node));
              Write_Char (';');
+             Sprint_At_End_Proc (Node);
  
           when N_Task_Body_Stub =>
              Write_Indent_Str_Sloc ("task body ");
diff -Nrcpad gcc-12.2.0/gcc/ada/sprint.ads gcc-13.1.0/gcc/ada/sprint.ads
*** gcc-12.2.0/gcc/ada/sprint.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sprint.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/stand.ads gcc-13.1.0/gcc/ada/stand.ads
*** gcc-12.2.0/gcc/ada/stand.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/stand.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/stringt.adb gcc-13.1.0/gcc/ada/stringt.adb
*** gcc-12.2.0/gcc/ada/stringt.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/stringt.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Stringt is
*** 441,447 ****
           for J in 1 .. String_Length (Id) loop
              C := Get_String_Char (Id, J);
  
!             if C = Character'Pos ('"') then
                 Write_Str ("""""");
              else
                 Write_Char_Code (C);
--- 441,447 ----
           for J in 1 .. String_Length (Id) loop
              C := Get_String_Char (Id, J);
  
!             if C = Get_Char_Code ('"') then
                 Write_Str ("""""");
              else
                 Write_Char_Code (C);
diff -Nrcpad gcc-12.2.0/gcc/ada/stringt.ads gcc-13.1.0/gcc/ada/stringt.ads
*** gcc-12.2.0/gcc/ada/stringt.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/stringt.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/stringt.h gcc-13.1.0/gcc/ada/stringt.h
*** gcc-12.2.0/gcc/ada/stringt.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/stringt.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/strub.adb gcc-13.1.0/gcc/ada/strub.adb
*** gcc-12.2.0/gcc/ada/strub.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/strub.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/strub.ads gcc-13.1.0/gcc/ada/strub.ads
*** gcc-12.2.0/gcc/ada/strub.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/strub.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2022, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --            Copyright (C) 2021-2023, Free Software Foundation, Inc.       --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/style.adb gcc-13.1.0/gcc/ada/style.adb
*** gcc-12.2.0/gcc/ada/style.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/style.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Style is
*** 126,134 ****
        elsif Error_Posted (Ref) or else Error_Posted (Def) then
           return;
  
!       --  Case of definition comes from source
  
!       elsif Comes_From_Source (Def) then
  
           --  Check same casing if we are checking references
  
--- 126,139 ----
        elsif Error_Posted (Ref) or else Error_Posted (Def) then
           return;
  
!       --  Case of definition comes from source, or a record component whose
!       --  Original_Record_Component comes from source.
  
!       elsif Comes_From_Source (Def) or else
!         (Ekind (Def) in Record_Field_Kind
!            and then Present (Original_Record_Component (Def))
!            and then Comes_From_Source (Original_Record_Component (Def)))
!       then
  
           --  Check same casing if we are checking references
  
diff -Nrcpad gcc-12.2.0/gcc/ada/style.ads gcc-13.1.0/gcc/ada/style.ads
*** gcc-12.2.0/gcc/ada/style.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/style.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Style is
*** 147,155 ****
     --  is that the starting column is appropriate to the indentation rules if
     --  Token_Ptr is the first token on the line.
  
!    procedure Check_Left_Paren
!      renames Style_Inst.Check_Left_Paren;
!    --  Called after scanning out a left parenthesis to check spacing
  
     procedure Check_Line_Terminator (Len : Int)
       renames Style_Inst.Check_Line_Terminator;
--- 147,156 ----
     --  is that the starting column is appropriate to the indentation rules if
     --  Token_Ptr is the first token on the line.
  
!    procedure Check_Left_Paren_Square_Bracket
!      renames Style_Inst.Check_Left_Paren_Square_Bracket;
!    --  Called after scanning out a left parenthesis to check spacing. If
!    --  Ada_Version >= Ada_2022 then called similarly for a left square bracket.
  
     procedure Check_Line_Terminator (Len : Int)
       renames Style_Inst.Check_Line_Terminator;
diff -Nrcpad gcc-12.2.0/gcc/ada/styleg.adb gcc-13.1.0/gcc/ada/styleg.adb
*** gcc-12.2.0/gcc/ada/styleg.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/styleg.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Styleg is
*** 721,735 ****
        end if;
     end Check_Indentation;
  
!    ----------------------
!    -- Check_Left_Paren --
!    ----------------------
  
     --  In check token mode (-gnatyt), left paren must not be preceded by an
     --  identifier character or digit (a separating space is required) and may
     --  never be followed by a space.
  
!    procedure Check_Left_Paren is
     begin
        if Style_Check_Tokens then
           if Token_Ptr > Source_First (Current_Source_File)
--- 721,736 ----
        end if;
     end Check_Indentation;
  
!    -------------------------------------
!    -- Check_Left_Paren_Square_Bracket --
!    -------------------------------------
  
     --  In check token mode (-gnatyt), left paren must not be preceded by an
     --  identifier character or digit (a separating space is required) and may
     --  never be followed by a space.
+    --  Same applies for the left square bracket starting from Ada version 2022.
  
!    procedure Check_Left_Paren_Square_Bracket is
     begin
        if Style_Check_Tokens then
           if Token_Ptr > Source_First (Current_Source_File)
*************** package body Styleg is
*** 740,746 ****
  
           Check_No_Space_After;
        end if;
!    end Check_Left_Paren;
  
     ---------------------------
     -- Check_Line_Max_Length --
--- 741,747 ----
  
           Check_No_Space_After;
        end if;
!    end Check_Left_Paren_Square_Bracket;
  
     ---------------------------
     -- Check_Line_Max_Length --
diff -Nrcpad gcc-12.2.0/gcc/ada/styleg.ads gcc-13.1.0/gcc/ada/styleg.ads
*** gcc-12.2.0/gcc/ada/styleg.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/styleg.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Styleg is
*** 111,118 ****
     --  is that the starting column is appropriate to the indentation rules if
     --  Token_Ptr is the first token on the line.
  
!    procedure Check_Left_Paren;
!    --  Called after scanning out a left parenthesis to check spacing
  
     procedure Check_Line_Max_Length (Len : Nat);
     --  Called with Scan_Ptr pointing to the first line terminator character
--- 111,119 ----
     --  is that the starting column is appropriate to the indentation rules if
     --  Token_Ptr is the first token on the line.
  
!    procedure Check_Left_Paren_Square_Bracket;
!    --  Called after scanning out a left parenthesis to check spacing. If
!    --  Ada_Version >= Ada_2022 then called similarly for a left square bracket.
  
     procedure Check_Line_Max_Length (Len : Nat);
     --  Called with Scan_Ptr pointing to the first line terminator character
diff -Nrcpad gcc-12.2.0/gcc/ada/stylesw.adb gcc-13.1.0/gcc/ada/stylesw.adb
*** gcc-12.2.0/gcc/ada/stylesw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/stylesw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/stylesw.ads gcc-13.1.0/gcc/ada/stylesw.ads
*** gcc-12.2.0/gcc/ada/stylesw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/stylesw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/switch-b.adb gcc-13.1.0/gcc/ada/switch-b.adb
*** gcc-12.2.0/gcc/ada/switch-b.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch-b.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Switch.B is
*** 158,163 ****
--- 158,184 ----
  
                 elsif Underscore then
                    Set_Underscored_Debug_Flag (C);
+ 
+                   if Debug_Flag_Underscore_C then
+                      Enable_CUDA_Expansion := True;
+                   end if;
+                   if Debug_Flag_Underscore_D then
+                      Enable_CUDA_Device_Expansion := True;
+                   end if;
+                   if Enable_CUDA_Expansion and Enable_CUDA_Device_Expansion
+                   then
+                      Bad_Switch (Switch_Chars);
+                   elsif C = 'c' then
+                      --  specify device library name
+                      if Ptr >= Max or else Switch_Chars (Ptr + 1) /= '=' then
+                         Bad_Switch (Switch_Chars);
+                      else
+                         CUDA_Device_Library_Name :=
+                            new String'(Switch_Chars (Ptr + 2 .. Max));
+                         Ptr := Max;
+                      end if;
+                   end if;
+ 
                    Underscore := False;
  
                 --    letter
*************** package body Switch.B is
*** 376,381 ****
--- 397,408 ----
                 Bad_Switch (Switch_Chars);
              end if;
  
+          --  Processing for k switch
+ 
+          when 'k' =>
+             Ptr := Ptr + 1;
+             Check_Elaboration_Flags := False;
+ 
           --  Processing for K switch
  
           when 'K' =>
diff -Nrcpad gcc-12.2.0/gcc/ada/switch-b.ads gcc-13.1.0/gcc/ada/switch-b.ads
*** gcc-12.2.0/gcc/ada/switch-b.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch-b.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/switch-c.adb gcc-13.1.0/gcc/ada/switch-c.adb
*** gcc-12.2.0/gcc/ada/switch-c.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch-c.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 28,34 ****
  --  circularities, especially for back ends using Adabkend.
  
  with Debug;    use Debug;
- with Errout;   use Errout;
  with Lib;      use Lib;
  with Osint;    use Osint;
  with Opt;      use Opt;
--- 28,33 ----
*************** package body Switch.C is
*** 390,395 ****
--- 389,397 ----
                       elsif Underscore then
                          Set_Underscored_Debug_Flag (C);
                          Store_Compilation_Switch ("-gnatd_" & C);
+                         if Debug_Flag_Underscore_C then
+                            Enable_CUDA_Expansion := True;
+                         end if;
  
                       --  Normal flag
  
*************** package body Switch.C is
*** 600,606 ****
                       Exception_Extra_Info := True;
                       Ptr := Ptr + 1;
  
!                   --  -gnatef (full source path for brief error messages)
  
                    when 'f' =>
                       Store_Switch := False;
--- 602,609 ----
                       Exception_Extra_Info := True;
                       Ptr := Ptr + 1;
  
!                   --  -gnatef (full source path for brief error messages and
!                   --  absolute paths for -fdiagnostics-format=json)
  
                    when 'f' =>
                       Store_Switch := False;
*************** package body Switch.C is
*** 1323,1329 ****
                       Ptr := Ptr + 1;
                       C := Switch_Chars (Ptr);
  
!                      if Set_Dot_Warning_Switch (C) then
                          Store_Compilation_Switch ("-gnatw." & C);
                       else
                          Bad_Switch ("-gnatw." & Switch_Chars (Ptr .. Max));
--- 1326,1332 ----
                       Ptr := Ptr + 1;
                       C := Switch_Chars (Ptr);
  
!                      if Set_Warning_Switch ('.', C) then
                          Store_Compilation_Switch ("-gnatw." & C);
                       else
                          Bad_Switch ("-gnatw." & Switch_Chars (Ptr .. Max));
*************** package body Switch.C is
*** 1335,1341 ****
                       Ptr := Ptr + 1;
                       C := Switch_Chars (Ptr);
  
!                      if Set_Underscore_Warning_Switch (C) then
                          Store_Compilation_Switch ("-gnatw_" & C);
                       else
                          Bad_Switch ("-gnatw_" & Switch_Chars (Ptr .. Max));
--- 1338,1344 ----
                       Ptr := Ptr + 1;
                       C := Switch_Chars (Ptr);
  
!                      if Set_Warning_Switch ('_', C) then
                          Store_Compilation_Switch ("-gnatw_" & C);
                       else
                          Bad_Switch ("-gnatw_" & Switch_Chars (Ptr .. Max));
*************** package body Switch.C is
*** 1344,1350 ****
                    --  Normal case
  
                    else
!                      if Set_Warning_Switch (C) then
                          Store_Compilation_Switch ("-gnatw" & C);
                       else
                          Bad_Switch ("-gnatw" & Switch_Chars (Ptr .. Max));
--- 1347,1353 ----
                    --  Normal case
  
                    else
!                      if Set_Warning_Switch (Plain, C) then
                          Store_Compilation_Switch ("-gnatw" & C);
                       else
                          Bad_Switch ("-gnatw" & Switch_Chars (Ptr .. Max));
*************** package body Switch.C is
*** 1387,1398 ****
                 Ptr := Ptr + 1;
                 Xref_Active := False;
  
!             --  -gnatX (language extensions)
  
              when 'X' =>
                 Ptr := Ptr + 1;
!                Ada_Version          := Ada_With_Extensions;
!                Ada_Version_Explicit := Ada_With_Extensions;
                 Ada_Version_Pragma   := Empty;
  
              --  -gnaty (style checks)
--- 1390,1410 ----
                 Ptr := Ptr + 1;
                 Xref_Active := False;
  
!             --  -gnatX (core language extensions)
  
              when 'X' =>
                 Ptr := Ptr + 1;
! 
!                if Ptr <= Max and then Switch_Chars (Ptr) = '0' then
!                   --  -gnatX0 (all language extensions)
! 
!                   Ptr := Ptr + 1;
!                   Ada_Version := Ada_With_All_Extensions;
!                else
!                   Ada_Version := Ada_With_Core_Extensions;
!                end if;
! 
!                Ada_Version_Explicit := Ada_Version;
                 Ada_Version_Pragma   := Empty;
  
              --  -gnaty (style checks)
diff -Nrcpad gcc-12.2.0/gcc/ada/switch-c.ads gcc-13.1.0/gcc/ada/switch-c.ads
*** gcc-12.2.0/gcc/ada/switch-c.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch-c.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/switch-m.adb gcc-13.1.0/gcc/ada/switch-m.adb
*** gcc-12.2.0/gcc/ada/switch-m.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch-m.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/switch-m.ads gcc-13.1.0/gcc/ada/switch-m.ads
*** gcc-12.2.0/gcc/ada/switch-m.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch-m.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/switch.adb gcc-13.1.0/gcc/ada/switch.adb
*** gcc-12.2.0/gcc/ada/switch.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/switch.ads gcc-13.1.0/gcc/ada/switch.ads
*** gcc-12.2.0/gcc/ada/switch.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/switch.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/sysdep.c gcc-13.1.0/gcc/ada/sysdep.c
*** gcc-12.2.0/gcc/ada/sysdep.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/sysdep.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2022, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *         Copyright (C) 1992-2023, Free Software Foundation, Inc.          *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** __gnat_ttyname (int filedes)
*** 217,222 ****
--- 217,223 ----
  #endif /* __CYGWIN__ */
  
  #if defined (__CYGWIN__) || defined (__MINGW32__)
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  
  int __gnat_is_windows_xp (void);
*************** __gnat_ttyname (int filedes ATTRIBUTE_UN
*** 323,333 ****
    || defined (__QNX__)
  
  # ifdef __MINGW32__
! #  if OLD_MINGW
! #   include <termios.h>
! #  else
! #   include <conio.h>  /* for getch(), kbhit() */
! #  endif
  # else
  #  include <termios.h>
  # endif
--- 324,330 ----
    || defined (__QNX__)
  
  # ifdef __MINGW32__
! #  include <conio.h>  /* for getch(), kbhit() */
  # else
  #  include <termios.h>
  # endif
*************** getc_immediate_common (FILE *stream,
*** 593,598 ****
--- 590,596 ----
     Ada programs.  */
  
  #ifdef WINNT
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  
  /* Provide functions to echo the values passed to WinMain (windows bindings
diff -Nrcpad gcc-12.2.0/gcc/ada/table.adb gcc-13.1.0/gcc/ada/table.adb
*** gcc-12.2.0/gcc/ada/table.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/table.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** with System;  use System;
*** 30,36 ****
  
  with System.Memory; use System.Memory;
  
! with Unchecked_Conversion;
  
  pragma Elaborate_All (Output);
  
--- 30,36 ----
  
  with System.Memory; use System.Memory;
  
! with Ada.Unchecked_Conversion;
  
  pragma Elaborate_All (Output);
  
*************** package body Table is
*** 58,65 ****
        --  internally in this package, and cannot never result in any instances
        --  of improperly aliased pointers for the client of the package.
  
!       function To_Address is new Unchecked_Conversion (Table_Ptr, Address);
!       function To_Pointer is new Unchecked_Conversion (Address, Table_Ptr);
  
        pragma Warnings (On);
  
--- 58,65 ----
        --  internally in this package, and cannot never result in any instances
        --  of improperly aliased pointers for the client of the package.
  
!       function To_Address is new Ada.Unchecked_Conversion (Table_Ptr, Address);
!       function To_Pointer is new Ada.Unchecked_Conversion (Address, Table_Ptr);
  
        pragma Warnings (On);
  
diff -Nrcpad gcc-12.2.0/gcc/ada/table.ads gcc-13.1.0/gcc/ada/table.ads
*** gcc-12.2.0/gcc/ada/table.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/table.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/targext.c gcc-13.1.0/gcc/ada/targext.c
*** gcc-12.2.0/gcc/ada/targext.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/targext.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2005-2022, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *        Copyright (C) 2005-2023, Free Software Foundation, Inc.           *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/targparm.adb gcc-13.1.0/gcc/ada/targparm.adb
*** gcc-12.2.0/gcc/ada/targparm.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/targparm.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Targparm is
*** 48,54 ****
        D32,  --   Duration_32_Bits
        DEN,  --   Denorm
        EXS,  --   Exit_Status_Supported
-       FEX,  --   Frontend_Exceptions
        MOV,  --   Machine_Overflows
        MRN,  --   Machine_Rounds
        PAS,  --   Preallocated_Stacks
--- 48,53 ----
*************** package body Targparm is
*** 79,85 ****
     D32_Str : aliased constant Source_Buffer := "Duration_32_Bits";
     DEN_Str : aliased constant Source_Buffer := "Denorm";
     EXS_Str : aliased constant Source_Buffer := "Exit_Status_Supported";
-    FEX_Str : aliased constant Source_Buffer := "Frontend_Exceptions";
     MOV_Str : aliased constant Source_Buffer := "Machine_Overflows";
     MRN_Str : aliased constant Source_Buffer := "Machine_Rounds";
     PAS_Str : aliased constant Source_Buffer := "Preallocated_Stacks";
--- 78,83 ----
*************** package body Targparm is
*** 110,116 ****
        D32 => D32_Str'Access,
        DEN => DEN_Str'Access,
        EXS => EXS_Str'Access,
-       FEX => FEX_Str'Access,
        MOV => MOV_Str'Access,
        MRN => MRN_Str'Access,
        PAS => PAS_Str'Access,
--- 108,113 ----
*************** package body Targparm is
*** 800,806 ****
                       when D32 => Duration_32_Bits_On_Target          := Result;
                       when DEN => Denorm_On_Target                    := Result;
                       when EXS => Exit_Status_Supported_On_Target     := Result;
-                      when FEX => Frontend_Exceptions_On_Target       := Result;
                       when MOV => Machine_Overflows_On_Target         := Result;
                       when MRN => Machine_Rounds_On_Target            := Result;
                       when PAS => Preallocated_Stacks_On_Target       := Result;
--- 797,802 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/targparm.ads gcc-13.1.0/gcc/ada/targparm.ads
*** gcc-12.2.0/gcc/ada/targparm.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/targparm.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Targparm is
*** 263,271 ****
     ZCX_By_Default_On_Target : Boolean := False;
     --  Indicates if zero cost scheme for exceptions
  
-    Frontend_Exceptions_On_Target : Boolean := True;
-    --  Indicates if we're using a front-end scheme for exceptions
- 
     ------------------------------------
     -- Run-Time Library Configuration --
     ------------------------------------
--- 263,268 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/tbuild.adb gcc-13.1.0/gcc/ada/tbuild.adb
*** gcc-12.2.0/gcc/ada/tbuild.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/tbuild.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Tbuild is
*** 882,889 ****
        --  We don't really want to allow E_Void here, but existing code passes
        --  it.
  
!       Loc         : constant Source_Ptr := Sloc (Expr);
!       Result      : Node_Id;
  
     begin
        --  If the expression is already of the correct type, then nothing
--- 882,889 ----
        --  We don't really want to allow E_Void here, but existing code passes
        --  it.
  
!       Loc    : constant Source_Ptr := Sloc (Expr);
!       Result : Node_Id;
  
     begin
        --  If the expression is already of the correct type, then nothing
diff -Nrcpad gcc-12.2.0/gcc/ada/tbuild.ads gcc-13.1.0/gcc/ada/tbuild.ads
*** gcc-12.2.0/gcc/ada/tbuild.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/tbuild.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/tempdir.adb gcc-13.1.0/gcc/ada/tempdir.adb
*** gcc-12.2.0/gcc/ada/tempdir.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/tempdir.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/tempdir.ads gcc-13.1.0/gcc/ada/tempdir.ads
*** gcc-12.2.0/gcc/ada/tempdir.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/tempdir.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2003-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/terminals.c gcc-13.1.0/gcc/ada/terminals.c
*** gcc-12.2.0/gcc/ada/terminals.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/terminals.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2008-2022, 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- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *                     Copyright (C) 2008-2023, 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- *
*************** __gnat_setup_winsize (void *desc ATTRIBU
*** 151,156 ****
--- 151,157 ----
  #include <stdio.h>
  #include <stdlib.h>
  
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #include <winternl.h>
  #include <io.h>
*************** __gnat_setup_winsize (void *desc ATTRIBU
*** 1123,1134 ****
  
  #define CDISABLE _POSIX_VDISABLE
  
- /* On HP-UX and Sun system, there is a bzero function but with a different
-    signature. Use memset instead */
- #if defined (__hpux__) || defined (__sun__) || defined (_AIX)
- #   define bzero(s,n) memset (s,0,n)
- #endif
- 
  /* POSIX does not specify how to open the master side of a terminal.Several
     methods are available (system specific):
        1- using a cloning device (USE_CLONE_DEVICE)
--- 1124,1129 ----
*************** child_setup_tty (int fd)
*** 1289,1296 ****
    struct termios s;
    int    status;
  
!   /* ensure that s is filled with 0 */
!   bzero (&s, sizeof (s));
  
    /* Get the current terminal settings */
    status = tcgetattr (fd, &s);
--- 1284,1298 ----
    struct termios s;
    int    status;
  
!   /* Ensure that s is filled with 0.
! 
!      Note that we avoid using bzero for a few reasons:
!        - On HP-UX and Sun system, there is a bzero function but with
!          a different signature, thus making the use of bzero more
! 	 complicated on these platforms (we used to define a bzero
! 	 macro that rewrote calls to bzero into calls to memset);
!        - bzero is deprecated (marked as LEGACY in POSIX.1-2001).  */
!   memset (&s, 0, sizeof (s));
  
    /* Get the current terminal settings */
    status = tcgetattr (fd, &s);
diff -Nrcpad gcc-12.2.0/gcc/ada/tracebak.c gcc-13.1.0/gcc/ada/tracebak.c
*** gcc-12.2.0/gcc/ada/tracebak.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/tracebak.c	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2000-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                          C Implementation File                           *
   *                                                                          *
!  *            Copyright (C) 2000-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
*************** extern void (*Unlock_Task) (void);
*** 93,98 ****
--- 93,99 ----
  
  #if defined (_WIN64) && defined (__SEH__)
  
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  
  #define IS_BAD_PTR(ptr) (IsBadCodePtr((FARPROC)ptr))
*************** struct layout
*** 455,460 ****
--- 456,462 ----
  #elif defined (__i386__) || defined (__x86_64__)
  
  #if defined (__WIN32)
+ #define WIN32_LEAN_AND_MEAN
  #include <windows.h>
  #define IS_BAD_PTR(ptr) (IsBadCodePtr((FARPROC)ptr))
  #elif defined (__sun__)
*************** is_return_from(void *symbol_addr, void *
*** 555,560 ****
--- 557,565 ----
  
  #if defined (__aarch64__)
  #define PC_ADJUST -4
+ #elif defined (__ARMEL__)
+ #define PC_ADJUST -2
+ #define USING_ARM_UNWINDING 1
  #else
  #error Unhandled QNX architecture.
  #endif
diff -Nrcpad gcc-12.2.0/gcc/ada/treepr.adb gcc-13.1.0/gcc/ada/treepr.adb
*** gcc-12.2.0/gcc/ada/treepr.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/treepr.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,28 ****
--- 23,29 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
+ with Ada.Unchecked_Conversion;
  with Aspects;              use Aspects;
  with Atree;                use Atree;
  with Debug;                use Debug;
*************** with SCIL_LL;              use SCIL_LL;
*** 49,55 ****
  with Uintp;                use Uintp;
  with Urealp;               use Urealp;
  with Uname;                use Uname;
- with Unchecked_Conversion;
  
  package body Treepr is
  
--- 50,55 ----
*************** package body Treepr is
*** 132,143 ****
     -- Local Procedures --
     ----------------------
  
!    function From_Union is new Unchecked_Conversion (Union_Id, Uint);
!    function From_Union is new Unchecked_Conversion (Union_Id, Ureal);
! 
!    function To_Mixed (S : String) return String;
!    --  Turns an identifier into Mixed_Case. For bootstrap reasons, we cannot
!    --  use To_Mixed function from System.Case_Util.
  
     function Image (F : Node_Or_Entity_Field) return String;
  
--- 132,139 ----
     -- Local Procedures --
     ----------------------
  
!    function From_Union is new Ada.Unchecked_Conversion (Union_Id, Uint);
!    function From_Union is new Ada.Unchecked_Conversion (Union_Id, Ureal);
  
     function Image (F : Node_Or_Entity_Field) return String;
  
*************** package body Treepr is
*** 260,266 ****
     ----------
  
     function Hash (Key : Int) return GNAT.Bucket_Range_Type is
!       function Cast is new Unchecked_Conversion
          (Source => Int, Target => GNAT.Bucket_Range_Type);
     begin
        return Cast (Key);
--- 256,262 ----
     ----------
  
     function Hash (Key : Int) return GNAT.Bucket_Range_Type is
!       function Cast is new Ada.Unchecked_Conversion
          (Source => Int, Target => GNAT.Bucket_Range_Type);
     begin
        return Cast (Key);
*************** package body Treepr is
*** 273,280 ****
     function Image (F : Node_Or_Entity_Field) return String is
     begin
        case F is
!          when F_Alloc_For_BIP_Return =>
!             return "Alloc_For_BIP_Return";
           when F_Assignment_OK =>
              return "Assignment_OK";
           when F_Backwards_OK =>
--- 269,277 ----
     function Image (F : Node_Or_Entity_Field) return String is
     begin
        case F is
!          --  We special case the following; otherwise the compiler will use
!          --  the usual Mixed_Case convention.
! 
           when F_Assignment_OK =>
              return "Assignment_OK";
           when F_Backwards_OK =>
*************** package body Treepr is
*** 371,378 ****
  
           when others =>
              declare
!                Result : constant String := To_Mixed (F'Img);
              begin
                 return Result (3 .. Result'Last); -- Remove "F_"
              end;
        end case;
--- 368,376 ----
  
           when others =>
              declare
!                Result : String := F'Img;
              begin
+                To_Mixed (Result);
                 return Result (3 .. Result'Last); -- Remove "F_"
              end;
        end case;
*************** package body Treepr is
*** 539,545 ****
           return;
        end if;
  
!       if E = No_Elist then
           Write_Str ("<no elist>");
  
        elsif Is_Empty_Elmt_List (E) then
--- 537,543 ----
           return;
        end if;
  
!       if No (E) then
           Write_Str ("<no elist>");
  
        elsif Is_Empty_Elmt_List (E) then
*************** package body Treepr is
*** 880,886 ****
           when Uint_Field =>
              declare
                 Val : constant Uint := Get_Uint (N, FD.Offset);
!                function Cast is new Unchecked_Conversion (Uint, Int);
              begin
                 if Present (Val) then
                    Print_Initial;
--- 878,884 ----
           when Uint_Field =>
              declare
                 Val : constant Uint := Get_Uint (N, FD.Offset);
!                function Cast is new Ada.Unchecked_Conversion (Uint, Int);
              begin
                 if Present (Val) then
                    Print_Initial;
*************** package body Treepr is
*** 895,901 ****
              | Nonzero_Uint_Field =>
              declare
                 Val : constant Uint := Get_Valid_Uint (N, FD.Offset);
!                function Cast is new Unchecked_Conversion (Uint, Int);
              begin
                 Print_Initial;
                 UI_Write (Val, Format);
--- 893,899 ----
              | Nonzero_Uint_Field =>
              declare
                 Val : constant Uint := Get_Valid_Uint (N, FD.Offset);
!                function Cast is new Ada.Unchecked_Conversion (Uint, Int);
              begin
                 Print_Initial;
                 UI_Write (Val, Format);
*************** package body Treepr is
*** 916,922 ****
           when Ureal_Field =>
              declare
                 Val : constant Ureal := Get_Ureal (N, FD.Offset);
!                function Cast is new Unchecked_Conversion (Ureal, Int);
              begin
                 if Val /= No_Ureal then
                    Print_Initial;
--- 914,920 ----
           when Ureal_Field =>
              declare
                 Val : constant Ureal := Get_Ureal (N, FD.Offset);
!                function Cast is new Ada.Unchecked_Conversion (Ureal, Int);
              begin
                 if Val /= No_Ureal then
                    Print_Initial;
*************** package body Treepr is
*** 980,986 ****
     exception
        when others =>
           declare
!             function Cast is new Unchecked_Conversion (Field_Size_32_Bit, Int);
           begin
              Write_Eol;
              Print_Initial;
--- 978,985 ----
     exception
        when others =>
           declare
!             function Cast is new
!               Ada.Unchecked_Conversion (Field_Size_32_Bit, Int);
           begin
              Write_Eol;
              Print_Initial;
*************** package body Treepr is
*** 1142,1162 ****
     procedure Print_Name (N : Name_Id) is
     begin
        if Phase = Printing then
!          if N = No_Name then
!             Print_Str ("<No_Name>");
! 
!          elsif N = Error_Name then
!             Print_Str ("<Error_Name>");
! 
!          elsif Is_Valid_Name (N) then
!             Get_Name_String (N);
!             Print_Char ('"');
!             Write_Name (N);
!             Print_Char ('"');
! 
!          else
!             Print_Str ("<invalid name>");
!          end if;
        end if;
     end Print_Name;
  
--- 1141,1147 ----
     procedure Print_Name (N : Name_Id) is
     begin
        if Phase = Printing then
!          Write_Name_For_Debug (N, Quote => """");
        end if;
     end Print_Name;
  
*************** package body Treepr is
*** 1229,1235 ****
  
           else
              Sfile := Get_Source_File_Index (Sloc (N));
!             Print_Int (Int (Sloc (N)) - Int (Source_Text (Sfile)'First));
              Write_Str ("  ");
              Write_Location (Sloc (N));
           end if;
--- 1214,1220 ----
  
           else
              Sfile := Get_Source_File_Index (Sloc (N));
!             Print_Int (Int (Sloc (N) - Source_Text (Sfile)'First));
              Write_Str ("  ");
              Write_Location (Sloc (N));
           end if;
*************** package body Treepr is
*** 1684,1691 ****
     --------------------------
  
     procedure Print_Str_Mixed_Case (S : String) is
     begin
!       Print_Str (To_Mixed (S));
     end Print_Str_Mixed_Case;
  
     ----------------
--- 1669,1678 ----
     --------------------------
  
     procedure Print_Str_Mixed_Case (S : String) is
+       Tmp : String := S;
     begin
!       To_Mixed (Tmp);
!       Print_Str (Tmp);
     end Print_Str_Mixed_Case;
  
     ----------------
*************** package body Treepr is
*** 1819,1835 ****
        Next_Serial_Number := Next_Serial_Number + 1;
     end Set_Serial_Number;
  
-    --------------
-    -- To_Mixed --
-    --------------
- 
-    function To_Mixed (S : String) return String is
-    begin
-       return Result : String (S'Range) := S do
-          To_Mixed (Result);
-       end return;
-    end To_Mixed;
- 
     ---------------
     -- Tree_Dump --
     ---------------
--- 1806,1811 ----
*************** package body Treepr is
*** 1878,1884 ****
  
           Write_Eol;
           Write_Str ("Tree created for ");
!          Write_Unit_Name (Unit_Name (Main_Unit));
           Underline;
           Print_Node_Subtree (Cunit (Main_Unit));
           Write_Eol;
--- 1854,1860 ----
  
           Write_Eol;
           Write_Str ("Tree created for ");
!          Write_Unit_Name_For_Debug (Unit_Name (Main_Unit));
           Underline;
           Print_Node_Subtree (Cunit (Main_Unit));
           Write_Eol;
diff -Nrcpad gcc-12.2.0/gcc/ada/treepr.ads gcc-13.1.0/gcc/ada/treepr.ads
*** gcc-12.2.0/gcc/ada/treepr.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/treepr.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/ttypes.ads gcc-13.1.0/gcc/ada/ttypes.ads
*** gcc-12.2.0/gcc/ada/ttypes.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/ttypes.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/types.adb gcc-13.1.0/gcc/ada/types.adb
*** gcc-12.2.0/gcc/ada/types.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/types.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/types.ads gcc-13.1.0/gcc/ada/types.ads
*** gcc-12.2.0/gcc/ada/types.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/types.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is 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,47 ****
  --  2s-complement. If there are any machines for which this is not a correct
  --  assumption, a significant number of changes will be required.
  
  with System;
- with Unchecked_Conversion;
- with Unchecked_Deallocation;
  
  package Types is
     pragma Preelaborate;
--- 39,47 ----
  --  2s-complement. If there are any machines for which this is not a correct
  --  assumption, a significant number of changes will be required.
  
+ with Ada.Unchecked_Conversion;
+ with Ada.Unchecked_Deallocation;
  with System;
  
  package Types is
     pragma Preelaborate;
*************** package Types is
*** 117,123 ****
     type String_Ptr_Const is access constant String;
     --  Standard character and string pointers
  
!    procedure Free is new Unchecked_Deallocation (String, String_Ptr);
     --  Procedure for freeing dynamically allocated String values
  
     subtype Big_String is String (Positive);
--- 117,123 ----
     type String_Ptr_Const is access constant String;
     --  Standard character and string pointers
  
!    procedure Free is new Ada.Unchecked_Deallocation (String, String_Ptr);
     --  Procedure for freeing dynamically allocated String values
  
     subtype Big_String is String (Positive);
*************** package Types is
*** 127,133 ****
     --  size of zero, since there are legitimate deallocations going on.
  
     function To_Big_String_Ptr is
!      new Unchecked_Conversion (System.Address, Big_String_Ptr);
     --  Used to obtain Big_String_Ptr values from external addresses
  
     subtype Word_Hex_String is String (1 .. 8);
--- 127,133 ----
     --  size of zero, since there are legitimate deallocations going on.
  
     function To_Big_String_Ptr is
!      new Ada.Unchecked_Conversion (System.Address, Big_String_Ptr);
     --  Used to obtain Big_String_Ptr values from external addresses
  
     subtype Word_Hex_String is String (1 .. 8);
*************** package Types is
*** 155,161 ****
     --  Text buffers for input files are allocated dynamically and this type
     --  is used to reference these text buffers.
  
!    procedure Free is new Unchecked_Deallocation (Text_Buffer, Text_Buffer_Ptr);
     --  Procedure for freeing dynamically allocated text buffers
  
     ------------------------------------------
--- 155,162 ----
     --  Text buffers for input files are allocated dynamically and this type
     --  is used to reference these text buffers.
  
!    procedure Free is
!      new Ada.Unchecked_Deallocation (Text_Buffer, Text_Buffer_Ptr);
     --  Procedure for freeing dynamically allocated text buffers
  
     ------------------------------------------
*************** package Types is
*** 246,251 ****
--- 247,256 ----
     --  (very often we conditionalize so that we set No_Location in normal mode
     --  and the corresponding source line in -gnatD mode).
  
+    function No (Loc : Source_Ptr) return Boolean is (Loc = No_Location);
+    function Present (Loc : Source_Ptr) return Boolean is (not No (Loc));
+    --  Tests for No_Location / not No_Location
+ 
     Standard_Location : constant Source_Ptr := -2;
     --  Used for all nodes in the representation of package Standard other than
     --  nodes representing the contents of Standard.ASCII. Note that testing for
*************** package Types is
*** 403,408 ****
--- 408,418 ----
     --  that are entities (i.e. nodes with an Nkind of N_Defining_xxx). All such
     --  nodes are extended nodes and these are the only extended nodes, so that
     --  in practice entity and extended nodes are synonymous.
+    --
+    --  Note that Sinfo.Nodes.N_Entity_Id is the same as Entity_Id, except it
+    --  has a predicate requiring the correct Nkind. Opt_N_Entity_Id is the same
+    --  as N_Entity_Id, except it allows Empty. (Sinfo.Nodes is generated by the
+    --  Gen_IL program.)
  
     subtype Node_Or_Entity_Id is Node_Id;
     --  A synonym for node types, used in cases where a given value may be used
diff -Nrcpad gcc-12.2.0/gcc/ada/types.h gcc-13.1.0/gcc/ada/types.h
*** gcc-12.2.0/gcc/ada/types.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/types.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2022, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *          Copyright (C) 1992-2023, Free Software Foundation, Inc.         *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/uintp.adb gcc-13.1.0/gcc/ada/uintp.adb
*** gcc-12.2.0/gcc/ada/uintp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/uintp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Uintp is
*** 300,310 ****
  
        function Better_In_Hex return Boolean is
           T16 : constant Valid_Uint := Uint_2**Int'(16);
!          A   : Valid_Uint;
  
        begin
-          A := UI_Abs (Input);
- 
           --  Small values up to 2**16 can always be in decimal
  
           if A < T16 then
--- 300,308 ----
  
        function Better_In_Hex return Boolean is
           T16 : constant Valid_Uint := Uint_2**Int'(16);
!          A   : Valid_Uint := UI_Abs (Input);
  
        begin
           --  Small values up to 2**16 can always be in decimal
  
           if A < T16 then
*************** package body Uintp is
*** 1431,1437 ****
  
              N := N / Uint_2;
              exit when N = Uint_0;
!             Squares := Squares *  Squares;
           end loop;
  
           Uintp.Release_And_Save (M, Result);
--- 1429,1435 ----
  
              N := N / Uint_2;
              exit when N = Uint_0;
!             Squares := Squares * Squares;
           end loop;
  
           Uintp.Release_And_Save (M, Result);
*************** package body Uintp is
*** 2233,2262 ****
  
     function UI_To_CC (Input : Valid_Uint) return Char_Code is
     begin
!       if Direct (Input) then
!          return Char_Code (Direct_Val (Input));
  
!       --  Case of input is more than one digit
  
        else
!          declare
!             In_Length : constant Int := N_Digits (Input);
!             In_Vec    : UI_Vector (1 .. In_Length);
!             Ret_CC    : Char_Code;
! 
!          begin
!             Init_Operand (Input, In_Vec);
! 
!             --  We assume value is positive
! 
!             Ret_CC := 0;
!             for Idx in In_Vec'Range loop
!                Ret_CC := Ret_CC * Char_Code (Base) +
!                                   Char_Code (abs In_Vec (Idx));
!             end loop;
! 
!             return Ret_CC;
!          end;
        end if;
     end UI_To_CC;
  
--- 2231,2247 ----
  
     function UI_To_CC (Input : Valid_Uint) return Char_Code is
     begin
!       --  Char_Code and Int have equal upper bounds, so simply guard against
!       --  negative Input and reuse conversion to Int. We trust that conversion
!       --  to Int will raise Constraint_Error when Input is too large.
  
!       pragma Assert
!         (Char_Code'First = 0 and then Int (Char_Code'Last) = Int'Last);
  
+       if Input >= Uint_0 then
+          return Char_Code (UI_To_Int (Input));
        else
!          raise Constraint_Error;
        end if;
     end UI_To_CC;
  
diff -Nrcpad gcc-12.2.0/gcc/ada/uintp.ads gcc-13.1.0/gcc/ada/uintp.ads
*** gcc-12.2.0/gcc/ada/uintp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/uintp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Uintp is
*** 70,75 ****
--- 70,76 ----
     Uint_80  : constant Uint;
     Uint_127 : constant Uint;
     Uint_128 : constant Uint;
+    Uint_256 : constant Uint;
  
     Uint_Minus_1   : constant Uint;
     Uint_Minus_2   : constant Uint;
*************** package Uintp is
*** 105,111 ****
     subtype Upos is Valid_Uint with Predicate => Upos >= Uint_1; -- positive
     subtype Nonzero_Uint is Valid_Uint with Predicate => Nonzero_Uint /= Uint_0;
     subtype Unegative is Valid_Uint with Predicate => Unegative < Uint_0;
!    subtype Ubool is Valid_Uint with Predicate => Ubool in Uint_0 | Uint_1;
     subtype Opt_Ubool is Uint with
       Predicate => No (Opt_Ubool) or else Opt_Ubool in Ubool;
  
--- 106,113 ----
     subtype Upos is Valid_Uint with Predicate => Upos >= Uint_1; -- positive
     subtype Nonzero_Uint is Valid_Uint with Predicate => Nonzero_Uint /= Uint_0;
     subtype Unegative is Valid_Uint with Predicate => Unegative < Uint_0;
!    subtype Ubool is Valid_Uint with
!      Predicate => Ubool = Uint_0 or else Ubool = Uint_1;
     subtype Opt_Ubool is Uint with
       Predicate => No (Opt_Ubool) or else Opt_Ubool in Ubool;
  
*************** private
*** 506,511 ****
--- 508,514 ----
     Uint_80  : constant Uint := Uint (Uint_Direct_Bias + 80);
     Uint_127 : constant Uint := Uint (Uint_Direct_Bias + 127);
     Uint_128 : constant Uint := Uint (Uint_Direct_Bias + 128);
+    Uint_256 : constant Uint := Uint (Uint_Direct_Bias + 256);
  
     Uint_Minus_1   : constant Uint := Uint (Uint_Direct_Bias - 1);
     Uint_Minus_2   : constant Uint := Uint (Uint_Direct_Bias - 2);
diff -Nrcpad gcc-12.2.0/gcc/ada/uintp.h gcc-13.1.0/gcc/ada/uintp.h
*** gcc-12.2.0/gcc/ada/uintp.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/uintp.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/uname.adb gcc-13.1.0/gcc/ada/uname.adb
*** gcc-12.2.0/gcc/ada/uname.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/uname.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Uname is
*** 411,461 ****
     --------------------------
  
     procedure Get_Unit_Name_String
!      (N      : Unit_Name_Type;
        Suffix : Boolean := True)
     is
-       Unit_Is_Body : Boolean;
- 
     begin
!       Get_Decoded_Name_String (N);
!       Unit_Is_Body := Name_Buffer (Name_Len) = 'b';
!       Set_Casing (Identifier_Casing (Source_Index (Main_Unit)));
! 
!       --  A special fudge, normally we don't have operator symbols present,
!       --  since it is always an error to do so. However, if we do, at this
!       --  stage it has the form:
! 
!       --    "and"
  
!       --  and the %s or %b has already been eliminated so put 2 chars back
  
!       if Name_Buffer (1) = '"' then
!          Name_Len := Name_Len + 2;
!       end if;
  
!       --  Now adjust the %s or %b to (spec) or (body)
  
!       if Suffix then
!          if Unit_Is_Body then
!             Name_Buffer (Name_Len - 1 .. Name_Len + 5) := " (body)";
!          else
!             Name_Buffer (Name_Len - 1 .. Name_Len + 5) := " (spec)";
           end if;
!       end if;
  
!       for J in 1 .. Name_Len loop
!          if Name_Buffer (J) = '-' then
!             Name_Buffer (J) := '.';
           end if;
        end loop;
- 
-       --  Adjust Name_Len
- 
-       if Suffix then
-          Name_Len := Name_Len + (7 - 2);
-       else
-          Name_Len := Name_Len - 2;
-       end if;
     end Get_Unit_Name_String;
  
     ----------------
--- 411,452 ----
     --------------------------
  
     procedure Get_Unit_Name_String
!      (Buf    : in out Bounded_String;
!       N      : Unit_Name_Type;
        Suffix : Boolean := True)
     is
     begin
!       Buf.Length := 0;
!       Append_Decoded (Buf, N);
  
!       --  Buf always ends with "%s" or "%b", which we either remove, or replace
!       --  with " (spec)" or " (body)". Set_Casing of Buf after checking for
!       --  (lower case) 's'/'b', and before appending (lower case) "spec" or
!       --  "body".
  
!       pragma Assert (Buf.Length >= 3);
!       pragma Assert (Buf.Chars (1) /= '"');
!       pragma Assert (Buf.Chars (Buf.Length) in 's' | 'b');
  
!       declare
!          S : constant String :=
!            (if Buf.Chars (Buf.Length) = 's' then " (spec)" else " (body)");
!       begin
!          Buf.Length := Buf.Length - 1; -- remove 's' or 'b'
!          pragma Assert (Buf.Chars (Buf.Length) = '%');
!          Buf.Length := Buf.Length - 1; -- remove '%'
!          Set_Casing (Buf, Identifier_Casing (Source_Index (Main_Unit)));
  
!          if Suffix then
!             Append (Buf, S);
           end if;
!       end;
  
!       for J in 1 .. Buf.Length loop
!          if Buf.Chars (J) = '-' then
!             Buf.Chars (J) := '.';
           end if;
        end loop;
     end Get_Unit_Name_String;
  
     ----------------
*************** package body Uname is
*** 721,729 ****
     ---------------------
  
     procedure Write_Unit_Name (N : Unit_Name_Type) is
     begin
!       Get_Unit_Name_String (N);
!       Write_Str (Name_Buffer (1 .. Name_Len));
     end Write_Unit_Name;
  
  end Uname;
--- 712,734 ----
     ---------------------
  
     procedure Write_Unit_Name (N : Unit_Name_Type) is
+       Buf : Bounded_String;
     begin
!       Get_Unit_Name_String (Buf, N);
!       Write_Str (Buf.Chars (1 .. Buf.Length));
     end Write_Unit_Name;
  
+    -------------------------------
+    -- Write_Unit_Name_For_Debug --
+    -------------------------------
+ 
+    procedure Write_Unit_Name_For_Debug (N : Unit_Name_Type) is
+    begin
+       if Is_Valid_Name (N) then
+          Write_Unit_Name (N);
+       else
+          Write_Name_For_Debug (N);
+       end if;
+    end Write_Unit_Name_For_Debug;
+ 
  end Uname;
diff -Nrcpad gcc-12.2.0/gcc/ada/uname.ads gcc-13.1.0/gcc/ada/uname.ads
*** gcc-12.2.0/gcc/ada/uname.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/uname.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package Uname is
*** 57,63 ****
  
     --  For display purposes, unit names are printed out with the suffix
     --  " (body)" for a body and " (spec)" for a spec. These formats are
!    --  used for the Write_Unit_Name and Get_Unit_Name_String subprograms.
  
     -----------------
     -- Subprograms --
--- 57,63 ----
  
     --  For display purposes, unit names are printed out with the suffix
     --  " (body)" for a body and " (spec)" for a spec. These formats are
!    --  used for Write_Unit_Name and Get_Unit_Name_String.
  
     -----------------
     -- Subprograms --
*************** package Uname is
*** 111,123 ****
     --    N_Subunit
  
     procedure Get_Unit_Name_String
!      (N      : Unit_Name_Type;
        Suffix : Boolean := True);
!    --  Places the display name of the unit in Name_Buffer and sets Name_Len to
!    --  the length of the stored name, i.e. it uses the same interface as the
!    --  Get_Name_String routine in the Namet package. The name is decoded and
!    --  contains an indication of spec or body if Boolean parameter Suffix is
!    --  True.
  
     function Is_Body_Name (N : Unit_Name_Type) return Boolean;
     --  Returns True iff the given name is the unit name of a body (i.e. if
--- 111,121 ----
     --    N_Subunit
  
     procedure Get_Unit_Name_String
!      (Buf    : in out Bounded_String;
!       N      : Unit_Name_Type;
        Suffix : Boolean := True);
!    --  Puts the display name for N in Buf. The name is decoded and contains an
!    --  indication of spec or body if Suffix is True.
  
     function Is_Body_Name (N : Unit_Name_Type) return Boolean;
     --  Returns True iff the given name is the unit name of a body (i.e. if
*************** package Uname is
*** 161,167 ****
     --     result = A.R.C (body)
     --
     --   See spec of Load_Unit for extensive discussion of why this routine
!    --   needs to be used (the call in the body of Load_Unit is the only one).
  
     function Uname_Ge (Left, Right : Unit_Name_Type) return Boolean;
     function Uname_Gt (Left, Right : Unit_Name_Type) return Boolean;
--- 159,165 ----
     --     result = A.R.C (body)
     --
     --   See spec of Load_Unit for extensive discussion of why this routine
!    --   needs to be used (the calls in Load_Unit are the only ones).
  
     function Uname_Ge (Left, Right : Unit_Name_Type) return Boolean;
     function Uname_Gt (Left, Right : Unit_Name_Type) return Boolean;
*************** package Uname is
*** 175,182 ****
     --  are the same, they always have the same Name_Id value.
  
     procedure Write_Unit_Name (N : Unit_Name_Type);
!    --  Given a unit name, this procedure writes the display name to the
!    --  standard output file. Name_Buffer and Name_Len are set as described
!    --  above for the Get_Unit_Name_String call on return.
  
  end Uname;
--- 173,182 ----
     --  are the same, they always have the same Name_Id value.
  
     procedure Write_Unit_Name (N : Unit_Name_Type);
!    --  Writes the display form of N to standard output
! 
!    procedure Write_Unit_Name_For_Debug (N : Unit_Name_Type);
!    --  Like Write_Unit_Name, except it tries to be robust in the presence of
!    --  invalid data.
  
  end Uname;
diff -Nrcpad gcc-12.2.0/gcc/ada/urealp.adb gcc-13.1.0/gcc/ada/urealp.adb
*** gcc-12.2.0/gcc/ada/urealp.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/urealp.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** package body Urealp is
*** 1518,1531 ****
     -- UR_Write_To_JSON --
     ----------------------
  
!    --  We defer to the implementation of UR_Write in all cases, either directly
!    --  for values that are naturally written in a JSON compatible format, or by
!    --  first computing a decimal approximation for other values.
  
     procedure UR_Write_To_JSON (Real : Ureal) is
!       Val  : constant Ureal_Entry      := Ureals.Table (Real);
!       Imrk : constant Uintp.Save_Mark  := Mark;
!       Rmrk : constant Urealp.Save_Mark := Mark;
  
        T : Ureal;
  
--- 1518,1528 ----
     -- UR_Write_To_JSON --
     ----------------------
  
!    --  We defer to the implementation of UR_Write for values that are naturally
!    --  written in a JSON compatible format and write a fraction for the others.
  
     procedure UR_Write_To_JSON (Real : Ureal) is
!       Val : constant Ureal_Entry := Ureals.Table (Real);
  
        T : Ureal;
  
*************** package body Urealp is
*** 1561,1591 ****
        elsif Val.Rbase = 0 and then Val.Num mod Val.Den = 0 then
           T := Real;
  
!       --  For other constants, compute an approximation in base 10
  
        else
!          declare
!             A : constant Ureal := UR_Abs (Real);
!             --  The absolute value
! 
!             E : constant Uint  :=
!                   (if A < Ureal_1
!                    then UI_From_Int (3 - Decimal_Exponent_Lo (Real))
!                    else Uint_3);
!             --  The exponent for at least 3 digits after the decimal point
! 
!             Num : constant Uint :=
!                     UR_To_Uint (UR_Mul (A, UR_Exponentiate (Ureal_10, E)));
!             --  The numerator appropriately rounded
! 
!          begin
!             T := UR_From_Components (Num, E, 10, Val.Negative);
!          end;
        end if;
  
        UR_Write (T);
-       Release (Imrk);
-       Release (Rmrk);
     end UR_Write_To_JSON;
  
     -------------
--- 1558,1578 ----
        elsif Val.Rbase = 0 and then Val.Num mod Val.Den = 0 then
           T := Real;
  
!       --  Other non-based (rational) constants are written in num/den style
  
        else
!          Write_Str ("{ ""code"": ""/"", ""operands"": [ ");
!          if Val.Negative then
!             Write_Char ('-');
!          end if;
!          UI_Write (Val.Num, Decimal);
!          Write_Str (".0, ");
!          UI_Write (Val.Den, Decimal);
!          Write_Str (".0 ] }");
!          return;
        end if;
  
        UR_Write (T);
     end UR_Write_To_JSON;
  
     -------------
diff -Nrcpad gcc-12.2.0/gcc/ada/urealp.ads gcc-13.1.0/gcc/ada/urealp.ads
*** gcc-12.2.0/gcc/ada/urealp.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/urealp.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/urealp.h gcc-13.1.0/gcc/ada/urealp.h
*** gcc-12.2.0/gcc/ada/urealp.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/urealp.h	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2022, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
--- 6,12 ----
   *                                                                          *
   *                              C Header File                               *
   *                                                                          *
!  *            Copyright (C) 1992-2023, Free Software Foundation, Inc.       *
   *                                                                          *
   * GNAT is free software;  you can  redistribute it  and/or modify it under *
   * terms of the  GNU General Public License as published  by the Free Soft- *
diff -Nrcpad gcc-12.2.0/gcc/ada/usage.adb gcc-13.1.0/gcc/ada/usage.adb
*** gcc-12.2.0/gcc/ada/usage.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/usage.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                B o d y                                   --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
*************** begin
*** 187,193 ****
     --  Line for -gnatef switch
  
     Write_Switch_Char ("ef");
!    Write_Line ("Full source path in brief error messages");
  
     --  Line for -gnateF switch
  
--- 187,193 ----
     --  Line for -gnatef switch
  
     Write_Switch_Char ("ef");
!    Write_Line ("Full source path in brief error messages and JSON output");
  
     --  Line for -gnateF switch
  
*************** begin
*** 567,572 ****
--- 567,576 ----
                                                    "record types");
     Write_Line ("        .Q*  turn off warnings for questionable layout of " &
                                                    "record types");
+    Write_Line ("        _q   turn on warnings for ignored " &
+                                                   "equality operators");
+    Write_Line ("        _Q*  turn off warnings for ignored " &
+                                                   "equality operators");
     Write_Line ("        r+   turn on warnings for redundant construct");
     Write_Line ("        R*   turn off warnings for redundant construct");
     Write_Line ("        .r+  turn on warnings for object renaming function");
diff -Nrcpad gcc-12.2.0/gcc/ada/usage.ads gcc-13.1.0/gcc/ada/usage.ads
*** gcc-12.2.0/gcc/ada/usage.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/usage.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/validsw.adb gcc-13.1.0/gcc/ada/validsw.adb
*** gcc-12.2.0/gcc/ada/validsw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/validsw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/validsw.ads gcc-13.1.0/gcc/ada/validsw.ads
*** gcc-12.2.0/gcc/ada/validsw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/validsw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 2001-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/vast.adb gcc-13.1.0/gcc/ada/vast.adb
*** gcc-12.2.0/gcc/ada/vast.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vast.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/vast.ads gcc-13.1.0/gcc/ada/vast.ads
*** gcc-12.2.0/gcc/ada/vast.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vast.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2022, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --             Copyright (C) 2020-2023, Free Software Foundation, Inc.      --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/vxworks-arm-link.spec gcc-13.1.0/gcc/ada/vxworks-arm-link.spec
*** gcc-12.2.0/gcc/ada/vxworks-arm-link.spec	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vxworks-arm-link.spec	Thu Jan  1 00:00:00 1970
***************
*** 1,4 ****
- *lib:
- + %{mrtp:%{!shared: \
-       -L%:getenv(WIND_BASE /target/lib/usr/lib/arm/ARMARCH7/common) \
-    }}
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/vxworks-e500-link.spec gcc-13.1.0/gcc/ada/vxworks-e500-link.spec
*** gcc-12.2.0/gcc/ada/vxworks-e500-link.spec	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vxworks-e500-link.spec	Thu Jan  1 00:00:00 1970
***************
*** 1,6 ****
- *lib:
- + %{mrtp:%{!shared: \
-      -L%:if-exists-else( \
-          %:getenv(WIND_BASE /target/lib/usr/lib/ppc/PPC32/e500v2common) \
-          %:getenv(WIND_BASE /target/usr/lib/ppc/PPC32/e500v2common)) \
-    }}
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/vxworks-smp-arm-link.spec gcc-13.1.0/gcc/ada/vxworks-smp-arm-link.spec
*** gcc-12.2.0/gcc/ada/vxworks-smp-arm-link.spec	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vxworks-smp-arm-link.spec	Thu Jan  1 00:00:00 1970
***************
*** 1,4 ****
- *lib:
- + %{mrtp:%{!shared: \
-       -L%:getenv(WIND_BASE /target/lib_smp/usr/lib/arm/ARMARCH7/common) \
-    }}
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/vxworks-smp-e500-link.spec gcc-13.1.0/gcc/ada/vxworks-smp-e500-link.spec
*** gcc-12.2.0/gcc/ada/vxworks-smp-e500-link.spec	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vxworks-smp-e500-link.spec	Thu Jan  1 00:00:00 1970
***************
*** 1,4 ****
- *lib:
- + %{mrtp:%{!shared: \
-      -L%:getenv(WIND_BASE /target/lib_smp/usr/lib/ppc/PPC32/e500v2common) \
-    }}
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/vxworks-smp-x86-link.spec gcc-13.1.0/gcc/ada/vxworks-smp-x86-link.spec
*** gcc-12.2.0/gcc/ada/vxworks-smp-x86-link.spec	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/vxworks-smp-x86-link.spec	Thu Jan  1 00:00:00 1970
***************
*** 1,9 ****
- *lib:
- + %{mrtp:%{!shared: \
-     %{vxsim: \
-       -L%:getenv(WIND_BASE /target/lib_smp/usr/lib/simpentium/SIMPENTIUM/common) \
-      } \
-     %{!vxsim: \
-       -L%:getenv(WIND_BASE /target/lib_smp/usr/lib/pentium/PENTIUM4/common) \
-      } \
-    }}
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/warnsw.adb gcc-13.1.0/gcc/ada/warnsw.adb
*** gcc-12.2.0/gcc/ada/warnsw.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/warnsw.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 23,539 ****
  --                                                                          --
  ------------------------------------------------------------------------------
  
- with Err_Vars; use Err_Vars;
  with Opt;      use Opt;
  with Output;   use Output;
  
  package body Warnsw is
  
!    --  Local Subprograms
  
!    procedure All_Warnings (Setting : Boolean);
!    --  Sets all warnings off if Setting = False, and on if Setting = True
  
!    procedure WA_Warnings;
!    --  Turn on all warnings set by -gnatwa (also used by -gnatw.g)
  
!    ------------------
!    -- All_Warnings --
!    ------------------
  
!    procedure All_Warnings (Setting : Boolean) is
!    begin
!       Address_Clause_Overlay_Warnings      := Setting;
!       Check_Unreferenced                   := Setting;
!       Check_Unreferenced_Formals           := Setting;
!       Check_Withs                          := Setting;
!       Constant_Condition_Warnings          := Setting;
!       Elab_Warnings                        := Setting;
!       Implementation_Unit_Warnings         := Setting;
!       Ineffective_Inline_Warnings          := Setting;
!       List_Body_Required_Info              := Setting;
!       List_Inherited_Aspects               := Setting;
!       Warn_On_Ada_2005_Compatibility       := Setting;
!       Warn_On_Ada_2012_Compatibility       := Setting;
!       Warn_On_All_Unread_Out_Parameters    := Setting;
!       Warn_On_Anonymous_Allocators         := Setting;
!       Warn_On_Assertion_Failure            := Setting;
!       Warn_On_Assumed_Low_Bound            := Setting;
!       Warn_On_Atomic_Synchronization       := Setting;
!       Warn_On_Bad_Fixed_Value              := Setting;
!       Warn_On_Biased_Representation        := Setting;
!       Warn_On_Constant                     := Setting;
!       Warn_On_Deleted_Code                 := Setting;
!       Warn_On_Dereference                  := Setting;
!       Warn_On_Export_Import                := Setting;
!       Warn_On_Hiding                       := Setting;
!       Warn_On_Late_Primitives              := Setting;
!       Warn_On_Modified_Unread              := Setting;
!       Warn_On_No_Value_Assigned            := Setting;
!       Warn_On_Non_Local_Exception          := Setting;
!       Warn_On_Object_Renames_Function      := Setting;
!       Warn_On_Obsolescent_Feature          := Setting;
!       Warn_On_Overlap                      := Setting;
!       Warn_On_Overridden_Size              := Setting;
!       Warn_On_Parameter_Order              := Setting;
!       Warn_On_Pedantic_Checks              := Setting;
!       Warn_On_Questionable_Layout          := Setting;
!       Warn_On_Questionable_Missing_Parens  := Setting;
!       Warn_On_Record_Holes                 := Setting;
!       Warn_On_Component_Order              := Setting;
!       Warn_On_Redundant_Constructs         := Setting;
!       Warn_On_Reverse_Bit_Order            := Setting;
!       Warn_On_Size_Alignment               := Setting;
!       Warn_On_Standard_Redefinition        := Setting;
!       Warn_On_Suspicious_Contract          := Setting;
!       Warn_On_Suspicious_Modulus_Value     := Setting;
!       Warn_On_Unchecked_Conversion         := Setting;
!       Warn_On_Unknown_Compile_Time_Warning := Setting;
!       Warn_On_Unordered_Enumeration_Type   := Setting;
!       Warn_On_Unrecognized_Pragma          := Setting;
!       Warn_On_Unrepped_Components          := Setting;
!       Warn_On_Warnings_Off                 := Setting;
!    end All_Warnings;
  
     ----------------------
     -- Restore_Warnings --
     ----------------------
  
!    procedure Restore_Warnings (W : Warning_Record) is
     begin
!       Address_Clause_Overlay_Warnings      :=
!         W.Address_Clause_Overlay_Warnings;
!       Check_Unreferenced                   :=
!         W.Check_Unreferenced;
!       Check_Unreferenced_Formals           :=
!         W.Check_Unreferenced_Formals;
!       Check_Withs                          :=
!         W.Check_Withs;
!       Constant_Condition_Warnings          :=
!         W.Constant_Condition_Warnings;
!       Elab_Warnings                        :=
!         W.Elab_Warnings;
!       Elab_Info_Messages                   :=
!         W.Elab_Info_Messages;
!       Implementation_Unit_Warnings         :=
!         W.Implementation_Unit_Warnings;
!       Ineffective_Inline_Warnings          :=
!         W.Ineffective_Inline_Warnings;
!       List_Body_Required_Info              :=
!         W.List_Body_Required_Info;
!       List_Inherited_Aspects               :=
!         W.List_Inherited_Aspects;
!       No_Warn_On_Non_Local_Exception       :=
!         W.No_Warn_On_Non_Local_Exception;
!       Warning_Doc_Switch                   :=
!         W.Warning_Doc_Switch;
!       Warn_On_Ada_2005_Compatibility       :=
!         W.Warn_On_Ada_2005_Compatibility;
!       Warn_On_Ada_2012_Compatibility       :=
!         W.Warn_On_Ada_2012_Compatibility;
!       Warn_On_All_Unread_Out_Parameters    :=
!         W.Warn_On_All_Unread_Out_Parameters;
!       Warn_On_Anonymous_Allocators         :=
!         W.Warn_On_Anonymous_Allocators;
!       Warn_On_Assertion_Failure            :=
!         W.Warn_On_Assertion_Failure;
!       Warn_On_Assumed_Low_Bound            :=
!         W.Warn_On_Assumed_Low_Bound;
!       Warn_On_Atomic_Synchronization       :=
!         W.Warn_On_Atomic_Synchronization;
!       Warn_On_Bad_Fixed_Value              :=
!         W.Warn_On_Bad_Fixed_Value;
!       Warn_On_Biased_Representation        :=
!         W.Warn_On_Biased_Representation;
!       Warn_On_Constant                     :=
!         W.Warn_On_Constant;
!       Warn_On_Deleted_Code                 :=
!         W.Warn_On_Deleted_Code;
!       Warn_On_Dereference                  :=
!         W.Warn_On_Dereference;
!       Warn_On_Export_Import                :=
!         W.Warn_On_Export_Import;
!       Warn_On_Hiding                       :=
!         W.Warn_On_Hiding;
!       Warn_On_Late_Primitives              :=
!         W.Warn_On_Late_Primitives;
!       Warn_On_Modified_Unread              :=
!         W.Warn_On_Modified_Unread;
!       Warn_On_No_Value_Assigned            :=
!         W.Warn_On_No_Value_Assigned;
!       Warn_On_Non_Local_Exception          :=
!         W.Warn_On_Non_Local_Exception;
!       Warn_On_Object_Renames_Function      :=
!         W.Warn_On_Object_Renames_Function;
!       Warn_On_Obsolescent_Feature          :=
!         W.Warn_On_Obsolescent_Feature;
!       Warn_On_Overlap                      :=
!         W.Warn_On_Overlap;
!       Warn_On_Overridden_Size              :=
!         W.Warn_On_Overridden_Size;
!       Warn_On_Parameter_Order              :=
!         W.Warn_On_Parameter_Order;
!       Warn_On_Pedantic_Checks              :=
!         W.Warn_On_Pedantic_Checks;
!       Warn_On_Questionable_Layout          :=
!         W.Warn_On_Questionable_Layout;
!       Warn_On_Questionable_Missing_Parens  :=
!         W.Warn_On_Questionable_Missing_Parens;
!       Warn_On_Record_Holes                 :=
!         W.Warn_On_Record_Holes;
!       Warn_On_Component_Order              :=
!         W.Warn_On_Component_Order;
!       Warn_On_Redundant_Constructs         :=
!         W.Warn_On_Redundant_Constructs;
!       Warn_On_Reverse_Bit_Order            :=
!         W.Warn_On_Reverse_Bit_Order;
!       Warn_On_Size_Alignment               :=
!         W.Warn_On_Size_Alignment;
!       Warn_On_Standard_Redefinition        :=
!         W.Warn_On_Standard_Redefinition;
!       Warn_On_Suspicious_Contract          :=
!         W.Warn_On_Suspicious_Contract;
!       Warn_On_Unchecked_Conversion         :=
!         W.Warn_On_Unchecked_Conversion;
!       Warn_On_Unknown_Compile_Time_Warning :=
!         W.Warn_On_Unknown_Compile_Time_Warning;
!       Warn_On_Unordered_Enumeration_Type   :=
!         W.Warn_On_Unordered_Enumeration_Type;
!       Warn_On_Unrecognized_Pragma          :=
!         W.Warn_On_Unrecognized_Pragma;
!       Warn_On_Unrepped_Components          :=
!         W.Warn_On_Unrepped_Components;
!       Warn_On_Warnings_Off                 :=
!         W.Warn_On_Warnings_Off;
     end Restore_Warnings;
  
     -------------------
     -- Save_Warnings --
     -------------------
  
!    function Save_Warnings return Warning_Record is
!       W : Warning_Record;
! 
     begin
!       W.Address_Clause_Overlay_Warnings      :=
!         Address_Clause_Overlay_Warnings;
!       W.Check_Unreferenced                   :=
!         Check_Unreferenced;
!       W.Check_Unreferenced_Formals           :=
!         Check_Unreferenced_Formals;
!       W.Check_Withs                          :=
!         Check_Withs;
!       W.Constant_Condition_Warnings          :=
!         Constant_Condition_Warnings;
!       W.Elab_Info_Messages                   :=
!         Elab_Info_Messages;
!       W.Elab_Warnings                        :=
!         Elab_Warnings;
!       W.Implementation_Unit_Warnings         :=
!         Implementation_Unit_Warnings;
!       W.Ineffective_Inline_Warnings          :=
!         Ineffective_Inline_Warnings;
!       W.List_Body_Required_Info              :=
!         List_Body_Required_Info;
!       W.List_Inherited_Aspects               :=
!         List_Inherited_Aspects;
!       W.No_Warn_On_Non_Local_Exception       :=
!         No_Warn_On_Non_Local_Exception;
!       W.Warning_Doc_Switch                   :=
!         Warning_Doc_Switch;
!       W.Warn_On_Ada_2005_Compatibility       :=
!         Warn_On_Ada_2005_Compatibility;
!       W.Warn_On_Ada_2012_Compatibility       :=
!         Warn_On_Ada_2012_Compatibility;
!       W.Warn_On_All_Unread_Out_Parameters    :=
!         Warn_On_All_Unread_Out_Parameters;
!       W.Warn_On_Anonymous_Allocators         :=
!         Warn_On_Anonymous_Allocators;
!       W.Warn_On_Assertion_Failure            :=
!         Warn_On_Assertion_Failure;
!       W.Warn_On_Assumed_Low_Bound            :=
!         Warn_On_Assumed_Low_Bound;
!       W.Warn_On_Atomic_Synchronization       :=
!         Warn_On_Atomic_Synchronization;
!       W.Warn_On_Bad_Fixed_Value              :=
!         Warn_On_Bad_Fixed_Value;
!       W.Warn_On_Biased_Representation        :=
!         Warn_On_Biased_Representation;
!       W.Warn_On_Constant                     :=
!         Warn_On_Constant;
!       W.Warn_On_Deleted_Code                 :=
!         Warn_On_Deleted_Code;
!       W.Warn_On_Dereference                  :=
!         Warn_On_Dereference;
!       W.Warn_On_Export_Import                :=
!         Warn_On_Export_Import;
!       W.Warn_On_Hiding                       :=
!         Warn_On_Hiding;
!       W.Warn_On_Late_Primitives              :=
!         Warn_On_Late_Primitives;
!       W.Warn_On_Modified_Unread              :=
!         Warn_On_Modified_Unread;
!       W.Warn_On_No_Value_Assigned            :=
!         Warn_On_No_Value_Assigned;
!       W.Warn_On_Non_Local_Exception          :=
!         Warn_On_Non_Local_Exception;
!       W.Warn_On_Object_Renames_Function      :=
!         Warn_On_Object_Renames_Function;
!       W.Warn_On_Obsolescent_Feature          :=
!         Warn_On_Obsolescent_Feature;
!       W.Warn_On_Overlap                      :=
!         Warn_On_Overlap;
!       W.Warn_On_Overridden_Size              :=
!         Warn_On_Overridden_Size;
!       W.Warn_On_Parameter_Order              :=
!         Warn_On_Parameter_Order;
!       W.Warn_On_Pedantic_Checks              :=
!         Warn_On_Pedantic_Checks;
!       W.Warn_On_Questionable_Layout          :=
!         Warn_On_Questionable_Layout;
!       W.Warn_On_Questionable_Missing_Parens  :=
!         Warn_On_Questionable_Missing_Parens;
!       W.Warn_On_Record_Holes                 :=
!         Warn_On_Record_Holes;
!       W.Warn_On_Component_Order              :=
!         Warn_On_Component_Order;
!       W.Warn_On_Redundant_Constructs         :=
!         Warn_On_Redundant_Constructs;
!       W.Warn_On_Reverse_Bit_Order            :=
!         Warn_On_Reverse_Bit_Order;
!       W.Warn_On_Size_Alignment               :=
!         Warn_On_Size_Alignment;
!       W.Warn_On_Standard_Redefinition        :=
!         Warn_On_Standard_Redefinition;
!       W.Warn_On_Suspicious_Contract          :=
!         Warn_On_Suspicious_Contract;
!       W.Warn_On_Unchecked_Conversion         :=
!         Warn_On_Unchecked_Conversion;
!       W.Warn_On_Unknown_Compile_Time_Warning :=
!         Warn_On_Unknown_Compile_Time_Warning;
!       W.Warn_On_Unordered_Enumeration_Type   :=
!         Warn_On_Unordered_Enumeration_Type;
!       W.Warn_On_Unrecognized_Pragma          :=
!         Warn_On_Unrecognized_Pragma;
!       W.Warn_On_Unrepped_Components          :=
!         Warn_On_Unrepped_Components;
!       W.Warn_On_Warnings_Off                 :=
!         Warn_On_Warnings_Off;
!       return W;
     end Save_Warnings;
  
     ----------------------------
-    -- Set_Dot_Warning_Switch --
-    ----------------------------
- 
-    function Set_Dot_Warning_Switch (C : Character) return Boolean is
-    begin
-       case C is
-          when 'a' =>
-             Warn_On_Assertion_Failure           := True;
- 
-          when 'A' =>
-             Warn_On_Assertion_Failure           := False;
- 
-          when 'b' =>
-             Warn_On_Biased_Representation       := True;
- 
-          when 'B' =>
-             Warn_On_Biased_Representation       := False;
- 
-          when 'c' =>
-             Warn_On_Unrepped_Components         := True;
- 
-          when 'C' =>
-             Warn_On_Unrepped_Components         := False;
- 
-          when 'd' =>
-             Warning_Doc_Switch                  := True;
- 
-          when 'D' =>
-             Warning_Doc_Switch                  := False;
- 
-          when 'e' =>
-             All_Warnings (True);
- 
-          when 'f' =>
-             Warn_On_Elab_Access                 := True;
- 
-          when 'F' =>
-             Warn_On_Elab_Access                 := False;
- 
-          when 'g' =>
-             Set_GNAT_Mode_Warnings;
- 
-          when 'h' =>
-             Warn_On_Record_Holes                := True;
- 
-          when 'H' =>
-             Warn_On_Record_Holes                := False;
- 
-          when 'i' =>
-             Warn_On_Overlap                     := True;
- 
-          when 'I' =>
-             Warn_On_Overlap                     := False;
- 
-          when 'j' =>
-             Warn_On_Late_Primitives             := True;
- 
-          when 'J' =>
-             Warn_On_Late_Primitives             := False;
- 
-          when 'k' =>
-             Warn_On_Standard_Redefinition       := True;
- 
-          when 'K' =>
-             Warn_On_Standard_Redefinition       := False;
- 
-          when 'l' =>
-             List_Inherited_Aspects              := True;
- 
-          when 'L' =>
-             List_Inherited_Aspects              := False;
- 
-          when 'm' =>
-             Warn_On_Suspicious_Modulus_Value    := True;
- 
-          when 'M' =>
-             Warn_On_Suspicious_Modulus_Value    := False;
- 
-          when 'n' =>
-             Warn_On_Atomic_Synchronization      := True;
- 
-          when 'N' =>
-             Warn_On_Atomic_Synchronization      := False;
- 
-          when 'o' =>
-             Warn_On_All_Unread_Out_Parameters   := True;
- 
-          when 'O' =>
-             Warn_On_All_Unread_Out_Parameters   := False;
- 
-          when 'p' =>
-             Warn_On_Parameter_Order             := True;
- 
-          when 'P' =>
-             Warn_On_Parameter_Order             := False;
- 
-          when 'q' =>
-             Warn_On_Questionable_Layout         := True;
- 
-          when 'Q' =>
-             Warn_On_Questionable_Layout         := False;
- 
-          when 'r' =>
-             Warn_On_Object_Renames_Function     := True;
- 
-          when 'R' =>
-             Warn_On_Object_Renames_Function     := False;
- 
-          when 's' =>
-             Warn_On_Overridden_Size             := True;
- 
-          when 'S' =>
-             Warn_On_Overridden_Size             := False;
- 
-          when 't' =>
-             Warn_On_Suspicious_Contract         := True;
- 
-          when 'T' =>
-             Warn_On_Suspicious_Contract         := False;
- 
-          when 'u' =>
-             Warn_On_Unordered_Enumeration_Type  := True;
- 
-          when 'U' =>
-             Warn_On_Unordered_Enumeration_Type  := False;
- 
-          when 'v' =>
-             Warn_On_Reverse_Bit_Order           := True;
- 
-          when 'V' =>
-             Warn_On_Reverse_Bit_Order           := False;
- 
-          when 'w' =>
-             Warn_On_Warnings_Off                := True;
- 
-          when 'W' =>
-             Warn_On_Warnings_Off                := False;
- 
-          when 'x' =>
-             Warn_On_Non_Local_Exception         := True;
- 
-          when 'X' =>
-             Warn_On_Non_Local_Exception         := False;
-             No_Warn_On_Non_Local_Exception      := True;
- 
-          when 'y' =>
-             List_Body_Required_Info             := True;
- 
-          when 'Y' =>
-             List_Body_Required_Info             := False;
- 
-          when 'z' =>
-             Warn_On_Size_Alignment              := True;
- 
-          when 'Z' =>
-             Warn_On_Size_Alignment              := False;
- 
-          when others =>
-             if Ignore_Unrecognized_VWY_Switches then
-                Write_Line ("unrecognized switch -gnatw." & C & " ignored");
-             else
-                return False;
-             end if;
-       end case;
- 
-       return True;
-    end Set_Dot_Warning_Switch;
- 
-    -----------------------------------
-    -- Set_Underscore_Warning_Switch --
-    -----------------------------------
- 
-    function Set_Underscore_Warning_Switch (C : Character) return Boolean is
-    begin
-       case C is
-          when 'a' =>
-             Warn_On_Anonymous_Allocators := True;
- 
-          when 'A' =>
-             Warn_On_Anonymous_Allocators := False;
- 
-          when 'c' =>
-             Warn_On_Unknown_Compile_Time_Warning := True;
- 
-          when 'C' =>
-             Warn_On_Unknown_Compile_Time_Warning := False;
- 
-          when 'p' =>
-             Warn_On_Pedantic_Checks := True;
- 
-          when 'P' =>
-             Warn_On_Pedantic_Checks := False;
- 
-          when 'r' =>
-             Warn_On_Component_Order := True;
- 
-          when 'R' =>
-             Warn_On_Component_Order := False;
- 
-          when others =>
-             if Ignore_Unrecognized_VWY_Switches then
-                Write_Line ("unrecognized switch -gnatw_" & C & " ignored");
-             else
-                return False;
-             end if;
-       end case;
- 
-       return True;
-    end Set_Underscore_Warning_Switch;
- 
-    ----------------------------
     -- Set_GNAT_Mode_Warnings --
     ----------------------------
  
--- 23,175 ----
  --                                                                          --
  ------------------------------------------------------------------------------
  
  with Opt;      use Opt;
  with Output;   use Output;
  
+ with System.Case_Util; use System.Case_Util;
+ 
  package body Warnsw is
  
!    subtype Lowercase is Character range 'a' .. 'z';
!    --  Warning-enable switches are lowercase letters
  
!    Switch_To_Flag_Mapping : constant array (Warning_Family, Lowercase) of
!      --  Mapping from the letter after "-gnatw", "-gnatw." or "-gnatw_" to
!      --  the corresponding flag for the warning it enables. Special_Case means
!      --  Set_Warning_Switch must do something special, as opposed to simply
!      --  setting the corresponding flag. No_Such_Warning means the letter
!      --  is not a defined warning switch, which is an error.
!      X.Opt_Warnings_Enum :=
!        (Plain =>
!          ('a' | 'e' | 'n' | 's' | 'u' | 'y' => Special_Case,
  
!           'b' => X.Warn_On_Bad_Fixed_Value,
!           'c' => X.Constant_Condition_Warnings,
!           'd' => X.Warn_On_Dereference,
!           'f' => X.Check_Unreferenced_Formals,
!           'g' => X.Warn_On_Unrecognized_Pragma,
!           'h' => X.Warn_On_Hiding,
!           'i' => X.Implementation_Unit_Warnings,
!           'j' => X.Warn_On_Obsolescent_Feature,
!           'k' => X.Warn_On_Constant,
!           'l' => X.Elab_Warnings,
!           'm' => X.Warn_On_Modified_Unread,
!           'o' => X.Address_Clause_Overlay_Warnings,
!           'p' => X.Ineffective_Inline_Warnings,
!           'q' => X.Warn_On_Questionable_Missing_Parens,
!           'r' => X.Warn_On_Redundant_Constructs,
!           't' => X.Warn_On_Deleted_Code,
!           'v' => X.Warn_On_No_Value_Assigned,
!           'w' => X.Warn_On_Assumed_Low_Bound,
!           'x' => X.Warn_On_Export_Import,
!           'z' => X.Warn_On_Unchecked_Conversion),
  
!         '.' =>
!          ('e' | 'g' | 'x' => Special_Case,
  
!           'a' => X.Warn_On_Assertion_Failure,
!           'b' => X.Warn_On_Biased_Representation,
!           'c' => X.Warn_On_Unrepped_Components,
!           'd' => X.Warning_Doc_Switch,
!           'f' => X.Warn_On_Elab_Access,
!           'h' => X.Warn_On_Record_Holes,
!           'i' => X.Warn_On_Overlap,
!           'j' => X.Warn_On_Late_Primitives,
!           'k' => X.Warn_On_Standard_Redefinition,
!           'l' => X.List_Inherited_Aspects,
!           'm' => X.Warn_On_Suspicious_Modulus_Value,
!           'n' => X.Warn_On_Atomic_Synchronization,
!           'o' => X.Warn_On_All_Unread_Out_Parameters,
!           'p' => X.Warn_On_Parameter_Order,
!           'q' => X.Warn_On_Questionable_Layout,
!           'r' => X.Warn_On_Object_Renames_Function,
!           's' => X.Warn_On_Overridden_Size,
!           't' => X.Warn_On_Suspicious_Contract,
!           'u' => X.Warn_On_Unordered_Enumeration_Type,
!           'v' => X.Warn_On_Reverse_Bit_Order,
!           'w' => X.Warn_On_Warnings_Off,
!           'y' => X.List_Body_Required_Info,
!           'z' => X.Warn_On_Size_Alignment),
! 
!         '_' =>
!          ('b' | 'd' | 'e' | 'f' | 'g' | 'h' | 'i' | 'j' | 'k' | 'l' | 'm' |
!           'n' | 'o' | 's' | 't' | 'u' | 'v' | 'w' | 'x' | 'y' | 'z' =>
!            No_Such_Warning,
! 
!           'a' => X.Warn_On_Anonymous_Allocators,
!           'c' => X.Warn_On_Unknown_Compile_Time_Warning,
!           'p' => X.Warn_On_Pedantic_Checks,
!           'q' => X.Warn_On_Ignored_Equality,
!           'r' => X.Warn_On_Component_Order));
! 
!    All_Warnings : constant Warnings_State := --  Warnings set by -gnatw.e
!      (X.Elab_Info_Messages |
!       X.Warning_Doc_Switch |
!       X.Warn_On_Ada_2022_Compatibility |
!       X.Warn_On_Elab_Access |
!       X.No_Warn_On_Non_Local_Exception => False,
!       others => True);
!    --  Warning_Doc_Switch is not really a warning to be enabled, but controls
!    --  the form of warnings printed. No_Warn_On_Non_Local_Exception is handled
!    --  specially (see Warn_On_Non_Local_Exception). The others are not part of
!    --  -gnatw.e for historical reasons.
! 
!    WA_Warnings : constant Warnings_State := --  Warnings set by -gnatwa
!      (X.Check_Unreferenced                  | -- -gnatwf/-gnatwu
!       X.Check_Unreferenced_Formals          | -- -gnatwf/-gnatwu
!       X.Check_Withs                         | -- -gnatwu
!       X.Constant_Condition_Warnings         | -- -gnatwc
!       X.Implementation_Unit_Warnings        | -- -gnatwi
!       X.Ineffective_Inline_Warnings         | -- -gnatwp
!       X.Warn_On_Ada_2005_Compatibility      | -- -gnatwy
!       X.Warn_On_Ada_2012_Compatibility      | -- -gnatwy
!       X.Warn_On_Anonymous_Allocators        | -- -gnatw_a
!       X.Warn_On_Assertion_Failure           | -- -gnatw.a
!       X.Warn_On_Assumed_Low_Bound           | -- -gnatww
!       X.Warn_On_Bad_Fixed_Value             | -- -gnatwb
!       X.Warn_On_Biased_Representation       | -- -gnatw.b
!       X.Warn_On_Constant                    | -- -gnatwk
!       X.Warn_On_Export_Import               | -- -gnatwx
!       X.Warn_On_Late_Primitives             | -- -gnatw.j
!       X.Warn_On_Modified_Unread             | -- -gnatwm
!       X.Warn_On_No_Value_Assigned           | -- -gnatwv
!       X.Warn_On_Non_Local_Exception         | -- -gnatw.x
!       X.Warn_On_Object_Renames_Function     | -- -gnatw.r
!       X.Warn_On_Obsolescent_Feature         | -- -gnatwj
!       X.Warn_On_Overlap                     | -- -gnatw.i
!       X.Warn_On_Parameter_Order             | -- -gnatw.p
!       X.Warn_On_Questionable_Missing_Parens | -- -gnatwq
!       X.Warn_On_Redundant_Constructs        | -- -gnatwr
!       X.Warn_On_Reverse_Bit_Order           | -- -gnatw.v
!       X.Warn_On_Size_Alignment              | -- -gnatw.z
!       X.Warn_On_Suspicious_Contract         | -- -gnatw.t
!       X.Warn_On_Suspicious_Modulus_Value    | -- -gnatw.m
!       X.Warn_On_Unchecked_Conversion        | -- -gnatwz
!       X.Warn_On_Unrecognized_Pragma         | -- -gnatwg
!       X.Warn_On_Unrepped_Components         => -- -gnatw.c
!         True,
! 
!       others => False);
  
     ----------------------
     -- Restore_Warnings --
     ----------------------
  
!    procedure Restore_Warnings (W : Warnings_State) is
     begin
!       Warning_Flags := W;
     end Restore_Warnings;
  
     -------------------
     -- Save_Warnings --
     -------------------
  
!    function Save_Warnings return Warnings_State is
     begin
!       return Warning_Flags;
     end Save_Warnings;
  
     ----------------------------
     -- Set_GNAT_Mode_Warnings --
     ----------------------------
  
*************** package body Warnsw is
*** 541,548 ****
     begin
        --  Set -gnatwa warnings and no others
  
!       All_Warnings (False);
!       WA_Warnings;
  
        --  These warnings are added to the -gnatwa set
  
--- 177,183 ----
     begin
        --  Set -gnatwa warnings and no others
  
!       Warning_Flags := (Warning_Flags and not All_Warnings) or WA_Warnings;
  
        --  These warnings are added to the -gnatwa set
  
*************** package body Warnsw is
*** 564,778 ****
     -- Set_Warning_Switch --
     ------------------------
  
!    function Set_Warning_Switch (C : Character) return Boolean is
     begin
!       case C is
!          when 'a' =>
!             WA_Warnings;
! 
!          when 'A' =>
!             All_Warnings (False);
!             No_Warn_On_Non_Local_Exception      := True;
! 
!          when 'b' =>
!             Warn_On_Bad_Fixed_Value             := True;
! 
!          when 'B' =>
!             Warn_On_Bad_Fixed_Value             := False;
! 
!          when 'c' =>
!             Constant_Condition_Warnings         := True;
! 
!          when 'C' =>
!             Constant_Condition_Warnings         := False;
! 
!          when 'd' =>
!             Warn_On_Dereference                 := True;
! 
!          when 'D' =>
!             Warn_On_Dereference                 := False;
! 
!          when 'e' =>
!             Warning_Mode                        := Treat_As_Error;
! 
!          when 'E' =>
!             Warning_Mode := Treat_Run_Time_Warnings_As_Errors;
! 
!          when 'f' =>
!             Check_Unreferenced_Formals          := True;
! 
!          when 'F' =>
!             Check_Unreferenced_Formals          := False;
! 
!          when 'g' =>
!             Warn_On_Unrecognized_Pragma         := True;
! 
!          when 'G' =>
!             Warn_On_Unrecognized_Pragma         := False;
! 
!          when 'h' =>
!             Warn_On_Hiding                      := True;
! 
!          when 'H' =>
!             Warn_On_Hiding                      := False;
! 
!          when 'i' =>
!             Implementation_Unit_Warnings        := True;
! 
!          when 'I' =>
!             Implementation_Unit_Warnings        := False;
! 
!          when 'j' =>
!             Warn_On_Obsolescent_Feature         := True;
! 
!          when 'J' =>
!             Warn_On_Obsolescent_Feature         := False;
! 
!          when 'k' =>
!             Warn_On_Constant                    := True;
! 
!          when 'K' =>
!             Warn_On_Constant                    := False;
! 
!          when 'l' =>
!             Elab_Warnings                       := True;
! 
!          when 'L' =>
!             Elab_Warnings                       := False;
! 
!          when 'm' =>
!             Warn_On_Modified_Unread             := True;
! 
!          when 'M' =>
!             Warn_On_Modified_Unread             := False;
! 
!          when 'n' =>
!             Warning_Mode                        := Normal;
! 
!          when 'o' =>
!             Address_Clause_Overlay_Warnings     := True;
! 
!          when 'O' =>
!             Address_Clause_Overlay_Warnings     := False;
! 
!          when 'p' =>
!             Ineffective_Inline_Warnings         := True;
  
!          when 'P' =>
!             Ineffective_Inline_Warnings         := False;
  
!          when 'q' =>
!             Warn_On_Questionable_Missing_Parens := True;
  
!          when 'Q' =>
!             Warn_On_Questionable_Missing_Parens := False;
  
!          when 'r' =>
!             Warn_On_Redundant_Constructs        := True;
  
!          when 'R' =>
!             Warn_On_Redundant_Constructs        := False;
  
!          when 's' =>
!             Warning_Mode                        := Suppress;
  
!          when 't' =>
!             Warn_On_Deleted_Code                := True;
  
!          when 'T' =>
!             Warn_On_Deleted_Code                := False;
  
!          when 'u' =>
!             Check_Unreferenced                  := True;
!             Check_Withs                         := True;
!             Check_Unreferenced_Formals          := True;
  
!          when 'U' =>
!             Check_Unreferenced                  := False;
!             Check_Withs                         := False;
!             Check_Unreferenced_Formals          := False;
  
!          when 'v' =>
!             Warn_On_No_Value_Assigned           := True;
  
!          when 'V' =>
!             Warn_On_No_Value_Assigned           := False;
  
!          when 'w' =>
!             Warn_On_Assumed_Low_Bound           := True;
  
!          when 'W' =>
!             Warn_On_Assumed_Low_Bound           := False;
  
!          when 'x' =>
!             Warn_On_Export_Import               := True;
  
!          when 'X' =>
!             Warn_On_Export_Import               := False;
  
!          when 'y' =>
!             Warn_On_Ada_2005_Compatibility      := True;
!             Warn_On_Ada_2012_Compatibility      := True;
  
!          when 'Y' =>
!             Warn_On_Ada_2005_Compatibility      := False;
!             Warn_On_Ada_2012_Compatibility      := False;
  
!          when 'z' =>
!             Warn_On_Unchecked_Conversion        := True;
  
!          when 'Z' =>
!             Warn_On_Unchecked_Conversion        := False;
  
!          when others =>
!             if Ignore_Unrecognized_VWY_Switches then
!                Write_Line ("unrecognized switch -gnatw" & C & " ignored");
!             else
!                return False;
!             end if;
!       end case;
  
        return True;
     end Set_Warning_Switch;
  
-    -----------------
-    -- WA_Warnings --
-    -----------------
- 
-    procedure WA_Warnings is
-    begin
-       Check_Unreferenced                  := True; -- -gnatwf/-gnatwu
-       Check_Unreferenced_Formals          := True; -- -gnatwf/-gnatwu
-       Check_Withs                         := True; -- -gnatwu
-       Constant_Condition_Warnings         := True; -- -gnatwc
-       Implementation_Unit_Warnings        := True; -- -gnatwi
-       Ineffective_Inline_Warnings         := True; -- -gnatwp
-       Warn_On_Ada_2005_Compatibility      := True; -- -gnatwy
-       Warn_On_Ada_2012_Compatibility      := True; -- -gnatwy
-       Warn_On_Anonymous_Allocators        := True; -- -gnatw_a
-       Warn_On_Assertion_Failure           := True; -- -gnatw.a
-       Warn_On_Assumed_Low_Bound           := True; -- -gnatww
-       Warn_On_Bad_Fixed_Value             := True; -- -gnatwb
-       Warn_On_Biased_Representation       := True; -- -gnatw.b
-       Warn_On_Constant                    := True; -- -gnatwk
-       Warn_On_Export_Import               := True; -- -gnatwx
-       Warn_On_Late_Primitives             := True; -- -gnatw.j
-       Warn_On_Modified_Unread             := True; -- -gnatwm
-       Warn_On_No_Value_Assigned           := True; -- -gnatwv
-       Warn_On_Non_Local_Exception         := True; -- -gnatw.x
-       Warn_On_Object_Renames_Function     := True; -- -gnatw.r
-       Warn_On_Obsolescent_Feature         := True; -- -gnatwj
-       Warn_On_Overlap                     := True; -- -gnatw.i
-       Warn_On_Parameter_Order             := True; -- -gnatw.p
-       Warn_On_Questionable_Missing_Parens := True; -- -gnatwq
-       Warn_On_Redundant_Constructs        := True; -- -gnatwr
-       Warn_On_Reverse_Bit_Order           := True; -- -gnatw.v
-       Warn_On_Size_Alignment              := True; -- -gnatw.z
-       Warn_On_Suspicious_Contract         := True; -- -gnatw.t
-       Warn_On_Suspicious_Modulus_Value    := True; -- -gnatw.m
-       Warn_On_Unchecked_Conversion        := True; -- -gnatwz
-       Warn_On_Unrecognized_Pragma         := True; -- -gnatwg
-       Warn_On_Unrepped_Components         := True; -- -gnatw.c
-    end WA_Warnings;
- 
  end Warnsw;
--- 199,316 ----
     -- Set_Warning_Switch --
     ------------------------
  
!    function Set_Warning_Switch
!      (Family : Warning_Family; C : Character) return Boolean
!    is
!       L : constant Character := To_Lower (C);
     begin
!       --  Error case
  
!       if L not in Lowercase
!         or else Switch_To_Flag_Mapping (Family, L) = No_Such_Warning
!       then
!          if Ignore_Unrecognized_VWY_Switches then
!             declare
!                Family_Switch : constant String :=
!                  (case Family is
!                    when Plain => "", when '.' => ".", when '_' => "_");
!             begin
!                Write_Line
!                  ("unrecognized switch -gnatw" & Family_Switch & C &
!                   " ignored");
!             end;
!             return True;
!          else
!             return False;
!          end if;
!       end if;
  
!       --  Special cases that don't fall into the normal pattern below
  
!       if Switch_To_Flag_Mapping (Family, L) = Special_Case then
!          case Family is
!             when Plain =>
!                case C is
!                   when 'a' =>
!                      --  "or" in the -gnatwa flags, possibly leaving others set
!                      Warning_Flags := Warning_Flags or WA_Warnings;
  
!                   when 'A' =>
!                      --  Turn off the All_Warnings flags, except that
!                      --  No_Warn_On_Non_Local_Exception is a special case.
!                      Warning_Flags := Warning_Flags and not All_Warnings;
!                      No_Warn_On_Non_Local_Exception := True;
  
!                   when 'e' =>
!                      Warning_Mode := Treat_As_Error;
  
!                   when 'E' =>
!                      Warning_Mode := Treat_Run_Time_Warnings_As_Errors;
  
!                   when 'n' =>
!                      Warning_Mode := Normal;
  
!                   when 's' =>
!                      Warning_Mode := Suppress;
  
!                   when 'u' =>
!                      Check_Unreferenced := True;
!                      Check_Withs := True;
!                      Check_Unreferenced_Formals := True;
  
!                   when 'U' =>
!                      Check_Unreferenced := False;
!                      Check_Withs := False;
!                      Check_Unreferenced_Formals := False;
  
!                   when 'y' =>
!                      Warn_On_Ada_2005_Compatibility := True;
!                      Warn_On_Ada_2012_Compatibility := True;
  
!                   when 'Y' =>
!                      Warn_On_Ada_2005_Compatibility := False;
!                      Warn_On_Ada_2012_Compatibility := False;
  
!                   when others => raise Program_Error;
!                end case;
  
!             when '.' =>
!                case C is
!                   when 'e' =>
!                      --  "or" in the All_Warnings flags
!                      Warning_Flags := Warning_Flags or All_Warnings;
!                   when 'g' =>
!                      Set_GNAT_Mode_Warnings;
  
!                   when 'x' =>
!                      Warn_On_Non_Local_Exception := True;
  
!                   when 'X' =>
!                      Warn_On_Non_Local_Exception := False;
!                      No_Warn_On_Non_Local_Exception := True;
  
!                   when others => raise Program_Error;
!                end case;
  
!             when '_' =>
!                raise Program_Error;
!          end case;
  
!          return True;
!       end if;
  
!       --  Normal pattern (lower case enables the warning, upper case disables
!       --  the warning).
  
!       if C in Lowercase then
!          Warning_Flags (Switch_To_Flag_Mapping (Family, C)) := True;
!       elsif L in Lowercase then
!          Warning_Flags (Switch_To_Flag_Mapping (Family, L)) := False;
!       else
!          raise Program_Error;
!       end if;
  
        return True;
     end Set_Warning_Switch;
  
  end Warnsw;
diff -Nrcpad gcc-12.2.0/gcc/ada/warnsw.ads gcc-13.1.0/gcc/ada/warnsw.ads
*** gcc-12.2.0/gcc/ada/warnsw.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/warnsw.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1999-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
***************
*** 24,29 ****
--- 24,30 ----
  ------------------------------------------------------------------------------
  
  --  This unit contains the routines used to handle setting of warning options
+ --  in the GNAT compiler.
  
  package Warnsw is
  
*************** package Warnsw is
*** 34,195 ****
     --  These flags are activated or deactivated by -gnatw switches and control
     --  whether warnings of a given class will be generated or not.
  
!    --  Note: most of these flags are still in opt, but the plan is to move them
!    --  here as time goes by. And in fact a really nice idea would be to put
!    --  them all in a Warn_Record so that they would be easy to save/restore.
  
!    Warn_On_Anonymous_Allocators : Boolean := False;
     --  Warn when allocators for anonymous access types are present, which,
     --  although not illegal in Ada, may be confusing to users due to how
     --  accessibility checks get generated. Off by default, modified by use
     --  of -gnatw_a/_A and set as part of -gnatwa.
  
!    Warn_On_Late_Primitives : Boolean := False;
     --  Warn when tagged type public primitives are defined after its private
     --  extensions.
  
!    Warn_On_Unknown_Compile_Time_Warning : Boolean := True;
!    --  Warn on a pragma Compile_Time_Warning whose condition has a value that
!    --  is not known at compile time. On by default, modified by use
!    --  of -gnatw_c/_C and set as part of -gnatwa.
  
!    Warn_On_Overridden_Size : Boolean := False;
     --  Warn when explicit record component clause or array component_size
     --  clause specifies a size that overrides a size for the type which was
     --  set with an explicit size clause. Off by default, modified by use of
     --  -gnatw.s/.S (but not -gnatwa).
  
!    Warn_On_Pedantic_Checks : Boolean := False;
     --  Warn for violation of miscellaneous pedantic rules (such as when the
     --  subtype of a formal parameter given in a subprogram body's specification
     --  comes from a different subtype declaration that the subtype of the
     --  formal in the subprogram declaration). Off by default, and set by
     --  -gnatw_p (but not -gnatwa).
  
!    Warn_On_Questionable_Layout : Boolean := False;
     --  Warn when default layout of a record type is questionable for run-time
     --  efficiency reasons and would be improved by reordering the components.
     --  Off by default, modified by use of -gnatw.q/.Q (but not -gnatwa).
  
!    --  WARNING: There is a matching C declaration of this variable in fe.h
  
!    Warn_On_Record_Holes : Boolean := False;
     --  Warn when explicit record component clauses leave uncovered holes (gaps)
     --  in a record layout. Off by default, set by -gnatw.h (but not -gnatwa).
  
!    Warn_On_Component_Order : Boolean := False;
!    --  Warn when record component clauses are out of order with respect to the
!    --  component declarations, or if the memory layout is out of order with
!    --  respect to component declarations and clauses.  Off by default, set by
!    --  -gnatw_r (but not -gnatwa).
  
!    Warn_On_Size_Alignment : Boolean := True;
     --  Warn when explicit Size and Alignment clauses are given for a type, and
     --  the size is not a multiple of the alignment. Off by default, modified
     --  by use of -gnatw.z/.Z and set as part of -gnatwa.
  
!    Warn_On_Standard_Redefinition : Boolean := False;
     --  Warn when a program defines an identifier that matches a name in
     --  Standard. Off by default, modified by use of -gnatw.k/.K (but not
     --  by -gnatwa).
  
     -----------------------------------
     -- Saving and Restoring Warnings --
     -----------------------------------
  
!    --  Type used to save and restore warnings
! 
!    type Warning_Record is record
!       Address_Clause_Overlay_Warnings      : Boolean;
!       Check_Unreferenced                   : Boolean;
!       Check_Unreferenced_Formals           : Boolean;
!       Check_Withs                          : Boolean;
!       Constant_Condition_Warnings          : Boolean;
!       Elab_Info_Messages                   : Boolean;
!       Elab_Warnings                        : Boolean;
!       Implementation_Unit_Warnings         : Boolean;
!       Ineffective_Inline_Warnings          : Boolean;
!       List_Body_Required_Info              : Boolean;
!       List_Inherited_Aspects               : Boolean;
!       No_Warn_On_Non_Local_Exception       : Boolean;
!       Warning_Doc_Switch                   : Boolean;
!       Warn_On_Ada_2005_Compatibility       : Boolean;
!       Warn_On_Ada_2012_Compatibility       : Boolean;
!       Warn_On_All_Unread_Out_Parameters    : Boolean;
!       Warn_On_Anonymous_Allocators         : Boolean;
!       Warn_On_Assertion_Failure            : Boolean;
!       Warn_On_Assumed_Low_Bound            : Boolean;
!       Warn_On_Atomic_Synchronization       : Boolean;
!       Warn_On_Bad_Fixed_Value              : Boolean;
!       Warn_On_Biased_Representation        : Boolean;
!       Warn_On_Constant                     : Boolean;
!       Warn_On_Deleted_Code                 : Boolean;
!       Warn_On_Dereference                  : Boolean;
!       Warn_On_Export_Import                : Boolean;
!       Warn_On_Hiding                       : Boolean;
!       Warn_On_Late_Primitives              : Boolean;
!       Warn_On_Modified_Unread              : Boolean;
!       Warn_On_No_Value_Assigned            : Boolean;
!       Warn_On_Non_Local_Exception          : Boolean;
!       Warn_On_Object_Renames_Function      : Boolean;
!       Warn_On_Obsolescent_Feature          : Boolean;
!       Warn_On_Overlap                      : Boolean;
!       Warn_On_Overridden_Size              : Boolean;
!       Warn_On_Parameter_Order              : Boolean;
!       Warn_On_Pedantic_Checks              : Boolean;
!       Warn_On_Questionable_Layout          : Boolean;
!       Warn_On_Questionable_Missing_Parens  : Boolean;
!       Warn_On_Record_Holes                 : Boolean;
!       Warn_On_Component_Order              : Boolean;
!       Warn_On_Redundant_Constructs         : Boolean;
!       Warn_On_Reverse_Bit_Order            : Boolean;
!       Warn_On_Size_Alignment               : Boolean;
!       Warn_On_Standard_Redefinition        : Boolean;
!       Warn_On_Suspicious_Contract          : Boolean;
!       Warn_On_Suspicious_Modulus_Value     : Boolean;
!       Warn_On_Unchecked_Conversion         : Boolean;
!       Warn_On_Unknown_Compile_Time_Warning : Boolean;
!       Warn_On_Unordered_Enumeration_Type   : Boolean;
!       Warn_On_Unrecognized_Pragma          : Boolean;
!       Warn_On_Unrepped_Components          : Boolean;
!       Warn_On_Warnings_Off                 : Boolean;
!    end record;
! 
!    function Save_Warnings return Warning_Record;
!    --  Returns current settingh of warnings
  
!    procedure Restore_Warnings (W : Warning_Record);
     --  Restores current settings of warning flags from W
  
     -----------------
     -- Subprograms --
     -----------------
  
!    function Set_Warning_Switch (C : Character) return Boolean;
!    --  This function sets the warning switch or switches corresponding to the
!    --  given character. It is used to process a -gnatw switch on the command
!    --  line, or a character in a string literal in pragma Warnings. Returns
!    --  True for valid warning character C, False for invalid character.
! 
!    function Set_Dot_Warning_Switch (C : Character) return Boolean;
!    --  This function sets the warning switch or switches corresponding to the
!    --  given character preceded by a dot. Used to process a -gnatw. switch on
!    --  the command line or .C in a string literal in pragma Warnings. Returns
!    --  True for valid warning character C, False for invalid character.
  
!    function Set_Underscore_Warning_Switch (C : Character) return Boolean;
!    --  This function sets the warning switch or switches corresponding to the
!    --  given character preceded by an underscore. Used to process a -gnatw_
!    --  switch on the command line or _C in a string literal in pragma Warnings.
!    --  Returns True for valid warnings character C, False for invalid
!    --  character.
  
     procedure Set_GNAT_Mode_Warnings;
!    --  This is called in -gnatg mode to set the warnings for gnat mode. It is
!    --  also used to set the proper warning statuses for -gnatw.g. Note that
!    --  this set of warnings is neither a subset nor a superset of -gnatwa, it
!    --  enables warnings that are not included in -gnatwa and disables warnings
!    --  that are included in -gnatwa (such as Warn_On_Implementation_Units, that
!    --  we clearly want to be False for units built with -gnatg).
  
  end Warnsw;
--- 35,518 ----
     --  These flags are activated or deactivated by -gnatw switches and control
     --  whether warnings of a given class will be generated or not.
  
!    package Warnings_Package is
!       type Opt_Warnings_Enum is
!         --  List of all warnings that can be enabled, plus the two null-ish
!         --  values.
!         (No_Such_Warning, Special_Case, -- see body
  
!          Address_Clause_Overlay_Warnings,
!          Check_Unreferenced,
!          Check_Unreferenced_Formals,
!          Check_Withs,
!          Constant_Condition_Warnings,
!          Elab_Info_Messages,
!          Elab_Warnings,
!          Implementation_Unit_Warnings,
!          Ineffective_Inline_Warnings,
!          List_Body_Required_Info,
!          List_Inherited_Aspects,
!          Warning_Doc_Switch,
!          Warn_On_Ada_2005_Compatibility,
!          Warn_On_Ada_2012_Compatibility,
!          Warn_On_Ada_2022_Compatibility,
!          Warn_On_All_Unread_Out_Parameters,
!          Warn_On_Anonymous_Allocators,
!          Warn_On_Assertion_Failure,
!          Warn_On_Assumed_Low_Bound,
!          Warn_On_Atomic_Synchronization,
!          Warn_On_Bad_Fixed_Value,
!          Warn_On_Biased_Representation,
!          Warn_On_Component_Order,
!          Warn_On_Constant,
!          Warn_On_Deleted_Code,
!          Warn_On_Dereference,
!          Warn_On_Elab_Access,
!          Warn_On_Export_Import,
!          Warn_On_Hiding,
!          Warn_On_Ignored_Equality,
!          Warn_On_Late_Primitives,
!          Warn_On_Modified_Unread,
!          Warn_On_No_Value_Assigned,
!          Warn_On_Non_Local_Exception,
!          No_Warn_On_Non_Local_Exception,
!          Warn_On_Object_Renames_Function,
!          Warn_On_Obsolescent_Feature,
!          Warn_On_Overlap,
!          Warn_On_Overridden_Size,
!          Warn_On_Parameter_Order,
!          Warn_On_Pedantic_Checks,
!          Warn_On_Questionable_Layout,
!          Warn_On_Questionable_Missing_Parens,
!          Warn_On_Record_Holes,
!          Warn_On_Redundant_Constructs,
!          Warn_On_Reverse_Bit_Order,
!          Warn_On_Size_Alignment,
!          Warn_On_Standard_Redefinition,
!          Warn_On_Suspicious_Contract,
!          Warn_On_Suspicious_Modulus_Value,
!          Warn_On_Unchecked_Conversion,
!          Warn_On_Unknown_Compile_Time_Warning,
!          Warn_On_Unordered_Enumeration_Type,
!          Warn_On_Unrecognized_Pragma,
!          Warn_On_Unrepped_Components,
!          Warn_On_Warnings_Off); -- Opt_Warnings_Enum
! 
!       subtype Warnings_Enum is Opt_Warnings_Enum
!         range Opt_Warnings_Enum'Succ (Special_Case) .. Opt_Warnings_Enum'Last;
!       --  Just the warning switches, without the null-ish values
!    end Warnings_Package;
!    use Warnings_Package;
! 
!    type Warnings_State is array (Warnings_Enum) of Boolean;
!    pragma Pack (Warnings_State);
!    --  Without Pack, we can have bootstrapping failures, because the compiler
!    --  generates calls to System.Boolean_Array_Operations, which is not
!    --  currently part of the compiler.
! 
!    Warning_Flags : Warnings_State :=
!    --  Current state of warnings -- True/False means enabled/disabled.
!    --  The following initializes the flags to their default values,
!    --  and warning switches modify them.
!      (Address_Clause_Overlay_Warnings |
!       Elab_Warnings |
!       Implementation_Unit_Warnings |
!       Warning_Doc_Switch |
!       Warn_On_Ada_2005_Compatibility |
!       Warn_On_Ada_2012_Compatibility |
!       Warn_On_Ada_2022_Compatibility |
!       Warn_On_Assertion_Failure |
!       Warn_On_Assumed_Low_Bound |
!       Warn_On_Biased_Representation |
!       Warn_On_Export_Import |
!       Warn_On_No_Value_Assigned |
!       Warn_On_Questionable_Missing_Parens |
!       Warn_On_Reverse_Bit_Order |
!       Warn_On_Size_Alignment |
!       Warn_On_Suspicious_Contract |
!       Warn_On_Suspicious_Modulus_Value |
!       Warn_On_Unchecked_Conversion |
!       Warn_On_Unknown_Compile_Time_Warning |
!       Warn_On_Unrecognized_Pragma =>
!         True,
! 
!       Check_Unreferenced |
!       Check_Unreferenced_Formals |
!       Check_Withs |
!       Constant_Condition_Warnings |
!       Elab_Info_Messages |
!       Ineffective_Inline_Warnings |
!       List_Body_Required_Info |
!       List_Inherited_Aspects |
!       Warn_On_All_Unread_Out_Parameters |
!       Warn_On_Anonymous_Allocators |
!       Warn_On_Atomic_Synchronization |
!       Warn_On_Bad_Fixed_Value |
!       Warn_On_Component_Order |
!       Warn_On_Constant |
!       Warn_On_Deleted_Code |
!       Warn_On_Dereference |
!       Warn_On_Elab_Access |
!       Warn_On_Hiding |
!       Warn_On_Ignored_Equality |
!       Warn_On_Late_Primitives |
!       Warn_On_Modified_Unread |
!       Warn_On_Non_Local_Exception |
!       No_Warn_On_Non_Local_Exception |
!       Warn_On_Object_Renames_Function |
!       Warn_On_Obsolescent_Feature |
!       Warn_On_Overlap |
!       Warn_On_Overridden_Size |
!       Warn_On_Parameter_Order |
!       Warn_On_Pedantic_Checks |
!       Warn_On_Questionable_Layout |
!       Warn_On_Record_Holes |
!       Warn_On_Redundant_Constructs |
!       Warn_On_Standard_Redefinition |
!       Warn_On_Unordered_Enumeration_Type |
!       Warn_On_Unrepped_Components |
!       Warn_On_Warnings_Off =>
!         False);
! 
!    package X renames Warnings_Package;
!    F : Warnings_State renames Warning_Flags;
!    --  Short-hand names used only locally to this package
! 
!    --  The following rename all the components of Warning_Flags for convenient
!    --  access throughout the compiler.
! 
!    pragma Style_Checks ("M120");
!    Address_Clause_Overlay_Warnings : Boolean renames F (X.Address_Clause_Overlay_Warnings);
!    --  Set False to disable address clause warnings. Modified by use of
!    --  -gnatwo/O.
! 
!    Check_Unreferenced : Boolean renames F (X.Check_Unreferenced);
!    --  Set to True to enable checking for unreferenced entities other
!    --  than formal parameters (for which see Check_Unreferenced_Formals)
!    --  Modified by use of -gnatwu/U.
! 
!    Check_Unreferenced_Formals : Boolean renames F (X.Check_Unreferenced_Formals);
!    --  Set to True to check for unreferenced formals. This is turned on by
!    --  -gnatwa/wf/wu and turned off by -gnatwA/wF/wU.
! 
!    Check_Withs : Boolean renames F (X.Check_Withs);
!    --  Set to True to enable checking for unused withs, and also the case
!    --  of withing a package and using none of the entities in the package.
!    --  Modified by use of -gnatwu/U.
! 
!    Constant_Condition_Warnings : Boolean renames F (X.Constant_Condition_Warnings);
!    --  Set to True to activate warnings on constant conditions. Modified by
!    --  use of -gnatwc/C.
! 
!    Elab_Info_Messages : Boolean renames F (X.Elab_Info_Messages);
!    --  Set to True to output info messages for static elabmodel (-gnatel)
! 
!    Elab_Warnings : Boolean renames F (X.Elab_Warnings);
!    --  Set to True to generate elaboration warnings (-gnatwl). The warnings are
!    --  enabled by default because they carry the same importance as errors. The
!    --  compiler cannot emit actual errors because elaboration diagnostics need
!    --  dataflow analysis, which is not available. This behavior parallels that
!    --  of the old ABE mechanism.
! 
!    Implementation_Unit_Warnings : Boolean renames F (X.Implementation_Unit_Warnings);
!    --  Set True to active warnings for use of implementation internal units.
!    --  Modified by use of -gnatwi/-gnatwI.
! 
!    Ineffective_Inline_Warnings : Boolean renames F (X.Ineffective_Inline_Warnings);
!    --  Set True to activate warnings if front-end inlining (-gnatN) is not able
!    --  to actually inline a particular call (or all calls). Can be controlled
!    --  by use of -gnatwp/-gnatwP. Also set True to activate warnings if
!    --  frontend inlining is not able to inline a subprogram expected to
!    --  be inlined in GNATprove mode.
! 
!    List_Body_Required_Info : Boolean renames F (X.List_Body_Required_Info);
!    --  List info messages about why a package requires a body. Modified by use
!    --  of -gnatw.y/.Y.
! 
!    List_Inherited_Aspects : Boolean renames F (X.List_Inherited_Aspects);
!    --  List inherited invariants, preconditions, and postconditions from
!    --  Invariant'Class, Pre'Class, and Post'Class aspects. Also list inherited
!    --  subtype predicates. Modified by use of -gnatw.l/.L.
! 
!    Warning_Doc_Switch : Boolean renames F (X.Warning_Doc_Switch);
!    --  If this is set True, then the ??/?*?/?$?/?x?/?.x?/?_x? insertion
!    --  sequences in error messages generate appropriate tags for the output
!    --  error messages. If this switch is False, then these sequences are still
!    --  recognized (for the purposes of implementing the pattern matching in
!    --  pragmas Warnings (Off,..) and Warning_As_Error(...) but do not result
!    --  in adding the error message tag. The -gnatw.d switch sets this flag
!    --  True, -gnatw.D sets this flag False.
! 
!    Warn_On_Ada_2005_Compatibility : Boolean renames F (X.Warn_On_Ada_2005_Compatibility);
!    --  Set to True to generate all warnings on Ada 2005 compatibility issues,
!    --  including warnings on Ada 2005 obsolescent features used in Ada 2005
!    --  mode. Set by default, modified by use of -gnatwy/Y.
! 
!    Warn_On_Ada_2012_Compatibility : Boolean renames F (X.Warn_On_Ada_2012_Compatibility);
!    --  Set to True to generate all warnings on Ada 2012 compatibility issues,
!    --  including warnings on Ada 2012 obsolescent features used in Ada 2012
!    --  mode. Modified by use of -gnatwy/Y.
! 
!    Warn_On_Ada_2022_Compatibility : Boolean renames F (X.Warn_On_Ada_2022_Compatibility);
!    --  Set to True to generate all warnings on Ada 2022 compatibility issues,
!    --  including warnings on Ada 2022 obsolescent features used in Ada 2022
!    --  mode. There is no switch controlling this option.
! 
!    Warn_On_All_Unread_Out_Parameters : Boolean renames F (X.Warn_On_All_Unread_Out_Parameters);
!    --  Set to True to generate warnings in all cases where a variable is
!    --  modified by being passed as to an OUT formal, but the resulting value is
!    --  never read. The default is that this warning is suppressed. Modified
!    --  by use of gnatw.o/.O.
! 
!    Warn_On_Anonymous_Allocators : Boolean renames F (X.Warn_On_Anonymous_Allocators);
     --  Warn when allocators for anonymous access types are present, which,
     --  although not illegal in Ada, may be confusing to users due to how
     --  accessibility checks get generated. Off by default, modified by use
     --  of -gnatw_a/_A and set as part of -gnatwa.
  
!    Warn_On_Assertion_Failure : Boolean renames F (X.Warn_On_Assertion_Failure);
!    --  Set to True to activate warnings on assertions that can be determined
!    --  at compile time will always fail. Modified by use of -gnatw.a/.A.
! 
!    Warn_On_Assumed_Low_Bound : Boolean renames F (X.Warn_On_Assumed_Low_Bound);
!    --  Set to True to activate warnings for string parameters that are indexed
!    --  with literals or S'Length, presumably assuming a lower bound of one.
!    --  Modified by use of -gnatww/W.
! 
!    Warn_On_Atomic_Synchronization : Boolean renames F (X.Warn_On_Atomic_Synchronization);
!    --  Set to True to generate information messages for atomic synchronization.
!    --  Modified by use of -gnatw.n/.N.
! 
!    Warn_On_Bad_Fixed_Value : Boolean renames F (X.Warn_On_Bad_Fixed_Value);
!    --  Set to True to generate warnings for static fixed-point expression
!    --  values that are not an exact multiple of the small value of the type.
!    --  Odd by default, modified by use of -gnatwb/B.
! 
!    Warn_On_Biased_Representation : Boolean renames F (X.Warn_On_Biased_Representation);
!    --  Set to True to generate warnings for size clauses, component clauses
!    --  and component_size clauses that force biased representation. Modified
!    --  by use of -gnatw.b/.B.
! 
!    Warn_On_Component_Order : Boolean renames F (X.Warn_On_Component_Order);
!    --  Warn when record component clauses are out of order with respect to the
!    --  component declarations, or if the memory layout is out of order with
!    --  respect to component declarations and clauses.  Off by default, set by
!    --  -gnatw_r (but not -gnatwa).
! 
!    Warn_On_Constant : Boolean renames F (X.Warn_On_Constant);
!    --  Set to True to generate warnings for variables that could be declared
!    --  as constants. Modified by use of -gnatwk/K.
! 
!    Warn_On_Deleted_Code : Boolean renames F (X.Warn_On_Deleted_Code);
!    --  Set to True to generate warnings for code deleted by the front end
!    --  for conditional statements whose outcome is known at compile time.
!    --  Modified by use of -gnatwt/T.
! 
!    Warn_On_Dereference : Boolean renames F (X.Warn_On_Dereference);
!    --  Set to True to generate warnings for implicit dereferences for array
!    --  indexing and record component access. Modified by use of -gnatwd/D.
! 
!    Warn_On_Elab_Access : Boolean renames F (X.Warn_On_Elab_Access);
!    --  Set to True to generate warnings for P'Access in the case where
!    --  subprogram P is in the same package as the P'Access, and the P'Access is
!    --  evaluated at package elaboration time, and occurs before the body of P
!    --  has been elaborated. Modified by use of -gnatw.f/.F.
! 
!    Warn_On_Export_Import : Boolean renames F (X.Warn_On_Export_Import);
!    --  Set to True to generate warnings for suspicious use of export or
!    --  import pragmas. Modified by use of -gnatwx/X.
! 
!    Warn_On_Hiding : Boolean renames F (X.Warn_On_Hiding);
!    --  Set to True to generate warnings if a declared entity hides another
!    --  entity. The default is that this warning is suppressed. Modified by
!    --  use of -gnatwh/H.
! 
!    Warn_On_Ignored_Equality : Boolean renames F (X.Warn_On_Ignored_Equality);
!    --  Warn when a user-defined "=" function does not compose (i.e. is ignored
!    --  for a predefined "=" for a composite type containing a component of
!    --  whose type has the user-defined "=" as primitive). Off by default, and
!    --  set by -gnatw_q (but not -gnatwa).
! 
!    Warn_On_Late_Primitives : Boolean renames F (X.Warn_On_Late_Primitives);
     --  Warn when tagged type public primitives are defined after its private
     --  extensions.
  
!    Warn_On_Modified_Unread : Boolean renames F (X.Warn_On_Modified_Unread);
!    --  Set to True to generate warnings if a variable is assigned but is never
!    --  read. Also controls warnings for similar cases involving out parameters,
!    --  but only if there is only one out parameter for the procedure involved.
!    --  The default is that this warning is suppressed, modified by use of
!    --  -gnatwm/M.
  
!    Warn_On_No_Value_Assigned : Boolean renames F (X.Warn_On_No_Value_Assigned);
!    --  Set to True to generate warnings if no value is ever assigned to a
!    --  variable that is at least partially uninitialized. Set to false to
!    --  suppress such warnings. The default is that such warnings are enabled.
!    --  Modified by use of -gnatwv/V.
! 
!    Warn_On_Non_Local_Exception : Boolean renames F (X.Warn_On_Non_Local_Exception);
!    --  Set to True to generate warnings for non-local exception raises and also
!    --  handlers that can never handle a local raise. This warning is only ever
!    --  generated if pragma Restrictions (No_Exception_Propagation) is set. The
!    --  default is not to generate the warnings except that if the source has
!    --  at least one exception handler, and this restriction is set, and the
!    --  warning was not explicitly turned off, then it is turned on by default.
!    --  Modified by use of -gnatw.x/.X.
! 
!    No_Warn_On_Non_Local_Exception : Boolean renames F (X.No_Warn_On_Non_Local_Exception);
!    --  This is set to True if the above warning is explicitly suppressed. We
!    --  use this to avoid turning it on by default when No_Exception_Propagation
!    --  restriction is set and an exception handler is present.
! 
!    Warn_On_Object_Renames_Function : Boolean renames F (X.Warn_On_Object_Renames_Function);
!    --  Set to True to generate warnings when a function result is renamed as
!    --  an object. The default is that this warning is disabled. Modified by
!    --  use of -gnatw.r/.R.
! 
!    Warn_On_Obsolescent_Feature : Boolean renames F (X.Warn_On_Obsolescent_Feature);
!    --  Set to True to generate warnings on use of any feature in Annex or if a
!    --  subprogram is called for which a pragma Obsolescent applies. Modified
!    --  by use of -gnatwj/J.
! 
!    Warn_On_Overlap : Boolean renames F (X.Warn_On_Overlap);
!    --  Set to True to generate warnings when a writable actual overlaps with
!    --  another actual in a subprogram call. This applies only in modes before
!    --  Ada 2012. Starting with Ada 2012, such overlaps are illegal.
!    --  Modified by use of -gnatw.i/.I.
! 
!    Warn_On_Overridden_Size : Boolean renames F (X.Warn_On_Overridden_Size);
     --  Warn when explicit record component clause or array component_size
     --  clause specifies a size that overrides a size for the type which was
     --  set with an explicit size clause. Off by default, modified by use of
     --  -gnatw.s/.S (but not -gnatwa).
  
!    Warn_On_Parameter_Order : Boolean renames F (X.Warn_On_Parameter_Order);
!    --  Set to True to generate warnings for cases where the argument list for
!    --  a call is a sequence of identifiers that match the formal identifiers,
!    --  but are in the wrong order.
! 
!    Warn_On_Pedantic_Checks : Boolean renames F (X.Warn_On_Pedantic_Checks);
     --  Warn for violation of miscellaneous pedantic rules (such as when the
     --  subtype of a formal parameter given in a subprogram body's specification
     --  comes from a different subtype declaration that the subtype of the
     --  formal in the subprogram declaration). Off by default, and set by
     --  -gnatw_p (but not -gnatwa).
  
!    Warn_On_Questionable_Layout : Boolean renames F (X.Warn_On_Questionable_Layout);
     --  Warn when default layout of a record type is questionable for run-time
     --  efficiency reasons and would be improved by reordering the components.
     --  Off by default, modified by use of -gnatw.q/.Q (but not -gnatwa).
  
!    function Get_Warn_On_Questionable_Layout return Boolean is
!      (Warn_On_Questionable_Layout);
!    --  WARNING: There is a matching C declaration of this function in fe.h
  
!    Warn_On_Questionable_Missing_Parens : Boolean renames F (X.Warn_On_Questionable_Missing_Parens);
!    --  Set to True to generate warnings for cases where parentheses are missing
!    --  and the usage is questionable, because the intent is unclear. On by
!    --  default, modified by use of -gnatwq/Q.
! 
!    Warn_On_Record_Holes : Boolean renames F (X.Warn_On_Record_Holes);
     --  Warn when explicit record component clauses leave uncovered holes (gaps)
     --  in a record layout. Off by default, set by -gnatw.h (but not -gnatwa).
  
!    Warn_On_Redundant_Constructs : Boolean renames F (X.Warn_On_Redundant_Constructs);
!    --  Set to True to generate warnings for redundant constructs (e.g. useless
!    --  assignments/conversions). The default is that this warning is disabled.
!    --  Modified by use of -gnatwr/R.
  
!    Warn_On_Reverse_Bit_Order : Boolean renames F (X.Warn_On_Reverse_Bit_Order);
!    --  Set to True to generate warning (informational) messages for component
!    --  clauses that are affected by non-standard bit-order. The default is
!    --  that this warning is enabled. Modified by -gnatw.v/.V.
! 
!    Warn_On_Size_Alignment : Boolean renames F (X.Warn_On_Size_Alignment);
     --  Warn when explicit Size and Alignment clauses are given for a type, and
     --  the size is not a multiple of the alignment. Off by default, modified
     --  by use of -gnatw.z/.Z and set as part of -gnatwa.
  
!    Warn_On_Standard_Redefinition : Boolean renames F (X.Warn_On_Standard_Redefinition);
     --  Warn when a program defines an identifier that matches a name in
     --  Standard. Off by default, modified by use of -gnatw.k/.K (but not
     --  by -gnatwa).
  
+    Warn_On_Suspicious_Contract : Boolean renames F (X.Warn_On_Suspicious_Contract);
+    --  Set to True to generate warnings for suspicious contracts expressed as
+    --  pragmas or aspects precondition and postcondition, as well as other
+    --  suspicious cases of expressions typically found in contracts like
+    --  quantified expressions and uses of Update attribute. The default is that
+    --  this warning is enabled. Modified by use of -gnatw.t/.T.
+ 
+    Warn_On_Suspicious_Modulus_Value : Boolean renames F (X.Warn_On_Suspicious_Modulus_Value);
+    --  Set to True to generate warnings for suspicious modulus values, as well
+    --  as negative literals of a modular type. The default is that this warning
+    --  is enabled. Modified by -gnatw.m/.M.
+ 
+    Warn_On_Unchecked_Conversion : Boolean renames F (X.Warn_On_Unchecked_Conversion);
+    --  Set to True to generate warnings for unchecked conversions that may have
+    --  non-portable semantics (e.g. because sizes of types differ). Modified
+    --  by use of -gnatwz/Z.
+ 
+    Warn_On_Unknown_Compile_Time_Warning : Boolean renames F (X.Warn_On_Unknown_Compile_Time_Warning);
+    --  Warn on a pragma Compile_Time_Warning whose condition has a value that
+    --  is not known at compile time. On by default, modified by use
+    --  of -gnatw_c/_C and set as part of -gnatwa.
+ 
+    Warn_On_Unordered_Enumeration_Type : Boolean renames F (X.Warn_On_Unordered_Enumeration_Type);
+    --  Set to True to generate warnings for inappropriate uses (comparisons
+    --  and explicit ranges) on unordered enumeration types (which includes
+    --  all enumeration types for which pragma Ordered is not given). The
+    --  default is that this warning is disabled. Modified by -gnat.u/.U.
+ 
+    Warn_On_Unrecognized_Pragma : Boolean renames F (X.Warn_On_Unrecognized_Pragma);
+    --  Set to True to generate warnings for unrecognized pragmas. The default
+    --  is that this warning is enabled. Modified by use of -gnatwg/G.
+ 
+    Warn_On_Unrepped_Components : Boolean renames F (X.Warn_On_Unrepped_Components);
+    --  Set to True to generate warnings for the case of components of record
+    --  which have a record representation clause but this component does not
+    --  have a component clause. Modified by use of -gnatw.c/.C.
+ 
+    Warn_On_Warnings_Off : Boolean renames F (X.Warn_On_Warnings_Off);
+    --  Set to True to generate warnings for use of Pragma Warnings (Off, ent),
+    --  where either the pragma is never used, or it could be replaced by a
+    --  pragma Unmodified or Unreferenced. Also generates warnings for pragma
+    --  Warning (Off, string) which either has no matching pragma Warning On,
+    --  or where no warning has been suppressed by the use of the pragma.
+    --  Modified by use of -gnatw.w/.W.
+    pragma Style_Checks ("M79");
+ 
     -----------------------------------
     -- Saving and Restoring Warnings --
     -----------------------------------
  
!    function Save_Warnings return Warnings_State;
!    --  Returns current settings of warnings
  
!    procedure Restore_Warnings (W : Warnings_State);
     --  Restores current settings of warning flags from W
  
     -----------------
     -- Subprograms --
     -----------------
  
!    type Warning_Family is
!      --  The "family" indicates the form of warning switch:
!      (Plain, -- form "-gnatwx"
!       '.',   -- form "-gnatw.x"
!       '_');  -- form "-gnatw_x"
!      --  where "x" is a lowercase letter that enables a particular warning.
!      --  Typically, uppercase of "x" disables the warning, but there are some
!      --  switches that do not follow that pattern.
  
!    function Set_Warning_Switch
!      (Family : Warning_Family; C : Character) return Boolean;
!    --  Set the warning switch or switches corresponding to the given family and
!    --  character. Returns True for valid warning switch, False for invalid.
!    --  Called for -gnatw... switches, and for pragma Warnings.
  
     procedure Set_GNAT_Mode_Warnings;
!    --  Called for -gnatg and -gnatw.g to set GNAT mode warnings. This set of
!    --  warnings is neither a subset nor a superset of -gnatwa.
  
  end Warnsw;
diff -Nrcpad gcc-12.2.0/gcc/ada/widechar.adb gcc-13.1.0/gcc/ada/widechar.adb
*** gcc-12.2.0/gcc/ada/widechar.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/widechar.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/widechar.ads gcc-13.1.0/gcc/ada/widechar.ads
*** gcc-12.2.0/gcc/ada/widechar.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/widechar.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/xoscons.adb gcc-13.1.0/gcc/ada/xoscons.adb
*** gcc-12.2.0/gcc/ada/xoscons.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xoscons.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 2008-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/xr_tabls.adb gcc-13.1.0/gcc/ada/xr_tabls.adb
*** gcc-12.2.0/gcc/ada/xr_tabls.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xr_tabls.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1628 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             X R  _ T A B L S                             --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- with Types;    use Types;
- with Osint;
- 
- with Ada.Unchecked_Conversion;
- with Ada.Unchecked_Deallocation;
- with Ada.Strings.Fixed;
- with Ada.Strings;
- with Ada.Text_IO;
- with Ada.Characters.Handling;   use Ada.Characters.Handling;
- with Ada.Strings.Unbounded;     use Ada.Strings.Unbounded;
- 
- with GNAT.OS_Lib;               use GNAT.OS_Lib;
- with GNAT.Directory_Operations; use GNAT.Directory_Operations;
- with GNAT.HTable;
- with GNAT.Heap_Sort_G;
- 
- package body Xr_Tabls is
- 
-    type HTable_Headers is range 1 .. 10000;
- 
-    procedure Set_Next (E : File_Reference; Next : File_Reference);
-    function  Next (E : File_Reference) return File_Reference;
-    function  Get_Key (E : File_Reference) return Cst_String_Access;
-    function  Hash (F : Cst_String_Access) return HTable_Headers;
-    function  Equal (F1, F2 : Cst_String_Access) return Boolean;
-    --  The five subprograms above are used to instantiate the static
-    --  htable to store the files that should be processed.
- 
-    package File_HTable is new GNAT.HTable.Static_HTable
-      (Header_Num => HTable_Headers,
-       Element    => File_Record,
-       Elmt_Ptr   => File_Reference,
-       Null_Ptr   => null,
-       Set_Next   => Set_Next,
-       Next       => Next,
-       Key        => Cst_String_Access,
-       Get_Key    => Get_Key,
-       Hash       => Hash,
-       Equal      => Equal);
-    --  A hash table to store all the files referenced in the
-    --  application.  The keys in this htable are the name of the files
-    --  themselves, therefore it is assumed that the source path
-    --  doesn't contain twice the same source or ALI file name
- 
-    type Unvisited_Files_Record;
-    type Unvisited_Files_Access is access Unvisited_Files_Record;
-    type Unvisited_Files_Record is record
-       File : File_Reference;
-       Next : Unvisited_Files_Access;
-    end record;
-    --  A special list, in addition to File_HTable, that only stores
-    --  the files that haven't been visited so far. Note that the File
-    --  list points to some data in File_HTable, and thus should never be freed.
- 
-    function Next (E : Declaration_Reference) return Declaration_Reference;
-    procedure Set_Next (E, Next : Declaration_Reference);
-    function  Get_Key (E : Declaration_Reference) return Cst_String_Access;
-    --  The subprograms above are used to instantiate the static
-    --  htable to store the entities that have been found in the application
- 
-    package Entities_HTable is new GNAT.HTable.Static_HTable
-      (Header_Num => HTable_Headers,
-       Element    => Declaration_Record,
-       Elmt_Ptr   => Declaration_Reference,
-       Null_Ptr   => null,
-       Set_Next   => Set_Next,
-       Next       => Next,
-       Key        => Cst_String_Access,
-       Get_Key    => Get_Key,
-       Hash       => Hash,
-       Equal      => Equal);
-    --  A hash table to store all the entities defined in the
-    --  application. For each entity, we store a list of its reference
-    --  locations as well.
-    --  The keys in this htable should be created with Key_From_Ref,
-    --  and are the file, line and column of the declaration, which are
-    --  unique for every entity.
- 
-    Entities_Count : Natural := 0;
-    --  Number of entities in Entities_HTable. This is used in the end
-    --  when sorting the table.
- 
-    Longest_File_Name_In_Table : Natural := 0;
-    --  The length of the longest file name stored
- 
-    Unvisited_Files : Unvisited_Files_Access := null;
-    --  Linked list of unvisited files
- 
-    Directories : Project_File_Ptr;
-    --  Store the list of directories to visit
- 
-    Default_Match : Boolean := False;
-    --  Default value for match in declarations
- 
-    function Parse_Gnatls_Src return String;
-    --  Return the standard source directories (taking into account the
-    --  ADA_INCLUDE_PATH environment variable, if Osint.Add_Default_Search_Dirs
-    --  was called first).
- 
-    function Parse_Gnatls_Obj return String;
-    --  Return the standard object directories (taking into account the
-    --  ADA_OBJECTS_PATH environment variable).
- 
-    function Key_From_Ref
-      (File_Ref  : File_Reference;
-       Line      : Natural;
-       Column    : Natural)
-       return      String;
-    --  Return a key for the symbol declared at File_Ref, Line,
-    --  Column. This key should be used for lookup in Entity_HTable
- 
-    function Is_Less_Than (Decl1, Decl2 : Declaration_Reference) return Boolean;
-    --  Compare two declarations (the comparison is case-insensitive)
- 
-    function Is_Less_Than (Ref1, Ref2 : Reference) return Boolean;
-    --  Compare two references
- 
-    procedure Store_References
-      (Decl            : Declaration_Reference;
-       Get_Writes      : Boolean := False;
-       Get_Reads       : Boolean := False;
-       Get_Bodies      : Boolean := False;
-       Get_Declaration : Boolean := False;
-       Arr             : in out Reference_Array;
-       Index           : in out Natural);
-    --  Store in Arr, starting at Index, all the references to Decl. The Get_*
-    --  parameters can be used to indicate which references should be stored.
-    --  Constraint_Error will be raised if Arr is not big enough.
- 
-    procedure Sort (Arr : in out Reference_Array);
-    --  Sort an array of references (Arr'First must be 1)
- 
-    --------------
-    -- Set_Next --
-    --------------
- 
-    procedure Set_Next (E : File_Reference; Next : File_Reference) is
-    begin
-       E.Next := Next;
-    end Set_Next;
- 
-    procedure Set_Next
-      (E : Declaration_Reference; Next : Declaration_Reference) is
-    begin
-       E.Next := Next;
-    end Set_Next;
- 
-    -------------
-    -- Get_Key --
-    -------------
- 
-    function Get_Key (E : File_Reference) return Cst_String_Access is
-    begin
-       return E.File;
-    end Get_Key;
- 
-    function Get_Key (E : Declaration_Reference) return Cst_String_Access is
-    begin
-       return E.Key;
-    end Get_Key;
- 
-    ----------
-    -- Hash --
-    ----------
- 
-    function Hash (F : Cst_String_Access) return HTable_Headers is
-       function H is new GNAT.HTable.Hash (HTable_Headers);
- 
-    begin
-       return H (F.all);
-    end Hash;
- 
-    -----------
-    -- Equal --
-    -----------
- 
-    function Equal (F1, F2 : Cst_String_Access) return Boolean is
-    begin
-       return F1.all = F2.all;
-    end Equal;
- 
-    ------------------
-    -- Key_From_Ref --
-    ------------------
- 
-    function Key_From_Ref
-      (File_Ref : File_Reference;
-       Line     : Natural;
-       Column   : Natural)
-       return     String
-    is
-    begin
-       return File_Ref.File.all & Natural'Image (Line) & Natural'Image (Column);
-    end Key_From_Ref;
- 
-    ---------------------
-    -- Add_Declaration --
-    ---------------------
- 
-    function Add_Declaration
-      (File_Ref     : File_Reference;
-       Symbol       : String;
-       Line         : Natural;
-       Column       : Natural;
-       Decl_Type    : Character;
-       Is_Parameter : Boolean := False;
-       Remove_Only  : Boolean := False;
-       Symbol_Match : Boolean := True)
-       return         Declaration_Reference
-    is
-       procedure Unchecked_Free is new Ada.Unchecked_Deallocation
-         (Declaration_Record, Declaration_Reference);
- 
-       Key : aliased constant String := Key_From_Ref (File_Ref, Line, Column);
- 
-       New_Decl : Declaration_Reference :=
-                    Entities_HTable.Get (Key'Unchecked_Access);
- 
-       Is_Param : Boolean := Is_Parameter;
- 
-    begin
-       --  Insert the Declaration in the table. There might already be a
-       --  declaration in the table if the entity is a parameter, so we
-       --  need to check that first.
- 
-       if New_Decl /= null and then New_Decl.Symbol_Length = 0 then
-          Is_Param := Is_Parameter or else New_Decl.Is_Parameter;
-          Entities_HTable.Remove (Key'Unrestricted_Access);
-          Entities_Count := Entities_Count - 1;
-          Free (New_Decl.Key);
-          Unchecked_Free (New_Decl);
-          New_Decl := null;
-       end if;
- 
-       --  The declaration might also already be there for parent types. In
-       --  this case, we should keep the entry, since some other entries are
-       --  pointing to it.
- 
-       if New_Decl = null
-         and then not Remove_Only
-       then
-          New_Decl :=
-            new Declaration_Record'
-              (Symbol_Length => Symbol'Length,
-               Symbol        => Symbol,
-               Key           => new String'(Key),
-               Decl          => new Reference_Record'
-                                      (File          => File_Ref,
-                                       Line          => Line,
-                                       Column        => Column,
-                                       Source_Line   => null,
-                                       Next          => null),
-               Is_Parameter  => Is_Param,
-               Decl_Type     => Decl_Type,
-               Body_Ref      => null,
-               Ref_Ref       => null,
-               Modif_Ref     => null,
-               Match         => Symbol_Match
-                                  and then
-                                    (Default_Match
-                                      or else Match (File_Ref, Line, Column)),
-               Par_Symbol    => null,
-               Next          => null);
- 
-          Entities_HTable.Set (New_Decl);
-          Entities_Count := Entities_Count + 1;
- 
-          if New_Decl.Match then
-             Longest_File_Name_In_Table :=
-               Natural'Max (File_Ref.File'Length, Longest_File_Name_In_Table);
-          end if;
- 
-       elsif New_Decl /= null
-         and then not New_Decl.Match
-       then
-          New_Decl.Match := Default_Match
-            or else Match (File_Ref, Line, Column);
-          New_Decl.Is_Parameter := New_Decl.Is_Parameter or Is_Param;
- 
-       elsif New_Decl /= null then
-          New_Decl.Is_Parameter := New_Decl.Is_Parameter or Is_Param;
-       end if;
- 
-       return New_Decl;
-    end Add_Declaration;
- 
-    ----------------------
-    -- Add_To_Xref_File --
-    ----------------------
- 
-    function Add_To_Xref_File
-      (File_Name       : String;
-       Visited         : Boolean := True;
-       Emit_Warning    : Boolean := False;
-       Gnatchop_File   : String  := "";
-       Gnatchop_Offset : Integer := 0) return File_Reference
-    is
-       Base    : aliased constant String := Base_Name (File_Name);
-       Dir     : constant String := Dir_Name (File_Name);
-       Dir_Acc : GNAT.OS_Lib.String_Access   := null;
-       Ref     : File_Reference;
- 
-    begin
-       --  Do we have a directory name as well?
- 
-       if File_Name /= Base then
-          Dir_Acc := new String'(Dir);
-       end if;
- 
-       Ref := File_HTable.Get (Base'Unchecked_Access);
-       if Ref = null then
-          Ref := new File_Record'
-            (File            => new String'(Base),
-             Dir             => Dir_Acc,
-             Lines           => null,
-             Visited         => Visited,
-             Emit_Warning    => Emit_Warning,
-             Gnatchop_File   => new String'(Gnatchop_File),
-             Gnatchop_Offset => Gnatchop_Offset,
-             Next            => null);
-          File_HTable.Set (Ref);
- 
-          if not Visited then
- 
-             --  Keep a separate list for faster access
- 
-             Set_Unvisited (Ref);
-          end if;
-       end if;
-       return Ref;
-    end Add_To_Xref_File;
- 
-    --------------
-    -- Add_Line --
-    --------------
- 
-    procedure Add_Line
-      (File   : File_Reference;
-       Line   : Natural;
-       Column : Natural)
-    is
-    begin
-       File.Lines := new Ref_In_File'(Line   => Line,
-                                      Column => Column,
-                                      Next   => File.Lines);
-    end Add_Line;
- 
-    ----------------
-    -- Add_Parent --
-    ----------------
- 
-    procedure Add_Parent
-      (Declaration : in out Declaration_Reference;
-       Symbol      : String;
-       Line        : Natural;
-       Column      : Natural;
-       File_Ref    : File_Reference)
-    is
-    begin
-       Declaration.Par_Symbol :=
-         Add_Declaration
-           (File_Ref, Symbol, Line, Column,
-            Decl_Type    => ' ',
-            Symbol_Match => False);
-    end Add_Parent;
- 
-    -------------------
-    -- Add_Reference --
-    -------------------
- 
-    procedure Add_Reference
-      (Declaration   : Declaration_Reference;
-       File_Ref      : File_Reference;
-       Line          : Natural;
-       Column        : Natural;
-       Ref_Type      : Character;
-       Labels_As_Ref : Boolean)
-    is
-       New_Ref : Reference;
-       New_Decl : Declaration_Reference;
-       pragma Unreferenced (New_Decl);
- 
-    begin
-       case Ref_Type is
-          when ' ' | 'b' | 'c' | 'H' | 'i' | 'm' | 'o' | 'r' | 'R' | 's' | 'x'
-          =>
-             null;
- 
-          when 'l' | 'w' =>
-             if not Labels_As_Ref then
-                return;
-             end if;
- 
-          when '=' | '<' | '>' | '^' =>
- 
-             --  Create dummy declaration in table to report it as a parameter
- 
-             --  In a given ALI file, the declaration of the subprogram comes
-             --  before the declaration of the parameter. However, it is
-             --  possible that another ALI file has been parsed that also
-             --  references the parameter (for instance a named parameter in
-             --  a call), so we need to check whether there already exists a
-             --  declaration for the parameter.
- 
-             New_Decl :=
-               Add_Declaration
-                 (File_Ref     => File_Ref,
-                  Symbol       => "",
-                  Line         => Line,
-                  Column       => Column,
-                  Decl_Type    => ' ',
-                  Is_Parameter => True);
- 
-          when 'd' | 'e' | 'E' | 'k' | 'p' | 'P' | 't' | 'z' =>
-             return;
- 
-          when others =>
-             Ada.Text_IO.Put_Line ("Unknown reference type: " & Ref_Type);
-             return;
-       end case;
- 
-       New_Ref := new Reference_Record'
-         (File        => File_Ref,
-          Line        => Line,
-          Column      => Column,
-          Source_Line => null,
-          Next        => null);
- 
-       --  We can insert the reference into the list directly, since all the
-       --  references will appear only once in the ALI file corresponding to the
-       --  file where they are referenced. This saves a lot of time compared to
-       --  checking the list to check if it exists.
- 
-       case Ref_Type is
-          when 'b' | 'c' =>
-             New_Ref.Next          := Declaration.Body_Ref;
-             Declaration.Body_Ref  := New_Ref;
- 
-          when ' ' | 'H' | 'i' | 'l' | 'o' | 'r' | 'R' | 's' | 'w' | 'x' =>
-             New_Ref.Next          := Declaration.Ref_Ref;
-             Declaration.Ref_Ref   := New_Ref;
- 
-          when 'm' =>
-             New_Ref.Next          := Declaration.Modif_Ref;
-             Declaration.Modif_Ref := New_Ref;
- 
-          when others =>
-             null;
-       end case;
- 
-       if not Declaration.Match then
-          Declaration.Match := Match (File_Ref, Line, Column);
-       end if;
- 
-       if Declaration.Match then
-          Longest_File_Name_In_Table :=
-            Natural'Max (File_Ref.File'Length, Longest_File_Name_In_Table);
-       end if;
-    end Add_Reference;
- 
-    -------------------
-    -- ALI_File_Name --
-    -------------------
- 
-    function ALI_File_Name (Ada_File_Name : String) return String is
-       --  Should ideally be based on the naming scheme defined in
-       --  project files but this is too late for an obsolescent feature.
- 
-       Index : constant Natural :=
-                 Ada.Strings.Fixed.Index
-                   (Ada_File_Name, ".", Going => Ada.Strings.Backward);
- 
-    begin
-       if Index /= 0 then
-          return Ada_File_Name (Ada_File_Name'First .. Index)
-            & Osint.ALI_Suffix.all;
-       else
-          return Ada_File_Name & "." & Osint.ALI_Suffix.all;
-       end if;
-    end ALI_File_Name;
- 
-    ------------------
-    -- Is_Less_Than --
-    ------------------
- 
-    function Is_Less_Than (Ref1, Ref2 : Reference) return Boolean is
-    begin
-       if Ref1 = null then
-          return False;
-       elsif Ref2 = null then
-          return True;
-       end if;
- 
-       if Ref1.File.File.all < Ref2.File.File.all then
-          return True;
- 
-       elsif Ref1.File.File.all = Ref2.File.File.all then
-          return (Ref1.Line < Ref2.Line
-                  or else (Ref1.Line = Ref2.Line
-                           and then Ref1.Column < Ref2.Column));
-       end if;
- 
-       return False;
-    end Is_Less_Than;
- 
-    ------------------
-    -- Is_Less_Than --
-    ------------------
- 
-    function Is_Less_Than (Decl1, Decl2 : Declaration_Reference) return Boolean
-    is
-       --  We cannot store the data case-insensitive in the table,
-       --  since we wouldn't be able to find the right casing for the
-       --  display later on.
- 
-       S1 : constant String := To_Lower (Decl1.Symbol);
-       S2 : constant String := To_Lower (Decl2.Symbol);
- 
-    begin
-       if S1 < S2 then
-          return True;
-       elsif S1 > S2 then
-          return False;
-       end if;
- 
-       return Decl1.Key.all < Decl2.Key.all;
-    end Is_Less_Than;
- 
-    -------------------------
-    -- Create_Project_File --
-    -------------------------
- 
-    procedure Create_Project_File (Name : String) is
-       Obj_Dir     : Unbounded_String := Null_Unbounded_String;
-       Src_Dir     : Unbounded_String := Null_Unbounded_String;
-       Build_Dir   : GNAT.OS_Lib.String_Access := new String'("");
- 
-       F           : File_Descriptor;
-       Len         : Positive;
-       File_Name   : aliased String := Name & ASCII.NUL;
- 
-    begin
-       --  Read the size of the file
- 
-       F := Open_Read (File_Name'Address, Text);
- 
-       --  Project file not found
- 
-       if F /= Invalid_FD then
-          Len := Positive (File_Length (F));
- 
-          declare
-             Buffer : String (1 .. Len);
-             Index  : Positive := Buffer'First;
-             Last   : Positive;
- 
-          begin
-             Len := Read (F, Buffer'Address, Len);
-             Close (F);
- 
-             --  First, look for Build_Dir, since all the source and object
-             --  path are relative to it.
- 
-             while Index <= Buffer'Last loop
- 
-                --  Find the end of line
- 
-                Last := Index;
-                while Last <= Buffer'Last
-                  and then Buffer (Last) /= ASCII.LF
-                  and then Buffer (Last) /= ASCII.CR
-                loop
-                   Last := Last + 1;
-                end loop;
- 
-                if Index <= Buffer'Last - 9
-                  and then Buffer (Index .. Index + 9) = "build_dir="
-                then
-                   Index := Index + 10;
-                   while Index <= Last
-                     and then (Buffer (Index) = ' '
-                               or else Buffer (Index) = ASCII.HT)
-                   loop
-                      Index := Index + 1;
-                   end loop;
- 
-                   Free (Build_Dir);
-                   Build_Dir := new String'(Buffer (Index .. Last - 1));
-                end if;
- 
-                Index := Last + 1;
- 
-                --  In case we had a ASCII.CR/ASCII.LF end of line, skip the
-                --  remaining symbol
- 
-                if Index <= Buffer'Last
-                  and then Buffer (Index) = ASCII.LF
-                then
-                   Index := Index + 1;
-                end if;
-             end loop;
- 
-             --  Now parse the source and object paths
- 
-             Index := Buffer'First;
-             while Index <= Buffer'Last loop
- 
-                --  Find the end of line
- 
-                Last := Index;
-                while Last <= Buffer'Last
-                  and then Buffer (Last) /= ASCII.LF
-                  and then Buffer (Last) /= ASCII.CR
-                loop
-                   Last := Last + 1;
-                end loop;
- 
-                if Index <= Buffer'Last - 7
-                  and then Buffer (Index .. Index + 7) = "src_dir="
-                then
-                   Append (Src_Dir, Normalize_Pathname
-                           (Name      => Ada.Strings.Fixed.Trim
-                            (Buffer (Index + 8 .. Last - 1), Ada.Strings.Both),
-                            Directory => Build_Dir.all) & Path_Separator);
- 
-                elsif Index <= Buffer'Last - 7
-                  and then Buffer (Index .. Index + 7) = "obj_dir="
-                then
-                   Append (Obj_Dir, Normalize_Pathname
-                           (Name      => Ada.Strings.Fixed.Trim
-                            (Buffer (Index + 8 .. Last - 1), Ada.Strings.Both),
-                            Directory => Build_Dir.all) & Path_Separator);
-                end if;
- 
-                --  In case we had a ASCII.CR/ASCII.LF end of line, skip the
-                --  remaining symbol
-                Index := Last + 1;
- 
-                if Index <= Buffer'Last
-                  and then Buffer (Index) = ASCII.LF
-                then
-                   Index := Index + 1;
-                end if;
-             end loop;
-          end;
-       end if;
- 
-       Osint.Add_Default_Search_Dirs;
- 
-       declare
-          Src : constant String := Parse_Gnatls_Src;
-          Obj : constant String := Parse_Gnatls_Obj;
- 
-       begin
-          Directories := new Project_File'
-            (Src_Dir_Length     => Length (Src_Dir) + Src'Length,
-             Obj_Dir_Length     => Length (Obj_Dir) + Obj'Length,
-             Src_Dir            => To_String (Src_Dir) & Src,
-             Obj_Dir            => To_String (Obj_Dir) & Obj,
-             Src_Dir_Index      => 1,
-             Obj_Dir_Index      => 1,
-             Last_Obj_Dir_Start => 0);
-       end;
- 
-       Free (Build_Dir);
-    end Create_Project_File;
- 
-    ---------------------
-    -- Current_Obj_Dir --
-    ---------------------
- 
-    function Current_Obj_Dir return String is
-    begin
-       return Directories.Obj_Dir
-         (Directories.Last_Obj_Dir_Start .. Directories.Obj_Dir_Index - 2);
-    end Current_Obj_Dir;
- 
-    ----------------
-    -- Get_Column --
-    ----------------
- 
-    function Get_Column (Decl : Declaration_Reference) return String is
-    begin
-       return Ada.Strings.Fixed.Trim (Natural'Image (Decl.Decl.Column),
-                                      Ada.Strings.Left);
-    end Get_Column;
- 
-    function Get_Column (Ref : Reference) return String is
-    begin
-       return Ada.Strings.Fixed.Trim (Natural'Image (Ref.Column),
-                                      Ada.Strings.Left);
-    end Get_Column;
- 
-    ---------------------
-    -- Get_Declaration --
-    ---------------------
- 
-    function Get_Declaration
-      (File_Ref : File_Reference;
-       Line     : Natural;
-       Column   : Natural)
-       return     Declaration_Reference
-    is
-       Key : aliased constant String := Key_From_Ref (File_Ref, Line, Column);
- 
-    begin
-       return Entities_HTable.Get (Key'Unchecked_Access);
-    end Get_Declaration;
- 
-    ----------------------
-    -- Get_Emit_Warning --
-    ----------------------
- 
-    function Get_Emit_Warning (File : File_Reference) return Boolean is
-    begin
-       return File.Emit_Warning;
-    end Get_Emit_Warning;
- 
-    --------------
-    -- Get_File --
-    --------------
- 
-    function Get_File
-      (Decl     : Declaration_Reference;
-       With_Dir : Boolean := False) return String
-    is
-    begin
-       return Get_File (Decl.Decl.File, With_Dir);
-    end Get_File;
- 
-    function Get_File
-      (Ref      : Reference;
-       With_Dir : Boolean := False) return String
-    is
-    begin
-       return Get_File (Ref.File, With_Dir);
-    end Get_File;
- 
-    function Get_File
-      (File     : File_Reference;
-       With_Dir : Boolean := False;
-       Strip    : Natural    := 0) return String
-    is
-       pragma Annotate (CodePeer, Skip_Analysis);
-       --  Disable CodePeer false positives
- 
-       Tmp : GNAT.OS_Lib.String_Access;
- 
-       function Internal_Strip (Full_Name : String) return String;
-       --  Internal function to process the Strip parameter
- 
-       --------------------
-       -- Internal_Strip --
-       --------------------
- 
-       function Internal_Strip (Full_Name : String) return String is
-          Unit_End        : Natural;
-          Extension_Start : Natural;
-          S               : Natural;
- 
-       begin
-          if Strip = 0 then
-             return Full_Name;
-          end if;
- 
-          --  Isolate the file extension
- 
-          Extension_Start := Full_Name'Last;
-          while Extension_Start >= Full_Name'First
-            and then Full_Name (Extension_Start) /= '.'
-          loop
-             Extension_Start := Extension_Start - 1;
-          end loop;
- 
-          --  Strip the right number of subunit_names
- 
-          S := Strip;
-          Unit_End := Extension_Start - 1;
-          while Unit_End >= Full_Name'First
-            and then S > 0
-          loop
-             if Full_Name (Unit_End) = '-' then
-                S := S - 1;
-             end if;
- 
-             Unit_End := Unit_End - 1;
-          end loop;
- 
-          if Unit_End < Full_Name'First then
-             return "";
-          else
-             return Full_Name (Full_Name'First .. Unit_End)
-               & Full_Name (Extension_Start .. Full_Name'Last);
-          end if;
-       end Internal_Strip;
- 
-    --  Start of processing for Get_File;
- 
-    begin
-       --  If we do not want the full path name
- 
-       if not With_Dir then
-          return Internal_Strip (File.File.all);
-       end if;
- 
-       if File.Dir = null then
-          if Ada.Strings.Fixed.Tail (File.File.all, 3) =
-                                                Osint.ALI_Suffix.all
-          then
-             Tmp := Locate_Regular_File
-                      (Internal_Strip (File.File.all), Directories.Obj_Dir);
-          else
-             Tmp := Locate_Regular_File
-                      (File.File.all, Directories.Src_Dir);
-          end if;
- 
-          if Tmp = null then
-             File.Dir := new String'("");
-          else
-             File.Dir := new String'(Dir_Name (Tmp.all));
-             Free (Tmp);
-          end if;
-       end if;
- 
-       return Internal_Strip (File.Dir.all & File.File.all);
-    end Get_File;
- 
-    ------------------
-    -- Get_File_Ref --
-    ------------------
- 
-    function Get_File_Ref (Ref : Reference) return File_Reference is
-    begin
-       return Ref.File;
-    end Get_File_Ref;
- 
-    -----------------------
-    -- Get_Gnatchop_File --
-    -----------------------
- 
-    function Get_Gnatchop_File
-      (File     : File_Reference;
-       With_Dir : Boolean := False)
-       return     String
-    is
-    begin
-       if File.Gnatchop_File.all = "" then
-          return Get_File (File, With_Dir);
-       else
-          return File.Gnatchop_File.all;
-       end if;
-    end Get_Gnatchop_File;
- 
-    function Get_Gnatchop_File
-      (Ref      : Reference;
-       With_Dir : Boolean := False)
-       return     String
-    is
-    begin
-       return Get_Gnatchop_File (Ref.File, With_Dir);
-    end Get_Gnatchop_File;
- 
-    function Get_Gnatchop_File
-      (Decl     : Declaration_Reference;
-       With_Dir : Boolean := False)
-       return     String
-    is
-    begin
-       return Get_Gnatchop_File (Decl.Decl.File, With_Dir);
-    end Get_Gnatchop_File;
- 
-    --------------
-    -- Get_Line --
-    --------------
- 
-    function Get_Line (Decl : Declaration_Reference) return String is
-    begin
-       return Ada.Strings.Fixed.Trim (Natural'Image (Decl.Decl.Line),
-                                      Ada.Strings.Left);
-    end Get_Line;
- 
-    function Get_Line (Ref : Reference) return String is
-    begin
-       return Ada.Strings.Fixed.Trim (Natural'Image (Ref.Line),
-                                      Ada.Strings.Left);
-    end Get_Line;
- 
-    ----------------
-    -- Get_Parent --
-    ----------------
- 
-    function Get_Parent
-      (Decl : Declaration_Reference)
-       return Declaration_Reference
-    is
-    begin
-       return Decl.Par_Symbol;
-    end Get_Parent;
- 
-    ---------------------
-    -- Get_Source_Line --
-    ---------------------
- 
-    function Get_Source_Line (Ref : Reference) return String is
-    begin
-       if Ref.Source_Line /= null then
-          return Ref.Source_Line.all;
-       else
-          return "";
-       end if;
-    end Get_Source_Line;
- 
-    function Get_Source_Line (Decl : Declaration_Reference) return String is
-    begin
-       if Decl.Decl.Source_Line /= null then
-          return Decl.Decl.Source_Line.all;
-       else
-          return "";
-       end if;
-    end Get_Source_Line;
- 
-    ----------------
-    -- Get_Symbol --
-    ----------------
- 
-    function Get_Symbol (Decl : Declaration_Reference) return String is
-    begin
-       return Decl.Symbol;
-    end Get_Symbol;
- 
-    --------------
-    -- Get_Type --
-    --------------
- 
-    function Get_Type (Decl : Declaration_Reference) return Character is
-    begin
-       return Decl.Decl_Type;
-    end Get_Type;
- 
-    ----------
-    -- Sort --
-    ----------
- 
-    procedure Sort (Arr : in out Reference_Array) is
-       Tmp : Reference;
- 
-       function Lt (Op1, Op2 : Natural) return Boolean;
-       procedure Move (From, To : Natural);
-       --  See GNAT.Heap_Sort_G
- 
-       --------
-       -- Lt --
-       --------
- 
-       function Lt (Op1, Op2 : Natural) return Boolean is
-       begin
-          if Op1 = 0 then
-             return Is_Less_Than (Tmp, Arr (Op2));
-          elsif Op2 = 0 then
-             return Is_Less_Than (Arr (Op1), Tmp);
-          else
-             return Is_Less_Than (Arr (Op1), Arr (Op2));
-          end if;
-       end Lt;
- 
-       ----------
-       -- Move --
-       ----------
- 
-       procedure Move (From, To : Natural) is
-       begin
-          if To = 0 then
-             Tmp := Arr (From);
-          elsif From = 0 then
-             Arr (To) := Tmp;
-          else
-             Arr (To) := Arr (From);
-          end if;
-       end Move;
- 
-       package Ref_Sort is new GNAT.Heap_Sort_G (Move, Lt);
- 
-    --  Start of processing for Sort
- 
-    begin
-       Ref_Sort.Sort (Arr'Last);
-    end Sort;
- 
-    -----------------------
-    -- Grep_Source_Files --
-    -----------------------
- 
-    procedure Grep_Source_Files is
-       Length       : Natural := 0;
-       Decl         : Declaration_Reference := Entities_HTable.Get_First;
-       Arr          : Reference_Array_Access;
-       Index        : Natural;
-       End_Index    : Natural := 0;
-       Current_File : File_Reference;
-       Current_Line : Cst_String_Access;
-       Buffer       : GNAT.OS_Lib.String_Access;
-       Ref          : Reference;
-       Line         : Natural := Natural'Last;
- 
-    begin
-       --  Create a temporary array, where all references will be
-       --  sorted by files. This way, we only have to read the source
-       --  files once.
- 
-       while Decl /= null loop
- 
-          --  Add 1 for the declaration itself
- 
-          Length := Length + References_Count (Decl, True, True, True) + 1;
-          Decl := Entities_HTable.Get_Next;
-       end loop;
- 
-       Arr := new Reference_Array (1 .. Length);
-       Index := Arr'First;
- 
-       Decl := Entities_HTable.Get_First;
-       while Decl /= null loop
-          Store_References (Decl, True, True, True, True, Arr.all, Index);
-          Decl := Entities_HTable.Get_Next;
-       end loop;
- 
-       Sort (Arr.all);
- 
-       --  Now traverse the whole array and find the appropriate source
-       --  lines.
- 
-       for R in Arr'Range loop
-          Ref := Arr (R);
- 
-          if Ref.File /= Current_File then
-             Free (Buffer);
-             begin
-                Read_File (Get_File (Ref.File, With_Dir => True), Buffer);
-                End_Index := Buffer'First - 1;
-                Line := 0;
-             exception
-                when Ada.Text_IO.Name_Error | Ada.Text_IO.End_Error =>
-                   Line := Natural'Last;
-             end;
-             Current_File := Ref.File;
-          end if;
- 
-          if Ref.Line > Line then
- 
-             --  Do not free Current_Line, it is referenced by the last
-             --  Ref we processed.
- 
-             loop
-                Index := End_Index + 1;
- 
-                loop
-                   End_Index := End_Index + 1;
-                   exit when End_Index > Buffer'Last
-                     or else Buffer (End_Index) = ASCII.LF;
-                end loop;
- 
-                --  Skip spaces at beginning of line
- 
-                while Index < End_Index and then
-                  (Buffer (Index) = ' ' or else Buffer (Index) = ASCII.HT)
-                loop
-                   Index := Index + 1;
-                end loop;
- 
-                Line := Line + 1;
-                exit when Ref.Line = Line;
-             end loop;
- 
-             Current_Line := new String'(Buffer (Index .. End_Index - 1));
-          end if;
- 
-          Ref.Source_Line := Current_Line;
-       end loop;
- 
-       Free (Buffer);
-       Free (Arr);
-    end Grep_Source_Files;
- 
-    ---------------
-    -- Read_File --
-    ---------------
- 
-    procedure Read_File
-      (File_Name : String;
-       Contents  : out GNAT.OS_Lib.String_Access)
-    is
-       Name_0 : constant String := File_Name & ASCII.NUL;
-       FD     : constant File_Descriptor := Open_Read (Name_0'Address, Binary);
-       Length : Natural;
- 
-    begin
-       if FD = Invalid_FD then
-          raise Ada.Text_IO.Name_Error;
-       end if;
- 
-       --  Include room for EOF char
- 
-       Length := Natural (File_Length (FD));
- 
-       declare
-          Buffer    : String (1 .. Length + 1);
-          This_Read : Integer;
-          Read_Ptr  : Natural := 1;
- 
-       begin
-          loop
-             This_Read := Read (FD,
-                                A => Buffer (Read_Ptr)'Address,
-                                N => Length + 1 - Read_Ptr);
-             Read_Ptr := Read_Ptr + Integer'Max (This_Read, 0);
-             exit when This_Read <= 0;
-          end loop;
- 
-          Buffer (Read_Ptr) := EOF;
-          Contents := new String'(Buffer (1 .. Read_Ptr));
- 
-          if Read_Ptr /= Length + 1 then
-             raise Ada.Text_IO.End_Error;
-          end if;
- 
-          Close (FD);
-       end;
-    end Read_File;
- 
-    -----------------------
-    -- Longest_File_Name --
-    -----------------------
- 
-    function Longest_File_Name return Natural is
-    begin
-       return Longest_File_Name_In_Table;
-    end Longest_File_Name;
- 
-    -----------
-    -- Match --
-    -----------
- 
-    function Match
-      (File   : File_Reference;
-       Line   : Natural;
-       Column : Natural)
-       return   Boolean
-    is
-       Ref : Ref_In_File_Ptr := File.Lines;
- 
-    begin
-       while Ref /= null loop
-          if (Ref.Line = 0 or else Ref.Line = Line)
-            and then (Ref.Column = 0 or else Ref.Column = Column)
-          then
-             return True;
-          end if;
- 
-          Ref := Ref.Next;
-       end loop;
- 
-       return False;
-    end Match;
- 
-    -----------
-    -- Match --
-    -----------
- 
-    function Match (Decl : Declaration_Reference) return Boolean is
-    begin
-       return Decl.Match;
-    end Match;
- 
-    ----------
-    -- Next --
-    ----------
- 
-    function Next (E : File_Reference) return File_Reference is
-    begin
-       return E.Next;
-    end Next;
- 
-    function Next (E : Declaration_Reference) return Declaration_Reference is
-    begin
-       return E.Next;
-    end Next;
- 
-    ------------------
-    -- Next_Obj_Dir --
-    ------------------
- 
-    function Next_Obj_Dir return String is
-       First : constant Integer := Directories.Obj_Dir_Index;
-       Last  : Integer;
- 
-    begin
-       Last := Directories.Obj_Dir_Index;
- 
-       if Last > Directories.Obj_Dir_Length then
-          return String'(1 .. 0 => ' ');
-       end if;
- 
-       while Directories.Obj_Dir (Last) /= Path_Separator loop
-          Last := Last + 1;
-       end loop;
- 
-       Directories.Obj_Dir_Index := Last + 1;
-       Directories.Last_Obj_Dir_Start := First;
-       return Directories.Obj_Dir (First .. Last - 1);
-    end Next_Obj_Dir;
- 
-    -------------------------
-    -- Next_Unvisited_File --
-    -------------------------
- 
-    function Next_Unvisited_File return File_Reference is
-       procedure Unchecked_Free is new Ada.Unchecked_Deallocation
-         (Unvisited_Files_Record, Unvisited_Files_Access);
- 
-       Ref : File_Reference;
-       Tmp : Unvisited_Files_Access;
- 
-    begin
-       if Unvisited_Files = null then
-          return Empty_File;
-       else
-          Tmp := Unvisited_Files;
-          Ref := Unvisited_Files.File;
-          Unvisited_Files := Unvisited_Files.Next;
-          Unchecked_Free (Tmp);
-          return Ref;
-       end if;
-    end Next_Unvisited_File;
- 
-    ----------------------
-    -- Parse_Gnatls_Src --
-    ----------------------
- 
-    function Parse_Gnatls_Src return String is
-       Length : Natural;
- 
-    begin
-       Length := 0;
-       for J in 1 .. Osint.Nb_Dir_In_Src_Search_Path loop
-          if Osint.Dir_In_Src_Search_Path (J)'Length = 0 then
-             Length := Length + 2;
-          else
-             Length := Length + Osint.Dir_In_Src_Search_Path (J)'Length + 1;
-          end if;
-       end loop;
- 
-       declare
-          Result : String (1 .. Length);
-          L      : Natural;
- 
-       begin
-          L := Result'First;
-          for J in 1 .. Osint.Nb_Dir_In_Src_Search_Path loop
-             if Osint.Dir_In_Src_Search_Path (J)'Length = 0 then
-                Result (L .. L + 1) := "." & Path_Separator;
-                L := L + 2;
- 
-             else
-                Result (L .. L + Osint.Dir_In_Src_Search_Path (J)'Length - 1) :=
-                  Osint.Dir_In_Src_Search_Path (J).all;
-                L := L + Osint.Dir_In_Src_Search_Path (J)'Length;
-                Result (L) := Path_Separator;
-                L := L + 1;
-             end if;
-          end loop;
- 
-          return Result;
-       end;
-    end Parse_Gnatls_Src;
- 
-    ----------------------
-    -- Parse_Gnatls_Obj --
-    ----------------------
- 
-    function Parse_Gnatls_Obj return String is
-       Length : Natural;
- 
-    begin
-       Length := 0;
-       for J in 1 .. Osint.Nb_Dir_In_Obj_Search_Path loop
-          if Osint.Dir_In_Obj_Search_Path (J)'Length = 0 then
-             Length := Length + 2;
-          else
-             Length := Length + Osint.Dir_In_Obj_Search_Path (J)'Length + 1;
-          end if;
-       end loop;
- 
-       declare
-          Result : String (1 .. Length);
-          L      : Natural;
- 
-       begin
-          L := Result'First;
-          for J in 1 .. Osint.Nb_Dir_In_Obj_Search_Path loop
-             if Osint.Dir_In_Obj_Search_Path (J)'Length = 0 then
-                Result (L .. L + 1) := "." & Path_Separator;
-                L := L + 2;
-             else
-                Result (L .. L + Osint.Dir_In_Obj_Search_Path (J)'Length - 1) :=
-                  Osint.Dir_In_Obj_Search_Path (J).all;
-                L := L + Osint.Dir_In_Obj_Search_Path (J)'Length;
-                Result (L) := Path_Separator;
-                L := L + 1;
-             end if;
-          end loop;
- 
-          return Result;
-       end;
-    end Parse_Gnatls_Obj;
- 
-    -------------------
-    -- Reset_Obj_Dir --
-    -------------------
- 
-    procedure Reset_Obj_Dir is
-    begin
-       Directories.Obj_Dir_Index := 1;
-    end Reset_Obj_Dir;
- 
-    -----------------------
-    -- Set_Default_Match --
-    -----------------------
- 
-    procedure Set_Default_Match (Value : Boolean) is
-    begin
-       Default_Match := Value;
-    end Set_Default_Match;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Str : in out Cst_String_Access) is
-       function Convert is new Ada.Unchecked_Conversion
-         (Cst_String_Access, GNAT.OS_Lib.String_Access);
- 
-       S : GNAT.OS_Lib.String_Access := Convert (Str);
- 
-    begin
-       Free (S);
-       Str := null;
-    end Free;
- 
-    ---------------------
-    -- Reset_Directory --
-    ---------------------
- 
-    procedure Reset_Directory (File : File_Reference) is
-    begin
-       Free (File.Dir);
-    end Reset_Directory;
- 
-    -------------------
-    -- Set_Unvisited --
-    -------------------
- 
-    procedure Set_Unvisited (File_Ref : File_Reference) is
-       F : constant String := Get_File (File_Ref, With_Dir => False);
- 
-    begin
-       File_Ref.Visited := False;
- 
-       --  Do not add a source file to the list. This is true for gnatxref
-       --  gnatfind, so good enough.
- 
-       if F'Length > 4
-         and then F (F'Last - 3 .. F'Last) = "." & Osint.ALI_Suffix.all
-       then
-          Unvisited_Files := new Unvisited_Files_Record'
-            (File => File_Ref,
-             Next => Unvisited_Files);
-       end if;
-    end Set_Unvisited;
- 
-    ----------------------
-    -- Get_Declarations --
-    ----------------------
- 
-    function Get_Declarations
-      (Sorted : Boolean := True)
-       return   Declaration_Array_Access
-    is
-       Arr   : constant Declaration_Array_Access :=
-                 new Declaration_Array (1 .. Entities_Count);
-       Decl  : Declaration_Reference := Entities_HTable.Get_First;
-       Index : Natural               := Arr'First;
-       Tmp   : Declaration_Reference;
- 
-       procedure Move (From : Natural; To : Natural);
-       function Lt (Op1, Op2 : Natural) return Boolean;
-       --  See GNAT.Heap_Sort_G
- 
-       --------
-       -- Lt --
-       --------
- 
-       function Lt (Op1, Op2 : Natural) return Boolean is
-       begin
-          if Op1 = 0 then
-             return Is_Less_Than (Tmp, Arr (Op2));
-          elsif Op2 = 0 then
-             return Is_Less_Than (Arr (Op1), Tmp);
-          else
-             return Is_Less_Than (Arr (Op1), Arr (Op2));
-          end if;
-       end Lt;
- 
-       ----------
-       -- Move --
-       ----------
- 
-       procedure Move (From : Natural; To : Natural) is
-       begin
-          if To = 0 then
-             Tmp := Arr (From);
-          elsif From = 0 then
-             Arr (To) := Tmp;
-          else
-             Arr (To) := Arr (From);
-          end if;
-       end Move;
- 
-       package Decl_Sort is new GNAT.Heap_Sort_G (Move, Lt);
- 
-    --  Start of processing for Get_Declarations
- 
-    begin
-       while Decl /= null loop
-          Arr (Index) := Decl;
-          Index := Index + 1;
-          Decl := Entities_HTable.Get_Next;
-       end loop;
- 
-       if Sorted and then Arr'Length /= 0 then
-          Decl_Sort.Sort (Entities_Count);
-       end if;
- 
-       return Arr;
-    end Get_Declarations;
- 
-    ----------------------
-    -- References_Count --
-    ----------------------
- 
-    function References_Count
-      (Decl       : Declaration_Reference;
-       Get_Reads  : Boolean := False;
-       Get_Writes : Boolean := False;
-       Get_Bodies : Boolean := False)
-       return       Natural
-    is
-       function List_Length (E : Reference) return Natural;
-       --  Return the number of references in E
- 
-       -----------------
-       -- List_Length --
-       -----------------
- 
-       function List_Length (E : Reference) return Natural is
-          L  : Natural := 0;
-          E1 : Reference := E;
- 
-       begin
-          while E1 /= null loop
-             L := L + 1;
-             E1 := E1.Next;
-          end loop;
- 
-          return L;
-       end List_Length;
- 
-       Length : Natural := 0;
- 
-    --  Start of processing for References_Count
- 
-    begin
-       if Get_Reads then
-          Length := List_Length (Decl.Ref_Ref);
-       end if;
- 
-       if Get_Writes then
-          Length := Length + List_Length (Decl.Modif_Ref);
-       end if;
- 
-       if Get_Bodies then
-          Length := Length + List_Length (Decl.Body_Ref);
-       end if;
- 
-       return Length;
-    end References_Count;
- 
-    ----------------------
-    -- Store_References --
-    ----------------------
- 
-    procedure Store_References
-      (Decl            : Declaration_Reference;
-       Get_Writes      : Boolean := False;
-       Get_Reads       : Boolean := False;
-       Get_Bodies      : Boolean := False;
-       Get_Declaration : Boolean := False;
-       Arr             : in out Reference_Array;
-       Index           : in out Natural)
-    is
-       procedure Add (List : Reference);
-       --  Add all the references in List to Arr
- 
-       ---------
-       -- Add --
-       ---------
- 
-       procedure Add (List : Reference) is
-          E : Reference := List;
-       begin
-          while E /= null loop
-             Arr (Index) := E;
-             Index := Index + 1;
-             E := E.Next;
-          end loop;
-       end Add;
- 
-    --  Start of processing for Store_References
- 
-    begin
-       if Get_Declaration then
-          Add (Decl.Decl);
-       end if;
- 
-       if Get_Reads then
-          Add (Decl.Ref_Ref);
-       end if;
- 
-       if Get_Writes then
-          Add (Decl.Modif_Ref);
-       end if;
- 
-       if Get_Bodies then
-          Add (Decl.Body_Ref);
-       end if;
-    end Store_References;
- 
-    --------------------
-    -- Get_References --
-    --------------------
- 
-    function Get_References
-      (Decl : Declaration_Reference;
-       Get_Reads  : Boolean := False;
-       Get_Writes : Boolean := False;
-       Get_Bodies : Boolean := False)
-       return       Reference_Array_Access
-    is
-       Length : constant Natural :=
-                  References_Count (Decl, Get_Reads, Get_Writes, Get_Bodies);
- 
-       Arr : constant Reference_Array_Access :=
-               new Reference_Array (1 .. Length);
- 
-       Index : Natural := Arr'First;
- 
-    begin
-       Store_References
-         (Decl            => Decl,
-          Get_Writes      => Get_Writes,
-          Get_Reads       => Get_Reads,
-          Get_Bodies      => Get_Bodies,
-          Get_Declaration => False,
-          Arr             => Arr.all,
-          Index           => Index);
- 
-       if Arr'Length /= 0 then
-          Sort (Arr.all);
-       end if;
- 
-       return Arr;
-    end Get_References;
- 
-    ----------
-    -- Free --
-    ----------
- 
-    procedure Free (Arr : in out Reference_Array_Access) is
-       procedure Internal is new Ada.Unchecked_Deallocation
-         (Reference_Array, Reference_Array_Access);
-    begin
-       Internal (Arr);
-    end Free;
- 
-    ------------------
-    -- Is_Parameter --
-    ------------------
- 
-    function Is_Parameter (Decl : Declaration_Reference) return Boolean is
-    begin
-       return Decl.Is_Parameter;
-    end Is_Parameter;
- 
- end Xr_Tabls;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/xr_tabls.ads gcc-13.1.0/gcc/ada/xr_tabls.ads
*** gcc-12.2.0/gcc/ada/xr_tabls.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xr_tabls.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,388 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             X R  _ T A B L S                             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Cross reference utilities used by gnatxref and gnatfind
- 
- with GNAT.OS_Lib;
- 
- package Xr_Tabls is
- 
-    -------------------
-    -- Project files --
-    -------------------
- 
-    function ALI_File_Name (Ada_File_Name : String) return String;
-    --  Returns the ali file name corresponding to Ada_File_Name
- 
-    procedure Create_Project_File (Name : String);
-    --  Open and parse a new project file. If the file Name could not be
-    --  opened or is not a valid project file, then a project file associated
-    --  with the standard default directories is returned
- 
-    function Next_Obj_Dir return String;
-    --  Returns the next directory to visit to find related ali files
-    --  If there are no more such directories, returns a null string.
- 
-    function Current_Obj_Dir return String;
-    --  Returns the obj_dir which was returned by the last Next_Obj_Dir call
- 
-    procedure Reset_Obj_Dir;
-    --  Reset the iterator for Obj_Dir
- 
-    ------------
-    -- Tables --
-    ------------
- 
-    type Declaration_Reference is private;
-    Empty_Declaration : constant Declaration_Reference;
- 
-    type Declaration_Array is array (Natural range <>) of Declaration_Reference;
-    type Declaration_Array_Access is access Declaration_Array;
- 
-    type File_Reference is private;
-    Empty_File : constant File_Reference;
- 
-    type Reference is private;
-    Empty_Reference : constant Reference;
- 
-    type Reference_Array is array (Natural range <>) of Reference;
-    type Reference_Array_Access is access Reference_Array;
- 
-    procedure Free (Arr : in out Reference_Array_Access);
- 
-    function Add_Declaration
-      (File_Ref     : File_Reference;
-       Symbol       : String;
-       Line         : Natural;
-       Column       : Natural;
-       Decl_Type    : Character;
-       Is_Parameter : Boolean := False;
-       Remove_Only  : Boolean := False;
-       Symbol_Match : Boolean := True)
-       return         Declaration_Reference;
-    --  Add a new declaration in the table and return the index to it. Decl_Type
-    --  is the type of the entity Any previous instance of this entity in the
-    --  htable is removed. If Remove_Only is True, then any previous instance is
-    --  removed, but the new entity is never inserted. Symbol_Match should be
-    --  set to False if the name of the symbol doesn't match the pattern from
-    --  the command line. In that case, the entity will not be output by
-    --  gnatfind. If Symbol_Match is True, the entity will only be output if
-    --  the file name itself matches. Is_Parameter should be set to True if
-    --  the entity is known to be a subprogram parameter.
- 
-    procedure Add_Parent
-      (Declaration : in out Declaration_Reference;
-       Symbol      : String;
-       Line        : Natural;
-       Column      : Natural;
-       File_Ref    : File_Reference);
-    --  The parent declaration (Symbol in file File_Ref at position Line and
-    --  Column) information is added to Declaration.
- 
-    function Add_To_Xref_File
-      (File_Name       : String;
-       Visited         : Boolean := True;
-       Emit_Warning    : Boolean := False;
-       Gnatchop_File   : String  := "";
-       Gnatchop_Offset : Integer := 0)
-       return            File_Reference;
-    --  Add a new reference to a file in the table. Ref is used to return the
-    --  index in the table where this file is stored. Visited is the value which
-    --  will be used in the table (if True, the file will not be returned by
-    --  Next_Unvisited_File). If Emit_Warning is True and the ali file does
-    --  not exist or does not have cross-referencing information, then a
-    --  warning will be emitted. Gnatchop_File is the name of the file that
-    --  File_Name was extracted from through a call to "gnatchop -r" (using
-    --  pragma Source_Reference). Gnatchop_Offset should be the index of the
-    --  first line of File_Name within the Gnatchop_File.
- 
-    procedure Add_Line
-      (File   : File_Reference;
-       Line   : Natural;
-       Column : Natural);
-    --  Add a new reference in a file, which the user has provided on the
-    --  command line. This is used for an optimized matching algorithm.
- 
-    procedure Add_Reference
-      (Declaration   : Declaration_Reference;
-       File_Ref      : File_Reference;
-       Line          : Natural;
-       Column        : Natural;
-       Ref_Type      : Character;
-       Labels_As_Ref : Boolean);
-    --  Add a new reference (Ref_Type = 'r'), body (Ref_Type = 'b') or
-    --  modification (Ref_Type = 'm') to an entity. If Labels_As_Ref is True,
-    --  then the references to the entity after the end statements ("end Foo")
-    --  are counted as actual references. This means that the entity will never
-    --  be reported as unreferenced (for instance in the case of gnatxref -u).
- 
-    function Get_Declarations
-      (Sorted : Boolean := True)
-       return   Declaration_Array_Access;
-    --  Return a sorted list of all the declarations in the application.
-    --  Freeing this array is the responsibility of the caller, however it
-    --  shouldn't free the actual contents of the array, which are pointers
-    --  to internal data
- 
-    function References_Count
-      (Decl       : Declaration_Reference;
-       Get_Reads  : Boolean := False;
-       Get_Writes : Boolean := False;
-       Get_Bodies : Boolean := False)
-       return       Natural;
-    --  Return the number of references in Decl for the categories specified
-    --  by the Get_* parameters (read-only accesses, write accesses and bodies)
- 
-    function Get_References
-      (Decl : Declaration_Reference;
-       Get_Reads  : Boolean := False;
-       Get_Writes : Boolean := False;
-       Get_Bodies : Boolean := False)
-       return       Reference_Array_Access;
-    --  Return a sorted list of all references to the entity in decl. The
-    --  parameters Get_* are used to specify what kind of references should be
-    --  merged and returned (read-only accesses, write accesses and bodies).
- 
-    function Get_Column (Decl : Declaration_Reference) return String;
-    function Get_Column (Ref : Reference) return String;
- 
-    function Get_Declaration
-      (File_Ref : File_Reference;
-       Line     : Natural;
-       Column   : Natural)
-       return     Declaration_Reference;
-    --  Returns reference to the declaration found in file File_Ref at the
-    --  given Line and Column
- 
-    function Get_Parent
-      (Decl : Declaration_Reference)
-       return Declaration_Reference;
-    --  Returns reference to Decl's parent declaration
- 
-    function Get_Emit_Warning (File : File_Reference) return Boolean;
-    --  Returns the Emit_Warning field of the structure
- 
-    function Get_Gnatchop_File
-      (File     : File_Reference;
-       With_Dir : Boolean := False)
-       return     String;
-    function Get_Gnatchop_File
-      (Ref      : Reference;
-       With_Dir : Boolean := False)
-       return     String;
-    function Get_Gnatchop_File
-      (Decl     : Declaration_Reference;
-       With_Dir : Boolean := False)
-       return     String;
-    --  Return the name of the file that File was extracted from through a
-    --  call to "gnatchop -r". The file name for File is returned if File
-    --  was not extracted from such a file. The directory will be given only
-    --  if With_Dir is True.
- 
-    function Get_File
-      (Decl     : Declaration_Reference;
-       With_Dir : Boolean := False) return String;
-    pragma Inline (Get_File);
-    --  Extract column number or file name from reference
- 
-    function Get_File
-      (Ref      : Reference;
-       With_Dir : Boolean := False) return String;
-    pragma Inline (Get_File);
- 
-    function Get_File
-      (File     : File_Reference;
-       With_Dir : Boolean := False;
-       Strip    : Natural := 0) return String;
-    --  Returns the file name (and its directory if With_Dir is True or the user
-    --  has used the -f switch on the command line. If Strip is not 0, then the
-    --  last Strip-th "-..." substrings are removed first. For instance, with
-    --  Strip=2, a file name "parent-child1-child2-child3.ali" would be returned
-    --  as "parent-child1.ali". This is used when looking for the ALI file to
-    --  use for a package, since for separates with have to use the parent's
-    --  ALI. The null string is returned if there is no such parent unit.
-    --
-    --  Note that this version of Get_File is not inlined
- 
-    function Get_File_Ref (Ref : Reference)              return File_Reference;
-    function Get_Line     (Decl : Declaration_Reference) return String;
-    function Get_Line     (Ref : Reference)              return String;
-    function Get_Symbol   (Decl : Declaration_Reference) return String;
-    function Get_Type     (Decl : Declaration_Reference) return Character;
-    function Is_Parameter (Decl : Declaration_Reference) return Boolean;
-    --  Functions that return the contents of a declaration
- 
-    function Get_Source_Line (Ref : Reference)              return String;
-    function Get_Source_Line (Decl : Declaration_Reference) return String;
-    --  Return the source line associated with the reference
- 
-    procedure Grep_Source_Files;
-    --  Parse all the source files which have at least one reference, and grep
-    --  the appropriate source lines so that we'll be able to display them. This
-    --  function should be called once all the .ali files have been parsed, and
-    --  only if the appropriate user switch
-    --  has been used (gnatfind -s).
-    --
-    --  Note: To save memory, the strings for the source lines are shared. Thus
-    --  it is no longer possible to free the references, or we would free the
-    --  same chunk multiple times. It doesn't matter, though, since this is only
-    --  called once, prior to exiting gnatfind.
- 
-    function Longest_File_Name return Natural;
-    --  Returns the longest file name found
- 
-    function Match (Decl : Declaration_Reference) return Boolean;
-    --  Return True if the declaration matches
- 
-    function Match
-      (File   : File_Reference;
-       Line   : Natural;
-       Column : Natural)
-       return   Boolean;
-    --  Returns True if File:Line:Column was given on the command line
-    --  by the user
- 
-    function Next_Unvisited_File return File_Reference;
-    --  Returns the next unvisited library file in the list If there is no more
-    --  unvisited file, return Empty_File. Two calls to this subprogram will
-    --  return different files.
- 
-    procedure Set_Default_Match (Value : Boolean);
-    --  Set the default value for match in declarations.
-    --  This is used so that if no file was provided in the
-    --  command line, then every file match
- 
-    procedure Reset_Directory (File : File_Reference);
-    --  Reset the cached directory for file. Next time Get_File is called, the
-    --  directory will be recomputed.
- 
-    procedure Set_Unvisited (File_Ref : File_Reference);
-    --  Set File_Ref as unvisited. So Next_Unvisited_File will return it
- 
-    procedure Read_File
-      (File_Name : String;
-       Contents  : out GNAT.OS_Lib.String_Access);
-    --  Reads File_Name into the newly allocated string Contents. Types.EOF
-    --  character will be added to the returned Contents to simplify parsing.
-    --  Name_Error is raised if the file was not found. End_Error is raised if
-    --  the file could not be read correctly. For most systems correct reading
-    --  means that the number of bytes read is equal to the file size.
- 
- private
-    type Project_File (Src_Dir_Length, Obj_Dir_Length : Natural) is record
-       Src_Dir_Index      : Integer;
-       Obj_Dir_Index      : Integer;
-       Last_Obj_Dir_Start : Natural;
-       Src_Dir            : String (1 .. Src_Dir_Length);
-       Obj_Dir            : String (1 .. Obj_Dir_Length);
-    end record;
- 
-    type Project_File_Ptr is access all Project_File;
-    --  This is actually a list of all the directories to be searched,
-    --  either for source files or for library files
- 
-    type Ref_In_File;
-    type Ref_In_File_Ptr is access all Ref_In_File;
- 
-    type Ref_In_File is record
-       Line   : Natural;
-       Column : Natural;
-       Next   : Ref_In_File_Ptr := null;
-    end record;
- 
-    type File_Record;
-    type File_Reference is access all File_Record;
- 
-    Empty_File : constant File_Reference := null;
-    type Cst_String_Access is access constant String;
- 
-    procedure Free (Str : in out Cst_String_Access);
- 
-    type File_Record is record
-       File            : Cst_String_Access;
-       Dir             : GNAT.OS_Lib.String_Access;
-       Lines           : Ref_In_File_Ptr := null;
-       Visited         : Boolean         := False;
-       Emit_Warning    : Boolean         := False;
-       Gnatchop_File   : GNAT.OS_Lib.String_Access   := null;
-       Gnatchop_Offset : Integer         := 0;
-       Next            : File_Reference  := null;
-    end record;
-    --  Holds a reference to a source file, that was referenced in at least one
-    --  ALI file. Gnatchop_File will contain the name of the file that File was
-    --  extracted From. Gnatchop_Offset contains the index of the first line of
-    --  File within Gnatchop_File. These two fields are used to properly support
-    --  gnatchop files and pragma Source_Reference.
-    --
-    --  Lines is used for files that were given on the command line, to
-    --  memorize the lines and columns that the user specified.
- 
-    type Reference_Record;
-    type Reference is access all Reference_Record;
- 
-    Empty_Reference : constant Reference := null;
- 
-    type Reference_Record is record
-       File        : File_Reference;
-       Line        : Natural;
-       Column      : Natural;
-       Source_Line : Cst_String_Access;
-       Next        : Reference := null;
-    end record;
-    --  File is a reference to the Ada source file
-    --  Source_Line is the Line as it appears in the source file. This
-    --  field is only used when the switch is set on the command line of
-    --  gnatfind.
- 
-    type Declaration_Record;
-    type Declaration_Reference is access all Declaration_Record;
- 
-    Empty_Declaration : constant Declaration_Reference := null;
- 
-    type Declaration_Record (Symbol_Length : Natural) is record
-       Key          : Cst_String_Access;
-       Decl         : Reference;
-       Is_Parameter : Boolean := False; -- True if entity is subprog param
-       Decl_Type    : Character;
-       Body_Ref     : Reference := null;
-       Ref_Ref      : Reference := null;
-       Modif_Ref    : Reference := null;
-       Match        : Boolean := False;
-       Par_Symbol   : Declaration_Reference := null;
-       Next         : Declaration_Reference := null;
-       Symbol       : String (1 .. Symbol_Length);
-    end record;
-    --  The lists of referenced (Body_Ref, Ref_Ref and Modif_Ref) are
-    --  kept unsorted until the results needs to be printed. This saves
-    --  lots of time while the internal tables are created.
- 
-    pragma Inline (Get_Column);
-    pragma Inline (Get_Emit_Warning);
-    pragma Inline (Get_File_Ref);
-    pragma Inline (Get_Line);
-    pragma Inline (Get_Symbol);
-    pragma Inline (Get_Type);
-    pragma Inline (Longest_File_Name);
- end Xr_Tabls;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/xref_lib.adb gcc-13.1.0/gcc/ada/xref_lib.adb
*** gcc-12.2.0/gcc/ada/xref_lib.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xref_lib.adb	Thu Jan  1 00:00:00 1970
***************
*** 1,1893 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                             X R E F _ L I B                              --
- --                                                                          --
- --                                 B o d y                                  --
- --                                                                          --
- --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- pragma Ada_2012;
- 
- with Osint;
- with Output; use Output;
- with Types;  use Types;
- 
- with Unchecked_Deallocation;
- 
- with Ada.Strings.Fixed; use Ada.Strings.Fixed;
- with Ada.Text_IO;
- 
- with GNAT.Command_Line; use GNAT.Command_Line;
- with GNAT.IO_Aux;       use GNAT.IO_Aux;
- 
- package body Xref_Lib is
- 
-    Type_Position : constant := 50;
-    --  Column for label identifying type of entity
- 
-    ---------------------
-    -- Local Variables --
-    ---------------------
- 
-    Pipe : constant Character := '|';
-    --  First character on xref lines in the .ali file
- 
-    No_Xref_Information : exception;
-    --  Exception raised when there is no cross-referencing information in
-    --  the .ali files.
- 
-    procedure Parse_EOL
-      (Source                 : not null access String;
-       Ptr                    : in out Positive;
-       Skip_Continuation_Line : Boolean := False);
-    --  On return Source (Ptr) is the first character of the next line
-    --  or EOF. Source.all must be terminated by EOF.
-    --
-    --  If Skip_Continuation_Line is True, this subprogram skips as many
-    --  lines as required when the second or more lines starts with '.'
-    --  (continuation lines in ALI files).
- 
-    function Current_Xref_File (File : ALI_File) return File_Reference;
-    --  Return the file matching the last 'X' line we found while parsing
-    --  the ALI file.
- 
-    function File_Name (File : ALI_File; Num : Positive) return File_Reference;
-    --  Returns the dependency file name number Num
- 
-    function Get_Full_Type (Decl : Declaration_Reference) return String;
-    --  Returns the full type corresponding to a type letter as found in
-    --  the .ali files.
- 
-    procedure Open
-      (Name         : String;
-       File         : in out ALI_File;
-       Dependencies : Boolean := False);
-    --  Open a new ALI file. If Dependencies is True, the insert every library
-    --  file 'with'ed in the files database (used for gnatxref)
- 
-    procedure Parse_Identifier_Info
-      (Pattern       : Search_Pattern;
-       File          : in out ALI_File;
-       Local_Symbols : Boolean;
-       Der_Info      : Boolean := False;
-       Type_Tree     : Boolean := False;
-       Wide_Search   : Boolean := True;
-       Labels_As_Ref : Boolean := True);
-    --  Output the file and the line where the identifier was referenced,
-    --  If Local_Symbols is False then only the publicly visible symbols
-    --  will be processed.
-    --
-    --  If Labels_As_Ref is true, then the references to the entities after
-    --  the end statements ("end Foo") will be counted as actual references.
-    --  The entity will never be reported as unreferenced by gnatxref -u
- 
-    procedure Parse_Token
-      (Source    : not null access String;
-       Ptr       : in out Positive;
-       Token_Ptr : out Positive);
-    --  Skips any separators and stores the start of the token in Token_Ptr.
-    --  Then stores the position of the next separator in Ptr. On return
-    --  Source (Token_Ptr .. Ptr - 1) is the token. Separators are space
-    --  and ASCII.HT. Parse_Token will never skip to the next line.
- 
-    procedure Parse_Number
-      (Source : not null access String;
-       Ptr    : in out Positive;
-       Number : out Natural);
-    --  Skips any separators and parses Source up to the first character that
-    --  is not a decimal digit. Returns value of parsed digits or 0 if none.
- 
-    procedure Parse_X_Filename (File : in out ALI_File);
-    --  Reads and processes "X..." lines in the ALI file
-    --  and updates the File.X_File information.
- 
-    procedure Skip_To_First_X_Line
-      (File    : in out ALI_File;
-       D_Lines : Boolean;
-       W_Lines : Boolean);
-    --  Skip the lines in the ALI file until the first cross-reference line
-    --  (^X...) is found. Search is started from the beginning of the file.
-    --  If not such line is found, No_Xref_Information is raised.
-    --  If W_Lines is false, then the lines "^W" are not parsed.
-    --  If D_Lines is false, then the lines "^D" are not parsed.
- 
-    ----------------
-    -- Add_Entity --
-    ----------------
- 
-    procedure Add_Entity
-      (Pattern : in out Search_Pattern;
-       Entity  : String;
-       Glob    : Boolean := False)
-    is
-       File_Start : Natural;
-       Line_Start : Natural;
-       Col_Start  : Natural;
-       Line_Num   : Natural := 0;
-       Col_Num    : Natural := 0;
- 
-       File_Ref : File_Reference := Empty_File;
-       pragma Warnings (Off, File_Ref);
- 
-    begin
-       --  Find the end of the first item in Entity (pattern or file?)
-       --  If there is no ':', we only have a pattern
- 
-       File_Start := Index (Entity, ":");
- 
-       --  If the regular expression is invalid, just consider it as a string
- 
-       if File_Start = 0 then
-          begin
-             Pattern.Entity := Compile (Entity, Glob, False);
-             Pattern.Initialized := True;
- 
-          exception
-             when Error_In_Regexp =>
- 
-                --  The basic idea is to insert a \ before every character
- 
-                declare
-                   Tmp_Regexp : String (1 .. 2 * Entity'Length);
-                   Index      : Positive := 1;
- 
-                begin
-                   for J in Entity'Range loop
-                      Tmp_Regexp (Index) := '\';
-                      Tmp_Regexp (Index + 1) := Entity (J);
-                      Index := Index + 2;
-                   end loop;
- 
-                   Pattern.Entity := Compile (Tmp_Regexp, True, False);
-                   Pattern.Initialized := True;
-                end;
-          end;
- 
-          Set_Default_Match (True);
-          return;
-       end if;
- 
-       --  If there is a dot in the pattern, then it is a file name
- 
-       if (Glob and then
-            Index (Entity (Entity'First .. File_Start - 1), ".") /= 0)
-              or else
-               (not Glob
-                  and then Index (Entity (Entity'First .. File_Start - 1),
-                                    "\.") /= 0)
-       then
-          Pattern.Entity      := Compile (".*", False);
-          Pattern.Initialized := True;
-          File_Start          := Entity'First;
- 
-       else
-          --  If the regular expression is invalid, just consider it as a string
- 
-          begin
-             Pattern.Entity :=
-               Compile (Entity (Entity'First .. File_Start - 1), Glob, False);
-             Pattern.Initialized := True;
- 
-          exception
-             when Error_In_Regexp =>
- 
-                --  The basic idea is to insert a \ before every character
- 
-                declare
-                   Tmp_Regexp : String (1 .. 2 * (File_Start - Entity'First));
-                   Index      : Positive := 1;
- 
-                begin
-                   for J in Entity'First .. File_Start - 1 loop
-                      Tmp_Regexp (Index) := '\';
-                      Tmp_Regexp (Index + 1) := Entity (J);
-                      Index := Index + 2;
-                   end loop;
- 
-                   Pattern.Entity := Compile (Tmp_Regexp, True, False);
-                   Pattern.Initialized := True;
-                end;
-          end;
- 
-          File_Start := File_Start + 1;
-       end if;
- 
-       --  Parse the file name
- 
-       Line_Start := Index (Entity (File_Start .. Entity'Last), ":");
- 
-       --  Check if it was a disk:\directory item (for Windows)
- 
-       if File_Start = Line_Start - 1
-         and then Line_Start < Entity'Last
-         and then Entity (Line_Start + 1) = '\'
-       then
-          Line_Start := Index (Entity (Line_Start + 1 .. Entity'Last), ":");
-       end if;
- 
-       if Line_Start = 0 then
-          Line_Start := Entity'Length + 1;
- 
-       elsif Line_Start /= Entity'Last then
-          Col_Start := Index (Entity (Line_Start + 1 .. Entity'Last), ":");
- 
-          if Col_Start = 0 then
-             Col_Start := Entity'Last + 1;
-          end if;
- 
-          if Col_Start > Line_Start + 1 then
-             begin
-                Line_Num := Natural'Value
-                  (Entity (Line_Start + 1 .. Col_Start - 1));
- 
-             exception
-                when Constraint_Error =>
-                   raise Invalid_Argument;
-             end;
-          end if;
- 
-          if Col_Start < Entity'Last then
-             begin
-                Col_Num := Natural'Value (Entity
-                                          (Col_Start + 1 .. Entity'Last));
- 
-             exception
-                when Constraint_Error => raise Invalid_Argument;
-             end;
-          end if;
-       end if;
- 
-       declare
-          File_Name : String := Entity (File_Start .. Line_Start - 1);
- 
-       begin
-          Osint.Canonical_Case_File_Name (File_Name);
-          File_Ref := Add_To_Xref_File (File_Name, Visited => True);
-          Pattern.File_Ref := File_Ref;
- 
-          Add_Line (Pattern.File_Ref, Line_Num, Col_Num);
- 
-          File_Ref :=
-            Add_To_Xref_File
-              (ALI_File_Name (File_Name),
-               Visited      => False,
-               Emit_Warning => True);
-       end;
-    end Add_Entity;
- 
-    -------------------
-    -- Add_Xref_File --
-    -------------------
- 
-    procedure Add_Xref_File (File : String) is
-       File_Ref : File_Reference := Empty_File;
-       pragma Unreferenced (File_Ref);
- 
-       Iterator : Expansion_Iterator;
- 
-       procedure Add_Xref_File_Internal (File : String);
-       --  Do the actual addition of the file
- 
-       ----------------------------
-       -- Add_Xref_File_Internal --
-       ----------------------------
- 
-       procedure Add_Xref_File_Internal (File : String) is
-       begin
-          --  Case where we have an ALI file, accept it even though this is
-          --  not official usage, since the intention is obvious
- 
-          if Tail (File, 4) = "." & Osint.ALI_Suffix.all then
-             File_Ref := Add_To_Xref_File
-                           (File, Visited => False, Emit_Warning => True);
- 
-          --  Normal non-ali file case
- 
-          else
-             File_Ref := Add_To_Xref_File (File, Visited => True);
- 
-             File_Ref := Add_To_Xref_File
-                          (ALI_File_Name (File),
-                           Visited => False, Emit_Warning => True);
-          end if;
-       end Add_Xref_File_Internal;
- 
-    --  Start of processing for Add_Xref_File
- 
-    begin
-       --  Check if we need to do the expansion
- 
-       if Ada.Strings.Fixed.Index (File, "*") /= 0
-         or else Ada.Strings.Fixed.Index (File, "?") /= 0
-       then
-          Start_Expansion (Iterator, File);
- 
-          loop
-             declare
-                S : constant String := Expansion (Iterator);
- 
-             begin
-                exit when S'Length = 0;
-                Add_Xref_File_Internal (S);
-             end;
-          end loop;
- 
-       else
-          Add_Xref_File_Internal (File);
-       end if;
-    end Add_Xref_File;
- 
-    -----------------------
-    -- Current_Xref_File --
-    -----------------------
- 
-    function Current_Xref_File (File : ALI_File) return File_Reference is
-    begin
-       return File.X_File;
-    end Current_Xref_File;
- 
-    --------------------------
-    -- Default_Project_File --
-    --------------------------
- 
-    function Default_Project_File (Dir_Name : String) return String is
-       My_Dir  : Dir_Type;
-       Dir_Ent : File_Name_String;
-       Last    : Natural;
- 
-    begin
-       Open (My_Dir, Dir_Name);
- 
-       loop
-          Read (My_Dir, Dir_Ent, Last);
-          exit when Last = 0;
- 
-          if Tail (Dir_Ent (1 .. Last), 4) = ".adp" then
- 
-             --  The first project file found is the good one
- 
-             Close (My_Dir);
-             return Dir_Ent (1 .. Last);
-          end if;
-       end loop;
- 
-       Close (My_Dir);
-       return String'(1 .. 0 => ' ');
- 
-    exception
-       when Directory_Error => return String'(1 .. 0 => ' ');
-    end Default_Project_File;
- 
-    ---------------
-    -- File_Name --
-    ---------------
- 
-    function File_Name
-      (File : ALI_File;
-       Num  : Positive) return File_Reference
-    is
-       Table : Table_Type renames File.Dep.Table (1 .. Last (File.Dep));
-    begin
-       return Table (Num);
-    end File_Name;
- 
-    --------------------
-    -- Find_ALI_Files --
-    --------------------
- 
-    procedure Find_ALI_Files is
-       My_Dir  : Rec_DIR;
-       Dir_Ent : File_Name_String;
-       Last    : Natural;
- 
-       File_Ref : File_Reference;
-       pragma Unreferenced (File_Ref);
- 
-       function Open_Next_Dir return Boolean;
-       --  Tries to open the next object directory, and return False if
-       --  the directory cannot be opened.
- 
-       -------------------
-       -- Open_Next_Dir --
-       -------------------
- 
-       function Open_Next_Dir return Boolean is
-       begin
-          --  Until we are able to open a new directory
- 
-          loop
-             declare
-                Obj_Dir : constant String := Next_Obj_Dir;
- 
-             begin
-                --  Case of no more Obj_Dir lines
- 
-                if Obj_Dir'Length = 0 then
-                   return False;
-                end if;
- 
-                Open (My_Dir.Dir, Obj_Dir);
-                exit;
- 
-             exception
- 
-                --  Could not open the directory
- 
-                when Directory_Error => null;
-             end;
-          end loop;
- 
-          return True;
-       end Open_Next_Dir;
- 
-    --  Start of processing for Find_ALI_Files
- 
-    begin
-       Reset_Obj_Dir;
- 
-       if Open_Next_Dir then
-          loop
-             Read (My_Dir.Dir, Dir_Ent, Last);
- 
-             if Last = 0 then
-                Close (My_Dir.Dir);
- 
-                if not Open_Next_Dir then
-                   return;
-                end if;
- 
-             elsif Last > 4
-               and then Dir_Ent (Last - 3 .. Last) = "." & Osint.ALI_Suffix.all
-             then
-                File_Ref :=
-                  Add_To_Xref_File (Dir_Ent (1 .. Last), Visited => False);
-             end if;
-          end loop;
-       end if;
-    end Find_ALI_Files;
- 
-    -------------------
-    -- Get_Full_Type --
-    -------------------
- 
-    function Get_Full_Type (Decl : Declaration_Reference) return String is
- 
-       function Param_String return String;
-       --  Return the string to display depending on whether Decl is a parameter
- 
-       ------------------
-       -- Param_String --
-       ------------------
- 
-       function Param_String return String is
-       begin
-          if Is_Parameter (Decl) then
-             return "parameter ";
-          else
-             return "";
-          end if;
-       end Param_String;
- 
-    --  Start of processing for Get_Full_Type
- 
-    begin
-       case Get_Type (Decl) is
-          when 'A' => return "array type";
-          when 'B' => return "boolean type";
-          when 'C' => return "class-wide type";
-          when 'D' => return "decimal type";
-          when 'E' => return "enumeration type";
-          when 'F' => return "float type";
-          when 'H' => return "abstract type";
-          when 'I' => return "integer type";
-          when 'M' => return "modular type";
-          when 'O' => return "fixed type";
-          when 'P' => return "access type";
-          when 'R' => return "record type";
-          when 'S' => return "string type";
-          when 'T' => return "task type";
-          when 'W' => return "protected type";
- 
-          when 'a' => return Param_String & "array object";
-          when 'b' => return Param_String & "boolean object";
-          when 'c' => return Param_String & "class-wide object";
-          when 'd' => return Param_String & "decimal object";
-          when 'e' => return Param_String & "enumeration object";
-          when 'f' => return Param_String & "float object";
-          when 'i' => return Param_String & "integer object";
-          when 'j' => return Param_String & "class object";
-          when 'm' => return Param_String & "modular object";
-          when 'o' => return Param_String & "fixed object";
-          when 'p' => return Param_String & "access object";
-          when 'r' => return Param_String & "record object";
-          when 's' => return Param_String & "string object";
-          when 't' => return Param_String & "task object";
-          when 'w' => return Param_String & "protected object";
-          when 'x' => return Param_String & "abstract procedure";
-          when 'y' => return Param_String & "abstract function";
- 
-          when 'h' => return "interface";
-          when 'g' => return "macro";
-          when 'G' => return "function macro";
-          when 'J' => return "class";
-          when 'K' => return "package";
-          when 'k' => return "generic package";
-          when 'L' => return "statement label";
-          when 'l' => return "loop label";
-          when 'N' => return "named number";
-          when 'n' => return "enumeration literal";
-          when 'q' => return "block label";
-          when 'Q' => return "include file";
-          when 'U' => return "procedure";
-          when 'u' => return "generic procedure";
-          when 'V' => return "function";
-          when 'v' => return "generic function";
-          when 'X' => return "exception";
-          when 'Y' => return "entry";
- 
-          when '+' => return "private type";
-          when '*' => return "private variable";
- 
-          --  The above should be the only possibilities, but for this kind
-          --  of informational output, we don't want to bomb if we find
-          --  something else, so just return three question marks when we
-          --  have an unknown Abbrev value
- 
-          when others =>
-             if Is_Parameter (Decl) then
-                return "parameter";
-             else
-                return "??? (" & Get_Type (Decl) & ")";
-             end if;
-       end case;
-    end Get_Full_Type;
- 
-    --------------------------
-    -- Skip_To_First_X_Line --
-    --------------------------
- 
-    procedure Skip_To_First_X_Line
-      (File    : in out ALI_File;
-       D_Lines : Boolean;
-       W_Lines : Boolean)
-    is
-       Ali              : String_Access renames File.Buffer;
-       Token            : Positive;
-       Ptr              : Positive := Ali'First;
-       Num_Dependencies : Natural  := 0;
-       File_Start       : Positive;
-       File_End         : Positive;
-       Gnatchop_Offset  : Integer;
-       Gnatchop_Name    : Positive;
- 
-       File_Ref : File_Reference;
-       pragma Unreferenced (File_Ref);
- 
-    begin
-       --  Read all the lines possibly processing with-clauses and dependency
-       --  information and exit on finding the first Xref line.
-       --  A fall-through of the loop means that there is no xref information
-       --  which is an error condition.
- 
-       while Ali (Ptr) /= EOF loop
-          if D_Lines and then Ali (Ptr) = 'D' then
- 
-             --  Found dependency information. Format looks like:
-             --  D src-nam time-stmp checksum [subunit-name] [line:file-name]
- 
-             --  Skip the D and parse the filenam
- 
-             Ptr := Ptr + 1;
-             Parse_Token (Ali, Ptr, Token);
-             File_Start := Token;
-             File_End := Ptr - 1;
- 
-             Num_Dependencies := Num_Dependencies + 1;
-             Set_Last (File.Dep, Num_Dependencies);
- 
-             Parse_Token (Ali, Ptr, Token); --  Skip time-stamp
-             Parse_Token (Ali, Ptr, Token); --  Skip checksum
-             Parse_Token (Ali, Ptr, Token); --  Read next entity on the line
- 
-             if not (Ali (Token) in '0' .. '9') then
-                Parse_Token (Ali, Ptr, Token); --  Was a subunit name
-             end if;
- 
-             --  Did we have a gnatchop-ed file with a pragma Source_Reference ?
- 
-             Gnatchop_Offset := 0;
- 
-             if Ali (Token) in '0' .. '9' then
-                Gnatchop_Name := Token;
-                while Ali (Gnatchop_Name) /= ':' loop
-                   Gnatchop_Name := Gnatchop_Name + 1;
-                end loop;
- 
-                Gnatchop_Offset :=
-                  2 - Natural'Value (Ali (Token .. Gnatchop_Name - 1));
-                Token := Gnatchop_Name + 1;
-             end if;
- 
-             declare
-                Table : Table_Type renames
-                          File.Dep.Table (1 .. Last (File.Dep));
-             begin
-                Table (Num_Dependencies) := Add_To_Xref_File
-                  (Ali (File_Start .. File_End),
-                   Gnatchop_File => Ali (Token .. Ptr - 1),
-                   Gnatchop_Offset => Gnatchop_Offset);
-             end;
- 
-          elsif W_Lines and then Ali (Ptr) = 'W' then
- 
-             --  Found with-clause information. Format looks like:
-             --     "W debug%s               debug.adb               debug.ali"
- 
-             --  Skip the W and parse the .ali filename (3rd token)
- 
-             Parse_Token (Ali, Ptr, Token);
-             Parse_Token (Ali, Ptr, Token);
-             Parse_Token (Ali, Ptr, Token);
- 
-             File_Ref :=
-               Add_To_Xref_File (Ali (Token .. Ptr - 1), Visited => False);
- 
-          elsif Ali (Ptr) = 'X' then
- 
-             --  Found a cross-referencing line - stop processing
- 
-             File.Current_Line := Ptr;
-             File.Xref_Line    := Ptr;
-             return;
-          end if;
- 
-          Parse_EOL (Ali, Ptr);
-       end loop;
- 
-       raise No_Xref_Information;
-    end Skip_To_First_X_Line;
- 
-    ----------
-    -- Open --
-    ----------
- 
-    procedure Open
-      (Name         : String;
-       File         : in out ALI_File;
-       Dependencies : Boolean := False)
-    is
-       Ali : String_Access renames File.Buffer;
-       pragma Warnings (Off, Ali);
- 
-    begin
-       if File.Buffer /= null then
-          Free (File.Buffer);
-       end if;
- 
-       Init (File.Dep);
- 
-       begin
-          Read_File (Name, Ali);
- 
-       exception
-          when Ada.Text_IO.Name_Error | Ada.Text_IO.End_Error =>
-             raise No_Xref_Information;
-       end;
- 
-       Skip_To_First_X_Line (File, D_Lines => True, W_Lines => Dependencies);
-    end Open;
- 
-    ---------------
-    -- Parse_EOL --
-    ---------------
- 
-    procedure Parse_EOL
-      (Source                 : not null access String;
-       Ptr                    : in out Positive;
-       Skip_Continuation_Line : Boolean := False)
-    is
-    begin
-       loop
-          pragma Assert (Source (Ptr) /= EOF);
- 
-          --  Skip to end of line
- 
-          while Source (Ptr) /= ASCII.CR and then Source (Ptr) /= ASCII.LF
-            and then Source (Ptr) /= EOF
-          loop
-             Ptr := Ptr + 1;
-          end loop;
- 
-          --  Skip CR or LF if not at end of file
- 
-          if Source (Ptr) /= EOF then
-             Ptr := Ptr + 1;
-          end if;
- 
-          --  Skip past CR/LF
- 
-          if Source (Ptr - 1) = ASCII.CR and then Source (Ptr) = ASCII.LF then
-             Ptr := Ptr + 1;
-          end if;
- 
-          exit when not Skip_Continuation_Line or else Source (Ptr) /= '.';
-       end loop;
-    end Parse_EOL;
- 
-    ---------------------------
-    -- Parse_Identifier_Info --
-    ---------------------------
- 
-    procedure Parse_Identifier_Info
-      (Pattern       : Search_Pattern;
-       File          : in out ALI_File;
-       Local_Symbols : Boolean;
-       Der_Info      : Boolean := False;
-       Type_Tree     : Boolean := False;
-       Wide_Search   : Boolean := True;
-       Labels_As_Ref : Boolean := True)
-    is
-       Ptr      : Positive renames File.Current_Line;
-       Ali      : String_Access renames File.Buffer;
- 
-       E_Line   : Natural;   --  Line number of current entity
-       E_Col    : Natural;   --  Column number of current entity
-       E_Name   : Positive;  --  Pointer to begin of entity name
-       E_Global : Boolean;   --  True iff entity is global
-       E_Type   : Character; --  Type of current entity
- 
-       R_Line   : Natural;   --  Line number of current reference
-       R_Col    : Natural;   --  Column number of current reference
- 
-       R_Type   : Character := ASCII.NUL; --  Type of current reference
- 
-       Decl_Ref : Declaration_Reference;
-       File_Ref : File_Reference := Current_Xref_File (File);
- 
-       function Get_Symbol_Name (Eun, Line, Col : Natural) return String;
-       --  Returns the symbol name for the entity defined at the specified
-       --  line and column in the dependent unit number Eun. For this we need
-       --  to parse the ali file again because the parent entity is not in
-       --  the declaration table if it did not match the search pattern.
-       --  If the symbol is not found, we return (1 .. 3 => '?').
- 
-       procedure Skip_To_Matching_Closing_Bracket;
-       --  When Ptr points to an opening square bracket, moves it to the
-       --  character following the matching closing bracket
- 
-       ---------------------
-       -- Get_Symbol_Name --
-       ---------------------
- 
-       function Get_Symbol_Name (Eun, Line, Col : Natural) return String is
-          Ptr    : Positive := 1;
-          E_Eun  : Positive;   --  Unit number of current entity
-          E_Line : Natural;    --  Line number of current entity
-          E_Col  : Natural;    --  Column number of current entity
-          E_Name : Positive;   --  Pointer to begin of entity name
- 
-       begin
-          --  Look for the X lines corresponding to unit Eun
- 
-          loop
-             if Ali (Ptr) = EOF then
-                return "???";
-             end if;
- 
-             if Ali (Ptr) = 'X' then
-                Ptr := Ptr + 1;
-                Parse_Number (Ali, Ptr, E_Eun);
-                exit when E_Eun = Eun;
-             end if;
- 
-             Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
-          end loop;
- 
-          --  Here we are in the right Ali section, we now look for the entity
-          --  declared at position (Line, Col).
- 
-          loop
-             Parse_Number (Ali, Ptr, E_Line);
-             exit when Ali (Ptr) = EOF;
-             Ptr := Ptr + 1;
-             Parse_Number (Ali, Ptr, E_Col);
-             exit when Ali (Ptr) = EOF;
-             Ptr := Ptr + 1;
- 
-             if Line = E_Line and then Col = E_Col then
-                Parse_Token (Ali, Ptr, E_Name);
-                return Ali (E_Name .. Ptr - 1);
-             end if;
- 
-             Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
-             exit when Ali (Ptr) = EOF;
-          end loop;
- 
-          return "???";
-       end Get_Symbol_Name;
- 
-       --------------------------------------
-       -- Skip_To_Matching_Closing_Bracket --
-       --------------------------------------
- 
-       procedure Skip_To_Matching_Closing_Bracket is
-          Num_Brackets : Natural;
- 
-       begin
-          Num_Brackets := 1;
-          while Num_Brackets /= 0 loop
-             Ptr := Ptr + 1;
-             if Ali (Ptr) = '[' then
-                Num_Brackets := Num_Brackets + 1;
-             elsif Ali (Ptr) = ']' then
-                Num_Brackets := Num_Brackets - 1;
-             end if;
-          end loop;
- 
-          Ptr := Ptr + 1;
-       end Skip_To_Matching_Closing_Bracket;
- 
-       Table : Table_Type renames File.Dep.Table (1 .. Last (File.Dep));
- 
-    --  Start of processing for Parse_Identifier_Info
- 
-    begin
-       --  The identifier info looks like:
-       --     "38U9*Debug 12|36r6 36r19"
- 
-       --  Extract the line, column and entity name information
- 
-       Parse_Number (Ali, Ptr, E_Line);
- 
-       if Ali (Ptr) > ' ' then
-          E_Type := Ali (Ptr);
-          Ptr := Ptr + 1;
- 
-          --  Ignore some of the entities (labels,...)
- 
-          if E_Type in 'l' | 'L' | 'q' then
-             Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
-             return;
-          end if;
-       else
-          --  Unexpected contents, skip line and return
- 
-          Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
-          return;
-       end if;
- 
-       Parse_Number (Ali, Ptr, E_Col);
- 
-       E_Global := False;
-       if Ali (Ptr) >= ' ' then
-          E_Global := (Ali (Ptr) = '*');
-          Ptr := Ptr + 1;
-       end if;
- 
-       Parse_Token (Ali, Ptr, E_Name);
- 
-       --  Exit if the symbol does not match or if we have a local symbol and we
-       --  do not want it or if the file is unknown.
- 
-       if File.X_File = Empty_File then
-          return;
-       end if;
- 
-       if (not Local_Symbols and not E_Global)
-         or else (Pattern.Initialized
-                   and then not Match (Ali (E_Name .. Ptr - 1), Pattern.Entity))
-         or else (E_Name >= Ptr)
-       then
-          Decl_Ref := Add_Declaration
-            (File.X_File, Ali (E_Name .. Ptr - 1), E_Line, E_Col, E_Type,
-             Remove_Only => True);
-          Parse_EOL (Ali, Ptr, Skip_Continuation_Line => True);
-          return;
-       end if;
- 
-       --  Insert the declaration in the table
- 
-       Decl_Ref := Add_Declaration
-         (File.X_File, Ali (E_Name .. Ptr - 1), E_Line, E_Col, E_Type);
- 
-       if Ali (Ptr) = '[' then
-          Skip_To_Matching_Closing_Bracket;
-       end if;
- 
-       --  Skip any renaming indication
- 
-       if Ali (Ptr) = '=' then
-          declare
-             P_Line, P_Column : Natural;
-             pragma Warnings (Off, P_Line);
-             pragma Warnings (Off, P_Column);
-          begin
-             Ptr := Ptr + 1;
-             Parse_Number (Ali, Ptr, P_Line);
-             Ptr := Ptr + 1;
-             Parse_Number (Ali, Ptr, P_Column);
-          end;
-       end if;
- 
-       while Ptr <= Ali'Last
-          and then (Ali (Ptr) = '<'
-                    or else Ali (Ptr) = '('
-                    or else Ali (Ptr) = '{')
-       loop
-          --  Here we have a type derivation information. The format is
-          --  <3|12I45> which means that the current entity is derived from the
-          --  type defined in unit number 3, line 12 column 45. The pipe and
-          --  unit number is optional. It is specified only if the parent type
-          --  is not defined in the current unit.
- 
-          --  We also have the format for generic instantiations, as in
-          --  7a5*Uid(3|5I8[4|2]) 2|4r74
- 
-          --  We could also have something like
-          --  16I9*I<integer>
-          --  that indicates that I derives from the predefined type integer.
- 
-          Ptr := Ptr + 1;
- 
-          if Ali (Ptr) in '0' .. '9' then
-             Parse_Derived_Info : declare
-                P_Line   : Natural;          --  parent entity line
-                P_Column : Natural;          --  parent entity column
-                P_Eun    : Natural := 0;     --  parent entity file number
- 
-             begin
-                Parse_Number (Ali, Ptr, P_Line);
- 
-                --  If we have a pipe then the first number was the unit number
- 
-                if Ali (Ptr) = '|' then
-                   P_Eun := P_Line;
-                   Ptr := Ptr + 1;
- 
-                   --  Now we have the line number
- 
-                   Parse_Number (Ali, Ptr, P_Line);
- 
-                else
-                   --  We don't have a unit number specified, so we set P_Eun to
-                   --  the current unit.
- 
-                   for K in Table'Range loop
-                      P_Eun := K;
-                      exit when Table (K) = File_Ref;
-                   end loop;
-                end if;
- 
-                --  Then parse the type and column number
- 
-                Ptr := Ptr + 1;
-                Parse_Number (Ali, Ptr, P_Column);
- 
-                --  Skip the information for generics instantiations
- 
-                if Ali (Ptr) = '[' then
-                   Skip_To_Matching_Closing_Bracket;
-                end if;
- 
-                --  Skip '>', or ')' or '>'
- 
-                Ptr := Ptr + 1;
- 
-                --  The derived info is needed only is the derived info mode is
-                --  on or if we want to output the type hierarchy
- 
-                if Der_Info or else Type_Tree then
-                   pragma Assert (P_Eun /= 0);
- 
-                   declare
-                      Symbol : constant String :=
-                                 Get_Symbol_Name (P_Eun, P_Line, P_Column);
-                   begin
-                      if Symbol /= "???" then
-                         Add_Parent
-                           (Decl_Ref,
-                            Symbol,
-                            P_Line,
-                            P_Column,
-                            Table (P_Eun));
-                      end if;
-                   end;
-                end if;
- 
-                if Type_Tree
-                  and then (Pattern.File_Ref = Empty_File
-                              or else
-                            Pattern.File_Ref = Current_Xref_File (File))
-                then
-                   Search_Parent_Tree : declare
-                      Pattern         : Search_Pattern;  --  Parent type pattern
-                      File_Pos_Backup : Positive;
- 
-                   begin
-                      Add_Entity
-                        (Pattern,
-                         Get_Symbol_Name (P_Eun, P_Line, P_Column)
-                         & ':' & Get_Gnatchop_File (Table (P_Eun))
-                         & ':' & Get_Line (Get_Parent (Decl_Ref))
-                         & ':' & Get_Column (Get_Parent (Decl_Ref)),
-                         False);
- 
-                      --  No default match is needed to look for the parent type
-                      --  since we are using the fully qualified symbol name:
-                      --  symbol:file:line:column
- 
-                      Set_Default_Match (False);
- 
-                      --  The parent hierarchy is defined in the same unit as
-                      --  the derived type. So we want to revisit the unit.
- 
-                      File_Pos_Backup   := File.Current_Line;
- 
-                      Skip_To_First_X_Line
-                        (File, D_Lines => False, W_Lines => False);
- 
-                      while File.Buffer (File.Current_Line) /= EOF loop
-                         Parse_X_Filename (File);
-                         Parse_Identifier_Info
-                           (Pattern       => Pattern,
-                            File          => File,
-                            Local_Symbols => False,
-                            Der_Info      => Der_Info,
-                            Type_Tree     => True,
-                            Wide_Search   => False,
-                            Labels_As_Ref => Labels_As_Ref);
-                      end loop;
- 
-                      File.Current_Line := File_Pos_Backup;
-                   end Search_Parent_Tree;
-                end if;
-             end Parse_Derived_Info;
- 
-          else
-             while Ali (Ptr) /= '>'
-               and then Ali (Ptr) /= ')'
-               and then Ali (Ptr) /= '}'
-             loop
-                Ptr := Ptr + 1;
-             end loop;
-             Ptr := Ptr + 1;
-          end if;
-       end loop;
- 
-       --  To find the body, we will have to parse the file too
- 
-       if Wide_Search then
-          declare
-             File_Name : constant String := Get_Gnatchop_File (File.X_File);
-             Ignored : File_Reference;
-          begin
-             Ignored := Add_To_Xref_File (ALI_File_Name (File_Name), False);
-          end;
-       end if;
- 
-       --  Parse references to this entity.
-       --  Ptr points to next reference with leading blanks
- 
-       loop
-          --  Process references on current line
- 
-          while Ali (Ptr) = ' ' or else Ali (Ptr) = ASCII.HT loop
- 
-             --  For every reference read the line, type and column,
-             --  optionally preceded by a file number and a pipe symbol.
- 
-             Parse_Number (Ali, Ptr, R_Line);
- 
-             if Ali (Ptr) = Pipe then
-                Ptr := Ptr + 1;
-                File_Ref := File_Name (File, R_Line);
- 
-                Parse_Number (Ali, Ptr, R_Line);
-             end if;
- 
-             if Ali (Ptr) > ' ' then
-                R_Type := Ali (Ptr);
-                Ptr := Ptr + 1;
-             end if;
- 
-             --  Imported entities may have an indication specifying information
-             --  about the corresponding external name:
-             --    5U14*Foo2 5>20 6b<c,myfoo2>22   # Imported entity
-             --    5U14*Foo2 5>20 6i<c,myfoo2>22   # Exported entity
- 
-             if Ali (Ptr) = '<'
-               and then (R_Type = 'b' or else R_Type = 'i')
-             then
-                while Ptr <= Ali'Last
-                  and then Ali (Ptr) /= '>'
-                loop
-                   Ptr := Ptr + 1;
-                end loop;
-                Ptr := Ptr + 1;
-             end if;
- 
-             Parse_Number (Ali, Ptr, R_Col);
- 
-             pragma Assert (R_Type /= ASCII.NUL);
- 
-             --  Insert the reference or body in the table
- 
-             Add_Reference
-               (Decl_Ref, File_Ref, R_Line, R_Col, R_Type, Labels_As_Ref);
- 
-             --  Skip generic information, if any
- 
-             if Ali (Ptr) = '[' then
-                declare
-                   Num_Nested : Integer := 1;
- 
-                begin
-                   Ptr := Ptr + 1;
-                   while Num_Nested /= 0 loop
-                      if Ali (Ptr) = ']' then
-                         Num_Nested := Num_Nested - 1;
-                      elsif Ali (Ptr) = '[' then
-                         Num_Nested := Num_Nested + 1;
-                      end if;
- 
-                      Ptr := Ptr + 1;
-                   end loop;
-                end;
-             end if;
- 
-          end loop;
- 
-          Parse_EOL (Ali, Ptr);
- 
-          --   Loop until new line is no continuation line
- 
-          exit when Ali (Ptr) /= '.';
-          Ptr := Ptr + 1;
-       end loop;
-    end Parse_Identifier_Info;
- 
-    ------------------
-    -- Parse_Number --
-    ------------------
- 
-    procedure Parse_Number
-      (Source : not null access String;
-       Ptr    : in out Positive;
-       Number : out Natural)
-    is
-    begin
-       --  Skip separators
- 
-       while Source (Ptr) = ' ' or else Source (Ptr) = ASCII.HT loop
-          Ptr := Ptr + 1;
-       end loop;
- 
-       Number := 0;
-       while Source (Ptr) in '0' .. '9' loop
-          Number :=
-            10 * Number + (Character'Pos (Source (Ptr)) - Character'Pos ('0'));
-          Ptr := Ptr + 1;
-       end loop;
-    end Parse_Number;
- 
-    -----------------
-    -- Parse_Token --
-    -----------------
- 
-    procedure Parse_Token
-      (Source    : not null access String;
-       Ptr       : in out Positive;
-       Token_Ptr : out Positive)
-    is
-       In_Quotes : Character := ASCII.NUL;
- 
-    begin
-       --  Skip separators
- 
-       while Source (Ptr) = ' ' or else Source (Ptr) = ASCII.HT loop
-          Ptr := Ptr + 1;
-       end loop;
- 
-       Token_Ptr := Ptr;
- 
-       --  Find end-of-token
- 
-       while (In_Quotes /= ASCII.NUL or else
-                not (Source (Ptr) = ' '
-                      or else Source (Ptr) = ASCII.HT
-                      or else Source (Ptr) = '<'
-                      or else Source (Ptr) = '{'
-                      or else Source (Ptr) = '['
-                      or else Source (Ptr) = '='
-                      or else Source (Ptr) = '('))
-         and then Source (Ptr) >= ' '
-       loop
-          --  Double-quotes are used for operators
-          --  Simple-quotes are used for character constants, for instance when
-          --  they are found in an enumeration type "type A is ('+', '-');"
- 
-          case Source (Ptr) is
-             when '"' | ''' =>
-                if In_Quotes = Source (Ptr) then
-                   In_Quotes := ASCII.NUL;
-                elsif In_Quotes = ASCII.NUL then
-                   In_Quotes := Source (Ptr);
-                end if;
- 
-             when others =>
-                null;
-          end case;
- 
-          Ptr := Ptr + 1;
-       end loop;
-    end Parse_Token;
- 
-    ----------------------
-    -- Parse_X_Filename --
-    ----------------------
- 
-    procedure Parse_X_Filename (File : in out ALI_File) is
-       Ali     : String_Access renames File.Buffer;
-       Ptr     : Positive renames File.Current_Line;
-       File_Nr : Natural;
- 
-       Table : Table_Type renames File.Dep.Table (1 .. Last (File.Dep));
- 
-    begin
-       while Ali (Ptr) = 'X' loop
- 
-          --  The current line is the start of a new Xref file section,
-          --  whose format looks like:
- 
-          --     " X 1 debug.ads"
- 
-          --  Skip the X and read the file number for the new X_File
- 
-          Ptr := Ptr + 1;
-          Parse_Number (Ali, Ptr, File_Nr);
- 
-          --  If the referenced file is unknown, we simply ignore it
- 
-          if File_Nr in Table'Range then
-             File.X_File := Table (File_Nr);
-          else
-             File.X_File := Empty_File;
-          end if;
- 
-          Parse_EOL (Ali, Ptr);
-       end loop;
-    end Parse_X_Filename;
- 
-    --------------------
-    -- Print_Gnatfind --
-    --------------------
- 
-    procedure Print_Gnatfind
-      (References     : Boolean;
-       Full_Path_Name : Boolean)
-    is
-       Decls : constant Declaration_Array_Access := Get_Declarations;
-       Decl  : Declaration_Reference;
-       Arr   : Reference_Array_Access;
- 
-       procedure Print_Ref
-         (Ref : Reference;
-          Msg : String := "      ");
-       --  Print a reference, according to the extended tag of the output
- 
-       ---------------
-       -- Print_Ref --
-       ---------------
- 
-       procedure Print_Ref
-         (Ref : Reference;
-          Msg : String := "      ")
-       is
-          F : String_Access :=
-                Osint.To_Host_File_Spec
-                 (Get_Gnatchop_File (Ref, Full_Path_Name));
- 
-          Buffer : constant String :=
-                     F.all &
-                     ":" & Get_Line (Ref)   &
-                     ":" & Get_Column (Ref) &
-                     ": ";
- 
-          Num_Blanks : Integer := Longest_File_Name + 10 - Buffer'Length;
- 
-       begin
-          Free (F);
-          Num_Blanks := Integer'Max (0, Num_Blanks);
-          Write_Line
-            (Buffer
-             & String'(1 .. Num_Blanks => ' ')
-             & Msg & " " & Get_Symbol (Decl));
- 
-          if Get_Source_Line (Ref)'Length /= 0 then
-             Write_Line ("   " & Get_Source_Line (Ref));
-          end if;
-       end Print_Ref;
- 
-    --  Start of processing for Print_Gnatfind
- 
-    begin
-       for D in Decls'Range loop
-          Decl := Decls (D);
- 
-          if Match (Decl) then
- 
-             --  Output the declaration
- 
-             declare
-                Parent : constant Declaration_Reference := Get_Parent (Decl);
- 
-                F : String_Access :=
-                      Osint.To_Host_File_Spec
-                       (Get_Gnatchop_File (Decl, Full_Path_Name));
- 
-                Buffer : constant String :=
-                           F.all &
-                           ":" & Get_Line (Decl)   &
-                           ":" & Get_Column (Decl) &
-                           ": ";
- 
-                Num_Blanks : Integer := Longest_File_Name + 10 - Buffer'Length;
- 
-             begin
-                Free (F);
-                Num_Blanks := Integer'Max (0, Num_Blanks);
-                Write_Line
-                  (Buffer & String'(1 .. Num_Blanks => ' ')
-                   & "(spec) " & Get_Symbol (Decl));
- 
-                if Parent /= Empty_Declaration then
-                   F := Osint.To_Host_File_Spec (Get_Gnatchop_File (Parent));
-                   Write_Line
-                     (Buffer & String'(1 .. Num_Blanks => ' ')
-                      & "   derived from " & Get_Symbol (Parent)
-                      & " ("
-                      & F.all
-                      & ':' & Get_Line (Parent)
-                      & ':' & Get_Column (Parent) & ')');
-                   Free (F);
-                end if;
-             end;
- 
-             if Get_Source_Line (Decl)'Length /= 0 then
-                Write_Line ("   " & Get_Source_Line (Decl));
-             end if;
- 
-             --  Output the body (sorted)
- 
-             Arr := Get_References (Decl, Get_Bodies => True);
- 
-             for R in Arr'Range loop
-                Print_Ref (Arr (R), "(body)");
-             end loop;
- 
-             Free (Arr);
- 
-             if References then
-                Arr := Get_References
-                  (Decl, Get_Writes => True, Get_Reads => True);
- 
-                for R in Arr'Range loop
-                   Print_Ref (Arr (R));
-                end loop;
- 
-                Free (Arr);
-             end if;
-          end if;
-       end loop;
-    end Print_Gnatfind;
- 
-    ------------------
-    -- Print_Unused --
-    ------------------
- 
-    procedure Print_Unused (Full_Path_Name : Boolean) is
-       Decls : constant Declaration_Array_Access := Get_Declarations;
-       Decl  : Declaration_Reference;
-       Arr   : Reference_Array_Access;
-       F     : String_Access;
- 
-    begin
-       for D in Decls'Range loop
-          Decl := Decls (D);
- 
-          if References_Count
-              (Decl, Get_Reads => True, Get_Writes => True) = 0
-          then
-             F := Osint.To_Host_File_Spec
-               (Get_Gnatchop_File (Decl, Full_Path_Name));
-             Write_Str (Get_Symbol (Decl)
-                         & " ("
-                         & Get_Full_Type (Decl)
-                         & ") "
-                         & F.all
-                         & ':'
-                         & Get_Line (Decl)
-                         & ':'
-                         & Get_Column (Decl));
-             Free (F);
- 
-             --  Print the body if any
- 
-             Arr := Get_References (Decl, Get_Bodies => True);
- 
-             for R in Arr'Range loop
-                F := Osint.To_Host_File_Spec
-                       (Get_Gnatchop_File (Arr (R), Full_Path_Name));
-                Write_Str (' '
-                            & F.all
-                            & ':' & Get_Line (Arr (R))
-                            & ':' & Get_Column (Arr (R)));
-                Free (F);
-             end loop;
- 
-             Write_Eol;
-             Free (Arr);
-          end if;
-       end loop;
-    end Print_Unused;
- 
-    --------------
-    -- Print_Vi --
-    --------------
- 
-    procedure Print_Vi (Full_Path_Name : Boolean) is
-       Tab   : constant Character := ASCII.HT;
-       Decls : constant Declaration_Array_Access :=
-                 Get_Declarations (Sorted => False);
-       Decl  : Declaration_Reference;
-       Arr   : Reference_Array_Access;
-       F     : String_Access;
- 
-    begin
-       for D in Decls'Range loop
-          Decl := Decls (D);
- 
-          F := Osint.To_Host_File_Spec (Get_File (Decl, Full_Path_Name));
-          Write_Line (Get_Symbol (Decl) & Tab & F.all & Tab & Get_Line (Decl));
-          Free (F);
- 
-          --  Print the body if any
- 
-          Arr := Get_References (Decl, Get_Bodies => True);
- 
-          for R in Arr'Range loop
-             F := Osint.To_Host_File_Spec (Get_File (Arr (R), Full_Path_Name));
-             Write_Line
-               (Get_Symbol (Decl) & Tab & F.all & Tab  & Get_Line (Arr (R)));
-             Free (F);
-          end loop;
- 
-          Free (Arr);
- 
-          --  Print the modifications
- 
-          Arr := Get_References (Decl, Get_Writes => True, Get_Reads => True);
- 
-          for R in Arr'Range loop
-             F := Osint.To_Host_File_Spec (Get_File (Arr (R), Full_Path_Name));
-             Write_Line
-               (Get_Symbol (Decl) & Tab & F.all & Tab & Get_Line (Arr (R)));
-             Free (F);
-          end loop;
- 
-          Free (Arr);
-       end loop;
-    end Print_Vi;
- 
-    ----------------
-    -- Print_Xref --
-    ----------------
- 
-    procedure Print_Xref (Full_Path_Name : Boolean) is
-       Decls : constant Declaration_Array_Access := Get_Declarations;
-       Decl : Declaration_Reference;
- 
-       Margin : constant := 10;
-       --  Column where file names start
- 
-       procedure New_Line80;
-       --  Go to start of new line
- 
-       procedure Print80 (S : String);
-       --  Print the text, respecting the 80 columns rule
- 
-       procedure Print_Ref (Line, Column : String);
-       --  The beginning of the output is aligned on a column multiple of 9
- 
-       procedure Print_List
-         (Decl       : Declaration_Reference;
-          Msg        : String;
-          Get_Reads  : Boolean := False;
-          Get_Writes : Boolean := False;
-          Get_Bodies : Boolean := False);
-       --  Print a list of references. If the list is not empty, Msg will
-       --  be printed prior to the list.
- 
-       ----------------
-       -- New_Line80 --
-       ----------------
- 
-       procedure New_Line80 is
-       begin
-          Write_Eol;
-          Write_Str (String'(1 .. Margin - 1 => ' '));
-       end New_Line80;
- 
-       -------------
-       -- Print80 --
-       -------------
- 
-       procedure Print80 (S : String) is
-          Align : Natural := Margin - (Integer (Column) mod Margin);
- 
-       begin
-          if Align = Margin then
-             Align := 0;
-          end if;
- 
-          Write_Str (String'(1 .. Align => ' ') & S);
-       end Print80;
- 
-       ---------------
-       -- Print_Ref --
-       ---------------
- 
-       procedure Print_Ref (Line, Column : String) is
-          Line_Align : constant Integer := 4 - Line'Length;
- 
-          S : constant String := String'(1 .. Line_Align => ' ')
-                                   & Line & ':' & Column;
- 
-          Align : Natural := Margin - (Integer (Output.Column) mod Margin);
- 
-       begin
-          if Align = Margin then
-             Align := 0;
-          end if;
- 
-          if Integer (Output.Column) + Align + S'Length > 79 then
-             New_Line80;
-             Align := 0;
-          end if;
- 
-          Write_Str (String'(1 .. Align => ' ') & S);
-       end Print_Ref;
- 
-       ----------------
-       -- Print_List --
-       ----------------
- 
-       procedure Print_List
-         (Decl       : Declaration_Reference;
-          Msg        : String;
-          Get_Reads  : Boolean := False;
-          Get_Writes : Boolean := False;
-          Get_Bodies : Boolean := False)
-       is
-          Arr : Reference_Array_Access :=
-                  Get_References
-                    (Decl,
-                     Get_Writes => Get_Writes,
-                     Get_Reads  => Get_Reads,
-                     Get_Bodies => Get_Bodies);
-          File : File_Reference := Empty_File;
-          F    : String_Access;
- 
-       begin
-          if Arr'Length /= 0 then
-             Write_Eol;
-             Write_Str (Msg);
-          end if;
- 
-          for R in Arr'Range loop
-             if Get_File_Ref (Arr (R)) /= File then
-                if File /= Empty_File then
-                   New_Line80;
-                end if;
- 
-                File := Get_File_Ref (Arr (R));
-                F := Osint.To_Host_File_Spec
-                  (Get_Gnatchop_File (Arr (R), Full_Path_Name));
- 
-                if F = null then
-                   Write_Str ("<unknown> ");
-                else
-                   Write_Str (F.all & ' ');
-                   Free (F);
-                end if;
-             end if;
- 
-             Print_Ref (Get_Line (Arr (R)), Get_Column (Arr (R)));
-          end loop;
- 
-          Free (Arr);
-       end Print_List;
- 
-       F : String_Access;
- 
-    --  Start of processing for Print_Xref
- 
-    begin
-       for D in Decls'Range loop
-          Decl := Decls (D);
- 
-          Write_Str (Get_Symbol (Decl));
- 
-          --  Put the declaration type in column Type_Position, but if the
-          --  declaration name is too long, put at least one space between its
-          --  name and its type.
- 
-          while Column < Type_Position - 1 loop
-             Write_Char (' ');
-          end loop;
- 
-          Write_Char (' ');
- 
-          Write_Line (Get_Full_Type (Decl));
- 
-          Write_Parent_Info : declare
-             Parent : constant Declaration_Reference := Get_Parent (Decl);
- 
-          begin
-             if Parent /= Empty_Declaration then
-                Write_Str ("  Ptype: ");
-                F := Osint.To_Host_File_Spec (Get_Gnatchop_File (Parent));
-                Print80 (F.all);
-                Free (F);
-                Print_Ref (Get_Line (Parent), Get_Column (Parent));
-                Print80 ("  " & Get_Symbol (Parent));
-                Write_Eol;
-             end if;
-          end Write_Parent_Info;
- 
-          Write_Str ("  Decl:  ");
-          F := Osint.To_Host_File_Spec
-                (Get_Gnatchop_File (Decl, Full_Path_Name));
- 
-          if F = null then
-             Print80 ("<unknown> ");
-          else
-             Print80 (F.all & ' ');
-             Free (F);
-          end if;
- 
-          Print_Ref (Get_Line (Decl), Get_Column (Decl));
- 
-          Print_List
-            (Decl, "  Body:  ", Get_Bodies => True);
-          Print_List
-            (Decl, "  Modi:  ", Get_Writes => True);
-          Print_List
-            (Decl, "  Ref:   ", Get_Reads => True);
-          Write_Eol;
-       end loop;
-    end Print_Xref;
- 
-    ------------
-    -- Search --
-    ------------
- 
-    procedure Search
-      (Pattern       : Search_Pattern;
-       Local_Symbols : Boolean;
-       Wide_Search   : Boolean;
-       Read_Only     : Boolean;
-       Der_Info      : Boolean;
-       Type_Tree     : Boolean)
-    is
-       type String_Access is access String;
-       procedure Free is new Unchecked_Deallocation (String, String_Access);
- 
-       ALIfile   : ALI_File;
-       File_Ref  : File_Reference;
-       Strip_Num : Natural := 0;
-       Ali_Name  : String_Access;
- 
-    begin
-       --  If we want all the .ali files, then find them
- 
-       if Wide_Search then
-          Find_ALI_Files;
-       end if;
- 
-       loop
-          --  Get the next unread ali file
- 
-          File_Ref := Next_Unvisited_File;
- 
-          exit when File_Ref = Empty_File;
- 
-          --  Find the ALI file to use. Most of the time, it will be the unit
-          --  name, with a different extension. However, when dealing with
-          --  separates the ALI file is in fact the parent's ALI file (and this
-          --  is recursive, in case the parent itself is a separate).
- 
-          Strip_Num := 0;
-          loop
-             Free (Ali_Name);
-             Ali_Name := new String'
-               (Get_File (File_Ref, With_Dir => True, Strip => Strip_Num));
- 
-             --  Stripped too many things...
- 
-             if Ali_Name.all = "" then
-                if Get_Emit_Warning (File_Ref) then
-                   Set_Standard_Error;
-                   Write_Line
-                     ("warning : file " & Get_File (File_Ref, With_Dir => True)
-                      & " not found");
-                   Set_Standard_Output;
-                end if;
-                Free (Ali_Name);
-                exit;
- 
-             --  If not found, try the parent's ALI file (this is needed for
-             --  separate units and subprograms).
- 
-             --  Reset the cached directory first, in case the separate's
-             --  ALI file is not in the same directory.
- 
-             elsif not File_Exists (Ali_Name.all) then
-                Strip_Num := Strip_Num + 1;
-                Reset_Directory (File_Ref);
- 
-             --  Else we finally found it
- 
-             else
-                exit;
-             end if;
-          end loop;
- 
-          --  If we had to get the parent's ALI, insert it in the list as usual.
-          --  This is to avoid parsing it twice in case it has already been
-          --  parsed.
- 
-          if Ali_Name /= null and then Strip_Num /= 0 then
-             File_Ref := Add_To_Xref_File
-               (File_Name => Ali_Name.all,
-                Visited   => False);
- 
-          --  Now that we have a file name, parse it to find any reference to
-          --  the entity.
- 
-          elsif Ali_Name /= null
-            and then (Read_Only or else Is_Writable_File (Ali_Name.all))
-          then
-             begin
-                Open (Ali_Name.all, ALIfile);
- 
-                --  The cross-reference section in the ALI file may be followed
-                --  by other sections, which can be identified by the starting
-                --  character of every line, which should neither be 'X' nor a
-                --  figure in '1' .. '9'.
- 
-                --  The loop tests below also take into account the end-of-file
-                --  possibility.
- 
-                while ALIfile.Buffer (ALIfile.Current_Line) = 'X' loop
-                   Parse_X_Filename (ALIfile);
- 
-                   while ALIfile.Buffer (ALIfile.Current_Line) in '1' .. '9'
-                   loop
-                      Parse_Identifier_Info
-                        (Pattern, ALIfile, Local_Symbols, Der_Info, Type_Tree,
-                         Wide_Search, Labels_As_Ref => True);
-                   end loop;
-                end loop;
- 
-             exception
-                when No_Xref_Information   =>
-                   if Get_Emit_Warning (File_Ref) then
-                      Set_Standard_Error;
-                      Write_Line
-                        ("warning : No cross-referencing information in  "
-                         & Ali_Name.all);
-                      Set_Standard_Output;
-                   end if;
-             end;
-          end if;
-       end loop;
- 
-       Free (Ali_Name);
-    end Search;
- 
-    -----------------
-    -- Search_Xref --
-    -----------------
- 
-    procedure Search_Xref
-      (Local_Symbols : Boolean;
-       Read_Only     : Boolean;
-       Der_Info      : Boolean)
-    is
-       ALIfile      : ALI_File;
-       File_Ref     : File_Reference;
-       Null_Pattern : Search_Pattern;
- 
-    begin
-       Null_Pattern.Initialized := False;
- 
-       loop
-          --  Find the next unvisited file
- 
-          File_Ref := Next_Unvisited_File;
-          exit when File_Ref = Empty_File;
- 
-          --  Search the object directories for the .ali file
- 
-          declare
-             F : constant String := Get_File (File_Ref, With_Dir => True);
- 
-          begin
-             if Read_Only or else Is_Writable_File (F) then
-                Open (F, ALIfile, True);
- 
-                --  The cross-reference section in the ALI file may be followed
-                --  by other sections, which can be identified by the starting
-                --  character of every line, which should neither be 'X' nor a
-                --  figure in '1' .. '9'.
- 
-                --  The loop tests below also take into account the end-of-file
-                --  possibility.
- 
-                while ALIfile.Buffer (ALIfile.Current_Line) = 'X' loop
-                   Parse_X_Filename (ALIfile);
- 
-                   while ALIfile.Buffer (ALIfile.Current_Line) in '1' .. '9'
-                   loop
-                      Parse_Identifier_Info
-                        (Null_Pattern, ALIfile, Local_Symbols, Der_Info,
-                         Labels_As_Ref => False);
-                   end loop;
-                end loop;
-             end if;
- 
-          exception
-             when No_Xref_Information => null;
-          end;
-       end loop;
-    end Search_Xref;
- 
- end Xref_Lib;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/xref_lib.ads gcc-13.1.0/gcc/ada/xref_lib.ads
*** gcc-12.2.0/gcc/ada/xref_lib.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xref_lib.ads	Thu Jan  1 00:00:00 1970
***************
*** 1,179 ****
- ------------------------------------------------------------------------------
- --                                                                          --
- --                         GNAT COMPILER COMPONENTS                         --
- --                                                                          --
- --                              X R E F _ L I B                             --
- --                                                                          --
- --                                 S p e c                                  --
- --                                                                          --
- --          Copyright (C) 1998-2022, Free Software Foundation, Inc.         --
- --                                                                          --
- -- GNAT is free software;  you can  redistribute it  and/or modify it under --
- -- terms of the  GNU General Public License as published  by the Free Soft- --
- -- ware  Foundation;  either version 3,  or (at your option) any later ver- --
- -- sion.  GNAT is distributed in the hope that it will be useful, but WITH- --
- -- OUT 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  distributed with GNAT; see file COPYING3.  If not, go to --
- -- http://www.gnu.org/licenses for a complete copy of the license.          --
- --                                                                          --
- -- GNAT was originally developed  by the GNAT team at  New York University. --
- -- Extensive contributions were provided by Ada Core Technologies Inc.      --
- --                                                                          --
- ------------------------------------------------------------------------------
- 
- --  Miscellaneous utilities for the cross-referencing tool
- 
- with Hostparm;
- with Xr_Tabls;  use Xr_Tabls;
- 
- with GNAT.Directory_Operations; use GNAT.Directory_Operations;
- with GNAT.OS_Lib;               use GNAT.OS_Lib;
- with GNAT.Dynamic_Tables;
- with GNAT.Regexp;               use GNAT.Regexp;
- 
- package Xref_Lib is
- 
-    subtype File_Name_String is String (1 .. Hostparm.Max_Name_Length);
-    subtype Line_String      is String (1 .. Hostparm.Max_Line_Length);
- 
-    type ALI_File is limited private;
- 
-    ---------------------
-    -- Directory Input --
-    ---------------------
- 
-    type Rec_DIR is limited private;
-    --  This one is used for recursive search of .ali files
- 
-    procedure Find_ALI_Files;
-    --  Find all the ali files that we will have to parse, and have them to
-    --  the file list
- 
-    ---------------------
-    -- Search patterns --
-    ---------------------
- 
-    type Search_Pattern is private;
-    type Search_Pattern_Ptr is access all Search_Pattern;
- 
-    procedure Add_Entity
-      (Pattern : in out Search_Pattern;
-       Entity  : String;
-       Glob    : Boolean := False);
-    --  Add a new entity to the search pattern (the entity should have the
-    --  form pattern[:file[:line[:column]]], and it is parsed entirely in
-    --  this procedure. Glob indicates if we should use the 'globbing
-    --  patterns' (True) or the full regular expressions (False)
- 
-    procedure Add_Xref_File (File : String);
-    --  Add a new file in the list of files to search for references. File
-    --  is interpreted as a globbing regular expression, which is expanded.
- 
-    Invalid_Argument : exception;
-    --  Exception raised when there is a syntax error in the command line
- 
-    -----------------------
-    -- Output Algorithms --
-    -----------------------
- 
-    procedure Print_Gnatfind
-      (References     : Boolean;
-       Full_Path_Name : Boolean);
-    procedure Print_Unused (Full_Path_Name : Boolean);
-    procedure Print_Vi     (Full_Path_Name : Boolean);
-    procedure Print_Xref   (Full_Path_Name : Boolean);
-    --  The actual print procedures. These functions step through the symbol
-    --  table and print all the symbols if they match the files given on the
-    --  command line (they already match the entities if they are in the
-    --  symbol table)
- 
-    ------------------------
-    -- General Algorithms --
-    ------------------------
- 
-    function Default_Project_File (Dir_Name : String) return String;
-    --  Returns the default Project file name for the directory Dir_Name
- 
-    procedure Search
-      (Pattern       : Search_Pattern;
-       Local_Symbols : Boolean;
-       Wide_Search   : Boolean;
-       Read_Only     : Boolean;
-       Der_Info      : Boolean;
-       Type_Tree     : Boolean);
-    --  Search every ALI file for entities matching Pattern, and add
-    --  these entities to the internal symbol tables.
-    --
-    --  If Wide_Search is True, all ALI files found in the object path
-    --  are searched.
-    --
-    --  If Read_Only is True, read-only ALI files will also be parsed,
-    --  similar to gnatmake -a.
-    --
-    --  If Der_Info is true, then the derived type information will be
-    --  processed.
-    --
-    --  If Type_Tree is true, then the type hierarchy will be searched
-    --  going from the pattern to the parent type.
- 
-    procedure Search_Xref
-      (Local_Symbols : Boolean;
-       Read_Only     : Boolean;
-       Der_Info      : Boolean);
-    --  Search every ali file given in the command line and all their
-    --  dependencies. If Read_Only is True, we parse the read-only ali
-    --  files too. If Der_Mode is true then the derived type information will
-    --  be processed
- 
- private
-    type Rec_DIR is limited record
-       Dir : GNAT.Directory_Operations.Dir_Type;
-    end record;
- 
-    package Dependencies_Tables is new GNAT.Dynamic_Tables
-      (Table_Component_Type => Xr_Tabls.File_Reference,
-       Table_Index_Type     => Natural,
-       Table_Low_Bound      => 1,
-       Table_Initial        => 400,
-       Table_Increment      => 100);
-    use Dependencies_Tables;
- 
-    type Dependencies is new Dependencies_Tables.Instance;
- 
-    type ALI_File is limited record
-       Buffer : String_Access := null;
-       --  Buffer used to read the whole file at once
- 
-       Current_Line : Positive;
-       --  Start of the current line in Buffer
- 
-       Xref_Line : Positive;
-       --  Start of the xref lines in Buffer
- 
-       X_File : Xr_Tabls.File_Reference;
-       --  Stores the cross-referencing file-name ("X..." lines), as an
-       --  index into the dependencies table
- 
-       Dep : Dependencies;
-       --  Store file name associated with each number ("D..." lines)
-    end record;
- 
-    --  The following record type stores all the patterns that are searched for
- 
-    type Search_Pattern is record
-       Entity : GNAT.Regexp.Regexp;
-       --  A regular expression matching the entities we are looking for.
-       --  File is a list of the places where the declaration of the entities
-       --  has to be. When the user enters a file:line:column on the command
-       --  line, it is stored as "Entity_Name Declaration_File:line:column"
- 
-       File_Ref : Xr_Tabls.File_Reference;
-       --  A reference to the source file, if any
- 
-       Initialized : Boolean := False;
-       --  Set to True when Entity has been initialized
-    end record;
- 
- end Xref_Lib;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/ada/xsnamest.adb gcc-13.1.0/gcc/ada/xsnamest.adb
*** gcc-12.2.0/gcc/ada/xsnamest.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xsnamest.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/xutil.adb gcc-13.1.0/gcc/ada/xutil.adb
*** gcc-12.2.0/gcc/ada/xutil.adb	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xutil.adb	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 B o d y                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/ada/xutil.ads gcc-13.1.0/gcc/ada/xutil.ads
*** gcc-12.2.0/gcc/ada/xutil.ads	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ada/xutil.ads	Wed Apr 26 07:09:39 2023
***************
*** 6,12 ****
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2022, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
--- 6,12 ----
  --                                                                          --
  --                                 S p e c                                  --
  --                                                                          --
! --          Copyright (C) 1992-2023, Free Software Foundation, Inc.         --
  --                                                                          --
  -- GNAT is free software;  you can  redistribute it  and/or modify it under --
  -- terms of the  GNU General Public License as published  by the Free Soft- --
diff -Nrcpad gcc-12.2.0/gcc/addresses.h gcc-13.1.0/gcc/addresses.h
*** gcc-12.2.0/gcc/addresses.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/addresses.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Inline functions to test validity of reg classes for addressing modes.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Inline functions to test validity of reg classes for addressing modes.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 24,30 ****
  #ifndef GCC_ADDRESSES_H
  #define GCC_ADDRESSES_H
  
! static inline enum reg_class
  base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
  		addr_space_t as ATTRIBUTE_UNUSED,
  		enum rtx_code outer_code ATTRIBUTE_UNUSED,
--- 24,30 ----
  #ifndef GCC_ADDRESSES_H
  #define GCC_ADDRESSES_H
  
! inline enum reg_class
  base_reg_class (machine_mode mode ATTRIBUTE_UNUSED,
  		addr_space_t as ATTRIBUTE_UNUSED,
  		enum rtx_code outer_code ATTRIBUTE_UNUSED,
*************** base_reg_class (machine_mode mode ATTRIB
*** 51,57 ****
     REGNO_OK_FOR_BASE_P.
     Arguments as for the REGNO_MODE_CODE_OK_FOR_BASE_P macro.  */
  
! static inline bool
  ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
  		 machine_mode mode ATTRIBUTE_UNUSED,
  		 addr_space_t as ATTRIBUTE_UNUSED,
--- 51,57 ----
     REGNO_OK_FOR_BASE_P.
     Arguments as for the REGNO_MODE_CODE_OK_FOR_BASE_P macro.  */
  
! inline bool
  ok_for_base_p_1 (unsigned regno ATTRIBUTE_UNUSED,
  		 machine_mode mode ATTRIBUTE_UNUSED,
  		 addr_space_t as ATTRIBUTE_UNUSED,
*************** ok_for_base_p_1 (unsigned regno ATTRIBUT
*** 77,83 ****
  /* Wrapper around ok_for_base_p_1, for use after register allocation is
     complete.  Arguments as for the called function.  */
  
! static inline bool
  regno_ok_for_base_p (unsigned regno, machine_mode mode, addr_space_t as,
  		     enum rtx_code outer_code, enum rtx_code index_code)
  {
--- 77,83 ----
  /* Wrapper around ok_for_base_p_1, for use after register allocation is
     complete.  Arguments as for the called function.  */
  
! inline bool
  regno_ok_for_base_p (unsigned regno, machine_mode mode, addr_space_t as,
  		     enum rtx_code outer_code, enum rtx_code index_code)
  {
diff -Nrcpad gcc-12.2.0/gcc/adjust-alignment.cc gcc-13.1.0/gcc/adjust-alignment.cc
*** gcc-12.2.0/gcc/adjust-alignment.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/adjust-alignment.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Adjust alignment for local variable.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Kito Cheng <kito.cheng@sifive.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Adjust alignment for local variable.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Kito Cheng <kito.cheng@sifive.com>
  
  This file is part of GCC.
*************** public:
*** 50,56 ****
      : gimple_opt_pass (pass_data_adjust_alignment, ctxt)
    {}
  
!   virtual unsigned int execute (function *);
  }; // class pass_adjust_alignment
  
  } // anon namespace
--- 50,56 ----
      : gimple_opt_pass (pass_data_adjust_alignment, ctxt)
    {}
  
!   unsigned int execute (function *) final override;
  }; // class pass_adjust_alignment
  
  } // anon namespace
diff -Nrcpad gcc-12.2.0/gcc/alias.cc gcc-13.1.0/gcc/alias.cc
*** gcc-12.2.0/gcc/alias.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/alias.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Alias analysis for GNU C
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by John Carr (jfc@mit.edu).
  
  This file is part of GCC.
--- 1,5 ----
  /* Alias analysis for GNU C
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by John Carr (jfc@mit.edu).
  
  This file is part of GCC.
*************** refs_same_for_tbaa_p (tree earlier, tree
*** 389,394 ****
--- 389,408 ----
  	  || alias_set_subset_of (later_base_set, earlier_base_set));
  }
  
+ /* Similar to refs_same_for_tbaa_p() but for use on MEM rtxs.  */
+ bool
+ mems_same_for_tbaa_p (rtx earlier, rtx later)
+ {
+   gcc_assert (MEM_P (earlier));
+   gcc_assert (MEM_P (later));
+ 
+   return ((MEM_ALIAS_SET (earlier) == MEM_ALIAS_SET (later)
+ 	   || alias_set_subset_of (MEM_ALIAS_SET (later),
+ 				   MEM_ALIAS_SET (earlier)))
+ 	  && (!MEM_EXPR (earlier)
+ 	      || refs_same_for_tbaa_p (MEM_EXPR (earlier), MEM_EXPR (later))));
+ }
+ 
  /* Returns a pointer to the alias set entry for ALIAS_SET, if there is
     such an entry, or NULL otherwise.  */
  
*************** memory_modified_in_insn_p (const_rtx mem
*** 3355,3360 ****
--- 3369,3378 ----
  void
  init_alias_analysis (void)
  {
+   const bool frame_pointer_eliminated
+     = reload_completed
+       && !frame_pointer_needed
+       && targetm.can_eliminate (FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM);
    unsigned int maxreg = max_reg_num ();
    int changed, pass;
    int i;
*************** init_alias_analysis (void)
*** 3432,3443 ****
        for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  	if (static_reg_base_value[i]
  	    /* Don't treat the hard frame pointer as special if we
! 	       eliminated the frame pointer to the stack pointer instead.  */
! 	    && !(i == HARD_FRAME_POINTER_REGNUM
! 		 && reload_completed
! 		 && !frame_pointer_needed
! 		 && targetm.can_eliminate (FRAME_POINTER_REGNUM,
! 					   STACK_POINTER_REGNUM)))
  	  {
  	    new_reg_base_value[i] = static_reg_base_value[i];
  	    bitmap_set_bit (reg_seen, i);
--- 3450,3457 ----
        for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
  	if (static_reg_base_value[i]
  	    /* Don't treat the hard frame pointer as special if we
! 	       eliminated the frame pointer to the stack pointer.  */
! 	    && !(i == HARD_FRAME_POINTER_REGNUM && frame_pointer_eliminated))
  	  {
  	    new_reg_base_value[i] = static_reg_base_value[i];
  	    bitmap_set_bit (reg_seen, i);
*************** init_alias_analysis (void)
*** 3453,3462 ****
  		{
  		  rtx note, set;
  
  		  /* If this insn has a noalias note, process it,  Otherwise,
  		     scan for sets.  A simple set will have no side effects
  		     which could change the base value of any other register.  */
- 
  		  if (GET_CODE (PATTERN (insn)) == SET
  		      && REG_NOTES (insn) != 0
  		      && find_reg_note (insn, REG_NOALIAS, NULL_RTX))
--- 3467,3481 ----
  		{
  		  rtx note, set;
  
+ 		  /* Treat the hard frame pointer as special unless we
+ 		     eliminated the frame pointer to the stack pointer.  */
+ 		  if (!frame_pointer_eliminated
+ 		      && modified_in_p (hard_frame_pointer_rtx, insn))
+ 		    continue;
+ 
  		  /* If this insn has a noalias note, process it,  Otherwise,
  		     scan for sets.  A simple set will have no side effects
  		     which could change the base value of any other register.  */
  		  if (GET_CODE (PATTERN (insn)) == SET
  		      && REG_NOTES (insn) != 0
  		      && find_reg_note (insn, REG_NOALIAS, NULL_RTX))
diff -Nrcpad gcc-12.2.0/gcc/alias.h gcc-13.1.0/gcc/alias.h
*** gcc-12.2.0/gcc/alias.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/alias.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Exported functions from alias.cc
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Exported functions from alias.cc
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** tree reference_alias_ptr_type_1 (tree *)
*** 40,45 ****
--- 40,46 ----
  bool alias_ptr_types_compatible_p (tree, tree);
  int compare_base_decls (tree, tree);
  bool refs_same_for_tbaa_p (tree, tree);
+ bool mems_same_for_tbaa_p (rtx, rtx);
  
  /* This alias set can be used to force a memory to conflict with all
     other memories, creating a barrier across which no memory reference
diff -Nrcpad gcc-12.2.0/gcc/align.h gcc-13.1.0/gcc/align.h
*** gcc-12.2.0/gcc/align.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/align.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Alignment-related classes.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Alignment-related classes.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/alloc-pool.cc gcc-13.1.0/gcc/alloc-pool.cc
*** gcc-12.2.0/gcc/alloc-pool.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/alloc-pool.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions to support a pool of allocatable objects.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Functions to support a pool of allocatable objects.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/alloc-pool.h gcc-13.1.0/gcc/alloc-pool.h
*** gcc-12.2.0/gcc/alloc-pool.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/alloc-pool.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions to support a pool of allocatable objects
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Functions to support a pool of allocatable objects
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Daniel Berlin <dan@cgsoftware.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/ChangeLog gcc-13.1.0/gcc/analyzer/ChangeLog
*** gcc-12.2.0/gcc/analyzer/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/gcc/analyzer/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,13 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	* region.h (code_region::get_element): Remove stray decl.
  	(function_region::get_element): Likewise.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/106225
  	* sm-taint.cc (taint_state_machine::on_stmt): Move handling of
--- 1,2486 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-03-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/109239
! 	* program-point.cc: Include "analyzer/inlining-iterator.h".
! 	(program_point::effectively_intraprocedural_p): New function.
! 	* program-point.h (program_point::effectively_intraprocedural_p):
! 	New decl.
! 	* sm-malloc.cc (deref_before_check::emit): Use it when rejecting
! 	interprocedural cases, so that we reject interprocedural cases
! 	that have become intraprocedural due to inlining.
! 
! 2023-03-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/109094
! 	* region-model.cc (region_model::on_longjmp): Pass false for
! 	new "eval_return_svalue" param of pop_frame.
! 	(region_model::pop_frame): Add new "eval_return_svalue" param and
! 	use it to suppress the call to get_rvalue on the result when
! 	needed by on_longjmp.
! 	* region-model.h (region_model::pop_frame): Add new
! 	"eval_return_svalue" param.
! 
! 2023-03-10  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/109059
! 	* region-model.cc (region_model::mark_region_as_unknown): Gather a
! 	set of maybe-live svalues and call on_maybe_live_values with it.
! 	* store.cc (binding_map::remove_overlapping_bindings): Add new
! 	"maybe_live_values" param; add any removed svalues to it.
! 	(binding_cluster::clobber_region): Add NULL as new param of
! 	remove_overlapping_bindings.
! 	(binding_cluster::mark_region_as_unknown): Add "maybe_live_values"
! 	param and pass it to remove_overlapping_bindings.
! 	(binding_cluster::maybe_get_compound_binding): Add NULL for new
! 	param of binding_map::remove_overlapping_bindings.
! 	(binding_cluster::remove_overlapping_bindings): Add
! 	"maybe_live_values" param and pass to
! 	binding_map::remove_overlapping_bindings.
! 	(store::set_value): Capture a set of maybe-live svalues, and call
! 	on_maybe_live_values with it.
! 	(store::on_maybe_live_values): New.
! 	(store::mark_region_as_unknown): Add "maybe_live_values" param
! 	and pass it to binding_cluster::mark_region_as_unknown.
! 	(store::remove_overlapping_bindings): Pass NULL for new param of
! 	binding_cluster::remove_overlapping_bindings.
! 	* store.h (binding_map::remove_overlapping_bindings): Add
! 	"maybe_live_values" param.
! 	(binding_cluster::mark_region_as_unknown): Likewise.
! 	(binding_cluster::remove_overlapping_bindings): Likewise.
! 	(store::mark_region_as_unknown): Likewise.
! 	(store::on_maybe_live_values): New decl.
! 
! 2023-03-10  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108475
! 	PR analyzer/109060
! 	* sm-malloc.cc (deref_before_check::deref_before_check):
! 	Initialize new field m_deref_expr.  Assert that arg is non-NULL.
! 	(deref_before_check::emit): Reject cases where the spelling of the
! 	thing that was dereferenced differs from that of what is checked,
! 	or if the dereference expression was not found.  Remove code to
! 	handle NULL m_arg.
! 	(deref_before_check::describe_state_change): Remove code to handle
! 	NULL m_arg.
! 	(deref_before_check::describe_final_event): Likewise.
! 	(deref_before_check::sufficiently_similar_p): New.
! 	(deref_before_check::m_deref_expr): New field.
! 	(malloc_state_machine::maybe_complain_about_deref_before_check):
! 	Don't warn if the diag_ptr is NULL.
! 
! 2023-03-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* kf.cc (class kf_sprintf): New.
! 	(register_known_functions): Register it.
! 
! 2023-03-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108968
! 	* region-model.cc (region_model::get_rvalue_1): Handle VAR_DECLs
! 	with a DECL_HARD_REGISTER by returning UNKNOWN.
! 
! 2023-03-02  Hans-Peter Nilsson  <hp@axis.com>
! 
! 	* kf.cc (register_known_functions): Add __errno function for newlib.
! 
! 2023-03-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107565
! 	* region-model.cc (region_model::on_call_pre): Flatten logic by
! 	returning early.  Consolidate logic for detecting const and pure
! 	functions.  When considering whether an unhandled built-in
! 	function has side-effects, consider all kinds of builtin, rather
! 	than just BUILT_IN_NORMAL, and don't require
! 	gimple_builtin_call_types_compatible_p.
! 
! 2023-03-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108935
! 	* infinite-recursion.cc (contains_unknown_p): New.
! 	(sufficiently_different_region_binding_p): New function, splitting
! 	out inner loop from...
! 	(sufficiently_different_p): ...here.  Extend detection of unknown
! 	svalues to also include svalues that contain unknown.  Treat
! 	changes in frames below the entry to the recursion as being
! 	sufficiently different to reject being an infinite recursion.
! 
! 2023-02-21  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108830
! 	* analyzer.opt (fanalyzer-suppress-followups): New option.
! 	* engine.cc (impl_region_model_context::warn): Terminate the path
! 	if the diagnostic's terminate_path_p vfunc returns true and
! 	-fanalyzer-suppress-followups is true (the default).
! 	(impl_sm_context::warn): Likewise, for both overloads.
! 	* pending-diagnostic.h (pending_diagnostic::terminate_path_p): New
! 	vfunc.
! 	* program-state.cc (program_state::on_edge): Terminate the path if
! 	the ctxt requests it during updating the edge.
! 	* region-model.cc (poisoned_value_diagnostic::terminate_path_p):
! 	New vfunc.
! 	* sm-malloc.cc (null_deref::terminate_path_p): New vfunc.
! 	(null_arg::terminate_path_p): New vfunc.
! 
! 2023-02-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108806
! 	* constraint-manager.cc (bounded_range::dump_to_pp): Use
! 	bounded_range::singleton_p.
! 	(constraint_manager::add_bounded_ranges): Handle singleton ranges
! 	by adding an EQ_EXPR constraint.
! 	(constraint_manager::impossible_derived_conditions_p): New.
! 	(constraint_manager::eval_condition): Reject EQ_EXPR when it would
! 	imply impossible derived conditions.
! 	(selftest::test_bits): New.
! 	(selftest::run_constraint_manager_tests): Run it.
! 	* constraint-manager.h (bounded_range::singleton_p): New.
! 	(constraint_manager::impossible_derived_conditions_p): New decl.
! 	* region-model.cc (region_model::get_rvalue_1): Handle
! 	BIT_AND_EXPR, BIT_IOR_EXPR, and BIT_XOR_EXPR.
! 
! 2023-02-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108664
! 	PR analyzer/108666
! 	PR analyzer/108725
! 	* diagnostic-manager.cc (epath_finder::get_best_epath): Add
! 	"target_stmt" param.
! 	(epath_finder::explore_feasible_paths): Likewise.
! 	(epath_finder::process_worklist_item): Likewise.
! 	(saved_diagnostic::calc_best_epath): Pass m_stmt to
! 	epath_finder::get_best_epath.
! 	* engine.cc (feasibility_state::maybe_update_for_edge): Move
! 	per-stmt logic to...
! 	(feasibility_state::update_for_stmt): ...this new function.
! 	* exploded-graph.h (feasibility_state::update_for_stmt): New decl.
! 	* feasible-graph.cc (feasible_node::get_state_at_stmt): New.
! 	* feasible-graph.h: Include "analyzer/exploded-graph.h".
! 	(feasible_node::get_state_at_stmt): New decl.
! 	* infinite-recursion.cc
! 	(infinite_recursion_diagnostic::check_valid_fpath_p): Update for
! 	vfunc signature change.
! 	* pending-diagnostic.h (pending_diagnostic::check_valid_fpath_p):
! 	Convert first param to a reference.  Add stmt param.
! 	* region-model.cc: Include "analyzer/feasible-graph.h".
! 	(poisoned_value_diagnostic::poisoned_value_diagnostic): Add
! 	"check_expr" param.
! 	(poisoned_value_diagnostic::check_valid_fpath_p): New.
! 	(poisoned_value_diagnostic::m_check_expr): New field.
! 	(region_model::check_for_poison): Attempt to supply a check_expr
! 	to the diagnostic
! 	(region_model::deref_rvalue): Add NULL for new check_expr param
! 	of poisoned_value_diagnostic.
! 	(region_model::get_or_create_region_for_heap_alloc): Don't reuse
! 	regions that are marked as TOUCHED.
! 
! 2023-02-10  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108745
! 	* sm-malloc.cc (deref_before_check::emit): Reject the warning if
! 	the check occurs within a macro defintion.
! 
! 2023-02-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108733
! 	* state-purge.cc (get_candidate_for_purging): Add ADDR_EXPR
! 	and MEM_REF.
! 
! 2023-02-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108704
! 	* state-purge.cc (state_purge_per_decl::process_point_backwards):
! 	Don't stop processing the decl if it's fully overwritten by
! 	this stmt if it's also used by this stmt.
! 
! 2023-02-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108661
! 	* sm-fd.cc (class kf_read): New.
! 	(register_known_fd_functions): Register "read".
! 	* sm-file.cc (class kf_fread): Update comment.
! 
! 2023-02-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108633
! 	* sm-fd.cc (fd_state_machine::check_for_fd_attrs): Add missing
! 	"continue".
! 	(fd_state_machine::on_listen): Don't issue phase-mismatch or
! 	type-mismatch warnings for the "invalid" state.
! 
! 2023-02-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108616
! 	* pending-diagnostic.cc (fixup_location_in_macro_p): Add "alloca"
! 	to macros that we shouldn't unwind inside.
! 
! 2023-01-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108524
! 	* analyzer.h (class feasible_node): New forward decl.
! 	* diagnostic-manager.cc (epath_finder::get_best_epath): Add "pd"
! 	param.
! 	(epath_finder::explore_feasible_paths): Likewise.
! 	(epath_finder::process_worklist_item): Likewise.  Use it to call
! 	pending_diagnostic::check_valid_fpath_p on the final fpath to
! 	give pending_diagnostic a way to add additional restrictions on
! 	feasibility.
! 	(saved_diagnostic::calc_best_epath): Pass pending_diagnostic to
! 	epath_finder::get_best_epath.
! 	* infinite-recursion.cc: Include "analyzer/feasible-graph.h".
! 	(infinite_recursion_diagnostic::check_valid_fpath_p): New.
! 	(infinite_recursion_diagnostic::fedge_uses_conjured_svalue_p): New.
! 	(infinite_recursion_diagnostic::expr_uses_conjured_svalue_p): New.
! 	* pending-diagnostic.h (pending_diagnostic::check_valid_fpath_p):
! 	New vfunc.
! 
! 2023-01-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108455
! 	* analyzer.h (class checker_event): New forward decl.
! 	(class state_change_event): Indent.
! 	(class warning_event): New forward decl.
! 	* checker-event.cc (state_change_event::state_change_event): Add
! 	"enode" param.
! 	(warning_event::get_desc): Update for new param of
! 	evdesc::final_event ctor.
! 	* checker-event.h (state_change_event::state_change_event): Add
! 	"enode" param.
! 	(state_change_event::get_exploded_node): New accessor.
! 	(state_change_event::m_enode): New field.
! 	(warning_event::warning_event): New "enode" param.
! 	(warning_event::get_exploded_node): New accessor.
! 	(warning_event::m_enode): New field.
! 	* diagnostic-manager.cc
! 	(state_change_event_creator::on_global_state_change): Pass
! 	src_node to state_change_event ctor.
! 	(state_change_event_creator::on_state_change): Likewise.
! 	(null_assignment_sm_context::set_next_state): Pass NULL for
! 	new param of state_change_event ctor.
! 	* infinite-recursion.cc
! 	(infinite_recursion_diagnostic::add_final_event): Update for new
! 	param of warning_event ctor.
! 	* pending-diagnostic.cc (pending_diagnostic::add_final_event):
! 	Pass enode to warning_event ctor.
! 	* pending-diagnostic.h (evdesc::final_event): Add reference to
! 	warning_event.
! 	* sm-malloc.cc: Include "analyzer/checker-event.h" and
! 	"analyzer/exploded-graph.h".
! 	(deref_before_check::deref_before_check): Initialize new fields.
! 	(deref_before_check::emit): Reject warnings in which we were
! 	unable to determine the enodes of the dereference and the check.
! 	Reject warnings interprocedural warnings. Reject warnings in which
! 	the dereference doesn't dominate the check.
! 	(deref_before_check::describe_state_change): Set m_deref_enode.
! 	(deref_before_check::describe_final_event): Set m_check_enode.
! 	(deref_before_check::m_deref_enode): New field.
! 	(deref_before_check::m_check_enode): New field.
! 
! 2023-01-13  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105273
! 	* region-model.cc (has_nondefault_case_for_value_p): New.
! 	(has_nondefault_cases_for_all_enum_values_p): New.
! 	(region_model::apply_constraints_for_gswitch): Skip
! 	implicitly-created "default" when switching on an enum
! 	and all enum values have non-default cases.
! 	(rejected_default_case::dump_to_pp): New.
! 	* region-model.h (region_model_context::possibly_tainted_p): New
! 	decl.
! 	(class rejected_default_case): New.
! 	* sm-taint.cc (region_model_context::possibly_tainted_p): New.
! 	* supergraph.cc (switch_cfg_superedge::dump_label_to_pp): Dump
! 	when implicitly_created_default_p.
! 	(switch_cfg_superedge::implicitly_created_default_p): New.
! 	* supergraph.h
! 	(switch_cfg_superedge::implicitly_created_default_p): New decl.
! 
! 2023-01-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108252
! 	* kf.cc (class kf_strdup): New.
! 	(class kf_strndup): New.
! 	(register_known_functions): Register them.
! 	* region-model.cc (region_model::on_call_pre): Use
! 	&HEAP_ALLOCATED_REGION for the default result of an external
! 	function with the "malloc" attribute, rather than CONJURED_SVALUE.
! 	(region_model::get_or_create_region_for_heap_alloc): Allow
! 	"size_in_bytes" to be NULL.
! 	* store.cc (store::set_value): When handling *UNKNOWN = VAL,
! 	mark VAL as "maybe bound".
! 
! 2022-12-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106479
! 	* kf.cc (kf_memcpy_memmove::impl_call_pre): Pass in source region
! 	to region_model::check_for_poison.
! 	* region-model-asm.cc (region_model::on_asm_stmt): Pass NULL
! 	region to region_model::check_for_poison.
! 	* region-model.cc (region_model::check_for_poison): Add
! 	"src_region" param, and pass it to poisoned_value_diagnostic.
! 	(region_model::on_assignment): Pass NULL region to
! 	region_model::check_for_poison.
! 	(region_model::get_rvalue): Likewise.
! 	* region-model.h (region_model::check_for_poison): Add
! 	"src_region" param.
! 	* sm-fd.cc (fd_state_machine::on_accept): Pass in source region
! 	to region_model::check_for_poison.
! 	* varargs.cc (kf_va_copy::impl_call_pre): Pass NULL region to
! 	region_model::check_for_poison.
! 	(kf_va_arg::impl_call_pre): Pass in source region to
! 	region_model::check_for_poison.
! 
! 2022-12-14  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108065
! 	* region.cc (decl_region::get_svalue_for_initializer): Bail out to
! 	avoid calling binding_key::make with an empty region.
! 	* store.cc (binding_map::apply_ctor_val_to_range): Likewise.
! 	(binding_map::apply_ctor_pair_to_child_region): Likewise.
! 	(binding_cluster::bind): Likewise.
! 	(binding_cluster::purge_region): Likewise.
! 	(binding_cluster::maybe_get_compound_binding): Likewise.
! 	(binding_cluster::maybe_get_simple_value): Likewise.
! 
! 2022-12-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (class known_function): Expand comment.
! 	* region-model-impl-calls.cc: Rename to...
! 	* kf.cc: ...this.
! 	* known-function-manager.h (class known_function_manager): Add
! 	leading comment.
! 
! 2022-12-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/108003
! 	* call-summary.cc
! 	(call_summary_replay::convert_region_from_summary_1): Convert
! 	heap_regs_in_use from auto_sbitmap to auto_bitmap.
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_region_for_heap_alloc):
! 	Convert from sbitmap to bitmap.
! 	* region-model-manager.h: Likewise.
! 	* region-model.cc
! 	(region_model::get_or_create_region_for_heap_alloc): Convert from
! 	auto_sbitmap to auto_bitmap.
! 	(region_model::get_referenced_base_regions): Likewise.
! 	* region-model.h: Include "bitmap.h" rather than "sbitmap.h".
! 	(region_model::get_referenced_base_regions): Convert from
! 	auto_sbitmap to auto_bitmap.
! 
! 2022-12-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model-impl-calls.cc (class kf_memcpy): Rename to...
! 	(class kf_memcpy_memmove): ...this.
! 	(kf_memcpy::impl_call_pre): Rename to...
! 	(kf_memcpy_memmove::impl_call_pre): ...this, and check the src for
! 	poison.
! 	(register_known_functions): Update for above renaming, and
! 	register BUILT_IN_MEMMOVE and BUILT_IN_MEMMOVE_CHK.
! 
! 2022-12-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107882
! 	* region-model.cc (region_model::get_store_value): Return an
! 	unknown value for empty regions.
! 	(region_model::set_value): Bail on empty regions.
! 	* region.cc (region::empty_p): New.
! 	* region.h (region::empty_p): New decl.
! 	* state-purge.cc (same_binding_p): Bail if either region is empty.
! 	* store.cc (binding_key::make): Assert that a concrete binding's
! 	bit_size must be > 0.
! 	(binding_cluster::mark_region_as_unknown): Bail on empty regions.
! 	(binding_cluster::get_binding): Likewise.
! 	(binding_cluster::remove_overlapping_bindings): Likewise.
! 	(binding_cluster::on_unknown_fncall): Don't conjure values for
! 	empty regions.
! 	(store::fill_region): Bail on empty regions.
! 	* store.h (class concrete_binding): Update comment to reflect that
! 	the range of bits must be non-empty.
! 	(concrete_binding::concrete_binding): Assert that bit range is
! 	non-empty.
! 
! 2022-12-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106325
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_null_ptr): New.
! 	* region-model-manager.h
! 	(region_model_manager::get_or_create_null_ptr): New decl.
! 	* region-model.cc (region_model::on_top_level_param): Add
! 	"nonnull" param and make use of it.
! 	(region_model::push_frame): When handling a top-level entrypoint
! 	to the analysis, determine which params __attribute__((nonnull))
! 	applies to, and pass to on_top_level_param.
! 	* region-model.h (region_model::on_top_level_param): Add "nonnull"
! 	param.
! 
! 2022-12-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (register_known_analyzer_functions): New decl.
! 	(register_known_functions_lang_cp): New decl.
! 	* call-details.cc: New file, split out from
! 	region-model-impl-calls.cc.
! 	* call-details.h: New file, split out from region-model.h.
! 	* call-info.cc: Include "analyzer/call-details.h".
! 	* call-summary.h: Likewise.
! 	* kf-analyzer.cc: New file, split out from
! 	region-model-impl-calls.cc.
! 	* kf-lang-cp.cc: Likewise.
! 	* known-function-manager.cc: Include "analyzer/call-details.h".
! 	* region-model-impl-calls.cc: Move definitions of call_details's
! 	member functions to call-details.cc.  Move class kf_analyzer_* to
! 	kf-analyzer.cc.  Move kf_operator_new and kf_operator_delete to
! 	kf-lang-cp.cc.  Refresh #includes accordingly.
! 	(register_known_functions): Replace registration of __analyzer_*
! 	functions with a call to register_known_analyzer_functions.
! 	Replace registration of C++ support functions with a call to
! 	register_known_functions_lang_cp.
! 	* region-model.h (class call_details): Move to new call-details.h.
! 	* sm-fd.cc: Include "analyzer/call-details.h".
! 	* sm-file.cc: Likewise.
! 	* sm-malloc.cc: Likewise.
! 	* varargs.cc: Likewise.
! 
! 2022-12-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (struct event_loc_info): New forward decl.
! 	* bounds-checking.cc: Use event_loc_info throughout to bundle the
! 	loc, fndecl, depth triples.
! 	* call-info.cc: Likewise.
! 	* checker-event.cc: Likewise.
! 	* checker-event.h (struct event_loc_info): New decl.  Use it
! 	throughout to bundle the loc, fndecl, depth triples.
! 	* checker-path.cc: Likewise.
! 	* checker-path.h: Likewise.
! 	* diagnostic-manager.cc: Likewise.
! 	* engine.cc: Likewise.
! 	* infinite-recursion.cc: Likewise.
! 	* pending-diagnostic.cc: Likewise.
! 	* pending-diagnostic.h: Likewise.
! 	* region-model.cc: Likewise.
! 	* sm-signal.cc: Likewise.
! 	* varargs.cc: Likewise.
! 
! 2022-12-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107851
! 	* analyzer.cc (make_label_text_n): Convert param "n" from int to
! 	unsigned HOST_WIDE_INT.
! 	* analyzer.h (make_label_text_n): Likewise for decl.
! 	* bounds-checking.cc: Include "analyzer/checker-event.h" and
! 	"analyzer/checker-path.h".
! 	(out_of_bounds::add_region_creation_events): New.
! 	(concrete_past_the_end::describe_region_creation_event): Replace
! 	with...
! 	(concrete_past_the_end::add_region_creation_events): ...this.
! 	(symbolic_past_the_end::describe_region_creation_event): Delete.
! 	* checker-event.cc (region_creation_event::region_creation_event):
! 	Update for dropping all member data.
! 	(region_creation_event::get_desc): Delete, splitting out into
! 	region_creation_event_memory_space::get_desc,
! 	region_creation_event_capacity::get_desc, and
! 	region_creation_event_debug::get_desc.
! 	(region_creation_event_memory_space::get_desc): New.
! 	(region_creation_event_capacity::get_desc): New.
! 	(region_creation_event_allocation_size::get_desc): New.
! 	(region_creation_event_debug::get_desc): New.
! 	* checker-event.h: Include "analyzer/program-state.h".
! 	(enum rce_kind): Delete.
! 	(class region_creation_event): Drop all member data.
! 	(region_creation_event::region_creation_event): Make protected.
! 	(region_creation_event::get_desc): Delete.
! 	(class region_creation_event_memory_space): New.
! 	(class region_creation_event_capacity): New.
! 	(class region_creation_event_allocation_size): New.
! 	(class region_creation_event_debug): New.
! 	* checker-path.cc (checker_path::add_region_creation_events): Add
! 	"pd" param.  Call pending_diangnostic::add_region_creation_events.
! 	Update for conversion of RCE_DEBUG to region_creation_event_debug.
! 	* checker-path.h (checker_path::add_region_creation_events): Add
! 	"pd" param.
! 	* diagnostic-manager.cc (diagnostic_manager::build_emission_path):
! 	Pass pending_diagnostic to
! 	emission_path::add_region_creation_events.
! 	(diagnostic_manager::build_emission_path): Pass path_builder to
! 	add_event_on_final_node.
! 	(diagnostic_manager::add_event_on_final_node): Add "pb" param.
! 	Pass pending_diagnostic to
! 	emission_path::add_region_creation_events.
! 	(diagnostic_manager::add_events_for_eedge): Pass
! 	pending_diagnostic to emission_path::add_region_creation_events.
! 	* diagnostic-manager.h
! 	(diagnostic_manager::add_event_on_final_node): Add "pb" param.
! 	* pending-diagnostic.cc
! 	(pending_diagnostic::add_region_creation_events): New.
! 	* pending-diagnostic.h (struct region_creation): Delete.
! 	(pending_diagnostic::describe_region_creation_event): Delete.
! 	(pending_diagnostic::add_region_creation_events): New vfunc.
! 	* region-model.cc: Include "analyzer/checker-event.h" and
! 	"analyzer/checker-path.h".
! 	(dubious_allocation_size::dubious_allocation_size): Initialize
! 	m_has_allocation_event.
! 	(dubious_allocation_size::describe_region_creation_event): Delete.
! 	(dubious_allocation_size::describe_final_event): Update for
! 	replacement of m_allocation_event with m_has_allocation_event.
! 	(dubious_allocation_size::add_region_creation_events): New.
! 	(dubious_allocation_size::m_allocation_event): Replace with...
! 	(dubious_allocation_size::m_has_allocation_event): ...this.
! 
! 2022-12-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107948
! 	* region-model-manager.cc
! 	(region_model_manager::maybe_fold_binop): Fold (0 - VAL) to -VAL.
! 	* region-model.cc (region_model::eval_condition): Handle e.g.
! 	"-X <= 0" as equivalent to X >= 0".
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106626
! 	* bounds-checking.cc
! 	(symbolic_past_the_end::describe_final_event): Delete, moving to
! 	symbolic_buffer_overflow::describe_final_event and
! 	symbolic_buffer_over_read::describe_final_event, eliminating
! 	composition of text strings via "byte_str" and "m_dir_str".
! 	(symbolic_past_the_end::m_dir_str): Delete field.
! 	(symbolic_buffer_overflow::symbolic_buffer_overflow): Drop
! 	m_dir_str.
! 	(symbolic_buffer_overflow::describe_final_event): New, as noted
! 	above.
! 	(symbolic_buffer_over_read::symbolic_buffer_overflow): Drop
! 	m_dir_str.
! 	(symbolic_buffer_over_read::describe_final_event): New, as noted
! 	above.
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* bounds-checking.cc (class out_of_bounds): Split out from...
! 	(class concrete_out_of_bounds): New abstract subclass.
! 	(class past_the_end): Rename to...
! 	(class concrete_past_the_end): ...this, and make a subclass of
! 	concrete_out_of_bounds.
! 	(class buffer_overflow): Rename to...
! 	(class concrete_buffer_overflow): ...this, and make a subclass of
! 	concrete_past_the_end.
! 	(class buffer_over_read): Rename to...
! 	(class concrete_buffer_over_read): ...this, and make a subclass of
! 	concrete_past_the_end.
! 	(class buffer_underwrite): Rename to...
! 	(class concrete_buffer_underwrite): ...this, and make a subclass
! 	of concrete_out_of_bounds.
! 	(class buffer_under_read): Rename to...
! 	(class concrete_buffer_under_read): ...this, and make a subclass
! 	of concrete_out_of_bounds.
! 	(class symbolic_past_the_end): Convert to a subclass of
! 	out_of_bounds.
! 	(symbolic_buffer_overflow::get_kind): New.
! 	(symbolic_buffer_over_read::get_kind): New.
! 	(region_model::check_region_bounds): Update for renamings.
! 	* engine.cc (impl_sm_context::set_next_state): Eliminate
! 	"new_ctxt", passing NULL to get_rvalue instead.
! 	(impl_sm_context::warn): Likewise.
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106626
! 	* bounds-checking.cc (out_of_bounds::get_memory_space): New.
! 	(buffer_overflow::emit): Use it.
! 	(class buffer_overread): Rename to...
! 	(class buffer_over_read): ...this.
! 	(buffer_over_read::emit): Specify which memory space the read is
! 	from, where known.  Change "overread" to "over-read".
! 	(class buffer_underflow): Rename to...
! 	(class buffer_underwrite): ...this.
! 	(buffer_underwrite::emit): Specify which memory space the write is
! 	to, where known.  Change "underflow" to "underwrite".
! 	(class buffer_underread): Rename to...
! 	(class buffer_under_read): Rename to...
! 	(buffer_under_read::emit): Specify which memory space the read is
! 	from, where known.  Change "underread" to "under-read".
! 	(symbolic_past_the_end::get_memory_space): New.
! 	(symbolic_buffer_overflow::emit): Use it.
! 	(class symbolic_buffer_overread): Rename to...
! 	(class symbolic_buffer_over_read): ...this.
! 	(symbolic_buffer_over_read::emit): Specify which memory space the
! 	read is from, where known.  Change "overread" to "over-read".
! 	(region_model::check_symbolic_bounds): Update for class renaming.
! 	(region_model::check_region_bounds): Likewise.
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106626
! 	* bounds-checking.cc (out_of_bounds::maybe_describe_array_bounds):
! 	New.
! 	(buffer_overflow::emit): Call maybe_describe_array_bounds.
! 	(buffer_overread::emit): Likewise.
! 	(buffer_underflow::emit): Likewise.
! 	(buffer_underread::emit): Likewise.
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106626
! 	* bounds-checking.cc (buffer_overflow::emit): Use inform_n.
! 	Update wording to clarify that we're talking about the size of
! 	the bad access, rather than its position.
! 	(buffer_overread::emit): Likewise.
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* bounds-checking.cc: New file, taken from region-model.cc.
! 	* region-model.cc (class out_of_bounds): Move to
! 	bounds-checking.cc.
! 	(class past_the_end): Likewise.
! 	(class buffer_overflow): Likewise.
! 	(class buffer_overread): Likewise.
! 	(class buffer_underflow): Likewise.
! 	(class buffer_underread): Likewise.
! 	(class symbolic_past_the_end): Likewise.
! 	(class symbolic_buffer_overflow): Likewise.
! 	(class symbolic_buffer_overread): Likewise.
! 	(region_model::check_symbolic_bounds): Likewise.
! 	(maybe_get_integer_cst_tree): Likewise.
! 	(region_model::check_region_bounds): Likewise.
! 	* region-model.h: Add comment.
! 
! 2022-12-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107928
! 	* sm-fd.cc (fd_state_machine::on_bind): Handle m_constant_fd in
! 	the "success" outcome.
! 	(fd_state_machine::on_connect): Likewise.
! 	* sm-fd.dot: Add "constant_fd" state and its transitions.
! 
! 2022-11-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model-impl-calls.cc (class kf_fgets): Move to sm-file.cc.
! 	(kf_fgets::impl_call_pre): Likewise.
! 	(class kf_fread): Likewise.
! 	(kf_fread::impl_call_pre): Likewise.
! 	(class kf_getchar): Likewise.
! 	(class kf_stdio_output_fn): Likewise.
! 	(register_known_functions): Move registration of
! 	BUILT_IN_FPRINTF, BUILT_IN_FPRINTF_UNLOCKED, BUILT_IN_FPUTC,
! 	BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED,
! 	BUILT_IN_FWRITE, BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_PRINTF,
! 	BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_PUTC, BUILT_IN_PUTCHAR,
! 	BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTC_UNLOCKED, BUILT_IN_PUTS,
! 	BUILT_IN_PUTS_UNLOCKED, BUILT_IN_VFPRINTF, BUILT_IN_VPRINTF,
! 	"getchar", "fgets", "fgets_unlocked", and "fread" to
! 	register_known_file_functions.
! 	* sm-file.cc (class kf_stdio_output_fn): Move here from
! 	region-model-impl-calls.cc.
! 	(class kf_fgets): Likewise.
! 	(class kf_fread): Likewise.
! 	(class kf_getchar): Likewise.
! 	(register_known_file_functions): Move registration of
! 	BUILT_IN_FPRINTF, BUILT_IN_FPRINTF_UNLOCKED, BUILT_IN_FPUTC,
! 	BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED,
! 	BUILT_IN_FWRITE, BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_PRINTF,
! 	BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_PUTC, BUILT_IN_PUTCHAR,
! 	BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTC_UNLOCKED, BUILT_IN_PUTS,
! 	BUILT_IN_PUTS_UNLOCKED, BUILT_IN_VFPRINTF, BUILT_IN_VPRINTF,
! 	"fgets", "fgets_unlocked", "fread", and "getchar" to here from
! 	register_known_functions.
! 
! 2022-11-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/103546
! 	* analyzer.h (register_known_file_functions): New decl.
! 	* program-state.cc (sm_state_map::replay_call_summary): Rejct
! 	attempts to store sm-state for caller_sval that can't have
! 	associated state.
! 	* region-model-impl-calls.cc (register_known_functions): Call
! 	register_known_file_functions.
! 	* sm-fd.cc (class kf_isatty): New.
! 	(register_known_fd_functions): Register it.
! 	* sm-file.cc (class kf_ferror): New.
! 	(class kf_fileno): New.
! 	(class kf_getc): New.
! 	(register_known_file_functions): New.
! 
! 2022-11-30  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105784
! 	* region-model-manager.cc
! 	(region_model_manager::maybe_fold_binop): For POINTER_PLUS_EXPR,
! 	PLUS_EXPR and MINUS_EXPR, eliminate requirement that the final
! 	type matches that of arg0 in favor of a cast.
! 
! 2022-11-24  Martin Liska  <mliska@suse.cz>
! 
! 	* varargs.cc: Fix Clang warnings.
! 
! 2022-11-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106473
! 	* call-summary.cc
! 	(call_summary_replay::convert_region_from_summary_1): Update for
! 	change to creation of heap-allocated regions.
! 	* program-state.cc (test_program_state_1): Likewise.
! 	(test_program_state_merging): Likewise.
! 	* region-model-impl-calls.cc (kf_calloc::impl_call_pre): Likewise.
! 	(kf_malloc::impl_call_pre): Likewise.
! 	(kf_operator_new::impl_call_pre): Likewise.
! 	(kf_realloc::impl_call_postsuccess_with_move::update_model): Likewise.
! 	* region-model-manager.cc
! 	(region_model_manager::create_region_for_heap_alloc): Convert
! 	to...
! 	(region_model_manager::get_or_create_region_for_heap_alloc):
! 	...this, reusing an existing region if it's unreferenced in the
! 	client state.
! 	* region-model-manager.h (region_model_manager::get_num_regions): New.
! 	 (region_model_manager::create_region_for_heap_alloc): Convert to...
! 	 (region_model_manager::get_or_create_region_for_heap_alloc): ...this.
! 	* region-model.cc (region_to_value_map::can_merge_with_p): Reject
! 	merger when the values are different.
! 	(region_model::create_region_for_heap_alloc): Convert to...
! 	(region_model::get_or_create_region_for_heap_alloc): ...this.
! 	(region_model::get_referenced_base_regions): New.
! 	(selftest::test_state_merging):  Update for change to creation of
! 	heap-allocated regions.
! 	(selftest::test_malloc_constraints): Likewise.
! 	(selftest::test_malloc): Likewise.
! 	* region-model.h: Include "sbitmap.h".
! 	(region_model::create_region_for_heap_alloc): Convert to...
! 	(region_model::get_or_create_region_for_heap_alloc): ...this.
! 	(region_model::get_referenced_base_regions): New decl.
! 	* store.cc (store::canonicalize): Don't purge a heap-allocated region
! 	that's been marked as escaping.
! 
! 2022-11-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (checker_path::inject_any_inlined_call_events):
! 	Don't dump the address of the block when -fdump-noaddr.
! 
! 2022-11-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.h (region_model::on_socket): Delete decl.
! 	(region_model::on_bind): Likewise.
! 	(region_model::on_listen): Likewise.
! 	(region_model::on_accept): Likewise.
! 	(region_model::on_connect): Likewise.
! 	* sm-fd.cc (kf_socket::outcome_of_socket::update_model): Move body
! 	of region_model::on_socket into here, ...
! 	(region_model::on_socket): ...eliminating this function.
! 	(kf_bind::outcome_of_bind::update_model): Likewise for on_bind...
! 	(region_model::on_bind): ...eliminating this function.
! 	(kf_listen::outcome_of_listen::update_model): Likewise fo
! 	on_listen...
! 	(region_model::on_listen): ...eliminating this function.
! 	(kf_accept::outcome_of_accept::update_model): Likewise fo
! 	on_accept...
! 	(region_model::on_accept): ...eliminating this function.
! 	(kf_connect::outcome_of_connect::update_model): Likewise fo
! 	on_connect...
! 	(region_model::on_connect): ...eliminating this function.
! 
! 2022-11-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (register_known_fd_functions): New decl.
! 	* region-model-impl-calls.cc (class kf_accept): Move to sm-fd.cc.
! 	(class kf_bind): Likewise.
! 	(class kf_connect): Likewise.
! 	(class kf_listen): Likewise.
! 	(class kf_pipe): Likewise.
! 	(class kf_socket): Likewise.
! 	(register_known_functions): Remove registration of the above
! 	functions, instead calling register_known_fd_functions.
! 	* sm-fd.cc: Include "analyzer/call-info.h".
! 	(class kf_socket): Move here from region-model-impl-calls.cc.
! 	(class kf_bind): Likewise.
! 	(class kf_listen): Likewise.
! 	(class kf_accept): Likewise.
! 	(class kf_connect): Likewise.
! 	(class kf_pipe): Likewise.
! 	(register_known_fd_functions): New.
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107788
! 	* known-function-manager.cc (known_function_manager::get_match):
! 	Don't look up fndecls by name when they're not in the root
! 	namespace.
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107783
! 	* sm-fd.cc (fd_state_machine::check_for_new_socket_fd): Don't
! 	complain when old state is "fd-constant".
! 	(fd_state_machine::on_listen): Likewise.
! 	(fd_state_machine::on_accept): Likewise.
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107807
! 	* region-model-impl-calls.cc (register_known_functions): Register
! 	"___errno" and "__error" as synonyms  for "__errno_location".
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (class internal_known_function): New.
! 	(register_varargs_builtins): New decl.
! 	* engine.cc (exploded_node::on_stmt_pre): Remove
! 	"out_terminate_path" param from call to region_model::on_stmt_pre.
! 	(feasibility_state::maybe_update_for_edge): Likewise.
! 	* known-function-manager.cc: Include "basic-block.h", "gimple.h",
! 	and "analyzer/region-model.h".
! 	(known_function_manager::known_function_manager): Initialize
! 	m_combined_fns_arr.
! 	(known_function_manager::~known_function_manager): Clean up
! 	m_combined_fns_arr.
! 	(known_function_manager::get_by_identifier): Make const.
! 	(known_function_manager::add): New overloaded definitions for
! 	enum built_in_function and enum internal_fn.
! 	(known_function_manager::get_by_fndecl): Delete.
! 	(known_function_manager::get_match): New.
! 	(known_function_manager::get_internal_fn): New.
! 	(known_function_manager::get_normal_builtin): New.
! 	* known-function-manager.h
! 	(known_function_manager::get_by_identifier): Make private and
! 	add const qualifier.
! 	(known_function_manager::get_by_fndecl): Delete.
! 	(known_function_manager::add): Add overloaded decls for
! 	enum built_in_function name and enum internal_fn.
! 	(known_function_manager::get_match): New decl.
! 	(known_function_manager::get_internal_fn): New decl.
! 	(known_function_manager::get_normal_builtin): New decl.
! 	(known_function_manager::m_combined_fns_arr): New field.
! 	* region-model-impl-calls.cc (call_details::arg_is_size_p): New.
! 	(class kf_alloca): New.
! 	(region_model::impl_call_alloca): Convert to...
! 	(kf_alloca::impl_call_pre): ...this.
! 	(kf_analyzer_dump_capacity::matches_call_types_p): Rewrite check
! 	to use call_details::arg_is_pointer_p.
! 	(region_model::impl_call_builtin_expect): Convert to...
! 	(class kf_expect): ...this.
! 	(class kf_calloc): New, adding check that both arguments are
! 	size_t.
! 	(region_model::impl_call_calloc): Convert to...
! 	(kf_calloc::impl_call_pre): ...this.
! 	(kf_connect::matches_call_types_p): Rewrite check to use
! 	call_details::arg_is_pointer_p.
! 	(region_model::impl_call_error): Convert to...
! 	(class kf_error): ...this, and...
! 	(kf_error::impl_call_pre): ...this.
! 	(class kf_fgets): New, adding checks that args 0 and 2 are
! 	pointers.
! 	(region_model::impl_call_fgets): Convert to...
! 	(kf_fgets::impl_call_pre): ...this.
! 	(class kf_fread): New, adding checks on the argument types.
! 	(region_model::impl_call_fread): Convert to...
! 	(kf_fread::impl_call_pre): ...this.
! 	(class kf_free): New, adding check that the argument is a pointer.
! 	(region_model::impl_call_free): Convert to...
! 	(kf_free::impl_call_post): ...this.
! 	(class kf_getchar): New.
! 	(class kf_malloc): New, adding check that the argument is a
! 	size_t.
! 	(region_model::impl_call_malloc): Convert to...
! 	(kf_malloc::impl_call_pre): ...this.
! 	(class kf_memcpy): New, adding checks on arguments.
! 	(region_model::impl_call_memcpy): Convert to...
! 	(kf_memcpy::impl_call_pre): ...this.
! 	(class kf_memset): New.
! 	(region_model::impl_call_memset): Convert to...
! 	(kf_memset::impl_call_pre): ...this.
! 	(kf_pipe::matches_call_types_p): Rewrite check to use
! 	call_details::arg_is_pointer_p.
! 	(kf_putenv::matches_call_types_p): Likewise.
! 	(class kf_realloc): New, adding checks on the argument types.
! 	(region_model::impl_call_realloc): Convert to...
! 	(kf_realloc::impl_call_post): ...this.
! 	(class kf_strchr): New.
! 	(region_model::impl_call_strchr): Convert to...
! 	(kf_strchr::impl_call_post): ...this.
! 	(class kf_stack_restore): New.
! 	(class kf_stack_save): New.
! 	(class kf_stdio_output_fn): New.
! 	(class kf_strcpy): New,
! 	(region_model::impl_call_strcpy): Convert to...
! 	(kf_strcpy::impl_call_pre): ...this.
! 	(class kf_strlen): New.
! 	(region_model::impl_call_strlen): Convert to...
! 	(kf_strlen::impl_call_pre): ...this.
! 	(class kf_ubsan_bounds): New.
! 	(region_model::impl_deallocation_call): Reimplement to avoid call
! 	to impl_call_free.
! 	(register_known_functions): Add handlers for IFN_BUILTIN_EXPECT
! 	and IFN_UBSAN_BOUNDS.  Add handlers for BUILT_IN_ALLOCA,
! 	BUILT_IN_ALLOCA_WITH_ALIGN, BUILT_IN_CALLOC, BUILT_IN_EXPECT,
! 	BUILT_IN_EXPECT_WITH_PROBABILITY, BUILT_IN_FPRINTF,
! 	BUILT_IN_FPRINTF_UNLOCKED, BUILT_IN_FPUTC,
! 	BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS, BUILT_IN_FPUTS_UNLOCKED,
! 	BUILT_IN_FREE, BUILT_IN_FWRITE, BUILT_IN_FWRITE_UNLOCKED,
! 	BUILT_IN_MALLOC, BUILT_IN_MEMCPY, BUILT_IN_MEMCPY_CHK,
! 	BUILT_IN_MEMSET, BUILT_IN_MEMSET_CHK, BUILT_IN_PRINTF,
! 	BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_PUTC, BUILT_IN_PUTCHAR,
! 	BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTC_UNLOCKED, BUILT_IN_PUTS,
! 	BUILT_IN_PUTS_UNLOCKED, BUILT_IN_REALLOC, BUILT_IN_STACK_RESTORE,
! 	BUILT_IN_STACK_SAVE, BUILT_IN_STRCHR, BUILT_IN_STRCPY,
! 	BUILT_IN_STRCPY_CHK, BUILT_IN_STRLEN, BUILT_IN_VFPRINTF, and
! 	BUILT_IN_VPRINTF. Call register_varargs_builtins.  Add handlers
! 	for "getchar", "memset", "fgets", "fgets_unlocked", "fread",
! 	"error", and "error_at_line".
! 	* region-model.cc (region_model::on_stmt_pre): Drop
! 	"out_terminate_path" param.
! 	(region_model::get_known_function): Reimplement by calling
! 	known_function_manager::get_match, passing new "cd" param.
! 	Add overload taking enum internal_fn.
! 	(region_model::on_call_pre): Drop "out_terminate_path" param.
! 	Remove special-case handling of internal fns IFN_BUILTIN_EXPECT,
! 	IFN_UBSAN_BOUNDS, and IFN_VA_ARG, of built-in fns BUILT_IN_ALLOCA,
! 	BUILT_IN_ALLOCA_WITH_ALIGN, BUILT_IN_CALLOC, BUILT_IN_EXPECT,
! 	BUILT_IN_EXPECT_WITH_PROBABILITY, BUILT_IN_FREE, BUILT_IN_MALLOC,
! 	BUILT_IN_MEMCPY, BUILT_IN_MEMCPY_CHK, BUILT_IN_MEMSET,
! 	BUILT_IN_MEMSET_CHK, BUILT_IN_REALLOC, BUILT_IN_STRCHR,
! 	BUILT_IN_STRCPY, BUILT_IN_STRCPY_CHK, BUILT_IN_STRLEN,
! 	BUILT_IN_STACK_SAVE, BUILT_IN_STACK_RESTORE, BUILT_IN_FPRINTF,
! 	BUILT_IN_FPRINTF_UNLOCKED, BUILT_IN_PUTC, BUILT_IN_PUTC_UNLOCKED,
! 	BUILT_IN_FPUTC, BUILT_IN_FPUTC_UNLOCKED, BUILT_IN_FPUTS,
! 	BUILT_IN_FPUTS_UNLOCKED, BUILT_IN_FWRITE,
! 	BUILT_IN_FWRITE_UNLOCKED, BUILT_IN_PRINTF,
! 	BUILT_IN_PRINTF_UNLOCKED, BUILT_IN_PUTCHAR,
! 	BUILT_IN_PUTCHAR_UNLOCKED, BUILT_IN_PUTS, BUILT_IN_PUTS_UNLOCKED,
! 	BUILT_IN_VFPRINTF, BUILT_IN_VPRINTF, BUILT_IN_VA_START, and
! 	BUILT_IN_VA_COPY, and of named functions "malloc", "calloc",
! 	"alloca", "realloc", "error", "error_at_line", "fgets",
! 	"fgets_unlocked", "fread", "getchar", "memset", "strchr", and
! 	"strlen".  Replace all this special-casing with calls to
! 	get_known_function for internal fns and for fn decls.
! 	(region_model::on_call_post): Remove special-casing handling for
! 	"free" and "strchr", and for BUILT_IN_REALLOC, BUILT_IN_STRCHR,
! 	and BUILT_IN_VA_END.  Replace by consolidating on usage of
! 	get_known_function.
! 	* region-model.h (call_details::arg_is_size_p): New.
! 	(region_model::on_stmt_pre): Drop "out_terminate_path" param.
! 	(region_model::on_call_pre): Likewise.
! 	(region_model::impl_call_alloca): Delete.
! 	(region_model::impl_call_builtin_expect): Delete.
! 	(region_model::impl_call_calloc): Delete.
! 	(region_model::impl_call_error): Delete.
! 	(region_model::impl_call_fgets): Delete.
! 	(region_model::impl_call_fread): Delete.
! 	(region_model::impl_call_free): Delete.
! 	(region_model::impl_call_malloc): Delete.
! 	(region_model::impl_call_memcpy): Delete.
! 	(region_model::impl_call_memset): Delete.
! 	(region_model::impl_call_realloc): Delete.
! 	(region_model::impl_call_strchr): Delete.
! 	(region_model::impl_call_strcpy): Delete.
! 	(region_model::impl_call_strlen): Delete.
! 	(region_model::impl_call_va_start): Delete.
! 	(region_model::impl_call_va_copy): Delete.
! 	(region_model::impl_call_va_arg): Delete.
! 	(region_model::impl_call_va_end): Delete.
! 	(region_model::check_region_for_write): Public.
! 	(region_model::get_known_function): Add "cd" param.  Add
! 	overloaded decl taking enum internal_fn.
! 	* sm-malloc.cc: Update comments.
! 	* varargs.cc (class kf_va_start): New.
! 	(region_model::impl_call_va_start): Convert to...
! 	(kf_va_start::impl_call_pre): ...this.
! 	(class kf_va_copy): New.
! 	(region_model::impl_call_va_copy): Convert to...
! 	(kf_va_copy::impl_call_pre): ...this.
! 	(class kf_va_arg): New.
! 	(region_model::impl_call_va_arg): Convert to...
! 	(kf_va_arg::impl_call_pre): ...this.
! 	(class kf_va_end): New.
! 	(region_model::impl_call_va_end): Delete.
! 	(register_varargs_builtins): New.
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107788
! 	* region-model.cc (region_model::update_for_int_cst_return):
! 	Require that the return type be an integer type.
! 	(region_model::update_for_nonzero_return): Likewise.
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107783
! 	* region-model-impl-calls.cc (kf_accept::matches_call_types_p):
! 	Require that args 1 and 2 be pointers.
! 	(kf_bind::matches_call_types_p): Require that arg 1 be a pointer.
! 	* region-model.h (call_details::arg_is_pointer_p): New
! 
! 2022-11-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107777
! 	* call-summary.cc
! 	(call_summary_replay::convert_region_from_summary_1): Handle
! 	RK_THREAD_LOCAL and RK_ERRNO in switch.
! 	* region-model.cc (region_model::get_representative_path_var_1):
! 	Likewise.
! 
! 2022-11-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107582
! 	* engine.cc (dynamic_call_info_t::update_model): Update the model
! 	by pushing or pop a frame, rather than by clobbering it with the
! 	model from the exploded_node's state.
! 
! 2022-11-18  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.cc (is_pipe_call_p): Delete.
! 	* analyzer.h (is_pipe_call_p): Delete.
! 	* region-model-impl-calls.cc (call_details::get_location): New.
! 	(class kf_analyzer_break): New, adapted from
! 	region_model::on_stmt_pre.
! 	(region_model::impl_call_analyzer_describe): Convert to...
! 	(class kf_analyzer_describe): ...this.
! 	(region_model::impl_call_analyzer_dump_capacity): Convert to...
! 	(class kf_analyzer_dump_capacity): ...this.
! 	(region_model::impl_call_analyzer_dump_escaped): Convert to...
! 	(class kf_analyzer_dump_escaped): ...this.
! 	(class kf_analyzer_dump_exploded_nodes): New.
! 	(region_model::impl_call_analyzer_dump_named_constant): Convert
! 	to...
! 	(class kf_analyzer_dump_named_constant): ...this.
! 	(class dump_path_diagnostic): Move here from region-model.cc.
! 	(class kf_analyzer_dump_path) New, adapted from
! 	region_model::on_stmt_pre.
! 	(class kf_analyzer_dump_region_model): Likewise.
! 	(region_model::impl_call_analyzer_eval): Convert to...
! 	(class kf_analyzer_eval): ...this.
! 	(region_model::impl_call_analyzer_get_unknown_ptr): Convert to...
! 	(class kf_analyzer_get_unknown_ptr): ...this.
! 	(class known_function_accept): Rename to...
! 	(class kf_accept): ...this.
! 	(class known_function_bind): Rename to...
! 	(class kf_bind): ...this.
! 	(class known_function_connect): Rename to...
! 	(class kf_connect): ...this.
! 	(region_model::impl_call_errno_location): Convert to...
! 	(class kf_errno_location): ...this.
! 	(class known_function_listen): Rename to...
! 	(class kf_listen): ...this.
! 	(region_model::impl_call_pipe): Convert to...
! 	(class kf_pipe): ...this.
! 	(region_model::impl_call_putenv): Convert to...
! 	(class kf_putenv): ...this.
! 	(region_model::impl_call_operator_new): Convert to...
! 	(class kf_operator_new): ...this.
! 	(region_model::impl_call_operator_delete): Convert to...
! 	(class kf_operator_delete): ...this.
! 	(class known_function_socket): Rename to...
! 	(class kf_socket): ...this.
! 	(register_known_functions): Rename param to KFM.  Break out
! 	existing known functions into a "POSIX" section, and add "pipe",
! 	"pipe2", and "putenv".  Add debugging functions
! 	"__analyzer_break", "__analyzer_describe",
! 	"__analyzer_dump_capacity", "__analyzer_dump_escaped",
! 	"__analyzer_dump_exploded_nodes",
! 	"__analyzer_dump_named_constant", "__analyzer_dump_path",
! 	"__analyzer_dump_region_model", "__analyzer_eval",
! 	"__analyzer_get_unknown_ptr".  Add C++ support functions
! 	"operator new", "operator new []", "operator delete", and
! 	"operator delete []".
! 	* region-model.cc (class dump_path_diagnostic): Move to
! 	region-model-impl-calls.cc.
! 	(region_model::on_stmt_pre): Eliminate special-casing of
! 	"__analyzer_describe", "__analyzer_dump_capacity",
! 	"__analyzer_dump_escaped", "__analyzer_dump_named_constant",
! 	"__analyzer_dump_path", "__analyzer_dump_region_model",
! 	"__analyzer_eval", "__analyzer_break",
! 	"__analyzer_dump_exploded_nodes", "__analyzer_get_unknown_ptr",
! 	"__errno_location", "pipe", "pipe2", "putenv", "operator new",
! 	"operator new []", "operator delete", "operator delete []"
! 	"pipe" and "pipe2", handling them instead via the known_functions
! 	mechanism.
! 	* region-model.h (call_details::get_location): New decl.
! 	(region_model::impl_call_analyzer_describe): Delete decl.
! 	(region_model::impl_call_analyzer_dump_capacity): Delete decl.
! 	(region_model::impl_call_analyzer_dump_escaped): Delete decl.
! 	(region_model::impl_call_analyzer_dump_named_constant): Delete decl.
! 	(region_model::impl_call_analyzer_eval): Delete decl.
! 	(region_model::impl_call_analyzer_get_unknown_ptr): Delete decl.
! 	(region_model::impl_call_errno_location): Delete decl.
! 	(region_model::impl_call_pipe): Delete decl.
! 	(region_model::impl_call_putenv): Delete decl.
! 	(region_model::impl_call_operator_new): Delete decl.
! 	(region_model::impl_call_operator_delete): Delete decl.
! 	* sm-fd.cc: Update comments.
! 
! 2022-11-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107711
! 	* analyzer-language.cc: Include "diagnostic.h".
! 	(maybe_stash_named_constant): Add logger param and use it to log
! 	the name being looked up, and the result.
! 	(stash_named_constants): New, splitting out from...
! 	(on_finish_translation_unit): ...this function.  Call
! 	get_or_create_logfile and use the result to create a logger
! 	instance, passing it to stash_named_constants.
! 	* analyzer.h (get_or_create_any_logfile): New decl.
! 	* engine.cc (dump_fout, owns_dump_fout): New globals, split out
! 	from run_checkers.
! 	(get_or_create_any_logfile): New function, split out from...
! 	(run_checkers): ...here, so that the logfile can be opened by
! 	on_finish_translation_unit.  Clear the globals when closing the
! 	dump file.
! 
! 2022-11-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (known_function::matches_call_types_p): New vfunc.
! 	(known_function::impl_call_pre): Provide base implementation.
! 	(known_function::impl_call_post): New vfunc.
! 	(register_known_functions): New.
! 	* engine.cc (impl_run_checkers): Call register_known_functions.
! 	* region-model-impl-calls.cc (region_model::impl_call_accept):
! 	Convert to...
! 	(class known_function_accept): ...this.
! 	(region_model::impl_call_bind): Convert to...
! 	(class known_function_bind): ...this.
! 	(region_model::impl_call_connect): Convert to...
! 	(class known_function_connect): ...this.
! 	(region_model::impl_call_listen): Convert to...
! 	(class known_function_listen): ...this.
! 	(region_model::impl_call_socket): Convert to...
! 	(class known_function_socket): ...this.
! 	(register_known_functions): New.
! 	* region-model.cc (region_model::on_call_pre): Remove special
! 	case for "bind" in favor of the known_function-handling dispatch.
! 	Add call to known_function::matches_call_types_p to latter.
! 	(region_model::on_call_post): Remove special cases for "accept",
! 	"bind", "connect", "listen", and "socket" in favor of dispatch
! 	to known_function::impl_call_post.
! 	* region-model.h (region_model::impl_call_accept): Delete decl.
! 	(region_model::impl_call_bind): Delete decl.
! 	(region_model::impl_call_connect): Delete decl.
! 	(region_model::impl_call_listen): Delete decl.
! 	(region_model::impl_call_socket): Delete decl.
! 	* sm-fd.cc: Update comments.
! 
! 2022-11-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-event.cc: New file, split out from...
! 	* checker-path.cc: ...this file.
! 
! 2022-11-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106140
! 	* analyzer-language.cc (on_finish_translation_unit): Stash named
! 	constants "SOCK_STREAM" and "SOCK_DGRAM".
! 	* analyzer.opt (Wanalyzer-fd-phase-mismatch): New.
! 	(Wanalyzer-fd-type-mismatch): New.
! 	* engine.cc (impl_region_model_context::get_state_map_by_name):
! 	Add "out_sm_context" param.  Allow out_sm_idx to be NULL.
! 	* exploded-graph.h
! 	(impl_region_model_context::get_state_map_by_name):
! 	Add "out_sm_context" param.
! 	* region-model-impl-calls.cc (region_model::impl_call_accept): New.
! 	(region_model::impl_call_bind): New.
! 	(region_model::impl_call_connect): New.
! 	(region_model::impl_call_listen): New.
! 	(region_model::impl_call_socket): New.
! 	* region-model.cc (region_model::on_call_pre): Special-case
! 	"bind".
! 	(region_model::on_call_post): Special-case "accept", "bind",
! 	"connect", "listen", and "socket".
! 	* region-model.h (region_model::impl_call_accept): New decl.
! 	(region_model::impl_call_bind): New decl.
! 	(region_model::impl_call_connect): New decl.
! 	(region_model::impl_call_listen): New decl.
! 	(region_model::impl_call_socket): New decl.
! 	(region_model::on_socket): New decl.
! 	(region_model::on_bind): New decl.
! 	(region_model::on_listen): New decl.
! 	(region_model::on_accept): New decl.
! 	(region_model::on_connect): New decl.
! 	(region_model::add_constraint): Make public.
! 	(region_model::check_for_poison): Make public.
! 	(region_model_context::get_state_map_by_name): Add out_sm_context param.
! 	(region_model_context::get_fd_map): Likewise.
! 	(region_model_context::get_malloc_map): Likewise.
! 	(region_model_context::get_taint_map): Likewise.
! 	(noop_region_model_context::get_state_map_by_name): Likewise.
! 	(region_model_context_decorator::get_state_map_by_name): Likewise.
! 	* sm-fd.cc: Include "analyzer/supergraph.h" and
! 	"analyzer/analyzer-language.h".
! 	(enum expected_phase): New enum.
! 	(fd_state_machine::m_new_datagram_socket): New.
! 	(fd_state_machine::m_new_stream_socket): New.
! 	(fd_state_machine::m_new_unknown_socket): New.
! 	(fd_state_machine::m_bound_datagram_socket): New.
! 	(fd_state_machine::m_bound_stream_socket): New.
! 	(fd_state_machine::m_bound_unknown_socket): New.
! 	(fd_state_machine::m_listening_stream_socket): New.
! 	(fd_state_machine::m_m_connected_stream_socket): New.
! 	(fd_state_machine::m_SOCK_STREAM): New.
! 	(fd_state_machine::m_SOCK_DGRAM): New.
! 	(fd_diagnostic::describe_state_change): Handle socket states.
! 	(fd_diagnostic::get_meaning_for_state_change): Likewise.
! 	(class fd_phase_mismatch): New.
! 	(enum expected_type): New enum.
! 	(class fd_type_mismatch): New.
! 	(fd_state_machine::fd_state_machine): Initialize new states and
! 	stashed named constants.
! 	(fd_state_machine::is_socket_fd_p): New.
! 	(fd_state_machine::is_datagram_socket_fd_p): New.
! 	(fd_state_machine::is_stream_socket_fd_p): New.
! 	(fd_state_machine::on_close): Handle the socket states.
! 	(fd_state_machine::check_for_open_fd): Complain about fncalls on
! 	sockets in the wrong phase.  Support socket FDs.
! 	(add_constraint_ge_zero): New.
! 	(fd_state_machine::get_state_for_socket_type): New.
! 	(fd_state_machine::on_socket): New.
! 	(fd_state_machine::check_for_socket_fd): New.
! 	(fd_state_machine::check_for_new_socket_fd): New.
! 	(fd_state_machine::on_bind): New.
! 	(fd_state_machine::on_listen): New.
! 	(fd_state_machine::on_accept): New.
! 	(fd_state_machine::on_connect): New.
! 	(fd_state_machine::can_purge_p): Don't purge socket values.
! 	(get_fd_state): New.
! 	(region_model::mark_as_valid_fd): Use get_fd_state.
! 	(region_model::on_socket): New.
! 	(region_model::on_bind): New.
! 	(region_model::on_listen): New.
! 	(region_model::on_accept): New.
! 	(region_model::on_connect): New.
! 	* sm-fd.dot: Update to reflect sm-fd.cc changes.
! 
! 2022-11-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106302
! 	* analyzer-language.cc: New file.
! 	* analyzer-language.h: New file.
! 	* analyzer.h (get_stashed_constant_by_name): New decl.
! 	(log_stashed_constants): New decl.
! 	* engine.cc (impl_run_checkers): Call log_stashed_constants.
! 	* region-model-impl-calls.cc
! 	(region_model::impl_call_analyzer_dump_named_constant): New.
! 	* region-model.cc (region_model::on_stmt_pre): Handle
! 	__analyzer_dump_named_constant.
! 	* region-model.h
! 	(region_model::impl_call_analyzer_dump_named_constant): New decl.
! 	* sm-fd.cc (fd_state_machine::m_O_ACCMODE): New.
! 	(fd_state_machine::m_O_RDONLY): New.
! 	(fd_state_machine::m_O_WRONLY): New.
! 	(fd_state_machine::fd_state_machine): Initialize the new fields.
! 	(fd_state_machine::get_access_mode_from_flag): Use the new fields,
! 	rather than using the host values.
! 
! 2022-11-13  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106235
! 	* analyzer.opt (Wanalyzer-tainted-assertion): New.
! 	* checker-path.cc (checker_path::fixup_locations): Pass false to
! 	pending_diagnostic::fixup_location.
! 	* diagnostic-manager.cc (get_emission_location): Pass true to
! 	pending_diagnostic::fixup_location.
! 	* pending-diagnostic.cc (pending_diagnostic::fixup_location): Add
! 	bool param.
! 	* pending-diagnostic.h (pending_diagnostic::fixup_location): Add
! 	bool param to decl.
! 	* sm-taint.cc (taint_state_machine::m_tainted_control_flow): New.
! 	(taint_diagnostic::describe_state_change): Drop "final".
! 	(class tainted_assertion): New.
! 	(taint_state_machine::taint_state_machine): Initialize
! 	m_tainted_control_flow.
! 	(taint_state_machine::alt_get_inherited_state): Support
! 	comparisons being tainted, based on their arguments.
! 	(is_assertion_failure_handler_p): New.
! 	(taint_state_machine::on_stmt): Complain about calls to assertion
! 	failure handlers guarded by an attacker-controller conditional.
! 	Detect attacker-controlled gcond conditionals and gswitch index
! 	values.
! 	(taint_state_machine::check_control_flow_arg_for_taint): New.
! 
! 2022-11-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-fd.dot: Fix typo in comment.
! 	* sm-file.dot: New file.
! 	* varargs.cc: Fix typo in comment.
! 	* varargs.dot: New file.
! 
! 2022-11-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.h: Split out checker_event and its subclasses to...
! 	* checker-event.h: ...this new header.
! 
! 2022-11-11  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106147
! 	* analyzer.opt (Wanalyzer-infinite-recursion): New.
! 	* call-string.cc (call_string::count_occurrences_of_function):
! 	New.
! 	* call-string.h (call_string::count_occurrences_of_function): New
! 	decl.
! 	* checker-path.cc (function_entry_event::function_entry_event):
! 	New ctor.
! 	(checker_path::add_final_event): Delete.
! 	* checker-path.h (function_entry_event::function_entry_event): New
! 	ctor.
! 	(function_entry_event::get_desc): Drop "final".
! 	(checker_path::add_final_event): Delete.
! 	* diagnostic-manager.cc
! 	(diagnostic_manager::emit_saved_diagnostic): Create the final
! 	event via a new pending_diagnostic::add_final_event vfunc, rather
! 	than checker_path::add_final_event.
! 	(diagnostic_manager::add_events_for_eedge): Create function entry
! 	events via a new pending_diagnostic::add_function_entry_event
! 	vfunc.
! 	* engine.cc (exploded_graph::process_node): When creating a new
! 	PK_BEFORE_SUPERNODE node, call
! 	exploded_graph::detect_infinite_recursion on it after adding the
! 	in-edge.
! 	* exploded-graph.h (exploded_graph::detect_infinite_recursion):
! 	New decl.
! 	(exploded_graph::find_previous_entry_to): New decl.
! 	* infinite-recursion.cc: New file.
! 	* pending-diagnostic.cc
! 	(pending_diagnostic::add_function_entry_event): New.
! 	(pending_diagnostic::add_final_event): New.
! 	* pending-diagnostic.h
! 	(pending_diagnostic::add_function_entry_event): New vfunc.
! 	(pending_diagnostic::add_final_event): New vfunc.
! 
! 2022-11-10  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/99671
! 	* analyzer.opt (Wanalyzer-deref-before-check): New warning.
! 	* diagnostic-manager.cc
! 	(null_assignment_sm_context::set_next_state): Only add state
! 	change events for transition to "null" state.
! 	(null_assignment_sm_context::is_transition_to_null): New.
! 	* engine.cc (impl_region_model_context::on_pop_frame): New.
! 	* exploded-graph.h (impl_region_model_context::on_pop_frame): New
! 	decl.
! 	* program-state.cc (sm_state_map::clear_any_state): New.
! 	(sm_state_map::can_merge_with_p): New.
! 	(program_state::can_merge_with_p): Replace requirement that
! 	sm-states be equal in favor of an attempt to merge them.
! 	* program-state.h (sm_state_map::clear_any_state): New decl.
! 	(sm_state_map::can_merge_with_p): New decl.
! 	* region-model.cc (region_model::eval_condition): Make const.
! 	(region_model::pop_frame): Call ctxt->on_pop_frame.
! 	* region-model.h (region_model::eval_condition): Make const.
! 	(region_model_context::on_pop_frame): New vfunc.
! 	(noop_region_model_context::on_pop_frame): New.
! 	(region_model_context_decorator::on_pop_frame): New.
! 	* sm-malloc.cc (enum resource_state): Add RS_ASSUMED_NON_NULL.
! 	(allocation_state::dump_to_pp): Drop "final".
! 	(struct assumed_non_null_state): New subclass.
! 	(malloc_state_machine::m_assumed_non_null): New.
! 	(assumed_non_null_p): New.
! 	(class deref_before_check): New.
! 	(assumed_non_null_state::dump_to_pp): New.
! 	(malloc_state_machine::get_or_create_assumed_non_null_state_for_frame):
! 	New.
! 	(malloc_state_machine::maybe_assume_non_null): New.
! 	(malloc_state_machine::on_stmt): Transition from start state to
! 	"assumed-non-null" state for pointers passed to
! 	__attribute__((nonnull)) arguments, and for pointers explicitly
! 	dereferenced.  Call maybe_complain_about_deref_before_check for
! 	pointers explicitly compared against NULL.
! 	(malloc_state_machine::maybe_complain_about_deref_before_check):
! 	New.
! 	(malloc_state_machine::on_deallocator_call): Also transition
! 	"assumed-non-null" states to "freed".
! 	(malloc_state_machine::on_pop_frame): New.
! 	(malloc_state_machine::maybe_get_merged_states_nonequal): New.
! 	* sm-malloc.dot: Update for changes to sm-malloc.cc.
! 	* sm.h (state_machine::on_pop_frame): New.
! 	(state_machine::maybe_get_merged_state): New.
! 	(state_machine::maybe_get_merged_states_nonequal): New.
! 
! 2022-11-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (checker_event::debug): New.
! 	(checker_path::add_event): Move here from checker-path.h.  Add
! 	logging.
! 	* checker-path.h (checker_event::debug): New decl.
! 	(checker_path::checker_path): Add logger param.
! 	(checker_path::add_event): Move definition from here to
! 	checker-path.cc.
! 	(checker_path::m_logger): New field.
! 	* diagnostic-manager.cc
! 	(diagnostic_manager::emit_saved_diagnostic): Pass logger to
! 	checker_path ctor.
! 	(diagnostic_manager::add_events_for_eedge): Log scope when
! 	processing a run of stmts.
! 
! 2022-11-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/101962
! 	* region-model-impl-calls.cc: Update comment.
! 	* region-model.cc (region_model::check_symbolic_bounds): Fix
! 	layout of "void" return.  Replace usage of
! 	eval_condition_without_cm with eval_condition.
! 	(region_model::eval_condition): Take over body of...
! 	(region_model::eval_condition_without_cm): ...this subroutine,
! 	dropping the latter.  Eliminating this distinction avoids issues
! 	where constraints were not considered when recursing.
! 	(region_model::compare_initial_and_pointer): Update comment.
! 	(region_model::symbolic_greater_than): Replace usage of
! 	eval_condition_without_cm with eval_condition.
! 	* region-model.h
! 	(region_model::eval_condition_without_cm): Delete decl.
! 
! 2022-11-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model-impl-calls.cc
! 	(region_model::impl_call_errno_location): New.
! 	* region-model-manager.cc
! 	(region_model_manager::region_model_manager): Initialize
! 	m_thread_local_region and m_errno_region.
! 	* region-model-manager.h (region_model_manager::get_errno_region):
! 	New accessor.
! 	(region_model_manager::m_thread_local_region): New.
! 	(region_model_manager::m_errno_region): New.
! 	* region-model.cc (region_model::on_call_pre): Special-case
! 	"__errno_location".
! 	(region_model::set_errno): New.
! 	* region-model.h (impl_call_errno_location): New decl.
! 	(region_model::set_errno): New decl.
! 	* region.cc (thread_local_region::dump_to_pp): New.
! 	(errno_region::dump_to_pp): New.
! 	* region.h (enum memory_space): Add MEMSPACE_THREAD_LOCAL.
! 	(enum region_kind): Add RK_THREAD_LOCAL and RK_ERRNO.
! 	(class thread_local_region): New.
! 	(is_a_helper <const thread_local_region *>::test): New.
! 	(class errno_region): New.
! 	(is_a_helper <const errno_region *>::test): New.
! 	* store.cc (binding_cluster::escaped_p): New.
! 	(store::escaped_p): Treat errno as always having escaped.
! 	(store::replay_call_summary_cluster): Handle RK_THREAD_LOCAL and
! 	RK_ERRNO.
! 	* store.h (binding_cluster::escaped_p): Remove definition.
! 
! 2022-11-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-info.cc (success_call_info::get_desc): Delete.
! 	(failed_call_info::get_desc): Likewise.
! 	(succeed_or_fail_call_info::get_desc): New.
! 	* call-info.h (class succeed_or_fail_call_info): New.
! 	(class success_call_info): Convert to a subclass of
! 	succeed_or_fail_call_info.
! 	(class failed_call_info): Likewise.
! 
! 2022-11-08  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model-impl-calls.cc (region_model::impl_call_strchr):
! 	Move to on_call_post.  Handle both outcomes using bifurcation,
! 	rather than just the "not found" case.
! 	* region-model.cc (region_model::on_call_pre): Move
! 	BUILT_IN_STRCHR and "strchr" to...
! 	(region_model::on_call_post): ...here.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h: Use std::unique_ptr for state machines from plugins.
! 	* engine.cc: Likewise.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h: Use std::unique_ptr for known functions.
! 	* engine.cc: Likewise.
! 	* known-function-manager.cc: Likewise.
! 	* known-function-manager.h: Likewise.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analysis-plan.cc: Define INCLUDE_MEMORY before including
! 	system.h.
! 	* analyzer-pass.cc: Likewise.
! 	* analyzer-selftests.cc: Likewise.
! 	* analyzer.cc: Likewise.
! 	* analyzer.h: Use std::unique_ptr in bifurcation code.
! 	* call-string.cc: Define INCLUDE_MEMORY before including system.h.
! 	* complexity.cc: Likewise.
! 	* engine.cc: Use std::unique_ptr in bifurcation code.
! 	* exploded-graph.h: Likewise.
! 	* known-function-manager.cc: Define INCLUDE_MEMORY before
! 	including system.h.
! 	* region-model-impl-calls.cc: Use std::unique_ptr in bifurcation
! 	code.
! 	* region-model.cc: Likewise.
! 	* region-model.h: Likewise.
! 	* supergraph.cc: Define INCLUDE_MEMORY before including system.h.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-info.cc: Use std::unique_ptr for checker_event.
! 	* checker-path.cc: Likewise.
! 	* checker-path.h: Likewise.
! 	* diagnostic-manager.cc: Likewise.
! 	* engine.cc: Likewise.
! 	* pending-diagnostic.cc: Likewise.
! 	* sm-signal.cc: Likewise.
! 	* varargs.cc: Likewise.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc: Include "make-unique.h".
! 	Use std::unique_ptr for feasibility_problems and exploded_path.
! 	Delete explicit saved_diagnostic dtor.
! 	* diagnostic-manager.h: Likewise.
! 	* engine.cc: Likewise.
! 	* exploded-graph.h: Likewise.
! 	* feasible-graph.cc: Likewise.
! 	* feasible-graph.h: Likewise.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (rewind_event::rewind_event): Update for usage of
! 	std::unique_ptr on custom_edge_info.
! 	* engine.cc (exploded_node::on_longjmp): Likewise.
! 	(exploded_edge::exploded_edge): Likewise.
! 	(exploded_edge::~exploded_edge): Delete.
! 	(exploded_graph::add_function_entry): Update for usage of
! 	std::unique_ptr on custom_edge_info.
! 	(exploded_graph::add_edge): Likewise.
! 	(add_tainted_args_callback): Likewise.
! 	(exploded_graph::maybe_create_dynamic_call): Likewise.
! 	(exploded_graph::process_node): Likewise.
! 	* exploded-graph.h (exploded_edge::~exploded_edge): Delete.
! 	(exploded_edge::m_custom_info): Use std::unique_ptr.
! 	(exploded_edge::add_edge): Likewise.
! 	* sm-signal.cc (register_signal_handler::impl_transition): Use
! 	make_unique.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* diagnostic-manager.cc (saved_diagnostic::saved_diagnostic): Make
! 	stmt_finder const.
! 	(saved_diagnostic::~saved_diagnostic): Remove explicit delete of
! 	m_stmt_finder.
! 	(diagnostic_manager::add_diagnostic): Make stmt_finder const.
! 	* diagnostic-manager.h (saved_diagnostic::saved_diagnostic):
! 	Likewise.
! 	(saved_diagnostic::m_stmt_finder): Convert to std::unique_ptr.
! 	(diagnostic_manager::add_diagnostic): Make stmt_finder const.
! 	* engine.cc (impl_sm_context::impl_sm_context): Likewise.
! 	(impl_sm_context::m_stmt_finder): Likewise.
! 	(leak_stmt_finder::clone): Convert return type to std::unique_ptr.
! 	* exploded-graph.h (stmt_finder::clone): Likewise.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-info.cc: Add define of INCLUDE_MEMORY.
! 	* call-summary.cc: Likewise.
! 	* checker-path.cc: Likewise.
! 	* constraint-manager.cc: Likewise.
! 	* diagnostic-manager.cc: Likewise.
! 	(saved_diagnostic::saved_diagnostic): Use std::unique_ptr for
! 	param d and field m_d.
! 	(saved_diagnostic::~saved_diagnostic): Remove explicit delete of m_d.
! 	(saved_diagnostic::add_note): Use std::unique_ptr for
! 	param pn.
! 	(saved_diagnostic::get_pending_diagnostic): Update for conversion
! 	of m_sd.m_d to unique_ptr.
! 	(diagnostic_manager::add_diagnostic): Use std::unique_ptr for
! 	param d.  Remove explicit deletion.
! 	(diagnostic_manager::add_note): Use std::unique_ptr for param pn.
! 	(diagnostic_manager::emit_saved_diagnostic): Update for conversion
! 	of m_sd.m_d to unique_ptr.
! 	(null_assignment_sm_context::warn): Use std::unique_ptr for
! 	param d.  Remove explicit deletion.
! 	* diagnostic-manager.h (saved_diagnostic::saved_diagnostic): Use
! 	std::unique_ptr for param d.
! 	(saved_diagnostic::add_note): Likewise for param pn.
! 	(saved_diagnostic::m_d): Likewise.
! 	(diagnostic_manager::add_diagnostic): Use std::unique_ptr for
! 	param d.
! 	(diagnostic_manager::add_note): Use std::unique_ptr for param pn.
! 	* engine.cc: Include "make-unique.h".
! 	(impl_region_model_context::warn): Update to use std::unique_ptr
! 	for param, removing explicit deletion.
! 	(impl_region_model_context::add_note): Likewise.
! 	(impl_sm_context::warn): Update to use std::unique_ptr
! 	for param.
! 	(impl_region_model_context::on_state_leak): Likewise for result of
! 	on_leak.
! 	(exploded_node::on_longjmp): Use make_unique when creating
! 	pending_diagnostic.
! 	(exploded_graph::process_node): Likewise.
! 	* exploded-graph.h (impl_region_model_context::warn): Update to
! 	use std::unique_ptr for param.
! 	(impl_region_model_context::add_note): Likewise.
! 	* feasible-graph.cc: Add define of INCLUDE_MEMORY.
! 	* pending-diagnostic.cc: Likewise.
! 	* pending-diagnostic.h: Include analyzer.sm.h"
! 	* program-point.cc: Add define of INCLUDE_MEMORY.
! 	* program-state.cc: Likewise.
! 	* region-model-asm.cc: Likewise.
! 	* region-model-impl-calls.cc: Likewise.  Include "make-unique.h".
! 	(region_model::impl_call_putenv): Use make_unique when creating
! 	pending_diagnostic.
! 	* region-model-manager.cc: Add define of INCLUDE_MEMORY.
! 	* region-model-reachability.cc: Likewise.
! 	* region-model.cc: Likewise.  Include "make-unique.h".
! 	(region_model::get_gassign_result): Use make_unique when creating
! 	pending_diagnostic.
! 	(region_model::check_for_poison): Likewise.
! 	(region_model::on_stmt_pre): Likewise.
! 	(region_model::check_symbolic_bounds): Likewise.
! 	(region_model::check_region_bounds): Likewise.
! 	(annotating_ctxt: make_note): Use std::unique_ptr for result.
! 	(region_model::deref_rvalue): Use make_unique when creating
! 	pending_diagnostic.
! 	(region_model::check_for_writable_region): Likewise.
! 	(region_model::check_region_size): Likewise.
! 	(region_model::check_dynamic_size_for_floats): Likewise.
! 	(region_model::maybe_complain_about_infoleak): Likewise.
! 	(noop_region_model_context::add_note): Use std::unique_ptr for
! 	param.  Remove explicit deletion.
! 	* region-model.h: Include "analyzer/pending-diagnostic.h".
! 	(region_model_context::warn): Convert param to std::unique_ptr.
! 	(region_model_context::add_note): Likewise.
! 	(noop_region_model_context::warn): Likewise.
! 	(noop_region_model_context::add_note): Likewise.
! 	(region_model_context_decorator::warn): Likewise.
! 	(region_model_context_decorator::add_note): Likewise.
! 	(note_adding_context::warn): Likewise.
! 	(note_adding_context::make_note): Likewise for return type.
! 	(test_region_model_context::warn): Convert param to
! 	std::unique_ptr.
! 	* region.cc: Add define of INCLUDE_MEMORY.
! 	* sm-fd.cc: Likewise.  Include "make-unique.h".
! 	(fd_state_machine::check_for_fd_attrs): Use make_unique when
! 	creating pending_diagnostics.
! 	(fd_state_machine::on_open): Likewise.
! 	(fd_state_machine::on_creat): Likewise.
! 	(fd_state_machine::check_for_dup): Likewise.
! 	(fd_state_machine::on_close): Likewise.
! 	(fd_state_machine::check_for_open_fd): Likewise.
! 	(fd_state_machine::on_leak): Likewise, converting return type to
! 	std::unique_ptr.
! 	* sm-file.cc: Add define of INCLUDE_MEMORY.  Include
! 	"make-unique.h".
! 	(fileptr_state_machine::on_stmt): Use make_unique when creating
! 	pending_diagnostic.
! 	(fileptr_state_machine::on_leak): Likewise, converting return type
! 	to std::unique_ptr.
! 	* sm-malloc.cc: Add define of INCLUDE_MEMORY.  Include
! 	"make-unique.h".
! 	(malloc_state_machine::on_stmt): Use make_unique when creating
! 	pending_diagnostic.
! 	(malloc_state_machine::handle_free_of_non_heap): Likewise.
! 	(malloc_state_machine::on_deallocator_call): Likewise.
! 	(malloc_state_machine::on_realloc_call): Likewise.
! 	(malloc_state_machine::on_leak): Likewise, converting return type
! 	to std::unique_ptr.
! 	* sm-pattern-test.cc: Add define of INCLUDE_MEMORY.  Include
! 	"make-unique.h".
! 	(pattern_test_state_machine::on_condition): Use make_unique when
! 	creating pending_diagnostic.
! 	* sm-sensitive.cc: Add define of INCLUDE_MEMORY.  Include
! 	"make-unique.h".
! 	(sensitive_state_machine::warn_for_any_exposure): Use make_unique
! 	when creating pending_diagnostic.
! 	* sm-signal.cc: Add define of INCLUDE_MEMORY.  Include
! 	"make-unique.h".
! 	(signal_state_machine::on_stmt): Use make_unique when creating
! 	pending_diagnostic.
! 	* sm-taint.cc: Add define of INCLUDE_MEMORY.  Include
! 	"make-unique.h".
! 	(taint_state_machine::check_for_tainted_size_arg): Use make_unique
! 	when creating pending_diagnostic.
! 	(taint_state_machine::check_for_tainted_divisor): Likewise.
! 	(region_model::check_region_for_taint): Likewise.
! 	(region_model::check_dynamic_size_for_taint): Likewise.
! 	* sm.cc: Add define of INCLUDE_MEMORY.  Include
! 	"analyzer/pending-diagnostic.h".
! 	(state_machine::on_leak): Move here from sm.h, changing return
! 	type to std::unique_ptr.
! 	* sm.h (state_machine::on_leak): Change return type to
! 	std::unique_ptr.  Move defn of base impl to sm.cc
! 	(sm_context::warn): Convert param d to std_unique_ptr.
! 	* state-purge.cc: Add define of INCLUDE_MEMORY.
! 	* store.cc: Likewise.
! 	* svalue.cc: Likewise.
! 	* trimmed-graph.cc: Likewise.
! 	* varargs.cc: Likewise.  Include "make-unique.h".
! 	(va_list_state_machine::check_for_ended_va_list): Use make_unique
! 	when creating pending_diagnostic.
! 	(va_list_state_machine::on_leak): Likewise, converting return type
! 	to std::unique_ptr.
! 	(region_model::impl_call_va_arg): Use make_unique when creating
! 	pending_diagnostic.
! 
! 2022-11-03  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107486
! 	* analyzer.cc (is_pipe_call_p): New.
! 	* analyzer.h (is_pipe_call_p): New decl.
! 	* region-model.cc (region_model::on_call_pre): Use it.
! 	(region_model::on_call_post): Likewise.
! 
! 2022-10-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-fd.cc (fd_state_machine::on_open): Transition to "unchecked"
! 	when the mode is symbolic, rather than just on integer constants.
! 	(fd_state_machine::check_for_open_fd): Don't complain about
! 	unchecked values in the start state.
! 
! 2022-10-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-fd.dot: New file.
! 
! 2022-10-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107349
! 	* varargs.cc (get_va_copy_arg): Fix the non-pointer case.
! 
! 2022-10-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107345
! 	* region-model.cc (region_model::eval_condition_without_cm):
! 	Ensure that constants are on the right-hand side before checking
! 	for them.
! 
! 2022-10-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (impl_region_model_context::get_malloc_map): Replace
! 	with...
! 	(impl_region_model_context::get_state_map_by_name): ...this.
! 	(impl_region_model_context::get_fd_map): Delete.
! 	(impl_region_model_context::get_taint_map): Delete.
! 	* exploded-graph.h (impl_region_model_context::get_fd_map):
! 	Delete.
! 	(impl_region_model_context::get_malloc_map): Delete.
! 	(impl_region_model_context::get_taint_map): Delete.
! 	(impl_region_model_context::get_state_map_by_name): New.
! 	* region-model.h (region_model_context::get_state_map_by_name):
! 	New vfunc.
! 	(region_model_context::get_fd_map): Convert from vfunc to
! 	function.
! 	(region_model_context::get_malloc_map): Likewise.
! 	(region_model_context::get_taint_map): Likewise.
! 	(noop_region_model_context::get_state_map_by_name): New.
! 	(noop_region_model_context::get_fd_map): Delete.
! 	(noop_region_model_context::get_malloc_map): Delete.
! 	(noop_region_model_context::get_taint_map): Delete.
! 	(region_model_context_decorator::get_state_map_by_name): New.
! 	(region_model_context_decorator::get_fd_map): Delete.
! 	(region_model_context_decorator::get_malloc_map): Delete.
! 	(region_model_context_decorator::get_taint_map): Delete.
! 
! 2022-10-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106300
! 	* engine.cc (impl_region_model_context::get_fd_map): New.
! 	* exploded-graph.h (impl_region_model_context::get_fd_map): New
! 	decl.
! 	* region-model-impl-calls.cc (region_model::impl_call_pipe): New.
! 	* region-model.cc (region_model::update_for_int_cst_return): New,
! 	based on...
! 	(region_model::update_for_zero_return): ...this.  Reimplement in
! 	terms of the former.
! 	(region_model::on_call_pre): Handle "pipe" and "pipe2".
! 	(region_model::on_call_post): Likewise.
! 	* region-model.h (region_model::impl_call_pipe): New decl.
! 	(region_model::update_for_int_cst_return): New decl.
! 	(region_model::mark_as_valid_fd): New decl.
! 	(region_model_context::get_fd_map): New pure virtual fn.
! 	(noop_region_model_context::get_fd_map): New.
! 	(region_model_context_decorator::get_fd_map): New.
! 	* sm-fd.cc: Include "analyzer/program-state.h".
! 	(fd_state_machine::describe_state_change): Handle transitions from
! 	start state to valid states.
! 	(fd_state_machine::mark_as_valid_fd): New.
! 	(fd_state_machine::on_stmt): Add missing return for "creat".
! 	(region_model::mark_as_valid_fd): New.
! 
! 2022-10-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105765
! 	* varargs.cc (get_BT_VALIST_ARG): Rename to...
! 	(get_va_copy_arg): ...this, and update logic for determining level
! 	of indirection of va_copy's argument to use type of argument,
! 	rather than looking at va_list_type_node, to correctly handle
! 	__builtin_ms_va_copy.
! 	(get_stateful_BT_VALIST_ARG): Rename to...
! 	(get_stateful_va_copy_arg): ...this.
! 	(va_list_state_machine::on_va_copy): Update for renaming.
! 	(region_model::impl_call_va_copy): Likewise.
! 
! 2022-10-13  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107210
! 	* svalue.cc (constant_svalue::maybe_fold_bits_within): Only
! 	attempt to extract individual bits when tree_fits_uhwi_p.
! 
! 2022-10-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105783
! 	* region-model.cc (selftest::get_bit): New function.
! 	(selftest::test_bits_within_svalue_folding): New.
! 	(selfftest::analyzer_region_model_cc_tests): Call it.
! 	* svalue.cc (constant_svalue::maybe_fold_bits_within): Handle the
! 	case of extracting a single bit.
! 
! 2022-10-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107158
! 	* store.cc (store::replay_call_summary_cluster): Eliminate
! 	special-casing of RK_HEAP_ALLOCATED in favor of sharing code with
! 	RK_DECL, avoiding an ICE due to attempting to bind a
! 	compound_svalue into a binding_cluster when an svalue in the
! 	summary cluster converts to a compound_svalue in the caller.
! 
! 2022-10-06  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-summary.cc (call_summary_replay::dump_to_pp): Bulletproof
! 	against NULL caller regions/svalues.
! 
! 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analysis-plan.cc: Simplify includes.
! 	* analyzer-pass.cc: Likewise.
! 	* analyzer-selftests.cc: Likewise.
! 	* analyzer.cc: Likewise.
! 	* analyzer.h: Add includes of "json.h" and "tristate.h".
! 	* call-info.cc: Simplify includes.
! 	* call-string.cc: Likewise.
! 	* call-summary.cc: Likewise.
! 	* checker-path.cc: Likewise.
! 	* complexity.cc: Likewise.
! 	* constraint-manager.cc: Likewise.
! 	* diagnostic-manager.cc: Likewise.
! 	* engine.cc: Likewise.
! 	* feasible-graph.cc: Likewise.
! 	* known-function-manager.cc: Likewise.
! 	* pending-diagnostic.cc: Likewise.
! 	* program-point.cc: Likewise.
! 	* program-state.cc: Likewise.
! 	* region-model-asm.cc: Likewise.
! 	* region-model-impl-calls.cc: Likewise.
! 	* region-model-manager.cc: Likewise.
! 	* region-model-reachability.cc: Likewise.
! 	* region-model.cc: Likewise.
! 	* region-model.h: Include "selftest.h".
! 	* region.cc: Simplify includes.
! 	* sm-fd.cc: Likewise.
! 	* sm-file.cc: Likewise.
! 	* sm-malloc.cc: Likewise.
! 	* sm-pattern-test.cc: Likewise.
! 	* sm-sensitive.cc: Likewise.
! 	* sm-signal.cc: Likewise.
! 	* sm-taint.cc: Likewise.
! 	* sm.cc: Likewise.
! 	* state-purge.cc: Likewise.
! 	* store.cc: Likewise.
! 	* store.h: Likewise.
! 	* supergraph.cc: Likewise.
! 	* svalue.cc: Likewise.
! 	* svalue.h: Likewise.
! 	* trimmed-graph.cc: Likewise.
! 	* varargs.cc: Likewise.
! 
! 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107060
! 	* call-summary.cc
! 	(call_summary_replay::convert_svalue_from_summary_1): Handle NULL
! 	results from convert_svalue_from_summary in SK_UNARY_OP and
! 	SK_BIN_OP.
! 	* engine.cc (impl_region_model_context::on_unknown_change): Bail
! 	out on svalues that can't have associated state.
! 	* region-model-impl-calls.cc
! 	(region_model::impl_call_analyzer_get_unknown_ptr): New.
! 	* region-model.cc (region_model::on_stmt_pre): Handle
! 	"__analyzer_get_unknown_ptr".
! 	* region-model.h
! 	(region_model::impl_call_analyzer_get_unknown_ptr): New decl.
! 	* store.cc (store::replay_call_summary_cluster): Avoid trying to
! 	create binding clusters for base regions that shouldn't have them.
! 
! 2022-10-05  Martin Liska  <mliska@suse.cz>
! 
! 	* call-summary.cc (call_summary_replay::call_summary_replay):
! 	Remove unused variable and arguments.
! 	* call-summary.h: Likewise.
! 	* engine.cc (exploded_node::on_stmt): Likewise.
! 	(exploded_node::replay_call_summaries): Likewise.
! 	(exploded_node::replay_call_summary): Likewise.
! 	* exploded-graph.h (class exploded_node): Likewise.
! 
! 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107072
! 	* analyzer-logging.h: Include "diagnostic-core.h".
! 	* analyzer.h: Include "function.h".
! 	(class call_summary): New forward decl.
! 	(class call_summary_replay): New forward decl.
! 	(struct per_function_data): New forward decl.
! 	(struct interesting_t): New forward decl.
! 	(custom_edge_info::update_state): New vfunc.
! 	* call-info.cc (custom_edge_info::update_state): New.
! 	* call-summary.cc: New file.
! 	* call-summary.h: New file.
! 	* constraint-manager.cc: Include "analyzer/call-summary.h".
! 	(class replay_fact_visitor): New.
! 	(constraint_manager::replay_call_summary): New.
! 	* constraint-manager.h (constraint_manager::replay_call_summary):
! 	New.
! 	* engine.cc: Include "analyzer/call-summary.h".
! 	(exploded_node::on_stmt): Handle call summaries.
! 	(class call_summary_edge_info): New.
! 	(exploded_node::replay_call_summaries): New.
! 	(exploded_node::replay_call_summary): New.
! 	(per_function_data::~per_function_data): New.
! 	(per_function_data::add_call_summary): Move here from header and
! 	reimplement.
! 	(exploded_graph::process_node): Call update_state rather than
! 	update_model when handling bifurcation
! 	(viz_callgraph_node::dump_dot): Use a regular label rather
! 	than an HTML table; add summaries to dump.
! 	* exploded-graph.h: Include "alloc-pool.h", "fibonacci_heap.h",
! 	"supergraph.h", "sbitmap.h", "shortest-paths.h", "analyzer/sm.h",
! 	"analyzer/program-state.h", and "analyzer/diagnostic-manager.h".
! 	(exploded_node::replay_call_summaries): New decl.
! 	(exploded_node::replay_call_summary): New decl.
! 	(per_function_data::~per_function_data): New decl.
! 	(per_function_data::add_call_summary): Move implemention from
! 	header.
! 	(per_function_data::m_summaries): Update type of element.
! 	* known-function-manager.h: Include "analyzer/analyzer-logging.h".
! 	* program-point.h: Include "pretty-print.h" and
! 	"analyzer/call-string.h".
! 	* program-state.cc: Include "analyzer/call-summary.h".
! 	(sm_state_map::replay_call_summary): New.
! 	(program_state::replay_call_summary): New.
! 	* program-state.h (sm_state_map::replay_call_summary): New decl.
! 	(program_state::replay_call_summary): New decl.
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_asm_output_svalue): New
! 	overload.
! 	* region-model-manager.h
! 	(region_model_manager::get_or_create_asm_output_svalue): New
! 	overload decl.
! 	* region-model.cc: Include "analyzer/call-summary.h".
! 	(region_model::maybe_update_for_edge): Remove call to
! 	region_model::update_for_call_summary on
! 	SUPEREDGE_INTRAPROCEDURAL_CALL.
! 	(region_model::update_for_call_summary): Delete.
! 	(region_model::replay_call_summary): New.
! 	* region-model.h (region_model::replay_call_summary): New decl.
! 	(region_model::update_for_call_summary): Delete decl.
! 	* store.cc: Include "analyzer/call-summary.h".
! 	(store::replay_call_summary): New.
! 	(store::replay_call_summary_cluster): New.
! 	* store.h: Include "tristate.h".
! 	(is_a_helper <const ana::concrete_binding *>::test): New.
! 	(store::replay_call_summary): New decl.
! 	(store::replay_call_summary_cluster): New decl.
! 	* supergraph.cc (get_ultimate_function_for_cgraph_edge): Remove
! 	"static" from decl.
! 	(supergraph_call_edge): Make stmt param const.
! 	* supergraph.h: Include "ordered-hash-map.h", "cfg.h",
! 	"basic-block.h", "gimple.h", "gimple-iterator.h", and "digraph.h".
! 	(supergraph_call_edge): Make stmt param const.
! 	(get_ultimate_function_for_cgraph_edge): New decl.
! 	* svalue.cc (compound_svalue::compound_svalue): Assert that we're
! 	not nesting compound_svalues.
! 	* svalue.h: Include "json.h", "analyzer/store.h", and
! 	"analyzer/program-point.h".
! 	(asm_output_svalue::get_num_outputs): New accessor.
! 
! 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model.h: Include "analyzer/region-model-manager.h"
! 	(class region_model_manager): Move decl to...
! 	* region-model-manager.h: ...this new file.
! 
! 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model-manager.cc
! 	(region_model_manager::maybe_fold_unaryop): Fold -(-(VAL)) to VAL.
! 
! 2022-10-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region-model-manager.cc
! 	(region_model_manager::get_or_create_widening_svalue): Use a
! 	function_point rather than a program_point.
! 	* region-model.cc (selftest::test_widening_constraints): Likewise.
! 	* region-model.h
! 	(region_model_manager::get_or_create_widening_svalue): Likewise.
! 	(model_merger::get_function_point): New.
! 	* svalue.cc (svalue::can_merge_p): Use a function_point rather
! 	than a program_point.
! 	(svalue::can_merge_p): Likewise.
! 	* svalue.h (widening_svalue::key_t): Likewise.
! 	(widening_svalue::widening_svalue): Likewise.
! 
! 2022-09-12  Martin Liska  <mliska@suse.cz>
! 
! 	* region-model.cc (region_model::maybe_complain_about_infoleak):
! 	Remove unused fields.
! 
! 2022-09-11  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/106845
! 	* region-model.cc (region_model::check_region_bounds):
! 	Bail out if 0 bytes were accessed.
! 	* store.cc (byte_range::dump_to_pp):
! 	Add special case for empty ranges.
! 	(byte_range::exceeds_p): Restrict to non-empty ranges.
! 	(byte_range::falls_short_of_p): Restrict to non-empty ranges.
! 	* store.h (bit_range::empty_p): New function.
! 	(bit_range::get_last_byte_offset): Restrict to non-empty ranges.
! 	(byte_range::empty_p): New function.
! 	(byte_range::get_last_byte_offset): Restrict to non-empty ranges.
! 
! 2022-09-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.opt (Wanalyzer-exposure-through-uninit-copy): New.
! 	* checker-path.cc (region_creation_event::region_creation_event):
! 	Add "capacity" and "kind" params.
! 	(region_creation_event::get_desc): Generalize to different kinds
! 	of event.
! 	(checker_path::add_region_creation_event): Convert to...
! 	(checker_path::add_region_creation_events): ...this.
! 	* checker-path.h (enum rce_kind): New.
! 	(region_creation_event::region_creation_event): Add "capacity" and
! 	"kind" params.
! 	(region_creation_event::m_capacity): New field.
! 	(region_creation_event::m_rce_kind): New field.
! 	(checker_path::add_region_creation_event): Convert to...
! 	(checker_path::add_region_creation_events): ...this.
! 	* diagnostic-manager.cc (diagnostic_manager::build_emission_path):
! 	Update for multiple region creation events.
! 	(diagnostic_manager::add_event_on_final_node): Likewise.
! 	(diagnostic_manager::add_events_for_eedge): Likewise.
! 	* region-model-impl-calls.cc (call_details::get_logger): New.
! 	* region-model.cc: Define INCLUDE_MEMORY before including
! 	"system.h".  Include "gcc-rich-location.h".
! 	(class record_layout): New.
! 	(class exposure_through_uninit_copy): New.
! 	(contains_uninit_p): New.
! 	(region_model::maybe_complain_about_infoleak): New.
! 	* region-model.h (call_details::get_logger): New decl.
! 	(region_model::maybe_complain_about_infoleak): New decl.
! 	(region_model::mark_as_tainted): New decl.
! 	* sm-taint.cc (region_model::mark_as_tainted): New.
! 
! 2022-09-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer.h (class known_function_manager): New forward decl.
! 	(class known_function): New.
! 	(plugin_analyzer_init_iface::register_known_function): New.
! 	* engine.cc: Include "analyzer/known-function-manager.h".
! 	(plugin_analyzer_init_impl::plugin_analyzer_init_impl): Add
! 	known_fn_mgr param.
! 	(plugin_analyzer_init_impl::register_state_machine): Add
! 	LOC_SCOPE.
! 	(plugin_analyzer_init_impl::register_known_function): New.
! 	(plugin_analyzer_init_impl::m_known_fn_mgr): New.
! 	(impl_run_checkers): Update plugin callback invocation to use
! 	eng's known_function_manager.
! 	* known-function-manager.cc: New file.
! 	* known-function-manager.h: New file.
! 	* region-model-manager.cc
! 	(region_model_manager::region_model_manager): Pass logger to
! 	m_known_fn_mgr's ctor.
! 	* region-model.cc (region_model::update_for_zero_return): New.
! 	(region_model::update_for_nonzero_return): New.
! 	(maybe_simplify_upper_bound): New.
! 	(region_model::maybe_get_copy_bounds): New.
! 	(region_model::get_known_function): New.
! 	(region_model::on_call_pre): Handle plugin-supplied known
! 	functions.
! 	* region-model.h: Include "analyzer/known-function-manager.h".
! 	(region_model_manager::get_known_function_manager): New.
! 	(region_model_manager::m_known_fn_mgr): New.
! 	(call_details::get_model): New accessor.
! 	(region_model::maybe_get_copy_bounds): New decl.
! 	(region_model::update_for_zero_return): New decl.
! 	(region_model::update_for_nonzero_return): New decl.
! 	(region_model::get_known_function): New decl.
! 	(region_model::get_known_function_manager): New.
! 
! 2022-09-08  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/106625
! 	* analyzer.h (region_offset): Eliminate m_is_symbolic member.
! 	* region-model-impl-calls.cc (region_model::impl_call_realloc):
! 	Refine implementation to be more precise.
! 	* region-model.cc (class symbolic_past_the_end):
! 	Abstract diagnostic class to complain about accesses past the end
! 	with symbolic values.
! 	(class symbolic_buffer_overflow):
! 	Concrete diagnostic class to complain about buffer overflows with
! 	symbolic values.
! 	(class symbolic_buffer_overread):
! 	Concrete diagnostic class to complain about buffer overreads with
! 	symbolic values.
! 	(region_model::check_symbolic_bounds): New function.
! 	(maybe_get_integer_cst_tree): New helper function.
! 	(region_model::check_region_bounds):
! 	Add call to check_symbolic_bounds if offset is not concrete.
! 	(region_model::eval_condition_without_cm):
! 	Add support for EQ_EXPR and GT_EXPR with binaryop_svalues.
! 	(is_positive_svalue): New hleper function.
! 	(region_model::symbolic_greater_than):
! 	New function to handle GT_EXPR comparisons with symbolic values.
! 	(region_model::structural_equality): New function to compare
! 	whether two svalues are structured the same, i.e. evaluate to
! 	the same value.
! 	(test_struct): Reflect changes to region::calc_offset.
! 	(test_var): Likewise.
! 	(test_array_2): Likewise and add selftest with symbolic i.
! 	* region-model.h (class region_model): Add check_symbolic_bounds,
! 	symbolic_greater_than and structural_equality.
! 	* region.cc (region::get_offset):
! 	Reflect changes to region::calc_offset.
! 	(region::calc_offset):
! 	Compute the symbolic offset if the offset is not concrete.
! 	(region::get_relative_symbolic_offset): New function to return the
! 	symbolic offset in bytes relative to its parent.
! 	(field_region::get_relative_symbolic_offset): Likewise.
! 	(element_region::get_relative_symbolic_offset): Likewise.
! 	(offset_region::get_relative_symbolic_offset): Likewise.
! 	(bit_range_region::get_relative_symbolic_offset): Likewise.
! 	* region.h: Add get_relative_symbolic_offset.
! 	* store.cc (binding_key::make):
! 	Reflect changes to region::calc_offset.
! 	(binding_map::apply_ctor_val_to_range): Likewise.
! 	(binding_map::apply_ctor_pair_to_child_region): Likewise.
! 	(binding_cluster::bind_compound_sval): Likewise.
! 	(binding_cluster::get_any_binding): Likewise.
! 	(binding_cluster::maybe_get_compound_binding): Likewise.
! 
! 2022-09-05  Tim Lange  <mail@tim-lange.me>
! 
! 	* region-model-impl-calls.cc (region_model::impl_call_strcpy):
! 	Handle the constant string case.
! 	* region-model.cc (region_model::get_string_size):
! 	New function to get the string size from a region or svalue.
! 	* region-model.h (class region_model): Add get_string_size.
! 
! 2022-09-05  Tim Lange  <mail@tim-lange.me>
! 
! 	* region.cc (cast_region::get_relative_concrete_offset):
! 	New overloaded method.
! 	* region.h: Add cast_region::get_relative_concrete_offset.
! 
! 2022-08-22  Martin Liska  <mliska@suse.cz>
! 
! 	* region-model.cc: Add missing final keyword.
! 
! 2022-08-18  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/106181
! 	* analyzer.opt: Add Wanalyzer-imprecise-floating-point-arithmetic.
! 	* region-model.cc (is_any_cast_p): Formatting.
! 	(region_model::check_region_size): Ensure precondition.
! 	(class imprecise_floating_point_arithmetic): New abstract
! 	diagnostic class for all floating-point related warnings.
! 	(class float_as_size_arg): Concrete diagnostic class to complain
! 	about floating-point operands inside the size argument.
! 	(class contains_floating_point_visitor):
! 	New visitor to find floating-point operands inside svalues.
! 	(region_model::check_dynamic_size_for_floats): New function.
! 	(region_model::set_dynamic_extents):
! 	Call to check_dynamic_size_for_floats.
! 	* region-model.h (class region_model):
! 	Add region_model::check_dynamic_size_for_floats.
! 
! 2022-08-16  Martin Liska  <mliska@suse.cz>
! 
! 	* region-model.cc: Fix -Winconsistent-missing-override clang
! 	warning.
! 	* region.h: Likewise.
! 
! 2022-08-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106626
! 	* region-model.cc (buffer_overread::emit): Fix copy&paste error in
! 	direction of the access in the note.
! 
! 2022-08-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106573
! 	* region-model.cc (region_model::on_call_pre): Use check_call_args
! 	when ensuring that we call get_arg_svalue on all args.  Remove
! 	redundant call from handling for stdio builtins.
! 
! 2022-08-15  Immad Mir  <mirimmad@outlook.com>
! 
! 	PR analyzer/106551
! 	* sm-fd.cc (check_for_dup): exit early if first
! 	argument is invalid for all dup functions.
! 
! 2022-08-12  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/106000
! 	* analyzer.opt: Add Wanalyzer-out-of-bounds.
! 	* region-model.cc (class out_of_bounds): Diagnostics base class
! 	for all out-of-bounds diagnostics.
! 	(class past_the_end): Base class derived from out_of_bounds for
! 	the buffer_overflow and buffer_overread diagnostics.
! 	(class buffer_overflow): Buffer overflow diagnostics.
! 	(class buffer_overread): Buffer overread diagnostics.
! 	(class buffer_underflow): Buffer underflow diagnostics.
! 	(class buffer_underread): Buffer overread diagnostics.
! 	(region_model::check_region_bounds): New function to check region
! 	bounds for out-of-bounds accesses.
! 	(region_model::check_region_access):
! 	Add call to check_region_bounds.
! 	(region_model::get_representative_tree): New function that accepts
! 	a region instead of an svalue.
! 	* region-model.h (class region_model):
! 	Add region_model::check_region_bounds.
! 	* region.cc (region::symbolic_p): New predicate.
! 	(offset_region::get_byte_size_sval): Only return the remaining
! 	byte size on offset_regions.
! 	* region.h: Add region::symbolic_p.
! 	* store.cc (byte_range::intersects_p):
! 	Add new function equivalent to bit_range::intersects_p.
! 	(byte_range::exceeds_p): New function.
! 	(byte_range::falls_short_of_p): New function.
! 	* store.h (struct byte_range): Add byte_range::intersects_p,
! 	byte_range::exceeds_p and byte_range::falls_short_of_p.
! 
! 2022-08-12  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/106539
! 	* region-model-impl-calls.cc (region_model::impl_call_realloc):
! 	Use the result of get_copied_size as the size for the
! 	sized_regions in realloc.
! 	(success_with_move::get_copied_size): New function.
! 
! 2022-08-11  Immad Mir  <mirimmad@outlook.com>
! 
! 	PR analyzer/106551
! 	* sm-fd.cc (check_for_dup): handle the m_start
! 	state when transitioning the state of LHS
! 	of dup, dup2 and dup3 call.
! 
! 2022-08-09  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106573
! 	* region-model.cc (region_model::on_call_pre): Ensure that we call
! 	get_arg_svalue on all arguments.
! 
! 2022-08-05  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105947
! 	* analyzer.opt (Wanalyzer-jump-through-null): New option.
! 	* engine.cc (class jump_through_null): New.
! 	(exploded_graph::process_node): Complain about jumps through NULL
! 	function pointers.
! 
! 2022-08-02  Immad Mir  <mirimmad@outlook.com>
! 
! 	PR analyzer/106298
! 	* sm-fd.cc (fd_state_machine::on_open): Add
! 	creat, dup, dup2 and dup3 functions.
! 	(enum dup): New.
! 	(fd_state_machine::valid_to_unchecked_state): New.
! 	(fd_state_machine::on_creat): New.
! 	(fd_state_machine::on_dup): New.
! 
! 2022-07-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105893
! 	* analyzer.opt (Wanalyzer-putenv-of-auto-var): New.
! 	* region-model-impl-calls.cc (class putenv_of_auto_var): New.
! 	(region_model::impl_call_putenv): New.
! 	* region-model.cc (region_model::on_call_pre): Handle putenv.
! 	* region-model.h (region_model::impl_call_putenv): New decl.
! 
! 2022-07-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-malloc.cc (free_of_non_heap::emit): Add comment about CWE.
! 	* sm-taint.cc (tainted_size::emit): Likewise.
! 
! 2022-07-28  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* region.h: Add notes to the comment describing the region
! 	class hierarchy.
! 
! 2022-07-27  Immad Mir  <mirimmad@outlook.com>
! 
! 	PR analyzer/106286
! 	* sm-fd.cc:
! 	(fd_diagnostic::get_meaning_for_state_change): New.
! 
! 2022-07-26  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106319
! 	* store.cc (store::set_value): Don't strip away casts if the
! 	region has NULL type.
! 
! 2022-07-26  David Malcolm  <dmalcolm@redhat.com>
  
  	* region.h (code_region::get_element): Remove stray decl.
  	(function_region::get_element): Likewise.
  
! 2022-07-25  Martin Liska  <mliska@suse.cz>
! 
! 	* sm-fd.cc: Run dos2unix and fix coding style issues.
! 
! 2022-07-23  Immad Mir  <mirimmad@outlook.com>
! 
! 	* sm-fd.cc (fd_param_diagnostic): New diagnostic class.
! 	(fd_access_mode_mismatch): Change inheritance from fd_diagnostic
! 	to fd_param_diagnostic. Add new overloaded constructor.
! 	(fd_use_after_close): Likewise.
! 	(unchecked_use_of_fd): Likewise and also change name to fd_use_without_check.
! 	(double_close): Change name to fd_double_close.
! 	(enum access_directions): New.
! 	(fd_state_machine::on_stmt): Handle calls to function with the
! 	new three function attributes.
! 	(fd_state_machine::check_for_fd_attrs): New.
! 	(fd_state_machine::on_open): Use the new overloaded constructors
! 	of diagnostic classes.
! 
! 2022-07-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106413
! 	* varargs.cc (region_model::impl_call_va_start): Avoid iterating
! 	through non-existant variadic arguments by initializing the
! 	impl_region to "UNKNOWN" if the va_start occurs in the top-level
! 	function to the analysis.
! 
! 2022-07-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106401
! 	* store.cc (binding_cluster::binding_cluster): Remove overzealous
! 	assertion; we're checking for tracked_p in
! 	store::get_or_create_cluster.
! 
! 2022-07-22  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/106394
! 	* region-model.cc (capacity_compatible_with_type): Always return true
! 	if alloc_size is zero.
! 
! 2022-07-21  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106383
! 	* varargs.cc (region_model::impl_call_va_arg): When determining if
! 	we're doing interprocedural analysis, use the stack depth of the
! 	frame in which va_start was called, rather than the current stack
! 	depth.
! 
! 2022-07-21  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-taint.cc (tainted_array_index::emit): Bulletproof against
! 	NULL m_arg.
! 	(tainted_array_index::describe_final_event): Likewise.
! 	(tainted_size::emit): Likewise.
! 	(tainted_size::describe_final_event): Likewise.
! 
! 2022-07-21  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106374
! 	* region.cc (decl_region::get_svalue_for_initializer): Bail out on
! 	untracked regions.
! 
! 2022-07-20  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106373
! 	* sm-taint.cc (taint_state_machine::on_condition): Potentially
! 	update the state of the RHS as well as the LHS.
! 
! 2022-07-20  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106359
! 	* region.h (string_region::tracked_p): New.
! 	* store.cc (binding_cluster::binding_cluster): Move here from
! 	store.h.  Add assertion that base_region is tracked_p.
! 	* store.h (binding_cluster::binding_cluster): Move to store.cc.
! 
! 2022-07-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106321
! 	* constraint-manager.h (bounded_ranges::get_count): New.
! 	(bounded_ranges::get_range): New.
! 	* engine.cc (impl_region_model_context::on_bounded_ranges): New.
! 	* exploded-graph.h (impl_region_model_context::on_bounded_ranges):
! 	New decl.
! 	* region-model.cc (region_model::apply_constraints_for_gswitch):
! 	Potentially call ctxt->on_bounded_ranges.
! 	* region-model.h (region_model_context::on_bounded_ranges): New
! 	vfunc.
! 	(noop_region_model_context::on_bounded_ranges): New.
! 	(region_model_context_decorator::on_bounded_ranges): New.
! 	* sm-taint.cc: Include "analyzer/constraint-manager.h".
! 	(taint_state_machine::on_bounded_ranges): New.
! 	* sm.h (state_machine::on_bounded_ranges): New.
! 
! 2022-07-19  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* engine.cc (exploded_graph::process_node): Show any description
! 	of the out-edge when logging it for consideration.
! 
! 2022-07-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106284
! 	* sm-taint.cc (taint_state_machine::on_condition): Handle range
! 	checks optimized by build_range_check.
! 
! 2022-07-15  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* call-info.cc (call_info::print): Adjust to new label_text API.
! 	* checker-path.cc (checker_event::dump): Likewise.
! 	(region_creation_event::get_desc): Likewise.
! 	(state_change_event::get_desc): Likewise.
! 	(superedge_event::should_filter_p): Likewise.
! 	(start_cfg_edge_event::get_desc): Likewise.
! 	(call_event::get_desc): Likewise.
! 	(return_event::get_desc): Likewise.
! 	(warning_event::get_desc): Likewise.
! 	(checker_path::dump): Likewise.
! 	(checker_path::debug): Likewise.
! 	* diagnostic-manager.cc (diagnostic_manager::prune_for_sm_diagnostic):
! 	Likewise.
! 	(diagnostic_manager::prune_interproc_events): Likewise.
! 	* engine.cc (feasibility_state::maybe_update_for_edge):
! 	Likewise.
! 	* program-state.cc (sm_state_map::to_json): Likewise.
! 	* region-model-impl-calls.cc (region_model::impl_call_analyzer_describe): Likewise.
! 	(region_model::impl_call_analyzer_dump_capacity): Likewise.
! 	* region.cc (region::to_json): Likewise.
! 	* sm-malloc.cc (inform_nonnull_attribute): Likewise.
! 	* store.cc (binding_map::to_json): Likewise.
! 	(store::to_json): Likewise.
! 	* supergraph.cc (superedge::dump): Likewise.
! 	* svalue.cc (svalue::to_json): Likewise.
! 
! 2022-07-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (start_cfg_edge_event::get_desc): Update for
! 	superedge::get_description returning a label_text.
! 	* engine.cc (feasibility_state::maybe_update_for_edge): Likewise.
! 	* supergraph.cc (superedge::dump): Likewise.
! 	(superedge::get_description): Convert return type from char * to
! 	label_text.
! 	* supergraph.h (superedge::get_description): Likewise.
! 
! 2022-07-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-info.cc (call_info::print): Update for removal of
! 	label_text::maybe_free in favor of automatic memory management.
! 	* checker-path.cc (checker_event::dump): Likewise.
! 	(checker_event::prepare_for_emission): Likewise.
! 	(state_change_event::get_desc): Likewise.
! 	(superedge_event::should_filter_p): Likewise.
! 	(start_cfg_edge_event::get_desc): Likewise.
! 	(warning_event::get_desc): Likewise.
! 	(checker_path::dump): Likewise.
! 	(checker_path::debug): Likewise.
! 	* diagnostic-manager.cc
! 	(diagnostic_manager::prune_for_sm_diagnostic): Likewise.
! 	(diagnostic_manager::prune_interproc_events): Likewise.
! 	* program-state.cc (sm_state_map::to_json): Likewise.
! 	* region.cc (region::to_json): Likewise.
! 	* sm-malloc.cc (inform_nonnull_attribute): Likewise.
! 	* store.cc (binding_map::to_json): Likewise.
! 	(store::to_json): Likewise.
! 	* svalue.cc (svalue::to_json): Likewise.
! 
! 2022-07-07  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/106225
  	* sm-taint.cc (taint_state_machine::on_stmt): Move handling of
***************
*** 18,24 ****
  	(sm_context::get_old_region_model): New.
  	* sm.h (sm_context::get_old_region_model): New decl.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/106204
  	* region-model.cc (within_short_circuited_stmt_p): Move extraction
--- 2491,2509 ----
  	(sm_context::get_old_region_model): New.
  	* sm.h (sm_context::get_old_region_model): New decl.
  
! 2022-07-06  Immad Mir  <mirimmad@outlook.com>
! 
! 	PR analyzer/106184
! 	* sm-fd.cc (fd_state_machine): Change ordering of initialization
! 	of state m_invalid so that the order of initializers is same as
! 	the ordering of the fields in the class decl.
! 
! 2022-07-06  Immad Mir  <mirimmad@outlook.com>
! 
! 	* sm-fd.cc (use_after_close): save the "close" event and
! 	show it where possible.
! 
! 2022-07-06  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/106204
  	* region-model.cc (within_short_circuited_stmt_p): Move extraction
***************
*** 28,34 ****
  	from within_short_circuited_stmt_p to here.  Share logic with
  	call to due_to_ifn_deferred_init_p.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	* diagnostic-manager.cc (saved_diagnostic::dump_dot_id): New.
  	(saved_diagnostic::dump_as_dot_node): New.
--- 2513,2748 ----
  	from within_short_circuited_stmt_p to here.  Share logic with
  	call to due_to_ifn_deferred_init_p.
  
! 2022-07-02  Tim Lange  <mail@tim-lange.me>
! 
! 	PR analyzer/105900
! 	* analyzer.opt: Added Wanalyzer-allocation-size.
! 	* checker-path.cc (region_creation_event::get_desc): Added call to new
! 	virtual function pending_diagnostic::describe_region_creation_event.
! 	* checker-path.h: Added region_creation_event::get_desc.
! 	* diagnostic-manager.cc (diagnostic_manager::add_event_on_final_node):
! 	New function.
! 	* diagnostic-manager.h:
! 	Added diagnostic_manager::add_event_on_final_node.
! 	* pending-diagnostic.h (struct region_creation): New event_desc struct.
! 	(pending_diagnostic::describe_region_creation_event): Added virtual
! 	function to overwrite description of a region creation.
! 	* region-model.cc (class dubious_allocation_size): New class.
! 	(capacity_compatible_with_type): New helper function.
! 	(class size_visitor): New class.
! 	(struct_or_union_with_inheritance_p): New helper function.
! 	(is_any_cast_p): New helper function.
! 	(region_model::check_region_size): New function.
! 	(region_model::set_value): Added call to
! 	region_model::check_region_size.
! 	* region-model.h (class region_model): New function check_region_size.
! 	* svalue.cc (region_svalue::accept): Changed to post-order traversal.
! 	(initial_svalue::accept): Likewise.
! 	(unaryop_svalue::accept): Likewise.
! 	(binop_svalue::accept): Likewise.
! 	(sub_svalue::accept): Likewise.
! 	(repeated_svalue::accept): Likewise.
! 	(bits_within_svalue::accept): Likewise.
! 	(widening_svalue::accept): Likewise.
! 	(unmergeable_svalue::accept): Likewise.
! 	(compound_svalue::accept): Likewise.
! 	(conjured_svalue::accept): Likewise.
! 	(asm_output_svalue::accept): Likewise.
! 	(const_fn_result_svalue::accept): Likewise.
! 
! 2022-07-02  Immad Mir  <mirimmad17@gmail.com>
! 
! 	PR analyzer/106003
! 	* analyzer.opt (Wanalyzer-fd-leak): New option.
! 	(Wanalyzer-fd-access-mode-mismatch): New option.
! 	(Wanalyzer-fd-use-without-check): New option.
! 	(Wanalyzer-fd-double-close): New option.
! 	(Wanalyzer-fd-use-after-close): New option.
! 	* sm.h (make_fd_state_machine): New decl.
! 	* sm.cc (make_checkers): Call make_fd_state_machine.
! 	* sm-fd.cc: New file.
! 
! 2022-06-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-string.cc: Add includes of "analyzer/analyzer.h"
! 	and "analyzer/analyzer-logging.h".
! 	(call_string::call_string): Delete copy ctor.
! 	(call_string::operator=): Delete.
! 	(call_string::operator==): Delete.
! 	(call_string::hash): Delete.
! 	(call_string::push_call): Make const, returning the resulting
! 	call_string.
! 	(call_string::pop): Delete.
! 	(call_string::cmp_ptr_ptr): New.
! 	(call_string::validate): Assert that m_parent is non-NULL, or
! 	m_elements is empty.
! 	(call_string::call_string): Move default ctor here from
! 	call-string.h and reimplement.  Add ctor taking a parent
! 	and an element.
! 	(call_string::~call_string): New.
! 	(call_string::recursive_log): New.
! 	* call-string.h (call_string::call_string): Move default ctor's
! 	defn to call-string.cc.  Delete copy ctor.  Add ctor taking a
! 	parent and an element.
! 	(call_string::operator=): Delete.
! 	(call_string::operator==): Delete.
! 	(call_string::hash): Delete.
! 	(call_string::push_call): Make const, returning the resulting
! 	call_string.
! 	(call_string::pop): Delete decl.
! 	(call_string::get_parent): New.
! 	(call_string::cmp_ptr_ptr): New decl.
! 	(call_string::get_top_of_stack): New.
! 	(struct call_string::hashmap_traits_t): New.
! 	(class call_string): Add friend class region_model_manager.  Add
! 	DISABLE_COPY_AND_ASSIGN.
! 	(call_string::~call_string): New decl.
! 	(call_string::recursive_log): New decl.
! 	(call_string::m_parent): New field.
! 	(call_string::m_children): New field.
! 	* constraint-manager.cc (selftest::test_many_constants): Pass
! 	model manager to program_point::origin.
! 	* engine.cc (exploded_graph::exploded_graph): Likewise.
! 	(exploded_graph::add_function_entry): Likewise for
! 	program_point::from_function_entry.
! 	(add_tainted_args_callback): Likewise.
! 	(exploded_graph::maybe_process_run_of_before_supernode_enodes):
! 	Update for change to program_point.get_call_string.
! 	(exploded_graph::process_node): Likewise.
! 	(class function_call_string_cluster): Convert m_cs from a
! 	call_string to a const call_string &.
! 	(struct function_call_string): Likewise.
! 	(pod_hash_traits<function_call_string>::hash): Use pointer_hash
! 	for m_cs.
! 	(pod_hash_traits<function_call_string>::equal): Update for change
! 	to m_cs.
! 	(root_cluster::add_node): Update for change to
! 	function_call_string.
! 	(viz_callgraph_node::dump_dot): Update for change to call_string.
! 	* exploded-graph.h (per_call_string_data::m_key): Convert to a
! 	reference.
! 	(struct eg_call_string_hash_map_traits): Delete.
! 	(exploded_graph::call_string_data_map_t): Remove traits class.
! 	* program-point.cc: Move include of "analyzer/call-string.h" to
! 	after "analyzer/analyzer-logging.h".
! 	(program_point::print): Update for conversion of m_call_string to
! 	a pointer.
! 	(program_point::to_json): Likewise.
! 	(program_point::push_to_call_stack): Update for immutability of
! 	call strings.
! 	(program_point::pop_from_call_stack): Likewise.
! 	(program_point::hash): Use pointer hashing for m_call_string.
! 	(program_point::get_function_at_depth): Update for change to
! 	m_call_string.
! 	(program_point::validate): Update for changes to call_string.
! 	(program_point::on_edge): Likewise.
! 	(program_point::origin): Move here from call-string.h.  Add
! 	region_model_manager param and use it to get empty call string.
! 	(program_point::from_function_entry): Likewise.
! 	(selftest::test_function_point_ordering): Likewise.
! 	(selftest::test_function_point_ordering): Likewise.
! 	* program-point.h (program_point::program_point): Update for
! 	change to m_call_string.
! 	(program_point::get_call_string): Likewise.
! 	(program_point::get_stack_depth): Likewise.
! 	(program_point::origin): Add region_model_manager param, and move
! 	defn to call-string.cc.
! 	(program_point::from_function_entry): Likewise.
! 	(program_point::empty): Drop call_string.
! 	(program_point::deleted): Likewise.
! 	(program_point::program_point): New private ctor.
! 	(program_point::m_call_string): Convert from call_string to const
! 	call_string *.
! 	* program-state.cc (selftest::test_program_state_merging): Update
! 	for call_string changes.
! 	(selftest::test_program_state_merging_2): Likewise.
! 	* region-model-manager.cc
! 	(region_model_manager::region_model_manager): Construct
! 	m_empty_call_string.
! 	(region_model_manager::log_stats): Log the call strings.
! 	* region-model.cc (assert_region_models_merge): Pass the
! 	region_model_manager when creating program_point instances.
! 	(selftest::test_state_merging): Likewise.
! 	(selftest::test_constraint_merging): Likewise.
! 	(selftest::test_widening_constraints): Likewise.
! 	(selftest::test_iteration_1): Likewise.
! 	* region-model.h (region_model_manager::get_empty_call_string):
! 	New.
! 	(region_model_manager::m_empty_call_string): New.
! 	* sm-signal.cc (register_signal_handler::impl_transition): Update
! 	for changes to call_string.
! 
! 2022-06-24  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-string.cc (call_string::calc_recursion_depth): Whitespace
! 	cleanups.
! 	(call_string::cmp): Likewise.
! 	(call_string::get_caller_node): Likewise.
! 	(call_string::validate): Likewise.
! 	* engine.cc (dynamic_call_info_t::add_events_to_path): Likewise.
! 	(exploded_graph::get_per_function_data): Likewise.
! 	(exploded_graph::maybe_create_dynamic_call): Likewise.
! 	(exploded_graph::maybe_create_dynamic_call): Likewise.
! 	(exploded_graph::process_node): Likewise.
! 
! 2022-06-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* varargs.cc (va_arg_type_mismatch::emit): Associate the warning
! 	with CWE-686 ("Function Call With Incorrect Argument Type").
! 
! 2022-06-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* varargs.cc: Include "diagnostic-metadata.h".
! 	(va_list_exhausted::emit): Associate the warning with
! 	CWE-685 ("Function Call With Incorrect Number of Arguments").
! 
! 2022-06-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* sm-file.cc (double_fclose::emit): Associate the warning with
! 	CWE-1341 ("Multiple Releases of Same Resource or Handle").
! 
! 2022-06-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105962
! 	* analyzer.opt (fanalyzer-undo-inlining): New option.
! 	* checker-path.cc: Include "diagnostic-core.h" and
! 	"inlining-iterator.h".
! 	(event_kind_to_string): Handle EK_INLINED_CALL.
! 	(class inlining_info): New class.
! 	(checker_event::checker_event): Move here from checker-path.h.
! 	Store original fndecl and depth, and calculate effective fndecl
! 	and depth based on inlining information.
! 	(checker_event::dump): Emit original depth as well as effective
! 	depth when they differ; likewise for fndecl.
! 	(region_creation_event::get_desc): Use m_effective_fndecl.
! 	(inlined_call_event::get_desc): New.
! 	(inlined_call_event::get_meaning): New.
! 	(checker_path::inject_any_inlined_call_events): New.
! 	* checker-path.h (enum event_kind): Add EK_INLINED_CALL.
! 	(checker_event::checker_event): Make protected, and move
! 	definition to checker-path.cc.
! 	(checker_event::get_fndecl): Use effective fndecl.
! 	(checker_event::get_stack_depth): Use effective stack depth.
! 	(checker_event::get_logical_location): Use effective stack depth.
! 	(checker_event::get_original_stack_depth): New.
! 	(checker_event::m_fndecl): Rename to...
! 	(checker_event::m_original_fndecl): ...this.
! 	(checker_event::m_depth): Rename to...
! 	(checker_event::m_original_depth): ...this.
! 	(checker_event::m_effective_fndecl): New field.
! 	(checker_event::m_effective_depth): New field.
! 	(class inlined_call_event): New checker_event subclass.
! 	(checker_path::inject_any_inlined_call_events): New decl.
! 	* diagnostic-manager.cc: Include "inlining-iterator.h".
! 	(diagnostic_manager::emit_saved_diagnostic): Call
! 	checker_path::inject_any_inlined_call_events.
! 	(diagnostic_manager::prune_for_sm_diagnostic): Handle
! 	EK_INLINED_CALL.
! 	* engine.cc (tainted_args_function_custom_event::get_desc): Use
! 	effective fndecl.
! 	* inlining-iterator.h: New file.
! 
! 2022-06-15  David Malcolm  <dmalcolm@redhat.com>
  
  	* diagnostic-manager.cc (saved_diagnostic::dump_dot_id): New.
  	(saved_diagnostic::dump_as_dot_node): New.
***************
*** 37,43 ****
  	* engine.cc (exploded_node::dump_dot): Add nodes for saved
  	diagnostics.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	* checker-path.cc (state_change_event::get_desc): Call maybe_free
  	on label_text temporaries.
--- 2751,2920 ----
  	* engine.cc (exploded_node::dump_dot): Add nodes for saved
  	diagnostics.
  
! 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* checker-path.cc (checker_event::get_meaning): New.
! 	(function_entry_event::get_meaning): New.
! 	(state_change_event::get_desc): Add dump of meaning of the event
! 	to the -fanalyzer-verbose-state-changes output.
! 	(state_change_event::get_meaning): New.
! 	(cfg_edge_event::get_meaning): New.
! 	(call_event::get_meaning): New.
! 	(return_event::get_meaning): New.
! 	(start_consolidated_cfg_edges_event::get_meaning): New.
! 	(warning_event::get_meaning): New.
! 	* checker-path.h: Include "tree-logical-location.h".
! 	(checker_event::checker_event): Construct m_logical_loc.
! 	(checker_event::get_logical_location): New.
! 	(checker_event::get_meaning): New decl.
! 	(checker_event::m_logical_loc): New.
! 	(function_entry_event::get_meaning): New decl.
! 	(state_change_event::get_meaning): New decl.
! 	(cfg_edge_event::get_meaning): New decl.
! 	(call_event::get_meaning): New decl.
! 	(return_event::get_meaning): New decl.
! 	(start_consolidated_cfg_edges_event::get_meaning): New.
! 	(warning_event::get_meaning): New decl.
! 	* pending-diagnostic.h: Include "diagnostic-path.h".
! 	(pending_diagnostic::get_meaning_for_state_change): New vfunc.
! 	* sm-file.cc (file_diagnostic::get_meaning_for_state_change): New
! 	vfunc impl.
! 	* sm-malloc.cc (malloc_diagnostic::get_meaning_for_state_change):
! 	Likewise.
! 	* sm-sensitive.cc
! 	(exposure_through_output_file::get_meaning_for_state_change):
! 	Likewise.
! 	* sm-taint.cc (taint_diagnostic::get_meaning_for_state_change):
! 	Likewise.
! 	* varargs.cc
! 	(va_list_sm_diagnostic::get_meaning_for_state_change): Likewise.
! 
! 2022-05-23  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* call-info.cc: Add "final" and "override" to all vfunc
! 	implementations that were missing them, as appropriate.
! 	* engine.cc: Likewise.
! 	* region-model.cc: Likewise.
! 	* sm-malloc.cc: Likewise.
! 	* supergraph.h: Likewise.
! 	* svalue.cc: Likewise.
! 	* varargs.cc: Likewise.
! 
! 2022-05-20  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* analyzer-pass.cc: Replace uses of "FINAL" and "OVERRIDE" with
! 	"final" and "override".
! 	* call-info.h: Likewise.
! 	* checker-path.h: Likewise.
! 	* constraint-manager.cc: Likewise.
! 	* diagnostic-manager.cc: Likewise.
! 	* engine.cc: Likewise.
! 	* exploded-graph.h: Likewise.
! 	* feasible-graph.h: Likewise.
! 	* pending-diagnostic.h: Likewise.
! 	* region-model-impl-calls.cc: Likewise.
! 	* region-model.cc: Likewise.
! 	* region-model.h: Likewise.
! 	* region.h: Likewise.
! 	* sm-file.cc: Likewise.
! 	* sm-malloc.cc: Likewise.
! 	* sm-pattern-test.cc: Likewise.
! 	* sm-sensitive.cc: Likewise.
! 	* sm-signal.cc: Likewise.
! 	* sm-taint.cc: Likewise.
! 	* state-purge.h: Likewise.
! 	* store.cc: Likewise.
! 	* store.h: Likewise.
! 	* supergraph.h: Likewise.
! 	* svalue.h: Likewise.
! 	* trimmed-graph.h: Likewise.
! 	* varargs.cc: Likewise.
! 
! 2022-05-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/105103
! 	* analyzer.cc (make_label_text_n): New.
! 	* analyzer.h (class var_arg_region): New forward decl.
! 	(make_label_text_n): New decl.
! 	* analyzer.opt (Wanalyzer-va-arg-type-mismatch): New option.
! 	(Wanalyzer-va-list-exhausted): New option.
! 	(Wanalyzer-va-list-leak): New option.
! 	(Wanalyzer-va-list-use-after-va-end): New option.
! 	* checker-path.cc (call_event::get_desc): Split out decl access
! 	into..
! 	(call_event::get_caller_fndecl): ...this new function and...
! 	(call_event::get_callee_fndecl): ...this new function.
! 	* checker-path.h (call_event::get_desc): Drop "FINAL".
! 	(call_event::get_caller_fndecl): New decl.
! 	(call_event::get_callee_fndecl): New decl.
! 	(class call_event): Make fields protected.
! 	* diagnostic-manager.cc (null_assignment_sm_context::warn): New
! 	overload.
! 	(null_assignment_sm_context::get_new_program_state): New.
! 	(diagnostic_manager::add_events_for_superedge): Move case
! 	SUPEREDGE_CALL to a new pending_diagnostic::add_call_event vfunc.
! 	* engine.cc (impl_sm_context::warn): Implement new override.
! 	(impl_sm_context::get_new_program_state): New.
! 	* pending-diagnostic.cc: Include "analyzer/diagnostic-manager.h",
! 	"cpplib.h", "digraph.h", "ordered-hash-map.h", "cfg.h",
! 	"basic-block.h", "gimple.h", "gimple-iterator.h", "cgraph.h"
! 	"analyzer/supergraph.h", "analyzer/program-state.h",
! 	"alloc-pool.h", "fibonacci_heap.h", "shortest-paths.h",
! 	"sbitmap.h", "analyzer/exploded-graph.h", "diagnostic-path.h",
! 	and "analyzer/checker-path.h".
! 	(ht_ident_eq): New.
! 	(fixup_location_in_macro_p): New.
! 	(pending_diagnostic::fixup_location): New.
! 	(pending_diagnostic::add_call_event): New.
! 	* pending-diagnostic.h (pending_diagnostic::fixup_location): Drop
! 	no-op inline implementation in favor of the more complex
! 	implementation above.
! 	(pending_diagnostic::add_call_event): New vfunc.
! 	* region-model-impl-calls.cc: Include "analyzer/sm.h",
! 	"diagnostic-path.h", and "analyzer/pending-diagnostic.h".
! 	* region-model-manager.cc
! 	(region_model_manager::get_var_arg_region): New.
! 	(region_model_manager::log_stats): Log m_var_arg_regions.
! 	* region-model.cc (region_model::on_call_pre): Handle IFN_VA_ARG,
! 	BUILT_IN_VA_START, and BUILT_IN_VA_COPY.
! 	(region_model::on_call_post): Handle BUILT_IN_VA_END.
! 	(region_model::get_representative_path_var_1): Handle RK_VAR_ARG.
! 	(region_model::push_frame): Push variadic arguments.
! 	* region-model.h (region_model_manager::get_var_arg_region): New
! 	decl.
! 	(region_model_manager::m_var_arg_regions): New field.
! 	(region_model::impl_call_va_start): New decl.
! 	(region_model::impl_call_va_copy): New decl.
! 	(region_model::impl_call_va_arg): New decl.
! 	(region_model::impl_call_va_end): New decl.
! 	* region.cc (alloca_region::dump_to_pp): Dump the id.
! 	(var_arg_region::dump_to_pp): New.
! 	(var_arg_region::get_frame_region): New.
! 	* region.h (enum region_kind): Add RK_VAR_ARG.
! 	(region::dyn_cast_var_arg_region): New.
! 	(class var_arg_region): New.
! 	(is_a_helper <const var_arg_region *>::test): New.
! 	(struct default_hash_traits<var_arg_region::key_t>): New.
! 	* sm.cc (make_checkers): Call make_va_list_state_machine.
! 	* sm.h (sm_context::warn): New vfunc.
! 	(sm_context::get_old_svalue): Drop unused decl.
! 	(sm_context::get_new_program_state): New vfunc.
! 	(make_va_list_state_machine): New decl.
! 	* varargs.cc: New file.
! 
! 2022-05-16  Martin Liska  <mliska@suse.cz>
! 
! 	* engine.cc (exploded_node::get_dot_fillcolor): Use ARRAY_SIZE.
! 	* function-set.cc (test_stdio_example): Likewise.
! 	* sm-file.cc (get_file_using_fns): Likewise.
! 	* sm-malloc.cc (malloc_state_machine::unaffected_by_call_p): Likewise.
! 	* sm-signal.cc (get_async_signal_unsafe_fns): Likewise.
! 
! 2022-05-13  Richard Biener  <rguenther@suse.de>
! 
! 	* supergraph.cc: Re-order gimple-fold.h include.
! 
! 2022-05-11  David Malcolm  <dmalcolm@redhat.com>
  
  	* checker-path.cc (state_change_event::get_desc): Call maybe_free
  	on label_text temporaries.
***************
*** 55,68 ****
  	m_repeated_values_map, m_bits_within_values_map,
  	m_asm_output_values_map, and m_const_fn_result_values_map.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/105285
  	* store.cc (binding_cluster::get_any_binding): Handle accessing
  	sub_svalues of clusters where the base region has a symbolic
  	binding.
  
! 2022-07-27  David Malcolm  <dmalcolm@redhat.com>
  
  	* diagnostic-manager.cc (epath_finder::process_worklist_item):
  	Call dump_feasible_path when a path that reaches the the target
--- 2932,2945 ----
  	m_repeated_values_map, m_bits_within_values_map,
  	m_asm_output_values_map, and m_const_fn_result_values_map.
  
! 2022-04-28  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/105285
  	* store.cc (binding_cluster::get_any_binding): Handle accessing
  	sub_svalues of clusters where the base region has a symbolic
  	binding.
  
! 2022-04-28  David Malcolm  <dmalcolm@redhat.com>
  
  	* diagnostic-manager.cc (epath_finder::process_worklist_item):
  	Call dump_feasible_path when a path that reaches the the target
***************
*** 78,87 ****
  	* program-point.h (program_point::print_source_line): Remove
  	unimplemented decl.
  
- 2022-05-06  Release Manager
- 
- 	* GCC 12.1.0 released.
- 
  2022-04-25  David Malcolm  <dmalcolm@redhat.com>
  
  	PR analyzer/105365
--- 2955,2960 ----
***************
*** 7147,7153 ****
  	* Initial creation
  
  
! Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 10020,10026 ----
  	* Initial creation
  
  
! Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analysis-plan.cc gcc-13.1.0/gcc/analyzer/analysis-plan.cc
*** gcc-12.2.0/gcc/analyzer/analysis-plan.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analysis-plan.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 27,33 ****
  #include "timevar.h"
  #include "ipa-utils.h"
  #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-core.h"
  #include "analyzer/analyzer-logging.h"
--- 28,33 ----
*************** along with GCC; see the file COPYING3.
*** 35,41 ****
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cgraph.h"
- #include "function.h"
  #include "cfg.h"
  #include "basic-block.h"
  #include "gimple.h"
--- 35,40 ----
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analysis-plan.h gcc-13.1.0/gcc/analyzer/analysis-plan.h
*** gcc-12.2.0/gcc/analyzer/analysis-plan.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analysis-plan.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A class to encapsulate decisions about how the analysis should happen.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-language.cc gcc-13.1.0/gcc/analyzer/analyzer-language.cc
*** gcc-12.2.0/gcc/analyzer/analyzer-language.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/analyzer-language.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,140 ----
+ /* Interface between analyzer and frontends.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "stringpool.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-language.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "diagnostic.h"
+ 
+ /* Map from identifier to INTEGER_CST.  */
+ static GTY (()) hash_map <tree, tree> *analyzer_stashed_constants;
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Call into TU to try to find a value for NAME.
+    If found, stash its value within analyzer_stashed_constants.  */
+ 
+ static void
+ maybe_stash_named_constant (logger *logger,
+ 			    const translation_unit &tu,
+ 			    const char *name)
+ {
+   LOG_FUNC_1 (logger, "name: %qs", name);
+ 
+   if (!analyzer_stashed_constants)
+     analyzer_stashed_constants = hash_map<tree, tree>::create_ggc ();
+ 
+   tree id = get_identifier (name);
+   if (tree t = tu.lookup_constant_by_id (id))
+     {
+       gcc_assert (TREE_CODE (t) == INTEGER_CST);
+       analyzer_stashed_constants->put (id, t);
+       if (logger)
+ 	logger->log ("%qs: %qE", name, t);
+     }
+   else
+     {
+       if (logger)
+ 	logger->log ("%qs: not found", name);
+     }
+ }
+ 
+ /* Call into TU to try to find values for the names we care about.
+    If found, stash their values within analyzer_stashed_constants.  */
+ 
+ static void
+ stash_named_constants (logger *logger, const translation_unit &tu)
+ {
+   LOG_SCOPE (logger);
+ 
+   /* Stash named constants for use by sm-fd.cc  */
+   maybe_stash_named_constant (logger, tu, "O_ACCMODE");
+   maybe_stash_named_constant (logger, tu, "O_RDONLY");
+   maybe_stash_named_constant (logger, tu, "O_WRONLY");
+   maybe_stash_named_constant (logger, tu, "SOCK_STREAM");
+   maybe_stash_named_constant (logger, tu, "SOCK_DGRAM");
+ }
+ 
+ /* Hook for frontend to call into analyzer when TU finishes.
+    This exists so that the analyzer can stash named constant values from
+    header files (e.g. macros and enums) for later use when modeling the
+    behaviors of APIs.
+ 
+    By doing it this way, the analyzer can use the precise values for those
+    constants from the user's headers, rather than attempting to model them
+    as properties of the target.  */
+ 
+ void
+ on_finish_translation_unit (const translation_unit &tu)
+ {
+   /* Bail if the analyzer isn't enabled.  */
+   if (!flag_analyzer)
+     return;
+ 
+   FILE *logfile = get_or_create_any_logfile ();
+   log_user the_logger (NULL);
+   if (logfile)
+     the_logger.set_logger (new logger (logfile, 0, 0,
+ 				       *global_dc->printer));
+   stash_named_constants (the_logger.get_logger (), tu);
+ }
+ 
+ /* Lookup NAME in the named constants stashed when the frontend TU finished.
+    Return either an INTEGER_CST, or NULL_TREE.  */
+ 
+ tree
+ get_stashed_constant_by_name (const char *name)
+ {
+   if (!analyzer_stashed_constants)
+     return NULL_TREE;
+   tree id = get_identifier (name);
+   if (tree *slot = analyzer_stashed_constants->get (id))
+     {
+       gcc_assert (TREE_CODE (*slot) == INTEGER_CST);
+       return *slot;
+     }
+   return NULL_TREE;
+ }
+ 
+ /* Log all stashed named constants to LOGGER.  */
+ 
+ void
+ log_stashed_constants (logger *logger)
+ {
+   gcc_assert (logger);
+   LOG_SCOPE (logger);
+   if (analyzer_stashed_constants)
+     for (auto iter : *analyzer_stashed_constants)
+       logger->log ("%qE: %qE", iter.first, iter.second);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
+ 
+ #include "gt-analyzer-language.h"
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-language.h gcc-13.1.0/gcc/analyzer/analyzer-language.h
*** gcc-12.2.0/gcc/analyzer/analyzer-language.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/analyzer-language.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,48 ----
+ /* Interface between analyzer and frontends.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_LANGUAGE_H
+ #define GCC_ANALYZER_LANGUAGE_H
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Abstract base class for representing a specific TU
+    to the analyzer.  */
+ 
+ class translation_unit
+ {
+  public:
+   /* Attempt to look up an  value for identifier ID (e.g. in the headers that
+      have been seen).  If it is defined and an integer (e.g. either as a
+      macro or enum), return the INTEGER_CST value, otherwise return NULL.  */
+   virtual tree lookup_constant_by_id (tree id) const = 0;
+ };
+ 
+ /* Analyzer hook for frontends to call at the end of the TU.  */
+ 
+ void on_finish_translation_unit (const translation_unit &tu);
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
+ 
+ #endif /* GCC_ANALYZER_LANGUAGE_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-logging.cc gcc-13.1.0/gcc/analyzer/analyzer-logging.cc
*** gcc-12.2.0/gcc/analyzer/analyzer-logging.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer-logging.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-logging.h gcc-13.1.0/gcc/analyzer/analyzer-logging.h
*** gcc-12.2.0/gcc/analyzer/analyzer-logging.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer-logging.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Hierarchical log messages for the analyzer.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 23,28 ****
--- 23,30 ----
  #ifndef ANALYZER_LOGGING_H
  #define ANALYZER_LOGGING_H
  
+ #include "diagnostic-core.h"
+ 
  namespace ana {
  
  /* A logger encapsulates a logging stream: a way to send
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-pass.cc gcc-13.1.0/gcc/analyzer/analyzer-pass.cc
*** gcc-12.2.0/gcc/analyzer/analyzer-pass.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer-pass.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Integration of the analyzer with GCC's pass manager.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Integration of the analyzer with GCC's pass manager.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "context.h"
*************** along with GCC; see the file COPYING3.
*** 26,32 ****
  #include "diagnostic.h"
  #include "options.h"
  #include "tree.h"
- #include "function.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/engine.h"
  
--- 27,32 ----
*************** public:
*** 66,73 ****
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) FINAL OVERRIDE;
!   unsigned int execute (function *) FINAL OVERRIDE;
  }; // class pass_analyzer
  
  /* Only run the analyzer if -fanalyzer.  */
--- 66,73 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override;
!   unsigned int execute (function *) final override;
  }; // class pass_analyzer
  
  /* Only run the analyzer if -fanalyzer.  */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-selftests.cc gcc-13.1.0/gcc/analyzer/analyzer-selftests.cc
*** gcc-12.2.0/gcc/analyzer/analyzer-selftests.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer-selftests.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Selftest support for the analyzer.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Selftest support for the analyzer.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,29 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "stringpool.h"
- #include "function.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-selftests.h"
  
--- 19,29 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "stringpool.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-selftests.h"
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer-selftests.h gcc-13.1.0/gcc/analyzer/analyzer-selftests.h
*** gcc-12.2.0/gcc/analyzer/analyzer-selftests.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer-selftests.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Selftests for the analyzer.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Selftests for the analyzer.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer.cc gcc-13.1.0/gcc/analyzer/analyzer.cc
*** gcc-12.2.0/gcc/analyzer/analyzer.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 27,33 ****
  #include "gimple.h"
  #include "diagnostic.h"
  #include "intl.h"
- #include "function.h"
  #include "analyzer/analyzer.h"
  
  #if ENABLE_ANALYZER
--- 28,33 ----
*************** make_label_text (bool can_colorize, cons
*** 434,439 ****
--- 434,477 ----
    ti.args_ptr = &ap;
    ti.err_no = 0;
    ti.x_data = NULL;
+   ti.m_richloc = &rich_loc;
+ 
+   pp_format (pp, &ti);
+   pp_output_formatted_text (pp);
+ 
+   va_end (ap);
+ 
+   label_text result = label_text::take (xstrdup (pp_formatted_text (pp)));
+   delete pp;
+   return result;
+ }
+ 
+ /* As above, but with singular vs plural.  */
+ 
+ label_text
+ make_label_text_n (bool can_colorize, unsigned HOST_WIDE_INT n,
+ 		   const char *singular_fmt,
+ 		   const char *plural_fmt, ...)
+ {
+   pretty_printer *pp = global_dc->printer->clone ();
+   pp_clear_output_area (pp);
+ 
+   if (!can_colorize)
+     pp_show_color (pp) = false;
+ 
+   text_info ti;
+   rich_location rich_loc (line_table, UNKNOWN_LOCATION);
+ 
+   va_list ap;
+ 
+   va_start (ap, plural_fmt);
+ 
+   const char *fmt = ngettext (singular_fmt, plural_fmt, n);
+ 
+   ti.format_spec = fmt;
+   ti.args_ptr = &ap;
+   ti.err_no = 0;
+   ti.x_data = NULL;
    ti.m_richloc = &rich_loc;
  
    pp_format (pp, &ti);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer.h gcc-13.1.0/gcc/analyzer/analyzer.h
*** gcc-12.2.0/gcc/analyzer/analyzer.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Utility functions for the analyzer.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,30 ----
  #ifndef GCC_ANALYZER_ANALYZER_H
  #define GCC_ANALYZER_ANALYZER_H
  
+ #include "function.h"
+ #include "json.h"
+ #include "tristate.h"
+ 
  class graphviz_out;
  
  namespace ana {
*************** class region;
*** 69,74 ****
--- 73,79 ----
    class field_region;
    class string_region;
    class bit_range_region;
+   class var_arg_region;
  class region_model_manager;
  class conjured_purge;
  struct model_merger;
*************** class bounded_ranges_manager;
*** 87,93 ****
  
  class pending_diagnostic;
  class pending_note;
! class state_change_event;
  class checker_path;
  class extrinsic_state;
  class sm_state_map;
--- 92,101 ----
  
  class pending_diagnostic;
  class pending_note;
! struct event_loc_info;
! class checker_event;
!   class state_change_event;
!   class warning_event;
  class checker_path;
  class extrinsic_state;
  class sm_state_map;
*************** class engine;
*** 112,117 ****
--- 120,132 ----
  class state_machine;
  class logger;
  class visitor;
+ class known_function_manager;
+ class call_summary;
+ class call_summary_replay;
+ struct per_function_data;
+ struct interesting_t;
+ 
+ class feasible_node;
  
  /* Forward decls of functions.  */
  
*************** public:
*** 171,186 ****
    static region_offset make_concrete (const region *base_region,
  				      bit_offset_t offset)
    {
!     return region_offset (base_region, offset, false);
    }
!   static region_offset make_symbolic (const region *base_region)
    {
!     return region_offset (base_region, 0, true);
    }
  
    const region *get_base_region () const { return m_base_region; }
  
!   bool symbolic_p () const { return m_is_symbolic; }
  
    bit_offset_t get_bit_offset () const
    {
--- 186,202 ----
    static region_offset make_concrete (const region *base_region,
  				      bit_offset_t offset)
    {
!     return region_offset (base_region, offset, NULL);
    }
!   static region_offset make_symbolic (const region *base_region,
! 				      const svalue *sym_offset)
    {
!     return region_offset (base_region, 0, sym_offset);
    }
  
    const region *get_base_region () const { return m_base_region; }
  
!   bool symbolic_p () const { return m_sym_offset != NULL; }
  
    bit_offset_t get_bit_offset () const
    {
*************** public:
*** 188,221 ****
      return m_offset;
    }
  
    bool operator== (const region_offset &other) const
    {
      return (m_base_region == other.m_base_region
  	    && m_offset == other.m_offset
! 	    && m_is_symbolic == other.m_is_symbolic);
    }
  
  private:
    region_offset (const region *base_region, bit_offset_t offset,
! 		 bool is_symbolic)
!   : m_base_region (base_region), m_offset (offset), m_is_symbolic (is_symbolic)
    {}
  
    const region *m_base_region;
    bit_offset_t m_offset;
!   bool m_is_symbolic;
  };
  
  extern location_t get_stmt_location (const gimple *stmt, function *fun);
  
  extern bool compat_types_p (tree src_type, tree dst_type);
  
  /* Passed by pointer to PLUGIN_ANALYZER_INIT callbacks.  */
  
  class plugin_analyzer_init_iface
  {
  public:
!   virtual void register_state_machine (state_machine *) = 0;
    virtual logger *get_logger () const = 0;
  };
  
--- 204,283 ----
      return m_offset;
    }
  
+   const svalue *get_symbolic_byte_offset () const
+   {
+     gcc_assert (symbolic_p ());
+     return m_sym_offset;
+   }
+ 
    bool operator== (const region_offset &other) const
    {
      return (m_base_region == other.m_base_region
  	    && m_offset == other.m_offset
! 	    && m_sym_offset == other.m_sym_offset);
    }
  
  private:
    region_offset (const region *base_region, bit_offset_t offset,
! 		 const svalue *sym_offset)
!   : m_base_region (base_region), m_offset (offset), m_sym_offset (sym_offset)
    {}
  
    const region *m_base_region;
    bit_offset_t m_offset;
!   const svalue *m_sym_offset;
  };
  
  extern location_t get_stmt_location (const gimple *stmt, function *fun);
  
  extern bool compat_types_p (tree src_type, tree dst_type);
  
+ /* Abstract base class for simulating the behavior of known functions,
+    supplied by the core of the analyzer, or by plugins.
+    The former are typically implemented in the various kf*.cc  */
+ 
+ class known_function
+ {
+ public:
+   virtual ~known_function () {}
+   virtual bool matches_call_types_p (const call_details &cd) const = 0;
+   virtual void impl_call_pre (const call_details &) const
+   {
+     return;
+   }
+   virtual void impl_call_post (const call_details &) const
+   {
+     return;
+   }
+ };
+ 
+ /* Subclass of known_function for IFN_* functions.  */
+ 
+ class internal_known_function : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const final override
+   {
+     /* Types are assumed to be correct.  */
+     return true;
+   }
+ };
+ 
+ extern void register_known_functions (known_function_manager &mgr);
+ extern void register_known_analyzer_functions (known_function_manager &kfm);
+ extern void register_known_fd_functions (known_function_manager &kfm);
+ extern void register_known_file_functions (known_function_manager &kfm);
+ extern void register_known_functions_lang_cp (known_function_manager &kfm);
+ extern void register_varargs_builtins (known_function_manager &kfm);
+ 
  /* Passed by pointer to PLUGIN_ANALYZER_INIT callbacks.  */
  
  class plugin_analyzer_init_iface
  {
  public:
!   virtual void register_state_machine (std::unique_ptr<state_machine>) = 0;
!   virtual void register_known_function (const char *name,
! 					std::unique_ptr<known_function>) = 0;
    virtual logger *get_logger () const = 0;
  };
  
*************** public:
*** 242,247 ****
--- 304,314 ----
    /* Hook for making .dot label more readable.  */
    virtual void print (pretty_printer *pp) const = 0;
  
+   /* Hook for updating STATE when handling bifurcation.  */
+   virtual bool update_state (program_state *state,
+ 			     const exploded_edge *eedge,
+ 			     region_model_context *ctxt) const;
+ 
    /* Hook for updating MODEL within exploded_path::feasible_p
       and when handling bifurcation.  */
    virtual bool update_model (region_model *model,
*************** class path_context
*** 266,274 ****
  public:
    virtual ~path_context () {}
  
!   /* Hook for clients to split state with a non-standard path.
!      Take ownership of INFO.  */
!   virtual void bifurcate (custom_edge_info *info) = 0;
  
    /* Hook for clients to terminate the standard path.  */
    virtual void terminate_path () = 0;
--- 333,340 ----
  public:
    virtual ~path_context () {}
  
!   /* Hook for clients to split state with a non-standard path.  */
!   virtual void bifurcate (std::unique_ptr<custom_edge_info> info) = 0;
  
    /* Hook for clients to terminate the standard path.  */
    virtual void terminate_path () = 0;
*************** public:
*** 278,283 ****
--- 344,354 ----
    virtual bool terminate_path_p () const = 0;
  };
  
+ extern tree get_stashed_constant_by_name (const char *name);
+ extern void log_stashed_constants (logger *logger);
+ 
+ extern FILE *get_or_create_any_logfile ();
+ 
  } // namespace ana
  
  extern bool is_special_named_call_p (const gcall *call, const char *funcname,
*************** extern const char *get_user_facing_name
*** 296,301 ****
--- 367,376 ----
  extern void register_analyzer_pass ();
  
  extern label_text make_label_text (bool can_colorize, const char *fmt, ...);
+ extern label_text make_label_text_n (bool can_colorize,
+ 				     unsigned HOST_WIDE_INT n,
+ 				     const char *singular_fmt,
+ 				     const char *plural_fmt, ...);
  
  extern bool fndecl_has_gimple_body_p (tree fndecl);
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/analyzer.opt gcc-13.1.0/gcc/analyzer/analyzer.opt
*** gcc-12.2.0/gcc/analyzer/analyzer.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/analyzer.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; analyzer.opt -- Options for the analyzer.
  
! ; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; analyzer.opt -- Options for the analyzer.
  
! ; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** The minimum number of supernodes within
*** 54,59 ****
--- 54,67 ----
  Common Joined UInteger Var(param_analyzer_max_enodes_for_full_dump) Init(200) Param
  The maximum depth of exploded nodes that should appear in a dot dump before switching to a less verbose format.
  
+ Wanalyzer-allocation-size
+ Common Var(warn_analyzer_allocation_size) Init(1) Warning
+ Warn about code paths in which a pointer to a buffer is assigned to an incompatible type.
+ 
+ Wanalyzer-deref-before-check
+ Common Var(warn_analyzer_deref_before_check) Init(1) Warning
+ Warn about code paths in which a pointer is checked for NULL after it has already been dereferenced.
+ 
  Wanalyzer-double-fclose
  Common Var(warn_analyzer_double_fclose) Init(1) Warning
  Warn about code paths in which a stdio FILE can be closed more than once.
*************** Wanalyzer-exposure-through-output-file
*** 66,71 ****
--- 74,111 ----
  Common Var(warn_analyzer_exposure_through_output_file) Init(1) Warning
  Warn about code paths in which sensitive data is written to a file.
  
+ Wanalyzer-exposure-through-uninit-copy
+ Common Var(warn_analyzer_exposure_through_uninit_copy) Init(1) Warning
+ Warn about code paths in which sensitive data is copied across a security boundary.
+ 
+ Wanalyzer-fd-access-mode-mismatch
+ Common Var(warn_analyzer_fd_mode_mismatch) Init(1) Warning
+ Warn about code paths in which read on a write-only file descriptor is attempted, or vice versa.
+ 
+ Wanalyzer-fd-double-close
+ Common Var(warn_analyzer_fd_double_close) Init(1) Warning
+ Warn about code paths in which a file descriptor can be closed more than once.
+ 
+ Wanalyzer-fd-leak
+ Common Var(warn_analyzer_fd_leak) Init(1) Warning
+ Warn about code paths in which a file descriptor is not closed.
+ 
+ Wanalyzer-fd-phase-mismatch
+ Common Var(warn_analyzer_fd_phase_mismatch) Init(1) Warning
+ Warn about code paths in which an operation is attempted in the wrong phase of a file descriptor's lifetime.
+ 
+ Wanalyzer-fd-type-mismatch
+ Common Var(warn_analyzer_fd_type_mismatch) Init(1) Warning
+ Warn about code paths in which an operation is attempted on the wrong type of file descriptor.
+ 
+ Wanalyzer-fd-use-after-close
+ Common Var(warn_analyzer_fd_use_after_close) Init(1) Warning
+ Warn about code paths in which a read or write is performed on a closed file descriptor.
+ 
+ Wanalyzer-fd-use-without-check
+ Common Var(warn_analyzer_fd_use_without_check) Init(1) Warning
+ Warn about code paths in which a file descriptor is used without being checked for validity.
+ 
  Wanalyzer-file-leak
  Common Var(warn_analyzer_file_leak) Init(1) Warning
  Warn about code paths in which a stdio FILE is not closed.
*************** Wanalyzer-free-of-non-heap
*** 74,79 ****
--- 114,131 ----
  Common Var(warn_analyzer_free_of_non_heap) Init(1) Warning
  Warn about code paths in which a non-heap pointer is freed.
  
+ Wanalyzer-imprecise-fp-arithmetic
+ Common Var(warn_analyzer_imprecise_fp_arithmetic) Init(1) Warning
+ Warn about code paths in which floating-point arithmetic is used in locations where precise computation is needed.
+ 
+ Wanalyzer-infinite-recursion
+ Common Var(warn_analyzer_infinite_recursion) Init(1) Warning
+ Warn about code paths which appear to lead to infinite recursion.
+ 
+ Wanalyzer-jump-through-null
+ Common Var(warn_analyzer_jump_through_null) Init(1) Warning
+ Warn about code paths in which a NULL function pointer is called.
+ 
  Wanalyzer-malloc-leak
  Common Var(warn_analyzer_malloc_leak) Init(1) Warning
  Warn about code paths in which a heap-allocated pointer leaks.
*************** Wanalyzer-mismatching-deallocation
*** 82,87 ****
--- 134,143 ----
  Common Var(warn_analyzer_mismatching_deallocation) Init(1) Warning
  Warn about code paths in which the wrong deallocation function is called.
  
+ Wanalyzer-out-of-bounds
+ Common Var(warn_analyzer_out_of_bounds) Init(1) Warning
+ Warn about code paths in which a write or read to a buffer is out-of-bounds.
+ 
  Wanalyzer-possible-null-argument
  Common Var(warn_analyzer_possible_null_argument) Init(1) Warning
  Warn about code paths in which a possibly-NULL value is passed to a must-not-be-NULL function argument.
*************** Wanalyzer-null-dereference
*** 102,107 ****
--- 158,167 ----
  Common Var(warn_analyzer_null_dereference) Init(1) Warning
  Warn about code paths in which a NULL pointer is dereferenced.
  
+ Wanalyzer-putenv-of-auto-var
+ Common Var(warn_analyzer_putenv_of_auto_var) Init(1) Warning
+ Warn about code paths in which an on-stack buffer is passed to putenv.
+ 
  Wanalyzer-shift-count-negative
  Common Var(warn_analyzer_shift_count_negative) Init(1) Warning
  Warn about code paths in which a shift with negative count is attempted.
*************** Wanalyzer-tainted-array-index
*** 122,127 ****
--- 182,191 ----
  Common Var(warn_analyzer_tainted_array_index) Init(1) Warning
  Warn about code paths in which an unsanitized value is used as an array index.
  
+ Wanalyzer-tainted-assertion
+ Common Var(warn_analyzer_tainted_assertion) Init(1) Warning
+ Warn about code paths in which an 'assert()' is made involving an unsanitized value.
+ 
  Wanalyzer-tainted-divisor
  Common Var(warn_analyzer_tainted_divisor) Init(1) Warning
  Warn about code paths in which an unsanitized value is used as a divisor.
*************** Wanalyzer-use-of-pointer-in-stale-stack-
*** 142,147 ****
--- 206,227 ----
  Common Var(warn_analyzer_use_of_pointer_in_stale_stack_frame) Init(1) Warning
  Warn about code paths in which a pointer to a stale stack frame is used.
  
+ Wanalyzer-va-arg-type-mismatch
+ Common Var(warn_analyzer_va_arg_type_mismatch) Init(1) Warning
+ Warn about code paths in which va_arg uses the wrong type.
+ 
+ Wanalyzer-va-list-exhausted
+ Common Var(warn_analyzer_va_list_exhausted) Init(1) Warning
+ Warn about code paths in which va_arg is used too many times on a va_list.
+ 
+ Wanalyzer-va-list-leak
+ Common Var(warn_analyzer_va_list_leak) Init(1) Warning
+ Warn about code paths in which va_start or va_copy is used without a corresponding va_end.
+ 
+ Wanalyzer-va-list-use-after-va-end
+ Common Var(warn_analyzer_va_list_use_after_va_end) Init(1) Warning
+ Warn about code paths in which a va_list is used after va_end.
+ 
  Wanalyzer-write-to-const
  Common Var(warn_analyzer_write_to_const) Init(1) Warning
  Warn about code paths which attempt to write to a const object.
*************** fanalyzer-state-merge
*** 182,187 ****
--- 262,271 ----
  Common Var(flag_analyzer_state_merge) Init(1)
  Merge similar-enough states during analysis.
  
+ fanalyzer-suppress-followups
+ Common Var(flag_analyzer_suppress_followups) Init(1)
+ Stop exploring an execution path after certain diagnostics.
+ 
  fanalyzer-transitivity
  Common Var(flag_analyzer_transitivity) Init(0)
  Enable transitivity of constraints during analysis.
*************** fanalyzer-call-summaries
*** 190,195 ****
--- 274,283 ----
  Common Var(flag_analyzer_call_summaries) Init(0)
  Approximate the effect of function calls to simplify analysis.
  
+ fanalyzer-undo-inlining
+ Common Var(flag_analyzer_undo_inlining) Init(1)
+ Try to reconstruct function calls and returns after inlining.
+ 
  fanalyzer-verbose-edges
  Common Var(flag_analyzer_verbose_edges) Init(0)
  Emit more verbose descriptions of control flow in diagnostics.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/bar-chart.cc gcc-13.1.0/gcc/analyzer/bar-chart.cc
*** gcc-12.2.0/gcc/analyzer/bar-chart.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/bar-chart.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/bar-chart.h gcc-13.1.0/gcc/analyzer/bar-chart.h
*** gcc-12.2.0/gcc/analyzer/bar-chart.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/bar-chart.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Support for plotting bar charts in dumps.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/bounds-checking.cc gcc-13.1.0/gcc/analyzer/bounds-checking.cc
*** gcc-12.2.0/gcc/analyzer/bounds-checking.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/bounds-checking.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,943 ----
+ /* Bounds-checking of reads and writes to memory regions.
+    Copyright (C) 2019-2023 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "make-unique.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "diagnostic-core.h"
+ #include "diagnostic-metadata.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/checker-event.h"
+ #include "analyzer/checker-path.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Abstract base class for all out-of-bounds warnings.  */
+ 
+ class out_of_bounds : public pending_diagnostic
+ {
+ public:
+   out_of_bounds (const region *reg, tree diag_arg)
+   : m_reg (reg), m_diag_arg (diag_arg)
+   {}
+ 
+   bool subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     const out_of_bounds &other
+       (static_cast <const out_of_bounds &>(base_other));
+     return (m_reg == other.m_reg
+ 	    && pending_diagnostic::same_tree_p (m_diag_arg, other.m_diag_arg));
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_out_of_bounds;
+   }
+ 
+   void mark_interesting_stuff (interesting_t *interest) final override
+   {
+     interest->add_region_creation (m_reg);
+   }
+ 
+   void add_region_creation_events (const region *,
+ 				   tree capacity,
+ 				   const event_loc_info &loc_info,
+ 				   checker_path &emission_path) override
+   {
+     /* The memory space is described in the diagnostic message itself,
+        so we don't need an event for that.  */
+     if (capacity)
+       emission_path.add_event
+ 	(make_unique<region_creation_event_capacity> (capacity, loc_info));
+   }
+ 
+ protected:
+   enum memory_space get_memory_space () const
+   {
+     return m_reg->get_memory_space ();
+   }
+ 
+   /* Potentially add a note about valid ways to index this array, such
+      as (given "int arr[10];"):
+        note: valid subscripts for 'arr' are '[0]' to '[9]'
+      We print the '[' and ']' characters so as to express the valid
+      subscripts using C syntax, rather than just as byte ranges,
+      which hopefully is more clear to the user.  */
+   void
+   maybe_describe_array_bounds (location_t loc) const
+   {
+     if (!m_diag_arg)
+       return;
+     tree t = TREE_TYPE (m_diag_arg);
+     if (!t)
+       return;
+     if (TREE_CODE (t) != ARRAY_TYPE)
+       return;
+     tree domain = TYPE_DOMAIN (t);
+     if (!domain)
+       return;
+     tree max_idx = TYPE_MAX_VALUE (domain);
+     if (!max_idx)
+       return;
+     tree min_idx = TYPE_MIN_VALUE (domain);
+     inform (loc,
+ 	    "valid subscripts for %qE are %<[%E]%> to %<[%E]%>",
+ 	    m_diag_arg, min_idx, max_idx);
+   }
+ 
+   const region *m_reg;
+   tree m_diag_arg;
+ };
+ 
+ /* Abstract base class for all out-of-bounds warnings where the
+    out-of-bounds range is concrete.  */
+ 
+ class concrete_out_of_bounds : public out_of_bounds
+ {
+ public:
+   concrete_out_of_bounds (const region *reg, tree diag_arg,
+ 			  byte_range out_of_bounds_range)
+   : out_of_bounds (reg, diag_arg),
+     m_out_of_bounds_range (out_of_bounds_range)
+   {}
+ 
+   bool subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     const concrete_out_of_bounds &other
+       (static_cast <const concrete_out_of_bounds &>(base_other));
+     return (out_of_bounds::subclass_equal_p (other)
+ 	    && m_out_of_bounds_range == other.m_out_of_bounds_range);
+   }
+ 
+ protected:
+   byte_range m_out_of_bounds_range;
+ };
+ 
+ /* Abstract subclass to complaing about concrete out-of-bounds
+    past the end of the buffer.  */
+ 
+ class concrete_past_the_end : public concrete_out_of_bounds
+ {
+ public:
+   concrete_past_the_end (const region *reg, tree diag_arg, byte_range range,
+ 			 tree byte_bound)
+   : concrete_out_of_bounds (reg, diag_arg, range), m_byte_bound (byte_bound)
+   {}
+ 
+   bool
+   subclass_equal_p (const pending_diagnostic &base_other) const final override
+   {
+     const concrete_past_the_end &other
+       (static_cast <const concrete_past_the_end &>(base_other));
+     return (concrete_out_of_bounds::subclass_equal_p (other)
+ 	    && pending_diagnostic::same_tree_p (m_byte_bound,
+ 						other.m_byte_bound));
+   }
+ 
+   void add_region_creation_events (const region *,
+ 				   tree,
+ 				   const event_loc_info &loc_info,
+ 				   checker_path &emission_path) final override
+   {
+     if (m_byte_bound && TREE_CODE (m_byte_bound) == INTEGER_CST)
+       emission_path.add_event
+ 	(make_unique<region_creation_event_capacity> (m_byte_bound, loc_info));
+   }
+ 
+ protected:
+   tree m_byte_bound;
+ };
+ 
+ /* Concrete subclass to complain about buffer overflows.  */
+ 
+ class concrete_buffer_overflow : public concrete_past_the_end
+ {
+ public:
+   concrete_buffer_overflow (const region *reg, tree diag_arg,
+ 		   byte_range range, tree byte_bound)
+   : concrete_past_the_end (reg, diag_arg, range, byte_bound)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "concrete_buffer_overflow";
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     bool warned;
+     switch (get_memory_space ())
+       {
+       default:
+ 	m.add_cwe (787);
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "buffer overflow");
+ 	break;
+       case MEMSPACE_STACK:
+ 	m.add_cwe (121);
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "stack-based buffer overflow");
+ 	break;
+       case MEMSPACE_HEAP:
+ 	m.add_cwe (122);
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "heap-based buffer overflow");
+ 	break;
+       }
+ 
+     if (warned)
+       {
+ 	if (wi::fits_uhwi_p (m_out_of_bounds_range.m_size_in_bytes))
+ 	  {
+ 	    unsigned HOST_WIDE_INT num_bad_bytes
+ 	      = m_out_of_bounds_range.m_size_in_bytes.to_uhwi ();
+ 	    if (m_diag_arg)
+ 	      inform_n (rich_loc->get_loc (),
+ 			num_bad_bytes,
+ 			"write of %wu byte to beyond the end of %qE",
+ 			"write of %wu bytes to beyond the end of %qE",
+ 			num_bad_bytes,
+ 			m_diag_arg);
+ 	    else
+ 	      inform_n (rich_loc->get_loc (),
+ 			num_bad_bytes,
+ 			"write of %wu byte to beyond the end of the region",
+ 			"write of %wu bytes to beyond the end of the region",
+ 			num_bad_bytes);
+ 	  }
+ 	else if (m_diag_arg)
+ 	  inform (rich_loc->get_loc (),
+ 		  "write to beyond the end of %qE",
+ 		  m_diag_arg);
+ 
+ 	maybe_describe_array_bounds (rich_loc->get_loc ());
+       }
+ 
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev)
+   final override
+   {
+     byte_size_t start = m_out_of_bounds_range.get_start_byte_offset ();
+     byte_size_t end = m_out_of_bounds_range.get_last_byte_offset ();
+     char start_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (start, start_buf, SIGNED);
+     char end_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (end, end_buf, SIGNED);
+ 
+     if (start == end)
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds write at byte %s but %qE"
+ 				     " ends at byte %E", start_buf, m_diag_arg,
+ 							 m_byte_bound);
+ 	return ev.formatted_print ("out-of-bounds write at byte %s but region"
+ 				   " ends at byte %E", start_buf,
+ 						       m_byte_bound);
+       }
+     else
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds write from byte %s till"
+ 				     " byte %s but %qE ends at byte %E",
+ 				     start_buf, end_buf, m_diag_arg,
+ 				     m_byte_bound);
+ 	return ev.formatted_print ("out-of-bounds write from byte %s till"
+ 				   " byte %s but region ends at byte %E",
+ 				   start_buf, end_buf, m_byte_bound);
+       }
+   }
+ };
+ 
+ /* Concrete subclass to complain about buffer over-reads.  */
+ 
+ class concrete_buffer_over_read : public concrete_past_the_end
+ {
+ public:
+   concrete_buffer_over_read (const region *reg, tree diag_arg,
+ 			     byte_range range, tree byte_bound)
+   : concrete_past_the_end (reg, diag_arg, range, byte_bound)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "concrete_buffer_over_read";
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     bool warned;
+     m.add_cwe (126);
+     switch (get_memory_space ())
+       {
+       default:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "buffer over-read");
+ 	break;
+       case MEMSPACE_STACK:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "stack-based buffer over-read");
+ 	break;
+       case MEMSPACE_HEAP:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "heap-based buffer over-read");
+ 	break;
+       }
+ 
+     if (warned)
+       {
+ 	if (wi::fits_uhwi_p (m_out_of_bounds_range.m_size_in_bytes))
+ 	  {
+ 	    unsigned HOST_WIDE_INT num_bad_bytes
+ 	      = m_out_of_bounds_range.m_size_in_bytes.to_uhwi ();
+ 	    if (m_diag_arg)
+ 	      inform_n (rich_loc->get_loc (),
+ 			num_bad_bytes,
+ 			"read of %wu byte from after the end of %qE",
+ 			"read of %wu bytes from after the end of %qE",
+ 			num_bad_bytes,
+ 			m_diag_arg);
+ 	    else
+ 	      inform_n (rich_loc->get_loc (),
+ 			num_bad_bytes,
+ 			"read of %wu byte from after the end of the region",
+ 			"read of %wu bytes from after the end of the region",
+ 			num_bad_bytes);
+ 	  }
+ 	else if (m_diag_arg)
+ 	  inform (rich_loc->get_loc (),
+ 		  "read from after the end of %qE",
+ 		  m_diag_arg);
+ 
+ 	maybe_describe_array_bounds (rich_loc->get_loc ());
+       }
+ 
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev)
+   final override
+   {
+     byte_size_t start = m_out_of_bounds_range.get_start_byte_offset ();
+     byte_size_t end = m_out_of_bounds_range.get_last_byte_offset ();
+     char start_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (start, start_buf, SIGNED);
+     char end_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (end, end_buf, SIGNED);
+ 
+     if (start == end)
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds read at byte %s but %qE"
+ 				     " ends at byte %E", start_buf, m_diag_arg,
+ 							 m_byte_bound);
+ 	return ev.formatted_print ("out-of-bounds read at byte %s but region"
+ 				   " ends at byte %E", start_buf,
+ 						       m_byte_bound);
+       }
+     else
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds read from byte %s till"
+ 				     " byte %s but %qE ends at byte %E",
+ 				     start_buf, end_buf, m_diag_arg,
+ 				     m_byte_bound);
+ 	return ev.formatted_print ("out-of-bounds read from byte %s till"
+ 				   " byte %s but region ends at byte %E",
+ 				   start_buf, end_buf, m_byte_bound);
+       }
+   }
+ };
+ 
+ /* Concrete subclass to complain about buffer underwrites.  */
+ 
+ class concrete_buffer_underwrite : public concrete_out_of_bounds
+ {
+ public:
+   concrete_buffer_underwrite (const region *reg, tree diag_arg,
+ 			      byte_range range)
+   : concrete_out_of_bounds (reg, diag_arg, range)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "concrete_buffer_underwrite";
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     bool warned;
+     m.add_cwe (124);
+     switch (get_memory_space ())
+       {
+       default:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "buffer underwrite");
+ 	break;
+       case MEMSPACE_STACK:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "stack-based buffer underwrite");
+ 	break;
+       case MEMSPACE_HEAP:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "heap-based buffer underwrite");
+ 	break;
+       }
+     if (warned)
+       maybe_describe_array_bounds (rich_loc->get_loc ());
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev)
+   final override
+   {
+     byte_size_t start = m_out_of_bounds_range.get_start_byte_offset ();
+     byte_size_t end = m_out_of_bounds_range.get_last_byte_offset ();
+     char start_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (start, start_buf, SIGNED);
+     char end_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (end, end_buf, SIGNED);
+ 
+     if (start == end)
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds write at byte %s but %qE"
+ 				     " starts at byte 0", start_buf,
+ 							  m_diag_arg);
+ 	return ev.formatted_print ("out-of-bounds write at byte %s but region"
+ 				   " starts at byte 0", start_buf);
+       }
+     else
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds write from byte %s till"
+ 				     " byte %s but %qE starts at byte 0",
+ 				     start_buf, end_buf, m_diag_arg);
+ 	return ev.formatted_print ("out-of-bounds write from byte %s till"
+ 				   " byte %s but region starts at byte 0",
+ 				   start_buf, end_buf);;
+       }
+   }
+ };
+ 
+ /* Concrete subclass to complain about buffer under-reads.  */
+ 
+ class concrete_buffer_under_read : public concrete_out_of_bounds
+ {
+ public:
+   concrete_buffer_under_read (const region *reg, tree diag_arg,
+ 			      byte_range range)
+   : concrete_out_of_bounds (reg, diag_arg, range)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "concrete_buffer_under_read";
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     bool warned;
+     m.add_cwe (127);
+     switch (get_memory_space ())
+       {
+       default:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "buffer under-read");
+ 	break;
+       case MEMSPACE_STACK:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "stack-based buffer under-read");
+ 	break;
+       case MEMSPACE_HEAP:
+ 	warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			       "heap-based buffer under-read");
+ 	break;
+       }
+     if (warned)
+       maybe_describe_array_bounds (rich_loc->get_loc ());
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev)
+   final override
+   {
+     byte_size_t start = m_out_of_bounds_range.get_start_byte_offset ();
+     byte_size_t end = m_out_of_bounds_range.get_last_byte_offset ();
+     char start_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (start, start_buf, SIGNED);
+     char end_buf[WIDE_INT_PRINT_BUFFER_SIZE];
+     print_dec (end, end_buf, SIGNED);
+ 
+     if (start == end)
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds read at byte %s but %qE"
+ 				     " starts at byte 0", start_buf,
+ 							  m_diag_arg);
+ 	return ev.formatted_print ("out-of-bounds read at byte %s but region"
+ 				  " starts at byte 0", start_buf);
+       }
+     else
+       {
+ 	if (m_diag_arg)
+ 	  return ev.formatted_print ("out-of-bounds read from byte %s till"
+ 				     " byte %s but %qE starts at byte 0",
+ 				     start_buf, end_buf, m_diag_arg);
+ 	return ev.formatted_print ("out-of-bounds read from byte %s till"
+ 				   " byte %s but region starts at byte 0",
+ 				   start_buf, end_buf);;
+       }
+   }
+ };
+ 
+ /* Abstract class to complain about out-of-bounds read/writes where
+    the values are symbolic.  */
+ 
+ class symbolic_past_the_end : public out_of_bounds
+ {
+ public:
+   symbolic_past_the_end (const region *reg, tree diag_arg, tree offset,
+ 			 tree num_bytes, tree capacity)
+   : out_of_bounds (reg, diag_arg),
+     m_offset (offset),
+     m_num_bytes (num_bytes),
+     m_capacity (capacity)
+   {}
+ 
+   bool
+   subclass_equal_p (const pending_diagnostic &base_other) const final override
+   {
+     const symbolic_past_the_end &other
+       (static_cast <const symbolic_past_the_end &>(base_other));
+     return (out_of_bounds::subclass_equal_p (other)
+ 	    && pending_diagnostic::same_tree_p (m_offset, other.m_offset)
+ 	    && pending_diagnostic::same_tree_p (m_num_bytes, other.m_num_bytes)
+ 	    && pending_diagnostic::same_tree_p (m_capacity, other.m_capacity));
+   }
+ 
+ protected:
+   tree m_offset;
+   tree m_num_bytes;
+   tree m_capacity;
+ };
+ 
+ /* Concrete subclass to complain about overflows with symbolic values.  */
+ 
+ class symbolic_buffer_overflow : public symbolic_past_the_end
+ {
+ public:
+   symbolic_buffer_overflow (const region *reg, tree diag_arg, tree offset,
+ 			    tree num_bytes, tree capacity)
+   : symbolic_past_the_end (reg, diag_arg, offset, num_bytes, capacity)
+   {
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "symbolic_buffer_overflow";
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     switch (get_memory_space ())
+       {
+       default:
+ 	m.add_cwe (787);
+ 	return warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "buffer overflow");
+       case MEMSPACE_STACK:
+ 	m.add_cwe (121);
+ 	return warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "stack-based buffer overflow");
+       case MEMSPACE_HEAP:
+ 	m.add_cwe (122);
+ 	return warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "heap-based buffer overflow");
+       }
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_offset)
+       {
+ 	/* Known offset.  */
+ 	if (m_num_bytes)
+ 	  {
+ 	    /* Known offset, known size.  */
+ 	    if (TREE_CODE (m_num_bytes) == INTEGER_CST)
+ 	      {
+ 		/* Known offset, known constant size.  */
+ 		if (pending_diagnostic::same_tree_p (m_num_bytes,
+ 						     integer_one_node))
+ 		  {
+ 		    /* Singular m_num_bytes.  */
+ 		    if (m_diag_arg)
+ 		      return ev.formatted_print
+ 			("write of %E byte at offset %qE exceeds %qE",
+ 			 m_num_bytes, m_offset, m_diag_arg);
+ 		    else
+ 		      return ev.formatted_print
+ 			("write of %E byte at offset %qE exceeds the buffer",
+ 			 m_num_bytes, m_offset);
+ 		  }
+ 		else
+ 		  {
+ 		    /* Plural m_num_bytes.  */
+ 		    if (m_diag_arg)
+ 		      return ev.formatted_print
+ 			("write of %E bytes at offset %qE exceeds %qE",
+ 			 m_num_bytes, m_offset, m_diag_arg);
+ 		    else
+ 		      return ev.formatted_print
+ 			("write of %E bytes at offset %qE exceeds the buffer",
+ 			 m_num_bytes, m_offset);
+ 		  }
+ 	      }
+ 	    else
+ 	      {
+ 		/* Known offset, known symbolic size.  */
+ 		if (m_diag_arg)
+ 		  return ev.formatted_print
+ 		    ("write of %qE bytes at offset %qE exceeds %qE",
+ 		     m_num_bytes, m_offset, m_diag_arg);
+ 		else
+ 		  return ev.formatted_print
+ 		    ("write of %qE bytes at offset %qE exceeds the buffer",
+ 		     m_num_bytes, m_offset);
+ 	      }
+ 	  }
+ 	else
+ 	  {
+ 	    /* Known offset, unknown size.  */
+ 	    if (m_diag_arg)
+ 	      return ev.formatted_print ("write at offset %qE exceeds %qE",
+ 					 m_offset, m_diag_arg);
+ 	    else
+ 	      return ev.formatted_print ("write at offset %qE exceeds the"
+ 					 " buffer", m_offset);
+ 	  }
+       }
+     /* Unknown offset.  */
+     if (m_diag_arg)
+       return ev.formatted_print ("out-of-bounds write on %qE",
+ 				 m_diag_arg);
+     return ev.formatted_print ("out-of-bounds write");
+   }
+ };
+ 
+ /* Concrete subclass to complain about over-reads with symbolic values.  */
+ 
+ class symbolic_buffer_over_read : public symbolic_past_the_end
+ {
+ public:
+   symbolic_buffer_over_read (const region *reg, tree diag_arg, tree offset,
+ 			     tree num_bytes, tree capacity)
+   : symbolic_past_the_end (reg, diag_arg, offset, num_bytes, capacity)
+   {
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "symbolic_buffer_over_read";
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     m.add_cwe (126);
+     switch (get_memory_space ())
+       {
+       default:
+ 	m.add_cwe (787);
+ 	return warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "buffer over-read");
+       case MEMSPACE_STACK:
+ 	m.add_cwe (121);
+ 	return warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "stack-based buffer over-read");
+       case MEMSPACE_HEAP:
+ 	m.add_cwe (122);
+ 	return warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "heap-based buffer over-read");
+       }
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_offset)
+       {
+ 	/* Known offset.  */
+ 	if (m_num_bytes)
+ 	  {
+ 	    /* Known offset, known size.  */
+ 	    if (TREE_CODE (m_num_bytes) == INTEGER_CST)
+ 	      {
+ 		/* Known offset, known constant size.  */
+ 		if (pending_diagnostic::same_tree_p (m_num_bytes,
+ 						     integer_one_node))
+ 		  {
+ 		    /* Singular m_num_bytes.  */
+ 		    if (m_diag_arg)
+ 		      return ev.formatted_print
+ 			("read of %E byte at offset %qE exceeds %qE",
+ 			 m_num_bytes, m_offset, m_diag_arg);
+ 		    else
+ 		      return ev.formatted_print
+ 			("read of %E byte at offset %qE exceeds the buffer",
+ 			 m_num_bytes, m_offset);
+ 		  }
+ 		else
+ 		  {
+ 		    /* Plural m_num_bytes.  */
+ 		    if (m_diag_arg)
+ 		      return ev.formatted_print
+ 			("read of %E bytes at offset %qE exceeds %qE",
+ 			 m_num_bytes, m_offset, m_diag_arg);
+ 		    else
+ 		      return ev.formatted_print
+ 			("read of %E bytes at offset %qE exceeds the buffer",
+ 			 m_num_bytes, m_offset);
+ 		  }
+ 	      }
+ 	    else
+ 	      {
+ 		/* Known offset, known symbolic size.  */
+ 		if (m_diag_arg)
+ 		  return ev.formatted_print
+ 		    ("read of %qE bytes at offset %qE exceeds %qE",
+ 		     m_num_bytes, m_offset, m_diag_arg);
+ 		else
+ 		  return ev.formatted_print
+ 		    ("read of %qE bytes at offset %qE exceeds the buffer",
+ 		     m_num_bytes, m_offset);
+ 	      }
+ 	  }
+ 	else
+ 	  {
+ 	    /* Known offset, unknown size.  */
+ 	    if (m_diag_arg)
+ 	      return ev.formatted_print ("read at offset %qE exceeds %qE",
+ 					 m_offset, m_diag_arg);
+ 	    else
+ 	      return ev.formatted_print ("read at offset %qE exceeds the"
+ 					 " buffer", m_offset);
+ 	  }
+       }
+     /* Unknown offset.  */
+     if (m_diag_arg)
+       return ev.formatted_print ("out-of-bounds read on %qE",
+ 				 m_diag_arg);
+     return ev.formatted_print ("out-of-bounds read");
+   }
+ };
+ 
+ /* Check whether an access is past the end of the BASE_REG.  */
+ 
+ void
+ region_model::check_symbolic_bounds (const region *base_reg,
+ 				     const svalue *sym_byte_offset,
+ 				     const svalue *num_bytes_sval,
+ 				     const svalue *capacity,
+ 				     enum access_direction dir,
+ 				     region_model_context *ctxt) const
+ {
+   gcc_assert (ctxt);
+ 
+   const svalue *next_byte
+     = m_mgr->get_or_create_binop (num_bytes_sval->get_type (), PLUS_EXPR,
+ 				  sym_byte_offset, num_bytes_sval);
+ 
+   if (eval_condition (next_byte, GT_EXPR, capacity).is_true ())
+     {
+       tree diag_arg = get_representative_tree (base_reg);
+       tree offset_tree = get_representative_tree (sym_byte_offset);
+       tree num_bytes_tree = get_representative_tree (num_bytes_sval);
+       tree capacity_tree = get_representative_tree (capacity);
+       switch (dir)
+ 	{
+ 	default:
+ 	  gcc_unreachable ();
+ 	  break;
+ 	case DIR_READ:
+ 	  ctxt->warn (make_unique<symbolic_buffer_over_read> (base_reg,
+ 							      diag_arg,
+ 							      offset_tree,
+ 							      num_bytes_tree,
+ 							      capacity_tree));
+ 	  break;
+ 	case DIR_WRITE:
+ 	  ctxt->warn (make_unique<symbolic_buffer_overflow> (base_reg,
+ 							     diag_arg,
+ 							     offset_tree,
+ 							     num_bytes_tree,
+ 							     capacity_tree));
+ 	  break;
+ 	}
+     }
+ }
+ 
+ static tree
+ maybe_get_integer_cst_tree (const svalue *sval)
+ {
+   tree cst_tree = sval->maybe_get_constant ();
+   if (cst_tree && TREE_CODE (cst_tree) == INTEGER_CST)
+     return cst_tree;
+ 
+   return NULL_TREE;
+ }
+ 
+ /* May complain when the access on REG is out-of-bounds.  */
+ 
+ void
+ region_model::check_region_bounds (const region *reg,
+ 				   enum access_direction dir,
+ 				   region_model_context *ctxt) const
+ {
+   gcc_assert (ctxt);
+ 
+   /* Get the offset.  */
+   region_offset reg_offset = reg->get_offset (m_mgr);
+   const region *base_reg = reg_offset.get_base_region ();
+ 
+   /* Bail out on symbolic regions.
+      (e.g. because the analyzer did not see previous offsets on the latter,
+      it might think that a negative access is before the buffer).  */
+   if (base_reg->symbolic_p ())
+     return;
+ 
+   /* Find out how many bytes were accessed.  */
+   const svalue *num_bytes_sval = reg->get_byte_size_sval (m_mgr);
+   tree num_bytes_tree = maybe_get_integer_cst_tree (num_bytes_sval);
+   /* Bail out if 0 bytes are accessed.  */
+   if (num_bytes_tree && zerop (num_bytes_tree))
+     return;
+ 
+   /* Get the capacity of the buffer.  */
+   const svalue *capacity = get_capacity (base_reg);
+   tree cst_capacity_tree = maybe_get_integer_cst_tree (capacity);
+ 
+   /* The constant offset from a pointer is represented internally as a sizetype
+      but should be interpreted as a signed value here.  The statement below
+      converts the offset from bits to bytes and then to a signed integer with
+      the same precision the sizetype has on the target system.
+ 
+      For example, this is needed for out-of-bounds-3.c test1 to pass when
+      compiled with a 64-bit gcc build targeting 32-bit systems.  */
+   byte_offset_t offset;
+   if (!reg_offset.symbolic_p ())
+     offset = wi::sext (reg_offset.get_bit_offset () >> LOG2_BITS_PER_UNIT,
+ 		       TYPE_PRECISION (size_type_node));
+ 
+   /* If either the offset or the number of bytes accessed are symbolic,
+      we have to reason about symbolic values.  */
+   if (reg_offset.symbolic_p () || !num_bytes_tree)
+     {
+       const svalue* byte_offset_sval;
+       if (!reg_offset.symbolic_p ())
+ 	{
+ 	  tree offset_tree = wide_int_to_tree (integer_type_node, offset);
+ 	  byte_offset_sval
+ 	    = m_mgr->get_or_create_constant_svalue (offset_tree);
+ 	}
+       else
+ 	byte_offset_sval = reg_offset.get_symbolic_byte_offset ();
+       check_symbolic_bounds (base_reg, byte_offset_sval, num_bytes_sval,
+ 			     capacity, dir, ctxt);
+       return;
+     }
+ 
+   /* Otherwise continue to check with concrete values.  */
+   byte_range out (0, 0);
+   /* NUM_BYTES_TREE should always be interpreted as unsigned.  */
+   byte_offset_t num_bytes_unsigned = wi::to_offset (num_bytes_tree);
+   byte_range read_bytes (offset, num_bytes_unsigned);
+   /* If read_bytes has a subset < 0, we do have an underwrite.  */
+   if (read_bytes.falls_short_of_p (0, &out))
+     {
+       tree diag_arg = get_representative_tree (base_reg);
+       switch (dir)
+ 	{
+ 	default:
+ 	  gcc_unreachable ();
+ 	  break;
+ 	case DIR_READ:
+ 	  ctxt->warn (make_unique<concrete_buffer_under_read> (reg, diag_arg,
+ 							       out));
+ 	  break;
+ 	case DIR_WRITE:
+ 	  ctxt->warn (make_unique<concrete_buffer_underwrite> (reg, diag_arg,
+ 							       out));
+ 	  break;
+ 	}
+     }
+ 
+   /* For accesses past the end, we do need a concrete capacity.  No need to
+      do a symbolic check here because the inequality check does not reason
+      whether constants are greater than symbolic values.  */
+   if (!cst_capacity_tree)
+     return;
+ 
+   byte_range buffer (0, wi::to_offset (cst_capacity_tree));
+   /* If READ_BYTES exceeds BUFFER, we do have an overflow.  */
+   if (read_bytes.exceeds_p (buffer, &out))
+     {
+       tree byte_bound = wide_int_to_tree (size_type_node,
+ 					  buffer.get_next_byte_offset ());
+       tree diag_arg = get_representative_tree (base_reg);
+ 
+       switch (dir)
+ 	{
+ 	default:
+ 	  gcc_unreachable ();
+ 	  break;
+ 	case DIR_READ:
+ 	  ctxt->warn (make_unique<concrete_buffer_over_read> (reg, diag_arg,
+ 							      out, byte_bound));
+ 	  break;
+ 	case DIR_WRITE:
+ 	  ctxt->warn (make_unique<concrete_buffer_overflow> (reg, diag_arg,
+ 							     out, byte_bound));
+ 	  break;
+ 	}
+     }
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-details.cc gcc-13.1.0/gcc/analyzer/call-details.cc
*** gcc-12.2.0/gcc/analyzer/call-details.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/call-details.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,231 ----
+ /* Helper class for handling a call with specific arguments.
+    Copyright (C) 2020-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "diagnostic-core.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "diagnostic.h"
+ #include "tree-diagnostic.h" /* for default_tree_printer.  */
+ #include "gimple-pretty-print.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/call-details.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class call_details.  */
+ 
+ /* call_details's ctor.  */
+ 
+ call_details::call_details (const gcall *call, region_model *model,
+ 			    region_model_context *ctxt)
+ : m_call (call), m_model (model), m_ctxt (ctxt),
+   m_lhs_type (NULL_TREE), m_lhs_region (NULL)
+ {
+   m_lhs_type = NULL_TREE;
+   if (tree lhs = gimple_call_lhs (call))
+     {
+       m_lhs_region = model->get_lvalue (lhs, ctxt);
+       m_lhs_type = TREE_TYPE (lhs);
+     }
+ }
+ 
+ /* Get the manager from m_model.  */
+ 
+ region_model_manager *
+ call_details::get_manager () const
+ {
+   return m_model->get_manager ();
+ }
+ 
+ /* Get any logger associated with this object.  */
+ 
+ logger *
+ call_details::get_logger () const
+ {
+   if (m_ctxt)
+     return m_ctxt->get_logger ();
+   else
+     return NULL;
+ }
+ 
+ /* Get any uncertainty_t associated with the region_model_context.  */
+ 
+ uncertainty_t *
+ call_details::get_uncertainty () const
+ {
+   if (m_ctxt)
+     return m_ctxt->get_uncertainty ();
+   else
+     return NULL;
+ }
+ 
+ /* If the callsite has a left-hand-side region, set it to RESULT
+    and return true.
+    Otherwise do nothing and return false.  */
+ 
+ bool
+ call_details::maybe_set_lhs (const svalue *result) const
+ {
+   gcc_assert (result);
+   if (m_lhs_region)
+     {
+       m_model->set_value (m_lhs_region, result, m_ctxt);
+       return true;
+     }
+   else
+     return false;
+ }
+ 
+ /* Return the number of arguments used by the call statement.  */
+ 
+ unsigned
+ call_details::num_args () const
+ {
+   return gimple_call_num_args (m_call);
+ }
+ 
+ /* Return true if argument IDX is a size_t (or compatible with it).  */
+ 
+ bool
+ call_details::arg_is_size_p (unsigned idx) const
+ {
+   return types_compatible_p (get_arg_type (idx), size_type_node);
+ }
+ 
+ /* Get the location of the call statement.  */
+ 
+ location_t
+ call_details::get_location () const
+ {
+   return m_call->location;
+ }
+ 
+ /* Get argument IDX at the callsite as a tree.  */
+ 
+ tree
+ call_details::get_arg_tree (unsigned idx) const
+ {
+   return gimple_call_arg (m_call, idx);
+ }
+ 
+ /* Get the type of argument IDX.  */
+ 
+ tree
+ call_details::get_arg_type (unsigned idx) const
+ {
+   return TREE_TYPE (gimple_call_arg (m_call, idx));
+ }
+ 
+ /* Get argument IDX at the callsite as an svalue.  */
+ 
+ const svalue *
+ call_details::get_arg_svalue (unsigned idx) const
+ {
+   tree arg = get_arg_tree (idx);
+   return m_model->get_rvalue (arg, m_ctxt);
+ }
+ 
+ /* Attempt to get the string literal for argument IDX, or return NULL
+    otherwise.
+    For use when implementing "__analyzer_*" functions that take
+    string literals.  */
+ 
+ const char *
+ call_details::get_arg_string_literal (unsigned idx) const
+ {
+   const svalue *str_arg = get_arg_svalue (idx);
+   if (const region *pointee = str_arg->maybe_get_region ())
+     if (const string_region *string_reg = pointee->dyn_cast_string_region ())
+       {
+ 	tree string_cst = string_reg->get_string_cst ();
+ 	return TREE_STRING_POINTER (string_cst);
+       }
+   return NULL;
+ }
+ 
+ /* Attempt to get the fndecl used at this call, if known, or NULL_TREE
+    otherwise.  */
+ 
+ tree
+ call_details::get_fndecl_for_call () const
+ {
+   return m_model->get_fndecl_for_call (m_call, m_ctxt);
+ }
+ 
+ /* Dump a multiline representation of this call to PP.  */
+ 
+ void
+ call_details::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   pp_string (pp, "gcall: ");
+   pp_gimple_stmt_1 (pp, m_call, 0 /* spc */, TDF_NONE /* flags */);
+   pp_newline (pp);
+   pp_string (pp, "return region: ");
+   if (m_lhs_region)
+     m_lhs_region->dump_to_pp (pp, simple);
+   else
+     pp_string (pp, "NULL");
+   pp_newline (pp);
+   for (unsigned i = 0; i < gimple_call_num_args (m_call); i++)
+     {
+       const svalue *arg_sval = get_arg_svalue (i);
+       pp_printf (pp, "arg %i: ", i);
+       arg_sval->dump_to_pp (pp, simple);
+       pp_newline (pp);
+     }
+ }
+ 
+ /* Dump a multiline representation of this call to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ call_details::dump (bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump_to_pp (&pp, simple);
+   pp_flush (&pp);
+ }
+ 
+ /* Get a conjured_svalue for this call for REG,
+    and purge any state already relating to that conjured_svalue.  */
+ 
+ const svalue *
+ call_details::get_or_create_conjured_svalue (const region *reg) const
+ {
+   region_model_manager *mgr = m_model->get_manager ();
+   return mgr->get_or_create_conjured_svalue (reg->get_type (), m_call, reg,
+ 					     conjured_purge (m_model, m_ctxt));
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-details.h gcc-13.1.0/gcc/analyzer/call-details.h
*** gcc-12.2.0/gcc/analyzer/call-details.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/call-details.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,77 ----
+ /* Helper class for handling a call with specific arguments.
+    Copyright (C) 2019-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_CALL_DETAILS_H
+ #define GCC_ANALYZER_CALL_DETAILS_H
+ 
+ namespace ana {
+ 
+ /* Helper class for handling calls to functions with known behavior.  */
+ 
+ class call_details
+ {
+ public:
+   call_details (const gcall *call, region_model *model,
+ 		region_model_context *ctxt);
+ 
+   region_model *get_model () const { return m_model; }
+   region_model_manager *get_manager () const;
+   region_model_context *get_ctxt () const { return m_ctxt; }
+   logger *get_logger () const;
+ 
+   uncertainty_t *get_uncertainty () const;
+   tree get_lhs_type () const { return m_lhs_type; }
+   const region *get_lhs_region () const { return m_lhs_region; }
+ 
+   bool maybe_set_lhs (const svalue *result) const;
+ 
+   unsigned num_args () const;
+   bool arg_is_pointer_p (unsigned idx) const
+   {
+     return POINTER_TYPE_P (get_arg_type (idx));
+   }
+   bool arg_is_size_p (unsigned idx) const;
+ 
+   const gcall *get_call_stmt () const { return m_call; }
+   location_t get_location () const;
+ 
+   tree get_arg_tree (unsigned idx) const;
+   tree get_arg_type (unsigned idx) const;
+   const svalue *get_arg_svalue (unsigned idx) const;
+   const char *get_arg_string_literal (unsigned idx) const;
+ 
+   tree get_fndecl_for_call () const;
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const;
+   void dump (bool simple) const;
+ 
+   const svalue *get_or_create_conjured_svalue (const region *) const;
+ 
+ private:
+   const gcall *m_call;
+   region_model *m_model;
+   region_model_context *m_ctxt;
+   tree m_lhs_type;
+   const region *m_lhs_region;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_CALL_DETAILS_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-info.cc gcc-13.1.0/gcc/analyzer/call-info.cc
*** gcc-12.2.0/gcc/analyzer/call-info.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/call-info.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subclasses of custom_edge_info for describing outcomes of function calls.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subclasses of custom_edge_info for describing outcomes of function calls.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 30,40 ****
  #include "options.h"
  #include "cgraph.h"
  #include "tree-pretty-print.h"
- #include "tristate.h"
  #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
--- 31,37 ----
*************** along with GCC; see the file COPYING3.
*** 56,72 ****
  #include "diagnostic-path.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/diagnostic-manager.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
- #include "shortest-paths.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/call-info.h"
  
  #if ENABLE_ANALYZER
  
  namespace ana {
  
! /* class call_info : public custom_eedge_info_t.  */
  
  /* Implementation of custom_edge_info::print vfunc for call_info:
     use get_desc to get a label_text, and print it to PP.  */
--- 53,78 ----
  #include "diagnostic-path.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/diagnostic-manager.h"
  #include "analyzer/exploded-graph.h"
+ #include "analyzer/call-details.h"
  #include "analyzer/call-info.h"
+ #include "make-unique.h"
  
  #if ENABLE_ANALYZER
  
  namespace ana {
  
! /* class custom_edge_info.  */
! 
! bool
! custom_edge_info::update_state (program_state *state,
! 				const exploded_edge *eedge,
! 				region_model_context *ctxt) const
! {
!   return update_model (state->m_region_model, eedge, ctxt);
! }
! 
! /* class call_info : public custom_edge_info.  */
  
  /* Implementation of custom_edge_info::print vfunc for call_info:
     use get_desc to get a label_text, and print it to PP.  */
*************** void
*** 75,82 ****
  call_info::print (pretty_printer *pp) const
  {
    label_text desc (get_desc (pp_show_color (pp)));
!   pp_string (pp, desc.m_buffer);
!   desc.maybe_free ();
  }
  
  /* Implementation of custom_edge_info::add_events_to_path vfunc for
--- 81,87 ----
  call_info::print (pretty_printer *pp) const
  {
    label_text desc (get_desc (pp_show_color (pp)));
!   pp_string (pp, desc.get ());
  }
  
  /* Implementation of custom_edge_info::add_events_to_path vfunc for
*************** call_info::add_events_to_path (checker_p
*** 90,102 ****
    class call_event : public custom_event
    {
    public:
!     call_event (location_t loc, tree fndecl, int depth,
  		const call_info *call_info)
!       : custom_event (loc, fndecl, depth),
! 	m_call_info (call_info)
      {}
  
!     label_text get_desc (bool can_colorize) const
      {
        return m_call_info->get_desc (can_colorize);
      }
--- 95,107 ----
    class call_event : public custom_event
    {
    public:
!     call_event (const event_loc_info &loc_info,
  		const call_info *call_info)
!     : custom_event (loc_info),
!       m_call_info (call_info)
      {}
  
!     label_text get_desc (bool can_colorize) const final override
      {
        return m_call_info->get_desc (can_colorize);
      }
*************** call_info::add_events_to_path (checker_p
*** 110,119 ****
    tree caller_fndecl = src_point.get_fndecl ();
    const int stack_depth = src_point.get_stack_depth ();
  
!   emission_path->add_event (new call_event (get_call_stmt ()->location,
! 					    caller_fndecl,
! 					    stack_depth,
! 					    this));
  }
  
  /* Recreate a call_details instance from this call_info.  */
--- 115,125 ----
    tree caller_fndecl = src_point.get_fndecl ();
    const int stack_depth = src_point.get_stack_depth ();
  
!   emission_path->add_event
!     (make_unique<call_event> (event_loc_info (get_call_stmt ()->location,
! 					      caller_fndecl,
! 					      stack_depth),
! 			      this));
  }
  
  /* Recreate a call_details instance from this call_info.  */
*************** call_info::call_info (const call_details
*** 137,160 ****
    gcc_assert (m_fndecl);
  }
  
! /* class success_call_info : public call_info.  */
! 
! /* Implementation of call_info::get_desc vfunc for success_call_info.  */
! 
! label_text
! success_call_info::get_desc (bool can_colorize) const
! {
!   return make_label_text (can_colorize, "when %qE succeeds", get_fndecl ());
! }
! 
! /* class failed_call_info : public call_info.  */
! 
! /* Implementation of call_info::get_desc vfunc for failed_call_info.  */
  
  label_text
! failed_call_info::get_desc (bool can_colorize) const
  {
!   return make_label_text (can_colorize, "when %qE fails", get_fndecl ());
  }
  
  } // namespace ana
--- 143,157 ----
    gcc_assert (m_fndecl);
  }
  
! /* class succeed_or_fail_call_info : public call_info.  */
  
  label_text
! succeed_or_fail_call_info::get_desc (bool can_colorize) const
  {
!   if (m_success)
!     return make_label_text (can_colorize, "when %qE succeeds", get_fndecl ());
!   else
!     return make_label_text (can_colorize, "when %qE fails", get_fndecl ());
  }
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-info.h gcc-13.1.0/gcc/analyzer/call-info.h
*** gcc-12.2.0/gcc/analyzer/call-info.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/call-info.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subclasses of custom_edge_info for describing outcomes of function calls.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subclasses of custom_edge_info for describing outcomes of function calls.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** namespace ana {
*** 30,38 ****
  class call_info : public custom_edge_info
  {
  public:
!   void print (pretty_printer *pp) const FINAL OVERRIDE;
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &eedge) const FINAL OVERRIDE;
  
    const gcall *get_call_stmt () const { return m_call_stmt; }
    tree get_fndecl () const { return m_fndecl; }
--- 30,38 ----
  class call_info : public custom_edge_info
  {
  public:
!   void print (pretty_printer *pp) const final override;
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &eedge) const final override;
  
    const gcall *get_call_stmt () const { return m_call_stmt; }
    tree get_fndecl () const { return m_fndecl; }
*************** private:
*** 51,67 ****
  };
  
  /* Subclass of call_info for a "success" outcome of a call,
!    adding a "when `FNDECL' succeeds" message.
     This is still abstract: the custom_edge_info::update_model vfunc
     must be implemented.  */
  
! class success_call_info : public call_info
  {
  public:
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
  
  protected:
!   success_call_info (const call_details &cd) : call_info (cd) {}
  };
  
  /* Subclass of call_info for a "failure" outcome of a call,
--- 51,86 ----
  };
  
  /* Subclass of call_info for a "success" outcome of a call,
!    adding either a
!      "when `FNDECL' succeeds" message (when 'success' is true)
!    or a
!      "when `FNDECL' fails" message    (when 'success' is false).
     This is still abstract: the custom_edge_info::update_model vfunc
     must be implemented.  */
  
! class succeed_or_fail_call_info : public call_info
  {
  public:
!   label_text get_desc (bool can_colorize) const final override;
  
  protected:
!   succeed_or_fail_call_info (const call_details &cd, bool success)
!    : call_info (cd), m_success (success) {}
! 
!   bool m_success;
! };
! 
! /* Subclass of call_info for a "success" outcome of a call,
!    adding a "when `FNDECL' succeeds" message.
!    This is still abstract: the custom_edge_info::update_model vfunc
!    must be implemented.  */
! 
! class success_call_info : public succeed_or_fail_call_info
! {
! protected:
!   success_call_info (const call_details &cd)
!   : succeed_or_fail_call_info (cd, true)
!   {}
  };
  
  /* Subclass of call_info for a "failure" outcome of a call,
*************** protected:
*** 69,81 ****
     This is still abstract: the custom_edge_info::update_model vfunc
     must be implemented.  */
  
! class failed_call_info : public call_info
  {
- public:
-   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
- 
  protected:
!   failed_call_info (const call_details &cd) : call_info (cd) {}
  };
  
  } // namespace ana
--- 88,99 ----
     This is still abstract: the custom_edge_info::update_model vfunc
     must be implemented.  */
  
! class failed_call_info : public succeed_or_fail_call_info
  {
  protected:
!   failed_call_info (const call_details &cd)
!   : succeed_or_fail_call_info (cd, false)
!   {}
  };
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-string.cc gcc-13.1.0/gcc/analyzer/call-string.cc
*** gcc-12.2.0/gcc/analyzer/call-string.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/call-string.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Call stacks at program points.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Call stacks at program points.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,31 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "pretty-print.h"
  #include "tree.h"
  #include "options.h"
- #include "json.h"
- #include "analyzer/call-string.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cgraph.h"
--- 19,30 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "pretty-print.h"
  #include "tree.h"
  #include "options.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cgraph.h"
*************** along with GCC; see the file COPYING3.
*** 35,40 ****
--- 34,42 ----
  #include "gimple.h"
  #include "gimple-iterator.h"
  #include "digraph.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/call-string.h"
  #include "analyzer/supergraph.h"
  
  #if ENABLE_ANALYZER
*************** call_string::element_t::get_callee_funct
*** 74,118 ****
    return m_callee->get_function ();
  }
  
- /* call_string's copy ctor.  */
- 
- call_string::call_string (const call_string &other)
- : m_elements (other.m_elements.length ())
- {
-   for (const call_string::element_t &e : other.m_elements)
-     m_elements.quick_push (e);
- }
- 
- /* call_string's assignment operator.  */
- 
- call_string&
- call_string::operator= (const call_string &other)
- {
-   // would be much simpler if we could rely on vec<> assignment op
-   m_elements.truncate (0);
-   m_elements.reserve (other.m_elements.length (), true);
-   call_string::element_t *e;
-   int i;
-   FOR_EACH_VEC_ELT (other.m_elements, i, e)
-     m_elements.quick_push (*e);
-   return *this;
- }
- 
- /* call_string's equality operator.  */
- 
- bool
- call_string::operator== (const call_string &other) const
- {
-   if (m_elements.length () != other.m_elements.length ())
-     return false;
-   call_string::element_t *e;
-   int i;
-   FOR_EACH_VEC_ELT (m_elements, i, e)
-     if (*e != other.m_elements[i])
-       return false;
-   return true;
- }
- 
  /* Print this to PP.  */
  
  void
--- 76,81 ----
*************** call_string::to_json () const
*** 160,202 ****
    return arr;
  }
  
! /* Generate a hash value for this call_string.  */
! 
! hashval_t
! call_string::hash () const
! {
!   inchash::hash hstate;
!   for (const call_string::element_t &e : m_elements)
!     hstate.add_ptr (e.m_caller);
!   return hstate.end ();
! }
! 
! /* Push the return superedge for CALL_SEDGE onto the end of this
!    call_string.  */
  
! void
  call_string::push_call (const supergraph &sg,
! 			const call_superedge *call_sedge)
  {
    gcc_assert (call_sedge);
    const return_superedge *return_sedge = call_sedge->get_edge_for_return (sg);
    gcc_assert (return_sedge);
!   call_string::element_t e (return_sedge->m_dest, return_sedge->m_src);
!   m_elements.safe_push (e);
  }
  
! void
  call_string::push_call (const supernode *caller,
! 			const supernode *callee)
  {
    call_string::element_t e (caller, callee);
-   m_elements.safe_push (e);
- }
  
! call_string::element_t
! call_string::pop ()
! {
!   return m_elements.pop();
  }
  
  /* Count the number of times the top-most call site appears in the
--- 123,156 ----
    return arr;
  }
  
! /* Get or create the call_string resulting from pushing the return
!    superedge for CALL_SEDGE onto the end of this call_string.  */
  
! const call_string *
  call_string::push_call (const supergraph &sg,
! 			const call_superedge *call_sedge) const
  {
    gcc_assert (call_sedge);
    const return_superedge *return_sedge = call_sedge->get_edge_for_return (sg);
    gcc_assert (return_sedge);
!   return push_call (return_sedge->m_dest, return_sedge->m_src);
  }
  
! /* Get or create the call_string resulting from pushing the call
!    (caller, callee) onto the end of this call_string.  */
! 
! const call_string *
  call_string::push_call (const supernode *caller,
! 			const supernode *callee) const
  {
    call_string::element_t e (caller, callee);
  
!   if (const call_string **slot = m_children.get (e))
!     return *slot;
! 
!   call_string *result = new call_string (*this, e);
!   m_children.put (e, result);
!   return result;
  }
  
  /* Count the number of times the top-most call site appears in the
*************** call_string::calc_recursion_depth () con
*** 206,212 ****
  {
    if (m_elements.is_empty ())
      return 0;
!   const call_string::element_t top_return_sedge 
      = m_elements[m_elements.length () - 1];
  
    int result = 0;
--- 160,166 ----
  {
    if (m_elements.is_empty ())
      return 0;
!   const call_string::element_t top_return_sedge
      = m_elements[m_elements.length () - 1];
  
    int result = 0;
*************** call_string::calc_recursion_depth () con
*** 216,221 ****
--- 170,191 ----
    return result;
  }
  
+ /* Count the number of times FUN appears in the string.  */
+ 
+ int
+ call_string::count_occurrences_of_function (function *fun) const
+ {
+   int result = 0;
+   for (const call_string::element_t &e : m_elements)
+     {
+       if (e.get_callee_function () == fun)
+ 	result++;
+       if (e.get_caller_function () == fun)
+ 	result++;
+     }
+   return result;
+ }
+ 
  /* Comparator for call strings.
     This implements a version of lexicographical order.
     Return negative if A is before B.
*************** call_string::cmp (const call_string &a,
*** 247,258 ****
        /* Otherwise, compare the node pairs.  */
        const call_string::element_t a_node_pair = a[i];
        const call_string::element_t b_node_pair = b[i];
!       int src_cmp 
!       	= a_node_pair.m_callee->m_index - b_node_pair.m_callee->m_index;
        if (src_cmp)
  	return src_cmp;
!       int dest_cmp 
!       	= a_node_pair.m_caller->m_index - b_node_pair.m_caller->m_index;
        if (dest_cmp)
  	return dest_cmp;
        i++;
--- 217,228 ----
        /* Otherwise, compare the node pairs.  */
        const call_string::element_t a_node_pair = a[i];
        const call_string::element_t b_node_pair = b[i];
!       int src_cmp
! 	= a_node_pair.m_callee->m_index - b_node_pair.m_callee->m_index;
        if (src_cmp)
  	return src_cmp;
!       int dest_cmp
! 	= a_node_pair.m_caller->m_index - b_node_pair.m_caller->m_index;
        if (dest_cmp)
  	return dest_cmp;
        i++;
*************** call_string::cmp (const call_string &a,
*** 260,265 ****
--- 230,245 ----
      }
  }
  
+ /* Comparator for use by vec<const call_string *>::qsort.  */
+ 
+ int
+ call_string::cmp_ptr_ptr (const void *pa, const void *pb)
+ {
+   const call_string *cs_a = *static_cast <const call_string * const *> (pa);
+   const call_string *cs_b = *static_cast <const call_string * const *> (pb);
+   return cmp (*cs_a, *cs_b);
+ }
+ 
  /* Return the pointer to callee of the topmost call in the stack,
     or NULL if stack is empty.  */
  const supernode *
*************** call_string::get_callee_node () const
*** 272,278 ****
  
  /* Return the pointer to caller of the topmost call in the stack,
     or NULL if stack is empty.  */
! const supernode * 
  call_string::get_caller_node () const
  {
    if(m_elements.is_empty ())
--- 252,258 ----
  
  /* Return the pointer to caller of the topmost call in the stack,
     or NULL if stack is empty.  */
! const supernode *
  call_string::get_caller_node () const
  {
    if(m_elements.is_empty ())
*************** call_string::validate () const
*** 290,304 ****
    return;
  #endif
  
    /* Each entry's "caller" should be the "callee" of the previous entry.  */
    call_string::element_t *e;
    int i;
    FOR_EACH_VEC_ELT (m_elements, i, e)
      if (i > 0)
      {
!       gcc_assert (e->get_caller_function () == 
!       		  m_elements[i - 1].get_callee_function ());
      }
  }
  
  #endif /* #if ENABLE_ANALYZER */
--- 270,348 ----
    return;
  #endif
  
+   gcc_assert (m_parent || m_elements.length () == 0);
+ 
    /* Each entry's "caller" should be the "callee" of the previous entry.  */
    call_string::element_t *e;
    int i;
    FOR_EACH_VEC_ELT (m_elements, i, e)
      if (i > 0)
+       gcc_assert (e->get_caller_function () ==
+ 		  m_elements[i - 1].get_callee_function ());
+ }
+ 
+ /* ctor for the root/empty call_string.  */
+ 
+ call_string::call_string ()
+ : m_parent (NULL), m_elements ()
+ {
+ }
+ 
+ /* ctor for a child call_string.  */
+ 
+ call_string::call_string (const call_string &parent, const element_t &to_push)
+ : m_parent (&parent),
+   m_elements (parent.m_elements.length () + 1)
+ {
+   m_elements.splice (parent.m_elements);
+   m_elements.quick_push (to_push);
+ }
+ 
+ /* dtor for call_string: recursively delete children.  */
+ 
+ call_string::~call_string ()
+ {
+   for (auto child_iter : m_children)
+     delete child_iter.second;
+ }
+ 
+ /* Log this call_string and all its descendents recursively to LOGGER,
+    using indentation and elision to highlight the hierarchy.  */
+ 
+ void
+ call_string::recursive_log (logger *logger) const
+ {
+   logger->start_log_line ();
+   pretty_printer *pp = logger->get_printer ();
+   for (unsigned i = 0; i < length (); i++)
+     pp_string (pp, "  ");
+   if (length () > 0)
      {
!       pp_string (pp, "[");
!       /* Elide all but the final element, since they are shared with
! 	 the parent call_string.  */
!       for (unsigned i = 0; i < length (); i++)
! 	pp_string (pp, "..., ");
!       /* Log the final element in detail.  */
!       const element_t *e = &m_elements[m_elements.length () - 1];
!       pp_printf (pp, "(SN: %i -> SN: %i in %s)]",
! 		 e->m_callee->m_index, e->m_caller->m_index,
! 		 function_name (e->m_caller->m_fun));
      }
+   else
+     pp_string (pp, "[]");
+   logger->end_log_line ();
+ 
+   /* Recurse into children.  */
+   {
+     auto_vec<const call_string *> children (m_children.elements ());
+     for (auto iter : m_children)
+       children.safe_push (iter.second);
+     children.qsort (call_string::cmp_ptr_ptr);
+ 
+     for (auto iter : children)
+       iter->recursive_log (logger);
+   }
  }
  
  #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-string.h gcc-13.1.0/gcc/analyzer/call-string.h
*** gcc-12.2.0/gcc/analyzer/call-string.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/call-string.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Call stacks at program points.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Call stacks at program points.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** class return_superedge;
*** 36,43 ****
     i.e. that we return to the same callsite that called us.
  
     The class stores returning calls ( which may be represented by a
!    returning superedge ). We do so because this is what we need to compare 
!    against.  */
  
  class call_string
  {
--- 36,48 ----
     i.e. that we return to the same callsite that called us.
  
     The class stores returning calls ( which may be represented by a
!    returning superedge ). We do so because this is what we need to compare
!    against.
! 
!    Instances of call_string are consolidated by the region_model_manager,
!    which effectively owns them: it owns the root/empty call_string, and each
!    call_string instance tracks its children, lazily creating them on demand,
!    so that the call_string instances form a tree-like hierarchy in memory.  */
  
  class call_string
  {
*************** public:
*** 60,97 ****
      /* Accessors */
      function *get_caller_function () const;
      function *get_callee_function () const;
!     
      const supernode *m_caller;
      const supernode *m_callee;
    };
  
-   call_string () : m_elements () {}
-   call_string (const call_string &other);
-   call_string& operator= (const call_string &other);
- 
-   bool operator== (const call_string &other) const;
- 
    void print (pretty_printer *pp) const;
  
    json::value *to_json () const;
  
-   hashval_t hash () const;
- 
    bool empty_p () const { return m_elements.is_empty (); }
  
!   void push_call (const supergraph &sg,
! 		  const call_superedge *sedge);
! 
!   void push_call (const supernode *src, 
!     const supernode *dest);
  
!   element_t pop ();
  
    int calc_recursion_depth () const;
  
    static int cmp (const call_string &a,
  		  const call_string &b);
  
    /* Accessors */
  
    const supernode *get_callee_node () const;
--- 65,95 ----
      /* Accessors */
      function *get_caller_function () const;
      function *get_callee_function () const;
! 
      const supernode *m_caller;
      const supernode *m_callee;
    };
  
    void print (pretty_printer *pp) const;
  
    json::value *to_json () const;
  
    bool empty_p () const { return m_elements.is_empty (); }
  
!   const call_string *push_call (const supergraph &sg,
! 				const call_superedge *sedge) const;
  
!   const call_string *push_call (const supernode *src,
! 				const supernode *dest) const;
!   const call_string *get_parent () const { return m_parent; }
  
    int calc_recursion_depth () const;
  
    static int cmp (const call_string &a,
  		  const call_string &b);
  
+   static int cmp_ptr_ptr (const void *, const void *);
+ 
    /* Accessors */
  
    const supernode *get_callee_node () const;
*************** public:
*** 101,111 ****
--- 99,169 ----
    {
      return m_elements[idx];
    }
+   const element_t &get_top_of_stack () const
+   {
+     gcc_assert (m_elements.length () > 0);
+     return m_elements[m_elements.length () - 1];
+   }
+ 
+   int count_occurrences_of_function (function *) const;
  
    void validate () const;
  
  private:
+   struct hashmap_traits_t
+   {
+     typedef element_t key_type;
+     typedef const call_string *value_type;
+ 
+     static const bool maybe_mx = false;
+     static inline hashval_t hash (const key_type &k)
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (k.m_caller);
+       hstate.add_ptr (k.m_callee);
+       return hstate.end ();
+     }
+     static inline bool equal_keys (const key_type &k1, const key_type &k2)
+     {
+       return k1 == k2;
+     }
+     template <typename T> static inline void remove (T &entry)
+     {
+       entry.m_key = element_t (NULL, NULL);
+     }
+     static const bool empty_zero_p = true;
+     template <typename T> static inline bool is_empty (const T &entry)
+     {
+       return entry.m_key.m_caller == NULL;
+     }
+     template <typename T> static inline bool is_deleted (const T &entry)
+     {
+       return entry.m_key.m_caller == reinterpret_cast<const supernode *> (1);
+     }
+     template <typename T> static inline void mark_empty (T &entry)
+     {
+       entry.m_key = element_t (NULL, NULL);
+       entry.m_value = NULL;
+     }
+     template <typename T> static inline void mark_deleted (T &entry)
+     {
+       entry.m_key.m_caller = reinterpret_cast<const supernode *> (1);
+     }
+   };
+ 
+   friend class region_model_manager;
+ 
+   DISABLE_COPY_AND_ASSIGN (call_string);
+ 
+   call_string ();
+   call_string (const call_string &parent, const element_t &to_push);
+   ~call_string ();
+ 
+   void recursive_log (logger *logger) const;
+ 
+   const call_string *m_parent;
    auto_vec<element_t> m_elements;
+   mutable hash_map<element_t, const call_string *, hashmap_traits_t> m_children;
  };
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-summary.cc gcc-13.1.0/gcc/analyzer/call-summary.cc
*** gcc-12.2.0/gcc/analyzer/call-summary.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/call-summary.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,894 ----
+ /* Classes for working with summaries of function calls.
+    Copyright (C) 2022 David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "tree-dfa.h"
+ #include "diagnostic.h"
+ #include "tree-diagnostic.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/call-summary.h"
+ #include "analyzer/exploded-graph.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class call_summary.  */
+ 
+ const program_state &
+ call_summary::get_state () const
+ {
+   return m_enode->get_state ();
+ }
+ 
+ tree
+ call_summary::get_fndecl () const
+ {
+   return m_enode->get_point ().get_fndecl ();
+ }
+ 
+ label_text
+ call_summary::get_desc () const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+ 
+   get_user_facing_desc (&pp);
+   if (flag_analyzer_verbose_edges)
+     pp_printf (&pp, " (call summary; EN: %i)", m_enode->m_index);
+ 
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
+ /* Generate a user-facing description of this call summary.c
+    This has various heuristics for distinguishing between different
+    summaries.
+    This will help with debugging, too.  */
+ 
+ void
+ call_summary::get_user_facing_desc (pretty_printer *pp) const
+ {
+   tree fndecl = get_fndecl ();
+ 
+   /* If there are multiple summaries, try to use the return value to
+      distinguish between them.  */
+   if (m_per_fn_data->m_summaries.length () > 1)
+     {
+       if (tree result = DECL_RESULT (fndecl))
+ 	{
+ 	  const region *result_reg
+ 	    = get_state ().m_region_model->get_lvalue (result, NULL);
+ 	  const svalue *result_sval
+ 	    = get_state ().m_region_model->get_store_value (result_reg, NULL);
+ 	  switch (result_sval->get_kind ())
+ 	    {
+ 	    default:
+ 	      break;
+ 	    case SK_REGION:
+ 	      {
+ 		const region_svalue *region_sval
+ 		  = as_a <const region_svalue *> (result_sval);
+ 		const region *pointee_reg = region_sval->get_pointee ();
+ 		switch (pointee_reg->get_kind ())
+ 		  {
+ 		  default:
+ 		    break;
+ 		  case RK_HEAP_ALLOCATED:
+ 		    pp_printf (pp,
+ 			       "when %qE returns pointer"
+ 			       " to heap-allocated buffer",
+ 			       fndecl);
+ 		    return;
+ 		  }
+ 	      }
+ 	      break;
+ 	    case SK_CONSTANT:
+ 	      {
+ 		const constant_svalue *constant_sval
+ 		  = as_a <const constant_svalue *> (result_sval);
+ 		tree cst = constant_sval->get_constant ();
+ 		if (POINTER_TYPE_P (TREE_TYPE (result))
+ 		    && zerop (cst))
+ 		  pp_printf (pp, "when %qE returns NULL", fndecl);
+ 		else
+ 		  pp_printf (pp, "when %qE returns %qE", fndecl, cst);
+ 		return;
+ 	      }
+ 	    }
+ 	}
+     }
+ 
+   /* Fallback.  */
+   pp_printf (pp, "when %qE returns", fndecl);
+ }
+ 
+ /* Dump a multiline representation of this object to PP.  */
+ 
+ void
+ call_summary::dump_to_pp (const extrinsic_state &ext_state,
+ 			  pretty_printer *pp,
+ 			  bool simple) const
+ {
+   label_text desc = get_desc ();
+   pp_printf (pp, "desc: %qs", desc.get ());
+   pp_newline (pp);
+ 
+   get_state ().dump_to_pp (ext_state, simple, true, pp);
+ }
+ 
+ /* Dump a multiline representation of this object to FILE.  */
+ 
+ void
+ call_summary::dump (const extrinsic_state &ext_state,
+ 		    FILE *fp,
+ 		    bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = fp;
+   dump_to_pp (ext_state, &pp, simple);
+   pp_flush (&pp);
+ }
+ 
+ /* Dump a multiline representation of this object to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ call_summary::dump (const extrinsic_state &ext_state, bool simple) const
+ {
+   dump (ext_state, stderr, simple);
+ }
+ 
+ /* class call_summary_replay.  */
+ 
+ /* call_summary_replay's ctor.
+    Populate the cache with params for the summary based on
+    arguments at the caller. */
+ 
+ call_summary_replay::call_summary_replay (const call_details &cd,
+ 					  function *called_fn,
+ 					  call_summary *summary,
+ 					  const extrinsic_state &ext_state)
+ : m_cd (cd),
+   m_summary (summary),
+   m_ext_state (ext_state)
+ {
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   // populate params based on args
+   tree fndecl = called_fn->decl;
+ 
+   /* Get a frame_region for use with respect to the summary.
+      This will be a top-level frame, since that's what's in
+      the summary.  */
+   const frame_region *summary_frame
+     = mgr->get_frame_region (NULL, called_fn);
+ 
+   unsigned idx = 0;
+   for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
+        iter_parm = DECL_CHAIN (iter_parm), ++idx)
+     {
+       /* If there's a mismatching declaration, the call stmt might
+ 	 not have enough args.  Handle this case by leaving the
+ 	 rest of the params as uninitialized.  */
+       if (idx >= cd.num_args ())
+ 	break;
+       const svalue *caller_arg_sval = cd.get_arg_svalue (idx);
+       tree parm_lval = iter_parm;
+       if (tree parm_default_ssa = ssa_default_def (called_fn, iter_parm))
+ 	parm_lval = parm_default_ssa;
+       const region *summary_parm_reg
+ 	= summary_frame->get_region_for_local (mgr, parm_lval, cd.get_ctxt ());
+       const svalue *summary_initial_parm_reg
+ 	= mgr->get_or_create_initial_value (summary_parm_reg);
+       add_svalue_mapping (summary_initial_parm_reg, caller_arg_sval);
+     }
+ 
+   /* Handle any variadic args.  */
+   unsigned va_arg_idx = 0;
+   for (; idx < cd.num_args (); idx++, va_arg_idx++)
+     {
+       const svalue *caller_arg_sval = cd.get_arg_svalue (idx);
+       const region *summary_var_arg_reg
+ 	= mgr->get_var_arg_region (summary_frame, va_arg_idx);
+       const svalue *summary_initial_var_arg_reg
+ 	= mgr->get_or_create_initial_value (summary_var_arg_reg);
+       add_svalue_mapping (summary_initial_var_arg_reg, caller_arg_sval);
+     }
+ }
+ 
+ /* Try to convert SUMMARY_SVAL in the summary to a corresponding svalue
+    in the caller, caching the result.
+ 
+    Return NULL if the conversion is not possible.  */
+ 
+ const svalue *
+ call_summary_replay::convert_svalue_from_summary (const svalue *summary_sval)
+ {
+   gcc_assert (summary_sval);
+ 
+   if (const svalue **slot
+ 	= m_map_svalue_from_summary_to_caller.get (summary_sval))
+     return *slot;
+ 
+   const svalue *caller_sval = convert_svalue_from_summary_1 (summary_sval);
+ 
+   /* Add to cache.  */
+   add_svalue_mapping (summary_sval, caller_sval);
+ 
+   return caller_sval;
+ }
+ 
+ /* Implementation of call_summary_replay::convert_svalue_from_summary.  */
+ 
+ const svalue *
+ call_summary_replay::convert_svalue_from_summary_1 (const svalue *summary_sval)
+ {
+   gcc_assert (summary_sval);
+ 
+   switch (summary_sval->get_kind ())
+     {
+     default:
+       gcc_unreachable ();
+     case SK_REGION:
+       {
+ 	const region_svalue *region_summary_sval
+ 	  = as_a <const region_svalue *> (summary_sval);
+ 	const region *summary_reg = region_summary_sval->get_pointee ();
+ 	const region *caller_reg = convert_region_from_summary (summary_reg);
+ 	if (!caller_reg)
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	const svalue *caller_ptr
+ 	  = mgr->get_ptr_svalue (summary_sval->get_type (),
+ 				 caller_reg);
+ 	return caller_ptr;
+       }
+       break;
+ 
+     case SK_CONSTANT:
+     case SK_PLACEHOLDER:
+     case SK_POISONED:
+     case SK_UNKNOWN:
+       return summary_sval;
+ 
+     case SK_SETJMP:
+       return NULL; // TODO
+ 
+     case SK_INITIAL:
+       {
+ 	const initial_svalue *initial_summary_sval
+ 	  = as_a <const initial_svalue *> (summary_sval);
+ 	/* Params should already be in the cache, courtesy of the ctor.  */
+ 	gcc_assert (!initial_summary_sval->initial_value_of_param_p ());
+ 
+ 	/* Initial value of region within the summary is the value of the
+ 	   region at the point of the call.  */
+ 	const region *summary_reg = initial_summary_sval->get_region ();
+ 	const region *caller_reg = convert_region_from_summary (summary_reg);
+ 	if (!caller_reg)
+ 	  return NULL;
+ 	const svalue *caller_sval
+ 	  = m_cd.get_model ()->get_store_value (caller_reg, m_cd.get_ctxt ());
+ 	return caller_sval;
+       }
+       break;
+     case SK_UNARYOP:
+       {
+ 	const unaryop_svalue *unaryop_summary_sval
+ 	  = as_a <const unaryop_svalue *> (summary_sval);
+ 	const svalue *summary_arg = unaryop_summary_sval->get_arg ();
+ 	const svalue *caller_arg = convert_svalue_from_summary (summary_arg);
+ 	if (!caller_arg)
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_unaryop (summary_sval->get_type (),
+ 					   unaryop_summary_sval->get_op (),
+ 					   caller_arg);
+       }
+       break;
+     case SK_BINOP:
+       {
+ 	const binop_svalue *binop_summary_sval
+ 	  = as_a <const binop_svalue *> (summary_sval);
+ 	const svalue *summary_arg0 = binop_summary_sval->get_arg0 ();
+ 	const svalue *caller_arg0 = convert_svalue_from_summary (summary_arg0);
+ 	if (!caller_arg0)
+ 	  return NULL;
+ 	const svalue *summary_arg1 = binop_summary_sval->get_arg1 ();
+ 	const svalue *caller_arg1 = convert_svalue_from_summary (summary_arg1);
+ 	if (!caller_arg1)
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_binop (summary_sval->get_type (),
+ 					 binop_summary_sval->get_op (),
+ 					 caller_arg0,
+ 					 caller_arg1);
+       }
+       break;
+     case SK_SUB:
+       {
+ 	const sub_svalue *sub_summary_sval
+ 	  = as_a <const sub_svalue *> (summary_sval);
+ 	region_model_manager *mgr = get_manager ();
+ 	const svalue *summary_parent_sval = sub_summary_sval->get_parent ();
+ 	if (!summary_parent_sval)
+ 	  return NULL;
+ 	const region *summary_subregion = sub_summary_sval->get_subregion ();
+ 	if (!summary_subregion)
+ 	  return NULL;
+ 	return mgr->get_or_create_sub_svalue (summary_sval->get_type (),
+ 					      summary_parent_sval,
+ 					      summary_subregion);
+       }
+       break;
+     case SK_REPEATED:
+       {
+ 	const repeated_svalue *repeated_summary_sval
+ 	  = as_a <const repeated_svalue *> (summary_sval);
+ 	const svalue *summary_outer_size
+ 	  = repeated_summary_sval->get_outer_size ();
+ 	const svalue *caller_outer_size
+ 	  = convert_svalue_from_summary (summary_outer_size);
+ 	if (!caller_outer_size)
+ 	  return NULL;
+ 	const svalue *summary_inner_sval
+ 	  = repeated_summary_sval->get_inner_svalue ();
+ 	const svalue *caller_inner_sval
+ 	  = convert_svalue_from_summary (summary_inner_sval);
+ 	if (!caller_inner_sval)
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_repeated_svalue (summary_sval->get_type (),
+ 						   caller_outer_size,
+ 						   caller_inner_sval);
+       }
+       break;
+     case SK_BITS_WITHIN:
+       {
+ 	const bits_within_svalue *bits_within_summary_sval
+ 	  = as_a <const bits_within_svalue *> (summary_sval);
+ 	const bit_range &bits = bits_within_summary_sval->get_bits ();
+ 	const svalue *summary_inner_sval
+ 	  = bits_within_summary_sval->get_inner_svalue ();
+ 	const svalue *caller_inner_sval
+ 	  = convert_svalue_from_summary (summary_inner_sval);
+ 	if (!caller_inner_sval)
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_bits_within (summary_sval->get_type (),
+ 					       bits,
+ 					       caller_inner_sval);
+       }
+       break;
+     case SK_UNMERGEABLE:
+       {
+ 	const unmergeable_svalue *unmergeable_summary_sval
+ 	  = as_a <const unmergeable_svalue *> (summary_sval);
+ 	const svalue *summary_arg_sval = unmergeable_summary_sval->get_arg ();
+ 	const svalue *caller_arg_sval
+ 	  = convert_svalue_from_summary (summary_arg_sval);
+ 	if (!caller_arg_sval)
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_unmergeable (caller_arg_sval);
+       }
+       break;
+     case SK_WIDENING:
+       {
+ 	const widening_svalue *widening_summary_sval
+ 	  = as_a <const widening_svalue *> (summary_sval);
+ 	const function_point &point = widening_summary_sval->get_point ();
+ 	const svalue *summary_base_sval
+ 	  = widening_summary_sval->get_base_svalue ();
+ 	const svalue *caller_base_sval
+ 	  = convert_svalue_from_summary (summary_base_sval);
+ 	if (!(caller_base_sval
+ 	      && caller_base_sval->can_have_associated_state_p ()))
+ 	  return NULL;
+ 	const svalue *summary_iter_sval
+ 	  = widening_summary_sval->get_iter_svalue ();
+ 	const svalue *caller_iter_sval
+ 	  = convert_svalue_from_summary (summary_iter_sval);
+ 	if (!(caller_iter_sval
+ 	      && caller_iter_sval->can_have_associated_state_p ()))
+ 	  return NULL;
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_widening_svalue
+ 	  (summary_iter_sval->get_type (),
+ 	   point,
+ 	   caller_base_sval,
+ 	   caller_iter_sval);
+       }
+       break;
+     case SK_COMPOUND:
+       {
+ 	const compound_svalue *compound_summary_sval
+ 	  = as_a <const compound_svalue *> (summary_sval);
+ 	region_model_manager *mgr = get_manager ();
+ 	store_manager *store_mgr = mgr->get_store_manager ();
+ 	binding_map caller_map;
+ 	auto_vec <const binding_key *> summary_keys;
+ 	for (auto kv : *compound_summary_sval)
+ 	  summary_keys.safe_push (kv.first);
+ 	summary_keys.qsort (binding_key::cmp_ptrs);
+ 	for (auto key : summary_keys)
+ 	  {
+ 	    gcc_assert (key->concrete_p ());
+ 	    /* No remapping is needed for concrete binding keys.  */
+ 
+ 	    const svalue *bound_summary_sval
+ 	      = compound_summary_sval->get_map ().get (key);
+ 	    const svalue *caller_sval
+ 	      = convert_svalue_from_summary (bound_summary_sval);
+ 	    if (!caller_sval)
+ 	      caller_sval = mgr->get_or_create_unknown_svalue (NULL_TREE);
+ 
+ 	    if (const compound_svalue *inner_compound_sval
+ 		= caller_sval->dyn_cast_compound_svalue ())
+ 	      {
+ 		const concrete_binding *outer_key
+ 		  = as_a <const concrete_binding *> (key);
+ 		for (auto inner_kv : *inner_compound_sval)
+ 		  {
+ 		    // These should already be mapped to the caller.
+ 		    const binding_key *inner_key = inner_kv.first;
+ 		    const svalue *inner_sval = inner_kv.second;
+ 		    gcc_assert (inner_key->concrete_p ());
+ 		    const concrete_binding *concrete_key
+ 		      = as_a <const concrete_binding *> (inner_key);
+ 		    bit_offset_t effective_start
+ 		      = (concrete_key->get_start_bit_offset ()
+ 			 + outer_key->get_start_bit_offset ());
+ 		    const concrete_binding *effective_concrete_key
+ 		      = store_mgr->get_concrete_binding
+ 			  (effective_start,
+ 			   concrete_key->get_size_in_bits ());
+ 		    caller_map.put (effective_concrete_key, inner_sval);
+ 		  }
+ 	      }
+ 	    else
+ 	      caller_map.put (key, caller_sval);
+ 	  }
+ 	return mgr->get_or_create_compound_svalue (summary_sval->get_type (),
+ 						   caller_map);
+       }
+       break;
+     case SK_CONJURED:
+       {
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_unknown_svalue (summary_sval->get_type ());
+       }
+       break;
+     case SK_ASM_OUTPUT:
+       {
+ 	const asm_output_svalue *asm_output_summary_sval
+ 	  = as_a <const asm_output_svalue *> (summary_sval);
+ 	const char *asm_string = asm_output_summary_sval->get_asm_string ();
+ 	unsigned output_idx = asm_output_summary_sval->get_output_idx ();
+ 	unsigned num_inputs = asm_output_summary_sval->get_num_inputs ();
+ 	unsigned num_outputs = asm_output_summary_sval->get_num_outputs ();
+ 	auto_vec<const svalue *> inputs (num_inputs);
+ 	for (unsigned idx = 0; idx < num_inputs; idx++)
+ 	  {
+ 	    const svalue *summary_input
+ 	      = asm_output_summary_sval->get_input (idx);
+ 	    const svalue *caller_input
+ 	      = convert_svalue_from_summary (summary_input);
+ 	    if (!caller_input)
+ 	      return NULL;
+ 	    inputs.safe_push (caller_input);
+ 	  }
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_asm_output_svalue (summary_sval->get_type (),
+ 						     asm_string,
+ 						     output_idx,
+ 						     num_outputs,
+ 						     inputs);
+       }
+       break;
+     case SK_CONST_FN_RESULT:
+       {
+ 	const const_fn_result_svalue *const_fn_result_summary_sval
+ 	  = as_a <const const_fn_result_svalue *> (summary_sval);
+ 	tree fndecl = const_fn_result_summary_sval->get_fndecl ();
+ 	unsigned num_inputs = const_fn_result_summary_sval->get_num_inputs ();
+ 	auto_vec<const svalue *> inputs (num_inputs);
+ 	for (unsigned idx = 0; idx < num_inputs; idx++)
+ 	  {
+ 	    const svalue *summary_input
+ 	      = const_fn_result_summary_sval->get_input (idx);
+ 	    const svalue *caller_input
+ 	      = convert_svalue_from_summary (summary_input);
+ 	    if (!caller_input)
+ 	      return NULL;
+ 	    inputs.safe_push (caller_input);
+ 	  }
+ 	region_model_manager *mgr = get_manager ();
+ 	return mgr->get_or_create_const_fn_result_svalue
+ 	  (summary_sval->get_type (),
+ 	   fndecl,
+ 	   inputs);
+       }
+       break;
+     }
+ }
+ 
+ /* Try to convert SUMMARY_REG in the summary to a corresponding region
+    in the caller, caching the result.
+ 
+    Return NULL if the conversion is not possible.  */
+ 
+ const region *
+ call_summary_replay::convert_region_from_summary (const region *summary_reg)
+ {
+   gcc_assert (summary_reg);
+ 
+   if (const region **slot
+ 	= m_map_region_from_summary_to_caller.get (summary_reg))
+     return *slot;
+ 
+   const region *caller_reg = convert_region_from_summary_1 (summary_reg);
+ 
+   /* Add to cache.  */
+   add_region_mapping (summary_reg, caller_reg);
+ 
+   return caller_reg;
+ }
+ 
+ /* Implementation of call_summary_replay::convert_region_from_summary.  */
+ 
+ const region *
+ call_summary_replay::convert_region_from_summary_1 (const region *summary_reg)
+ {
+   gcc_assert (summary_reg);
+ 
+   region_model_manager *mgr = get_manager ();
+   switch (summary_reg->get_kind ())
+     {
+     default:
+       gcc_unreachable ();
+       /* Top-level regions.  */
+     case RK_FRAME:
+     case RK_GLOBALS:
+     case RK_CODE:
+     case RK_STACK:
+     case RK_HEAP:
+     case RK_THREAD_LOCAL:
+     case RK_ROOT:
+       /* These should never be pointed to by a region_svalue.  */
+       gcc_unreachable ();
+ 
+     case RK_FUNCTION:
+     case RK_LABEL:
+     case RK_STRING:
+     case RK_ERRNO:
+     case RK_UNKNOWN:
+       /* We can reuse these regions directly.  */
+       return summary_reg;
+ 
+     case RK_SYMBOLIC:
+       {
+ 	const symbolic_region *summary_symbolic_reg
+ 	  = as_a <const symbolic_region *> (summary_reg);
+ 	const svalue *summary_ptr_sval = summary_symbolic_reg->get_pointer ();
+ 	const svalue *caller_ptr_sval
+ 	  = convert_svalue_from_summary (summary_ptr_sval);
+ 	if (!caller_ptr_sval)
+ 	  return NULL;
+ 	const region *caller_reg
+ 	  = get_caller_model ()->deref_rvalue (caller_ptr_sval,
+ 					       NULL_TREE,
+ 					       get_ctxt ());
+ 	return caller_reg;
+       }
+       break;
+ 
+     case RK_DECL:
+       {
+ 	const decl_region *summary_decl_reg
+ 	  = as_a <const decl_region *> (summary_reg);
+ 	tree decl = summary_decl_reg->get_decl ();
+ 	switch (TREE_CODE (decl))
+ 	  {
+ 	  default:
+ 	    gcc_unreachable ();
+ 	  case SSA_NAME:
+ 	    /* We don't care about writes to locals within
+ 	       the summary.  */
+ 	    return NULL;
+ 	  case VAR_DECL:
+ 	    /* We don't care about writes to locals within
+ 	       the summary.  */
+ 	    if (is_global_var (decl))
+ 	      /* If it's a global, we can reuse the region directly.  */
+ 	      return summary_reg;
+ 	    else
+ 	      /* Otherwise, we don't care about locals.  */
+ 	      return NULL;
+ 	  case RESULT_DECL:
+ 	    return m_cd.get_lhs_region ();
+ 	  case PARM_DECL:
+ 	    /* Writes (by value) to parms should be visible to the caller.  */
+ 	    return NULL;
+ 	  }
+       }
+       break;
+     case RK_FIELD:
+       {
+ 	const field_region *summary_field_reg
+ 	  = as_a <const field_region *> (summary_reg);
+ 	const region *summary_parent_reg = summary_reg->get_parent_region ();
+ 	const region *caller_parent_reg
+ 	  = convert_region_from_summary (summary_parent_reg);
+ 	if (!caller_parent_reg)
+ 	  return NULL;
+ 	tree field = summary_field_reg->get_field ();
+ 	return mgr->get_field_region (caller_parent_reg, field);
+       }
+       break;
+     case RK_ELEMENT:
+       {
+ 	const element_region *summary_element_reg
+ 	  = as_a <const element_region *> (summary_reg);
+ 	const region *summary_parent_reg = summary_reg->get_parent_region ();
+ 	const region *caller_parent_reg
+ 	  = convert_region_from_summary (summary_parent_reg);
+ 	if (!caller_parent_reg)
+ 	  return NULL;
+ 	const svalue *summary_index = summary_element_reg->get_index ();
+ 	const svalue *caller_index
+ 	  = convert_svalue_from_summary (summary_index);
+ 	if (!caller_index)
+ 	  return NULL;
+ 	return mgr->get_element_region (caller_parent_reg,
+ 					summary_reg->get_type (),
+ 					caller_index);
+       }
+       break;
+     case RK_OFFSET:
+       {
+ 	const offset_region *summary_offset_reg
+ 	  = as_a <const offset_region *> (summary_reg);
+ 	const region *summary_parent_reg = summary_reg->get_parent_region ();
+ 	const region *caller_parent_reg
+ 	  = convert_region_from_summary (summary_parent_reg);
+ 	if (!caller_parent_reg)
+ 	  return NULL;
+ 	const svalue *summary_byte_offset
+ 	  = summary_offset_reg->get_byte_offset ();
+ 	const svalue *caller_byte_offset
+ 	  = convert_svalue_from_summary (summary_byte_offset);
+ 	if (!caller_byte_offset)
+ 	  return NULL;
+ 	return mgr->get_offset_region (caller_parent_reg,
+ 				       summary_reg->get_type (),
+ 				       caller_byte_offset);
+       }
+       break;
+     case RK_SIZED:
+       {
+ 	const sized_region *summary_sized_reg
+ 	  = as_a <const sized_region *> (summary_reg);
+ 	const region *summary_parent_reg = summary_reg->get_parent_region ();
+ 	const region *caller_parent_reg
+ 	  = convert_region_from_summary (summary_parent_reg);
+ 	if (!caller_parent_reg)
+ 	  return NULL;
+ 	const svalue *summary_byte_size
+ 	  = summary_sized_reg->get_byte_size_sval (mgr);
+ 	const svalue *caller_byte_size
+ 	  = convert_svalue_from_summary (summary_byte_size);
+ 	if (!caller_byte_size)
+ 	  return NULL;
+ 	return mgr->get_sized_region (caller_parent_reg,
+ 				       summary_reg->get_type (),
+ 				       caller_byte_size);
+       }
+       break;
+     case RK_CAST:
+       {
+ 	const cast_region *summary_cast_reg
+ 	  = as_a <const cast_region *> (summary_reg);
+ 	const region *summary_original_reg
+ 	  = summary_cast_reg->get_original_region ();
+ 	const region *caller_original_reg
+ 	  = convert_region_from_summary (summary_original_reg);
+ 	if (!caller_original_reg)
+ 	  return NULL;
+ 	return mgr->get_cast_region (caller_original_reg,
+ 				     summary_reg->get_type ());
+       }
+       break;
+     case RK_HEAP_ALLOCATED:
+       {
+ 	/* If we have a heap-allocated region in the summary, then
+ 	   it was allocated within the callee.
+ 	   Create a new heap-allocated region to summarize this.  */
+ 	auto_bitmap heap_regs_in_use;
+ 	get_caller_model ()->get_referenced_base_regions (heap_regs_in_use);
+ 	return mgr->get_or_create_region_for_heap_alloc (heap_regs_in_use);
+       }
+       break;
+     case RK_ALLOCA:
+       return NULL;
+     case RK_BIT_RANGE:
+       {
+ 	const bit_range_region *summary_bit_range_reg
+ 	  = as_a <const bit_range_region *> (summary_reg);
+ 	const region *summary_parent_reg = summary_reg->get_parent_region ();
+ 	const region *caller_parent_reg
+ 	  = convert_region_from_summary (summary_parent_reg);
+ 	if (!caller_parent_reg)
+ 	  return NULL;
+ 	const bit_range &bits = summary_bit_range_reg->get_bits ();
+ 	return mgr->get_bit_range (caller_parent_reg,
+ 				   summary_reg->get_type (),
+ 				   bits);
+       }
+       break;
+     case RK_VAR_ARG:
+       return NULL;
+     }
+ }
+ 
+ /* Try to convert SUMMARY_KEY in the summary to a corresponding binding key
+    in the caller.
+ 
+    Return NULL if the conversion is not possible.  */
+ 
+ const binding_key *
+ call_summary_replay::convert_key_from_summary (const binding_key *summary_key)
+ {
+   if (summary_key->concrete_p ())
+     return summary_key;
+ 
+   const symbolic_binding *symbolic_key = (const symbolic_binding *)summary_key;
+   const region *summary_reg = symbolic_key->get_region ();
+   const region *caller_reg = convert_region_from_summary (summary_reg);
+   if (!caller_reg)
+     return NULL;
+   region_model_manager *mgr = get_manager ();
+   store_manager *store_mgr = mgr->get_store_manager ();
+   return store_mgr->get_symbolic_binding (caller_reg);
+ }
+ 
+ /* Record that SUMMARY_SVAL maps to CALLER_SVAL for this replay.  */
+ 
+ void
+ call_summary_replay::add_svalue_mapping (const svalue *summary_sval,
+ 					 const svalue *caller_sval)
+ {
+   gcc_assert (summary_sval);
+   // CALLER_SVAL can be NULL
+   m_map_svalue_from_summary_to_caller.put (summary_sval, caller_sval);
+ }
+ 
+ /* Record that SUMMARY_REG maps to CALLER_REG for this replay.  */
+ 
+ void
+ call_summary_replay::add_region_mapping (const region *summary_reg,
+ 					 const region *caller_reg)
+ {
+   gcc_assert (summary_reg);
+   // CALLER_REG can be NULL
+   m_map_region_from_summary_to_caller.put (summary_reg, caller_reg);
+ }
+ 
+ /* Dump a multiline representation of this object to PP.  */
+ 
+ void
+ call_summary_replay::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   pp_newline (pp);
+   pp_string (pp, "CALL DETAILS:");
+   pp_newline (pp);
+   m_cd.dump_to_pp (pp, simple);
+ 
+   pp_newline (pp);
+   pp_string (pp, "CALLEE SUMMARY:");
+   pp_newline (pp);
+   m_summary->dump_to_pp (m_ext_state, pp, simple);
+ 
+   /* Current state of caller (could be in mid-update).  */
+   pp_newline (pp);
+   pp_string (pp, "CALLER:");
+   pp_newline (pp);
+   m_cd.get_model ()->dump_to_pp (pp, simple, true);
+ 
+   pp_newline (pp);
+   pp_string (pp, "REPLAY STATE:");
+   pp_newline (pp);
+   pp_string (pp, "svalue mappings from summary to caller:");
+   pp_newline (pp);
+   auto_vec <const svalue *> summary_svals;
+   for (auto kv : m_map_svalue_from_summary_to_caller)
+     summary_svals.safe_push (kv.first);
+   summary_svals.qsort (svalue::cmp_ptr_ptr);
+   for (auto summary_sval : summary_svals)
+     {
+       pp_string (pp, "sval in summary: ");
+       summary_sval->dump_to_pp (pp, simple);
+       pp_newline (pp);
+ 
+       const svalue *caller_sval
+ 	= *((const_cast<svalue_map_t &>
+ 	     (m_map_svalue_from_summary_to_caller)).get (summary_sval));
+       pp_string (pp, " sval in caller: ");
+       caller_sval->dump_to_pp (pp, simple);
+       pp_newline (pp);
+     }
+ 
+   pp_newline (pp);
+   pp_string (pp, "region mappings from summary to caller:");
+   pp_newline (pp);
+   auto_vec <const region *> summary_regs;
+   for (auto kv : m_map_region_from_summary_to_caller)
+     summary_regs.safe_push (kv.first);
+   summary_regs.qsort (region::cmp_ptr_ptr);
+   for (auto summary_reg : summary_regs)
+     {
+       pp_string (pp, "reg in summary: ");
+       if (summary_reg)
+ 	summary_reg->dump_to_pp (pp, simple);
+       else
+ 	pp_string (pp, "(null)");
+       pp_newline (pp);
+ 
+       const region *caller_reg
+ 	= *((const_cast<region_map_t &>
+ 	     (m_map_region_from_summary_to_caller)).get (summary_reg));
+       pp_string (pp, " reg in caller: ");
+       if (caller_reg)
+ 	caller_reg->dump_to_pp (pp, simple);
+       else
+ 	pp_string (pp, "(null)");
+       pp_newline (pp);
+     }
+ }
+ 
+ /* Dump a multiline representation of this object to FILE.  */
+ 
+ void
+ call_summary_replay::dump (FILE *fp, bool simple) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = fp;
+   dump_to_pp (&pp, simple);
+   pp_flush (&pp);
+ }
+ 
+ /* Dump a multiline representation of this object to stderr.  */
+ 
+ DEBUG_FUNCTION void
+ call_summary_replay::dump (bool simple) const
+ {
+   dump (stderr, simple);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/call-summary.h gcc-13.1.0/gcc/analyzer/call-summary.h
*** gcc-12.2.0/gcc/analyzer/call-summary.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/call-summary.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,119 ----
+ /* Classes for working with summaries of function calls.
+    Copyright (C) 2022 David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_CALL_SUMMARY_H
+ #define GCC_ANALYZER_CALL_SUMMARY_H
+ 
+ #include "call-details.h"
+ 
+ namespace ana {
+ 
+ /* A class summarizing one particular outcome of a function that
+    we've already analyzed.
+    This lets us efficiently replay the analysis when we see calls
+    to the function, providing an approximation of the behavior of
+    the function without having to execute within the function itself.  */
+ 
+ class call_summary
+ {
+ public:
+   call_summary (per_function_data *per_fn_data,
+ 		const exploded_node *enode)
+   : m_per_fn_data (per_fn_data),
+     m_enode (enode)
+   {}
+   const program_state &get_state () const;
+   tree get_fndecl () const;
+ 
+   label_text get_desc () const;
+ 
+   void dump_to_pp (const extrinsic_state &ext_state,
+ 		   pretty_printer *pp,
+ 		   bool simple) const;
+   void dump (const extrinsic_state &ext_state, FILE *fp, bool simple) const;
+   void dump (const extrinsic_state &ext_state, bool simple) const;
+ 
+ private:
+   void get_user_facing_desc (pretty_printer *pp) const;
+ 
+   per_function_data *const m_per_fn_data;
+   const exploded_node *const m_enode;
+ };
+ 
+ /* A class for handling replaying a specific call summary at
+    a specific call site.
+ 
+    Supports remapping svalues and regions, e.g. remapping
+      INIT_VAL(param of callee)
+    to:
+      whatever that argument is at the call site.  */
+ 
+ class call_summary_replay
+ {
+ public:
+   call_summary_replay (const call_details &cd,
+ 		       function *called_fn,
+ 		       call_summary *m_summary,
+ 		       const extrinsic_state &ext_state);
+ 
+   const call_details &get_call_details () const { return m_cd; }
+   const gcall *get_call_stmt () const { return m_cd.get_call_stmt (); }
+   region_model_manager *get_manager () const { return m_cd.get_manager (); }
+   store_manager *get_store_manager () const
+   {
+     return get_manager ()->get_store_manager ();
+   }
+   region_model_context *get_ctxt () const { return m_cd.get_ctxt (); }
+   region_model *get_caller_model () const { return m_cd.get_model (); }
+ 
+   const svalue *convert_svalue_from_summary (const svalue *);
+   const region *convert_region_from_summary (const region *);
+   const binding_key *convert_key_from_summary (const binding_key *);
+ 
+   void add_svalue_mapping (const svalue *summary_sval,
+ 			   const svalue *caller_sval);
+   void add_region_mapping (const region *summary_sval,
+ 			   const region *caller_sval);
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const;
+   void dump (FILE *fp, bool simple) const;
+   void dump (bool simple) const;
+ 
+ private:
+   DISABLE_COPY_AND_ASSIGN (call_summary_replay);
+ 
+   const svalue *convert_svalue_from_summary_1 (const svalue *);
+   const region *convert_region_from_summary_1 (const region *);
+ 
+   const call_details &m_cd;
+   call_summary *m_summary;
+   const extrinsic_state &m_ext_state;
+ 
+   // Mapping from svalues in summary to svalues for callsite:
+   typedef hash_map <const svalue *, const svalue *> svalue_map_t;
+   svalue_map_t m_map_svalue_from_summary_to_caller;
+ 
+   // Mapping from regions in summary to regions for callsite:
+   typedef hash_map <const region *, const region *> region_map_t;
+   region_map_t m_map_region_from_summary_to_caller;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_CALL_SUMMARY_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/checker-event.cc gcc-13.1.0/gcc/analyzer/checker-event.cc
*** gcc-12.2.0/gcc/analyzer/checker-event.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/checker-event.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,1211 ----
+ /* Subclasses of diagnostic_event for analyzer diagnostics.
+    Copyright (C) 2019-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "diagnostic-core.h"
+ #include "gimple-pretty-print.h"
+ #include "fold-const.h"
+ #include "diagnostic-path.h"
+ #include "options.h"
+ #include "cgraph.h"
+ #include "cfg.h"
+ #include "digraph.h"
+ #include "diagnostic-event-id.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/sm.h"
+ #include "sbitmap.h"
+ #include "bitmap.h"
+ #include "ordered-hash-map.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/checker-path.h"
+ #include "gimple-iterator.h"
+ #include "inlining-iterator.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/diagnostic-manager.h"
+ #include "analyzer/constraint-manager.h"
+ #include "analyzer/checker-event.h"
+ #include "analyzer/exploded-graph.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Get a string for EK.  */
+ 
+ const char *
+ event_kind_to_string (enum event_kind ek)
+ {
+   switch (ek)
+     {
+     default:
+       gcc_unreachable ();
+     case EK_DEBUG:
+       return "EK_DEBUG";
+     case EK_CUSTOM:
+       return "EK_CUSTOM";
+     case EK_STMT:
+       return "EK_STMT";
+     case EK_REGION_CREATION:
+       return "EK_REGION_CREATION";
+     case EK_FUNCTION_ENTRY:
+       return "EK_FUNCTION_ENTRY";
+     case EK_STATE_CHANGE:
+       return "EK_STATE_CHANGE";
+     case EK_START_CFG_EDGE:
+       return "EK_START_CFG_EDGE";
+     case EK_END_CFG_EDGE:
+       return "EK_END_CFG_EDGE";
+     case EK_CALL_EDGE:
+       return "EK_CALL_EDGE";
+     case EK_RETURN_EDGE:
+       return "EK_RETURN_EDGE";
+     case EK_START_CONSOLIDATED_CFG_EDGES:
+       return "EK_START_CONSOLIDATED_CFG_EDGES";
+     case EK_END_CONSOLIDATED_CFG_EDGES:
+       return "EK_END_CONSOLIDATED_CFG_EDGES";
+     case EK_INLINED_CALL:
+       return "EK_INLINED_CALL";
+     case EK_SETJMP:
+       return "EK_SETJMP";
+     case EK_REWIND_FROM_LONGJMP:
+       return "EK_REWIND_FROM_LONGJMP";
+     case EK_REWIND_TO_SETJMP:
+       return "EK_REWIND_TO_SETJMP";
+     case EK_WARNING:
+       return "EK_WARNING";
+     }
+ }
+ 
+ /* A class for fixing up fndecls and stack depths in checker_event, based
+    on inlining records.
+ 
+    The early inliner runs before the analyzer, which can lead to confusing
+    output.
+ 
+    Tne base fndecl and depth within a checker_event are from call strings
+    in program_points, which reflect the call strings after inlining.
+    This class lets us offset the depth and fix up the reported fndecl and
+    stack depth to better reflect the user's original code.  */
+ 
+ class inlining_info
+ {
+ public:
+   inlining_info (location_t loc)
+   {
+     inlining_iterator iter (loc);
+     m_inner_fndecl = iter.get_fndecl ();
+     int num_frames = 0;
+     while (!iter.done_p ())
+       {
+ 	m_outer_fndecl = iter.get_fndecl ();
+ 	num_frames++;
+ 	iter.next ();
+       }
+     if (num_frames > 1)
+       m_extra_frames = num_frames - 1;
+     else
+       m_extra_frames = 0;
+   }
+ 
+   tree get_inner_fndecl () const { return m_inner_fndecl; }
+   int get_extra_frames () const { return m_extra_frames; }
+ 
+ private:
+   tree m_outer_fndecl;
+   tree m_inner_fndecl;
+   int m_extra_frames;
+ };
+ 
+ /* class checker_event : public diagnostic_event.  */
+ 
+ /* checker_event's ctor.  */
+ 
+ checker_event::checker_event (enum event_kind kind,
+ 			      const event_loc_info &loc_info)
+ : m_kind (kind), m_loc (loc_info.m_loc),
+   m_original_fndecl (loc_info.m_fndecl),
+   m_effective_fndecl (loc_info.m_fndecl),
+   m_original_depth (loc_info.m_depth),
+   m_effective_depth (loc_info.m_depth),
+   m_pending_diagnostic (NULL), m_emission_id (),
+   m_logical_loc (loc_info.m_fndecl)
+ {
+   /* Update effective fndecl and depth if inlining has been recorded.  */
+   if (flag_analyzer_undo_inlining)
+     {
+       inlining_info info (m_loc);
+       if (info.get_inner_fndecl ())
+ 	{
+ 	  m_effective_fndecl = info.get_inner_fndecl ();
+ 	  m_effective_depth += info.get_extra_frames ();
+ 	  m_logical_loc = tree_logical_location (m_effective_fndecl);
+ 	}
+     }
+ }
+ 
+ /* No-op implementation of diagnostic_event::get_meaning vfunc for
+    checker_event: checker events have no meaning by default.  */
+ 
+ diagnostic_event::meaning
+ checker_event::get_meaning () const
+ {
+   return meaning ();
+ }
+ 
+ /* Dump this event to PP (for debugging/logging purposes).  */
+ 
+ void
+ checker_event::dump (pretty_printer *pp) const
+ {
+   label_text event_desc (get_desc (false));
+   pp_printf (pp, "\"%s\" (depth %i",
+ 	     event_desc.get (), m_effective_depth);
+ 
+   if (m_effective_depth != m_original_depth)
+     pp_printf (pp, " corrected from %i",
+ 	       m_original_depth);
+   if (m_effective_fndecl)
+     {
+       pp_printf (pp, ", fndecl %qE", m_effective_fndecl);
+       if (m_effective_fndecl != m_original_fndecl)
+ 	pp_printf (pp, " corrected from %qE", m_original_fndecl);
+     }
+   pp_printf (pp, ", m_loc=%x)",
+ 	     get_location ());
+ }
+ 
+ /* Dump this event to stderr (for debugging/logging purposes).  */
+ 
+ DEBUG_FUNCTION void
+ checker_event::debug () const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_show_color (&pp) = pp_show_color (global_dc->printer);
+   pp.buffer->stream = stderr;
+   dump (&pp);
+   pp_newline (&pp);
+   pp_flush (&pp);
+ }
+ 
+ /* Hook for being notified when this event has its final id EMISSION_ID
+    and is about to emitted for PD.
+ 
+    Base implementation of checker_event::prepare_for_emission vfunc;
+    subclasses that override this should chain up to it.
+ 
+    Record PD and EMISSION_ID, and call the get_desc vfunc, so that any
+    side-effects of the call to get_desc take place before
+    pending_diagnostic::emit is called.
+ 
+    For example, state_change_event::get_desc can call
+    pending_diagnostic::describe_state_change; free_of_non_heap can use this
+    to tweak the message (TODO: would be neater to simply capture the
+    pertinent data within the sm-state).  */
+ 
+ void
+ checker_event::prepare_for_emission (checker_path *,
+ 				     pending_diagnostic *pd,
+ 				     diagnostic_event_id_t emission_id)
+ {
+   m_pending_diagnostic = pd;
+   m_emission_id = emission_id;
+ 
+   label_text desc = get_desc (false);
+ }
+ 
+ /* class debug_event : public checker_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    debug_event.
+    Use the saved string as the event's description.  */
+ 
+ label_text
+ debug_event::get_desc (bool) const
+ {
+   return label_text::borrow (m_desc);
+ }
+ 
+ /* class precanned_custom_event : public custom_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    precanned_custom_event.
+    Use the saved string as the event's description.  */
+ 
+ label_text
+ precanned_custom_event::get_desc (bool) const
+ {
+   return label_text::borrow (m_desc);
+ }
+ 
+ /* class statement_event : public checker_event.  */
+ 
+ /* statement_event's ctor.  */
+ 
+ statement_event::statement_event (const gimple *stmt, tree fndecl, int depth,
+ 				  const program_state &dst_state)
+ : checker_event (EK_STMT,
+ 		 event_loc_info (gimple_location (stmt), fndecl, depth)),
+   m_stmt (stmt),
+   m_dst_state (dst_state)
+ {
+ }
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    statement_event.
+    Use the statement's dump form as the event's description.  */
+ 
+ label_text
+ statement_event::get_desc (bool) const
+ {
+   pretty_printer pp;
+   pp_string (&pp, "stmt: ");
+   pp_gimple_stmt_1 (&pp, m_stmt, 0, (dump_flags_t)0);
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
+ /* class region_creation_event : public checker_event.  */
+ 
+ region_creation_event::region_creation_event (const event_loc_info &loc_info)
+ : checker_event (EK_REGION_CREATION, loc_info)
+ {
+ }
+ 
+ /* The various region_creation_event subclasses' get_desc
+    implementations.  */
+ 
+ label_text
+ region_creation_event_memory_space::get_desc (bool) const
+ {
+   switch (m_mem_space)
+     {
+     default:
+       return label_text::borrow ("region created here");
+     case MEMSPACE_STACK:
+       return label_text::borrow ("region created on stack here");
+     case MEMSPACE_HEAP:
+       return label_text::borrow ("region created on heap here");
+     }
+ }
+ 
+ label_text
+ region_creation_event_capacity::get_desc (bool can_colorize) const
+ {
+   gcc_assert (m_capacity);
+   if (TREE_CODE (m_capacity) == INTEGER_CST)
+     {
+       unsigned HOST_WIDE_INT hwi = tree_to_uhwi (m_capacity);
+       return make_label_text_n (can_colorize,
+ 				hwi,
+ 				"capacity: %wu byte",
+ 				"capacity: %wu bytes",
+ 				hwi);
+     }
+   else
+     return make_label_text (can_colorize,
+ 			    "capacity: %qE bytes", m_capacity);
+ }
+ 
+ label_text
+ region_creation_event_allocation_size::get_desc (bool can_colorize) const
+ {
+   if (m_capacity)
+     {
+       if (TREE_CODE (m_capacity) == INTEGER_CST)
+ 	return make_label_text_n (can_colorize,
+ 				  tree_to_uhwi (m_capacity),
+ 				  "allocated %E byte here",
+ 				  "allocated %E bytes here",
+ 				  m_capacity);
+       else
+ 	return make_label_text (can_colorize,
+ 				"allocated %qE bytes here",
+ 				m_capacity);
+     }
+   return make_label_text (can_colorize, "allocated here");
+ }
+ 
+ label_text
+ region_creation_event_debug::get_desc (bool) const
+ {
+   pretty_printer pp;
+   pp_format_decoder (&pp) = default_tree_printer;
+   pp_string (&pp, "region creation: ");
+   m_reg->dump_to_pp (&pp, true);
+   if (m_capacity)
+     pp_printf (&pp, " capacity: %qE", m_capacity);
+   return label_text::take (xstrdup (pp_formatted_text (&pp)));
+ }
+ 
+ /* class function_entry_event : public checker_event.  */
+ 
+ function_entry_event::function_entry_event (const program_point &dst_point)
+ : checker_event (EK_FUNCTION_ENTRY,
+ 		 event_loc_info (dst_point.get_supernode
+ 				   ()->get_start_location (),
+ 				 dst_point.get_fndecl (),
+ 				 dst_point.get_stack_depth ()))
+ {
+ }
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    function_entry_event.
+ 
+    Use a string such as "entry to 'foo'" as the event's description.  */
+ 
+ label_text
+ function_entry_event::get_desc (bool can_colorize) const
+ {
+   return make_label_text (can_colorize, "entry to %qE", m_effective_fndecl);
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    function entry.  */
+ 
+ diagnostic_event::meaning
+ function_entry_event::get_meaning () const
+ {
+   return meaning (VERB_enter, NOUN_function);
+ }
+ 
+ /* class state_change_event : public checker_event.  */
+ 
+ /* state_change_event's ctor.  */
+ 
+ state_change_event::state_change_event (const supernode *node,
+ 					const gimple *stmt,
+ 					int stack_depth,
+ 					const state_machine &sm,
+ 					const svalue *sval,
+ 					state_machine::state_t from,
+ 					state_machine::state_t to,
+ 					const svalue *origin,
+ 					const program_state &dst_state,
+ 					const exploded_node *enode)
+ : checker_event (EK_STATE_CHANGE,
+ 		 event_loc_info (stmt->location,
+ 				 node->m_fun->decl,
+ 				 stack_depth)),
+   m_node (node), m_stmt (stmt), m_sm (sm),
+   m_sval (sval), m_from (from), m_to (to),
+   m_origin (origin),
+   m_dst_state (dst_state),
+   m_enode (enode)
+ {
+ }
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    state_change_event.
+ 
+    Attempt to generate a nicer human-readable description.
+    For greatest precision-of-wording, give the pending diagnostic
+    a chance to describe this state change (in terms of the
+    diagnostic).
+    Note that we only have a pending_diagnostic set on the event once
+    the diagnostic is about to being emitted, so the description for
+    an event can change.  */
+ 
+ label_text
+ state_change_event::get_desc (bool can_colorize) const
+ {
+   if (m_pending_diagnostic)
+     {
+       region_model *model = m_dst_state.m_region_model;
+       tree var = model->get_representative_tree (m_sval);
+       tree origin = model->get_representative_tree (m_origin);
+       label_text custom_desc
+ 	= m_pending_diagnostic->describe_state_change
+ 	    (evdesc::state_change (can_colorize, var, origin,
+ 				   m_from, m_to, m_emission_id, *this));
+       if (custom_desc.get ())
+ 	{
+ 	  if (flag_analyzer_verbose_state_changes)
+ 	    {
+ 	      /* Get any "meaning" of event.  */
+ 	      diagnostic_event::meaning meaning = get_meaning ();
+ 	      pretty_printer meaning_pp;
+ 	      meaning.dump_to_pp (&meaning_pp);
+ 
+ 	      /* Append debug version.  */
+ 	      if (m_origin)
+ 		return make_label_text
+ 		  (can_colorize,
+ 		   "%s (state of %qE: %qs -> %qs, origin: %qE, meaning: %s)",
+ 		   custom_desc.get (),
+ 		   var,
+ 		   m_from->get_name (),
+ 		   m_to->get_name (),
+ 		   origin,
+ 		   pp_formatted_text (&meaning_pp));
+ 	      else
+ 		return make_label_text
+ 		  (can_colorize,
+ 		   "%s (state of %qE: %qs -> %qs, NULL origin, meaning: %s)",
+ 		   custom_desc.get (),
+ 		   var,
+ 		   m_from->get_name (),
+ 		   m_to->get_name (),
+ 		   pp_formatted_text (&meaning_pp));
+ 	    }
+ 	  else
+ 	    return custom_desc;
+ 	}
+     }
+ 
+   /* Fallback description.  */
+   if (m_sval)
+     {
+       label_text sval_desc = m_sval->get_desc ();
+       if (m_origin)
+ 	{
+ 	  label_text origin_desc = m_origin->get_desc ();
+ 	  return make_label_text
+ 	    (can_colorize,
+ 	     "state of %qs: %qs -> %qs (origin: %qs)",
+ 	     sval_desc.get (),
+ 	     m_from->get_name (),
+ 	     m_to->get_name (),
+ 	     origin_desc.get ());
+ 	}
+       else
+ 	return make_label_text
+ 	  (can_colorize,
+ 	   "state of %qs: %qs -> %qs (NULL origin)",
+ 	   sval_desc.get (),
+ 	   m_from->get_name (),
+ 	   m_to->get_name ());
+     }
+   else
+     {
+       gcc_assert (m_origin == NULL);
+       return make_label_text
+ 	(can_colorize,
+ 	 "global state: %qs -> %qs",
+ 	 m_from->get_name (),
+ 	 m_to->get_name ());
+     }
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    state change events: delegate to the pending_diagnostic to
+    get any meaning.  */
+ 
+ diagnostic_event::meaning
+ state_change_event::get_meaning () const
+ {
+   if (m_pending_diagnostic)
+     {
+       region_model *model = m_dst_state.m_region_model;
+       tree var = model->get_representative_tree (m_sval);
+       tree origin = model->get_representative_tree (m_origin);
+       return m_pending_diagnostic->get_meaning_for_state_change
+ 	(evdesc::state_change (false, var, origin,
+ 			       m_from, m_to, m_emission_id, *this));
+     }
+   else
+     return meaning ();
+ }
+ 
+ /* class superedge_event : public checker_event.  */
+ 
+ /* Get the callgraph_superedge for this superedge_event, which must be
+    for an interprocedural edge, rather than a CFG edge.  */
+ 
+ const callgraph_superedge&
+ superedge_event::get_callgraph_superedge () const
+ {
+   gcc_assert (m_sedge->m_kind != SUPEREDGE_CFG_EDGE);
+   return *m_sedge->dyn_cast_callgraph_superedge ();
+ }
+ 
+ /* Determine if this event should be filtered at the given verbosity
+    level.  */
+ 
+ bool
+ superedge_event::should_filter_p (int verbosity) const
+ {
+   switch (m_sedge->m_kind)
+     {
+     case SUPEREDGE_CFG_EDGE:
+       {
+ 	if (verbosity < 2)
+ 	  return true;
+ 
+ 	if (verbosity < 4)
+ 	  {
+ 	    /* Filter events with empty descriptions.  This ought to filter
+ 	       FALLTHRU, but retain true/false/switch edges.  */
+ 	    label_text desc = get_desc (false);
+ 	    gcc_assert (desc.get ());
+ 	    if (desc.get ()[0] == '\0')
+ 	      return true;
+ 	  }
+       }
+       break;
+ 
+     default:
+       break;
+     }
+   return false;
+ }
+ 
+ /* superedge_event's ctor.  */
+ 
+ superedge_event::superedge_event (enum event_kind kind,
+ 				  const exploded_edge &eedge,
+ 				  const event_loc_info &loc_info)
+ : checker_event (kind, loc_info),
+   m_eedge (eedge), m_sedge (eedge.m_sedge),
+   m_var (NULL_TREE), m_critical_state (0)
+ {
+ }
+ 
+ /* class cfg_edge_event : public superedge_event.  */
+ 
+ /* Get the cfg_superedge for this cfg_edge_event.  */
+ 
+ const cfg_superedge &
+ cfg_edge_event::get_cfg_superedge () const
+ {
+   return *m_sedge->dyn_cast_cfg_superedge ();
+ }
+ 
+ /* cfg_edge_event's ctor.  */
+ 
+ cfg_edge_event::cfg_edge_event (enum event_kind kind,
+ 				const exploded_edge &eedge,
+ 				const event_loc_info &loc_info)
+ : superedge_event (kind, eedge, loc_info)
+ {
+   gcc_assert (eedge.m_sedge->m_kind == SUPEREDGE_CFG_EDGE);
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    CFG edge events.  */
+ 
+ diagnostic_event::meaning
+ cfg_edge_event::get_meaning () const
+ {
+   const cfg_superedge& cfg_sedge = get_cfg_superedge ();
+   if (cfg_sedge.true_value_p ())
+     return meaning (VERB_branch, PROPERTY_true);
+   else if (cfg_sedge.false_value_p ())
+     return meaning (VERB_branch, PROPERTY_false);
+   else
+     return meaning ();
+ }
+ 
+ /* class start_cfg_edge_event : public cfg_edge_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    start_cfg_edge_event.
+ 
+    If -fanalyzer-verbose-edges, then generate low-level descriptions, such
+    as
+      "taking 'true' edge SN:7 -> SN:8".
+ 
+    Otherwise, generate strings using the label of the underlying CFG if
+    any, such as:
+      "following 'true' branch..." or
+      "following 'case 3' branch..."
+      "following 'default' branch..."
+ 
+    For conditionals, attempt to supply a description of the condition that
+    holds, such as:
+      "following 'false' branch (when 'ptr' is non-NULL)..."
+ 
+    Failing that, return an empty description (which will lead to this event
+    being filtered).  */
+ 
+ label_text
+ start_cfg_edge_event::get_desc (bool can_colorize) const
+ {
+   bool user_facing = !flag_analyzer_verbose_edges;
+   label_text edge_desc (m_sedge->get_description (user_facing));
+   if (user_facing)
+     {
+       if (edge_desc.get () && strlen (edge_desc.get ()) > 0)
+ 	{
+ 	  label_text cond_desc = maybe_describe_condition (can_colorize);
+ 	  label_text result;
+ 	  if (cond_desc.get ())
+ 	    return make_label_text (can_colorize,
+ 				    "following %qs branch (%s)...",
+ 				    edge_desc.get (), cond_desc.get ());
+ 	  else
+ 	    return make_label_text (can_colorize,
+ 				    "following %qs branch...",
+ 				    edge_desc.get ());
+ 	}
+       else
+ 	return label_text::borrow ("");
+     }
+   else
+     {
+       if (strlen (edge_desc.get ()) > 0)
+ 	return make_label_text (can_colorize,
+ 				"taking %qs edge SN:%i -> SN:%i",
+ 				edge_desc.get (),
+ 				m_sedge->m_src->m_index,
+ 				m_sedge->m_dest->m_index);
+       else
+ 	return make_label_text (can_colorize,
+ 				"taking edge SN:%i -> SN:%i",
+ 				m_sedge->m_src->m_index,
+ 				m_sedge->m_dest->m_index);
+     }
+ }
+ 
+ /* Attempt to generate a description of any condition that holds at this edge.
+ 
+    The intent is to make the user-facing messages more clear, especially for
+    cases where there's a single or double-negative, such as
+    when describing the false branch of an inverted condition.
+ 
+    For example, rather than printing just:
+ 
+       |  if (!ptr)
+       |     ~
+       |     |
+       |     (1) following 'false' branch...
+ 
+    it's clearer to spell out the condition that holds:
+ 
+       |  if (!ptr)
+       |     ~
+       |     |
+       |     (1) following 'false' branch (when 'ptr' is non-NULL)...
+                                           ^^^^^^^^^^^^^^^^^^^^^^
+ 
+    In the above example, this function would generate the highlighted
+    string: "when 'ptr' is non-NULL".
+ 
+    If the edge is not a condition, or it's not clear that a description of
+    the condition would be helpful to the user, return NULL.  */
+ 
+ label_text
+ start_cfg_edge_event::maybe_describe_condition (bool can_colorize) const
+ {
+   const cfg_superedge& cfg_sedge = get_cfg_superedge ();
+ 
+   if (cfg_sedge.true_value_p () || cfg_sedge.false_value_p ())
+     {
+       const gimple *last_stmt = m_sedge->m_src->get_last_stmt ();
+       if (const gcond *cond_stmt = dyn_cast <const gcond *> (last_stmt))
+ 	{
+ 	  enum tree_code op = gimple_cond_code (cond_stmt);
+ 	  tree lhs = gimple_cond_lhs (cond_stmt);
+ 	  tree rhs = gimple_cond_rhs (cond_stmt);
+ 	  if (cfg_sedge.false_value_p ())
+ 	    op = invert_tree_comparison (op, false /* honor_nans */);
+ 	  return maybe_describe_condition (can_colorize,
+ 					   lhs, op, rhs);
+ 	}
+     }
+   return label_text::borrow (NULL);
+ }
+ 
+ /* Subroutine of maybe_describe_condition above.
+ 
+    Attempt to generate a user-facing description of the condition
+    LHS OP RHS, but only if it is likely to make it easier for the
+    user to understand a condition.  */
+ 
+ label_text
+ start_cfg_edge_event::maybe_describe_condition (bool can_colorize,
+ 						tree lhs,
+ 						enum tree_code op,
+ 						tree rhs)
+ {
+   /* In theory we could just build a tree via
+        fold_build2 (op, boolean_type_node, lhs, rhs)
+      and print it with %qE on it, but this leads to warts such as
+      parenthesizing vars, such as '(i) <= 9', and uses of '<unknown>'.  */
+ 
+   /* Special-case: describe testing the result of strcmp, as figuring
+      out what the "true" or "false" path is can be confusing to the user.  */
+   if (TREE_CODE (lhs) == SSA_NAME
+       && zerop (rhs))
+     {
+       if (gcall *call = dyn_cast <gcall *> (SSA_NAME_DEF_STMT (lhs)))
+ 	if (is_special_named_call_p (call, "strcmp", 2))
+ 	  {
+ 	    if (op == EQ_EXPR)
+ 	      return label_text::borrow ("when the strings are equal");
+ 	    if (op == NE_EXPR)
+ 	      return label_text::borrow ("when the strings are non-equal");
+ 	  }
+     }
+ 
+   /* Only attempt to generate text for sufficiently simple expressions.  */
+   if (!should_print_expr_p (lhs))
+     return label_text::borrow (NULL);
+   if (!should_print_expr_p (rhs))
+     return label_text::borrow (NULL);
+ 
+   /* Special cases for pointer comparisons against NULL.  */
+   if (POINTER_TYPE_P (TREE_TYPE (lhs))
+       && POINTER_TYPE_P (TREE_TYPE (rhs))
+       && zerop (rhs))
+     {
+       if (op == EQ_EXPR)
+ 	return make_label_text (can_colorize, "when %qE is NULL",
+ 				lhs);
+       if (op == NE_EXPR)
+ 	return make_label_text (can_colorize, "when %qE is non-NULL",
+ 				lhs);
+     }
+ 
+   return make_label_text (can_colorize, "when %<%E %s %E%>",
+ 			  lhs, op_symbol_code (op), rhs);
+ }
+ 
+ /* Subroutine of maybe_describe_condition.
+ 
+    Return true if EXPR is we will get suitable user-facing output
+    from %E on it.  */
+ 
+ bool
+ start_cfg_edge_event::should_print_expr_p (tree expr)
+ {
+   if (TREE_CODE (expr) == SSA_NAME)
+     {
+       if (SSA_NAME_VAR (expr))
+ 	return should_print_expr_p (SSA_NAME_VAR (expr));
+       else
+ 	return false;
+     }
+ 
+   if (DECL_P (expr))
+     return true;
+ 
+   if (CONSTANT_CLASS_P (expr))
+     return true;
+ 
+   return false;
+ }
+ 
+ /* class call_event : public superedge_event.  */
+ 
+ /* call_event's ctor.  */
+ 
+ call_event::call_event (const exploded_edge &eedge,
+ 			const event_loc_info &loc_info)
+ : superedge_event (EK_CALL_EDGE, eedge, loc_info)
+ {
+   if (eedge.m_sedge)
+     gcc_assert (eedge.m_sedge->m_kind == SUPEREDGE_CALL);
+ 
+    m_src_snode = eedge.m_src->get_supernode ();
+    m_dest_snode = eedge.m_dest->get_supernode ();
+ }
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    call_event.
+ 
+    If this call event passes critical state for an sm-based warning,
+    allow the diagnostic to generate a precise description, such as:
+ 
+      "passing freed pointer 'ptr' in call to 'foo' from 'bar'"
+ 
+    Otherwise, generate a description of the form
+    "calling 'foo' from 'bar'".  */
+ 
+ label_text
+ call_event::get_desc (bool can_colorize) const
+ {
+   if (m_critical_state && m_pending_diagnostic)
+     {
+       gcc_assert (m_var);
+       tree var = fixup_tree_for_diagnostic (m_var);
+       label_text custom_desc
+ 	= m_pending_diagnostic->describe_call_with_state
+ 	    (evdesc::call_with_state (can_colorize,
+ 				      m_src_snode->m_fun->decl,
+ 				      m_dest_snode->m_fun->decl,
+ 				      var,
+ 				      m_critical_state));
+       if (custom_desc.get ())
+ 	return custom_desc;
+     }
+ 
+   return make_label_text (can_colorize,
+ 			  "calling %qE from %qE",
+ 			  get_callee_fndecl (),
+ 			  get_caller_fndecl ());
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    function call events.  */
+ 
+ diagnostic_event::meaning
+ call_event::get_meaning () const
+ {
+   return meaning (VERB_call, NOUN_function);
+ }
+ 
+ /* Override of checker_event::is_call_p for calls.  */
+ 
+ bool
+ call_event::is_call_p () const
+ {
+   return true;
+ }
+ 
+ tree
+ call_event::get_caller_fndecl () const
+ {
+   return m_src_snode->m_fun->decl;
+ }
+ 
+ tree
+ call_event::get_callee_fndecl () const
+ {
+   return m_dest_snode->m_fun->decl;
+ }
+ 
+ /* class return_event : public superedge_event.  */
+ 
+ /* return_event's ctor.  */
+ 
+ return_event::return_event (const exploded_edge &eedge,
+ 			    const event_loc_info &loc_info)
+ : superedge_event (EK_RETURN_EDGE, eedge, loc_info)
+ {
+   if (eedge.m_sedge)
+     gcc_assert (eedge.m_sedge->m_kind == SUPEREDGE_RETURN);
+ 
+   m_src_snode = eedge.m_src->get_supernode ();
+   m_dest_snode = eedge.m_dest->get_supernode ();
+ }
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    return_event.
+ 
+    If this return event returns critical state for an sm-based warning,
+    allow the diagnostic to generate a precise description, such as:
+ 
+       "possible of NULL to 'foo' from 'bar'"
+ 
+    Otherwise, generate a description of the form
+    "returning to 'foo' from 'bar'.  */
+ 
+ label_text
+ return_event::get_desc (bool can_colorize) const
+ {
+   /*  For greatest precision-of-wording, if this is returning the
+       state involved in the pending diagnostic, give the pending
+       diagnostic a chance to describe this return (in terms of
+       itself).  */
+   if (m_critical_state && m_pending_diagnostic)
+     {
+       label_text custom_desc
+ 	= m_pending_diagnostic->describe_return_of_state
+ 	    (evdesc::return_of_state (can_colorize,
+ 				      m_dest_snode->m_fun->decl,
+ 				      m_src_snode->m_fun->decl,
+ 				      m_critical_state));
+       if (custom_desc.get ())
+ 	return custom_desc;
+     }
+   return make_label_text (can_colorize,
+ 			  "returning to %qE from %qE",
+ 			  m_dest_snode->m_fun->decl,
+ 			  m_src_snode->m_fun->decl);
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    function return events.  */
+ 
+ diagnostic_event::meaning
+ return_event::get_meaning () const
+ {
+   return meaning (VERB_return, NOUN_function);
+ }
+ 
+ /* Override of checker_event::is_return_p for returns.  */
+ 
+ bool
+ return_event::is_return_p () const
+ {
+   return true;
+ }
+ 
+ /* class start_consolidated_cfg_edges_event : public checker_event.  */
+ 
+ label_text
+ start_consolidated_cfg_edges_event::get_desc (bool can_colorize) const
+ {
+   return make_label_text (can_colorize,
+ 			  "following %qs branch...",
+ 			  m_edge_sense ? "true" : "false");
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    start_consolidated_cfg_edges_event.  */
+ 
+ diagnostic_event::meaning
+ start_consolidated_cfg_edges_event::get_meaning () const
+ {
+   return meaning (VERB_branch,
+ 		  (m_edge_sense ? PROPERTY_true : PROPERTY_false));
+ }
+ 
+ /* class inlined_call_event : public checker_event.  */
+ 
+ label_text
+ inlined_call_event::get_desc (bool can_colorize) const
+ {
+   return make_label_text (can_colorize,
+ 			  "inlined call to %qE from %qE",
+ 			  m_apparent_callee_fndecl,
+ 			  m_apparent_caller_fndecl);
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    reconstructed inlined function calls.  */
+ 
+ diagnostic_event::meaning
+ inlined_call_event::get_meaning () const
+ {
+   return meaning (VERB_call, NOUN_function);
+ }
+ 
+ /* class setjmp_event : public checker_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    setjmp_event.  */
+ 
+ label_text
+ setjmp_event::get_desc (bool can_colorize) const
+ {
+   return make_label_text (can_colorize,
+ 			  "%qs called here",
+ 			  get_user_facing_name (m_setjmp_call));
+ }
+ 
+ /* Implementation of checker_event::prepare_for_emission vfunc for setjmp_event.
+ 
+    Record this setjmp's event ID into the path, so that rewind events can
+    use it.  */
+ 
+ void
+ setjmp_event::prepare_for_emission (checker_path *path,
+ 				    pending_diagnostic *pd,
+ 				    diagnostic_event_id_t emission_id)
+ {
+   checker_event::prepare_for_emission (path, pd, emission_id);
+   path->record_setjmp_event (m_enode, emission_id);
+ }
+ 
+ /* class rewind_event : public checker_event.  */
+ 
+ /* Get the fndecl containing the site of the longjmp call.  */
+ 
+ tree
+ rewind_event::get_longjmp_caller () const
+ {
+   return m_eedge->m_src->get_function ()->decl;
+ }
+ 
+ /* Get the fndecl containing the site of the setjmp call.  */
+ 
+ tree
+ rewind_event::get_setjmp_caller () const
+ {
+   return m_eedge->m_dest->get_function ()->decl;
+ }
+ 
+ /* rewind_event's ctor.  */
+ 
+ rewind_event::rewind_event (const exploded_edge *eedge,
+ 			    enum event_kind kind,
+ 			    const event_loc_info &loc_info,
+ 			    const rewind_info_t *rewind_info)
+ : checker_event (kind, loc_info),
+   m_rewind_info (rewind_info),
+   m_eedge (eedge)
+ {
+   gcc_assert (m_eedge->m_custom_info.get () == m_rewind_info);
+ }
+ 
+ /* class rewind_from_longjmp_event : public rewind_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    rewind_from_longjmp_event.  */
+ 
+ label_text
+ rewind_from_longjmp_event::get_desc (bool can_colorize) const
+ {
+   const char *src_name
+     = get_user_facing_name (m_rewind_info->get_longjmp_call ());
+ 
+   if (get_longjmp_caller () == get_setjmp_caller ())
+     /* Special-case: purely intraprocedural rewind.  */
+     return make_label_text (can_colorize,
+ 			    "rewinding within %qE from %qs...",
+ 			    get_longjmp_caller (),
+ 			    src_name);
+   else
+     return make_label_text (can_colorize,
+ 			    "rewinding from %qs in %qE...",
+ 			    src_name,
+ 			    get_longjmp_caller ());
+ }
+ 
+ /* class rewind_to_setjmp_event : public rewind_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    rewind_to_setjmp_event.  */
+ 
+ label_text
+ rewind_to_setjmp_event::get_desc (bool can_colorize) const
+ {
+   const char *dst_name
+     = get_user_facing_name (m_rewind_info->get_setjmp_call ());
+ 
+   /* If we can, identify the ID of the setjmp_event.  */
+   if (m_original_setjmp_event_id.known_p ())
+     {
+       if (get_longjmp_caller () == get_setjmp_caller ())
+ 	/* Special-case: purely intraprocedural rewind.  */
+ 	return make_label_text (can_colorize,
+ 				"...to %qs (saved at %@)",
+ 				dst_name,
+ 				&m_original_setjmp_event_id);
+       else
+ 	return make_label_text (can_colorize,
+ 				"...to %qs in %qE (saved at %@)",
+ 				dst_name,
+ 				get_setjmp_caller (),
+ 				&m_original_setjmp_event_id);
+     }
+   else
+     {
+       if (get_longjmp_caller () == get_setjmp_caller ())
+ 	/* Special-case: purely intraprocedural rewind.  */
+ 	return make_label_text (can_colorize,
+ 				"...to %qs",
+ 				dst_name,
+ 				get_setjmp_caller ());
+       else
+ 	return make_label_text (can_colorize,
+ 				"...to %qs in %qE",
+ 				dst_name,
+ 				get_setjmp_caller ());
+     }
+ }
+ 
+ /* Implementation of checker_event::prepare_for_emission vfunc for
+    rewind_to_setjmp_event.
+ 
+    Attempt to look up the setjmp event ID that recorded the jmp_buf
+    for this rewind.  */
+ 
+ void
+ rewind_to_setjmp_event::prepare_for_emission (checker_path *path,
+ 					      pending_diagnostic *pd,
+ 					      diagnostic_event_id_t emission_id)
+ {
+   checker_event::prepare_for_emission (path, pd, emission_id);
+   path->get_setjmp_event (m_rewind_info->get_enode_origin (),
+ 			  &m_original_setjmp_event_id);
+ }
+ 
+ /* class warning_event : public checker_event.  */
+ 
+ /* Implementation of diagnostic_event::get_desc vfunc for
+    warning_event.
+ 
+    If the pending diagnostic implements describe_final_event, use it,
+    generating a precise description e.g.
+      "second 'free' here; first 'free' was at (7)"
+ 
+    Otherwise generate a generic description.  */
+ 
+ label_text
+ warning_event::get_desc (bool can_colorize) const
+ {
+   if (m_pending_diagnostic)
+     {
+       tree var = fixup_tree_for_diagnostic (m_var);
+       label_text ev_desc
+ 	= m_pending_diagnostic->describe_final_event
+ 	    (evdesc::final_event (can_colorize, var, m_state, *this));
+       if (ev_desc.get ())
+ 	{
+ 	  if (m_sm && flag_analyzer_verbose_state_changes)
+ 	    {
+ 	      if (var)
+ 		return make_label_text (can_colorize,
+ 					"%s (%qE is in state %qs)",
+ 					ev_desc.get (),
+ 					var, m_state->get_name ());
+ 	      else
+ 		return make_label_text (can_colorize,
+ 					"%s (in global state %qs)",
+ 					ev_desc.get (),
+ 					m_state->get_name ());
+ 	    }
+ 	  else
+ 	    return ev_desc;
+ 	}
+     }
+ 
+   if (m_sm)
+     {
+       if (m_var)
+ 	return make_label_text (can_colorize,
+ 				"here (%qE is in state %qs)",
+ 				m_var, m_state->get_name ());
+       else
+ 	return make_label_text (can_colorize,
+ 				"here (in global state %qs)",
+ 				m_state->get_name ());
+     }
+   else
+     return label_text::borrow ("here");
+ }
+ 
+ /* Implementation of diagnostic_event::get_meaning vfunc for
+    warning_event.  */
+ 
+ diagnostic_event::meaning
+ warning_event::get_meaning () const
+ {
+   return meaning (VERB_danger, NOUN_unknown);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/checker-event.h gcc-13.1.0/gcc/analyzer/checker-event.h
*** gcc-12.2.0/gcc/analyzer/checker-event.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/checker-event.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,698 ----
+ /* Subclasses of diagnostic_event for analyzer diagnostics.
+    Copyright (C) 2019-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_CHECKER_EVENT_H
+ #define GCC_ANALYZER_CHECKER_EVENT_H
+ 
+ #include "tree-logical-location.h"
+ #include "analyzer/program-state.h"
+ 
+ namespace ana {
+ 
+ /* A bundle of location information for a checker_event.  */
+ 
+ struct event_loc_info
+ {
+   event_loc_info (location_t loc, tree fndecl, int depth)
+   : m_loc (loc), m_fndecl (fndecl), m_depth (depth)
+   {}
+ 
+   location_t m_loc;
+   tree m_fndecl;
+   int m_depth;
+ };
+ 
+ /* An enum for discriminating between the concrete subclasses of
+    checker_event.  */
+ 
+ enum event_kind
+ {
+   EK_DEBUG,
+   EK_CUSTOM,
+   EK_STMT,
+   EK_REGION_CREATION,
+   EK_FUNCTION_ENTRY,
+   EK_STATE_CHANGE,
+   EK_START_CFG_EDGE,
+   EK_END_CFG_EDGE,
+   EK_CALL_EDGE,
+   EK_RETURN_EDGE,
+   EK_START_CONSOLIDATED_CFG_EDGES,
+   EK_END_CONSOLIDATED_CFG_EDGES,
+   EK_INLINED_CALL,
+   EK_SETJMP,
+   EK_REWIND_FROM_LONGJMP,
+   EK_REWIND_TO_SETJMP,
+   EK_WARNING
+ };
+ 
+ extern const char *event_kind_to_string (enum event_kind ek);
+ 
+ /* Event subclasses.
+ 
+    The class hierarchy looks like this (using indentation to show
+    inheritance, and with event_kinds shown for the concrete subclasses):
+ 
+    diagnostic_event
+      checker_event
+        debug_event (EK_DEBUG)
+        custom_event (EK_CUSTOM)
+ 	 precanned_custom_event
+        statement_event (EK_STMT)
+        region_creation_event (EK_REGION_CREATION)
+        function_entry_event (EK_FUNCTION_ENTRY)
+        state_change_event (EK_STATE_CHANGE)
+        superedge_event
+          cfg_edge_event
+ 	   start_cfg_edge_event (EK_START_CFG_EDGE)
+ 	   end_cfg_edge_event (EK_END_CFG_EDGE)
+          call_event (EK_CALL_EDGE)
+          return_edge (EK_RETURN_EDGE)
+        start_consolidated_cfg_edges_event (EK_START_CONSOLIDATED_CFG_EDGES)
+        end_consolidated_cfg_edges_event (EK_END_CONSOLIDATED_CFG_EDGES)
+        inlined_call_event (EK_INLINED_CALL)
+        setjmp_event (EK_SETJMP)
+        rewind_event
+          rewind_from_longjmp_event (EK_REWIND_FROM_LONGJMP)
+ 	 rewind_to_setjmp_event (EK_REWIND_TO_SETJMP)
+        warning_event (EK_WARNING).  */
+ 
+ /* Abstract subclass of diagnostic_event; the base class for use in
+    checker_path (the analyzer's diagnostic_path subclass).  */
+ 
+ class checker_event : public diagnostic_event
+ {
+ public:
+   /* Implementation of diagnostic_event.  */
+ 
+   location_t get_location () const final override { return m_loc; }
+   tree get_fndecl () const final override { return m_effective_fndecl; }
+   int get_stack_depth () const final override { return m_effective_depth; }
+   const logical_location *get_logical_location () const final override
+   {
+     if (m_effective_fndecl)
+       return &m_logical_loc;
+     else
+       return NULL;
+   }
+   meaning get_meaning () const override;
+ 
+   /* Additional functionality.  */
+ 
+   int get_original_stack_depth () const { return m_original_depth; }
+ 
+   virtual void prepare_for_emission (checker_path *,
+ 				     pending_diagnostic *pd,
+ 				     diagnostic_event_id_t emission_id);
+   virtual bool is_call_p () const { return false; }
+   virtual bool is_function_entry_p () const  { return false; }
+   virtual bool is_return_p () const  { return false; }
+ 
+   /* For use with %@.  */
+   const diagnostic_event_id_t *get_id_ptr () const
+   {
+     return &m_emission_id;
+   }
+ 
+   void dump (pretty_printer *pp) const;
+   void debug () const;
+ 
+   void set_location (location_t loc) { m_loc = loc; }
+ 
+ protected:
+   checker_event (enum event_kind kind,
+ 		 const event_loc_info &loc_info);
+ 
+  public:
+   const enum event_kind m_kind;
+  protected:
+   location_t m_loc;
+   tree m_original_fndecl;
+   tree m_effective_fndecl;
+   int m_original_depth;
+   int m_effective_depth;
+   pending_diagnostic *m_pending_diagnostic;
+   diagnostic_event_id_t m_emission_id; // only set once all pruning has occurred
+   tree_logical_location m_logical_loc;
+ };
+ 
+ /* A concrete event subclass for a purely textual event, for use in
+    debugging path creation and filtering.  */
+ 
+ class debug_event : public checker_event
+ {
+ public:
+ 
+   debug_event (const event_loc_info &loc_info,
+ 	       const char *desc)
+   : checker_event (EK_DEBUG, loc_info),
+     m_desc (xstrdup (desc))
+   {
+   }
+   ~debug_event ()
+   {
+     free (m_desc);
+   }
+ 
+   label_text get_desc (bool) const final override;
+ 
+ private:
+   char *m_desc;
+ };
+ 
+ /* An abstract event subclass for custom events.  These are not filtered,
+    as they are likely to be pertinent to the diagnostic.  */
+ 
+ class custom_event : public checker_event
+ {
+ protected:
+   custom_event (const event_loc_info &loc_info)
+   : checker_event (EK_CUSTOM, loc_info)
+   {
+   }
+ };
+ 
+ /* A concrete custom_event subclass with a precanned message.  */
+ 
+ class precanned_custom_event : public custom_event
+ {
+ public:
+   precanned_custom_event (const event_loc_info &loc_info,
+ 			  const char *desc)
+   : custom_event (loc_info),
+     m_desc (xstrdup (desc))
+   {
+   }
+   ~precanned_custom_event ()
+   {
+     free (m_desc);
+   }
+ 
+   label_text get_desc (bool) const final override;
+ 
+ private:
+   char *m_desc;
+ };
+ 
+ /* A concrete event subclass describing the execution of a gimple statement,
+    for use at high verbosity levels when debugging paths.  */
+ 
+ class statement_event : public checker_event
+ {
+ public:
+   statement_event (const gimple *stmt, tree fndecl, int depth,
+ 		   const program_state &dst_state);
+ 
+   label_text get_desc (bool) const final override;
+ 
+   const gimple * const m_stmt;
+   const program_state m_dst_state;
+ };
+ 
+ /* An abstract event subclass describing the creation of a region that
+    is significant for a diagnostic.
+ 
+    There are too many combinations to express region creation in one message,
+    so we emit multiple region_creation_event instances when each pertinent
+    region is created.
+ 
+    The events are created by pending_diagnostic's add_region_creation_events
+    vfunc, which by default creates a region_creation_event_memory_space, and
+    if a capacity is known, a region_creation_event_capacity, giving e.g.:
+      (1) region created on stack here
+      (2) capacity: 100 bytes
+    but this vfunc can be overridden to create other events if other wordings
+    are more appropriate foa a given pending_diagnostic.  */
+ 
+ class region_creation_event : public checker_event
+ {
+ protected:
+   region_creation_event (const event_loc_info &loc_info);
+ };
+ 
+ /* Concrete subclass of region_creation_event.
+    Generates a message based on the memory space of the region
+    e.g. "region created on stack here".  */
+ 
+ class region_creation_event_memory_space : public region_creation_event
+ {
+ public:
+   region_creation_event_memory_space (enum memory_space mem_space,
+ 				      const event_loc_info &loc_info)
+   : region_creation_event (loc_info),
+     m_mem_space (mem_space)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+ private:
+   enum memory_space m_mem_space;
+ };
+ 
+ /* Concrete subclass of region_creation_event.
+    Generates a message based on the capacity of the region
+    e.g. "capacity: 100 bytes".  */
+ 
+ class region_creation_event_capacity : public region_creation_event
+ {
+ public:
+   region_creation_event_capacity (tree capacity,
+ 				  const event_loc_info &loc_info)
+   : region_creation_event (loc_info),
+     m_capacity (capacity)
+   {
+     gcc_assert (m_capacity);
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+ private:
+   tree m_capacity;
+ };
+ 
+ /* Concrete subclass of region_creation_event.
+    Generates a message based on the capacity of the region
+    e.g. "allocated 100 bytes here".  */
+ 
+ class region_creation_event_allocation_size : public region_creation_event
+ {
+ public:
+   region_creation_event_allocation_size (tree capacity,
+ 					 const event_loc_info &loc_info)
+   : region_creation_event (loc_info),
+     m_capacity (capacity)
+   {}
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+ private:
+   tree m_capacity;
+ };
+ 
+ /* Concrete subclass of region_creation_event.
+    Generates a debug message intended for analyzer developers.  */
+ 
+ class region_creation_event_debug : public region_creation_event
+ {
+ public:
+   region_creation_event_debug (const region *reg, tree capacity,
+ 			       const event_loc_info &loc_info)
+   : region_creation_event (loc_info),
+     m_reg (reg), m_capacity (capacity)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+ private:
+   const region *m_reg;
+   tree m_capacity;
+ };
+ 
+ /* An event subclass describing the entry to a function.  */
+ 
+ class function_entry_event : public checker_event
+ {
+ public:
+   function_entry_event (const event_loc_info &loc_info)
+   : checker_event (EK_FUNCTION_ENTRY, loc_info)
+   {
+   }
+ 
+   function_entry_event (const program_point &dst_point);
+ 
+   label_text get_desc (bool can_colorize) const override;
+   meaning get_meaning () const override;
+ 
+   bool is_function_entry_p () const final override { return true; }
+ };
+ 
+ /* Subclass of checker_event describing a state change.  */
+ 
+ class state_change_event : public checker_event
+ {
+ public:
+   state_change_event (const supernode *node, const gimple *stmt,
+ 		      int stack_depth,
+ 		      const state_machine &sm,
+ 		      const svalue *sval,
+ 		      state_machine::state_t from,
+ 		      state_machine::state_t to,
+ 		      const svalue *origin,
+ 		      const program_state &dst_state,
+ 		      const exploded_node *enode);
+ 
+   label_text get_desc (bool can_colorize) const final override;
+   meaning get_meaning () const override;
+ 
+   function *get_dest_function () const
+   {
+     return m_dst_state.get_current_function ();
+   }
+ 
+   const exploded_node *get_exploded_node () const { return m_enode; }
+ 
+   const supernode *m_node;
+   const gimple *m_stmt;
+   const state_machine &m_sm;
+   const svalue *m_sval;
+   state_machine::state_t m_from;
+   state_machine::state_t m_to;
+   const svalue *m_origin;
+   program_state m_dst_state;
+   const exploded_node *m_enode;
+ };
+ 
+ /* Subclass of checker_event; parent class for subclasses that relate to
+    a superedge.  */
+ 
+ class superedge_event : public checker_event
+ {
+ public:
+   /* Mark this edge event as being either an interprocedural call or
+      return in which VAR is in STATE, and that this is critical to the
+      diagnostic (so that get_desc can attempt to get a better description
+      from any pending_diagnostic).  */
+   void record_critical_state (tree var, state_machine::state_t state)
+   {
+     m_var = var;
+     m_critical_state = state;
+   }
+ 
+   const callgraph_superedge& get_callgraph_superedge () const;
+ 
+   bool should_filter_p (int verbosity) const;
+ 
+  protected:
+   superedge_event (enum event_kind kind, const exploded_edge &eedge,
+ 		   const event_loc_info &loc_info);
+ 
+  public:
+   const exploded_edge &m_eedge;
+   const superedge *m_sedge;
+   tree m_var;
+   state_machine::state_t m_critical_state;
+ };
+ 
+ /* An abstract event subclass for when a CFG edge is followed; it has two
+    subclasses, representing the start of the edge and the end of the
+    edge, which come in pairs.  */
+ 
+ class cfg_edge_event : public superedge_event
+ {
+ public:
+   meaning get_meaning () const override;
+ 
+   const cfg_superedge& get_cfg_superedge () const;
+ 
+  protected:
+   cfg_edge_event (enum event_kind kind, const exploded_edge &eedge,
+ 		  const event_loc_info &loc_info);
+ };
+ 
+ /* A concrete event subclass for the start of a CFG edge
+    e.g. "following 'false' branch...'.  */
+ 
+ class start_cfg_edge_event : public cfg_edge_event
+ {
+ public:
+   start_cfg_edge_event (const exploded_edge &eedge,
+ 			const event_loc_info &loc_info)
+   : cfg_edge_event (EK_START_CFG_EDGE, eedge, loc_info)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+  private:
+   label_text maybe_describe_condition (bool can_colorize) const;
+ 
+   static label_text maybe_describe_condition (bool can_colorize,
+ 					      tree lhs,
+ 					      enum tree_code op,
+ 					      tree rhs);
+   static bool should_print_expr_p (tree);
+ };
+ 
+ /* A concrete event subclass for the end of a CFG edge
+    e.g. "...to here'.  */
+ 
+ class end_cfg_edge_event : public cfg_edge_event
+ {
+ public:
+   end_cfg_edge_event (const exploded_edge &eedge,
+ 		      const event_loc_info &loc_info)
+   : cfg_edge_event (EK_END_CFG_EDGE, eedge, loc_info)
+   {
+   }
+ 
+   label_text get_desc (bool /*can_colorize*/) const final override
+   {
+     return label_text::borrow ("...to here");
+   }
+ };
+ 
+ /* A concrete event subclass for an interprocedural call.  */
+ 
+ class call_event : public superedge_event
+ {
+ public:
+   call_event (const exploded_edge &eedge,
+ 	      const event_loc_info &loc_info);
+ 
+   label_text get_desc (bool can_colorize) const override;
+   meaning get_meaning () const override;
+ 
+   bool is_call_p () const final override;
+ 
+ protected:
+   tree get_caller_fndecl () const;
+   tree get_callee_fndecl () const;
+ 
+   const supernode *m_src_snode;
+   const supernode *m_dest_snode;
+ };
+ 
+ /* A concrete event subclass for an interprocedural return.  */
+ 
+ class return_event : public superedge_event
+ {
+ public:
+   return_event (const exploded_edge &eedge,
+ 		const event_loc_info &loc_info);
+ 
+   label_text get_desc (bool can_colorize) const final override;
+   meaning get_meaning () const override;
+ 
+   bool is_return_p () const final override;
+ 
+   const supernode *m_src_snode;
+   const supernode *m_dest_snode;
+ };
+ 
+ /* A concrete event subclass for the start of a consolidated run of CFG
+    edges all either TRUE or FALSE e.g. "following 'false' branch...'.  */
+ 
+ class start_consolidated_cfg_edges_event : public checker_event
+ {
+ public:
+   start_consolidated_cfg_edges_event (const event_loc_info &loc_info,
+ 				      bool edge_sense)
+   : checker_event (EK_START_CONSOLIDATED_CFG_EDGES, loc_info),
+     m_edge_sense (edge_sense)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+   meaning get_meaning () const override;
+ 
+  private:
+   bool m_edge_sense;
+ };
+ 
+ /* A concrete event subclass for the end of a consolidated run of
+    CFG edges e.g. "...to here'.  */
+ 
+ class end_consolidated_cfg_edges_event : public checker_event
+ {
+ public:
+   end_consolidated_cfg_edges_event (const event_loc_info &loc_info)
+   : checker_event (EK_END_CONSOLIDATED_CFG_EDGES, loc_info)
+   {
+   }
+ 
+   label_text get_desc (bool /*can_colorize*/) const final override
+   {
+     return label_text::borrow ("...to here");
+   }
+ };
+ 
+ /* A concrete event subclass for describing an inlined call event
+    e.g. "inlined call to 'callee' from 'caller'".  */
+ 
+ class inlined_call_event : public checker_event
+ {
+ public:
+   inlined_call_event (location_t loc,
+ 		      tree apparent_callee_fndecl,
+ 		      tree apparent_caller_fndecl,
+ 		      int actual_depth,
+ 		      int stack_depth_adjustment)
+   : checker_event (EK_INLINED_CALL,
+ 		   event_loc_info (loc,
+ 				   apparent_caller_fndecl,
+ 				   actual_depth + stack_depth_adjustment)),
+     m_apparent_callee_fndecl (apparent_callee_fndecl),
+     m_apparent_caller_fndecl (apparent_caller_fndecl)
+   {
+     gcc_assert (LOCATION_BLOCK (loc) == NULL);
+   }
+ 
+   label_text get_desc (bool /*can_colorize*/) const final override;
+   meaning get_meaning () const override;
+ 
+ private:
+   tree m_apparent_callee_fndecl;
+   tree m_apparent_caller_fndecl;
+ };
+ 
+ /* A concrete event subclass for a setjmp or sigsetjmp call.  */
+ 
+ class setjmp_event : public checker_event
+ {
+ public:
+   setjmp_event (const event_loc_info &loc_info,
+ 		const exploded_node *enode,
+ 		const gcall *setjmp_call)
+   : checker_event (EK_SETJMP, loc_info),
+     m_enode (enode), m_setjmp_call (setjmp_call)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+   void prepare_for_emission (checker_path *path,
+ 			     pending_diagnostic *pd,
+ 			     diagnostic_event_id_t emission_id) final override;
+ 
+ private:
+   const exploded_node *m_enode;
+   const gcall *m_setjmp_call;
+ };
+ 
+ /* An abstract event subclass for rewinding from a longjmp to a setjmp
+    (or siglongjmp to sigsetjmp).
+ 
+    Base class for two from/to subclasses, showing the two halves of the
+    rewind.  */
+ 
+ class rewind_event : public checker_event
+ {
+ public:
+   tree get_longjmp_caller () const;
+   tree get_setjmp_caller () const;
+   const exploded_edge *get_eedge () const { return m_eedge; }
+ 
+  protected:
+   rewind_event (const exploded_edge *eedge,
+ 		enum event_kind kind,
+ 		const event_loc_info &loc_info,
+ 		const rewind_info_t *rewind_info);
+   const rewind_info_t *m_rewind_info;
+ 
+  private:
+   const exploded_edge *m_eedge;
+ };
+ 
+ /* A concrete event subclass for rewinding from a longjmp to a setjmp,
+    showing the longjmp (or siglongjmp).  */
+ 
+ class rewind_from_longjmp_event : public rewind_event
+ {
+ public:
+   rewind_from_longjmp_event (const exploded_edge *eedge,
+ 			     const event_loc_info &loc_info,
+ 			     const rewind_info_t *rewind_info)
+   : rewind_event (eedge, EK_REWIND_FROM_LONGJMP, loc_info,
+ 		  rewind_info)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ };
+ 
+ /* A concrete event subclass for rewinding from a longjmp to a setjmp,
+    showing the setjmp (or sigsetjmp).  */
+ 
+ class rewind_to_setjmp_event : public rewind_event
+ {
+ public:
+   rewind_to_setjmp_event (const exploded_edge *eedge,
+ 			  const event_loc_info &loc_info,
+ 			  const rewind_info_t *rewind_info)
+   : rewind_event (eedge, EK_REWIND_TO_SETJMP, loc_info,
+ 		  rewind_info)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+ 
+   void prepare_for_emission (checker_path *path,
+ 			     pending_diagnostic *pd,
+ 			     diagnostic_event_id_t emission_id) final override;
+ 
+ private:
+   diagnostic_event_id_t m_original_setjmp_event_id;
+ };
+ 
+ /* Concrete subclass of checker_event for use at the end of a path:
+    a repeat of the warning message at the end of the path (perhaps with
+    references to pertinent events that occurred on the way), at the point
+    where the problem occurs.  */
+ 
+ class warning_event : public checker_event
+ {
+ public:
+   warning_event (const event_loc_info &loc_info,
+ 		 const exploded_node *enode,
+ 		 const state_machine *sm,
+ 		 tree var, state_machine::state_t state)
+   : checker_event (EK_WARNING, loc_info),
+     m_enode (enode),
+     m_sm (sm), m_var (var), m_state (state)
+   {
+   }
+ 
+   label_text get_desc (bool can_colorize) const final override;
+   meaning get_meaning () const override;
+ 
+   const exploded_node *get_exploded_node () const { return m_enode; }
+ 
+ private:
+   const exploded_node *m_enode;
+   const state_machine *m_sm;
+   tree m_var;
+   state_machine::state_t m_state;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_CHECKER_EVENT_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/checker-path.cc gcc-13.1.0/gcc/analyzer/checker-path.cc
*** gcc-12.2.0/gcc/analyzer/checker-path.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/checker-path.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
! /* Subclasses of diagnostic_path and diagnostic_event for analyzer diagnostics.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
! /* Subclass of diagnostic_path for analyzer diagnostics.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,52 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
  #include "gimple.h"
  #include "gimple-pretty-print.h"
  #include "fold-const.h"
- #include "function.h"
  #include "diagnostic-path.h"
  #include "options.h"
  #include "cgraph.h"
- #include "function.h"
  #include "cfg.h"
  #include "digraph.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
  #include "diagnostic-event-id.h"
- #include "shortest-paths.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
  #include "ordered-hash-map.h"
- #include "selftest.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
--- 19,46 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
  #include "gimple.h"
+ #include "diagnostic-core.h"
  #include "gimple-pretty-print.h"
  #include "fold-const.h"
  #include "diagnostic-path.h"
  #include "options.h"
  #include "cgraph.h"
  #include "cfg.h"
  #include "digraph.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "sbitmap.h"
  #include "bitmap.h"
  #include "ordered-hash-map.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
*************** along with GCC; see the file COPYING3.
*** 54,59 ****
--- 48,54 ----
  #include "analyzer/program-state.h"
  #include "analyzer/checker-path.h"
  #include "gimple-iterator.h"
+ #include "inlining-iterator.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
*************** along with GCC; see the file COPYING3.
*** 61,970 ****
  #include "analyzer/diagnostic-manager.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/exploded-graph.h"
  
  #if ENABLE_ANALYZER
  
  namespace ana {
  
- /* Get a string for EK.  */
- 
- const char *
- event_kind_to_string (enum event_kind ek)
- {
-   switch (ek)
-     {
-     default:
-       gcc_unreachable ();
-     case EK_DEBUG:
-       return "EK_DEBUG";
-     case EK_CUSTOM:
-       return "EK_CUSTOM";
-     case EK_STMT:
-       return "EK_STMT";
-     case EK_REGION_CREATION:
-       return "EK_REGION_CREATION";
-     case EK_FUNCTION_ENTRY:
-       return "EK_FUNCTION_ENTRY";
-     case EK_STATE_CHANGE:
-       return "EK_STATE_CHANGE";
-     case EK_START_CFG_EDGE:
-       return "EK_START_CFG_EDGE";
-     case EK_END_CFG_EDGE:
-       return "EK_END_CFG_EDGE";
-     case EK_CALL_EDGE:
-       return "EK_CALL_EDGE";
-     case EK_RETURN_EDGE:
-       return "EK_RETURN_EDGE";
-     case EK_START_CONSOLIDATED_CFG_EDGES:
-       return "EK_START_CONSOLIDATED_CFG_EDGES";
-     case EK_END_CONSOLIDATED_CFG_EDGES:
-       return "EK_END_CONSOLIDATED_CFG_EDGES";
-     case EK_SETJMP:
-       return "EK_SETJMP";
-     case EK_REWIND_FROM_LONGJMP:
-       return "EK_REWIND_FROM_LONGJMP";
-     case EK_REWIND_TO_SETJMP:
-       return "EK_REWIND_TO_SETJMP";
-     case EK_WARNING:
-       return "EK_WARNING";
-     }
- }
- 
- /* class checker_event : public diagnostic_event.  */
- 
- /* Dump this event to PP (for debugging/logging purposes).  */
- 
- void
- checker_event::dump (pretty_printer *pp) const
- {
-   label_text event_desc (get_desc (false));
-   pp_printf (pp, "\"%s\" (depth %i, m_loc=%x)",
- 	     event_desc.m_buffer,
- 	     get_stack_depth (),
- 	     get_location ());
-   event_desc.maybe_free ();
- }
- 
- /* Hook for being notified when this event has its final id EMISSION_ID
-    and is about to emitted for PD.
- 
-    Base implementation of checker_event::prepare_for_emission vfunc;
-    subclasses that override this should chain up to it.
- 
-    Record PD and EMISSION_ID, and call the get_desc vfunc, so that any
-    side-effects of the call to get_desc take place before
-    pending_diagnostic::emit is called.
- 
-    For example, state_change_event::get_desc can call
-    pending_diagnostic::describe_state_change; free_of_non_heap can use this
-    to tweak the message (TODO: would be neater to simply capture the
-    pertinent data within the sm-state).  */
- 
- void
- checker_event::prepare_for_emission (checker_path *,
- 				     pending_diagnostic *pd,
- 				     diagnostic_event_id_t emission_id)
- {
-   m_pending_diagnostic = pd;
-   m_emission_id = emission_id;
- 
-   label_text desc = get_desc (false);
-   desc.maybe_free ();
- }
- 
- /* class debug_event : public checker_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    debug_event.
-    Use the saved string as the event's description.  */
- 
- label_text
- debug_event::get_desc (bool) const
- {
-   return label_text::borrow (m_desc);
- }
- 
- /* class precanned_custom_event : public custom_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    precanned_custom_event.
-    Use the saved string as the event's description.  */
- 
- label_text
- precanned_custom_event::get_desc (bool) const
- {
-   return label_text::borrow (m_desc);
- }
- 
- /* class statement_event : public checker_event.  */
- 
- /* statement_event's ctor.  */
- 
- statement_event::statement_event (const gimple *stmt, tree fndecl, int depth,
- 				  const program_state &dst_state)
- : checker_event (EK_STMT, gimple_location (stmt), fndecl, depth),
-   m_stmt (stmt),
-   m_dst_state (dst_state)
- {
- }
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    statement_event.
-    Use the statement's dump form as the event's description.  */
- 
- label_text
- statement_event::get_desc (bool) const
- {
-   pretty_printer pp;
-   pp_string (&pp, "stmt: ");
-   pp_gimple_stmt_1 (&pp, m_stmt, 0, (dump_flags_t)0);
-   return label_text::take (xstrdup (pp_formatted_text (&pp)));
- }
- 
- /* class region_creation_event : public checker_event.  */
- 
- region_creation_event::region_creation_event (const region *reg,
- 					      location_t loc,
- 					      tree fndecl,
- 					      int depth)
- : checker_event (EK_REGION_CREATION, loc, fndecl, depth),
-   m_reg (reg)
- {
- }
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    region_creation_event.  */
- 
- label_text
- region_creation_event::get_desc (bool) const
- {
-   switch (m_reg->get_memory_space ())
-     {
-     default:
-       return label_text::borrow ("region created here");
-     case MEMSPACE_STACK:
-       return label_text::borrow ("region created on stack here");
-     case MEMSPACE_HEAP:
-       return label_text::borrow ("region created on heap here");
-     }
- }
- 
- /* class function_entry_event : public checker_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    function_entry_event.
- 
-    Use a string such as "entry to 'foo'" as the event's description.  */
- 
- label_text
- function_entry_event::get_desc (bool can_colorize) const
- {
-   return make_label_text (can_colorize, "entry to %qE", m_fndecl);
- }
- 
- /* class state_change_event : public checker_event.  */
- 
- /* state_change_event's ctor.  */
- 
- state_change_event::state_change_event (const supernode *node,
- 					const gimple *stmt,
- 					int stack_depth,
- 					const state_machine &sm,
- 					const svalue *sval,
- 					state_machine::state_t from,
- 					state_machine::state_t to,
- 					const svalue *origin,
- 					const program_state &dst_state)
- : checker_event (EK_STATE_CHANGE,
- 		 stmt->location, node->m_fun->decl,
- 		 stack_depth),
-   m_node (node), m_stmt (stmt), m_sm (sm),
-   m_sval (sval), m_from (from), m_to (to),
-   m_origin (origin),
-   m_dst_state (dst_state)
- {
- }
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    state_change_event.
- 
-    Attempt to generate a nicer human-readable description.
-    For greatest precision-of-wording, give the pending diagnostic
-    a chance to describe this state change (in terms of the
-    diagnostic).
-    Note that we only have a pending_diagnostic set on the event once
-    the diagnostic is about to being emitted, so the description for
-    an event can change.  */
- 
- label_text
- state_change_event::get_desc (bool can_colorize) const
- {
-   if (m_pending_diagnostic)
-     {
-       region_model *model = m_dst_state.m_region_model;
-       tree var = model->get_representative_tree (m_sval);
-       tree origin = model->get_representative_tree (m_origin);
-       label_text custom_desc
- 	= m_pending_diagnostic->describe_state_change
- 	    (evdesc::state_change (can_colorize, var, origin,
- 				   m_from, m_to, m_emission_id, *this));
-       if (custom_desc.m_buffer)
- 	{
- 	  if (flag_analyzer_verbose_state_changes)
- 	    {
- 	      /* Append debug version.  */
- 	      label_text result;
- 	      if (m_origin)
- 		result = make_label_text
- 		  (can_colorize,
- 		   "%s (state of %qE: %qs -> %qs, origin: %qE)",
- 		   custom_desc.m_buffer,
- 		   var,
- 		   m_from->get_name (),
- 		   m_to->get_name (),
- 		   origin);
- 	      else
- 		result = make_label_text
- 		  (can_colorize,
- 		   "%s (state of %qE: %qs -> %qs, NULL origin)",
- 		   custom_desc.m_buffer,
- 		   var,
- 		   m_from->get_name (),
- 		   m_to->get_name ());
- 	      custom_desc.maybe_free ();
- 	      return result;
- 	    }
- 	  else
- 	    return custom_desc;
- 	}
-     }
- 
-   /* Fallback description.  */
-   if (m_sval)
-     {
-       label_text sval_desc = m_sval->get_desc ();
-       label_text result;
-       if (m_origin)
- 	{
- 	  label_text origin_desc = m_origin->get_desc ();
- 	  result = make_label_text
- 	    (can_colorize,
- 	     "state of %qs: %qs -> %qs (origin: %qs)",
- 	     sval_desc.m_buffer,
- 	     m_from->get_name (),
- 	     m_to->get_name (),
- 	     origin_desc.m_buffer);
- 	  origin_desc.maybe_free ();
- 	}
-       else
- 	result = make_label_text
- 	  (can_colorize,
- 	   "state of %qs: %qs -> %qs (NULL origin)",
- 	   sval_desc.m_buffer,
- 	   m_from->get_name (),
- 	   m_to->get_name ());
-       sval_desc.maybe_free ();
-       return result;
-     }
-   else
-     {
-       gcc_assert (m_origin == NULL);
-       return make_label_text
- 	(can_colorize,
- 	 "global state: %qs -> %qs",
- 	 m_from->get_name (),
- 	 m_to->get_name ());
-     }
- }
- 
- /* class superedge_event : public checker_event.  */
- 
- /* Get the callgraph_superedge for this superedge_event, which must be
-    for an interprocedural edge, rather than a CFG edge.  */
- 
- const callgraph_superedge&
- superedge_event::get_callgraph_superedge () const
- {
-   gcc_assert (m_sedge->m_kind != SUPEREDGE_CFG_EDGE);
-   return *m_sedge->dyn_cast_callgraph_superedge ();
- }
- 
- /* Determine if this event should be filtered at the given verbosity
-    level.  */
- 
- bool
- superedge_event::should_filter_p (int verbosity) const
- {
-   switch (m_sedge->m_kind)
-     {
-     case SUPEREDGE_CFG_EDGE:
-       {
- 	if (verbosity < 2)
- 	  return true;
- 
- 	if (verbosity < 4)
- 	  {
- 	    /* Filter events with empty descriptions.  This ought to filter
- 	       FALLTHRU, but retain true/false/switch edges.  */
- 	    label_text desc = get_desc (false);
- 	    gcc_assert (desc.m_buffer);
- 	    if (desc.m_buffer[0] == '\0')
- 	      return true;
- 	    desc.maybe_free ();
- 	  }
-       }
-       break;
- 
-     default:
-       break;
-     }
-   return false;
- }
- 
- /* superedge_event's ctor.  */
- 
- superedge_event::superedge_event (enum event_kind kind,
- 				  const exploded_edge &eedge,
- 				  location_t loc, tree fndecl, int depth)
- : checker_event (kind, loc, fndecl, depth),
-   m_eedge (eedge), m_sedge (eedge.m_sedge),
-   m_var (NULL_TREE), m_critical_state (0)
- {
- }
- 
- /* class cfg_edge_event : public superedge_event.  */
- 
- /* Get the cfg_superedge for this cfg_edge_event.  */
- 
- const cfg_superedge &
- cfg_edge_event::get_cfg_superedge () const
- {
-   return *m_sedge->dyn_cast_cfg_superedge ();
- }
- 
- /* cfg_edge_event's ctor.  */
- 
- cfg_edge_event::cfg_edge_event (enum event_kind kind,
- 				const exploded_edge &eedge,
- 				location_t loc, tree fndecl, int depth)
- : superedge_event (kind, eedge, loc, fndecl, depth)
- {
-   gcc_assert (eedge.m_sedge->m_kind == SUPEREDGE_CFG_EDGE);
- }
- 
- /* class start_cfg_edge_event : public cfg_edge_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    start_cfg_edge_event.
- 
-    If -fanalyzer-verbose-edges, then generate low-level descriptions, such
-    as
-      "taking 'true' edge SN:7 -> SN:8".
- 
-    Otherwise, generate strings using the label of the underlying CFG if
-    any, such as:
-      "following 'true' branch..." or
-      "following 'case 3' branch..."
-      "following 'default' branch..."
- 
-    For conditionals, attempt to supply a description of the condition that
-    holds, such as:
-      "following 'false' branch (when 'ptr' is non-NULL)..."
- 
-    Failing that, return an empty description (which will lead to this event
-    being filtered).  */
- 
- label_text
- start_cfg_edge_event::get_desc (bool can_colorize) const
- {
-   bool user_facing = !flag_analyzer_verbose_edges;
-   char *edge_desc = m_sedge->get_description (user_facing);
-   if (user_facing)
-     {
-       if (edge_desc && strlen (edge_desc) > 0)
- 	{
- 	  label_text cond_desc = maybe_describe_condition (can_colorize);
- 	  label_text result;
- 	  if (cond_desc.m_buffer)
- 	    {
- 	      result = make_label_text (can_colorize,
- 					"following %qs branch (%s)...",
- 					edge_desc, cond_desc.m_buffer);
- 	      cond_desc.maybe_free ();
- 	    }
- 	  else
- 	    {
- 	      result = make_label_text (can_colorize,
- 					"following %qs branch...",
- 					edge_desc);
- 	    }
- 	  free (edge_desc);
- 	  return result;
- 	}
-       else
- 	{
- 	  free (edge_desc);
- 	  return label_text::borrow ("");
- 	}
-     }
-   else
-     {
-       if (strlen (edge_desc) > 0)
- 	{
- 	  label_text result
- 	    = make_label_text (can_colorize,
- 			       "taking %qs edge SN:%i -> SN:%i",
- 			       edge_desc,
- 			       m_sedge->m_src->m_index,
- 			       m_sedge->m_dest->m_index);
- 	  free (edge_desc);
- 	  return result;
- 	}
-       else
- 	{
- 	  free (edge_desc);
- 	  return make_label_text (can_colorize,
- 				  "taking edge SN:%i -> SN:%i",
- 				  m_sedge->m_src->m_index,
- 				  m_sedge->m_dest->m_index);
- 	}
-     }
- }
- 
- /* Attempt to generate a description of any condition that holds at this edge.
- 
-    The intent is to make the user-facing messages more clear, especially for
-    cases where there's a single or double-negative, such as
-    when describing the false branch of an inverted condition.
- 
-    For example, rather than printing just:
- 
-       |  if (!ptr)
-       |     ~
-       |     |
-       |     (1) following 'false' branch...
- 
-    it's clearer to spell out the condition that holds:
- 
-       |  if (!ptr)
-       |     ~
-       |     |
-       |     (1) following 'false' branch (when 'ptr' is non-NULL)...
-                                           ^^^^^^^^^^^^^^^^^^^^^^
- 
-    In the above example, this function would generate the highlighted
-    string: "when 'ptr' is non-NULL".
- 
-    If the edge is not a condition, or it's not clear that a description of
-    the condition would be helpful to the user, return NULL.  */
- 
- label_text
- start_cfg_edge_event::maybe_describe_condition (bool can_colorize) const
- {
-   const cfg_superedge& cfg_sedge = get_cfg_superedge ();
- 
-   if (cfg_sedge.true_value_p () || cfg_sedge.false_value_p ())
-     {
-       const gimple *last_stmt = m_sedge->m_src->get_last_stmt ();
-       if (const gcond *cond_stmt = dyn_cast <const gcond *> (last_stmt))
- 	{
- 	  enum tree_code op = gimple_cond_code (cond_stmt);
- 	  tree lhs = gimple_cond_lhs (cond_stmt);
- 	  tree rhs = gimple_cond_rhs (cond_stmt);
- 	  if (cfg_sedge.false_value_p ())
- 	    op = invert_tree_comparison (op, false /* honor_nans */);
- 	  return maybe_describe_condition (can_colorize,
- 					   lhs, op, rhs);
- 	}
-     }
-   return label_text::borrow (NULL);
- }
- 
- /* Subroutine of maybe_describe_condition above.
- 
-    Attempt to generate a user-facing description of the condition
-    LHS OP RHS, but only if it is likely to make it easier for the
-    user to understand a condition.  */
- 
- label_text
- start_cfg_edge_event::maybe_describe_condition (bool can_colorize,
- 						tree lhs,
- 						enum tree_code op,
- 						tree rhs)
- {
-   /* In theory we could just build a tree via
-        fold_build2 (op, boolean_type_node, lhs, rhs)
-      and print it with %qE on it, but this leads to warts such as
-      parenthesizing vars, such as '(i) <= 9', and uses of '<unknown>'.  */
- 
-   /* Special-case: describe testing the result of strcmp, as figuring
-      out what the "true" or "false" path is can be confusing to the user.  */
-   if (TREE_CODE (lhs) == SSA_NAME
-       && zerop (rhs))
-     {
-       if (gcall *call = dyn_cast <gcall *> (SSA_NAME_DEF_STMT (lhs)))
- 	if (is_special_named_call_p (call, "strcmp", 2))
- 	  {
- 	    if (op == EQ_EXPR)
- 	      return label_text::borrow ("when the strings are equal");
- 	    if (op == NE_EXPR)
- 	      return label_text::borrow ("when the strings are non-equal");
- 	  }
-     }
- 
-   /* Only attempt to generate text for sufficiently simple expressions.  */
-   if (!should_print_expr_p (lhs))
-     return label_text::borrow (NULL);
-   if (!should_print_expr_p (rhs))
-     return label_text::borrow (NULL);
- 
-   /* Special cases for pointer comparisons against NULL.  */
-   if (POINTER_TYPE_P (TREE_TYPE (lhs))
-       && POINTER_TYPE_P (TREE_TYPE (rhs))
-       && zerop (rhs))
-     {
-       if (op == EQ_EXPR)
- 	return make_label_text (can_colorize, "when %qE is NULL",
- 				lhs);
-       if (op == NE_EXPR)
- 	return make_label_text (can_colorize, "when %qE is non-NULL",
- 				lhs);
-     }
- 
-   return make_label_text (can_colorize, "when %<%E %s %E%>",
- 			  lhs, op_symbol_code (op), rhs);
- }
- 
- /* Subroutine of maybe_describe_condition.
- 
-    Return true if EXPR is we will get suitable user-facing output
-    from %E on it.  */
- 
- bool
- start_cfg_edge_event::should_print_expr_p (tree expr)
- {
-   if (TREE_CODE (expr) == SSA_NAME)
-     {
-       if (SSA_NAME_VAR (expr))
- 	return should_print_expr_p (SSA_NAME_VAR (expr));
-       else
- 	return false;
-     }
- 
-   if (DECL_P (expr))
-     return true;
- 
-   if (CONSTANT_CLASS_P (expr))
-     return true;
- 
-   return false;
- }
- 
- /* class call_event : public superedge_event.  */
- 
- /* call_event's ctor.  */
- 
- call_event::call_event (const exploded_edge &eedge,
- 			location_t loc, tree fndecl, int depth)
- : superedge_event (EK_CALL_EDGE, eedge, loc, fndecl, depth)
- {
-   if (eedge.m_sedge)
-     gcc_assert (eedge.m_sedge->m_kind == SUPEREDGE_CALL);
- 
-    m_src_snode = eedge.m_src->get_supernode ();
-    m_dest_snode = eedge.m_dest->get_supernode ();
- }
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    call_event.
- 
-    If this call event passes critical state for an sm-based warning,
-    allow the diagnostic to generate a precise description, such as:
- 
-      "passing freed pointer 'ptr' in call to 'foo' from 'bar'"
- 
-    Otherwise, generate a description of the form
-    "calling 'foo' from 'bar'".  */
- 
- label_text
- call_event::get_desc (bool can_colorize) const
- {
-   if (m_critical_state && m_pending_diagnostic)
-     {
-       gcc_assert (m_var);
-       tree var = fixup_tree_for_diagnostic (m_var);
-       label_text custom_desc
- 	= m_pending_diagnostic->describe_call_with_state
- 	    (evdesc::call_with_state (can_colorize,
- 				      m_src_snode->m_fun->decl,
- 				      m_dest_snode->m_fun->decl,
- 				      var,
- 				      m_critical_state));
-       if (custom_desc.m_buffer)
- 	return custom_desc;
-     }
- 
-   return make_label_text (can_colorize,
- 			  "calling %qE from %qE",
- 			  m_dest_snode->m_fun->decl,
- 			  m_src_snode->m_fun->decl);
- }
- 
- /* Override of checker_event::is_call_p for calls.  */
- 
- bool
- call_event::is_call_p () const
- {
-   return true;
- }
- 
- /* class return_event : public superedge_event.  */
- 
- /* return_event's ctor.  */
- 
- return_event::return_event (const exploded_edge &eedge,
- 			    location_t loc, tree fndecl, int depth)
- : superedge_event (EK_RETURN_EDGE, eedge, loc, fndecl, depth)
- {
-   if (eedge.m_sedge)
-     gcc_assert (eedge.m_sedge->m_kind == SUPEREDGE_RETURN);
- 
-   m_src_snode = eedge.m_src->get_supernode ();
-   m_dest_snode = eedge.m_dest->get_supernode ();
- }
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    return_event.
- 
-    If this return event returns critical state for an sm-based warning,
-    allow the diagnostic to generate a precise description, such as:
- 
-       "possible of NULL to 'foo' from 'bar'"
- 
-    Otherwise, generate a description of the form
-    "returning to 'foo' from 'bar'.  */
- 
- label_text
- return_event::get_desc (bool can_colorize) const
- {
-   /*  For greatest precision-of-wording, if this is returning the
-       state involved in the pending diagnostic, give the pending
-       diagnostic a chance to describe this return (in terms of
-       itself).  */
-   if (m_critical_state && m_pending_diagnostic)
-     {
-       label_text custom_desc
- 	= m_pending_diagnostic->describe_return_of_state
- 	    (evdesc::return_of_state (can_colorize,
- 				      m_dest_snode->m_fun->decl,
- 				      m_src_snode->m_fun->decl,
- 				      m_critical_state));
-       if (custom_desc.m_buffer)
- 	return custom_desc;
-     }
-   return make_label_text (can_colorize,
- 			  "returning to %qE from %qE",
- 			  m_dest_snode->m_fun->decl,
- 			  m_src_snode->m_fun->decl);
- }
- 
- /* Override of checker_event::is_return_p for returns.  */
- 
- bool
- return_event::is_return_p () const
- {
-   return true;
- }
- 
- /* class start_consolidated_cfg_edges_event : public checker_event.  */
- 
- label_text
- start_consolidated_cfg_edges_event::get_desc (bool can_colorize) const
- {
-   return make_label_text (can_colorize,
- 			  "following %qs branch...",
- 			  m_edge_sense ? "true" : "false");
- }
- 
- /* class setjmp_event : public checker_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    setjmp_event.  */
- 
- label_text
- setjmp_event::get_desc (bool can_colorize) const
- {
-   return make_label_text (can_colorize,
- 			  "%qs called here",
- 			  get_user_facing_name (m_setjmp_call));
- }
- 
- /* Implementation of checker_event::prepare_for_emission vfunc for setjmp_event.
- 
-    Record this setjmp's event ID into the path, so that rewind events can
-    use it.  */
- 
- void
- setjmp_event::prepare_for_emission (checker_path *path,
- 				    pending_diagnostic *pd,
- 				    diagnostic_event_id_t emission_id)
- {
-   checker_event::prepare_for_emission (path, pd, emission_id);
-   path->record_setjmp_event (m_enode, emission_id);
- }
- 
- /* class rewind_event : public checker_event.  */
- 
- /* Get the fndecl containing the site of the longjmp call.  */
- 
- tree
- rewind_event::get_longjmp_caller () const
- {
-   return m_eedge->m_src->get_function ()->decl;
- }
- 
- /* Get the fndecl containing the site of the setjmp call.  */
- 
- tree
- rewind_event::get_setjmp_caller () const
- {
-   return m_eedge->m_dest->get_function ()->decl;
- }
- 
- /* rewind_event's ctor.  */
- 
- rewind_event::rewind_event (const exploded_edge *eedge,
- 			    enum event_kind kind,
- 			    location_t loc, tree fndecl, int depth,
- 			    const rewind_info_t *rewind_info)
- : checker_event (kind, loc, fndecl, depth),
-   m_rewind_info (rewind_info),
-   m_eedge (eedge)
- {
-   gcc_assert (m_eedge->m_custom_info == m_rewind_info);
- }
- 
- /* class rewind_from_longjmp_event : public rewind_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    rewind_from_longjmp_event.  */
- 
- label_text
- rewind_from_longjmp_event::get_desc (bool can_colorize) const
- {
-   const char *src_name
-     = get_user_facing_name (m_rewind_info->get_longjmp_call ());
- 
-   if (get_longjmp_caller () == get_setjmp_caller ())
-     /* Special-case: purely intraprocedural rewind.  */
-     return make_label_text (can_colorize,
- 			    "rewinding within %qE from %qs...",
- 			    get_longjmp_caller (),
- 			    src_name);
-   else
-     return make_label_text (can_colorize,
- 			    "rewinding from %qs in %qE...",
- 			    src_name,
- 			    get_longjmp_caller ());
- }
- 
- /* class rewind_to_setjmp_event : public rewind_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    rewind_to_setjmp_event.  */
- 
- label_text
- rewind_to_setjmp_event::get_desc (bool can_colorize) const
- {
-   const char *dst_name
-     = get_user_facing_name (m_rewind_info->get_setjmp_call ());
- 
-   /* If we can, identify the ID of the setjmp_event.  */
-   if (m_original_setjmp_event_id.known_p ())
-     {
-       if (get_longjmp_caller () == get_setjmp_caller ())
- 	/* Special-case: purely intraprocedural rewind.  */
- 	return make_label_text (can_colorize,
- 				"...to %qs (saved at %@)",
- 				dst_name,
- 				&m_original_setjmp_event_id);
-       else
- 	return make_label_text (can_colorize,
- 				"...to %qs in %qE (saved at %@)",
- 				dst_name,
- 				get_setjmp_caller (),
- 				&m_original_setjmp_event_id);
-     }
-   else
-     {
-       if (get_longjmp_caller () == get_setjmp_caller ())
- 	/* Special-case: purely intraprocedural rewind.  */
- 	return make_label_text (can_colorize,
- 				"...to %qs",
- 				dst_name,
- 				get_setjmp_caller ());
-       else
- 	return make_label_text (can_colorize,
- 				"...to %qs in %qE",
- 				dst_name,
- 				get_setjmp_caller ());
-     }
- }
- 
- /* Implementation of checker_event::prepare_for_emission vfunc for
-    rewind_to_setjmp_event.
- 
-    Attempt to look up the setjmp event ID that recorded the jmp_buf
-    for this rewind.  */
- 
- void
- rewind_to_setjmp_event::prepare_for_emission (checker_path *path,
- 					      pending_diagnostic *pd,
- 					      diagnostic_event_id_t emission_id)
- {
-   checker_event::prepare_for_emission (path, pd, emission_id);
-   path->get_setjmp_event (m_rewind_info->get_enode_origin (),
- 			  &m_original_setjmp_event_id);
- }
- 
- /* class warning_event : public checker_event.  */
- 
- /* Implementation of diagnostic_event::get_desc vfunc for
-    warning_event.
- 
-    If the pending diagnostic implements describe_final_event, use it,
-    generating a precise description e.g.
-      "second 'free' here; first 'free' was at (7)"
- 
-    Otherwise generate a generic description.  */
- 
- label_text
- warning_event::get_desc (bool can_colorize) const
- {
-   if (m_pending_diagnostic)
-     {
-       tree var = fixup_tree_for_diagnostic (m_var);
-       label_text ev_desc
- 	= m_pending_diagnostic->describe_final_event
- 	    (evdesc::final_event (can_colorize, var, m_state));
-       if (ev_desc.m_buffer)
- 	{
- 	  if (m_sm && flag_analyzer_verbose_state_changes)
- 	    {
- 	      label_text result;
- 	      if (var)
- 		result = make_label_text (can_colorize,
- 					  "%s (%qE is in state %qs)",
- 					  ev_desc.m_buffer,
- 					  var, m_state->get_name ());
- 	      else
- 		result = make_label_text (can_colorize,
- 					  "%s (in global state %qs)",
- 					  ev_desc.m_buffer,
- 					  m_state->get_name ());
- 	      ev_desc.maybe_free ();
- 	      return result;
- 	    }
- 	  else
- 	    return ev_desc;
- 	}
-     }
- 
-   if (m_sm)
-     {
-       if (m_var)
- 	return make_label_text (can_colorize,
- 				"here (%qE is in state %qs)",
- 				m_var, m_state->get_name ());
-       else
- 	return make_label_text (can_colorize,
- 				"here (in global state %qs)",
- 				m_state->get_name ());
-     }
-   else
-     return label_text::borrow ("here");
- }
- 
  /* Print a single-line representation of this path to PP.  */
  
  void
--- 56,67 ----
  #include "analyzer/diagnostic-manager.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/exploded-graph.h"
+ #include "make-unique.h"
  
  #if ENABLE_ANALYZER
  
  namespace ana {
  
  /* Print a single-line representation of this path to PP.  */
  
  void
*************** checker_path::dump (pretty_printer *pp)
*** 979,986 ****
        if (i > 0)
  	pp_string (pp, ", ");
        label_text event_desc (e->get_desc (false));
!       pp_printf (pp, "\"%s\"", event_desc.m_buffer);
!       event_desc.maybe_free ();
      }
    pp_character (pp, ']');
  }
--- 76,82 ----
        if (i > 0)
  	pp_string (pp, ", ");
        label_text event_desc (e->get_desc (false));
!       pp_printf (pp, "\"%s\"", event_desc.get ());
      }
    pp_character (pp, ']');
  }
*************** checker_path::maybe_log (logger *logger,
*** 1006,1011 ****
--- 102,122 ----
      }
  }
  
+ void
+ checker_path::add_event (std::unique_ptr<checker_event> event)
+ {
+   if (m_logger)
+     {
+       m_logger->start_log_line ();
+       m_logger->log_partial ("added event[%i]: %s ",
+ 			     m_events.length (),
+ 			     event_kind_to_string (event.get ()->m_kind));
+       event.get ()->dump (m_logger->get_printer ());
+       m_logger->end_log_line ();
+     }
+   m_events.safe_push (event.release ());
+ }
+ 
  /* Print a multiline form of this path to STDERR.  */
  
  DEBUG_FUNCTION void
*************** checker_path::debug () const
*** 1020,1061 ****
  	       "[%i]: %s \"%s\"\n",
  	       i,
  	       event_kind_to_string (m_events[i]->m_kind),
! 	       event_desc.m_buffer);
!       event_desc.maybe_free ();
      }
  }
  
! /* Add region_creation_event instance to this path for REG,
!    describing whether REG is on the stack or heap.  */
  
  void
! checker_path::add_region_creation_event (const region *reg,
! 					 location_t loc,
! 					 tree fndecl, int depth)
  {
!   add_event (new region_creation_event (reg, loc, fndecl, depth));
! }
  
! /* Add a warning_event to the end of this path.  */
  
! void
! checker_path::add_final_event (const state_machine *sm,
! 			       const exploded_node *enode, const gimple *stmt,
! 			       tree var, state_machine::state_t state)
! {
!   checker_event *end_of_path
!     = new warning_event (get_stmt_location (stmt, enode->get_function ()),
! 			 enode->get_function ()->decl,
! 			 enode->get_stack_depth (),
! 			 sm, var, state);
!   add_event (end_of_path);
  }
  
  void
  checker_path::fixup_locations (pending_diagnostic *pd)
  {
    for (checker_event *e : m_events)
!     e->set_location (pd->fixup_location (e->get_location ()));
  }
  
  /* Return true if there is a (start_cfg_edge_event, end_cfg_edge_event) pair
--- 131,169 ----
  	       "[%i]: %s \"%s\"\n",
  	       i,
  	       event_kind_to_string (m_events[i]->m_kind),
! 	       event_desc.get ());
      }
  }
  
! /* Add region_creation_event instances to this path for REG,
!    describing whether REG is on the stack or heap and what
!    its capacity is (if known).
!    If DEBUG is true, also create an RCE_DEBUG event.  */
  
  void
! checker_path::add_region_creation_events (pending_diagnostic *pd,
! 					  const region *reg,
! 					  const region_model *model,
! 					  const event_loc_info &loc_info,
! 					  bool debug)
  {
!   tree capacity = NULL_TREE;
!   if (model)
!     if (const svalue *capacity_sval = model->get_capacity (reg))
!       capacity = model->get_representative_tree (capacity_sval);
  
!   pd->add_region_creation_events (reg, capacity, loc_info, *this);
  
!   if (debug)
!     add_event (make_unique<region_creation_event_debug> (reg, capacity,
! 							 loc_info));
  }
  
  void
  checker_path::fixup_locations (pending_diagnostic *pd)
  {
    for (checker_event *e : m_events)
!     e->set_location (pd->fixup_location (e->get_location (), false));
  }
  
  /* Return true if there is a (start_cfg_edge_event, end_cfg_edge_event) pair
*************** checker_path::cfg_edge_pair_at_p (unsign
*** 1070,1075 ****
--- 178,342 ----
  	  && m_events[idx + 1]->m_kind == EK_END_CFG_EDGE);
  }
  
+ /* Consider a call from "outer" to "middle" which calls "inner",
+    where "inner" and "middle" have been inlined into "outer".
+ 
+    We expect the stmt locations for the inlined stmts to have a
+    chain like:
+ 
+      [{fndecl: inner},
+       {fndecl: middle, callsite: within middle to inner},
+       {fndecl: outer, callsite: without outer to middle}]
+ 
+    The location for the stmt will already be fixed up to reflect
+    the two extra frames, so that we have e.g. this as input
+    (for gcc.dg/analyzer/inlining-4.c):
+ 
+     before[0]:
+       EK_FUNCTION_ENTRY "entry to ‘outer’"
+       (depth 1, fndecl ‘outer’, m_loc=511c4)
+     before[1]:
+       EK_START_CFG_EDGE "following ‘true’ branch (when ‘flag != 0’)..."
+       (depth 3 corrected from 1,
+        fndecl ‘inner’ corrected from ‘outer’, m_loc=8000000f)
+     before[2]:
+       EK_END_CFG_EDGE "...to here"
+       (depth 1, fndecl ‘outer’, m_loc=0)
+     before[3]:
+       EK_WARNING "here (‘<unknown>’ is in state ‘null’)"
+       (depth 1, fndecl ‘outer’, m_loc=80000004)
+ 
+    We want to add inlined_call_events showing the calls, so that
+    the above becomes:
+ 
+     after[0]:
+       EK_FUNCTION_ENTRY "entry to ‘outer’"
+       (depth 1, fndecl ‘outer’, m_loc=511c4)
+     after[1]:
+       EK_INLINED_CALL "inlined call to ‘middle’ from ‘outer’"
+       (depth 1, fndecl ‘outer’, m_loc=53300)
+     after[2]:
+       EK_INLINED_CALL "inlined call to ‘inner’ from ‘middle’"
+       (depth 2, fndecl ‘middle’, m_loc=4d2e0)
+     after[3]:
+       EK_START_CFG_EDGE "following ‘true’ branch (when ‘flag != 0’)..."
+       (depth 3 corrected from 1,
+        fndecl ‘inner’ corrected from ‘outer’, m_loc=8000000f)
+     after[4]: EK_END_CFG_EDGE "...to here"
+       (depth 1, fndecl ‘outer’, m_loc=0)
+     after[5]: EK_WARNING "here (‘<unknown>’ is in state ‘null’)"
+       (depth 1, fndecl ‘outer’, m_loc=80000004)
+ 
+     where we've added events between before[0] and before[1] to show
+     the inlined calls leading to the effective stack depths, making
+     the generated path much easier for a user to read.
+ 
+     Note how in the above we have a branch (before[1] to before[2])
+     where the locations were originally in different functions.
+     Hence we have to add these events quite late when generating
+     checker_path.  */
+ 
+ void
+ checker_path::inject_any_inlined_call_events (logger *logger)
+ {
+   LOG_SCOPE (logger);
+ 
+   if (!flag_analyzer_undo_inlining)
+     return;
+ 
+   /* Build a copy of m_events with the new events inserted.  */
+   auto_vec<checker_event *> updated_events;
+ 
+   maybe_log (logger, "before");
+ 
+   hash_set<tree> blocks_in_prev_event;
+ 
+   for (unsigned ev_idx = 0; ev_idx < m_events.length (); ev_idx++)
+     {
+       checker_event *curr_event = m_events[ev_idx];
+       location_t curr_loc = curr_event->get_location ();
+       hash_set<tree> blocks_in_curr_event;
+ 
+       if (logger)
+ 	{
+ 	  logger->start_log_line ();
+ 	  logger->log_partial ("event[%i]: %s ", ev_idx,
+ 			       event_kind_to_string (curr_event->m_kind));
+ 	  curr_event->dump (logger->get_printer ());
+ 	  logger->end_log_line ();
+ 	  for (inlining_iterator iter (curr_event->get_location ());
+ 	       !iter.done_p (); iter.next ())
+ 	    {
+ 	      logger->start_log_line ();
+ 	      logger->log_partial ("  %qE", iter.get_block ());
+ 	      if (!flag_dump_noaddr)
+ 		logger->log_partial (" (%p)", iter.get_block ());
+ 	      logger->log_partial (", fndecl: %qE, callsite: 0x%x",
+ 				   iter.get_fndecl (), iter.get_callsite ());
+ 	      if (iter.get_callsite ())
+ 		dump_location (logger->get_printer (), iter.get_callsite ());
+ 	      logger->end_log_line ();
+ 	    }
+ 	}
+ 
+       /* We want to add events to show inlined calls.
+ 
+ 	 We want to show changes relative to the previous event, omitting
+ 	 the commonality between the inlining chain.
+ 
+ 	 The chain is ordered from innermost frame to outermost frame;
+ 	 we want to walk it backwards to show the calls, so capture it
+ 	 in a vec.  */
+       struct chain_element { tree m_block; tree m_fndecl; };
+       auto_vec<chain_element> elements;
+       for (inlining_iterator iter (curr_loc); !iter.done_p (); iter.next ())
+ 	{
+ 	  chain_element ce;
+ 	  ce.m_block = iter.get_block ();
+ 	  ce.m_fndecl = iter.get_fndecl ();
+ 
+ 	  if (!blocks_in_prev_event.contains (ce.m_block))
+ 	    elements.safe_push (ce);
+ 	  blocks_in_curr_event.add (ce.m_block);
+ 	}
+ 
+       /* Walk from outermost to innermost.  */
+       if (elements.length () > 0)
+ 	{
+ 	  int orig_stack_depth = curr_event->get_original_stack_depth ();
+ 	  for (unsigned element_idx = elements.length () - 1; element_idx > 0;
+ 	       element_idx--)
+ 	    {
+ 	      const chain_element &ce = elements[element_idx];
+ 	      int stack_depth_adjustment
+ 		= (blocks_in_curr_event.elements () - element_idx) - 1;
+ 	      if (location_t callsite = BLOCK_SOURCE_LOCATION (ce.m_block))
+ 		updated_events.safe_push
+ 		  (new inlined_call_event (callsite,
+ 					   elements[element_idx - 1].m_fndecl,
+ 					   ce.m_fndecl,
+ 					   orig_stack_depth,
+ 					   stack_depth_adjustment));
+ 	    }
+ 	}
+ 
+       /* Ideally we'd use assignment here:
+ 	   blocks_in_prev_event = blocks_in_curr_event; */
+       blocks_in_prev_event.empty ();
+       for (auto iter : blocks_in_curr_event)
+ 	blocks_in_prev_event.add (iter);
+ 
+       /* Add the existing event.  */
+       updated_events.safe_push (curr_event);
+     }
+ 
+   /* Replace m_events with updated_events.  */
+   m_events.truncate (0);
+   m_events.safe_splice (updated_events);
+ 
+   maybe_log (logger, " after");
+ }
+ 
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/checker-path.h gcc-13.1.0/gcc/analyzer/checker-path.h
*** gcc-12.2.0/gcc/analyzer/checker-path.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/checker-path.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
! /* Subclasses of diagnostic_path and diagnostic_event for analyzer diagnostics.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
! /* Subclass of diagnostic_path for analyzer diagnostics.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,544 ****
  #ifndef GCC_ANALYZER_CHECKER_PATH_H
  #define GCC_ANALYZER_CHECKER_PATH_H
  
! namespace ana {
! 
! /* An enum for discriminating between the concrete subclasses of
!    checker_event.  */
! 
! enum event_kind
! {
!   EK_DEBUG,
!   EK_CUSTOM,
!   EK_STMT,
!   EK_REGION_CREATION,
!   EK_FUNCTION_ENTRY,
!   EK_STATE_CHANGE,
!   EK_START_CFG_EDGE,
!   EK_END_CFG_EDGE,
!   EK_CALL_EDGE,
!   EK_RETURN_EDGE,
!   EK_START_CONSOLIDATED_CFG_EDGES,
!   EK_END_CONSOLIDATED_CFG_EDGES,
!   EK_SETJMP,
!   EK_REWIND_FROM_LONGJMP,
!   EK_REWIND_TO_SETJMP,
!   EK_WARNING
! };
! 
! extern const char *event_kind_to_string (enum event_kind ek);
! 
! /* Event subclasses.
! 
!    The class hierarchy looks like this (using indentation to show
!    inheritance, and with event_kinds shown for the concrete subclasses):
! 
!    diagnostic_event
!      checker_event
!        debug_event (EK_DEBUG)
!        custom_event (EK_CUSTOM)
! 	 precanned_custom_event
!        statement_event (EK_STMT)
!        region_creation_event (EK_REGION_CREATION)
!        function_entry_event (EK_FUNCTION_ENTRY)
!        state_change_event (EK_STATE_CHANGE)
!        superedge_event
!          cfg_edge_event
! 	   start_cfg_edge_event (EK_START_CFG_EDGE)
! 	   end_cfg_edge_event (EK_END_CFG_EDGE)
!          call_event (EK_CALL_EDGE)
!          return_edge (EK_RETURN_EDGE)
!        start_consolidated_cfg_edges_event (EK_START_CONSOLIDATED_CFG_EDGES)
!        end_consolidated_cfg_edges_event (EK_END_CONSOLIDATED_CFG_EDGES)
!        setjmp_event (EK_SETJMP)
!        rewind_event
!          rewind_from_longjmp_event (EK_REWIND_FROM_LONGJMP)
! 	 rewind_to_setjmp_event (EK_REWIND_TO_SETJMP)
!        warning_event (EK_WARNING).  */
! 
! /* Abstract subclass of diagnostic_event; the base class for use in
!    checker_path (the analyzer's diagnostic_path subclass).  */
! 
! class checker_event : public diagnostic_event
! {
! public:
!   checker_event (enum event_kind kind,
! 		 location_t loc, tree fndecl, int depth)
!     : m_kind (kind), m_loc (loc), m_fndecl (fndecl), m_depth (depth),
!       m_pending_diagnostic (NULL), m_emission_id ()
!   {
!   }
! 
!   /* Implementation of diagnostic_event.  */
! 
!   location_t get_location () const FINAL OVERRIDE { return m_loc; }
!   tree get_fndecl () const FINAL OVERRIDE { return m_fndecl; }
!   int get_stack_depth () const FINAL OVERRIDE { return m_depth; }
! 
!   /* Additional functionality.  */
! 
!   virtual void prepare_for_emission (checker_path *,
! 				     pending_diagnostic *pd,
! 				     diagnostic_event_id_t emission_id);
!   virtual bool is_call_p () const { return false; }
!   virtual bool is_function_entry_p () const  { return false; }
!   virtual bool is_return_p () const  { return false; }
! 
!   /* For use with %@.  */
!   const diagnostic_event_id_t *get_id_ptr () const
!   {
!     return &m_emission_id;
!   }
! 
!   void dump (pretty_printer *pp) const;
! 
!   void set_location (location_t loc) { m_loc = loc; }
! 
!  public:
!   const enum event_kind m_kind;
!  protected:
!   location_t m_loc;
!   tree m_fndecl;
!   int m_depth;
!   pending_diagnostic *m_pending_diagnostic;
!   diagnostic_event_id_t m_emission_id; // only set once all pruning has occurred
! };
! 
! /* A concrete event subclass for a purely textual event, for use in
!    debugging path creation and filtering.  */
! 
! class debug_event : public checker_event
! {
! public:
!   debug_event (location_t loc, tree fndecl, int depth,
! 	      const char *desc)
!   : checker_event (EK_DEBUG, loc, fndecl, depth),
!     m_desc (xstrdup (desc))
!   {
!   }
!   ~debug_event ()
!   {
!     free (m_desc);
!   }
! 
!   label_text get_desc (bool) const FINAL OVERRIDE;
! 
! private:
!   char *m_desc;
! };
! 
! /* An abstract event subclass for custom events.  These are not filtered,
!    as they are likely to be pertinent to the diagnostic.  */
! 
! class custom_event : public checker_event
! {
! protected:
!   custom_event (location_t loc, tree fndecl, int depth)
!   : checker_event (EK_CUSTOM, loc, fndecl, depth)
!   {
!   }
! };
! 
! /* A concrete custom_event subclass with a precanned message.  */
! 
! class precanned_custom_event : public custom_event
! {
! public:
!   precanned_custom_event (location_t loc, tree fndecl, int depth,
! 			  const char *desc)
!   : custom_event (loc, fndecl, depth),
!     m_desc (xstrdup (desc))
!   {
!   }
!   ~precanned_custom_event ()
!   {
!     free (m_desc);
!   }
! 
!   label_text get_desc (bool) const FINAL OVERRIDE;
! 
! private:
!   char *m_desc;
! };
! 
! /* A concrete event subclass describing the execution of a gimple statement,
!    for use at high verbosity levels when debugging paths.  */
! 
! class statement_event : public checker_event
! {
! public:
!   statement_event (const gimple *stmt, tree fndecl, int depth,
! 		   const program_state &dst_state);
! 
!   label_text get_desc (bool) const FINAL OVERRIDE;
! 
!   const gimple * const m_stmt;
!   const program_state m_dst_state;
! };
! 
! /* A concrete event subclass describing the creation of a region that
!    is significant for a diagnostic  e.g. "region created on stack here".  */
! 
! class region_creation_event : public checker_event
! {
! public:
!   region_creation_event (const region *reg,
! 			 location_t loc, tree fndecl, int depth);
! 
!   label_text get_desc (bool) const FINAL OVERRIDE;
! 
! private:
!   const region *m_reg;
! };
! 
! /* An event subclass describing the entry to a function.  */
! 
! class function_entry_event : public checker_event
! {
! public:
!   function_entry_event (location_t loc, tree fndecl, int depth)
!   : checker_event (EK_FUNCTION_ENTRY, loc, fndecl, depth)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!   bool is_function_entry_p () const FINAL OVERRIDE { return true; }
! };
! 
! /* Subclass of checker_event describing a state change.  */
! 
! class state_change_event : public checker_event
! {
! public:
!   state_change_event (const supernode *node, const gimple *stmt,
! 		      int stack_depth,
! 		      const state_machine &sm,
! 		      const svalue *sval,
! 		      state_machine::state_t from,
! 		      state_machine::state_t to,
! 		      const svalue *origin,
! 		      const program_state &dst_state);
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!   function *get_dest_function () const
!   {
!     return m_dst_state.get_current_function ();
!   }
! 
!   const supernode *m_node;
!   const gimple *m_stmt;
!   const state_machine &m_sm;
!   const svalue *m_sval;
!   state_machine::state_t m_from;
!   state_machine::state_t m_to;
!   const svalue *m_origin;
!   program_state m_dst_state;
! };
! 
! /* Subclass of checker_event; parent class for subclasses that relate to
!    a superedge.  */
! 
! class superedge_event : public checker_event
! {
! public:
!   /* Mark this edge event as being either an interprocedural call or
!      return in which VAR is in STATE, and that this is critical to the
!      diagnostic (so that get_desc can attempt to get a better description
!      from any pending_diagnostic).  */
!   void record_critical_state (tree var, state_machine::state_t state)
!   {
!     m_var = var;
!     m_critical_state = state;
!   }
! 
!   const callgraph_superedge& get_callgraph_superedge () const;
! 
!   bool should_filter_p (int verbosity) const;
! 
!  protected:
!   superedge_event (enum event_kind kind, const exploded_edge &eedge,
! 		   location_t loc, tree fndecl, int depth);
! 
!  public:
!   const exploded_edge &m_eedge;
!   const superedge *m_sedge;
!   tree m_var;
!   state_machine::state_t m_critical_state;
! };
! 
! /* An abstract event subclass for when a CFG edge is followed; it has two
!    subclasses, representing the start of the edge and the end of the
!    edge, which come in pairs.  */
! 
! class cfg_edge_event : public superedge_event
! {
! public:
!   const cfg_superedge& get_cfg_superedge () const;
! 
!  protected:
!   cfg_edge_event (enum event_kind kind, const exploded_edge &eedge,
! 		  location_t loc, tree fndecl, int depth);
! };
! 
! /* A concrete event subclass for the start of a CFG edge
!    e.g. "following 'false' branch...'.  */
! 
! class start_cfg_edge_event : public cfg_edge_event
! {
! public:
!   start_cfg_edge_event (const exploded_edge &eedge,
! 			location_t loc, tree fndecl, int depth)
!   : cfg_edge_event (EK_START_CFG_EDGE, eedge, loc, fndecl, depth)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!  private:
!   label_text maybe_describe_condition (bool can_colorize) const;
! 
!   static label_text maybe_describe_condition (bool can_colorize,
! 					      tree lhs,
! 					      enum tree_code op,
! 					      tree rhs);
!   static bool should_print_expr_p (tree);
! };
! 
! /* A concrete event subclass for the end of a CFG edge
!    e.g. "...to here'.  */
! 
! class end_cfg_edge_event : public cfg_edge_event
! {
! public:
!   end_cfg_edge_event (const exploded_edge &eedge,
! 		      location_t loc, tree fndecl, int depth)
!   : cfg_edge_event (EK_END_CFG_EDGE, eedge, loc, fndecl, depth)
!   {
!   }
! 
!   label_text get_desc (bool /*can_colorize*/) const FINAL OVERRIDE
!   {
!     return label_text::borrow ("...to here");
!   }
! };
! 
! /* A concrete event subclass for an interprocedural call.  */
! 
! class call_event : public superedge_event
! {
! public:
!   call_event (const exploded_edge &eedge,
! 	      location_t loc, tree fndecl, int depth);
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!   bool is_call_p () const FINAL OVERRIDE;
! 
!   const supernode *m_src_snode;
!   const supernode *m_dest_snode;
! };
! 
! /* A concrete event subclass for an interprocedural return.  */
! 
! class return_event : public superedge_event
! {
! public:
!   return_event (const exploded_edge &eedge,
! 		location_t loc, tree fndecl, int depth);
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!   bool is_return_p () const FINAL OVERRIDE;
! 
!   const supernode *m_src_snode;
!   const supernode *m_dest_snode;
! };
! 
! /* A concrete event subclass for the start of a consolidated run of CFG
!    edges all either TRUE or FALSE e.g. "following 'false' branch...'.  */
! 
! class start_consolidated_cfg_edges_event : public checker_event
! {
! public:
!   start_consolidated_cfg_edges_event (location_t loc, tree fndecl, int depth,
! 				      bool edge_sense)
!   : checker_event (EK_START_CONSOLIDATED_CFG_EDGES, loc, fndecl, depth),
!     m_edge_sense (edge_sense)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!  private:
!   bool m_edge_sense;
! };
! 
! /* A concrete event subclass for the end of a consolidated run of
!    CFG edges e.g. "...to here'.  */
! 
! class end_consolidated_cfg_edges_event : public checker_event
! {
! public:
!   end_consolidated_cfg_edges_event (location_t loc, tree fndecl, int depth)
!   : checker_event (EK_END_CONSOLIDATED_CFG_EDGES, loc, fndecl, depth)
!   {
!   }
! 
!   label_text get_desc (bool /*can_colorize*/) const FINAL OVERRIDE
!   {
!     return label_text::borrow ("...to here");
!   }
! };
! 
! /* A concrete event subclass for a setjmp or sigsetjmp call.  */
! 
! class setjmp_event : public checker_event
! {
! public:
!   setjmp_event (location_t loc, const exploded_node *enode,
! 		tree fndecl, int depth, const gcall *setjmp_call)
!   : checker_event (EK_SETJMP, loc, fndecl, depth),
!     m_enode (enode), m_setjmp_call (setjmp_call)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!   void prepare_for_emission (checker_path *path,
! 			     pending_diagnostic *pd,
! 			     diagnostic_event_id_t emission_id) FINAL OVERRIDE;
! 
! private:
!   const exploded_node *m_enode;
!   const gcall *m_setjmp_call;
! };
! 
! /* An abstract event subclass for rewinding from a longjmp to a setjmp
!    (or siglongjmp to sigsetjmp).
! 
!    Base class for two from/to subclasses, showing the two halves of the
!    rewind.  */
! 
! class rewind_event : public checker_event
! {
! public:
!   tree get_longjmp_caller () const;
!   tree get_setjmp_caller () const;
!   const exploded_edge *get_eedge () const { return m_eedge; }
! 
!  protected:
!   rewind_event (const exploded_edge *eedge,
! 		enum event_kind kind,
! 		location_t loc, tree fndecl, int depth,
! 		const rewind_info_t *rewind_info);
!   const rewind_info_t *m_rewind_info;
! 
!  private:
!   const exploded_edge *m_eedge;
! };
! 
! /* A concrete event subclass for rewinding from a longjmp to a setjmp,
!    showing the longjmp (or siglongjmp).  */
! 
! class rewind_from_longjmp_event : public rewind_event
! {
! public:
!   rewind_from_longjmp_event (const exploded_edge *eedge,
! 			     location_t loc, tree fndecl, int depth,
! 			     const rewind_info_t *rewind_info)
!   : rewind_event (eedge, EK_REWIND_FROM_LONGJMP, loc, fndecl, depth,
! 		  rewind_info)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! };
! 
! /* A concrete event subclass for rewinding from a longjmp to a setjmp,
!    showing the setjmp (or sigsetjmp).  */
! 
! class rewind_to_setjmp_event : public rewind_event
! {
! public:
!   rewind_to_setjmp_event (const exploded_edge *eedge,
! 			  location_t loc, tree fndecl, int depth,
! 			  const rewind_info_t *rewind_info)
!   : rewind_event (eedge, EK_REWIND_TO_SETJMP, loc, fndecl, depth,
! 		  rewind_info)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
! 
!   void prepare_for_emission (checker_path *path,
! 			     pending_diagnostic *pd,
! 			     diagnostic_event_id_t emission_id) FINAL OVERRIDE;
! 
! private:
!   diagnostic_event_id_t m_original_setjmp_event_id;
! };
! 
! /* Concrete subclass of checker_event for use at the end of a path:
!    a repeat of the warning message at the end of the path (perhaps with
!    references to pertinent events that occurred on the way), at the point
!    where the problem occurs.  */
! 
! class warning_event : public checker_event
! {
! public:
!   warning_event (location_t loc, tree fndecl, int depth,
! 		 const state_machine *sm,
! 		 tree var, state_machine::state_t state)
!   : checker_event (EK_WARNING, loc, fndecl, depth),
!     m_sm (sm), m_var (var), m_state (state)
!   {
!   }
! 
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE;
  
! private:
!   const state_machine *m_sm;
!   tree m_var;
!   state_machine::state_t m_state;
! };
  
  /* Subclass of diagnostic_path for analyzer diagnostics.  */
  
  class checker_path : public diagnostic_path
  {
  public:
!   checker_path () : diagnostic_path () {}
  
    /* Implementation of diagnostic_path vfuncs.  */
  
!   unsigned num_events () const FINAL OVERRIDE
    {
      return m_events.length ();
    }
  
!   const diagnostic_event & get_event (int idx) const FINAL OVERRIDE
    {
      return *m_events[idx];
    }
--- 21,45 ----
  #ifndef GCC_ANALYZER_CHECKER_PATH_H
  #define GCC_ANALYZER_CHECKER_PATH_H
  
! #include "analyzer/checker-event.h"
  
! namespace ana {
  
  /* Subclass of diagnostic_path for analyzer diagnostics.  */
  
  class checker_path : public diagnostic_path
  {
  public:
!   checker_path (logger *logger) : diagnostic_path (), m_logger (logger) {}
  
    /* Implementation of diagnostic_path vfuncs.  */
  
!   unsigned num_events () const final override
    {
      return m_events.length ();
    }
  
!   const diagnostic_event & get_event (int idx) const final override
    {
      return *m_events[idx];
    }
*************** public:
*** 553,562 ****
  
    void maybe_log (logger *logger, const char *desc) const;
  
!   void add_event (checker_event *event)
!   {
!     m_events.safe_push (event);
!   }
  
    void delete_event (int idx)
    {
--- 54,60 ----
  
    void maybe_log (logger *logger, const char *desc) const;
  
!   void add_event (std::unique_ptr<checker_event> event);
  
    void delete_event (int idx)
    {
*************** public:
*** 578,590 ****
      m_events[idx] = new_event;
    }
  
!   void add_region_creation_event (const region *reg,
! 				  location_t loc,
! 				  tree fndecl, int depth);
! 
!   void add_final_event (const state_machine *sm,
! 			const exploded_node *enode, const gimple *stmt,
! 			tree var, state_machine::state_t state);
  
    /* After all event-pruning, a hook for notifying each event what
       its ID will be.  The events are notified in order, allowing
--- 76,86 ----
      m_events[idx] = new_event;
    }
  
!   void add_region_creation_events (pending_diagnostic *pd,
! 				   const region *reg,
! 				   const region_model *model,
! 				   const event_loc_info &loc_info,
! 				   bool debug);
  
    /* After all event-pruning, a hook for notifying each event what
       its ID will be.  The events are notified in order, allowing
*************** public:
*** 619,624 ****
--- 115,122 ----
  
    bool cfg_edge_pair_at_p (unsigned idx) const;
  
+   void inject_any_inlined_call_events (logger *logger);
+ 
  private:
    DISABLE_COPY_AND_ASSIGN(checker_path);
  
*************** private:
*** 629,634 ****
--- 127,134 ----
       exploded_node *, so that rewind events can refer to them in their
       descriptions.  */
    hash_map <const exploded_node *, diagnostic_event_id_t> m_setjmp_event_ids;
+ 
+   logger *m_logger;
  };
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/complexity.cc gcc-13.1.0/gcc/analyzer/complexity.cc
*** gcc-12.2.0/gcc/analyzer/complexity.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/complexity.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Measuring the complexity of svalues/regions.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Measuring the complexity of svalues/regions.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 38,48 ****
  #include "target.h"
  #include "fold-const.h"
  #include "tree-pretty-print.h"
- #include "tristate.h"
  #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "options.h"
--- 39,45 ----
diff -Nrcpad gcc-12.2.0/gcc/analyzer/complexity.h gcc-13.1.0/gcc/analyzer/complexity.h
*** gcc-12.2.0/gcc/analyzer/complexity.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/complexity.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Measuring the complexity of svalues/regions.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Measuring the complexity of svalues/regions.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/constraint-manager.cc gcc-13.1.0/gcc/analyzer/constraint-manager.cc
*** gcc-12.2.0/gcc/analyzer/constraint-manager.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/constraint-manager.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 30,37 ****
  #include "selftest.h"
  #include "diagnostic-core.h"
  #include "graphviz.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "ordered-hash-map.h"
  #include "options.h"
--- 31,36 ----
*************** along with GCC; see the file COPYING3.
*** 41,53 ****
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
  #include "analyzer/analyzer-selftests.h"
  #include "tree-pretty-print.h"
  
--- 40,52 ----
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
  #include "bitmap.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
+ #include "analyzer/call-summary.h"
  #include "analyzer/analyzer-selftests.h"
  #include "tree-pretty-print.h"
  
*************** dump_cst (pretty_printer *pp, tree cst,
*** 422,428 ****
  void
  bounded_range::dump_to_pp (pretty_printer *pp, bool show_types) const
  {
!   if (tree_int_cst_equal (m_lower, m_upper))
      dump_cst (pp, m_lower, show_types);
    else
      {
--- 421,427 ----
  void
  bounded_range::dump_to_pp (pretty_printer *pp, bool show_types) const
  {
!   if (singleton_p ())
      dump_cst (pp, m_lower, show_types);
    else
      {
*************** bool
*** 2119,2124 ****
--- 2118,2134 ----
  constraint_manager::add_bounded_ranges (const svalue *sval,
  					const bounded_ranges *ranges)
  {
+   /* If RANGES is just a singleton, convert this to adding the constraint:
+      "SVAL == {the singleton}".  */
+   if (ranges->get_count () == 1
+       && ranges->get_range (0).singleton_p ())
+     {
+       tree range_cst = ranges->get_range (0).m_lower;
+       const svalue *range_sval
+ 	= m_mgr->get_or_create_constant_svalue (range_cst);
+       return add_constraint (sval, EQ_EXPR, range_sval);
+     }
+ 
    sval = sval->unwrap_any_unmergeable ();
  
    /* Nothing can be known about unknown/poisoned values.  */
*************** constraint_manager::eval_condition (equi
*** 2467,2472 ****
--- 2477,2542 ----
    return tristate::unknown ();
  }
  
+ /* Return true iff "LHS == RHS" is known to be impossible due to
+    derived conditions.
+ 
+    Look for an EC containing an EC_VAL of the form (LHS OP CST).
+    If found, see if (LHS OP CST) == EC_VAL is false.
+    If so, we know this condition is false.
+ 
+    For example, if we already know that
+      (X & CST_MASK) == Y
+    and we're evaluating X == Z, we can test to see if
+      (Z & CST_MASK) == EC_VAL
+    and thus if:
+      (Z & CST_MASK) == Y
+    and reject this if we know that's false.  */
+ 
+ bool
+ constraint_manager::impossible_derived_conditions_p (const svalue *lhs,
+ 						     const svalue *rhs) const
+ {
+   int i;
+   equiv_class *ec;
+   FOR_EACH_VEC_ELT (m_equiv_classes, i, ec)
+     {
+       for (const svalue *ec_sval : ec->m_vars)
+ 	switch (ec_sval->get_kind ())
+ 	  {
+ 	  default:
+ 	    break;
+ 	  case SK_BINOP:
+ 	    {
+ 	      const binop_svalue *iter_binop
+ 		= as_a <const binop_svalue *> (ec_sval);
+ 	      if (lhs == iter_binop->get_arg0 ()
+ 		  && iter_binop->get_type ())
+ 		if (iter_binop->get_arg1 ()->get_kind () == SK_CONSTANT)
+ 		  {
+ 		    /* Try evalating EC_SVAL with LHS
+ 		       as the value of EC_SVAL's lhs, and see if it's
+ 		       consistent with existing knowledge.  */
+ 		    const svalue *subst_bin_op
+ 		      = m_mgr->get_or_create_binop
+ 		      (iter_binop->get_type (),
+ 		       iter_binop->get_op (),
+ 		       rhs,
+ 		       iter_binop->get_arg1 ());
+ 		    tristate t = eval_condition (subst_bin_op,
+ 						 EQ_EXPR,
+ 						 ec_sval);
+ 		    if (t.is_false ())
+ 		      return true; /* Impossible.  */
+ 		  }
+ 	    }
+ 	    break;
+ 	  }
+     }
+   /* Not known to be impossible.  */
+   return false;
+ }
+ 
+ 
  /* Evaluate the condition LHS OP RHS, without modifying this
     constraint_manager (avoiding the creation of equiv_class instances).  */
  
*************** constraint_manager::eval_condition (cons
*** 2517,2522 ****
--- 2587,2596 ----
  	return result_for_ecs;
      }
  
+   if (op == EQ_EXPR
+       && impossible_derived_conditions_p (lhs, rhs))
+     return false;
+ 
    /* If at least one is not in an EC, we have no constraints
       comparing LHS and RHS yet.
       They might still be comparable if one (or both) is a constant.
*************** public:
*** 2905,2911 ****
    {}
  
    void on_fact (const svalue *lhs, enum tree_code code, const svalue *rhs)
!     FINAL OVERRIDE
    {
      /* Special-case for widening.  */
      if (lhs->get_kind () == SK_WIDENING)
--- 2979,2985 ----
    {}
  
    void on_fact (const svalue *lhs, enum tree_code code, const svalue *rhs)
!     final override
    {
      /* Special-case for widening.  */
      if (lhs->get_kind () == SK_WIDENING)
*************** public:
*** 2933,2939 ****
    }
  
    void on_ranges (const svalue *lhs_sval,
! 		  const bounded_ranges *ranges) FINAL OVERRIDE
    {
      for (const auto &iter : m_cm_b->m_bounded_ranges_constraints)
        {
--- 3007,3013 ----
    }
  
    void on_ranges (const svalue *lhs_sval,
! 		  const bounded_ranges *ranges) final override
    {
      for (const auto &iter : m_cm_b->m_bounded_ranges_constraints)
        {
*************** constraint_manager::for_each_fact (fact_
*** 3043,3048 ****
--- 3117,3176 ----
      }
  }
  
+ /* Subclass of fact_visitor for use by
+    constraint_manager::replay_call_summary.  */
+ 
+ class replay_fact_visitor : public fact_visitor
+ {
+ public:
+   replay_fact_visitor (call_summary_replay &r,
+ 		       constraint_manager *out)
+   : m_r (r), m_out (out), m_feasible (true)
+   {}
+ 
+   bool feasible_p () const { return m_feasible; }
+ 
+   void on_fact (const svalue *lhs, enum tree_code code, const svalue *rhs)
+     final override
+   {
+     const svalue *caller_lhs = m_r.convert_svalue_from_summary (lhs);
+     if (!caller_lhs)
+       return;
+     const svalue *caller_rhs = m_r.convert_svalue_from_summary (rhs);
+     if (!caller_rhs)
+       return;
+     if (!m_out->add_constraint (caller_lhs, code, caller_rhs))
+       m_feasible = false;
+   }
+ 
+   void on_ranges (const svalue *lhs_sval,
+ 		  const bounded_ranges *ranges) final override
+   {
+     const svalue *caller_lhs = m_r.convert_svalue_from_summary (lhs_sval);
+     if (!caller_lhs)
+       return;
+     if (!m_out->add_bounded_ranges (caller_lhs, ranges))
+       m_feasible = false;
+   }
+ 
+ private:
+   call_summary_replay &m_r;
+   constraint_manager *m_out;
+   bool m_feasible;
+ };
+ 
+ /* Attempt to use R to replay the constraints from SUMMARY into this object.
+    Return true if it is feasible.  */
+ 
+ bool
+ constraint_manager::replay_call_summary (call_summary_replay &r,
+ 					 const constraint_manager &summary)
+ {
+   replay_fact_visitor v (r, this);
+   summary.for_each_fact (&v);
+   return v.feasible_p ();
+ }
+ 
  /* Assert that this object is valid.  */
  
  void
*************** test_equality ()
*** 3923,3932 ****
  static void
  test_many_constants ()
  {
!   program_point point (program_point::origin ());
    tree a = build_global_decl ("a", integer_type_node);
  
-   region_model_manager mgr;
    region_model model (&mgr);
    auto_vec<tree> constants;
    for (int i = 0; i < 20; i++)
--- 4051,4060 ----
  static void
  test_many_constants ()
  {
!   region_model_manager mgr;
!   program_point point (program_point::origin (mgr));
    tree a = build_global_decl ("a", integer_type_node);
  
    region_model model (&mgr);
    auto_vec<tree> constants;
    for (int i = 0; i < 20; i++)
*************** test_bounded_ranges ()
*** 4382,4387 ****
--- 4510,4603 ----
  	     mgr.get_or_create_point (ch1));
  }
  
+ /* Verify that we can handle sufficiently simple bitmasking operations.  */
+ 
+ static void
+ test_bits (void)
+ {
+   region_model_manager mgr;
+ 
+   tree int_0 = build_int_cst (integer_type_node, 0);
+   tree int_0x80 = build_int_cst (integer_type_node, 0x80);
+   tree int_0xff = build_int_cst (integer_type_node, 0xff);
+   tree x = build_global_decl ("x", integer_type_node);
+ 
+   tree x_bit_and_0x80 = build2 (BIT_AND_EXPR, integer_type_node, x, int_0x80);
+   tree x_bit_and_0xff = build2 (BIT_AND_EXPR, integer_type_node, x, int_0xff);
+ 
+   /* "x & 0x80 == 0x80".  */
+   {
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0x80, EQ_EXPR, int_0x80);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0x80);
+   }
+ 
+   /* "x & 0x80 != 0x80".  */
+   {
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0x80, NE_EXPR, int_0x80);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0x80);
+   }
+ 
+   /* "x & 0x80 == 0".  */
+   {
+     region_model model (&mgr);
+ 
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0x80, EQ_EXPR, int_0);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0x80);
+   }
+ 
+   /* "x & 0x80 != 0".  */
+   {
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0x80, NE_EXPR, int_0);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0x80);
+   }
+ 
+   /* More that one bit in the mask.  */
+ 
+   /* "x & 0xff == 0x80".  */
+   {
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0xff, EQ_EXPR, int_0x80);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0x80);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0xff);
+   }
+ 
+   /* "x & 0xff != 0x80".  */
+   {
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0xff, NE_EXPR, int_0x80);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0x80);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0xff);
+   }
+ 
+   /* "x & 0xff == 0".  */
+   {
+     region_model model (&mgr);
+ 
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0xff, EQ_EXPR, int_0);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0x80);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0xff);
+   }
+ 
+   /* "x & 0xff != 0".  */
+   {
+     region_model model (&mgr);
+     ADD_SAT_CONSTRAINT (model, x_bit_and_0xff, NE_EXPR, int_0);
+     ASSERT_CONDITION_FALSE (model, x, EQ_EXPR, int_0);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0x80);
+     ASSERT_CONDITION_UNKNOWN (model, x, EQ_EXPR, int_0xff);
+   }
+ }
+ 
  /* Run the selftests in this file, temporarily overriding
     flag_analyzer_transitivity with TRANSITIVITY.  */
  
*************** run_constraint_manager_tests (bool trans
*** 4405,4410 ****
--- 4621,4627 ----
    test_purging ();
    test_bounded_range ();
    test_bounded_ranges ();
+   test_bits ();
  
    flag_analyzer_transitivity = saved_flag_analyzer_transitivity;
  }
diff -Nrcpad gcc-12.2.0/gcc/analyzer/constraint-manager.h gcc-13.1.0/gcc/analyzer/constraint-manager.h
*** gcc-12.2.0/gcc/analyzer/constraint-manager.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/constraint-manager.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Tracking equivalence classes and constraints at a point on an execution path.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** struct bounded_range
*** 100,105 ****
--- 100,110 ----
  
    static int cmp (const bounded_range &a, const bounded_range &b);
  
+   bool singleton_p () const
+   {
+     return tree_int_cst_equal (m_lower, m_upper);
+   }
+ 
    tree m_lower;
    tree m_upper;
  
*************** public:
*** 138,143 ****
--- 143,151 ----
  
    static int cmp (const bounded_ranges *a, const bounded_ranges *b);
  
+   unsigned get_count () const { return m_ranges.length (); }
+   const bounded_range &get_range (unsigned idx) const { return m_ranges[idx]; }
+ 
  private:
    void canonicalize ();
    void validate () const;
*************** public:
*** 484,489 ****
--- 492,500 ----
  
    bounded_ranges_manager *get_range_manager () const;
  
+   bool replay_call_summary (call_summary_replay &r,
+ 			    const constraint_manager &summary);
+ 
    auto_delete_vec<equiv_class> m_equiv_classes;
    auto_vec<constraint> m_constraints;
    auto_vec<bounded_ranges_constraint> m_bounded_ranges_constraints;
*************** public:
*** 492,497 ****
--- 503,510 ----
    void add_constraint_internal (equiv_class_id lhs_id,
  				enum constraint_op c_op,
  				equiv_class_id rhs_id);
+   bool impossible_derived_conditions_p (const svalue *lhs,
+ 					const svalue *rhs) const;
  
    region_model_manager *m_mgr;
  };
diff -Nrcpad gcc-12.2.0/gcc/analyzer/diagnostic-manager.cc gcc-13.1.0/gcc/analyzer/diagnostic-manager.cc
*** gcc-12.2.0/gcc/analyzer/diagnostic-manager.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/diagnostic-manager.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 29,43 ****
  #include "diagnostic-core.h"
  #include "diagnostic-event-id.h"
  #include "diagnostic-path.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
- #include "shortest-paths.h"
- #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "ordered-hash-map.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
--- 30,37 ----
*************** along with GCC; see the file COPYING3.
*** 52,57 ****
--- 46,52 ----
  #include "basic-block.h"
  #include "gimple.h"
  #include "gimple-iterator.h"
+ #include "inlining-iterator.h"
  #include "cgraph.h"
  #include "digraph.h"
  #include "analyzer/supergraph.h"
*************** along with GCC; see the file COPYING3.
*** 61,66 ****
--- 56,62 ----
  #include "analyzer/feasible-graph.h"
  #include "analyzer/checker-path.h"
  #include "analyzer/reachability.h"
+ #include "make-unique.h"
  
  #if ENABLE_ANALYZER
  
*************** public:
*** 90,110 ****
  
    logger *get_logger () const { return m_eg.get_logger (); }
  
!   exploded_path *get_best_epath (const exploded_node *target_enode,
! 				 const char *desc, unsigned diag_idx,
! 				 feasibility_problem **out_problem);
  
  private:
    DISABLE_COPY_AND_ASSIGN(epath_finder);
  
!   exploded_path *explore_feasible_paths (const exploded_node *target_enode,
! 					 const char *desc, unsigned diag_idx);
!   bool process_worklist_item (feasible_worklist *worklist,
! 			      const trimmed_graph &tg,
! 			      feasible_graph *fg,
! 			      const exploded_node *target_enode,
! 			      unsigned diag_idx,
! 			      exploded_path **out_best_path) const;
    void dump_trimmed_graph (const exploded_node *target_enode,
  			   const char *desc, unsigned diag_idx,
  			   const trimmed_graph &tg,
--- 86,115 ----
  
    logger *get_logger () const { return m_eg.get_logger (); }
  
!   std::unique_ptr<exploded_path>
!   get_best_epath (const exploded_node *target_enode,
! 		  const gimple *target_stmt,
! 		  const pending_diagnostic &pd,
! 		  const char *desc, unsigned diag_idx,
! 		  std::unique_ptr<feasibility_problem> *out_problem);
  
  private:
    DISABLE_COPY_AND_ASSIGN(epath_finder);
  
!   std::unique_ptr<exploded_path>
!   explore_feasible_paths (const exploded_node *target_enode,
! 			  const gimple *target_stmt,
! 			  const pending_diagnostic &pd,
! 			  const char *desc, unsigned diag_idx);
!   bool
!   process_worklist_item (feasible_worklist *worklist,
! 			 const trimmed_graph &tg,
! 			 feasible_graph *fg,
! 			 const exploded_node *target_enode,
! 			 const gimple *target_stmt,
! 			 const pending_diagnostic &pd,
! 			 unsigned diag_idx,
! 			 std::unique_ptr<exploded_path> *out_best_path) const;
    void dump_trimmed_graph (const exploded_node *target_enode,
  			   const char *desc, unsigned diag_idx,
  			   const trimmed_graph &tg,
*************** private:
*** 126,131 ****
--- 131,139 ----
  /* Get the "best" exploded_path for reaching ENODE from the origin,
     returning ownership of it to the caller.
  
+    If TARGET_STMT is non-NULL, then check for reaching that stmt
+    within ENODE.
+ 
     Ideally we want to report the shortest feasible path.
     Return NULL if we could not find a feasible path
     (when flag_analyzer_feasibility is true).
*************** private:
*** 137,146 ****
  
     Write any feasibility_problem to *OUT_PROBLEM.  */
  
! exploded_path *
  epath_finder::get_best_epath (const exploded_node *enode,
  			      const char *desc, unsigned diag_idx,
! 			      feasibility_problem **out_problem)
  {
    logger *logger = get_logger ();
    LOG_SCOPE (logger);
--- 145,156 ----
  
     Write any feasibility_problem to *OUT_PROBLEM.  */
  
! std::unique_ptr<exploded_path>
  epath_finder::get_best_epath (const exploded_node *enode,
+ 			      const gimple *target_stmt,
+ 			      const pending_diagnostic &pd,
  			      const char *desc, unsigned diag_idx,
! 			      std::unique_ptr<feasibility_problem> *out_problem)
  {
    logger *logger = get_logger ();
    LOG_SCOPE (logger);
*************** epath_finder::get_best_epath (const expl
*** 161,167 ****
        /* Attempt to find the shortest feasible path using feasible_graph.  */
        if (logger)
  	logger->log ("trying to find shortest feasible path");
!       if (exploded_path *epath = explore_feasible_paths (enode, desc, diag_idx))
  	{
  	  if (logger)
  	    logger->log ("accepting %qs at EN: %i, SN: %i (sd: %i)"
--- 171,178 ----
        /* Attempt to find the shortest feasible path using feasible_graph.  */
        if (logger)
  	logger->log ("trying to find shortest feasible path");
!       if (std::unique_ptr<exploded_path> epath
! 	    = explore_feasible_paths (enode, target_stmt, pd, desc, diag_idx))
  	{
  	  if (logger)
  	    logger->log ("accepting %qs at EN: %i, SN: %i (sd: %i)"
*************** epath_finder::get_best_epath (const expl
*** 189,196 ****
        if (logger)
  	logger->log ("trying to find shortest path ignoring feasibility");
        gcc_assert (m_sep);
!       exploded_path *epath
! 	= new exploded_path (m_sep->get_shortest_path (enode));
        if (epath->feasible_p (logger, out_problem, m_eg.get_engine (), &m_eg))
  	{
  	  if (logger)
--- 200,207 ----
        if (logger)
  	logger->log ("trying to find shortest path ignoring feasibility");
        gcc_assert (m_sep);
!       std::unique_ptr<exploded_path> epath
! 	= make_unique<exploded_path> (m_sep->get_shortest_path (enode));
        if (epath->feasible_p (logger, out_problem, m_eg.get_engine (), &m_eg))
  	{
  	  if (logger)
*************** private:
*** 331,336 ****
--- 342,350 ----
     TARGET_ENODE by iteratively building a feasible_graph, in which
     every path to a feasible_node is feasible by construction.
  
+    If TARGET_STMT is non-NULL, then check for reaching that stmt
+    within TARGET_ENODE.
+ 
     We effectively explore the tree of feasible paths in order of shortest
     path until we either find a feasible path to TARGET_ENODE, or hit
     a limit and give up.
*************** private:
*** 372,379 ****
       continue forever without reaching the target), or
     - getting monotonically closer to the termination threshold.  */
  
! exploded_path *
  epath_finder::explore_feasible_paths (const exploded_node *target_enode,
  				      const char *desc, unsigned diag_idx)
  {
    logger *logger = get_logger ();
--- 386,395 ----
       continue forever without reaching the target), or
     - getting monotonically closer to the termination threshold.  */
  
! std::unique_ptr<exploded_path>
  epath_finder::explore_feasible_paths (const exploded_node *target_enode,
+ 				      const gimple *target_stmt,
+ 				      const pending_diagnostic &pd,
  				      const char *desc, unsigned diag_idx)
  {
    logger *logger = get_logger ();
*************** epath_finder::explore_feasible_paths (co
*** 410,422 ****
       a limit.  */
  
    /* Set this if we find a feasible path to TARGET_ENODE.  */
!   exploded_path *best_path = NULL;
  
    {
      auto_checking_feasibility sentinel (mgr);
  
!     while (process_worklist_item (&worklist, tg, &fg, target_enode, diag_idx,
! 				  &best_path))
        {
  	/* Empty; the work is done within process_worklist_item.  */
        }
--- 426,438 ----
       a limit.  */
  
    /* Set this if we find a feasible path to TARGET_ENODE.  */
!   std::unique_ptr<exploded_path> best_path = NULL;
  
    {
      auto_checking_feasibility sentinel (mgr);
  
!     while (process_worklist_item (&worklist, tg, &fg, target_enode, target_stmt,
! 				  pd, diag_idx, &best_path))
        {
  	/* Empty; the work is done within process_worklist_item.  */
        }
*************** epath_finder::explore_feasible_paths (co
*** 449,463 ****
     Return false if the processing of the worklist should stop
     (either due to reaching TARGET_ENODE, or hitting a limit).
     Write to *OUT_BEST_PATH if stopping due to finding a feasible path
!    to TARGET_ENODE.  */
  
  bool
! epath_finder::process_worklist_item (feasible_worklist *worklist,
! 				     const trimmed_graph &tg,
! 				     feasible_graph *fg,
! 				     const exploded_node *target_enode,
! 				     unsigned diag_idx,
! 				     exploded_path **out_best_path) const
  {
    logger *logger = get_logger ();
  
--- 465,485 ----
     Return false if the processing of the worklist should stop
     (either due to reaching TARGET_ENODE, or hitting a limit).
     Write to *OUT_BEST_PATH if stopping due to finding a feasible path
!    to TARGET_ENODE.
!    Use PD to provide additional restrictions on feasibility of
!    the final path in the feasible_graph before converting to
!    an exploded_path.  */
  
  bool
! epath_finder::
! process_worklist_item (feasible_worklist *worklist,
! 		       const trimmed_graph &tg,
! 		       feasible_graph *fg,
! 		       const exploded_node *target_enode,
! 		       const gimple *target_stmt,
! 		       const pending_diagnostic &pd,
! 		       unsigned diag_idx,
! 		       std::unique_ptr<exploded_path> *out_best_path) const
  {
    logger *logger = get_logger ();
  
*************** epath_finder::process_worklist_item (fea
*** 513,518 ****
--- 535,547 ----
  			     " (length: %i)",
  			     target_enode->m_index, diag_idx,
  			     succ_fnode->get_path_length ());
+ 	      if (!pd.check_valid_fpath_p (*succ_fnode, target_stmt))
+ 		{
+ 		  if (logger)
+ 		    logger->log ("rejecting feasible path due to"
+ 				 " pending_diagnostic");
+ 		  return false;
+ 		}
  	      *out_best_path = fg->make_epath (succ_fnode);
  	      if (flag_dump_analyzer_feasibility)
  		dump_feasible_path (target_enode, diag_idx, *fg, *succ_fnode);
*************** public:
*** 565,571 ****
    }
  
    void dump_extra_info (const exploded_node *enode,
! 			pretty_printer *pp) const FINAL OVERRIDE
    {
      pp_printf (pp, "sp: %i", m_sep.get_shortest_path (enode).length ());
      pp_newline (pp);
--- 594,600 ----
    }
  
    void dump_extra_info (const exploded_node *enode,
! 			pretty_printer *pp) const final override
    {
      pp_printf (pp, "sp: %i", m_sep.get_shortest_path (enode).length ());
      pp_newline (pp);
*************** epath_finder::dump_feasible_path (const
*** 640,657 ****
  saved_diagnostic::saved_diagnostic (const state_machine *sm,
  				    const exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
! 				    stmt_finder *stmt_finder,
  				    tree var,
  				    const svalue *sval,
  				    state_machine::state_t state,
! 				    pending_diagnostic *d,
  				    unsigned idx)
  : m_sm (sm), m_enode (enode), m_snode (snode), m_stmt (stmt),
   /* stmt_finder could be on-stack; we want our own copy that can
      outlive that.  */
    m_stmt_finder (stmt_finder ? stmt_finder->clone () : NULL),
    m_var (var), m_sval (sval), m_state (state),
!   m_d (d), m_trailing_eedge (NULL),
    m_idx (idx),
    m_best_epath (NULL), m_problem (NULL),
    m_notes ()
--- 669,686 ----
  saved_diagnostic::saved_diagnostic (const state_machine *sm,
  				    const exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
! 				    const stmt_finder *stmt_finder,
  				    tree var,
  				    const svalue *sval,
  				    state_machine::state_t state,
! 				    std::unique_ptr<pending_diagnostic> d,
  				    unsigned idx)
  : m_sm (sm), m_enode (enode), m_snode (snode), m_stmt (stmt),
   /* stmt_finder could be on-stack; we want our own copy that can
      outlive that.  */
    m_stmt_finder (stmt_finder ? stmt_finder->clone () : NULL),
    m_var (var), m_sval (sval), m_state (state),
!   m_d (std::move (d)), m_trailing_eedge (NULL),
    m_idx (idx),
    m_best_epath (NULL), m_problem (NULL),
    m_notes ()
*************** saved_diagnostic::saved_diagnostic (cons
*** 663,678 ****
    gcc_assert (m_enode);
  }
  
- /* saved_diagnostic's dtor.  */
- 
- saved_diagnostic::~saved_diagnostic ()
- {
-   delete m_stmt_finder;
-   delete m_d;
-   delete m_best_epath;
-   delete m_problem;
- }
- 
  bool
  saved_diagnostic::operator== (const saved_diagnostic &other) const
  {
--- 692,697 ----
*************** saved_diagnostic::operator== (const save
*** 695,704 ****
  /* Add PN to this diagnostic, taking ownership of it.  */
  
  void
! saved_diagnostic::add_note (pending_note *pn)
  {
    gcc_assert (pn);
!   m_notes.safe_push (pn);
  }
  
  /* Return a new json::object of the form
--- 714,723 ----
  /* Add PN to this diagnostic, taking ownership of it.  */
  
  void
! saved_diagnostic::add_note (std::unique_ptr<pending_note> pn)
  {
    gcc_assert (pn);
!   m_notes.safe_push (pn.release ());
  }
  
  /* Return a new json::object of the form
*************** saved_diagnostic::calc_best_epath (epath
*** 815,825 ****
  {
    logger *logger = pf->get_logger ();
    LOG_SCOPE (logger);
-   delete m_best_epath;
-   delete m_problem;
    m_problem = NULL;
  
!   m_best_epath = pf->get_best_epath (m_enode, m_d->get_kind (), m_idx,
  				     &m_problem);
  
    /* Handle failure to find a feasible path.  */
--- 834,843 ----
  {
    logger *logger = pf->get_logger ();
    LOG_SCOPE (logger);
    m_problem = NULL;
  
!   m_best_epath = pf->get_best_epath (m_enode, m_stmt,
! 				     *m_d, m_d->get_kind (), m_idx,
  				     &m_problem);
  
    /* Handle failure to find a feasible path.  */
*************** public:
*** 902,908 ****
  
    pending_diagnostic *get_pending_diagnostic () const
    {
!     return m_sd.m_d;
    }
  
    bool reachable_from_p (const exploded_node *src_enode) const
--- 920,926 ----
  
    pending_diagnostic *get_pending_diagnostic () const
    {
!     return m_sd.m_d.get ();
    }
  
    bool reachable_from_p (const exploded_node *src_enode) const
*************** get_emission_location (const gimple *stm
*** 944,950 ****
    location_t loc = get_stmt_location (stmt, fun);
  
    /* Allow the pending_diagnostic to fix up the location.  */
!   loc = pd.fixup_location (loc);
  
    return loc;
  }
--- 962,968 ----
    location_t loc = get_stmt_location (stmt, fun);
  
    /* Allow the pending_diagnostic to fix up the location.  */
!   loc = pd.fixup_location (loc, true);
  
    return loc;
  }
*************** diagnostic_manager::diagnostic_manager (
*** 961,978 ****
  }
  
  /* Queue pending_diagnostic D at ENODE for later emission.
!    Return true/false signifying if the diagnostic was actually added.
!    Take ownership of D (or delete it).  */
  
  bool
  diagnostic_manager::add_diagnostic (const state_machine *sm,
  				    exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
! 				    stmt_finder *finder,
  				    tree var,
  				    const svalue *sval,
  				    state_machine::state_t state,
! 				    pending_diagnostic *d)
  {
    LOG_FUNC (get_logger ());
  
--- 979,995 ----
  }
  
  /* Queue pending_diagnostic D at ENODE for later emission.
!    Return true/false signifying if the diagnostic was actually added.  */
  
  bool
  diagnostic_manager::add_diagnostic (const state_machine *sm,
  				    exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
! 				    const stmt_finder *finder,
  				    tree var,
  				    const svalue *sval,
  				    state_machine::state_t state,
! 				    std::unique_ptr<pending_diagnostic> d)
  {
    LOG_FUNC (get_logger ());
  
*************** diagnostic_manager::add_diagnostic (cons
*** 993,999 ****
  	  if (get_logger ())
  	    get_logger ()->log ("rejecting disabled warning %qs",
  				d->get_kind ());
- 	  delete d;
  	  m_num_disabled_diagnostics++;
  	  return false;
  	}
--- 1010,1015 ----
*************** diagnostic_manager::add_diagnostic (cons
*** 1001,1013 ****
  
    saved_diagnostic *sd
      = new saved_diagnostic (sm, enode, snode, stmt, finder, var, sval,
! 			    state, d, m_saved_diagnostics.length ());
    m_saved_diagnostics.safe_push (sd);
    enode->add_diagnostic (sd);
    if (get_logger ())
      log ("adding saved diagnostic %i at SN %i to EN %i: %qs",
  	 sd->get_index (),
! 	 snode->m_index, enode->m_index, d->get_kind ());
    return true;
  }
  
--- 1017,1029 ----
  
    saved_diagnostic *sd
      = new saved_diagnostic (sm, enode, snode, stmt, finder, var, sval,
! 			    state, std::move (d), m_saved_diagnostics.length ());
    m_saved_diagnostics.safe_push (sd);
    enode->add_diagnostic (sd);
    if (get_logger ())
      log ("adding saved diagnostic %i at SN %i to EN %i: %qs",
  	 sd->get_index (),
! 	 snode->m_index, enode->m_index, sd->m_d->get_kind ());
    return true;
  }
  
*************** diagnostic_manager::add_diagnostic (cons
*** 1018,1035 ****
  bool
  diagnostic_manager::add_diagnostic (exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
! 				    stmt_finder *finder,
! 				    pending_diagnostic *d)
  {
    gcc_assert (enode);
    return add_diagnostic (NULL, enode, snode, stmt, finder, NULL_TREE,
! 			 NULL, 0, d);
  }
  
  /* Add PN to the most recent saved_diagnostic.  */
  
  void
! diagnostic_manager::add_note (pending_note *pn)
  {
    LOG_FUNC (get_logger ());
    gcc_assert (pn);
--- 1034,1051 ----
  bool
  diagnostic_manager::add_diagnostic (exploded_node *enode,
  				    const supernode *snode, const gimple *stmt,
! 				    const stmt_finder *finder,
! 				    std::unique_ptr<pending_diagnostic> d)
  {
    gcc_assert (enode);
    return add_diagnostic (NULL, enode, snode, stmt, finder, NULL_TREE,
! 			 NULL, 0, std::move (d));
  }
  
  /* Add PN to the most recent saved_diagnostic.  */
  
  void
! diagnostic_manager::add_note (std::unique_ptr<pending_note> pn)
  {
    LOG_FUNC (get_logger ());
    gcc_assert (pn);
*************** diagnostic_manager::add_note (pending_no
*** 1037,1043 ****
    /* Get most recent saved_diagnostic.  */
    gcc_assert (m_saved_diagnostics.length () > 0);
    saved_diagnostic *sd = m_saved_diagnostics[m_saved_diagnostics.length () - 1];
!   sd->add_note (pn);
  }
  
  /* Return a new json::object of the form
--- 1053,1059 ----
    /* Get most recent saved_diagnostic.  */
    gcc_assert (m_saved_diagnostics.length () > 0);
    saved_diagnostic *sd = m_saved_diagnostics[m_saved_diagnostics.length () - 1];
!   sd->add_note (std::move (pn));
  }
  
  /* Return a new json::object of the form
*************** diagnostic_manager::emit_saved_diagnosti
*** 1369,1375 ****
  
    /* This is the diagnostic_path subclass that will be built for
       the diagnostic.  */
!   checker_path emission_path;
  
    /* Populate emission_path with a full description of EPATH.  */
    build_emission_path (pb, *epath, &emission_path);
--- 1385,1391 ----
  
    /* This is the diagnostic_path subclass that will be built for
       the diagnostic.  */
!   checker_path emission_path (get_logger ());
  
    /* Populate emission_path with a full description of EPATH.  */
    build_emission_path (pb, *epath, &emission_path);
*************** diagnostic_manager::emit_saved_diagnosti
*** 1381,1388 ****
       We use the final enode from the epath, which might be different from
       the sd.m_enode, as the dedupe code doesn't care about enodes, just
       snodes.  */
!   emission_path.add_final_event (sd.m_sm, epath->get_final_enode (), sd.m_stmt,
! 				 sd.m_var, sd.m_state);
  
    /* The "final" event might not be final; if the saved_diagnostic has a
       trailing eedge stashed, add any events for it.  This is for use
--- 1397,1404 ----
       We use the final enode from the epath, which might be different from
       the sd.m_enode, as the dedupe code doesn't care about enodes, just
       snodes.  */
!   sd.m_d->add_final_event (sd.m_sm, epath->get_final_enode (), sd.m_stmt,
! 			   sd.m_var, sd.m_state, &emission_path);
  
    /* The "final" event might not be final; if the saved_diagnostic has a
       trailing eedge stashed, add any events for it.  This is for use
*************** diagnostic_manager::emit_saved_diagnosti
*** 1390,1402 ****
    if (sd.m_trailing_eedge)
      add_events_for_eedge (pb, *sd.m_trailing_eedge, &emission_path, NULL);
  
!   emission_path.prepare_for_emission (sd.m_d);
  
    location_t loc
      = get_emission_location (sd.m_stmt, sd.m_snode->m_fun, *sd.m_d);
  
    /* Allow the pending_diagnostic to fix up the locations of events.  */
!   emission_path.fixup_locations (sd.m_d);
  
    gcc_rich_location rich_loc (loc);
    rich_loc.set_path (&emission_path);
--- 1406,1420 ----
    if (sd.m_trailing_eedge)
      add_events_for_eedge (pb, *sd.m_trailing_eedge, &emission_path, NULL);
  
!   emission_path.inject_any_inlined_call_events (get_logger ());
! 
!   emission_path.prepare_for_emission (sd.m_d.get ());
  
    location_t loc
      = get_emission_location (sd.m_stmt, sd.m_snode->m_fun, *sd.m_d);
  
    /* Allow the pending_diagnostic to fix up the locations of events.  */
!   emission_path.fixup_locations (sd.m_d.get ());
  
    gcc_rich_location rich_loc (loc);
    rich_loc.set_path (&emission_path);
*************** diagnostic_manager::build_emission_path
*** 1457,1467 ****
  	      if (DECL_P (decl)
  		  && DECL_SOURCE_LOCATION (decl) != UNKNOWN_LOCATION)
  		{
! 		  emission_path->add_region_creation_event
! 		    (reg,
! 		     DECL_SOURCE_LOCATION (decl),
! 		     NULL_TREE,
! 		     0);
  		}
  	  }
  	}
--- 1475,1487 ----
  	      if (DECL_P (decl)
  		  && DECL_SOURCE_LOCATION (decl) != UNKNOWN_LOCATION)
  		{
! 		  emission_path->add_region_creation_events
! 		    (pb.get_pending_diagnostic (),
! 		     reg, NULL,
! 		     event_loc_info (DECL_SOURCE_LOCATION (decl),
! 				     NULL_TREE,
! 				     0),
! 		     m_verbosity > 3);
  		}
  	  }
  	}
*************** diagnostic_manager::build_emission_path
*** 1473,1478 ****
--- 1493,1564 ----
        const exploded_edge *eedge = epath.m_edges[i];
        add_events_for_eedge (pb, *eedge, emission_path, &interest);
      }
+   add_event_on_final_node (pb, epath.get_final_enode (),
+ 			   emission_path, &interest);
+ }
+ 
+ /* Emit a region_creation_event when requested on the last statement in
+    the path.
+ 
+    If a region_creation_event should be emitted on the last statement of the
+    path, we need to peek to the successors to get whether the final enode
+    created a region.
+ */
+ 
+ void
+ diagnostic_manager::add_event_on_final_node (const path_builder &pb,
+ 					     const exploded_node *final_enode,
+ 					     checker_path *emission_path,
+ 					     interesting_t *interest) const
+ {
+   const program_point &src_point = final_enode->get_point ();
+   const int src_stack_depth = src_point.get_stack_depth ();
+   const program_state &src_state = final_enode->get_state ();
+   const region_model *src_model = src_state.m_region_model;
+ 
+   unsigned j;
+   exploded_edge *e;
+   FOR_EACH_VEC_ELT (final_enode->m_succs, j, e)
+   {
+     exploded_node *dst = e->m_dest;
+     const program_state &dst_state = dst->get_state ();
+     const region_model *dst_model = dst_state.m_region_model;
+     if (src_model->get_dynamic_extents ()
+ 	!= dst_model->get_dynamic_extents ())
+       {
+ 	unsigned i;
+ 	const region *reg;
+ 	bool emitted = false;
+ 	FOR_EACH_VEC_ELT (interest->m_region_creation, i, reg)
+ 	  {
+ 	    const region *base_reg = reg->get_base_region ();
+ 	    const svalue *old_extents
+ 	= src_model->get_dynamic_extents (base_reg);
+ 	    const svalue *new_extents
+ 	= dst_model->get_dynamic_extents (base_reg);
+ 	    if (old_extents == NULL && new_extents != NULL)
+ 	      switch (base_reg->get_kind ())
+ 		{
+ 		default:
+ 		  break;
+ 		case RK_HEAP_ALLOCATED:
+ 		case RK_ALLOCA:
+ 		  emission_path->add_region_creation_events
+ 		    (pb.get_pending_diagnostic (),
+ 		     reg,
+ 		     dst_model,
+ 		     event_loc_info (src_point.get_location (),
+ 				     src_point.get_fndecl (),
+ 				     src_stack_depth),
+ 		     false);
+ 		  emitted = true;
+ 		  break;
+ 		}
+ 	  }
+ 	if (emitted)
+ 	  break;
+       }
+   }
  }
  
  /* Subclass of state_change_visitor that creates state_change_event
*************** public:
*** 1492,1498 ****
    bool on_global_state_change (const state_machine &sm,
  			       state_machine::state_t src_sm_val,
  			       state_machine::state_t dst_sm_val)
!     FINAL OVERRIDE
    {
      if (&sm != m_pb.get_sm ())
        return false;
--- 1578,1584 ----
    bool on_global_state_change (const state_machine &sm,
  			       state_machine::state_t src_sm_val,
  			       state_machine::state_t dst_sm_val)
!     final override
    {
      if (&sm != m_pb.get_sm ())
        return false;
*************** public:
*** 1506,1520 ****
  
      int stack_depth = src_stack_depth;
  
!     m_emission_path->add_event (new state_change_event (supernode,
! 							stmt,
! 							stack_depth,
! 							sm,
! 							NULL,
! 							src_sm_val,
! 							dst_sm_val,
! 							NULL,
! 							dst_state));
      return false;
    }
  
--- 1592,1608 ----
  
      int stack_depth = src_stack_depth;
  
!     m_emission_path->add_event
!       (make_unique<state_change_event> (supernode,
! 					stmt,
! 					stack_depth,
! 					sm,
! 					NULL,
! 					src_sm_val,
! 					dst_sm_val,
! 					NULL,
! 					dst_state,
! 					src_node));
      return false;
    }
  
*************** public:
*** 1522,1528 ****
  			state_machine::state_t src_sm_val,
  			state_machine::state_t dst_sm_val,
  			const svalue *sval,
! 			const svalue *dst_origin_sval) FINAL OVERRIDE
    {
      if (&sm != m_pb.get_sm ())
        return false;
--- 1610,1616 ----
  			state_machine::state_t src_sm_val,
  			state_machine::state_t dst_sm_val,
  			const svalue *sval,
! 			const svalue *dst_origin_sval) final override
    {
      if (&sm != m_pb.get_sm ())
        return false;
*************** public:
*** 1549,1563 ****
      if (!stmt)
        return false;
  
!     m_emission_path->add_event (new state_change_event (supernode,
! 							stmt,
! 							stack_depth,
! 							sm,
! 							sval,
! 							src_sm_val,
! 							dst_sm_val,
! 							dst_origin_sval,
! 							dst_state));
      return false;
    }
  
--- 1637,1653 ----
      if (!stmt)
        return false;
  
!     m_emission_path->add_event
!       (make_unique<state_change_event> (supernode,
! 					stmt,
! 					stack_depth,
! 					sm,
! 					sval,
! 					src_sm_val,
! 					dst_sm_val,
! 					dst_origin_sval,
! 					dst_state,
! 					src_node));
      return false;
    }
  
*************** struct null_assignment_sm_context : publ
*** 1650,1662 ****
    {
    }
  
!   tree get_fndecl_for_call (const gcall */*call*/) FINAL OVERRIDE
    {
      return NULL_TREE;
    }
  
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    tree var) FINAL OVERRIDE
    {
      const svalue *var_old_sval
        = m_old_state->m_region_model->get_rvalue (var, NULL);
--- 1740,1752 ----
    {
    }
  
!   tree get_fndecl_for_call (const gcall */*call*/) final override
    {
      return NULL_TREE;
    }
  
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    tree var) final override
    {
      const svalue *var_old_sval
        = m_old_state->m_region_model->get_rvalue (var, NULL);
*************** struct null_assignment_sm_context : publ
*** 1669,1675 ****
    }
  
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    const svalue *sval) FINAL OVERRIDE
    {
      const sm_state_map *old_smap = m_old_state->m_checker_states[m_sm_idx];
      state_machine::state_t current = old_smap->get_state (sval, m_ext_state);
--- 1759,1765 ----
    }
  
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    const svalue *sval) final override
    {
      const sm_state_map *old_smap = m_old_state->m_checker_states[m_sm_idx];
      state_machine::state_t current = old_smap->get_state (sval, m_ext_state);
*************** struct null_assignment_sm_context : publ
*** 1679,1758 ****
    void set_next_state (const gimple *stmt,
  		       tree var,
  		       state_machine::state_t to,
! 		       tree origin ATTRIBUTE_UNUSED) FINAL OVERRIDE
    {
      state_machine::state_t from = get_state (stmt, var);
      if (from != m_sm.get_start_state ())
        return;
  
      const svalue *var_new_sval
        = m_new_state->m_region_model->get_rvalue (var, NULL);
      const supernode *supernode = m_point->get_supernode ();
      int stack_depth = m_point->get_stack_depth ();
  
!     m_emission_path->add_event (new state_change_event (supernode,
! 							m_stmt,
! 							stack_depth,
! 							m_sm,
! 							var_new_sval,
! 							from, to,
! 							NULL,
! 							*m_new_state));
    }
  
    void set_next_state (const gimple *stmt,
  		       const svalue *sval,
  		       state_machine::state_t to,
! 		       tree origin ATTRIBUTE_UNUSED) FINAL OVERRIDE
    {
      state_machine::state_t from = get_state (stmt, sval);
      if (from != m_sm.get_start_state ())
        return;
  
      const supernode *supernode = m_point->get_supernode ();
      int stack_depth = m_point->get_stack_depth ();
  
!     m_emission_path->add_event (new state_change_event (supernode,
! 							m_stmt,
! 							stack_depth,
! 							m_sm,
! 							sval,
! 							from, to,
! 							NULL,
! 							*m_new_state));
    }
  
    void warn (const supernode *, const gimple *,
! 	     tree, pending_diagnostic *d) FINAL OVERRIDE
    {
-     delete d;
    }
  
!   tree get_diagnostic_tree (tree expr) FINAL OVERRIDE
    {
      return expr;
    }
  
!   tree get_diagnostic_tree (const svalue *sval) FINAL OVERRIDE
    {
      return m_new_state->m_region_model->get_representative_tree (sval);
    }
  
!   state_machine::state_t get_global_state () const FINAL OVERRIDE
    {
      return 0;
    }
  
!   void set_global_state (state_machine::state_t) FINAL OVERRIDE
    {
      /* No-op.  */
    }
  
!   void on_custom_transition (custom_transition *) FINAL OVERRIDE
    {
    }
  
!   tree is_zero_assignment (const gimple *stmt) FINAL OVERRIDE
    {
      const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
      if (!assign_stmt)
--- 1769,1860 ----
    void set_next_state (const gimple *stmt,
  		       tree var,
  		       state_machine::state_t to,
! 		       tree origin ATTRIBUTE_UNUSED) final override
    {
      state_machine::state_t from = get_state (stmt, var);
      if (from != m_sm.get_start_state ())
        return;
+     if (!is_transition_to_null (to))
+       return;
  
      const svalue *var_new_sval
        = m_new_state->m_region_model->get_rvalue (var, NULL);
+ 
      const supernode *supernode = m_point->get_supernode ();
      int stack_depth = m_point->get_stack_depth ();
  
!     m_emission_path->add_event
!       (make_unique<state_change_event> (supernode,
! 					m_stmt,
! 					stack_depth,
! 					m_sm,
! 					var_new_sval,
! 					from, to,
! 					NULL,
! 					*m_new_state,
! 					NULL));
    }
  
    void set_next_state (const gimple *stmt,
  		       const svalue *sval,
  		       state_machine::state_t to,
! 		       tree origin ATTRIBUTE_UNUSED) final override
    {
      state_machine::state_t from = get_state (stmt, sval);
      if (from != m_sm.get_start_state ())
        return;
+     if (!is_transition_to_null (to))
+       return;
  
      const supernode *supernode = m_point->get_supernode ();
      int stack_depth = m_point->get_stack_depth ();
  
!     m_emission_path->add_event
!       (make_unique<state_change_event> (supernode,
! 					m_stmt,
! 					stack_depth,
! 					m_sm,
! 					sval,
! 					from, to,
! 					NULL,
! 					*m_new_state,
! 					NULL));
    }
  
    void warn (const supernode *, const gimple *,
! 	     tree, std::unique_ptr<pending_diagnostic>) final override
!   {
!   }
!   void warn (const supernode *, const gimple *,
! 	     const svalue *, std::unique_ptr<pending_diagnostic>) final override
    {
    }
  
!   tree get_diagnostic_tree (tree expr) final override
    {
      return expr;
    }
  
!   tree get_diagnostic_tree (const svalue *sval) final override
    {
      return m_new_state->m_region_model->get_representative_tree (sval);
    }
  
!   state_machine::state_t get_global_state () const final override
    {
      return 0;
    }
  
!   void set_global_state (state_machine::state_t) final override
    {
      /* No-op.  */
    }
  
!   void on_custom_transition (custom_transition *) final override
    {
    }
  
!   tree is_zero_assignment (const gimple *stmt) final override
    {
      const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
      if (!assign_stmt)
*************** struct null_assignment_sm_context : publ
*** 1765,1774 ****
      return NULL_TREE;
    }
  
!   const program_state *get_old_program_state () const FINAL OVERRIDE
    {
      return m_old_state;
    }
  
    const program_state *m_old_state;
    const program_state *m_new_state;
--- 1867,1887 ----
      return NULL_TREE;
    }
  
!   const program_state *get_old_program_state () const final override
    {
      return m_old_state;
    }
+   const program_state *get_new_program_state () const final override
+   {
+     return m_new_state;
+   }
+ 
+   /* We only care about transitions to the "null" state
+      within sm-malloc.  Special-case this.  */
+   static bool is_transition_to_null (state_machine::state_t s)
+   {
+     return !strcmp (s->get_name (), "null");
+   }
  
    const program_state *m_old_state;
    const program_state *m_new_state;
*************** diagnostic_manager::add_events_for_eedge
*** 1846,1856 ****
        /* Add function entry events.  */
        if (dst_point.get_supernode ()->entry_p ())
  	{
! 	  emission_path->add_event
! 	    (new function_entry_event
! 	     (dst_point.get_supernode ()->get_start_location (),
! 	      dst_point.get_fndecl (),
! 	      dst_stack_depth));
  	  /* Create region_creation_events for on-stack regions within
  	     this frame.  */
  	  if (interest)
--- 1959,1966 ----
        /* Add function entry events.  */
        if (dst_point.get_supernode ()->entry_p ())
  	{
! 	  pb.get_pending_diagnostic ()->add_function_entry_event
! 	    (eedge, emission_path);
  	  /* Create region_creation_events for on-stack regions within
  	     this frame.  */
  	  if (interest)
*************** diagnostic_manager::add_events_for_eedge
*** 1866,1876 ****
  			if (DECL_P (decl)
  			    && DECL_SOURCE_LOCATION (decl) != UNKNOWN_LOCATION)
  			  {
! 			    emission_path->add_region_creation_event
! 			      (reg,
! 			       DECL_SOURCE_LOCATION (decl),
! 			       dst_point.get_fndecl (),
! 			       dst_stack_depth);
  			  }
  		    }
  	    }
--- 1976,1988 ----
  			if (DECL_P (decl)
  			    && DECL_SOURCE_LOCATION (decl) != UNKNOWN_LOCATION)
  			  {
! 			    emission_path->add_region_creation_events
! 			      (pb.get_pending_diagnostic (),
! 			       reg, dst_state.m_region_model,
! 			       event_loc_info (DECL_SOURCE_LOCATION (decl),
! 					       dst_point.get_fndecl (),
! 					       dst_stack_depth),
! 			       m_verbosity > 3);
  			  }
  		    }
  	    }
*************** diagnostic_manager::add_events_for_eedge
*** 1882,1903 ****
  	const gcall *call = dyn_cast <const gcall *> (stmt);
  	if (call && is_setjmp_call_p (call))
  	  emission_path->add_event
! 	    (new setjmp_event (stmt->location,
! 			       dst_node,
! 			       dst_point.get_fndecl (),
! 			       dst_stack_depth,
! 			       call));
  	else
  	  emission_path->add_event
! 	    (new statement_event (stmt,
! 				  dst_point.get_fndecl (),
! 				  dst_stack_depth, dst_state));
  
  	/* Create state change events for assignment to NULL.
  	   Iterate through the stmts in dst_enode, adding state change
  	   events for them.  */
  	if (dst_state.m_region_model)
  	  {
  	    program_state iter_state (dst_state);
  	    program_point iter_point (dst_point);
  	    while (1)
--- 1994,2016 ----
  	const gcall *call = dyn_cast <const gcall *> (stmt);
  	if (call && is_setjmp_call_p (call))
  	  emission_path->add_event
! 	    (make_unique<setjmp_event> (event_loc_info (stmt->location,
! 							dst_point.get_fndecl (),
! 							dst_stack_depth),
! 					dst_node,
! 					call));
  	else
  	  emission_path->add_event
! 	    (make_unique<statement_event> (stmt,
! 					   dst_point.get_fndecl (),
! 					   dst_stack_depth, dst_state));
  
  	/* Create state change events for assignment to NULL.
  	   Iterate through the stmts in dst_enode, adding state change
  	   events for them.  */
  	if (dst_state.m_region_model)
  	  {
+ 	    log_scope s (get_logger (), "processing run of stmts");
  	    program_state iter_state (dst_state);
  	    program_point iter_point (dst_point);
  	    while (1)
*************** diagnostic_manager::add_events_for_eedge
*** 1960,1970 ****
  		    break;
  		  case RK_HEAP_ALLOCATED:
  		  case RK_ALLOCA:
! 		    emission_path->add_region_creation_event
! 		      (reg,
! 		       src_point.get_location (),
! 		       src_point.get_fndecl (),
! 		       src_stack_depth);
  		    break;
  		  }
  	    }
--- 2073,2085 ----
  		    break;
  		  case RK_HEAP_ALLOCATED:
  		  case RK_ALLOCA:
! 		    emission_path->add_region_creation_events
! 		      (pb.get_pending_diagnostic (),
! 		       reg, dst_model,
! 		       event_loc_info (src_point.get_location (),
! 				       src_point.get_fndecl (),
! 				       src_stack_depth),
! 		       m_verbosity > 3);
  		    break;
  		  }
  	    }
*************** diagnostic_manager::add_events_for_eedge
*** 1980,1990 ****
  		 "this path would have been rejected as infeasible"
  		 " at this edge: ");
        pb.get_feasibility_problem ()->dump_to_pp (&pp);
!       emission_path->add_event (new precanned_custom_event
! 				(dst_point.get_location (),
! 				 dst_point.get_fndecl (),
! 				 dst_stack_depth,
! 				 pp_formatted_text (&pp)));
      }
  }
  
--- 2095,2106 ----
  		 "this path would have been rejected as infeasible"
  		 " at this edge: ");
        pb.get_feasibility_problem ()->dump_to_pp (&pp);
!       emission_path->add_event
! 	(make_unique<precanned_custom_event>
! 	 (event_loc_info (dst_point.get_location (),
! 			  dst_point.get_fndecl (),
! 			  dst_stack_depth),
! 	  pp_formatted_text (&pp)));
      }
  }
  
*************** diagnostic_manager::add_events_for_super
*** 2095,2124 ****
      case SUPEREDGE_CFG_EDGE:
        {
  	emission_path->add_event
! 	  (new start_cfg_edge_event (eedge,
! 			       (last_stmt
! 				? last_stmt->location
! 				: UNKNOWN_LOCATION),
! 			       src_point.get_fndecl (),
! 			       src_stack_depth));
  	emission_path->add_event
! 	  (new end_cfg_edge_event (eedge,
! 				   dst_point.get_supernode ()->get_start_location (),
! 				   dst_point.get_fndecl (),
! 				   dst_stack_depth));
        }
        break;
  
      case SUPEREDGE_CALL:
!       {
! 	emission_path->add_event
! 	  (new call_event (eedge,
! 			   (last_stmt
! 			    ? last_stmt->location
! 			    : UNKNOWN_LOCATION),
! 			   src_point.get_fndecl (),
! 			   src_stack_depth));
!       }
        break;
  
      case SUPEREDGE_INTRAPROCEDURAL_CALL:
--- 2211,2232 ----
      case SUPEREDGE_CFG_EDGE:
        {
  	emission_path->add_event
! 	  (make_unique<start_cfg_edge_event>
! 	   (eedge,
! 	    event_loc_info (last_stmt ? last_stmt->location : UNKNOWN_LOCATION,
! 			    src_point.get_fndecl (),
! 			    src_stack_depth)));
  	emission_path->add_event
! 	  (make_unique<end_cfg_edge_event>
! 	    (eedge,
! 	     event_loc_info (dst_point.get_supernode ()->get_start_location (),
! 			     dst_point.get_fndecl (),
! 			     dst_stack_depth)));
        }
        break;
  
      case SUPEREDGE_CALL:
!       pd->add_call_event (eedge, emission_path);
        break;
  
      case SUPEREDGE_INTRAPROCEDURAL_CALL:
*************** diagnostic_manager::add_events_for_super
*** 2126,2137 ****
  	/* TODO: add a subclass for this, or generate events for the
  	   summary.  */
  	emission_path->add_event
! 	  (new debug_event ((last_stmt
! 			     ? last_stmt->location
! 			     : UNKNOWN_LOCATION),
! 			    src_point.get_fndecl (),
! 			    src_stack_depth,
! 			    "call summary"));
        }
        break;
  
--- 2234,2245 ----
  	/* TODO: add a subclass for this, or generate events for the
  	   summary.  */
  	emission_path->add_event
! 	  (make_unique<debug_event> (event_loc_info (last_stmt
! 						     ? last_stmt->location
! 						     : UNKNOWN_LOCATION,
! 						     src_point.get_fndecl (),
! 						     src_stack_depth),
! 				     "call summary"));
        }
        break;
  
*************** diagnostic_manager::add_events_for_super
*** 2142,2153 ****
  
  	const gcall *call_stmt = return_edge->get_call_stmt ();
  	emission_path->add_event
! 	  (new return_event (eedge,
! 			     (call_stmt
! 			      ? call_stmt->location
! 			      : UNKNOWN_LOCATION),
! 			     dst_point.get_fndecl (),
! 			     dst_stack_depth));
        }
        break;
      }
--- 2250,2261 ----
  
  	const gcall *call_stmt = return_edge->get_call_stmt ();
  	emission_path->add_event
! 	  (make_unique<return_event> (eedge,
! 				      event_loc_info (call_stmt
! 						      ? call_stmt->location
! 						      : UNKNOWN_LOCATION,
! 						      dst_point.get_fndecl (),
! 						      dst_stack_depth)));
        }
        break;
      }
*************** diagnostic_manager::prune_for_sm_diagnos
*** 2232,2239 ****
  		  label_text sval_desc = sval->get_desc ();
  		  log ("considering event %i (%s), with sval: %qs, state: %qs",
  		       idx, event_kind_to_string (base_event->m_kind),
! 		       sval_desc.m_buffer, state->get_name ());
! 		  sval_desc.maybe_free ();
  		}
  	      else
  		log ("considering event %i (%s), with global state: %qs",
--- 2340,2346 ----
  		  label_text sval_desc = sval->get_desc ();
  		  log ("considering event %i (%s), with sval: %qs, state: %qs",
  		       idx, event_kind_to_string (base_event->m_kind),
! 		       sval_desc.get (), state->get_name ());
  		}
  	      else
  		log ("considering event %i (%s), with global state: %qs",
*************** diagnostic_manager::prune_for_sm_diagnos
*** 2299,2308 ****
  			  = state_change->m_origin->get_desc ();
  			log ("event %i:"
  			     " switching var of interest from %qs to %qs",
! 			     idx, sval_desc.m_buffer,
! 			     origin_sval_desc.m_buffer);
! 			sval_desc.maybe_free ();
! 			origin_sval_desc.maybe_free ();
  		      }
  		    sval = state_change->m_origin;
  		  }
--- 2406,2413 ----
  			  = state_change->m_origin->get_desc ();
  			log ("event %i:"
  			     " switching var of interest from %qs to %qs",
! 			     idx, sval_desc.get (),
! 			     origin_sval_desc.get ());
  		      }
  		    sval = state_change->m_origin;
  		  }
*************** diagnostic_manager::prune_for_sm_diagnos
*** 2324,2336 ****
  			    label_text sval_desc = sval->get_desc ();
  			    log ("filtering event %i:"
  				 " state change to %qs unrelated to %qs",
! 				 idx, change_sval_desc.m_buffer,
! 				 sval_desc.m_buffer);
  			  }
  			else
  			  log ("filtering event %i: state change to %qs",
! 			       idx, change_sval_desc.m_buffer);
! 			change_sval_desc.maybe_free ();
  		      }
  		    else
  		      log ("filtering event %i: global state change", idx);
--- 2429,2440 ----
  			    label_text sval_desc = sval->get_desc ();
  			    log ("filtering event %i:"
  				 " state change to %qs unrelated to %qs",
! 				 idx, change_sval_desc.get (),
! 				 sval_desc.get ());
  			  }
  			else
  			  log ("filtering event %i: state change to %qs",
! 			       idx, change_sval_desc.get ());
  		      }
  		    else
  		      log ("filtering event %i: global state change", idx);
*************** diagnostic_manager::prune_for_sm_diagnos
*** 2399,2406 ****
  		    log ("event %i:"
  			 " recording critical state for %qs at call"
  			 " from %qE in callee to %qE in caller",
! 			 idx, sval_desc.m_buffer, callee_var, caller_var);
! 		    sval_desc.maybe_free ();
  		  }
  		if (expr.param_p ())
  		  event->record_critical_state (caller_var, state);
--- 2503,2509 ----
  		    log ("event %i:"
  			 " recording critical state for %qs at call"
  			 " from %qE in callee to %qE in caller",
! 			 idx, sval_desc.get (), callee_var, caller_var);
  		  }
  		if (expr.param_p ())
  		  event->record_critical_state (caller_var, state);
*************** diagnostic_manager::prune_for_sm_diagnos
*** 2443,2450 ****
  			log ("event %i:"
  			     " recording critical state for %qs at return"
  			     " from %qE in caller to %qE in callee",
! 			     idx, sval_desc.m_buffer, callee_var, callee_var);
! 			sval_desc.maybe_free ();
  		      }
  		    if (expr.return_value_p ())
  		      event->record_critical_state (callee_var, state);
--- 2546,2552 ----
  			log ("event %i:"
  			     " recording critical state for %qs at return"
  			     " from %qE in caller to %qE in callee",
! 			     idx, sval_desc.get (), callee_var, callee_var);
  		      }
  		    if (expr.return_value_p ())
  		      event->record_critical_state (callee_var, state);
*************** diagnostic_manager::prune_for_sm_diagnos
*** 2453,2458 ****
--- 2555,2565 ----
  	  }
  	  break;
  
+ 	case EK_INLINED_CALL:
+ 	  /* We don't expect to see these yet, as they're added later.
+ 	     We'd want to keep them around.  */
+ 	  break;
+ 
  	case EK_SETJMP:
  	  /* TODO: only show setjmp_events that matter i.e. those for which
  	     there is a later rewind event using them.  */
*************** diagnostic_manager::prune_interproc_even
*** 2522,2529 ****
  		    (path->get_checker_event (idx)->get_desc (false));
  		  log ("filtering events %i-%i:"
  		       " irrelevant call/entry/return: %s",
! 		       idx, idx + 2, desc.m_buffer);
! 		  desc.maybe_free ();
  		}
  	      path->delete_event (idx + 2);
  	      path->delete_event (idx + 1);
--- 2629,2635 ----
  		    (path->get_checker_event (idx)->get_desc (false));
  		  log ("filtering events %i-%i:"
  		       " irrelevant call/entry/return: %s",
! 		       idx, idx + 2, desc.get ());
  		}
  	      path->delete_event (idx + 2);
  	      path->delete_event (idx + 1);
*************** diagnostic_manager::prune_interproc_even
*** 2545,2552 ****
  		    (path->get_checker_event (idx)->get_desc (false));
  		  log ("filtering events %i-%i:"
  		       " irrelevant call/return: %s",
! 		       idx, idx + 1, desc.m_buffer);
! 		  desc.maybe_free ();
  		}
  	      path->delete_event (idx + 1);
  	      path->delete_event (idx);
--- 2651,2657 ----
  		    (path->get_checker_event (idx)->get_desc (false));
  		  log ("filtering events %i-%i:"
  		       " irrelevant call/return: %s",
! 		       idx, idx + 1, desc.get ());
  		}
  	      path->delete_event (idx + 1);
  	      path->delete_event (idx);
*************** diagnostic_manager::consolidate_conditio
*** 2692,2706 ****
  		   start_idx, next_idx - 1, start_idx, start_idx +1);
  	      start_consolidated_cfg_edges_event *new_start_ev
  		= new start_consolidated_cfg_edges_event
! 		(old_start_ev->get_location (),
! 		 old_start_ev->get_fndecl (),
! 		 old_start_ev->get_stack_depth (),
  		 edge_sense);
  	      checker_event *new_end_ev
  		= new end_consolidated_cfg_edges_event
! 		(old_end_ev->get_location (),
! 		 old_end_ev->get_fndecl (),
! 		 old_end_ev->get_stack_depth ());
  	      path->replace_event (start_idx, new_start_ev);
  	      path->replace_event (start_idx + 1, new_end_ev);
  	      path->delete_events (start_idx + 2, next_idx - (start_idx + 2));
--- 2797,2811 ----
  		   start_idx, next_idx - 1, start_idx, start_idx +1);
  	      start_consolidated_cfg_edges_event *new_start_ev
  		= new start_consolidated_cfg_edges_event
! 		(event_loc_info (old_start_ev->get_location (),
! 				 old_start_ev->get_fndecl (),
! 				 old_start_ev->get_stack_depth ()),
  		 edge_sense);
  	      checker_event *new_end_ev
  		= new end_consolidated_cfg_edges_event
! 		(event_loc_info (old_end_ev->get_location (),
! 				 old_end_ev->get_fndecl (),
! 				 old_end_ev->get_stack_depth ()));
  	      path->replace_event (start_idx, new_start_ev);
  	      path->replace_event (start_idx + 1, new_end_ev);
  	      path->delete_events (start_idx + 2, next_idx - (start_idx + 2));
diff -Nrcpad gcc-12.2.0/gcc/analyzer/diagnostic-manager.h gcc-13.1.0/gcc/analyzer/diagnostic-manager.h
*** gcc-12.2.0/gcc/analyzer/diagnostic-manager.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/diagnostic-manager.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for saving, deduplicating, and emitting analyzer diagnostics.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 33,48 ****
    saved_diagnostic (const state_machine *sm,
  		    const exploded_node *enode,
  		    const supernode *snode, const gimple *stmt,
! 		    stmt_finder *stmt_finder,
  		    tree var, const svalue *sval,
  		    state_machine::state_t state,
! 		    pending_diagnostic *d,
  		    unsigned idx);
-   ~saved_diagnostic ();
  
    bool operator== (const saved_diagnostic &other) const;
  
!   void add_note (pending_note *pn);
  
    json::object *to_json () const;
  
--- 33,47 ----
    saved_diagnostic (const state_machine *sm,
  		    const exploded_node *enode,
  		    const supernode *snode, const gimple *stmt,
! 		    const stmt_finder *stmt_finder,
  		    tree var, const svalue *sval,
  		    state_machine::state_t state,
! 		    std::unique_ptr<pending_diagnostic> d,
  		    unsigned idx);
  
    bool operator== (const saved_diagnostic &other) const;
  
!   void add_note (std::unique_ptr<pending_note> pn);
  
    json::object *to_json () const;
  
*************** public:
*** 51,61 ****
  
    const feasibility_problem *get_feasibility_problem () const
    {
!     return m_problem;
    }
  
    bool calc_best_epath (epath_finder *pf);
!   const exploded_path *get_best_epath () const { return m_best_epath; }
    unsigned get_epath_length () const;
  
    void add_duplicate (saved_diagnostic *other);
--- 50,60 ----
  
    const feasibility_problem *get_feasibility_problem () const
    {
!     return m_problem.get ();
    }
  
    bool calc_best_epath (epath_finder *pf);
!   const exploded_path *get_best_epath () const { return m_best_epath.get (); }
    unsigned get_epath_length () const;
  
    void add_duplicate (saved_diagnostic *other);
*************** public:
*** 72,90 ****
    const exploded_node *m_enode;
    const supernode *m_snode;
    const gimple *m_stmt;
!   stmt_finder *m_stmt_finder;
    tree m_var;
    const svalue *m_sval;
    state_machine::state_t m_state;
!   pending_diagnostic *m_d; // owned
    const exploded_edge *m_trailing_eedge;
  
  private:
    DISABLE_COPY_AND_ASSIGN (saved_diagnostic);
  
    unsigned m_idx;
!   exploded_path *m_best_epath; // owned
!   feasibility_problem *m_problem; // owned
  
    auto_vec<const saved_diagnostic *> m_duplicates;
    auto_delete_vec <pending_note> m_notes;
--- 71,89 ----
    const exploded_node *m_enode;
    const supernode *m_snode;
    const gimple *m_stmt;
!   std::unique_ptr<stmt_finder> m_stmt_finder;
    tree m_var;
    const svalue *m_sval;
    state_machine::state_t m_state;
!   std::unique_ptr<pending_diagnostic> m_d;
    const exploded_edge *m_trailing_eedge;
  
  private:
    DISABLE_COPY_AND_ASSIGN (saved_diagnostic);
  
    unsigned m_idx;
!   std::unique_ptr<exploded_path> m_best_epath;
!   std::unique_ptr<feasibility_problem> m_problem;
  
    auto_vec<const saved_diagnostic *> m_duplicates;
    auto_delete_vec <pending_note> m_notes;
*************** public:
*** 113,130 ****
    bool add_diagnostic (const state_machine *sm,
  		       exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
! 		       stmt_finder *finder,
  		       tree var,
  		       const svalue *sval,
  		       state_machine::state_t state,
! 		       pending_diagnostic *d);
  
    bool add_diagnostic (exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
! 		       stmt_finder *finder,
! 		       pending_diagnostic *d);
  
!   void add_note (pending_note *pn);
  
    void emit_saved_diagnostics (const exploded_graph &eg);
  
--- 112,129 ----
    bool add_diagnostic (const state_machine *sm,
  		       exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
! 		       const stmt_finder *finder,
  		       tree var,
  		       const svalue *sval,
  		       state_machine::state_t state,
! 		       std::unique_ptr<pending_diagnostic> d);
  
    bool add_diagnostic (exploded_node *enode,
  		       const supernode *snode, const gimple *stmt,
! 		       const stmt_finder *finder,
! 		       std::unique_ptr<pending_diagnostic> d);
  
!   void add_note (std::unique_ptr<pending_note> pn);
  
    void emit_saved_diagnostics (const exploded_graph &eg);
  
*************** private:
*** 149,154 ****
--- 148,158 ----
  			    const exploded_path &epath,
  			    checker_path *emission_path) const;
  
+   void add_event_on_final_node (const path_builder &pb,
+ 				const exploded_node *final_enode,
+ 				checker_path *emission_path,
+ 				interesting_t *interest) const;
+ 
    void add_events_for_eedge (const path_builder &pb,
  			     const exploded_edge &eedge,
  			     checker_path *emission_path,
diff -Nrcpad gcc-12.2.0/gcc/analyzer/engine.cc gcc-13.1.0/gcc/analyzer/engine.cc
*** gcc-12.2.0/gcc/analyzer/engine.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/engine.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* The analysis "engine".
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* The analysis "engine".
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 22,33 ****
  #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "fold-const.h"
  #include "gcc-rich-location.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
- #include "shortest-paths.h"
  #include "diagnostic-core.h"
  #include "diagnostic-event-id.h"
  #include "diagnostic-path.h"
--- 22,31 ----
  #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "fold-const.h"
  #include "gcc-rich-location.h"
  #include "diagnostic-core.h"
  #include "diagnostic-event-id.h"
  #include "diagnostic-path.h"
*************** along with GCC; see the file COPYING3.
*** 35,44 ****
  #include "pretty-print.h"
  #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
  #include "ordered-hash-map.h"
- #include "selftest.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/call-string.h"
--- 33,39 ----
*************** along with GCC; see the file COPYING3.
*** 71,76 ****
--- 66,73 ----
  #include "stringpool.h"
  #include "attribs.h"
  #include "tree-dfa.h"
+ #include "analyzer/known-function-manager.h"
+ #include "analyzer/call-summary.h"
  
  /* For an overview, see gcc/doc/analyzer.texi.  */
  
*************** impl_region_model_context (program_state
*** 118,152 ****
  }
  
  bool
! impl_region_model_context::warn (pending_diagnostic *d)
  {
    LOG_FUNC (get_logger ());
    if (m_stmt == NULL && m_stmt_finder == NULL)
      {
        if (get_logger ())
  	get_logger ()->log ("rejecting diagnostic: no stmt");
-       delete d;
        return false;
      }
    if (m_eg)
-     return m_eg->get_diagnostic_manager ().add_diagnostic
-       (m_enode_for_diag, m_enode_for_diag->get_supernode (),
-        m_stmt, m_stmt_finder, d);
-   else
      {
!       delete d;
!       return false;
      }
  }
  
  void
! impl_region_model_context::add_note (pending_note *pn)
  {
    LOG_FUNC (get_logger ());
    if (m_eg)
!     m_eg->get_diagnostic_manager ().add_note (pn);
!   else
!     delete pn;
  }
  
  void
--- 115,152 ----
  }
  
  bool
! impl_region_model_context::warn (std::unique_ptr<pending_diagnostic> d)
  {
    LOG_FUNC (get_logger ());
    if (m_stmt == NULL && m_stmt_finder == NULL)
      {
        if (get_logger ())
  	get_logger ()->log ("rejecting diagnostic: no stmt");
        return false;
      }
    if (m_eg)
      {
!       bool terminate_path = d->terminate_path_p ();
!       if (m_eg->get_diagnostic_manager ().add_diagnostic
! 	  (m_enode_for_diag, m_enode_for_diag->get_supernode (),
! 	   m_stmt, m_stmt_finder, std::move (d)))
! 	{
! 	  if (m_path_ctxt
! 	      && terminate_path
! 	      && flag_analyzer_suppress_followups)
! 	    m_path_ctxt->terminate_path ();
! 	  return true;
! 	}
      }
+   return false;
  }
  
  void
! impl_region_model_context::add_note (std::unique_ptr<pending_note> pn)
  {
    LOG_FUNC (get_logger ());
    if (m_eg)
!     m_eg->get_diagnostic_manager ().add_note (std::move (pn));
  }
  
  void
*************** void
*** 170,175 ****
--- 170,177 ----
  impl_region_model_context::on_unknown_change (const svalue *sval,
  					      bool is_mutable)
  {
+   if (!sval->can_have_associated_state_p ())
+     return;
    for (sm_state_map *smap : m_new_state->m_checker_states)
      smap->on_unknown_change (sval, is_mutable, m_ext_state);
  }
*************** impl_region_model_context::purge_state_i
*** 200,211 ****
  }
  
  void
! impl_region_model_context::bifurcate (custom_edge_info *info)
  {
    if (m_path_ctxt)
!     m_path_ctxt->bifurcate (info);
!   else
!     delete info;
  }
  
  void
--- 202,211 ----
  }
  
  void
! impl_region_model_context::bifurcate (std::unique_ptr<custom_edge_info> info)
  {
    if (m_path_ctxt)
!     m_path_ctxt->bifurcate (std::move (info));
  }
  
  void
*************** impl_region_model_context::terminate_pat
*** 215,253 ****
      return m_path_ctxt->terminate_path ();
  }
  
- bool
- impl_region_model_context::get_malloc_map (sm_state_map **out_smap,
- 					   const state_machine **out_sm,
- 					   unsigned *out_sm_idx)
- {
-   unsigned malloc_sm_idx;
-   if (!m_ext_state.get_sm_idx_by_name ("malloc", &malloc_sm_idx))
-     return false;
- 
-   *out_smap = m_new_state->m_checker_states[malloc_sm_idx];
-   *out_sm = &m_ext_state.get_sm (malloc_sm_idx);
-   *out_sm_idx = malloc_sm_idx;
-   return true;
- }
- 
- bool
- impl_region_model_context::get_taint_map (sm_state_map **out_smap,
- 					  const state_machine **out_sm,
- 					  unsigned *out_sm_idx)
- {
-   if (!m_new_state)
-     return false;
- 
-   unsigned taint_sm_idx;
-   if (!m_ext_state.get_sm_idx_by_name ("taint", &taint_sm_idx))
-     return false;
- 
-   *out_smap = m_new_state->m_checker_states[taint_sm_idx];
-   *out_sm = &m_ext_state.get_sm (taint_sm_idx);
-   *out_sm_idx = taint_sm_idx;
-   return true;
- }
- 
  /* struct setjmp_record.  */
  
  int
--- 215,220 ----
*************** public:
*** 303,309 ****
  		   const sm_state_map *old_smap,
  		   sm_state_map *new_smap,
  		   path_context *path_ctxt,
! 		   stmt_finder *stmt_finder = NULL,
  		   bool unknown_side_effects = false)
    : sm_context (sm_idx, sm),
      m_logger (eg.get_logger ()),
--- 270,276 ----
  		   const sm_state_map *old_smap,
  		   sm_state_map *new_smap,
  		   path_context *path_ctxt,
! 		   const stmt_finder *stmt_finder = NULL,
  		   bool unknown_side_effects = false)
    : sm_context (sm_idx, sm),
      m_logger (eg.get_logger ()),
*************** public:
*** 318,324 ****
  
    logger *get_logger () const { return m_logger.get_logger (); }
  
!   tree get_fndecl_for_call (const gcall *call) FINAL OVERRIDE
    {
      impl_region_model_context old_ctxt
        (m_eg, m_enode_for_diag, NULL, NULL, NULL/*m_enode->get_state ()*/,
--- 285,291 ----
  
    logger *get_logger () const { return m_logger.get_logger (); }
  
!   tree get_fndecl_for_call (const gcall *call) final override
    {
      impl_region_model_context old_ctxt
        (m_eg, m_enode_for_diag, NULL, NULL, NULL/*m_enode->get_state ()*/,
*************** public:
*** 328,334 ****
    }
  
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    tree var)
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
--- 295,301 ----
    }
  
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    tree var) final override
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
*************** public:
*** 342,348 ****
      return current;
    }
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    const svalue *sval)
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
--- 309,315 ----
      return current;
    }
    state_machine::state_t get_state (const gimple *stmt ATTRIBUTE_UNUSED,
! 				    const svalue *sval) final override
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
*************** public:
*** 352,372 ****
    }
  
  
!   void set_next_state (const gimple *stmt,
  		       tree var,
  		       state_machine::state_t to,
! 		       tree origin)
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
-     impl_region_model_context new_ctxt (m_eg, m_enode_for_diag,
- 					m_old_state, m_new_state,
- 					NULL, NULL,
- 					stmt);
      const svalue *var_new_sval
!       = m_new_state->m_region_model->get_rvalue (var, &new_ctxt);
      const svalue *origin_new_sval
!       = m_new_state->m_region_model->get_rvalue (origin, &new_ctxt);
  
      /* We use the new sval here to avoid issues with uninitialized values.  */
      state_machine::state_t current
--- 319,335 ----
    }
  
  
!   void set_next_state (const gimple *,
  		       tree var,
  		       state_machine::state_t to,
! 		       tree origin) final override
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
      const svalue *var_new_sval
!       = m_new_state->m_region_model->get_rvalue (var, NULL);
      const svalue *origin_new_sval
!       = m_new_state->m_region_model->get_rvalue (origin, NULL);
  
      /* We use the new sval here to avoid issues with uninitialized values.  */
      state_machine::state_t current
*************** public:
*** 384,390 ****
    void set_next_state (const gimple *stmt,
  		       const svalue *sval,
  		       state_machine::state_t to,
! 		       tree origin)
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
--- 347,353 ----
    void set_next_state (const gimple *stmt,
  		       const svalue *sval,
  		       state_machine::state_t to,
! 		       tree origin) final override
    {
      logger * const logger = get_logger ();
      LOG_FUNC (logger);
*************** public:
*** 392,403 ****
        (m_eg, m_enode_for_diag, NULL, NULL, NULL/*m_enode->get_state ()*/,
         NULL, stmt);
  
-     impl_region_model_context new_ctxt (m_eg, m_enode_for_diag,
- 					m_old_state, m_new_state,
- 					NULL, NULL,
- 					stmt);
      const svalue *origin_new_sval
!       = m_new_state->m_region_model->get_rvalue (origin, &new_ctxt);
  
      state_machine::state_t current
        = m_old_smap->get_state (sval, m_eg.get_ext_state ());
--- 355,362 ----
        (m_eg, m_enode_for_diag, NULL, NULL, NULL/*m_enode->get_state ()*/,
         NULL, stmt);
  
      const svalue *origin_new_sval
!       = m_new_state->m_region_model->get_rvalue (origin, NULL);
  
      state_machine::state_t current
        = m_old_smap->get_state (sval, m_eg.get_ext_state ());
*************** public:
*** 417,438 ****
    }
  
    void warn (const supernode *snode, const gimple *stmt,
! 	     tree var, pending_diagnostic *d) FINAL OVERRIDE
    {
      LOG_FUNC (get_logger ());
!     gcc_assert (d); // take ownership
!     impl_region_model_context old_ctxt
!       (m_eg, m_enode_for_diag, m_old_state, m_new_state, NULL, NULL, NULL);
! 
      const svalue *var_old_sval
!       = m_old_state->m_region_model->get_rvalue (var, &old_ctxt);
      state_machine::state_t current
        = (var
  	 ? m_old_smap->get_state (var_old_sval, m_eg.get_ext_state ())
  	 : m_old_smap->get_global_state ());
      m_eg.get_diagnostic_manager ().add_diagnostic
        (&m_sm, m_enode_for_diag, snode, stmt, m_stmt_finder,
!        var, var_old_sval, current, d);
    }
  
    /* Hook for picking more readable trees for SSA names of temporaries,
--- 376,420 ----
    }
  
    void warn (const supernode *snode, const gimple *stmt,
! 	     tree var,
! 	     std::unique_ptr<pending_diagnostic> d) final override
    {
      LOG_FUNC (get_logger ());
!     gcc_assert (d);
      const svalue *var_old_sval
!       = m_old_state->m_region_model->get_rvalue (var, NULL);
      state_machine::state_t current
        = (var
  	 ? m_old_smap->get_state (var_old_sval, m_eg.get_ext_state ())
  	 : m_old_smap->get_global_state ());
+     bool terminate_path = d->terminate_path_p ();
      m_eg.get_diagnostic_manager ().add_diagnostic
        (&m_sm, m_enode_for_diag, snode, stmt, m_stmt_finder,
!        var, var_old_sval, current, std::move (d));
!     if (m_path_ctxt
! 	&& terminate_path
! 	&& flag_analyzer_suppress_followups)
!       m_path_ctxt->terminate_path ();
!   }
! 
!   void warn (const supernode *snode, const gimple *stmt,
! 	     const svalue *sval,
! 	     std::unique_ptr<pending_diagnostic> d) final override
!   {
!     LOG_FUNC (get_logger ());
!     gcc_assert (d);
!     state_machine::state_t current
!       = (sval
! 	 ? m_old_smap->get_state (sval, m_eg.get_ext_state ())
! 	 : m_old_smap->get_global_state ());
!     bool terminate_path = d->terminate_path_p ();
!     m_eg.get_diagnostic_manager ().add_diagnostic
!       (&m_sm, m_enode_for_diag, snode, stmt, m_stmt_finder,
!        NULL_TREE, sval, current, std::move (d));
!     if (m_path_ctxt
! 	&& terminate_path
! 	&& flag_analyzer_suppress_followups)
!       m_path_ctxt->terminate_path ();
    }
  
    /* Hook for picking more readable trees for SSA names of temporaries,
*************** public:
*** 441,447 ****
       we can print:
         "double-free of 'inbuf.data'".  */
  
!   tree get_diagnostic_tree (tree expr) FINAL OVERRIDE
    {
      /* Only for SSA_NAMEs of temporaries; otherwise, return EXPR, as it's
         likely to be the least surprising tree to report.  */
--- 423,429 ----
       we can print:
         "double-free of 'inbuf.data'".  */
  
!   tree get_diagnostic_tree (tree expr) final override
    {
      /* Only for SSA_NAMEs of temporaries; otherwise, return EXPR, as it's
         likely to be the least surprising tree to report.  */
*************** public:
*** 459,487 ****
        return expr;
    }
  
!   tree get_diagnostic_tree (const svalue *sval) FINAL OVERRIDE
    {
      return m_new_state->m_region_model->get_representative_tree (sval);
    }
  
!   state_machine::state_t get_global_state () const FINAL OVERRIDE
    {
      return m_old_state->m_checker_states[m_sm_idx]->get_global_state ();
    }
  
!   void set_global_state (state_machine::state_t state) FINAL OVERRIDE
    {
      m_new_state->m_checker_states[m_sm_idx]->set_global_state (state);
    }
  
!   void on_custom_transition (custom_transition *transition) FINAL OVERRIDE
    {
      transition->impl_transition (&m_eg,
  				 const_cast<exploded_node *> (m_enode_for_diag),
  				 m_sm_idx);
    }
  
!   tree is_zero_assignment (const gimple *stmt) FINAL OVERRIDE
    {
      const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
      if (!assign_stmt)
--- 441,469 ----
        return expr;
    }
  
!   tree get_diagnostic_tree (const svalue *sval) final override
    {
      return m_new_state->m_region_model->get_representative_tree (sval);
    }
  
!   state_machine::state_t get_global_state () const final override
    {
      return m_old_state->m_checker_states[m_sm_idx]->get_global_state ();
    }
  
!   void set_global_state (state_machine::state_t state) final override
    {
      m_new_state->m_checker_states[m_sm_idx]->set_global_state (state);
    }
  
!   void on_custom_transition (custom_transition *transition) final override
    {
      transition->impl_transition (&m_eg,
  				 const_cast<exploded_node *> (m_enode_for_diag),
  				 m_sm_idx);
    }
  
!   tree is_zero_assignment (const gimple *stmt) final override
    {
      const gassign *assign_stmt = dyn_cast <const gassign *> (stmt);
      if (!assign_stmt)
*************** public:
*** 497,517 ****
      return NULL_TREE;
    }
  
!   path_context *get_path_context () const FINAL OVERRIDE
    {
      return m_path_ctxt;
    }
  
!   bool unknown_side_effects_p () const FINAL OVERRIDE
    {
      return m_unknown_side_effects;
    }
  
!   const program_state *get_old_program_state () const FINAL OVERRIDE
    {
      return m_old_state;
    }
  
    log_user m_logger;
    exploded_graph &m_eg;
    exploded_node *m_enode_for_diag;
--- 479,504 ----
      return NULL_TREE;
    }
  
!   path_context *get_path_context () const final override
    {
      return m_path_ctxt;
    }
  
!   bool unknown_side_effects_p () const final override
    {
      return m_unknown_side_effects;
    }
  
!   const program_state *get_old_program_state () const final override
    {
      return m_old_state;
    }
  
+   const program_state *get_new_program_state () const final override
+   {
+     return m_new_state;
+   }
+ 
    log_user m_logger;
    exploded_graph &m_eg;
    exploded_node *m_enode_for_diag;
*************** public:
*** 520,531 ****
    const sm_state_map *m_old_smap;
    sm_state_map *m_new_smap;
    path_context *m_path_ctxt;
!   stmt_finder *m_stmt_finder;
  
    /* Are we handling an external function with unknown side effects?  */
    bool m_unknown_side_effects;
  };
  
  /* Subclass of stmt_finder for finding the best stmt to report the leak at,
     given the emission path.  */
  
--- 507,559 ----
    const sm_state_map *m_old_smap;
    sm_state_map *m_new_smap;
    path_context *m_path_ctxt;
!   const stmt_finder *m_stmt_finder;
  
    /* Are we handling an external function with unknown side effects?  */
    bool m_unknown_side_effects;
  };
  
+ bool
+ impl_region_model_context::
+ get_state_map_by_name (const char *name,
+ 		       sm_state_map **out_smap,
+ 		       const state_machine **out_sm,
+ 		       unsigned *out_sm_idx,
+ 		       std::unique_ptr<sm_context> *out_sm_context)
+ {
+   if (!m_new_state)
+     return false;
+ 
+   unsigned sm_idx;
+   if (!m_ext_state.get_sm_idx_by_name (name, &sm_idx))
+     return false;
+ 
+   const state_machine *sm = &m_ext_state.get_sm (sm_idx);
+   sm_state_map *new_smap = m_new_state->m_checker_states[sm_idx];
+ 
+   *out_smap = new_smap;
+   *out_sm = sm;
+   if (out_sm_idx)
+     *out_sm_idx = sm_idx;
+   if (out_sm_context)
+     {
+       const sm_state_map *old_smap = m_old_state->m_checker_states[sm_idx];
+       *out_sm_context
+ 	= make_unique<impl_sm_context> (*m_eg,
+ 					sm_idx,
+ 					*sm,
+ 					m_enode_for_diag,
+ 					m_old_state,
+ 					m_new_state,
+ 					old_smap,
+ 					new_smap,
+ 					m_path_ctxt,
+ 					m_stmt_finder,
+ 					false);
+     }
+   return true;
+ }
+ 
  /* Subclass of stmt_finder for finding the best stmt to report the leak at,
     given the emission path.  */
  
*************** public:
*** 535,547 ****
    leak_stmt_finder (const exploded_graph &eg, tree var)
    : m_eg (eg), m_var (var) {}
  
!   stmt_finder *clone () const FINAL OVERRIDE
    {
!     return new leak_stmt_finder (m_eg, m_var);
    }
  
    const gimple *find_stmt (const exploded_path &epath)
!     FINAL OVERRIDE
    {
      logger * const logger = m_eg.get_logger ();
      LOG_FUNC (logger);
--- 563,575 ----
    leak_stmt_finder (const exploded_graph &eg, tree var)
    : m_eg (eg), m_var (var) {}
  
!   std::unique_ptr<stmt_finder> clone () const final override
    {
!     return make_unique<leak_stmt_finder> (m_eg, m_var);
    }
  
    const gimple *find_stmt (const exploded_path &epath)
!     final override
    {
      logger * const logger = m_eg.get_logger ();
      LOG_FUNC (logger);
*************** impl_region_model_context::on_state_leak
*** 858,869 ****
      }
  
    tree leaked_tree_for_diag = fixup_tree_for_diagnostic (leaked_tree);
!   pending_diagnostic *pd = sm.on_leak (leaked_tree_for_diag);
    if (pd)
      m_eg->get_diagnostic_manager ().add_diagnostic
        (&sm, m_enode_for_diag, m_enode_for_diag->get_supernode (),
         m_stmt, &stmt_finder,
!        leaked_tree_for_diag, sval, state, pd);
  }
  
  /* Implementation of region_model_context::on_condition vfunc.
--- 886,897 ----
      }
  
    tree leaked_tree_for_diag = fixup_tree_for_diagnostic (leaked_tree);
!   std::unique_ptr<pending_diagnostic> pd = sm.on_leak (leaked_tree_for_diag);
    if (pd)
      m_eg->get_diagnostic_manager ().add_diagnostic
        (&sm, m_enode_for_diag, m_enode_for_diag->get_supernode (),
         m_stmt, &stmt_finder,
!        leaked_tree_for_diag, sval, state, std::move (pd));
  }
  
  /* Implementation of region_model_context::on_condition vfunc.
*************** impl_region_model_context::on_condition
*** 894,899 ****
--- 922,969 ----
      }
  }
  
+ /* Implementation of region_model_context::on_bounded_ranges vfunc.
+    Notify all state machines about the ranges, which could lead to
+    state transitions.  */
+ 
+ void
+ impl_region_model_context::on_bounded_ranges (const svalue &sval,
+ 					      const bounded_ranges &ranges)
+ {
+   int sm_idx;
+   sm_state_map *smap;
+   FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
+     {
+       const state_machine &sm = m_ext_state.get_sm (sm_idx);
+       impl_sm_context sm_ctxt (*m_eg, sm_idx, sm, m_enode_for_diag,
+ 			       m_old_state, m_new_state,
+ 			       m_old_state->m_checker_states[sm_idx],
+ 			       m_new_state->m_checker_states[sm_idx],
+ 			       m_path_ctxt);
+       sm.on_bounded_ranges (&sm_ctxt,
+ 			    (m_enode_for_diag
+ 			     ? m_enode_for_diag->get_supernode ()
+ 			     : NULL),
+ 			    m_stmt, sval, ranges);
+     }
+ }
+ 
+ /* Implementation of region_model_context::on_pop_frame vfunc.
+    Notify all state machines about the frame being popped, which
+    could lead to states being discarded.  */
+ 
+ void
+ impl_region_model_context::on_pop_frame (const frame_region *frame_reg)
+ {
+   int sm_idx;
+   sm_state_map *smap;
+   FOR_EACH_VEC_ELT (m_new_state->m_checker_states, sm_idx, smap)
+     {
+       const state_machine &sm = m_ext_state.get_sm (sm_idx);
+       sm.on_pop_frame (smap, frame_reg);
+     }
+ }
+ 
  /* Implementation of region_model_context::on_phi vfunc.
     Notify all state machines about the phi, which could lead to
     state transitions.  */
*************** exploded_node::get_dot_fillcolor () cons
*** 1139,1145 ****
  	= {"azure", "coral", "cornsilk", "lightblue", "yellow",
  	   "honeydew", "lightpink", "lightsalmon", "palegreen1",
  	   "wheat", "seashell"};
!       const int num_colors = sizeof (colors) / sizeof (colors[0]);
        return colors[total_sm_state % num_colors];
      }
    else
--- 1209,1215 ----
  	= {"azure", "coral", "cornsilk", "lightblue", "yellow",
  	   "honeydew", "lightpink", "lightsalmon", "palegreen1",
  	   "wheat", "seashell"};
!       const int num_colors = ARRAY_SIZE (colors);
        return colors[total_sm_state % num_colors];
      }
    else
*************** exploded_node::on_stmt (exploded_graph &
*** 1376,1381 ****
--- 1446,1470 ----
  				  &old_state, state, uncertainty,
  				  path_ctxt, stmt);
  
+   /* Handle call summaries here.  */
+   if (cgraph_edge *cgedge
+ 	  = supergraph_call_edge (snode->get_function (), stmt))
+     if (eg.get_analysis_plan ().use_summary_p (cgedge))
+       {
+ 	function *called_fn = get_ultimate_function_for_cgraph_edge (cgedge);
+ 	per_function_data *called_fn_data
+ 	  = eg.get_per_function_data (called_fn);
+ 	if (called_fn_data)
+ 	  return replay_call_summaries (eg,
+ 					snode,
+ 					as_a <const gcall *> (stmt),
+ 					state,
+ 					path_ctxt,
+ 					called_fn,
+ 					called_fn_data,
+ 					&ctxt);
+       }
+ 
    bool unknown_side_effects = false;
    bool terminate_path = false;
  
*************** exploded_node::on_stmt_pre (exploded_gra
*** 1454,1460 ****
  
    /* Otherwise, defer to m_region_model.  */
    state->m_region_model->on_stmt_pre (stmt,
- 				      out_terminate_path,
  				      out_unknown_side_effects,
  				      ctxt);
  }
--- 1543,1548 ----
*************** exploded_node::on_stmt_post (const gimpl
*** 1471,1476 ****
--- 1559,1698 ----
      state->m_region_model->on_call_post (call, unknown_side_effects, ctxt);
  }
  
+ /* A concrete call_info subclass representing a replay of a call summary.  */
+ 
+ class call_summary_edge_info : public call_info
+ {
+ public:
+   call_summary_edge_info (const call_details &cd,
+ 			  function *called_fn,
+ 			  call_summary *summary,
+ 			  const extrinsic_state &ext_state)
+   : call_info (cd),
+     m_called_fn (called_fn),
+     m_summary (summary),
+     m_ext_state (ext_state)
+   {}
+ 
+   bool update_state (program_state *state,
+ 		     const exploded_edge *,
+ 		     region_model_context *ctxt) const final override
+   {
+     /* Update STATE based on summary_end_state.  */
+     call_details cd (get_call_details (state->m_region_model, ctxt));
+     call_summary_replay r (cd, m_called_fn, m_summary, m_ext_state);
+     const program_state &summary_end_state = m_summary->get_state ();
+     return state->replay_call_summary (r, summary_end_state);
+   }
+ 
+   bool update_model (region_model *model,
+ 		     const exploded_edge *,
+ 		     region_model_context *ctxt) const final override
+   {
+     /* Update STATE based on summary_end_state.  */
+     call_details cd (get_call_details (model, ctxt));
+     call_summary_replay r (cd, m_called_fn, m_summary, m_ext_state);
+     const program_state &summary_end_state = m_summary->get_state ();
+     model->replay_call_summary (r, *summary_end_state.m_region_model);
+     return true;
+   }
+ 
+   label_text get_desc (bool /*can_colorize*/) const final override
+   {
+     return m_summary->get_desc ();
+   }
+ 
+ private:
+   function *m_called_fn;
+   call_summary *m_summary;
+   const extrinsic_state &m_ext_state;
+ };
+ 
+ /* Use PATH_CTXT to bifurcate, which when handled will add custom edges
+    for a replay of the various feasible summaries in CALLED_FN_DATA.  */
+ 
+ exploded_node::on_stmt_flags
+ exploded_node::replay_call_summaries (exploded_graph &eg,
+ 				      const supernode *snode,
+ 				      const gcall *call_stmt,
+ 				      program_state *state,
+ 				      path_context *path_ctxt,
+ 				      function *called_fn,
+ 				      per_function_data *called_fn_data,
+ 				      region_model_context *ctxt)
+ {
+   logger *logger = eg.get_logger ();
+   LOG_SCOPE (logger);
+ 
+   gcc_assert (called_fn);
+   gcc_assert (called_fn_data);
+ 
+   /* Each summary will call bifurcate on the PATH_CTXT.  */
+   for (auto summary : called_fn_data->m_summaries)
+     replay_call_summary (eg, snode, call_stmt, state,
+ 			 path_ctxt, called_fn, summary, ctxt);
+   path_ctxt->terminate_path ();
+ 
+   return on_stmt_flags ();
+ }
+ 
+ /* Use PATH_CTXT to bifurcate, which when handled will add a
+    custom edge for a replay of SUMMARY, if the summary's
+    conditions are feasible based on the current state.  */
+ 
+ void
+ exploded_node::replay_call_summary (exploded_graph &eg,
+ 				    const supernode *snode,
+ 				    const gcall *call_stmt,
+ 				    program_state *old_state,
+ 				    path_context *path_ctxt,
+ 				    function *called_fn,
+ 				    call_summary *summary,
+ 				    region_model_context *ctxt)
+ {
+   logger *logger = eg.get_logger ();
+   LOG_SCOPE (logger);
+   gcc_assert (snode);
+   gcc_assert (call_stmt);
+   gcc_assert (old_state);
+   gcc_assert (called_fn);
+   gcc_assert (summary);
+ 
+   if (logger)
+     logger->log ("using %s as summary for call to %qE from %qE",
+ 		 summary->get_desc ().get (),
+ 		 called_fn->decl,
+ 		 snode->get_function ()->decl);
+   const extrinsic_state &ext_state = eg.get_ext_state ();
+   const program_state &summary_end_state = summary->get_state ();
+   if (logger)
+     {
+       pretty_printer *pp = logger->get_printer ();
+ 
+       logger->start_log_line ();
+       pp_string (pp, "callsite state: ");
+       old_state->dump_to_pp (ext_state, true, false, pp);
+       logger->end_log_line ();
+ 
+       logger->start_log_line ();
+       pp_string (pp, "summary end state: ");
+       summary_end_state.dump_to_pp (ext_state, true, false, pp);
+       logger->end_log_line ();
+     }
+ 
+   program_state new_state (*old_state);
+ 
+   call_details cd (call_stmt, new_state.m_region_model, ctxt);
+   call_summary_replay r (cd, called_fn, summary, ext_state);
+ 
+   if (path_ctxt)
+     path_ctxt->bifurcate (make_unique<call_summary_edge_info> (cd,
+ 							       called_fn,
+ 							       summary,
+ 							       ext_state));
+ }
+ 
+ 
  /* Consider the effect of following superedge SUCC from this node.
  
     Return true if it's feasible to follow the edge, or false
*************** public:
*** 1544,1555 ****
      m_setjmp_point (setjmp_point), m_stack_pop_event (NULL)
    {}
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_stale_setjmp_buffer;
    }
  
!   bool emit (rich_location *richloc) FINAL OVERRIDE
    {
      return warning_at
        (richloc, get_controlling_option (),
--- 1766,1777 ----
      m_setjmp_point (setjmp_point), m_stack_pop_event (NULL)
    {}
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_stale_setjmp_buffer;
    }
  
!   bool emit (rich_location *richloc) final override
    {
      return warning_at
        (richloc, get_controlling_option (),
*************** public:
*** 1558,1564 ****
         get_user_facing_name (m_setjmp_call));
    }
  
!   const char *get_kind () const FINAL OVERRIDE
    { return "stale_jmp_buf"; }
  
    bool operator== (const stale_jmp_buf &other) const
--- 1780,1786 ----
         get_user_facing_name (m_setjmp_call));
    }
  
!   const char *get_kind () const final override
    { return "stale_jmp_buf"; }
  
    bool operator== (const stale_jmp_buf &other) const
*************** public:
*** 1570,1576 ****
    bool
    maybe_add_custom_events_for_superedge (const exploded_edge &eedge,
  					 checker_path *emission_path)
!     FINAL OVERRIDE
    {
      /* Detect exactly when the stack first becomes invalid,
         and issue an event then.  */
--- 1792,1798 ----
    bool
    maybe_add_custom_events_for_superedge (const exploded_edge &eedge,
  					 checker_path *emission_path)
!     final override
    {
      /* Detect exactly when the stack first becomes invalid,
         and issue an event then.  */
*************** public:
*** 1586,1602 ****
  	/* Compare with diagnostic_manager::add_events_for_superedge.  */
  	const int src_stack_depth = src_point.get_stack_depth ();
  	m_stack_pop_event = new precanned_custom_event
! 	  (src_point.get_location (),
! 	   src_point.get_fndecl (),
! 	   src_stack_depth,
  	   "stack frame is popped here, invalidating saved environment");
! 	emission_path->add_event (m_stack_pop_event);
  	return false;
        }
      return false;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev)
    {
      if (m_stack_pop_event)
        return ev.formatted_print
--- 1808,1825 ----
  	/* Compare with diagnostic_manager::add_events_for_superedge.  */
  	const int src_stack_depth = src_point.get_stack_depth ();
  	m_stack_pop_event = new precanned_custom_event
! 	  (event_loc_info (src_point.get_location (),
! 			   src_point.get_fndecl (),
! 			   src_stack_depth),
  	   "stack frame is popped here, invalidating saved environment");
! 	emission_path->add_event
! 	  (std::unique_ptr<custom_event> (m_stack_pop_event));
  	return false;
        }
      return false;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_stack_pop_event)
        return ev.formatted_print
*************** exploded_node::on_longjmp (exploded_grap
*** 1660,1666 ****
    /* Verify that the setjmp's call_stack hasn't been popped.  */
    if (!valid_longjmp_stack_p (longjmp_point, setjmp_point))
      {
!       ctxt->warn (new stale_jmp_buf (setjmp_call, longjmp_call, setjmp_point));
        return;
      }
  
--- 1883,1891 ----
    /* Verify that the setjmp's call_stack hasn't been popped.  */
    if (!valid_longjmp_stack_p (longjmp_point, setjmp_point))
      {
!       ctxt->warn (make_unique<stale_jmp_buf> (setjmp_call,
! 					      longjmp_call,
! 					      setjmp_point));
        return;
      }
  
*************** exploded_node::on_longjmp (exploded_grap
*** 1694,1700 ****
      {
        exploded_edge *eedge
  	= eg.add_edge (const_cast<exploded_node *> (this), next, NULL,
! 		       new rewind_info_t (tmp_setjmp_record, longjmp_call));
  
        /* For any diagnostics that were queued here (such as leaks) we want
  	 the checker_path to show the rewinding events after the "final event"
--- 1919,1925 ----
      {
        exploded_edge *eedge
  	= eg.add_edge (const_cast<exploded_node *> (this), next, NULL,
! 		       make_unique<rewind_info_t> (tmp_setjmp_record, longjmp_call));
  
        /* For any diagnostics that were queued here (such as leaks) we want
  	 the checker_path to show the rewinding events after the "final event"
*************** exploded_node::dump_succs_and_preds (FIL
*** 1803,1818 ****
  /* Implementation of custom_edge_info::update_model vfunc
     for dynamic_call_info_t.
  
!    Update state for the dynamically discorverd calls */
  
  bool
  dynamic_call_info_t::update_model (region_model *model,
  				   const exploded_edge *eedge,
! 				   region_model_context *) const
  {
    gcc_assert (eedge);
!   const program_state &dest_state = eedge->m_dest->get_state ();
!   *model = *dest_state.m_region_model;
    return true;
  }
  
--- 2028,2049 ----
  /* Implementation of custom_edge_info::update_model vfunc
     for dynamic_call_info_t.
  
!    Update state for a dynamically discovered call (or return), by pushing
!    or popping the a frame for the appropriate function.  */
  
  bool
  dynamic_call_info_t::update_model (region_model *model,
  				   const exploded_edge *eedge,
! 				   region_model_context *ctxt) const
  {
    gcc_assert (eedge);
!   if (m_is_returning_call)
!     model->update_for_return_gcall (m_dynamic_call, ctxt);
!   else
!     {
!       function *callee = eedge->m_dest->get_function ();
!       model->update_for_gcall (m_dynamic_call, ctxt, callee);
!     }
    return true;
  }
  
*************** dynamic_call_info_t::add_events_to_path
*** 1831,1848 ****
    const int dest_stack_depth = dest_point.get_stack_depth ();
  
    if (m_is_returning_call)
!     emission_path->add_event (new return_event (eedge, (m_dynamic_call
! 	                   			        ? m_dynamic_call->location
! 	           	   		                : UNKNOWN_LOCATION),
! 	          	      dest_point.get_fndecl (),
! 	          	      dest_stack_depth));
    else
!     emission_path->add_event (new call_event (eedge, (m_dynamic_call
! 	                   			      ? m_dynamic_call->location
! 	           	   		              : UNKNOWN_LOCATION),
! 	          	      src_point.get_fndecl (),
! 	          	      src_stack_depth));
! 
  }
  
  /* class rewind_info_t : public custom_edge_info.  */
--- 2062,2082 ----
    const int dest_stack_depth = dest_point.get_stack_depth ();
  
    if (m_is_returning_call)
!     emission_path->add_event
!       (make_unique<return_event> (eedge,
! 				  event_loc_info (m_dynamic_call
! 						  ? m_dynamic_call->location
! 						  : UNKNOWN_LOCATION,
! 						  dest_point.get_fndecl (),
! 						  dest_stack_depth)));
    else
!     emission_path->add_event
!       (make_unique<call_event> (eedge,
! 				event_loc_info (m_dynamic_call
! 						? m_dynamic_call->location
! 						: UNKNOWN_LOCATION,
! 						src_point.get_fndecl (),
! 						src_stack_depth)));
  }
  
  /* class rewind_info_t : public custom_edge_info.  */
*************** rewind_info_t::add_events_to_path (check
*** 1887,1901 ****
    const int dst_stack_depth = dst_point.get_stack_depth ();
  
    emission_path->add_event
!     (new rewind_from_longjmp_event
!      (&eedge, get_longjmp_call ()->location,
!       src_point.get_fndecl (),
!       src_stack_depth, this));
    emission_path->add_event
!     (new rewind_to_setjmp_event
!      (&eedge, get_setjmp_call ()->location,
!       dst_point.get_fndecl (),
!       dst_stack_depth, this));
  }
  
  /* class exploded_edge : public dedge<eg_traits>.  */
--- 2121,2139 ----
    const int dst_stack_depth = dst_point.get_stack_depth ();
  
    emission_path->add_event
!     (make_unique<rewind_from_longjmp_event>
!      (&eedge,
!       event_loc_info (get_longjmp_call ()->location,
! 		      src_point.get_fndecl (),
! 		      src_stack_depth),
!       this));
    emission_path->add_event
!     (make_unique<rewind_to_setjmp_event>
!      (&eedge,
!       event_loc_info (get_setjmp_call ()->location,
! 		      dst_point.get_fndecl (),
! 		      dst_stack_depth),
!       this));
  }
  
  /* class exploded_edge : public dedge<eg_traits>.  */
*************** rewind_info_t::add_events_to_path (check
*** 1904,1920 ****
  
  exploded_edge::exploded_edge (exploded_node *src, exploded_node *dest,
  			      const superedge *sedge,
! 			      custom_edge_info *custom_info)
  : dedge<eg_traits> (src, dest), m_sedge (sedge),
!   m_custom_info (custom_info)
! {
! }
! 
! /* exploded_edge's dtor.  */
! 
! exploded_edge::~exploded_edge ()
  {
-   delete m_custom_info;
  }
  
  /* Implementation of dedge::dump_dot vfunc for exploded_edge.
--- 2142,2151 ----
  
  exploded_edge::exploded_edge (exploded_node *src, exploded_node *dest,
  			      const superedge *sedge,
! 			      std::unique_ptr<custom_edge_info> custom_info)
  : dedge<eg_traits> (src, dest), m_sedge (sedge),
!   m_custom_info (std::move (custom_info))
  {
  }
  
  /* Implementation of dedge::dump_dot vfunc for exploded_edge.
*************** stats::get_total_enodes () const
*** 2065,2070 ****
--- 2296,2315 ----
    return result;
  }
  
+ /* struct per_function_data.  */
+ 
+ per_function_data::~per_function_data ()
+ {
+   for (auto iter : m_summaries)
+     delete iter;
+ }
+ 
+ void
+ per_function_data::add_call_summary (exploded_node *node)
+ {
+   m_summaries.safe_push (new call_summary (this, node));
+ }
+ 
  /* strongly_connected_components's ctor.  Tarjan's SCC algorithm.  */
  
  strongly_connected_components::
*************** exploded_graph::exploded_graph (const su
*** 2351,2358 ****
    m_functionless_stats (m_sg.num_nodes ()),
    m_PK_AFTER_SUPERNODE_per_snode (m_sg.num_nodes ())
  {
!   m_origin = get_or_create_node (program_point::origin (),
! 				 program_state (ext_state), NULL);
    for (int i = 0; i < m_sg.num_nodes (); i++)
      m_PK_AFTER_SUPERNODE_per_snode.quick_push (i);
  }
--- 2596,2604 ----
    m_functionless_stats (m_sg.num_nodes ()),
    m_PK_AFTER_SUPERNODE_per_snode (m_sg.num_nodes ())
  {
!   m_origin = get_or_create_node
!     (program_point::origin (*ext_state.get_model_manager ()),
!      program_state (ext_state), NULL);
    for (int i = 0; i < m_sg.num_nodes (); i++)
      m_PK_AFTER_SUPERNODE_per_snode.quick_push (i);
  }
*************** mark_params_as_tainted (program_state *s
*** 2428,2440 ****
  class tainted_args_function_custom_event : public custom_event
  {
  public:
!   tainted_args_function_custom_event (location_t loc, tree fndecl, int depth)
!   : custom_event (loc, fndecl, depth),
!     m_fndecl (fndecl)
    {
    }
  
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE
    {
      return make_label_text
        (can_colorize,
--- 2674,2686 ----
  class tainted_args_function_custom_event : public custom_event
  {
  public:
!   tainted_args_function_custom_event (const event_loc_info &loc_info)
!   : custom_event (loc_info),
!     m_fndecl (loc_info.m_fndecl)
    {
    }
  
!   label_text get_desc (bool can_colorize) const final override
    {
      return make_label_text
        (can_colorize,
*************** public:
*** 2456,2480 ****
    : m_fndecl (fndecl)
    {}
  
!   void print (pretty_printer *pp) const FINAL OVERRIDE
    {
      pp_string (pp, "call to tainted_args function");
    };
  
    bool update_model (region_model *,
  		     const exploded_edge *,
! 		     region_model_context *) const FINAL OVERRIDE
    {
      /* No-op.  */
      return true;
    }
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &) const FINAL OVERRIDE
    {
      emission_path->add_event
!       (new tainted_args_function_custom_event
!        (DECL_SOURCE_LOCATION (m_fndecl), m_fndecl, 0));
    }
  
  private:
--- 2702,2726 ----
    : m_fndecl (fndecl)
    {}
  
!   void print (pretty_printer *pp) const final override
    {
      pp_string (pp, "call to tainted_args function");
    };
  
    bool update_model (region_model *,
  		     const exploded_edge *,
! 		     region_model_context *) const final override
    {
      /* No-op.  */
      return true;
    }
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &) const final override
    {
      emission_path->add_event
!       (make_unique<tainted_args_function_custom_event>
!        (event_loc_info (DECL_SOURCE_LOCATION (m_fndecl), m_fndecl, 0)));
    }
  
  private:
*************** exploded_graph::add_function_entry (func
*** 2503,2518 ****
        return NULL;
      }
  
!   program_point point = program_point::from_function_entry (m_sg, fun);
    program_state state (m_ext_state);
    state.push_frame (m_ext_state, fun);
  
!   custom_edge_info *edge_info = NULL;
  
    if (lookup_attribute ("tainted_args", DECL_ATTRIBUTES (fun->decl)))
      {
        if (mark_params_as_tainted (&state, fun->decl, m_ext_state))
! 	edge_info = new tainted_args_function_info (fun->decl);
      }
  
    if (!state.m_valid)
--- 2749,2766 ----
        return NULL;
      }
  
!   program_point point
!     = program_point::from_function_entry (*m_ext_state.get_model_manager (),
! 					  m_sg, fun);
    program_state state (m_ext_state);
    state.push_frame (m_ext_state, fun);
  
!   std::unique_ptr<custom_edge_info> edge_info = NULL;
  
    if (lookup_attribute ("tainted_args", DECL_ATTRIBUTES (fun->decl)))
      {
        if (mark_params_as_tainted (&state, fun->decl, m_ext_state))
! 	edge_info = make_unique<tainted_args_function_info> (fun->decl);
      }
  
    if (!state.m_valid)
*************** exploded_graph::add_function_entry (func
*** 2520,2531 ****
  
    exploded_node *enode = get_or_create_node (point, state, NULL);
    if (!enode)
!     {
!       delete edge_info;
!       return NULL;
!     }
  
!   add_edge (m_origin, enode, NULL, edge_info);
  
    m_functions_with_enodes.add (fun);
  
--- 2768,2776 ----
  
    exploded_node *enode = get_or_create_node (point, state, NULL);
    if (!enode)
!     return NULL;
  
!   add_edge (m_origin, enode, NULL, std::move (edge_info));
  
    m_functions_with_enodes.add (fun);
  
*************** exploded_graph::get_or_create_node (cons
*** 2723,2740 ****
  
  /* Add an exploded_edge from SRC to DEST, recording its association
     with SEDGE (which may be NULL), and, if non-NULL, taking ownership
!    of REWIND_INFO.
     Return the newly-created eedge.  */
  
  exploded_edge *
  exploded_graph::add_edge (exploded_node *src, exploded_node *dest,
  			  const superedge *sedge,
! 			  custom_edge_info *custom_info)
  {
    if (get_logger ())
      get_logger ()->log ("creating edge EN: %i -> EN: %i",
  			src->m_index, dest->m_index);
!   exploded_edge *e = new exploded_edge (src, dest, sedge, custom_info);
    digraph<eg_traits>::add_edge (e);
    return e;
  }
--- 2968,2986 ----
  
  /* Add an exploded_edge from SRC to DEST, recording its association
     with SEDGE (which may be NULL), and, if non-NULL, taking ownership
!    of CUSTOM_INFO.
     Return the newly-created eedge.  */
  
  exploded_edge *
  exploded_graph::add_edge (exploded_node *src, exploded_node *dest,
  			  const superedge *sedge,
! 			    std::unique_ptr<custom_edge_info> custom_info)
  {
    if (get_logger ())
      get_logger ()->log ("creating edge EN: %i -> EN: %i",
  			src->m_index, dest->m_index);
!   exploded_edge *e = new exploded_edge (src, dest, sedge,
! 					std::move (custom_info));
    digraph<eg_traits>::add_edge (e);
    return e;
  }
*************** per_function_data *
*** 2803,2809 ****
  exploded_graph::get_per_function_data (function *fun) const
  {
    if (per_function_data **slot
!         = const_cast <per_function_data_t &> (m_per_function_data).get (fun))
      return *slot;
  
    return NULL;
--- 3049,3055 ----
  exploded_graph::get_per_function_data (function *fun) const
  {
    if (per_function_data **slot
! 	= const_cast <per_function_data_t &> (m_per_function_data).get (fun))
      return *slot;
  
    return NULL;
*************** class tainted_args_field_custom_event :
*** 2846,2857 ****
  {
  public:
    tainted_args_field_custom_event (tree field)
!   : custom_event (DECL_SOURCE_LOCATION (field), NULL_TREE, 0),
      m_field (field)
    {
    }
  
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE
    {
      return make_label_text (can_colorize,
  			    "field %qE of %qT"
--- 3092,3103 ----
  {
  public:
    tainted_args_field_custom_event (tree field)
!   : custom_event (event_loc_info (DECL_SOURCE_LOCATION (field), NULL_TREE, 0)),
      m_field (field)
    {
    }
  
!   label_text get_desc (bool can_colorize) const final override
    {
      return make_label_text (can_colorize,
  			    "field %qE of %qT"
*************** private:
*** 2870,2888 ****
  class tainted_args_callback_custom_event : public custom_event
  {
  public:
!   tainted_args_callback_custom_event (location_t loc, tree fndecl, int depth,
! 				 tree field)
!   : custom_event (loc, fndecl, depth),
      m_field (field)
    {
    }
  
!   label_text get_desc (bool can_colorize) const FINAL OVERRIDE
    {
      return make_label_text (can_colorize,
  			    "function %qE used as initializer for field %qE"
  			    " marked with %<__attribute__((tainted_args))%>",
! 			    m_fndecl, m_field);
    }
  
  private:
--- 3116,3134 ----
  class tainted_args_callback_custom_event : public custom_event
  {
  public:
!   tainted_args_callback_custom_event (const event_loc_info &loc_info,
! 				      tree field)
!   : custom_event (loc_info),
      m_field (field)
    {
    }
  
!   label_text get_desc (bool can_colorize) const final override
    {
      return make_label_text (can_colorize,
  			    "function %qE used as initializer for field %qE"
  			    " marked with %<__attribute__((tainted_args))%>",
! 			    get_fndecl (), m_field);
    }
  
  private:
*************** public:
*** 2899,2931 ****
    : m_field (field), m_fndecl (fndecl), m_loc (loc)
    {}
  
!   void print (pretty_printer *pp) const FINAL OVERRIDE
    {
      pp_string (pp, "call to tainted field");
    };
  
    bool update_model (region_model *,
  		     const exploded_edge *,
! 		     region_model_context *) const FINAL OVERRIDE
    {
      /* No-op.  */
      return true;
    }
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &) const FINAL OVERRIDE
    {
      /* Show the field in the struct declaration, e.g.
         "(1) field 'store' is marked with '__attribute__((tainted_args))'"  */
      emission_path->add_event
!       (new tainted_args_field_custom_event (m_field));
  
      /* Show the callback in the initializer
         e.g.
         "(2) function 'gadget_dev_desc_UDC_store' used as initializer
         for field 'store' marked with '__attribute__((tainted_args))'".  */
      emission_path->add_event
!       (new tainted_args_callback_custom_event (m_loc, m_fndecl, 0, m_field));
    }
  
  private:
--- 3145,3179 ----
    : m_field (field), m_fndecl (fndecl), m_loc (loc)
    {}
  
!   void print (pretty_printer *pp) const final override
    {
      pp_string (pp, "call to tainted field");
    };
  
    bool update_model (region_model *,
  		     const exploded_edge *,
! 		     region_model_context *) const final override
    {
      /* No-op.  */
      return true;
    }
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &) const final override
    {
      /* Show the field in the struct declaration, e.g.
         "(1) field 'store' is marked with '__attribute__((tainted_args))'"  */
      emission_path->add_event
!       (make_unique<tainted_args_field_custom_event> (m_field));
  
      /* Show the callback in the initializer
         e.g.
         "(2) function 'gadget_dev_desc_UDC_store' used as initializer
         for field 'store' marked with '__attribute__((tainted_args))'".  */
      emission_path->add_event
!       (make_unique<tainted_args_callback_custom_event>
!        (event_loc_info (m_loc, m_fndecl, 0),
! 	m_field));
    }
  
  private:
*************** add_tainted_args_callback (exploded_grap
*** 2956,2962 ****
    gcc_assert (fun);
  
    program_point point
!     = program_point::from_function_entry (eg->get_supergraph (), fun);
    program_state state (ext_state);
    state.push_frame (ext_state, fun);
  
--- 3204,3211 ----
    gcc_assert (fun);
  
    program_point point
!     = program_point::from_function_entry (*ext_state.get_model_manager (),
! 					  eg->get_supergraph (), fun);
    program_state state (ext_state);
    state.push_frame (ext_state, fun);
  
*************** add_tainted_args_callback (exploded_grap
*** 2980,2988 ****
  	}
      }
  
!   tainted_args_call_info *info
!     = new tainted_args_call_info (field, fndecl, loc);
!   eg->add_edge (eg->get_origin (), enode, NULL, info);
  }
  
  /* Callback for walk_tree for finding callbacks within initializers;
--- 3229,3236 ----
  	}
      }
  
!   eg->add_edge (eg->get_origin (), enode, NULL,
! 		make_unique<tainted_args_call_info> (field, fndecl, loc));
  }
  
  /* Callback for walk_tree for finding callbacks within initializers;
*************** maybe_process_run_of_before_supernode_en
*** 3318,3324 ****
  
        if (point_2.get_kind () == PK_BEFORE_SUPERNODE
  	  && point_2.get_supernode () == snode
! 	  && point_2.get_call_string () == point.get_call_string ())
  	{
  	  enodes.safe_push (enode_2);
  	  m_worklist.take_next ();
--- 3566,3572 ----
  
        if (point_2.get_kind () == PK_BEFORE_SUPERNODE
  	  && point_2.get_supernode () == snode
! 	  && &point_2.get_call_string () == &point.get_call_string ())
  	{
  	  enodes.safe_push (enode_2);
  	  m_worklist.take_next ();
*************** state_change_requires_new_enode_p (const
*** 3515,3521 ****
    return false;
  }
  
! /* Create enodes and eedges for the function calls that doesn't have an 
     underlying call superedge.
  
     Such case occurs when GCC's middle end didn't know which function to
--- 3763,3769 ----
    return false;
  }
  
! /* Create enodes and eedges for the function calls that doesn't have an
     underlying call superedge.
  
     Such case occurs when GCC's middle end didn't know which function to
*************** state_change_requires_new_enode_p (const
*** 3526,3537 ****
  
  bool
  exploded_graph::maybe_create_dynamic_call (const gcall *call,
!                                            tree fn_decl,
!                                            exploded_node *node,
!                                            program_state next_state,
!                                            program_point &next_point,
!                                            uncertainty_t *uncertainty,
!                                            logger *logger)
  {
    LOG_FUNC (logger);
  
--- 3774,3785 ----
  
  bool
  exploded_graph::maybe_create_dynamic_call (const gcall *call,
! 					   tree fn_decl,
! 					   exploded_node *node,
! 					   program_state next_state,
! 					   program_point &next_point,
! 					   uncertainty_t *uncertainty,
! 					   logger *logger)
  {
    LOG_FUNC (logger);
  
*************** exploded_graph::maybe_create_dynamic_cal
*** 3544,3587 ****
        supernode *sn_exit = sg.get_node_for_function_exit (fun);
  
        program_point new_point
!         = program_point::before_supernode (sn_entry,
!                                            NULL,
!                                            this_point->get_call_string ());
  
        new_point.push_to_call_stack (sn_exit,
!                                     next_point.get_supernode());
  
        /* Impose a maximum recursion depth and don't analyze paths
!          that exceed it further.
!          This is something of a blunt workaround, but it only
!          applies to recursion (and mutual recursion), not to
!          general call stacks.  */
        if (new_point.get_call_string ().calc_recursion_depth ()
!           > param_analyzer_max_recursion_depth)
        {
!         if (logger)
!           logger->log ("rejecting call edge: recursion limit exceeded");
!         return false;
        }
  
        next_state.push_call (*this, node, call, uncertainty);
  
        if (next_state.m_valid)
!         {
!           if (logger)
!             logger->log ("Discovered call to %s [SN: %i -> SN: %i]",
!                           function_name(fun),
!                           this_point->get_supernode ()->m_index,
!                           sn_entry->m_index);
  
!           exploded_node *enode = get_or_create_node (new_point,
!                                                      next_state,
!                                                      node);
!           if (enode)
!             add_edge (node,enode, NULL,
!                       new dynamic_call_info_t (call));
!           return true;
!         }
      }
    return false;
  }
--- 3792,3835 ----
        supernode *sn_exit = sg.get_node_for_function_exit (fun);
  
        program_point new_point
! 	= program_point::before_supernode (sn_entry,
! 					   NULL,
! 					   this_point->get_call_string ());
  
        new_point.push_to_call_stack (sn_exit,
! 				    next_point.get_supernode());
  
        /* Impose a maximum recursion depth and don't analyze paths
! 	 that exceed it further.
! 	 This is something of a blunt workaround, but it only
! 	 applies to recursion (and mutual recursion), not to
! 	 general call stacks.  */
        if (new_point.get_call_string ().calc_recursion_depth ()
! 	  > param_analyzer_max_recursion_depth)
        {
! 	if (logger)
! 	  logger->log ("rejecting call edge: recursion limit exceeded");
! 	return false;
        }
  
        next_state.push_call (*this, node, call, uncertainty);
  
        if (next_state.m_valid)
! 	{
! 	  if (logger)
! 	    logger->log ("Discovered call to %s [SN: %i -> SN: %i]",
! 			 function_name(fun),
! 			 this_point->get_supernode ()->m_index,
! 			 sn_entry->m_index);
  
! 	  exploded_node *enode = get_or_create_node (new_point,
! 						     next_state,
! 						     node);
! 	  if (enode)
! 	    add_edge (node,enode, NULL,
! 		      make_unique<dynamic_call_info_t> (call));
! 	  return true;
! 	}
      }
    return false;
  }
*************** public:
*** 3610,3616 ****
    }
  
    void
!   bifurcate (custom_edge_info *info) FINAL OVERRIDE
    {
      if (m_state_at_bifurcation)
        /* Verify that the state at bifurcation is consistent when we
--- 3858,3864 ----
    }
  
    void
!   bifurcate (std::unique_ptr<custom_edge_info> info) final override
    {
      if (m_state_at_bifurcation)
        /* Verify that the state at bifurcation is consistent when we
*************** public:
*** 3623,3637 ****
  	= std::unique_ptr<program_state> (new program_state (*m_cur_state));
  
      /* Take ownership of INFO.  */
!     m_custom_eedge_infos.safe_push (info);
    }
  
!   void terminate_path () FINAL OVERRIDE
    {
      m_terminate_path = true;
    }
  
!   bool terminate_path_p () const FINAL OVERRIDE
    {
      return m_terminate_path;
    }
--- 3871,3885 ----
  	= std::unique_ptr<program_state> (new program_state (*m_cur_state));
  
      /* Take ownership of INFO.  */
!     m_custom_eedge_infos.safe_push (info.release ());
    }
  
!   void terminate_path () final override
    {
      m_terminate_path = true;
    }
  
!   bool terminate_path_p () const final override
    {
      return m_terminate_path;
    }
*************** private:
*** 3652,3657 ****
--- 3900,3945 ----
    bool m_terminate_path;
  };
  
+ /* A subclass of pending_diagnostic for complaining about jumps through NULL
+    function pointers.  */
+ 
+ class jump_through_null : public pending_diagnostic_subclass<jump_through_null>
+ {
+ public:
+   jump_through_null (const gcall *call)
+   : m_call (call)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "jump_through_null";
+   }
+ 
+   bool operator== (const jump_through_null &other) const
+   {
+     return m_call == other.m_call;
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_jump_through_null;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     return warning_at (rich_loc, get_controlling_option (),
+ 		       "jump through null pointer");
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     return ev.formatted_print ("jump through null pointer here");
+   }
+ 
+ private:
+   const gcall *m_call;
+ };
+ 
  /* The core of exploded_graph::process_worklist (the main analysis loop),
     handling one node in the worklist.
  
*************** exploded_graph::process_node (exploded_n
*** 3865,3872 ****
  	   instances.  For example, to handle a "realloc" call, we
  	   might split into 3 states, for the "failure",
  	   "resizing in place", and "moving to a new buffer" cases.  */
! 	for (auto edge_info : path_ctxt.get_custom_eedge_infos ())
  	  {
  	    if (logger)
  	      {
  		logger->start_log_line ();
--- 4153,4162 ----
  	   instances.  For example, to handle a "realloc" call, we
  	   might split into 3 states, for the "failure",
  	   "resizing in place", and "moving to a new buffer" cases.  */
! 	for (auto edge_info_iter : path_ctxt.get_custom_eedge_infos ())
  	  {
+ 	    /* Take ownership of the edge infos from the path_ctxt.  */
+ 	    std::unique_ptr<custom_edge_info> edge_info (edge_info_iter);
  	    if (logger)
  	      {
  		logger->start_log_line ();
*************** exploded_graph::process_node (exploded_n
*** 3886,3918 ****
  				NULL, // uncertainty_t *uncertainty
  				NULL, // path_context *path_ctxt
  				stmt);
! 	    if (edge_info->update_model (bifurcated_new_state.m_region_model,
  					 NULL, /* no exploded_edge yet.  */
  					 &bifurcation_ctxt))
  	      {
  		exploded_node *next2
  		  = get_or_create_node (next_point, bifurcated_new_state, node);
  		if (next2)
! 		  {
! 		    /* Take ownership of edge_info.  */
! 		    add_edge (node, next2, NULL, edge_info);
! 		  }
! 		else
! 		  delete edge_info;
  	      }
  	    else
  	      {
  		if (logger)
  		  logger->log ("infeasible state, not adding node");
- 		delete edge_info;
  	      }
  	  }
        }
        break;
      case PK_AFTER_SUPERNODE:
        {
!         bool found_a_superedge = false;
!         bool is_an_exit_block = false;
  	/* If this is an EXIT BB, detect leaks, and potentially
  	   create a function summary.  */
  	if (point.get_supernode ()->return_p ())
--- 4176,4202 ----
  				NULL, // uncertainty_t *uncertainty
  				NULL, // path_context *path_ctxt
  				stmt);
! 	    if (edge_info->update_state (&bifurcated_new_state,
  					 NULL, /* no exploded_edge yet.  */
  					 &bifurcation_ctxt))
  	      {
  		exploded_node *next2
  		  = get_or_create_node (next_point, bifurcated_new_state, node);
  		if (next2)
! 		  add_edge (node, next2, NULL, std::move (edge_info));
  	      }
  	    else
  	      {
  		if (logger)
  		  logger->log ("infeasible state, not adding node");
  	      }
  	  }
        }
        break;
      case PK_AFTER_SUPERNODE:
        {
! 	bool found_a_superedge = false;
! 	bool is_an_exit_block = false;
  	/* If this is an EXIT BB, detect leaks, and potentially
  	   create a function summary.  */
  	if (point.get_supernode ()->return_p ())
*************** exploded_graph::process_node (exploded_n
*** 3947,3954 ****
  	  {
  	    found_a_superedge = true;
  	    if (logger)
! 	      logger->log ("considering SN: %i -> SN: %i",
! 			   succ->m_src->m_index, succ->m_dest->m_index);
  
  	    program_point next_point
  	      = program_point::before_supernode (succ->m_dest, succ,
--- 4231,4242 ----
  	  {
  	    found_a_superedge = true;
  	    if (logger)
! 	      {
! 		label_text succ_desc (succ->get_description (false));
! 		logger->log ("considering SN: %i -> SN: %i (%s)",
! 			     succ->m_src->m_index, succ->m_dest->m_index,
! 			     succ_desc.get ());
! 	      }
  
  	    program_point next_point
  	      = program_point::before_supernode (succ->m_dest, succ,
*************** exploded_graph::process_node (exploded_n
*** 3956,4009 ****
  	    program_state next_state (state);
  	    uncertainty_t uncertainty;
  
!             /* Make use the current state and try to discover and analyse
!                indirect function calls (a call that doesn't have an underlying
!                cgraph edge representing call).
  
!                Some examples of such calls are virtual function calls
!                and calls that happen via a function pointer.  */
!             if (succ->m_kind == SUPEREDGE_INTRAPROCEDURAL_CALL
!             	&& !(succ->get_any_callgraph_edge ()))
!               {
!                 const gcall *call
!                   = point.get_supernode ()->get_final_call ();
  
!                 impl_region_model_context ctxt (*this,
!                                                 node,
!                                                 &state,
!                                                 &next_state,
!                                                 &uncertainty,
  						NULL,
!                                                 point.get_stmt());
  
!                 region_model *model = state.m_region_model;
!                 bool call_discovered = false;
  
!                 if (tree fn_decl = model->get_fndecl_for_call(call,&ctxt))
!                   call_discovered = maybe_create_dynamic_call (call,
!                                                                fn_decl,
!                                                                node,
!                                                                next_state,
!                                                                next_point,
!                                                                &uncertainty,
!                                                                logger);
!                 if (!call_discovered)
!                   {
!                      /* An unknown function or a special function was called 
!                         at this point, in such case, don't terminate the 
!                         analysis of the current function.
  
!                         The analyzer handles calls to such functions while
!                         analysing the stmt itself, so the function call
!                         must have been handled by the anlyzer till now.  */
!                      exploded_node *next
!                        = get_or_create_node (next_point,
!                                              next_state,
!                                              node);
!                      if (next)
!                        add_edge (node, next, succ);
!                   }
!               }
  
  	    if (!node->on_edge (*this, succ, &next_point, &next_state,
  				&uncertainty))
--- 4244,4306 ----
  	    program_state next_state (state);
  	    uncertainty_t uncertainty;
  
! 	    /* Make use the current state and try to discover and analyse
! 	       indirect function calls (a call that doesn't have an underlying
! 	       cgraph edge representing call).
  
! 	       Some examples of such calls are virtual function calls
! 	       and calls that happen via a function pointer.  */
! 	    if (succ->m_kind == SUPEREDGE_INTRAPROCEDURAL_CALL
! 		&& !(succ->get_any_callgraph_edge ()))
! 	      {
! 		const gcall *call
! 		  = point.get_supernode ()->get_final_call ();
  
! 		impl_region_model_context ctxt (*this,
! 						node,
! 						&state,
! 						&next_state,
! 						&uncertainty,
  						NULL,
! 						point.get_stmt());
  
! 		region_model *model = state.m_region_model;
! 		bool call_discovered = false;
  
! 		if (tree fn_decl = model->get_fndecl_for_call (call, &ctxt))
! 		  call_discovered = maybe_create_dynamic_call (call,
! 							       fn_decl,
! 							       node,
! 							       next_state,
! 							       next_point,
! 							       &uncertainty,
! 							       logger);
! 		if (!call_discovered)
! 		  {
! 		    /* Check for jump through NULL.  */
! 		    if (tree fn_ptr = gimple_call_fn (call))
! 		      {
! 			const svalue *fn_ptr_sval
! 			  = model->get_rvalue (fn_ptr, &ctxt);
! 			if (fn_ptr_sval->all_zeroes_p ())
! 			  ctxt.warn (make_unique<jump_through_null> (call));
! 		      }
  
! 		    /* An unknown function or a special function was called
! 		       at this point, in such case, don't terminate the
! 		       analysis of the current function.
! 
! 		       The analyzer handles calls to such functions while
! 		       analysing the stmt itself, so the function call
! 		       must have been handled by the anlyzer till now.  */
! 		    exploded_node *next
! 		      = get_or_create_node (next_point,
! 					    next_state,
! 					    node);
! 		    if (next)
! 		      add_edge (node, next, succ);
! 		  }
! 	      }
  
  	    if (!node->on_edge (*this, succ, &next_point, &next_state,
  				&uncertainty))
*************** exploded_graph::process_node (exploded_n
*** 4016,4055 ****
  	    exploded_node *next = get_or_create_node (next_point, next_state,
  						      node);
  	    if (next)
! 	      add_edge (node, next, succ);
  	  }
  
!         /* Return from the calls which doesn't have a return superedge.
!     	   Such case occurs when GCC's middle end didn't knew which function to
!     	   call but analyzer did.  */
!         if((is_an_exit_block && !found_a_superedge)
!            && (!point.get_call_string ().empty_p ()))
!           {
!             const call_string cs = point.get_call_string ();
!             program_point next_point
!               = program_point::before_supernode (cs.get_caller_node (),
!                                                  NULL,
!                                                  cs);
!             program_state next_state (state);
!             uncertainty_t uncertainty;
  
!             const gcall *call
!               = next_point.get_supernode ()->get_returning_call ();
  
!             if(call)
!               next_state.returning_call (*this, node, call, &uncertainty);
  
!             if (next_state.m_valid)
!               {
!                 next_point.pop_from_call_stack ();
!                 exploded_node *enode = get_or_create_node (next_point,
!                                                            next_state,
!                                                            node);
!                 if (enode)
!                   add_edge (node, enode, NULL,
!                             new dynamic_call_info_t (call, true));
!               }
!           }
        }
        break;
      }
--- 4313,4357 ----
  	    exploded_node *next = get_or_create_node (next_point, next_state,
  						      node);
  	    if (next)
! 	      {
! 		add_edge (node, next, succ);
! 
! 		/* We might have a function entrypoint.  */
! 		detect_infinite_recursion (next);
! 	      }
  	  }
  
! 	/* Return from the calls which doesn't have a return superedge.
! 	   Such case occurs when GCC's middle end didn't knew which function to
! 	   call but analyzer did.  */
! 	if ((is_an_exit_block && !found_a_superedge)
! 	    && (!point.get_call_string ().empty_p ()))
! 	  {
! 	    const call_string &cs = point.get_call_string ();
! 	    program_point next_point
! 	      = program_point::before_supernode (cs.get_caller_node (),
! 						 NULL,
! 						 cs);
! 	    program_state next_state (state);
! 	    uncertainty_t uncertainty;
  
! 	    const gcall *call
! 	      = next_point.get_supernode ()->get_returning_call ();
  
! 	    if (call)
! 	      next_state.returning_call (*this, node, call, &uncertainty);
  
! 	    if (next_state.m_valid)
! 	      {
! 		next_point.pop_from_call_stack ();
! 		exploded_node *enode = get_or_create_node (next_point,
! 							   next_state,
! 							   node);
! 		if (enode)
! 		  add_edge (node, enode, NULL,
! 			    make_unique<dynamic_call_info_t> (call, true));
! 	      }
! 	  }
        }
        break;
      }
*************** exploded_path::get_final_enode () const
*** 4357,4364 ****
     feasibility_problem to *OUT.  */
  
  bool
! exploded_path::feasible_p (logger *logger, feasibility_problem **out,
! 			    engine *eng, const exploded_graph *eg) const
  {
    LOG_SCOPE (logger);
  
--- 4659,4667 ----
     feasibility_problem to *OUT.  */
  
  bool
! exploded_path::feasible_p (logger *logger,
! 			   std::unique_ptr<feasibility_problem> *out,
! 			   engine *eng, const exploded_graph *eg) const
  {
    LOG_SCOPE (logger);
  
*************** exploded_path::feasible_p (logger *logge
*** 4385,4392 ****
  	      const program_point &src_point = src_enode.get_point ();
  	      const gimple *last_stmt
  		= src_point.get_supernode ()->get_last_stmt ();
! 	      *out = new feasibility_problem (edge_idx, *eedge,
! 					      last_stmt, rc);
  	    }
  	  else
  	    delete rc;
--- 4688,4695 ----
  	      const program_point &src_point = src_enode.get_point ();
  	      const gimple *last_stmt
  		= src_point.get_supernode ()->get_last_stmt ();
! 	      *out = make_unique<feasibility_problem> (edge_idx, *eedge,
! 						       last_stmt, rc);
  	    }
  	  else
  	    delete rc;
*************** feasibility_state::maybe_update_for_edge
*** 4539,4557 ****
        auto_cfun sentinel (src_point.get_function ());
        input_location = stmt->location;
  
!       if (const gassign *assign = dyn_cast <const gassign *> (stmt))
! 	m_model.on_assignment (assign, NULL);
!       else if (const gasm *asm_stmt = dyn_cast <const gasm *> (stmt))
! 	m_model.on_asm_stmt (asm_stmt, NULL);
!       else if (const gcall *call = dyn_cast <const gcall *> (stmt))
! 	{
! 	  bool terminate_path;
! 	  bool unknown_side_effects
! 	    = m_model.on_call_pre (call, NULL, &terminate_path);
! 	  m_model.on_call_post (call, unknown_side_effects, NULL);
! 	}
!       else if (const greturn *return_ = dyn_cast <const greturn *> (stmt))
! 	m_model.on_return (return_, NULL);
      }
  
    const superedge *sedge = eedge->m_sedge;
--- 4842,4848 ----
        auto_cfun sentinel (src_point.get_function ());
        input_location = stmt->location;
  
!       update_for_stmt (stmt);
      }
  
    const superedge *sedge = eedge->m_sedge;
*************** feasibility_state::maybe_update_for_edge
*** 4559,4570 ****
      {
        if (logger)
  	{
! 	  char *desc = sedge->get_description (false);
  	  logger->log ("  sedge: SN:%i -> SN:%i %s",
  		       sedge->m_src->m_index,
  		       sedge->m_dest->m_index,
! 		       desc);
! 	  free (desc);
  	}
  
        const gimple *last_stmt = src_point.get_supernode ()->get_last_stmt ();
--- 4850,4860 ----
      {
        if (logger)
  	{
! 	  label_text desc (sedge->get_description (false));
  	  logger->log ("  sedge: SN:%i -> SN:%i %s",
  		       sedge->m_src->m_index,
  		       sedge->m_dest->m_index,
! 		       desc.get ());
  	}
  
        const gimple *last_stmt = src_point.get_supernode ()->get_last_stmt ();
*************** feasibility_state::maybe_update_for_edge
*** 4629,4634 ****
--- 4919,4942 ----
    return true;
  }
  
+ /* Update this object for the effects of STMT.  */
+ 
+ void
+ feasibility_state::update_for_stmt (const gimple *stmt)
+ {
+   if (const gassign *assign = dyn_cast <const gassign *> (stmt))
+     m_model.on_assignment (assign, NULL);
+   else if (const gasm *asm_stmt = dyn_cast <const gasm *> (stmt))
+     m_model.on_asm_stmt (asm_stmt, NULL);
+   else if (const gcall *call = dyn_cast <const gcall *> (stmt))
+     {
+       bool unknown_side_effects = m_model.on_call_pre (call, NULL);
+       m_model.on_call_post (call, unknown_side_effects, NULL);
+     }
+   else if (const greturn *return_ = dyn_cast <const greturn *> (stmt))
+     m_model.on_return (return_, NULL);
+ }
+ 
  /* Dump this object to PP.  */
  
  void
*************** public:
*** 4667,4673 ****
  
    // TODO: dtor?
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const FINAL OVERRIDE
    {
      gv->println ("subgraph \"cluster_supernode_%i\" {", m_supernode->m_index);
      gv->indent ();
--- 4975,4981 ----
  
    // TODO: dtor?
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const final override
    {
      gv->println ("subgraph \"cluster_supernode_%i\" {", m_supernode->m_index);
      gv->indent ();
*************** public:
*** 4686,4692 ****
      gv->println ("}");
    }
  
!   void add_node (exploded_node *en) FINAL OVERRIDE
    {
      m_enodes.safe_push (en);
    }
--- 4994,5000 ----
      gv->println ("}");
    }
  
!   void add_node (exploded_node *en) final override
    {
      m_enodes.safe_push (en);
    }
*************** private:
*** 4713,4719 ****
  class function_call_string_cluster : public exploded_cluster
  {
  public:
!   function_call_string_cluster (function *fun, call_string cs)
    : m_fun (fun), m_cs (cs) {}
  
    ~function_call_string_cluster ()
--- 5021,5027 ----
  class function_call_string_cluster : public exploded_cluster
  {
  public:
!   function_call_string_cluster (function *fun, const call_string &cs)
    : m_fun (fun), m_cs (cs) {}
  
    ~function_call_string_cluster ()
*************** public:
*** 4724,4730 ****
        delete (*iter).second;
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const FINAL OVERRIDE
    {
      const char *funcname = function_name (m_fun);
  
--- 5032,5038 ----
        delete (*iter).second;
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const final override
    {
      const char *funcname = function_name (m_fun);
  
*************** public:
*** 4756,4762 ****
      gv->println ("}");
    }
  
!   void add_node (exploded_node *en) FINAL OVERRIDE
    {
      const supernode *supernode = en->get_supernode ();
      gcc_assert (supernode);
--- 5064,5070 ----
      gv->println ("}");
    }
  
!   void add_node (exploded_node *en) final override
    {
      const supernode *supernode = en->get_supernode ();
      gcc_assert (supernode);
*************** public:
*** 4788,4794 ****
  
  private:
    function *m_fun;
!   call_string m_cs;
    typedef ordered_hash_map<const supernode *, supernode_cluster *> map_t;
    map_t m_map;
  };
--- 5096,5102 ----
  
  private:
    function *m_fun;
!   const call_string &m_cs;
    typedef ordered_hash_map<const supernode *, supernode_cluster *> map_t;
    map_t m_map;
  };
*************** private:
*** 4797,4810 ****
  
  struct function_call_string
  {
!   function_call_string (function *fun, call_string cs)
    : m_fun (fun), m_cs (cs)
    {
      gcc_assert (fun);
    }
  
    function *m_fun;
!   call_string m_cs;
  };
  
  } // namespace ana
--- 5105,5119 ----
  
  struct function_call_string
  {
!   function_call_string (function *fun, const call_string *cs)
    : m_fun (fun), m_cs (cs)
    {
      gcc_assert (fun);
+     gcc_assert (cs);
    }
  
    function *m_fun;
!   const call_string *m_cs;
  };
  
  } // namespace ana
*************** template <>
*** 4819,4825 ****
  inline hashval_t
  pod_hash_traits<function_call_string>::hash (value_type v)
  {
!   return pointer_hash <function>::hash (v.m_fun) ^ v.m_cs.hash ();
  }
  
  template <>
--- 5128,5135 ----
  inline hashval_t
  pod_hash_traits<function_call_string>::hash (value_type v)
  {
!   return (pointer_hash <function>::hash (v.m_fun)
! 	  ^ pointer_hash <const call_string>::hash (v.m_cs));
  }
  
  template <>
*************** inline bool
*** 4827,4833 ****
  pod_hash_traits<function_call_string>::equal (const value_type &existing,
  					      const value_type &candidate)
  {
!   return existing.m_fun == candidate.m_fun && existing.m_cs == candidate.m_cs;
  }
  template <>
  inline void
--- 5137,5143 ----
  pod_hash_traits<function_call_string>::equal (const value_type &existing,
  					      const value_type &candidate)
  {
!   return existing.m_fun == candidate.m_fun && &existing.m_cs == &candidate.m_cs;
  }
  template <>
  inline void
*************** public:
*** 4871,4877 ****
        delete (*iter).second;
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const FINAL OVERRIDE
    {
      int i;
      exploded_node *enode;
--- 5181,5187 ----
        delete (*iter).second;
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const final override
    {
      int i;
      exploded_node *enode;
*************** public:
*** 4892,4898 ****
        child_cluster->dump_dot (gv, args);
    }
  
!   void add_node (exploded_node *en) FINAL OVERRIDE
    {
      function *fun = en->get_function ();
      if (!fun)
--- 5202,5208 ----
        child_cluster->dump_dot (gv, args);
    }
  
!   void add_node (exploded_node *en) final override
    {
      function *fun = en->get_function ();
      if (!fun)
*************** public:
*** 4902,4908 ****
        }
  
      const call_string &cs = en->get_point ().get_call_string ();
!     function_call_string key (fun, cs);
      function_call_string_cluster **slot = m_map.get (key);
      if (slot)
        (*slot)->add_node (en);
--- 5212,5218 ----
        }
  
      const call_string &cs = en->get_point ().get_call_string ();
!     function_call_string key (fun, &cs);
      function_call_string_cluster **slot = m_map.get (key);
      if (slot)
        (*slot)->add_node (en);
*************** public:
*** 4916,4926 ****
    }
  
  private:
-   /* This can't be an ordered_hash_map, as we can't store vec<call_string>,
-      since it's not a POD; vec<>::quick_push has:
-        *slot = obj;
-      and the slot isn't initialized, so the assignment op dies when cleaning up
-      un-inited *slot (within the truncate call).  */
    typedef hash_map<function_call_string, function_call_string_cluster *> map_t;
    map_t m_map;
  
--- 5226,5231 ----
*************** class enode_label : public range_label
*** 4940,4946 ****
  	       exploded_node *enode)
    : m_ext_state (ext_state), m_enode (enode) {}
  
!   label_text get_text (unsigned) const FINAL OVERRIDE
    {
      pretty_printer pp;
      pp_format_decoder (&pp) = default_tree_printer;
--- 5245,5251 ----
  	       exploded_node *enode)
    : m_ext_state (ext_state), m_enode (enode) {}
  
!   label_text get_text (unsigned) const final override
    {
      pretty_printer pp;
      pp_format_decoder (&pp) = default_tree_printer;
*************** public:
*** 5242,5270 ****
      gcc_assert (fun);
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const FINAL OVERRIDE
    {
      pretty_printer *pp = gv->get_pp ();
  
      dump_dot_id (pp);
!     pp_printf (pp, " [shape=none,margin=0,style=filled,fillcolor=%s,label=<",
  	       "lightgrey");
-     pp_string (pp, "<TABLE BORDER=\"0\">");
      pp_write_text_to_stream (pp);
  
-     gv->begin_trtd ();
      pp_printf (pp, "VCG: %i: %s", m_index, function_name (m_fun));
-     gv->end_tdtr ();
      pp_newline (pp);
  
-     gv->begin_trtd ();
      pp_printf (pp, "supernodes: %i\n", m_num_supernodes);
-     gv->end_tdtr ();
      pp_newline (pp);
  
-     gv->begin_trtd ();
      pp_printf (pp, "superedges: %i\n", m_num_superedges);
-     gv->end_tdtr ();
      pp_newline (pp);
  
      if (args.m_eg)
--- 5547,5568 ----
      gcc_assert (fun);
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const final override
    {
      pretty_printer *pp = gv->get_pp ();
  
      dump_dot_id (pp);
!     pp_printf (pp, " [shape=none,margin=0,style=filled,fillcolor=%s,label=\"",
  	       "lightgrey");
      pp_write_text_to_stream (pp);
  
      pp_printf (pp, "VCG: %i: %s", m_index, function_name (m_fun));
      pp_newline (pp);
  
      pp_printf (pp, "supernodes: %i\n", m_num_supernodes);
      pp_newline (pp);
  
      pp_printf (pp, "superedges: %i\n", m_num_superedges);
      pp_newline (pp);
  
      if (args.m_eg)
*************** public:
*** 5277,5285 ****
  	    if (enode->get_point ().get_function () == m_fun)
  	      num_enodes++;
  	  }
- 	gv->begin_trtd ();
  	pp_printf (pp, "enodes: %i\n", num_enodes);
- 	gv->end_tdtr ();
  	pp_newline (pp);
  
  	// TODO: also show the per-callstring breakdown
--- 5575,5581 ----
*************** public:
*** 5296,5311 ****
  	    FOR_EACH_VEC_ELT (args.m_eg->m_nodes, i, enode)
  	      {
  		if (enode->get_point ().get_function () == m_fun
! 		    && enode->get_point ().get_call_string () == *cs)
  		  num_enodes++;
  	      }
  	    if (num_enodes > 0)
  	      {
- 		gv->begin_trtd ();
  		cs->print (pp);
  		pp_printf (pp, ": %i\n", num_enodes);
- 		pp_write_text_as_html_like_dot_to_stream (pp);
- 		gv->end_tdtr ();
  	      }
  	  }
  
--- 5592,5604 ----
  	    FOR_EACH_VEC_ELT (args.m_eg->m_nodes, i, enode)
  	      {
  		if (enode->get_point ().get_function () == m_fun
! 		    && &enode->get_point ().get_call_string () == cs)
  		  num_enodes++;
  	      }
  	    if (num_enodes > 0)
  	      {
  		cs->print (pp);
  		pp_printf (pp, ": %i\n", num_enodes);
  	      }
  	  }
  
*************** public:
*** 5314,5327 ****
  	if (data)
  	  {
  	    pp_newline (pp);
- 	    gv->begin_trtd ();
  	    pp_printf (pp, "summaries: %i\n", data->m_summaries.length ());
! 	    pp_write_text_as_html_like_dot_to_stream (pp);
! 	    gv->end_tdtr ();
  	  }
        }
  
!     pp_string (pp, "</TABLE>>];\n\n");
      pp_flush (pp);
    }
  
--- 5607,5626 ----
  	if (data)
  	  {
  	    pp_newline (pp);
  	    pp_printf (pp, "summaries: %i\n", data->m_summaries.length ());
! 	    for (auto summary : data->m_summaries)
! 	      {
! 		pp_printf (pp, "\nsummary: %s:\n", summary->get_desc ().get ());
! 		const extrinsic_state &ext_state = args.m_eg->get_ext_state ();
! 		const program_state &state = summary->get_state ();
! 		state.dump_to_pp (ext_state, false, true, pp);
! 		pp_newline (pp);
! 	      }
  	  }
        }
  
!     pp_write_text_as_dot_label_to_stream (pp, /*for_record=*/true);
!     pp_string (pp, "\"];\n\n");
      pp_flush (pp);
    }
  
*************** public:
*** 5347,5353 ****
    {}
  
    void dump_dot (graphviz_out *gv, const dump_args_t &) const
!     FINAL OVERRIDE
    {
      pretty_printer *pp = gv->get_pp ();
  
--- 5646,5652 ----
    {}
  
    void dump_dot (graphviz_out *gv, const dump_args_t &) const
!     final override
    {
      pretty_printer *pp = gv->get_pp ();
  
*************** public:
*** 5490,5496 ****
    /* Show exploded nodes for BEFORE_SUPERNODE points before N.  */
    bool add_node_annotations (graphviz_out *gv, const supernode &n,
  			     bool within_table)
!     const FINAL OVERRIDE
    {
      if (!within_table)
        return false;
--- 5789,5795 ----
    /* Show exploded nodes for BEFORE_SUPERNODE points before N.  */
    bool add_node_annotations (graphviz_out *gv, const supernode &n,
  			     bool within_table)
!     const final override
    {
      if (!within_table)
        return false;
*************** public:
*** 5524,5530 ****
    /* Show exploded nodes for STMT.  */
    void add_stmt_annotations (graphviz_out *gv, const gimple *stmt,
  			     bool within_row)
!     const FINAL OVERRIDE
    {
      if (!within_row)
        return;
--- 5823,5829 ----
    /* Show exploded nodes for STMT.  */
    void add_stmt_annotations (graphviz_out *gv, const gimple *stmt,
  			     bool within_row)
!     const final override
    {
      if (!within_row)
        return;
*************** public:
*** 5555,5561 ****
  
    /* Show exploded nodes for AFTER_SUPERNODE points after N.  */
    bool add_after_node_annotations (graphviz_out *gv, const supernode &n)
!     const FINAL OVERRIDE
    {
      gv->begin_tr ();
      pretty_printer *pp = gv->get_pp ();
--- 5854,5860 ----
  
    /* Show exploded nodes for AFTER_SUPERNODE points after N.  */
    bool add_after_node_annotations (graphviz_out *gv, const supernode &n)
!     const final override
    {
      gv->begin_tr ();
      pretty_printer *pp = gv->get_pp ();
*************** class plugin_analyzer_init_impl : public
*** 5711,5733 ****
  {
  public:
    plugin_analyzer_init_impl (auto_delete_vec <state_machine> *checkers,
  			     logger *logger)
    : m_checkers (checkers),
      m_logger (logger)
    {}
  
!   void register_state_machine (state_machine *sm) FINAL OVERRIDE
    {
!     m_checkers->safe_push (sm);
    }
  
!   logger *get_logger () const FINAL OVERRIDE
    {
      return m_logger;
    }
  
  private:
    auto_delete_vec <state_machine> *m_checkers;
    logger *m_logger;
  };
  
--- 6010,6043 ----
  {
  public:
    plugin_analyzer_init_impl (auto_delete_vec <state_machine> *checkers,
+ 			     known_function_manager *known_fn_mgr,
  			     logger *logger)
    : m_checkers (checkers),
+     m_known_fn_mgr (known_fn_mgr),
      m_logger (logger)
    {}
  
!   void register_state_machine (std::unique_ptr<state_machine> sm) final override
    {
!     LOG_SCOPE (m_logger);
!     m_checkers->safe_push (sm.release ());
    }
  
!   void register_known_function (const char *name,
! 				std::unique_ptr<known_function> kf) final override
!   {
!     LOG_SCOPE (m_logger);
!     m_known_fn_mgr->add (name, std::move (kf));
!   }
! 
!   logger *get_logger () const final override
    {
      return m_logger;
    }
  
  private:
    auto_delete_vec <state_machine> *m_checkers;
+   known_function_manager *m_known_fn_mgr;
    logger *m_logger;
  };
  
*************** impl_run_checkers (logger *logger)
*** 5743,5748 ****
--- 6053,6059 ----
        logger->log ("BITS_BIG_ENDIAN: %i", BITS_BIG_ENDIAN ? 1 : 0);
        logger->log ("BYTES_BIG_ENDIAN: %i", BYTES_BIG_ENDIAN ? 1 : 0);
        logger->log ("WORDS_BIG_ENDIAN: %i", WORDS_BIG_ENDIAN ? 1 : 0);
+       log_stashed_constants (logger);
      }
  
    /* If using LTO, ensure that the cgraph nodes have function bodies.  */
*************** impl_run_checkers (logger *logger)
*** 5783,5789 ****
    auto_delete_vec <state_machine> checkers;
    make_checkers (checkers, logger);
  
!   plugin_analyzer_init_impl data (&checkers, logger);
    invoke_plugin_callbacks (PLUGIN_ANALYZER_INIT, &data);
  
    if (logger)
--- 6094,6104 ----
    auto_delete_vec <state_machine> checkers;
    make_checkers (checkers, logger);
  
!   register_known_functions (*eng.get_known_function_manager ());
! 
!   plugin_analyzer_init_impl data (&checkers,
! 				  eng.get_known_function_manager (),
! 				  logger);
    invoke_plugin_callbacks (PLUGIN_ANALYZER_INIT, &data);
  
    if (logger)
*************** impl_run_checkers (logger *logger)
*** 5850,5855 ****
--- 6165,6198 ----
    delete purge_map;
  }
  
+ /* Handle -fdump-analyzer and -fdump-analyzer-stderr.  */
+ static FILE *dump_fout = NULL;
+ 
+ /* Track if we're responsible for closing dump_fout.  */
+ static bool owns_dump_fout = false;
+ 
+ /* If dumping is enabled, attempt to create dump_fout if it hasn't already
+    been opened.  Return it.  */
+ 
+ FILE *
+ get_or_create_any_logfile ()
+ {
+   if (!dump_fout)
+     {
+       if (flag_dump_analyzer_stderr)
+ 	dump_fout = stderr;
+       else if (flag_dump_analyzer)
+ 	{
+ 	  char *dump_filename = concat (dump_base_name, ".analyzer.txt", NULL);
+ 	  dump_fout = fopen (dump_filename, "w");
+ 	  free (dump_filename);
+ 	  if (dump_fout)
+ 	    owns_dump_fout = true;
+ 	}
+      }
+   return dump_fout;
+ }
+ 
  /* External entrypoint to the analysis "engine".
     Set up any dumps, then call impl_run_checkers.  */
  
*************** run_checkers ()
*** 5859,5881 ****
    /* Save input_location.  */
    location_t saved_input_location = input_location;
  
-   /* Handle -fdump-analyzer and -fdump-analyzer-stderr.  */
-   FILE *dump_fout = NULL;
-   /* Track if we're responsible for closing dump_fout.  */
-   bool owns_dump_fout = false;
-   if (flag_dump_analyzer_stderr)
-     dump_fout = stderr;
-   else if (flag_dump_analyzer)
-     {
-       char *dump_filename = concat (dump_base_name, ".analyzer.txt", NULL);
-       dump_fout = fopen (dump_filename, "w");
-       free (dump_filename);
-       if (dump_fout)
- 	owns_dump_fout = true;
-     }
- 
    {
      log_user the_logger (NULL);
      if (dump_fout)
        the_logger.set_logger (new logger (dump_fout, 0, 0,
  					 *global_dc->printer));
--- 6202,6210 ----
    /* Save input_location.  */
    location_t saved_input_location = input_location;
  
    {
      log_user the_logger (NULL);
+     get_or_create_any_logfile ();
      if (dump_fout)
        the_logger.set_logger (new logger (dump_fout, 0, 0,
  					 *global_dc->printer));
*************** run_checkers ()
*** 5888,5894 ****
    }
  
    if (owns_dump_fout)
!     fclose (dump_fout);
  
    /* Restore input_location.  Subsequent passes may assume that input_location
       is some arbitrary value *not* in the block tree, which might be violated
--- 6217,6227 ----
    }
  
    if (owns_dump_fout)
!     {
!       fclose (dump_fout);
!       owns_dump_fout = false;
!       dump_fout = NULL;
!     }
  
    /* Restore input_location.  Subsequent passes may assume that input_location
       is some arbitrary value *not* in the block tree, which might be violated
diff -Nrcpad gcc-12.2.0/gcc/analyzer/engine.h gcc-13.1.0/gcc/analyzer/engine.h
*** gcc-12.2.0/gcc/analyzer/engine.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/engine.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* The analysis "engine".
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* The analysis "engine".
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/exploded-graph.h gcc-13.1.0/gcc/analyzer/exploded-graph.h
*** gcc-12.2.0/gcc/analyzer/exploded-graph.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/exploded-graph.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for managing a directed graph of <point, state> pairs.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for managing a directed graph of <point, state> pairs.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,35 ----
  #ifndef GCC_ANALYZER_EXPLODED_GRAPH_H
  #define GCC_ANALYZER_EXPLODED_GRAPH_H
  
+ #include "alloc-pool.h"
+ #include "fibonacci_heap.h"
+ #include "supergraph.h"
+ #include "sbitmap.h"
+ #include "shortest-paths.h"
+ #include "analyzer/sm.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/diagnostic-manager.h"
+ 
  namespace ana {
  
  /* Concrete implementation of region_model_context, wiring it up to the
*************** class impl_region_model_context : public
*** 47,58 ****
  			     uncertainty_t *uncertainty,
  			     logger *logger = NULL);
  
!   bool warn (pending_diagnostic *d) FINAL OVERRIDE;
!   void add_note (pending_note *pn) FINAL OVERRIDE;
!   void on_svalue_leak (const svalue *) OVERRIDE;
    void on_liveness_change (const svalue_set &live_svalues,
! 			   const region_model *model) FINAL OVERRIDE;
!   logger *get_logger () FINAL OVERRIDE
    {
      return m_logger.get_logger ();
    }
--- 56,67 ----
  			     uncertainty_t *uncertainty,
  			     logger *logger = NULL);
  
!   bool warn (std::unique_ptr<pending_diagnostic> d) final override;
!   void add_note (std::unique_ptr<pending_note> pn) final override;
!   void on_svalue_leak (const svalue *) override;
    void on_liveness_change (const svalue_set &live_svalues,
! 			   const region_model *model) final override;
!   logger *get_logger () final override
    {
      return m_logger.get_logger ();
    }
*************** class impl_region_model_context : public
*** 63,97 ****
  
    void on_condition (const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) FINAL OVERRIDE;
  
!   void on_unknown_change (const svalue *sval, bool is_mutable) FINAL OVERRIDE;
  
!   void on_phi (const gphi *phi, tree rhs) FINAL OVERRIDE;
  
    void on_unexpected_tree_code (tree t,
! 				const dump_location_t &loc) FINAL OVERRIDE;
  
!   void on_escaped_function (tree fndecl) FINAL OVERRIDE;
  
!   uncertainty_t *get_uncertainty () FINAL OVERRIDE;
  
!   void purge_state_involving (const svalue *sval) FINAL OVERRIDE;
  
!   void bifurcate (custom_edge_info *info) FINAL OVERRIDE;
!   void terminate_path () FINAL OVERRIDE;
!   const extrinsic_state *get_ext_state () const FINAL OVERRIDE
    {
      return &m_ext_state;
    }
!   bool get_malloc_map (sm_state_map **out_smap,
! 		       const state_machine **out_sm,
! 		       unsigned *out_sm_idx) FINAL OVERRIDE;
!   bool get_taint_map (sm_state_map **out_smap,
! 		       const state_machine **out_sm,
! 		       unsigned *out_sm_idx) FINAL OVERRIDE;
  
!   const gimple *get_stmt () const OVERRIDE { return m_stmt; }
  
    exploded_graph *m_eg;
    log_user m_logger;
--- 72,111 ----
  
    void on_condition (const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) final override;
  
!   void on_bounded_ranges (const svalue &sval,
! 			  const bounded_ranges &ranges) final override;
  
!   void on_pop_frame (const frame_region *frame_reg) final override;
! 
!   void on_unknown_change (const svalue *sval, bool is_mutable) final override;
! 
!   void on_phi (const gphi *phi, tree rhs) final override;
  
    void on_unexpected_tree_code (tree t,
! 				const dump_location_t &loc) final override;
  
!   void on_escaped_function (tree fndecl) final override;
  
!   uncertainty_t *get_uncertainty () final override;
  
!   void purge_state_involving (const svalue *sval) final override;
  
!   void bifurcate (std::unique_ptr<custom_edge_info> info) final override;
!   void terminate_path () final override;
!   const extrinsic_state *get_ext_state () const final override
    {
      return &m_ext_state;
    }
!   bool
!   get_state_map_by_name (const char *name,
! 			 sm_state_map **out_smap,
! 			 const state_machine **out_sm,
! 			 unsigned *out_sm_idx,
! 			 std::unique_ptr<sm_context> *out_sm_context) override;
  
!   const gimple *get_stmt () const override { return m_stmt; }
  
    exploded_graph *m_eg;
    log_user m_logger;
*************** class exploded_node : public dnode<eg_tr
*** 205,211 ****
  
    const char * get_dot_fillcolor () const;
    void dump_dot (graphviz_out *gv, const dump_args_t &args)
!     const FINAL OVERRIDE;
    void dump_dot_id (pretty_printer *pp) const;
  
    void dump_to_pp (pretty_printer *pp, const extrinsic_state &ext_state) const;
--- 219,225 ----
  
    const char * get_dot_fillcolor () const;
    void dump_dot (graphviz_out *gv, const dump_args_t &args)
!     const final override;
    void dump_dot_id (pretty_printer *pp) const;
  
    void dump_to_pp (pretty_printer *pp, const extrinsic_state &ext_state) const;
*************** class exploded_node : public dnode<eg_tr
*** 255,260 ****
--- 269,291 ----
  		     bool unknown_side_effects,
  		     region_model_context *ctxt);
  
+   on_stmt_flags replay_call_summaries (exploded_graph &eg,
+ 				       const supernode *snode,
+ 				       const gcall *call_stmt,
+ 				       program_state *state,
+ 				       path_context *path_ctxt,
+ 				       function *called_fn,
+ 				       per_function_data *called_fn_data,
+ 				       region_model_context *ctxt);
+   void replay_call_summary (exploded_graph &eg,
+ 			    const supernode *snode,
+ 			    const gcall *call_stmt,
+ 			    program_state *state,
+ 			    path_context *path_ctxt,
+ 			    function *called_fn,
+ 			    call_summary *summary,
+ 			    region_model_context *ctxt);
+ 
    bool on_edge (exploded_graph &eg,
  		const superedge *succ,
  		program_point *next_point,
*************** class exploded_edge : public dedge<eg_tr
*** 340,349 ****
   public:
    exploded_edge (exploded_node *src, exploded_node *dest,
  		 const superedge *sedge,
! 		 custom_edge_info *custom_info);
!   ~exploded_edge ();
    void dump_dot (graphviz_out *gv, const dump_args_t &args)
!     const FINAL OVERRIDE;
    void dump_dot_label (pretty_printer *pp) const;
  
    json::object *to_json () const;
--- 371,379 ----
   public:
    exploded_edge (exploded_node *src, exploded_node *dest,
  		 const superedge *sedge,
! 		 std::unique_ptr<custom_edge_info> custom_info);
    void dump_dot (graphviz_out *gv, const dump_args_t &args)
!     const final override;
    void dump_dot_label (pretty_printer *pp) const;
  
    json::object *to_json () const;
*************** class exploded_edge : public dedge<eg_tr
*** 353,362 ****
  
    /* NULL for most edges; will be non-NULL for special cases
       such as an unwind from a longjmp to a setjmp, or when
!      a signal is delivered to a signal-handler.
! 
!      Owned by this class.  */
!   custom_edge_info *m_custom_info;
  
  private:
    DISABLE_COPY_AND_ASSIGN (exploded_edge);
--- 383,390 ----
  
    /* NULL for most edges; will be non-NULL for special cases
       such as an unwind from a longjmp to a setjmp, or when
!      a signal is delivered to a signal-handler.  */
!   std::unique_ptr<custom_edge_info> m_custom_info;
  
  private:
    DISABLE_COPY_AND_ASSIGN (exploded_edge);
*************** public:
*** 374,380 ****
      m_is_returning_call (is_returning_call)
    {}
  
!   void print (pretty_printer *pp) const FINAL OVERRIDE
    {
      if (m_is_returning_call)
        pp_string (pp, "dynamic_return");
--- 402,408 ----
      m_is_returning_call (is_returning_call)
    {}
  
!   void print (pretty_printer *pp) const final override
    {
      if (m_is_returning_call)
        pp_string (pp, "dynamic_return");
*************** public:
*** 384,393 ****
  
    bool update_model (region_model *model,
  		     const exploded_edge *eedge,
! 		     region_model_context *ctxt) const FINAL OVERRIDE;
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &eedge) const FINAL OVERRIDE;
  private:
    const gcall *m_dynamic_call;
    const bool m_is_returning_call;
--- 412,421 ----
  
    bool update_model (region_model *model,
  		     const exploded_edge *eedge,
! 		     region_model_context *ctxt) const final override;
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &eedge) const final override;
  private:
    const gcall *m_dynamic_call;
    const bool m_is_returning_call;
*************** public:
*** 406,422 ****
      m_longjmp_call (longjmp_call)
    {}
  
!   void print (pretty_printer *pp) const FINAL OVERRIDE
    {
      pp_string (pp, "rewind");
    }
  
    bool update_model (region_model *model,
  		     const exploded_edge *eedge,
! 		     region_model_context *ctxt) const FINAL OVERRIDE;
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &eedge) const FINAL OVERRIDE;
  
    const program_point &get_setjmp_point () const
    {
--- 434,450 ----
      m_longjmp_call (longjmp_call)
    {}
  
!   void print (pretty_printer *pp) const final override
    {
      pp_string (pp, "rewind");
    }
  
    bool update_model (region_model *model,
  		     const exploded_edge *eedge,
! 		     region_model_context *ctxt) const final override;
  
    void add_events_to_path (checker_path *emission_path,
! 			   const exploded_edge &eedge) const final override;
  
    const program_point &get_setjmp_point () const
    {
*************** struct per_call_string_data
*** 599,675 ****
    : m_key (key), m_stats (num_supernodes)
    {}
  
!   const call_string m_key;
    stats m_stats;
  };
  
- /* Traits class for storing per-call_string data within
-    an exploded_graph.  */
- 
- struct eg_call_string_hash_map_traits
- {
-   typedef const call_string *key_type;
-   typedef per_call_string_data *value_type;
-   typedef per_call_string_data *compare_type;
- 
-   static inline hashval_t hash (const key_type &k)
-   {
-     gcc_assert (k != NULL);
-     gcc_assert (k != reinterpret_cast<key_type> (1));
-     return k->hash ();
-   }
-   static inline bool equal_keys (const key_type &k1, const key_type &k2)
-   {
-     gcc_assert (k1 != NULL);
-     gcc_assert (k2 != NULL);
-     gcc_assert (k1 != reinterpret_cast<key_type> (1));
-     gcc_assert (k2 != reinterpret_cast<key_type> (1));
-     if (k1 && k2)
-       return *k1 == *k2;
-     else
-       /* Otherwise they must both be non-NULL.  */
-       return k1 == k2;
-   }
-   template <typename T>
-   static inline void remove (T &)
-   {
-     /* empty; the nodes are handled elsewhere.  */
-   }
-   template <typename T>
-   static inline void mark_deleted (T &entry)
-   {
-     entry.m_key = reinterpret_cast<key_type> (1);
-   }
-   template <typename T>
-   static inline void mark_empty (T &entry)
-   {
-     entry.m_key = NULL;
-   }
-   template <typename T>
-   static inline bool is_deleted (const T &entry)
-   {
-     return entry.m_key == reinterpret_cast<key_type> (1);
-   }
-   template <typename T>
-   static inline bool is_empty (const T &entry)
-   {
-     return entry.m_key == NULL;
-   }
-   static const bool empty_zero_p = false;
- };
- 
  /* Data about a particular function within an exploded_graph.  */
  
  struct per_function_data
  {
    per_function_data () {}
  
!   void add_call_summary (exploded_node *node)
!   {
!     m_summaries.safe_push (node);
!   }
  
!   auto_vec<exploded_node *> m_summaries;
  };
  
  
--- 627,646 ----
    : m_key (key), m_stats (num_supernodes)
    {}
  
!   const call_string &m_key;
    stats m_stats;
  };
  
  /* Data about a particular function within an exploded_graph.  */
  
  struct per_function_data
  {
    per_function_data () {}
+   ~per_function_data ();
  
!   void add_call_summary (exploded_node *node);
  
!   auto_vec<call_summary *> m_summaries;
  };
  
  
*************** private:
*** 791,798 ****
  class exploded_graph : public digraph<eg_traits>
  {
  public:
!   typedef hash_map <const call_string *, per_call_string_data *,
! 		    eg_call_string_hash_map_traits> call_string_data_map_t;
  
    exploded_graph (const supergraph &sg, logger *logger,
  		  const extrinsic_state &ext_state,
--- 762,769 ----
  class exploded_graph : public digraph<eg_traits>
  {
  public:
!   typedef hash_map <const call_string *,
! 		    per_call_string_data *> call_string_data_map_t;
  
    exploded_graph (const supergraph &sg, logger *logger,
  		  const extrinsic_state &ext_state,
*************** public:
*** 831,837 ****
  				     exploded_node *enode_for_diag);
    exploded_edge *add_edge (exploded_node *src, exploded_node *dest,
  			   const superedge *sedge,
! 			   custom_edge_info *custom = NULL);
  
    per_program_point_data *
    get_or_create_per_program_point_data (const program_point &);
--- 802,808 ----
  				     exploded_node *enode_for_diag);
    exploded_edge *add_edge (exploded_node *src, exploded_node *dest,
  			   const superedge *sedge,
! 			   std::unique_ptr<custom_edge_info> custom = NULL);
  
    per_program_point_data *
    get_or_create_per_program_point_data (const program_point &);
*************** public:
*** 882,887 ****
--- 853,863 ----
  
    void on_escaped_function (tree fndecl);
  
+   /* In infinite-recursion.cc */
+   void detect_infinite_recursion (exploded_node *enode);
+   exploded_node *find_previous_entry_to (function *top_of_stack_fun,
+ 					 exploded_node *enode) const;
+ 
  private:
    void print_bar_charts (pretty_printer *pp) const;
  
*************** public:
*** 956,962 ****
    void dump_to_file (const char *filename,
  		     const extrinsic_state &ext_state) const;
  
!   bool feasible_p (logger *logger, feasibility_problem **out,
  		    engine *eng, const exploded_graph *eg) const;
  
    auto_vec<const exploded_edge *> m_edges;
--- 932,938 ----
    void dump_to_file (const char *filename,
  		     const extrinsic_state &ext_state) const;
  
!   bool feasible_p (logger *logger, std::unique_ptr<feasibility_problem> *out,
  		    engine *eng, const exploded_graph *eg) const;
  
    auto_vec<const exploded_edge *> m_edges;
*************** public:
*** 997,1002 ****
--- 973,979 ----
    bool maybe_update_for_edge (logger *logger,
  			      const exploded_edge *eedge,
  			      rejected_constraint **out_rc);
+   void update_for_stmt (const gimple *stmt);
  
    const region_model &get_model () const { return m_model; }
    const auto_sbitmap &get_snodes_visited () const { return m_snodes_visited; }
*************** class stmt_finder
*** 1021,1027 ****
  {
  public:
    virtual ~stmt_finder () {}
!   virtual stmt_finder *clone () const = 0;
    virtual const gimple *find_stmt (const exploded_path &epath) = 0;
  };
  
--- 998,1004 ----
  {
  public:
    virtual ~stmt_finder () {}
!   virtual std::unique_ptr<stmt_finder> clone () const = 0;
    virtual const gimple *find_stmt (const exploded_path &epath) = 0;
  };
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/feasible-graph.cc gcc-13.1.0/gcc/analyzer/feasible-graph.cc
*** gcc-12.2.0/gcc/analyzer/feasible-graph.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/feasible-graph.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A graph for exploring trees of feasible paths through the egraph.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A graph for exploring trees of feasible paths through the egraph.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 29,43 ****
  #include "diagnostic-core.h"
  #include "diagnostic-event-id.h"
  #include "diagnostic-path.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
- #include "shortest-paths.h"
- #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "ordered-hash-map.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
--- 30,37 ----
*************** feasible_node::dump_dot (graphviz_out *g
*** 110,115 ****
--- 104,139 ----
    pp_flush (pp);
  }
  
+ /* Attempt to get the region_model for this node's state at TARGET_STMT.
+    Return true and write to *OUT if found.
+    Return false if there's a problem.  */
+ 
+ bool
+ feasible_node::get_state_at_stmt (const gimple *target_stmt,
+ 				  region_model *out) const
+ {
+   if (!target_stmt)
+     return false;
+ 
+   feasibility_state result (m_state);
+ 
+   /* Update state for the stmts that were processed in each enode.  */
+   for (unsigned stmt_idx = 0; stmt_idx < m_inner_node->m_num_processed_stmts;
+        stmt_idx++)
+     {
+       const gimple *stmt = m_inner_node->get_processed_stmt (stmt_idx);
+       if (stmt == target_stmt)
+ 	{
+ 	  *out = result.get_model ();
+ 	  return true;
+ 	}
+       result.update_for_stmt (stmt);
+     }
+ 
+   /* TARGET_STMT not found; wrong node?  */
+   return false;
+ }
+ 
  /* Implementation of dump_dot vfunc for infeasible_node.
     In particular, show the rejected constraint.  */
  
*************** feasible_graph::add_feasibility_problem
*** 196,205 ****
  /* Make an exploded_path from the origin to FNODE's exploded_node,
     following the edges in the feasible_graph.  */
  
! exploded_path *
  feasible_graph::make_epath (feasible_node *fnode) const
  {
!   exploded_path *epath = new exploded_path ();
  
    /* FG is actually a tree.  Built the path backwards, by walking
       backwards from FNODE until we reach the origin.  */
--- 220,229 ----
  /* Make an exploded_path from the origin to FNODE's exploded_node,
     following the edges in the feasible_graph.  */
  
! std::unique_ptr<exploded_path>
  feasible_graph::make_epath (feasible_node *fnode) const
  {
!   std::unique_ptr<exploded_path> epath (new exploded_path ());
  
    /* FG is actually a tree.  Built the path backwards, by walking
       backwards from FNODE until we reach the origin.  */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/feasible-graph.h gcc-13.1.0/gcc/analyzer/feasible-graph.h
*** gcc-12.2.0/gcc/analyzer/feasible-graph.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/feasible-graph.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A graph for exploring trees of feasible paths through the egraph.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A graph for exploring trees of feasible paths through the egraph.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,28 ----
  #ifndef GCC_ANALYZER_FEASIBLE_GRAPH_H
  #define GCC_ANALYZER_FEASIBLE_GRAPH_H
  
+ #include "analyzer/exploded-graph.h"
+ 
  namespace ana {
  
  /* Forward decls.  */
*************** public:
*** 91,97 ****
    }
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const FINAL OVERRIDE;
  
    const feasibility_state &get_state () const { return m_state; }
    const region_model &get_model () const { return m_state.get_model (); }
--- 93,99 ----
    }
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const final override;
  
    const feasibility_state &get_state () const { return m_state; }
    const region_model &get_model () const { return m_state.get_model (); }
*************** public:
*** 102,107 ****
--- 104,112 ----
  
    unsigned get_path_length () const { return m_path_length; }
  
+   bool get_state_at_stmt (const gimple *target_stmt,
+ 			  region_model *out) const;
+ 
  private:
    feasibility_state m_state;
    unsigned m_path_length;
*************** public:
*** 123,129 ****
    ~infeasible_node () { delete m_rc; }
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const FINAL OVERRIDE;
  
  private:
    rejected_constraint *m_rc;
--- 128,134 ----
    ~infeasible_node () { delete m_rc; }
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const final override;
  
  private:
    rejected_constraint *m_rc;
*************** class base_feasible_edge : public dedge<
*** 135,141 ****
  {
   public:
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const FINAL OVERRIDE;
  
    const exploded_edge *get_inner_edge () const { return m_inner_edge; }
  
--- 140,146 ----
  {
   public:
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const final override;
  
    const exploded_edge *get_inner_edge () const { return m_inner_edge; }
  
*************** class feasible_graph : public digraph <f
*** 195,201 ****
  				const exploded_edge *eedge,
  				rejected_constraint *rc);
  
!   exploded_path *make_epath (feasible_node *fnode) const;
  
    void dump_feasible_path (const feasible_node &dst_fnode,
  			   const char *filename) const;
--- 200,206 ----
  				const exploded_edge *eedge,
  				rejected_constraint *rc);
  
!   std::unique_ptr<exploded_path> make_epath (feasible_node *fnode) const;
  
    void dump_feasible_path (const feasible_node &dst_fnode,
  			   const char *filename) const;
diff -Nrcpad gcc-12.2.0/gcc/analyzer/function-set.cc gcc-13.1.0/gcc/analyzer/function-set.cc
*** gcc-12.2.0/gcc/analyzer/function-set.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/function-set.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Sets of function names.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Sets of function names.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** test_stdio_example ()
*** 166,172 ****
      "getwc_unlocked",
      "putc_unlocked"
    };
!   const size_t count = sizeof(example) / sizeof (example[0]);
    function_set fs (example, count);
    fs.assert_sorted ();
    fs.assert_sane ();
--- 166,172 ----
      "getwc_unlocked",
      "putc_unlocked"
    };
!   const size_t count = ARRAY_SIZE (example);
    function_set fs (example, count);
    fs.assert_sorted ();
    fs.assert_sane ();
diff -Nrcpad gcc-12.2.0/gcc/analyzer/function-set.h gcc-13.1.0/gcc/analyzer/function-set.h
*** gcc-12.2.0/gcc/analyzer/function-set.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/function-set.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Sets of function names.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Sets of function names.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/infinite-recursion.cc gcc-13.1.0/gcc/analyzer/infinite-recursion.cc
*** gcc-12.2.0/gcc/analyzer/infinite-recursion.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/infinite-recursion.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,633 ----
+ /* Detection of infinite recursion.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "fold-const.h"
+ #include "gcc-rich-location.h"
+ #include "alloc-pool.h"
+ #include "fibonacci_heap.h"
+ #include "shortest-paths.h"
+ #include "diagnostic-core.h"
+ #include "diagnostic-event-id.h"
+ #include "diagnostic-path.h"
+ #include "diagnostic-metadata.h"
+ #include "function.h"
+ #include "pretty-print.h"
+ #include "sbitmap.h"
+ #include "bitmap.h"
+ #include "tristate.h"
+ #include "ordered-hash-map.h"
+ #include "selftest.h"
+ #include "json.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/constraint-manager.h"
+ #include "analyzer/sm.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/diagnostic-manager.h"
+ #include "cfg.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "gimple-pretty-print.h"
+ #include "cgraph.h"
+ #include "digraph.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/exploded-graph.h"
+ #include "make-unique.h"
+ #include "analyzer/checker-path.h"
+ #include "analyzer/feasible-graph.h"
+ 
+ /* A subclass of pending_diagnostic for complaining about suspected
+    infinite recursion.  */
+ 
+ class infinite_recursion_diagnostic
+ : public pending_diagnostic_subclass<infinite_recursion_diagnostic>
+ {
+ public:
+   infinite_recursion_diagnostic (const exploded_node *prev_entry_enode,
+ 				 const exploded_node *new_entry_enode,
+ 				 tree callee_fndecl)
+   : m_prev_entry_enode (prev_entry_enode),
+     m_new_entry_enode (new_entry_enode),
+     m_callee_fndecl (callee_fndecl),
+     m_prev_entry_event (NULL)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "infinite_recursion_diagnostic";
+   }
+ 
+   bool operator== (const infinite_recursion_diagnostic &other) const
+   {
+     return m_callee_fndecl == other.m_callee_fndecl;
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_infinite_recursion;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     /* "CWE-674: Uncontrolled Recursion".  */
+     diagnostic_metadata m;
+     m.add_cwe (674);
+     return warning_meta (rich_loc, m, get_controlling_option (),
+ 			 "infinite recursion");
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     const int frames_consumed = (m_new_entry_enode->get_stack_depth ()
+ 				 - m_prev_entry_enode->get_stack_depth ());
+     if (frames_consumed > 1)
+       return ev.formatted_print
+ 	("apparently infinite chain of mutually-recursive function calls,"
+ 	 " consuming %i stack frames per recursion",
+ 	 frames_consumed);
+     else
+       return ev.formatted_print ("apparently infinite recursion");
+   }
+ 
+   void
+   add_function_entry_event (const exploded_edge &eedge,
+ 			    checker_path *emission_path) final override
+   {
+     /* Subclass of function_entry_event for use when reporting both
+        the initial and subsequent entries to the function of interest,
+        allowing for cross-referencing the first event in the description
+        of the second.  */
+     class recursive_function_entry_event : public function_entry_event
+     {
+     public:
+       recursive_function_entry_event (const program_point &dst_point,
+ 				      const infinite_recursion_diagnostic &pd,
+ 				      bool topmost)
+       : function_entry_event (dst_point),
+ 	m_pd (pd),
+ 	m_topmost (topmost)
+       {
+       }
+ 
+       label_text
+       get_desc (bool can_colorize) const final override
+       {
+ 	if (m_topmost)
+ 	  {
+ 	    if (m_pd.m_prev_entry_event
+ 		&& m_pd.m_prev_entry_event->get_id_ptr ()->known_p ())
+ 	      return make_label_text
+ 		(can_colorize,
+ 		 "recursive entry to %qE; previously entered at %@",
+ 		 m_effective_fndecl,
+ 		 m_pd.m_prev_entry_event->get_id_ptr ());
+ 	    else
+ 	      return make_label_text (can_colorize, "recursive entry to %qE",
+ 				      m_effective_fndecl);
+ 	  }
+ 	else
+ 	  return make_label_text (can_colorize, "initial entry to %qE",
+ 				  m_effective_fndecl);
+       }
+ 
+     private:
+       const infinite_recursion_diagnostic &m_pd;
+       bool m_topmost;
+     };
+     const exploded_node *dst_node = eedge.m_dest;
+     const program_point &dst_point = dst_node->get_point ();
+     if (eedge.m_dest == m_prev_entry_enode)
+       {
+ 	gcc_assert (m_prev_entry_event == NULL);
+ 	std::unique_ptr<checker_event> prev_entry_event
+ 	  = make_unique <recursive_function_entry_event> (dst_point,
+ 							  *this, false);
+ 	m_prev_entry_event = prev_entry_event.get ();
+ 	emission_path->add_event (std::move (prev_entry_event));
+       }
+     else if (eedge.m_dest == m_new_entry_enode)
+       emission_path->add_event
+ 	(make_unique<recursive_function_entry_event> (dst_point, *this, true));
+     else
+       pending_diagnostic::add_function_entry_event (eedge, emission_path);
+   }
+ 
+   /* Customize the location where the warning_event appears, putting
+      it at the topmost entrypoint to the function.  */
+   void add_final_event (const state_machine *,
+ 			const exploded_node *enode,
+ 			const gimple *,
+ 			tree,
+ 			state_machine::state_t,
+ 			checker_path *emission_path) final override
+   {
+     gcc_assert (m_new_entry_enode);
+     emission_path->add_event
+       (make_unique<warning_event>
+        (event_loc_info (m_new_entry_enode->get_supernode
+ 			  ()->get_start_location (),
+ 			m_callee_fndecl,
+ 			m_new_entry_enode->get_stack_depth ()),
+ 	enode,
+ 	NULL, NULL, NULL));
+   }
+ 
+   /* Reject paths in which conjured svalues have affected control flow
+      since m_prev_entry_enode.  */
+ 
+   bool check_valid_fpath_p (const feasible_node &final_fnode,
+ 			    const gimple *)
+     const final override
+   {
+     /* Reject paths in which calls with unknown side effects have occurred
+        since m_prev_entry_enode.
+        Find num calls with side effects.  Walk backward until we reach the
+        pref */
+     gcc_assert (final_fnode.get_inner_node () == m_new_entry_enode);
+ 
+     /* FG is actually a tree.  Walk backwards from FINAL_FNODE until we
+        reach the prev_entry_enode (or the origin).  */
+     const feasible_node *iter_fnode = &final_fnode;
+     while (iter_fnode->get_inner_node ()->m_index != 0)
+       {
+ 	gcc_assert (iter_fnode->m_preds.length () == 1);
+ 
+ 	feasible_edge *pred_fedge
+ 	  = static_cast <feasible_edge *> (iter_fnode->m_preds[0]);
+ 
+ 	/* Determine if conjured svalues have affected control flow
+ 	   since the prev entry node.  */
+ 	if (fedge_uses_conjured_svalue_p (pred_fedge))
+ 	  /* If so, then reject this diagnostic.  */
+ 	  return false;
+ 	iter_fnode = static_cast <feasible_node *> (pred_fedge->m_src);
+ 	if (iter_fnode->get_inner_node () == m_prev_entry_enode)
+ 	  /* Accept this diagnostic.  */
+ 	  return true;
+     }
+ 
+     /* We shouldn't get here; if we do, reject the diagnostic.  */
+     gcc_unreachable ();
+     return false;
+   }
+ 
+ private:
+   /* Return true iff control flow along FEDGE was affected by
+      a conjured_svalue.  */
+   static bool fedge_uses_conjured_svalue_p (feasible_edge *fedge)
+   {
+     const exploded_edge *eedge = fedge->get_inner_edge ();
+     const superedge *sedge = eedge->m_sedge;
+     if (!sedge)
+       return false;
+     const cfg_superedge *cfg_sedge = sedge->dyn_cast_cfg_superedge ();
+     if (!cfg_sedge)
+       return false;
+     const gimple *last_stmt = sedge->m_src->get_last_stmt ();
+     if (!last_stmt)
+       return false;
+ 
+     const feasible_node *dst_fnode
+       = static_cast<const feasible_node *> (fedge->m_dest);
+     const region_model &model = dst_fnode->get_state ().get_model ();
+ 
+     if (const gcond *cond_stmt = dyn_cast <const gcond *> (last_stmt))
+       {
+ 	if (expr_uses_conjured_svalue_p (model, gimple_cond_lhs (cond_stmt)))
+ 	  return true;
+ 	if (expr_uses_conjured_svalue_p (model, gimple_cond_rhs (cond_stmt)))
+ 	  return true;
+       }
+     else if (const gswitch *switch_stmt
+ 	       = dyn_cast <const gswitch *> (last_stmt))
+       {
+ 	if (expr_uses_conjured_svalue_p (model,
+ 					 gimple_switch_index (switch_stmt)))
+ 	  return true;
+       }
+     return false;
+   }
+ 
+   /* Return true iff EXPR is affected by a conjured_svalue.  */
+   static bool expr_uses_conjured_svalue_p (const region_model &model,
+ 					   tree expr)
+   {
+     class conjured_svalue_finder : public visitor
+     {
+     public:
+       conjured_svalue_finder () : m_found_conjured_svalues (false)
+       {
+       }
+       void
+       visit_conjured_svalue (const conjured_svalue *) final override
+       {
+ 	m_found_conjured_svalues = true;
+       }
+ 
+       bool m_found_conjured_svalues;
+     };
+ 
+     const svalue *sval = model.get_rvalue (expr, NULL);
+     conjured_svalue_finder v;
+     sval->accept (&v);
+     return v.m_found_conjured_svalues;
+   }
+ 
+   const exploded_node *m_prev_entry_enode;
+   const exploded_node *m_new_entry_enode;
+   tree m_callee_fndecl;
+   const checker_event *m_prev_entry_event;
+ };
+ 
+ /* Return true iff ENODE is the PK_BEFORE_SUPERNODE at a function
+    entrypoint.  */
+ 
+ static bool
+ is_entrypoint_p (exploded_node *enode)
+ {
+   /* Look for an entrypoint to a function...  */
+   const supernode *snode = enode->get_supernode ();
+   if (!snode)
+     return false;
+   if (!snode->entry_p ())
+     return false;;
+   const program_point &point = enode->get_point ();
+   if (point.get_kind () != PK_BEFORE_SUPERNODE)
+     return false;
+   return true;
+ }
+ 
+ /* Walk backwards through the eg, looking for the first
+    enode we find that's also the entrypoint of the same function.  */
+ 
+ exploded_node *
+ exploded_graph::find_previous_entry_to (function *top_of_stack_fun,
+ 					exploded_node *enode) const
+ {
+   auto_vec<exploded_node *> worklist;
+   hash_set<exploded_node *> visited;
+ 
+   visited.add (enode);
+   for (auto in_edge : enode->m_preds)
+     worklist.safe_push (in_edge->m_src);
+ 
+   while (worklist.length () > 0)
+     {
+       exploded_node *iter = worklist.pop ();
+ 
+       if (is_entrypoint_p (iter)
+ 	  && iter->get_function () == top_of_stack_fun)
+ 	return iter;
+ 
+       if (visited.contains (iter))
+ 	continue;
+       visited.add (iter);
+       for (auto in_edge : iter->m_preds)
+ 	worklist.safe_push (in_edge->m_src);
+     }
+ 
+   /* Not found.  */
+   return NULL;
+ }
+ 
+ /* Given BASE_REG within ENCLOSING_FRAME (such as a function parameter),
+    remap it to the equivalent region within EQUIV_PREV_FRAME.
+ 
+    For example, given param "n" within frame "foo@3", and equiv prev frame
+    "foo@1", remap it to param "n" within frame "foo@1".  */
+ 
+ static const region *
+ remap_enclosing_frame (const region *base_reg,
+ 		       const frame_region *enclosing_frame,
+ 		       const frame_region *equiv_prev_frame,
+ 		       region_model_manager *mgr)
+ {
+   gcc_assert (base_reg->get_parent_region () == enclosing_frame);
+   switch (base_reg->get_kind ())
+     {
+     default:
+       /* We should only encounter params and varargs at the topmost
+ 	 entrypoint.  */
+       gcc_unreachable ();
+ 
+     case RK_VAR_ARG:
+       {
+ 	const var_arg_region *var_arg_reg = (const var_arg_region *)base_reg;
+ 	return mgr->get_var_arg_region (equiv_prev_frame,
+ 					var_arg_reg->get_index ());
+       }
+     case RK_DECL:
+       {
+ 	const decl_region *decl_reg = (const decl_region *)base_reg;
+ 	return equiv_prev_frame->get_region_for_local (mgr,
+ 						       decl_reg->get_decl (),
+ 						       NULL);
+       }
+     }
+ }
+ 
+ /* Return true iff SVAL is unknown, or contains an unknown svalue.  */
+ 
+ static bool
+ contains_unknown_p (const svalue *sval)
+ {
+   if (sval->get_kind () == SK_UNKNOWN)
+     return true;
+   if (const compound_svalue *compound_sval
+ 	= sval->dyn_cast_compound_svalue ())
+     for (auto iter : *compound_sval)
+       if (iter.second->get_kind () == SK_UNKNOWN)
+ 	return true;
+   return false;
+ }
+ 
+ /* Subroutine of sufficiently_different_p.  Compare the store bindings
+    for BASE_REG within NEW_ENTRY_ENODE and PREV_ENTRY_ENODE.
+ 
+    Return true if the state of NEW_ENTRY_ENODE is sufficiently different
+    from PREV_ENTRY_ENODE within BASE_REG to suggest that some variant is
+    being modified, and thus the recursion isn't infinite.
+ 
+    Return false if the states for BASE_REG are effectively the same.  */
+ 
+ static bool
+ sufficiently_different_region_binding_p (exploded_node *new_entry_enode,
+ 					 exploded_node *prev_entry_enode,
+ 					 const region *base_reg)
+ {
+   /* Compare the stores of the two enodes.  */
+   const region_model &new_model
+     = *new_entry_enode->get_state ().m_region_model;
+   const region_model &prev_model
+     = *prev_entry_enode->get_state ().m_region_model;
+ 
+   /* Get the value within the new frame.  */
+   const svalue *new_sval
+     = new_model.get_store_value (base_reg, NULL);
+ 
+   /* If any part of the value is UNKNOWN (e.g. due to hitting
+      complexity limits) assume that it differs from the previous
+      value.  */
+   if (contains_unknown_p (new_sval))
+     return true;
+ 
+   /* Get the equivalent value within the old enode.  */
+   const svalue *prev_sval;
+ 
+   if (const frame_region *enclosing_frame
+       = base_reg->maybe_get_frame_region ())
+     {
+       /* We have a binding within a frame in the new entry enode.  */
+ 
+       /* Consider changes in bindings below the original entry
+ 	 to the recursion.  */
+       const int old_stack_depth = prev_entry_enode->get_stack_depth ();
+       if (enclosing_frame->get_stack_depth () < old_stack_depth)
+ 	prev_sval = prev_model.get_store_value (base_reg, NULL);
+       else
+ 	{
+ 	  /* Ignore bindings within frames below the new entry node.  */
+ 	  const int new_stack_depth = new_entry_enode->get_stack_depth ();
+ 	  if (enclosing_frame->get_stack_depth () < new_stack_depth)
+ 	    return false;
+ 
+ 	  /* We have a binding within the frame of the new entry node,
+ 	     presumably a parameter.  */
+ 
+ 	  /* Get the value within the equivalent frame of
+ 	     the old entrypoint; typically will be the initial_svalue
+ 	     of the parameter.  */
+ 	  const frame_region *equiv_prev_frame
+ 	    = prev_model.get_current_frame ();
+ 	  const region *equiv_prev_base_reg
+ 	    = remap_enclosing_frame (base_reg,
+ 				     enclosing_frame,
+ 				     equiv_prev_frame,
+ 				     new_model.get_manager ());
+ 	  prev_sval
+ 	    = prev_model.get_store_value (equiv_prev_base_reg, NULL);
+ 	}
+     }
+   else
+     prev_sval = prev_model.get_store_value (base_reg, NULL);
+ 
+   /* If the prev_sval contains UNKNOWN (e.g. due to hitting complexity limits)
+      assume that it will differ from any new value.  */
+   if (contains_unknown_p (prev_sval))
+     return true;
+ 
+   if (new_sval != prev_sval)
+     return true;
+ 
+   return false;
+ }
+ 
+ /* Compare the state of memory at NEW_ENTRY_ENODE and PREV_ENTRY_ENODE,
+    both of which are entrypoints to the same function, where recursion has
+    occurred.
+ 
+    Return true if the state of NEW_ENTRY_ENODE is sufficiently different
+    from PREV_ENTRY_ENODE to suggest that some variant is being modified,
+    and thus the recursion isn't infinite.
+ 
+    Return false if the states are effectively the same, suggesting that
+    the recursion is infinite.
+ 
+    For example, consider mutually recursive functions "foo" and "bar".
+    At the entrypoint to a "foo" frame where we've detected recursion,
+    we might have three frames on the stack: the new 'foo'@3, an inner
+    'bar'@2, and the innermost 'foo'@1.
+ 
+      (gdb) call enode->dump(m_ext_state)
+      EN: 16
+      callstring: [(SN: 9 -> SN: 3 in foo), (SN: 5 -> SN: 8 in bar)]
+      before SN: 0 (NULL from-edge)
+ 
+      rmodel:
+      stack depth: 3
+        frame (index 2): frame: ‘foo’@3
+        frame (index 1): frame: ‘bar’@2
+        frame (index 0): frame: ‘foo’@1
+      clusters within root region
+        cluster for: (*INIT_VAL(f_4(D)))
+      clusters within frame: ‘bar’@2
+        cluster for: b_2(D): INIT_VAL(f_4(D))
+      clusters within frame: ‘foo’@3
+        cluster for: f_4(D): INIT_VAL(f_4(D))
+      m_called_unknown_fn: FALSE
+ 
+    whereas for the previous entry node we'd have just the innermost
+    'foo'@1
+ 
+      (gdb) call prev_entry_enode->dump(m_ext_state)
+      EN: 1
+      callstring: []
+      before SN: 0 (NULL from-edge)
+ 
+      rmodel:
+      stack depth: 1
+        frame (index 0): frame: ‘foo’@1
+      clusters within root region
+        cluster for: (*INIT_VAL(f_4(D)))
+      m_called_unknown_fn: FALSE
+ 
+    We want to abstract away frames 1 and 2 in the new entry enode,
+    and compare its frame 3 with the frame 1 in the previous entry
+    enode, and determine if enough state changes between them to
+    rule out infinite recursion.  */
+ 
+ static bool
+ sufficiently_different_p (exploded_node *new_entry_enode,
+ 			  exploded_node *prev_entry_enode,
+ 			  logger *logger)
+ {
+   LOG_SCOPE (logger);
+   gcc_assert (new_entry_enode);
+   gcc_assert (prev_entry_enode);
+   gcc_assert (is_entrypoint_p (new_entry_enode));
+   gcc_assert (is_entrypoint_p (prev_entry_enode));
+ 
+   /* Compare the stores of the two enodes.  */
+   const region_model &new_model
+     = *new_entry_enode->get_state ().m_region_model;
+   const store &new_store = *new_model.get_store ();
+ 
+   for (auto kv : new_store)
+     {
+       const region *base_reg = kv.first;
+       if (sufficiently_different_region_binding_p (new_entry_enode,
+ 						   prev_entry_enode,
+ 						   base_reg))
+ 	return true;
+     }
+ 
+   /* No significant differences found.  */
+   return false;
+ }
+ 
+ /* Implementation of -Wanalyzer-infinite-recursion.
+ 
+    Called when adding ENODE to the graph, after adding its first in-edge.
+ 
+    For function entrypoints, see if recursion has occurred, and, if so,
+    check if the state of memory changed between the recursion levels,
+    which would suggest some kind of decreasing variant that leads to
+    termination.
+ 
+    For recursive calls where the state of memory is effectively unchanged
+    between recursion levels, warn with -Wanalyzer-infinite-recursion.  */
+ 
+ void
+ exploded_graph::detect_infinite_recursion (exploded_node *enode)
+ {
+   if (!is_entrypoint_p (enode))
+     return;
+   function *top_of_stack_fun = enode->get_function ();
+   gcc_assert (top_of_stack_fun);
+ 
+   /* ....where a call to that function is already in the call string.  */
+   const call_string &call_string = enode->get_point ().get_call_string ();
+ 
+   if (call_string.count_occurrences_of_function (top_of_stack_fun) < 2)
+     return;
+ 
+   tree fndecl = top_of_stack_fun->decl;
+ 
+   log_scope s (get_logger (),
+ 	       "checking for infinite recursion",
+ 	       "considering recursion at EN: %i entering %qE",
+ 	       enode->m_index, fndecl);
+ 
+   /* Find enode that's the entrypoint for the previous frame for fndecl
+      in the recursion.  */
+   exploded_node *prev_entry_enode
+     = find_previous_entry_to (top_of_stack_fun, enode);
+   gcc_assert (prev_entry_enode);
+   if (get_logger ())
+     get_logger ()->log ("previous entrypoint to %qE is EN: %i",
+ 			fndecl, prev_entry_enode->m_index);
+ 
+   /* Look for changes to the state of memory between the recursion levels.  */
+   if (sufficiently_different_p (enode, prev_entry_enode, get_logger ()))
+     return;
+ 
+   /* Otherwise, the state of memory is effectively the same between the two
+      recursion levels; warn.  */
+ 
+   const supernode *caller_snode = call_string.get_top_of_stack ().m_caller;
+   const supernode *snode = enode->get_supernode ();
+   gcc_assert (caller_snode->m_returning_call);
+   get_diagnostic_manager ().add_diagnostic
+     (enode, snode, caller_snode->m_returning_call, NULL,
+      make_unique<infinite_recursion_diagnostic> (prev_entry_enode,
+ 						 enode,
+ 						 fndecl));
+ }
diff -Nrcpad gcc-12.2.0/gcc/analyzer/inlining-iterator.h gcc-13.1.0/gcc/analyzer/inlining-iterator.h
*** gcc-12.2.0/gcc/analyzer/inlining-iterator.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/inlining-iterator.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,109 ----
+ /* Iterator for walking a chain of inlining locations.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_INLINING_ITERATOR_H
+ #define GCC_ANALYZER_INLINING_ITERATOR_H
+ 
+ /* Iterator for walking a chain of inlining locations.
+ 
+    The fndecls and locations will be traversed from innermost to outermost.
+    For example, given:
+ 
+     inline void inner (void)
+     {
+        ...LOCATION HERE...
+     }
+     void outer (void)
+     {
+        inner (); <-- CALLSITE
+     }
+ 
+    then the fndecl will be "inner" on the initial iteration, and "outer" on
+    the second (final) iteration.
+ 
+    Compare with lhd_print_error_function, cp_print_error_function,
+    and optrecord_json_writer::inlining_chain_to_json.  */
+ 
+ class inlining_iterator
+ {
+ public:
+   inlining_iterator (location_t loc)
+   : m_abstract_origin (LOCATION_BLOCK (loc)),
+     m_callsite (UNKNOWN_LOCATION), m_fndecl (NULL),
+     m_next_abstract_origin (NULL)
+   {
+     prepare_iteration ();
+   }
+ 
+   bool done_p () const { return m_abstract_origin == NULL; }
+ 
+   void next ()
+   {
+     m_abstract_origin = m_next_abstract_origin;
+     prepare_iteration ();
+   }
+ 
+   tree get_fndecl () const { return m_fndecl; }
+   location_t get_callsite () const { return m_callsite; }
+   tree get_block () const { return m_abstract_origin; }
+ 
+ private:
+   void prepare_iteration ()
+   {
+     if (done_p ())
+       return;
+     tree block = m_abstract_origin;
+     m_callsite = BLOCK_SOURCE_LOCATION (block);
+     m_fndecl = NULL;
+     block = BLOCK_SUPERCONTEXT (block);
+     while (block && TREE_CODE (block) == BLOCK
+ 	   && BLOCK_ABSTRACT_ORIGIN (block))
+       {
+ 	tree ao = BLOCK_ABSTRACT_ORIGIN (block);
+ 	if (TREE_CODE (ao) == FUNCTION_DECL)
+ 	  {
+ 	    m_fndecl = ao;
+ 	    break;
+ 	  }
+ 	else if (TREE_CODE (ao) != BLOCK)
+ 	  break;
+ 
+ 	block = BLOCK_SUPERCONTEXT (block);
+       }
+     if (m_fndecl)
+       m_next_abstract_origin = block;
+     else
+       {
+ 	while (block && TREE_CODE (block) == BLOCK)
+ 	  block = BLOCK_SUPERCONTEXT (block);
+ 
+ 	if (block && TREE_CODE (block) == FUNCTION_DECL)
+ 	  m_fndecl = block;
+ 	m_next_abstract_origin = NULL;
+       }
+   }
+ 
+   tree m_abstract_origin;
+   location_t m_callsite;
+   tree m_fndecl;
+   tree m_next_abstract_origin;
+ };
+ 
+ #endif /* GCC_ANALYZER_INLINING_ITERATOR_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/kf-analyzer.cc gcc-13.1.0/gcc/analyzer/kf-analyzer.cc
*** gcc-12.2.0/gcc/analyzer/kf-analyzer.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/kf-analyzer.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,386 ----
+ /* Handling for the various __analyzer_* known functions.
+    Copyright (C) 2020-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "diagnostic-core.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "diagnostic.h"
+ #include "tree-diagnostic.h" /* for default_tree_printer.  */
+ #include "analyzer/region-model.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/call-details.h"
+ #include "make-unique.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Handle calls to "__analyzer_break" by triggering a breakpoint within
+    the analyzer.  */
+ 
+ class kf_analyzer_break : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+   void impl_call_pre (const call_details &) const final override
+   {
+     /* TODO: is there a good cross-platform way to do this?  */
+     raise (SIGINT);
+   }
+ };
+ 
+ /* Handler for calls to "__analyzer_describe".
+ 
+    Emit a warning describing the 2nd argument (which can be of any
+    type), at the given verbosity level.  This is for use when
+    debugging, and may be of use in DejaGnu tests.  */
+ 
+ class kf_analyzer_describe : 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 &cd) const final override
+   {
+     if (!cd.get_ctxt ())
+       return;
+     tree t_verbosity = cd.get_arg_tree (0);
+     const svalue *sval = cd.get_arg_svalue (1);
+     bool simple = zerop (t_verbosity);
+     label_text desc = sval->get_desc (simple);
+     warning_at (cd.get_location (), 0, "svalue: %qs", desc.get ());
+   }
+ };
+ 
+ /* Handler for calls to "__analyzer_dump_capacity".
+ 
+    Emit a warning describing the capacity of the base region of
+    the region pointed to by the 1st argument.
+    This is for use when debugging, and may be of use in DejaGnu tests.  */
+ 
+ class kf_analyzer_dump_capacity : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1
+ 	    && cd.arg_is_pointer_p (0));
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_context *ctxt = cd.get_ctxt ();
+     if (!ctxt)
+       return;
+     region_model *model = cd.get_model ();
+     tree t_ptr = cd.get_arg_tree (0);
+     const svalue *sval_ptr = model->get_rvalue (t_ptr, ctxt);
+     const region *reg = model->deref_rvalue (sval_ptr, t_ptr, ctxt);
+     const region *base_reg = reg->get_base_region ();
+     const svalue *capacity = model->get_capacity (base_reg);
+     label_text desc = capacity->get_desc (true);
+     warning_at (cd.get_call_stmt ()->location, 0,
+ 		"capacity: %qs", desc.get ());
+   }
+ };
+ 
+ /* Compare D1 and D2 using their names, and then IDs to order them.  */
+ 
+ static int
+ cmp_decls (tree d1, tree d2)
+ {
+   gcc_assert (DECL_P (d1));
+   gcc_assert (DECL_P (d2));
+   if (DECL_NAME (d1) && DECL_NAME (d2))
+     if (int cmp = strcmp (IDENTIFIER_POINTER (DECL_NAME (d1)),
+ 			  IDENTIFIER_POINTER (DECL_NAME (d2))))
+       return cmp;
+   return (int)DECL_UID (d1) - (int)DECL_UID (d2);
+ }
+ 
+ /* Comparator for use by vec<tree>::qsort,
+    using their names, and then IDs to order them.  */
+ 
+ static int
+ cmp_decls_ptr_ptr (const void *p1, const void *p2)
+ {
+   tree const *d1 = (tree const *)p1;
+   tree const *d2 = (tree const *)p2;
+ 
+   return cmp_decls (*d1, *d2);
+ }
+ 
+ /* Handler for calls to "__analyzer_dump_escaped".
+ 
+    Emit a warning giving the number of decls that have escaped, followed
+    by a comma-separated list of their names, in alphabetical order.
+ 
+    This is for use when debugging, and may be of use in DejaGnu tests.  */
+ 
+ class kf_analyzer_dump_escaped : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_context *ctxt = cd.get_ctxt ();
+     if (!ctxt)
+       return;
+     region_model *model = cd.get_model ();
+ 
+     auto_vec<tree> escaped_decls;
+     for (auto iter : *model->get_store ())
+       {
+ 	const binding_cluster *c = iter.second;
+ 	if (!c->escaped_p ())
+ 	  continue;
+ 	if (tree decl = c->get_base_region ()->maybe_get_decl ())
+ 	  escaped_decls.safe_push (decl);
+       }
+ 
+     /* Sort them into deterministic order; alphabetical is
+        probably most user-friendly.  */
+     escaped_decls.qsort (cmp_decls_ptr_ptr);
+ 
+     pretty_printer pp;
+     pp_format_decoder (&pp) = default_tree_printer;
+     pp_show_color (&pp) = pp_show_color (global_dc->printer);
+     bool first = true;
+     for (auto iter : escaped_decls)
+       {
+ 	if (first)
+ 	  first = false;
+ 	else
+ 	  pp_string (&pp, ", ");
+ 	pp_printf (&pp, "%qD", iter);
+       }
+     /* Print the number to make it easier to write DejaGnu tests for
+        the "nothing has escaped" case.  */
+     warning_at (cd.get_location (), 0, "escaped: %i: %s",
+ 		escaped_decls.length (),
+ 		pp_formatted_text (&pp));
+   }
+ };
+ 
+ /* Placeholder handler for calls to "__analyzer_dump_exploded_nodes".
+    This is a no-op; the real implementation happens when the
+    exploded_graph is postprocessed.  */
+ 
+ class kf_analyzer_dump_exploded_nodes : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 1;
+   }
+ };
+ 
+ /* Handler for calls to "__analyzer_dump_named_constant".
+ 
+    Look up the given name, and emit a warning describing the
+    state of the corresponding stashed value.
+ 
+    This is for use when debugging, and for DejaGnu tests.  */
+ 
+ class kf_analyzer_dump_named_constant : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 1;
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_context *ctxt = cd.get_ctxt ();
+     if (!ctxt)
+       return;
+ 
+     const char *name = cd.get_arg_string_literal (0);
+     if (!name)
+       {
+ 	error_at (cd.get_location (), "cannot determine name");
+ 	return;
+       }
+     tree value = get_stashed_constant_by_name (name);
+     if (value)
+       warning_at (cd.get_location (), 0, "named constant %qs has value %qE",
+ 		  name, value);
+     else
+       warning_at (cd.get_location (), 0, "named constant %qs has unknown value",
+ 		  name);
+   }
+ };
+ 
+ /* A pending_diagnostic subclass for implementing "__analyzer_dump_path".  */
+ 
+ class dump_path_diagnostic
+   : public pending_diagnostic_subclass<dump_path_diagnostic>
+ {
+ public:
+   int get_controlling_option () const final override
+   {
+     return 0;
+   }
+ 
+   bool emit (rich_location *richloc) final override
+   {
+     inform (richloc, "path");
+     return true;
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "dump_path_diagnostic";
+   }
+ 
+   bool operator== (const dump_path_diagnostic &) const
+   {
+     return true;
+   }
+ };
+ 
+ /* Handle calls to "__analyzer_dump_path" by queuing a diagnostic at this
+    exploded_node.  */
+ 
+ class kf_analyzer_dump_path : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_context *ctxt = cd.get_ctxt ();
+     if (!ctxt)
+       return;
+     ctxt->warn (make_unique<dump_path_diagnostic> ());
+   }
+ };
+ 
+ /* Handle calls to "__analyzer_dump_region_model" by dumping
+    the region model's state to stderr.  */
+ 
+ class kf_analyzer_dump_region_model : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_context *ctxt = cd.get_ctxt ();
+     if (!ctxt)
+       return;
+     region_model *model = cd.get_model ();
+     model->dump (false);
+   }
+ };
+ 
+ /* Handle a call to "__analyzer_eval" by evaluating the input
+    and dumping as a dummy warning, so that test cases can use
+    dg-warning to validate the result (and so unexpected warnings will
+    lead to DejaGnu failures).
+    Broken out as a subroutine to make it easier to put a breakpoint on it
+    - though typically this doesn't help, as we have an SSA name as the arg,
+    and what's more interesting is usually the def stmt for that name.  */
+ 
+ class kf_analyzer_eval : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 1;
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_context *ctxt = cd.get_ctxt ();
+     if (!ctxt)
+       return;
+     region_model *model = cd.get_model ();
+ 
+     tree t_arg = cd.get_arg_tree (0);
+     tristate t = model->eval_condition (t_arg, NE_EXPR, integer_zero_node,
+ 					ctxt);
+     warning_at (cd.get_location (), 0, "%s", t.as_string ());
+   }
+ };
+ 
+ /* Handler for "__analyzer_get_unknown_ptr".  */
+ 
+ class kf_analyzer_get_unknown_ptr : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model_manager *mgr = cd.get_manager ();
+     const svalue *ptr_sval
+       = mgr->get_or_create_unknown_svalue (cd.get_lhs_type ());
+     cd.maybe_set_lhs (ptr_sval);
+   }
+ };
+ 
+ /* Populate KFM with instances of known functions used for debugging the
+    analyzer and for writing DejaGnu tests, all with a "__analyzer_" prefix.  */
+ 
+ void
+ register_known_analyzer_functions (known_function_manager &kfm)
+ {
+   kfm.add ("__analyzer_break", make_unique<kf_analyzer_break> ());
+   kfm.add ("__analyzer_describe", make_unique<kf_analyzer_describe> ());
+   kfm.add ("__analyzer_dump_capacity",
+ 	   make_unique<kf_analyzer_dump_capacity> ());
+   kfm.add ("__analyzer_dump_escaped", make_unique<kf_analyzer_dump_escaped> ());
+   kfm.add ("__analyzer_dump_exploded_nodes",
+ 	   make_unique<kf_analyzer_dump_exploded_nodes> ());
+   kfm.add ("__analyzer_dump_named_constant",
+ 	   make_unique<kf_analyzer_dump_named_constant> ());
+   kfm.add ("__analyzer_dump_path", make_unique<kf_analyzer_dump_path> ());
+   kfm.add ("__analyzer_dump_region_model",
+ 	   make_unique<kf_analyzer_dump_region_model> ());
+   kfm.add ("__analyzer_eval", make_unique<kf_analyzer_eval> ());
+   kfm.add ("__analyzer_get_unknown_ptr",
+ 	   make_unique<kf_analyzer_get_unknown_ptr> ());
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/kf-lang-cp.cc gcc-13.1.0/gcc/analyzer/kf-lang-cp.cc
*** gcc-12.2.0/gcc/analyzer/kf-lang-cp.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/kf-lang-cp.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,111 ----
+ /* Handling for the known behavior of various functions specific to C++.
+    Copyright (C) 2020-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "diagnostic.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/call-details.h"
+ #include "make-unique.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Implementations of specific functions.  */
+ 
+ /* Handler for "operator new" and "operator new []".  */
+ 
+ class kf_operator_new : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 1;
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     region_model_manager *mgr = cd.get_manager ();
+     const svalue *size_sval = cd.get_arg_svalue (0);
+     const region *new_reg
+       = model->get_or_create_region_for_heap_alloc (size_sval, cd.get_ctxt ());
+     if (cd.get_lhs_type ())
+       {
+ 	const svalue *ptr_sval
+ 	  = mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+ 	cd.maybe_set_lhs (ptr_sval);
+       }
+   }
+ };
+ 
+ /* Handler for "operator delete", both the sized and unsized variants
+    (2 arguments and 1 argument respectively), and for "operator delete []"  */
+ 
+ class kf_operator_delete : public known_function
+ {
+ public:
+   kf_operator_delete (unsigned num_args) : m_num_args (num_args) {}
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == m_num_args;
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     const svalue *ptr_sval = cd.get_arg_svalue (0);
+     if (const region *freed_reg = ptr_sval->maybe_get_region ())
+       {
+ 	/* If the ptr points to an underlying heap region, delete it,
+ 	   poisoning pointers.  */
+ 	model->unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
+       }
+   }
+ 
+ private:
+   unsigned m_num_args;
+ };
+ 
+ /* Populate KFM with instances of known functions relating to C++.  */
+ 
+ void
+ register_known_functions_lang_cp (known_function_manager &kfm)
+ {
+   kfm.add ("operator new", make_unique<kf_operator_new> ());
+   kfm.add ("operator new []", make_unique<kf_operator_new> ());
+   kfm.add ("operator delete", make_unique<kf_operator_delete> (1));
+   kfm.add ("operator delete", make_unique<kf_operator_delete> (2));
+   kfm.add ("operator delete []", make_unique<kf_operator_delete> (1));
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/kf.cc gcc-13.1.0/gcc/analyzer/kf.cc
*** gcc-12.2.0/gcc/analyzer/kf.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/kf.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,1078 ----
+ /* Handling for the known behavior of various specific functions.
+    Copyright (C) 2020-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "diagnostic-core.h"
+ #include "diagnostic-metadata.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "diagnostic.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/call-details.h"
+ #include "analyzer/call-info.h"
+ #include "make-unique.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Implementations of specific functions.  */
+ 
+ /* Handler for "alloca".  */
+ 
+ class kf_alloca : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 1;
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_alloca::impl_call_pre (const call_details &cd) const
+ {
+   const svalue *size_sval = cd.get_arg_svalue (0);
+ 
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   const region *new_reg
+     = model->create_region_for_alloca (size_sval, cd.get_ctxt ());
+   const svalue *ptr_sval
+     = mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+   cd.maybe_set_lhs (ptr_sval);
+ }
+ 
+ /* Handler for "__builtin_expect" etc.  */
+ 
+ class kf_expect : public internal_known_function
+ {
+ public:
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     /* __builtin_expect's return value is its initial argument.  */
+     const svalue *sval = cd.get_arg_svalue (0);
+     cd.maybe_set_lhs (sval);
+   }
+ };
+ 
+ /* Handler for "calloc".  */
+ 
+ class kf_calloc : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 2
+ 	    && cd.arg_is_size_p (0)
+ 	    && cd.arg_is_size_p (1));
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_calloc::impl_call_pre (const call_details &cd) const
+ {
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+   const svalue *nmemb_sval = cd.get_arg_svalue (0);
+   const svalue *size_sval = cd.get_arg_svalue (1);
+   /* TODO: check for overflow here?  */
+   const svalue *prod_sval
+     = mgr->get_or_create_binop (size_type_node, MULT_EXPR,
+ 				nmemb_sval, size_sval);
+   const region *new_reg
+     = model->get_or_create_region_for_heap_alloc (prod_sval, cd.get_ctxt ());
+   const region *sized_reg
+     = mgr->get_sized_region (new_reg, NULL_TREE, prod_sval);
+   model->zero_fill_region (sized_reg);
+   if (cd.get_lhs_type ())
+     {
+       const svalue *ptr_sval
+ 	= mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+       cd.maybe_set_lhs (ptr_sval);
+     }
+ }
+ 
+ /* Handler for glibc's "__errno_location".  */
+ 
+ class kf_errno_location : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     if (cd.get_lhs_region ())
+       {
+ 	region_model_manager *mgr = cd.get_manager ();
+ 	const region *errno_reg = mgr->get_errno_region ();
+ 	const svalue *errno_ptr = mgr->get_ptr_svalue (cd.get_lhs_type (),
+ 						       errno_reg);
+ 	cd.maybe_set_lhs (errno_ptr);
+       }
+   }
+ };
+ 
+ /* Handler for "error" and "error_at_line" from GNU's non-standard <error.h>.
+    MIN_ARGS identifies the minimum number of expected arguments
+    to be consistent with such a call (3 and 5 respectively).  */
+ 
+ class kf_error : public known_function
+ {
+ public:
+   kf_error (unsigned min_args) : m_min_args (min_args) {}
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () >= m_min_args
+ 	    && cd.get_arg_type (0) == integer_type_node);
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override;
+ 
+ private:
+   unsigned m_min_args;
+ };
+ 
+ void
+ kf_error::impl_call_pre (const call_details &cd) const
+ {
+   /* The process exits if status != 0, so it only continues
+      for the case where status == 0.
+      Add that constraint, or terminate this analysis path.  */
+   tree status = cd.get_arg_tree (0);
+   region_model_context *ctxt = cd.get_ctxt ();
+   region_model *model = cd.get_model ();
+   if (!model->add_constraint (status, EQ_EXPR, integer_zero_node, ctxt))
+     if (ctxt)
+       ctxt->terminate_path ();
+ }
+ 
+ /* Handler for "free", after sm-handling.
+ 
+    If the ptr points to an underlying heap region, delete the region,
+    poisoning pointers to it and regions within it.
+ 
+    We delay this until after sm-state has been updated so that the
+    sm-handling can transition all of the various casts of the pointer
+    to a "freed" state *before* we delete the related region here.
+ 
+    This has to be done here so that the sm-handling can use the fact
+    that they point to the same region to establish that they are equal
+    (in region_model::eval_condition), and thus transition
+    all pointers to the region to the "freed" state together, regardless
+    of casts.  */
+ 
+ class kf_free : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 0 && cd.arg_is_pointer_p (0));
+   }
+   void impl_call_post (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_free::impl_call_post (const call_details &cd) const
+ {
+   const svalue *ptr_sval = cd.get_arg_svalue (0);
+   if (const region *freed_reg = ptr_sval->maybe_get_region ())
+     {
+       /* If the ptr points to an underlying heap region, delete it,
+ 	 poisoning pointers.  */
+       region_model *model = cd.get_model ();
+       model->unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
+       model->unset_dynamic_extents (freed_reg);
+     }
+ }
+ 
+ /* Handle the on_call_pre part of "malloc".  */
+ 
+ class kf_malloc : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1
+ 	    && cd.arg_is_size_p (0));
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_malloc::impl_call_pre (const call_details &cd) const
+ {
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+   const svalue *size_sval = cd.get_arg_svalue (0);
+   const region *new_reg
+     = model->get_or_create_region_for_heap_alloc (size_sval, cd.get_ctxt ());
+   if (cd.get_lhs_type ())
+     {
+       const svalue *ptr_sval
+ 	= mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+       cd.maybe_set_lhs (ptr_sval);
+     }
+ }
+ 
+ /* Handler for "memcpy" and "__builtin_memcpy",
+    "memmove", and "__builtin_memmove".  */
+ /* TODO: complain about overlapping src and dest for the memcpy
+    variants.  */
+ 
+ class kf_memcpy_memmove : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3
+ 	    && cd.arg_is_pointer_p (0)
+ 	    && cd.arg_is_pointer_p (1)
+ 	    && cd.arg_is_size_p (2));
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_memcpy_memmove::impl_call_pre (const call_details &cd) const
+ {
+   const svalue *dest_ptr_sval = cd.get_arg_svalue (0);
+   const svalue *src_ptr_sval = cd.get_arg_svalue (1);
+   const svalue *num_bytes_sval = cd.get_arg_svalue (2);
+ 
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   const region *dest_reg
+     = model->deref_rvalue (dest_ptr_sval, cd.get_arg_tree (0), cd.get_ctxt ());
+   const region *src_reg
+     = model->deref_rvalue (src_ptr_sval, cd.get_arg_tree (1), cd.get_ctxt ());
+ 
+   cd.maybe_set_lhs (dest_ptr_sval);
+ 
+   const region *sized_src_reg
+     = mgr->get_sized_region (src_reg, NULL_TREE, num_bytes_sval);
+   const region *sized_dest_reg
+     = mgr->get_sized_region (dest_reg, NULL_TREE, num_bytes_sval);
+   const svalue *src_contents_sval
+     = model->get_store_value (sized_src_reg, cd.get_ctxt ());
+   model->check_for_poison (src_contents_sval, cd.get_arg_tree (1),
+ 			   sized_src_reg, cd.get_ctxt ());
+   model->set_value (sized_dest_reg, src_contents_sval, cd.get_ctxt ());
+ }
+ 
+ /* Handler for "memset" and "__builtin_memset".  */
+ 
+ class kf_memset : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3 && cd.arg_is_pointer_p (0));
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_memset::impl_call_pre (const call_details &cd) const
+ {
+   const svalue *dest_sval = cd.get_arg_svalue (0);
+   const svalue *fill_value_sval = cd.get_arg_svalue (1);
+   const svalue *num_bytes_sval = cd.get_arg_svalue (2);
+ 
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   const region *dest_reg
+     = model->deref_rvalue (dest_sval, cd.get_arg_tree (0), cd.get_ctxt ());
+ 
+   const svalue *fill_value_u8
+     = mgr->get_or_create_cast (unsigned_char_type_node, fill_value_sval);
+ 
+   const region *sized_dest_reg = mgr->get_sized_region (dest_reg,
+ 							NULL_TREE,
+ 							num_bytes_sval);
+   model->check_region_for_write (sized_dest_reg, cd.get_ctxt ());
+   model->fill_region (sized_dest_reg, fill_value_u8);
+ }
+ 
+ /* A subclass of pending_diagnostic for complaining about 'putenv'
+    called on an auto var.  */
+ 
+ class putenv_of_auto_var
+ : public pending_diagnostic_subclass<putenv_of_auto_var>
+ {
+ public:
+   putenv_of_auto_var (tree fndecl, const region *reg)
+   : m_fndecl (fndecl), m_reg (reg),
+     m_var_decl (reg->get_base_region ()->maybe_get_decl ())
+   {
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "putenv_of_auto_var";
+   }
+ 
+   bool operator== (const putenv_of_auto_var &other) const
+   {
+     return (m_fndecl == other.m_fndecl
+ 	    && m_reg == other.m_reg
+ 	    && same_tree_p (m_var_decl, other.m_var_decl));
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_putenv_of_auto_var;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     auto_diagnostic_group d;
+     diagnostic_metadata m;
+ 
+     /* SEI CERT C Coding Standard: "POS34-C. Do not call putenv() with a
+        pointer to an automatic variable as the argument".  */
+     diagnostic_metadata::precanned_rule
+       rule ("POS34-C", "https://wiki.sei.cmu.edu/confluence/x/6NYxBQ");
+     m.add_rule (rule);
+ 
+     bool warned;
+     if (m_var_decl)
+       warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "%qE on a pointer to automatic variable %qE",
+ 			     m_fndecl, m_var_decl);
+     else
+       warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 			     "%qE on a pointer to an on-stack buffer",
+ 			     m_fndecl);
+     if (warned)
+       {
+ 	if (m_var_decl)
+ 	  inform (DECL_SOURCE_LOCATION (m_var_decl),
+ 		  "%qE declared on stack here", m_var_decl);
+ 	inform (rich_loc->get_loc (), "perhaps use %qs rather than %qE",
+ 		"setenv", m_fndecl);
+       }
+ 
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_var_decl)
+       return ev.formatted_print ("%qE on a pointer to automatic variable %qE",
+ 				 m_fndecl, m_var_decl);
+     else
+       return ev.formatted_print ("%qE on a pointer to an on-stack buffer",
+ 				 m_fndecl);
+   }
+ 
+   void mark_interesting_stuff (interesting_t *interest) final override
+   {
+     if (!m_var_decl)
+       interest->add_region_creation (m_reg->get_base_region ());
+   }
+ 
+ private:
+   tree m_fndecl; // non-NULL
+   const region *m_reg; // non-NULL
+   tree m_var_decl; // could be NULL
+ };
+ 
+ /* Handler for calls to "putenv".
+ 
+    In theory we could try to model the state of the environment variables
+    for the process; for now we merely complain about putenv of regions
+    on the stack.  */
+ 
+ class kf_putenv : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1 && cd.arg_is_pointer_p (0));
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     tree fndecl = cd.get_fndecl_for_call ();
+     gcc_assert (fndecl);
+     region_model_context *ctxt = cd.get_ctxt ();
+     region_model *model = cd.get_model ();
+     const svalue *ptr_sval = cd.get_arg_svalue (0);
+     const region *reg
+       = model->deref_rvalue (ptr_sval, cd.get_arg_tree (0), ctxt);
+     model->get_store ()->mark_as_escaped (reg);
+     enum memory_space mem_space = reg->get_memory_space ();
+     switch (mem_space)
+       {
+       default:
+ 	gcc_unreachable ();
+       case MEMSPACE_UNKNOWN:
+       case MEMSPACE_CODE:
+       case MEMSPACE_GLOBALS:
+       case MEMSPACE_HEAP:
+       case MEMSPACE_READONLY_DATA:
+ 	break;
+       case MEMSPACE_STACK:
+ 	if (ctxt)
+ 	  ctxt->warn (make_unique<putenv_of_auto_var> (fndecl, reg));
+ 	break;
+       }
+   }
+ };
+ 
+ /* Handler for "realloc":
+ 
+      void *realloc(void *ptr, size_t size);
+ 
+    realloc(3) is awkward, since it has various different outcomes
+    that are best modelled as separate exploded nodes/edges.
+ 
+    We first check for sm-state, in
+    malloc_state_machine::on_realloc_call, so that we
+    can complain about issues such as realloc of a non-heap
+    pointer, and terminate the path for such cases (and issue
+    the complaints at the call's exploded node).
+ 
+    Assuming that these checks pass, we split the path here into
+    three special cases (and terminate the "standard" path):
+    (A) failure, returning NULL
+    (B) success, growing the buffer in-place without moving it
+    (C) success, allocating a new buffer, copying the content
+    of the old buffer to it, and freeing the old buffer.
+ 
+    Each of these has a custom_edge_info subclass, which updates
+    the region_model and sm-state of the destination state.  */
+ 
+ class kf_realloc : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 2
+ 	    && cd.arg_is_pointer_p (0)
+ 	    && cd.arg_is_size_p (1));
+   }
+   void impl_call_post (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_realloc::impl_call_post (const call_details &cd) const
+ {
+   /* Three custom subclasses of custom_edge_info, for handling the various
+      outcomes of "realloc".  */
+ 
+   /* Concrete custom_edge_info: a realloc call that fails, returning NULL.  */
+   class failure : public failed_call_info
+   {
+   public:
+     failure (const call_details &cd)
+     : failed_call_info (cd)
+     {
+     }
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       /* Return NULL; everything else is unchanged.  */
+       const call_details cd (get_call_details (model, ctxt));
+       region_model_manager *mgr = cd.get_manager ();
+       if (cd.get_lhs_type ())
+ 	{
+ 	  const svalue *zero
+ 	    = mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
+ 	  model->set_value (cd.get_lhs_region (),
+ 			    zero,
+ 			    cd.get_ctxt ());
+ 	}
+       return true;
+     }
+   };
+ 
+   /* Concrete custom_edge_info: a realloc call that succeeds, growing
+      the existing buffer without moving it.  */
+   class success_no_move : public call_info
+   {
+   public:
+     success_no_move (const call_details &cd)
+     : call_info (cd)
+     {
+     }
+ 
+     label_text get_desc (bool can_colorize) const final override
+     {
+       return make_label_text (can_colorize,
+ 			      "when %qE succeeds, without moving buffer",
+ 			      get_fndecl ());
+     }
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       /* Update size of buffer and return the ptr unchanged.  */
+       const call_details cd (get_call_details (model, ctxt));
+       region_model_manager *mgr = cd.get_manager ();
+       const svalue *ptr_sval = cd.get_arg_svalue (0);
+       const svalue *size_sval = cd.get_arg_svalue (1);
+ 
+       /* We can only grow in place with a non-NULL pointer.  */
+       {
+ 	const svalue *null_ptr
+ 	  = mgr->get_or_create_int_cst (ptr_sval->get_type (), 0);
+ 	if (!model->add_constraint (ptr_sval, NE_EXPR, null_ptr,
+ 				    cd.get_ctxt ()))
+ 	  return false;
+       }
+ 
+       if (const region *buffer_reg = model->deref_rvalue (ptr_sval, NULL_TREE,
+ 							  ctxt))
+ 	if (compat_types_p (size_sval->get_type (), size_type_node))
+ 	  model->set_dynamic_extents (buffer_reg, size_sval, ctxt);
+       if (cd.get_lhs_region ())
+ 	{
+ 	  model->set_value (cd.get_lhs_region (), ptr_sval, cd.get_ctxt ());
+ 	  const svalue *zero
+ 	    = mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
+ 	  return model->add_constraint (ptr_sval, NE_EXPR, zero, ctxt);
+ 	}
+       else
+ 	return true;
+     }
+   };
+ 
+   /* Concrete custom_edge_info: a realloc call that succeeds, freeing
+      the existing buffer and moving the content to a freshly allocated
+      buffer.  */
+   class success_with_move : public call_info
+   {
+   public:
+     success_with_move (const call_details &cd)
+     : call_info (cd)
+     {
+     }
+ 
+     label_text get_desc (bool can_colorize) const final override
+     {
+       return make_label_text (can_colorize,
+ 			      "when %qE succeeds, moving buffer",
+ 			      get_fndecl ());
+     }
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       region_model_manager *mgr = cd.get_manager ();
+       const svalue *old_ptr_sval = cd.get_arg_svalue (0);
+       const svalue *new_size_sval = cd.get_arg_svalue (1);
+ 
+       /* Create the new region.  */
+       const region *new_reg
+ 	= model->get_or_create_region_for_heap_alloc (new_size_sval, ctxt);
+       const svalue *new_ptr_sval
+ 	= mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+       if (!model->add_constraint (new_ptr_sval, NE_EXPR, old_ptr_sval,
+ 				  cd.get_ctxt ()))
+ 	return false;
+ 
+       if (cd.get_lhs_type ())
+ 	cd.maybe_set_lhs (new_ptr_sval);
+ 
+       if (const region *freed_reg = model->deref_rvalue (old_ptr_sval,
+ 							 NULL_TREE, ctxt))
+ 	{
+ 	  /* Copy the data.  */
+ 	  const svalue *old_size_sval = model->get_dynamic_extents (freed_reg);
+ 	  if (old_size_sval)
+ 	    {
+ 	      const svalue *copied_size_sval
+ 		= get_copied_size (model, old_size_sval, new_size_sval);
+ 	      const region *copied_old_reg
+ 		= mgr->get_sized_region (freed_reg, NULL, copied_size_sval);
+ 	      const svalue *buffer_content_sval
+ 		= model->get_store_value (copied_old_reg, cd.get_ctxt ());
+ 	      const region *copied_new_reg
+ 		= mgr->get_sized_region (new_reg, NULL, copied_size_sval);
+ 	      model->set_value (copied_new_reg, buffer_content_sval,
+ 				cd.get_ctxt ());
+ 	    }
+ 	  else
+ 	    {
+ 	      /* We don't know how big the old region was;
+ 		 mark the new region as having been touched to avoid uninit
+ 		 issues.  */
+ 	      model->mark_region_as_unknown (new_reg, cd.get_uncertainty ());
+ 	    }
+ 
+ 	  /* Free the old region, so that pointers to the old buffer become
+ 	     invalid.  */
+ 
+ 	  /* If the ptr points to an underlying heap region, delete it,
+ 	     poisoning pointers.  */
+ 	  model->unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
+ 	  model->unset_dynamic_extents (freed_reg);
+ 	}
+ 
+       /* Update the sm-state: mark the old_ptr_sval as "freed",
+ 	 and the new_ptr_sval as "nonnull".  */
+       model->on_realloc_with_move (cd, old_ptr_sval, new_ptr_sval);
+ 
+       if (cd.get_lhs_type ())
+ 	{
+ 	  const svalue *zero
+ 	    = mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
+ 	  return model->add_constraint (new_ptr_sval, NE_EXPR, zero,
+ 					cd.get_ctxt ());
+ 	}
+       else
+ 	return true;
+     }
+ 
+   private:
+     /* Return the lesser of OLD_SIZE_SVAL and NEW_SIZE_SVAL.
+        If unknown, OLD_SIZE_SVAL is returned.  */
+     const svalue *get_copied_size (region_model *model,
+ 				   const svalue *old_size_sval,
+ 				   const svalue *new_size_sval) const
+     {
+       tristate res
+ 	= model->eval_condition (old_size_sval, GT_EXPR, new_size_sval);
+       switch (res.get_value ())
+ 	{
+ 	case tristate::TS_TRUE:
+ 	  return new_size_sval;
+ 	case tristate::TS_FALSE:
+ 	case tristate::TS_UNKNOWN:
+ 	  return old_size_sval;
+ 	default:
+ 	  gcc_unreachable ();
+ 	}
+     }
+   };
+ 
+   /* Body of kf_realloc::impl_call_post.  */
+ 
+   if (cd.get_ctxt ())
+     {
+       cd.get_ctxt ()->bifurcate (make_unique<failure> (cd));
+       cd.get_ctxt ()->bifurcate (make_unique<success_no_move> (cd));
+       cd.get_ctxt ()->bifurcate (make_unique<success_with_move> (cd));
+       cd.get_ctxt ()->terminate_path ();
+     }
+ }
+ 
+ /* Handler for "strchr" and "__builtin_strchr".  */
+ 
+ class kf_strchr : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 2 && cd.arg_is_pointer_p (0));
+   }
+   void impl_call_post (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_strchr::impl_call_post (const call_details &cd) const
+ {
+   class strchr_call_info : public call_info
+   {
+   public:
+     strchr_call_info (const call_details &cd, bool found)
+     : call_info (cd), m_found (found)
+     {
+     }
+ 
+     label_text get_desc (bool can_colorize) const final override
+     {
+       if (m_found)
+ 	return make_label_text (can_colorize,
+ 				"when %qE returns non-NULL",
+ 				get_fndecl ());
+       else
+ 	return make_label_text (can_colorize,
+ 				"when %qE returns NULL",
+ 				get_fndecl ());
+     }
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       if (tree lhs_type = cd.get_lhs_type ())
+ 	{
+ 	  region_model_manager *mgr = model->get_manager ();
+ 	  const svalue *result;
+ 	  if (m_found)
+ 	    {
+ 	      const svalue *str_sval = cd.get_arg_svalue (0);
+ 	      const region *str_reg
+ 		= model->deref_rvalue (str_sval, cd.get_arg_tree (0),
+ 				       cd.get_ctxt ());
+ 	      /* We want str_sval + OFFSET for some unknown OFFSET.
+ 		 Use a conjured_svalue to represent the offset,
+ 		 using the str_reg as the id of the conjured_svalue.  */
+ 	      const svalue *offset
+ 		= mgr->get_or_create_conjured_svalue (size_type_node,
+ 						      cd.get_call_stmt (),
+ 						      str_reg,
+ 						      conjured_purge (model,
+ 								      ctxt));
+ 	      result = mgr->get_or_create_binop (lhs_type, POINTER_PLUS_EXPR,
+ 						 str_sval, offset);
+ 	    }
+ 	  else
+ 	    result = mgr->get_or_create_int_cst (lhs_type, 0);
+ 	  cd.maybe_set_lhs (result);
+ 	}
+       return true;
+     }
+   private:
+     bool m_found;
+   };
+ 
+   /* Body of kf_strchr::impl_call_post.  */
+   if (cd.get_ctxt ())
+     {
+       cd.get_ctxt ()->bifurcate (make_unique<strchr_call_info> (cd, false));
+       cd.get_ctxt ()->bifurcate (make_unique<strchr_call_info> (cd, true));
+       cd.get_ctxt ()->terminate_path ();
+     }
+ }
+ 
+ /* Handler for "sprintf".
+      int sprintf(char *str, const char *format, ...);
+ */
+ 
+ class kf_sprintf : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () >= 2
+ 	    && cd.arg_is_pointer_p (0)
+ 	    && cd.arg_is_pointer_p (1));
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     /* For now, merely assume that the destination buffer gets set to a
+        new svalue.  */
+     region_model *model = cd.get_model ();
+     region_model_context *ctxt = cd.get_ctxt ();
+     const svalue *dst_ptr = cd.get_arg_svalue (0);
+     const region *dst_reg
+       = model->deref_rvalue (dst_ptr, cd.get_arg_tree (0), ctxt);
+     const svalue *content = cd.get_or_create_conjured_svalue (dst_reg);
+     model->set_value (dst_reg, content, ctxt);
+   }
+ };
+ 
+ /* Handler for "__builtin_stack_restore".  */
+ 
+ class kf_stack_restore : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const final override
+   {
+     return true;
+   }
+ 
+   /* Currently a no-op.  */
+ };
+ 
+ /* Handler for "__builtin_stack_save".  */
+ 
+ class kf_stack_save : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const final override
+   {
+     return true;
+   }
+ 
+   /* Currently a no-op.  */
+ };
+ 
+ /* Handler for "strcpy" and "__builtin_strcpy_chk".  */
+ 
+ class kf_strcpy : public known_function
+ {
+ public:
+   kf_strcpy (unsigned int num_args) : m_num_args (num_args) {}
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == m_num_args
+ 	    && cd.arg_is_pointer_p (0)
+ 	    && cd.arg_is_pointer_p (1));
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override;
+ 
+ private:
+   unsigned int m_num_args;
+ };
+ 
+ void
+ kf_strcpy::impl_call_pre (const call_details &cd) const
+ {
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   const svalue *dest_sval = cd.get_arg_svalue (0);
+   const region *dest_reg = model->deref_rvalue (dest_sval, cd.get_arg_tree (0),
+ 					 cd.get_ctxt ());
+   const svalue *src_sval = cd.get_arg_svalue (1);
+   const region *src_reg = model->deref_rvalue (src_sval, cd.get_arg_tree (1),
+ 					cd.get_ctxt ());
+   const svalue *src_contents_sval = model->get_store_value (src_reg,
+ 							    cd.get_ctxt ());
+ 
+   cd.maybe_set_lhs (dest_sval);
+ 
+   /* Try to get the string size if SRC_REG is a string_region.  */
+   const svalue *copied_bytes_sval = model->get_string_size (src_reg);
+   /* Otherwise, check if the contents of SRC_REG is a string.  */
+   if (copied_bytes_sval->get_kind () == SK_UNKNOWN)
+     copied_bytes_sval = model->get_string_size (src_contents_sval);
+ 
+   const region *sized_dest_reg
+     = mgr->get_sized_region (dest_reg, NULL_TREE, copied_bytes_sval);
+   model->set_value (sized_dest_reg, src_contents_sval, cd.get_ctxt ());
+ }
+ 
+ /* Handler for "strdup" and "__builtin_strdup".  */
+ 
+ class kf_strdup : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1 && cd.arg_is_pointer_p (0));
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     region_model_manager *mgr = cd.get_manager ();
+     /* Ideally we'd get the size here, and simulate copying the bytes.  */
+     const region *new_reg
+       = model->get_or_create_region_for_heap_alloc (NULL, cd.get_ctxt ());
+     model->mark_region_as_unknown (new_reg, NULL);
+     if (cd.get_lhs_type ())
+       {
+ 	const svalue *ptr_sval
+ 	  = mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+ 	cd.maybe_set_lhs (ptr_sval);
+       }
+   }
+ };
+ 
+ /* Handle the on_call_pre part of "strlen".  */
+ 
+ class kf_strlen : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1 && cd.arg_is_pointer_p (0));
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_strlen::impl_call_pre (const call_details &cd) const
+ {
+   region_model_context *ctxt = cd.get_ctxt ();
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   const svalue *arg_sval = cd.get_arg_svalue (0);
+   const region *buf_reg
+     = model->deref_rvalue (arg_sval, cd.get_arg_tree (0), ctxt);
+   if (const string_region *str_reg
+       = buf_reg->dyn_cast_string_region ())
+     {
+       tree str_cst = str_reg->get_string_cst ();
+       /* TREE_STRING_LENGTH is sizeof, not strlen.  */
+       int sizeof_cst = TREE_STRING_LENGTH (str_cst);
+       int strlen_cst = sizeof_cst - 1;
+       if (cd.get_lhs_type ())
+ 	{
+ 	  tree t_cst = build_int_cst (cd.get_lhs_type (), strlen_cst);
+ 	  const svalue *result_sval
+ 	    = mgr->get_or_create_constant_svalue (t_cst);
+ 	  cd.maybe_set_lhs (result_sval);
+ 	  return;
+ 	}
+     }
+   /* Otherwise a conjured value.  */
+ }
+ 
+ /* Handler for "strndup" and "__builtin_strndup".  */
+ 
+ class kf_strndup : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 2 && cd.arg_is_pointer_p (0));
+   }
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     region_model_manager *mgr = cd.get_manager ();
+     /* Ideally we'd get the size here, and simulate copying the bytes.  */
+     const region *new_reg
+       = model->get_or_create_region_for_heap_alloc (NULL, cd.get_ctxt ());
+     model->mark_region_as_unknown (new_reg, NULL);
+     if (cd.get_lhs_type ())
+       {
+ 	const svalue *ptr_sval
+ 	  = mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
+ 	cd.maybe_set_lhs (ptr_sval);
+       }
+   }
+ };
+ 
+ class kf_ubsan_bounds : public internal_known_function
+ {
+   /* Empty.  */
+ };
+ 
+ /* Handle calls to functions referenced by
+    __attribute__((malloc(FOO))).  */
+ 
+ void
+ region_model::impl_deallocation_call (const call_details &cd)
+ {
+   kf_free kf;
+   kf.impl_call_post (cd);
+ }
+ 
+ /* Populate KFM with instances of known functions supported by the core of the
+    analyzer (as opposed to plugins).  */
+ 
+ void
+ register_known_functions (known_function_manager &kfm)
+ {
+   /* Debugging/test support functions, all  with a "__analyzer_" prefix.  */
+   register_known_analyzer_functions (kfm);
+ 
+   /* Internal fns the analyzer has known_functions for.  */
+   {
+     kfm.add (IFN_BUILTIN_EXPECT, make_unique<kf_expect> ());
+     kfm.add (IFN_UBSAN_BOUNDS, make_unique<kf_ubsan_bounds> ());
+   }
+ 
+   /* Built-ins the analyzer has known_functions for.  */
+   {
+     kfm.add (BUILT_IN_ALLOCA, make_unique<kf_alloca> ());
+     kfm.add (BUILT_IN_ALLOCA_WITH_ALIGN, make_unique<kf_alloca> ());
+     kfm.add (BUILT_IN_CALLOC, make_unique<kf_calloc> ());
+     kfm.add (BUILT_IN_EXPECT, make_unique<kf_expect> ());
+     kfm.add (BUILT_IN_EXPECT_WITH_PROBABILITY, make_unique<kf_expect> ());
+     kfm.add (BUILT_IN_FREE, make_unique<kf_free> ());
+     kfm.add (BUILT_IN_MALLOC, make_unique<kf_malloc> ());
+     kfm.add (BUILT_IN_MEMCPY, make_unique<kf_memcpy_memmove> ());
+     kfm.add (BUILT_IN_MEMCPY_CHK, make_unique<kf_memcpy_memmove> ());
+     kfm.add (BUILT_IN_MEMMOVE, make_unique<kf_memcpy_memmove> ());
+     kfm.add (BUILT_IN_MEMMOVE_CHK, make_unique<kf_memcpy_memmove> ());
+     kfm.add (BUILT_IN_MEMSET, make_unique<kf_memset> ());
+     kfm.add (BUILT_IN_MEMSET_CHK, make_unique<kf_memset> ());
+     kfm.add (BUILT_IN_REALLOC, make_unique<kf_realloc> ());
+     kfm.add (BUILT_IN_SPRINTF, make_unique<kf_sprintf> ());
+     kfm.add (BUILT_IN_STACK_RESTORE, make_unique<kf_stack_restore> ());
+     kfm.add (BUILT_IN_STACK_SAVE, make_unique<kf_stack_save> ());
+     kfm.add (BUILT_IN_STRCHR, make_unique<kf_strchr> ());
+     kfm.add (BUILT_IN_STRCPY, make_unique<kf_strcpy> (2));
+     kfm.add (BUILT_IN_STRCPY_CHK, make_unique<kf_strcpy> (3));
+     kfm.add (BUILT_IN_STRDUP, make_unique<kf_strdup> ());
+     kfm.add (BUILT_IN_STRNDUP, make_unique<kf_strndup> ());
+     kfm.add (BUILT_IN_STRLEN, make_unique<kf_strlen> ());
+ 
+     register_varargs_builtins (kfm);
+   }
+ 
+   /* Known builtins and C standard library functions.  */
+   {
+     kfm.add ("memset", make_unique<kf_memset> ());
+     kfm.add ("strdup", make_unique<kf_strdup> ());
+     kfm.add ("strndup", make_unique<kf_strndup> ());
+   }
+ 
+   /* Known POSIX functions, and some non-standard extensions.  */
+   {
+     kfm.add ("putenv", make_unique<kf_putenv> ());
+ 
+     register_known_fd_functions (kfm);
+     register_known_file_functions (kfm);
+   }
+ 
+   /* glibc functions.  */
+   {
+     kfm.add ("__errno_location", make_unique<kf_errno_location> ());
+     kfm.add ("error", make_unique<kf_error> (3));
+     kfm.add ("error_at_line", make_unique<kf_error> (5));
+   }
+ 
+   /* Other implementations of C standard library.  */
+   {
+     /* According to PR 107807 comment #2, Solaris implements "errno"
+        like this:
+ 	 extern int *___errno(void) __attribute__((__const__));
+ 	 #define errno (*(___errno()))
+        and OS X like this:
+ 	 extern int * __error(void);
+ 	 #define errno (*__error())
+        and similarly __errno for newlib.
+        Add these as synonyms for "__errno_location".  */
+     kfm.add ("___errno", make_unique<kf_errno_location> ());
+     kfm.add ("__error", make_unique<kf_errno_location> ());
+     kfm.add ("__errno", make_unique<kf_errno_location> ());
+   }
+ 
+   /* Language-specific support functions.  */
+   register_known_functions_lang_cp (kfm);
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/known-function-manager.cc gcc-13.1.0/gcc/analyzer/known-function-manager.cc
*** gcc-12.2.0/gcc/analyzer/known-function-manager.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/known-function-manager.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,156 ----
+ /* Support for plugin-supplied behaviors of known functions.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tree.h"
+ #include "analyzer/analyzer.h"
+ #include "diagnostic-core.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "stringpool.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "analyzer/known-function-manager.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/call-details.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* class known_function_manager : public log_user.  */
+ 
+ known_function_manager::known_function_manager (logger *logger)
+ : log_user (logger)
+ {
+   memset (m_combined_fns_arr, 0, sizeof (m_combined_fns_arr));
+ }
+ 
+ known_function_manager::~known_function_manager ()
+ {
+   /* Delete all owned kfs.  */
+   for (auto iter : m_map_id_to_kf)
+     delete iter.second;
+   for (auto iter : m_combined_fns_arr)
+     delete iter;
+ }
+ 
+ void
+ known_function_manager::add (const char *name,
+ 			     std::unique_ptr<known_function> kf)
+ {
+   LOG_FUNC_1 (get_logger (), "registering %s", name);
+   tree id = get_identifier (name);
+   m_map_id_to_kf.put (id, kf.release ());
+ }
+ 
+ void
+ known_function_manager::add (enum built_in_function name,
+ 			     std::unique_ptr<known_function> kf)
+ {
+   gcc_assert (name < END_BUILTINS);
+   delete m_combined_fns_arr[name];
+   m_combined_fns_arr[name] = kf.release ();
+ }
+ 
+ void
+ known_function_manager::add (enum internal_fn ifn,
+ 			     std::unique_ptr<known_function> kf)
+ {
+   gcc_assert (ifn < IFN_LAST);
+   delete m_combined_fns_arr[ifn + END_BUILTINS];
+   m_combined_fns_arr[ifn + END_BUILTINS] = kf.release ();
+ }
+ 
+ /* Get any known_function for FNDECL for call CD.
+ 
+    The call must match all assumptions made by the known_function (such as
+    e.g. "argument 1's type must be a pointer type").
+ 
+    Return NULL if no known_function is found, or it does not match the
+    assumption(s).  */
+ 
+ const known_function *
+ known_function_manager::get_match (tree fndecl, const call_details &cd) const
+ {
+   /* Look for a matching built-in.  */
+   if (fndecl_built_in_p (fndecl, BUILT_IN_NORMAL))
+     {
+       if (const known_function *candidate
+ 	  = get_normal_builtin (DECL_FUNCTION_CODE (fndecl)))
+ 	if (gimple_builtin_call_types_compatible_p (cd.get_call_stmt (),
+ 						    fndecl))
+ 	  return candidate;
+     }
+ 
+   /* Look for a match by name.  */
+ 
+   /* Reject fndecls that aren't in the root namespace.  */
+   if (DECL_CONTEXT (fndecl)
+       && TREE_CODE (DECL_CONTEXT (fndecl)) != TRANSLATION_UNIT_DECL)
+     return NULL;
+   if (tree identifier = DECL_NAME (fndecl))
+     if (const known_function *candidate = get_by_identifier (identifier))
+       if (candidate->matches_call_types_p (cd))
+ 	return candidate;
+ 
+   return NULL;
+ }
+ 
+ /* Get any known_function for IFN, or NULL.  */
+ 
+ const known_function *
+ known_function_manager::get_internal_fn (enum internal_fn ifn) const
+ {
+   gcc_assert (ifn < IFN_LAST);
+   return m_combined_fns_arr[ifn + END_BUILTINS];
+ }
+ 
+ /* Get any known_function for NAME, without type-checking.
+    Return NULL if there isn't one.  */
+ 
+ const known_function *
+ known_function_manager::get_normal_builtin (enum built_in_function name) const
+ {
+   /* The numbers for built-in functions in enum combined_fn are the same as
+      for the built_in_function enum.  */
+   gcc_assert (name < END_BUILTINS);
+   return m_combined_fns_arr[name];
+ }
+ 
+ /* Get any known_function matching IDENTIFIER, without type-checking.
+    Return NULL if there isn't one.  */
+ 
+ const known_function *
+ known_function_manager::get_by_identifier (tree identifier) const
+ {
+   known_function_manager *mut_this = const_cast<known_function_manager *>(this);
+   known_function **slot = mut_this->m_map_id_to_kf.get (identifier);
+   if (slot)
+     return *slot;
+   else
+     return NULL;
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/known-function-manager.h gcc-13.1.0/gcc/analyzer/known-function-manager.h
*** gcc-12.2.0/gcc/analyzer/known-function-manager.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/known-function-manager.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,69 ----
+ /* Support for plugin-supplied behaviors of known functions.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_KNOWN_FUNCTION_MANAGER_H
+ #define GCC_ANALYZER_KNOWN_FUNCTION_MANAGER_H
+ 
+ #include "analyzer/analyzer-logging.h"
+ 
+ namespace ana {
+ 
+ /* Instances of known_function are registered with the known_function_manager
+    when the analyzer starts.
+ 
+    The known_function_manager has responsibility for determining which
+    known_function instance (if any) is relevant at a call site, by checking
+    name or id, and by calling known_function::matches_call_types_p to ensure
+    that the known_function's preconditions hold (typically assumptions about
+    types e.g. that "has 3 args, and that arg 0 is of pointer type").
+ 
+    The known_function subclasses themselves have responsibility for
+    determining the outcome(s) of the call.  */
+ 
+ class known_function_manager : public log_user
+ {
+ public:
+   known_function_manager (logger *logger);
+   ~known_function_manager ();
+ 
+   void add (const char *name, std::unique_ptr<known_function> kf);
+   void add (enum built_in_function name, std::unique_ptr<known_function> kf);
+   void add (enum internal_fn ifn, std::unique_ptr<known_function> kf);
+ 
+   const known_function *get_match (tree fndecl, const call_details &cd) const;
+   const known_function *get_internal_fn (enum internal_fn) const;
+ 
+ private:
+   DISABLE_COPY_AND_ASSIGN (known_function_manager);
+ 
+   const known_function *get_normal_builtin (enum built_in_function name) const;
+   const known_function *get_by_identifier (tree identifier) const;
+ 
+   /* Map from identifier to known_function instance.
+      Has ownership of the latter.  */
+   hash_map<tree, known_function *> m_map_id_to_kf;
+ 
+   /* Array of known builtins.  */
+   known_function *m_combined_fns_arr[CFN_LAST];
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_KNOWN_FUNCTION_MANAGER_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/pending-diagnostic.cc gcc-13.1.0/gcc/analyzer/pending-diagnostic.cc
*** gcc-12.2.0/gcc/analyzer/pending-diagnostic.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/pending-diagnostic.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,31 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "intl.h"
  #include "diagnostic.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
--- 19,30 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "intl.h"
  #include "diagnostic.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** along with GCC; see the file COPYING3.
*** 33,44 ****
  #include "diagnostic-event-id.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
! #include "selftest.h"
! #include "tristate.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  
  #if ENABLE_ANALYZER
  
--- 32,56 ----
  #include "diagnostic-event-id.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
! #include "analyzer/diagnostic-manager.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
+ #include "cpplib.h"
+ #include "digraph.h"
+ #include "ordered-hash-map.h"
+ #include "cfg.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "cgraph.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/exploded-graph.h"
+ #include "diagnostic-path.h"
+ #include "analyzer/checker-path.h"
+ #include "make-unique.h"
  
  #if ENABLE_ANALYZER
  
*************** pending_diagnostic::same_tree_p (tree t1
*** 111,116 ****
--- 123,247 ----
    return simple_cst_equal (t1, t2) == 1;
  }
  
+ /* Return true iff IDENT is STR.  */
+ 
+ static bool
+ ht_ident_eq (ht_identifier ident, const char *str)
+ {
+   return (strlen (str) == ident.len
+ 	  && 0 == strcmp (str, (const char *)ident.str));
+ }
+ 
+ /* Return true if we should show the expansion location rather than unwind
+    within MACRO.  */
+ 
+ static bool
+ fixup_location_in_macro_p (cpp_hashnode *macro)
+ {
+   ht_identifier ident = macro->ident;
+ 
+   /* Don't unwind inside "alloca" macro, so that we don't suppress warnings
+      from it (due to being in system headers).  */
+   if (ht_ident_eq (ident, "alloca"))
+     return true;
+ 
+   /* Don't unwind inside <stdarg.h> macros, so that we don't suppress warnings
+      from them (due to being in system headers).  */
+   if (ht_ident_eq (ident, "va_start")
+       || ht_ident_eq (ident, "va_copy")
+       || ht_ident_eq (ident, "va_arg")
+       || ht_ident_eq (ident, "va_end"))
+     return true;
+   return false;
+ }
+ 
+ /* Base implementation of pending_diagnostic::fixup_location.
+    Don't unwind inside macros for which fixup_location_in_macro_p is true.  */
+ 
+ location_t
+ pending_diagnostic::fixup_location (location_t loc, bool) const
+ {
+   if (linemap_location_from_macro_expansion_p (line_table, loc))
+     {
+       line_map *map
+ 	= const_cast <line_map *> (linemap_lookup (line_table, loc));
+       const line_map_macro *macro_map = linemap_check_macro (map);
+       if (fixup_location_in_macro_p (macro_map->macro))
+ 	loc = linemap_resolve_location (line_table, loc,
+ 					LRK_MACRO_EXPANSION_POINT, NULL);
+     }
+   return loc;
+ }
+ 
+ /* Base implementation of pending_diagnostic::add_function_entry_event.
+    Add a function_entry_event to EMISSION_PATH.  */
+ 
+ void
+ pending_diagnostic::add_function_entry_event (const exploded_edge &eedge,
+ 					      checker_path *emission_path)
+ {
+   const exploded_node *dst_node = eedge.m_dest;
+   const program_point &dst_point = dst_node->get_point ();
+   emission_path->add_event (make_unique<function_entry_event> (dst_point));
+ }
+ 
+ /* Base implementation of pending_diagnostic::add_call_event.
+    Add a call_event to EMISSION_PATH.  */
+ 
+ void
+ pending_diagnostic::add_call_event (const exploded_edge &eedge,
+ 				    checker_path *emission_path)
+ {
+   const exploded_node *src_node = eedge.m_src;
+   const program_point &src_point = src_node->get_point ();
+   const int src_stack_depth = src_point.get_stack_depth ();
+   const gimple *last_stmt = src_point.get_supernode ()->get_last_stmt ();
+   emission_path->add_event
+     (make_unique<call_event> (eedge,
+ 			      event_loc_info (last_stmt
+ 					      ? last_stmt->location
+ 					      : UNKNOWN_LOCATION,
+ 					      src_point.get_fndecl (),
+ 					      src_stack_depth)));
+ }
+ 
+ /* Base implementation of pending_diagnostic::add_region_creation_events.
+    See the comment for class region_creation_event.  */
+ 
+ void
+ pending_diagnostic::add_region_creation_events (const region *reg,
+ 						tree capacity,
+ 						const event_loc_info &loc_info,
+ 						checker_path &emission_path)
+ {
+   emission_path.add_event
+     (make_unique<region_creation_event_memory_space> (reg->get_memory_space (),
+ 						      loc_info));
+ 
+   if (capacity)
+     emission_path.add_event
+       (make_unique<region_creation_event_capacity> (capacity, loc_info));
+ }
+ 
+ /* Base implementation of pending_diagnostic::add_final_event.
+    Add a warning_event to the end of EMISSION_PATH.  */
+ 
+ void
+ pending_diagnostic::add_final_event (const state_machine *sm,
+ 				     const exploded_node *enode,
+ 				     const gimple *stmt,
+ 				     tree var, state_machine::state_t state,
+ 				     checker_path *emission_path)
+ {
+   emission_path->add_event
+     (make_unique<warning_event>
+      (event_loc_info (get_stmt_location (stmt, enode->get_function ()),
+ 		      enode->get_function ()->decl,
+ 		      enode->get_stack_depth ()),
+       enode,
+       sm, var, state));
+ }
+ 
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/pending-diagnostic.h gcc-13.1.0/gcc/analyzer/pending-diagnostic.h
*** gcc-12.2.0/gcc/analyzer/pending-diagnostic.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/pending-diagnostic.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for analyzer diagnostics.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,29 ----
  #ifndef GCC_ANALYZER_PENDING_DIAGNOSTIC_H
  #define GCC_ANALYZER_PENDING_DIAGNOSTIC_H
  
+ #include "diagnostic-path.h"
+ #include "analyzer/sm.h"
+ 
  namespace ana {
  
  /* A bundle of information about things that are of interest to a
*************** struct return_of_state : public event_de
*** 128,140 ****
  struct final_event : public event_desc
  {
    final_event (bool colorize,
! 	       tree expr, state_machine::state_t state)
    : event_desc (colorize),
!     m_expr (expr), m_state (state)
    {}
  
    tree m_expr;
    state_machine::state_t m_state;
  };
  
  } /* end of namespace evdesc */
--- 131,145 ----
  struct final_event : public event_desc
  {
    final_event (bool colorize,
! 	       tree expr, state_machine::state_t state,
! 	       const warning_event &event)
    : event_desc (colorize),
!     m_expr (expr), m_state (state), m_event (event)
    {}
  
    tree m_expr;
    state_machine::state_t m_state;
+   const warning_event &m_event;
  };
  
  } /* end of namespace evdesc */
*************** class pending_diagnostic
*** 168,173 ****
--- 173,182 ----
       having to generate feasible execution paths for them).  */
    virtual int get_controlling_option () const = 0;
  
+   /* Vfunc to give the diagnostic the chance to terminate the execution
+      path being explored.  By default, don't terminate the path.  */
+   virtual bool terminate_path_p () const { return false; }
+ 
    /* Vfunc for emitting the diagnostic.  The rich_location will have been
       populated with a diagnostic_path.
       Return true if a diagnostic is actually emitted.  */
*************** class pending_diagnostic
*** 200,220 ****
       diagnostic deduplication.  */
    static bool same_tree_p (tree t1, tree t2);
  
!   /* A vfunc for fixing up locations (both the primary location for the
!      diagnostic, and for events in their paths), e.g. to avoid unwinding
!      inside specific macros.  */
!   virtual location_t fixup_location (location_t loc) const
!   {
!     return loc;
!   }
! 
!   /* For greatest precision-of-wording, the various following "describe_*"
!      virtual functions give the pending diagnostic a way to describe events
!      in a diagnostic_path in terms that make sense for that diagnostic.
! 
!      In each case, return a non-NULL label_text to give the event a custom
!      description; NULL otherwise (falling back on a more generic
!      description).  */
  
    /* Precision-of-wording vfunc for describing a critical state change
       within the diagnostic_path.
--- 209,218 ----
       diagnostic deduplication.  */
    static bool same_tree_p (tree t1, tree t2);
  
!   /* Vfunc for fixing up locations, e.g. to avoid unwinding
!      inside specific macros.  PRIMARY is true for the primary location
!      for the diagnostic, and FALSE for events in their paths.  */
!   virtual location_t fixup_location (location_t loc, bool primary) const;
  
    /* Precision-of-wording vfunc for describing a critical state change
       within the diagnostic_path.
*************** class pending_diagnostic
*** 235,240 ****
--- 233,247 ----
      return label_text ();
    }
  
+   /* Vfunc for implementing diagnostic_event::get_meaning for
+      state_change_event.  */
+   virtual diagnostic_event::meaning
+   get_meaning_for_state_change (const evdesc::state_change &) const
+   {
+     /* Default no-op implementation.  */
+     return diagnostic_event::meaning ();
+   }
+ 
    /* Precision-of-wording vfunc for describing an interprocedural call
       carrying critial state for the diagnostic, from caller to callee.
  
*************** class pending_diagnostic
*** 280,285 ****
--- 287,300 ----
  
    /* End of precision-of-wording vfuncs.  */
  
+   /* Vfunc for adding a function_entry_event to a checker_path, so that e.g.
+      the infinite recursion diagnostic can add a custom event subclass
+      that annotates recursively entering a function.  */
+ 
+   virtual void
+   add_function_entry_event (const exploded_edge &eedge,
+ 			    checker_path *emission_path);
+ 
    /* Vfunc for extending/overriding creation of the events for an
       exploded_edge that corresponds to a superedge, allowing for custom
       events to be created that are pertinent to a particular
*************** class pending_diagnostic
*** 295,300 ****
--- 310,339 ----
      return false;
    }
  
+   /* Vfunc for adding a call_event to a checker_path, so that e.g.
+      the varargs diagnostics can add a custom event subclass that annotates
+      the variadic arguments.  */
+   virtual void add_call_event (const exploded_edge &,
+ 			       checker_path *);
+ 
+   /* Vfunc for adding any events for the creation of regions identified
+      by the mark_interesting_stuff vfunc.
+      See the comment for class region_creation_event.  */
+   virtual void add_region_creation_events (const region *reg,
+ 					   tree capacity,
+ 					   const event_loc_info &loc_info,
+ 					   checker_path &emission_path);
+ 
+   /* Vfunc for adding the final warning_event to a checker_path, so that e.g.
+      the infinite recursion diagnostic can have its diagnostic appear at
+      the callsite, but the final event in the path be at the entrypoint
+      of the called function.  */
+   virtual void add_final_event (const state_machine *sm,
+ 				const exploded_node *enode,
+ 				const gimple *stmt,
+ 				tree var, state_machine::state_t state,
+ 				checker_path *emission_path);
+ 
    /* Vfunc for determining that this pending_diagnostic supercedes OTHER,
       and that OTHER should therefore not be emitted.
       They have already been tested for being at the same stmt.  */
*************** class pending_diagnostic
*** 312,317 ****
--- 351,366 ----
    {
      /* Default no-op implementation.  */
    }
+ 
+   /* Vfunc to give diagnostic subclasses the opportunity to reject diagnostics
+      by imposing their own additional feasibility checks on the path to a
+      given feasible_node.  */
+   virtual bool check_valid_fpath_p (const feasible_node &,
+ 				    const gimple *) const
+   {
+     /* Default implementation: accept this path.  */
+     return true;
+   }
  };
  
  /* A template to make it easier to make subclasses of pending_diagnostic.
*************** class pending_diagnostic_subclass : publ
*** 328,334 ****
  {
   public:
    bool subclass_equal_p (const pending_diagnostic &base_other) const
!     FINAL OVERRIDE
    {
      const Subclass &other = (const Subclass &)base_other;
      return *(const Subclass*)this == other;
--- 377,383 ----
  {
   public:
    bool subclass_equal_p (const pending_diagnostic &base_other) const
!     final override
    {
      const Subclass &other = (const Subclass &)base_other;
      return *(const Subclass*)this == other;
*************** class pending_note_subclass : public pen
*** 371,377 ****
  {
   public:
    bool subclass_equal_p (const pending_note &base_other) const
!     FINAL OVERRIDE
    {
      const Subclass &other = (const Subclass &)base_other;
      return *(const Subclass*)this == other;
--- 420,426 ----
  {
   public:
    bool subclass_equal_p (const pending_note &base_other) const
!     final override
    {
      const Subclass &other = (const Subclass &)base_other;
      return *(const Subclass*)this == other;
diff -Nrcpad gcc-12.2.0/gcc/analyzer/program-point.cc gcc-13.1.0/gcc/analyzer/program-point.cc
*** gcc-12.2.0/gcc/analyzer/program-point.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/program-point.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,31 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "gimple-pretty-print.h"
  #include "gcc-rich-location.h"
- #include "json.h"
- #include "analyzer/call-string.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cgraph.h"
--- 19,30 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "gimple-pretty-print.h"
  #include "gcc-rich-location.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cgraph.h"
*************** along with GCC; see the file COPYING3.
*** 37,60 ****
  #include "digraph.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-point.h"
  #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
  #include "selftest.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/sm.h"
  #include "analyzer/program-state.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
  #include "shortest-paths.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/analysis-plan.h"
  
  #if ENABLE_ANALYZER
  
--- 36,58 ----
  #include "digraph.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
+ #include "analyzer/call-string.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-point.h"
  #include "sbitmap.h"
  #include "bitmap.h"
  #include "selftest.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/sm.h"
  #include "analyzer/program-state.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
  #include "shortest-paths.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/analysis-plan.h"
+ #include "analyzer/inlining-iterator.h"
  
  #if ENABLE_ANALYZER
  
*************** void
*** 290,296 ****
  program_point::print (pretty_printer *pp, const format &f) const
  {
    pp_string (pp, "callstring: ");
!   m_call_string.print (pp);
    f.spacer (pp);
  
    m_function_point.print (pp, f);
--- 288,294 ----
  program_point::print (pretty_printer *pp, const format &f) const
  {
    pp_string (pp, "callstring: ");
!   m_call_string->print (pp);
    f.spacer (pp);
  
    m_function_point.print (pp, f);
*************** program_point::to_json () const
*** 340,346 ****
        break;
      }
  
!   point_obj->set ("call_string", m_call_string.to_json ());
  
    return point_obj;
  }
--- 338,344 ----
        break;
      }
  
!   point_obj->set ("call_string", m_call_string->to_json ());
  
    return point_obj;
  }
*************** void
*** 353,366 ****
  program_point::push_to_call_stack (const supernode *caller,
  				   const supernode *callee)
  {
!   m_call_string.push_call (callee, caller);
  }
  
  /* Pop the topmost call from the current callstack.  */
  void
  program_point::pop_from_call_stack ()
  {
!   m_call_string.pop ();
  }
  
  /* Generate a hash value for this program_point.  */
--- 351,365 ----
  program_point::push_to_call_stack (const supernode *caller,
  				   const supernode *callee)
  {
!   m_call_string = m_call_string->push_call (callee, caller);
  }
  
  /* Pop the topmost call from the current callstack.  */
  void
  program_point::pop_from_call_stack ()
  {
!   m_call_string = m_call_string->get_parent ();
!   gcc_assert (m_call_string);
  }
  
  /* Generate a hash value for this program_point.  */
*************** program_point::hash () const
*** 370,376 ****
  {
    inchash::hash hstate;
    hstate.merge_hash (m_function_point.hash ());
!   hstate.merge_hash (m_call_string.hash ());
    return hstate.end ();
  }
  
--- 369,375 ----
  {
    inchash::hash hstate;
    hstate.merge_hash (m_function_point.hash ());
!   hstate.add_ptr (m_call_string);
    return hstate.end ();
  }
  
*************** program_point::hash () const
*** 379,389 ****
  function *
  program_point::get_function_at_depth (unsigned depth) const
  {
!   gcc_assert (depth <= m_call_string.length ());
!   if (depth == m_call_string.length ())
      return m_function_point.get_function ();
    else
!     return m_call_string[depth].get_caller_function ();
  }
  
  /* Assert that this object is sane.  */
--- 378,388 ----
  function *
  program_point::get_function_at_depth (unsigned depth) const
  {
!   gcc_assert (depth <= m_call_string->length ());
!   if (depth == m_call_string->length ())
      return m_function_point.get_function ();
    else
!     return get_call_string ()[depth].get_caller_function ();
  }
  
  /* Assert that this object is sane.  */
*************** program_point::validate () const
*** 396,407 ****
    return;
  #endif
  
!   m_call_string.validate ();
    /* The "callee" of the final entry in the callstring should be the
       function of the m_function_point.  */
!   if (m_call_string.length () > 0)
!     gcc_assert (m_call_string[m_call_string.length () - 1].get_callee_function ()
! 		== get_function ());
  }
  
  /* Check to see if SUCC is a valid edge to take (ensuring that we have
--- 395,407 ----
    return;
  #endif
  
!   m_call_string->validate ();
    /* The "callee" of the final entry in the callstring should be the
       function of the m_function_point.  */
!   if (m_call_string->length () > 0)
!     gcc_assert
!       ((*m_call_string)[m_call_string->length () - 1].get_callee_function ()
!        == get_function ());
  }
  
  /* Check to see if SUCC is a valid edge to take (ensuring that we have
*************** program_point::on_edge (exploded_graph &
*** 444,457 ****
  	  }
  
  	/* Add the callsite to the call string.  */
! 	m_call_string.push_call (eg.get_supergraph (), call_sedge);
  
  	/* Impose a maximum recursion depth and don't analyze paths
  	   that exceed it further.
  	   This is something of a blunt workaround, but it only
  	   applies to recursion (and mutual recursion), not to
  	   general call stacks.  */
! 	if (m_call_string.calc_recursion_depth ()
  	    > param_analyzer_max_recursion_depth)
  	  {
  	    if (logger)
--- 444,458 ----
  	  }
  
  	/* Add the callsite to the call string.  */
! 	m_call_string = m_call_string->push_call (eg.get_supergraph (),
! 						  call_sedge);
  
  	/* Impose a maximum recursion depth and don't analyze paths
  	   that exceed it further.
  	   This is something of a blunt workaround, but it only
  	   applies to recursion (and mutual recursion), not to
  	   general call stacks.  */
! 	if (m_call_string->calc_recursion_depth ()
  	    > param_analyzer_max_recursion_depth)
  	  {
  	    if (logger)
*************** program_point::on_edge (exploded_graph &
*** 465,477 ****
      case SUPEREDGE_RETURN:
        {
  	/* Require that we return to the call site in the call string.  */
! 	if (m_call_string.empty_p ())
  	  {
  	    if (logger)
  	      logger->log ("rejecting return edge: empty call string");
  	    return false;
  	  }
! 	const call_string::element_t top_of_stack = m_call_string.pop ();
  	call_string::element_t current_call_string_element (succ->m_dest,
  							    succ->m_src);
  	if (top_of_stack != current_call_string_element)
--- 466,480 ----
      case SUPEREDGE_RETURN:
        {
  	/* Require that we return to the call site in the call string.  */
! 	if (m_call_string->empty_p ())
  	  {
  	    if (logger)
  	      logger->log ("rejecting return edge: empty call string");
  	    return false;
  	  }
! 	const call_string::element_t &top_of_stack
! 	  = m_call_string->get_top_of_stack ();
! 	m_call_string = m_call_string->get_parent ();
  	call_string::element_t current_call_string_element (succ->m_dest,
  							    succ->m_src);
  	if (top_of_stack != current_call_string_element)
*************** function_point::get_next () const
*** 669,674 ****
--- 672,696 ----
      }
  }
  
+ /* class program_point.  */
+ 
+ program_point
+ program_point::origin (const region_model_manager &mgr)
+ {
+   return program_point (function_point (NULL, NULL,
+ 					0, PK_ORIGIN),
+ 			mgr.get_empty_call_string ());
+ }
+ 
+ program_point
+ program_point::from_function_entry (const region_model_manager &mgr,
+ 				    const supergraph &sg,
+ 				    function *fun)
+ {
+   return program_point (function_point::from_function_entry (sg, fun),
+ 			mgr.get_empty_call_string ());
+ }
+ 
  /* For those program points for which there is a uniquely-defined
     successor, return it.  */
  
*************** program_point::get_next () const
*** 698,703 ****
--- 720,766 ----
      }
  }
  
+ /* Return true iff POINT_A and POINT_B share the same function and
+    call_string, both directly, and when attempting to undo inlining
+    information.  */
+ 
+ bool
+ program_point::effectively_intraprocedural_p (const program_point &point_a,
+ 					      const program_point &point_b)
+ {
+   /* First, compare without considering inlining info.  */
+   if (point_a.get_function ()
+       != point_b.get_function ())
+     return false;
+   if (&point_a.get_call_string ()
+       != &point_b.get_call_string ())
+     return false;
+ 
+   /* Consider inlining info; they must have originally come from
+      the same function and have been inlined in the same way.  */
+   location_t loc_a = point_a.get_location ();
+   location_t loc_b = point_b.get_location ();
+   inlining_iterator iter_a (loc_a);
+   inlining_iterator iter_b (loc_b);
+   while (!(iter_a.done_p () || iter_b.done_p ()))
+     {
+       if (iter_a.done_p () || iter_b.done_p ())
+ 	return false;
+ 
+       if (iter_a.get_fndecl () != iter_b.get_fndecl ())
+ 	return false;
+       if (iter_a.get_callsite () != iter_b.get_callsite ())
+ 	return false;
+       if (iter_a.get_block () != iter_b.get_block ())
+ 	return false;
+ 
+       iter_a.next ();
+       iter_b.next ();
+     }
+ 
+   return true;
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
*************** static void
*** 721,727 ****
  test_function_point_ordering ()
  {
    const supernode *snode = NULL;
-   const call_string call_string;
  
    /* Populate an array with various points within the same
       snode, in order.  */
--- 784,789 ----
*************** test_function_point_ordering ()
*** 756,764 ****
  static void
  test_program_point_equality ()
  {
    const supernode *snode = NULL;
  
!   const call_string cs;
  
    program_point a = program_point::before_supernode (snode, NULL,
  						     cs);
--- 818,828 ----
  static void
  test_program_point_equality ()
  {
+   region_model_manager mgr;
+ 
    const supernode *snode = NULL;
  
!   const call_string &cs = mgr.get_empty_call_string ();
  
    program_point a = program_point::before_supernode (snode, NULL,
  						     cs);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/program-point.h gcc-13.1.0/gcc/analyzer/program-point.h
*** gcc-12.2.0/gcc/analyzer/program-point.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/program-point.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing locations within the program.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,29 ----
  #ifndef GCC_ANALYZER_PROGRAM_POINT_H
  #define GCC_ANALYZER_PROGRAM_POINT_H
  
+ #include "pretty-print.h"
+ #include "analyzer/call-string.h"
+ 
  namespace ana {
  
  class exploded_graph;
*************** public:
*** 174,180 ****
    program_point (const function_point &fn_point,
  		 const call_string &call_string)
    : m_function_point (fn_point),
!     m_call_string (call_string)
    {
    }
  
--- 177,183 ----
    program_point (const function_point &fn_point,
  		 const call_string &call_string)
    : m_function_point (fn_point),
!     m_call_string (&call_string)
    {
    }
  
*************** public:
*** 197,203 ****
    /* Accessors.  */
  
    const function_point &get_function_point () const { return m_function_point; }
!   const call_string &get_call_string () const { return m_call_string; }
  
    const supernode *get_supernode () const
    {
--- 200,206 ----
    /* Accessors.  */
  
    const function_point &get_function_point () const { return m_function_point; }
!   const call_string &get_call_string () const { return *m_call_string; }
  
    const supernode *get_supernode () const
    {
*************** public:
*** 242,264 ****
    {
      if (get_kind () == PK_ORIGIN)
        return 0;
!     return m_call_string.length () + 1;
    }
  
    /* Factory functions for making various kinds of program_point.  */
!   static program_point origin ()
!   {
!     return program_point (function_point (NULL, NULL,
! 					  0, PK_ORIGIN),
! 			  call_string ());
!   }
! 
!   static program_point from_function_entry (const supergraph &sg,
! 					    function *fun)
!   {
!     return program_point (function_point::from_function_entry (sg, fun),
! 			  call_string ());
!   }
  
    static program_point before_supernode (const supernode *supernode,
  					 const superedge *from_edge,
--- 245,258 ----
    {
      if (get_kind () == PK_ORIGIN)
        return 0;
!     return get_call_string ().length () + 1;
    }
  
    /* Factory functions for making various kinds of program_point.  */
!   static program_point origin (const region_model_manager &mgr);
!   static program_point from_function_entry (const region_model_manager &mgr,
! 					    const supergraph &sg,
! 					    function *fun);
  
    static program_point before_supernode (const supernode *supernode,
  					 const superedge *from_edge,
*************** public:
*** 288,298 ****
  
    static program_point empty ()
    {
!     return program_point (function_point::empty (), call_string ());
    }
    static program_point deleted ()
    {
!     return program_point (function_point::deleted (), call_string ());
    }
  
    bool on_edge (exploded_graph &eg, const superedge *succ);
--- 282,292 ----
  
    static program_point empty ()
    {
!     return program_point (function_point::empty ());
    }
    static program_point deleted ()
    {
!     return program_point (function_point::deleted ());
    }
  
    bool on_edge (exploded_graph &eg, const superedge *succ);
*************** public:
*** 305,313 ****
  
    program_point get_next () const;
  
   private:
    function_point m_function_point;
!   call_string m_call_string;
  };
  
  } // namespace ana
--- 299,316 ----
  
    program_point get_next () const;
  
+   static bool effectively_intraprocedural_p (const program_point &point_a,
+ 					     const program_point &point_b);
+ 
   private:
+   program_point (const function_point &fn_point)
+   : m_function_point (fn_point),
+     m_call_string (NULL)
+   {
+   }
+ 
    function_point m_function_point;
!   const call_string *m_call_string;
  };
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/program-state.cc gcc-13.1.0/gcc/analyzer/program-state.cc
*** gcc-12.2.0/gcc/analyzer/program-state.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/program-state.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,37 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "diagnostic-core.h"
  #include "diagnostic.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
  #include "analyzer/call-string.h"
--- 19,35 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "diagnostic-core.h"
  #include "diagnostic.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "sbitmap.h"
  #include "bitmap.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
  #include "analyzer/call-string.h"
*************** along with GCC; see the file COPYING3.
*** 40,48 ****
  #include "analyzer/region-model.h"
  #include "analyzer/program-state.h"
  #include "analyzer/constraint-manager.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
- #include "shortest-paths.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/diagnostic-manager.h"
--- 38,43 ----
*************** along with GCC; see the file COPYING3.
*** 56,61 ****
--- 51,57 ----
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
  #include "analyzer/state-purge.h"
+ #include "analyzer/call-summary.h"
  #include "analyzer/analyzer-selftests.h"
  
  #if ENABLE_ANALYZER
*************** sm_state_map::to_json () const
*** 300,307 ****
        entry_t e = (*iter).second;
  
        label_text sval_desc = sval->get_desc ();
!       map_obj->set (sval_desc.m_buffer, e.m_state->to_json ());
!       sval_desc.maybe_free ();
  
        /* This doesn't yet JSONify e.m_origin.  */
      }
--- 296,302 ----
        entry_t e = (*iter).second;
  
        label_text sval_desc = sval->get_desc ();
!       map_obj->set (sval_desc.get (), e.m_state->to_json ());
  
        /* This doesn't yet JSONify e.m_origin.  */
      }
*************** sm_state_map::impl_set_state (const sval
*** 523,528 ****
--- 518,531 ----
    return true;
  }
  
+ /* Clear any state for SVAL from this state map.  */
+ 
+ void
+ sm_state_map::clear_any_state (const svalue *sval)
+ {
+   m_map.remove (sval);
+ }
+ 
  /* Set the "global" state within this state map to STATE.  */
  
  void
*************** sm_state_map::canonicalize_svalue (const
*** 724,729 ****
--- 727,793 ----
    return sval;
  }
  
+ /* Attempt to merge this state map with OTHER, writing the result
+    into *OUT.
+    Return true if the merger was possible, false otherwise.
+ 
+    Normally, only identical state maps can be merged, so that
+    differences between state maps lead to different enodes
+ 
+    However some state machines may support merging states to
+    allow for discarding of less important states, and thus avoid
+    blow-up of the exploded graph.  */
+ 
+ bool
+ sm_state_map::can_merge_with_p (const sm_state_map &other,
+ 				const state_machine &sm,
+ 				const extrinsic_state &ext_state,
+ 				sm_state_map **out) const
+ {
+   /* If identical, then they merge trivially, with a copy.  */
+   if (*this == other)
+     {
+       delete *out;
+       *out = clone ();
+       return true;
+     }
+ 
+   delete *out;
+   *out = new sm_state_map (sm);
+ 
+   /* Otherwise, attempt to merge element by element. */
+ 
+   /* Try to merge global state.  */
+   if (state_machine::state_t merged_global_state
+       = sm.maybe_get_merged_state (get_global_state (),
+ 				   other.get_global_state ()))
+     (*out)->set_global_state (merged_global_state);
+   else
+     return false;
+ 
+   /* Try to merge state each svalue's state (for the union
+      of svalues represented by each smap).
+      Ignore the origin information.  */
+   hash_set<const svalue *> svals;
+   for (auto kv : *this)
+     svals.add (kv.first);
+   for (auto kv : other)
+     svals.add (kv.first);
+   for (auto sval : svals)
+     {
+       state_machine::state_t this_state = get_state (sval, ext_state);
+       state_machine::state_t other_state = other.get_state (sval, ext_state);
+       if (state_machine::state_t merged_state
+ 	    = sm.maybe_get_merged_state (this_state, other_state))
+ 	(*out)->impl_set_state (sval, merged_state, NULL, ext_state);
+       else
+ 	return false;
+     }
+ 
+   /* Successfully merged all elements.  */
+   return true;
+ }
+ 
  /* class program_state.  */
  
  /* program_state's ctor.  */
*************** program_state::program_state (const extr
*** 744,749 ****
--- 808,840 ----
      }
  }
  
+ /* Attempt to to use R to replay SUMMARY into this object.
+    Return true if it is possible.  */
+ 
+ bool
+ sm_state_map::replay_call_summary (call_summary_replay &r,
+ 				   const sm_state_map &summary)
+ {
+   for (auto kv : summary.m_map)
+     {
+       const svalue *summary_sval = kv.first;
+       const svalue *caller_sval = r.convert_svalue_from_summary (summary_sval);
+       if (!caller_sval)
+ 	continue;
+       if (!caller_sval->can_have_associated_state_p ())
+ 	continue;
+       const svalue *summary_origin = kv.second.m_origin;
+       const svalue *caller_origin
+ 	= (summary_origin
+ 	   ? r.convert_svalue_from_summary (summary_origin)
+ 	   : NULL);
+       // caller_origin can be NULL.
+       m_map.put (caller_sval, entry_t (kv.second.m_state, caller_origin));
+     }
+   m_global_state = summary.m_global_state;
+   return true;
+ }
+ 
  /* program_state's copy ctor.  */
  
  program_state::program_state (const program_state &other)
*************** program_state::on_edge (exploded_graph &
*** 1014,1019 ****
--- 1105,1131 ----
  			const superedge *succ,
  			uncertainty_t *uncertainty)
  {
+   class my_path_context : public path_context
+   {
+   public:
+     my_path_context (bool &terminated) : m_terminated (terminated) {}
+     void bifurcate (std::unique_ptr<custom_edge_info>) final override
+     {
+       gcc_unreachable ();
+     }
+ 
+     void terminate_path () final override
+     {
+       m_terminated = true;
+     }
+ 
+     bool terminate_path_p () const final override
+     {
+       return m_terminated;
+     }
+     bool &m_terminated;
+   };
+ 
    /* Update state.  */
    const program_point &point = enode->get_point ();
    const gimple *last_stmt = point.get_supernode ()->get_last_stmt ();
*************** program_state::on_edge (exploded_graph &
*** 1026,1036 ****
       Adding the relevant conditions for the edge could also trigger
       sm-state transitions (e.g. transitions due to ptrs becoming known
       to be NULL or non-NULL) */
! 
    impl_region_model_context ctxt (eg, enode,
  				  &enode->get_state (),
  				  this,
! 				  uncertainty, NULL,
  				  last_stmt);
    if (!m_region_model->maybe_update_for_edge (*succ,
  					      last_stmt,
--- 1138,1149 ----
       Adding the relevant conditions for the edge could also trigger
       sm-state transitions (e.g. transitions due to ptrs becoming known
       to be NULL or non-NULL) */
!   bool terminated = false;
!   my_path_context path_ctxt (terminated);
    impl_region_model_context ctxt (eg, enode,
  				  &enode->get_state (),
  				  this,
! 				  uncertainty, &path_ctxt,
  				  last_stmt);
    if (!m_region_model->maybe_update_for_edge (*succ,
  					      last_stmt,
*************** program_state::on_edge (exploded_graph &
*** 1043,1048 ****
--- 1156,1163 ----
  		     succ->m_dest->m_index);
        return false;
      }
+   if (terminated)
+     return false;
  
    program_state::detect_leaks (enode->get_state (), *this,
  			       NULL, eg.get_ext_state (),
*************** program_state::can_merge_with_p (const p
*** 1263,1273 ****
    gcc_assert (out);
    gcc_assert (m_region_model);
  
!   /* Early reject if there are sm-differences between the states.  */
    int i;
    sm_state_map *smap;
    FOR_EACH_VEC_ELT (out->m_checker_states, i, smap)
!     if (*m_checker_states[i] != *other.m_checker_states[i])
        return false;
  
    /* Attempt to merge the region_models.  */
--- 1378,1391 ----
    gcc_assert (out);
    gcc_assert (m_region_model);
  
!   /* Attempt to merge the sm-states.  */
    int i;
    sm_state_map *smap;
    FOR_EACH_VEC_ELT (out->m_checker_states, i, smap)
!     if (!m_checker_states[i]->can_merge_with_p (*other.m_checker_states[i],
! 						ext_state.get_sm (i),
! 						ext_state,
! 						&out->m_checker_states[i]))
        return false;
  
    /* Attempt to merge the region_models.  */
*************** program_state::can_merge_with_p (const p
*** 1278,1290 ****
  					 this, &other))
      return false;
  
-   /* Copy m_checker_states to OUT.  */
-   FOR_EACH_VEC_ELT (out->m_checker_states, i, smap)
-     {
-       delete smap;
-       out->m_checker_states[i] = m_checker_states[i]->clone ();
-     }
- 
    out->m_region_model->canonicalize ();
  
    return true;
--- 1396,1401 ----
*************** program_state::detect_leaks (const progr
*** 1438,1443 ****
--- 1549,1576 ----
  	dest_state.m_region_model->unset_dynamic_extents (reg);
  }
  
+ /* Attempt to to use R to replay SUMMARY into this object.
+    Return true if it is possible.  */
+ 
+ bool
+ program_state::replay_call_summary (call_summary_replay &r,
+ 				    const program_state &summary)
+ {
+   if (!m_region_model->replay_call_summary (r, *summary.m_region_model))
+     return false;
+ 
+   for (unsigned sm_idx = 0; sm_idx < m_checker_states.length (); sm_idx++)
+     {
+       const sm_state_map *summary_sm_map = summary.m_checker_states[sm_idx];
+       m_checker_states[sm_idx]->replay_call_summary (r, *summary_sm_map);
+     }
+ 
+   if (!summary.m_valid)
+     m_valid = false;
+ 
+   return true;
+ }
+ 
  /* Handle calls to "__analyzer_dump_state".  */
  
  void
*************** test_program_state_1 ()
*** 1626,1632 ****
    const svalue *size_in_bytes
      = mgr->get_or_create_unknown_svalue (size_type_node);
    const region *new_reg
!     = model->create_region_for_heap_alloc (size_in_bytes, NULL);
    const svalue *ptr_sval = mgr->get_ptr_svalue (ptr_type_node, new_reg);
    model->set_value (model->get_lvalue (p, NULL),
  		    ptr_sval, NULL);
--- 1759,1765 ----
    const svalue *size_in_bytes
      = mgr->get_or_create_unknown_svalue (size_type_node);
    const region *new_reg
!     = model->get_or_create_region_for_heap_alloc (size_in_bytes, NULL);
    const svalue *ptr_sval = mgr->get_ptr_svalue (ptr_type_node, new_reg);
    model->set_value (model->get_lvalue (p, NULL),
  		    ptr_sval, NULL);
*************** test_program_state_merging ()
*** 1668,1679 ****
       malloc sm-state, pointing to a region on the heap.  */
    tree p = build_global_decl ("p", ptr_type_node);
  
!   program_point point (program_point::origin ());
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_malloc_state_machine (NULL));
-   engine eng;
    extrinsic_state ext_state (checkers, &eng);
-   region_model_manager *mgr = eng.get_model_manager ();
  
    program_state s0 (ext_state);
    uncertainty_t uncertainty;
--- 1801,1812 ----
       malloc sm-state, pointing to a region on the heap.  */
    tree p = build_global_decl ("p", ptr_type_node);
  
!   engine eng;
!   region_model_manager *mgr = eng.get_model_manager ();
!   program_point point (program_point::origin (*mgr));
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_malloc_state_machine (NULL));
    extrinsic_state ext_state (checkers, &eng);
  
    program_state s0 (ext_state);
    uncertainty_t uncertainty;
*************** test_program_state_merging ()
*** 1683,1689 ****
    const svalue *size_in_bytes
      = mgr->get_or_create_unknown_svalue (size_type_node);
    const region *new_reg
!     = model0->create_region_for_heap_alloc (size_in_bytes, NULL);
    const svalue *ptr_sval = mgr->get_ptr_svalue (ptr_type_node, new_reg);
    model0->set_value (model0->get_lvalue (p, &ctxt),
  		     ptr_sval, &ctxt);
--- 1816,1822 ----
    const svalue *size_in_bytes
      = mgr->get_or_create_unknown_svalue (size_type_node);
    const region *new_reg
!     = model0->get_or_create_region_for_heap_alloc (size_in_bytes, NULL);
    const svalue *ptr_sval = mgr->get_ptr_svalue (ptr_type_node, new_reg);
    model0->set_value (model0->get_lvalue (p, &ctxt),
  		     ptr_sval, &ctxt);
*************** test_program_state_merging ()
*** 1736,1745 ****
  static void
  test_program_state_merging_2 ()
  {
!   program_point point (program_point::origin ());
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_signal_state_machine (NULL));
-   engine eng;
    extrinsic_state ext_state (checkers, &eng);
  
    const state_machine::state test_state_0 ("test state 0", 0);
--- 1869,1879 ----
  static void
  test_program_state_merging_2 ()
  {
!   engine eng;
!   region_model_manager *mgr = eng.get_model_manager ();
!   program_point point (program_point::origin (*mgr));
    auto_delete_vec <state_machine> checkers;
    checkers.safe_push (make_signal_state_machine (NULL));
    extrinsic_state ext_state (checkers, &eng);
  
    const state_machine::state test_state_0 ("test state 0", 0);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/program-state.h gcc-13.1.0/gcc/analyzer/program-state.h
*** gcc-12.2.0/gcc/analyzer/program-state.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/program-state.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for representing the state of interest at a given path of analysis.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 145,150 ****
--- 145,151 ----
  		       state_machine::state_t state,
  		       const svalue *origin,
  		       const extrinsic_state &ext_state);
+   void clear_any_state (const svalue *sval);
  
    void set_global_state (state_machine::state_t state);
    state_machine::state_t get_global_state () const;
*************** public:
*** 171,176 ****
--- 172,185 ----
    static const svalue *
    canonicalize_svalue (const svalue *sval, const extrinsic_state &ext_state);
  
+   bool replay_call_summary (call_summary_replay &r,
+ 			    const sm_state_map &summary);
+ 
+   bool can_merge_with_p (const sm_state_map &other,
+ 			 const state_machine &sm,
+ 			 const extrinsic_state &ext_state,
+ 			 sm_state_map **out) const;
+ 
  private:
    const state_machine &m_sm;
    map_t m_map;
*************** public:
*** 273,278 ****
--- 282,290 ----
  			    const extrinsic_state &ext_state,
  			    region_model_context *ctxt);
  
+   bool replay_call_summary (call_summary_replay &r,
+ 			    const program_state &summary);
+ 
    void impl_call_analyzer_dump_state (const gcall *call,
  				      const extrinsic_state &ext_state,
  				      region_model_context *ctxt);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/reachability.h gcc-13.1.0/gcc/analyzer/reachability.h
*** gcc-12.2.0/gcc/analyzer/reachability.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/reachability.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Digraph reachability.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Digraph reachability.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model-asm.cc gcc-13.1.0/gcc/analyzer/region-model-asm.cc
*** gcc-12.2.0/gcc/analyzer/region-model-asm.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model-asm.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Handling inline asm in the analyzer.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Handling inline asm in the analyzer.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 28,36 ****
  #include "gimple-iterator.h"
  #include "diagnostic-core.h"
  #include "pretty-print.h"
- #include "tristate.h"
- #include "selftest.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "options.h"
--- 29,34 ----
*************** region_model::on_asm_stmt (const gasm *s
*** 228,234 ****
  
        tree src_expr = input_tvec[i];
        const svalue *src_sval = get_rvalue (src_expr, ctxt);
!       check_for_poison (src_sval, src_expr, ctxt);
        input_svals.quick_push (src_sval);
        reachable_regs.handle_sval (src_sval);
  
--- 226,232 ----
  
        tree src_expr = input_tvec[i];
        const svalue *src_sval = get_rvalue (src_expr, ctxt);
!       check_for_poison (src_sval, src_expr, NULL, ctxt);
        input_svals.quick_push (src_sval);
        reachable_regs.handle_sval (src_sval);
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model-impl-calls.cc gcc-13.1.0/gcc/analyzer/region-model-impl-calls.cc
*** gcc-12.2.0/gcc/analyzer/region-model-impl-calls.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model-impl-calls.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,913 ****
- /* Handling for the known behavior of various specific functions.
-    Copyright (C) 2020-2022 Free Software Foundation, Inc.
-    Contributed by David Malcolm <dmalcolm@redhat.com>.
- 
- This file is part of GCC.
- 
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- 
- GCC is distributed in the hope that it will be useful, but
- WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "tree.h"
- #include "function.h"
- #include "basic-block.h"
- #include "gimple.h"
- #include "gimple-iterator.h"
- #include "diagnostic-core.h"
- #include "graphviz.h"
- #include "options.h"
- #include "cgraph.h"
- #include "tree-dfa.h"
- #include "stringpool.h"
- #include "convert.h"
- #include "target.h"
- #include "fold-const.h"
- #include "tree-pretty-print.h"
- #include "diagnostic-color.h"
- #include "diagnostic-metadata.h"
- #include "tristate.h"
- #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
- #include "json.h"
- #include "analyzer/analyzer.h"
- #include "analyzer/analyzer-logging.h"
- #include "ordered-hash-map.h"
- #include "options.h"
- #include "cgraph.h"
- #include "cfg.h"
- #include "digraph.h"
- #include "analyzer/supergraph.h"
- #include "sbitmap.h"
- #include "analyzer/call-string.h"
- #include "analyzer/program-point.h"
- #include "analyzer/store.h"
- #include "analyzer/region-model.h"
- #include "analyzer/call-info.h"
- #include "gimple-pretty-print.h"
- 
- #if ENABLE_ANALYZER
- 
- namespace ana {
- 
- /* class call_details.  */
- 
- /* call_details's ctor.  */
- 
- call_details::call_details (const gcall *call, region_model *model,
- 			    region_model_context *ctxt)
- : m_call (call), m_model (model), m_ctxt (ctxt),
-   m_lhs_type (NULL_TREE), m_lhs_region (NULL)
- {
-   m_lhs_type = NULL_TREE;
-   if (tree lhs = gimple_call_lhs (call))
-     {
-       m_lhs_region = model->get_lvalue (lhs, ctxt);
-       m_lhs_type = TREE_TYPE (lhs);
-     }
- }
- 
- /* Get the manager from m_model.  */
- 
- region_model_manager *
- call_details::get_manager () const
- {
-   return m_model->get_manager ();
- }
- 
- /* Get any uncertainty_t associated with the region_model_context.  */
- 
- uncertainty_t *
- call_details::get_uncertainty () const
- {
-   if (m_ctxt)
-     return m_ctxt->get_uncertainty ();
-   else
-     return NULL;
- }
- 
- /* If the callsite has a left-hand-side region, set it to RESULT
-    and return true.
-    Otherwise do nothing and return false.  */
- 
- bool
- call_details::maybe_set_lhs (const svalue *result) const
- {
-   gcc_assert (result);
-   if (m_lhs_region)
-     {
-       m_model->set_value (m_lhs_region, result, m_ctxt);
-       return true;
-     }
-   else
-     return false;
- }
- 
- /* Return the number of arguments used by the call statement.  */
- 
- unsigned
- call_details::num_args () const
- {
-   return gimple_call_num_args (m_call);
- }
- 
- /* Get argument IDX at the callsite as a tree.  */
- 
- tree
- call_details::get_arg_tree (unsigned idx) const
- {
-   return gimple_call_arg (m_call, idx);
- }
- 
- /* Get the type of argument IDX.  */
- 
- tree
- call_details::get_arg_type (unsigned idx) const
- {
-   return TREE_TYPE (gimple_call_arg (m_call, idx));
- }
- 
- /* Get argument IDX at the callsite as an svalue.  */
- 
- const svalue *
- call_details::get_arg_svalue (unsigned idx) const
- {
-   tree arg = get_arg_tree (idx);
-   return m_model->get_rvalue (arg, m_ctxt);
- }
- 
- /* Attempt to get the string literal for argument IDX, or return NULL
-    otherwise.
-    For use when implementing "__analyzer_*" functions that take
-    string literals.  */
- 
- const char *
- call_details::get_arg_string_literal (unsigned idx) const
- {
-   const svalue *str_arg = get_arg_svalue (idx);
-   if (const region *pointee = str_arg->maybe_get_region ())
-     if (const string_region *string_reg = pointee->dyn_cast_string_region ())
-       {
- 	tree string_cst = string_reg->get_string_cst ();
- 	return TREE_STRING_POINTER (string_cst);
-       }
-   return NULL;
- }
- 
- /* Attempt to get the fndecl used at this call, if known, or NULL_TREE
-    otherwise.  */
- 
- tree
- call_details::get_fndecl_for_call () const
- {
-   return m_model->get_fndecl_for_call (m_call, m_ctxt);
- }
- 
- /* Dump a multiline representation of this call to PP.  */
- 
- void
- call_details::dump_to_pp (pretty_printer *pp, bool simple) const
- {
-   pp_string (pp, "gcall: ");
-   pp_gimple_stmt_1 (pp, m_call, 0 /* spc */, TDF_NONE /* flags */);
-   pp_newline (pp);
-   pp_string (pp, "return region: ");
-   if (m_lhs_region)
-     m_lhs_region->dump_to_pp (pp, simple);
-   else
-     pp_string (pp, "NULL");
-   pp_newline (pp);
-   for (unsigned i = 0; i < gimple_call_num_args (m_call); i++)
-     {
-       const svalue *arg_sval = get_arg_svalue (i);
-       pp_printf (pp, "arg %i: ", i);
-       arg_sval->dump_to_pp (pp, simple);
-       pp_newline (pp);
-     }
- }
- 
- /* Dump a multiline representation of this call to stderr.  */
- 
- DEBUG_FUNCTION void
- call_details::dump (bool simple) const
- {
-   pretty_printer pp;
-   pp_format_decoder (&pp) = default_tree_printer;
-   pp_show_color (&pp) = pp_show_color (global_dc->printer);
-   pp.buffer->stream = stderr;
-   dump_to_pp (&pp, simple);
-   pp_flush (&pp);
- }
- 
- /* Get a conjured_svalue for this call for REG,
-    and purge any state already relating to that conjured_svalue.  */
- 
- const svalue *
- call_details::get_or_create_conjured_svalue (const region *reg) const
- {
-   region_model_manager *mgr = m_model->get_manager ();
-   return mgr->get_or_create_conjured_svalue (reg->get_type (), m_call, reg,
- 					     conjured_purge (m_model, m_ctxt));
- }
- 
- /* Implementations of specific functions.  */
- 
- /* Handle the on_call_pre part of "alloca".  */
- 
- void
- region_model::impl_call_alloca (const call_details &cd)
- {
-   const svalue *size_sval = cd.get_arg_svalue (0);
-   const region *new_reg = create_region_for_alloca (size_sval, cd.get_ctxt ());
-   const svalue *ptr_sval
-     = m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
-   cd.maybe_set_lhs (ptr_sval);
- }
- 
- /* Handle a call to "__analyzer_describe".
- 
-    Emit a warning describing the 2nd argument (which can be of any
-    type), at the given verbosity level.  This is for use when
-    debugging, and may be of use in DejaGnu tests.  */
- 
- void
- region_model::impl_call_analyzer_describe (const gcall *call,
- 					   region_model_context *ctxt)
- {
-   tree t_verbosity = gimple_call_arg (call, 0);
-   tree t_val = gimple_call_arg (call, 1);
-   const svalue *sval = get_rvalue (t_val, ctxt);
-   bool simple = zerop (t_verbosity);
-   label_text desc = sval->get_desc (simple);
-   warning_at (call->location, 0, "svalue: %qs", desc.m_buffer);
- }
- 
- /* Handle a call to "__analyzer_dump_capacity".
- 
-    Emit a warning describing the capacity of the base region of
-    the region pointed to by the 1st argument.
-    This is for use when debugging, and may be of use in DejaGnu tests.  */
- 
- void
- region_model::impl_call_analyzer_dump_capacity (const gcall *call,
- 						region_model_context *ctxt)
- {
-   tree t_ptr = gimple_call_arg (call, 0);
-   const svalue *sval_ptr = get_rvalue (t_ptr, ctxt);
-   const region *reg = deref_rvalue (sval_ptr, t_ptr, ctxt);
-   const region *base_reg = reg->get_base_region ();
-   const svalue *capacity = get_capacity (base_reg);
-   label_text desc = capacity->get_desc (true);
-   warning_at (call->location, 0, "capacity: %qs", desc.m_buffer);
- }
- 
- /* Compare D1 and D2 using their names, and then IDs to order them.  */
- 
- static int
- cmp_decls (tree d1, tree d2)
- {
-   gcc_assert (DECL_P (d1));
-   gcc_assert (DECL_P (d2));
-   if (DECL_NAME (d1) && DECL_NAME (d2))
-     if (int cmp = strcmp (IDENTIFIER_POINTER (DECL_NAME (d1)),
- 			  IDENTIFIER_POINTER (DECL_NAME (d2))))
-       return cmp;
-   return (int)DECL_UID (d1) - (int)DECL_UID (d2);
- }
- 
- /* Comparator for use by vec<tree>::qsort,
-    using their names, and then IDs to order them.  */
- 
- static int
- cmp_decls_ptr_ptr (const void *p1, const void *p2)
- {
-   tree const *d1 = (tree const *)p1;
-   tree const *d2 = (tree const *)p2;
- 
-   return cmp_decls (*d1, *d2);
- }
- 
- /* Handle a call to "__analyzer_dump_escaped".
- 
-    Emit a warning giving the number of decls that have escaped, followed
-    by a comma-separated list of their names, in alphabetical order.
- 
-    This is for use when debugging, and may be of use in DejaGnu tests.  */
- 
- void
- region_model::impl_call_analyzer_dump_escaped (const gcall *call)
- {
-   auto_vec<tree> escaped_decls;
-   for (auto iter : m_store)
-     {
-       const binding_cluster *c = iter.second;
-       if (!c->escaped_p ())
- 	continue;
-       if (tree decl = c->get_base_region ()->maybe_get_decl ())
- 	escaped_decls.safe_push (decl);
-     }
- 
-   /* Sort them into deterministic order; alphabetical is
-      probably most user-friendly.  */
-   escaped_decls.qsort (cmp_decls_ptr_ptr);
- 
-   pretty_printer pp;
-   pp_format_decoder (&pp) = default_tree_printer;
-   pp_show_color (&pp) = pp_show_color (global_dc->printer);
-   bool first = true;
-   for (auto iter : escaped_decls)
-     {
-       if (first)
- 	first = false;
-       else
- 	pp_string (&pp, ", ");
-       pp_printf (&pp, "%qD", iter);
-     }
-   /* Print the number to make it easier to write DejaGnu tests for
-      the "nothing has escaped" case.  */
-   warning_at (call->location, 0, "escaped: %i: %s",
- 	      escaped_decls.length (),
- 	      pp_formatted_text (&pp));
- }
- 
- /* Handle a call to "__analyzer_eval" by evaluating the input
-    and dumping as a dummy warning, so that test cases can use
-    dg-warning to validate the result (and so unexpected warnings will
-    lead to DejaGnu failures).
-    Broken out as a subroutine to make it easier to put a breakpoint on it
-    - though typically this doesn't help, as we have an SSA name as the arg,
-    and what's more interesting is usually the def stmt for that name.  */
- 
- void
- region_model::impl_call_analyzer_eval (const gcall *call,
- 				       region_model_context *ctxt)
- {
-   tree t_arg = gimple_call_arg (call, 0);
-   tristate t = eval_condition (t_arg, NE_EXPR, integer_zero_node, ctxt);
-   warning_at (call->location, 0, "%s", t.as_string ());
- }
- 
- /* Handle the on_call_pre part of "__builtin_expect" etc.  */
- 
- void
- region_model::impl_call_builtin_expect (const call_details &cd)
- {
-   /* __builtin_expect's return value is its initial argument.  */
-   const svalue *sval = cd.get_arg_svalue (0);
-   cd.maybe_set_lhs (sval);
- }
- 
- /* Handle the on_call_pre part of "calloc".  */
- 
- void
- region_model::impl_call_calloc (const call_details &cd)
- {
-   const svalue *nmemb_sval = cd.get_arg_svalue (0);
-   const svalue *size_sval = cd.get_arg_svalue (1);
-   /* TODO: check for overflow here?  */
-   const svalue *prod_sval
-     = m_mgr->get_or_create_binop (size_type_node, MULT_EXPR,
- 				  nmemb_sval, size_sval);
-   const region *new_reg
-     = create_region_for_heap_alloc (prod_sval, cd.get_ctxt ());
-   const region *sized_reg
-     = m_mgr->get_sized_region (new_reg, NULL_TREE, prod_sval);
-   zero_fill_region (sized_reg);
-   if (cd.get_lhs_type ())
-     {
-       const svalue *ptr_sval
- 	= m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
-       cd.maybe_set_lhs (ptr_sval);
-     }
- }
- 
- /* Handle the on_call_pre part of "error" and "error_at_line" from
-    GNU's non-standard <error.h>.
-    MIN_ARGS identifies the minimum number of expected arguments
-    to be consistent with such a call (3 and 5 respectively).
-    Return true if handling it as one of these functions.
-    Write true to *OUT_TERMINATE_PATH if this execution path should be
-    terminated (e.g. the function call terminates the process).  */
- 
- bool
- region_model::impl_call_error (const call_details &cd, unsigned min_args,
- 			       bool *out_terminate_path)
- {
-   /* Bail if not enough args.  */
-   if (cd.num_args () < min_args)
-     return false;
- 
-   /* Initial argument ought to be of type "int".  */
-   if (cd.get_arg_type (0) != integer_type_node)
-     return false;
- 
-   /* The process exits if status != 0, so it only continues
-      for the case where status == 0.
-      Add that constraint, or terminate this analysis path.  */
-   tree status = cd.get_arg_tree (0);
-   if (!add_constraint (status, EQ_EXPR, integer_zero_node, cd.get_ctxt ()))
-     *out_terminate_path = true;
- 
-   return true;
- }
- 
- /* Handle the on_call_pre part of "fgets" and "fgets_unlocked".  */
- 
- void
- region_model::impl_call_fgets (const call_details &cd)
- {
-   /* Ideally we would bifurcate state here between the
-      error vs no error cases.  */
-   const svalue *ptr_sval = cd.get_arg_svalue (0);
-   if (const region *reg = ptr_sval->maybe_get_region ())
-     {
-       const region *base_reg = reg->get_base_region ();
-       const svalue *new_sval = cd.get_or_create_conjured_svalue (base_reg);
-       set_value (base_reg, new_sval, cd.get_ctxt ());
-     }
- }
- 
- /* Handle the on_call_pre part of "fread".  */
- 
- void
- region_model::impl_call_fread (const call_details &cd)
- {
-   const svalue *ptr_sval = cd.get_arg_svalue (0);
-   if (const region *reg = ptr_sval->maybe_get_region ())
-     {
-       const region *base_reg = reg->get_base_region ();
-       const svalue *new_sval = cd.get_or_create_conjured_svalue (base_reg);
-       set_value (base_reg, new_sval, cd.get_ctxt ());
-     }
- }
- 
- /* Handle the on_call_post part of "free", after sm-handling.
- 
-    If the ptr points to an underlying heap region, delete the region,
-    poisoning pointers to it and regions within it.
- 
-    We delay this until after sm-state has been updated so that the
-    sm-handling can transition all of the various casts of the pointer
-    to a "freed" state *before* we delete the related region here.
- 
-    This has to be done here so that the sm-handling can use the fact
-    that they point to the same region to establish that they are equal
-    (in region_model::eval_condition_without_cm), and thus transition
-    all pointers to the region to the "freed" state together, regardless
-    of casts.  */
- 
- void
- region_model::impl_call_free (const call_details &cd)
- {
-   const svalue *ptr_sval = cd.get_arg_svalue (0);
-   if (const region *freed_reg = ptr_sval->maybe_get_region ())
-     {
-       /* If the ptr points to an underlying heap region, delete it,
- 	 poisoning pointers.  */
-       unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
-       m_dynamic_extents.remove (freed_reg);
-     }
- }
- 
- /* Handle the on_call_pre part of "malloc".  */
- 
- void
- region_model::impl_call_malloc (const call_details &cd)
- {
-   const svalue *size_sval = cd.get_arg_svalue (0);
-   const region *new_reg
-     = create_region_for_heap_alloc (size_sval, cd.get_ctxt ());
-   if (cd.get_lhs_type ())
-     {
-       const svalue *ptr_sval
- 	= m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
-       cd.maybe_set_lhs (ptr_sval);
-     }
- }
- 
- /* Handle the on_call_pre part of "memcpy" and "__builtin_memcpy".  */
- // TODO: complain about overlapping src and dest.
- 
- void
- region_model::impl_call_memcpy (const call_details &cd)
- {
-   const svalue *dest_ptr_sval = cd.get_arg_svalue (0);
-   const svalue *src_ptr_sval = cd.get_arg_svalue (1);
-   const svalue *num_bytes_sval = cd.get_arg_svalue (2);
- 
-   const region *dest_reg = deref_rvalue (dest_ptr_sval, cd.get_arg_tree (0),
- 					 cd.get_ctxt ());
-   const region *src_reg = deref_rvalue (src_ptr_sval, cd.get_arg_tree (1),
- 					cd.get_ctxt ());
- 
-   cd.maybe_set_lhs (dest_ptr_sval);
- 
-   const region *sized_src_reg
-     = m_mgr->get_sized_region (src_reg, NULL_TREE, num_bytes_sval);
-   const region *sized_dest_reg
-     = m_mgr->get_sized_region (dest_reg, NULL_TREE, num_bytes_sval);
-   const svalue *src_contents_sval
-     = get_store_value (sized_src_reg, cd.get_ctxt ());
-   set_value (sized_dest_reg, src_contents_sval, cd.get_ctxt ());
- }
- 
- /* Handle the on_call_pre part of "memset" and "__builtin_memset".  */
- 
- void
- region_model::impl_call_memset (const call_details &cd)
- {
-   const svalue *dest_sval = cd.get_arg_svalue (0);
-   const svalue *fill_value_sval = cd.get_arg_svalue (1);
-   const svalue *num_bytes_sval = cd.get_arg_svalue (2);
- 
-   const region *dest_reg = deref_rvalue (dest_sval, cd.get_arg_tree (0),
- 					  cd.get_ctxt ());
- 
-   const svalue *fill_value_u8
-     = m_mgr->get_or_create_cast (unsigned_char_type_node, fill_value_sval);
- 
-   const region *sized_dest_reg = m_mgr->get_sized_region (dest_reg,
- 							  NULL_TREE,
- 							  num_bytes_sval);
-   check_region_for_write (sized_dest_reg, cd.get_ctxt ());
-   fill_region (sized_dest_reg, fill_value_u8);
- }
- 
- /* Handle the on_call_pre part of "operator new".  */
- 
- void
- region_model::impl_call_operator_new (const call_details &cd)
- {
-   const svalue *size_sval = cd.get_arg_svalue (0);
-   const region *new_reg
-     = create_region_for_heap_alloc (size_sval, cd.get_ctxt ());
-   if (cd.get_lhs_type ())
-     {
-       const svalue *ptr_sval
- 	= m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
-       cd.maybe_set_lhs (ptr_sval);
-     }
- }
- 
- /* Handle the on_call_pre part of "operator delete", which comes in
-    both sized and unsized variants (2 arguments and 1 argument
-    respectively).  */
- 
- void
- region_model::impl_call_operator_delete (const call_details &cd)
- {
-   const svalue *ptr_sval = cd.get_arg_svalue (0);
-   if (const region *freed_reg = ptr_sval->maybe_get_region ())
-     {
-       /* If the ptr points to an underlying heap region, delete it,
- 	 poisoning pointers.  */
-       unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
-     }
- }
- 
- /* Handle the on_call_post part of "realloc":
- 
-      void *realloc(void *ptr, size_t size);
- 
-    realloc(3) is awkward, since it has various different outcomes
-    that are best modelled as separate exploded nodes/edges.
- 
-    We first check for sm-state, in
-    malloc_state_machine::on_realloc_call, so that we
-    can complain about issues such as realloc of a non-heap
-    pointer, and terminate the path for such cases (and issue
-    the complaints at the call's exploded node).
- 
-    Assuming that these checks pass, we split the path here into
-    three special cases (and terminate the "standard" path):
-    (A) failure, returning NULL
-    (B) success, growing the buffer in-place without moving it
-    (C) success, allocating a new buffer, copying the content
-    of the old buffer to it, and freeing the old buffer.
- 
-    Each of these has a custom_edge_info subclass, which updates
-    the region_model and sm-state of the destination state.  */
- 
- void
- region_model::impl_call_realloc (const call_details &cd)
- {
-   /* Three custom subclasses of custom_edge_info, for handling the various
-      outcomes of "realloc".  */
- 
-   /* Concrete custom_edge_info: a realloc call that fails, returning NULL.  */
-   class failure : public failed_call_info
-   {
-   public:
-     failure (const call_details &cd)
-     : failed_call_info (cd)
-     {
-     }
- 
-     bool update_model (region_model *model,
- 		       const exploded_edge *,
- 		       region_model_context *ctxt) const FINAL OVERRIDE
-     {
-       /* Return NULL; everything else is unchanged.  */
-       const call_details cd (get_call_details (model, ctxt));
-       if (cd.get_lhs_type ())
- 	{
- 	  const svalue *zero
- 	    = model->m_mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
- 	  model->set_value (cd.get_lhs_region (),
- 			    zero,
- 			    cd.get_ctxt ());
- 	}
-       return true;
-     }
-   };
- 
-   /* Concrete custom_edge_info: a realloc call that succeeds, growing
-      the existing buffer without moving it.  */
-   class success_no_move : public call_info
-   {
-   public:
-     success_no_move (const call_details &cd)
-     : call_info (cd)
-     {
-     }
- 
-     label_text get_desc (bool can_colorize) const FINAL OVERRIDE
-     {
-       return make_label_text (can_colorize,
- 			      "when %qE succeeds, without moving buffer",
- 			      get_fndecl ());
-     }
- 
-     bool update_model (region_model *model,
- 		       const exploded_edge *,
- 		       region_model_context *ctxt) const FINAL OVERRIDE
-     {
-       /* Update size of buffer and return the ptr unchanged.  */
-       const call_details cd (get_call_details (model, ctxt));
-       const svalue *ptr_sval = cd.get_arg_svalue (0);
-       const svalue *size_sval = cd.get_arg_svalue (1);
- 
-       /* We can only grow in place with a non-NULL pointer.  */
-       {
- 	const svalue *null_ptr
- 	  = model->m_mgr->get_or_create_int_cst (ptr_sval->get_type (), 0);
- 	if (!model->add_constraint (ptr_sval, NE_EXPR, null_ptr,
- 				    cd.get_ctxt ()))
- 	  return false;
-       }
- 
-       if (const region *buffer_reg = model->deref_rvalue (ptr_sval, NULL_TREE,
- 							  ctxt))
- 	if (compat_types_p (size_sval->get_type (), size_type_node))
- 	  model->set_dynamic_extents (buffer_reg, size_sval, ctxt);
-       if (cd.get_lhs_region ())
- 	{
- 	  model->set_value (cd.get_lhs_region (), ptr_sval, cd.get_ctxt ());
- 	  const svalue *zero
- 	    = model->m_mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
- 	  return model->add_constraint (ptr_sval, NE_EXPR, zero, cd.get_ctxt ());
- 	}
-       else
- 	return true;
-     }
-   };
- 
-   /* Concrete custom_edge_info: a realloc call that succeeds, freeing
-      the existing buffer and moving the content to a freshly allocated
-      buffer.  */
-   class success_with_move : public call_info
-   {
-   public:
-     success_with_move (const call_details &cd)
-     : call_info (cd)
-     {
-     }
- 
-     label_text get_desc (bool can_colorize) const FINAL OVERRIDE
-     {
-       return make_label_text (can_colorize,
- 			      "when %qE succeeds, moving buffer",
- 			      get_fndecl ());
-     }
-     bool update_model (region_model *model,
- 		       const exploded_edge *,
- 		       region_model_context *ctxt) const FINAL OVERRIDE
-     {
-       const call_details cd (get_call_details (model, ctxt));
-       const svalue *old_ptr_sval = cd.get_arg_svalue (0);
-       const svalue *new_size_sval = cd.get_arg_svalue (1);
- 
-       /* Create the new region.  */
-       const region *new_reg
- 	= model->create_region_for_heap_alloc (new_size_sval, ctxt);
-       const svalue *new_ptr_sval
- 	= model->m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
-       if (!model->add_constraint (new_ptr_sval, NE_EXPR, old_ptr_sval,
- 				  cd.get_ctxt ()))
- 	return false;
- 
-       if (cd.get_lhs_type ())
- 	cd.maybe_set_lhs (new_ptr_sval);
- 
-       if (const region *freed_reg = model->deref_rvalue (old_ptr_sval,
- 							 NULL_TREE, ctxt))
- 	{
- 	  /* Copy the data.  */
- 	  const svalue *old_size_sval = model->get_dynamic_extents (freed_reg);
- 	  if (old_size_sval)
- 	    {
- 	      const region *sized_old_reg
- 		= model->m_mgr->get_sized_region (freed_reg, NULL,
- 						  old_size_sval);
- 	      const svalue *buffer_content_sval
- 		= model->get_store_value (sized_old_reg, cd.get_ctxt ());
- 	      const region *sized_new_reg
- 		= model->m_mgr->get_sized_region (new_reg, NULL,
- 						  old_size_sval);
- 	      model->set_value (sized_new_reg, buffer_content_sval,
- 				cd.get_ctxt ());
- 	    }
- 	  else
- 	    {
- 	      /* We don't know how big the old region was;
- 		 mark the new region as having been touched to avoid uninit
- 		 issues.  */
- 	      model->mark_region_as_unknown (new_reg, cd.get_uncertainty ());
- 	    }
- 
- 	  /* Free the old region, so that pointers to the old buffer become
- 	     invalid.  */
- 
- 	  /* If the ptr points to an underlying heap region, delete it,
- 	     poisoning pointers.  */
- 	  model->unbind_region_and_descendents (freed_reg, POISON_KIND_FREED);
- 	  model->m_dynamic_extents.remove (freed_reg);
- 	}
- 
-       /* Update the sm-state: mark the old_ptr_sval as "freed",
- 	 and the new_ptr_sval as "nonnull".  */
-       model->on_realloc_with_move (cd, old_ptr_sval, new_ptr_sval);
- 
-       if (cd.get_lhs_type ())
- 	{
- 	  const svalue *zero
- 	    = model->m_mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
- 	  return model->add_constraint (new_ptr_sval, NE_EXPR, zero,
- 					cd.get_ctxt ());
- 	}
-       else
- 	return true;
-     }
-   };
- 
-   /* Body of region_model::impl_call_realloc.  */
- 
-   if (cd.get_ctxt ())
-     {
-       cd.get_ctxt ()->bifurcate (new failure (cd));
-       cd.get_ctxt ()->bifurcate (new success_no_move (cd));
-       cd.get_ctxt ()->bifurcate (new success_with_move (cd));
-       cd.get_ctxt ()->terminate_path ();
-     }
- }
- 
- /* Handle the on_call_pre part of "strchr" and "__builtin_strchr".  */
- 
- void
- region_model::impl_call_strchr (const call_details &cd)
- {
-   class strchr_call_info : public call_info
-   {
-   public:
-     strchr_call_info (const call_details &cd, bool found)
-     : call_info (cd), m_found (found)
-     {
-     }
- 
-     label_text get_desc (bool can_colorize) const FINAL OVERRIDE
-     {
-       if (m_found)
- 	return make_label_text (can_colorize,
- 				"when %qE returns non-NULL",
- 				get_fndecl ());
-       else
- 	return make_label_text (can_colorize,
- 				"when %qE returns NULL",
- 				get_fndecl ());
-     }
- 
-     bool update_model (region_model *model,
- 		       const exploded_edge *,
- 		       region_model_context *ctxt) const FINAL OVERRIDE
-     {
-       const call_details cd (get_call_details (model, ctxt));
-       if (tree lhs_type = cd.get_lhs_type ())
- 	{
- 	  region_model_manager *mgr = model->get_manager ();
- 	  const svalue *result;
- 	  if (m_found)
- 	    {
- 	      const svalue *str_sval = cd.get_arg_svalue (0);
- 	      const region *str_reg
- 		= model->deref_rvalue (str_sval, cd.get_arg_tree (0),
- 				       cd.get_ctxt ());
- 	      /* We want str_sval + OFFSET for some unknown OFFSET.
- 		 Use a conjured_svalue to represent the offset,
- 		 using the str_reg as the id of the conjured_svalue.  */
- 	      const svalue *offset
- 		= mgr->get_or_create_conjured_svalue (size_type_node,
- 						      cd.get_call_stmt (),
- 						      str_reg,
- 						      conjured_purge (model,
- 								      ctxt));
- 	      result = mgr->get_or_create_binop (lhs_type, POINTER_PLUS_EXPR,
- 						 str_sval, offset);
- 	    }
- 	  else
- 	    result = mgr->get_or_create_int_cst (lhs_type, 0);
- 	  cd.maybe_set_lhs (result);
- 	}
-       return true;
-     }
-   private:
-     bool m_found;
-   };
- 
-   /* Bifurcate state, creating a "not found" out-edge.  */
-   if (cd.get_ctxt ())
-     cd.get_ctxt ()->bifurcate (new strchr_call_info (cd, false));
- 
-   /* The "unbifurcated" state is the "found" case.  */
-   strchr_call_info found (cd, true);
-   found.update_model (this, NULL, cd.get_ctxt ());
- }
- 
- /* Handle the on_call_pre part of "strcpy" and "__builtin_strcpy_chk".  */
- 
- void
- region_model::impl_call_strcpy (const call_details &cd)
- {
-   const svalue *dest_sval = cd.get_arg_svalue (0);
-   const region *dest_reg = deref_rvalue (dest_sval, cd.get_arg_tree (0),
- 					 cd.get_ctxt ());
- 
-   cd.maybe_set_lhs (dest_sval);
- 
-   check_region_for_write (dest_reg, cd.get_ctxt ());
- 
-   /* For now, just mark region's contents as unknown.  */
-   mark_region_as_unknown (dest_reg, cd.get_uncertainty ());
- }
- 
- /* Handle the on_call_pre part of "strlen".  */
- 
- void
- region_model::impl_call_strlen (const call_details &cd)
- {
-   region_model_context *ctxt = cd.get_ctxt ();
-   const svalue *arg_sval = cd.get_arg_svalue (0);
-   const region *buf_reg = deref_rvalue (arg_sval, cd.get_arg_tree (0), ctxt);
-   if (const string_region *str_reg
-       = buf_reg->dyn_cast_string_region ())
-     {
-       tree str_cst = str_reg->get_string_cst ();
-       /* TREE_STRING_LENGTH is sizeof, not strlen.  */
-       int sizeof_cst = TREE_STRING_LENGTH (str_cst);
-       int strlen_cst = sizeof_cst - 1;
-       if (cd.get_lhs_type ())
- 	{
- 	  tree t_cst = build_int_cst (cd.get_lhs_type (), strlen_cst);
- 	  const svalue *result_sval
- 	    = m_mgr->get_or_create_constant_svalue (t_cst);
- 	  cd.maybe_set_lhs (result_sval);
- 	  return;
- 	}
-     }
-   /* Otherwise a conjured value.  */
- }
- 
- /* Handle calls to functions referenced by
-    __attribute__((malloc(FOO))).  */
- 
- void
- region_model::impl_deallocation_call (const call_details &cd)
- {
-   impl_call_free (cd);
- }
- 
- } // namespace ana
- 
- #endif /* #if ENABLE_ANALYZER */
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model-manager.cc gcc-13.1.0/gcc/analyzer/region-model-manager.cc
*** gcc-12.2.0/gcc/analyzer/region-model-manager.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model-manager.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Consolidation of svalues and regions.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Consolidation of svalues and regions.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 38,55 ****
  #include "target.h"
  #include "fold-const.h"
  #include "tree-pretty-print.h"
- #include "tristate.h"
  #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
  #include "options.h"
- #include "cgraph.h"
- #include "cfg.h"
- #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
  #include "analyzer/call-string.h"
--- 39,49 ----
*************** namespace ana {
*** 68,73 ****
--- 62,68 ----
  
  region_model_manager::region_model_manager (logger *logger)
  : m_logger (logger),
+   m_empty_call_string (),
    m_next_region_id (0),
    m_root_region (alloc_region_id ()),
    m_stack_region (alloc_region_id (), &m_root_region),
*************** region_model_manager::region_model_manag
*** 79,86 ****
    m_fndecls_map (), m_labels_map (),
    m_globals_region (alloc_region_id (), &m_root_region),
    m_globals_map (),
    m_store_mgr (this),
!   m_range_mgr (new bounded_ranges_manager ())
  {
  }
  
--- 74,84 ----
    m_fndecls_map (), m_labels_map (),
    m_globals_region (alloc_region_id (), &m_root_region),
    m_globals_map (),
+   m_thread_local_region (alloc_region_id (), &m_root_region),
+   m_errno_region (alloc_region_id (), &m_thread_local_region),
    m_store_mgr (this),
!   m_range_mgr (new bounded_ranges_manager ()),
!   m_known_fn_mgr (logger)
  {
  }
  
*************** region_model_manager::get_or_create_int_
*** 239,244 ****
--- 237,253 ----
    return get_or_create_constant_svalue (tree_cst);
  }
  
+ /* Return the svalue * for the constant_svalue for the NULL pointer
+    of POINTER_TYPE, creating it if necessary.  */
+ 
+ const svalue *
+ region_model_manager::get_or_create_null_ptr (tree pointer_type)
+ {
+   gcc_assert (pointer_type);
+   gcc_assert (POINTER_TYPE_P (pointer_type));
+   return get_or_create_int_cst (pointer_type, 0);
+ }
+ 
  /* Return the svalue * for a unknown_svalue for TYPE (which can be NULL),
     creating it if necessary.
     The unknown_svalue instances are reused, based on pointer equality
*************** region_model_manager::maybe_fold_unaryop
*** 430,435 ****
--- 439,455 ----
  	    }
        }
        break;
+     case NEGATE_EXPR:
+       {
+ 	/* -(-(VAL)) is VAL, for integer types.  */
+ 	if (const unaryop_svalue *unaryop = arg->dyn_cast_unaryop_svalue ())
+ 	  if (unaryop->get_op () == NEGATE_EXPR
+ 	      && type == unaryop->get_type ()
+ 	      && type
+ 	      && INTEGRAL_TYPE_P (type))
+ 	    return unaryop->get_arg ();
+       }
+       break;
      }
  
    /* Constants.  */
*************** region_model_manager::maybe_fold_binop (
*** 604,616 ****
      case POINTER_PLUS_EXPR:
      case PLUS_EXPR:
        /* (VAL + 0) -> VAL.  */
!       if (cst1 && zerop (cst1) && type == arg0->get_type ())
! 	return arg0;
        break;
      case MINUS_EXPR:
        /* (VAL - 0) -> VAL.  */
!       if (cst1 && zerop (cst1) && type == arg0->get_type ())
! 	return arg0;
        break;
      case MULT_EXPR:
        /* (VAL * 0).  */
--- 624,639 ----
      case POINTER_PLUS_EXPR:
      case PLUS_EXPR:
        /* (VAL + 0) -> VAL.  */
!       if (cst1 && zerop (cst1))
! 	return get_or_create_cast (type, arg0);
        break;
      case MINUS_EXPR:
        /* (VAL - 0) -> VAL.  */
!       if (cst1 && zerop (cst1))
! 	return get_or_create_cast (type, arg0);
!       /* (0 - VAL) -> -VAL.  */
!       if (cst0 && zerop (cst0))
! 	return get_or_create_unaryop (type, NEGATE_EXPR, arg1);
        break;
      case MULT_EXPR:
        /* (VAL * 0).  */
*************** region_model_manager::get_or_create_unme
*** 1141,1150 ****
     and ITER_SVAL at POINT, creating it if necessary.  */
  
  const svalue *
! region_model_manager::get_or_create_widening_svalue (tree type,
! 						     const program_point &point,
! 						     const svalue *base_sval,
! 						     const svalue *iter_sval)
  {
    gcc_assert (base_sval->get_kind () != SK_WIDENING);
    gcc_assert (iter_sval->get_kind () != SK_WIDENING);
--- 1164,1174 ----
     and ITER_SVAL at POINT, creating it if necessary.  */
  
  const svalue *
! region_model_manager::
! get_or_create_widening_svalue (tree type,
! 			       const function_point &point,
! 			       const svalue *base_sval,
! 			       const svalue *iter_sval)
  {
    gcc_assert (base_sval->get_kind () != SK_WIDENING);
    gcc_assert (iter_sval->get_kind () != SK_WIDENING);
*************** get_or_create_asm_output_svalue (tree ty
*** 1261,1266 ****
--- 1285,1317 ----
    return asm_output_sval;
  }
  
+ /* Return the svalue * of type TYPE for OUTPUT_IDX of a deterministic
+    asm stmt with string ASM_STRING with NUM_OUTPUTS outputs, given
+    INPUTS as inputs.  */
+ 
+ const svalue *
+ region_model_manager::
+ get_or_create_asm_output_svalue (tree type,
+ 				 const char *asm_string,
+ 				 unsigned output_idx,
+ 				 unsigned num_outputs,
+ 				 const vec<const svalue *> &inputs)
+ {
+   gcc_assert (inputs.length () <= asm_output_svalue::MAX_INPUTS);
+ 
+   if (const svalue *folded
+ 	= maybe_fold_asm_output_svalue (type, inputs))
+     return folded;
+ 
+   asm_output_svalue::key_t key (type, asm_string, output_idx, inputs);
+   if (asm_output_svalue **slot = m_asm_output_values_map.get (key))
+     return *slot;
+   asm_output_svalue *asm_output_sval
+     = new asm_output_svalue (type, asm_string, output_idx, num_outputs, inputs);
+   RETURN_UNKNOWN_IF_TOO_COMPLEX (asm_output_sval);
+   m_asm_output_values_map.put (key, asm_output_sval);
+   return asm_output_sval;
+ }
  
  /* Return the svalue * of type TYPE for the result of a call to FNDECL
     with __attribute__((const)), given INPUTS as inputs.  */
*************** region_model_manager::get_bit_range (con
*** 1601,1606 ****
--- 1652,1676 ----
    return bit_range_reg;
  }
  
+ /* Return the region that describes accessing the IDX-th variadic argument
+    within PARENT_FRAME, creating it if necessary.  */
+ 
+ const var_arg_region *
+ region_model_manager::get_var_arg_region (const frame_region *parent_frame,
+ 					  unsigned idx)
+ {
+   gcc_assert (parent_frame);
+ 
+   var_arg_region::key_t key (parent_frame, idx);
+   if (var_arg_region *reg = m_var_arg_regions.get (key))
+     return reg;
+ 
+   var_arg_region *var_arg_reg
+     = new var_arg_region (alloc_region_id (), parent_frame, idx);
+   m_var_arg_regions.put (key, var_arg_reg);
+   return var_arg_reg;
+ }
+ 
  /* If we see a tree code we don't know how to handle, rather than
     ICE or generate bogus results, create a dummy region, and notify
     CTXT so that it can mark the new state as being not properly
*************** get_region_for_unexpected_tree_code (reg
*** 1622,1632 ****
    return new_reg;
  }
  
! /* Return a new region describing a heap-allocated block of memory.  */
  
  const region *
! region_model_manager::create_region_for_heap_alloc ()
  {
    region *reg
      = new heap_allocated_region (alloc_region_id (), &m_heap_region);
    m_managed_dynamic_regions.safe_push (reg);
--- 1692,1713 ----
    return new_reg;
  }
  
! /* Return a region describing a heap-allocated block of memory.
!    Reuse an existing heap_allocated_region is its id is not within
!    BASE_REGS_IN_USE.  */
  
  const region *
! region_model_manager::
! get_or_create_region_for_heap_alloc (const bitmap &base_regs_in_use)
  {
+   /* Try to reuse an existing region, if it's unreferenced in the
+      client state.  */
+   for (auto existing_reg : m_managed_dynamic_regions)
+     if (!bitmap_bit_p (base_regs_in_use, existing_reg->get_id ()))
+       if (existing_reg->get_kind () == RK_HEAP_ALLOCATED)
+ 	return existing_reg;
+ 
+   /* All existing ones (if any) are in use; create a new one.  */
    region *reg
      = new heap_allocated_region (alloc_region_id (), &m_heap_region);
    m_managed_dynamic_regions.safe_push (reg);
*************** void
*** 1729,1734 ****
--- 1810,1817 ----
  region_model_manager::log_stats (logger *logger, bool show_objs) const
  {
    LOG_SCOPE (logger);
+   logger->log ("call string consolidation");
+   m_empty_call_string.recursive_log (logger);
    logger->log ("svalue consolidation");
    log_uniq_map (logger, show_objs, "constant_svalue", m_constants_map);
    log_uniq_map (logger, show_objs, "unknown_svalue", m_unknowns_map);
*************** region_model_manager::log_stats (logger
*** 1773,1778 ****
--- 1856,1862 ----
    log_uniq_map (logger, show_objs, "symbolic_region", m_symbolic_regions);
    log_uniq_map (logger, show_objs, "string_region", m_string_map);
    log_uniq_map (logger, show_objs, "bit_range_region", m_bit_range_regions);
+   log_uniq_map (logger, show_objs, "var_arg_region", m_var_arg_regions);
    logger->log ("  # managed dynamic regions: %i",
  	       m_managed_dynamic_regions.length ());
    m_store_mgr.log_stats (logger, show_objs);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model-manager.h gcc-13.1.0/gcc/analyzer/region-model-manager.h
*** gcc-12.2.0/gcc/analyzer/region-model-manager.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/region-model-manager.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,325 ----
+ /* Consolidation of svalues and regions.
+    Copyright (C) 2020-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_ANALYZER_REGION_MODEL_MANAGER_H
+ #define GCC_ANALYZER_REGION_MODEL_MANAGER_H
+ 
+ namespace ana {
+ 
+ /* A class responsible for owning and consolidating region and svalue
+    instances.
+    region and svalue instances are immutable as far as clients are
+    concerned, so they are provided as "const" ptrs.  */
+ 
+ class region_model_manager
+ {
+ public:
+   region_model_manager (logger *logger = NULL);
+   ~region_model_manager ();
+ 
+   /* call_string consolidation.  */
+   const call_string &get_empty_call_string () const
+   {
+     return m_empty_call_string;
+   }
+ 
+   /* svalue consolidation.  */
+   const svalue *get_or_create_constant_svalue (tree cst_expr);
+   const svalue *get_or_create_int_cst (tree type, poly_int64);
+   const svalue *get_or_create_null_ptr (tree pointer_type);
+   const svalue *get_or_create_unknown_svalue (tree type);
+   const svalue *get_or_create_setjmp_svalue (const setjmp_record &r,
+ 					     tree type);
+   const svalue *get_or_create_poisoned_svalue (enum poison_kind kind,
+ 					       tree type);
+   const svalue *get_or_create_initial_value (const region *reg);
+   const svalue *get_ptr_svalue (tree ptr_type, const region *pointee);
+   const svalue *get_or_create_unaryop (tree type, enum tree_code op,
+ 				       const svalue *arg);
+   const svalue *get_or_create_cast (tree type, const svalue *arg);
+   const svalue *get_or_create_binop (tree type,
+ 				     enum tree_code op,
+ 				     const svalue *arg0, const svalue *arg1);
+   const svalue *get_or_create_sub_svalue (tree type,
+ 					  const svalue *parent_svalue,
+ 					  const region *subregion);
+   const svalue *get_or_create_repeated_svalue (tree type,
+ 					       const svalue *outer_size,
+ 					       const svalue *inner_svalue);
+   const svalue *get_or_create_bits_within (tree type,
+ 					   const bit_range &bits,
+ 					   const svalue *inner_svalue);
+   const svalue *get_or_create_unmergeable (const svalue *arg);
+   const svalue *get_or_create_widening_svalue (tree type,
+ 					       const function_point &point,
+ 					       const svalue *base_svalue,
+ 					       const svalue *iter_svalue);
+   const svalue *get_or_create_compound_svalue (tree type,
+ 					       const binding_map &map);
+   const svalue *get_or_create_conjured_svalue (tree type, const gimple *stmt,
+ 					       const region *id_reg,
+ 					       const conjured_purge &p);
+   const svalue *
+   get_or_create_asm_output_svalue (tree type,
+ 				   const gasm *asm_stmt,
+ 				   unsigned output_idx,
+ 				   const vec<const svalue *> &inputs);
+   const svalue *
+   get_or_create_asm_output_svalue (tree type,
+ 				   const char *asm_string,
+ 				   unsigned output_idx,
+ 				   unsigned num_outputs,
+ 				   const vec<const svalue *> &inputs);
+   const svalue *
+   get_or_create_const_fn_result_svalue (tree type,
+ 					tree fndecl,
+ 					const vec<const svalue *> &inputs);
+ 
+   const svalue *maybe_get_char_from_string_cst (tree string_cst,
+ 						tree byte_offset_cst);
+ 
+   /* Dynamically-allocated svalue instances.
+      The number of these within the analysis can grow arbitrarily.
+      They are still owned by the manager.  */
+   const svalue *create_unique_svalue (tree type);
+ 
+   /* region consolidation.  */
+   unsigned get_num_regions () const { return m_next_region_id; }
+   const stack_region * get_stack_region () const { return &m_stack_region; }
+   const heap_region *get_heap_region () const { return &m_heap_region; }
+   const code_region *get_code_region () const { return &m_code_region; }
+   const globals_region *get_globals_region () const
+   {
+     return &m_globals_region;
+   }
+   const errno_region *get_errno_region () const { return &m_errno_region; }
+   const function_region *get_region_for_fndecl (tree fndecl);
+   const label_region *get_region_for_label (tree label);
+   const decl_region *get_region_for_global (tree expr);
+   const region *get_field_region (const region *parent, tree field);
+   const region *get_element_region (const region *parent,
+ 				    tree element_type,
+ 				    const svalue *index);
+   const region *get_offset_region (const region *parent,
+ 				   tree type,
+ 				   const svalue *byte_offset);
+   const region *get_sized_region (const region *parent,
+ 				  tree type,
+ 				  const svalue *byte_size_sval);
+   const region *get_cast_region (const region *original_region,
+ 				 tree type);
+   const frame_region *get_frame_region (const frame_region *calling_frame,
+ 					function *fun);
+   const region *get_symbolic_region (const svalue *sval);
+   const string_region *get_region_for_string (tree string_cst);
+   const region *get_bit_range (const region *parent, tree type,
+ 			       const bit_range &bits);
+   const var_arg_region *get_var_arg_region (const frame_region *parent,
+ 					    unsigned idx);
+ 
+   const region *get_unknown_symbolic_region (tree region_type);
+ 
+   const region *
+   get_region_for_unexpected_tree_code (region_model_context *ctxt,
+ 				       tree t,
+ 				       const dump_location_t &loc);
+ 
+   unsigned alloc_region_id () { return m_next_region_id++; }
+ 
+   store_manager *get_store_manager () { return &m_store_mgr; }
+   bounded_ranges_manager *get_range_manager () const { return m_range_mgr; }
+ 
+   known_function_manager *get_known_function_manager ()
+   {
+     return &m_known_fn_mgr;
+   }
+ 
+   /* Dynamically-allocated region instances.
+      The number of these within the analysis can grow arbitrarily.
+      They are still owned by the manager.  */
+   const region *
+   get_or_create_region_for_heap_alloc (const bitmap &base_regs_in_use);
+   const region *create_region_for_alloca (const frame_region *frame);
+ 
+   void log_stats (logger *logger, bool show_objs) const;
+ 
+   void begin_checking_feasibility (void) { m_checking_feasibility = true; }
+   void end_checking_feasibility (void) { m_checking_feasibility = false; }
+ 
+   logger *get_logger () const { return m_logger; }
+ 
+   void dump_untracked_regions () const;
+ 
+ private:
+   bool too_complex_p (const complexity &c) const;
+   bool reject_if_too_complex (svalue *sval);
+ 
+   const svalue *maybe_fold_unaryop (tree type, enum tree_code op,
+ 				    const svalue *arg);
+   const svalue *maybe_fold_binop (tree type, enum tree_code op,
+ 				  const svalue *arg0, const svalue *arg1);
+   const svalue *maybe_fold_sub_svalue (tree type,
+ 				       const svalue *parent_svalue,
+ 				       const region *subregion);
+   const svalue *maybe_fold_repeated_svalue (tree type,
+ 					    const svalue *outer_size,
+ 					    const svalue *inner_svalue);
+   const svalue *maybe_fold_bits_within_svalue (tree type,
+ 					       const bit_range &bits,
+ 					       const svalue *inner_svalue);
+   const svalue *maybe_undo_optimize_bit_field_compare (tree type,
+ 						       const compound_svalue *compound_sval,
+ 						       tree cst, const svalue *arg1);
+   const svalue *maybe_fold_asm_output_svalue (tree type,
+ 					      const vec<const svalue *> &inputs);
+ 
+   logger *m_logger;
+ 
+   const call_string m_empty_call_string;
+ 
+   unsigned m_next_region_id;
+   root_region m_root_region;
+   stack_region m_stack_region;
+   heap_region m_heap_region;
+ 
+   /* svalue consolidation.  */
+   typedef hash_map<tree, constant_svalue *> constants_map_t;
+   constants_map_t m_constants_map;
+ 
+   typedef hash_map<tree, unknown_svalue *> unknowns_map_t;
+   unknowns_map_t m_unknowns_map;
+   const unknown_svalue *m_unknown_NULL;
+ 
+   typedef hash_map<poisoned_svalue::key_t,
+ 		   poisoned_svalue *> poisoned_values_map_t;
+   poisoned_values_map_t m_poisoned_values_map;
+ 
+   typedef hash_map<setjmp_svalue::key_t,
+ 		   setjmp_svalue *> setjmp_values_map_t;
+   setjmp_values_map_t m_setjmp_values_map;
+ 
+   typedef hash_map<const region *, initial_svalue *> initial_values_map_t;
+   initial_values_map_t m_initial_values_map;
+ 
+   typedef hash_map<region_svalue::key_t, region_svalue *> pointer_values_map_t;
+   pointer_values_map_t m_pointer_values_map;
+ 
+   typedef hash_map<unaryop_svalue::key_t,
+ 		   unaryop_svalue *> unaryop_values_map_t;
+   unaryop_values_map_t m_unaryop_values_map;
+ 
+   typedef hash_map<binop_svalue::key_t, binop_svalue *> binop_values_map_t;
+   binop_values_map_t m_binop_values_map;
+ 
+   typedef hash_map<sub_svalue::key_t, sub_svalue *> sub_values_map_t;
+   sub_values_map_t m_sub_values_map;
+ 
+   typedef hash_map<repeated_svalue::key_t,
+ 		   repeated_svalue *> repeated_values_map_t;
+   repeated_values_map_t m_repeated_values_map;
+ 
+   typedef hash_map<bits_within_svalue::key_t,
+ 		   bits_within_svalue *> bits_within_values_map_t;
+   bits_within_values_map_t m_bits_within_values_map;
+ 
+   typedef hash_map<const svalue *,
+ 		   unmergeable_svalue *> unmergeable_values_map_t;
+   unmergeable_values_map_t m_unmergeable_values_map;
+ 
+   typedef hash_map<widening_svalue::key_t,
+ 		   widening_svalue */*,
+ 		   widening_svalue::key_t::hash_map_traits*/>
+     widening_values_map_t;
+   widening_values_map_t m_widening_values_map;
+ 
+   typedef hash_map<compound_svalue::key_t,
+ 		   compound_svalue *> compound_values_map_t;
+   compound_values_map_t m_compound_values_map;
+ 
+   typedef hash_map<conjured_svalue::key_t,
+ 		   conjured_svalue *> conjured_values_map_t;
+   conjured_values_map_t m_conjured_values_map;
+ 
+   typedef hash_map<asm_output_svalue::key_t,
+ 		   asm_output_svalue *> asm_output_values_map_t;
+   asm_output_values_map_t m_asm_output_values_map;
+ 
+   typedef hash_map<const_fn_result_svalue::key_t,
+ 		   const_fn_result_svalue *> const_fn_result_values_map_t;
+   const_fn_result_values_map_t m_const_fn_result_values_map;
+ 
+   bool m_checking_feasibility;
+ 
+   /* "Dynamically-allocated" svalue instances.
+      The number of these within the analysis can grow arbitrarily.
+      They are still owned by the manager.  */
+   auto_delete_vec<svalue> m_managed_dynamic_svalues;
+ 
+   /* Maximum complexity of svalues that weren't rejected.  */
+   complexity m_max_complexity;
+ 
+   /* region consolidation.  */
+ 
+   code_region m_code_region;
+   typedef hash_map<tree, function_region *> fndecls_map_t;
+   typedef fndecls_map_t::iterator fndecls_iterator_t;
+   fndecls_map_t m_fndecls_map;
+ 
+   typedef hash_map<tree, label_region *> labels_map_t;
+   typedef labels_map_t::iterator labels_iterator_t;
+   labels_map_t m_labels_map;
+ 
+   globals_region m_globals_region;
+   typedef hash_map<tree, decl_region *> globals_map_t;
+   typedef globals_map_t::iterator globals_iterator_t;
+   globals_map_t m_globals_map;
+ 
+   thread_local_region m_thread_local_region;
+   errno_region m_errno_region;
+ 
+   consolidation_map<field_region> m_field_regions;
+   consolidation_map<element_region> m_element_regions;
+   consolidation_map<offset_region> m_offset_regions;
+   consolidation_map<sized_region> m_sized_regions;
+   consolidation_map<cast_region> m_cast_regions;
+   consolidation_map<frame_region> m_frame_regions;
+   consolidation_map<symbolic_region> m_symbolic_regions;
+ 
+   typedef hash_map<tree, string_region *> string_map_t;
+   string_map_t m_string_map;
+ 
+   consolidation_map<bit_range_region> m_bit_range_regions;
+   consolidation_map<var_arg_region> m_var_arg_regions;
+ 
+   store_manager m_store_mgr;
+ 
+   bounded_ranges_manager *m_range_mgr;
+ 
+   known_function_manager m_known_fn_mgr;
+ 
+   /* "Dynamically-allocated" region instances.
+      The number of these within the analysis can grow arbitrarily.
+      They are still owned by the manager.  */
+   auto_delete_vec<region> m_managed_dynamic_regions;
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* GCC_ANALYZER_REGION_MODEL_MANAGER_H */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model-reachability.cc gcc-13.1.0/gcc/analyzer/region-model-reachability.cc
*** gcc-12.2.0/gcc/analyzer/region-model-reachability.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model-reachability.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Finding reachable regions and values.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Finding reachable regions and values.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 36,58 ****
  #include "target.h"
  #include "fold-const.h"
  #include "tree-pretty-print.h"
- #include "tristate.h"
  #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
  #include "options.h"
- #include "cgraph.h"
- #include "cfg.h"
- #include "digraph.h"
- #include "json.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/region-model-reachability.h"
  
  #if ENABLE_ANALYZER
  
--- 37,54 ----
  #include "target.h"
  #include "fold-const.h"
  #include "tree-pretty-print.h"
  #include "bitmap.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/region-model-reachability.h"
+ #include "diagnostic.h"
+ #include "tree-diagnostic.h"
  
  #if ENABLE_ANALYZER
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model-reachability.h gcc-13.1.0/gcc/analyzer/region-model-reachability.h
*** gcc-12.2.0/gcc/analyzer/region-model-reachability.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model-reachability.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Finding reachable regions and values.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Finding reachable regions and values.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model.cc gcc-13.1.0/gcc/analyzer/region-model.cc
*** gcc-12.2.0/gcc/analyzer/region-model.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,26 ****
--- 19,28 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
*************** along with GCC; see the file COPYING3.
*** 38,55 ****
  #include "tree-pretty-print.h"
  #include "diagnostic-color.h"
  #include "diagnostic-metadata.h"
- #include "tristate.h"
  #include "bitmap.h"
  #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cgraph.h"
  #include "cfg.h"
- #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
  #include "analyzer/call-string.h"
--- 40,53 ----
*************** along with GCC; see the file COPYING3.
*** 65,70 ****
--- 63,69 ----
  #include "analyzer/region-model-reachability.h"
  #include "analyzer/analyzer-selftests.h"
  #include "analyzer/program-state.h"
+ #include "analyzer/call-summary.h"
  #include "stor-layout.h"
  #include "attribs.h"
  #include "tree-object-size.h"
*************** along with GCC; see the file COPYING3.
*** 73,78 ****
--- 72,82 ----
  #include "tree-ssa-operands.h"
  #include "ssa-iterators.h"
  #include "calls.h"
+ #include "is-a.h"
+ #include "gcc-rich-location.h"
+ #include "analyzer/checker-event.h"
+ #include "analyzer/checker-path.h"
+ #include "analyzer/feasible-graph.h"
  
  #if ENABLE_ANALYZER
  
*************** region_to_value_map::dump (bool simple)
*** 208,215 ****
     to OUT.
  
     For now, write (region, value) mappings that are in common between THIS
!    and OTHER to OUT, effectively taking the intersection, rather than
!    rejecting differences.  */
  
  bool
  region_to_value_map::can_merge_with_p (const region_to_value_map &other,
--- 212,220 ----
     to OUT.
  
     For now, write (region, value) mappings that are in common between THIS
!    and OTHER to OUT, effectively taking the intersection.
! 
!    Reject merger of different values.  */
  
  bool
  region_to_value_map::can_merge_with_p (const region_to_value_map &other,
*************** region_to_value_map::can_merge_with_p (c
*** 221,228 ****
        const svalue *iter_sval = iter.second;
        const svalue * const * other_slot = other.get (iter_reg);
        if (other_slot)
! 	if (iter_sval == *other_slot)
! 	  out->put (iter_reg, iter_sval);
      }
    return true;
  }
--- 226,237 ----
        const svalue *iter_sval = iter.second;
        const svalue * const * other_slot = other.get (iter_reg);
        if (other_slot)
! 	{
! 	  if (iter_sval == *other_slot)
! 	    out->put (iter_reg, iter_sval);
! 	  else
! 	    return false;
! 	}
      }
    return true;
  }
*************** class poisoned_value_diagnostic
*** 460,473 ****
  {
  public:
    poisoned_value_diagnostic (tree expr, enum poison_kind pkind,
! 			     const region *src_region)
    : m_expr (expr), m_pkind (pkind),
!     m_src_region (src_region)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "poisoned_value_diagnostic"; }
  
!   bool use_of_uninit_p () const FINAL OVERRIDE
    {
      return m_pkind == POISON_KIND_UNINIT;
    }
--- 469,484 ----
  {
  public:
    poisoned_value_diagnostic (tree expr, enum poison_kind pkind,
! 			     const region *src_region,
! 			     tree check_expr)
    : m_expr (expr), m_pkind (pkind),
!     m_src_region (src_region),
!     m_check_expr (check_expr)
    {}
  
!   const char *get_kind () const final override { return "poisoned_value_diagnostic"; }
  
!   bool use_of_uninit_p () const final override
    {
      return m_pkind == POISON_KIND_UNINIT;
    }
*************** public:
*** 479,485 ****
  	    && m_src_region == other.m_src_region);
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      switch (m_pkind)
        {
--- 490,496 ----
  	    && m_src_region == other.m_src_region);
    }
  
!   int get_controlling_option () const final override
    {
      switch (m_pkind)
        {
*************** public:
*** 494,500 ****
        }
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      switch (m_pkind)
        {
--- 505,513 ----
        }
    }
  
!   bool terminate_path_p () const final override { return true; }
! 
!   bool emit (rich_location *rich_loc) final override
    {
      switch (m_pkind)
        {
*************** public:
*** 530,536 ****
        }
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      switch (m_pkind)
        {
--- 543,549 ----
        }
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      switch (m_pkind)
        {
*************** public:
*** 549,564 ****
        }
    }
  
!   void mark_interesting_stuff (interesting_t *interest) FINAL OVERRIDE
    {
      if (m_src_region)
        interest->add_region_creation (m_src_region);
    }
  
  private:
    tree m_expr;
    enum poison_kind m_pkind;
    const region *m_src_region;
  };
  
  /* A subclass of pending_diagnostic for complaining about shifts
--- 562,614 ----
        }
    }
  
!   void mark_interesting_stuff (interesting_t *interest) final override
    {
      if (m_src_region)
        interest->add_region_creation (m_src_region);
    }
  
+   /* Attempt to suppress false positives.
+      Reject paths where the value of the underlying region isn't poisoned.
+      This can happen due to state merging when exploring the exploded graph,
+      where the more precise analysis during feasibility analysis finds that
+      the region is in fact valid.
+      To do this we need to get the value from the fgraph.  Unfortunately
+      we can't simply query the state of m_src_region (from the enode),
+      since it might be a different region in the fnode state (e.g. with
+      heap-allocated regions, the numbering could be different).
+      Hence we access m_check_expr, if available.  */
+ 
+   bool check_valid_fpath_p (const feasible_node &fnode,
+ 			    const gimple *emission_stmt)
+     const final override
+   {
+     if (!m_check_expr)
+       return true;
+ 
+     /* We've reached the enode, but not necessarily the right function_point.
+        Try to get the state at the correct stmt.  */
+     region_model emission_model (fnode.get_model ().get_manager());
+     if (!fnode.get_state_at_stmt (emission_stmt, &emission_model))
+       /* Couldn't get state; accept this diagnostic.  */
+       return true;
+ 
+     const svalue *fsval = emission_model.get_rvalue (m_check_expr, NULL);
+     /* Check to see if the expr is also poisoned in FNODE (and in the
+        same way).  */
+     const poisoned_svalue * fspval = fsval->dyn_cast_poisoned_svalue ();
+     if (!fspval)
+       return false;
+     if (fspval->get_poison_kind () != m_pkind)
+       return false;
+     return true;
+   }
+ 
  private:
    tree m_expr;
    enum poison_kind m_pkind;
    const region *m_src_region;
+   tree m_check_expr;
  };
  
  /* A subclass of pending_diagnostic for complaining about shifts
*************** public:
*** 572,578 ****
    : m_assign (assign), m_count_cst (count_cst)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "shift_count_negative_diagnostic";
    }
--- 622,628 ----
    : m_assign (assign), m_count_cst (count_cst)
    {}
  
!   const char *get_kind () const final override
    {
      return "shift_count_negative_diagnostic";
    }
*************** public:
*** 583,600 ****
  	    && same_tree_p (m_count_cst, other.m_count_cst));
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_shift_count_negative;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "shift by negative count (%qE)", m_count_cst);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      return ev.formatted_print ("shift by negative amount here (%qE)", m_count_cst);
    }
--- 633,650 ----
  	    && same_tree_p (m_count_cst, other.m_count_cst));
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_shift_count_negative;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "shift by negative count (%qE)", m_count_cst);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      return ev.formatted_print ("shift by negative amount here (%qE)", m_count_cst);
    }
*************** public:
*** 618,624 ****
      m_count_cst (count_cst)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "shift_count_overflow_diagnostic";
    }
--- 668,674 ----
      m_count_cst (count_cst)
    {}
  
!   const char *get_kind () const final override
    {
      return "shift_count_overflow_diagnostic";
    }
*************** public:
*** 630,648 ****
  	    && same_tree_p (m_count_cst, other.m_count_cst));
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_shift_count_overflow;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "shift by count (%qE) >= precision of type (%qi)",
  		       m_count_cst, m_operand_precision);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      return ev.formatted_print ("shift by count %qE here", m_count_cst);
    }
--- 680,698 ----
  	    && same_tree_p (m_count_cst, other.m_count_cst));
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_shift_count_overflow;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "shift by count (%qE) >= precision of type (%qi)",
  		       m_count_cst, m_operand_precision);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      return ev.formatted_print ("shift by count %qE here", m_count_cst);
    }
*************** region_model::get_gassign_result (const
*** 813,826 ****
  	      if (TREE_CODE (rhs2_cst) == INTEGER_CST)
  		{
  		  if (tree_int_cst_sgn (rhs2_cst) < 0)
! 		    ctxt->warn (new shift_count_negative_diagnostic
! 				  (assign, rhs2_cst));
  		  else if (compare_tree_int (rhs2_cst,
  					     TYPE_PRECISION (TREE_TYPE (rhs1)))
  			   >= 0)
! 		    ctxt->warn (new shift_count_overflow_diagnostic
! 				  (assign, TYPE_PRECISION (TREE_TYPE (rhs1)),
! 				   rhs2_cst));
  		}
  	  }
  
--- 863,879 ----
  	      if (TREE_CODE (rhs2_cst) == INTEGER_CST)
  		{
  		  if (tree_int_cst_sgn (rhs2_cst) < 0)
! 		    ctxt->warn
! 		      (make_unique<shift_count_negative_diagnostic>
! 			 (assign, rhs2_cst));
  		  else if (compare_tree_int (rhs2_cst,
  					     TYPE_PRECISION (TREE_TYPE (rhs1)))
  			   >= 0)
! 		    ctxt->warn
! 		      (make_unique<shift_count_overflow_diagnostic>
! 			 (assign,
! 			  int (TYPE_PRECISION (TREE_TYPE (rhs1))),
! 			  rhs2_cst));
  		}
  	  }
  
*************** due_to_ifn_deferred_init_p (const gassig
*** 993,1003 ****
  
  /* Check for SVAL being poisoned, adding a warning to CTXT.
     Return SVAL, or, if a warning is added, another value, to avoid
!    repeatedly complaining about the same poisoned value in followup code.  */
  
  const svalue *
  region_model::check_for_poison (const svalue *sval,
  				tree expr,
  				region_model_context *ctxt) const
  {
    if (!ctxt)
--- 1046,1058 ----
  
  /* Check for SVAL being poisoned, adding a warning to CTXT.
     Return SVAL, or, if a warning is added, another value, to avoid
!    repeatedly complaining about the same poisoned value in followup code.
!    SRC_REGION is a hint about where SVAL came from, and can be NULL.  */
  
  const svalue *
  region_model::check_for_poison (const svalue *sval,
  				tree expr,
+ 				const region *src_region,
  				region_model_context *ctxt) const
  {
    if (!ctxt)
*************** region_model::check_for_poison (const sv
*** 1035,1045 ****
  	 the tree other than via the def stmts, using
  	 fixup_tree_for_diagnostic.  */
        tree diag_arg = fixup_tree_for_diagnostic (expr);
!       const region *src_region = NULL;
!       if (pkind == POISON_KIND_UNINIT)
  	src_region = get_region_for_poisoned_expr (expr);
!       if (ctxt->warn (new poisoned_value_diagnostic (diag_arg, pkind,
! 						     src_region)))
  	{
  	  /* We only want to report use of a poisoned value at the first
  	     place it gets used; return an unknown value to avoid generating
--- 1090,1113 ----
  	 the tree other than via the def stmts, using
  	 fixup_tree_for_diagnostic.  */
        tree diag_arg = fixup_tree_for_diagnostic (expr);
!       if (src_region == NULL && pkind == POISON_KIND_UNINIT)
  	src_region = get_region_for_poisoned_expr (expr);
! 
!       /* Can we reliably get the poisoned value from "expr"?
! 	 This is for use by poisoned_value_diagnostic::check_valid_fpath_p.
! 	 Unfortunately, we might not have a reliable value for EXPR.
! 	 Hence we only query its value now, and only use it if we get the
! 	 poisoned value back again.  */
!       tree check_expr = expr;
!       const svalue *foo_sval = get_rvalue (expr, NULL);
!       if (foo_sval == sval)
! 	check_expr = expr;
!       else
! 	check_expr = NULL;
!       if (ctxt->warn (make_unique<poisoned_value_diagnostic> (diag_arg,
! 							      pkind,
! 							      src_region,
! 							      check_expr)))
  	{
  	  /* We only want to report use of a poisoned value at the first
  	     place it gets used; return an unknown value to avoid generating
*************** region_model::on_assignment (const gassi
*** 1088,1094 ****
    if (const svalue *sval = get_gassign_result (assign, ctxt))
      {
        tree expr = get_diagnostic_tree_for_gassign (assign);
!       check_for_poison (sval, expr, ctxt);
        set_value (lhs_reg, sval, ctxt);
        return;
      }
--- 1156,1162 ----
    if (const svalue *sval = get_gassign_result (assign, ctxt))
      {
        tree expr = get_diagnostic_tree_for_gassign (assign);
!       check_for_poison (sval, expr, NULL, ctxt);
        set_value (lhs_reg, sval, ctxt);
        return;
      }
*************** region_model::on_assignment (const gassi
*** 1154,1192 ****
      }
  }
  
- /* A pending_diagnostic subclass for implementing "__analyzer_dump_path".  */
- 
- class dump_path_diagnostic
-   : public pending_diagnostic_subclass<dump_path_diagnostic>
- {
- public:
-   int get_controlling_option () const FINAL OVERRIDE
-   {
-     return 0;
-   }
- 
-   bool emit (rich_location *richloc) FINAL OVERRIDE
-   {
-     inform (richloc, "path");
-     return true;
-   }
- 
-   const char *get_kind () const FINAL OVERRIDE { return "dump_path_diagnostic"; }
- 
-   bool operator== (const dump_path_diagnostic &) const
-   {
-     return true;
-   }
- };
- 
  /* Handle the pre-sm-state part of STMT, modifying this object in-place.
-    Write true to *OUT_TERMINATE_PATH if the path should be terminated.
     Write true to *OUT_UNKNOWN_SIDE_EFFECTS if the stmt has unknown
     side effects.  */
  
  void
  region_model::on_stmt_pre (const gimple *stmt,
- 			   bool *out_terminate_path,
  			   bool *out_unknown_side_effects,
  			   region_model_context *ctxt)
  {
--- 1222,1233 ----
*************** region_model::on_stmt_pre (const gimple
*** 1216,1260 ****
  	   anything, for which we don't have a function body, or for which we
  	   don't know the fndecl.  */
  	const gcall *call = as_a <const gcall *> (stmt);
! 
! 	/* Debugging/test support.  */
! 	if (is_special_named_call_p (call, "__analyzer_describe", 2))
! 	  impl_call_analyzer_describe (call, ctxt);
! 	else if (is_special_named_call_p (call, "__analyzer_dump_capacity", 1))
! 	  impl_call_analyzer_dump_capacity (call, ctxt);
! 	else if (is_special_named_call_p (call, "__analyzer_dump_escaped", 0))
! 	  impl_call_analyzer_dump_escaped (call);
! 	else if (is_special_named_call_p (call, "__analyzer_dump_path", 0))
! 	  {
! 	    /* Handle the builtin "__analyzer_dump_path" by queuing a
! 	       diagnostic at this exploded_node.  */
! 	    ctxt->warn (new dump_path_diagnostic ());
! 	  }
! 	else if (is_special_named_call_p (call, "__analyzer_dump_region_model",
! 					  0))
! 	  {
! 	    /* Handle the builtin "__analyzer_dump_region_model" by dumping
! 	       the region model's state to stderr.  */
! 	    dump (false);
! 	  }
! 	else if (is_special_named_call_p (call, "__analyzer_eval", 1))
! 	  impl_call_analyzer_eval (call, ctxt);
! 	else if (is_special_named_call_p (call, "__analyzer_break", 0))
! 	  {
! 	    /* Handle the builtin "__analyzer_break" by triggering a
! 	       breakpoint.  */
! 	    /* TODO: is there a good cross-platform way to do this?  */
! 	    raise (SIGINT);
! 	  }
! 	else if (is_special_named_call_p (call,
! 					  "__analyzer_dump_exploded_nodes",
! 					  1))
! 	  {
! 	    /* This is handled elsewhere.  */
! 	  }
! 	else
! 	  *out_unknown_side_effects = on_call_pre (call, ctxt,
! 						   out_terminate_path);
        }
        break;
  
--- 1257,1263 ----
  	   anything, for which we don't have a function body, or for which we
  	   don't know the fndecl.  */
  	const gcall *call = as_a <const gcall *> (stmt);
! 	*out_unknown_side_effects = on_call_pre (call, ctxt);
        }
        break;
  
*************** maybe_get_const_fn_result (const call_de
*** 1322,1327 ****
--- 1325,1466 ----
    return sval;
  }
  
+ /* Update this model for an outcome of a call that returns a specific
+    integer constant.
+    If UNMERGEABLE, then make the result unmergeable, e.g. to prevent
+    the state-merger code from merging success and failure outcomes.  */
+ 
+ void
+ region_model::update_for_int_cst_return (const call_details &cd,
+ 					 int retval,
+ 					 bool unmergeable)
+ {
+   if (!cd.get_lhs_type ())
+     return;
+   if (TREE_CODE (cd.get_lhs_type ()) != INTEGER_TYPE)
+     return;
+   const svalue *result
+     = m_mgr->get_or_create_int_cst (cd.get_lhs_type (), retval);
+   if (unmergeable)
+     result = m_mgr->get_or_create_unmergeable (result);
+   set_value (cd.get_lhs_region (), result, cd.get_ctxt ());
+ }
+ 
+ /* Update this model for an outcome of a call that returns zero.
+    If UNMERGEABLE, then make the result unmergeable, e.g. to prevent
+    the state-merger code from merging success and failure outcomes.  */
+ 
+ void
+ region_model::update_for_zero_return (const call_details &cd,
+ 				      bool unmergeable)
+ {
+   update_for_int_cst_return (cd, 0, unmergeable);
+ }
+ 
+ /* Update this model for an outcome of a call that returns non-zero.  */
+ 
+ void
+ region_model::update_for_nonzero_return (const call_details &cd)
+ {
+   if (!cd.get_lhs_type ())
+     return;
+   if (TREE_CODE (cd.get_lhs_type ()) != INTEGER_TYPE)
+     return;
+   const svalue *zero
+     = m_mgr->get_or_create_int_cst (cd.get_lhs_type (), 0);
+   const svalue *result
+     = get_store_value (cd.get_lhs_region (), cd.get_ctxt ());
+   add_constraint (result, NE_EXPR, zero, cd.get_ctxt ());
+ }
+ 
+ /* Subroutine of region_model::maybe_get_copy_bounds.
+    The Linux kernel commonly uses
+      min_t([unsigned] long, VAR, sizeof(T));
+    to set an upper bound on the size of a copy_to_user.
+    Attempt to simplify such sizes by trying to get the upper bound as a
+    constant.
+    Return the simplified svalue if possible, or NULL otherwise.  */
+ 
+ static const svalue *
+ maybe_simplify_upper_bound (const svalue *num_bytes_sval,
+ 			    region_model_manager *mgr)
+ {
+   tree type = num_bytes_sval->get_type ();
+   while (const svalue *raw = num_bytes_sval->maybe_undo_cast ())
+     num_bytes_sval = raw;
+   if (const binop_svalue *binop_sval = num_bytes_sval->dyn_cast_binop_svalue ())
+     if (binop_sval->get_op () == MIN_EXPR)
+       if (binop_sval->get_arg1 ()->get_kind () == SK_CONSTANT)
+ 	{
+ 	  return mgr->get_or_create_cast (type, binop_sval->get_arg1 ());
+ 	  /* TODO: we might want to also capture the constraint
+ 	     when recording the diagnostic, or note that we're using
+ 	     the upper bound.  */
+ 	}
+   return NULL;
+ }
+ 
+ /* Attempt to get an upper bound for the size of a copy when simulating a
+    copy function.
+ 
+    NUM_BYTES_SVAL is the symbolic value for the size of the copy.
+    Use it if it's constant, otherwise try to simplify it.  Failing
+    that, use the size of SRC_REG if constant.
+ 
+    Return a symbolic value for an upper limit on the number of bytes
+    copied, or NULL if no such value could be determined.  */
+ 
+ const svalue *
+ region_model::maybe_get_copy_bounds (const region *src_reg,
+ 				     const svalue *num_bytes_sval)
+ {
+   if (num_bytes_sval->maybe_get_constant ())
+     return num_bytes_sval;
+ 
+   if (const svalue *simplified
+       = maybe_simplify_upper_bound (num_bytes_sval, m_mgr))
+     num_bytes_sval = simplified;
+ 
+   if (num_bytes_sval->maybe_get_constant ())
+     return num_bytes_sval;
+ 
+   /* For now, try just guessing the size as the capacity of the
+      base region of the src.
+      This is a hack; we might get too large a value.  */
+   const region *src_base_reg = src_reg->get_base_region ();
+   num_bytes_sval = get_capacity (src_base_reg);
+ 
+   if (num_bytes_sval->maybe_get_constant ())
+     return num_bytes_sval;
+ 
+   /* Non-constant: give up. */
+   return NULL;
+ }
+ 
+ /* Get any known_function for FNDECL for call CD.
+ 
+    The call must match all assumptions made by the known_function (such as
+    e.g. "argument 1's type must be a pointer type").
+ 
+    Return NULL if no known_function is found, or it does not match the
+    assumption(s).  */
+ 
+ const known_function *
+ region_model::get_known_function (tree fndecl, const call_details &cd) const
+ {
+   known_function_manager *known_fn_mgr = m_mgr->get_known_function_manager ();
+   return known_fn_mgr->get_match (fndecl, cd);
+ }
+ 
+ /* Get any known_function for IFN, or NULL.  */
+ 
+ const known_function *
+ region_model::get_known_function (enum internal_fn ifn) const
+ {
+   known_function_manager *known_fn_mgr = m_mgr->get_known_function_manager ();
+   return known_fn_mgr->get_internal_fn (ifn);
+ }
+ 
  /* Update this model for the CALL stmt, using CTXT to report any
     diagnostics - the first half.
  
*************** maybe_get_const_fn_result (const call_de
*** 1331,1349 ****
  
     Return true if the function call has unknown side effects (it wasn't
     recognized and we don't have a body for it, or are unable to tell which
!    fndecl it is).
! 
!    Write true to *OUT_TERMINATE_PATH if this execution path should be
!    terminated (e.g. the function call terminates the process).  */
  
  bool
! region_model::on_call_pre (const gcall *call, region_model_context *ctxt,
! 			   bool *out_terminate_path)
  {
    call_details cd (call, this, ctxt);
  
-   bool unknown_side_effects = false;
- 
    /* Special-case for IFN_DEFERRED_INIT.
       We want to report uninitialized variables with -fanalyzer (treating
       -ftrivial-auto-var-init= as purely a mitigation feature).
--- 1470,1482 ----
  
     Return true if the function call has unknown side effects (it wasn't
     recognized and we don't have a body for it, or are unable to tell which
!    fndecl it is).  */
  
  bool
! region_model::on_call_pre (const gcall *call, region_model_context *ctxt)
  {
    call_details cd (call, this, ctxt);
  
    /* Special-case for IFN_DEFERRED_INIT.
       We want to report uninitialized variables with -fanalyzer (treating
       -ftrivial-auto-var-init= as purely a mitigation feature).
*************** region_model::on_call_pre (const gcall *
*** 1352,1358 ****
       view of the analyzer.  */
    if (gimple_call_internal_p (call)
        && gimple_call_internal_fn (call) == IFN_DEFERRED_INIT)
!     return false;
  
    /* Some of the cases below update the lhs of the call based on the
       return value, but not all.  Provide a default value, which may
--- 1485,1500 ----
       view of the analyzer.  */
    if (gimple_call_internal_p (call)
        && gimple_call_internal_fn (call) == IFN_DEFERRED_INIT)
!     return false; /* No side effects.  */
! 
!   /* Get svalues for all of the arguments at the callsite, to ensure that we
!      complain about any uninitialized arguments.  This might lead to
!      duplicates if any of the handling below also looks up the svalues,
!      but the deduplication code should deal with that.  */
!   if (ctxt)
!     check_call_args (cd);
! 
!   tree callee_fndecl = get_fndecl_for_call (call, ctxt);
  
    /* Some of the cases below update the lhs of the call based on the
       return value, but not all.  Provide a default value, which may
*************** region_model::on_call_pre (const gcall *
*** 1363,1570 ****
        const svalue *sval = maybe_get_const_fn_result (cd);
        if (!sval)
  	{
! 	  /* For the common case of functions without __attribute__((const)),
! 	     use a conjured value, and purge any prior state involving that
! 	     value (in case this is in a loop).  */
! 	  sval = m_mgr->get_or_create_conjured_svalue (TREE_TYPE (lhs), call,
! 						       lhs_region,
! 						       conjured_purge (this,
! 								       ctxt));
  	}
        set_value (lhs_region, sval, ctxt);
      }
  
    if (gimple_call_internal_p (call))
!     {
!       switch (gimple_call_internal_fn (call))
!        {
!        default:
! 	 break;
!        case IFN_BUILTIN_EXPECT:
! 	 impl_call_builtin_expect (cd);
! 	 return false;
!        case IFN_UBSAN_BOUNDS:
! 	 return false;
!        }
!     }
  
!   if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
      {
!       /* The various impl_call_* member functions are implemented
! 	 in region-model-impl-calls.cc.
! 	 Having them split out into separate functions makes it easier
! 	 to put breakpoints on the handling of specific functions.  */
!       int callee_fndecl_flags = flags_from_decl_or_type (callee_fndecl);
  
!       if (fndecl_built_in_p (callee_fndecl, BUILT_IN_NORMAL)
! 	  && gimple_builtin_call_types_compatible_p (call, callee_fndecl))
! 	switch (DECL_UNCHECKED_FUNCTION_CODE (callee_fndecl))
! 	  {
! 	  default:
! 	    if (!(callee_fndecl_flags & (ECF_CONST | ECF_PURE)))
! 	      unknown_side_effects = true;
! 	    break;
! 	  case BUILT_IN_ALLOCA:
! 	  case BUILT_IN_ALLOCA_WITH_ALIGN:
! 	    impl_call_alloca (cd);
! 	    return false;
! 	  case BUILT_IN_CALLOC:
! 	    impl_call_calloc (cd);
! 	    return false;
! 	  case BUILT_IN_EXPECT:
! 	  case BUILT_IN_EXPECT_WITH_PROBABILITY:
! 	    impl_call_builtin_expect (cd);
! 	    return false;
! 	  case BUILT_IN_FREE:
! 	    /* Handle in "on_call_post".  */
! 	    break;
! 	  case BUILT_IN_MALLOC:
! 	    impl_call_malloc (cd);
! 	    return false;
! 	  case BUILT_IN_MEMCPY:
! 	  case BUILT_IN_MEMCPY_CHK:
! 	    impl_call_memcpy (cd);
! 	    return false;
! 	  case BUILT_IN_MEMSET:
! 	  case BUILT_IN_MEMSET_CHK:
! 	    impl_call_memset (cd);
! 	    return false;
! 	    break;
! 	  case BUILT_IN_REALLOC:
! 	    return false;
! 	  case BUILT_IN_STRCHR:
! 	    impl_call_strchr (cd);
! 	    return false;
! 	  case BUILT_IN_STRCPY:
! 	  case BUILT_IN_STRCPY_CHK:
! 	    impl_call_strcpy (cd);
! 	    return false;
! 	  case BUILT_IN_STRLEN:
! 	    impl_call_strlen (cd);
! 	    return false;
  
! 	  case BUILT_IN_STACK_SAVE:
! 	  case BUILT_IN_STACK_RESTORE:
! 	    return false;
  
! 	  /* Stdio builtins.  */
! 	  case BUILT_IN_FPRINTF:
! 	  case BUILT_IN_FPRINTF_UNLOCKED:
! 	  case BUILT_IN_PUTC:
! 	  case BUILT_IN_PUTC_UNLOCKED:
! 	  case BUILT_IN_FPUTC:
! 	  case BUILT_IN_FPUTC_UNLOCKED:
! 	  case BUILT_IN_FPUTS:
! 	  case BUILT_IN_FPUTS_UNLOCKED:
! 	  case BUILT_IN_FWRITE:
! 	  case BUILT_IN_FWRITE_UNLOCKED:
! 	  case BUILT_IN_PRINTF:
! 	  case BUILT_IN_PRINTF_UNLOCKED:
! 	  case BUILT_IN_PUTCHAR:
! 	  case BUILT_IN_PUTCHAR_UNLOCKED:
! 	  case BUILT_IN_PUTS:
! 	  case BUILT_IN_PUTS_UNLOCKED:
! 	  case BUILT_IN_VFPRINTF:
! 	  case BUILT_IN_VPRINTF:
! 	    /* These stdio builtins have external effects that are out
! 	       of scope for the analyzer: we only want to model the effects
! 	       on the return value.  */
! 	    check_call_args (cd);
! 	    break;
! 	  }
!       else if (is_named_call_p (callee_fndecl, "malloc", call, 1))
! 	{
! 	  impl_call_malloc (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "calloc", call, 2))
! 	{
! 	  impl_call_calloc (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "alloca", call, 1))
! 	{
! 	  impl_call_alloca (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "realloc", call, 2))
! 	{
! 	  impl_call_realloc (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "error"))
! 	{
! 	  if (impl_call_error (cd, 3, out_terminate_path))
! 	    return false;
! 	  else
! 	    unknown_side_effects = true;
! 	}
!       else if (is_named_call_p (callee_fndecl, "error_at_line"))
! 	{
! 	  if (impl_call_error (cd, 5, out_terminate_path))
! 	    return false;
! 	  else
! 	    unknown_side_effects = true;
! 	}
!       else if (is_named_call_p (callee_fndecl, "fgets", call, 3)
! 	       || is_named_call_p (callee_fndecl, "fgets_unlocked", call, 3))
! 	{
! 	  impl_call_fgets (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "fread", call, 4))
! 	{
! 	  impl_call_fread (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "getchar", call, 0))
! 	{
! 	  /* No side-effects (tracking stream state is out-of-scope
! 	     for the analyzer).  */
! 	}
!       else if (is_named_call_p (callee_fndecl, "memset", call, 3)
! 	       && POINTER_TYPE_P (cd.get_arg_type (0)))
! 	{
! 	  impl_call_memset (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "strchr", call, 2)
! 	       && POINTER_TYPE_P (cd.get_arg_type (0)))
! 	{
! 	  impl_call_strchr (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "strlen", call, 1)
! 	       && POINTER_TYPE_P (cd.get_arg_type (0)))
! 	{
! 	  impl_call_strlen (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "operator new", call, 1))
! 	{
! 	  impl_call_operator_new (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "operator new []", call, 1))
! 	{
! 	  impl_call_operator_new (cd);
! 	  return false;
! 	}
!       else if (is_named_call_p (callee_fndecl, "operator delete", call, 1)
! 	       || is_named_call_p (callee_fndecl, "operator delete", call, 2)
! 	       || is_named_call_p (callee_fndecl, "operator delete []", call, 1))
! 	{
! 	  /* Handle in "on_call_post".  */
! 	}
!       else if (!fndecl_has_gimple_body_p (callee_fndecl)
! 	       && (!(callee_fndecl_flags & (ECF_CONST | ECF_PURE)))
! 	       && !fndecl_built_in_p (callee_fndecl))
! 	unknown_side_effects = true;
!     }
!   else
!     unknown_side_effects = true;
  
!   return unknown_side_effects;
  }
  
  /* Update this model for the CALL stmt, using CTXT to report any
--- 1505,1558 ----
        const svalue *sval = maybe_get_const_fn_result (cd);
        if (!sval)
  	{
! 	  if (callee_fndecl
! 	      && lookup_attribute ("malloc", DECL_ATTRIBUTES (callee_fndecl)))
! 	    {
! 	      const region *new_reg
! 		= get_or_create_region_for_heap_alloc (NULL, ctxt);
! 	      mark_region_as_unknown (new_reg, NULL);
! 	      sval = m_mgr->get_ptr_svalue (cd.get_lhs_type (), new_reg);
! 	    }
! 	  else
! 	    /* For the common case of functions without __attribute__((const)),
! 	       use a conjured value, and purge any prior state involving that
! 	       value (in case this is in a loop).  */
! 	    sval = m_mgr->get_or_create_conjured_svalue (TREE_TYPE (lhs), call,
! 							 lhs_region,
! 							 conjured_purge (this,
! 									 ctxt));
  	}
        set_value (lhs_region, sval, ctxt);
      }
  
    if (gimple_call_internal_p (call))
!     if (const known_function *kf
! 	  = get_known_function (gimple_call_internal_fn (call)))
!       {
! 	kf->impl_call_pre (cd);
! 	return false; /* No further side effects.  */
!       }
  
!   if (!callee_fndecl)
!     return true; /* Unknown side effects.  */
! 
!   if (const known_function *kf = get_known_function (callee_fndecl, cd))
      {
!       kf->impl_call_pre (cd);
!       return false; /* No further side effects.  */
!     }
  
!   const int callee_fndecl_flags = flags_from_decl_or_type (callee_fndecl);
!   if (callee_fndecl_flags & (ECF_CONST | ECF_PURE))
!     return false; /* No side effects.  */
  
!   if (fndecl_built_in_p (callee_fndecl))
!     return true; /* Unknown side effects.  */
  
!   if (!fndecl_has_gimple_body_p (callee_fndecl))
!     return true; /* Unknown side effects.  */
  
!   return false; /* No side effects.  */
  }
  
  /* Update this model for the CALL stmt, using CTXT to report any
*************** region_model::on_call_post (const gcall
*** 1585,1600 ****
    if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
      {
        call_details cd (call, this, ctxt);
!       if (is_named_call_p (callee_fndecl, "free", call, 1))
! 	{
! 	  impl_call_free (cd);
! 	  return;
! 	}
!       if (is_named_call_p (callee_fndecl, "operator delete", call, 1)
! 	  || is_named_call_p (callee_fndecl, "operator delete", call, 2)
! 	  || is_named_call_p (callee_fndecl, "operator delete []", call, 1))
  	{
! 	  impl_call_operator_delete (cd);
  	  return;
  	}
        /* Was this fndecl referenced by
--- 1573,1581 ----
    if (tree callee_fndecl = get_fndecl_for_call (call, ctxt))
      {
        call_details cd (call, this, ctxt);
!       if (const known_function *kf = get_known_function (callee_fndecl, cd))
  	{
! 	  kf->impl_call_post (cd);
  	  return;
  	}
        /* Was this fndecl referenced by
*************** region_model::on_call_post (const gcall
*** 1604,1619 ****
  	  impl_deallocation_call (cd);
  	  return;
  	}
-       if (fndecl_built_in_p (callee_fndecl, BUILT_IN_NORMAL)
- 	  && gimple_builtin_call_types_compatible_p (call, callee_fndecl))
- 	switch (DECL_UNCHECKED_FUNCTION_CODE (callee_fndecl))
- 	  {
- 	  default:
- 	    break;
- 	  case BUILT_IN_REALLOC:
- 	    impl_call_realloc (cd);
- 	    return;
- 	  }
      }
  
    if (unknown_side_effects)
--- 1585,1590 ----
*************** public:
*** 1667,1675 ****
    {
    }
  
!   const char *get_kind () const FINAL OVERRIDE { return "reason_attr_access"; }
  
!   void emit () const
    {
      inform (DECL_SOURCE_LOCATION (m_callee_fndecl),
  	    "parameter %i of %qD marked with attribute %qs",
--- 1638,1646 ----
    {
    }
  
!   const char *get_kind () const final override { return "reason_attr_access"; }
  
!   void emit () const final override
    {
      inform (DECL_SOURCE_LOCATION (m_callee_fndecl),
  	    "parameter %i of %qD marked with attribute %qs",
*************** check_external_function_for_access_attr
*** 1748,1756 ****
  	      m_access (access)
  	    {
  	    }
! 	    pending_note *make_note () FINAL OVERRIDE
  	    {
! 	      return new reason_attr_access (m_callee_fndecl, m_access);
  	    }
  	  private:
  	    tree m_callee_fndecl;
--- 1719,1728 ----
  	      m_access (access)
  	    {
  	    }
! 	    std::unique_ptr<pending_note> make_note () final override
  	    {
! 	      return make_unique<reason_attr_access>
! 		(m_callee_fndecl, m_access);
  	    }
  	  private:
  	    tree m_callee_fndecl;
*************** region_model::on_longjmp (const gcall *l
*** 1980,1986 ****
       setjmp was called.  */
    gcc_assert (get_stack_depth () >= setjmp_stack_depth);
    while (get_stack_depth () > setjmp_stack_depth)
!     pop_frame (NULL, NULL, ctxt);
  
    gcc_assert (get_stack_depth () == setjmp_stack_depth);
  
--- 1952,1958 ----
       setjmp was called.  */
    gcc_assert (get_stack_depth () >= setjmp_stack_depth);
    while (get_stack_depth () > setjmp_stack_depth)
!     pop_frame (NULL, NULL, ctxt, false);
  
    gcc_assert (get_stack_depth () == setjmp_stack_depth);
  
*************** region_model::get_rvalue_1 (path_var pv,
*** 2231,2239 ****
  	return get_rvalue_for_bits (TREE_TYPE (expr), reg, bits, ctxt);
        }
  
-     case SSA_NAME:
      case VAR_DECL:
      case PARM_DECL:
      case RESULT_DECL:
      case ARRAY_REF:
        {
--- 2203,2218 ----
  	return get_rvalue_for_bits (TREE_TYPE (expr), reg, bits, ctxt);
        }
  
      case VAR_DECL:
+       if (DECL_HARD_REGISTER (pv.m_tree))
+ 	{
+ 	  /* If it has a hard register, it doesn't have a memory region
+ 	     and can't be referred to as an lvalue.  */
+ 	  return m_mgr->get_or_create_unknown_svalue (TREE_TYPE (pv.m_tree));
+ 	}
+       /* Fall through. */
      case PARM_DECL:
+     case SSA_NAME:
      case RESULT_DECL:
      case ARRAY_REF:
        {
*************** region_model::get_rvalue_1 (path_var pv,
*** 2277,2282 ****
--- 2256,2264 ----
      /* Binary ops.  */
      case PLUS_EXPR:
      case MULT_EXPR:
+     case BIT_AND_EXPR:
+     case BIT_IOR_EXPR:
+     case BIT_XOR_EXPR:
  	{
  	  tree expr = pv.m_tree;
  	  tree arg0 = TREE_OPERAND (expr, 0);
*************** region_model::get_rvalue (path_var pv, r
*** 2316,2322 ****
  
    assert_compat_types (result_sval->get_type (), TREE_TYPE (pv.m_tree));
  
!   result_sval = check_for_poison (result_sval, pv.m_tree, ctxt);
  
    return result_sval;
  }
--- 2298,2304 ----
  
    assert_compat_types (result_sval->get_type (), TREE_TYPE (pv.m_tree));
  
!   result_sval = check_for_poison (result_sval, pv.m_tree, NULL, ctxt);
  
    return result_sval;
  }
*************** const svalue *
*** 2410,2415 ****
--- 2392,2401 ----
  region_model::get_store_value (const region *reg,
  			       region_model_context *ctxt) const
  {
+   /* Getting the value of an empty region gives an unknown_svalue.  */
+   if (reg->empty_p ())
+     return m_mgr->get_or_create_unknown_svalue (reg->get_type ());
+ 
    check_region_for_read (reg, ctxt);
  
    /* Special-case: handle var_decls in the constant pool.  */
*************** region_model::deref_rvalue (const svalue
*** 2558,2564 ****
  		const poisoned_svalue *poisoned_sval
  		  = as_a <const poisoned_svalue *> (ptr_sval);
  		enum poison_kind pkind = poisoned_sval->get_poison_kind ();
! 		ctxt->warn (new poisoned_value_diagnostic (ptr, pkind, NULL));
  	      }
  	  }
        }
--- 2544,2551 ----
  		const poisoned_svalue *poisoned_sval
  		  = as_a <const poisoned_svalue *> (ptr_sval);
  		enum poison_kind pkind = poisoned_sval->get_poison_kind ();
! 		ctxt->warn (make_unique<poisoned_value_diagnostic>
! 			      (ptr, pkind, NULL, NULL));
  	      }
  	  }
        }
*************** public:
*** 2595,2601 ****
    : m_reg (reg), m_decl (decl)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "write_to_const_diagnostic";
    }
--- 2582,2588 ----
    : m_reg (reg), m_decl (decl)
    {}
  
!   const char *get_kind () const final override
    {
      return "write_to_const_diagnostic";
    }
*************** public:
*** 2606,2617 ****
  	    && m_decl == other.m_decl);
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_write_to_const;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      auto_diagnostic_group d;
      bool warned;
--- 2593,2604 ----
  	    && m_decl == other.m_decl);
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_write_to_const;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      auto_diagnostic_group d;
      bool warned;
*************** public:
*** 2635,2641 ****
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      switch (m_reg->get_kind ())
        {
--- 2622,2628 ----
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      switch (m_reg->get_kind ())
        {
*************** public:
*** 2664,2670 ****
    : m_reg (reg)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "write_to_string_literal_diagnostic";
    }
--- 2651,2657 ----
    : m_reg (reg)
    {}
  
!   const char *get_kind () const final override
    {
      return "write_to_string_literal_diagnostic";
    }
*************** public:
*** 2674,2685 ****
      return m_reg == other.m_reg;
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_write_to_string_literal;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "write to string literal");
--- 2661,2672 ----
      return m_reg == other.m_reg;
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_write_to_string_literal;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "write to string literal");
*************** public:
*** 2687,2693 ****
         but it is not available at this point.  */
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      return ev.formatted_print ("write to string literal here");
    }
--- 2674,2680 ----
         but it is not available at this point.  */
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      return ev.formatted_print ("write to string literal here");
    }
*************** region_model::check_for_writable_region
*** 2715,2728 ****
        {
  	const function_region *func_reg = as_a <const function_region *> (base_reg);
  	tree fndecl = func_reg->get_fndecl ();
! 	ctxt->warn (new write_to_const_diagnostic (func_reg, fndecl));
        }
        break;
      case RK_LABEL:
        {
  	const label_region *label_reg = as_a <const label_region *> (base_reg);
  	tree label = label_reg->get_label ();
! 	ctxt->warn (new write_to_const_diagnostic (label_reg, label));
        }
        break;
      case RK_DECL:
--- 2702,2717 ----
        {
  	const function_region *func_reg = as_a <const function_region *> (base_reg);
  	tree fndecl = func_reg->get_fndecl ();
! 	ctxt->warn (make_unique<write_to_const_diagnostic>
! 		      (func_reg, fndecl));
        }
        break;
      case RK_LABEL:
        {
  	const label_region *label_reg = as_a <const label_region *> (base_reg);
  	tree label = label_reg->get_label ();
! 	ctxt->warn (make_unique<write_to_const_diagnostic>
! 		      (label_reg, label));
        }
        break;
      case RK_DECL:
*************** region_model::check_for_writable_region
*** 2735,2745 ****
  	   "this" param is "T* const").  */
  	if (TREE_READONLY (decl)
  	    && is_global_var (decl))
! 	  ctxt->warn (new write_to_const_diagnostic (dest_reg, decl));
        }
        break;
      case RK_STRING:
!       ctxt->warn (new write_to_string_literal_diagnostic (dest_reg));
        break;
      }
  }
--- 2724,2734 ----
  	   "this" param is "T* const").  */
  	if (TREE_READONLY (decl)
  	    && is_global_var (decl))
! 	  ctxt->warn (make_unique<write_to_const_diagnostic> (dest_reg, decl));
        }
        break;
      case RK_STRING:
!       ctxt->warn (make_unique<write_to_string_literal_diagnostic> (dest_reg));
        break;
      }
  }
*************** region_model::get_capacity (const region
*** 2783,2788 ****
--- 2772,2806 ----
    return m_mgr->get_or_create_unknown_svalue (sizetype);
  }
  
+ /* Return the string size, including the 0-terminator, if SVAL is a
+    constant_svalue holding a string.  Otherwise, return an unknown_svalue.  */
+ 
+ const svalue *
+ region_model::get_string_size (const svalue *sval) const
+ {
+   tree cst = sval->maybe_get_constant ();
+   if (!cst || TREE_CODE (cst) != STRING_CST)
+     return m_mgr->get_or_create_unknown_svalue (size_type_node);
+ 
+   tree out = build_int_cst (size_type_node, TREE_STRING_LENGTH (cst));
+   return m_mgr->get_or_create_constant_svalue (out);
+ }
+ 
+ /* Return the string size, including the 0-terminator, if REG is a
+    string_region.  Otherwise, return an unknown_svalue.  */
+ 
+ const svalue *
+ region_model::get_string_size (const region *reg) const
+ {
+   const string_region *str_reg = dyn_cast <const string_region *> (reg);
+   if (!str_reg)
+     return m_mgr->get_or_create_unknown_svalue (size_type_node);
+ 
+   tree cst = str_reg->get_string_cst ();
+   tree out = build_int_cst (size_type_node, TREE_STRING_LENGTH (cst));
+   return m_mgr->get_or_create_constant_svalue (out);
+ }
+ 
  /* If CTXT is non-NULL, use it to warn about any problems accessing REG,
     using DIR to determine if this access is a read or write.  */
  
*************** region_model::check_region_access (const
*** 2796,2801 ****
--- 2814,2820 ----
      return;
  
    check_region_for_taint (reg, dir, ctxt);
+   check_region_bounds (reg, dir, ctxt);
  
    switch (dir)
      {
*************** region_model::check_region_for_read (con
*** 2828,2833 ****
--- 2847,3228 ----
    check_region_access (src_reg, DIR_READ, ctxt);
  }
  
+ /* Concrete subclass for casts of pointers that lead to trailing bytes.  */
+ 
+ class dubious_allocation_size
+ : public pending_diagnostic_subclass<dubious_allocation_size>
+ {
+ public:
+   dubious_allocation_size (const region *lhs, const region *rhs)
+   : m_lhs (lhs), m_rhs (rhs), m_expr (NULL_TREE),
+     m_has_allocation_event (false)
+   {}
+ 
+   dubious_allocation_size (const region *lhs, const region *rhs,
+ 			   tree expr)
+   : m_lhs (lhs), m_rhs (rhs), m_expr (expr),
+     m_has_allocation_event (false)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "dubious_allocation_size";
+   }
+ 
+   bool operator== (const dubious_allocation_size &other) const
+   {
+     return m_lhs == other.m_lhs && m_rhs == other.m_rhs
+ 	   && pending_diagnostic::same_tree_p (m_expr, other.m_expr);
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_allocation_size;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     m.add_cwe (131);
+ 
+     return warning_meta (rich_loc, m, get_controlling_option (),
+ 			 "allocated buffer size is not a multiple"
+ 			 " of the pointee's size");
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final
+   override
+   {
+     tree pointee_type = TREE_TYPE (m_lhs->get_type ());
+     if (m_has_allocation_event)
+       return ev.formatted_print ("assigned to %qT here;"
+ 				 " %<sizeof (%T)%> is %qE",
+ 				 m_lhs->get_type (), pointee_type,
+ 				 size_in_bytes (pointee_type));
+     /* Fallback: Typically, we should always see an allocation_event
+        before.  */
+     if (m_expr)
+       {
+ 	if (TREE_CODE (m_expr) == INTEGER_CST)
+ 	  return ev.formatted_print ("allocated %E bytes and assigned to"
+ 				    " %qT here; %<sizeof (%T)%> is %qE",
+ 				    m_expr, m_lhs->get_type (), pointee_type,
+ 				    size_in_bytes (pointee_type));
+ 	else
+ 	  return ev.formatted_print ("allocated %qE bytes and assigned to"
+ 				    " %qT here; %<sizeof (%T)%> is %qE",
+ 				    m_expr, m_lhs->get_type (), pointee_type,
+ 				    size_in_bytes (pointee_type));
+       }
+ 
+     return ev.formatted_print ("allocated and assigned to %qT here;"
+ 			       " %<sizeof (%T)%> is %qE",
+ 			       m_lhs->get_type (), pointee_type,
+ 			       size_in_bytes (pointee_type));
+   }
+ 
+   void
+   add_region_creation_events (const region *,
+ 			      tree capacity,
+ 			      const event_loc_info &loc_info,
+ 			      checker_path &emission_path) final override
+   {
+     emission_path.add_event
+       (make_unique<region_creation_event_allocation_size> (capacity, loc_info));
+ 
+     m_has_allocation_event = true;
+   }
+ 
+   void mark_interesting_stuff (interesting_t *interest) final override
+   {
+     interest->add_region_creation (m_rhs);
+   }
+ 
+ private:
+   const region *m_lhs;
+   const region *m_rhs;
+   const tree m_expr;
+   bool m_has_allocation_event;
+ };
+ 
+ /* Return true on dubious allocation sizes for constant sizes.  */
+ 
+ static bool
+ capacity_compatible_with_type (tree cst, tree pointee_size_tree,
+ 			       bool is_struct)
+ {
+   gcc_assert (TREE_CODE (cst) == INTEGER_CST);
+   gcc_assert (TREE_CODE (pointee_size_tree) == INTEGER_CST);
+ 
+   unsigned HOST_WIDE_INT pointee_size = TREE_INT_CST_LOW (pointee_size_tree);
+   unsigned HOST_WIDE_INT alloc_size = TREE_INT_CST_LOW (cst);
+ 
+   if (is_struct)
+     return alloc_size == 0 || alloc_size >= pointee_size;
+   return alloc_size % pointee_size == 0;
+ }
+ 
+ static bool
+ capacity_compatible_with_type (tree cst, tree pointee_size_tree)
+ {
+   return capacity_compatible_with_type (cst, pointee_size_tree, false);
+ }
+ 
+ /* Checks whether SVAL could be a multiple of SIZE_CST.
+ 
+    It works by visiting all svalues inside SVAL until it reaches
+    atomic nodes.  From those, it goes back up again and adds each
+    node that might be a multiple of SIZE_CST to the RESULT_SET.  */
+ 
+ class size_visitor : public visitor
+ {
+ public:
+   size_visitor (tree size_cst, const svalue *root_sval, constraint_manager *cm)
+   : m_size_cst (size_cst), m_root_sval (root_sval), m_cm (cm)
+   {
+     m_root_sval->accept (this);
+   }
+ 
+   bool get_result ()
+   {
+     return result_set.contains (m_root_sval);
+   }
+ 
+   void visit_constant_svalue (const constant_svalue *sval) final override
+   {
+     check_constant (sval->get_constant (), sval);
+   }
+ 
+   void visit_unknown_svalue (const unknown_svalue *sval ATTRIBUTE_UNUSED)
+     final override
+   {
+     result_set.add (sval);
+   }
+ 
+   void visit_poisoned_svalue (const poisoned_svalue *sval ATTRIBUTE_UNUSED)
+     final override
+   {
+     result_set.add (sval);
+   }
+ 
+   void visit_unaryop_svalue (const unaryop_svalue *sval) final override
+   {
+     const svalue *arg = sval->get_arg ();
+     if (result_set.contains (arg))
+       result_set.add (sval);
+   }
+ 
+   void visit_binop_svalue (const binop_svalue *sval) final override
+   {
+     const svalue *arg0 = sval->get_arg0 ();
+     const svalue *arg1 = sval->get_arg1 ();
+ 
+     if (sval->get_op () == MULT_EXPR)
+       {
+ 	if (result_set.contains (arg0) || result_set.contains (arg1))
+ 	  result_set.add (sval);
+       }
+     else
+       {
+ 	if (result_set.contains (arg0) && result_set.contains (arg1))
+ 	  result_set.add (sval);
+       }
+   }
+ 
+   void visit_repeated_svalue (const repeated_svalue *sval) final override
+   {
+     sval->get_inner_svalue ()->accept (this);
+     if (result_set.contains (sval->get_inner_svalue ()))
+       result_set.add (sval);
+   }
+ 
+   void visit_unmergeable_svalue (const unmergeable_svalue *sval) final override
+   {
+     sval->get_arg ()->accept (this);
+     if (result_set.contains (sval->get_arg ()))
+       result_set.add (sval);
+   }
+ 
+   void visit_widening_svalue (const widening_svalue *sval) final override
+   {
+     const svalue *base = sval->get_base_svalue ();
+     const svalue *iter = sval->get_iter_svalue ();
+ 
+     if (result_set.contains (base) && result_set.contains (iter))
+       result_set.add (sval);
+   }
+ 
+   void visit_conjured_svalue (const conjured_svalue *sval ATTRIBUTE_UNUSED)
+     final override
+   {
+     equiv_class_id id (-1);
+     if (m_cm->get_equiv_class_by_svalue (sval, &id))
+       {
+ 	if (tree cst = id.get_obj (*m_cm).get_any_constant ())
+ 	  check_constant (cst, sval);
+ 	else
+ 	  result_set.add (sval);
+       }
+   }
+ 
+   void visit_asm_output_svalue (const asm_output_svalue *sval ATTRIBUTE_UNUSED)
+     final override
+   {
+     result_set.add (sval);
+   }
+ 
+   void visit_const_fn_result_svalue (const const_fn_result_svalue
+ 				      *sval ATTRIBUTE_UNUSED) final override
+   {
+     result_set.add (sval);
+   }
+ 
+ private:
+   void check_constant (tree cst, const svalue *sval)
+   {
+     switch (TREE_CODE (cst))
+       {
+       default:
+ 	/* Assume all unhandled operands are compatible.  */
+ 	result_set.add (sval);
+ 	break;
+       case INTEGER_CST:
+ 	if (capacity_compatible_with_type (cst, m_size_cst))
+ 	  result_set.add (sval);
+ 	break;
+       }
+   }
+ 
+   tree m_size_cst;
+   const svalue *m_root_sval;
+   constraint_manager *m_cm;
+   svalue_set result_set; /* Used as a mapping of svalue*->bool.  */
+ };
+ 
+ /* Return true if a struct or union either uses the inheritance pattern,
+    where the first field is a base struct, or the flexible array member
+    pattern, where the last field is an array without a specified size.  */
+ 
+ static bool
+ struct_or_union_with_inheritance_p (tree struc)
+ {
+   tree iter = TYPE_FIELDS (struc);
+   if (iter == NULL_TREE)
+ 	  return false;
+   if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (iter)))
+ 	  return true;
+ 
+   tree last_field;
+   while (iter != NULL_TREE)
+     {
+       last_field = iter;
+       iter = DECL_CHAIN (iter);
+     }
+ 
+   if (last_field != NULL_TREE
+       && TREE_CODE (TREE_TYPE (last_field)) == ARRAY_TYPE)
+ 	  return true;
+ 
+   return false;
+ }
+ 
+ /* Return true if the lhs and rhs of an assignment have different types.  */
+ 
+ static bool
+ is_any_cast_p (const gimple *stmt)
+ {
+   if (const gassign *assign = dyn_cast <const gassign *> (stmt))
+     return gimple_assign_cast_p (assign)
+ 	   || !pending_diagnostic::same_tree_p (
+ 		  TREE_TYPE (gimple_assign_lhs (assign)),
+ 		  TREE_TYPE (gimple_assign_rhs1 (assign)));
+   else if (const gcall *call = dyn_cast <const gcall *> (stmt))
+     {
+       tree lhs = gimple_call_lhs (call);
+       return lhs != NULL_TREE && !pending_diagnostic::same_tree_p (
+ 				    TREE_TYPE (gimple_call_lhs (call)),
+ 				    gimple_call_return_type (call));
+     }
+ 
+   return false;
+ }
+ 
+ /* On pointer assignments, check whether the buffer size of
+    RHS_SVAL is compatible with the type of the LHS_REG.
+    Use a non-null CTXT to report allocation size warnings.  */
+ 
+ void
+ region_model::check_region_size (const region *lhs_reg, const svalue *rhs_sval,
+ 				 region_model_context *ctxt) const
+ {
+   if (!ctxt || ctxt->get_stmt () == NULL)
+     return;
+   /* Only report warnings on assignments that actually change the type.  */
+   if (!is_any_cast_p (ctxt->get_stmt ()))
+     return;
+ 
+   const region_svalue *reg_sval = dyn_cast <const region_svalue *> (rhs_sval);
+   if (!reg_sval)
+     return;
+ 
+   tree pointer_type = lhs_reg->get_type ();
+   if (pointer_type == NULL_TREE || !POINTER_TYPE_P (pointer_type))
+     return;
+ 
+   tree pointee_type = TREE_TYPE (pointer_type);
+   /* Make sure that the type on the left-hand size actually has a size.  */
+   if (pointee_type == NULL_TREE || VOID_TYPE_P (pointee_type)
+       || TYPE_SIZE_UNIT (pointee_type) == NULL_TREE)
+     return;
+ 
+   /* Bail out early on pointers to structs where we can
+      not deduce whether the buffer size is compatible.  */
+   bool is_struct = RECORD_OR_UNION_TYPE_P (pointee_type);
+   if (is_struct && struct_or_union_with_inheritance_p (pointee_type))
+     return;
+ 
+   tree pointee_size_tree = size_in_bytes (pointee_type);
+   /* We give up if the type size is not known at compile-time or the
+      type size is always compatible regardless of the buffer size.  */
+   if (TREE_CODE (pointee_size_tree) != INTEGER_CST
+       || integer_zerop (pointee_size_tree)
+       || integer_onep (pointee_size_tree))
+     return;
+ 
+   const region *rhs_reg = reg_sval->get_pointee ();
+   const svalue *capacity = get_capacity (rhs_reg);
+   switch (capacity->get_kind ())
+     {
+     case svalue_kind::SK_CONSTANT:
+       {
+ 	const constant_svalue *cst_cap_sval
+ 	  = as_a <const constant_svalue *> (capacity);
+ 	tree cst_cap = cst_cap_sval->get_constant ();
+ 	if (TREE_CODE (cst_cap) == INTEGER_CST
+ 	    && !capacity_compatible_with_type (cst_cap, pointee_size_tree,
+ 					       is_struct))
+ 	  ctxt->warn (make_unique <dubious_allocation_size> (lhs_reg, rhs_reg,
+ 							     cst_cap));
+       }
+       break;
+     default:
+       {
+ 	if (!is_struct)
+ 	  {
+ 	    size_visitor v (pointee_size_tree, capacity, m_constraints);
+ 	    if (!v.get_result ())
+ 	      {
+ 		tree expr = get_representative_tree (capacity);
+ 		ctxt->warn (make_unique <dubious_allocation_size> (lhs_reg,
+ 								   rhs_reg,
+ 								   expr));
+ 	      }
+ 	  }
+       break;
+       }
+     }
+ }
+ 
  /* Set the value of the region given by LHS_REG to the value given
     by RHS_SVAL.
     Use CTXT to report any warnings associated with writing to LHS_REG.  */
*************** region_model::set_value (const region *l
*** 2839,2844 ****
--- 3234,3245 ----
    gcc_assert (lhs_reg);
    gcc_assert (rhs_sval);
  
+   /* Setting the value of an empty region is a no-op.  */
+   if (lhs_reg->empty_p ())
+     return;
+ 
+   check_region_size (lhs_reg, rhs_sval, ctxt);
+ 
    check_region_for_write (lhs_reg, ctxt);
  
    m_store.set_value (m_mgr->get_store_manager(), lhs_reg, rhs_sval,
*************** void
*** 2895,2902 ****
  region_model::mark_region_as_unknown (const region *reg,
  				      uncertainty_t *uncertainty)
  {
    m_store.mark_region_as_unknown (m_mgr->get_store_manager(), reg,
! 				  uncertainty);
  }
  
  /* Determine what is known about the condition "LHS_SVAL OP RHS_SVAL" within
--- 3296,3305 ----
  region_model::mark_region_as_unknown (const region *reg,
  				      uncertainty_t *uncertainty)
  {
+   svalue_set maybe_live_values;
    m_store.mark_region_as_unknown (m_mgr->get_store_manager(), reg,
! 				  uncertainty, &maybe_live_values);
!   m_store.on_maybe_live_values (maybe_live_values);
  }
  
  /* Determine what is known about the condition "LHS_SVAL OP RHS_SVAL" within
*************** region_model::eval_condition (const sval
*** 2907,2949 ****
  			       enum tree_code op,
  			       const svalue *rhs) const
  {
-   /* For now, make no attempt to capture constraints on floating-point
-      values.  */
-   if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
-       || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
-     return tristate::unknown ();
- 
-   tristate ts = eval_condition_without_cm (lhs, op, rhs);
-   if (ts.is_known ())
-     return ts;
- 
-   /* Otherwise, try constraints.  */
-   return m_constraints->eval_condition (lhs, op, rhs);
- }
- 
- /* Determine what is known about the condition "LHS_SVAL OP RHS_SVAL" within
-    this model, without resorting to the constraint_manager.
- 
-    This is exposed so that impl_region_model_context::on_state_leak can
-    check for equality part-way through region_model::purge_unused_svalues
-    without risking creating new ECs.  */
- 
- tristate
- region_model::eval_condition_without_cm (const svalue *lhs,
- 					  enum tree_code op,
- 					  const svalue *rhs) const
- {
    gcc_assert (lhs);
    gcc_assert (rhs);
  
-   /* See what we know based on the values.  */
- 
    /* For now, make no attempt to capture constraints on floating-point
       values.  */
    if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
        || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
      return tristate::unknown ();
  
    /* Unwrap any unmergeable values.  */
    lhs = lhs->unwrap_any_unmergeable ();
    rhs = rhs->unwrap_any_unmergeable ();
--- 3310,3326 ----
  			       enum tree_code op,
  			       const svalue *rhs) const
  {
    gcc_assert (lhs);
    gcc_assert (rhs);
  
    /* For now, make no attempt to capture constraints on floating-point
       values.  */
    if ((lhs->get_type () && FLOAT_TYPE_P (lhs->get_type ()))
        || (rhs->get_type () && FLOAT_TYPE_P (rhs->get_type ())))
      return tristate::unknown ();
  
+   /* See what we know based on the values.  */
+ 
    /* Unwrap any unmergeable values.  */
    lhs = lhs->unwrap_any_unmergeable ();
    rhs = rhs->unwrap_any_unmergeable ();
*************** region_model::eval_condition_without_cm
*** 2986,2995 ****
  	/* Otherwise, only known through constraints.  */
        }
  
-   /* If we have a pair of constants, compare them.  */
    if (const constant_svalue *cst_lhs = lhs->dyn_cast_constant_svalue ())
!     if (const constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
!       return constant_svalue::eval_condition (cst_lhs, op, cst_rhs);
  
    /* Handle comparison against zero.  */
    if (const constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
--- 3363,3381 ----
  	/* Otherwise, only known through constraints.  */
        }
  
    if (const constant_svalue *cst_lhs = lhs->dyn_cast_constant_svalue ())
!     {
!       /* If we have a pair of constants, compare them.  */
!       if (const constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
! 	return constant_svalue::eval_condition (cst_lhs, op, cst_rhs);
!       else
! 	{
! 	  /* When we have one constant, put it on the RHS.  */
! 	  std::swap (lhs, rhs);
! 	  op = swap_tree_comparison (op);
! 	}
!     }
!   gcc_assert (lhs->get_kind () != SK_CONSTANT);
  
    /* Handle comparison against zero.  */
    if (const constant_svalue *cst_rhs = rhs->dyn_cast_constant_svalue ())
*************** region_model::eval_condition_without_cm
*** 3028,3036 ****
  	       shouldn't warn for.  */
  	    if (binop->get_op () == POINTER_PLUS_EXPR)
  	      {
! 		tristate lhs_ts
! 		  = eval_condition_without_cm (binop->get_arg0 (),
! 					       op, rhs);
  		if (lhs_ts.is_known ())
  		  return lhs_ts;
  	      }
--- 3414,3433 ----
  	       shouldn't warn for.  */
  	    if (binop->get_op () == POINTER_PLUS_EXPR)
  	      {
! 		tristate lhs_ts = eval_condition (binop->get_arg0 (), op, rhs);
! 		if (lhs_ts.is_known ())
! 		  return lhs_ts;
! 	      }
! 	  }
! 	else if (const unaryop_svalue *unaryop
! 		   = lhs->dyn_cast_unaryop_svalue ())
! 	  {
! 	    if (unaryop->get_op () == NEGATE_EXPR)
! 	      {
! 		/* e.g. "-X <= 0" is equivalent to X >= 0".  */
! 		tristate lhs_ts = eval_condition (unaryop->get_arg (),
! 						  swap_tree_comparison (op),
! 						  rhs);
  		if (lhs_ts.is_known ())
  		  return lhs_ts;
  	      }
*************** region_model::eval_condition_without_cm
*** 3062,3071 ****
  	  return res;
        }
  
!   return tristate::TS_UNKNOWN;
  }
  
! /* Subroutine of region_model::eval_condition_without_cm, for rejecting
     equality of INIT_VAL(PARM) with &LOCAL.  */
  
  tristate
--- 3459,3515 ----
  	  return res;
        }
  
!   /* Handle comparisons between two svalues with more than one operand.  */
!   if (const binop_svalue *binop = lhs->dyn_cast_binop_svalue ())
!     {
!       switch (op)
! 	{
! 	default:
! 	  break;
! 	case EQ_EXPR:
! 	  {
! 	    /* TODO: binops can be equal even if they are not structurally
! 		     equal in case of commutative operators.  */
! 	    tristate res = structural_equality (lhs, rhs);
! 	    if (res.is_true ())
! 	      return res;
! 	  }
! 	  break;
! 	case LE_EXPR:
! 	  {
! 	    tristate res = structural_equality (lhs, rhs);
! 	    if (res.is_true ())
! 	      return res;
! 	  }
! 	  break;
! 	case GE_EXPR:
! 	  {
! 	    tristate res = structural_equality (lhs, rhs);
! 	    if (res.is_true ())
! 	      return res;
! 	    res = symbolic_greater_than (binop, rhs);
! 	    if (res.is_true ())
! 	      return res;
! 	  }
! 	  break;
! 	case GT_EXPR:
! 	  {
! 	    tristate res = symbolic_greater_than (binop, rhs);
! 	    if (res.is_true ())
! 	      return res;
! 	  }
! 	  break;
! 	}
!     }
! 
!   /* Otherwise, try constraints.
!      Cast to const to ensure we don't change the constraint_manager as we
!      do this (e.g. by creating equivalence classes).  */
!   const constraint_manager *constraints = m_constraints;
!   return constraints->eval_condition (lhs, op, rhs);
  }
  
! /* Subroutine of region_model::eval_condition, for rejecting
     equality of INIT_VAL(PARM) with &LOCAL.  */
  
  tristate
*************** region_model::compare_initial_and_pointe
*** 3083,3088 ****
--- 3527,3649 ----
    return tristate::TS_UNKNOWN;
  }
  
+ /* Return true if SVAL is definitely positive.  */
+ 
+ static bool
+ is_positive_svalue (const svalue *sval)
+ {
+   if (tree cst = sval->maybe_get_constant ())
+     return !zerop (cst) && get_range_pos_neg (cst) == 1;
+   tree type = sval->get_type ();
+   if (!type)
+     return false;
+   /* Consider a binary operation size_t + int.  The analyzer wraps the int in
+      an unaryop_svalue, converting it to a size_t, but in the dynamic execution
+      the result is smaller than the first operand.  Thus, we have to look if
+      the argument of the unaryop_svalue is also positive.  */
+   if (const unaryop_svalue *un_op = dyn_cast <const unaryop_svalue *> (sval))
+     return CONVERT_EXPR_CODE_P (un_op->get_op ()) && TYPE_UNSIGNED (type)
+ 	   && is_positive_svalue (un_op->get_arg ());
+   return TYPE_UNSIGNED (type);
+ }
+ 
+ /* Return true if A is definitely larger than B.
+ 
+    Limitation: does not account for integer overflows and does not try to
+ 	       return false, so it can not be used negated.  */
+ 
+ tristate
+ region_model::symbolic_greater_than (const binop_svalue *bin_a,
+ 				     const svalue *b) const
+ {
+   if (bin_a->get_op () == PLUS_EXPR || bin_a->get_op () == MULT_EXPR)
+     {
+       /* Eliminate the right-hand side of both svalues.  */
+       if (const binop_svalue *bin_b = dyn_cast <const binop_svalue *> (b))
+ 	if (bin_a->get_op () == bin_b->get_op ()
+ 	    && eval_condition (bin_a->get_arg1 (),
+ 			       GT_EXPR,
+ 			       bin_b->get_arg1 ()).is_true ()
+ 	    && eval_condition (bin_a->get_arg0 (),
+ 			       GE_EXPR,
+ 			       bin_b->get_arg0 ()).is_true ())
+ 	  return tristate (tristate::TS_TRUE);
+ 
+       /* Otherwise, try to remove a positive offset or factor from BIN_A.  */
+       if (is_positive_svalue (bin_a->get_arg1 ())
+ 	  && eval_condition (bin_a->get_arg0 (),
+ 			     GE_EXPR, b).is_true ())
+ 	  return tristate (tristate::TS_TRUE);
+     }
+   return tristate::unknown ();
+ }
+ 
+ /* Return true if A and B are equal structurally.
+ 
+    Structural equality means that A and B are equal if the svalues A and B have
+    the same nodes at the same positions in the tree and the leafs are equal.
+    Equality for conjured_svalues and initial_svalues is determined by comparing
+    the pointers while constants are compared by value.  That behavior is useful
+    to check for binaryop_svlaues that evaluate to the same concrete value but
+    might use one operand with a different type but the same constant value.
+ 
+    For example,
+      binop_svalue (mult_expr,
+        initial_svalue (‘size_t’, decl_region (..., 'some_var')),
+        constant_svalue (‘size_t’, 4))
+    and
+      binop_svalue (mult_expr,
+        initial_svalue (‘size_t’, decl_region (..., 'some_var'),
+        constant_svalue (‘sizetype’, 4))
+    are structurally equal.  A concrete C code example, where this occurs, can
+    be found in test7 of out-of-bounds-5.c.  */
+ 
+ tristate
+ region_model::structural_equality (const svalue *a, const svalue *b) const
+ {
+   /* If A and B are referentially equal, they are also structurally equal.  */
+   if (a == b)
+     return tristate (tristate::TS_TRUE);
+ 
+   switch (a->get_kind ())
+     {
+     default:
+       return tristate::unknown ();
+     /* SK_CONJURED and SK_INITIAL are already handled
+        by the referential equality above.  */
+     case SK_CONSTANT:
+       {
+ 	tree a_cst = a->maybe_get_constant ();
+ 	tree b_cst = b->maybe_get_constant ();
+ 	if (a_cst && b_cst)
+ 	  return tristate (tree_int_cst_equal (a_cst, b_cst));
+       }
+       return tristate (tristate::TS_FALSE);
+     case SK_UNARYOP:
+       {
+ 	const unaryop_svalue *un_a = as_a <const unaryop_svalue *> (a);
+ 	if (const unaryop_svalue *un_b = dyn_cast <const unaryop_svalue *> (b))
+ 	  return tristate (pending_diagnostic::same_tree_p (un_a->get_type (),
+ 							    un_b->get_type ())
+ 			   && un_a->get_op () == un_b->get_op ()
+ 			   && structural_equality (un_a->get_arg (),
+ 						   un_b->get_arg ()));
+       }
+       return tristate (tristate::TS_FALSE);
+     case SK_BINOP:
+       {
+ 	const binop_svalue *bin_a = as_a <const binop_svalue *> (a);
+ 	if (const binop_svalue *bin_b = dyn_cast <const binop_svalue *> (b))
+ 	  return tristate (bin_a->get_op () == bin_b->get_op ()
+ 			   && structural_equality (bin_a->get_arg0 (),
+ 						   bin_b->get_arg0 ())
+ 			   && structural_equality (bin_a->get_arg1 (),
+ 						   bin_b->get_arg1 ()));
+       }
+       return tristate (tristate::TS_FALSE);
+     }
+ }
+ 
  /* Handle various constraints of the form:
       LHS: ((bool)INNER_LHS INNER_OP INNER_RHS))
       OP : == or !=
*************** tristate
*** 3289,3295 ****
  region_model::eval_condition (tree lhs,
  			      enum tree_code op,
  			      tree rhs,
! 			      region_model_context *ctxt)
  {
    /* For now, make no attempt to model constraints on floating-point
       values.  */
--- 3850,3856 ----
  region_model::eval_condition (tree lhs,
  			      enum tree_code op,
  			      tree rhs,
! 			      region_model_context *ctxt) const
  {
    /* For now, make no attempt to model constraints on floating-point
       values.  */
*************** region_model::get_representative_tree (c
*** 3422,3427 ****
--- 3983,4001 ----
    return fixup_tree_for_diagnostic (expr);
  }
  
+ tree
+ region_model::get_representative_tree (const region *reg) const
+ {
+   svalue_set visited;
+   tree expr = get_representative_path_var (reg, &visited).m_tree;
+ 
+   /* Strip off any top-level cast.  */
+   if (expr && TREE_CODE (expr) == NOP_EXPR)
+     expr = TREE_OPERAND (expr, 0);
+ 
+   return fixup_tree_for_diagnostic (expr);
+ }
+ 
  /* Implementation of region_model::get_representative_path_var.
  
     Attempt to return a path_var that represents REG, or return
*************** region_model::get_representative_path_va
*** 3445,3450 ****
--- 4019,4025 ----
      case RK_CODE:
      case RK_HEAP:
      case RK_STACK:
+     case RK_THREAD_LOCAL:
      case RK_ROOT:
         /* Regions that represent memory spaces are not expressible as trees.  */
        return path_var (NULL_TREE, 0);
*************** region_model::get_representative_path_va
*** 3563,3568 ****
--- 4138,4145 ----
  	return path_var (string_reg->get_string_cst (), 0);
        }
  
+     case RK_VAR_ARG:
+     case RK_ERRNO:
      case RK_UNKNOWN:
        return path_var (NULL_TREE, 0);
      }
*************** region_model::maybe_update_for_edge (con
*** 3668,3678 ****
        break;
  
      case SUPEREDGE_INTRAPROCEDURAL_CALL:
!       {
! 	const callgraph_superedge *cg_sedge
! 	  = as_a <const callgraph_superedge *> (&edge);
! 	update_for_call_summary (*cg_sedge, ctxt);
!       }
        break;
      }
  
--- 4245,4252 ----
        break;
  
      case SUPEREDGE_INTRAPROCEDURAL_CALL:
!       /* This is a no-op for call summaries; we should already
! 	 have handled the effect of the call summary at the call stmt.  */
        break;
      }
  
*************** region_model::update_for_return_superedg
*** 3770,3794 ****
    update_for_return_gcall (call_stmt, ctxt);
  }
  
! /* Update this region_model with a summary of the effect of calling
!    and returning from CG_SEDGE.
! 
!    TODO: Currently this is extremely simplistic: we merely set the
!    return value to "unknown".  A proper implementation would e.g. update
!    sm-state, and presumably be reworked to support multiple outcomes.  */
  
! void
! region_model::update_for_call_summary (const callgraph_superedge &cg_sedge,
! 				       region_model_context *ctxt)
  {
!   /* For now, set any return value to "unknown".  */
!   const gcall *call_stmt = cg_sedge.get_call_stmt ();
!   tree lhs = gimple_call_lhs (call_stmt);
!   if (lhs)
!     mark_region_as_unknown (get_lvalue (lhs, ctxt),
! 			    ctxt ? ctxt->get_uncertainty () : NULL);
  
!   // TODO: actually implement some kind of summary here
  }
  
  /* Given a true or false edge guarded by conditional statement COND_STMT,
--- 4344,4377 ----
    update_for_return_gcall (call_stmt, ctxt);
  }
  
! /* Attempt to to use R to replay SUMMARY into this object.
!    Return true if it is possible.  */
  
! bool
! region_model::replay_call_summary (call_summary_replay &r,
! 				   const region_model &summary)
  {
!   gcc_assert (summary.get_stack_depth () == 1);
  
!   m_store.replay_call_summary (r, summary.m_store);
! 
!   if (!m_constraints->replay_call_summary (r, *summary.m_constraints))
!     return false;
! 
!   for (auto kv : summary.m_dynamic_extents)
!     {
!       const region *summary_reg = kv.first;
!       const region *caller_reg = r.convert_region_from_summary (summary_reg);
!       if (!caller_reg)
! 	continue;
!       const svalue *summary_sval = kv.second;
!       const svalue *caller_sval = r.convert_svalue_from_summary (summary_sval);
!       if (!caller_sval)
! 	continue;
!       m_dynamic_extents.put (caller_reg, caller_sval);
!     }
! 
!   return true;
  }
  
  /* Given a true or false edge guarded by conditional statement COND_STMT,
*************** region_model::apply_constraints_for_gcon
*** 3819,3824 ****
--- 4402,4473 ----
    return add_constraint (lhs, op, rhs, ctxt, out);
  }
  
+ /* Return true iff SWITCH_STMT has a non-default label that contains
+    INT_CST.  */
+ 
+ static bool
+ has_nondefault_case_for_value_p (const gswitch *switch_stmt, tree int_cst)
+ {
+   /* We expect the initial label to be the default; skip it.  */
+   gcc_assert (CASE_LOW (gimple_switch_label (switch_stmt, 0)) == NULL);
+   unsigned min_idx = 1;
+   unsigned max_idx = gimple_switch_num_labels (switch_stmt) - 1;
+ 
+   /* Binary search: try to find the label containing INT_CST.
+      This requires the cases to be sorted by CASE_LOW (done by the
+      gimplifier).  */
+   while (max_idx >= min_idx)
+     {
+       unsigned case_idx = (min_idx + max_idx) / 2;
+       tree label =  gimple_switch_label (switch_stmt, case_idx);
+       tree low = CASE_LOW (label);
+       gcc_assert (low);
+       tree high = CASE_HIGH (label);
+       if (!high)
+ 	high = low;
+       if (tree_int_cst_compare (int_cst, low) < 0)
+ 	{
+ 	  /* INT_CST is below the range of this label.  */
+ 	  gcc_assert (case_idx > 0);
+ 	  max_idx = case_idx - 1;
+ 	}
+       else if (tree_int_cst_compare (int_cst, high) > 0)
+ 	{
+ 	  /* INT_CST is above the range of this case.  */
+ 	  min_idx = case_idx + 1;
+ 	}
+       else
+ 	/* This case contains INT_CST.  */
+ 	return true;
+     }
+   /* Not found.  */
+   return false;
+ }
+ 
+ /* Return true iff SWITCH_STMT (which must be on an enum value)
+    has nondefault cases handling all values in the enum.  */
+ 
+ static bool
+ has_nondefault_cases_for_all_enum_values_p (const gswitch *switch_stmt)
+ {
+   gcc_assert (switch_stmt);
+   tree type = TREE_TYPE (gimple_switch_index (switch_stmt));
+   gcc_assert (TREE_CODE (type) == ENUMERAL_TYPE);
+ 
+   for (tree enum_val_iter = TYPE_VALUES (type);
+        enum_val_iter;
+        enum_val_iter = TREE_CHAIN (enum_val_iter))
+     {
+       tree enum_val = TREE_VALUE (enum_val_iter);
+       gcc_assert (TREE_CODE (enum_val) == CONST_DECL);
+       gcc_assert (TREE_CODE (DECL_INITIAL (enum_val)) == INTEGER_CST);
+       if (!has_nondefault_case_for_value_p (switch_stmt,
+ 					    DECL_INITIAL (enum_val)))
+ 	return false;
+     }
+   return true;
+ }
+ 
  /* Given an EDGE guarded by SWITCH_STMT, determine appropriate constraints
     for the edge to be taken.
  
*************** region_model::apply_constraints_for_gswi
*** 3835,3848 ****
  					     region_model_context *ctxt,
  					     rejected_constraint **out)
  {
    bounded_ranges_manager *ranges_mgr = get_range_manager ();
    const bounded_ranges *all_cases_ranges
      = ranges_mgr->get_or_create_ranges_for_switch (&edge, switch_stmt);
-   tree index  = gimple_switch_index (switch_stmt);
-   const svalue *index_sval = get_rvalue (index, ctxt);
    bool sat = m_constraints->add_bounded_ranges (index_sval, all_cases_ranges);
    if (!sat && out)
      *out = new rejected_ranges_constraint (*this, index, all_cases_ranges);
    return sat;
  }
  
--- 4484,4525 ----
  					     region_model_context *ctxt,
  					     rejected_constraint **out)
  {
+   tree index  = gimple_switch_index (switch_stmt);
+   const svalue *index_sval = get_rvalue (index, ctxt);
+ 
+   /* If we're switching based on an enum type, assume that the user is only
+      working with values from the enum.  Hence if this is an
+      implicitly-created "default", assume it doesn't get followed.
+      This fixes numerous "uninitialized" false positives where we otherwise
+      consider jumping past the initialization cases.  */
+ 
+   if (/* Don't check during feasibility-checking (when ctxt is NULL).  */
+       ctxt
+       /* Must be an enum value.  */
+       && index_sval->get_type ()
+       && TREE_CODE (TREE_TYPE (index)) == ENUMERAL_TYPE
+       && TREE_CODE (index_sval->get_type ()) == ENUMERAL_TYPE
+       /* If we have a constant, then we can check it directly.  */
+       && index_sval->get_kind () != SK_CONSTANT
+       && edge.implicitly_created_default_p ()
+       && has_nondefault_cases_for_all_enum_values_p (switch_stmt)
+       /* Don't do this if there's a chance that the index is
+ 	 attacker-controlled.  */
+       && !ctxt->possibly_tainted_p (index_sval))
+     {
+       if (out)
+ 	*out = new rejected_default_case (*this);
+       return false;
+     }
+ 
    bounded_ranges_manager *ranges_mgr = get_range_manager ();
    const bounded_ranges *all_cases_ranges
      = ranges_mgr->get_or_create_ranges_for_switch (&edge, switch_stmt);
    bool sat = m_constraints->add_bounded_ranges (index_sval, all_cases_ranges);
    if (!sat && out)
      *out = new rejected_ranges_constraint (*this, index, all_cases_ranges);
+   if (sat && ctxt && !all_cases_ranges->empty_p ())
+     ctxt->on_bounded_ranges (*index_sval, *all_cases_ranges);
    return sat;
  }
  
*************** region_model::apply_constraints_for_exce
*** 3881,3891 ****
     PARAM has a defined but unknown initial value.
     Anything it points to has escaped, since the calling context "knows"
     the pointer, and thus calls to unknown functions could read/write into
!    the region.  */
  
  void
  region_model::on_top_level_param (tree param,
! 				   region_model_context *ctxt)
  {
    if (POINTER_TYPE_P (TREE_TYPE (param)))
      {
--- 4558,4570 ----
     PARAM has a defined but unknown initial value.
     Anything it points to has escaped, since the calling context "knows"
     the pointer, and thus calls to unknown functions could read/write into
!    the region.
!    If NONNULL is true, then assume that PARAM must be non-NULL.  */
  
  void
  region_model::on_top_level_param (tree param,
! 				  bool nonnull,
! 				  region_model_context *ctxt)
  {
    if (POINTER_TYPE_P (TREE_TYPE (param)))
      {
*************** region_model::on_top_level_param (tree p
*** 3894,3899 ****
--- 4573,4584 ----
  	= m_mgr->get_or_create_initial_value (param_reg);
        const region *pointee_reg = m_mgr->get_symbolic_region (init_ptr_sval);
        m_store.mark_as_escaped (pointee_reg);
+       if (nonnull)
+ 	{
+ 	  const svalue *null_ptr_sval
+ 	    = m_mgr->get_or_create_null_ptr (TREE_TYPE (param));
+ 	  add_constraint (init_ptr_sval, NE_EXPR, null_ptr_sval, ctxt);
+ 	}
      }
  }
  
*************** region_model::push_frame (function *fun,
*** 3931,3936 ****
--- 4616,4632 ----
  	  const svalue *arg_sval = (*arg_svals)[idx];
  	  set_value (parm_reg, arg_sval, ctxt);
  	}
+ 
+       /* Handle any variadic args.  */
+       unsigned va_arg_idx = 0;
+       for (; idx < arg_svals->length (); idx++, va_arg_idx++)
+ 	{
+ 	  const svalue *arg_sval = (*arg_svals)[idx];
+ 	  const region *var_arg_reg
+ 	    = m_mgr->get_var_arg_region (m_current_frame,
+ 					 va_arg_idx);
+ 	  set_value (var_arg_reg, arg_sval, ctxt);
+ 	}
      }
    else
      {
*************** region_model::push_frame (function *fun,
*** 3938,3951 ****
  	 have defined but unknown initial values.
  	 Anything they point to has escaped.  */
        tree fndecl = fun->decl;
        for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
  	   iter_parm = DECL_CHAIN (iter_parm))
  	{
  	  if (tree parm_default_ssa = ssa_default_def (fun, iter_parm))
! 	    on_top_level_param (parm_default_ssa, ctxt);
  	  else
! 	    on_top_level_param (iter_parm, ctxt);
  	}
      }
  
    return m_current_frame;
--- 4634,4660 ----
  	 have defined but unknown initial values.
  	 Anything they point to has escaped.  */
        tree fndecl = fun->decl;
+ 
+       /* Handle "__attribute__((nonnull))".   */
+       tree fntype = TREE_TYPE (fndecl);
+       bitmap nonnull_args = get_nonnull_args (fntype);
+ 
+       unsigned parm_idx = 0;
        for (tree iter_parm = DECL_ARGUMENTS (fndecl); iter_parm;
  	   iter_parm = DECL_CHAIN (iter_parm))
  	{
+ 	  bool non_null = (nonnull_args
+ 			   ? (bitmap_empty_p (nonnull_args)
+ 			      || bitmap_bit_p (nonnull_args, parm_idx))
+ 			   : false);
  	  if (tree parm_default_ssa = ssa_default_def (fun, iter_parm))
! 	    on_top_level_param (parm_default_ssa, non_null, ctxt);
  	  else
! 	    on_top_level_param (iter_parm, non_null, ctxt);
! 	  parm_idx++;
  	}
+ 
+       BITMAP_FREE (nonnull_args);
      }
  
    return m_current_frame;
*************** region_model::get_current_function () co
*** 3970,3975 ****
--- 4679,4688 ----
     If OUT_RESULT is non-null, copy any return value from the frame
     into *OUT_RESULT.
  
+    If EVAL_RETURN_SVALUE is false, then don't evaluate the return value.
+    This is for use when unwinding frames e.g. due to longjmp, to suppress
+    erroneously reporting uninitialized return values.
+ 
     Purge the frame region and all its descendent regions.
     Convert any pointers that point into such regions into
     POISON_KIND_POPPED_STACK svalues.  */
*************** region_model::get_current_function () co
*** 3977,3992 ****
  void
  region_model::pop_frame (tree result_lvalue,
  			 const svalue **out_result,
! 			 region_model_context *ctxt)
  {
    gcc_assert (m_current_frame);
  
-   /* Evaluate the result, within the callee frame.  */
    const frame_region *frame_reg = m_current_frame;
    tree fndecl = m_current_frame->get_function ()->decl;
    tree result = DECL_RESULT (fndecl);
    const svalue *retval = NULL;
!   if (result && TREE_TYPE (result) != void_type_node)
      {
        retval = get_rvalue (result, ctxt);
        if (out_result)
--- 4690,4713 ----
  void
  region_model::pop_frame (tree result_lvalue,
  			 const svalue **out_result,
! 			 region_model_context *ctxt,
! 			 bool eval_return_svalue)
  {
    gcc_assert (m_current_frame);
  
    const frame_region *frame_reg = m_current_frame;
+ 
+   /* Notify state machines.  */
+   if (ctxt)
+     ctxt->on_pop_frame (frame_reg);
+ 
+   /* Evaluate the result, within the callee frame.  */
    tree fndecl = m_current_frame->get_function ()->decl;
    tree result = DECL_RESULT (fndecl);
    const svalue *retval = NULL;
!   if (result
!       && TREE_TYPE (result) != void_type_node
!       && eval_return_svalue)
      {
        retval = get_rvalue (result, ctxt);
        if (out_result)
*************** region_model::pop_frame (tree result_lva
*** 3998,4003 ****
--- 4719,4726 ----
  
    if (result_lvalue && retval)
      {
+       gcc_assert (eval_return_svalue);
+ 
        /* Compute result_dst_reg using RESULT_LVALUE *after* popping
  	 the frame, but before poisoning pointers into the old frame.  */
        const region *result_dst_reg = get_lvalue (result_lvalue, ctxt);
*************** region_model::append_regions_cb (const r
*** 4223,4241 ****
      cb_data->out->safe_push (decl_reg);
  }
  
! /* Return a new region describing a heap-allocated block of memory.
!    Use CTXT to complain about tainted sizes.  */
  
  const region *
! region_model::create_region_for_heap_alloc (const svalue *size_in_bytes,
! 					    region_model_context *ctxt)
  {
!   const region *reg = m_mgr->create_region_for_heap_alloc ();
!   if (compat_types_p (size_in_bytes->get_type (), size_type_node))
!     set_dynamic_extents (reg, size_in_bytes, ctxt);
    return reg;
  }
  
  /* Return a new region describing a block of memory allocated within the
     current frame.
     Use CTXT to complain about tainted sizes.  */
--- 4946,5127 ----
      cb_data->out->safe_push (decl_reg);
  }
  
! 
! /* Abstract class for diagnostics related to the use of
!    floating-point arithmetic where precision is needed.  */
! 
! class imprecise_floating_point_arithmetic : public pending_diagnostic
! {
! public:
!   int get_controlling_option () const final override
!   {
!     return OPT_Wanalyzer_imprecise_fp_arithmetic;
!   }
! };
! 
! /* Concrete diagnostic to complain about uses of floating-point arithmetic
!    in the size argument of malloc etc.  */
! 
! class float_as_size_arg : public imprecise_floating_point_arithmetic
! {
! public:
!   float_as_size_arg (tree arg) : m_arg (arg)
!   {}
! 
!   const char *get_kind () const final override
!   {
!     return "float_as_size_arg_diagnostic";
!   }
! 
!   bool subclass_equal_p (const pending_diagnostic &other) const final override
!   {
!     return same_tree_p (m_arg, ((const float_as_size_arg &) other).m_arg);
!   }
! 
!   bool emit (rich_location *rich_loc) final override
!   {
!     diagnostic_metadata m;
!     bool warned = warning_meta (rich_loc, m, get_controlling_option (),
! 				"use of floating-point arithmetic here might"
! 				" yield unexpected results");
!     if (warned)
!       inform (rich_loc->get_loc (), "only use operands of an integer type"
! 				    " inside the size argument");
!     return warned;
!   }
! 
!   label_text describe_final_event (const evdesc::final_event &ev) final
!   override
!   {
!     if (m_arg)
!       return ev.formatted_print ("operand %qE is of type %qT",
! 				 m_arg, TREE_TYPE (m_arg));
!     return ev.formatted_print ("at least one operand of the size argument is"
! 			       " of a floating-point type");
!   }
! 
! private:
!   tree m_arg;
! };
! 
! /* Visitor to find uses of floating-point variables/constants in an svalue.  */
! 
! class contains_floating_point_visitor : public visitor
! {
! public:
!   contains_floating_point_visitor (const svalue *root_sval) : m_result (NULL)
!   {
!     root_sval->accept (this);
!   }
! 
!   const svalue *get_svalue_to_report ()
!   {
!     return m_result;
!   }
! 
!   void visit_constant_svalue (const constant_svalue *sval) final override
!   {
!     /* At the point the analyzer runs, constant integer operands in a floating
!        point expression are already implictly converted to floating-points.
!        Thus, we do prefer to report non-constants such that the diagnostic
!        always reports a floating-point operand.  */
!     tree type = sval->get_type ();
!     if (type && FLOAT_TYPE_P (type) && !m_result)
!       m_result = sval;
!   }
! 
!   void visit_conjured_svalue (const conjured_svalue *sval) final override
!   {
!     tree type = sval->get_type ();
!     if (type && FLOAT_TYPE_P (type))
!       m_result = sval;
!   }
! 
!   void visit_initial_svalue (const initial_svalue *sval) final override
!   {
!     tree type = sval->get_type ();
!     if (type && FLOAT_TYPE_P (type))
!       m_result = sval;
!   }
! 
! private:
!   /* Non-null if at least one floating-point operand was found.  */
!   const svalue *m_result;
! };
! 
! /* May complain about uses of floating-point operands in SIZE_IN_BYTES.  */
! 
! void
! region_model::check_dynamic_size_for_floats (const svalue *size_in_bytes,
! 					     region_model_context *ctxt) const
! {
!   gcc_assert (ctxt);
! 
!   contains_floating_point_visitor v (size_in_bytes);
!   if (const svalue *float_sval = v.get_svalue_to_report ())
! 	{
! 	  tree diag_arg = get_representative_tree (float_sval);
! 	  ctxt->warn (make_unique<float_as_size_arg> (diag_arg));
! 	}
! }
! 
! /* Return a region describing a heap-allocated block of memory.
!    Use CTXT to complain about tainted sizes.
! 
!    Reuse an existing heap_allocated_region if it's not being referenced by
!    this region_model; otherwise create a new one.  */
  
  const region *
! region_model::get_or_create_region_for_heap_alloc (const svalue *size_in_bytes,
! 						   region_model_context *ctxt)
  {
!   /* Determine which regions are referenced in this region_model, so that
!      we can reuse an existing heap_allocated_region if it's not in use on
!      this path.  */
!   auto_bitmap base_regs_in_use;
!   get_referenced_base_regions (base_regs_in_use);
! 
!   /* Don't reuse regions that are marked as TOUCHED.  */
!   for (store::cluster_map_t::iterator iter = m_store.begin ();
!        iter != m_store.end (); ++iter)
!     if ((*iter).second->touched_p ())
!       {
! 	const region *base_reg = (*iter).first;
! 	bitmap_set_bit (base_regs_in_use, base_reg->get_id ());
!       }
! 
!   const region *reg
!     = m_mgr->get_or_create_region_for_heap_alloc (base_regs_in_use);
!   if (size_in_bytes)
!     if (compat_types_p (size_in_bytes->get_type (), size_type_node))
!       set_dynamic_extents (reg, size_in_bytes, ctxt);
    return reg;
  }
  
+ /* Populate OUT_IDS with the set of IDs of those base regions which are
+    reachable in this region_model.  */
+ 
+ void
+ region_model::get_referenced_base_regions (auto_bitmap &out_ids) const
+ {
+   reachable_regions reachable_regs (const_cast<region_model *> (this));
+   m_store.for_each_cluster (reachable_regions::init_cluster_cb,
+ 			    &reachable_regs);
+   /* Get regions for locals that have explicitly bound values.  */
+   for (store::cluster_map_t::iterator iter = m_store.begin ();
+        iter != m_store.end (); ++iter)
+     {
+       const region *base_reg = (*iter).first;
+       if (const region *parent = base_reg->get_parent_region ())
+ 	if (parent->get_kind () == RK_FRAME)
+ 	  reachable_regs.add (base_reg, false);
+     }
+ 
+   bitmap_clear (out_ids);
+   for (auto iter_reg : reachable_regs)
+     bitmap_set_bit (out_ids, iter_reg->get_id ());
+ }
+ 
  /* Return a new region describing a block of memory allocated within the
     current frame.
     Use CTXT to complain about tainted sizes.  */
*************** region_model::set_dynamic_extents (const
*** 4260,4267 ****
  {
    assert_compat_types (size_in_bytes->get_type (), size_type_node);
    if (ctxt)
!     check_dynamic_size_for_taint (reg->get_memory_space (), size_in_bytes,
! 				  ctxt);
    m_dynamic_extents.put (reg, size_in_bytes);
  }
  
--- 5146,5156 ----
  {
    assert_compat_types (size_in_bytes->get_type (), size_type_node);
    if (ctxt)
!     {
!       check_dynamic_size_for_taint (reg->get_memory_space (), size_in_bytes,
! 				    ctxt);
!       check_dynamic_size_for_floats (size_in_bytes, ctxt);
!     }
    m_dynamic_extents.put (reg, size_in_bytes);
  }
  
*************** region_model::unset_dynamic_extents (con
*** 4284,4301 ****
    m_dynamic_extents.remove (reg);
  }
  
  /* class noop_region_model_context : public region_model_context.  */
  
  void
! noop_region_model_context::add_note (pending_note *pn)
  {
-   delete pn;
  }
  
  void
! noop_region_model_context::bifurcate (custom_edge_info *info)
  {
-   delete info;
  }
  
  void
--- 5173,5765 ----
    m_dynamic_extents.remove (reg);
  }
  
+ /* Information of the layout of a RECORD_TYPE, capturing it as a vector
+    of items, where each item is either a field or padding.  */
+ 
+ class record_layout
+ {
+ public:
+   /* An item within a record; either a field, or padding after a field.  */
+   struct item
+   {
+   public:
+     item (const bit_range &br,
+ 	  tree field,
+ 	  bool is_padding)
+     : m_bit_range (br),
+       m_field (field),
+       m_is_padding (is_padding)
+     {
+     }
+ 
+     bit_offset_t get_start_bit_offset () const
+     {
+       return m_bit_range.get_start_bit_offset ();
+     }
+     bit_offset_t get_next_bit_offset () const
+     {
+       return m_bit_range.get_next_bit_offset ();
+     }
+ 
+     bool contains_p (bit_offset_t offset) const
+     {
+       return m_bit_range.contains_p (offset);
+     }
+ 
+     void dump_to_pp (pretty_printer *pp) const
+     {
+       if (m_is_padding)
+ 	pp_printf (pp, "padding after %qD", m_field);
+       else
+ 	pp_printf (pp, "%qD", m_field);
+       pp_string (pp, ", ");
+       m_bit_range.dump_to_pp (pp);
+     }
+ 
+     bit_range m_bit_range;
+     tree m_field;
+     bool m_is_padding;
+   };
+ 
+   record_layout (tree record_type)
+   {
+     gcc_assert (TREE_CODE (record_type) == RECORD_TYPE);
+ 
+     for (tree iter = TYPE_FIELDS (record_type); iter != NULL_TREE;
+ 	 iter = DECL_CHAIN (iter))
+       {
+ 	if (TREE_CODE (iter) == FIELD_DECL)
+ 	  {
+ 	    int iter_field_offset = int_bit_position (iter);
+ 	    bit_size_t size_in_bits;
+ 	    if (!int_size_in_bits (TREE_TYPE (iter), &size_in_bits))
+ 	      size_in_bits = 0;
+ 
+ 	    maybe_pad_to (iter_field_offset);
+ 
+ 	    /* Add field.  */
+ 	    m_items.safe_push (item (bit_range (iter_field_offset,
+ 						size_in_bits),
+ 				     iter, false));
+ 	  }
+       }
+ 
+     /* Add any trailing padding.  */
+     bit_size_t size_in_bits;
+     if (int_size_in_bits (record_type, &size_in_bits))
+       maybe_pad_to (size_in_bits);
+   }
+ 
+   void dump_to_pp (pretty_printer *pp) const
+   {
+     unsigned i;
+     item *it;
+     FOR_EACH_VEC_ELT (m_items, i, it)
+       {
+ 	it->dump_to_pp (pp);
+ 	pp_newline (pp);
+       }
+   }
+ 
+   DEBUG_FUNCTION void dump () const
+   {
+     pretty_printer pp;
+     pp_format_decoder (&pp) = default_tree_printer;
+     pp.buffer->stream = stderr;
+     dump_to_pp (&pp);
+     pp_flush (&pp);
+   }
+ 
+   const record_layout::item *get_item_at (bit_offset_t offset) const
+   {
+     unsigned i;
+     item *it;
+     FOR_EACH_VEC_ELT (m_items, i, it)
+       if (it->contains_p (offset))
+ 	return it;
+     return NULL;
+   }
+ 
+ private:
+   /* Subroutine of ctor.  Add padding item to NEXT_OFFSET if necessary.  */
+ 
+   void maybe_pad_to (bit_offset_t next_offset)
+   {
+     if (m_items.length () > 0)
+       {
+ 	const item &last_item = m_items[m_items.length () - 1];
+ 	bit_offset_t offset_after_last_item
+ 	  = last_item.get_next_bit_offset ();
+ 	if (next_offset > offset_after_last_item)
+ 	  {
+ 	    bit_size_t padding_size
+ 	      = next_offset - offset_after_last_item;
+ 	    m_items.safe_push (item (bit_range (offset_after_last_item,
+ 						padding_size),
+ 				     last_item.m_field, true));
+ 	  }
+       }
+   }
+ 
+   auto_vec<item> m_items;
+ };
+ 
+ /* A subclass of pending_diagnostic for complaining about uninitialized data
+    being copied across a trust boundary to an untrusted output
+    (e.g. copy_to_user infoleaks in the Linux kernel).  */
+ 
+ class exposure_through_uninit_copy
+   : public pending_diagnostic_subclass<exposure_through_uninit_copy>
+ {
+ public:
+   exposure_through_uninit_copy (const region *src_region,
+ 				const region *dest_region,
+ 				const svalue *copied_sval)
+   : m_src_region (src_region),
+     m_dest_region (dest_region),
+     m_copied_sval (copied_sval)
+   {
+     gcc_assert (m_copied_sval->get_kind () == SK_POISONED
+ 		|| m_copied_sval->get_kind () == SK_COMPOUND);
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "exposure_through_uninit_copy";
+   }
+ 
+   bool operator== (const exposure_through_uninit_copy &other) const
+   {
+     return (m_src_region == other.m_src_region
+ 	    && m_dest_region == other.m_dest_region
+ 	    && m_copied_sval == other.m_copied_sval);
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_exposure_through_uninit_copy;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     /* CWE-200: Exposure of Sensitive Information to an Unauthorized Actor.  */
+     m.add_cwe (200);
+     enum memory_space mem_space = get_src_memory_space ();
+     bool warned;
+     switch (mem_space)
+       {
+       default:
+ 	warned = warning_meta
+ 	  (rich_loc, m, get_controlling_option (),
+ 	   "potential exposure of sensitive information"
+ 	   " by copying uninitialized data across trust boundary");
+ 	break;
+       case MEMSPACE_STACK:
+ 	warned = warning_meta
+ 	  (rich_loc, m, get_controlling_option (),
+ 	   "potential exposure of sensitive information"
+ 	   " by copying uninitialized data from stack across trust boundary");
+ 	break;
+       case MEMSPACE_HEAP:
+ 	warned = warning_meta
+ 	  (rich_loc, m, get_controlling_option (),
+ 	   "potential exposure of sensitive information"
+ 	   " by copying uninitialized data from heap across trust boundary");
+ 	break;
+       }
+     if (warned)
+       {
+ 	location_t loc = rich_loc->get_loc ();
+ 	inform_number_of_uninit_bits (loc);
+ 	complain_about_uninit_ranges (loc);
+ 
+ 	if (mem_space == MEMSPACE_STACK)
+ 	  maybe_emit_fixit_hint ();
+       }
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &) final override
+   {
+     enum memory_space mem_space = get_src_memory_space ();
+     switch (mem_space)
+       {
+       default:
+ 	return label_text::borrow ("uninitialized data copied here");
+ 
+       case MEMSPACE_STACK:
+ 	return label_text::borrow ("uninitialized data copied from stack here");
+ 
+       case MEMSPACE_HEAP:
+ 	return label_text::borrow ("uninitialized data copied from heap here");
+       }
+   }
+ 
+   void mark_interesting_stuff (interesting_t *interest) final override
+   {
+     if (m_src_region)
+       interest->add_region_creation (m_src_region);
+   }
+ 
+ private:
+   enum memory_space get_src_memory_space () const
+   {
+     return m_src_region ? m_src_region->get_memory_space () : MEMSPACE_UNKNOWN;
+   }
+ 
+   bit_size_t calc_num_uninit_bits () const
+   {
+     switch (m_copied_sval->get_kind ())
+       {
+       default:
+ 	gcc_unreachable ();
+ 	break;
+       case SK_POISONED:
+ 	{
+ 	  const poisoned_svalue *poisoned_sval
+ 	    = as_a <const poisoned_svalue *> (m_copied_sval);
+ 	  gcc_assert (poisoned_sval->get_poison_kind () == POISON_KIND_UNINIT);
+ 
+ 	  /* Give up if don't have type information.  */
+ 	  if (m_copied_sval->get_type () == NULL_TREE)
+ 	    return 0;
+ 
+ 	  bit_size_t size_in_bits;
+ 	  if (int_size_in_bits (m_copied_sval->get_type (), &size_in_bits))
+ 	    return size_in_bits;
+ 
+ 	  /* Give up if we can't get the size of the type.  */
+ 	  return 0;
+ 	}
+ 	break;
+       case SK_COMPOUND:
+ 	{
+ 	  const compound_svalue *compound_sval
+ 	    = as_a <const compound_svalue *> (m_copied_sval);
+ 	  bit_size_t result = 0;
+ 	  /* Find keys for uninit svals.  */
+ 	  for (auto iter : *compound_sval)
+ 	    {
+ 	      const svalue *sval = iter.second;
+ 	      if (const poisoned_svalue *psval
+ 		  = sval->dyn_cast_poisoned_svalue ())
+ 		if (psval->get_poison_kind () == POISON_KIND_UNINIT)
+ 		  {
+ 		    const binding_key *key = iter.first;
+ 		    const concrete_binding *ckey
+ 		      = key->dyn_cast_concrete_binding ();
+ 		    gcc_assert (ckey);
+ 		    result += ckey->get_size_in_bits ();
+ 		  }
+ 	    }
+ 	  return result;
+ 	}
+       }
+   }
+ 
+   void inform_number_of_uninit_bits (location_t loc) const
+   {
+     bit_size_t num_uninit_bits = calc_num_uninit_bits ();
+     if (num_uninit_bits <= 0)
+       return;
+     if (num_uninit_bits % BITS_PER_UNIT == 0)
+       {
+ 	/* Express in bytes.  */
+ 	byte_size_t num_uninit_bytes = num_uninit_bits / BITS_PER_UNIT;
+ 	if (num_uninit_bytes == 1)
+ 	  inform (loc, "1 byte is uninitialized");
+ 	else
+ 	  inform (loc,
+ 		  "%wu bytes are uninitialized", num_uninit_bytes.to_uhwi ());
+       }
+     else
+       {
+ 	/* Express in bits.  */
+ 	if (num_uninit_bits == 1)
+ 	  inform (loc, "1 bit is uninitialized");
+ 	else
+ 	  inform (loc,
+ 		  "%wu bits are uninitialized", num_uninit_bits.to_uhwi ());
+       }
+   }
+ 
+   void complain_about_uninit_ranges (location_t loc) const
+   {
+     if (const compound_svalue *compound_sval
+ 	= m_copied_sval->dyn_cast_compound_svalue ())
+       {
+ 	/* Find keys for uninit svals.  */
+ 	auto_vec<const concrete_binding *> uninit_keys;
+ 	for (auto iter : *compound_sval)
+ 	  {
+ 	    const svalue *sval = iter.second;
+ 	    if (const poisoned_svalue *psval
+ 		= sval->dyn_cast_poisoned_svalue ())
+ 	      if (psval->get_poison_kind () == POISON_KIND_UNINIT)
+ 		{
+ 		  const binding_key *key = iter.first;
+ 		  const concrete_binding *ckey
+ 		    = key->dyn_cast_concrete_binding ();
+ 		  gcc_assert (ckey);
+ 		  uninit_keys.safe_push (ckey);
+ 		}
+ 	  }
+ 	/* Complain about them in sorted order.  */
+ 	uninit_keys.qsort (concrete_binding::cmp_ptr_ptr);
+ 
+ 	std::unique_ptr<record_layout> layout;
+ 
+ 	tree type = m_copied_sval->get_type ();
+ 	if (type && TREE_CODE (type) == RECORD_TYPE)
+ 	  {
+ 	    // (std::make_unique is C++14)
+ 	    layout = std::unique_ptr<record_layout> (new record_layout (type));
+ 
+ 	    if (0)
+ 	      layout->dump ();
+ 	  }
+ 
+ 	unsigned i;
+ 	const concrete_binding *ckey;
+ 	FOR_EACH_VEC_ELT (uninit_keys, i, ckey)
+ 	  {
+ 	    bit_offset_t start_bit = ckey->get_start_bit_offset ();
+ 	    bit_offset_t next_bit = ckey->get_next_bit_offset ();
+ 	    complain_about_uninit_range (loc, start_bit, next_bit,
+ 					 layout.get ());
+ 	  }
+       }
+   }
+ 
+   void complain_about_uninit_range (location_t loc,
+ 				    bit_offset_t start_bit,
+ 				    bit_offset_t next_bit,
+ 				    const record_layout *layout) const
+   {
+     if (layout)
+       {
+ 	while (start_bit < next_bit)
+ 	  {
+ 	    if (const record_layout::item *item
+ 		  = layout->get_item_at (start_bit))
+ 	      {
+ 		gcc_assert (start_bit >= item->get_start_bit_offset ());
+ 		gcc_assert (start_bit < item->get_next_bit_offset ());
+ 		if (item->get_start_bit_offset () == start_bit
+ 		    && item->get_next_bit_offset () <= next_bit)
+ 		  complain_about_fully_uninit_item (*item);
+ 		else
+ 		  complain_about_partially_uninit_item (*item);
+ 		start_bit = item->get_next_bit_offset ();
+ 		continue;
+ 	      }
+ 	    else
+ 	      break;
+ 	  }
+       }
+ 
+     if (start_bit >= next_bit)
+       return;
+ 
+     if (start_bit % 8 == 0 && next_bit % 8 == 0)
+       {
+ 	/* Express in bytes.  */
+ 	byte_offset_t start_byte = start_bit / 8;
+ 	byte_offset_t last_byte = (next_bit / 8) - 1;
+ 	if (last_byte == start_byte)
+ 	  inform (loc,
+ 		  "byte %wu is uninitialized",
+ 		  start_byte.to_uhwi ());
+ 	else
+ 	  inform (loc,
+ 		  "bytes %wu - %wu are uninitialized",
+ 		  start_byte.to_uhwi (),
+ 		  last_byte.to_uhwi ());
+       }
+     else
+       {
+ 	/* Express in bits.  */
+ 	bit_offset_t last_bit = next_bit - 1;
+ 	if (last_bit == start_bit)
+ 	  inform (loc,
+ 		  "bit %wu is uninitialized",
+ 		  start_bit.to_uhwi ());
+ 	else
+ 	  inform (loc,
+ 		  "bits %wu - %wu are uninitialized",
+ 		  start_bit.to_uhwi (),
+ 		  last_bit.to_uhwi ());
+       }
+   }
+ 
+   static void
+   complain_about_fully_uninit_item (const record_layout::item &item)
+   {
+     tree field = item.m_field;
+     bit_size_t num_bits = item.m_bit_range.m_size_in_bits;
+     if (item.m_is_padding)
+       {
+ 	if (num_bits % 8 == 0)
+ 	  {
+ 	    /* Express in bytes.  */
+ 	    byte_size_t num_bytes = num_bits / BITS_PER_UNIT;
+ 	    if (num_bytes == 1)
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "padding after field %qD is uninitialized (1 byte)",
+ 		      field);
+ 	    else
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "padding after field %qD is uninitialized (%wu bytes)",
+ 		      field, num_bytes.to_uhwi ());
+ 	  }
+ 	else
+ 	  {
+ 	    /* Express in bits.  */
+ 	    if (num_bits == 1)
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "padding after field %qD is uninitialized (1 bit)",
+ 		      field);
+ 	    else
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "padding after field %qD is uninitialized (%wu bits)",
+ 		      field, num_bits.to_uhwi ());
+ 	  }
+       }
+     else
+       {
+ 	if (num_bits % 8 == 0)
+ 	  {
+ 	    /* Express in bytes.  */
+ 	    byte_size_t num_bytes = num_bits / BITS_PER_UNIT;
+ 	    if (num_bytes == 1)
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "field %qD is uninitialized (1 byte)", field);
+ 	    else
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "field %qD is uninitialized (%wu bytes)",
+ 		      field, num_bytes.to_uhwi ());
+ 	  }
+ 	else
+ 	  {
+ 	    /* Express in bits.  */
+ 	    if (num_bits == 1)
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "field %qD is uninitialized (1 bit)", field);
+ 	    else
+ 	      inform (DECL_SOURCE_LOCATION (field),
+ 		      "field %qD is uninitialized (%wu bits)",
+ 		      field, num_bits.to_uhwi ());
+ 	  }
+       }
+   }
+ 
+   static void
+   complain_about_partially_uninit_item (const record_layout::item &item)
+   {
+     tree field = item.m_field;
+     if (item.m_is_padding)
+       inform (DECL_SOURCE_LOCATION (field),
+ 	      "padding after field %qD is partially uninitialized",
+ 	      field);
+     else
+       inform (DECL_SOURCE_LOCATION (field),
+ 	      "field %qD is partially uninitialized",
+ 	      field);
+     /* TODO: ideally we'd describe what parts are uninitialized.  */
+   }
+ 
+   void maybe_emit_fixit_hint () const
+   {
+     if (tree decl = m_src_region->maybe_get_decl ())
+       {
+ 	gcc_rich_location hint_richloc (DECL_SOURCE_LOCATION (decl));
+ 	hint_richloc.add_fixit_insert_after (" = {0}");
+ 	inform (&hint_richloc,
+ 		"suggest forcing zero-initialization by"
+ 		" providing a %<{0}%> initializer");
+       }
+   }
+ 
+ private:
+   const region *m_src_region;
+   const region *m_dest_region;
+   const svalue *m_copied_sval;
+ };
+ 
+ /* Return true if any part of SVAL is uninitialized.  */
+ 
+ static bool
+ contains_uninit_p (const svalue *sval)
+ {
+   struct uninit_finder : public visitor
+   {
+   public:
+     uninit_finder () : m_found_uninit (false) {}
+     void visit_poisoned_svalue (const poisoned_svalue *sval)
+     {
+       if (sval->get_poison_kind () == POISON_KIND_UNINIT)
+ 	m_found_uninit = true;
+     }
+     bool m_found_uninit;
+   };
+ 
+   uninit_finder v;
+   sval->accept (&v);
+ 
+   return v.m_found_uninit;
+ }
+ 
+ /* Function for use by plugins when simulating writing data through a
+    pointer to an "untrusted" region DST_REG (and thus crossing a security
+    boundary), such as copying data to user space in an OS kernel.
+ 
+    Check that COPIED_SVAL is fully initialized.  If not, complain about
+    an infoleak to CTXT.
+ 
+    SRC_REG can be NULL; if non-NULL it is used as a hint in the diagnostic
+    as to where COPIED_SVAL came from.  */
+ 
+ void
+ region_model::maybe_complain_about_infoleak (const region *dst_reg,
+ 					     const svalue *copied_sval,
+ 					     const region *src_reg,
+ 					     region_model_context *ctxt)
+ {
+   /* Check for exposure.  */
+   if (contains_uninit_p (copied_sval))
+     ctxt->warn (make_unique<exposure_through_uninit_copy> (src_reg,
+ 							   dst_reg,
+ 							   copied_sval));
+ }
+ 
+ /* Set errno to a positive symbolic int, as if some error has occurred.  */
+ 
+ void
+ region_model::set_errno (const call_details &cd)
+ {
+   const region *errno_reg = m_mgr->get_errno_region ();
+   conjured_purge p (this, cd.get_ctxt ());
+   const svalue *new_errno_sval
+     = m_mgr->get_or_create_conjured_svalue (integer_type_node,
+ 					    cd.get_call_stmt (),
+ 					    errno_reg, p);
+   const svalue *zero
+     = m_mgr->get_or_create_int_cst (integer_type_node, 0);
+   add_constraint (new_errno_sval, GT_EXPR, zero, cd.get_ctxt ());
+   set_value (errno_reg, new_errno_sval, cd.get_ctxt ());
+ }
+ 
  /* class noop_region_model_context : public region_model_context.  */
  
  void
! noop_region_model_context::add_note (std::unique_ptr<pending_note>)
  {
  }
  
  void
! noop_region_model_context::bifurcate (std::unique_ptr<custom_edge_info>)
  {
  }
  
  void
*************** rejected_op_constraint::dump_to_pp (pret
*** 4394,4399 ****
--- 5858,5871 ----
    rhs_sval->dump_to_pp (pp, true);
  }
  
+ /* class rejected_default_case : public rejected_constraint.  */
+ 
+ void
+ rejected_default_case::dump_to_pp (pretty_printer *pp) const
+ {
+   pp_string (pp, "implicit default for enum");
+ }
+ 
  /* class rejected_ranges_constraint : public rejected_constraint.  */
  
  void
*************** test_struct ()
*** 4643,4649 ****
    /* Verify get_offset for "c.x".  */
    {
      const region *c_x_reg = model.get_lvalue (c_x, NULL);
!     region_offset offset = c_x_reg->get_offset ();
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (c, NULL));
      ASSERT_EQ (offset.get_bit_offset (), 0);
    }
--- 6115,6121 ----
    /* Verify get_offset for "c.x".  */
    {
      const region *c_x_reg = model.get_lvalue (c_x, NULL);
!     region_offset offset = c_x_reg->get_offset (&mgr);
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (c, NULL));
      ASSERT_EQ (offset.get_bit_offset (), 0);
    }
*************** test_struct ()
*** 4651,4657 ****
    /* Verify get_offset for "c.y".  */
    {
      const region *c_y_reg = model.get_lvalue (c_y, NULL);
!     region_offset offset = c_y_reg->get_offset ();
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (c, NULL));
      ASSERT_EQ (offset.get_bit_offset (), INT_TYPE_SIZE);
    }
--- 6123,6129 ----
    /* Verify get_offset for "c.y".  */
    {
      const region *c_y_reg = model.get_lvalue (c_y, NULL);
!     region_offset offset = c_y_reg->get_offset (&mgr);
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (c, NULL));
      ASSERT_EQ (offset.get_bit_offset (), INT_TYPE_SIZE);
    }
*************** test_sub_svalue_folding ()
*** 5058,5063 ****
--- 6530,6586 ----
    ASSERT_EQ (sub->get_type (), TREE_TYPE (ct.m_x_field));
  }
  
+ /* Get BIT within VAL as a symbolic value within MGR.  */
+ 
+ static const svalue *
+ get_bit (region_model_manager *mgr,
+ 	 bit_offset_t bit,
+ 	 unsigned HOST_WIDE_INT val)
+ {
+   const svalue *inner_svalue
+     = mgr->get_or_create_int_cst (unsigned_type_node, val);
+   return mgr->get_or_create_bits_within (boolean_type_node,
+ 					 bit_range (bit, 1),
+ 					 inner_svalue);
+ }
+ 
+ /* Verify that bits_within_svalues are folded as expected.  */
+ 
+ static void
+ test_bits_within_svalue_folding ()
+ {
+   region_model_manager mgr;
+ 
+   const svalue *zero = mgr.get_or_create_int_cst (boolean_type_node, 0);
+   const svalue *one = mgr.get_or_create_int_cst (boolean_type_node, 1);
+ 
+   {
+     const unsigned val = 0x0000;
+     for (unsigned bit = 0; bit < 16; bit++)
+       ASSERT_EQ (get_bit (&mgr, bit, val), zero);
+   }
+ 
+   {
+     const unsigned val = 0x0001;
+     ASSERT_EQ (get_bit (&mgr, 0, val), one);
+     for (unsigned bit = 1; bit < 16; bit++)
+       ASSERT_EQ (get_bit (&mgr, bit, val), zero);
+   }
+ 
+   {
+     const unsigned val = 0x8000;
+     for (unsigned bit = 0; bit < 15; bit++)
+       ASSERT_EQ (get_bit (&mgr, bit, val), zero);
+     ASSERT_EQ (get_bit (&mgr, 15, val), one);
+   }
+ 
+   {
+     const unsigned val = 0xFFFF;
+     for (unsigned bit = 0; bit < 16; bit++)
+       ASSERT_EQ (get_bit (&mgr, bit, val), one);
+   }
+ }
+ 
  /* Test that region::descendent_of_p works as expected.  */
  
  static void
*************** assert_region_models_merge (tree expr, t
*** 5477,5485 ****
  			     region_model *out_merged_model,
  			     const svalue **out_merged_svalue)
  {
-   program_point point (program_point::origin ());
-   test_region_model_context ctxt;
    region_model_manager *mgr = out_merged_model->get_manager ();
    region_model model0 (mgr);
    region_model model1 (mgr);
    if (val_a)
--- 7000,7008 ----
  			     region_model *out_merged_model,
  			     const svalue **out_merged_svalue)
  {
    region_model_manager *mgr = out_merged_model->get_manager ();
+   program_point point (program_point::origin (*mgr));
+   test_region_model_context ctxt;
    region_model model0 (mgr);
    region_model model1 (mgr);
    if (val_a)
*************** test_state_merging ()
*** 5528,5535 ****
  		       ptr_type_node);
    DECL_CONTEXT (q) = test_fndecl;
  
-   program_point point (program_point::origin ());
    region_model_manager mgr;
  
    {
      region_model model0 (&mgr);
--- 7051,7058 ----
  		       ptr_type_node);
    DECL_CONTEXT (q) = test_fndecl;
  
    region_model_manager mgr;
+   program_point point (program_point::origin (mgr));
  
    {
      region_model model0 (&mgr);
*************** test_state_merging ()
*** 5704,5710 ****
      tree size = build_int_cst (size_type_node, 1024);
      const svalue *size_sval = mgr.get_or_create_constant_svalue (size);
      const region *new_reg
!       = model0.create_region_for_heap_alloc (size_sval, &ctxt);
      const svalue *ptr_sval = mgr.get_ptr_svalue (ptr_type_node, new_reg);
      model0.set_value (model0.get_lvalue (p, &ctxt),
  		      ptr_sval, &ctxt);
--- 7227,7233 ----
      tree size = build_int_cst (size_type_node, 1024);
      const svalue *size_sval = mgr.get_or_create_constant_svalue (size);
      const region *new_reg
!       = model0.get_or_create_region_for_heap_alloc (size_sval, &ctxt);
      const svalue *ptr_sval = mgr.get_ptr_svalue (ptr_type_node, new_reg);
      model0.set_value (model0.get_lvalue (p, &ctxt),
  		      ptr_sval, &ctxt);
*************** test_constraint_merging ()
*** 5869,5875 ****
  
    /* They should be mergeable; the merged constraints should
       be: (0 <= x < n).  */
!   program_point point (program_point::origin ());
    region_model merged (&mgr);
    ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
  
--- 7392,7398 ----
  
    /* They should be mergeable; the merged constraints should
       be: (0 <= x < n).  */
!   program_point point (program_point::origin (mgr));
    region_model merged (&mgr);
    ASSERT_TRUE (model0.can_merge_with_p (model1, point, &merged));
  
*************** test_constraint_merging ()
*** 5890,5901 ****
  static void
  test_widening_constraints ()
  {
!   program_point point (program_point::origin ());
    tree int_0 = build_int_cst (integer_type_node, 0);
    tree int_m1 = build_int_cst (integer_type_node, -1);
    tree int_1 = build_int_cst (integer_type_node, 1);
    tree int_256 = build_int_cst (integer_type_node, 256);
-   region_model_manager mgr;
    test_region_model_context ctxt;
    const svalue *int_0_sval = mgr.get_or_create_constant_svalue (int_0);
    const svalue *int_1_sval = mgr.get_or_create_constant_svalue (int_1);
--- 7413,7424 ----
  static void
  test_widening_constraints ()
  {
!   region_model_manager mgr;
!   function_point point (program_point::origin (mgr).get_function_point ());
    tree int_0 = build_int_cst (integer_type_node, 0);
    tree int_m1 = build_int_cst (integer_type_node, -1);
    tree int_1 = build_int_cst (integer_type_node, 1);
    tree int_256 = build_int_cst (integer_type_node, 256);
    test_region_model_context ctxt;
    const svalue *int_0_sval = mgr.get_or_create_constant_svalue (int_0);
    const svalue *int_1_sval = mgr.get_or_create_constant_svalue (int_1);
*************** test_widening_constraints ()
*** 6005,6011 ****
  static void
  test_iteration_1 ()
  {
!   program_point point (program_point::origin ());
  
    tree int_0 = build_int_cst (integer_type_node, 0);
    tree int_1 = build_int_cst (integer_type_node, 1);
--- 7528,7535 ----
  static void
  test_iteration_1 ()
  {
!   region_model_manager mgr;
!   program_point point (program_point::origin (mgr));
  
    tree int_0 = build_int_cst (integer_type_node, 0);
    tree int_1 = build_int_cst (integer_type_node, 1);
*************** test_iteration_1 ()
*** 6013,6019 ****
    tree int_257 = build_int_cst (integer_type_node, 257);
    tree i = build_global_decl ("i", integer_type_node);
  
-   region_model_manager mgr;
    test_region_model_context ctxt;
  
    /* model0: i: 0.  */
--- 7537,7542 ----
*************** test_malloc_constraints ()
*** 6092,6098 ****
  
    const svalue *size_in_bytes
      = mgr.get_or_create_unknown_svalue (size_type_node);
!   const region *reg = model.create_region_for_heap_alloc (size_in_bytes, NULL);
    const svalue *sval = mgr.get_ptr_svalue (ptr_type_node, reg);
    model.set_value (model.get_lvalue (p, NULL), sval, NULL);
    model.set_value (q, p, NULL);
--- 7615,7622 ----
  
    const svalue *size_in_bytes
      = mgr.get_or_create_unknown_svalue (size_type_node);
!   const region *reg
!     = model.get_or_create_region_for_heap_alloc (size_in_bytes, NULL);
    const svalue *sval = mgr.get_ptr_svalue (ptr_type_node, reg);
    model.set_value (model.get_lvalue (p, NULL), sval, NULL);
    model.set_value (q, p, NULL);
*************** test_var ()
*** 6146,6152 ****
  
    /* Verify get_offset for "i".  */
    {
!     region_offset offset = i_reg->get_offset ();
      ASSERT_EQ (offset.get_base_region (), i_reg);
      ASSERT_EQ (offset.get_bit_offset (), 0);
    }
--- 7670,7676 ----
  
    /* Verify get_offset for "i".  */
    {
!     region_offset offset = i_reg->get_offset (&mgr);
      ASSERT_EQ (offset.get_base_region (), i_reg);
      ASSERT_EQ (offset.get_bit_offset (), 0);
    }
*************** test_array_2 ()
*** 6195,6201 ****
    /* Verify get_offset for "arr[0]".  */
    {
      const region *arr_0_reg = model.get_lvalue (arr_0, NULL);
!     region_offset offset = arr_0_reg->get_offset ();
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
      ASSERT_EQ (offset.get_bit_offset (), 0);
    }
--- 7719,7725 ----
    /* Verify get_offset for "arr[0]".  */
    {
      const region *arr_0_reg = model.get_lvalue (arr_0, NULL);
!     region_offset offset = arr_0_reg->get_offset (&mgr);
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
      ASSERT_EQ (offset.get_bit_offset (), 0);
    }
*************** test_array_2 ()
*** 6203,6213 ****
    /* Verify get_offset for "arr[1]".  */
    {
      const region *arr_1_reg = model.get_lvalue (arr_1, NULL);
!     region_offset offset = arr_1_reg->get_offset ();
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
      ASSERT_EQ (offset.get_bit_offset (), INT_TYPE_SIZE);
    }
  
    /* "arr[i] = i;" - this should remove the earlier bindings.  */
    model.set_value (arr_i, i, NULL);
    ASSERT_EQ (model.get_rvalue (arr_i, NULL), model.get_rvalue (i, NULL));
--- 7727,7745 ----
    /* Verify get_offset for "arr[1]".  */
    {
      const region *arr_1_reg = model.get_lvalue (arr_1, NULL);
!     region_offset offset = arr_1_reg->get_offset (&mgr);
      ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
      ASSERT_EQ (offset.get_bit_offset (), INT_TYPE_SIZE);
    }
  
+   /* Verify get_offset for "arr[i]".  */
+   {
+     const region *arr_i_reg = model.get_lvalue (arr_i, NULL);
+     region_offset offset = arr_i_reg->get_offset (&mgr);
+     ASSERT_EQ (offset.get_base_region (), model.get_lvalue (arr, NULL));
+     ASSERT_EQ (offset.get_symbolic_byte_offset ()->get_kind (), SK_BINOP);
+   }
+ 
    /* "arr[i] = i;" - this should remove the earlier bindings.  */
    model.set_value (arr_i, i, NULL);
    ASSERT_EQ (model.get_rvalue (arr_i, NULL), model.get_rvalue (i, NULL));
*************** test_malloc ()
*** 6313,6319 ****
  
    /* "p = malloc (n * 4);".  */
    const svalue *size_sval = model.get_rvalue (n_times_4, &ctxt);
!   const region *reg = model.create_region_for_heap_alloc (size_sval, &ctxt);
    const svalue *ptr = mgr.get_ptr_svalue (int_star, reg);
    model.set_value (model.get_lvalue (p, &ctxt), ptr, &ctxt);
    ASSERT_EQ (model.get_capacity (reg), size_sval);
--- 7845,7852 ----
  
    /* "p = malloc (n * 4);".  */
    const svalue *size_sval = model.get_rvalue (n_times_4, &ctxt);
!   const region *reg
!     = model.get_or_create_region_for_heap_alloc (size_sval, &ctxt);
    const svalue *ptr = mgr.get_ptr_svalue (int_star, reg);
    model.set_value (model.get_lvalue (p, &ctxt), ptr, &ctxt);
    ASSERT_EQ (model.get_capacity (reg), size_sval);
*************** analyzer_region_model_cc_tests ()
*** 6406,6411 ****
--- 7939,7945 ----
    test_unaryop_svalue_folding ();
    test_binop_svalue_folding ();
    test_sub_svalue_folding ();
+   test_bits_within_svalue_folding ();
    test_descendent_of_p ();
    test_bit_range_regions ();
    test_assignment ();
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region-model.h gcc-13.1.0/gcc/analyzer/region-model.h
*** gcc-12.2.0/gcc/analyzer/region-model.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region-model.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for modeling the state of memory.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 26,33 ****
--- 26,38 ----
        (Zhongxing Xu, Ted Kremenek, and Jian Zhang)
       http://lcs.ios.ac.cn/~xuzb/canalyze/memmodel.pdf  */
  
+ #include "bitmap.h"
+ #include "selftest.h"
  #include "analyzer/svalue.h"
  #include "analyzer/region.h"
+ #include "analyzer/known-function-manager.h"
+ #include "analyzer/region-model-manager.h"
+ #include "analyzer/pending-diagnostic.h"
  
  using namespace ana;
  
*************** public:
*** 229,547 ****
    virtual void visit_region (const region *) {}
  };
  
- } // namespace ana
- 
- namespace ana {
- 
- /* A class responsible for owning and consolidating region and svalue
-    instances.
-    region and svalue instances are immutable as far as clients are
-    concerned, so they are provided as "const" ptrs.  */
- 
- class region_model_manager
- {
- public:
-   region_model_manager (logger *logger = NULL);
-   ~region_model_manager ();
- 
-   /* svalue consolidation.  */
-   const svalue *get_or_create_constant_svalue (tree cst_expr);
-   const svalue *get_or_create_int_cst (tree type, poly_int64);
-   const svalue *get_or_create_unknown_svalue (tree type);
-   const svalue *get_or_create_setjmp_svalue (const setjmp_record &r,
- 					     tree type);
-   const svalue *get_or_create_poisoned_svalue (enum poison_kind kind,
- 					       tree type);
-   const svalue *get_or_create_initial_value (const region *reg);
-   const svalue *get_ptr_svalue (tree ptr_type, const region *pointee);
-   const svalue *get_or_create_unaryop (tree type, enum tree_code op,
- 				       const svalue *arg);
-   const svalue *get_or_create_cast (tree type, const svalue *arg);
-   const svalue *get_or_create_binop (tree type,
- 				     enum tree_code op,
- 				     const svalue *arg0, const svalue *arg1);
-   const svalue *get_or_create_sub_svalue (tree type,
- 					  const svalue *parent_svalue,
- 					  const region *subregion);
-   const svalue *get_or_create_repeated_svalue (tree type,
- 					       const svalue *outer_size,
- 					       const svalue *inner_svalue);
-   const svalue *get_or_create_bits_within (tree type,
- 					   const bit_range &bits,
- 					   const svalue *inner_svalue);
-   const svalue *get_or_create_unmergeable (const svalue *arg);
-   const svalue *get_or_create_widening_svalue (tree type,
- 					       const program_point &point,
- 					       const svalue *base_svalue,
- 					       const svalue *iter_svalue);
-   const svalue *get_or_create_compound_svalue (tree type,
- 					       const binding_map &map);
-   const svalue *get_or_create_conjured_svalue (tree type, const gimple *stmt,
- 					       const region *id_reg,
- 					       const conjured_purge &p);
-   const svalue *
-   get_or_create_asm_output_svalue (tree type,
- 				   const gasm *asm_stmt,
- 				   unsigned output_idx,
- 				   const vec<const svalue *> &inputs);
-   const svalue *
-   get_or_create_const_fn_result_svalue (tree type,
- 					tree fndecl,
- 					const vec<const svalue *> &inputs);
- 
-   const svalue *maybe_get_char_from_string_cst (tree string_cst,
- 						tree byte_offset_cst);
- 
-   /* Dynamically-allocated svalue instances.
-      The number of these within the analysis can grow arbitrarily.
-      They are still owned by the manager.  */
-   const svalue *create_unique_svalue (tree type);
- 
-   /* region consolidation.  */
-   const stack_region * get_stack_region () const { return &m_stack_region; }
-   const heap_region *get_heap_region () const { return &m_heap_region; }
-   const code_region *get_code_region () const { return &m_code_region; }
-   const globals_region *get_globals_region () const
-   {
-     return &m_globals_region;
-   }
-   const function_region *get_region_for_fndecl (tree fndecl);
-   const label_region *get_region_for_label (tree label);
-   const decl_region *get_region_for_global (tree expr);
-   const region *get_field_region (const region *parent, tree field);
-   const region *get_element_region (const region *parent,
- 				    tree element_type,
- 				    const svalue *index);
-   const region *get_offset_region (const region *parent,
- 				   tree type,
- 				   const svalue *byte_offset);
-   const region *get_sized_region (const region *parent,
- 				  tree type,
- 				  const svalue *byte_size_sval);
-   const region *get_cast_region (const region *original_region,
- 				 tree type);
-   const frame_region *get_frame_region (const frame_region *calling_frame,
- 					function *fun);
-   const region *get_symbolic_region (const svalue *sval);
-   const string_region *get_region_for_string (tree string_cst);
-   const region *get_bit_range (const region *parent, tree type,
- 			       const bit_range &bits);
- 
-   const region *get_unknown_symbolic_region (tree region_type);
- 
-   const region *
-   get_region_for_unexpected_tree_code (region_model_context *ctxt,
- 				       tree t,
- 				       const dump_location_t &loc);
- 
-   unsigned alloc_region_id () { return m_next_region_id++; }
- 
-   store_manager *get_store_manager () { return &m_store_mgr; }
-   bounded_ranges_manager *get_range_manager () const { return m_range_mgr; }
- 
-   /* Dynamically-allocated region instances.
-      The number of these within the analysis can grow arbitrarily.
-      They are still owned by the manager.  */
-   const region *create_region_for_heap_alloc ();
-   const region *create_region_for_alloca (const frame_region *frame);
- 
-   void log_stats (logger *logger, bool show_objs) const;
- 
-   void begin_checking_feasibility (void) { m_checking_feasibility = true; }
-   void end_checking_feasibility (void) { m_checking_feasibility = false; }
- 
-   logger *get_logger () const { return m_logger; }
- 
-   void dump_untracked_regions () const;
- 
- private:
-   bool too_complex_p (const complexity &c) const;
-   bool reject_if_too_complex (svalue *sval);
- 
-   const svalue *maybe_fold_unaryop (tree type, enum tree_code op,
- 				    const svalue *arg);
-   const svalue *maybe_fold_binop (tree type, enum tree_code op,
- 				  const svalue *arg0, const svalue *arg1);
-   const svalue *maybe_fold_sub_svalue (tree type,
- 				       const svalue *parent_svalue,
- 				       const region *subregion);
-   const svalue *maybe_fold_repeated_svalue (tree type,
- 					    const svalue *outer_size,
- 					    const svalue *inner_svalue);
-   const svalue *maybe_fold_bits_within_svalue (tree type,
- 					       const bit_range &bits,
- 					       const svalue *inner_svalue);
-   const svalue *maybe_undo_optimize_bit_field_compare (tree type,
- 						       const compound_svalue *compound_sval,
- 						       tree cst, const svalue *arg1);
-   const svalue *maybe_fold_asm_output_svalue (tree type,
- 					      const vec<const svalue *> &inputs);
- 
-   logger *m_logger;
- 
-   unsigned m_next_region_id;
-   root_region m_root_region;
-   stack_region m_stack_region;
-   heap_region m_heap_region;
- 
-   /* svalue consolidation.  */
-   typedef hash_map<tree, constant_svalue *> constants_map_t;
-   constants_map_t m_constants_map;
- 
-   typedef hash_map<tree, unknown_svalue *> unknowns_map_t;
-   unknowns_map_t m_unknowns_map;
-   const unknown_svalue *m_unknown_NULL;
- 
-   typedef hash_map<poisoned_svalue::key_t,
- 		   poisoned_svalue *> poisoned_values_map_t;
-   poisoned_values_map_t m_poisoned_values_map;
- 
-   typedef hash_map<setjmp_svalue::key_t,
- 		   setjmp_svalue *> setjmp_values_map_t;
-   setjmp_values_map_t m_setjmp_values_map;
- 
-   typedef hash_map<const region *, initial_svalue *> initial_values_map_t;
-   initial_values_map_t m_initial_values_map;
- 
-   typedef hash_map<region_svalue::key_t, region_svalue *> pointer_values_map_t;
-   pointer_values_map_t m_pointer_values_map;
- 
-   typedef hash_map<unaryop_svalue::key_t,
- 		   unaryop_svalue *> unaryop_values_map_t;
-   unaryop_values_map_t m_unaryop_values_map;
- 
-   typedef hash_map<binop_svalue::key_t, binop_svalue *> binop_values_map_t;
-   binop_values_map_t m_binop_values_map;
- 
-   typedef hash_map<sub_svalue::key_t, sub_svalue *> sub_values_map_t;
-   sub_values_map_t m_sub_values_map;
- 
-   typedef hash_map<repeated_svalue::key_t,
- 		   repeated_svalue *> repeated_values_map_t;
-   repeated_values_map_t m_repeated_values_map;
- 
-   typedef hash_map<bits_within_svalue::key_t,
- 		   bits_within_svalue *> bits_within_values_map_t;
-   bits_within_values_map_t m_bits_within_values_map;
- 
-   typedef hash_map<const svalue *,
- 		   unmergeable_svalue *> unmergeable_values_map_t;
-   unmergeable_values_map_t m_unmergeable_values_map;
- 
-   typedef hash_map<widening_svalue::key_t,
- 		   widening_svalue */*,
- 		   widening_svalue::key_t::hash_map_traits*/>
-     widening_values_map_t;
-   widening_values_map_t m_widening_values_map;
- 
-   typedef hash_map<compound_svalue::key_t,
- 		   compound_svalue *> compound_values_map_t;
-   compound_values_map_t m_compound_values_map;
- 
-   typedef hash_map<conjured_svalue::key_t,
- 		   conjured_svalue *> conjured_values_map_t;
-   conjured_values_map_t m_conjured_values_map;
- 
-   typedef hash_map<asm_output_svalue::key_t,
- 		   asm_output_svalue *> asm_output_values_map_t;
-   asm_output_values_map_t m_asm_output_values_map;
- 
-   typedef hash_map<const_fn_result_svalue::key_t,
- 		   const_fn_result_svalue *> const_fn_result_values_map_t;
-   const_fn_result_values_map_t m_const_fn_result_values_map;
- 
-   bool m_checking_feasibility;
- 
-   /* "Dynamically-allocated" svalue instances.
-      The number of these within the analysis can grow arbitrarily.
-      They are still owned by the manager.  */
-   auto_delete_vec<svalue> m_managed_dynamic_svalues;
- 
-   /* Maximum complexity of svalues that weren't rejected.  */
-   complexity m_max_complexity;
- 
-   /* region consolidation.  */
- 
-   code_region m_code_region;
-   typedef hash_map<tree, function_region *> fndecls_map_t;
-   typedef fndecls_map_t::iterator fndecls_iterator_t;
-   fndecls_map_t m_fndecls_map;
- 
-   typedef hash_map<tree, label_region *> labels_map_t;
-   typedef labels_map_t::iterator labels_iterator_t;
-   labels_map_t m_labels_map;
- 
-   globals_region m_globals_region;
-   typedef hash_map<tree, decl_region *> globals_map_t;
-   typedef globals_map_t::iterator globals_iterator_t;
-   globals_map_t m_globals_map;
- 
-   consolidation_map<field_region> m_field_regions;
-   consolidation_map<element_region> m_element_regions;
-   consolidation_map<offset_region> m_offset_regions;
-   consolidation_map<sized_region> m_sized_regions;
-   consolidation_map<cast_region> m_cast_regions;
-   consolidation_map<frame_region> m_frame_regions;
-   consolidation_map<symbolic_region> m_symbolic_regions;
- 
-   typedef hash_map<tree, string_region *> string_map_t;
-   string_map_t m_string_map;
- 
-   consolidation_map<bit_range_region> m_bit_range_regions;
- 
-   store_manager m_store_mgr;
- 
-   bounded_ranges_manager *m_range_mgr;
- 
-   /* "Dynamically-allocated" region instances.
-      The number of these within the analysis can grow arbitrarily.
-      They are still owned by the manager.  */
-   auto_delete_vec<region> m_managed_dynamic_regions;
- };
- 
  struct append_regions_cb_data;
  
- /* Helper class for handling calls to functions with known behavior.
-    Implemented in region-model-impl-calls.c.  */
- 
- class call_details
- {
- public:
-   call_details (const gcall *call, region_model *model,
- 		region_model_context *ctxt);
- 
-   region_model_manager *get_manager () const;
-   region_model_context *get_ctxt () const { return m_ctxt; }
-   uncertainty_t *get_uncertainty () const;
-   tree get_lhs_type () const { return m_lhs_type; }
-   const region *get_lhs_region () const { return m_lhs_region; }
- 
-   bool maybe_set_lhs (const svalue *result) const;
- 
-   unsigned num_args () const;
- 
-   const gcall *get_call_stmt () const { return m_call; }
- 
-   tree get_arg_tree (unsigned idx) const;
-   tree get_arg_type (unsigned idx) const;
-   const svalue *get_arg_svalue (unsigned idx) const;
-   const char *get_arg_string_literal (unsigned idx) const;
- 
-   tree get_fndecl_for_call () const;
- 
-   void dump_to_pp (pretty_printer *pp, bool simple) const;
-   void dump (bool simple) const;
- 
-   const svalue *get_or_create_conjured_svalue (const region *) const;
- 
- private:
-   const gcall *m_call;
-   region_model *m_model;
-   region_model_context *m_ctxt;
-   tree m_lhs_type;
-   const region *m_lhs_region;
- };
- 
  /* A region_model encapsulates a representation of the state of memory, with
     a tree of regions, along with their associated values.
     The representation is graph-like because values can be pointers to
--- 234,241 ----
*************** class region_model
*** 584,590 ****
  
    void
    on_stmt_pre (const gimple *stmt,
- 	       bool *out_terminate_path,
  	       bool *out_unknown_side_effects,
  	       region_model_context *ctxt);
  
--- 278,283 ----
*************** class region_model
*** 592,632 ****
    const svalue *get_gassign_result (const gassign *assign,
  				    region_model_context *ctxt);
    void on_asm_stmt (const gasm *asm_stmt, region_model_context *ctxt);
!   bool on_call_pre (const gcall *stmt, region_model_context *ctxt,
! 		    bool *out_terminate_path);
    void on_call_post (const gcall *stmt,
  		     bool unknown_side_effects,
  		     region_model_context *ctxt);
  
    void purge_state_involving (const svalue *sval, region_model_context *ctxt);
  
-   /* Specific handling for on_call_pre.  */
-   void impl_call_alloca (const call_details &cd);
-   void impl_call_analyzer_describe (const gcall *call,
- 				    region_model_context *ctxt);
-   void impl_call_analyzer_dump_capacity (const gcall *call,
- 					 region_model_context *ctxt);
-   void impl_call_analyzer_dump_escaped (const gcall *call);
-   void impl_call_analyzer_eval (const gcall *call,
- 				region_model_context *ctxt);
-   void impl_call_builtin_expect (const call_details &cd);
-   void impl_call_calloc (const call_details &cd);
-   bool impl_call_error (const call_details &cd, unsigned min_args,
- 			bool *out_terminate_path);
-   void impl_call_fgets (const call_details &cd);
-   void impl_call_fread (const call_details &cd);
-   void impl_call_free (const call_details &cd);
-   void impl_call_malloc (const call_details &cd);
-   void impl_call_memcpy (const call_details &cd);
-   void impl_call_memset (const call_details &cd);
-   void impl_call_realloc (const call_details &cd);
-   void impl_call_strchr (const call_details &cd);
-   void impl_call_strcpy (const call_details &cd);
-   void impl_call_strlen (const call_details &cd);
-   void impl_call_operator_new (const call_details &cd);
-   void impl_call_operator_delete (const call_details &cd);
    void impl_deallocation_call (const call_details &cd);
  
    void handle_unrecognized_call (const gcall *call,
  				 region_model_context *ctxt);
    void get_reachable_svalues (svalue_set *out,
--- 285,308 ----
    const svalue *get_gassign_result (const gassign *assign,
  				    region_model_context *ctxt);
    void on_asm_stmt (const gasm *asm_stmt, region_model_context *ctxt);
!   bool on_call_pre (const gcall *stmt, region_model_context *ctxt);
    void on_call_post (const gcall *stmt,
  		     bool unknown_side_effects,
  		     region_model_context *ctxt);
  
    void purge_state_involving (const svalue *sval, region_model_context *ctxt);
  
    void impl_deallocation_call (const call_details &cd);
  
+   const svalue *maybe_get_copy_bounds (const region *src_reg,
+ 				       const svalue *num_bytes_sval);
+   void update_for_int_cst_return (const call_details &cd,
+ 				  int retval,
+ 				  bool unmergeable);
+   void update_for_zero_return (const call_details &cd,
+ 			       bool unmergeable);
+   void update_for_nonzero_return (const call_details &cd);
+ 
    void handle_unrecognized_call (const gcall *call,
  				 region_model_context *ctxt);
    void get_reachable_svalues (svalue_set *out,
*************** class region_model
*** 665,671 ****
    function * get_current_function () const;
    void pop_frame (tree result_lvalue,
  		  const svalue **out_result,
! 		  region_model_context *ctxt);
    int get_stack_depth () const;
    const frame_region *get_frame_at_index (int index) const;
  
--- 341,348 ----
    function * get_current_function () const;
    void pop_frame (tree result_lvalue,
  		  const svalue **out_result,
! 		  region_model_context *ctxt,
! 		  bool eval_return_svalue = true);
    int get_stack_depth () const;
    const frame_region *get_frame_at_index (int index) const;
  
*************** class region_model
*** 694,720 ****
    tristate eval_condition (const svalue *lhs,
  			   enum tree_code op,
  			   const svalue *rhs) const;
-   tristate eval_condition_without_cm (const svalue *lhs,
- 				      enum tree_code op,
- 				      const svalue *rhs) const;
    tristate compare_initial_and_pointer (const initial_svalue *init,
  					const region_svalue *ptr) const;
    tristate eval_condition (tree lhs,
  			   enum tree_code op,
  			   tree rhs,
! 			   region_model_context *ctxt);
    bool add_constraint (tree lhs, enum tree_code op, tree rhs,
  		       region_model_context *ctxt);
    bool add_constraint (tree lhs, enum tree_code op, tree rhs,
  		       region_model_context *ctxt,
  		       rejected_constraint **out);
  
!   const region *create_region_for_heap_alloc (const svalue *size_in_bytes,
! 					      region_model_context *ctxt);
    const region *create_region_for_alloca (const svalue *size_in_bytes,
  					  region_model_context *ctxt);
  
    tree get_representative_tree (const svalue *sval) const;
    path_var
    get_representative_path_var (const svalue *sval,
  			       svalue_set *visited) const;
--- 371,400 ----
    tristate eval_condition (const svalue *lhs,
  			   enum tree_code op,
  			   const svalue *rhs) const;
    tristate compare_initial_and_pointer (const initial_svalue *init,
  					const region_svalue *ptr) const;
+   tristate symbolic_greater_than (const binop_svalue *a,
+ 				  const svalue *b) const;
+   tristate structural_equality (const svalue *a, const svalue *b) const;
    tristate eval_condition (tree lhs,
  			   enum tree_code op,
  			   tree rhs,
! 			   region_model_context *ctxt) const;
    bool add_constraint (tree lhs, enum tree_code op, tree rhs,
  		       region_model_context *ctxt);
    bool add_constraint (tree lhs, enum tree_code op, tree rhs,
  		       region_model_context *ctxt,
  		       rejected_constraint **out);
  
!   const region *
!   get_or_create_region_for_heap_alloc (const svalue *size_in_bytes,
! 				       region_model_context *ctxt);
    const region *create_region_for_alloca (const svalue *size_in_bytes,
  					  region_model_context *ctxt);
+   void get_referenced_base_regions (auto_bitmap &out_ids) const;
  
    tree get_representative_tree (const svalue *sval) const;
+   tree get_representative_tree (const region *reg) const;
    path_var
    get_representative_path_var (const svalue *sval,
  			       svalue_set *visited) const;
*************** class region_model
*** 774,785 ****
  
    const svalue *get_capacity (const region *reg) const;
  
    /* Implemented in sm-malloc.cc  */
    void on_realloc_with_move (const call_details &cd,
  			     const svalue *old_ptr_sval,
  			     const svalue *new_ptr_sval);
  
!  private:
    const region *get_lvalue_1 (path_var pv, region_model_context *ctxt) const;
    const svalue *get_rvalue_1 (path_var pv, region_model_context *ctxt) const;
  
--- 454,498 ----
  
    const svalue *get_capacity (const region *reg) const;
  
+   const svalue *get_string_size (const svalue *sval) const;
+   const svalue *get_string_size (const region *reg) const;
+ 
+   bool replay_call_summary (call_summary_replay &r,
+ 			    const region_model &summary);
+ 
+   void maybe_complain_about_infoleak (const region *dst_reg,
+ 				      const svalue *copied_sval,
+ 				      const region *src_reg,
+ 				      region_model_context *ctxt);
+ 
+   void set_errno (const call_details &cd);
+ 
+   /* Implemented in sm-fd.cc  */
+   void mark_as_valid_fd (const svalue *sval, region_model_context *ctxt);
+ 
    /* Implemented in sm-malloc.cc  */
    void on_realloc_with_move (const call_details &cd,
  			     const svalue *old_ptr_sval,
  			     const svalue *new_ptr_sval);
  
!   /* Implemented in sm-taint.cc.  */
!   void mark_as_tainted (const svalue *sval,
! 			region_model_context *ctxt);
! 
!   bool add_constraint (const svalue *lhs,
! 		       enum tree_code op,
! 		       const svalue *rhs,
! 		       region_model_context *ctxt);
! 
!   const svalue *check_for_poison (const svalue *sval,
! 				  tree expr,
! 				  const region *src_region,
! 				  region_model_context *ctxt) const;
! 
!   void check_region_for_write (const region *dest_reg,
! 			       region_model_context *ctxt) const;
! 
! private:
    const region *get_lvalue_1 (path_var pv, region_model_context *ctxt) const;
    const svalue *get_rvalue_1 (path_var pv, region_model_context *ctxt) const;
  
*************** class region_model
*** 790,799 ****
    get_representative_path_var_1 (const region *reg,
  				 svalue_set *visited) const;
  
!   bool add_constraint (const svalue *lhs,
! 		       enum tree_code op,
! 		       const svalue *rhs,
! 		       region_model_context *ctxt);
    bool add_constraints_from_binop (const svalue *outer_lhs,
  				   enum tree_code outer_op,
  				   const svalue *outer_rhs,
--- 503,512 ----
    get_representative_path_var_1 (const region *reg,
  				 svalue_set *visited) const;
  
!   const known_function *get_known_function (tree fndecl,
! 					    const call_details &cd) const;
!   const known_function *get_known_function (enum internal_fn) const;
! 
    bool add_constraints_from_binop (const svalue *outer_lhs,
  				   enum tree_code outer_op,
  				   const svalue *outer_rhs,
*************** class region_model
*** 804,811 ****
  				  region_model_context *ctxt);
    void update_for_return_superedge (const return_superedge &return_edge,
  				    region_model_context *ctxt);
-   void update_for_call_summary (const callgraph_superedge &cg_sedge,
- 				region_model_context *ctxt);
    bool apply_constraints_for_gcond (const cfg_superedge &edge,
  				    const gcond *cond_stmt,
  				    region_model_context *ctxt,
--- 517,522 ----
*************** class region_model
*** 821,839 ****
    int poison_any_pointers_to_descendents (const region *reg,
  					  enum poison_kind pkind);
  
!   void on_top_level_param (tree param, region_model_context *ctxt);
  
    bool called_from_main_p () const;
    const svalue *get_initial_value_for_global (const region *reg) const;
  
-   const svalue *check_for_poison (const svalue *sval,
- 				  tree expr,
- 				  region_model_context *ctxt) const;
    const region * get_region_for_poisoned_expr (tree expr) const;
  
    void check_dynamic_size_for_taint (enum memory_space mem_space,
  				     const svalue *size_in_bytes,
  				     region_model_context *ctxt) const;
  
    void check_region_for_taint (const region *reg,
  			       enum access_direction dir,
--- 532,551 ----
    int poison_any_pointers_to_descendents (const region *reg,
  					  enum poison_kind pkind);
  
!   void on_top_level_param (tree param,
! 			   bool nonnull,
! 			   region_model_context *ctxt);
  
    bool called_from_main_p () const;
    const svalue *get_initial_value_for_global (const region *reg) const;
  
    const region * get_region_for_poisoned_expr (tree expr) const;
  
    void check_dynamic_size_for_taint (enum memory_space mem_space,
  				     const svalue *size_in_bytes,
  				     region_model_context *ctxt) const;
+   void check_dynamic_size_for_floats (const svalue *size_in_bytes,
+ 				      region_model_context *ctxt) const;
  
    void check_region_for_taint (const region *reg,
  			       enum access_direction dir,
*************** class region_model
*** 844,853 ****
    void check_region_access (const region *reg,
  			    enum access_direction dir,
  			    region_model_context *ctxt) const;
-   void check_region_for_write (const region *dest_reg,
- 			       region_model_context *ctxt) const;
    void check_region_for_read (const region *src_reg,
  			      region_model_context *ctxt) const;
  
    void check_call_args (const call_details &cd) const;
    void check_external_function_for_access_attr (const gcall *call,
--- 556,575 ----
    void check_region_access (const region *reg,
  			    enum access_direction dir,
  			    region_model_context *ctxt) const;
    void check_region_for_read (const region *src_reg,
  			      region_model_context *ctxt) const;
+   void check_region_size (const region *lhs_reg, const svalue *rhs_sval,
+ 			  region_model_context *ctxt) const;
+ 
+   /* Implemented in bounds-checking.cc  */
+   void check_symbolic_bounds (const region *base_reg,
+ 			      const svalue *sym_byte_offset,
+ 			      const svalue *num_bytes_sval,
+ 			      const svalue *capacity,
+ 			      enum access_direction dir,
+ 			      region_model_context *ctxt) const;
+   void check_region_bounds (const region *reg, enum access_direction dir,
+ 			    region_model_context *ctxt) const;
  
    void check_call_args (const call_details &cd) const;
    void check_external_function_for_access_attr (const gcall *call,
*************** class region_model_context
*** 883,893 ****
   public:
    /* Hook for clients to store pending diagnostics.
       Return true if the diagnostic was stored, or false if it was deleted.  */
!   virtual bool warn (pending_diagnostic *d) = 0;
  
!   /* Hook for clients to add a note to the last previously stored pending diagnostic.
!      Takes ownership of the pending_node (or deletes it).  */
!   virtual void add_note (pending_note *pn) = 0;
  
    /* Hook for clients to be notified when an SVAL that was reachable
       in a previous state is no longer live, so that clients can emit warnings
--- 605,615 ----
   public:
    /* Hook for clients to store pending diagnostics.
       Return true if the diagnostic was stored, or false if it was deleted.  */
!   virtual bool warn (std::unique_ptr<pending_diagnostic> d) = 0;
  
!   /* Hook for clients to add a note to the last previously stored
!      pending diagnostic.  */
!   virtual void add_note (std::unique_ptr<pending_note> pn) = 0;
  
    /* Hook for clients to be notified when an SVAL that was reachable
       in a previous state is no longer live, so that clients can emit warnings
*************** class region_model_context
*** 912,917 ****
--- 634,649 ----
  			     enum tree_code op,
  			     const svalue *rhs) = 0;
  
+   /* Hook for clients to be notified when the condition that
+      SVAL is within RANGES is added to the region model.
+      Similar to on_condition, but for use when handling switch statements.
+      RANGES is non-empty.  */
+   virtual void on_bounded_ranges (const svalue &sval,
+ 				  const bounded_ranges &ranges) = 0;
+ 
+   /* Hook for clients to be notified when a frame is popped from the stack.  */
+   virtual void on_pop_frame (const frame_region *) = 0;
+ 
    /* Hooks for clients to be notified when an unknown change happens
       to SVAL (in response to a call to an unknown function).  */
    virtual void on_unknown_change (const svalue *sval, bool is_mutable) = 0;
*************** class region_model_context
*** 933,956 ****
    /* Hook for clients to purge state involving SVAL.  */
    virtual void purge_state_involving (const svalue *sval) = 0;
  
!   /* Hook for clients to split state with a non-standard path.
!      Take ownership of INFO.  */
!   virtual void bifurcate (custom_edge_info *info) = 0;
  
    /* Hook for clients to terminate the standard path.  */
    virtual void terminate_path () = 0;
  
    virtual const extrinsic_state *get_ext_state () const = 0;
  
!   /* Hook for clients to access the "malloc" state machine in
       any underlying program_state.  */
!   virtual bool get_malloc_map (sm_state_map **out_smap,
! 			       const state_machine **out_sm,
! 			       unsigned *out_sm_idx) = 0;
!   /* Likewise for the "taint" state machine.  */
!   virtual bool get_taint_map (sm_state_map **out_smap,
! 			      const state_machine **out_sm,
! 			      unsigned *out_sm_idx) = 0;
  
    /* Get the current statement, if any.  */
    virtual const gimple *get_stmt () const = 0;
--- 665,710 ----
    /* Hook for clients to purge state involving SVAL.  */
    virtual void purge_state_involving (const svalue *sval) = 0;
  
!   /* Hook for clients to split state with a non-standard path.  */
!   virtual void bifurcate (std::unique_ptr<custom_edge_info> info) = 0;
  
    /* Hook for clients to terminate the standard path.  */
    virtual void terminate_path () = 0;
  
    virtual const extrinsic_state *get_ext_state () const = 0;
  
!   /* Hook for clients to access the a specific state machine in
       any underlying program_state.  */
!   virtual bool
!   get_state_map_by_name (const char *name,
! 			 sm_state_map **out_smap,
! 			 const state_machine **out_sm,
! 			 unsigned *out_sm_idx,
! 			 std::unique_ptr<sm_context> *out_sm_context) = 0;
! 
!   /* Precanned ways for clients to access specific state machines.  */
!   bool get_fd_map (sm_state_map **out_smap,
! 		   const state_machine **out_sm,
! 		   unsigned *out_sm_idx,
! 		   std::unique_ptr<sm_context> *out_sm_context)
!   {
!     return get_state_map_by_name ("file-descriptor", out_smap, out_sm,
! 				  out_sm_idx, out_sm_context);
!   }
!   bool get_malloc_map (sm_state_map **out_smap,
! 		       const state_machine **out_sm,
! 		       unsigned *out_sm_idx)
!   {
!     return get_state_map_by_name ("malloc", out_smap, out_sm, out_sm_idx, NULL);
!   }
!   bool get_taint_map (sm_state_map **out_smap,
! 		      const state_machine **out_sm,
! 		      unsigned *out_sm_idx)
!   {
!     return get_state_map_by_name ("taint", out_smap, out_sm, out_sm_idx, NULL);
!   }
! 
!   bool possibly_tainted_p (const svalue *sval);
  
    /* Get the current statement, if any.  */
    virtual const gimple *get_stmt () const = 0;
*************** class region_model_context
*** 961,1012 ****
  class noop_region_model_context : public region_model_context
  {
  public:
!   bool warn (pending_diagnostic *) OVERRIDE { return false; }
!   void add_note (pending_note *pn) OVERRIDE;
!   void on_svalue_leak (const svalue *) OVERRIDE {}
    void on_liveness_change (const svalue_set &,
! 			   const region_model *) OVERRIDE {}
!   logger *get_logger () OVERRIDE { return NULL; }
    void on_condition (const svalue *lhs ATTRIBUTE_UNUSED,
  		     enum tree_code op ATTRIBUTE_UNUSED,
! 		     const svalue *rhs ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
    void on_unknown_change (const svalue *sval ATTRIBUTE_UNUSED,
! 			  bool is_mutable ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
    void on_phi (const gphi *phi ATTRIBUTE_UNUSED,
! 	       tree rhs ATTRIBUTE_UNUSED) OVERRIDE
    {
    }
!   void on_unexpected_tree_code (tree, const dump_location_t &) OVERRIDE {}
  
!   void on_escaped_function (tree) OVERRIDE {}
  
!   uncertainty_t *get_uncertainty () OVERRIDE { return NULL; }
  
!   void purge_state_involving (const svalue *sval ATTRIBUTE_UNUSED) OVERRIDE {}
  
!   void bifurcate (custom_edge_info *info) OVERRIDE;
!   void terminate_path () OVERRIDE;
  
!   const extrinsic_state *get_ext_state () const OVERRIDE { return NULL; }
  
!   bool get_malloc_map (sm_state_map **,
! 		       const state_machine **,
! 		       unsigned *) OVERRIDE
!   {
!     return false;
!   }
!   bool get_taint_map (sm_state_map **,
! 		      const state_machine **,
! 		      unsigned *) OVERRIDE
    {
      return false;
    }
  
!   const gimple *get_stmt () const OVERRIDE { return NULL; }
  };
  
  /* A subclass of region_model_context for determining if operations fail
--- 715,767 ----
  class noop_region_model_context : public region_model_context
  {
  public:
!   bool warn (std::unique_ptr<pending_diagnostic>) override { return false; }
!   void add_note (std::unique_ptr<pending_note>) override;
!   void on_svalue_leak (const svalue *) override {}
    void on_liveness_change (const svalue_set &,
! 			   const region_model *) override {}
!   logger *get_logger () override { return NULL; }
    void on_condition (const svalue *lhs ATTRIBUTE_UNUSED,
  		     enum tree_code op ATTRIBUTE_UNUSED,
! 		     const svalue *rhs ATTRIBUTE_UNUSED) override
    {
    }
+   void on_bounded_ranges (const svalue &,
+ 			  const bounded_ranges &) override
+   {
+   }
+   void on_pop_frame (const frame_region *) override {}
    void on_unknown_change (const svalue *sval ATTRIBUTE_UNUSED,
! 			  bool is_mutable ATTRIBUTE_UNUSED) override
    {
    }
    void on_phi (const gphi *phi ATTRIBUTE_UNUSED,
! 	       tree rhs ATTRIBUTE_UNUSED) override
    {
    }
!   void on_unexpected_tree_code (tree, const dump_location_t &) override {}
  
!   void on_escaped_function (tree) override {}
  
!   uncertainty_t *get_uncertainty () override { return NULL; }
  
!   void purge_state_involving (const svalue *sval ATTRIBUTE_UNUSED) override {}
  
!   void bifurcate (std::unique_ptr<custom_edge_info> info) override;
!   void terminate_path () override;
  
!   const extrinsic_state *get_ext_state () const override { return NULL; }
  
!   bool get_state_map_by_name (const char *,
! 			      sm_state_map **,
! 			      const state_machine **,
! 			      unsigned *,
! 			      std::unique_ptr<sm_context> *) override
    {
      return false;
    }
  
!   const gimple *get_stmt () const override { return NULL; }
  };
  
  /* A subclass of region_model_context for determining if operations fail
*************** public:
*** 1018,1024 ****
    tentative_region_model_context () : m_num_unexpected_codes (0) {}
  
    void on_unexpected_tree_code (tree, const dump_location_t &)
!     FINAL OVERRIDE
    {
      m_num_unexpected_codes++;
    }
--- 773,779 ----
    tentative_region_model_context () : m_num_unexpected_codes (0) {}
  
    void on_unexpected_tree_code (tree, const dump_location_t &)
!     final override
    {
      m_num_unexpected_codes++;
    }
*************** private:
*** 1035,1134 ****
  class region_model_context_decorator : public region_model_context
  {
   public:
!   bool warn (pending_diagnostic *d) OVERRIDE
    {
!     return m_inner->warn (d);
    }
  
!   void add_note (pending_note *pn) OVERRIDE
    {
!     m_inner->add_note (pn);
    }
  
!   void on_svalue_leak (const svalue *sval) OVERRIDE
    {
      m_inner->on_svalue_leak (sval);
    }
  
    void on_liveness_change (const svalue_set &live_svalues,
! 			   const region_model *model) OVERRIDE
    {
      m_inner->on_liveness_change (live_svalues, model);
    }
  
!   logger *get_logger () OVERRIDE
    {
      return m_inner->get_logger ();
    }
  
    void on_condition (const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) OVERRIDE
    {
      m_inner->on_condition (lhs, op, rhs);
    }
  
!   void on_unknown_change (const svalue *sval, bool is_mutable) OVERRIDE
    {
      m_inner->on_unknown_change (sval, is_mutable);
    }
  
!   void on_phi (const gphi *phi, tree rhs) OVERRIDE
    {
      m_inner->on_phi (phi, rhs);
    }
  
    void on_unexpected_tree_code (tree t,
! 				const dump_location_t &loc) OVERRIDE
    {
      m_inner->on_unexpected_tree_code (t, loc);
    }
  
!   void on_escaped_function (tree fndecl) OVERRIDE
    {
      m_inner->on_escaped_function (fndecl);
    }
  
!   uncertainty_t *get_uncertainty () OVERRIDE
    {
      return m_inner->get_uncertainty ();
    }
  
!   void purge_state_involving (const svalue *sval) OVERRIDE
    {
      m_inner->purge_state_involving (sval);
    }
  
!   void bifurcate (custom_edge_info *info) OVERRIDE
    {
!     m_inner->bifurcate (info);
    }
  
!   void terminate_path () OVERRIDE
    {
      m_inner->terminate_path ();
    }
  
!   const extrinsic_state *get_ext_state () const OVERRIDE
    {
      return m_inner->get_ext_state ();
    }
  
!   bool get_malloc_map (sm_state_map **out_smap,
! 		       const state_machine **out_sm,
! 		       unsigned *out_sm_idx) OVERRIDE
!   {
!     return m_inner->get_malloc_map (out_smap, out_sm, out_sm_idx);
!   }
! 
!   bool get_taint_map (sm_state_map **out_smap,
! 		      const state_machine **out_sm,
! 		      unsigned *out_sm_idx) OVERRIDE
    {
!     return m_inner->get_taint_map (out_smap, out_sm, out_sm_idx);
    }
  
!   const gimple *get_stmt () const OVERRIDE
    {
      return m_inner->get_stmt ();
    }
--- 790,897 ----
  class region_model_context_decorator : public region_model_context
  {
   public:
!   bool warn (std::unique_ptr<pending_diagnostic> d) override
    {
!     return m_inner->warn (std::move (d));
    }
  
!   void add_note (std::unique_ptr<pending_note> pn) override
    {
!     m_inner->add_note (std::move (pn));
    }
  
!   void on_svalue_leak (const svalue *sval) override
    {
      m_inner->on_svalue_leak (sval);
    }
  
    void on_liveness_change (const svalue_set &live_svalues,
! 			   const region_model *model) override
    {
      m_inner->on_liveness_change (live_svalues, model);
    }
  
!   logger *get_logger () override
    {
      return m_inner->get_logger ();
    }
  
    void on_condition (const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) override
    {
      m_inner->on_condition (lhs, op, rhs);
    }
  
!   void on_bounded_ranges (const svalue &sval,
! 			  const bounded_ranges &ranges) override
!   {
!     m_inner->on_bounded_ranges (sval, ranges);
!   }
! 
!   void on_pop_frame (const frame_region *frame_reg) override
!   {
!     m_inner->on_pop_frame (frame_reg);
!   }
! 
!   void on_unknown_change (const svalue *sval, bool is_mutable) override
    {
      m_inner->on_unknown_change (sval, is_mutable);
    }
  
!   void on_phi (const gphi *phi, tree rhs) override
    {
      m_inner->on_phi (phi, rhs);
    }
  
    void on_unexpected_tree_code (tree t,
! 				const dump_location_t &loc) override
    {
      m_inner->on_unexpected_tree_code (t, loc);
    }
  
!   void on_escaped_function (tree fndecl) override
    {
      m_inner->on_escaped_function (fndecl);
    }
  
!   uncertainty_t *get_uncertainty () override
    {
      return m_inner->get_uncertainty ();
    }
  
!   void purge_state_involving (const svalue *sval) override
    {
      m_inner->purge_state_involving (sval);
    }
  
!   void bifurcate (std::unique_ptr<custom_edge_info> info) override
    {
!     m_inner->bifurcate (std::move (info));
    }
  
!   void terminate_path () override
    {
      m_inner->terminate_path ();
    }
  
!   const extrinsic_state *get_ext_state () const override
    {
      return m_inner->get_ext_state ();
    }
  
!   bool get_state_map_by_name (const char *name,
! 			      sm_state_map **out_smap,
! 			      const state_machine **out_sm,
! 			      unsigned *out_sm_idx,
! 			      std::unique_ptr<sm_context> *out_sm_context)
!     override
    {
!     return m_inner->get_state_map_by_name (name, out_smap, out_sm, out_sm_idx,
! 					   out_sm_context);
    }
  
!   const gimple *get_stmt () const override
    {
      return m_inner->get_stmt ();
    }
*************** protected:
*** 1149,1157 ****
  class note_adding_context : public region_model_context_decorator
  {
  public:
!   bool warn (pending_diagnostic *d) OVERRIDE
    {
!     if (m_inner->warn (d))
        {
  	add_note (make_note ());
  	return true;
--- 912,920 ----
  class note_adding_context : public region_model_context_decorator
  {
  public:
!   bool warn (std::unique_ptr<pending_diagnostic> d) override
    {
!     if (m_inner->warn (std::move (d)))
        {
  	add_note (make_note ());
  	return true;
*************** public:
*** 1161,1167 ****
    }
  
    /* Hook to make the new note.  */
!   virtual pending_note *make_note () = 0;
  
  protected:
    note_adding_context (region_model_context *inner)
--- 924,930 ----
    }
  
    /* Hook to make the new note.  */
!   virtual std::unique_ptr<pending_note> make_note () = 0;
  
  protected:
    note_adding_context (region_model_context *inner)
*************** struct model_merger
*** 1200,1205 ****
--- 963,972 ----
    }
  
    bool mergeable_svalue_p (const svalue *) const;
+   const function_point &get_function_point () const
+   {
+     return m_point.get_function_point ();
+   }
  
    const region_model *m_model_a;
    const region_model *m_model_b;
*************** public:
*** 1239,1251 ****
      m_lhs (lhs), m_op (op), m_rhs (rhs)
    {}
  
!   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
  
    tree m_lhs;
    enum tree_code m_op;
    tree m_rhs;
  };
  
  class rejected_ranges_constraint : public rejected_constraint
  {
  public:
--- 1006,1028 ----
      m_lhs (lhs), m_op (op), m_rhs (rhs)
    {}
  
!   void dump_to_pp (pretty_printer *pp) const final override;
  
    tree m_lhs;
    enum tree_code m_op;
    tree m_rhs;
  };
  
+ class rejected_default_case : public rejected_constraint
+ {
+ public:
+   rejected_default_case (const region_model &model)
+   : rejected_constraint (model)
+   {}
+ 
+   void dump_to_pp (pretty_printer *pp) const final override;
+ };
+ 
  class rejected_ranges_constraint : public rejected_constraint
  {
  public:
*************** public:
*** 1255,1261 ****
      m_expr (expr), m_ranges (ranges)
    {}
  
!   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
  
  private:
    tree m_expr;
--- 1032,1038 ----
      m_expr (expr), m_ranges (ranges)
    {}
  
!   void dump_to_pp (pretty_printer *pp) const final override;
  
  private:
    tree m_expr;
*************** public:
*** 1270,1275 ****
--- 1047,1056 ----
    engine (const supergraph *sg = NULL, logger *logger = NULL);
    const supergraph *get_supergraph () { return m_sg; }
    region_model_manager *get_model_manager () { return &m_mgr; }
+   known_function_manager *get_known_function_manager ()
+   {
+     return m_mgr.get_known_function_manager ();
+   }
  
    void log_stats (logger *logger) const;
  
*************** using namespace ::selftest;
*** 1296,1311 ****
  class test_region_model_context : public noop_region_model_context
  {
  public:
!   bool warn (pending_diagnostic *d) FINAL OVERRIDE
    {
!     m_diagnostics.safe_push (d);
      return true;
    }
  
    unsigned get_num_diagnostics () const { return m_diagnostics.length (); }
  
    void on_unexpected_tree_code (tree t, const dump_location_t &)
!     FINAL OVERRIDE
    {
      internal_error ("unhandled tree code: %qs",
  		    get_tree_code_name (TREE_CODE (t)));
--- 1077,1092 ----
  class test_region_model_context : public noop_region_model_context
  {
  public:
!   bool warn (std::unique_ptr<pending_diagnostic> d) final override
    {
!     m_diagnostics.safe_push (d.release ());
      return true;
    }
  
    unsigned get_num_diagnostics () const { return m_diagnostics.length (); }
  
    void on_unexpected_tree_code (tree t, const dump_location_t &)
!     final override
    {
      internal_error ("unhandled tree code: %qs",
  		    get_tree_code_name (TREE_CODE (t)));
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region.cc gcc-13.1.0/gcc/analyzer/region.cc
*** gcc-12.2.0/gcc/analyzer/region.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Regions of memory.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Regions of memory.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 40,50 ****
  #include "tree-pretty-print.h"
  #include "diagnostic-color.h"
  #include "diagnostic-metadata.h"
- #include "tristate.h"
  #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
--- 41,47 ----
*************** region::maybe_get_decl () const
*** 290,299 ****
     first call and caching it internally).  */
  
  region_offset
! region::get_offset () const
  {
    if(!m_cached_offset)
!     m_cached_offset = new region_offset (calc_offset ());
    return *m_cached_offset;
  }
  
--- 287,296 ----
     first call and caching it internally).  */
  
  region_offset
! region::get_offset (region_model_manager *mgr) const
  {
    if(!m_cached_offset)
!     m_cached_offset = new region_offset (calc_offset (mgr));
    return *m_cached_offset;
  }
  
*************** region::get_subregions_for_binding (regi
*** 491,500 ****
     or a symbolic offset.  */
  
  region_offset
! region::calc_offset () const
  {
    const region *iter_region = this;
    bit_offset_t accum_bit_offset = 0;
  
    while (iter_region)
      {
--- 488,498 ----
     or a symbolic offset.  */
  
  region_offset
! region::calc_offset (region_model_manager *mgr) const
  {
    const region *iter_region = this;
    bit_offset_t accum_bit_offset = 0;
+   const svalue *accum_byte_sval = NULL;
  
    while (iter_region)
      {
*************** region::calc_offset () const
*** 504,519 ****
  	case RK_ELEMENT:
  	case RK_OFFSET:
  	case RK_BIT_RANGE:
! 	  {
! 	    bit_offset_t rel_bit_offset;
! 	    if (!iter_region->get_relative_concrete_offset (&rel_bit_offset))
! 	      return region_offset::make_symbolic
! 		(iter_region->get_parent_region ());
! 	    accum_bit_offset += rel_bit_offset;
! 	    iter_region = iter_region->get_parent_region ();
! 	  }
  	  continue;
- 
  	case RK_SIZED:
  	  iter_region = iter_region->get_parent_region ();
  	  continue;
--- 502,537 ----
  	case RK_ELEMENT:
  	case RK_OFFSET:
  	case RK_BIT_RANGE:
! 	  if (accum_byte_sval)
! 	    {
! 	      const svalue *sval
! 		= iter_region->get_relative_symbolic_offset (mgr);
! 	      accum_byte_sval
! 		= mgr->get_or_create_binop (sval->get_type (), PLUS_EXPR,
! 					    accum_byte_sval, sval);
! 	      iter_region = iter_region->get_parent_region ();
! 	    }
! 	  else
! 	    {
! 	      bit_offset_t rel_bit_offset;
! 	      if (iter_region->get_relative_concrete_offset (&rel_bit_offset))
! 		{
! 		  accum_bit_offset += rel_bit_offset;
! 		  iter_region = iter_region->get_parent_region ();
! 		}
! 	      else
! 		{
! 		  /* If the iter_region is not concrete anymore, convert the
! 		     accumulated bits to a svalue in bytes and revisit the
! 		     iter_region collecting the symbolic value.  */
! 		  byte_offset_t byte_offset = accum_bit_offset / BITS_PER_UNIT;
! 		  tree offset_tree = wide_int_to_tree (integer_type_node,
! 						       byte_offset);
! 		  accum_byte_sval
! 		    = mgr->get_or_create_constant_svalue (offset_tree);
! 		}
! 	    }
  	  continue;
  	case RK_SIZED:
  	  iter_region = iter_region->get_parent_region ();
  	  continue;
*************** region::calc_offset () const
*** 527,536 ****
  	  continue;
  
  	default:
! 	  return region_offset::make_concrete (iter_region, accum_bit_offset);
  	}
      }
!   return region_offset::make_concrete (iter_region, accum_bit_offset);
  }
  
  /* Base implementation of region::get_relative_concrete_offset vfunc.  */
--- 545,562 ----
  	  continue;
  
  	default:
! 	  return accum_byte_sval
! 		  ? region_offset::make_symbolic (iter_region,
! 						  accum_byte_sval)
! 		  : region_offset::make_concrete (iter_region,
! 						  accum_bit_offset);
  	}
      }
! 
!   return accum_byte_sval ? region_offset::make_symbolic (iter_region,
! 							 accum_byte_sval)
! 			 : region_offset::make_concrete (iter_region,
! 							 accum_bit_offset);
  }
  
  /* Base implementation of region::get_relative_concrete_offset vfunc.  */
*************** region::get_relative_concrete_offset (bi
*** 541,546 ****
--- 567,580 ----
    return false;
  }
  
+ /* Base implementation of region::get_relative_symbolic_offset vfunc.  */
+ 
+ const svalue *
+ region::get_relative_symbolic_offset (region_model_manager *mgr) const
+ {
+   return mgr->get_or_create_unknown_svalue (integer_type_node);
+ }
+ 
  /* Attempt to get the position and size of this region expressed as a
     concrete range of bytes relative to its parent.
     If successful, return true and write to *OUT.
*************** json::value *
*** 589,596 ****
  region::to_json () const
  {
    label_text desc = get_desc (true);
!   json::value *reg_js = new json::string (desc.m_buffer);
!   desc.maybe_free ();
    return reg_js;
  }
  
--- 623,629 ----
  region::to_json () const
  {
    label_text desc = get_desc (true);
!   json::value *reg_js = new json::string (desc.get ());
    return reg_js;
  }
  
*************** region::symbolic_for_unknown_ptr_p () co
*** 630,635 ****
--- 663,688 ----
    return false;
  }
  
+ /* Return true if this is a symbolic region.  */
+ 
+ bool
+ region::symbolic_p () const
+ {
+   return get_kind () == RK_SYMBOLIC;
+ }
+ 
+ /* Return true if this region is known to be zero bits in size.  */
+ 
+ bool
+ region::empty_p () const
+ {
+   bit_size_t num_bits;
+   if (get_bit_size (&num_bits))
+     if (num_bits == 0)
+       return true;
+   return false;
+ }
+ 
  /* Return true if this is a region for a decl with name DECL_NAME.
     Intended for use when debugging (for assertions and conditional
     breakpoints).  */
*************** root_region::dump_to_pp (pretty_printer
*** 1009,1014 ****
--- 1062,1078 ----
      pp_string (pp, "root_region()");
  }
  
+ /* class thread_local_region : public space_region.  */
+ 
+ void
+ thread_local_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "thread_local_region");
+   else
+     pp_string (pp, "thread_local_region()");
+ }
+ 
  /* class symbolic_region : public map_region.  */
  
  /* symbolic_region's ctor.  */
*************** decl_region::get_svalue_for_initializer
*** 1144,1149 ****
--- 1208,1216 ----
        if (DECL_EXTERNAL (m_decl))
  	return NULL;
  
+       if (empty_p ())
+ 	return NULL;
+ 
        /* Implicit initialization to zero; use a compound_svalue for it.
  	 Doing so requires that we have a concrete binding for this region,
  	 which can fail if we have a region with unknown size
*************** decl_region::get_svalue_for_initializer
*** 1153,1158 ****
--- 1220,1230 ----
        if (binding->symbolic_p ())
  	return NULL;
  
+       /* If we don't care about tracking the content of this region, then
+ 	 it's unused, and the value doesn't matter.  */
+       if (!tracked_p ())
+ 	return NULL;
+ 
        binding_cluster c (this);
        c.zero_fill_region (mgr->get_store_manager (), this);
        return mgr->get_or_create_compound_svalue (TREE_TYPE (m_decl),
*************** field_region::get_relative_concrete_offs
*** 1304,1309 ****
--- 1376,1400 ----
    return true;
  }
  
+ 
+ /* Implementation of region::get_relative_symbolic_offset vfunc
+    for field_region.
+    If known, the returned svalue is equal to the offset converted to bytes and
+    rounded off.  */
+ 
+ const svalue *
+ field_region::get_relative_symbolic_offset (region_model_manager *mgr) const
+ {
+   bit_offset_t out;
+   if (get_relative_concrete_offset (&out))
+     {
+       tree cst_tree
+ 	= wide_int_to_tree (integer_type_node, out / BITS_PER_UNIT);
+       return mgr->get_or_create_constant_svalue (cst_tree);
+     }
+   return mgr->get_or_create_unknown_svalue (integer_type_node);
+ }
+ 
  /* class element_region : public region.  */
  
  /* Implementation of region::accept vfunc for element_region.  */
*************** element_region::get_relative_concrete_of
*** 1370,1375 ****
--- 1461,1489 ----
    return false;
  }
  
+ /* Implementation of region::get_relative_symbolic_offset vfunc
+    for element_region.  */
+ 
+ const svalue *
+ element_region::get_relative_symbolic_offset (region_model_manager *mgr) const
+ {
+   tree elem_type = get_type ();
+ 
+   /* First, use int_size_in_bytes, to reject the case where we
+      have an incomplete type, or a non-constant value.  */
+   HOST_WIDE_INT hwi_byte_size = int_size_in_bytes (elem_type);
+   if (hwi_byte_size > 0)
+ 	  {
+       tree byte_size_tree = wide_int_to_tree (integer_type_node,
+ 					      hwi_byte_size);
+       const svalue *byte_size_sval
+ 	= mgr->get_or_create_constant_svalue (byte_size_tree);
+       return mgr->get_or_create_binop (integer_type_node, MULT_EXPR,
+ 				       m_index, byte_size_sval);
+     }
+   return mgr->get_or_create_unknown_svalue (integer_type_node);
+ }
+ 
  /* class offset_region : public region.  */
  
  /* Implementation of region::accept vfunc for offset_region.  */
*************** offset_region::get_relative_concrete_off
*** 1426,1431 ****
--- 1540,1579 ----
    return false;
  }
  
+ /* Implementation of region::get_relative_symbolic_offset vfunc
+    for offset_region.  */
+ 
+ const svalue *
+ offset_region::get_relative_symbolic_offset (region_model_manager *mgr
+ 					      ATTRIBUTE_UNUSED) const
+ {
+   return get_byte_offset ();
+ }
+ 
+ /* Implementation of region::get_byte_size_sval vfunc for offset_region.  */
+ 
+ const svalue *
+ offset_region::get_byte_size_sval (region_model_manager *mgr) const
+ {
+   tree offset_cst = get_byte_offset ()->maybe_get_constant ();
+   byte_size_t byte_size;
+   /* If the offset points in the middle of the region,
+      return the remaining bytes.  */
+   if (get_byte_size (&byte_size) && offset_cst)
+     {
+       byte_size_t offset = wi::to_offset (offset_cst);
+       byte_range r (0, byte_size);
+       if (r.contains_p (offset))
+ 	{
+ 	  tree remaining_byte_size = wide_int_to_tree (size_type_node,
+ 						       byte_size - offset);
+ 	  return mgr->get_or_create_constant_svalue (remaining_byte_size);
+ 	}
+     }
+ 
+   return region::get_byte_size_sval (mgr);
+ }
+ 
  /* class sized_region : public region.  */
  
  /* Implementation of region::accept vfunc for sized_region.  */
*************** cast_region::dump_to_pp (pretty_printer
*** 1520,1525 ****
--- 1668,1683 ----
      }
  }
  
+ /* Implementation of region::get_relative_concrete_offset vfunc
+    for cast_region.  */
+ 
+ bool
+ cast_region::get_relative_concrete_offset (bit_offset_t *out) const
+ {
+   *out = (int) 0;
+   return true;
+ }
+ 
  /* class heap_allocated_region : public region.  */
  
  /* Implementation of region::dump_to_pp vfunc for heap_allocated_region.  */
*************** void
*** 1541,1549 ****
  alloca_region::dump_to_pp (pretty_printer *pp, bool simple) const
  {
    if (simple)
!     pp_string (pp, "ALLOCA_REGION");
    else
!     pp_string (pp, "alloca_region()");
  }
  
  /* class string_region : public region.  */
--- 1699,1707 ----
  alloca_region::dump_to_pp (pretty_printer *pp, bool simple) const
  {
    if (simple)
!     pp_printf (pp, "ALLOCA_REGION(%i)", get_id ());
    else
!     pp_printf (pp, "alloca_region(%i)", get_id ());
  }
  
  /* class string_region : public region.  */
*************** bit_range_region::get_relative_concrete_
*** 1637,1642 ****
--- 1795,1853 ----
    return true;
  }
  
+ /* Implementation of region::get_relative_symbolic_offset vfunc for
+    bit_range_region.
+    The returned svalue is equal to the offset converted to bytes and
+    rounded off.  */
+ 
+ const svalue *
+ bit_range_region::get_relative_symbolic_offset (region_model_manager *mgr)
+   const
+ {
+   byte_offset_t start_byte = m_bits.get_start_bit_offset () / BITS_PER_UNIT;
+   tree start_bit_tree = wide_int_to_tree (integer_type_node, start_byte);
+   return mgr->get_or_create_constant_svalue (start_bit_tree);
+ }
+ 
+ /* class var_arg_region : public region.  */
+ 
+ void
+ var_arg_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     {
+       pp_string (pp, "VAR_ARG_REG(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_printf (pp, ", arg_idx: %d)", m_idx);
+     }
+   else
+     {
+       pp_string (pp, "var_arg_region(");
+       get_parent_region ()->dump_to_pp (pp, simple);
+       pp_printf (pp, ", arg_idx: %d)", m_idx);
+     }
+ }
+ 
+ /* Get the frame_region for this var_arg_region.  */
+ 
+ const frame_region *
+ var_arg_region::get_frame_region () const
+ {
+   gcc_assert (get_parent_region ());
+   return as_a <const frame_region *> (get_parent_region ());
+ }
+ 
+ /* class errno_region : public region.  */
+ 
+ void
+ errno_region::dump_to_pp (pretty_printer *pp, bool simple) const
+ {
+   if (simple)
+     pp_string (pp, "errno_region");
+   else
+     pp_string (pp, "errno_region()");
+ }
+ 
  /* class unknown_region : public region.  */
  
  /* Implementation of region::dump_to_pp vfunc for unknown_region.  */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/region.h gcc-13.1.0/gcc/analyzer/region.h
*** gcc-12.2.0/gcc/analyzer/region.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/region.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Regions of memory.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Regions of memory.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** enum memory_space
*** 34,40 ****
    MEMSPACE_GLOBALS,
    MEMSPACE_STACK,
    MEMSPACE_HEAP,
!   MEMSPACE_READONLY_DATA
  };
  
  /* An enum for discriminating between the different concrete subclasses
--- 34,41 ----
    MEMSPACE_GLOBALS,
    MEMSPACE_STACK,
    MEMSPACE_HEAP,
!   MEMSPACE_READONLY_DATA,
!   MEMSPACE_THREAD_LOCAL
  };
  
  /* An enum for discriminating between the different concrete subclasses
*************** enum region_kind
*** 49,54 ****
--- 50,56 ----
    RK_LABEL,
    RK_STACK,
    RK_HEAP,
+   RK_THREAD_LOCAL,
    RK_ROOT,
    RK_SYMBOLIC,
    RK_DECL,
*************** enum region_kind
*** 61,67 ****
    RK_ALLOCA,
    RK_STRING,
    RK_BIT_RANGE,
!   RK_UNKNOWN
  };
  
  /* Region and its subclasses.
--- 63,71 ----
    RK_ALLOCA,
    RK_STRING,
    RK_BIT_RANGE,
!   RK_VAR_ARG,
!   RK_ERRNO,
!   RK_UNKNOWN,
  };
  
  /* Region and its subclasses.
*************** enum region_kind
*** 71,96 ****
  
     region
       space_region
!        frame_region (RK_FRAME)
!        globals_region (RK_GLOBALS)
!        code_region (RK_CODE)
!        stack_region (RK_STACK)
!        heap_region (RK_HEAP)
!      root_region (RK_ROOT)
!      function_region (RK_FUNCTION)
!      label_region (RK_LABEL)
!      symbolic_region (RK_SYMBOLIC)
!      decl_region (RK_DECL),
!      field_region (RK_FIELD)
!      element_region (RK_ELEMENT)
!      offset_region (RK_OFFSET)
!      sized_region (RK_SIZED)
!      cast_region (RK_CAST)
!      heap_allocated_region (RK_HEAP_ALLOCATED)
!      alloca_region (RK_ALLOCA)
!      string_region (RK_STRING)
!      bit_range_region (RK_BIT_RANGE)
!      unknown_region (RK_UNKNOWN).  */
  
  /* Abstract base class for representing ways of accessing chunks of memory.
  
--- 75,114 ----
  
     region
       space_region
!        frame_region (RK_FRAME): a function frame on the stack
!        globals_region (RK_GLOBALS): holds globals variables (data and bss)
!        code_region (RK_CODE): represents the code segment, containing functions
!        stack_region (RK_STACK): a stack, containing all stack frames
!        heap_region (RK_HEAP): the heap, containing heap_allocated_regions
!        thread_local_region (RK_THREAD_LOCAL): thread-local data for the thread
!                                               being analyzed
!      root_region (RK_ROOT): the top-level region
!      function_region (RK_FUNCTION): the code for a particular function
!      label_region (RK_LABEL): a particular label within a function
!      symbolic_region (RK_SYMBOLIC): dereferencing a symbolic pointer
!      decl_region (RK_DECL): the memory occupied by a particular global, local,
! 			    or SSA name
!      field_region (RK_FIELD): the memory occupied by a field within a struct
! 			      or union
!      element_region (RK_ELEMENT): an element within an array
!      offset_region (RK_OFFSET): a byte-offset within another region, for
! 				handling pointer arithmetic as a region
!      sized_region (RK_SIZED): a subregion of symbolic size (in bytes)
! 			      within its parent
!      cast_region (RK_CAST): a region that views another region using a
! 			    different type
!      heap_allocated_region (RK_HEAP_ALLOCATED): an untyped region dynamically
! 						allocated on the heap via
! 						"malloc" or similar
!      alloca_region (RK_ALLOCA): an untyped region dynamically allocated on the
! 				stack via "alloca"
!      string_region (RK_STRING): a region for a STRING_CST
!      bit_range_region (RK_BIT_RANGE): a region for a specific range of bits
! 				      within another region
!      var_arg_region (RK_VAR_ARG): a region for the N-th vararg within a
! 				  frame_region for a variadic call
!      errno_region (RK_ERRNO): a region for holding "errno"
!      unknown_region (RK_UNKNOWN): for handling unimplemented tree codes.  */
  
  /* Abstract base class for representing ways of accessing chunks of memory.
  
*************** public:
*** 131,136 ****
--- 149,156 ----
    dyn_cast_string_region () const { return NULL; }
    virtual const bit_range_region *
    dyn_cast_bit_range_region () const { return NULL; }
+   virtual const var_arg_region *
+   dyn_cast_var_arg_region () const { return NULL; }
  
    virtual void accept (visitor *v) const;
  
*************** public:
*** 161,167 ****
  
    bool involves_p (const svalue *sval) const;
  
!   region_offset get_offset () const;
  
    /* Attempt to get the size of this region as a concrete number of bytes.
       If successful, return true and write the size to *OUT.
--- 181,187 ----
  
    bool involves_p (const svalue *sval) const;
  
!   region_offset get_offset (region_model_manager *mgr) const;
  
    /* Attempt to get the size of this region as a concrete number of bytes.
       If successful, return true and write the size to *OUT.
*************** public:
*** 182,187 ****
--- 202,212 ----
       Otherwise return false.  */
    virtual bool get_relative_concrete_offset (bit_offset_t *out) const;
  
+   /* Get the offset in bytes of this region relative to its parent as a svalue.
+      Might return an unknown_svalue.  */
+   virtual const svalue *
+   get_relative_symbolic_offset (region_model_manager *mgr) const;
+ 
    /* Attempt to get the position and size of this region expressed as a
       concrete range of bytes relative to its parent.
       If successful, return true and write to *OUT.
*************** public:
*** 197,202 ****
--- 222,229 ----
  
    bool symbolic_for_unknown_ptr_p () const;
  
+   bool symbolic_p () const;
+ 
    /* For most base regions it makes sense to track the bindings of the region
       within the store.  As an optimization, some are not tracked (to avoid
       bloating the store object with redundant binding clusters).  */
*************** public:
*** 206,216 ****
  
    bool is_named_decl_p (const char *decl_name) const;
  
   protected:
    region (complexity c, unsigned id, const region *parent, tree type);
  
   private:
!   region_offset calc_offset () const;
  
    complexity m_complexity;
    unsigned m_id; // purely for deterministic sorting at this stage, for dumps
--- 233,245 ----
  
    bool is_named_decl_p (const char *decl_name) const;
  
+   bool empty_p () const;
+ 
   protected:
    region (complexity c, unsigned id, const region *parent, tree type);
  
   private:
!   region_offset calc_offset (region_model_manager *mgr) const;
  
    complexity m_complexity;
    unsigned m_id; // purely for deterministic sorting at this stage, for dumps
*************** public:
*** 302,314 ****
    ~frame_region ();
  
    /* region vfuncs.  */
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FRAME; }
!   const frame_region * dyn_cast_frame_region () const FINAL OVERRIDE
    {
      return this;
    }
!   void accept (visitor *v) const FINAL OVERRIDE;
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    /* Accessors.  */
    const frame_region *get_calling_frame () const { return m_calling_frame; }
--- 331,343 ----
    ~frame_region ();
  
    /* region vfuncs.  */
!   enum region_kind get_kind () const final override { return RK_FRAME; }
!   const frame_region * dyn_cast_frame_region () const final override
    {
      return this;
    }
!   void accept (visitor *v) const final override;
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
    /* Accessors.  */
    const frame_region *get_calling_frame () const { return m_calling_frame; }
*************** class globals_region : public space_regi
*** 367,374 ****
    {}
  
    /* region vfuncs.  */
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_GLOBALS; }
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  };
  
  } // namespace ana
--- 396,403 ----
    {}
  
    /* region vfuncs.  */
!   enum region_kind get_kind () const final override { return RK_GLOBALS; }
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  };
  
  } // namespace ana
*************** public:
*** 394,401 ****
    {}
  
    /* region vfuncs.  */
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_CODE; }
  };
  
  } // namespace ana
--- 423,430 ----
    {}
  
    /* region vfuncs.  */
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   enum region_kind get_kind () const final override { return RK_CODE; }
  };
  
  } // namespace ana
*************** public:
*** 424,433 ****
    }
  
    /* region vfuncs.  */
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FUNCTION; }
    const function_region *
!   dyn_cast_function_region () const FINAL OVERRIDE{ return this; }
  
    tree get_fndecl () const { return m_fndecl; }
  
--- 453,462 ----
    }
  
    /* region vfuncs.  */
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   enum region_kind get_kind () const final override { return RK_FUNCTION; }
    const function_region *
!   dyn_cast_function_region () const final override{ return this; }
  
    tree get_fndecl () const { return m_fndecl; }
  
*************** public:
*** 460,467 ****
    }
  
    /* region vfuncs.  */
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_LABEL; }
  
    tree get_label () const { return m_label; }
  
--- 489,496 ----
    }
  
    /* region vfuncs.  */
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   enum region_kind get_kind () const final override { return RK_LABEL; }
  
    tree get_label () const { return m_label; }
  
*************** public:
*** 491,499 ****
    : space_region (id, parent)
    {}
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_STACK; }
  };
  
  } // namespace ana
--- 520,528 ----
    : space_region (id, parent)
    {}
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
!   enum region_kind get_kind () const final override { return RK_STACK; }
  };
  
  } // namespace ana
*************** public:
*** 518,525 ****
    : space_region (id, parent)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_HEAP; }
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  };
  
  } // namespace ana
--- 547,554 ----
    : space_region (id, parent)
    {}
  
!   enum region_kind get_kind () const final override { return RK_HEAP; }
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  };
  
  } // namespace ana
*************** is_a_helper <const heap_region *>::test
*** 534,539 ****
--- 563,594 ----
  
  namespace ana {
  
+ /* Concrete space_region subclass: thread-local data for the thread
+    being analyzed.  */
+ 
+ class thread_local_region : public space_region
+ {
+ public:
+   thread_local_region (unsigned id, region *parent)
+   : space_region (id, parent)
+   {}
+ 
+   enum region_kind get_kind () const final override { return RK_THREAD_LOCAL; }
+   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const thread_local_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_THREAD_LOCAL;
+ }
+ 
+ namespace ana {
+ 
  /* Concrete region subclass.  The root region, containing all regions
     (either directly, or as descendents).
     Unique within a region_model_manager.  */
*************** class root_region : public region
*** 543,550 ****
  public:
    root_region (unsigned id);
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ROOT; }
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  };
  
  } // namespace ana
--- 598,605 ----
  public:
    root_region (unsigned id);
  
!   enum region_kind get_kind () const final override { return RK_ROOT; }
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  };
  
  } // namespace ana
*************** public:
*** 602,612 ****
    symbolic_region (unsigned id, region *parent, const svalue *sval_ptr);
  
    const symbolic_region *
!   dyn_cast_symbolic_region () const FINAL OVERRIDE { return this; }
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_SYMBOLIC; }
!   void accept (visitor *v) const FINAL OVERRIDE;
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    const svalue *get_pointer () const { return m_sval_ptr; }
  
--- 657,667 ----
    symbolic_region (unsigned id, region *parent, const svalue *sval_ptr);
  
    const symbolic_region *
!   dyn_cast_symbolic_region () const final override { return this; }
  
!   enum region_kind get_kind () const final override { return RK_SYMBOLIC; }
!   void accept (visitor *v) const final override;
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
    const svalue *get_pointer () const { return m_sval_ptr; }
  
*************** public:
*** 644,656 ****
      m_tracked (calc_tracked_p (decl))
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_DECL; }
    const decl_region *
!   dyn_cast_decl_region () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
!   bool tracked_p () const FINAL OVERRIDE { return m_tracked; }
  
    tree get_decl () const { return m_decl; }
    int get_stack_depth () const;
--- 699,711 ----
      m_tracked (calc_tracked_p (decl))
    {}
  
!   enum region_kind get_kind () const final override { return RK_DECL; }
    const decl_region *
!   dyn_cast_decl_region () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
!   bool tracked_p () const final override { return m_tracked; }
  
    tree get_decl () const { return m_decl; }
    int get_stack_depth () const;
*************** public:
*** 726,740 ****
      m_field (field)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_FIELD; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
    const field_region *
!   dyn_cast_field_region () const FINAL OVERRIDE { return this; }
  
    tree get_field () const { return m_field; }
  
!   bool get_relative_concrete_offset (bit_offset_t *out) const FINAL OVERRIDE;
  
  private:
    tree m_field;
--- 781,797 ----
      m_field (field)
    {}
  
!   enum region_kind get_kind () const final override { return RK_FIELD; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
    const field_region *
!   dyn_cast_field_region () const final override { return this; }
  
    tree get_field () const { return m_field; }
  
!   bool get_relative_concrete_offset (bit_offset_t *out) const final override;
!   const svalue *get_relative_symbolic_offset (region_model_manager *mgr)
!     const final override;
  
  private:
    tree m_field;
*************** public:
*** 807,824 ****
      m_index (index)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ELEMENT; }
    const element_region *
!   dyn_cast_element_region () const FINAL OVERRIDE { return this; }
  
!   void accept (visitor *v) const FINAL OVERRIDE;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    const svalue *get_index () const { return m_index; }
  
    virtual bool
!   get_relative_concrete_offset (bit_offset_t *out) const FINAL OVERRIDE;
  
  private:
    const svalue *m_index;
--- 864,883 ----
      m_index (index)
    {}
  
!   enum region_kind get_kind () const final override { return RK_ELEMENT; }
    const element_region *
!   dyn_cast_element_region () const final override { return this; }
  
!   void accept (visitor *v) const final override;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
    const svalue *get_index () const { return m_index; }
  
    virtual bool
!   get_relative_concrete_offset (bit_offset_t *out) const final override;
!   const svalue *get_relative_symbolic_offset (region_model_manager *mgr)
!     const final override;
  
  private:
    const svalue *m_index;
*************** public:
*** 892,908 ****
      m_byte_offset (byte_offset)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_OFFSET; }
    const offset_region *
!   dyn_cast_offset_region () const FINAL OVERRIDE { return this; }
  
!   void accept (visitor *v) const FINAL OVERRIDE;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    const svalue *get_byte_offset () const { return m_byte_offset; }
  
!   bool get_relative_concrete_offset (bit_offset_t *out) const FINAL OVERRIDE;
  
  private:
    const svalue *m_byte_offset;
--- 951,972 ----
      m_byte_offset (byte_offset)
    {}
  
!   enum region_kind get_kind () const final override { return RK_OFFSET; }
    const offset_region *
!   dyn_cast_offset_region () const final override { return this; }
  
!   void accept (visitor *v) const final override;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
    const svalue *get_byte_offset () const { return m_byte_offset; }
  
!   bool get_relative_concrete_offset (bit_offset_t *out) const final override;
!   const svalue *get_relative_symbolic_offset (region_model_manager *mgr)
!     const final override;
!   const svalue * get_byte_size_sval (region_model_manager *mgr)
!     const final override;
! 
  
  private:
    const svalue *m_byte_offset;
*************** public:
*** 980,998 ****
      m_byte_size_sval (byte_size_sval)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_SIZED; }
    const sized_region *
!   dyn_cast_sized_region () const FINAL OVERRIDE { return this; }
  
!   void accept (visitor *v) const FINAL OVERRIDE;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
!   bool get_byte_size (byte_size_t *out) const FINAL OVERRIDE;
!   bool get_bit_size (bit_size_t *out) const FINAL OVERRIDE;
  
    const svalue *
!   get_byte_size_sval (region_model_manager *) const FINAL OVERRIDE
    {
      return m_byte_size_sval;
    }
--- 1044,1062 ----
      m_byte_size_sval (byte_size_sval)
    {}
  
!   enum region_kind get_kind () const final override { return RK_SIZED; }
    const sized_region *
!   dyn_cast_sized_region () const final override { return this; }
  
!   void accept (visitor *v) const final override;
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
!   bool get_byte_size (byte_size_t *out) const final override;
!   bool get_bit_size (bit_size_t *out) const final override;
  
    const svalue *
!   get_byte_size_sval (region_model_manager *) const final override
    {
      return m_byte_size_sval;
    }
*************** public:
*** 1062,1072 ****
      m_original_region (original_region)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_CAST; }
    const cast_region *
!   dyn_cast_cast_region () const FINAL OVERRIDE { return this; }
!   void accept (visitor *v) const FINAL OVERRIDE;
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    const region *get_original_region () const { return m_original_region; }
  
--- 1126,1138 ----
      m_original_region (original_region)
    {}
  
!   enum region_kind get_kind () const final override { return RK_CAST; }
    const cast_region *
!   dyn_cast_cast_region () const final override { return this; }
!   void accept (visitor *v) const final override;
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
! 
!   bool get_relative_concrete_offset (bit_offset_t *out) const final override;
  
    const region *get_original_region () const { return m_original_region; }
  
*************** public:
*** 1103,1111 ****
    {}
  
    enum region_kind
!   get_kind () const FINAL OVERRIDE { return RK_HEAP_ALLOCATED; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  };
  
  /* An untyped region dynamically allocated on the stack via "alloca".  */
--- 1169,1177 ----
    {}
  
    enum region_kind
!   get_kind () const final override { return RK_HEAP_ALLOCATED; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  };
  
  /* An untyped region dynamically allocated on the stack via "alloca".  */
*************** public:
*** 1117,1125 ****
    : region (complexity (parent), id, parent, NULL_TREE)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_ALLOCA; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  };
  
  /* A region for a STRING_CST.  */
--- 1183,1191 ----
    : region (complexity (parent), id, parent, NULL_TREE)
    {}
  
!   enum region_kind get_kind () const final override { return RK_ALLOCA; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  };
  
  /* A region for a STRING_CST.  */
*************** public:
*** 1133,1143 ****
    {}
  
    const string_region *
!   dyn_cast_string_region () const FINAL OVERRIDE { return this; }
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_STRING; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    tree get_string_cst () const { return m_string_cst; }
  
--- 1199,1213 ----
    {}
  
    const string_region *
!   dyn_cast_string_region () const final override { return this; }
  
!   enum region_kind get_kind () const final override { return RK_STRING; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
! 
!   /* We assume string literals are immutable, so we don't track them in
!      the store.  */
!   bool tracked_p () const final override { return false; }
  
    tree get_string_cst () const { return m_string_cst; }
  
*************** public:
*** 1208,1225 ****
    {}
  
    const bit_range_region *
!   dyn_cast_bit_range_region () const FINAL OVERRIDE { return this; }
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_BIT_RANGE; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
    const bit_range &get_bits () const { return m_bits; }
  
!   bool get_byte_size (byte_size_t *out) const FINAL OVERRIDE;
!   bool get_bit_size (bit_size_t *out) const FINAL OVERRIDE;
!   const svalue *get_byte_size_sval (region_model_manager *mgr) const FINAL OVERRIDE;
!   bool get_relative_concrete_offset (bit_offset_t *out) const FINAL OVERRIDE;
  
  private:
    bit_range m_bits;
--- 1278,1297 ----
    {}
  
    const bit_range_region *
!   dyn_cast_bit_range_region () const final override { return this; }
  
!   enum region_kind get_kind () const final override { return RK_BIT_RANGE; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
    const bit_range &get_bits () const { return m_bits; }
  
!   bool get_byte_size (byte_size_t *out) const final override;
!   bool get_bit_size (bit_size_t *out) const final override;
!   const svalue *get_byte_size_sval (region_model_manager *mgr) const final override;
!   bool get_relative_concrete_offset (bit_offset_t *out) const final override;
!   const svalue *get_relative_symbolic_offset (region_model_manager *mgr)
!     const final override;
  
  private:
    bit_range m_bits;
*************** template <> struct default_hash_traits<b
*** 1243,1248 ****
--- 1315,1427 ----
  
  namespace ana {
  
+ /* A region for the N-th vararg within a frame_region for a variadic call.  */
+ 
+ class var_arg_region : public region
+ {
+ public:
+   /* A support class for uniquifying instances of var_arg_region.  */
+   struct key_t
+   {
+     key_t (const frame_region *parent, unsigned idx)
+     : m_parent (parent), m_idx (idx)
+     {
+       gcc_assert (parent);
+     }
+ 
+     hashval_t hash () const
+     {
+       inchash::hash hstate;
+       hstate.add_ptr (m_parent);
+       hstate.add_int (m_idx);
+       return hstate.end ();
+     }
+ 
+     bool operator== (const key_t &other) const
+     {
+       return (m_parent == other.m_parent
+ 	      && m_idx == other.m_idx);
+     }
+ 
+     void mark_deleted ()
+     {
+       m_parent = reinterpret_cast<const frame_region *> (1);
+     }
+     void mark_empty () { m_parent = NULL; }
+     bool is_deleted () const
+     {
+       return m_parent == reinterpret_cast<const frame_region *> (1);
+     }
+     bool is_empty () const { return m_parent == NULL; }
+ 
+     const frame_region *m_parent;
+     unsigned m_idx;
+   };
+ 
+   var_arg_region (unsigned id, const frame_region *parent,
+ 		  unsigned idx)
+   : region (complexity (parent), id, parent, NULL_TREE),
+     m_idx (idx)
+   {}
+ 
+   const var_arg_region *
+   dyn_cast_var_arg_region () const final override { return this; }
+ 
+   enum region_kind get_kind () const final override { return RK_VAR_ARG; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
+ 
+   const frame_region *get_frame_region () const;
+   unsigned get_index () const { return m_idx; }
+ 
+ private:
+   unsigned m_idx;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const var_arg_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_VAR_ARG;
+ }
+ 
+ template <> struct default_hash_traits<var_arg_region::key_t>
+ : public member_function_hash_traits<var_arg_region::key_t>
+ {
+   static const bool empty_zero_p = true;
+ };
+ 
+ namespace ana {
+ 
+ /* A region for errno for the current thread.  */
+ 
+ class errno_region : public region
+ {
+ public:
+   errno_region (unsigned id, const thread_local_region *parent)
+   : region (complexity (parent), id, parent, integer_type_node)
+   {}
+ 
+   enum region_kind get_kind () const final override { return RK_ERRNO; }
+ 
+   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
+ };
+ 
+ } // namespace ana
+ 
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const errno_region *>::test (const region *reg)
+ {
+   return reg->get_kind () == RK_ERRNO;
+ }
+ 
+ namespace ana {
+ 
  /* An unknown region, for handling unimplemented tree codes.  */
  
  class unknown_region : public region
*************** public:
*** 1252,1260 ****
    : region (complexity (parent), id, parent, type)
    {}
  
!   enum region_kind get_kind () const FINAL OVERRIDE { return RK_UNKNOWN; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  };
  
  } // namespace ana
--- 1431,1439 ----
    : region (complexity (parent), id, parent, type)
    {}
  
!   enum region_kind get_kind () const final override { return RK_UNKNOWN; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  };
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-fd.cc gcc-13.1.0/gcc/analyzer/sm-fd.cc
*** gcc-12.2.0/gcc/analyzer/sm-fd.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/sm-fd.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,2713 ----
+ /* A state machine for detecting misuses of POSIX file descriptor APIs.
+    Copyright (C) 2019-2023 Free Software Foundation, Inc.
+    Contributed by Immad Mir <mir@sourceware.org>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "make-unique.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "options.h"
+ #include "diagnostic-path.h"
+ #include "diagnostic-metadata.h"
+ #include "analyzer/analyzer.h"
+ #include "diagnostic-event-id.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/sm.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/function-set.h"
+ #include "analyzer/analyzer-selftests.h"
+ #include "stringpool.h"
+ #include "attribs.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "bitmap.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/analyzer-language.h"
+ #include "analyzer/call-details.h"
+ #include "analyzer/call-info.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ namespace {
+ 
+ /* An enum for distinguishing between three different access modes.  */
+ 
+ enum access_mode
+ {
+   READ_WRITE,
+   READ_ONLY,
+   WRITE_ONLY
+ };
+ 
+ enum access_directions
+ {
+   DIRS_READ_WRITE,
+   DIRS_READ,
+   DIRS_WRITE
+ };
+ 
+ /* An enum for distinguishing between dup, dup2 and dup3.  */
+ enum dup
+ {
+   DUP_1,
+   DUP_2,
+   DUP_3
+ };
+ 
+ /* Enum for use by -Wanalyzer-fd-phase-mismatch.  */
+ 
+ enum expected_phase
+ {
+   EXPECTED_PHASE_CAN_TRANSFER, /* can "read"/"write".  */
+   EXPECTED_PHASE_CAN_BIND,
+   EXPECTED_PHASE_CAN_LISTEN,
+   EXPECTED_PHASE_CAN_ACCEPT,
+   EXPECTED_PHASE_CAN_CONNECT
+ };
+ 
+ class fd_state_machine : public state_machine
+ {
+ public:
+   fd_state_machine (logger *logger);
+ 
+   bool
+   inherited_state_p () const final override
+   {
+     return false;
+   }
+ 
+   state_machine::state_t
+   get_default_state (const svalue *sval) const final override
+   {
+     if (tree cst = sval->maybe_get_constant ())
+       {
+ 	if (TREE_CODE (cst) == INTEGER_CST)
+ 	  {
+ 	    int val = TREE_INT_CST_LOW (cst);
+ 	    if (val >= 0)
+ 	      return m_constant_fd;
+ 	    else
+ 	      return m_invalid;
+ 	  }
+       }
+     return m_start;
+   }
+ 
+   bool on_stmt (sm_context *sm_ctxt, const supernode *node,
+ 		const gimple *stmt) const final override;
+ 
+   void on_condition (sm_context *sm_ctxt, const supernode *node,
+ 		     const gimple *stmt, const svalue *lhs, const tree_code op,
+ 		     const svalue *rhs) const final override;
+ 
+   bool can_purge_p (state_t s) const final override;
+   std::unique_ptr<pending_diagnostic> on_leak (tree var) const final override;
+ 
+   bool is_unchecked_fd_p (state_t s) const;
+   bool is_valid_fd_p (state_t s) const;
+   bool is_socket_fd_p (state_t s) const;
+   bool is_datagram_socket_fd_p (state_t s) const;
+   bool is_stream_socket_fd_p (state_t s) const;
+   bool is_closed_fd_p (state_t s) const;
+   bool is_constant_fd_p (state_t s) const;
+   bool is_readonly_fd_p (state_t s) const;
+   bool is_writeonly_fd_p (state_t s) const;
+   enum access_mode get_access_mode_from_flag (int flag) const;
+   /* Function for one-to-one correspondence between valid
+      and unchecked states.  */
+   state_t valid_to_unchecked_state (state_t state) const;
+ 
+   void mark_as_valid_fd (region_model *model,
+ 			 sm_state_map *smap,
+ 			 const svalue *fd_sval,
+ 			 const extrinsic_state &ext_state) const;
+ 
+   bool on_socket (const call_details &cd,
+ 		  bool successful,
+ 		  sm_context *sm_ctxt,
+ 		  const extrinsic_state &ext_state) const;
+   bool on_bind (const call_details &cd,
+ 		bool successful,
+ 		sm_context *sm_ctxt,
+ 		const extrinsic_state &ext_state) const;
+   bool on_listen (const call_details &cd,
+ 		  bool successful,
+ 		  sm_context *sm_ctxt,
+ 		  const extrinsic_state &ext_state) const;
+   bool on_accept (const call_details &cd,
+ 		  bool successful,
+ 		  sm_context *sm_ctxt,
+ 		  const extrinsic_state &ext_state) const;
+   bool on_connect (const call_details &cd,
+ 		   bool successful,
+ 		   sm_context *sm_ctxt,
+ 		   const extrinsic_state &ext_state) const;
+ 
+   /* State for a constant file descriptor (>= 0) */
+   state_t m_constant_fd;
+ 
+   /* States representing a file descriptor that hasn't yet been
+     checked for validity after opening, for three different
+     access modes.  */
+   state_t m_unchecked_read_write;
+ 
+   state_t m_unchecked_read_only;
+ 
+   state_t m_unchecked_write_only;
+ 
+   /* States for representing a file descriptor that is known to be valid (>=
+     0), for three different access modes.  */
+   state_t m_valid_read_write;
+ 
+   state_t m_valid_read_only;
+ 
+   state_t m_valid_write_only;
+ 
+   /* State for a file descriptor that is known to be invalid (< 0). */
+   state_t m_invalid;
+ 
+   /* State for a file descriptor that has been closed.  */
+   state_t m_closed;
+ 
+   /* States for FDs relating to socket APIs.  */
+ 
+   /* Result of successful "socket" with SOCK_DGRAM.  */
+   state_t m_new_datagram_socket;
+   /* Result of successful "socket" with SOCK_STREAM.  */
+   state_t m_new_stream_socket;
+   /* Result of successful "socket" with unknown type.  */
+   state_t m_new_unknown_socket;
+ 
+   /* The above after a successful call to "bind".  */
+   state_t m_bound_datagram_socket;
+   state_t m_bound_stream_socket;
+   state_t m_bound_unknown_socket;
+ 
+   /* A bound socket after a successful call to "listen" (stream or unknown).  */
+   state_t m_listening_stream_socket;
+ 
+   /* (i) the new FD as a result of a succesful call to "accept" on a
+      listening socket (via a passive open), or
+      (ii) an active socket after a successful call to "connect"
+      (via an active open).  */
+   state_t m_connected_stream_socket;
+ 
+   /* State for a file descriptor that we do not want to track anymore . */
+   state_t m_stop;
+ 
+   /* Stashed constant values from the frontend.  These could be NULL.  */
+   tree m_O_ACCMODE;
+   tree m_O_RDONLY;
+   tree m_O_WRONLY;
+   tree m_SOCK_STREAM;
+   tree m_SOCK_DGRAM;
+ 
+ private:
+   void on_open (sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+ 		const gcall *call) const;
+   void on_creat (sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+ 		const gcall *call) const;
+   void on_close (sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+ 		 const gcall *call) const;
+   void on_read (sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+ 		const gcall *call, const tree callee_fndecl) const;
+   void on_write (sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+ 		 const gcall *call, const tree callee_fndecl) const;
+   void check_for_open_fd (sm_context *sm_ctxt, const supernode *node,
+ 			  const gimple *stmt, const gcall *call,
+ 			  const tree callee_fndecl,
+ 			  enum access_directions access_fn) const;
+ 
+   void make_valid_transitions_on_condition (sm_context *sm_ctxt,
+ 					    const supernode *node,
+ 					    const gimple *stmt,
+ 					    const svalue *lhs) const;
+   void make_invalid_transitions_on_condition (sm_context *sm_ctxt,
+ 					      const supernode *node,
+ 					      const gimple *stmt,
+ 					      const svalue *lhs) const;
+   void check_for_fd_attrs (sm_context *sm_ctxt, const supernode *node,
+ 			   const gimple *stmt, const gcall *call,
+ 			   const tree callee_fndecl, const char *attr_name,
+ 			   access_directions fd_attr_access_dir) const;
+   void check_for_dup (sm_context *sm_ctxt, const supernode *node,
+        const gimple *stmt, const gcall *call, const tree callee_fndecl,
+        enum dup kind) const;
+ 
+   state_t get_state_for_socket_type (const svalue *socket_type_sval) const;
+ 
+   bool check_for_socket_fd (const call_details &cd,
+ 			    bool successful,
+ 			    sm_context *sm_ctxt,
+ 			    const svalue *fd_sval,
+ 			    const supernode *node,
+ 			    state_t old_state,
+ 			    bool *complained = NULL) const;
+   bool check_for_new_socket_fd (const call_details &cd,
+ 				bool successful,
+ 				sm_context *sm_ctxt,
+ 				const svalue *fd_sval,
+ 				const supernode *node,
+ 				state_t old_state,
+ 				enum expected_phase expected_phase) const;
+ };
+ 
+ /* Base diagnostic class relative to fd_state_machine.  */
+ class fd_diagnostic : public pending_diagnostic
+ {
+ public:
+   fd_diagnostic (const fd_state_machine &sm, tree arg) : m_sm (sm), m_arg (arg)
+   {
+   }
+ 
+   bool
+   subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     return same_tree_p (m_arg, ((const fd_diagnostic &)base_other).m_arg);
+   }
+ 
+   label_text
+   describe_state_change (const evdesc::state_change &change) override
+   {
+     if (change.m_old_state == m_sm.get_start_state ())
+       {
+ 	if (change.m_new_state == m_sm.m_unchecked_read_write
+ 	    || change.m_new_state == m_sm.m_valid_read_write)
+ 	  return change.formatted_print ("opened here as read-write");
+ 
+ 	if (change.m_new_state == m_sm.m_unchecked_read_only
+ 	    || change.m_new_state == m_sm.m_valid_read_only)
+ 	  return change.formatted_print ("opened here as read-only");
+ 
+ 	if (change.m_new_state == m_sm.m_unchecked_write_only
+ 	    || change.m_new_state == m_sm.m_valid_write_only)
+ 	  return change.formatted_print ("opened here as write-only");
+ 
+ 	if (change.m_new_state == m_sm.m_new_datagram_socket)
+ 	  return change.formatted_print ("datagram socket created here");
+ 
+ 	if (change.m_new_state == m_sm.m_new_stream_socket)
+ 	  return change.formatted_print ("stream socket created here");
+ 
+ 	if (change.m_new_state == m_sm.m_new_unknown_socket
+ 	    || change.m_new_state == m_sm.m_connected_stream_socket)
+ 	  return change.formatted_print ("socket created here");
+       }
+ 
+     if (change.m_new_state == m_sm.m_bound_datagram_socket)
+       return change.formatted_print ("datagram socket bound here");
+ 
+     if (change.m_new_state == m_sm.m_bound_stream_socket)
+       return change.formatted_print ("stream socket bound here");
+ 
+     if (change.m_new_state == m_sm.m_bound_unknown_socket
+ 	|| change.m_new_state == m_sm.m_connected_stream_socket)
+ 	  return change.formatted_print ("socket bound here");
+ 
+     if (change.m_new_state == m_sm.m_listening_stream_socket)
+       return change.formatted_print
+ 	("stream socket marked as passive here via %qs", "listen");
+ 
+     if (change.m_new_state == m_sm.m_closed)
+       return change.formatted_print ("closed here");
+ 
+     if (m_sm.is_unchecked_fd_p (change.m_old_state)
+ 	&& m_sm.is_valid_fd_p (change.m_new_state))
+       {
+ 	if (change.m_expr)
+ 	  return change.formatted_print (
+ 	      "assuming %qE is a valid file descriptor (>= 0)", change.m_expr);
+ 	else
+ 	  return change.formatted_print ("assuming a valid file descriptor");
+       }
+ 
+     if (m_sm.is_unchecked_fd_p (change.m_old_state)
+ 	&& change.m_new_state == m_sm.m_invalid)
+       {
+ 	if (change.m_expr)
+ 	  return change.formatted_print (
+ 	      "assuming %qE is an invalid file descriptor (< 0)",
+ 	      change.m_expr);
+ 	else
+ 	  return change.formatted_print ("assuming an invalid file descriptor");
+       }
+ 
+     return label_text ();
+   }
+ 
+   diagnostic_event::meaning
+   get_meaning_for_state_change (
+       const evdesc::state_change &change) const final override
+   {
+     if (change.m_old_state == m_sm.get_start_state ()
+ 	&& (m_sm.is_unchecked_fd_p (change.m_new_state)
+ 	    || change.m_new_state == m_sm.m_new_datagram_socket
+ 	    || change.m_new_state == m_sm.m_new_stream_socket
+ 	    || change.m_new_state == m_sm.m_new_unknown_socket))
+       return diagnostic_event::meaning (diagnostic_event::VERB_acquire,
+ 			 diagnostic_event::NOUN_resource);
+     if (change.m_new_state == m_sm.m_closed)
+       return diagnostic_event::meaning (diagnostic_event::VERB_release,
+ 			 diagnostic_event::NOUN_resource);
+     return diagnostic_event::meaning ();
+   }
+ 
+ protected:
+   const fd_state_machine &m_sm;
+   tree m_arg;
+ };
+ 
+ class fd_param_diagnostic : public fd_diagnostic
+ {
+ public:
+   fd_param_diagnostic (const fd_state_machine &sm, tree arg, tree callee_fndecl,
+ 		       const char *attr_name, int arg_idx)
+       : fd_diagnostic (sm, arg), m_callee_fndecl (callee_fndecl),
+ 	m_attr_name (attr_name), m_arg_idx (arg_idx)
+   {
+   }
+ 
+   fd_param_diagnostic (const fd_state_machine &sm, tree arg, tree callee_fndecl)
+       : fd_diagnostic (sm, arg), m_callee_fndecl (callee_fndecl),
+ 	m_attr_name (NULL), m_arg_idx (-1)
+   {
+   }
+ 
+   bool
+   subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     const fd_param_diagnostic &sub_other
+ 	= (const fd_param_diagnostic &)base_other;
+     return (same_tree_p (m_arg, sub_other.m_arg)
+ 	    && same_tree_p (m_callee_fndecl, sub_other.m_callee_fndecl)
+ 	    && m_arg_idx == sub_other.m_arg_idx
+ 	    && ((m_attr_name)
+ 		    ? (strcmp (m_attr_name, sub_other.m_attr_name) == 0)
+ 		    : true));
+   }
+ 
+   void
+   inform_filedescriptor_attribute (access_directions fd_dir)
+   {
+ 
+     if (m_attr_name)
+       switch (fd_dir)
+ 	{
+ 	case DIRS_READ_WRITE:
+ 	  inform (DECL_SOURCE_LOCATION (m_callee_fndecl),
+ 		  "argument %d of %qD must be an open file descriptor, due to "
+ 		  "%<__attribute__((%s(%d)))%>",
+ 		  m_arg_idx + 1, m_callee_fndecl, m_attr_name, m_arg_idx + 1);
+ 	  break;
+ 	case DIRS_WRITE:
+ 	  inform (DECL_SOURCE_LOCATION (m_callee_fndecl),
+ 		  "argument %d of %qD must be a readable file descriptor, due "
+ 		  "to %<__attribute__((%s(%d)))%>",
+ 		  m_arg_idx + 1, m_callee_fndecl, m_attr_name, m_arg_idx + 1);
+ 	  break;
+ 	case DIRS_READ:
+ 	  inform (DECL_SOURCE_LOCATION (m_callee_fndecl),
+ 		  "argument %d of %qD must be a writable file descriptor, due "
+ 		  "to %<__attribute__((%s(%d)))%>",
+ 		  m_arg_idx + 1, m_callee_fndecl, m_attr_name, m_arg_idx + 1);
+ 	  break;
+ 	}
+   }
+ 
+ protected:
+   tree m_callee_fndecl;
+   const char *m_attr_name;
+   /* ARG_IDX is 0-based.  */
+   int m_arg_idx;
+ };
+ 
+ class fd_leak : public fd_diagnostic
+ {
+ public:
+   fd_leak (const fd_state_machine &sm, tree arg) : fd_diagnostic (sm, arg) {}
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_leak";
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_leak;
+   }
+ 
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     /*CWE-775: Missing Release of File Descriptor or Handle after Effective
+       Lifetime
+      */
+     diagnostic_metadata m;
+     m.add_cwe (775);
+     if (m_arg)
+       return warning_meta (rich_loc, m, get_controlling_option (),
+ 			   "leak of file descriptor %qE", m_arg);
+     else
+       return warning_meta (rich_loc, m, get_controlling_option (),
+ 			   "leak of file descriptor");
+   }
+ 
+   label_text
+   describe_state_change (const evdesc::state_change &change) final override
+   {
+     if (m_sm.is_unchecked_fd_p (change.m_new_state))
+       {
+ 	m_open_event = change.m_event_id;
+ 	return label_text::borrow ("opened here");
+       }
+ 
+     return fd_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_open_event.known_p ())
+       {
+ 	if (ev.m_expr)
+ 	  return ev.formatted_print ("%qE leaks here; was opened at %@",
+ 				     ev.m_expr, &m_open_event);
+ 	else
+ 	  return ev.formatted_print ("leaks here; was opened at %@",
+ 				     &m_open_event);
+       }
+     else
+       {
+ 	if (ev.m_expr)
+ 	  return ev.formatted_print ("%qE leaks here", ev.m_expr);
+ 	else
+ 	  return ev.formatted_print ("leaks here");
+       }
+   }
+ 
+ private:
+   diagnostic_event_id_t m_open_event;
+ };
+ 
+ class fd_access_mode_mismatch : public fd_param_diagnostic
+ {
+ public:
+   fd_access_mode_mismatch (const fd_state_machine &sm, tree arg,
+ 			   enum access_directions fd_dir,
+ 			   const tree callee_fndecl, const char *attr_name,
+ 			   int arg_idx)
+       : fd_param_diagnostic (sm, arg, callee_fndecl, attr_name, arg_idx),
+ 	m_fd_dir (fd_dir)
+ 
+   {
+   }
+ 
+   fd_access_mode_mismatch (const fd_state_machine &sm, tree arg,
+ 			   enum access_directions fd_dir,
+ 			   const tree callee_fndecl)
+       : fd_param_diagnostic (sm, arg, callee_fndecl), m_fd_dir (fd_dir)
+   {
+   }
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_access_mode_mismatch";
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_access_mode_mismatch;
+   }
+ 
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     bool warned;
+     switch (m_fd_dir)
+       {
+       case DIRS_READ:
+ 	warned =  warning_at (rich_loc, get_controlling_option (),
+ 			   "%qE on read-only file descriptor %qE",
+ 			   m_callee_fndecl, m_arg);
+ 	break;
+       case DIRS_WRITE:
+ 	warned = warning_at (rich_loc, get_controlling_option (),
+ 			   "%qE on write-only file descriptor %qE",
+ 			   m_callee_fndecl, m_arg);
+ 	break;
+       default:
+ 	gcc_unreachable ();
+       }
+       if (warned)
+ 	inform_filedescriptor_attribute (m_fd_dir);
+       return warned;
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     switch (m_fd_dir)
+       {
+       case DIRS_READ:
+ 	return ev.formatted_print ("%qE on read-only file descriptor %qE",
+ 				   m_callee_fndecl, m_arg);
+       case DIRS_WRITE:
+ 	return ev.formatted_print ("%qE on write-only file descriptor %qE",
+ 				   m_callee_fndecl, m_arg);
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ 
+ private:
+   enum access_directions m_fd_dir;
+ };
+ 
+ class fd_double_close : public fd_diagnostic
+ {
+ public:
+   fd_double_close (const fd_state_machine &sm, tree arg) : fd_diagnostic (sm, arg)
+   {
+   }
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_double_close";
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_double_close;
+   }
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     // CWE-1341: Multiple Releases of Same Resource or Handle
+     m.add_cwe (1341);
+     return warning_meta (rich_loc, m, get_controlling_option (),
+ 			 "double %<close%> of file descriptor %qE", m_arg);
+   }
+ 
+   label_text
+   describe_state_change (const evdesc::state_change &change) override
+   {
+     if (m_sm.is_unchecked_fd_p (change.m_new_state))
+       return label_text::borrow ("opened here");
+ 
+     if (change.m_new_state == m_sm.m_closed)
+       {
+ 	m_first_close_event = change.m_event_id;
+ 	return change.formatted_print ("first %qs here", "close");
+       }
+     return fd_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_first_close_event.known_p ())
+       return ev.formatted_print ("second %qs here; first %qs was at %@",
+ 				 "close", "close", &m_first_close_event);
+     return ev.formatted_print ("second %qs here", "close");
+   }
+ 
+ private:
+   diagnostic_event_id_t m_first_close_event;
+ };
+ 
+ class fd_use_after_close : public fd_param_diagnostic
+ {
+ public:
+   fd_use_after_close (const fd_state_machine &sm, tree arg,
+ 		      const tree callee_fndecl, const char *attr_name,
+ 		      int arg_idx)
+       : fd_param_diagnostic (sm, arg, callee_fndecl, attr_name, arg_idx)
+   {
+   }
+ 
+   fd_use_after_close (const fd_state_machine &sm, tree arg,
+ 		      const tree callee_fndecl)
+       : fd_param_diagnostic (sm, arg, callee_fndecl)
+   {
+   }
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_use_after_close";
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_use_after_close;
+   }
+ 
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     bool warned;
+     warned = warning_at (rich_loc, get_controlling_option (),
+ 		       "%qE on closed file descriptor %qE", m_callee_fndecl,
+ 		       m_arg);
+     if (warned)
+       inform_filedescriptor_attribute (DIRS_READ_WRITE);
+     return warned;
+   }
+ 
+   label_text
+   describe_state_change (const evdesc::state_change &change) override
+   {
+     if (m_sm.is_unchecked_fd_p (change.m_new_state))
+       return label_text::borrow ("opened here");
+ 
+     if (change.m_new_state == m_sm.m_closed)
+       {
+ 	m_first_close_event = change.m_event_id;
+ 	return change.formatted_print ("closed here");
+       }
+ 
+     return fd_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_first_close_event.known_p ())
+ 	return ev.formatted_print (
+ 	    "%qE on closed file descriptor %qE; %qs was at %@", m_callee_fndecl,
+ 	    m_arg, "close", &m_first_close_event);
+       else
+ 	return ev.formatted_print ("%qE on closed file descriptor %qE",
+ 				  m_callee_fndecl, m_arg);
+   }
+ 
+ private:
+   diagnostic_event_id_t m_first_close_event;
+ };
+ 
+ class fd_use_without_check : public fd_param_diagnostic
+ {
+ public:
+   fd_use_without_check (const fd_state_machine &sm, tree arg,
+ 			const tree callee_fndecl, const char *attr_name,
+ 			int arg_idx)
+       : fd_param_diagnostic (sm, arg, callee_fndecl, attr_name, arg_idx)
+   {
+   }
+ 
+   fd_use_without_check (const fd_state_machine &sm, tree arg,
+ 			const tree callee_fndecl)
+       : fd_param_diagnostic (sm, arg, callee_fndecl)
+   {
+   }
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_use_without_check";
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_use_without_check;
+   }
+ 
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     bool warned;
+     warned = warning_at (rich_loc, get_controlling_option (),
+ 			"%qE on possibly invalid file descriptor %qE",
+ 			m_callee_fndecl, m_arg);
+     if (warned)
+      inform_filedescriptor_attribute (DIRS_READ_WRITE);
+     return warned;
+   }
+ 
+   label_text
+   describe_state_change (const evdesc::state_change &change) override
+   {
+     if (m_sm.is_unchecked_fd_p (change.m_new_state))
+       {
+ 	m_first_open_event = change.m_event_id;
+ 	return label_text::borrow ("opened here");
+       }
+ 
+     return fd_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (m_first_open_event.known_p ())
+       return ev.formatted_print (
+ 	  "%qE could be invalid: unchecked value from %@", m_arg,
+ 	  &m_first_open_event);
+     else
+       return ev.formatted_print ("%qE could be invalid", m_arg);
+   }
+ 
+ private:
+   diagnostic_event_id_t m_first_open_event;
+ };
+ 
+ /* Concrete pending_diagnostic subclass for -Wanalyzer-fd-phase-mismatch.  */
+ 
+ class fd_phase_mismatch : public fd_param_diagnostic
+ {
+ public:
+   fd_phase_mismatch (const fd_state_machine &sm, tree arg,
+ 		     const tree callee_fndecl,
+ 		     state_machine::state_t actual_state,
+ 		     enum expected_phase expected_phase)
+   : fd_param_diagnostic (sm, arg, callee_fndecl),
+     m_actual_state (actual_state),
+     m_expected_phase (expected_phase)
+   {
+     gcc_assert (m_sm.is_socket_fd_p (actual_state));
+     switch (expected_phase)
+       {
+       case EXPECTED_PHASE_CAN_TRANSFER:
+ 	gcc_assert (actual_state == m_sm.m_new_stream_socket
+ 		    || actual_state == m_sm.m_bound_stream_socket
+ 		    || actual_state == m_sm.m_listening_stream_socket);
+ 	break;
+       case EXPECTED_PHASE_CAN_BIND:
+ 	gcc_assert (actual_state == m_sm.m_bound_datagram_socket
+ 		    || actual_state == m_sm.m_bound_stream_socket
+ 		    || actual_state == m_sm.m_bound_unknown_socket
+ 		    || actual_state == m_sm.m_connected_stream_socket
+ 		    || actual_state == m_sm.m_listening_stream_socket);
+ 	break;
+       case EXPECTED_PHASE_CAN_LISTEN:
+ 	gcc_assert (actual_state == m_sm.m_new_stream_socket
+ 		    || actual_state == m_sm.m_new_unknown_socket
+ 		    || actual_state == m_sm.m_connected_stream_socket);
+ 	break;
+       case EXPECTED_PHASE_CAN_ACCEPT:
+ 	gcc_assert (actual_state == m_sm.m_new_stream_socket
+ 		    || actual_state == m_sm.m_new_unknown_socket
+ 		    || actual_state == m_sm.m_bound_stream_socket
+ 		    || actual_state == m_sm.m_bound_unknown_socket
+ 		    || actual_state == m_sm.m_connected_stream_socket);
+ 	break;
+       case EXPECTED_PHASE_CAN_CONNECT:
+ 	gcc_assert (actual_state == m_sm.m_bound_datagram_socket
+ 		    || actual_state == m_sm.m_bound_stream_socket
+ 		    || actual_state == m_sm.m_bound_unknown_socket
+ 		    || actual_state == m_sm.m_listening_stream_socket
+ 		    || actual_state == m_sm.m_connected_stream_socket);
+ 	break;
+       }
+   }
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_phase_mismatch";
+   }
+ 
+   bool
+   subclass_equal_p (const pending_diagnostic &base_other) const final override
+   {
+     const fd_phase_mismatch &sub_other = (const fd_phase_mismatch &)base_other;
+     if (!fd_param_diagnostic ::subclass_equal_p (sub_other))
+       return false;
+     return (m_actual_state == sub_other.m_actual_state
+ 	    && m_expected_phase == sub_other.m_expected_phase);
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_phase_mismatch;
+   }
+ 
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     /* CWE-666: Operation on Resource in Wrong Phase of Lifetime.  */
+     diagnostic_metadata m;
+     m.add_cwe (666);
+     return warning_at (rich_loc, get_controlling_option (),
+ 		       "%qE on file descriptor %qE in wrong phase",
+ 		       m_callee_fndecl, m_arg);
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     switch (m_expected_phase)
+       {
+       case EXPECTED_PHASE_CAN_TRANSFER:
+ 	{
+ 	  if (m_actual_state == m_sm.m_new_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a stream socket to be connected via %qs"
+ 	       " but %qE has not yet been bound",
+ 	       m_callee_fndecl, "accept", m_arg);
+ 	  if (m_actual_state == m_sm.m_bound_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a stream socket to be connected via %qs"
+ 	       " but %qE is not yet listening",
+ 	       m_callee_fndecl, "accept", m_arg);
+ 	  if (m_actual_state == m_sm.m_listening_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a stream socket to be connected via"
+ 	       " the return value of %qs"
+ 	       " but %qE is listening; wrong file descriptor?",
+ 	       m_callee_fndecl, "accept", m_arg);
+ 	}
+ 	break;
+       case EXPECTED_PHASE_CAN_BIND:
+ 	{
+ 	  if (m_actual_state == m_sm.m_bound_datagram_socket
+ 	      || m_actual_state == m_sm.m_bound_stream_socket
+ 	      || m_actual_state == m_sm.m_bound_unknown_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a new socket file descriptor"
+ 	       " but %qE has already been bound",
+ 	       m_callee_fndecl, m_arg);
+ 	  if (m_actual_state == m_sm.m_connected_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a new socket file descriptor"
+ 	       " but %qE is already connected",
+ 	       m_callee_fndecl, m_arg);
+ 	  if (m_actual_state == m_sm.m_listening_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a new socket file descriptor"
+ 	       " but %qE is already listening",
+ 	       m_callee_fndecl, m_arg);
+ 	}
+ 	break;
+       case EXPECTED_PHASE_CAN_LISTEN:
+ 	{
+ 	  if (m_actual_state == m_sm.m_new_stream_socket
+ 	      || m_actual_state == m_sm.m_new_unknown_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a bound stream socket file descriptor"
+ 	       " but %qE has not yet been bound",
+ 	       m_callee_fndecl, m_arg);
+ 	  if (m_actual_state == m_sm.m_connected_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a bound stream socket file descriptor"
+ 	       " but %qE is connected",
+ 	       m_callee_fndecl, m_arg);
+ 	}
+ 	break;
+       case EXPECTED_PHASE_CAN_ACCEPT:
+ 	{
+ 	  if (m_actual_state == m_sm.m_new_stream_socket
+ 	      || m_actual_state == m_sm.m_new_unknown_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a listening stream socket file descriptor"
+ 	       " but %qE has not yet been bound",
+ 	       m_callee_fndecl, m_arg);
+ 	  if (m_actual_state == m_sm.m_bound_stream_socket
+ 	      || m_actual_state == m_sm.m_bound_unknown_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a listening stream socket file descriptor"
+ 	       " whereas %qE is bound but not yet listening",
+ 	       m_callee_fndecl, m_arg);
+ 	  if (m_actual_state == m_sm.m_connected_stream_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a listening stream socket file descriptor"
+ 	       " but %qE is connected",
+ 	       m_callee_fndecl, m_arg);
+ 	}
+ 	break;
+       case EXPECTED_PHASE_CAN_CONNECT:
+ 	{
+ 	  if (m_actual_state == m_sm.m_bound_datagram_socket
+ 	      || m_actual_state == m_sm.m_bound_stream_socket
+ 	      || m_actual_state == m_sm.m_bound_unknown_socket)
+ 	    return ev.formatted_print
+ 	      ("%qE expects a new socket file descriptor but %qE is bound",
+ 	       m_callee_fndecl, m_arg);
+ 	  else
+ 	    return ev.formatted_print
+ 	      ("%qE expects a new socket file descriptor", m_callee_fndecl);
+ 	}
+ 	break;
+       }
+     gcc_unreachable ();
+   }
+ 
+ private:
+   state_machine::state_t m_actual_state;
+   enum expected_phase m_expected_phase;
+ };
+ 
+ /* Enum for use by -Wanalyzer-fd-type-mismatch.  */
+ 
+ enum expected_type
+ {
+  EXPECTED_TYPE_SOCKET,
+  EXPECTED_TYPE_STREAM_SOCKET
+ };
+ 
+ /* Concrete pending_diagnostic subclass for -Wanalyzer-fd-type-mismatch.  */
+ 
+ class fd_type_mismatch : public fd_param_diagnostic
+ {
+ public:
+   fd_type_mismatch (const fd_state_machine &sm, tree arg,
+ 		    const tree callee_fndecl,
+ 		    state_machine::state_t actual_state,
+ 		    enum expected_type expected_type)
+   : fd_param_diagnostic (sm, arg, callee_fndecl),
+     m_actual_state (actual_state),
+     m_expected_type (expected_type)
+   {
+   }
+ 
+   const char *
+   get_kind () const final override
+   {
+     return "fd_type_mismatch";
+   }
+ 
+   bool
+   subclass_equal_p (const pending_diagnostic &base_other) const final override
+   {
+     const fd_type_mismatch &sub_other = (const fd_type_mismatch &)base_other;
+     if (!fd_param_diagnostic ::subclass_equal_p (sub_other))
+       return false;
+     return (m_actual_state == sub_other.m_actual_state
+ 	    && m_expected_type == sub_other.m_expected_type);
+   }
+ 
+   int
+   get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_fd_type_mismatch;
+   }
+ 
+   bool
+   emit (rich_location *rich_loc) final override
+   {
+     switch (m_expected_type)
+       {
+       default:
+ 	gcc_unreachable ();
+       case EXPECTED_TYPE_SOCKET:
+ 	return warning_at (rich_loc, get_controlling_option (),
+ 			   "%qE on non-socket file descriptor %qE",
+ 			   m_callee_fndecl, m_arg);
+       case EXPECTED_TYPE_STREAM_SOCKET:
+ 	if (m_sm.is_datagram_socket_fd_p (m_actual_state))
+ 	  return warning_at (rich_loc, get_controlling_option (),
+ 			     "%qE on datagram socket file descriptor %qE",
+ 			     m_callee_fndecl, m_arg);
+ 	else
+ 	  return warning_at (rich_loc, get_controlling_option (),
+ 			     "%qE on non-stream-socket file descriptor %qE",
+ 			     m_callee_fndecl, m_arg);
+       }
+   }
+ 
+   label_text
+   describe_final_event (const evdesc::final_event &ev) final override
+   {
+     switch (m_expected_type)
+       {
+       default:
+ 	break;
+ 	gcc_unreachable ();
+       case EXPECTED_TYPE_SOCKET:
+       case EXPECTED_TYPE_STREAM_SOCKET:
+ 	if (!m_sm.is_socket_fd_p (m_actual_state))
+ 	  return ev.formatted_print ("%qE expects a socket file descriptor"
+ 				     " but %qE is not a socket",
+ 				     m_callee_fndecl, m_arg);
+       }
+     gcc_assert (m_expected_type == EXPECTED_TYPE_STREAM_SOCKET);
+     gcc_assert (m_sm.is_datagram_socket_fd_p (m_actual_state));
+     return ev.formatted_print
+       ("%qE expects a stream socket file descriptor"
+        " but %qE is a datagram socket",
+        m_callee_fndecl, m_arg);
+   }
+ 
+ private:
+   state_machine::state_t m_actual_state;
+   enum expected_type m_expected_type;
+ };
+ 
+ fd_state_machine::fd_state_machine (logger *logger)
+     : state_machine ("file-descriptor", logger),
+       m_constant_fd (add_state ("fd-constant")),
+       m_unchecked_read_write (add_state ("fd-unchecked-read-write")),
+       m_unchecked_read_only (add_state ("fd-unchecked-read-only")),
+       m_unchecked_write_only (add_state ("fd-unchecked-write-only")),
+       m_valid_read_write (add_state ("fd-valid-read-write")),
+       m_valid_read_only (add_state ("fd-valid-read-only")),
+       m_valid_write_only (add_state ("fd-valid-write-only")),
+       m_invalid (add_state ("fd-invalid")),
+       m_closed (add_state ("fd-closed")),
+       m_new_datagram_socket (add_state ("fd-new-datagram-socket")),
+       m_new_stream_socket (add_state ("fd-new-stream-socket")),
+       m_new_unknown_socket (add_state ("fd-new-unknown-socket")),
+       m_bound_datagram_socket (add_state ("fd-bound-datagram-socket")),
+       m_bound_stream_socket (add_state ("fd-bound-stream-socket")),
+       m_bound_unknown_socket (add_state ("fd-bound-unknown-socket")),
+       m_listening_stream_socket (add_state ("fd-listening-stream-socket")),
+       m_connected_stream_socket (add_state ("fd-connected-stream-socket")),
+       m_stop (add_state ("fd-stop")),
+       m_O_ACCMODE (get_stashed_constant_by_name ("O_ACCMODE")),
+       m_O_RDONLY (get_stashed_constant_by_name ("O_RDONLY")),
+       m_O_WRONLY (get_stashed_constant_by_name ("O_WRONLY")),
+       m_SOCK_STREAM (get_stashed_constant_by_name ("SOCK_STREAM")),
+       m_SOCK_DGRAM (get_stashed_constant_by_name ("SOCK_DGRAM"))
+ {
+ }
+ 
+ bool
+ fd_state_machine::is_unchecked_fd_p (state_t s) const
+ {
+   return (s == m_unchecked_read_write
+        || s == m_unchecked_read_only
+        || s == m_unchecked_write_only);
+ }
+ 
+ bool
+ fd_state_machine::is_valid_fd_p (state_t s) const
+ {
+   return (s == m_valid_read_write
+        || s == m_valid_read_only
+        || s == m_valid_write_only);
+ }
+ 
+ bool
+ fd_state_machine::is_socket_fd_p (state_t s) const
+ {
+   return (s == m_new_datagram_socket
+ 	  || s == m_new_stream_socket
+ 	  || s == m_new_unknown_socket
+ 	  || s == m_bound_datagram_socket
+ 	  || s == m_bound_stream_socket
+ 	  || s == m_bound_unknown_socket
+ 	  || s == m_listening_stream_socket
+ 	  || s == m_connected_stream_socket);
+ }
+ 
+ bool
+ fd_state_machine::is_datagram_socket_fd_p (state_t s) const
+ {
+   return (s == m_new_datagram_socket
+ 	  || s == m_new_unknown_socket
+ 	  || s == m_bound_datagram_socket
+ 	  || s == m_bound_unknown_socket);
+ }
+ 
+ bool
+ fd_state_machine::is_stream_socket_fd_p (state_t s) const
+ {
+   return (s == m_new_stream_socket
+ 	  || s == m_new_unknown_socket
+ 	  || s == m_bound_stream_socket
+ 	  || s == m_bound_unknown_socket
+ 	  || s == m_listening_stream_socket
+ 	  || s == m_connected_stream_socket);
+ }
+ 
+ enum access_mode
+ fd_state_machine::get_access_mode_from_flag (int flag) const
+ {
+   if (m_O_ACCMODE && TREE_CODE (m_O_ACCMODE) == INTEGER_CST)
+     {
+       const unsigned HOST_WIDE_INT mask_val = TREE_INT_CST_LOW (m_O_ACCMODE);
+       const unsigned HOST_WIDE_INT masked_flag = flag & mask_val;
+ 
+       if (m_O_RDONLY && TREE_CODE (m_O_RDONLY) == INTEGER_CST)
+ 	if (masked_flag == TREE_INT_CST_LOW (m_O_RDONLY))
+ 	  return READ_ONLY;
+ 
+       if (m_O_WRONLY && TREE_CODE (m_O_WRONLY) == INTEGER_CST)
+ 	if (masked_flag == TREE_INT_CST_LOW (m_O_WRONLY))
+ 	  return WRITE_ONLY;
+     }
+   return READ_WRITE;
+ }
+ 
+ bool
+ fd_state_machine::is_readonly_fd_p (state_t state) const
+ {
+   return (state == m_unchecked_read_only || state == m_valid_read_only);
+ }
+ 
+ bool
+ fd_state_machine::is_writeonly_fd_p (state_t state) const
+ {
+   return (state == m_unchecked_write_only || state == m_valid_write_only);
+ }
+ 
+ bool
+ fd_state_machine::is_closed_fd_p (state_t state) const
+ {
+   return (state == m_closed);
+ }
+ 
+ bool
+ fd_state_machine::is_constant_fd_p (state_t state) const
+ {
+   return (state == m_constant_fd);
+ }
+ 
+ fd_state_machine::state_t
+ fd_state_machine::valid_to_unchecked_state (state_t state) const
+ {
+   if (state == m_valid_read_write)
+     return m_unchecked_read_write;
+   else if (state == m_valid_write_only)
+     return m_unchecked_write_only;
+   else if (state == m_valid_read_only)
+     return m_unchecked_read_only;
+   else
+     gcc_unreachable ();
+   return NULL;
+ }
+ 
+ void
+ fd_state_machine::mark_as_valid_fd (region_model *model,
+ 				    sm_state_map *smap,
+ 				    const svalue *fd_sval,
+ 				    const extrinsic_state &ext_state) const
+ {
+   smap->set_state (model, fd_sval, m_valid_read_write, NULL, ext_state);
+ }
+ 
+ bool
+ fd_state_machine::on_stmt (sm_context *sm_ctxt, const supernode *node,
+ 			   const gimple *stmt) const
+ {
+   if (const gcall *call = dyn_cast<const gcall *> (stmt))
+     if (tree callee_fndecl = sm_ctxt->get_fndecl_for_call (call))
+       {
+ 	if (is_named_call_p (callee_fndecl, "open", call, 2))
+ 	  {
+ 	    on_open (sm_ctxt, node, stmt, call);
+ 	    return true;
+ 	  } //  "open"
+ 
+ 	if (is_named_call_p (callee_fndecl, "creat", call, 2))
+ 	  {
+ 	    on_creat (sm_ctxt, node, stmt, call);
+ 	    return true;
+ 	  } // "creat"
+ 
+ 	if (is_named_call_p (callee_fndecl, "close", call, 1))
+ 	  {
+ 	    on_close (sm_ctxt, node, stmt, call);
+ 	    return true;
+ 	  } //  "close"
+ 
+ 	if (is_named_call_p (callee_fndecl, "write", call, 3))
+ 	  {
+ 	    on_write (sm_ctxt, node, stmt, call, callee_fndecl);
+ 	    return true;
+ 	  } // "write"
+ 
+ 	if (is_named_call_p (callee_fndecl, "read", call, 3))
+ 	  {
+ 	    on_read (sm_ctxt, node, stmt, call, callee_fndecl);
+ 	    return true;
+ 	  } // "read"
+ 
+ 	if (is_named_call_p (callee_fndecl, "dup", call, 1))
+ 	  {
+ 	    check_for_dup (sm_ctxt, node, stmt, call, callee_fndecl, DUP_1);
+ 	    return true;
+ 	  }
+ 
+ 	if (is_named_call_p (callee_fndecl, "dup2", call, 2))
+ 	  {
+ 	    check_for_dup (sm_ctxt, node, stmt, call, callee_fndecl, DUP_2);
+ 	    return true;
+ 	  }
+ 
+ 	if (is_named_call_p (callee_fndecl, "dup3", call, 3))
+ 	  {
+ 	    check_for_dup (sm_ctxt, node, stmt, call, callee_fndecl, DUP_3);
+ 	    return true;
+ 	  }
+ 
+ 	{
+ 	  // Handle __attribute__((fd_arg))
+ 
+ 	  check_for_fd_attrs (sm_ctxt, node, stmt, call, callee_fndecl,
+ 			      "fd_arg", DIRS_READ_WRITE);
+ 
+ 	  // Handle __attribute__((fd_arg_read))
+ 
+ 	  check_for_fd_attrs (sm_ctxt, node, stmt, call, callee_fndecl,
+ 			      "fd_arg_read", DIRS_READ);
+ 
+ 	  // Handle __attribute__((fd_arg_write))
+ 
+ 	  check_for_fd_attrs (sm_ctxt, node, stmt, call, callee_fndecl,
+ 			      "fd_arg_write", DIRS_WRITE);
+ 	}
+       }
+ 
+   return false;
+ }
+ 
+ void
+ fd_state_machine::check_for_fd_attrs (
+     sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+     const gcall *call, const tree callee_fndecl, const char *attr_name,
+     access_directions fd_attr_access_dir) const
+ {
+ 
+   tree attrs = TYPE_ATTRIBUTES (TREE_TYPE (callee_fndecl));
+   attrs = lookup_attribute (attr_name, attrs);
+   if (!attrs)
+     return;
+ 
+   if (!TREE_VALUE (attrs))
+     return;
+ 
+   auto_bitmap argmap;
+ 
+   for (tree idx = TREE_VALUE (attrs); idx; idx = TREE_CHAIN (idx))
+     {
+       unsigned int val = TREE_INT_CST_LOW (TREE_VALUE (idx)) - 1;
+       bitmap_set_bit (argmap, val);
+     }
+   if (bitmap_empty_p (argmap))
+     return;
+ 
+   for (unsigned arg_idx = 0; arg_idx < gimple_call_num_args (call); arg_idx++)
+     {
+       tree arg = gimple_call_arg (call, arg_idx);
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
+       state_t state = sm_ctxt->get_state (stmt, arg);
+       bool bit_set = bitmap_bit_p (argmap, arg_idx);
+       if (TREE_CODE (TREE_TYPE (arg)) != INTEGER_TYPE)
+ 	continue;
+       if (bit_set) // Check if arg_idx is marked by any of the file descriptor
+ 		   // attributes
+ 	{
+ 
+ 	  if (is_closed_fd_p (state))
+ 	    {
+ 
+ 	      sm_ctxt->warn (node, stmt, arg,
+ 			     make_unique<fd_use_after_close>
+ 			       (*this, diag_arg,
+ 				callee_fndecl, attr_name,
+ 				arg_idx));
+ 	      continue;
+ 	    }
+ 
+ 	  if (!(is_valid_fd_p (state) || (state == m_stop)))
+ 	    {
+ 	      if (!is_constant_fd_p (state))
+ 		{
+ 		  sm_ctxt->warn (node, stmt, arg,
+ 				 make_unique<fd_use_without_check>
+ 				 (*this, diag_arg,
+ 				  callee_fndecl, attr_name,
+ 				  arg_idx));
+ 		  continue;
+ 		}
+ 	    }
+ 
+ 	  switch (fd_attr_access_dir)
+ 	    {
+ 	    case DIRS_READ_WRITE:
+ 	      break;
+ 	    case DIRS_READ:
+ 
+ 	      if (is_writeonly_fd_p (state))
+ 		{
+ 		  sm_ctxt->warn (
+ 		      node, stmt, arg,
+ 		      make_unique<fd_access_mode_mismatch> (*this, diag_arg,
+ 							    DIRS_WRITE,
+ 							    callee_fndecl,
+ 							    attr_name,
+ 							    arg_idx));
+ 		}
+ 
+ 	      break;
+ 	    case DIRS_WRITE:
+ 
+ 	      if (is_readonly_fd_p (state))
+ 		{
+ 		  sm_ctxt->warn (
+ 		      node, stmt, arg,
+ 		      make_unique<fd_access_mode_mismatch> (*this, diag_arg,
+ 							    DIRS_READ,
+ 							    callee_fndecl,
+ 							    attr_name,
+ 							    arg_idx));
+ 		}
+ 
+ 	      break;
+ 	    }
+ 	}
+     }
+ }
+ 
+ 
+ void
+ fd_state_machine::on_open (sm_context *sm_ctxt, const supernode *node,
+ 			   const gimple *stmt, const gcall *call) const
+ {
+   tree lhs = gimple_call_lhs (call);
+   if (lhs)
+     {
+       tree arg = gimple_call_arg (call, 1);
+       enum access_mode mode = READ_WRITE;
+       if (TREE_CODE (arg) == INTEGER_CST)
+ 	{
+ 	  int flag = TREE_INT_CST_LOW (arg);
+ 	  mode = get_access_mode_from_flag (flag);
+ 	}
+       switch (mode)
+ 	{
+ 	case READ_ONLY:
+ 	  sm_ctxt->on_transition (node, stmt, lhs, m_start,
+ 				  m_unchecked_read_only);
+ 	  break;
+ 	case WRITE_ONLY:
+ 	  sm_ctxt->on_transition (node, stmt, lhs, m_start,
+ 				  m_unchecked_write_only);
+ 	  break;
+ 	default:
+ 	  sm_ctxt->on_transition (node, stmt, lhs, m_start,
+ 				  m_unchecked_read_write);
+ 	}
+     }
+   else
+     {
+       sm_ctxt->warn (node, stmt, NULL_TREE,
+ 		     make_unique<fd_leak> (*this, NULL_TREE));
+     }
+ }
+ 
+ void
+ fd_state_machine::on_creat (sm_context *sm_ctxt, const supernode *node,
+ 			    const gimple *stmt, const gcall *call) const
+ {
+   tree lhs = gimple_call_lhs (call);
+   if (lhs)
+     sm_ctxt->on_transition (node, stmt, lhs, m_start, m_unchecked_write_only);
+   else
+     sm_ctxt->warn (node, stmt, NULL_TREE,
+ 		   make_unique<fd_leak> (*this, NULL_TREE));
+ }
+ 
+ void
+ fd_state_machine::check_for_dup (sm_context *sm_ctxt, const supernode *node,
+ 				 const gimple *stmt, const gcall *call,
+ 				 const tree callee_fndecl, enum dup kind) const
+ {
+   tree lhs = gimple_call_lhs (call);
+   tree arg_1 = gimple_call_arg (call, 0);
+   state_t state_arg_1 = sm_ctxt->get_state (stmt, arg_1);
+   if (state_arg_1 == m_stop)
+     return;
+   if (!(is_constant_fd_p (state_arg_1) || is_valid_fd_p (state_arg_1)
+ 	|| state_arg_1 == m_start))
+     {
+       check_for_open_fd (sm_ctxt, node, stmt, call, callee_fndecl,
+ 			 DIRS_READ_WRITE);
+       return;
+     }
+   switch (kind)
+     {
+     case DUP_1:
+       if (lhs)
+ 	{
+ 	  if (is_constant_fd_p (state_arg_1) || state_arg_1 == m_start)
+ 	    sm_ctxt->set_next_state (stmt, lhs, m_unchecked_read_write);
+ 	  else
+ 	    sm_ctxt->set_next_state (stmt, lhs,
+ 				     valid_to_unchecked_state (state_arg_1));
+ 	}
+       break;
+ 
+     case DUP_2:
+     case DUP_3:
+       tree arg_2 = gimple_call_arg (call, 1);
+       state_t state_arg_2 = sm_ctxt->get_state (stmt, arg_2);
+       tree diag_arg_2 = sm_ctxt->get_diagnostic_tree (arg_2);
+       if (state_arg_2 == m_stop)
+ 	return;
+       /* Check if -1 was passed as second argument to dup2.  */
+       if (!(is_constant_fd_p (state_arg_2) || is_valid_fd_p (state_arg_2)
+ 	    || state_arg_2 == m_start))
+ 	{
+ 	  sm_ctxt->warn (
+ 	      node, stmt, arg_2,
+ 	      make_unique<fd_use_without_check> (*this, diag_arg_2,
+ 						 callee_fndecl));
+ 	  return;
+ 	}
+       /* dup2 returns value of its second argument on success.But, the
+       access mode of the returned file descriptor depends on the duplicated
+       file descriptor i.e the first argument.  */
+       if (lhs)
+ 	{
+ 	  if (is_constant_fd_p (state_arg_1) || state_arg_1 == m_start)
+ 	    sm_ctxt->set_next_state (stmt, lhs, m_unchecked_read_write);
+ 	  else
+ 	    sm_ctxt->set_next_state (stmt, lhs,
+ 				     valid_to_unchecked_state (state_arg_1));
+ 	}
+ 
+       break;
+     }
+ }
+ 
+ void
+ fd_state_machine::on_close (sm_context *sm_ctxt, const supernode *node,
+ 			    const gimple *stmt, const gcall *call) const
+ {
+   tree arg = gimple_call_arg (call, 0);
+   state_t state = sm_ctxt->get_state (stmt, arg);
+   tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
+ 
+   sm_ctxt->on_transition (node, stmt, arg, m_start, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_unchecked_read_write, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_unchecked_read_only, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_unchecked_write_only, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_valid_read_write, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_valid_read_only, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_valid_write_only, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_constant_fd, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_new_datagram_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_new_stream_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_new_unknown_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_bound_datagram_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_bound_stream_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_bound_unknown_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_listening_stream_socket, m_closed);
+   sm_ctxt->on_transition (node, stmt, arg, m_connected_stream_socket, m_closed);
+ 
+   if (is_closed_fd_p (state))
+     {
+       sm_ctxt->warn (node, stmt, arg,
+ 		     make_unique<fd_double_close> (*this, diag_arg));
+       sm_ctxt->set_next_state (stmt, arg, m_stop);
+     }
+ }
+ void
+ fd_state_machine::on_read (sm_context *sm_ctxt, const supernode *node,
+ 			   const gimple *stmt, const gcall *call,
+ 			   const tree callee_fndecl) const
+ {
+   check_for_open_fd (sm_ctxt, node, stmt, call, callee_fndecl, DIRS_READ);
+ }
+ void
+ fd_state_machine::on_write (sm_context *sm_ctxt, const supernode *node,
+ 			    const gimple *stmt, const gcall *call,
+ 			    const tree callee_fndecl) const
+ {
+   check_for_open_fd (sm_ctxt, node, stmt, call, callee_fndecl, DIRS_WRITE);
+ }
+ 
+ void
+ fd_state_machine::check_for_open_fd (
+     sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+     const gcall *call, const tree callee_fndecl,
+     enum access_directions callee_fndecl_dir) const
+ {
+   tree arg = gimple_call_arg (call, 0);
+   tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
+   state_t state = sm_ctxt->get_state (stmt, arg);
+ 
+   if (is_closed_fd_p (state))
+     {
+       sm_ctxt->warn (node, stmt, arg,
+ 		     make_unique<fd_use_after_close> (*this, diag_arg,
+ 						      callee_fndecl));
+     }
+ 
+   else
+     {
+       if (state == m_new_stream_socket
+ 	  || state == m_bound_stream_socket
+ 	  || state == m_listening_stream_socket)
+ 	/* Complain about fncall on socket in wrong phase.  */
+ 	sm_ctxt->warn
+ 	  (node, stmt, arg,
+ 	   make_unique<fd_phase_mismatch> (*this, diag_arg,
+ 					   callee_fndecl,
+ 					   state,
+ 					   EXPECTED_PHASE_CAN_TRANSFER));
+       else if (!(is_valid_fd_p (state)
+ 		 || state == m_new_datagram_socket
+ 		 || state == m_bound_unknown_socket
+ 		 || state == m_connected_stream_socket
+ 		 || state == m_start
+ 		 || state == m_stop))
+ 	{
+ 	  if (!is_constant_fd_p (state))
+ 	    sm_ctxt->warn (
+ 		node, stmt, arg,
+ 		make_unique<fd_use_without_check> (*this, diag_arg,
+ 						   callee_fndecl));
+ 	}
+       switch (callee_fndecl_dir)
+ 	{
+ 	case DIRS_READ_WRITE:
+ 	  break;
+ 	case DIRS_READ:
+ 	  if (is_writeonly_fd_p (state))
+ 	    {
+ 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
+ 	      sm_ctxt->warn (node, stmt, arg,
+ 			     make_unique<fd_access_mode_mismatch> (
+ 				 *this, diag_arg, DIRS_WRITE, callee_fndecl));
+ 	    }
+ 
+ 	  break;
+ 	case DIRS_WRITE:
+ 
+ 	  if (is_readonly_fd_p (state))
+ 	    {
+ 	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
+ 	      sm_ctxt->warn (node, stmt, arg,
+ 			     make_unique<fd_access_mode_mismatch> (
+ 				 *this, diag_arg, DIRS_READ, callee_fndecl));
+ 	    }
+ 	  break;
+ 	}
+     }
+ }
+ 
+ static bool
+ add_constraint_ge_zero (region_model *model,
+ 			const svalue *fd_sval,
+ 			region_model_context *ctxt)
+ {
+   const svalue *zero
+     = model->get_manager ()->get_or_create_int_cst (integer_type_node, 0);
+   return model->add_constraint (fd_sval, GE_EXPR, zero, ctxt);
+ }
+ 
+ /* Get the state for a new socket type based on SOCKET_TYPE_SVAL,
+    a SOCK_* value.  */
+ 
+ state_machine::state_t
+ fd_state_machine::
+ get_state_for_socket_type (const svalue *socket_type_sval) const
+ {
+   if (tree socket_type_cst = socket_type_sval->maybe_get_constant ())
+     {
+       /* Attempt to use SOCK_* constants stashed from the frontend.  */
+       if (tree_int_cst_equal (socket_type_cst, m_SOCK_STREAM))
+ 	return m_new_stream_socket;
+       if (tree_int_cst_equal (socket_type_cst, m_SOCK_DGRAM))
+ 	return m_new_datagram_socket;
+     }
+ 
+   /* Unrecognized constant, or a symbolic "type" value.  */
+   return m_new_unknown_socket;
+ }
+ 
+ /* Update the model and fd state for an outcome of a call to "socket",
+    where SUCCESSFUL indicate which of the two outcomes.
+    Return true if the outcome is feasible, or false to reject it.  */
+ 
+ bool
+ fd_state_machine::on_socket (const call_details &cd,
+ 			     bool successful,
+ 			     sm_context *sm_ctxt,
+ 			     const extrinsic_state &ext_state) const
+ {
+   const gcall *stmt = cd.get_call_stmt ();
+   engine *eng = ext_state.get_engine ();
+   const supergraph *sg = eng->get_supergraph ();
+   const supernode *node = sg->get_supernode_for_stmt (stmt);
+   region_model *model = cd.get_model ();
+ 
+   if (successful)
+     {
+       if (gimple_call_lhs (stmt))
+ 	{
+ 	  conjured_purge p (model, cd.get_ctxt ());
+ 	  region_model_manager *mgr = model->get_manager ();
+ 	  const svalue *new_fd
+ 	    = mgr->get_or_create_conjured_svalue (integer_type_node,
+ 						  stmt,
+ 						  cd.get_lhs_region (),
+ 						  p);
+ 	  if (!add_constraint_ge_zero (model, new_fd, cd.get_ctxt ()))
+ 	    return false;
+ 
+ 	  const svalue *socket_type_sval = cd.get_arg_svalue (1);
+ 	  state_machine::state_t new_state
+ 	    = get_state_for_socket_type (socket_type_sval);
+ 	  sm_ctxt->on_transition (node, stmt, new_fd, m_start, new_state);
+ 	  model->set_value (cd.get_lhs_region (), new_fd, cd.get_ctxt ());
+ 	}
+       else
+ 	sm_ctxt->warn (node, stmt, NULL_TREE,
+ 		       make_unique<fd_leak> (*this, NULL_TREE));
+     }
+   else
+     {
+       /* Return -1; set errno.  */
+       model->update_for_int_cst_return (cd, -1, true);
+       model->set_errno (cd);
+     }
+ 
+   return true;
+ }
+ 
+ /* Check that FD_SVAL is usable by socket APIs.
+    Complain if it has been closed, if it is a non-socket,
+    or is invalid.
+    If COMPLAINED is non-NULL and a problem is found,
+    write *COMPLAINED = true.
+ 
+    If SUCCESSFUL is true, attempt to add the constraint that FD_SVAL >= 0.
+    Return true if this outcome is feasible.  */
+ 
+ bool
+ fd_state_machine::check_for_socket_fd (const call_details &cd,
+ 				       bool successful,
+ 				       sm_context *sm_ctxt,
+ 				       const svalue *fd_sval,
+ 				       const supernode *node,
+ 				       state_t old_state,
+ 				       bool *complained) const
+ {
+   const gcall *stmt = cd.get_call_stmt ();
+ 
+   if (is_closed_fd_p (old_state))
+     {
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (fd_sval);
+       sm_ctxt->warn
+ 	(node, stmt, fd_sval,
+ 	 make_unique<fd_use_after_close> (*this, diag_arg,
+ 					  cd.get_fndecl_for_call ()));
+       if (complained)
+ 	*complained = true;
+       if (successful)
+ 	return false;
+     }
+   else if (is_unchecked_fd_p (old_state) || is_valid_fd_p (old_state))
+     {
+       /* Complain about non-socket.  */
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (fd_sval);
+       sm_ctxt->warn
+ 	(node, stmt, fd_sval,
+ 	 make_unique<fd_type_mismatch> (*this, diag_arg,
+ 					cd.get_fndecl_for_call (),
+ 					old_state,
+ 					EXPECTED_TYPE_SOCKET));
+       if (complained)
+ 	*complained = true;
+       if (successful)
+ 	return false;
+     }
+   else if (old_state == m_invalid)
+     {
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (fd_sval);
+       sm_ctxt->warn
+ 	(node, stmt, fd_sval,
+ 	 make_unique<fd_use_without_check> (*this, diag_arg,
+ 					    cd.get_fndecl_for_call ()));
+       if (complained)
+ 	*complained = true;
+       if (successful)
+ 	return false;
+     }
+ 
+   if (successful)
+     if (!add_constraint_ge_zero (cd.get_model (), fd_sval, cd.get_ctxt ()))
+       return false;
+ 
+   return true;
+ }
+ 
+ /* For use by "bind" and "connect".
+    As per fd_state_machine::check_for_socket_fd above,
+    but also complain if we don't have a new socket, and check that
+    we can read up to the size bytes from the address.  */
+ 
+ bool
+ fd_state_machine::check_for_new_socket_fd (const call_details &cd,
+ 					   bool successful,
+ 					   sm_context *sm_ctxt,
+ 					   const svalue *fd_sval,
+ 					   const supernode *node,
+ 					   state_t old_state,
+ 					   enum expected_phase expected_phase)
+   const
+ {
+   bool complained = false;
+ 
+   /* Check address and len.  */
+   const svalue *address_sval = cd.get_arg_svalue (1);
+   const svalue *len_sval = cd.get_arg_svalue (2);
+ 
+   /* Check that we can read the given number of bytes from the
+      address.  */
+   region_model *model = cd.get_model ();
+   const region *address_reg
+     = model->deref_rvalue (address_sval, cd.get_arg_tree (1),
+ 			   cd.get_ctxt ());
+   const region *sized_address_reg
+     = model->get_manager ()->get_sized_region (address_reg,
+ 					       NULL_TREE,
+ 					       len_sval);
+   model->get_store_value (sized_address_reg, cd.get_ctxt ());
+ 
+   if (!check_for_socket_fd (cd, successful, sm_ctxt,
+ 			    fd_sval, node, old_state, &complained))
+     return false;
+   else if (!complained
+ 	   && !(old_state == m_new_stream_socket
+ 		|| old_state == m_new_datagram_socket
+ 		|| old_state == m_new_unknown_socket
+ 		|| old_state == m_start
+ 		|| old_state == m_stop
+ 		|| old_state == m_constant_fd))
+     {
+       /* Complain about "bind" or "connect" in wrong phase.  */
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (fd_sval);
+       sm_ctxt->warn
+ 	(node, cd.get_call_stmt (), fd_sval,
+ 	 make_unique<fd_phase_mismatch> (*this, diag_arg,
+ 					 cd.get_fndecl_for_call (),
+ 					 old_state,
+ 					 expected_phase));
+       if (successful)
+ 	return false;
+     }
+   else if (!successful)
+     {
+       /* If we were in the start state, assume we had a new socket.  */
+       if (old_state == m_start)
+ 	sm_ctxt->set_next_state (cd.get_call_stmt (), fd_sval,
+ 				 m_new_unknown_socket);
+     }
+ 
+   /* Passing NULL as the address will lead to failure.  */
+   if (successful)
+     if (address_sval->all_zeroes_p ())
+       return false;
+ 
+   return true;
+ }
+ 
+ /* Update the model and fd state for an outcome of a call to "bind",
+    where SUCCESSFUL indicate which of the two outcomes.
+    Return true if the outcome is feasible, or false to reject it.  */
+ 
+ bool
+ fd_state_machine::on_bind (const call_details &cd,
+ 			   bool successful,
+ 			   sm_context *sm_ctxt,
+ 			   const extrinsic_state &ext_state) const
+ {
+   const gcall *stmt = cd.get_call_stmt ();
+   engine *eng = ext_state.get_engine ();
+   const supergraph *sg = eng->get_supergraph ();
+   const supernode *node = sg->get_supernode_for_stmt (stmt);
+   const svalue *fd_sval = cd.get_arg_svalue (0);
+   region_model *model = cd.get_model ();
+   state_t old_state = sm_ctxt->get_state (stmt, fd_sval);
+ 
+   if (!check_for_new_socket_fd (cd, successful, sm_ctxt,
+ 				fd_sval, node, old_state,
+ 				EXPECTED_PHASE_CAN_BIND))
+     return false;
+ 
+   if (successful)
+     {
+       state_t next_state = NULL;
+       if (old_state == m_new_stream_socket)
+ 	next_state = m_bound_stream_socket;
+       else if (old_state == m_new_datagram_socket)
+ 	next_state = m_bound_datagram_socket;
+       else if (old_state == m_new_unknown_socket)
+ 	next_state = m_bound_unknown_socket;
+       else if (old_state == m_start
+ 	       || old_state == m_constant_fd)
+ 	next_state = m_bound_unknown_socket;
+       else if (old_state == m_stop)
+ 	next_state = m_stop;
+       else
+ 	gcc_unreachable ();
+       sm_ctxt->set_next_state (cd.get_call_stmt (), fd_sval, next_state);
+       model->update_for_zero_return (cd, true);
+     }
+   else
+     {
+       /* Return -1; set errno.  */
+       model->update_for_int_cst_return (cd, -1, true);
+       model->set_errno (cd);
+     }
+ 
+   return true;
+ }
+ 
+ /* Update the model and fd state for an outcome of a call to "listen",
+    where SUCCESSFUL indicate which of the two outcomes.
+    Return true if the outcome is feasible, or false to reject it.  */
+ 
+ bool
+ fd_state_machine::on_listen (const call_details &cd,
+ 			     bool successful,
+ 			     sm_context *sm_ctxt,
+ 			     const extrinsic_state &ext_state) const
+ {
+   const gcall *stmt = cd.get_call_stmt ();
+   engine *eng = ext_state.get_engine ();
+   const supergraph *sg = eng->get_supergraph ();
+   const supernode *node = sg->get_supernode_for_stmt (cd.get_call_stmt ());
+   const svalue *fd_sval = cd.get_arg_svalue (0);
+   region_model *model = cd.get_model ();
+   state_t old_state = sm_ctxt->get_state (stmt, fd_sval);
+ 
+   /* We expect a stream socket that's had "bind" called on it.  */
+   if (!check_for_socket_fd (cd, successful, sm_ctxt, fd_sval, node, old_state))
+     return false;
+   if (!(old_state == m_start
+ 	|| old_state == m_constant_fd
+ 	|| old_state == m_stop
+ 	|| old_state == m_invalid
+ 	|| old_state == m_bound_stream_socket
+ 	|| old_state == m_bound_unknown_socket
+ 	/* Assume it's OK to call "listen" more than once.  */
+ 	|| old_state == m_listening_stream_socket))
+     {
+       /* Complain about fncall on wrong type or in wrong phase.  */
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (fd_sval);
+       if (is_stream_socket_fd_p (old_state))
+ 	sm_ctxt->warn
+ 	  (node, stmt, fd_sval,
+ 	   make_unique<fd_phase_mismatch> (*this, diag_arg,
+ 					   cd.get_fndecl_for_call (),
+ 					   old_state,
+ 					   EXPECTED_PHASE_CAN_LISTEN));
+       else
+ 	sm_ctxt->warn
+ 	  (node, stmt, fd_sval,
+ 	   make_unique<fd_type_mismatch> (*this, diag_arg,
+ 					  cd.get_fndecl_for_call (),
+ 					  old_state,
+ 					  EXPECTED_TYPE_STREAM_SOCKET));
+       if (successful)
+ 	return false;
+     }
+ 
+   if (successful)
+     {
+       model->update_for_zero_return (cd, true);
+       sm_ctxt->set_next_state (cd.get_call_stmt (), fd_sval,
+ 			       m_listening_stream_socket);
+     }
+   else
+     {
+       /* Return -1; set errno.  */
+       model->update_for_int_cst_return (cd, -1, true);
+       model->set_errno (cd);
+       if (old_state == m_start)
+ 	sm_ctxt->set_next_state (cd.get_call_stmt (), fd_sval,
+ 				 m_bound_stream_socket);
+     }
+ 
+   return true;
+ }
+ 
+ /* Update the model and fd state for an outcome of a call to "accept",
+    where SUCCESSFUL indicate which of the two outcomes.
+    Return true if the outcome is feasible, or false to reject it.  */
+ 
+ bool
+ fd_state_machine::on_accept (const call_details &cd,
+ 			     bool successful,
+ 			     sm_context *sm_ctxt,
+ 			     const extrinsic_state &ext_state) const
+ {
+   const gcall *stmt = cd.get_call_stmt ();
+   engine *eng = ext_state.get_engine ();
+   const supergraph *sg = eng->get_supergraph ();
+   const supernode *node = sg->get_supernode_for_stmt (stmt);
+   const svalue *fd_sval = cd.get_arg_svalue (0);
+   const svalue *address_sval = cd.get_arg_svalue (1);
+   const svalue *len_ptr_sval = cd.get_arg_svalue (2);
+   region_model *model = cd.get_model ();
+   state_t old_state = sm_ctxt->get_state (stmt, fd_sval);
+ 
+   if (!address_sval->all_zeroes_p ())
+     {
+       region_model_manager *mgr = model->get_manager ();
+ 
+       /* We might have a union of various pointer types, rather than a
+ 	 pointer type; cast to (void *) before dereferencing.  */
+       address_sval = mgr->get_or_create_cast (ptr_type_node, address_sval);
+ 
+       const region *address_reg
+ 	= model->deref_rvalue (address_sval, cd.get_arg_tree (1),
+ 			       cd.get_ctxt ());
+       const region *len_reg
+ 	= model->deref_rvalue (len_ptr_sval, cd.get_arg_tree (2),
+ 			       cd.get_ctxt ());
+       const svalue *old_len_sval
+ 	= model->get_store_value (len_reg, cd.get_ctxt ());
+       tree len_ptr = cd.get_arg_tree (2);
+       tree star_len_ptr = build2 (MEM_REF, TREE_TYPE (TREE_TYPE (len_ptr)),
+ 				  len_ptr,
+ 				  build_int_cst (TREE_TYPE (len_ptr), 0));
+       old_len_sval = model->check_for_poison (old_len_sval,
+ 					      star_len_ptr,
+ 					      len_reg,
+ 					      cd.get_ctxt ());
+       if (successful)
+ 	{
+ 	  conjured_purge p (model, cd.get_ctxt ());
+ 	  const region *old_sized_address_reg
+ 	    = mgr->get_sized_region (address_reg,
+ 				     NULL_TREE,
+ 				     old_len_sval);
+ 	  const svalue *new_addr_sval
+ 	    = mgr->get_or_create_conjured_svalue (NULL_TREE,
+ 						  stmt,
+ 						  old_sized_address_reg,
+ 						  p);
+ 	  model->set_value (old_sized_address_reg, new_addr_sval,
+ 			    cd.get_ctxt ());
+ 	  const svalue *new_addr_len
+ 	    = mgr->get_or_create_conjured_svalue (NULL_TREE,
+ 						  stmt,
+ 						  len_reg,
+ 						  p);
+ 	  model->set_value (len_reg, new_addr_len, cd.get_ctxt ());
+ 	}
+     }
+ 
+   /* We expect a stream socket in the "listening" state.  */
+   if (!check_for_socket_fd (cd, successful, sm_ctxt, fd_sval, node, old_state))
+     return false;
+ 
+   if (old_state == m_start || old_state == m_constant_fd)
+     /* If we were in the start state (or a constant), assume we had the
+        expected state.  */
+     sm_ctxt->set_next_state (cd.get_call_stmt (), fd_sval,
+ 			     m_listening_stream_socket);
+   else if (old_state == m_stop)
+     {
+       /* No further complaints.  */
+     }
+   else if (old_state != m_listening_stream_socket)
+     {
+       /* Complain about fncall on wrong type or in wrong phase.  */
+       tree diag_arg = sm_ctxt->get_diagnostic_tree (fd_sval);
+       if (is_stream_socket_fd_p (old_state))
+ 	sm_ctxt->warn
+ 	  (node, stmt, fd_sval,
+ 	   make_unique<fd_phase_mismatch> (*this, diag_arg,
+ 					   cd.get_fndecl_for_call (),
+ 					   old_state,
+ 					   EXPECTED_PHASE_CAN_ACCEPT));
+       else
+ 	sm_ctxt->warn
+ 	  (node, stmt, fd_sval,
+ 	   make_unique<fd_type_mismatch> (*this, diag_arg,
+ 					  cd.get_fndecl_for_call (),
+ 					  old_state,
+ 					  EXPECTED_TYPE_STREAM_SOCKET));
+       if (successful)
+ 	return false;
+     }
+ 
+   if (successful)
+     {
+       /* Return new conjured FD in "connected" state.  */
+       if (gimple_call_lhs (stmt))
+ 	{
+ 	  conjured_purge p (model, cd.get_ctxt ());
+ 	  region_model_manager *mgr = model->get_manager ();
+ 	  const svalue *new_fd
+ 	    = mgr->get_or_create_conjured_svalue (integer_type_node,
+ 						  stmt,
+ 						  cd.get_lhs_region (),
+ 						  p);
+ 	  if (!add_constraint_ge_zero (model, new_fd, cd.get_ctxt ()))
+ 	    return false;
+ 	  sm_ctxt->on_transition (node, stmt, new_fd,
+ 				  m_start, m_connected_stream_socket);
+ 	  model->set_value (cd.get_lhs_region (), new_fd, cd.get_ctxt ());
+ 	}
+       else
+ 	sm_ctxt->warn (node, stmt, NULL_TREE,
+ 		       make_unique<fd_leak> (*this, NULL_TREE));
+     }
+   else
+     {
+       /* Return -1; set errno.  */
+       model->update_for_int_cst_return (cd, -1, true);
+       model->set_errno (cd);
+     }
+ 
+   return true;
+ }
+ 
+ /* Update the model and fd state for an outcome of a call to "connect",
+    where SUCCESSFUL indicate which of the two outcomes.
+    Return true if the outcome is feasible, or false to reject it.  */
+ 
+ bool
+ fd_state_machine::on_connect (const call_details &cd,
+ 			      bool successful,
+ 			      sm_context *sm_ctxt,
+ 			      const extrinsic_state &ext_state) const
+ {
+   const gcall *stmt = cd.get_call_stmt ();
+   engine *eng = ext_state.get_engine ();
+   const supergraph *sg = eng->get_supergraph ();
+   const supernode *node = sg->get_supernode_for_stmt (stmt);
+   const svalue *fd_sval = cd.get_arg_svalue (0);
+   region_model *model = cd.get_model ();
+   state_t old_state = sm_ctxt->get_state (stmt, fd_sval);
+ 
+   if (!check_for_new_socket_fd (cd, successful, sm_ctxt,
+ 				fd_sval, node, old_state,
+ 				EXPECTED_PHASE_CAN_CONNECT))
+     return false;
+ 
+   if (successful)
+     {
+       model->update_for_zero_return (cd, true);
+       state_t next_state = NULL;
+       if (old_state == m_new_stream_socket)
+ 	next_state = m_connected_stream_socket;
+       else if (old_state == m_new_datagram_socket)
+ 	/* It's legal to call connect on a datagram socket, potentially
+ 	   more than once.  We don't transition states for this.  */
+ 	next_state = m_new_datagram_socket;
+       else if (old_state == m_new_unknown_socket)
+ 	next_state = m_stop;
+       else if (old_state == m_start
+ 	       || old_state == m_constant_fd)
+ 	next_state = m_stop;
+       else if (old_state == m_stop)
+ 	next_state = m_stop;
+       else
+ 	gcc_unreachable ();
+       sm_ctxt->set_next_state (cd.get_call_stmt (), fd_sval, next_state);
+     }
+   else
+     {
+       /* Return -1; set errno.  */
+       model->update_for_int_cst_return (cd, -1, true);
+       model->set_errno (cd);
+       /* TODO: perhaps transition to a failed state, since the
+ 	 portable way to handle a failed "connect" is to close
+ 	 the socket and try again with a new socket.  */
+     }
+ 
+   return true;
+ }
+ 
+ void
+ fd_state_machine::on_condition (sm_context *sm_ctxt, const supernode *node,
+ 				const gimple *stmt, const svalue *lhs,
+ 				enum tree_code op, const svalue *rhs) const
+ {
+   if (tree cst = rhs->maybe_get_constant ())
+     {
+       if (TREE_CODE (cst) == INTEGER_CST)
+ 	{
+ 	  int val = TREE_INT_CST_LOW (cst);
+ 	  if (val == -1)
+ 	    {
+ 	      if (op == NE_EXPR)
+ 		make_valid_transitions_on_condition (sm_ctxt, node, stmt, lhs);
+ 
+ 	      else if (op == EQ_EXPR)
+ 		make_invalid_transitions_on_condition (sm_ctxt, node, stmt,
+ 						       lhs);
+ 	    }
+ 	}
+     }
+ 
+   if (rhs->all_zeroes_p ())
+     {
+       if (op == GE_EXPR)
+ 	make_valid_transitions_on_condition (sm_ctxt, node, stmt, lhs);
+       else if (op == LT_EXPR)
+ 	make_invalid_transitions_on_condition (sm_ctxt, node, stmt, lhs);
+     }
+ }
+ 
+ void
+ fd_state_machine::make_valid_transitions_on_condition (sm_context *sm_ctxt,
+ 						       const supernode *node,
+ 						       const gimple *stmt,
+ 						       const svalue *lhs) const
+ {
+   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked_read_write,
+ 			  m_valid_read_write);
+   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked_read_only,
+ 			  m_valid_read_only);
+   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked_write_only,
+ 			  m_valid_write_only);
+ }
+ 
+ void
+ fd_state_machine::make_invalid_transitions_on_condition (
+     sm_context *sm_ctxt, const supernode *node, const gimple *stmt,
+     const svalue *lhs) const
+ {
+   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked_read_write, m_invalid);
+   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked_read_only, m_invalid);
+   sm_ctxt->on_transition (node, stmt, lhs, m_unchecked_write_only, m_invalid);
+ }
+ 
+ bool
+ fd_state_machine::can_purge_p (state_t s) const
+ {
+   if (is_unchecked_fd_p (s)
+       || is_valid_fd_p (s)
+       || is_socket_fd_p (s))
+     return false;
+   else
+     return true;
+ }
+ 
+ std::unique_ptr<pending_diagnostic>
+ fd_state_machine::on_leak (tree var) const
+ {
+   return make_unique<fd_leak> (*this, var);
+ }
+ } // namespace
+ 
+ state_machine *
+ make_fd_state_machine (logger *logger)
+ {
+   return new fd_state_machine (logger);
+ }
+ 
+ static bool
+ get_fd_state (region_model_context *ctxt,
+ 	      sm_state_map **out_smap,
+ 	      const fd_state_machine **out_sm,
+ 	      unsigned *out_sm_idx,
+ 	      std::unique_ptr<sm_context> *out_sm_context)
+ {
+   if (!ctxt)
+     return false;
+ 
+   const state_machine *sm;
+   if (!ctxt->get_fd_map (out_smap, &sm, out_sm_idx, out_sm_context))
+     return false;
+ 
+   gcc_assert (sm);
+ 
+   *out_sm = (const fd_state_machine *)sm;
+   return true;
+ }
+ 
+ /* Specialcase hook for handling pipe, for use by
+    kf_pipe::success::update_model.  */
+ 
+ void
+ region_model::mark_as_valid_fd (const svalue *sval, region_model_context *ctxt)
+ {
+   sm_state_map *smap;
+   const fd_state_machine *fd_sm;
+   if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, NULL))
+     return;
+   const extrinsic_state *ext_state = ctxt->get_ext_state ();
+   if (!ext_state)
+     return;
+   fd_sm->mark_as_valid_fd (this, smap, sval, *ext_state);
+ }
+ 
+ /* Handle calls to "socket".
+    See e.g. https://man7.org/linux/man-pages/man3/socket.3p.html  */
+ 
+ class kf_socket : public known_function
+ {
+ public:
+   class outcome_of_socket : public succeed_or_fail_call_info
+   {
+   public:
+     outcome_of_socket (const call_details &cd, bool success)
+     : succeed_or_fail_call_info (cd, success)
+     {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       sm_state_map *smap;
+       const fd_state_machine *fd_sm;
+       std::unique_ptr<sm_context> sm_ctxt;
+       if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, &sm_ctxt))
+ 	return true;
+       const extrinsic_state *ext_state = ctxt->get_ext_state ();
+       if (!ext_state)
+ 	return true;
+ 
+       return fd_sm->on_socket (cd, m_success, sm_ctxt.get (), *ext_state);
+     }
+   };
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 3;
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_socket> (cd, false));
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_socket> (cd, true));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ };
+ 
+ /* Handle calls to "bind".
+    See e.g. https://man7.org/linux/man-pages/man3/bind.3p.html  */
+ 
+ class kf_bind : public known_function
+ {
+ public:
+   class outcome_of_bind : public succeed_or_fail_call_info
+   {
+   public:
+     outcome_of_bind (const call_details &cd, bool success)
+     : succeed_or_fail_call_info (cd, success)
+     {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       sm_state_map *smap;
+       const fd_state_machine *fd_sm;
+       std::unique_ptr<sm_context> sm_ctxt;
+       if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, &sm_ctxt))
+ 	return true;
+       const extrinsic_state *ext_state = ctxt->get_ext_state ();
+       if (!ext_state)
+ 	return true;
+       return fd_sm->on_bind (cd, m_success, sm_ctxt.get (), *ext_state);
+     }
+   };
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3 && cd.arg_is_pointer_p (1));
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_bind> (cd, false));
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_bind> (cd, true));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ };
+ 
+ /* Handle calls to "listen".
+    See e.g. https://man7.org/linux/man-pages/man3/listen.3p.html  */
+ 
+ class kf_listen : public known_function
+ {
+   class outcome_of_listen : public succeed_or_fail_call_info
+   {
+   public:
+     outcome_of_listen (const call_details &cd, bool success)
+     : succeed_or_fail_call_info (cd, success)
+     {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       sm_state_map *smap;
+       const fd_state_machine *fd_sm;
+       std::unique_ptr<sm_context> sm_ctxt;
+       if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, &sm_ctxt))
+ 	return true;
+       const extrinsic_state *ext_state = ctxt->get_ext_state ();
+       if (!ext_state)
+ 	return true;
+ 
+       return fd_sm->on_listen (cd, m_success, sm_ctxt.get (), *ext_state);
+     }
+   };
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 2;
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_listen> (cd, false));
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_listen> (cd, true));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ };
+ 
+ /* Handle calls to "accept".
+    See e.g. https://man7.org/linux/man-pages/man3/accept.3p.html  */
+ 
+ class kf_accept : public known_function
+ {
+   class outcome_of_accept : public succeed_or_fail_call_info
+   {
+   public:
+     outcome_of_accept (const call_details &cd, bool success)
+     : succeed_or_fail_call_info (cd, success)
+     {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       sm_state_map *smap;
+       const fd_state_machine *fd_sm;
+       std::unique_ptr<sm_context> sm_ctxt;
+       if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, &sm_ctxt))
+ 	return true;
+       const extrinsic_state *ext_state = ctxt->get_ext_state ();
+       if (!ext_state)
+ 	return true;
+ 
+       return fd_sm->on_accept (cd, m_success, sm_ctxt.get (), *ext_state);
+     }
+   };
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3
+ 	    && cd.arg_is_pointer_p (1)
+ 	    && cd.arg_is_pointer_p (2));
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_accept> (cd, false));
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_accept> (cd, true));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ };
+ 
+ /* Handle calls to "connect".
+    See e.g. https://man7.org/linux/man-pages/man3/connect.3p.html  */
+ 
+ class kf_connect : public known_function
+ {
+ public:
+   class outcome_of_connect : public succeed_or_fail_call_info
+   {
+   public:
+     outcome_of_connect (const call_details &cd, bool success)
+     : succeed_or_fail_call_info (cd, success)
+     {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+       sm_state_map *smap;
+       const fd_state_machine *fd_sm;
+       std::unique_ptr<sm_context> sm_ctxt;
+       if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, &sm_ctxt))
+ 	return true;
+       const extrinsic_state *ext_state = ctxt->get_ext_state ();
+       if (!ext_state)
+ 	return true;
+ 
+       return fd_sm->on_connect (cd, m_success, sm_ctxt.get (), *ext_state);
+     }
+   };
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3
+ 	    && cd.arg_is_pointer_p (1));
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_connect> (cd, false));
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_connect> (cd, true));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ };
+ 
+ /* Handler for "isatty"".
+    See e.g. https://man7.org/linux/man-pages/man3/isatty.3.html  */
+ 
+ class kf_isatty : public known_function
+ {
+   class outcome_of_isatty : public succeed_or_fail_call_info
+   {
+   public:
+     outcome_of_isatty (const call_details &cd, bool success)
+     : succeed_or_fail_call_info (cd, success)
+     {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+ 
+       if (m_success)
+ 	{
+ 	  /* Return 1.  */
+ 	  model->update_for_int_cst_return (cd, 1, true);
+ 	}
+       else
+ 	{
+ 	  /* Return 0; set errno.  */
+ 	  model->update_for_int_cst_return (cd, 0, true);
+ 	  model->set_errno (cd);
+ 	}
+ 
+       return feasible_p (cd, ctxt);
+     }
+ 
+   private:
+     bool feasible_p (const call_details &cd,
+ 		     region_model_context *ctxt) const
+     {
+       if (m_success)
+ 	{
+ 	  /* Can't be "success" on a closed/invalid fd.  */
+ 	  sm_state_map *smap;
+ 	  const fd_state_machine *fd_sm;
+ 	  std::unique_ptr<sm_context> sm_ctxt;
+ 	  if (!get_fd_state (ctxt, &smap, &fd_sm, NULL, &sm_ctxt))
+ 	    return true;
+ 	  const extrinsic_state *ext_state = ctxt->get_ext_state ();
+ 	  if (!ext_state)
+ 	    return true;
+ 
+ 	  const svalue *fd_sval = cd.get_arg_svalue (0);
+ 	  state_machine::state_t old_state
+ 	    = sm_ctxt->get_state (cd.get_call_stmt (), fd_sval);
+ 
+ 	  if (fd_sm->is_closed_fd_p (old_state)
+ 	      || old_state == fd_sm->m_invalid)
+ 	    return false;
+ 	}
+       return true;
+     }
+   }; // class outcome_of_isatty
+ 
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 1;
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_isatty> (cd, false));
+ 	cd.get_ctxt ()->bifurcate (make_unique<outcome_of_isatty> (cd, true));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ };
+ 
+ /* Handler for calls to "pipe" and "pipe2".
+    See e.g. https://www.man7.org/linux/man-pages/man2/pipe.2.html  */
+ 
+ class kf_pipe : public known_function
+ {
+   class failure : public failed_call_info
+   {
+   public:
+     failure (const call_details &cd) : failed_call_info (cd) {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       /* Return -1; everything else is unchanged.  */
+       const call_details cd (get_call_details (model, ctxt));
+       model->update_for_int_cst_return (cd, -1, true);
+       return true;
+     }
+   };
+ 
+   class success : public success_call_info
+   {
+   public:
+     success (const call_details &cd) : success_call_info (cd) {}
+ 
+     bool update_model (region_model *model,
+ 		       const exploded_edge *,
+ 		       region_model_context *ctxt) const final override
+     {
+       const call_details cd (get_call_details (model, ctxt));
+ 
+       /* Return 0.  */
+       model->update_for_zero_return (cd, true);
+ 
+       /* Update fd array.  */
+       region_model_manager *mgr = cd.get_manager ();
+       tree arr_tree = cd.get_arg_tree (0);
+       const svalue *arr_sval = cd.get_arg_svalue (0);
+       for (int idx = 0; idx < 2; idx++)
+ 	{
+ 	  const region *arr_reg
+ 	    = model->deref_rvalue (arr_sval, arr_tree, cd.get_ctxt ());
+ 	  const svalue *idx_sval
+ 	    = mgr->get_or_create_int_cst (integer_type_node, idx);
+ 	  const region *element_reg
+ 	    = mgr->get_element_region (arr_reg, integer_type_node, idx_sval);
+ 	  conjured_purge p (model, cd.get_ctxt ());
+ 	  const svalue *fd_sval
+ 	    = mgr->get_or_create_conjured_svalue (integer_type_node,
+ 						  cd.get_call_stmt (),
+ 						  element_reg,
+ 						  p);
+ 	  model->set_value (element_reg, fd_sval, cd.get_ctxt ());
+ 	  model->mark_as_valid_fd (fd_sval, cd.get_ctxt ());
+ 	}
+       return true;
+     }
+   };
+ 
+ public:
+   kf_pipe (unsigned num_args)
+   : m_num_args (num_args)
+   {
+     gcc_assert (num_args > 0);
+   }
+ 
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == m_num_args && cd.arg_is_pointer_p (0));
+   }
+ 
+   void impl_call_post (const call_details &cd) const final override
+   {
+     if (cd.get_ctxt ())
+       {
+ 	cd.get_ctxt ()->bifurcate (make_unique<failure> (cd));
+ 	cd.get_ctxt ()->bifurcate (make_unique<success> (cd));
+ 	cd.get_ctxt ()->terminate_path ();
+       }
+   }
+ 
+ private:
+   unsigned m_num_args;
+ };
+ 
+ /* Handler for "read".
+      ssize_t read(int fildes, void *buf, size_t nbyte);
+    See e.g. https://man7.org/linux/man-pages/man2/read.2.html   */
+ 
+ class kf_read : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3
+ 	    && cd.arg_is_pointer_p (1)
+ 	    && cd.arg_is_size_p (2));
+   }
+ 
+   /* For now, assume that any call to "read" fully clobbers the buffer
+      passed in.  This isn't quite correct (e.g. errors, partial reads;
+      see PR analyzer/108689), but at least stops us falsely complaining
+      about the buffer being uninitialized.  */
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     const svalue *ptr_sval = cd.get_arg_svalue (1);
+     if (const region *reg = ptr_sval->maybe_get_region ())
+       {
+ 	const region *base_reg = reg->get_base_region ();
+ 	const svalue *new_sval = cd.get_or_create_conjured_svalue (base_reg);
+ 	model->set_value (base_reg, new_sval, cd.get_ctxt ());
+       }
+   }
+ };
+ 
+ 
+ /* Populate KFM with instances of known functions relating to
+    file descriptors.  */
+ 
+ void
+ register_known_fd_functions (known_function_manager &kfm)
+ {
+   kfm.add ("accept", make_unique<kf_accept> ());
+   kfm.add ("bind", make_unique<kf_bind> ());
+   kfm.add ("connect", make_unique<kf_connect> ());
+   kfm.add ("isatty", make_unique<kf_isatty> ());
+   kfm.add ("listen", make_unique<kf_listen> ());
+   kfm.add ("pipe", make_unique<kf_pipe> (1));
+   kfm.add ("pipe2", make_unique<kf_pipe> (2));
+   kfm.add ("read", make_unique<kf_read> ());
+   kfm.add ("socket", make_unique<kf_socket> ());
+ }
+ 
+ } // namespace ana
+ 
+ #endif // ENABLE_ANALYZER
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-fd.dot gcc-13.1.0/gcc/analyzer/sm-fd.dot
*** gcc-12.2.0/gcc/analyzer/sm-fd.dot	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/sm-fd.dot	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,179 ----
+ /* An overview of the state machine from sm-fd.cc.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Keep this in-sync with sm-fd.cc  */
+ 
+ digraph "fd" {
+ 
+   /* STATES. */
+ 
+   /* Start state.  */
+   start;
+ 
+   /* State for a constant file descriptor (>= 0).  */
+   constant_fd;
+ 
+   /* States representing a file descriptor that hasn't yet been
+     checked for validity after opening, for three different
+     access modes.  */
+   unchecked_read_write;
+   unchecked_read_only;
+   unchecked_write_only;
+ 
+   /* States for representing a file descriptor that is known to be valid (>=
+     0), for three different access modes.  */
+   valid_read_write;
+   valid_read_only;
+   valid_write_only;
+ 
+   /* State for a file descriptor that is known to be invalid (< 0). */
+   invalid;
+ 
+   /* State for a file descriptor that has been closed.  */
+   closed;
+ 
+   /* States for FDs relating to socket APIs.  */
+ 
+   /* Result of successful "socket" with SOCK_DGRAM.  */
+   new_datagram_socket;
+   /* Result of successful "socket" with SOCK_STREAM.  */
+   new_stream_socket;
+   /* Result of successful "socket" with unknown type.  */
+   new_unknown_socket;
+ 
+   /* The above after a successful call to "bind".  */
+   bound_datagram_socket;
+   bound_stream_socket;
+   bound_unknown_socket;
+ 
+   /* A bound socket after a successful call to "listen" (stream or unknown).  */
+   listening_stream_socket;
+ 
+   /* (i) the new FD as a result of a succesful call to "accept" on a
+       listening socket (via a passive open), or
+      (ii) an active socket after a successful call to "connect"
+      (via an active open).  */
+   connected_stream_socket;
+ 
+   /* State for a file descriptor that we do not want to track anymore . */
+   stop;
+ 
+   /* TRANSITIONS. */
+ 
+   /* On "open".  */
+   start -> unchecked_read_only [label="on 'X = open(..., O_RDONLY);'"];
+   start -> unchecked_write_only [label="on 'X = open(..., O_WRONLY);'"];
+   start -> unchecked_read_write [label="on 'X = open(..., ...);'"];
+ 
+   /* On "creat".  */
+   start -> unchecked_write_only [label="on 'X = create(...);'"];
+ 
+   /* On "close".  */
+   start -> closed [label="on 'close(X);'"];
+   unchecked_read_write -> closed [label="on 'close(X);'"];
+   unchecked_read_only -> closed [label="on 'close(X);'"];
+   unchecked_write_only -> closed [label="on 'close(X);'"];
+   valid_read_write -> closed [label="on 'close(X);'"];
+   valid_read_only -> closed [label="on 'close(X);'"];
+   valid_write_only -> closed [label="on 'close(X);'"];
+   constant_fd -> closed [label="on 'close(X);'"];
+   new_datagram_socket -> closed [label="on 'close(X);'"];
+   new_stream_socket -> closed [label="on 'close(X);'"];
+   new_unknown_socket -> closed [label="on 'close(X);'"];
+   bound_datagram_socket -> closed [label="on 'close(X);'"];
+   bound_stream_socket -> closed [label="on 'close(X);'"];
+   bound_unknown_socket -> closed [label="on 'close(X);'"];
+   listening_stream_socket -> closed [label="on 'close(X);'"];
+   connected_stream_socket -> closed [label="on 'close(X);'"];
+   closed -> stop [label="on 'close(X);':\nWarn('double close')"];
+ 
+   /* On "read".  */
+   closed -> closed [label="on 'read(X);':\nWarn('use after close')"];
+   unchecked_read_write -> unchecked_read_write [label="on 'read(X);:\nWarn('use without check')'"];
+   unchecked_read_only -> unchecked_read_only [label="on 'read(X);:\nWarn('use without check')'"];
+   unchecked_write_only -> unchecked_write_only [label="on 'read(X);:\nWarn('use without check')'"];
+   valid_write_only -> valid_write_only [label="on 'read(X);:\nWarn('access mode mismatch')'"];
+ 
+   /* On "write".  */
+   closed -> closed [label="on 'write(X);':\nWarn('use after close')"];
+   unchecked_read_write -> unchecked_read_write [label="on 'write(X);:\nWarn('use without check')'"];
+   unchecked_read_only -> unchecked_read_only [label="on 'write(X);:\nWarn('use without check')'"];
+   unchecked_write_only -> unchecked_write_only [label="on 'write(X);:\nWarn('use without check')'"];
+   valid_read_only -> valid_read_only [label="on 'write(X);:\nWarn('access mode mismatch')'"];
+ 
+   /* On "dup".  */
+   closed -> closed [label="on 'dup(X);':\nWarn('use after close')"];
+   /* plus stuff for the new fd.  */
+ 
+   /* On "pipe".  */
+   start -> valid_read_write [label="when 'pipe()' succeeds"];
+ 
+   /* On "socket".  */
+   start -> new_datagram_socket [label="when 'socket(..., SOCK_DGRAM, ...)' succeeds"];
+   start -> new_stream_socket [label="when 'socket(..., SOCK_STREAM, ...)' succeeds"];
+   start -> new_unknown_socket [label="when 'socket(..., ..., ...)' succeeds"];
+ 
+   /* On "bind".  */
+   start -> bound_unknown_socket [label="when 'bind(X, ...)' succeeds"];
+   constant_fd -> bound_unknown_socket [label="when 'bind(X, ...)' succeeds"];
+   new_stream_socket -> bound_stream_socket [label="when 'bind(X, ...)' succeeds"];
+   new_datagram_socket -> bound_datagram_socket [label="when 'bind(X, ...)' succeeds"];
+   new_unknown_socket -> bound_unknown_socket [label="when 'bind(X, ...)' succeeds"];
+ 
+   /* On "listen".  */
+   start -> listening_stream_socket [label="when 'listen(X, ...)' succeeds"];
+   bound_stream_socket -> listening_stream_socket [label="when 'listen(X, ...)' succeeds"];
+   bound_unknown_socket -> listening_stream_socket [label="when 'listen(X, ...)' succeeds"];
+ 
+   /* On "accept".  */
+   start -> connected_stream_socket [label="when 'accept(OTHER, ...)' succeeds on a listening_stream_socket"];
+   constant_fd -> connected_stream_socket [label="when 'accept(OTHER, ...)' succeeds on a listening_stream_socket"];
+ 
+   /* On "connect".  */
+   new_stream_socket -> connected_stream_socket [label="when 'connect(X, ...)' succeeds"];
+   new_datagram_socket -> new_datagram_socket [label="when 'connect(X, ...)' succeeds"];
+   new_unknown_socket -> stop [label="when 'connect(X, ...)' succeeds"];
+   start -> stop [label="when 'connect(X, ...)' succeeds"];
+   constant_fd -> stop [label="when 'connect(X, ...)' succeeds"];
+ 
+   /* on_condition.  */
+   unchecked_read_write -> valid_read_write [label="on 'X >= 0'"];
+   unchecked_read_only -> valid_read_only [label="on 'X >= 0'"];
+   unchecked_write_only -> valid_write_only [label="on 'X >= 0'"];
+   unchecked_read_write -> invalid [label="on 'X < 0'"];
+   unchecked_read_only -> invalid [label="on 'X < 0'"];
+   unchecked_write_only -> invalid [label="on 'X < 0'"];
+ 
+   /* Leaks.  */
+   unchecked_read_write -> stop [label="on leak:\nWarn('leak')"];
+   unchecked_read_only -> stop [label="on leak:\nWarn('leak')"];
+   unchecked_write_only -> stop [label="on leak:\nWarn('leak')"];
+   valid_read_write -> stop [label="on leak:\nWarn('leak')"];
+   valid_read_only -> stop [label="on leak:\nWarn('leak')"];
+   valid_write_only -> stop [label="on leak:\nWarn('leak')"];
+   new_datagram_socket -> stop [label="on leak:\nWarn('leak')"];
+   new_stream_socket -> stop [label="on leak:\nWarn('leak')"];
+   new_unknown_socket -> stop [label="on leak:\nWarn('leak')"];
+   bound_datagram_socket -> stop [label="on leak:\nWarn('leak')"];
+   bound_stream_socket -> stop [label="on leak:\nWarn('leak')"];
+   bound_unknown_socket -> stop [label="on leak:\nWarn('leak')"];
+   listening_stream_socket -> stop [label="on leak:\nWarn('leak')"];
+   connected_stream_socket -> stop [label="on leak:\nWarn('leak')"];
+ }
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-file.cc gcc-13.1.0/gcc/analyzer/sm-file.cc
*** gcc-12.2.0/gcc/analyzer/sm-file.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-file.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A state machine for detecting misuses of <stdio.h>'s FILE * API.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A state machine for detecting misuses of <stdio.h>'s FILE * API.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,26 ****
--- 19,28 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
*************** along with GCC; see the file COPYING3.
*** 28,35 ****
  #include "options.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
--- 30,35 ----
*************** along with GCC; see the file COPYING3.
*** 37,48 ****
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/function-set.h"
  #include "analyzer/analyzer-selftests.h"
- #include "tristate.h"
  #include "selftest.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  
  #if ENABLE_ANALYZER
  
--- 37,48 ----
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/function-set.h"
  #include "analyzer/analyzer-selftests.h"
  #include "selftest.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
+ #include "analyzer/call-details.h"
  
  #if ENABLE_ANALYZER
  
*************** class fileptr_state_machine : public sta
*** 57,66 ****
  public:
    fileptr_state_machine (logger *logger);
  
!   bool inherited_state_p () const FINAL OVERRIDE { return false; }
  
    state_machine::state_t
!   get_default_state (const svalue *sval) const FINAL OVERRIDE
    {
      if (tree cst = sval->maybe_get_constant ())
        {
--- 57,66 ----
  public:
    fileptr_state_machine (logger *logger);
  
!   bool inherited_state_p () const final override { return false; }
  
    state_machine::state_t
!   get_default_state (const svalue *sval) const final override
    {
      if (tree cst = sval->maybe_get_constant ())
        {
*************** public:
*** 72,88 ****
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const FINAL OVERRIDE;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const FINAL OVERRIDE;
  
!   bool can_purge_p (state_t s) const FINAL OVERRIDE;
!   pending_diagnostic *on_leak (tree var) const FINAL OVERRIDE;
  
    /* State for a FILE * returned from fopen that hasn't been checked for
       NULL.
--- 72,88 ----
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const final override;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const final override;
  
!   bool can_purge_p (state_t s) const final override;
!   std::unique_ptr<pending_diagnostic> on_leak (tree var) const final override;
  
    /* State for a FILE * returned from fopen that hasn't been checked for
       NULL.
*************** public:
*** 111,123 ****
    : m_sm (sm), m_arg (arg)
    {}
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const OVERRIDE
    {
      return same_tree_p (m_arg, ((const file_diagnostic &)base_other).m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     OVERRIDE
    {
      if (change.m_old_state == m_sm.get_start_state ()
  	&& change.m_new_state == m_sm.m_unchecked)
--- 111,123 ----
    : m_sm (sm), m_arg (arg)
    {}
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const override
    {
      return same_tree_p (m_arg, ((const file_diagnostic &)base_other).m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     override
    {
      if (change.m_old_state == m_sm.get_start_state ()
  	&& change.m_new_state == m_sm.m_unchecked)
*************** public:
*** 143,148 ****
--- 143,162 ----
      return label_text ();
    }
  
+   diagnostic_event::meaning
+   get_meaning_for_state_change (const evdesc::state_change &change)
+     const final override
+   {
+     if (change.m_old_state == m_sm.get_start_state ()
+ 	&& change.m_new_state == m_sm.m_unchecked)
+       return diagnostic_event::meaning (diagnostic_event::VERB_acquire,
+ 					diagnostic_event::NOUN_resource);
+     if (change.m_new_state == m_sm.m_closed)
+       return diagnostic_event::meaning (diagnostic_event::VERB_release,
+ 					diagnostic_event::NOUN_resource);
+     return diagnostic_event::meaning ();
+   }
+ 
  protected:
    const fileptr_state_machine &m_sm;
    tree m_arg;
*************** public:
*** 155,176 ****
      : file_diagnostic (sm, arg)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "double_fclose"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_double_fclose;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
!     return warning_at (rich_loc, get_controlling_option (),
! 		       "double %<fclose%> of FILE %qE",
! 		       m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     OVERRIDE
    {
      if (change.m_new_state == m_sm.m_closed)
        {
--- 169,193 ----
      : file_diagnostic (sm, arg)
    {}
  
!   const char *get_kind () const final override { return "double_fclose"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_double_fclose;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
!     diagnostic_metadata m;
!     /* CWE-1341: Multiple Releases of Same Resource or Handle.  */
!     m.add_cwe (1341);
!     return warning_meta (rich_loc, m, get_controlling_option (),
! 			 "double %<fclose%> of FILE %qE",
! 			 m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     override
    {
      if (change.m_new_state == m_sm.m_closed)
        {
*************** public:
*** 180,186 ****
      return file_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_first_fclose_event.known_p ())
        return ev.formatted_print ("second %qs here; first %qs was at %@",
--- 197,203 ----
      return file_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_first_fclose_event.known_p ())
        return ev.formatted_print ("second %qs here; first %qs was at %@",
*************** public:
*** 200,213 ****
      : file_diagnostic (sm, arg)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "file_leak"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_file_leak;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* CWE-775: "Missing Release of File Descriptor or Handle after
--- 217,230 ----
      : file_diagnostic (sm, arg)
    {}
  
!   const char *get_kind () const final override { return "file_leak"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_file_leak;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      diagnostic_metadata m;
      /* CWE-775: "Missing Release of File Descriptor or Handle after
*************** public:
*** 223,229 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (change.m_new_state == m_sm.m_unchecked)
        {
--- 240,246 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (change.m_new_state == m_sm.m_unchecked)
        {
*************** public:
*** 233,239 ****
      return file_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_fopen_event.known_p ())
        {
--- 250,256 ----
      return file_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_fopen_event.known_p ())
        {
*************** get_file_using_fns ()
*** 329,336 ****
      "ungetc",
      "vfprintf"
    };
!   const size_t count
!     = sizeof(funcnames) / sizeof (funcnames[0]);
    function_set fs (funcnames, count);
    return fs;
  }
--- 346,352 ----
      "ungetc",
      "vfprintf"
    };
!   const size_t count = ARRAY_SIZE (funcnames);
    function_set fs (funcnames, count);
    return fs;
  }
*************** fileptr_state_machine::on_stmt (sm_conte
*** 391,397 ****
  	      {
  		tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  		sm_ctxt->warn (node, stmt, arg,
! 			       new double_fclose (*this, diag_arg));
  		sm_ctxt->set_next_state (stmt, arg, m_stop);
  	      }
  	    return true;
--- 407,413 ----
  	      {
  		tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  		sm_ctxt->warn (node, stmt, arg,
! 			       make_unique<double_fclose> (*this, diag_arg));
  		sm_ctxt->set_next_state (stmt, arg, m_stop);
  	      }
  	    return true;
*************** fileptr_state_machine::can_purge_p (stat
*** 458,467 ****
     fileptr_state_machine, for complaining about leaks of FILE * in
     state 'unchecked' and 'nonnull'.  */
  
! pending_diagnostic *
  fileptr_state_machine::on_leak (tree var) const
  {
!   return new file_leak (*this, var);
  }
  
  } // anonymous namespace
--- 474,483 ----
     fileptr_state_machine, for complaining about leaks of FILE * in
     state 'unchecked' and 'nonnull'.  */
  
! std::unique_ptr<pending_diagnostic>
  fileptr_state_machine::on_leak (tree var) const
  {
!   return make_unique<file_leak> (*this, var);
  }
  
  } // anonymous namespace
*************** make_fileptr_state_machine (logger *logg
*** 474,479 ****
--- 490,662 ----
    return new fileptr_state_machine (logger);
  }
  
+ /* Handler for various stdio-related builtins that merely have external
+    effects that are out of scope for the analyzer: we only want to model
+    the effects on the return value.  */
+ 
+ class kf_stdio_output_fn : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const final override
+   {
+     return true;
+   }
+ 
+   /* A no-op; we just want the conjured return value.  */
+ };
+ 
+ /* Handler for "ferror"".  */
+ 
+ class kf_ferror : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1
+ 	    && cd.arg_is_pointer_p (0));
+   }
+ 
+   /* No side effects.  */
+ };
+ 
+ /* Handler for "fileno"".  */
+ 
+ class kf_fileno : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1
+ 	    && cd.arg_is_pointer_p (0));
+   }
+ 
+   /* No side effects.  */
+ };
+ 
+ /* Handler for "fgets" and "fgets_unlocked".  */
+ 
+ class kf_fgets : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 3
+ 	    && cd.arg_is_pointer_p (0)
+ 	    && cd.arg_is_pointer_p (2));
+   }
+ 
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     /* Ideally we would bifurcate state here between the
+        error vs no error cases.  */
+     region_model *model = cd.get_model ();
+     const svalue *ptr_sval = cd.get_arg_svalue (0);
+     if (const region *reg = ptr_sval->maybe_get_region ())
+       {
+ 	const region *base_reg = reg->get_base_region ();
+ 	const svalue *new_sval = cd.get_or_create_conjured_svalue (base_reg);
+ 	model->set_value (base_reg, new_sval, cd.get_ctxt ());
+       }
+   }
+ };
+ 
+ /* Handler for "fread".
+      size_t fread(void *restrict buffer, size_t size, size_t count,
+ 		  FILE *restrict stream);
+    See e.g. https://en.cppreference.com/w/c/io/fread
+    and https://www.man7.org/linux/man-pages/man3/fread.3.html */
+ 
+ class kf_fread : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 4
+ 	    && cd.arg_is_pointer_p (0)
+ 	    && cd.arg_is_size_p (1)
+ 	    && cd.arg_is_size_p (2)
+ 	    && cd.arg_is_pointer_p (3));
+   }
+ 
+   /* For now, assume that any call to "fread" fully clobbers the buffer
+      passed in.  This isn't quite correct (e.g. errors, partial reads;
+      see PR analyzer/108689), but at least stops us falsely complaining
+      about the buffer being uninitialized.  */
+   void impl_call_pre (const call_details &cd) const final override
+   {
+     region_model *model = cd.get_model ();
+     const svalue *ptr_sval = cd.get_arg_svalue (0);
+     if (const region *reg = ptr_sval->maybe_get_region ())
+       {
+ 	const region *base_reg = reg->get_base_region ();
+ 	const svalue *new_sval = cd.get_or_create_conjured_svalue (base_reg);
+ 	model->set_value (base_reg, new_sval, cd.get_ctxt ());
+       }
+   }
+ };
+ 
+ /* Handler for "getc"".  */
+ 
+ class kf_getc : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return (cd.num_args () == 1
+ 	    && cd.arg_is_pointer_p (0));
+   }
+ 
+   /* No side effects.  */
+ };
+ 
+ /* Handler for "getchar"".  */
+ 
+ class kf_getchar : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &cd) const final override
+   {
+     return cd.num_args () == 0;
+   }
+ 
+   /* Empty.  No side-effects (tracking stream state is out-of-scope
+      for the analyzer).  */
+ };
+ 
+ /* Populate KFM with instances of known functions relating to
+    stdio streams.  */
+ 
+ void
+ register_known_file_functions (known_function_manager &kfm)
+ {
+   kfm.add (BUILT_IN_FPRINTF, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FPRINTF_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FPUTC, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FPUTC_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FPUTS, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FPUTS_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FWRITE, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_FWRITE_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PRINTF, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PRINTF_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PUTC, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PUTCHAR, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PUTCHAR_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PUTC_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PUTS, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_PUTS_UNLOCKED, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_VFPRINTF, make_unique<kf_stdio_output_fn> ());
+   kfm.add (BUILT_IN_VPRINTF, make_unique<kf_stdio_output_fn> ());
+ 
+   kfm.add ("ferror", make_unique<kf_ferror> ());
+   kfm.add ("fgets", make_unique<kf_fgets> ());
+   kfm.add ("fgets_unlocked", make_unique<kf_fgets> ()); // non-standard
+   kfm.add ("fileno", make_unique<kf_fileno> ());
+   kfm.add ("fread", make_unique<kf_fread> ());
+   kfm.add ("getc", make_unique<kf_getc> ());
+   kfm.add ("getchar", make_unique<kf_getchar> ());
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-file.dot gcc-13.1.0/gcc/analyzer/sm-file.dot
*** gcc-12.2.0/gcc/analyzer/sm-file.dot	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/sm-file.dot	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,67 ----
+ /* An overview of the state machine from sm-file.cc.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Keep this in-sync with sm-file.cc  */
+ 
+ digraph "file" {
+ 
+   /* STATES. */
+ 
+   /* Start state.  */
+   start;
+ 
+   /* State for a FILE * returned from fopen that hasn't been checked for
+      NULL.
+      It could be an open stream, or could be NULL.  */
+   unchecked;
+ 
+   /* State for a FILE * that's known to be NULL.  */
+   null;
+ 
+   /* State for a FILE * that's known to be a non-NULL open stream.  */
+   nonnull;
+ 
+   /* State for a FILE * that's had fclose called on it.  */
+   closed;
+ 
+   /* Stop state, for a FILE * we don't want to track any more.  */
+   stop;
+ 
+   /* TRANSITIONS. */
+ 
+   /* On "fopen".  */
+   start -> unchecked [label="on 'X = fopen(...);'"];
+ 
+   /* On "fclose".  */
+   start -> closed [label="on 'close(X);'"];
+   /* TODO: is it safe to call fclose (NULL) ? */
+   unchecked -> closed [label="on 'close(X);'"];
+   null -> closed [label="on 'close(X);'"];
+   nonnull -> closed [label="on 'close(X);'"];
+   closed -> stop [label="on 'close(X);':\nWarn('double fclose')"];
+ 
+   /* on_condition.  */
+   unchecked -> nonnull [label="on 'X != 0'"];
+   unchecked -> null [label="on 'X == 0'"];
+ 
+   /* Leaks.  */
+   unchecked -> stop [label="on leak:\nWarn('leak')"];
+   nonnull -> stop [label="on leak:\nWarn('leak')"];
+ }
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-malloc.cc gcc-13.1.0/gcc/analyzer/sm-malloc.cc
*** gcc-12.2.0/gcc/analyzer/sm-malloc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-malloc.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A state machine for detecting misuses of the malloc/free API.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* A state machine for detecting misuses of the malloc/free API.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,26 ****
--- 19,28 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
*************** along with GCC; see the file COPYING3.
*** 29,51 ****
  #include "bitmap.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "stringpool.h"
  #include "attribs.h"
  #include "analyzer/function-set.h"
  #include "analyzer/program-state.h"
  
  #if ENABLE_ANALYZER
  
--- 31,52 ----
  #include "bitmap.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
+ #include "analyzer/call-details.h"
  #include "stringpool.h"
  #include "attribs.h"
  #include "analyzer/function-set.h"
  #include "analyzer/program-state.h"
+ #include "analyzer/checker-event.h"
+ #include "analyzer/exploded-graph.h"
  
  #if ENABLE_ANALYZER
  
*************** enum resource_state
*** 89,94 ****
--- 90,98 ----
    /* The start state.  */
    RS_START,
  
+   /* State for a pointer that's been unconditionally dereferenced.  */
+   RS_ASSUMED_NON_NULL,
+ 
    /* State for a pointer that's known to be NULL.  */
    RS_NULL,
  
*************** struct allocation_state : public state_m
*** 128,134 ****
      m_deallocator (deallocator)
    {}
  
!   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
  
    const allocation_state *get_nonnull () const;
  
--- 132,138 ----
      m_deallocator (deallocator)
    {}
  
!   void dump_to_pp (pretty_printer *pp) const override;
  
    const allocation_state *get_nonnull () const;
  
*************** struct allocation_state : public state_m
*** 137,142 ****
--- 141,165 ----
    const deallocator *m_deallocator;
  };
  
+ /* Custom state subclass, for the "assumed-non-null" state
+    where the assumption happens in a particular frame.  */
+ 
+ struct assumed_non_null_state : public allocation_state
+ {
+   assumed_non_null_state (const char *name, unsigned id,
+ 			  const frame_region *frame)
+   : allocation_state (name, id, RS_ASSUMED_NON_NULL,
+ 		      NULL, NULL),
+     m_frame (frame)
+   {
+     gcc_assert (m_frame);
+   }
+ 
+   void dump_to_pp (pretty_printer *pp) const final override;
+ 
+   const frame_region *m_frame;
+ };
+ 
  /* An enum for choosing which wording to use in various diagnostics
     when describing deallocations.  */
  
*************** struct custom_deallocator_set : public d
*** 243,251 ****
  			  //unsigned arg_idx,
  			  enum wording wording);
  
!   bool contains_p (const deallocator *d) const FINAL OVERRIDE;
!   const deallocator *maybe_get_single () const FINAL OVERRIDE;
!   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
  
    auto_vec <const deallocator *> m_deallocator_vec;
  };
--- 266,274 ----
  			  //unsigned arg_idx,
  			  enum wording wording);
  
!   bool contains_p (const deallocator *d) const final override;
!   const deallocator *maybe_get_single () const final override;
!   void dump_to_pp (pretty_printer *pp) const final override;
  
    auto_vec <const deallocator *> m_deallocator_vec;
  };
*************** struct standard_deallocator_set : public
*** 259,267 ****
  			    const char *name,
  			    enum wording wording);
  
!   bool contains_p (const deallocator *d) const FINAL OVERRIDE;
!   const deallocator *maybe_get_single () const FINAL OVERRIDE;
!   void dump_to_pp (pretty_printer *pp) const FINAL OVERRIDE;
  
    standard_deallocator m_deallocator;
  };
--- 282,290 ----
  			    const char *name,
  			    enum wording wording);
  
!   bool contains_p (const deallocator *d) const final override;
!   const deallocator *maybe_get_single () const final override;
!   void dump_to_pp (pretty_printer *pp) const final override;
  
    standard_deallocator m_deallocator;
  };
*************** public:
*** 343,352 ****
  	     const deallocator_set *deallocators,
  	     const deallocator *deallocator);
  
!   bool inherited_state_p () const FINAL OVERRIDE { return false; }
  
    state_machine::state_t
!   get_default_state (const svalue *sval) const FINAL OVERRIDE
    {
      if (tree cst = sval->maybe_get_constant ())
        {
--- 366,375 ----
  	     const deallocator_set *deallocators,
  	     const deallocator *deallocator);
  
!   bool inherited_state_p () const final override { return false; }
  
    state_machine::state_t
!   get_default_state (const svalue *sval) const final override
    {
      if (tree cst = sval->maybe_get_constant ())
        {
*************** public:
*** 372,399 ****
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const FINAL OVERRIDE;
  
    void on_phi (sm_context *sm_ctxt,
  	       const supernode *node,
  	       const gphi *phi,
! 	       tree rhs) const FINAL OVERRIDE;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const FINAL OVERRIDE;
  
!   bool can_purge_p (state_t s) const FINAL OVERRIDE;
!   pending_diagnostic *on_leak (tree var) const FINAL OVERRIDE;
  
    bool reset_when_passed_to_unknown_fn_p (state_t s,
! 					  bool is_mutable) const FINAL OVERRIDE;
  
    static bool unaffected_by_call_p (tree fndecl);
  
    void on_realloc_with_move (region_model *model,
  			     sm_state_map *smap,
  			     const svalue *old_ptr_sval,
--- 395,433 ----
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const final override;
  
    void on_phi (sm_context *sm_ctxt,
  	       const supernode *node,
  	       const gphi *phi,
! 	       tree rhs) const final override;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const final override;
  
!   void on_pop_frame (sm_state_map *smap,
! 		     const frame_region *) const final override;
! 
!   bool can_purge_p (state_t s) const final override;
!   std::unique_ptr<pending_diagnostic> on_leak (tree var) const final override;
  
    bool reset_when_passed_to_unknown_fn_p (state_t s,
! 					  bool is_mutable) const final override;
! 
!   state_t
!   maybe_get_merged_states_nonequal (state_t state_a,
! 				    state_t state_b) const final override;
  
    static bool unaffected_by_call_p (tree fndecl);
  
+   void maybe_assume_non_null (sm_context *sm_ctxt,
+ 			      tree ptr,
+ 			      const gimple *stmt) const;
+ 
    void on_realloc_with_move (region_model *model,
  			     sm_state_map *smap,
  			     const svalue *old_ptr_sval,
*************** public:
*** 408,413 ****
--- 442,451 ----
  
    /* States that are independent of api.  */
  
+   /* States for a pointer that's been unconditionally dereferenced
+      in a particular stack frame.  */
+   hash_map<const frame_region *, state_t> m_assumed_non_null;
+ 
    /* State for a pointer that's known to be NULL.  */
    state_t m_null;
  
*************** private:
*** 427,432 ****
--- 465,480 ----
    const deallocator *
    get_or_create_deallocator (tree deallocator_fndecl);
  
+   state_t
+   get_or_create_assumed_non_null_state_for_frame (const frame_region *frame);
+ 
+   void
+   maybe_complain_about_deref_before_check (sm_context *sm_ctxt,
+ 					   const supernode *node,
+ 					   const gimple *stmt,
+ 					   const assumed_non_null_state *,
+ 					   tree ptr) const;
+ 
    void on_allocator_call (sm_context *sm_ctxt,
  			  const gcall *call,
  			  const deallocator_set *deallocators,
*************** freed_p (state_machine::state_t state)
*** 680,685 ****
--- 728,741 ----
    return get_rs (state) == RS_FREED;
  }
  
+ /* Return true if STATE is a value that has been assumed to be non-NULL.  */
+ 
+ static bool
+ assumed_non_null_p (state_machine::state_t state)
+ {
+   return get_rs (state) == RS_ASSUMED_NON_NULL;
+ }
+ 
  /* Class for diagnostics relating to malloc_state_machine.  */
  
  class malloc_diagnostic : public pending_diagnostic
*************** public:
*** 689,701 ****
    : m_sm (sm), m_arg (arg)
    {}
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const OVERRIDE
    {
      return same_tree_p (m_arg, ((const malloc_diagnostic &)base_other).m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     OVERRIDE
    {
      if (change.m_old_state == m_sm.get_start_state ()
  	&& unchecked_p (change.m_new_state))
--- 745,757 ----
    : m_sm (sm), m_arg (arg)
    {}
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const override
    {
      return same_tree_p (m_arg, ((const malloc_diagnostic &)base_other).m_arg);
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     override
    {
      if (change.m_old_state == m_sm.get_start_state ()
  	&& unchecked_p (change.m_new_state))
*************** public:
*** 736,741 ****
--- 792,811 ----
      return label_text ();
    }
  
+   diagnostic_event::meaning
+   get_meaning_for_state_change (const evdesc::state_change &change)
+     const final override
+   {
+     if (change.m_old_state == m_sm.get_start_state ()
+ 	&& unchecked_p (change.m_new_state))
+       return diagnostic_event::meaning (diagnostic_event::VERB_acquire,
+ 					diagnostic_event::NOUN_memory);
+     if (freed_p (change.m_new_state))
+       return diagnostic_event::meaning (diagnostic_event::VERB_release,
+ 					diagnostic_event::NOUN_memory);
+     return diagnostic_event::meaning ();
+   }
+ 
  protected:
    const malloc_state_machine &m_sm;
    tree m_arg;
*************** public:
*** 755,771 ****
      m_actual_dealloc (actual_dealloc)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "mismatching_deallocation";
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_mismatching_deallocation;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
--- 825,841 ----
      m_actual_dealloc (actual_dealloc)
    {}
  
!   const char *get_kind () const final override
    {
      return "mismatching_deallocation";
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_mismatching_deallocation;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
*************** public:
*** 785,791 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (unchecked_p (change.m_new_state))
        {
--- 855,861 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (unchecked_p (change.m_new_state))
        {
*************** public:
*** 801,807 ****
      return malloc_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_alloc_event.known_p ())
        {
--- 871,877 ----
      return malloc_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_alloc_event.known_p ())
        {
*************** public:
*** 837,850 ****
    : malloc_diagnostic (sm, arg), m_funcname (funcname)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "double_free"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_double_free;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
--- 907,920 ----
    : malloc_diagnostic (sm, arg), m_funcname (funcname)
    {}
  
!   const char *get_kind () const final override { return "double_free"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_double_free;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
*************** public:
*** 854,860 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (freed_p (change.m_new_state))
        {
--- 924,930 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (freed_p (change.m_new_state))
        {
*************** public:
*** 865,871 ****
    }
  
    label_text describe_call_with_state (const evdesc::call_with_state &info)
!     FINAL OVERRIDE
    {
      if (freed_p (info.m_state))
        return info.formatted_print
--- 935,941 ----
    }
  
    label_text describe_call_with_state (const evdesc::call_with_state &info)
!     final override
    {
      if (freed_p (info.m_state))
        return info.formatted_print
*************** public:
*** 874,880 ****
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_first_free_event.known_p ())
        return ev.formatted_print ("second %qs here; first %qs was at %@",
--- 944,950 ----
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_first_free_event.known_p ())
        return ev.formatted_print ("second %qs here; first %qs was at %@",
*************** public:
*** 899,905 ****
    {}
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (change.m_old_state == m_sm.get_start_state ()
  	&& unchecked_p (change.m_new_state))
--- 969,975 ----
    {}
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (change.m_old_state == m_sm.get_start_state ()
  	&& unchecked_p (change.m_new_state))
*************** public:
*** 911,917 ****
    }
  
    label_text describe_return_of_state (const evdesc::return_of_state &info)
!     FINAL OVERRIDE
    {
      if (unchecked_p (info.m_state))
        return info.formatted_print ("possible return of NULL to %qE from %qE",
--- 981,987 ----
    }
  
    label_text describe_return_of_state (const evdesc::return_of_state &info)
!     final override
    {
      if (unchecked_p (info.m_state))
        return info.formatted_print ("possible return of NULL to %qE from %qE",
*************** public:
*** 933,946 ****
    : possible_null (sm, arg)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "possible_null_deref"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_possible_null_dereference;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      /* CWE-690: Unchecked Return Value to NULL Pointer Dereference.  */
      diagnostic_metadata m;
--- 1003,1016 ----
    : possible_null (sm, arg)
    {}
  
!   const char *get_kind () const final override { return "possible_null_deref"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_possible_null_dereference;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      /* CWE-690: Unchecked Return Value to NULL Pointer Dereference.  */
      diagnostic_metadata m;
*************** public:
*** 949,955 ****
  			 "dereference of possibly-NULL %qE", m_arg);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_origin_of_unchecked_event.known_p ())
        return ev.formatted_print ("%qE could be NULL: unchecked value from %@",
--- 1019,1025 ----
  			 "dereference of possibly-NULL %qE", m_arg);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_origin_of_unchecked_event.known_p ())
        return ev.formatted_print ("%qE could be NULL: unchecked value from %@",
*************** inform_nonnull_attribute (tree fndecl, i
*** 993,1000 ****
    label_text arg_desc = describe_argument_index (fndecl, arg_idx);
    inform (DECL_SOURCE_LOCATION (fndecl),
  	  "argument %s of %qD must be non-null",
! 	  arg_desc.m_buffer, fndecl);
!   arg_desc.maybe_free ();
    /* Ideally we would use the location of the parm and underline the
       attribute also - but we don't have the location_t values at this point
       in the middle-end.
--- 1063,1069 ----
    label_text arg_desc = describe_argument_index (fndecl, arg_idx);
    inform (DECL_SOURCE_LOCATION (fndecl),
  	  "argument %s of %qD must be non-null",
! 	  arg_desc.get (), fndecl);
    /* Ideally we would use the location of the parm and underline the
       attribute also - but we don't have the location_t values at this point
       in the middle-end.
*************** public:
*** 1013,1021 ****
      m_fndecl (fndecl), m_arg_idx (arg_idx)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "possible_null_arg"; }
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const
    {
      const possible_null_arg &sub_other
        = (const possible_null_arg &)base_other;
--- 1082,1091 ----
      m_fndecl (fndecl), m_arg_idx (arg_idx)
    {}
  
!   const char *get_kind () const final override { return "possible_null_arg"; }
  
!   bool subclass_equal_p (const pending_diagnostic &base_other)
!     const final override
    {
      const possible_null_arg &sub_other
        = (const possible_null_arg &)base_other;
*************** public:
*** 1024,1035 ****
  	    && m_arg_idx == sub_other.m_arg_idx);
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_possible_null_argument;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      /* CWE-690: Unchecked Return Value to NULL Pointer Dereference.  */
      auto_diagnostic_group d;
--- 1094,1105 ----
  	    && m_arg_idx == sub_other.m_arg_idx);
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_possible_null_argument;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      /* CWE-690: Unchecked Return Value to NULL Pointer Dereference.  */
      auto_diagnostic_group d;
*************** public:
*** 1044,1063 ****
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      label_text arg_desc = describe_argument_index (m_fndecl, m_arg_idx);
      label_text result;
      if (m_origin_of_unchecked_event.known_p ())
        result = ev.formatted_print ("argument %s (%qE) from %@ could be NULL"
  				   " where non-null expected",
! 				   arg_desc.m_buffer, ev.m_expr,
  				   &m_origin_of_unchecked_event);
      else
        result = ev.formatted_print ("argument %s (%qE) could be NULL"
  				   " where non-null expected",
! 				   arg_desc.m_buffer, ev.m_expr);
!     arg_desc.maybe_free ();
      return result;
    }
  
--- 1114,1132 ----
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      label_text arg_desc = describe_argument_index (m_fndecl, m_arg_idx);
      label_text result;
      if (m_origin_of_unchecked_event.known_p ())
        result = ev.formatted_print ("argument %s (%qE) from %@ could be NULL"
  				   " where non-null expected",
! 				   arg_desc.get (), ev.m_expr,
  				   &m_origin_of_unchecked_event);
      else
        result = ev.formatted_print ("argument %s (%qE) could be NULL"
  				   " where non-null expected",
! 				   arg_desc.get (), ev.m_expr);
      return result;
    }
  
*************** public:
*** 1074,1087 ****
    null_deref (const malloc_state_machine &sm, tree arg)
    : malloc_diagnostic (sm, arg) {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "null_deref"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_null_dereference;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      /* CWE-476: NULL Pointer Dereference.  */
      diagnostic_metadata m;
--- 1143,1158 ----
    null_deref (const malloc_state_machine &sm, tree arg)
    : malloc_diagnostic (sm, arg) {}
  
!   const char *get_kind () const final override { return "null_deref"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_null_dereference;
    }
  
!   bool terminate_path_p () const final override { return true; }
! 
!   bool emit (rich_location *rich_loc) final override
    {
      /* CWE-476: NULL Pointer Dereference.  */
      diagnostic_metadata m;
*************** public:
*** 1091,1097 ****
    }
  
    label_text describe_return_of_state (const evdesc::return_of_state &info)
!     FINAL OVERRIDE
    {
      if (info.m_state == m_sm.m_null)
        return info.formatted_print ("return of NULL to %qE from %qE",
--- 1162,1168 ----
    }
  
    label_text describe_return_of_state (const evdesc::return_of_state &info)
!     final override
    {
      if (info.m_state == m_sm.m_null)
        return info.formatted_print ("return of NULL to %qE from %qE",
*************** public:
*** 1099,1105 ****
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      return ev.formatted_print ("dereference of NULL %qE", ev.m_expr);
    }
--- 1170,1176 ----
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      return ev.formatted_print ("dereference of NULL %qE", ev.m_expr);
    }
*************** public:
*** 1117,1125 ****
      m_fndecl (fndecl), m_arg_idx (arg_idx)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "null_arg"; }
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const
    {
      const null_arg &sub_other
        = (const null_arg &)base_other;
--- 1188,1197 ----
      m_fndecl (fndecl), m_arg_idx (arg_idx)
    {}
  
!   const char *get_kind () const final override { return "null_arg"; }
  
!   bool subclass_equal_p (const pending_diagnostic &base_other)
!     const final override
    {
      const null_arg &sub_other
        = (const null_arg &)base_other;
*************** public:
*** 1128,1139 ****
  	    && m_arg_idx == sub_other.m_arg_idx);
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_null_argument;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      /* CWE-476: NULL Pointer Dereference.  */
      auto_diagnostic_group d;
--- 1200,1213 ----
  	    && m_arg_idx == sub_other.m_arg_idx);
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_null_argument;
    }
  
!   bool terminate_path_p () const final override { return true; }
! 
!   bool emit (rich_location *rich_loc) final override
    {
      /* CWE-476: NULL Pointer Dereference.  */
      auto_diagnostic_group d;
*************** public:
*** 1153,1170 ****
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      label_text arg_desc = describe_argument_index (m_fndecl, m_arg_idx);
      label_text result;
      if (zerop (ev.m_expr))
        result = ev.formatted_print ("argument %s NULL where non-null expected",
! 				   arg_desc.m_buffer);
      else
        result = ev.formatted_print ("argument %s (%qE) NULL"
  				   " where non-null expected",
! 				   arg_desc.m_buffer, ev.m_expr);
!     arg_desc.maybe_free ();
      return result;
    }
  
--- 1227,1243 ----
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      label_text arg_desc = describe_argument_index (m_fndecl, m_arg_idx);
      label_text result;
      if (zerop (ev.m_expr))
        result = ev.formatted_print ("argument %s NULL where non-null expected",
! 				   arg_desc.get ());
      else
        result = ev.formatted_print ("argument %s (%qE) NULL"
  				   " where non-null expected",
! 				   arg_desc.get (), ev.m_expr);
      return result;
    }
  
*************** public:
*** 1184,1197 ****
      gcc_assert (deallocator);
    }
  
!   const char *get_kind () const FINAL OVERRIDE { return "use_after_free"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_use_after_free;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      /* CWE-416: Use After Free.  */
      diagnostic_metadata m;
--- 1257,1270 ----
      gcc_assert (deallocator);
    }
  
!   const char *get_kind () const final override { return "use_after_free"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_use_after_free;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      /* CWE-416: Use After Free.  */
      diagnostic_metadata m;
*************** public:
*** 1202,1208 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (freed_p (change.m_new_state))
        {
--- 1275,1281 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (freed_p (change.m_new_state))
        {
*************** public:
*** 1223,1229 ****
      return malloc_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      const char *funcname = m_deallocator->m_name;
      if (m_free_event.known_p ())
--- 1296,1302 ----
      return malloc_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      const char *funcname = m_deallocator->m_name;
      if (m_free_event.known_p ())
*************** public:
*** 1259,1265 ****
       that if they are accessed after the free, it looks like
       they are uninitialized).  */
  
!   bool supercedes_p (const pending_diagnostic &other) const FINAL OVERRIDE
    {
      if (other.use_of_uninit_p ())
        return true;
--- 1332,1338 ----
       that if they are accessed after the free, it looks like
       they are uninitialized).  */
  
!   bool supercedes_p (const pending_diagnostic &other) const final override
    {
      if (other.use_of_uninit_p ())
        return true;
*************** public:
*** 1278,1292 ****
    malloc_leak (const malloc_state_machine &sm, tree arg)
    : malloc_diagnostic (sm, arg) {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "malloc_leak"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_malloc_leak;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      m.add_cwe (401);
      if (m_arg)
--- 1351,1366 ----
    malloc_leak (const malloc_state_machine &sm, tree arg)
    : malloc_diagnostic (sm, arg) {}
  
!   const char *get_kind () const final override { return "malloc_leak"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_malloc_leak;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
+     /* "CWE-401: Missing Release of Memory after Effective Lifetime".  */
      diagnostic_metadata m;
      m.add_cwe (401);
      if (m_arg)
*************** public:
*** 1298,1304 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (unchecked_p (change.m_new_state)
  	|| (start_p (change.m_old_state) && nonnull_p (change.m_new_state)))
--- 1372,1378 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (unchecked_p (change.m_new_state)
  	|| (start_p (change.m_old_state) && nonnull_p (change.m_new_state)))
*************** public:
*** 1309,1315 ****
      return malloc_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (ev.m_expr)
        {
--- 1383,1389 ----
      return malloc_diagnostic::describe_state_change (change);
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (ev.m_expr)
        {
*************** public:
*** 1343,1364 ****
    {
    }
  
!   const char *get_kind () const FINAL OVERRIDE { return "free_of_non_heap"; }
  
    bool subclass_equal_p (const pending_diagnostic &base_other) const
!     FINAL OVERRIDE
    {
      const free_of_non_heap &other = (const free_of_non_heap &)base_other;
      return (same_tree_p (m_arg, other.m_arg)
  	    && m_freed_reg == other.m_freed_reg);
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_free_of_non_heap;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
--- 1417,1438 ----
    {
    }
  
!   const char *get_kind () const final override { return "free_of_non_heap"; }
  
    bool subclass_equal_p (const pending_diagnostic &base_other) const
!     final override
    {
      const free_of_non_heap &other = (const free_of_non_heap &)base_other;
      return (same_tree_p (m_arg, other.m_arg)
  	    && m_freed_reg == other.m_freed_reg);
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_free_of_non_heap;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
*************** public:
*** 1387,1403 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &)
!     FINAL OVERRIDE
    {
      return label_text::borrow ("pointer is from here");
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      return ev.formatted_print ("call to %qs here", m_funcname);
    }
  
!   void mark_interesting_stuff (interesting_t *interest) FINAL OVERRIDE
    {
      if (m_freed_reg)
        interest->add_region_creation (m_freed_reg);
--- 1461,1477 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &)
!     final override
    {
      return label_text::borrow ("pointer is from here");
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      return ev.formatted_print ("call to %qs here", m_funcname);
    }
  
!   void mark_interesting_stuff (interesting_t *interest) final override
    {
      if (m_freed_reg)
        interest->add_region_creation (m_freed_reg);
*************** private:
*** 1416,1421 ****
--- 1490,1644 ----
    const char *m_funcname;
  };
  
+ /* Concrete pending_diagnostic subclass for -Wanalyzer-deref-before-check.  */
+ 
+ class deref_before_check : public malloc_diagnostic
+ {
+ public:
+   deref_before_check (const malloc_state_machine &sm, tree arg)
+   : malloc_diagnostic (sm, arg),
+     m_deref_enode (NULL),
+     m_deref_expr (NULL),
+     m_check_enode (NULL)
+   {
+     gcc_assert (arg);
+   }
+ 
+   const char *get_kind () const final override { return "deref_before_check"; }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_deref_before_check;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     /* Don't emit the warning if we can't show where the deref
+        and the check occur.  */
+     if (!m_deref_enode)
+       return false;
+     if (!m_check_enode)
+       return false;
+     /* Only emit the warning for intraprocedural cases.  */
+     const program_point &deref_point = m_deref_enode->get_point ();
+     const program_point &check_point = m_check_enode->get_point ();
+ 
+     if (!program_point::effectively_intraprocedural_p (deref_point,
+ 						       check_point))
+       return false;
+ 
+     /* Reject the warning if the check occurs within a macro defintion.
+        This avoids false positives for such code as:
+ 
+ 	#define throw_error \
+ 	   do {             \
+ 	     if (p)         \
+ 	       cleanup (p); \
+ 	     return;        \
+ 	   } while (0)
+ 
+ 	if (p->idx >= n)
+ 	  throw_error ();
+ 
+        where the usage of "throw_error" implicitly adds a check
+        on 'p'.
+ 
+        We do warn when the check is in a macro expansion if we can get
+        at the location of the condition and it is't part of the
+        definition, so that we warn for checks such as:
+ 	   if (words[0][0] == '@')
+ 	     return;
+ 	   g_assert(words[0] != NULL); <--- here
+        Unfortunately we don't have locations for individual gimple
+        arguments, so in:
+ 	   g_assert (ptr);
+        we merely have a gimple_cond
+ 	   if (p_2(D) == 0B)
+        with no way of getting at the location of the condition separately
+        from that of the gimple_cond (where the "if" is within the macro
+        definition).  We reject the warning for such cases.
+ 
+        We do warn when the *deref* occurs in a macro, since this can be
+        a source of real bugs; see e.g. PR 77425.  */
+     location_t check_loc = m_check_enode->get_point ().get_location ();
+     if (linemap_location_from_macro_definition_p (line_table, check_loc))
+       return false;
+ 
+     /* Reject if m_deref_expr is sufficiently different from m_arg
+        for cases where the dereference is spelled differently from
+        the check, which is probably two different ways to get the
+        same svalue, and thus not worth reporting.  */
+     if (!m_deref_expr)
+       return false;
+     if (!sufficiently_similar_p (m_deref_expr, m_arg))
+       return false;
+ 
+     /* Reject the warning if the deref's BB doesn't dominate that
+        of the check, so that we don't warn e.g. for shared cleanup
+        code that checks a pointer for NULL, when that code is sometimes
+        used before a deref and sometimes after.
+        Using the dominance code requires setting cfun.  */
+     auto_cfun sentinel (m_deref_enode->get_function ());
+     calculate_dominance_info (CDI_DOMINATORS);
+     if (!dominated_by_p (CDI_DOMINATORS,
+ 			 m_check_enode->get_supernode ()->m_bb,
+ 			 m_deref_enode->get_supernode ()->m_bb))
+       return false;
+ 
+     return warning_at (rich_loc, get_controlling_option (),
+ 		       "check of %qE for NULL after already"
+ 		       " dereferencing it",
+ 		       m_arg);
+   }
+ 
+   label_text describe_state_change (const evdesc::state_change &change)
+     final override
+   {
+     if (change.m_old_state == m_sm.get_start_state ()
+ 	&& assumed_non_null_p (change.m_new_state))
+       {
+ 	m_first_deref_event = change.m_event_id;
+ 	m_deref_enode = change.m_event.get_exploded_node ();
+ 	m_deref_expr = change.m_expr;
+ 	return change.formatted_print ("pointer %qE is dereferenced here",
+ 				       m_arg);
+       }
+     return malloc_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     m_check_enode = ev.m_event.get_exploded_node ();
+     if (m_first_deref_event.known_p ())
+       return ev.formatted_print ("pointer %qE is checked for NULL here but"
+ 				 " it was already dereferenced at %@",
+ 				 m_arg, &m_first_deref_event);
+     else
+       return ev.formatted_print ("pointer %qE is checked for NULL here but"
+ 				 " it was already dereferenced",
+ 				 m_arg);
+   }
+ 
+ private:
+   static bool sufficiently_similar_p (tree expr_a, tree expr_b)
+   {
+     pretty_printer *pp_a = global_dc->printer->clone ();
+     pretty_printer *pp_b = global_dc->printer->clone ();
+     pp_printf (pp_a, "%qE", expr_a);
+     pp_printf (pp_b, "%qE", expr_b);
+     bool result = (strcmp (pp_formatted_text (pp_a), pp_formatted_text (pp_b))
+ 		   == 0);
+     delete pp_a;
+     delete pp_b;
+     return result;
+   }
+ 
+   diagnostic_event_id_t m_first_deref_event;
+   const exploded_node *m_deref_enode;
+   tree m_deref_expr;
+   const exploded_node *m_check_enode;
+ };
+ 
  /* struct allocation_state : public state_machine::state.  */
  
  /* Implementation of state_machine::state::dump_to_pp vfunc
*************** allocation_state::get_nonnull () const
*** 1444,1449 ****
--- 1667,1683 ----
    return as_a_allocation_state (m_deallocators->m_nonnull);
  }
  
+ /* struct assumed_non_null_state : public allocation_state.  */
+ 
+ void
+ assumed_non_null_state::dump_to_pp (pretty_printer *pp) const
+ {
+   allocation_state::dump_to_pp (pp);
+   pp_string (pp, " (in ");
+   m_frame->dump_to_pp (pp, true);
+   pp_character (pp, ')');
+ }
+ 
  /* malloc_state_machine's ctor.  */
  
  malloc_state_machine::malloc_state_machine (logger *logger)
*************** malloc_state_machine::get_or_create_deal
*** 1585,1590 ****
--- 1819,1840 ----
    return d;
  }
  
+ /* Get the "assumed-non-null" state for assumptions made within FRAME,
+    creating it if necessary.  */
+ 
+ state_machine::state_t
+ malloc_state_machine::
+ get_or_create_assumed_non_null_state_for_frame (const frame_region *frame)
+ {
+   if (state_t *slot = m_assumed_non_null.get (frame))
+     return *slot;
+   state_machine::state *new_state
+     = new assumed_non_null_state ("assumed-non-null", alloc_state_id (), frame);
+   add_custom_state (new_state);
+   m_assumed_non_null.put (frame, new_state);
+   return new_state;
+ }
+ 
  /* Try to identify the function declaration either by name or as a known malloc
     builtin.  */
  
*************** known_allocator_p (const_tree fndecl, co
*** 1617,1622 ****
--- 1867,1899 ----
    return false;
  }
  
+ /* If PTR's nullness is not known, transition it to the "assumed-non-null"
+    state for the current frame.  */
+ 
+ void
+ malloc_state_machine::maybe_assume_non_null (sm_context *sm_ctxt,
+ 					     tree ptr,
+ 					     const gimple *stmt) const
+ {
+   const region_model *old_model = sm_ctxt->get_old_region_model ();
+   if (!old_model)
+     return;
+ 
+   tree null_ptr_cst = build_int_cst (TREE_TYPE (ptr), 0);
+   tristate known_non_null
+     = old_model->eval_condition (ptr, NE_EXPR, null_ptr_cst, NULL);
+   if (known_non_null.is_unknown ())
+     {
+       /* Cast away const-ness for cache-like operations.  */
+       malloc_state_machine *mut_this
+ 	= const_cast <malloc_state_machine *> (this);
+       state_t next_state
+ 	= mut_this->get_or_create_assumed_non_null_state_for_frame
+ 	(old_model->get_current_frame ());
+       sm_ctxt->set_next_state (stmt, ptr, next_state);
+     }
+ }
+ 
  /* Implementation of state_machine::on_stmt vfunc for malloc_state_machine.  */
  
  bool
*************** malloc_state_machine::on_stmt (sm_contex
*** 1716,1724 ****
  			{
  			  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  			  sm_ctxt->warn (node, stmt, arg,
! 					 new possible_null_arg (*this, diag_arg,
! 								callee_fndecl,
! 								i));
  			  const allocation_state *astate
  			    = as_a_allocation_state (state);
  			  sm_ctxt->set_next_state (stmt, arg,
--- 1993,2000 ----
  			{
  			  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  			  sm_ctxt->warn (node, stmt, arg,
! 					 make_unique<possible_null_arg>
! 					   (*this, diag_arg, callee_fndecl, i));
  			  const allocation_state *astate
  			    = as_a_allocation_state (state);
  			  sm_ctxt->set_next_state (stmt, arg,
*************** malloc_state_machine::on_stmt (sm_contex
*** 1728,1737 ****
  			{
  			  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  			  sm_ctxt->warn (node, stmt, arg,
! 					 new null_arg (*this, diag_arg,
! 						       callee_fndecl, i));
  			  sm_ctxt->set_next_state (stmt, arg, m_stop);
  			}
  		    }
  		}
  	      BITMAP_FREE (nonnull_args);
--- 2004,2015 ----
  			{
  			  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  			  sm_ctxt->warn (node, stmt, arg,
! 					 make_unique<null_arg>
! 					   (*this, diag_arg, callee_fndecl, i));
  			  sm_ctxt->set_next_state (stmt, arg, m_stop);
  			}
+ 		      else if (state == m_start)
+ 			maybe_assume_non_null (sm_ctxt, arg, stmt);
  		    }
  		}
  	      BITMAP_FREE (nonnull_args);
*************** malloc_state_machine::on_stmt (sm_contex
*** 1749,1754 ****
--- 2027,2062 ----
  	  }
        }
  
+   /* Look for pointers explicitly being compared against zero
+      that are in state assumed_non_null i.e. we already defererenced
+      them.
+      We have to do this check here, rather than in on_condition
+      because we add a constraint that the pointer is non-null when
+      dereferencing it, and this makes the apply_constraints_for_gcond
+      find known-true and known-false conditions; on_condition is only
+      called when adding new constraints.  */
+   if (const gcond *cond_stmt = dyn_cast <const gcond *> (stmt))
+     {
+       enum tree_code op = gimple_cond_code (cond_stmt);
+       if (op == EQ_EXPR || op == NE_EXPR)
+ 	{
+ 	  tree lhs = gimple_cond_lhs (cond_stmt);
+ 	  tree rhs = gimple_cond_rhs (cond_stmt);
+ 	  if (any_pointer_p (lhs)
+ 	      && any_pointer_p (rhs)
+ 	      && zerop (rhs))
+ 	    {
+ 	      state_t state = sm_ctxt->get_state (stmt, lhs);
+ 	      if (assumed_non_null_p (state))
+ 		maybe_complain_about_deref_before_check
+ 		  (sm_ctxt, node,
+ 		   stmt,
+ 		   (const assumed_non_null_state *)state,
+ 		   lhs);
+ 	    }
+ 	}
+     }
+ 
    if (tree lhs = sm_ctxt->is_zero_assignment (stmt))
      if (any_pointer_p (lhs))
        on_zero_assignment (sm_ctxt, stmt,lhs);
*************** malloc_state_machine::on_stmt (sm_contex
*** 1767,1777 ****
  	  tree arg = TREE_OPERAND (op, 0);
  
  	  state_t state = sm_ctxt->get_state (stmt, arg);
! 	  if (unchecked_p (state))
  	    {
  	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  	      sm_ctxt->warn (node, stmt, arg,
! 			     new possible_null_deref (*this, diag_arg));
  	      const allocation_state *astate = as_a_allocation_state (state);
  	      sm_ctxt->set_next_state (stmt, arg, astate->get_nonnull ());
  	    }
--- 2075,2088 ----
  	  tree arg = TREE_OPERAND (op, 0);
  
  	  state_t state = sm_ctxt->get_state (stmt, arg);
! 	  if (state == m_start)
! 	    maybe_assume_non_null (sm_ctxt, arg, stmt);
! 	  else if (unchecked_p (state))
  	    {
  	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  	      sm_ctxt->warn (node, stmt, arg,
! 			     make_unique<possible_null_deref> (*this,
! 							       diag_arg));
  	      const allocation_state *astate = as_a_allocation_state (state);
  	      sm_ctxt->set_next_state (stmt, arg, astate->get_nonnull ());
  	    }
*************** malloc_state_machine::on_stmt (sm_contex
*** 1779,1785 ****
  	    {
  	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  	      sm_ctxt->warn (node, stmt, arg,
! 			     new null_deref (*this, diag_arg));
  	      sm_ctxt->set_next_state (stmt, arg, m_stop);
  	    }
  	  else if (freed_p (state))
--- 2090,2096 ----
  	    {
  	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  	      sm_ctxt->warn (node, stmt, arg,
! 			     make_unique<null_deref> (*this, diag_arg));
  	      sm_ctxt->set_next_state (stmt, arg, m_stop);
  	    }
  	  else if (freed_p (state))
*************** malloc_state_machine::on_stmt (sm_contex
*** 1787,1794 ****
  	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  	      const allocation_state *astate = as_a_allocation_state (state);
  	      sm_ctxt->warn (node, stmt, arg,
! 			     new use_after_free (*this, diag_arg,
! 						 astate->m_deallocator));
  	      sm_ctxt->set_next_state (stmt, arg, m_stop);
  	    }
  	}
--- 2098,2105 ----
  	      tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
  	      const allocation_state *astate = as_a_allocation_state (state);
  	      sm_ctxt->warn (node, stmt, arg,
! 			     make_unique<use_after_free>
! 			       (*this, diag_arg, astate->m_deallocator));
  	      sm_ctxt->set_next_state (stmt, arg, m_stop);
  	    }
  	}
*************** malloc_state_machine::on_stmt (sm_contex
*** 1796,1801 ****
--- 2107,2160 ----
    return false;
  }
  
+ /* Given a check against null of PTR in assumed-non-null state STATE,
+    potentially add a deref_before_check warning to SM_CTXT.  */
+ 
+ void
+ malloc_state_machine::
+ maybe_complain_about_deref_before_check (sm_context *sm_ctxt,
+ 					 const supernode *node,
+ 					 const gimple *stmt,
+ 					 const assumed_non_null_state *state,
+ 					 tree ptr) const
+ {
+   const region_model *model = sm_ctxt->get_old_region_model ();
+   if (!model)
+     return;
+ 
+   /* Don't complain if the current frame (where the check is occurring) is
+      deeper than the frame in which the "not null" assumption was made.
+      This suppress false positives for cases like:
+ 
+ 	void foo (struct s *p)
+ 	{
+ 	  int val = s->some_field; // deref here
+ 	  shared_helper (p);
+ 	}
+ 
+      where "shared_helper" has:
+ 
+ 	void shared_helper (struct s *p)
+ 	{
+ 	  if (!p) // check here
+ 	    return;
+ 	  // etc
+ 	}
+ 
+      since the check in "shared_helper" is OK.  */
+   const frame_region *checked_in_frame = model->get_current_frame ();
+   const frame_region *assumed_nonnull_in_frame = state->m_frame;
+   if (checked_in_frame->get_index () > assumed_nonnull_in_frame->get_index ())
+     return;
+ 
+   tree diag_ptr = sm_ctxt->get_diagnostic_tree (ptr);
+   if (diag_ptr)
+     sm_ctxt->warn
+       (node, stmt, ptr,
+        make_unique<deref_before_check> (*this, diag_ptr));
+   sm_ctxt->set_next_state (stmt, ptr, m_stop);
+ }
+ 
  /* Handle a call to an allocator.
     RETURNS_NONNULL is true if CALL is to a fndecl known to have
     __attribute__((returns_nonnull)).  */
*************** malloc_state_machine::handle_free_of_non
*** 1840,1847 ****
        freed_reg = old_model->deref_rvalue (ptr_sval, arg, NULL);
      }
    sm_ctxt->warn (node, call, arg,
! 		 new free_of_non_heap (*this, diag_arg, freed_reg,
! 				       d->m_name));
    sm_ctxt->set_next_state (call, arg, m_stop);
  }
  
--- 2199,2206 ----
        freed_reg = old_model->deref_rvalue (ptr_sval, arg, NULL);
      }
    sm_ctxt->warn (node, call, arg,
! 		 make_unique<free_of_non_heap>
! 		   (*this, diag_arg, freed_reg, d->m_name));
    sm_ctxt->set_next_state (call, arg, m_stop);
  }
  
*************** malloc_state_machine::on_deallocator_cal
*** 1858,1865 ****
  
    state_t state = sm_ctxt->get_state (call, arg);
  
!   /* start/unchecked/nonnull -> freed.  */
!   if (state == m_start)
      sm_ctxt->set_next_state (call, arg, d->m_freed);
    else if (unchecked_p (state) || nonnull_p (state))
      {
--- 2217,2224 ----
  
    state_t state = sm_ctxt->get_state (call, arg);
  
!   /* start/assumed_non_null/unchecked/nonnull -> freed.  */
!   if (state == m_start || assumed_non_null_p (state))
      sm_ctxt->set_next_state (call, arg, d->m_freed);
    else if (unchecked_p (state) || nonnull_p (state))
      {
*************** malloc_state_machine::on_deallocator_cal
*** 1869,1879 ****
  	{
  	  /* Wrong allocator.  */
  	  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	  pending_diagnostic *pd
! 	    = new mismatching_deallocation (*this, diag_arg,
! 					    astate->m_deallocators,
! 					    d);
! 	  sm_ctxt->warn (node, call, arg, pd);
  	}
        sm_ctxt->set_next_state (call, arg, d->m_freed);
      }
--- 2228,2238 ----
  	{
  	  /* Wrong allocator.  */
  	  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	  sm_ctxt->warn (node, call, arg,
! 			 make_unique<mismatching_deallocation>
! 			   (*this, diag_arg,
! 			    astate->m_deallocators,
! 			    d));
  	}
        sm_ctxt->set_next_state (call, arg, d->m_freed);
      }
*************** malloc_state_machine::on_deallocator_cal
*** 1885,1891 ****
        /* freed -> stop, with warning.  */
        tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
        sm_ctxt->warn (node, call, arg,
! 		     new double_free (*this, diag_arg, d->m_name));
        sm_ctxt->set_next_state (call, arg, m_stop);
      }
    else if (state == m_non_heap)
--- 2244,2250 ----
        /* freed -> stop, with warning.  */
        tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
        sm_ctxt->warn (node, call, arg,
! 		     make_unique<double_free> (*this, diag_arg, d->m_name));
        sm_ctxt->set_next_state (call, arg, m_stop);
      }
    else if (state == m_non_heap)
*************** malloc_state_machine::on_deallocator_cal
*** 1899,1905 ****
     Check for free of non-heap or mismatching allocators,
     transitioning to the "stop" state for such cases.
  
!    Otherwise, region_model::impl_call_realloc will later
     get called (which will handle other sm-state transitions
     when the state is bifurcated).  */
  
--- 2258,2264 ----
     Check for free of non-heap or mismatching allocators,
     transitioning to the "stop" state for such cases.
  
!    Otherwise, kf_realloc::impl_call_post will later
     get called (which will handle other sm-state transitions
     when the state is bifurcated).  */
  
*************** malloc_state_machine::on_realloc_call (s
*** 1923,1933 ****
  	{
  	  /* Wrong allocator.  */
  	  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	  pending_diagnostic *pd
! 	    = new mismatching_deallocation (*this, diag_arg,
! 					    astate->m_deallocators,
! 					    d);
! 	  sm_ctxt->warn (node, call, arg, pd);
  	  sm_ctxt->set_next_state (call, arg, m_stop);
  	  if (path_context *path_ctxt = sm_ctxt->get_path_context ())
  	    path_ctxt->terminate_path ();
--- 2282,2291 ----
  	{
  	  /* Wrong allocator.  */
  	  tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
! 	  sm_ctxt->warn (node, call, arg,
! 			 make_unique<mismatching_deallocation>
! 			   (*this, diag_arg,
! 			    astate->m_deallocators, d));
  	  sm_ctxt->set_next_state (call, arg, m_stop);
  	  if (path_context *path_ctxt = sm_ctxt->get_path_context ())
  	    path_ctxt->terminate_path ();
*************** malloc_state_machine::on_realloc_call (s
*** 1938,1944 ****
        /* freed -> stop, with warning.  */
        tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
        sm_ctxt->warn (node, call, arg,
! 		     new double_free (*this, diag_arg, "free"));
        sm_ctxt->set_next_state (call, arg, m_stop);
        if (path_context *path_ctxt = sm_ctxt->get_path_context ())
  	path_ctxt->terminate_path ();
--- 2296,2302 ----
        /* freed -> stop, with warning.  */
        tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
        sm_ctxt->warn (node, call, arg,
! 		     make_unique<double_free> (*this, diag_arg, "free"));
        sm_ctxt->set_next_state (call, arg, m_stop);
        if (path_context *path_ctxt = sm_ctxt->get_path_context ())
  	path_ctxt->terminate_path ();
*************** malloc_state_machine::on_condition (sm_c
*** 2005,2010 ****
--- 2363,2393 ----
      }
  }
  
+ /* Implementation of state_machine::on_pop_frame vfunc for malloc_state_machine.
+    Clear any "assumed-non-null" state where the assumption happened in
+    FRAME_REG.  */
+ 
+ void
+ malloc_state_machine::on_pop_frame (sm_state_map *smap,
+ 				    const frame_region *frame_reg) const
+ {
+   hash_set<const svalue *> svals_to_clear;
+   for (auto kv : *smap)
+     {
+       const svalue *sval = kv.first;
+       state_t state = kv.second.m_state;
+       if (assumed_non_null_p (state))
+ 	{
+ 	  const assumed_non_null_state *assumed_state
+ 	    = (const assumed_non_null_state *)state;
+ 	  if (frame_reg == assumed_state->m_frame)
+ 	    svals_to_clear.add (sval);
+ 	}
+     }
+   for (auto sval : svals_to_clear)
+     smap->clear_any_state (sval);
+ }
+ 
  /* Implementation of state_machine::can_purge_p vfunc for malloc_state_machine.
     Don't allow purging of pointers in state 'unchecked' or 'nonnull'
     (to avoid false leak reports).  */
*************** malloc_state_machine::can_purge_p (state
*** 2020,2029 ****
     (for complaining about leaks of pointers in state 'unchecked' and
     'nonnull').  */
  
! pending_diagnostic *
  malloc_state_machine::on_leak (tree var) const
  {
!   return new malloc_leak (*this, var);
  }
  
  /* Implementation of state_machine::reset_when_passed_to_unknown_fn_p vfunc
--- 2403,2412 ----
     (for complaining about leaks of pointers in state 'unchecked' and
     'nonnull').  */
  
! std::unique_ptr<pending_diagnostic>
  malloc_state_machine::on_leak (tree var) const
  {
!   return make_unique<malloc_leak> (*this, var);
  }
  
  /* Implementation of state_machine::reset_when_passed_to_unknown_fn_p vfunc
*************** malloc_state_machine::reset_when_passed_
*** 2042,2047 ****
--- 2425,2447 ----
    return is_mutable;
  }
  
+ /* Implementation of state_machine::maybe_get_merged_states_nonequal vfunc
+    for malloc_state_machine.
+ 
+    Support discarding "assumed-non-null" states when merging with
+    start state.  */
+ 
+ state_machine::state_t
+ malloc_state_machine::maybe_get_merged_states_nonequal (state_t state_a,
+ 							state_t state_b) const
+ {
+   if (assumed_non_null_p (state_a) && state_b == m_start)
+     return m_start;
+   if (state_a == m_start && assumed_non_null_p (state_b))
+     return m_start;
+   return NULL;
+ }
+ 
  /* Return true if calls to FNDECL are known to not affect this sm-state.  */
  
  bool
*************** malloc_state_machine::unaffected_by_call
*** 2054,2061 ****
      /* This array must be kept sorted.  */
      "strsep",
    };
!   const size_t count
!     = sizeof(funcnames) / sizeof (funcnames[0]);
    function_set fs (funcnames, count);
  
    if (fs.contains_decl_p (fndecl))
--- 2454,2460 ----
      /* This array must be kept sorted.  */
      "strsep",
    };
!   const size_t count = ARRAY_SIZE (funcnames);
    function_set fs (funcnames, count);
  
    if (fs.contains_decl_p (fndecl))
*************** make_malloc_state_machine (logger *logge
*** 2116,2122 ****
  }
  
  /* Specialcase hook for handling realloc, for use by
!    region_model::impl_call_realloc::success_with_move::update_model.  */
  
  void
  region_model::on_realloc_with_move (const call_details &cd,
--- 2515,2521 ----
  }
  
  /* Specialcase hook for handling realloc, for use by
!    kf_realloc::impl_call_post::success_with_move::update_model.  */
  
  void
  region_model::on_realloc_with_move (const call_details &cd,
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-malloc.dot gcc-13.1.0/gcc/analyzer/sm-malloc.dot
*** gcc-12.2.0/gcc/analyzer/sm-malloc.dot	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-malloc.dot	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* An overview of the state machine from sm-malloc.cc.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* An overview of the state machine from sm-malloc.cc.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** digraph "malloc" {
*** 32,37 ****
--- 32,40 ----
       It could be a pointer to heap-allocated memory, or could be NULL.  */
    unchecked;
  
+   /* State for a pointer that's been unconditionally dereferenced.  */
+   assumed_non_null;
+ 
    /* State for a pointer that's known to be NULL.  */
    null;
  
*************** digraph "malloc" {
*** 58,63 ****
--- 61,67 ----
  
    /* On "free".  */
    start -> freed [label="on 'free(X);'"];
+   assumed_non_null -> freed [label="on 'free(X);'"];
    unchecked -> freed [label="on 'free(X);'"];
    nonnull -> freed [label="on 'free(X);'"];
    freed -> stop [label="on 'free(X);':\n Warn('double-free')"];
*************** digraph "malloc" {
*** 66,71 ****
--- 70,76 ----
    /* Handle "__attribute__((nonnull))".   */
    unchecked -> nonnull [label="on 'FN(X)' with __attribute__((nonnull)):\nWarn('possible NULL arg')"];
    null -> stop [label="on 'FN(X)' with __attribute__((nonnull)):\nWarn('NULL arg')"];
+   start -> assumed_non_null [label="on 'FN(X)' with __attribute__((nonnull))"];
  
    /* is_zero_assignment.  */
    start -> null [label="on 'X = 0;'"];
*************** digraph "malloc" {
*** 76,81 ****
--- 81,87 ----
    start -> non_heap [label="on 'X = &EXPR;'"];
  
    /* Handle dereferences.  */
+   start -> assumed_non_null [label="on '*X'"];
    unchecked -> nonnull [label="on '*X':\nWarn('possible NULL deref')"];
    null -> stop [label="on '*X':\nWarn('NULL deref')"];
    freed -> stop [label="on '*X':\nWarn('use after free')"];
*************** digraph "malloc" {
*** 83,88 ****
--- 89,95 ----
    /* on_condition.  */
    unchecked -> nonnull [label="on 'X != 0'"];
    unchecked -> null [label="on 'X == 0'"];
+   assumed_non_null -> stop [label="on 'if (X)':\nWarn('deref-before-check')"];
  
    unchecked -> stop [label="on leak:\nWarn('leak')"];
    nonnull -> stop [label="on leak:\nWarn('leak')"];
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-pattern-test.cc gcc-13.1.0/gcc/analyzer/sm-pattern-test.cc
*** gcc-12.2.0/gcc/analyzer/sm-pattern-test.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-pattern-test.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* A state machine for use in DejaGnu tests, to check that
     pattern-matching works as expected.
  
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,7 ----
  /* A state machine for use in DejaGnu tests, to check that
     pattern-matching works as expected.
  
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,28 ****
--- 21,30 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
*************** along with GCC; see the file COPYING3.
*** 30,44 ****
  #include "tree-pretty-print.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
--- 32,42 ----
*************** class pattern_test_state_machine : publi
*** 58,77 ****
  public:
    pattern_test_state_machine (logger *logger);
  
!   bool inherited_state_p () const FINAL OVERRIDE { return false; }
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const FINAL OVERRIDE;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const FINAL OVERRIDE;
  
!   bool can_purge_p (state_t s) const FINAL OVERRIDE;
  };
  
  class pattern_match : public pending_diagnostic_subclass<pattern_match>
--- 56,75 ----
  public:
    pattern_test_state_machine (logger *logger);
  
!   bool inherited_state_p () const final override { return false; }
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const final override;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const final override;
  
!   bool can_purge_p (state_t s) const final override;
  };
  
  class pattern_match : public pending_diagnostic_subclass<pattern_match>
*************** public:
*** 80,86 ****
    pattern_match (tree lhs, enum tree_code op, tree rhs)
    : m_lhs (lhs), m_op (op), m_rhs (rhs) {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "pattern_match"; }
  
    bool operator== (const pattern_match &other) const
    {
--- 78,84 ----
    pattern_match (tree lhs, enum tree_code op, tree rhs)
    : m_lhs (lhs), m_op (op), m_rhs (rhs) {}
  
!   const char *get_kind () const final override { return "pattern_match"; }
  
    bool operator== (const pattern_match &other) const
    {
*************** public:
*** 89,100 ****
  	    && same_tree_p (m_rhs, other.m_rhs));
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return 0;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "pattern match on %<%E %s %E%>",
--- 87,98 ----
  	    && same_tree_p (m_rhs, other.m_rhs));
    }
  
!   int get_controlling_option () const final override
    {
      return 0;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      return warning_at (rich_loc, get_controlling_option (),
  		       "pattern match on %<%E %s %E%>",
*************** pattern_test_state_machine::on_condition
*** 143,150 ****
  
    if (tree lhs_expr = sm_ctxt->get_diagnostic_tree (lhs))
      {
!       pending_diagnostic *diag = new pattern_match (lhs_expr, op, rhs_cst);
!       sm_ctxt->warn (node, stmt, lhs_expr, diag);
      }
  }
  
--- 141,148 ----
  
    if (tree lhs_expr = sm_ctxt->get_diagnostic_tree (lhs))
      {
!       sm_ctxt->warn (node, stmt, lhs_expr,
! 		     make_unique<pattern_match> (lhs_expr, op, rhs_cst));
      }
  }
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-sensitive.cc gcc-13.1.0/gcc/analyzer/sm-sensitive.cc
*** gcc-12.2.0/gcc/analyzer/sm-sensitive.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-sensitive.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* An experimental state machine, for tracking exposure of sensitive
     data (e.g. through logging).
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,6 ----
  /* An experimental state machine, for tracking exposure of sensitive
     data (e.g. through logging).
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 20,37 ****
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
  #include "function.h"
- #include "function.h"
  #include "basic-block.h"
  #include "gimple.h"
  #include "options.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
--- 20,36 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
  #include "gimple.h"
  #include "options.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
*************** class sensitive_state_machine : public s
*** 52,64 ****
  public:
    sensitive_state_machine (logger *logger);
  
!   bool inherited_state_p () const FINAL OVERRIDE { return true; }
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const FINAL OVERRIDE;
  
!   bool can_purge_p (state_t s) const FINAL OVERRIDE;
  
    /* State for "sensitive" data, such as a password.  */
    state_t m_sensitive;
--- 51,63 ----
  public:
    sensitive_state_machine (logger *logger);
  
!   bool inherited_state_p () const final override { return true; }
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const final override;
  
!   bool can_purge_p (state_t s) const final override;
  
    /* State for "sensitive" data, such as a password.  */
    state_t m_sensitive;
*************** public:
*** 81,87 ****
    : m_sm (sm), m_arg (arg)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "exposure_through_output_file";
    }
--- 80,86 ----
    : m_sm (sm), m_arg (arg)
    {}
  
!   const char *get_kind () const final override
    {
      return "exposure_through_output_file";
    }
*************** public:
*** 91,102 ****
      return same_tree_p (m_arg, other.m_arg);
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_exposure_through_output_file;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* CWE-532: Information Exposure Through Log Files */
--- 90,101 ----
      return same_tree_p (m_arg, other.m_arg);
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_exposure_through_output_file;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      diagnostic_metadata m;
      /* CWE-532: Information Exposure Through Log Files */
*************** public:
*** 107,113 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (change.m_new_state == m_sm.m_sensitive)
        {
--- 106,112 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (change.m_new_state == m_sm.m_sensitive)
        {
*************** public:
*** 117,124 ****
      return label_text ();
    }
  
    label_text describe_call_with_state (const evdesc::call_with_state &info)
!     FINAL OVERRIDE
    {
      if (info.m_state == m_sm.m_sensitive)
        return info.formatted_print
--- 116,132 ----
      return label_text ();
    }
  
+   diagnostic_event::meaning
+   get_meaning_for_state_change (const evdesc::state_change &change)
+     const final override
+   {
+     if (change.m_new_state == m_sm.m_sensitive)
+       return diagnostic_event::meaning (diagnostic_event::VERB_acquire,
+ 					diagnostic_event::NOUN_sensitive);
+     return diagnostic_event::meaning ();
+   }
    label_text describe_call_with_state (const evdesc::call_with_state &info)
!     final override
    {
      if (info.m_state == m_sm.m_sensitive)
        return info.formatted_print
*************** public:
*** 128,134 ****
    }
  
    label_text describe_return_of_state (const evdesc::return_of_state &info)
!     FINAL OVERRIDE
    {
      if (info.m_state == m_sm.m_sensitive)
        return info.formatted_print ("returning sensitive value to %qE from %qE",
--- 136,142 ----
    }
  
    label_text describe_return_of_state (const evdesc::return_of_state &info)
!     final override
    {
      if (info.m_state == m_sm.m_sensitive)
        return info.formatted_print ("returning sensitive value to %qE from %qE",
*************** public:
*** 136,142 ****
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_first_sensitive_event.known_p ())
        return ev.formatted_print ("sensitive value %qE written to output file"
--- 144,150 ----
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_first_sensitive_event.known_p ())
        return ev.formatted_print ("sensitive value %qE written to output file"
*************** sensitive_state_machine::warn_for_any_ex
*** 175,181 ****
      {
        tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
        sm_ctxt->warn (node, stmt, arg,
! 		     new exposure_through_output_file (*this, diag_arg));
      }
  }
  
--- 183,190 ----
      {
        tree diag_arg = sm_ctxt->get_diagnostic_tree (arg);
        sm_ctxt->warn (node, stmt, arg,
! 		     make_unique<exposure_through_output_file> (*this,
! 								diag_arg));
      }
  }
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-signal.cc gcc-13.1.0/gcc/analyzer/sm-signal.cc
*** gcc-12.2.0/gcc/analyzer/sm-signal.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-signal.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* An experimental state machine, for tracking bad calls from within
     signal handlers.
  
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,7 ----
  /* An experimental state machine, for tracking bad calls from within
     signal handlers.
  
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,28 ****
--- 21,30 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
*************** along with GCC; see the file COPYING3.
*** 31,45 ****
  #include "bitmap.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "diagnostic-event-id.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/pending-diagnostic.h"
  #include "sbitmap.h"
- #include "tristate.h"
  #include "ordered-hash-map.h"
  #include "selftest.h"
  #include "analyzer/call-string.h"
--- 33,44 ----
*************** along with GCC; see the file COPYING3.
*** 48,60 ****
  #include "analyzer/region-model.h"
  #include "analyzer/program-state.h"
  #include "analyzer/checker-path.h"
- #include "digraph.h"
  #include "cfg.h"
  #include "gimple-iterator.h"
  #include "cgraph.h"
  #include "analyzer/supergraph.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
  #include "analyzer/diagnostic-manager.h"
  #include "shortest-paths.h"
  #include "analyzer/exploded-graph.h"
--- 47,56 ----
*************** class signal_state_machine : public stat
*** 75,87 ****
  public:
    signal_state_machine (logger *logger);
  
!   bool inherited_state_p () const FINAL OVERRIDE { return false; }
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const FINAL OVERRIDE;
  
!   bool can_purge_p (state_t s) const FINAL OVERRIDE;
  
    /* These states are "global", rather than per-expression.  */
  
--- 71,83 ----
  public:
    signal_state_machine (logger *logger);
  
!   bool inherited_state_p () const final override { return false; }
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const final override;
  
!   bool can_purge_p (state_t s) const final override;
  
    /* These states are "global", rather than per-expression.  */
  
*************** public:
*** 106,124 ****
      gcc_assert (m_unsafe_fndecl);
    }
  
!   const char *get_kind () const FINAL OVERRIDE { return "signal_unsafe_call"; }
  
    bool operator== (const signal_unsafe_call &other) const
    {
      return m_unsafe_call == other.m_unsafe_call;
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_unsafe_call_within_signal_handler;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
--- 102,120 ----
      gcc_assert (m_unsafe_fndecl);
    }
  
!   const char *get_kind () const final override { return "signal_unsafe_call"; }
  
    bool operator== (const signal_unsafe_call &other) const
    {
      return m_unsafe_call == other.m_unsafe_call;
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_unsafe_call_within_signal_handler;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      auto_diagnostic_group d;
      diagnostic_metadata m;
*************** public:
*** 148,154 ****
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (change.is_global_p ()
  	&& change.m_new_state == m_sm.m_in_signal_handler)
--- 144,150 ----
    }
  
    label_text describe_state_change (const evdesc::state_change &change)
!     final override
    {
      if (change.is_global_p ()
  	&& change.m_new_state == m_sm.m_in_signal_handler)
*************** public:
*** 160,166 ****
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      return ev.formatted_print ("call to %qD from within signal handler",
  			       m_unsafe_fndecl);
--- 156,162 ----
      return label_text ();
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      return ev.formatted_print ("call to %qD from within signal handler",
  			       m_unsafe_fndecl);
*************** update_model_for_signal_handler (region_
*** 213,219 ****
  class signal_delivery_edge_info_t : public custom_edge_info
  {
  public:
!   void print (pretty_printer *pp) const FINAL OVERRIDE
    {
      pp_string (pp, "signal delivered");
    }
--- 209,215 ----
  class signal_delivery_edge_info_t : public custom_edge_info
  {
  public:
!   void print (pretty_printer *pp) const final override
    {
      pp_string (pp, "signal delivered");
    }
*************** public:
*** 226,232 ****
  
    bool update_model (region_model *model,
  		     const exploded_edge *eedge,
! 		     region_model_context *) const FINAL OVERRIDE
    {
      gcc_assert (eedge);
      update_model_for_signal_handler (model, eedge->m_dest->get_function ());
--- 222,228 ----
  
    bool update_model (region_model *model,
  		     const exploded_edge *eedge,
! 		     region_model_context *) const final override
    {
      gcc_assert (eedge);
      update_model_for_signal_handler (model, eedge->m_dest->get_function ());
*************** public:
*** 235,245 ****
  
    void add_events_to_path (checker_path *emission_path,
  			   const exploded_edge &eedge ATTRIBUTE_UNUSED)
!     const FINAL OVERRIDE
    {
      emission_path->add_event
!       (new precanned_custom_event
!        (UNKNOWN_LOCATION, NULL_TREE, 0,
  	"later on,"
  	" when the signal is delivered to the process"));
    }
--- 231,241 ----
  
    void add_events_to_path (checker_path *emission_path,
  			   const exploded_edge &eedge ATTRIBUTE_UNUSED)
!     const final override
    {
      emission_path->add_event
!       (make_unique<precanned_custom_event>
!        (event_loc_info (UNKNOWN_LOCATION, NULL_TREE, 0),
  	"later on,"
  	" when the signal is delivered to the process"));
    }
*************** public:
*** 261,276 ****
       on the node.  */
    void impl_transition (exploded_graph *eg,
  			exploded_node *src_enode,
! 			int sm_idx) FINAL OVERRIDE
    {
      function *handler_fun = DECL_STRUCT_FUNCTION (m_fndecl);
      if (!handler_fun)
        return;
      program_point entering_handler
!       = program_point::from_function_entry (eg->get_supergraph (),
  					    handler_fun);
  
!     program_state state_entering_handler (eg->get_ext_state ());
      update_model_for_signal_handler (state_entering_handler.m_region_model,
  				     handler_fun);
      state_entering_handler.m_checker_states[sm_idx]->set_global_state
--- 257,274 ----
       on the node.  */
    void impl_transition (exploded_graph *eg,
  			exploded_node *src_enode,
! 			int sm_idx) final override
    {
      function *handler_fun = DECL_STRUCT_FUNCTION (m_fndecl);
      if (!handler_fun)
        return;
+     const extrinsic_state &ext_state = eg->get_ext_state ();
      program_point entering_handler
!       = program_point::from_function_entry (*ext_state.get_model_manager (),
! 					    eg->get_supergraph (),
  					    handler_fun);
  
!     program_state state_entering_handler (ext_state);
      update_model_for_signal_handler (state_entering_handler.m_region_model,
  				     handler_fun);
      state_entering_handler.m_checker_states[sm_idx]->set_global_state
*************** public:
*** 281,287 ****
  						       src_enode);
      if (dst_enode)
        eg->add_edge (src_enode, dst_enode, NULL, /*state_change (),*/
! 		    new signal_delivery_edge_info_t ());
    }
  
    const signal_state_machine &m_sm;
--- 279,285 ----
  						       src_enode);
      if (dst_enode)
        eg->add_edge (src_enode, dst_enode, NULL, /*state_change (),*/
! 		    make_unique<signal_delivery_edge_info_t> ());
    }
  
    const signal_state_machine &m_sm;
*************** get_async_signal_unsafe_fns ()
*** 309,316 ****
      "vsnprintf",
      "vsprintf"
    };
!   const size_t count
!     = sizeof(async_signal_unsafe_fns) / sizeof (async_signal_unsafe_fns[0]);
    function_set fs (async_signal_unsafe_fns, count);
    return fs;
  }
--- 307,313 ----
      "vsnprintf",
      "vsprintf"
    };
!   const size_t count = ARRAY_SIZE (async_signal_unsafe_fns);
    function_set fs (async_signal_unsafe_fns, count);
    return fs;
  }
*************** signal_state_machine::on_stmt (sm_contex
*** 356,363 ****
  	  if (signal_unsafe_p (callee_fndecl))
  	    if (sm_ctxt->get_global_state () == m_in_signal_handler)
  	      sm_ctxt->warn (node, stmt, NULL_TREE,
! 			     new signal_unsafe_call (*this, call,
! 						     callee_fndecl));
      }
  
    return false;
--- 353,360 ----
  	  if (signal_unsafe_p (callee_fndecl))
  	    if (sm_ctxt->get_global_state () == m_in_signal_handler)
  	      sm_ctxt->warn (node, stmt, NULL_TREE,
! 			     make_unique<signal_unsafe_call>
! 			       (*this, call, callee_fndecl));
      }
  
    return false;
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm-taint.cc gcc-13.1.0/gcc/analyzer/sm-taint.cc
*** gcc-12.2.0/gcc/analyzer/sm-taint.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm-taint.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* An experimental state machine, for tracking "taint": unsanitized uses
     of data potentially under an attacker's control.
  
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,7 ----
  /* An experimental state machine, for tracking "taint": unsanitized uses
     of data potentially under an attacker's control.
  
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,28 ****
--- 21,30 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
+ #include "make-unique.h"
  #include "tree.h"
  #include "function.h"
  #include "basic-block.h"
*************** along with GCC; see the file COPYING3.
*** 30,42 ****
  #include "options.h"
  #include "diagnostic-path.h"
  #include "diagnostic-metadata.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "gimple-iterator.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "ordered-hash-map.h"
  #include "cgraph.h"
  #include "cfg.h"
--- 32,40 ----
*************** along with GCC; see the file COPYING3.
*** 51,56 ****
--- 49,55 ----
  #include "analyzer/sm.h"
  #include "analyzer/program-state.h"
  #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/constraint-manager.h"
  
  #if ENABLE_ANALYZER
  
*************** class taint_state_machine : public state
*** 80,110 ****
  public:
    taint_state_machine (logger *logger);
  
!   bool inherited_state_p () const FINAL OVERRIDE { return true; }
  
    state_t alt_get_inherited_state (const sm_state_map &map,
  				   const svalue *sval,
  				   const extrinsic_state &ext_state)
!     const FINAL OVERRIDE;
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const FINAL OVERRIDE;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const FINAL OVERRIDE;
  
!   bool can_purge_p (state_t s) const FINAL OVERRIDE;
  
    bool get_taint (state_t s, tree type, enum bounds *out) const;
  
    state_t combine_states (state_t s0, state_t s1) const;
  
  private:
    void check_for_tainted_size_arg (sm_context *sm_ctxt,
  				   const supernode *node,
  				   const gcall *call,
--- 79,118 ----
  public:
    taint_state_machine (logger *logger);
  
!   bool inherited_state_p () const final override { return true; }
  
    state_t alt_get_inherited_state (const sm_state_map &map,
  				   const svalue *sval,
  				   const extrinsic_state &ext_state)
!     const final override;
  
    bool on_stmt (sm_context *sm_ctxt,
  		const supernode *node,
! 		const gimple *stmt) const final override;
  
    void on_condition (sm_context *sm_ctxt,
  		     const supernode *node,
  		     const gimple *stmt,
  		     const svalue *lhs,
  		     enum tree_code op,
! 		     const svalue *rhs) const final override;
!   void on_bounded_ranges (sm_context *sm_ctxt,
! 			  const supernode *node,
! 			  const gimple *stmt,
! 			  const svalue &sval,
! 			  const bounded_ranges &ranges) const final override;
  
!   bool can_purge_p (state_t s) const final override;
  
    bool get_taint (state_t s, tree type, enum bounds *out) const;
  
    state_t combine_states (state_t s0, state_t s1) const;
  
  private:
+   void check_control_flow_arg_for_taint (sm_context *sm_ctxt,
+ 					 const gimple *stmt,
+ 					 tree expr) const;
+ 
    void check_for_tainted_size_arg (sm_context *sm_ctxt,
  				   const supernode *node,
  				   const gcall *call,
*************** public:
*** 126,131 ****
--- 134,142 ----
  
    /* Stop state, for a value we don't want to track any more.  */
    state_t m_stop;
+ 
+   /* Global state, for when the last condition had tainted arguments.  */
+   state_t m_tainted_control_flow;
  };
  
  /* Class for diagnostics relating to taint_state_machine.  */
*************** public:
*** 138,152 ****
    : m_sm (sm), m_arg (arg), m_has_bounds (has_bounds)
    {}
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const OVERRIDE
    {
      const taint_diagnostic &other = (const taint_diagnostic &)base_other;
      return (same_tree_p (m_arg, other.m_arg)
  	    && m_has_bounds == other.m_has_bounds);
    }
  
!   label_text describe_state_change (const evdesc::state_change &change)
!     FINAL OVERRIDE
    {
      if (change.m_new_state == m_sm.m_tainted)
        {
--- 149,162 ----
    : m_sm (sm), m_arg (arg), m_has_bounds (has_bounds)
    {}
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const override
    {
      const taint_diagnostic &other = (const taint_diagnostic &)base_other;
      return (same_tree_p (m_arg, other.m_arg)
  	    && m_has_bounds == other.m_has_bounds);
    }
  
!   label_text describe_state_change (const evdesc::state_change &change) override
    {
      if (change.m_new_state == m_sm.m_tainted)
        {
*************** public:
*** 166,171 ****
--- 176,192 ----
  				     change.m_expr);
      return label_text ();
    }
+ 
+   diagnostic_event::meaning
+   get_meaning_for_state_change (const evdesc::state_change &change)
+     const final override
+   {
+     if (change.m_new_state == m_sm.m_tainted)
+       return diagnostic_event::meaning (diagnostic_event::VERB_acquire,
+ 					diagnostic_event::NOUN_taint);
+     return diagnostic_event::meaning ();
+   }
+ 
  protected:
    const taint_state_machine &m_sm;
    tree m_arg;
*************** public:
*** 183,247 ****
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "tainted_array_index"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_tainted_array_index;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* CWE-129: "Improper Validation of Array Index".  */
      m.add_cwe (129);
!     switch (m_has_bounds)
!       {
!       default:
! 	gcc_unreachable ();
!       case BOUNDS_NONE:
! 	return warning_meta (rich_loc, m, get_controlling_option (),
! 			     "use of attacker-controlled value %qE"
! 			     " in array lookup without bounds checking",
! 			     m_arg);
! 	break;
!       case BOUNDS_UPPER:
! 	return warning_meta (rich_loc, m, get_controlling_option (),
! 			     "use of attacker-controlled value %qE"
! 			     " in array lookup without checking for negative",
! 			     m_arg);
! 	break;
!       case BOUNDS_LOWER:
! 	return warning_meta (rich_loc, m, get_controlling_option (),
! 			     "use of attacker-controlled value %qE"
! 			     " in array lookup without upper-bounds checking",
! 			     m_arg);
! 	break;
!       }
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     switch (m_has_bounds)
!       {
!       default:
! 	gcc_unreachable ();
!       case BOUNDS_NONE:
! 	return ev.formatted_print
! 	  ("use of attacker-controlled value %qE in array lookup"
! 	   " without bounds checking",
! 	   m_arg);
!       case BOUNDS_UPPER:
! 	return ev.formatted_print
! 	  ("use of attacker-controlled value %qE"
! 	   " in array lookup without checking for negative",
! 	   m_arg);
!       case BOUNDS_LOWER:
! 	return ev.formatted_print
! 	  ("use of attacker-controlled value %qE"
! 	   " in array lookup without upper-bounds checking",
! 	   m_arg);
!       }
    }
  };
  
--- 204,311 ----
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const final override { return "tainted_array_index"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_tainted_array_index;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      diagnostic_metadata m;
      /* CWE-129: "Improper Validation of Array Index".  */
      m.add_cwe (129);
!     if (m_arg)
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value %qE"
! 			       " in array lookup without bounds checking",
! 			       m_arg);
! 	  break;
! 	case BOUNDS_UPPER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value %qE"
! 			       " in array lookup without checking for negative",
! 			       m_arg);
! 	  break;
! 	case BOUNDS_LOWER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value %qE"
! 			       " in array lookup without upper-bounds checking",
! 			       m_arg);
! 	  break;
! 	}
!     else
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value"
! 			       " in array lookup without bounds checking");
! 	  break;
! 	case BOUNDS_UPPER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value"
! 			       " in array lookup without checking for"
! 			       " negative");
! 	  break;
! 	case BOUNDS_LOWER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value"
! 			       " in array lookup without upper-bounds"
! 			       " checking");
! 	  break;
! 	}
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
!     if (m_arg)
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return ev.formatted_print
! 	    ("use of attacker-controlled value %qE in array lookup"
! 	     " without bounds checking",
! 	     m_arg);
! 	case BOUNDS_UPPER:
! 	  return ev.formatted_print
! 	    ("use of attacker-controlled value %qE"
! 	     " in array lookup without checking for negative",
! 	     m_arg);
! 	case BOUNDS_LOWER:
! 	  return ev.formatted_print
! 	    ("use of attacker-controlled value %qE"
! 	     " in array lookup without upper-bounds checking",
! 	     m_arg);
! 	}
!     else
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return ev.formatted_print
! 	    ("use of attacker-controlled value in array lookup"
! 	     " without bounds checking");
! 	case BOUNDS_UPPER:
! 	  return ev.formatted_print
! 	    ("use of attacker-controlled value"
! 	     " in array lookup without checking for negative");
! 	case BOUNDS_LOWER:
! 	  return ev.formatted_print
! 	    ("use of attacker-controlled value"
! 	     " in array lookup without upper-bounds checking");
! 	}
    }
  };
  
*************** public:
*** 256,269 ****
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "tainted_offset"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_tainted_offset;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* CWE-823: "Use of Out-of-range Pointer Offset".  */
--- 320,333 ----
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const final override { return "tainted_offset"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_tainted_offset;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      diagnostic_metadata m;
      /* CWE-823: "Use of Out-of-range Pointer Offset".  */
*************** public:
*** 315,321 ****
  	}
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_arg)
        switch (m_has_bounds)
--- 379,385 ----
  	}
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_arg)
        switch (m_has_bounds)
*************** public:
*** 366,426 ****
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const OVERRIDE { return "tainted_size"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_tainted_size;
    }
  
!   bool emit (rich_location *rich_loc) OVERRIDE
    {
      diagnostic_metadata m;
      m.add_cwe (129);
!     switch (m_has_bounds)
!       {
!       default:
! 	gcc_unreachable ();
!       case BOUNDS_NONE:
! 	return warning_meta (rich_loc, m, get_controlling_option (),
! 			     "use of attacker-controlled value %qE as size"
! 			     " without bounds checking",
! 			     m_arg);
! 	break;
!       case BOUNDS_UPPER:
! 	return warning_meta (rich_loc, m, get_controlling_option (),
! 			     "use of attacker-controlled value %qE as size"
! 			     " without lower-bounds checking",
! 			     m_arg);
! 	break;
!       case BOUNDS_LOWER:
! 	return warning_meta (rich_loc, m, get_controlling_option (),
! 			     "use of attacker-controlled value %qE as size"
! 			     " without upper-bounds checking",
! 			     m_arg);
! 	break;
!       }
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
!     switch (m_has_bounds)
!       {
!       default:
! 	gcc_unreachable ();
!       case BOUNDS_NONE:
! 	return ev.formatted_print ("use of attacker-controlled value %qE"
! 				   " as size without bounds checking",
! 				   m_arg);
!       case BOUNDS_UPPER:
! 	return ev.formatted_print ("use of attacker-controlled value %qE"
! 				   " as size without lower-bounds checking",
! 				   m_arg);
!       case BOUNDS_LOWER:
! 	return ev.formatted_print ("use of attacker-controlled value %qE"
! 				   " as size without upper-bounds checking",
! 				   m_arg);
!       }
    }
  };
  
--- 430,529 ----
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const override { return "tainted_size"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_tainted_size;
    }
  
!   bool emit (rich_location *rich_loc) override
    {
+     /* "CWE-129: Improper Validation of Array Index".  */
      diagnostic_metadata m;
      m.add_cwe (129);
!     if (m_arg)
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value %qE as size"
! 			       " without bounds checking",
! 			       m_arg);
! 	  break;
! 	case BOUNDS_UPPER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value %qE as size"
! 			       " without lower-bounds checking",
! 			       m_arg);
! 	  break;
! 	case BOUNDS_LOWER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value %qE as size"
! 			       " without upper-bounds checking",
! 			       m_arg);
! 	  break;
! 	}
!     else
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value as size"
! 			       " without bounds checking");
! 	  break;
! 	case BOUNDS_UPPER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value as size"
! 			       " without lower-bounds checking");
! 	  break;
! 	case BOUNDS_LOWER:
! 	  return warning_meta (rich_loc, m, get_controlling_option (),
! 			       "use of attacker-controlled value as size"
! 			       " without upper-bounds checking");
! 	  break;
! 	}
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
!     if (m_arg)
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return ev.formatted_print ("use of attacker-controlled value %qE"
! 				     " as size without bounds checking",
! 				     m_arg);
! 	case BOUNDS_UPPER:
! 	  return ev.formatted_print ("use of attacker-controlled value %qE"
! 				     " as size without lower-bounds checking",
! 				     m_arg);
! 	case BOUNDS_LOWER:
! 	  return ev.formatted_print ("use of attacker-controlled value %qE"
! 				     " as size without upper-bounds checking",
! 				     m_arg);
! 	}
!     else
!       switch (m_has_bounds)
! 	{
! 	default:
! 	  gcc_unreachable ();
! 	case BOUNDS_NONE:
! 	  return ev.formatted_print ("use of attacker-controlled value"
! 				     " as size without bounds checking");
! 	case BOUNDS_UPPER:
! 	  return ev.formatted_print ("use of attacker-controlled value"
! 				     " as size without lower-bounds checking");
! 	case BOUNDS_LOWER:
! 	  return ev.formatted_print ("use of attacker-controlled value"
! 				     " as size without upper-bounds checking");
! 	}
    }
  };
  
*************** public:
*** 439,450 ****
    {
    }
  
!   const char *get_kind () const OVERRIDE
    {
      return "tainted_access_attrib_size";
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      bool warned = tainted_size::emit (rich_loc);
      if (warned)
--- 542,553 ----
    {
    }
  
!   const char *get_kind () const override
    {
      return "tainted_access_attrib_size";
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      bool warned = tainted_size::emit (rich_loc);
      if (warned)
*************** public:
*** 473,486 ****
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const FINAL OVERRIDE { return "tainted_divisor"; }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_tainted_divisor;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* CWE-369: "Divide By Zero".  */
--- 576,589 ----
    : taint_diagnostic (sm, arg, has_bounds)
    {}
  
!   const char *get_kind () const final override { return "tainted_divisor"; }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_tainted_divisor;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      diagnostic_metadata m;
      /* CWE-369: "Divide By Zero".  */
*************** public:
*** 496,502 ****
  			   " without checking for zero");
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_arg)
        return ev.formatted_print
--- 599,605 ----
  			   " without checking for zero");
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_arg)
        return ev.formatted_print
*************** public:
*** 523,534 ****
    {
    }
  
!   const char *get_kind () const FINAL OVERRIDE
    {
      return "tainted_allocation_size";
    }
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const OVERRIDE
    {
      if (!taint_diagnostic::subclass_equal_p (base_other))
        return false;
--- 626,637 ----
    {
    }
  
!   const char *get_kind () const final override
    {
      return "tainted_allocation_size";
    }
  
!   bool subclass_equal_p (const pending_diagnostic &base_other) const override
    {
      if (!taint_diagnostic::subclass_equal_p (base_other))
        return false;
*************** public:
*** 537,548 ****
      return m_mem_space == other.m_mem_space;
    }
  
!   int get_controlling_option () const FINAL OVERRIDE
    {
      return OPT_Wanalyzer_tainted_allocation_size;
    }
  
!   bool emit (rich_location *rich_loc) FINAL OVERRIDE
    {
      diagnostic_metadata m;
      /* "CWE-789: Memory Allocation with Excessive Size Value".  */
--- 640,651 ----
      return m_mem_space == other.m_mem_space;
    }
  
!   int get_controlling_option () const final override
    {
      return OPT_Wanalyzer_tainted_allocation_size;
    }
  
!   bool emit (rich_location *rich_loc) final override
    {
      diagnostic_metadata m;
      /* "CWE-789: Memory Allocation with Excessive Size Value".  */
*************** public:
*** 617,623 ****
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) FINAL OVERRIDE
    {
      if (m_arg)
        switch (m_has_bounds)
--- 720,726 ----
      return warned;
    }
  
!   label_text describe_final_event (const evdesc::final_event &ev) final override
    {
      if (m_arg)
        switch (m_has_bounds)
*************** private:
*** 664,669 ****
--- 767,866 ----
    enum memory_space m_mem_space;
  };
  
+ /* Concrete taint_diagnostic subclass for reporting attacker-controlled
+    value being used as part of the condition of an assertion.  */
+ 
+ class tainted_assertion : public taint_diagnostic
+ {
+ public:
+   tainted_assertion (const taint_state_machine &sm, tree arg,
+ 		     tree assert_failure_fndecl)
+   : taint_diagnostic (sm, arg, BOUNDS_NONE),
+     m_assert_failure_fndecl (assert_failure_fndecl)
+   {
+     gcc_assert (m_assert_failure_fndecl);
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "tainted_assertion";
+   }
+ 
+   bool subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     if (!taint_diagnostic::subclass_equal_p (base_other))
+       return false;
+     const tainted_assertion &other
+       = (const tainted_assertion &)base_other;
+     return m_assert_failure_fndecl == other.m_assert_failure_fndecl;
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_tainted_assertion;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     diagnostic_metadata m;
+     /* "CWE-617: Reachable Assertion".  */
+     m.add_cwe (617);
+ 
+     return warning_meta (rich_loc, m, get_controlling_option (),
+ 			 "use of attacked-controlled value in"
+ 			 " condition for assertion");
+   }
+ 
+   location_t fixup_location (location_t loc,
+ 			     bool primary) const final override
+   {
+     if (primary)
+       /* For the primary location we want to avoid being in e.g. the
+ 	 <assert.h> system header, since this would suppress the
+ 	 diagnostic.  */
+       return expansion_point_location_if_in_system_header (loc);
+     else if (in_system_header_at (loc))
+       /* For events, we want to show the implemenation of the assert
+ 	 macro when we're describing them.  */
+       return linemap_resolve_location (line_table, loc,
+ 				       LRK_SPELLING_LOCATION,
+ 				       NULL);
+     else
+       return pending_diagnostic::fixup_location (loc, primary);
+   }
+ 
+   label_text describe_state_change (const evdesc::state_change &change) override
+   {
+     if (change.m_new_state == m_sm.m_tainted_control_flow)
+       return change.formatted_print
+ 	("use of attacker-controlled value for control flow");
+     return taint_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (mention_noreturn_attribute_p ())
+       return ev.formatted_print
+ 	("treating %qE as an assertion failure handler"
+ 	 " due to %<__attribute__((__noreturn__))%>",
+ 	 m_assert_failure_fndecl);
+     else
+       return ev.formatted_print
+ 	("treating %qE as an assertion failure handler",
+ 	 m_assert_failure_fndecl);
+   }
+ 
+ private:
+   bool mention_noreturn_attribute_p () const
+   {
+     if (fndecl_built_in_p (m_assert_failure_fndecl, BUILT_IN_UNREACHABLE))
+       return false;
+     return true;
+   }
+ 
+   tree m_assert_failure_fndecl;
+ };
+ 
  /* taint_state_machine's ctor.  */
  
  taint_state_machine::taint_state_machine (logger *logger)
*************** taint_state_machine::taint_state_machine
*** 673,678 ****
--- 870,876 ----
    m_has_lb = add_state ("has_lb");
    m_has_ub = add_state ("has_ub");
    m_stop = add_state ("stop");
+   m_tainted_control_flow = add_state ("tainted-control-flow");
  }
  
  state_machine::state_t
*************** taint_state_machine::alt_get_inherited_s
*** 713,718 ****
--- 911,925 ----
  	  {
  	  default:
  	    break;
+ 
+ 	  case EQ_EXPR:
+ 	  case GE_EXPR:
+ 	  case LE_EXPR:
+ 	  case NE_EXPR:
+ 	  case GT_EXPR:
+ 	  case LT_EXPR:
+ 	  case UNORDERED_EXPR:
+ 	  case ORDERED_EXPR:
  	  case PLUS_EXPR:
  	  case MINUS_EXPR:
  	  case MULT_EXPR:
*************** taint_state_machine::alt_get_inherited_s
*** 726,742 ****
  	    }
  	    break;
  
- 	  case EQ_EXPR:
- 	  case GE_EXPR:
- 	  case LE_EXPR:
- 	  case NE_EXPR:
- 	  case GT_EXPR:
- 	  case LT_EXPR:
- 	  case UNORDERED_EXPR:
- 	  case ORDERED_EXPR:
- 	    /* Comparisons are just booleans.  */
- 	    return m_start;
- 
  	  case BIT_AND_EXPR:
  	  case RSHIFT_EXPR:
  	    return NULL;
--- 933,938 ----
*************** taint_state_machine::alt_get_inherited_s
*** 747,752 ****
--- 943,961 ----
    return NULL;
  }
  
+ /* Return true iff FNDECL should be considered to be an assertion failure
+    handler by -Wanalyzer-tainted-assertion. */
+ 
+ static bool
+ is_assertion_failure_handler_p (tree fndecl)
+ {
+   // i.e. "noreturn"
+   if (TREE_THIS_VOLATILE (fndecl))
+     return true;
+ 
+   return false;
+ }
+ 
  /* Implementation of state_machine::on_stmt vfunc for taint_state_machine.  */
  
  bool
*************** taint_state_machine::on_stmt (sm_context
*** 774,779 ****
--- 983,996 ----
  	/* External function with "access" attribute. */
  	if (sm_ctxt->unknown_side_effects_p ())
  	  check_for_tainted_size_arg (sm_ctxt, node, call, callee_fndecl);
+ 
+ 	if (is_assertion_failure_handler_p (callee_fndecl)
+ 	    && sm_ctxt->get_global_state () == m_tainted_control_flow)
+ 	  {
+ 	    sm_ctxt->warn (node, call, NULL_TREE,
+ 			   make_unique<tainted_assertion> (*this, NULL_TREE,
+ 							   callee_fndecl));
+ 	  }
        }
    // TODO: ...etc; many other sources of untrusted data
  
*************** taint_state_machine::on_stmt (sm_context
*** 800,808 ****
--- 1017,1062 ----
  	}
      }
  
+   if (const gcond *cond = dyn_cast <const gcond *> (stmt))
+     {
+       /* Reset the state of "tainted-control-flow" before each
+ 	 control flow statement, so that only the last one before
+ 	 an assertion-failure-handler counts.  */
+       sm_ctxt->set_global_state (m_start);
+       check_control_flow_arg_for_taint (sm_ctxt, cond, gimple_cond_lhs (cond));
+       check_control_flow_arg_for_taint (sm_ctxt, cond, gimple_cond_rhs (cond));
+     }
+ 
+   if (const gswitch *switch_ = dyn_cast <const gswitch *> (stmt))
+     {
+       /* Reset the state of "tainted-control-flow" before each
+ 	 control flow statement, so that only the last one before
+ 	 an assertion-failure-handler counts.  */
+       sm_ctxt->set_global_state (m_start);
+       check_control_flow_arg_for_taint (sm_ctxt, switch_,
+ 					gimple_switch_index (switch_));
+     }
+ 
    return false;
  }
  
+ /* If EXPR is tainted, mark this execution path with the
+    "tainted-control-flow" global state, in case we're about
+    to call an assertion-failure-handler.  */
+ 
+ void
+ taint_state_machine::check_control_flow_arg_for_taint (sm_context *sm_ctxt,
+ 						       const gimple *stmt,
+ 						       tree expr) const
+ {
+   const region_model *old_model = sm_ctxt->get_old_region_model ();
+   const svalue *sval = old_model->get_rvalue (expr, NULL);
+   state_t state = sm_ctxt->get_state (stmt, sval);
+   enum bounds b;
+   if (get_taint (state, TREE_TYPE (expr), &b))
+     sm_ctxt->set_global_state (m_tainted_control_flow);
+ }
+ 
  /* Implementation of state_machine::on_condition vfunc for taint_state_machine.
     Potentially transition state 'tainted' to 'has_ub' or 'has_lb',
     and states 'has_ub' and 'has_lb' to 'stop'.  */
*************** taint_state_machine::on_condition (sm_co
*** 813,825 ****
  				   const gimple *stmt,
  				   const svalue *lhs,
  				   enum tree_code op,
! 				   const svalue *rhs ATTRIBUTE_UNUSED) const
  {
    if (stmt == NULL)
      return;
  
-   // TODO: this doesn't use the RHS; should we make it symmetric?
- 
    // TODO
    switch (op)
      {
--- 1067,1077 ----
  				   const gimple *stmt,
  				   const svalue *lhs,
  				   enum tree_code op,
! 				   const svalue *rhs) const
  {
    if (stmt == NULL)
      return;
  
    // TODO
    switch (op)
      {
*************** taint_state_machine::on_condition (sm_co
*** 828,846 ****
--- 1080,1154 ----
      case GE_EXPR:
      case GT_EXPR:
        {
+ 	/* (LHS >= RHS) or (LHS > RHS)
+ 	   LHS gains a lower bound
+ 	   RHS gains an upper bound.  */
  	sm_ctxt->on_transition (node, stmt, lhs, m_tainted,
  				m_has_lb);
  	sm_ctxt->on_transition (node, stmt, lhs, m_has_ub,
  				m_stop);
+ 	sm_ctxt->on_transition (node, stmt, rhs, m_tainted,
+ 				m_has_ub);
+ 	sm_ctxt->on_transition (node, stmt, rhs, m_has_lb,
+ 				m_stop);
        }
        break;
      case LE_EXPR:
      case LT_EXPR:
        {
+ 	/* Detect where build_range_check has optimized
+ 	   (c>=low) && (c<=high)
+ 	   into
+ 	   (c-low>=0) && (c-low<=high-low)
+ 	   and thus into:
+ 	   (unsigned)(c - low) <= (unsigned)(high-low).  */
+ 	if (const binop_svalue *binop_sval
+ 	      = lhs->dyn_cast_binop_svalue ())
+ 	  {
+ 	    const svalue *inner_lhs = binop_sval->get_arg0 ();
+ 	    enum tree_code inner_op = binop_sval->get_op ();
+ 	    const svalue *inner_rhs = binop_sval->get_arg1 ();
+ 	    if (const svalue *before_cast = inner_lhs->maybe_undo_cast ())
+ 	      inner_lhs = before_cast;
+ 	    if (tree outer_rhs_cst = rhs->maybe_get_constant ())
+ 	      if (tree inner_rhs_cst = inner_rhs->maybe_get_constant ())
+ 		if (inner_op == PLUS_EXPR
+ 		    && TREE_CODE (inner_rhs_cst) == INTEGER_CST
+ 		    && TREE_CODE (outer_rhs_cst) == INTEGER_CST
+ 		    && TYPE_UNSIGNED (TREE_TYPE (inner_rhs_cst))
+ 		    && TYPE_UNSIGNED (TREE_TYPE (outer_rhs_cst)))
+ 		  {
+ 		    /* We have
+ 		       (unsigned)(INNER_LHS + CST_A) </<= UNSIGNED_CST_B
+ 		       and thus an optimized test of INNER_LHS (before any
+ 		       cast to unsigned) against a range.
+ 		       Transition any of the tainted states to the stop state.
+ 		       We have to special-case this here rather than in
+ 		       region_model::on_condition since we can't apply
+ 		       both conditions simultaneously (we'd have a transition
+ 		       from the old state to has_lb, then a transition from
+ 		       the old state *again* to has_ub).  */
+ 		    state_t old_state
+ 		      = sm_ctxt->get_state (stmt, inner_lhs);
+ 		    if (old_state == m_tainted
+ 			|| old_state == m_has_lb
+ 			|| old_state == m_has_ub)
+ 		      sm_ctxt->set_next_state (stmt, inner_lhs, m_stop);
+ 		    return;
+ 		  }
+ 	  }
+ 
+ 	/* (LHS <= RHS) or (LHS < RHS)
+ 	   LHS gains an upper bound
+ 	   RHS gains a lower bound.  */
  	sm_ctxt->on_transition (node, stmt, lhs, m_tainted,
  				m_has_ub);
  	sm_ctxt->on_transition (node, stmt, lhs, m_has_lb,
  				m_stop);
+ 	sm_ctxt->on_transition (node, stmt, rhs, m_tainted,
+ 				m_has_lb);
+ 	sm_ctxt->on_transition (node, stmt, rhs, m_has_ub,
+ 				m_stop);
        }
        break;
      default:
*************** taint_state_machine::on_condition (sm_co
*** 848,853 ****
--- 1156,1213 ----
      }
  }
  
+ /* Implementation of state_machine::on_bounded_ranges vfunc for
+    taint_state_machine, for handling switch statement cases.
+    Potentially transition state 'tainted' to 'has_ub' or 'has_lb',
+    and states 'has_ub' and 'has_lb' to 'stop'.  */
+ 
+ void
+ taint_state_machine::on_bounded_ranges (sm_context *sm_ctxt,
+ 					const supernode *,
+ 					const gimple *stmt,
+ 					const svalue &sval,
+ 					const bounded_ranges &ranges) const
+ {
+   gcc_assert (!ranges.empty_p ());
+   gcc_assert (ranges.get_count () > 0);
+ 
+   /* We have one or more ranges; this could be a "default:", or one or
+      more single or range cases.
+ 
+      Look at the overall endpoints to see if the ranges impose any lower
+      bounds or upper bounds beyond those of the underlying numeric type.  */
+ 
+   tree lowest_bound = ranges.get_range (0).m_lower;
+   tree highest_bound = ranges.get_range (ranges.get_count () - 1).m_upper;
+   gcc_assert (lowest_bound);
+   gcc_assert (highest_bound);
+ 
+   bool ranges_have_lb
+     = (lowest_bound != TYPE_MIN_VALUE (TREE_TYPE (lowest_bound)));
+   bool ranges_have_ub
+     = (highest_bound != TYPE_MAX_VALUE (TREE_TYPE (highest_bound)));
+ 
+   if (!ranges_have_lb && !ranges_have_ub)
+     return;
+ 
+   /* We have new bounds from the ranges; combine them with any
+      existing bounds on SVAL.  */
+   state_t old_state = sm_ctxt->get_state (stmt, &sval);
+   if (old_state == m_tainted)
+     {
+       if (ranges_have_lb && ranges_have_ub)
+ 	sm_ctxt->set_next_state (stmt, &sval, m_stop);
+       else if (ranges_have_lb)
+ 	sm_ctxt->set_next_state (stmt, &sval, m_has_lb);
+       else if (ranges_have_ub)
+ 	sm_ctxt->set_next_state (stmt, &sval, m_has_ub);
+     }
+   else if (old_state == m_has_ub && ranges_have_lb)
+     sm_ctxt->set_next_state (stmt, &sval, m_stop);
+   else if (old_state == m_has_lb && ranges_have_ub)
+     sm_ctxt->set_next_state (stmt, &sval, m_stop);
+ }
+ 
  bool
  taint_state_machine::can_purge_p (state_t s ATTRIBUTE_UNUSED) const
  {
*************** taint_state_machine::check_for_tainted_s
*** 962,971 ****
  	    TREE_STRING_POINTER (access->to_external_string ());
  	  tree diag_size = sm_ctxt->get_diagnostic_tree (size_arg);
  	  sm_ctxt->warn (node, call, size_arg,
! 			 new tainted_access_attrib_size (*this, diag_size, b,
! 							 callee_fndecl,
! 							 access->sizarg,
! 							 access_str));
  	}
      }
  }
--- 1322,1332 ----
  	    TREE_STRING_POINTER (access->to_external_string ());
  	  tree diag_size = sm_ctxt->get_diagnostic_tree (size_arg);
  	  sm_ctxt->warn (node, call, size_arg,
! 			 make_unique<tainted_access_attrib_size>
! 			   (*this, diag_size, b,
! 			    callee_fndecl,
! 			    access->sizarg,
! 			    access_str));
  	}
      }
  }
*************** taint_state_machine::check_for_tainted_d
*** 1000,1006 ****
  
        tree diag_divisor = sm_ctxt->get_diagnostic_tree (divisor_expr);
        sm_ctxt->warn (node, assign, divisor_expr,
! 		     new tainted_divisor (*this, diag_divisor, b));
        sm_ctxt->set_next_state (assign, divisor_sval, m_stop);
      }
  }
--- 1361,1367 ----
  
        tree diag_divisor = sm_ctxt->get_diagnostic_tree (divisor_expr);
        sm_ctxt->warn (node, assign, divisor_expr,
! 		     make_unique <tainted_divisor> (*this, diag_divisor, b));
        sm_ctxt->set_next_state (assign, divisor_sval, m_stop);
      }
  }
*************** region_model::check_region_for_taint (co
*** 1063,1069 ****
  	    if (taint_sm.get_taint (state, index->get_type (), &b))
  	    {
  	      tree arg = get_representative_tree (index);
! 	      ctxt->warn (new tainted_array_index (taint_sm, arg, b));
  	    }
  	  }
  	  break;
--- 1424,1430 ----
  	    if (taint_sm.get_taint (state, index->get_type (), &b))
  	    {
  	      tree arg = get_representative_tree (index);
! 	      ctxt->warn (make_unique<tainted_array_index> (taint_sm, arg, b));
  	    }
  	  }
  	  break;
*************** region_model::check_region_for_taint (co
*** 1085,1091 ****
  	    if (taint_sm.get_taint (state, effective_type, &b))
  	      {
  		tree arg = get_representative_tree (offset);
! 		ctxt->warn (new tainted_offset (taint_sm, arg, b));
  	      }
  	  }
  	  break;
--- 1446,1452 ----
  	    if (taint_sm.get_taint (state, effective_type, &b))
  	      {
  		tree arg = get_representative_tree (offset);
! 		ctxt->warn (make_unique<tainted_offset> (taint_sm, arg, b));
  	      }
  	  }
  	  break;
*************** region_model::check_region_for_taint (co
*** 1110,1116 ****
  	    if (taint_sm.get_taint (state, size_sval->get_type (), &b))
  	      {
  		tree arg = get_representative_tree (size_sval);
! 		ctxt->warn (new tainted_size (taint_sm, arg, b));
  	      }
  	  }
  	  break;
--- 1471,1477 ----
  	    if (taint_sm.get_taint (state, size_sval->get_type (), &b))
  	      {
  		tree arg = get_representative_tree (size_sval);
! 		ctxt->warn (make_unique<tainted_size> (taint_sm, arg, b));
  	      }
  	  }
  	  break;
*************** region_model::check_dynamic_size_for_tai
*** 1156,1165 ****
    if (taint_sm.get_taint (state, size_in_bytes->get_type (), &b))
      {
        tree arg = get_representative_tree (size_in_bytes);
!       ctxt->warn (new tainted_allocation_size (taint_sm, arg, b, mem_space));
      }
  }
  
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
--- 1517,1579 ----
    if (taint_sm.get_taint (state, size_in_bytes->get_type (), &b))
      {
        tree arg = get_representative_tree (size_in_bytes);
!       ctxt->warn (make_unique<tainted_allocation_size>
! 		    (taint_sm, arg, b, mem_space));
      }
  }
  
+ /* Mark SVAL as TAINTED.  CTXT must be non-NULL.  */
+ 
+ void
+ region_model::mark_as_tainted (const svalue *sval,
+ 			       region_model_context *ctxt)
+ {
+   gcc_assert (sval);
+   gcc_assert (ctxt);
+ 
+   sm_state_map *smap;
+   const state_machine *sm;
+   unsigned sm_idx;
+   if (!ctxt->get_taint_map (&smap, &sm, &sm_idx))
+     return;
+ 
+   gcc_assert (smap);
+   gcc_assert (sm);
+ 
+   const taint_state_machine &taint_sm = (const taint_state_machine &)*sm;
+ 
+   const extrinsic_state *ext_state = ctxt->get_ext_state ();
+   if (!ext_state)
+     return;
+ 
+   smap->set_state (this, sval, taint_sm.m_tainted, NULL, *ext_state);
+ }
+ 
+ /* Return true if SVAL could possibly be attacker-controlled.  */
+ 
+ bool
+ region_model_context::possibly_tainted_p (const svalue *sval)
+ {
+   sm_state_map *smap;
+   const state_machine *sm;
+   unsigned sm_idx;
+   if (!get_taint_map (&smap, &sm, &sm_idx))
+       return false;
+ 
+   const taint_state_machine &taint_sm = (const taint_state_machine &)*sm;
+ 
+   const extrinsic_state *ext_state = get_ext_state ();
+   if (!ext_state)
+     return false;
+ 
+   const state_machine::state_t state = smap->get_state (sval, *ext_state);
+   gcc_assert (state);
+ 
+   return (state == taint_sm.m_tainted
+ 	  || state == taint_sm.m_has_lb
+ 	  || state == taint_sm.m_has_ub);
+ }
+ 
  } // namespace ana
  
  #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm.cc gcc-13.1.0/gcc/analyzer/sm.cc
*** gcc-12.2.0/gcc/analyzer/sm.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 31,46 ****
  #include "pretty-print.h"
  #include "diagnostic.h"
  #include "tree-diagnostic.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
- #include "tristate.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/svalue.h"
  #include "analyzer/program-state.h"
  
  #if ENABLE_ANALYZER
  
--- 32,46 ----
  #include "pretty-print.h"
  #include "diagnostic.h"
  #include "tree-diagnostic.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/svalue.h"
  #include "analyzer/program-state.h"
+ #include "analyzer/pending-diagnostic.h"
  
  #if ENABLE_ANALYZER
  
*************** state_machine::get_state_by_name (const
*** 123,128 ****
--- 123,136 ----
    gcc_unreachable ();
  }
  
+ /* Base implementation of state_machine::on_leak.  */
+ 
+ std::unique_ptr<pending_diagnostic>
+ state_machine::on_leak (tree var ATTRIBUTE_UNUSED) const
+ {
+   return NULL;
+ }
+ 
  /* Dump a multiline representation of this state machine to PP.  */
  
  void
*************** make_checkers (auto_delete_vec <state_ma
*** 179,190 ****
--- 187,200 ----
  {
    out.safe_push (make_malloc_state_machine (logger));
    out.safe_push (make_fileptr_state_machine (logger));
+   out.safe_push (make_fd_state_machine (logger));
    /* The "taint" checker must be explicitly enabled (as it currently
       leads to state explosions that stop the other checkers working).  */
    if (flag_analyzer_checker)
      out.safe_push (make_taint_state_machine (logger));
    out.safe_push (make_sensitive_state_machine (logger));
    out.safe_push (make_signal_state_machine (logger));
+   out.safe_push (make_va_list_state_machine (logger));
  
    /* We only attempt to run the pattern tests if it might have been manually
       enabled (for DejaGnu purposes).  */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/sm.h gcc-13.1.0/gcc/analyzer/sm.h
*** gcc-12.2.0/gcc/analyzer/sm.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/sm.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Modeling API uses and misuses via state machines.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 108,123 ****
    {
    }
  
    /* Return true if it safe to discard the given state (to help
       when simplifying state objects).
       States that need leak detection should return false.  */
    virtual bool can_purge_p (state_t s) const = 0;
  
    /* Called when VAR leaks (and !can_purge_p).  */
!   virtual pending_diagnostic *on_leak (tree var ATTRIBUTE_UNUSED) const
!   {
!     return NULL;
!   }
  
    /* Return true if S should be reset to "start" for values passed (or reachable
       from) calls to unknown functions.  IS_MUTABLE is true for pointers as
--- 108,136 ----
    {
    }
  
+   virtual void
+   on_bounded_ranges (sm_context *sm_ctxt ATTRIBUTE_UNUSED,
+ 		     const supernode *node ATTRIBUTE_UNUSED,
+ 		     const gimple *stmt ATTRIBUTE_UNUSED,
+ 		     const svalue &sval ATTRIBUTE_UNUSED,
+ 		     const bounded_ranges &ranges ATTRIBUTE_UNUSED) const
+   {
+   }
+ 
+   virtual void
+   on_pop_frame (sm_state_map *smap ATTRIBUTE_UNUSED,
+ 		const frame_region *frame_reg ATTRIBUTE_UNUSED) const
+   {
+   }
+ 
    /* Return true if it safe to discard the given state (to help
       when simplifying state objects).
       States that need leak detection should return false.  */
    virtual bool can_purge_p (state_t s) const = 0;
  
    /* Called when VAR leaks (and !can_purge_p).  */
!   virtual std::unique_ptr<pending_diagnostic>
!   on_leak (tree var ATTRIBUTE_UNUSED) const;
  
    /* Return true if S should be reset to "start" for values passed (or reachable
       from) calls to unknown functions.  IS_MUTABLE is true for pointers as
*************** public:
*** 132,137 ****
--- 145,175 ----
      return is_mutable;
    }
  
+   /* Attempt to get a state for the merger of STATE_A and STATE_B,
+      or return NULL if merging shouldn't occur, so that differences
+      between sm-state will lead to separate exploded nodes.
+ 
+      Most state machines will only merge equal states, but can
+      override maybe_get_merged_states_nonequal to support mergers
+      of certain non-equal states.  */
+   state_t maybe_get_merged_state (state_t state_a,
+ 				  state_t state_b) const
+   {
+     if (state_a == state_b)
+       return state_a;
+     return maybe_get_merged_states_nonequal (state_a, state_b);
+   }
+ 
+   /* Base implementation of hook for maybe_get_merged_state on non-equal
+      states.  */
+   virtual state_t
+   maybe_get_merged_states_nonequal (state_t state_a ATTRIBUTE_UNUSED,
+ 				    state_t state_b ATTRIBUTE_UNUSED) const
+   {
+     /* By default, non-equal sm states should inhibit merger of enodes.  */
+     return NULL;
+   }
+ 
    void validate (state_t s) const;
  
    void dump_to_pp (pretty_printer *pp) const;
*************** public:
*** 241,247 ****
    /* Called by state_machine in response to pattern matches:
       issue a diagnostic D using NODE and STMT for location information.  */
    virtual void warn (const supernode *node, const gimple *stmt,
! 		     tree var, pending_diagnostic *d) = 0;
  
    /* For use when generating trees when creating pending_diagnostics, so that
       rather than e.g.
--- 279,289 ----
    /* Called by state_machine in response to pattern matches:
       issue a diagnostic D using NODE and STMT for location information.  */
    virtual void warn (const supernode *node, const gimple *stmt,
! 		     tree var,
! 		     std::unique_ptr<pending_diagnostic> d) = 0;
!   virtual void warn (const supernode *node, const gimple *stmt,
! 		     const svalue *var,
! 		     std::unique_ptr<pending_diagnostic> d) = 0;
  
    /* For use when generating trees when creating pending_diagnostics, so that
       rather than e.g.
*************** public:
*** 275,282 ****
    virtual bool unknown_side_effects_p () const { return false; }
  
    virtual const program_state *get_old_program_state () const = 0;
! 
!   const svalue *get_old_svalue (tree expr) const;
  
    const region_model *get_old_region_model () const;
  
--- 317,323 ----
    virtual bool unknown_side_effects_p () const { return false; }
  
    virtual const program_state *get_old_program_state () const = 0;
!   virtual const program_state *get_new_program_state () const = 0;
  
    const region_model *get_old_region_model () const;
  
*************** extern state_machine *make_taint_state_m
*** 301,306 ****
--- 342,349 ----
  extern state_machine *make_sensitive_state_machine (logger *logger);
  extern state_machine *make_signal_state_machine (logger *logger);
  extern state_machine *make_pattern_test_state_machine (logger *logger);
+ extern state_machine *make_va_list_state_machine (logger *logger);
+ extern state_machine *make_fd_state_machine (logger *logger);
  
  } // namespace ana
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/state-purge.cc gcc-13.1.0/gcc/analyzer/state-purge.cc
*** gcc-12.2.0/gcc/analyzer/state-purge.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/state-purge.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 36,59 ****
  #include "ssa-iterators.h"
  #include "diagnostic-core.h"
  #include "gimple-pretty-print.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/call-string.h"
- #include "digraph.h"
- #include "ordered-hash-map.h"
- #include "cfg.h"
- #include "gimple-iterator.h"
- #include "cgraph.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-point.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/state-purge.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "gimple-walk.h"
  
  #if ENABLE_ANALYZER
  
--- 37,52 ----
  #include "ssa-iterators.h"
  #include "diagnostic-core.h"
  #include "gimple-pretty-print.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/call-string.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-point.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/state-purge.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "gimple-walk.h"
+ #include "cgraph.h"
  
  #if ENABLE_ANALYZER
  
*************** get_candidate_for_purging (tree node)
*** 70,75 ****
--- 63,70 ----
        default:
  	return NULL_TREE;
  
+       case ADDR_EXPR:
+       case MEM_REF:
        case COMPONENT_REF:
  	iter = TREE_OPERAND (iter, 0);
  	continue;
*************** same_binding_p (const region *reg_a, con
*** 820,826 ****
--- 815,825 ----
  {
    if (reg_a->get_base_region () != reg_b->get_base_region ())
      return false;
+   if (reg_a->empty_p ())
+     return false;
    const binding_key *bind_key_a = binding_key::make (store_mgr, reg_a);
+   if (reg_b->empty_p ())
+     return false;
    const binding_key *bind_key_b = binding_key::make (store_mgr, reg_b);
    return bind_key_a == bind_key_b;
  }
*************** process_point_backwards (const function_
*** 925,931 ****
        {
  	/* This is somewhat equivalent to how the SSA case handles
  	   def-stmts.  */
! 	if (fully_overwrites_p (point.get_stmt (), m_decl, model))
  	  {
  	    if (logger)
  	      logger->log ("stmt fully overwrites %qE; terminating", m_decl);
--- 924,943 ----
        {
  	/* This is somewhat equivalent to how the SSA case handles
  	   def-stmts.  */
! 	if (fully_overwrites_p (point.get_stmt (), m_decl, model)
! 	    /* ...but we mustn't be at a point that also consumes the
! 	       current value of the decl when it's generating the new
! 	       value, for cases such as
! 		  struct st s;
! 		  s = foo ();
! 		  s = bar (s);
! 	       where we want to make sure that we don't stop at the:
! 		  s = bar (s);
! 	       since otherwise we would erroneously purge the state of "s"
! 	       after:
! 		  s = foo ();
! 	    */
! 	    && !m_points_needing_decl.contains (point))
  	  {
  	    if (logger)
  	      logger->log ("stmt fully overwrites %qE; terminating", m_decl);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/state-purge.h gcc-13.1.0/gcc/analyzer/state-purge.h
*** gcc-12.2.0/gcc/analyzer/state-purge.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/state-purge.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for purging state at function_points.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 236,246 ****
    state_purge_annotator (const state_purge_map *map) : m_map (map) {}
  
    bool add_node_annotations (graphviz_out *gv, const supernode &n, bool)
!     const FINAL OVERRIDE;
  
    void add_stmt_annotations (graphviz_out *gv, const gimple *stmt,
  			     bool within_row)
!     const FINAL OVERRIDE;
  
  private:
    void print_needed (graphviz_out *gv,
--- 236,246 ----
    state_purge_annotator (const state_purge_map *map) : m_map (map) {}
  
    bool add_node_annotations (graphviz_out *gv, const supernode &n, bool)
!     const final override;
  
    void add_stmt_annotations (graphviz_out *gv, const gimple *stmt,
  			     bool within_row)
!     const final override;
  
  private:
    void print_needed (graphviz_out *gv,
diff -Nrcpad gcc-12.2.0/gcc/analyzer/store.cc gcc-13.1.0/gcc/analyzer/store.cc
*** gcc-12.2.0/gcc/analyzer/store.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/store.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for modeling the state of memory.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for modeling the state of memory.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 38,61 ****
  #include "tree-pretty-print.h"
  #include "diagnostic-color.h"
  #include "diagnostic-metadata.h"
- #include "tristate.h"
  #include "bitmap.h"
  #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
  #include "options.h"
- #include "cgraph.h"
  #include "cfg.h"
- #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/analyzer-selftests.h"
  #include "stor-layout.h"
  
--- 39,58 ----
  #include "tree-pretty-print.h"
  #include "diagnostic-color.h"
  #include "diagnostic-metadata.h"
  #include "bitmap.h"
  #include "selftest.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "ordered-hash-map.h"
  #include "options.h"
  #include "cfg.h"
  #include "analyzer/supergraph.h"
  #include "sbitmap.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
+ #include "analyzer/call-summary.h"
  #include "analyzer/analyzer-selftests.h"
  #include "stor-layout.h"
  
*************** uncertainty_t::dump (bool simple) const
*** 123,137 ****
  const binding_key *
  binding_key::make (store_manager *mgr, const region *r)
  {
!   region_offset offset = r->get_offset ();
    if (offset.symbolic_p ())
      return mgr->get_symbolic_binding (r);
    else
      {
        bit_size_t bit_size;
        if (r->get_bit_size (&bit_size))
! 	return mgr->get_concrete_binding (offset.get_bit_offset (),
! 					  bit_size);
        else
  	return mgr->get_symbolic_binding (r);
      }
--- 120,138 ----
  const binding_key *
  binding_key::make (store_manager *mgr, const region *r)
  {
!   region_offset offset = r->get_offset (mgr->get_svalue_manager ());
    if (offset.symbolic_p ())
      return mgr->get_symbolic_binding (r);
    else
      {
        bit_size_t bit_size;
        if (r->get_bit_size (&bit_size))
! 	{
! 	  /* Must be non-empty.  */
! 	  gcc_assert (bit_size > 0);
! 	  return mgr->get_concrete_binding (offset.get_bit_offset (),
! 					    bit_size);
! 	}
        else
  	return mgr->get_symbolic_binding (r);
      }
*************** bit_range::as_byte_range (byte_range *ou
*** 380,386 ****
  void
  byte_range::dump_to_pp (pretty_printer *pp) const
  {
!   if (m_size_in_bytes == 1)
      {
        pp_string (pp, "byte ");
        pp_wide_int (pp, m_start_byte_offset, SIGNED);
--- 381,391 ----
  void
  byte_range::dump_to_pp (pretty_printer *pp) const
  {
!   if (m_size_in_bytes == 0)
!     {
!       pp_string (pp, "empty");
!     }
!   else if (m_size_in_bytes == 1)
      {
        pp_string (pp, "byte ");
        pp_wide_int (pp, m_start_byte_offset, SIGNED);
*************** byte_range::contains_p (const byte_range
*** 424,429 ****
--- 429,505 ----
      return false;
  }
  
+ /* Return true if THIS and OTHER intersect and write the number
+    of bytes both buffers overlap to *OUT_NUM_OVERLAP_BYTES.
+ 
+    Otherwise return false.  */
+ 
+ bool
+ byte_range::intersects_p (const byte_range &other,
+ 			  byte_size_t *out_num_overlap_bytes) const
+ {
+   if (get_start_byte_offset () < other.get_next_byte_offset ()
+       && other.get_start_byte_offset () < get_next_byte_offset ())
+     {
+       byte_offset_t overlap_start = MAX (get_start_byte_offset (),
+ 					 other.get_start_byte_offset ());
+       byte_offset_t overlap_next = MIN (get_next_byte_offset (),
+ 					other.get_next_byte_offset ());
+       gcc_assert (overlap_next > overlap_start);
+       *out_num_overlap_bytes = overlap_next - overlap_start;
+       return true;
+     }
+   else
+     return false;
+ }
+ 
+ /* Return true if THIS exceeds OTHER and write the overhanging
+    byte range to OUT_OVERHANGING_BYTE_RANGE.  */
+ 
+ bool
+ byte_range::exceeds_p (const byte_range &other,
+ 		       byte_range *out_overhanging_byte_range) const
+ {
+   gcc_assert (!empty_p ());
+ 
+   if (other.get_next_byte_offset () < get_next_byte_offset ())
+     {
+       /* THIS definitely exceeds OTHER.  */
+       byte_offset_t start = MAX (get_start_byte_offset (),
+ 				 other.get_next_byte_offset ());
+       byte_offset_t size = get_next_byte_offset () - start;
+       gcc_assert (size > 0);
+       out_overhanging_byte_range->m_start_byte_offset = start;
+       out_overhanging_byte_range->m_size_in_bytes = size;
+       return true;
+     }
+   else
+     return false;
+ }
+ 
+ /* Return true if THIS falls short of OFFSET and write the
+    byte range fallen short to OUT_FALL_SHORT_BYTES.  */
+ 
+ bool
+ byte_range::falls_short_of_p (byte_offset_t offset,
+ 			      byte_range *out_fall_short_bytes) const
+ {
+   gcc_assert (!empty_p ());
+ 
+   if (get_start_byte_offset () < offset)
+     {
+       /* THIS falls short of OFFSET.  */
+       byte_offset_t start = get_start_byte_offset ();
+       byte_offset_t size = MIN (offset, get_next_byte_offset ()) - start;
+       gcc_assert (size > 0);
+       out_fall_short_bytes->m_start_byte_offset = start;
+       out_fall_short_bytes->m_size_in_bytes = size;
+       return true;
+     }
+   else
+     return false;
+ }
+ 
  /* qsort comparator for byte ranges.  */
  
  int
*************** binding_map::to_json () const
*** 675,682 ****
      {
        const svalue *value = *const_cast <map_t &> (m_map).get (key);
        label_text key_desc = key->get_desc ();
!       map_obj->set (key_desc.m_buffer, value->to_json ());
!       key_desc.maybe_free ();
      }
  
    return map_obj;
--- 751,757 ----
      {
        const svalue *value = *const_cast <map_t &> (m_map).get (key);
        label_text key_desc = key->get_desc ();
!       map_obj->set (key_desc.get (), value->to_json ());
      }
  
    return map_obj;
*************** binding_map::apply_ctor_val_to_range (co
*** 831,841 ****
      = get_subregion_within_ctor (parent_reg, min_index, mgr);
    const region *max_element
      = get_subregion_within_ctor (parent_reg, max_index, mgr);
!   region_offset min_offset = min_element->get_offset ();
    if (min_offset.symbolic_p ())
      return false;
    bit_offset_t start_bit_offset = min_offset.get_bit_offset ();
    store_manager *smgr = mgr->get_store_manager ();
    const binding_key *max_element_key = binding_key::make (smgr, max_element);
    if (max_element_key->symbolic_p ())
      return false;
--- 906,918 ----
      = get_subregion_within_ctor (parent_reg, min_index, mgr);
    const region *max_element
      = get_subregion_within_ctor (parent_reg, max_index, mgr);
!   region_offset min_offset = min_element->get_offset (mgr);
    if (min_offset.symbolic_p ())
      return false;
    bit_offset_t start_bit_offset = min_offset.get_bit_offset ();
    store_manager *smgr = mgr->get_store_manager ();
+   if (max_element->empty_p ())
+     return false;
    const binding_key *max_element_key = binding_key::make (smgr, max_element);
    if (max_element_key->symbolic_p ())
      return false;
*************** binding_map::apply_ctor_pair_to_child_re
*** 875,880 ****
--- 952,959 ----
    else
      {
        const svalue *sval = get_svalue_for_ctor_val (val, mgr);
+       if (child_reg->empty_p ())
+ 	return false;
        const binding_key *k
  	= binding_key::make (mgr->get_store_manager (), child_reg);
        /* Handle the case where we have an unknown size for child_reg
*************** binding_map::apply_ctor_pair_to_child_re
*** 889,899 ****
  	  gcc_assert (sval_byte_size != -1);
  	  bit_size_t sval_bit_size = sval_byte_size * BITS_PER_UNIT;
  	  /* Get offset of child relative to base region.  */
! 	  region_offset child_base_offset = child_reg->get_offset ();
  	  if (child_base_offset.symbolic_p ())
  	    return false;
  	  /* Convert to an offset relative to the parent region.  */
! 	  region_offset parent_base_offset = parent_reg->get_offset ();
  	  gcc_assert (!parent_base_offset.symbolic_p ());
  	  bit_offset_t child_parent_offset
  	    = (child_base_offset.get_bit_offset ()
--- 968,978 ----
  	  gcc_assert (sval_byte_size != -1);
  	  bit_size_t sval_bit_size = sval_byte_size * BITS_PER_UNIT;
  	  /* Get offset of child relative to base region.  */
! 	  region_offset child_base_offset = child_reg->get_offset (mgr);
  	  if (child_base_offset.symbolic_p ())
  	    return false;
  	  /* Convert to an offset relative to the parent region.  */
! 	  region_offset parent_base_offset = parent_reg->get_offset (mgr);
  	  gcc_assert (!parent_base_offset.symbolic_p ());
  	  bit_offset_t child_parent_offset
  	    = (child_base_offset.get_bit_offset ()
*************** binding_map::get_overlapping_bindings (c
*** 999,1004 ****
--- 1078,1086 ----
     If UNCERTAINTY is non-NULL, use it to record any svalues that
     were removed, as being maybe-bound.
  
+    If MAYBE_LIVE_VALUES is non-NULL, then use it to record any svalues that
+    were removed as being maybe-live.
+ 
     If ALWAYS_OVERLAP, then assume that DROP_KEY can overlap anything
     in the map, due to one or both of the underlying clusters being
     symbolic (but not the same symbolic region).  Hence even if DROP_KEY is a
*************** void
*** 1010,1015 ****
--- 1092,1098 ----
  binding_map::remove_overlapping_bindings (store_manager *mgr,
  					  const binding_key *drop_key,
  					  uncertainty_t *uncertainty,
+ 					  svalue_set *maybe_live_values,
  					  bool always_overlap)
  {
    /* Get the bindings of interest within this map.  */
*************** binding_map::remove_overlapping_bindings
*** 1044,1049 ****
--- 1127,1137 ----
  	      || always_overlap))
  	uncertainty->on_maybe_bound_sval (old_sval);
  
+       /* Record any svalues that were removed to *MAYBE_LIVE_VALUES as being
+ 	 maybe-live. */
+       if (maybe_live_values)
+ 	maybe_live_values->add (old_sval);
+ 
        /* Begin by removing the old binding. */
        m_map.remove (iter_binding);
  
*************** binding_map::remove_overlapping_bindings
*** 1104,1109 ****
--- 1192,1203 ----
  
  /* class binding_cluster.  */
  
+ binding_cluster::binding_cluster (const region *base_region)
+ : m_base_region (base_region), m_map (),
+   m_escaped (false), m_touched (false)
+ {
+ }
+ 
  /* binding_cluster's copy ctor.  */
  
  binding_cluster::binding_cluster (const binding_cluster &other)
*************** binding_cluster::bind (store_manager *mg
*** 1266,1271 ****
--- 1360,1367 ----
        return;
      }
  
+   if (reg->empty_p ())
+     return;
    const binding_key *binding = binding_key::make (mgr, reg);
    bind_key (binding, sval);
  }
*************** binding_cluster::bind_compound_sval (sto
*** 1293,1299 ****
  				     const region *reg,
  				     const compound_svalue *compound_sval)
  {
!   region_offset reg_offset = reg->get_offset ();
    if (reg_offset.symbolic_p ())
      {
        m_touched = true;
--- 1389,1396 ----
  				     const region *reg,
  				     const compound_svalue *compound_sval)
  {
!   region_offset reg_offset
!     = reg->get_offset (mgr->get_svalue_manager ());
    if (reg_offset.symbolic_p ())
      {
        m_touched = true;
*************** binding_cluster::bind_compound_sval (sto
*** 1328,1334 ****
  void
  binding_cluster::clobber_region (store_manager *mgr, const region *reg)
  {
!   remove_overlapping_bindings (mgr, reg, NULL);
  }
  
  /* Remove any bindings for REG within this cluster.  */
--- 1425,1431 ----
  void
  binding_cluster::clobber_region (store_manager *mgr, const region *reg)
  {
!   remove_overlapping_bindings (mgr, reg, NULL, NULL);
  }
  
  /* Remove any bindings for REG within this cluster.  */
*************** void
*** 1337,1342 ****
--- 1434,1441 ----
  binding_cluster::purge_region (store_manager *mgr, const region *reg)
  {
    gcc_assert (reg->get_kind () == RK_DECL);
+   if (reg->empty_p ())
+     return;
    const binding_key *binding
      = binding_key::make (mgr, const_cast<region *> (reg));
    m_map.remove (binding);
*************** binding_cluster::zero_fill_region (store
*** 1374,1379 ****
--- 1473,1480 ----
     Remove any bindings overlapping REG_FOR_OVERLAP.
     If UNCERTAINTY is non-NULL, use it to record any svalues that
     had bindings to them removed, as being maybe-bound.
+    If MAYBE_LIVE_VALUES is non-NULL, use it to record any svalues that
+    had bindings to them removed, as being maybe-live.
  
     REG_TO_BIND and REG_FOR_OVERLAP are the same for
     store::mark_region_as_unknown, but are different in
*************** void
*** 1384,1392 ****
  binding_cluster::mark_region_as_unknown (store_manager *mgr,
  					 const region *reg_to_bind,
  					 const region *reg_for_overlap,
! 					 uncertainty_t *uncertainty)
  {
!   remove_overlapping_bindings (mgr, reg_for_overlap, uncertainty);
  
    /* Add a default binding to "unknown".  */
    region_model_manager *sval_mgr = mgr->get_svalue_manager ();
--- 1485,1498 ----
  binding_cluster::mark_region_as_unknown (store_manager *mgr,
  					 const region *reg_to_bind,
  					 const region *reg_for_overlap,
! 					 uncertainty_t *uncertainty,
! 					 svalue_set *maybe_live_values)
  {
!   if (reg_to_bind->empty_p ())
!     return;
! 
!   remove_overlapping_bindings (mgr, reg_for_overlap, uncertainty,
! 			       maybe_live_values);
  
    /* Add a default binding to "unknown".  */
    region_model_manager *sval_mgr = mgr->get_svalue_manager ();
*************** const svalue *
*** 1438,1443 ****
--- 1544,1551 ----
  binding_cluster::get_binding (store_manager *mgr,
  			      const region *reg) const
  {
+   if (reg->empty_p ())
+     return NULL;
    const binding_key *reg_binding = binding_key::make (mgr, reg);
    const svalue *sval = m_map.get (reg_binding);
    if (sval)
*************** binding_cluster::get_any_binding (store_
*** 1542,1548 ****
    /* Alternatively, if this is a symbolic read and the cluster has any bindings,
       then we don't know if we're reading those values or not, so the result
       is also "UNKNOWN".  */
!   if (reg->get_offset ().symbolic_p ()
        && m_map.elements () > 0)
      {
        region_model_manager *rmm_mgr = mgr->get_svalue_manager ();
--- 1650,1656 ----
    /* Alternatively, if this is a symbolic read and the cluster has any bindings,
       then we don't know if we're reading those values or not, so the result
       is also "UNKNOWN".  */
!   if (reg->get_offset (mgr->get_svalue_manager ()).symbolic_p ()
        && m_map.elements () > 0)
      {
        region_model_manager *rmm_mgr = mgr->get_svalue_manager ();
*************** const svalue *
*** 1571,1583 ****
  binding_cluster::maybe_get_compound_binding (store_manager *mgr,
  					     const region *reg) const
  {
!   region_offset cluster_offset = m_base_region->get_offset ();
    if (cluster_offset.symbolic_p ())
      return NULL;
!   region_offset reg_offset = reg->get_offset ();
    if (reg_offset.symbolic_p ())
      return NULL;
  
    region_model_manager *sval_mgr = mgr->get_svalue_manager ();
  
    /* We will a build the result map in two parts:
--- 1679,1695 ----
  binding_cluster::maybe_get_compound_binding (store_manager *mgr,
  					     const region *reg) const
  {
!   region_offset cluster_offset
!     = m_base_region->get_offset (mgr->get_svalue_manager ());
    if (cluster_offset.symbolic_p ())
      return NULL;
!   region_offset reg_offset = reg->get_offset (mgr->get_svalue_manager ());
    if (reg_offset.symbolic_p ())
      return NULL;
  
+   if (reg->empty_p ())
+     return NULL;
+ 
    region_model_manager *sval_mgr = mgr->get_svalue_manager ();
  
    /* We will a build the result map in two parts:
*************** binding_cluster::maybe_get_compound_bind
*** 1649,1655 ****
  		 it overlaps with offset_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr,
  						       offset_concrete_key,
! 						       NULL, false);
  	    }
  	  else if (bound_range.contains_p (reg_range, &subrange))
  	    {
--- 1761,1767 ----
  		 it overlaps with offset_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr,
  						       offset_concrete_key,
! 						       NULL, NULL, false);
  	    }
  	  else if (bound_range.contains_p (reg_range, &subrange))
  	    {
*************** binding_cluster::maybe_get_compound_bind
*** 1683,1689 ****
  		 it overlaps with overlap_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr,
  						       overlap_concrete_key,
! 						       NULL, false);
  	    }
  	}
        else
--- 1795,1801 ----
  		 it overlaps with overlap_concrete_key.  */
  	      default_map.remove_overlapping_bindings (mgr,
  						       overlap_concrete_key,
! 						       NULL, NULL, false);
  	    }
  	}
        else
*************** binding_cluster::maybe_get_compound_bind
*** 1714,1726 ****
     in the map.
  
     If UNCERTAINTY is non-NULL, use it to record any svalues that
!    were removed, as being maybe-bound.  */
  
  void
  binding_cluster::remove_overlapping_bindings (store_manager *mgr,
  					      const region *reg,
! 					      uncertainty_t *uncertainty)
  {
    const binding_key *reg_binding = binding_key::make (mgr, reg);
  
    const region *cluster_base_reg = get_base_region ();
--- 1826,1844 ----
     in the map.
  
     If UNCERTAINTY is non-NULL, use it to record any svalues that
!    were removed, as being maybe-bound.
! 
!    If MAYBE_LIVE_VALUES is non-NULL, use it to record any svalues that
!    were removed, as being maybe-live.  */
  
  void
  binding_cluster::remove_overlapping_bindings (store_manager *mgr,
  					      const region *reg,
! 					      uncertainty_t *uncertainty,
! 					      svalue_set *maybe_live_values)
  {
+   if (reg->empty_p ())
+     return;
    const binding_key *reg_binding = binding_key::make (mgr, reg);
  
    const region *cluster_base_reg = get_base_region ();
*************** binding_cluster::remove_overlapping_bind
*** 1735,1740 ****
--- 1853,1859 ----
  			 && (cluster_base_reg->get_kind () == RK_SYMBOLIC
  			     || other_base_reg->get_kind () == RK_SYMBOLIC));
    m_map.remove_overlapping_bindings (mgr, reg_binding, uncertainty,
+ 				     maybe_live_values,
  				     always_overlap);
  }
  
*************** binding_cluster::on_unknown_fncall (cons
*** 1928,1938 ****
      {
        m_map.empty ();
  
!       /* Bind it to a new "conjured" value using CALL.  */
!       const svalue *sval
! 	= mgr->get_svalue_manager ()->get_or_create_conjured_svalue
  	    (m_base_region->get_type (), call, m_base_region, p);
!       bind (mgr, m_base_region, sval);
  
        m_touched = true;
      }
--- 2047,2060 ----
      {
        m_map.empty ();
  
!       if (!m_base_region->empty_p ())
! 	{
! 	  /* Bind it to a new "conjured" value using CALL.  */
! 	  const svalue *sval
! 	    = mgr->get_svalue_manager ()->get_or_create_conjured_svalue
  	    (m_base_region->get_type (), call, m_base_region, p);
! 	  bind (mgr, m_base_region, sval);
! 	}
  
        m_touched = true;
      }
*************** binding_cluster::on_asm (const gasm *stm
*** 1957,1962 ****
--- 2079,2095 ----
    m_touched = true;
  }
  
+ /* Return true if this cluster has escaped.  */
+ 
+ bool
+ binding_cluster::escaped_p () const
+ {
+   /* Consider the "errno" region to always have escaped.  */
+   if (m_base_region->get_kind () == RK_ERRNO)
+     return true;
+   return m_escaped;
+ }
+ 
  /* Return true if this binding_cluster has no information
     i.e. if there are no bindings, and it hasn't been marked as having
     escaped, or touched symbolically.  */
*************** binding_cluster::maybe_get_simple_value
*** 2058,2063 ****
--- 2191,2199 ----
    if (m_map.elements () != 1)
      return NULL;
  
+   if (m_base_region->empty_p ())
+     return NULL;
+ 
    const binding_key *key = binding_key::make (mgr, m_base_region);
    return get_any_value (key);
  }
*************** store::to_json () const
*** 2403,2415 ****
  	  binding_cluster *cluster
  	    = *const_cast<cluster_map_t &> (m_cluster_map).get (base_reg);
  	  label_text base_reg_desc = base_reg->get_desc ();
! 	  clusters_in_parent_reg_obj->set (base_reg_desc.m_buffer,
  					   cluster->to_json ());
- 	  base_reg_desc.maybe_free ();
  	}
        label_text parent_reg_desc = parent_reg->get_desc ();
!       store_obj->set (parent_reg_desc.m_buffer, clusters_in_parent_reg_obj);
!       parent_reg_desc.maybe_free ();
      }
  
    store_obj->set ("called_unknown_fn", new json::literal (m_called_unknown_fn));
--- 2539,2549 ----
  	  binding_cluster *cluster
  	    = *const_cast<cluster_map_t &> (m_cluster_map).get (base_reg);
  	  label_text base_reg_desc = base_reg->get_desc ();
! 	  clusters_in_parent_reg_obj->set (base_reg_desc.get (),
  					   cluster->to_json ());
  	}
        label_text parent_reg_desc = parent_reg->get_desc ();
!       store_obj->set (parent_reg_desc.get (), clusters_in_parent_reg_obj);
      }
  
    store_obj->set ("called_unknown_fn", new json::literal (m_called_unknown_fn));
*************** store::set_value (store_manager *mgr, co
*** 2442,2448 ****
  
    remove_overlapping_bindings (mgr, lhs_reg, uncertainty);
  
!   rhs_sval = simplify_for_binding (rhs_sval);
  
    const region *lhs_base_reg = lhs_reg->get_base_region ();
    binding_cluster *lhs_cluster;
--- 2576,2584 ----
  
    remove_overlapping_bindings (mgr, lhs_reg, uncertainty);
  
!   if (lhs_reg->get_type ())
!     rhs_sval = simplify_for_binding (rhs_sval);
!   /* ...but if we have no type for the region, retain any cast.  */
  
    const region *lhs_base_reg = lhs_reg->get_base_region ();
    binding_cluster *lhs_cluster;
*************** store::set_value (store_manager *mgr, co
*** 2460,2465 ****
--- 2596,2603 ----
  	  const region *ptr_base_reg = ptr_dst->get_base_region ();
  	  mark_as_escaped (ptr_base_reg);
  	}
+       if (uncertainty)
+ 	uncertainty->on_maybe_bound_sval (rhs_sval);
      }
    else if (lhs_base_reg->tracked_p ())
      {
*************** store::set_value (store_manager *mgr, co
*** 2480,2486 ****
       Writes to symbolic clusters can affect both concrete and symbolic
       clusters.
       Invalidate our knowledge of other clusters that might have been
!      affected by the write.  */
    for (cluster_map_t::iterator iter = m_cluster_map.begin ();
         iter != m_cluster_map.end (); ++iter)
      {
--- 2618,2627 ----
       Writes to symbolic clusters can affect both concrete and symbolic
       clusters.
       Invalidate our knowledge of other clusters that might have been
!      affected by the write.
!      Gather the set of all svalues that might still be live even if
!      the store doesn't refer to them.  */
!   svalue_set maybe_live_values;
    for (cluster_map_t::iterator iter = m_cluster_map.begin ();
         iter != m_cluster_map.end (); ++iter)
      {
*************** store::set_value (store_manager *mgr, co
*** 2517,2523 ****
  		(mgr,
  		 iter_base_reg, /* reg_to_bind */
  		 lhs_reg, /* reg_for_overlap */
! 		 uncertainty);
  	      break;
  
  	    case tristate::TS_TRUE:
--- 2658,2665 ----
  		(mgr,
  		 iter_base_reg, /* reg_to_bind */
  		 lhs_reg, /* reg_for_overlap */
! 		 uncertainty,
! 		 &maybe_live_values);
  	      break;
  
  	    case tristate::TS_TRUE:
*************** store::set_value (store_manager *mgr, co
*** 2531,2536 ****
--- 2673,2683 ----
  	    }
  	}
      }
+   /* Given the set of svalues that might still be live, process them
+      (e.g. marking regions as escaped).
+      We do this after the iteration to avoid potentially changing
+      m_cluster_map whilst iterating over it.  */
+   on_maybe_live_values (maybe_live_values);
  }
  
  /* Determine if BASE_REG_A could be an alias of BASE_REG_B.  */
*************** store::eval_alias_1 (const region *base_
*** 2611,2616 ****
--- 2758,2778 ----
    return tristate::TS_UNKNOWN;
  }
  
+ /* Record all of the values in MAYBE_LIVE_VALUES as being possibly live.  */
+ 
+ void
+ store::on_maybe_live_values (const svalue_set &maybe_live_values)
+ {
+   for (auto sval : maybe_live_values)
+     {
+       if (const region_svalue *ptr_sval = sval->dyn_cast_region_svalue ())
+ 	{
+ 	  const region *base_reg = ptr_sval->get_pointee ()->get_base_region ();
+ 	  mark_as_escaped (base_reg);
+ 	}
+     }
+ }
+ 
  /* Remove all bindings overlapping REG within this store.  */
  
  void
*************** store::purge_region (store_manager *mgr,
*** 2652,2657 ****
--- 2814,2823 ----
  void
  store::fill_region (store_manager *mgr, const region *reg, const svalue *sval)
  {
+   /* Filling an empty region is a no-op.  */
+   if (reg->empty_p ())
+     return;
+ 
    const region *base_reg = reg->get_base_region ();
    if (base_reg->symbolic_for_unknown_ptr_p ()
        || !base_reg->tracked_p ())
*************** store::zero_fill_region (store_manager *
*** 2674,2687 ****
  
  void
  store::mark_region_as_unknown (store_manager *mgr, const region *reg,
! 			       uncertainty_t *uncertainty)
  {
    const region *base_reg = reg->get_base_region ();
    if (base_reg->symbolic_for_unknown_ptr_p ()
        || !base_reg->tracked_p ())
      return;
    binding_cluster *cluster = get_or_create_cluster (base_reg);
!   cluster->mark_region_as_unknown (mgr, reg, reg, uncertainty);
  }
  
  /* Purge state involving SVAL.  */
--- 2840,2855 ----
  
  void
  store::mark_region_as_unknown (store_manager *mgr, const region *reg,
! 			       uncertainty_t *uncertainty,
! 			       svalue_set *maybe_live_values)
  {
    const region *base_reg = reg->get_base_region ();
    if (base_reg->symbolic_for_unknown_ptr_p ()
        || !base_reg->tracked_p ())
      return;
    binding_cluster *cluster = get_or_create_cluster (base_reg);
!   cluster->mark_region_as_unknown (mgr, reg, reg, uncertainty,
! 				   maybe_live_values);
  }
  
  /* Purge state involving SVAL.  */
*************** store::escaped_p (const region *base_reg
*** 2867,2872 ****
--- 3035,3044 ----
    gcc_assert (base_reg);
    gcc_assert (base_reg->get_base_region () == base_reg);
  
+   /* "errno" can always be modified by external code.  */
+   if (base_reg->get_kind () == RK_ERRNO)
+     return true;
+ 
    if (binding_cluster **cluster_slot
        = const_cast <cluster_map_t &>(m_cluster_map).get (base_reg))
      return (*cluster_slot)->escaped_p ();
*************** store::remove_overlapping_bindings (stor
*** 2924,2930 ****
  	  delete cluster;
  	  return;
  	}
!       cluster->remove_overlapping_bindings (mgr, reg, uncertainty);
      }
  }
  
--- 3096,3104 ----
  	  delete cluster;
  	  return;
  	}
!       /* Pass NULL for the maybe_live_values here, as we don't want to
! 	 record the old svalues as being maybe-bound.  */
!       cluster->remove_overlapping_bindings (mgr, reg, uncertainty, NULL);
      }
  }
  
*************** store::remove_overlapping_bindings (stor
*** 2933,2939 ****
  
  struct region_finder : public visitor
  {
!   void visit_region (const region *reg) FINAL OVERRIDE
    {
      m_regs.add (reg);
    }
--- 3107,3113 ----
  
  struct region_finder : public visitor
  {
!   void visit_region (const region *reg) final override
    {
      m_regs.add (reg);
    }
*************** store::canonicalize (store_manager *mgr)
*** 2975,2980 ****
--- 3149,3163 ----
        binding_cluster *cluster = (*iter).second;
        if (base_reg->get_kind () == RK_HEAP_ALLOCATED)
  	{
+ 	  /* Don't purge a heap-allocated region that's been marked as
+ 	     escaping, since this could be recording that a ptr to it
+ 	     was written to an unknown symbolic region along this
+ 	     path, and so we don't know whether it's referenced or
+ 	     not, and hence should report it as leaking
+ 	     (PR analyzer/106473).  */
+ 	  if (cluster->escaped_p ())
+ 	    continue;
+ 
  	  if (cluster->empty_p ())
  	    if (!s.m_regs.contains (base_reg))
  	      purgeable_regions.add (base_reg);
*************** store::loop_replay_fixup (const store *o
*** 3048,3053 ****
--- 3231,3380 ----
      }
  }
  
+ /* Use R to replay the bindings from SUMMARY into this object.  */
+ 
+ void
+ store::replay_call_summary (call_summary_replay &r,
+ 			    const store &summary)
+ {
+   if (summary.m_called_unknown_fn)
+     {
+       /* A call to an external function occurred in the summary.
+ 	 Hence we need to invalidate our knownledge of globals,
+ 	 escaped regions, etc.  */
+       on_unknown_fncall (r.get_call_stmt (),
+ 			 r.get_store_manager (),
+ 			 conjured_purge (r.get_caller_model (),
+ 					 r.get_ctxt ()));
+     }
+ 
+   auto_vec<const region *> keys (summary.m_cluster_map.elements ());
+   for (auto kv : summary.m_cluster_map)
+     keys.quick_push (kv.first);
+   keys.qsort (region::cmp_ptr_ptr);
+   for (auto base_reg : keys)
+     replay_call_summary_cluster (r, summary, base_reg);
+ }
+ 
+ /* Use R and SUMMARY to replay the bindings in SUMMARY_CLUSTER
+    into this object.  */
+ 
+ void
+ store::replay_call_summary_cluster (call_summary_replay &r,
+ 				    const store &summary,
+ 				    const region *summary_base_reg)
+ {
+   const call_details &cd = r.get_call_details ();
+   region_model_manager *reg_mgr = r.get_manager ();
+   store_manager *mgr = reg_mgr->get_store_manager ();
+   const binding_cluster *summary_cluster
+     = summary.get_cluster (summary_base_reg);
+ 
+   /* Handle "ESCAPED" and "TOUCHED" flags.  */
+   if (summary_cluster->escaped_p () || summary_cluster->touched_p ())
+     if (const region *caller_reg
+ 	= r.convert_region_from_summary (summary_base_reg))
+       {
+ 	const region *caller_base_reg = caller_reg->get_base_region ();
+ 	if (caller_base_reg->tracked_p ()
+ 	    && !caller_base_reg->symbolic_for_unknown_ptr_p ())
+ 	  {
+ 	    binding_cluster *caller_cluster
+ 	      = get_or_create_cluster (caller_base_reg);
+ 	    if (summary_cluster->escaped_p ())
+ 	      caller_cluster->mark_as_escaped ();
+ 	    if (summary_cluster->touched_p ())
+ 	      caller_cluster->m_touched = true;
+ 	  }
+       }
+ 
+   switch (summary_base_reg->get_kind ())
+     {
+     /* Top-level regions.  */
+     case RK_FRAME:
+     case RK_GLOBALS:
+     case RK_CODE:
+     case RK_STACK:
+     case RK_HEAP:
+     case RK_THREAD_LOCAL:
+     case RK_ROOT:
+     /* Child regions.  */
+     case RK_FIELD:
+     case RK_ELEMENT:
+     case RK_OFFSET:
+     case RK_SIZED:
+     case RK_CAST:
+     case RK_BIT_RANGE:
+     /* Other regions.  */
+     case RK_VAR_ARG:
+     case RK_UNKNOWN:
+       /* These should never be the base region of a binding cluster.  */
+       gcc_unreachable ();
+       break;
+ 
+     case RK_FUNCTION:
+     case RK_LABEL:
+     case RK_STRING:
+       /* These can be marked as escaping.  */
+       break;
+ 
+     case RK_SYMBOLIC:
+       {
+ 	const symbolic_region *summary_symbolic_reg
+ 	  = as_a <const symbolic_region *> (summary_base_reg);
+ 	const svalue *summary_ptr_sval = summary_symbolic_reg->get_pointer ();
+ 	const svalue *caller_ptr_sval
+ 	  = r.convert_svalue_from_summary (summary_ptr_sval);
+ 	if (!caller_ptr_sval)
+ 	  return;
+ 	const region *caller_dest_reg
+ 	  = cd.get_model ()->deref_rvalue (caller_ptr_sval,
+ 					   NULL_TREE,
+ 					   cd.get_ctxt ());
+ 	const svalue *summary_sval
+ 	  = summary.get_any_binding (mgr, summary_base_reg);
+ 	if (!summary_sval)
+ 	  return;
+ 	const svalue *caller_sval
+ 	  = r.convert_svalue_from_summary (summary_sval);
+ 	if (!caller_sval)
+ 	  caller_sval =
+ 	    reg_mgr->get_or_create_unknown_svalue (summary_sval->get_type ());
+ 	set_value (mgr, caller_dest_reg,
+ 		   caller_sval, NULL /* uncertainty_t * */);
+       }
+       break;
+ 
+     case RK_HEAP_ALLOCATED:
+     case RK_DECL:
+     case RK_ERRNO:
+       {
+ 	const region *caller_dest_reg
+ 	  = r.convert_region_from_summary (summary_base_reg);
+ 	if (!caller_dest_reg)
+ 	  return;
+ 	const svalue *summary_sval
+ 	  = summary.get_any_binding (mgr, summary_base_reg);
+ 	if (!summary_sval)
+ 	  summary_sval = reg_mgr->get_or_create_compound_svalue
+ 	    (summary_base_reg->get_type (),
+ 	     summary_cluster->get_map ());
+ 	const svalue *caller_sval
+ 	  = r.convert_svalue_from_summary (summary_sval);
+ 	if (!caller_sval)
+ 	  caller_sval =
+ 	    reg_mgr->get_or_create_unknown_svalue (summary_sval->get_type ());
+ 	set_value (mgr, caller_dest_reg,
+ 		   caller_sval, NULL /* uncertainty_t * */);
+       }
+       break;
+ 
+     case RK_ALLOCA:
+       /* Ignore bindings of alloca regions in the summary.  */
+       break;
+     }
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
diff -Nrcpad gcc-12.2.0/gcc/analyzer/store.h gcc-13.1.0/gcc/analyzer/store.h
*** gcc-12.2.0/gcc/analyzer/store.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/store.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Classes for modeling the state of memory.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Classes for modeling the state of memory.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** struct bit_range
*** 237,242 ****
--- 237,247 ----
    void dump_to_pp (pretty_printer *pp) const;
    void dump () const;
  
+   bool empty_p () const
+   {
+     return m_size_in_bits == 0;
+   }
+ 
    bit_offset_t get_start_bit_offset () const
    {
      return m_start_bit_offset;
*************** struct bit_range
*** 247,252 ****
--- 252,258 ----
    }
    bit_offset_t get_last_bit_offset () const
    {
+     gcc_assert (!empty_p ());
      return get_next_bit_offset () - 1;
    }
  
*************** struct byte_range
*** 297,302 ****
--- 303,313 ----
    void dump_to_pp (pretty_printer *pp) const;
    void dump () const;
  
+   bool empty_p () const
+   {
+     return m_size_in_bytes == 0;
+   }
+ 
    bool contains_p (byte_offset_t offset) const
    {
      return (offset >= get_start_byte_offset ()
*************** struct byte_range
*** 310,315 ****
--- 321,335 ----
  	    && m_size_in_bytes == other.m_size_in_bytes);
    }
  
+   bool intersects_p (const byte_range &other,
+ 		     byte_size_t *out_num_overlap_bytes) const;
+ 
+   bool exceeds_p (const byte_range &other,
+ 		  byte_range *out_overhanging_byte_range) const;
+ 
+   bool falls_short_of_p (byte_offset_t offset,
+ 			 byte_range *out_fall_short_bytes) const;
+ 
    byte_offset_t get_start_byte_offset () const
    {
      return m_start_byte_offset;
*************** struct byte_range
*** 320,325 ****
--- 340,346 ----
    }
    byte_offset_t get_last_byte_offset () const
    {
+     gcc_assert (!empty_p ());
      return m_start_byte_offset + m_size_in_bytes - 1;
    }
  
*************** struct byte_range
*** 335,342 ****
    byte_size_t m_size_in_bytes;
  };
  
! /* Concrete subclass of binding_key, for describing a concrete range of
!    bits within the binding_map (e.g. "bits 8-15").  */
  
  class concrete_binding : public binding_key
  {
--- 356,363 ----
    byte_size_t m_size_in_bytes;
  };
  
! /* Concrete subclass of binding_key, for describing a non-empty
!    concrete range of bits within the binding_map (e.g. "bits 8-15").  */
  
  class concrete_binding : public binding_key
  {
*************** public:
*** 346,353 ****
  
    concrete_binding (bit_offset_t start_bit_offset, bit_size_t size_in_bits)
    : m_bit_range (start_bit_offset, size_in_bits)
!   {}
!   bool concrete_p () const FINAL OVERRIDE { return true; }
  
    hashval_t hash () const
    {
--- 367,376 ----
  
    concrete_binding (bit_offset_t start_bit_offset, bit_size_t size_in_bits)
    : m_bit_range (start_bit_offset, size_in_bits)
!   {
!     gcc_assert (!m_bit_range.empty_p ());
!   }
!   bool concrete_p () const final override { return true; }
  
    hashval_t hash () const
    {
*************** public:
*** 361,369 ****
      return m_bit_range == other.m_bit_range;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
!   const concrete_binding *dyn_cast_concrete_binding () const FINAL OVERRIDE
    { return this; }
  
    const bit_range &get_bit_range () const { return m_bit_range; }
--- 384,392 ----
      return m_bit_range == other.m_bit_range;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
!   const concrete_binding *dyn_cast_concrete_binding () const final override
    { return this; }
  
    const bit_range &get_bit_range () const { return m_bit_range; }
*************** private:
*** 397,402 ****
--- 420,433 ----
  
  } // namespace ana
  
+ template <>
+ template <>
+ inline bool
+ is_a_helper <const ana::concrete_binding *>::test (const ana::binding_key *key)
+ {
+   return key->concrete_p ();
+ }
+ 
  template <> struct default_hash_traits<ana::concrete_binding>
  : public member_function_hash_traits<ana::concrete_binding>
  {
*************** public:
*** 415,421 ****
    typedef symbolic_binding key_t;
  
    symbolic_binding (const region *region) : m_region (region) {}
!   bool concrete_p () const FINAL OVERRIDE { return false; }
  
    hashval_t hash () const
    {
--- 446,452 ----
    typedef symbolic_binding key_t;
  
    symbolic_binding (const region *region) : m_region (region) {}
!   bool concrete_p () const final override { return false; }
  
    hashval_t hash () const
    {
*************** public:
*** 426,434 ****
      return m_region == other.m_region;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
  
!   const symbolic_binding *dyn_cast_symbolic_binding () const FINAL OVERRIDE
    { return this; }
  
    const region *get_region () const { return m_region; }
--- 457,465 ----
      return m_region == other.m_region;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
  
!   const symbolic_binding *dyn_cast_symbolic_binding () const final override
    { return this; }
  
    const region *get_region () const { return m_region; }
*************** public:
*** 510,515 ****
--- 541,547 ----
    void remove_overlapping_bindings (store_manager *mgr,
  				    const binding_key *drop_key,
  				    uncertainty_t *uncertainty,
+ 				    svalue_set *maybe_live_values,
  				    bool always_overlap);
  
  private:
*************** public:
*** 544,552 ****
    typedef hash_map <const binding_key *, const svalue *> map_t;
    typedef map_t::iterator iterator_t;
  
!   binding_cluster (const region *base_region)
!   : m_base_region (base_region), m_map (),
!     m_escaped (false), m_touched (false) {}
    binding_cluster (const binding_cluster &other);
    binding_cluster& operator=(const binding_cluster &other);
  
--- 576,582 ----
    typedef hash_map <const binding_key *, const svalue *> map_t;
    typedef map_t::iterator iterator_t;
  
!   binding_cluster (const region *base_region);
    binding_cluster (const binding_cluster &other);
    binding_cluster& operator=(const binding_cluster &other);
  
*************** public:
*** 578,584 ****
    void mark_region_as_unknown (store_manager *mgr,
  			       const region *reg_to_bind,
  			       const region *reg_for_overlap,
! 			       uncertainty_t *uncertainty);
    void purge_state_involving (const svalue *sval,
  			      region_model_manager *sval_mgr);
  
--- 608,615 ----
    void mark_region_as_unknown (store_manager *mgr,
  			       const region *reg_to_bind,
  			       const region *reg_for_overlap,
! 			       uncertainty_t *uncertainty,
! 			       svalue_set *maybe_live_values);
    void purge_state_involving (const svalue *sval,
  			      region_model_manager *sval_mgr);
  
*************** public:
*** 591,597 ****
  					     const region *reg) const;
  
    void remove_overlapping_bindings (store_manager *mgr, const region *reg,
! 				    uncertainty_t *uncertainty);
  
    template <typename T>
    void for_each_value (void (*cb) (const svalue *sval, T user_data),
--- 622,629 ----
  					     const region *reg) const;
  
    void remove_overlapping_bindings (store_manager *mgr, const region *reg,
! 				    uncertainty_t *uncertainty,
! 				    svalue_set *maybe_live_values);
  
    template <typename T>
    void for_each_value (void (*cb) (const svalue *sval, T user_data),
*************** public:
*** 617,623 ****
    void on_asm (const gasm *stmt, store_manager *mgr,
  	       const conjured_purge &p);
  
!   bool escaped_p () const { return m_escaped; }
    bool touched_p () const { return m_touched; }
  
    bool redundant_p () const;
--- 649,655 ----
    void on_asm (const gasm *stmt, store_manager *mgr,
  	       const conjured_purge &p);
  
!   bool escaped_p () const;
    bool touched_p () const { return m_touched; }
  
    bool redundant_p () const;
*************** public:
*** 717,723 ****
    void fill_region (store_manager *mgr, const region *reg, const svalue *sval);
    void zero_fill_region (store_manager *mgr, const region *reg);
    void mark_region_as_unknown (store_manager *mgr, const region *reg,
! 			       uncertainty_t *uncertainty);
    void purge_state_involving (const svalue *sval,
  			      region_model_manager *sval_mgr);
  
--- 749,756 ----
    void fill_region (store_manager *mgr, const region *reg, const svalue *sval);
    void zero_fill_region (store_manager *mgr, const region *reg);
    void mark_region_as_unknown (store_manager *mgr, const region *reg,
! 			       uncertainty_t *uncertainty,
! 			       svalue_set *maybe_live_values);
    void purge_state_involving (const svalue *sval,
  			      region_model_manager *sval_mgr);
  
*************** public:
*** 767,772 ****
--- 800,812 ----
    void loop_replay_fixup (const store *other_store,
  			  region_model_manager *mgr);
  
+   void replay_call_summary (call_summary_replay &r,
+ 			    const store &summary);
+   void replay_call_summary_cluster (call_summary_replay &r,
+ 				    const store &summary,
+ 				    const region *base_reg);
+   void on_maybe_live_values (const svalue_set &maybe_live_values);
+ 
  private:
    void remove_overlapping_bindings (store_manager *mgr, const region *reg,
  				    uncertainty_t *uncertainty);
diff -Nrcpad gcc-12.2.0/gcc/analyzer/supergraph.cc gcc-13.1.0/gcc/analyzer/supergraph.cc
*** gcc-12.2.0/gcc/analyzer/supergraph.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/supergraph.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 29,41 ****
  #include "ggc.h"
  #include "basic-block.h"
  #include "function.h"
  #include "gimple-fold.h"
  #include "tree-eh.h"
  #include "gimple-expr.h"
  #include "is-a.h"
  #include "timevar.h"
- #include "gimple.h"
- #include "gimple-iterator.h"
  #include "gimple-pretty-print.h"
  #include "tree-pretty-print.h"
  #include "graphviz.h"
--- 30,42 ----
  #include "ggc.h"
  #include "basic-block.h"
  #include "function.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
  #include "gimple-fold.h"
  #include "tree-eh.h"
  #include "gimple-expr.h"
  #include "is-a.h"
  #include "timevar.h"
  #include "gimple-pretty-print.h"
  #include "tree-pretty-print.h"
  #include "graphviz.h"
*************** along with GCC; see the file COPYING3.
*** 44,50 ****
  #include "bitmap.h"
  #include "cfganal.h"
  #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "ordered-hash-map.h"
  #include "options.h"
--- 45,50 ----
*************** namespace ana {
*** 62,68 ****
  /* Get the function of the ultimate alias target being called at EDGE,
     if any.  */
  
! static function *
  get_ultimate_function_for_cgraph_edge (cgraph_edge *edge)
  {
    cgraph_node *ultimate_node = edge->callee->ultimate_alias_target ();
--- 62,68 ----
  /* Get the function of the ultimate alias target being called at EDGE,
     if any.  */
  
! function *
  get_ultimate_function_for_cgraph_edge (cgraph_edge *edge)
  {
    cgraph_node *ultimate_node = edge->callee->ultimate_alias_target ();
*************** get_ultimate_function_for_cgraph_edge (c
*** 74,85 ****
  /* Get the cgraph_edge, but only if there's an underlying function body.  */
  
  cgraph_edge *
! supergraph_call_edge (function *fun, gimple *stmt)
  {
!   gcall *call = dyn_cast<gcall *> (stmt);
    if (!call)
      return NULL;
!   cgraph_edge *edge = cgraph_node::get (fun->decl)->get_edge (stmt);
    if (!edge)
      return NULL;
    if (!edge->callee)
--- 74,86 ----
  /* Get the cgraph_edge, but only if there's an underlying function body.  */
  
  cgraph_edge *
! supergraph_call_edge (function *fun, const gimple *stmt)
  {
!   const gcall *call = dyn_cast<const gcall *> (stmt);
    if (!call)
      return NULL;
!   cgraph_edge *edge
!     = cgraph_node::get (fun->decl)->get_edge (const_cast <gimple *> (stmt));
    if (!edge)
      return NULL;
    if (!edge->callee)
*************** void
*** 854,866 ****
  superedge::dump (pretty_printer *pp) const
  {
    pp_printf (pp, "edge: SN: %i -> SN: %i", m_src->m_index, m_dest->m_index);
!   char *desc = get_description (false);
!   if (strlen (desc) > 0)
      {
        pp_space (pp);
!       pp_string (pp, desc);
      }
-   free (desc);
  }
  
  /* Dump this superedge to stderr.  */
--- 855,866 ----
  superedge::dump (pretty_printer *pp) const
  {
    pp_printf (pp, "edge: SN: %i -> SN: %i", m_src->m_index, m_dest->m_index);
!   label_text desc (get_description (false));
!   if (strlen (desc.get ()) > 0)
      {
        pp_space (pp);
!       pp_string (pp, desc.get ());
      }
  }
  
  /* Dump this superedge to stderr.  */
*************** superedge::get_any_callgraph_edge () con
*** 998,1014 ****
  /* Build a description of this superedge (e.g. "true" for the true
     edge of a conditional, or "case 42:" for a switch case).
  
-    The caller is responsible for freeing the result.
- 
     If USER_FACING is false, the result also contains any underlying
     CFG edge flags. e.g. " (flags FALLTHRU | DFS_BACK)".  */
  
! char *
  superedge::get_description (bool user_facing) const
  {
    pretty_printer pp;
    dump_label_to_pp (&pp, user_facing);
!   return xstrdup (pp_formatted_text (&pp));
  }
  
  /* Implementation of superedge::dump_label_to_pp for non-switch CFG
--- 998,1012 ----
  /* Build a description of this superedge (e.g. "true" for the true
     edge of a conditional, or "case 42:" for a switch case).
  
     If USER_FACING is false, the result also contains any underlying
     CFG edge flags. e.g. " (flags FALLTHRU | DFS_BACK)".  */
  
! label_text
  superedge::get_description (bool user_facing) const
  {
    pretty_printer pp;
    dump_label_to_pp (&pp, user_facing);
!   return label_text::take (xstrdup (pp_formatted_text (&pp)));
  }
  
  /* Implementation of superedge::dump_label_to_pp for non-switch CFG
*************** switch_cfg_superedge::dump_label_to_pp (
*** 1155,1163 ****
--- 1153,1183 ----
  	    pp_printf (pp, "default");
  	}
        pp_character (pp, '}');
+       if (implicitly_created_default_p ())
+ 	{
+ 	  pp_string (pp, " IMPLICITLY CREATED");
+ 	}
      }
  }
  
+ /* Return true iff this edge is purely for an implicitly-created "default".  */
+ 
+ bool
+ switch_cfg_superedge::implicitly_created_default_p () const
+ {
+   if (m_case_labels.length () != 1)
+     return false;
+ 
+   tree case_label = m_case_labels[0];
+   gcc_assert (TREE_CODE (case_label) == CASE_LABEL_EXPR);
+   if (CASE_LOW (case_label))
+     return false;
+ 
+   /* We have a single "default" case.
+      Assume that it was implicitly created if it has UNKNOWN_LOCATION.  */
+   return EXPR_LOCATION (case_label) == UNKNOWN_LOCATION;
+ }
+ 
  /* Implementation of superedge::dump_label_to_pp for interprocedural
     superedges.  */
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/supergraph.h gcc-13.1.0/gcc/analyzer/supergraph.h
*** gcc-12.2.0/gcc/analyzer/supergraph.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/supergraph.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* "Supergraph" classes that combine CFGs and callgraph into one digraph.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,33 ----
  #ifndef GCC_ANALYZER_SUPERGRAPH_H
  #define GCC_ANALYZER_SUPERGRAPH_H
  
+ #include "ordered-hash-map.h"
+ #include "cfg.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "digraph.h"
+ 
  using namespace ana;
  
  namespace ana {
*************** class supernode : public dnode<supergrap
*** 245,251 ****
      return m_bb == EXIT_BLOCK_PTR_FOR_FN (m_fun);
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const OVERRIDE;
    void dump_dot_id (pretty_printer *pp) const;
  
    json::object *to_json () const;
--- 252,258 ----
      return m_bb == EXIT_BLOCK_PTR_FOR_FN (m_fun);
    }
  
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const override;
    void dump_dot_id (pretty_printer *pp) const;
  
    json::object *to_json () const;
*************** class superedge : public dedge<supergrap
*** 308,314 ****
  
    void dump (pretty_printer *pp) const;
    void dump () const;
!   void dump_dot (graphviz_out *gv, const dump_args_t &args) const;
  
    virtual void dump_label_to_pp (pretty_printer *pp,
  				 bool user_facing) const = 0;
--- 315,322 ----
  
    void dump (pretty_printer *pp) const;
    void dump () const;
!   void dump_dot (graphviz_out *gv, const dump_args_t &args)
!     const final override;
  
    virtual void dump_label_to_pp (pretty_printer *pp,
  				 bool user_facing) const = 0;
*************** class superedge : public dedge<supergrap
*** 330,336 ****
    ::edge get_any_cfg_edge () const;
    cgraph_edge *get_any_callgraph_edge () const;
  
!   char *get_description (bool user_facing) const;
  
   protected:
    superedge (supernode *src, supernode *dest, enum edge_kind kind)
--- 338,344 ----
    ::edge get_any_cfg_edge () const;
    cgraph_edge *get_any_callgraph_edge () const;
  
!   label_text get_description (bool user_facing) const;
  
   protected:
    superedge (supernode *src, supernode *dest, enum edge_kind kind)
*************** class callgraph_superedge : public super
*** 389,402 ****
    {}
  
    void dump_label_to_pp (pretty_printer *pp, bool user_facing) const
!     FINAL OVERRIDE;
  
!   callgraph_superedge *dyn_cast_callgraph_superedge () FINAL OVERRIDE
    {
      return this;
    }
    const callgraph_superedge *dyn_cast_callgraph_superedge () const
!     FINAL OVERRIDE
    {
      return this;
    }
--- 397,410 ----
    {}
  
    void dump_label_to_pp (pretty_printer *pp, bool user_facing) const
!     final override;
  
!   callgraph_superedge *dyn_cast_callgraph_superedge () final override
    {
      return this;
    }
    const callgraph_superedge *dyn_cast_callgraph_superedge () const
!     final override
    {
      return this;
    }
*************** class call_superedge : public callgraph_
*** 439,449 ****
    : callgraph_superedge (src, dst, SUPEREDGE_CALL, cedge)
    {}
  
!   call_superedge *dyn_cast_call_superedge () FINAL OVERRIDE
    {
      return this;
    }
!   const call_superedge *dyn_cast_call_superedge () const FINAL OVERRIDE
    {
      return this;
    }
--- 447,457 ----
    : callgraph_superedge (src, dst, SUPEREDGE_CALL, cedge)
    {}
  
!   call_superedge *dyn_cast_call_superedge () final override
    {
      return this;
    }
!   const call_superedge *dyn_cast_call_superedge () const final override
    {
      return this;
    }
*************** class return_superedge : public callgrap
*** 475,482 ****
    : callgraph_superedge (src, dst, SUPEREDGE_RETURN, cedge)
    {}
  
!   return_superedge *dyn_cast_return_superedge () FINAL OVERRIDE { return this; }
!   const return_superedge *dyn_cast_return_superedge () const FINAL OVERRIDE
    {
      return this;
    }
--- 483,490 ----
    : callgraph_superedge (src, dst, SUPEREDGE_RETURN, cedge)
    {}
  
!   return_superedge *dyn_cast_return_superedge () final override { return this; }
!   const return_superedge *dyn_cast_return_superedge () const final override
    {
      return this;
    }
*************** class cfg_superedge : public superedge
*** 509,517 ****
      m_cfg_edge (e)
    {}
  
!   void dump_label_to_pp (pretty_printer *pp, bool user_facing) const OVERRIDE;
!   cfg_superedge *dyn_cast_cfg_superedge () FINAL OVERRIDE { return this; }
!   const cfg_superedge *dyn_cast_cfg_superedge () const FINAL OVERRIDE { return this; }
  
    ::edge get_cfg_edge () const { return m_cfg_edge; }
    int get_flags () const { return m_cfg_edge->flags; }
--- 517,525 ----
      m_cfg_edge (e)
    {}
  
!   void dump_label_to_pp (pretty_printer *pp, bool user_facing) const override;
!   cfg_superedge *dyn_cast_cfg_superedge () final override { return this; }
!   const cfg_superedge *dyn_cast_cfg_superedge () const final override { return this; }
  
    ::edge get_cfg_edge () const { return m_cfg_edge; }
    int get_flags () const { return m_cfg_edge->flags; }
*************** class switch_cfg_superedge : public cfg_
*** 547,559 ****
    switch_cfg_superedge (supernode *src, supernode *dst, ::edge e);
  
    const switch_cfg_superedge *dyn_cast_switch_cfg_superedge () const
!     FINAL OVERRIDE
    {
      return this;
    }
  
    void dump_label_to_pp (pretty_printer *pp, bool user_facing) const
!     FINAL OVERRIDE;
  
    gswitch *get_switch_stmt () const
    {
--- 555,567 ----
    switch_cfg_superedge (supernode *src, supernode *dst, ::edge e);
  
    const switch_cfg_superedge *dyn_cast_switch_cfg_superedge () const
!     final override
    {
      return this;
    }
  
    void dump_label_to_pp (pretty_printer *pp, bool user_facing) const
!     final override;
  
    gswitch *get_switch_stmt () const
    {
*************** class switch_cfg_superedge : public cfg_
*** 562,567 ****
--- 570,577 ----
  
    const vec<tree> &get_case_labels () const { return m_case_labels; }
  
+   bool implicitly_created_default_p () const;
+ 
  private:
    auto_vec<tree> m_case_labels;
  };
*************** class dot_annotator
*** 604,610 ****
    }
  };
  
! extern cgraph_edge *supergraph_call_edge (function *fun, gimple *stmt);
  
  } // namespace ana
  
--- 614,621 ----
    }
  };
  
! extern cgraph_edge *supergraph_call_edge (function *fun, const gimple *stmt);
! extern function *get_ultimate_function_for_cgraph_edge (cgraph_edge *edge);
  
  } // namespace ana
  
diff -Nrcpad gcc-12.2.0/gcc/analyzer/svalue.cc gcc-13.1.0/gcc/analyzer/svalue.cc
*** gcc-12.2.0/gcc/analyzer/svalue.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/svalue.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Symbolic values.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Symbolic values.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 38,59 ****
  #include "target.h"
  #include "fold-const.h"
  #include "tree-pretty-print.h"
- #include "tristate.h"
  #include "bitmap.h"
- #include "selftest.h"
- #include "function.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
- #include "options.h"
- #include "cgraph.h"
- #include "cfg.h"
- #include "digraph.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/svalue.h"
  #include "analyzer/region-model.h"
  
  #if ENABLE_ANALYZER
  
--- 39,54 ----
  #include "target.h"
  #include "fold-const.h"
  #include "tree-pretty-print.h"
  #include "bitmap.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/call-string.h"
  #include "analyzer/program-point.h"
  #include "analyzer/store.h"
  #include "analyzer/svalue.h"
  #include "analyzer/region-model.h"
+ #include "diagnostic.h"
+ #include "tree-diagnostic.h"
  
  #if ENABLE_ANALYZER
  
*************** json::value *
*** 96,103 ****
  svalue::to_json () const
  {
    label_text desc = get_desc (true);
!   json::value *sval_js = new json::string (desc.m_buffer);
!   desc.maybe_free ();
    return sval_js;
  }
  
--- 91,97 ----
  svalue::to_json () const
  {
    label_text desc = get_desc (true);
!   json::value *sval_js = new json::string (desc.get ());
    return sval_js;
  }
  
*************** svalue::can_merge_p (const svalue *other
*** 208,214 ****
    if (maybe_get_constant () && other->maybe_get_constant ())
      {
        return mgr->get_or_create_widening_svalue (other->get_type (),
! 						 merger->m_point,
  						 other, this);
      }
  
--- 202,208 ----
    if (maybe_get_constant () && other->maybe_get_constant ())
      {
        return mgr->get_or_create_widening_svalue (other->get_type (),
! 						 merger->get_function_point (),
  						 other, this);
      }
  
*************** svalue::can_merge_p (const svalue *other
*** 221,227 ****
  	&& binop_sval->get_arg1 ()->get_kind () == SK_CONSTANT
  	&& other->get_kind () != SK_WIDENING)
        return mgr->get_or_create_widening_svalue (other->get_type (),
! 						 merger->m_point,
  						 other, this);
  
    /* Merge: (Widen(existing_val, V), existing_val) -> Widen (existing_val, V)
--- 215,221 ----
  	&& binop_sval->get_arg1 ()->get_kind () == SK_CONSTANT
  	&& other->get_kind () != SK_WIDENING)
        return mgr->get_or_create_widening_svalue (other->get_type (),
! 						 merger->get_function_point (),
  						 other, this);
  
    /* Merge: (Widen(existing_val, V), existing_val) -> Widen (existing_val, V)
*************** public:
*** 600,612 ****
    involvement_visitor (const svalue *needle)
    : m_needle (needle), m_found (false) {}
  
!   void visit_initial_svalue (const initial_svalue *candidate)
    {
      if (candidate == m_needle)
        m_found = true;
    }
  
!   void visit_conjured_svalue (const conjured_svalue *candidate)
    {
      if (candidate == m_needle)
        m_found = true;
--- 594,606 ----
    involvement_visitor (const svalue *needle)
    : m_needle (needle), m_found (false) {}
  
!   void visit_initial_svalue (const initial_svalue *candidate) final override
    {
      if (candidate == m_needle)
        m_found = true;
    }
  
!   void visit_conjured_svalue (const conjured_svalue *candidate) final override
    {
      if (candidate == m_needle)
        m_found = true;
*************** region_svalue::dump_to_pp (pretty_printe
*** 732,739 ****
  void
  region_svalue::accept (visitor *v) const
  {
-   v->visit_region_svalue (this);
    m_reg->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for region_svalue.  */
--- 726,733 ----
  void
  region_svalue::accept (visitor *v) const
  {
    m_reg->accept (v);
+   v->visit_region_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for region_svalue.  */
*************** constant_svalue::eval_condition (const c
*** 875,881 ****
  
  const svalue *
  constant_svalue::maybe_fold_bits_within (tree type,
! 					 const bit_range &,
  					 region_model_manager *mgr) const
  {
    /* Bits within an all-zero value are also all zero.  */
--- 869,875 ----
  
  const svalue *
  constant_svalue::maybe_fold_bits_within (tree type,
! 					 const bit_range &bits,
  					 region_model_manager *mgr) const
  {
    /* Bits within an all-zero value are also all zero.  */
*************** constant_svalue::maybe_fold_bits_within
*** 886,891 ****
--- 880,901 ----
        else
  	return this;
      }
+ 
+   /* Handle the case of extracting a single bit. */
+   if (bits.m_size_in_bits == 1
+       && TREE_CODE (m_cst_expr) == INTEGER_CST
+       && type
+       && INTEGRAL_TYPE_P (type)
+       && tree_fits_uhwi_p (m_cst_expr))
+     {
+       unsigned HOST_WIDE_INT bit = bits.m_start_bit_offset.to_uhwi ();
+       unsigned HOST_WIDE_INT mask = (1 << bit);
+       unsigned HOST_WIDE_INT val_as_hwi = tree_to_uhwi (m_cst_expr);
+       unsigned HOST_WIDE_INT masked_val = val_as_hwi & mask;
+       int result = masked_val ? 1 : 0;
+       return mgr->get_or_create_int_cst (type, result);
+     }
+ 
    /* Otherwise, don't fold.  */
    return NULL;
  }
*************** initial_svalue::dump_to_pp (pretty_print
*** 1031,1038 ****
  void
  initial_svalue::accept (visitor *v) const
  {
-   v->visit_initial_svalue (this);
    m_reg->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for initial_svalue.  */
--- 1041,1048 ----
  void
  initial_svalue::accept (visitor *v) const
  {
    m_reg->accept (v);
+   v->visit_initial_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for initial_svalue.  */
*************** unaryop_svalue::dump_to_pp (pretty_print
*** 1123,1130 ****
  void
  unaryop_svalue::accept (visitor *v) const
  {
-   v->visit_unaryop_svalue (this);
    m_arg->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for unaryop_svalue.  */
--- 1133,1140 ----
  void
  unaryop_svalue::accept (visitor *v) const
  {
    m_arg->accept (v);
+   v->visit_unaryop_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for unaryop_svalue.  */
*************** binop_svalue::dump_to_pp (pretty_printer
*** 1225,1233 ****
  void
  binop_svalue::accept (visitor *v) const
  {
-   v->visit_binop_svalue (this);
    m_arg0->accept (v);
    m_arg1->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for binop_svalue.  */
--- 1235,1243 ----
  void
  binop_svalue::accept (visitor *v) const
  {
    m_arg0->accept (v);
    m_arg1->accept (v);
+   v->visit_binop_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for binop_svalue.  */
*************** sub_svalue::dump_to_pp (pretty_printer *
*** 1283,1291 ****
  void
  sub_svalue::accept (visitor *v) const
  {
-   v->visit_sub_svalue (this);
    m_parent_svalue->accept (v);
    m_subregion->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for sub_svalue.  */
--- 1293,1301 ----
  void
  sub_svalue::accept (visitor *v) const
  {
    m_parent_svalue->accept (v);
    m_subregion->accept (v);
+   v->visit_sub_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for sub_svalue.  */
*************** repeated_svalue::dump_to_pp (pretty_prin
*** 1352,1359 ****
  void
  repeated_svalue::accept (visitor *v) const
  {
-   v->visit_repeated_svalue (this);
    m_inner_svalue->accept (v);
  }
  
  /* Implementation of svalue::all_zeroes_p for repeated_svalue.  */
--- 1362,1369 ----
  void
  repeated_svalue::accept (visitor *v) const
  {
    m_inner_svalue->accept (v);
+   v->visit_repeated_svalue (this);
  }
  
  /* Implementation of svalue::all_zeroes_p for repeated_svalue.  */
*************** bits_within_svalue::maybe_fold_bits_with
*** 1494,1501 ****
  void
  bits_within_svalue::accept (visitor *v) const
  {
-   v->visit_bits_within_svalue (this);
    m_inner_svalue->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for bits_within_svalue.  */
--- 1504,1511 ----
  void
  bits_within_svalue::accept (visitor *v) const
  {
    m_inner_svalue->accept (v);
+   v->visit_bits_within_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for bits_within_svalue.  */
*************** widening_svalue::dump_to_pp (pretty_prin
*** 1544,1552 ****
  void
  widening_svalue::accept (visitor *v) const
  {
-   v->visit_widening_svalue (this);
    m_base_sval->accept (v);
    m_iter_sval->accept (v);
  }
  
  /* Attempt to determine in which direction this value is changing
--- 1554,1562 ----
  void
  widening_svalue::accept (visitor *v) const
  {
    m_base_sval->accept (v);
    m_iter_sval->accept (v);
+   v->visit_widening_svalue (this);
  }
  
  /* Attempt to determine in which direction this value is changing
*************** unmergeable_svalue::dump_to_pp (pretty_p
*** 1711,1718 ****
  void
  unmergeable_svalue::accept (visitor *v) const
  {
-   v->visit_unmergeable_svalue (this);
    m_arg->accept (v);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for unmergeable_svalue.  */
--- 1721,1728 ----
  void
  unmergeable_svalue::accept (visitor *v) const
  {
    m_arg->accept (v);
+   v->visit_unmergeable_svalue (this);
  }
  
  /* Implementation of svalue::implicitly_live_p vfunc for unmergeable_svalue.  */
*************** unmergeable_svalue::implicitly_live_p (c
*** 1729,1741 ****
  compound_svalue::compound_svalue (tree type, const binding_map &map)
  : svalue (calc_complexity (map), type), m_map (map)
  {
-   /* All keys within the underlying binding_map are required to be concrete,
-      not symbolic.  */
  #if CHECKING_P
    for (iterator_t iter = begin (); iter != end (); ++iter)
      {
        const binding_key *key = (*iter).first;
        gcc_assert (key->concrete_p ());
      }
  #endif
  }
--- 1739,1755 ----
  compound_svalue::compound_svalue (tree type, const binding_map &map)
  : svalue (calc_complexity (map), type), m_map (map)
  {
  #if CHECKING_P
    for (iterator_t iter = begin (); iter != end (); ++iter)
      {
+       /* All keys within the underlying binding_map are required to be concrete,
+ 	 not symbolic.  */
        const binding_key *key = (*iter).first;
        gcc_assert (key->concrete_p ());
+ 
+       /* We don't nest compound svalues.  */
+       const svalue *sval = (*iter).second;
+       gcc_assert (sval->get_kind () != SK_COMPOUND);
      }
  #endif
  }
*************** compound_svalue::dump_to_pp (pretty_prin
*** 1776,1788 ****
  void
  compound_svalue::accept (visitor *v) const
  {
-   v->visit_compound_svalue (this);
    for (binding_map::iterator_t iter = m_map.begin ();
         iter != m_map.end (); ++iter)
      {
        //(*iter).first.accept (v);
        (*iter).second->accept (v);
      }
  }
  
  /* Calculate what the complexity of a compound_svalue instance for MAP
--- 1790,1802 ----
  void
  compound_svalue::accept (visitor *v) const
  {
    for (binding_map::iterator_t iter = m_map.begin ();
         iter != m_map.end (); ++iter)
      {
        //(*iter).first.accept (v);
        (*iter).second->accept (v);
      }
+   v->visit_compound_svalue (this);
  }
  
  /* Calculate what the complexity of a compound_svalue instance for MAP
*************** conjured_svalue::dump_to_pp (pretty_prin
*** 1903,1910 ****
  void
  conjured_svalue::accept (visitor *v) const
  {
-   v->visit_conjured_svalue (this);
    m_id_reg->accept (v);
  }
  
  /* class asm_output_svalue : public svalue.  */
--- 1917,1924 ----
  void
  conjured_svalue::accept (visitor *v) const
  {
    m_id_reg->accept (v);
+   v->visit_conjured_svalue (this);
  }
  
  /* class asm_output_svalue : public svalue.  */
*************** asm_output_svalue::input_idx_to_asm_idx
*** 1968,1976 ****
  void
  asm_output_svalue::accept (visitor *v) const
  {
-   v->visit_asm_output_svalue (this);
    for (unsigned i = 0; i < m_num_inputs; i++)
      m_input_arr[i]->accept (v);
  }
  
  /* class const_fn_result_svalue : public svalue.  */
--- 1982,1990 ----
  void
  asm_output_svalue::accept (visitor *v) const
  {
    for (unsigned i = 0; i < m_num_inputs; i++)
      m_input_arr[i]->accept (v);
+   v->visit_asm_output_svalue (this);
  }
  
  /* class const_fn_result_svalue : public svalue.  */
*************** const_fn_result_svalue::dump_input (pret
*** 2021,2029 ****
  void
  const_fn_result_svalue::accept (visitor *v) const
  {
-   v->visit_const_fn_result_svalue (this);
    for (unsigned i = 0; i < m_num_inputs; i++)
      m_input_arr[i]->accept (v);
  }
  
  } // namespace ana
--- 2035,2043 ----
  void
  const_fn_result_svalue::accept (visitor *v) const
  {
    for (unsigned i = 0; i < m_num_inputs; i++)
      m_input_arr[i]->accept (v);
+   v->visit_const_fn_result_svalue (this);
  }
  
  } // namespace ana
diff -Nrcpad gcc-12.2.0/gcc/analyzer/svalue.h gcc-13.1.0/gcc/analyzer/svalue.h
*** gcc-12.2.0/gcc/analyzer/svalue.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/svalue.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Symbolic values.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Symbolic values.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 22,27 ****
--- 22,29 ----
  #define GCC_ANALYZER_SVALUE_H
  
  #include "analyzer/complexity.h"
+ #include "analyzer/store.h"
+ #include "analyzer/program-point.h"
  
  using namespace ana;
  
*************** public:
*** 229,242 ****
      gcc_assert (m_reg != NULL);
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_REGION; }
    const region_svalue *
!   dyn_cast_region_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    const region * get_pointee () const { return m_reg; }
  
--- 231,244 ----
      gcc_assert (m_reg != NULL);
    }
  
!   enum svalue_kind get_kind () const final override { return SK_REGION; }
    const region_svalue *
!   dyn_cast_region_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    const region * get_pointee () const { return m_reg; }
  
*************** public:
*** 278,291 ****
      gcc_assert (CONSTANT_CLASS_P (cst_expr));
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_CONSTANT; }
    const constant_svalue *
!   dyn_cast_constant_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    tree get_constant () const { return m_cst_expr; }
    static tristate eval_condition (const constant_svalue *lhs,
--- 280,293 ----
      gcc_assert (CONSTANT_CLASS_P (cst_expr));
    }
  
!   enum svalue_kind get_kind () const final override { return SK_CONSTANT; }
    const constant_svalue *
!   dyn_cast_constant_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    tree get_constant () const { return m_cst_expr; }
    static tristate eval_condition (const constant_svalue *lhs,
*************** public:
*** 295,303 ****
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
!   bool all_zeroes_p () const FINAL OVERRIDE;
  
   private:
    tree m_cst_expr;
--- 297,305 ----
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
!   bool all_zeroes_p () const final override;
  
   private:
    tree m_cst_expr;
*************** public:
*** 327,344 ****
    : svalue (complexity (1, 1), type)
    {}
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNKNOWN; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
    /* Unknown values are singletons per-type, so can't have state.  */
!   bool can_have_associated_state_p () const FINAL OVERRIDE { return false; }
  };
  
  /* An enum describing a particular kind of "poisoned" value.  */
--- 329,346 ----
    : svalue (complexity (1, 1), type)
    {}
  
!   enum svalue_kind get_kind () const final override { return SK_UNKNOWN; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
    /* Unknown values are singletons per-type, so can't have state.  */
!   bool can_have_associated_state_p () const final override { return false; }
  };
  
  /* An enum describing a particular kind of "poisoned" value.  */
*************** public:
*** 395,416 ****
    poisoned_svalue (enum poison_kind kind, tree type)
    : svalue (complexity (1, 1), type), m_kind (kind) {}
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_POISONED; }
    const poisoned_svalue *
!   dyn_cast_poisoned_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
    enum poison_kind get_poison_kind () const { return m_kind; }
  
    /* Poisoned svalues are singletons per-type, so can't have state.  */
!   bool can_have_associated_state_p () const FINAL OVERRIDE { return false; }
  
   private:
    enum poison_kind m_kind;
--- 397,418 ----
    poisoned_svalue (enum poison_kind kind, tree type)
    : svalue (complexity (1, 1), type), m_kind (kind) {}
  
!   enum svalue_kind get_kind () const final override { return SK_POISONED; }
    const poisoned_svalue *
!   dyn_cast_poisoned_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
    enum poison_kind get_poison_kind () const { return m_kind; }
  
    /* Poisoned svalues are singletons per-type, so can't have state.  */
!   bool can_have_associated_state_p () const final override { return false; }
  
   private:
    enum poison_kind m_kind;
*************** public:
*** 504,515 ****
    : svalue (complexity (1, 1), type), m_setjmp_record (setjmp_record)
    {}
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_SETJMP; }
    const setjmp_svalue *
!   dyn_cast_setjmp_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    int get_enode_index () const;
  
--- 506,517 ----
    : svalue (complexity (1, 1), type), m_setjmp_record (setjmp_record)
    {}
  
!   enum svalue_kind get_kind () const final override { return SK_SETJMP; }
    const setjmp_svalue *
!   dyn_cast_setjmp_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    int get_enode_index () const;
  
*************** public:
*** 554,567 ****
      gcc_assert (m_reg != NULL);
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_INITIAL; }
    const initial_svalue *
!   dyn_cast_initial_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    bool initial_value_of_param_p () const;
  
--- 556,569 ----
      gcc_assert (m_reg != NULL);
    }
  
!   enum svalue_kind get_kind () const final override { return SK_INITIAL; }
    const initial_svalue *
!   dyn_cast_initial_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    bool initial_value_of_param_p () const;
  
*************** public:
*** 628,641 ****
      gcc_assert (arg->can_have_associated_state_p ());
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNARYOP; }
    const unaryop_svalue *
!   dyn_cast_unaryop_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    enum tree_code get_op () const { return m_op; }
    const svalue *get_arg () const { return m_arg; }
--- 630,643 ----
      gcc_assert (arg->can_have_associated_state_p ());
    }
  
!   enum svalue_kind get_kind () const final override { return SK_UNARYOP; }
    const unaryop_svalue *
!   dyn_cast_unaryop_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    enum tree_code get_op () const { return m_op; }
    const svalue *get_arg () const { return m_arg; }
*************** public:
*** 643,649 ****
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
   private:
    enum tree_code m_op;
--- 645,651 ----
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
   private:
    enum tree_code m_op;
*************** public:
*** 722,737 ****
      gcc_assert (arg1->can_have_associated_state_p ());
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_BINOP; }
!   const binop_svalue *dyn_cast_binop_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    enum tree_code get_op () const { return m_op; }
    const svalue *get_arg0 () const { return m_arg0; }
--- 724,739 ----
      gcc_assert (arg1->can_have_associated_state_p ());
    }
  
!   enum svalue_kind get_kind () const final override { return SK_BINOP; }
!   const binop_svalue *dyn_cast_binop_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    enum tree_code get_op () const { return m_op; }
    const svalue *get_arg0 () const { return m_arg0; }
*************** public:
*** 803,818 ****
    sub_svalue (tree type, const svalue *parent_svalue,
  	       const region *subregion);
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_SUB; }
!   const sub_svalue *dyn_cast_sub_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    const svalue *get_parent () const { return m_parent_svalue; }
    const region *get_subregion () const { return m_subregion; }
--- 805,820 ----
    sub_svalue (tree type, const svalue *parent_svalue,
  	       const region *subregion);
  
!   enum svalue_kind get_kind () const final override { return SK_SUB; }
!   const sub_svalue *dyn_cast_sub_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    const svalue *get_parent () const { return m_parent_svalue; }
    const region *get_subregion () const { return m_subregion; }
*************** public:
*** 885,908 ****
  		   const svalue *outer_size,
  		   const svalue *inner_svalue);
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_REPEATED; }
!   const repeated_svalue *dyn_cast_repeated_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const svalue *get_outer_size () const { return m_outer_size; }
    const svalue *get_inner_svalue () const { return m_inner_svalue; }
  
!   bool all_zeroes_p () const FINAL OVERRIDE;
  
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
   private:
    const svalue *m_outer_size;
--- 887,910 ----
  		   const svalue *outer_size,
  		   const svalue *inner_svalue);
  
!   enum svalue_kind get_kind () const final override { return SK_REPEATED; }
!   const repeated_svalue *dyn_cast_repeated_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const svalue *get_outer_size () const { return m_outer_size; }
    const svalue *get_inner_svalue () const { return m_inner_svalue; }
  
!   bool all_zeroes_p () const final override;
  
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
   private:
    const svalue *m_outer_size;
*************** public:
*** 972,988 ****
  		      const bit_range &bits,
  		      const svalue *inner_svalue);
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_BITS_WITHIN; }
    const bits_within_svalue *
!   dyn_cast_bits_within_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    const bit_range &get_bits () const { return m_bits; }
    const svalue *get_inner_svalue () const { return m_inner_svalue; }
--- 974,990 ----
  		      const bit_range &bits,
  		      const svalue *inner_svalue);
  
!   enum svalue_kind get_kind () const final override { return SK_BITS_WITHIN; }
    const bits_within_svalue *
!   dyn_cast_bits_within_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    const bit_range &get_bits () const { return m_bits; }
    const svalue *get_inner_svalue () const { return m_inner_svalue; }
*************** public:
*** 990,996 ****
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
   private:
    const bit_range m_bits;
--- 992,998 ----
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
   private:
    const bit_range m_bits;
*************** public:
*** 1034,1047 ****
    {
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_UNMERGEABLE; }
    const unmergeable_svalue *
!   dyn_cast_unmergeable_svalue () const FINAL OVERRIDE { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const FINAL OVERRIDE;
  
    const svalue *get_arg () const { return m_arg; }
  
--- 1036,1049 ----
    {
    }
  
!   enum svalue_kind get_kind () const final override { return SK_UNMERGEABLE; }
    const unmergeable_svalue *
!   dyn_cast_unmergeable_svalue () const final override { return this; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
    bool implicitly_live_p (const svalue_set *,
! 			  const region_model *) const final override;
  
    const svalue *get_arg () const { return m_arg; }
  
*************** public:
*** 1074,1083 ****
    {
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_PLACEHOLDER; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const char *get_name () const { return m_name; }
  
--- 1076,1085 ----
    {
    }
  
!   enum svalue_kind get_kind () const final override { return SK_PLACEHOLDER; }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const char *get_name () const { return m_name; }
  
*************** public:
*** 1113,1121 ****
    /* A support class for uniquifying instances of widening_svalue.  */
    struct key_t
    {
!     key_t (tree type, const program_point &point,
  	   const svalue *base_sval, const svalue *iter_sval)
!     : m_type (type), m_point (point.get_function_point ()),
        m_base_sval (base_sval), m_iter_sval (iter_sval)
      {}
  
--- 1115,1123 ----
    /* A support class for uniquifying instances of widening_svalue.  */
    struct key_t
    {
!     key_t (tree type, const function_point &point,
  	   const svalue *base_sval, const svalue *iter_sval)
!     : m_type (type), m_point (point),
        m_base_sval (base_sval), m_iter_sval (iter_sval)
      {}
  
*************** public:
*** 1153,1178 ****
       DIR_UNKNOWN
      };
  
!   widening_svalue (tree type, const program_point &point,
  		   const svalue *base_sval, const svalue *iter_sval)
    : svalue (complexity::from_pair (base_sval->get_complexity (),
  				   iter_sval->get_complexity ()),
  	    type),
!     m_point (point.get_function_point ()),
      m_base_sval (base_sval), m_iter_sval (iter_sval)
    {
      gcc_assert (base_sval->can_have_associated_state_p ());
      gcc_assert (iter_sval->can_have_associated_state_p ());
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_WIDENING; }
!   const widening_svalue *dyn_cast_widening_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const function_point &get_point () const { return m_point; }
    const svalue *get_base_svalue () const { return m_base_sval; }
--- 1155,1180 ----
       DIR_UNKNOWN
      };
  
!   widening_svalue (tree type, const function_point &point,
  		   const svalue *base_sval, const svalue *iter_sval)
    : svalue (complexity::from_pair (base_sval->get_complexity (),
  				   iter_sval->get_complexity ()),
  	    type),
!     m_point (point),
      m_base_sval (base_sval), m_iter_sval (iter_sval)
    {
      gcc_assert (base_sval->can_have_associated_state_p ());
      gcc_assert (iter_sval->can_have_associated_state_p ());
    }
  
!   enum svalue_kind get_kind () const final override { return SK_WIDENING; }
!   const widening_svalue *dyn_cast_widening_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const function_point &get_point () const { return m_point; }
    const svalue *get_base_svalue () const { return m_base_sval; }
*************** public:
*** 1260,1273 ****
  
    compound_svalue (tree type, const binding_map &map);
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_COMPOUND; }
!   const compound_svalue *dyn_cast_compound_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const binding_map &get_map () const { return m_map; }
  
--- 1262,1275 ----
  
    compound_svalue (tree type, const binding_map &map);
  
!   enum svalue_kind get_kind () const final override { return SK_COMPOUND; }
!   const compound_svalue *dyn_cast_compound_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const binding_map &get_map () const { return m_map; }
  
*************** public:
*** 1282,1288 ****
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const FINAL OVERRIDE;
  
   private:
    static complexity calc_complexity (const binding_map &map);
--- 1284,1290 ----
    const svalue *
    maybe_fold_bits_within (tree type,
  			  const bit_range &subrange,
! 			  region_model_manager *mgr) const final override;
  
   private:
    static complexity calc_complexity (const binding_map &map);
*************** public:
*** 1394,1407 ****
      gcc_assert (m_stmt != NULL);
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_CONJURED; }
!   const conjured_svalue *dyn_cast_conjured_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const gimple *get_stmt () const { return m_stmt; }
    const region *get_id_region () const { return m_id_reg; }
--- 1396,1409 ----
      gcc_assert (m_stmt != NULL);
    }
  
!   enum svalue_kind get_kind () const final override { return SK_CONJURED; }
!   const conjured_svalue *dyn_cast_conjured_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const gimple *get_stmt () const { return m_stmt; }
    const region *get_id_region () const { return m_id_reg; }
*************** public:
*** 1515,1532 ****
        m_input_arr[i] = inputs[i];
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE { return SK_ASM_OUTPUT; }
    const asm_output_svalue *
!   dyn_cast_asm_output_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    const char *get_asm_string () const { return m_asm_string; }
    unsigned get_output_idx () const { return m_output_idx; }
    unsigned get_num_inputs () const { return m_num_inputs; }
    const svalue *get_input (unsigned idx) const { return m_input_arr[idx]; }
  
--- 1517,1535 ----
        m_input_arr[i] = inputs[i];
    }
  
!   enum svalue_kind get_kind () const final override { return SK_ASM_OUTPUT; }
    const asm_output_svalue *
!   dyn_cast_asm_output_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    const char *get_asm_string () const { return m_asm_string; }
    unsigned get_output_idx () const { return m_output_idx; }
+   unsigned get_num_outputs () const { return m_num_outputs; }
    unsigned get_num_inputs () const { return m_num_inputs; }
    const svalue *get_input (unsigned idx) const { return m_input_arr[idx]; }
  
*************** public:
*** 1643,1660 ****
        m_input_arr[i] = inputs[i];
    }
  
!   enum svalue_kind get_kind () const FINAL OVERRIDE
    {
      return SK_CONST_FN_RESULT;
    }
    const const_fn_result_svalue *
!   dyn_cast_const_fn_result_svalue () const FINAL OVERRIDE
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const FINAL OVERRIDE;
!   void accept (visitor *v) const FINAL OVERRIDE;
  
    tree get_fndecl () const { return m_fndecl; }
    unsigned get_num_inputs () const { return m_num_inputs; }
--- 1646,1663 ----
        m_input_arr[i] = inputs[i];
    }
  
!   enum svalue_kind get_kind () const final override
    {
      return SK_CONST_FN_RESULT;
    }
    const const_fn_result_svalue *
!   dyn_cast_const_fn_result_svalue () const final override
    {
      return this;
    }
  
!   void dump_to_pp (pretty_printer *pp, bool simple) const final override;
!   void accept (visitor *v) const final override;
  
    tree get_fndecl () const { return m_fndecl; }
    unsigned get_num_inputs () const { return m_num_inputs; }
diff -Nrcpad gcc-12.2.0/gcc/analyzer/trimmed-graph.cc gcc-13.1.0/gcc/analyzer/trimmed-graph.cc
*** gcc-12.2.0/gcc/analyzer/trimmed-graph.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/trimmed-graph.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Trimming an exploded graph to a subset of nodes and edges.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Trimming an exploded graph to a subset of nodes and edges.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 19,24 ****
--- 19,25 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include "config.h"
+ #define INCLUDE_MEMORY
  #include "system.h"
  #include "coretypes.h"
  #include "tree.h"
*************** along with GCC; see the file COPYING3.
*** 29,43 ****
  #include "diagnostic-core.h"
  #include "diagnostic-event-id.h"
  #include "diagnostic-path.h"
- #include "alloc-pool.h"
- #include "fibonacci_heap.h"
- #include "shortest-paths.h"
- #include "sbitmap.h"
  #include "bitmap.h"
- #include "tristate.h"
- #include "selftest.h"
  #include "ordered-hash-map.h"
- #include "json.h"
  #include "analyzer/analyzer.h"
  #include "analyzer/analyzer-logging.h"
  #include "analyzer/sm.h"
--- 30,37 ----
*************** along with GCC; see the file COPYING3.
*** 48,59 ****
  #include "analyzer/store.h"
  #include "analyzer/region-model.h"
  #include "analyzer/constraint-manager.h"
- #include "cfg.h"
- #include "basic-block.h"
- #include "gimple.h"
- #include "gimple-iterator.h"
- #include "cgraph.h"
- #include "digraph.h"
  #include "analyzer/supergraph.h"
  #include "analyzer/program-state.h"
  #include "analyzer/exploded-graph.h"
--- 42,47 ----
diff -Nrcpad gcc-12.2.0/gcc/analyzer/trimmed-graph.h gcc-13.1.0/gcc/analyzer/trimmed-graph.h
*** gcc-12.2.0/gcc/analyzer/trimmed-graph.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/analyzer/trimmed-graph.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Trimming an exploded graph to a subset of nodes and edges.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Trimming an exploded graph to a subset of nodes and edges.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by David Malcolm <dmalcolm@redhat.com>.
  
  This file is part of GCC.
*************** public:
*** 61,67 ****
    : m_inner_node (inner_node) {}
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const FINAL OVERRIDE;
  
  private:
    const exploded_node *m_inner_node;
--- 61,67 ----
    : m_inner_node (inner_node) {}
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const final override;
  
  private:
    const exploded_node *m_inner_node;
*************** class trimmed_edge : public dedge<tg_tra
*** 77,83 ****
  		const exploded_edge *inner_edge);
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const FINAL OVERRIDE;
  
   private:
    const exploded_edge *m_inner_edge;
--- 77,83 ----
  		const exploded_edge *inner_edge);
  
    void dump_dot (graphviz_out *gv,
! 		 const dump_args_t &args) const final override;
  
   private:
    const exploded_edge *m_inner_edge;
diff -Nrcpad gcc-12.2.0/gcc/analyzer/varargs.cc gcc-13.1.0/gcc/analyzer/varargs.cc
*** gcc-12.2.0/gcc/analyzer/varargs.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/varargs.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,1108 ----
+ /* Implementation of <stdarg.h> within analyzer.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #define INCLUDE_MEMORY
+ #include "system.h"
+ #include "coretypes.h"
+ #include "make-unique.h"
+ #include "tree.h"
+ #include "function.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "diagnostic-path.h"
+ #include "analyzer/analyzer.h"
+ #include "analyzer/analyzer-logging.h"
+ #include "analyzer/sm.h"
+ #include "analyzer/pending-diagnostic.h"
+ #include "analyzer/call-string.h"
+ #include "analyzer/program-point.h"
+ #include "analyzer/store.h"
+ #include "analyzer/region-model.h"
+ #include "analyzer/program-state.h"
+ #include "analyzer/checker-path.h"
+ #include "analyzer/supergraph.h"
+ #include "analyzer/diagnostic-manager.h"
+ #include "analyzer/exploded-graph.h"
+ #include "diagnostic-metadata.h"
+ #include "analyzer/call-details.h"
+ 
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Implementation of <stdarg.h> within analyzer.
+ 
+    Objectives:
+    - detection of interprocedural type errors involving va_arg
+    - tracking of symbolic values interprocedurally from variadic call
+      through to va_arg unpacking
+    - detection of missing va_end
+    - detection of va_arg outside of a va_start/va_end pair
+    - detection of uses of a va_list after the frame in containing the
+      va_start has returned
+ 
+    The analyzer runs *before* the "stdarg" and "lower_vaarg" gimple
+    passes, which have target-dependent effects.
+ 
+    This file implements a state machine on svalues for tracking when
+    va_start has been called, so that we can detect missing va_end,
+    and misplaced va_arg, etc.
+    To do this requires an svalue that can have state, so we implement va_start
+    by creating a stack-allocated region, and use a pointer to that region
+    as the svalue that has state.
+ 
+    We call this stack-allocated region the "impl_reg".  Allocating it on
+    the stack ensures that it is invalidated when the frame containing
+    the va_start returns, leading to
+    -Wanalyzer-use-of-pointer-in-stale-stack-frame on attempts to use such
+    a va_list.
+ 
+    To track svalues from variadic calls interprocedurally, we implement
+    variadic arguments via new child regions of the callee's frame_region,
+    var_arg_region, each one representing a storage slot for one of the
+    variadic arguments, accessed by index.
+ 
+    We have:
+ 
+     stack frame:
+       va_list: &impl_reg
+       'impl_reg': pointer to next var_arg_region
+       var_arg_region for arg 0
+       ...
+       var_arg_region for arg N-1
+ 
+    Hence given test_1 in stdarg-1.c, at the call to:
+ 
+      __analyzer_called_by_test_1 (int placeholder, ...);
+ 
+    here:
+ 
+      __analyzer_called_by_test_1 (42, "foo", 1066, '@');
+ 
+    we push this frame for the called function:
+      clusters within frame: ‘__analyzer_called_by_test_1’@2
+        cluster for: placeholder: (int)42
+        cluster for: VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 0): &"foo" (TOUCHED)
+        cluster for: VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 1): (int)1066 (TOUCHED)
+        cluster for: VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 2): (int)64 (TOUCHED)
+    where the called function's frame has been populated with both the value
+    of the regular argument "placeholder", and with values for 3 variadic
+    arguments.
+ 
+    At the call to
+       va_start (ap, placeholder);
+    we allocate a region ALLOCA_REGION for ap to point to, populate that
+    region with the address of variadic argument 0, and set sm-state of
+    &ALLOCA_REGION to "started":
+     clusters within frame: ‘__analyzer_called_by_test_1’@2
+       cluster for: placeholder: (int)42
+       cluster for: VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 0): &"foo" (TOUCHED)
+       cluster for: VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 1): (int)1066 (TOUCHED)
+       cluster for: VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 2): (int)64 (TOUCHED)
+       cluster for: ap: &ALLOCA_REGION
+       cluster for: ALLOCA_REGION: &VAR_ARG_REG(frame: ‘__analyzer_called_by_test_1’@2, arg_idx: 0) (TOUCHED)
+     va_list:
+       0x4c83700: &ALLOCA_REGION: started
+ 
+    At each call to
+      va_arg (ap, TYPE);
+    we can look within *ap, locate the region holding the next variadic
+    argument to be extracted, extract the svalue, and advance the index
+    by effectively updating *ap.
+ 
+    At the va_end, we can set &ALLOCA_REGION's state to "ended".
+ 
+    The various __builtin_va_* accept ap by pointer, so we have e.g.:
+ 
+      __builtin_va_start (&ap, [...]);
+ 
+    except for the 2nd param of __builtin_va_copy, where the type
+    is already target-dependent (see the discussion of get_va_copy_arg
+    below).  */
+ 
+ /* Get a tree for diagnostics.
+    Typically we have "&ap", but it will make more sense to
+    the user as just "ap", so strip off the ADDR_EXPR.  */
+ 
+ static tree
+ get_va_list_diag_arg (tree va_list_tree)
+ {
+   if (TREE_CODE (va_list_tree) == ADDR_EXPR)
+     va_list_tree = TREE_OPERAND (va_list_tree, 0);
+   return va_list_tree;
+ }
+ 
+ /* Get argument ARG_IDX of va_copy.
+ 
+    builtin-types.def has:
+      DEF_PRIMITIVE_TYPE (BT_VALIST_ARG, va_list_arg_type_node)
+ 
+    and c_common_nodes_and_builtins initializes va_list_arg_type_node
+    based on whether TREE_CODE (va_list_type_node) is of ARRAY_TYPE or
+    not, giving either one or zero levels of indirection.
+ 
+    Alternatively we could be dealing with __builtin_ms_va_copy or
+    __builtin_sysv_va_copy.
+ 
+    Handle this by looking at the types of the argument in question.  */
+ 
+ static const svalue *
+ get_va_copy_arg (const region_model *model,
+ 		 region_model_context *ctxt,
+ 		 const gcall *call,
+ 		 unsigned arg_idx)
+ {
+   tree arg = gimple_call_arg (call, arg_idx);
+   const svalue *arg_sval = model->get_rvalue (arg, ctxt);
+   if (const svalue *cast = arg_sval->maybe_undo_cast ())
+     arg_sval = cast;
+   if (TREE_CODE (TREE_TYPE (arg)) == POINTER_TYPE
+       && TREE_CODE (TREE_TYPE (TREE_TYPE (arg))) == ARRAY_TYPE)
+     {
+       /* va_list_arg_type_node is a pointer to a va_list;
+ 	 return *ARG_SVAL.  */
+       const region *src_reg = model->deref_rvalue (arg_sval, arg, ctxt);
+       const svalue *src_reg_sval = model->get_store_value (src_reg, ctxt);
+       if (const svalue *cast = src_reg_sval->maybe_undo_cast ())
+ 	src_reg_sval = cast;
+       return src_reg_sval;
+     }
+   else
+     {
+       /* va_list_arg_type_node is a va_list; return ARG_SVAL.  */
+       return arg_sval;
+     }
+ }
+ 
+ namespace {
+ 
+ /* A state machine for tracking the state of a va_list, so that
+    we can enforce that each va_start is paired with a va_end,
+    and va_arg only happens within a va_start/va_end pair.
+    Specifically, this tracks the state of the &ALLOCA_BUFFER
+    that va_start/va_copy allocate.  */
+ 
+ class va_list_state_machine : public state_machine
+ {
+ public:
+   va_list_state_machine (logger *logger);
+ 
+   bool inherited_state_p () const final override { return false; }
+ 
+   bool on_stmt (sm_context *sm_ctxt,
+ 		const supernode *node,
+ 		const gimple *stmt) const final override;
+ 
+   bool can_purge_p (state_t s) const final override
+   {
+     return s != m_started;
+   }
+   std::unique_ptr<pending_diagnostic> on_leak (tree var) const final override;
+ 
+   /* State for a va_list that is the result of a va_start or va_copy.  */
+   state_t m_started;
+ 
+   /* State for a va_list that has had va_end called on it.  */
+   state_t m_ended;
+ 
+ private:
+   void on_va_start (sm_context *sm_ctxt, const supernode *node,
+ 		    const gcall *call) const;
+   void on_va_copy (sm_context *sm_ctxt, const supernode *node,
+ 		   const gcall *call) const;
+   void on_va_arg (sm_context *sm_ctxt, const supernode *node,
+ 		  const gcall *call) const;
+   void on_va_end (sm_context *sm_ctxt, const supernode *node,
+ 		  const gcall *call) const;
+   void check_for_ended_va_list (sm_context *sm_ctxt,
+ 				const supernode *node,
+ 				const gcall *call,
+ 				const svalue *arg,
+ 				const char *usage_fnname) const;
+ };
+ 
+ /* va_list_state_machine's ctor.  */
+ 
+ va_list_state_machine::va_list_state_machine (logger *logger)
+ : state_machine ("va_list", logger)
+ {
+   m_started = add_state ("started");
+   m_ended = add_state ("ended");
+ }
+ 
+ /* Implementation of the various "va_*" functions for
+    va_list_state_machine.  */
+ 
+ bool
+ va_list_state_machine::on_stmt (sm_context *sm_ctxt,
+ 				const supernode *node,
+ 				const gimple *stmt) const
+ {
+   if (const gcall *call = dyn_cast <const gcall *> (stmt))
+     {
+       if (gimple_call_internal_p (call)
+ 	  && gimple_call_internal_fn (call) == IFN_VA_ARG)
+ 	{
+ 	  on_va_arg (sm_ctxt, node, call);
+ 	  return false;
+ 	}
+ 
+       if (tree callee_fndecl = sm_ctxt->get_fndecl_for_call (call))
+ 	if (fndecl_built_in_p (callee_fndecl, BUILT_IN_NORMAL)
+ 	    && gimple_builtin_call_types_compatible_p (call, callee_fndecl))
+ 	  switch (DECL_UNCHECKED_FUNCTION_CODE (callee_fndecl))
+ 	    {
+ 	    default:
+ 	      break;
+ 
+ 	    case BUILT_IN_VA_START:
+ 	      on_va_start (sm_ctxt, node, call);
+ 	      break;
+ 
+ 	    case BUILT_IN_VA_COPY:
+ 	      on_va_copy (sm_ctxt, node, call);
+ 	      break;
+ 
+ 	    case BUILT_IN_VA_END:
+ 	      on_va_end (sm_ctxt, node, call);
+ 	      break;
+ 	    }
+     }
+   return false;
+ }
+ 
+ /* Get the svalue for which va_list_state_machine holds state on argument ARG_
+    IDX to CALL.  */
+ 
+ static const svalue *
+ get_stateful_arg (sm_context *sm_ctxt, const gcall *call, unsigned arg_idx)
+ {
+   tree ap = gimple_call_arg (call, arg_idx);
+   if (ap
+       && POINTER_TYPE_P (TREE_TYPE (ap)))
+     {
+       if (const program_state *new_state = sm_ctxt->get_new_program_state ())
+ 	{
+ 	  const region_model *new_model = new_state->m_region_model;
+ 	  const svalue *ptr_sval = new_model->get_rvalue (ap, NULL);
+ 	  const region *reg = new_model->deref_rvalue (ptr_sval, ap, NULL);
+ 	  const svalue *impl_sval = new_model->get_store_value (reg, NULL);
+ 	  if (const svalue *cast = impl_sval->maybe_undo_cast ())
+ 	    impl_sval = cast;
+ 	  return impl_sval;
+ 	}
+     }
+   return NULL;
+ }
+ 
+ /* Abstract class for diagnostics relating to va_list_state_machine.  */
+ 
+ class va_list_sm_diagnostic : public pending_diagnostic
+ {
+ public:
+   bool subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     const va_list_sm_diagnostic &other
+       = (const va_list_sm_diagnostic &)base_other;
+     return (m_ap_sval == other.m_ap_sval
+ 	    && same_tree_p (m_ap_tree, other.m_ap_tree));
+   }
+ 
+   label_text describe_state_change (const evdesc::state_change &change)
+     override
+   {
+     if (const char *fnname = maybe_get_fnname (change))
+       return change.formatted_print ("%qs called here", fnname);
+     return label_text ();
+   }
+ 
+   diagnostic_event::meaning
+   get_meaning_for_state_change (const evdesc::state_change &change)
+     const final override
+   {
+     if (change.m_new_state == m_sm.m_started)
+       return diagnostic_event::meaning (diagnostic_event::VERB_acquire,
+ 					diagnostic_event::NOUN_resource);
+     if (change.m_new_state == m_sm.m_ended)
+       return diagnostic_event::meaning (diagnostic_event::VERB_release,
+ 					diagnostic_event::NOUN_resource);
+     return diagnostic_event::meaning ();
+   }
+ 
+ protected:
+   va_list_sm_diagnostic (const va_list_state_machine &sm,
+ 			 const svalue *ap_sval, tree ap_tree)
+     : m_sm (sm), m_ap_sval (ap_sval), m_ap_tree (ap_tree)
+   {}
+ 
+   static const char *maybe_get_fnname (const evdesc::state_change &change)
+   {
+     if (change.m_event.m_stmt)
+       if (const gcall *call = as_a <const gcall *> (change.m_event.m_stmt))
+ 	if (tree callee_fndecl = gimple_call_fndecl (call))
+ 	  {
+ 	    if (fndecl_built_in_p (callee_fndecl, BUILT_IN_NORMAL))
+ 	      switch (DECL_UNCHECKED_FUNCTION_CODE (callee_fndecl))
+ 		{
+ 		case BUILT_IN_VA_START:
+ 		  return "va_start";
+ 		case BUILT_IN_VA_COPY:
+ 		  return "va_copy";
+ 		case BUILT_IN_VA_END:
+ 		  return "va_end";
+ 		}
+ 	  }
+     return NULL;
+   }
+ 
+   const va_list_state_machine &m_sm;
+   const svalue *m_ap_sval;
+   tree m_ap_tree;
+ };
+ 
+ /* Concrete class for -Wanalyzer-va-list-use-after-va-end:
+    complain about use of a va_list after va_end has been called on it.  */
+ 
+ class va_list_use_after_va_end : public va_list_sm_diagnostic
+ {
+ public:
+   va_list_use_after_va_end (const va_list_state_machine &sm,
+ 			    const svalue *ap_sval, tree ap_tree,
+ 			    const char *usage_fnname)
+   : va_list_sm_diagnostic (sm, ap_sval, ap_tree),
+     m_usage_fnname (usage_fnname)
+   {
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_va_list_use_after_va_end;
+   }
+ 
+   bool operator== (const va_list_use_after_va_end &other) const
+   {
+     return (va_list_sm_diagnostic::subclass_equal_p (other)
+ 	    && 0 == strcmp (m_usage_fnname, other.m_usage_fnname));
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     auto_diagnostic_group d;
+     return warning_at (rich_loc, get_controlling_option (),
+ 		       "%qs after %qs", m_usage_fnname, "va_end");
+   }
+ 
+   const char *get_kind () const final override
+   {
+     return "va_list_use_after_va_end";
+   }
+ 
+   label_text describe_state_change (const evdesc::state_change &change)
+     final override
+   {
+     if (change.m_new_state == m_sm.m_ended)
+       m_va_end_event = change.m_event_id;
+     return va_list_sm_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (ev.m_expr)
+       {
+ 	if (m_va_end_event.known_p ())
+ 	  return ev.formatted_print
+ 	    ("%qs on %qE after %qs at %@",
+ 	     m_usage_fnname, ev.m_expr, "va_end", &m_va_end_event);
+ 	else
+ 	  return ev.formatted_print
+ 	    ("%qs on %qE after %qs",
+ 	     m_usage_fnname, ev.m_expr, "va_end");
+       }
+     else
+       {
+ 	if (m_va_end_event.known_p ())
+ 	  return ev.formatted_print
+ 	    ("%qs after %qs at %@",
+ 	     m_usage_fnname, "va_end", &m_va_end_event);
+ 	else
+ 	  return ev.formatted_print
+ 	    ("%qs after %qs",
+ 	     m_usage_fnname, "va_end");
+       }
+   }
+ 
+ private:
+   diagnostic_event_id_t m_va_end_event;
+   const char *m_usage_fnname;
+ };
+ 
+ /* Concrete class for -Wanalyzer-va-list-leak:
+    complain about a va_list in the "started" state that doesn't get after
+    va_end called on it.  */
+ 
+ class va_list_leak : public va_list_sm_diagnostic
+ {
+ public:
+   va_list_leak (const va_list_state_machine &sm,
+ 		const svalue *ap_sval, tree ap_tree)
+   : va_list_sm_diagnostic (sm, ap_sval, ap_tree),
+     m_start_event_fnname (NULL)
+   {
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_va_list_leak;
+   }
+ 
+   bool operator== (const va_list_leak &other) const
+   {
+     return va_list_sm_diagnostic::subclass_equal_p (other);
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     auto_diagnostic_group d;
+     return warning_at (rich_loc, get_controlling_option (),
+ 		       "missing call to %qs", "va_end");
+   }
+ 
+   const char *get_kind () const final override { return "va_list_leak"; }
+ 
+   label_text describe_state_change (const evdesc::state_change &change)
+     final override
+   {
+     if (change.m_new_state == m_sm.m_started)
+       {
+ 	m_start_event = change.m_event_id;
+ 	m_start_event_fnname = maybe_get_fnname (change);
+       }
+     return va_list_sm_diagnostic::describe_state_change (change);
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     if (ev.m_expr)
+       {
+ 	if (m_start_event.known_p () && m_start_event_fnname)
+ 	  return ev.formatted_print
+ 	    ("missing call to %qs on %qE to match %qs at %@",
+ 	     "va_end", ev.m_expr, m_start_event_fnname, &m_start_event);
+ 	else
+ 	  return ev.formatted_print
+ 	    ("missing call to %qs on %qE",
+ 	     "va_end", ev.m_expr);
+       }
+     else
+       {
+ 	if (m_start_event.known_p () && m_start_event_fnname)
+ 	  return ev.formatted_print
+ 	    ("missing call to %qs to match %qs at %@",
+ 	     "va_end", m_start_event_fnname, &m_start_event);
+ 	else
+ 	  return ev.formatted_print
+ 	    ("missing call to %qs",
+ 	     "va_end");
+       }
+   }
+ 
+ private:
+   diagnostic_event_id_t m_start_event;
+   const char *m_start_event_fnname;
+ };
+ 
+ /* Update state machine for a "va_start" call.  */
+ 
+ void
+ va_list_state_machine::on_va_start (sm_context *sm_ctxt,
+ 				    const supernode *,
+ 				    const gcall *call) const
+ {
+   const svalue *arg = get_stateful_arg (sm_ctxt, call, 0);
+   if (arg)
+     {
+       /* Transition from start state to "started".  */
+       if (sm_ctxt->get_state (call, arg) == m_start)
+ 	sm_ctxt->set_next_state (call, arg, m_started);
+     }
+ }
+ 
+ /* Complain if ARG is in the "ended" state.  */
+ 
+ void
+ va_list_state_machine::check_for_ended_va_list (sm_context *sm_ctxt,
+ 						const supernode *node,
+ 						const gcall *call,
+ 						const svalue *arg,
+ 						const char *usage_fnname) const
+ {
+   if (sm_ctxt->get_state (call, arg) == m_ended)
+     sm_ctxt->warn (node, call, arg,
+ 		   make_unique<va_list_use_after_va_end>
+ 		     (*this, arg, NULL_TREE, usage_fnname));
+ }
+ 
+ /* Get the svalue with associated va_list_state_machine state for
+    ARG_IDX of CALL to va_copy, if SM_CTXT supports this,
+    or NULL otherwise.  */
+ 
+ static const svalue *
+ get_stateful_va_copy_arg (sm_context *sm_ctxt,
+ 			  const gcall *call,
+ 			  unsigned arg_idx)
+ {
+   if (const program_state *new_state = sm_ctxt->get_new_program_state ())
+     {
+       const region_model *new_model = new_state->m_region_model;
+       const svalue *arg = get_va_copy_arg (new_model, NULL, call, arg_idx);
+       return arg;
+     }
+   return NULL;
+ }
+ 
+ /* Update state machine for a "va_copy" call.  */
+ 
+ void
+ va_list_state_machine::on_va_copy (sm_context *sm_ctxt,
+ 				   const supernode *node,
+ 				   const gcall *call) const
+ {
+   const svalue *src_arg = get_stateful_va_copy_arg (sm_ctxt, call, 1);
+   if (src_arg)
+     check_for_ended_va_list (sm_ctxt, node, call, src_arg, "va_copy");
+ 
+   const svalue *dst_arg = get_stateful_arg (sm_ctxt, call, 0);
+   if (dst_arg)
+     {
+       /* Transition from start state to "started".  */
+       if (sm_ctxt->get_state (call, dst_arg) == m_start)
+ 	sm_ctxt->set_next_state (call, dst_arg, m_started);
+     }
+ }
+ 
+ /* Update state machine for a "va_arg" call.  */
+ 
+ void
+ va_list_state_machine::on_va_arg (sm_context *sm_ctxt,
+ 				  const supernode *node,
+ 				  const gcall *call) const
+ {
+   const svalue *arg = get_stateful_arg (sm_ctxt, call, 0);
+   if (arg)
+     check_for_ended_va_list (sm_ctxt, node, call, arg, "va_arg");
+ }
+ 
+ /* Update state machine for a "va_end" call.  */
+ 
+ void
+ va_list_state_machine::on_va_end (sm_context *sm_ctxt,
+ 				  const supernode *node,
+ 				  const gcall *call) const
+ {
+   const svalue *arg = get_stateful_arg (sm_ctxt, call, 0);
+   if (arg)
+     {
+       state_t s = sm_ctxt->get_state (call, arg);
+       /* Transition from "started" to "ended".  */
+       if (s == m_started)
+ 	sm_ctxt->set_next_state (call, arg, m_ended);
+       else if (s == m_ended)
+ 	check_for_ended_va_list (sm_ctxt, node, call, arg, "va_end");
+     }
+ }
+ 
+ /* Implementation of state_machine::on_leak vfunc for va_list_state_machine
+    (for complaining about leaks of values in state 'started').  */
+ 
+ std::unique_ptr<pending_diagnostic>
+ va_list_state_machine::on_leak (tree var) const
+ {
+   return make_unique<va_list_leak> (*this, NULL, var);
+ }
+ 
+ } // anonymous namespace
+ 
+ /* Internal interface to this file. */
+ 
+ state_machine *
+ make_va_list_state_machine (logger *logger)
+ {
+   return new va_list_state_machine (logger);
+ }
+ 
+ /* Handler for "__builtin_va_start".  */
+ 
+ class kf_va_start : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const final override
+   {
+     return true;
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_va_start::impl_call_pre (const call_details &cd) const
+ {
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+   const svalue *out_ptr = cd.get_arg_svalue (0);
+   const region *out_reg
+     = model->deref_rvalue (out_ptr, cd.get_arg_tree (0), cd.get_ctxt ());
+   const frame_region *frame = model->get_current_frame ();
+ 
+   /* "*out_ptr = &IMPL_REGION;".  */
+   const region *impl_reg = mgr->create_region_for_alloca (frame);
+ 
+   /* We abuse the types here, since va_list_type isn't
+      necessarily anything to do with a pointer.  */
+   const svalue *ptr_to_impl_reg = mgr->get_ptr_svalue (NULL_TREE, impl_reg);
+   model->set_value (out_reg, ptr_to_impl_reg, cd.get_ctxt ());
+ 
+   if (model->get_stack_depth () > 1)
+     {
+       /* The interprocedural case: the frame containing the va_start call
+ 	 will have been populated with any variadic aruguments.
+ 	 Initialize IMPL_REGION with a ptr to var_arg_region 0.  */
+       const region *init_var_arg_reg = mgr->get_var_arg_region (frame, 0);
+       const svalue *ap_sval
+ 	= mgr->get_ptr_svalue (NULL_TREE, init_var_arg_reg);
+       model->set_value (impl_reg, ap_sval, cd.get_ctxt ());
+     }
+   else
+     {
+       /* The frame containing va_start is an entry-point to the analysis,
+ 	 so there won't be any specific var_arg_regions populated within it.
+ 	 Initialize IMPL_REGION as the UNKNOWN_SVALUE to avoid state
+ 	 explosions on repeated calls to va_arg.  */
+       const svalue *unknown_sval
+ 	= mgr->get_or_create_unknown_svalue (NULL_TREE);
+       model->set_value (impl_reg, unknown_sval, cd.get_ctxt ());
+     }
+ }
+ 
+ /* Handler for "__builtin_va_copy".  */
+ 
+ class kf_va_copy : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const final override
+   {
+     return true;
+   }
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_va_copy::impl_call_pre (const call_details &cd) const
+ {
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+   const svalue *out_dst_ptr = cd.get_arg_svalue (0);
+   const svalue *in_va_list
+     = get_va_copy_arg (model, cd.get_ctxt (), cd.get_call_stmt (), 1);
+   in_va_list
+     = model->check_for_poison (in_va_list,
+ 			       get_va_list_diag_arg (cd.get_arg_tree (1)),
+ 			       NULL,
+ 			       cd.get_ctxt ());
+ 
+   const region *out_dst_reg
+     = model->deref_rvalue (out_dst_ptr, cd.get_arg_tree (0), cd.get_ctxt ());
+ 
+   /* "*out_dst_ptr = &NEW_IMPL_REGION;".  */
+   const region *new_impl_reg
+     = mgr->create_region_for_alloca (model->get_current_frame ());
+   const svalue *ptr_to_new_impl_reg
+     = mgr->get_ptr_svalue (NULL_TREE, new_impl_reg);
+   model->set_value (out_dst_reg, ptr_to_new_impl_reg, cd.get_ctxt ());
+ 
+   if (const region *old_impl_reg = in_va_list->maybe_get_region ())
+     {
+       /* "(NEW_IMPL_REGION) = (OLD_IMPL_REGION);".  */
+       const svalue *existing_sval
+ 	= model->get_store_value (old_impl_reg, cd.get_ctxt ());
+       model->set_value (new_impl_reg, existing_sval, cd.get_ctxt ());
+     }
+ }
+ 
+ /* Get the number of variadic arguments to CALLEE_FNDECL at CALL_STMT.  */
+ 
+ static int
+ get_num_variadic_arguments (tree callee_fndecl,
+ 			    const gcall *call_stmt)
+ {
+   int num_positional = 0;
+   for (tree iter_parm = DECL_ARGUMENTS (callee_fndecl); iter_parm;
+        iter_parm = DECL_CHAIN (iter_parm))
+     num_positional++;
+   return gimple_call_num_args (call_stmt) - num_positional;
+ }
+ 
+ /* An abstract subclass of pending_diagnostic for diagnostics relating
+    to bad va_arg invocations.
+ 
+    This shows the number of variadic arguments at the call of interest.
+    Ideally we'd also be able to highlight individual arguments, but
+    that location information isn't generally available from the middle end.  */
+ 
+ class va_arg_diagnostic : public pending_diagnostic
+ {
+ public:
+   /* Override of pending_diagnostic::add_call_event,
+      adding a custom call_event subclass.  */
+   void add_call_event (const exploded_edge &eedge,
+ 		       checker_path *emission_path) override
+   {
+     /* As per call_event, but show the number of variadic arguments
+        in the call.  */
+     class va_arg_call_event : public call_event
+     {
+     public:
+       va_arg_call_event (const exploded_edge &eedge,
+ 			 const event_loc_info &loc_info,
+ 			 int num_variadic_arguments)
+       : call_event (eedge, loc_info),
+ 	m_num_variadic_arguments (num_variadic_arguments)
+       {
+       }
+ 
+       label_text get_desc (bool can_colorize) const override
+       {
+ 	return make_label_text_n
+ 	  (can_colorize, m_num_variadic_arguments,
+ 	   "calling %qE from %qE with %i variadic argument",
+ 	   "calling %qE from %qE with %i variadic arguments",
+ 	   get_callee_fndecl (),
+ 	   get_caller_fndecl (),
+ 	   m_num_variadic_arguments);
+       }
+     private:
+       int m_num_variadic_arguments;
+     };
+ 
+     const frame_region *frame_reg = m_var_arg_reg->get_frame_region ();
+     const exploded_node *dst_node = eedge.m_dest;
+     if (dst_node->get_state ().m_region_model->get_current_frame ()
+ 	== frame_reg)
+       {
+ 	const exploded_node *src_node = eedge.m_src;
+ 	const program_point &src_point = src_node->get_point ();
+ 	const int src_stack_depth = src_point.get_stack_depth ();
+ 	const gimple *last_stmt = src_point.get_supernode ()->get_last_stmt ();
+ 	const gcall *call_stmt = as_a <const gcall *> (last_stmt);
+ 	int num_variadic_arguments
+ 	  = get_num_variadic_arguments (dst_node->get_function ()->decl,
+ 					call_stmt);
+ 	emission_path->add_event
+ 	  (make_unique<va_arg_call_event>
+ 	   (eedge,
+ 	    event_loc_info (last_stmt ? last_stmt->location : UNKNOWN_LOCATION,
+ 			    src_point.get_fndecl (),
+ 			    src_stack_depth),
+ 	    num_variadic_arguments));
+       }
+     else
+       pending_diagnostic::add_call_event (eedge, emission_path);
+   }
+ 
+ protected:
+   va_arg_diagnostic (tree va_list_tree, const var_arg_region *var_arg_reg)
+   : m_va_list_tree (va_list_tree), m_var_arg_reg (var_arg_reg)
+   {}
+ 
+   bool subclass_equal_p (const pending_diagnostic &base_other) const override
+   {
+     const va_arg_diagnostic &other = (const va_arg_diagnostic &)base_other;
+     return (same_tree_p (m_va_list_tree, other.m_va_list_tree)
+ 	    && m_var_arg_reg == other.m_var_arg_reg);
+   }
+ 
+   /* Get the number of arguments consumed so far from the va_list
+      (*before* this va_arg call).  */
+   unsigned get_num_consumed () const
+   {
+     return m_var_arg_reg->get_index ();
+   }
+ 
+   /* Get a 1-based index of which variadic argument is being consumed.  */
+   unsigned get_variadic_index_for_diagnostic () const
+   {
+     return get_num_consumed () + 1;
+   }
+ 
+   /* User-readable expr for the va_list argument to va_arg.  */
+   tree m_va_list_tree;
+ 
+   /* The region that the va_arg attempted to access.  */
+   const var_arg_region *m_var_arg_reg;
+ };
+ 
+ /* A subclass of pending_diagnostic for complaining about a type mismatch
+    between the result of:
+      va_arg (AP);
+    and the type of the argument that was passed to the variadic call.  */
+ 
+ class va_arg_type_mismatch : public va_arg_diagnostic
+ {
+ public:
+   va_arg_type_mismatch (tree va_list_tree, const var_arg_region *var_arg_reg,
+ 			tree expected_type, tree actual_type)
+   : va_arg_diagnostic (va_list_tree, var_arg_reg),
+     m_expected_type (expected_type), m_actual_type (actual_type)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "va_arg_type_mismatch";
+   }
+ 
+   bool subclass_equal_p (const pending_diagnostic &base_other)
+     const final override
+   {
+     if (!va_arg_diagnostic::subclass_equal_p (base_other))
+       return false;
+     const va_arg_type_mismatch &other
+       = (const va_arg_type_mismatch &)base_other;
+     return (same_tree_p (m_expected_type, other.m_expected_type)
+ 	    && same_tree_p (m_actual_type, other.m_actual_type));
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_va_arg_type_mismatch;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     auto_diagnostic_group d;
+     diagnostic_metadata m;
+     /* "CWE-686: Function Call With Incorrect Argument Type".  */
+     m.add_cwe (686);
+     bool warned
+       = warning_meta (rich_loc, m, get_controlling_option (),
+ 		      "%<va_arg%> expected %qT but received %qT"
+ 		      " for variadic argument %i of %qE",
+ 		      m_expected_type, m_actual_type,
+ 		      get_variadic_index_for_diagnostic (), m_va_list_tree);
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     return ev.formatted_print ("%<va_arg%> expected %qT but received %qT"
+ 			       " for variadic argument %i of %qE",
+ 			       m_expected_type, m_actual_type,
+ 			       get_variadic_index_for_diagnostic (),
+ 			       m_va_list_tree);
+   }
+ 
+ private:
+   tree m_expected_type;
+   tree m_actual_type;
+ };
+ 
+ /* A subclass of pending_diagnostic for complaining about a
+      va_arg (AP);
+    after all of the args in AP have been consumed.  */
+ 
+ class va_list_exhausted : public va_arg_diagnostic
+ {
+ public:
+   va_list_exhausted (tree va_list_tree, const var_arg_region *var_arg_reg)
+   : va_arg_diagnostic (va_list_tree, var_arg_reg)
+   {}
+ 
+   const char *get_kind () const final override
+   {
+     return "va_list_exhausted";
+   }
+ 
+   int get_controlling_option () const final override
+   {
+     return OPT_Wanalyzer_va_list_exhausted;
+   }
+ 
+   bool emit (rich_location *rich_loc) final override
+   {
+     auto_diagnostic_group d;
+     diagnostic_metadata m;
+     /* CWE-685: Function Call With Incorrect Number of Arguments.  */
+     m.add_cwe (685);
+     bool warned = warning_meta (rich_loc, m, get_controlling_option (),
+ 				"%qE has no more arguments (%i consumed)",
+ 				m_va_list_tree, get_num_consumed ());
+     return warned;
+   }
+ 
+   label_text describe_final_event (const evdesc::final_event &ev) final override
+   {
+     return ev.formatted_print ("%qE has no more arguments (%i consumed)",
+ 			       m_va_list_tree, get_num_consumed ());
+   }
+ };
+ 
+ /* Return true if it's OK to copy a value from ARG_TYPE to LHS_TYPE via
+    va_arg (where argument promotion has already happened).  */
+ 
+ static bool
+ va_arg_compatible_types_p (tree lhs_type, tree arg_type)
+ {
+   return compat_types_p (arg_type, lhs_type);
+ }
+ 
+ /* If AP_SVAL is a pointer to a var_arg_region, return that var_arg_region.
+    Otherwise return NULL.  */
+ 
+ static const var_arg_region *
+ maybe_get_var_arg_region (const svalue *ap_sval)
+ {
+   if (const region *reg = ap_sval->maybe_get_region ())
+     return reg->dyn_cast_var_arg_region ();
+   return NULL;
+ }
+ 
+ /* Handler for "__builtin_va_arg".  */
+ 
+ class kf_va_arg : public internal_known_function
+ {
+ public:
+   void impl_call_pre (const call_details &cd) const final override;
+ };
+ 
+ void
+ kf_va_arg::impl_call_pre (const call_details &cd) const
+ {
+   region_model_context *ctxt = cd.get_ctxt ();
+   region_model *model = cd.get_model ();
+   region_model_manager *mgr = cd.get_manager ();
+ 
+   const svalue *in_ptr = cd.get_arg_svalue (0);
+   const region *ap_reg
+     = model->deref_rvalue (in_ptr, cd.get_arg_tree (0), ctxt);
+ 
+   const svalue *ap_sval = model->get_store_value (ap_reg, ctxt);
+   if (const svalue *cast = ap_sval->maybe_undo_cast ())
+     ap_sval = cast;
+ 
+   tree va_list_tree = get_va_list_diag_arg (cd.get_arg_tree (0));
+   ap_sval = model->check_for_poison (ap_sval, va_list_tree, ap_reg, ctxt);
+ 
+   if (const region *impl_reg = ap_sval->maybe_get_region ())
+     {
+       const svalue *old_impl_sval = model->get_store_value (impl_reg, ctxt);
+       if (const var_arg_region *arg_reg
+ 	  = maybe_get_var_arg_region (old_impl_sval))
+ 	{
+ 	  bool saw_problem = false;
+ 
+ 	  const frame_region *frame_reg = arg_reg->get_frame_region ();
+ 	  unsigned next_arg_idx = arg_reg->get_index ();
+ 
+ 	  if (frame_reg->get_stack_depth () > 1)
+ 	    {
+ 	      /* The interprocedural case: the called frame will have been
+ 		 populated with any variadic aruguments.
+ 		 Attempt to extract arg_reg to cd's return region (which already
+ 		 has a conjured_svalue), or warn if there's a problem
+ 		 (incompatible types, or if we've run out of args).  */
+ 	      if (const svalue *arg_sval
+ 		  = model->get_store ()->get_any_binding
+ 		      (mgr->get_store_manager (), arg_reg))
+ 		{
+ 		  tree lhs_type = cd.get_lhs_type ();
+ 		  tree arg_type = arg_sval->get_type ();
+ 		  if (va_arg_compatible_types_p (lhs_type, arg_type))
+ 		    cd.maybe_set_lhs (arg_sval);
+ 		  else
+ 		    {
+ 		      if (ctxt)
+ 			ctxt->warn (make_unique <va_arg_type_mismatch>
+ 				      (va_list_tree,
+ 				       arg_reg,
+ 				       lhs_type,
+ 				       arg_type));
+ 		      saw_problem = true;
+ 		    }
+ 		}
+ 	      else
+ 		{
+ 		  if (ctxt)
+ 		    ctxt->warn (make_unique <va_list_exhausted> (va_list_tree,
+ 								 arg_reg));
+ 		  saw_problem = true;
+ 		}
+ 	    }
+ 	  else
+ 	    {
+ 	      /* This frame is an entry-point to the analysis, so there won't be
+ 		 any specific var_arg_regions populated within it.
+ 		 We already have a conjured_svalue for the result, so leave
+ 		 it untouched.  */
+ 	      gcc_assert (frame_reg->get_stack_depth () == 1);
+ 	    }
+ 
+ 	  if (saw_problem)
+ 	    {
+ 	      /* Set impl_reg to UNKNOWN to suppress further warnings.  */
+ 	      const svalue *new_ap_sval
+ 		= mgr->get_or_create_unknown_svalue (impl_reg->get_type ());
+ 	      model->set_value (impl_reg, new_ap_sval, ctxt);
+ 	    }
+ 	  else
+ 	    {
+ 	      /* Update impl_reg to advance to the next arg.  */
+ 	      const region *next_var_arg_region
+ 		= mgr->get_var_arg_region (frame_reg, next_arg_idx + 1);
+ 	      const svalue *new_ap_sval
+ 		= mgr->get_ptr_svalue (NULL_TREE, next_var_arg_region);
+ 	      model->set_value (impl_reg, new_ap_sval, ctxt);
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* Handler for "__builtin_va_end".  */
+ 
+ class kf_va_end : public known_function
+ {
+ public:
+   bool matches_call_types_p (const call_details &) const
+   {
+     return true;
+   }
+ };
+ 
+ /* Populate KFM with instances of known functions relating to varargs.  */
+ 
+ void
+ register_varargs_builtins (known_function_manager &kfm)
+ {
+   kfm.add (BUILT_IN_VA_START, make_unique<kf_va_start> ());
+   kfm.add (BUILT_IN_VA_COPY, make_unique<kf_va_copy> ());
+   kfm.add (IFN_VA_ARG, make_unique<kf_va_arg> ());
+   kfm.add (BUILT_IN_VA_END, make_unique<kf_va_end> ());
+ }
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
diff -Nrcpad gcc-12.2.0/gcc/analyzer/varargs.dot gcc-13.1.0/gcc/analyzer/varargs.dot
*** gcc-12.2.0/gcc/analyzer/varargs.dot	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/analyzer/varargs.dot	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,56 ----
+ /* An overview of the state machine from varargs.cc
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by David Malcolm <dmalcolm@redhat.com>.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify it
+ under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful, but
+ WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Keep this in-sync with varargs.cc  */
+ 
+ digraph "va_list" {
+ 
+   /* STATES. */
+ 
+   /* Start state.  */
+   start;
+ 
+   /* State for a va_list that is the result of a va_start or va_copy.  */
+   started;
+ 
+   /* State for a va_list that has had va_end called on it.  */
+   ended;
+ 
+   /* TRANSITIONS. */
+ 
+   /* on_va_start: */
+   start -> started [label="on 'va_start(X, ...)'"];
+ 
+   /* on_va_copy: */
+   start -> started [label="on 'va_copy(X, ...)'"];
+   // in check_for_ended_va_list:
+   ended -> ended [label="on 'va_copy(X, ...)':\nWarn('use after va_end')"];
+ 
+   /* on_va_arg: */
+   started -> started [label="on 'va_arg(X, ...)'"];
+   started -> started [label="on 'va_copy(..., X)'"];
+   // in check_for_ended_va_list:
+   ended -> ended [label="on 'va_arg(X, ...)':\nWarn('use after va_end')"];
+ 
+   /* on_va_end: */
+   started -> ended [label="on 'va_end(X)'"];
+   // in check_for_ended_va_list:
+   ended -> ended [label="on 'va_end(X)':\nWarn('use after va_end')"];
+ }
diff -Nrcpad gcc-12.2.0/gcc/array-traits.h gcc-13.1.0/gcc/array-traits.h
*** gcc-12.2.0/gcc/array-traits.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/array-traits.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Descriptions of array-like objects.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Descriptions of array-like objects.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/asan.cc gcc-13.1.0/gcc/asan.cc
*** gcc-12.2.0/gcc/asan.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/asan.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 64,69 ****
--- 64,70 ----
  #include "tree-inline.h"
  #include "tree-ssa.h"
  #include "tree-eh.h"
+ #include "diagnostic-core.h"
  
  /* AddressSanitizer finds out-of-bounds and use-after-free bugs
     with <2x slowdown on average.
*************** asan_memintrin (void)
*** 390,395 ****
--- 391,436 ----
  }
  
  
+ /* Support for --param asan-kernel-mem-intrinsic-prefix=1.  */
+ static GTY(()) rtx asan_memfn_rtls[3];
+ 
+ rtx
+ asan_memfn_rtl (tree fndecl)
+ {
+   int i;
+   const char *f, *p;
+   char buf[sizeof ("__hwasan_memmove")];
+ 
+   switch (DECL_FUNCTION_CODE (fndecl))
+     {
+     case BUILT_IN_MEMCPY: i = 0; f = "memcpy"; break;
+     case BUILT_IN_MEMSET: i = 1; f = "memset"; break;
+     case BUILT_IN_MEMMOVE: i = 2; f = "memmove"; break;
+     default: gcc_unreachable ();
+     }
+   if (asan_memfn_rtls[i] == NULL_RTX)
+     {
+       tree save_name = DECL_NAME (fndecl);
+       tree save_assembler_name = DECL_ASSEMBLER_NAME (fndecl);
+       rtx save_rtl = DECL_RTL (fndecl);
+       if (flag_sanitize & SANITIZE_KERNEL_HWADDRESS)
+ 	p = "__hwasan_";
+       else
+ 	p = "__asan_";
+       strcpy (buf, p);
+       strcat (buf, f);
+       DECL_NAME (fndecl) = get_identifier (buf);
+       DECL_ASSEMBLER_NAME_RAW (fndecl) = NULL_TREE;
+       SET_DECL_RTL (fndecl, NULL_RTX);
+       asan_memfn_rtls[i] = DECL_RTL (fndecl);
+       DECL_NAME (fndecl) = save_name;
+       DECL_ASSEMBLER_NAME_RAW (fndecl) = save_assembler_name;
+       SET_DECL_RTL (fndecl, save_rtl);
+     }
+   return asan_memfn_rtls[i];
+ }
+ 
+ 
  /* Checks whether section SEC should be sanitized.  */
  
  static bool
*************** asan_emit_stack_protection (rtx base, rt
*** 1818,1823 ****
--- 1859,1869 ----
    tree str_cst, decl, id;
    int use_after_return_class = -1;
  
+   /* Don't emit anything when doing error recovery, the assertions
+      might fail e.g. if a function had a frame offset overflow.  */
+   if (seen_error ())
+     return NULL;
+ 
    if (shadow_ptr_types[0] == NULL_TREE)
      asan_init_shadow_ptr_types ();
  
*************** maybe_instrument_call (gimple_stmt_itera
*** 2945,2950 ****
--- 2991,2997 ----
  	  switch (DECL_FUNCTION_CODE (callee))
  	    {
  	    case BUILT_IN_UNREACHABLE:
+ 	    case BUILT_IN_UNREACHABLE_TRAP:
  	    case BUILT_IN_TRAP:
  	      /* Don't instrument these.  */
  	      return false;
*************** asan_add_global (tree decl, tree type, v
*** 3240,3246 ****
      pp_string (&asan_pp, "<unknown>");
    str_cst = asan_pp_string (&asan_pp);
  
!   pp_string (&module_name_pp, main_input_filename);
    module_name_cst = asan_pp_string (&module_name_pp);
  
    if (asan_needs_local_alias (decl))
--- 3287,3303 ----
      pp_string (&asan_pp, "<unknown>");
    str_cst = asan_pp_string (&asan_pp);
  
!   if (!in_lto_p)
!     pp_string (&module_name_pp, main_input_filename);
!   else
!     {
!       const_tree tu = get_ultimate_context ((const_tree)decl);
!       if (tu != NULL_TREE)
! 	pp_string (&module_name_pp, IDENTIFIER_POINTER (DECL_NAME (tu)));
!       else
! 	pp_string (&module_name_pp, aux_base_name);
!     }
! 
    module_name_cst = asan_pp_string (&module_name_pp);
  
    if (asan_needs_local_alias (decl))
*************** initialize_sanitizer_builtins (void)
*** 3470,3483 ****
  
  #include "sanitizer.def"
  
!   /* -fsanitize=object-size uses __builtin_object_size, but that might
!      not be available for e.g. Fortran at this point.  We use
!      DEF_SANITIZER_BUILTIN here only as a convenience macro.  */
!   if ((flag_sanitize & SANITIZE_OBJECT_SIZE)
!       && !builtin_decl_implicit_p (BUILT_IN_OBJECT_SIZE))
!     DEF_SANITIZER_BUILTIN_1 (BUILT_IN_OBJECT_SIZE, "object_size",
! 			     BT_FN_SIZE_CONST_PTR_INT,
! 			     ATTR_PURE_NOTHROW_LEAF_LIST);
  
  #undef DEF_SANITIZER_BUILTIN_1
  #undef DEF_SANITIZER_BUILTIN
--- 3527,3548 ----
  
  #include "sanitizer.def"
  
!   /* -fsanitize=object-size uses __builtin_dynamic_object_size and
!      __builtin_object_size, but they might not be available for e.g. Fortran at
!      this point.  We use DEF_SANITIZER_BUILTIN here only as a convenience
!      macro.  */
!   if (flag_sanitize & SANITIZE_OBJECT_SIZE)
!     {
!       if (!builtin_decl_implicit_p (BUILT_IN_OBJECT_SIZE))
! 	DEF_SANITIZER_BUILTIN_1 (BUILT_IN_OBJECT_SIZE, "object_size",
! 				 BT_FN_SIZE_CONST_PTR_INT,
! 				 ATTR_PURE_NOTHROW_LEAF_LIST);
!       if (!builtin_decl_implicit_p (BUILT_IN_DYNAMIC_OBJECT_SIZE))
! 	DEF_SANITIZER_BUILTIN_1 (BUILT_IN_DYNAMIC_OBJECT_SIZE,
! 				 "dynamic_object_size",
! 				 BT_FN_SIZE_CONST_PTR_INT,
! 				 ATTR_PURE_NOTHROW_LEAF_LIST);
!     }
  
  #undef DEF_SANITIZER_BUILTIN_1
  #undef DEF_SANITIZER_BUILTIN
*************** public:
*** 4214,4222 ****
    {}
  
    /* opt_pass methods: */
!   opt_pass * clone () { return new pass_asan (m_ctxt); }
!   virtual bool gate (function *) { return gate_asan () || gate_hwasan (); }
!   virtual unsigned int execute (function *) { return asan_instrument (); }
  
  }; // class pass_asan
  
--- 4279,4293 ----
    {}
  
    /* opt_pass methods: */
!   opt_pass * clone () final override { return new pass_asan (m_ctxt); }
!   bool gate (function *) final override
!   {
!     return gate_asan () || gate_hwasan ();
!   }
!   unsigned int execute (function *) final override
!   {
!     return asan_instrument ();
!   }
  
  }; // class pass_asan
  
*************** public:
*** 4251,4261 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        return !optimize && (gate_asan () || gate_hwasan ());
      }
!   virtual unsigned int execute (function *) { return asan_instrument (); }
  
  }; // class pass_asan_O0
  
--- 4322,4335 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        return !optimize && (gate_asan () || gate_hwasan ());
      }
!   unsigned int execute (function *) final override
!   {
!     return asan_instrument ();
!   }
  
  }; // class pass_asan_O0
  
diff -Nrcpad gcc-12.2.0/gcc/asan.h gcc-13.1.0/gcc/asan.h
*** gcc-12.2.0/gcc/asan.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/asan.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* AddressSanitizer, a fast memory error detector.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Kostya Serebryany <kcc@google.com>
  
  This file is part of GCC.
*************** extern bool asan_expand_check_ifn (gimpl
*** 33,38 ****
--- 33,39 ----
  extern bool asan_expand_mark_ifn (gimple_stmt_iterator *);
  extern bool asan_expand_poison_ifn (gimple_stmt_iterator *, bool *,
  				    hash_map<tree, tree> &);
+ extern rtx asan_memfn_rtl (tree);
  
  extern void hwasan_record_frame_init ();
  extern void hwasan_record_stack_var (rtx, rtx, poly_int64, poly_int64);
*************** extern bool asan_mark_p (gimple *stmt, e
*** 139,145 ****
  /* Return the size of padding needed to insert after a protected
     decl of SIZE.  */
  
! static inline unsigned int
  asan_red_zone_size (unsigned int size)
  {
    unsigned int c = size & (ASAN_RED_ZONE_SIZE - 1);
--- 140,146 ----
  /* Return the size of padding needed to insert after a protected
     decl of SIZE.  */
  
! inline unsigned int
  asan_red_zone_size (unsigned int size)
  {
    unsigned int c = size & (ASAN_RED_ZONE_SIZE - 1);
*************** asan_red_zone_size (unsigned int size)
*** 149,155 ****
  /* Return how much a stack variable occupis on a stack
     including a space for red zone.  */
  
! static inline unsigned HOST_WIDE_INT
  asan_var_and_redzone_size (unsigned HOST_WIDE_INT size)
  {
    if (size <= 4)
--- 150,156 ----
  /* Return how much a stack variable occupis on a stack
     including a space for red zone.  */
  
! inline unsigned HOST_WIDE_INT
  asan_var_and_redzone_size (unsigned HOST_WIDE_INT size)
  {
    if (size <= 4)
*************** extern hash_set<tree> *asan_handled_vari
*** 181,187 ****
  /* Return TRUE if builtin with given FCODE will be intercepted by
     libasan.  */
  
! static inline bool
  asan_intercepted_p (enum built_in_function fcode)
  {
    if (hwasan_sanitize_p ())
--- 182,188 ----
  /* Return TRUE if builtin with given FCODE will be intercepted by
     libasan.  */
  
! inline bool
  asan_intercepted_p (enum built_in_function fcode)
  {
    if (hwasan_sanitize_p ())
*************** asan_intercepted_p (enum built_in_functi
*** 212,218 ****
  
  /* Return TRUE if we should instrument for use-after-scope sanity checking.  */
  
! static inline bool
  asan_sanitize_use_after_scope (void)
  {
    return (flag_sanitize_address_use_after_scope
--- 213,219 ----
  
  /* Return TRUE if we should instrument for use-after-scope sanity checking.  */
  
! inline bool
  asan_sanitize_use_after_scope (void)
  {
    return (flag_sanitize_address_use_after_scope
*************** asan_sanitize_use_after_scope (void)
*** 221,227 ****
  
  /* Return true if DECL should be guarded on the stack.  */
  
! static inline bool
  asan_protect_stack_decl (tree decl)
  {
    return DECL_P (decl)
--- 222,228 ----
  
  /* Return true if DECL should be guarded on the stack.  */
  
! inline bool
  asan_protect_stack_decl (tree decl)
  {
    return DECL_P (decl)
*************** asan_protect_stack_decl (tree decl)
*** 232,238 ****
  /* Return true when flag_sanitize & FLAG is non-zero.  If FN is non-null,
     remove all flags mentioned in "no_sanitize" of DECL_ATTRIBUTES.  */
  
! static inline bool
  sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
  {
    unsigned int result_flags = flag_sanitize & flag;
--- 233,239 ----
  /* Return true when flag_sanitize & FLAG is non-zero.  If FN is non-null,
     remove all flags mentioned in "no_sanitize" of DECL_ATTRIBUTES.  */
  
! inline bool
  sanitize_flags_p (unsigned int flag, const_tree fn = current_function_decl)
  {
    unsigned int result_flags = flag_sanitize & flag;
*************** sanitize_flags_p (unsigned int flag, con
*** 251,257 ****
  
  /* Return true when coverage sanitization should happend for FN function.  */
  
! static inline bool
  sanitize_coverage_p (const_tree fn = current_function_decl)
  {
    return (flag_sanitize_coverage
--- 252,258 ----
  
  /* Return true when coverage sanitization should happend for FN function.  */
  
! inline bool
  sanitize_coverage_p (const_tree fn = current_function_decl)
  {
    return (flag_sanitize_coverage
diff -Nrcpad gcc-12.2.0/gcc/attr-fnspec.h gcc-13.1.0/gcc/attr-fnspec.h
*** gcc-12.2.0/gcc/attr-fnspec.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/attr-fnspec.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Handling of fnspec attribute specifiers
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Richard Guenther  <rguenther@suse.de>
  
     This file is part of GCC.
--- 1,5 ----
  /* Handling of fnspec attribute specifiers
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Richard Guenther  <rguenther@suse.de>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/attribs.cc gcc-13.1.0/gcc/attribs.cc
*** gcc-12.2.0/gcc/attribs.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/attribs.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions dealing with attribute handling, used by most front ends.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions dealing with attribute handling, used by most front ends.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** handle_ignored_attributes_option (vec<ch
*** 251,256 ****
--- 251,257 ----
        /* We don't accept '::attr'.  */
        if (cln == nullptr || cln == opt)
  	{
+ 	  auto_diagnostic_group d;
  	  error ("wrong argument to ignored attributes");
  	  inform (input_location, "valid format is %<ns::attr%> or %<ns::%>");
  	  continue;
*************** diag_attr_exclusions (tree last_decl, tr
*** 499,505 ****
  
    /* Iterate over the mutually exclusive attribute names and verify
       that the symbol doesn't contain it.  */
!   for (unsigned i = 0; i != sizeof attrs / sizeof *attrs; ++i)
      {
        if (!attrs[i])
  	continue;
--- 500,506 ----
  
    /* Iterate over the mutually exclusive attribute names and verify
       that the symbol doesn't contain it.  */
!   for (unsigned i = 0; i != ARRAY_SIZE (attrs); ++i)
      {
        if (!attrs[i])
  	continue;
*************** decl_attributes (tree *node, tree attrib
*** 732,742 ****
--- 733,747 ----
  	      || (spec->max_length >= 0
  		  && nargs > spec->max_length))
  	    {
+ 	      auto_diagnostic_group d;
  	      error ("wrong number of arguments specified for %qE attribute",
  		     name);
  	      if (spec->max_length < 0)
  		inform (input_location, "expected %i or more, found %i",
  			spec->min_length, nargs);
+ 	      else if (spec->min_length == spec->max_length)
+ 		inform (input_location, "expected %i, found %i",
+ 			spec->min_length, nargs);
  	      else
  		inform (input_location, "expected between %i and %i, found %i",
  			spec->min_length, spec->max_length, nargs);
*************** decl_attributes (tree *node, tree attrib
*** 841,846 ****
--- 846,852 ----
  	      || !DECL_P (*anode)
  	      || DECL_BUILT_IN_CLASS (*anode) != BUILT_IN_NORMAL
  	      || (DECL_FUNCTION_CODE (*anode) != BUILT_IN_UNREACHABLE
+ 		  && DECL_FUNCTION_CODE (*anode) != BUILT_IN_UNREACHABLE_TRAP
  		  && (DECL_FUNCTION_CODE (*anode)
  		      != BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE)))
  	    {
*************** decl_attributes (tree *node, tree attrib
*** 872,877 ****
--- 878,898 ----
  	  tree ret = (spec->handler) (cur_and_last_decl, name, args,
  				      flags|cxx11_flag, &no_add_attrs);
  
+ 	  /* Fix up typedefs clobbered by attribute handlers.  */
+ 	  if (TREE_CODE (*node) == TYPE_DECL
+ 	      && anode == &TREE_TYPE (*node)
+ 	      && DECL_ORIGINAL_TYPE (*node)
+ 	      && TYPE_NAME (*anode) == *node
+ 	      && TYPE_NAME (cur_and_last_decl[0]) != *node)
+ 	    {
+ 	      tree t = cur_and_last_decl[0];
+ 	      DECL_ORIGINAL_TYPE (*node) = t;
+ 	      tree tt = build_variant_type_copy (t);
+ 	      cur_and_last_decl[0] = tt;
+ 	      TREE_TYPE (*node) = tt;
+ 	      TYPE_NAME (tt) = *node;
+ 	    }
+ 
  	  *anode = cur_and_last_decl[0];
  	  if (ret == error_mark_node)
  	    {
*************** common_function_versions (tree fn1, tree
*** 1149,1154 ****
--- 1170,1176 ----
  	      std::swap (fn1, fn2);
  	      attr1 = attr2;
  	    }
+ 	  auto_diagnostic_group d;
  	  error_at (DECL_SOURCE_LOCATION (fn2),
  		    "missing %<target%> attribute for multi-versioned %qD",
  		    fn2);
*************** remove_attribute (const char *attr_name,
*** 1624,1629 ****
--- 1646,1678 ----
    return list;
  }
  
+ /* Similarly but also match namespace on the removed attributes.
+    ATTR_NS "" stands for NULL or "gnu" namespace.  */
+ 
+ tree
+ remove_attribute (const char *attr_ns, const char *attr_name, tree list)
+ {
+   tree *p;
+   gcc_checking_assert (attr_name[0] != '_');
+   gcc_checking_assert (attr_ns == NULL || attr_ns[0] != '_');
+ 
+   for (p = &list; *p;)
+     {
+       tree l = *p;
+ 
+       tree attr = get_attribute_name (l);
+       if (is_attribute_p (attr_name, attr)
+ 	  && is_attribute_namespace_p (attr_ns, l))
+ 	{
+ 	  *p = TREE_CHAIN (l);
+ 	  continue;
+ 	}
+       p = &TREE_CHAIN (l);
+     }
+ 
+   return list;
+ }
+ 
  /* Return an attribute list that is the union of a1 and a2.  */
  
  tree
*************** private_lookup_attribute (const char *at
*** 2021,2026 ****
--- 2070,2114 ----
    return list;
  }
  
+ /* Similarly but with also attribute namespace.  */
+ 
+ tree
+ private_lookup_attribute (const char *attr_ns, const char *attr_name,
+ 			  size_t attr_ns_len, size_t attr_len, tree list)
+ {
+   while (list)
+     {
+       tree attr = get_attribute_name (list);
+       size_t ident_len = IDENTIFIER_LENGTH (attr);
+       if (cmp_attribs (attr_name, attr_len, IDENTIFIER_POINTER (attr),
+ 		       ident_len))
+ 	{
+ 	  tree ns = get_attribute_namespace (list);
+ 	  if (ns == NULL_TREE)
+ 	    {
+ 	      if (attr_ns_len == 0)
+ 		break;
+ 	    }
+ 	  else if (attr_ns)
+ 	    {
+ 	      ident_len = IDENTIFIER_LENGTH (ns);
+ 	      if (attr_ns_len == 0)
+ 		{
+ 		  if (cmp_attribs ("gnu", strlen ("gnu"),
+ 				   IDENTIFIER_POINTER (ns), ident_len))
+ 		    break;
+ 		}
+ 	      else if (cmp_attribs (attr_ns, attr_ns_len,
+ 				    IDENTIFIER_POINTER (ns), ident_len))
+ 		break;
+ 	    }
+ 	}
+       list = TREE_CHAIN (list);
+     }
+ 
+   return list;
+ }
+ 
  /* Return true if the function decl or type NODE has been declared
     with attribute ANAME among attributes ATTRS.  */
  
*************** decls_mismatched_attributes (tree tmpl,
*** 2106,2112 ****
    };
  
    for (unsigned i = 0; i != 2; ++i)
!     for (unsigned j = 0; j != sizeof whitelist / sizeof *whitelist; ++j)
        if (lookup_attribute (whitelist[j], tmpl_attrs[i])
  	  || lookup_attribute (whitelist[j], decl_attrs[i]))
  	return 0;
--- 2194,2200 ----
    };
  
    for (unsigned i = 0; i != 2; ++i)
!     for (unsigned j = 0; j != ARRAY_SIZE (whitelist); ++j)
        if (lookup_attribute (whitelist[j], tmpl_attrs[i])
  	  || lookup_attribute (whitelist[j], decl_attrs[i]))
  	return 0;
diff -Nrcpad gcc-12.2.0/gcc/attribs.h gcc-13.1.0/gcc/attribs.h
*** gcc-12.2.0/gcc/attribs.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/attribs.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations and definitions dealing with attribute handling.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Declarations and definitions dealing with attribute handling.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern tree merge_type_attributes (tree,
*** 82,87 ****
--- 82,91 ----
  
  extern tree remove_attribute (const char *, tree);
  
+ /* Similarly but also with specific attribute namespace.  */
+ 
+ extern tree remove_attribute (const char *, const char *, tree);
+ 
  /* Given two attributes lists, return a list of their union.  */
  
  extern tree merge_attributes (tree, tree);
*************** extern int attribute_list_contained (con
*** 113,118 ****
--- 117,126 ----
     for size.  */
  extern tree private_lookup_attribute (const char *attr_name, size_t attr_len,
  				      tree list);
+ extern tree private_lookup_attribute (const char *attr_ns,
+ 				      const char *attr_name,
+ 				      size_t attr_ns_len, size_t attr_len,
+ 				      tree list);
  
  extern unsigned decls_mismatched_attributes (tree, tree, tree,
  					     const char* const[],
*************** canonicalize_attr_name (const char *&s,
*** 140,146 ****
  /* For a given IDENTIFIER_NODE, strip leading and trailing '_' characters
     so that we have a canonical form of attribute names.  */
  
! static inline tree
  canonicalize_attr_name (tree attr_name)
  {
    size_t l = IDENTIFIER_LENGTH (attr_name);
--- 148,154 ----
  /* For a given IDENTIFIER_NODE, strip leading and trailing '_' characters
     so that we have a canonical form of attribute names.  */
  
! inline tree
  canonicalize_attr_name (tree attr_name)
  {
    size_t l = IDENTIFIER_LENGTH (attr_name);
*************** canonicalize_attr_name (tree attr_name)
*** 155,161 ****
  /* Compare attribute identifiers ATTR1 and ATTR2 with length ATTR1_LEN and
     ATTR2_LEN.  */
  
! static inline bool
  cmp_attribs (const char *attr1, size_t attr1_len,
  	     const char *attr2, size_t attr2_len)
  {
--- 163,169 ----
  /* Compare attribute identifiers ATTR1 and ATTR2 with length ATTR1_LEN and
     ATTR2_LEN.  */
  
! inline bool
  cmp_attribs (const char *attr1, size_t attr1_len,
  	     const char *attr2, size_t attr2_len)
  {
*************** cmp_attribs (const char *attr1, size_t a
*** 164,170 ****
  
  /* Compare attribute identifiers ATTR1 and ATTR2.  */
  
! static inline bool
  cmp_attribs (const char *attr1, const char *attr2)
  {
    return cmp_attribs (attr1, strlen (attr1), attr2, strlen (attr2));
--- 172,178 ----
  
  /* Compare attribute identifiers ATTR1 and ATTR2.  */
  
! inline bool
  cmp_attribs (const char *attr1, const char *attr2)
  {
    return cmp_attribs (attr1, strlen (attr1), attr2, strlen (attr2));
*************** cmp_attribs (const char *attr1, const ch
*** 173,185 ****
  /* Given an identifier node IDENT and a string ATTR_NAME, return true
     if the identifier node is a valid attribute name for the string.  */
  
! static inline bool
  is_attribute_p (const char *attr_name, const_tree ident)
  {
    return cmp_attribs (attr_name, strlen (attr_name),
  		      IDENTIFIER_POINTER (ident), IDENTIFIER_LENGTH (ident));
  }
  
  /* Given an attribute name ATTR_NAME and a list of attributes LIST,
     return a pointer to the attribute's list element if the attribute
     is part of the list, or NULL_TREE if not found.  If the attribute
--- 181,209 ----
  /* Given an identifier node IDENT and a string ATTR_NAME, return true
     if the identifier node is a valid attribute name for the string.  */
  
! inline bool
  is_attribute_p (const char *attr_name, const_tree ident)
  {
    return cmp_attribs (attr_name, strlen (attr_name),
  		      IDENTIFIER_POINTER (ident), IDENTIFIER_LENGTH (ident));
  }
  
+ /* Given an attribute ATTR and a string ATTR_NS, return true
+    if the attribute namespace is valid for the string.  ATTR_NS "" stands
+    for standard attribute (NULL get_attribute_namespace) or "gnu"
+    namespace.  */
+ 
+ inline bool
+ is_attribute_namespace_p (const char *attr_ns, const_tree attr)
+ {
+   tree ident = get_attribute_namespace (attr);
+   if (attr_ns == NULL)
+     return ident == NULL_TREE;
+   if (attr_ns[0])
+     return ident && is_attribute_p (attr_ns, ident);
+   return ident == NULL_TREE || is_attribute_p ("gnu", ident);
+ }
+ 
  /* Given an attribute name ATTR_NAME and a list of attributes LIST,
     return a pointer to the attribute's list element if the attribute
     is part of the list, or NULL_TREE if not found.  If the attribute
*************** is_attribute_p (const char *attr_name, c
*** 188,194 ****
     occurrences are wanted.  ATTR_NAME must be in the form 'text' (not
     '__text__').  */
  
! static inline tree
  lookup_attribute (const char *attr_name, tree list)
  {
    if (CHECKING_P && attr_name[0] != '_')
--- 212,218 ----
     occurrences are wanted.  ATTR_NAME must be in the form 'text' (not
     '__text__').  */
  
! inline tree
  lookup_attribute (const char *attr_name, tree list)
  {
    if (CHECKING_P && attr_name[0] != '_')
*************** lookup_attribute (const char *attr_name,
*** 209,220 ****
      }
  }
  
  /* Given an attribute name ATTR_NAME and a list of attributes LIST,
     return a pointer to the attribute's list first element if the attribute
     starts with ATTR_NAME.  ATTR_NAME must be in the form 'text' (not
     '__text__').  */
  
! static inline tree
  lookup_attribute_by_prefix (const char *attr_name, tree list)
  {
    gcc_checking_assert (attr_name[0] != '_');
--- 233,275 ----
      }
  }
  
+ /* Similar to lookup_attribute, but also match the attribute namespace.
+    ATTR_NS "" stands for either standard attribute or "gnu" namespace.  */
+ 
+ inline tree
+ lookup_attribute (const char *attr_ns, const char *attr_name, tree list)
+ {
+   if (CHECKING_P && attr_name[0] != '_')
+     {
+       size_t attr_len = strlen (attr_name);
+       gcc_checking_assert (!canonicalize_attr_name (attr_name, attr_len));
+     }
+   if (CHECKING_P && attr_ns && attr_ns[0] != '_')
+     {
+       size_t attr_ns_len = strlen (attr_ns);
+       gcc_checking_assert (!canonicalize_attr_name (attr_ns, attr_ns_len));
+     }
+   /* In most cases, list is NULL_TREE.  */
+   if (list == NULL_TREE)
+     return NULL_TREE;
+   else
+     {
+       size_t attr_ns_len = attr_ns ? strlen (attr_ns) : 0;
+       size_t attr_len = strlen (attr_name);
+       /* Do the strlen() before calling the out-of-line implementation.
+ 	 In most cases attr_name is a string constant, and the compiler
+ 	 will optimize the strlen() away.  */
+       return private_lookup_attribute (attr_ns, attr_name,
+ 				       attr_ns_len, attr_len, list);
+     }
+ }
+ 
  /* Given an attribute name ATTR_NAME and a list of attributes LIST,
     return a pointer to the attribute's list first element if the attribute
     starts with ATTR_NAME.  ATTR_NAME must be in the form 'text' (not
     '__text__').  */
  
! inline tree
  lookup_attribute_by_prefix (const char *attr_name, tree list)
  {
    gcc_checking_assert (attr_name[0] != '_');
*************** lookup_attribute_by_prefix (const char *
*** 236,243 ****
  	    }
  
  	  const char *p = IDENTIFIER_POINTER (name);
! 	  gcc_checking_assert (attr_len == 0 || p[0] != '_');
! 
  	  if (strncmp (attr_name, p, attr_len) == 0)
  	    break;
  
--- 291,298 ----
  	    }
  
  	  const char *p = IDENTIFIER_POINTER (name);
! 	  gcc_checking_assert (attr_len == 0 || p[0] != '_'
! 			       || (ident_len > 1 && p[1] != '_'));
  	  if (strncmp (attr_name, p, attr_len) == 0)
  	    break;
  
diff -Nrcpad gcc-12.2.0/gcc/auto-inc-dec.cc gcc-13.1.0/gcc/auto-inc-dec.cc
*** gcc-12.2.0/gcc/auto-inc-dec.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/auto-inc-dec.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Discovery of auto-inc and auto-dec instructions.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Discovery of auto-inc and auto-dec instructions.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Kenneth Zadeck <zadeck@naturalbridge.com>
  
  This file is part of GCC.
*************** public:
*** 1692,1698 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        if (!AUTO_INC_DEC)
  	return false;
--- 1692,1698 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        if (!AUTO_INC_DEC)
  	return false;
*************** public:
*** 1701,1707 ****
      }
  
  
!   unsigned int execute (function *);
  
  }; // class pass_inc_dec
  
--- 1701,1707 ----
      }
  
  
!   unsigned int execute (function *) final override;
  
  }; // class pass_inc_dec
  
diff -Nrcpad gcc-12.2.0/gcc/auto-profile.cc gcc-13.1.0/gcc/auto-profile.cc
*** gcc-12.2.0/gcc/auto-profile.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/auto-profile.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Read and annotate call graph profile from the auto profile data file.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Read and annotate call graph profile from the auto profile data file.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
*************** get_combined_location (location_t loc, t
*** 363,369 ****
    /* TODO: allow more bits for line and less bits for discriminator.  */
    if (LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl) >= (1<<16))
      warning_at (loc, OPT_Woverflow, "offset exceeds 16 bytes");
!   return ((LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl)) << 16);
  }
  
  /* Return the function decl of a given lexical BLOCK.  */
--- 363,370 ----
    /* TODO: allow more bits for line and less bits for discriminator.  */
    if (LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl) >= (1<<16))
      warning_at (loc, OPT_Woverflow, "offset exceeds 16 bytes");
!   return ((LOCATION_LINE (loc) - DECL_SOURCE_LINE (decl)) << 16)
! 	 | get_discriminator_from_loc (loc);
  }
  
  /* Return the function decl of a given lexical BLOCK.  */
*************** get_inline_stack (location_t locus, inli
*** 388,394 ****
    tree block = LOCATION_BLOCK (locus);
    if (block && TREE_CODE (block) == BLOCK)
      {
-       int level = 0;
        for (block = BLOCK_SUPERCONTEXT (block);
             block && (TREE_CODE (block) == BLOCK);
             block = BLOCK_SUPERCONTEXT (block))
--- 389,394 ----
*************** get_inline_stack (location_t locus, inli
*** 401,407 ****
            stack->safe_push (
                std::make_pair (decl, get_combined_location (locus, decl)));
            locus = tmp_locus;
-           level++;
          }
      }
    stack->safe_push (
--- 401,406 ----
*************** function_instance::read_function_instanc
*** 654,660 ****
  
    for (unsigned i = 0; i < num_pos_counts; i++)
      {
!       unsigned offset = gcov_read_unsigned () & 0xffff0000;
        unsigned num_targets = gcov_read_unsigned ();
        gcov_type count = gcov_read_counter ();
        s->pos_counts[offset].count = count;
--- 653,659 ----
  
    for (unsigned i = 0; i < num_pos_counts; i++)
      {
!       unsigned offset = gcov_read_unsigned ();
        unsigned num_targets = gcov_read_unsigned ();
        gcov_type count = gcov_read_counter ();
        s->pos_counts[offset].count = count;
*************** public:
*** 1752,1764 ****
    }
  
    /* opt_pass methods: */
!   virtual bool
!   gate (function *)
    {
      return flag_auto_profile;
    }
!   virtual unsigned int
!   execute (function *)
    {
      return autofdo::auto_profile ();
    }
--- 1751,1763 ----
    }
  
    /* opt_pass methods: */
!   bool
!   gate (function *) final override
    {
      return flag_auto_profile;
    }
!   unsigned int
!   execute (function *) final override
    {
      return autofdo::auto_profile ();
    }
diff -Nrcpad gcc-12.2.0/gcc/auto-profile.h gcc-13.1.0/gcc/auto-profile.h
*** gcc-12.2.0/gcc/auto-profile.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/auto-profile.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* auto-profile.h - Defines data exported from auto-profile.cc
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* auto-profile.h - Defines data exported from auto-profile.cc
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Dehao Chen (dehao@google.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/backend.h gcc-13.1.0/gcc/backend.h
*** gcc-12.2.0/gcc/backend.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/backend.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Common Backend requirements. 
  
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by Andrew MacLeod <amacleod@redhat.com>
  
  This file is part of GCC.
--- 1,6 ----
  /* Common Backend requirements. 
  
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by Andrew MacLeod <amacleod@redhat.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/basic-block.h gcc-13.1.0/gcc/basic-block.h
*** gcc-12.2.0/gcc/basic-block.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/basic-block.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Define control flow data structures for the CFG.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Define control flow data structures for the CFG.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 36,42 ****
    } insns;
  
    /* Auxiliary info specific to a pass.  */
!   PTR aux;
  
    /* Location of any goto implicit in the edge.  */
    location_t goto_locus;
--- 36,42 ----
    } insns;
  
    /* Auxiliary info specific to a pass.  */
!   void *aux;
  
    /* Location of any goto implicit in the edge.  */
    location_t goto_locus;
*************** struct GTY((chain_next ("%h.next_bb"), c
*** 120,126 ****
    vec<edge, va_gc> *succs;
  
    /* Auxiliary info specific to a pass.  */
!   PTR GTY ((skip (""))) aux;
  
    /* Innermost loop containing the block.  */
    class loop *loop_father;
--- 120,126 ----
    vec<edge, va_gc> *succs;
  
    /* Auxiliary info specific to a pass.  */
!   void *GTY ((skip (""))) aux;
  
    /* Innermost loop containing the block.  */
    class loop *loop_father;
*************** struct GTY((chain_next ("%h.next_bb"), c
*** 148,167 ****
  
    /* Expected number of executions: calculated in profile.cc.  */
    profile_count count;
- 
-   /* The discriminator for this block.  The discriminator distinguishes
-      among several basic blocks that share a common locus, allowing for
-      more accurate sample-based profiling.  */
-   int discriminator;
  };
  
  /* This ensures that struct gimple_bb_info is smaller than
     struct rtl_bb_info, so that inlining the former into basic_block_def
     is the better choice.  */
! typedef int __assert_gimple_bb_smaller_rtl_bb
!               [(int) sizeof (struct rtl_bb_info)
!                - (int) sizeof (struct gimple_bb_info)];
! 
  
  #define BB_FREQ_MAX 10000
  
--- 148,159 ----
  
    /* Expected number of executions: calculated in profile.cc.  */
    profile_count count;
  };
  
  /* This ensures that struct gimple_bb_info is smaller than
     struct rtl_bb_info, so that inlining the former into basic_block_def
     is the better choice.  */
! STATIC_ASSERT (sizeof (rtl_bb_info) >= sizeof (gimple_bb_info));
  
  #define BB_FREQ_MAX 10000
  
*************** enum cfg_bb_flags
*** 317,323 ****
  
  /* Returns true if BB has precisely one successor.  */
  
! static inline bool
  single_succ_p (const_basic_block bb)
  {
    return EDGE_COUNT (bb->succs) == 1;
--- 309,315 ----
  
  /* Returns true if BB has precisely one successor.  */
  
! inline bool
  single_succ_p (const_basic_block bb)
  {
    return EDGE_COUNT (bb->succs) == 1;
*************** single_succ_p (const_basic_block bb)
*** 325,331 ****
  
  /* Returns true if BB has precisely one predecessor.  */
  
! static inline bool
  single_pred_p (const_basic_block bb)
  {
    return EDGE_COUNT (bb->preds) == 1;
--- 317,323 ----
  
  /* Returns true if BB has precisely one predecessor.  */
  
! inline bool
  single_pred_p (const_basic_block bb)
  {
    return EDGE_COUNT (bb->preds) == 1;
*************** single_pred_p (const_basic_block bb)
*** 334,340 ****
  /* Returns the single successor edge of basic block BB.  Aborts if
     BB does not have exactly one successor.  */
  
! static inline edge
  single_succ_edge (const_basic_block bb)
  {
    gcc_checking_assert (single_succ_p (bb));
--- 326,332 ----
  /* Returns the single successor edge of basic block BB.  Aborts if
     BB does not have exactly one successor.  */
  
! inline edge
  single_succ_edge (const_basic_block bb)
  {
    gcc_checking_assert (single_succ_p (bb));
*************** single_succ_edge (const_basic_block bb)
*** 344,350 ****
  /* Returns the single predecessor edge of basic block BB.  Aborts
     if BB does not have exactly one predecessor.  */
  
! static inline edge
  single_pred_edge (const_basic_block bb)
  {
    gcc_checking_assert (single_pred_p (bb));
--- 336,342 ----
  /* Returns the single predecessor edge of basic block BB.  Aborts
     if BB does not have exactly one predecessor.  */
  
! inline edge
  single_pred_edge (const_basic_block bb)
  {
    gcc_checking_assert (single_pred_p (bb));
*************** single_pred_edge (const_basic_block bb)
*** 354,360 ****
  /* Returns the single successor block of basic block BB.  Aborts
     if BB does not have exactly one successor.  */
  
! static inline basic_block
  single_succ (const_basic_block bb)
  {
    return single_succ_edge (bb)->dest;
--- 346,352 ----
  /* Returns the single successor block of basic block BB.  Aborts
     if BB does not have exactly one successor.  */
  
! inline basic_block
  single_succ (const_basic_block bb)
  {
    return single_succ_edge (bb)->dest;
*************** single_succ (const_basic_block bb)
*** 363,369 ****
  /* Returns the single predecessor block of basic block BB.  Aborts
     if BB does not have exactly one predecessor.*/
  
! static inline basic_block
  single_pred (const_basic_block bb)
  {
    return single_pred_edge (bb)->src;
--- 355,361 ----
  /* Returns the single predecessor block of basic block BB.  Aborts
     if BB does not have exactly one predecessor.*/
  
! inline basic_block
  single_pred (const_basic_block bb)
  {
    return single_pred_edge (bb)->src;
*************** struct edge_iterator {
*** 376,382 ****
    vec<edge, va_gc> **container;
  };
  
! static inline vec<edge, va_gc> *
  ei_container (edge_iterator i)
  {
    gcc_checking_assert (i.container);
--- 368,374 ----
    vec<edge, va_gc> **container;
  };
  
! inline vec<edge, va_gc> *
  ei_container (edge_iterator i)
  {
    gcc_checking_assert (i.container);
*************** ei_container (edge_iterator i)
*** 387,393 ****
  #define ei_last(iter) ei_last_1 (&(iter))
  
  /* Return an iterator pointing to the start of an edge vector.  */
! static inline edge_iterator
  ei_start_1 (vec<edge, va_gc> **ev)
  {
    edge_iterator i;
--- 379,385 ----
  #define ei_last(iter) ei_last_1 (&(iter))
  
  /* Return an iterator pointing to the start of an edge vector.  */
! inline edge_iterator
  ei_start_1 (vec<edge, va_gc> **ev)
  {
    edge_iterator i;
*************** ei_start_1 (vec<edge, va_gc> **ev)
*** 400,406 ****
  
  /* Return an iterator pointing to the last element of an edge
     vector.  */
! static inline edge_iterator
  ei_last_1 (vec<edge, va_gc> **ev)
  {
    edge_iterator i;
--- 392,398 ----
  
  /* Return an iterator pointing to the last element of an edge
     vector.  */
! inline edge_iterator
  ei_last_1 (vec<edge, va_gc> **ev)
  {
    edge_iterator i;
*************** ei_last_1 (vec<edge, va_gc> **ev)
*** 412,418 ****
  }
  
  /* Is the iterator `i' at the end of the sequence?  */
! static inline bool
  ei_end_p (edge_iterator i)
  {
    return (i.index == EDGE_COUNT (ei_container (i)));
--- 404,410 ----
  }
  
  /* Is the iterator `i' at the end of the sequence?  */
! inline bool
  ei_end_p (edge_iterator i)
  {
    return (i.index == EDGE_COUNT (ei_container (i)));
*************** ei_end_p (edge_iterator i)
*** 420,433 ****
  
  /* Is the iterator `i' at one position before the end of the
     sequence?  */
! static inline bool
  ei_one_before_end_p (edge_iterator i)
  {
    return (i.index + 1 == EDGE_COUNT (ei_container (i)));
  }
  
  /* Advance the iterator to the next element.  */
! static inline void
  ei_next (edge_iterator *i)
  {
    gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i)));
--- 412,425 ----
  
  /* Is the iterator `i' at one position before the end of the
     sequence?  */
! inline bool
  ei_one_before_end_p (edge_iterator i)
  {
    return (i.index + 1 == EDGE_COUNT (ei_container (i)));
  }
  
  /* Advance the iterator to the next element.  */
! inline void
  ei_next (edge_iterator *i)
  {
    gcc_checking_assert (i->index < EDGE_COUNT (ei_container (*i)));
*************** ei_next (edge_iterator *i)
*** 435,441 ****
  }
  
  /* Move the iterator to the previous element.  */
! static inline void
  ei_prev (edge_iterator *i)
  {
    gcc_checking_assert (i->index > 0);
--- 427,433 ----
  }
  
  /* Move the iterator to the previous element.  */
! inline void
  ei_prev (edge_iterator *i)
  {
    gcc_checking_assert (i->index > 0);
*************** ei_prev (edge_iterator *i)
*** 443,449 ****
  }
  
  /* Return the edge pointed to by the iterator `i'.  */
! static inline edge
  ei_edge (edge_iterator i)
  {
    return EDGE_I (ei_container (i), i.index);
--- 435,441 ----
  }
  
  /* Return the edge pointed to by the iterator `i'.  */
! inline edge
  ei_edge (edge_iterator i)
  {
    return EDGE_I (ei_container (i), i.index);
*************** ei_edge (edge_iterator i)
*** 452,458 ****
  /* Return an edge pointed to by the iterator.  Do it safely so that
     NULL is returned when the iterator is pointing at the end of the
     sequence.  */
! static inline edge
  ei_safe_edge (edge_iterator i)
  {
    return !ei_end_p (i) ? ei_edge (i) : NULL;
--- 444,450 ----
  /* Return an edge pointed to by the iterator.  Do it safely so that
     NULL is returned when the iterator is pointing at the end of the
     sequence.  */
! inline edge
  ei_safe_edge (edge_iterator i)
  {
    return !ei_end_p (i) ? ei_edge (i) : NULL;
*************** ei_safe_edge (edge_iterator i)
*** 462,468 ****
     *Edge P is set to the next edge if we are to continue to iterate
     and NULL otherwise.  */
  
! static inline bool
  ei_cond (edge_iterator ei, edge *p)
  {
    if (!ei_end_p (ei))
--- 454,460 ----
     *Edge P is set to the next edge if we are to continue to iterate
     and NULL otherwise.  */
  
! inline bool
  ei_cond (edge_iterator ei, edge *p)
  {
    if (!ei_end_p (ei))
*************** ei_cond (edge_iterator ei, edge *p)
*** 513,526 ****
  
  /* Return true if BB is in a transaction.  */
  
! static inline bool
  bb_in_transaction (basic_block bb)
  {
    return bb->flags & BB_IN_TRANSACTION;
  }
  
  /* Return true when one of the predecessor edges of BB is marked with EDGE_EH.  */
! static inline bool
  bb_has_eh_pred (basic_block bb)
  {
    edge e;
--- 505,518 ----
  
  /* Return true if BB is in a transaction.  */
  
! inline bool
  bb_in_transaction (basic_block bb)
  {
    return bb->flags & BB_IN_TRANSACTION;
  }
  
  /* Return true when one of the predecessor edges of BB is marked with EDGE_EH.  */
! inline bool
  bb_has_eh_pred (basic_block bb)
  {
    edge e;
*************** bb_has_eh_pred (basic_block bb)
*** 535,541 ****
  }
  
  /* Return true when one of the predecessor edges of BB is marked with EDGE_ABNORMAL.  */
! static inline bool
  bb_has_abnormal_pred (basic_block bb)
  {
    edge e;
--- 527,533 ----
  }
  
  /* Return true when one of the predecessor edges of BB is marked with EDGE_ABNORMAL.  */
! inline bool
  bb_has_abnormal_pred (basic_block bb)
  {
    edge e;
*************** bb_has_abnormal_pred (basic_block bb)
*** 550,556 ****
  }
  
  /* Return the fallthru edge in EDGES if it exists, NULL otherwise.  */
! static inline edge
  find_fallthru_edge (vec<edge, va_gc> *edges)
  {
    edge e;
--- 542,548 ----
  }
  
  /* Return the fallthru edge in EDGES if it exists, NULL otherwise.  */
! inline edge
  find_fallthru_edge (vec<edge, va_gc> *edges)
  {
    edge e;
*************** find_fallthru_edge (vec<edge, va_gc> *ed
*** 565,571 ****
  
  /* Check tha probability is sane.  */
  
! static inline void
  check_probability (int prob)
  {
    gcc_checking_assert (prob >= 0 && prob <= REG_BR_PROB_BASE);
--- 557,563 ----
  
  /* Check tha probability is sane.  */
  
! inline void
  check_probability (int prob)
  {
    gcc_checking_assert (prob >= 0 && prob <= REG_BR_PROB_BASE);
*************** check_probability (int prob)
*** 574,580 ****
  /* Given PROB1 and PROB2, return PROB1*PROB2/REG_BR_PROB_BASE. 
     Used to combine BB probabilities.  */
  
! static inline int
  combine_probabilities (int prob1, int prob2)
  {
    check_probability (prob1);
--- 566,572 ----
  /* Given PROB1 and PROB2, return PROB1*PROB2/REG_BR_PROB_BASE. 
     Used to combine BB probabilities.  */
  
! inline int
  combine_probabilities (int prob1, int prob2)
  {
    check_probability (prob1);
*************** combine_probabilities (int prob1, int pr
*** 586,592 ****
     interface when potentially scaling up, so that SCALE is not
     constrained to be < REG_BR_PROB_BASE.  */
  
! static inline gcov_type
  apply_scale (gcov_type freq, gcov_type scale)
  {
    return RDIV (freq * scale, REG_BR_PROB_BASE);
--- 578,584 ----
     interface when potentially scaling up, so that SCALE is not
     constrained to be < REG_BR_PROB_BASE.  */
  
! inline gcov_type
  apply_scale (gcov_type freq, gcov_type scale)
  {
    return RDIV (freq * scale, REG_BR_PROB_BASE);
*************** apply_scale (gcov_type freq, gcov_type s
*** 594,600 ****
  
  /* Apply probability PROB on frequency or count FREQ.  */
  
! static inline gcov_type
  apply_probability (gcov_type freq, int prob)
  {
    check_probability (prob);
--- 586,592 ----
  
  /* Apply probability PROB on frequency or count FREQ.  */
  
! inline gcov_type
  apply_probability (gcov_type freq, int prob)
  {
    check_probability (prob);
*************** apply_probability (gcov_type freq, int p
*** 603,609 ****
  
  /* Return inverse probability for PROB.  */
  
! static inline int
  inverse_probability (int prob1)
  {
    check_probability (prob1);
--- 595,601 ----
  
  /* Return inverse probability for PROB.  */
  
! inline int
  inverse_probability (int prob1)
  {
    check_probability (prob1);
*************** inverse_probability (int prob1)
*** 612,618 ****
  
  /* Return true if BB has at least one abnormal outgoing edge.  */
  
! static inline bool
  has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
  {
    edge e;
--- 604,610 ----
  
  /* Return true if BB has at least one abnormal outgoing edge.  */
  
! inline bool
  has_abnormal_or_eh_outgoing_edge_p (basic_block bb)
  {
    edge e;
*************** has_abnormal_or_eh_outgoing_edge_p (basi
*** 628,634 ****
  /* Return true when one of the predecessor edges of BB is marked with
     EDGE_ABNORMAL_CALL or EDGE_EH.  */
  
! static inline bool
  has_abnormal_call_or_eh_pred_edge_p (basic_block bb)
  {
    edge e;
--- 620,626 ----
  /* Return true when one of the predecessor edges of BB is marked with
     EDGE_ABNORMAL_CALL or EDGE_EH.  */
  
! inline bool
  has_abnormal_call_or_eh_pred_edge_p (basic_block bb)
  {
    edge e;
diff -Nrcpad gcc-12.2.0/gcc/bb-reorder.cc gcc-13.1.0/gcc/bb-reorder.cc
*** gcc-12.2.0/gcc/bb-reorder.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/bb-reorder.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** find_traces_1_round (int branch_th, prof
*** 761,767 ****
  			    & EDGE_CAN_FALLTHRU)
  			&& !(single_succ_edge (e->dest)->flags & EDGE_COMPLEX)
  			&& single_succ (e->dest) == best_edge->dest
! 			&& (e->dest->count.apply_scale (2, 1)
  			    >= best_edge->count () || for_size))
  		      {
  			best_edge = e;
--- 761,767 ----
  			    & EDGE_CAN_FALLTHRU)
  			&& !(single_succ_edge (e->dest)->flags & EDGE_COMPLEX)
  			&& single_succ (e->dest) == best_edge->dest
! 			&& (e->dest->count * 2
  			    >= best_edge->count () || for_size))
  		      {
  			best_edge = e;
*************** better_edge_p (const_basic_block bb, con
*** 944,950 ****
  
    /* The BEST_* values do not have to be best, but can be a bit smaller than
       maximum values.  */
!   profile_probability diff_prob = best_prob.apply_scale (1, 10);
  
    /* The smaller one is better to keep the original order.  */
    if (optimize_function_for_size_p (cfun))
--- 944,950 ----
  
    /* The BEST_* values do not have to be best, but can be a bit smaller than
       maximum values.  */
!   profile_probability diff_prob = best_prob / 10;
  
    /* The smaller one is better to keep the original order.  */
    if (optimize_function_for_size_p (cfun))
*************** better_edge_p (const_basic_block bb, con
*** 966,972 ****
      is_better_edge = false;
    else
      {
!       profile_count diff_count = best_count.apply_scale (1, 10);
        if (count < best_count - diff_count
  	  || (!best_count.initialized_p ()
  	      && count.nonzero_p ()))
--- 966,972 ----
      is_better_edge = false;
    else
      {
!       profile_count diff_count = best_count / 10;
        if (count < best_count - diff_count
  	  || (!best_count.initialized_p ()
  	      && count.nonzero_p ()))
*************** fix_up_fall_thru_edges (void)
*** 1998,2003 ****
--- 1998,2004 ----
  		     becomes EDGE_CROSSING.  */
  
  		  fall_thru->flags &= ~EDGE_CROSSING;
+ 		  unsigned old_count = EDGE_COUNT (cur_bb->succs);
  		  basic_block new_bb = force_nonfallthru (fall_thru);
  
  		  if (new_bb)
*************** fix_up_fall_thru_edges (void)
*** 2009,2015 ****
  		      gcc_assert (BB_PARTITION (new_bb)
                                    == BB_PARTITION (cur_bb));
  
! 		      single_succ_edge (new_bb)->flags |= EDGE_CROSSING;
  		    }
  		  else
  		    {
--- 2010,2034 ----
  		      gcc_assert (BB_PARTITION (new_bb)
                                    == BB_PARTITION (cur_bb));
  
! 		      edge e = single_succ_edge (new_bb);
! 		      e->flags |= EDGE_CROSSING;
! 		      if (EDGE_COUNT (cur_bb->succs) > old_count)
! 			{
! 			  /* If asm goto has a crossing fallthrough edge
! 			     and at least one of the labels to the same bb,
! 			     force_nonfallthru can result in the fallthrough
! 			     edge being redirected and a new edge added for the
! 			     label or more labels to e->dest.  As we've
! 			     temporarily cleared EDGE_CROSSING flag on the
! 			     fallthrough edge, we need to restore it again.
! 			     See PR108596.  */
! 			  rtx_insn *j = BB_END (cur_bb);
! 			  gcc_checking_assert (JUMP_P (j)
! 					       && asm_noperands (PATTERN (j)));
! 			  edge e2 = find_edge (cur_bb, e->dest);
! 			  if (e2)
! 			    e2->flags |= EDGE_CROSSING;
! 			}
  		    }
  		  else
  		    {
*************** public:
*** 2633,2639 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        if (targetm.cannot_modify_jumps_p ())
  	return false;
--- 2652,2658 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        if (targetm.cannot_modify_jumps_p ())
  	return false;
*************** public:
*** 2641,2647 ****
  	      && (flag_reorder_blocks || flag_reorder_blocks_and_partition));
      }
  
!   virtual unsigned int execute (function *);
  
  }; // class pass_reorder_blocks
  
--- 2660,2666 ----
  	      && (flag_reorder_blocks || flag_reorder_blocks_and_partition));
      }
  
!   unsigned int execute (function *) final override;
  
  }; // class pass_reorder_blocks
  
*************** public:
*** 2794,2801 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *);
!   virtual unsigned int execute (function *);
  
  }; // class pass_duplicate_computed_gotos
  
--- 2813,2820 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override;
!   unsigned int execute (function *) final override;
  
  }; // class pass_duplicate_computed_gotos
  
*************** public:
*** 2937,2944 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *);
!   virtual unsigned int execute (function *);
  
  }; // class pass_partition_blocks
  
--- 2956,2963 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override;
!   unsigned int execute (function *) final override;
  
  }; // class pass_partition_blocks
  
diff -Nrcpad gcc-12.2.0/gcc/bb-reorder.h gcc-13.1.0/gcc/bb-reorder.h
*** gcc-12.2.0/gcc/bb-reorder.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/bb-reorder.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Basic block reordering routines for the GNU compiler.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/bitmap.cc gcc-13.1.0/gcc/bitmap.cc
*** gcc-12.2.0/gcc/bitmap.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/bitmap.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/bitmap.h gcc-13.1.0/gcc/bitmap.h
*** gcc-12.2.0/gcc/bitmap.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/bitmap.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions to support general ended bitmaps.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void dump_bitmap_statistics (void
*** 461,467 ****
  /* Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
     to allocate from, NULL for GC'd bitmap.  */
  
! static inline void
  bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
  {
    head->first = head->current = NULL;
--- 461,467 ----
  /* Initialize a bitmap header.  OBSTACK indicates the bitmap obstack
     to allocate from, NULL for GC'd bitmap.  */
  
! inline void
  bitmap_initialize (bitmap head, bitmap_obstack *obstack CXX_MEM_STAT_INFO)
  {
    head->first = head->current = NULL;
*************** bitmap_initialize (bitmap head, bitmap_o
*** 476,482 ****
  /* Release a bitmap (but not its head).  This is suitable for pairing with
     bitmap_initialize.  */
  
! static inline void
  bitmap_release (bitmap head)
  {
    bitmap_clear (head);
--- 476,482 ----
  /* Release a bitmap (but not its head).  This is suitable for pairing with
     bitmap_initialize.  */
  
! inline void
  bitmap_release (bitmap head)
  {
    bitmap_clear (head);
*************** struct bitmap_iterator
*** 532,538 ****
  /* Initialize a single bitmap iterator.  START_BIT is the first bit to
     iterate from.  */
  
! static inline void
  bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
  		   unsigned start_bit, unsigned *bit_no)
  {
--- 532,538 ----
  /* Initialize a single bitmap iterator.  START_BIT is the first bit to
     iterate from.  */
  
! inline void
  bmp_iter_set_init (bitmap_iterator *bi, const_bitmap map,
  		   unsigned start_bit, unsigned *bit_no)
  {
*************** bmp_iter_set_init (bitmap_iterator *bi,
*** 576,582 ****
  /* Initialize an iterator to iterate over the intersection of two
     bitmaps.  START_BIT is the bit to commence from.  */
  
! static inline void
  bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
  		   unsigned start_bit, unsigned *bit_no)
  {
--- 576,582 ----
  /* Initialize an iterator to iterate over the intersection of two
     bitmaps.  START_BIT is the bit to commence from.  */
  
! inline void
  bmp_iter_and_init (bitmap_iterator *bi, const_bitmap map1, const_bitmap map2,
  		   unsigned start_bit, unsigned *bit_no)
  {
*************** bmp_iter_and_init (bitmap_iterator *bi,
*** 645,651 ****
  
  /* Initialize an iterator to iterate over the bits in MAP1 & ~MAP2.  */
  
! static inline void
  bmp_iter_and_compl_init (bitmap_iterator *bi,
  			 const_bitmap map1, const_bitmap map2,
  			 unsigned start_bit, unsigned *bit_no)
--- 645,651 ----
  
  /* Initialize an iterator to iterate over the bits in MAP1 & ~MAP2.  */
  
! inline void
  bmp_iter_and_compl_init (bitmap_iterator *bi,
  			 const_bitmap map1, const_bitmap map2,
  			 unsigned start_bit, unsigned *bit_no)
*************** bmp_iter_and_compl_init (bitmap_iterator
*** 696,702 ****
  /* Advance to the next bit in BI.  We don't advance to the next
     nonzero bit yet.  */
  
! static inline void
  bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
  {
    bi->bits >>= 1;
--- 696,702 ----
  /* Advance to the next bit in BI.  We don't advance to the next
     nonzero bit yet.  */
  
! inline void
  bmp_iter_next (bitmap_iterator *bi, unsigned *bit_no)
  {
    bi->bits >>= 1;
*************** bmp_iter_next (bitmap_iterator *bi, unsi
*** 705,711 ****
  
  /* Advance to first set bit in BI.  */
  
! static inline void
  bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
  {
  #if (GCC_VERSION >= 3004)
--- 705,711 ----
  
  /* Advance to first set bit in BI.  */
  
! inline void
  bmp_iter_next_bit (bitmap_iterator * bi, unsigned *bit_no)
  {
  #if (GCC_VERSION >= 3004)
*************** bmp_iter_next_bit (bitmap_iterator * bi,
*** 728,734 ****
     already advanced past the just iterated bit.  Return true if there
     is a bit to iterate.  */
  
! static inline bool
  bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
  {
    /* If our current word is nonzero, it contains the bit we want.  */
--- 728,734 ----
     already advanced past the just iterated bit.  Return true if there
     is a bit to iterate.  */
  
! inline bool
  bmp_iter_set (bitmap_iterator *bi, unsigned *bit_no)
  {
    /* If our current word is nonzero, it contains the bit we want.  */
*************** bmp_iter_set (bitmap_iterator *bi, unsig
*** 774,780 ****
     bitmaps.  We will have already advanced past the just iterated bit.
     Return true if there is a bit to iterate.  */
  
! static inline bool
  bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
  {
    /* If our current word is nonzero, it contains the bit we want.  */
--- 774,780 ----
     bitmaps.  We will have already advanced past the just iterated bit.
     Return true if there is a bit to iterate.  */
  
! inline bool
  bmp_iter_and (bitmap_iterator *bi, unsigned *bit_no)
  {
    /* If our current word is nonzero, it contains the bit we want.  */
*************** bmp_iter_and (bitmap_iterator *bi, unsig
*** 843,849 ****
     complemented bitmaps.  We will have already advanced past the just
     iterated bit.  */
  
! static inline bool
  bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
  {
    /* If our current word is nonzero, it contains the bit we want.  */
--- 843,849 ----
     complemented bitmaps.  We will have already advanced past the just
     iterated bit.  */
  
! inline bool
  bmp_iter_and_compl (bitmap_iterator *bi, unsigned *bit_no)
  {
    /* If our current word is nonzero, it contains the bit we want.  */
diff -Nrcpad gcc-12.2.0/gcc/btfout.cc gcc-13.1.0/gcc/btfout.cc
*** gcc-12.2.0/gcc/btfout.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/btfout.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Output BTF format from GCC.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Output BTF format from GCC.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** btf_calc_num_vbytes (ctf_dtdef_ref dtd)
*** 223,229 ****
        break;
  
      case BTF_KIND_ENUM:
!       vlen_bytes += vlen * sizeof (struct btf_enum);
        break;
  
      case BTF_KIND_FUNC_PROTO:
--- 223,231 ----
        break;
  
      case BTF_KIND_ENUM:
!       vlen_bytes += (dtd->dtd_data.ctti_size == 0x8)
! 			? vlen * sizeof (struct btf_enum64)
! 			: vlen * sizeof (struct btf_enum);
        break;
  
      case BTF_KIND_FUNC_PROTO:
*************** btf_datasec_push_entry (ctf_container_re
*** 288,294 ****
    ds.entries.safe_push (info);
  
    datasecs.safe_push (ds);
!   num_types_created++;
  }
  
  /* Construct all BTF_KIND_DATASEC records for CTFC. One such record is created
--- 290,324 ----
    ds.entries.safe_push (info);
  
    datasecs.safe_push (ds);
! }
! 
! 
! /* Return the section name, as of interest to btf_collect_datasec, for the
!    given symtab node.  Note that this deliberately returns NULL for objects
!    which do not go in a section btf_collect_datasec cares about.  */
! static const char *
! get_section_name (symtab_node *node)
! {
!   const char *section_name = node->get_section ();
! 
!   if (section_name == NULL)
!     {
!       switch (categorize_decl_for_section (node->decl, 0))
! 	{
! 	case SECCAT_BSS:
! 	  section_name = ".bss";
! 	  break;
! 	case SECCAT_DATA:
! 	  section_name = ".data";
! 	  break;
! 	case SECCAT_RODATA:
! 	  section_name = ".rodata";
! 	  break;
! 	default:;
! 	}
!     }
! 
!   return section_name;
  }
  
  /* Construct all BTF_KIND_DATASEC records for CTFC. One such record is created
*************** btf_datasec_push_entry (ctf_container_re
*** 299,305 ****
  static void
  btf_collect_datasec (ctf_container_ref ctfc)
  {
!   /* See cgraph.h struct symtab_node, which varpool_node extends.  */
    varpool_node *node;
    FOR_EACH_VARIABLE (node)
      {
--- 329,388 ----
  static void
  btf_collect_datasec (ctf_container_ref ctfc)
  {
!   cgraph_node *func;
!   FOR_EACH_FUNCTION (func)
!     {
!       dw_die_ref die = lookup_decl_die (func->decl);
!       if (die == NULL)
! 	continue;
! 
!       ctf_dtdef_ref dtd = ctf_dtd_lookup (ctfc, die);
!       if (dtd == NULL)
! 	continue;
! 
!       /* Functions actually get two types: a BTF_KIND_FUNC_PROTO, and
! 	 also a BTF_KIND_FUNC.  But the CTF container only allocates one
! 	 type per function, which matches closely with BTF_KIND_FUNC_PROTO.
! 	 For each such function, also allocate a BTF_KIND_FUNC entry.
! 	 These will be output later.  */
!       ctf_dtdef_ref func_dtd = ggc_cleared_alloc<ctf_dtdef_t> ();
!       func_dtd->dtd_data = dtd->dtd_data;
!       func_dtd->dtd_data.ctti_type = dtd->dtd_type;
!       func_dtd->linkage = dtd->linkage;
!       func_dtd->dtd_type = num_types_added + num_types_created;
! 
!       /* Only the BTF_KIND_FUNC type actually references the name. The
! 	 BTF_KIND_FUNC_PROTO is always anonymous.  */
!       dtd->dtd_data.ctti_name = 0;
! 
!       vec_safe_push (funcs, func_dtd);
!       num_types_created++;
! 
!       /* Mark any 'extern' funcs and add DATASEC entries for them.  */
!       if (DECL_EXTERNAL (func->decl))
! 	{
! 	  func_dtd->linkage = BTF_FUNC_EXTERN;
! 
! 	  const char *section_name = get_section_name (func);
! 	  /* Note: get_section_name () returns NULL for functions in text
! 	     section.  This is intentional, since we do not want to generate
! 	     DATASEC entries for them.  */
! 	  if (section_name == NULL)
! 	    continue;
! 
! 	  struct btf_var_secinfo info;
! 
! 	  /* +1 for the sentinel type not in the types map.  */
! 	  info.type = func_dtd->dtd_type + 1;
! 
! 	  /* Both zero at compile time.  */
! 	  info.size = 0;
! 	  info.offset = 0;
! 
! 	  btf_datasec_push_entry (ctfc, section_name, info);
! 	}
!     }
! 
    varpool_node *node;
    FOR_EACH_VARIABLE (node)
      {
*************** btf_collect_datasec (ctf_container_ref c
*** 311,335 ****
        if (dvd == NULL)
  	continue;
  
!       const char *section_name = node->get_section ();
  
        if (section_name == NULL)
! 	{
! 	  switch (categorize_decl_for_section (node->decl, 0))
! 	    {
! 	    case SECCAT_BSS:
! 	      section_name = ".bss";
! 	      break;
! 	    case SECCAT_DATA:
! 	      section_name = ".data";
! 	      break;
! 	    case SECCAT_RODATA:
! 	      section_name = ".rodata";
! 	      break;
! 	    default:
! 	      continue;
! 	    }
! 	}
  
        struct btf_var_secinfo info;
  
--- 394,406 ----
        if (dvd == NULL)
  	continue;
  
!       /* Mark extern variables.  */
!       if (DECL_EXTERNAL (node->decl))
! 	dvd->dvd_visibility = BTF_VAR_GLOBAL_EXTERN;
  
+       const char *section_name = get_section_name (node);
        if (section_name == NULL)
! 	continue;
  
        struct btf_var_secinfo info;
  
*************** btf_collect_datasec (ctf_container_ref c
*** 345,350 ****
--- 416,423 ----
        tree size = DECL_SIZE_UNIT (node->decl);
        if (tree_fits_uhwi_p (size))
  	info.size = tree_to_uhwi (size);
+       else if (VOID_TYPE_P (TREE_TYPE (node->decl)))
+ 	info.size = 1;
  
        /* Offset is left as 0 at compile time, to be filled in by loaders such
  	 as libbpf.  */
*************** btf_collect_datasec (ctf_container_ref c
*** 352,357 ****
--- 425,432 ----
  
        btf_datasec_push_entry (ctfc, section_name, info);
      }
+ 
+   num_types_created += datasecs.length ();
  }
  
  /* Return true if the type ID is that of a type which will not be emitted (for
*************** btf_dvd_emit_preprocess_cb (ctf_dvdef_re
*** 429,436 ****
  {
    ctf_dvdef_ref var = (ctf_dvdef_ref) * slot;
  
    /* Do not add variables which refer to unsupported types.  */
!   if (btf_removed_type_p (var->dvd_type))
      return 1;
  
    arg_ctfc->ctfc_vars_list[num_vars_added] = var;
--- 504,517 ----
  {
    ctf_dvdef_ref var = (ctf_dvdef_ref) * slot;
  
+   /* If this is an extern variable declaration with a defining declaration
+      later, skip it so that only the defining declaration is emitted.
+      This is the same case, fix and reasoning as in CTF; see PR105089.  */
+   if (ctf_dvd_ignore_lookup (arg_ctfc, var->dvd_key))
+     return 1;
+ 
    /* Do not add variables which refer to unsupported types.  */
!   if (!voids.contains (var->dvd_type) && btf_removed_type_p (var->dvd_type))
      return 1;
  
    arg_ctfc->ctfc_vars_list[num_vars_added] = var;
*************** btf_dtd_emit_preprocess_cb (ctf_containe
*** 450,477 ****
    if (!btf_emit_id_p (dtd->dtd_type))
      return;
  
-   uint32_t btf_kind
-     = get_btf_kind (CTF_V2_INFO_KIND (dtd->dtd_data.ctti_info));
- 
-   if (btf_kind == BTF_KIND_FUNC_PROTO)
-     {
-       /* Functions actually get two types: a BTF_KIND_FUNC_PROTO, and
- 	 also a BTF_KIND_FUNC. But the CTF container only allocates one
- 	 type per function, which matches closely with BTF_KIND_FUNC_PROTO.
- 	 For each such function, also allocate a BTF_KIND_FUNC entry.
- 	 These will be output later.  */
-       ctf_dtdef_ref func_dtd = ggc_cleared_alloc<ctf_dtdef_t> ();
-       func_dtd->dtd_data = dtd->dtd_data;
-       func_dtd->dtd_data.ctti_type = dtd->dtd_type;
- 
-       vec_safe_push (funcs, func_dtd);
-       num_types_created++;
- 
-       /* Only the BTF_KIND_FUNC type actually references the name. The
- 	 BTF_KIND_FUNC_PROTO is always anonymous.  */
-       dtd->dtd_data.ctti_name = 0;
-     }
- 
    ctfc->ctfc_num_vlen_bytes += btf_calc_num_vbytes (dtd);
  }
  
--- 531,536 ----
*************** btf_asm_type (ctf_container_ref ctfc, ct
*** 621,626 ****
--- 680,694 ----
        btf_size_type = 0;
      }
  
+   if (btf_kind == BTF_KIND_ENUM)
+     {
+       btf_kflag = dtd->dtd_enum_unsigned
+ 		    ? BTF_KF_ENUM_UNSIGNED
+ 		    : BTF_KF_ENUM_SIGNED;
+       if (dtd->dtd_data.ctti_size == 0x8)
+ 	btf_kind = BTF_KIND_ENUM64;
+    }
+ 
    dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name");
    dw2_asm_output_data (4, BTF_TYPE_INFO (btf_kind, btf_kflag, btf_vlen),
  		       "btt_info: kind=%u, kflag=%u, vlen=%u",
*************** btf_asm_type (ctf_container_ref ctfc, ct
*** 633,638 ****
--- 701,707 ----
      case BTF_KIND_UNION:
      case BTF_KIND_ENUM:
      case BTF_KIND_DATASEC:
+     case BTF_KIND_ENUM64:
        dw2_asm_output_data (4, dtd->dtd_data.ctti_size, "btt_size: %uB",
  			   dtd->dtd_data.ctti_size);
        return;
*************** btf_asm_varent (ctf_dvdef_ref var)
*** 663,669 ****
    dw2_asm_output_data (4, var->dvd_name_offset, "btv_name");
    dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_VAR, 0, 0), "btv_info");
    dw2_asm_output_data (4, get_btf_id (var->dvd_type), "btv_type");
!   dw2_asm_output_data (4, (var->dvd_visibility ? 1 : 0), "btv_linkage");
  }
  
  /* Asm'out a member description following a BTF_KIND_STRUCT or
--- 732,738 ----
    dw2_asm_output_data (4, var->dvd_name_offset, "btv_name");
    dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_VAR, 0, 0), "btv_info");
    dw2_asm_output_data (4, get_btf_id (var->dvd_type), "btv_type");
!   dw2_asm_output_data (4, var->dvd_visibility, "btv_linkage");
  }
  
  /* Asm'out a member description following a BTF_KIND_STRUCT or
*************** btf_asm_sou_member (ctf_container_ref ct
*** 706,718 ****
      }
  }
  
! /* Asm'out an enum constant following a BTF_KIND_ENUM.  */
  
  static void
! btf_asm_enum_const (ctf_dmdef_t * dmd)
  {
    dw2_asm_output_data (4, dmd->dmd_name_offset, "bte_name");
!   dw2_asm_output_data (4, dmd->dmd_value, "bte_value");
  }
  
  /* Asm'out a function parameter description following a BTF_KIND_FUNC_PROTO.  */
--- 775,793 ----
      }
  }
  
! /* Asm'out an enum constant following a BTF_KIND_ENUM{,64}.  */
  
  static void
! btf_asm_enum_const (unsigned int size, ctf_dmdef_t * dmd)
  {
    dw2_asm_output_data (4, dmd->dmd_name_offset, "bte_name");
!   if (size == 4)
!     dw2_asm_output_data (size, dmd->dmd_value, "bte_value");
!   else
!     {
!       dw2_asm_output_data (4, dmd->dmd_value & 0xffffffff, "bte_value_lo32");
!       dw2_asm_output_data (4, (dmd->dmd_value >> 32) & 0xffffffff, "bte_value_hi32");
!     }
  }
  
  /* Asm'out a function parameter description following a BTF_KIND_FUNC_PROTO.  */
*************** static void
*** 740,746 ****
  btf_asm_func_type (ctf_dtdef_ref dtd)
  {
    dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name");
!   dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0, 0), "btt_info");
    dw2_asm_output_data (4, get_btf_id (dtd->dtd_data.ctti_type), "btt_type");
  }
  
--- 815,824 ----
  btf_asm_func_type (ctf_dtdef_ref dtd)
  {
    dw2_asm_output_data (4, dtd->dtd_data.ctti_name, "btt_name");
!   dw2_asm_output_data (4, BTF_TYPE_INFO (BTF_KIND_FUNC, 0,
!                                          dtd->linkage),
!                        "btt_info: kind=%u, kflag=%u, linkage=%u",
!                        BTF_KIND_FUNC, 0, dtd->linkage);
    dw2_asm_output_data (4, get_btf_id (dtd->dtd_data.ctti_type), "btt_type");
  }
  
*************** output_asm_btf_sou_fields (ctf_container
*** 867,873 ****
        btf_asm_sou_member (ctfc, dmd);
  }
  
! /* Output all enumerator constants following a BTF_KIND_ENUM.  */
  
  static void
  output_asm_btf_enum_list (ctf_container_ref ARG_UNUSED (ctfc),
--- 945,951 ----
        btf_asm_sou_member (ctfc, dmd);
  }
  
! /* Output all enumerator constants following a BTF_KIND_ENUM{,64}.  */
  
  static void
  output_asm_btf_enum_list (ctf_container_ref ARG_UNUSED (ctfc),
*************** output_asm_btf_enum_list (ctf_container_
*** 877,883 ****
  
    for (dmd = dtd->dtd_u.dtu_members;
         dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd))
!     btf_asm_enum_const (dmd);
  }
  
  /* Output all function arguments following a BTF_KIND_FUNC_PROTO.  */
--- 955,961 ----
  
    for (dmd = dtd->dtd_u.dtu_members;
         dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd))
!     btf_asm_enum_const (dtd->dtd_data.ctti_size, dmd);
  }
  
  /* Output all function arguments following a BTF_KIND_FUNC_PROTO.  */
*************** output_asm_btf_vlen_bytes (ctf_container
*** 914,919 ****
--- 992,1001 ----
        if (dtd->dtd_data.ctti_size < 1)
  	break;
  
+       /* In BTF the CHAR `encoding' seems to not be used, so clear it
+          here.  */
+       dtd->dtd_u.dtu_enc.cte_format &= ~BTF_INT_CHAR;
+ 
        encoding = BTF_INT_DATA (dtd->dtd_u.dtu_enc.cte_format,
  			       dtd->dtd_u.dtu_enc.cte_offset,
  			       dtd->dtd_u.dtu_enc.cte_bits);
*************** btf_init_postprocess (void)
*** 1040,1054 ****
  {
    ctf_container_ref tu_ctfc = ctf_get_tu_ctfc ();
  
-   size_t i;
-   size_t num_ctf_types = tu_ctfc->ctfc_types->elements ();
- 
    holes.create (0);
    voids.create (0);
  
    num_types_added = 0;
    num_types_created = 0;
  
    if (num_ctf_types)
      {
        init_btf_id_map (num_ctf_types + 1);
--- 1122,1170 ----
  {
    ctf_container_ref tu_ctfc = ctf_get_tu_ctfc ();
  
    holes.create (0);
    voids.create (0);
  
    num_types_added = 0;
    num_types_created = 0;
  
+   /* Workaround for 'const void' variables.  These variables are sometimes used
+      in eBPF programs to address kernel symbols.  DWARF does not generate const
+      qualifier on void type, so we would incorrectly emit these variables
+      without the const qualifier.
+      Unfortunately we need the TREE node to know it was const, and we need
+      to create the const modifier type (if needed) now, before making the types
+      list.  So we can't avoid iterating with FOR_EACH_VARIABLE here, and then
+      again when creating the DATASEC entries.  */
+   ctf_id_t constvoid_id = CTF_NULL_TYPEID;
+   varpool_node *var;
+   FOR_EACH_VARIABLE (var)
+     {
+       if (!var->decl)
+ 	continue;
+ 
+       tree type = TREE_TYPE (var->decl);
+       if (type && VOID_TYPE_P (type) && TYPE_READONLY (type))
+ 	{
+ 	  dw_die_ref die = lookup_decl_die (var->decl);
+ 	  if (die == NULL)
+ 	    continue;
+ 
+ 	  ctf_dvdef_ref dvd = ctf_dvd_lookup (tu_ctfc, die);
+ 	  if (dvd == NULL)
+ 	    continue;
+ 
+ 	  /* Create the 'const' modifier type for void.  */
+ 	  if (constvoid_id == CTF_NULL_TYPEID)
+ 	    constvoid_id = ctf_add_reftype (tu_ctfc, CTF_ADD_ROOT,
+ 					    dvd->dvd_type, CTF_K_CONST, NULL);
+ 	  dvd->dvd_type = constvoid_id;
+ 	}
+     }
+ 
+   size_t i;
+   size_t num_ctf_types = tu_ctfc->ctfc_types->elements ();
+ 
    if (num_ctf_types)
      {
        init_btf_id_map (num_ctf_types + 1);
diff -Nrcpad gcc-12.2.0/gcc/builtin-attrs.def gcc-13.1.0/gcc/builtin-attrs.def
*** gcc-12.2.0/gcc/builtin-attrs.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/builtin-attrs.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  
  This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Joseph Myers <jsm28@cam.ac.uk>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/builtin-types.def gcc-13.1.0/gcc/builtin-types.def
*** gcc-12.2.0/gcc/builtin-types.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/builtin-types.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** DEF_PRIMITIVE_TYPE (BT_UNWINDWORD, (*lan
*** 82,87 ****
--- 82,90 ----
  DEF_PRIMITIVE_TYPE (BT_FLOAT, float_type_node)
  DEF_PRIMITIVE_TYPE (BT_DOUBLE, double_type_node)
  DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE, long_double_type_node)
+ DEF_PRIMITIVE_TYPE (BT_BFLOAT16, (bfloat16_type_node
+ 				  ? bfloat16_type_node
+ 				  : error_mark_node))
  DEF_PRIMITIVE_TYPE (BT_FLOAT16, (float16_type_node
  				 ? float16_type_node
  				 : error_mark_node))
*************** DEF_PRIMITIVE_TYPE (BT_FLOAT128X, (float
*** 106,111 ****
--- 109,142 ----
  DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT, complex_float_type_node)
  DEF_PRIMITIVE_TYPE (BT_COMPLEX_DOUBLE, complex_double_type_node)
  DEF_PRIMITIVE_TYPE (BT_COMPLEX_LONGDOUBLE, complex_long_double_type_node)
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT16, (float16_type_node
+ 					 ? build_complex_type
+ 						(float16_type_node)
+ 					 : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT32, (float32_type_node
+ 					 ? build_complex_type
+ 						(float32_type_node)
+ 					 : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT64, (float64_type_node
+ 					 ? build_complex_type
+ 						(float64_type_node)
+ 					 : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT128, (float128_type_node
+ 					  ? build_complex_type
+ 						(float128_type_node)
+ 					  : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT32X, (float32x_type_node
+ 					  ? build_complex_type
+ 						(float32x_type_node)
+ 					  : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT64X, (float64x_type_node
+ 					  ? build_complex_type
+ 						(float64x_type_node)
+ 					  : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_COMPLEX_FLOAT128X, (float128x_type_node
+ 					   ? build_complex_type
+ 						(float128x_type_node)
+ 					   : error_mark_node))
  
  DEF_PRIMITIVE_TYPE (BT_PTR, ptr_type_node)
  DEF_PRIMITIVE_TYPE (BT_FILEPTR, fileptr_type_node)
*************** DEF_PRIMITIVE_TYPE (BT_CONST_DOUBLE_PTR,
*** 132,137 ****
--- 163,189 ----
  		     (build_qualified_type (double_type_node,
  		     			    TYPE_QUAL_CONST)))
  DEF_PRIMITIVE_TYPE (BT_LONGDOUBLE_PTR, long_double_ptr_type_node)
+ DEF_PRIMITIVE_TYPE (BT_FLOAT16_PTR, (float16_type_node
+ 				      ? build_pointer_type (float16_type_node)
+ 				      : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_FLOAT32_PTR, (float32_type_node
+ 				      ? build_pointer_type (float32_type_node)
+ 				      : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_FLOAT64_PTR, (float64_type_node
+ 				      ? build_pointer_type (float64_type_node)
+ 				      : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_FLOAT128_PTR, (float128_type_node
+ 				      ? build_pointer_type (float128_type_node)
+ 				      : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_FLOAT32X_PTR, (float32x_type_node
+ 				      ? build_pointer_type (float32x_type_node)
+ 				      : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_FLOAT64X_PTR, (float64x_type_node
+ 				      ? build_pointer_type (float64x_type_node)
+ 				      : error_mark_node))
+ DEF_PRIMITIVE_TYPE (BT_FLOAT128X_PTR, (float128x_type_node
+ 				      ? build_pointer_type (float128x_type_node)
+ 				      : error_mark_node))
  DEF_PRIMITIVE_TYPE (BT_PID, pid_type_node)
  DEF_PRIMITIVE_TYPE (BT_SIZE, size_type_node)
  DEF_PRIMITIVE_TYPE (BT_CONST_SIZE,
*************** DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBL
*** 218,229 ****
--- 270,309 ----
  		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
  DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
  		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT16_COMPLEX_FLOAT16,
+ 		     BT_COMPLEX_FLOAT16, BT_COMPLEX_FLOAT16)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT32_COMPLEX_FLOAT32,
+ 		     BT_COMPLEX_FLOAT32, BT_COMPLEX_FLOAT32)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT64_COMPLEX_FLOAT64,
+ 		     BT_COMPLEX_FLOAT64, BT_COMPLEX_FLOAT64)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT128_COMPLEX_FLOAT128,
+ 		     BT_COMPLEX_FLOAT128, BT_COMPLEX_FLOAT128)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X,
+ 		     BT_COMPLEX_FLOAT32X, BT_COMPLEX_FLOAT32X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X,
+ 		     BT_COMPLEX_FLOAT64X, BT_COMPLEX_FLOAT64X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X,
+ 		     BT_COMPLEX_FLOAT128X, BT_COMPLEX_FLOAT128X)
  DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_COMPLEX_FLOAT,
  		     BT_FLOAT, BT_COMPLEX_FLOAT)
  DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_COMPLEX_DOUBLE,
  		     BT_DOUBLE, BT_COMPLEX_DOUBLE)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE,
  		     BT_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT16_COMPLEX_FLOAT16,
+ 		     BT_FLOAT16, BT_COMPLEX_FLOAT16)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT32_COMPLEX_FLOAT32,
+ 		     BT_FLOAT32, BT_COMPLEX_FLOAT32)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT64_COMPLEX_FLOAT64,
+ 		     BT_FLOAT64, BT_COMPLEX_FLOAT64)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT128_COMPLEX_FLOAT128,
+ 		     BT_FLOAT128, BT_COMPLEX_FLOAT128)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT32X_COMPLEX_FLOAT32X,
+ 		     BT_FLOAT32X, BT_COMPLEX_FLOAT32X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT64X_COMPLEX_FLOAT64X,
+ 		     BT_FLOAT64X, BT_COMPLEX_FLOAT64X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT128X_COMPLEX_FLOAT128X,
+ 		     BT_FLOAT128X, BT_COMPLEX_FLOAT128X)
  DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_FLOAT_FLOAT,
  		     BT_COMPLEX_FLOAT, BT_FLOAT)
  DEF_FUNCTION_TYPE_1 (BT_FN_COMPLEX_DOUBLE_DOUBLE,
*************** DEF_FUNCTION_TYPE_1 (BT_FN_INT_PTR, BT_I
*** 244,258 ****
--- 324,359 ----
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT, BT_INT, BT_FLOAT)
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_DOUBLE, BT_INT, BT_DOUBLE)
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_LONGDOUBLE, BT_INT, BT_LONGDOUBLE)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT16, BT_INT, BT_FLOAT16)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT32, BT_INT, BT_FLOAT32)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT64, BT_INT, BT_FLOAT64)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT128, BT_INT, BT_FLOAT128)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT32X, BT_INT, BT_FLOAT32X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT64X, BT_INT, BT_FLOAT64X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_INT_FLOAT128X, BT_INT, BT_FLOAT128X)
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT32, BT_INT, BT_DFLOAT32)
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT64, BT_INT, BT_DFLOAT64)
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_DFLOAT128, BT_INT, BT_DFLOAT128)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT, BT_LONG, BT_FLOAT)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONG_DOUBLE, BT_LONG, BT_DOUBLE)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONG_LONGDOUBLE, BT_LONG, BT_LONGDOUBLE)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT16, BT_LONG, BT_FLOAT16)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT32, BT_LONG, BT_FLOAT32)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT64, BT_LONG, BT_FLOAT64)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT128, BT_LONG, BT_FLOAT128)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT32X, BT_LONG, BT_FLOAT32X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT64X, BT_LONG, BT_FLOAT64X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONG_FLOAT128X, BT_LONG, BT_FLOAT128X)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT, BT_LONGLONG, BT_FLOAT)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_DOUBLE, BT_LONGLONG, BT_DOUBLE)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_LONGDOUBLE, BT_LONGLONG, BT_LONGDOUBLE)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT16, BT_LONGLONG, BT_FLOAT16)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT32, BT_LONGLONG, BT_FLOAT32)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT64, BT_LONGLONG, BT_FLOAT64)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT128, BT_LONGLONG, BT_FLOAT128)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT32X, BT_LONGLONG, BT_FLOAT32X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT64X, BT_LONGLONG, BT_FLOAT64X)
+ DEF_FUNCTION_TYPE_1 (BT_FN_LONGLONG_FLOAT128X, BT_LONGLONG, BT_FLOAT128X)
  DEF_FUNCTION_TYPE_1 (BT_FN_VOID_PTR, BT_VOID, BT_PTR)
  DEF_FUNCTION_TYPE_1 (BT_FN_SIZE_CONST_STRING, BT_SIZE, BT_CONST_STRING)
  DEF_FUNCTION_TYPE_1 (BT_FN_INT_CONST_STRING, BT_INT, BT_CONST_STRING)
*************** DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT_CONST_S
*** 264,269 ****
--- 365,371 ----
  DEF_FUNCTION_TYPE_1 (BT_FN_DOUBLE_CONST_STRING, BT_DOUBLE, BT_CONST_STRING)
  DEF_FUNCTION_TYPE_1 (BT_FN_LONGDOUBLE_CONST_STRING,
  		     BT_LONGDOUBLE, BT_CONST_STRING)
+ DEF_FUNCTION_TYPE_1 (BT_FN_BFLOAT16_CONST_STRING, BT_BFLOAT16, BT_CONST_STRING)
  DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT16_CONST_STRING, BT_FLOAT16, BT_CONST_STRING)
  DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT32_CONST_STRING, BT_FLOAT32, BT_CONST_STRING)
  DEF_FUNCTION_TYPE_1 (BT_FN_FLOAT64_CONST_STRING, BT_FLOAT64, BT_CONST_STRING)
*************** DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64X_FLOA
*** 415,426 ****
--- 517,544 ----
  		     BT_FLOAT64X, BT_FLOAT64X, BT_FLOAT64X)
  DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X,
  		     BT_FLOAT128X, BT_FLOAT128X, BT_FLOAT128X)
+ DEF_FUNCTION_TYPE_2 (BT_FN_BFLOAT16_BFLOAT16_BFLOAT16,
+ 		     BT_BFLOAT16, BT_BFLOAT16, BT_BFLOAT16)
  DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_FLOATPTR,
  		     BT_FLOAT, BT_FLOAT, BT_FLOAT_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_DOUBLEPTR,
  		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR,
  		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT16_FLOAT16_FLOAT16PTR,
+ 		     BT_FLOAT16, BT_FLOAT16, BT_FLOAT16_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32_FLOAT32_FLOAT32PTR,
+ 		     BT_FLOAT32, BT_FLOAT32, BT_FLOAT32_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64_FLOAT64_FLOAT64PTR,
+ 		     BT_FLOAT64, BT_FLOAT64, BT_FLOAT64_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128_FLOAT128_FLOAT128PTR,
+ 		     BT_FLOAT128, BT_FLOAT128, BT_FLOAT128_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32X_FLOAT32X_FLOAT32XPTR,
+ 		     BT_FLOAT32X, BT_FLOAT32X, BT_FLOAT32X_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64X_FLOAT64X_FLOAT64XPTR,
+ 		     BT_FLOAT64X, BT_FLOAT64X, BT_FLOAT64X_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128X_FLOAT128X_FLOAT128XPTR,
+ 		     BT_FLOAT128X, BT_FLOAT128X, BT_FLOAT128X_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_LONGDOUBLE,
  		     BT_FLOAT, BT_FLOAT, BT_LONGDOUBLE)
  DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_LONGDOUBLE,
*************** DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE
*** 431,442 ****
--- 549,588 ----
  		     BT_DOUBLE, BT_DOUBLE, BT_INT)
  DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INT,
  		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT16_FLOAT16_INT,
+ 		     BT_FLOAT16, BT_FLOAT16, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32_FLOAT32_INT,
+ 		     BT_FLOAT32, BT_FLOAT32, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64_FLOAT64_INT,
+ 		     BT_FLOAT64, BT_FLOAT64, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128_FLOAT128_INT,
+ 		     BT_FLOAT128, BT_FLOAT128, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32X_FLOAT32X_INT,
+ 		     BT_FLOAT32X, BT_FLOAT32X, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64X_FLOAT64X_INT,
+ 		     BT_FLOAT64X, BT_FLOAT64X, BT_INT)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128X_FLOAT128X_INT,
+ 		     BT_FLOAT128X, BT_FLOAT128X, BT_INT)
  DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_FLOAT_INTPTR,
  		     BT_FLOAT, BT_FLOAT, BT_INT_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE_INTPTR,
  		     BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR,
  		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT16_FLOAT16_INTPTR,
+ 		     BT_FLOAT16, BT_FLOAT16, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32_FLOAT32_INTPTR,
+ 		     BT_FLOAT32, BT_FLOAT32, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64_FLOAT64_INTPTR,
+ 		     BT_FLOAT64, BT_FLOAT64, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128_FLOAT128_INTPTR,
+ 		     BT_FLOAT128, BT_FLOAT128, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32X_FLOAT32X_INTPTR,
+ 		     BT_FLOAT32X, BT_FLOAT32X, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64X_FLOAT64X_INTPTR,
+ 		     BT_FLOAT64X, BT_FLOAT64X, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128X_FLOAT128X_INTPTR,
+ 		     BT_FLOAT128X, BT_FLOAT128X, BT_INT_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT_INT_FLOAT,
  		     BT_FLOAT, BT_INT, BT_FLOAT)
  DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_INT_DOUBLE,
*************** DEF_FUNCTION_TYPE_2 (BT_FN_DOUBLE_DOUBLE
*** 449,454 ****
--- 595,614 ----
  		     BT_DOUBLE, BT_DOUBLE, BT_LONG)
  DEF_FUNCTION_TYPE_2 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONG,
  		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT16_FLOAT16_LONG,
+ 		     BT_FLOAT16, BT_FLOAT16, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32_FLOAT32_LONG,
+ 		     BT_FLOAT32, BT_FLOAT32, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64_FLOAT64_LONG,
+ 		     BT_FLOAT64, BT_FLOAT64, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128_FLOAT128_LONG,
+ 		     BT_FLOAT128, BT_FLOAT128, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT32X_FLOAT32X_LONG,
+ 		     BT_FLOAT32X, BT_FLOAT32X, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT64X_FLOAT64X_LONG,
+ 		     BT_FLOAT64X, BT_FLOAT64X, BT_LONG)
+ DEF_FUNCTION_TYPE_2 (BT_FN_FLOAT128X_FLOAT128X_LONG,
+ 		     BT_FLOAT128X, BT_FLOAT128X, BT_LONG)
  DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_VALIST_ARG,
  		     BT_INT, BT_CONST_STRING, BT_VALIST_ARG)
  DEF_FUNCTION_TYPE_2 (BT_FN_PTR_SIZE_SIZE,
*************** DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_DOUBL
*** 461,466 ****
--- 621,640 ----
  		     BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE, BT_COMPLEX_DOUBLE)
  DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE,
  		     BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE, BT_COMPLEX_LONGDOUBLE)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT16_COMPLEX_FLOAT16_COMPLEX_FLOAT16,
+ 		     BT_COMPLEX_FLOAT16, BT_COMPLEX_FLOAT16, BT_COMPLEX_FLOAT16)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT32_COMPLEX_FLOAT32_COMPLEX_FLOAT32,
+ 		     BT_COMPLEX_FLOAT32, BT_COMPLEX_FLOAT32, BT_COMPLEX_FLOAT32)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT64_COMPLEX_FLOAT64_COMPLEX_FLOAT64,
+ 		     BT_COMPLEX_FLOAT64, BT_COMPLEX_FLOAT64, BT_COMPLEX_FLOAT64)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT128_COMPLEX_FLOAT128_COMPLEX_FLOAT128,
+ 		     BT_COMPLEX_FLOAT128, BT_COMPLEX_FLOAT128, BT_COMPLEX_FLOAT128)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X_COMPLEX_FLOAT32X,
+ 		     BT_COMPLEX_FLOAT32X, BT_COMPLEX_FLOAT32X, BT_COMPLEX_FLOAT32X)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X_COMPLEX_FLOAT64X,
+ 		     BT_COMPLEX_FLOAT64X, BT_COMPLEX_FLOAT64X, BT_COMPLEX_FLOAT64X)
+ DEF_FUNCTION_TYPE_2 (BT_FN_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X_COMPLEX_FLOAT128X,
+ 		     BT_COMPLEX_FLOAT128X, BT_COMPLEX_FLOAT128X, BT_COMPLEX_FLOAT128X)
  DEF_FUNCTION_TYPE_2 (BT_FN_VOID_PTR_PTR, BT_VOID, BT_PTR, BT_PTR)
  DEF_FUNCTION_TYPE_2 (BT_FN_INT_CONST_STRING_PTR_CONST_STRING,
  		     BT_INT, BT_CONST_STRING, BT_PTR_CONST_STRING)
*************** DEF_FUNCTION_TYPE_3 (BT_FN_DOUBLE_DOUBLE
*** 574,579 ****
--- 748,767 ----
  		     BT_DOUBLE, BT_DOUBLE, BT_DOUBLE, BT_INT_PTR)
  DEF_FUNCTION_TYPE_3 (BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR,
  		     BT_LONGDOUBLE, BT_LONGDOUBLE, BT_LONGDOUBLE, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT16_FLOAT16_FLOAT16_INTPTR,
+ 		     BT_FLOAT16, BT_FLOAT16, BT_FLOAT16, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT32_FLOAT32_FLOAT32_INTPTR,
+ 		     BT_FLOAT32, BT_FLOAT32, BT_FLOAT32, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT64_FLOAT64_FLOAT64_INTPTR,
+ 		     BT_FLOAT64, BT_FLOAT64, BT_FLOAT64, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT128_FLOAT128_FLOAT128_INTPTR,
+ 		     BT_FLOAT128, BT_FLOAT128, BT_FLOAT128, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_INTPTR,
+ 		     BT_FLOAT32X, BT_FLOAT32X, BT_FLOAT32X, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_INTPTR,
+ 		     BT_FLOAT64X, BT_FLOAT64X, BT_FLOAT64X, BT_INT_PTR)
+ DEF_FUNCTION_TYPE_3 (BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_INTPTR,
+ 		     BT_FLOAT128X, BT_FLOAT128X, BT_FLOAT128X, BT_INT_PTR)
  DEF_FUNCTION_TYPE_3 (BT_FN_VOID_FLOAT_FLOATPTR_FLOATPTR,
  		     BT_VOID, BT_FLOAT, BT_FLOAT_PTR, BT_FLOAT_PTR)
  DEF_FUNCTION_TYPE_3 (BT_FN_VOID_DOUBLE_DOUBLEPTR_DOUBLEPTR,
diff -Nrcpad gcc-12.2.0/gcc/builtins.cc gcc-13.1.0/gcc/builtins.cc
*** gcc-12.2.0/gcc/builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Expand builtin functions.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Expand builtin functions.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 67,79 ****
  #include "asan.h"
  #include "internal-fn.h"
  #include "case-cfn-macros.h"
  #include "gimple-fold.h"
  #include "intl.h"
  #include "file-prefix-map.h" /* remap_macro_filename()  */
  #include "gomp-constants.h"
  #include "omp-general.h"
  #include "tree-dfa.h"
- #include "gimple-iterator.h"
  #include "gimple-ssa.h"
  #include "tree-ssa-live.h"
  #include "tree-outof-ssa.h"
--- 67,79 ----
  #include "asan.h"
  #include "internal-fn.h"
  #include "case-cfn-macros.h"
+ #include "gimple-iterator.h"
  #include "gimple-fold.h"
  #include "intl.h"
  #include "file-prefix-map.h" /* remap_macro_filename()  */
  #include "gomp-constants.h"
  #include "omp-general.h"
  #include "tree-dfa.h"
  #include "gimple-ssa.h"
  #include "tree-ssa-live.h"
  #include "tree-outof-ssa.h"
*************** static rtx expand_builtin_fegetround (tr
*** 123,128 ****
--- 123,129 ----
  static rtx expand_builtin_feclear_feraise_except (tree, rtx, machine_mode,
  						  optab);
  static rtx expand_builtin_cexpi (tree, rtx);
+ static rtx expand_builtin_issignaling (tree, rtx);
  static rtx expand_builtin_int_roundingfn (tree, rtx);
  static rtx expand_builtin_int_roundingfn_2 (tree, rtx);
  static rtx expand_builtin_next_arg (void);
*************** c_strlen (tree arg, int only_value, c_st
*** 613,619 ****
    if (eltsize != tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (src)))))
      return NULL_TREE;
  
!   /* Set MAXELTS to sizeof (SRC) / sizeof (*SRC) - 1, the maximum possible
       length of SRC.  Prefer TYPE_SIZE() to TREE_STRING_LENGTH() if possible
       in case the latter is less than the size of the array, such as when
       SRC refers to a short string literal used to initialize a large array.
--- 614,620 ----
    if (eltsize != tree_to_uhwi (TYPE_SIZE_UNIT (TREE_TYPE (TREE_TYPE (src)))))
      return NULL_TREE;
  
!   /* Set MAXELTS to ARRAY_SIZE (SRC) - 1, the maximum possible
       length of SRC.  Prefer TYPE_SIZE() to TREE_STRING_LENGTH() if possible
       in case the latter is less than the size of the array, such as when
       SRC refers to a short string literal used to initialize a large array.
*************** c_strlen (tree arg, int only_value, c_st
*** 695,708 ****
      {
        /* Suppress multiple warnings for propagated constant strings.  */
        if (only_value != 2
! 	  && !warning_suppressed_p (arg, OPT_Warray_bounds)
! 	  && warning_at (loc, OPT_Warray_bounds,
  			 "offset %qwi outside bounds of constant string",
  			 eltoff))
  	{
  	  if (decl)
  	    inform (DECL_SOURCE_LOCATION (decl), "%qE declared here", decl);
! 	  suppress_warning (arg, OPT_Warray_bounds);
  	}
        return NULL_TREE;
      }
--- 696,709 ----
      {
        /* Suppress multiple warnings for propagated constant strings.  */
        if (only_value != 2
! 	  && !warning_suppressed_p (arg, OPT_Warray_bounds_)
! 	  && warning_at (loc, OPT_Warray_bounds_,
  			 "offset %qwi outside bounds of constant string",
  			 eltoff))
  	{
  	  if (decl)
  	    inform (DECL_SOURCE_LOCATION (decl), "%qE declared here", decl);
! 	  suppress_warning (arg, OPT_Warray_bounds_);
  	}
        return NULL_TREE;
      }
*************** apply_args_size (void)
*** 1445,1462 ****
  	  {
  	    fixed_size_mode mode = targetm.calls.get_raw_arg_mode (regno);
  
! 	    gcc_assert (mode != VOIDmode);
! 
! 	    align = GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT;
! 	    if (size % align != 0)
! 	      size = CEIL (size, align) * align;
! 	    size += GET_MODE_SIZE (mode);
! 	    apply_args_mode[regno] = mode;
  	  }
  	else
! 	  {
! 	    apply_args_mode[regno] = as_a <fixed_size_mode> (VOIDmode);
! 	  }
      }
    return size;
  }
--- 1446,1464 ----
  	  {
  	    fixed_size_mode mode = targetm.calls.get_raw_arg_mode (regno);
  
! 	    if (mode != VOIDmode)
! 	      {
! 		align = GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT;
! 		if (size % align != 0)
! 		  size = CEIL (size, align) * align;
! 		size += GET_MODE_SIZE (mode);
! 		apply_args_mode[regno] = mode;
! 	      }
! 	    else
! 	      apply_args_mode[regno] = as_a <fixed_size_mode> (VOIDmode);
  	  }
  	else
! 	  apply_args_mode[regno] = as_a <fixed_size_mode> (VOIDmode);
      }
    return size;
  }
*************** apply_result_size (void)
*** 1480,1492 ****
  	  {
  	    fixed_size_mode mode = targetm.calls.get_raw_result_mode (regno);
  
! 	    gcc_assert (mode != VOIDmode);
! 
! 	    align = GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT;
! 	    if (size % align != 0)
! 	      size = CEIL (size, align) * align;
! 	    size += GET_MODE_SIZE (mode);
! 	    apply_result_mode[regno] = mode;
  	  }
  	else
  	  apply_result_mode[regno] = as_a <fixed_size_mode> (VOIDmode);
--- 1482,1497 ----
  	  {
  	    fixed_size_mode mode = targetm.calls.get_raw_result_mode (regno);
  
! 	    if (mode != VOIDmode)
! 	      {
! 		align = GET_MODE_ALIGNMENT (mode) / BITS_PER_UNIT;
! 		if (size % align != 0)
! 		  size = CEIL (size, align) * align;
! 		size += GET_MODE_SIZE (mode);
! 		apply_result_mode[regno] = mode;
! 	      }
! 	    else
! 	      apply_result_mode[regno] = as_a <fixed_size_mode> (VOIDmode);
  	  }
  	else
  	  apply_result_mode[regno] = as_a <fixed_size_mode> (VOIDmode);
*************** mathfn_built_in_2 (tree type, combined_f
*** 1930,1974 ****
    built_in_function fcodef64x = END_BUILTINS;
    built_in_function fcodef128x = END_BUILTINS;
  
    switch (fn)
      {
  #define SEQ_OF_CASE_MATHFN			\
!     CASE_MATHFN (ACOS)				\
!     CASE_MATHFN (ACOSH)				\
!     CASE_MATHFN (ASIN)				\
!     CASE_MATHFN (ASINH)				\
!     CASE_MATHFN (ATAN)				\
!     CASE_MATHFN (ATAN2)				\
!     CASE_MATHFN (ATANH)				\
!     CASE_MATHFN (CBRT)				\
      CASE_MATHFN_FLOATN (CEIL)			\
      CASE_MATHFN (CEXPI)				\
      CASE_MATHFN_FLOATN (COPYSIGN)		\
!     CASE_MATHFN (COS)				\
!     CASE_MATHFN (COSH)				\
      CASE_MATHFN (DREM)				\
!     CASE_MATHFN (ERF)				\
!     CASE_MATHFN (ERFC)				\
!     CASE_MATHFN (EXP)				\
      CASE_MATHFN (EXP10)				\
!     CASE_MATHFN (EXP2)				\
!     CASE_MATHFN (EXPM1)				\
!     CASE_MATHFN (FABS)				\
!     CASE_MATHFN (FDIM)				\
      CASE_MATHFN_FLOATN (FLOOR)			\
      CASE_MATHFN_FLOATN (FMA)			\
      CASE_MATHFN_FLOATN (FMAX)			\
      CASE_MATHFN_FLOATN (FMIN)			\
!     CASE_MATHFN (FMOD)				\
!     CASE_MATHFN (FREXP)				\
      CASE_MATHFN (GAMMA)				\
      CASE_MATHFN_REENT (GAMMA) /* GAMMA_R */	\
!     CASE_MATHFN (HUGE_VAL)			\
!     CASE_MATHFN (HYPOT)				\
!     CASE_MATHFN (ILOGB)				\
      CASE_MATHFN (ICEIL)				\
      CASE_MATHFN (IFLOOR)			\
!     CASE_MATHFN (INF)				\
      CASE_MATHFN (IRINT)				\
      CASE_MATHFN (IROUND)			\
      CASE_MATHFN (ISINF)				\
--- 1935,1984 ----
    built_in_function fcodef64x = END_BUILTINS;
    built_in_function fcodef128x = END_BUILTINS;
  
+   /* If <math.h> has been included somehow, HUGE_VAL and NAN definitions
+      break the uses below.  */
+ #undef HUGE_VAL
+ #undef NAN
+ 
    switch (fn)
      {
  #define SEQ_OF_CASE_MATHFN			\
!     CASE_MATHFN_FLOATN (ACOS)			\
!     CASE_MATHFN_FLOATN (ACOSH)			\
!     CASE_MATHFN_FLOATN (ASIN)			\
!     CASE_MATHFN_FLOATN (ASINH)			\
!     CASE_MATHFN_FLOATN (ATAN)			\
!     CASE_MATHFN_FLOATN (ATAN2)			\
!     CASE_MATHFN_FLOATN (ATANH)			\
!     CASE_MATHFN_FLOATN (CBRT)			\
      CASE_MATHFN_FLOATN (CEIL)			\
      CASE_MATHFN (CEXPI)				\
      CASE_MATHFN_FLOATN (COPYSIGN)		\
!     CASE_MATHFN_FLOATN (COS)			\
!     CASE_MATHFN_FLOATN (COSH)			\
      CASE_MATHFN (DREM)				\
!     CASE_MATHFN_FLOATN (ERF)			\
!     CASE_MATHFN_FLOATN (ERFC)			\
!     CASE_MATHFN_FLOATN (EXP)			\
      CASE_MATHFN (EXP10)				\
!     CASE_MATHFN_FLOATN (EXP2)			\
!     CASE_MATHFN_FLOATN (EXPM1)			\
!     CASE_MATHFN_FLOATN (FABS)			\
!     CASE_MATHFN_FLOATN (FDIM)			\
      CASE_MATHFN_FLOATN (FLOOR)			\
      CASE_MATHFN_FLOATN (FMA)			\
      CASE_MATHFN_FLOATN (FMAX)			\
      CASE_MATHFN_FLOATN (FMIN)			\
!     CASE_MATHFN_FLOATN (FMOD)			\
!     CASE_MATHFN_FLOATN (FREXP)			\
      CASE_MATHFN (GAMMA)				\
      CASE_MATHFN_REENT (GAMMA) /* GAMMA_R */	\
!     CASE_MATHFN_FLOATN (HUGE_VAL)		\
!     CASE_MATHFN_FLOATN (HYPOT)			\
!     CASE_MATHFN_FLOATN (ILOGB)			\
      CASE_MATHFN (ICEIL)				\
      CASE_MATHFN (IFLOOR)			\
!     CASE_MATHFN_FLOATN (INF)			\
      CASE_MATHFN (IRINT)				\
      CASE_MATHFN (IROUND)			\
      CASE_MATHFN (ISINF)				\
*************** mathfn_built_in_2 (tree type, combined_f
*** 1976,2022 ****
      CASE_MATHFN (J1)				\
      CASE_MATHFN (JN)				\
      CASE_MATHFN (LCEIL)				\
!     CASE_MATHFN (LDEXP)				\
      CASE_MATHFN (LFLOOR)			\
!     CASE_MATHFN (LGAMMA)			\
      CASE_MATHFN_REENT (LGAMMA) /* LGAMMA_R */	\
      CASE_MATHFN (LLCEIL)			\
      CASE_MATHFN (LLFLOOR)			\
!     CASE_MATHFN (LLRINT)			\
!     CASE_MATHFN (LLROUND)			\
!     CASE_MATHFN (LOG)				\
!     CASE_MATHFN (LOG10)				\
!     CASE_MATHFN (LOG1P)				\
!     CASE_MATHFN (LOG2)				\
!     CASE_MATHFN (LOGB)				\
!     CASE_MATHFN (LRINT)				\
!     CASE_MATHFN (LROUND)			\
!     CASE_MATHFN (MODF)				\
!     CASE_MATHFN (NAN)				\
!     CASE_MATHFN (NANS)				\
      CASE_MATHFN_FLOATN (NEARBYINT)		\
!     CASE_MATHFN (NEXTAFTER)			\
      CASE_MATHFN (NEXTTOWARD)			\
!     CASE_MATHFN (POW)				\
      CASE_MATHFN (POWI)				\
      CASE_MATHFN (POW10)				\
!     CASE_MATHFN (REMAINDER)			\
!     CASE_MATHFN (REMQUO)			\
      CASE_MATHFN_FLOATN (RINT)			\
      CASE_MATHFN_FLOATN (ROUND)			\
      CASE_MATHFN_FLOATN (ROUNDEVEN)		\
      CASE_MATHFN (SCALB)				\
!     CASE_MATHFN (SCALBLN)			\
!     CASE_MATHFN (SCALBN)			\
      CASE_MATHFN (SIGNBIT)			\
      CASE_MATHFN (SIGNIFICAND)			\
!     CASE_MATHFN (SIN)				\
      CASE_MATHFN (SINCOS)			\
!     CASE_MATHFN (SINH)				\
      CASE_MATHFN_FLOATN (SQRT)			\
!     CASE_MATHFN (TAN)				\
!     CASE_MATHFN (TANH)				\
!     CASE_MATHFN (TGAMMA)			\
      CASE_MATHFN_FLOATN (TRUNC)			\
      CASE_MATHFN (Y0)				\
      CASE_MATHFN (Y1)				\
--- 1986,2032 ----
      CASE_MATHFN (J1)				\
      CASE_MATHFN (JN)				\
      CASE_MATHFN (LCEIL)				\
!     CASE_MATHFN_FLOATN (LDEXP)			\
      CASE_MATHFN (LFLOOR)			\
!     CASE_MATHFN_FLOATN (LGAMMA)			\
      CASE_MATHFN_REENT (LGAMMA) /* LGAMMA_R */	\
      CASE_MATHFN (LLCEIL)			\
      CASE_MATHFN (LLFLOOR)			\
!     CASE_MATHFN_FLOATN (LLRINT)			\
!     CASE_MATHFN_FLOATN (LLROUND)		\
!     CASE_MATHFN_FLOATN (LOG)			\
!     CASE_MATHFN_FLOATN (LOG10)			\
!     CASE_MATHFN_FLOATN (LOG1P)			\
!     CASE_MATHFN_FLOATN (LOG2)			\
!     CASE_MATHFN_FLOATN (LOGB)			\
!     CASE_MATHFN_FLOATN (LRINT)			\
!     CASE_MATHFN_FLOATN (LROUND)			\
!     CASE_MATHFN_FLOATN (MODF)			\
!     CASE_MATHFN_FLOATN (NAN)			\
!     CASE_MATHFN_FLOATN (NANS)			\
      CASE_MATHFN_FLOATN (NEARBYINT)		\
!     CASE_MATHFN_FLOATN (NEXTAFTER)		\
      CASE_MATHFN (NEXTTOWARD)			\
!     CASE_MATHFN_FLOATN (POW)			\
      CASE_MATHFN (POWI)				\
      CASE_MATHFN (POW10)				\
!     CASE_MATHFN_FLOATN (REMAINDER)		\
!     CASE_MATHFN_FLOATN (REMQUO)			\
      CASE_MATHFN_FLOATN (RINT)			\
      CASE_MATHFN_FLOATN (ROUND)			\
      CASE_MATHFN_FLOATN (ROUNDEVEN)		\
      CASE_MATHFN (SCALB)				\
!     CASE_MATHFN_FLOATN (SCALBLN)		\
!     CASE_MATHFN_FLOATN (SCALBN)			\
      CASE_MATHFN (SIGNBIT)			\
      CASE_MATHFN (SIGNIFICAND)			\
!     CASE_MATHFN_FLOATN (SIN)			\
      CASE_MATHFN (SINCOS)			\
!     CASE_MATHFN_FLOATN (SINH)			\
      CASE_MATHFN_FLOATN (SQRT)			\
!     CASE_MATHFN_FLOATN (TAN)			\
!     CASE_MATHFN_FLOATN (TANH)			\
!     CASE_MATHFN_FLOATN (TGAMMA)			\
      CASE_MATHFN_FLOATN (TRUNC)			\
      CASE_MATHFN (Y0)				\
      CASE_MATHFN (Y1)				\
*************** mathfn_built_in (tree type, combined_fn
*** 2083,2088 ****
--- 2093,2106 ----
    return mathfn_built_in_1 (type, fn, /*implicit=*/ 1);
  }
  
+ /* Like mathfn_built_in_1, but always use the explicit array.  */
+ 
+ tree
+ mathfn_built_in_explicit (tree type, combined_fn fn)
+ {
+   return mathfn_built_in_1 (type, fn, /*implicit=*/ 0);
+ }
+ 
  /* Like mathfn_built_in_1, but take a built_in_function and
     always use the implicit array.  */
  
*************** build_call_nofold_loc (location_t loc, t
*** 2747,2752 ****
--- 2765,3064 ----
    return fn;
  }
  
+ /* Expand the __builtin_issignaling builtin.  This needs to handle
+    all floating point formats that do support NaNs (for those that
+    don't it just sets target to 0).  */
+ 
+ static rtx
+ expand_builtin_issignaling (tree exp, rtx target)
+ {
+   if (!validate_arglist (exp, REAL_TYPE, VOID_TYPE))
+     return NULL_RTX;
+ 
+   tree arg = CALL_EXPR_ARG (exp, 0);
+   scalar_float_mode fmode = SCALAR_FLOAT_TYPE_MODE (TREE_TYPE (arg));
+   const struct real_format *fmt = REAL_MODE_FORMAT (fmode);
+ 
+   /* Expand the argument yielding a RTX expression. */
+   rtx temp = expand_normal (arg);
+ 
+   /* If mode doesn't support NaN, always return 0.
+      Don't use !HONOR_SNANS (fmode) here, so there is some possibility of
+      __builtin_issignaling working without -fsignaling-nans.  Especially
+      when -fno-signaling-nans is the default.
+      On the other side, MODE_HAS_NANS (fmode) is unnecessary, with
+      -ffinite-math-only even __builtin_isnan or __builtin_fpclassify
+      fold to 0 or non-NaN/Inf classification.  */
+   if (!HONOR_NANS (fmode))
+     {
+       emit_move_insn (target, const0_rtx);
+       return target;
+     }
+ 
+   /* Check if the back end provides an insn that handles issignaling for the
+      argument's mode. */
+   enum insn_code icode = optab_handler (issignaling_optab, fmode);
+   if (icode != CODE_FOR_nothing)
+     {
+       rtx_insn *last = get_last_insn ();
+       rtx this_target = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));
+       if (maybe_emit_unop_insn (icode, this_target, temp, UNKNOWN))
+ 	return this_target;
+       delete_insns_since (last);
+     }
+ 
+   if (DECIMAL_FLOAT_MODE_P (fmode))
+     {
+       scalar_int_mode imode;
+       rtx hi;
+       switch (fmt->ieee_bits)
+ 	{
+ 	case 32:
+ 	case 64:
+ 	  imode = int_mode_for_mode (fmode).require ();
+ 	  temp = gen_lowpart (imode, temp);
+ 	  break;
+ 	case 128:
+ 	  imode = int_mode_for_size (64, 1).require ();
+ 	  hi = NULL_RTX;
+ 	  /* For decimal128, TImode support isn't always there and even when
+ 	     it is, working on the DImode high part is usually better.  */
+ 	  if (!MEM_P (temp))
+ 	    {
+ 	      if (rtx t = simplify_gen_subreg (imode, temp, fmode,
+ 					       subreg_highpart_offset (imode,
+ 								       fmode)))
+ 		hi = t;
+ 	      else
+ 		{
+ 		  scalar_int_mode imode2;
+ 		  if (int_mode_for_mode (fmode).exists (&imode2))
+ 		    {
+ 		      rtx temp2 = gen_lowpart (imode2, temp);
+ 		      poly_uint64 off = subreg_highpart_offset (imode, imode2);
+ 		      if (rtx t = simplify_gen_subreg (imode, temp2,
+ 						       imode2, off))
+ 			hi = t;
+ 		    }
+ 		}
+ 	      if (!hi)
+ 		{
+ 		  rtx mem = assign_stack_temp (fmode, GET_MODE_SIZE (fmode));
+ 		  emit_move_insn (mem, temp);
+ 		  temp = mem;
+ 		}
+ 	    }
+ 	  if (!hi)
+ 	    {
+ 	      poly_int64 offset
+ 		= subreg_highpart_offset (imode, GET_MODE (temp));
+ 	      hi = adjust_address (temp, imode, offset);
+ 	    }
+ 	  temp = hi;
+ 	  break;
+ 	default:
+ 	  gcc_unreachable ();
+ 	}
+       /* In all of decimal{32,64,128}, there is MSB sign bit and sNaN
+ 	 have 6 bits below it all set.  */
+       rtx val
+ 	= GEN_INT (HOST_WIDE_INT_C (0x3f) << (GET_MODE_BITSIZE (imode) - 7));
+       temp = expand_binop (imode, and_optab, temp, val,
+ 			   NULL_RTX, 1, OPTAB_LIB_WIDEN);
+       temp = emit_store_flag_force (target, EQ, temp, val, imode, 1, 1);
+       return temp;
+     }
+ 
+   /* Only PDP11 has these defined differently but doesn't support NaNs.  */
+   gcc_assert (FLOAT_WORDS_BIG_ENDIAN == WORDS_BIG_ENDIAN);
+   gcc_assert (fmt->signbit_ro > 0 && fmt->b == 2);
+   gcc_assert (MODE_COMPOSITE_P (fmode)
+ 	      || (fmt->pnan == fmt->p
+ 		  && fmt->signbit_ro == fmt->signbit_rw));
+ 
+   switch (fmt->p)
+     {
+     case 106: /* IBM double double  */
+       /* For IBM double double, recurse on the most significant double.  */
+       gcc_assert (MODE_COMPOSITE_P (fmode));
+       temp = convert_modes (DFmode, fmode, temp, 0);
+       fmode = DFmode;
+       fmt = REAL_MODE_FORMAT (DFmode);
+       /* FALLTHRU */
+     case 8: /* bfloat */
+     case 11: /* IEEE half */
+     case 24: /* IEEE single */
+     case 53: /* IEEE double or Intel extended with rounding to double */
+       if (fmt->p == 53 && fmt->signbit_ro == 79)
+ 	goto extended;
+       {
+ 	scalar_int_mode imode = int_mode_for_mode (fmode).require ();
+ 	temp = gen_lowpart (imode, temp);
+ 	rtx val = GEN_INT ((HOST_WIDE_INT_M1U << (fmt->p - 2))
+ 			   & ~(HOST_WIDE_INT_M1U << fmt->signbit_ro));
+ 	if (fmt->qnan_msb_set)
+ 	  {
+ 	    rtx mask = GEN_INT (~(HOST_WIDE_INT_M1U << fmt->signbit_ro));
+ 	    rtx bit = GEN_INT (HOST_WIDE_INT_1U << (fmt->p - 2));
+ 	    /* For non-MIPS/PA IEEE single/double/half or bfloat, expand to:
+ 	       ((temp ^ bit) & mask) > val.  */
+ 	    temp = expand_binop (imode, xor_optab, temp, bit,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = expand_binop (imode, and_optab, temp, mask,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = emit_store_flag_force (target, GTU, temp, val, imode,
+ 					  1, 1);
+ 	  }
+ 	else
+ 	  {
+ 	    /* For MIPS/PA IEEE single/double, expand to:
+ 	       (temp & val) == val.  */
+ 	    temp = expand_binop (imode, and_optab, temp, val,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = emit_store_flag_force (target, EQ, temp, val, imode,
+ 					  1, 1);
+ 	  }
+       }
+       break;
+     case 113: /* IEEE quad */
+       {
+ 	rtx hi = NULL_RTX, lo = NULL_RTX;
+ 	scalar_int_mode imode = int_mode_for_size (64, 1).require ();
+ 	/* For IEEE quad, TImode support isn't always there and even when
+ 	   it is, working on DImode parts is usually better.  */
+ 	if (!MEM_P (temp))
+ 	  {
+ 	    hi = simplify_gen_subreg (imode, temp, fmode,
+ 				      subreg_highpart_offset (imode, fmode));
+ 	    lo = simplify_gen_subreg (imode, temp, fmode,
+ 				      subreg_lowpart_offset (imode, fmode));
+ 	    if (!hi || !lo)
+ 	      {
+ 		scalar_int_mode imode2;
+ 		if (int_mode_for_mode (fmode).exists (&imode2))
+ 		  {
+ 		    rtx temp2 = gen_lowpart (imode2, temp);
+ 		    hi = simplify_gen_subreg (imode, temp2, imode2,
+ 					      subreg_highpart_offset (imode,
+ 								      imode2));
+ 		    lo = simplify_gen_subreg (imode, temp2, imode2,
+ 					      subreg_lowpart_offset (imode,
+ 								     imode2));
+ 		  }
+ 	      }
+ 	    if (!hi || !lo)
+ 	      {
+ 		rtx mem = assign_stack_temp (fmode, GET_MODE_SIZE (fmode));
+ 		emit_move_insn (mem, temp);
+ 		temp = mem;
+ 	      }
+ 	  }
+ 	if (!hi || !lo)
+ 	  {
+ 	    poly_int64 offset
+ 	      = subreg_highpart_offset (imode, GET_MODE (temp));
+ 	    hi = adjust_address (temp, imode, offset);
+ 	    offset = subreg_lowpart_offset (imode, GET_MODE (temp));
+ 	    lo = adjust_address (temp, imode, offset);
+ 	  }
+ 	rtx val = GEN_INT ((HOST_WIDE_INT_M1U << (fmt->p - 2 - 64))
+ 			   & ~(HOST_WIDE_INT_M1U << (fmt->signbit_ro - 64)));
+ 	if (fmt->qnan_msb_set)
+ 	  {
+ 	    rtx mask = GEN_INT (~(HOST_WIDE_INT_M1U << (fmt->signbit_ro
+ 							- 64)));
+ 	    rtx bit = GEN_INT (HOST_WIDE_INT_1U << (fmt->p - 2 - 64));
+ 	    /* For non-MIPS/PA IEEE quad, expand to:
+ 	       (((hi ^ bit) | ((lo | -lo) >> 63)) & mask) > val.  */
+ 	    rtx nlo = expand_unop (imode, neg_optab, lo, NULL_RTX, 0);
+ 	    lo = expand_binop (imode, ior_optab, lo, nlo,
+ 			       NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    lo = expand_shift (RSHIFT_EXPR, imode, lo, 63, NULL_RTX, 1);
+ 	    temp = expand_binop (imode, xor_optab, hi, bit,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = expand_binop (imode, ior_optab, temp, lo,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = expand_binop (imode, and_optab, temp, mask,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = emit_store_flag_force (target, GTU, temp, val, imode,
+ 					  1, 1);
+ 	  }
+ 	else
+ 	  {
+ 	    /* For MIPS/PA IEEE quad, expand to:
+ 	       (hi & val) == val.  */
+ 	    temp = expand_binop (imode, and_optab, hi, val,
+ 				 NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	    temp = emit_store_flag_force (target, EQ, temp, val, imode,
+ 					  1, 1);
+ 	  }
+       }
+       break;
+     case 64: /* Intel or Motorola extended */
+     extended:
+       {
+ 	rtx ex, hi, lo;
+ 	scalar_int_mode imode = int_mode_for_size (32, 1).require ();
+ 	scalar_int_mode iemode = int_mode_for_size (16, 1).require ();
+ 	if (!MEM_P (temp))
+ 	  {
+ 	    rtx mem = assign_stack_temp (fmode, GET_MODE_SIZE (fmode));
+ 	    emit_move_insn (mem, temp);
+ 	    temp = mem;
+ 	  }
+ 	if (fmt->signbit_ro == 95)
+ 	  {
+ 	    /* Motorola, always big endian, with 16-bit gap in between
+ 	       16-bit sign+exponent and 64-bit mantissa.  */
+ 	    ex = adjust_address (temp, iemode, 0);
+ 	    hi = adjust_address (temp, imode, 4);
+ 	    lo = adjust_address (temp, imode, 8);
+ 	  }
+ 	else if (!WORDS_BIG_ENDIAN)
+ 	  {
+ 	    /* Intel little endian, 64-bit mantissa followed by 16-bit
+ 	       sign+exponent and then either 16 or 48 bits of gap.  */
+ 	    ex = adjust_address (temp, iemode, 8);
+ 	    hi = adjust_address (temp, imode, 4);
+ 	    lo = adjust_address (temp, imode, 0);
+ 	  }
+ 	else
+ 	  {
+ 	    /* Big endian Itanium.  */
+ 	    ex = adjust_address (temp, iemode, 0);
+ 	    hi = adjust_address (temp, imode, 2);
+ 	    lo = adjust_address (temp, imode, 6);
+ 	  }
+ 	rtx val = GEN_INT (HOST_WIDE_INT_M1U << 30);
+ 	gcc_assert (fmt->qnan_msb_set);
+ 	rtx mask = GEN_INT (0x7fff);
+ 	rtx bit = GEN_INT (HOST_WIDE_INT_1U << 30);
+ 	/* For Intel/Motorola extended format, expand to:
+ 	   (ex & mask) == mask && ((hi ^ bit) | ((lo | -lo) >> 31)) > val.  */
+ 	rtx nlo = expand_unop (imode, neg_optab, lo, NULL_RTX, 0);
+ 	lo = expand_binop (imode, ior_optab, lo, nlo,
+ 			   NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	lo = expand_shift (RSHIFT_EXPR, imode, lo, 31, NULL_RTX, 1);
+ 	temp = expand_binop (imode, xor_optab, hi, bit,
+ 			     NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	temp = expand_binop (imode, ior_optab, temp, lo,
+ 			     NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	temp = emit_store_flag_force (target, GTU, temp, val, imode, 1, 1);
+ 	ex = expand_binop (iemode, and_optab, ex, mask,
+ 			   NULL_RTX, 1, OPTAB_LIB_WIDEN);
+ 	ex = emit_store_flag_force (gen_reg_rtx (GET_MODE (temp)), EQ,
+ 				    ex, mask, iemode, 1, 1);
+ 	temp = expand_binop (GET_MODE (temp), and_optab, temp, ex,
+ 			     NULL_RTX, 1, OPTAB_LIB_WIDEN);
+       }
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   return temp;
+ }
+ 
  /* Expand a call to one of the builtin rounding functions gcc defines
     as an extension (lfloor and lceil).  As these are gcc extensions we
     do not need to worry about setting errno to EDOM.
*************** builtin_memset_read_str (void *data, voi
*** 3904,3910 ****
  	return const_vec;
  
        /* Use the move expander with CONST_VECTOR.  */
!       target = targetm.gen_memset_scratch_rtx (mode);
        emit_move_insn (target, const_vec);
        return target;
      }
--- 4216,4222 ----
  	return const_vec;
  
        /* Use the move expander with CONST_VECTOR.  */
!       target = gen_reg_rtx (mode);
        emit_move_insn (target, const_vec);
        return target;
      }
*************** builtin_memset_gen_str (void *data, void
*** 3948,3954 ****
  	 the memset expander.  */
        insn_code icode = optab_handler (vec_duplicate_optab, mode);
  
!       target = targetm.gen_memset_scratch_rtx (mode);
        class expand_operand ops[2];
        create_output_operand (&ops[0], target, mode);
        create_input_operand (&ops[1], (rtx) data, QImode);
--- 4260,4266 ----
  	 the memset expander.  */
        insn_code icode = optab_handler (vec_duplicate_optab, mode);
  
!       target = gen_reg_rtx (mode);
        class expand_operand ops[2];
        create_output_operand (&ops[0], target, mode);
        create_input_operand (&ops[1], (rtx) data, QImode);
*************** expand_builtin_trap (void)
*** 5189,5194 ****
--- 5501,5509 ----
  static void
  expand_builtin_unreachable (void)
  {
+   /* Use gimple_build_builtin_unreachable or builtin_decl_unreachable
+      to avoid this.  */
+   gcc_checking_assert (!sanitize_flags_p (SANITIZE_UNREACHABLE));
    emit_barrier ();
  }
  
*************** expand_builtin_signbit (tree exp, rtx ta
*** 5505,5513 ****
    if (icode != CODE_FOR_nothing)
      {
        rtx_insn *last = get_last_insn ();
!       target = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));
!       if (maybe_emit_unop_insn (icode, target, temp, UNKNOWN))
! 	return target;
        delete_insns_since (last);
      }
  
--- 5820,5828 ----
    if (icode != CODE_FOR_nothing)
      {
        rtx_insn *last = get_last_insn ();
!       rtx this_target = gen_reg_rtx (TYPE_MODE (TREE_TYPE (exp)));
!       if (maybe_emit_unop_insn (icode, this_target, temp, UNKNOWN))
! 	return this_target;
        delete_insns_since (last);
      }
  
*************** expand_ifn_atomic_compare_exchange_into_
*** 6031,6038 ****
        if (GET_MODE (boolret) != mode)
  	boolret = convert_modes (mode, GET_MODE (boolret), boolret, 1);
        x = force_reg (mode, x);
!       write_complex_part (target, boolret, true);
!       write_complex_part (target, x, false);
      }
  }
  
--- 6346,6353 ----
        if (GET_MODE (boolret) != mode)
  	boolret = convert_modes (mode, GET_MODE (boolret), boolret, 1);
        x = force_reg (mode, x);
!       write_complex_part (target, boolret, true, true);
!       write_complex_part (target, x, false, false);
      }
  }
  
*************** expand_ifn_atomic_compare_exchange (gcal
*** 6087,6094 ****
        rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
        if (GET_MODE (boolret) != mode)
  	boolret = convert_modes (mode, GET_MODE (boolret), boolret, 1);
!       write_complex_part (target, boolret, true);
!       write_complex_part (target, oldval, false);
      }
  }
  
--- 6402,6409 ----
        rtx target = expand_expr (lhs, NULL_RTX, VOIDmode, EXPAND_WRITE);
        if (GET_MODE (boolret) != mode)
  	boolret = convert_modes (mode, GET_MODE (boolret), boolret, 1);
!       write_complex_part (target, boolret, true, true);
!       write_complex_part (target, oldval, false, false);
      }
  }
  
*************** inline_string_cmp (rtx target, tree var_
*** 6831,6838 ****
  
        op0 = convert_modes (mode, unit_mode, op0, 1);
        op1 = convert_modes (mode, unit_mode, op1, 1);
!       result = expand_simple_binop (mode, MINUS, op0, op1,
! 				    result, 1, OPTAB_WIDEN);
        if (i < length - 1)
  	emit_cmp_and_jump_insns (result, CONST0_RTX (mode), NE, NULL_RTX,
  	    			 mode, true, ne_label);
--- 7146,7161 ----
  
        op0 = convert_modes (mode, unit_mode, op0, 1);
        op1 = convert_modes (mode, unit_mode, op1, 1);
!       rtx diff = expand_simple_binop (mode, MINUS, op0, op1,
! 				      result, 1, OPTAB_WIDEN);
! 
!       /* Force the difference into result register.  We cannot reassign
! 	 result here ("result = diff") or we may end up returning
! 	 uninitialized result when expand_simple_binop allocates a new
! 	 pseudo-register for returning.  */
!       if (diff != result)
! 	emit_move_insn (result, diff);
! 
        if (i < length - 1)
  	emit_cmp_and_jump_insns (result, CONST0_RTX (mode), NE, NULL_RTX,
  	    			 mode, true, ne_label);
*************** inline_expand_builtin_bytecmp (tree exp,
*** 6859,6866 ****
    bool is_ncmp = (fcode == BUILT_IN_STRNCMP || fcode == BUILT_IN_MEMCMP);
  
    /* Do NOT apply this inlining expansion when optimizing for size or
!      optimization level below 2.  */
!   if (optimize < 2 || optimize_insn_for_size_p ())
      return NULL_RTX;
  
    gcc_checking_assert (fcode == BUILT_IN_STRCMP
--- 7182,7189 ----
    bool is_ncmp = (fcode == BUILT_IN_STRNCMP || fcode == BUILT_IN_MEMCMP);
  
    /* Do NOT apply this inlining expansion when optimizing for size or
!      optimization level below 2 or if unused *cmp hasn't been DCEd.  */
!   if (optimize < 2 || optimize_insn_for_size_p () || target == const0_rtx)
      return NULL_RTX;
  
    gcc_checking_assert (fcode == BUILT_IN_STRCMP
*************** expand_builtin (tree exp, rtx target, rt
*** 7023,7029 ****
       by ASan.  */
  
    enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl);
!   if ((flag_sanitize & SANITIZE_ADDRESS) && asan_intercepted_p (fcode))
      return expand_call (exp, target, ignore);
  
    /* When not optimizing, generate calls to library functions for a certain
--- 7346,7369 ----
       by ASan.  */
  
    enum built_in_function fcode = DECL_FUNCTION_CODE (fndecl);
!   if (param_asan_kernel_mem_intrinsic_prefix
!       && sanitize_flags_p (SANITIZE_KERNEL_ADDRESS
! 			   | SANITIZE_KERNEL_HWADDRESS))
!     switch (fcode)
!       {
! 	rtx save_decl_rtl, ret;
!       case BUILT_IN_MEMCPY:
!       case BUILT_IN_MEMMOVE:
!       case BUILT_IN_MEMSET:
! 	save_decl_rtl = DECL_RTL (fndecl);
! 	DECL_RTL (fndecl) = asan_memfn_rtl (fndecl);
! 	ret = expand_call (exp, target, ignore);
! 	DECL_RTL (fndecl) = save_decl_rtl;
! 	return ret;
!       default:
! 	break;
!       }
!   if (sanitize_flags_p (SANITIZE_ADDRESS) && asan_intercepted_p (fcode))
      return expand_call (exp, target, ignore);
  
    /* When not optimizing, generate calls to library functions for a certain
*************** expand_builtin (tree exp, rtx target, rt
*** 7095,7100 ****
--- 7435,7441 ----
        /* Just do a normal library call if we were unable to fold
  	 the values.  */
      CASE_FLT_FN (BUILT_IN_CABS):
+     CASE_FLT_FN_FLOATN_NX (BUILT_IN_CABS):
        break;
  
      CASE_FLT_FN (BUILT_IN_FMA):
*************** expand_builtin (tree exp, rtx target, rt
*** 7117,7122 ****
--- 7458,7469 ----
  	return target;
        break;
  
+     case BUILT_IN_ISSIGNALING:
+       target = expand_builtin_issignaling (exp, target);
+       if (target)
+ 	return target;
+       break;
+ 
      CASE_FLT_FN (BUILT_IN_ICEIL):
      CASE_FLT_FN (BUILT_IN_LCEIL):
      CASE_FLT_FN (BUILT_IN_LLCEIL):
*************** expand_builtin (tree exp, rtx target, rt
*** 7469,7483 ****
  	  tree label = TREE_OPERAND (CALL_EXPR_ARG (exp, 1), 0);
  	  rtx_insn *label_r = label_rtx (label);
  
- 	  /* This is copied from the handling of non-local gotos.  */
  	  expand_builtin_setjmp_setup (buf_addr, label_r);
- 	  nonlocal_goto_handler_labels
- 	    = gen_rtx_INSN_LIST (VOIDmode, label_r,
- 				 nonlocal_goto_handler_labels);
- 	  /* ??? Do not let expand_label treat us as such since we would
- 	     not want to be both on the list of non-local labels and on
- 	     the list of forced labels.  */
- 	  FORCED_LABEL (label) = 0;
  	  return const0_rtx;
  	}
        break;
--- 7816,7822 ----
*************** expand_builtin (tree exp, rtx target, rt
*** 7490,7495 ****
--- 7829,7841 ----
  	  rtx_insn *label_r = label_rtx (label);
  
  	  expand_builtin_setjmp_receiver (label_r);
+ 	  nonlocal_goto_handler_labels
+ 	    = gen_rtx_INSN_LIST (VOIDmode, label_r,
+ 				 nonlocal_goto_handler_labels);
+ 	  /* ??? Do not let expand_label treat us as such since we would
+ 	     not want to be both on the list of non-local labels and on
+ 	     the list of forced labels.  */
+ 	  FORCED_LABEL (label) = 0;
  	  return const0_rtx;
  	}
        break;
*************** expand_builtin (tree exp, rtx target, rt
*** 7535,7540 ****
--- 7881,7887 ----
        break;
  
      case BUILT_IN_TRAP:
+     case BUILT_IN_UNREACHABLE_TRAP:
        expand_builtin_trap ();
        return const0_rtx;
  
*************** fold_builtin_strlen (location_t loc, tre
*** 8393,8400 ****
  static tree
  fold_builtin_inf (location_t loc, tree type, int warn)
  {
-   REAL_VALUE_TYPE real;
- 
    /* __builtin_inff is intended to be usable to define INFINITY on all
       targets.  If an infinity is not available, INFINITY expands "to a
       positive constant of type float that overflows at translation
--- 8740,8745 ----
*************** fold_builtin_inf (location_t loc, tree t
*** 8405,8412 ****
    if (!MODE_HAS_INFINITIES (TYPE_MODE (type)) && warn)
      pedwarn (loc, 0, "target format does not support infinity");
  
!   real_inf (&real);
!   return build_real (type, real);
  }
  
  /* Fold function call to builtin sincos, sincosf, or sincosl.  Return
--- 8750,8756 ----
    if (!MODE_HAS_INFINITIES (TYPE_MODE (type)) && warn)
      pedwarn (loc, 0, "target format does not support infinity");
  
!   return build_real (type, dconstinf);
  }
  
  /* Fold function call to builtin sincos, sincosf, or sincosl.  Return
*************** fold_builtin_frexp (location_t loc, tree
*** 8627,8633 ****
    if (TYPE_MAIN_VARIANT (TREE_TYPE (arg1)) == integer_type_node)
      {
        const REAL_VALUE_TYPE *const value = TREE_REAL_CST_PTR (arg0);
!       tree frac, exp;
  
        switch (value->cl)
        {
--- 8971,8977 ----
    if (TYPE_MAIN_VARIANT (TREE_TYPE (arg1)) == integer_type_node)
      {
        const REAL_VALUE_TYPE *const value = TREE_REAL_CST_PTR (arg0);
!       tree frac, exp, res;
  
        switch (value->cl)
        {
*************** fold_builtin_frexp (location_t loc, tree
*** 8658,8664 ****
        /* Create the COMPOUND_EXPR (*arg1 = trunc, frac). */
        arg1 = fold_build2_loc (loc, MODIFY_EXPR, rettype, arg1, exp);
        TREE_SIDE_EFFECTS (arg1) = 1;
!       return fold_build2_loc (loc, COMPOUND_EXPR, rettype, arg1, frac);
      }
  
    return NULL_TREE;
--- 9002,9010 ----
        /* Create the COMPOUND_EXPR (*arg1 = trunc, frac). */
        arg1 = fold_build2_loc (loc, MODIFY_EXPR, rettype, arg1, exp);
        TREE_SIDE_EFFECTS (arg1) = 1;
!       res = fold_build2_loc (loc, COMPOUND_EXPR, rettype, arg1, frac);
!       suppress_warning (res, OPT_Wunused_value);
!       return res;
      }
  
    return NULL_TREE;
*************** fold_builtin_modf (location_t loc, tree
*** 8684,8689 ****
--- 9030,9036 ----
      {
        const REAL_VALUE_TYPE *const value = TREE_REAL_CST_PTR (arg0);
        REAL_VALUE_TYPE trunc, frac;
+       tree res;
  
        switch (value->cl)
        {
*************** fold_builtin_modf (location_t loc, tree
*** 8713,8720 ****
        arg1 = fold_build2_loc (loc, MODIFY_EXPR, rettype, arg1,
  			  build_real (rettype, trunc));
        TREE_SIDE_EFFECTS (arg1) = 1;
!       return fold_build2_loc (loc, COMPOUND_EXPR, rettype, arg1,
! 			  build_real (rettype, frac));
      }
  
    return NULL_TREE;
--- 9060,9069 ----
        arg1 = fold_build2_loc (loc, MODIFY_EXPR, rettype, arg1,
  			  build_real (rettype, trunc));
        TREE_SIDE_EFFECTS (arg1) = 1;
!       res = fold_build2_loc (loc, COMPOUND_EXPR, rettype, arg1,
! 			     build_real (rettype, frac));
!       suppress_warning (res, OPT_Wunused_value);
!       return res;
      }
  
    return NULL_TREE;
*************** fold_builtin_classify (location_t loc, t
*** 8956,8961 ****
--- 9305,9321 ----
        arg = builtin_save_expr (arg);
        return fold_build2_loc (loc, UNORDERED_EXPR, type, arg, arg);
  
+     case BUILT_IN_ISSIGNALING:
+       /* Folding to true for REAL_CST is done in fold_const_call_ss.
+ 	 Don't use tree_expr_signaling_nan_p (arg) -> integer_one_node
+ 	 and !tree_expr_maybe_signaling_nan_p (arg) -> integer_zero_node
+ 	 here, so there is some possibility of __builtin_issignaling working
+ 	 without -fsignaling-nans.  Especially when -fno-signaling-nans is
+ 	 the default.  */
+       if (!tree_expr_maybe_nan_p (arg))
+ 	return omit_one_operand_loc (loc, type, integer_zero_node, arg);
+       return NULL_TREE;
+ 
      default:
        gcc_unreachable ();
      }
*************** fold_builtin_fpclassify (location_t loc,
*** 9017,9025 ****
  
    if (tree_expr_maybe_infinite_p (arg))
      {
-       real_inf (&r);
        tmp = fold_build2_loc (loc, EQ_EXPR, integer_type_node, arg,
! 			 build_real (type, r));
        res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp,
  			 fp_infinite, res);
      }
--- 9377,9384 ----
  
    if (tree_expr_maybe_infinite_p (arg))
      {
        tmp = fold_build2_loc (loc, EQ_EXPR, integer_type_node, arg,
! 			 build_real (type, dconstinf));
        res = fold_build3_loc (loc, COND_EXPR, integer_type_node, tmp,
  			 fp_infinite, res);
      }
*************** fold_builtin_FILE (location_t loc)
*** 9206,9215 ****
  	 __FILE__ macro so it appears appropriate to use the same file prefix
  	 mappings.  */
        fname = remap_macro_filename (fname);
!     return build_string_literal (strlen (fname) + 1, fname);
      }
  
!   return build_string_literal (1, "");
  }
  
  /* Fold a call to __builtin_FUNCTION to a constant string.  */
--- 9565,9574 ----
  	 __FILE__ macro so it appears appropriate to use the same file prefix
  	 mappings.  */
        fname = remap_macro_filename (fname);
!       return build_string_literal (fname);
      }
  
!   return build_string_literal ("");
  }
  
  /* Fold a call to __builtin_FUNCTION to a constant string.  */
*************** fold_builtin_FUNCTION ()
*** 9222,9228 ****
    if (current_function_decl)
      name = lang_hooks.decl_printable_name (current_function_decl, 0);
  
!   return build_string_literal (strlen (name) + 1, name);
  }
  
  /* Fold a call to __builtin_LINE to an integer constant.  */
--- 9581,9587 ----
    if (current_function_decl)
      name = lang_hooks.decl_printable_name (current_function_decl, 0);
  
!   return build_string_literal (name);
  }
  
  /* Fold a call to __builtin_LINE to an integer constant.  */
*************** fold_builtin_0 (location_t loc, tree fnd
*** 9266,9271 ****
--- 9625,9636 ----
      case BUILT_IN_CLASSIFY_TYPE:
        return fold_builtin_classify_type (NULL_TREE);
  
+     case BUILT_IN_UNREACHABLE:
+       /* Rewrite any explicit calls to __builtin_unreachable.  */
+       if (sanitize_flags_p (SANITIZE_UNREACHABLE))
+ 	return build_builtin_unreachable (loc);
+       break;
+ 
      default:
        break;
      }
*************** fold_builtin_1 (location_t loc, tree exp
*** 9340,9345 ****
--- 9705,9711 ----
      break;
  
      CASE_FLT_FN (BUILT_IN_CARG):
+     CASE_FLT_FN_FLOATN_NX (BUILT_IN_CARG):
        return fold_builtin_carg (loc, arg0, type);
  
      case BUILT_IN_ISASCII:
*************** fold_builtin_1 (location_t loc, tree exp
*** 9386,9391 ****
--- 9752,9760 ----
      case BUILT_IN_ISNAND128:
        return fold_builtin_classify (loc, fndecl, arg0, BUILT_IN_ISNAN);
  
+     case BUILT_IN_ISSIGNALING:
+       return fold_builtin_classify (loc, fndecl, arg0, BUILT_IN_ISSIGNALING);
+ 
      case BUILT_IN_FREE:
        if (integer_zerop (arg0))
  	return build_empty_stmt (loc);
*************** do_mpfr_remquo (tree arg0, tree arg1, tr
*** 10669,10676 ****
  						  integer_quo));
  		  TREE_SIDE_EFFECTS (result_quo) = 1;
  		  /* Combine the quo assignment with the rem.  */
! 		  result = non_lvalue (fold_build2 (COMPOUND_EXPR, type,
! 						    result_quo, result_rem));
  		}
  	    }
  	}
--- 11038,11047 ----
  						  integer_quo));
  		  TREE_SIDE_EFFECTS (result_quo) = 1;
  		  /* Combine the quo assignment with the rem.  */
! 		  result = fold_build2 (COMPOUND_EXPR, type,
! 					result_quo, result_rem);
! 		  suppress_warning (result, OPT_Wunused_value);
! 		  result = non_lvalue (result);
  		}
  	    }
  	}
*************** is_inexpensive_builtin (tree decl)
*** 10977,10982 ****
--- 11348,11354 ----
        case BUILT_IN_VA_ARG_PACK_LEN:
        case BUILT_IN_VA_COPY:
        case BUILT_IN_TRAP:
+       case BUILT_IN_UNREACHABLE_TRAP:
        case BUILT_IN_SAVEREGS:
        case BUILT_IN_POPCOUNTL:
        case BUILT_IN_POPCOUNTLL:
*************** builtin_with_linkage_p (tree decl)
*** 11024,11050 ****
--- 11396,11438 ----
      switch (DECL_FUNCTION_CODE (decl))
      {
        CASE_FLT_FN (BUILT_IN_ACOS):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ACOS):
        CASE_FLT_FN (BUILT_IN_ACOSH):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ACOSH):
        CASE_FLT_FN (BUILT_IN_ASIN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ASIN):
        CASE_FLT_FN (BUILT_IN_ASINH):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ASINH):
        CASE_FLT_FN (BUILT_IN_ATAN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ATAN):
        CASE_FLT_FN (BUILT_IN_ATANH):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ATANH):
        CASE_FLT_FN (BUILT_IN_ATAN2):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ATAN2):
        CASE_FLT_FN (BUILT_IN_CBRT):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_CBRT):
        CASE_FLT_FN (BUILT_IN_CEIL):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_CEIL):
        CASE_FLT_FN (BUILT_IN_COPYSIGN):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_COPYSIGN):
        CASE_FLT_FN (BUILT_IN_COS):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_COS):
        CASE_FLT_FN (BUILT_IN_COSH):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_COSH):
        CASE_FLT_FN (BUILT_IN_ERF):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ERF):
        CASE_FLT_FN (BUILT_IN_ERFC):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ERFC):
        CASE_FLT_FN (BUILT_IN_EXP):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_EXP):
        CASE_FLT_FN (BUILT_IN_EXP2):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_EXP2):
        CASE_FLT_FN (BUILT_IN_EXPM1):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_EXPM1):
        CASE_FLT_FN (BUILT_IN_FABS):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_FABS):
        CASE_FLT_FN (BUILT_IN_FDIM):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_FDIM):
        CASE_FLT_FN (BUILT_IN_FLOOR):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_FLOOR):
        CASE_FLT_FN (BUILT_IN_FMA):
*************** builtin_with_linkage_p (tree decl)
*** 11054,11096 ****
--- 11442,11512 ----
        CASE_FLT_FN (BUILT_IN_FMIN):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMIN):
        CASE_FLT_FN (BUILT_IN_FMOD):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_FMOD):
        CASE_FLT_FN (BUILT_IN_FREXP):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_FREXP):
        CASE_FLT_FN (BUILT_IN_HYPOT):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_HYPOT):
        CASE_FLT_FN (BUILT_IN_ILOGB):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_ILOGB):
        CASE_FLT_FN (BUILT_IN_LDEXP):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LDEXP):
        CASE_FLT_FN (BUILT_IN_LGAMMA):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LGAMMA):
        CASE_FLT_FN (BUILT_IN_LLRINT):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LLRINT):
        CASE_FLT_FN (BUILT_IN_LLROUND):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LLROUND):
        CASE_FLT_FN (BUILT_IN_LOG):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LOG):
        CASE_FLT_FN (BUILT_IN_LOG10):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LOG10):
        CASE_FLT_FN (BUILT_IN_LOG1P):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LOG1P):
        CASE_FLT_FN (BUILT_IN_LOG2):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LOG2):
        CASE_FLT_FN (BUILT_IN_LOGB):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LOGB):
        CASE_FLT_FN (BUILT_IN_LRINT):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LRINT):
        CASE_FLT_FN (BUILT_IN_LROUND):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_LROUND):
        CASE_FLT_FN (BUILT_IN_MODF):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_MODF):
        CASE_FLT_FN (BUILT_IN_NAN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_NAN):
        CASE_FLT_FN (BUILT_IN_NEARBYINT):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_NEARBYINT):
        CASE_FLT_FN (BUILT_IN_NEXTAFTER):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_NEXTAFTER):
        CASE_FLT_FN (BUILT_IN_NEXTTOWARD):
        CASE_FLT_FN (BUILT_IN_POW):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_POW):
        CASE_FLT_FN (BUILT_IN_REMAINDER):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_REMAINDER):
        CASE_FLT_FN (BUILT_IN_REMQUO):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_REMQUO):
        CASE_FLT_FN (BUILT_IN_RINT):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_RINT):
        CASE_FLT_FN (BUILT_IN_ROUND):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_ROUND):
        CASE_FLT_FN (BUILT_IN_SCALBLN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_SCALBLN):
        CASE_FLT_FN (BUILT_IN_SCALBN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_SCALBN):
        CASE_FLT_FN (BUILT_IN_SIN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_SIN):
        CASE_FLT_FN (BUILT_IN_SINH):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_SINH):
        CASE_FLT_FN (BUILT_IN_SINCOS):
        CASE_FLT_FN (BUILT_IN_SQRT):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_SQRT):
        CASE_FLT_FN (BUILT_IN_TAN):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_TAN):
        CASE_FLT_FN (BUILT_IN_TANH):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_TANH):
        CASE_FLT_FN (BUILT_IN_TGAMMA):
+       CASE_FLT_FN_FLOATN_NX (BUILT_IN_TGAMMA):
        CASE_FLT_FN (BUILT_IN_TRUNC):
        CASE_FLT_FN_FLOATN_NX (BUILT_IN_TRUNC):
  	return true;
diff -Nrcpad gcc-12.2.0/gcc/builtins.def gcc-13.1.0/gcc/builtins.def
*** gcc-12.2.0/gcc/builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* This file contains the definitions and documentation for the
     builtins used in the GNU compiler.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* This file contains the definitions and documentation for the
     builtins used in the GNU compiler.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 114,122 ****
     with an argument such as FLOAT32 to produce the enum value for the type.  If
     we are compiling for the C language with GNU extensions, we enable the name
     without the __builtin_ prefix as well as the name with the __builtin_
!    prefix.  C++ does not enable these names by default because they don't have
!    the _Float<N> and _Float<N>X keywords, and a class based library should use
!    the __builtin_ names.  */
  #undef DEF_FLOATN_BUILTIN
  #define DEF_FLOATN_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
--- 114,121 ----
     with an argument such as FLOAT32 to produce the enum value for the type.  If
     we are compiling for the C language with GNU extensions, we enable the name
     without the __builtin_ prefix as well as the name with the __builtin_
!    prefix.  C++ does not enable these names by default because a class based
!    library should use the __builtin_ names.  */
  #undef DEF_FLOATN_BUILTIN
  #define DEF_FLOATN_BUILTIN(ENUM, NAME, TYPE, ATTRS)	\
    DEF_BUILTIN (ENUM, "__builtin_" NAME, BUILT_IN_NORMAL, TYPE, TYPE,	\
*************** DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSF,
*** 293,318 ****
--- 292,331 ----
  DEF_C99_BUILTIN        (BUILT_IN_ACOSH, "acosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ACOSHF, "acoshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ACOSHL, "acoshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define ACOSH_TYPE(F) BT_FN_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ACOSH, "acosh", ACOSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ACOSL, "acosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ACOS, "acos", ACOSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C11_BUILTIN        (BUILT_IN_ALIGNED_ALLOC, "aligned_alloc", BT_FN_PTR_SIZE_SIZE, ATTR_ALLOC_WARN_UNUSED_RESULT_SIZE_2_NOTHROW_LIST)
  DEF_LIB_BUILTIN        (BUILT_IN_ASIN, "asin", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINF, "asinf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ASINH, "asinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_ASINHF, "asinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_ASINHL, "asinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ASINH, "asinh", ACOSH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ASINL, "asinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ASIN, "asin", ACOSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef ACOSH_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_ATAN, "atan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_LIB_BUILTIN        (BUILT_IN_ATAN2, "atan2", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2F, "atan2f", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ATAN2L, "atan2l", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define ATAN2_TYPE(F) BT_FN_##F##_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ATAN2, "atan2", ATAN2_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef ATAN2_TYPE
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANF, "atanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_ATANH, "atanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ATANHF, "atanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ATANHL, "atanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define ATANH_TYPE(F) BT_FN_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ATANH, "atanh", ATANH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_ATANL, "atanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ATAN, "atan", ATANH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_CBRT, "cbrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_CBRTF, "cbrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_CBRTL, "cbrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CBRT, "cbrt", ATANH_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef ATANH_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_CEIL, "ceil", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILF, "ceilf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_CEILL, "ceill", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_C99_C90RES_BUILTIN (BUILT_IN_COSF, "
*** 330,336 ****
--- 343,352 ----
  DEF_LIB_BUILTIN        (BUILT_IN_COSH, "cosh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHF, "coshf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_COSHL, "coshl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define COSH_TYPE(F) BT_FN_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_COSH, "cosh", COSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_COSL, "cosl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_COS, "cos", COSH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREM, "drem", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREMF, "dremf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_DREML, "dreml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
*************** DEF_C99_BUILTIN        (BUILT_IN_ERF, "e
*** 338,345 ****
--- 354,363 ----
  DEF_C99_BUILTIN        (BUILT_IN_ERFC, "erfc", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ERFCF, "erfcf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ERFCL, "erfcl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ERFC, "erfc", COSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ERFF, "erff", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_ERFL, "erfl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ERF, "erf", COSH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_LIB_BUILTIN        (BUILT_IN_EXP, "exp", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C2X_BUILTIN        (BUILT_IN_EXP10, "exp10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C2X_BUILTIN        (BUILT_IN_EXP10F, "exp10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
*************** DEF_C2X_BUILTIN        (BUILT_IN_EXP10L,
*** 347,355 ****
--- 365,377 ----
  DEF_C99_BUILTIN        (BUILT_IN_EXP2, "exp2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_EXP2F, "exp2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_EXP2L, "exp2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_EXP2, "exp2", COSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPF, "expf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_EXPL, "expl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_EXP, "exp", COSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_EXPM1, "expm1", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_EXPM1, "expm1", COSH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef COSH_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_EXPM1F, "expm1f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_EXPM1L, "expm1l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_LIB_BUILTIN        (BUILT_IN_FABS, "fabs", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_C2X_BUILTIN        (BUILT_IN_FABSD12
*** 364,369 ****
--- 386,394 ----
  DEF_C99_BUILTIN        (BUILT_IN_FDIM, "fdim", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_FDIMF, "fdimf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_FDIML, "fdiml", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define FDIM_TYPE(F) BT_FN_##F##_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_FDIM, "fdim", FDIM_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef FDIM_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_FECLEAREXCEPT, "feclearexcept", BT_FN_INT_INT, ATTR_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_FEGETENV, "fegetenv", BT_FN_INT_FENV_T_PTR, ATTR_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_FEGETEXCEPTFLAG, "fegetexceptflag", BT_FN_INT_FEXCEPT_T_PTR_INT, ATTR_NOTHROW_LEAF_LIST)
*************** DEF_C99_BUILTIN        (BUILT_IN_FMINF,
*** 398,410 ****
  DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  #define FMIN_TYPE(F) BT_FN_##F##_##F##_##F
  DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_FMIN, "fmin", FMIN_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
- #undef FMIN_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
--- 423,439 ----
  DEF_C99_BUILTIN        (BUILT_IN_FMINL, "fminl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  #define FMIN_TYPE(F) BT_FN_##F##_##F##_##F
  DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_FMIN, "fmin", FMIN_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_LIB_BUILTIN        (BUILT_IN_FMOD, "fmod", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODF, "fmodf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FMODL, "fmodl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_FMOD, "fmod", FMIN_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef FMIN_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_FREXP, "frexp", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPF, "frexpf", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_FREXPL, "frexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+ #define FREXP_TYPE(F) BT_FN_##F##_##F##_INTPTR
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_FREXP, "frexp", FREXP_TYPE, ATTR_MATHFN_FPROUNDING_STORE)
+ #undef FREXP_TYPE
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMA, "gamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAF, "gammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL, "gammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
*************** DEF_EXT_LIB_BUILTIN    (BUILT_IN_GAMMAL_
*** 414,424 ****
  DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
! #define INF_TYPE(F) BT_FN_##F
! DEF_GCC_FLOATN_NX_BUILTINS (BUILT_IN_HUGE_VAL, "huge_val", INF_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
--- 443,457 ----
  DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VAL, "huge_val", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALF, "huge_valf", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_HUGE_VALL, "huge_vall", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
! #define HUGE_VAL_TYPE(F) BT_FN_##F
! DEF_GCC_FLOATN_NX_BUILTINS (BUILT_IN_HUGE_VAL, "huge_val", HUGE_VAL_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
! #undef HUGE_VAL_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_HYPOT, "hypot", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_HYPOTF, "hypotf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_HYPOTL, "hypotl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define HYPOT_TYPE(F) BT_FN_##F##_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_HYPOT, "hypot", HYPOT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef HYPOT_TYPE
  DEF_GCC_BUILTIN        (BUILT_IN_ICEIL, "iceil", BT_FN_INT_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_ICEILF, "iceilf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_ICEILL, "iceill", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_GCC_BUILTIN        (BUILT_IN_IFLOORL
*** 428,436 ****
--- 461,473 ----
  DEF_C99_BUILTIN        (BUILT_IN_ILOGB, "ilogb", BT_FN_INT_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ILOGBF, "ilogbf", BT_FN_INT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_ILOGBL, "ilogbl", BT_FN_INT_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define ILOGB_TYPE(F) BT_FN_INT_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_ILOGB, "ilogb", ILOGB_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef ILOGB_TYPE
  DEF_GCC_BUILTIN        (BUILT_IN_INF, "inf", BT_FN_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_INFF, "inff", BT_FN_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_INFL, "infl", BT_FN_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+ #define INF_TYPE(F) BT_FN_##F
  DEF_GCC_FLOATN_NX_BUILTINS (BUILT_IN_INF, "inf", INF_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
  #undef INF_TYPE
  DEF_GCC_BUILTIN	       (BUILT_IN_INFD32, "infd32", BT_FN_DFLOAT32, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_GCC_BUILTIN        (BUILT_IN_LCEILL,
*** 457,468 ****
--- 494,511 ----
  DEF_LIB_BUILTIN        (BUILT_IN_LDEXP, "ldexp", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPF, "ldexpf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_LDEXPL, "ldexpl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define LDEXP_TYPE(F) BT_FN_##F##_##F##_INT
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LDEXP, "ldexp", LDEXP_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef LDEXP_TYPE
  DEF_GCC_BUILTIN        (BUILT_IN_LFLOOR, "lfloor", BT_FN_LONG_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_LFLOORF, "lfloorf", BT_FN_LONG_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_LFLOORL, "lfloorl", BT_FN_LONG_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_LGAMMA, "lgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_BUILTIN        (BUILT_IN_LGAMMAF, "lgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_BUILTIN        (BUILT_IN_LGAMMAL, "lgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_STORE)
+ #define LGAMMA_TYPE(F) BT_FN_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LGAMMA, "lgamma", LGAMMA_TYPE, ATTR_MATHFN_FPROUNDING_STORE)
+ #undef LGAMMA_TYPE
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMA_R, "lgamma_r", BT_FN_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAF_R, "lgammaf_r", BT_FN_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_LGAMMAL_R, "lgammal_r", BT_FN_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
*************** DEF_GCC_BUILTIN        (BUILT_IN_LLFLOOR
*** 475,507 ****
--- 518,568 ----
  DEF_C99_BUILTIN        (BUILT_IN_LLRINT, "llrint", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LLRINTF, "llrintf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LLRINTL, "llrintl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define LLRINT_TYPE(F) BT_FN_LONGLONG_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LLRINT, "llrint", LLRINT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LLROUND, "llround", BT_FN_LONGLONG_DOUBLE, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LLROUNDF, "llroundf", BT_FN_LONGLONG_FLOAT, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LLROUNDL, "llroundl", BT_FN_LONGLONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LLROUND, "llround", LLRINT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef LLRINT_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_LOG, "log", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_LIB_BUILTIN        (BUILT_IN_LOG10, "log10", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10F, "log10f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_LOG10L, "log10l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define LOG10_TYPE(F) BT_FN_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LOG10, "log10", LOG10_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOG1P, "log1p", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOG1PF, "log1pf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOG1PL, "log1pl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LOG1P, "log1p", LOG10_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOG2, "log2", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOG2F, "log2f", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOG2L, "log2l", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LOG2, "log2", LOG10_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOGB, "logb", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOGBF, "logbf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LOGBL, "logbl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LOGB, "logb", LOG10_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGF, "logf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_LOGL, "logl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LOG, "log", LOG10_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef LOG10_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_LRINT, "lrint", BT_FN_LONG_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LRINTF, "lrintf", BT_FN_LONG_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LRINTL, "lrintl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define LRINT_TYPE(F) BT_FN_LONG_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LRINT, "lrint", LRINT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LROUND, "lround", BT_FN_LONG_DOUBLE, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LROUNDF, "lroundf", BT_FN_LONG_FLOAT, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_LROUNDL, "lroundl", BT_FN_LONG_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_LROUND, "lround", LRINT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef LRINT_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_MODF, "modf", BT_FN_DOUBLE_DOUBLE_DOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFF, "modff", BT_FN_FLOAT_FLOAT_FLOATPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_MODFL, "modfl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLEPTR, ATTR_MATHFN_FPROUNDING_STORE)
+ #define MODF_TYPE(F) BT_FN_##F##_##F##_##F##PTR
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_MODF, "modf", MODF_TYPE, ATTR_MATHFN_FPROUNDING_STORE)
+ #undef MODF_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_NAN, "nan", BT_FN_DOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_C99_BUILTIN        (BUILT_IN_NANF, "nanf", BT_FN_FLOAT_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_C99_BUILTIN        (BUILT_IN_NANL, "nanl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
*************** DEF_GCC_BUILTIN        (BUILT_IN_NANSF,
*** 515,520 ****
--- 576,582 ----
  DEF_GCC_BUILTIN        (BUILT_IN_NANSL, "nansl", BT_FN_LONGDOUBLE_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_GCC_FLOATN_NX_BUILTINS (BUILT_IN_NANS, "nans", NAN_TYPE, ATTR_CONST_NOTHROW_NONNULL)
  #undef NAN_TYPE
+ DEF_GCC_BUILTIN        (BUILT_IN_NANSF16B, "nansf16b", BT_FN_BFLOAT16_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_GCC_BUILTIN        (BUILT_IN_NANSD32, "nansd32", BT_FN_DFLOAT32_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_GCC_BUILTIN        (BUILT_IN_NANSD64, "nansd64", BT_FN_DFLOAT64_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
  DEF_GCC_BUILTIN        (BUILT_IN_NANSD128, "nansd128", BT_FN_DFLOAT128_CONST_STRING, ATTR_CONST_NOTHROW_NONNULL)
*************** DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN
*** 527,532 ****
--- 589,597 ----
  DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTER, "nextafter", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERF, "nextafterf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_NEXTAFTERL, "nextafterl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_ERRNO)
+ #define NEXTAFTER_TYPE(F) BT_FN_##F##_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_NEXTAFTER, "nextafter", NEXTAFTER_TYPE, ATTR_MATHFN_ERRNO)
+ DEF_GCC_BUILTIN        (BUILT_IN_NEXTAFTERF16B, "nextafterf16b", BT_FN_BFLOAT16_BFLOAT16_BFLOAT16, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARD, "nexttoward", BT_FN_DOUBLE_DOUBLE_LONGDOUBLE, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDF, "nexttowardf", BT_FN_FLOAT_FLOAT_LONGDOUBLE, ATTR_MATHFN_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_NEXTTOWARDL, "nexttowardl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_ERRNO)
*************** DEF_GCC_BUILTIN        (BUILT_IN_POWI, "
*** 539,550 ****
--- 604,621 ----
  DEF_GCC_BUILTIN        (BUILT_IN_POWIF, "powif", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING)
  DEF_GCC_BUILTIN        (BUILT_IN_POWIL, "powil", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_POWL, "powl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_POW, "pow", NEXTAFTER_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_REMAINDER, "remainder", BT_FN_DOUBLE_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_REMAINDERF, "remainderf", BT_FN_FLOAT_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_REMAINDERL, "remainderl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_REMAINDER, "remainder", NEXTAFTER_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef NEXTAFTER_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_REMQUO, "remquo", BT_FN_DOUBLE_DOUBLE_DOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_BUILTIN        (BUILT_IN_REMQUOF, "remquof", BT_FN_FLOAT_FLOAT_FLOAT_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
  DEF_C99_BUILTIN        (BUILT_IN_REMQUOL, "remquol", BT_FN_LONGDOUBLE_LONGDOUBLE_LONGDOUBLE_INTPTR, ATTR_MATHFN_FPROUNDING_STORE)
+ #define REMQUO_TYPE(F) BT_FN_##F##_##F##_##F##_INTPTR
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_REMQUO, "remquo", REMQUO_TYPE, ATTR_MATHFN_FPROUNDING_STORE)
+ #undef REMQUO_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_RINT, "rint", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_RINTF, "rintf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_RINTL, "rintl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
*************** DEF_EXT_LIB_BUILTIN    (BUILT_IN_SCALBL,
*** 569,577 ****
--- 640,654 ----
  DEF_C99_BUILTIN        (BUILT_IN_SCALBLN, "scalbln", BT_FN_DOUBLE_DOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_SCALBLNF, "scalblnf", BT_FN_FLOAT_FLOAT_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_SCALBLNL, "scalblnl", BT_FN_LONGDOUBLE_LONGDOUBLE_LONG, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define SCALBLN_TYPE(F) BT_FN_##F##_##F##_LONG
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SCALBLN, "scalbln", SCALBLN_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef SCALBLN_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_SCALBN, "scalbn", BT_FN_DOUBLE_DOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_SCALBNF, "scalbnf", BT_FN_FLOAT_FLOAT_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_SCALBNL, "scalbnl", BT_FN_LONGDOUBLE_LONGDOUBLE_INT, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define SCALBN_TYPE(F) BT_FN_##F##_##F##_INT
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SCALBN, "scalbn", SCALBN_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef SCALBN_TYPE
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBIT, "signbit", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITF, "signbitf", BT_FN_INT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_SIGNBITL, "signbitl", BT_FN_INT_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_C99_C90RES_BUILTIN (BUILT_IN_SINF, "
*** 589,610 ****
  DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  #define SQRT_TYPE(F) BT_FN_##F##_##F
  DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SQRT, "sqrt", SQRT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
- #undef SQRT_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
--- 666,694 ----
  DEF_LIB_BUILTIN        (BUILT_IN_SINH, "sinh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHF, "sinhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SINHL, "sinhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #define SINH_TYPE(F) BT_FN_##F##_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SINH, "sinh", SINH_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SINL, "sinl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SIN, "sin", SINH_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef SINH_TYPE
  DEF_LIB_BUILTIN        (BUILT_IN_SQRT, "sqrt", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTF, "sqrtf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_SQRTL, "sqrtl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  #define SQRT_TYPE(F) BT_FN_##F##_##F
  DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_SQRT, "sqrt", SQRT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_LIB_BUILTIN        (BUILT_IN_TAN, "tan", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANF, "tanf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_LIB_BUILTIN        (BUILT_IN_TANH, "tanh", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHF, "tanhf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANHL, "tanhl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_TANH, "tanh", SQRT_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_C90RES_BUILTIN (BUILT_IN_TANL, "tanl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_TAN, "tan", SQRT_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_BUILTIN        (BUILT_IN_TGAMMA, "tgamma", BT_FN_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_TGAMMAF, "tgammaf", BT_FN_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING_ERRNO)
  DEF_C99_BUILTIN        (BUILT_IN_TGAMMAL, "tgammal", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_TGAMMA, "tgamma", SQRT_TYPE, ATTR_MATHFN_FPROUNDING_ERRNO)
+ #undef SQRT_TYPE
  DEF_C99_BUILTIN        (BUILT_IN_TRUNC, "trunc", BT_FN_DOUBLE_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_TRUNCF, "truncf", BT_FN_FLOAT_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_TRUNCL, "truncl", BT_FN_LONGDOUBLE_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_EXT_LIB_BUILTIN    (BUILT_IN_YNL, "y
*** 625,660 ****
--- 709,762 ----
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABS, "cabs", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSF, "cabsf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CABSL, "cabsl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ #define CABS_TYPE(F) BT_FN_##F##_COMPLEX_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CABS, "cabs", CABS_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef CABS_TYPE
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOS, "cacos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSF, "cacosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSH, "cacosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHF, "cacoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSHL, "cacoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ #define CACOSH_TYPE(F) BT_FN_COMPLEX_##F##_COMPLEX_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CACOSH, "cacosh", CACOSH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CACOSL, "cacosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CACOS, "cacos", CACOSH_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef CACOSH_TYPE
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARG, "carg", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGF, "cargf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CARGL, "cargl", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ #define CARG_TYPE(F) BT_FN_##F##_COMPLEX_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CARG, "carg", CARG_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef CARG_TYPE
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASIN, "casin", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINF, "casinf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINH, "casinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHF, "casinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINHL, "casinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ #define CASINH_TYPE(F) BT_FN_COMPLEX_##F##_COMPLEX_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CASINH, "casinh", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CASINL, "casinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CASIN, "casin", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATAN, "catan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANF, "catanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANH, "catanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHF, "catanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANHL, "catanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CATANH, "catanh", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CATANL, "catanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CATAN, "catan", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOS, "ccos", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSF, "ccosf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSH, "ccosh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHF, "ccoshf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSHL, "ccoshl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CCOSH, "ccosh", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CCOSL, "ccosl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CCOS, "ccos", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXP, "cexp", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPF, "cexpf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CEXPL, "cexpl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CEXP, "cexp", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_GCC_BUILTIN        (BUILT_IN_CEXPI, "cexpi", BT_FN_COMPLEX_DOUBLE_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_GCC_BUILTIN        (BUILT_IN_CEXPIF, "cexpif", BT_FN_COMPLEX_FLOAT_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_GCC_BUILTIN        (BUILT_IN_CEXPIL, "cexpil", BT_FN_COMPLEX_LONGDOUBLE_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
*************** DEF_C99_COMPL_BUILTIN        (BUILT_IN_C
*** 664,669 ****
--- 766,773 ----
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOG, "clog", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGF, "clogf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CLOGL, "clogl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CLOG, "clog", CASINH_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef CASINH_TYPE
  DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10, "clog10", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10F, "clog10f", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_EXT_C99RES_BUILTIN (BUILT_IN_CLOG10L, "clog10l", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
*************** DEF_C99_COMPL_BUILTIN        (BUILT_IN_C
*** 673,681 ****
--- 777,790 ----
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOW, "cpow", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWF, "cpowf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPOWL, "cpowl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ #define CPOW_TYPE(F) BT_FN_COMPLEX_##F##_COMPLEX_##F##_COMPLEX_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CPOW, "cpow", CPOW_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef CPOW_TYPE
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJ, "cproj", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJF, "cprojf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CPROJL, "cprojl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
+ #define CPROJ_TYPE(F) BT_FN_COMPLEX_##F##_COMPLEX_##F
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CPROJ, "cproj", CPROJ_TYPE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREAL, "creal", BT_FN_DOUBLE_COMPLEX_DOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALF, "crealf", BT_FN_FLOAT_COMPLEX_FLOAT, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CREALL, "creall", BT_FN_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_CONST_NOTHROW_LEAF_LIST)
*************** DEF_C99_COMPL_BUILTIN        (BUILT_IN_C
*** 684,699 ****
--- 793,814 ----
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINH, "csinh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHF, "csinhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINHL, "csinhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CSINH, "csinh", CPROJ_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSINL, "csinl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CSIN, "csin", CPROJ_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRT, "csqrt", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTF, "csqrtf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CSQRTL, "csqrtl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CSQRT, "csqrt", CPROJ_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTAN, "ctan", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANF, "ctanf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANH, "ctanh", BT_FN_COMPLEX_DOUBLE_COMPLEX_DOUBLE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHF, "ctanhf", BT_FN_COMPLEX_FLOAT_COMPLEX_FLOAT, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANHL, "ctanhl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CTANH, "ctanh", CPROJ_TYPE, ATTR_MATHFN_FPROUNDING)
  DEF_C99_COMPL_BUILTIN        (BUILT_IN_CTANL, "ctanl", BT_FN_COMPLEX_LONGDOUBLE_COMPLEX_LONGDOUBLE, ATTR_MATHFN_FPROUNDING)
+ DEF_EXT_LIB_FLOATN_NX_BUILTINS (BUILT_IN_CTAN, "ctan", CPROJ_TYPE, ATTR_MATHFN_FPROUNDING)
+ #undef CPROJ_TYPE
  
  /* Category: string/memory builtins.  */
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_BCMP, "bcmp", BT_FN_INT_CONST_PTR_CONST_PTR_SIZE, ATTR_PURE_NOTHROW_NONNULL_LEAF)
*************** DEF_GCC_BUILTIN        (BUILT_IN_ISLESS,
*** 908,913 ****
--- 1023,1029 ----
  DEF_GCC_BUILTIN        (BUILT_IN_ISLESSEQUAL, "islessequal", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
  DEF_GCC_BUILTIN        (BUILT_IN_ISLESSGREATER, "islessgreater", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
  DEF_GCC_BUILTIN        (BUILT_IN_ISUNORDERED, "isunordered", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
+ DEF_GCC_BUILTIN        (BUILT_IN_ISSIGNALING, "issignaling", BT_FN_INT_VAR, ATTR_CONST_NOTHROW_TYPEGENERIC_LEAF)
  DEF_LIB_BUILTIN        (BUILT_IN_LABS, "labs", BT_FN_LONG_LONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_C99_BUILTIN        (BUILT_IN_LLABS, "llabs", BT_FN_LONGLONG_LONGLONG, ATTR_CONST_NOTHROW_LEAF_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_LONGJMP, "longjmp", BT_FN_VOID_PTR_INT, ATTR_NORETURN_NOTHROW_LIST)
*************** DEF_GCC_BUILTIN        (BUILT_IN_SETJMP,
*** 932,937 ****
--- 1048,1054 ----
  DEF_EXT_LIB_BUILTIN    (BUILT_IN_STRFMON, "strfmon", BT_FN_SSIZE_STRING_SIZE_CONST_STRING_VAR, ATTR_FORMAT_STRFMON_NOTHROW_3_4)
  DEF_LIB_BUILTIN        (BUILT_IN_STRFTIME, "strftime", BT_FN_SIZE_STRING_SIZE_CONST_STRING_CONST_TM_PTR, ATTR_FORMAT_STRFTIME_NOTHROW_3_0)
  DEF_GCC_BUILTIN        (BUILT_IN_TRAP, "trap", BT_FN_VOID, ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST)
+ DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE_TRAP, "unreachable trap", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_UNREACHABLE, "unreachable", BT_FN_VOID, ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST)
  DEF_GCC_BUILTIN        (BUILT_IN_UNWIND_INIT, "unwind_init", BT_FN_VOID, ATTR_NULL)
  DEF_GCC_BUILTIN        (BUILT_IN_UPDATE_SETJMP_BUF, "update_setjmp_buf", BT_FN_VOID_PTR, ATTR_NULL)
diff -Nrcpad gcc-12.2.0/gcc/builtins.h gcc-13.1.0/gcc/builtins.h
*** gcc-12.2.0/gcc/builtins.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Expand builtin functions.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Expand builtin functions.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c/ChangeLog gcc-13.1.0/gcc/c/ChangeLog
*** gcc-12.2.0/gcc/c/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/gcc/c/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,19 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-08-01  Lewis Hyatt  <lhyatt@gmail.com>
  
! 	Backported from master:
! 	2022-07-10  Lewis Hyatt  <lhyatt@gmail.com>
  
  	PR preprocessor/97498
  	* c-parser.cc (c_parser_pragma): Set input_location to the
  	location of the pragma, rather than the start of the line.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-04-08  Jakub Jelinek  <jakub@redhat.com>
  
--- 1,823 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/107002
! 	* c-typeck.cc (parser_build_binary_op): Update for new param of
! 	check_for_xor_used_as_pow.
! 
! 2023-03-10  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/108079
! 	* c-decl.cc (pop_scope): Suppress OPT_Wunused_variable warning
! 	after diagnosing it.
! 
! 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/108894
! 	* c-decl.cc (strict_flex_array_level_of): Move to c-common.cc
! 	and rename to c_strict_flex_array_level_of.
! 	(is_flexible_array_member_p): Adjust caller.
! 
! 2023-02-18  Martin Uecker  <uecker@tugraz.at>
! 
! 	PR c/108375
! 	* c-decl.cc (decl_jump_unsafe): Use c_type_variably_modified_p.
! 	(diagnose_mismatched_decl): Dito.
! 	(warn_about_goto): Dito:
! 	(c_check_switch_jump_warnings): Dito.
! 	(finish_decl): Dito.
! 	(finish_struct): Dito.
! 	(grokdeclarator): Set C_TYPE_VARIABLY_MODIFIED.
! 	(finish_struct): Set C_TYPE_VARIABLY_MODIFIED.
! 	* c-objc-common.cc (c_var_mod_p): New function.
! 	(c_var_unspec_p): Remove.
! 	* c-objc-common.h: Set lang hook.
! 	* c-parser.cc (c_parser_declararion_or_fndef): Use c_type_variably_modified_p.
! 	(c_parser_typeof_specifier): Dito.
! 	(c_parser_has_attribute_expression): Dito.
! 	(c_parser_generic_selection): Dito.
! 	* c-tree.h: Define C_TYPE_VARIABLY_MODIFIED and define c_var_mode_p.
! 	* c-typeck.cc: Remove c_vla_mod_p and use C_TYPE_VARIABLY_MODIFIED.
! 
! 2023-02-16  Patrick Palka  <ppalka@redhat.com>
! 
! 	* c-parser.h: Mechanically drop static from static inline
! 	functions via s/^static inline/inline/g.
! 
! 2023-02-10  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-convert.cc (c_convert): Allow conversion of a null pointer
! 	constant to nullptr_t.
! 	* c-typeck.cc (null_pointer_constant_p): Remove static.
! 	(convert_for_assignment): Allow conversion of a null pointer
! 	constant to nullptr_t.
! 	(digest_init): Handle NULLPTR_TYPE among scalar conversions.
! 	* c-tree.h (null_pointer_constant_p): Declare.
! 
! 2023-02-09  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-parser.cc (c_parser_omp_allocate): Parse align
! 	clause and check for restrictions.
! 
! 2023-02-08  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-typeck.cc (check_constexpr_init): Remove argument
! 	null_pointer_constant.  Only check pointer initializers for being
! 	null.
! 	(digest_init): Update calls to check_constexpr_init.
! 
! 2023-02-02  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-typeck.cc (build_binary_op): Allow comparisons between
! 	pointers and nullptr_t values that are not null pointer constants.
! 
! 2023-02-02  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-typeck.cc: Include "realmpfr.h".
! 	(constexpr_init_fits_real_type): Do not allow signaling NaN
! 	conversions to different types with the same mode.  Handle
! 	conversions from binary to decimal types.
! 	(check_constexpr_init): Do not disallow real initializers for
! 	complex types.  Do not disallow binary initializers for decimal
! 	floating types.
! 
! 2023-01-31  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/107593
! 	PR c++/108597
! 	* c-objc-common.cc (instantiation_dependent_expression_p): New.
! 
! 2023-01-27  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-parser.cc (c_parser_declaration_or_fndef): Do not allow braces
! 	around auto initializer.
! 
! 2023-01-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/105593
! 	* c-parser.cc (c_parser_initializer): Check warning_enabled_at
! 	at the DECL_SOURCE_LOCATION (decl) for OPT_Winit_self instead
! 	of warn_init_self.
! 
! 2023-01-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/108365
! 	* c-typeck.cc (build_binary_op): Use may_shorten_divmod for integral
! 	division or modulo.
! 
! 2023-01-13  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* c-decl.cc (strict_flex_array_level_of): ... here.
! 
! 2023-01-11  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/105972
! 	* c-parser.cc (c_parser_declaration_or_fndef): Disable debug non-bind
! 	markers for K&R function parameter declarations of nested functions.
! 
! 2023-01-09  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (build_compound_literal): Call record_inline_static.
! 
! 2023-01-06  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-parser.cc (c_parser_postfix_expression): Handle integer
! 	generic arguments to functions passed to __builtin_tgmath as
! 	_Float32x if any argument has _FloatNx or _Complex _FloatNx type.
! 	Do not handle integer arguments to some narrowing functions as
! 	_Float64.
! 
! 2022-12-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/108043
! 	* c-parser.cc (c_parser_postfix_expression_after_paren_type): Diagnose
! 	compound literals with function type.
! 
! 2022-12-07  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (declspecs_add_type, declspecs_add_scspec): Check for
! 	auto, constexpr and a type used together.
! 
! 2022-12-06  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* c-decl.cc (is_flexible_array_member_p): Call new function
! 	strict_flex_array_level_of.
! 
! 2022-11-24  Florian Weimer  <fweimer@redhat.com>
! 
! 	PR c/107805
! 	* c-decl.cc (declspecs_add_type): Propagate error_mark_bode
! 	from type to specs.
! 
! 2022-11-17  Bernhard Reutner-Fischer  <aldot@gcc.gnu.org>
! 
! 	* c-decl.cc (start_function): Set the result decl source
! 	location to the location of the typespec.
! 
! 2022-11-17  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/107711
! 	* c-parser.cc (ana::c_translation_unit::consider_macro): Pass NULL
! 	to cpp_create_reader, rather than ident_hash, so that the new
! 	reader gets its own hash table.
! 
! 2022-11-15  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR analyzer/106302
! 	* c-parser.cc: Include "analyzer/analyzer-language.h" and "toplev.h".
! 	(class ana::c_translation_unit): New.
! 	(c_parser_translation_unit): Call ana::on_finish_translation_unit.
! 
! 2022-11-12  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (start_underspecified_init)
! 	(finish_underspecified_init): Handle name == NULL_TREE for
! 	compound literals.
! 	(merge_decls): Merge C_DECL_DECLARED_CONSTEXPR.
! 	(shadow_tag_warned): Check for constexpr.
! 	(start_decl): Add parameter do_push.
! 	(build_compound_literal): Set C_DECL_DECLARED_CONSTEXPR.
! 	(grokdeclarator): Handle constexpr.
! 	(finish_struct): Set C_TYPE_FIELDS_NON_CONSTEXPR.
! 	(declspecs_add_scspec): Handle constexpr.
! 	* c-parser.cc (c_token_starts_compound_literal)
! 	(c_token_starts_declspecs, c_parser_declaration_or_fndef)
! 	(c_parser_declspecs, c_parser_gnu_attribute_any_word)
! 	(c_parser_compound_literal_scspecs)
! 	(c_parser_postfix_expression_after_paren_type): Handle constexpr.
! 	Update calls to start_init.
! 	(c_parser_declaration_or_fndef, c_parser_initializer)
! 	(c_parser_initval): Pass true for new argument of
! 	convert_lvalue_to_rvalue.  Call convert_lvalue_to_rvalue for
! 	constexpr compound literals.
! 	(c_parser_static_assert_declaration_no_semi)
! 	(c_parser_enum_specifier, c_parser_struct_declaration)
! 	(c_parser_alignas_specifier, c_parser_initelt, c_parser_label):
! 	Call convert_lvalue_to_rvalue on expressions required to be
! 	integer constant expressions.
! 	(c_parser_omp_declare_reduction): Update call to start_init.
! 	* c-tree.h (C_TYPE_FIELDS_NON_CONSTEXPR)
! 	(C_DECL_DECLARED_CONSTEXPR): New macros.
! 	(struct c_declspecs): Add constexpr_p.
! 	(start_decl, convert_lvalue_to_rvalue, start_init): Update
! 	prototypes.
! 	* c-typeck.cc (require_constant_value, require_constant_elements):
! 	Change to bool.
! 	(require_constexpr_value, maybe_get_constexpr_init)
! 	(constexpr_init_fits_real_type, check_constexpr_init): New.
! 	(convert_lvalue_to_rvalue): Add new parameter for_init.  Call
! 	maybe_get_constexpr_init.
! 	(store_init_value): Update call to digest_init.
! 	(digest_init): Add parameters int_const_expr, arith_const_expr and
! 	require_constexpr.  Check constexpr initializers.
! 	(constructor_top_level): Remove.
! 	(struct initializer_stack): Remove top_level.  Add
! 	require_constexpr_value.
! 	(start_init): Remove parameter top_level.  Add parameters
! 	init_require_constant and init_require_constexpr.  Save
! 	require_constexpr_value on stack.
! 	(pop_init_level): Use a null pointer constant for zero initializer
! 	of pointer initialized with {}.
! 	(output_init_element): Update call to digest_init.  Avoid passing
! 	null pointer constants of pointer type through digest_init a
! 	second time when initializing a constexpr object.
! 
! 2022-11-03  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (in_underspecified_init, start_underspecified_init)
! 	(finish_underspecified_init): New.
! 	(shadow_tag_warned, parser_xref_tag, start_struct, start_enum):
! 	Give errors inside initializers of underspecified declarations.
! 	(grokdeclarator): Handle (erroneous) case of C2X auto on a
! 	parameter.
! 	(declspecs_add_type): Handle c2x_auto_p case.
! 	(declspecs_add_scspec): Handle auto possibly setting c2x_auto_p in
! 	C2X mode.
! 	(finish_declspecs): Handle c2x_auto_p.
! 	* c-parser.cc (c_parser_declaration_or_fndef): Handle C2X auto.
! 	* c-tree.h (C_DECL_UNDERSPECIFIED): New macro.
! 	(struct c_declspecs): Add c2x_auto_p.
! 	(start_underspecified_init, finish_underspecified_init): New
! 	prototypes.
! 	* c-typeck.cc (build_external_ref): Give error for underspecified
! 	declaration referenced in its initializer.
! 
! 2022-10-28  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (grokdeclarator): Pass
! 	arg_info->no_named_args_stdarg_p to build_function_type.
! 	(grokparms): Check arg_info->no_named_args_stdarg_p before
! 	converting () to (void).
! 	(build_arg_info): Initialize no_named_args_stdarg_p.
! 	(get_parm_info): Set no_named_args_stdarg_p.
! 	(start_function): Pass TYPE_NO_NAMED_ARGS_STDARG_P to
! 	build_function_type.
! 	(store_parm_decls): Count (...) functions as prototyped.
! 	* c-parser.cc (c_parser_direct_declarator): Allow '...' after open
! 	parenthesis to start parameter list.
! 	(c_parser_parms_list_declarator): Always allow '...' with no
! 	arguments, call pedwarn_c11 and set no_named_args_stdarg_p.
! 	* c-tree.h (struct c_arg_info): Add field no_named_args_stdarg_p.
! 	* c-typeck.cc (composite_type): Handle
! 	TYPE_NO_NAMED_ARGS_STDARG_P.
! 	(function_types_compatible_p): Compare
! 	TYPE_NO_NAMED_ARGS_STDARG_P.
! 
! 2022-10-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_all_clauses): Allow optional
! 	comma before the first clause.
! 	(c_parser_omp_allocate, c_parser_omp_atomic, c_parser_omp_depobj,
! 	c_parser_omp_flush, c_parser_omp_scan_loop_body,
! 	c_parser_omp_ordered, c_finish_omp_declare_variant,
! 	c_parser_omp_declare_target, c_parser_omp_declare_reduction,
! 	c_parser_omp_requires, c_parser_omp_error,
! 	c_parser_omp_assumption_clauses): Likewise.
! 
! 2022-10-28  Joseph Myers  <joseph@codesourcery.com>
! 
! 	PR c/61469
! 	* c-convert.cc (c_convert): Handle enums with underlying boolean
! 	type like bool.
! 	* c-decl.cc (shadow_tag_warned): Allow shadowing declarations for
! 	enums with enum type specifier, but give errors for storage class
! 	specifiers, qualifiers or alignment specifiers in non-definition
! 	declarations of such enums.
! 	(grokdeclarator): Give error for non-definition use of type
! 	specifier with an enum type specifier.
! 	(parser_xref_tag): Add argument has_enum_type_specifier.  Pass it
! 	to lookup_tag and use it to set ENUM_FIXED_UNDERLYING_TYPE_P.
! 	(xref_tag): Update call to parser_xref_tag.
! 	(start_enum): Add argument fixed_underlying_type.  Complete enum
! 	type with a fixed underlying type given in the definition.  Give
! 	error for defining without a fixed underlying type in the
! 	definition if one was given in a prior declaration.  Do not mark
! 	enums with fixed underlying type as packed for -fshort-enums.
! 	Store the enum type in the_enum.
! 	(finish_enum): Do not adjust types of values or check their range
! 	for an enum with a fixed underlying type.  Set underlying type of
! 	enum and variants.
! 	(build_enumerator): Check enumeration constants for enum with
! 	fixed underlying type against that type and convert to that type.
! 	Increment in the underlying integer type, with handling for bool.
! 	(c_simulate_enum_decl): Update call to start_enum.
! 	(declspecs_add_type): Set specs->enum_type_specifier_ref_p.
! 	* c-objc-common.cc (c_get_alias_set): Use ENUM_UNDERLYING_TYPE
! 	rather than recomputing an underlying type based on size.
! 	* c-parser.cc (c_parser_declspecs)
! 	(c_parser_struct_or_union_specifier, c_parser_typeof_specifier):
! 	Set has_enum_type_specifier for type specifiers.
! 	(c_parser_enum_specifier): Handle enum type specifiers.
! 	(c_parser_struct_or_union_specifier): Update call to
! 	parser_xref_tag.
! 	(c_parser_omp_atomic): Check for boolean increment or decrement
! 	using C_BOOLEAN_TYPE_P.
! 	* c-tree.h (C_BOOLEAN_TYPE_P): New.
! 	(struct c_typespec): Add has_enum_type_specifier.
! 	(struct c_declspecs): Add enum_type_specifier_ref_p.
! 	(struct c_enum_contents): Add enum_type.
! 	(start_enum, parser_xref_tag): Update prototypes.
! 	* c-typeck.cc (composite_type): Allow for enumerated types
! 	compatible with bool.
! 	(common_type, comptypes_internal, perform_integral_promotions):
! 	Use ENUM_UNDERLYING_TYPE.
! 	(parser_build_binary_op, build_unary_op, convert_for_assignment)
! 	(c_finish_return, c_start_switch, build_binary_op): Check for
! 	boolean types using C_BOOLEAN_TYPE_P.
! 
! 2022-10-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/107358
! 	* c-typeck.cc (build_binary_op): Pass operands before excess precision
! 	promotions to scalar_to_vector call.
! 
! 2022-10-24  Arsen Arsenović  <arsen@aarsen.me>
! 
! 	* c-decl.cc (finish_function): Ignore hosted when deciding
! 	whether to implicitly return zero, but check noreturn.
! 	* c-objc-common.cc (c_missing_noreturn_ok_p): Loosen the
! 	requirements to just MAIN_NAME_P when hosted, or `int main'
! 	otherwise.
! 
! 2022-10-20  Richard Biener  <rguenther@suse.de>
! 
! 	PR c/107305
! 	PR c/107306
! 	* gimple-parser.cc (c_parser_parse_gimple_body): Verify
! 	the parsed IL and zap the body on error.
! 
! 2022-10-18  Joseph Myers  <joseph@codesourcery.com>
! 
! 	PR c/107164
! 	* c-decl.cc (shadow_tag_warned): If pedantic, diagnose "enum tag;"
! 	with previous declaration visible.
! 
! 2022-10-18  Joseph Myers  <joseph@codesourcery.com>
! 
! 	PR c/36113
! 	* c-decl.cc (finish_enum): If any enumerators do not fit in int,
! 	convert all to the type of the enumeration.  pedwarn if no integer
! 	type fits all enumerators and default to
! 	widest_integer_literal_type_node in that case.  Otherwise pedwarn
! 	for type wider than intmax_t.
! 	(build_enumerator): pedwarn for enumerators outside the range of
! 	uintmax_t or intmax_t, and otherwise use pedwarn_c11 for
! 	enumerators outside the range of int.  On overflow, attempt to
! 	find a wider type that can hold the value of the next enumerator.
! 	Do not convert value to type determined with
! 	c_common_type_for_size.
! 
! 2022-10-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-typeck.cc (convert_arguments): Don't promote __bf16 to
! 	double.
! 
! 2022-10-14  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (build_compound_literal): Add parameter scspecs.
! 	Handle storage class specifiers.
! 	* c-parser.cc (c_token_starts_compound_literal)
! 	(c_parser_compound_literal_scspecs): New.
! 	(c_parser_postfix_expression_after_paren_type): Add parameter
! 	scspecs.  Call pedwarn_c11 for use of storage class specifiers.
! 	Update call to build_compound_literal.
! 	(c_parser_cast_expression, c_parser_sizeof_expression)
! 	(c_parser_alignof_expression): Handle storage class specifiers for
! 	compound literals.  Update calls to
! 	c_parser_postfix_expression_after_paren_type.
! 	(c_parser_postfix_expression): Update syntax comment.
! 	* c-tree.h (build_compound_literal): Update prototype.
! 	* c-typeck.cc (c_mark_addressable): Diagnose taking address of
! 	register compound literal.
! 
! 2022-10-07  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* c-decl.cc (flexible_array_member_type_p): New function.
! 	(one_element_array_type_p): Likewise.
! 	(zero_length_array_type_p): Likewise.
! 	(add_flexible_array_elts_to_size): Call new utility
! 	routine flexible_array_member_type_p.
! 	(is_flexible_array_member_p): New function.
! 	(finish_struct): Set the new DECL_NOT_FLEXARRAY flag.
! 
! 2022-10-06  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-parser.cc (c_parse_init): Add D_EXT11 to mask if flag_no_asm
! 	and not C2x.
! 	(c_keyword_starts_typename, c_token_starts_declspecs)
! 	(c_parser_declspecs, c_parser_objc_selector): Handle
! 	RID_TYPEOF_UNQUAL.
! 	(c_parser_typeof_specifier): Handle RID_TYPEOF_UNQUAL.
! 	Distinguish typeof for C2x from __typeof__ for all standard
! 	versions and typeof before C2x.
! 	* c-typeck.cc (build_function_call_vec): Use unqualified version
! 	of non-void return type.
! 	(build_unary_op): Use unqualified type for increment and
! 	decrement.
! 
! 2022-10-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_assumption_clauses): Emit IFN_ASSUME
! 	call for holds clause on assume construct.
! 
! 2022-10-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106654
! 	* c-parser.cc (handle_assume_attribute): New function.
! 	(c_parser_declaration_or_fndef): Handle assume attribute.
! 	(c_parser_attribute_arguments): Add assume_attr argument,
! 	if true, parse first argument as conditional expression.
! 	(c_parser_gnu_attribute, c_parser_std_attribute): Adjust
! 	c_parser_attribute_arguments callers.
! 	(c_parser_statement_after_labels) <case RID_ATTRIBUTE>: Handle
! 	assume attribute.
! 
! 2022-10-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-lang.h (struct c_omp_declare_target_attr): New type.
! 	(current_omp_declare_target_attribute): Change type from
! 	int to vec<c_omp_declare_target_attr, va_gc> *.
! 	* c-parser.cc (c_parser_translation_unit): Adjust for that change.
! 	If last pushed directive was begin declare target, use different
! 	wording and simplify format strings for easier translations.
! 	(c_parser_omp_clause_device_type): Uncomment
! 	check_no_duplicate_clause call.
! 	(c_parser_omp_declare_target): Adjust for the
! 	current_omp_declare_target_attribute type change, push { -1 }.
! 	Use error_at rather than warning_at for declare target with
! 	only device_type clauses.
! 	(OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK): Define.
! 	(c_parser_omp_begin): Add begin declare target support.
! 	(c_parser_omp_end): Adjust for the
! 	current_omp_declare_target_attribute type change, adjust
! 	diagnostics wording and simplify format strings for easier
! 	translations.
! 	* c-decl.cc (current_omp_declare_target_attribute): Change type from
! 	int to vec<c_omp_declare_target_attr, va_gc> *.
! 	(c_decl_attributes): Adjust for the
! 	current_omp_declare_target_attribute type change.  If device_type
! 	was present on begin declare target, add "omp declare target host"
! 	and/or "omp declare target nohost" attributes.
! 
! 2022-09-29  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (handle_std_noreturn_attribute): New function.
! 	(std_attribute_table): Add _Noreturn and noreturn.
! 
! 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-lang.h (current_omp_begin_assumes): Declare.
! 	* c-parser.cc: Include bitmap.h.
! 	(c_parser_omp_end_declare_target): Rename to ...
! 	(c_parser_omp_end): ... this.  Handle also end assumes.
! 	(c_parser_omp_begin, c_parser_omp_assumption_clauses,
! 	c_parser_omp_assumes, c_parser_omp_assume): New functions.
! 	(c_parser_translation_unit): Also diagnose #pragma omp begin assumes
! 	without corresponding #pragma omp end assumes.
! 	(c_parser_pragma): Use %s in may only be used at file scope
! 	diagnostics to decrease number of translatable messages.  Handle
! 	PRAGMA_OMP_BEGIN and PRAGMA_OMP_ASSUMES.  Handle PRAGMA_OMP_END
! 	rather than PRAGMA_OMP_END_DECLARE_TARGET and call c_parser_omp_end
! 	for it rather than c_parser_omp_end_declare_target.
! 	(c_parser_omp_construct): Handle PRAGMA_OMP_ASSUME.
! 	* c-decl.cc (current_omp_begin_assumes): Define.
! 
! 2022-09-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/106981
! 	* c-typeck.cc (c_tree_equal): Only strip NON_LVALUE_EXPRs at the
! 	start.  For CONSTANT_CLASS_P or CASE_CONVERT: return false if t1 and
! 	t2 have different types.
! 
! 2022-09-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR c/106830
! 	* c-parser.cc (c_parser_initelt): Initialize m_decimal.
! 	(c_parser_cast_expression): Likewise.
! 	(c_parser_alignof_expression): Likewise.
! 	(c_parser_postfix_expression_after_paren_type): Likewise.
! 	(c_parser_postfix_expression_after_primary): Likewise.
! 	(c_parser_expression): Likewise.
! 	(c_parser_omp_variable_list): Likewise.
! 	(c_parser_transaction_expression): Likewise.
! 	* c-tree.h (c_expr::set_error): Likewise.
! 	* c-typeck.cc (c_expr_sizeof_expr): Likewise.
! 	(parser_build_unary_op): Likewise.
! 	(parser_build_binary_op): Likewise.
! 	(digest_init): Likewise.
! 	(pop_init_level): Likewise.
! 	* gimple-parser.cc (c_parser_gimple_call_internal): Likewise.
! 
! 2022-09-19  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c/106947
! 	* c-typeck.cc (maybe_warn_for_null_address): Don't emit stray
! 	notes.
! 
! 2022-09-15  Richard Biener  <rguenther@suse.de>
! 
! 	* c-decl.cc (build_void_list_node): Remove.
! 
! 2022-09-14  Julian Brown  <julian@codesourcery.com>
! 
! 	* c-typeck.cc (c_finish_omp_clauses): Remove whole mapping node group
! 	on error.
! 
! 2022-09-07  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-parser.cc (c_parser_static_assert_declaration_no_semi)
! 	(c_parser_alignas_specifier, c_parser_alignof_expression): Allow
! 	for C2x spellings of keywords.
! 	(c_parser_postfix_expression): Handle RID_TRUE and RID_FALSE.
! 
! 2022-09-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_clause_doacross_sink): Don't verify val
! 	in omp_cur_iteration - 1 has integer_type_node type.
! 
! 2022-09-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_clause_name): Handle doacross.
! 	(c_parser_omp_clause_depend_sink): Renamed to ...
! 	(c_parser_omp_clause_doacross_sink): ... this.  Add depend_p argument.
! 	Handle parsing of doacross(sink:omp_cur_iteration-1).  Use
! 	OMP_CLAUSE_DOACROSS_SINK_NEGATIVE instead of
! 	OMP_CLAUSE_DEPEND_SINK_NEGATIVE, build OMP_CLAUSE_DOACROSS instead
! 	of OMP_CLAUSE_DEPEND and set OMP_CLAUSE_DOACROSS_DEPEND flag on it.
! 	(c_parser_omp_clause_depend): Use OMP_CLAUSE_DOACROSS_SINK and
! 	OMP_CLAUSE_DOACROSS_SOURCE instead of OMP_CLAUSE_DEPEND_SINK and
! 	OMP_CLAUSE_DEPEND_SOURCE, build OMP_CLAUSE_DOACROSS for depend(source)
! 	and set OMP_CLAUSE_DOACROSS_DEPEND on it.
! 	(c_parser_omp_clause_doacross): New function.
! 	(c_parser_omp_all_clauses): Handle PRAGMA_OMP_CLAUSE_DOACROSS.
! 	(c_parser_omp_depobj): Use OMP_CLAUSE_DEPEND_INVALID instead of
! 	OMP_CLAUSE_DEPEND_SOURCE.
! 	(c_parser_omp_for_loop): Don't diagnose here linear clause together
! 	with ordered with argument.
! 	(c_parser_omp_simd): Don't diagnose ordered clause with argument on
! 	for simd.
! 	(OMP_ORDERED_DEPEND_CLAUSE_MASK): Add PRAGMA_OMP_CLAUSE_DOACROSS.
! 	(c_parser_omp_ordered): Handle also doacross and adjust for it
! 	diagnostic wording.
! 	* c-typeck.cc (c_finish_omp_clauses): Handle OMP_CLAUSE_DOACROSS.
! 	Don't handle OMP_CLAUSE_DEPEND_SOURCE and OMP_CLAUSE_DEPEND_SINK.
! 
! 2022-09-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR c/90885
! 	* c-parser.cc (c_parser_string_literal): Clear ret.m_decimal.
! 	(c_parser_expr_no_commas): Likewise.
! 	(c_parser_conditional_expression): Likewise.
! 	(c_parser_binary_expression): Clear m_decimal when popping the
! 	stack.
! 	(c_parser_unary_expression): Clear ret.m_decimal.
! 	(c_parser_has_attribute_expression): Likewise for result.
! 	(c_parser_predefined_identifier): Likewise for expr.
! 	(c_parser_postfix_expression): Likewise for expr.
! 	Set expr.m_decimal when handling a CPP_NUMBER that was a decimal
! 	token.
! 	* c-tree.h (c_expr::m_decimal): New bitfield.
! 	* c-typeck.cc (parser_build_binary_op): Clear result.m_decimal.
! 	(parser_build_binary_op): Call check_for_xor_used_as_pow.
! 
! 2022-09-01  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (grokparms): Handle () in a function declaration the
! 	same as (void) for C2X.
! 
! 2022-08-31  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-parser.cc (c_parser_label): Pass attributes to do_case.
! 	* c-typeck.cc (do_case): Add argument ATTRS.  Pass it to
! 	c_add_case_label.
! 
! 2022-08-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-typeck.cc (convert_arguments): Handle BUILT_IN_ISSIGNALING.
! 
! 2022-08-25  Marek Polacek  <polacek@redhat.com>
! 
! 	* c-convert.cc (c_convert) <case POINTER_TYPE>: Handle NULLPTR_TYPE.
! 	Give a better diagnostic when converting to nullptr_t.
! 	* c-decl.cc (c_init_decl_processing): Perform C-specific nullptr
! 	initialization.
! 	* c-parser.cc (c_parse_init): Maybe OR D_C2X into mask.
! 	(c_parser_postfix_expression): Handle RID_NULLPTR.
! 	* c-typeck.cc (null_pointer_constant_p): Return true when expr is
! 	nullptr_node.
! 	(build_unary_op) <case TRUTH_NOT_EXPR>: Handle NULLPTR_TYPE.
! 	(build_conditional_expr): Handle the case when the second/third operand
! 	is NULLPTR_TYPE and third/second operand is POINTER_TYPE.
! 	(convert_for_assignment): Handle converting an expression of type
! 	nullptr_t to pointer/bool.
! 	(build_binary_op) <case TRUTH_XOR_EXPR>: Handle NULLPTR_TYPE.
! 	<case EQ_EXPR>: Handle comparing operands of type nullptr_t.
! 
! 2022-08-25  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-decl.cc (start_decl): Do not diagnose initialization of
! 	variable-sized objects here.
! 	* c-parser.cc (c_parser_braced_init): Add argument DECL.  All
! 	callers changed.
! 	(c_parser_initializer): Diagnose initialization of variable-sized
! 	objects other than with braced initializer.
! 	(c_parser_braced_init): Use pedwarn_c11 for empty initializer
! 	braces and update diagnostic text.  Diagnose initialization of
! 	variable-sized objects with nonempty braces.
! 	* c-typeck.cc (digest_init): Update diagnostic for initialization
! 	of variable-sized objects.
! 	(really_start_incremental_init, set_designator)
! 	(process_init_element): Update comments.
! 	(pop_init_level): Allow scalar empty initializers.
! 
! 2022-08-17  Tobias Burnus  <tobias@codesourcery.com>
! 	    Chung-Lin Tang  <cltang@codesourcery.com>
! 
! 	PR c++/104493
! 	* c-decl.cc (c_decl_attributes, finish_decl): Call omp_mappable_type
! 	instead of removed langhook.
! 	* c-typeck.cc (c_finish_omp_clauses): Likewise.
! 
! 2022-08-11  Marek Polacek  <polacek@redhat.com>
! 
! 	PR middle-end/102633
! 	* c-parser.cc (c_parser_initializer): Add new tree parameter.  Use it.
! 	Call suppress_warning.
! 	(c_parser_declaration_or_fndef): Pass d down to c_parser_initializer.
! 	(c_parser_omp_declare_reduction): Pass omp_priv down to
! 	c_parser_initializer.
! 
! 2022-08-08  Tom Honermann  <tom@honermann.net>
! 
! 	* c-parser.cc (c_parser_string_literal): Use char8_t as the type
! 	of CPP_UTF8STRING when char8_t support is enabled.
! 	* c-typeck.cc (digest_init): Allow initialization of an array
! 	of character type by a string literal with type array of
! 	char8_t.
! 
! 2022-08-01  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* c-typeck.cc (build_c_cast): Quote names of address spaces in
! 	diagnostics.
! 	(convert_for_assignment): Add a note to address space mismatch
! 	diagnostics, specifying the expected and actual types.
! 
! 2022-07-10  Lewis Hyatt  <lhyatt@gmail.com>
  
  	PR preprocessor/97498
  	* c-parser.cc (c_parser_pragma): Set input_location to the
  	location of the pragma, rather than the start of the line.
  
! 2022-07-04  Tobias Burnus  <tobias@codesourcery.com>
! 	    Chung-Lin Tang  <cltang@codesourcery.com>
! 	    Thomas Schwinge  <thomas@codesourcery.com>
  
! 	* c-parser.cc (c_parser_omp_target_data, c_parser_omp_target_update,
! 	c_parser_omp_target_enter_data, c_parser_omp_target_exit_data): Set
! 	OMP_REQUIRES_TARGET_USED.
! 	(c_parser_omp_requires): Remove sorry.
! 
! 2022-07-01  Tobias Burnus  <tobias@codesourcery.com>
! 
! 	* c-parser.cc (c_parser_omp_target_enter_data,
! 	c_parser_omp_target_exit_data): Accept tofrom
! 	map-type modifier but use 'to' / 'from' internally.
! 
! 2022-06-16  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* c-decl.cc (implicitly_declare): Add auto_diagnostic_group to
! 	group the warning with any note.
! 	(warn_about_goto): Likewise to group error or warning with note.
! 	Bail out if the warning wasn't emitted, to avoid emitting orphan
! 	notes.
! 	(lookup_label_for_goto): Add auto_diagnostic_group to
! 	group the error with the note.
! 	(check_earlier_gotos): Likewise.
! 	(c_check_switch_jump_warnings): Likewise for any error/warning.
! 	Conditionalize emission of the notes.
! 	(diagnose_uninitialized_cst_member): Likewise for warning,
! 	conditionalizing emission of the note.
! 	(grokdeclarator): Add auto_diagnostic_group to group the "array
! 	type has incomplete element type" error with any note.
! 	(parser_xref_tag): Add auto_diagnostic_group to group warnings
! 	with their notes.  Conditionalize emission of notes.
! 	(start_struct): Add auto_diagnostic_group to group the
! 	"redefinition of" errors with any note.
! 	(start_enum): Likewise for "redeclaration of %<enum %E%>" error.
! 	(check_for_loop_decls): Likewise for pre-C99 error.
! 
! 2022-06-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_clause_linear): Parse OpenMP 5.2
! 	style linear clause modifiers.  Set
! 	OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER flag on the clauses when
! 	old style modifiers are used.
! 	* c-typeck.cc (c_finish_omp_clauses): Only reject linear clause
! 	with val modifier on simd or for if the old style modifiers are
! 	used.
! 
! 2022-06-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* c-lang.cc (LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE): Redefine.
! 	(c_get_sarif_source_language): New.
! 	* c-tree.h (c_get_sarif_source_language): New decl.
! 
! 2022-05-31  Jason Merrill  <jason@redhat.com>
! 
! 	* Make-lang.in (c.tags): Look at *.cc.
! 
! 2022-05-31  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (OMP_SCOPE_CLAUSE_MASK): Add firstprivate and allocate
! 	clauses.
! 
! 2022-05-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_declare_target): If OMP_CLAUSE_LINK was
! 	seen first, use "%<to%>" or "%<enter%>" depending on
! 	OMP_CLAUSE_ENTER_TO of the current clause, otherwise use
! 	"%<to%> or %<enter%>" wording.
! 
! 2022-05-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_clause_name): Parse enter clause.
! 	(c_parser_omp_all_clauses): For to clause on declare target, use
! 	OMP_CLAUSE_ENTER clause with OMP_CLAUSE_ENTER_TO instead of
! 	OMP_CLAUSE_TO_DECLARE clause.  Handle PRAGMA_OMP_CLAUSE_ENTER.
! 	(OMP_DECLARE_TARGET_CLAUSE_MASK): Add enter clause.
! 	(c_parser_omp_declare_target): Use OMP_CLAUSE_ENTER instead of
! 	OMP_CLAUSE_TO_DECLARE.
! 	* c-typeck.cc (c_finish_omp_clauses): Handle OMP_CLAUSE_ENTER instead
! 	of OMP_CLAUSE_TO_DECLARE, to OMP_CLAUSE_ENTER_TO use "to" as clause
! 	name in diagnostics instead of
! 	omp_clause_code_name[OMP_CLAUSE_CODE (c)].
! 
! 2022-05-25  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/91134
! 	* c-tree.h (build_component_ref): Add ARROW_LOC location_t argument.
! 	* c-typeck.cc (build_component_ref): Likewise.  If DATUM is
! 	INDIRECT_REF and ARROW_LOC isn't UNKNOWN_LOCATION, print a different
! 	diagnostic and fixit hint if DATUM has pointer type.
! 	* c-parser.cc (c_parser_postfix_expression,
! 	c_parser_omp_variable_list): Adjust build_component_ref callers.
! 	* gimple-parser.cc (c_parser_gimple_postfix_expression_after_primary):
! 	Likewise.
! 
! 2022-05-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/105378
! 	* c-parser.cc (OMP_TASKWAIT_CLAUSE_MASK): Add nowait clause.
! 
! 2022-05-18  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c/105131
! 	* c-decl.cc (diagnose_mismatched_decls): Warn about enum/integer type
! 	mismatches.
! 	* c-tree.h (comptypes_check_enum_int): Declare.
! 	* c-typeck.cc (comptypes): No longer static.
! 
! 2022-05-17  Marek Polacek  <polacek@redhat.com>
! 
! 	* c-decl.cc (finish_enum): Store the CONST_DECL into TREE_VALUE, not
! 	its value.
! 
! 2022-05-17  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parser_omp_clause_depend): Parse
! 	inoutset depend-kind.
! 	(c_parser_omp_depobj): Likewise.
! 
! 2022-05-16  Martin Liska  <mliska@suse.cz>
! 
! 	* c-decl.cc (match_builtin_function_types): Use ARRAY_SIZE.
! 
! 2022-05-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-parser.cc (c_parse_init): Register omp_all_memory as keyword
! 	if flag_openmp.
! 	(c_parser_postfix_expression): Diagnose uses of omp_all_memory
! 	in postfix expressions.
! 	(c_parser_omp_variable_list): Handle omp_all_memory in depend
! 	clause.
! 	* c-typeck.cc (c_finish_omp_clauses): Handle omp_all_memory
! 	keyword in depend clause as null_pointer_node, diagnose invalid
! 	uses.
! 
! 2022-05-09  Martin Liska  <mliska@suse.cz>
! 
! 	* c-parser.cc (c_parser_conditional_expression): Use {,UN}LIKELY
! 	macros.
! 	(c_parser_binary_expression): Likewise.
! 
! 2022-05-07  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/101833
! 	PR c++/47634
! 	* c-objc-common.cc (maybe_adjust_arg_pos_for_attribute): New.
  
  2022-04-08  Jakub Jelinek  <jakub@redhat.com>
  
***************
*** 8310,8316 ****
  	* c-decl.c: Likewise.  Include gt-c-c-decl.h, not gt-c-decl.h.
  	* c-parser.c: Likewise.  Include gt-c-c-parser.h, not gt-c-parser.h.
  
! Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 9114,9120 ----
  	* c-decl.c: Likewise.  Include gt-c-c-decl.h, not gt-c-decl.h.
  	* c-parser.c: Likewise.  Include gt-c-c-parser.h, not gt-c-parser.h.
  
! Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/c/Make-lang.in gcc-13.1.0/gcc/c/Make-lang.in
*** gcc-12.2.0/gcc/c/Make-lang.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/Make-lang.in	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Top level -*- makefile -*- fragment for GNU C - C language.
! # Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Top level -*- makefile -*- fragment for GNU C - C language.
! # Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
*************** c.srcinfo:
*** 109,115 ****
  c.srcextra: gengtype-lex.cc
  	-cp -p $^ $(srcdir)
  c.tags: force
! 	cd $(srcdir)/c; $(ETAGS) -o TAGS.sub *.c *.h; \
  	$(ETAGS) --include TAGS.sub --include ../TAGS.sub
  c.man:
  c.srcman:
--- 109,115 ----
  c.srcextra: gengtype-lex.cc
  	-cp -p $^ $(srcdir)
  c.tags: force
! 	cd $(srcdir)/c; $(ETAGS) -o TAGS.sub *.cc *.h; \
  	$(ETAGS) --include TAGS.sub --include ../TAGS.sub
  c.man:
  c.srcman:
diff -Nrcpad gcc-12.2.0/gcc/c/c-aux-info.cc gcc-13.1.0/gcc/c/c-aux-info.cc
*** gcc-12.2.0/gcc/c/c-aux-info.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-aux-info.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Generate information regarding function declarations and definitions based
     on information stored in GCC's tree structure.  This code implements the
     -aux-info option.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@segfault.us.com).
  
  This file is part of GCC.
--- 1,7 ----
  /* Generate information regarding function declarations and definitions based
     on information stored in GCC's tree structure.  This code implements the
     -aux-info option.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@segfault.us.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/c/c-convert.cc gcc-13.1.0/gcc/c/c-convert.cc
*** gcc-12.2.0/gcc/c/c-convert.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-convert.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Language-level data type conversion for GNU C.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Language-level data type conversion for GNU C.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** c_convert (tree type, tree expr, bool in
*** 110,117 ****
      case VOID_TYPE:
        return fold_convert_loc (loc, type, e);
  
-     case INTEGER_TYPE:
      case ENUMERAL_TYPE:
        if (sanitize_flags_p (SANITIZE_FLOAT_CAST)
  	  && current_function_decl != NULL_TREE
  	  && TREE_CODE (TREE_TYPE (expr)) == REAL_TYPE
--- 110,122 ----
      case VOID_TYPE:
        return fold_convert_loc (loc, type, e);
  
      case ENUMERAL_TYPE:
+       if (ENUM_UNDERLYING_TYPE (type) != NULL_TREE
+ 	  && TREE_CODE (ENUM_UNDERLYING_TYPE (type)) == BOOLEAN_TYPE)
+ 	goto convert_to_boolean;
+       gcc_fallthrough ();
+ 
+     case INTEGER_TYPE:
        if (sanitize_flags_p (SANITIZE_FLOAT_CAST)
  	  && current_function_decl != NULL_TREE
  	  && TREE_CODE (TREE_TYPE (expr)) == REAL_TYPE
*************** c_convert (tree type, tree expr, bool in
*** 129,142 ****
--- 134,175 ----
        goto maybe_fold;
  
      case BOOLEAN_TYPE:
+     convert_to_boolean:
        return fold_convert_loc
  	(loc, type, c_objc_common_truthvalue_conversion (input_location, expr));
  
      case POINTER_TYPE:
+       /* The type nullptr_t may be converted to a pointer type.  The result is
+ 	 a null pointer value.  */
+       if (NULLPTR_TYPE_P (TREE_TYPE (e)))
+ 	{
+ 	  /* To make sure that (void *)nullptr is not a null pointer constant,
+ 	     build_c_cast will create an additional NOP_EXPR around the result
+ 	     of this conversion.  */
+ 	  if (TREE_SIDE_EFFECTS (e))
+ 	    ret = build2 (COMPOUND_EXPR, type, e, build_int_cst (type, 0));
+ 	  else
+ 	    ret = build_int_cst (type, 0);
+ 	  goto maybe_fold;
+ 	}
+       gcc_fallthrough ();
      case REFERENCE_TYPE:
        ret = convert_to_pointer (type, e);
        goto maybe_fold;
  
+     case NULLPTR_TYPE:
+       /* A null pointer constant or value of type nullptr_t may be
+ 	 converted to nullptr_t.  The latter case has already been
+ 	 handled.  build_c_cast will create an additional NOP_EXPR to
+ 	 ensure the result of the conversion is not itself a null
+ 	 pointer constant.  */
+       if (null_pointer_constant_p (expr))
+ 	{
+ 	  ret = build_int_cst (type, 0);
+ 	  goto maybe_fold;
+ 	}
+       break;
+ 
      case REAL_TYPE:
        ret = convert_to_real (type, e);
        goto maybe_fold;
*************** c_convert (tree type, tree expr, bool in
*** 180,186 ****
        return ret;
      }
  
!   error ("conversion to non-scalar type requested");
    return error_mark_node;
  }
  
--- 213,230 ----
        return ret;
      }
  
!   /* If we are converting to nullptr_t, don't say "non-scalar type" because
!      the nullptr_t type is a scalar type.  Only nullptr_t or a null pointer
!      constant shall be converted to nullptr_t.  */
!   if (code == NULLPTR_TYPE)
!     {
!       error ("conversion from %qT to %qT", TREE_TYPE (e), type);
!       inform (input_location,
! 	      "only %qT or a null pointer constant can be converted to %qT",
! 	      type, type);
!     }
!   else
!     error ("conversion to non-scalar type requested");
    return error_mark_node;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/c/c-decl.cc gcc-13.1.0/gcc/c/c-decl.cc
*** gcc-12.2.0/gcc/c/c-decl.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-decl.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Process declarations and variables for C compiler.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Process declarations and variables for C compiler.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static int warn_about_return_type;
*** 153,161 ****
  
  static bool undef_nested_function;
  
! /* If non-zero, implicit "omp declare target" attribute is added into the
!    attribute lists.  */
! int current_omp_declare_target_attribute;
  
  /* Each c_binding structure describes one binding of an identifier to
     a decl.  All the decls in a scope - irrespective of namespace - are
--- 153,165 ----
  
  static bool undef_nested_function;
  
! /* Vector of implicit "omp declare target" attributes to be added into
!    the attribute lists.  */
! vec<c_omp_declare_target_attr, va_gc> *current_omp_declare_target_attribute;
! 
! /* If non-zero, we are inside of
!    #pragma omp begin assumes ... #pragma omp end assumes region.  */
! int current_omp_begin_assumes;
  
  /* Each c_binding structure describes one binding of an identifier to
     a decl.  All the decls in a scope - irrespective of namespace - are
*************** decl_jump_unsafe (tree decl)
*** 679,685 ****
  
    /* Always warn about crossing variably modified types.  */
    if ((VAR_P (decl) || TREE_CODE (decl) == TYPE_DECL)
!       && variably_modified_type_p (TREE_TYPE (decl), NULL_TREE))
      return true;
  
    /* Otherwise, only warn if -Wgoto-misses-init and this is an
--- 683,689 ----
  
    /* Always warn about crossing variably modified types.  */
    if ((VAR_P (decl) || TREE_CODE (decl) == TYPE_DECL)
!       && c_type_variably_modified_p (TREE_TYPE (decl)))
      return true;
  
    /* Otherwise, only warn if -Wgoto-misses-init and this is an
*************** pop_scope (void)
*** 1306,1312 ****
  	      && scope != external_scope)
  	    {
  	      if (!TREE_USED (p))
! 		warning (OPT_Wunused_variable, "unused variable %q+D", p);
  	      else if (DECL_CONTEXT (p) == current_function_decl)
  		warning_at (DECL_SOURCE_LOCATION (p),
  			    OPT_Wunused_but_set_variable,
--- 1310,1319 ----
  	      && scope != external_scope)
  	    {
  	      if (!TREE_USED (p))
! 		{
! 		  warning (OPT_Wunused_variable, "unused variable %q+D", p);
! 		  suppress_warning (p, OPT_Wunused_variable);
! 		}
  	      else if (DECL_CONTEXT (p) == current_function_decl)
  		warning_at (DECL_SOURCE_LOCATION (p),
  			    OPT_Wunused_but_set_variable,
*************** pop_file_scope (void)
*** 1468,1473 ****
--- 1475,1550 ----
    maybe_apply_pending_pragma_weaks ();
  }
  
+ /* Whether we are curently inside the initializer for an
+    underspecified object definition (C2x auto or constexpr).  */
+ static bool in_underspecified_init;
+ 
+ /* Start an underspecified object definition for NAME at LOC.  This
+    means that NAME is shadowed inside its initializer, so neither the
+    definition being initialized, nor any definition from an outer
+    scope, may be referenced during that initializer.  Return state to
+    be passed to finish_underspecified_init.  If NAME is NULL_TREE, the
+    underspecified object is a (constexpr) compound literal; there is
+    no shadowing in that case, but all the other restrictions on
+    underspecified object definitions still apply.  */
+ unsigned int
+ start_underspecified_init (location_t loc, tree name)
+ {
+   bool prev = in_underspecified_init;
+   bool ok;
+   if (name == NULL_TREE)
+     ok = true;
+   else
+     {
+       tree decl = build_decl (loc, VAR_DECL, name, error_mark_node);
+       C_DECL_UNDERSPECIFIED (decl) = 1;
+       struct c_scope *scope = current_scope;
+       struct c_binding *b = I_SYMBOL_BINDING (name);
+       if (b && B_IN_SCOPE (b, scope))
+ 	{
+ 	  error_at (loc, "underspecified declaration of %qE, which is already "
+ 		    "declared in this scope", name);
+ 	  ok = false;
+ 	}
+       else
+ 	{
+ 	  bind (name, decl, scope, false, false, loc);
+ 	  ok = true;
+ 	}
+     }
+   in_underspecified_init = true;
+   return ok | (prev << 1);
+ }
+ 
+ /* Finish an underspecified object definition for NAME, before that
+    name is bound to the real declaration instead of a placeholder.
+    PREV_STATE is the value returned by the call to
+    start_underspecified_init.  If NAME is NULL_TREE, this means a
+    compound literal, as for start_underspecified_init.  */
+ void
+ finish_underspecified_init (tree name, unsigned int prev_state)
+ {
+   if (name != NULL_TREE && (prev_state & 1))
+     {
+       /* A VAR_DECL was bound to the name to shadow any previous
+ 	 declarations for the name; remove that binding now.  */
+       struct c_scope *scope = current_scope;
+       struct c_binding *b = I_SYMBOL_BINDING (name);
+       gcc_assert (b);
+       gcc_assert (B_IN_SCOPE (b, scope));
+       gcc_assert (VAR_P (b->decl));
+       gcc_assert (C_DECL_UNDERSPECIFIED (b->decl));
+       I_SYMBOL_BINDING (name) = b->shadowed;
+       /* In erroneous cases there may be other bindings added to this
+ 	 scope during the initializer.  */
+       struct c_binding **p = &scope->bindings;
+       while (*p != b)
+ 	p = &((*p)->prev);
+       *p = free_binding_and_advance (*p);
+     }
+   in_underspecified_init = (prev_state & (1u << 1)) >> 1;
+ }
+ 
  /* Adjust the bindings for the start of a statement expression.  */
  
  void
*************** c_bind (location_t loc, tree decl, bool
*** 1658,1664 ****
     Used only by match_builtin_function_types.  */
  
  static const unsigned builtin_structptr_type_count
!   = sizeof builtin_structptr_types / sizeof builtin_structptr_types[0];
  
  static GTY(()) tree last_structptr_types[builtin_structptr_type_count];
  
--- 1735,1741 ----
     Used only by match_builtin_function_types.  */
  
  static const unsigned builtin_structptr_type_count
!   = ARRAY_SIZE (builtin_structptr_types);
  
  static GTY(()) tree last_structptr_types[builtin_structptr_type_count];
  
*************** match_builtin_function_types (tree newty
*** 1705,1714 ****
    tree newargs = TYPE_ARG_TYPES (newtype);
    tree tryargs = newargs;
  
!   const unsigned nlst
!     = sizeof last_structptr_types / sizeof last_structptr_types[0];
!   const unsigned nbst
!     = sizeof builtin_structptr_types / sizeof builtin_structptr_types[0];
  
    gcc_checking_assert (nlst == nbst);
  
--- 1782,1789 ----
    tree newargs = TYPE_ARG_TYPES (newtype);
    tree tryargs = newargs;
  
!   const unsigned nlst = ARRAY_SIZE (last_structptr_types);
!   const unsigned nbst = ARRAY_SIZE (builtin_structptr_types);
  
    gcc_checking_assert (nlst == nbst);
  
*************** diagnose_mismatched_decls (tree newdecl,
*** 1995,2003 ****
  
    bool pedwarned = false;
    bool warned = false;
    auto_diagnostic_group d;
  
!   if (!comptypes (oldtype, newtype))
      {
        if (TREE_CODE (olddecl) == FUNCTION_DECL
  	  && fndecl_built_in_p (olddecl, BUILT_IN_NORMAL)
--- 2070,2081 ----
  
    bool pedwarned = false;
    bool warned = false;
+   bool enum_and_int_p = false;
    auto_diagnostic_group d;
  
!   int comptypes_result = comptypes_check_enum_int (oldtype, newtype,
! 						   &enum_and_int_p);
!   if (!comptypes_result)
      {
        if (TREE_CODE (olddecl) == FUNCTION_DECL
  	  && fndecl_built_in_p (olddecl, BUILT_IN_NORMAL)
*************** diagnose_mismatched_decls (tree newdecl,
*** 2139,2144 ****
--- 2217,2229 ----
  	  return false;
  	}
      }
+   /* Warn about enum/integer type mismatches.  They are compatible types
+      (C2X 6.7.2.2/5), but may pose portability problems.  */
+   else if (enum_and_int_p && TREE_CODE (newdecl) != TYPE_DECL)
+     warned = warning_at (DECL_SOURCE_LOCATION (newdecl),
+ 			 OPT_Wenum_int_mismatch,
+ 			 "conflicting types for %q+D due to enum/integer "
+ 			 "mismatch; have %qT", newdecl, newtype);
  
    /* Redeclaration of a type is a constraint violation (6.7.2.3p1),
       but silently ignore the redeclaration if either is in a system
*************** diagnose_mismatched_decls (tree newdecl,
*** 2148,2154 ****
    if (TREE_CODE (newdecl) == TYPE_DECL)
      {
        bool types_different = false;
-       int comptypes_result;
  
        comptypes_result
  	= comptypes_check_different_types (oldtype, newtype, &types_different);
--- 2233,2238 ----
*************** diagnose_mismatched_decls (tree newdecl,
*** 2166,2172 ****
  	  || warning_suppressed_p (olddecl, OPT_Wpedantic))
  	return true;  /* Allow OLDDECL to continue in use.  */
  
!       if (variably_modified_type_p (newtype, NULL))
  	{
  	  error ("redefinition of typedef %q+D with variably modified type",
  		 newdecl);
--- 2250,2256 ----
  	  || warning_suppressed_p (olddecl, OPT_Wpedantic))
  	return true;  /* Allow OLDDECL to continue in use.  */
  
!       if (c_type_variably_modified_p (newtype))
  	{
  	  error ("redefinition of typedef %q+D with variably modified type",
  		 newdecl);
*************** merge_decls (tree newdecl, tree olddecl,
*** 2673,2678 ****
--- 2757,2771 ----
     if (DECL_INITIAL (newdecl) == NULL_TREE)
      DECL_INITIAL (newdecl) = DECL_INITIAL (olddecl);
  
+   /* Merge 'constexpr' information.  */
+   if (VAR_P (olddecl) && VAR_P (newdecl))
+     {
+       if (C_DECL_DECLARED_CONSTEXPR (olddecl))
+ 	C_DECL_DECLARED_CONSTEXPR (newdecl) = 1;
+       else if (C_DECL_DECLARED_CONSTEXPR (newdecl))
+ 	C_DECL_DECLARED_CONSTEXPR (olddecl) = 1;
+     }
+ 
    /* Merge the threadprivate attribute.  */
    if (VAR_P (olddecl) && C_DECL_THREADPRIVATE_P (olddecl))
      C_DECL_THREADPRIVATE_P (newdecl) = 1;
*************** implicitly_declare (location_t loc, tree
*** 3690,3695 ****
--- 3783,3789 ----
  						      (TREE_TYPE (decl)));
  	      if (!comptypes (newtype, TREE_TYPE (decl)))
  		{
+ 		  auto_diagnostic_group d;
  		  bool warned = warning_at (loc,
  					    OPT_Wbuiltin_declaration_mismatch,
  					    "incompatible implicit "
*************** lookup_label (tree name)
*** 3883,3894 ****
  static void
  warn_about_goto (location_t goto_loc, tree label, tree decl)
  {
!   if (variably_modified_type_p (TREE_TYPE (decl), NULL_TREE))
      error_at (goto_loc,
  	      "jump into scope of identifier with variably modified type");
    else
!     warning_at (goto_loc, OPT_Wjump_misses_init,
! 		"jump skips variable initialization");
    inform (DECL_SOURCE_LOCATION (label), "label %qD defined here", label);
    inform (DECL_SOURCE_LOCATION (decl), "%qD declared here", decl);
  }
--- 3977,3990 ----
  static void
  warn_about_goto (location_t goto_loc, tree label, tree decl)
  {
!   auto_diagnostic_group d;
!   if (c_type_variably_modified_p (TREE_TYPE (decl)))
      error_at (goto_loc,
  	      "jump into scope of identifier with variably modified type");
    else
!     if (!warning_at (goto_loc, OPT_Wjump_misses_init,
! 		     "jump skips variable initialization"))
!       return;
    inform (DECL_SOURCE_LOCATION (label), "label %qD defined here", label);
    inform (DECL_SOURCE_LOCATION (decl), "%qD declared here", decl);
  }
*************** lookup_label_for_goto (location_t loc, t
*** 3943,3948 ****
--- 4039,4045 ----
  
    if (label_vars->label_bindings.left_stmt_expr)
      {
+       auto_diagnostic_group d;
        error_at (loc, "jump into statement expression");
        inform (DECL_SOURCE_LOCATION (label), "label %qD defined here", label);
      }
*************** check_earlier_gotos (tree label, struct
*** 4033,4038 ****
--- 4130,4136 ----
  
        if (g->goto_bindings.stmt_exprs > 0)
  	{
+ 	  auto_diagnostic_group d;
  	  error_at (g->loc, "jump into statement expression");
  	  inform (DECL_SOURCE_LOCATION (label), "label %qD defined here",
  		  label);
*************** c_check_switch_jump_warnings (struct c_s
*** 4152,4170 ****
  	{
  	  if (decl_jump_unsafe (b->decl))
  	    {
! 	      if (variably_modified_type_p (TREE_TYPE (b->decl), NULL_TREE))
  		{
  		  saw_error = true;
  		  error_at (case_loc,
  			    ("switch jumps into scope of identifier with "
  			     "variably modified type"));
  		}
  	      else
! 		warning_at (case_loc, OPT_Wjump_misses_init,
! 			    "switch jumps over variable initialization");
! 	      inform (switch_loc, "switch starts here");
! 	      inform (DECL_SOURCE_LOCATION (b->decl), "%qD declared here",
! 		      b->decl);
  	    }
  	}
      }
--- 4250,4275 ----
  	{
  	  if (decl_jump_unsafe (b->decl))
  	    {
! 	      auto_diagnostic_group d;
! 	      bool emitted;
! 	      if (c_type_variably_modified_p (TREE_TYPE (b->decl)))
  		{
  		  saw_error = true;
  		  error_at (case_loc,
  			    ("switch jumps into scope of identifier with "
  			     "variably modified type"));
+ 		  emitted = true;
  		}
  	      else
! 		emitted
! 		  = warning_at (case_loc, OPT_Wjump_misses_init,
! 				"switch jumps over variable initialization");
! 	      if (emitted)
! 		{
! 		  inform (switch_loc, "switch starts here");
! 		  inform (DECL_SOURCE_LOCATION (b->decl), "%qD declared here",
! 			  b->decl);
! 		}
  	    }
  	}
      }
*************** c_check_switch_jump_warnings (struct c_s
*** 4172,4177 ****
--- 4277,4283 ----
    if (switch_bindings->stmt_exprs > 0)
      {
        saw_error = true;
+       auto_diagnostic_group d;
        error_at (case_loc, "switch jumps into statement expression");
        inform (switch_loc, "switch starts here");
      }
*************** handle_nodiscard_attribute (tree *node,
*** 4456,4466 ****
--- 4562,4595 ----
      }
    return NULL_TREE;
  }
+ 
+ /* Handle the standard [[noreturn]] attribute.  */
+ 
+ static tree
+ handle_std_noreturn_attribute (tree *node, tree name, tree args,
+ 			       int flags, bool *no_add_attrs)
+ {
+   /* Unlike GNU __attribute__ ((noreturn)), the standard [[noreturn]]
+      only applies to functions, not function pointers.  */
+   if (TREE_CODE (*node) == FUNCTION_DECL)
+     return handle_noreturn_attribute (node, name, args, flags, no_add_attrs);
+   else
+     {
+       pedwarn (input_location, OPT_Wattributes,
+ 	       "standard %qE attribute can only be applied to functions",
+ 	       name);
+       *no_add_attrs = true;
+       return NULL_TREE;
+     }
+ }
+ 
  /* Table of supported standard (C2x) attributes.  */
  const struct attribute_spec std_attribute_table[] =
  {
    /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
         affects_type_identity, handler, exclude } */
+   { "_Noreturn", 0, 0, false, false, false, false,
+     handle_std_noreturn_attribute, NULL },
    { "deprecated", 0, 1, false, false, false, false,
      handle_deprecated_attribute, NULL },
    { "fallthrough", 0, 0, false, false, false, false,
*************** const struct attribute_spec std_attribut
*** 4469,4474 ****
--- 4598,4605 ----
      handle_unused_attribute, NULL },
    { "nodiscard", 0, 1, false, false, false, false,
      handle_nodiscard_attribute, NULL },
+   { "noreturn", 0, 0, false, false, false, false,
+     handle_std_noreturn_attribute, NULL },
    { NULL, 0, 0, false, false, false, false, NULL, NULL }
  };
  
*************** c_init_decl_processing (void)
*** 4511,4516 ****
--- 4642,4653 ----
    pushdecl (build_decl (UNKNOWN_LOCATION, TYPE_DECL, get_identifier ("_Bool"),
  			boolean_type_node));
  
+   /* C-specific nullptr initialization.  */
+   record_builtin_type (RID_MAX, "nullptr_t", nullptr_type_node);
+   /* The size and alignment of nullptr_t is the same as for a pointer to
+      character type.  */
+   SET_TYPE_ALIGN (nullptr_type_node, GET_MODE_ALIGNMENT (ptr_mode));
+ 
    input_location = save_loc;
  
    make_fname_decl = c_make_fname_decl;
*************** shadow_tag_warned (const struct c_declsp
*** 4709,4714 ****
--- 4846,4862 ----
  	      warned = 1;
  	    }
  
+ 	  if (in_underspecified_init)
+ 	    {
+ 	      /* This can only occur with extensions such as statement
+ 		 expressions, but is still appropriate as an error to
+ 		 avoid types declared in such a context escaping to
+ 		 the type of an auto variable.  */
+ 	      error ("%qT declared in underspecified object initializer",
+ 		     value);
+ 	      warned = 1;
+ 	    }
+ 
  	  if (name == NULL_TREE)
  	    {
  	      if (warned != 1 && code != ENUMERAL_TYPE)
*************** shadow_tag_warned (const struct c_declsp
*** 4759,4764 ****
--- 4907,4927 ----
  	      warned = 1;
  	      pending_xref_error ();
  	    }
+ 	  else if (declspecs->typespec_kind != ctsk_tagdef
+ 		   && declspecs->typespec_kind != ctsk_tagfirstref
+ 		   && declspecs->typespec_kind != ctsk_tagfirstref_attrs
+ 		   && code == ENUMERAL_TYPE
+ 		   && !declspecs->enum_type_specifier_ref_p)
+ 	    {
+ 	      bool warned_enum = false;
+ 	      if (warned != 1)
+ 		warned_enum = pedwarn (input_location, OPT_Wpedantic,
+ 				       "empty declaration of %<enum%> type "
+ 				       "does not redeclare tag");
+ 	      if (warned_enum)
+ 		warned = 1;
+ 	      pending_xref_error ();
+ 	    }
  	  else
  	    {
  	      pending_invalid_xref = NULL_TREE;
*************** shadow_tag_warned (const struct c_declsp
*** 4802,4807 ****
--- 4965,4976 ----
        warned = 1;
      }
  
+   if (declspecs->constexpr_p)
+     {
+       error ("%<constexpr%> in empty declaration");
+       warned = 1;
+     }
+ 
    if (current_scope == file_scope && declspecs->storage_class == csc_auto)
      {
        error ("%<auto%> in file-scope empty declaration");
*************** shadow_tag_warned (const struct c_declsp
*** 4814,4819 ****
--- 4983,5020 ----
        warned = 1;
      }
  
+   if (declspecs->enum_type_specifier_ref_p && !warned)
+     {
+       if (declspecs->storage_class != csc_none)
+ 	{
+ 	  error ("storage class specifier in empty declaration with %<enum%> "
+ 		 "underlying type");
+ 	  warned = 1;
+ 	}
+       else if (declspecs->thread_p)
+ 	{
+ 	  error ("%qs in empty declaration with %<enum%> underlying type",
+ 		 declspecs->thread_gnu_p ? "__thread" : "_Thread_local");
+ 	  warned = 1;
+ 	}
+       else if (declspecs->const_p
+ 	       || declspecs->volatile_p
+ 	       || declspecs->atomic_p
+ 	       || declspecs->restrict_p
+ 	       || declspecs->address_space)
+ 	{
+ 	  error ("type qualifier in empty declaration with %<enum%> "
+ 		 "underlying type");
+ 	  warned = 1;
+ 	}
+       else if (declspecs->alignas_p)
+ 	{
+ 	  error ("%<alignas%> in empty declaration with %<enum%> "
+ 		 "underlying type");
+ 	  warned = 1;
+ 	}
+     }
+ 
    if (!warned && !in_system_header_at (input_location)
        && declspecs->storage_class != csc_none)
      {
*************** set_array_declarator_inner (struct c_dec
*** 4979,4984 ****
--- 5180,5220 ----
    return decl;
  }
  
+ /* Determine whether TYPE is a ISO C99 flexible array memeber type "[]".  */
+ static bool
+ flexible_array_member_type_p (const_tree type)
+ {
+   if (TREE_CODE (type) == ARRAY_TYPE
+       && TYPE_SIZE (type) == NULL_TREE
+       && TYPE_DOMAIN (type) != NULL_TREE
+       && TYPE_MAX_VALUE (TYPE_DOMAIN (type)) == NULL_TREE)
+     return true;
+ 
+   return false;
+ }
+ 
+ /* Determine whether TYPE is a one-element array type "[1]".  */
+ static bool
+ one_element_array_type_p (const_tree type)
+ {
+   if (TREE_CODE (type) != ARRAY_TYPE)
+     return false;
+   return integer_zerop (array_type_nelts (type));
+ }
+ 
+ /* Determine whether TYPE is a zero-length array type "[0]".  */
+ static bool
+ zero_length_array_type_p (const_tree type)
+ {
+   if (TREE_CODE (type) == ARRAY_TYPE)
+     if (tree type_size = TYPE_SIZE_UNIT (type))
+       if ((integer_zerop (type_size))
+ 	   && TYPE_DOMAIN (type) != NULL_TREE
+ 	   && TYPE_MAX_VALUE (TYPE_DOMAIN (type)) == NULL_TREE)
+ 	return true;
+   return false;
+ }
+ 
  /* INIT is a constructor that forms DECL's initializer.  If the final
     element initializes a flexible array field, add the size of that
     initializer to DECL's size.  */
*************** add_flexible_array_elts_to_size (tree de
*** 4993,5002 ****
  
    elt = CONSTRUCTOR_ELTS (init)->last ().value;
    type = TREE_TYPE (elt);
!   if (TREE_CODE (type) == ARRAY_TYPE
!       && TYPE_SIZE (type) == NULL_TREE
!       && TYPE_DOMAIN (type) != NULL_TREE
!       && TYPE_MAX_VALUE (TYPE_DOMAIN (type)) == NULL_TREE)
      {
        complete_array_type (&type, elt, false);
        DECL_SIZE (decl)
--- 5229,5235 ----
  
    elt = CONSTRUCTOR_ELTS (init)->last ().value;
    type = TREE_TYPE (elt);
!   if (flexible_array_member_type_p (type))
      {
        complete_array_type (&type, elt, false);
        DECL_SIZE (decl)
*************** static tree
*** 5050,5061 ****
  c_decl_attributes (tree *node, tree attributes, int flags)
  {
    /* Add implicit "omp declare target" attribute if requested.  */
!   if (current_omp_declare_target_attribute
        && ((VAR_P (*node) && is_global_var (*node))
  	  || TREE_CODE (*node) == FUNCTION_DECL))
      {
!       if (VAR_P (*node)
! 	  && !lang_hooks.types.omp_mappable_type (TREE_TYPE (*node)))
  	attributes = tree_cons (get_identifier ("omp declare target implicit"),
  				NULL_TREE, attributes);
        else
--- 5283,5293 ----
  c_decl_attributes (tree *node, tree attributes, int flags)
  {
    /* Add implicit "omp declare target" attribute if requested.  */
!   if (vec_safe_length (current_omp_declare_target_attribute)
        && ((VAR_P (*node) && is_global_var (*node))
  	  || TREE_CODE (*node) == FUNCTION_DECL))
      {
!       if (VAR_P (*node) && !omp_mappable_type (TREE_TYPE (*node)))
  	attributes = tree_cons (get_identifier ("omp declare target implicit"),
  				NULL_TREE, attributes);
        else
*************** c_decl_attributes (tree *node, tree attr
*** 5065,5070 ****
--- 5297,5318 ----
  	  attributes = tree_cons (get_identifier ("omp declare target block"),
  				  NULL_TREE, attributes);
  	}
+       if (TREE_CODE (*node) == FUNCTION_DECL)
+ 	{
+ 	  int device_type
+ 	    = current_omp_declare_target_attribute->last ().device_type;
+ 	  device_type = MAX (device_type, 0);
+ 	  if ((device_type & OMP_CLAUSE_DEVICE_TYPE_HOST) != 0
+ 	      && !lookup_attribute ("omp declare target host", attributes))
+ 	    attributes
+ 	      = tree_cons (get_identifier ("omp declare target host"),
+ 			   NULL_TREE, attributes);
+ 	  if ((device_type & OMP_CLAUSE_DEVICE_TYPE_NOHOST) != 0
+ 	      && !lookup_attribute ("omp declare target nohost", attributes))
+ 	    attributes
+ 	      = tree_cons (get_identifier ("omp declare target nohost"),
+ 			   NULL_TREE, attributes);
+ 	}
      }
  
    /* Look up the current declaration with all the attributes merged
*************** c_decl_attributes (tree *node, tree attr
*** 5080,5086 ****
     This is called as soon as the type information and variable name
     have been parsed, before parsing the initializer if any.
     Here we create the ..._DECL node, fill in its type,
!    and put it on the list of decls for the current context.
     When nonnull, set *LASTLOC to the location of the prior declaration
     of the same entity if one exists.
     The ..._DECL node is returned as the value.
--- 5328,5334 ----
     This is called as soon as the type information and variable name
     have been parsed, before parsing the initializer if any.
     Here we create the ..._DECL node, fill in its type,
!    and (if DO_PUSH) put it on the list of decls for the current context.
     When nonnull, set *LASTLOC to the location of the prior declaration
     of the same entity if one exists.
     The ..._DECL node is returned as the value.
*************** c_decl_attributes (tree *node, tree attr
*** 5095,5101 ****
  
  tree
  start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
! 	    bool initialized, tree attributes, location_t *lastloc /* = NULL */)
  {
    tree decl;
    tree tem;
--- 5343,5350 ----
  
  tree
  start_decl (struct c_declarator *declarator, struct c_declspecs *declspecs,
! 	    bool initialized, tree attributes, bool do_push /* = true */,
! 	    location_t *lastloc /* = NULL */)
  {
    tree decl;
    tree tem;
*************** start_decl (struct c_declarator *declara
*** 5161,5189 ****
  	  initialized = false;
  	else if (COMPLETE_TYPE_P (TREE_TYPE (decl)))
  	  {
! 	    /* A complete type is ok if size is fixed.  */
! 
! 	    if (!poly_int_tree_p (TYPE_SIZE (TREE_TYPE (decl)))
! 		|| C_DECL_VARIABLE_SIZE (decl))
! 	      {
! 		error ("variable-sized object may not be initialized");
! 		initialized = false;
! 	      }
  	  }
  	else if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
  	  {
  	    error ("variable %qD has initializer but incomplete type", decl);
  	    initialized = false;
  	  }
- 	else if (C_DECL_VARIABLE_SIZE (decl))
- 	  {
- 	    /* Although C99 is unclear about whether incomplete arrays
- 	       of VLAs themselves count as VLAs, it does not make
- 	       sense to permit them to be initialized given that
- 	       ordinary VLAs may not be initialized.  */
- 	    error ("variable-sized object may not be initialized");
- 	    initialized = false;
- 	  }
        }
  
    if (initialized)
--- 5410,5424 ----
  	  initialized = false;
  	else if (COMPLETE_TYPE_P (TREE_TYPE (decl)))
  	  {
! 	    /* A complete type is ok if size is fixed.  If the size is
! 	       variable, an empty initializer is OK and nonempty
! 	       initializers will be diagnosed in the parser.  */
  	  }
  	else if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
  	  {
  	    error ("variable %qD has initializer but incomplete type", decl);
  	    initialized = false;
  	  }
        }
  
    if (initialized)
*************** start_decl (struct c_declarator *declara
*** 5282,5296 ****
  
    /* Add this decl to the current scope.
       TEM may equal DECL or it may be a previous decl of the same name.  */
!   tem = pushdecl (decl);
! 
!   if (initialized && DECL_EXTERNAL (tem))
      {
!       DECL_EXTERNAL (tem) = 0;
!       TREE_STATIC (tem) = 1;
!     }
  
!   return tem;
  }
  
  /* Subroutine of finish_decl. TYPE is the type of an uninitialized object
--- 5517,5536 ----
  
    /* Add this decl to the current scope.
       TEM may equal DECL or it may be a previous decl of the same name.  */
!   if (do_push)
      {
!       tem = pushdecl (decl);
  
!       if (initialized && DECL_EXTERNAL (tem))
! 	{
! 	  DECL_EXTERNAL (tem) = 0;
! 	  TREE_STATIC (tem) = 1;
! 	}
! 
!       return tem;
!     }
!   else
!     return decl;
  }
  
  /* Subroutine of finish_decl. TYPE is the type of an uninitialized object
*************** diagnose_uninitialized_cst_member (tree
*** 5310,5319 ****
  
        if (TYPE_QUALS (field_type) & TYPE_QUAL_CONST)
        	{
! 	  warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wc___compat,
! 	  	      "uninitialized const member in %qT is invalid in C++",
! 		      strip_array_types (TREE_TYPE (decl)));
! 	  inform (DECL_SOURCE_LOCATION (field), "%qD should be initialized", field);
  	}
  
        if (RECORD_OR_UNION_TYPE_P (field_type))
--- 5550,5560 ----
  
        if (TYPE_QUALS (field_type) & TYPE_QUAL_CONST)
        	{
! 	  auto_diagnostic_group d;
! 	  if (warning_at (DECL_SOURCE_LOCATION (decl), OPT_Wc___compat,
! 			  "uninitialized const member in %qT is invalid in C++",
! 			  strip_array_types (TREE_TYPE (decl))))
! 	    inform (DECL_SOURCE_LOCATION (field), "%qD should be initialized", field);
  	}
  
        if (RECORD_OR_UNION_TYPE_P (field_type))
*************** finish_decl (tree decl, location_t init_
*** 5624,5630 ****
    if (TREE_CODE (decl) == TYPE_DECL)
      {
        if (!DECL_FILE_SCOPE_P (decl)
! 	  && variably_modified_type_p (TREE_TYPE (decl), NULL_TREE))
  	add_stmt (build_stmt (DECL_SOURCE_LOCATION (decl), DECL_EXPR, decl));
  
        rest_of_decl_compilation (decl, DECL_FILE_SCOPE_P (decl), 0);
--- 5865,5871 ----
    if (TREE_CODE (decl) == TYPE_DECL)
      {
        if (!DECL_FILE_SCOPE_P (decl)
! 	  && c_type_variably_modified_p (TREE_TYPE (decl)))
  	add_stmt (build_stmt (DECL_SOURCE_LOCATION (decl), DECL_EXPR, decl));
  
        rest_of_decl_compilation (decl, DECL_FILE_SCOPE_P (decl), 0);
*************** finish_decl (tree decl, location_t init_
*** 5680,5686 ****
        DECL_ATTRIBUTES (decl)
  	= remove_attribute ("omp declare target implicit",
  			    DECL_ATTRIBUTES (decl));
!       if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (decl)))
  	error ("%q+D in declare target directive does not have mappable type",
  	       decl);
        else if (!lookup_attribute ("omp declare target",
--- 5921,5927 ----
        DECL_ATTRIBUTES (decl)
  	= remove_attribute ("omp declare target implicit",
  			    DECL_ATTRIBUTES (decl));
!       if (!omp_mappable_type (TREE_TYPE (decl)))
  	error ("%q+D in declare target directive does not have mappable type",
  	       decl);
        else if (!lookup_attribute ("omp declare target",
*************** mark_forward_parm_decls (void)
*** 5959,5969 ****
     literal.  NON_CONST is true if the initializers contain something
     that cannot occur in a constant expression.  If ALIGNAS_ALIGN is nonzero,
     it is the (valid) alignment for this compound literal, as specified
!    with _Alignas.  */
  
  tree
  build_compound_literal (location_t loc, tree type, tree init, bool non_const,
! 			unsigned int alignas_align)
  {
    /* We do not use start_decl here because we have a type, not a declarator;
       and do not use finish_decl because the decl should be stored inside
--- 6200,6212 ----
     literal.  NON_CONST is true if the initializers contain something
     that cannot occur in a constant expression.  If ALIGNAS_ALIGN is nonzero,
     it is the (valid) alignment for this compound literal, as specified
!    with _Alignas.  SCSPECS are the storage class specifiers (C2x) from the
!    compound literal.  */
  
  tree
  build_compound_literal (location_t loc, tree type, tree init, bool non_const,
! 			unsigned int alignas_align,
! 			struct c_declspecs *scspecs)
  {
    /* We do not use start_decl here because we have a type, not a declarator;
       and do not use finish_decl because the decl should be stored inside
*************** build_compound_literal (location_t loc,
*** 5971,5992 ****
    tree decl;
    tree complit;
    tree stmt;
  
    if (type == error_mark_node
        || init == error_mark_node)
      return error_mark_node;
  
    decl = build_decl (loc, VAR_DECL, NULL_TREE, type);
    DECL_EXTERNAL (decl) = 0;
    TREE_PUBLIC (decl) = 0;
!   TREE_STATIC (decl) = (current_scope == file_scope);
    DECL_CONTEXT (decl) = current_function_decl;
    TREE_USED (decl) = 1;
    DECL_READ_P (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
    C_DECL_COMPOUND_LITERAL_P (decl) = 1;
    TREE_TYPE (decl) = type;
    c_apply_type_quals_to_decl (TYPE_QUALS (strip_array_types (type)), decl);
    if (alignas_align)
      {
--- 6214,6261 ----
    tree decl;
    tree complit;
    tree stmt;
+   bool threadp = scspecs ? scspecs->thread_p : false;
+   enum c_storage_class storage_class = (scspecs
+ 					? scspecs->storage_class
+ 					: csc_none);
  
    if (type == error_mark_node
        || init == error_mark_node)
      return error_mark_node;
  
+   if (current_scope == file_scope && storage_class == csc_register)
+     {
+       error_at (loc, "file-scope compound literal specifies %<register%>");
+       storage_class = csc_none;
+     }
+ 
+   if (current_scope != file_scope && threadp && storage_class == csc_none)
+     {
+       error_at (loc, "compound literal implicitly auto and declared %qs",
+ 		scspecs->thread_gnu_p ? "__thread" : "_Thread_local");
+       threadp = false;
+     }
+ 
    decl = build_decl (loc, VAR_DECL, NULL_TREE, type);
    DECL_EXTERNAL (decl) = 0;
    TREE_PUBLIC (decl) = 0;
!   TREE_STATIC (decl) = (current_scope == file_scope
! 			|| storage_class == csc_static);
    DECL_CONTEXT (decl) = current_function_decl;
    TREE_USED (decl) = 1;
    DECL_READ_P (decl) = 1;
    DECL_ARTIFICIAL (decl) = 1;
    DECL_IGNORED_P (decl) = 1;
    C_DECL_COMPOUND_LITERAL_P (decl) = 1;
+   C_DECL_DECLARED_CONSTEXPR (decl) = scspecs && scspecs->constexpr_p;
    TREE_TYPE (decl) = type;
+   if (threadp)
+     set_decl_tls_model (decl, decl_default_tls_model (decl));
+   if (storage_class == csc_register)
+     {
+       C_DECL_REGISTER (decl) = 1;
+       DECL_REGISTER (decl) = 1;
+     }
    c_apply_type_quals_to_decl (TYPE_QUALS (strip_array_types (type)), decl);
    if (alignas_align)
      {
*************** build_compound_literal (location_t loc,
*** 5994,5999 ****
--- 6263,6275 ----
        DECL_USER_ALIGN (decl) = 1;
      }
    store_init_value (loc, decl, init, NULL_TREE);
+   if (current_scope != file_scope
+       && TREE_STATIC (decl)
+       && !TREE_READONLY (decl)
+       && DECL_DECLARED_INLINE_P (current_function_decl)
+       && DECL_EXTERNAL (current_function_decl))
+     record_inline_static (input_location, current_function_decl,
+ 			  decl, csi_modifiable);
  
    if (TREE_CODE (type) == ARRAY_TYPE && !COMPLETE_TYPE_P (type))
      {
*************** grokdeclarator (const struct c_declarato
*** 6266,6271 ****
--- 6542,6548 ----
  {
    tree type = declspecs->type;
    bool threadp = declspecs->thread_p;
+   bool constexprp = declspecs->constexpr_p;
    enum c_storage_class storage_class = declspecs->storage_class;
    int constp;
    int restrictp;
*************** grokdeclarator (const struct c_declarato
*** 6295,6300 ****
--- 6572,6586 ----
    enum c_declarator_kind first_non_attr_kind;
    unsigned int alignas_align = 0;
  
+   if (type == NULL_TREE)
+     {
+       /* This can occur for auto on a parameter in C2X mode.  Set a
+ 	 dummy type here so subsequent code can give diagnostics for
+ 	 this case.  */
+       gcc_assert (declspecs->c2x_auto_p);
+       gcc_assert (decl_context == PARM);
+       type = declspecs->type = integer_type_node;
+     }
    if (TREE_CODE (type) == ERROR_MARK)
      return error_mark_node;
    if (expr == NULL)
*************** grokdeclarator (const struct c_declarato
*** 6366,6371 ****
--- 6652,6667 ----
        }
    }
  
+   /* An enum type specifier (": specifier-qualifier-list") may only be
+      specified when the enum is being defined or in an empty
+      declaration of the form "enum identifier enum-type-specifier;".
+      Except for the case of an empty declaration that has additional
+      declaration specifiers, all invalid contexts (declarations that
+      aren't empty, type names, parameter declarations, member
+      declarations) pass through grokdeclarator.  */
+   if (declspecs->enum_type_specifier_ref_p)
+     error_at (loc, "%<enum%> underlying type may not be specified here");
+ 
    /* A function definition's declarator must have the form of
       a function declarator.  */
  
*************** grokdeclarator (const struct c_declarato
*** 6389,6395 ****
  
    if ((decl_context == NORMAL || decl_context == FIELD)
        && current_scope == file_scope
!       && variably_modified_type_p (type, NULL_TREE))
      {
        if (name)
  	error_at (loc, "variably modified %qE at file scope", name);
--- 6685,6691 ----
  
    if ((decl_context == NORMAL || decl_context == FIELD)
        && current_scope == file_scope
!       && c_type_variably_modified_p (type))
      {
        if (name)
  	error_at (loc, "variably modified %qE at file scope", name);
*************** grokdeclarator (const struct c_declarato
*** 6489,6494 ****
--- 6785,6791 ----
  
    if (funcdef_flag
        && (threadp
+ 	  || constexprp
  	  || storage_class == csc_auto
  	  || storage_class == csc_register
  	  || storage_class == csc_typedef))
*************** grokdeclarator (const struct c_declarato
*** 6505,6518 ****
  	error_at (loc, "function definition declared %qs",
  		  declspecs->thread_gnu_p ? "__thread" : "_Thread_local");
        threadp = false;
        if (storage_class == csc_auto
  	  || storage_class == csc_register
  	  || storage_class == csc_typedef)
  	storage_class = csc_none;
      }
!   else if (decl_context != NORMAL && (storage_class != csc_none || threadp))
      {
!       if (decl_context == PARM && storage_class == csc_register)
  	;
        else
  	{
--- 6802,6824 ----
  	error_at (loc, "function definition declared %qs",
  		  declspecs->thread_gnu_p ? "__thread" : "_Thread_local");
        threadp = false;
+       /* The parser ensures a constexpr function definition never
+ 	 reaches here.  */
+       gcc_assert (!constexprp);
        if (storage_class == csc_auto
  	  || storage_class == csc_register
  	  || storage_class == csc_typedef)
  	storage_class = csc_none;
      }
!   else if (decl_context != NORMAL && (storage_class != csc_none
! 				      || threadp
! 				      || constexprp
! 				      || declspecs->c2x_auto_p))
      {
!       if (decl_context == PARM
! 	  && storage_class == csc_register
! 	  && !constexprp
! 	  && !declspecs->c2x_auto_p)
  	;
        else
  	{
*************** grokdeclarator (const struct c_declarato
*** 6538,6543 ****
--- 6844,6850 ----
  	    }
  	  storage_class = csc_none;
  	  threadp = false;
+ 	  constexprp = false;
  	}
      }
    else if (storage_class == csc_extern
*************** grokdeclarator (const struct c_declarato
*** 6624,6629 ****
--- 6931,6938 ----
  	  array_parm_static = false;
  	}
  
+       bool varmod = C_TYPE_VARIABLY_MODIFIED (type);
+ 
        switch (declarator->kind)
  	{
  	case cdk_attrs:
*************** grokdeclarator (const struct c_declarato
*** 6935,6940 ****
--- 7244,7250 ----
  	    /* Complain about arrays of incomplete types.  */
  	    if (!COMPLETE_TYPE_P (type))
  	      {
+ 		auto_diagnostic_group d;
  		error_at (loc, "array type has incomplete element type %qT",
  			  type);
  		/* See if we can be more helpful.  */
*************** grokdeclarator (const struct c_declarato
*** 6977,6984 ****
  		       variable size, so the enclosing shared array type
  		       must too.  */
  		    if (size && TREE_CODE (size) == INTEGER_CST)
! 		      type
! 			= build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
  		    C_TYPE_VARIABLE_SIZE (type) = 1;
  		  }
  
--- 7287,7293 ----
  		       variable size, so the enclosing shared array type
  		       must too.  */
  		    if (size && TREE_CODE (size) == INTEGER_CST)
! 		      type = build_distinct_type_copy (TYPE_MAIN_VARIANT (type));
  		    C_TYPE_VARIABLE_SIZE (type) = 1;
  		  }
  
*************** grokdeclarator (const struct c_declarato
*** 7121,7127 ****
  	      }
  	    type_quals = TYPE_UNQUALIFIED;
  
! 	    type = build_function_type (type, arg_types);
  	    declarator = declarator->declarator;
  
  	    /* Set the TYPE_CONTEXTs for each tagged type which is local to
--- 7430,7437 ----
  	      }
  	    type_quals = TYPE_UNQUALIFIED;
  
! 	    type = build_function_type (type, arg_types,
! 					arg_info->no_named_args_stdarg_p);
  	    declarator = declarator->declarator;
  
  	    /* Set the TYPE_CONTEXTs for each tagged type which is local to
*************** grokdeclarator (const struct c_declarato
*** 7187,7193 ****
  	       the size evaluation prior to the side effects.  We therefore
  	       use BIND_EXPRs in TYPENAME contexts too.  */
  	    if (!TYPE_NAME (type)
! 		&& variably_modified_type_p (type, NULL_TREE))
  	      {
  		tree bind = NULL_TREE;
  		if (decl_context == TYPENAME || decl_context == PARM)
--- 7497,7503 ----
  	       the size evaluation prior to the side effects.  We therefore
  	       use BIND_EXPRs in TYPENAME contexts too.  */
  	    if (!TYPE_NAME (type)
! 		&& c_type_variably_modified_p (type))
  	      {
  		tree bind = NULL_TREE;
  		if (decl_context == TYPENAME || decl_context == PARM)
*************** grokdeclarator (const struct c_declarato
*** 7228,7233 ****
--- 7538,7545 ----
  	default:
  	  gcc_unreachable ();
  	}
+       if (type != error_mark_node)
+ 	C_TYPE_VARIABLY_MODIFIED (type) = varmod || size_varies;
      }
    *decl_attrs = chainon (returned_attrs, *decl_attrs);
    *decl_attrs = chainon (decl_id_attrs, *decl_attrs);
*************** grokdeclarator (const struct c_declarato
*** 7422,7428 ****
      }
  
    if (pedantic && decl_context == FIELD
!       && variably_modified_type_p (type, NULL_TREE))
      {
        /* C99 6.7.2.1p8 */
        pedwarn (loc, OPT_Wpedantic, "a member of a structure or union cannot "
--- 7734,7740 ----
      }
  
    if (pedantic && decl_context == FIELD
!       && c_type_variably_modified_p (type))
      {
        /* C99 6.7.2.1p8 */
        pedwarn (loc, OPT_Wpedantic, "a member of a structure or union cannot "
*************** grokdeclarator (const struct c_declarato
*** 7583,7589 ****
        }
      else if (TREE_CODE (type) == FUNCTION_TYPE)
        {
! 	if (storage_class == csc_register || threadp)
  	  {
  	    error_at (loc, "invalid storage class for function %qE", name);
  	  }
--- 7895,7901 ----
        }
      else if (TREE_CODE (type) == FUNCTION_TYPE)
        {
! 	if (storage_class == csc_register || threadp || constexprp)
  	  {
  	    error_at (loc, "invalid storage class for function %qE", name);
  	  }
*************** grokdeclarator (const struct c_declarato
*** 7683,7688 ****
--- 7995,8026 ----
  	/* An uninitialized decl with `extern' is a reference.  */
  	int extern_ref = !initialized && storage_class == csc_extern;
  
+ 	if (constexprp)
+ 	  {
+ 	    /* The type of a constexpr variable must not be variably
+ 	       modified, volatile, atomic or restrict qualified or
+ 	       have a member with such a qualifier.  const
+ 	       qualification is implicitly added, and, at file scope,
+ 	       has internal linkage.  */
+ 	    if (c_type_variably_modified_p (type))
+ 	      error_at (loc, "%<constexpr%> object has variably modified "
+ 			"type");
+ 	    if (type_quals
+ 		& (TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC))
+ 	      error_at (loc, "invalid qualifiers for %<constexpr%> object");
+ 	    else
+ 	      {
+ 		tree type_no_array = strip_array_types (type);
+ 		if (RECORD_OR_UNION_TYPE_P (type_no_array)
+ 		    && C_TYPE_FIELDS_NON_CONSTEXPR (type_no_array))
+ 		  error_at (loc, "invalid qualifiers for field of "
+ 			    "%<constexpr%> object");
+ 	      }
+ 	    type_quals |= TYPE_QUAL_CONST;
+ 	    if (current_scope == file_scope)
+ 	      storage_class = csc_static;
+ 	  }
+ 
  	type = c_build_qualified_type (type, type_quals, orig_qual_type,
  				       orig_qual_indirect);
  
*************** grokdeclarator (const struct c_declarato
*** 7709,7714 ****
--- 8047,8054 ----
  			   VAR_DECL, declarator->u.id.id, type);
  	if (size_varies)
  	  C_DECL_VARIABLE_SIZE (decl) = 1;
+ 	if (constexprp)
+ 	  C_DECL_DECLARED_CONSTEXPR (decl) = 1;
  
  	if (declspecs->inline_p)
  	  pedwarn (loc, 0, "variable %q+D declared %<inline%>", decl);
*************** grokdeclarator (const struct c_declarato
*** 7744,7750 ****
  	 || (storage_class == csc_none
  	     && TREE_CODE (type) == FUNCTION_TYPE
  	     && !funcdef_flag))
! 	&& variably_modified_type_p (type, NULL_TREE))
        {
  	/* C99 6.7.5.2p2 */
  	if (TREE_CODE (type) == FUNCTION_TYPE)
--- 8084,8090 ----
  	 || (storage_class == csc_none
  	     && TREE_CODE (type) == FUNCTION_TYPE
  	     && !funcdef_flag))
! 	&& c_type_variably_modified_p (type))
        {
  	/* C99 6.7.5.2p2 */
  	if (TREE_CODE (type) == FUNCTION_TYPE)
*************** grokparms (struct c_arg_info *arg_info,
*** 7855,7861 ****
        error ("%<[*]%> not allowed in other than function prototype scope");
      }
  
!   if (arg_types == NULL_TREE && !funcdef_flag
        && !in_system_header_at (input_location))
      warning (OPT_Wstrict_prototypes,
  	     "function declaration isn%'t a prototype");
--- 8195,8201 ----
        error ("%<[*]%> not allowed in other than function prototype scope");
      }
  
!   if (arg_types == NULL_TREE && !funcdef_flag && !flag_isoc2x
        && !in_system_header_at (input_location))
      warning (OPT_Wstrict_prototypes,
  	     "function declaration isn%'t a prototype");
*************** grokparms (struct c_arg_info *arg_info,
*** 7883,7893 ****
        tree parm, type, typelt;
        unsigned int parmno;
  
!       /* In C2X, convert () in a function definition to (void).  */
        if (flag_isoc2x
- 	  && funcdef_flag
  	  && !arg_types
! 	  && !arg_info->parms)
  	arg_types = arg_info->types = void_list_node;
  
        /* If there is a parameter of incomplete type in a definition,
--- 8223,8233 ----
        tree parm, type, typelt;
        unsigned int parmno;
  
!       /* In C2X, convert () to (void).  */
        if (flag_isoc2x
  	  && !arg_types
! 	  && !arg_info->parms
! 	  && !arg_info->no_named_args_stdarg_p)
  	arg_types = arg_info->types = void_list_node;
  
        /* If there is a parameter of incomplete type in a definition,
*************** build_arg_info (void)
*** 7957,7962 ****
--- 8297,8303 ----
    ret->others = NULL_TREE;
    ret->pending_sizes = NULL;
    ret->had_vla_unspec = 0;
+   ret->no_named_args_stdarg_p = 0;
    return ret;
  }
  
*************** get_parm_info (bool ellipsis, tree expr)
*** 8148,8153 ****
--- 8489,8495 ----
    arg_info->types = types;
    arg_info->others = others;
    arg_info->pending_sizes = expr;
+   arg_info->no_named_args_stdarg_p = ellipsis && !types;
    return arg_info;
  }
  
*************** get_parm_info (bool ellipsis, tree expr)
*** 8155,8166 ****
     Define the tag as a forward-reference with location LOC if it is
     not defined.  HAVE_STD_ATTRS says whether any standard attributes
     were present after the struct, union or enum keyword; ATTRS are the
!    standard attributes present there.  Return a c_typespec structure
!    for the type specifier.  */
  
  struct c_typespec
  parser_xref_tag (location_t loc, enum tree_code code, tree name,
! 		 bool have_std_attrs, tree attrs)
  {
    struct c_typespec ret;
    tree ref;
--- 8497,8511 ----
     Define the tag as a forward-reference with location LOC if it is
     not defined.  HAVE_STD_ATTRS says whether any standard attributes
     were present after the struct, union or enum keyword; ATTRS are the
!    standard attributes present there.  HAS_ENUM_TYPE_SPECIFIER says
!    whether an enum type specifier (": specifier-qualifier-list") is
!    present; if so, this is called before that specifier is parsed, so
!    that the tag is in scope for that specifier.  Return a c_typespec
!    structure for the type specifier.  */
  
  struct c_typespec
  parser_xref_tag (location_t loc, enum tree_code code, tree name,
! 		 bool have_std_attrs, tree attrs, bool has_enum_type_specifier)
  {
    struct c_typespec ret;
    tree ref;
*************** parser_xref_tag (location_t loc, enum tr
*** 8168,8178 ****
  
    ret.expr = NULL_TREE;
    ret.expr_const_operands = true;
  
!   /* If a cross reference is requested, look up the type
!      already defined for this tag and return it.  */
  
!   ref = lookup_tag (code, name, false, &refloc);
    /* If this is the right type of tag, return what we found.
       (This reference will be shadowed by shadow_tag later if appropriate.)
       If this is the wrong type of tag, do not return it.  If it was the
--- 8513,8525 ----
  
    ret.expr = NULL_TREE;
    ret.expr_const_operands = true;
+   ret.has_enum_type_specifier = has_enum_type_specifier;
  
!   /* If a cross reference is requested, look up the type already
!      defined for this tag and return it.  If an enum type specifier is
!      present, only a definition in the current scope is relevant.  */
  
!   ref = lookup_tag (code, name, has_enum_type_specifier, &refloc);
    /* If this is the right type of tag, return what we found.
       (This reference will be shadowed by shadow_tag later if appropriate.)
       If this is the wrong type of tag, do not return it.  If it was the
*************** parser_xref_tag (location_t loc, enum tr
*** 8194,8218 ****
  	  && loc != UNKNOWN_LOCATION
  	  && warn_cxx_compat)
  	{
  	  switch (code)
  	    {
  	    case ENUMERAL_TYPE:
! 	      warning_at (loc, OPT_Wc___compat,
! 			  ("enum type defined in struct or union "
! 			   "is not visible in C++"));
! 	      inform (refloc, "enum type defined here");
  	      break;
  	    case RECORD_TYPE:
! 	      warning_at (loc, OPT_Wc___compat,
! 			  ("struct defined in struct or union "
! 			   "is not visible in C++"));
! 	      inform (refloc, "struct defined here");
  	      break;
  	    case UNION_TYPE:
! 	      warning_at (loc, OPT_Wc___compat,
! 			  ("union defined in struct or union "
! 			   "is not visible in C++"));
! 	      inform (refloc, "union defined here");
  	      break;
  	    default:
  	      gcc_unreachable();
--- 8541,8566 ----
  	  && loc != UNKNOWN_LOCATION
  	  && warn_cxx_compat)
  	{
+ 	  auto_diagnostic_group d;
  	  switch (code)
  	    {
  	    case ENUMERAL_TYPE:
! 	      if (warning_at (loc, OPT_Wc___compat,
! 			      ("enum type defined in struct or union "
! 			       "is not visible in C++")))
! 		  inform (refloc, "enum type defined here");
  	      break;
  	    case RECORD_TYPE:
! 	      if (warning_at (loc, OPT_Wc___compat,
! 			      ("struct defined in struct or union "
! 			       "is not visible in C++")))
! 		inform (refloc, "struct defined here");
  	      break;
  	    case UNION_TYPE:
! 	      if (warning_at (loc, OPT_Wc___compat,
! 			      ("union defined in struct or union "
! 			       "is not visible in C++")))
! 		inform (refloc, "union defined here");
  	      break;
  	    default:
  	      gcc_unreachable();
*************** parser_xref_tag (location_t loc, enum tr
*** 8240,8249 ****
--- 8588,8601 ----
        TYPE_PRECISION (ref) = TYPE_PRECISION (unsigned_type_node);
        TYPE_MIN_VALUE (ref) = TYPE_MIN_VALUE (unsigned_type_node);
        TYPE_MAX_VALUE (ref) = TYPE_MAX_VALUE (unsigned_type_node);
+       ENUM_FIXED_UNDERLYING_TYPE_P (ref) = has_enum_type_specifier;
      }
  
    pushtag (loc, name, ref);
    decl_attributes (&ref, attrs, (int) ATTR_FLAG_TYPE_IN_PLACE);
+   if (in_underspecified_init)
+     error_at (loc, "%qT declared in underspecified object initializer",
+ 	      ref);
  
    ret.spec = ref;
    return ret;
*************** parser_xref_tag (location_t loc, enum tr
*** 8256,8262 ****
  tree
  xref_tag (enum tree_code code, tree name)
  {
!   return parser_xref_tag (input_location, code, name, false, NULL_TREE).spec;
  }
  
  /* Make sure that the tag NAME is defined *in the current scope*
--- 8608,8615 ----
  tree
  xref_tag (enum tree_code code, tree name)
  {
!   return parser_xref_tag (input_location, code, name, false, NULL_TREE,
! 			  false).spec;
  }
  
  /* Make sure that the tag NAME is defined *in the current scope*
*************** start_struct (location_t loc, enum tree_
*** 8288,8293 ****
--- 8641,8647 ----
  
        if (TYPE_SIZE (ref))
  	{
+ 	  auto_diagnostic_group d;
  	  if (code == UNION_TYPE)
  	    error_at (loc, "redefinition of %<union %E%>", name);
  	  else
*************** start_struct (location_t loc, enum tree_
*** 8337,8342 ****
--- 8691,8699 ----
  		 ? "sizeof"
  		 : (in_typeof ? "typeof" : "alignof")));
  
+   if (in_underspecified_init)
+     error_at (loc, "%qT defined in underspecified object initializer", ref);
+ 
    return ref;
  }
  
*************** finish_incomplete_vars (tree incomplete_
*** 8696,8701 ****
--- 9053,9113 ----
      }
  }
  
+ /* Determine whether the FIELD_DECL X is a flexible array member according to
+    the following info:
+   A. whether the FIELD_DECL X is the last field of the DECL_CONTEXT;
+   B. whether the FIELD_DECL is an array that is declared as "[]", "[0]",
+      or "[1]";
+   C. flag_strict_flex_arrays;
+   D. the attribute strict_flex_array that is attached to the field
+      if presenting.
+   Return TRUE when it's a flexible array member, FALSE otherwise.  */
+ 
+ static bool
+ is_flexible_array_member_p (bool is_last_field,
+ 			    tree x)
+ {
+   /* If not the last field, return false.  */
+   if (!is_last_field)
+     return false;
+ 
+   /* If not an array field, return false.  */
+   if (TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE)
+     return false;
+ 
+   bool is_zero_length_array = zero_length_array_type_p (TREE_TYPE (x));
+   bool is_one_element_array = one_element_array_type_p (TREE_TYPE (x));
+   bool is_flexible_array = flexible_array_member_type_p (TREE_TYPE (x));
+ 
+   unsigned int strict_flex_array_level = c_strict_flex_array_level_of (x);
+ 
+   switch (strict_flex_array_level)
+     {
+       case 0:
+ 	/* Default, all trailing arrays are flexible array members.  */
+ 	return true;
+       case 1:
+ 	/* Level 1: all "[1]", "[0]", and "[]" are flexible array members.  */
+ 	if (is_one_element_array)
+ 	  return true;
+ 	/* FALLTHROUGH.  */
+       case 2:
+ 	/* Level 2: all "[0]", and "[]" are flexible array members.  */
+ 	if (is_zero_length_array)
+ 	  return true;
+ 	/* FALLTHROUGH.  */
+       case 3:
+ 	/* Level 3: Only "[]" are flexible array members.  */
+ 	if (is_flexible_array)
+ 	  return true;
+ 	break;
+       default:
+ 	gcc_unreachable ();
+     }
+   return false;
+ }
+ 
+ 
  /* Fill in the fields of a RECORD_TYPE or UNION_TYPE node, T.
     LOC is the location of the RECORD_TYPE or UNION_TYPE's definition.
     FIELDLIST is a chain of FIELD_DECL nodes for the fields.
*************** finish_struct (location_t loc, tree t, t
*** 8757,8774 ****
    bool saw_named_field = false;
    for (x = fieldlist; x; x = DECL_CHAIN (x))
      {
        if (TREE_TYPE (x) == error_mark_node)
  	continue;
  
        DECL_CONTEXT (x) = t;
  
        /* If any field is const, the structure type is pseudo-const.  */
        if (TREE_READONLY (x))
  	C_TYPE_FIELDS_READONLY (t) = 1;
        else
  	{
  	  /* A field that is pseudo-const makes the structure likewise.  */
- 	  tree t1 = strip_array_types (TREE_TYPE (x));
  	  if (RECORD_OR_UNION_TYPE_P (t1) && C_TYPE_FIELDS_READONLY (t1))
  	    C_TYPE_FIELDS_READONLY (t) = 1;
  	}
--- 9169,9191 ----
    bool saw_named_field = false;
    for (x = fieldlist; x; x = DECL_CHAIN (x))
      {
+       /* Whether this field is the last field of the structure or union.
+ 	 for UNION, any field is the last field of it.  */
+       bool is_last_field = (DECL_CHAIN (x) == NULL_TREE)
+ 			    || (TREE_CODE (t) == UNION_TYPE);
+ 
        if (TREE_TYPE (x) == error_mark_node)
  	continue;
  
        DECL_CONTEXT (x) = t;
  
+       tree t1 = strip_array_types (TREE_TYPE (x));
        /* If any field is const, the structure type is pseudo-const.  */
        if (TREE_READONLY (x))
  	C_TYPE_FIELDS_READONLY (t) = 1;
        else
  	{
  	  /* A field that is pseudo-const makes the structure likewise.  */
  	  if (RECORD_OR_UNION_TYPE_P (t1) && C_TYPE_FIELDS_READONLY (t1))
  	    C_TYPE_FIELDS_READONLY (t) = 1;
  	}
*************** finish_struct (location_t loc, tree t, t
*** 8776,8787 ****
        /* Any field that is volatile means variables of this type must be
  	 treated in some ways as volatile.  */
        if (TREE_THIS_VOLATILE (x))
! 	C_TYPE_FIELDS_VOLATILE (t) = 1;
  
        /* Any field of nominal variable size implies structure is too.  */
        if (C_DECL_VARIABLE_SIZE (x))
  	C_TYPE_VARIABLE_SIZE (t) = 1;
  
        if (DECL_C_BIT_FIELD (x))
  	{
  	  unsigned HOST_WIDE_INT width = tree_to_uhwi (DECL_INITIAL (x));
--- 9193,9219 ----
        /* Any field that is volatile means variables of this type must be
  	 treated in some ways as volatile.  */
        if (TREE_THIS_VOLATILE (x))
! 	{
! 	  C_TYPE_FIELDS_VOLATILE (t) = 1;
! 	  C_TYPE_FIELDS_NON_CONSTEXPR (t) = 1;
! 	}
! 
!       /* Any field that is volatile, restrict-qualified or atomic
! 	 means the type cannot be used for a constexpr object.  */
!       if (TYPE_QUALS (t1)
! 	  & (TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC))
! 	C_TYPE_FIELDS_NON_CONSTEXPR (t) = 1;
!       else if (RECORD_OR_UNION_TYPE_P (t1) && C_TYPE_FIELDS_NON_CONSTEXPR (t1))
! 	    C_TYPE_FIELDS_NON_CONSTEXPR (t) = 1;
  
        /* Any field of nominal variable size implies structure is too.  */
        if (C_DECL_VARIABLE_SIZE (x))
  	C_TYPE_VARIABLE_SIZE (t) = 1;
  
+       /* If any field is variably modified, record this fact. */
+       if (C_TYPE_VARIABLY_MODIFIED (TREE_TYPE (x)))
+ 	C_TYPE_VARIABLY_MODIFIED (t) = 1;
+ 
        if (DECL_C_BIT_FIELD (x))
  	{
  	  unsigned HOST_WIDE_INT width = tree_to_uhwi (DECL_INITIAL (x));
*************** finish_struct (location_t loc, tree t, t
*** 8795,8804 ****
  	DECL_PACKED (x) = 1;
  
        /* Detect flexible array member in an invalid context.  */
!       if (TREE_CODE (TREE_TYPE (x)) == ARRAY_TYPE
! 	  && TYPE_SIZE (TREE_TYPE (x)) == NULL_TREE
! 	  && TYPE_DOMAIN (TREE_TYPE (x)) != NULL_TREE
! 	  && TYPE_MAX_VALUE (TYPE_DOMAIN (TREE_TYPE (x))) == NULL_TREE)
  	{
  	  if (TREE_CODE (t) == UNION_TYPE)
  	    {
--- 9227,9233 ----
  	DECL_PACKED (x) = 1;
  
        /* Detect flexible array member in an invalid context.  */
!       if (flexible_array_member_type_p (TREE_TYPE (x)))
  	{
  	  if (TREE_CODE (t) == UNION_TYPE)
  	    {
*************** finish_struct (location_t loc, tree t, t
*** 8806,8812 ****
  			"flexible array member in union");
  	      TREE_TYPE (x) = error_mark_node;
  	    }
! 	  else if (DECL_CHAIN (x) != NULL_TREE)
  	    {
  	      error_at (DECL_SOURCE_LOCATION (x),
  			"flexible array member not at end of struct");
--- 9235,9241 ----
  			"flexible array member in union");
  	      TREE_TYPE (x) = error_mark_node;
  	    }
! 	  else if (!is_last_field)
  	    {
  	      error_at (DECL_SOURCE_LOCATION (x),
  			"flexible array member not at end of struct");
*************** finish_struct (location_t loc, tree t, t
*** 8826,8831 ****
--- 9255,9263 ----
  	pedwarn (DECL_SOURCE_LOCATION (x), OPT_Wpedantic,
  		 "invalid use of structure with flexible array member");
  
+       /* Set DECL_NOT_FLEXARRAY flag for FIELD_DECL x.  */
+       DECL_NOT_FLEXARRAY (x) = !is_flexible_array_member_p (is_last_field, x);
+ 
        if (DECL_NAME (x)
  	  || RECORD_OR_UNION_TYPE_P (TREE_TYPE (x)))
  	saw_named_field = true;
*************** finish_struct (location_t loc, tree t, t
*** 8978,8984 ****
--- 9410,9418 ----
        TYPE_TRANSPARENT_AGGR (x) = TYPE_TRANSPARENT_AGGR (t);
        C_TYPE_FIELDS_READONLY (x) = C_TYPE_FIELDS_READONLY (t);
        C_TYPE_FIELDS_VOLATILE (x) = C_TYPE_FIELDS_VOLATILE (t);
+       C_TYPE_FIELDS_NON_CONSTEXPR (x) = C_TYPE_FIELDS_NON_CONSTEXPR (t);
        C_TYPE_VARIABLE_SIZE (x) = C_TYPE_VARIABLE_SIZE (t);
+       C_TYPE_VARIABLY_MODIFIED (x) = C_TYPE_VARIABLY_MODIFIED (t);
        C_TYPE_INCOMPLETE_VARS (x) = NULL_TREE;
      }
  
*************** finish_struct (location_t loc, tree t, t
*** 8995,9001 ****
    /* If we're inside a function proper, i.e. not file-scope and not still
       parsing parameters, then arrange for the size of a variable sized type
       to be bound now.  */
!   if (building_stmt_list_p () && variably_modified_type_p (t, NULL_TREE))
      add_stmt (build_stmt (loc,
  			  DECL_EXPR, build_decl (loc, TYPE_DECL, NULL, t)));
  
--- 9429,9435 ----
    /* If we're inside a function proper, i.e. not file-scope and not still
       parsing parameters, then arrange for the size of a variable sized type
       to be bound now.  */
!   if (building_stmt_list_p () && c_type_variably_modified_p(t))
      add_stmt (build_stmt (loc,
  			  DECL_EXPR, build_decl (loc, TYPE_DECL, NULL, t)));
  
*************** layout_array_type (tree t)
*** 9076,9087 ****
  /* Begin compiling the definition of an enumeration type.
     NAME is its name (or null if anonymous).
     LOC is the enum's location.
     Returns the type object, as yet incomplete.
     Also records info about it so that build_enumerator
     may be used to declare the individual values as they are read.  */
  
  tree
! start_enum (location_t loc, struct c_enum_contents *the_enum, tree name)
  {
    tree enumtype = NULL_TREE;
    location_t enumloc = UNKNOWN_LOCATION;
--- 9510,9524 ----
  /* Begin compiling the definition of an enumeration type.
     NAME is its name (or null if anonymous).
     LOC is the enum's location.
+    FIXED_UNDERLYING_TYPE is the (C2x) underlying type specified in the
+    definition.
     Returns the type object, as yet incomplete.
     Also records info about it so that build_enumerator
     may be used to declare the individual values as they are read.  */
  
  tree
! start_enum (location_t loc, struct c_enum_contents *the_enum, tree name,
! 	    tree fixed_underlying_type)
  {
    tree enumtype = NULL_TREE;
    location_t enumloc = UNKNOWN_LOCATION;
*************** start_enum (location_t loc, struct c_enu
*** 9097,9102 ****
--- 9534,9556 ----
      {
        enumtype = make_node (ENUMERAL_TYPE);
        pushtag (loc, name, enumtype);
+       if (fixed_underlying_type != NULL_TREE)
+ 	{
+ 	  /* For an enum definition with a fixed underlying type, the
+ 	     type is complete during the definition and the
+ 	     enumeration constants have that type.  If there was a
+ 	     tag, the type was completed in c_parser_enum_specifier.
+ 	     If not, it must be completed here.  */
+ 	  ENUM_FIXED_UNDERLYING_TYPE_P (enumtype) = true;
+ 	  TYPE_MIN_VALUE (enumtype) = TYPE_MIN_VALUE (fixed_underlying_type);
+ 	  TYPE_MAX_VALUE (enumtype) = TYPE_MAX_VALUE (fixed_underlying_type);
+ 	  TYPE_UNSIGNED (enumtype) = TYPE_UNSIGNED (fixed_underlying_type);
+ 	  SET_TYPE_ALIGN (enumtype, TYPE_ALIGN (fixed_underlying_type));
+ 	  TYPE_SIZE (enumtype) = NULL_TREE;
+ 	  TYPE_PRECISION (enumtype) = TYPE_PRECISION (fixed_underlying_type);
+ 	  ENUM_UNDERLYING_TYPE (enumtype) = fixed_underlying_type;
+ 	  layout_type (enumtype);
+ 	}
      }
    /* Update type location to the one of the definition, instead of e.g.
       a forward declaration.  */
*************** start_enum (location_t loc, struct c_enu
*** 9114,9119 ****
--- 9568,9574 ----
    if (TYPE_VALUES (enumtype) != NULL_TREE)
      {
        /* This enum is a named one that has been declared already.  */
+       auto_diagnostic_group d;
        error_at (loc, "redeclaration of %<enum %E%>", name);
        if (enumloc != UNKNOWN_LOCATION)
  	inform (enumloc, "originally defined here");
*************** start_enum (location_t loc, struct c_enu
*** 9123,9132 ****
        TYPE_VALUES (enumtype) = NULL_TREE;
      }
  
    the_enum->enum_next_value = integer_zero_node;
    the_enum->enum_overflow = 0;
  
!   if (flag_short_enums)
      for (tree v = TYPE_MAIN_VARIANT (enumtype); v; v = TYPE_NEXT_VARIANT (v))
        TYPE_PACKED (v) = 1;
  
--- 9578,9593 ----
        TYPE_VALUES (enumtype) = NULL_TREE;
      }
  
+   if (ENUM_FIXED_UNDERLYING_TYPE_P (enumtype)
+       && fixed_underlying_type == NULL_TREE)
+     error_at (loc, "%<enum%> declared with but defined without "
+ 	      "fixed underlying type");
+ 
    the_enum->enum_next_value = integer_zero_node;
+   the_enum->enum_type = enumtype;
    the_enum->enum_overflow = 0;
  
!   if (flag_short_enums && !ENUM_FIXED_UNDERLYING_TYPE_P (enumtype))
      for (tree v = TYPE_MAIN_VARIANT (enumtype); v; v = TYPE_NEXT_VARIANT (v))
        TYPE_PACKED (v) = 1;
  
*************** start_enum (location_t loc, struct c_enu
*** 9140,9145 ****
--- 9601,9610 ----
  		 ? "sizeof"
  		 : (in_typeof ? "typeof" : "alignof")));
  
+   if (in_underspecified_init)
+     error_at (loc, "%qT defined in underspecified object initializer",
+ 	      enumtype);
+ 
    return enumtype;
  }
  
*************** finish_enum (tree enumtype, tree values,
*** 9186,9228 ****
    precision = MAX (tree_int_cst_min_precision (minnode, sign),
  		   tree_int_cst_min_precision (maxnode, sign));
  
!   /* If the precision of the type was specified with an attribute and it
!      was too small, give an error.  Otherwise, use it.  */
!   if (TYPE_PRECISION (enumtype) && lookup_attribute ("mode", attributes))
      {
!       if (precision > TYPE_PRECISION (enumtype))
  	{
! 	  TYPE_PRECISION (enumtype) = 0;
! 	  error ("specified mode too small for enumerated values");
  	}
        else
! 	precision = TYPE_PRECISION (enumtype);
!     }
!   else
!     TYPE_PRECISION (enumtype) = 0;
  
!   if (TYPE_PACKED (enumtype)
!       || precision > TYPE_PRECISION (integer_type_node)
!       || TYPE_PRECISION (enumtype))
!     {
!       tem = c_common_type_for_size (precision, sign == UNSIGNED ? 1 : 0);
!       if (tem == NULL)
  	{
! 	  warning (0, "enumeration values exceed range of largest integer");
! 	  tem = long_long_integer_type_node;
  	}
!     }
!   else
!     tem = sign == UNSIGNED ? unsigned_type_node : integer_type_node;
  
!   TYPE_MIN_VALUE (enumtype) = TYPE_MIN_VALUE (tem);
!   TYPE_MAX_VALUE (enumtype) = TYPE_MAX_VALUE (tem);
!   TYPE_UNSIGNED (enumtype) = TYPE_UNSIGNED (tem);
!   SET_TYPE_ALIGN (enumtype, TYPE_ALIGN (tem));
!   TYPE_SIZE (enumtype) = NULL_TREE;
!   TYPE_PRECISION (enumtype) = TYPE_PRECISION (tem);
  
!   layout_type (enumtype);
  
    if (values != error_mark_node)
      {
--- 9651,9715 ----
    precision = MAX (tree_int_cst_min_precision (minnode, sign),
  		   tree_int_cst_min_precision (maxnode, sign));
  
!   bool wider_than_int =
!     (tree_int_cst_lt (minnode, TYPE_MIN_VALUE (integer_type_node))
!      || tree_int_cst_lt (TYPE_MAX_VALUE (integer_type_node), maxnode));
! 
! 
!   if (!ENUM_FIXED_UNDERLYING_TYPE_P (enumtype))
      {
!       /* If the precision of the type was specified with an attribute and it
! 	 was too small, give an error.  Otherwise, use it.  */
!       if (TYPE_PRECISION (enumtype) && lookup_attribute ("mode", attributes))
  	{
! 	  if (precision > TYPE_PRECISION (enumtype))
! 	    {
! 	      TYPE_PRECISION (enumtype) = 0;
! 	      error ("specified mode too small for enumerated values");
! 	    }
! 	  else
! 	    precision = TYPE_PRECISION (enumtype);
  	}
        else
! 	TYPE_PRECISION (enumtype) = 0;
  
!       if (TYPE_PACKED (enumtype)
! 	  || precision > TYPE_PRECISION (integer_type_node)
! 	  || TYPE_PRECISION (enumtype))
  	{
! 	  tem = c_common_type_for_size (precision, sign == UNSIGNED ? 1 : 0);
! 	  if (tem == NULL)
! 	    {
! 	      /* This should only occur when both signed and unsigned
! 		 values of maximum precision occur among the
! 		 enumerators.  */
! 	      pedwarn (input_location, 0,
! 		       "enumeration values exceed range of largest integer");
! 	      tem = widest_integer_literal_type_node;
! 	    }
! 	  else if (precision > TYPE_PRECISION (intmax_type_node)
! 		   && !tree_int_cst_lt (minnode,
! 					TYPE_MIN_VALUE (intmax_type_node))
! 		   && !tree_int_cst_lt (TYPE_MAX_VALUE (uintmax_type_node),
! 					maxnode))
! 	    pedwarn (input_location, OPT_Wpedantic,
! 		     "enumeration values exceed range of %qs",
! 		     sign == UNSIGNED ? "uintmax_t" : "intmax_t");
  	}
!       else
! 	tem = sign == UNSIGNED ? unsigned_type_node : integer_type_node;
  
!       TYPE_MIN_VALUE (enumtype) = TYPE_MIN_VALUE (tem);
!       TYPE_MAX_VALUE (enumtype) = TYPE_MAX_VALUE (tem);
!       TYPE_UNSIGNED (enumtype) = TYPE_UNSIGNED (tem);
!       SET_TYPE_ALIGN (enumtype, TYPE_ALIGN (tem));
!       TYPE_SIZE (enumtype) = NULL_TREE;
!       TYPE_PRECISION (enumtype) = TYPE_PRECISION (tem);
!       ENUM_UNDERLYING_TYPE (enumtype) =
! 	c_common_type_for_size (TYPE_PRECISION (tem), TYPE_UNSIGNED (tem));
  
!       layout_type (enumtype);
!     }
  
    if (values != error_mark_node)
      {
*************** finish_enum (tree enumtype, tree values,
*** 9240,9261 ****
  
  	  TREE_TYPE (enu) = enumtype;
  
! 	  /* The ISO C Standard mandates enumerators to have type int,
! 	     even though the underlying type of an enum type is
! 	     unspecified.  However, GCC allows enumerators of any
! 	     integer type as an extensions.  build_enumerator()
! 	     converts any enumerators that fit in an int to type int,
! 	     to avoid promotions to unsigned types when comparing
! 	     integers with enumerators that fit in the int range.
! 	     When -pedantic is given, build_enumerator() would have
! 	     already warned about those that don't fit. Here we
! 	     convert the rest to the enumerator type. */
! 	  if (TREE_TYPE (ini) != integer_type_node)
  	    ini = convert (enumtype, ini);
  
  	  DECL_INITIAL (enu) = ini;
  	  TREE_PURPOSE (pair) = DECL_NAME (enu);
! 	  TREE_VALUE (pair) = ini;
  	}
  
        TYPE_VALUES (enumtype) = values;
--- 9727,9752 ----
  
  	  TREE_TYPE (enu) = enumtype;
  
! 	  /* Before C2X, the ISO C Standard mandates enumerators to
! 	     have type int, even though the underlying type of an enum
! 	     type is unspecified.  However, C2X allows enumerators of
! 	     any integer type, and if an enumeration has any
! 	     enumerators wider than int, all enumerators have the
! 	     enumerated type after it is parsed.  Any enumerators that
! 	     fit in int are given type int in build_enumerator (which
! 	     is the correct type while the enumeration is being
! 	     parsed), so no conversions are needed here if all
! 	     enumerators fit in int.  If the enum has a fixed
! 	     underlying type, the correct type was also given in
! 	     build_enumerator.  */
! 	  if (!ENUM_FIXED_UNDERLYING_TYPE_P (enumtype) && wider_than_int)
  	    ini = convert (enumtype, ini);
  
  	  DECL_INITIAL (enu) = ini;
  	  TREE_PURPOSE (pair) = DECL_NAME (enu);
! 	  /* To match the C++ FE, store the CONST_DECL rather than just its
! 	     value.  */
! 	  TREE_VALUE (pair) = enu;
  	}
  
        TYPE_VALUES (enumtype) = values;
*************** finish_enum (tree enumtype, tree values,
*** 9286,9291 ****
--- 9777,9783 ----
        TYPE_USER_ALIGN (tem) = TYPE_USER_ALIGN (enumtype);
        TYPE_UNSIGNED (tem) = TYPE_UNSIGNED (enumtype);
        TYPE_LANG_SPECIFIC (tem) = TYPE_LANG_SPECIFIC (enumtype);
+       ENUM_UNDERLYING_TYPE (tem) = ENUM_UNDERLYING_TYPE (enumtype);
      }
  
    /* Finish debugging output for this type.  */
*************** tree
*** 9316,9322 ****
  build_enumerator (location_t decl_loc, location_t loc,
  		  struct c_enum_contents *the_enum, tree name, tree value)
  {
!   tree decl, type;
  
    /* Validate and default VALUE.  */
  
--- 9808,9814 ----
  build_enumerator (location_t decl_loc, location_t loc,
  		  struct c_enum_contents *the_enum, tree name, tree value)
  {
!   tree decl;
  
    /* Validate and default VALUE.  */
  
*************** build_enumerator (location_t decl_loc, l
*** 9365,9407 ****
        if (the_enum->enum_overflow)
  	error_at (loc, "overflow in enumeration values");
      }
!   /* Even though the underlying type of an enum is unspecified, the
!      type of enumeration constants is explicitly defined as int
!      (6.4.4.3/2 in the C99 Standard).  GCC allows any integer type as
!      an extension.  */
!   else if (!int_fits_type_p (value, integer_type_node))
!     pedwarn (loc, OPT_Wpedantic,
! 	     "ISO C restricts enumerator values to range of %<int%>");
  
!   /* The ISO C Standard mandates enumerators to have type int, even
!      though the underlying type of an enum type is unspecified.
!      However, GCC allows enumerators of any integer type as an
!      extensions.  Here we convert any enumerators that fit in an int
!      to type int, to avoid promotions to unsigned types when comparing
!      integers with enumerators that fit in the int range.  When
!      -pedantic is given, we would have already warned about those that
!      don't fit. We have to do this here rather than in finish_enum
!      because this value may be used to define more enumerators.  */
!   if (int_fits_type_p (value, integer_type_node))
!     value = convert (integer_type_node, value);
  
    /* Set basis for default for next value.  */
!   the_enum->enum_next_value
!     = build_binary_op (EXPR_LOC_OR_LOC (value, input_location),
! 		       PLUS_EXPR, value, integer_one_node, false);
    the_enum->enum_overflow = tree_int_cst_lt (the_enum->enum_next_value, value);
  
    /* Now create a declaration for the enum value name.  */
  
!   type = TREE_TYPE (value);
!   type = c_common_type_for_size (MAX (TYPE_PRECISION (type),
! 				      TYPE_PRECISION (integer_type_node)),
! 				 (TYPE_PRECISION (type)
! 				  >= TYPE_PRECISION (integer_type_node)
! 				  && TYPE_UNSIGNED (type)));
! 
!   decl = build_decl (decl_loc, CONST_DECL, name, type);
!   DECL_INITIAL (decl) = convert (type, value);
    pushdecl (decl);
  
    return tree_cons (decl, value, NULL_TREE);
--- 9857,9976 ----
        if (the_enum->enum_overflow)
  	error_at (loc, "overflow in enumeration values");
      }
!   if (ENUM_FIXED_UNDERLYING_TYPE_P (the_enum->enum_type))
!     {
!       /* Enumeration constants must fit in the fixed underlying type.  */
!       if (!int_fits_type_p (value, ENUM_UNDERLYING_TYPE (the_enum->enum_type)))
! 	error_at (loc,
! 		  "enumerator value outside the range of underlying type");
!       /* Enumeration constants for an enum with fixed underlying type
! 	 have the enum type, both inside and outside the
! 	 definition.  */
!       value = convert (the_enum->enum_type, value);
!     }
!   else
!     {
!       /* Even though the underlying type of an enum is unspecified, the
! 	 type of enumeration constants is explicitly defined as int
! 	 (6.4.4.3/2 in the C99 Standard).  C2X allows any integer type, and
! 	 GCC allows such types for older standards as an extension.  */
!       bool warned_range = false;
!       if (!int_fits_type_p (value,
! 			    (TYPE_UNSIGNED (TREE_TYPE (value))
! 			     ? uintmax_type_node
! 			     : intmax_type_node)))
! 	/* GCC does not consider its types larger than intmax_t to be
! 	   extended integer types (although C2X would permit such types to
! 	   be considered extended integer types if all the features
! 	   required by <stdint.h> and <inttypes.h> macros, such as support
! 	   for integer constants and I/O, were present), so diagnose if
! 	   such a wider type is used.  (If the wider type arose from a
! 	   constant of such a type, that will also have been diagnosed,
! 	   but this is the only diagnostic in the case where it arises
! 	   from choosing a wider type automatically when adding 1
! 	   overflows.)  */
! 	warned_range = pedwarn (loc, OPT_Wpedantic,
! 				"enumerator value outside the range of %qs",
! 				(TYPE_UNSIGNED (TREE_TYPE (value))
! 				 ? "uintmax_t"
! 				 : "intmax_t"));
!       if (!warned_range && !int_fits_type_p (value, integer_type_node))
! 	pedwarn_c11 (loc, OPT_Wpedantic,
! 		     "ISO C restricts enumerator values to range of %<int%> "
! 		     "before C2X");
  
!       /* The ISO C Standard mandates enumerators to have type int before
! 	 C2X, even though the underlying type of an enum type is
! 	 unspecified.  C2X allows enumerators of any integer type.  During
! 	 the parsing of the enumeration, C2X specifies that constants
! 	 representable in int have type int, constants not representable
! 	 in int have the type of the given expression if any, and
! 	 constants not representable in int and derived by adding 1 to the
! 	 previous constant have the type of that constant unless the
! 	 addition would overflow or wraparound, in which case a wider type
! 	 of the same signedness is chosen automatically; after the
! 	 enumeration is parsed, all the constants have the type of the
! 	 enumeration if any do not fit in int.  */
!       if (int_fits_type_p (value, integer_type_node))
! 	value = convert (integer_type_node, value);
!     }
  
    /* Set basis for default for next value.  */
!   if (ENUM_FIXED_UNDERLYING_TYPE_P (the_enum->enum_type))
!     {
!       tree underlying_type = ENUM_UNDERLYING_TYPE (the_enum->enum_type);
!       if (TREE_CODE (underlying_type) == BOOLEAN_TYPE)
! 	/* A value of 2 following a value of 1 overflows bool, but we
! 	   cannot carry out addition directly on bool without
! 	   promotion, and converting the result of arithmetic in a
! 	   wider type back to bool would not produce the right result
! 	   for this overflow check.  */
! 	the_enum->enum_next_value = invert_truthvalue_loc (loc, value);
!       else
! 	the_enum->enum_next_value
! 	  = build_binary_op (EXPR_LOC_OR_LOC (value, input_location),
! 			     PLUS_EXPR, convert (underlying_type, value),
! 			     convert (underlying_type, integer_one_node),
! 			     false);
!     }
!   else
!     the_enum->enum_next_value
!       = build_binary_op (EXPR_LOC_OR_LOC (value, input_location),
! 			 PLUS_EXPR, value, integer_one_node, false);
    the_enum->enum_overflow = tree_int_cst_lt (the_enum->enum_next_value, value);
+   if (the_enum->enum_overflow
+       && !ENUM_FIXED_UNDERLYING_TYPE_P (the_enum->enum_type))
+     {
+       /* Choose a wider type with the same signedness if
+ 	 available.  */
+       int prec = TYPE_PRECISION (TREE_TYPE (value)) + 1;
+       bool unsignedp = TYPE_UNSIGNED (TREE_TYPE (value));
+       tree new_type = (unsignedp
+ 		       ? long_unsigned_type_node
+ 		       : long_integer_type_node);
+       if (prec > TYPE_PRECISION (new_type))
+ 	new_type = (unsignedp
+ 		    ? long_long_unsigned_type_node
+ 		    : long_long_integer_type_node);
+       if (prec > TYPE_PRECISION (new_type))
+ 	new_type = (unsignedp
+ 		    ? widest_unsigned_literal_type_node
+ 		    : widest_integer_literal_type_node);
+       if (prec <= TYPE_PRECISION (new_type))
+ 	{
+ 	  the_enum->enum_overflow = false;
+ 	  the_enum->enum_next_value
+ 	    = build_binary_op (EXPR_LOC_OR_LOC (value, input_location),
+ 			       PLUS_EXPR, convert (new_type, value),
+ 			       integer_one_node, false);
+ 	  gcc_assert (!tree_int_cst_lt (the_enum->enum_next_value, value));
+ 	}
+     }
  
    /* Now create a declaration for the enum value name.  */
  
!   decl = build_decl (decl_loc, CONST_DECL, name, TREE_TYPE (value));
!   DECL_INITIAL (decl) = value;
    pushdecl (decl);
  
    return tree_cons (decl, value, NULL_TREE);
*************** c_simulate_enum_decl (location_t loc, co
*** 9417,9423 ****
    input_location = loc;
  
    struct c_enum_contents the_enum;
!   tree enumtype = start_enum (loc, &the_enum, get_identifier (name));
  
    tree value_chain = NULL_TREE;
    string_int_pair *value;
--- 9986,9993 ----
    input_location = loc;
  
    struct c_enum_contents the_enum;
!   tree enumtype = start_enum (loc, &the_enum, get_identifier (name),
! 			      NULL_TREE);
  
    tree value_chain = NULL_TREE;
    string_int_pair *value;
*************** start_function (struct c_declspecs *decl
*** 9487,9492 ****
--- 10057,10063 ----
    tree decl1, old_decl;
    tree restype, resdecl;
    location_t loc;
+   location_t result_loc;
  
    current_function_returns_value = 0;  /* Assume, until we see it does.  */
    current_function_returns_null = 0;
*************** start_function (struct c_declspecs *decl
*** 9541,9547 ****
        /* Make it return void instead.  */
        TREE_TYPE (decl1)
  	= build_function_type (void_type_node,
! 			       TYPE_ARG_TYPES (TREE_TYPE (decl1)));
      }
  
    if (warn_about_return_type)
--- 10112,10119 ----
        /* Make it return void instead.  */
        TREE_TYPE (decl1)
  	= build_function_type (void_type_node,
! 			       TYPE_ARG_TYPES (TREE_TYPE (decl1)),
! 			       TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (decl1)));
      }
  
    if (warn_about_return_type)
*************** start_function (struct c_declspecs *decl
*** 9712,9719 ****
    push_scope ();
    declare_parm_level ();
  
    restype = TREE_TYPE (TREE_TYPE (current_function_decl));
!   resdecl = build_decl (loc, RESULT_DECL, NULL_TREE, restype);
    DECL_ARTIFICIAL (resdecl) = 1;
    DECL_IGNORED_P (resdecl) = 1;
    DECL_RESULT (current_function_decl) = resdecl;
--- 10284,10294 ----
    push_scope ();
    declare_parm_level ();
  
+   /* Set the result decl source location to the location of the typespec.  */
+   result_loc = (declspecs->locations[cdw_typespec] == UNKNOWN_LOCATION
+ 		? loc : declspecs->locations[cdw_typespec]);
    restype = TREE_TYPE (TREE_TYPE (current_function_decl));
!   resdecl = build_decl (result_loc, RESULT_DECL, NULL_TREE, restype);
    DECL_ARTIFICIAL (resdecl) = 1;
    DECL_IGNORED_P (resdecl) = 1;
    DECL_RESULT (current_function_decl) = resdecl;
*************** store_parm_decls (void)
*** 10140,10146 ****
       empty argument list was converted to (void) in grokparms; in
       older C standard versions, it does not give the function a type
       with a prototype for future calls.  */
!   proto = arg_info->types != 0;
  
    if (proto)
      store_parm_decls_newstyle (fndecl, arg_info);
--- 10715,10721 ----
       empty argument list was converted to (void) in grokparms; in
       older C standard versions, it does not give the function a type
       with a prototype for future calls.  */
!   proto = arg_info->types != 0 || arg_info->no_named_args_stdarg_p;
  
    if (proto)
      store_parm_decls_newstyle (fndecl, arg_info);
*************** finish_function (location_t end_loc)
*** 10268,10274 ****
    if (DECL_RESULT (fndecl) && DECL_RESULT (fndecl) != error_mark_node)
      DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
  
!   if (MAIN_NAME_P (DECL_NAME (fndecl)) && flag_hosted
        && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (fndecl)))
        == integer_type_node && flag_isoc99)
      {
--- 10843,10849 ----
    if (DECL_RESULT (fndecl) && DECL_RESULT (fndecl) != error_mark_node)
      DECL_CONTEXT (DECL_RESULT (fndecl)) = fndecl;
  
!   if (MAIN_NAME_P (DECL_NAME (fndecl)) && !TREE_THIS_VOLATILE (fndecl)
        && TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (fndecl)))
        == integer_type_node && flag_isoc99)
      {
*************** check_for_loop_decls (location_t loc, bo
*** 10419,10424 ****
--- 10994,11000 ----
        /* If we get here, declarations have been used in a for loop without
  	 the C99 for loop scope.  This doesn't make much sense, so don't
  	 allow it.  */
+       auto_diagnostic_group d;
        error_at (loc, "%<for%> loop initial declarations "
  		"are only allowed in C99 or C11 mode");
        if (hint)
*************** record_builtin_type (enum rid rid_index,
*** 10658,10671 ****
      debug_hooks->type_decl (decl, false);
  }
  
- /* Build the void_list_node (void_type_node having been created).  */
- tree
- build_void_list_node (void)
- {
-   tree t = build_tree_list (NULL_TREE, void_type_node);
-   return t;
- }
- 
  /* Return a c_parm structure with the given SPECS, ATTRS and DECLARATOR.  */
  
  struct c_parm *
--- 11234,11239 ----
*************** declspecs_add_type (location_t loc, stru
*** 10869,10874 ****
--- 11437,11460 ----
    if (TREE_UNAVAILABLE (type))
      specs->unavailable_p = true;
  
+   /* As a type specifier is present, "auto" must be used as a storage
+      class specifier, not for type deduction.  */
+   if (specs->c2x_auto_p)
+     {
+       specs->c2x_auto_p = false;
+       if (specs->storage_class != csc_none)
+ 	error ("multiple storage classes in declaration specifiers");
+       else if (specs->thread_p)
+ 	error ("%qs used with %<auto%>",
+ 	       specs->thread_gnu_p ? "__thread" : "_Thread_local");
+       else if (specs->constexpr_p)
+ 	/* auto may only be used with another storage class specifier,
+ 	   such as constexpr, if the type is inferred.  */
+ 	error ("%<auto%> used with %<constexpr%>");
+       else
+ 	specs->storage_class = csc_auto;
+     }
+ 
    /* Handle type specifier keywords.  */
    if (TREE_CODE (type) == IDENTIFIER_NODE
        && C_IS_RESERVED_WORD (type)
*************** declspecs_add_type (location_t loc, stru
*** 11659,11669 ****
      error_at (loc, "two or more data types in declaration specifiers");
    else if (TREE_CODE (type) == TYPE_DECL)
      {
!       if (TREE_TYPE (type) == error_mark_node)
! 	; /* Allow the type to default to int to avoid cascading errors.  */
!       else
  	{
- 	  specs->type = TREE_TYPE (type);
  	  specs->decl_attr = DECL_ATTRIBUTES (type);
  	  specs->typedef_p = true;
  	  specs->explicit_signed_p = C_TYPEDEF_EXPLICITLY_SIGNED (type);
--- 12245,12253 ----
      error_at (loc, "two or more data types in declaration specifiers");
    else if (TREE_CODE (type) == TYPE_DECL)
      {
!       specs->type = TREE_TYPE (type);
!       if (TREE_TYPE (type) != error_mark_node)
  	{
  	  specs->decl_attr = DECL_ATTRIBUTES (type);
  	  specs->typedef_p = true;
  	  specs->explicit_signed_p = C_TYPEDEF_EXPLICITLY_SIGNED (type);
*************** declspecs_add_type (location_t loc, stru
*** 11713,11718 ****
--- 12297,12305 ----
  	    }
  	}
        specs->type = type;
+       if (spec.has_enum_type_specifier
+ 	  && spec.kind != ctsk_tagdef)
+ 	specs->enum_type_specifier_ref_p = true;
      }
  
    return specs;
*************** declspecs_add_scspec (location_t loc,
*** 11762,11767 ****
--- 12349,12356 ----
  	error ("%qE used with %<register%>", scspec);
        else if (specs->storage_class == csc_typedef)
  	error ("%qE used with %<typedef%>", scspec);
+       else if (specs->constexpr_p)
+ 	error ("%qE used with %<constexpr%>", scspec);
        else
  	{
  	  specs->thread_p = true;
*************** declspecs_add_scspec (location_t loc,
*** 11784,11790 ****
--- 12373,12393 ----
  	}
        break;
      case RID_AUTO:
+       if (flag_isoc2x
+ 	  && specs->typespec_kind == ctsk_none
+ 	  && specs->storage_class != csc_typedef)
+ 	{
+ 	  /* "auto" potentially used for type deduction.  */
+ 	  if (specs->c2x_auto_p)
+ 	    error ("duplicate %qE", scspec);
+ 	  specs->c2x_auto_p = true;
+ 	  return specs;
+ 	}
        n = csc_auto;
+       /* auto may only be used with another storage class specifier,
+ 	 such as constexpr, if the type is inferred.  */
+       if (specs->constexpr_p)
+ 	error ("%qE used with %<constexpr%>", scspec);
        break;
      case RID_EXTERN:
        n = csc_extern;
*************** declspecs_add_scspec (location_t loc,
*** 11803,11808 ****
--- 12406,12432 ----
        break;
      case RID_TYPEDEF:
        n = csc_typedef;
+       if (specs->c2x_auto_p)
+ 	{
+ 	  error ("%<typedef%> used with %<auto%>");
+ 	  specs->c2x_auto_p = false;
+ 	}
+       break;
+     case RID_CONSTEXPR:
+       dupe = specs->constexpr_p;
+       if (specs->storage_class == csc_extern)
+ 	error ("%qE used with %<extern%>", scspec);
+       else if (specs->storage_class == csc_typedef)
+ 	error ("%qE used with %<typedef%>", scspec);
+       else if (specs->storage_class == csc_auto)
+ 	/* auto may only be used with another storage class specifier,
+ 	   such as constexpr, if the type is inferred.  */
+ 	error ("%qE used with %<auto%>", scspec);
+       else if (specs->thread_p)
+ 	error ("%qE used with %qs", scspec,
+ 	       specs->thread_gnu_p ? "__thread" : "_Thread_local");
+       else
+ 	specs->constexpr_p = true;
        break;
      default:
        gcc_unreachable ();
*************** declspecs_add_scspec (location_t loc,
*** 11833,11838 ****
--- 12457,12468 ----
  		     scspec);
  	      specs->thread_p = false;
  	    }
+ 	  if (n != csc_auto && n != csc_register && n != csc_static
+ 	      && specs->constexpr_p)
+ 	    {
+ 	      error ("%<constexpr%> used with %qE", scspec);
+ 	      specs->constexpr_p = false;
+ 	    }
  	}
      }
    return specs;
*************** finish_declspecs (struct c_declspecs *sp
*** 11889,11895 ****
      {
        gcc_assert (!specs->long_p && !specs->long_long_p && !specs->short_p
  		  && !specs->signed_p && !specs->unsigned_p
! 		  && !specs->complex_p);
  
        /* Set a dummy type.  */
        if (TREE_CODE (specs->type) == ERROR_MARK)
--- 12519,12525 ----
      {
        gcc_assert (!specs->long_p && !specs->long_long_p && !specs->short_p
  		  && !specs->signed_p && !specs->unsigned_p
! 		  && !specs->complex_p && !specs->c2x_auto_p);
  
        /* Set a dummy type.  */
        if (TREE_CODE (specs->type) == ERROR_MARK)
*************** finish_declspecs (struct c_declspecs *sp
*** 11925,11930 ****
--- 12555,12572 ----
  		   "ISO C does not support plain %<complex%> meaning "
  		   "%<double complex%>");
  	}
+       else if (specs->c2x_auto_p)
+ 	{
+ 	  /* Type to be filled in later, including applying postfix
+ 	     attributes.  This warning only actually appears for
+ 	     -Wc11-c2x-compat in C2X mode; in older modes, there may
+ 	     be a warning or pedwarn for implicit "int" instead, or
+ 	     other errors for use of auto at file scope.  */
+ 	  pedwarn_c11 (input_location, OPT_Wpedantic,
+ 		       "ISO C does not support %<auto%> type deduction "
+ 		       "before C2X");
+ 	  return specs;
+ 	}
        else
  	{
  	  specs->typespec_word = cts_int;
*************** finish_declspecs (struct c_declspecs *sp
*** 11941,11946 ****
--- 12583,12589 ----
    specs->explicit_signed_p = specs->signed_p;
  
    /* Now compute the actual type.  */
+   gcc_assert (!specs->c2x_auto_p);
    switch (specs->typespec_word)
      {
      case cts_auto_type:
diff -Nrcpad gcc-12.2.0/gcc/c/c-errors.cc gcc-13.1.0/gcc/c/c-errors.cc
*** gcc-12.2.0/gcc/c/c-errors.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-errors.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Various diagnostic subroutines for the GNU C language.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Various diagnostic subroutines for the GNU C language.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@codesourcery.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/c/c-fold.cc gcc-13.1.0/gcc/c/c-fold.cc
*** gcc-12.2.0/gcc/c/c-fold.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-fold.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Support for fully folding sub-trees of an expression for C compiler.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for fully folding sub-trees of an expression for C compiler.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c/c-lang.cc gcc-13.1.0/gcc/c/c-lang.cc
*** gcc-12.2.0/gcc/c/c-lang.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-lang.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Language-specific hook definitions for C front end.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Language-specific hook definitions for C front end.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum c_language_kind c_language = clk_c;
*** 46,54 ****
--- 46,66 ----
  #undef LANG_HOOKS_GET_SUBSTRING_LOCATION
  #define LANG_HOOKS_GET_SUBSTRING_LOCATION c_get_substring_location
  
+ #undef LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE
+ #define LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE c_get_sarif_source_language
+ 
  /* Each front end provides its own lang hook initializer.  */
  struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER;
  
+ /* Get a value for the SARIF v2.1.0 "artifact.sourceLanguage" property,
+    based on the list in SARIF v2.1.0 Appendix J.  */
+ 
+ const char *
+ c_get_sarif_source_language (const char *)
+ {
+   return "c";
+ }
+ 
  #if CHECKING_P
  
  namespace selftest {
diff -Nrcpad gcc-12.2.0/gcc/c/c-lang.h gcc-13.1.0/gcc/c/c-lang.h
*** gcc-12.2.0/gcc/c/c-lang.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-lang.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for C language specific types.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for C language specific types.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** struct GTY(()) language_function {
*** 60,67 ****
    int warn_about_return_type;
  };
  
  /* If non-zero, implicit "omp declare target" attribute is added into the
     attribute lists.  */
! extern GTY(()) int current_omp_declare_target_attribute;
  
  #endif /* ! GCC_C_LANG_H */
--- 60,75 ----
    int warn_about_return_type;
  };
  
+ struct GTY(()) c_omp_declare_target_attr {
+   int device_type;
+ };
+ 
  /* If non-zero, implicit "omp declare target" attribute is added into the
     attribute lists.  */
! extern GTY(()) vec<c_omp_declare_target_attr, va_gc>
!   *current_omp_declare_target_attribute;
! /* Similarly whether we are in between #pragma omp begin assumes and
!    #pragma omp end assumes (and how many times when nested).  */
! extern GTY(()) int current_omp_begin_assumes;
  
  #endif /* ! GCC_C_LANG_H */
diff -Nrcpad gcc-12.2.0/gcc/c/c-objc-common.cc gcc-13.1.0/gcc/c/c-objc-common.cc
*** gcc-12.2.0/gcc/c/c-objc-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-objc-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Some code common to C and ObjC front ends.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Some code common to C and ObjC front ends.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static bool c_tree_printer (pretty_print
*** 37,45 ****
  bool
  c_missing_noreturn_ok_p (tree decl)
  {
!   /* A missing noreturn is not ok for freestanding implementations and
!      ok for the `main' function in hosted implementations.  */
!   return flag_hosted && MAIN_NAME_P (DECL_ASSEMBLER_NAME (decl));
  }
  
  /* Called from check_global_declaration.  */
--- 37,48 ----
  bool
  c_missing_noreturn_ok_p (tree decl)
  {
!   /* A missing noreturn is ok for the `main' function.  */
!   if (!MAIN_NAME_P (DECL_ASSEMBLER_NAME (decl)))
!     return false;
! 
!   return flag_hosted
!     || TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (decl))) == integer_type_node;
  }
  
  /* Called from check_global_declaration.  */
*************** c_types_compatible_p (tree x, tree y)
*** 368,379 ****
    return comptypes (TYPE_MAIN_VARIANT (x), TYPE_MAIN_VARIANT (y));
  }
  
! /* Determine if the type is a vla type for the backend.  */
  
  bool
! c_vla_unspec_p (tree x, tree fn ATTRIBUTE_UNUSED)
  {
!   return c_vla_type_p (x);
  }
  
  /* Special routine to get the alias set of T for C.  */
--- 371,382 ----
    return comptypes (TYPE_MAIN_VARIANT (x), TYPE_MAIN_VARIANT (y));
  }
  
! /* Determine if the type is a variably modified type for the backend.  */
  
  bool
! c_var_mod_p (tree x, tree fn ATTRIBUTE_UNUSED)
  {
!   return C_TYPE_VARIABLY_MODIFIED (x);
  }
  
  /* Special routine to get the alias set of T for C.  */
*************** c_get_alias_set (tree t)
*** 384,396 ****
    /* Allow aliasing between enumeral types and the underlying
       integer type.  This is required since those are compatible types.  */
    if (TREE_CODE (t) == ENUMERAL_TYPE)
!     {
!       tree t1 = c_common_type_for_size (tree_to_uhwi (TYPE_SIZE (t)),
! 					/* short-cut commoning to signed
! 					   type.  */
! 					false);
!       return get_alias_set (t1);
!     }
  
    return c_common_get_alias_set (t);
  }
--- 387,410 ----
    /* Allow aliasing between enumeral types and the underlying
       integer type.  This is required since those are compatible types.  */
    if (TREE_CODE (t) == ENUMERAL_TYPE)
!     return get_alias_set (ENUM_UNDERLYING_TYPE (t));
  
    return c_common_get_alias_set (t);
  }
+ 
+ /* In C there are no invisible parameters like in C++ (this, in-charge, VTT,
+    etc.).  */
+ 
+ int
+ maybe_adjust_arg_pos_for_attribute (const_tree)
+ {
+   return 0;
+ }
+ 
+ /* In C, no expression is dependent.  */
+ 
+ bool
+ instantiation_dependent_expression_p (tree)
+ {
+   return false;
+ }
diff -Nrcpad gcc-12.2.0/gcc/c/c-objc-common.h gcc-13.1.0/gcc/c/c-objc-common.h
*** gcc-12.2.0/gcc/c/c-objc-common.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-objc-common.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Language hooks common to C and ObjC front ends.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by Ziemowit Laski  <zlaski@apple.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Language hooks common to C and ObjC front ends.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by Ziemowit Laski  <zlaski@apple.com>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 123,127 ****
  #define LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP c_omp_clause_copy_ctor
  
  #undef LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P
! #define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P c_vla_unspec_p
  #endif /* GCC_C_OBJC_COMMON */
--- 123,127 ----
  #define LANG_HOOKS_OMP_CLAUSE_ASSIGN_OP c_omp_clause_copy_ctor
  
  #undef LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P
! #define LANG_HOOKS_TREE_INLINING_VAR_MOD_TYPE_P c_var_mod_p
  #endif /* GCC_C_OBJC_COMMON */
diff -Nrcpad gcc-12.2.0/gcc/c/c-parser.cc gcc-13.1.0/gcc/c/c-parser.cc
*** gcc-12.2.0/gcc/c/c-parser.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-parser.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Parser for C and Objective-C.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
--- 1,5 ----
  /* Parser for C and Objective-C.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
*************** along with GCC; see the file COPYING3.
*** 71,76 ****
--- 71,79 ----
  #include "tree-pretty-print.h"
  #include "memmodel.h"
  #include "c-family/known-headers.h"
+ #include "bitmap.h"
+ #include "analyzer/analyzer-language.h"
+ #include "toplev.h"
  
  /* We need to walk over decls with incomplete struct/union/enum types
     after parsing the whole translation unit.
*************** c_parse_init (void)
*** 119,129 ****
--- 122,136 ----
    mask |= D_CXXONLY;
    if (!flag_isoc99)
      mask |= D_C99;
+   if (!flag_isoc2x)
+     mask |= D_C2X;
    if (flag_no_asm)
      {
        mask |= D_ASM | D_EXT;
        if (!flag_isoc99)
  	mask |= D_EXT89;
+       if (!flag_isoc2x)
+ 	mask |= D_EXT11;
      }
    if (!c_dialect_objc ())
      mask |= D_OBJC | D_CXX_OBJC;
*************** c_parse_init (void)
*** 165,170 ****
--- 172,185 ----
        C_SET_RID_CODE (id, RID_FIRST_INT_N + i);
        C_IS_RESERVED_WORD (id) = 1;
      }
+ 
+   if (flag_openmp)
+     {
+       id = get_identifier ("omp_all_memory");
+       C_SET_RID_CODE (id, RID_OMP_ALL_MEMORY);
+       C_IS_RESERVED_WORD (id) = 1;
+       ridpointers [RID_OMP_ALL_MEMORY] = id;
+     }
  }
  
  /* A parser structure recording information about the state and
*************** c_keyword_starts_typename (enum rid keyw
*** 569,574 ****
--- 584,590 ----
      case RID_STRUCT:
      case RID_UNION:
      case RID_TYPEOF:
+     case RID_TYPEOF_UNQUAL:
      case RID_CONST:
      case RID_ATOMIC:
      case RID_VOLATILE:
*************** c_parser_next_tokens_start_typename (c_p
*** 652,657 ****
--- 668,698 ----
    return false;
  }
  
+ /* Return true if TOKEN, after an open parenthesis, can start a
+    compound literal (either a storage class specifier allowed in that
+    context, or a type name), false otherwise.  */
+ static bool
+ c_token_starts_compound_literal (c_token *token)
+ {
+   switch (token->type)
+     {
+     case CPP_KEYWORD:
+       switch (token->keyword)
+ 	{
+ 	case RID_CONSTEXPR:
+ 	case RID_REGISTER:
+ 	case RID_STATIC:
+ 	case RID_THREAD:
+ 	  return true;
+ 	default:
+ 	  break;
+ 	}
+       /* Fall through.  */
+     default:
+       return c_token_starts_typename (token);
+     }
+ }
+ 
  /* Return true if TOKEN is a type qualifier, false otherwise.  */
  static bool
  c_token_is_qualifier (c_token *token)
*************** c_token_starts_declspecs (c_token *token
*** 746,751 ****
--- 787,793 ----
  	case RID_STRUCT:
  	case RID_UNION:
  	case RID_TYPEOF:
+ 	case RID_TYPEOF_UNQUAL:
  	case RID_CONST:
  	case RID_VOLATILE:
  	case RID_RESTRICT:
*************** c_token_starts_declspecs (c_token *token
*** 756,761 ****
--- 798,804 ----
  	case RID_ALIGNAS:
  	case RID_ATOMIC:
  	case RID_AUTO_TYPE:
+ 	case RID_CONSTEXPR:
  	  return true;
  	default:
  	  if (token->keyword >= RID_FIRST_INT_N
*************** static struct c_arg_info *c_parser_parms
*** 1513,1521 ****
  static struct c_parm *c_parser_parameter_declaration (c_parser *, tree, bool);
  static tree c_parser_simple_asm_expr (c_parser *);
  static tree c_parser_gnu_attributes (c_parser *);
! static struct c_expr c_parser_initializer (c_parser *);
  static struct c_expr c_parser_braced_init (c_parser *, tree, bool,
! 					   struct obstack *);
  static void c_parser_initelt (c_parser *, struct obstack *);
  static void c_parser_initval (c_parser *, struct c_expr *,
  			      struct obstack *);
--- 1556,1564 ----
  static struct c_parm *c_parser_parameter_declaration (c_parser *, tree, bool);
  static tree c_parser_simple_asm_expr (c_parser *);
  static tree c_parser_gnu_attributes (c_parser *);
! static struct c_expr c_parser_initializer (c_parser *, tree);
  static struct c_expr c_parser_braced_init (c_parser *, tree, bool,
! 					   struct obstack *, tree);
  static void c_parser_initelt (c_parser *, struct obstack *);
  static void c_parser_initval (c_parser *, struct c_expr *,
  			      struct obstack *);
*************** static struct c_expr c_parser_sizeof_exp
*** 1548,1553 ****
--- 1591,1597 ----
  static struct c_expr c_parser_alignof_expression (c_parser *);
  static struct c_expr c_parser_postfix_expression (c_parser *);
  static struct c_expr c_parser_postfix_expression_after_paren_type (c_parser *,
+ 								   struct c_declspecs *,
  								   struct c_type_name *,
  								   location_t);
  static struct c_expr c_parser_postfix_expression_after_primary (c_parser *,
*************** enum pragma_context { pragma_external, p
*** 1584,1593 ****
  static bool c_parser_pragma (c_parser *, enum pragma_context, bool *);
  static bool c_parser_omp_cancellation_point (c_parser *, enum pragma_context);
  static bool c_parser_omp_target (c_parser *, enum pragma_context, bool *);
! static void c_parser_omp_end_declare_target (c_parser *);
  static bool c_parser_omp_declare (c_parser *, enum pragma_context);
  static void c_parser_omp_requires (c_parser *);
  static bool c_parser_omp_error (c_parser *, enum pragma_context);
  static bool c_parser_omp_ordered (c_parser *, enum pragma_context, bool *);
  static void c_parser_oacc_routine (c_parser *, enum pragma_context);
  
--- 1628,1640 ----
  static bool c_parser_pragma (c_parser *, enum pragma_context, bool *);
  static bool c_parser_omp_cancellation_point (c_parser *, enum pragma_context);
  static bool c_parser_omp_target (c_parser *, enum pragma_context, bool *);
! static void c_parser_omp_begin (c_parser *);
! static void c_parser_omp_end (c_parser *);
  static bool c_parser_omp_declare (c_parser *, enum pragma_context);
  static void c_parser_omp_requires (c_parser *);
  static bool c_parser_omp_error (c_parser *, enum pragma_context);
+ static void c_parser_omp_assumption_clauses (c_parser *, bool);
+ static void c_parser_omp_assumes (c_parser *);
  static bool c_parser_omp_ordered (c_parser *, enum pragma_context, bool *);
  static void c_parser_oacc_routine (c_parser *, enum pragma_context);
  
*************** static bool c_parser_objc_diagnose_bad_e
*** 1619,1624 ****
--- 1666,1751 ----
    (c_parser *, struct c_declspecs *);
  static location_t c_parser_parse_rtl_body (c_parser *, char *);
  
+ #if ENABLE_ANALYZER
+ 
+ namespace ana {
+ 
+ /* Concrete implementation of ana::translation_unit for the C frontend.  */
+ 
+ class c_translation_unit : public translation_unit
+ {
+ public:
+   /* Implementation of translation_unit::lookup_constant_by_id for use by the
+      analyzer to look up named constants in the user's source code.  */
+   tree lookup_constant_by_id (tree id) const final override
+   {
+     /* Consider decls.  */
+     if (tree decl = lookup_name (id))
+       if (TREE_CODE (decl) == CONST_DECL)
+ 	if (tree value = DECL_INITIAL (decl))
+ 	  if (TREE_CODE (value) == INTEGER_CST)
+ 	    return value;
+ 
+     /* Consider macros.  */
+     cpp_hashnode *hashnode = C_CPP_HASHNODE (id);
+     if (cpp_macro_p (hashnode))
+       if (tree value = consider_macro (hashnode->value.macro))
+ 	return value;
+ 
+     return NULL_TREE;
+   }
+ 
+ private:
+   /* Attempt to get an INTEGER_CST from MACRO.
+      Only handle the simplest cases: where MACRO's definition is a single
+      token containing a number, by lexing the number again.
+      This will handle e.g.
+        #define NAME 42
+      and other bases but not negative numbers, parentheses or e.g.
+        #define NAME 1 << 7
+      as doing so would require a parser.  */
+   tree consider_macro (cpp_macro *macro) const
+   {
+     if (macro->paramc > 0)
+       return NULL_TREE;
+     if (macro->kind != cmk_macro)
+       return NULL_TREE;
+     if (macro->count != 1)
+       return NULL_TREE;
+     const cpp_token &tok = macro->exp.tokens[0];
+     if (tok.type != CPP_NUMBER)
+       return NULL_TREE;
+ 
+     cpp_reader *old_parse_in = parse_in;
+     parse_in = cpp_create_reader (CLK_GNUC89, NULL, line_table);
+ 
+     pretty_printer pp;
+     pp_string (&pp, (const char *) tok.val.str.text);
+     pp_newline (&pp);
+     cpp_push_buffer (parse_in,
+ 		     (const unsigned char *) pp_formatted_text (&pp),
+ 		     strlen (pp_formatted_text (&pp)),
+ 		     0);
+ 
+     tree value;
+     location_t loc;
+     unsigned char cpp_flags;
+     c_lex_with_flags (&value, &loc, &cpp_flags, 0);
+ 
+     cpp_destroy (parse_in);
+     parse_in = old_parse_in;
+ 
+     if (value && TREE_CODE (value) == INTEGER_CST)
+       return value;
+ 
+     return NULL_TREE;
+   }
+ };
+ 
+ } // namespace ana
+ 
+ #endif /* #if ENABLE_ANALYZER */
+ 
  /* Parse a translation unit (C90 6.7, C99 6.9, C11 6.9).
  
     translation-unit:
*************** c_parser_translation_unit (c_parser *par
*** 1661,1673 ****
      if (DECL_SIZE (decl) == NULL_TREE && TREE_TYPE (decl) != error_mark_node)
        error ("storage size of %q+D isn%'t known", decl);
  
!   if (current_omp_declare_target_attribute)
      {
        if (!errorcount)
!         error ("%<#pragma omp declare target%> without corresponding "
! 	       "%<#pragma omp end declare target%>");
!       current_omp_declare_target_attribute = 0;
      }
  }
  
  /* Parse an external declaration (C90 6.7, C99 6.9, C11 6.9).
--- 1788,1819 ----
      if (DECL_SIZE (decl) == NULL_TREE && TREE_TYPE (decl) != error_mark_node)
        error ("storage size of %q+D isn%'t known", decl);
  
!   if (vec_safe_length (current_omp_declare_target_attribute))
      {
+       c_omp_declare_target_attr
+ 	a = current_omp_declare_target_attribute->pop ();
        if (!errorcount)
! 	error ("%qs without corresponding %qs",
! 	       a.device_type >= 0 ? "#pragma omp begin declare target"
! 				  : "#pragma omp declare target",
! 	       "#pragma omp end declare target");
!       vec_safe_truncate (current_omp_declare_target_attribute, 0);
      }
+   if (current_omp_begin_assumes)
+     {
+       if (!errorcount)
+ 	error ("%qs without corresponding %qs",
+ 	       "#pragma omp begin assumes", "#pragma omp end assumes");
+       current_omp_begin_assumes = 0;
+     }
+ 
+ #if ENABLE_ANALYZER
+   if (flag_analyzer)
+     {
+       ana::c_translation_unit tu;
+       ana::on_finish_translation_unit (tu);
+     }
+ #endif
  }
  
  /* Parse an external declaration (C90 6.7, C99 6.9, C11 6.9).
*************** add_debug_begin_stmt (location_t loc)
*** 1798,1803 ****
--- 1944,1989 ----
    add_stmt (stmt);
  }
  
+ /* Helper function for c_parser_declaration_or_fndef and
+    Handle assume attribute(s).  */
+ 
+ static tree
+ handle_assume_attribute (location_t here, tree attrs, bool nested)
+ {
+   if (nested)
+     for (tree attr = lookup_attribute ("gnu", "assume", attrs); attr;
+ 	 attr = lookup_attribute ("gnu", "assume", TREE_CHAIN (attr)))
+       {
+ 	tree args = TREE_VALUE (attr);
+ 	int nargs = list_length (args);
+ 	if (nargs != 1)
+ 	  {
+ 	    error_at (here, "wrong number of arguments specified "
+ 			    "for %qE attribute",
+ 		      get_attribute_name (attr));
+ 	    inform (here, "expected %i, found %i", 1, nargs);
+ 	  }
+ 	else
+ 	  {
+ 	    tree arg = TREE_VALUE (args);
+ 	    arg = c_objc_common_truthvalue_conversion (here, arg);
+ 	    arg = c_fully_fold (arg, false, NULL);
+ 	    if (arg != error_mark_node)
+ 	      {
+ 		tree fn = build_call_expr_internal_loc (here, IFN_ASSUME,
+ 							void_type_node, 1,
+ 							arg);
+ 		add_stmt (fn);
+ 	      }
+ 	  }
+       }
+   else
+     pedwarn (here, OPT_Wattributes,
+ 	     "%<assume%> attribute at top level");
+ 
+   return remove_attribute ("gnu", "assume", attrs);
+ }
+ 
  /* Parse a declaration or function definition (C90 6.5, 6.7.1, C99
     6.7, 6.9.1, C11 6.7, 6.9.1).  If FNDEF_OK is true, a function definition
     is accepted; otherwise (old-style parameter declarations) only other
*************** c_parser_declaration_or_fndef (c_parser
*** 2009,2019 ****
      }
  
    finish_declspecs (specs);
!   bool auto_type_p = specs->typespec_word == cts_auto_type;
    if (c_parser_next_token_is (parser, CPP_SEMICOLON))
      {
!       if (auto_type_p)
! 	error_at (here, "%<__auto_type%> in empty declaration");
        else if (specs->typespec_kind == ctsk_none
  	       && attribute_fallthrough_p (specs->attrs))
  	{
--- 2195,2243 ----
      }
  
    finish_declspecs (specs);
!   bool gnu_auto_type_p = specs->typespec_word == cts_auto_type;
!   bool std_auto_type_p = specs->c2x_auto_p;
!   bool any_auto_type_p = gnu_auto_type_p || std_auto_type_p;
!   gcc_assert (!(gnu_auto_type_p && std_auto_type_p));
!   const char *auto_type_keyword = gnu_auto_type_p ? "__auto_type" : "auto";
!   if (specs->constexpr_p)
!     {
!       /* An underspecified declaration may not declare tags or members
! 	 or structures or unions; it is undefined behavior to declare
! 	 the members of an enumeration.  Where the structure, union or
! 	 enumeration type is declared within an initializer, this is
! 	 diagnosed elsewhere.  Diagnose here the case of declaring
! 	 such a type in the type specifiers of a constexpr
! 	 declaration.  */
!       switch (specs->typespec_kind)
! 	{
! 	case ctsk_tagfirstref:
! 	case ctsk_tagfirstref_attrs:
! 	  error_at (here, "%qT declared in underspecified object declaration",
! 		    specs->type);
! 	  break;
! 
! 	case ctsk_tagdef:
! 	  error_at (here, "%qT defined in underspecified object declaration",
! 		    specs->type);
! 	  break;
! 
! 	default:
! 	  break;
! 	}
!     }
    if (c_parser_next_token_is (parser, CPP_SEMICOLON))
      {
!       bool handled_assume = false;
!       if (specs->typespec_kind == ctsk_none
! 	  && lookup_attribute ("gnu", "assume", specs->attrs))
! 	{
! 	  handled_assume = true;
! 	  specs->attrs
! 	    = handle_assume_attribute (here, specs->attrs, nested);
! 	}
!       if (any_auto_type_p)
! 	error_at (here, "%qs in empty declaration", auto_type_keyword);
        else if (specs->typespec_kind == ctsk_none
  	       && attribute_fallthrough_p (specs->attrs))
  	{
*************** c_parser_declaration_or_fndef (c_parser
*** 2029,2041 ****
  	    pedwarn (here, OPT_Wattributes,
  		     "%<fallthrough%> attribute at top level");
  	}
!       else if (empty_ok && !(have_attrs
! 			     && specs->non_std_attrs_seen_p))
  	shadow_tag (specs);
        else
  	{
  	  shadow_tag_warned (specs, 1);
! 	  pedwarn (here, 0, "empty declaration");
  	}
        c_parser_consume_token (parser);
        if (oacc_routine_data)
--- 2253,2267 ----
  	    pedwarn (here, OPT_Wattributes,
  		     "%<fallthrough%> attribute at top level");
  	}
!       else if (empty_ok
! 	       && !(have_attrs && specs->non_std_attrs_seen_p)
! 	       && !handled_assume)
  	shadow_tag (specs);
        else
  	{
  	  shadow_tag_warned (specs, 1);
! 	  if (!handled_assume)
! 	    pedwarn (here, 0, "empty declaration");
  	}
        c_parser_consume_token (parser);
        if (oacc_routine_data)
*************** c_parser_declaration_or_fndef (c_parser
*** 2055,2061 ****
        shadow_tag_warned (specs, 1);
        return;
      }
!   else if (c_dialect_objc () && !auto_type_p)
      {
        /* Prefix attributes are an error on method decls.  */
        switch (c_parser_peek_token (parser)->type)
--- 2281,2287 ----
        shadow_tag_warned (specs, 1);
        return;
      }
!   else if (c_dialect_objc () && !any_auto_type_p)
      {
        /* Prefix attributes are an error on method decls.  */
        switch (c_parser_peek_token (parser)->type)
*************** c_parser_declaration_or_fndef (c_parser
*** 2135,2140 ****
--- 2361,2369 ----
    else if (attribute_fallthrough_p (specs->attrs))
      warning_at (here, OPT_Wattributes,
  		"%<fallthrough%> attribute not followed by %<;%>");
+   else if (lookup_attribute ("gnu", "assume", specs->attrs))
+     warning_at (here, OPT_Wattributes,
+ 		"%<assume%> attribute not followed by %<;%>");
  
    pending_xref_error ();
    prefix_attrs = specs->attrs;
*************** c_parser_declaration_or_fndef (c_parser
*** 2146,2151 ****
--- 2375,2381 ----
        bool dummy = false;
        timevar_id_t tv;
        tree fnbody = NULL_TREE;
+       tree underspec_name = NULL_TREE;
        /* Declaring either one or more declarators (in which case we
  	 should diagnose if there were no declaration specifiers) or a
  	 function definition (in which case the diagnostic for
*************** c_parser_declaration_or_fndef (c_parser
*** 2163,2169 ****
  	  c_parser_skip_to_end_of_block_or_statement (parser);
  	  return;
  	}
!       if (auto_type_p && declarator->kind != cdk_id)
  	{
  	  error_at (here,
  		    "%<__auto_type%> requires a plain identifier"
--- 2393,2399 ----
  	  c_parser_skip_to_end_of_block_or_statement (parser);
  	  return;
  	}
!       if (gnu_auto_type_p && declarator->kind != cdk_id)
  	{
  	  error_at (here,
  		    "%<__auto_type%> requires a plain identifier"
*************** c_parser_declaration_or_fndef (c_parser
*** 2171,2176 ****
--- 2401,2428 ----
  	  c_parser_skip_to_end_of_block_or_statement (parser);
  	  return;
  	}
+       if (std_auto_type_p)
+ 	{
+ 	  struct c_declarator *d = declarator;
+ 	  while (d->kind == cdk_attrs)
+ 	    d = d->declarator;
+ 	  if (d->kind != cdk_id)
+ 	    {
+ 	      error_at (here,
+ 			"%<auto%> requires a plain identifier, possibly with"
+ 			" attributes, as declarator");
+ 	      c_parser_skip_to_end_of_block_or_statement (parser);
+ 	      return;
+ 	    }
+ 	  underspec_name = d->u.id.id;
+ 	}
+       else if (specs->constexpr_p)
+ 	{
+ 	  struct c_declarator *d = declarator;
+ 	  while (d->kind != cdk_id)
+ 	    d = d->declarator;
+ 	  underspec_name = d->u.id.id;
+ 	}
        if (c_parser_next_token_is (parser, CPP_EQ)
  	  || c_parser_next_token_is (parser, CPP_COMMA)
  	  || c_parser_next_token_is (parser, CPP_SEMICOLON)
*************** c_parser_declaration_or_fndef (c_parser
*** 2210,2236 ****
  	      struct c_expr init;
  	      location_t init_loc;
  	      c_parser_consume_token (parser);
! 	      if (auto_type_p)
  		{
  		  init_loc = c_parser_peek_token (parser)->location;
  		  rich_location richloc (line_table, init_loc);
! 		  start_init (NULL_TREE, asm_name, global_bindings_p (), &richloc);
  		  /* A parameter is initialized, which is invalid.  Don't
  		     attempt to instrument the initializer.  */
  		  int flag_sanitize_save = flag_sanitize;
  		  if (nested && !empty_ok)
  		    flag_sanitize = 0;
  		  init = c_parser_expr_no_commas (parser, NULL);
  		  flag_sanitize = flag_sanitize_save;
! 		  if (TREE_CODE (init.value) == COMPONENT_REF
  		      && DECL_C_BIT_FIELD (TREE_OPERAND (init.value, 1)))
  		    error_at (here,
  			      "%<__auto_type%> used with a bit-field"
  			      " initializer");
! 		  init = convert_lvalue_to_rvalue (init_loc, init, true, true);
  		  tree init_type = TREE_TYPE (init.value);
! 		  bool vm_type = variably_modified_type_p (init_type,
! 							   NULL_TREE);
  		  if (vm_type)
  		    init.value = save_expr (init.value);
  		  finish_init ();
--- 2462,2500 ----
  	      struct c_expr init;
  	      location_t init_loc;
  	      c_parser_consume_token (parser);
! 	      if (any_auto_type_p)
  		{
  		  init_loc = c_parser_peek_token (parser)->location;
  		  rich_location richloc (line_table, init_loc);
! 		  unsigned int underspec_state = 0;
! 		  if (std_auto_type_p)
! 		    underspec_state =
! 		      start_underspecified_init (init_loc, underspec_name);
! 		  start_init (NULL_TREE, asm_name,
! 			      (global_bindings_p ()
! 			       || specs->storage_class == csc_static
! 			       || specs->constexpr_p),
! 			      specs->constexpr_p, &richloc);
  		  /* A parameter is initialized, which is invalid.  Don't
  		     attempt to instrument the initializer.  */
  		  int flag_sanitize_save = flag_sanitize;
  		  if (nested && !empty_ok)
  		    flag_sanitize = 0;
  		  init = c_parser_expr_no_commas (parser, NULL);
+ 		  if (std_auto_type_p)
+ 		    finish_underspecified_init (underspec_name,
+ 						underspec_state);
  		  flag_sanitize = flag_sanitize_save;
! 		  if (gnu_auto_type_p
! 		      && TREE_CODE (init.value) == COMPONENT_REF
  		      && DECL_C_BIT_FIELD (TREE_OPERAND (init.value, 1)))
  		    error_at (here,
  			      "%<__auto_type%> used with a bit-field"
  			      " initializer");
! 		  init = convert_lvalue_to_rvalue (init_loc, init, true, true,
! 						   true);
  		  tree init_type = TREE_TYPE (init.value);
! 		  bool vm_type = c_type_variably_modified_p (init_type);
  		  if (vm_type)
  		    init.value = save_expr (init.value);
  		  finish_init ();
*************** c_parser_declaration_or_fndef (c_parser
*** 2238,2243 ****
--- 2502,2517 ----
  		  specs->locations[cdw_typedef] = init_loc;
  		  specs->typedef_p = true;
  		  specs->type = init_type;
+ 		  if (specs->postfix_attrs)
+ 		    {
+ 		      /* Postfix [[]] attributes are valid with C2X
+ 			 auto, although not with __auto_type, and
+ 			 modify the type given by the initializer.  */
+ 		      specs->postfix_attrs =
+ 			c_warn_type_attributes (specs->postfix_attrs);
+ 		      decl_attributes (&specs->type, specs->postfix_attrs, 0);
+ 		      specs->postfix_attrs = NULL_TREE;
+ 		    }
  		  if (vm_type)
  		    {
  		      bool maybe_const = true;
*************** c_parser_declaration_or_fndef (c_parser
*** 2262,2285 ****
  	      else
  		{
  		  /* The declaration of the variable is in effect while
! 		     its initializer is parsed.  */
  		  d = start_decl (declarator, specs, true,
! 				  chainon (postfix_attrs, all_prefix_attrs));
  		  if (!d)
  		    d = error_mark_node;
! 		  if (omp_declare_simd_clauses)
  		    c_finish_omp_declare_simd (parser, d, NULL_TREE,
  					       omp_declare_simd_clauses);
! 		  init_loc = c_parser_peek_token (parser)->location;
! 		  rich_location richloc (line_table, init_loc);
! 		  start_init (d, asm_name, global_bindings_p (), &richloc);
  		  /* A parameter is initialized, which is invalid.  Don't
  		     attempt to instrument the initializer.  */
  		  int flag_sanitize_save = flag_sanitize;
  		  if (TREE_CODE (d) == PARM_DECL)
  		    flag_sanitize = 0;
! 		  init = c_parser_initializer (parser);
  		  flag_sanitize = flag_sanitize_save;
  		  finish_init ();
  		}
  	      if (oacc_routine_data)
--- 2536,2577 ----
  	      else
  		{
  		  /* The declaration of the variable is in effect while
! 		     its initializer is parsed, except for a constexpr
! 		     variable.  */
! 		  init_loc = c_parser_peek_token (parser)->location;
! 		  rich_location richloc (line_table, init_loc);
! 		  unsigned int underspec_state = 0;
! 		  if (specs->constexpr_p)
! 		    underspec_state =
! 		      start_underspecified_init (init_loc, underspec_name);
  		  d = start_decl (declarator, specs, true,
! 				  chainon (postfix_attrs,
! 					   all_prefix_attrs),
! 				  !specs->constexpr_p);
  		  if (!d)
  		    d = error_mark_node;
! 		  if (!specs->constexpr_p && omp_declare_simd_clauses)
  		    c_finish_omp_declare_simd (parser, d, NULL_TREE,
  					       omp_declare_simd_clauses);
! 		  start_init (d, asm_name,
! 			      TREE_STATIC (d) || specs->constexpr_p,
! 			      specs->constexpr_p, &richloc);
  		  /* A parameter is initialized, which is invalid.  Don't
  		     attempt to instrument the initializer.  */
  		  int flag_sanitize_save = flag_sanitize;
  		  if (TREE_CODE (d) == PARM_DECL)
  		    flag_sanitize = 0;
! 		  init = c_parser_initializer (parser, d);
  		  flag_sanitize = flag_sanitize_save;
+ 		  if (specs->constexpr_p)
+ 		    {
+ 		      finish_underspecified_init (underspec_name,
+ 						  underspec_state);
+ 		      d = pushdecl (d);
+ 		      if (omp_declare_simd_clauses)
+ 			c_finish_omp_declare_simd (parser, d, NULL_TREE,
+ 						   omp_declare_simd_clauses);
+ 		    }
  		  finish_init ();
  		}
  	      if (oacc_routine_data)
*************** c_parser_declaration_or_fndef (c_parser
*** 2293,2310 ****
  	    }
  	  else
  	    {
! 	      if (auto_type_p)
  		{
  		  error_at (here,
! 			    "%<__auto_type%> requires an initialized "
! 			    "data declaration");
  		  c_parser_skip_to_end_of_block_or_statement (parser);
  		  return;
  		}
  
  	      location_t lastloc = UNKNOWN_LOCATION;
  	      tree attrs = chainon (postfix_attrs, all_prefix_attrs);
! 	      tree d = start_decl (declarator, specs, false, attrs, &lastloc);
  	      if (d && TREE_CODE (d) == FUNCTION_DECL)
  		{
  		  /* Find the innermost declarator that is neither cdk_id
--- 2585,2603 ----
  	    }
  	  else
  	    {
! 	      if (any_auto_type_p || specs->constexpr_p)
  		{
  		  error_at (here,
! 			    "%qs requires an initialized data declaration",
! 			    any_auto_type_p ? auto_type_keyword : "constexpr");
  		  c_parser_skip_to_end_of_block_or_statement (parser);
  		  return;
  		}
  
  	      location_t lastloc = UNKNOWN_LOCATION;
  	      tree attrs = chainon (postfix_attrs, all_prefix_attrs);
! 	      tree d = start_decl (declarator, specs, false, attrs, true,
! 				   &lastloc);
  	      if (d && TREE_CODE (d) == FUNCTION_DECL)
  		{
  		  /* Find the innermost declarator that is neither cdk_id
*************** c_parser_declaration_or_fndef (c_parser
*** 2385,2395 ****
  	    }
  	  if (c_parser_next_token_is (parser, CPP_COMMA))
  	    {
! 	      if (auto_type_p)
  		{
  		  error_at (here,
! 			    "%<__auto_type%> may only be used with"
! 			    " a single declarator");
  		  c_parser_skip_to_end_of_block_or_statement (parser);
  		  return;
  		}
--- 2678,2688 ----
  	    }
  	  if (c_parser_next_token_is (parser, CPP_COMMA))
  	    {
! 	      if (any_auto_type_p || specs->constexpr_p)
  		{
  		  error_at (here,
! 			    "%qs may only be used with a single declarator",
! 			    any_auto_type_p ? auto_type_keyword : "constexpr");
  		  c_parser_skip_to_end_of_block_or_statement (parser);
  		  return;
  		}
*************** c_parser_declaration_or_fndef (c_parser
*** 2422,2431 ****
  	      return;
  	    }
  	}
!       else if (auto_type_p)
  	{
  	  error_at (here,
! 		    "%<__auto_type%> requires an initialized data declaration");
  	  c_parser_skip_to_end_of_block_or_statement (parser);
  	  return;
  	}
--- 2715,2725 ----
  	      return;
  	    }
  	}
!       else if (any_auto_type_p || specs->constexpr_p)
  	{
  	  error_at (here,
! 		    "%qs requires an initialized data declaration",
! 		    any_auto_type_p ? auto_type_keyword : "constexpr");
  	  c_parser_skip_to_end_of_block_or_statement (parser);
  	  return;
  	}
*************** c_parser_declaration_or_fndef (c_parser
*** 2498,2507 ****
--- 2792,2804 ----
  	 declarator with a nonempty identifier list in a definition;
  	 and postfix attributes have never been accepted here in
  	 function definitions either.  */
+       int save_debug_nonbind_markers_p = debug_nonbind_markers_p;
+       debug_nonbind_markers_p = 0;
        while (c_parser_next_token_is_not (parser, CPP_EOF)
  	     && c_parser_next_token_is_not (parser, CPP_OPEN_BRACE))
  	c_parser_declaration_or_fndef (parser, false, false, false,
  				       true, false);
+       debug_nonbind_markers_p = save_debug_nonbind_markers_p;
        store_parm_decls ();
        if (omp_declare_simd_clauses)
  	c_finish_omp_declare_simd (parser, current_function_decl, NULL_TREE,
*************** c_parser_static_assert_declaration_no_se
*** 2620,2638 ****
    tree string = NULL_TREE;
  
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_STATIC_ASSERT));
    assert_loc = c_parser_peek_token (parser)->location;
    if (flag_isoc99)
      pedwarn_c99 (assert_loc, OPT_Wpedantic,
! 		 "ISO C99 does not support %<_Static_assert%>");
    else
      pedwarn_c99 (assert_loc, OPT_Wpedantic,
! 		 "ISO C90 does not support %<_Static_assert%>");
    c_parser_consume_token (parser);
    matching_parens parens;
    if (!parens.require_open (parser))
      return;
    location_t value_tok_loc = c_parser_peek_token (parser)->location;
!   value = c_parser_expr_no_commas (parser, NULL).value;
    value_loc = EXPR_LOC_OR_LOC (value, value_tok_loc);
    if (c_parser_next_token_is (parser, CPP_COMMA))
      {
--- 2917,2938 ----
    tree string = NULL_TREE;
  
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_STATIC_ASSERT));
+   tree spelling = c_parser_peek_token (parser)->value;
    assert_loc = c_parser_peek_token (parser)->location;
    if (flag_isoc99)
      pedwarn_c99 (assert_loc, OPT_Wpedantic,
! 		 "ISO C99 does not support %qE", spelling);
    else
      pedwarn_c99 (assert_loc, OPT_Wpedantic,
! 		 "ISO C90 does not support %qE", spelling);
    c_parser_consume_token (parser);
    matching_parens parens;
    if (!parens.require_open (parser))
      return;
    location_t value_tok_loc = c_parser_peek_token (parser)->location;
!   value = convert_lvalue_to_rvalue (value_tok_loc,
! 				    c_parser_expr_no_commas (parser, NULL),
! 				    true, true).value;
    value_loc = EXPR_LOC_OR_LOC (value, value_tok_loc);
    if (c_parser_next_token_is (parser, CPP_COMMA))
      {
*************** c_parser_static_assert_declaration_no_se
*** 2657,2663 ****
         new C2X feature of _Static_assert.  */
      pedwarn_c11 (assert_loc, OPT_Wpedantic,
  		 "ISO C11 does not support omitting the string in "
! 		 "%<_Static_assert%>");
    parens.require_close (parser);
  
    if (!INTEGRAL_TYPE_P (TREE_TYPE (value)))
--- 2957,2963 ----
         new C2X feature of _Static_assert.  */
      pedwarn_c11 (assert_loc, OPT_Wpedantic,
  		 "ISO C11 does not support omitting the string in "
! 		 "%qE", spelling);
    parens.require_close (parser);
  
    if (!INTEGRAL_TYPE_P (TREE_TYPE (value)))
*************** c_parser_declspecs (c_parser *parser, st
*** 2903,2908 ****
--- 3203,3209 ----
  	    }
  	  t.expr = NULL_TREE;
  	  t.expr_const_operands = true;
+ 	  t.has_enum_type_specifier = false;
  	  declspecs_add_type (name_token->location, specs, t);
  	  continue;
  	}
*************** c_parser_declspecs (c_parser *parser, st
*** 2919,2924 ****
--- 3220,3226 ----
  	  t.spec = objc_get_protocol_qualified_type (NULL_TREE, proto);
  	  t.expr = NULL_TREE;
  	  t.expr_const_operands = true;
+ 	  t.has_enum_type_specifier = false;
  	  declspecs_add_type (loc, specs, t);
  	  continue;
  	}
*************** c_parser_declspecs (c_parser *parser, st
*** 2933,2938 ****
--- 3235,3241 ----
  	case RID_NORETURN:
  	case RID_AUTO:
  	case RID_THREAD:
+ 	case RID_CONSTEXPR:
  	  if (!scspec_ok)
  	    goto out;
  	  attrs_ok = true;
*************** c_parser_declspecs (c_parser *parser, st
*** 2979,2984 ****
--- 3282,3288 ----
  	  t.spec = c_parser_peek_token (parser)->value;
  	  t.expr = NULL_TREE;
  	  t.expr_const_operands = true;
+ 	  t.has_enum_type_specifier = false;
  	  declspecs_add_type (loc, specs, t);
  	  c_parser_consume_token (parser);
  	  break;
*************** c_parser_declspecs (c_parser *parser, st
*** 3002,3007 ****
--- 3306,3312 ----
  	  declspecs_add_type (loc, specs, t);
  	  break;
  	case RID_TYPEOF:
+ 	case RID_TYPEOF_UNQUAL:
  	  /* ??? The old parser rejected typeof after other type
  	     specifiers, but is a syntax error the best way of
  	     handling this?  */
*************** c_parser_declspecs (c_parser *parser, st
*** 3042,3047 ****
--- 3347,3353 ----
  	      t.spec = error_mark_node;
  	      t.expr = NULL_TREE;
  	      t.expr_const_operands = true;
+ 	      t.has_enum_type_specifier = false;
  	      if (type != NULL)
  		t.spec = groktypename (type, &t.expr,
  				       &t.expr_const_operands);
*************** c_parser_declspecs (c_parser *parser, st
*** 3109,3125 ****
  /* Parse an enum specifier (C90 6.5.2.2, C99 6.7.2.2, C11 6.7.2.2).
  
     enum-specifier:
!      enum gnu-attributes[opt] identifier[opt] { enumerator-list }
!        gnu-attributes[opt]
!      enum gnu-attributes[opt] identifier[opt] { enumerator-list , }
!        gnu-attributes[opt]
       enum gnu-attributes[opt] identifier
  
!    The form with trailing comma is new in C99.  The forms with
!    gnu-attributes are GNU extensions.  In GNU C, we accept any expression
!    without commas in the syntax (assignment expressions, not just
!    conditional expressions); assignment expressions will be diagnosed
!    as non-constant.
  
     enumerator-list:
       enumerator
--- 3415,3434 ----
  /* Parse an enum specifier (C90 6.5.2.2, C99 6.7.2.2, C11 6.7.2.2).
  
     enum-specifier:
!      enum gnu-attributes[opt] identifier[opt] enum-type-specifier[opt]
!        { enumerator-list } gnu-attributes[opt]
!      enum gnu-attributes[opt] identifier[opt] enum-type-specifier[opt]
!        { enumerator-list , } gnu-attributes[opt] enum-type-specifier[opt]
       enum gnu-attributes[opt] identifier
  
!    The form with trailing comma is new in C99; enum-type-specifiers
!    are new in C2x.  The forms with gnu-attributes are GNU extensions.
!    In GNU C, we accept any expression without commas in the syntax
!    (assignment expressions, not just conditional expressions);
!    assignment expressions will be diagnosed as non-constant.
! 
!    enum-type-specifier:
!      : specifier-qualifier-list
  
     enumerator-list:
       enumerator
*************** c_parser_enum_specifier (c_parser *parse
*** 3147,3152 ****
--- 3456,3462 ----
    tree std_attrs = NULL_TREE;
    tree attrs;
    tree ident = NULL_TREE;
+   tree fixed_underlying_type = NULL_TREE;
    location_t enum_loc;
    location_t ident_loc = UNKNOWN_LOCATION;  /* Quiet warning.  */
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_ENUM));
*************** c_parser_enum_specifier (c_parser *parse
*** 3165,3170 ****
--- 3475,3557 ----
        enum_loc = ident_loc;
        c_parser_consume_token (parser);
      }
+   if (c_parser_next_token_is (parser, CPP_COLON)
+       /* Distinguish an enum-type-specifier from a bit-field
+ 	 declaration of the form "enum e : constant-expression;".  */
+       && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
+     {
+       pedwarn_c11 (enum_loc, OPT_Wpedantic,
+ 		   "ISO C does not support specifying %<enum%> underlying "
+ 		   "types before C2X");
+       if (ident)
+ 	{
+ 	  /* The tag is in scope during the enum-type-specifier (which
+ 	     may refer to the tag inside typeof).  */
+ 	  ret = parser_xref_tag (ident_loc, ENUMERAL_TYPE, ident,
+ 				 have_std_attrs, std_attrs, true);
+ 	  if (!ENUM_FIXED_UNDERLYING_TYPE_P (ret.spec))
+ 	    error_at (enum_loc, "%<enum%> declared both with and without "
+ 		      "fixed underlying type");
+ 	}
+       else
+ 	{
+ 	  /* There must be an enum definition, so this initialization
+ 	     (to avoid possible warnings about uninitialized data)
+ 	     will be replaced later (either with the results of that
+ 	     definition, or with the results of error handling for the
+ 	     case of no tag and no definition).  */
+ 	  ret.spec = NULL_TREE;
+ 	  ret.kind = ctsk_tagdef;
+ 	  ret.expr = NULL_TREE;
+ 	  ret.expr_const_operands = true;
+ 	  ret.has_enum_type_specifier = true;
+ 	}
+       c_parser_consume_token (parser);
+       struct c_declspecs *specs = build_null_declspecs ();
+       c_parser_declspecs (parser, specs, false, true, false, false, false,
+ 			  false, true, cla_prefer_id);
+       finish_declspecs (specs);
+       if (specs->default_int_p)
+ 	error_at (enum_loc, "no %<enum%> underlying type specified");
+       else if (TREE_CODE (specs->type) != INTEGER_TYPE
+ 	       && TREE_CODE (specs->type) != BOOLEAN_TYPE)
+ 	{
+ 	  error_at (enum_loc, "invalid %<enum%> underlying type");
+ 	  specs->type = integer_type_node;
+ 	}
+       else if (specs->restrict_p)
+ 	error_at (enum_loc, "invalid use of %<restrict%>");
+       fixed_underlying_type = TYPE_MAIN_VARIANT (specs->type);
+       if (ident)
+ 	{
+ 	  /* The type specified must be consistent with any previously
+ 	     specified underlying type.  If this is a newly declared
+ 	     type, it is now a complete type.  */
+ 	  if (ENUM_FIXED_UNDERLYING_TYPE_P (ret.spec)
+ 	      && ENUM_UNDERLYING_TYPE (ret.spec) == NULL_TREE)
+ 	    {
+ 	      TYPE_MIN_VALUE (ret.spec) =
+ 		TYPE_MIN_VALUE (fixed_underlying_type);
+ 	      TYPE_MAX_VALUE (ret.spec) =
+ 		TYPE_MAX_VALUE (fixed_underlying_type);
+ 	      TYPE_UNSIGNED (ret.spec) = TYPE_UNSIGNED (fixed_underlying_type);
+ 	      SET_TYPE_ALIGN (ret.spec, TYPE_ALIGN (fixed_underlying_type));
+ 	      TYPE_SIZE (ret.spec) = NULL_TREE;
+ 	      TYPE_PRECISION (ret.spec) =
+ 		TYPE_PRECISION (fixed_underlying_type);
+ 	      ENUM_UNDERLYING_TYPE (ret.spec) = fixed_underlying_type;
+ 	      layout_type (ret.spec);
+ 	    }
+ 	  else if (ENUM_FIXED_UNDERLYING_TYPE_P (ret.spec)
+ 		   && !comptypes (fixed_underlying_type,
+ 				  ENUM_UNDERLYING_TYPE (ret.spec)))
+ 	    {
+ 	      error_at (enum_loc, "%<enum%> underlying type incompatible with "
+ 			"previous declaration");
+ 	      fixed_underlying_type = ENUM_UNDERLYING_TYPE (ret.spec);
+ 	    }
+ 	}
+     }
    if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
      {
        /* Parse an enum definition.  */
*************** c_parser_enum_specifier (c_parser *parse
*** 3175,3181 ****
  	 forward order at the end.  */
        tree values;
        timevar_push (TV_PARSE_ENUM);
!       type = start_enum (enum_loc, &the_enum, ident);
        values = NULL_TREE;
        c_parser_consume_token (parser);
        while (true)
--- 3562,3568 ----
  	 forward order at the end.  */
        tree values;
        timevar_push (TV_PARSE_ENUM);
!       type = start_enum (enum_loc, &the_enum, ident, fixed_underlying_type);
        values = NULL_TREE;
        c_parser_consume_token (parser);
        while (true)
*************** c_parser_enum_specifier (c_parser *parse
*** 3219,3225 ****
  	    {
  	      c_parser_consume_token (parser);
  	      value_loc = c_parser_peek_token (parser)->location;
! 	      enum_value = c_parser_expr_no_commas (parser, NULL).value;
  	    }
  	  else
  	    enum_value = NULL_TREE;
--- 3606,3615 ----
  	    {
  	      c_parser_consume_token (parser);
  	      value_loc = c_parser_peek_token (parser)->location;
! 	      enum_value = convert_lvalue_to_rvalue (value_loc,
! 						     (c_parser_expr_no_commas
! 						      (parser, NULL)),
! 						     true, true).value;
  	    }
  	  else
  	    enum_value = NULL_TREE;
*************** c_parser_enum_specifier (c_parser *parse
*** 3259,3264 ****
--- 3649,3655 ----
        ret.kind = ctsk_tagdef;
        ret.expr = NULL_TREE;
        ret.expr_const_operands = true;
+       ret.has_enum_type_specifier = fixed_underlying_type != NULL_TREE;
        timevar_pop (TV_PARSE_ENUM);
        return ret;
      }
*************** c_parser_enum_specifier (c_parser *parse
*** 3269,3274 ****
--- 3660,3666 ----
        ret.kind = ctsk_tagref;
        ret.expr = NULL_TREE;
        ret.expr_const_operands = true;
+       ret.has_enum_type_specifier = false;
        return ret;
      }
    /* Attributes may only appear when the members are defined or in
*************** c_parser_enum_specifier (c_parser *parse
*** 3277,3291 ****
       standard C).  */
    if (have_std_attrs && c_parser_next_token_is_not (parser, CPP_SEMICOLON))
      c_parser_error (parser, "expected %<;%>");
!   ret = parser_xref_tag (ident_loc, ENUMERAL_TYPE, ident, have_std_attrs,
! 			 std_attrs);
!   /* In ISO C, enumerated types can be referred to only if already
!      defined.  */
!   if (pedantic && !COMPLETE_TYPE_P (ret.spec))
      {
!       gcc_assert (ident);
!       pedwarn (enum_loc, OPT_Wpedantic,
! 	       "ISO C forbids forward references to %<enum%> types");
      }
    return ret;
  }
--- 3669,3686 ----
       standard C).  */
    if (have_std_attrs && c_parser_next_token_is_not (parser, CPP_SEMICOLON))
      c_parser_error (parser, "expected %<;%>");
!   if (fixed_underlying_type == NULL_TREE)
      {
!       ret = parser_xref_tag (ident_loc, ENUMERAL_TYPE, ident, have_std_attrs,
! 			     std_attrs, false);
!       /* In ISO C, enumerated types without a fixed underlying type
! 	 can be referred to only if already defined.  */
!       if (pedantic && !COMPLETE_TYPE_P (ret.spec))
! 	{
! 	  gcc_assert (ident);
! 	  pedwarn (enum_loc, OPT_Wpedantic,
! 		   "ISO C forbids forward references to %<enum%> types");
! 	}
      }
    return ret;
  }
*************** c_parser_struct_or_union_specifier (c_pa
*** 3481,3486 ****
--- 3876,3882 ----
        ret.kind = ctsk_tagdef;
        ret.expr = NULL_TREE;
        ret.expr_const_operands = true;
+       ret.has_enum_type_specifier = false;
        timevar_pop (TV_PARSE_STRUCT);
        return ret;
      }
*************** c_parser_struct_or_union_specifier (c_pa
*** 3491,3496 ****
--- 3887,3893 ----
        ret.kind = ctsk_tagref;
        ret.expr = NULL_TREE;
        ret.expr_const_operands = true;
+       ret.has_enum_type_specifier = false;
        return ret;
      }
    /* Attributes may only appear when the members are defined or in
*************** c_parser_struct_or_union_specifier (c_pa
*** 3499,3505 ****
      c_parser_error (parser, "expected %<;%>");
    /* ??? Existing practice is that GNU attributes are ignored after
       the struct or union keyword when not defining the members.  */
!   ret = parser_xref_tag (ident_loc, code, ident, have_std_attrs, std_attrs);
    return ret;
  }
  
--- 3896,3903 ----
      c_parser_error (parser, "expected %<;%>");
    /* ??? Existing practice is that GNU attributes are ignored after
       the struct or union keyword when not defining the members.  */
!   ret = parser_xref_tag (ident_loc, code, ident, have_std_attrs, std_attrs,
! 			 false);
    return ret;
  }
  
*************** c_parser_struct_declaration (c_parser *p
*** 3649,3655 ****
  	  if (c_parser_next_token_is (parser, CPP_COLON))
  	    {
  	      c_parser_consume_token (parser);
! 	      width = c_parser_expr_no_commas (parser, NULL).value;
  	    }
  	  if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE))
  	    postfix_attrs = c_parser_gnu_attributes (parser);
--- 4047,4057 ----
  	  if (c_parser_next_token_is (parser, CPP_COLON))
  	    {
  	      c_parser_consume_token (parser);
! 	      location_t loc = c_parser_peek_token (parser)->location;
! 	      width = convert_lvalue_to_rvalue (loc,
! 						(c_parser_expr_no_commas
! 						 (parser, NULL)),
! 						true, true).value;
  	    }
  	  if (c_parser_next_token_is_keyword (parser, RID_ATTRIBUTE))
  	    postfix_attrs = c_parser_gnu_attributes (parser);
*************** c_parser_struct_declaration (c_parser *p
*** 3689,3710 ****
    return decls;
  }
  
! /* Parse a typeof specifier (a GNU extension).
  
     typeof-specifier:
       typeof ( expression )
       typeof ( type-name )
  */
  
  static struct c_typespec
  c_parser_typeof_specifier (c_parser *parser)
  {
    struct c_typespec ret;
    ret.kind = ctsk_typeof;
    ret.spec = error_mark_node;
    ret.expr = NULL_TREE;
    ret.expr_const_operands = true;
!   gcc_assert (c_parser_next_token_is_keyword (parser, RID_TYPEOF));
    c_parser_consume_token (parser);
    c_inhibit_evaluation_warnings++;
    in_typeof++;
--- 4091,4129 ----
    return decls;
  }
  
! /* Parse a typeof specifier (a GNU extension adopted in C2X).
  
     typeof-specifier:
       typeof ( expression )
       typeof ( type-name )
+      typeof_unqual ( expression )
+      typeof_unqual ( type-name )
  */
  
  static struct c_typespec
  c_parser_typeof_specifier (c_parser *parser)
  {
+   bool is_unqual;
+   bool is_std;
    struct c_typespec ret;
    ret.kind = ctsk_typeof;
    ret.spec = error_mark_node;
    ret.expr = NULL_TREE;
    ret.expr_const_operands = true;
!   ret.has_enum_type_specifier = false;
!   if (c_parser_next_token_is_keyword (parser, RID_TYPEOF))
!     {
!       is_unqual = false;
!       tree spelling = c_parser_peek_token (parser)->value;
!       is_std = (flag_isoc2x
! 		&& strcmp (IDENTIFIER_POINTER (spelling), "typeof") == 0);
!     }
!   else
!     {
!       gcc_assert (c_parser_next_token_is_keyword (parser, RID_TYPEOF_UNQUAL));
!       is_unqual = true;
!       is_std = true;
!     }
    c_parser_consume_token (parser);
    c_inhibit_evaluation_warnings++;
    in_typeof++;
*************** c_parser_typeof_specifier (c_parser *par
*** 3723,3729 ****
        if (type != NULL)
  	{
  	  ret.spec = groktypename (type, &ret.expr, &ret.expr_const_operands);
! 	  pop_maybe_used (variably_modified_type_p (ret.spec, NULL_TREE));
  	}
      }
    else
--- 4142,4148 ----
        if (type != NULL)
  	{
  	  ret.spec = groktypename (type, &ret.expr, &ret.expr_const_operands);
! 	  pop_maybe_used (c_type_variably_modified_p (ret.spec));
  	}
      }
    else
*************** c_parser_typeof_specifier (c_parser *par
*** 3738,3744 ****
  	error_at (here, "%<typeof%> applied to a bit-field");
        mark_exp_read (expr.value);
        ret.spec = TREE_TYPE (expr.value);
!       was_vm = variably_modified_type_p (ret.spec, NULL_TREE);
        /* This is returned with the type so that when the type is
  	 evaluated, this can be evaluated.  */
        if (was_vm)
--- 4157,4163 ----
  	error_at (here, "%<typeof%> applied to a bit-field");
        mark_exp_read (expr.value);
        ret.spec = TREE_TYPE (expr.value);
!       was_vm = c_type_variably_modified_p (ret.spec);
        /* This is returned with the type so that when the type is
  	 evaluated, this can be evaluated.  */
        if (was_vm)
*************** c_parser_typeof_specifier (c_parser *par
*** 3746,3751 ****
--- 4165,4188 ----
        pop_maybe_used (was_vm);
      }
    parens.skip_until_found_close (parser);
+   if (ret.spec != error_mark_node)
+     {
+       if (is_unqual && TYPE_QUALS (ret.spec) != TYPE_UNQUALIFIED)
+ 	ret.spec = TYPE_MAIN_VARIANT (ret.spec);
+       if (is_std)
+ 	{
+ 	  /* In ISO C terms, _Noreturn is not part of the type of
+ 	     expressions such as &abort, but in GCC it is represented
+ 	     internally as a type qualifier.  */
+ 	  if (TREE_CODE (ret.spec) == FUNCTION_TYPE
+ 	      && TYPE_QUALS (ret.spec) != TYPE_UNQUALIFIED)
+ 	    ret.spec = TYPE_MAIN_VARIANT (ret.spec);
+ 	  else if (FUNCTION_POINTER_TYPE_P (ret.spec)
+ 		   && TYPE_QUALS (TREE_TYPE (ret.spec)) != TYPE_UNQUALIFIED)
+ 	    ret.spec
+ 	      = build_pointer_type (TYPE_MAIN_VARIANT (TREE_TYPE (ret.spec)));
+ 	}
+     }
    return ret;
  }
  
*************** c_parser_alignas_specifier (c_parser * p
*** 3764,3776 ****
    tree ret = error_mark_node;
    location_t loc = c_parser_peek_token (parser)->location;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_ALIGNAS));
    c_parser_consume_token (parser);
    if (flag_isoc99)
      pedwarn_c99 (loc, OPT_Wpedantic,
! 		 "ISO C99 does not support %<_Alignas%>");
    else
      pedwarn_c99 (loc, OPT_Wpedantic,
! 		 "ISO C90 does not support %<_Alignas%>");
    matching_parens parens;
    if (!parens.require_open (parser))
      return ret;
--- 4201,4214 ----
    tree ret = error_mark_node;
    location_t loc = c_parser_peek_token (parser)->location;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_ALIGNAS));
+   tree spelling = c_parser_peek_token (parser)->value;
    c_parser_consume_token (parser);
    if (flag_isoc99)
      pedwarn_c99 (loc, OPT_Wpedantic,
! 		 "ISO C99 does not support %qE", spelling);
    else
      pedwarn_c99 (loc, OPT_Wpedantic,
! 		 "ISO C90 does not support %qE", spelling);
    matching_parens parens;
    if (!parens.require_open (parser))
      return ret;
*************** c_parser_alignas_specifier (c_parser * p
*** 3782,3788 ****
  					false, true, 1);
      }
    else
!     ret = c_parser_expr_no_commas (parser, NULL).value;
    parens.skip_until_found_close (parser);
    return ret;
  }
--- 4220,4228 ----
  					false, true, 1);
      }
    else
!     ret = convert_lvalue_to_rvalue (loc,
! 				    c_parser_expr_no_commas (parser, NULL),
! 				    true, true).value;
    parens.skip_until_found_close (parser);
    return ret;
  }
*************** c_parser_direct_declarator (c_parser *pa
*** 3975,3981 ****
        if (kind != C_DTR_NORMAL
  	  && (c_parser_next_token_starts_declspecs (parser)
  	      || (!have_gnu_attrs
! 		  && c_parser_nth_token_starts_std_attributes (parser, 1))
  	      || c_parser_next_token_is (parser, CPP_CLOSE_PAREN)))
  	{
  	  struct c_arg_info *args
--- 4415,4422 ----
        if (kind != C_DTR_NORMAL
  	  && (c_parser_next_token_starts_declspecs (parser)
  	      || (!have_gnu_attrs
! 		  && (c_parser_nth_token_starts_std_attributes (parser, 1)
! 		      || c_parser_next_token_is (parser, CPP_ELLIPSIS)))
  	      || c_parser_next_token_is (parser, CPP_CLOSE_PAREN)))
  	{
  	  struct c_arg_info *args
*************** c_parser_parms_list_declarator (c_parser
*** 4251,4275 ****
        c_parser_consume_token (parser);
        return ret;
      }
!   if (c_parser_next_token_is (parser, CPP_ELLIPSIS))
      {
        struct c_arg_info *ret = build_arg_info ();
  
!       if (flag_allow_parameterless_variadic_functions)
!         {
!           /* F (...) is allowed.  */
!           ret->types = NULL_TREE;
!         }
!       else
!         {
!           /* Suppress -Wold-style-definition for this case.  */
!           ret->types = error_mark_node;
!           error_at (c_parser_peek_token (parser)->location,
!                     "ISO C requires a named argument before %<...%>");
!         }
        c_parser_consume_token (parser);
        if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	{
  	  c_parser_consume_token (parser);
  	  return ret;
  	}
--- 4692,4709 ----
        c_parser_consume_token (parser);
        return ret;
      }
!   if (c_parser_next_token_is (parser, CPP_ELLIPSIS) && !have_gnu_attrs)
      {
        struct c_arg_info *ret = build_arg_info ();
  
!       ret->types = NULL_TREE;
!       pedwarn_c11 (c_parser_peek_token (parser)->location, OPT_Wpedantic,
! 		   "ISO C requires a named argument before %<...%> "
! 		   "before C2X");
        c_parser_consume_token (parser);
        if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	{
+ 	  ret->no_named_args_stdarg_p = true;
  	  c_parser_consume_token (parser);
  	  return ret;
  	}
*************** c_parser_gnu_attribute_any_word (c_parse
*** 4536,4541 ****
--- 4970,4976 ----
  	case RID_TRANSACTION_CANCEL:
  	case RID_ATOMIC:
  	case RID_AUTO_TYPE:
+ 	case RID_CONSTEXPR:
  	case RID_INT_N_0:
  	case RID_INT_N_1:
  	case RID_INT_N_2:
*************** c_parser_gnu_attribute_any_word (c_parse
*** 4571,4577 ****
  
  static tree
  c_parser_attribute_arguments (c_parser *parser, bool takes_identifier,
! 			      bool require_string, bool allow_empty_args)
  {
    vec<tree, va_gc> *expr_list;
    tree attr_args;
--- 5006,5013 ----
  
  static tree
  c_parser_attribute_arguments (c_parser *parser, bool takes_identifier,
! 			      bool require_string, bool assume_attr,
! 			      bool allow_empty_args)
  {
    vec<tree, va_gc> *expr_list;
    tree attr_args;
*************** c_parser_attribute_arguments (c_parser *
*** 4590,4595 ****
--- 5026,5032 ----
  	      == CPP_CLOSE_PAREN))
        && (takes_identifier
  	  || (c_dialect_objc ()
+ 	      && !assume_attr
  	      && c_parser_peek_token (parser)->id_kind
  	      == C_ID_CLASSNAME)))
      {
*************** c_parser_attribute_arguments (c_parser *
*** 4626,4631 ****
--- 5063,5085 ----
  	  tree string = c_parser_string_literal (parser, false, true).value;
  	  attr_args = build_tree_list (NULL_TREE, string);
  	}
+       else if (assume_attr)
+ 	{
+ 	  tree cond
+ 	    = c_parser_conditional_expression (parser, NULL, NULL_TREE).value;
+ 	  if (!c_parser_next_token_is (parser, CPP_COMMA))
+ 	    attr_args = build_tree_list (NULL_TREE, cond);
+ 	  else
+ 	    {
+ 	      tree tree_list;
+ 	      c_parser_consume_token (parser);
+ 	      expr_list = c_parser_expr_list (parser, false, true,
+ 					      NULL, NULL, NULL, NULL);
+ 	      tree_list = build_tree_list_vec (expr_list);
+ 	      attr_args = tree_cons (NULL_TREE, cond, tree_list);
+ 	      release_tree_vector (expr_list);
+ 	    }
+ 	}
        else
  	{
  	  expr_list = c_parser_expr_list (parser, false, true,
*************** c_parser_gnu_attribute (c_parser *parser
*** 4709,4715 ****
    tree attr_args
      = c_parser_attribute_arguments (parser,
  				    attribute_takes_identifier_p (attr_name),
! 				    false, true);
  
    attr = build_tree_list (attr_name, attr_args);
    if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
--- 5163,5171 ----
    tree attr_args
      = c_parser_attribute_arguments (parser,
  				    attribute_takes_identifier_p (attr_name),
! 				    false,
! 				    is_attribute_p ("assume", attr_name),
! 				    true);
  
    attr = build_tree_list (attr_name, attr_args);
    if (c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
*************** c_parser_std_attribute (c_parser *parser
*** 4955,4963 ****
  	  = (ns == NULL_TREE
  	     && (strcmp (IDENTIFIER_POINTER (name), "deprecated") == 0
  		 || strcmp (IDENTIFIER_POINTER (name), "nodiscard") == 0));
  	TREE_VALUE (attribute)
  	  = c_parser_attribute_arguments (parser, takes_identifier,
! 					  require_string, false);
        }
      else
        c_parser_balanced_token_sequence (parser);
--- 5411,5423 ----
  	  = (ns == NULL_TREE
  	     && (strcmp (IDENTIFIER_POINTER (name), "deprecated") == 0
  		 || strcmp (IDENTIFIER_POINTER (name), "nodiscard") == 0));
+ 	bool assume_attr
+ 	  = (ns != NULL_TREE
+ 	     && strcmp (IDENTIFIER_POINTER (ns), "gnu") == 0
+ 	     && strcmp (IDENTIFIER_POINTER (name), "assume") == 0);
  	TREE_VALUE (attribute)
  	  = c_parser_attribute_arguments (parser, takes_identifier,
! 					  require_string, assume_attr, false);
        }
      else
        c_parser_balanced_token_sequence (parser);
*************** c_parser_type_name (c_parser *parser, bo
*** 5203,5224 ****
     Any expression without commas is accepted in the syntax for the
     constant-expressions, with non-constant expressions rejected later.
  
     This function is only used for top-level initializers; for nested
     ones, see c_parser_initval.  */
  
  static struct c_expr
! c_parser_initializer (c_parser *parser)
  {
    if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
!     return c_parser_braced_init (parser, NULL_TREE, false, NULL);
    else
      {
        struct c_expr ret;
        location_t loc = c_parser_peek_token (parser)->location;
        ret = c_parser_expr_no_commas (parser, NULL);
        if (TREE_CODE (ret.value) != STRING_CST
! 	  && TREE_CODE (ret.value) != COMPOUND_LITERAL_EXPR)
! 	ret = convert_lvalue_to_rvalue (loc, ret, true, true);
        return ret;
      }
  }
--- 5663,5701 ----
     Any expression without commas is accepted in the syntax for the
     constant-expressions, with non-constant expressions rejected later.
  
+    DECL is the declaration we're parsing this initializer for.
+ 
     This function is only used for top-level initializers; for nested
     ones, see c_parser_initval.  */
  
  static struct c_expr
! c_parser_initializer (c_parser *parser, tree decl)
  {
    if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
!     return c_parser_braced_init (parser, NULL_TREE, false, NULL, decl);
    else
      {
        struct c_expr ret;
        location_t loc = c_parser_peek_token (parser)->location;
+       if (decl != error_mark_node && C_DECL_VARIABLE_SIZE (decl))
+ 	error_at (loc,
+ 		  "variable-sized object may not be initialized except "
+ 		  "with an empty initializer");
        ret = c_parser_expr_no_commas (parser, NULL);
+       /* This is handled mostly by gimplify.cc, but we have to deal with
+ 	 not warning about int x = x; as it is a GCC extension to turn off
+ 	 this warning but only if warn_init_self is zero.  */
+       if (VAR_P (decl)
+ 	  && !DECL_EXTERNAL (decl)
+ 	  && !TREE_STATIC (decl)
+ 	  && ret.value == decl
+ 	  && !warning_enabled_at (DECL_SOURCE_LOCATION (decl), OPT_Winit_self))
+ 	suppress_warning (decl, OPT_Winit_self);
        if (TREE_CODE (ret.value) != STRING_CST
! 	  && (TREE_CODE (ret.value) != COMPOUND_LITERAL_EXPR
! 	      || C_DECL_DECLARED_CONSTEXPR (COMPOUND_LITERAL_EXPR_DECL
! 					    (ret.value))))
! 	ret = convert_lvalue_to_rvalue (loc, ret, true, true, true);
        return ret;
      }
  }
*************** location_t last_init_list_comma;
*** 5232,5242 ****
     compound literal, and NULL_TREE for other initializers and for
     nested braced lists.  NESTED_P is true for nested braced lists,
     false for the list of a compound literal or the list that is the
!    top-level initializer in a declaration.  */
  
  static struct c_expr
  c_parser_braced_init (c_parser *parser, tree type, bool nested_p,
! 		      struct obstack *outer_obstack)
  {
    struct c_expr ret;
    struct obstack braced_init_obstack;
--- 5709,5720 ----
     compound literal, and NULL_TREE for other initializers and for
     nested braced lists.  NESTED_P is true for nested braced lists,
     false for the list of a compound literal or the list that is the
!    top-level initializer in a declaration.  DECL is the declaration for
!    the top-level initializer for a declaration, otherwise NULL_TREE.  */
  
  static struct c_expr
  c_parser_braced_init (c_parser *parser, tree type, bool nested_p,
! 		      struct obstack *outer_obstack, tree decl)
  {
    struct c_expr ret;
    struct obstack braced_init_obstack;
*************** c_parser_braced_init (c_parser *parser,
*** 5254,5263 ****
      really_start_incremental_init (type);
    if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
      {
!       pedwarn (brace_loc, OPT_Wpedantic, "ISO C forbids empty initializer braces");
      }
    else
      {
        /* Parse a non-empty initializer list, possibly with a trailing
  	 comma.  */
        while (true)
--- 5732,5746 ----
      really_start_incremental_init (type);
    if (c_parser_next_token_is (parser, CPP_CLOSE_BRACE))
      {
!       pedwarn_c11 (brace_loc, OPT_Wpedantic,
! 		   "ISO C forbids empty initializer braces before C2X");
      }
    else
      {
+       if (decl && decl != error_mark_node && C_DECL_VARIABLE_SIZE (decl))
+ 	error_at (brace_loc,
+ 		  "variable-sized object may not be initialized except "
+ 		  "with an empty initializer");
        /* Parse a non-empty initializer list, possibly with a trailing
  	 comma.  */
        while (true)
*************** c_parser_initelt (c_parser *parser, stru
*** 5358,5363 ****
--- 5841,5847 ----
  	    }
  	  else
  	    {
+ 	      struct c_expr first_expr;
  	      tree first, second;
  	      location_t ellipsis_loc = UNKNOWN_LOCATION;  /* Quiet warning.  */
  	      location_t array_index_loc = UNKNOWN_LOCATION;
*************** c_parser_initelt (c_parser *parser, stru
*** 5401,5411 ****
  		      rec = objc_get_class_reference (id);
  		      goto parse_message_args;
  		    }
! 		  first = c_parser_expr_no_commas (parser, NULL).value;
! 		  mark_exp_read (first);
  		  if (c_parser_next_token_is (parser, CPP_ELLIPSIS)
  		      || c_parser_next_token_is (parser, CPP_CLOSE_SQUARE))
  		    goto array_desig_after_first;
  		  /* Expression receiver.  So far only one part
  		     without commas has been parsed; there might be
  		     more of the expression.  */
--- 5885,5897 ----
  		      rec = objc_get_class_reference (id);
  		      goto parse_message_args;
  		    }
! 		  array_index_loc = c_parser_peek_token (parser)->location;
! 		  first_expr = c_parser_expr_no_commas (parser, NULL);
! 		  mark_exp_read (first_expr.value);
  		  if (c_parser_next_token_is (parser, CPP_ELLIPSIS)
  		      || c_parser_next_token_is (parser, CPP_CLOSE_SQUARE))
  		    goto array_desig_after_first;
+ 		  first = first_expr.value;
  		  /* Expression receiver.  So far only one part
  		     without commas has been parsed; there might be
  		     more of the expression.  */
*************** c_parser_initelt (c_parser *parser, stru
*** 5431,5436 ****
--- 5917,5923 ----
  		    = objc_build_message_expr (rec, args);
  		  mexpr.original_code = ERROR_MARK;
  		  mexpr.original_type = NULL;
+ 		  mexpr.m_decimal = 0;
  		  /* Now parse and process the remainder of the
  		     initializer, starting with this message
  		     expression as a primary-expression.  */
*************** c_parser_initelt (c_parser *parser, stru
*** 5439,5452 ****
  		}
  	      c_parser_consume_token (parser);
  	      array_index_loc = c_parser_peek_token (parser)->location;
! 	      first = c_parser_expr_no_commas (parser, NULL).value;
! 	      mark_exp_read (first);
  	    array_desig_after_first:
  	      if (c_parser_next_token_is (parser, CPP_ELLIPSIS))
  		{
  		  ellipsis_loc = c_parser_peek_token (parser)->location;
  		  c_parser_consume_token (parser);
! 		  second = c_parser_expr_no_commas (parser, NULL).value;
  		  mark_exp_read (second);
  		}
  	      else
--- 5926,5946 ----
  		}
  	      c_parser_consume_token (parser);
  	      array_index_loc = c_parser_peek_token (parser)->location;
! 	      first_expr = c_parser_expr_no_commas (parser, NULL);
! 	      mark_exp_read (first_expr.value);
  	    array_desig_after_first:
+ 	      first_expr = convert_lvalue_to_rvalue (array_index_loc,
+ 						     first_expr,
+ 						     true, true);
+ 	      first = first_expr.value;
  	      if (c_parser_next_token_is (parser, CPP_ELLIPSIS))
  		{
  		  ellipsis_loc = c_parser_peek_token (parser)->location;
  		  c_parser_consume_token (parser);
! 		  second = convert_lvalue_to_rvalue (ellipsis_loc,
! 						     (c_parser_expr_no_commas
! 						      (parser, NULL)),
! 						     true, true).value;
  		  mark_exp_read (second);
  		}
  	      else
*************** c_parser_initval (c_parser *parser, stru
*** 5513,5526 ****
  
    if (c_parser_next_token_is (parser, CPP_OPEN_BRACE) && !after)
      init = c_parser_braced_init (parser, NULL_TREE, true,
! 				 braced_init_obstack);
    else
      {
        init = c_parser_expr_no_commas (parser, after);
        if (init.value != NULL_TREE
  	  && TREE_CODE (init.value) != STRING_CST
! 	  && TREE_CODE (init.value) != COMPOUND_LITERAL_EXPR)
! 	init = convert_lvalue_to_rvalue (loc, init, true, true);
      }
    process_init_element (loc, init, false, braced_init_obstack);
  }
--- 6007,6022 ----
  
    if (c_parser_next_token_is (parser, CPP_OPEN_BRACE) && !after)
      init = c_parser_braced_init (parser, NULL_TREE, true,
! 				 braced_init_obstack, NULL_TREE);
    else
      {
        init = c_parser_expr_no_commas (parser, after);
        if (init.value != NULL_TREE
  	  && TREE_CODE (init.value) != STRING_CST
! 	  && (TREE_CODE (init.value) != COMPOUND_LITERAL_EXPR
! 	      || C_DECL_DECLARED_CONSTEXPR (COMPOUND_LITERAL_EXPR_DECL
! 					    (init.value))))
! 	init = convert_lvalue_to_rvalue (loc, init, true, true, true);
      }
    process_init_element (loc, init, false, braced_init_obstack);
  }
*************** c_parser_label (c_parser *parser, tree s
*** 5877,5894 ****
      {
        tree exp1, exp2;
        c_parser_consume_token (parser);
!       exp1 = c_parser_expr_no_commas (parser, NULL).value;
        if (c_parser_next_token_is (parser, CPP_COLON))
  	{
  	  c_parser_consume_token (parser);
! 	  label = do_case (loc1, exp1, NULL_TREE);
  	}
        else if (c_parser_next_token_is (parser, CPP_ELLIPSIS))
  	{
  	  c_parser_consume_token (parser);
! 	  exp2 = c_parser_expr_no_commas (parser, NULL).value;
  	  if (c_parser_require (parser, CPP_COLON, "expected %<:%>"))
! 	    label = do_case (loc1, exp1, exp2);
  	}
        else
  	c_parser_error (parser, "expected %<:%> or %<...%>");
--- 6373,6395 ----
      {
        tree exp1, exp2;
        c_parser_consume_token (parser);
!       exp1 = convert_lvalue_to_rvalue (loc1,
! 				       c_parser_expr_no_commas (parser, NULL),
! 				       true, true).value;
        if (c_parser_next_token_is (parser, CPP_COLON))
  	{
  	  c_parser_consume_token (parser);
! 	  label = do_case (loc1, exp1, NULL_TREE, std_attrs);
  	}
        else if (c_parser_next_token_is (parser, CPP_ELLIPSIS))
  	{
  	  c_parser_consume_token (parser);
! 	  exp2 = convert_lvalue_to_rvalue (loc1,
! 					   c_parser_expr_no_commas (parser,
! 								    NULL),
! 					   true, true).value;
  	  if (c_parser_require (parser, CPP_COLON, "expected %<:%>"))
! 	    label = do_case (loc1, exp1, exp2, std_attrs);
  	}
        else
  	c_parser_error (parser, "expected %<:%> or %<...%>");
*************** c_parser_label (c_parser *parser, tree s
*** 5897,5903 ****
      {
        c_parser_consume_token (parser);
        if (c_parser_require (parser, CPP_COLON, "expected %<:%>"))
! 	label = do_case (loc1, NULL_TREE, NULL_TREE);
      }
    else
      {
--- 6398,6404 ----
      {
        c_parser_consume_token (parser);
        if (c_parser_require (parser, CPP_COLON, "expected %<:%>"))
! 	label = do_case (loc1, NULL_TREE, NULL_TREE, std_attrs);
      }
    else
      {
*************** c_parser_statement_after_labels (c_parse
*** 6215,6222 ****
  	  break;
  	case RID_ATTRIBUTE:
  	  {
! 	    /* Allow '__attribute__((fallthrough));'.  */
  	    tree attrs = c_parser_gnu_attributes (parser);
  	    if (attribute_fallthrough_p (attrs))
  	      {
  		if (c_parser_next_token_is (parser, CPP_SEMICOLON))
--- 6716,6736 ----
  	  break;
  	case RID_ATTRIBUTE:
  	  {
! 	    /* Allow '__attribute__((fallthrough));' or
! 	       '__attribute__((assume(cond)));'.  */
  	    tree attrs = c_parser_gnu_attributes (parser);
+ 	    bool has_assume = lookup_attribute ("assume", attrs);
+ 	    if (has_assume)
+ 	      {
+ 		if (c_parser_next_token_is (parser, CPP_SEMICOLON))
+ 		  attrs = handle_assume_attribute (loc, attrs, true);
+ 		else
+ 		  {
+ 		    warning_at (loc, OPT_Wattributes,
+ 				"%<assume%> attribute not followed by %<;%>");
+ 		    has_assume = false;
+ 		  }
+ 	      }
  	    if (attribute_fallthrough_p (attrs))
  	      {
  		if (c_parser_next_token_is (parser, CPP_SEMICOLON))
*************** c_parser_statement_after_labels (c_parse
*** 6233,6241 ****
  			      "%<fallthrough%> attribute not followed "
  			      "by %<;%>");
  	      }
  	    else if (attrs != NULL_TREE)
! 	      warning_at (loc, OPT_Wattributes, "only attribute %<fallthrough%>"
! 			  " can be applied to a null statement");
  	    break;
  	  }
  	default:
--- 6747,6759 ----
  			      "%<fallthrough%> attribute not followed "
  			      "by %<;%>");
  	      }
+ 	    else if (has_assume)
+ 	      /* Eat the ';'.  */
+ 	      c_parser_consume_token (parser);
  	    else if (attrs != NULL_TREE)
! 	      warning_at (loc, OPT_Wattributes,
! 			  "only attribute %<fallthrough%> or %<assume%> can "
! 			  "be applied to a null statement");
  	    break;
  	  }
  	default:
*************** c_parser_string_literal (c_parser *parse
*** 7439,7445 ****
  	default:
  	case CPP_STRING:
  	case CPP_UTF8STRING:
! 	  value = build_string (1, "");
  	  break;
  	case CPP_STRING16:
  	  value = build_string (TYPE_PRECISION (char16_type_node)
--- 7957,7970 ----
  	default:
  	case CPP_STRING:
  	case CPP_UTF8STRING:
! 	  if (type == CPP_UTF8STRING && flag_char8_t)
! 	    {
! 	      value = build_string (TYPE_PRECISION (char8_type_node)
! 				    / TYPE_PRECISION (char_type_node),
! 				    "");  /* char8_t is 8 bits */
! 	    }
! 	  else
! 	    value = build_string (1, "");
  	  break;
  	case CPP_STRING16:
  	  value = build_string (TYPE_PRECISION (char16_type_node)
*************** c_parser_string_literal (c_parser *parse
*** 7464,7472 ****
      {
      default:
      case CPP_STRING:
-     case CPP_UTF8STRING:
        TREE_TYPE (value) = char_array_type_node;
        break;
      case CPP_STRING16:
        TREE_TYPE (value) = char16_array_type_node;
        break;
--- 7989,8002 ----
      {
      default:
      case CPP_STRING:
        TREE_TYPE (value) = char_array_type_node;
        break;
+     case CPP_UTF8STRING:
+       if (flag_char8_t)
+ 	TREE_TYPE (value) = char8_array_type_node;
+       else
+ 	TREE_TYPE (value) = char_array_type_node;
+       break;
      case CPP_STRING16:
        TREE_TYPE (value) = char16_array_type_node;
        break;
*************** c_parser_string_literal (c_parser *parse
*** 7488,7493 ****
--- 8018,8024 ----
    ret.original_code = STRING_CST;
    ret.original_type = NULL_TREE;
    set_c_expr_source_range (&ret, get_range_from_loc (line_table, loc));
+   ret.m_decimal = 0;
    parser->seen_string_literal = true;
    return ret;
  }
*************** c_parser_expr_no_commas (c_parser *parse
*** 7567,7572 ****
--- 8098,8104 ----
    ret.value = build_modify_expr (op_location, lhs.value, lhs.original_type,
  				 code, exp_location, rhs.value,
  				 rhs.original_type);
+   ret.m_decimal = 0;
    set_c_expr_source_range (&ret, lhs.get_start (), rhs.get_finish ());
    if (code == NOP_EXPR)
      ret.original_code = MODIFY_EXPR;
*************** c_parser_conditional_expression (c_parse
*** 7669,7675 ****
    c_inhibit_evaluation_warnings -= cond.value == truthvalue_true_node;
    location_t loc1 = make_location (exp1.get_start (), exp1.src_range);
    location_t loc2 = make_location (exp2.get_start (), exp2.src_range);
!   if (__builtin_expect (omp_atomic_lhs != NULL, 0)
        && (TREE_CODE (cond.value) == GT_EXPR
  	  || TREE_CODE (cond.value) == LT_EXPR
  	  || TREE_CODE (cond.value) == EQ_EXPR)
--- 8201,8207 ----
    c_inhibit_evaluation_warnings -= cond.value == truthvalue_true_node;
    location_t loc1 = make_location (exp1.get_start (), exp1.src_range);
    location_t loc2 = make_location (exp2.get_start (), exp2.src_range);
!   if (UNLIKELY (omp_atomic_lhs != NULL)
        && (TREE_CODE (cond.value) == GT_EXPR
  	  || TREE_CODE (cond.value) == LT_EXPR
  	  || TREE_CODE (cond.value) == EQ_EXPR)
*************** c_parser_conditional_expression (c_parse
*** 7704,7709 ****
--- 8236,8242 ----
  			   : NULL);
      }
    set_c_expr_source_range (&ret, start, exp2.get_finish ());
+   ret.m_decimal = 0;
    return ret;
  }
  
*************** c_parser_binary_expression (c_parser *pa
*** 7865,7871 ****
      stack[sp].expr							      \
        = convert_lvalue_to_rvalue (stack[sp].loc,			      \
  				  stack[sp].expr, true, true);		      \
!     if (__builtin_expect (omp_atomic_lhs != NULL_TREE, 0) && sp == 1	      \
  	&& ((c_parser_next_token_is (parser, CPP_SEMICOLON)		      \
  	     && ((1 << stack[sp].prec)					      \
  		 & ((1 << PREC_BITOR) | (1 << PREC_BITXOR)		      \
--- 8398,8404 ----
      stack[sp].expr							      \
        = convert_lvalue_to_rvalue (stack[sp].loc,			      \
  				  stack[sp].expr, true, true);		      \
!     if (UNLIKELY (omp_atomic_lhs != NULL_TREE) && sp == 1		      \
  	&& ((c_parser_next_token_is (parser, CPP_SEMICOLON)		      \
  	     && ((1 << stack[sp].prec)					      \
  		 & ((1 << PREC_BITOR) | (1 << PREC_BITXOR)		      \
*************** c_parser_binary_expression (c_parser *pa
*** 7893,7898 ****
--- 8426,8432 ----
  	TREE_OPERAND (t, 0) = stack[0].expr.value;			      \
  	TREE_OPERAND (t, 1) = stack[1].expr.value;			      \
  	stack[0].expr.value = t;					      \
+ 	stack[0].expr.m_decimal = 0;					      \
        }									      \
      else								      \
        stack[sp - 1].expr = parser_build_binary_op (stack[sp].loc,	      \
*************** c_parser_binary_expression (c_parser *pa
*** 8038,8043 ****
--- 8572,8606 ----
  #undef POP
  }
  
+ /* Parse any storage class specifiers after an open parenthesis in a
+    context where a compound literal is permitted.  */
+ 
+ static struct c_declspecs *
+ c_parser_compound_literal_scspecs (c_parser *parser)
+ {
+   bool seen_scspec = false;
+   struct c_declspecs *specs = build_null_declspecs ();
+   while (c_parser_next_token_is (parser, CPP_KEYWORD))
+     {
+       switch (c_parser_peek_token (parser)->keyword)
+ 	{
+ 	case RID_CONSTEXPR:
+ 	case RID_REGISTER:
+ 	case RID_STATIC:
+ 	case RID_THREAD:
+ 	  seen_scspec = true;
+ 	  declspecs_add_scspec (c_parser_peek_token (parser)->location,
+ 				specs, c_parser_peek_token (parser)->value);
+ 	  c_parser_consume_token (parser);
+ 	  break;
+ 	default:
+ 	  goto out;
+ 	}
+     }
+  out:
+   return seen_scspec ? specs : NULL;
+ }
+ 
  /* Parse a cast expression (C90 6.3.4, C99 6.5.4, C11 6.5.4).  If AFTER
     is not NULL then it is an Objective-C message expression which is the
     primary-expression starting the expression as an initializer.
*************** c_parser_cast_expression (c_parser *pars
*** 8061,8073 ****
       an unary expression.  Full detection of unknown typenames here
       would require a 3-token lookahead.  */
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
!       && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
      {
        struct c_type_name *type_name;
        struct c_expr ret;
        struct c_expr expr;
        matching_parens parens;
        parens.consume_open (parser);
        type_name = c_parser_type_name (parser, true);
        parens.skip_until_found_close (parser);
        if (type_name == NULL)
--- 8624,8638 ----
       an unary expression.  Full detection of unknown typenames here
       would require a 3-token lookahead.  */
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
!       && c_token_starts_compound_literal (c_parser_peek_2nd_token (parser)))
      {
+       struct c_declspecs *scspecs;
        struct c_type_name *type_name;
        struct c_expr ret;
        struct c_expr expr;
        matching_parens parens;
        parens.consume_open (parser);
+       scspecs = c_parser_compound_literal_scspecs (parser);
        type_name = c_parser_type_name (parser, true);
        parens.skip_until_found_close (parser);
        if (type_name == NULL)
*************** c_parser_cast_expression (c_parser *pars
*** 8082,8089 ****
        used_types_insert (type_name->specs->type);
  
        if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
! 	return c_parser_postfix_expression_after_paren_type (parser, type_name,
  							     cast_loc);
        if (type_name->specs->alignas_p)
  	error_at (type_name->specs->locations[cdw_alignas],
  		  "alignment specified for type name in cast");
--- 8647,8657 ----
        used_types_insert (type_name->specs->type);
  
        if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
! 	return c_parser_postfix_expression_after_paren_type (parser, scspecs,
! 							     type_name,
  							     cast_loc);
+       if (scspecs)
+ 	error_at (cast_loc, "storage class specifier in cast");
        if (type_name->specs->alignas_p)
  	error_at (type_name->specs->locations[cdw_alignas],
  		  "alignment specified for type name in cast");
*************** c_parser_cast_expression (c_parser *pars
*** 8097,8102 ****
--- 8665,8671 ----
  	set_c_expr_source_range (&ret, cast_loc, expr.get_finish ());
        ret.original_code = ERROR_MARK;
        ret.original_type = NULL;
+       ret.m_decimal = 0;
        return ret;
      }
    else
*************** c_parser_unary_expression (c_parser *par
*** 8179,8184 ****
--- 8748,8754 ----
  	ret.value = build_indirect_ref (combined_loc, op.value, RO_UNARY_STAR);
  	ret.src_range.m_start = op_loc;
  	ret.src_range.m_finish = finish;
+ 	ret.m_decimal = 0;
  	return ret;
        }
      case CPP_PLUS:
*************** c_parser_sizeof_expression (c_parser *pa
*** 8284,8297 ****
    c_inhibit_evaluation_warnings++;
    in_sizeof++;
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
!       && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
      {
        /* Either sizeof ( type-name ) or sizeof unary-expression
  	 starting with a compound literal.  */
        struct c_type_name *type_name;
        matching_parens parens;
        parens.consume_open (parser);
        expr_loc = c_parser_peek_token (parser)->location;
        type_name = c_parser_type_name (parser, true);
        parens.skip_until_found_close (parser);
        finish = parser->tokens_buf[0].location;
--- 8854,8869 ----
    c_inhibit_evaluation_warnings++;
    in_sizeof++;
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
!       && c_token_starts_compound_literal (c_parser_peek_2nd_token (parser)))
      {
        /* Either sizeof ( type-name ) or sizeof unary-expression
  	 starting with a compound literal.  */
+       struct c_declspecs *scspecs;
        struct c_type_name *type_name;
        matching_parens parens;
        parens.consume_open (parser);
        expr_loc = c_parser_peek_token (parser)->location;
+       scspecs = c_parser_compound_literal_scspecs (parser);
        type_name = c_parser_type_name (parser, true);
        parens.skip_until_found_close (parser);
        finish = parser->tokens_buf[0].location;
*************** c_parser_sizeof_expression (c_parser *pa
*** 8307,8319 ****
  	}
        if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
  	{
! 	  expr = c_parser_postfix_expression_after_paren_type (parser,
  							       type_name,
  							       expr_loc);
  	  finish = expr.get_finish ();
  	  goto sizeof_expr;
  	}
        /* sizeof ( type-name ).  */
        if (type_name->specs->alignas_p)
  	error_at (type_name->specs->locations[cdw_alignas],
  		  "alignment specified for type name in %<sizeof%>");
--- 8879,8893 ----
  	}
        if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
  	{
! 	  expr = c_parser_postfix_expression_after_paren_type (parser, scspecs,
  							       type_name,
  							       expr_loc);
  	  finish = expr.get_finish ();
  	  goto sizeof_expr;
  	}
        /* sizeof ( type-name ).  */
+       if (scspecs)
+ 	error_at (expr_loc, "storage class specifier in %<sizeof%>");
        if (type_name->specs->alignas_p)
  	error_at (type_name->specs->locations[cdw_alignas],
  		  "alignment specified for type name in %<sizeof%>");
*************** c_parser_alignof_expression (c_parser *p
*** 8351,8360 ****
    location_t end_loc;
    tree alignof_spelling = c_parser_peek_token (parser)->value;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_ALIGNOF));
!   bool is_c11_alignof = strcmp (IDENTIFIER_POINTER (alignof_spelling),
! 				"_Alignof") == 0;
    /* A diagnostic is not required for the use of this identifier in
!      the implementation namespace; only diagnose it for the C11
       spelling because of existing code using the other spellings.  */
    if (is_c11_alignof)
      {
--- 8925,8936 ----
    location_t end_loc;
    tree alignof_spelling = c_parser_peek_token (parser)->value;
    gcc_assert (c_parser_next_token_is_keyword (parser, RID_ALIGNOF));
!   bool is_c11_alignof = (strcmp (IDENTIFIER_POINTER (alignof_spelling),
! 				"_Alignof") == 0
! 			 || strcmp (IDENTIFIER_POINTER (alignof_spelling),
! 				    "alignof") == 0);
    /* A diagnostic is not required for the use of this identifier in
!      the implementation namespace; only diagnose it for the C11 or C2X
       spelling because of existing code using the other spellings.  */
    if (is_c11_alignof)
      {
*************** c_parser_alignof_expression (c_parser *p
*** 8369,8384 ****
    c_inhibit_evaluation_warnings++;
    in_alignof++;
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
!       && c_token_starts_typename (c_parser_peek_2nd_token (parser)))
      {
        /* Either __alignof__ ( type-name ) or __alignof__
  	 unary-expression starting with a compound literal.  */
        location_t loc;
        struct c_type_name *type_name;
        struct c_expr ret;
        matching_parens parens;
        parens.consume_open (parser);
        loc = c_parser_peek_token (parser)->location;
        type_name = c_parser_type_name (parser, true);
        end_loc = c_parser_peek_token (parser)->location;
        parens.skip_until_found_close (parser);
--- 8945,8962 ----
    c_inhibit_evaluation_warnings++;
    in_alignof++;
    if (c_parser_next_token_is (parser, CPP_OPEN_PAREN)
!       && c_token_starts_compound_literal (c_parser_peek_2nd_token (parser)))
      {
        /* Either __alignof__ ( type-name ) or __alignof__
  	 unary-expression starting with a compound literal.  */
        location_t loc;
+       struct c_declspecs *scspecs;
        struct c_type_name *type_name;
        struct c_expr ret;
        matching_parens parens;
        parens.consume_open (parser);
        loc = c_parser_peek_token (parser)->location;
+       scspecs = c_parser_compound_literal_scspecs (parser);
        type_name = c_parser_type_name (parser, true);
        end_loc = c_parser_peek_token (parser)->location;
        parens.skip_until_found_close (parser);
*************** c_parser_alignof_expression (c_parser *p
*** 8394,8405 ****
  	}
        if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
  	{
! 	  expr = c_parser_postfix_expression_after_paren_type (parser,
  							       type_name,
  							       loc);
  	  goto alignof_expr;
  	}
        /* alignof ( type-name ).  */
        if (type_name->specs->alignas_p)
  	error_at (type_name->specs->locations[cdw_alignas],
  		  "alignment specified for type name in %qE",
--- 8972,8985 ----
  	}
        if (c_parser_next_token_is (parser, CPP_OPEN_BRACE))
  	{
! 	  expr = c_parser_postfix_expression_after_paren_type (parser, scspecs,
  							       type_name,
  							       loc);
  	  goto alignof_expr;
  	}
        /* alignof ( type-name ).  */
+       if (scspecs)
+ 	error_at (loc, "storage class specifier in %qE", alignof_spelling);
        if (type_name->specs->alignas_p)
  	error_at (type_name->specs->locations[cdw_alignas],
  		  "alignment specified for type name in %qE",
*************** c_parser_alignof_expression (c_parser *p
*** 8412,8417 ****
--- 8992,8998 ----
        ret.original_code = ERROR_MARK;
        ret.original_type = NULL;
        set_c_expr_source_range (&ret, start_loc, end_loc);
+       ret.m_decimal = 0;
        return ret;
      }
    else
*************** c_parser_alignof_expression (c_parser *p
*** 8431,8436 ****
--- 9012,9018 ----
        ret.original_code = ERROR_MARK;
        ret.original_type = NULL;
        set_c_expr_source_range (&ret, start_loc, end_loc);
+       ret.m_decimal = 0;
        return ret;
      }
  }
*************** c_parser_has_attribute_expression (c_par
*** 8475,8481 ****
        if (tname)
  	{
  	  oper = groktypename (tname, NULL, NULL);
! 	  pop_maybe_used (variably_modified_type_p (oper, NULL_TREE));
  	}
      }
    else
--- 9057,9063 ----
        if (tname)
  	{
  	  oper = groktypename (tname, NULL, NULL);
! 	  pop_maybe_used (c_type_variably_modified_p (oper));
  	}
      }
    else
*************** c_parser_has_attribute_expression (c_par
*** 8488,8494 ****
  	  mark_exp_read (cexpr.value);
  	  oper = cexpr.value;
  	  tree etype = TREE_TYPE (oper);
! 	  bool was_vm = variably_modified_type_p (etype, NULL_TREE);
  	  /* This is returned with the type so that when the type is
  	     evaluated, this can be evaluated.  */
  	  if (was_vm)
--- 9070,9076 ----
  	  mark_exp_read (cexpr.value);
  	  oper = cexpr.value;
  	  tree etype = TREE_TYPE (oper);
! 	  bool was_vm = c_type_variably_modified_p (etype);
  	  /* This is returned with the type so that when the type is
  	     evaluated, this can be evaluated.  */
  	  if (was_vm)
*************** c_parser_has_attribute_expression (c_par
*** 8552,8557 ****
--- 9134,9140 ----
      result.value =  boolean_false_node;
  
    set_c_expr_source_range (&result, start, finish);
+   result.m_decimal = 0;
    return result;
  }
  
*************** c_parser_generic_selection (c_parser *pa
*** 8736,8742 ****
  	    error_at (assoc.type_location,
  		      "%<_Generic%> association has incomplete type");
  
! 	  if (variably_modified_type_p (assoc.type, NULL_TREE))
  	    error_at (assoc.type_location,
  		      "%<_Generic%> association has "
  		      "variable length type");
--- 9319,9325 ----
  	    error_at (assoc.type_location,
  		      "%<_Generic%> association has incomplete type");
  
! 	  if (c_type_variably_modified_p (assoc.type))
  	    error_at (assoc.type_location,
  		      "%<_Generic%> association has "
  		      "variable length type");
*************** c_parser_predefined_identifier (c_parser
*** 8917,8922 ****
--- 9500,9506 ----
    expr.value = fname_decl (loc, c_parser_peek_token (parser)->keyword,
  			   c_parser_peek_token (parser)->value);
    set_c_expr_source_range (&expr, loc, loc);
+   expr.m_decimal = 0;
    c_parser_consume_token (parser);
    return expr;
  }
*************** c_parser_predefined_identifier (c_parser
*** 8933,8940 ****
       postfix-expression -> identifier
       postfix-expression ++
       postfix-expression --
!      ( type-name ) { initializer-list }
!      ( type-name ) { initializer-list , }
  
     argument-expression-list:
       argument-expression
--- 9517,9524 ----
       postfix-expression -> identifier
       postfix-expression ++
       postfix-expression --
!      ( storage-class-specifiers[opt] type-name ) { initializer-list[opt] }
!      ( storage-class-specifiers[opt] type-name ) { initializer-list , }
  
     argument-expression-list:
       argument-expression
*************** c_parser_postfix_expression (c_parser *p
*** 8995,9006 ****
--- 9579,9592 ----
    source_range tok_range = c_parser_peek_token (parser)->get_range ();
    expr.original_code = ERROR_MARK;
    expr.original_type = NULL;
+   expr.m_decimal = 0;
    switch (c_parser_peek_token (parser)->type)
      {
      case CPP_NUMBER:
        expr.value = c_parser_peek_token (parser)->value;
        set_c_expr_source_range (&expr, tok_range);
        loc = c_parser_peek_token (parser)->location;
+       expr.m_decimal = c_parser_peek_token (parser)->flags & DECIMAL_INT;
        c_parser_consume_token (parser);
        if (TREE_CODE (expr.value) == FIXED_CST
  	  && !targetm.fixed_point_supported_p ())
*************** c_parser_postfix_expression (c_parser *p
*** 9227,9234 ****
  	    if (c_parser_next_token_is (parser, CPP_NAME))
  	      {
  		c_token *comp_tok = c_parser_peek_token (parser);
! 		offsetof_ref = build_component_ref
! 		  (loc, offsetof_ref, comp_tok->value, comp_tok->location);
  		c_parser_consume_token (parser);
  		while (c_parser_next_token_is (parser, CPP_DOT)
  		       || c_parser_next_token_is (parser,
--- 9813,9821 ----
  	    if (c_parser_next_token_is (parser, CPP_NAME))
  	      {
  		c_token *comp_tok = c_parser_peek_token (parser);
! 		offsetof_ref
! 		  = build_component_ref (loc, offsetof_ref, comp_tok->value,
! 					 comp_tok->location, UNKNOWN_LOCATION);
  		c_parser_consume_token (parser);
  		while (c_parser_next_token_is (parser, CPP_DOT)
  		       || c_parser_next_token_is (parser,
*************** c_parser_postfix_expression (c_parser *p
*** 9255,9263 ****
  			    break;
  			  }
  			c_token *comp_tok = c_parser_peek_token (parser);
! 			offsetof_ref = build_component_ref
! 			  (loc, offsetof_ref, comp_tok->value,
! 			   comp_tok->location);
  			c_parser_consume_token (parser);
  		      }
  		    else
--- 9842,9852 ----
  			    break;
  			  }
  			c_token *comp_tok = c_parser_peek_token (parser);
! 			offsetof_ref
! 			  = build_component_ref (loc, offsetof_ref,
! 						 comp_tok->value,
! 						 comp_tok->location,
! 						 UNKNOWN_LOCATION);
  			c_parser_consume_token (parser);
  		      }
  		    else
*************** c_parser_postfix_expression (c_parser *p
*** 9678,9693 ****
  	       types are treated as _Decimal64 if any type-generic
  	       argument is decimal, or if the only alternatives for
  	       type-generic arguments are of decimal types, and are
! 	       otherwise treated as double (or _Complex double for
! 	       complex integer types, or _Float64 or _Complex _Float64
! 	       if all the return types are the same _FloatN or
! 	       _FloatNx type).  After that adjustment, types are
! 	       combined following the usual arithmetic conversions.
! 	       If the function only accepts complex arguments, a
! 	       complex type is produced.  */
  	    bool arg_complex = all_complex;
  	    bool arg_binary = all_binary;
  	    bool arg_int_decimal = all_decimal;
  	    for (unsigned int j = 1; j <= nargs; j++)
  	      {
  		if (parm_kind[j] == tgmath_fixed)
--- 10267,10283 ----
  	       types are treated as _Decimal64 if any type-generic
  	       argument is decimal, or if the only alternatives for
  	       type-generic arguments are of decimal types, and are
! 	       otherwise treated as _Float32x (or _Complex _Float32x
! 	       for complex integer types) if any type-generic argument
! 	       has _FloatNx type, otherwise as double (or _Complex
! 	       double for complex integer types).  After that
! 	       adjustment, types are combined following the usual
! 	       arithmetic conversions.  If the function only accepts
! 	       complex arguments, a complex type is produced.  */
  	    bool arg_complex = all_complex;
  	    bool arg_binary = all_binary;
  	    bool arg_int_decimal = all_decimal;
+ 	    bool arg_int_floatnx = false;
  	    for (unsigned int j = 1; j <= nargs; j++)
  	      {
  		if (parm_kind[j] == tgmath_fixed)
*************** c_parser_postfix_expression (c_parser *p
*** 9782,9801 ****
  			goto out;
  		      }
  		  }
  	      }
- 	    /* For a macro rounding its result to a narrower type, map
- 	       integer types to _Float64 not double if the return type
- 	       is a _FloatN or _FloatNx type.  */
- 	    bool arg_int_float64 = false;
- 	    if (parm_kind[0] == tgmath_fixed
- 		&& SCALAR_FLOAT_TYPE_P (parm_first[0])
- 		&& float64_type_node != NULL_TREE)
- 	      for (unsigned int j = 0; j < NUM_FLOATN_NX_TYPES; j++)
- 		if (parm_first[0] == FLOATN_TYPE_NODE (j))
- 		  {
- 		    arg_int_float64 = true;
- 		    break;
- 		  }
  	    tree arg_real = NULL_TREE;
  	    for (unsigned int j = 1; j <= nargs; j++)
  	      {
--- 10372,10388 ----
  			goto out;
  		      }
  		  }
+ 		tree rtype = TYPE_MAIN_VARIANT (type);
+ 		if (TREE_CODE (rtype) == COMPLEX_TYPE)
+ 		  rtype = TREE_TYPE (rtype);
+ 		if (SCALAR_FLOAT_TYPE_P (rtype))
+ 		  for (unsigned int j = 0; j < NUM_FLOATNX_TYPES; j++)
+ 		    if (rtype == FLOATNX_TYPE_NODE (j))
+ 		      {
+ 			arg_int_floatnx = true;
+ 			break;
+ 		      }
  	      }
  	    tree arg_real = NULL_TREE;
  	    for (unsigned int j = 1; j <= nargs; j++)
  	      {
*************** c_parser_postfix_expression (c_parser *p
*** 9808,9815 ****
  		if (INTEGRAL_TYPE_P (type))
  		  type = (arg_int_decimal
  			  ? dfloat64_type_node
! 			  : arg_int_float64
! 			  ? float64_type_node
  			  : double_type_node);
  		if (arg_real == NULL_TREE)
  		  arg_real = type;
--- 10395,10402 ----
  		if (INTEGRAL_TYPE_P (type))
  		  type = (arg_int_decimal
  			  ? dfloat64_type_node
! 			  : arg_int_floatnx
! 			  ? float32x_type_node
  			  : double_type_node);
  		if (arg_real == NULL_TREE)
  		  arg_real = type;
*************** c_parser_postfix_expression (c_parser *p
*** 10202,10207 ****
--- 10789,10819 ----
  	case RID_GENERIC:
  	  expr = c_parser_generic_selection (parser);
  	  break;
+ 	case RID_OMP_ALL_MEMORY:
+ 	  gcc_assert (flag_openmp);
+ 	  c_parser_consume_token (parser);
+ 	  error_at (loc, "%<omp_all_memory%> may only be used in OpenMP "
+ 			 "%<depend%> clause");
+ 	  expr.set_error ();
+ 	  break;
+ 	/* C23 'nullptr' literal.  */
+ 	case RID_NULLPTR:
+ 	  c_parser_consume_token (parser);
+ 	  expr.value = nullptr_node;
+ 	  set_c_expr_source_range (&expr, tok_range);
+ 	  pedwarn_c11 (loc, OPT_Wpedantic,
+ 		       "ISO C does not support %qs before C2X", "nullptr");
+ 	  break;
+ 	case RID_TRUE:
+ 	  c_parser_consume_token (parser);
+ 	  expr.value = boolean_true_node;
+ 	  set_c_expr_source_range (&expr, tok_range);
+ 	  break;
+ 	case RID_FALSE:
+ 	  c_parser_consume_token (parser);
+ 	  expr.value = boolean_false_node;
+ 	  set_c_expr_source_range (&expr, tok_range);
+ 	  break;
  	default:
  	  c_parser_error (parser, "expected expression");
  	  expr.set_error ();
*************** c_parser_postfix_expression (c_parser *p
*** 10246,10251 ****
--- 10858,10864 ----
  
  static struct c_expr
  c_parser_postfix_expression_after_paren_type (c_parser *parser,
+ 					      struct c_declspecs *scspecs,
  					      struct c_type_name *type_name,
  					      location_t type_loc)
  {
*************** c_parser_postfix_expression_after_paren_
*** 10256,10272 ****
    location_t start_loc;
    tree type_expr = NULL_TREE;
    bool type_expr_const = true;
    check_compound_literal_type (type_loc, type_name);
    rich_location richloc (line_table, type_loc);
-   start_init (NULL_TREE, NULL, 0, &richloc);
-   type = groktypename (type_name, &type_expr, &type_expr_const);
    start_loc = c_parser_peek_token (parser)->location;
    if (type != error_mark_node && C_TYPE_VARIABLE_SIZE (type))
      {
        error_at (type_loc, "compound literal has variable size");
        type = error_mark_node;
      }
!   init = c_parser_braced_init (parser, type, false, NULL);
    finish_init ();
    maybe_warn_string_init (type_loc, type, init);
  
--- 10869,10944 ----
    location_t start_loc;
    tree type_expr = NULL_TREE;
    bool type_expr_const = true;
+   bool constexpr_p = scspecs ? scspecs->constexpr_p : false;
+   unsigned int underspec_state = 0;
    check_compound_literal_type (type_loc, type_name);
    rich_location richloc (line_table, type_loc);
    start_loc = c_parser_peek_token (parser)->location;
+   if (constexpr_p)
+     {
+       underspec_state = start_underspecified_init (start_loc, NULL_TREE);
+       /* A constexpr compound literal is subject to the constraints on
+ 	 underspecified declarations, which may not declare tags or
+ 	 members or structures or unions; it is undefined behavior to
+ 	 declare the members of an enumeration.  Where the structure,
+ 	 union or enumeration type is declared within the compound
+ 	 literal initializer, this is diagnosed elsewhere as a result
+ 	 of the above call to start_underspecified_init.  Diagnose
+ 	 here the case of declaring such a type in the type specifiers
+ 	 of the compound literal.  */
+       switch (type_name->specs->typespec_kind)
+ 	{
+ 	case ctsk_tagfirstref:
+ 	case ctsk_tagfirstref_attrs:
+ 	  error_at (type_loc, "%qT declared in %<constexpr%> compound literal",
+ 		    type_name->specs->type);
+ 	  break;
+ 
+ 	case ctsk_tagdef:
+ 	  error_at (type_loc, "%qT defined in %<constexpr%> compound literal",
+ 		    type_name->specs->type);
+ 	  break;
+ 
+ 	default:
+ 	  break;
+ 	}
+     }
+   start_init (NULL_TREE, NULL,
+ 	      (global_bindings_p ()
+ 	       || (scspecs && scspecs->storage_class == csc_static)
+ 	       || constexpr_p), constexpr_p, &richloc);
+   type = groktypename (type_name, &type_expr, &type_expr_const);
    if (type != error_mark_node && C_TYPE_VARIABLE_SIZE (type))
      {
        error_at (type_loc, "compound literal has variable size");
        type = error_mark_node;
      }
!   else if (TREE_CODE (type) == FUNCTION_TYPE)
!     {
!       error_at (type_loc, "compound literal has function type");
!       type = error_mark_node;
!     }
!   if (constexpr_p && type != error_mark_node)
!     {
!       tree type_no_array = strip_array_types (type);
!       /* The type of a constexpr object must not be variably modified
! 	 (which applies to all compound literals), volatile, atomic or
! 	 restrict qualified or have a member with such a qualifier.
! 	 const qualification is implicitly added.  */
!       if (TYPE_QUALS (type_no_array)
! 	  & (TYPE_QUAL_VOLATILE | TYPE_QUAL_RESTRICT | TYPE_QUAL_ATOMIC))
! 	error_at (type_loc, "invalid qualifiers for %<constexpr%> object");
!       else if (RECORD_OR_UNION_TYPE_P (type_no_array)
! 	       && C_TYPE_FIELDS_NON_CONSTEXPR (type_no_array))
! 	error_at (type_loc, "invalid qualifiers for field of "
! 		  "%<constexpr%> object");
!       type = c_build_qualified_type (type,
! 				     (TYPE_QUALS (type_no_array)
! 				      | TYPE_QUAL_CONST));
!     }
!   init = c_parser_braced_init (parser, type, false, NULL, NULL_TREE);
!   if (constexpr_p)
!     finish_underspecified_init (NULL_TREE, underspec_state);
    finish_init ();
    maybe_warn_string_init (type_loc, type, init);
  
*************** c_parser_postfix_expression_after_paren_
*** 10278,10284 ****
        type = error_mark_node;
      }
  
!   pedwarn_c90 (start_loc, OPT_Wpedantic, "ISO C90 forbids compound literals");
    non_const = ((init.value && TREE_CODE (init.value) == CONSTRUCTOR)
  	       ? CONSTRUCTOR_NON_CONST (init.value)
  	       : init.original_code == C_MAYBE_CONST_EXPR);
--- 10950,10960 ----
        type = error_mark_node;
      }
  
!   if (!pedwarn_c90 (start_loc, OPT_Wpedantic,
! 		    "ISO C90 forbids compound literals") && scspecs)
!     pedwarn_c11 (start_loc, OPT_Wpedantic,
! 		 "ISO C forbids storage class specifiers in compound literals "
! 		 "before C2X");
    non_const = ((init.value && TREE_CODE (init.value) == CONSTRUCTOR)
  	       ? CONSTRUCTOR_NON_CONST (init.value)
  	       : init.original_code == C_MAYBE_CONST_EXPR);
*************** c_parser_postfix_expression_after_paren_
*** 10297,10304 ****
  	}
      }
    expr.value = build_compound_literal (start_loc, type, init.value, non_const,
! 				       alignas_align);
    set_c_expr_source_range (&expr, init.src_range);
    expr.original_code = ERROR_MARK;
    expr.original_type = NULL;
    if (type != error_mark_node
--- 10973,10981 ----
  	}
      }
    expr.value = build_compound_literal (start_loc, type, init.value, non_const,
! 				       alignas_align, scspecs);
    set_c_expr_source_range (&expr, init.src_range);
+   expr.m_decimal = 0;
    expr.original_code = ERROR_MARK;
    expr.original_type = NULL;
    if (type != error_mark_node
*************** c_parser_postfix_expression_after_primar
*** 10513,10518 ****
--- 11190,11196 ----
  	  set_c_expr_source_range (&expr, start, finish);
  	  expr.original_code = ERROR_MARK;
  	  expr.original_type = NULL;
+ 	  expr.m_decimal = 0;
  	  break;
  	case CPP_OPEN_PAREN:
  	  /* Function call.  */
*************** c_parser_postfix_expression_after_primar
*** 10561,10566 ****
--- 11239,11245 ----
  	    = c_build_function_call_vec (expr_loc, arg_loc, expr.value,
  					 exprlist, origtypes);
  	  set_c_expr_source_range (&expr, start, finish);
+ 	  expr.m_decimal = 0;
  
  	  expr.original_code = ERROR_MARK;
  	  if (TREE_CODE (expr.value) == INTEGER_CST
*************** c_parser_postfix_expression_after_primar
*** 10597,10603 ****
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
  	  expr.value = build_component_ref (op_loc, expr.value, ident,
! 					    comp_loc);
  	  set_c_expr_source_range (&expr, start, finish);
  	  expr.original_code = ERROR_MARK;
  	  if (TREE_CODE (expr.value) != COMPONENT_REF)
--- 11276,11282 ----
  	  finish = c_parser_peek_token (parser)->get_finish ();
  	  c_parser_consume_token (parser);
  	  expr.value = build_component_ref (op_loc, expr.value, ident,
! 					    comp_loc, UNKNOWN_LOCATION);
  	  set_c_expr_source_range (&expr, start, finish);
  	  expr.original_code = ERROR_MARK;
  	  if (TREE_CODE (expr.value) != COMPONENT_REF)
*************** c_parser_postfix_expression_after_primar
*** 10611,10616 ****
--- 11290,11296 ----
  	      else
  		expr.original_type = DECL_BIT_FIELD_TYPE (field);
  	    }
+ 	  expr.m_decimal = 0;
  	  break;
  	case CPP_DEREF:
  	  /* Structure element reference.  */
*************** c_parser_postfix_expression_after_primar
*** 10637,10643 ****
  					    build_indirect_ref (op_loc,
  								expr.value,
  								RO_ARROW),
! 					    ident, comp_loc);
  	  set_c_expr_source_range (&expr, start, finish);
  	  expr.original_code = ERROR_MARK;
  	  if (TREE_CODE (expr.value) != COMPONENT_REF)
--- 11317,11324 ----
  					    build_indirect_ref (op_loc,
  								expr.value,
  								RO_ARROW),
! 					    ident, comp_loc,
! 					    expr.get_location ());
  	  set_c_expr_source_range (&expr, start, finish);
  	  expr.original_code = ERROR_MARK;
  	  if (TREE_CODE (expr.value) != COMPONENT_REF)
*************** c_parser_postfix_expression_after_primar
*** 10651,10656 ****
--- 11332,11338 ----
  	      else
  		expr.original_type = DECL_BIT_FIELD_TYPE (field);
  	    }
+ 	  expr.m_decimal = 0;
  	  break;
  	case CPP_PLUS_PLUS:
  	  /* Postincrement.  */
*************** c_parser_expression (c_parser *parser)
*** 10721,10726 ****
--- 11403,11409 ----
        expr.value = build_compound_expr (loc, expr.value, next.value);
        expr.original_code = COMPOUND_EXPR;
        expr.original_type = next.original_type;
+       expr.m_decimal = 0;
      }
    return expr;
  }
*************** c_parser_objc_synchronized_statement (c_
*** 11756,11762 ****
       identifier
       one of
         enum struct union if else while do for switch case default
!        break continue return goto asm sizeof typeof __alignof
         unsigned long const short volatile signed restrict _Complex
         in out inout bycopy byref oneway int char float double void _Bool
         _Atomic
--- 12439,12445 ----
       identifier
       one of
         enum struct union if else while do for switch case default
!        break continue return goto asm sizeof typeof typeof_unqual __alignof
         unsigned long const short volatile signed restrict _Complex
         in out inout bycopy byref oneway int char float double void _Bool
         _Atomic
*************** c_parser_objc_selector (c_parser *parser
*** 11796,11801 ****
--- 12479,12485 ----
      case RID_ASM:
      case RID_SIZEOF:
      case RID_TYPEOF:
+     case RID_TYPEOF_UNQUAL:
      case RID_ALIGNOF:
      case RID_UNSIGNED:
      case RID_LONG:
*************** c_parser_pragma (c_parser *parser, enum
*** 12499,12506 ****
      case PRAGMA_OMP_TARGET:
        return c_parser_omp_target (parser, context, if_p);
  
!     case PRAGMA_OMP_END_DECLARE_TARGET:
!       c_parser_omp_end_declare_target (parser);
        return false;
  
      case PRAGMA_OMP_SCAN:
--- 13183,13194 ----
      case PRAGMA_OMP_TARGET:
        return c_parser_omp_target (parser, context, if_p);
  
!     case PRAGMA_OMP_BEGIN:
!       c_parser_omp_begin (parser);
!       return false;
! 
!     case PRAGMA_OMP_END:
!       c_parser_omp_end (parser);
        return false;
  
      case PRAGMA_OMP_SCAN:
*************** c_parser_pragma (c_parser *parser, enum
*** 12524,12536 ****
        if (context != pragma_external)
  	{
  	  error_at (c_parser_peek_token (parser)->location,
! 		    "%<#pragma omp requires%> may only be used at file scope");
  	  c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL);
  	  return false;
  	}
        c_parser_omp_requires (parser);
        return false;
  
      case PRAGMA_OMP_NOTHING:
        c_parser_omp_nothing (parser);
        return false;
--- 13212,13237 ----
        if (context != pragma_external)
  	{
  	  error_at (c_parser_peek_token (parser)->location,
! 		    "%<#pragma %s%> may only be used at file scope",
! 		    "omp requires");
  	  c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL);
  	  return false;
  	}
        c_parser_omp_requires (parser);
        return false;
  
+     case PRAGMA_OMP_ASSUMES:
+       if (context != pragma_external)
+ 	{
+ 	  error_at (c_parser_peek_token (parser)->location,
+ 		    "%<#pragma %s%> may only be used at file scope",
+ 		    "omp assumes");
+ 	  c_parser_skip_until_found (parser, CPP_PRAGMA_EOL, NULL);
+ 	  return false;
+ 	}
+       c_parser_omp_assumes (parser);
+       return false;
+ 
      case PRAGMA_OMP_NOTHING:
        c_parser_omp_nothing (parser);
        return false;
*************** c_parser_omp_clause_name (c_parser *pars
*** 12752,12757 ****
--- 13453,13464 ----
  	    result = PRAGMA_OMP_CLAUSE_DEVICE_TYPE;
  	  else if (!strcmp ("dist_schedule", p))
  	    result = PRAGMA_OMP_CLAUSE_DIST_SCHEDULE;
+ 	  else if (!strcmp ("doacross", p))
+ 	    result = PRAGMA_OMP_CLAUSE_DOACROSS;
+ 	  break;
+ 	case 'e':
+ 	  if (!strcmp ("enter", p))
+ 	    result = PRAGMA_OMP_CLAUSE_ENTER;
  	  break;
  	case 'f':
  	  if (!strcmp ("filter", p))
*************** c_parser_omp_variable_list (c_parser *pa
*** 13026,13032 ****
  	  if (c_parser_next_token_is_not (parser, CPP_NAME)
  	      || c_parser_peek_token (parser)->id_kind != C_ID_ID)
  	    {
! 	      struct c_expr expr = c_parser_expr_no_commas (parser, NULL);
  	      if (expr.value != error_mark_node)
  		{
  		  tree u = build_omp_clause (clause_loc, kind);
--- 13733,13751 ----
  	  if (c_parser_next_token_is_not (parser, CPP_NAME)
  	      || c_parser_peek_token (parser)->id_kind != C_ID_ID)
  	    {
! 	      struct c_expr expr;
! 	      if (kind == OMP_CLAUSE_DEPEND
! 		  && c_parser_next_token_is_keyword (parser,
! 						     RID_OMP_ALL_MEMORY)
! 		  && (c_parser_peek_2nd_token (parser)->type == CPP_COMMA
! 		      || (c_parser_peek_2nd_token (parser)->type
! 			  == CPP_CLOSE_PAREN)))
! 		{
! 		  expr.value = ridpointers[RID_OMP_ALL_MEMORY];
! 		  c_parser_consume_token (parser);
! 		}
! 	      else
! 		expr = c_parser_expr_no_commas (parser, NULL);
  	      if (expr.value != error_mark_node)
  		{
  		  tree u = build_omp_clause (clause_loc, kind);
*************** c_parser_omp_variable_list (c_parser *pa
*** 13145,13150 ****
--- 13864,13870 ----
  			 && c_parser_next_token_is (parser, CPP_DEREF)))
  		{
  		  location_t op_loc = c_parser_peek_token (parser)->location;
+ 		  location_t arrow_loc = UNKNOWN_LOCATION;
  		  if (c_parser_next_token_is (parser, CPP_DEREF))
  		    {
  		      c_expr t_expr;
*************** c_parser_omp_variable_list (c_parser *pa
*** 13152,13160 ****
--- 13872,13882 ----
  		      t_expr.original_code = ERROR_MARK;
  		      t_expr.original_type = NULL;
  		      set_c_expr_source_range (&t_expr, op_loc, op_loc);
+ 		      t_expr.m_decimal = 0;
  		      t_expr = convert_lvalue_to_rvalue (op_loc, t_expr,
  							 true, false);
  		      t = build_indirect_ref (op_loc, t_expr.value, RO_ARROW);
+ 		      arrow_loc = t_expr.get_location ();
  		    }
  		  c_parser_consume_token (parser);
  		  if (!c_parser_next_token_is (parser, CPP_NAME))
*************** c_parser_omp_variable_list (c_parser *pa
*** 13168,13174 ****
  		  tree ident = comp_tok->value;
  		  location_t comp_loc = comp_tok->location;
  		  c_parser_consume_token (parser);
! 		  t = build_component_ref (op_loc, t, ident, comp_loc);
  		}
  	      /* FALLTHROUGH  */
  	    case OMP_CLAUSE_AFFINITY:
--- 13890,13897 ----
  		  tree ident = comp_tok->value;
  		  location_t comp_loc = comp_tok->location;
  		  c_parser_consume_token (parser);
! 		  t = build_component_ref (op_loc, t, ident, comp_loc,
! 					   arrow_loc);
  		}
  	      /* FALLTHROUGH  */
  	    case OMP_CLAUSE_AFFINITY:
*************** c_parser_omp_clause_allocate (c_parser *
*** 15631,15637 ****
  
     OpenMP 4.5:
     linear ( modifier ( variable-list ) )
!    linear ( modifier ( variable-list ) : expression ) */
  
  static tree
  c_parser_omp_clause_linear (c_parser *parser, tree list)
--- 16354,16370 ----
  
     OpenMP 4.5:
     linear ( modifier ( variable-list ) )
!    linear ( modifier ( variable-list ) : expression )
! 
!    modifier:
!      val
! 
!    OpenMP 5.2:
!    linear ( variable-list : modifiers-list )
! 
!    modifiers:
!      val
!      step ( expression )  */
  
  static tree
  c_parser_omp_clause_linear (c_parser *parser, tree list)
*************** c_parser_omp_clause_linear (c_parser *pa
*** 15639,15644 ****
--- 16372,16378 ----
    location_t clause_loc = c_parser_peek_token (parser)->location;
    tree nl, c, step;
    enum omp_clause_linear_kind kind = OMP_CLAUSE_LINEAR_DEFAULT;
+   bool old_linear_modifier = false;
  
    matching_parens parens;
    if (!parens.require_open (parser))
*************** c_parser_omp_clause_linear (c_parser *pa
*** 15654,15659 ****
--- 16388,16394 ----
  	kind = OMP_CLAUSE_LINEAR_DEFAULT;
        if (kind != OMP_CLAUSE_LINEAR_DEFAULT)
  	{
+ 	  old_linear_modifier = true;
  	  c_parser_consume_token (parser);
  	  c_parser_consume_token (parser);
  	}
*************** c_parser_omp_clause_linear (c_parser *pa
*** 15669,15683 ****
      {
        c_parser_consume_token (parser);
        location_t expr_loc = c_parser_peek_token (parser)->location;
!       c_expr expr = c_parser_expr_no_commas (parser, NULL);
!       expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
!       step = expr.value;
!       step = c_fully_fold (step, false, NULL);
!       if (!INTEGRAL_TYPE_P (TREE_TYPE (step)))
  	{
! 	  error_at (clause_loc, "%<linear%> clause step expression must "
! 				"be integral");
! 	  step = integer_one_node;
  	}
  
      }
--- 16404,16498 ----
      {
        c_parser_consume_token (parser);
        location_t expr_loc = c_parser_peek_token (parser)->location;
!       bool has_modifiers = false;
!       if (kind == OMP_CLAUSE_LINEAR_DEFAULT
! 	  && c_parser_next_token_is (parser, CPP_NAME))
  	{
! 	  c_token *tok = c_parser_peek_token (parser);
! 	  const char *p = IDENTIFIER_POINTER (tok->value);
! 	  unsigned int pos = 0;
! 	  if (strcmp ("val", p) == 0)
! 	    pos = 2;
! 	  else if (strcmp ("step", p) == 0
! 		   && c_parser_peek_2nd_token (parser)->type == CPP_OPEN_PAREN)
! 	    {
! 	      pos = 3;
! 	      if (c_parser_check_balanced_raw_token_sequence (parser, &pos)
! 		  && (c_parser_peek_nth_token_raw (parser, pos)->type
! 		      == CPP_CLOSE_PAREN))
! 		++pos;
! 	      else
! 		pos = 0;
! 	    }
! 	  if (pos)
! 	    {
! 	      tok = c_parser_peek_nth_token_raw (parser, pos);
! 	      if (tok->type == CPP_COMMA || tok->type == CPP_CLOSE_PAREN)
! 		has_modifiers = true;
! 	    }
! 	}
!       if (has_modifiers)
! 	{
! 	  step = NULL_TREE;
! 	  while (c_parser_next_token_is (parser, CPP_NAME))
! 	    {
! 	      c_token *tok = c_parser_peek_token (parser);
! 	      const char *p = IDENTIFIER_POINTER (tok->value);
! 	      if (strcmp ("val", p) == 0)
! 		{
! 		  if (kind != OMP_CLAUSE_LINEAR_DEFAULT)
! 		    error_at (tok->location, "multiple linear modifiers");
! 		  kind = OMP_CLAUSE_LINEAR_DEFAULT;
! 		  c_parser_consume_token (parser);
! 		}
! 	      else if (strcmp ("step", p) == 0)
! 		{
! 		  c_parser_consume_token (parser);
! 		  matching_parens parens2;
! 		  if (parens2.require_open (parser))
! 		    {
! 		      if (step)
! 			error_at (tok->location,
! 				  "multiple %<step%> modifiers");
! 		      expr_loc = c_parser_peek_token (parser)->location;
! 		      c_expr expr = c_parser_expr_no_commas (parser, NULL);
! 		      expr = convert_lvalue_to_rvalue (expr_loc, expr, false,
! 						       true);
! 		      step = c_fully_fold (expr.value, false, NULL);
! 		      if (!INTEGRAL_TYPE_P (TREE_TYPE (step)))
! 			{
! 			  error_at (clause_loc, "%<linear%> clause step "
! 						"expression must be integral");
! 			  step = integer_one_node;
! 			}
! 		      parens2.skip_until_found_close (parser);
! 		    }
! 		  else
! 		    break;
! 		}
! 	      else
! 		break;
! 	      if (c_parser_next_token_is (parser, CPP_COMMA))
! 		{
! 		  c_parser_consume_token (parser);
! 		  continue;
! 		}
! 	      break;
! 	    }
! 	  if (!step)
! 	    step = integer_one_node;
! 	}
!       else
! 	{
! 	  c_expr expr = c_parser_expr_no_commas (parser, NULL);
! 	  expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
! 	  step = c_fully_fold (expr.value, false, NULL);
! 	  if (!INTEGRAL_TYPE_P (TREE_TYPE (step)))
! 	    {
! 	      error_at (clause_loc, "%<linear%> clause step expression must "
! 				    "be integral");
! 	      step = integer_one_node;
! 	    }
  	}
  
      }
*************** c_parser_omp_clause_linear (c_parser *pa
*** 15688,15693 ****
--- 16503,16509 ----
      {
        OMP_CLAUSE_LINEAR_STEP (c) = step;
        OMP_CLAUSE_LINEAR_KIND (c) = kind;
+       OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (c) = old_linear_modifier;
      }
  
    parens.skip_until_found_close (parser);
*************** c_parser_omp_clause_simdlen (c_parser *p
*** 15788,15795 ****
  */
  
  static tree
! c_parser_omp_clause_depend_sink (c_parser *parser, location_t clause_loc,
! 				 tree list)
  {
    tree vec = NULL;
    if (c_parser_next_token_is_not (parser, CPP_NAME)
--- 16604,16611 ----
  */
  
  static tree
! c_parser_omp_clause_doacross_sink (c_parser *parser, location_t clause_loc,
! 				   tree list, bool depend_p)
  {
    tree vec = NULL;
    if (c_parser_next_token_is_not (parser, CPP_NAME)
*************** c_parser_omp_clause_depend_sink (c_parse
*** 15799,15804 ****
--- 16615,16644 ----
        return list;
      }
  
+   if (!depend_p)
+     {
+       const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+       if (strcmp (p, "omp_cur_iteration") == 0
+ 	  && c_parser_peek_2nd_token (parser)->type == CPP_MINUS
+ 	  && c_parser_peek_nth_token (parser, 3)->type == CPP_NUMBER
+ 	  && c_parser_peek_nth_token (parser, 4)->type == CPP_CLOSE_PAREN)
+ 	{
+ 	  tree val = c_parser_peek_nth_token (parser, 3)->value;
+ 	  if (integer_onep (val))
+ 	    {
+ 	      c_parser_consume_token (parser);
+ 	      c_parser_consume_token (parser);
+ 	      c_parser_consume_token (parser);
+ 	      tree u = build_omp_clause (clause_loc, OMP_CLAUSE_DOACROSS);
+ 	      OMP_CLAUSE_DOACROSS_KIND (u) = OMP_CLAUSE_DOACROSS_SINK;
+ 	      OMP_CLAUSE_CHAIN (u) = list;
+ 	      return u;
+ 	    }
+ 	}
+     }
+ 
+ 
+ 
    while (c_parser_next_token_is (parser, CPP_NAME)
  	 && c_parser_peek_token (parser)->id_kind == C_ID_ID)
      {
*************** c_parser_omp_clause_depend_sink (c_parse
*** 15844,15850 ****
  	{
  	  vec = tree_cons (addend, t, vec);
  	  if (neg)
! 	    OMP_CLAUSE_DEPEND_SINK_NEGATIVE (vec) = 1;
  	}
  
        if (c_parser_next_token_is_not (parser, CPP_COMMA)
--- 16684,16690 ----
  	{
  	  vec = tree_cons (addend, t, vec);
  	  if (neg)
! 	    OMP_CLAUSE_DOACROSS_SINK_NEGATIVE (vec) = 1;
  	}
  
        if (c_parser_next_token_is_not (parser, CPP_COMMA)
*************** c_parser_omp_clause_depend_sink (c_parse
*** 15858,15865 ****
    if (vec == NULL_TREE)
      return list;
  
!   tree u = build_omp_clause (clause_loc, OMP_CLAUSE_DEPEND);
!   OMP_CLAUSE_DEPEND_KIND (u) = OMP_CLAUSE_DEPEND_SINK;
    OMP_CLAUSE_DECL (u) = nreverse (vec);
    OMP_CLAUSE_CHAIN (u) = list;
    return u;
--- 16698,16706 ----
    if (vec == NULL_TREE)
      return list;
  
!   tree u = build_omp_clause (clause_loc, OMP_CLAUSE_DOACROSS);
!   OMP_CLAUSE_DOACROSS_KIND (u) = OMP_CLAUSE_DOACROSS_SINK;
!   OMP_CLAUSE_DOACROSS_DEPEND (u) = depend_p;
    OMP_CLAUSE_DECL (u) = nreverse (vec);
    OMP_CLAUSE_CHAIN (u) = list;
    return u;
*************** c_parser_omp_clause_affinity (c_parser *
*** 16041,16047 ****
     depend ( depend-modifier , depend-kind: variable-list )
  
     depend-kind:
!      in | out | inout | mutexinoutset | depobj
  
     depend-modifier:
       iterator ( iterators-definition )  */
--- 16882,16888 ----
     depend ( depend-modifier , depend-kind: variable-list )
  
     depend-kind:
!      in | out | inout | mutexinoutset | depobj | inoutset
  
     depend-modifier:
       iterator ( iterators-definition )  */
*************** c_parser_omp_clause_depend (c_parser *pa
*** 16051,16056 ****
--- 16892,16898 ----
  {
    location_t clause_loc = c_parser_peek_token (parser)->location;
    enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_LAST;
+   enum omp_clause_doacross_kind dkind = OMP_CLAUSE_DOACROSS_LAST;
    tree nl, c, iterators = NULL_TREE;
  
    matching_parens parens;
*************** c_parser_omp_clause_depend (c_parser *pa
*** 16073,16078 ****
--- 16915,16922 ----
  	kind = OMP_CLAUSE_DEPEND_IN;
        else if (strcmp ("inout", p) == 0)
  	kind = OMP_CLAUSE_DEPEND_INOUT;
+       else if (strcmp ("inoutset", p) == 0)
+ 	kind = OMP_CLAUSE_DEPEND_INOUTSET;
        else if (strcmp ("mutexinoutset", p) == 0)
  	kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET;
        else if (strcmp ("out", p) == 0)
*************** c_parser_omp_clause_depend (c_parser *pa
*** 16080,16088 ****
        else if (strcmp ("depobj", p) == 0)
  	kind = OMP_CLAUSE_DEPEND_DEPOBJ;
        else if (strcmp ("sink", p) == 0)
! 	kind = OMP_CLAUSE_DEPEND_SINK;
        else if (strcmp ("source", p) == 0)
! 	kind = OMP_CLAUSE_DEPEND_SOURCE;
        else
  	goto invalid_kind;
        break;
--- 16924,16932 ----
        else if (strcmp ("depobj", p) == 0)
  	kind = OMP_CLAUSE_DEPEND_DEPOBJ;
        else if (strcmp ("sink", p) == 0)
! 	dkind = OMP_CLAUSE_DOACROSS_SINK;
        else if (strcmp ("source", p) == 0)
! 	dkind = OMP_CLAUSE_DOACROSS_SOURCE;
        else
  	goto invalid_kind;
        break;
*************** c_parser_omp_clause_depend (c_parser *pa
*** 16092,16109 ****
    c_parser_consume_token (parser);
  
    if (iterators
!       && (kind == OMP_CLAUSE_DEPEND_SOURCE || kind == OMP_CLAUSE_DEPEND_SINK))
      {
        pop_scope ();
        error_at (clause_loc, "%<iterator%> modifier incompatible with %qs",
! 		kind == OMP_CLAUSE_DEPEND_SOURCE ? "source" : "sink");
        iterators = NULL_TREE;
      }
  
!   if (kind == OMP_CLAUSE_DEPEND_SOURCE)
      {
!       c = build_omp_clause (clause_loc, OMP_CLAUSE_DEPEND);
!       OMP_CLAUSE_DEPEND_KIND (c) = kind;
        OMP_CLAUSE_DECL (c) = NULL_TREE;
        OMP_CLAUSE_CHAIN (c) = list;
        parens.skip_until_found_close (parser);
--- 16936,16955 ----
    c_parser_consume_token (parser);
  
    if (iterators
!       && (dkind == OMP_CLAUSE_DOACROSS_SOURCE
! 	  || dkind == OMP_CLAUSE_DOACROSS_SINK))
      {
        pop_scope ();
        error_at (clause_loc, "%<iterator%> modifier incompatible with %qs",
! 		dkind == OMP_CLAUSE_DOACROSS_SOURCE ? "source" : "sink");
        iterators = NULL_TREE;
      }
  
!   if (dkind == OMP_CLAUSE_DOACROSS_SOURCE)
      {
!       c = build_omp_clause (clause_loc, OMP_CLAUSE_DOACROSS);
!       OMP_CLAUSE_DOACROSS_KIND (c) = dkind;
!       OMP_CLAUSE_DOACROSS_DEPEND (c) = 1;
        OMP_CLAUSE_DECL (c) = NULL_TREE;
        OMP_CLAUSE_CHAIN (c) = list;
        parens.skip_until_found_close (parser);
*************** c_parser_omp_clause_depend (c_parser *pa
*** 16113,16120 ****
    if (!c_parser_require (parser, CPP_COLON, "expected %<:%>"))
      goto resync_fail;
  
!   if (kind == OMP_CLAUSE_DEPEND_SINK)
!     nl = c_parser_omp_clause_depend_sink (parser, clause_loc, list);
    else
      {
        nl = c_parser_omp_variable_list (parser, clause_loc,
--- 16959,16966 ----
    if (!c_parser_require (parser, CPP_COLON, "expected %<:%>"))
      goto resync_fail;
  
!   if (dkind == OMP_CLAUSE_DOACROSS_SINK)
!     nl = c_parser_omp_clause_doacross_sink (parser, clause_loc, list, true);
    else
      {
        nl = c_parser_omp_variable_list (parser, clause_loc,
*************** c_parser_omp_clause_depend (c_parser *pa
*** 16150,16155 ****
--- 16996,17060 ----
    return list;
  }
  
+ /* OpenMP 5.2:
+    doacross ( source : )
+    doacross ( source : omp_cur_iteration )
+ 
+    doacross ( sink : vec )
+    doacross ( sink : omp_cur_iteration - logical_iteration )  */
+ 
+ static tree
+ c_parser_omp_clause_doacross (c_parser *parser, tree list)
+ {
+   location_t clause_loc = c_parser_peek_token (parser)->location;
+   enum omp_clause_doacross_kind kind = OMP_CLAUSE_DOACROSS_LAST;
+   tree nl;
+   const char *p;
+ 
+   matching_parens parens;
+   if (!parens.require_open (parser))
+     return list;
+ 
+   if (c_parser_next_token_is_not (parser, CPP_NAME))
+     goto invalid_kind;
+ 
+   p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+   if (strcmp ("sink", p) == 0)
+     kind = OMP_CLAUSE_DOACROSS_SINK;
+   else if (strcmp ("source", p) == 0)
+     kind = OMP_CLAUSE_DOACROSS_SOURCE;
+   else
+     goto invalid_kind;
+ 
+   c_parser_consume_token (parser);
+ 
+   if (!c_parser_require (parser, CPP_COLON, "expected %<:%>"))
+     goto resync_fail;
+ 
+   if (kind == OMP_CLAUSE_DOACROSS_SOURCE)
+     {
+       if (c_parser_next_token_is (parser, CPP_NAME)
+ 	  && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
+ 		     "omp_cur_iteration") == 0)
+ 	c_parser_consume_token (parser);
+       nl = build_omp_clause (clause_loc, OMP_CLAUSE_DOACROSS);
+       OMP_CLAUSE_DOACROSS_KIND (nl) = OMP_CLAUSE_DOACROSS_SOURCE;
+       OMP_CLAUSE_DECL (nl) = NULL_TREE;
+       OMP_CLAUSE_CHAIN (nl) = list;
+     }
+   else
+     nl = c_parser_omp_clause_doacross_sink (parser, clause_loc, list, false);
+ 
+   parens.skip_until_found_close (parser);
+   return nl;
+ 
+  invalid_kind:
+   c_parser_error (parser, "invalid doacross kind");
+  resync_fail:
+   parens.skip_until_found_close (parser);
+   return list;
+ }
+ 
  /* OpenMP 4.0:
     map ( map-kind: variable-list )
     map ( variable-list )
*************** c_parser_omp_clause_device_type (c_parse
*** 16491,16498 ****
    else
      goto invalid_kind;
  
!   /* check_no_duplicate_clause (list, OMP_CLAUSE_DEVICE_TYPE,
! 				"device_type");  */
    c_parser_consume_token (parser);
    parens.skip_until_found_close (parser);
    c = build_omp_clause (clause_loc, OMP_CLAUSE_DEVICE_TYPE);
--- 17396,17403 ----
    else
      goto invalid_kind;
  
!   check_no_duplicate_clause (list, OMP_CLAUSE_DEVICE_TYPE,
! 			     "device_type");
    c_parser_consume_token (parser);
    parens.skip_until_found_close (parser);
    c = build_omp_clause (clause_loc, OMP_CLAUSE_DEVICE_TYPE);
*************** c_parser_omp_all_clauses (c_parser *pars
*** 16829,16835 ****
        if (nested && c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	break;
  
!       if (!first)
  	{
  	  if (c_parser_next_token_is (parser, CPP_COMMA))
  	    c_parser_consume_token (parser);
--- 17734,17740 ----
        if (nested && c_parser_next_token_is (parser, CPP_CLOSE_PAREN))
  	break;
  
!       if (!first || nested != 2)
  	{
  	  if (c_parser_next_token_is (parser, CPP_COMMA))
  	    c_parser_consume_token (parser);
*************** c_parser_omp_all_clauses (c_parser *pars
*** 17020,17028 ****
  	  break;
  	case PRAGMA_OMP_CLAUSE_TO:
  	  if ((mask & (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_LINK)) != 0)
! 	    clauses
! 	      = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_TO_DECLARE,
! 					      clauses);
  	  else
  	    clauses = c_parser_omp_clause_to (parser, clauses);
  	  c_name = "to";
--- 17925,17937 ----
  	  break;
  	case PRAGMA_OMP_CLAUSE_TO:
  	  if ((mask & (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_LINK)) != 0)
! 	    {
! 	      tree nl = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_ENTER,
! 						      clauses);
! 	      for (tree c = nl; c != clauses; c = OMP_CLAUSE_CHAIN (c))
! 		OMP_CLAUSE_ENTER_TO (c) = 1;
! 	      clauses = nl;
! 	    }
  	  else
  	    clauses = c_parser_omp_clause_to (parser, clauses);
  	  c_name = "to";
*************** c_parser_omp_all_clauses (c_parser *pars
*** 17063,17068 ****
--- 17972,17981 ----
  	  clauses = c_parser_omp_clause_depend (parser, clauses);
  	  c_name = "depend";
  	  break;
+ 	case PRAGMA_OMP_CLAUSE_DOACROSS:
+ 	  clauses = c_parser_omp_clause_doacross (parser, clauses);
+ 	  c_name = "doacross";
+ 	  break;
  	case PRAGMA_OMP_CLAUSE_MAP:
  	  clauses = c_parser_omp_clause_map (parser, clauses);
  	  c_name = "map";
*************** c_parser_omp_all_clauses (c_parser *pars
*** 17123,17128 ****
--- 18036,18047 ----
  					       clauses);
  	  c_name = "simd";
  	  break;
+ 	case PRAGMA_OMP_CLAUSE_ENTER:
+ 	  clauses
+ 	    = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_ENTER,
+ 					    clauses);
+ 	  c_name = "enter";
+ 	  break;
  	default:
  	  c_parser_error (parser, "expected %<#pragma omp%> clause");
  	  goto saw_error;
*************** c_parser_oacc_wait (location_t loc, c_pa
*** 17894,17922 ****
    return stmt;
  }
  
! /* OpenMP 5.0:
!    # pragma omp allocate (list)  [allocator(allocator)]  */
  
  static void
  c_parser_omp_allocate (location_t loc, c_parser *parser)
  {
    tree allocator = NULL_TREE;
    tree nl = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_ALLOCATE, NULL_TREE);
!   if (c_parser_next_token_is (parser, CPP_NAME))
      {
        matching_parens parens;
        const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
        c_parser_consume_token (parser);
!       if (strcmp ("allocator", p) != 0)
! 	error_at (c_parser_peek_token (parser)->location,
! 		  "expected %<allocator%>");
!       else if (parens.require_open (parser))
  	{
! 	  location_t expr_loc = c_parser_peek_token (parser)->location;
! 	  c_expr expr = c_parser_expr_no_commas (parser, NULL);
! 	  expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
! 	  allocator = expr.value;
! 	  allocator = c_fully_fold (allocator, false, NULL);
  	  tree orig_type
  	    = expr.original_type ? expr.original_type : TREE_TYPE (allocator);
  	  orig_type = TYPE_MAIN_VARIANT (orig_type);
--- 18813,18883 ----
    return stmt;
  }
  
! /* OpenMP 5.x:
!    # pragma omp allocate (list)  clauses
! 
!    OpenMP 5.0 clause:
!    allocator (omp_allocator_handle_t expression)
! 
!    OpenMP 5.1 additional clause:
!    align (constant-expression)]  */
  
  static void
  c_parser_omp_allocate (location_t loc, c_parser *parser)
  {
+   tree alignment = NULL_TREE;
    tree allocator = NULL_TREE;
    tree nl = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_ALLOCATE, NULL_TREE);
!   do
      {
+       if (c_parser_next_token_is (parser, CPP_COMMA)
+ 	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
+ 	c_parser_consume_token (parser);
+       if (!c_parser_next_token_is (parser, CPP_NAME))
+ 	break;
        matching_parens parens;
        const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
        c_parser_consume_token (parser);
!       location_t expr_loc = c_parser_peek_token (parser)->location;
!       if (strcmp ("align", p) != 0 && strcmp ("allocator", p) != 0)
  	{
! 	  error_at (c_parser_peek_token (parser)->location,
! 		    "expected %<allocator%> or %<align%>");
! 	  break;
! 	}
!       if (!parens.require_open (parser))
! 	break;
! 
!       c_expr expr = c_parser_expr_no_commas (parser, NULL);
!       expr = convert_lvalue_to_rvalue (expr_loc, expr, false, true);
!       expr_loc = c_parser_peek_token (parser)->location;
!       if (p[2] == 'i' && alignment)
! 	{
! 	  error_at (expr_loc, "too many %qs clauses", "align");
! 	  break;
! 	}
!       else if (p[2] == 'i')
! 	{
! 	  alignment = c_fully_fold (expr.value, false, NULL);
! 	  if (TREE_CODE (alignment) != INTEGER_CST
! 	      || !INTEGRAL_TYPE_P (TREE_TYPE (alignment))
! 	      || tree_int_cst_sgn (alignment) != 1
! 	      || !integer_pow2p (alignment))
! 	    {
! 	      error_at (expr_loc, "%<align%> clause argument needs to be "
! 				  "positive constant power of two integer "
! 				  "expression");
! 	      alignment = NULL_TREE;
! 	    }
! 	}
!       else if (allocator)
! 	{
! 	  error_at (expr_loc, "too many %qs clauses", "allocator");
! 	  break;
! 	}
!       else
! 	{
! 	  allocator = c_fully_fold (expr.value, false, NULL);
  	  tree orig_type
  	    = expr.original_type ? expr.original_type : TREE_TYPE (allocator);
  	  orig_type = TYPE_MAIN_VARIANT (orig_type);
*************** c_parser_omp_allocate (location_t loc, c
*** 17925,17944 ****
  	      || TYPE_NAME (orig_type)
  		 != get_identifier ("omp_allocator_handle_t"))
  	    {
! 	      error_at (expr_loc, "%<allocator%> clause allocator expression "
! 				"has type %qT rather than "
! 				"%<omp_allocator_handle_t%>",
! 				TREE_TYPE (allocator));
  	      allocator = NULL_TREE;
  	    }
- 	  parens.skip_until_found_close (parser);
  	}
!     }
    c_parser_skip_to_pragma_eol (parser);
  
!   if (allocator)
      for (tree c = nl; c != NULL_TREE; c = OMP_CLAUSE_CHAIN (c))
!       OMP_CLAUSE_ALLOCATE_ALLOCATOR (c) = allocator;
  
    sorry_at (loc, "%<#pragma omp allocate%> not yet supported");
  }
--- 18886,18908 ----
  	      || TYPE_NAME (orig_type)
  		 != get_identifier ("omp_allocator_handle_t"))
  	    {
! 	      error_at (expr_loc,
! 			"%<allocator%> clause allocator expression has type "
! 			"%qT rather than %<omp_allocator_handle_t%>",
! 			TREE_TYPE (allocator));
  	      allocator = NULL_TREE;
  	    }
  	}
!       parens.skip_until_found_close (parser);
!     } while (true);
    c_parser_skip_to_pragma_eol (parser);
  
!   if (allocator || alignment)
      for (tree c = nl; c != NULL_TREE; c = OMP_CLAUSE_CHAIN (c))
!       {
! 	OMP_CLAUSE_ALLOCATE_ALLOCATOR (c) = allocator;
! 	OMP_CLAUSE_ALLOCATE_ALIGN (c) = alignment;
!       }
  
    sorry_at (loc, "%<#pragma omp allocate%> not yet supported");
  }
*************** c_parser_omp_atomic (location_t loc, c_p
*** 18040,18046 ****
    bool structured_block = false;
    bool swapped = false;
    bool non_lvalue_p;
-   bool first = true;
    tree clauses = NULL_TREE;
    bool capture = false;
    bool compare = false;
--- 19004,19009 ----
*************** c_parser_omp_atomic (location_t loc, c_p
*** 18051,18063 ****
  
    while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
      {
!       if (!first
! 	  && c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
  
-       first = false;
- 
        if (c_parser_next_token_is (parser, CPP_NAME))
  	{
  	  const char *p
--- 19014,19023 ----
  
    while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
      {
!       if (c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
  
        if (c_parser_next_token_is (parser, CPP_NAME))
  	{
  	  const char *p
*************** restart:
*** 18602,18616 ****
  	  && TREE_CODE (TREE_OPERAND (lhs, 1)) == COMPOUND_EXPR
  	  && TREE_CODE (TREE_OPERAND (TREE_OPERAND (lhs, 1), 0)) == MODIFY_EXPR
  	  && TREE_OPERAND (TREE_OPERAND (lhs, 1), 1) == TREE_OPERAND (lhs, 0)
! 	  && TREE_CODE (TREE_TYPE (TREE_OPERAND (TREE_OPERAND
! 					      (TREE_OPERAND (lhs, 1), 0), 0)))
! 	     == BOOLEAN_TYPE)
  	/* Undo effects of boolean_increment for post {in,de}crement.  */
  	lhs = TREE_OPERAND (TREE_OPERAND (lhs, 1), 0);
        /* FALLTHRU */
      case MODIFY_EXPR:
        if (TREE_CODE (lhs) == MODIFY_EXPR
! 	  && TREE_CODE (TREE_TYPE (TREE_OPERAND (lhs, 0))) == BOOLEAN_TYPE)
  	{
  	  /* Undo effects of boolean_increment.  */
  	  if (integer_onep (TREE_OPERAND (lhs, 1)))
--- 19562,19575 ----
  	  && TREE_CODE (TREE_OPERAND (lhs, 1)) == COMPOUND_EXPR
  	  && TREE_CODE (TREE_OPERAND (TREE_OPERAND (lhs, 1), 0)) == MODIFY_EXPR
  	  && TREE_OPERAND (TREE_OPERAND (lhs, 1), 1) == TREE_OPERAND (lhs, 0)
! 	  && C_BOOLEAN_TYPE_P (TREE_TYPE (TREE_OPERAND (TREE_OPERAND
! 					      (TREE_OPERAND (lhs, 1), 0), 0))))
  	/* Undo effects of boolean_increment for post {in,de}crement.  */
  	lhs = TREE_OPERAND (TREE_OPERAND (lhs, 1), 0);
        /* FALLTHRU */
      case MODIFY_EXPR:
        if (TREE_CODE (lhs) == MODIFY_EXPR
! 	  && C_BOOLEAN_TYPE_P (TREE_TYPE (TREE_OPERAND (lhs, 0))))
  	{
  	  /* Undo effects of boolean_increment.  */
  	  if (integer_onep (TREE_OPERAND (lhs, 1)))
*************** c_parser_omp_depobj (c_parser *parser)
*** 19001,19007 ****
  
    parens.skip_until_found_close (parser);
    tree clause = NULL_TREE;
!   enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_SOURCE;
    location_t c_loc = c_parser_peek_token (parser)->location;
    if (c_parser_next_token_is (parser, CPP_NAME))
      {
--- 19960,19968 ----
  
    parens.skip_until_found_close (parser);
    tree clause = NULL_TREE;
!   enum omp_clause_depend_kind kind = OMP_CLAUSE_DEPEND_INVALID;
!   if (c_parser_next_token_is (parser, CPP_COMMA))
!     c_parser_consume_token (parser);
    location_t c_loc = c_parser_peek_token (parser)->location;
    if (c_parser_next_token_is (parser, CPP_NAME))
      {
*************** c_parser_omp_depobj (c_parser *parser)
*** 19037,19048 ****
  		    kind = OMP_CLAUSE_DEPEND_INOUT;
  		  else if (!strcmp ("mutexinoutset", p2))
  		    kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET;
  		}
! 	      if (kind == OMP_CLAUSE_DEPEND_SOURCE)
  		{
  		  clause = error_mark_node;
! 		  error_at (c2_loc, "expected %<in%>, %<out%>, %<inout%> or "
! 				    "%<mutexinoutset%>");
  		}
  	      c_parens.skip_until_found_close (parser);
  	    }
--- 19998,20011 ----
  		    kind = OMP_CLAUSE_DEPEND_INOUT;
  		  else if (!strcmp ("mutexinoutset", p2))
  		    kind = OMP_CLAUSE_DEPEND_MUTEXINOUTSET;
+ 		  else if (!strcmp ("inoutset", p2))
+ 		    kind = OMP_CLAUSE_DEPEND_INOUTSET;
  		}
! 	      if (kind == OMP_CLAUSE_DEPEND_INVALID)
  		{
  		  clause = error_mark_node;
! 		  error_at (c2_loc, "expected %<in%>, %<out%>, %<inout%>, "
! 				    "%<mutexinoutset%> or %<inoutset%>");
  		}
  	      c_parens.skip_until_found_close (parser);
  	    }
*************** c_parser_omp_depobj (c_parser *parser)
*** 19050,19056 ****
  	    clause = error_mark_node;
  	}
      }
!   if (!clause && kind == OMP_CLAUSE_DEPEND_SOURCE)
      {
        clause = error_mark_node;
        error_at (c_loc, "expected %<depend%>, %<destroy%> or %<update%> clause");
--- 20013,20019 ----
  	    clause = error_mark_node;
  	}
      }
!   if (!clause && kind == OMP_CLAUSE_DEPEND_INVALID)
      {
        clause = error_mark_node;
        error_at (c_loc, "expected %<depend%>, %<destroy%> or %<update%> clause");
*************** c_parser_omp_flush (c_parser *parser)
*** 19076,19081 ****
--- 20039,20047 ----
    location_t loc = c_parser_peek_token (parser)->location;
    c_parser_consume_pragma (parser);
    enum memmodel mo = MEMMODEL_LAST;
+   if (c_parser_next_token_is (parser, CPP_COMMA)
+       && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
+     c_parser_consume_token (parser);
    if (c_parser_next_token_is (parser, CPP_NAME))
      {
        const char *p
*************** c_parser_omp_scan_loop_body (c_parser *p
*** 19168,19173 ****
--- 20134,20142 ----
  
        c_parser_consume_pragma (parser);
  
+       if (c_parser_next_token_is (parser, CPP_COMMA))
+ 	c_parser_consume_token (parser);
+ 
        if (c_parser_next_token_is (parser, CPP_NAME))
  	{
  	  const char *p
*************** c_parser_omp_for_loop (location_t loc, c
*** 19249,19267 ****
  	= build_int_cst (NULL_TREE, collapse);
        ordered = collapse;
      }
-   if (ordered)
-     {
-       for (tree *pc = &clauses; *pc; )
- 	if (OMP_CLAUSE_CODE (*pc) == OMP_CLAUSE_LINEAR)
- 	  {
- 	    error_at (OMP_CLAUSE_LOCATION (*pc),
- 		      "%<linear%> clause may not be specified together "
- 		      "with %<ordered%> clause with a parameter");
- 	    *pc = OMP_CLAUSE_CHAIN (*pc);
- 	  }
- 	else
- 	  pc = &OMP_CLAUSE_CHAIN (*pc);
-     }
  
    gcc_assert (tiling || (collapse >= 1 && ordered >= 0));
    count = ordered ? ordered : collapse;
--- 20218,20223 ----
*************** c_parser_omp_simd (location_t loc, c_par
*** 19699,19713 ****
      {
        omp_split_clauses (loc, OMP_SIMD, mask, clauses, cclauses);
        clauses = cclauses[C_OMP_CLAUSE_SPLIT_SIMD];
-       tree c = omp_find_clause (cclauses[C_OMP_CLAUSE_SPLIT_FOR],
- 				OMP_CLAUSE_ORDERED);
-       if (c && OMP_CLAUSE_ORDERED_EXPR (c))
- 	{
- 	  error_at (OMP_CLAUSE_LOCATION (c),
- 		    "%<ordered%> clause with parameter may not be specified "
- 		    "on %qs construct", p_name);
- 	  OMP_CLAUSE_ORDERED_EXPR (c) = NULL_TREE;
- 	}
      }
  
    block = c_begin_compound_stmt (true);
--- 20655,20660 ----
*************** c_parser_omp_masked (location_t loc, c_p
*** 19946,19959 ****
     # pragma omp ordered ordered-clauses new-line
       structured-block
  
!    # pragma omp ordered depend-clauses new-line  */
  
  #define OMP_ORDERED_CLAUSE_MASK					\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREADS)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_SIMD))
  
  #define OMP_ORDERED_DEPEND_CLAUSE_MASK				\
! 	(OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)
  
  static bool
  c_parser_omp_ordered (c_parser *parser, enum pragma_context context,
--- 20893,20910 ----
     # pragma omp ordered ordered-clauses new-line
       structured-block
  
!    # pragma omp ordered depend-clauses new-line
! 
!    OpenMP 5.2
!    # pragma omp ordered doacross-clauses new-line  */
  
  #define OMP_ORDERED_CLAUSE_MASK					\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_THREADS)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_SIMD))
  
  #define OMP_ORDERED_DEPEND_CLAUSE_MASK				\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)	\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DOACROSS))
  
  static bool
  c_parser_omp_ordered (c_parser *parser, enum pragma_context context,
*************** c_parser_omp_ordered (c_parser *parser,
*** 19969,19979 ****
        return false;
      }
  
!   if (c_parser_next_token_is (parser, CPP_NAME))
      {
!       const char *p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
  
!       if (!strcmp ("depend", p))
  	{
  	  if (!flag_openmp)	/* flag_openmp_simd  */
  	    {
--- 20920,20935 ----
        return false;
      }
  
!   int n = 1;
!   if (c_parser_next_token_is (parser, CPP_COMMA))
!     n = 2;
! 
!   if (c_parser_peek_nth_token (parser, n)->type == CPP_NAME)
      {
!       const char *p
! 	= IDENTIFIER_POINTER (c_parser_peek_nth_token (parser, n)->value);
  
!       if (!strcmp ("depend", p) || !strcmp ("doacross", p))
  	{
  	  if (!flag_openmp)	/* flag_openmp_simd  */
  	    {
*************** c_parser_omp_ordered (c_parser *parser,
*** 19983,19990 ****
  	  if (context == pragma_stmt)
  	    {
  	      error_at (loc,
! 			"%<#pragma omp ordered%> with %<depend%> clause may "
! 			"only be used in compound statements");
  	      c_parser_skip_to_pragma_eol (parser, false);
  	      return true;
  	    }
--- 20939,20946 ----
  	  if (context == pragma_stmt)
  	    {
  	      error_at (loc,
! 			"%<#pragma omp ordered%> with %qs clause may "
! 			"only be used in compound statements", p);
  	      c_parser_skip_to_pragma_eol (parser, false);
  	      return true;
  	    }
*************** c_parser_omp_single (location_t loc, c_p
*** 20362,20368 ****
--- 21318,21326 ----
  
  #define OMP_SCOPE_CLAUSE_MASK					\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_PRIVATE)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_FIRSTPRIVATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_REDUCTION)	\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ALLOCATE)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT))
  
  static tree
*************** c_parser_omp_task (location_t loc, c_par
*** 20423,20429 ****
  */
  
  #define OMP_TASKWAIT_CLAUSE_MASK					\
! 	(OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)
  
  static void
  c_parser_omp_taskwait (c_parser *parser)
--- 21381,21388 ----
  */
  
  #define OMP_TASKWAIT_CLAUSE_MASK					\
! 	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEPEND)		\
! 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_NOWAIT))
  
  static void
  c_parser_omp_taskwait (c_parser *parser)
*************** c_parser_omp_teams (location_t loc, c_pa
*** 20768,20773 ****
--- 21727,21736 ----
  static tree
  c_parser_omp_target_data (location_t loc, c_parser *parser, bool *if_p)
  {
+   if (flag_openmp)
+     omp_requires_mask
+       = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED);
+ 
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_DATA_CLAUSE_MASK,
  				"#pragma omp target data");
*************** c_parser_omp_target_update (location_t l
*** 20863,20868 ****
--- 21826,21835 ----
        return false;
      }
  
+   if (flag_openmp)
+     omp_requires_mask
+       = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED);
+ 
    tree stmt = make_node (OMP_TARGET_UPDATE);
    TREE_TYPE (stmt) = void_type_node;
    OMP_TARGET_UPDATE_CLAUSES (stmt) = clauses;
*************** c_parser_omp_target_enter_data (location
*** 20910,20915 ****
--- 21877,21886 ----
        return true;
      }
  
+   if (flag_openmp)
+     omp_requires_mask
+       = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED);
+ 
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_ENTER_DATA_CLAUSE_MASK,
  				"#pragma omp target enter data");
*************** c_parser_omp_target_enter_data (location
*** 20925,20930 ****
--- 21896,21909 ----
  	  case GOMP_MAP_ALLOC:
  	    map_seen = 3;
  	    break;
+ 	  case GOMP_MAP_TOFROM:
+ 	    OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_TO);
+ 	    map_seen = 3;
+ 	    break;
+ 	  case GOMP_MAP_ALWAYS_TOFROM:
+ 	    OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_ALWAYS_TO);
+ 	    map_seen = 3;
+ 	    break;
  	  case GOMP_MAP_FIRSTPRIVATE_POINTER:
  	  case GOMP_MAP_ALWAYS_POINTER:
  	  case GOMP_MAP_ATTACH_DETACH:
*************** c_parser_omp_target_enter_data (location
*** 20933,20939 ****
  	    map_seen |= 1;
  	    error_at (OMP_CLAUSE_LOCATION (*pc),
  		      "%<#pragma omp target enter data%> with map-type other "
! 		      "than %<to%> or %<alloc%> on %<map%> clause");
  	    *pc = OMP_CLAUSE_CHAIN (*pc);
  	    continue;
  	  }
--- 21912,21918 ----
  	    map_seen |= 1;
  	    error_at (OMP_CLAUSE_LOCATION (*pc),
  		      "%<#pragma omp target enter data%> with map-type other "
! 		      "than %<to%>, %<tofrom%> or %<alloc%> on %<map%> clause");
  	    *pc = OMP_CLAUSE_CHAIN (*pc);
  	    continue;
  	  }
*************** c_parser_omp_target_exit_data (location_
*** 20996,21001 ****
--- 21975,21984 ----
        return true;
      }
  
+   if (flag_openmp)
+     omp_requires_mask
+       = (enum omp_requires) (omp_requires_mask | OMP_REQUIRES_TARGET_USED);
+ 
    tree clauses
      = c_parser_omp_all_clauses (parser, OMP_TARGET_EXIT_DATA_CLAUSE_MASK,
  				"#pragma omp target exit data");
*************** c_parser_omp_target_exit_data (location_
*** 21012,21017 ****
--- 21995,22008 ----
  	  case GOMP_MAP_DELETE:
  	    map_seen = 3;
  	    break;
+ 	  case GOMP_MAP_TOFROM:
+ 	    OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_FROM);
+ 	    map_seen = 3;
+ 	    break;
+ 	  case GOMP_MAP_ALWAYS_TOFROM:
+ 	    OMP_CLAUSE_SET_MAP_KIND (*pc, GOMP_MAP_ALWAYS_FROM);
+ 	    map_seen = 3;
+ 	    break;
  	  case GOMP_MAP_FIRSTPRIVATE_POINTER:
  	  case GOMP_MAP_ALWAYS_POINTER:
  	  case GOMP_MAP_ATTACH_DETACH:
*************** c_parser_omp_target_exit_data (location_
*** 21020,21027 ****
  	    map_seen |= 1;
  	    error_at (OMP_CLAUSE_LOCATION (*pc),
  		      "%<#pragma omp target exit data%> with map-type other "
! 		      "than %<from%>, %<release%> or %<delete%> on %<map%>"
! 		      " clause");
  	    *pc = OMP_CLAUSE_CHAIN (*pc);
  	    continue;
  	  }
--- 22011,22018 ----
  	    map_seen |= 1;
  	    error_at (OMP_CLAUSE_LOCATION (*pc),
  		      "%<#pragma omp target exit data%> with map-type other "
! 		      "than %<from%>, %<tofrom%>, %<release%> or %<delete%> "
! 		      "on %<map%> clause");
  	    *pc = OMP_CLAUSE_CHAIN (*pc);
  	    continue;
  	  }
*************** c_finish_omp_declare_variant (c_parser *
*** 21809,21814 ****
--- 22800,22809 ----
  
    parens.require_close (parser);
  
+   if (c_parser_next_token_is (parser, CPP_COMMA)
+       && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
+     c_parser_consume_token (parser);
+ 
    const char *clause = "";
    location_t match_loc = c_parser_peek_token (parser)->location;
    if (c_parser_next_token_is (parser, CPP_NAME))
*************** c_finish_omp_declare_simd (c_parser *par
*** 21968,21973 ****
--- 22963,22969 ----
  
  #define OMP_DECLARE_TARGET_CLAUSE_MASK				\
  	( (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_TO)		\
+ 	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_ENTER)	\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_LINK)		\
  	| (OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE_TYPE))
  
*************** c_parser_omp_declare_target (c_parser *p
*** 21977,21988 ****
    tree clauses = NULL_TREE;
    int device_type = 0;
    bool only_device_type = true;
!   if (c_parser_next_token_is (parser, CPP_NAME))
      clauses = c_parser_omp_all_clauses (parser, OMP_DECLARE_TARGET_CLAUSE_MASK,
  					"#pragma omp declare target");
    else if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
      {
!       clauses = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_TO_DECLARE,
  					      clauses);
        clauses = c_finish_omp_clauses (clauses, C_ORT_OMP);
        c_parser_skip_to_pragma_eol (parser);
--- 22973,22986 ----
    tree clauses = NULL_TREE;
    int device_type = 0;
    bool only_device_type = true;
!   if (c_parser_next_token_is (parser, CPP_NAME)
!       || (c_parser_next_token_is (parser, CPP_COMMA)
! 	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME))
      clauses = c_parser_omp_all_clauses (parser, OMP_DECLARE_TARGET_CLAUSE_MASK,
  					"#pragma omp declare target");
    else if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
      {
!       clauses = c_parser_omp_var_list_parens (parser, OMP_CLAUSE_ENTER,
  					      clauses);
        clauses = c_finish_omp_clauses (clauses, C_ORT_OMP);
        c_parser_skip_to_pragma_eol (parser);
*************** c_parser_omp_declare_target (c_parser *p
*** 21990,21996 ****
    else
      {
        c_parser_skip_to_pragma_eol (parser);
!       current_omp_declare_target_attribute++;
        return;
      }
    for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
--- 22988,22995 ----
    else
      {
        c_parser_skip_to_pragma_eol (parser);
!       c_omp_declare_target_attr attr = { -1 };
!       vec_safe_push (current_omp_declare_target_attribute, attr);
        return;
      }
    for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
*************** c_parser_omp_declare_target (c_parser *p
*** 22014,22022 ****
  	id = get_identifier ("omp declare target");
        if (at2)
  	{
! 	  error_at (OMP_CLAUSE_LOCATION (c),
! 		    "%qD specified both in declare target %<link%> and %<to%>"
! 		    " clauses", t);
  	  continue;
  	}
        if (!at1)
--- 23013,23026 ----
  	id = get_identifier ("omp declare target");
        if (at2)
  	{
! 	  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ENTER)
! 	    error_at (OMP_CLAUSE_LOCATION (c),
! 		      "%qD specified both in declare target %<link%> and %qs"
! 		      " clauses", t, OMP_CLAUSE_ENTER_TO (c) ? "to" : "enter");
! 	  else
! 	    error_at (OMP_CLAUSE_LOCATION (c),
! 		      "%qD specified both in declare target %<link%> and "
! 		      "%<to%> or %<enter%> clauses", t);
  	  continue;
  	}
        if (!at1)
*************** c_parser_omp_declare_target (c_parser *p
*** 22063,22080 ****
  	}
      }
    if (device_type && only_device_type)
!     warning_at (OMP_CLAUSE_LOCATION (clauses), 0,
! 		"directive with only %<device_type%> clauses ignored");
  }
  
  static void
! c_parser_omp_end_declare_target (c_parser *parser)
  {
    location_t loc = c_parser_peek_token (parser)->location;
    c_parser_consume_pragma (parser);
!   if (c_parser_next_token_is (parser, CPP_NAME)
!       && strcmp (IDENTIFIER_POINTER (c_parser_peek_token (parser)->value),
! 		 "declare") == 0)
      {
        c_parser_consume_token (parser);
        if (c_parser_next_token_is (parser, CPP_NAME)
--- 23067,23145 ----
  	}
      }
    if (device_type && only_device_type)
!     error_at (OMP_CLAUSE_LOCATION (clauses),
! 	      "directive with only %<device_type%> clause");
  }
  
+ /* OpenMP 5.1
+    #pragma omp begin assumes clauses[optseq] new-line
+ 
+    #pragma omp begin declare target clauses[optseq] new-line  */
+ 
+ #define OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK			\
+ 	(OMP_CLAUSE_MASK_1 << PRAGMA_OMP_CLAUSE_DEVICE_TYPE)
+ 
  static void
! c_parser_omp_begin (c_parser *parser)
! {
!   const char *p = "";
!   c_parser_consume_pragma (parser);
!   if (c_parser_next_token_is (parser, CPP_NAME))
!     p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
!   if (strcmp (p, "declare") == 0)
!     {
!       c_parser_consume_token (parser);
!       p = "";
!       if (c_parser_next_token_is (parser, CPP_NAME))
! 	p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
!       if (strcmp (p, "target") == 0)
! 	{
! 	  c_parser_consume_token (parser);
! 	  tree clauses
! 	    = c_parser_omp_all_clauses (parser,
! 					OMP_BEGIN_DECLARE_TARGET_CLAUSE_MASK,
! 					"#pragma omp begin declare target");
! 	  int device_type = 0;
! 	  for (tree c = clauses; c; c = OMP_CLAUSE_CHAIN (c))
! 	    if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEVICE_TYPE)
! 	      device_type |= OMP_CLAUSE_DEVICE_TYPE_KIND (c);
! 	  c_omp_declare_target_attr attr = { device_type };
! 	  vec_safe_push (current_omp_declare_target_attribute, attr);
! 	}
!       else
! 	{
! 	  c_parser_error (parser, "expected %<target%>");
! 	  c_parser_skip_to_pragma_eol (parser);
! 	}
!     }
!   else if (strcmp (p, "assumes") == 0)
!     {
!       c_parser_consume_token (parser);
!       c_parser_omp_assumption_clauses (parser, false);
!       current_omp_begin_assumes++;
!     }
!   else
!     {
!       c_parser_error (parser, "expected %<declare target%> or %<assumes%>");
!       c_parser_skip_to_pragma_eol (parser);
!     }
! }
! 
! /* OpenMP 4.0
!    #pragma omp end declare target
! 
!    OpenMP 5.1
!    #pragma omp end assumes  */
! 
! static void
! c_parser_omp_end (c_parser *parser)
  {
    location_t loc = c_parser_peek_token (parser)->location;
+   const char *p = "";
    c_parser_consume_pragma (parser);
!   if (c_parser_next_token_is (parser, CPP_NAME))
!     p = IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
!   if (strcmp (p, "declare") == 0)
      {
        c_parser_consume_token (parser);
        if (c_parser_next_token_is (parser, CPP_NAME)
*************** c_parser_omp_end_declare_target (c_parse
*** 22087,22108 ****
  	  c_parser_skip_to_pragma_eol (parser);
  	  return;
  	}
      }
!   else
      {
!       c_parser_error (parser, "expected %<declare%>");
        c_parser_skip_to_pragma_eol (parser);
!       return;
      }
-   c_parser_skip_to_pragma_eol (parser);
-   if (!current_omp_declare_target_attribute)
-     error_at (loc, "%<#pragma omp end declare target%> without corresponding "
- 		   "%<#pragma omp declare target%>");
    else
!     current_omp_declare_target_attribute--;
  }
  
- 
  /* OpenMP 4.0
     #pragma omp declare reduction (reduction-id : typename-list : expression) \
        initializer-clause[opt] new-line
--- 23152,23182 ----
  	  c_parser_skip_to_pragma_eol (parser);
  	  return;
  	}
+       c_parser_skip_to_pragma_eol (parser);
+       if (!vec_safe_length (current_omp_declare_target_attribute))
+ 	error_at (loc, "%<#pragma omp end declare target%> without "
+ 		       "corresponding %<#pragma omp declare target%> or "
+ 		       "%<#pragma omp begin declare target%>");
+       else
+ 	current_omp_declare_target_attribute->pop ();
      }
!   else if (strcmp (p, "assumes") == 0)
      {
!       c_parser_consume_token (parser);
        c_parser_skip_to_pragma_eol (parser);
!       if (!current_omp_begin_assumes)
! 	error_at (loc, "%qs without corresponding %qs",
! 		  "#pragma omp end assumes", "#pragma omp begin assumes");
!       else
! 	current_omp_begin_assumes--;
      }
    else
!     {
!       c_parser_error (parser, "expected %<declare%> or %<assumes%>");
!       c_parser_skip_to_pragma_eol (parser);
!     }
  }
  
  /* OpenMP 4.0
     #pragma omp declare reduction (reduction-id : typename-list : expression) \
        initializer-clause[opt] new-line
*************** c_parser_omp_declare_reduction (c_parser
*** 22322,22331 ****
        initializer.set_error ();
        if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
  	bad = true;
!       else if (c_parser_next_token_is (parser, CPP_NAME)
! 	       && strcmp (IDENTIFIER_POINTER
  				(c_parser_peek_token (parser)->value),
! 			  "initializer") == 0)
  	{
  	  c_parser_consume_token (parser);
  	  pop_scope ();
--- 23396,23409 ----
        initializer.set_error ();
        if (!c_parser_require (parser, CPP_CLOSE_PAREN, "expected %<)%>"))
  	bad = true;
!       else if (c_parser_next_token_is (parser, CPP_COMMA)
! 	       && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
! 	c_parser_consume_token (parser);
!       if (!bad
! 	  && (c_parser_next_token_is (parser, CPP_NAME)
! 	      && strcmp (IDENTIFIER_POINTER
  				(c_parser_peek_token (parser)->value),
! 			  "initializer") == 0))
  	{
  	  c_parser_consume_token (parser);
  	  pop_scope ();
*************** c_parser_omp_declare_reduction (c_parser
*** 22389,22396 ****
  		  tree st = push_stmt_list ();
  		  location_t loc = c_parser_peek_token (parser)->location;
  		  rich_location richloc (line_table, loc);
! 		  start_init (omp_priv, NULL_TREE, 0, &richloc);
! 		  struct c_expr init = c_parser_initializer (parser);
  		  finish_init ();
  		  finish_decl (omp_priv, loc, init.value,
  		      	       init.original_type, NULL_TREE);
--- 23467,23474 ----
  		  tree st = push_stmt_list ();
  		  location_t loc = c_parser_peek_token (parser)->location;
  		  rich_location richloc (line_table, loc);
! 		  start_init (omp_priv, NULL_TREE, false, false, &richloc);
! 		  struct c_expr init = c_parser_initializer (parser, omp_priv);
  		  finish_init ();
  		  finish_decl (omp_priv, loc, init.value,
  		      	       init.original_type, NULL_TREE);
*************** c_parser_omp_declare (c_parser *parser,
*** 22518,22524 ****
  static void
  c_parser_omp_requires (c_parser *parser)
  {
-   bool first = true;
    enum omp_requires new_req = (enum omp_requires) 0;
  
    c_parser_consume_pragma (parser);
--- 23596,23601 ----
*************** c_parser_omp_requires (c_parser *parser)
*** 22526,22538 ****
    location_t loc = c_parser_peek_token (parser)->location;
    while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
      {
!       if (!first
! 	  && c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
  
-       first = false;
- 
        if (c_parser_next_token_is (parser, CPP_NAME))
  	{
  	  const char *p
--- 23603,23612 ----
    location_t loc = c_parser_peek_token (parser)->location;
    while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
      {
!       if (c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
  
        if (c_parser_next_token_is (parser, CPP_NAME))
  	{
  	  const char *p
*************** c_parser_omp_requires (c_parser *parser)
*** 22610,22618 ****
  	      c_parser_skip_to_pragma_eol (parser, false);
  	      return;
  	    }
- 	  if (p && this_req != OMP_REQUIRES_DYNAMIC_ALLOCATORS)
- 	    sorry_at (cloc, "%qs clause on %<requires%> directive not "
- 			    "supported yet", p);
  	  if (p)
  	    c_parser_consume_token (parser);
  	  if (this_req)
--- 23684,23689 ----
*************** c_parser_omp_error (c_parser *parser, en
*** 22806,22812 ****
    int at_compilation = -1;
    int severity_fatal = -1;
    tree message = NULL_TREE;
-   bool first = true;
    bool bad = false;
    location_t loc = c_parser_peek_token (parser)->location;
  
--- 23877,23882 ----
*************** c_parser_omp_error (c_parser *parser, en
*** 22814,22826 ****
  
    while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
      {
!       if (!first
! 	  && c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
  
-       first = false;
- 
        if (!c_parser_next_token_is (parser, CPP_NAME))
  	break;
  
--- 23884,23893 ----
  
    while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
      {
!       if (c_parser_next_token_is (parser, CPP_COMMA)
  	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
  	c_parser_consume_token (parser);
  
        if (!c_parser_next_token_is (parser, CPP_NAME))
  	break;
  
*************** c_parser_omp_error (c_parser *parser, en
*** 22964,22969 ****
--- 24031,24239 ----
    return false;
  }
  
+ /* Assumption clauses:
+    OpenMP 5.1
+    absent (directive-name-list)
+    contains (directive-name-list)
+    holds (expression)
+    no_openmp
+    no_openmp_routines
+    no_parallelism  */
+ 
+ static void
+ c_parser_omp_assumption_clauses (c_parser *parser, bool is_assume)
+ {
+   bool no_openmp = false;
+   bool no_openmp_routines = false;
+   bool no_parallelism = false;
+   bitmap_head absent_head, contains_head;
+ 
+   bitmap_obstack_initialize (NULL);
+   bitmap_initialize (&absent_head, &bitmap_default_obstack);
+   bitmap_initialize (&contains_head, &bitmap_default_obstack);
+ 
+   if (c_parser_next_token_is (parser, CPP_PRAGMA_EOL))
+     error_at (c_parser_peek_token (parser)->location,
+ 	      "expected at least one assumption clause");
+ 
+   while (c_parser_next_token_is_not (parser, CPP_PRAGMA_EOL))
+     {
+       if (c_parser_next_token_is (parser, CPP_COMMA)
+ 	  && c_parser_peek_2nd_token (parser)->type == CPP_NAME)
+ 	c_parser_consume_token (parser);
+ 
+       if (!c_parser_next_token_is (parser, CPP_NAME))
+ 	break;
+ 
+       const char *p
+ 	= IDENTIFIER_POINTER (c_parser_peek_token (parser)->value);
+       location_t cloc = c_parser_peek_token (parser)->location;
+ 
+       if (!strcmp (p, "no_openmp"))
+ 	{
+ 	  c_parser_consume_token (parser);
+ 	  if (no_openmp)
+ 	    error_at (cloc, "too many %qs clauses", "no_openmp");
+ 	  no_openmp = true;
+ 	}
+       else if (!strcmp (p, "no_openmp_routines"))
+ 	{
+ 	  c_parser_consume_token (parser);
+ 	  if (no_openmp_routines)
+ 	    error_at (cloc, "too many %qs clauses", "no_openmp_routines");
+ 	  no_openmp_routines = true;
+ 	}
+       else if (!strcmp (p, "no_parallelism"))
+ 	{
+ 	  c_parser_consume_token (parser);
+ 	  if (no_parallelism)
+ 	    error_at (cloc, "too many %qs clauses", "no_parallelism");
+ 	  no_parallelism = true;
+ 	}
+       else if (!strcmp (p, "holds"))
+ 	{
+ 	  c_parser_consume_token (parser);
+ 	  matching_parens parens;
+ 	  if (parens.require_open (parser))
+ 	    {
+ 	      location_t eloc = c_parser_peek_token (parser)->location;
+ 	      c_expr expr = c_parser_expr_no_commas (parser, NULL);
+ 	      tree t = convert_lvalue_to_rvalue (eloc, expr, true, true).value;
+ 	      t = c_objc_common_truthvalue_conversion (eloc, t);
+ 	      t = c_fully_fold (t, false, NULL);
+ 	      if (is_assume && t != error_mark_node)
+ 		{
+ 		  tree fn = build_call_expr_internal_loc (eloc, IFN_ASSUME,
+ 							  void_type_node, 1,
+ 							  t);
+ 		  add_stmt (fn);
+ 		}
+ 	      parens.skip_until_found_close (parser);
+ 	    }
+ 	}
+       else if (!strcmp (p, "absent") || !strcmp (p, "contains"))
+ 	{
+ 	  c_parser_consume_token (parser);
+ 	  matching_parens parens;
+ 	  if (parens.require_open (parser))
+ 	    {
+ 	      do
+ 		{
+ 		  const char *directive[3] = {};
+ 		  int i;
+ 		  location_t dloc = c_parser_peek_token (parser)->location;
+ 		  for (i = 0; i < 3; i++)
+ 		    {
+ 		      tree id;
+ 		      if (c_parser_peek_nth_token (parser, i + 1)->type
+ 			  == CPP_NAME)
+ 			id = c_parser_peek_nth_token (parser, i + 1)->value;
+ 		      else if (c_parser_peek_nth_token (parser, i + 1)->keyword
+ 			       != RID_MAX)
+ 			{
+ 			  enum rid rid
+ 			    = c_parser_peek_nth_token (parser, i + 1)->keyword;
+ 			  id = ridpointers[rid];
+ 			}
+ 		      else
+ 			break;
+ 		      directive[i] = IDENTIFIER_POINTER (id);
+ 		    }
+ 		  if (i == 0)
+ 		    error_at (dloc, "expected directive name");
+ 		  else
+ 		    {
+ 		      const struct c_omp_directive *dir
+ 			= c_omp_categorize_directive (directive[0],
+ 						      directive[1],
+ 						      directive[2]);
+ 		      if (dir == NULL
+ 			  || dir->kind == C_OMP_DIR_DECLARATIVE
+ 			  || dir->kind == C_OMP_DIR_INFORMATIONAL
+ 			  || dir->id == PRAGMA_OMP_END
+ 			  || (!dir->second && directive[1])
+ 			  || (!dir->third && directive[2]))
+ 			error_at (dloc, "unknown OpenMP directive name in "
+ 					"%qs clause argument", p);
+ 		      else
+ 			{
+ 			  int id = dir - c_omp_directives;
+ 			  if (bitmap_bit_p (p[0] == 'a' ? &contains_head
+ 							: &absent_head, id))
+ 			    error_at (dloc, "%<%s%s%s%s%s%> directive "
+ 					    "mentioned in both %<absent%> and "
+ 					    "%<contains%> clauses",
+ 				      directive[0],
+ 				      directive[1] ? " " : "",
+ 				      directive[1] ? directive[1] : "",
+ 				      directive[2] ? " " : "",
+ 				      directive[2] ? directive[2] : "");
+ 			  else if (!bitmap_set_bit (p[0] == 'a'
+ 						    ? &absent_head
+ 						    : &contains_head, id))
+ 			    error_at (dloc, "%<%s%s%s%s%s%> directive "
+ 					    "mentioned multiple times in %qs "
+ 					    "clauses",
+ 				      directive[0],
+ 				      directive[1] ? " " : "",
+ 				      directive[1] ? directive[1] : "",
+ 				      directive[2] ? " " : "",
+ 				      directive[2] ? directive[2] : "", p);
+ 			}
+ 		      for (; i; --i)
+ 			c_parser_consume_token (parser);
+ 		    }
+ 		  if (c_parser_next_token_is (parser, CPP_COMMA))
+ 		    c_parser_consume_token (parser);
+ 		  else
+ 		    break;
+ 		}
+ 	      while (1);
+ 	      parens.skip_until_found_close (parser);
+ 	    }
+ 	}
+       else if (startswith (p, "ext_"))
+ 	{
+ 	  warning_at (cloc, 0, "unknown assumption clause %qs", p);
+ 	  c_parser_consume_token (parser);
+ 	  if (c_parser_next_token_is (parser, CPP_OPEN_PAREN))
+ 	    {
+ 	      matching_parens parens;
+ 	      parens.consume_open (parser);
+ 	      c_parser_balanced_token_sequence (parser);
+ 	      parens.require_close (parser);
+ 	    }
+ 	}
+       else
+ 	{
+ 	  c_parser_consume_token (parser);
+ 	  error_at (cloc, "expected assumption clause");
+ 	  break;
+ 	}
+     }
+   c_parser_skip_to_pragma_eol (parser);
+ }
+ 
+ /* OpenMP 5.1
+    #pragma omp assume clauses[optseq] new-line  */
+ 
+ static void
+ c_parser_omp_assume (c_parser *parser, bool *if_p)
+ {
+   c_parser_omp_assumption_clauses (parser, true);
+   add_stmt (c_parser_omp_structured_block (parser, if_p));
+ }
+ 
+ /* OpenMP 5.1
+    #pragma omp assumes clauses[optseq] new-line  */
+ 
+ static void
+ c_parser_omp_assumes (c_parser *parser)
+ {
+   c_parser_consume_pragma (parser);
+   c_parser_omp_assumption_clauses (parser, false);
+ }
+ 
  /* Main entry point to parsing most OpenMP pragmas.  */
  
  static void
*************** c_parser_omp_construct (c_parser *parser
*** 23069,23074 ****
--- 24339,24347 ----
        strcpy (p_name, "#pragma omp");
        stmt = c_parser_omp_teams (loc, parser, p_name, mask, NULL, if_p);
        break;
+     case PRAGMA_OMP_ASSUME:
+       c_parser_omp_assume (parser, if_p);
+       return;
      default:
        gcc_unreachable ();
      }
*************** c_parser_transaction_expression (c_parse
*** 23242,23247 ****
--- 24515,24521 ----
  	TRANSACTION_EXPR_RELAXED (ret.value) = 1;
        SET_EXPR_LOCATION (ret.value, loc);
        ret.original_code = TRANSACTION_EXPR;
+       ret.m_decimal = 0;
        if (!parens.require_close (parser))
  	{
  	  c_parser_skip_until_found (parser, CPP_CLOSE_PAREN, NULL);
diff -Nrcpad gcc-12.2.0/gcc/c/c-parser.h gcc-13.1.0/gcc/c/c-parser.h
*** gcc-12.2.0/gcc/c/c-parser.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-parser.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations for the parser for C and Objective-C.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
--- 1,5 ----
  /* Declarations for the parser for C and Objective-C.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
     Parser actions based on the old Bison parser; structure somewhat
     influenced by and fragments based on the C++ parser.
*************** extern bool old_style_parameter_scope (v
*** 161,167 ****
  /* Return true if the next token from PARSER has the indicated
     TYPE.  */
  
! static inline bool
  c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
  {
    return c_parser_peek_token (parser)->type == type;
--- 161,167 ----
  /* Return true if the next token from PARSER has the indicated
     TYPE.  */
  
! inline bool
  c_parser_next_token_is (c_parser *parser, enum cpp_ttype type)
  {
    return c_parser_peek_token (parser)->type == type;
*************** c_parser_next_token_is (c_parser *parser
*** 170,176 ****
  /* Return true if the next token from PARSER does not have the
     indicated TYPE.  */
  
! static inline bool
  c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
  {
    return !c_parser_next_token_is (parser, type);
--- 170,176 ----
  /* Return true if the next token from PARSER does not have the
     indicated TYPE.  */
  
! inline bool
  c_parser_next_token_is_not (c_parser *parser, enum cpp_ttype type)
  {
    return !c_parser_next_token_is (parser, type);
*************** c_parser_next_token_is_not (c_parser *pa
*** 179,185 ****
  /* Return true if the next token from PARSER is the indicated
     KEYWORD.  */
  
! static inline bool
  c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword)
  {
    return c_parser_peek_token (parser)->keyword == keyword;
--- 179,185 ----
  /* Return true if the next token from PARSER is the indicated
     KEYWORD.  */
  
! inline bool
  c_parser_next_token_is_keyword (c_parser *parser, enum rid keyword)
  {
    return c_parser_peek_token (parser)->keyword == keyword;
diff -Nrcpad gcc-12.2.0/gcc/c/c-tree.h gcc-13.1.0/gcc/c/c-tree.h
*** gcc-12.2.0/gcc/c/c-tree.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-tree.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for C parsing and type checking.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for C parsing and type checking.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,44 ----
  /* In a RECORD_TYPE or UNION_TYPE, nonzero if any component is volatile.  */
  #define C_TYPE_FIELDS_VOLATILE(TYPE) TREE_LANG_FLAG_2 (TYPE)
  
+ /* In a RECORD_TYPE or UNION_TYPE, nonzero if any component is
+    volatile, restrict-qualified or atomic; that is, has a type not
+    permitted for a constexpr object.  */
+ #define C_TYPE_FIELDS_NON_CONSTEXPR(TYPE) TREE_LANG_FLAG_4 (TYPE)
+ 
  /* In a RECORD_TYPE or UNION_TYPE or ENUMERAL_TYPE
     nonzero if the definition of the type has already started.  */
  #define C_TYPE_BEING_DEFINED(TYPE) TYPE_LANG_FLAG_0 (TYPE)
*************** along with GCC; see the file COPYING3.
*** 54,59 ****
--- 59,68 ----
  #define C_TYPE_VARIABLE_SIZE(TYPE) TYPE_LANG_FLAG_1 (TYPE)
  #define C_DECL_VARIABLE_SIZE(TYPE) DECL_LANG_FLAG_0 (TYPE)
  
+ /* Record whether a type is variably modified. */
+ #define C_TYPE_VARIABLY_MODIFIED(TYPE) TYPE_LANG_FLAG_6 (TYPE)
+ 
+ 
  /* Record whether a type is defined inside a struct or union type.
     This is used for -Wc++-compat. */
  #define C_TYPE_DEFINED_IN_STRUCT(TYPE) TYPE_LANG_FLAG_2 (TYPE)
*************** along with GCC; see the file COPYING3.
*** 100,105 ****
--- 109,122 ----
  #define C_DECL_COMPOUND_LITERAL_P(DECL) \
    DECL_LANG_FLAG_5 (VAR_DECL_CHECK (DECL))
  
+ /* Set on decls used as placeholders for a C2x underspecified object
+    definition.  */
+ #define C_DECL_UNDERSPECIFIED(DECL) DECL_LANG_FLAG_7 (DECL)
+ 
+ /* Set on VAR_DECLs declared as 'constexpr'.  */
+ #define C_DECL_DECLARED_CONSTEXPR(DECL) \
+   DECL_LANG_FLAG_8 (VAR_DECL_CHECK (DECL))
+ 
  /* Nonzero for a decl which either doesn't exist or isn't a prototype.
     N.B. Could be simplified if all built-in decls had complete prototypes
     (but this is presently difficult because some of them need FILE*).  */
*************** along with GCC; see the file COPYING3.
*** 122,127 ****
--- 139,152 ----
     been folded.  */
  #define SAVE_EXPR_FOLDED_P(EXP)	TREE_LANG_FLAG_1 (SAVE_EXPR_CHECK (EXP))
  
+ /* Whether a type has boolean semantics: either a boolean type or an
+    enumeration type with a boolean type as its underlying type.  */
+ #define C_BOOLEAN_TYPE_P(TYPE)						\
+   (TREE_CODE (TYPE) == BOOLEAN_TYPE					\
+    || (TREE_CODE (TYPE) == ENUMERAL_TYPE				\
+        && ENUM_UNDERLYING_TYPE (TYPE) != NULL_TREE			\
+        && TREE_CODE (ENUM_UNDERLYING_TYPE (TYPE)) == BOOLEAN_TYPE))
+ 
  /* Record parser information about an expression that is irrelevant
     for code generation alongside a tree representing its value.  */
  struct c_expr
*************** struct c_expr
*** 147,152 ****
--- 172,180 ----
       etc), so we stash a copy here.  */
    source_range src_range;
  
+   /* True if this was directly from a decimal constant token.  */
+   bool m_decimal : 1;
+ 
    /* Access to the first and last locations within the source spelling
       of this expression.  */
    location_t get_start () const { return src_range.m_start; }
*************** struct c_expr
*** 161,172 ****
    }
  
    /* Set the value to error_mark_node whilst ensuring that src_range
!      is initialized.  */
    void set_error ()
    {
      value = error_mark_node;
      src_range.m_start = UNKNOWN_LOCATION;
      src_range.m_finish = UNKNOWN_LOCATION;
    }
  };
  
--- 189,201 ----
    }
  
    /* Set the value to error_mark_node whilst ensuring that src_range
!      and m_decimal are initialized.  */
    void set_error ()
    {
      value = error_mark_node;
      src_range.m_start = UNKNOWN_LOCATION;
      src_range.m_finish = UNKNOWN_LOCATION;
+     m_decimal = 0;
    }
  };
  
*************** struct c_typespec {
*** 212,217 ****
--- 241,250 ----
    /* Whether the expression has operands suitable for use in constant
       expressions.  */
    bool expr_const_operands;
+   /* Whether the type specifier includes an enum type specifier (that
+      is, ": specifier-qualifier-list" in a declaration using
+      "enum").  */
+   bool has_enum_type_specifier;
    /* The specifier itself.  */
    tree spec;
    /* An expression to be evaluated before the type specifier, in the
*************** struct c_declspecs {
*** 408,413 ****
--- 441,459 ----
    /* Whether any alignment specifier (even with zero alignment) was
       specified.  */
    BOOL_BITFIELD alignas_p : 1;
+   /* Whether an enum type specifier (": specifier-qualifier-list") was
+      specified other than in a definition of that enum (if so, this is
+      invalid unless it is an empty declaration "enum identifier
+      enum-type-specifier;", but such an empty declaration is valid in
+      C2x when "enum identifier;" would not be).  */
+   BOOL_BITFIELD enum_type_specifier_ref_p : 1;
+   /* Whether "auto" was specified in C2X (or later) mode and means the
+      type is to be deduced from an initializer, or would mean that if
+      no type specifier appears later in these declaration
+      specifiers.  */
+   BOOL_BITFIELD c2x_auto_p : 1;
+   /* Whether "constexpr" was specified.  */
+   BOOL_BITFIELD constexpr_p : 1;
    /* The address space that the declaration belongs to.  */
    addr_space_t address_space;
  };
*************** struct c_arg_info {
*** 453,458 ****
--- 499,506 ----
    tree pending_sizes;
    /* True when these arguments had [*].  */
    BOOL_BITFIELD had_vla_unspec : 1;
+   /* True when the arguments are a (...) prototype.  */
+   BOOL_BITFIELD no_named_args_stdarg_p : 1;
  };
  
  /* A declarator.  */
*************** struct c_enum_contents
*** 521,526 ****
--- 569,577 ----
       constant value.  */
    tree enum_next_value;
  
+   /* The enumeration type itself.  */
+   tree enum_type;
+ 
    /* Nonzero means that there was overflow computing enum_next_value.  */
    int enum_overflow;
  };
*************** extern bool switch_statement_break_seen_
*** 565,570 ****
--- 616,623 ----
  
  extern bool global_bindings_p (void);
  extern tree pushdecl (tree);
+ extern unsigned int start_underspecified_init (location_t, tree);
+ extern void finish_underspecified_init (tree, unsigned int);
  extern void push_scope (void);
  extern tree pop_scope (void);
  extern void c_bindings_start_stmt_expr (struct c_spot_bindings *);
*************** extern void c_warn_unused_attributes (tr
*** 621,630 ****
  extern tree c_warn_type_attributes (tree);
  extern void shadow_tag (const struct c_declspecs *);
  extern void shadow_tag_warned (const struct c_declspecs *, int);
! extern tree start_enum (location_t, struct c_enum_contents *, tree);
  extern bool start_function (struct c_declspecs *, struct c_declarator *, tree);
  extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool,
! 			tree, location_t * = NULL);
  extern tree start_struct (location_t, enum tree_code, tree,
  			  class c_struct_parse_info **);
  extern void store_parm_decls (void);
--- 674,683 ----
  extern tree c_warn_type_attributes (tree);
  extern void shadow_tag (const struct c_declspecs *);
  extern void shadow_tag_warned (const struct c_declspecs *, int);
! extern tree start_enum (location_t, struct c_enum_contents *, tree, tree);
  extern bool start_function (struct c_declspecs *, struct c_declarator *, tree);
  extern tree start_decl (struct c_declarator *, struct c_declspecs *, bool,
! 			tree, bool = true, location_t * = NULL);
  extern tree start_struct (location_t, enum tree_code, tree,
  			  class c_struct_parse_info **);
  extern void store_parm_decls (void);
*************** extern void temp_store_parm_decls (tree,
*** 633,639 ****
  extern void temp_pop_parm_decls (void);
  extern tree xref_tag (enum tree_code, tree);
  extern struct c_typespec parser_xref_tag (location_t, enum tree_code, tree,
! 					  bool, tree);
  extern struct c_parm *build_c_parm (struct c_declspecs *, tree,
  				    struct c_declarator *, location_t);
  extern struct c_declarator *build_attrs_declarator (tree,
--- 686,692 ----
  extern void temp_pop_parm_decls (void);
  extern tree xref_tag (enum tree_code, tree);
  extern struct c_typespec parser_xref_tag (location_t, enum tree_code, tree,
! 					  bool, tree, bool);
  extern struct c_parm *build_c_parm (struct c_declspecs *, tree,
  				    struct c_declarator *, location_t);
  extern struct c_declarator *build_attrs_declarator (tree,
*************** extern bool c_objc_common_init (void);
*** 665,671 ****
  extern bool c_missing_noreturn_ok_p (tree);
  extern bool c_warn_unused_global_decl (const_tree);
  extern void c_initialize_diagnostics (diagnostic_context *);
! extern bool c_vla_unspec_p (tree x, tree fn);
  extern alias_set_type c_get_alias_set (tree);
  
  /* in c-typeck.cc */
--- 718,724 ----
  extern bool c_missing_noreturn_ok_p (tree);
  extern bool c_warn_unused_global_decl (const_tree);
  extern void c_initialize_diagnostics (diagnostic_context *);
! extern bool c_var_mod_p (tree x, tree fn);
  extern alias_set_type c_get_alias_set (tree);
  
  /* in c-typeck.cc */
*************** extern location_t c_last_sizeof_loc;
*** 679,691 ****
  
  extern struct c_switch *c_switch_stack;
  
  extern bool char_type_p (tree);
  extern tree c_objc_common_truthvalue_conversion (location_t, tree);
  extern tree require_complete_type (location_t, tree);
  extern bool same_translation_unit_p (const_tree, const_tree);
  extern int comptypes (tree, tree);
  extern int comptypes_check_different_types (tree, tree, bool *);
! extern bool c_vla_type_p (const_tree);
  extern bool c_mark_addressable (tree, bool = false);
  extern void c_incomplete_type_error (location_t, const_tree, const_tree);
  extern tree c_type_promotes_to (tree);
--- 732,754 ----
  
  extern struct c_switch *c_switch_stack;
  
+ extern bool null_pointer_constant_p (const_tree);
+ 
+ 
+ inline
+ bool c_type_variably_modified_p (tree t)
+ {
+   return error_mark_node != t && C_TYPE_VARIABLY_MODIFIED (t);
+ }
+ 
+ 
  extern bool char_type_p (tree);
  extern tree c_objc_common_truthvalue_conversion (location_t, tree);
  extern tree require_complete_type (location_t, tree);
  extern bool same_translation_unit_p (const_tree, const_tree);
  extern int comptypes (tree, tree);
  extern int comptypes_check_different_types (tree, tree, bool *);
! extern int comptypes_check_enum_int (tree, tree, bool *);
  extern bool c_mark_addressable (tree, bool = false);
  extern void c_incomplete_type_error (location_t, const_tree, const_tree);
  extern tree c_type_promotes_to (tree);
*************** extern struct c_expr default_function_ar
*** 694,704 ****
  extern struct c_expr default_function_array_read_conversion (location_t,
  							     struct c_expr);
  extern struct c_expr convert_lvalue_to_rvalue (location_t, struct c_expr,
! 					       bool, bool);
  extern tree decl_constant_value_1 (tree, bool);
  extern void mark_exp_read (tree);
  extern tree composite_type (tree, tree);
! extern tree build_component_ref (location_t, tree, tree, location_t);
  extern tree build_array_ref (location_t, tree, tree);
  extern tree build_external_ref (location_t, tree, bool, tree *);
  extern void pop_maybe_used (bool);
--- 757,768 ----
  extern struct c_expr default_function_array_read_conversion (location_t,
  							     struct c_expr);
  extern struct c_expr convert_lvalue_to_rvalue (location_t, struct c_expr,
! 					       bool, bool, bool = false);
  extern tree decl_constant_value_1 (tree, bool);
  extern void mark_exp_read (tree);
  extern tree composite_type (tree, tree);
! extern tree build_component_ref (location_t, tree, tree, location_t,
! 				 location_t);
  extern tree build_array_ref (location_t, tree, tree);
  extern tree build_external_ref (location_t, tree, bool, tree *);
  extern void pop_maybe_used (bool);
*************** extern tree c_cast_expr (location_t, str
*** 716,722 ****
  extern tree build_c_cast (location_t, tree, tree);
  extern void store_init_value (location_t, tree, tree, tree);
  extern void maybe_warn_string_init (location_t, tree, struct c_expr);
! extern void start_init (tree, tree, int, rich_location *);
  extern void finish_init (void);
  extern void really_start_incremental_init (tree);
  extern void finish_implicit_inits (location_t, struct obstack *);
--- 780,786 ----
  extern tree build_c_cast (location_t, tree, tree);
  extern void store_init_value (location_t, tree, tree, tree);
  extern void maybe_warn_string_init (location_t, tree, struct c_expr);
! extern void start_init (tree, tree, bool, bool, rich_location *);
  extern void finish_init (void);
  extern void really_start_incremental_init (tree);
  extern void finish_implicit_inits (location_t, struct obstack *);
*************** extern void set_init_label (location_t,
*** 728,734 ****
  extern void process_init_element (location_t, struct c_expr, bool,
  				  struct obstack *);
  extern tree build_compound_literal (location_t, tree, tree, bool,
! 				    unsigned int);
  extern void check_compound_literal_type (location_t, struct c_type_name *);
  extern tree c_start_switch (location_t, location_t, tree, bool);
  extern void c_finish_switch (tree, tree);
--- 792,798 ----
  extern void process_init_element (location_t, struct c_expr, bool,
  				  struct obstack *);
  extern tree build_compound_literal (location_t, tree, tree, bool,
! 				    unsigned int, struct c_declspecs *);
  extern void check_compound_literal_type (location_t, struct c_type_name *);
  extern tree c_start_switch (location_t, location_t, tree, bool);
  extern void c_finish_switch (tree, tree);
*************** set_c_expr_source_range (c_expr *expr,
*** 835,840 ****
--- 899,906 ----
  /* In c-fold.cc */
  extern vec<tree> incomplete_record_decls;
  
+ extern const char *c_get_sarif_source_language (const char *filename);
+ 
  #if CHECKING_P
  namespace selftest {
    extern void run_c_tests (void);
diff -Nrcpad gcc-12.2.0/gcc/c/c-typeck.cc gcc-13.1.0/gcc/c/c-typeck.cc
*** gcc-12.2.0/gcc/c/c-typeck.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/c-typeck.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Build expressions with type checking for C compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Build expressions with type checking for C compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 52,57 ****
--- 52,58 ----
  #include "stringpool.h"
  #include "attribs.h"
  #include "asan.h"
+ #include "realmpfr.h"
  
  /* Possible cases of implicit conversions.  Used to select diagnostic messages
     and control folding initializers in convert_for_assignment.  */
*************** location_t c_last_sizeof_loc;
*** 84,93 ****
     initializer" message within this initializer.  */
  static int found_missing_braces;
  
! static int require_constant_value;
! static int require_constant_elements;
  
- static bool null_pointer_constant_p (const_tree);
  static tree qualify_type (tree, tree);
  static int tagged_types_tu_compatible_p (const_tree, const_tree, bool *,
  					 bool *);
--- 85,94 ----
     initializer" message within this initializer.  */
  static int found_missing_braces;
  
! static bool require_constant_value;
! static bool require_constant_elements;
! static bool require_constexpr_value;
  
  static tree qualify_type (tree, tree);
  static int tagged_types_tu_compatible_p (const_tree, const_tree, bool *,
  					 bool *);
*************** static void push_member_name (tree);
*** 109,115 ****
  static int spelling_length (void);
  static char *print_spelling (char *);
  static void warning_init (location_t, int, const char *);
! static tree digest_init (location_t, tree, tree, tree, bool, bool, int);
  static void output_init_element (location_t, tree, tree, bool, tree, tree, bool,
  				 bool, struct obstack *);
  static void output_pending_init_elements (int, struct obstack *);
--- 110,117 ----
  static int spelling_length (void);
  static char *print_spelling (char *);
  static void warning_init (location_t, int, const char *);
! static tree digest_init (location_t, tree, tree, tree, bool, bool, bool, bool,
! 			 bool, bool);
  static void output_init_element (location_t, tree, tree, bool, tree, tree, bool,
  				 bool, struct obstack *);
  static void output_pending_init_elements (int, struct obstack *);
*************** static int comptypes_internal (const_tre
*** 127,138 ****
  
  /* Return true if EXP is a null pointer constant, false otherwise.  */
  
! static bool
  null_pointer_constant_p (const_tree expr)
  {
    /* This should really operate on c_expr structures, but they aren't
       yet available everywhere required.  */
    tree type = TREE_TYPE (expr);
    return (TREE_CODE (expr) == INTEGER_CST
  	  && !TREE_OVERFLOW (expr)
  	  && integer_zerop (expr)
--- 129,147 ----
  
  /* Return true if EXP is a null pointer constant, false otherwise.  */
  
! bool
  null_pointer_constant_p (const_tree expr)
  {
    /* This should really operate on c_expr structures, but they aren't
       yet available everywhere required.  */
    tree type = TREE_TYPE (expr);
+ 
+   /* An integer constant expression with the value 0, such an expression
+      cast to type void*, or the predefined constant nullptr, are a null
+      pointer constant.  */
+   if (expr == nullptr_node)
+     return true;
+ 
    return (TREE_CODE (expr) == INTEGER_CST
  	  && !TREE_OVERFLOW (expr)
  	  && integer_zerop (expr)
*************** qualify_type (tree type, tree like)
*** 347,362 ****
  				 | ENCODE_QUAL_ADDR_SPACE (as_common));
  }
  
- /* Return true iff the given tree T is a variable length array.  */
- 
- bool
- c_vla_type_p (const_tree t)
- {
-   if (TREE_CODE (t) == ARRAY_TYPE
-       && C_TYPE_VARIABLE_SIZE (t))
-     return true;
-   return false;
- }
  
  /* If NTYPE is a type of a non-variadic function with a prototype
     and OTYPE is a type of a function without a prototype and ATTRS
--- 356,361 ----
*************** composite_type (tree t1, tree t2)
*** 413,421 ****
       (DR#013 question 3).  For consistency, use the enumerated type as
       the composite type.  */
  
!   if (code1 == ENUMERAL_TYPE && code2 == INTEGER_TYPE)
      return t1;
!   if (code2 == ENUMERAL_TYPE && code1 == INTEGER_TYPE)
      return t2;
  
    gcc_assert (code1 == code2);
--- 412,422 ----
       (DR#013 question 3).  For consistency, use the enumerated type as
       the composite type.  */
  
!   if (code1 == ENUMERAL_TYPE
!       && (code2 == INTEGER_TYPE || code2 == BOOLEAN_TYPE))
      return t1;
!   if (code2 == ENUMERAL_TYPE
!       && (code1 == INTEGER_TYPE || code1 == BOOLEAN_TYPE))
      return t2;
  
    gcc_assert (code1 == code2);
*************** composite_type (tree t1, tree t2)
*** 460,467 ****
  	d2_variable = (!d2_zero
  		       && (TREE_CODE (TYPE_MIN_VALUE (d2)) != INTEGER_CST
  			   || TREE_CODE (TYPE_MAX_VALUE (d2)) != INTEGER_CST));
! 	d1_variable = d1_variable || (d1_zero && c_vla_type_p (t1));
! 	d2_variable = d2_variable || (d2_zero && c_vla_type_p (t2));
  
  	/* Save space: see if the result is identical to one of the args.  */
  	if (elt == TREE_TYPE (t1) && TYPE_DOMAIN (t1)
--- 461,468 ----
  	d2_variable = (!d2_zero
  		       && (TREE_CODE (TYPE_MIN_VALUE (d2)) != INTEGER_CST
  			   || TREE_CODE (TYPE_MAX_VALUE (d2)) != INTEGER_CST));
! 	d1_variable = d1_variable || (d1_zero && C_TYPE_VARIABLE_SIZE (t1));
! 	d2_variable = d2_variable || (d2_zero && C_TYPE_VARIABLE_SIZE (t2));
  
  	/* Save space: see if the result is identical to one of the args.  */
  	if (elt == TREE_TYPE (t1) && TYPE_DOMAIN (t1)
*************** composite_type (tree t1, tree t2)
*** 535,551 ****
  
  	/* Simple way if one arg fails to specify argument types.  */
  	if (TYPE_ARG_TYPES (t1) == NULL_TREE)
! 	 {
! 	    t1 = build_function_type (valtype, TYPE_ARG_TYPES (t2));
  	    t1 = build_type_attribute_variant (t1, attributes);
  	    return qualify_type (t1, t2);
  	 }
  	if (TYPE_ARG_TYPES (t2) == NULL_TREE)
! 	 {
! 	   t1 = build_function_type (valtype, TYPE_ARG_TYPES (t1));
! 	   t1 = build_type_attribute_variant (t1, attributes);
! 	   return qualify_type (t1, t2);
! 	 }
  
  	/* If both args specify argument types, we must merge the two
  	   lists, argument by argument.  */
--- 536,554 ----
  
  	/* Simple way if one arg fails to specify argument types.  */
  	if (TYPE_ARG_TYPES (t1) == NULL_TREE)
! 	  {
! 	    t1 = build_function_type (valtype, TYPE_ARG_TYPES (t2),
! 				      TYPE_NO_NAMED_ARGS_STDARG_P (t2));
  	    t1 = build_type_attribute_variant (t1, attributes);
  	    return qualify_type (t1, t2);
  	 }
  	if (TYPE_ARG_TYPES (t2) == NULL_TREE)
! 	  {
! 	    t1 = build_function_type (valtype, TYPE_ARG_TYPES (t1),
! 				      TYPE_NO_NAMED_ARGS_STDARG_P (t1));
! 	    t1 = build_type_attribute_variant (t1, attributes);
! 	    return qualify_type (t1, t2);
! 	  }
  
  	/* If both args specify argument types, we must merge the two
  	   lists, argument by argument.  */
*************** tree
*** 1018,1026 ****
  common_type (tree t1, tree t2)
  {
    if (TREE_CODE (t1) == ENUMERAL_TYPE)
!     t1 = c_common_type_for_size (TYPE_PRECISION (t1), 1);
    if (TREE_CODE (t2) == ENUMERAL_TYPE)
!     t2 = c_common_type_for_size (TYPE_PRECISION (t2), 1);
  
    /* If both types are BOOLEAN_TYPE, then return boolean_type_node.  */
    if (TREE_CODE (t1) == BOOLEAN_TYPE
--- 1021,1029 ----
  common_type (tree t1, tree t2)
  {
    if (TREE_CODE (t1) == ENUMERAL_TYPE)
!     t1 = ENUM_UNDERLYING_TYPE (t1);
    if (TREE_CODE (t2) == ENUMERAL_TYPE)
!     t2 = ENUM_UNDERLYING_TYPE (t2);
  
    /* If both types are BOOLEAN_TYPE, then return boolean_type_node.  */
    if (TREE_CODE (t1) == BOOLEAN_TYPE
*************** comptypes (tree type1, tree type2)
*** 1055,1061 ****
  /* Like comptypes, but if it returns non-zero because enum and int are
     compatible, it sets *ENUM_AND_INT_P to true.  */
  
! static int
  comptypes_check_enum_int (tree type1, tree type2, bool *enum_and_int_p)
  {
    const struct tagged_tu_seen_cache * tagged_tu_seen_base1 = tagged_tu_seen_base;
--- 1058,1064 ----
  /* Like comptypes, but if it returns non-zero because enum and int are
     compatible, it sets *ENUM_AND_INT_P to true.  */
  
! int
  comptypes_check_enum_int (tree type1, tree type2, bool *enum_and_int_p)
  {
    const struct tagged_tu_seen_cache * tagged_tu_seen_base1 = tagged_tu_seen_base;
*************** comptypes_internal (const_tree type1, co
*** 1118,1124 ****
        && COMPLETE_TYPE_P (t1)
        && TREE_CODE (t2) != ENUMERAL_TYPE)
      {
!       t1 = c_common_type_for_size (TYPE_PRECISION (t1), TYPE_UNSIGNED (t1));
        if (TREE_CODE (t2) != VOID_TYPE)
  	{
  	  if (enum_and_int_p != NULL)
--- 1121,1127 ----
        && COMPLETE_TYPE_P (t1)
        && TREE_CODE (t2) != ENUMERAL_TYPE)
      {
!       t1 = ENUM_UNDERLYING_TYPE (t1);
        if (TREE_CODE (t2) != VOID_TYPE)
  	{
  	  if (enum_and_int_p != NULL)
*************** comptypes_internal (const_tree type1, co
*** 1131,1137 ****
  	   && COMPLETE_TYPE_P (t2)
  	   && TREE_CODE (t1) != ENUMERAL_TYPE)
      {
!       t2 = c_common_type_for_size (TYPE_PRECISION (t2), TYPE_UNSIGNED (t2));
        if (TREE_CODE (t1) != VOID_TYPE)
  	{
  	  if (enum_and_int_p != NULL)
--- 1134,1140 ----
  	   && COMPLETE_TYPE_P (t2)
  	   && TREE_CODE (t1) != ENUMERAL_TYPE)
      {
!       t2 = ENUM_UNDERLYING_TYPE (t2);
        if (TREE_CODE (t1) != VOID_TYPE)
  	{
  	  if (enum_and_int_p != NULL)
*************** comptypes_internal (const_tree type1, co
*** 1235,1242 ****
  	d2_variable = (!d2_zero
  		       && (TREE_CODE (TYPE_MIN_VALUE (d2)) != INTEGER_CST
  			   || TREE_CODE (TYPE_MAX_VALUE (d2)) != INTEGER_CST));
! 	d1_variable = d1_variable || (d1_zero && c_vla_type_p (t1));
! 	d2_variable = d2_variable || (d2_zero && c_vla_type_p (t2));
  
  	if (different_types_p != NULL
  	    && d1_variable != d2_variable)
--- 1238,1245 ----
  	d2_variable = (!d2_zero
  		       && (TREE_CODE (TYPE_MIN_VALUE (d2)) != INTEGER_CST
  			   || TREE_CODE (TYPE_MAX_VALUE (d2)) != INTEGER_CST));
! 	d1_variable = d1_variable || (d1_zero && C_TYPE_VARIABLE_SIZE (t1));
! 	d2_variable = d2_variable || (d2_zero && C_TYPE_VARIABLE_SIZE (t2));
  
  	if (different_types_p != NULL
  	    && d1_variable != d2_variable)
*************** function_types_compatible_p (const_tree
*** 1693,1698 ****
--- 1696,1703 ----
  
    if (args1 == NULL_TREE)
      {
+       if (TYPE_NO_NAMED_ARGS_STDARG_P (f1) != TYPE_NO_NAMED_ARGS_STDARG_P (f2))
+ 	return 0;
        if (!self_promoting_args_p (args2))
  	return 0;
        /* If one of these types comes from a non-prototype fn definition,
*************** function_types_compatible_p (const_tree
*** 1706,1711 ****
--- 1711,1718 ----
      }
    if (args2 == NULL_TREE)
      {
+       if (TYPE_NO_NAMED_ARGS_STDARG_P (f1) != TYPE_NO_NAMED_ARGS_STDARG_P (f2))
+ 	return 0;
        if (!self_promoting_args_p (args1))
  	return 0;
        if (TYPE_ACTUAL_ARG_TYPES (f2)
*************** really_atomic_lvalue (tree expr)
*** 2118,2137 ****
    return true;
  }
  
  /* Convert expression EXP (location LOC) from lvalue to rvalue,
     including converting functions and arrays to pointers if CONVERT_P.
!    If READ_P, also mark the expression as having been read.  */
  
  struct c_expr
  convert_lvalue_to_rvalue (location_t loc, struct c_expr exp,
! 			  bool convert_p, bool read_p)
  {
    if (read_p)
      mark_exp_read (exp.value);
    if (convert_p)
      exp = default_function_array_conversion (loc, exp);
    if (!VOID_TYPE_P (TREE_TYPE (exp.value)))
      exp.value = require_complete_type (loc, exp.value);
    if (really_atomic_lvalue (exp.value))
      {
        vec<tree, va_gc> *params;
--- 2125,2215 ----
    return true;
  }
  
+ /* If EXPR is a named constant (C2x) derived from a constexpr variable
+    - that is, a reference to such a variable, or a member extracted by
+    a sequence of structure and union (but not array) member accesses
+    (where union member accesses must access the same member as
+    initialized) - then return the corresponding initializer;
+    otherwise, return NULL_TREE.  */
+ 
+ static tree
+ maybe_get_constexpr_init (tree expr)
+ {
+   tree decl = NULL_TREE;
+   if (TREE_CODE (expr) == VAR_DECL)
+     decl = expr;
+   else if (TREE_CODE (expr) == COMPOUND_LITERAL_EXPR)
+     decl = COMPOUND_LITERAL_EXPR_DECL (expr);
+   if (decl
+       && C_DECL_DECLARED_CONSTEXPR (decl)
+       && DECL_INITIAL (decl) != NULL_TREE
+       && !error_operand_p (DECL_INITIAL (decl)))
+     return DECL_INITIAL (decl);
+   if (TREE_CODE (expr) != COMPONENT_REF)
+     return NULL_TREE;
+   tree inner = maybe_get_constexpr_init (TREE_OPERAND (expr, 0));
+   if (inner == NULL_TREE)
+     return NULL_TREE;
+   while ((CONVERT_EXPR_P (inner) || TREE_CODE (inner) == NON_LVALUE_EXPR)
+ 	 && !error_operand_p (inner)
+ 	 && (TYPE_MAIN_VARIANT (TREE_TYPE (inner))
+ 	     == TYPE_MAIN_VARIANT (TREE_TYPE (TREE_OPERAND (inner, 0)))))
+     inner = TREE_OPERAND (inner, 0);
+   if (TREE_CODE (inner) != CONSTRUCTOR)
+     return NULL_TREE;
+   tree field = TREE_OPERAND (expr, 1);
+   unsigned HOST_WIDE_INT cidx;
+   tree cfield, cvalue;
+   bool have_other_init = false;
+   FOR_EACH_CONSTRUCTOR_ELT (CONSTRUCTOR_ELTS (inner), cidx, cfield, cvalue)
+     {
+       if (cfield == field)
+ 	return cvalue;
+       have_other_init = true;
+     }
+   if (TREE_CODE (TREE_TYPE (inner)) == UNION_TYPE
+       && (have_other_init || field != TYPE_FIELDS (TREE_TYPE (inner))))
+     return NULL_TREE;
+   /* Return a default initializer.  */
+   if (RECORD_OR_UNION_TYPE_P (TREE_TYPE (expr)))
+     return build_constructor (TREE_TYPE (expr), NULL);
+   return build_zero_cst (TREE_TYPE (expr));
+ }
+ 
  /* Convert expression EXP (location LOC) from lvalue to rvalue,
     including converting functions and arrays to pointers if CONVERT_P.
!    If READ_P, also mark the expression as having been read.  If
!    FOR_INIT, constexpr expressions of structure and union type should
!    be replaced by the corresponding CONSTRUCTOR; otherwise, only
!    constexpr scalars (including elements of structures and unions) are
!    replaced by their initializers.  */
  
  struct c_expr
  convert_lvalue_to_rvalue (location_t loc, struct c_expr exp,
! 			  bool convert_p, bool read_p, bool for_init)
  {
+   bool force_non_npc = false;
    if (read_p)
      mark_exp_read (exp.value);
    if (convert_p)
      exp = default_function_array_conversion (loc, exp);
    if (!VOID_TYPE_P (TREE_TYPE (exp.value)))
      exp.value = require_complete_type (loc, exp.value);
+   if (for_init || !RECORD_OR_UNION_TYPE_P (TREE_TYPE (exp.value)))
+     {
+       tree init = maybe_get_constexpr_init (exp.value);
+       if (init != NULL_TREE)
+ 	{
+ 	  /* A named constant of pointer type or type nullptr_t is not
+ 	     a null pointer constant even if the initializer is
+ 	     one.  */
+ 	  if (TREE_CODE (init) == INTEGER_CST
+ 	      && !INTEGRAL_TYPE_P (TREE_TYPE (init))
+ 	      && integer_zerop (init))
+ 	    force_non_npc = true;
+ 	  exp.value = init;
+ 	}
+     }
    if (really_atomic_lvalue (exp.value))
      {
        vec<tree, va_gc> *params;
*************** convert_lvalue_to_rvalue (location_t loc
*** 2172,2177 ****
--- 2250,2257 ----
    if (convert_p && !error_operand_p (exp.value)
        && (TREE_CODE (TREE_TYPE (exp.value)) != ARRAY_TYPE))
      exp.value = convert (build_qualified_type (TREE_TYPE (exp.value), TYPE_UNQUALIFIED), exp.value);
+   if (force_non_npc)
+     exp.value = build1 (NOP_EXPR, TREE_TYPE (exp.value), exp.value);
    return exp;
  }
  
*************** perform_integral_promotions (tree exp)
*** 2186,2200 ****
  
    gcc_assert (INTEGRAL_TYPE_P (type));
  
!   /* Normally convert enums to int,
!      but convert wide enums to something wider.  */
    if (code == ENUMERAL_TYPE)
      {
!       type = c_common_type_for_size (MAX (TYPE_PRECISION (type),
! 					  TYPE_PRECISION (integer_type_node)),
! 				     ((TYPE_PRECISION (type)
! 				       >= TYPE_PRECISION (integer_type_node))
! 				      && TYPE_UNSIGNED (type)));
  
        return convert (type, exp);
      }
--- 2266,2284 ----
  
    gcc_assert (INTEGRAL_TYPE_P (type));
  
!   /* Convert enums to the result of applying the integer promotions to
!      their underlying type.  */
    if (code == ENUMERAL_TYPE)
      {
!       type = ENUM_UNDERLYING_TYPE (type);
!       if (c_promoting_integer_type_p (type))
! 	{
! 	  if (TYPE_UNSIGNED (type)
! 	      && TYPE_PRECISION (type) == TYPE_PRECISION (integer_type_node))
! 	    type = unsigned_type_node;
! 	  else
! 	    type = integer_type_node;
! 	}
  
        return convert (type, exp);
      }
*************** should_suggest_deref_p (tree datum_type)
*** 2457,2467 ****
  /* Make an expression to refer to the COMPONENT field of structure or
     union value DATUM.  COMPONENT is an IDENTIFIER_NODE.  LOC is the
     location of the COMPONENT_REF.  COMPONENT_LOC is the location
!    of COMPONENT.  */
  
  tree
  build_component_ref (location_t loc, tree datum, tree component,
! 		     location_t component_loc)
  {
    tree type = TREE_TYPE (datum);
    enum tree_code code = TREE_CODE (type);
--- 2541,2552 ----
  /* Make an expression to refer to the COMPONENT field of structure or
     union value DATUM.  COMPONENT is an IDENTIFIER_NODE.  LOC is the
     location of the COMPONENT_REF.  COMPONENT_LOC is the location
!    of COMPONENT.  ARROW_LOC is the location of the first -> operand if
!    it is from -> operator.  */
  
  tree
  build_component_ref (location_t loc, tree datum, tree component,
! 		     location_t component_loc, location_t arrow_loc)
  {
    tree type = TREE_TYPE (datum);
    enum tree_code code = TREE_CODE (type);
*************** build_component_ref (location_t loc, tre
*** 2577,2587 ****
        /* Special-case the error message for "ptr.field" for the case
  	 where the user has confused "." vs "->".  */
        rich_location richloc (line_table, loc);
!       /* "loc" should be the "." token.  */
!       richloc.add_fixit_replace ("->");
!       error_at (&richloc,
! 		"%qE is a pointer; did you mean to use %<->%>?",
! 		datum);
        return error_mark_node;
      }
    else if (code != ERROR_MARK)
--- 2662,2684 ----
        /* Special-case the error message for "ptr.field" for the case
  	 where the user has confused "." vs "->".  */
        rich_location richloc (line_table, loc);
!       if (TREE_CODE (datum) == INDIRECT_REF && arrow_loc != UNKNOWN_LOCATION)
! 	{
! 	  richloc.add_fixit_insert_before (arrow_loc, "(*");
! 	  richloc.add_fixit_insert_after (arrow_loc, ")");
! 	  error_at (&richloc,
! 		    "%qE is a pointer to pointer; did you mean to dereference "
! 		    "it before applying %<->%> to it?",
! 		    TREE_OPERAND (datum, 0));
! 	}
!       else
! 	{
! 	  /* "loc" should be the "." token.  */
! 	  richloc.add_fixit_replace ("->");
! 	  error_at (&richloc,
! 		    "%qE is a pointer; did you mean to use %<->%>?",
! 		    datum);
! 	}
        return error_mark_node;
      }
    else if (code != ERROR_MARK)
*************** build_external_ref (location_t loc, tree
*** 2829,2834 ****
--- 2926,2934 ----
      {
        ref = decl;
        *type = TREE_TYPE (ref);
+       if (DECL_P (decl) && C_DECL_UNDERSPECIFIED (decl))
+ 	error_at (loc, "underspecified %qD referenced in its initializer",
+ 		  decl);
      }
    else if (fun)
      /* Implicit function declaration.  */
*************** c_expr_sizeof_expr (location_t loc, stru
*** 2974,2979 ****
--- 3074,3080 ----
        ret.value = error_mark_node;
        ret.original_code = ERROR_MARK;
        ret.original_type = NULL;
+       ret.m_decimal = 0;
        pop_maybe_used (false);
      }
    else
*************** c_expr_sizeof_expr (location_t loc, stru
*** 2997,3002 ****
--- 3098,3104 ----
        c_last_sizeof_loc = loc;
        ret.original_code = SIZEOF_EXPR;
        ret.original_type = NULL;
+       ret.m_decimal = 0;
        if (C_TYPE_VARIABLE_SIZE (TREE_TYPE (folded_expr)))
  	{
  	  /* sizeof is evaluated when given a vla (C99 6.5.3.4p2).  */
*************** c_expr_sizeof_type (location_t loc, stru
*** 3027,3032 ****
--- 3129,3135 ----
    c_last_sizeof_loc = loc;
    ret.original_code = SIZEOF_EXPR;
    ret.original_type = NULL;
+   ret.m_decimal = 0;
    if (type == error_mark_node)
      {
        ret.value = error_mark_node;
*************** build_function_call_vec (location_t loc,
*** 3164,3169 ****
--- 3267,3273 ----
  
    /* fntype now gets the type of function pointed to.  */
    fntype = TREE_TYPE (fntype);
+   tree return_type = TREE_TYPE (fntype);
  
    /* Convert the parameters to the types declared in the
       function prototype, or apply default promotions.  */
*************** build_function_call_vec (location_t loc,
*** 3180,3187 ****
        && TREE_CODE (tem = TREE_OPERAND (tem, 0)) == FUNCTION_DECL
        && !comptypes (fntype, TREE_TYPE (tem)))
      {
-       tree return_type = TREE_TYPE (fntype);
- 
        /* This situation leads to run-time undefined behavior.  We can't,
  	 therefore, simply error unless we can prove that all possible
  	 executions of the program must execute the code.  */
--- 3284,3289 ----
*************** build_function_call_vec (location_t loc,
*** 3206,3227 ****
    bool warned_p = check_function_arguments (loc, fundecl, fntype,
  					    nargs, argarray, &arg_loc);
  
    if (name != NULL_TREE
        && startswith (IDENTIFIER_POINTER (name), "__builtin_"))
      {
        if (require_constant_value)
  	result
! 	  = fold_build_call_array_initializer_loc (loc, TREE_TYPE (fntype),
  						   function, nargs, argarray);
        else
! 	result = fold_build_call_array_loc (loc, TREE_TYPE (fntype),
  					    function, nargs, argarray);
        if (TREE_CODE (result) == NOP_EXPR
  	  && TREE_CODE (TREE_OPERAND (result, 0)) == INTEGER_CST)
  	STRIP_TYPE_NOPS (result);
      }
    else
!     result = build_call_array_loc (loc, TREE_TYPE (fntype),
  				   function, nargs, argarray);
    /* If -Wnonnull warning has been diagnosed, avoid diagnosing it again
       later.  */
--- 3308,3332 ----
    bool warned_p = check_function_arguments (loc, fundecl, fntype,
  					    nargs, argarray, &arg_loc);
  
+   if (TYPE_QUALS (return_type) != TYPE_UNQUALIFIED
+       && !VOID_TYPE_P (return_type))
+     return_type = c_build_qualified_type (return_type, TYPE_UNQUALIFIED);
    if (name != NULL_TREE
        && startswith (IDENTIFIER_POINTER (name), "__builtin_"))
      {
        if (require_constant_value)
  	result
! 	  = fold_build_call_array_initializer_loc (loc, return_type,
  						   function, nargs, argarray);
        else
! 	result = fold_build_call_array_loc (loc, return_type,
  					    function, nargs, argarray);
        if (TREE_CODE (result) == NOP_EXPR
  	  && TREE_CODE (TREE_OPERAND (result, 0)) == INTEGER_CST)
  	STRIP_TYPE_NOPS (result);
      }
    else
!     result = build_call_array_loc (loc, return_type,
  				   function, nargs, argarray);
    /* If -Wnonnull warning has been diagnosed, avoid diagnosing it again
       later.  */
*************** build_function_call_vec (location_t loc,
*** 3231,3237 ****
    /* In this improbable scenario, a nested function returns a VM type.
       Create a TARGET_EXPR so that the call always has a LHS, much as
       what the C++ FE does for functions returning non-PODs.  */
!   if (variably_modified_type_p (TREE_TYPE (fntype), NULL_TREE))
      {
        tree tmp = create_tmp_var_raw (TREE_TYPE (fntype));
        result = build4 (TARGET_EXPR, TREE_TYPE (fntype), tmp, result,
--- 3336,3342 ----
    /* In this improbable scenario, a nested function returns a VM type.
       Create a TARGET_EXPR so that the call always has a LHS, much as
       what the C++ FE does for functions returning non-PODs.  */
!   if (C_TYPE_VARIABLY_MODIFIED (TREE_TYPE (fntype)))
      {
        tree tmp = create_tmp_var_raw (TREE_TYPE (fntype));
        result = build4 (TARGET_EXPR, TREE_TYPE (fntype), tmp, result,
*************** convert_arguments (location_t loc, vec<l
*** 3533,3538 ****
--- 3638,3644 ----
  	  case BUILT_IN_ISINF_SIGN:
  	  case BUILT_IN_ISNAN:
  	  case BUILT_IN_ISNORMAL:
+ 	  case BUILT_IN_ISSIGNALING:
  	  case BUILT_IN_FPCLASSIFY:
  	    type_generic_remove_excess_precision = true;
  	    break;
*************** convert_arguments (location_t loc, vec<l
*** 3652,3657 ****
--- 3758,3766 ----
  		promote_float_arg = false;
  		break;
  	      }
+ 	  /* Don't promote __bf16 either.  */
+ 	  if (TYPE_MAIN_VARIANT (valtype) == bfloat16_type_node)
+ 	    promote_float_arg = false;
  	}
  
        if (type != NULL_TREE)
*************** parser_build_unary_op (location_t loc, e
*** 3761,3766 ****
--- 3870,3876 ----
  
    result.original_code = code;
    result.original_type = NULL;
+   result.m_decimal = 0;
  
    if (reject_gcc_builtin (arg.value))
      {
*************** parser_build_binary_op (location_t locat
*** 3808,3813 ****
--- 3918,3924 ----
  			struct c_expr arg1, struct c_expr arg2)
  {
    struct c_expr result;
+   result.m_decimal = 0;
  
    enum tree_code code1 = arg1.original_code;
    enum tree_code code2 = arg2.original_code;
*************** parser_build_binary_op (location_t locat
*** 3822,3827 ****
--- 3933,3939 ----
  				  arg1.value, arg2.value, true);
    result.original_code = code;
    result.original_type = NULL;
+   result.m_decimal = 0;
  
    if (TREE_CODE (result.value) == ERROR_MARK)
      {
*************** parser_build_binary_op (location_t locat
*** 3900,3906 ****
  	    }
  	  while (1);
  	}
!       if (TREE_CODE (TREE_TYPE (t)) != BOOLEAN_TYPE)
  	warn_logical_not_parentheses (location, code, arg1.value, arg2.value);
      }
  
--- 4012,4018 ----
  	    }
  	  while (1);
  	}
!       if (!C_BOOLEAN_TYPE_P (TREE_TYPE (t)))
  	warn_logical_not_parentheses (location, code, arg1.value, arg2.value);
      }
  
*************** parser_build_binary_op (location_t locat
*** 3965,3970 ****
--- 4077,4090 ----
  		"comparison between %qT and %qT",
  		type1, type2);
  
+   if (warn_xor_used_as_pow
+       && code == BIT_XOR_EXPR
+       && arg1.m_decimal
+       && arg2.m_decimal)
+     check_for_xor_used_as_pow (arg1.get_location (), arg1.value,
+ 			       location,
+ 			       arg2.get_location (), arg2.value);
+ 
    return result;
  }
  
*************** build_unary_op (location_t location, enu
*** 4497,4503 ****
  	  while (TREE_CODE (e) == COMPOUND_EXPR)
  	    e = TREE_OPERAND (e, 1);
  
! 	  if ((TREE_CODE (TREE_TYPE (arg)) == BOOLEAN_TYPE
  	       || truth_value_p (TREE_CODE (e))))
  	    {
  	      auto_diagnostic_group d;
--- 4617,4623 ----
  	  while (TREE_CODE (e) == COMPOUND_EXPR)
  	    e = TREE_OPERAND (e, 1);
  
! 	  if ((C_BOOLEAN_TYPE_P (TREE_TYPE (arg))
  	       || truth_value_p (TREE_CODE (e))))
  	    {
  	      auto_diagnostic_group d;
*************** build_unary_op (location_t location, enu
*** 4562,4568 ****
      case TRUTH_NOT_EXPR:
        if (typecode != INTEGER_TYPE && typecode != FIXED_POINT_TYPE
  	  && typecode != REAL_TYPE && typecode != POINTER_TYPE
! 	  && typecode != COMPLEX_TYPE)
  	{
  	  error_at (location,
  		    "wrong type argument to unary exclamation mark");
--- 4682,4688 ----
      case TRUTH_NOT_EXPR:
        if (typecode != INTEGER_TYPE && typecode != FIXED_POINT_TYPE
  	  && typecode != REAL_TYPE && typecode != POINTER_TYPE
! 	  && typecode != COMPLEX_TYPE && typecode != NULLPTR_TYPE)
  	{
  	  error_at (location,
  		    "wrong type argument to unary exclamation mark");
*************** build_unary_op (location_t location, enu
*** 4629,4635 ****
  			"decrement of enumeration value is invalid in C++");
  	}
  
!       if (TREE_CODE (TREE_TYPE (arg)) == BOOLEAN_TYPE)
  	{
  	  if (code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
  	    warning_at (location, OPT_Wbool_operation,
--- 4749,4755 ----
  			"decrement of enumeration value is invalid in C++");
  	}
  
!       if (C_BOOLEAN_TYPE_P (TREE_TYPE (arg)))
  	{
  	  if (code == PREINCREMENT_EXPR || code == POSTINCREMENT_EXPR)
  	    warning_at (location, OPT_Wbool_operation,
*************** build_unary_op (location_t location, enu
*** 4791,4801 ****
  	    goto return_build_unary_op;
  	  }
  
! 	if (TREE_CODE (TREE_TYPE (arg)) == BOOLEAN_TYPE)
  	  val = boolean_increment (code, arg);
  	else
  	  val = build2 (code, TREE_TYPE (arg), arg, inc);
  	TREE_SIDE_EFFECTS (val) = 1;
  	ret = val;
  	goto return_build_unary_op;
        }
--- 4911,4924 ----
  	    goto return_build_unary_op;
  	  }
  
! 	if (C_BOOLEAN_TYPE_P (TREE_TYPE (arg)))
  	  val = boolean_increment (code, arg);
  	else
  	  val = build2 (code, TREE_TYPE (arg), arg, inc);
  	TREE_SIDE_EFFECTS (val) = 1;
+ 	if (TYPE_QUALS (TREE_TYPE (val)) != TYPE_UNQUALIFIED)
+ 	  TREE_TYPE (val) = c_build_qualified_type (TREE_TYPE (val),
+ 						    TYPE_UNQUALIFIED);
  	ret = val;
  	goto return_build_unary_op;
        }
*************** c_mark_addressable (tree exp, bool array
*** 5074,5079 ****
--- 5197,5207 ----
  	break;
  
        case COMPOUND_LITERAL_EXPR:
+ 	if (C_DECL_REGISTER (COMPOUND_LITERAL_EXPR_DECL (x)))
+ 	  {
+ 	    error ("address of register compound literal requested");
+ 	    return false;
+ 	  }
  	TREE_ADDRESSABLE (x) = 1;
  	TREE_ADDRESSABLE (COMPOUND_LITERAL_EXPR_DECL (x)) = 1;
  	return true;
*************** build_conditional_expr (location_t colon
*** 5502,5507 ****
--- 5630,5642 ----
  	}
        result_type = type2;
      }
+   /* 6.5.15: "if one is a null pointer constant (other than a pointer) or has
+      type nullptr_t and the other is a pointer, the result type is the pointer
+      type."  */
+   else if (code1 == NULLPTR_TYPE && code2 == POINTER_TYPE)
+     result_type = type2;
+   else if (code1 == POINTER_TYPE && code2 == NULLPTR_TYPE)
+     result_type = type1;
  
    if (!result_type)
      {
*************** build_c_cast (location_t loc, tree type,
*** 5980,5986 ****
  	  if (!maybe_const)
  	    t = c_wrap_maybe_const (t, true);
  	  t = digest_init (loc, type, t,
! 			   NULL_TREE, false, true, 0);
  	  TREE_CONSTANT (t) = TREE_CONSTANT (value);
  	  return t;
  	}
--- 6115,6121 ----
  	  if (!maybe_const)
  	    t = c_wrap_maybe_const (t, true);
  	  t = digest_init (loc, type, t,
! 			   NULL_TREE, false, false, false, true, false, false);
  	  TREE_CONSTANT (t) = TREE_CONSTANT (value);
  	  return t;
  	}
*************** build_c_cast (location_t loc, tree type,
*** 6019,6036 ****
  	  if (!addr_space_superset (as_to, as_from, &as_common))
  	    {
  	      if (ADDR_SPACE_GENERIC_P (as_from))
! 		warning_at (loc, 0, "cast to %s address space pointer "
  			    "from disjoint generic address space pointer",
  			    c_addr_space_name (as_to));
  
  	      else if (ADDR_SPACE_GENERIC_P (as_to))
  		warning_at (loc, 0, "cast to generic address space pointer "
! 			    "from disjoint %s address space pointer",
  			    c_addr_space_name (as_from));
  
  	      else
! 		warning_at (loc, 0, "cast to %s address space pointer "
! 			    "from disjoint %s address space pointer",
  			    c_addr_space_name (as_to),
  			    c_addr_space_name (as_from));
  	    }
--- 6154,6171 ----
  	  if (!addr_space_superset (as_to, as_from, &as_common))
  	    {
  	      if (ADDR_SPACE_GENERIC_P (as_from))
! 		warning_at (loc, 0, "cast to %qs address space pointer "
  			    "from disjoint generic address space pointer",
  			    c_addr_space_name (as_to));
  
  	      else if (ADDR_SPACE_GENERIC_P (as_to))
  		warning_at (loc, 0, "cast to generic address space pointer "
! 			    "from disjoint %qs address space pointer",
  			    c_addr_space_name (as_from));
  
  	      else
! 		warning_at (loc, 0, "cast to %qs address space pointer "
! 			    "from disjoint %qs address space pointer",
  			    c_addr_space_name (as_to),
  			    c_addr_space_name (as_from));
  	    }
*************** convert_for_assignment (location_t locat
*** 7032,7038 ****
  					 rhstype);
  
        bool save = in_late_binary_op;
!       if (codel == BOOLEAN_TYPE || codel == COMPLEX_TYPE
  	  || (coder == REAL_TYPE
  	      && (codel == INTEGER_TYPE || codel == ENUMERAL_TYPE)
  	      && sanitize_flags_p (SANITIZE_FLOAT_CAST)))
--- 7167,7173 ----
  					 rhstype);
  
        bool save = in_late_binary_op;
!       if (C_BOOLEAN_TYPE_P (type) || codel == COMPLEX_TYPE
  	  || (coder == REAL_TYPE
  	      && (codel == INTEGER_TYPE || codel == ENUMERAL_TYPE)
  	      && sanitize_flags_p (SANITIZE_FLOAT_CAST)))
*************** convert_for_assignment (location_t locat
*** 7239,7244 ****
--- 7374,7381 ----
        if (!null_pointer_constant_p (rhs)
  	  && asr != asl && !targetm.addr_space.subset_p (asr, asl))
  	{
+ 	  auto_diagnostic_group d;
+ 	  bool diagnosed = true;
  	  switch (errtype)
  	    {
  	    case ic_argpass:
*************** convert_for_assignment (location_t locat
*** 7246,7252 ****
  		const char msg[] = G_("passing argument %d of %qE from "
  				      "pointer to non-enclosed address space");
  		if (warnopt)
! 		  warning_at (expr_loc, warnopt, msg, parmnum, rname);
  		else
  		  error_at (expr_loc, msg, parmnum, rname);
  	      break;
--- 7383,7390 ----
  		const char msg[] = G_("passing argument %d of %qE from "
  				      "pointer to non-enclosed address space");
  		if (warnopt)
! 		  diagnosed
! 		    = warning_at (expr_loc, warnopt, msg, parmnum, rname);
  		else
  		  error_at (expr_loc, msg, parmnum, rname);
  	      break;
*************** convert_for_assignment (location_t locat
*** 7256,7262 ****
  		const char msg[] = G_("assignment from pointer to "
  				      "non-enclosed address space");
  		if (warnopt)
! 		  warning_at (location, warnopt, msg);
  		else
  		  error_at (location, msg);
  		break;
--- 7394,7400 ----
  		const char msg[] = G_("assignment from pointer to "
  				      "non-enclosed address space");
  		if (warnopt)
! 		  diagnosed = warning_at (location, warnopt, msg);
  		else
  		  error_at (location, msg);
  		break;
*************** convert_for_assignment (location_t locat
*** 7267,7273 ****
  		const char msg[] = G_("initialization from pointer to "
  				      "non-enclosed address space");
  		if (warnopt)
! 		  warning_at (location, warnopt, msg);
  		else
  		  error_at (location, msg);
  		break;
--- 7405,7411 ----
  		const char msg[] = G_("initialization from pointer to "
  				      "non-enclosed address space");
  		if (warnopt)
! 		  diagnosed = warning_at (location, warnopt, msg);
  		else
  		  error_at (location, msg);
  		break;
*************** convert_for_assignment (location_t locat
*** 7277,7283 ****
  		const char msg[] = G_("return from pointer to "
  				      "non-enclosed address space");
  		if (warnopt)
! 		  warning_at (location, warnopt, msg);
  		else
  		  error_at (location, msg);
  		break;
--- 7415,7421 ----
  		const char msg[] = G_("return from pointer to "
  				      "non-enclosed address space");
  		if (warnopt)
! 		  diagnosed = warning_at (location, warnopt, msg);
  		else
  		  error_at (location, msg);
  		break;
*************** convert_for_assignment (location_t locat
*** 7285,7290 ****
--- 7423,7436 ----
  	    default:
  	      gcc_unreachable ();
  	    }
+ 	  if (diagnosed)
+ 	    {
+ 	      if (errtype == ic_argpass)
+ 		inform_for_arg (fundecl, expr_loc, parmnum, type, rhstype);
+ 	      else
+ 		inform (location, "expected %qT but pointer is of type %qT",
+ 			type, rhstype);
+ 	    }
  	  return error_mark_node;
  	}
  
*************** convert_for_assignment (location_t locat
*** 7589,7600 ****
  	error_at (location, msg);
        return error_mark_node;
      }
!   else if (codel == POINTER_TYPE && coder == INTEGER_TYPE)
      {
!       /* An explicit constant 0 can convert to a pointer,
! 	 or one that results from arithmetic, even including
! 	 a cast to integer type.  */
!       if (!null_pointer_constant)
  	switch (errtype)
  	  {
  	  case ic_argpass:
--- 7735,7747 ----
  	error_at (location, msg);
        return error_mark_node;
      }
!   else if (codel == POINTER_TYPE
! 	   && (coder == INTEGER_TYPE || coder == NULLPTR_TYPE))
      {
!       /* An explicit constant 0 or type nullptr_t can convert to a pointer,
! 	 or one that results from arithmetic, even including a cast to
! 	 integer type.  */
!       if (!null_pointer_constant && coder != NULLPTR_TYPE)
  	switch (errtype)
  	  {
  	  case ic_argpass:
*************** convert_for_assignment (location_t locat
*** 7667,7673 ****
  
        return convert (type, rhs);
      }
!   else if (codel == BOOLEAN_TYPE && coder == POINTER_TYPE)
      {
        tree ret;
        bool save = in_late_binary_op;
--- 7814,7823 ----
  
        return convert (type, rhs);
      }
!   else if (C_BOOLEAN_TYPE_P (type)
! 	   /* The type nullptr_t may be converted to bool.  The
! 	      result is false.  */
! 	   && (coder == POINTER_TYPE || coder == NULLPTR_TYPE))
      {
        tree ret;
        bool save = in_late_binary_op;
*************** convert_for_assignment (location_t locat
*** 7676,7681 ****
--- 7826,7833 ----
        in_late_binary_op = save;
        return ret;
      }
+   else if (codel == NULLPTR_TYPE && null_pointer_constant)
+     return convert (type, rhs);
  
    switch (errtype)
      {
*************** store_init_value (location_t init_loc, t
*** 7766,7771 ****
--- 7918,7925 ----
  {
    tree value, type;
    bool npc = false;
+   bool int_const_expr = false;
+   bool arith_const_expr = false;
  
    /* If variable's type was invalidly declared, just ignore it.  */
  
*************** store_init_value (location_t init_loc, t
*** 7776,7784 ****
    /* Digest the specified initializer into an expression.  */
  
    if (init)
!     npc = null_pointer_constant_p (init);
!   value = digest_init (init_loc, type, init, origtype, npc,
!       		       true, TREE_STATIC (decl));
  
    /* Store the expression if valid; else report error.  */
  
--- 7930,7948 ----
    /* Digest the specified initializer into an expression.  */
  
    if (init)
!     {
!       npc = null_pointer_constant_p (init);
!       int_const_expr = (TREE_CODE (init) == INTEGER_CST
! 			&& !TREE_OVERFLOW (init)
! 			&& INTEGRAL_TYPE_P (TREE_TYPE (init)));
!       /* Not fully determined before folding.  */
!       arith_const_expr = true;
!     }
!   bool constexpr_p = (TREE_CODE (decl) == VAR_DECL
! 		      && C_DECL_DECLARED_CONSTEXPR (decl));
!   value = digest_init (init_loc, type, init, origtype, npc, int_const_expr,
! 		       arith_const_expr, true,
! 		       TREE_STATIC (decl) || constexpr_p, constexpr_p);
  
    /* Store the expression if valid; else report error.  */
  
*************** print_spelling (char *buffer)
*** 7948,7959 ****
    return buffer;
  }
  
  /* Digest the parser output INIT as an initializer for type TYPE.
     Return a C expression of type TYPE to represent the initial value.
  
     If ORIGTYPE is not NULL_TREE, it is the original type of INIT.
  
!    NULL_POINTER_CONSTANT is true if INIT is a null pointer constant.
  
     If INIT is a string constant, STRICT_STRING is true if it is
     unparenthesized or we should not warn here for it being parenthesized.
--- 8112,8283 ----
    return buffer;
  }
  
+ /* Check whether INIT, a floating or integer constant, is
+    representable in TYPE, a real floating type with the same radix or
+    a decimal floating type initialized with a binary floating
+    constant.  Return true if OK, false if not.  */
+ static bool
+ constexpr_init_fits_real_type (tree type, tree init)
+ {
+   gcc_assert (TREE_CODE (type) == REAL_TYPE);
+   gcc_assert (TREE_CODE (init) == INTEGER_CST || TREE_CODE (init) == REAL_CST);
+   if (TREE_CODE (init) == REAL_CST
+       && TYPE_MODE (TREE_TYPE (init)) == TYPE_MODE (type))
+     {
+       /* Same mode, no conversion required except for the case of
+ 	 signaling NaNs if the types are incompatible (e.g. double and
+ 	 long double with the same mode).  */
+       if (REAL_VALUE_ISSIGNALING_NAN (TREE_REAL_CST (init))
+ 	  && !comptypes (TYPE_MAIN_VARIANT (type),
+ 			 TYPE_MAIN_VARIANT (TREE_TYPE (init))))
+ 	return false;
+       return true;
+     }
+   if (TREE_CODE (init) == INTEGER_CST)
+     {
+       tree converted = build_real_from_int_cst (type, init);
+       bool fail = false;
+       wide_int w = real_to_integer (&TREE_REAL_CST (converted), &fail,
+ 				    TYPE_PRECISION (TREE_TYPE (init)));
+       return !fail && wi::eq_p (w, wi::to_wide (init));
+     }
+   if (REAL_VALUE_ISSIGNALING_NAN (TREE_REAL_CST (init)))
+     return false;
+   if ((REAL_VALUE_ISINF (TREE_REAL_CST (init))
+        && MODE_HAS_INFINITIES (TYPE_MODE (type)))
+       || (REAL_VALUE_ISNAN (TREE_REAL_CST (init))
+ 	  && MODE_HAS_NANS (TYPE_MODE (type))))
+     return true;
+   if (DECIMAL_FLOAT_TYPE_P (type)
+       && !DECIMAL_FLOAT_TYPE_P (TREE_TYPE (init)))
+     {
+       /* This is valid if the real number represented by the
+ 	 initializer can be exactly represented in the decimal
+ 	 type.  Compare the values using MPFR.  */
+       REAL_VALUE_TYPE t;
+       real_convert (&t, TYPE_MODE (type), &TREE_REAL_CST (init));
+       mpfr_t bin_val, dec_val;
+       mpfr_init2 (bin_val, REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (init)))->p);
+       mpfr_init2 (dec_val, REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (init)))->p);
+       mpfr_from_real (bin_val, &TREE_REAL_CST (init), MPFR_RNDN);
+       char string[256];
+       real_to_decimal (string, &t, sizeof string, 0, 1);
+       bool res = (mpfr_strtofr (dec_val, string, NULL, 10, MPFR_RNDN) == 0
+ 		  && mpfr_equal_p (bin_val, dec_val));
+       mpfr_clear (bin_val);
+       mpfr_clear (dec_val);
+       return res;
+     }
+   /* exact_real_truncate is not quite right here, since it doesn't
+      allow even an exact conversion to subnormal values.  */
+   REAL_VALUE_TYPE t;
+   real_convert (&t, TYPE_MODE (type), &TREE_REAL_CST (init));
+   return real_identical (&t, &TREE_REAL_CST (init));
+ }
+ 
+ /* Check whether INIT (location LOC) is valid as a 'constexpr'
+    initializer for type TYPE, and give an error if not.  INIT has
+    already been folded and verified to be constant.  INT_CONST_EXPR
+    and ARITH_CONST_EXPR say whether it is an integer constant
+    expression or arithmetic constant expression, respectively.  If
+    TYPE is not a scalar type, this function does nothing.  */
+ 
+ static void
+ check_constexpr_init (location_t loc, tree type, tree init,
+ 		      bool int_const_expr, bool arith_const_expr)
+ {
+   if (POINTER_TYPE_P (type))
+     {
+       /* The initializer must be null.  */
+       if (TREE_CODE (init) != INTEGER_CST || !integer_zerop (init))
+ 	error_at (loc, "%<constexpr%> pointer initializer is not null");
+       return;
+     }
+   if (INTEGRAL_TYPE_P (type))
+     {
+       /* The initializer must be an integer constant expression,
+ 	 representable in the target type.  */
+       if (!int_const_expr)
+ 	error_at (loc, "%<constexpr%> integer initializer is not an "
+ 		  "integer constant expression");
+       if (!int_fits_type_p (init, type))
+ 	error_at (loc, "%<constexpr%> initializer not representable in "
+ 		  "type of object");
+       return;
+     }
+   /* We don't apply any extra checks to extension types such as vector
+      or fixed-point types.  */
+   if (TREE_CODE (type) != REAL_TYPE && TREE_CODE (type) != COMPLEX_TYPE)
+     return;
+   if (!arith_const_expr)
+     {
+       error_at (loc, "%<constexpr%> initializer is not an arithmetic "
+ 		"constant expression");
+       return;
+     }
+   /* We don't apply any extra checks to complex integers.  */
+   if (TREE_CODE (type) == COMPLEX_TYPE
+       && TREE_CODE (TREE_TYPE (type)) != REAL_TYPE)
+     return;
+   /* Following N3082, a real type cannot be initialized from a complex
+      type and a binary type cannot be initialized from a decimal type
+      (but initializing a decimal type from a binary type is OK).
+      Signaling NaN initializers are OK only if the types are
+      compatible (not just the same mode); all quiet NaN and infinity
+      initializations are considered to preserve the value.  */
+   if (TREE_CODE (TREE_TYPE (init)) == COMPLEX_TYPE
+       && TREE_CODE (type) == REAL_TYPE)
+     {
+       error_at (loc, "%<constexpr%> initializer for a real type is of "
+ 		"complex type");
+       return;
+     }
+   if (TREE_CODE (type) == REAL_TYPE
+       && TREE_CODE (TREE_TYPE (init)) == REAL_TYPE
+       && DECIMAL_FLOAT_TYPE_P (TREE_TYPE (init))
+       && !DECIMAL_FLOAT_TYPE_P (type))
+     {
+       error_at (loc, "%<constexpr%> initializer for a binary "
+ 		"floating-point type is of decimal type");
+       return;
+     }
+   bool fits;
+   if (TREE_CODE (type) == COMPLEX_TYPE)
+     {
+       switch (TREE_CODE (init))
+ 	{
+ 	case INTEGER_CST:
+ 	case REAL_CST:
+ 	  fits = constexpr_init_fits_real_type (TREE_TYPE (type), init);
+ 	  break;
+ 	case COMPLEX_CST:
+ 	  fits = (constexpr_init_fits_real_type (TREE_TYPE (type),
+ 						 TREE_REALPART (init))
+ 		  && constexpr_init_fits_real_type (TREE_TYPE (type),
+ 						    TREE_IMAGPART (init)));
+ 	  break;
+ 	default:
+ 	  gcc_unreachable ();
+ 	}
+     }
+   else
+     fits = constexpr_init_fits_real_type (type, init);
+   if (!fits)
+     error_at (loc, "%<constexpr%> initializer not representable in "
+ 	      "type of object");
+ }
+ 
  /* Digest the parser output INIT as an initializer for type TYPE.
     Return a C expression of type TYPE to represent the initial value.
  
     If ORIGTYPE is not NULL_TREE, it is the original type of INIT.
  
!    NULL_POINTER_CONSTANT is true if INIT is a null pointer constant,
!    INT_CONST_EXPR is true if INIT is an integer constant expression,
!    and ARITH_CONST_EXPR is true if INIT is, or might be, an arithmetic
!    constant expression, false if it has already been determined in the
!    caller that it is not (but folding may have made the value passed here
!    indistinguishable from an arithmetic constant expression).
  
     If INIT is a string constant, STRICT_STRING is true if it is
     unparenthesized or we should not warn here for it being parenthesized.
*************** print_spelling (char *buffer)
*** 7962,7973 ****
     INIT_LOC is the location of the INIT.
  
     REQUIRE_CONSTANT requests an error if non-constant initializers or
!    elements are seen.  */
  
  static tree
  digest_init (location_t init_loc, tree type, tree init, tree origtype,
!     	     bool null_pointer_constant, bool strict_string,
! 	     int require_constant)
  {
    enum tree_code code = TREE_CODE (type);
    tree inside_init = init;
--- 8286,8299 ----
     INIT_LOC is the location of the INIT.
  
     REQUIRE_CONSTANT requests an error if non-constant initializers or
!    elements are seen.  REQUIRE_CONSTEXPR means the stricter requirements
!    on initializers for 'constexpr' objects apply.  */
  
  static tree
  digest_init (location_t init_loc, tree type, tree init, tree origtype,
!     	     bool null_pointer_constant, bool int_const_expr,
! 	     bool arith_const_expr, bool strict_string,
! 	     bool require_constant, bool require_constexpr)
  {
    enum tree_code code = TREE_CODE (type);
    tree inside_init = init;
*************** digest_init (location_t init_loc, tree t
*** 7990,7995 ****
--- 8316,8335 ----
  	}
        inside_init = c_fully_fold (inside_init, require_constant, &maybe_const);
      }
+   /* TODO: this may not detect all cases of expressions folding to
+      constants that are not arithmetic constant expressions.  */
+   if (!maybe_const)
+     arith_const_expr = false;
+   else if (!INTEGRAL_TYPE_P (TREE_TYPE (inside_init))
+       && TREE_CODE (TREE_TYPE (inside_init)) != REAL_TYPE
+       && TREE_CODE (TREE_TYPE (inside_init)) != COMPLEX_TYPE)
+     arith_const_expr = false;
+   else if (TREE_CODE (inside_init) != INTEGER_CST
+       && TREE_CODE (inside_init) != REAL_CST
+       && TREE_CODE (inside_init) != COMPLEX_CST)
+     arith_const_expr = false;
+   else if (TREE_OVERFLOW (inside_init))
+     arith_const_expr = false;
  
    /* Initialization of an array of chars from a string constant
       optionally enclosed in braces.  */
*************** digest_init (location_t init_loc, tree t
*** 8020,8025 ****
--- 8360,8366 ----
  	  expr.value = inside_init;
  	  expr.original_code = (strict_string ? STRING_CST : ERROR_MARK);
  	  expr.original_type = NULL;
+ 	  expr.m_decimal = 0;
  	  maybe_warn_string_init (init_loc, type, expr);
  
  	  if (TYPE_DOMAIN (type) && !TYPE_MAX_VALUE (TYPE_DOMAIN (type)))
*************** digest_init (location_t init_loc, tree t
*** 8032,8038 ****
  
  	  if (char_array)
  	    {
! 	      if (typ2 != char_type_node)
  		incompat_string_cst = true;
  	    }
  	  else if (!comptypes (typ1, typ2))
--- 8373,8379 ----
  
  	  if (char_array)
  	    {
! 	      if (typ2 != char_type_node && typ2 != char8_type_node)
  		incompat_string_cst = true;
  	    }
  	  else if (!comptypes (typ1, typ2))
*************** digest_init (location_t init_loc, tree t
*** 8046,8051 ****
--- 8387,8411 ----
  	      return error_mark_node;
              }
  
+ 	  if (require_constexpr
+ 	      && TYPE_UNSIGNED (typ1) != TYPE_UNSIGNED (typ2))
+ 	    {
+ 	      /* Check if all characters of the string can be
+ 		 represented in the type of the constexpr object being
+ 		 initialized.  */
+ 	      unsigned HOST_WIDE_INT len = TREE_STRING_LENGTH (inside_init);
+ 	      const unsigned char *p =
+ 		(const unsigned char *) TREE_STRING_POINTER (inside_init);
+ 	      gcc_assert (CHAR_TYPE_SIZE == 8 && CHAR_BIT == 8);
+ 	      for (unsigned i = 0; i < len; i++)
+ 		if (p[i] > 127)
+ 		  {
+ 		    error_init (init_loc, "%<constexpr%> initializer not "
+ 				"representable in type of object");
+ 		    break;
+ 		  }
+ 	    }
+ 
  	  if (TYPE_DOMAIN (type) != NULL_TREE
  	      && TYPE_SIZE (type) != NULL_TREE
  	      && TREE_CODE (TYPE_SIZE (type)) == INTEGER_CST)
*************** digest_init (location_t init_loc, tree t
*** 8208,8213 ****
--- 8568,8576 ----
        else if (require_constant && !maybe_const)
  	pedwarn_init (init_loc, OPT_Wpedantic,
  		      "initializer element is not a constant expression");
+       else if (require_constexpr)
+ 	check_constexpr_init (init_loc, type, inside_init,
+ 			      int_const_expr, arith_const_expr);
  
        /* Added to enable additional -Wsuggest-attribute=format warnings.  */
        if (TREE_CODE (TREE_TYPE (inside_init)) == POINTER_TYPE)
*************** digest_init (location_t init_loc, tree t
*** 8224,8231 ****
  
    if (code == INTEGER_TYPE || code == REAL_TYPE || code == FIXED_POINT_TYPE
        || code == POINTER_TYPE || code == ENUMERAL_TYPE || code == BOOLEAN_TYPE
!       || code == COMPLEX_TYPE || code == VECTOR_TYPE)
      {
        if (TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE
  	  && (TREE_CODE (init) == STRING_CST
  	      || TREE_CODE (init) == COMPOUND_LITERAL_EXPR))
--- 8587,8595 ----
  
    if (code == INTEGER_TYPE || code == REAL_TYPE || code == FIXED_POINT_TYPE
        || code == POINTER_TYPE || code == ENUMERAL_TYPE || code == BOOLEAN_TYPE
!       || code == COMPLEX_TYPE || code == VECTOR_TYPE || code == NULLPTR_TYPE)
      {
+       tree unconverted_init = inside_init;
        if (TREE_CODE (TREE_TYPE (init)) == ARRAY_TYPE
  	  && (TREE_CODE (init) == STRING_CST
  	      || TREE_CODE (init) == COMPOUND_LITERAL_EXPR))
*************** digest_init (location_t init_loc, tree t
*** 8259,8264 ****
--- 8623,8631 ----
        else if (require_constant && !maybe_const)
  	pedwarn_init (init_loc, OPT_Wpedantic,
  		      "initializer element is not a constant expression");
+       else if (require_constexpr)
+ 	check_constexpr_init (init_loc, type, unconverted_init,
+ 			      int_const_expr, arith_const_expr);
  
        return inside_init;
      }
*************** digest_init (location_t init_loc, tree t
*** 8267,8273 ****
  
    if (COMPLETE_TYPE_P (type) && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
      {
!       error_init (init_loc, "variable-sized object may not be initialized");
        return error_mark_node;
      }
  
--- 8634,8642 ----
  
    if (COMPLETE_TYPE_P (type) && TREE_CODE (TYPE_SIZE (type)) != INTEGER_CST)
      {
!       error_init (init_loc,
! 		  "variable-sized object may not be initialized except "
! 		  "with an empty initializer");
        return error_mark_node;
      }
  
*************** static int constructor_depth;
*** 8356,8364 ****
     such as (struct foo) {...}.  */
  static tree constructor_decl;
  
- /* Nonzero if this is an initializer for a top-level decl.  */
- static int constructor_top_level;
- 
  /* Nonzero if there were any member designators in this initializer.  */
  static int constructor_designated;
  
--- 8725,8730 ----
*************** struct initializer_stack
*** 8435,8443 ****
    struct spelling *spelling;
    struct spelling *spelling_base;
    int spelling_size;
-   char top_level;
    char require_constant_value;
    char require_constant_elements;
    char designated;
    rich_location *missing_brace_richloc;
  };
--- 8801,8809 ----
    struct spelling *spelling;
    struct spelling *spelling_base;
    int spelling_size;
    char require_constant_value;
    char require_constant_elements;
+   char require_constexpr_value;
    char designated;
    rich_location *missing_brace_richloc;
  };
*************** static struct initializer_stack *initial
*** 8447,8453 ****
  /* Prepare to parse and output the initializer for variable DECL.  */
  
  void
! start_init (tree decl, tree asmspec_tree ATTRIBUTE_UNUSED, int top_level,
  	    rich_location *richloc)
  {
    const char *locus;
--- 8813,8820 ----
  /* Prepare to parse and output the initializer for variable DECL.  */
  
  void
! start_init (tree decl, tree asmspec_tree ATTRIBUTE_UNUSED,
! 	    bool init_require_constant, bool init_require_constexpr,
  	    rich_location *richloc)
  {
    const char *locus;
*************** start_init (tree decl, tree asmspec_tree
*** 8456,8468 ****
    p->decl = constructor_decl;
    p->require_constant_value = require_constant_value;
    p->require_constant_elements = require_constant_elements;
    p->constructor_stack = constructor_stack;
    p->constructor_range_stack = constructor_range_stack;
    p->elements = constructor_elements;
    p->spelling = spelling;
    p->spelling_base = spelling_base;
    p->spelling_size = spelling_size;
-   p->top_level = constructor_top_level;
    p->next = initializer_stack;
    p->missing_brace_richloc = richloc;
    p->designated = constructor_designated;
--- 8823,8835 ----
    p->decl = constructor_decl;
    p->require_constant_value = require_constant_value;
    p->require_constant_elements = require_constant_elements;
+   p->require_constexpr_value = require_constexpr_value;
    p->constructor_stack = constructor_stack;
    p->constructor_range_stack = constructor_range_stack;
    p->elements = constructor_elements;
    p->spelling = spelling;
    p->spelling_base = spelling_base;
    p->spelling_size = spelling_size;
    p->next = initializer_stack;
    p->missing_brace_richloc = richloc;
    p->designated = constructor_designated;
*************** start_init (tree decl, tree asmspec_tree
*** 8470,8482 ****
  
    constructor_decl = decl;
    constructor_designated = 0;
-   constructor_top_level = top_level;
  
    if (decl != NULL_TREE && decl != error_mark_node)
      {
-       require_constant_value = TREE_STATIC (decl);
        require_constant_elements
! 	= ((TREE_STATIC (decl) || (pedantic && !flag_isoc99))
  	   /* For a scalar, you can always use any value to initialize,
  	      even within braces.  */
  	   && AGGREGATE_TYPE_P (TREE_TYPE (decl)));
--- 8837,8849 ----
  
    constructor_decl = decl;
    constructor_designated = 0;
  
+   require_constant_value = init_require_constant;
+   require_constexpr_value = init_require_constexpr;
    if (decl != NULL_TREE && decl != error_mark_node)
      {
        require_constant_elements
! 	= ((init_require_constant || (pedantic && !flag_isoc99))
  	   /* For a scalar, you can always use any value to initialize,
  	      even within braces.  */
  	   && AGGREGATE_TYPE_P (TREE_TYPE (decl)));
*************** start_init (tree decl, tree asmspec_tree
*** 8484,8491 ****
      }
    else
      {
!       require_constant_value = 0;
!       require_constant_elements = 0;
        locus = _("(anonymous)");
      }
  
--- 8851,8857 ----
      }
    else
      {
!       require_constant_elements = false;
        locus = _("(anonymous)");
      }
  
*************** finish_init (void)
*** 8523,8528 ****
--- 8889,8895 ----
    constructor_decl = p->decl;
    require_constant_value = p->require_constant_value;
    require_constant_elements = p->require_constant_elements;
+   require_constexpr_value = p->require_constexpr_value;
    constructor_stack = p->constructor_stack;
    constructor_designated = p->designated;
    constructor_range_stack = p->constructor_range_stack;
*************** finish_init (void)
*** 8530,8536 ****
    spelling = p->spelling;
    spelling_base = p->spelling_base;
    spelling_size = p->spelling_size;
-   constructor_top_level = p->top_level;
    initializer_stack = p->next;
    XDELETE (p);
  }
--- 8897,8902 ----
*************** really_start_incremental_init (tree type
*** 8617,8624 ****
  	    constructor_max_index = integer_minus_one_node;
  
  	  /* constructor_max_index needs to be an INTEGER_CST.  Attempts
! 	     to initialize VLAs will cause a proper error; avoid tree
! 	     checking errors as well by setting a safe value.  */
  	  if (constructor_max_index
  	      && TREE_CODE (constructor_max_index) != INTEGER_CST)
  	    constructor_max_index = integer_minus_one_node;
--- 8983,8991 ----
  	    constructor_max_index = integer_minus_one_node;
  
  	  /* constructor_max_index needs to be an INTEGER_CST.  Attempts
! 	     to initialize VLAs with a nonempty initializer will cause a
! 	     proper error; avoid tree checking errors as well by setting a
! 	     safe value.  */
  	  if (constructor_max_index
  	      && TREE_CODE (constructor_max_index) != INTEGER_CST)
  	    constructor_max_index = integer_minus_one_node;
*************** pop_init_level (location_t loc, int impl
*** 8881,8886 ****
--- 9248,9254 ----
    ret.value = NULL_TREE;
    ret.original_code = ERROR_MARK;
    ret.original_type = NULL;
+   ret.m_decimal = 0;
  
    if (implicit == 0)
      {
*************** pop_init_level (location_t loc, int impl
*** 9000,9011 ****
  	   && !gnu_vector_type_p (constructor_type))
      {
        /* A nonincremental scalar initializer--just return
! 	 the element, after verifying there is just one.  */
        if (vec_safe_is_empty (constructor_elements))
  	{
! 	  if (!constructor_erroneous && constructor_type != error_mark_node)
! 	    error_init (loc, "empty scalar initializer");
! 	  ret.value = error_mark_node;
  	}
        else if (vec_safe_length (constructor_elements) != 1)
  	{
--- 9368,9385 ----
  	   && !gnu_vector_type_p (constructor_type))
      {
        /* A nonincremental scalar initializer--just return
! 	 the element, after verifying there is just one.
!          Empty scalar initializers are supported in C2X.  */
        if (vec_safe_is_empty (constructor_elements))
  	{
! 	  if (constructor_erroneous || constructor_type == error_mark_node)
! 	    ret.value = error_mark_node;
! 	  else if (TREE_CODE (constructor_type) == POINTER_TYPE)
! 	    /* Ensure this is a null pointer constant in the case of a
! 	       'constexpr' object initialized with {}.  */
! 	    ret.value = build_zero_cst (ptr_type_node);
! 	  else
! 	    ret.value = build_zero_cst (constructor_type);
  	}
        else if (vec_safe_length (constructor_elements) != 1)
  	{
*************** set_designator (location_t loc, bool arr
*** 9090,9096 ****
      return true;
  
    /* Likewise for an initializer for a variable-size type.  Those are
!      diagnosed in digest_init.  */
    if (COMPLETE_TYPE_P (constructor_type)
        && TREE_CODE (TYPE_SIZE (constructor_type)) != INTEGER_CST)
      return true;
--- 9464,9470 ----
      return true;
  
    /* Likewise for an initializer for a variable-size type.  Those are
!      diagnosed in the parser, except for empty initializer braces.  */
    if (COMPLETE_TYPE_P (constructor_type)
        && TREE_CODE (TYPE_SIZE (constructor_type)) != INTEGER_CST)
      return true;
*************** output_init_element (location_t loc, tre
*** 9752,9758 ****
  {
    tree semantic_type = NULL_TREE;
    bool maybe_const = true;
!   bool npc;
  
    if (type == error_mark_node || value == error_mark_node)
      {
--- 10126,10132 ----
  {
    tree semantic_type = NULL_TREE;
    bool maybe_const = true;
!   bool npc, int_const_expr, arith_const_expr;
  
    if (type == error_mark_node || value == error_mark_node)
      {
*************** output_init_element (location_t loc, tre
*** 9783,9794 ****
--- 10157,10187 ----
      }
  
    npc = null_pointer_constant_p (value);
+   int_const_expr = (TREE_CODE (value) == INTEGER_CST
+ 		    && !TREE_OVERFLOW (value)
+ 		    && INTEGRAL_TYPE_P (TREE_TYPE (value)));
+   /* Not fully determined before folding.  */
+   arith_const_expr = true;
    if (TREE_CODE (value) == EXCESS_PRECISION_EXPR)
      {
        semantic_type = TREE_TYPE (value);
        value = TREE_OPERAND (value, 0);
      }
    value = c_fully_fold (value, require_constant_value, &maybe_const);
+   /* TODO: this may not detect all cases of expressions folding to
+      constants that are not arithmetic constant expressions.  */
+   if (!maybe_const)
+     arith_const_expr = false;
+   else if (!INTEGRAL_TYPE_P (TREE_TYPE (value))
+       && TREE_CODE (TREE_TYPE (value)) != REAL_TYPE
+       && TREE_CODE (TREE_TYPE (value)) != COMPLEX_TYPE)
+     arith_const_expr = false;
+   else if (TREE_CODE (value) != INTEGER_CST
+       && TREE_CODE (value) != REAL_CST
+       && TREE_CODE (value) != COMPLEX_CST)
+     arith_const_expr = false;
+   else if (TREE_OVERFLOW (value))
+     arith_const_expr = false;
  
    if (value == error_mark_node)
      constructor_erroneous = 1;
*************** output_init_element (location_t loc, tre
*** 9811,9818 ****
    tree new_value = value;
    if (semantic_type)
      new_value = build1 (EXCESS_PRECISION_EXPR, semantic_type, value);
!   new_value = digest_init (loc, type, new_value, origtype, npc, strict_string,
! 			   require_constant_value);
    if (new_value == error_mark_node)
      {
        constructor_erroneous = 1;
--- 10204,10221 ----
    tree new_value = value;
    if (semantic_type)
      new_value = build1 (EXCESS_PRECISION_EXPR, semantic_type, value);
!   /* In the case of braces around a scalar initializer, the result of
!      this initializer processing goes through digest_init again at the
!      outer level.  In the case of a constexpr initializer for a
!      pointer, avoid converting a null pointer constant to something
!      that is not a null pointer constant to avoid a spurious error
!      from that second processing.  */
!   if (!require_constexpr_value
!       || !npc
!       || TREE_CODE (constructor_type) != POINTER_TYPE)
!     new_value = digest_init (loc, type, new_value, origtype, npc,
! 			     int_const_expr, arith_const_expr, strict_string,
! 			     require_constant_value, require_constexpr_value);
    if (new_value == error_mark_node)
      {
        constructor_erroneous = 1;
*************** output_init_element (location_t loc, tre
*** 9837,9842 ****
--- 10240,10250 ----
  	   && (require_constant_value || require_constant_elements))
      pedwarn_init (loc, OPT_Wpedantic,
  		  "initializer element is not a constant expression");
+   /* digest_init has already carried out the additional checks
+      required for 'constexpr' initializers (using the information
+      passed to it about whether the original initializer was certain
+      kinds of constant expression), so that check does not need to be
+      repeated here.  */
  
    /* Issue -Wc++-compat warnings about initializing a bitfield with
       enum type.  */
*************** process_init_element (location_t loc, st
*** 10251,10257 ****
      return;
  
    /* Ignore elements of an initializer for a variable-size type.
!      Those are diagnosed in digest_init.  */
    if (COMPLETE_TYPE_P (constructor_type)
        && !poly_int_tree_p (TYPE_SIZE (constructor_type)))
      return;
--- 10659,10665 ----
      return;
  
    /* Ignore elements of an initializer for a variable-size type.
!      Those are diagnosed in the parser (empty initializer braces are OK).  */
    if (COMPLETE_TYPE_P (constructor_type)
        && !poly_int_tree_p (TYPE_SIZE (constructor_type)))
      return;
*************** c_finish_return (location_t loc, tree re
*** 10925,10931 ****
  	return NULL_TREE;
  
        save = in_late_binary_op;
!       if (TREE_CODE (TREE_TYPE (res)) == BOOLEAN_TYPE
  	  || TREE_CODE (TREE_TYPE (res)) == COMPLEX_TYPE
  	  || (TREE_CODE (TREE_TYPE (t)) == REAL_TYPE
  	      && (TREE_CODE (TREE_TYPE (res)) == INTEGER_TYPE
--- 11333,11339 ----
  	return NULL_TREE;
  
        save = in_late_binary_op;
!       if (C_BOOLEAN_TYPE_P (TREE_TYPE (res))
  	  || TREE_CODE (TREE_TYPE (res)) == COMPLEX_TYPE
  	  || (TREE_CODE (TREE_TYPE (t)) == REAL_TYPE
  	      && (TREE_CODE (TREE_TYPE (res)) == INTEGER_TYPE
*************** c_start_switch (location_t switch_loc,
*** 11087,11093 ****
  	  while (TREE_CODE (e) == COMPOUND_EXPR)
  	    e = TREE_OPERAND (e, 1);
  
! 	  if ((TREE_CODE (type) == BOOLEAN_TYPE
  	       || truth_value_p (TREE_CODE (e)))
  	      /* Explicit cast to int suppresses this warning.  */
  	      && !(TREE_CODE (type) == INTEGER_TYPE
--- 11495,11501 ----
  	  while (TREE_CODE (e) == COMPOUND_EXPR)
  	    e = TREE_OPERAND (e, 1);
  
! 	  if ((C_BOOLEAN_TYPE_P (type)
  	       || truth_value_p (TREE_CODE (e)))
  	      /* Explicit cast to int suppresses this warning.  */
  	      && !(TREE_CODE (type) == INTEGER_TYPE
*************** c_start_switch (location_t switch_loc,
*** 11124,11133 ****
    return add_stmt (cs->switch_stmt);
  }
  
! /* Process a case label at location LOC.  */
  
  tree
! do_case (location_t loc, tree low_value, tree high_value)
  {
    tree label = NULL_TREE;
  
--- 11532,11541 ----
    return add_stmt (cs->switch_stmt);
  }
  
! /* Process a case label at location LOC, with attributes ATTRS.  */
  
  tree
! do_case (location_t loc, tree low_value, tree high_value, tree attrs)
  {
    tree label = NULL_TREE;
  
*************** do_case (location_t loc, tree low_value,
*** 11163,11169 ****
  
    label = c_add_case_label (loc, c_switch_stack->cases,
  			    SWITCH_STMT_COND (c_switch_stack->switch_stmt),
! 			    low_value, high_value);
    if (label == error_mark_node)
      label = NULL_TREE;
    return label;
--- 11571,11577 ----
  
    label = c_add_case_label (loc, c_switch_stack->cases,
  			    SWITCH_STMT_COND (c_switch_stack->switch_stmt),
! 			    low_value, high_value, attrs);
    if (label == error_mark_node)
      label = NULL_TREE;
    return label;
*************** maybe_warn_for_null_address (location_t
*** 11681,11698 ****
        || from_macro_expansion_at (loc))
      return;
  
    if (code == EQ_EXPR)
!     warning_at (loc, OPT_Waddress,
! 		"the comparison will always evaluate as %<false%> "
! 		"for the address of %qE will never be NULL",
! 		op);
    else
!     warning_at (loc, OPT_Waddress,
! 		"the comparison will always evaluate as %<true%> "
! 		"for the address of %qE will never be NULL",
! 		op);
  
!   if (DECL_P (op))
      inform (DECL_SOURCE_LOCATION (op), "%qD declared here", op);
  }
  
--- 12089,12107 ----
        || from_macro_expansion_at (loc))
      return;
  
+   bool w;
    if (code == EQ_EXPR)
!     w = warning_at (loc, OPT_Waddress,
! 		    "the comparison will always evaluate as %<false%> "
! 		    "for the address of %qE will never be NULL",
! 		    op);
    else
!     w = warning_at (loc, OPT_Waddress,
! 		    "the comparison will always evaluate as %<true%> "
! 		    "for the address of %qE will never be NULL",
! 		    op);
  
!   if (w && DECL_P (op))
      inform (DECL_SOURCE_LOCATION (op), "%qD declared here", op);
  }
  
*************** build_binary_op (location_t location, en
*** 11917,11924 ****
    if ((gnu_vector_type_p (type0) && code1 != VECTOR_TYPE)
        || (gnu_vector_type_p (type1) && code0 != VECTOR_TYPE))
      {
!       enum stv_conv convert_flag = scalar_to_vector (location, code, op0, op1,
! 						     true);
  
        switch (convert_flag)
  	{
--- 12326,12333 ----
    if ((gnu_vector_type_p (type0) && code1 != VECTOR_TYPE)
        || (gnu_vector_type_p (type1) && code0 != VECTOR_TYPE))
      {
!       enum stv_conv convert_flag = scalar_to_vector (location, code, orig_op0,
! 						     orig_op1, true);
  
        switch (convert_flag)
  	{
*************** build_binary_op (location_t location, en
*** 12033,12041 ****
  	       undefined if the quotient can't be represented in the
  	       computation mode.  We shorten only if unsigned or if
  	       dividing by something we know != -1.  */
! 	    shorten = (TYPE_UNSIGNED (TREE_TYPE (orig_op0))
! 		       || (TREE_CODE (op1) == INTEGER_CST
! 			   && !integer_all_onesp (op1)));
  	  common = 1;
  	}
        break;
--- 12442,12448 ----
  	       undefined if the quotient can't be represented in the
  	       computation mode.  We shorten only if unsigned or if
  	       dividing by something we know != -1.  */
! 	    shorten = may_shorten_divmod (op0, op1);
  	  common = 1;
  	}
        break;
*************** build_binary_op (location_t location, en
*** 12069,12077 ****
  	     on some targets, since the modulo instruction is undefined if the
  	     quotient can't be represented in the computation mode.  We shorten
  	     only if unsigned or if dividing by something we know != -1.  */
! 	  shorten = (TYPE_UNSIGNED (TREE_TYPE (orig_op0))
! 		     || (TREE_CODE (op1) == INTEGER_CST
! 			 && !integer_all_onesp (op1)));
  	  common = 1;
  	}
        break;
--- 12476,12482 ----
  	     on some targets, since the modulo instruction is undefined if the
  	     quotient can't be represented in the computation mode.  We shorten
  	     only if unsigned or if dividing by something we know != -1.  */
! 	  shorten = may_shorten_divmod (op0, op1);
  	  common = 1;
  	}
        break;
*************** build_binary_op (location_t location, en
*** 12083,12092 ****
      case TRUTH_XOR_EXPR:
        if ((code0 == INTEGER_TYPE || code0 == POINTER_TYPE
  	   || code0 == REAL_TYPE || code0 == COMPLEX_TYPE
! 	   || code0 == FIXED_POINT_TYPE)
  	  && (code1 == INTEGER_TYPE || code1 == POINTER_TYPE
  	      || code1 == REAL_TYPE || code1 == COMPLEX_TYPE
! 	      || code1 == FIXED_POINT_TYPE))
  	{
  	  /* Result of these operations is always an int,
  	     but that does not mean the operands should be
--- 12488,12497 ----
      case TRUTH_XOR_EXPR:
        if ((code0 == INTEGER_TYPE || code0 == POINTER_TYPE
  	   || code0 == REAL_TYPE || code0 == COMPLEX_TYPE
! 	   || code0 == FIXED_POINT_TYPE || code0 == NULLPTR_TYPE)
  	  && (code1 == INTEGER_TYPE || code1 == POINTER_TYPE
  	      || code1 == REAL_TYPE || code1 == COMPLEX_TYPE
! 	      || code1 == FIXED_POINT_TYPE || code1 ==  NULLPTR_TYPE))
  	{
  	  /* Result of these operations is always an int,
  	     but that does not mean the operands should be
*************** build_binary_op (location_t location, en
*** 12330,12341 ****
  	  && (code1 == INTEGER_TYPE || code1 == REAL_TYPE
  	      || code1 == FIXED_POINT_TYPE || code1 == COMPLEX_TYPE))
  	short_compare = 1;
!       else if (code0 == POINTER_TYPE && null_pointer_constant_p (orig_op1))
  	{
  	  maybe_warn_for_null_address (location, op0, code);
  	  result_type = type0;
  	}
!       else if (code1 == POINTER_TYPE && null_pointer_constant_p (orig_op0))
  	{
  	  maybe_warn_for_null_address (location, op1, code);
  	  result_type = type1;
--- 12735,12750 ----
  	  && (code1 == INTEGER_TYPE || code1 == REAL_TYPE
  	      || code1 == FIXED_POINT_TYPE || code1 == COMPLEX_TYPE))
  	short_compare = 1;
!       else if (code0 == POINTER_TYPE
! 	       && (code1 == NULLPTR_TYPE
! 		   || null_pointer_constant_p (orig_op1)))
  	{
  	  maybe_warn_for_null_address (location, op0, code);
  	  result_type = type0;
  	}
!       else if (code1 == POINTER_TYPE
! 	       && (code0 == NULLPTR_TYPE
! 		   || null_pointer_constant_p (orig_op0)))
  	{
  	  maybe_warn_for_null_address (location, op1, code);
  	  result_type = type1;
*************** build_binary_op (location_t location, en
*** 12394,12402 ****
  	  result_type = type1;
  	  pedwarn (location, 0, "comparison between pointer and integer");
  	}
!       if ((TREE_CODE (TREE_TYPE (orig_op0)) == BOOLEAN_TYPE
  	   || truth_value_p (TREE_CODE (orig_op0)))
! 	  ^ (TREE_CODE (TREE_TYPE (orig_op1)) == BOOLEAN_TYPE
  	     || truth_value_p (TREE_CODE (orig_op1))))
  	maybe_warn_bool_compare (location, code, orig_op0, orig_op1);
        break;
--- 12803,12832 ----
  	  result_type = type1;
  	  pedwarn (location, 0, "comparison between pointer and integer");
  	}
!       /* 6.5.9: One of the following shall hold:
! 	 -- both operands have type nullptr_t;  */
!       else if (code0 == NULLPTR_TYPE && code1 == NULLPTR_TYPE)
! 	{
! 	  result_type = nullptr_type_node;
! 	  /* No need to convert the operands to result_type later.  */
! 	  converted = 1;
! 	}
!     /* -- one operand has type nullptr_t and the other is a null pointer
!        constant.  We will have to convert the former to the type of the
!        latter, because during gimplification we can't have mismatching
!        comparison operand type.  We convert from nullptr_t to the other
!        type, since only nullptr_t can be converted to nullptr_t.  Also,
!        even a constant 0 is a null pointer constant, so we may have to
!        create a pointer type from its type.  */
!       else if (code0 == NULLPTR_TYPE && null_pointer_constant_p (orig_op1))
! 	result_type = (INTEGRAL_TYPE_P (type1)
! 		       ? build_pointer_type (type1) : type1);
!       else if (code1 == NULLPTR_TYPE && null_pointer_constant_p (orig_op0))
! 	result_type = (INTEGRAL_TYPE_P (type0)
! 		       ? build_pointer_type (type0) : type0);
!       if ((C_BOOLEAN_TYPE_P (TREE_TYPE (orig_op0))
  	   || truth_value_p (TREE_CODE (orig_op0)))
! 	  ^ (C_BOOLEAN_TYPE_P (TREE_TYPE (orig_op1))
  	     || truth_value_p (TREE_CODE (orig_op1))))
  	maybe_warn_bool_compare (location, code, orig_op0, orig_op1);
        break;
*************** build_binary_op (location_t location, en
*** 12539,12547 ****
  	  instrument_expr = build_call_expr_loc (location, tt, 2, op0, op1);
  	}
  
!       if ((TREE_CODE (TREE_TYPE (orig_op0)) == BOOLEAN_TYPE
  	   || truth_value_p (TREE_CODE (orig_op0)))
! 	  ^ (TREE_CODE (TREE_TYPE (orig_op1)) == BOOLEAN_TYPE
  	     || truth_value_p (TREE_CODE (orig_op1))))
  	maybe_warn_bool_compare (location, code, orig_op0, orig_op1);
        break;
--- 12969,12977 ----
  	  instrument_expr = build_call_expr_loc (location, tt, 2, op0, op1);
  	}
  
!       if ((C_BOOLEAN_TYPE_P (TREE_TYPE (orig_op0))
  	   || truth_value_p (TREE_CODE (orig_op0)))
! 	  ^ (C_BOOLEAN_TYPE_P (TREE_TYPE (orig_op1))
  	     || truth_value_p (TREE_CODE (orig_op1))))
  	maybe_warn_bool_compare (location, code, orig_op0, orig_op1);
        break;
*************** c_finish_omp_clauses (tree clauses, enum
*** 14160,14171 ****
--- 14590,14608 ----
  	  break;
  	}
  
+   tree *grp_start_p = NULL, grp_sentinel = NULL_TREE;
+ 
    for (pc = &clauses, c = clauses; c ; c = *pc)
      {
        bool remove = false;
        bool need_complete = false;
        bool need_implicitly_determined = false;
  
+       /* We've reached the end of a list of expanded nodes.  Reset the group
+ 	 start pointer.  */
+       if (c == grp_sentinel)
+ 	grp_start_p = NULL;
+ 
        switch (OMP_CLAUSE_CODE (c))
  	{
  	case OMP_CLAUSE_SHARED:
*************** c_finish_omp_clauses (tree clauses, enum
*** 14465,14475 ****
  	    need_implicitly_determined = true;
  	  t = OMP_CLAUSE_DECL (c);
  	  if (ort != C_ORT_OMP_DECLARE_SIMD
! 	      && OMP_CLAUSE_LINEAR_KIND (c) != OMP_CLAUSE_LINEAR_DEFAULT)
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"modifier should not be specified in %<linear%> "
! 			"clause on %<simd%> or %<for%> constructs");
  	      OMP_CLAUSE_LINEAR_KIND (c) = OMP_CLAUSE_LINEAR_DEFAULT;
  	    }
  	  if (!INTEGRAL_TYPE_P (TREE_TYPE (t))
--- 14902,14914 ----
  	    need_implicitly_determined = true;
  	  t = OMP_CLAUSE_DECL (c);
  	  if (ort != C_ORT_OMP_DECLARE_SIMD
! 	      && OMP_CLAUSE_LINEAR_KIND (c) != OMP_CLAUSE_LINEAR_DEFAULT
! 	      && OMP_CLAUSE_LINEAR_OLD_LINEAR_MODIFIER (c))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"modifier should not be specified in %<linear%> "
! 			"clause on %<simd%> or %<for%> constructs when not "
! 			"using OpenMP 5.2 modifiers");
  	      OMP_CLAUSE_LINEAR_KIND (c) = OMP_CLAUSE_LINEAR_DEFAULT;
  	    }
  	  if (!INTEGRAL_TYPE_P (TREE_TYPE (t))
*************** c_finish_omp_clauses (tree clauses, enum
*** 14763,14777 ****
  	    }
  	  break;
  
! 	case OMP_CLAUSE_DEPEND:
  	  t = OMP_CLAUSE_DECL (c);
  	  if (t == NULL_TREE)
! 	    {
! 	      gcc_assert (OMP_CLAUSE_DEPEND_KIND (c)
! 			  == OMP_CLAUSE_DEPEND_SOURCE);
! 	      break;
! 	    }
! 	  if (OMP_CLAUSE_DEPEND_KIND (c) == OMP_CLAUSE_DEPEND_SINK)
  	    {
  	      gcc_assert (TREE_CODE (t) == TREE_LIST);
  	      for (; t; t = TREE_CHAIN (t))
--- 15202,15212 ----
  	    }
  	  break;
  
! 	case OMP_CLAUSE_DOACROSS:
  	  t = OMP_CLAUSE_DECL (c);
  	  if (t == NULL_TREE)
! 	    break;
! 	  if (OMP_CLAUSE_DOACROSS_KIND (c) == OMP_CLAUSE_DOACROSS_SINK)
  	    {
  	      gcc_assert (TREE_CODE (t) == TREE_LIST);
  	      for (; t; t = TREE_CHAIN (t))
*************** c_finish_omp_clauses (tree clauses, enum
*** 14799,14805 ****
  		}
  	      break;
  	    }
! 	  /* FALLTHRU */
  	case OMP_CLAUSE_AFFINITY:
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) == TREE_LIST
--- 15234,15241 ----
  		}
  	      break;
  	    }
! 	  gcc_unreachable ();
! 	case OMP_CLAUSE_DEPEND:
  	case OMP_CLAUSE_AFFINITY:
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) == TREE_LIST
*************** c_finish_omp_clauses (tree clauses, enum
*** 14832,14837 ****
--- 15268,15285 ----
  	    }
  	  if (t == error_mark_node)
  	    remove = true;
+ 	  else if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_DEPEND
+ 		   && t == ridpointers[RID_OMP_ALL_MEMORY])
+ 	    {
+ 	      if (OMP_CLAUSE_DEPEND_KIND (c) != OMP_CLAUSE_DEPEND_OUT
+ 		  && OMP_CLAUSE_DEPEND_KIND (c) != OMP_CLAUSE_DEPEND_INOUT)
+ 		{
+ 		  error_at (OMP_CLAUSE_LOCATION (c),
+ 			    "%<omp_all_memory%> used with %<depend%> kind "
+ 			    "other than %<out%> or %<inout%>");
+ 		  remove = true;
+ 		}
+ 	    }
  	  else if (!lvalue_p (t))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
*************** c_finish_omp_clauses (tree clauses, enum
*** 14873,14896 ****
  	    }
  	  if (!remove)
  	    {
! 	      tree addr = build_unary_op (OMP_CLAUSE_LOCATION (c), ADDR_EXPR,
! 					  t, false);
! 	      if (addr == error_mark_node)
! 		remove = true;
  	      else
  		{
  		  t = build_indirect_ref (OMP_CLAUSE_LOCATION (c), addr,
  					  RO_UNARY_STAR);
  		  if (t == error_mark_node)
! 		    remove = true;
! 		  else if (TREE_CODE (OMP_CLAUSE_DECL (c)) == TREE_LIST
! 			   && TREE_PURPOSE (OMP_CLAUSE_DECL (c))
! 			   && (TREE_CODE (TREE_PURPOSE (OMP_CLAUSE_DECL (c)))
! 			       == TREE_VEC))
! 		    TREE_VALUE (OMP_CLAUSE_DECL (c)) = t;
! 		  else
! 		    OMP_CLAUSE_DECL (c) = t;
  		}
  	    }
  	  break;
  
--- 15321,15352 ----
  	    }
  	  if (!remove)
  	    {
! 	      if (t == ridpointers[RID_OMP_ALL_MEMORY])
! 		t = null_pointer_node;
  	      else
  		{
+ 		  tree addr = build_unary_op (OMP_CLAUSE_LOCATION (c),
+ 					      ADDR_EXPR, t, false);
+ 		  if (addr == error_mark_node)
+ 		    {
+ 		      remove = true;
+ 		      break;
+ 		    }
  		  t = build_indirect_ref (OMP_CLAUSE_LOCATION (c), addr,
  					  RO_UNARY_STAR);
  		  if (t == error_mark_node)
! 		    {
! 		      remove = true;
! 		      break;
! 		    }
  		}
+ 	      if (TREE_CODE (OMP_CLAUSE_DECL (c)) == TREE_LIST
+ 		  && TREE_PURPOSE (OMP_CLAUSE_DECL (c))
+ 		  && (TREE_CODE (TREE_PURPOSE (OMP_CLAUSE_DECL (c)))
+ 		      == TREE_VEC))
+ 		TREE_VALUE (OMP_CLAUSE_DECL (c)) = t;
+ 	      else
+ 		OMP_CLAUSE_DECL (c) = t;
  	    }
  	  break;
  
*************** c_finish_omp_clauses (tree clauses, enum
*** 14904,14915 ****
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) == TREE_LIST)
  	    {
  	      if (handle_omp_array_sections (c, ort))
  		remove = true;
  	      else
  		{
  		  t = OMP_CLAUSE_DECL (c);
! 		  if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
  		    {
  		      error_at (OMP_CLAUSE_LOCATION (c),
  				"array section does not have mappable type "
--- 15360,15374 ----
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) == TREE_LIST)
  	    {
+ 	      grp_start_p = pc;
+ 	      grp_sentinel = OMP_CLAUSE_CHAIN (c);
+ 
  	      if (handle_omp_array_sections (c, ort))
  		remove = true;
  	      else
  		{
  		  t = OMP_CLAUSE_DECL (c);
! 		  if (!omp_mappable_type (TREE_TYPE (t)))
  		    {
  		      error_at (OMP_CLAUSE_LOCATION (c),
  				"array section does not have mappable type "
*************** c_finish_omp_clauses (tree clauses, enum
*** 15046,15052 ****
  			    t, omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
  		  remove = true;
  		}
! 	      else if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
  		{
  		  error_at (OMP_CLAUSE_LOCATION (c),
  			    "%qE does not have a mappable type in %qs clause",
--- 15505,15511 ----
  			    t, omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
  		  remove = true;
  		}
! 	      else if (!omp_mappable_type (TREE_TYPE (t)))
  		{
  		  error_at (OMP_CLAUSE_LOCATION (c),
  			    "%qE does not have a mappable type in %qs clause",
*************** c_finish_omp_clauses (tree clauses, enum
*** 15127,15133 ****
  			 || (OMP_CLAUSE_MAP_KIND (c)
  			     == GOMP_MAP_FORCE_DEVICEPTR)))
  		   && t == OMP_CLAUSE_DECL (c)
! 		   && !lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"%qD does not have a mappable type in %qs clause", t,
--- 15586,15592 ----
  			 || (OMP_CLAUSE_MAP_KIND (c)
  			     == GOMP_MAP_FORCE_DEVICEPTR)))
  		   && t == OMP_CLAUSE_DECL (c)
! 		   && !omp_mappable_type (TREE_TYPE (t)))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"%qD does not have a mappable type in %qs clause", t,
*************** c_finish_omp_clauses (tree clauses, enum
*** 15215,15251 ****
  	    }
  	  break;
  
! 	case OMP_CLAUSE_TO_DECLARE:
  	case OMP_CLAUSE_LINK:
  	  t = OMP_CLAUSE_DECL (c);
  	  if (TREE_CODE (t) == FUNCTION_DECL
! 	      && OMP_CLAUSE_CODE (c) == OMP_CLAUSE_TO_DECLARE)
  	    ;
  	  else if (!VAR_P (t))
  	    {
! 	      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_TO_DECLARE)
  		error_at (OMP_CLAUSE_LOCATION (c),
  			  "%qE is neither a variable nor a function name in "
! 			  "clause %qs", t,
! 			  omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
  	      else
  		error_at (OMP_CLAUSE_LOCATION (c),
! 			  "%qE is not a variable in clause %qs", t,
! 			  omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
  	      remove = true;
  	    }
  	  else if (DECL_THREAD_LOCAL_P (t))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"%qD is threadprivate variable in %qs clause", t,
! 			omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
  	      remove = true;
  	    }
! 	  else if (!lang_hooks.types.omp_mappable_type (TREE_TYPE (t)))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"%qD does not have a mappable type in %qs clause", t,
! 			omp_clause_code_name[OMP_CLAUSE_CODE (c)]);
  	      remove = true;
  	    }
  	  if (remove)
--- 15674,15713 ----
  	    }
  	  break;
  
! 	case OMP_CLAUSE_ENTER:
  	case OMP_CLAUSE_LINK:
  	  t = OMP_CLAUSE_DECL (c);
+ 	  const char *cname;
+ 	  cname = omp_clause_code_name[OMP_CLAUSE_CODE (c)];
+ 	  if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ENTER
+ 	      && OMP_CLAUSE_ENTER_TO (c))
+ 	    cname = "to";
  	  if (TREE_CODE (t) == FUNCTION_DECL
! 	      && OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ENTER)
  	    ;
  	  else if (!VAR_P (t))
  	    {
! 	      if (OMP_CLAUSE_CODE (c) == OMP_CLAUSE_ENTER)
  		error_at (OMP_CLAUSE_LOCATION (c),
  			  "%qE is neither a variable nor a function name in "
! 			  "clause %qs", t, cname);
  	      else
  		error_at (OMP_CLAUSE_LOCATION (c),
! 			  "%qE is not a variable in clause %qs", t, cname);
  	      remove = true;
  	    }
  	  else if (DECL_THREAD_LOCAL_P (t))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"%qD is threadprivate variable in %qs clause", t,
! 			cname);
  	      remove = true;
  	    }
! 	  else if (!omp_mappable_type (TREE_TYPE (t)))
  	    {
  	      error_at (OMP_CLAUSE_LOCATION (c),
  			"%qD does not have a mappable type in %qs clause", t,
! 			cname);
  	      remove = true;
  	    }
  	  if (remove)
*************** c_finish_omp_clauses (tree clauses, enum
*** 15544,15550 ****
  	}
  
        if (remove)
! 	*pc = OMP_CLAUSE_CHAIN (c);
        else
  	pc = &OMP_CLAUSE_CHAIN (c);
      }
--- 16006,16024 ----
  	}
  
        if (remove)
! 	{
! 	  if (grp_start_p)
! 	    {
! 	      /* If we found a clause to remove, we want to remove the whole
! 		 expanded group, otherwise gimplify
! 		 (omp_resolve_clause_dependencies) can get confused.  */
! 	      *grp_start_p = grp_sentinel;
! 	      pc = grp_start_p;
! 	      grp_start_p = NULL;
! 	    }
! 	  else
! 	    *pc = OMP_CLAUSE_CHAIN (c);
! 	}
        else
  	pc = &OMP_CLAUSE_CHAIN (c);
      }
*************** c_tree_equal (tree t1, tree t2)
*** 15921,15934 ****
    if (!t1 || !t2)
      return false;
  
!   for (code1 = TREE_CODE (t1);
!        CONVERT_EXPR_CODE_P (code1)
! 	 || code1 == NON_LVALUE_EXPR;
         code1 = TREE_CODE (t1))
      t1 = TREE_OPERAND (t1, 0);
!   for (code2 = TREE_CODE (t2);
!        CONVERT_EXPR_CODE_P (code2)
! 	 || code2 == NON_LVALUE_EXPR;
         code2 = TREE_CODE (t2))
      t2 = TREE_OPERAND (t2, 0);
  
--- 16395,16404 ----
    if (!t1 || !t2)
      return false;
  
!   for (code1 = TREE_CODE (t1); code1 == NON_LVALUE_EXPR;
         code1 = TREE_CODE (t1))
      t1 = TREE_OPERAND (t1, 0);
!   for (code2 = TREE_CODE (t2); code2 == NON_LVALUE_EXPR;
         code2 = TREE_CODE (t2))
      t2 = TREE_OPERAND (t2, 0);
  
*************** c_tree_equal (tree t1, tree t2)
*** 15939,15944 ****
--- 16409,16417 ----
    if (code1 != code2)
      return false;
  
+   if (CONSTANT_CLASS_P (t1) && !comptypes (TREE_TYPE (t1), TREE_TYPE (t2)))
+     return false;
+ 
    switch (code1)
      {
      case INTEGER_CST:
*************** c_tree_equal (tree t1, tree t2)
*** 16058,16063 ****
--- 16531,16541 ----
  	return true;
        }
  
+     CASE_CONVERT:
+       if (!comptypes (TREE_TYPE (t1), TREE_TYPE (t2)))
+ 	return false;
+       break;
+ 
      default:
        break;
      }
diff -Nrcpad gcc-12.2.0/gcc/c/config-lang.in gcc-13.1.0/gcc/c/config-lang.in
*** gcc-12.2.0/gcc/c/config-lang.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/config-lang.in	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Top level configure fragment for GNU C - C language.
! # Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 1,5 ----
  # Top level configure fragment for GNU C - C language.
! # Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c/gccspec.cc gcc-13.1.0/gcc/c/gccspec.cc
*** gcc-12.2.0/gcc/c/gccspec.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/gccspec.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Specific flags and argument handling of the C front-end.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Specific flags and argument handling of the C front-end.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c/gimple-parser.cc gcc-13.1.0/gcc/c/gimple-parser.cc
*** gcc-12.2.0/gcc/c/gimple-parser.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/gimple-parser.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Parser for GIMPLE.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Parser for GIMPLE.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** c_parser_parse_gimple_body (c_parser *cp
*** 364,369 ****
--- 364,379 ----
        cgraph_node::get_create (cfun->decl);
        cgraph_edge::rebuild_edges ();
      }
+ 
+   /* Perform IL validation and if any error is found abort compilation
+      of this function by zapping its body.  */
+   if ((cfun->curr_properties & PROP_cfg)
+       && verify_gimple_in_cfg (cfun, false, false))
+     init_empty_tree_cfg ();
+   else if (!(cfun->curr_properties & PROP_cfg)
+ 	   && verify_gimple_in_seq (gimple_body (current_function_decl), false))
+     gimple_set_body (current_function_decl, NULL);
+ 
    dump_function (TDI_gimple, current_function_decl);
  }
  
*************** c_parser_gimple_call_internal (gimple_pa
*** 1332,1337 ****
--- 1342,1348 ----
  	     exprlist.address ());
  	  expr.original_code = ERROR_MARK;
  	  expr.original_type = NULL;
+ 	  expr.m_decimal = 0;
  	}
      }
    return expr;
*************** c_parser_gimple_postfix_expression_after
*** 1751,1756 ****
--- 1762,1768 ----
  	    finish = c_parser_tokens_buf (parser, 0)->location;
  	    expr.value = build_array_ref (op_loc, expr.value, idx);
  	    set_c_expr_source_range (&expr, start, finish);
+ 	    expr.m_decimal = 0;
  
  	    expr.original_code = ERROR_MARK;
  	    expr.original_type = NULL;
*************** c_parser_gimple_postfix_expression_after
*** 1774,1779 ****
--- 1786,1792 ----
  	    expr.value = build_call_array_loc
  		(expr_loc, TREE_TYPE (TREE_TYPE (expr.value)),
  		 expr.value, exprlist.length (), exprlist.address ());
+ 	    expr.m_decimal = 0;
  	    expr.original_code = ERROR_MARK;
  	    expr.original_type = NULL;
  	    break;
*************** c_parser_gimple_postfix_expression_after
*** 1800,1807 ****
  	    finish = c_parser_peek_token (parser)->get_finish ();
  	    c_parser_consume_token (parser);
  	    expr.value = build_component_ref (op_loc, expr.value, ident,
! 					      comp_loc);
  	    set_c_expr_source_range (&expr, start, finish);
  	    expr.original_code = ERROR_MARK;
  	    if (TREE_CODE (expr.value) != COMPONENT_REF)
  	      expr.original_type = NULL;
--- 1813,1821 ----
  	    finish = c_parser_peek_token (parser)->get_finish ();
  	    c_parser_consume_token (parser);
  	    expr.value = build_component_ref (op_loc, expr.value, ident,
! 					      comp_loc, UNKNOWN_LOCATION);
  	    set_c_expr_source_range (&expr, start, finish);
+ 	    expr.m_decimal = 0;
  	    expr.original_code = ERROR_MARK;
  	    if (TREE_CODE (expr.value) != COMPONENT_REF)
  	      expr.original_type = NULL;
*************** c_parser_gimple_postfix_expression_after
*** 1848,1855 ****
  	    expr.value = build_component_ref (op_loc,
  					      build_simple_mem_ref_loc
  					        (op_loc, expr.value),
! 					      ident, comp_loc);
  	    set_c_expr_source_range (&expr, start, finish);
  	    expr.original_code = ERROR_MARK;
  	    if (TREE_CODE (expr.value) != COMPONENT_REF)
  	      expr.original_type = NULL;
--- 1862,1871 ----
  	    expr.value = build_component_ref (op_loc,
  					      build_simple_mem_ref_loc
  					        (op_loc, expr.value),
! 					      ident, comp_loc,
! 					      expr.get_location ());
  	    set_c_expr_source_range (&expr, start, finish);
+ 	    expr.m_decimal = 0;
  	    expr.original_code = ERROR_MARK;
  	    if (TREE_CODE (expr.value) != COMPONENT_REF)
  	      expr.original_type = NULL;
diff -Nrcpad gcc-12.2.0/gcc/c/gimple-parser.h gcc-13.1.0/gcc/c/gimple-parser.h
*** gcc-12.2.0/gcc/c/gimple-parser.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c/gimple-parser.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations for the parser for GIMPLE.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Declarations for the parser for GIMPLE.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/ChangeLog gcc-13.1.0/gcc/c-family/ChangeLog
*** gcc-12.2.0/gcc/c-family/ChangeLog	Fri Aug 19 08:10:14 2022
--- gcc-13.1.0/gcc/c-family/ChangeLog	Wed Apr 26 07:10:02 2023
***************
*** 1,24 ****
! 2022-08-19  Release Manager
  
! 	* GCC 12.2.0 released.
  
! 2022-07-06  Jonathan Wakely  <jwakely@redhat.com>
  
! 	Backported from master:
! 	2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
  
! 	* known-headers.cc (get_stdlib_header_for_name): Add <time.h>
! 	names.
  
! 2022-07-06  Marek Polacek  <polacek@redhat.com>
  
! 	Backported from master:
! 	2022-07-05  Marek Polacek  <polacek@redhat.com>
  
  	PR c++/105626
  	* c-format.cc (check_format_arg): Don't emit -Wformat warnings with
  	u8 strings.
  
  2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* c-ada-spec.cc (dump_ada_node) <COMPLEX_TYPE>: Deal with usual
--- 1,825 ----
! 2023-04-26  Release Manager
  
! 	* GCC 13.1.0 released.
  
! 2023-03-28  David Malcolm  <dmalcolm@redhat.com>
  
! 	PR c/107002
! 	* c-common.h (check_for_xor_used_as_pow): Add "rhs_loc" param.
! 	* c-warn.cc (check_for_xor_used_as_pow): Add "rhs_loc" param.
! 	Reject cases where involving macro expansions.
  
! 2023-03-28  Jason Merrill  <jason@redhat.com>
  
! 	PR c++/107163
! 	* c-common.cc (verify_tree): Don't use sequenced handling
! 	for COMPONENT_REF.
  
! 2023-03-17  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/109151
! 	* c-ubsan.cc (ubsan_instrument_division): Handle all scalar integral
! 	types rather than just INTEGER_TYPE.
! 
! 2023-03-10  Marek Polacek  <polacek@redhat.com>
! 
! 	PR sanitizer/108060
! 	PR sanitizer/109050
! 	* c-gimplify.cc (ubsan_walk_array_refs_r): For a MODIFY_EXPR, instrument
! 	the RHS before the LHS.
! 
! 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/107465
! 	* c-warn.cc (warn_for_sign_compare): Don't warn for unset bits
! 	above innermost zero extension of BIT_NOT_EXPR result.
! 
! 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/107465
! 	* c-warn.cc (warn_for_sign_compare): If c_common_get_narrower
! 	doesn't return a narrower result, use TYPE_UNSIGNED to set unsignedp0
! 	and unsignedp1.  For the one BIT_NOT_EXPR case vs. one without,
! 	only check for constant in the non-BIT_NOT_EXPR operand, use std::swap
! 	to simplify the code, only warn if BIT_NOT_EXPR operand is extended
! 	from narrower unsigned, fix up computation of mask for the constant
! 	cases and for unsigned other operand case handle differently
! 	BIT_NOT_EXPR result being sign vs. zero extended.
! 
! 2023-03-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/107846
! 	* c-warn.cc: Include langhooks.h.
! 	(maybe_warn_shift_overflow): Set type0 to what TREE_TYPE (op0)
! 	promotes to rather than TREE_TYPE (op0) itself, if TREE_TYPE (op0)
! 	is narrower than type0 and unsigned, use wi::min_precision with
! 	UNSIGNED and fold_convert op0 to type0 before emitting the warning.
! 
! 2023-03-03  Alexandre Oliva  <oliva@adacore.com>
! 
! 	* c-common.cc (c_common_nodes_and_builtins): Take
! 	wchar_type_node for wint_type_node when aliased.
! 	(c_stddef_cpp_builtins): Define __WINT_TYPE__, when aliased to
! 	wchar_t, to the underlying type rather than wchar_t in
! 	non-C++.
! 	* c-cppbuiltin.cc (type_suffix): Handle wchar_type_node.
! 
! 2023-02-28  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/107938
! 	* c-warn.cc (check_address_or_pointer_of_packed_member): Check
! 	POINTER_TYPE_P.
! 
! 2023-02-28  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR sanitizer/108894
! 	* c-common.h (c_strict_flex_array_level_of): Declare.
! 	* c-common.cc (c_strict_flex_array_level_of): New function,
! 	moved and renamed from c-decl.cc's strict_flex_array_level_of.
! 	* c-ubsan.cc (ubsan_instrument_bounds): Fix comment typo.  For
! 	C check c_strict_flex_array_level_of whether a trailing array
! 	should be treated as flexible member like.  Handle C [0] arrays.
! 	Add 1 + index_off_by_one rather than index_off_by_one to bounds
! 	and use tree_int_cst_lt rather than tree_int_cst_le for idx vs.
! 	bounds comparison.
! 
! 2023-02-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR translation/108890
! 	* c.opt (fcontracts): Fix description.
! 
! 2023-02-22  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c/108880
! 	* c-gimplify.cc (c_genericize_control_stmt) <case STATEMENT_LIST>: Pass
! 	pset to walk_tree_1.
! 	(c_genericize): Call walk_tree with an explicit pset.
! 
! 2023-02-18  Martin Uecker  <uecker@tugraz.at>
! 
! 	PR c/105660
! 	* c-attribs.cc (append_access_attr): Use order of arguments when
! 	construction string.
! 	(append_access_attr_idxs): Rename and make static.
! 	* c-warn.cc (warn_parm_array_mismatch): Add assertion.
! 
! 2023-02-16  Patrick Palka  <ppalka@redhat.com>
! 
! 	* c-common.h: Mechanically drop static from static inline
! 	functions via s/^static inline/inline/g.
! 
! 2023-02-01  Jason Merrill  <jason@redhat.com>
! 
! 	* c.opt: Add -Wno-changes-meaning.
! 
! 2023-01-31  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/107593
! 	PR c++/108597
! 	* c-common.h (instantiation_dependent_expression_p): Declare.
! 	* c-warn.cc (warn_duplicated_cond_add_or_warn): If the condition
! 	is dependent, invalidate the chain.
! 
! 2023-01-26  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/105300
! 	* c-pragma.cc (handle_pragma_message): Warn for CPP_STRING_USERDEF.
! 
! 2023-01-18  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c/108424
! 	* c-common.cc (check_case_value): Check INTEGRAL_TYPE_P.
! 
! 2023-01-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/108365
! 	* c-common.h (may_shorten_divmod): New static inline function.
! 
! 2023-01-13  Eric Botcazou  <ebotcazou@adacore.com>
! 
! 	* c-ada-spec.cc (is_float32): New function.
! 	(is_float64): Likewise.
! 	(is_float128): Tweak.
! 	(dump_ada_node) <REAL_TYPE>: Call them to recognize more types.
! 
! 2023-01-12  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR preprocessor/108244
! 	* c-pragma.cc (c_register_pragma_1): Don't attempt to register any
! 	deferred pragmas if -fdirectives-only.
! 	(init_pragma): Likewise.
! 
! 2023-01-09  Martin Liska  <mliska@suse.cz>
! 
! 	PR c/107993
! 	* c-attribs.cc (handle_target_clones_attribute): Check for
! 	string constant for all target_clone attribute values.
! 
! 2023-01-03  Florian Weimer  <fweimer@redhat.com>
! 
! 	* c-cppbuiltin.cc (c_cpp_builtins): Define
! 	__LIBGCC_DWARF_CIE_DATA_ALIGNMENT__.
! 
! 2023-01-03  Florian Weimer  <fweimer@redhat.com>
! 
! 	Revert:
! 	2023-01-03  Florian Weimer  <fweimer@redhat.com>
! 
! 	* c-cppbuiltin.cc (__LIBGCC_DWARF_REG_SIZES_CONSTANT__):
! 	Define if constant is known.
! 
! 2023-01-03  Florian Weimer  <fweimer@redhat.com>
! 
! 	Revert:
! 	2023-01-02  Florian Weimer  <fweimer@redhat.com>
! 
! 	* c-cppbuiltin.cc (c_cpp_builtins): Define
! 	__LIBGCC_DWARF_CIE_DATA_ALIGNMENT__.
! 
! 2023-01-02  Florian Weimer  <fweimer@redhat.com>
! 
! 	* c-cppbuiltin.cc (c_cpp_builtins): Define
! 	__LIBGCC_DWARF_CIE_DATA_ALIGNMENT__.
! 
! 2023-01-02  Florian Weimer  <fweimer@redhat.com>
! 
! 	* c-cppbuiltin.cc (__LIBGCC_DWARF_REG_SIZES_CONSTANT__):
! 	Define if constant is known.
! 
! 2022-12-19  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c/98487
! 	* c-format.cc (check_function_format): Use get_attribute_name.
! 
! 2022-12-16  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* c.opt (Wstrict-flex-arrays): New option.
! 
! 2022-12-02  Andrew MacLeod  <amacleod@redhat.com>
! 
! 	* c-attribs.cc (handle_deprecated_attribute): Use type when
! 	using TYPE_NAME.
! 
! 2022-12-02  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/84469
! 	* c-omp.cc (c_omp_is_loop_iterator): For range for with structured
! 	binding return TREE_VEC_LENGTH (d->declv) even if decl is equal
! 	to any of the structured binding decls.
! 
! 2022-11-30  Iskander Shakirzyanov  <iskander@ispras.ru>
! 	    Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>
! 
! 	PR driver/107787
! 	* c-common.cc (fold_offsetof,
! 	convert_vector_to_array_for_subscript): Use OPT_Warray_bounds_
! 	instead of OPT_Warray_bounds.
! 
! 2022-11-24  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c.opt (fcontract-role=, fcontract-semantic=): Terminate descriptions
! 	with a dot.
! 
! 2022-11-23  Andrew Pinski  <apinski@marvell.com>
! 	    Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/107127
! 	* c-gimplify.cc (c_genericize): Use walk_tree_without_duplicates
! 	instead of walk_tree for c_genericize_control_r.
! 
! 2022-11-23  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c.opt (fcontract-assumption-mode=, fcontract-continuation-mode=,
! 	fcontract-role=, fcontract-semantic=): Add RejectNegative.
! 	(fcontract-build-level=): Terminate description with dot.
! 
! 2022-11-19  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-cppbuiltin.cc (c_cpp_builtins): Bump __cpp_constexpr
! 	value from 202207L to 202211L.
! 
! 2022-11-19  Jeff Chapman II  <jchapman@lock3software.com>
! 	    Andrew Sutton   <asutton@lock3software.com>
! 	    Andrew Marmaduke  <amarmaduke@lock3software.com>
! 	    Michael Lopez  <mlopez@lock3software.com>
! 	    Jason Merrill   <jason@redhat.com>
! 
! 	* c.opt: Add contracts flags.
! 	* c-cppbuiltin.cc (c_cpp_builtins): Add contracts feature-test
! 	macros.
! 
! 2022-11-16  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/106649
! 	* c-cppbuiltin.cc (c_cpp_builtins): Update value of __cpp_constexpr for
! 	C++23.
! 	* c-opts.cc (c_common_post_options): Set warn_invalid_constexpr
! 	depending on cxx_dialect.
! 	* c.opt (Winvalid-constexpr): New option.
! 
! 2022-11-16  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-common.def (CONCEPT_DECL): New tree, moved here from
! 	cp-tree.def.
! 	* c-common.cc (c_common_init_ts): Handle CONCEPT_DECL.
! 	* c-attribs.cc (handle_deprecated_attribute): Allow deprecated
! 	attribute on CONCEPT_DECL.
! 
! 2022-11-15  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	* c-opts.cc (c_finish_options): Use special_fname_builtin () rather
! 	than a hard-coded string.
! 
! 2022-11-15  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-cppbuiltin.cc (c_cpp_builtins): Bump C++23
! 	__cpp_multidimensional_subscript macro value to 202211L.
! 
! 2022-11-15  Patrick Palka  <ppalka@redhat.com>
! 
! 	PR c++/107638
! 	* c-lex.cc (c_common_has_attribute): Return 1 for init_priority
! 	iff SUPPORTS_INIT_PRIORITY.
! 
! 2022-11-14  Martin Liska  <mliska@suse.cz>
! 
! 	Revert:
! 	2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* c-target.def: Port to RST.
! 
! 2022-11-12  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-common.cc (c_common_reswords): Use D_C2X instead of D_CXXONLY.
! 
! 2022-11-11  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	PR c/85487
! 	* c-pragma.cc (handle_pragma_ignore): New function.
! 	(init_pragma): Register region and endregion pragmas.
! 
! 2022-11-09  Martin Liska  <mliska@suse.cz>
! 
! 	* c-target.def: Port to RST.
! 
! 2022-11-05  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR preprocessor/55971
! 	* c-ppoutput.cc (adjust_for_newlines): Update comment.
! 
! 2022-11-03  Jason Merrill  <jason@redhat.com>
! 
! 	* c-opts.cc (c_common_post_options): -fconcepts no longer implies
! 	-fconcepts-ts before C++20.
! 
! 2022-10-28  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-common.cc (def_fn_type): Call build_function_type for
! 	zero-argument variable-argument function.
! 	(c_common_nodes_and_builtins): Build default_function_type with
! 	build_function_type.
! 	* c.opt (fallow-parameterless-variadic-functions): Mark as ignored
! 	option.
! 
! 2022-10-28  Joseph Myers  <joseph@codesourcery.com>
! 
! 	PR c/61469
! 	* c-common.h (ENUM_UNDERLYING_TYPE, ENUM_FIXED_UNDERLYING_TYPE_P):
! 	New.  Moved from cp/cp-tree.h.
! 	* c-warn.cc (warnings_for_convert_and_check): Do not consider
! 	conversions to enum with underlying type bool to overflow.
! 
! 2022-10-26  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/106393
! 	* c.opt (Wdangling-reference): New.
! 
! 2022-10-19  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-format.h (enum format_lengths): Add FMT_LEN_w8, FMT_LEN_w16,
! 	FMT_LEN_w32, FMT_LEN_w64, FMT_LEN_wf8, FMT_LEN_wf16, FMT_LEN_wf32
! 	and FMT_LEN_wf64.
! 	(NOARGUMENTS, NOLENGTHS): Update definitions.
! 	(T_I8, T2X_I8, T_I16, T2X_I16, T_I32, T2X_I32, T_I64, T2X_I64)
! 	(T_U8, T2X_U8, T_U16, T2X_U16, T_U32, T2X_U32, T_U64, T2X_U64)
! 	(T_IF8, T2X_IF8, T_IF16, T2X_IF16, T_IF32, T2X_IF32, T_IF64)
! 	(T2X_IF64, T_UF8, T2X_UF8, T_UF16, T2X_UF16, T_UF32, T2X_UF32)
! 	(T_UF64, T2X_UF64): New macros.
! 	* c-format.cc (printf_length_specs, scanf_length_specs): Add wN
! 	and wfN length modifiers.
! 	(print_char_table, scan_char_table): Add entries using wN and wfN
! 	length modifiers.
! 
! 2022-10-18  Joseph Myers  <joseph@codesourcery.com>
! 
! 	PR c/36113
! 	* c-common.cc (c_common_type_for_size): Add fallback to
! 	widest_unsigned_literal_type_node or
! 	widest_integer_literal_type_node for precision that may not
! 	exactly match the precision of those types.
! 
! 2022-10-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-cppbuiltin.cc (c_cpp_builtins): If bfloat16_type_node,
! 	predefine __BFLT16_*__ macros and for C++23 also
! 	__STDCPP_BFLOAT16_T__.  Predefine bfloat16_type_node related
! 	macros for -fbuilding-libgcc.
! 	* c-lex.cc (interpret_float): Handle CPP_N_BFLOAT16.
! 
! 2022-10-14  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR middle-end/323
! 	PR c++/107097
! 	* c-common.def (EXCESS_PRECISION_EXPR): Remove comment part about
! 	the tree being specific to C/ObjC.
! 	* c-opts.cc (c_common_post_options): Handle flag_excess_precision
! 	in C++ the same as in C.
! 	* c-lex.cc (interpret_float): Set const_type to excess_precision ()
! 	even for C++.
! 
! 2022-10-13  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-cppbuiltin.cc (builtin_define_float_constants): Do not use
! 	value 2 for *_IS_IEC_60559.
! 
! 2022-10-12  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR preprocessor/60014
! 	PR preprocessor/60723
! 	* c-ppoutput.cc (class token_streamer): Remove member
! 	line_marker_emitted to...
! 	(token_streamer::stream): ...a local variable here. Set
! 	print.prev_was_system_token on all code paths.
! 
! 2022-10-10  Nathan Sidwell  <nathan@acm.org>
! 
! 	* c-opts.cc (c_common_post_options): Bump abi to 18.
! 
! 2022-10-10  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/106937
! 	* c-pretty-print.cc (pp_c_specifier_qualifier_list): Print only GNU
! 	attributes here.
! 	(c_pretty_printer::direct_abstract_declarator): Print the standard [[]]
! 	attributes here.
! 	(pp_c_attributes): Remove.
! 	(pp_c_attributes_display): Print the [[]] form if appropriate.  Use
! 	get_attribute_name.  Don't print a trailing space when printing the
! 	[[]] form.
! 	* c-pretty-print.h (pp_c_attributes): Remove.
! 
! 2022-10-07  Qing Zhao  <qing.zhao@oracle.com>
! 
! 	* c-attribs.cc (handle_strict_flex_array_attribute): New function.
! 	(c_common_attribute_table): New item for strict_flex_array.
! 	* c.opt: (fstrict-flex-arrays): New option.
! 	(fstrict-flex-arrays=): New option.
! 
! 2022-10-07  Martin Liska  <mliska@suse.cz>
! 
! 	* name-hint.h: Use std::move.
! 
! 2022-10-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-common.cc (attribute_fallthrough_p): Lookup fallthrough attribute
! 	only in gnu namespace or as standard attribute, treat fallthrough
! 	attributes in other namespaces like any other unknown attribute.
! 
! 2022-10-06  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-common.cc (c_common_reswords): Mark typeof as D_EXT11.  Add
! 	typeof_unqual.
! 	* c-common.h (enum rid): Add RID_TYPEOF_UNQUAL.
! 	(D_EXT11): New macro.  Values of subsequent macros updated.
! 
! 2022-10-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106654
! 	* c-attribs.cc (handle_assume_attribute): New function.
! 	(c_common_attribute_table): Add entry for assume attribute.
! 	* c-lex.cc (c_common_has_attribute): Handle
! 	__have_cpp_attribute (assume).
! 
! 2022-10-04  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-omp.cc (c_omp_directives): Uncomment begin declare target
! 	entry.
! 
! 2022-10-03  Patrick Palka  <ppalka@redhat.com>
! 
! 	* c-common.cc (c_common_reswords): Use RID_IS_SAME instead of
! 	RID_IS_SAME_AS.
! 
! 2022-10-03  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-cppbuiltin.cc (builtin_define_float_constants): Do not
! 	special-case __*_EPSILON__ setting for IBM long double for C2x.
! 
! 2022-09-30  Patrick Palka  <ppalka@redhat.com>
! 
! 	* c-common.cc (c_common_reswords): Use cp/cp-trait.def to handle
! 	C++ traits.
! 	* c-common.h (enum rid): Likewise.
! 
! 2022-09-29  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-lex.cc (c_common_has_attribute): Handle noreturn attribute for
! 	C.
! 
! 2022-09-29  Patrick Palka  <ppalka@redhat.com>
! 
! 	* c-common.cc (c_common_reswords): Add __remove_cv,
! 	__remove_reference and __remove_cvref.
! 	* c-common.h (enum rid): Add RID_REMOVE_CV, RID_REMOVE_REFERENCE
! 	and RID_REMOVE_CVREF.
! 
! 2022-09-27  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/101165
! 	PR c++/106882
! 	* c-cppbuiltin.cc (c_cpp_builtins): Define __cpp_implicit_move.
! 
! 2022-09-27  Marek Polacek  <polacek@redhat.com>
! 
! 	* c-format.cc (c_keywords): Drop nothrow.
! 
! 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106651
! 	* c-cppbuiltin.cc (c_cpp_builtins): Predefine
! 	__cpp_static_call_operator=202207L for C++23.
! 
! 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-pragma.h (enum pragma_kind): Add PRAGMA_OMP_ASSUME,
! 	PRAGMA_OMP_ASSUMES and PRAGMA_OMP_BEGIN.  Rename
! 	PRAGMA_OMP_END_DECLARE_TARGET to PRAGMA_OMP_END.
! 	* c-pragma.cc (omp_pragmas): Add assumes and begin.
! 	For end rename PRAGMA_OMP_END_DECLARE_TARGET to PRAGMA_OMP_END.
! 	(omp_pragmas_simd): Add assume.
! 	* c-common.h (c_omp_directives): Declare.
! 	* c-omp.cc (omp_directives): Rename to ...
! 	(c_omp_directives): ... this.  No longer static.  Uncomment
! 	assume, assumes, begin assumes and end assumes entries.
! 	In end declare target entry rename PRAGMA_OMP_END_DECLARE_TARGET
! 	to PRAGMA_OMP_END.
! 	(c_omp_categorize_directive): Adjust for omp_directives to
! 	c_omp_directives renaming.
! 
! 2022-09-27  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106652
! 	PR c++/85518
! 	* c-common.cc (c_common_reswords): Change _Float{16,32,64,128} and
! 	_Float{32,64,128}x flags from D_CONLY to 0.
! 	(shorten_binary_op): Punt if common_type returns error_mark_node.
! 	(shorten_compare): Likewise.
! 	(c_common_nodes_and_builtins): For C++ record _Float{16,32,64,128}
! 	and _Float{32,64,128}x builtin types if available.  For C++
! 	clear float128t_type_node.
! 	* c-cppbuiltin.cc (c_cpp_builtins): Predefine
! 	__STDCPP_FLOAT{16,32,64,128}_T__ for C++23 if supported.
! 	* c-lex.cc (interpret_float): For q/Q suffixes prefer
! 	float128t_type_node over float128_type_node.  Allow
! 	{f,F}{16,32,64,128} suffixes for C++ if supported with pedwarn
! 	for C++20 and older.  Allow {f,F}{32,64,128}x suffixes for C++
! 	with pedwarn.  Don't call excess_precision_type for C++.
! 
! 2022-09-26  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/106656
! 	* c-cppbuiltin.cc (c_cpp_builtins): Update value of __cpp_char8_t
! 	for C++20.
! 
! 2022-09-23  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/106784
! 	* c-common.cc (c_common_reswords): Add __is_convertible and
! 	__is_nothrow_convertible.
! 	* c-common.h (enum rid): Add RID_IS_CONVERTIBLE and
! 	RID_IS_NOTHROW_CONVERTIBLE.
! 
! 2022-09-22  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR c/106830
! 	* c-warn.cc (check_for_xor_used_as_pow): Don't try checking
! 	values that don't fit in uhwi.
! 
! 2022-09-15  Richard Biener  <rguenther@suse.de>
! 
! 	* c-common.h (build_void_list_node): Remove.
! 	* c-common.cc (c_common_nodes_and_builtins): Do not initialize
! 	void_list_node.
! 
! 2022-09-09  Jan-Benedict Glaw  <jbglaw@lug-owl.de>
! 
! 	* c-format.cc (convert_format_name_to_system_name): Fix warning.
! 
! 2022-09-07  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-common.cc (c_common_reswords): Use D_C2X instead of D_CXXONLY
! 	for alignas, alignof, bool, false, static_assert, thread_local and
! 	true.
! 
! 2022-09-07  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c.opt (Winvalid-utf8): Use ObjC instead of objC.  Remove
! 	" in comments" from description.
! 	(Wunicode): New option.
! 
! 2022-09-06  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c/106836
! 	* c-omp.cc (c_omp_split_clauses): Handle OMP_CLAUSE_DOACROSS.
! 
! 2022-09-03  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_DOACROSS.
! 	* c-omp.cc (c_finish_omp_depobj): Check also for OMP_CLAUSE_DOACROSS
! 	clause and diagnose it.  Don't handle OMP_CLAUSE_DEPEND_SOURCE and
! 	OMP_CLAUSE_DEPEND_SINK.  Assert kind is not OMP_CLAUSE_DEPEND_INVALID.
! 
! 2022-09-02  David Malcolm  <dmalcolm@redhat.com>
! 
! 	PR c/90885
! 	* c-common.h (check_for_xor_used_as_pow): New decl.
! 	* c-lex.cc (c_lex_with_flags): Add DECIMAL_INT to flags as appropriate.
! 	* c-warn.cc (check_for_xor_used_as_pow): New.
! 	* c.opt (Wxor-used-as-pow): New.
! 
! 2022-09-01  Jason Merrill  <jason@redhat.com>
! 
! 	* c-common.cc (c_common_nodes_and_builtins): Set TREE_STRING_FLAG on
! 	char8_t.
! 	(braced_list_to_string): Check for char-sized elements.
! 
! 2022-09-01  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106655
! 	* c.opt (-Winvalid-utf8): New warning.
! 	* c-opts.cc (c_common_handle_option) <case OPT_finput_charset_>:
! 	Set cpp_opts->cpp_input_charset_explicit.
! 	(c_common_post_options): If -finput-charset=UTF-8 is explicit
! 	in C++23, enable -Winvalid-utf8 by default and if -pedantic
! 	or -pedantic-errors, make it a pedwarn.
! 
! 2022-08-31  Joseph Myers  <joseph@codesourcery.com>
! 
! 	* c-attribs.cc (handle_deprecated_attribute): Check and pedwarn
! 	for LABEL_DECL.
! 	* c-common.cc (c_add_case_label): Add argument ATTRS.  Call
! 	decl_attributes.
! 	* c-common.h (do_case, c_add_case_label): Update declarations.
! 	* c-lex.cc (c_common_has_attribute): For C, produce a result of
! 	201910 for fallthrough and 202106 for maybe_unused.
! 
! 2022-08-26  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/81159
! 	* c.opt (Wself-move): New option.
! 
! 2022-08-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-common.cc (check_builtin_function_arguments): Handle
! 	BUILT_IN_ISSIGNALING.
! 
! 2022-08-26  Jakub Jelinek  <jakub@redhat.com>
! 
! 	PR c++/106648
! 	* c-cppbuiltin.cc (c_cpp_builtins): Predefine
! 	__cpp_named_character_escapes to 202207L.
! 
! 2022-08-25  Marek Polacek  <polacek@redhat.com>
! 
! 	* c-common.cc (c_common_reswords): Enable nullptr in C2X.
! 	(c_common_nodes_and_builtins): Create the built-in node for nullptr.
! 	* c-common.h (enum c_tree_index): Add CTI_NULLPTR, CTI_NULLPTR_TYPE.
! 	(struct c_common_resword): Resize the disable member.
! 	(D_C2X): Add.
! 	(nullptr_node): Define.
! 	(nullptr_type_node): Define.
! 	(NULLPTR_TYPE_P): Define.
! 	* c-pretty-print.cc (c_pretty_printer::simple_type_specifier): Handle
! 	NULLPTR_TYPE.
! 	(c_pretty_printer::direct_abstract_declarator): Likewise.
! 	(c_pretty_printer::constant): Likewise.
! 
! 2022-08-16  Tom Honermann  <tom@honermann.net>
! 
! 	PR c++/106423
! 	* c-opts.cc (c_common_post_options): Disable -Wc++20-compat
! 	diagnostics in C++20 and later.
! 	* c.opt (Wc++20-compat): Enable hooks for the preprocessor.
! 
! 2022-08-11  Marek Polacek  <polacek@redhat.com>
! 
! 	PR middle-end/102633
! 	* c-gimplify.cc (c_gimplify_expr) <case DECL_EXPR>: Don't call
! 	suppress_warning here.
! 
! 2022-08-08  Tom Honermann  <tom@honermann.net>
! 
! 	PR preprocessor/106426
! 	* c-opts.cc (c_common_post_options): Assign cpp_opts->unsigned_utf8char
! 	subject to -fchar8_t, -fsigned-char, and/or -funsigned-char.
! 
! 2022-08-08  Tom Honermann  <tom@honermann.net>
! 
! 	* c-lex.cc (lex_string, lex_charconst): Use char8_t as the type
! 	of CPP_UTF8CHAR and CPP_UTF8STRING when char8_t support is
! 	enabled.
! 	* c-opts.cc (c_common_post_options): Set flag_char8_t if
! 	targeting C2x.
! 
! 2022-07-31  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR c++/66290
! 	* c-common.h: Rename global done_lexing to
! 	override_libcpp_locations.
! 	* c-common.cc (c_cpp_diagnostic): Likewise.
! 	* c-opts.cc (c_common_finish): Set override_libcpp_locations
! 	(formerly done_lexing) immediately prior to calling cpp_finish ().
! 
! 2022-07-27  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	* c-ppoutput.cc (token_streamer::stream): Update input_location
! 	prior to streaming each token.
! 
! 2022-07-23  Immad Mir  <mirimmad@outlook.com>
! 
! 	* c-attribs.cc: (c_common_attribute_table): add three new attributes
! 	namely: fd_arg, fd_arg_read and fd_arg_write.
! 	(handle_fd_arg_attribute): New.
! 
! 2022-07-15  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/104477
! 	* c-common.cc (c_common_reswords): Add
! 	__reference_constructs_from_temporary and
! 	__reference_converts_from_temporary.
! 	* c-common.h (enum rid): Add RID_REF_CONSTRUCTS_FROM_TEMPORARY and
! 	RID_REF_CONVERTS_FROM_TEMPORARY.
! 
! 2022-07-15  Jonathan Wakely  <jwakely@redhat.com>
! 
! 	* c-format.cc (class range_label_for_format_type_mismatch):
! 	Adjust to new label_text API.
! 
! 2022-07-11  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR preprocessor/106252
! 	* c-pragma.cc (handle_pragma_diagnostic_impl): Don't look up the
! 	option argument prior to verifying the option was found.
! 
! 2022-07-07  David Malcolm  <dmalcolm@redhat.com>
! 
! 	* c-format.cc (range_label_for_format_type_mismatch::get_text):
! 	Update for removal of label_text::maybe_free in favor of automatic
! 	memory management.
! 
! 2022-07-06  Lewis Hyatt  <lhyatt@gmail.com>
! 
! 	PR preprocessor/53920
! 	PR c++/53431
! 	* c-common.cc (c_option_is_from_cpp_diagnostics): New function.
! 	* c-common.h (c_option_is_from_cpp_diagnostics): Declare.
! 	(c_pp_stream_token): Declare.
! 	* c-ppoutput.cc (init_pp_output): Refactor logic about skipping
! 	pragmas to...
! 	(should_output_pragmas): ...here. New function.
! 	(token_streamer::stream): Support handling early pragmas.
! 	(do_line_change): Likewise.
! 	(c_pp_stream_token): New function.
! 	* c-pragma.cc (struct pragma_diagnostic_data): New helper class.
! 	(pragma_diagnostic_lex_normal): New function. Moved logic for
! 	interpreting GCC diagnostic pragmas here.
! 	(pragma_diagnostic_lex_pp): New function for parsing diagnostic pragmas
! 	directly from libcpp.
! 	(handle_pragma_diagnostic): Refactor into helper function...
! 	(handle_pragma_diagnostic_impl): ...here.  New function.
! 	(handle_pragma_diagnostic_early): New function.
! 	(handle_pragma_diagnostic_early_pp): New function.
! 	(struct pragma_ns_name): Renamed to...
! 	(struct pragma_pp_data): ...this.  Add new "early_handler" member.
! 	(c_register_pragma_1): Support early pragmas in the preprocessor.
! 	(c_register_pragma_with_early_handler): New function.
! 	(c_register_pragma): Support the new early handlers in struct
! 	internal_pragma_handler.
! 	(c_register_pragma_with_data): Likewise.
! 	(c_register_pragma_with_expansion): Likewise.
! 	(c_register_pragma_with_expansion_and_data): Likewise.
! 	(c_invoke_early_pragma_handler): New function.
! 	(c_pp_invoke_early_pragma_handler): New function.
! 	(init_pragma): Add early pragma support for diagnostic pragmas.
! 	* c-pragma.h (struct internal_pragma_handler): Add new early handler
! 	members.
! 	(c_register_pragma_with_early_handler): Declare.
! 	(c_invoke_early_pragma_handler): Declare.
! 	(c_pp_invoke_early_pragma_handler): Declare.
! 
! 2022-07-05  Marek Polacek  <polacek@redhat.com>
  
  	PR c++/105626
  	* c-format.cc (check_format_arg): Don't emit -Wformat warnings with
  	u8 strings.
  
+ 2022-07-01  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/106111
+ 	* c-common.h (enum rid): Update RID_LAST_CXX20.
+ 
+ 2022-06-30  Jonathan Wakely  <jwakely@redhat.com>
+ 
+ 	* known-headers.cc (get_stdlib_header_for_name): Add <time.h>
+ 	names.
+ 
+ 2022-06-24  Jason Merrill  <jason@redhat.com>
+ 
+ 	PR c++/87729
+ 	PR c++/20423
+ 	* c.opt (Woverloaded-virtual): Add levels, include in -Wall.
+ 
+ 2022-06-18  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-ubsan.cc (ubsan_instrument_division, ubsan_instrument_shift):
+ 	Use flag_sanitize_trap & SANITIZE_??? instead of
+ 	flag_sanitize_undefined_trap_on_error.  If 2 sanitizers are involved
+ 	and flag_sanitize_trap differs for them, emit __builtin_trap only
+ 	for the comparison where trap is requested.
+ 	(ubsan_instrument_vla, ubsan_instrument_return): Use
+ 	lag_sanitize_trap & SANITIZE_??? instead of
+ 	flag_sanitize_undefined_trap_on_error.
+ 
+ 2022-06-13  Jason Merrill  <jason@redhat.com>
+ 
+ 	* c-ubsan.cc (ubsan_instrument_return): Use BUILTINS_LOCATION.
+ 
+ 2022-05-27  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/90658
+ 	* c-attribs.cc (get_priority): Check FUNCTION_DECL.
+ 
+ 2022-05-27  Jakub Jelinek  <jakub@redhat.com>
+ 
+ 	* c-pragma.h (enum pragma_omp_clause): Add PRAGMA_OMP_CLAUSE_ENTER.
+ 
+ 2022-05-20  David Malcolm  <dmalcolm@redhat.com>
+ 
+ 	* c-format.cc: Replace uses of "FINAL" and "OVERRIDE" with "final"
+ 	and "override".
+ 	* c-pretty-print.h: Likewise.
+ 
+ 2022-05-18  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c/105131
+ 	* c.opt (Wenum-int-mismatch): New.
+ 
+ 2022-05-18  Marek Polacek  <polacek@redhat.com>
+ 
+ 	PR c++/105497
+ 	* c-warn.cc (c_do_switch_warnings): Don't warn about unhandled
+ 	enumerator when it was marked with attribute unused.
+ 
  2022-05-18  Eric Botcazou  <ebotcazou@adacore.com>
  
  	* c-ada-spec.cc (dump_ada_node) <COMPLEX_TYPE>: Deal with usual
***************
*** 26,34 ****
  	<POINTER_TYPE>: Do not use limited_with clause if the designated
  	type is a scalar type.
  
! 2022-05-06  Release Manager
  
! 	* GCC 12.1.0 released.
  
  2022-04-26  Patrick Palka  <ppalka@redhat.com>
  
--- 827,915 ----
  	<POINTER_TYPE>: Do not use limited_with clause if the designated
  	type is a scalar type.
  
! 2022-05-17  Jakub Jelinek  <jakub@redhat.com>
  
! 	* c-omp.cc (c_finish_omp_depobj): Handle
! 	OMP_CLAUSE_DEPEND_INOUTSET.
! 
! 2022-05-16  Jason Merrill  <jason@redhat.com>
! 
! 	PR c/105492
! 	* c-attribs.cc (handle_mode_attribute): Don't fix broken typedefs
! 	here.
! 
! 2022-05-16  Martin Liska  <mliska@suse.cz>
! 
! 	* c-common.cc (ARRAY_SIZE): Use ARRAY_SIZE.
! 	(c_common_nodes_and_builtins): Likewise.
! 	* c-format.cc (check_tokens): Likewise.
! 	(check_plain): Likewise.
! 	* c-pragma.cc (c_pp_lookup_pragma): Likewise.
! 	(init_pragma): Likewise.
! 	* known-headers.cc (get_string_macro_hint): Likewise.
! 	(get_stdlib_header_for_name): Likewise.
! 	* c-attribs.cc: Likewise.
! 
! 2022-05-13  Richard Biener  <rguenther@suse.de>
! 
! 	* c-omp.cc: Remove gimple-fold.h include.
! 
! 2022-05-12  Jakub Jelinek  <jakub@redhat.com>
! 
! 	* c-common.h (enum rid): Add RID_OMP_ALL_MEMORY.
! 	* c-omp.cc (c_finish_omp_depobj): Don't build_fold_addr_expr
! 	if null_pointer_node.
! 
! 2022-05-11  Martin Liska  <mliska@suse.cz>
! 
! 	PR target/105355
! 	* c-opts.cc (c_common_handle_option): Change option name.
! 	* c.opt: Remove Joined and use Separate option.
! 
! 2022-05-09  Alex Coplan  <alex.coplan@arm.com>
! 
! 	* c-common.h (get_dump_info): Delete.
! 	* c-gimplify.cc (c_genericize): Get TDI_original dump file info
! 	from the global dump_manager instead of the (now obsolete)
! 	get_dump_info.
! 	* c-opts.cc (original_dump_file): Delete.
! 	(original_dump_flags): Delete.
! 	(c_common_parse_file): Switch to using global dump_manager to
! 	manage the original dump file; fix leak of dump file.
! 	(get_dump_info): Delete.
! 
! 2022-05-07  Marek Polacek  <polacek@redhat.com>
! 
! 	PR c++/101833
! 	PR c++/47634
! 	* c-attribs.cc (positional_argument): Pass POS by reference.  Deal
! 	with FN being either a function declaration or function type.  Use
! 	maybe_adjust_arg_pos_for_attribute.
! 	* c-common.cc (check_function_arguments): Maybe pass FNDECL down to
! 	check_function_format.
! 	* c-common.h (maybe_adjust_arg_pos_for_attribute): Declare.
! 	(positional_argument): Adjust.
! 	* c-format.cc (get_constant): Rename to ...
! 	(validate_constant): ... this.  Take EXPR by reference.  Return bool
! 	instead of tree.
! 	(handle_format_arg_attribute): Don't overwrite FORMAT_NUM_EXPR by the
! 	return value of validate_constant.
! 	(decode_format_attr): Don't overwrite FORMAT_NUM_EXPR and
! 	FIRST_ARG_NUM_EXPR by the return value of validate_constant.
! 	(check_function_format): Adjust a parameter name.
! 	(handle_format_attribute): Maybe pass FNDECL down to decode_format_attr.
! 
! 2022-05-04  Marek Polacek  <polacek@redhat.com>
! 
! 	* c-warn.cc (warnings_for_convert_and_check): Convert constants of type
! 	char to int.
! 
! 2022-04-30  Jason Merrill  <jason@redhat.com>
! 
! 	PR c/100545
! 	* c-attribs.cc (handle_mode_attribute): Copy attributes, aligned,
! 	and typedef.
! 	* c-common.cc (set_underlying_type): Add assert.
  
  2022-04-26  Patrick Palka  <ppalka@redhat.com>
  
***************
*** 607,614 ****
  
  	PR target/102552
  	* c-common.c (parse_optimize_options): decoded_options[0] is
! 	  used for program name, so merged_decoded_options should also
! 	  respect that.
  
  2021-10-01  Jakub Jelinek  <jakub@redhat.com>
  	    Richard Biener  <rguenther@suse.de>
--- 1488,1495 ----
  
  	PR target/102552
  	* c-common.c (parse_optimize_options): decoded_options[0] is
! 	used for program name, so merged_decoded_options should also
! 	respect that.
  
  2021-10-01  Jakub Jelinek  <jakub@redhat.com>
  	    Richard Biener  <rguenther@suse.de>
***************
*** 636,642 ****
  2021-09-27  Martin Liska  <mliska@suse.cz>
  
  	* c-opts.c (c_common_init_options_struct): Set also
! 	  x_flag_default_complex_method.
  
  2021-09-22  Jakub Jelinek  <jakub@redhat.com>
  
--- 1517,1523 ----
  2021-09-27  Martin Liska  <mliska@suse.cz>
  
  	* c-opts.c (c_common_init_options_struct): Set also
! 	x_flag_default_complex_method.
  
  2021-09-22  Jakub Jelinek  <jakub@redhat.com>
  
***************
*** 829,836 ****
  2021-07-06  Martin Sebor  <msebor@redhat.com>
  
  	* c-format.c (gcc_tdiag_char_table): Remove support for %G and %K.
! 	 (gcc_cdiag_char_table): Same.
! 	 (gcc_cxxdiag_char_table): Same.
  
  2021-07-02  Jakub Jelinek  <jakub@redhat.com>
  
--- 1710,1717 ----
  2021-07-06  Martin Sebor  <msebor@redhat.com>
  
  	* c-format.c (gcc_tdiag_char_table): Remove support for %G and %K.
! 	(gcc_cdiag_char_table): Same.
! 	(gcc_cxxdiag_char_table): Same.
  
  2021-07-02  Jakub Jelinek  <jakub@redhat.com>
  
***************
*** 13122,13128 ****
  	* c-common.c: Include gt-c-family-c-common.h.
  	* c-pragma.c: Include gt-c-family-c-pragma.h.
  
! Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 14003,14009 ----
  	* c-common.c: Include gt-c-family-c-common.h.
  	* c-pragma.c: Include gt-c-family-c-pragma.h.
  
! Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-ada-spec.cc gcc-13.1.0/gcc/c-family/c-ada-spec.cc
*** gcc-12.2.0/gcc/c-family/c-ada-spec.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-ada-spec.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Print GENERIC declaration (functions, variables, types) trees coming from
     the C and C++ front-ends as well as macros in Ada syntax.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Adapted from tree-pretty-print.cc by Arnaud Charlet  <charlet@adacore.com>
  
  This file is part of GCC.
--- 1,6 ----
  /* Print GENERIC declaration (functions, variables, types) trees coming from
     the C and C++ front-ends as well as macros in Ada syntax.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Adapted from tree-pretty-print.cc by Arnaud Charlet  <charlet@adacore.com>
  
  This file is part of GCC.
*************** dump_ada_enum_type (pretty_printer *buff
*** 2030,2036 ****
      }
  }
  
! /* Return true if NODE is the __float128/_Float128 type.  */
  
  static bool
  is_float128 (tree node)
--- 2030,2068 ----
      }
  }
  
! /* Return true if NODE is the _Float32/_Float32x type.  */
! 
! static bool
! is_float32 (tree node)
! {
!   if (!TYPE_NAME (node) || TREE_CODE (TYPE_NAME (node)) != TYPE_DECL)
!     return false;
! 
!   tree name = DECL_NAME (TYPE_NAME (node));
! 
!   if (IDENTIFIER_POINTER (name) [0] != '_')
!     return false;
! 
!   return id_equal (name, "_Float32") || id_equal (name, "_Float32x");
! }
! 
! /* Return true if NODE is the _Float64/_Float64x type.  */
! 
! static bool
! is_float64 (tree node)
! {
!   if (!TYPE_NAME (node) || TREE_CODE (TYPE_NAME (node)) != TYPE_DECL)
!     return false;
! 
!   tree name = DECL_NAME (TYPE_NAME (node));
! 
!   if (IDENTIFIER_POINTER (name) [0] != '_')
!     return false;
! 
!   return id_equal (name, "_Float64") || id_equal (name, "_Float64x");
! }
! 
! /* Return true if NODE is the __float128/_Float128/_Float128x type.  */
  
  static bool
  is_float128 (tree node)
*************** is_float128 (tree node)
*** 2043,2049 ****
    if (IDENTIFIER_POINTER (name) [0] != '_')
      return false;
  
!   return id_equal (name, "__float128") || id_equal (name, "_Float128");
  }
  
  static bool bitfield_used = false;
--- 2075,2083 ----
    if (IDENTIFIER_POINTER (name) [0] != '_')
      return false;
  
!   return id_equal (name, "__float128")
! 	 || id_equal (name, "_Float128")
! 	 || id_equal (name, "_Float128x");
  }
  
  static bool bitfield_used = false;
*************** dump_ada_node (pretty_printer *buffer, t
*** 2132,2138 ****
        break;
  
      case REAL_TYPE:
!       if (is_float128 (node))
  	{
  	  append_withs ("Interfaces.C.Extensions", false);
  	  pp_string (buffer, "Extensions.Float_128");
--- 2166,2182 ----
        break;
  
      case REAL_TYPE:
!       if (is_float32 (node))
! 	{
! 	  pp_string (buffer, "Float");
! 	  break;
! 	}
!       else if (is_float64 (node))
! 	{
! 	  pp_string (buffer, "Long_Float");
! 	  break;
! 	}
!       else if (is_float128 (node))
  	{
  	  append_withs ("Interfaces.C.Extensions", false);
  	  pp_string (buffer, "Extensions.Float_128");
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-ada-spec.h gcc-13.1.0/gcc/c-family/c-ada-spec.h
*** gcc-12.2.0/gcc/c-family/c-ada-spec.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-ada-spec.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Interface for -fdump-ada-spec capability.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Interface for -fdump-ada-spec capability.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-attribs.cc gcc-13.1.0/gcc/c-family/c-attribs.cc
*** gcc-12.2.0/gcc/c-family/c-attribs.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-attribs.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C-family attributes handling.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* C-family attributes handling.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static tree handle_special_var_sec_attri
*** 101,106 ****
--- 101,108 ----
  static tree handle_aligned_attribute (tree *, tree, tree, int, bool *);
  static tree handle_warn_if_not_aligned_attribute (tree *, tree, tree,
  						  int, bool *);
+ static tree handle_strict_flex_array_attribute (tree *, tree, tree,
+ 						 int, bool *);
  static tree handle_weak_attribute (tree *, tree, tree, int, bool *) ;
  static tree handle_noplt_attribute (tree *, tree, tree, int, bool *) ;
  static tree handle_alias_ifunc_attribute (bool, tree *, tree, tree, bool *);
*************** static tree handle_type_generic_attribut
*** 144,149 ****
--- 146,152 ----
  static tree handle_alloc_size_attribute (tree *, tree, tree, int, bool *);
  static tree handle_alloc_align_attribute (tree *, tree, tree, int, bool *);
  static tree handle_assume_aligned_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_assume_attribute (tree *, tree, tree, int, bool *);
  static tree handle_target_attribute (tree *, tree, tree, int, bool *);
  static tree handle_target_clones_attribute (tree *, tree, tree, int, bool *);
  static tree handle_optimize_attribute (tree *, tree, tree, int, bool *);
*************** static tree handle_objc_nullability_attr
*** 173,178 ****
--- 176,182 ----
  static tree handle_signed_bool_precision_attribute (tree *, tree, tree, int,
  						    bool *);
  static tree handle_retain_attribute (tree *, tree, tree, int, bool *);
+ static tree handle_fd_arg_attribute (tree *, tree, tree, int, bool *);
  
  /* Helper to define attribute exclusions.  */
  #define ATTR_EXCL(name, function, type, variable)	\
*************** const struct attribute_spec c_common_att
*** 367,372 ****
--- 371,378 ----
  	                      attr_aligned_exclusions },
    { "warn_if_not_aligned",    0, 1, false, false, false, false,
  			      handle_warn_if_not_aligned_attribute, NULL },
+   { "strict_flex_array",      1, 1, true, false, false, false,
+ 			      handle_strict_flex_array_attribute, NULL },
    { "weak",                   0, 0, true,  false, false, false,
  			      handle_weak_attribute, NULL },
    { "noplt",                   0, 0, true,  false, false, false,
*************** const struct attribute_spec c_common_att
*** 529,534 ****
--- 535,542 ----
  			      handle_designated_init_attribute, NULL },
    { "fallthrough",	      0, 0, false, false, false, false,
  			      handle_fallthrough_attribute, NULL },
+   { "assume",		      1, 1, false, false, false, false,
+ 			      handle_assume_attribute, NULL },
    { "patchable_function_entry",	1, 2, true, false, false, false,
  			      handle_patchable_function_entry_attribute,
  			      NULL },
*************** const struct attribute_spec c_common_att
*** 555,560 ****
--- 563,574 ----
  			      handle_dealloc_attribute, NULL },
    { "tainted_args",	      0, 0, true,  false, false, false,
  			      handle_tainted_args_attribute, NULL },
+   { "fd_arg",             1, 1, false, true, true, false,
+             handle_fd_arg_attribute, NULL},      
+   { "fd_arg_read",        1, 1, false, true, true, false,
+             handle_fd_arg_attribute, NULL},
+   { "fd_arg_write",       1, 1, false, true, true, false,
+             handle_fd_arg_attribute, NULL},         
    { NULL,                     0, 0, false, false, false, false, NULL, NULL }
  };
  
*************** attribute_takes_identifier_p (const_tree
*** 594,611 ****
  }
  
  /* Verify that argument value POS at position ARGNO to attribute NAME
!    applied to function TYPE refers to a function parameter at position
!    POS and the expected type CODE.  Treat CODE == INTEGER_TYPE as
!    matching all C integral types except bool.  If successful, return
!    POS after default conversions, if any.  Otherwise, issue appropriate
!    warnings and return null.  A non-zero 1-based ARGNO should be passed
!    in by callers only for attributes with more than one argument.  */
  
  tree
! positional_argument (const_tree fntype, const_tree atname, tree pos,
  		     tree_code code, int argno /* = 0 */,
  		     int flags /* = posargflags () */)
  {
    if (pos && TREE_CODE (pos) != IDENTIFIER_NODE
        && TREE_CODE (pos) != FUNCTION_DECL)
      pos = default_conversion (pos);
--- 608,630 ----
  }
  
  /* Verify that argument value POS at position ARGNO to attribute NAME
!    applied to function FN (which is either a function declaration or function
!    type) refers to a function parameter at position POS and the expected type
!    CODE.  Treat CODE == INTEGER_TYPE as matching all C integral types except
!    bool.  If successful, return POS after default conversions (and possibly
!    adjusted by ADJUST_POS).  Otherwise, issue appropriate warnings and return
!    null.  A non-zero 1-based ARGNO should be passed in by callers only for
!    attributes with more than one argument.
! 
!    N.B. This function modifies POS.  */
  
  tree
! positional_argument (const_tree fn, const_tree atname, tree &pos,
  		     tree_code code, int argno /* = 0 */,
  		     int flags /* = posargflags () */)
  {
+   const_tree fndecl = TYPE_P (fn) ? NULL_TREE : fn;
+   const_tree fntype = TYPE_P (fn) ? fn : TREE_TYPE (fn);
    if (pos && TREE_CODE (pos) != IDENTIFIER_NODE
        && TREE_CODE (pos) != FUNCTION_DECL)
      pos = default_conversion (pos);
*************** positional_argument (const_tree fntype,
*** 682,687 ****
--- 701,711 ----
    if (!prototype_p (fntype))
      return pos;
  
+    /* ADJUST_POS is non-zero in C++ when the function type has invisible
+       parameters generated by the compiler, such as the in-charge or VTT
+       parameters.  */
+   const int adjust_pos = maybe_adjust_arg_pos_for_attribute (fndecl);
+ 
    /* Verify that the argument position does not exceed the number
       of formal arguments to the function.  When POSARG_ELLIPSIS
       is set, ARGNO may be beyond the last argument of a vararg
*************** positional_argument (const_tree fntype,
*** 690,696 ****
    if (!nargs
        || !tree_fits_uhwi_p (pos)
        || ((flags & POSARG_ELLIPSIS) == 0
! 	  && !IN_RANGE (tree_to_uhwi (pos), 1, nargs)))
      {
  
        if (argno < 1)
--- 714,720 ----
    if (!nargs
        || !tree_fits_uhwi_p (pos)
        || ((flags & POSARG_ELLIPSIS) == 0
! 	  && !IN_RANGE (tree_to_uhwi (pos) + adjust_pos, 1, nargs)))
      {
  
        if (argno < 1)
*************** positional_argument (const_tree fntype,
*** 707,714 ****
      }
  
    /* Verify that the type of the referenced formal argument matches
!      the expected type.  */
!   unsigned HOST_WIDE_INT ipos = tree_to_uhwi (pos);
  
    /* Zero was handled above.  */
    gcc_assert (ipos != 0);
--- 731,739 ----
      }
  
    /* Verify that the type of the referenced formal argument matches
!      the expected type.   Invisible parameters may have been added by
!      the compiler, so adjust the position accordingly.  */
!   unsigned HOST_WIDE_INT ipos = tree_to_uhwi (pos) + adjust_pos;
  
    /* Zero was handled above.  */
    gcc_assert (ipos != 0);
*************** positional_argument (const_tree fntype,
*** 791,797 ****
        return NULL_TREE;
      }
  
!   return pos;
  }
  
  /* Return the first of DECL or TYPE attributes installed in NODE if it's
--- 816,822 ----
        return NULL_TREE;
      }
  
!   return build_int_cst (TREE_TYPE (pos), ipos);
  }
  
  /* Return the first of DECL or TYPE attributes installed in NODE if it's
*************** get_priority (tree args, bool is_destruc
*** 1884,1890 ****
      }
  
    arg = TREE_VALUE (args);
!   if (TREE_CODE (arg) == IDENTIFIER_NODE)
      goto invalid;
    if (arg == error_mark_node)
      return DEFAULT_INIT_PRIORITY;
--- 1909,1915 ----
      }
  
    arg = TREE_VALUE (args);
!   if (TREE_CODE (arg) == IDENTIFIER_NODE || TREE_CODE (arg) == FUNCTION_DECL)
      goto invalid;
    if (arg == error_mark_node)
      return DEFAULT_INIT_PRIORITY;
*************** handle_mode_attribute (tree *node, tree
*** 2199,2205 ****
  	  return NULL_TREE;
  	}
  
!       *node = build_qualified_type (typefm, TYPE_QUALS (type));
      }
  
    return NULL_TREE;
--- 2224,2234 ----
  	  return NULL_TREE;
  	}
  
!       /* Copy any quals and attributes to the new type.  */
!       *node = build_type_attribute_qual_variant (typefm, TYPE_ATTRIBUTES (type),
! 						 TYPE_QUALS (type));
!       if (TYPE_USER_ALIGN (type))
! 	*node = build_aligned_type (*node, TYPE_ALIGN (type));
      }
  
    return NULL_TREE;
*************** handle_warn_if_not_aligned_attribute (tr
*** 2483,2488 ****
--- 2512,2560 ----
  					  no_add_attrs, true);
  }
  
+ /* Handle a "strict_flex_array" attribute; arguments as in
+    struct attribute_spec.handler.  */
+ 
+ static tree
+ handle_strict_flex_array_attribute (tree *node, tree name,
+ 				    tree args, int ARG_UNUSED (flags),
+ 				    bool *no_add_attrs)
+ {
+   tree decl = *node;
+   tree argval = TREE_VALUE (args);
+ 
+   /* This attribute only applies to field decls of a structure.  */
+   if (TREE_CODE (decl) != FIELD_DECL)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE attribute may not be specified for %q+D", name, decl);
+       *no_add_attrs = true;
+     }
+   /* This attribute only applies to field with array type.  */
+   else if (TREE_CODE (TREE_TYPE (decl)) != ARRAY_TYPE)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE attribute may not be specified for a non-array field",
+ 		name);
+       *no_add_attrs = true;
+     }
+   else if (TREE_CODE (argval) != INTEGER_CST)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE attribute argument not an integer", name);
+       *no_add_attrs = true;
+     }
+   else if (!tree_fits_uhwi_p (argval) || tree_to_uhwi (argval) > 3)
+     {
+       error_at (DECL_SOURCE_LOCATION (decl),
+ 		"%qE attribute argument %qE is not an integer constant"
+ 		" between 0 and 3", name, argval);
+       *no_add_attrs = true;
+     }
+ 
+   return NULL_TREE;
+ }
+ 
  /* Handle a "weak" attribute; arguments as in
     struct attribute_spec.handler.  */
  
*************** handle_deprecated_attribute (tree *node,
*** 4139,4146 ****
  	  || VAR_OR_FUNCTION_DECL_P (decl)
  	  || TREE_CODE (decl) == FIELD_DECL
  	  || TREE_CODE (decl) == CONST_DECL
! 	  || objc_method_decl (TREE_CODE (decl)))
  	TREE_DEPRECATED (decl) = 1;
        else
  	warn = 1;
      }
--- 4211,4226 ----
  	  || VAR_OR_FUNCTION_DECL_P (decl)
  	  || TREE_CODE (decl) == FIELD_DECL
  	  || TREE_CODE (decl) == CONST_DECL
! 	  || objc_method_decl (TREE_CODE (decl))
! 	  || TREE_CODE (decl) == CONCEPT_DECL)
  	TREE_DEPRECATED (decl) = 1;
+       else if (TREE_CODE (decl) == LABEL_DECL)
+ 	{
+ 	  pedwarn (input_location, OPT_Wattributes, "%qE attribute ignored",
+ 		   name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
        else
  	warn = 1;
      }
*************** handle_deprecated_attribute (tree *node,
*** 4160,4166 ****
        if (type && TYPE_NAME (type))
  	{
  	  if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
! 	    what = TYPE_NAME (*node);
  	  else if (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
  		   && DECL_NAME (TYPE_NAME (type)))
  	    what = DECL_NAME (TYPE_NAME (type));
--- 4240,4246 ----
        if (type && TYPE_NAME (type))
  	{
  	  if (TREE_CODE (TYPE_NAME (type)) == IDENTIFIER_NODE)
! 	    what = TYPE_NAME (type);
  	  else if (TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
  		   && DECL_NAME (TYPE_NAME (type)))
  	    what = DECL_NAME (TYPE_NAME (type));
*************** handle_nonnull_attribute (tree *node, tr
*** 4506,4511 ****
--- 4586,4615 ----
    return NULL_TREE;
  }
  
+ /* Handle the "fd_arg", "fd_arg_read" and "fd_arg_write" attributes */
+ 
+ static tree
+ handle_fd_arg_attribute (tree *node, tree name, tree args,
+                               int ARG_UNUSED (flags), bool *no_add_attrs)
+ {
+   tree type = *node;
+   if (!args)
+     {
+       if (!prototype_p (type))
+         {
+           error ("%qE attribute without arguments on a non-prototype", name);
+           *no_add_attrs = true;
+         }
+       return NULL_TREE;
+     }
+ 
+   if (positional_argument (*node, name, TREE_VALUE (args), INTEGER_TYPE))
+       return NULL_TREE;
+ 
+   *no_add_attrs = true;  
+   return NULL_TREE;
+ }
+ 
  /* Handle the "nonstring" variable attribute.  */
  
  static tree
*************** append_access_attr (tree node[3], tree a
*** 4624,4645 ****
    rdwr_map cur_idxs;
    init_attr_rdwr_indices (&cur_idxs, attrs);
  
    std::string spec;
!   for (auto it = new_idxs.begin (); it != new_idxs.end (); ++it)
      {
!       const auto &newaxsref = *it;
  
        /* The map has two equal entries for each pointer argument that
  	 has an associated size argument.  Process just the entry for
  	 the former.  */
!       if ((unsigned)newaxsref.first != newaxsref.second.ptrarg)
  	continue;
  
!       const attr_access* const cura = cur_idxs.get (newaxsref.first);
        if (!cura)
  	{
  	  /* The new attribute needs to be added.  */
! 	  tree str = newaxsref.second.to_internal_string ();
  	  spec += TREE_STRING_POINTER (str);
  	  continue;
  	}
--- 4728,4754 ----
    rdwr_map cur_idxs;
    init_attr_rdwr_indices (&cur_idxs, attrs);
  
+   tree args = TYPE_ARG_TYPES (node[0]);
+   int argpos = 0;
    std::string spec;
!   for (tree arg = args; arg; arg = TREE_CHAIN (arg), argpos++)
      {
!       const attr_access* const newa = new_idxs.get (argpos);
! 
!       if (!newa)
! 	continue;
  
        /* The map has two equal entries for each pointer argument that
  	 has an associated size argument.  Process just the entry for
  	 the former.  */
!       if ((unsigned)argpos != newa->ptrarg)
  	continue;
  
!       const attr_access* const cura = cur_idxs.get (argpos);
        if (!cura)
  	{
  	  /* The new attribute needs to be added.  */
! 	  tree str = newa->to_internal_string ();
  	  spec += TREE_STRING_POINTER (str);
  	  continue;
  	}
*************** append_access_attr (tree node[3], tree a
*** 4647,4653 ****
        /* The new access spec refers to an array/pointer argument for
  	 which an access spec already exists.  Check and diagnose any
  	 conflicts.  If no conflicts are found, merge the two.  */
-       const attr_access* const newa = &newaxsref.second;
  
        if (!attrstr)
  	{
--- 4756,4761 ----
*************** append_access_attr (tree node[3], tree a
*** 4782,4788 ****
  	continue;
  
        /* Merge the CURA and NEWA.  */
!       attr_access merged = newaxsref.second;
  
        /* VLA seen in a declaration takes precedence.  */
        if (cura->minsize == HOST_WIDE_INT_M1U)
--- 4890,4896 ----
  	continue;
  
        /* Merge the CURA and NEWA.  */
!       attr_access merged = *newa;
  
        /* VLA seen in a declaration takes precedence.  */
        if (cura->minsize == HOST_WIDE_INT_M1U)
*************** append_access_attr (tree node[3], tree a
*** 4808,4816 ****
  
  /* Convenience wrapper for the above.  */
  
! tree
! append_access_attr (tree node[3], tree attrs, const char *attrstr,
! 		    char code, HOST_WIDE_INT idxs[2])
  {
    char attrspec[80];
    int n = sprintf (attrspec, "%c%u", code, (unsigned) idxs[0] - 1);
--- 4916,4924 ----
  
  /* Convenience wrapper for the above.  */
  
! static tree
! append_access_attr_idxs (tree node[3], tree attrs, const char *attrstr,
! 			 char code, HOST_WIDE_INT idxs[2])
  {
    char attrspec[80];
    int n = sprintf (attrspec, "%c%u", code, (unsigned) idxs[0] - 1);
*************** handle_access_attribute (tree node[3], t
*** 4927,4934 ****
    int imode;
  
    {
!     const int nmodes =
!       sizeof attr_access::mode_names / sizeof *attr_access::mode_names;
  
      for (imode = 0; imode != nmodes; ++imode)
        if (!strncmp (ps, attr_access::mode_names[imode],
--- 5035,5041 ----
    int imode;
  
    {
!     const int nmodes = ARRAY_SIZE (attr_access::mode_names);
  
      for (imode = 0; imode != nmodes; ++imode)
        if (!strncmp (ps, attr_access::mode_names[imode],
*************** handle_access_attribute (tree node[3], t
*** 5101,5107 ****
       attributes specified on previous declarations of the same type
       and if not, concatenate the two.  */
    const char code = attr_access::mode_chars[mode];
!   tree new_attrs = append_access_attr (node, attrs, attrstr, code, idxs);
    if (!new_attrs)
      return NULL_TREE;
  
--- 5208,5214 ----
       attributes specified on previous declarations of the same type
       and if not, concatenate the two.  */
    const char code = attr_access::mode_chars[mode];
!   tree new_attrs = append_access_attr_idxs (node, attrs, attrstr, code, idxs);
    if (!new_attrs)
      return NULL_TREE;
  
*************** handle_access_attribute (tree node[3], t
*** 5114,5120 ****
      {
        /* Repeat for the previously declared type.  */
        attrs = TYPE_ATTRIBUTES (TREE_TYPE (node[1]));
!       new_attrs = append_access_attr (node, attrs, attrstr, code, idxs);
        if (!new_attrs)
  	return NULL_TREE;
  
--- 5221,5227 ----
      {
        /* Repeat for the previously declared type.  */
        attrs = TYPE_ATTRIBUTES (TREE_TYPE (node[1]));
!       new_attrs = append_access_attr_idxs (node, attrs, attrstr, code, idxs);
        if (!new_attrs)
  	return NULL_TREE;
  
*************** handle_target_clones_attribute (tree *no
*** 5471,5482 ****
    /* Ensure we have a function type.  */
    if (TREE_CODE (*node) == FUNCTION_DECL)
      {
!       if (TREE_CODE (TREE_VALUE (args)) != STRING_CST)
  	{
! 	  error ("%qE attribute argument not a string constant", name);
! 	  *no_add_attrs = true;
  	}
!       else if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (*node)))
  	{
  	  warning (OPT_Wattributes, "%qE attribute ignored due to conflict "
  		   "with %qs attribute", name, "always_inline");
--- 5578,5595 ----
    /* Ensure we have a function type.  */
    if (TREE_CODE (*node) == FUNCTION_DECL)
      {
!       for (tree t = args; t != NULL_TREE; t = TREE_CHAIN (t))
  	{
! 	  tree value = TREE_VALUE (t);
! 	  if (TREE_CODE (value) != STRING_CST)
! 	    {
! 	      error ("%qE attribute argument not a string constant", name);
! 	      *no_add_attrs = true;
! 	      return NULL_TREE;
! 	    }
  	}
! 
!       if (lookup_attribute ("always_inline", DECL_ATTRIBUTES (*node)))
  	{
  	  warning (OPT_Wattributes, "%qE attribute ignored due to conflict "
  		   "with %qs attribute", name, "always_inline");
*************** handle_fallthrough_attribute (tree *, tr
*** 5686,5691 ****
--- 5799,5816 ----
  {
    pedwarn (input_location, OPT_Wattributes, "%qE attribute ignored", name);
    *no_add_attrs = true;
+   return NULL_TREE;
+ }
+ 
+ /* Handle a "assume" attribute; arguments as in struct
+    attribute_spec.handler.  */
+ 
+ tree
+ handle_assume_attribute (tree *, tree name, tree, int,
+ 			 bool *no_add_attrs)
+ {
+   pedwarn (input_location, OPT_Wattributes, "%qE attribute ignored", name);
+   *no_add_attrs = true;
    return NULL_TREE;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-common.cc gcc-13.1.0/gcc/c-family/c-common.cc
*** gcc-12.2.0/gcc/c-family/c-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines shared by all languages that are variants of C.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines shared by all languages that are variants of C.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** int c_inhibit_evaluation_warnings;
*** 284,292 ****
     be generated.  */
  bool in_late_binary_op;
  
! /* Whether lexing has been completed, so subsequent preprocessor
!    errors should use the compiler's input_location.  */
! bool done_lexing = false;
  
  /* Information about how a function name is generated.  */
  struct fname_var_t
--- 284,294 ----
     be generated.  */
  bool in_late_binary_op;
  
! /* Depending on which phase of processing we are in, we may need
!    to prefer input_location to libcpp's locations.  (Specifically,
!    after the C++ lexer is done lexing tokens, but prior to calling
!    cpp_finish (), we need to do so.  */
! bool override_libcpp_locations;
  
  /* Information about how a function name is generated.  */
  struct fname_var_t
*************** static bool nonnull_check_p (tree, unsig
*** 322,329 ****
     if they match the mask.
  
     Masks for languages:
!    C --std=c89: D_C99 | D_CXXONLY | D_OBJC | D_CXX_OBJC
!    C --std=c99: D_CXXONLY | D_OBJC
     ObjC is like C except that D_OBJC and D_CXX_OBJC are not set
     C++ --std=c++98: D_CONLY | D_CXX11 | D_CXX20 | D_OBJC
     C++ --std=c++11: D_CONLY | D_CXX20 | D_OBJC
--- 324,333 ----
     if they match the mask.
  
     Masks for languages:
!    C --std=c89: D_C99 | D_C2X | D_CXXONLY | D_OBJC | D_CXX_OBJC
!    C --std=c99: D_C2X | D_CXXONLY | D_OBJC
!    C --std=c17: D_C2X | D_CXXONLY | D_OBJC
!    C --std=c2x: D_CXXONLY | D_OBJC
     ObjC is like C except that D_OBJC and D_CXX_OBJC are not set
     C++ --std=c++98: D_CONLY | D_CXX11 | D_CXX20 | D_OBJC
     C++ --std=c++11: D_CONLY | D_CXX20 | D_OBJC
*************** const struct c_common_resword c_common_r
*** 348,360 ****
    { "_Bool",		RID_BOOL,      D_CONLY },
    { "_Complex",		RID_COMPLEX,	0 },
    { "_Imaginary",	RID_IMAGINARY, D_CONLY },
!   { "_Float16",         RID_FLOAT16,   D_CONLY },
!   { "_Float32",         RID_FLOAT32,   D_CONLY },
!   { "_Float64",         RID_FLOAT64,   D_CONLY },
!   { "_Float128",        RID_FLOAT128,  D_CONLY },
!   { "_Float32x",        RID_FLOAT32X,  D_CONLY },
!   { "_Float64x",        RID_FLOAT64X,  D_CONLY },
!   { "_Float128x",       RID_FLOAT128X, D_CONLY },
    { "_Decimal32",       RID_DFLOAT32,  D_CONLY },
    { "_Decimal64",       RID_DFLOAT64,  D_CONLY },
    { "_Decimal128",      RID_DFLOAT128, D_CONLY },
--- 352,364 ----
    { "_Bool",		RID_BOOL,      D_CONLY },
    { "_Complex",		RID_COMPLEX,	0 },
    { "_Imaginary",	RID_IMAGINARY, D_CONLY },
!   { "_Float16",         RID_FLOAT16,    0 },
!   { "_Float32",         RID_FLOAT32,    0 },
!   { "_Float64",         RID_FLOAT64,    0 },
!   { "_Float128",        RID_FLOAT128,   0 },
!   { "_Float32x",        RID_FLOAT32X,   0 },
!   { "_Float64x",        RID_FLOAT64X,   0 },
!   { "_Float128x",       RID_FLOAT128X,  0 },
    { "_Decimal32",       RID_DFLOAT32,  D_CONLY },
    { "_Decimal64",       RID_DFLOAT64,  D_CONLY },
    { "_Decimal128",      RID_DFLOAT128, D_CONLY },
*************** const struct c_common_resword c_common_r
*** 374,380 ****
    { "__attribute",	RID_ATTRIBUTE,	0 },
    { "__attribute__",	RID_ATTRIBUTE,	0 },
    { "__auto_type",	RID_AUTO_TYPE,	D_CONLY },
-   { "__bases",          RID_BASES, D_CXXONLY },
    { "__builtin_addressof", RID_ADDRESSOF, D_CXXONLY },
    { "__builtin_bit_cast", RID_BUILTIN_BIT_CAST, D_CXXONLY },
    { "__builtin_call_with_static_chain",
--- 378,383 ----
*************** const struct c_common_resword c_common_r
*** 397,440 ****
    { "__const__",	RID_CONST,	0 },
    { "__constinit",	RID_CONSTINIT,	D_CXXONLY },
    { "__decltype",       RID_DECLTYPE,   D_CXXONLY },
-   { "__direct_bases",   RID_DIRECT_BASES, D_CXXONLY },
    { "__extension__",	RID_EXTENSION,	0 },
    { "__func__",		RID_C99_FUNCTION_NAME, 0 },
-   { "__has_nothrow_assign", RID_HAS_NOTHROW_ASSIGN, D_CXXONLY },
-   { "__has_nothrow_constructor", RID_HAS_NOTHROW_CONSTRUCTOR, D_CXXONLY },
-   { "__has_nothrow_copy", RID_HAS_NOTHROW_COPY, D_CXXONLY },
-   { "__has_trivial_assign", RID_HAS_TRIVIAL_ASSIGN, D_CXXONLY },
-   { "__has_trivial_constructor", RID_HAS_TRIVIAL_CONSTRUCTOR, D_CXXONLY },
-   { "__has_trivial_copy", RID_HAS_TRIVIAL_COPY, D_CXXONLY },
-   { "__has_trivial_destructor", RID_HAS_TRIVIAL_DESTRUCTOR, D_CXXONLY },
-   { "__has_unique_object_representations", RID_HAS_UNIQUE_OBJ_REPRESENTATIONS,
- 					D_CXXONLY },
-   { "__has_virtual_destructor", RID_HAS_VIRTUAL_DESTRUCTOR, D_CXXONLY },
    { "__imag",		RID_IMAGPART,	0 },
    { "__imag__",		RID_IMAGPART,	0 },
    { "__inline",		RID_INLINE,	0 },
    { "__inline__",	RID_INLINE,	0 },
-   { "__is_abstract",	RID_IS_ABSTRACT, D_CXXONLY },
-   { "__is_aggregate",	RID_IS_AGGREGATE, D_CXXONLY },
-   { "__is_base_of",	RID_IS_BASE_OF, D_CXXONLY },
-   { "__is_class",	RID_IS_CLASS,	D_CXXONLY },
-   { "__is_empty",	RID_IS_EMPTY,	D_CXXONLY },
-   { "__is_enum",	RID_IS_ENUM,	D_CXXONLY },
-   { "__is_final",	RID_IS_FINAL,	D_CXXONLY },
-   { "__is_layout_compatible", RID_IS_LAYOUT_COMPATIBLE, D_CXXONLY },
-   { "__is_literal_type", RID_IS_LITERAL_TYPE, D_CXXONLY },
-   { "__is_pointer_interconvertible_base_of",
- 			RID_IS_POINTER_INTERCONVERTIBLE_BASE_OF, D_CXXONLY },
-   { "__is_pod",		RID_IS_POD,	D_CXXONLY },
-   { "__is_polymorphic",	RID_IS_POLYMORPHIC, D_CXXONLY },
-   { "__is_same",     RID_IS_SAME_AS, D_CXXONLY },
-   { "__is_same_as",     RID_IS_SAME_AS, D_CXXONLY },
-   { "__is_standard_layout", RID_IS_STD_LAYOUT, D_CXXONLY },
-   { "__is_trivial",     RID_IS_TRIVIAL, D_CXXONLY },
-   { "__is_trivially_assignable", RID_IS_TRIVIALLY_ASSIGNABLE, D_CXXONLY },
-   { "__is_trivially_constructible", RID_IS_TRIVIALLY_CONSTRUCTIBLE, D_CXXONLY },
-   { "__is_trivially_copyable", RID_IS_TRIVIALLY_COPYABLE, D_CXXONLY },
-   { "__is_union",	RID_IS_UNION,	D_CXXONLY },
    { "__label__",	RID_LABEL,	0 },
    { "__null",		RID_NULL,	0 },
    { "__real",		RID_REALPART,	0 },
--- 400,411 ----
*************** const struct c_common_resword c_common_r
*** 449,465 ****
    { "__transaction_cancel", RID_TRANSACTION_CANCEL, 0 },
    { "__typeof",		RID_TYPEOF,	0 },
    { "__typeof__",	RID_TYPEOF,	0 },
-   { "__underlying_type", RID_UNDERLYING_TYPE, D_CXXONLY },
    { "__volatile",	RID_VOLATILE,	0 },
    { "__volatile__",	RID_VOLATILE,	0 },
    { "__GIMPLE",		RID_GIMPLE,	D_CONLY },
    { "__PHI",		RID_PHI,	D_CONLY },
    { "__RTL",		RID_RTL,	D_CONLY },
!   { "alignas",		RID_ALIGNAS,	D_CXXONLY | D_CXX11 | D_CXXWARN },
!   { "alignof",		RID_ALIGNOF,	D_CXXONLY | D_CXX11 | D_CXXWARN },
    { "asm",		RID_ASM,	D_ASM },
    { "auto",		RID_AUTO,	0 },
!   { "bool",		RID_BOOL,	D_CXXONLY | D_CXXWARN },
    { "break",		RID_BREAK,	0 },
    { "case",		RID_CASE,	0 },
    { "catch",		RID_CATCH,	D_CXX_OBJC | D_CXXWARN },
--- 420,435 ----
    { "__transaction_cancel", RID_TRANSACTION_CANCEL, 0 },
    { "__typeof",		RID_TYPEOF,	0 },
    { "__typeof__",	RID_TYPEOF,	0 },
    { "__volatile",	RID_VOLATILE,	0 },
    { "__volatile__",	RID_VOLATILE,	0 },
    { "__GIMPLE",		RID_GIMPLE,	D_CONLY },
    { "__PHI",		RID_PHI,	D_CONLY },
    { "__RTL",		RID_RTL,	D_CONLY },
!   { "alignas",		RID_ALIGNAS,	D_C2X | D_CXX11 | D_CXXWARN },
!   { "alignof",		RID_ALIGNOF,	D_C2X | D_CXX11 | D_CXXWARN },
    { "asm",		RID_ASM,	D_ASM },
    { "auto",		RID_AUTO,	0 },
!   { "bool",		RID_BOOL,	D_C2X | D_CXXWARN },
    { "break",		RID_BREAK,	0 },
    { "case",		RID_CASE,	0 },
    { "catch",		RID_CATCH,	D_CXX_OBJC | D_CXXWARN },
*************** const struct c_common_resword c_common_r
*** 470,476 ****
    { "class",		RID_CLASS,	D_CXX_OBJC | D_CXXWARN },
    { "const",		RID_CONST,	0 },
    { "consteval",	RID_CONSTEVAL,	D_CXXONLY | D_CXX20 | D_CXXWARN },
!   { "constexpr",	RID_CONSTEXPR,	D_CXXONLY | D_CXX11 | D_CXXWARN },
    { "constinit",	RID_CONSTINIT,	D_CXXONLY | D_CXX20 | D_CXXWARN },
    { "const_cast",	RID_CONSTCAST,	D_CXXONLY | D_CXXWARN },
    { "continue",		RID_CONTINUE,	0 },
--- 440,446 ----
    { "class",		RID_CLASS,	D_CXX_OBJC | D_CXXWARN },
    { "const",		RID_CONST,	0 },
    { "consteval",	RID_CONSTEVAL,	D_CXXONLY | D_CXX20 | D_CXXWARN },
!   { "constexpr",	RID_CONSTEXPR,	D_C2X | D_CXX11 | D_CXXWARN },
    { "constinit",	RID_CONSTINIT,	D_CXXONLY | D_CXX20 | D_CXXWARN },
    { "const_cast",	RID_CONSTCAST,	D_CXXONLY | D_CXXWARN },
    { "continue",		RID_CONTINUE,	0 },
*************** const struct c_common_resword c_common_r
*** 485,491 ****
    { "explicit",		RID_EXPLICIT,	D_CXXONLY | D_CXXWARN },
    { "export",		RID_EXPORT,	D_CXXONLY | D_CXXWARN },
    { "extern",		RID_EXTERN,	0 },
!   { "false",		RID_FALSE,	D_CXXONLY | D_CXXWARN },
    { "float",		RID_FLOAT,	0 },
    { "for",		RID_FOR,	0 },
    { "friend",		RID_FRIEND,	D_CXXONLY | D_CXXWARN },
--- 455,461 ----
    { "explicit",		RID_EXPLICIT,	D_CXXONLY | D_CXXWARN },
    { "export",		RID_EXPORT,	D_CXXONLY | D_CXXWARN },
    { "extern",		RID_EXTERN,	0 },
!   { "false",		RID_FALSE,	D_C2X | D_CXXWARN },
    { "float",		RID_FLOAT,	0 },
    { "for",		RID_FOR,	0 },
    { "friend",		RID_FRIEND,	D_CXXONLY | D_CXXWARN },
*************** const struct c_common_resword c_common_r
*** 498,504 ****
    { "namespace",	RID_NAMESPACE,	D_CXXONLY | D_CXXWARN },
    { "new",		RID_NEW,	D_CXXONLY | D_CXXWARN },
    { "noexcept",		RID_NOEXCEPT,	D_CXXONLY | D_CXX11 | D_CXXWARN },
!   { "nullptr",		RID_NULLPTR,	D_CXXONLY | D_CXX11 | D_CXXWARN },
    { "operator",		RID_OPERATOR,	D_CXXONLY | D_CXXWARN },
    { "private",		RID_PRIVATE,	D_CXX_OBJC | D_CXXWARN },
    { "protected",	RID_PROTECTED,	D_CXX_OBJC | D_CXXWARN },
--- 468,474 ----
    { "namespace",	RID_NAMESPACE,	D_CXXONLY | D_CXXWARN },
    { "new",		RID_NEW,	D_CXXONLY | D_CXXWARN },
    { "noexcept",		RID_NOEXCEPT,	D_CXXONLY | D_CXX11 | D_CXXWARN },
!   { "nullptr",		RID_NULLPTR,	D_C2X | D_CXX11 | D_CXXWARN },
    { "operator",		RID_OPERATOR,	D_CXXONLY | D_CXXWARN },
    { "private",		RID_PRIVATE,	D_CXX_OBJC | D_CXXWARN },
    { "protected",	RID_PROTECTED,	D_CXX_OBJC | D_CXXWARN },
*************** const struct c_common_resword c_common_r
*** 511,530 ****
    { "signed",		RID_SIGNED,	0 },
    { "sizeof",		RID_SIZEOF,	0 },
    { "static",		RID_STATIC,	0 },
!   { "static_assert",    RID_STATIC_ASSERT, D_CXXONLY | D_CXX11 | D_CXXWARN },
    { "static_cast",	RID_STATCAST,	D_CXXONLY | D_CXXWARN },
    { "struct",		RID_STRUCT,	0 },
    { "switch",		RID_SWITCH,	0 },
    { "template",		RID_TEMPLATE,	D_CXXONLY | D_CXXWARN },
    { "this",		RID_THIS,	D_CXXONLY | D_CXXWARN },
!   { "thread_local",	RID_THREAD,	D_CXXONLY | D_CXX11 | D_CXXWARN },
    { "throw",		RID_THROW,	D_CXX_OBJC | D_CXXWARN },
!   { "true",		RID_TRUE,	D_CXXONLY | D_CXXWARN },
    { "try",		RID_TRY,	D_CXX_OBJC | D_CXXWARN },
    { "typedef",		RID_TYPEDEF,	0 },
    { "typename",		RID_TYPENAME,	D_CXXONLY | D_CXXWARN },
    { "typeid",		RID_TYPEID,	D_CXXONLY | D_CXXWARN },
!   { "typeof",		RID_TYPEOF,	D_ASM | D_EXT },
    { "union",		RID_UNION,	0 },
    { "unsigned",		RID_UNSIGNED,	0 },
    { "using",		RID_USING,	D_CXXONLY | D_CXXWARN },
--- 481,501 ----
    { "signed",		RID_SIGNED,	0 },
    { "sizeof",		RID_SIZEOF,	0 },
    { "static",		RID_STATIC,	0 },
!   { "static_assert",    RID_STATIC_ASSERT, D_C2X | D_CXX11 | D_CXXWARN },
    { "static_cast",	RID_STATCAST,	D_CXXONLY | D_CXXWARN },
    { "struct",		RID_STRUCT,	0 },
    { "switch",		RID_SWITCH,	0 },
    { "template",		RID_TEMPLATE,	D_CXXONLY | D_CXXWARN },
    { "this",		RID_THIS,	D_CXXONLY | D_CXXWARN },
!   { "thread_local",	RID_THREAD,	D_C2X | D_CXX11 | D_CXXWARN },
    { "throw",		RID_THROW,	D_CXX_OBJC | D_CXXWARN },
!   { "true",		RID_TRUE,	D_C2X | D_CXXWARN },
    { "try",		RID_TRY,	D_CXX_OBJC | D_CXXWARN },
    { "typedef",		RID_TYPEDEF,	0 },
    { "typename",		RID_TYPENAME,	D_CXXONLY | D_CXXWARN },
    { "typeid",		RID_TYPEID,	D_CXXONLY | D_CXXWARN },
!   { "typeof",		RID_TYPEOF,	D_EXT11 },
!   { "typeof_unqual",	RID_TYPEOF_UNQUAL,	D_CONLY | D_C2X },
    { "union",		RID_UNION,	0 },
    { "unsigned",		RID_UNSIGNED,	0 },
    { "using",		RID_USING,	D_CXXONLY | D_CXXWARN },
*************** const struct c_common_resword c_common_r
*** 533,542 ****
    { "volatile",		RID_VOLATILE,	0 },
    { "wchar_t",		RID_WCHAR,	D_CXXONLY },
    { "while",		RID_WHILE,	0 },
!   { "__is_assignable", RID_IS_ASSIGNABLE, D_CXXONLY },
!   { "__is_constructible", RID_IS_CONSTRUCTIBLE, D_CXXONLY },
!   { "__is_nothrow_assignable", RID_IS_NOTHROW_ASSIGNABLE, D_CXXONLY },
!   { "__is_nothrow_constructible", RID_IS_NOTHROW_CONSTRUCTIBLE, D_CXXONLY },
  
    /* C++ transactional memory.  */
    { "synchronized",	RID_SYNCHRONIZED, D_CXX_OBJC | D_TRANSMEM },
--- 504,516 ----
    { "volatile",		RID_VOLATILE,	0 },
    { "wchar_t",		RID_WCHAR,	D_CXXONLY },
    { "while",		RID_WHILE,	0 },
! 
! #define DEFTRAIT(TCC, CODE, NAME, ARITY) \
!   { NAME,		RID_##CODE,	D_CXXONLY },
! #include "cp/cp-trait.def"
! #undef DEFTRAIT
!   /* An alias for __is_same.  */
!   { "__is_same_as",	RID_IS_SAME,	D_CXXONLY },
  
    /* C++ transactional memory.  */
    { "synchronized",	RID_SYNCHRONIZED, D_CXX_OBJC | D_TRANSMEM },
*************** const struct c_common_resword c_common_r
*** 602,609 ****
    { "null_resettable",	RID_NULL_RESETTABLE,	D_OBJC },
  };
  
! const unsigned int num_c_common_reswords =
!   sizeof c_common_reswords / sizeof (struct c_common_resword);
  
  /* Return identifier for address space AS.  */
  
--- 576,582 ----
    { "null_resettable",	RID_NULL_RESETTABLE,	D_OBJC },
  };
  
! const unsigned int num_c_common_reswords = ARRAY_SIZE (c_common_reswords);
  
  /* Return identifier for address space AS.  */
  
*************** shorten_binary_op (tree result_type, tre
*** 1422,1429 ****
  	  == TYPE_PRECISION (TREE_TYPE (arg0)))
        && unsigned0 == unsigned1
        && (unsigned0 || !uns))
!     return c_common_signed_or_unsigned_type
!       (unsigned0, common_type (TREE_TYPE (arg0), TREE_TYPE (arg1)));
  
    else if (TREE_CODE (arg0) == INTEGER_CST
  	   && (unsigned1 || !uns)
--- 1395,1405 ----
  	  == TYPE_PRECISION (TREE_TYPE (arg0)))
        && unsigned0 == unsigned1
        && (unsigned0 || !uns))
!     {
!       tree ctype = common_type (TREE_TYPE (arg0), TREE_TYPE (arg1));
!       if (ctype != error_mark_node)
! 	return c_common_signed_or_unsigned_type (unsigned0, ctype);
!     }
  
    else if (TREE_CODE (arg0) == INTEGER_CST
  	   && (unsigned1 || !uns)
*************** verify_tree (tree x, struct tlist **pbef
*** 2178,2189 ****
  
      case LSHIFT_EXPR:
      case RSHIFT_EXPR:
-     case COMPONENT_REF:
      case ARRAY_REF:
        if (cxx_dialect >= cxx17)
  	goto sequenced_binary;
        goto do_default;
  
      default:
      do_default:
        /* For other expressions, simply recurse on their operands.
--- 2154,2170 ----
  
      case LSHIFT_EXPR:
      case RSHIFT_EXPR:
      case ARRAY_REF:
        if (cxx_dialect >= cxx17)
  	goto sequenced_binary;
        goto do_default;
  
+     case COMPONENT_REF:
+       /* Treat as unary, the other operands aren't evaluated.  */
+       x = TREE_OPERAND (x, 0);
+       writer = 0;
+       goto restart;
+ 
      default:
      do_default:
        /* For other expressions, simply recurse on their operands.
*************** check_case_value (location_t loc, tree v
*** 2262,2268 ****
    if (value == NULL_TREE)
      return value;
  
!   if (TREE_CODE (value) == INTEGER_CST)
      /* Promote char or short to int.  */
      value = perform_integral_promotions (value);
    else if (value != error_mark_node)
--- 2243,2250 ----
    if (value == NULL_TREE)
      return value;
  
!   if (INTEGRAL_TYPE_P (TREE_TYPE (value))
!       && TREE_CODE (value) == INTEGER_CST)
      /* Promote char or short to int.  */
      value = perform_integral_promotions (value);
    else if (value != error_mark_node)
*************** c_common_type_for_size (unsigned int bit
*** 2322,2327 ****
--- 2304,2313 ----
    if (bits <= TYPE_PRECISION (intDI_type_node))
      return unsignedp ? unsigned_intDI_type_node : intDI_type_node;
  
+   if (bits <= TYPE_PRECISION (widest_integer_literal_type_node))
+     return (unsignedp ? widest_unsigned_literal_type_node
+ 	    : widest_integer_literal_type_node);
+ 
    return NULL_TREE;
  }
  
*************** shorten_compare (location_t loc, tree *o
*** 3195,3203 ****
  
    else if (unsignedp0 == unsignedp1 && real1 == real2
  	   && TYPE_PRECISION (TREE_TYPE (primop0)) < TYPE_PRECISION (*restype_ptr)
! 	   && TYPE_PRECISION (TREE_TYPE (primop1)) < TYPE_PRECISION (*restype_ptr))
      {
-       type = common_type (TREE_TYPE (primop0), TREE_TYPE (primop1));
        type = c_common_signed_or_unsigned_type (unsignedp0
  					       || TYPE_UNSIGNED (*restype_ptr),
  					       type);
--- 3181,3190 ----
  
    else if (unsignedp0 == unsignedp1 && real1 == real2
  	   && TYPE_PRECISION (TREE_TYPE (primop0)) < TYPE_PRECISION (*restype_ptr)
! 	   && TYPE_PRECISION (TREE_TYPE (primop1)) < TYPE_PRECISION (*restype_ptr)
! 	   && (type = common_type (TREE_TYPE (primop0), TREE_TYPE (primop1)))
! 	      != error_mark_node)
      {
        type = c_common_signed_or_unsigned_type (unsignedp0
  					       || TYPE_UNSIGNED (*restype_ptr),
  					       type);
*************** static tree builtin_types[(int) BT_LAST
*** 4083,4089 ****
  
  /* A helper function for c_common_nodes_and_builtins.  Build function type
     for DEF with return type RET and N arguments.  If VAR is true, then the
!    function should be variadic after those N arguments.
  
     Takes special care not to ICE if any of the types involved are
     error_mark_node, which indicates that said type is not in fact available
--- 4070,4077 ----
  
  /* A helper function for c_common_nodes_and_builtins.  Build function type
     for DEF with return type RET and N arguments.  If VAR is true, then the
!    function should be variadic after those N arguments, or, if N is zero,
!    unprototyped.
  
     Takes special care not to ICE if any of the types involved are
     error_mark_node, which indicates that said type is not in fact available
*************** def_fn_type (builtin_type def, builtin_t
*** 4112,4118 ****
    if (t == error_mark_node)
      goto egress;
    if (var)
!     t = build_varargs_function_type_array (t, n, args);
    else
      t = build_function_type_array (t, n, args);
  
--- 4100,4109 ----
    if (t == error_mark_node)
      goto egress;
    if (var)
!     if (n == 0)
!       t = build_function_type (t, NULL_TREE);
!     else
!       t = build_varargs_function_type_array (t, n, args);
    else
      t = build_function_type_array (t, n, args);
  
*************** c_common_nodes_and_builtins (void)
*** 4371,4381 ****
    record_builtin_type (RID_DOUBLE, NULL, double_type_node);
    record_builtin_type (RID_MAX, "long double", long_double_type_node);
  
!   if (!c_dialect_cxx ())
!     for (i = 0; i < NUM_FLOATN_NX_TYPES; i++)
        if (FLOATN_NX_TYPE_NODE (i) != NULL_TREE)
  	record_builtin_type ((enum rid) (RID_FLOATN_NX_FIRST + i), NULL,
  			     FLOATN_NX_TYPE_NODE (i));
  
    /* Only supported decimal floating point extension if the target
       actually supports underlying modes. */
--- 4362,4379 ----
    record_builtin_type (RID_DOUBLE, NULL, double_type_node);
    record_builtin_type (RID_MAX, "long double", long_double_type_node);
  
!   for (i = 0; i < NUM_FLOATN_NX_TYPES; i++)
!     {
        if (FLOATN_NX_TYPE_NODE (i) != NULL_TREE)
  	record_builtin_type ((enum rid) (RID_FLOATN_NX_FIRST + i), NULL,
  			     FLOATN_NX_TYPE_NODE (i));
+     }
+ 
+   /* For C, let float128t_type_node (__float128 in some backends) be the
+      same type as float128_type_node (_Float128), for C++ let those
+      be distinct types that mangle and behave differently.  */
+   if (c_dialect_cxx ())
+     float128t_type_node = NULL_TREE;
  
    /* Only supported decimal floating point extension if the target
       actually supports underlying modes. */
*************** c_common_nodes_and_builtins (void)
*** 4482,4490 ****
  
    /* Make fileptr_type_node a distinct void * type until
       FILE type is defined.  Likewise for const struct tm*.  */
!   for (unsigned i = 0;
!        i < sizeof (builtin_structptr_types) / sizeof (builtin_structptr_type);
!        ++i)
      builtin_structptr_types[i].node
        = build_variant_type_copy (builtin_structptr_types[i].base);
  
--- 4480,4486 ----
  
    /* Make fileptr_type_node a distinct void * type until
       FILE type is defined.  Likewise for const struct tm*.  */
!   for (unsigned i = 0; i < ARRAY_SIZE (builtin_structptr_types); ++i)
      builtin_structptr_types[i].node
        = build_variant_type_copy (builtin_structptr_types[i].base);
  
*************** c_common_nodes_and_builtins (void)
*** 4500,4507 ****
      TYPE_NAME (void_type_node) = void_name;
    }
  
-   void_list_node = build_void_list_node ();
- 
    /* Make a type to be the domain of a few array types
       whose domains don't really matter.
       200 is small enough that it always fits in size_t
--- 4496,4501 ----
*************** c_common_nodes_and_builtins (void)
*** 4545,4550 ****
--- 4539,4545 ----
    if (c_dialect_cxx ())
      {
        char8_type_node = make_unsigned_type (char8_type_size);
+       TYPE_STRING_FLAG (char8_type_node) = true;
  
        if (flag_char8_t)
          record_builtin_type (RID_CHAR8, "char8_t", char8_type_node);
*************** c_common_nodes_and_builtins (void)
*** 4586,4593 ****
    char32_array_type_node
      = build_array_type (char32_type_node, array_domain_type);
  
!   wint_type_node =
!     TREE_TYPE (identifier_global_value (get_identifier (WINT_TYPE)));
  
    intmax_type_node =
      TREE_TYPE (identifier_global_value (get_identifier (INTMAX_TYPE)));
--- 4581,4591 ----
    char32_array_type_node
      = build_array_type (char32_type_node, array_domain_type);
  
!   if (strcmp (WINT_TYPE, "wchar_t") == 0)
!     wint_type_node = wchar_type_node;
!   else
!     wint_type_node =
!       TREE_TYPE (identifier_global_value (get_identifier (WINT_TYPE)));
  
    intmax_type_node =
      TREE_TYPE (identifier_global_value (get_identifier (INTMAX_TYPE)));
*************** c_common_nodes_and_builtins (void)
*** 4676,4683 ****
      uintptr_type_node =
        TREE_TYPE (identifier_global_value (c_get_ident (UINTPTR_TYPE)));
  
!   default_function_type
!     = build_varargs_function_type_list (integer_type_node, NULL_TREE);
    unsigned_ptrdiff_type_node = c_common_unsigned_type (ptrdiff_type_node);
  
    lang_hooks.decls.pushdecl
--- 4674,4680 ----
      uintptr_type_node =
        TREE_TYPE (identifier_global_value (c_get_ident (UINTPTR_TYPE)));
  
!   default_function_type = build_function_type (integer_type_node, NULL_TREE);
    unsigned_ptrdiff_type_node = c_common_unsigned_type (ptrdiff_type_node);
  
    lang_hooks.decls.pushdecl
*************** c_common_nodes_and_builtins (void)
*** 4720,4725 ****
--- 4717,4734 ----
    null_node = make_int_cst (1, 1);
    TREE_TYPE (null_node) = c_common_type_for_size (POINTER_SIZE, 0);
  
+   /* Create the built-in nullptr node.  This part of its initialization is
+      common to C and C++.  The front ends can further adjust its definition
+      in {c,cxx}_init_decl_processing.  In particular, we aren't setting the
+      alignment here for C++ backward ABI bug compatibility.  */
+   nullptr_type_node = make_node (NULLPTR_TYPE);
+   TYPE_SIZE (nullptr_type_node) = bitsize_int (GET_MODE_BITSIZE (ptr_mode));
+   TYPE_SIZE_UNIT (nullptr_type_node) = size_int (GET_MODE_SIZE (ptr_mode));
+   TYPE_UNSIGNED (nullptr_type_node) = 1;
+   TYPE_PRECISION (nullptr_type_node) = GET_MODE_BITSIZE (ptr_mode);
+   SET_TYPE_MODE (nullptr_type_node, ptr_mode);
+   nullptr_node = build_int_cst (nullptr_type_node, 0);
+ 
    /* Since builtin_types isn't gc'ed, don't export these nodes.  */
    memset (builtin_types, 0, sizeof (builtin_types));
  }
*************** case_compare (splay_tree_key k1, splay_t
*** 5051,5061 ****
     CASES is a tree containing all the case ranges processed so far;
     COND is the condition for the switch-statement itself.
     Returns the CASE_LABEL_EXPR created, or ERROR_MARK_NODE if no
!    CASE_LABEL_EXPR is created.  */
  
  tree
  c_add_case_label (location_t loc, splay_tree cases, tree cond,
! 		  tree low_value, tree high_value)
  {
    tree type;
    tree label;
--- 5060,5071 ----
     CASES is a tree containing all the case ranges processed so far;
     COND is the condition for the switch-statement itself.
     Returns the CASE_LABEL_EXPR created, or ERROR_MARK_NODE if no
!    CASE_LABEL_EXPR is created.  ATTRS are the attributes to be applied
!    to the label.  */
  
  tree
  c_add_case_label (location_t loc, splay_tree cases, tree cond,
! 		  tree low_value, tree high_value, tree attrs)
  {
    tree type;
    tree label;
*************** c_add_case_label (location_t loc, splay_
*** 5064,5069 ****
--- 5074,5080 ----
  
    /* Create the LABEL_DECL itself.  */
    label = create_artificial_label (loc);
+   decl_attributes (&label, attrs, 0);
  
    /* If there was an error processing the switch condition, bail now
       before we get more confused.  */
*************** c_stddef_cpp_builtins(void)
*** 5356,5362 ****
    builtin_define_with_value ("__SIZE_TYPE__", SIZE_TYPE, 0);
    builtin_define_with_value ("__PTRDIFF_TYPE__", PTRDIFF_TYPE, 0);
    builtin_define_with_value ("__WCHAR_TYPE__", MODIFIED_WCHAR_TYPE, 0);
!   builtin_define_with_value ("__WINT_TYPE__", WINT_TYPE, 0);
    builtin_define_with_value ("__INTMAX_TYPE__", INTMAX_TYPE, 0);
    builtin_define_with_value ("__UINTMAX_TYPE__", UINTMAX_TYPE, 0);
    if (flag_char8_t)
--- 5367,5380 ----
    builtin_define_with_value ("__SIZE_TYPE__", SIZE_TYPE, 0);
    builtin_define_with_value ("__PTRDIFF_TYPE__", PTRDIFF_TYPE, 0);
    builtin_define_with_value ("__WCHAR_TYPE__", MODIFIED_WCHAR_TYPE, 0);
!   /* C++ has wchar_t as a builtin type, C doesn't, so if WINT_TYPE
!      maps to wchar_t, define it to the underlying WCHAR_TYPE in C, and
!      to wchar_t in C++, so the desired type equivalence holds.  */
!   if (!c_dialect_cxx ()
!       && strcmp (WINT_TYPE, "wchar_t") == 0)
!     builtin_define_with_value ("__WINT_TYPE__", WCHAR_TYPE, 0);
!   else
!     builtin_define_with_value ("__WINT_TYPE__", WINT_TYPE, 0);
    builtin_define_with_value ("__INTMAX_TYPE__", INTMAX_TYPE, 0);
    builtin_define_with_value ("__UINTMAX_TYPE__", UINTMAX_TYPE, 0);
    if (flag_char8_t)
*************** attribute_fallthrough_p (tree attr)
*** 6013,6024 ****
  {
    if (attr == error_mark_node)
     return false;
!   tree t = lookup_attribute ("fallthrough", attr);
    if (t == NULL_TREE)
      return false;
    /* It is no longer true that "this attribute shall appear at most once in
       each attribute-list", but we still give a warning.  */
!   if (lookup_attribute ("fallthrough", TREE_CHAIN (t)))
      warning (OPT_Wattributes, "attribute %<fallthrough%> specified multiple "
  	     "times");
    /* No attribute-argument-clause shall be present.  */
--- 6031,6042 ----
  {
    if (attr == error_mark_node)
     return false;
!   tree t = lookup_attribute ("", "fallthrough", attr);
    if (t == NULL_TREE)
      return false;
    /* It is no longer true that "this attribute shall appear at most once in
       each attribute-list", but we still give a warning.  */
!   if (lookup_attribute ("", "fallthrough", TREE_CHAIN (t)))
      warning (OPT_Wattributes, "attribute %<fallthrough%> specified multiple "
  	     "times");
    /* No attribute-argument-clause shall be present.  */
*************** attribute_fallthrough_p (tree attr)
*** 6029,6035 ****
    for (t = attr; t != NULL_TREE; t = TREE_CHAIN (t))
      {
        tree name = get_attribute_name (t);
!       if (!is_attribute_p ("fallthrough", name))
  	{
  	  if (!c_dialect_cxx () && get_attribute_namespace (t) == NULL_TREE)
  	    /* The specifications of standard attributes in C mean
--- 6047,6054 ----
    for (t = attr; t != NULL_TREE; t = TREE_CHAIN (t))
      {
        tree name = get_attribute_name (t);
!       if (!is_attribute_p ("fallthrough", name)
! 	  || !is_attribute_namespace_p ("", t))
  	{
  	  if (!c_dialect_cxx () && get_attribute_namespace (t) == NULL_TREE)
  	    /* The specifications of standard attributes in C mean
*************** check_function_arguments (location_t loc
*** 6071,6078 ****
    /* Check for errors in format strings.  */
  
    if (warn_format || warn_suggest_attribute_format)
!     check_function_format (fntype, TYPE_ATTRIBUTES (fntype), nargs, argarray,
! 			   arglocs);
  
    if (warn_format)
      check_function_sentinel (fntype, nargs, argarray);
--- 6090,6097 ----
    /* Check for errors in format strings.  */
  
    if (warn_format || warn_suggest_attribute_format)
!     check_function_format (fndecl ? fndecl : fntype, TYPE_ATTRIBUTES (fntype), nargs,
! 			   argarray, arglocs);
  
    if (warn_format)
      check_function_sentinel (fntype, nargs, argarray);
*************** check_builtin_function_arguments (locati
*** 6291,6296 ****
--- 6310,6316 ----
      case BUILT_IN_ISINF_SIGN:
      case BUILT_IN_ISNAN:
      case BUILT_IN_ISNORMAL:
+     case BUILT_IN_ISSIGNALING:
      case BUILT_IN_SIGNBIT:
        if (builtin_function_validate_nargs (loc, fndecl, nargs, 1))
  	{
*************** c_option_controlling_cpp_diagnostic (enu
*** 6614,6619 ****
--- 6634,6653 ----
    return 0;
  }
  
+ /* Return TRUE if the given option index corresponds to a diagnostic
+    issued by libcpp.  Linear search seems fine for now.  */
+ bool
+ c_option_is_from_cpp_diagnostics (int option_index)
+ {
+   for (auto entry = cpp_reason_option_codes; entry->reason != CPP_W_NONE;
+        ++entry)
+     {
+       if (entry->option_code == option_index)
+ 	return true;
+     }
+   return false;
+ }
+ 
  /* Callback from cpp_diagnostic for PFILE to print diagnostics from the
     preprocessor.  The diagnostic is of type LEVEL, with REASON set
     to the reason code if LEVEL is represents a warning, at location
*************** c_cpp_diagnostic (cpp_reader *pfile ATTR
*** 6666,6672 ****
      default:
        gcc_unreachable ();
      }
!   if (done_lexing)
      richloc->set_range (0, input_location, SHOW_RANGE_WITH_CARET);
    diagnostic_set_info_translated (&diagnostic, msg, ap,
  				  richloc, dlevel);
--- 6700,6706 ----
      default:
        gcc_unreachable ();
      }
!   if (override_libcpp_locations)
      richloc->set_range (0, input_location, SHOW_RANGE_WITH_CARET);
    diagnostic_set_info_translated (&diagnostic, msg, ap,
  				  richloc, dlevel);
*************** fold_offsetof (tree expr, tree type, enu
*** 6793,6799 ****
  		     definition thereof.  */
  		  if (TREE_CODE (v) == ARRAY_REF
  		      || TREE_CODE (v) == COMPONENT_REF)
! 		    warning (OPT_Warray_bounds,
  			     "index %E denotes an offset "
  			     "greater than size of %qT",
  			     t, TREE_TYPE (TREE_OPERAND (expr, 0)));
--- 6827,6833 ----
  		     definition thereof.  */
  		  if (TREE_CODE (v) == ARRAY_REF
  		      || TREE_CODE (v) == COMPONENT_REF)
! 		    warning (OPT_Warray_bounds_,
  			     "index %E denotes an offset "
  			     "greater than size of %qT",
  			     t, TREE_TYPE (TREE_OPERAND (expr, 0)));
*************** check_missing_format_attribute (tree lty
*** 8153,8167 ****
  void
  set_underlying_type (tree x)
  {
!   if (x == error_mark_node)
      return;
    if (DECL_IS_UNDECLARED_BUILTIN (x) && TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE)
      {
        if (TYPE_NAME (TREE_TYPE (x)) == 0)
  	TYPE_NAME (TREE_TYPE (x)) = x;
      }
!   else if (TREE_TYPE (x) != error_mark_node
! 	   && DECL_ORIGINAL_TYPE (x) == NULL_TREE)
      {
        tree tt = TREE_TYPE (x);
        DECL_ORIGINAL_TYPE (x) = tt;
--- 8187,8202 ----
  void
  set_underlying_type (tree x)
  {
!   if (x == error_mark_node || TREE_TYPE (x) == error_mark_node)
      return;
    if (DECL_IS_UNDECLARED_BUILTIN (x) && TREE_CODE (TREE_TYPE (x)) != ARRAY_TYPE)
      {
        if (TYPE_NAME (TREE_TYPE (x)) == 0)
  	TYPE_NAME (TREE_TYPE (x)) = x;
      }
!   else if (DECL_ORIGINAL_TYPE (x))
!     gcc_checking_assert (TYPE_NAME (TREE_TYPE (x)) == x);
!   else
      {
        tree tt = TREE_TYPE (x);
        DECL_ORIGINAL_TYPE (x) = tt;
*************** c_common_init_ts (void)
*** 8478,8483 ****
--- 8513,8520 ----
    MARK_TS_EXP (FOR_STMT);
    MARK_TS_EXP (SWITCH_STMT);
    MARK_TS_EXP (WHILE_STMT);
+ 
+   MARK_TS_DECL_COMMON (CONCEPT_DECL);
  }
  
  /* Build a user-defined numeric literal out of an integer constant type VALUE
*************** convert_vector_to_array_for_subscript (l
*** 8513,8519 ****
        if (TREE_CODE (index) == INTEGER_CST)
          if (!tree_fits_uhwi_p (index)
  	    || maybe_ge (tree_to_uhwi (index), TYPE_VECTOR_SUBPARTS (type)))
!           warning_at (loc, OPT_Warray_bounds, "index value is out of bound");
  
        /* We are building an ARRAY_REF so mark the vector as addressable
           to not run into the gimplifiers premature setting of DECL_GIMPLE_REG_P
--- 8550,8556 ----
        if (TREE_CODE (index) == INTEGER_CST)
          if (!tree_fits_uhwi_p (index)
  	    || maybe_ge (tree_to_uhwi (index), TYPE_VECTOR_SUBPARTS (type)))
! 	  warning_at (loc, OPT_Warray_bounds_, "index value is out of bound");
  
        /* We are building an ARRAY_REF so mark the vector as addressable
           to not run into the gimplifiers premature setting of DECL_GIMPLE_REG_P
*************** braced_list_to_string (tree type, tree c
*** 9310,9321 ****
    if (!member && !tree_fits_uhwi_p (typesize))
      return ctor;
  
!   /* If the target char size differes from the host char size, we'd risk
       loosing data and getting object sizes wrong by converting to
       host chars.  */
    if (TYPE_PRECISION (char_type_node) != CHAR_BIT)
      return ctor;
  
    /* If the array has an explicit bound, use it to constrain the size
       of the string.  If it doesn't, be sure to create a string that's
       as long as implied by the index of the last zero specified via
--- 9347,9361 ----
    if (!member && !tree_fits_uhwi_p (typesize))
      return ctor;
  
!   /* If the target char size differs from the host char size, we'd risk
       loosing data and getting object sizes wrong by converting to
       host chars.  */
    if (TYPE_PRECISION (char_type_node) != CHAR_BIT)
      return ctor;
  
+   /* STRING_CST doesn't support wide characters.  */
+   gcc_checking_assert (TYPE_PRECISION (TREE_TYPE (type)) == CHAR_BIT);
+ 
    /* If the array has an explicit bound, use it to constrain the size
       of the string.  If it doesn't, be sure to create a string that's
       as long as implied by the index of the last zero specified via
*************** c_common_finalize_early_debug (void)
*** 9476,9479 ****
--- 9516,9548 ----
        (*debug_hooks->early_global_decl) (cnode->decl);
  }
  
+ /* Get the LEVEL of the strict_flex_array for the ARRAY_FIELD based on the
+    values of attribute strict_flex_array and the flag_strict_flex_arrays.  */
+ unsigned int
+ c_strict_flex_array_level_of (tree array_field)
+ {
+   gcc_assert (TREE_CODE (array_field) == FIELD_DECL);
+   unsigned int strict_flex_array_level = flag_strict_flex_arrays;
+ 
+   tree attr_strict_flex_array
+     = lookup_attribute ("strict_flex_array", DECL_ATTRIBUTES (array_field));
+   /* If there is a strict_flex_array attribute attached to the field,
+      override the flag_strict_flex_arrays.  */
+   if (attr_strict_flex_array)
+     {
+       /* Get the value of the level first from the attribute.  */
+       unsigned HOST_WIDE_INT attr_strict_flex_array_level = 0;
+       gcc_assert (TREE_VALUE (attr_strict_flex_array) != NULL_TREE);
+       attr_strict_flex_array = TREE_VALUE (attr_strict_flex_array);
+       gcc_assert (TREE_VALUE (attr_strict_flex_array) != NULL_TREE);
+       attr_strict_flex_array = TREE_VALUE (attr_strict_flex_array);
+       gcc_assert (tree_fits_uhwi_p (attr_strict_flex_array));
+       attr_strict_flex_array_level = tree_to_uhwi (attr_strict_flex_array);
+ 
+       /* The attribute has higher priority than flag_struct_flex_array.  */
+       strict_flex_array_level = attr_strict_flex_array_level;
+     }
+   return strict_flex_array_level;
+ }
+ 
  #include "gt-c-family-c-common.h"
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-common.def gcc-13.1.0/gcc/c-family/c-common.def
*** gcc-12.2.0/gcc/c-family/c-common.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-common.def	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* This file contains the definitions and documentation for the
     additional tree codes used in the GNU C compiler (see tree.def
     for the standard codes).
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
     Written by Benjamin Chelf <chelf@codesourcery.com>
  
  This file is part of GCC.
--- 1,7 ----
  /* This file contains the definitions and documentation for the
     additional tree codes used in the GNU C compiler (see tree.def
     for the standard codes).
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
     Written by Benjamin Chelf <chelf@codesourcery.com>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 38,47 ****
     not.  */
  DEFTREECODE (C_MAYBE_CONST_EXPR, "c_maybe_const_expr", tcc_expression, 2)
  
! /* An EXCESS_PRECISION_EXPR, currently only used for C and Objective
!    C, represents an expression evaluated in greater range or precision
!    than its type.  The type of the EXCESS_PRECISION_EXPR is the
!    semantic type while the operand represents what is actually being
     evaluated.  */
  DEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1)
  
--- 38,46 ----
     not.  */
  DEFTREECODE (C_MAYBE_CONST_EXPR, "c_maybe_const_expr", tcc_expression, 2)
  
! /* An EXCESS_PRECISION_EXPR represents an expression evaluated in greater
!    range or precision than its type.  The type of the EXCESS_PRECISION_EXPR
!    is the semantic type while the operand represents what is actually being
     evaluated.  */
  DEFTREECODE (EXCESS_PRECISION_EXPR, "excess_precision_expr", tcc_expression, 1)
  
*************** DEFTREECODE (CONTINUE_STMT, "continue_st
*** 82,87 ****
--- 81,94 ----
     SWITCH_STMT_SCOPE, respectively.  */
  DEFTREECODE (SWITCH_STMT, "switch_stmt", tcc_statement, 4)
  
+ /* Extensions for C++ Concepts. */
+ 
+ /* Concept definition. This is not entirely different than a VAR_DECL
+    except that a) it must be a template, and b) doesn't have the wide
+    range of value and linkage options available to variables.  Used
+    by C++ FE and in c-family attribute handling.  */
+ DEFTREECODE (CONCEPT_DECL, "concept_decl", tcc_declaration, 0)
+ 
  /*
  Local variables:
  mode:c
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-common.h gcc-13.1.0/gcc/c-family/c-common.h
*** gcc-12.2.0/gcc/c-family/c-common.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-common.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for c-common.cc.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for c-common.cc.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum rid
*** 104,110 ****
    RID_SIZEOF,
  
    /* C extensions */
!   RID_ASM,       RID_TYPEOF,   RID_ALIGNOF,  RID_ATTRIBUTE,  RID_VA_ARG,
    RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL,      RID_CHOOSE_EXPR,
    RID_TYPES_COMPATIBLE_P,      RID_BUILTIN_COMPLEX,	     RID_BUILTIN_SHUFFLE,
    RID_BUILTIN_SHUFFLEVECTOR,   RID_BUILTIN_CONVERTVECTOR,   RID_BUILTIN_TGMATH,
--- 104,111 ----
    RID_SIZEOF,
  
    /* C extensions */
!   RID_ASM,       RID_TYPEOF,   RID_TYPEOF_UNQUAL, RID_ALIGNOF,  RID_ATTRIBUTE,
!   RID_VA_ARG,
    RID_EXTENSION, RID_IMAGPART, RID_REALPART, RID_LABEL,      RID_CHOOSE_EXPR,
    RID_TYPES_COMPATIBLE_P,      RID_BUILTIN_COMPLEX,	     RID_BUILTIN_SHUFFLE,
    RID_BUILTIN_SHUFFLEVECTOR,   RID_BUILTIN_CONVERTVECTOR,   RID_BUILTIN_TGMATH,
*************** enum rid
*** 163,189 ****
    RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST,
  
    /* C++ extensions */
!   RID_ADDRESSOF,               RID_BASES,
!   RID_BUILTIN_LAUNDER,         RID_DIRECT_BASES,
!   RID_HAS_NOTHROW_ASSIGN,      RID_HAS_NOTHROW_CONSTRUCTOR,
!   RID_HAS_NOTHROW_COPY,        RID_HAS_TRIVIAL_ASSIGN,
!   RID_HAS_TRIVIAL_CONSTRUCTOR, RID_HAS_TRIVIAL_COPY,
!   RID_HAS_TRIVIAL_DESTRUCTOR,  RID_HAS_UNIQUE_OBJ_REPRESENTATIONS,
!   RID_HAS_VIRTUAL_DESTRUCTOR,  RID_BUILTIN_BIT_CAST,
!   RID_IS_ABSTRACT,             RID_IS_AGGREGATE,
!   RID_IS_BASE_OF,              RID_IS_CLASS,
!   RID_IS_EMPTY,                RID_IS_ENUM,
!   RID_IS_FINAL,                RID_IS_LAYOUT_COMPATIBLE,
!   RID_IS_LITERAL_TYPE,
!   RID_IS_POINTER_INTERCONVERTIBLE_BASE_OF,
!   RID_IS_POD,                  RID_IS_POLYMORPHIC,
!   RID_IS_SAME_AS,
!   RID_IS_STD_LAYOUT,           RID_IS_TRIVIAL,
!   RID_IS_TRIVIALLY_ASSIGNABLE, RID_IS_TRIVIALLY_CONSTRUCTIBLE,
!   RID_IS_TRIVIALLY_COPYABLE,
!   RID_IS_UNION,                RID_UNDERLYING_TYPE,
!   RID_IS_ASSIGNABLE,           RID_IS_CONSTRUCTIBLE,
!   RID_IS_NOTHROW_ASSIGNABLE,   RID_IS_NOTHROW_CONSTRUCTIBLE,
  
    /* C++11 */
    RID_CONSTEXPR, RID_DECLTYPE, RID_NOEXCEPT, RID_NULLPTR, RID_STATIC_ASSERT,
--- 164,177 ----
    RID_CONSTCAST, RID_DYNCAST, RID_REINTCAST, RID_STATCAST,
  
    /* C++ extensions */
!   RID_ADDRESSOF,
!   RID_BUILTIN_LAUNDER,
!   RID_BUILTIN_BIT_CAST,
! 
! #define DEFTRAIT(TCC, CODE, NAME, ARITY) \
!   RID_##CODE,
! #include "cp/cp-trait.def"
! #undef DEFTRAIT
  
    /* C++11 */
    RID_CONSTEXPR, RID_DECLTYPE, RID_NOEXCEPT, RID_NULLPTR, RID_STATIC_ASSERT,
*************** enum rid
*** 219,224 ****
--- 207,215 ----
    RID_AT_INTERFACE,
    RID_AT_IMPLEMENTATION,
  
+   /* OpenMP */
+   RID_OMP_ALL_MEMORY,
+ 
    /* Named address support, mapping the keyword to a particular named address
       number.  Named address space 0 is reserved for the generic address.  If
       there are more than 254 named addresses, the addr_space_t type will need
*************** enum rid
*** 268,274 ****
    RID_FIRST_CXX11 = RID_CONSTEXPR,
    RID_LAST_CXX11 = RID_STATIC_ASSERT,
    RID_FIRST_CXX20 = RID_CONSTINIT,
!   RID_LAST_CXX20 = RID_CONSTINIT,
    RID_FIRST_AT = RID_AT_ENCODE,
    RID_LAST_AT = RID_AT_IMPLEMENTATION,
    RID_FIRST_PQ = RID_IN,
--- 259,265 ----
    RID_FIRST_CXX11 = RID_CONSTEXPR,
    RID_LAST_CXX11 = RID_STATIC_ASSERT,
    RID_FIRST_CXX20 = RID_CONSTINIT,
!   RID_LAST_CXX20 = RID_CO_RETURN,
    RID_FIRST_AT = RID_AT_ENCODE,
    RID_LAST_AT = RID_AT_IMPLEMENTATION,
    RID_FIRST_PQ = RID_IN,
*************** enum c_tree_index
*** 370,375 ****
--- 361,368 ----
      CTI_DEFAULT_FUNCTION_TYPE,
  
      CTI_NULL,
+     CTI_NULLPTR,
+     CTI_NULLPTR_TYPE,
  
      /* These are not types, but we have to look them up all the time.  */
      CTI_FUNCTION_NAME_DECL,
*************** struct c_common_resword
*** 404,410 ****
  {
    const char *const word;
    ENUM_BITFIELD(rid) const rid : 16;
!   const unsigned int disable   : 16;
  };
  
  /* Mode used to build pointers (VOIDmode means ptr_mode).  */
--- 397,403 ----
  {
    const char *const word;
    ENUM_BITFIELD(rid) const rid : 16;
!   const unsigned int disable   : 32;
  };
  
  /* Mode used to build pointers (VOIDmode means ptr_mode).  */
*************** extern machine_mode c_default_pointer_mo
*** 442,460 ****
  #define D_CONLY		0x0001	/* C only (not in C++).  */
  #define D_CXXONLY	0x0002	/* C++ only (not in C).  */
  #define D_C99		0x0004	/* In C, C99 only.  */
! #define D_CXX11         0x0008	/* In C++, C++11 only.  */
! #define D_EXT		0x0010	/* GCC extension.  */
! #define D_EXT89		0x0020	/* GCC extension incorporated in C99.  */
! #define D_ASM		0x0040	/* Disabled by -fno-asm.  */
! #define D_OBJC		0x0080	/* In Objective C and neither C nor C++.  */
! #define D_CXX_OBJC	0x0100	/* In Objective C, and C++, but not C.  */
! #define D_CXXWARN	0x0200	/* In C warn with -Wcxx-compat.  */
! #define D_CXX_CONCEPTS  0x0400	/* In C++, only with concepts.  */
! #define D_TRANSMEM	0X0800	/* C++ transactional memory TS.  */
! #define D_CXX_CHAR8_T	0X1000	/* In C++, only with -fchar8_t.  */
! #define D_CXX20		0x2000  /* In C++, C++20 only.  */
! #define D_CXX_COROUTINES 0x4000  /* In C++, only with coroutines.  */
! #define D_CXX_MODULES	0x8000  /* In C++, only with modules.  */
  
  #define D_CXX_CONCEPTS_FLAGS D_CXXONLY | D_CXX_CONCEPTS
  #define D_CXX_CHAR8_T_FLAGS D_CXXONLY | D_CXX_CHAR8_T
--- 435,455 ----
  #define D_CONLY		0x0001	/* C only (not in C++).  */
  #define D_CXXONLY	0x0002	/* C++ only (not in C).  */
  #define D_C99		0x0004	/* In C, C99 only.  */
! #define D_C2X		0x0008	/* In C, C2X only.  */
! #define D_CXX11         0x0010	/* In C++, C++11 only.  */
! #define D_EXT		0x0020	/* GCC extension.  */
! #define D_EXT89		0x0040	/* GCC extension incorporated in C99.  */
! #define D_EXT11		0x0080	/* GCC extension incorporated in C2X.  */
! #define D_ASM		0x0100	/* Disabled by -fno-asm.  */
! #define D_OBJC		0x0200	/* In Objective C and neither C nor C++.  */
! #define D_CXX_OBJC	0x0400	/* In Objective C, and C++, but not C.  */
! #define D_CXXWARN	0x0800	/* In C warn with -Wcxx-compat.  */
! #define D_CXX_CONCEPTS  0x1000	/* In C++, only with concepts.  */
! #define D_TRANSMEM	0x2000	/* C++ transactional memory TS.  */
! #define D_CXX_CHAR8_T	0x4000	/* In C++, only with -fchar8_t.  */
! #define D_CXX20		0x8000  /* In C++, C++20 only.  */
! #define D_CXX_COROUTINES 0x10000  /* In C++, only with coroutines.  */
! #define D_CXX_MODULES	0x20000  /* In C++, only with modules.  */
  
  #define D_CXX_CONCEPTS_FLAGS D_CXXONLY | D_CXX_CONCEPTS
  #define D_CXX_CHAR8_T_FLAGS D_CXXONLY | D_CXX_CHAR8_T
*************** extern const unsigned int num_c_common_r
*** 529,534 ****
--- 524,532 ----
  
  /* The node for C++ `__null'.  */
  #define null_node                       c_global_trees[CTI_NULL]
+ /* The nodes for `nullptr'.  */
+ #define nullptr_node                    c_global_trees[CTI_NULLPTR]
+ #define nullptr_type_node               c_global_trees[CTI_NULLPTR_TYPE]
  
  extern GTY(()) tree c_global_trees[CTI_MAX];
  
*************** extern int max_tinst_depth;
*** 762,771 ****
  
  extern int c_inhibit_evaluation_warnings;
  
! /* Whether lexing has been completed, so subsequent preprocessor
!    errors should use the compiler's input_location.  */
  
! extern bool done_lexing;
  
  /* C types are partitioned into three subsets: object, function, and
     incomplete types.  */
--- 760,771 ----
  
  extern int c_inhibit_evaluation_warnings;
  
! /* Depending on which phase of processing we are in, we may need
!    to prefer input_location to libcpp's locations.  (Specifically,
!    after the C++ lexer is done lexing tokens, but prior to calling
!    cpp_finish (), we need to do so.  */
  
! extern bool override_libcpp_locations;
  
  /* C types are partitioned into three subsets: object, function, and
     incomplete types.  */
*************** extern tree identifier_global_tag (tree)
*** 840,846 ****
  extern bool names_builtin_p (const char *);
  extern tree c_linkage_bindings (tree);
  extern void record_builtin_type (enum rid, const char *, tree);
- extern tree build_void_list_node (void);
  extern void start_fname_decls (void);
  extern void finish_fname_decls (void);
  extern const char *fname_as_string (int);
--- 840,845 ----
*************** extern tree fold_for_warn (tree);
*** 908,913 ****
--- 907,914 ----
  extern tree c_common_get_narrower (tree, int *);
  extern bool get_attribute_operand (tree, unsigned HOST_WIDE_INT *);
  extern void c_common_finalize_early_debug (void);
+ extern unsigned int c_strict_flex_array_level_of (tree);
+ extern bool c_option_is_from_cpp_diagnostics (int);
  
  /* Used by convert_and_check; in front ends.  */
  extern tree convert_init (tree, tree);
*************** extern tree convert_init (tree, tree);
*** 918,923 ****
--- 919,948 ----
  /* Subroutine of build_binary_op, used for certain operations.  */
  extern tree shorten_binary_op (tree result_type, tree op0, tree op1, bool bitwise);
  
+ /* Return true if division or modulo op0 / op1 or op0 % op1 may be shortened.
+    We can shorten only if we can guarantee that op0 is not signed integral
+    minimum or op1 is not -1, because e.g. (long long) INT_MIN / -1 is
+    well defined INT_MAX + 1LL if long long is wider than int, but INT_MIN / -1
+    is UB.  */
+ inline bool
+ may_shorten_divmod (tree op0, tree op1)
+ {
+   tree type0 = TREE_TYPE (op0);
+   if (TYPE_UNSIGNED (type0))
+     return true;
+   /* A cast from narrower unsigned won't be signed integral minimum,
+      but cast from same or wider precision unsigned could be.  */
+   if (TREE_CODE (op0) == NOP_EXPR
+       && INTEGRAL_TYPE_P (TREE_TYPE (TREE_OPERAND (op0, 0)))
+       && TYPE_UNSIGNED (TREE_TYPE (TREE_OPERAND (op0, 0)))
+       && (TYPE_PRECISION (TREE_TYPE (TREE_OPERAND (op0, 0)))
+ 	  < TYPE_PRECISION (type0)))
+     return true;
+   if (TREE_CODE (op1) == INTEGER_CST && !integer_all_onesp (op1))
+     return true;
+   return false;
+ }
+ 
  /* Subroutine of build_binary_op, used for comparison operations.
     See if the operands have both been converted from subword integer types
     and, if so, perhaps change them both back to their original type.  */
*************** extern bool c_common_post_options (const
*** 950,956 ****
  extern bool c_common_init (void);
  extern void c_common_finish (void);
  extern void c_common_parse_file (void);
- extern FILE *get_dump_info (int, dump_flags_t *);
  extern alias_set_type c_common_get_alias_set (tree);
  extern void c_register_builtin_type (tree, const char*);
  extern bool c_promoting_integer_type_p (const_tree);
--- 975,980 ----
*************** extern void c_parse_final_cleanups (void
*** 1002,1008 ****
  #define DECL_UNNAMED_BIT_FIELD(NODE) \
    (DECL_C_BIT_FIELD (NODE) && !DECL_NAME (NODE))
  
! extern tree do_case (location_t, tree, tree);
  extern tree build_stmt (location_t, enum tree_code, ...);
  extern tree build_real_imag_expr (location_t, enum tree_code, tree);
  
--- 1026,1059 ----
  #define DECL_UNNAMED_BIT_FIELD(NODE) \
    (DECL_C_BIT_FIELD (NODE) && !DECL_NAME (NODE))
  
! /* True iff TYPE is cv decltype(nullptr).  */
! #define NULLPTR_TYPE_P(TYPE) (TREE_CODE (TYPE) == NULLPTR_TYPE)
! 
! /* Returns the underlying type of the given enumeration type. The
!    underlying type is determined in different ways, depending on the
!    properties of the enum:
! 
!      - In C++0x or C2x, the underlying type can be explicitly specified, e.g.,
! 
!          enum E1 : char { ... } // underlying type is char
! 
!      - In a C++0x scoped enumeration, the underlying type is int
!        unless otherwises specified:
! 
!          enum class E2 { ... } // underlying type is int
! 
!      - Otherwise, the underlying type is determined based on the
!        values of the enumerators. In this case, the
!        ENUM_UNDERLYING_TYPE will not be set until after the definition
!        of the enumeration is completed by finish_enum.  */
! #define ENUM_UNDERLYING_TYPE(TYPE) \
!   TREE_TYPE (ENUMERAL_TYPE_CHECK (TYPE))
! 
! /* Determines whether an ENUMERAL_TYPE has an explicit
!    underlying type.  */
! #define ENUM_FIXED_UNDERLYING_TYPE_P(NODE) (TYPE_LANG_FLAG_5 (NODE))
! 
! extern tree do_case (location_t, tree, tree, tree);
  extern tree build_stmt (location_t, enum tree_code, ...);
  extern tree build_real_imag_expr (location_t, enum tree_code, tree);
  
*************** extern tree boolean_increment (enum tree
*** 1030,1036 ****
  
  extern int case_compare (splay_tree_key, splay_tree_key);
  
! extern tree c_add_case_label (location_t, splay_tree, tree, tree, tree);
  extern bool c_switch_covers_all_cases_p (splay_tree, tree);
  extern bool c_block_may_fallthru (const_tree);
  
--- 1081,1088 ----
  
  extern int case_compare (splay_tree_key, splay_tree_key);
  
! extern tree c_add_case_label (location_t, splay_tree, tree, tree, tree,
! 			      tree = NULL_TREE);
  extern bool c_switch_covers_all_cases_p (splay_tree, tree);
  extern bool c_block_may_fallthru (const_tree);
  
*************** extern tree finish_label_address_expr (t
*** 1049,1054 ****
--- 1101,1108 ----
  extern tree lookup_label (tree);
  extern tree lookup_name (tree);
  extern bool lvalue_p (const_tree);
+ extern int maybe_adjust_arg_pos_for_attribute (const_tree);
+ extern bool instantiation_dependent_expression_p (tree);
  
  extern bool vector_targets_convertible_p (const_tree t1, const_tree t2);
  extern bool vector_types_convertible_p (const_tree t1, const_tree t2, bool emit_lax_note);
*************** extern void preprocess_file (cpp_reader
*** 1188,1193 ****
--- 1242,1248 ----
  extern void pp_file_change (const line_map_ordinary *);
  extern void pp_dir_change (cpp_reader *, const char *);
  extern bool check_missing_format_attribute (tree, tree);
+ extern void c_pp_stream_token (cpp_reader *, const cpp_token *, location_t loc);
  
  /* In c-omp.cc  */
  typedef wide_int_bitmask omp_clause_mask;
*************** struct c_omp_directive {
*** 1267,1278 ****
    bool simd;
  };
  
  extern const struct c_omp_directive *c_omp_categorize_directive (const char *,
  								 const char *,
  								 const char *);
  
  /* Return next tree in the chain for chain_next walking of tree nodes.  */
! static inline tree
  c_tree_chain_next (tree t)
  {
    /* TREE_CHAIN of a type is TYPE_STUB_DECL, which is different
--- 1322,1334 ----
    bool simd;
  };
  
+ extern const struct c_omp_directive c_omp_directives[];
  extern const struct c_omp_directive *c_omp_categorize_directive (const char *,
  								 const char *,
  								 const char *);
  
  /* Return next tree in the chain for chain_next walking of tree nodes.  */
! inline tree
  c_tree_chain_next (tree t)
  {
    /* TREE_CHAIN of a type is TYPE_STUB_DECL, which is different
*************** extern tree do_warn_duplicated_branches_
*** 1466,1471 ****
--- 1522,1531 ----
  extern void warn_for_multistatement_macros (location_t, location_t,
  					    location_t, enum rid);
  
+ extern void check_for_xor_used_as_pow (location_t lhs_loc, tree lhs_val,
+ 				       location_t operator_loc,
+ 				       location_t rhs_loc, tree rhs_val);
+ 
  /* In c-attribs.cc.  */
  extern bool attribute_takes_identifier_p (const_tree);
  extern tree handle_deprecated_attribute (tree *, tree, tree, int, bool *);
*************** enum posargflags {
*** 1493,1499 ****
    POSARG_ELLIPSIS = 2
  };
  
! extern tree positional_argument (const_tree, const_tree, tree, tree_code,
  				 int = 0, int = posargflags ());
  
  extern enum flt_eval_method
--- 1553,1559 ----
    POSARG_ELLIPSIS = 2
  };
  
! extern tree positional_argument (const_tree, const_tree, tree &, tree_code,
  				 int = 0, int = posargflags ());
  
  extern enum flt_eval_method
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-cppbuiltin.cc gcc-13.1.0/gcc/c-family/c-cppbuiltin.cc
*** gcc-12.2.0/gcc/c-family/c-cppbuiltin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-cppbuiltin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Define builtin-in macros for the C family front ends.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Define builtin-in macros for the C family front ends.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** builtin_define_float_constants (const ch
*** 279,285 ****
    /* The difference between 1 and the least value greater than 1 that is
       representable in the given floating point type, b**(1-p).  */
    sprintf (name, "__%s_EPSILON__", name_prefix);
!   if (fmt->pnan < fmt->p)
      /* This is an IBM extended double format, so 1.0 + any double is
         representable precisely.  */
        sprintf (buf, "0x1p%d", fmt->emin - fmt->p);
--- 279,285 ----
    /* The difference between 1 and the least value greater than 1 that is
       representable in the given floating point type, b**(1-p).  */
    sprintf (name, "__%s_EPSILON__", name_prefix);
!   if (fmt->pnan < fmt->p && (c_dialect_cxx () || !flag_isoc2x))
      /* This is an IBM extended double format, so 1.0 + any double is
         representable precisely.  */
        sprintf (buf, "0x1p%d", fmt->emin - fmt->p);
*************** builtin_define_float_constants (const ch
*** 319,332 ****
      }
  
    /* For C2x *_IS_IEC_60559.  0 means the type does not match an IEC
!      60559 format, 1 that it matches a format but not operations and 2
!      that it matches a format and operations (but may not conform to
!      Annex F; we take this as meaning exceptions and rounding modes
!      need not be supported).  */
    sprintf (name, "__%s_IS_IEC_60559__", name_prefix);
!   builtin_define_with_int_value (name,
! 				 (fmt->ieee_bits == 0
! 				  ? 0 : (fmt->round_towards_zero ? 1 : 2)));
  }
  
  /* Define __DECx__ constants for TYPE using NAME_PREFIX and SUFFIX. */
--- 319,328 ----
      }
  
    /* For C2x *_IS_IEC_60559.  0 means the type does not match an IEC
!      60559 format, 1 that it matches a format but not necessarily
!      operations.  */
    sprintf (name, "__%s_IS_IEC_60559__", name_prefix);
!   builtin_define_with_int_value (name, fmt->ieee_bits != 0);
  }
  
  /* Define __DECx__ constants for TYPE using NAME_PREFIX and SUFFIX. */
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1078,1085 ****
  	  /* Set feature test macros for C++23.  */
  	  cpp_define (pfile, "__cpp_size_t_suffix=202011L");
  	  cpp_define (pfile, "__cpp_if_consteval=202106L");
! 	  cpp_define (pfile, "__cpp_constexpr=202110L");
! 	  cpp_define (pfile, "__cpp_multidimensional_subscript=202110L");
  	}
        if (flag_concepts)
          {
--- 1074,1084 ----
  	  /* Set feature test macros for C++23.  */
  	  cpp_define (pfile, "__cpp_size_t_suffix=202011L");
  	  cpp_define (pfile, "__cpp_if_consteval=202106L");
! 	  cpp_define (pfile, "__cpp_constexpr=202211L");
! 	  cpp_define (pfile, "__cpp_multidimensional_subscript=202211L");
! 	  cpp_define (pfile, "__cpp_named_character_escapes=202207L");
! 	  cpp_define (pfile, "__cpp_static_call_operator=202207L");
! 	  cpp_define (pfile, "__cpp_implicit_move=202207L");
  	}
        if (flag_concepts)
          {
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1088,1093 ****
--- 1087,1098 ----
            else
              cpp_define (pfile, "__cpp_concepts=201507L");
          }
+       if (flag_contracts)
+ 	{
+ 	  cpp_define (pfile, "__cpp_contracts=201906L");
+ 	  cpp_define (pfile, "__cpp_contracts_literal_semantics=201906L");
+ 	  cpp_define (pfile, "__cpp_contracts_roles=201906L");
+ 	}
        if (flag_modules)
  	/* The std-defined value is 201907L, but I don't think we can
  	   claim victory yet.  201810 is the p1103 date. */
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1111,1117 ****
        if (flag_threadsafe_statics)
  	cpp_define (pfile, "__cpp_threadsafe_static_init=200806L");
        if (flag_char8_t)
!         cpp_define (pfile, "__cpp_char8_t=201811L");
  #ifndef THREAD_MODEL_SPEC
        /* Targets that define THREAD_MODEL_SPEC need to define
  	 __STDCPP_THREADS__ in their config/XXX/XXX-c.c themselves.  */
--- 1116,1122 ----
        if (flag_threadsafe_statics)
  	cpp_define (pfile, "__cpp_threadsafe_static_init=200806L");
        if (flag_char8_t)
! 	cpp_define (pfile, "__cpp_char8_t=202207L");
  #ifndef THREAD_MODEL_SPEC
        /* Targets that define THREAD_MODEL_SPEC need to define
  	 __STDCPP_THREADS__ in their config/XXX/XXX-c.c themselves.  */
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1245,1250 ****
--- 1250,1263 ----
      {
        if (FLOATN_NX_TYPE_NODE (i) == NULL_TREE)
  	continue;
+       if (c_dialect_cxx ()
+ 	  && cxx_dialect > cxx20
+ 	  && !floatn_nx_types[i].extended)
+ 	{
+ 	  char name[sizeof ("__STDCPP_FLOAT128_T__=1")];
+ 	  sprintf (name, "__STDCPP_FLOAT%d_T__=1", floatn_nx_types[i].n);
+ 	  cpp_define (pfile, name);
+ 	}
        char prefix[20], csuffix[20];
        sprintf (prefix, "FLT%d%s", floatn_nx_types[i].n,
  	       floatn_nx_types[i].extended ? "X" : "");
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1253,1258 ****
--- 1266,1278 ----
        builtin_define_float_constants (prefix, ggc_strdup (csuffix), "%s",
  				      csuffix, FLOATN_NX_TYPE_NODE (i));
      }
+   if (bfloat16_type_node)
+     {
+       if (c_dialect_cxx () && cxx_dialect > cxx20)
+ 	cpp_define (pfile, "__STDCPP_BFLOAT16_T__=1");
+       builtin_define_float_constants ("BFLT16", "BF16", "%s",
+ 				      "BF16", bfloat16_type_node);
+     }
  
    /* For float.h.  */
    if (targetm.decimal_float_supported_p ())
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1363,1368 ****
--- 1383,1394 ----
  	      suffix[0] = 'l';
  	      memcpy (float_h_prefix, "LDBL", 5);
  	    }
+ 	  else if (bfloat16_type_node
+ 		   && mode == TYPE_MODE (bfloat16_type_node))
+ 	    {
+ 	      memcpy (suffix, "bf16", 5);
+ 	      memcpy (float_h_prefix, "BFLT16", 7);
+ 	    }
  	  else
  	    {
  	      bool found_suffix = false;
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1389,1410 ****
  	  machine_mode float16_type_mode = (float16_type_node
  					    ? TYPE_MODE (float16_type_node)
  					    : VOIDmode);
  	  switch (targetm.c.excess_precision
  		    (EXCESS_PRECISION_TYPE_IMPLICIT))
  	    {
  	    case FLT_EVAL_METHOD_UNPREDICTABLE:
  	    case FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE:
  	      excess_precision = (mode == float16_type_mode
  				  || mode == TYPE_MODE (float_type_node)
  				  || mode == TYPE_MODE (double_type_node));
  	      break;
  
  	    case FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE:
  	      excess_precision = (mode == float16_type_mode
  				  || mode == TYPE_MODE (float_type_node));
  	      break;
  	    case FLT_EVAL_METHOD_PROMOTE_TO_FLOAT:
! 	      excess_precision = mode == float16_type_mode;
  	      break;
  	    case FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16:
  	      excess_precision = false;
--- 1415,1442 ----
  	  machine_mode float16_type_mode = (float16_type_node
  					    ? TYPE_MODE (float16_type_node)
  					    : VOIDmode);
+ 	  machine_mode bfloat16_type_mode = (bfloat16_type_node
+ 					     ? TYPE_MODE (bfloat16_type_node)
+ 					     : VOIDmode);
  	  switch (targetm.c.excess_precision
  		    (EXCESS_PRECISION_TYPE_IMPLICIT))
  	    {
  	    case FLT_EVAL_METHOD_UNPREDICTABLE:
  	    case FLT_EVAL_METHOD_PROMOTE_TO_LONG_DOUBLE:
  	      excess_precision = (mode == float16_type_mode
+ 				  || mode == bfloat16_type_mode
  				  || mode == TYPE_MODE (float_type_node)
  				  || mode == TYPE_MODE (double_type_node));
  	      break;
  
  	    case FLT_EVAL_METHOD_PROMOTE_TO_DOUBLE:
  	      excess_precision = (mode == float16_type_mode
+ 				  || mode == bfloat16_type_mode
  				  || mode == TYPE_MODE (float_type_node));
  	      break;
  	    case FLT_EVAL_METHOD_PROMOTE_TO_FLOAT:
! 	      excess_precision = (mode == float16_type_mode
! 				  || mode == bfloat16_type_mode);
  	      break;
  	    case FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16:
  	      excess_precision = false;
*************** c_cpp_builtins (cpp_reader *pfile)
*** 1489,1494 ****
--- 1521,1529 ----
  #endif
        builtin_define_with_int_value ("__LIBGCC_DWARF_FRAME_REGISTERS__",
  				     DWARF_FRAME_REGISTERS);
+       builtin_define_with_int_value ("__LIBGCC_DWARF_CIE_DATA_ALIGNMENT__",
+ 				     DWARF_CIE_DATA_ALIGNMENT);
+ 
  #ifdef EH_RETURN_STACKADJ_RTX
        cpp_define (pfile, "__LIBGCC_EH_RETURN_STACKADJ_RTX__");
  #endif
*************** type_suffix (tree type)
*** 1868,1873 ****
--- 1903,1910 ----
  	      systems use it anyway.  */
  	   || type == char_type_node)
      is_long = 0;
+   else if (type == wchar_type_node)
+     return type_suffix (underlying_wchar_type_node);
    else
      gcc_unreachable ();
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-dump.cc gcc-13.1.0/gcc/c-family/c-dump.cc
*** gcc-12.2.0/gcc/c-family/c-dump.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-dump.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Tree-dumping functionality for C-family languages.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Written by Mark Mitchell <mark@codesourcery.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Tree-dumping functionality for C-family languages.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Written by Mark Mitchell <mark@codesourcery.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-format.cc gcc-13.1.0/gcc/c-family/c-format.cc
*** gcc-12.2.0/gcc/c-family/c-format.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-format.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static bool check_format_string (const_t
*** 78,86 ****
  				 unsigned HOST_WIDE_INT format_num,
  				 int flags, bool *no_add_attrs,
  				 int expected_format_type);
! static tree get_constant (const_tree fntype, const_tree atname, tree expr,
! 			  int argno, unsigned HOST_WIDE_INT *value,
! 			  int flags, bool validated_p);
  static const char *convert_format_name_to_system_name (const char *attr_name);
  
  static int first_target_format_type;
--- 78,86 ----
  				 unsigned HOST_WIDE_INT format_num,
  				 int flags, bool *no_add_attrs,
  				 int expected_format_type);
! static bool validate_constant (const_tree fn, const_tree atname, tree &expr,
! 			       int argno, unsigned HOST_WIDE_INT *value,
! 			       int flags, bool validated_p);
  static const char *convert_format_name_to_system_name (const char *attr_name);
  
  static int first_target_format_type;
*************** handle_format_arg_attribute (tree *node,
*** 172,185 ****
  			     tree args, int flags, bool *no_add_attrs)
  {
    tree type = *node;
!   /* Note that TREE_VALUE (args) is changed in place below.  */
    tree *format_num_expr = &TREE_VALUE (args);
    unsigned HOST_WIDE_INT format_num = 0;
  
!   if (tree val = get_constant (type, atname, *format_num_expr, 0, &format_num,
! 			       0, false))
!     *format_num_expr = val;
!   else
      {
        *no_add_attrs = true;
        return NULL_TREE;
--- 172,183 ----
  			     tree args, int flags, bool *no_add_attrs)
  {
    tree type = *node;
!   /* Note that TREE_VALUE (args) is changed in the validate_constant call.  */
    tree *format_num_expr = &TREE_VALUE (args);
    unsigned HOST_WIDE_INT format_num = 0;
  
!   if (!validate_constant (type, atname, *format_num_expr, 0, &format_num, 0,
! 			  false))
      {
        *no_add_attrs = true;
        return NULL_TREE;
*************** check_format_string (const_tree fntype,
*** 301,338 ****
  /* Under the control of FLAGS, verify EXPR is a valid constant that
     refers to a positional argument ARGNO having a string type (char*
     or, for targets like Darwin, a pointer to struct CFString) to
!    a function type FNTYPE declared with attribute ATNAME.
!    If valid, store the constant's integer value in *VALUE and return
!    the value.
!    If VALIDATED_P is true assert the validation is successful.
!    Returns the converted constant value on success, null otherwise.  */
  
! static tree
! get_constant (const_tree fntype, const_tree atname, tree expr, int argno,
! 	      unsigned HOST_WIDE_INT *value, int flags, bool validated_p)
  {
    /* Require the referenced argument to have a string type.  For targets
       like Darwin, also accept pointers to struct CFString.  */
!   if (tree val = positional_argument (fntype, atname, expr, STRING_CST,
  				      argno, flags))
      {
        *value = TREE_INT_CST_LOW (val);
!       return val;
      }
  
    gcc_assert (!validated_p);
!   return NULL_TREE;
  }
  
  /* Decode the arguments to a "format" attribute into a
     function_format_info structure.  It is already known that the list
     is of the right length.  If VALIDATED_P is true, then these
     attributes have already been validated and must not be erroneous;
!    if false, it will give an error message.  Returns true if the
!    attributes are successfully decoded, false otherwise.  */
  
  static bool
! decode_format_attr (const_tree fntype, tree atname, tree args,
  		    function_format_info *info, bool validated_p)
  {
    tree format_type_id = TREE_VALUE (args);
--- 299,337 ----
  /* Under the control of FLAGS, verify EXPR is a valid constant that
     refers to a positional argument ARGNO having a string type (char*
     or, for targets like Darwin, a pointer to struct CFString) to
!    a function FN declared with attribute ATNAME.  If valid, store the
!    constant's integer value in *VALUE and return true.  If VALIDATED_P
!    is true assert the validation is successful.
  
!    N.B. This function modifies EXPR.  */
! 
! static bool
! validate_constant (const_tree fn, const_tree atname, tree &expr, int argno,
! 		   unsigned HOST_WIDE_INT *value, int flags, bool validated_p)
  {
    /* Require the referenced argument to have a string type.  For targets
       like Darwin, also accept pointers to struct CFString.  */
!   if (tree val = positional_argument (fn, atname, expr, STRING_CST,
  				      argno, flags))
      {
        *value = TREE_INT_CST_LOW (val);
!       return true;
      }
  
    gcc_assert (!validated_p);
!   return false;
  }
  
  /* Decode the arguments to a "format" attribute into a
     function_format_info structure.  It is already known that the list
     is of the right length.  If VALIDATED_P is true, then these
     attributes have already been validated and must not be erroneous;
!    if false, it will give an error message.  FN is either a function
!    declaration or function type.  Returns true if the attributes are
!    successfully decoded, false otherwise.  */
  
  static bool
! decode_format_attr (const_tree fn, tree atname, tree args,
  		    function_format_info *info, bool validated_p)
  {
    tree format_type_id = TREE_VALUE (args);
*************** decode_format_attr (const_tree fntype, t
*** 372,388 ****
  	}
      }
  
!   if (tree val = get_constant (fntype, atname, *format_num_expr,
! 			       2, &info->format_num, 0, validated_p))
!     *format_num_expr = val;
!   else
      return false;
  
!   if (tree val = get_constant (fntype, atname, *first_arg_num_expr,
! 			       3, &info->first_arg_num,
! 			       (POSARG_ZERO | POSARG_ELLIPSIS), validated_p))
!     *first_arg_num_expr = val;
!   else
      return false;
  
    if (info->first_arg_num != 0 && info->first_arg_num <= info->format_num)
--- 371,383 ----
  	}
      }
  
!   if (!validate_constant (fn, atname, *format_num_expr, 2, &info->format_num,
! 			  0, validated_p))
      return false;
  
!   if (!validate_constant (fn, atname, *first_arg_num_expr, 3,
! 			  &info->first_arg_num,
! 			  (POSARG_ZERO | POSARG_ELLIPSIS), validated_p))
      return false;
  
    if (info->first_arg_num != 0 && info->first_arg_num <= info->format_num)
*************** static const format_length_info printf_l
*** 493,498 ****
--- 488,501 ----
    { "j", FMT_LEN_j, STD_C99, NO_FMT, 0 },
    { "H", FMT_LEN_H, STD_C2X, NO_FMT, 0 },
    { "D", FMT_LEN_D, STD_C2X, "DD", FMT_LEN_DD, STD_C2X, 0 },
+   { "w8", FMT_LEN_w8, STD_C2X, NO_FMT, 0 },
+   { "w16", FMT_LEN_w16, STD_C2X, NO_FMT, 0 },
+   { "w32", FMT_LEN_w32, STD_C2X, NO_FMT, 0 },
+   { "w64", FMT_LEN_w64, STD_C2X, NO_FMT, 0 },
+   { "wf8", FMT_LEN_wf8, STD_C2X, NO_FMT, 0 },
+   { "wf16", FMT_LEN_wf16, STD_C2X, NO_FMT, 0 },
+   { "wf32", FMT_LEN_wf32, STD_C2X, NO_FMT, 0 },
+   { "wf64", FMT_LEN_wf64, STD_C2X, NO_FMT, 0 },
    { NO_FMT, NO_FMT, 0 }
  };
  
*************** static const format_length_info scanf_le
*** 530,535 ****
--- 533,546 ----
    { "j", FMT_LEN_j, STD_C99, NO_FMT, 0 },
    { "H", FMT_LEN_H, STD_C2X, NO_FMT, 0 },
    { "D", FMT_LEN_D, STD_C2X, "DD", FMT_LEN_DD, STD_C2X, 0 },
+   { "w8", FMT_LEN_w8, STD_C2X, NO_FMT, 0 },
+   { "w16", FMT_LEN_w16, STD_C2X, NO_FMT, 0 },
+   { "w32", FMT_LEN_w32, STD_C2X, NO_FMT, 0 },
+   { "w64", FMT_LEN_w64, STD_C2X, NO_FMT, 0 },
+   { "wf8", FMT_LEN_wf8, STD_C2X, NO_FMT, 0 },
+   { "wf16", FMT_LEN_wf16, STD_C2X, NO_FMT, 0 },
+   { "wf32", FMT_LEN_wf32, STD_C2X, NO_FMT, 0 },
+   { "wf64", FMT_LEN_wf64, STD_C2X, NO_FMT, 0 },
    { NO_FMT, NO_FMT, 0 }
  };
  
*************** static const format_flag_pair strfmon_fl
*** 698,723 ****
  static const format_char_info print_char_table[] =
  {
    /* C89 conversion specifiers.  */
!   { "di",  0, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  TEX_LL,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN  }, "-wp0 +'I",  "i",  NULL },
!   { "oxX", 0, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN }, "-wp0#",     "i",  NULL },
!   { "u",   0, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN }, "-wp0'I",    "i",  NULL },
!   { "fgG", 0, STD_C89, { T89_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T89_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128 }, "-wp0 +#'I", "",   NULL },
!   { "eE",  0, STD_C89, { T89_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T89_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128 }, "-wp0 +#I",  "",   NULL },
!   { "c",   0, STD_C89, { T89_I,   BADLEN,  BADLEN,  T94_WI,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-w",        "",   NULL },
!   { "s",   1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "cR", NULL },
!   { "p",   1, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-w",        "c",  NULL },
!   { "n",   1, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  BADLEN,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN }, "",          "W",  NULL },
    /* C99 conversion specifiers.  */
!   { "F",   0, STD_C99, { T99_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128 }, "-wp0 +#'I", "",   NULL },
!   { "aA",  0, STD_C99, { T99_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64,  T2X_D128 }, "-wp0 +#",   "",   NULL },
    /* C2X conversion specifiers.  */
!   { "b",   0, STD_C2X, { T2X_UI,  T2X_UC,  T2X_US,  T2X_UL,  T2X_ULL, TEX_ULL, T2X_ST,  T2X_UPD, T2X_UIM, BADLEN,  BADLEN,  BADLEN }, "-wp0#",     "i",  NULL },
    /* X/Open conversion specifiers.  */
!   { "C",   0, STD_EXT, { TEX_WI,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-w",        "",   NULL },
!   { "S",   1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "R",  NULL },
    /* GNU conversion specifiers.  */
!   { "m",   0, STD_EXT, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "-wp",       "",   NULL },
!   { "B",   0, STD_EXT, { T2X_UI,  T2X_UC,  T2X_US,  T2X_UL,  T2X_ULL, TEX_ULL, T2X_ST,  T2X_UPD, T2X_UIM, BADLEN,  BADLEN,  BADLEN }, "-wp0#",     "i",  NULL },
    { NULL,  0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
  };
  
--- 709,734 ----
  static const format_char_info print_char_table[] =
  {
    /* C89 conversion specifiers.  */
!   { "di",  0, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  TEX_LL,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN,   T2X_I8,  T2X_I16, T2X_I32, T2X_I64, T2X_IF8, T2X_IF16, T2X_IF32, T2X_IF64 }, "-wp0 +'I",  "i",  NULL },
!   { "oxX", 0, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "-wp0#",     "i",  NULL },
!   { "u",   0, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "-wp0'I",    "i",  NULL },
!   { "fgG", 0, STD_C89, { T89_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T89_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp0 +#'I", "",   NULL },
!   { "eE",  0, STD_C89, { T89_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T89_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp0 +#I",  "",   NULL },
!   { "c",   0, STD_C89, { T89_I,   BADLEN,  BADLEN,  T94_WI,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-w",        "",   NULL },
!   { "s",   1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp",       "cR", NULL },
!   { "p",   1, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-w",        "c",  NULL },
!   { "n",   1, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  BADLEN,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN,   T2X_I8,  T2X_I16, T2X_I32, T2X_I64, T2X_IF8, T2X_IF16, T2X_IF32, T2X_IF64 }, "",          "W",  NULL },
    /* C99 conversion specifiers.  */
!   { "F",   0, STD_C99, { T99_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp0 +#'I", "",   NULL },
!   { "aA",  0, STD_C99, { T99_D,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp0 +#",   "",   NULL },
    /* C2X conversion specifiers.  */
!   { "b",   0, STD_C2X, { T2X_UI,  T2X_UC,  T2X_US,  T2X_UL,  T2X_ULL, TEX_ULL, T2X_ST,  T2X_UPD, T2X_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "-wp0#",     "i",  NULL },
    /* X/Open conversion specifiers.  */
!   { "C",   0, STD_EXT, { TEX_WI,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-w",        "",   NULL },
!   { "S",   1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp",       "R",  NULL },
    /* GNU conversion specifiers.  */
!   { "m",   0, STD_EXT, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "-wp",       "",   NULL },
!   { "B",   0, STD_EXT, { T2X_UI,  T2X_UC,  T2X_US,  T2X_UL,  T2X_ULL, TEX_ULL, T2X_ST,  T2X_UPD, T2X_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "-wp0#",     "i",  NULL },
    { NULL,  0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
  };
  
*************** static const format_char_info gcc_dump_p
*** 865,887 ****
  static const format_char_info scan_char_table[] =
  {
    /* C89 conversion specifiers.  */
!   { "di",    1, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  TEX_LL,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN }, "*w'I", "W",   NULL },
!   { "u",     1, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN }, "*w'I", "W",   NULL },
!   { "oxX",   1, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN }, "*w",   "W",   NULL },
!   { "efgEG", 1, STD_C89, { T89_F,   BADLEN,  BADLEN,  T89_D,   BADLEN,  T89_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128 }, "*w'",  "W",   NULL },
!   { "c",     1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "*mw",   "cW",  NULL },
!   { "s",     1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "*amw",  "cW",  NULL },
!   { "[",     1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "*amw",  "cW[", NULL },
!   { "p",     2, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "*w",   "W",   NULL },
!   { "n",     1, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  BADLEN,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN }, "",     "W",   NULL },
    /* C99 conversion specifiers.  */
!   { "F",   1, STD_C99, { T99_F,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128 }, "*w'",  "W",   NULL },
!   { "aA",   1, STD_C99, { T99_F,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32,  T2X_D64,  T2X_D128 }, "*w'",  "W",   NULL },
    /* C2X conversion specifiers.  */
!   { "b",     1, STD_C2X, { T2X_UI,  T2X_UC,  T2X_US,  T2X_UL,  T2X_ULL, TEX_ULL, T2X_ST,  T2X_UPD, T2X_UIM, BADLEN,  BADLEN,  BADLEN }, "*w",   "W",   NULL },
    /* X/Open conversion specifiers.  */
!   { "C",     1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "*mw",   "W",   NULL },
!   { "S",     1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN }, "*amw",  "W",   NULL },
    { NULL, 0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
  };
  
--- 876,898 ----
  static const format_char_info scan_char_table[] =
  {
    /* C89 conversion specifiers.  */
!   { "di",    1, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  TEX_LL,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN,   T2X_I8,  T2X_I16, T2X_I32, T2X_I64, T2X_IF8, T2X_IF16, T2X_IF32, T2X_IF64 }, "*w'I", "W",   NULL },
!   { "u",     1, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "*w'I", "W",   NULL },
!   { "oxX",   1, STD_C89, { T89_UI,  T99_UC,  T89_US,  T89_UL,  T9L_ULL, TEX_ULL, T99_ST,  T99_UPD, T99_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "*w",   "W",   NULL },
!   { "efgEG", 1, STD_C89, { T89_F,   BADLEN,  BADLEN,  T89_D,   BADLEN,  T89_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*w'",  "W",   NULL },
!   { "c",     1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*mw",   "cW",  NULL },
!   { "s",     1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*amw",  "cW",  NULL },
!   { "[",     1, STD_C89, { T89_C,   BADLEN,  BADLEN,  T94_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*amw",  "cW[", NULL },
!   { "p",     2, STD_C89, { T89_V,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*w",   "W",   NULL },
!   { "n",     1, STD_C89, { T89_I,   T99_SC,  T89_S,   T89_L,   T9L_LL,  BADLEN,  T99_SST, T99_PD,  T99_IM,  BADLEN,  BADLEN,  BADLEN,   T2X_I8,  T2X_I16, T2X_I32, T2X_I64, T2X_IF8, T2X_IF16, T2X_IF32, T2X_IF64 }, "",     "W",   NULL },
    /* C99 conversion specifiers.  */
!   { "F",   1, STD_C99,   { T99_F,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*w'",  "W",   NULL },
!   { "aA",   1, STD_C99,  { T99_F,   BADLEN,  BADLEN,  T99_D,   BADLEN,  T99_LD,  BADLEN,  BADLEN,  BADLEN,  T2X_D32, T2X_D64, T2X_D128, BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*w'",  "W",   NULL },
    /* C2X conversion specifiers.  */
!   { "b",     1, STD_C2X, { T2X_UI,  T2X_UC,  T2X_US,  T2X_UL,  T2X_ULL, TEX_ULL, T2X_ST,  T2X_UPD, T2X_UIM, BADLEN,  BADLEN,  BADLEN,   T2X_U8,  T2X_U16, T2X_U32, T2X_U64, T2X_UF8, T2X_UF16, T2X_UF32, T2X_UF64 }, "*w",   "W",   NULL },
    /* X/Open conversion specifiers.  */
!   { "C",     1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*mw",   "W",   NULL },
!   { "S",     1, STD_EXT, { TEX_W,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,  BADLEN,   BADLEN,   BADLEN }, "*amw",  "W",   NULL },
    { NULL, 0, STD_C89, NOLENGTHS, NULL, NULL, NULL }
  };
  
*************** decode_format_type (const char *s, bool
*** 1154,1166 ****
  
  /* Check the argument list of a call to printf, scanf, etc.
     ATTRS are the attributes on the function type.  There are NARGS argument
!    values in the array ARGARRAY.
!    Also, if -Wsuggest-attribute=format,
!    warn for calls to vprintf or vscanf in functions with no such format
!    attribute themselves.  */
  
  void
! check_function_format (const_tree fntype, tree attrs, int nargs,
  		       tree *argarray, vec<location_t> *arglocs)
  {
    tree a;
--- 1165,1176 ----
  
  /* Check the argument list of a call to printf, scanf, etc.
     ATTRS are the attributes on the function type.  There are NARGS argument
!    values in the array ARGARRAY.  FN is either a function declaration or
!    function type.  Also, if -Wsuggest-attribute=format, warn for calls to
!    vprintf or vscanf in functions with no such format attribute themselves.  */
  
  void
! check_function_format (const_tree fn, tree attrs, int nargs,
  		       tree *argarray, vec<location_t> *arglocs)
  {
    tree a;
*************** check_function_format (const_tree fntype
*** 1174,1180 ****
  	{
  	  /* Yup; check it.  */
  	  function_format_info info;
! 	  decode_format_attr (fntype, atname, TREE_VALUE (a), &info,
  			      /*validated=*/true);
  	  if (warn_format)
  	    {
--- 1184,1190 ----
  	{
  	  /* Yup; check it.  */
  	  function_format_info info;
! 	  decode_format_attr (fn, atname, TREE_VALUE (a), &info,
  			      /*validated=*/true);
  	  if (warn_format)
  	    {
*************** check_function_format (const_tree fntype
*** 1205,1211 ****
  	      for (c = TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl));
  		   c;
  		   c = TREE_CHAIN (c))
! 		if (is_attribute_p ("format", TREE_PURPOSE (c))
  		    && (decode_format_type (IDENTIFIER_POINTER
  					    (TREE_VALUE (TREE_VALUE (c))))
  			== info.format_type))
--- 1215,1221 ----
  	      for (c = TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl));
  		   c;
  		   c = TREE_CHAIN (c))
! 		if (is_attribute_p ("format", get_attribute_name (c))
  		    && (decode_format_type (IDENTIFIER_POINTER
  					    (TREE_VALUE (TREE_VALUE (c))))
  			== info.format_type))
*************** static const token_t cxx_opers[] =
*** 2906,2912 ****
    };
  
  /* Common C/C++ keywords that are expected to be quoted within the format
!    string.  Keywords like auto, inline, or volatile are exccluded because
     they are sometimes used in common terms like /auto variables/, /inline
     function/, or /volatile access/ where they should not be quoted.  */
  
--- 2916,2922 ----
    };
  
  /* Common C/C++ keywords that are expected to be quoted within the format
!    string.  Keywords like auto, inline, or volatile are excluded because
     they are sometimes used in common terms like /auto variables/, /inline
     function/, or /volatile access/ where they should not be quoted.  */
  
*************** static const token_t c_keywords[] =
*** 2933,2939 ****
     NAME ("noinline", NULL),
     NAME ("nonnull", NULL),
     NAME ("noreturn", NULL),
-    NAME ("nothrow", NULL),
     NAME ("offsetof", NULL),
     NAME ("readonly", "read-only"),
     NAME ("readwrite", "read-write"),
--- 2943,2948 ----
*************** check_tokens (const token_t *tokens, uns
*** 3196,3202 ****
    else
      {
        /* Diagnose some common misspellings.  */
!       for (unsigned i = 0; i != sizeof badwords / sizeof *badwords; ++i)
  	{
  	  unsigned badwlen = strspn (badwords[i].name, " -");
  	  if (wlen >= badwlen
--- 3205,3211 ----
    else
      {
        /* Diagnose some common misspellings.  */
!       for (unsigned i = 0; i != ARRAY_SIZE (badwords); ++i)
  	{
  	  unsigned badwlen = strspn (badwords[i].name, " -");
  	  if (wlen >= badwlen
*************** check_plain (location_t format_string_lo
*** 3391,3404 ****
  
    if (ISPUNCT (format_chars[0]))
      {
!       size_t nelts = sizeof c_opers / sizeof *c_opers;
        if (const char *ret = check_tokens (c_opers, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
  					  baltoks))
  	return ret;
  
!       nelts = c_dialect_cxx () ? sizeof cxx_opers / sizeof *cxx_opers : 0;
        if (const char *ret = check_tokens (cxx_opers, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
--- 3400,3413 ----
  
    if (ISPUNCT (format_chars[0]))
      {
!       size_t nelts = ARRAY_SIZE (c_opers);
        if (const char *ret = check_tokens (c_opers, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
  					  baltoks))
  	return ret;
  
!       nelts = c_dialect_cxx () ? ARRAY_SIZE (cxx_opers) : 0;
        if (const char *ret = check_tokens (cxx_opers, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
*************** check_plain (location_t format_string_lo
*** 3408,3421 ****
  
    if (ISALPHA (format_chars[0]))
      {
!       size_t nelts = sizeof c_keywords / sizeof *c_keywords;
        if (const char *ret = check_tokens (c_keywords, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
  					  baltoks))
  	return ret;
  
!       nelts = c_dialect_cxx () ? sizeof cxx_keywords / sizeof *cxx_keywords : 0;
        if (const char *ret = check_tokens (cxx_keywords, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
--- 3417,3430 ----
  
    if (ISALPHA (format_chars[0]))
      {
!       size_t nelts = ARRAY_SIZE (c_keywords);
        if (const char *ret = check_tokens (c_keywords, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
  					  baltoks))
  	return ret;
  
!       nelts = c_dialect_cxx () ? ARRAY_SIZE (cxx_keywords) : 0;
        if (const char *ret = check_tokens (cxx_keywords, nelts,
  					  format_string_loc, format_string_cst,
  					  orig_format_chars, format_chars,
*************** check_plain (location_t format_string_lo
*** 3534,3540 ****
  	  && ISALPHA (format_chars[1]))
  	{
  	  /* Diagnose a subset of contractions that are best avoided.  */
! 	  for (unsigned i = 0; i != sizeof contrs / sizeof *contrs; ++i)
  	    {
  	      const char *apos = strchr (contrs[i].name, '\'');
  	      gcc_assert (apos != NULL);
--- 3543,3549 ----
  	  && ISALPHA (format_chars[1]))
  	{
  	  /* Diagnose a subset of contractions that are best avoided.  */
! 	  for (unsigned i = 0; i != ARRAY_SIZE (contrs); ++i)
  	    {
  	      const char *apos = strchr (contrs[i].name, '\'');
  	      gcc_assert (apos != NULL);
*************** class range_label_for_format_type_mismat
*** 4620,4637 ****
    {
    }
  
!   label_text get_text (unsigned range_idx) const FINAL OVERRIDE
    {
      label_text text = range_label_for_type_mismatch::get_text (range_idx);
!     if (text.m_buffer == NULL)
        return text;
  
      indirection_suffix suffix (m_pointer_count);
      char *p = (char *) alloca (suffix.get_buffer_size ());
      suffix.fill_buffer (p);
  
!     char *result = concat (text.m_buffer, p, NULL);
!     text.maybe_free ();
      return label_text::take (result);
    }
  
--- 4629,4645 ----
    {
    }
  
!   label_text get_text (unsigned range_idx) const final override
    {
      label_text text = range_label_for_type_mismatch::get_text (range_idx);
!     if (text.get () == NULL)
        return text;
  
      indirection_suffix suffix (m_pointer_count);
      char *p = (char *) alloca (suffix.get_buffer_size ());
      suffix.fill_buffer (p);
  
!     char *result = concat (text.get (), p, NULL);
      return label_text::take (result);
    }
  
*************** convert_format_name_to_system_name (cons
*** 5118,5125 ****
  
  #ifdef TARGET_OVERRIDES_FORMAT_ATTRIBUTES
    /* Check if format attribute is overridden by target.  */
!   if (TARGET_OVERRIDES_FORMAT_ATTRIBUTES != NULL
!       && TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT > 0)
      {
        for (i = 0; i < TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT; ++i)
          {
--- 5126,5132 ----
  
  #ifdef TARGET_OVERRIDES_FORMAT_ATTRIBUTES
    /* Check if format attribute is overridden by target.  */
!   if (TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT > 0)
      {
        for (i = 0; i < TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT; ++i)
          {
*************** convert_format_name_to_system_name (cons
*** 5151,5160 ****
  /* Handle a "format" attribute; arguments as in
     struct attribute_spec.handler.  */
  tree
! handle_format_attribute (tree *node, tree atname, tree args,
  			 int flags, bool *no_add_attrs)
  {
    const_tree type = *node;
    function_format_info info;
  
  #ifdef TARGET_FORMAT_TYPES
--- 5158,5171 ----
  /* Handle a "format" attribute; arguments as in
     struct attribute_spec.handler.  */
  tree
! handle_format_attribute (tree node[3], tree atname, tree args,
  			 int flags, bool *no_add_attrs)
  {
    const_tree type = *node;
+   /* NODE[2] may be NULL, and it also may be a PARM_DECL for function
+      pointers.  */
+   const_tree fndecl = ((node[2] && TREE_CODE (node[2]) == FUNCTION_DECL)
+ 		       ? node[2] : NULL_TREE);
    function_format_info info;
  
  #ifdef TARGET_FORMAT_TYPES
*************** handle_format_attribute (tree *node, tre
*** 5180,5186 ****
    if (TREE_CODE (TREE_VALUE (args)) == IDENTIFIER_NODE)
      TREE_VALUE (args) = canonicalize_attr_name (TREE_VALUE (args));
  
!   if (!decode_format_attr (type, atname, args, &info, /* validated_p = */false))
      {
        *no_add_attrs = true;
        return NULL_TREE;
--- 5191,5198 ----
    if (TREE_CODE (TREE_VALUE (args)) == IDENTIFIER_NODE)
      TREE_VALUE (args) = canonicalize_attr_name (TREE_VALUE (args));
  
!   if (!decode_format_attr (fndecl ? fndecl : type, atname, args, &info,
! 			   /* validated_p = */false))
      {
        *no_add_attrs = true;
        return NULL_TREE;
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-format.h gcc-13.1.0/gcc/c-family/c-format.h
*** gcc-12.2.0/gcc/c-family/c-format.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-format.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum format_lengths
*** 36,41 ****
--- 36,49 ----
    FMT_LEN_H,
    FMT_LEN_D,
    FMT_LEN_DD,
+   FMT_LEN_w8,
+   FMT_LEN_w16,
+   FMT_LEN_w32,
+   FMT_LEN_w64,
+   FMT_LEN_wf8,
+   FMT_LEN_wf16,
+   FMT_LEN_wf32,
+   FMT_LEN_wf64,
    FMT_LEN_w,   /* GCC's HOST_WIDE_INT.  */
    FMT_LEN_MAX
  };
*************** struct format_type_detail
*** 124,132 ****
  
  
  /* Macros to fill out tables of these.  */
! #define NOARGUMENTS	{ T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }
  #define BADLEN	{ STD_C89, NULL, NULL }
! #define NOLENGTHS	{ BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }
  
  
  /* Structure describing a format conversion specifier (or a set of specifiers
--- 132,140 ----
  
  
  /* Macros to fill out tables of these.  */
! #define NOARGUMENTS	{ T89_V, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }
  #define BADLEN	{ STD_C89, NULL, NULL }
! #define NOLENGTHS	{ BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN, BADLEN }
  
  
  /* Structure describing a format conversion specifier (or a set of specifiers
*************** struct format_kind_info
*** 338,343 ****
--- 346,383 ----
  #define T2X_D64 { STD_C2X, "_Decimal64", T_D64 }
  #define T_D128  &dfloat128_type_node
  #define T2X_D128 { STD_C2X, "_Decimal128", T_D128 }
+ #define T_I8	&int_least8_type_node
+ #define T2X_I8	{ STD_C2X, "int_least8_t", T_I8 }
+ #define T_I16	&int_least16_type_node
+ #define T2X_I16	{ STD_C2X, "int_least16_t", T_I16 }
+ #define T_I32	&int_least32_type_node
+ #define T2X_I32	{ STD_C2X, "int_least32_t", T_I32 }
+ #define T_I64	&int_least64_type_node
+ #define T2X_I64	{ STD_C2X, "int_least64_t", T_I64 }
+ #define T_U8	&uint_least8_type_node
+ #define T2X_U8	{ STD_C2X, "uint_least8_t", T_U8 }
+ #define T_U16	&uint_least16_type_node
+ #define T2X_U16	{ STD_C2X, "uint_least16_t", T_U16 }
+ #define T_U32	&uint_least32_type_node
+ #define T2X_U32	{ STD_C2X, "uint_least32_t", T_U32 }
+ #define T_U64	&uint_least64_type_node
+ #define T2X_U64	{ STD_C2X, "uint_least64_t", T_U64 }
+ #define T_IF8	&int_fast8_type_node
+ #define T2X_IF8	{ STD_C2X, "int_fast8_t", T_IF8 }
+ #define T_IF16	&int_fast16_type_node
+ #define T2X_IF16 { STD_C2X, "int_fast16_t", T_IF16 }
+ #define T_IF32	&int_fast32_type_node
+ #define T2X_IF32 { STD_C2X, "int_fast32_t", T_IF32 }
+ #define T_IF64	&int_fast64_type_node
+ #define T2X_IF64 { STD_C2X, "int_fast64_t", T_IF64 }
+ #define T_UF8	&uint_fast8_type_node
+ #define T2X_UF8	{ STD_C2X, "uint_fast8_t", T_UF8 }
+ #define T_UF16	&uint_fast16_type_node
+ #define T2X_UF16 { STD_C2X, "uint_fast16_t", T_UF16 }
+ #define T_UF32	&uint_fast32_type_node
+ #define T2X_UF32 { STD_C2X, "uint_fast32_t", T_UF32 }
+ #define T_UF64	&uint_fast64_type_node
+ #define T2X_UF64 { STD_C2X, "uint_fast64_t", T_UF64 }
  
  /* Structure describing how format attributes such as "printf" are
     interpreted as "gnu_printf" or "ms_printf" on a particular system.
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-gimplify.cc gcc-13.1.0/gcc/c-family/c-gimplify.cc
*** gcc-12.2.0/gcc/c-family/c-gimplify.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-gimplify.cc	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
     by the C-based front ends.  The structure of gimplified, or
     language-independent, trees is dictated by the grammar described in this
     file.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Lowering of expressions contributed by Sebastian Pop <s.pop@laposte.net>
     Re-written to support lowering of whole function trees, documentation
     and miscellaneous cleanups by Diego Novillo <dnovillo@redhat.com>
--- 2,8 ----
     by the C-based front ends.  The structure of gimplified, or
     language-independent, trees is dictated by the grammar described in this
     file.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Lowering of expressions contributed by Sebastian Pop <s.pop@laposte.net>
     Re-written to support lowering of whole function trees, documentation
     and miscellaneous cleanups by Diego Novillo <dnovillo@redhat.com>
*************** along with GCC; see the file COPYING3.
*** 40,45 ****
--- 40,46 ----
  #include "dumpfile.h"
  #include "c-ubsan.h"
  #include "tree-nested.h"
+ #include "context.h"
  
  /*  The gimplification pass converts the language-dependent trees
      (ld-trees) emitted by the parser into language-independent trees
*************** ubsan_walk_array_refs_r (tree *tp, int *
*** 105,110 ****
--- 106,123 ----
      }
    else if (TREE_CODE (*tp) == ARRAY_REF)
      ubsan_maybe_instrument_array_ref (tp, false);
+   else if (TREE_CODE (*tp) == MODIFY_EXPR)
+     {
+       /* Since r7-1900, we gimplify RHS before LHS.  Consider
+ 	   a[b] |= c;
+ 	 wherein we can have a single shared tree a[b] in both LHS and RHS.
+ 	 If we only instrument the LHS and the access is invalid, the program
+ 	 could crash before emitting a UBSan error.  So instrument the RHS
+ 	 first.  */
+       *walk_subtrees = 0;
+       walk_tree (&TREE_OPERAND (*tp, 1), ubsan_walk_array_refs_r, pset, pset);
+       walk_tree (&TREE_OPERAND (*tp, 0), ubsan_walk_array_refs_r, pset, pset);
+     }
    return NULL_TREE;
  }
  
*************** c_genericize_control_stmt (tree *stmt_p,
*** 510,521 ****
  	     STATEMENT_LIST wouldn't be present at all the resulting
  	     expression wouldn't have TREE_SIDE_EFFECTS set, so make sure
  	     to clear it even on the STATEMENT_LIST in such cases.  */
  	  for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i))
  	    {
  	      tree t = tsi_stmt (i);
  	      if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2)
  		nondebug_stmts++;
! 	      walk_tree_1 (tsi_stmt_ptr (i), func, data, NULL, lh);
  	      if (TREE_CODE (t) != DEBUG_BEGIN_STMT
  		  && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i))))
  		clear_side_effects = false;
--- 523,537 ----
  	     STATEMENT_LIST wouldn't be present at all the resulting
  	     expression wouldn't have TREE_SIDE_EFFECTS set, so make sure
  	     to clear it even on the STATEMENT_LIST in such cases.  */
+ 	  hash_set<tree> *pset = (c_dialect_cxx ()
+ 				  ? nullptr
+ 				  : static_cast<hash_set<tree> *>(data));
  	  for (i = tsi_start (stmt); !tsi_end_p (i); tsi_next (&i))
  	    {
  	      tree t = tsi_stmt (i);
  	      if (TREE_CODE (t) != DEBUG_BEGIN_STMT && nondebug_stmts < 2)
  		nondebug_stmts++;
! 	      walk_tree_1 (tsi_stmt_ptr (i), func, data, pset, lh);
  	      if (TREE_CODE (t) != DEBUG_BEGIN_STMT
  		  && (nondebug_stmts > 1 || TREE_SIDE_EFFECTS (tsi_stmt (i))))
  		clear_side_effects = false;
*************** c_genericize_control_r (tree *stmt_p, in
*** 552,557 ****
--- 568,574 ----
  void
  c_genericize (tree fndecl)
  {
+   dump_file_info *dfi;
    FILE *dump_orig;
    dump_flags_t local_dump_flags;
    struct cgraph_node *cgn;
*************** c_genericize (tree fndecl)
*** 570,577 ****
        bc_state_t save_state;
        push_cfun (DECL_STRUCT_FUNCTION (fndecl));
        save_bc_state (&save_state);
!       walk_tree (&DECL_SAVED_TREE (fndecl), c_genericize_control_r,
! 		 NULL, NULL);
        restore_bc_state (&save_state);
        pop_cfun ();
      }
--- 587,595 ----
        bc_state_t save_state;
        push_cfun (DECL_STRUCT_FUNCTION (fndecl));
        save_bc_state (&save_state);
!       hash_set<tree> pset;
!       walk_tree (&DECL_SAVED_TREE (fndecl), c_genericize_control_r, &pset,
! 		 &pset);
        restore_bc_state (&save_state);
        pop_cfun ();
      }
*************** c_genericize (tree fndecl)
*** 581,587 ****
  				  do_warn_duplicated_branches_r, NULL);
  
    /* Dump the C-specific tree IR.  */
!   dump_orig = get_dump_info (TDI_original, &local_dump_flags);
    if (dump_orig)
      {
        fprintf (dump_orig, "\n;; Function %s",
--- 599,607 ----
  				  do_warn_duplicated_branches_r, NULL);
  
    /* Dump the C-specific tree IR.  */
!   dfi = g->get_dumps ()->get_dump_file_info (TDI_original);
!   dump_orig = dfi->pstream;
!   local_dump_flags = dfi->pflags;
    if (dump_orig)
      {
        fprintf (dump_orig, "\n;; Function %s",
*************** c_gimplify_expr (tree *expr_p, gimple_se
*** 704,721 ****
  	break;
        }
  
-     case DECL_EXPR:
-       /* This is handled mostly by gimplify.cc, but we have to deal with
- 	 not warning about int x = x; as it is a GCC extension to turn off
- 	 this warning but only if warn_init_self is zero.  */
-       if (VAR_P (DECL_EXPR_DECL (*expr_p))
- 	  && !DECL_EXTERNAL (DECL_EXPR_DECL (*expr_p))
- 	  && !TREE_STATIC (DECL_EXPR_DECL (*expr_p))
- 	  && (DECL_INITIAL (DECL_EXPR_DECL (*expr_p)) == DECL_EXPR_DECL (*expr_p))
- 	  && !warn_init_self)
- 	suppress_warning (DECL_EXPR_DECL (*expr_p), OPT_Winit_self);
-       break;
- 
      case PREINCREMENT_EXPR:
      case PREDECREMENT_EXPR:
      case POSTINCREMENT_EXPR:
--- 724,729 ----
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-indentation.cc gcc-13.1.0/gcc/c-family/c-indentation.cc
*** gcc-12.2.0/gcc/c-family/c-indentation.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-indentation.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Implementation of -Wmisleading-indentation
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Implementation of -Wmisleading-indentation
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-indentation.h gcc-13.1.0/gcc/c-family/c-indentation.h
*** gcc-12.2.0/gcc/c-family/c-indentation.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-indentation.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for c-indentation.cc.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for c-indentation.cc.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-lex.cc gcc-13.1.0/gcc/c-family/c-lex.cc
*** gcc-12.2.0/gcc/c-family/c-lex.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-lex.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Mainly the interface between cpplib and the C front ends.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Mainly the interface between cpplib and the C front ends.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** c_common_has_attribute (cpp_reader *pfil
*** 378,392 ****
  		result = 201803;
  	      else if (is_attribute_p ("nodiscard", attr_name))
  		result = 201907;
  	    }
  	  else
  	    {
! 	      if (is_attribute_p ("deprecated", attr_name)
! 		  || is_attribute_p ("maybe_unused", attr_name)
! 		  || is_attribute_p ("fallthrough", attr_name))
  		result = 201904;
  	      else if (is_attribute_p ("nodiscard", attr_name))
  		result = 202003;
  	    }
  	  if (result)
  	    attr_name = NULL_TREE;
--- 378,408 ----
  		result = 201803;
  	      else if (is_attribute_p ("nodiscard", attr_name))
  		result = 201907;
+ 	      else if (is_attribute_p ("assume", attr_name))
+ 		result = 202207;
+ 	      else if (is_attribute_p ("init_priority", attr_name))
+ 		{
+ 		  /* The (non-standard) init_priority attribute is always
+ 		     included in the attribute table, but we don't want to
+ 		     advertise the attribute unless the target actually
+ 		     supports init priorities.  */
+ 		  result = SUPPORTS_INIT_PRIORITY ? 1 : 0;
+ 		  attr_name = NULL_TREE;
+ 		}
  	    }
  	  else
  	    {
! 	      if (is_attribute_p ("deprecated", attr_name))
  		result = 201904;
+ 	      else if (is_attribute_p ("fallthrough", attr_name))
+ 		result = 201910;
  	      else if (is_attribute_p ("nodiscard", attr_name))
  		result = 202003;
+ 	      else if (is_attribute_p ("maybe_unused", attr_name))
+ 		result = 202106;
+ 	      else if (is_attribute_p ("noreturn", attr_name)
+ 		       || is_attribute_p ("_Noreturn", attr_name))
+ 		result = 202202;
  	    }
  	  if (result)
  	    attr_name = NULL_TREE;
*************** c_lex_with_flags (tree *value, location_
*** 509,515 ****
  	    /* C++ uses '0' to mark virtual functions as pure.
  	       Set PURE_ZERO to pass this information to the C++ parser.  */
  	    if (tok->val.str.len == 1 && *tok->val.str.text == '0')
! 	      add_flags = PURE_ZERO;
  	    *value = interpret_integer (tok, flags, &overflow);
  	    break;
  
--- 525,535 ----
  	    /* C++ uses '0' to mark virtual functions as pure.
  	       Set PURE_ZERO to pass this information to the C++ parser.  */
  	    if (tok->val.str.len == 1 && *tok->val.str.text == '0')
! 	      add_flags = PURE_ZERO | DECIMAL_INT;
! 	    else if ((flags & CPP_N_INTEGER) && (flags & CPP_N_DECIMAL))
! 	      /* -Wxor-used-as-pow is only active for LHS of ^ expressed
! 		 as a decimal integer. */
! 	      add_flags = DECIMAL_INT;
  	    *value = interpret_integer (tok, flags, &overflow);
  	    break;
  
*************** interpret_float (const cpp_token *token,
*** 954,959 ****
--- 974,983 ----
  	  pedwarn (input_location, OPT_Wpedantic, "non-standard suffix on floating constant");
  
  	type = c_common_type_for_mode (mode, 0);
+ 	/* For Q suffix, prefer float128t_type_node (__float128) type
+ 	   over float128_type_node (_Float128) type if they are distinct.  */
+ 	if (type == float128_type_node && float128t_type_node)
+ 	  type = float128t_type_node;
  	gcc_assert (type);
        }
      else if ((flags & (CPP_N_FLOATN | CPP_N_FLOATNX)) != 0)
*************** interpret_float (const cpp_token *token,
*** 973,980 ****
  	    error ("unsupported non-standard suffix on floating constant");
  	    return error_mark_node;
  	  }
  	else
! 	  pedwarn (input_location, OPT_Wpedantic, "non-standard suffix on floating constant");
        }
      else if ((flags & CPP_N_WIDTH) == CPP_N_LARGE)
        type = long_double_type_node;
--- 997,1029 ----
  	    error ("unsupported non-standard suffix on floating constant");
  	    return error_mark_node;
  	  }
+ 	else if (c_dialect_cxx () && !extended)
+ 	  {
+ 	    if (cxx_dialect < cxx23)
+ 	      pedwarn (input_location, OPT_Wpedantic,
+ 		       "%<f%d%> or %<F%d%> suffix on floating constant only "
+ 		       "available with %<-std=c++2b%> or %<-std=gnu++2b%>",
+ 		       n, n);
+ 	  }
  	else
! 	  pedwarn (input_location, OPT_Wpedantic,
! 		   "non-standard suffix on floating constant");
!       }
!     else if ((flags & CPP_N_BFLOAT16) != 0)
!       {
! 	type = bfloat16_type_node;
! 	if (type == NULL_TREE)
! 	  {
! 	    error ("unsupported non-standard suffix on floating constant");
! 	    return error_mark_node;
! 	  }
! 	if (!c_dialect_cxx ())
! 	  pedwarn (input_location, OPT_Wpedantic,
! 		   "non-standard suffix on floating constant");
! 	else if (cxx_dialect < cxx23)
! 	  pedwarn (input_location, OPT_Wpedantic,
! 		   "%<bf16%> or %<BF16%> suffix on floating constant only "
! 		   "available with %<-std=c++2b%> or %<-std=gnu++2b%>");
        }
      else if ((flags & CPP_N_WIDTH) == CPP_N_LARGE)
        type = long_double_type_node;
*************** lex_string (const cpp_token *tok, tree *
*** 1352,1358 ****
  	default:
  	case CPP_STRING:
  	case CPP_UTF8STRING:
! 	  value = build_string (1, "");
  	  break;
  	case CPP_STRING16:
  	  value = build_string (TYPE_PRECISION (char16_type_node)
--- 1401,1414 ----
  	default:
  	case CPP_STRING:
  	case CPP_UTF8STRING:
! 	  if (type == CPP_UTF8STRING && flag_char8_t)
! 	    {
! 	      value = build_string (TYPE_PRECISION (char8_type_node)
! 				    / TYPE_PRECISION (char_type_node),
! 				    "");  /* char8_t is 8 bits */
! 	    }
! 	  else
! 	    value = build_string (1, "");
  	  break;
  	case CPP_STRING16:
  	  value = build_string (TYPE_PRECISION (char16_type_node)
*************** lex_charconst (const cpp_token *token)
*** 1425,1433 ****
      type = char16_type_node;
    else if (token->type == CPP_UTF8CHAR)
      {
!       if (!c_dialect_cxx ())
! 	type = unsigned_char_type_node;
!       else if (flag_char8_t)
          type = char8_type_node;
        else
          type = char_type_node;
--- 1481,1487 ----
      type = char16_type_node;
    else if (token->type == CPP_UTF8CHAR)
      {
!       if (flag_char8_t)
          type = char8_type_node;
        else
          type = char_type_node;
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-objc.h gcc-13.1.0/gcc/c-family/c-objc.h
*** gcc-12.2.0/gcc/c-family/c-objc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-objc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of Objective-C front-end entry points used for C and C++.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of Objective-C front-end entry points used for C and C++.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-omp.cc gcc-13.1.0/gcc/c-family/c-omp.cc
*** gcc-12.2.0/gcc/c-family/c-omp.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-omp.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* This file contains routines to construct OpenACC and OpenMP constructs,
     called from parsing in the C and C++ front ends.
  
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Richard Henderson <rth@redhat.com>,
  		  Diego Novillo <dnovillo@redhat.com>.
  
--- 1,7 ----
  /* This file contains routines to construct OpenACC and OpenMP constructs,
     called from parsing in the C and C++ front ends.
  
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Richard Henderson <rth@redhat.com>,
  		  Diego Novillo <dnovillo@redhat.com>.
  
*************** along with GCC; see the file COPYING3.
*** 36,42 ****
  #include "gimplify.h"
  #include "langhooks.h"
  #include "bitmap.h"
- #include "gimple-fold.h"
  
  
  /* Complete a #pragma oacc wait construct.  LOC is the location of
--- 36,41 ----
*************** c_finish_omp_depobj (location_t loc, tre
*** 715,722 ****
  
    if (clause)
      {
!       gcc_assert (TREE_CODE (clause) == OMP_CLAUSE
! 		  && OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_DEPEND);
        if (OMP_CLAUSE_CHAIN (clause))
  	error_at (OMP_CLAUSE_LOCATION (clause),
  		  "more than one locator in %<depend%> clause on %<depobj%> "
--- 714,730 ----
  
    if (clause)
      {
!       gcc_assert (TREE_CODE (clause) == OMP_CLAUSE);
!       if (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_DOACROSS)
! 	{
! 	  error_at (OMP_CLAUSE_LOCATION (clause),
! 		    "%<depend(%s)%> is only allowed in %<omp ordered%>",
! 		    OMP_CLAUSE_DOACROSS_KIND (clause)
! 		    == OMP_CLAUSE_DOACROSS_SOURCE
! 		    ? "source" : "sink");
! 	  return;
! 	}
!       gcc_assert (OMP_CLAUSE_CODE (clause) == OMP_CLAUSE_DEPEND);
        if (OMP_CLAUSE_CHAIN (clause))
  	error_at (OMP_CLAUSE_LOCATION (clause),
  		  "more than one locator in %<depend%> clause on %<depobj%> "
*************** c_finish_omp_depobj (location_t loc, tre
*** 728,744 ****
  		    "%<depobj%> dependence type specified in %<depend%> "
  		    "clause on %<depobj%> construct");
  	  return;
- 	case OMP_CLAUSE_DEPEND_SOURCE:
- 	case OMP_CLAUSE_DEPEND_SINK:
- 	  error_at (OMP_CLAUSE_LOCATION (clause),
- 		    "%<depend(%s)%> is only allowed in %<omp ordered%>",
- 		    OMP_CLAUSE_DEPEND_KIND (clause) == OMP_CLAUSE_DEPEND_SOURCE
- 		    ? "source" : "sink");
- 	  return;
  	case OMP_CLAUSE_DEPEND_IN:
  	case OMP_CLAUSE_DEPEND_OUT:
  	case OMP_CLAUSE_DEPEND_INOUT:
  	case OMP_CLAUSE_DEPEND_MUTEXINOUTSET:
  	  kind = OMP_CLAUSE_DEPEND_KIND (clause);
  	  t = OMP_CLAUSE_DECL (clause);
  	  gcc_assert (t);
--- 736,746 ----
  		    "%<depobj%> dependence type specified in %<depend%> "
  		    "clause on %<depobj%> construct");
  	  return;
  	case OMP_CLAUSE_DEPEND_IN:
  	case OMP_CLAUSE_DEPEND_OUT:
  	case OMP_CLAUSE_DEPEND_INOUT:
  	case OMP_CLAUSE_DEPEND_MUTEXINOUTSET:
+ 	case OMP_CLAUSE_DEPEND_INOUTSET:
  	  kind = OMP_CLAUSE_DEPEND_KIND (clause);
  	  t = OMP_CLAUSE_DECL (clause);
  	  gcc_assert (t);
*************** c_finish_omp_depobj (location_t loc, tre
*** 757,763 ****
  	      t = build2 (COMPOUND_EXPR, TREE_TYPE (t1), TREE_OPERAND (t, 0),
  			  t1);
  	    }
! 	  else
  	    t = build_fold_addr_expr (t);
  	  break;
  	default:
--- 759,765 ----
  	      t = build2 (COMPOUND_EXPR, TREE_TYPE (t1), TREE_OPERAND (t, 0),
  			  t1);
  	    }
! 	  else if (t != null_pointer_node)
  	    t = build_fold_addr_expr (t);
  	  break;
  	default:
*************** c_finish_omp_depobj (location_t loc, tre
*** 765,771 ****
  	}
      }
    else
!     gcc_assert (kind != OMP_CLAUSE_DEPEND_SOURCE);
  
    if (depobj == error_mark_node)
      return;
--- 767,773 ----
  	}
      }
    else
!     gcc_assert (kind != OMP_CLAUSE_DEPEND_INVALID);
  
    if (depobj == error_mark_node)
      return;
*************** c_finish_omp_depobj (location_t loc, tre
*** 797,802 ****
--- 799,807 ----
      case OMP_CLAUSE_DEPEND_MUTEXINOUTSET:
        k = GOMP_DEPEND_MUTEXINOUTSET;
        break;
+     case OMP_CLAUSE_DEPEND_INOUTSET:
+       k = GOMP_DEPEND_INOUTSET;
+       break;
      case OMP_CLAUSE_DEPEND_LAST:
        k = -1;
        break;
*************** c_omp_is_loop_iterator (tree decl, struc
*** 1306,1315 ****
      else if (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST
  	     && TREE_CHAIN (TREE_VEC_ELT (d->declv, i))
  	     && (TREE_CODE (TREE_CHAIN (TREE_VEC_ELT (d->declv, i)))
! 		 == TREE_VEC)
! 	     && decl == TREE_VEC_ELT (TREE_CHAIN (TREE_VEC_ELT (d->declv,
! 						  i)), 2))
!       return TREE_VEC_LENGTH (d->declv);
    return -1;
  }
  
--- 1311,1321 ----
      else if (TREE_CODE (TREE_VEC_ELT (d->declv, i)) == TREE_LIST
  	     && TREE_CHAIN (TREE_VEC_ELT (d->declv, i))
  	     && (TREE_CODE (TREE_CHAIN (TREE_VEC_ELT (d->declv, i)))
! 		 == TREE_VEC))
!       for (int j = 2;
! 	   j < TREE_VEC_LENGTH (TREE_CHAIN (TREE_VEC_ELT (d->declv, i))); j++)
! 	if (decl == TREE_VEC_ELT (TREE_CHAIN (TREE_VEC_ELT (d->declv, i)), j))
! 	  return TREE_VEC_LENGTH (d->declv);
    return -1;
  }
  
*************** c_omp_split_clauses (location_t loc, enu
*** 1872,1877 ****
--- 1878,1889 ----
  	case OMP_CLAUSE_DEPEND:
  	  s = C_OMP_CLAUSE_SPLIT_TARGET;
  	  break;
+ 	case OMP_CLAUSE_DOACROSS:
+ 	  /* This can happen with invalid depend(source) or
+ 	     depend(sink:vec) on target combined with other constructs.  */
+ 	  gcc_assert (OMP_CLAUSE_DOACROSS_DEPEND (clauses));
+ 	  s = C_OMP_CLAUSE_SPLIT_TARGET;
+ 	  break;
  	case OMP_CLAUSE_NUM_TEAMS:
  	  s = C_OMP_CLAUSE_SPLIT_TEAMS;
  	  break;
*************** c_omp_adjust_map_clauses (tree clauses,
*** 3086,3108 ****
      }
  }
  
! static const struct c_omp_directive omp_directives[] = {
    /* Keep this alphabetically sorted by the first word.  Non-null second/third
       if any should precede null ones.  */
    { "allocate", nullptr, nullptr, PRAGMA_OMP_ALLOCATE,
      C_OMP_DIR_DECLARATIVE, false },
!   /* { "assume", nullptr, nullptr, PRAGMA_OMP_ASSUME,
!     C_OMP_DIR_INFORMATIONAL, false }, */
!   /* { "assumes", nullptr, nullptr, PRAGMA_OMP_ASSUMES,
!     C_OMP_DIR_INFORMATIONAL, false }, */
    { "atomic", nullptr, nullptr, PRAGMA_OMP_ATOMIC,
      C_OMP_DIR_CONSTRUCT, false },
    { "barrier", nullptr, nullptr, PRAGMA_OMP_BARRIER,
      C_OMP_DIR_STANDALONE, false },
!   /* { "begin", "assumes", nullptr, PRAGMA_OMP_BEGIN,
!     C_OMP_DIR_INFORMATIONAL, false }, */
!   /* { "begin", "declare", "target", PRAGMA_OMP_BEGIN,
!     C_OMP_DIR_DECLARATIVE, false }, */
    /* { "begin", "declare", "variant", PRAGMA_OMP_BEGIN,
      C_OMP_DIR_DECLARATIVE, false }, */
    /* { "begin", "metadirective", nullptr, PRAGMA_OMP_BEGIN,
--- 3098,3120 ----
      }
  }
  
! const struct c_omp_directive c_omp_directives[] = {
    /* Keep this alphabetically sorted by the first word.  Non-null second/third
       if any should precede null ones.  */
    { "allocate", nullptr, nullptr, PRAGMA_OMP_ALLOCATE,
      C_OMP_DIR_DECLARATIVE, false },
!   { "assume", nullptr, nullptr, PRAGMA_OMP_ASSUME,
!     C_OMP_DIR_INFORMATIONAL, false },
!   { "assumes", nullptr, nullptr, PRAGMA_OMP_ASSUMES,
!     C_OMP_DIR_INFORMATIONAL, false },
    { "atomic", nullptr, nullptr, PRAGMA_OMP_ATOMIC,
      C_OMP_DIR_CONSTRUCT, false },
    { "barrier", nullptr, nullptr, PRAGMA_OMP_BARRIER,
      C_OMP_DIR_STANDALONE, false },
!   { "begin", "assumes", nullptr, PRAGMA_OMP_BEGIN,
!     C_OMP_DIR_INFORMATIONAL, false },
!   { "begin", "declare", "target", PRAGMA_OMP_BEGIN,
!     C_OMP_DIR_DECLARATIVE, false },
    /* { "begin", "declare", "variant", PRAGMA_OMP_BEGIN,
      C_OMP_DIR_DECLARATIVE, false }, */
    /* { "begin", "metadirective", nullptr, PRAGMA_OMP_BEGIN,
*************** static const struct c_omp_directive omp_
*** 3129,3137 ****
      C_OMP_DIR_CONSTRUCT, false },  */
    { "distribute", nullptr, nullptr, PRAGMA_OMP_DISTRIBUTE,
      C_OMP_DIR_CONSTRUCT, true },
!   /* { "end", "assumes", nullptr, PRAGMA_OMP_END,
!     C_OMP_DIR_INFORMATIONAL, false }, */
!   { "end", "declare", "target", PRAGMA_OMP_END_DECLARE_TARGET,
      C_OMP_DIR_DECLARATIVE, false },
    /* { "end", "declare", "variant", PRAGMA_OMP_END,
      C_OMP_DIR_DECLARATIVE, false }, */
--- 3141,3149 ----
      C_OMP_DIR_CONSTRUCT, false },  */
    { "distribute", nullptr, nullptr, PRAGMA_OMP_DISTRIBUTE,
      C_OMP_DIR_CONSTRUCT, true },
!   { "end", "assumes", nullptr, PRAGMA_OMP_END,
!     C_OMP_DIR_INFORMATIONAL, false },
!   { "end", "declare", "target", PRAGMA_OMP_END,
      C_OMP_DIR_DECLARATIVE, false },
    /* { "end", "declare", "variant", PRAGMA_OMP_END,
      C_OMP_DIR_DECLARATIVE, false }, */
*************** const struct c_omp_directive *
*** 3213,3238 ****
  c_omp_categorize_directive (const char *first, const char *second,
  			    const char *third)
  {
!   const size_t n_omp_directives = ARRAY_SIZE (omp_directives);
    for (size_t i = 0; i < n_omp_directives; i++)
      {
!       if ((unsigned char) omp_directives[i].first[0]
  	  < (unsigned char) first[0])
  	continue;
!       if ((unsigned char) omp_directives[i].first[0]
  	  > (unsigned char) first[0])
  	break;
!       if (strcmp (omp_directives[i].first, first))
  	continue;
!       if (!omp_directives[i].second)
! 	return &omp_directives[i];
!       if (!second || strcmp (omp_directives[i].second, second))
  	continue;
!       if (!omp_directives[i].third)
! 	return &omp_directives[i];
!       if (!third || strcmp (omp_directives[i].third, third))
  	continue;
!       return &omp_directives[i];
      }
    return NULL;
  }
--- 3225,3250 ----
  c_omp_categorize_directive (const char *first, const char *second,
  			    const char *third)
  {
!   const size_t n_omp_directives = ARRAY_SIZE (c_omp_directives);
    for (size_t i = 0; i < n_omp_directives; i++)
      {
!       if ((unsigned char) c_omp_directives[i].first[0]
  	  < (unsigned char) first[0])
  	continue;
!       if ((unsigned char) c_omp_directives[i].first[0]
  	  > (unsigned char) first[0])
  	break;
!       if (strcmp (c_omp_directives[i].first, first))
  	continue;
!       if (!c_omp_directives[i].second)
! 	return &c_omp_directives[i];
!       if (!second || strcmp (c_omp_directives[i].second, second))
  	continue;
!       if (!c_omp_directives[i].third)
! 	return &c_omp_directives[i];
!       if (!third || strcmp (c_omp_directives[i].third, third))
  	continue;
!       return &c_omp_directives[i];
      }
    return NULL;
  }
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-opts.cc gcc-13.1.0/gcc/c-family/c-opts.cc
*** gcc-12.2.0/gcc/c-family/c-opts.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-opts.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C/ObjC/C++ command line option handling.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Neil Booth.
  
  This file is part of GCC.
--- 1,5 ----
  /* C/ObjC/C++ command line option handling.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Neil Booth.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 41,46 ****
--- 41,47 ----
  #include "mkdeps.h"
  #include "dumpfile.h"
  #include "file-prefix-map.h"    /* add_*_prefix_map()  */
+ #include "context.h"
  
  #ifndef DOLLARS_IN_IDENTIFIERS
  # define DOLLARS_IN_IDENTIFIERS true
*************** static size_t deferred_count;
*** 100,109 ****
  /* Number of deferred options scanned for -include.  */
  static size_t include_cursor;
  
- /* Dump files/flags to use during parsing.  */
- static FILE *original_dump_file = NULL;
- static dump_flags_t original_dump_flags;
- 
  /* Whether any standard preincluded header has been preincluded.  */
  static bool done_preinclude;
  
--- 101,106 ----
*************** c_common_handle_option (size_t scode, co
*** 303,309 ****
        result = false;
        break;
  
!     case OPT__output_pch_:
        pch_file = arg;
        break;
  
--- 300,306 ----
        result = false;
        break;
  
!     case OPT__output_pch:
        pch_file = arg;
        break;
  
*************** c_common_handle_option (size_t scode, co
*** 537,542 ****
--- 534,540 ----
  
      case OPT_finput_charset_:
        cpp_opts->input_charset = arg;
+       cpp_opts->cpp_input_charset_explicit = 1;
        break;
  
      case OPT_ftemplate_depth_:
*************** c_common_post_options (const char **pfil
*** 814,830 ****
    C_COMMON_OVERRIDE_OPTIONS;
  #endif
  
!   /* Excess precision other than "fast" requires front-end
!      support.  */
!   if (c_dialect_cxx ())
!     {
!       if (flag_excess_precision == EXCESS_PRECISION_STANDARD)
! 	sorry ("%<-fexcess-precision=standard%> for C++");
!       flag_excess_precision = EXCESS_PRECISION_FAST;
!     }
!   else if (flag_excess_precision == EXCESS_PRECISION_DEFAULT)
      flag_excess_precision = (flag_iso ? EXCESS_PRECISION_STANDARD
! 				      : EXCESS_PRECISION_FAST);
  
    /* ISO C restricts floating-point expression contraction to within
       source-language expressions (-ffp-contract=on, currently an alias
--- 812,820 ----
    C_COMMON_OVERRIDE_OPTIONS;
  #endif
  
!   if (flag_excess_precision == EXCESS_PRECISION_DEFAULT)
      flag_excess_precision = (flag_iso ? EXCESS_PRECISION_STANDARD
! 			     : EXCESS_PRECISION_FAST);
  
    /* ISO C restricts floating-point expression contraction to within
       source-language expressions (-ffp-contract=on, currently an alias
*************** c_common_post_options (const char **pfil
*** 977,983 ****
  
    /* Change flag_abi_version to be the actual current ABI level, for the
       benefit of c_cpp_builtins, and to make comparison simpler.  */
!   const int latest_abi_version = 17;
    /* Generate compatibility aliases for ABI v13 (8.2) by default.  */
    const int abi_compat_default = 13;
  
--- 967,973 ----
  
    /* Change flag_abi_version to be the actual current ABI level, for the
       benefit of c_cpp_builtins, and to make comparison simpler.  */
!   const int latest_abi_version = 18;
    /* Generate compatibility aliases for ABI v13 (8.2) by default.  */
    const int abi_compat_default = 13;
  
*************** c_common_post_options (const char **pfil
*** 1049,1054 ****
--- 1039,1051 ----
    else if (warn_narrowing == -1)
      warn_narrowing = 0;
  
+   if (cxx_dialect >= cxx20)
+     {
+       /* Don't warn about C++20 compatibility changes in C++20 or later.  */
+       warn_cxx20_compat = 0;
+       cpp_opts->cpp_warn_cxx20_compat = 0;
+     }
+ 
    /* C++17 has stricter evaluation order requirements; let's use some of them
       for earlier C++ as well, so chaining works as expected.  */
    if (c_dialect_cxx ()
*************** c_common_post_options (const char **pfil
*** 1062,1070 ****
    if (flag_sized_deallocation == -1)
      flag_sized_deallocation = (cxx_dialect >= cxx14);
  
!   /* char8_t support is new in C++20.  */
    if (flag_char8_t == -1)
!     flag_char8_t = (cxx_dialect >= cxx20);
  
    if (flag_extern_tls_init)
      {
--- 1059,1072 ----
    if (flag_sized_deallocation == -1)
      flag_sized_deallocation = (cxx_dialect >= cxx14);
  
!   /* Pedwarn about invalid constexpr functions before C++23.  */
!   if (warn_invalid_constexpr == -1)
!     warn_invalid_constexpr = (cxx_dialect < cxx23);
! 
!   /* char8_t support is implicitly enabled in C++20 and C2X.  */
    if (flag_char8_t == -1)
!     flag_char8_t = (cxx_dialect >= cxx20) || flag_isoc2x;
!   cpp_opts->unsigned_utf8char = flag_char8_t ? 1 : cpp_opts->unsigned_char;
  
    if (flag_extern_tls_init)
      {
*************** c_common_post_options (const char **pfil
*** 1092,1100 ****
       work with the standard.  */
    if (cxx_dialect >= cxx20 || flag_concepts_ts)
      flag_concepts = 1;
-   else if (flag_concepts)
-     /* For -std=c++17 -fconcepts, imply -fconcepts-ts.  */
-     flag_concepts_ts = 1;
  
    if (num_in_fnames > 1)
      error ("too many filenames given; type %<%s %s%> for usage",
--- 1094,1099 ----
*************** c_common_post_options (const char **pfil
*** 1147,1152 ****
--- 1146,1162 ----
      lang_hooks.preprocess_options (parse_in);
    cpp_post_options (parse_in);
    init_global_opts_from_cpp (&global_options, cpp_get_options (parse_in));
+   /* For C++23 and explicit -finput-charset=UTF-8, turn on -Winvalid-utf8
+      by default and make it a pedwarn unless -Wno-invalid-utf8.  */
+   if (cxx_dialect >= cxx23
+       && cpp_opts->cpp_input_charset_explicit
+       && strcmp (cpp_opts->input_charset, "UTF-8") == 0
+       && (cpp_opts->cpp_warn_invalid_utf8
+ 	  || !global_options_set.x_warn_invalid_utf8))
+     {
+       global_options.x_warn_invalid_utf8 = 1;
+       cpp_opts->cpp_warn_invalid_utf8 = cpp_opts->cpp_pedantic ? 2 : 1;
+     }
  
    /* Let diagnostics infrastructure know how to convert input files the same
       way libcpp will do it, namely using the configured input charset and
*************** c_common_init (void)
*** 1226,1240 ****
  void
  c_common_parse_file (void)
  {
!   unsigned int i;
! 
!   i = 0;
!   for (;;)
      {
        c_finish_options ();
        /* Open the dump file to use for the original dump output
           here, to be used during parsing for the current file.  */
!       original_dump_file = dump_begin (TDI_original, &original_dump_flags);
        pch_init ();
        push_file_scope ();
        c_parse_file ();
--- 1236,1248 ----
  void
  c_common_parse_file (void)
  {
!   auto dumps = g->get_dumps ();
!   for (unsigned int i = 0;;)
      {
        c_finish_options ();
        /* Open the dump file to use for the original dump output
           here, to be used during parsing for the current file.  */
!       dumps->dump_start (TDI_original, &dump_flags);
        pch_init ();
        push_file_scope ();
        c_parse_file ();
*************** c_common_parse_file (void)
*** 1248,1276 ****
        cpp_clear_file_cache (parse_in);
        this_input_filename
  	= cpp_read_main_file (parse_in, in_fnames[i]);
-       if (original_dump_file)
-         {
-           dump_end (TDI_original, original_dump_file);
-           original_dump_file = NULL;
-         }
        /* If an input file is missing, abandon further compilation.
  	 cpplib has issued a diagnostic.  */
        if (!this_input_filename)
  	break;
      }
  
    c_parse_final_cleanups ();
! }
! 
! /* Returns the appropriate dump file for PHASE to dump with FLAGS.  */
! 
! FILE *
! get_dump_info (int phase, dump_flags_t *flags)
! {
!   gcc_assert (phase == TDI_original);
! 
!   *flags = original_dump_flags;
!   return original_dump_file;
  }
  
  /* Common finish hook for the C, ObjC and C++ front ends.  */
--- 1256,1270 ----
        cpp_clear_file_cache (parse_in);
        this_input_filename
  	= cpp_read_main_file (parse_in, in_fnames[i]);
        /* If an input file is missing, abandon further compilation.
  	 cpplib has issued a diagnostic.  */
        if (!this_input_filename)
  	break;
+       dumps->dump_finish (TDI_original);
      }
  
    c_parse_final_cleanups ();
!   dumps->dump_finish (TDI_original);
  }
  
  /* Common finish hook for the C, ObjC and C++ front ends.  */
*************** c_common_finish (void)
*** 1300,1305 ****
--- 1294,1305 ----
  	}
      }
  
+   /* When we call cpp_finish (), it may generate some diagnostics using
+      locations it remembered from the preprocessing phase, e.g. for
+      -Wunused-macros.  So inform c_cpp_diagnostic () not to override those
+      locations with input_location, which would be incorrect now.  */
+   override_libcpp_locations = false;
+ 
    /* For performance, avoid tearing down cpplib's internal structures
       with cpp_destroy ().  */
    cpp_finish (parse_in, deps_stream);
*************** c_finish_options (void)
*** 1477,1483 ****
      {
        const line_map_ordinary *bltin_map
  	= linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0,
! 					       _("<built-in>"), 0));
        cb_file_change (parse_in, bltin_map);
        linemap_line_start (line_table, 0, 1);
  
--- 1477,1483 ----
      {
        const line_map_ordinary *bltin_map
  	= linemap_check_ordinary (linemap_add (line_table, LC_RENAME, 0,
! 					       special_fname_builtin (), 0));
        cb_file_change (parse_in, bltin_map);
        linemap_line_start (line_table, 0, 1);
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-pch.cc gcc-13.1.0/gcc/c-family/c-pch.cc
*** gcc-12.2.0/gcc/c-family/c-pch.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-pch.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Precompiled header implementation for the C languages.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Precompiled header implementation for the C languages.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-ppoutput.cc gcc-13.1.0/gcc/c-family/c-ppoutput.cc
*** gcc-12.2.0/gcc/c-family/c-ppoutput.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-ppoutput.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Preprocess only, using cpplib.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Written by Per Bothner, 1994-95.
  
     This program is free software; you can redistribute it and/or modify it
--- 1,5 ----
  /* Preprocess only, using cpplib.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Written by Per Bothner, 1994-95.
  
     This program is free software; you can redistribute it and/or modify it
***************
*** 25,30 ****
--- 25,32 ----
  #include "c-pragma.h"		/* For parse_in.  */
  #include "file-prefix-map.h"    /* remap_macro_filename()  */
  
+ class token_streamer;
+ 
  /* Encapsulates state used to convert a stream of tokens into a text
     file.  */
  static struct
*************** static struct
*** 38,43 ****
--- 40,47 ----
    bool prev_was_system_token;	/* True if the previous token was a
  				   system token.*/
    const char *src_file;		/* Current source file.  */
+   token_streamer *streamer;     /* Instance of class token_streamer using this
+ 				   object.  */
  } print;
  
  /* Defined and undefined macros being queued for output with -dU at
*************** preprocess_file (cpp_reader *pfile)
*** 110,115 ****
--- 114,127 ----
      putc ('\n', print.outf);
  }
  
+ /* Don't emit #pragma or #ident directives if we are processing
+    assembly language; the assembler may choke on them.  */
+ static bool
+ should_output_pragmas ()
+ {
+   return cpp_get_options (parse_in)->lang != CLK_ASM;
+ }
+ 
  /* Set up the callbacks as appropriate.  */
  void
  init_pp_output (FILE *out_stream)
*************** init_pp_output (FILE *out_stream)
*** 119,127 ****
    if (!flag_no_output)
      {
        cb->line_change = cb_line_change;
!       /* Don't emit #pragma or #ident directives if we are processing
! 	 assembly language; the assembler may choke on them.  */
!       if (cpp_get_options (parse_in)->lang != CLK_ASM)
  	{
  	  cb->ident      = cb_ident;
  	  cb->def_pragma = cb_def_pragma;
--- 131,137 ----
    if (!flag_no_output)
      {
        cb->line_change = cb_line_change;
!       if (should_output_pragmas ())
  	{
  	  cb->ident      = cb_ident;
  	  cb->def_pragma = cb_def_pragma;
*************** init_pp_output (FILE *out_stream)
*** 163,168 ****
--- 173,179 ----
    print.first_time = 1;
    print.src_file = "";
    print.prev_was_system_token = false;
+   print.streamer = nullptr;
  }
  
  // FIXME: Ideally we'd just turn the entirety of the print struct into
*************** class token_streamer
*** 173,188 ****
    bool avoid_paste;
    bool do_line_adjustments;
    bool in_pragma;
-   bool line_marker_emitted;
  
   public:
    token_streamer (cpp_reader *pfile)
      :avoid_paste (false),
      do_line_adjustments (cpp_get_options (pfile)->lang != CLK_ASM
  			 && !flag_no_line_commands),
!     in_pragma (false),
!     line_marker_emitted (false)
      {
      }
  
    void begin_pragma () 
--- 184,199 ----
    bool avoid_paste;
    bool do_line_adjustments;
    bool in_pragma;
  
   public:
    token_streamer (cpp_reader *pfile)
      :avoid_paste (false),
      do_line_adjustments (cpp_get_options (pfile)->lang != CLK_ASM
  			 && !flag_no_line_commands),
!     in_pragma (false)
      {
+       gcc_assert (!print.streamer);
+       print.streamer = this;
      }
  
    void begin_pragma () 
*************** void
*** 197,202 ****
--- 208,217 ----
  token_streamer::stream (cpp_reader *pfile, const cpp_token *token,
  			location_t loc)
  {
+   /* Keep input_location up to date, since it is needed for processing early
+      pragmas such as #pragma GCC diagnostic.  */
+   input_location = loc;
+ 
    if (token->type == CPP_PADDING)
      {
        avoid_paste = true;
*************** token_streamer::stream (cpp_reader *pfil
*** 210,216 ****
--- 225,238 ----
    if (token->type == CPP_EOF)
      return;
  
+   /* Keep track when we move into and out of system locations.  */
+   const bool is_system_token = in_system_header_at (loc);
+   const bool system_state_changed
+     = (is_system_token != print.prev_was_system_token);
+   print.prev_was_system_token = is_system_token;
+ 
    /* Subtle logic to output a space if and only if necessary.  */
+   bool line_marker_emitted = false;
    if (avoid_paste)
      {
        unsigned src_line = LOCATION_LINE (loc);
*************** token_streamer::stream (cpp_reader *pfil
*** 235,241 ****
  	  print.printed = true;
  	}
      }
!   else if (token->flags & PREV_WHITE)
      {
        unsigned src_line = LOCATION_LINE (loc);
  
--- 257,263 ----
  	  print.printed = true;
  	}
      }
!   else if (token->flags & PREV_WHITE && token->type != CPP_PRAGMA)
      {
        unsigned src_line = LOCATION_LINE (loc);
  
*************** token_streamer::stream (cpp_reader *pfil
*** 252,273 ****
    print.prev = token;
    if (token->type == CPP_PRAGMA)
      {
-       const char *space;
-       const char *name;
- 
-       line_marker_emitted = maybe_print_line (token->src_loc);
-       fputs ("#pragma ", print.outf);
-       c_pp_lookup_pragma (token->val.pragma, &space, &name);
-       if (space)
- 	fprintf (print.outf, "%s %s", space, name);
-       else
- 	fprintf (print.outf, "%s", name);
-       print.printed = true;
        in_pragma = true;
      }
    else if (token->type == CPP_PRAGMA_EOL)
      {
!       maybe_print_line (UNKNOWN_LOCATION);
        in_pragma = false;
      }
    else
--- 274,301 ----
    print.prev = token;
    if (token->type == CPP_PRAGMA)
      {
        in_pragma = true;
+       if (should_output_pragmas ())
+ 	{
+ 	  const char *space;
+ 	  const char *name;
+ 
+ 	  line_marker_emitted = maybe_print_line (token->src_loc);
+ 	  fputs ("#pragma ", print.outf);
+ 	  c_pp_lookup_pragma (token->val.pragma, &space, &name);
+ 	  if (space)
+ 	    fprintf (print.outf, "%s %s", space, name);
+ 	  else
+ 	    fprintf (print.outf, "%s", name);
+ 	  print.printed = true;
+ 	}
+       if (token->val.pragma >= PRAGMA_FIRST_EXTERNAL)
+ 	c_pp_invoke_early_pragma_handler (token->val.pragma);
      }
    else if (token->type == CPP_PRAGMA_EOL)
      {
!       if (should_output_pragmas ())
! 	maybe_print_line (UNKNOWN_LOCATION);
        in_pragma = false;
      }
    else
*************** token_streamer::stream (cpp_reader *pfil
*** 278,295 ****
        if (do_line_adjustments
  	  && !in_pragma
  	  && !line_marker_emitted
! 	  && print.prev_was_system_token != !!in_system_header_at (loc)
  	  && !is_location_from_builtin_token (loc))
  	/* The system-ness of this token is different from the one of
  	   the previous token.  Let's emit a line change to mark the
  	   new system-ness before we emit the token.  */
  	{
! 	  do_line_change (pfile, token, loc, false);
! 	  print.prev_was_system_token = !!in_system_header_at (loc);
  	}
-       cpp_output_token (token, print.outf);
-       line_marker_emitted = false;
-       print.printed = true;
      }
  
    /* CPP_COMMENT tokens and raw-string literal tokens can have
--- 306,324 ----
        if (do_line_adjustments
  	  && !in_pragma
  	  && !line_marker_emitted
! 	  && system_state_changed
  	  && !is_location_from_builtin_token (loc))
  	/* The system-ness of this token is different from the one of
  	   the previous token.  Let's emit a line change to mark the
  	   new system-ness before we emit the token.  */
  	{
! 	  line_marker_emitted = do_line_change (pfile, token, loc, false);
! 	}
!       if (!in_pragma || should_output_pragmas ())
! 	{
! 	  cpp_output_token (token, print.outf);
! 	  print.printed = true;
  	}
      }
  
    /* CPP_COMMENT tokens and raw-string literal tokens can have
*************** scan_translation_unit_directives_only (c
*** 404,410 ****
      lang_hooks.preprocess_token (pfile, NULL, streamer.filter);
  }
  
! /* Adjust print.src_line for newlines embedded in output.  */
  static void
  account_for_newlines (const unsigned char *str, size_t len)
  {
--- 433,447 ----
      lang_hooks.preprocess_token (pfile, NULL, streamer.filter);
  }
  
! /* Adjust print.src_line for newlines embedded in output.  For example, if a raw
!    string literal contains newlines, then we need to increment our notion of the
!    current line to keep in sync and avoid outputting a line marker
!    unnecessarily.  If a raw string literal containing newlines is the result of
!    macro expansion, then we have the opposite problem, where the token takes up
!    more lines in the output than it did in the input, and hence a line marker is
!    needed to restore the correct state for subsequent lines.  In this case,
!    incrementing print.src_line still does the job, because it will cause us to
!    emit the line marker the next time a token is streamed.  */
  static void
  account_for_newlines (const unsigned char *str, size_t len)
  {
*************** do_line_change (cpp_reader *pfile, const
*** 561,568 ****
       one space per column greater than 2, since scan_translation_unit
       will provide a space if PREV_WHITE.  Don't bother trying to
       reconstruct tabs; we can't get it right in general, and nothing
!      ought to care.  Some things do care; the fault lies with them.  */
!   if (!CPP_OPTION (pfile, traditional))
      {
        int spaces = LOCATION_COLUMN (src_loc) - 2;
        print.printed = true;
--- 598,609 ----
       one space per column greater than 2, since scan_translation_unit
       will provide a space if PREV_WHITE.  Don't bother trying to
       reconstruct tabs; we can't get it right in general, and nothing
!      ought to care.  Some things do care; the fault lies with them.
! 
!      Also do not output the spaces if this is a CPP_PRAGMA token.  In this
!      case, libcpp has provided the location of the first token after #pragma,
!      so we would start at the wrong column.  */
!   if (!CPP_OPTION (pfile, traditional) && token->type != CPP_PRAGMA)
      {
        int spaces = LOCATION_COLUMN (src_loc) - 2;
        print.printed = true;
*************** cb_def_pragma (cpp_reader *pfile, locati
*** 782,787 ****
--- 823,838 ----
    print.src_line++;
  }
  
+ /* Stream a token as if we had seen it directly ourselves; needed
+    in case a token was lexed externally, e.g. while processing a
+    pragma.  */
+ void
+ c_pp_stream_token (cpp_reader *pfile, const cpp_token *tok, location_t loc)
+ {
+   gcc_assert (print.streamer);
+   print.streamer->stream (pfile, tok, loc);
+ }
+ 
  /* Dump out the hash table.  */
  static int
  dump_macro (cpp_reader *pfile, cpp_hashnode *node, void *v ATTRIBUTE_UNUSED)
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-pragma.cc gcc-13.1.0/gcc/c-family/c-pragma.cc
*** gcc-12.2.0/gcc/c-family/c-pragma.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-pragma.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Handle #pragma, system V.4 style.  Supports #pragma weak and #pragma pack.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Handle #pragma, system V.4 style.  Supports #pragma weak and #pragma pack.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** handle_pragma_visibility (cpp_reader *)
*** 764,902 ****
      warning (OPT_Wpragmas, "junk at end of %<#pragma GCC visibility%>");
  }
  
  static void
! handle_pragma_diagnostic(cpp_reader *)
  {
    tree x;
!   location_t loc;
!   enum cpp_ttype token = pragma_lex (&x, &loc);
!   if (token != CPP_NAME)
      {
!       warning_at (loc, OPT_Wpragmas,
! 		  "missing %<error%>, %<warning%>, %<ignored%>, %<push%>, "
! 		  "%<pop%>, or %<ignored_attributes%> after "
! 		  "%<#pragma GCC diagnostic%>");
!       return;
      }
  
!   diagnostic_t kind;
!   const char *kind_string = IDENTIFIER_POINTER (x);
!   if (strcmp (kind_string, "error") == 0)
!     kind = DK_ERROR;
!   else if (strcmp (kind_string, "warning") == 0)
!     kind = DK_WARNING;
!   else if (strcmp (kind_string, "ignored") == 0)
!     kind = DK_IGNORED;
!   else if (strcmp (kind_string, "push") == 0)
      {
!       diagnostic_push_diagnostics (global_dc, input_location);
!       return;
      }
!   else if (strcmp (kind_string, "pop") == 0)
      {
!       diagnostic_pop_diagnostics (global_dc, input_location);
        return;
      }
!   else if (strcmp (kind_string, "ignored_attributes") == 0)
      {
!       token = pragma_lex (&x, &loc);
!       if (token != CPP_STRING)
! 	{
! 	  warning_at (loc, OPT_Wpragmas,
! 		      "missing attribute name after %<#pragma GCC diagnostic "
! 		      "ignored_attributes%>");
! 	  return;
! 	}
!       char *args = xstrdup (TREE_STRING_POINTER (x));
!       const size_t l = strlen (args);
!       if (l == 0)
! 	{
! 	  warning_at (loc, OPT_Wpragmas, "missing argument to %<#pragma GCC "
! 		      "diagnostic ignored_attributes%>");
! 	  free (args);
  	  return;
! 	}
!       else if (args[l - 1] == ',')
  	{
! 	  warning_at (loc, OPT_Wpragmas, "trailing %<,%> in arguments for "
! 		      "%<#pragma GCC diagnostic ignored_attributes%>");
! 	  free (args);
  	  return;
  	}
!       auto_vec<char *> v;
!       for (char *p = strtok (args, ","); p; p = strtok (NULL, ","))
! 	v.safe_push (p);
!       handle_ignored_attributes_option (&v);
!       free (args);
!       return;
!     }
!   else
!     {
!       warning_at (loc, OPT_Wpragmas,
! 		  "expected %<error%>, %<warning%>, %<ignored%>, %<push%>, "
! 		  "%<pop%>, %<ignored_attributes%> after "
! 		  "%<#pragma GCC diagnostic%>");
!       return;
!     }
  
!   token = pragma_lex (&x, &loc);
!   if (token != CPP_STRING)
!     {
!       warning_at (loc, OPT_Wpragmas,
! 		  "missing option after %<#pragma GCC diagnostic%> kind");
        return;
      }
  
!   const char *option_string = TREE_STRING_POINTER (x);
    unsigned int lang_mask = c_common_option_lang_mask () | CL_COMMON;
    /* option_string + 1 to skip the initial '-' */
!   unsigned int option_index = find_opt (option_string + 1, lang_mask);
    if (option_index == OPT_SPECIAL_unknown)
      {
!       auto_diagnostic_group d;
!       if (warning_at (loc, OPT_Wpragmas,
! 		      "unknown option after %<#pragma GCC diagnostic%> kind"))
  	{
! 	  option_proposer op;
! 	  const char *hint = op.suggest_option (option_string + 1);
! 	  if (hint)
! 	    inform (loc, "did you mean %<-%s%>?", hint);
  	}
        return;
      }
    else if (!(cl_options[option_index].flags & CL_WARNING))
      {
!       warning_at (loc, OPT_Wpragmas,
! 		  "%qs is not an option that controls warnings", option_string);
        return;
      }
    else if (!(cl_options[option_index].flags & lang_mask))
      {
!       char *ok_langs = write_langs (cl_options[option_index].flags);
!       char *bad_lang = write_langs (c_common_option_lang_mask ());
!       warning_at (loc, OPT_Wpragmas,
! 		  "option %qs is valid for %s but not for %s",
! 		  option_string, ok_langs, bad_lang);
!       free (ok_langs);
!       free (bad_lang);
        return;
      }
  
-   struct cl_option_handlers handlers;
-   set_default_handlers (&handlers, NULL);
    const char *arg = NULL;
    if (cl_options[option_index].flags & CL_JOINED)
!     arg = option_string + 1 + cl_options[option_index].opt_len;
    /* FIXME: input_location isn't the best location here, but it is
       what we used to do here before and changing it breaks e.g.
       PR69543 and PR69558.  */
!   control_warning_option (option_index, (int) kind,
! 			  arg, kind != DK_IGNORED,
  			  input_location, lang_mask, &handlers,
  			  &global_options, &global_options_set,
  			  global_dc);
  }
  
  /*  Parse #pragma GCC target (xxx) to set target specific options.  */
  static void
  handle_pragma_target(cpp_reader *)
--- 764,1087 ----
      warning (OPT_Wpragmas, "junk at end of %<#pragma GCC visibility%>");
  }
  
+ /* Helper routines for parsing #pragma GCC diagnostic.  */
+ class pragma_diagnostic_data
+ {
+   pragma_diagnostic_data (const pragma_diagnostic_data &) = delete;
+   pragma_diagnostic_data& operator= (const pragma_diagnostic_data &) = delete;
+ 
+ public:
+   bool valid;
+   location_t loc_kind, loc_option;
+   enum pd_kind_t
+     {
+       PK_INVALID,
+       PK_PUSH,
+       PK_POP,
+       PK_IGNORED_ATTRIBUTES,
+       PK_DIAGNOSTIC,
+     } pd_kind;
+   diagnostic_t diagnostic_kind;
+   const char *kind_str;
+   const char *option_str;
+   bool own_option_str;
+ 
+   pragma_diagnostic_data () { clear (); }
+   void clear ()
+   {
+     valid = false;
+     loc_kind = loc_option = UNKNOWN_LOCATION;
+     pd_kind = PK_INVALID;
+     diagnostic_kind = DK_UNSPECIFIED;
+     kind_str = option_str = nullptr;
+     own_option_str = false;
+   }
+ 
+   ~pragma_diagnostic_data ()
+   {
+     if (own_option_str && option_str)
+       XDELETEVEC (const_cast<char *> (option_str));
+   }
+ 
+   void set_kind (const char *kind_string)
+   {
+     kind_str = kind_string;
+ 
+     pd_kind = PK_INVALID;
+     diagnostic_kind = DK_UNSPECIFIED;
+     if (strcmp (kind_str, "push") == 0)
+       pd_kind = PK_PUSH;
+     else if (strcmp (kind_str, "pop") == 0)
+       pd_kind = PK_POP;
+     else if (strcmp (kind_str, "ignored_attributes") == 0)
+       pd_kind = PK_IGNORED_ATTRIBUTES;
+     else if (strcmp (kind_str, "error") == 0)
+       {
+ 	pd_kind = PK_DIAGNOSTIC;
+ 	diagnostic_kind = DK_ERROR;
+       }
+     else if (strcmp (kind_str, "warning") == 0)
+       {
+ 	pd_kind = PK_DIAGNOSTIC;
+ 	diagnostic_kind = DK_WARNING;
+       }
+     else if (strcmp (kind_str, "ignored") == 0)
+       {
+ 	pd_kind = PK_DIAGNOSTIC;
+ 	diagnostic_kind = DK_IGNORED;
+       }
+   }
+ 
+   bool needs_option () const
+   {
+     return pd_kind == PK_IGNORED_ATTRIBUTES
+       || pd_kind == PK_DIAGNOSTIC;
+   }
+ 
+ };
+ 
+ /* When compiling normally, use pragma_lex () to obtain the needed tokens.
+    This will call into either the C or C++ frontends as appropriate.  */
+ 
  static void
! pragma_diagnostic_lex_normal (pragma_diagnostic_data *result)
  {
+   result->clear ();
    tree x;
!   auto ttype = pragma_lex (&x, &result->loc_kind);
!   if (ttype != CPP_NAME)
!     return;
!   result->set_kind (IDENTIFIER_POINTER (x));
!   if (result->pd_kind == pragma_diagnostic_data::PK_INVALID)
!     return;
! 
!   if (result->needs_option ())
      {
!       ttype = pragma_lex (&x, &result->loc_option);
!       if (ttype != CPP_STRING)
! 	return;
!       result->option_str = TREE_STRING_POINTER (x);
      }
  
!   result->valid = true;
! }
! 
! /* When preprocessing only, pragma_lex () is not available, so obtain the
!    tokens directly from libcpp.  We also need to inform the token streamer
!    about all tokens we lex ourselves here, so it outputs them too; this is
!    done by calling c_pp_stream_token () for each.
! 
!    ???  If we need to support more pragmas in the future, maybe initialize
!    this_parser with the pragma tokens and call pragma_lex () instead?  */
! 
! static void
! pragma_diagnostic_lex_pp (pragma_diagnostic_data *result)
! {
!   result->clear ();
! 
!   auto tok = cpp_get_token_with_location (parse_in, &result->loc_kind);
!   c_pp_stream_token (parse_in, tok, result->loc_kind);
!   if (!(tok->type == CPP_NAME || tok->type == CPP_KEYWORD))
!     return;
!   const unsigned char *const kind_u = cpp_token_as_text (parse_in, tok);
!   result->set_kind ((const char *)kind_u);
!   if (result->pd_kind == pragma_diagnostic_data::PK_INVALID)
!     return;
! 
!   if (result->needs_option ())
      {
!       tok = cpp_get_token_with_location (parse_in, &result->loc_option);
!       c_pp_stream_token (parse_in, tok, result->loc_option);
!       if (tok->type != CPP_STRING)
! 	return;
!       cpp_string str;
!       if (!cpp_interpret_string_notranslate (parse_in, &tok->val.str, 1, &str,
! 					     CPP_STRING)
! 	  || !str.len)
! 	return;
!       result->option_str = (const char *)str.text;
!       result->own_option_str = true;
      }
! 
!   result->valid = true;
! }
! 
! /* Handle #pragma GCC diagnostic.  Early mode is used by frontends (such as C++)
!    that do not process the deferred pragma while they are consuming tokens; they
!    can use early mode to make sure diagnostics affecting the preprocessor itself
!    are correctly modified by the #pragma.  */
! template<bool early, bool is_pp> static void
! handle_pragma_diagnostic_impl ()
! {
!   static const bool want_diagnostics = (is_pp || !early);
! 
!   pragma_diagnostic_data data;
!   if (is_pp)
!     pragma_diagnostic_lex_pp (&data);
!   else
!     pragma_diagnostic_lex_normal (&data);
! 
!   if (!data.kind_str)
      {
!       if (want_diagnostics)
! 	warning_at (data.loc_kind, OPT_Wpragmas,
! 		    "missing %<error%>, %<warning%>, %<ignored%>, %<push%>, "
! 		    "%<pop%>, or %<ignored_attributes%> after "
! 		    "%<#pragma GCC diagnostic%>");
        return;
      }
! 
!   switch (data.pd_kind)
      {
! 
!     case pragma_diagnostic_data::PK_PUSH:
!       diagnostic_push_diagnostics (global_dc, input_location);
!       return;
! 
!     case pragma_diagnostic_data::PK_POP:
!       diagnostic_pop_diagnostics (global_dc, input_location);
!       return;
! 
!     case pragma_diagnostic_data::PK_IGNORED_ATTRIBUTES:
!       {
! 	if (early)
  	  return;
! 	if (!data.option_str)
! 	  {
! 	    warning_at (data.loc_option, OPT_Wpragmas,
! 		       "missing attribute name after %<#pragma GCC diagnostic "
! 			"ignored_attributes%>");
! 	    return;
! 	  }
! 	char *args = xstrdup (data.option_str);
! 	const size_t l = strlen (args);
! 	if (l == 0)
! 	  {
! 	    warning_at (data.loc_option, OPT_Wpragmas,
! 			"missing argument to %<#pragma GCC "
! 			"diagnostic ignored_attributes%>");
! 	    free (args);
! 	    return;
! 	  }
! 	else if (args[l - 1] == ',')
! 	  {
! 	    warning_at (data.loc_option, OPT_Wpragmas,
! 			"trailing %<,%> in arguments for "
! 			"%<#pragma GCC diagnostic ignored_attributes%>");
! 	    free (args);
! 	    return;
! 	  }
! 	auto_vec<char *> v;
! 	for (char *p = strtok (args, ","); p; p = strtok (NULL, ","))
! 	  v.safe_push (p);
! 	handle_ignored_attributes_option (&v);
! 	free (args);
! 	return;
!       }
! 
!     case pragma_diagnostic_data::PK_DIAGNOSTIC:
!       if (!data.option_str)
  	{
! 	  if (want_diagnostics)
! 	    warning_at (data.loc_option, OPT_Wpragmas,
! 			"missing option after %<#pragma GCC diagnostic%> kind");
  	  return;
  	}
!       break;
  
!     default:
!       if (want_diagnostics)
! 	warning_at (data.loc_kind, OPT_Wpragmas,
! 		    "expected %<error%>, %<warning%>, %<ignored%>, %<push%>, "
! 		    "%<pop%>, %<ignored_attributes%> after "
! 		    "%<#pragma GCC diagnostic%>");
        return;
+ 
      }
  
!   gcc_assert (data.pd_kind == pragma_diagnostic_data::PK_DIAGNOSTIC);
!   gcc_assert (data.valid);
! 
    unsigned int lang_mask = c_common_option_lang_mask () | CL_COMMON;
    /* option_string + 1 to skip the initial '-' */
!   unsigned int option_index = find_opt (data.option_str + 1, lang_mask);
! 
!   if (early && !c_option_is_from_cpp_diagnostics (option_index))
!     return;
! 
    if (option_index == OPT_SPECIAL_unknown)
      {
!       if (want_diagnostics)
  	{
! 	  auto_diagnostic_group d;
! 	  if (warning_at (data.loc_option, OPT_Wpragmas,
! 			"unknown option after %<#pragma GCC diagnostic%> kind"))
! 	    {
! 	      option_proposer op;
! 	      const char *hint = op.suggest_option (data.option_str + 1);
! 	      if (hint)
! 		inform (data.loc_option, "did you mean %<-%s%>?", hint);
! 	    }
  	}
        return;
      }
    else if (!(cl_options[option_index].flags & CL_WARNING))
      {
!       if (want_diagnostics)
! 	warning_at (data.loc_option, OPT_Wpragmas,
! 		    "%qs is not an option that controls warnings",
! 		    data.option_str);
        return;
      }
    else if (!(cl_options[option_index].flags & lang_mask))
      {
!       if (want_diagnostics)
! 	{
! 	  char *ok_langs = write_langs (cl_options[option_index].flags);
! 	  char *bad_lang = write_langs (c_common_option_lang_mask ());
! 	  warning_at (data.loc_option, OPT_Wpragmas,
! 		      "option %qs is valid for %s but not for %s",
! 		      data.option_str, ok_langs, bad_lang);
! 	  free (ok_langs);
! 	  free (bad_lang);
! 	}
        return;
      }
  
    const char *arg = NULL;
    if (cl_options[option_index].flags & CL_JOINED)
!     arg = data.option_str + 1 + cl_options[option_index].opt_len;
! 
!   struct cl_option_handlers handlers;
!   set_default_handlers (&handlers, NULL);
    /* FIXME: input_location isn't the best location here, but it is
       what we used to do here before and changing it breaks e.g.
       PR69543 and PR69558.  */
!   control_warning_option (option_index, (int) data.diagnostic_kind,
! 			  arg, data.diagnostic_kind != DK_IGNORED,
  			  input_location, lang_mask, &handlers,
  			  &global_options, &global_options_set,
  			  global_dc);
  }
  
+ static void
+ handle_pragma_diagnostic (cpp_reader *)
+ {
+   handle_pragma_diagnostic_impl<false, false> ();
+ }
+ 
+ static void
+ handle_pragma_diagnostic_early (cpp_reader *)
+ {
+   handle_pragma_diagnostic_impl<true, false> ();
+ }
+ 
+ static void
+ handle_pragma_diagnostic_early_pp (cpp_reader *)
+ {
+   handle_pragma_diagnostic_impl<true, true> ();
+ }
+ 
  /*  Parse #pragma GCC target (xxx) to set target specific options.  */
  static void
  handle_pragma_target(cpp_reader *)
*************** handle_pragma_message (cpp_reader *)
*** 1205,1210 ****
--- 1390,1398 ----
      }
    else if (token == CPP_STRING)
      message = x;
+   else if (token == CPP_STRING_USERDEF)
+     GCC_BAD ("string literal with user-defined suffix is invalid in this "
+ 	     "context");
    else
      GCC_BAD ("expected a string after %<#pragma message%>");
  
*************** handle_pragma_message (cpp_reader *)
*** 1218,1223 ****
--- 1406,1417 ----
  	    TREE_STRING_POINTER (message));
  }
  
+ /* Ignore a no-op pragma that GCC recognizes, but which has no effect.  */
+ static void
+ handle_pragma_ignore (cpp_reader *)
+ {
+ }
+ 
  /* Mark whether the current location is valid for a STDC pragma.  */
  
  static bool valid_location_for_stdc_pragma;
*************** handle_pragma_float_const_decimal64 (cpp
*** 1332,1345 ****
  
  static vec<internal_pragma_handler> registered_pragmas;
  
! struct pragma_ns_name
  {
    const char *space;
    const char *name;
  };
  
  
! static vec<pragma_ns_name> registered_pp_pragmas;
  
  struct omp_pragma_def { const char *name; unsigned int id; };
  static const struct omp_pragma_def oacc_pragmas[] = {
--- 1526,1540 ----
  
  static vec<internal_pragma_handler> registered_pragmas;
  
! struct pragma_pp_data
  {
    const char *space;
    const char *name;
+   pragma_handler_1arg early_handler;
  };
  
  
! static vec<pragma_pp_data> registered_pp_pragmas;
  
  struct omp_pragma_def { const char *name; unsigned int id; };
  static const struct omp_pragma_def oacc_pragmas[] = {
*************** static const struct omp_pragma_def oacc_
*** 1360,1373 ****
  };
  static const struct omp_pragma_def omp_pragmas[] = {
    { "allocate", PRAGMA_OMP_ALLOCATE },
    { "atomic", PRAGMA_OMP_ATOMIC },
    { "barrier", PRAGMA_OMP_BARRIER },
    { "cancel", PRAGMA_OMP_CANCEL },
    { "cancellation", PRAGMA_OMP_CANCELLATION_POINT },
    { "critical", PRAGMA_OMP_CRITICAL },
    { "depobj", PRAGMA_OMP_DEPOBJ },
    { "error", PRAGMA_OMP_ERROR },
!   { "end", PRAGMA_OMP_END_DECLARE_TARGET },
    { "flush", PRAGMA_OMP_FLUSH },
    { "nothing", PRAGMA_OMP_NOTHING },
    { "requires", PRAGMA_OMP_REQUIRES },
--- 1555,1570 ----
  };
  static const struct omp_pragma_def omp_pragmas[] = {
    { "allocate", PRAGMA_OMP_ALLOCATE },
+   { "assumes", PRAGMA_OMP_ASSUMES },
    { "atomic", PRAGMA_OMP_ATOMIC },
    { "barrier", PRAGMA_OMP_BARRIER },
+   { "begin", PRAGMA_OMP_BEGIN },
    { "cancel", PRAGMA_OMP_CANCEL },
    { "cancellation", PRAGMA_OMP_CANCELLATION_POINT },
    { "critical", PRAGMA_OMP_CRITICAL },
    { "depobj", PRAGMA_OMP_DEPOBJ },
    { "error", PRAGMA_OMP_ERROR },
!   { "end", PRAGMA_OMP_END },
    { "flush", PRAGMA_OMP_FLUSH },
    { "nothing", PRAGMA_OMP_NOTHING },
    { "requires", PRAGMA_OMP_REQUIRES },
*************** static const struct omp_pragma_def omp_p
*** 1382,1387 ****
--- 1579,1585 ----
    { "threadprivate", PRAGMA_OMP_THREADPRIVATE }
  };
  static const struct omp_pragma_def omp_pragmas_simd[] = {
+   { "assume", PRAGMA_OMP_ASSUME },
    { "declare", PRAGMA_OMP_DECLARE },
    { "distribute", PRAGMA_OMP_DISTRIBUTE },
    { "for", PRAGMA_OMP_FOR },
*************** static const struct omp_pragma_def omp_p
*** 1400,1407 ****
  void
  c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
  {
!   const int n_oacc_pragmas = sizeof (oacc_pragmas) / sizeof (*oacc_pragmas);
!   const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas);
    const int n_omp_pragmas_simd = sizeof (omp_pragmas_simd)
  				 / sizeof (*omp_pragmas);
    int i;
--- 1598,1605 ----
  void
  c_pp_lookup_pragma (unsigned int id, const char **space, const char **name)
  {
!   const int n_oacc_pragmas = ARRAY_SIZE (oacc_pragmas);
!   const int n_omp_pragmas = ARRAY_SIZE (omp_pragmas);
    const int n_omp_pragmas_simd = sizeof (omp_pragmas_simd)
  				 / sizeof (*omp_pragmas);
    int i;
*************** c_register_pragma_1 (const char *space,
*** 1452,1465 ****
  
    if (flag_preprocess_only)
      {
!       pragma_ns_name ns_name;
! 
!       if (!allow_expansion)
  	return;
  
!       ns_name.space = space;
!       ns_name.name = name;
!       registered_pp_pragmas.safe_push (ns_name);
        id = registered_pp_pragmas.length ();
        id += PRAGMA_FIRST_EXTERNAL - 1;
      }
--- 1650,1664 ----
  
    if (flag_preprocess_only)
      {
!       if (cpp_get_options (parse_in)->directives_only
! 	  || !(allow_expansion || ihandler.early_handler.handler_1arg))
  	return;
  
!       pragma_pp_data pp_data;
!       pp_data.space = space;
!       pp_data.name = name;
!       pp_data.early_handler = ihandler.early_handler.handler_1arg;
!       registered_pp_pragmas.safe_push (pp_data);
        id = registered_pp_pragmas.length ();
        id += PRAGMA_FIRST_EXTERNAL - 1;
      }
*************** void
*** 1485,1493 ****
--- 1684,1699 ----
  c_register_pragma (const char *space, const char *name,
                     pragma_handler_1arg handler)
  {
+   c_register_pragma_with_early_handler (space, name, handler, nullptr);
+ }
+ void c_register_pragma_with_early_handler (const char *space, const char *name,
+ 					   pragma_handler_1arg handler,
+ 					   pragma_handler_1arg early_handler)
+ {
    internal_pragma_handler ihandler;
  
    ihandler.handler.handler_1arg = handler;
+   ihandler.early_handler.handler_1arg = early_handler;
    ihandler.extra_data = false;
    ihandler.data = NULL;
    c_register_pragma_1 (space, name, ihandler, false);
*************** c_register_pragma_with_data (const char
*** 1504,1509 ****
--- 1710,1716 ----
    internal_pragma_handler ihandler;
  
    ihandler.handler.handler_2arg = handler;
+   ihandler.early_handler.handler_2arg = nullptr;
    ihandler.extra_data = true;
    ihandler.data = data;
    c_register_pragma_1 (space, name, ihandler, false);
*************** c_register_pragma_with_expansion (const
*** 1523,1528 ****
--- 1730,1736 ----
    internal_pragma_handler ihandler;
  
    ihandler.handler.handler_1arg = handler;
+   ihandler.early_handler.handler_1arg = nullptr;
    ihandler.extra_data = false;
    ihandler.data = NULL;
    c_register_pragma_1 (space, name, ihandler, true);
*************** c_register_pragma_with_expansion_and_dat
*** 1544,1549 ****
--- 1752,1758 ----
    internal_pragma_handler ihandler;
  
    ihandler.handler.handler_2arg = handler;
+   ihandler.early_handler.handler_2arg = nullptr;
    ihandler.extra_data = true;
    ihandler.data = data;
    c_register_pragma_1 (space, name, ihandler, true);
*************** c_invoke_pragma_handler (unsigned int id
*** 1570,1608 ****
      }
  }
  
  /* Set up front-end pragmas.  */
  void
  init_pragma (void)
  {
!   if (flag_openacc)
      {
!       const int n_oacc_pragmas
! 	= sizeof (oacc_pragmas) / sizeof (*oacc_pragmas);
!       int i;
  
!       for (i = 0; i < n_oacc_pragmas; ++i)
! 	cpp_register_deferred_pragma (parse_in, "acc", oacc_pragmas[i].name,
! 				      oacc_pragmas[i].id, true, true);
!     }
  
!   if (flag_openmp)
!     {
!       const int n_omp_pragmas = sizeof (omp_pragmas) / sizeof (*omp_pragmas);
!       int i;
  
!       for (i = 0; i < n_omp_pragmas; ++i)
! 	cpp_register_deferred_pragma (parse_in, "omp", omp_pragmas[i].name,
! 				      omp_pragmas[i].id, true, true);
!     }
!   if (flag_openmp || flag_openmp_simd)
!     {
!       const int n_omp_pragmas_simd = sizeof (omp_pragmas_simd)
! 				     / sizeof (*omp_pragmas);
!       int i;
  
!       for (i = 0; i < n_omp_pragmas_simd; ++i)
! 	cpp_register_deferred_pragma (parse_in, "omp", omp_pragmas_simd[i].name,
! 				      omp_pragmas_simd[i].id, true, true);
      }
  
    if (!flag_preprocess_only)
--- 1779,1853 ----
      }
  }
  
+ /* In contrast to the normal handler, the early handler is optional.  */
+ void
+ c_invoke_early_pragma_handler (unsigned int id)
+ {
+   internal_pragma_handler *ihandler;
+   pragma_handler_1arg handler_1arg;
+   pragma_handler_2arg handler_2arg;
+ 
+   id -= PRAGMA_FIRST_EXTERNAL;
+   ihandler = &registered_pragmas[id];
+   if (ihandler->extra_data)
+     {
+       handler_2arg = ihandler->early_handler.handler_2arg;
+       if (handler_2arg)
+ 	handler_2arg (parse_in, ihandler->data);
+     }
+   else
+     {
+       handler_1arg = ihandler->early_handler.handler_1arg;
+       if (handler_1arg)
+ 	handler_1arg (parse_in);
+     }
+ }
+ 
+ void
+ c_pp_invoke_early_pragma_handler (unsigned int id)
+ {
+   const auto data = &registered_pp_pragmas[id - PRAGMA_FIRST_EXTERNAL];
+   if (data->early_handler)
+     data->early_handler (parse_in);
+ }
+ 
  /* Set up front-end pragmas.  */
  void
  init_pragma (void)
  {
! 
!   if (!cpp_get_options (parse_in)->directives_only)
      {
!       if (flag_openacc)
! 	{
! 	  const int n_oacc_pragmas = ARRAY_SIZE (oacc_pragmas);
! 	  int i;
  
! 	  for (i = 0; i < n_oacc_pragmas; ++i)
! 	    cpp_register_deferred_pragma (parse_in, "acc", oacc_pragmas[i].name,
! 					  oacc_pragmas[i].id, true, true);
! 	}
  
!       if (flag_openmp)
! 	{
! 	  const int n_omp_pragmas = ARRAY_SIZE (omp_pragmas);
! 	  int i;
  
! 	  for (i = 0; i < n_omp_pragmas; ++i)
! 	    cpp_register_deferred_pragma (parse_in, "omp", omp_pragmas[i].name,
! 					  omp_pragmas[i].id, true, true);
! 	}
!       if (flag_openmp || flag_openmp_simd)
! 	{
! 	  const int n_omp_pragmas_simd
! 	    = sizeof (omp_pragmas_simd) / sizeof (*omp_pragmas);
! 	  int i;
  
! 	  for (i = 0; i < n_omp_pragmas_simd; ++i)
! 	    cpp_register_deferred_pragma (parse_in, "omp",
! 					  omp_pragmas_simd[i].name,
! 					  omp_pragmas_simd[i].id, true, true);
! 	}
      }
  
    if (!flag_preprocess_only)
*************** init_pragma (void)
*** 1626,1638 ****
  
    c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
  
!   c_register_pragma ("GCC", "diagnostic", handle_pragma_diagnostic);
    c_register_pragma ("GCC", "target", handle_pragma_target);
    c_register_pragma ("GCC", "optimize", handle_pragma_optimize);
    c_register_pragma ("GCC", "push_options", handle_pragma_push_options);
    c_register_pragma ("GCC", "pop_options", handle_pragma_pop_options);
    c_register_pragma ("GCC", "reset_options", handle_pragma_reset_options);
  
    c_register_pragma ("STDC", "FLOAT_CONST_DECIMAL64",
  		     handle_pragma_float_const_decimal64);
  
--- 1871,1893 ----
  
    c_register_pragma ("GCC", "visibility", handle_pragma_visibility);
  
!   if (flag_preprocess_only)
!     c_register_pragma_with_early_handler ("GCC", "diagnostic",
! 					  nullptr,
! 					  handle_pragma_diagnostic_early_pp);
!   else
!     c_register_pragma_with_early_handler ("GCC", "diagnostic",
! 					  handle_pragma_diagnostic,
! 					  handle_pragma_diagnostic_early);
    c_register_pragma ("GCC", "target", handle_pragma_target);
    c_register_pragma ("GCC", "optimize", handle_pragma_optimize);
    c_register_pragma ("GCC", "push_options", handle_pragma_push_options);
    c_register_pragma ("GCC", "pop_options", handle_pragma_pop_options);
    c_register_pragma ("GCC", "reset_options", handle_pragma_reset_options);
  
+   c_register_pragma (0, "region", handle_pragma_ignore);
+   c_register_pragma (0, "endregion", handle_pragma_ignore);
+ 
    c_register_pragma ("STDC", "FLOAT_CONST_DECIMAL64",
  		     handle_pragma_float_const_decimal64);
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-pragma.h gcc-13.1.0/gcc/c-family/c-pragma.h
*** gcc-12.2.0/gcc/c-family/c-pragma.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-pragma.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Pragma related interfaces.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Pragma related interfaces.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum pragma_kind {
*** 45,52 ****
--- 45,55 ----
    /* PRAGMA_OMP__START_ should be equal to the first PRAGMA_OMP_* code.  */
    PRAGMA_OMP_ALLOCATE,
    PRAGMA_OMP__START_ = PRAGMA_OMP_ALLOCATE,
+   PRAGMA_OMP_ASSUME,
+   PRAGMA_OMP_ASSUMES,
    PRAGMA_OMP_ATOMIC,
    PRAGMA_OMP_BARRIER,
+   PRAGMA_OMP_BEGIN,
    PRAGMA_OMP_CANCEL,
    PRAGMA_OMP_CANCELLATION_POINT,
    PRAGMA_OMP_CRITICAL,
*************** enum pragma_kind {
*** 54,60 ****
    PRAGMA_OMP_DEPOBJ,
    PRAGMA_OMP_DISTRIBUTE,
    PRAGMA_OMP_ERROR,
!   PRAGMA_OMP_END_DECLARE_TARGET,
    PRAGMA_OMP_FLUSH,
    PRAGMA_OMP_FOR,
    PRAGMA_OMP_LOOP,
--- 57,63 ----
    PRAGMA_OMP_DEPOBJ,
    PRAGMA_OMP_DISTRIBUTE,
    PRAGMA_OMP_ERROR,
!   PRAGMA_OMP_END,
    PRAGMA_OMP_FLUSH,
    PRAGMA_OMP_FOR,
    PRAGMA_OMP_LOOP,
*************** enum pragma_kind {
*** 90,96 ****
  
  
  /* All clauses defined by OpenACC 2.0, and OpenMP 2.5, 3.0, 3.1, 4.0, 4.5, 5.0,
!    and 5.1.  Used internally by both C and C++ parsers.  */
  enum pragma_omp_clause {
    PRAGMA_OMP_CLAUSE_NONE = 0,
  
--- 93,99 ----
  
  
  /* All clauses defined by OpenACC 2.0, and OpenMP 2.5, 3.0, 3.1, 4.0, 4.5, 5.0,
!    5.1 and 5.2.  Used internally by both C and C++ parsers.  */
  enum pragma_omp_clause {
    PRAGMA_OMP_CLAUSE_NONE = 0,
  
*************** enum pragma_omp_clause {
*** 108,113 ****
--- 111,118 ----
    PRAGMA_OMP_CLAUSE_DEVICE,
    PRAGMA_OMP_CLAUSE_DEVICE_TYPE,
    PRAGMA_OMP_CLAUSE_DIST_SCHEDULE,
+   PRAGMA_OMP_CLAUSE_DOACROSS,
+   PRAGMA_OMP_CLAUSE_ENTER,
    PRAGMA_OMP_CLAUSE_FILTER,
    PRAGMA_OMP_CLAUSE_FINAL,
    PRAGMA_OMP_CLAUSE_FIRSTPRIVATE,
*************** union gen_pragma_handler {
*** 218,224 ****
  };
  /* Internally used to keep the data of the handler.  */
  struct internal_pragma_handler {
!   union gen_pragma_handler handler;
    /* Permits to know if handler is a pragma_handler_1arg (extra_data is false)
       or a pragma_handler_2arg (extra_data is true).  */
    bool extra_data;
--- 223,229 ----
  };
  /* Internally used to keep the data of the handler.  */
  struct internal_pragma_handler {
!   union gen_pragma_handler handler, early_handler;
    /* Permits to know if handler is a pragma_handler_1arg (extra_data is false)
       or a pragma_handler_2arg (extra_data is true).  */
    bool extra_data;
*************** extern void c_register_pragma_with_expan
*** 241,246 ****
--- 246,262 ----
                                                         void *data);
  extern void c_invoke_pragma_handler (unsigned int);
  
+ /* Early pragma handlers run in addition to the normal ones.  They can be used
+    by frontends such as C++ that may want to process some pragmas during lexing
+    before they start processing them.  */
+ extern void
+ c_register_pragma_with_early_handler (const char *space, const char *name,
+ 				      pragma_handler_1arg handler,
+ 				      pragma_handler_1arg early_handler);
+ extern void c_invoke_early_pragma_handler (unsigned int);
+ extern void c_pp_invoke_early_pragma_handler (unsigned int);
+ 
+ 
  extern void maybe_apply_pragma_weak (tree);
  extern void maybe_apply_pending_pragma_weaks (void);
  extern tree maybe_apply_renaming_pragma (tree, tree);
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-pretty-print.cc gcc-13.1.0/gcc/c-family/c-pretty-print.cc
*** gcc-12.2.0/gcc/c-family/c-pretty-print.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-pretty-print.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines common to both C and C++ pretty-printers.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines common to both C and C++ pretty-printers.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
*************** pp_c_pointer (c_pretty_printer *pp, tree
*** 321,326 ****
--- 321,327 ----
        _Bool                          -- C99
        _Complex                       -- C99
        _Imaginary                     -- C99
+       nullptr_t                      -- C23
        struct-or-union-specifier
        enum-specifier
        typedef-name.
*************** c_pretty_printer::simple_type_specifier
*** 424,429 ****
--- 425,433 ----
        else
  	translate_string ("<anonymous>");
        break;
+     case NULLPTR_TYPE:
+       pp_c_ws_string (this, "nullptr_t");
+       break;
  
      default:
        pp_unsupported_tree (this, t);
*************** pp_c_specifier_qualifier_list (c_pretty_
*** 462,468 ****
  	  {
  	    pp_c_whitespace (pp);
  	    pp_c_left_paren (pp);
! 	    pp_c_attributes_display (pp, TYPE_ATTRIBUTES (pointee));
  	  }
  	else if (!c_dialect_cxx ())
  	  pp_c_whitespace (pp);
--- 466,477 ----
  	  {
  	    pp_c_whitespace (pp);
  	    pp_c_left_paren (pp);
! 	    /* If we're dealing with the GNU form of attributes, print this:
! 		 void (__attribute__((noreturn)) *f) ();
! 	       If it is the standard [[]] attribute, we'll print the attribute
! 	       in c_pretty_printer::direct_abstract_declarator/FUNCTION_TYPE.  */
! 	    if (!cxx11_attribute_p (TYPE_ATTRIBUTES (pointee)))
! 	      pp_c_attributes_display (pp, TYPE_ATTRIBUTES (pointee));
  	  }
  	else if (!c_dialect_cxx ())
  	  pp_c_whitespace (pp);
*************** c_pretty_printer::direct_abstract_declar
*** 591,596 ****
--- 600,612 ----
      case FUNCTION_TYPE:
        pp_c_parameter_type_list (this, t);
        direct_abstract_declarator (TREE_TYPE (t));
+       /* If this is the standard [[]] attribute, print
+ 	 void (*)() [[noreturn]];  */
+       if (cxx11_attribute_p (TYPE_ATTRIBUTES (t)))
+ 	{
+ 	  pp_space (this);
+ 	  pp_c_attributes_display (this, TYPE_ATTRIBUTES (t));
+ 	}
        break;
  
      case ARRAY_TYPE:
*************** c_pretty_printer::direct_abstract_declar
*** 678,683 ****
--- 694,700 ----
      case COMPLEX_TYPE:
      case TYPE_DECL:
      case ERROR_MARK:
+     case NULLPTR_TYPE:
        break;
  
      default:
*************** c_pretty_printer::declaration (tree t)
*** 845,876 ****
    pp_c_init_declarator (this, t);
  }
  
! /* Pretty-print ATTRIBUTES using GNU C extension syntax.  */
! 
! void
! pp_c_attributes (c_pretty_printer *pp, tree attributes)
! {
!   if (attributes == NULL_TREE)
!     return;
! 
!   pp_c_ws_string (pp, "__attribute__");
!   pp_c_left_paren (pp);
!   pp_c_left_paren (pp);
!   for (; attributes != NULL_TREE; attributes = TREE_CHAIN (attributes))
!     {
!       pp_tree_identifier (pp, TREE_PURPOSE (attributes));
!       if (TREE_VALUE (attributes))
! 	pp_c_call_argument_list (pp, TREE_VALUE (attributes));
! 
!       if (TREE_CHAIN (attributes))
! 	pp_separate_with (pp, ',');
!     }
!   pp_c_right_paren (pp);
!   pp_c_right_paren (pp);
! }
! 
! /* Pretty-print ATTRIBUTES using GNU C extension syntax for attributes
!    marked to be displayed on disgnostic.  */
  
  void
  pp_c_attributes_display (c_pretty_printer *pp, tree a)
--- 862,868 ----
    pp_c_init_declarator (this, t);
  }
  
! /* Pretty-print ATTRIBUTES marked to be displayed on diagnostic.  */
  
  void
  pp_c_attributes_display (c_pretty_printer *pp, tree a)
*************** pp_c_attributes_display (c_pretty_printe
*** 880,889 ****
    if (a == NULL_TREE)
      return;
  
    for (; a != NULL_TREE; a = TREE_CHAIN (a))
      {
!       const struct attribute_spec *as;
!       as = lookup_attribute_spec (TREE_PURPOSE (a));
        if (!as || as->affects_type_identity == false)
          continue;
        if (c_dialect_cxx ()
--- 872,883 ----
    if (a == NULL_TREE)
      return;
  
+   const bool std_p = cxx11_attribute_p (a);
+ 
    for (; a != NULL_TREE; a = TREE_CHAIN (a))
      {
!       const struct attribute_spec *as
! 	= lookup_attribute_spec (get_attribute_name (a));
        if (!as || as->affects_type_identity == false)
          continue;
        if (c_dialect_cxx ()
*************** pp_c_attributes_display (c_pretty_printe
*** 891,916 ****
  	/* In C++ transaction_safe is printed at the end of the declarator.  */
  	continue;
        if (is_first)
!        {
!          pp_c_ws_string (pp, "__attribute__");
!          pp_c_left_paren (pp);
!          pp_c_left_paren (pp);
!          is_first = false;
!        }
        else
!        {
!          pp_separate_with (pp, ',');
!        }
!       pp_tree_identifier (pp, TREE_PURPOSE (a));
        if (TREE_VALUE (a))
!        pp_c_call_argument_list (pp, TREE_VALUE (a));
      }
  
    if (!is_first)
      {
!       pp_c_right_paren (pp);
!       pp_c_right_paren (pp);
!       pp_c_whitespace (pp);
      }
  }
  
--- 885,931 ----
  	/* In C++ transaction_safe is printed at the end of the declarator.  */
  	continue;
        if (is_first)
! 	{
! 	  if (std_p)
! 	    {
! 	      pp_c_left_bracket (pp);
! 	      pp_c_left_bracket (pp);
! 	    }
! 	  else
! 	    {
! 	      pp_c_ws_string (pp, "__attribute__");
! 	      pp_c_left_paren (pp);
! 	      pp_c_left_paren (pp);
! 	    }
! 	  is_first = false;
! 	}
        else
! 	pp_separate_with (pp, ',');
!       tree ns;
!       if (std_p && (ns = get_attribute_namespace (a)))
! 	{
! 	  pp_tree_identifier (pp, ns);
! 	  pp_colon (pp);
! 	  pp_colon (pp);
! 	}
!       pp_tree_identifier (pp, get_attribute_name (a));
        if (TREE_VALUE (a))
! 	pp_c_call_argument_list (pp, TREE_VALUE (a));
      }
  
    if (!is_first)
      {
!       if (std_p)
! 	{
! 	  pp_c_right_bracket (pp);
! 	  pp_c_right_bracket (pp);
! 	}
!       else
! 	{
! 	  pp_c_right_paren (pp);
! 	  pp_c_right_paren (pp);
! 	  pp_c_whitespace (pp);
! 	}
      }
  }
  
*************** c_pretty_printer::constant (tree e)
*** 1219,1224 ****
--- 1234,1241 ----
  	  pp_c_character_constant (this, e);
  	else if (TREE_CODE (type) == ENUMERAL_TYPE)
  	  pp_c_enumeration_constant (this, e);
+ 	else if (NULLPTR_TYPE_P (type))
+ 	  pp_string (this, "nullptr");
  	else
  	  pp_c_integer_constant (this, e);
        }
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-pretty-print.h gcc-13.1.0/gcc/c-family/c-pretty-print.h
*** gcc-12.2.0/gcc/c-family/c-pretty-print.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-pretty-print.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Various declarations for the C and C++ pretty-printers.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Various declarations for the C and C++ pretty-printers.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Gabriel Dos Reis <gdr@integrable-solutions.net>
  
  This file is part of GCC.
*************** class c_pretty_printer : public pretty_p
*** 51,57 ****
  {
  public:
    c_pretty_printer ();
!   pretty_printer *clone () const OVERRIDE;
  
    // Format string, possibly translated.
    void translate_string (const char *);
--- 51,57 ----
  {
  public:
    c_pretty_printer ();
!   pretty_printer *clone () const override;
  
    // Format string, possibly translated.
    void translate_string (const char *);
*************** void pp_c_space_for_pointer_operator (c_
*** 119,125 ****
  /* Declarations.  */
  void pp_c_tree_decl_identifier (c_pretty_printer *, tree);
  void pp_c_function_definition (c_pretty_printer *, tree);
- void pp_c_attributes (c_pretty_printer *, tree);
  void pp_c_attributes_display (c_pretty_printer *, tree);
  void pp_c_cv_qualifiers (c_pretty_printer *pp, int qualifiers, bool func_type);
  void pp_c_type_qualifier_list (c_pretty_printer *, tree);
--- 119,124 ----
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-semantics.cc gcc-13.1.0/gcc/c-family/c-semantics.cc
*** gcc-12.2.0/gcc/c-family/c-semantics.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-semantics.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* This file contains subroutine used by the C front-end to construct GENERIC.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Written by Benjamin Chelf (chelf@codesourcery.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* This file contains subroutine used by the C front-end to construct GENERIC.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Written by Benjamin Chelf (chelf@codesourcery.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-spellcheck.cc gcc-13.1.0/gcc/c-family/c-spellcheck.cc
*** gcc-12.2.0/gcc/c-family/c-spellcheck.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-spellcheck.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Find near-matches for macros.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Find near-matches for macros.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-spellcheck.h gcc-13.1.0/gcc/c-family/c-spellcheck.h
*** gcc-12.2.0/gcc/c-family/c-spellcheck.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-spellcheck.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Find near-matches for macros.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Find near-matches for macros.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-target-def.h gcc-13.1.0/gcc/c-family/c-target-def.h
*** gcc-12.2.0/gcc/c-family/c-target-def.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-target-def.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default initializers for C-family target hooks.
!    Copyright (C) 2011-2022 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
--- 1,5 ----
  /* Default initializers for C-family target hooks.
!    Copyright (C) 2011-2023 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
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-target.def gcc-13.1.0/gcc/c-family/c-target.def
*** gcc-12.2.0/gcc/c-family/c-target.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-target.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target hook definitions for C-family front ends.
!    Copyright (C) 2001-2022 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
--- 1,5 ----
  /* Target hook definitions for C-family front ends.
!    Copyright (C) 2001-2023 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
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-target.h gcc-13.1.0/gcc/c-family/c-target.h
*** gcc-12.2.0/gcc/c-family/c-target.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-target.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Data structure definitions for target-specific C-family behavior.
!    Copyright (C) 2001-2022 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
--- 1,5 ----
  /* Data structure definitions for target-specific C-family behavior.
!    Copyright (C) 2001-2023 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
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-ubsan.cc gcc-13.1.0/gcc/c-family/c-ubsan.cc
*** gcc-12.2.0/gcc/c-family/c-ubsan.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-ubsan.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
*************** ubsan_instrument_division (location_t lo
*** 53,59 ****
    op0 = unshare_expr (op0);
    op1 = unshare_expr (op1);
  
!   if (TREE_CODE (type) == INTEGER_TYPE
        && sanitize_flags_p (SANITIZE_DIVIDE))
      t = fold_build2 (EQ_EXPR, boolean_type_node,
  		     op1, build_int_cst (type, 0));
--- 53,59 ----
    op0 = unshare_expr (op0);
    op1 = unshare_expr (op1);
  
!   if (INTEGRAL_TYPE_P (type)
        && sanitize_flags_p (SANITIZE_DIVIDE))
      t = fold_build2 (EQ_EXPR, boolean_type_node,
  		     op1, build_int_cst (type, 0));
*************** ubsan_instrument_division (location_t lo
*** 68,74 ****
      t = NULL_TREE;
  
    /* We check INT_MIN / -1 only for signed types.  */
!   if (TREE_CODE (type) == INTEGER_TYPE
        && sanitize_flags_p (SANITIZE_SI_OVERFLOW)
        && !TYPE_UNSIGNED (type))
      {
--- 68,74 ----
      t = NULL_TREE;
  
    /* We check INT_MIN / -1 only for signed types.  */
!   if (INTEGRAL_TYPE_P (type)
        && sanitize_flags_p (SANITIZE_SI_OVERFLOW)
        && !TYPE_UNSIGNED (type))
      {
*************** ubsan_instrument_division (location_t lo
*** 83,90 ****
  	  x = NULL_TREE;
  	  flag = SANITIZE_SI_OVERFLOW;
  	}
!       else if (flag_sanitize_undefined_trap_on_error
! 	       || (((flag_sanitize_recover & SANITIZE_DIVIDE) == 0)
  		   == ((flag_sanitize_recover & SANITIZE_SI_OVERFLOW) == 0)))
  	{
  	  t = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, t, x);
--- 83,91 ----
  	  x = NULL_TREE;
  	  flag = SANITIZE_SI_OVERFLOW;
  	}
!       else if ((((flag_sanitize_trap & SANITIZE_DIVIDE) == 0)
! 		== ((flag_sanitize_trap & SANITIZE_SI_OVERFLOW) == 0))
! 	       && (((flag_sanitize_recover & SANITIZE_DIVIDE) == 0)
  		   == ((flag_sanitize_recover & SANITIZE_SI_OVERFLOW) == 0)))
  	{
  	  t = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, t, x);
*************** ubsan_instrument_division (location_t lo
*** 105,111 ****
       make sure it gets evaluated before the condition.  */
    t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), unshare_expr (op0), t);
    t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), unshare_expr (op1), t);
!   if (flag_sanitize_undefined_trap_on_error)
      tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
    else
      {
--- 106,112 ----
       make sure it gets evaluated before the condition.  */
    t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), unshare_expr (op0), t);
    t = fold_build2 (COMPOUND_EXPR, TREE_TYPE (t), unshare_expr (op1), t);
!   if ((flag_sanitize_trap & flag) && x == NULL_TREE)
      tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
    else
      {
*************** ubsan_instrument_division (location_t lo
*** 113,137 ****
  				     ubsan_type_descriptor (type), NULL_TREE,
  				     NULL_TREE);
        data = build_fold_addr_expr_loc (loc, data);
!       enum built_in_function bcode
! 	= (flag_sanitize_recover & flag)
! 	  ? BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW
! 	  : BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT;
!       tt = builtin_decl_explicit (bcode);
!       op0 = unshare_expr (op0);
!       op1 = unshare_expr (op1);
!       tt = build_call_expr_loc (loc, tt, 3, data, ubsan_encode_value (op0),
! 				ubsan_encode_value (op1));
!       if (x)
  	{
! 	  bcode = (flag_sanitize_recover & SANITIZE_SI_OVERFLOW)
! 		  ? BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW
! 		  : BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT;
! 	  tree xt = builtin_decl_explicit (bcode);
  	  op0 = unshare_expr (op0);
  	  op1 = unshare_expr (op1);
! 	  xt = build_call_expr_loc (loc, xt, 3, data, ubsan_encode_value (op0),
  				    ubsan_encode_value (op1));
  	  x = fold_build3 (COND_EXPR, void_type_node, x, xt, void_node);
  	}
      }
--- 114,154 ----
  				     ubsan_type_descriptor (type), NULL_TREE,
  				     NULL_TREE);
        data = build_fold_addr_expr_loc (loc, data);
!       if (flag_sanitize_trap & flag)
! 	tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP),
! 				  0);
!       else
  	{
! 	  enum built_in_function bcode
! 	    = (flag_sanitize_recover & flag)
! 	      ? BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW
! 	      : BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT;
! 	  tt = builtin_decl_explicit (bcode);
  	  op0 = unshare_expr (op0);
  	  op1 = unshare_expr (op1);
! 	  tt = build_call_expr_loc (loc, tt, 3, data, ubsan_encode_value (op0),
  				    ubsan_encode_value (op1));
+ 	}
+       if (x)
+ 	{
+ 	  tree xt;
+ 	  if (flag_sanitize_trap & SANITIZE_SI_OVERFLOW)
+ 	    xt = build_call_expr_loc (loc,
+ 				      builtin_decl_explicit (BUILT_IN_TRAP),
+ 				      0);
+ 	  else
+ 	    {
+ 	      enum built_in_function bcode
+ 		= (flag_sanitize_recover & SANITIZE_SI_OVERFLOW)
+ 		   ? BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW
+ 		   : BUILT_IN_UBSAN_HANDLE_DIVREM_OVERFLOW_ABORT;
+ 	      xt = builtin_decl_explicit (bcode);
+ 	      op0 = unshare_expr (op0);
+ 	      op1 = unshare_expr (op1);
+ 	      xt = build_call_expr_loc (loc, xt, 3, data,
+ 					ubsan_encode_value (op0),
+ 					ubsan_encode_value (op1));
+ 	    }
  	  x = fold_build3 (COND_EXPR, void_type_node, x, xt, void_node);
  	}
      }
*************** ubsan_instrument_shift (location_t loc,
*** 225,232 ****
  	}
        else
  	{
! 	  if (flag_sanitize_undefined_trap_on_error
! 	      || ((!(flag_sanitize_recover & SANITIZE_SHIFT_EXPONENT))
  		  == (!(flag_sanitize_recover & SANITIZE_SHIFT_BASE))))
  	    t = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, t, tt);
  	  else
--- 242,250 ----
  	}
        else
  	{
! 	  if (((!(flag_sanitize_trap & SANITIZE_SHIFT_EXPONENT))
! 	       == (!(flag_sanitize_trap & SANITIZE_SHIFT_BASE)))
! 	      && ((!(flag_sanitize_recover & SANITIZE_SHIFT_EXPONENT))
  		  == (!(flag_sanitize_recover & SANITIZE_SHIFT_BASE))))
  	    t = fold_build2 (TRUTH_OR_EXPR, boolean_type_node, t, tt);
  	  else
*************** ubsan_instrument_shift (location_t loc,
*** 234,240 ****
  	}
      }
  
!   if (flag_sanitize_undefined_trap_on_error)
      tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
    else
      {
--- 252,258 ----
  	}
      }
  
!   if ((flag_sanitize_trap & recover_kind) && else_t == void_node)
      tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
    else
      {
*************** ubsan_instrument_shift (location_t loc,
*** 244,269 ****
  				     NULL_TREE);
        data = build_fold_addr_expr_loc (loc, data);
  
!       enum built_in_function bcode
! 	= (flag_sanitize_recover & recover_kind)
! 	  ? BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS
! 	  : BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT;
!       tt = builtin_decl_explicit (bcode);
!       op0 = unshare_expr (op0);
!       op1 = unshare_expr (op1);
!       tt = build_call_expr_loc (loc, tt, 3, data, ubsan_encode_value (op0),
! 				ubsan_encode_value (op1));
        if (else_t != void_node)
  	{
! 	  bcode = (flag_sanitize_recover & SANITIZE_SHIFT_BASE)
  		  ? BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS
  		  : BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT;
! 	  tree else_tt = builtin_decl_explicit (bcode);
! 	  op0 = unshare_expr (op0);
! 	  op1 = unshare_expr (op1);
! 	  else_tt = build_call_expr_loc (loc, else_tt, 3, data,
! 					 ubsan_encode_value (op0),
! 					 ubsan_encode_value (op1));
  	  else_t = fold_build3 (COND_EXPR, void_type_node, else_t,
  				else_tt, void_node);
  	}
--- 262,301 ----
  				     NULL_TREE);
        data = build_fold_addr_expr_loc (loc, data);
  
!       if (flag_sanitize_trap & recover_kind)
! 	tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
!       else
! 	{
! 	  enum built_in_function bcode
! 	    = (flag_sanitize_recover & recover_kind)
! 	      ? BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS
! 	      : BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT;
! 	  tt = builtin_decl_explicit (bcode);
! 	  op0 = unshare_expr (op0);
! 	  op1 = unshare_expr (op1);
! 	  tt = build_call_expr_loc (loc, tt, 3, data, ubsan_encode_value (op0),
! 				    ubsan_encode_value (op1));
! 	}
        if (else_t != void_node)
  	{
! 	  tree else_tt;
! 	  if (flag_sanitize_trap & SANITIZE_SHIFT_BASE)
! 	    else_tt
! 	      = build_call_expr_loc (loc,
! 				     builtin_decl_explicit (BUILT_IN_TRAP), 0);
! 	  else
! 	    {
! 	      enum built_in_function bcode
! 		= (flag_sanitize_recover & SANITIZE_SHIFT_BASE)
  		  ? BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS
  		  : BUILT_IN_UBSAN_HANDLE_SHIFT_OUT_OF_BOUNDS_ABORT;
! 	      else_tt = builtin_decl_explicit (bcode);
! 	      op0 = unshare_expr (op0);
! 	      op1 = unshare_expr (op1);
! 	      else_tt = build_call_expr_loc (loc, else_tt, 3, data,
! 					     ubsan_encode_value (op0),
! 					     ubsan_encode_value (op1));
! 	    }
  	  else_t = fold_build3 (COND_EXPR, void_type_node, else_t,
  				else_tt, void_node);
  	}
*************** ubsan_instrument_vla (location_t loc, tr
*** 282,288 ****
    tree t, tt;
  
    t = fold_build2 (LE_EXPR, boolean_type_node, size, build_int_cst (type, 0));
!   if (flag_sanitize_undefined_trap_on_error)
      tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
    else
      {
--- 314,320 ----
    tree t, tt;
  
    t = fold_build2 (LE_EXPR, boolean_type_node, size, build_int_cst (type, 0));
!   if (flag_sanitize_trap & SANITIZE_VLA)
      tt = build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
    else
      {
*************** ubsan_instrument_vla (location_t loc, tr
*** 307,314 ****
  tree
  ubsan_instrument_return (location_t loc)
  {
!   if (flag_sanitize_undefined_trap_on_error)
!     return build_call_expr_loc (loc, builtin_decl_explicit (BUILT_IN_TRAP), 0);
  
    tree data = ubsan_create_data ("__ubsan_missing_return_data", 1, &loc,
  				 NULL_TREE, NULL_TREE);
--- 339,348 ----
  tree
  ubsan_instrument_return (location_t loc)
  {
!   if (flag_sanitize_trap & SANITIZE_RETURN)
!     /* pass_warn_function_return checks for BUILTINS_LOCATION.  */
!     return build_call_expr_loc (BUILTINS_LOCATION,
! 				builtin_decl_explicit (BUILT_IN_TRAP), 0);
  
    tree data = ubsan_create_data ("__ubsan_missing_return_data", 1, &loc,
  				 NULL_TREE, NULL_TREE);
*************** ubsan_instrument_return (location_t loc)
*** 320,326 ****
     that gets expanded in the sanopt pass, and make an array dimension
     of it.  ARRAY is the array, *INDEX is an index to the array.
     Return NULL_TREE if no instrumentation is emitted.
!    IGNORE_OFF_BY_ONE is true if the ARRAY_REF is inside a ADDR_EXPR.  */
  
  tree
  ubsan_instrument_bounds (location_t loc, tree array, tree *index,
--- 354,360 ----
     that gets expanded in the sanopt pass, and make an array dimension
     of it.  ARRAY is the array, *INDEX is an index to the array.
     Return NULL_TREE if no instrumentation is emitted.
!    IGNORE_OFF_BY_ONE is true if the ARRAY_REF is inside an ADDR_EXPR.  */
  
  tree
  ubsan_instrument_bounds (location_t loc, tree array, tree *index,
*************** ubsan_instrument_bounds (location_t loc,
*** 329,341 ****
    tree type = TREE_TYPE (array);
    tree domain = TYPE_DOMAIN (type);
  
!   if (domain == NULL_TREE || TYPE_MAX_VALUE (domain) == NULL_TREE)
      return NULL_TREE;
  
    tree bound = TYPE_MAX_VALUE (domain);
!   if (ignore_off_by_one)
!     bound = fold_build2 (PLUS_EXPR, TREE_TYPE (bound), bound,
! 			 build_int_cst (TREE_TYPE (bound), 1));
  
    /* Detect flexible array members and suchlike, unless
       -fsanitize=bounds-strict.  */
--- 363,387 ----
    tree type = TREE_TYPE (array);
    tree domain = TYPE_DOMAIN (type);
  
!   if (domain == NULL_TREE)
      return NULL_TREE;
  
    tree bound = TYPE_MAX_VALUE (domain);
!   if (!bound)
!     {
!       /* Handle C [0] arrays, which have TYPE_MAX_VALUE NULL, like
! 	 C++ [0] arrays which have TYPE_MIN_VALUE 0 TYPE_MAX_VALUE -1.  */
!       if (!c_dialect_cxx ()
! 	  && COMPLETE_TYPE_P (type)
! 	  && integer_zerop (TYPE_SIZE (type)))
! 	bound = build_int_cst (TREE_TYPE (TYPE_MIN_VALUE (domain)), -1);
!       else
! 	return NULL_TREE;
!     }
! 
!   bound = fold_build2 (PLUS_EXPR, TREE_TYPE (bound), bound,
! 		       build_int_cst (TREE_TYPE (bound),
! 		       1 + ignore_off_by_one));
  
    /* Detect flexible array members and suchlike, unless
       -fsanitize=bounds-strict.  */
*************** ubsan_instrument_bounds (location_t loc,
*** 358,363 ****
--- 404,448 ----
  	  if (next)
  	    /* Not a last element.  Instrument it.  */
  	    break;
+ 	  if (TREE_CODE (TREE_TYPE (TREE_OPERAND (cref, 1))) == ARRAY_TYPE
+ 	      && !c_dialect_cxx ())
+ 	    {
+ 	      unsigned l
+ 		= c_strict_flex_array_level_of (TREE_OPERAND (cref, 1));
+ 	      tree type2 = TREE_TYPE (TREE_OPERAND (cref, 1));
+ 	      if (TYPE_DOMAIN (type2) != NULL_TREE)
+ 		{
+ 		  tree max = TYPE_MAX_VALUE (TYPE_DOMAIN (type2));
+ 		  if (max == NULL_TREE)
+ 		    {
+ 		      /* C [0] */
+ 		      if (COMPLETE_TYPE_P (type2)
+ 			  && integer_zerop (TYPE_SIZE (type2))
+ 			  && l == 3)
+ 			next = TREE_OPERAND (cref, 1);
+ 		    }
+ 		  else if (TREE_CODE (max) == INTEGER_CST)
+ 		    {
+ 		      if (c_dialect_cxx ()
+ 			  && integer_all_onesp (max))
+ 			{
+ 			  /* C++ [0] */
+ 			  if (l == 3)
+ 			    next = TREE_OPERAND (cref, 1);
+ 			}
+ 		      else if (integer_zerop (max))
+ 			{
+ 			  /* C/C++ [1] */
+ 			  if (l >= 2)
+ 			    next = TREE_OPERAND (cref, 1);
+ 			}
+ 		      else if (l >= 1)
+ 			next = TREE_OPERAND (cref, 1);
+ 		    }
+ 		}
+ 	      if (next)
+ 		break;
+ 	    }
  	  /* Ok, this is the last field of the structure/union.  But the
  	     aggregate containing the field must be the last field too,
  	     recursively.  */
*************** ubsan_instrument_bounds (location_t loc,
*** 379,385 ****
    if (idx
        && TREE_CODE (bound) == INTEGER_CST
        && tree_int_cst_sgn (idx) >= 0
!       && tree_int_cst_le (idx, bound))
      return NULL_TREE;
  
    *index = save_expr (*index);
--- 464,470 ----
    if (idx
        && TREE_CODE (bound) == INTEGER_CST
        && tree_int_cst_sgn (idx) >= 0
!       && tree_int_cst_lt (idx, bound))
      return NULL_TREE;
  
    *index = save_expr (*index);
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-ubsan.h gcc-13.1.0/gcc/c-family/c-ubsan.h
*** gcc-12.2.0/gcc/c-family/c-ubsan.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-ubsan.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* UndefinedBehaviorSanitizer, undefined behavior detector.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Marek Polacek <polacek@redhat.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/c-family/c-warn.cc gcc-13.1.0/gcc/c-family/c-warn.cc
*** gcc-12.2.0/gcc/c-family/c-warn.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c-warn.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Diagnostic routines shared by all languages that are variants of C.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Diagnostic routines shared by all languages that are variants of C.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 39,44 ****
--- 39,45 ----
  #include "calls.h"
  #include "stor-layout.h"
  #include "tree-pretty-print.h"
+ #include "langhooks.h"
  
  /* Print a warning if a constant expression had overflow in folding.
     Invoke this function on every expression that the language
*************** warnings_for_convert_and_check (location
*** 1404,1415 ****
      result = TREE_OPERAND (result, 1);
  
    bool cst = TREE_CODE_CLASS (TREE_CODE (result)) == tcc_constant;
- 
    tree exprtype = TREE_TYPE (expr);
  
    if (TREE_CODE (expr) == INTEGER_CST
        && (TREE_CODE (type) == INTEGER_TYPE
! 	  || TREE_CODE (type) == ENUMERAL_TYPE)
        && !int_fits_type_p (expr, type))
      {
        /* Do not diagnose overflow in a constant expression merely
--- 1405,1423 ----
      result = TREE_OPERAND (result, 1);
  
    bool cst = TREE_CODE_CLASS (TREE_CODE (result)) == tcc_constant;
    tree exprtype = TREE_TYPE (expr);
+   tree result_diag;
+   /* We're interested in the actual numerical value here, not its ASCII
+      representation.  */
+   if (cst && TYPE_MAIN_VARIANT (TREE_TYPE (result)) == char_type_node)
+     result_diag = fold_convert (integer_type_node, result);
+   else
+     result_diag = result;
  
    if (TREE_CODE (expr) == INTEGER_CST
        && (TREE_CODE (type) == INTEGER_TYPE
! 	  || (TREE_CODE (type) == ENUMERAL_TYPE
! 	      && TREE_CODE (ENUM_UNDERLYING_TYPE (type)) != BOOLEAN_TYPE))
        && !int_fits_type_p (expr, type))
      {
        /* Do not diagnose overflow in a constant expression merely
*************** warnings_for_convert_and_check (location
*** 1430,1436 ****
  				  "changes value from %qE to %qE")
  			     : G_("unsigned conversion from %qT to %qT "
  				  "changes value from %qE to %qE")),
! 			    exprtype, type, expr, result);
  	      else
  		warning_at (loc, OPT_Woverflow,
  			    (TYPE_UNSIGNED (exprtype)
--- 1438,1444 ----
  				  "changes value from %qE to %qE")
  			     : G_("unsigned conversion from %qT to %qT "
  				  "changes value from %qE to %qE")),
! 			    exprtype, type, expr, result_diag);
  	      else
  		warning_at (loc, OPT_Woverflow,
  			    (TYPE_UNSIGNED (exprtype)
*************** warnings_for_convert_and_check (location
*** 1449,1455 ****
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
  			"changes value from %qE to %qE",
! 			exprtype, type, expr, result);
  	  else
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
--- 1457,1463 ----
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
  			"changes value from %qE to %qE",
! 			exprtype, type, expr, result_diag);
  	  else
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
*************** warnings_for_convert_and_check (location
*** 1466,1472 ****
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
  			"changes value from %qE to %qE",
! 			exprtype, type, expr, result);
  	  else
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
--- 1474,1480 ----
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
  			"changes value from %qE to %qE",
! 			exprtype, type, expr, result_diag);
  	  else
  	    warning_at (loc, OPT_Woverflow,
  			"overflow in conversion from %qT to %qT "
*************** warnings_for_convert_and_check (location
*** 1483,1489 ****
  	warning_at (loc, OPT_Woverflow,
  		    "overflow in conversion from %qT to %qT "
  		    "changes value from %qE to %qE",
! 		    exprtype, type, expr, result);
        else
  	warning_at (loc, OPT_Woverflow,
  		    "overflow in conversion from %qT to %qT "
--- 1491,1497 ----
  	warning_at (loc, OPT_Woverflow,
  		    "overflow in conversion from %qT to %qT "
  		    "changes value from %qE to %qE",
! 		    exprtype, type, expr, result_diag);
        else
  	warning_at (loc, OPT_Woverflow,
  		    "overflow in conversion from %qT to %qT "
*************** c_do_switch_warnings (splay_tree cases,
*** 1732,1739 ****
    for (chain = TYPE_VALUES (type); chain; chain = TREE_CHAIN (chain))
      {
        tree value = TREE_VALUE (chain);
!       if (TREE_CODE (value) == CONST_DECL)
! 	value = DECL_INITIAL (value);
        node = splay_tree_lookup (cases, (splay_tree_key) value);
        if (node)
  	{
--- 1740,1747 ----
    for (chain = TYPE_VALUES (type); chain; chain = TREE_CHAIN (chain))
      {
        tree value = TREE_VALUE (chain);
!       tree attrs = DECL_ATTRIBUTES (value);
!       value = DECL_INITIAL (value);
        node = splay_tree_lookup (cases, (splay_tree_key) value);
        if (node)
  	{
*************** c_do_switch_warnings (splay_tree cases,
*** 1763,1768 ****
--- 1771,1783 ----
        /* We've now determined that this enumerated literal isn't
  	 handled by the case labels of the switch statement.  */
  
+       /* Don't warn if the enumerator was marked as unused.  We can't use
+ 	 TREE_USED here: it could have been set on the enumerator if the
+ 	 enumerator was used earlier.  */
+       if (lookup_attribute ("unused", attrs)
+ 	  || lookup_attribute ("maybe_unused", attrs))
+ 	continue;
+ 
        /* If the switch expression is a constant, we only really care
  	 about whether that constant is handled by the switch.  */
        if (cond && tree_int_cst_compare (cond, value))
*************** warn_for_sign_compare (location_t locati
*** 2330,2371 ****
       have all bits set that are set in the ~ operand when it is
       extended.  */
  
!   op0 = c_common_get_narrower (op0, &unsignedp0);
!   op1 = c_common_get_narrower (op1, &unsignedp1);
  
    if ((TREE_CODE (op0) == BIT_NOT_EXPR)
        ^ (TREE_CODE (op1) == BIT_NOT_EXPR))
      {
-       if (TREE_CODE (op0) == BIT_NOT_EXPR)
- 	op0 = c_common_get_narrower (TREE_OPERAND (op0, 0), &unsignedp0);
        if (TREE_CODE (op1) == BIT_NOT_EXPR)
- 	op1 = c_common_get_narrower (TREE_OPERAND (op1, 0), &unsignedp1);
- 
-       if (tree_fits_shwi_p (op0) || tree_fits_shwi_p (op1))
  	{
! 	  tree primop;
! 	  HOST_WIDE_INT constant, mask;
! 	  int unsignedp;
! 	  unsigned int bits;
  
! 	  if (tree_fits_shwi_p (op0))
! 	    {
! 	      primop = op1;
! 	      unsignedp = unsignedp1;
! 	      constant = tree_to_shwi (op0);
! 	    }
! 	  else
! 	    {
! 	      primop = op0;
! 	      unsignedp = unsignedp0;
! 	      constant = tree_to_shwi (op1);
! 	    }
  
! 	  bits = TYPE_PRECISION (TREE_TYPE (primop));
! 	  if (bits < TYPE_PRECISION (result_type)
! 	      && bits < HOST_BITS_PER_LONG && unsignedp)
  	    {
! 	      mask = HOST_WIDE_INT_M1U << bits;
  	      if ((mask & constant) != mask)
  		{
  		  if (constant == 0)
--- 2345,2407 ----
       have all bits set that are set in the ~ operand when it is
       extended.  */
  
!   /* bits0 is the bit index of op0 extended to result_type, which will
!      be always 0 and so all bits above it.  If there is a BIT_NOT_EXPR
!      in that operand possibly sign or zero extended to op0 and then
!      possibly further sign or zero extended to result_type, bits0 will
!      be the precision of result type if all the extensions involved
!      if any are sign extensions, and will be the place of the innermost
!      zero extension otherwise.  We warn only if BIT_NOT_EXPR's operand is
!      zero extended from some even smaller precision, in that case after
!      BIT_NOT_EXPR some bits below bits0 will be guaranteed to be set.
!      Similarly for bits1.  */
!   int bits0 = TYPE_PRECISION (result_type);
!   if (TYPE_UNSIGNED (TREE_TYPE (op0)))
!     bits0 = TYPE_PRECISION (TREE_TYPE (op0));
!   tree arg0 = c_common_get_narrower (op0, &unsignedp0);
!   if (TYPE_PRECISION (TREE_TYPE (arg0)) == TYPE_PRECISION (TREE_TYPE (op0)))
!     unsignedp0 = TYPE_UNSIGNED (TREE_TYPE (op0));
!   else if (unsignedp0)
!     bits0 = TYPE_PRECISION (TREE_TYPE (arg0));
!   op0 = arg0;
!   int bits1 = TYPE_PRECISION (result_type);
!   if (TYPE_UNSIGNED (TREE_TYPE (op1)))
!     bits1 = TYPE_PRECISION (TREE_TYPE (op1));
!   tree arg1 = c_common_get_narrower (op1, &unsignedp1);
!   if (TYPE_PRECISION (TREE_TYPE (arg1)) == TYPE_PRECISION (TREE_TYPE (op1)))
!     unsignedp1 = TYPE_UNSIGNED (TREE_TYPE (op1));
!   else if (unsignedp1)
!     bits1 = TYPE_PRECISION (TREE_TYPE (arg1));
!   op1 = arg1;
  
    if ((TREE_CODE (op0) == BIT_NOT_EXPR)
        ^ (TREE_CODE (op1) == BIT_NOT_EXPR))
      {
        if (TREE_CODE (op1) == BIT_NOT_EXPR)
  	{
! 	  std::swap (op0, op1);
! 	  std::swap (unsignedp0, unsignedp1);
! 	  std::swap (bits0, bits1);
! 	}
  
!       int unsignedp;
!       arg0 = c_common_get_narrower (TREE_OPERAND (op0, 0), &unsignedp);
  
!       /* For these warnings, we need BIT_NOT_EXPR operand to be
! 	 zero extended from narrower type to BIT_NOT_EXPR's type.
! 	 In that case, all those bits above the narrower's type
! 	 are after BIT_NOT_EXPR set to 1.  */
!       if (tree_fits_shwi_p (op1))
! 	{
! 	  HOST_WIDE_INT constant = tree_to_shwi (op1);
! 	  unsigned int bits = TYPE_PRECISION (TREE_TYPE (arg0));
! 	  if (unsignedp
! 	      && bits < TYPE_PRECISION (TREE_TYPE (op0))
! 	      && bits < HOST_BITS_PER_WIDE_INT)
  	    {
! 	      HOST_WIDE_INT mask = HOST_WIDE_INT_M1U << bits;
! 	      if (bits0 < HOST_BITS_PER_WIDE_INT)
! 		mask &= ~(HOST_WIDE_INT_M1U << bits0);
  	      if ((mask & constant) != mask)
  		{
  		  if (constant == 0)
*************** warn_for_sign_compare (location_t locati
*** 2379,2389 ****
  		}
  	    }
  	}
!       else if (unsignedp0 && unsignedp1
! 	       && (TYPE_PRECISION (TREE_TYPE (op0))
! 		   < TYPE_PRECISION (result_type))
! 	       && (TYPE_PRECISION (TREE_TYPE (op1))
! 		   < TYPE_PRECISION (result_type)))
  	warning_at (location, OPT_Wsign_compare,
  		    "comparison of promoted bitwise complement "
  		    "of an unsigned value with unsigned");
--- 2415,2425 ----
  		}
  	    }
  	}
!       else if ((TYPE_PRECISION (TREE_TYPE (arg0))
! 		< TYPE_PRECISION (TREE_TYPE (op0)))
! 	       && unsignedp
! 	       && unsignedp1
! 	       && TYPE_PRECISION (TREE_TYPE (op1)) < bits0)
  	warning_at (location, OPT_Wsign_compare,
  		    "comparison of promoted bitwise complement "
  		    "of an unsigned value with unsigned");
*************** warn_duplicated_cond_add_or_warn (locati
*** 2521,2527 ****
    if (*chain == NULL)
      return;
  
!   if (TREE_SIDE_EFFECTS (cond))
      {
        /* Uh-oh!  This condition has a side-effect, thus invalidates
  	 the whole chain.  */
--- 2557,2563 ----
    if (*chain == NULL)
      return;
  
!   if (TREE_SIDE_EFFECTS (cond) || instantiation_dependent_expression_p (cond))
      {
        /* Uh-oh!  This condition has a side-effect, thus invalidates
  	 the whole chain.  */
*************** maybe_warn_shift_overflow (location_t lo
*** 2601,2614 ****
        || TREE_CODE (op1) != INTEGER_CST)
      return false;
  
!   tree type0 = TREE_TYPE (op0);
    unsigned int prec0 = TYPE_PRECISION (type0);
  
    /* Left-hand operand must be signed.  */
    if (TYPE_OVERFLOW_WRAPS (type0) || cxx_dialect >= cxx20)
      return false;
  
!   unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), SIGNED)
  			   + TREE_INT_CST_LOW (op1));
    /* Handle the case of left-shifting 1 into the sign bit.
     * However, shifting 1 _out_ of the sign bit, as in
--- 2637,2655 ----
        || TREE_CODE (op1) != INTEGER_CST)
      return false;
  
!   /* match.pd could have narrowed the left shift already,
!      take type promotion into account.  */
!   tree type0 = lang_hooks.types.type_promotes_to (TREE_TYPE (op0));
    unsigned int prec0 = TYPE_PRECISION (type0);
  
    /* Left-hand operand must be signed.  */
    if (TYPE_OVERFLOW_WRAPS (type0) || cxx_dialect >= cxx20)
      return false;
  
!   signop sign = SIGNED;
!   if (TYPE_PRECISION (TREE_TYPE (op0)) < TYPE_PRECISION (type0))
!     sign = TYPE_SIGN (TREE_TYPE (op0));
!   unsigned int min_prec = (wi::min_precision (wi::to_wide (op0), sign)
  			   + TREE_INT_CST_LOW (op1));
    /* Handle the case of left-shifting 1 into the sign bit.
     * However, shifting 1 _out_ of the sign bit, as in
*************** maybe_warn_shift_overflow (location_t lo
*** 2631,2637 ****
      warning_at (loc, OPT_Wshift_overflow_,
  		"result of %qE requires %u bits to represent, "
  		"but %qT only has %u bits",
! 		build2_loc (loc, LSHIFT_EXPR, type0, op0, op1),
  		min_prec, type0, prec0);
  
    return overflowed;
--- 2672,2679 ----
      warning_at (loc, OPT_Wshift_overflow_,
  		"result of %qE requires %u bits to represent, "
  		"but %qT only has %u bits",
! 		build2_loc (loc, LSHIFT_EXPR, type0,
! 			    fold_convert (type0, op0), op1),
  		min_prec, type0, prec0);
  
    return overflowed;
*************** check_address_or_pointer_of_packed_membe
*** 2986,2991 ****
--- 3028,3037 ----
  	  if (rhs == NULL_TREE)
  	    return NULL_TREE;
  	  rhs = TREE_TYPE (rhs);	/* Pointer type.  */
+ 	  /* We could be called while processing a template and RHS could be
+ 	     a functor.  In that case it's a class, not a pointer.  */
+ 	  if (!POINTER_TYPE_P (rhs))
+ 	    return NULL_TREE;
  	  rhs = TREE_TYPE (rhs);	/* Function type.  */
  	  rhstype = TREE_TYPE (rhs);
  	  if (!rhstype || !POINTER_TYPE_P (rhstype))
*************** warn_parm_array_mismatch (location_t ori
*** 3603,3608 ****
--- 3649,3656 ----
        for (tree newvbl = newa->size, curvbl = cura->size; newvbl;
  	   newvbl = TREE_CHAIN (newvbl), curvbl = TREE_CHAIN (curvbl))
  	{
+ 	  gcc_assert (curvbl);
+ 
  	  tree newpos = TREE_PURPOSE (newvbl);
  	  tree curpos = TREE_PURPOSE (curvbl);
  
*************** do_warn_array_compare (location_t locati
*** 3786,3788 ****
--- 3834,3942 ----
  		op0, op_symbol_code (code), op1);
      }
  }
+ 
+ /* Given LHS_VAL ^ RHS_VAL, where LHS_LOC is the location of the LHS,
+    OPERATOR_LOC is the location of the ^, and RHS_LOC the location of the
+    RHS, complain with -Wxor-used-as-pow if it looks like the user meant
+    exponentiation rather than xor.  */
+ 
+ void
+ check_for_xor_used_as_pow (location_t lhs_loc, tree lhs_val,
+ 			   location_t operator_loc,
+ 			   location_t rhs_loc, tree rhs_val)
+ {
+   /* Only complain if both args are non-negative integer constants that fit
+      in uhwi.  */
+   if (!tree_fits_uhwi_p (lhs_val) || !tree_fits_uhwi_p (rhs_val))
+     return;
+ 
+   /* Only complain if the LHS is 2 or 10.  */
+   unsigned HOST_WIDE_INT lhs_uhwi = tree_to_uhwi (lhs_val);
+   if (lhs_uhwi != 2 && lhs_uhwi != 10)
+     return;
+ 
+   unsigned HOST_WIDE_INT rhs_uhwi = tree_to_uhwi (rhs_val);
+   unsigned HOST_WIDE_INT xor_result = lhs_uhwi ^ rhs_uhwi;
+   binary_op_rich_location loc (operator_loc,
+ 			       lhs_val, rhs_val, false);
+ 
+   /* Reject cases where we don't have 3 distinct locations.
+      This can happen e.g. due to macro expansion with
+      -ftrack-macro-expansion=0 */
+   if (!(lhs_loc != operator_loc
+ 	&& lhs_loc != rhs_loc
+ 	&& operator_loc != rhs_loc))
+     return;
+ 
+   /* Reject cases in which any of the locations came from a macro.  */
+   if (from_macro_expansion_at (lhs_loc)
+       || from_macro_expansion_at (operator_loc)
+       || from_macro_expansion_at (rhs_loc))
+     return;
+ 
+   /* If we issue fix-it hints with the warning then we will also issue a
+      note suggesting how to suppress the warning with a different change.
+      These proposed changes are incompatible.  */
+   loc.fixits_cannot_be_auto_applied ();
+ 
+   auto_diagnostic_group d;
+   bool warned = false;
+   if (lhs_uhwi == 2)
+     {
+       /* Would exponentiation fit in int, in long long, or not at all?  */
+       if (rhs_uhwi < (INT_TYPE_SIZE - 1))
+ 	{
+ 	  unsigned HOST_WIDE_INT suggested_result = 1 << rhs_uhwi;
+ 	  loc.add_fixit_replace (lhs_loc, "1");
+ 	  loc.add_fixit_replace (operator_loc, "<<");
+ 	  warned = warning_at (&loc, OPT_Wxor_used_as_pow,
+ 			       "result of %<%wu^%wu%> is %wu;"
+ 			       " did you mean %<1 << %wu%> (%wu)?",
+ 			       lhs_uhwi, rhs_uhwi, xor_result,
+ 			       rhs_uhwi, suggested_result);
+ 	}
+       else if (rhs_uhwi < (LONG_LONG_TYPE_SIZE - 1))
+ 	{
+ 	  loc.add_fixit_replace (lhs_loc, "1LL");
+ 	  loc.add_fixit_replace (operator_loc, "<<");
+ 	  warned = warning_at (&loc, OPT_Wxor_used_as_pow,
+ 			       "result of %<%wu^%wu%> is %wu;"
+ 			       " did you mean %<1LL << %wu%>?",
+ 			       lhs_uhwi, rhs_uhwi, xor_result,
+ 			       rhs_uhwi);
+ 	}
+       else if (rhs_uhwi <= LONG_LONG_TYPE_SIZE)
+ 	warned = warning_at (&loc, OPT_Wxor_used_as_pow,
+ 			     "result of %<%wu^%wu%> is %wu;"
+ 			     " did you mean exponentiation?",
+ 			     lhs_uhwi, rhs_uhwi, xor_result);
+       /* Otherwise assume it's an xor.  */
+     }
+   else
+     {
+       gcc_assert (lhs_uhwi == 10);
+       loc.add_fixit_replace (lhs_loc, "1");
+       loc.add_fixit_replace (operator_loc, "e");
+       warned = warning_at (&loc, OPT_Wxor_used_as_pow,
+ 			   "result of %<%wu^%wu%> is %wu;"
+ 			   " did you mean %<1e%wu%>?",
+ 			   lhs_uhwi, rhs_uhwi, xor_result,
+ 			   rhs_uhwi);
+     }
+   if (warned)
+     {
+       gcc_rich_location note_loc (lhs_loc);
+       if (lhs_uhwi == 2)
+ 	note_loc.add_fixit_replace (lhs_loc, "0x2");
+       else
+ 	{
+ 	  gcc_assert (lhs_uhwi == 10);
+ 	  note_loc.add_fixit_replace (lhs_loc, "0xa");
+ 	}
+       note_loc.fixits_cannot_be_auto_applied ();
+       inform (&note_loc,
+ 	      "you can silence this warning by using a hexadecimal constant"
+ 	      " (%wx rather than %wd)",
+ 	      lhs_uhwi, lhs_uhwi);
+     }
+ }
diff -Nrcpad gcc-12.2.0/gcc/c-family/c.opt gcc-13.1.0/gcc/c-family/c.opt
*** gcc-12.2.0/gcc/c-family/c.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/c.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options for the C, ObjC, C++ and ObjC++ front ends.
! ; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,5 ----
  ; Options for the C, ObjC, C++ and ObjC++ front ends.
! ; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** C ObjC C++ ObjC++ Separate Alias(o)
*** 135,142 ****
  -output=
  C ObjC C++ ObjC++ Joined Alias(o)
  
! -output-pch=
! C ObjC C++ ObjC++ Joined Separate
  
  -pedantic
  C ObjC C++ ObjC++ Alias(pedantic)
--- 135,142 ----
  -output=
  C ObjC C++ ObjC++ Joined Alias(o)
  
! -output-pch
! C ObjC C++ ObjC++ Separate
  
  -pedantic
  C ObjC C++ ObjC++ Alias(pedantic)
*************** Wc++2a-compat
*** 455,461 ****
  C++ ObjC++ Warning Alias(Wc++20-compat) Undocumented
  
  Wc++20-compat
! C++ ObjC++ Var(warn_cxx20_compat) Warning LangEnabledBy(C++ ObjC++,Wall)
  Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.
  
  Wc++11-extensions
--- 455,461 ----
  C++ ObjC++ Warning Alias(Wc++20-compat) Undocumented
  
  Wc++20-compat
! C++ ObjC++ Var(warn_cxx20_compat) Warning LangEnabledBy(C++ ObjC++,Wall) Init(0) CPP(cpp_warn_cxx20_compat) CppReason(CPP_W_CXX20_COMPAT)
  Warn about C++ constructs whose meaning differs between ISO C++ 2017 and ISO C++ 2020.
  
  Wc++11-extensions
*************** Wcatch-value=
*** 494,499 ****
--- 494,503 ----
  C++ ObjC++ Var(warn_catch_value) Warning Joined RejectNegative UInteger LangEnabledBy(C++ ObjC++,Wall, 1, 0) IntegerRange(0, 3)
  Warn about catch handlers of non-reference type.
  
+ Wchanges-meaning
+ C++ ObjC++ Var(warn_changes_meaning) Warning Init(1)
+ Complain about a name being declared as a class member after a previous use of the same name.
+ 
  Wchar-subscripts
  C ObjC C++ ObjC++ Var(warn_char_subscripts) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn about subscripts whose type is \"char\".
*************** Wdangling-pointer=
*** 555,560 ****
--- 559,568 ----
  C ObjC C++ ObjC++ Joined RejectNegative UInteger Var(warn_dangling_pointer) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall, 2, 0) IntegerRange(0, 2)
  Warn for uses of pointers to auto variables whose lifetime has ended.
  
+ Wdangling-reference
+ C++ ObjC++ Var(warn_dangling_reference) Warning LangEnabledBy(C++ ObjC++, Wall)
+ Warn when a reference is bound to a temporary whose lifetime has ended.
+ 
  Wdate-time
  C ObjC C++ ObjC++ CPP(warn_date_time) CppReason(CPP_W_DATE_TIME) Var(cpp_warn_date_time) Init(0) Warning
  Warn about __TIME__, __DATE__ and __TIMESTAMP__ usage.
*************** Wenum-conversion
*** 638,643 ****
--- 646,655 ----
  C ObjC C++ ObjC++ Var(warn_enum_conversion) Init(0) Warning LangEnabledBy(C ObjC,Wextra)
  Warn about implicit conversion of enum types.
  
+ Wenum-int-mismatch
+ C ObjC Var(warn_enum_int_mismatch) Warning LangEnabledBy(C ObjC,Wall || Wc++-compat)
+ Warn about enum/integer type mismatches.
+ 
  Werror
  C ObjC C++ ObjC++
  ; Documented in common.opt
*************** Wint-to-pointer-cast
*** 809,814 ****
--- 821,830 ----
  C ObjC C++ ObjC++ Var(warn_int_to_pointer_cast) Init(1) Warning
  Warn when there is a cast to a pointer from an integer of a different size.
  
+ Winvalid-constexpr
+ C++ ObjC++ Var(warn_invalid_constexpr) Init(-1) Warning
+ Warn when a function never produces a constant expression.
+ 
  Winvalid-offsetof
  C++ ObjC++ Var(warn_invalid_offsetof) Init(1) Warning
  Warn about invalid uses of the \"offsetof\" macro.
*************** Winvalid-pch
*** 817,822 ****
--- 833,842 ----
  C ObjC C++ ObjC++ CPP(warn_invalid_pch) CppReason(CPP_W_INVALID_PCH) Var(cpp_warn_invalid_pch) Init(0) Warning
  Warn about PCH files that are found but not used.
  
+ Winvalid-utf8
+ C ObjC C++ ObjC++ CPP(cpp_warn_invalid_utf8) CppReason(CPP_W_INVALID_UTF8) Var(warn_invalid_utf8) Init(0) Warning
+ Warn about invalid UTF-8 characters.
+ 
  Wjump-misses-init
  C ObjC Var(warn_jump_misses_init) Warning LangEnabledby(C ObjC,Wc++-compat)
  Warn when a jump misses a variable initialization.
*************** Wstringop-truncation
*** 960,965 ****
--- 980,990 ----
  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.
*************** C ObjC C++ ObjC++ Var(warn_overlength_st
*** 1122,1128 ****
  Warn if a string is longer than the maximum portable length specified by the standard.
  
  Woverloaded-virtual
! C++ ObjC++ Var(warn_overloaded_virtual) Warning
  Warn about overloaded virtual function names.
  
  Woverride-init
--- 1147,1157 ----
  Warn if a string is longer than the maximum portable length specified by the standard.
  
  Woverloaded-virtual
! C++ ObjC++ Warning Alias(Woverloaded-virtual=,2,0)
! Warn about overloaded virtual function names.
! 
! Woverloaded-virtual=
! C++ ObjC++ Joined UInteger IntegerRange(0,2) Var(warn_overloaded_virtual) Warning LangEnabledBy(C++ ObjC++,Wall,1,0)
  Warn about overloaded virtual function names.
  
  Woverride-init
*************** Wselector
*** 1221,1226 ****
--- 1250,1259 ----
  ObjC ObjC++ Var(warn_selector) Warning
  Warn if a selector has multiple methods.
  
+ Wself-move
+ C++ ObjC++ Var(warn_self_move) Warning LangEnabledBy(C++ ObjC++, Wall)
+ Warn when a value is moved to itself with std::move.
+ 
  Wsequence-point
  C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
  Warn about possible violations of sequence point rules.
*************** Wundef
*** 1329,1334 ****
--- 1362,1371 ----
  C ObjC C++ ObjC++ CPP(warn_undef) CppReason(CPP_W_UNDEF) Var(cpp_warn_undef) Init(0) Warning
  Warn if an undefined macro is used in an #if directive.
  
+ Wunicode
+ C ObjC C++ ObjC++ CPP(cpp_warn_unicode) CppReason(CPP_W_UNICODE) Var(warn_unicode) Init(1) Warning
+ Warn about invalid forms of delimited or named escape sequences.
+ 
  Wuninitialized
  C ObjC C++ ObjC++ LTO LangEnabledBy(C ObjC C++ ObjC++ LTO,Wall)
  ;
*************** Wwrite-strings
*** 1431,1436 ****
--- 1468,1477 ----
  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.
  
+ Wxor-used-as-pow
+ C ObjC C++ ObjC++ Var(warn_xor_used_as_pow) Warning Init(1)
+ Warn about xor operators where it appears the user meant exponentiation.
+ 
  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.
*************** fall-virtual
*** 1484,1491 ****
  C++ ObjC++ WarnRemoved
  
  fallow-parameterless-variadic-functions
! C ObjC Var(flag_allow_parameterless_variadic_functions)
! Allow variadic functions without named parameter.
  
  falt-external-templates
  C++ ObjC++ WarnRemoved
--- 1525,1532 ----
  C++ ObjC++ WarnRemoved
  
  fallow-parameterless-variadic-functions
! C ObjC Ignore
! Does nothing. Preserved for backward compatibility.
  
  falt-external-templates
  C++ ObjC++ WarnRemoved
*************** fconstexpr-ops-limit=
*** 1646,1651 ****
--- 1687,1733 ----
  C++ ObjC++ Joined RejectNegative Host_Wide_Int Var(constexpr_ops_limit) Init(33554432)
  -fconstexpr-ops-limit=<number>	Specify maximum number of constexpr operations during a single constexpr evaluation.
  
+ fcontracts
+ C++ ObjC++ Var(flag_contracts) Init(0)
+ Enable certain features present in drafts of C++ Contracts.
+ 
+ Enum
+ Name(on_off) Type(int) UnknownError(argument %qs must be either %<on%> or %<off%>)
+ 
+ EnumValue
+ Enum(on_off) String(off) Value(0)
+ 
+ EnumValue
+ Enum(on_off) String(on) Value(1)
+ 
+ fcontract-assumption-mode=
+ C++ Joined RejectNegative
+ -fcontract-assumption-mode=[on|off]	Enable or disable treating axiom level contracts as assumptions (default on).
+ 
+ fcontract-build-level=
+ C++ Joined RejectNegative
+ -fcontract-build-level=[off|default|audit]	Specify max contract level to generate runtime checks for.
+ 
+ fcontract-strict-declarations=
+ C++ Var(flag_contract_strict_declarations) Enum(on_off) Joined Init(0) RejectNegative
+ -fcontract-strict-declarations=[on|off]	Enable or disable warnings on generalized redeclaration of functions with contracts (default off).
+ 
+ fcontract-mode=
+ C++ Var(flag_contract_mode) Enum(on_off) Joined Init(1) RejectNegative
+ -fcontract-mode=[on|off]	Enable or disable all contract facilities (default on).
+ 
+ fcontract-continuation-mode=
+ C++ Joined RejectNegative
+ -fcontract-continuation-mode=[on|off]	Enable or disable contract continuation mode (default off).
+ 
+ fcontract-role=
+ C++ Joined RejectNegative
+ -fcontract-role=<name>:<semantics>	Specify the semantics for all levels in a role (default, review), or a custom contract role with given semantics (ex: opt:assume,assume,assume).
+ 
+ fcontract-semantic=
+ C++ Joined RejectNegative
+ -fcontract-semantic=<level>:<semantic>	Specify the concrete semantics for level.
+ 
  fcoroutines
  C++ LTO Var(flag_coroutines)
  Enable C++ coroutines (experimental).
*************** fsized-deallocation
*** 2052,2057 ****
--- 2134,2146 ----
  C++ ObjC++ Var(flag_sized_deallocation) Init(-1)
  Enable C++14 sized deallocation support.
  
+ fstrict-flex-arrays
+ C C++ Common Alias(fstrict-flex-arrays=,3,0)
+ 
+ fstrict-flex-arrays=
+ C C++ Common Joined RejectNegative UInteger Var(flag_strict_flex_arrays) Init(0) IntegerRange(0,3)
+ -fstrict-flex-arrays=<level>    Control when to treat the trailing array of a structure as a flexible array member for the purposes of accessing the elements of such an array. The default is treating all trailing arrays of structures as flexible array members.
+ 
  fsquangle
  C++ ObjC++ WarnRemoved
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/cppspec.cc gcc-13.1.0/gcc/c-family/cppspec.cc
*** gcc-12.2.0/gcc/c-family/cppspec.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/cppspec.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Specific flags and argument handling of the C preprocessor.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Specific flags and argument handling of the C preprocessor.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/known-headers.cc gcc-13.1.0/gcc/c-family/known-headers.cc
*** gcc-12.2.0/gcc/c-family/known-headers.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/known-headers.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** get_string_macro_hint (const char *name,
*** 79,86 ****
    if ((lib == STDLIB_C && flag_isoc99)
        || (lib == STDLIB_CPLUSPLUS && cxx_dialect >= cxx11 ))
      {
!       const size_t num_c99_cxx11_macros
! 	= sizeof (c99_cxx11_macros) / sizeof (c99_cxx11_macros[0]);
        for (size_t i = 0; i < num_c99_cxx11_macros; i++)
  	if (strcmp (name, c99_cxx11_macros[i]) == 0)
  	  return lib == STDLIB_C ? "<inttypes.h>" : "<cinttypes>";
--- 79,85 ----
    if ((lib == STDLIB_C && flag_isoc99)
        || (lib == STDLIB_CPLUSPLUS && cxx_dialect >= cxx11 ))
      {
!       const size_t num_c99_cxx11_macros = ARRAY_SIZE (c99_cxx11_macros);
        for (size_t i = 0; i < num_c99_cxx11_macros; i++)
  	if (strcmp (name, c99_cxx11_macros[i]) == 0)
  	  return lib == STDLIB_C ? "<inttypes.h>" : "<cinttypes>";
*************** get_stdlib_header_for_name (const char *
*** 218,224 ****
      {"WCHAR_MAX", {"<wchar.h>", "<cwchar>"} },
      {"WCHAR_MIN", {"<wchar.h>", "<cwchar>"} }
    };
!   const size_t num_hints = sizeof (hints) / sizeof (hints[0]);
    for (size_t i = 0; i < num_hints; i++)
      if (strcmp (name, hints[i].name) == 0)
        return hints[i].header[lib];
--- 217,223 ----
      {"WCHAR_MAX", {"<wchar.h>", "<cwchar>"} },
      {"WCHAR_MIN", {"<wchar.h>", "<cwchar>"} }
    };
!   const size_t num_hints = ARRAY_SIZE (hints);
    for (size_t i = 0; i < num_hints; i++)
      if (strcmp (name, hints[i].name) == 0)
        return hints[i].header[lib];
diff -Nrcpad gcc-12.2.0/gcc/c-family/known-headers.h gcc-13.1.0/gcc/c-family/known-headers.h
*** gcc-12.2.0/gcc/c-family/known-headers.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/known-headers.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for suggestions about missing #include directives.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/c-family/name-hint.h gcc-13.1.0/gcc/c-family/name-hint.h
*** gcc-12.2.0/gcc/c-family/name-hint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/name-hint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Support for offering suggestions for handling unrecognized names.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Support for offering suggestions for handling unrecognized names.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 106,112 ****
  
    /* Take ownership of this name_hint's deferred_diagnostic, for use
       in chaining up deferred diagnostics.  */
!   std::unique_ptr<deferred_diagnostic> take_deferred () { return move (m_deferred); }
  
    /* Call this on a name_hint if the corresponding warning was not emitted,
       in which case we should also not emit the deferred_diagnostic.  */
--- 106,112 ----
  
    /* Take ownership of this name_hint's deferred_diagnostic, for use
       in chaining up deferred diagnostics.  */
!   std::unique_ptr<deferred_diagnostic> take_deferred () { return std::move (m_deferred); }
  
    /* Call this on a name_hint if the corresponding warning was not emitted,
       in which case we should also not emit the deferred_diagnostic.  */
diff -Nrcpad gcc-12.2.0/gcc/c-family/stub-objc.cc gcc-13.1.0/gcc/c-family/stub-objc.cc
*** gcc-12.2.0/gcc/c-family/stub-objc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/c-family/stub-objc.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Stub functions for Objective-C and Objective-C++ routines
     that are called from within the C and C++ front-ends,
     respectively.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Stub functions for Objective-C and Objective-C++ routines
     that are called from within the C and C++ front-ends,
     respectively.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/caller-save.cc gcc-13.1.0/gcc/caller-save.cc
*** gcc-12.2.0/gcc/caller-save.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/caller-save.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Save and restore call-clobbered registers which are live across a call.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Save and restore call-clobbered registers which are live across a call.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/calls.cc gcc-13.1.0/gcc/calls.cc
*** gcc-12.2.0/gcc/calls.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/calls.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Convert function calls to rtl insns, for GNU C compiler.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Convert function calls to rtl insns, for GNU C compiler.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 55,64 ****
--- 55,66 ----
  #include "hash-traits.h"
  #include "attribs.h"
  #include "builtins.h"
+ #include "gimple-iterator.h"
  #include "gimple-fold.h"
  #include "attr-fnspec.h"
  #include "value-query.h"
  #include "tree-pretty-print.h"
+ #include "tree-eh.h"
  
  /* Like PREFERRED_STACK_BOUNDARY but in units of bytes, not bits.  */
  #define STACK_BYTES (PREFERRED_STACK_BOUNDARY / BITS_PER_UNIT)
*************** precompute_register_parameters (int num_
*** 991,1001 ****
  	/* If we are to promote the function arg to a wider mode,
  	   do it now.  */
  
! 	if (args[i].mode != TYPE_MODE (TREE_TYPE (args[i].tree_value)))
! 	  args[i].value
! 	    = convert_modes (args[i].mode,
! 			     TYPE_MODE (TREE_TYPE (args[i].tree_value)),
! 			     args[i].value, args[i].unsignedp);
  
  	/* If the value is a non-legitimate constant, force it into a
  	   pseudo now.  TLS symbols sometimes need a call to resolve.  */
--- 993,1013 ----
  	/* If we are to promote the function arg to a wider mode,
  	   do it now.  */
  
! 	machine_mode old_mode = TYPE_MODE (TREE_TYPE (args[i].tree_value));
! 
! 	/* Some ABIs require scalar floating point modes to be returned
! 	   in a wider scalar integer mode.  We need to explicitly
! 	   reinterpret to an integer mode of the correct precision
! 	   before extending to the desired result.  */
! 	if (SCALAR_INT_MODE_P (args[i].mode)
! 	    && SCALAR_FLOAT_MODE_P (old_mode)
! 	    && known_gt (GET_MODE_SIZE (args[i].mode),
! 			 GET_MODE_SIZE (old_mode)))
! 	  args[i].value = convert_float_to_wider_int (args[i].mode, old_mode,
! 						      args[i].value);
! 	else if (args[i].mode != old_mode)
! 	  args[i].value = convert_modes (args[i].mode, old_mode,
! 					 args[i].value, args[i].unsignedp);
  
  	/* If the value is a non-legitimate constant, force it into a
  	   pseudo now.  TLS symbols sometimes need a call to resolve.  */
*************** store_unaligned_arguments_into_pseudos (
*** 1215,1221 ****
  
  	    bytes -= bitsize / BITS_PER_UNIT;
  	    store_bit_field (reg, bitsize, endian_correction, 0, 0,
! 			     word_mode, word, false);
  	  }
        }
  }
--- 1227,1233 ----
  
  	    bytes -= bitsize / BITS_PER_UNIT;
  	    store_bit_field (reg, bitsize, endian_correction, 0, 0,
! 			     word_mode, word, false, false);
  	  }
        }
  }
*************** load_register_parameters (struct arg_dat
*** 2094,2100 ****
  	  poly_int64 size = 0;
  	  HOST_WIDE_INT const_size = 0;
  	  rtx_insn *before_arg = get_last_insn ();
! 	  tree type = TREE_TYPE (args[i].tree_value);
  	  if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type))
  	    type = TREE_TYPE (first_field (type));
  	  /* Set non-negative if we must move a word at a time, even if
--- 2106,2113 ----
  	  poly_int64 size = 0;
  	  HOST_WIDE_INT const_size = 0;
  	  rtx_insn *before_arg = get_last_insn ();
! 	  tree tree_value = args[i].tree_value;
! 	  tree type = TREE_TYPE (tree_value);
  	  if (RECORD_OR_UNION_TYPE_P (type) && TYPE_TRANSPARENT_AGGR (type))
  	    type = TREE_TYPE (first_field (type));
  	  /* Set non-negative if we must move a word at a time, even if
*************** load_register_parameters (struct arg_dat
*** 2171,2176 ****
--- 2184,2208 ----
  	      emit_move_insn (gen_rtx_REG (word_mode, REGNO (reg) + j),
  			      args[i].aligned_regs[j]);
  
+ 	  /* If we need a single register and the source is a constant
+ 	     VAR_DECL with a simple constructor, expand that constructor
+ 	     via a pseudo rather than read from (possibly misaligned)
+ 	     memory.  PR middle-end/95126.  */
+ 	  else if (nregs == 1
+ 		   && partial == 0
+ 		   && !args[i].pass_on_stack
+ 		   && VAR_P (tree_value)
+ 		   && TREE_READONLY (tree_value)
+ 		   && !TREE_SIDE_EFFECTS (tree_value)
+ 		   && immediate_const_ctor_p (DECL_INITIAL (tree_value)))
+ 	    {
+ 	      rtx target = gen_reg_rtx (word_mode);
+ 	      store_constructor (DECL_INITIAL (tree_value), target, 0,
+ 				 int_expr_size (DECL_INITIAL (tree_value)),
+ 				 false);
+ 	      reg = gen_rtx_REG (word_mode, REGNO (reg));
+ 	      emit_move_insn (reg, target);
+ 	    }
  	  else if (partial == 0 || args[i].pass_on_stack)
  	    {
  	      /* SIZE and CONST_SIZE are 0 for partial arguments and
*************** expand_call (tree exp, rtx target, int i
*** 2876,2883 ****
      }
  
    /* Count the arguments and set NUM_ACTUALS.  */
!   num_actuals =
!     call_expr_nargs (exp) + num_complex_actuals + structure_value_addr_parm;
  
    /* Compute number of named args.
       First, do a raw count of the args for INIT_CUMULATIVE_ARGS.  */
--- 2908,2915 ----
      }
  
    /* Count the arguments and set NUM_ACTUALS.  */
!   num_actuals
!     = call_expr_nargs (exp) + num_complex_actuals + structure_value_addr_parm;
  
    /* Compute number of named args.
       First, do a raw count of the args for INIT_CUMULATIVE_ARGS.  */
*************** expand_call (tree exp, rtx target, int i
*** 2887,2892 ****
--- 2919,2926 ----
        = (list_length (type_arg_types)
  	 /* Count the struct value address, if it is passed as a parm.  */
  	 + structure_value_addr_parm);
+   else if (TYPE_NO_NAMED_ARGS_STDARG_P (funtype))
+     n_named_args = 0;
    else
      /* If we know nothing, treat all args as named.  */
      n_named_args = num_actuals;
*************** expand_call (tree exp, rtx target, int i
*** 2925,2930 ****
--- 2959,2966 ----
  	   && ! targetm.calls.pretend_outgoing_varargs_named (args_so_far))
      /* Don't include the last named arg.  */
      --n_named_args;
+   else if (TYPE_NO_NAMED_ARGS_STDARG_P (funtype))
+     n_named_args = 0;
    else
      /* Treat all args as named.  */
      n_named_args = num_actuals;
*************** expand_call (tree exp, rtx target, int i
*** 3123,3129 ****
        if (pass && (flags & ECF_MALLOC))
  	start_sequence ();
  
!       if (pass == 0
  	  && crtl->stack_protect_guard
  	  && targetm.stack_protect_runtime_enabled_p ())
  	stack_protect_epilogue ();
--- 3159,3168 ----
        if (pass && (flags & ECF_MALLOC))
  	start_sequence ();
  
!       /* Check the canary value for sibcall or function which doesn't
! 	 return and could throw.  */
!       if ((pass == 0
! 	   || ((flags & ECF_NORETURN) != 0 && tree_could_throw_p (exp)))
  	  && crtl->stack_protect_guard
  	  && targetm.stack_protect_runtime_enabled_p ())
  	stack_protect_epilogue ();
*************** expand_call (tree exp, rtx target, int i
*** 3804,3821 ****
  	{
  	  tree type = rettype;
  	  int unsignedp = TYPE_UNSIGNED (type);
  	  machine_mode pmode;
  
  	  /* Ensure we promote as expected, and get the new unsignedness.  */
! 	  pmode = promote_function_mode (type, TYPE_MODE (type), &unsignedp,
  					 funtype, 1);
  	  gcc_assert (GET_MODE (target) == pmode);
  
! 	  poly_uint64 offset = subreg_lowpart_offset (TYPE_MODE (type),
! 						      GET_MODE (target));
! 	  target = gen_rtx_SUBREG (TYPE_MODE (type), target, offset);
! 	  SUBREG_PROMOTED_VAR_P (target) = 1;
! 	  SUBREG_PROMOTED_SET (target, unsignedp);
  	}
  
        /* If size of args is variable or this was a constructor call for a stack
--- 3843,3866 ----
  	{
  	  tree type = rettype;
  	  int unsignedp = TYPE_UNSIGNED (type);
+ 	  machine_mode ret_mode = TYPE_MODE (type);
  	  machine_mode pmode;
  
  	  /* Ensure we promote as expected, and get the new unsignedness.  */
! 	  pmode = promote_function_mode (type, ret_mode, &unsignedp,
  					 funtype, 1);
  	  gcc_assert (GET_MODE (target) == pmode);
  
! 	  if (SCALAR_INT_MODE_P (pmode)
! 	      && SCALAR_FLOAT_MODE_P (ret_mode)
! 	      && known_gt (GET_MODE_SIZE (pmode), GET_MODE_SIZE (ret_mode)))
! 	    target = convert_wider_int_to_float (ret_mode, pmode, target);
! 	  else
! 	    {
! 	      target = gen_lowpart_SUBREG (ret_mode, target);
! 	      SUBREG_PROMOTED_VAR_P (target) = 1;
! 	      SUBREG_PROMOTED_SET (target, unsignedp);
! 	    }
  	}
  
        /* If size of args is variable or this was a constructor call for a stack
diff -Nrcpad gcc-12.2.0/gcc/calls.h gcc-13.1.0/gcc/calls.h
*** gcc-12.2.0/gcc/calls.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/calls.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations and data types for RTL call insn generation.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Declarations and data types for RTL call insn generation.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/ccmp.cc gcc-13.1.0/gcc/ccmp.cc
*** gcc-12.2.0/gcc/ccmp.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ccmp.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Conditional compare related functions
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Conditional compare related functions
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/ccmp.h gcc-13.1.0/gcc/ccmp.h
*** gcc-12.2.0/gcc/ccmp.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/ccmp.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Conditional comapre related functions.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Conditional comapre related functions.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfg-flags.def gcc-13.1.0/gcc/cfg-flags.def
*** gcc-12.2.0/gcc/cfg-flags.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfg-flags.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Flags on basic blocks and edges.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Flags on basic blocks and edges.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfg.cc gcc-13.1.0/gcc/cfg.cc
*** gcc-12.2.0/gcc/cfg.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfg.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** dump_bb_info (FILE *outf, basic_block bb
*** 787,793 ****
        NULL
  #undef DEF_BASIC_BLOCK_FLAG
      };
!   const unsigned n_bitnames = sizeof (bb_bitnames) / sizeof (char *);
    bool first;
    char *s_indent = (char *) alloca ((size_t) indent + 1);
    memset ((void *) s_indent, ' ', (size_t) indent);
--- 787,793 ----
        NULL
  #undef DEF_BASIC_BLOCK_FLAG
      };
!   const unsigned n_bitnames = ARRAY_SIZE (bb_bitnames);
    bool first;
    char *s_indent = (char *) alloca ((size_t) indent + 1);
    memset ((void *) s_indent, ' ', (size_t) indent);
diff -Nrcpad gcc-12.2.0/gcc/cfg.h gcc-13.1.0/gcc/cfg.h
*** gcc-12.2.0/gcc/cfg.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfg.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph manipulation code header file.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph manipulation code header file.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfganal.cc gcc-13.1.0/gcc/cfganal.cc
*** gcc-12.2.0/gcc/cfganal.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfganal.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph analysis code for GNU compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph analysis code for GNU compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfganal.h gcc-13.1.0/gcc/cfganal.h
*** gcc-12.2.0/gcc/cfganal.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfganal.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph analysis header file.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph analysis header file.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfgbuild.cc gcc-13.1.0/gcc/cfgbuild.cc
*** gcc-12.2.0/gcc/cfgbuild.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgbuild.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph building code for GNU compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph building code for GNU compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** find_bb_boundaries (basic_block bb)
*** 445,450 ****
--- 445,451 ----
    rtx_insn *debug_insn = NULL;
    edge fallthru = NULL;
    bool skip_purge;
+   bool seen_note_after_debug = false;
  
    if (insn == end)
      return;
*************** find_bb_boundaries (basic_block bb)
*** 492,498 ****
        if (code == DEBUG_INSN)
  	{
  	  if (flow_transfer_insn && !debug_insn)
! 	    debug_insn = insn;
  	}
        /* In case we've previously seen an insn that effects a control
  	 flow transfer, split the block.  */
--- 493,502 ----
        if (code == DEBUG_INSN)
  	{
  	  if (flow_transfer_insn && !debug_insn)
! 	    {
! 	      debug_insn = insn;
! 	      seen_note_after_debug = false;
! 	    }
  	}
        /* In case we've previously seen an insn that effects a control
  	 flow transfer, split the block.  */
*************** find_bb_boundaries (basic_block bb)
*** 506,512 ****
  	     insn instead of before the non-debug insn, so that the debug
  	     insns are not lost.  */
  	  if (debug_insn && code != CODE_LABEL && code != BARRIER)
! 	    prev = PREV_INSN (debug_insn);
  	  fallthru = split_block (bb, prev);
  	  if (flow_transfer_insn)
  	    {
--- 510,549 ----
  	     insn instead of before the non-debug insn, so that the debug
  	     insns are not lost.  */
  	  if (debug_insn && code != CODE_LABEL && code != BARRIER)
! 	    {
! 	      prev = PREV_INSN (debug_insn);
! 	      if (seen_note_after_debug)
! 		{
! 		  /* Though, if there are NOTEs intermixed with DEBUG_INSNs,
! 		     move the NOTEs before the DEBUG_INSNs and split after
! 		     the last NOTE.  */
! 		  rtx_insn *first = NULL, *last = NULL;
! 		  for (x = debug_insn; x != insn; x = NEXT_INSN (x))
! 		    {
! 		      if (NOTE_P (x))
! 			{
! 			  if (first == NULL)
! 			    first = x;
! 			  last = x;
! 			}
! 		      else
! 			{
! 			  gcc_assert (DEBUG_INSN_P (x));
! 			  if (first)
! 			    {
! 			      reorder_insns_nobb (first, last, prev);
! 			      prev = last;
! 			      first = last = NULL;
! 			    }
! 			}
! 		    }
! 		  if (first)
! 		    {
! 		      reorder_insns_nobb (first, last, prev);
! 		      prev = last;
! 		    }
! 		}
! 	    }
  	  fallthru = split_block (bb, prev);
  	  if (flow_transfer_insn)
  	    {
*************** find_bb_boundaries (basic_block bb)
*** 547,552 ****
--- 584,597 ----
  	    flow_transfer_insn = prev_nonnote_nondebug_insn_bb (insn);
  	  debug_insn = NULL;
  	}
+       else if (debug_insn)
+ 	{
+ 	  if (code == NOTE)
+ 	    seen_note_after_debug = true;
+ 	  else
+ 	    /* Jump tables.  */
+ 	    debug_insn = NULL;
+ 	}
  
        if (control_flow_insn_p (insn))
  	flow_transfer_insn = insn;
diff -Nrcpad gcc-12.2.0/gcc/cfgbuild.h gcc-13.1.0/gcc/cfgbuild.h
*** gcc-12.2.0/gcc/cfgbuild.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgbuild.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph building header file.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph building header file.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfgcleanup.cc gcc-13.1.0/gcc/cfgcleanup.cc
*** gcc-12.2.0/gcc/cfgcleanup.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgcleanup.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow optimization code for GNU compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow optimization code for GNU compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** mark_effect (rtx exp, regset nonequal)
*** 208,214 ****
        return false;
  
      case SET:
!       if (rtx_equal_for_cselib_p (SET_DEST (exp), SET_SRC (exp)))
  	return false;
        dest = SET_DEST (exp);
        if (dest == pc_rtx)
--- 208,214 ----
        return false;
  
      case SET:
!       if (cselib_redundant_set_p (exp))
  	return false;
        dest = SET_DEST (exp);
        if (dest == pc_rtx)
*************** trivially_empty_bb_p (basic_block bb)
*** 2599,2605 ****
     return value.  Fill in *RET and *USE with the return and use insns
     if any found, otherwise NULL.  All CLOBBERs are ignored.  */
  
! static bool
  bb_is_just_return (basic_block bb, rtx_insn **ret, rtx_insn **use)
  {
    *ret = *use = NULL;
--- 2599,2605 ----
     return value.  Fill in *RET and *USE with the return and use insns
     if any found, otherwise NULL.  All CLOBBERs are ignored.  */
  
! bool
  bb_is_just_return (basic_block bb, rtx_insn **ret, rtx_insn **use)
  {
    *ret = *use = NULL;
*************** public:
*** 3227,3233 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *);
  
  }; // class pass_jump
  
--- 3227,3233 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override;
  
  }; // class pass_jump
  
*************** public:
*** 3274,3284 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
    {
      return flag_thread_jumps && flag_expensive_optimizations;
    }
!   virtual unsigned int execute (function *);
  
  }; // class pass_jump_after_combine
  
--- 3274,3284 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
    {
      return flag_thread_jumps && flag_expensive_optimizations;
    }
!   unsigned int execute (function *) final override;
  
  }; // class pass_jump_after_combine
  
*************** public:
*** 3322,3328 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *)
      {
        cleanup_cfg (flag_crossjumping ? CLEANUP_CROSSJUMP : 0);
        return 0;
--- 3322,3328 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override
      {
        cleanup_cfg (flag_crossjumping ? CLEANUP_CROSSJUMP : 0);
        return 0;
diff -Nrcpad gcc-12.2.0/gcc/cfgcleanup.h gcc-13.1.0/gcc/cfgcleanup.h
*** gcc-12.2.0/gcc/cfgcleanup.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgcleanup.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow optimization header file.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow optimization header file.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern int flow_find_head_matching_seque
*** 30,34 ****
--- 30,35 ----
  extern bool delete_unreachable_blocks (void);
  extern void delete_dead_jumptables (void);
  extern bool cleanup_cfg (int);
+ extern bool bb_is_just_return (basic_block, rtx_insn **, rtx_insn **);
  
  #endif /* GCC_CFGCLEANUP_H */
diff -Nrcpad gcc-12.2.0/gcc/cfgexpand.cc gcc-13.1.0/gcc/cfgexpand.cc
*** gcc-12.2.0/gcc/cfgexpand.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgexpand.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* A pass for lowering trees to RTL.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* A pass for lowering trees to RTL.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** expand_value_return (rtx val)
*** 3720,3726 ****
          mode = promote_function_mode (type, old_mode, &unsignedp, funtype, 1);
  
        if (mode != old_mode)
! 	val = convert_modes (mode, old_mode, val, unsignedp);
  
        if (GET_CODE (return_reg) == PARALLEL)
  	emit_group_load (return_reg, val, type, int_size_in_bytes (type));
--- 3720,3737 ----
          mode = promote_function_mode (type, old_mode, &unsignedp, funtype, 1);
  
        if (mode != old_mode)
! 	{
! 	  /* Some ABIs require scalar floating point modes to be returned
! 	     in a wider scalar integer mode.  We need to explicitly
! 	     reinterpret to an integer mode of the correct precision
! 	     before extending to the desired result.  */
! 	  if (SCALAR_INT_MODE_P (mode)
! 	      && SCALAR_FLOAT_MODE_P (old_mode)
! 	      && known_gt (GET_MODE_SIZE (mode), GET_MODE_SIZE (old_mode)))
! 	    val = convert_float_to_wider_int (mode, old_mode, val);
! 	  else
! 	    val = convert_modes (mode, old_mode, val, unsignedp);
! 	}
  
        if (GET_CODE (return_reg) == PARALLEL)
  	emit_group_load (return_reg, val, type, int_size_in_bytes (type));
*************** expand_debug_expr (tree exp)
*** 4565,4571 ****
  	      || !DECL_NAME (exp)
  	      || DECL_HARD_REGISTER (exp)
  	      || DECL_IN_CONSTANT_POOL (exp)
! 	      || mode == VOIDmode)
  	    return NULL;
  
  	  op0 = make_decl_rtl_for_debug (exp);
--- 4576,4583 ----
  	      || !DECL_NAME (exp)
  	      || DECL_HARD_REGISTER (exp)
  	      || DECL_IN_CONSTANT_POOL (exp)
! 	      || mode == VOIDmode
! 	      || symtab_node::get (exp) == NULL)
  	    return NULL;
  
  	  op0 = make_decl_rtl_for_debug (exp);
*************** expand_debug_expr (tree exp)
*** 4574,4579 ****
--- 4586,4595 ----
  	      || SYMBOL_REF_DECL (XEXP (op0, 0)) != exp)
  	    return NULL;
  	}
+       else if (VAR_P (exp)
+ 	       && is_global_var (exp)
+ 	       && symtab_node::get (exp) == NULL)
+ 	return NULL;
        else
  	op0 = copy_rtx (op0);
  
*************** expand_debug_expr (tree exp)
*** 5349,5354 ****
--- 5365,5374 ----
      case VEC_WIDEN_MULT_ODD_EXPR:
      case VEC_WIDEN_LSHIFT_HI_EXPR:
      case VEC_WIDEN_LSHIFT_LO_EXPR:
+     case VEC_WIDEN_PLUS_HI_EXPR:
+     case VEC_WIDEN_PLUS_LO_EXPR:
+     case VEC_WIDEN_MINUS_HI_EXPR:
+     case VEC_WIDEN_MINUS_LO_EXPR:
      case VEC_PERM_EXPR:
      case VEC_DUPLICATE_EXPR:
      case VEC_SERIES_EXPR:
*************** expand_debug_expr (tree exp)
*** 5385,5390 ****
--- 5405,5412 ----
      case WIDEN_MULT_EXPR:
      case WIDEN_MULT_PLUS_EXPR:
      case WIDEN_MULT_MINUS_EXPR:
+     case WIDEN_PLUS_EXPR:
+     case WIDEN_MINUS_EXPR:
        if (SCALAR_INT_MODE_P (GET_MODE (op0))
  	  && SCALAR_INT_MODE_P (mode))
  	{
*************** expand_debug_expr (tree exp)
*** 5397,5402 ****
--- 5419,5428 ----
  	    op1 = simplify_gen_unary (ZERO_EXTEND, mode, op1, inner_mode);
  	  else
  	    op1 = simplify_gen_unary (SIGN_EXTEND, mode, op1, inner_mode);
+ 	  if (TREE_CODE (exp) == WIDEN_PLUS_EXPR)
+ 	    return simplify_gen_binary (PLUS, mode, op0, op1);
+ 	  else if (TREE_CODE (exp) == WIDEN_MINUS_EXPR)
+ 	    return simplify_gen_binary (MINUS, mode, op0, op1);
  	  op0 = simplify_gen_binary (MULT, mode, op0, op1);
  	  if (TREE_CODE (exp) == WIDEN_MULT_EXPR)
  	    return op0;
*************** discover_nonconstant_array_refs_r (tree
*** 6275,6280 ****
--- 6301,6315 ----
  
    if (IS_TYPE_OR_DECL_P (t))
      *walk_subtrees = 0;
+   else if (REFERENCE_CLASS_P (t) && TREE_THIS_VOLATILE (t))
+     {
+       t = get_base_address (t);
+       if (t && DECL_P (t)
+ 	  && DECL_MODE (t) != BLKmode
+ 	  && !TREE_ADDRESSABLE (t))
+ 	bitmap_set_bit (forced_stack_vars, DECL_UID (t));
+       *walk_subtrees = 0;
+     }
    else if (TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF)
      {
        while (((TREE_CODE (t) == ARRAY_REF || TREE_CODE (t) == ARRAY_RANGE_REF)
*************** public:
*** 6568,6574 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *);
  
  }; // class pass_expand
  
--- 6603,6609 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override;
  
  }; // class pass_expand
  
diff -Nrcpad gcc-12.2.0/gcc/cfgexpand.h gcc-13.1.0/gcc/cfgexpand.h
*** gcc-12.2.0/gcc/cfgexpand.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgexpand.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Header file for lowering trees to RTL.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Header file for lowering trees to RTL.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfghooks.cc gcc-13.1.0/gcc/cfghooks.cc
*** gcc-12.2.0/gcc/cfghooks.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfghooks.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 29,34 ****
--- 29,35 ----
  #include "diagnostic-core.h"
  #include "dumpfile.h"
  #include "cfganal.h"
+ #include "tree.h"
  #include "tree-ssa.h"
  #include "cfgloop.h"
  #include "sreal.h"
*************** split_block_1 (basic_block bb, void *i)
*** 541,547 ****
      return NULL;
  
    new_bb->count = bb->count;
-   new_bb->discriminator = bb->discriminator;
  
    if (dom_info_available_p (CDI_DOMINATORS))
      {
--- 542,547 ----
*************** can_duplicate_block_p (const_basic_block
*** 1086,1094 ****
    return cfg_hooks->can_duplicate_block_p (bb);
  }
  
! /* Duplicates basic block BB and redirects edge E to it.  Returns the
!    new basic block.  The new basic block is placed after the basic block
!    AFTER.  */
  
  basic_block
  duplicate_block (basic_block bb, edge e, basic_block after, copy_bb_data *id)
--- 1086,1101 ----
    return cfg_hooks->can_duplicate_block_p (bb);
  }
  
! /* Duplicate basic block BB, place it after AFTER (if non-null) and redirect
!    edge E to it (if non-null).  Return the new basic block.
! 
!    If BB contains a returns_twice call, the caller is responsible for recreating
!    incoming abnormal edges corresponding to the "second return" for the copy.
!    gimple_can_duplicate_bb_p rejects such blocks, while RTL likes to live
!    dangerously.
! 
!    If BB has incoming abnormal edges for some other reason, their destinations
!    should be tied to label(s) of the original BB and not the copy.  */
  
  basic_block
  duplicate_block (basic_block bb, edge e, basic_block after, copy_bb_data *id)
diff -Nrcpad gcc-12.2.0/gcc/cfghooks.h gcc-13.1.0/gcc/cfghooks.h
*** gcc-12.2.0/gcc/cfghooks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfghooks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
--- 1,5 ----
  /* Hooks for cfg representation specific functions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Sebastian Pop <s.pop@laposte.net>
  
  This file is part of GCC.
*************** extern void verify_flow_info (void);
*** 206,212 ****
  /* Check control flow invariants, if internal consistency checks are
     enabled.  */
  
! static inline void
  checking_verify_flow_info (void)
  {
    /* TODO: Add a separate option for -fchecking=cfg.  */
--- 206,212 ----
  /* Check control flow invariants, if internal consistency checks are
     enabled.  */
  
! inline void
  checking_verify_flow_info (void)
  {
    /* TODO: Add a separate option for -fchecking=cfg.  */
diff -Nrcpad gcc-12.2.0/gcc/cfgloop.cc gcc-13.1.0/gcc/cfgloop.cc
*** gcc-12.2.0/gcc/cfgloop.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgloop.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Natural loop discovery code for GNU compiler.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Natural loop discovery code for GNU compiler.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** find_subloop_latch_edge_by_profile (vec<
*** 619,625 ****
      }
  
    if (!tcount.initialized_p () || !(tcount.ipa () > HEAVY_EDGE_MIN_SAMPLES)
!       || (tcount - mcount).apply_scale (HEAVY_EDGE_RATIO, 1) > tcount)
      return NULL;
  
    if (dump_file)
--- 619,625 ----
      }
  
    if (!tcount.initialized_p () || !(tcount.ipa () > HEAVY_EDGE_MIN_SAMPLES)
!       || (tcount - mcount) * HEAVY_EDGE_RATIO > tcount)
      return NULL;
  
    if (dump_file)
diff -Nrcpad gcc-12.2.0/gcc/cfgloop.h gcc-13.1.0/gcc/cfgloop.h
*** gcc-12.2.0/gcc/cfgloop.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgloop.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Natural loop functions
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Natural loop functions
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 148,154 ****
    class loop *next;
  
    /* Auxiliary info specific to a pass.  */
!   PTR GTY ((skip (""))) aux;
  
    /* The number of times the latch of the loop is executed.  This can be an
       INTEGER_CST, or a symbolic expression representing the number of
--- 148,154 ----
    class loop *next;
  
    /* Auxiliary info specific to a pass.  */
!   void *GTY ((skip (""))) aux;
  
    /* The number of times the latch of the loop is executed.  This can be an
       INTEGER_CST, or a symbolic expression representing the number of
*************** public:
*** 280,300 ****
  #define LOOP_C_FINITE		(1 << 1)
  
  /* Set C to the LOOP constraint.  */
! static inline void
  loop_constraint_set (class loop *loop, unsigned c)
  {
    loop->constraints |= c;
  }
  
  /* Clear C from the LOOP constraint.  */
! static inline void
  loop_constraint_clear (class loop *loop, unsigned c)
  {
    loop->constraints &= ~c;
  }
  
  /* Check if C is set in the LOOP constraint.  */
! static inline bool
  loop_constraint_set_p (class loop *loop, unsigned c)
  {
    return (loop->constraints & c) == c;
--- 280,300 ----
  #define LOOP_C_FINITE		(1 << 1)
  
  /* Set C to the LOOP constraint.  */
! inline void
  loop_constraint_set (class loop *loop, unsigned c)
  {
    loop->constraints |= c;
  }
  
  /* Clear C from the LOOP constraint.  */
! inline void
  loop_constraint_clear (class loop *loop, unsigned c)
  {
    loop->constraints &= ~c;
  }
  
  /* Check if C is set in the LOOP constraint.  */
! inline bool
  loop_constraint_set_p (class loop *loop, unsigned c)
  {
    return (loop->constraints & c) == c;
*************** extern void iv_analysis_done (void);
*** 508,514 ****
  extern class niter_desc *get_simple_loop_desc (class loop *loop);
  extern void free_simple_loop_desc (class loop *loop);
  
! static inline class niter_desc *
  simple_loop_desc (class loop *loop)
  {
    return loop->simple_loop_desc;
--- 508,514 ----
  extern class niter_desc *get_simple_loop_desc (class loop *loop);
  extern void free_simple_loop_desc (class loop *loop);
  
! inline class niter_desc *
  simple_loop_desc (class loop *loop)
  {
    return loop->simple_loop_desc;
*************** simple_loop_desc (class loop *loop)
*** 518,524 ****
  
  /* Returns the loop with index NUM from FNs loop tree.  */
  
! static inline class loop *
  get_loop (struct function *fn, unsigned num)
  {
    return (*loops_for_fn (fn)->larray)[num];
--- 518,524 ----
  
  /* Returns the loop with index NUM from FNs loop tree.  */
  
! inline class loop *
  get_loop (struct function *fn, unsigned num)
  {
    return (*loops_for_fn (fn)->larray)[num];
*************** get_loop (struct function *fn, unsigned
*** 526,532 ****
  
  /* Returns the number of superloops of LOOP.  */
  
! static inline unsigned
  loop_depth (const class loop *loop)
  {
    return vec_safe_length (loop->superloops);
--- 526,532 ----
  
  /* Returns the number of superloops of LOOP.  */
  
! inline unsigned
  loop_depth (const class loop *loop)
  {
    return vec_safe_length (loop->superloops);
*************** loop_depth (const class loop *loop)
*** 535,541 ****
  /* Returns the immediate superloop of LOOP, or NULL if LOOP is the outermost
     loop.  */
  
! static inline class loop *
  loop_outer (const class loop *loop)
  {
    unsigned n = vec_safe_length (loop->superloops);
--- 535,541 ----
  /* Returns the immediate superloop of LOOP, or NULL if LOOP is the outermost
     loop.  */
  
! inline class loop *
  loop_outer (const class loop *loop)
  {
    unsigned n = vec_safe_length (loop->superloops);
*************** loop_outer (const class loop *loop)
*** 548,554 ****
  
  /* Returns true if LOOP has at least one exit edge.  */
  
! static inline bool
  loop_has_exit_edges (const class loop *loop)
  {
    return loop->exits->next->e != NULL;
--- 548,554 ----
  
  /* Returns true if LOOP has at least one exit edge.  */
  
! inline bool
  loop_has_exit_edges (const class loop *loop)
  {
    return loop->exits->next->e != NULL;
*************** get_loops (struct function *fn)
*** 569,575 ****
  /* Returns the number of loops in FN (including the removed
     ones and the fake loop that forms the root of the loop tree).  */
  
! static inline unsigned
  number_of_loops (struct function *fn)
  {
    struct loops *loops = loops_for_fn (fn);
--- 569,575 ----
  /* Returns the number of loops in FN (including the removed
     ones and the fake loop that forms the root of the loop tree).  */
  
! inline unsigned
  number_of_loops (struct function *fn)
  {
    struct loops *loops = loops_for_fn (fn);
*************** number_of_loops (struct function *fn)
*** 582,594 ****
  /* Returns true if state of the loops satisfies all properties
     described by FLAGS.  */
  
! static inline bool
  loops_state_satisfies_p (function *fn, unsigned flags)
  {
    return (loops_for_fn (fn)->state & flags) == flags;
  }
  
! static inline bool
  loops_state_satisfies_p (unsigned flags)
  {
    return loops_state_satisfies_p (cfun, flags);
--- 582,594 ----
  /* Returns true if state of the loops satisfies all properties
     described by FLAGS.  */
  
! inline bool
  loops_state_satisfies_p (function *fn, unsigned flags)
  {
    return (loops_for_fn (fn)->state & flags) == flags;
  }
  
! inline bool
  loops_state_satisfies_p (unsigned flags)
  {
    return loops_state_satisfies_p (cfun, flags);
*************** loops_state_satisfies_p (unsigned flags)
*** 596,608 ****
  
  /* Sets FLAGS to the loops state.  */
  
! static inline void
  loops_state_set (function *fn, unsigned flags)
  {
    loops_for_fn (fn)->state |= flags;
  }
  
! static inline void
  loops_state_set (unsigned flags)
  {
    loops_state_set (cfun, flags);
--- 596,608 ----
  
  /* Sets FLAGS to the loops state.  */
  
! inline void
  loops_state_set (function *fn, unsigned flags)
  {
    loops_for_fn (fn)->state |= flags;
  }
  
! inline void
  loops_state_set (unsigned flags)
  {
    loops_state_set (cfun, flags);
*************** loops_state_set (unsigned flags)
*** 610,622 ****
  
  /* Clears FLAGS from the loops state.  */
  
! static inline void
  loops_state_clear (function *fn, unsigned flags)
  {
    loops_for_fn (fn)->state &= ~flags;
  }
  
! static inline void
  loops_state_clear (unsigned flags)
  {
    if (!current_loops)
--- 610,622 ----
  
  /* Clears FLAGS from the loops state.  */
  
! inline void
  loops_state_clear (function *fn, unsigned flags)
  {
    loops_for_fn (fn)->state &= ~flags;
  }
  
! inline void
  loops_state_clear (unsigned flags)
  {
    if (!current_loops)
*************** loops_state_clear (unsigned flags)
*** 627,633 ****
  /* Check loop structure invariants, if internal consistency checks are
     enabled.  */
  
! static inline void
  checking_verify_loop_structure (void)
  {
    /* VERIFY_LOOP_STRUCTURE essentially asserts that no loops need fixups.
--- 627,633 ----
  /* Check loop structure invariants, if internal consistency checks are
     enabled.  */
  
! inline void
  checking_verify_loop_structure (void)
  {
    /* VERIFY_LOOP_STRUCTURE essentially asserts that no loops need fixups.
*************** extern void move_loop_invariants (void);
*** 897,903 ****
  extern auto_vec<basic_block> get_loop_hot_path (const class loop *loop);
  
  /* Returns the outermost loop of the loop nest that contains LOOP.*/
! static inline class loop *
  loop_outermost (class loop *loop)
  {
    unsigned n = vec_safe_length (loop->superloops);
--- 897,903 ----
  extern auto_vec<basic_block> get_loop_hot_path (const class loop *loop);
  
  /* Returns the outermost loop of the loop nest that contains LOOP.*/
! inline class loop *
  loop_outermost (class loop *loop)
  {
    unsigned n = vec_safe_length (loop->superloops);
*************** extern int bb_loop_depth (const_basic_bl
*** 919,925 ****
  
  /* Converts VAL to widest_int.  */
  
! static inline widest_int
  gcov_type_to_wide_int (gcov_type val)
  {
    HOST_WIDE_INT a[2];
--- 919,925 ----
  
  /* Converts VAL to widest_int.  */
  
! inline widest_int
  gcov_type_to_wide_int (gcov_type val)
  {
    HOST_WIDE_INT a[2];
diff -Nrcpad gcc-12.2.0/gcc/cfgloopanal.cc gcc-13.1.0/gcc/cfgloopanal.cc
*** gcc-12.2.0/gcc/cfgloopanal.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgloopanal.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Natural loop analysis code for GNU compiler.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Natural loop analysis code for GNU compiler.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfgloopmanip.cc gcc-13.1.0/gcc/cfgloopmanip.cc
*** gcc-12.2.0/gcc/cfgloopmanip.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgloopmanip.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Loop manipulation code for GNU compiler.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Loop manipulation code for GNU compiler.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** scale_loop_profile (class loop *loop, pr
*** 563,570 ****
  
  	  /* Probability of exit must be 1/iterations.  */
  	  count_delta = e->count ();
! 	  e->probability = profile_probability::always ()
! 				    .apply_scale (1, iteration_bound);
  	  other_e->probability = e->probability.invert ();
  
  	  /* In code below we only handle the following two updates.  */
--- 563,569 ----
  
  	  /* Probability of exit must be 1/iterations.  */
  	  count_delta = e->count ();
! 	  e->probability = profile_probability::always () / iteration_bound;
  	  other_e->probability = e->probability.invert ();
  
  	  /* In code below we only handle the following two updates.  */
*************** scale_loop_profile (class loop *loop, pr
*** 586,592 ****
  	 we look at the actual profile, if it is available.  */
        p = profile_probability::always ();
  
!       count_in = count_in.apply_scale (iteration_bound, 1);
        p = count_in.probability_in (loop->header->count);
        if (!(p > profile_probability::never ()))
  	p = profile_probability::very_unlikely ();
--- 585,591 ----
  	 we look at the actual profile, if it is available.  */
        p = profile_probability::always ();
  
!       count_in *= iteration_bound;
        p = count_in.probability_in (loop->header->count);
        if (!(p > profile_probability::never ()))
  	p = profile_probability::very_unlikely ();
*************** duplicate_loop_body_to_header_edge (clas
*** 1351,1357 ****
        unsigned j;
  
        bb = bbs[i];
-       bb->aux = 0;
  
        auto_vec<basic_block> dom_bbs = get_dominated_by (CDI_DOMINATORS, bb);
        FOR_EACH_VEC_ELT (dom_bbs, j, dominated)
--- 1350,1355 ----
diff -Nrcpad gcc-12.2.0/gcc/cfgloopmanip.h gcc-13.1.0/gcc/cfgloopmanip.h
*** gcc-12.2.0/gcc/cfgloopmanip.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgloopmanip.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Loop manipulation header.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Loop manipulation header.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cfgrtl.cc gcc-13.1.0/gcc/cfgrtl.cc
*** gcc-12.2.0/gcc/cfgrtl.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgrtl.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Control flow graph manipulation code for GNU compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 483,489 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *);
  
  }; // class pass_free_cfg
  
--- 483,489 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override;
  
  }; // class pass_free_cfg
  
*************** force_nonfallthru_and_redirect (edge e,
*** 1686,1693 ****
  	 add also edge from asm goto bb to target.  */
        if (asm_goto_edge)
  	{
! 	  new_edge->probability = new_edge->probability.apply_scale (1, 2);
! 	  jump_block->count = jump_block->count.apply_scale (1, 2);
  	  edge new_edge2 = make_edge (new_edge->src, target,
  				      e->flags & ~EDGE_FALLTHRU);
  	  new_edge2->probability = probability - new_edge->probability;
--- 1686,1693 ----
  	 add also edge from asm goto bb to target.  */
        if (asm_goto_edge)
  	{
! 	  new_edge->probability /= 2;
! 	  jump_block->count /= 2;
  	  edge new_edge2 = make_edge (new_edge->src, target,
  				      e->flags & ~EDGE_FALLTHRU);
  	  new_edge2->probability = probability - new_edge->probability;
*************** public:
*** 3698,3704 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *)
      {
        cfg_layout_initialize (0);
        return 0;
--- 3698,3704 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override
      {
        cfg_layout_initialize (0);
        return 0;
*************** public:
*** 3737,3743 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *);
  
  }; // class pass_outof_cfg_layout_mode
  
--- 3737,3743 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override;
  
  }; // class pass_outof_cfg_layout_mode
  
*************** fixup_reorder_chain (void)
*** 3901,3906 ****
--- 3901,3907 ----
    /* Now add jumps and labels as needed to match the blocks new
       outgoing edges.  */
  
+   bool remove_unreachable_blocks = false;
    for (bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb; bb ; bb = (basic_block)
         bb->aux)
      {
*************** fixup_reorder_chain (void)
*** 3909,3914 ****
--- 3910,3916 ----
        rtx ret_label = NULL_RTX;
        basic_block nb;
        edge_iterator ei;
+       bool asm_goto = false;
  
        if (EDGE_COUNT (bb->succs) == 0)
  	continue;
*************** fixup_reorder_chain (void)
*** 4015,4021 ****
  		  || e_fall->dest == EXIT_BLOCK_PTR_FOR_FN (cfun))
  		continue;
  
! 	      /* Otherwise we'll have to use the fallthru fixup below.  */
  	    }
  	  else
  	    {
--- 4017,4025 ----
  		  || e_fall->dest == EXIT_BLOCK_PTR_FOR_FN (cfun))
  		continue;
  
! 	      /* Otherwise we'll have to use the fallthru fixup below.
! 		 But avoid redirecting asm goto to EXIT.  */
! 	      asm_goto = true;
  	    }
  	  else
  	    {
*************** fixup_reorder_chain (void)
*** 4043,4052 ****
  	    continue;
  	}
  
        /* We got here if we need to add a new jump insn. 
  	 Note force_nonfallthru can delete E_FALL and thus we have to
  	 save E_FALL->src prior to the call to force_nonfallthru.  */
!       nb = force_nonfallthru_and_redirect (e_fall, e_fall->dest, ret_label);
        if (nb)
  	{
  	  nb->aux = bb->aux;
--- 4047,4079 ----
  	    continue;
  	}
  
+       /* If E_FALL->dest is just a return block, then we can emit a
+ 	 return rather than a jump to the return block.  */
+       rtx_insn *ret, *use;
+       basic_block dest;
+       if (!asm_goto
+ 	  && bb_is_just_return (e_fall->dest, &ret, &use)
+ 	  && ((PATTERN (ret) == simple_return_rtx && targetm.have_simple_return ())
+ 	      || (PATTERN (ret) == ret_rtx && targetm.have_return ())))
+ 	{
+ 	  ret_label = PATTERN (ret);
+ 	  dest = EXIT_BLOCK_PTR_FOR_FN (cfun);
+ 
+ 	  e_fall->flags &= ~EDGE_CROSSING;
+ 	  /* E_FALL->dest might become unreachable as a result of
+ 	     replacing the jump with a return.  So arrange to remove
+ 	     unreachable blocks.  */
+ 	  remove_unreachable_blocks = true;
+ 	}
+       else
+ 	{
+ 	  dest = e_fall->dest;
+ 	}
+ 
        /* We got here if we need to add a new jump insn. 
  	 Note force_nonfallthru can delete E_FALL and thus we have to
  	 save E_FALL->src prior to the call to force_nonfallthru.  */
!       nb = force_nonfallthru_and_redirect (e_fall, dest, ret_label);
        if (nb)
  	{
  	  nb->aux = bb->aux;
*************** fixup_reorder_chain (void)
*** 4134,4139 ****
--- 4161,4172 ----
  		  ei_next (&ei2);
  	    }
        }
+ 
+   /* Replacing a jump with a return may have exposed an unreachable
+      block.  Conditionally remove them if such transformations were
+      made.  */
+   if (remove_unreachable_blocks)
+     delete_unreachable_blocks ();
  }
  
  /* Perform sanity checks on the insn chain.
diff -Nrcpad gcc-12.2.0/gcc/cfgrtl.h gcc-13.1.0/gcc/cfgrtl.h
*** gcc-12.2.0/gcc/cfgrtl.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cfgrtl.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Define control flow data structures for the CFG.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Define control flow data structures for the CFG.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/cgraph.cc gcc-13.1.0/gcc/cgraph.cc
*** gcc-12.2.0/gcc/cgraph.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cgraph.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Callgraph handling code.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph handling code.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** cgraph_node::get_create (tree decl)
*** 545,556 ****
        node->order = first_clone->order;
        symtab->symtab_prevail_in_asm_name_hash (node);
        node->decl->decl_with_vis.symtab_node = node;
!       if (dump_file)
  	fprintf (dump_file, "Introduced new external node "
  		 "(%s) and turned into root of the clone tree.\n",
  		 node->dump_name ());
      }
!   else if (dump_file)
      fprintf (dump_file, "Introduced new external node "
  	     "(%s).\n", node->dump_name ());
    return node;
--- 545,556 ----
        node->order = first_clone->order;
        symtab->symtab_prevail_in_asm_name_hash (node);
        node->decl->decl_with_vis.symtab_node = node;
!       if (dump_file && symtab->state != PARSING)
  	fprintf (dump_file, "Introduced new external node "
  		 "(%s) and turned into root of the clone tree.\n",
  		 node->dump_name ());
      }
!   else if (dump_file && symtab->state != PARSING)
      fprintf (dump_file, "Introduced new external node "
  	     "(%s).\n", node->dump_name ());
    return node;
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1411,1417 ****
  {
    tree decl = gimple_call_fndecl (e->call_stmt);
    gcall *new_stmt;
-   gimple_stmt_iterator gsi;
  
    if (e->speculative)
      {
--- 1411,1416 ----
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1423,1429 ****
        else
  	{
  	  /* Be sure we redirect all speculative targets before poking
! 	     abou tindirect edge.  */
  	  gcc_checking_assert (e->callee);
  	  cgraph_edge *indirect = e->speculative_call_indirect_edge ();
  	  gcall *new_stmt;
--- 1422,1428 ----
        else
  	{
  	  /* Be sure we redirect all speculative targets before poking
! 	     about indirect edge.  */
  	  gcc_checking_assert (e->callee);
  	  cgraph_edge *indirect = e->speculative_call_indirect_edge ();
  	  gcall *new_stmt;
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1549,1555 ****
    else
      {
        if (flag_checking
! 	  && !fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE))
  	ipa_verify_edge_has_no_modifications (e);
        new_stmt = e->call_stmt;
        gimple_call_set_fndecl (new_stmt, e->callee->decl);
--- 1548,1555 ----
    else
      {
        if (flag_checking
! 	  && !fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE)
! 	  && !fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE_TRAP))
  	ipa_verify_edge_has_no_modifications (e);
        new_stmt = e->call_stmt;
        gimple_call_set_fndecl (new_stmt, e->callee->decl);
*************** cgraph_edge::redirect_call_stmt_to_calle
*** 1572,1589 ****
        && (VOID_TYPE_P (TREE_TYPE (gimple_call_fntype (new_stmt)))
  	  || should_remove_lhs_p (lhs)))
      {
        if (TREE_CODE (lhs) == SSA_NAME)
  	{
  	  tree var = create_tmp_reg_fn (DECL_STRUCT_FUNCTION (e->caller->decl),
  					TREE_TYPE (lhs), NULL);
! 	  var = get_or_create_ssa_default_def
! 		  (DECL_STRUCT_FUNCTION (e->caller->decl), var);
! 	  gimple *set_stmt = gimple_build_assign (lhs, var);
! 	  gsi = gsi_for_stmt (new_stmt);
! 	  gsi_insert_before_without_update (&gsi, set_stmt, GSI_SAME_STMT);
! 	  update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), set_stmt);
  	}
-       gimple_call_set_lhs (new_stmt, NULL_TREE);
        update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt);
      }
  
--- 1572,1588 ----
        && (VOID_TYPE_P (TREE_TYPE (gimple_call_fntype (new_stmt)))
  	  || should_remove_lhs_p (lhs)))
      {
+       gimple_call_set_lhs (new_stmt, NULL_TREE);
+       /* We need to fix up the SSA name to avoid checking errors.  */
        if (TREE_CODE (lhs) == SSA_NAME)
  	{
  	  tree var = create_tmp_reg_fn (DECL_STRUCT_FUNCTION (e->caller->decl),
  					TREE_TYPE (lhs), NULL);
! 	  SET_SSA_NAME_VAR_OR_IDENTIFIER (lhs, var);
! 	  SSA_NAME_DEF_STMT (lhs) = gimple_build_nop ();
! 	  set_ssa_default_def (DECL_STRUCT_FUNCTION (e->caller->decl),
! 			       var, lhs);
  	}
        update_stmt_fn (DECL_STRUCT_FUNCTION (e->caller->decl), new_stmt);
      }
  
*************** cgraph_update_edges_for_call_stmt_node (
*** 1636,1642 ****
  	{
  	  /* Keep calls marked as dead dead.  */
  	  if (new_stmt && is_gimple_call (new_stmt) && e->callee
! 	      && fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE))
  	    {
  	      cgraph_edge::set_call_stmt (node->get_edge (old_stmt),
  					  as_a <gcall *> (new_stmt));
--- 1635,1643 ----
  	{
  	  /* Keep calls marked as dead dead.  */
  	  if (new_stmt && is_gimple_call (new_stmt) && e->callee
! 	      && (fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE)
! 		  || fndecl_built_in_p (e->callee->decl,
! 					BUILT_IN_UNREACHABLE_TRAP)))
  	    {
  	      cgraph_edge::set_call_stmt (node->get_edge (old_stmt),
  					  as_a <gcall *> (new_stmt));
*************** cgraph_node::remove (void)
*** 1895,1902 ****
    else if (clone_of)
      {
        clone_of->clones = next_sibling_clone;
!       if (!clone_of->analyzed && !clone_of->clones && !clones)
! 	clone_of->release_body ();
      }
    if (next_sibling_clone)
      next_sibling_clone->prev_sibling_clone = prev_sibling_clone;
--- 1896,1913 ----
    else if (clone_of)
      {
        clone_of->clones = next_sibling_clone;
!       if (!clones)
! 	{
! 	  bool need_body = false;
! 	  for (cgraph_node *n = clone_of; n; n = n->clone_of)
! 	    if (n->analyzed || n->clones)
! 	      {
! 		need_body = true;
! 		break;
! 	      }
! 	  if (!need_body)
! 	    clone_of->release_body ();
! 	}
      }
    if (next_sibling_clone)
      next_sibling_clone->prev_sibling_clone = prev_sibling_clone;
*************** cgraph_node::make_local (cgraph_node *no
*** 2492,2498 ****
        node->externally_visible = false;
        node->forced_by_abi = false;
        node->local = true;
-       node->set_section (NULL);
        node->unique_name = ((node->resolution == LDPR_PREVAILING_DEF_IRONLY
  			   || node->resolution == LDPR_PREVAILING_DEF_IRONLY_EXP)
  			   && !flag_incremental_link);
--- 2503,2508 ----
*************** set_const_flag_1 (cgraph_node *node, boo
*** 2757,2762 ****
--- 2767,2775 ----
        if (!set_const || alias->get_availability () > AVAIL_INTERPOSABLE)
  	set_const_flag_1 (alias, set_const, looping, changed);
      }
+   for (struct cgraph_node *n = node->simd_clones; n != NULL;
+        n = n->simdclone->next_clone)
+     set_const_flag_1 (n, set_const, looping, changed);
    for (cgraph_edge *e = node->callers; e; e = e->next_caller)
      if (e->caller->thunk
  	&& (!set_const || e->caller->get_availability () > AVAIL_INTERPOSABLE))
*************** cgraph_node::set_pure_flag (bool pure, b
*** 2869,2874 ****
--- 2882,2890 ----
  {
    struct set_pure_flag_info info = {pure, looping, false};
    call_for_symbol_thunks_and_aliases (set_pure_flag_1, &info, !pure, true);
+   for (struct cgraph_node *n = simd_clones; n != NULL;
+        n = n->simdclone->next_clone)
+     set_pure_flag_1 (n, &info);
    return info.changed;
  }
  
*************** cgraph_edge::maybe_hot_p (void)
*** 2935,2945 ****
      return false;
    if (caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE)
      {
!       if (count.apply_scale (2, 1) < where->count.apply_scale (3, 1))
  	return false;
      }
!   else if (count.apply_scale (param_hot_bb_frequency_fraction , 1)
! 	   < where->count)
      return false;
    return true;
  }
--- 2951,2960 ----
      return false;
    if (caller->frequency == NODE_FREQUENCY_EXECUTED_ONCE)
      {
!       if (count * 2 < where->count * 3)
  	return false;
      }
!   else if (count * param_hot_bb_frequency_fraction < where->count)
      return false;
    return true;
  }
*************** cgraph_edge::verify_corresponds_to_fndec
*** 3242,3250 ****
    node = node->ultimate_alias_target ();
  
    /* Optimizers can redirect unreachable calls or calls triggering undefined
!      behavior to builtin_unreachable.  */
  
!   if (fndecl_built_in_p (callee->decl, BUILT_IN_UNREACHABLE))
      return false;
  
    if (callee->former_clone_of != node->decl
--- 3257,3267 ----
    node = node->ultimate_alias_target ();
  
    /* Optimizers can redirect unreachable calls or calls triggering undefined
!      behavior to __builtin_unreachable or __builtin_unreachable trap.  */
  
!   if (fndecl_built_in_p (callee->decl, BUILT_IN_NORMAL)
!       && (DECL_FUNCTION_CODE (callee->decl) == BUILT_IN_UNREACHABLE
! 	  || DECL_FUNCTION_CODE (callee->decl) == BUILT_IN_UNREACHABLE_TRAP))
      return false;
  
    if (callee->former_clone_of != node->decl
*************** cgraph_node::verify_node (void)
*** 3584,3590 ****
  	  /* Optimized out calls are redirected to __builtin_unreachable.  */
  	  && (e->count.nonzero_p ()
  	      || ! e->callee->decl
! 	      || !fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE))
  	  && count
  	      == ENTRY_BLOCK_PTR_FOR_FN (DECL_STRUCT_FUNCTION (decl))->count
  	  && (!e->count.ipa_p ()
--- 3601,3609 ----
  	  /* Optimized out calls are redirected to __builtin_unreachable.  */
  	  && (e->count.nonzero_p ()
  	      || ! e->callee->decl
! 	      || !(fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE)
! 		   || fndecl_built_in_p (e->callee->decl,
! 					 BUILT_IN_UNREACHABLE_TRAP)))
  	  && count
  	      == ENTRY_BLOCK_PTR_FOR_FN (DECL_STRUCT_FUNCTION (decl))->count
  	  && (!e->count.ipa_p ()
*************** cgraph_node::verify_node (void)
*** 3752,3758 ****
  	   && (!DECL_EXTERNAL (decl) || inlined_to)
  	   && !flag_wpa)
      {
!       if (this_cfun->cfg)
  	{
  	  hash_set<gimple *> stmts;
  
--- 3771,3779 ----
  	   && (!DECL_EXTERNAL (decl) || inlined_to)
  	   && !flag_wpa)
      {
!       if ((this_cfun->curr_properties & PROP_assumptions_done) != 0)
! 	;
!       else if (this_cfun->cfg)
  	{
  	  hash_set<gimple *> stmts;
  
*************** cgraph_edge::possibly_call_in_translatio
*** 4173,4179 ****
      node = node->previous_sharing_asm_name;
    if (node->previous_sharing_asm_name)
      node = symtab_node::get_for_asmname (DECL_ASSEMBLER_NAME (callee->decl));
!   gcc_assert (TREE_PUBLIC (node->decl));
    return node->get_availability () >= AVAIL_INTERPOSABLE;
  }
  
--- 4194,4200 ----
      node = node->previous_sharing_asm_name;
    if (node->previous_sharing_asm_name)
      node = symtab_node::get_for_asmname (DECL_ASSEMBLER_NAME (callee->decl));
!   gcc_assert (TREE_PUBLIC (node->decl) || DECL_EXTERNAL (node->decl));
    return node->get_availability () >= AVAIL_INTERPOSABLE;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/cgraph.h gcc-13.1.0/gcc/cgraph.h
*** gcc-12.2.0/gcc/cgraph.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cgraph.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Callgraph handling code.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph handling code.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** public:
*** 152,157 ****
--- 152,160 ----
    /* Remove symbol from symbol table.  */
    void remove (void);
  
+   /* Undo any definition or use of the symbol.  */
+   void reset (void);
+ 
    /* Dump symtab node to F.  */
    void dump (FILE *f);
  
*************** public:
*** 193,202 ****
    /* Clone reference REF to this symtab_node and set its stmt to STMT.  */
    ipa_ref *clone_reference (ipa_ref *ref, gimple *stmt);
  
!   /* Find the structure describing a reference to REFERRED_NODE
!      and associated with statement STMT.  */
    ipa_ref *find_reference (symtab_node *referred_node, gimple *stmt,
! 			   unsigned int lto_stmt_uid);
  
    /* Remove all references that are associated with statement STMT.  */
    void remove_stmt_references (gimple *stmt);
--- 196,206 ----
    /* Clone reference REF to this symtab_node and set its stmt to STMT.  */
    ipa_ref *clone_reference (ipa_ref *ref, gimple *stmt);
  
!   /* Find the structure describing a reference to REFERRED_NODE of USE_TYPE and
!      associated with statement STMT or LTO_STMT_UID.  */
    ipa_ref *find_reference (symtab_node *referred_node, gimple *stmt,
! 			   unsigned int lto_stmt_uid,
! 			   enum ipa_ref_use use_type);
  
    /* Remove all references that are associated with statement STMT.  */
    void remove_stmt_references (gimple *stmt);
*************** public:
*** 628,634 ****
    /* File stream where this node is being written to.  */
    struct lto_file_decl_data * lto_file_data;
  
!   PTR GTY ((skip)) aux;
  
    /* Comdat group the symbol is in.  Can be private if GGC allowed that.  */
    tree x_comdat_group;
--- 632,638 ----
    /* File stream where this node is being written to.  */
    struct lto_file_decl_data * lto_file_data;
  
!   void *GTY ((skip)) aux;
  
    /* Comdat group the symbol is in.  Can be private if GGC allowed that.  */
    tree x_comdat_group;
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 891,897 ****
        versionable (false), can_change_signature (false),
        redefined_extern_inline (false), tm_may_enter_irr (false),
        ipcp_clone (false), declare_variant_alt (false),
!       calls_declare_variant_alt (false), m_uid (uid), m_summary_id (-1)
    {}
  
    /* Remove the node from cgraph and all inline clones inlined into it.
--- 895,902 ----
        versionable (false), can_change_signature (false),
        redefined_extern_inline (false), tm_may_enter_irr (false),
        ipcp_clone (false), declare_variant_alt (false),
!       calls_declare_variant_alt (false), gc_candidate (false),
!       m_uid (uid), m_summary_id (-1)
    {}
  
    /* Remove the node from cgraph and all inline clones inlined into it.
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1065,1078 ****
    /* Expand function specified by node.  */
    void expand (void);
  
-   /* As an GCC extension we allow redefinition of the function.  The
-      semantics when both copies of bodies differ is not well defined.
-      We replace the old body with new body so in unit at a time mode
-      we always use new body, while in normal mode we may end up with
-      old body inlined into some functions and new body expanded and
-      inlined in others.  */
-   void reset (void);
- 
    /* Creates a wrapper from cgraph_node to TARGET node. Thunk is used for this
       kind of wrapper method.  */
    void create_wrapper (cgraph_node *target);
--- 1070,1075 ----
*************** struct GTY((tag ("SYMTAB_FUNCTION"))) cg
*** 1490,1495 ****
--- 1487,1496 ----
    unsigned declare_variant_alt : 1;
    /* True if the function calls declare_variant_alt functions.  */
    unsigned calls_declare_variant_alt : 1;
+   /* True if the function should only be emitted if it is used.  This flag
+      is set for local SIMD clones when they are created and cleared if the
+      vectorizer uses them.  */
+   unsigned gc_candidate : 1;
  
  private:
    /* Unique id of the node.  */
*************** public:
*** 1895,1901 ****
    /* Additional information about an indirect call.  Not cleared when an edge
       becomes direct.  */
    cgraph_indirect_call_info *indirect_info;
!   PTR GTY ((skip (""))) aux;
    /* When equal to CIF_OK, inline this call.  Otherwise, points to the
       explanation why function was not inlined.  */
    enum cgraph_inline_failed_t inline_failed;
--- 1896,1902 ----
    /* Additional information about an indirect call.  Not cleared when an edge
       becomes direct.  */
    cgraph_indirect_call_info *indirect_info;
!   void *GTY ((skip (""))) aux;
    /* When equal to CIF_OK, inline this call.  Otherwise, points to the
       explanation why function was not inlined.  */
    enum cgraph_inline_failed_t inline_failed;
*************** symtab_node::real_symbol_p (void)
*** 2645,2651 ****
  /* Return true if DECL should have entry in symbol table if used.
     Those are functions and static & external variables.  */
  
! static inline bool
  decl_in_symtab_p (const_tree decl)
  {
    return (TREE_CODE (decl) == FUNCTION_DECL
--- 2646,2652 ----
  /* Return true if DECL should have entry in symbol table if used.
     Those are functions and static & external variables.  */
  
! inline bool
  decl_in_symtab_p (const_tree decl)
  {
    return (TREE_CODE (decl) == FUNCTION_DECL
*************** cgraph_edge::frequency ()
*** 3318,3324 ****
  
  
  /* Return true if the TM_CLONE bit is set for a given FNDECL.  */
! static inline bool
  decl_is_tm_clone (const_tree fndecl)
  {
    cgraph_node *n = cgraph_node::get (fndecl);
--- 3319,3325 ----
  
  
  /* Return true if the TM_CLONE bit is set for a given FNDECL.  */
! inline bool
  decl_is_tm_clone (const_tree fndecl)
  {
    cgraph_node *n = cgraph_node::get (fndecl);
*************** ipa_polymorphic_call_context::useless_p
*** 3534,3540 ****
     the name documents the intent.  We require that no GC can occur
     within the fprintf call.  */
  
! static inline const char *
  xstrdup_for_dump (const char *transient_str)
  {
    return ggc_strdup (transient_str);
--- 3535,3541 ----
     the name documents the intent.  We require that no GC can occur
     within the fprintf call.  */
  
! inline const char *
  xstrdup_for_dump (const char *transient_str)
  {
    return ggc_strdup (transient_str);
diff -Nrcpad gcc-12.2.0/gcc/cgraphbuild.cc gcc-13.1.0/gcc/cgraphbuild.cc
*** gcc-12.2.0/gcc/cgraphbuild.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cgraphbuild.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Callgraph construction.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph construction.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 26,36 ****
  #include "gimple.h"
  #include "tree-pass.h"
  #include "cgraph.h"
- #include "gimple-fold.h"
  #include "gimple-iterator.h"
  #include "gimple-walk.h"
  #include "ipa-utils.h"
  #include "except.h"
  
  /* Context of record_reference.  */
  struct record_reference_ctx
--- 26,37 ----
  #include "gimple.h"
  #include "tree-pass.h"
  #include "cgraph.h"
  #include "gimple-iterator.h"
+ #include "gimple-fold.h"
  #include "gimple-walk.h"
  #include "ipa-utils.h"
  #include "except.h"
+ #include "gimplify.h"
  
  /* Context of record_reference.  */
  struct record_reference_ctx
*************** record_reference (tree *tp, int *walk_su
*** 79,84 ****
--- 80,96 ----
  
        if (VAR_P (decl))
  	{
+ 	  /* Replace vars with their DECL_VALUE_EXPR if any.
+ 	     This is normally done during gimplification, but
+ 	     static var initializers are never gimplified.  */
+ 	  if (DECL_HAS_VALUE_EXPR_P (decl))
+ 	    {
+ 	      tree *p;
+ 	      for (p = tp; *p != decl; p = &TREE_OPERAND (*p, 0))
+ 		;
+ 	      *p = unshare_expr (DECL_VALUE_EXPR (decl));
+ 	      return record_reference (tp, walk_subtrees, data);
+ 	    }
  	  varpool_node *vnode = varpool_node::get_create (decl);
  	  ctx->varpool_node->create_reference (vnode, IPA_REF_ADDR);
  	}
*************** public:
*** 290,296 ****
    {}
  
    /* opt_pass methods: */
!   virtual unsigned int execute (function *);
  
  }; // class pass_build_cgraph_edges
  
--- 302,308 ----
    {}
  
    /* opt_pass methods: */
!   unsigned int execute (function *) final override;
  
  }; // class pass_build_cgraph_edges
  
*************** public:
*** 484,491 ****
    {}
  
    /* opt_pass methods: */
!   opt_pass * clone () { return new pass_rebuild_cgraph_edges (m_ctxt); }
!   virtual unsigned int execute (function *)
    {
      return cgraph_edge::rebuild_edges ();
    }
--- 496,506 ----
    {}
  
    /* opt_pass methods: */
!   opt_pass * clone () final override
!   {
!     return new pass_rebuild_cgraph_edges (m_ctxt);
!   }
!   unsigned int execute (function *) final override
    {
      return cgraph_edge::rebuild_edges ();
    }
*************** public:
*** 524,533 ****
    {}
  
    /* opt_pass methods: */
!   opt_pass * clone () {
      return new pass_remove_cgraph_callee_edges (m_ctxt);
    }
!   virtual unsigned int execute (function *);
  
  }; // class pass_remove_cgraph_callee_edges
  
--- 539,548 ----
    {}
  
    /* opt_pass methods: */
!   opt_pass * clone () final override {
      return new pass_remove_cgraph_callee_edges (m_ctxt);
    }
!   unsigned int execute (function *) final override;
  
  }; // class pass_remove_cgraph_callee_edges
  
diff -Nrcpad gcc-12.2.0/gcc/cgraphclones.cc gcc-13.1.0/gcc/cgraphclones.cc
*** gcc-12.2.0/gcc/cgraphclones.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cgraphclones.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Callgraph clones
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Callgraph clones
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** duplicate_thunk_for_node (cgraph_node *t
*** 218,224 ****
        body_adj.modify_formal_parameters ();
      }
    else
!     new_decl = copy_node (thunk->decl);
  
    gcc_checking_assert (!DECL_STRUCT_FUNCTION (new_decl));
    gcc_checking_assert (!DECL_INITIAL (new_decl));
--- 218,234 ----
        body_adj.modify_formal_parameters ();
      }
    else
!     {
!       new_decl = copy_node (thunk->decl);
!       for (tree *arg = &DECL_ARGUMENTS (new_decl);
! 	   *arg; arg = &DECL_CHAIN (*arg))
! 	{
! 	  tree next = DECL_CHAIN (*arg);
! 	  *arg = copy_node (*arg);
! 	  DECL_CONTEXT (*arg) = new_decl;
! 	  DECL_CHAIN (*arg) = next;
! 	}
!     }
  
    gcc_checking_assert (!DECL_STRUCT_FUNCTION (new_decl));
    gcc_checking_assert (!DECL_INITIAL (new_decl));
*************** cgraph_node::create_clone (tree new_decl
*** 375,380 ****
--- 385,391 ----
    if (!new_inlined_to)
      prof_count = count.combine_with_ipa_count (prof_count);
    new_node->count = prof_count;
+   new_node->calls_declare_variant_alt = this->calls_declare_variant_alt;
  
    /* Update IPA profile.  Local profiles need no updating in original.  */
    if (update_original)
*************** cgraph_node::create_clone (tree new_decl
*** 424,430 ****
  	 version.  The only exception is when the edge was proved to
  	 be unreachable during the cloning procedure.  */
        if (!e->callee
! 	  || !fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE))
          e->redirect_callee_duplicating_thunks (new_node);
      }
    new_node->expand_all_artificial_thunks ();
--- 435,443 ----
  	 version.  The only exception is when the edge was proved to
  	 be unreachable during the cloning procedure.  */
        if (!e->callee
! 	  || !(fndecl_built_in_p (e->callee->decl, BUILT_IN_UNREACHABLE)
! 	       || fndecl_built_in_p (e->callee->decl,
! 				     BUILT_IN_UNREACHABLE_TRAP)))
          e->redirect_callee_duplicating_thunks (new_node);
      }
    new_node->expand_all_artificial_thunks ();
diff -Nrcpad gcc-12.2.0/gcc/cgraphunit.cc gcc-13.1.0/gcc/cgraphunit.cc
*** gcc-12.2.0/gcc/cgraphunit.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cgraphunit.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Driver of optimization process
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
--- 1,5 ----
  /* Driver of optimization process
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 179,187 ****
  #include "stor-layout.h"
  #include "output.h"
  #include "cfgcleanup.h"
  #include "gimple-fold.h"
  #include "gimplify.h"
- #include "gimple-iterator.h"
  #include "gimplify-me.h"
  #include "tree-cfg.h"
  #include "tree-into-ssa.h"
--- 179,187 ----
  #include "stor-layout.h"
  #include "output.h"
  #include "cfgcleanup.h"
+ #include "gimple-iterator.h"
  #include "gimple-fold.h"
  #include "gimplify.h"
  #include "gimplify-me.h"
  #include "tree-cfg.h"
  #include "tree-into-ssa.h"
*************** symbol_table::process_new_functions (voi
*** 378,398 ****
     inlined in others.
  
     ??? It may make more sense to use one body for inlining and other
!    body for expanding the function but this is difficult to do.  */
  
  void
! cgraph_node::reset (void)
  {
-   /* If process is set, then we have already begun whole-unit analysis.
-      This is *not* testing for whether we've already emitted the function.
-      That case can be sort-of legitimately seen with real function redefinition
-      errors.  I would argue that the front end should never present us with
-      such a case, but don't enforce that for now.  */
-   gcc_assert (!process);
- 
    /* Reset our data structures so we can analyze the function again.  */
-   inlined_to = NULL;
-   memset (&rtl, 0, sizeof (rtl));
    analyzed = false;
    definition = false;
    alias = false;
--- 378,392 ----
     inlined in others.
  
     ??? It may make more sense to use one body for inlining and other
!    body for expanding the function but this is difficult to do.
! 
!    This is also used to cancel C++ mangling aliases, which can be for
!    functions or variables.  */
  
  void
! symtab_node::reset (void)
  {
    /* Reset our data structures so we can analyze the function again.  */
    analyzed = false;
    definition = false;
    alias = false;
*************** cgraph_node::reset (void)
*** 400,407 ****
    weakref = false;
    cpp_implicit_alias = false;
  
-   remove_callees ();
    remove_all_references ();
  }
  
  /* Return true when there are references to the node.  INCLUDE_SELF is
--- 394,415 ----
    weakref = false;
    cpp_implicit_alias = false;
  
    remove_all_references ();
+   remove_from_same_comdat_group ();
+ 
+   if (cgraph_node *cn = dyn_cast <cgraph_node *> (this))
+     {
+       /* If process is set, then we have already begun whole-unit analysis.
+ 	 This is *not* testing for whether we've already emitted the function.
+ 	 That case can be sort-of legitimately seen with real function
+ 	 redefinition errors.  I would argue that the front end should never
+ 	 present us with such a case, but don't enforce that for now.  */
+       gcc_assert (!cn->process);
+ 
+       memset (&cn->rtl, 0, sizeof (cn->rtl));
+       cn->inlined_to = NULL;
+       cn->remove_callees ();
+     }
  }
  
  /* Return true when there are references to the node.  INCLUDE_SELF is
*************** walk_polymorphic_call_targets (hash_set<
*** 1000,1006 ****
      = possible_polymorphic_call_targets
  	(edge, &final, &cache_token);
  
!   if (!reachable_call_targets->add (cache_token))
      {
        if (symtab->dump_file)
  	dump_possible_polymorphic_call_targets 
--- 1008,1014 ----
      = possible_polymorphic_call_targets
  	(edge, &final, &cache_token);
  
!   if (cache_token != NULL && !reachable_call_targets->add (cache_token))
      {
        if (symtab->dump_file)
  	dump_possible_polymorphic_call_targets 
*************** walk_polymorphic_call_targets (hash_set<
*** 1033,1040 ****
  	  if (targets.length () == 1)
  	    target = targets[0];
  	  else
! 	    target = cgraph_node::create
! 			(builtin_decl_implicit (BUILT_IN_UNREACHABLE));
  
  	  if (symtab->dump_file)
  	    {
--- 1041,1047 ----
  	  if (targets.length () == 1)
  	    target = targets[0];
  	  else
! 	    target = cgraph_node::create (builtin_decl_unreachable ());
  
  	  if (symtab->dump_file)
  	    {
*************** check_global_declaration (symtab_node *s
*** 1088,1095 ****
        else
  	warning (OPT_Wunused_function, "%q+F declared %<static%> but never "
  				       "defined", decl);
-       /* This symbol is effectively an "extern" declaration now.  */
-       TREE_PUBLIC (decl) = 1;
      }
  
    /* Warn about static fns or vars defined but not used.  */
--- 1095,1100 ----
*************** check_global_declaration (symtab_node *s
*** 1123,1128 ****
--- 1128,1134 ----
        && (TREE_CODE (decl) != FUNCTION_DECL
  	  || (!DECL_STATIC_CONSTRUCTOR (decl)
  	      && !DECL_STATIC_DESTRUCTOR (decl)))
+       && (! VAR_P (decl) || !warning_suppressed_p (decl, OPT_Wunused_variable))
        /* Otherwise, ask the language.  */
        && lang_hooks.decls.warn_unused_global (decl))
      warning_at (DECL_SOURCE_LOCATION (decl),
*************** cgraph_node::expand (void)
*** 1883,1888 ****
--- 1889,1904 ----
    ggc_collect ();
    timevar_pop (TV_REST_OF_COMPILATION);
  
+   if (DECL_STRUCT_FUNCTION (decl)
+       && DECL_STRUCT_FUNCTION (decl)->assume_function)
+     {
+       /* Assume functions aren't expanded into RTL, on the other side
+ 	 we don't want to release their body.  */
+       if (cfun)
+ 	pop_cfun ();
+       return;
+     }
+ 
    /* Make sure that BE didn't give up on compiling.  */
    gcc_assert (TREE_ASM_WRITTEN (decl));
    if (cfun)
*************** expand_all_functions (void)
*** 1987,2005 ****
  
    /* Output functions in RPO so callees get optimized before callers.  This
       makes ipa-ra and other propagators to work.
!      FIXME: This is far from optimal code layout.  */
!   for (i = new_order_pos - 1; i >= 0; i--)
!     {
!       node = order[i];
  
!       if (node->process)
  	{
! 	  expanded_func_count++;
! 	  node->process = 0;
! 	  node->expand ();
  	}
      }
  
    if (dump_file)
      fprintf (dump_file, "Expanded functions with time profile (%s):%u/%u\n",
  	     main_input_filename, profiled_func_count, expanded_func_count);
--- 2003,2054 ----
  
    /* Output functions in RPO so callees get optimized before callers.  This
       makes ipa-ra and other propagators to work.
!      FIXME: This is far from optimal code layout.
!      Make multiple passes over the list to defer processing of gc
!      candidates until all potential uses are seen.  */
!   int gc_candidates = 0;
!   int prev_gc_candidates = 0;
  
!   while (1)
!     {
!       for (i = new_order_pos - 1; i >= 0; i--)
  	{
! 	  node = order[i];
! 
! 	  if (node->gc_candidate)
! 	    gc_candidates++;
! 	  else if (node->process)
! 	    {
! 	      expanded_func_count++;
! 	      node->process = 0;
! 	      node->expand ();
! 	    }
  	}
+       if (!gc_candidates || gc_candidates == prev_gc_candidates)
+ 	break;
+       prev_gc_candidates = gc_candidates;
+       gc_candidates = 0;
      }
  
+   /* Free any unused gc_candidate functions.  */
+   if (gc_candidates)
+     for (i = new_order_pos - 1; i >= 0; i--)
+       {
+ 	node = order[i];
+ 	if (node->gc_candidate)
+ 	  {
+ 	    struct function *fn = DECL_STRUCT_FUNCTION (node->decl);
+ 	    if (symtab->dump_file)
+ 	      fprintf (symtab->dump_file,
+ 		       "Deleting unused function %s\n",
+ 		       IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (node->decl)));
+ 	    node->process = false;
+ 	    free_dominance_info (fn, CDI_DOMINATORS);
+ 	    free_dominance_info (fn, CDI_POST_DOMINATORS);
+ 	    node->release_body (false);
+ 	  }
+       }
+ 
    if (dump_file)
      fprintf (dump_file, "Expanded functions with time profile (%s):%u/%u\n",
  	     main_input_filename, profiled_func_count, expanded_func_count);
*************** symbol_table::compile (void)
*** 2374,2379 ****
--- 2423,2432 ----
  	if (node->inlined_to
  	    || gimple_has_body_p (node->decl))
  	  {
+ 	    if (DECL_STRUCT_FUNCTION (node->decl)
+ 		&& (DECL_STRUCT_FUNCTION (node->decl)->curr_properties
+ 		    & PROP_assumptions_done) != 0)
+ 	      continue;
  	    error_found = true;
  	    node->debug ();
  	  }
diff -Nrcpad gcc-12.2.0/gcc/cif-code.def gcc-13.1.0/gcc/cif-code.def
*** gcc-12.2.0/gcc/cif-code.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/cif-code.def	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* This file contains the definitions of the cgraph_inline_failed_t
     enums used in GCC.
  
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Doug Kwan <dougkwan@google.com>
  
  This file is part of GCC.
--- 1,7 ----
  /* This file contains the definitions of the cgraph_inline_failed_t
     enums used in GCC.
  
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Doug Kwan <dougkwan@google.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/collect-utils.cc gcc-13.1.0/gcc/collect-utils.cc
*** gcc-12.2.0/gcc/collect-utils.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/collect-utils.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/collect-utils.h gcc-13.1.0/gcc/collect-utils.h
*** gcc-12.2.0/gcc/collect-utils.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/collect-utils.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Utility functions used by tools like collect2 and lto-wrapper.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/collect2-aix.cc gcc-13.1.0/gcc/collect2-aix.cc
*** gcc-12.2.0/gcc/collect2-aix.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/collect2-aix.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/collect2-aix.h gcc-13.1.0/gcc/collect2-aix.h
*** gcc-12.2.0/gcc/collect2-aix.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/collect2-aix.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* AIX cross support for collect2.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/collect2.cc gcc-13.1.0/gcc/collect2.cc
*** gcc-12.2.0/gcc/collect2.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/collect2.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Collect static initialization info into data structures that can be
     traversed by C++ initialization and finalization routines.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Chris Smith (csmith@convex.com).
     Heavily modified by Michael Meissner (meissner@cygnus.com),
     Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
--- 1,6 ----
  /* Collect static initialization info into data structures that can be
     traversed by C++ initialization and finalization routines.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Chris Smith (csmith@convex.com).
     Heavily modified by Michael Meissner (meissner@cygnus.com),
     Per Bothner (bothner@cygnus.com), and John Gilmore (gnu@cygnus.com).
diff -Nrcpad gcc-12.2.0/gcc/collect2.h gcc-13.1.0/gcc/collect2.h
*** gcc-12.2.0/gcc/collect2.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/collect2.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Header file for collect routines.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Header file for collect routines.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/color-macros.h gcc-13.1.0/gcc/color-macros.h
*** gcc-12.2.0/gcc/color-macros.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/color-macros.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Terminal color manipulation macros.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Terminal color manipulation macros.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/combine-stack-adj.cc gcc-13.1.0/gcc/combine-stack-adj.cc
*** gcc-12.2.0/gcc/combine-stack-adj.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/combine-stack-adj.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Combine stack adjustments.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Combine stack adjustments.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** public:
*** 823,830 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *);
!   virtual unsigned int execute (function *)
      {
        return rest_of_handle_stack_adjustments ();
      }
--- 823,830 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override;
!   unsigned int execute (function *) final override
      {
        return rest_of_handle_stack_adjustments ();
      }
diff -Nrcpad gcc-12.2.0/gcc/combine.cc gcc-13.1.0/gcc/combine.cc
*** gcc-12.2.0/gcc/combine.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/combine.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Optimize by combining instructions for GNU compiler.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Optimize by combining instructions for GNU compiler.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** combine_instructions (rtx_insn *f, unsig
*** 1416,1421 ****
--- 1416,1422 ----
  		      statistics_counter_event (cfun, "insn-with-note combine", 1);
  		      goto retry;
  		    }
+ 		  INSN_CODE (temp) = -1;
  		  SET_SRC (set) = orig_src;
  		  SET_DEST (set) = orig_dest;
  		}
*************** simplify_and_const_int_1 (scalar_int_mod
*** 10054,10062 ****
  
    /* See what bits may be nonzero in VAROP.  Unlike the general case of
       a call to nonzero_bits, here we don't care about bits outside
!      MODE.  */
  
!   nonzero = nonzero_bits (varop, mode) & GET_MODE_MASK (mode);
  
    /* Turn off all bits in the constant that are known to already be zero.
       Thus, if the AND isn't needed at all, we will have CONSTOP == NONZERO_BITS
--- 10055,10066 ----
  
    /* See what bits may be nonzero in VAROP.  Unlike the general case of
       a call to nonzero_bits, here we don't care about bits outside
!      MODE unless WORD_REGISTER_OPERATIONS is true.  */
  
!   scalar_int_mode tmode = mode;
!   if (WORD_REGISTER_OPERATIONS && GET_MODE_BITSIZE (mode) < BITS_PER_WORD)
!     tmode = word_mode;
!   nonzero = nonzero_bits (varop, tmode) & GET_MODE_MASK (tmode);
  
    /* Turn off all bits in the constant that are known to already be zero.
       Thus, if the AND isn't needed at all, we will have CONSTOP == NONZERO_BITS
*************** simplify_and_const_int_1 (scalar_int_mod
*** 10070,10076 ****
  
    /* If VAROP is a NEG of something known to be zero or 1 and CONSTOP is
       a power of two, we can replace this with an ASHIFT.  */
!   if (GET_CODE (varop) == NEG && nonzero_bits (XEXP (varop, 0), mode) == 1
        && (i = exact_log2 (constop)) >= 0)
      return simplify_shift_const (NULL_RTX, ASHIFT, mode, XEXP (varop, 0), i);
  
--- 10074,10080 ----
  
    /* If VAROP is a NEG of something known to be zero or 1 and CONSTOP is
       a power of two, we can replace this with an ASHIFT.  */
!   if (GET_CODE (varop) == NEG && nonzero_bits (XEXP (varop, 0), tmode) == 1
        && (i = exact_log2 (constop)) >= 0)
      return simplify_shift_const (NULL_RTX, ASHIFT, mode, XEXP (varop, 0), i);
  
*************** distribute_notes (rtx notes, rtx_insn *f
*** 14218,14225 ****
  	      gcc_assert (from_insn == i3);
  	    /* We are making sure there is a single effective REG_EH_REGION
  	       note and it's valid to put it on i3.  */
! 	    if (!insn_could_throw_p (from_insn))
! 	      /* Throw away stra notes on insns that can never throw.  */
  	      ;
  	    else
  	      {
--- 14222,14231 ----
  	      gcc_assert (from_insn == i3);
  	    /* We are making sure there is a single effective REG_EH_REGION
  	       note and it's valid to put it on i3.  */
! 	    if (!insn_could_throw_p (from_insn)
! 		&& !(lp_nr == INT_MIN && can_nonlocal_goto (from_insn)))
! 	      /* Throw away stray notes on insns that can never throw or
! 		 make a nonlocal goto.  */
  	      ;
  	    else
  	      {
*************** public:
*** 15015,15022 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *) { return (optimize > 0); }
!   virtual unsigned int execute (function *)
      {
        return rest_of_handle_combine ();
      }
--- 15021,15028 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override { return (optimize > 0); }
!   unsigned int execute (function *) final override
      {
        return rest_of_handle_combine ();
      }
diff -Nrcpad gcc-12.2.0/gcc/common/common-target-def.h gcc-13.1.0/gcc/common/common-target-def.h
*** gcc-12.2.0/gcc/common/common-target-def.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/common-target-def.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default initializers for common target hooks.
!    Copyright (C) 2011-2022 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
--- 1,5 ----
  /* Default initializers for common target hooks.
!    Copyright (C) 2011-2023 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
diff -Nrcpad gcc-12.2.0/gcc/common/common-target.def gcc-13.1.0/gcc/common/common-target.def
*** gcc-12.2.0/gcc/common/common-target.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/common-target.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target hook definitions for common hooks.
!    Copyright (C) 2011-2022 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
--- 1,5 ----
  /* Target hook definitions for common hooks.
!    Copyright (C) 2011-2023 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
*************** The result will be pruned to cases with
*** 84,89 ****
--- 84,114 ----
   vec<const char *>, (int option_code, const char *prefix),
   default_get_valid_option_values)
  
+ DEFHOOK
+ (compute_multilib,
+  "Some targets like RISC-V might have complicated multilib reuse rules which\n\
+ are hard to implement with the current multilib scheme.  This hook allows\n\
+ targets to override the result from the built-in multilib mechanism.\n\
+ @var{switches} is the raw option list with @var{n_switches} items;\n\
+ @var{multilib_dir} is the multi-lib result which is computed by the built-in\n\
+ multi-lib mechanism;\n\
+ @var{multilib_defaults} is the default options list for multi-lib;\n\
+ @var{multilib_select} is the string containing the list of supported\n\
+ multi-libs, and the option checking list.\n\
+ @var{multilib_matches}, @var{multilib_exclusions}, and @var{multilib_reuse}\n\
+ are corresponding to @var{MULTILIB_MATCHES}, @var{MULTILIB_EXCLUSIONS},\n\
+ and @var{MULTILIB_REUSE}.\n\
+ The default definition does nothing but return @var{multilib_dir} directly.",
+  const char *, (const struct switchstr *switches,
+ 		int n_switches,
+ 		const char *multilib_dir,
+ 		const char *multilib_defaults,
+ 		const char *multilib_select,
+ 		const char *multilib_matches,
+ 		const char *multilib_exclusions,
+ 		const char *multilib_reuse),
+  default_compute_multilib)
+ 
  /* Leave the boolean fields at the end.  */
  
  /* True if unwinding tables should be generated by default.  */
diff -Nrcpad gcc-12.2.0/gcc/common/common-target.h gcc-13.1.0/gcc/common/common-target.h
*** gcc-12.2.0/gcc/common/common-target.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/common-target.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Data structure definitions for common hooks.
!    Copyright (C) 2010-2022 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
--- 1,5 ----
  /* Data structure definitions for common hooks.
!    Copyright (C) 2010-2023 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
diff -Nrcpad gcc-12.2.0/gcc/common/common-targhooks.cc gcc-13.1.0/gcc/common/common-targhooks.cc
*** gcc-12.2.0/gcc/common/common-targhooks.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/common-targhooks.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default common target hook functions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default common target hook functions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** const struct default_options empty_optim
*** 90,92 ****
--- 90,107 ----
    {
      { OPT_LEVELS_NONE, 0, NULL, 0 }
    };
+ 
+ /* Default version of TARGET_COMPUTE_MULTILIB.  */
+ const char *
+ default_compute_multilib(
+   const struct switchstr *,
+   int,
+   const char *multilib,
+   const char *,
+   const char *,
+   const char *,
+   const char *,
+   const char *)
+ {
+   return multilib;
+ }
diff -Nrcpad gcc-12.2.0/gcc/common/common-targhooks.h gcc-13.1.0/gcc/common/common-targhooks.h
*** gcc-12.2.0/gcc/common/common-targhooks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/common-targhooks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default common target hook functions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default common target hook functions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern vec<const char *> default_get_val
*** 32,35 ****
--- 32,46 ----
  
  extern const struct default_options empty_optimization_table[];
  
+ const char *
+ default_compute_multilib(
+   const struct switchstr *,
+   int,
+   const char *multilib,
+   const char *,
+   const char *,
+   const char *,
+   const char *,
+   const char *);
+ 
  #endif
diff -Nrcpad gcc-12.2.0/gcc/common/config/aarch64/aarch64-common.cc gcc-13.1.0/gcc/common/config/aarch64/aarch64-common.cc
*** gcc-12.2.0/gcc/common/config/aarch64/aarch64-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/aarch64/aarch64-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for AArch64.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks for AArch64.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 30,35 ****
--- 30,37 ----
  #include "opts.h"
  #include "flags.h"
  #include "diagnostic.h"
+ #include "config/aarch64/aarch64-feature-deps.h"
+ #include "config/arm/aarch-common.h"
  
  #ifdef  TARGET_BIG_ENDIAN_DEFAULT
  #undef  TARGET_DEFAULT_TARGET_FLAGS
***************
*** 41,48 ****
  
  #undef	TARGET_OPTION_OPTIMIZATION_TABLE
  #define TARGET_OPTION_OPTIMIZATION_TABLE aarch_option_optimization_table
- #undef TARGET_OPTION_INIT_STRUCT
- #define TARGET_OPTION_INIT_STRUCT aarch64_option_init_struct
  
  /* Set default optimization options.  */
  static const struct default_options aarch_option_optimization_table[] =
--- 43,48 ----
*************** static const struct default_options aarc
*** 65,70 ****
--- 65,81 ----
      { OPT_LEVELS_NONE, 0, NULL, 0 }
    };
  
+ /* Set OPTS->x_aarch64_asm_isa_flags to FLAGS and update
+    OPTS->x_aarch64_isa_flags accordingly.  */
+ void
+ aarch64_set_asm_isa_flags (gcc_options *opts, aarch64_feature_flags flags)
+ {
+   opts->x_aarch64_asm_isa_flags = flags;
+   opts->x_aarch64_isa_flags = flags;
+   if (opts->x_target_flags & MASK_GENERAL_REGS_ONLY)
+     opts->x_aarch64_isa_flags &= ~feature_deps::get_flags_off (AARCH64_FL_FP);
+ }
+ 
  /* Implement TARGET_HANDLE_OPTION.
     This function handles the target specific options for CPU/target selection.
  
*************** aarch64_handle_option (struct gcc_option
*** 99,104 ****
--- 110,116 ----
  
      case OPT_mgeneral_regs_only:
        opts->x_target_flags |= MASK_GENERAL_REGS_ONLY;
+       aarch64_set_asm_isa_flags (opts, opts->x_aarch64_asm_isa_flags);
        return true;
  
      case OPT_mfix_cortex_a53_835769:
*************** aarch64_handle_option (struct gcc_option
*** 128,204 ****
  /* An ISA extension in the co-processor and main instruction set space.  */
  struct aarch64_option_extension
  {
!   const char *const name;
!   const uint64_t flag_canonical;
!   const uint64_t flags_on;
!   const uint64_t flags_off;
!   const bool is_synthetic;
  };
  
  /* ISA extensions in AArch64.  */
! static const struct aarch64_option_extension all_extensions[] =
! {
! #define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, Z) \
!   {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, SYNTHETIC},
! #include "config/aarch64/aarch64-option-extensions.def"
!   {NULL, 0, 0, 0, false}
! };
! 
! /* A copy of the ISA extensions list for AArch64 sorted by the popcount of
!    bits and extension turned on.  Cached for efficiency.  */
! static struct aarch64_option_extension all_extensions_by_on[] =
  {
! #define AARCH64_OPT_EXTENSION(NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, Z) \
!   {NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, SYNTHETIC},
  #include "config/aarch64/aarch64-option-extensions.def"
    {NULL, 0, 0, 0, false}
  };
  
  struct processor_name_to_arch
  {
!   const std::string processor_name;
!   const enum aarch64_arch arch;
!   const uint64_t flags;
  };
  
  struct arch_to_arch_name
  {
!   const enum aarch64_arch arch;
!   const std::string arch_name;
!   const uint64_t flags;
  };
  
  /* Map processor names to the architecture revision they implement and
     the default set of architectural feature flags they support.  */
! static const struct processor_name_to_arch all_cores[] =
  {
! #define AARCH64_CORE(NAME, X, IDENT, ARCH_IDENT, FLAGS, COSTS, IMP, PART, VARIANT) \
!   {NAME, AARCH64_ARCH_##ARCH_IDENT, FLAGS},
  #include "config/aarch64/aarch64-cores.def"
!   {"generic", AARCH64_ARCH_8A, AARCH64_FL_FOR_ARCH8},
    {"", aarch64_no_arch, 0}
  };
  
  /* Map architecture revisions to their string representation.  */
! static const struct arch_to_arch_name all_architectures[] =
  {
! #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH, FLAGS) \
!   {AARCH64_ARCH_##ARCH_IDENT, NAME, FLAGS},
  #include "config/aarch64/aarch64-arches.def"
    {aarch64_no_arch, "", 0}
  };
  
  /* Parse the architecture extension string STR and update ISA_FLAGS
     with the architecture features turned on or off.  Return a
!    aarch64_parse_opt_result describing the result.
     When the STR string contains an invalid extension,
     a copy of the string is created and stored to INVALID_EXTENSION.  */
  
! enum aarch64_parse_opt_result
! aarch64_parse_extension (const char *str, uint64_t *isa_flags,
! 			 std::string *invalid_extension)
  {
    /* The extension string is parsed left to right.  */
    const struct aarch64_option_extension *opt = NULL;
--- 140,212 ----
  /* An ISA extension in the co-processor and main instruction set space.  */
  struct aarch64_option_extension
  {
!   /* The extension name to pass on to the assembler.  */
!   const char *name;
!   /* The smallest set of feature bits to toggle to enable this option.  */
!   aarch64_feature_flags flag_canonical;
!   /* If this feature is turned on, these bits also need to be turned on.  */
!   aarch64_feature_flags flags_on;
!   /* If this feature is turned off, these bits also need to be turned off.  */
!   aarch64_feature_flags flags_off;
!   /* Indicates whether this feature is taken into account during native cpu
!      detection.  */
!   bool native_detect_p;
  };
  
  /* ISA extensions in AArch64.  */
! static constexpr aarch64_option_extension all_extensions[] =
  {
! #define AARCH64_OPT_EXTENSION(NAME, IDENT, C, D, E, FEATURE_STRING) \
!   {NAME, AARCH64_FL_##IDENT, feature_deps::IDENT ().explicit_on, \
!    feature_deps::get_flags_off (feature_deps::root_off_##IDENT), \
!    FEATURE_STRING[0]},
  #include "config/aarch64/aarch64-option-extensions.def"
    {NULL, 0, 0, 0, false}
  };
  
  struct processor_name_to_arch
  {
!   const char *processor_name;
!   aarch64_arch arch;
!   aarch64_feature_flags flags;
  };
  
  struct arch_to_arch_name
  {
!   aarch64_arch arch;
!   const char *arch_name;
!   aarch64_feature_flags flags;
  };
  
  /* Map processor names to the architecture revision they implement and
     the default set of architectural feature flags they support.  */
! static constexpr processor_name_to_arch all_cores[] =
  {
! #define AARCH64_CORE(NAME, CORE_IDENT, C, ARCH_IDENT, E, F, G, H, I) \
!   {NAME, AARCH64_ARCH_##ARCH_IDENT, feature_deps::cpu_##CORE_IDENT},
  #include "config/aarch64/aarch64-cores.def"
!   {"generic", AARCH64_ARCH_V8A, feature_deps::V8A ().enable},
    {"", aarch64_no_arch, 0}
  };
  
  /* Map architecture revisions to their string representation.  */
! static constexpr arch_to_arch_name all_architectures[] =
  {
! #define AARCH64_ARCH(NAME, B, ARCH_IDENT, D, E)	\
!   {AARCH64_ARCH_##ARCH_IDENT, NAME, feature_deps::ARCH_IDENT ().enable},
  #include "config/aarch64/aarch64-arches.def"
    {aarch64_no_arch, "", 0}
  };
  
  /* Parse the architecture extension string STR and update ISA_FLAGS
     with the architecture features turned on or off.  Return a
!    aarch_parse_opt_result describing the result.
     When the STR string contains an invalid extension,
     a copy of the string is created and stored to INVALID_EXTENSION.  */
  
! enum aarch_parse_opt_result
! aarch64_parse_extension (const char *str, aarch64_feature_flags *isa_flags,
!                          std::string *invalid_extension)
  {
    /* The extension string is parsed left to right.  */
    const struct aarch64_option_extension *opt = NULL;
*************** aarch64_parse_extension (const char *str
*** 229,235 ****
  	adding_ext = 1;
  
        if (len == 0)
! 	return AARCH64_PARSE_MISSING_ARG;
  
  
        /* Scan over the extensions table trying to find an exact match.  */
--- 237,243 ----
  	adding_ext = 1;
  
        if (len == 0)
! 	return AARCH_PARSE_MISSING_ARG;
  
  
        /* Scan over the extensions table trying to find an exact match.  */
*************** aarch64_parse_extension (const char *str
*** 239,247 ****
  	    {
  	      /* Add or remove the extension.  */
  	      if (adding_ext)
! 		*isa_flags |= (opt->flags_on | opt->flag_canonical);
  	      else
! 		*isa_flags &= ~(opt->flags_off | opt->flag_canonical);
  	      break;
  	    }
  	}
--- 247,255 ----
  	    {
  	      /* Add or remove the extension.  */
  	      if (adding_ext)
! 		*isa_flags |= opt->flags_on;
  	      else
! 		*isa_flags &= ~opt->flags_off;
  	      break;
  	    }
  	}
*************** aarch64_parse_extension (const char *str
*** 251,263 ****
  	  /* Extension not found in list.  */
  	  if (invalid_extension)
  	    *invalid_extension = std::string (str, len);
! 	  return AARCH64_PARSE_INVALID_FEATURE;
  	}
  
        str = ext;
      };
  
!   return AARCH64_PARSE_OK;
  }
  
  /* Append all architecture extension candidates to the CANDIDATES vector.  */
--- 259,271 ----
  	  /* Extension not found in list.  */
  	  if (invalid_extension)
  	    *invalid_extension = std::string (str, len);
! 	  return AARCH_PARSE_INVALID_FEATURE;
  	}
  
        str = ext;
      };
  
!   return AARCH_PARSE_OK;
  }
  
  /* Append all architecture extension candidates to the CANDIDATES vector.  */
*************** aarch64_get_all_extension_candidates (au
*** 270,348 ****
      candidates->safe_push (opt->name);
  }
  
- /* Comparer to sort aarch64's feature extensions by population count. Largest
-    first.  */
- 
- typedef const struct aarch64_option_extension opt_ext;
- 
- int opt_ext_cmp (const void* a, const void* b)
- {
-   opt_ext *opt_a = (opt_ext *)a;
-   opt_ext *opt_b = (opt_ext *)b;
- 
-   /* We consider the total set of bits an options turns on to be the union of
-      the singleton set containing the option itself and the set of options it
-      turns on as a dependency.  As an example +dotprod turns on FL_DOTPROD and
-      FL_SIMD.  As such the set of bits represented by this option is
-      {FL_DOTPROD, FL_SIMD}. */
-   uint64_t total_flags_a = opt_a->flag_canonical & opt_a->flags_on;
-   uint64_t total_flags_b = opt_b->flag_canonical & opt_b->flags_on;
-   int popcnt_a = popcount_hwi ((HOST_WIDE_INT)total_flags_a);
-   int popcnt_b = popcount_hwi ((HOST_WIDE_INT)total_flags_b);
-   int order = popcnt_b - popcnt_a;
- 
-   /* If they have the same amount of bits set, give it a more
-      deterministic ordering by using the value of the bits themselves.  */
-   if (order != 0)
-     return order;
- 
-   if (total_flags_a != total_flags_b)
-     return total_flags_a < total_flags_b ? 1 : -1;
- 
-   return 0;
- }
- 
- /* Implement TARGET_OPTION_INIT_STRUCT.  */
- 
- static void
- aarch64_option_init_struct (struct gcc_options *opts ATTRIBUTE_UNUSED)
- {
-     /* Sort the extensions based on how many bits they set, order the larger
-        counts first.  We sort the list because this makes processing the
-        feature bits O(n) instead of O(n^2).  While n is small, the function
-        to calculate the feature strings is called on every options push,
-        pop and attribute change (arm_neon headers, lto etc all cause this to
-        happen quite frequently).  It is a trade-off between time and space and
-        so time won.  */
-     int n_extensions
-       = sizeof (all_extensions) / sizeof (struct aarch64_option_extension);
-     qsort (&all_extensions_by_on, n_extensions,
- 	   sizeof (struct aarch64_option_extension), opt_ext_cmp);
- }
- 
- /* Checks to see if enough bits from the option OPT are enabled in
-    ISA_FLAG_BITS to be able to replace the individual options with the
-    canonicalized version of the option.  This is done based on two rules:
- 
-    1) Synthetic groups, such as +crypto we only care about the bits that are
-       turned on. e.g. +aes+sha2 can be replaced with +crypto.
- 
-    2) Options that themselves have a bit, such as +rdma, in this case, all the
-       feature bits they turn on must be available and the bit for the option
-       itself must be.  In this case it's effectively a reduction rather than a
-       grouping. e.g. +fp+simd is not enough to turn on +rdma, for that you would
-       need +rdma+fp+simd which is reduced down to +rdma.
- */
- 
- static bool
- aarch64_contains_opt (uint64_t isa_flag_bits, opt_ext *opt)
- {
-   uint64_t flags_check
-     = opt->is_synthetic ? opt->flags_on : opt->flag_canonical;
- 
-   return (isa_flag_bits & flags_check) == flags_check;
- }
- 
  /* Return a string representation of ISA_FLAGS.  DEFAULT_ARCH_FLAGS
     gives the default set of flags which are implied by whatever -march
     we'd put out.  Our job is to figure out the minimal set of "+" and
--- 278,283 ----
*************** aarch64_contains_opt (uint64_t isa_flag_
*** 350,470 ****
     that all the "+" flags come before the "+no" flags.  */
  
  std::string
! aarch64_get_extension_string_for_isa_flags (uint64_t isa_flags,
! 					    uint64_t default_arch_flags)
  {
-   const struct aarch64_option_extension *opt = NULL;
    std::string outstr = "";
  
!   uint64_t isa_flag_bits = isa_flags;
! 
!   /* Pass one: Minimize the search space by reducing the set of options
!      to the smallest set that still turns on the same features as before in
!      conjunction with the bits that are turned on by default for the selected
!      architecture.  */
!   for (opt = all_extensions_by_on; opt->name != NULL; opt++)
!     {
!       /* If the bit is on by default, then all the options it turns on are also
! 	 on by default due to the transitive dependencies.
! 
!          If the option is enabled explicitly in the set then we need to emit
! 	 an option for it.  Since this list is sorted by extensions setting the
! 	 largest number of featers first, we can be sure that nothing else will
! 	 ever need to set the bits we already set.  Consider the following
! 	 situation:
! 
! 	  Feat1 = A + B + C
! 	  Feat2 = A + B
! 	  Feat3 = A + D
! 	  Feat4 = B + C
! 	  Feat5 = C
! 
! 	The following results are expected:
! 
! 	  A + C = A + Feat5
! 	  B + C = Feat4
! 	  Feat4 + A = Feat1
! 	  Feat2 + Feat5 = Feat1
! 	  Feat1 + C = Feat1
!           Feat3 + Feat4 = Feat1 + D
! 
! 	This search assumes that all invidual feature bits are use visible,
! 	in other words the user must be able to do +A, +B, +C and +D.  */
!       if (aarch64_contains_opt (isa_flag_bits | default_arch_flags, opt))
!       {
! 	/* We remove all the dependent bits, to prevent them from being turned
! 	   on twice.  This only works because we assume that all there are
! 	   individual options to set all bits standalone.  */
! 
! 	/* PR target/94396.
! 
! 	   For flags which would already imply a bit that's on by default (e.g
! 	   fp16fml which implies +fp,+fp16) we must emit the flags that are not
! 	   on by default.  i.e. in Armv8.4-a +fp16fml is default if +fp16.  So
! 	   if a user passes armv8.4-a+fp16 (or +fp16fml) then we need to emit
! 	   +fp16.  But if +fp16fml is used in an architecture where it is
! 	   completely optional we only have to emit the canonical flag.  */
! 	uint64_t toggle_bits = opt->flags_on & default_arch_flags;
! 	/* Now check to see if the canonical flag is on by default.  If it
! 	   is not then enabling it will enable all bits in flags_on.  */
! 	if ((opt->flag_canonical & default_arch_flags) == 0)
! 	  toggle_bits = opt->flags_on;
! 
! 	isa_flag_bits &= ~toggle_bits;
! 	isa_flag_bits |= opt->flag_canonical;
!       }
!     }
! 
!    /* By toggling bits on and off, we may have set bits on that are already
!       enabled by default.  So we mask the default set out so we don't emit an
!       option for them.  Instead of checking for this each time during Pass One
!       we just mask all default bits away at the end.  */
!    isa_flag_bits &= ~default_arch_flags;
  
!    /* We now have the smallest set of features we need to process.  A subsequent
!       linear scan of the bits in isa_flag_bits will allow us to print the ext
!       names.  However as a special case if CRC was enabled before, always print
!       it.  This is required because some CPUs have an incorrect specification
!       in older assemblers.  Even though CRC should be the default for these
!       cases the -mcpu values won't turn it on.
  
!       Note that assemblers with Armv8-R AArch64 support should not have this
!       issue, so we don't need this fix when targeting Armv8-R.  */
!   if ((isa_flags & AARCH64_ISA_CRC) && !AARCH64_ISA_V8_R)
!     isa_flag_bits |= AARCH64_ISA_CRC;
  
!   /* Pass Two:
!      Print the option names that we're sure we must turn on.  These are only
!      optional extension names.  Mandatory ones have already been removed and
!      ones we explicitly want off have been too.  */
!   for (opt = all_extensions_by_on; opt->name != NULL; opt++)
      {
!       if (isa_flag_bits & opt->flag_canonical)
! 	{
! 	  outstr += "+";
! 	  outstr += opt->name;
! 	}
!     }
  
!   /* Pass Three:
!      Print out a +no for any mandatory extension that we are
!      turning off.  By this point aarch64_parse_extension would have ensured
!      that any optional extensions are turned off.  The only things left are
!      things that can't be turned off usually, e.g. something that is on by
!      default because it's mandatory and we want it off.  For turning off bits
!      we don't guarantee the smallest set of flags, but instead just emit all
!      options the user has specified.
  
!      The assembler requires all +<opts> to be printed before +no<opts>.  */
!   for (opt = all_extensions_by_on; opt->name != NULL; opt++)
!     {
!       if ((~isa_flags) & opt->flag_canonical
! 		&& !((~default_arch_flags) & opt->flag_canonical))
  	{
! 	  outstr += "+no";
! 	  outstr += opt->name;
  	}
      }
  
    return outstr;
  }
--- 285,351 ----
     that all the "+" flags come before the "+no" flags.  */
  
  std::string
! aarch64_get_extension_string_for_isa_flags
!   (aarch64_feature_flags isa_flags,
!    aarch64_feature_flags default_arch_flags)
  {
    std::string outstr = "";
  
!   aarch64_feature_flags current_flags = default_arch_flags;
  
!   /* As a special case, do not assume that the assembler will enable CRC
!      even if it is the default for the architecture.  This is required
!      because some CPUs had an incorrect specification in older assemblers:
!      even though CRC should be the default for these cases the -mcpu
!      values would not turn it on.
  
!      However, assemblers with Armv8-R AArch64 support should not have this
!      issue, so we don't need this fix when targeting Armv8-R.  */
!   auto explicit_flags = (!(current_flags & AARCH64_FL_V8R)
! 			 ? AARCH64_FL_CRC : 0);
  
!   /* Add the features in isa_flags & ~current_flags using the smallest
!      possible number of extensions.  We can do this by iterating over the
!      array in reverse order, since the array is sorted topologically.
!      But in order to make the output more readable, it seems better
!      to add the strings in definition order.  */
!   aarch64_feature_flags added = 0;
!   for (unsigned int i = ARRAY_SIZE (all_extensions); i-- > 0; )
      {
!       auto &opt = all_extensions[i];
  
!       /* As a special case, emit +crypto rather than +aes+sha2,
! 	 in order to support assemblers that predate the separate
! 	 per-feature crypto flags.  */
!       auto flags = opt.flag_canonical;
!       if (flags == AARCH64_FL_CRYPTO)
! 	flags = AARCH64_FL_AES | AARCH64_FL_SHA2;
  
!       if ((flags & isa_flags & (explicit_flags | ~current_flags)) == flags)
  	{
! 	  current_flags |= opt.flags_on;
! 	  added |= opt.flag_canonical;
  	}
      }
+   for (auto &opt : all_extensions)
+     if (added & opt.flag_canonical)
+       {
+ 	outstr += "+";
+ 	outstr += opt.name;
+       }
+ 
+   /* Remove the features in current_flags & ~isa_flags.  If the feature does
+      not have an HWCAPs then it shouldn't be taken into account for feature
+      detection because one way or another we can't tell if it's available
+      or not.  */
+   for (auto &opt : all_extensions)
+     if (opt.native_detect_p
+ 	&& (opt.flag_canonical & current_flags & ~isa_flags))
+       {
+ 	current_flags &= ~opt.flags_off;
+ 	outstr += "+no";
+ 	outstr += opt.name;
+       }
  
    return outstr;
  }
*************** aarch64_rewrite_selected_cpu (const char
*** 518,524 ****
        || a_to_an->arch == aarch64_no_arch)
      fatal_error (input_location, "unknown value %qs for %<-mcpu%>", name);
  
!   uint64_t extensions = p_to_a->flags;
    aarch64_parse_extension (extension_str.c_str (), &extensions, NULL);
  
    std::string outstr = a_to_an->arch_name
--- 399,405 ----
        || a_to_an->arch == aarch64_no_arch)
      fatal_error (input_location, "unknown value %qs for %<-mcpu%>", name);
  
!   aarch64_feature_flags extensions = p_to_a->flags;
    aarch64_parse_extension (extension_str.c_str (), &extensions, NULL);
  
    std::string outstr = a_to_an->arch_name
diff -Nrcpad gcc-12.2.0/gcc/common/config/alpha/alpha-common.cc gcc-13.1.0/gcc/common/config/alpha/alpha-common.cc
*** gcc-12.2.0/gcc/common/config/alpha/alpha-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/alpha/alpha-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for DEC Alpha.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for DEC Alpha.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/arc/arc-common.cc gcc-13.1.0/gcc/common/config/arc/arc-common.cc
*** gcc-12.2.0/gcc/common/config/arc/arc-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/arc/arc-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Synopsys DesignWare ARC
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  		Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
--- 1,5 ----
  /* Common hooks for Synopsys DesignWare ARC
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  		Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com>
*************** arc_option_init_struct (struct gcc_optio
*** 44,51 ****
  #define OPT_LEVELS_3_PLUS_SPEED_ONLY OPT_LEVELS_3_PLUS
  static const struct default_options arc_option_optimization_table[] =
    {
-     { OPT_LEVELS_ALL, OPT_mRcq, NULL, 1 },
-     { OPT_LEVELS_ALL, OPT_mRcw, NULL, 1 },
      { OPT_LEVELS_ALL, OPT_msize_level_, NULL, 1 },
      { OPT_LEVELS_ALL, OPT_mearly_cbranchsi, NULL, 1 },
      { OPT_LEVELS_ALL, OPT_mbbit_peephole, NULL, 1 },
--- 44,49 ----
*************** static const struct default_options arc_
*** 56,62 ****
      { OPT_LEVELS_SIZE, OPT_fsection_anchors, NULL, 1 },
      { OPT_LEVELS_SIZE, OPT_mcase_vector_pcrel, NULL, 1 },
      { OPT_LEVELS_SIZE, OPT_msize_level_, NULL, 3 },
-     { OPT_LEVELS_SIZE, OPT_mmillicode, NULL, 1 },
      { OPT_LEVELS_SIZE, OPT_fif_conversion, NULL, 0 },
      { OPT_LEVELS_1_PLUS, OPT_fomit_frame_pointer, NULL, 1 },
      { OPT_LEVELS_3_PLUS_SPEED_ONLY, OPT_msize_level_, NULL, 0 },
--- 54,59 ----
diff -Nrcpad gcc-12.2.0/gcc/common/config/arm/arm-common.cc gcc-13.1.0/gcc/common/config/arm/arm-common.cc
*** gcc-12.2.0/gcc/common/config/arm/arm-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/arm/arm-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for ARM.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for ARM.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** arm_canon_arch_option_1 (int argc, const
*** 685,692 ****
--- 685,694 ----
    auto_sbitmap target_isa (isa_num_bits);
    auto_sbitmap base_isa (isa_num_bits);
    auto_sbitmap fpu_isa (isa_num_bits);
+   auto_sbitmap ignore_multilib_isa (isa_num_bits);
  
    bitmap_clear (fpu_isa);
+   bitmap_clear (ignore_multilib_isa);
  
    const arch_option *selected_arch = NULL;
  
*************** arm_canon_arch_option_1 (int argc, const
*** 719,733 ****
        arm_initialize_isa (target_isa, selected_arch->common.isa_bits);
        arm_parse_option_features (target_isa, &selected_arch->common,
  				 strchr (arch, '+'));
-       if (arch_for_multilib)
- 	{
- 	  const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB,
- 						     isa_nobit};
- 	  sbitmap isa_bits = sbitmap_alloc (isa_num_bits);
- 	  arm_initialize_isa (isa_bits, removable_bits);
- 	  bitmap_and_compl (target_isa, target_isa, isa_bits);
- 	}
- 
        if (fpu && strcmp (fpu, "auto") != 0)
  	{
  	  /* We assume that architectures do not have any FPU bits
--- 721,726 ----
*************** arm_canon_arch_option_1 (int argc, const
*** 806,811 ****
--- 799,814 ----
        bitmap_clear_bit (target_isa, isa_bit_vfpv2);
      }
  
+   /* Here we remove feature isa bits from -mlibarch string which are not
+      necessary for multilib string comparsion.  */
+   if ((arch || cpu) && arch_for_multilib)
+     {
+       const enum isa_feature removable_bits[] = {ISA_IGNORE_FOR_MULTILIB,
+ 						 isa_nobit};
+       arm_initialize_isa (ignore_multilib_isa, removable_bits);
+       bitmap_and_compl (target_isa, target_isa, ignore_multilib_isa);
+     }
+ 
    /* If we don't have a selected architecture by now, something's
       badly wrong.  */
    gcc_assert (selected_arch);
diff -Nrcpad gcc-12.2.0/gcc/common/config/avr/avr-common.cc gcc-13.1.0/gcc/common/config/avr/avr-common.cc
*** gcc-12.2.0/gcc/common/config/avr/avr-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/avr/avr-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for ATMEL AVR.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for ATMEL AVR.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/bfin/bfin-common.cc gcc-13.1.0/gcc/common/config/bfin/bfin-common.cc
*** gcc-12.2.0/gcc/common/config/bfin/bfin-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/bfin/bfin-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Blackfin.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Blackfin.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/bpf/bpf-common.cc gcc-13.1.0/gcc/common/config/bpf/bpf-common.cc
*** gcc-12.2.0/gcc/common/config/bpf/bpf-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/bpf/bpf-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for eBPF.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for eBPF.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/c6x/c6x-common.cc gcc-13.1.0/gcc/common/config/c6x/c6x-common.cc
*** gcc-12.2.0/gcc/common/config/c6x/c6x-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/c6x/c6x-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* TI C6X common hooks.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* TI C6X common hooks.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/cr16/cr16-common.cc gcc-13.1.0/gcc/common/config/cr16/cr16-common.cc
*** gcc-12.2.0/gcc/common/config/cr16/cr16-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/cr16/cr16-common.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,27 ****
- /* Common hooks for CR16.
-    Copyright (C) 2012-2022 Free Software Foundation, Inc.
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3, or (at your option)
-    any later version.
- 
-    GCC is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "tm.h"
- #include "common/common-target.h"
- #include "common/common-target-def.h"
- 
- struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/common/config/cris/cris-common.cc gcc-13.1.0/gcc/common/config/cris/cris-common.cc
*** gcc-12.2.0/gcc/common/config/cris/cris-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/cris/cris-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for CRIS.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for CRIS.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/csky/csky-common.cc gcc-13.1.0/gcc/common/config/csky/csky-common.cc
*** gcc-12.2.0/gcc/common/config/csky/csky-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/csky/csky-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for CSKY.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks for CSKY.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/common/config/default-common.cc gcc-13.1.0/gcc/common/config/default-common.cc
*** gcc-12.2.0/gcc/common/config/default-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/default-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default common target hooks initializer.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default common target hooks initializer.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/epiphany/epiphany-common.cc gcc-13.1.0/gcc/common/config/epiphany/epiphany-common.cc
*** gcc-12.2.0/gcc/common/config/epiphany/epiphany-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/epiphany/epiphany-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Adapteva Epiphany
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common hooks for Adapteva Epiphany
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/common/config/fr30/fr30-common.cc gcc-13.1.0/gcc/common/config/fr30/fr30-common.cc
*** gcc-12.2.0/gcc/common/config/fr30/fr30-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/fr30/fr30-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for FR30.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for FR30.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/frv/frv-common.cc gcc-13.1.0/gcc/common/config/frv/frv-common.cc
*** gcc-12.2.0/gcc/common/config/frv/frv-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/frv/frv-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/gcn/gcn-common.cc gcc-13.1.0/gcc/common/config/gcn/gcn-common.cc
*** gcc-12.2.0/gcc/common/config/gcn/gcn-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/gcn/gcn-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for GCN
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,5 ----
  /* Common hooks for GCN
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-12.2.0/gcc/common/config/h8300/h8300-common.cc gcc-13.1.0/gcc/common/config/h8300/h8300-common.cc
*** gcc-12.2.0/gcc/common/config/h8300/h8300-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/h8300/h8300-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Renesas H8/300.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas H8/300.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static const struct default_options h830
*** 32,37 ****
--- 32,39 ----
         and/or variable-cycle branches where (cycle count taken !=
         cycle count not taken).  */
      { OPT_LEVELS_ALL, OPT_freorder_blocks, NULL, 0 },
+     /* Enable redundant extension instructions removal at -O2 and higher.  */
+     { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 },
      { OPT_LEVELS_NONE, 0, NULL, 0 }
    };
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/i386/cpuinfo.h gcc-13.1.0/gcc/common/config/i386/cpuinfo.h
*** gcc-12.2.0/gcc/common/config/i386/cpuinfo.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/i386/cpuinfo.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Get CPU type and Features for x86 processors.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Sriraman Tallam (tmsriram@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Get CPU type and Features for x86 processors.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Sriraman Tallam (tmsriram@google.com)
  
  This file is part of GCC.
*************** struct __processor_model2
*** 55,97 ****
  static inline int
  has_cpu_feature (struct __processor_model *cpu_model,
  		 unsigned int *cpu_features2,
! 		 enum processor_features f)
  {
!   unsigned int i;
    if (f < 32)
      {
        /* The first 32 features.  */
!       return cpu_model->__cpu_features[0] & (1U << (f & 31));
      }
-   /* The rest of features.  cpu_features2[i] contains features from
-      (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
-   for (i = 0; i < SIZE_OF_CPU_FEATURES; i++)
-     if (f < (32 + 32 + i * 32))
-     return cpu_features2[i] & (1U << ((f - (32 + i * 32)) & 31));
-   gcc_unreachable ();
  }
  
  static inline void
  set_cpu_feature (struct __processor_model *cpu_model,
  		 unsigned int *cpu_features2,
! 		 enum processor_features f)
  {
!   unsigned int i;
    if (f < 32)
      {
        /* The first 32 features.  */
!       cpu_model->__cpu_features[0] |= (1U << (f & 31));
!       return;
      }
-   /* The rest of features.  cpu_features2[i] contains features from
-      (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
-   for (i = 0; i < SIZE_OF_CPU_FEATURES; i++)
-     if (f < (32 + 32 + i * 32))
-       {
- 	cpu_features2[i] |= (1U << ((f - (32 + i * 32)) & 31));
- 	return;
-       }
-   gcc_unreachable ();
  }
  
  /* Get the specific type of AMD CPU and return AMD CPU name.  Return
--- 55,131 ----
  static inline int
  has_cpu_feature (struct __processor_model *cpu_model,
  		 unsigned int *cpu_features2,
! 		 enum processor_features feature)
  {
!   unsigned index, offset;
!   unsigned f = feature;
! 
    if (f < 32)
      {
        /* The first 32 features.  */
!       return cpu_model->__cpu_features[0] & (1U << f);
!     }
!   else
!     {
!       /* The rest of features.  cpu_features2[i] contains features from
! 	 (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
!       f -= 32;
!       index = f / 32;
!       offset = f % 32;
!       return cpu_features2[index] & (1U << offset);
      }
  }
  
+ /* Save FEATURE to either CPU_MODEL or CPU_FEATURES2.  */
+ 
  static inline void
  set_cpu_feature (struct __processor_model *cpu_model,
  		 unsigned int *cpu_features2,
! 		 enum processor_features feature)
  {
!   unsigned index, offset;
!   unsigned f = feature;
! 
    if (f < 32)
      {
        /* The first 32 features.  */
!       cpu_model->__cpu_features[0] |= (1U << f);
!     }
!   else
!     {
!       /* The rest of features.  cpu_features2[i] contains features from
! 	 (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
!       f -= 32;
!       index = f / 32;
!       offset = f % 32;
!       cpu_features2[index] |= (1U << offset);
!     }
! }
! 
! /* Drop FEATURE from either CPU_MODEL or CPU_FEATURES2.  */
! 
! static inline void
! reset_cpu_feature (struct __processor_model *cpu_model,
! 		   unsigned int *cpu_features2,
! 		   enum processor_features feature)
! {
!   unsigned index, offset;
!   unsigned f = feature;
! 
!   if (f < 32)
!     {
!       /* The first 32 features.  */
!       cpu_model->__cpu_features[0] &= ~(1U << f);
!     }
!   else
!     {
!       /* The rest of features.  cpu_features2[i] contains features from
! 	 (32 + i * 32) to (31 + 32 + i * 32), inclusively.  */
!       f -= 32;
!       index = f / 32;
!       offset = f % 32;
!       cpu_features2[index] &= ~(1U << offset);
      }
  }
  
  /* Get the specific type of AMD CPU and return AMD CPU name.  Return
*************** get_amd_cpu (struct __processor_model *c
*** 247,259 ****
        break;
      case 0x19:
        cpu_model->__cpu_type = AMDFAM19H;
!       /* AMD family 19h version 1.  */
        if (model <= 0x0f)
  	{
  	  cpu = "znver3";
  	  CHECK___builtin_cpu_is ("znver3");
  	  cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3;
  	}
        else if (has_cpu_feature (cpu_model, cpu_features2,
  				FEATURE_VAES))
  	{
--- 281,307 ----
        break;
      case 0x19:
        cpu_model->__cpu_type = AMDFAM19H;
!       /* AMD family 19h.  */
        if (model <= 0x0f)
  	{
  	  cpu = "znver3";
  	  CHECK___builtin_cpu_is ("znver3");
  	  cpu_model->__cpu_subtype = AMDFAM19H_ZNVER3;
  	}
+       else if ((model >= 0x10 && model <= 0x1f)
+ 		|| (model >= 0x60 && model <= 0xaf))
+ 	{
+ 	  cpu = "znver4";
+ 	  CHECK___builtin_cpu_is ("znver4");
+ 	  cpu_model->__cpu_subtype = AMDFAM19H_ZNVER4;
+ 	}
+       else if (has_cpu_feature (cpu_model, cpu_features2,
+ 				FEATURE_AVX512F))
+ 	{
+ 	  cpu = "znver4";
+ 	  CHECK___builtin_cpu_is ("znver4");
+ 	  cpu_model->__cpu_subtype = AMDFAM19H_ZNVER4;
+ 	}
        else if (has_cpu_feature (cpu_model, cpu_features2,
  				FEATURE_VAES))
  	{
*************** get_intel_cpu (struct __processor_model
*** 490,495 ****
--- 538,548 ----
      case 0x9a:
      case 0xbf:
        /* Alder Lake.  */
+     case 0xb7:
+       /* Raptor Lake.  */
+     case 0xaa:
+     case 0xac:
+       /* Meteor Lake.  */
        cpu = "alderlake";
        CHECK___builtin_cpu_is ("corei7");
        CHECK___builtin_cpu_is ("alderlake");
*************** get_intel_cpu (struct __processor_model
*** 498,509 ****
--- 551,585 ----
        break;
      case 0x8f:
        /* Sapphire Rapids.  */
+     case 0xcf:
+       /* Emerald Rapids.  */
        cpu = "sapphirerapids";
        CHECK___builtin_cpu_is ("corei7");
        CHECK___builtin_cpu_is ("sapphirerapids");
        cpu_model->__cpu_type = INTEL_COREI7;
        cpu_model->__cpu_subtype = INTEL_COREI7_SAPPHIRERAPIDS;
        break;
+     case 0xaf:
+       /* Sierra Forest.  */
+       cpu = "sierraforest";
+       CHECK___builtin_cpu_is ("sierraforest");
+       cpu_model->__cpu_type = INTEL_SIERRAFOREST;
+       break;
+     case 0xad:
+     case 0xae:
+       /* Granite Rapids.  */
+       cpu = "graniterapids";
+       CHECK___builtin_cpu_is ("corei7");
+       CHECK___builtin_cpu_is ("graniterapids");
+       cpu_model->__cpu_type = INTEL_COREI7;
+       cpu_model->__cpu_subtype = INTEL_COREI7_GRANITERAPIDS;
+       break;
+     case 0xb6:
+       /* Grand Ridge.  */
+       cpu = "grandridge";
+       CHECK___builtin_cpu_is ("grandridge");
+       cpu_model->__cpu_type = INTEL_GRANDRIDGE;
+       break;
      case 0x17:
      case 0x1d:
        /* Penryn.  */
*************** get_intel_cpu (struct __processor_model
*** 520,525 ****
--- 596,634 ----
    return cpu;
  }
  
+ /* Get the specific type of ZHAOXIN CPU and return ZHAOXIN CPU name.
+    Return NULL for unknown ZHAOXIN CPU.  */
+ 
+ static inline const char *
+ get_zhaoxin_cpu (struct __processor_model *cpu_model,
+ 		 struct __processor_model2 *cpu_model2,
+ 		 unsigned int *cpu_features2)
+ {
+   const char *cpu = NULL;
+   unsigned int family = cpu_model2->__cpu_family;
+   unsigned int model = cpu_model2->__cpu_model;
+ 
+   switch (family)
+     {
+     /* ZHAOXIN family 7h.  */
+     case 0x07:
+       cpu_model->__cpu_type = ZHAOXIN_FAM7H;
+       if (model == 0x3b)
+ 	{
+ 	  cpu = "lujiazui";
+ 	  CHECK___builtin_cpu_is ("lujiazui");
+ 	  reset_cpu_feature (cpu_model, cpu_features2, FEATURE_AVX);
+ 	  reset_cpu_feature (cpu_model, cpu_features2, FEATURE_F16C);
+ 	  cpu_model->__cpu_subtype = ZHAOXIN_FAM7H_LUJIAZUI;
+ 	}
+       break;
+     default:
+       break;
+     }
+ 
+   return cpu;
+ }
+ 
  /* ECX and EDX are output of CPUID at level one.  */
  static inline void
  get_available_features (struct __processor_model *cpu_model,
*************** get_available_features (struct __process
*** 744,759 ****
--- 853,887 ----
        __cpuid_count (7, 1, eax, ebx, ecx, edx);
        if (eax & bit_HRESET)
  	set_feature (FEATURE_HRESET);
+       if (eax & bit_CMPCCXADD)
+ 	set_feature(FEATURE_CMPCCXADD);
+       if (edx & bit_PREFETCHI)
+ 	set_feature (FEATURE_PREFETCHI);
+       if (eax & bit_RAOINT)
+ 	set_feature (FEATURE_RAOINT);
        if (avx_usable)
  	{
  	  if (eax & bit_AVXVNNI)
  	    set_feature (FEATURE_AVXVNNI);
+ 	  if (eax & bit_AVXIFMA)
+ 	    set_feature (FEATURE_AVXIFMA);
+ 	  if (edx & bit_AVXVNNIINT8)
+ 	    set_feature (FEATURE_AVXVNNIINT8);
+ 	  if (edx & bit_AVXNECONVERT)
+ 	    set_feature (FEATURE_AVXNECONVERT);
  	}
        if (avx512_usable)
  	{
  	  if (eax & bit_AVX512BF16)
  	    set_feature (FEATURE_AVX512BF16);
  	}
+       if (amx_usable)
+ 	{
+ 	  if (eax & bit_AMX_FP16)
+ 	    set_feature (FEATURE_AMX_FP16);
+ 	  if (edx & bit_AMX_COMPLEX)
+ 	    set_feature (FEATURE_AMX_COMPLEX);
+ 	}
      }
  
    /* Get Advanced Features at level 0xd (eax = 0xd, ecx = 1). */
*************** cpu_indicator_init (struct __processor_m
*** 890,895 ****
--- 1018,1027 ----
    extended_model = (eax >> 12) & 0xf0;
    extended_family = (eax >> 20) & 0xff;
  
+   /* Find available features. */
+   get_available_features (cpu_model, cpu_model2, cpu_features2,
+ 			  ecx, edx);
+ 
    if (vendor == signature_INTEL_ebx)
      {
        /* Adjust model and family for Intel CPUS. */
*************** cpu_indicator_init (struct __processor_m
*** 904,912 ****
        cpu_model2->__cpu_family = family;
        cpu_model2->__cpu_model = model;
  
-       /* Find available features. */
-       get_available_features (cpu_model, cpu_model2, cpu_features2,
- 			      ecx, edx);
        /* Get CPU type.  */
        get_intel_cpu (cpu_model, cpu_model2, cpu_features2);
        cpu_model->__cpu_vendor = VENDOR_INTEL;
--- 1036,1041 ----
*************** cpu_indicator_init (struct __processor_m
*** 923,937 ****
        cpu_model2->__cpu_family = family;
        cpu_model2->__cpu_model = model;
  
-       /* Find available features. */
-       get_available_features (cpu_model, cpu_model2, cpu_features2,
- 			      ecx, edx);
        /* Get CPU type.  */
        get_amd_cpu (cpu_model, cpu_model2, cpu_features2);
        cpu_model->__cpu_vendor = VENDOR_AMD;
      }
!   else if (vendor == signature_CENTAUR_ebx)
      cpu_model->__cpu_vendor = VENDOR_CENTAUR;
    else if (vendor == signature_CYRIX_ebx)
      cpu_model->__cpu_vendor = VENDOR_CYRIX;
    else if (vendor == signature_NSC_ebx)
--- 1052,1077 ----
        cpu_model2->__cpu_family = family;
        cpu_model2->__cpu_model = model;
  
        /* Get CPU type.  */
        get_amd_cpu (cpu_model, cpu_model2, cpu_features2);
        cpu_model->__cpu_vendor = VENDOR_AMD;
      }
!   else if (vendor == signature_CENTAUR_ebx && family < 0x07)
      cpu_model->__cpu_vendor = VENDOR_CENTAUR;
+   else if (vendor == signature_SHANGHAI_ebx
+ 	   || vendor == signature_CENTAUR_ebx)
+     {
+       /* Adjust model and family for ZHAOXIN CPUS.  */
+       if (family == 0x07)
+ 	model += extended_model;
+ 
+       cpu_model2->__cpu_family = family;
+       cpu_model2->__cpu_model = model;
+ 
+       /* Get CPU type.  */
+       get_zhaoxin_cpu (cpu_model, cpu_model2, cpu_features2);
+       cpu_model->__cpu_vendor = VENDOR_ZHAOXIN;
+     }
    else if (vendor == signature_CYRIX_ebx)
      cpu_model->__cpu_vendor = VENDOR_CYRIX;
    else if (vendor == signature_NSC_ebx)
diff -Nrcpad gcc-12.2.0/gcc/common/config/i386/i386-common.cc gcc-13.1.0/gcc/common/config/i386/i386-common.cc
*** gcc-12.2.0/gcc/common/config/i386/i386-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/i386/i386-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* IA-32 common hooks.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* IA-32 common hooks.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 76,81 ****
--- 76,82 ----
    (OPTION_MASK_ISA_AVX512VL | OPTION_MASK_ISA_AVX512F_SET)
  #define OPTION_MASK_ISA_AVX512IFMA_SET \
    (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512F_SET)
+ #define OPTION_MASK_ISA2_AVXIFMA_SET OPTION_MASK_ISA2_AVXIFMA
  #define OPTION_MASK_ISA_AVX512VBMI_SET \
    (OPTION_MASK_ISA_AVX512VBMI | OPTION_MASK_ISA_AVX512BW_SET)
  #define OPTION_MASK_ISA2_AVX5124FMAPS_SET OPTION_MASK_ISA2_AVX5124FMAPS
*************** along with GCC; see the file COPYING3.
*** 105,112 ****
  #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB
  #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET OPTION_MASK_ISA2_AVX512VP2INTERSECT
  #define OPTION_MASK_ISA2_AMX_TILE_SET OPTION_MASK_ISA2_AMX_TILE
! #define OPTION_MASK_ISA2_AMX_INT8_SET OPTION_MASK_ISA2_AMX_INT8
! #define OPTION_MASK_ISA2_AMX_BF16_SET OPTION_MASK_ISA2_AMX_BF16
  
  /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
     as -msse4.2.  */
--- 106,124 ----
  #define OPTION_MASK_ISA_CLWB_SET OPTION_MASK_ISA_CLWB
  #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_SET OPTION_MASK_ISA2_AVX512VP2INTERSECT
  #define OPTION_MASK_ISA2_AMX_TILE_SET OPTION_MASK_ISA2_AMX_TILE
! #define OPTION_MASK_ISA2_AMX_INT8_SET \
!   (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_INT8)
! #define OPTION_MASK_ISA2_AMX_BF16_SET \
!   (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_BF16)
! #define OPTION_MASK_ISA2_AVXVNNIINT8_SET OPTION_MASK_ISA2_AVXVNNIINT8
! #define OPTION_MASK_ISA2_AVXNECONVERT_SET OPTION_MASK_ISA2_AVXNECONVERT
! #define OPTION_MASK_ISA2_CMPCCXADD_SET OPTION_MASK_ISA2_CMPCCXADD
! #define OPTION_MASK_ISA2_AMX_FP16_SET \
!   (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_FP16)
! #define OPTION_MASK_ISA2_PREFETCHI_SET OPTION_MASK_ISA2_PREFETCHI
! #define OPTION_MASK_ISA2_RAOINT_SET OPTION_MASK_ISA2_RAOINT
! #define OPTION_MASK_ISA2_AMX_COMPLEX_SET \
!   (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_COMPLEX)
  
  /* SSE4 includes both SSE4.1 and SSE4.2. -msse4 should be the same
     as -msse4.2.  */
*************** along with GCC; see the file COPYING3.
*** 212,218 ****
  #define OPTION_MASK_ISA_AVX2_UNSET \
    (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX512F_UNSET)
  #define OPTION_MASK_ISA2_AVX2_UNSET \
!   (OPTION_MASK_ISA2_AVXVNNI_UNSET | OPTION_MASK_ISA2_AVX512F_UNSET)
  #define OPTION_MASK_ISA_AVX512F_UNSET \
    (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
     | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
--- 224,232 ----
  #define OPTION_MASK_ISA_AVX2_UNSET \
    (OPTION_MASK_ISA_AVX2 | OPTION_MASK_ISA_AVX512F_UNSET)
  #define OPTION_MASK_ISA2_AVX2_UNSET \
!   (OPTION_MASK_ISA2_AVXIFMA_UNSET | OPTION_MASK_ISA2_AVXVNNI_UNSET \
!    | OPTION_MASK_ISA2_AVXVNNIINT8_UNSET | OPTION_MASK_ISA2_AVXNECONVERT_UNSET \
!    | OPTION_MASK_ISA2_AVX512F_UNSET)
  #define OPTION_MASK_ISA_AVX512F_UNSET \
    (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_AVX512CD_UNSET \
     | OPTION_MASK_ISA_AVX512PF_UNSET | OPTION_MASK_ISA_AVX512ER_UNSET \
*************** along with GCC; see the file COPYING3.
*** 230,235 ****
--- 244,250 ----
    (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VBMI_UNSET)
  #define OPTION_MASK_ISA_AVX512VL_UNSET OPTION_MASK_ISA_AVX512VL
  #define OPTION_MASK_ISA_AVX512IFMA_UNSET OPTION_MASK_ISA_AVX512IFMA
+ #define OPTION_MASK_ISA2_AVXIFMA_UNSET OPTION_MASK_ISA2_AVXIFMA
  #define OPTION_MASK_ISA_AVX512VBMI_UNSET OPTION_MASK_ISA_AVX512VBMI
  #define OPTION_MASK_ISA2_AVX5124FMAPS_UNSET OPTION_MASK_ISA2_AVX5124FMAPS
  #define OPTION_MASK_ISA2_AVX5124VNNIW_UNSET OPTION_MASK_ISA2_AVX5124VNNIW
*************** along with GCC; see the file COPYING3.
*** 267,273 ****
  #define OPTION_MASK_ISA2_SERIALIZE_UNSET OPTION_MASK_ISA2_SERIALIZE
  #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET OPTION_MASK_ISA2_AVX512VP2INTERSECT
  #define OPTION_MASK_ISA2_TSXLDTRK_UNSET OPTION_MASK_ISA2_TSXLDTRK
! #define OPTION_MASK_ISA2_AMX_TILE_UNSET OPTION_MASK_ISA2_AMX_TILE
  #define OPTION_MASK_ISA2_AMX_INT8_UNSET OPTION_MASK_ISA2_AMX_INT8
  #define OPTION_MASK_ISA2_AMX_BF16_UNSET OPTION_MASK_ISA2_AMX_BF16
  #define OPTION_MASK_ISA2_UINTR_UNSET OPTION_MASK_ISA2_UINTR
--- 282,291 ----
  #define OPTION_MASK_ISA2_SERIALIZE_UNSET OPTION_MASK_ISA2_SERIALIZE
  #define OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET OPTION_MASK_ISA2_AVX512VP2INTERSECT
  #define OPTION_MASK_ISA2_TSXLDTRK_UNSET OPTION_MASK_ISA2_TSXLDTRK
! #define OPTION_MASK_ISA2_AMX_TILE_UNSET \
!   (OPTION_MASK_ISA2_AMX_TILE | OPTION_MASK_ISA2_AMX_INT8_UNSET \
!    | OPTION_MASK_ISA2_AMX_BF16_UNSET | OPTION_MASK_ISA2_AMX_FP16_UNSET \
!    | OPTION_MASK_ISA2_AMX_COMPLEX_UNSET)
  #define OPTION_MASK_ISA2_AMX_INT8_UNSET OPTION_MASK_ISA2_AMX_INT8
  #define OPTION_MASK_ISA2_AMX_BF16_UNSET OPTION_MASK_ISA2_AMX_BF16
  #define OPTION_MASK_ISA2_UINTR_UNSET OPTION_MASK_ISA2_UINTR
*************** along with GCC; see the file COPYING3.
*** 275,280 ****
--- 293,305 ----
  #define OPTION_MASK_ISA2_KL_UNSET \
    (OPTION_MASK_ISA2_KL | OPTION_MASK_ISA2_WIDEKL_UNSET)
  #define OPTION_MASK_ISA2_WIDEKL_UNSET OPTION_MASK_ISA2_WIDEKL
+ #define OPTION_MASK_ISA2_AVXVNNIINT8_UNSET OPTION_MASK_ISA2_AVXVNNIINT8
+ #define OPTION_MASK_ISA2_AVXNECONVERT_UNSET OPTION_MASK_ISA2_AVXNECONVERT
+ #define OPTION_MASK_ISA2_CMPCCXADD_UNSET OPTION_MASK_ISA2_CMPCCXADD
+ #define OPTION_MASK_ISA2_AMX_FP16_UNSET OPTION_MASK_ISA2_AMX_FP16
+ #define OPTION_MASK_ISA2_PREFETCHI_UNSET OPTION_MASK_ISA2_PREFETCHI
+ #define OPTION_MASK_ISA2_RAOINT_UNSET OPTION_MASK_ISA2_RAOINT
+ #define OPTION_MASK_ISA2_AMX_COMPLEX_UNSET OPTION_MASK_ISA2_AMX_COMPLEX
  
  /* SSE4 includes both SSE4.1 and SSE4.2.  -mno-sse4 should the same
     as -mno-sse4.1. */
*************** along with GCC; see the file COPYING3.
*** 315,325 ****
     | OPTION_MASK_ISA_SSE_UNSET)
  
  #define OPTION_MASK_ISA2_AVX512F_UNSET \
!   (OPTION_MASK_ISA2_AVX512BF16_UNSET \
     | OPTION_MASK_ISA2_AVX5124FMAPS_UNSET \
     | OPTION_MASK_ISA2_AVX5124VNNIW_UNSET \
!    | OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET \
!    | OPTION_MASK_ISA2_AVX512FP16_UNSET)
  #define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \
    OPTION_MASK_ISA2_SSE_UNSET
  #define OPTION_MASK_ISA2_AVX_UNSET OPTION_MASK_ISA2_AVX2_UNSET
--- 340,349 ----
     | OPTION_MASK_ISA_SSE_UNSET)
  
  #define OPTION_MASK_ISA2_AVX512F_UNSET \
!   (OPTION_MASK_ISA2_AVX512BW_UNSET \
     | OPTION_MASK_ISA2_AVX5124FMAPS_UNSET \
     | OPTION_MASK_ISA2_AVX5124VNNIW_UNSET \
!    | OPTION_MASK_ISA2_AVX512VP2INTERSECT_UNSET)
  #define OPTION_MASK_ISA2_GENERAL_REGS_ONLY_UNSET \
    OPTION_MASK_ISA2_SSE_UNSET
  #define OPTION_MASK_ISA2_AVX_UNSET OPTION_MASK_ISA2_AVX2_UNSET
*************** ix86_handle_option (struct gcc_options *
*** 1125,1130 ****
--- 1149,1268 ----
  	}
        return true;
  
+     case OPT_mavxifma:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXIFMA_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXIFMA_SET;
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVXIFMA_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXIFMA_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mavxvnniint8:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXVNNIINT8_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |=
+ 	    OPTION_MASK_ISA2_AVXVNNIINT8_SET;
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &=
+ 	    ~OPTION_MASK_ISA2_AVXVNNIINT8_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |=
+ 	    OPTION_MASK_ISA2_AVXVNNIINT8_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mavxneconvert:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AVXNECONVERT_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AVXNECONVERT_SET;
+ 	  opts->x_ix86_isa_flags |= OPTION_MASK_ISA_AVX2_SET;
+ 	  opts->x_ix86_isa_flags_explicit |= OPTION_MASK_ISA_AVX2_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AVXNECONVERT_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit
+ 	    |= OPTION_MASK_ISA2_AVXNECONVERT_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mcmpccxadd:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_CMPCCXADD_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CMPCCXADD_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_CMPCCXADD_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_CMPCCXADD_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mamx_fp16:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_FP16_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_FP16_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_FP16_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_FP16_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mprefetchi:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_PREFETCHI_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PREFETCHI_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_PREFETCHI_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_PREFETCHI_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mraoint:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_RAOINT_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RAOINT_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_RAOINT_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_RAOINT_UNSET;
+ 	}
+       return true;
+ 
+     case OPT_mamx_complex:
+       if (value)
+ 	{
+ 	  opts->x_ix86_isa_flags2 |= OPTION_MASK_ISA2_AMX_COMPLEX_SET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_COMPLEX_SET;
+ 	}
+       else
+ 	{
+ 	  opts->x_ix86_isa_flags2 &= ~OPTION_MASK_ISA2_AMX_COMPLEX_UNSET;
+ 	  opts->x_ix86_isa_flags2_explicit |= OPTION_MASK_ISA2_AMX_COMPLEX_UNSET;
+ 	}
+       return true;
+ 
      case OPT_mfma:
        if (value)
  	{
*************** static const struct default_options ix86
*** 1687,1692 ****
--- 1825,1839 ----
      /* The STC algorithm produces the smallest code at -Os, for x86.  */
      { OPT_LEVELS_2_PLUS, OPT_freorder_blocks_algorithm_, NULL,
        REORDER_BLOCKS_ALGORITHM_STC },
+ 
+     /* Turn on -funroll-loops with -munroll-only-small-loops to enable small
+        loop unrolling at -O2.  */
+     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_funroll_loops, NULL, 1 },
+     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_only_small_loops, NULL, 1 },
+     /* Turns off -frename-registers and -fweb which are enabled by
+        funroll-loops.  */
+     { OPT_LEVELS_ALL, OPT_frename_registers, NULL, 0 },
+     { OPT_LEVELS_ALL, OPT_fweb, NULL, 0 },
      /* Turn off -fschedule-insns by default.  It tends to make the
         problem with not enough registers even worse.  */
      { OPT_LEVELS_ALL, OPT_fschedule_insns, NULL, 0 },
*************** const char *const processor_names[] =
*** 1803,1808 ****
--- 1950,1957 ----
    "goldmont",
    "goldmont-plus",
    "tremont",
+   "sierraforest",
+   "grandridge",
    "knl",
    "knm",
    "skylake",
*************** const char *const processor_names[] =
*** 1816,1822 ****
--- 1965,1973 ----
    "sapphirerapids",
    "alderlake",
    "rocketlake",
+   "graniterapids",
    "intel",
+   "lujiazui",
    "geode",
    "k6",
    "athlon",
*************** const char *const processor_names[] =
*** 1830,1836 ****
    "btver2",
    "znver1",
    "znver2",
!   "znver3"
  };
  
  /* Guarantee that the array is aligned with enum processor_type.  */
--- 1981,1988 ----
    "btver2",
    "znver1",
    "znver2",
!   "znver3",
!   "znver4"
  };
  
  /* Guarantee that the array is aligned with enum processor_type.  */
*************** const pta processor_alias_table[] =
*** 1927,1934 ****
--- 2079,2094 ----
      M_CPU_SUBTYPE (INTEL_COREI7_COOPERLAKE), P_PROC_AVX512F},
    {"sapphirerapids", PROCESSOR_SAPPHIRERAPIDS, CPU_HASWELL, PTA_SAPPHIRERAPIDS,
      M_CPU_SUBTYPE (INTEL_COREI7_SAPPHIRERAPIDS), P_PROC_AVX512F},
+   {"emeraldrapids", PROCESSOR_SAPPHIRERAPIDS, CPU_HASWELL, PTA_SAPPHIRERAPIDS,
+     M_CPU_SUBTYPE (INTEL_COREI7_SAPPHIRERAPIDS), P_PROC_AVX512F},
    {"alderlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
      M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
+   {"raptorlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
+     M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
+   {"meteorlake", PROCESSOR_ALDERLAKE, CPU_HASWELL, PTA_ALDERLAKE,
+     M_CPU_SUBTYPE (INTEL_COREI7_ALDERLAKE), P_PROC_AVX2},
+   {"graniterapids", PROCESSOR_GRANITERAPIDS, CPU_HASWELL, PTA_GRANITERAPIDS,
+     M_CPU_SUBTYPE (INTEL_COREI7_GRANITERAPIDS), P_PROC_AVX512F},
    {"bonnell", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
      M_CPU_TYPE (INTEL_BONNELL), P_PROC_SSSE3},
    {"atom", PROCESSOR_BONNELL, CPU_ATOM, PTA_BONNELL,
*************** const pta processor_alias_table[] =
*** 1943,1948 ****
--- 2103,2112 ----
      M_CPU_TYPE (INTEL_GOLDMONT_PLUS), P_PROC_SSE4_2},
    {"tremont", PROCESSOR_TREMONT, CPU_HASWELL, PTA_TREMONT,
      M_CPU_TYPE (INTEL_TREMONT), P_PROC_SSE4_2},
+   {"sierraforest", PROCESSOR_SIERRAFOREST, CPU_HASWELL, PTA_SIERRAFOREST,
+     M_CPU_SUBTYPE (INTEL_SIERRAFOREST), P_PROC_AVX2},
+   {"grandridge", PROCESSOR_GRANDRIDGE, CPU_HASWELL, PTA_GRANDRIDGE,
+     M_CPU_TYPE (INTEL_GRANDRIDGE), P_PROC_AVX2},
    {"knl", PROCESSOR_KNL, CPU_SLM, PTA_KNL,
      M_CPU_TYPE (INTEL_KNL), P_PROC_AVX512F},
    {"knm", PROCESSOR_KNM, CPU_SLM, PTA_KNM,
*************** const pta processor_alias_table[] =
*** 1995,2000 ****
--- 2159,2171 ----
    {"nano-x4", PROCESSOR_K8, CPU_K8,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
        | PTA_SSSE3 | PTA_SSE4_1 | PTA_FXSR, 0, P_NONE},
+   {"lujiazui", PROCESSOR_LUJIAZUI, CPU_LUJIAZUI,
+     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
+ 	| PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
+ 	| PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_BMI | PTA_BMI2
+ 	| PTA_PRFCHW | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE
+ 	| PTA_RDRND | PTA_MOVBE | PTA_ADX | PTA_RDSEED | PTA_POPCNT,
+ 	M_CPU_SUBTYPE (ZHAOXIN_FAM7H_LUJIAZUI), P_NONE},
    {"k8", PROCESSOR_K8, CPU_K8,
      PTA_64BIT | PTA_MMX | PTA_3DNOW | PTA_3DNOW_A | PTA_SSE
        | PTA_SSE2 | PTA_NO_SAHF | PTA_FXSR, 0, P_NONE},
*************** const pta processor_alias_table[] =
*** 2055,2091 ****
        | PTA_MOVBE | PTA_MWAITX,
      M_CPU_SUBTYPE (AMDFAM15H_BDVER4), P_PROC_AVX2},
    {"znver1", PROCESSOR_ZNVER1, CPU_ZNVER1,
!     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
!       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
!       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
!       | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_PRFCHW
!       | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE
!       | PTA_RDRND | PTA_MOVBE | PTA_MWAITX | PTA_ADX | PTA_RDSEED
!       | PTA_CLZERO | PTA_CLFLUSHOPT | PTA_XSAVEC | PTA_XSAVES
!       | PTA_SHA | PTA_LZCNT | PTA_POPCNT,
      M_CPU_SUBTYPE (AMDFAM17H_ZNVER1), P_PROC_AVX2},
    {"znver2", PROCESSOR_ZNVER2, CPU_ZNVER2,
!     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
!       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
!       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
!       | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_PRFCHW
!       | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE
!       | PTA_RDRND | PTA_MOVBE | PTA_MWAITX | PTA_ADX | PTA_RDSEED
!       | PTA_CLZERO | PTA_CLFLUSHOPT | PTA_XSAVEC | PTA_XSAVES
!       | PTA_SHA | PTA_LZCNT | PTA_POPCNT | PTA_CLWB | PTA_RDPID
!       | PTA_WBNOINVD,
      M_CPU_SUBTYPE (AMDFAM17H_ZNVER2), P_PROC_AVX2},
    {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3,
!     PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
!       | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
!       | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2
!       | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_PRFCHW
!       | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT | PTA_FSGSBASE
!       | PTA_RDRND | PTA_MOVBE | PTA_MWAITX | PTA_ADX | PTA_RDSEED
!       | PTA_CLZERO | PTA_CLFLUSHOPT | PTA_XSAVEC | PTA_XSAVES
!       | PTA_SHA | PTA_LZCNT | PTA_POPCNT | PTA_CLWB | PTA_RDPID
!       | PTA_WBNOINVD | PTA_VAES | PTA_VPCLMULQDQ | PTA_PKU,
      M_CPU_SUBTYPE (AMDFAM19H_ZNVER3), P_PROC_AVX2},
    {"btver1", PROCESSOR_BTVER1, CPU_GENERIC,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
        | PTA_SSSE3 | PTA_SSE4A | PTA_ABM | PTA_CX16 | PTA_PRFCHW
--- 2226,2242 ----
        | PTA_MOVBE | PTA_MWAITX,
      M_CPU_SUBTYPE (AMDFAM15H_BDVER4), P_PROC_AVX2},
    {"znver1", PROCESSOR_ZNVER1, CPU_ZNVER1,
!     PTA_ZNVER1,
      M_CPU_SUBTYPE (AMDFAM17H_ZNVER1), P_PROC_AVX2},
    {"znver2", PROCESSOR_ZNVER2, CPU_ZNVER2,
!     PTA_ZNVER2,
      M_CPU_SUBTYPE (AMDFAM17H_ZNVER2), P_PROC_AVX2},
    {"znver3", PROCESSOR_ZNVER3, CPU_ZNVER3,
!     PTA_ZNVER3,
      M_CPU_SUBTYPE (AMDFAM19H_ZNVER3), P_PROC_AVX2},
+   {"znver4", PROCESSOR_ZNVER4, CPU_ZNVER4,
+     PTA_ZNVER4,
+     M_CPU_SUBTYPE (AMDFAM19H_ZNVER4), P_PROC_AVX512F},
    {"btver1", PROCESSOR_BTVER1, CPU_GENERIC,
      PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2 | PTA_SSE3
        | PTA_SSSE3 | PTA_SSE4A | PTA_ABM | PTA_CX16 | PTA_PRFCHW
diff -Nrcpad gcc-12.2.0/gcc/common/config/i386/i386-cpuinfo.h gcc-13.1.0/gcc/common/config/i386/i386-cpuinfo.h
*** gcc-12.2.0/gcc/common/config/i386/i386-cpuinfo.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/i386/i386-cpuinfo.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Get CPU type and Features for x86 processors.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Sriraman Tallam (tmsriram@google.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Get CPU type and Features for x86 processors.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Sriraman Tallam (tmsriram@google.com)
  
  This file is part of GCC.
*************** enum processor_vendor
*** 29,40 ****
  {
    VENDOR_INTEL = 1,
    VENDOR_AMD,
    VENDOR_OTHER,
    VENDOR_CENTAUR,
    VENDOR_CYRIX,
    VENDOR_NSC,
!   BUILTIN_VENDOR_MAX = VENDOR_OTHER,
!   VENDOR_MAX
  };
  
  /* Any new types or subtypes have to be inserted at the end. */
--- 29,43 ----
  {
    VENDOR_INTEL = 1,
    VENDOR_AMD,
+   VENDOR_ZHAOXIN,
    VENDOR_OTHER,
    VENDOR_CENTAUR,
    VENDOR_CYRIX,
    VENDOR_NSC,
! 
!   /* Maximum values must be at the end of this enum.  */
!   VENDOR_MAX,
!   BUILTIN_VENDOR_MAX = VENDOR_OTHER
  };
  
  /* Any new types or subtypes have to be inserted at the end. */
*************** enum processor_types
*** 56,61 ****
--- 59,67 ----
    INTEL_GOLDMONT_PLUS,
    INTEL_TREMONT,
    AMDFAM19H,
+   ZHAOXIN_FAM7H,
+   INTEL_SIERRAFOREST,
+   INTEL_GRANDRIDGE,
    CPU_TYPE_MAX,
    BUILTIN_CPU_TYPE_MAX = CPU_TYPE_MAX
  };
*************** enum processor_subtypes
*** 89,94 ****
--- 95,103 ----
    INTEL_COREI7_ALDERLAKE,
    AMDFAM19H_ZNVER3,
    INTEL_COREI7_ROCKETLAKE,
+   ZHAOXIN_FAM7H_LUJIAZUI,
+   AMDFAM19H_ZNVER4,
+   INTEL_COREI7_GRANITERAPIDS,
    CPU_SUBTYPE_MAX
  };
  
*************** enum processor_features
*** 237,242 ****
--- 246,259 ----
    FEATURE_X86_64_V2,
    FEATURE_X86_64_V3,
    FEATURE_X86_64_V4,
+   FEATURE_AVXIFMA,
+   FEATURE_AVXVNNIINT8,
+   FEATURE_AVXNECONVERT,
+   FEATURE_CMPCCXADD,
+   FEATURE_AMX_FP16,
+   FEATURE_PREFETCHI,
+   FEATURE_RAOINT,
+   FEATURE_AMX_COMPLEX,
    CPU_FEATURE_MAX
  };
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/i386/i386-isas.h gcc-13.1.0/gcc/common/config/i386/i386-isas.h
*** gcc-12.2.0/gcc/common/config/i386/i386-isas.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/i386/i386-isas.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* i386 ISA table.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* i386 ISA table.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** ISA_NAMES_TABLE_START
*** 175,178 ****
--- 175,189 ----
    ISA_NAMES_TABLE_ENTRY("x86-64-v2", FEATURE_X86_64_V2, P_X86_64_V2, NULL)
    ISA_NAMES_TABLE_ENTRY("x86-64-v3", FEATURE_X86_64_V3, P_X86_64_V3, NULL)
    ISA_NAMES_TABLE_ENTRY("x86-64-v4", FEATURE_X86_64_V4, P_X86_64_V4, NULL)
+   ISA_NAMES_TABLE_ENTRY("avxifma", FEATURE_AVXIFMA, P_NONE, "-mavxifma")
+   ISA_NAMES_TABLE_ENTRY("avxvnniint8", FEATURE_AVXVNNIINT8,
+ 			P_NONE, "-mavxvnniint8")
+   ISA_NAMES_TABLE_ENTRY("avxneconvert", FEATURE_AVXNECONVERT,
+ 			P_NONE, "-mavxneconvert")
+   ISA_NAMES_TABLE_ENTRY("cmpccxadd", FEATURE_CMPCCXADD, P_NONE, "-mcmpccxadd")
+   ISA_NAMES_TABLE_ENTRY("amx-fp16", FEATURE_AMX_FP16, P_NONE, "-mamx-fp16")
+   ISA_NAMES_TABLE_ENTRY("prefetchi", FEATURE_PREFETCHI, P_NONE, "-mprefetchi")
+   ISA_NAMES_TABLE_ENTRY("raoint", FEATURE_RAOINT, P_NONE, "-mraoint")
+   ISA_NAMES_TABLE_ENTRY("amx-complex", FEATURE_AMX_COMPLEX,
+ 			P_NONE, "-mamx-complex")
  ISA_NAMES_TABLE_END
diff -Nrcpad gcc-12.2.0/gcc/common/config/ia64/ia64-common.cc gcc-13.1.0/gcc/common/config/ia64/ia64-common.cc
*** gcc-12.2.0/gcc/common/config/ia64/ia64-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/ia64/ia64-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for IA64.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for IA64.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/iq2000/iq2000-common.cc gcc-13.1.0/gcc/common/config/iq2000/iq2000-common.cc
*** gcc-12.2.0/gcc/common/config/iq2000/iq2000-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/iq2000/iq2000-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Vitesse IQ2000.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Vitesse IQ2000.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/lm32/lm32-common.cc gcc-13.1.0/gcc/common/config/lm32/lm32-common.cc
*** gcc-12.2.0/gcc/common/config/lm32/lm32-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/lm32/lm32-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Common hooks for Lattice Mico32.
  
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Common hooks for Lattice Mico32.
  
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/loongarch/loongarch-common.cc gcc-13.1.0/gcc/common/config/loongarch/loongarch-common.cc
*** gcc-12.2.0/gcc/common/config/loongarch/loongarch-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/loongarch/loongarch-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for LoongArch.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for LoongArch.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 34,39 ****
--- 34,40 ----
  static const struct default_options loongarch_option_optimization_table[] =
  {
    { OPT_LEVELS_ALL, OPT_fasynchronous_unwind_tables, NULL, 1 },
+   { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
    { OPT_LEVELS_NONE, 0, NULL, 0 }
  };
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/m32r/m32r-common.cc gcc-13.1.0/gcc/common/config/m32r/m32r-common.cc
*** gcc-12.2.0/gcc/common/config/m32r/m32r-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/m32r/m32r-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Renesas M32R.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas M32R.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/m68k/m68k-common.cc gcc-13.1.0/gcc/common/config/m68k/m68k-common.cc
*** gcc-12.2.0/gcc/common/config/m68k/m68k-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/m68k/m68k-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Motorola 68000 family.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Motorola 68000 family.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/mcore/mcore-common.cc gcc-13.1.0/gcc/common/config/mcore/mcore-common.cc
*** gcc-12.2.0/gcc/common/config/mcore/mcore-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/mcore/mcore-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Motorola MCore.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Motorola MCore.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/microblaze/microblaze-common.cc gcc-13.1.0/gcc/common/config/microblaze/microblaze-common.cc
*** gcc-12.2.0/gcc/common/config/microblaze/microblaze-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/microblaze/microblaze-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Xilinx MicroBlaze.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Xilinx MicroBlaze.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/mips/mips-common.cc gcc-13.1.0/gcc/common/config/mips/mips-common.cc
*** gcc-12.2.0/gcc/common/config/mips/mips-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/mips/mips-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for MIPS.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for MIPS.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/mmix/mmix-common.cc gcc-13.1.0/gcc/common/config/mmix/mmix-common.cc
*** gcc-12.2.0/gcc/common/config/mmix/mmix-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/mmix/mmix-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for MMIX.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for MMIX.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/mn10300/mn10300-common.cc gcc-13.1.0/gcc/common/config/mn10300/mn10300-common.cc
*** gcc-12.2.0/gcc/common/config/mn10300/mn10300-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/mn10300/mn10300-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Matsushita MN10300 series.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Matsushita MN10300 series.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/msp430/msp430-common.cc gcc-13.1.0/gcc/common/config/msp430/msp430-common.cc
*** gcc-12.2.0/gcc/common/config/msp430/msp430-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/msp430/msp430-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Texas Instruments MSP430.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Texas Instruments MSP430.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/nds32/nds32-common.cc gcc-13.1.0/gcc/common/config/nds32/nds32-common.cc
*** gcc-12.2.0/gcc/common/config/nds32/nds32-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/nds32/nds32-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Common hooks of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/common/config/nios2/nios2-common.cc gcc-13.1.0/gcc/common/config/nios2/nios2-common.cc
*** gcc-12.2.0/gcc/common/config/nios2/nios2-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/nios2/nios2-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Altera Nios II.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Altera Nios II.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/nvptx/nvptx-common.cc gcc-13.1.0/gcc/common/config/nvptx/nvptx-common.cc
*** gcc-12.2.0/gcc/common/config/nvptx/nvptx-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/nvptx/nvptx-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* NVPTX common hooks.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* NVPTX common hooks.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/common/config/or1k/or1k-common.cc gcc-13.1.0/gcc/common/config/or1k/or1k-common.cc
*** gcc-12.2.0/gcc/common/config/or1k/or1k-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/or1k/or1k-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for OpenRISC
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for OpenRISC
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/pa/pa-common.cc gcc-13.1.0/gcc/common/config/pa/pa-common.cc
*** gcc-12.2.0/gcc/common/config/pa/pa-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/pa/pa-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* HPPA common hooks.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* HPPA common hooks.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/pdp11/pdp11-common.cc gcc-13.1.0/gcc/common/config/pdp11/pdp11-common.cc
*** gcc-12.2.0/gcc/common/config/pdp11/pdp11-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/pdp11/pdp11-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for pdp11.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for pdp11.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/pru/pru-common.cc gcc-13.1.0/gcc/common/config/pru/pru-common.cc
*** gcc-12.2.0/gcc/common/config/pru/pru-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/pru/pru-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for TI PRU
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for TI PRU
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/riscv/riscv-common.cc gcc-13.1.0/gcc/common/config/riscv/riscv-common.cc
*** gcc-12.2.0/gcc/common/config/riscv/riscv-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/riscv/riscv-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for RISC-V.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for RISC-V.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 18,23 ****
--- 18,24 ----
  <http://www.gnu.org/licenses/>.  */
  
  #include <sstream>
+ #include <vector>
  
  #define INCLUDE_STRING
  #include "config.h"
*************** static const riscv_implied_info_t riscv_
*** 50,55 ****
--- 51,61 ----
    {"d", "f"},
    {"f", "zicsr"},
    {"d", "zicsr"},
+ 
+   {"zdinx", "zfinx"},
+   {"zfinx", "zicsr"},
+   {"zdinx", "zicsr"},
+ 
    {"zk", "zkn"},
    {"zk", "zkr"},
    {"zk", "zkt"},
*************** static const riscv_implied_info_t riscv_
*** 96,101 ****
--- 102,113 ----
    {"zvl32768b", "zvl16384b"},
    {"zvl65536b", "zvl32768b"},
  
+   {"zfh", "zfhmin"},
+   {"zfhmin", "f"},
+   
+   {"zhinx", "zhinxmin"},
+   {"zhinxmin", "zfinx"},
+ 
    {NULL, NULL}
  };
  
*************** static const struct riscv_ext_version ri
*** 141,146 ****
--- 153,160 ----
    {"c", ISA_SPEC_CLASS_20190608, 2, 0},
    {"c", ISA_SPEC_CLASS_2P2,      2, 0},
  
+   {"h",       ISA_SPEC_CLASS_NONE, 1, 0},
+ 
    {"v",       ISA_SPEC_CLASS_NONE, 1, 0},
  
    {"zicsr", ISA_SPEC_CLASS_20191213, 2, 0},
*************** static const struct riscv_ext_version ri
*** 149,159 ****
--- 163,180 ----
    {"zifencei", ISA_SPEC_CLASS_20191213, 2, 0},
    {"zifencei", ISA_SPEC_CLASS_20190608, 2, 0},
  
+   {"zawrs", ISA_SPEC_CLASS_NONE, 1, 0},
+ 
    {"zba", ISA_SPEC_CLASS_NONE, 1, 0},
    {"zbb", ISA_SPEC_CLASS_NONE, 1, 0},
    {"zbc", ISA_SPEC_CLASS_NONE, 1, 0},
    {"zbs", ISA_SPEC_CLASS_NONE, 1, 0},
  
+   {"zfinx", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"zdinx", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"zhinx", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"zhinxmin", ISA_SPEC_CLASS_NONE, 1, 0},
+ 
    {"zbkb",  ISA_SPEC_CLASS_NONE, 1, 0},
    {"zbkc",  ISA_SPEC_CLASS_NONE, 1, 0},
    {"zbkx",  ISA_SPEC_CLASS_NONE, 1, 0},
*************** static const struct riscv_ext_version ri
*** 165,170 ****
--- 186,195 ----
    {"zksh",  ISA_SPEC_CLASS_NONE, 1, 0},
    {"zkt",   ISA_SPEC_CLASS_NONE, 1, 0},
  
+   {"zicboz",ISA_SPEC_CLASS_NONE, 1, 0},
+   {"zicbom",ISA_SPEC_CLASS_NONE, 1, 0},
+   {"zicbop",ISA_SPEC_CLASS_NONE, 1, 0},
+ 
    {"zk",    ISA_SPEC_CLASS_NONE, 1, 0},
    {"zkn",   ISA_SPEC_CLASS_NONE, 1, 0},
    {"zks",   ISA_SPEC_CLASS_NONE, 1, 0},
*************** static const struct riscv_ext_version ri
*** 189,194 ****
--- 214,240 ----
    {"zvl32768b", ISA_SPEC_CLASS_NONE, 1, 0},
    {"zvl65536b", ISA_SPEC_CLASS_NONE, 1, 0},
  
+   {"zfh",       ISA_SPEC_CLASS_NONE, 1, 0},
+   {"zfhmin",    ISA_SPEC_CLASS_NONE, 1, 0},
+ 
+   {"zmmul", ISA_SPEC_CLASS_NONE, 1, 0},
+ 
+   {"svinval", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"svnapot", ISA_SPEC_CLASS_NONE, 1, 0},
+ 
+   {"xtheadba", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadbb", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadbs", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadcmo", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadcondmov", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadfmemidx", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadfmv", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadint", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadmac", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadmemidx", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadmempair", ISA_SPEC_CLASS_NONE, 1, 0},
+   {"xtheadsync", ISA_SPEC_CLASS_NONE, 1, 0},
+ 
    /* Terminate the list.  */
    {NULL, ISA_SPEC_CLASS_NONE, 0, 0}
  };
*************** static const riscv_cpu_info riscv_cpu_ta
*** 211,216 ****
--- 257,270 ----
      {NULL, NULL, NULL}
  };
  
+ static const char *riscv_tunes[] =
+ {
+ #define RISCV_TUNE(TUNE_NAME, PIPELINE_MODEL, TUNE_INFO) \
+     TUNE_NAME,
+ #include "../../../config/riscv/riscv-cores.def"
+     NULL
+ };
+ 
  static const char *riscv_supported_std_ext (void);
  
  static riscv_subset_list *current_subset_list = NULL;
*************** const riscv_subset_list *riscv_current_s
*** 220,225 ****
--- 274,299 ----
    return current_subset_list;
  }
  
+ /* struct for recording multi-lib info.  */
+ struct riscv_multi_lib_info_t {
+   std::string path;
+   std::string arch_str;
+   std::string abi_str;
+   std::vector<std::string> conds;
+   riscv_subset_list *subset_list;
+ 
+   static bool parse (struct riscv_multi_lib_info_t *,
+ 		     const std::string &,
+ 		     const std::vector<std::string> &);
+ };
+ 
+ /* Flag for checking if there is no suitable multi-lib found.  */
+ static bool riscv_no_matched_multi_lib;
+ 
+ /* Used for record value of -march and -mabi.  */
+ static std::string riscv_current_arch_str;
+ static std::string riscv_current_abi_str;
+ 
  riscv_subset_t::riscv_subset_t ()
    : name (), major_version (0), minor_version (0), next (NULL),
      explicit_version_p (false), implied_p (false)
*************** riscv_subset_list::~riscv_subset_list ()
*** 245,250 ****
--- 319,360 ----
      }
  }
  
+ /* Compute the match score of two arch string, return 0 if incompatible.  */
+ int
+ riscv_subset_list::match_score (riscv_subset_list *list) const
+ {
+   riscv_subset_t *s;
+   int score = 0;
+   bool has_a_ext, list_has_a_ext;
+ 
+   /* Impossible to match if XLEN is different.  */
+   if (list->m_xlen != this->m_xlen)
+     return 0;
+ 
+   /* There is different code gen in libstdc++ and libatomic between w/ A-ext
+      and w/o A-ext, and it not work if using soft and hard atomic mechanism
+      at same time, so they are incompatible.  */
+   has_a_ext = this->lookup ("a") != NULL;
+   list_has_a_ext = list->lookup ("a") != NULL;
+ 
+   if (has_a_ext != list_has_a_ext)
+     return 0;
+ 
+ 
+   /* list must be subset of current this list, otherwise it not safe to
+      link.
+      TODO: We might give different weight for each extension, but the rule could
+ 	   be complicated.
+      TODO: We might consider the version of each extension.  */
+   for (s = list->m_head; s != NULL; s = s->next)
+     if (this->lookup (s->name.c_str ()) != NULL)
+       score++;
+     else
+       return 0;
+ 
+   return score;
+ }
+ 
  /* Get the rank for single-letter subsets, lower value meaning higher
     priority.  */
  
*************** multi_letter_subset_rank (const std::str
*** 284,304 ****
    gcc_assert (subset.length () >= 2);
    int high_order = -1;
    int low_order = 0;
!   /* The order between multi-char extensions: s -> h -> z -> x.  */
    char multiletter_class = subset[0];
    switch (multiletter_class)
      {
      case 's':
        high_order = 0;
        break;
-     case 'h':
-       high_order = 1;
-       break;
      case 'z':
!       high_order = 2;
        break;
      case 'x':
!       high_order = 3;
        break;
      default:
        gcc_unreachable ();
--- 394,411 ----
    gcc_assert (subset.length () >= 2);
    int high_order = -1;
    int low_order = 0;
!   /* The order between multi-char extensions: s -> z -> x.  */
    char multiletter_class = subset[0];
    switch (multiletter_class)
      {
      case 's':
        high_order = 0;
        break;
      case 'z':
!       high_order = 1;
        break;
      case 'x':
!       high_order = 2;
        break;
      default:
        gcc_unreachable ();
*************** riscv_subset_list::lookup (const char *s
*** 594,600 ****
  static const char *
  riscv_supported_std_ext (void)
  {
!   return "mafdqlcbjktpvn";
  }
  
  /* Parsing subset version.
--- 701,707 ----
  static const char *
  riscv_supported_std_ext (void)
  {
!   return "mafdqlcbkjtpvnh";
  }
  
  /* Parsing subset version.
*************** riscv_subset_list::parse_std_ext (const
*** 753,759 ****
      {
        char subset[2] = {0, 0};
  
!       if (*p == 'x' || *p == 's' || *p == 'h' || *p == 'z')
  	break;
  
        if (*p == '_')
--- 860,866 ----
      {
        char subset[2] = {0, 0};
  
!       if (*p == 'x' || *p == 's' || *p == 'z')
  	break;
  
        if (*p == '_')
*************** riscv_subset_list::handle_combine_ext ()
*** 878,884 ****
  
     Arguments:
       `p`: Current parsing position.
!      `ext_type`: What kind of extensions, 's', 'h', 'z' or 'x'.
       `ext_type_str`: Full name for kind of extension.  */
  
  const char *
--- 985,991 ----
  
     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 (const char *ar
*** 1020,1031 ****
    if (p == NULL)
      goto fail;
  
-   /* Parsing hypervisor extension.  */
-   p = subset_list->parse_multiletter_ext (p, "h", "hypervisor extension");
- 
-   if (p == NULL)
-     goto fail;
- 
    /* Parsing sub-extensions.  */
    p = subset_list->parse_multiletter_ext (p, "z", "sub-extension");
  
--- 1127,1132 ----
*************** riscv_subset_list::parse (const char *ar
*** 1052,1057 ****
--- 1153,1162 ----
  
    subset_list->handle_combine_ext ();
  
+   if (subset_list->lookup ("zfinx") && subset_list->lookup ("f"))
+     error_at (loc, "%<-march=%s%>: z*inx conflicts with floating-point "
+ 		   "extensions", arch);
+ 
    return subset_list;
  
  fail:
*************** static const riscv_ext_flag_table_t risc
*** 1089,1104 ****
--- 1194,1217 ----
    {"f", &gcc_options::x_target_flags, MASK_HARD_FLOAT},
    {"d", &gcc_options::x_target_flags, MASK_DOUBLE_FLOAT},
    {"c", &gcc_options::x_target_flags, MASK_RVC},
+   {"v", &gcc_options::x_target_flags, MASK_FULL_V},
    {"v", &gcc_options::x_target_flags, MASK_VECTOR},
  
    {"zicsr",    &gcc_options::x_riscv_zi_subext, MASK_ZICSR},
    {"zifencei", &gcc_options::x_riscv_zi_subext, MASK_ZIFENCEI},
  
+   {"zawrs", &gcc_options::x_riscv_za_subext, MASK_ZAWRS},
+ 
    {"zba",    &gcc_options::x_riscv_zb_subext, MASK_ZBA},
    {"zbb",    &gcc_options::x_riscv_zb_subext, MASK_ZBB},
    {"zbc",    &gcc_options::x_riscv_zb_subext, MASK_ZBC},
    {"zbs",    &gcc_options::x_riscv_zb_subext, MASK_ZBS},
  
+   {"zfinx",    &gcc_options::x_riscv_zinx_subext, MASK_ZFINX},
+   {"zdinx",    &gcc_options::x_riscv_zinx_subext, MASK_ZDINX},
+   {"zhinx",    &gcc_options::x_riscv_zinx_subext, MASK_ZHINX},
+   {"zhinxmin", &gcc_options::x_riscv_zinx_subext, MASK_ZHINXMIN},
+ 
    {"zbkb",   &gcc_options::x_riscv_zk_subext, MASK_ZBKB},
    {"zbkc",   &gcc_options::x_riscv_zk_subext, MASK_ZBKC},
    {"zbkx",   &gcc_options::x_riscv_zk_subext, MASK_ZBKX},
*************** static const riscv_ext_flag_table_t risc
*** 1110,1115 ****
--- 1223,1232 ----
    {"zksh",   &gcc_options::x_riscv_zk_subext, MASK_ZKSH},
    {"zkt",    &gcc_options::x_riscv_zk_subext, MASK_ZKT},
  
+   {"zicboz", &gcc_options::x_riscv_zicmo_subext, MASK_ZICBOZ},
+   {"zicbom", &gcc_options::x_riscv_zicmo_subext, MASK_ZICBOM},
+   {"zicbop", &gcc_options::x_riscv_zicmo_subext, MASK_ZICBOP},
+ 
    {"zve32x",   &gcc_options::x_target_flags, MASK_VECTOR},
    {"zve32f",   &gcc_options::x_target_flags, MASK_VECTOR},
    {"zve64x",   &gcc_options::x_target_flags, MASK_VECTOR},
*************** static const riscv_ext_flag_table_t risc
*** 1140,1145 ****
--- 1257,1282 ----
    {"zvl32768b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL32768B},
    {"zvl65536b", &gcc_options::x_riscv_zvl_flags, MASK_ZVL65536B},
  
+   {"zfhmin",    &gcc_options::x_riscv_zf_subext, MASK_ZFHMIN},
+   {"zfh",       &gcc_options::x_riscv_zf_subext, MASK_ZFH},
+ 
+   {"zmmul", &gcc_options::x_riscv_zm_subext, MASK_ZMMUL},
+ 
+   {"svinval", &gcc_options::x_riscv_sv_subext, MASK_SVINVAL},
+   {"svnapot", &gcc_options::x_riscv_sv_subext, MASK_SVNAPOT},
+ 
+   {"xtheadba",      &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBA},
+   {"xtheadbb",      &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBB},
+   {"xtheadbs",      &gcc_options::x_riscv_xthead_subext, MASK_XTHEADBS},
+   {"xtheadcmo",     &gcc_options::x_riscv_xthead_subext, MASK_XTHEADCMO},
+   {"xtheadcondmov", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADCONDMOV},
+   {"xtheadfmemidx", &gcc_options::x_riscv_xthead_subext, MASK_XTHEADFMEMIDX},
+   {"xtheadfmv",     &gcc_options::x_riscv_xthead_subext, MASK_XTHEADFMV},
+   {"xtheadint",     &gcc_options::x_riscv_xthead_subext, MASK_XTHEADINT},
+   {"xtheadmac",     &gcc_options::x_riscv_xthead_subext, MASK_XTHEADMAC},
+   {"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},
  
    {NULL, NULL, 0}
  };
*************** static const riscv_ext_flag_table_t risc
*** 1147,1153 ****
  /* Parse a RISC-V ISA string into an option mask.  Must clear or set all arch
     dependent mask bits, in case more than one -march string is passed.  */
  
! static void
  riscv_parse_arch_string (const char *isa,
  			 struct gcc_options *opts,
  			 location_t loc)
--- 1284,1290 ----
  /* Parse a RISC-V ISA string into an option mask.  Must clear or set all arch
     dependent mask bits, in case more than one -march string is passed.  */
  
! void
  riscv_parse_arch_string (const char *isa,
  			 struct gcc_options *opts,
  			 location_t loc)
*************** riscv_expand_arch_from_cpu (int argc ATT
*** 1289,1300 ****
--- 1426,1799 ----
    return xasprintf ("-march=%s", arch.c_str());
  }
  
+ /* Report error if not found suitable multilib.  */
+ const char *
+ riscv_multi_lib_check (int argc ATTRIBUTE_UNUSED,
+ 		       const char **argv ATTRIBUTE_UNUSED)
+ {
+   if (riscv_no_matched_multi_lib)
+     fatal_error (
+       input_location,
+       "Cannot find suitable multilib set for %<-march=%s%>/%<-mabi=%s%>",
+       riscv_current_arch_str.c_str (),
+       riscv_current_abi_str.c_str ());
+ 
+   return "";
+ }
+ 
+ /* We only override this in bare-metal toolchain.  */
+ #ifdef RISCV_USE_CUSTOMISED_MULTI_LIB
+ 
+ /* Find last switch with the prefix, options are take last one in general,
+    return NULL if not found, and return the option value if found, it could
+    return empty string if the option has no value.  */
+ 
+ static const char *
+ find_last_appear_switch (
+   const struct switchstr *switches,
+   int n_switches,
+   const char *prefix)
+ {
+   int i;
+   size_t len = strlen (prefix);
+ 
+   for (i = 0; i < n_switches; ++i)
+     {
+       const struct switchstr *this_switch = &switches[n_switches - i - 1];
+ 
+       if (this_switch->live_cond & SWITCH_FALSE)
+ 	continue;
+ 
+       if (strncmp (this_switch->part1, prefix, len) == 0)
+ 	return this_switch->part1 + len;
+     }
+ 
+   return NULL;
+ }
+ 
+ /* Utils functions to check STR is start with PREFIX or not.  */
+ 
+ static bool
+ prefixed_with (const std::string &str, const char *prefix)
+ {
+   return strncmp (prefix, str.c_str (), strlen (prefix)) == 0;
+ }
+ 
+ /* Parse the path and cond string into riscv_multi_lib_info_t, return false
+    if parsing failed. */
+ 
+ bool
+ riscv_multi_lib_info_t::parse (
+   struct riscv_multi_lib_info_t *multi_lib_info,
+   const std::string &path,
+   const std::vector<std::string> &conds)
+ {
+   const char *default_arch_str = STRINGIZING (TARGET_RISCV_DEFAULT_ARCH);
+   const char *default_abi_str = STRINGIZING (TARGET_RISCV_DEFAULT_ABI);
+   multi_lib_info->conds = conds;
+   if (path == ".")
+     {
+       multi_lib_info->arch_str = default_arch_str;
+       multi_lib_info->abi_str = default_abi_str;
+     }
+   else
+     {
+       std::vector<std::string>::const_iterator itr;
+       for (itr = conds.begin (); itr != conds.end (); ++itr)
+ 	if (prefixed_with (*itr, "march="))
+ 	  multi_lib_info->arch_str = itr->c_str () + strlen ("march=");
+ 	else if (prefixed_with (*itr, "mabi="))
+ 	  multi_lib_info->abi_str = itr->c_str () + strlen ("mabi=");
+ 
+ 	/* Skip this multi-lib if this configuration is exactly same as
+ 	   default multi-lib settings.  */
+       if (multi_lib_info->arch_str == default_arch_str
+ 	  && multi_lib_info->abi_str == default_abi_str)
+ 	return false;
+     }
+ 
+   multi_lib_info->subset_list =
+     riscv_subset_list::parse (multi_lib_info->arch_str.c_str (), input_location);
+ 
+   return true;
+ }
+ 
+ /* Checking ARG is not appeared in SWITCHES if NOT_ARG is set or
+    ARG is appeared if NOT_ARG is not set.  */
+ 
+ static bool
+ riscv_check_cond (
+   const struct switchstr *switches,
+   int n_switches,
+   const std::string &arg,
+   bool not_arg)
+ {
+   int i;
+   for (i = 0; i < n_switches; ++i)
+     {
+       const struct switchstr *this_switch = &switches[n_switches - i - 1];
+ 
+       if ((this_switch->live_cond & SWITCH_IGNORE) != 0)
+ 	continue;
+ 
+       if (this_switch->live_cond & SWITCH_FALSE)
+ 	continue;
+ 
+       /* ARG should not appear if NOT_ARG is set.  */
+       if (arg == this_switch->part1)
+ 	return not_arg ? false : true;
+     }
+ 
+   /* Not found ARG? that's ok if NOT_ARG is not set.  */
+   return not_arg ? true : false;
+ }
+ 
+ /* Check the other cond is found or not, return -1 if we should reject this
+    multi-lib option set, otherwise return updated MATCH_SCORE.   */
+ 
+ static int
+ riscv_check_conds (
+   const struct switchstr *switches,
+   int n_switches,
+   int match_score,
+   const std::vector<std::string> &conds)
+ {
+   bool not_arg;
+   bool ok;
+   int ok_count = 0;
+   std::vector<std::string>::const_iterator itr;
+   const char *checking_arg;
+ 
+   if (match_score == 0)
+     return 0;
+ 
+   for (itr = conds.begin (); itr != conds.end (); ++itr)
+     {
+       /* We'll check march= and mabi= in other place.  */
+       if (prefixed_with (*itr, "march=") || prefixed_with (*itr, "mabi="))
+ 	continue;
+ 
+       checking_arg = itr->c_str ();
+       if (checking_arg[0] == '!')
+ 	{
+ 	  not_arg = true;
+ 	  /* Skip '!'. */
+ 	  checking_arg = checking_arg + 1;
+ 	}
+       else
+ 	not_arg = false;
+ 
+       ok = riscv_check_cond (switches, n_switches, checking_arg, not_arg);
+ 
+       if (!ok)
+ 	return -1;
+ 
+       ok_count++;
+     }
+ 
+   /* 100 is magic number, it's just used for make sure this multi-lib has
+      higher priority if we found any some option is listed in the option check
+      list. */
+   return match_score + ok_count * 100;
+ }
+ 
+ /* Implement TARGET_COMPUTE_MULTILIB.  */
+ static const char *
+ riscv_compute_multilib (
+   const struct switchstr *switches,
+   int n_switches,
+   const char *multilib_dir,
+   const char *multilib_defaults ATTRIBUTE_UNUSED,
+   const char *multilib_select,
+   const char *multilib_matches ATTRIBUTE_UNUSED,
+   const char *multilib_exclusions ATTRIBUTE_UNUSED,
+   const char *multilib_reuse ATTRIBUTE_UNUSED)
+ {
+   const char *p;
+   const char *this_path;
+   size_t this_path_len;
+   bool result;
+   riscv_no_matched_multi_lib = false;
+   riscv_subset_list *subset_list = NULL;
+ 
+   std::vector<riscv_multi_lib_info_t> multilib_infos;
+   std::vector<std::string> option_conds;
+   std::string option_cond;
+   riscv_multi_lib_info_t multilib_info;
+ 
+   /* Already found suitable, multi-lib, just use that.  */
+   if (multilib_dir != NULL)
+     return multilib_dir;
+ 
+   /* Find march.  */
+   riscv_current_arch_str =
+     find_last_appear_switch (switches, n_switches, "march=");
+   /* Find mabi.  */
+   riscv_current_abi_str =
+     find_last_appear_switch (switches, n_switches, "mabi=");
+ 
+   /* Failed to find -march or -mabi, but it should not happened since we have
+      set both in OPTION_DEFAULT_SPECS.  */
+   if (riscv_current_arch_str.empty () || riscv_current_abi_str.empty ())
+     return multilib_dir;
+ 
+   subset_list = riscv_subset_list::parse (riscv_current_arch_str.c_str (),
+ 					  input_location);
+ 
+   /* Failed to parse -march, fallback to using what gcc use.  */
+   if (subset_list == NULL)
+     return multilib_dir;
+ 
+   /* Parsing MULTILIB_SELECT, ignore MULTILIB_REUSE here, we have our own rules.
+      TODO: most codes are grab from gcc.c, maybe we should refine that?  */
+   p = multilib_select;
+ 
+   while (*p != '\0')
+     {
+       /* Ignore newlines.  */
+       if (*p == '\n')
+ 	{
+ 	  ++p;
+ 	  continue;
+ 	}
+ 
+       /* Format of each multilib:
+ 	 <path> <opt1> <opt2> ... <optN>;  */
+       /* Get the path.  */
+       this_path = p;
+       while (*p != ' ')
+ 	{
+ 	  if (*p == '\0')
+ 	    {
+ 	      fatal_error (input_location, "multilib select %qs %qs is invalid",
+ 			   multilib_select, multilib_reuse);
+ 	    }
+ 	  ++p;
+ 	}
+ 
+       this_path_len = p - this_path;
+       multilib_info.path = std::string (this_path, this_path_len);
+ 
+       option_conds.clear ();
+       /* Pasrse option check list into vector<string>.
+ 	 e.g. "march=rv64imafd mabi=lp64 !mcmodel=medany" to
+ 	      ["march=rv64imafd", "mabi=lp64", "!mcmodel=medany"].  */
+       while (*p != ';')
+ 	{
+ 	  option_cond = "";
+ 	  /* Skip space.  */
+ 	  while (*p == ' ') p++;
+ 
+ 	  while (*p && *p != ' ' && *p != ';')
+ 	      option_cond.push_back (*p++);
+ 
+ 	  /* Ignore `!march=` and `!mabi=`, we will handle march and mabi
+ 	     later. */
+ 	  if (option_cond.size ()
+ 	      && !prefixed_with (option_cond, "!march=")
+ 	      && !prefixed_with (option_cond, "!mabi="))
+ 	    option_conds.push_back (option_cond);
+ 	}
+ 
+       result =
+ 	riscv_multi_lib_info_t::parse (
+ 	  &multilib_info,
+ 	  std::string (this_path, this_path_len),
+ 	  option_conds);
+ 
+       if (result)
+ 	multilib_infos.push_back (multilib_info);
+ 
+       p++;
+     }
+ 
+   int match_score = 0;
+   int max_match_score = 0;
+   int best_match_multi_lib = -1;
+   /* Try to decision which set we should used.  */
+   /* We have 3 level decision tree here, ABI, check input arch/ABI must
+      be superset of multi-lib arch, and other rest option checking.  */
+   for (size_t i = 0; i < multilib_infos.size (); ++i)
+     {
+       /* Check ABI is same first.  */
+       if (riscv_current_abi_str != multilib_infos[i].abi_str)
+ 	continue;
+ 
+       /* Found a potential compatible multi-lib setting!
+ 	 Calculate the match score.  */
+       match_score = subset_list->match_score (multilib_infos[i].subset_list);
+ 
+       /* Checking other cond in the multi-lib setting.  */
+       match_score = riscv_check_conds (switches,
+ 				       n_switches,
+ 				       match_score,
+ 				       multilib_infos[i].conds);
+ 
+       /* Record highest match score multi-lib setting.  */
+       if (match_score > max_match_score)
+ 	{
+ 	  best_match_multi_lib = i;
+ 	  max_match_score = match_score;
+ 	}
+     }
+ 
+   if (best_match_multi_lib == -1)
+     {
+       riscv_no_matched_multi_lib = true;
+       return multilib_dir;
+     }
+   else
+     return xstrdup (multilib_infos[best_match_multi_lib].path.c_str ());
+ }
+ 
+ #undef TARGET_COMPUTE_MULTILIB
+ #define TARGET_COMPUTE_MULTILIB riscv_compute_multilib
+ #endif
+ 
+ vec<const char *>
+ riscv_get_valid_option_values (int option_code,
+ 			       const char *prefix ATTRIBUTE_UNUSED)
+ {
+   vec<const char *> v;
+   v.create (0);
+   opt_code opt = (opt_code) option_code;
+ 
+   switch (opt)
+     {
+     case OPT_mtune_:
+       {
+ 	const char **tune = &riscv_tunes[0];
+ 	for (;*tune; ++tune)
+ 	  v.safe_push (*tune);
+ 
+ 	const riscv_cpu_info *cpu_info = &riscv_cpu_tables[0];
+ 	for (;cpu_info->name; ++cpu_info)
+ 	  v.safe_push (cpu_info->name);
+       }
+       break;
+     case OPT_mcpu_:
+       {
+ 	const riscv_cpu_info *cpu_info = &riscv_cpu_tables[0];
+ 	for (;cpu_info->name; ++cpu_info)
+ 	  v.safe_push (cpu_info->name);
+       }
+       break;
+     default:
+       break;
+     }
+ 
+   return v;
+ }
  
  /* Implement TARGET_OPTION_OPTIMIZATION_TABLE.  */
  static const struct default_options riscv_option_optimization_table[] =
    {
      { OPT_LEVELS_1_PLUS, OPT_fsection_anchors, NULL, 1 },
      { OPT_LEVELS_2_PLUS, OPT_free, NULL, 1 },
+ #if TARGET_DEFAULT_ASYNC_UNWIND_TABLES == 1
+     { OPT_LEVELS_ALL, OPT_fasynchronous_unwind_tables, NULL, 1 },
+     { OPT_LEVELS_ALL, OPT_funwind_tables, NULL, 1},
+ #endif
      { OPT_LEVELS_NONE, 0, NULL, 0 }
    };
  
*************** static const struct default_options risc
*** 1304,1307 ****
--- 1803,1809 ----
  #undef TARGET_HANDLE_OPTION
  #define TARGET_HANDLE_OPTION riscv_handle_option
  
+ #undef  TARGET_GET_VALID_OPTION_VALUES
+ #define TARGET_GET_VALID_OPTION_VALUES riscv_get_valid_option_values
+ 
  struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/common/config/rs6000/rs6000-common.cc gcc-13.1.0/gcc/common/config/rs6000/rs6000-common.cc
*** gcc-12.2.0/gcc/common/config/rs6000/rs6000-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/rs6000/rs6000-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for IBM RS/6000.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for IBM RS/6000.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** rs6000_handle_option (struct gcc_options
*** 119,137 ****
  #else
      case OPT_m64:
  #endif
-       opts->x_rs6000_isa_flags |= OPTION_MASK_POWERPC64;
        opts->x_rs6000_isa_flags |= (~opts_set->x_rs6000_isa_flags
  				   & OPTION_MASK_PPC_GFXOPT);
-       opts_set->x_rs6000_isa_flags |= OPTION_MASK_POWERPC64;
-       break;
- 
- #ifdef TARGET_USES_AIX64_OPT
-     case OPT_maix32:
- #else
-     case OPT_m32:
- #endif
-       opts->x_rs6000_isa_flags &= ~OPTION_MASK_POWERPC64;
-       opts_set->x_rs6000_isa_flags |= OPTION_MASK_POWERPC64;
        break;
  
      case OPT_mminimal_toc:
--- 119,126 ----
diff -Nrcpad gcc-12.2.0/gcc/common/config/rx/rx-common.cc gcc-13.1.0/gcc/common/config/rx/rx-common.cc
*** gcc-12.2.0/gcc/common/config/rx/rx-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/rx/rx-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Renesas RX.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas RX.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/s390/s390-common.cc gcc-13.1.0/gcc/common/config/s390/s390-common.cc
*** gcc-12.2.0/gcc/common/config/s390/s390-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/s390/s390-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for IBM S/390 and zSeries.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for IBM S/390 and zSeries.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static const struct default_options s390
*** 64,69 ****
--- 64,74 ----
      /* Enable -fsched-pressure by default when optimizing.  */
      { OPT_LEVELS_1_PLUS, OPT_fsched_pressure, NULL, 1 },
  
+     /* Enable -munroll-only-small-loops with -funroll-loops to unroll small
+        loops at -O2 and above by default.  */
+     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_funroll_loops, NULL, 1 },
+     { OPT_LEVELS_2_PLUS_SPEED_ONLY, OPT_munroll_only_small_loops, NULL, 1 },
+ 
      /* ??? There are apparently still problems with -fcaller-saves.  */
      { OPT_LEVELS_ALL, OPT_fcaller_saves, NULL, 0 },
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/sh/sh-common.cc gcc-13.1.0/gcc/common/config/sh/sh-common.cc
*** gcc-12.2.0/gcc/common/config/sh/sh-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/sh/sh-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Renesas / SuperH SH.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Renesas / SuperH SH.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/sparc/sparc-common.cc gcc-13.1.0/gcc/common/config/sparc/sparc-common.cc
*** gcc-12.2.0/gcc/common/config/sparc/sparc-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/sparc/sparc-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for SPARC.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for SPARC.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/tilegx/tilegx-common.cc gcc-13.1.0/gcc/common/config/tilegx/tilegx-common.cc
*** gcc-12.2.0/gcc/common/config/tilegx/tilegx-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/tilegx/tilegx-common.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,58 ****
- /* Common hooks for TILE-Gx.
-    Copyright (C) 2011-2022 Free Software Foundation, Inc.
-    Contributed by Walter Lee (walt@tilera.com)
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
- 
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "diagnostic-core.h"
- #include "tm.h"
- #include "common/common-target.h"
- #include "common/common-target-def.h"
- #include "opts.h"
- #include "flags.h"
- 
- static const struct default_options tilegx_option_optimization_table[] = {
-   /* Scheduling and bundling are super important for our architecture, so
-      enable them at -O1. */
-   {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1},
-   {OPT_LEVELS_1_PLUS, OPT_fschedule_insns2, NULL, 1},
-   {OPT_LEVELS_NONE, 0, NULL, 0}
- };
- 
- 
- static void
- tilegx_option_init_struct (struct gcc_options *opts)
- {
-   opts->x_flag_asynchronous_unwind_tables = 1;
- }
- 
- 
- #undef  TARGET_DEFAULT_TARGET_FLAGS
- #define TARGET_DEFAULT_TARGET_FLAGS \
-   (TARGET_DEFAULT		    \
-    | TARGET_ENDIAN_DEFAULT)
- 
- #undef  TARGET_OPTION_OPTIMIZATION_TABLE
- #define TARGET_OPTION_OPTIMIZATION_TABLE tilegx_option_optimization_table
- 
- #undef  TARGET_OPTION_INIT_STRUCT
- #define TARGET_OPTION_INIT_STRUCT tilegx_option_init_struct
- 
- struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/common/config/tilepro/tilepro-common.cc gcc-13.1.0/gcc/common/config/tilepro/tilepro-common.cc
*** gcc-12.2.0/gcc/common/config/tilepro/tilepro-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/tilepro/tilepro-common.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,54 ****
- /* Common hooks for TILEPro.
-    Copyright (C) 2011-2022 Free Software Foundation, Inc.
-    Contributed by Walter Lee (walt@tilera.com)
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
- 
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "diagnostic-core.h"
- #include "tm.h"
- #include "common/common-target.h"
- #include "common/common-target-def.h"
- #include "opts.h"
- #include "flags.h"
- 
- static const struct default_options tilepro_option_optimization_table[] = {
-   /* Scheduling and bundling are super important for our architecture, so
-      enable them at -O1. */
-   {OPT_LEVELS_1_PLUS, OPT_fschedule_insns, NULL, 1},
-   {OPT_LEVELS_1_PLUS, OPT_fschedule_insns2, NULL, 1},
-   {OPT_LEVELS_NONE, 0, NULL, 0}
- };
- 
- 
- static void
- tilepro_option_init_struct (struct gcc_options *opts)
- {
-   opts->x_flag_asynchronous_unwind_tables = 1;
- }
- 
- 
- 
- #undef  TARGET_OPTION_OPTIMIZATION_TABLE
- #define TARGET_OPTION_OPTIMIZATION_TABLE tilepro_option_optimization_table
- 
- #undef  TARGET_OPTION_INIT_STRUCT
- #define TARGET_OPTION_INIT_STRUCT tilepro_option_init_struct
- 
- struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/common/config/v850/v850-common.cc gcc-13.1.0/gcc/common/config/v850/v850-common.cc
*** gcc-12.2.0/gcc/common/config/v850/v850-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/v850/v850-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for NEC V850 series.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for NEC V850 series.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/vax/vax-common.cc gcc-13.1.0/gcc/common/config/vax/vax-common.cc
*** gcc-12.2.0/gcc/common/config/vax/vax-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/vax/vax-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for VAX.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for VAX.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/visium/visium-common.cc gcc-13.1.0/gcc/common/config/visium/visium-common.cc
*** gcc-12.2.0/gcc/common/config/visium/visium-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/visium/visium-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Visium.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by C.Nettleton,J.P.Parkes and P.Garbett.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common hooks for Visium.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by C.Nettleton,J.P.Parkes and P.Garbett.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/common/config/xstormy16/xstormy16-common.cc gcc-13.1.0/gcc/common/config/xstormy16/xstormy16-common.cc
*** gcc-12.2.0/gcc/common/config/xstormy16/xstormy16-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/xstormy16/xstormy16-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Xstormy16.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Xstormy16.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/common/config/xtensa/xtensa-common.cc gcc-13.1.0/gcc/common/config/xtensa/xtensa-common.cc
*** gcc-12.2.0/gcc/common/config/xtensa/xtensa-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common/config/xtensa/xtensa-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common hooks for Tensilica's Xtensa architecture.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Common hooks for Tensilica's Xtensa architecture.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** static const struct default_options xten
*** 34,39 ****
--- 34,41 ----
         assembler, so GCC cannot do a good job of reordering blocks.
         Do not enable reordering unless it is explicitly requested.  */
      { OPT_LEVELS_ALL, OPT_freorder_blocks, NULL, 0 },
+     /* Split multi-word types early (pre-GCC10 behavior).  */
+     { OPT_LEVELS_ALL, OPT_fsplit_wide_types_early, NULL, 1 },
      { OPT_LEVELS_NONE, 0, NULL, 0 }
    };
  
diff -Nrcpad gcc-12.2.0/gcc/common.md gcc-13.1.0/gcc/common.md
*** gcc-12.2.0/gcc/common.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Common GCC machine description file, shared by all targets.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Common GCC machine description file, shared by all targets.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/common.opt gcc-13.1.0/gcc/common.opt
*** gcc-12.2.0/gcc/common.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/common.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the language- and target-independent parts of the compiler.
  
! ; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the language- and target-independent parts of the compiler.
  
! ; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** uint32_t write_symbols = NO_DEBUG
*** 122,133 ****
  Variable
  enum debug_info_levels debug_info_level = DINFO_LEVEL_NONE
  
- ; Nonzero means use GNU-only extensions in the generated symbolic
- ; debugging information.  Currently, this only has an effect when
- ; write_symbols is set to DBX_DEBUG or XCOFF_DEBUG.
- Variable
- bool use_gnu_debug_info_extensions
- 
  ; Level of CTF debugging information we are producing.  See flag-types.h
  ; for the definitions of the different possible levels.
  Variable
--- 122,127 ----
*************** unsigned int flag_sanitize
*** 223,228 ****
--- 217,226 ----
  Variable
  unsigned int flag_sanitize_recover = (SANITIZE_UNDEFINED | SANITIZE_UNDEFINED_NONDEFAULT | SANITIZE_KERNEL_ADDRESS | SANITIZE_KERNEL_HWADDRESS) & ~(SANITIZE_UNREACHABLE | SANITIZE_RETURN)
  
+ ; What sanitizers should use __builtin_trap () instead of runtime diagnostics
+ Variable
+ unsigned int flag_sanitize_trap
+ 
  ; Flag whether a prefix has been added to dump_base_name
  Variable
  bool dump_base_name_prefixed = false
*************** Common Var(warn_aggressive_loop_optimiza
*** 541,548 ****
  Warn if a loop with constant number of iterations triggers undefined behavior.
  
  Warray-bounds
! Common Var(warn_array_bounds) Warning
! Warn if an array is accessed out of bounds.
  
  Warray-bounds=
  Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
--- 539,545 ----
  Warn if a loop with constant number of iterations triggers undefined behavior.
  
  Warray-bounds
! Common Alias(Warray-bounds=, 1, 0) Warning
  
  Warray-bounds=
  Common Joined RejectNegative UInteger Var(warn_array_bounds) Warning IntegerRange(0, 2)
*************** Wcast-align=strict
*** 585,590 ****
--- 582,591 ----
  Common Var(warn_cast_align,2) Warning
  Warn about pointer casts which increase alignment.
  
+ Wcomplain-wrong-lang
+ Common Var(warn_complain_wrong_lang) Init(1) Warning
+ Complain when a command-line option is valid, but not applicable to the current front end.
+ 
  Wcpp
  Common Var(warn_cpp) Init(1) Warning
  Warn when a #warning directive is encountered.
*************** Driver Undocumented
*** 1006,1011 ****
--- 1007,1015 ----
  ;     member initializers in C++14 and up.
  ;     Default in G++ 12.
  ;
+ ; 18: Corrects errors in mangling of lambdas with additional context.
+ ;     Default in G++ 13.
+ ;
  ; Additional positive integers will be assigned as new versions of
  ; the ABI become the default version of the ABI.
  fabi-version=
*************** fsanitize-recover
*** 1105,1116 ****
  Common
  This switch is deprecated; use -fsanitize-recover= instead.
  
  fsanitize-address-use-after-scope
  Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
  
  fsanitize-undefined-trap-on-error
! Common Driver Var(flag_sanitize_undefined_trap_on_error) Init(0)
! Use trap instead of a library function for undefined behavior sanitization.
  
  fasynchronous-unwind-tables
  Common Var(flag_asynchronous_unwind_tables) Optimization
--- 1109,1127 ----
  Common
  This switch is deprecated; use -fsanitize-recover= instead.
  
+ fsanitize-trap=
+ Common Driver Joined
+ Use traps instead of diagnostics of undefined behavior sanitizers.
+ 
+ fsanitize-trap
+ Common Driver
+ 
  fsanitize-address-use-after-scope
  Common Driver Var(flag_sanitize_address_use_after_scope) Init(0)
  
  fsanitize-undefined-trap-on-error
! Common Driver Alias(fsanitize-trap)
! This switch is deprecated; use -fsanitize-trap= instead.
  
  fasynchronous-unwind-tables
  Common Var(flag_asynchronous_unwind_tables) Optimization
*************** fchecking=
*** 1197,1202 ****
--- 1208,1217 ----
  Common Joined RejectNegative UInteger Var(flag_checking)
  Perform internal consistency checkings.
  
+ fcanon-prefix-map
+ Common Var(common_deferred_options) Defer
+ For -f*-prefix-map= options compare canonicalized pathnames rather than just strings.
+ 
  fcode-hoisting
  Common Var(flag_code_hoisting) Optimization
  Enable code hoisting.
*************** Common Joined RejectNegative UInteger
*** 1390,1396 ****
  
  fdiagnostics-format=
  Common Joined RejectNegative Enum(diagnostics_output_format)
! -fdiagnostics-format=[text|json]	Select output format.
  
  fdiagnostics-escape-format=
  Common Joined RejectNegative Enum(diagnostics_escape_format)
--- 1405,1411 ----
  
  fdiagnostics-format=
  Common Joined RejectNegative Enum(diagnostics_output_format)
! -fdiagnostics-format=[text|sarif-stderr|sarif-file|json|json-stderr|json-file]	Select output format.
  
  fdiagnostics-escape-format=
  Common Joined RejectNegative Enum(diagnostics_escape_format)
*************** EnumValue
*** 1425,1431 ****
  Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
  
  EnumValue
! Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON)
  
  fdiagnostics-parseable-fixits
  Common Var(flag_diagnostics_parseable_fixits)
--- 1440,1458 ----
  Enum(diagnostics_output_format) String(text) Value(DIAGNOSTICS_OUTPUT_FORMAT_TEXT)
  
  EnumValue
! Enum(diagnostics_output_format) String(json) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
! 
! EnumValue
! Enum(diagnostics_output_format) String(json-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_STDERR)
! 
! EnumValue
! Enum(diagnostics_output_format) String(json-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_JSON_FILE)
! 
! EnumValue
! Enum(diagnostics_output_format) String(sarif-stderr) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_STDERR)
! 
! EnumValue
! Enum(diagnostics_output_format) String(sarif-file) Value(DIAGNOSTICS_OUTPUT_FORMAT_SARIF_FILE)
  
  fdiagnostics-parseable-fixits
  Common Var(flag_diagnostics_parseable_fixits)
*************** fdiagnostics-show-cwe
*** 1443,1448 ****
--- 1470,1479 ----
  Common Var(flag_diagnostics_show_cwe) Init(1)
  Print CWE identifiers for diagnostic messages, where available.
  
+ fdiagnostics-show-rules
+ Common Var(flag_diagnostics_show_rules) Init(1)
+ Print any rules associated with diagnostic messages.
+ 
  fdiagnostics-path-format=
  Common Joined RejectNegative Var(flag_diagnostics_path_format) Enum(diagnostic_path_format) Init(DPF_INLINE_EVENTS)
  Specify how to print any control-flow path associated with a diagnostic.
*************** EnumValue
*** 1878,1886 ****
  Enum(cf_protection_level) String(none) Value(CF_NONE)
  
  finstrument-functions
! Common Var(flag_instrument_function_entry_exit)
  Instrument function entry and exit with profiling calls.
  
  finstrument-functions-exclude-function-list=
  Common RejectNegative Joined
  -finstrument-functions-exclude-function-list=name,...	Do not instrument listed functions.
--- 1909,1921 ----
  Enum(cf_protection_level) String(none) Value(CF_NONE)
  
  finstrument-functions
! Common Var(flag_instrument_function_entry_exit,1)
  Instrument function entry and exit with profiling calls.
  
+ finstrument-functions-once
+ Common Var(flag_instrument_function_entry_exit,2)
+ Instrument function entry and exit with profiling calls invoked once.
+ 
  finstrument-functions-exclude-function-list=
  Common RejectNegative Joined
  -finstrument-functions-exclude-function-list=name,...	Do not instrument listed functions.
*************** Specify the algorithm to partition symbo
*** 2081,2087 ****
  ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
  flto-compression-level=
  Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
! -flto-compression-level=<number>	Use zlib/zstd compression level <number> for IL.
  
  flto-odr-type-merging
  Common Ignore
--- 2116,2122 ----
  ; The initial value of -1 comes from Z_DEFAULT_COMPRESSION in zlib.h.
  flto-compression-level=
  Common Joined RejectNegative UInteger Var(flag_lto_compression_level) Init(-1) IntegerRange(0, 19)
! Use zlib/zstd compression level <number> for IL.
  
  flto-odr-type-merging
  Common Ignore
*************** fmove-loop-stores
*** 2146,2151 ****
--- 2181,2190 ----
  Common Var(flag_move_loop_stores) Optimization
  Move stores out of loops.
  
+ fmultiflags
+ Common Driver
+ Building block for specs-based multilib-aware TFLAGS.
+ 
  fdce
  Common Var(flag_dce) Init(1) Optimization
  Use the RTL dead code elimination pass.
*************** fomit-frame-pointer
*** 2186,2191 ****
--- 2225,2252 ----
  Common Var(flag_omit_frame_pointer) Optimization
  When possible do not generate stack frames.
  
+ fopenmp-target-simd-clone
+ Common Alias(fopenmp-target-simd-clone=,any,none)
+ 
+ fopenmp-target-simd-clone=
+ Common Joined RejectNegative Enum(target_simd_clone_device) Var(flag_openmp_target_simd_clone) Init(OMP_TARGET_SIMD_CLONE_NONE) Optimization
+ Generate SIMD clones for functions with the OpenMP declare target directive.
+ 
+ Enum
+ Name(target_simd_clone_device) Type(int)
+ 
+ EnumValue
+ Enum(target_simd_clone_device) String(none) Value(OMP_TARGET_SIMD_CLONE_NONE)
+ 
+ EnumValue
+ Enum(target_simd_clone_device) String(host) Value(OMP_TARGET_SIMD_CLONE_HOST)
+ 
+ EnumValue
+ Enum(target_simd_clone_device) String(nohost) Value(OMP_TARGET_SIMD_CLONE_NOHOST)
+ 
+ EnumValue
+ Enum(target_simd_clone_device) String(any) Value(OMP_TARGET_SIMD_CLONE_ANY)
+ 
  fopt-info
  Common Var(flag_opt_info) Optimization
  Enable all optimization info dumps on stderr.
*************** funit-at-a-time
*** 2990,2995 ****
--- 3051,3060 ----
  Common Var(flag_unit_at_a_time) Init(1)
  Compile whole compilation unit at a time.
  
+ funreachable-traps
+ Common Var(flag_unreachable_traps) Optimization
+ Trap on __builtin_unreachable instead of using it for optimization.
+ 
  funroll-loops
  Common Var(flag_unroll_loops) Optimization EnabledBy(funroll-all-loops)
  Perform loop unrolling when iteration count is known.
*************** Common Driver RejectNegative JoinedOrMis
*** 3284,3294 ****
  Generate BTF debug information at default level.
  
  gdwarf
! Common Driver JoinedOrMissing Negative(gdwarf-)
  Generate debug information in default version of DWARF format.
  
  gdwarf-
! Common Driver Joined UInteger Var(dwarf_version) Init(5) Negative(gstabs)
  Generate debug information in DWARF v2 (or later) format.
  
  gdwarf32
--- 3349,3359 ----
  Generate BTF debug information at default level.
  
  gdwarf
! Common Driver JoinedOrMissing RejectNegative
  Generate debug information in default version of DWARF format.
  
  gdwarf-
! Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) RejectNegative
  Generate debug information in DWARF v2 (or later) format.
  
  gdwarf32
*************** Common Driver Var(dwarf_offset_size,8) R
*** 3300,3306 ****
  Use 64-bit DWARF format when emitting DWARF debug information.
  
  ggdb
! Common Driver JoinedOrMissing
  Generate debug information in default extended format.
  
  ginline-points
--- 3365,3371 ----
  Use 64-bit DWARF format when emitting DWARF debug information.
  
  ggdb
! Common Driver JoinedOrMissing RejectNegative
  Generate debug information in default extended format.
  
  ginline-points
*************** Common Driver Var(dwarf_split_debug_info
*** 3336,3347 ****
  Generate debug information in separate .dwo files.
  
  gstabs
! Common Driver JoinedOrMissing Negative(gstabs+)
! Generate debug information in STABS format.
  
  gstabs+
! Common Driver JoinedOrMissing Negative(gvms)
! Generate debug information in extended STABS format.
  
  gstatement-frontiers
  Common Driver Var(debug_nonbind_markers_p) PerFunction
--- 3401,3412 ----
  Generate debug information in separate .dwo files.
  
  gstabs
! Common Driver WarnRemoved
! Does nothing.  Preserved for backward compatibility.
  
  gstabs+
! Common Driver WarnRemoved
! Does nothing.  Preserved for backward compatibility.
  
  gstatement-frontiers
  Common Driver Var(debug_nonbind_markers_p) PerFunction
*************** gvariable-location-views=incompat5
*** 3367,3382 ****
  Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
  
  gvms
! Common Driver JoinedOrMissing Negative(gxcoff)
  Generate debug information in VMS format.
  
  gxcoff
! Common Driver JoinedOrMissing Negative(gxcoff+)
! Generate debug information in XCOFF format.
  
  gxcoff+
! Common Driver JoinedOrMissing Negative(gdwarf)
! Generate debug information in extended XCOFF format.
  
  Enum
  Name(compressed_debug_sections) Type(int)
--- 3432,3447 ----
  Common Driver RejectNegative Var(debug_variable_location_views, -1) Init(2)
  
  gvms
! Common Driver JoinedOrMissing RejectNegative
  Generate debug information in VMS format.
  
  gxcoff
! Common Driver WarnRemoved
! Does nothing.  Preserved for backward compatibility.
  
  gxcoff+
! Common Driver JoinedOrMissing  WarnRemoved
! Does nothing.  Preserved for backward compatibility.
  
  Enum
  Name(compressed_debug_sections) Type(int)
*************** EnumValue
*** 3390,3396 ****
  Enum(compressed_debug_sections) String(zlib) Value(1)
  
  EnumValue
! Enum(compressed_debug_sections) String(zlib-gnu) Value(2)
  
  gz
  Common Driver
--- 3455,3464 ----
  Enum(compressed_debug_sections) String(zlib) Value(1)
  
  EnumValue
! Enum(compressed_debug_sections) String(zstd) Value(2)
! 
! EnumValue
! Enum(compressed_debug_sections) String(zlib-gnu) Value(3)
  
  gz
  Common Driver
*************** Driver
*** 3432,3437 ****
--- 3500,3508 ----
  nostdlib
  Driver
  
+ nostdlib++
+ Driver
+ 
  o
  Common Driver Joined Separate Var(asm_file_name) MissingArgError(missing filename after %qs)
  -o <file>	Place output into <file>.
*************** static-libgfortran
*** 3559,3568 ****
--- 3630,3647 ----
  Driver
  ; Documented for Fortran, but always accepted by driver.
  
+ static-libgm2
+ Driver
+ ; Documented for Modula-2, but always accepted by driver.
+ 
  static-libphobos
  Driver
  ; Documented for D, but always accepted by driver.
  
+ static-libquadmath
+ Driver
+ ; Documented for Fortran, but always accepted by driver.
+ 
  static-libstdc++
  Driver
  
diff -Nrcpad gcc-12.2.0/gcc/compare-elim.cc gcc-13.1.0/gcc/compare-elim.cc
*** gcc-12.2.0/gcc/compare-elim.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/compare-elim.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Post-reload compare elimination.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Post-reload compare elimination.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** find_flags_uses_in_insn (struct comparis
*** 254,260 ****
  	x = PATTERN (insn);
  	if (GET_CODE (x) == PARALLEL)
  	  x = XVECEXP (x, 0, 0);
! 	x = SET_SRC (x);
  	if (GET_CODE (x) == IF_THEN_ELSE)
  	  x = XEXP (x, 0);
  	if (COMPARISON_P (x)
--- 254,261 ----
  	x = PATTERN (insn);
  	if (GET_CODE (x) == PARALLEL)
  	  x = XVECEXP (x, 0, 0);
! 	if (GET_CODE (x) == SET)
! 	  x = SET_SRC (x);
  	if (GET_CODE (x) == IF_THEN_ELSE)
  	  x = XEXP (x, 0);
  	if (COMPARISON_P (x)
*************** public:
*** 283,289 ****
    find_comparison_dom_walker (cdi_direction direction)
      : dom_walker (direction) {}
  
!   virtual edge before_dom_children (basic_block);
  };
  
  /* Return true if conforming COMPARE with EH_NOTE is redundant with comparison
--- 284,290 ----
    find_comparison_dom_walker (cdi_direction direction)
      : dom_walker (direction) {}
  
!   edge before_dom_children (basic_block) final override;
  };
  
  /* Return true if conforming COMPARE with EH_NOTE is redundant with comparison
*************** public:
*** 954,960 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        /* Setting this target hook value is how a backend indicates the need.  */
        if (targetm.flags_regnum == INVALID_REGNUM)
--- 955,961 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        /* Setting this target hook value is how a backend indicates the need.  */
        if (targetm.flags_regnum == INVALID_REGNUM)
*************** public:
*** 962,968 ****
        return flag_compare_elim_after_reload;
      }
  
!   virtual unsigned int execute (function *)
      {
        return execute_compare_elim_after_reload ();
      }
--- 963,969 ----
        return flag_compare_elim_after_reload;
      }
  
!   unsigned int execute (function *) final override
      {
        return execute_compare_elim_after_reload ();
      }
diff -Nrcpad gcc-12.2.0/gcc/conditions.h gcc-13.1.0/gcc/conditions.h
*** gcc-12.2.0/gcc/conditions.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/conditions.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for condition code handling in final.cc and output routines.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for condition code handling in final.cc and output routines.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-arches.def gcc-13.1.0/gcc/config/aarch64/aarch64-arches.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-arches.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-arches.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 28,45 ****
     ARCH_REV is an integer specifying the architecture major revision.
     FLAGS are the flags implied by the architecture.
     Due to the assumptions about the positions of these fields in config.gcc,
!    the NAME should be kept as the first argument and FLAGS as the last.  */
  
! AARCH64_ARCH("armv8-a",	      generic,	     8A,	8,  AARCH64_FL_FOR_ARCH8)
! AARCH64_ARCH("armv8.1-a",     generic,	     8_1A,	8,  AARCH64_FL_FOR_ARCH8_1)
! AARCH64_ARCH("armv8.2-a",     generic,	     8_2A,	8,  AARCH64_FL_FOR_ARCH8_2)
! AARCH64_ARCH("armv8.3-a",     generic,	     8_3A,	8,  AARCH64_FL_FOR_ARCH8_3)
! AARCH64_ARCH("armv8.4-a",     generic,	     8_4A,	8,  AARCH64_FL_FOR_ARCH8_4)
! AARCH64_ARCH("armv8.5-a",     generic,	     8_5A,	8,  AARCH64_FL_FOR_ARCH8_5)
! AARCH64_ARCH("armv8.6-a",     generic,	     8_6A,	8,  AARCH64_FL_FOR_ARCH8_6)
! AARCH64_ARCH("armv8.7-a",     generic,       8_7A,      8,  AARCH64_FL_FOR_ARCH8_7)
! AARCH64_ARCH("armv8.8-a",     generic,       8_8A,      8,  AARCH64_FL_FOR_ARCH8_8)
! AARCH64_ARCH("armv8-r",       generic,	     8R  ,	8,  AARCH64_FL_FOR_ARCH8_R)
! AARCH64_ARCH("armv9-a",       generic,	     9A  ,	9,  AARCH64_FL_FOR_ARCH9)
  
  #undef AARCH64_ARCH
--- 28,48 ----
     ARCH_REV is an integer specifying the architecture major revision.
     FLAGS are the flags implied by the architecture.
     Due to the assumptions about the positions of these fields in config.gcc,
!    NAME should be kept as the first argument.  */
  
! AARCH64_ARCH("armv8-a",       generic,       V8A,       8,  (SIMD))
! AARCH64_ARCH("armv8.1-a",     generic,       V8_1A,     8,  (V8A, LSE, CRC, RDMA))
! AARCH64_ARCH("armv8.2-a",     generic,       V8_2A,     8,  (V8_1A))
! AARCH64_ARCH("armv8.3-a",     generic,       V8_3A,     8,  (V8_2A, PAUTH, RCPC))
! AARCH64_ARCH("armv8.4-a",     generic,       V8_4A,     8,  (V8_3A, F16FML, DOTPROD, FLAGM))
! AARCH64_ARCH("armv8.5-a",     generic,       V8_5A,     8,  (V8_4A, SB, SSBS, PREDRES))
! AARCH64_ARCH("armv8.6-a",     generic,       V8_6A,     8,  (V8_5A, I8MM, BF16))
! AARCH64_ARCH("armv8.7-a",     generic,       V8_7A,     8,  (V8_6A, LS64))
! AARCH64_ARCH("armv8.8-a",     generic,       V8_8A,     8,  (V8_7A, MOPS))
! AARCH64_ARCH("armv8-r",       generic,       V8R  ,     8,  (V8_4A))
! AARCH64_ARCH("armv9-a",       generic,       V9A  ,     9,  (V8_5A, SVE2))
! AARCH64_ARCH("armv9.1-a",     generic,       V9_1A,     9,  (V8_6A, V9A))
! AARCH64_ARCH("armv9.2-a",     generic,       V9_2A,     9,  (V8_7A, V9_1A))
! AARCH64_ARCH("armv9.3-a",     generic,       V9_3A,     9,  (V8_8A, V9_2A))
  
  #undef AARCH64_ARCH
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-bti-insert.cc gcc-13.1.0/gcc/config/aarch64/aarch64-bti-insert.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-bti-insert.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-bti-insert.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,248 ****
- /* Branch Target Identification for AArch64 architecture.
-    Copyright (C) 2019-2022 Free Software Foundation, Inc.
-    Contributed by Arm Ltd.
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3, or (at your option)
-    any later version.
- 
-    GCC is distributed in the hope that it will be useful, but
-    WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #define IN_TARGET_CODE 1
- 
- #include "config.h"
- #define INCLUDE_STRING
- #include "system.h"
- #include "coretypes.h"
- #include "backend.h"
- #include "target.h"
- #include "rtl.h"
- #include "tree.h"
- #include "memmodel.h"
- #include "gimple.h"
- #include "tm_p.h"
- #include "stringpool.h"
- #include "attribs.h"
- #include "emit-rtl.h"
- #include "gimplify.h"
- #include "gimple-iterator.h"
- #include "dumpfile.h"
- #include "rtl-iter.h"
- #include "cfgrtl.h"
- #include "tree-pass.h"
- #include "cgraph.h"
- 
- /* This pass enables the support for Branch Target Identification Mechanism
-    for AArch64.  This is a new security feature introduced in ARMv8.5-A
-    archtitecture.  A BTI instruction is used to guard against the execution
-    of instructions which are not the intended target of an indirect branch.
- 
-    Outside of a guarded memory region, a BTI instruction executes as a NOP.
-    Within a guarded memory region any target of an indirect branch must be
-    a compatible BTI or BRK, HLT, PACIASP, PACIBASP instruction (even if the
-    branch is triggered in a non-guarded memory region).  An incompatibility
-    generates a Branch Target Exception.
- 
-    The compatibility of the BTI instruction is as follows:
-    BTI j : Can be a target of any indirect jump (BR Xn).
-    BTI c : Can be a target of any indirect call (BLR Xn and BR X16/X17).
-    BTI jc: Can be a target of any indirect call or indirect jump.
-    BTI   : Can not be a target of any indirect call or indirect jump.
- 
-   In order to enable this mechanism, this pass iterates through the
-   control flow of the code and adds appropriate BTI instructions :
-   * Add a new "BTI C" at the beginning of a function, unless its already
-     protected by a "PACIASP/PACIBSP".  We exempt the functions that are only
-     called directly.
-   * Add a new "BTI J" for every target of an indirect jump, jump table targets,
-     non-local goto targets or labels that might be referenced by variables,
-     constant pools, etc (NOTE_INSN_DELETED_LABEL)
- 
-   Since we have already changed the use of indirect tail calls to only x16
-   and x17, we do not have to use "BTI JC".
- 
-   This pass is triggered by the command line option -mbranch-protection=bti or
-   -mbranch-protection=standard.  Since all the BTI instructions are in the HINT
-   space, this pass does not require any minimum architecture version.  */
- 
- namespace {
- 
- const pass_data pass_data_insert_bti =
- {
-   RTL_PASS, /* type.  */
-   "bti", /* name.  */
-   OPTGROUP_NONE, /* optinfo_flags.  */
-   TV_MACH_DEP, /* tv_id.  */
-   0, /* properties_required.  */
-   0, /* properties_provided.  */
-   0, /* properties_destroyed.  */
-   0, /* todo_flags_start.  */
-   0, /* todo_flags_finish.  */
- };
- 
- /* Check if X (or any sub-rtx of X) is a PACIASP/PACIBSP instruction.  */
- static bool
- aarch64_pac_insn_p (rtx x)
- {
-   if (!INSN_P (x))
-     return false;
- 
-   subrtx_var_iterator::array_type array;
-   FOR_EACH_SUBRTX_VAR (iter, array, PATTERN (x), ALL)
-     {
-       rtx sub = *iter;
-       if (sub && GET_CODE (sub) == UNSPEC)
- 	{
- 	  int unspec_val = XINT (sub, 1);
- 	  switch (unspec_val)
- 	    {
- 	    case UNSPEC_PACIASP:
-             /* fall-through.  */
-             case UNSPEC_PACIBSP:
- 	      return true;
- 
- 	    default:
- 	      return false;
- 	    }
- 	  iter.skip_subrtxes ();
- 	}
-     }
-   return false;
- }
- 
- /* Check if INSN is a BTI J insn.  */
- static bool
- aarch64_bti_j_insn_p (rtx_insn *insn)
- {
-   if (!insn || !INSN_P (insn))
-     return false;
- 
-   rtx pat = PATTERN (insn);
-   return GET_CODE (pat) == UNSPEC_VOLATILE && XINT (pat, 1) == UNSPECV_BTI_J;
- }
- 
- /* Insert the BTI instruction.  */
- /* This is implemented as a late RTL pass that runs before branch
-    shortening and does the following.  */
- static unsigned int
- rest_of_insert_bti (void)
- {
-   timevar_push (TV_MACH_DEP);
- 
-   rtx bti_insn;
-   rtx_insn *insn;
-   basic_block bb;
- 
-   bb = 0;
-   FOR_EACH_BB_FN (bb, cfun)
-     {
-       for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb));
- 	   insn = NEXT_INSN (insn))
- 	{
- 	  /* If a label is marked to be preserved or can be a non-local goto
- 	     target, it must be protected with a BTI J.  */
- 	  if (LABEL_P (insn)
- 	       && (LABEL_PRESERVE_P (insn)
- 		   || bb->flags & BB_NON_LOCAL_GOTO_TARGET))
- 	    {
- 	      bti_insn = gen_bti_j ();
- 	      emit_insn_after (bti_insn, insn);
- 	      continue;
- 	    }
- 
- 	  /* There could still be more labels that are valid targets of a
- 	     BTI J instuction.  To find them we start looking through the
- 	     JUMP_INSN.  If it jumps to a jump table, then we find all labels
- 	     of the jump table to protect with a BTI J.  */
- 	  if (JUMP_P (insn))
- 	    {
- 	      rtx_jump_table_data *table;
- 	      if (tablejump_p (insn, NULL, &table))
- 		{
- 		  rtvec vec = table->get_labels ();
- 		  int j;
- 		  rtx_insn *label;
- 
- 		  for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j)
- 		    {
- 		      label = as_a <rtx_insn *> (XEXP (RTVEC_ELT (vec, j), 0));
- 		      rtx_insn *next = next_nonnote_nondebug_insn (label);
- 		      if (aarch64_bti_j_insn_p (next))
- 			continue;
- 
- 		      bti_insn = gen_bti_j ();
- 		      emit_insn_after (bti_insn, label);
- 		    }
- 		}
- 	    }
- 
- 	  /* Also look for calls to setjmp () which would be marked with
- 	     REG_SETJMP note and put a BTI J after.  This is where longjump ()
- 	     will return.  */
- 	  if (CALL_P (insn) && (find_reg_note (insn, REG_SETJMP, NULL)))
- 	    {
- 	      bti_insn = gen_bti_j ();
- 	      emit_insn_after (bti_insn, insn);
- 	      continue;
- 	    }
- 	}
-     }
- 
-   /* Since a Branch Target Exception can only be triggered by an indirect call,
-      we exempt function that are only called directly.  We also exempt
-      functions that are already protected by Return Address Signing (PACIASP/
-      PACIBSP).  For all other cases insert a BTI C at the beginning of the
-      function.  */
-   if (!cgraph_node::get (cfun->decl)->only_called_directly_p ())
-     {
-       bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
-       insn = BB_HEAD (bb);
-       if (!aarch64_pac_insn_p (get_first_nonnote_insn ()))
- 	{
- 	  bti_insn = gen_bti_c ();
- 	  emit_insn_before (bti_insn, insn);
- 	}
-     }
- 
-   timevar_pop (TV_MACH_DEP);
-   return 0;
- }
- 
- 
- class pass_insert_bti : public rtl_opt_pass
- {
- public:
-   pass_insert_bti (gcc::context *ctxt)
-     : rtl_opt_pass (pass_data_insert_bti, ctxt)
-   {}
- 
-   /* opt_pass methods: */
-   virtual bool gate (function *)
-     {
-       return aarch64_bti_enabled ();
-     }
- 
-   virtual unsigned int execute (function *)
-     {
-       return rest_of_insert_bti ();
-     }
- 
- }; // class pass_insert_bti
- 
- } // anon namespace
- 
- rtl_opt_pass *
- make_pass_insert_bti (gcc::context *ctxt)
- {
-   return new pass_insert_bti (ctxt);
- }
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-builtins.cc gcc-13.1.0/gcc/config/aarch64/aarch64-builtins.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtins' description for AArch64 SIMD architecture.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtins' description for AArch64 SIMD architecture.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 55,60 ****
--- 55,61 ----
  #define v2si_UP  E_V2SImode
  #define v2sf_UP  E_V2SFmode
  #define v1df_UP  E_V1DFmode
+ #define v1di_UP  E_V1DImode
  #define di_UP    E_DImode
  #define df_UP    E_DFmode
  #define v16qi_UP E_V16QImode
***************
*** 126,131 ****
--- 127,189 ----
  #define v4x2df_UP  E_V4x2DFmode
  #define UP(X) X##_UP
  
+ #define MODE_d_bf16 E_V4BFmode
+ #define MODE_d_f16 E_V4HFmode
+ #define MODE_d_f32 E_V2SFmode
+ #define MODE_d_f64 E_V1DFmode
+ #define MODE_d_s8 E_V8QImode
+ #define MODE_d_s16 E_V4HImode
+ #define MODE_d_s32 E_V2SImode
+ #define MODE_d_s64 E_V1DImode
+ #define MODE_d_u8 E_V8QImode
+ #define MODE_d_u16 E_V4HImode
+ #define MODE_d_u32 E_V2SImode
+ #define MODE_d_u64 E_V1DImode
+ #define MODE_d_p8 E_V8QImode
+ #define MODE_d_p16 E_V4HImode
+ #define MODE_d_p64 E_V1DImode
+ #define MODE_q_bf16 E_V8BFmode
+ #define MODE_q_f16 E_V8HFmode
+ #define MODE_q_f32 E_V4SFmode
+ #define MODE_q_f64 E_V2DFmode
+ #define MODE_q_s8 E_V16QImode
+ #define MODE_q_s16 E_V8HImode
+ #define MODE_q_s32 E_V4SImode
+ #define MODE_q_s64 E_V2DImode
+ #define MODE_q_u8 E_V16QImode
+ #define MODE_q_u16 E_V8HImode
+ #define MODE_q_u32 E_V4SImode
+ #define MODE_q_u64 E_V2DImode
+ #define MODE_q_p8 E_V16QImode
+ #define MODE_q_p16 E_V8HImode
+ #define MODE_q_p64 E_V2DImode
+ #define MODE_q_p128 E_TImode
+ 
+ #define QUAL_bf16 qualifier_none
+ #define QUAL_f16 qualifier_none
+ #define QUAL_f32 qualifier_none
+ #define QUAL_f64 qualifier_none
+ #define QUAL_s8 qualifier_none
+ #define QUAL_s16 qualifier_none
+ #define QUAL_s32 qualifier_none
+ #define QUAL_s64 qualifier_none
+ #define QUAL_u8 qualifier_unsigned
+ #define QUAL_u16 qualifier_unsigned
+ #define QUAL_u32 qualifier_unsigned
+ #define QUAL_u64 qualifier_unsigned
+ #define QUAL_p8 qualifier_poly
+ #define QUAL_p16 qualifier_poly
+ #define QUAL_p64 qualifier_poly
+ #define QUAL_p128 qualifier_poly
+ 
+ #define LENGTH_d ""
+ #define LENGTH_q "q"
+ 
+ #define SIMD_INTR_MODE(suffix, length) MODE_##length##_##suffix
+ #define SIMD_INTR_QUAL(suffix) QUAL_##suffix
+ #define SIMD_INTR_LENGTH_CHAR(length) LENGTH_##length
+ 
+ 
  #define SIMD_MAX_BUILTIN_ARGS 5
  
  enum aarch64_type_qualifiers
*************** enum aarch64_type_qualifiers
*** 144,152 ****
    qualifier_maybe_immediate = 0x10, /* 1 << 4  */
    /* void foo (...).  */
    qualifier_void = 0x20, /* 1 << 5  */
!   /* Some patterns may have internal operands, this qualifier is an
!      instruction to the initialisation code to skip this operand.  */
!   qualifier_internal = 0x40, /* 1 << 6  */
    /* Some builtins should use the T_*mode* encoded in a simd_builtin_datum
       rather than using the type of the operand.  */
    qualifier_map_mode = 0x80, /* 1 << 7  */
--- 202,208 ----
    qualifier_maybe_immediate = 0x10, /* 1 << 4  */
    /* void foo (...).  */
    qualifier_void = 0x20, /* 1 << 5  */
!   /* 1 << 6 is now unused */
    /* Some builtins should use the T_*mode* encoded in a simd_builtin_datum
       rather than using the type of the operand.  */
    qualifier_map_mode = 0x80, /* 1 << 7  */
*************** static aarch64_simd_builtin_datum aarch6
*** 523,528 ****
--- 579,677 ----
    FCMLA_LANEQ_BUILTIN (180, v4hf, fcmla_laneq, V4HF, true) \
    FCMLA_LANEQ_BUILTIN (270, v4hf, fcmla_laneq, V4HF, true) \
  
+ 
+ /* vreinterpret intrinsics are defined for any pair of element types.
+    {     _bf16           }   {     _bf16           }
+    {      _f16 _f32 _f64 }   {      _f16 _f32 _f64 }
+    { _s8  _s16 _s32 _s64 } x { _s8  _s16 _s32 _s64 }
+    { _u8  _u16 _u32 _u64 }   { _u8  _u16 _u32 _u64 }
+    { _p8  _p16      _p64 }   { _p8  _p16      _p64 }.  */
+ #define VREINTERPRET_BUILTIN2(A, B) \
+   VREINTERPRET_BUILTIN (A, B, d)
+ 
+ #define VREINTERPRET_BUILTINS1(A) \
+   VREINTERPRET_BUILTIN2 (A, bf16) \
+   VREINTERPRET_BUILTIN2 (A, f16) \
+   VREINTERPRET_BUILTIN2 (A, f32) \
+   VREINTERPRET_BUILTIN2 (A, f64) \
+   VREINTERPRET_BUILTIN2 (A, s8) \
+   VREINTERPRET_BUILTIN2 (A, s16) \
+   VREINTERPRET_BUILTIN2 (A, s32) \
+   VREINTERPRET_BUILTIN2 (A, s64) \
+   VREINTERPRET_BUILTIN2 (A, u8) \
+   VREINTERPRET_BUILTIN2 (A, u16) \
+   VREINTERPRET_BUILTIN2 (A, u32) \
+   VREINTERPRET_BUILTIN2 (A, u64) \
+   VREINTERPRET_BUILTIN2 (A, p8) \
+   VREINTERPRET_BUILTIN2 (A, p16) \
+   VREINTERPRET_BUILTIN2 (A, p64)
+ 
+ #define VREINTERPRET_BUILTINS \
+   VREINTERPRET_BUILTINS1 (bf16) \
+   VREINTERPRET_BUILTINS1 (f16) \
+   VREINTERPRET_BUILTINS1 (f32) \
+   VREINTERPRET_BUILTINS1 (f64) \
+   VREINTERPRET_BUILTINS1 (s8) \
+   VREINTERPRET_BUILTINS1 (s16) \
+   VREINTERPRET_BUILTINS1 (s32) \
+   VREINTERPRET_BUILTINS1 (s64) \
+   VREINTERPRET_BUILTINS1 (u8) \
+   VREINTERPRET_BUILTINS1 (u16) \
+   VREINTERPRET_BUILTINS1 (u32) \
+   VREINTERPRET_BUILTINS1 (u64) \
+   VREINTERPRET_BUILTINS1 (p8) \
+   VREINTERPRET_BUILTINS1 (p16) \
+   VREINTERPRET_BUILTINS1 (p64)
+ 
+ /* vreinterpretq intrinsics are additionally defined for p128.
+    {     _bf16                 }   {     _bf16                 }
+    {      _f16 _f32 _f64       }   {      _f16 _f32 _f64       }
+    { _s8  _s16 _s32 _s64       } x { _s8  _s16 _s32 _s64       }
+    { _u8  _u16 _u32 _u64       }   { _u8  _u16 _u32 _u64       }
+    { _p8  _p16      _p64 _p128 }   { _p8  _p16      _p64 _p128 }.  */
+ #define VREINTERPRETQ_BUILTIN2(A, B) \
+   VREINTERPRET_BUILTIN (A, B, q)
+ 
+ #define VREINTERPRETQ_BUILTINS1(A) \
+   VREINTERPRETQ_BUILTIN2 (A, bf16) \
+   VREINTERPRETQ_BUILTIN2 (A, f16) \
+   VREINTERPRETQ_BUILTIN2 (A, f32) \
+   VREINTERPRETQ_BUILTIN2 (A, f64) \
+   VREINTERPRETQ_BUILTIN2 (A, s8) \
+   VREINTERPRETQ_BUILTIN2 (A, s16) \
+   VREINTERPRETQ_BUILTIN2 (A, s32) \
+   VREINTERPRETQ_BUILTIN2 (A, s64) \
+   VREINTERPRETQ_BUILTIN2 (A, u8) \
+   VREINTERPRETQ_BUILTIN2 (A, u16) \
+   VREINTERPRETQ_BUILTIN2 (A, u32) \
+   VREINTERPRETQ_BUILTIN2 (A, u64) \
+   VREINTERPRETQ_BUILTIN2 (A, p8) \
+   VREINTERPRETQ_BUILTIN2 (A, p16) \
+   VREINTERPRETQ_BUILTIN2 (A, p64) \
+   VREINTERPRETQ_BUILTIN2 (A, p128)
+ 
+ #define VREINTERPRETQ_BUILTINS \
+   VREINTERPRETQ_BUILTINS1 (bf16) \
+   VREINTERPRETQ_BUILTINS1 (f16) \
+   VREINTERPRETQ_BUILTINS1 (f32) \
+   VREINTERPRETQ_BUILTINS1 (f64) \
+   VREINTERPRETQ_BUILTINS1 (s8) \
+   VREINTERPRETQ_BUILTINS1 (s16) \
+   VREINTERPRETQ_BUILTINS1 (s32) \
+   VREINTERPRETQ_BUILTINS1 (s64) \
+   VREINTERPRETQ_BUILTINS1 (u8) \
+   VREINTERPRETQ_BUILTINS1 (u16) \
+   VREINTERPRETQ_BUILTINS1 (u32) \
+   VREINTERPRETQ_BUILTINS1 (u64) \
+   VREINTERPRETQ_BUILTINS1 (p8) \
+   VREINTERPRETQ_BUILTINS1 (p16) \
+   VREINTERPRETQ_BUILTINS1 (p64) \
+   VREINTERPRETQ_BUILTINS1 (p128)
+ 
+ #define AARCH64_SIMD_VREINTERPRET_BUILTINS \
+   VREINTERPRET_BUILTINS \
+   VREINTERPRETQ_BUILTINS
+ 
  typedef struct
  {
    const char *name;
*************** typedef struct
*** 541,552 ****
--- 690,716 ----
    bool lane;
  } aarch64_fcmla_laneq_builtin_datum;
  
+ /* Hold information about how to declare SIMD intrinsics.  */
+ typedef struct
+ {
+   const char *name;
+   unsigned int fcode;
+   unsigned int op_count;
+   machine_mode op_modes[SIMD_MAX_BUILTIN_ARGS];
+   enum aarch64_type_qualifiers qualifiers[SIMD_MAX_BUILTIN_ARGS];
+   unsigned int flags;
+   bool skip;
+ } aarch64_simd_intrinsic_datum;
+ 
  #define CRC32_BUILTIN(N, M) \
    AARCH64_BUILTIN_##N,
  
  #define FCMLA_LANEQ_BUILTIN(I, N, X, M, T) \
    AARCH64_SIMD_BUILTIN_FCMLA_LANEQ##I##_##M,
  
+ #define VREINTERPRET_BUILTIN(A, B, L) \
+   AARCH64_SIMD_BUILTIN_VREINTERPRET##L##_##A##_##B,
+ 
  #undef VAR1
  #define VAR1(T, N, MAP, FLAG, A) \
    AARCH64_SIMD_BUILTIN_##T##_##N##A,
*************** enum aarch64_builtins
*** 580,585 ****
--- 744,751 ----
    AARCH64_CRC32_BUILTIN_BASE,
    AARCH64_CRC32_BUILTINS
    AARCH64_CRC32_BUILTIN_MAX,
+   /* SIMD intrinsic builtins.  */
+   AARCH64_SIMD_VREINTERPRET_BUILTINS
    /* ARMv8.3-A Pointer Authentication Builtins.  */
    AARCH64_PAUTH_BUILTIN_AUTIA1716,
    AARCH64_PAUTH_BUILTIN_PACIA1716,
*************** static aarch64_fcmla_laneq_builtin_datum
*** 642,647 ****
--- 808,830 ----
    AARCH64_SIMD_FCMLA_LANEQ_BUILTINS
  };
  
+ #undef VREINTERPRET_BUILTIN
+ #define VREINTERPRET_BUILTIN(A, B, L) \
+   {"vreinterpret" SIMD_INTR_LENGTH_CHAR(L) "_" #A "_" #B, \
+    AARCH64_SIMD_BUILTIN_VREINTERPRET##L##_##A##_##B, \
+    2, \
+    { SIMD_INTR_MODE(A, L), SIMD_INTR_MODE(B, L) }, \
+    { SIMD_INTR_QUAL(A), SIMD_INTR_QUAL(B) }, \
+    FLAG_AUTO_FP, \
+    SIMD_INTR_MODE(A, L) == SIMD_INTR_MODE(B, L) \
+      && SIMD_INTR_QUAL(A) == SIMD_INTR_QUAL(B) \
+   },
+ 
+ static const aarch64_simd_intrinsic_datum aarch64_simd_intrinsic_data[] = {
+   AARCH64_SIMD_VREINTERPRET_BUILTINS
+ };
+ 
+ 
  #undef CRC32_BUILTIN
  
  static GTY(()) tree aarch64_builtin_decls[AARCH64_BUILTIN_MAX];
*************** tree aarch64_fp16_type_node = NULL_TREE;
*** 735,741 ****
  tree aarch64_fp16_ptr_type_node = NULL_TREE;
  
  /* Back-end node type for brain float (bfloat) types.  */
- tree aarch64_bf16_type_node = NULL_TREE;
  tree aarch64_bf16_ptr_type_node = NULL_TREE;
  
  /* Wrapper around add_builtin_function.  NAME is the name of the built-in
--- 918,923 ----
*************** aarch64_general_mangle_builtin_type (con
*** 795,806 ****
    return NULL;
  }
  
  static tree
! aarch64_simd_builtin_std_type (machine_mode mode,
! 			       enum aarch64_type_qualifiers q)
  {
! #define QUAL_TYPE(M)  \
!   ((q == qualifier_none) ? int##M##_type_node : unsigned_int##M##_type_node);
    switch (mode)
      {
      case E_QImode:
--- 977,989 ----
    return NULL;
  }
  
+ /* Helper function for aarch64_simd_builtin_type.  */
  static tree
! aarch64_int_or_fp_type (machine_mode mode,
! 			enum aarch64_type_qualifiers qualifiers)
  {
! #define QUAL_TYPE(M) ((qualifiers & qualifier_unsigned) \
! 		       ? unsigned_int##M##_type_node : int##M##_type_node);
    switch (mode)
      {
      case E_QImode:
*************** aarch64_simd_builtin_std_type (machine_m
*** 826,848 ****
      case E_DFmode:
        return double_type_node;
      case E_BFmode:
!       return aarch64_bf16_type_node;
      default:
        gcc_unreachable ();
      }
  #undef QUAL_TYPE
  }
  
  static tree
! aarch64_lookup_simd_builtin_type (machine_mode mode,
! 				  enum aarch64_type_qualifiers q)
  {
    int i;
!   int nelts = sizeof (aarch64_simd_types) / sizeof (aarch64_simd_types[0]);
! 
!   /* Non-poly scalar modes map to standard types not in the table.  */
!   if (q != qualifier_poly && !VECTOR_MODE_P (mode))
!     return aarch64_simd_builtin_std_type (mode, q);
  
    for (i = 0; i < nelts; i++)
      {
--- 1009,1029 ----
      case E_DFmode:
        return double_type_node;
      case E_BFmode:
!       return bfloat16_type_node;
      default:
        gcc_unreachable ();
      }
  #undef QUAL_TYPE
  }
  
+ /* Helper function for aarch64_simd_builtin_type.  */
  static tree
! aarch64_lookup_simd_type_in_table (machine_mode mode,
! 				   enum aarch64_type_qualifiers qualifiers)
  {
    int i;
!   int nelts = ARRAY_SIZE (aarch64_simd_types);
!   int q = qualifiers & (qualifier_poly | qualifier_unsigned);
  
    for (i = 0; i < nelts; i++)
      {
*************** aarch64_lookup_simd_builtin_type (machin
*** 859,881 ****
    return NULL_TREE;
  }
  
  static tree
  aarch64_simd_builtin_type (machine_mode mode,
! 			   bool unsigned_p, bool poly_p)
  {
!   if (poly_p)
!     return aarch64_lookup_simd_builtin_type (mode, qualifier_poly);
!   else if (unsigned_p)
!     return aarch64_lookup_simd_builtin_type (mode, qualifier_unsigned);
    else
!     return aarch64_lookup_simd_builtin_type (mode, qualifier_none);
  }
   
  static void
  aarch64_init_simd_builtin_types (void)
  {
    int i;
!   int nelts = sizeof (aarch64_simd_types) / sizeof (aarch64_simd_types[0]);
    tree tdecl;
  
    /* Init all the element types built by the front-end.  */
--- 1040,1078 ----
    return NULL_TREE;
  }
  
+ /* Return a type for an operand with specified mode and qualifiers.  */
  static tree
  aarch64_simd_builtin_type (machine_mode mode,
! 			   enum aarch64_type_qualifiers qualifiers)
  {
!   tree type = NULL_TREE;
! 
!   /* For pointers, we want a pointer to the basic type of the vector.  */
!   if ((qualifiers & qualifier_pointer) && VECTOR_MODE_P (mode))
!     mode = GET_MODE_INNER (mode);
! 
!   /* Non-poly scalar modes map to standard types not in the table.  */
!   if ((qualifiers & qualifier_poly) || VECTOR_MODE_P (mode))
!     type = aarch64_lookup_simd_type_in_table (mode, qualifiers);
    else
!     type = aarch64_int_or_fp_type (mode, qualifiers);
! 
!   gcc_assert (type != NULL_TREE);
! 
!   /* Add qualifiers.  */
!   if (qualifiers & qualifier_const)
!     type = build_qualified_type (type, TYPE_QUAL_CONST);
!   if (qualifiers & qualifier_pointer)
!     type = build_pointer_type (type);
! 
!   return type;
  }
   
  static void
  aarch64_init_simd_builtin_types (void)
  {
    int i;
!   int nelts = ARRAY_SIZE (aarch64_simd_types);
    tree tdecl;
  
    /* Init all the element types built by the front-end.  */
*************** aarch64_init_simd_builtin_types (void)
*** 926,933 ****
    aarch64_simd_types[Float64x2_t].eltype = double_type_node;
  
    /* Init Bfloat vector types with underlying __bf16 type.  */
!   aarch64_simd_types[Bfloat16x4_t].eltype = aarch64_bf16_type_node;
!   aarch64_simd_types[Bfloat16x8_t].eltype = aarch64_bf16_type_node;
  
    for (i = 0; i < nelts; i++)
      {
--- 1123,1130 ----
    aarch64_simd_types[Float64x2_t].eltype = double_type_node;
  
    /* Init Bfloat vector types with underlying __bf16 type.  */
!   aarch64_simd_types[Bfloat16x4_t].eltype = bfloat16_type_node;
!   aarch64_simd_types[Bfloat16x8_t].eltype = bfloat16_type_node;
  
    for (i = 0; i < nelts; i++)
      {
*************** aarch64_init_simd_builtin_scalar_types (
*** 999,1005 ****
  					     "__builtin_aarch64_simd_poly128");
    (*lang_hooks.types.register_builtin_type) (intTI_type_node,
  					     "__builtin_aarch64_simd_ti");
!   (*lang_hooks.types.register_builtin_type) (aarch64_bf16_type_node,
  					     "__builtin_aarch64_simd_bf");
    /* Unsigned integer types for various mode sizes.  */
    (*lang_hooks.types.register_builtin_type) (unsigned_intQI_type_node,
--- 1196,1202 ----
  					     "__builtin_aarch64_simd_poly128");
    (*lang_hooks.types.register_builtin_type) (intTI_type_node,
  					     "__builtin_aarch64_simd_ti");
!   (*lang_hooks.types.register_builtin_type) (bfloat16_type_node,
  					     "__builtin_aarch64_simd_bf");
    /* Unsigned integer types for various mode sizes.  */
    (*lang_hooks.types.register_builtin_type) (unsigned_intQI_type_node,
*************** aarch64_get_attributes (unsigned int f,
*** 1102,1109 ****
    return aarch64_add_attribute ("leaf", attrs);
  }
  
- static bool aarch64_simd_builtins_initialized_p = false;
- 
  /* Due to the architecture not providing lane variant of the lane instructions
     for fcmla we can't use the standard simd builtin expansion code, but we
     still want the majority of the validation that would normally be done.  */
--- 1299,1304 ----
*************** aarch64_init_fcmla_laneq_builtins (void)
*** 1117,1128 ****
      {
        aarch64_fcmla_laneq_builtin_datum* d
  	= &aarch64_fcmla_lane_builtin_data[i];
!       tree argtype = aarch64_lookup_simd_builtin_type (d->mode, qualifier_none);
        machine_mode quadmode = GET_MODE_2XWIDER_MODE (d->mode).require ();
!       tree quadtype
! 	= aarch64_lookup_simd_builtin_type (quadmode, qualifier_none);
        tree lanetype
! 	= aarch64_simd_builtin_std_type (SImode, qualifier_lane_pair_index);
        tree ftype = build_function_type_list (argtype, argtype, argtype,
  					     quadtype, lanetype, NULL_TREE);
        tree attrs = aarch64_get_attributes (FLAG_FP, d->mode);
--- 1312,1322 ----
      {
        aarch64_fcmla_laneq_builtin_datum* d
  	= &aarch64_fcmla_lane_builtin_data[i];
!       tree argtype = aarch64_simd_builtin_type (d->mode, qualifier_none);
        machine_mode quadmode = GET_MODE_2XWIDER_MODE (d->mode).require ();
!       tree quadtype = aarch64_simd_builtin_type (quadmode, qualifier_none);
        tree lanetype
! 	= aarch64_simd_builtin_type (SImode, qualifier_lane_pair_index);
        tree ftype = build_function_type_list (argtype, argtype, argtype,
  					     quadtype, lanetype, NULL_TREE);
        tree attrs = aarch64_get_attributes (FLAG_FP, d->mode);
*************** aarch64_init_fcmla_laneq_builtins (void)
*** 1134,1139 ****
--- 1328,1371 ----
  }
  
  void
+ aarch64_init_simd_intrinsics (void)
+ {
+   unsigned int i = 0;
+ 
+   for (i = 0; i < ARRAY_SIZE (aarch64_simd_intrinsic_data); ++i)
+     {
+       auto d = &aarch64_simd_intrinsic_data[i];
+ 
+       if (d->skip)
+ 	continue;
+ 
+       tree return_type = void_type_node;
+       tree args = void_list_node;
+ 
+       for (int op_num = d->op_count - 1; op_num >= 0; op_num--)
+ 	{
+ 	  machine_mode op_mode = d->op_modes[op_num];
+ 	  enum aarch64_type_qualifiers qualifiers = d->qualifiers[op_num];
+ 
+ 	  tree eltype = aarch64_simd_builtin_type (op_mode, qualifiers);
+ 
+ 	  if (op_num == 0)
+ 	    return_type = eltype;
+ 	  else
+ 	    args = tree_cons (NULL_TREE, eltype, args);
+ 	}
+ 
+       tree ftype = build_function_type (return_type, args);
+       tree attrs = aarch64_get_attributes (FLAG_AUTO_FP, d->op_modes[0]);
+       unsigned int code
+ 	      = (d->fcode << AARCH64_BUILTIN_SHIFT | AARCH64_BUILTIN_GENERAL);
+       tree fndecl = simulate_builtin_function_decl (input_location, d->name,
+ 						    ftype, code, NULL, attrs);
+       aarch64_builtin_decls[d->fcode] = fndecl;
+     }
+ }
+ 
+ void
  aarch64_init_simd_builtin_functions (bool called_from_pragma)
  {
    unsigned int i, fcode = AARCH64_SIMD_PATTERN_START;
*************** aarch64_init_simd_builtin_functions (boo
*** 1212,1243 ****
  	  else
  	    type_signature[op_num] = 's';
  
- 	  /* Skip an internal operand for vget_{low, high}.  */
- 	  if (qualifiers & qualifier_internal)
- 	    continue;
- 
  	  /* Some builtins have different user-facing types
  	     for certain arguments, encoded in d->mode.  */
  	  if (qualifiers & qualifier_map_mode)
  	      op_mode = d->mode;
  
! 	  /* For pointers, we want a pointer to the basic type
! 	     of the vector.  */
! 	  if (qualifiers & qualifier_pointer && VECTOR_MODE_P (op_mode))
! 	    op_mode = GET_MODE_INNER (op_mode);
! 
! 	  eltype = aarch64_simd_builtin_type
! 		     (op_mode,
! 		      (qualifiers & qualifier_unsigned) != 0,
! 		      (qualifiers & qualifier_poly) != 0);
! 	  gcc_assert (eltype != NULL);
! 
! 	  /* Add qualifiers.  */
! 	  if (qualifiers & qualifier_const)
! 	    eltype = build_qualified_type (eltype, TYPE_QUAL_CONST);
! 
! 	  if (qualifiers & qualifier_pointer)
! 	      eltype = build_pointer_type (eltype);
  
  	  /* If we have reached arg_num == 0, we are at a non-void
  	     return type.  Otherwise, we are still processing
--- 1444,1455 ----
  	  else
  	    type_signature[op_num] = 's';
  
  	  /* Some builtins have different user-facing types
  	     for certain arguments, encoded in d->mode.  */
  	  if (qualifiers & qualifier_map_mode)
  	      op_mode = d->mode;
  
! 	  eltype = aarch64_simd_builtin_type (op_mode, qualifiers);
  
  	  /* If we have reached arg_num == 0, we are at a non-void
  	     return type.  Otherwise, we are still processing
*************** aarch64_scalar_builtin_type_p (aarch64_s
*** 1336,1358 ****
  /* Enable AARCH64_FL_* flags EXTRA_FLAGS on top of the base Advanced SIMD
     set.  */
  aarch64_simd_switcher::aarch64_simd_switcher (unsigned int extra_flags)
!   : m_old_isa_flags (aarch64_isa_flags),
      m_old_general_regs_only (TARGET_GENERAL_REGS_ONLY)
  {
    /* Changing the ISA flags should be enough here.  We shouldn't need to
       pay the compile-time cost of a full target switch.  */
-   aarch64_isa_flags = AARCH64_FL_FP | AARCH64_FL_SIMD | extra_flags;
    global_options.x_target_flags &= ~MASK_GENERAL_REGS_ONLY;
  }
  
  aarch64_simd_switcher::~aarch64_simd_switcher ()
  {
    if (m_old_general_regs_only)
      global_options.x_target_flags |= MASK_GENERAL_REGS_ONLY;
!   aarch64_isa_flags = m_old_isa_flags;
  }
  
! /* Implement #pragma GCC aarch64 "arm_neon.h".  */
  void
  handle_arm_neon_h (void)
  {
--- 1548,1573 ----
  /* Enable AARCH64_FL_* flags EXTRA_FLAGS on top of the base Advanced SIMD
     set.  */
  aarch64_simd_switcher::aarch64_simd_switcher (unsigned int extra_flags)
!   : m_old_asm_isa_flags (aarch64_asm_isa_flags),
      m_old_general_regs_only (TARGET_GENERAL_REGS_ONLY)
  {
    /* Changing the ISA flags should be enough here.  We shouldn't need to
       pay the compile-time cost of a full target switch.  */
    global_options.x_target_flags &= ~MASK_GENERAL_REGS_ONLY;
+   aarch64_set_asm_isa_flags (AARCH64_FL_FP | AARCH64_FL_SIMD | extra_flags);
  }
  
  aarch64_simd_switcher::~aarch64_simd_switcher ()
  {
    if (m_old_general_regs_only)
      global_options.x_target_flags |= MASK_GENERAL_REGS_ONLY;
!   aarch64_set_asm_isa_flags (m_old_asm_isa_flags);
  }
  
! /* Implement #pragma GCC aarch64 "arm_neon.h".
! 
!    The types and functions defined here need to be available internally
!    during LTO as well.  */
  void
  handle_arm_neon_h (void)
  {
*************** handle_arm_neon_h (void)
*** 1365,1380 ****
  	register_tuple_type (count, i);
  
    aarch64_init_simd_builtin_functions (true);
  }
  
! void
  aarch64_init_simd_builtins (void)
  {
-   if (aarch64_simd_builtins_initialized_p)
-     return;
- 
-   aarch64_simd_builtins_initialized_p = true;
- 
    aarch64_init_simd_builtin_types ();
  
    /* Strong-typing hasn't been implemented for all AdvSIMD builtin intrinsics.
--- 1580,1591 ----
  	register_tuple_type (count, i);
  
    aarch64_init_simd_builtin_functions (true);
+   aarch64_init_simd_intrinsics ();
  }
  
! static void
  aarch64_init_simd_builtins (void)
  {
    aarch64_init_simd_builtin_types ();
  
    /* Strong-typing hasn't been implemented for all AdvSIMD builtin intrinsics.
*************** aarch64_init_simd_builtins (void)
*** 1394,1407 ****
  static void
  aarch64_init_crc32_builtins ()
  {
!   tree usi_type = aarch64_simd_builtin_std_type (SImode, qualifier_unsigned);
    unsigned int i = 0;
  
    for (i = 0; i < ARRAY_SIZE (aarch64_crc_builtin_data); ++i)
      {
        aarch64_crc_builtin_datum* d = &aarch64_crc_builtin_data[i];
!       tree argtype = aarch64_simd_builtin_std_type (d->mode,
! 						    qualifier_unsigned);
        tree ftype = build_function_type_list (usi_type, usi_type, argtype, NULL_TREE);
        tree attrs = aarch64_get_attributes (FLAG_NONE, d->mode);
        tree fndecl
--- 1605,1617 ----
  static void
  aarch64_init_crc32_builtins ()
  {
!   tree usi_type = aarch64_simd_builtin_type (SImode, qualifier_unsigned);
    unsigned int i = 0;
  
    for (i = 0; i < ARRAY_SIZE (aarch64_crc_builtin_data); ++i)
      {
        aarch64_crc_builtin_datum* d = &aarch64_crc_builtin_data[i];
!       tree argtype = aarch64_simd_builtin_type (d->mode, qualifier_unsigned);
        tree ftype = build_function_type_list (usi_type, usi_type, argtype, NULL_TREE);
        tree attrs = aarch64_get_attributes (FLAG_NONE, d->mode);
        tree fndecl
*************** aarch64_init_builtin_rsqrt (void)
*** 1440,1446 ****
    };
  
    builtin_decls_data *bdd = bdda;
!   builtin_decls_data *bdd_end = bdd + (sizeof (bdda) / sizeof (builtin_decls_data));
  
    for (; bdd < bdd_end; bdd++)
    {
--- 1650,1656 ----
    };
  
    builtin_decls_data *bdd = bdda;
!   builtin_decls_data *bdd_end = bdd + (ARRAY_SIZE (bdda));
  
    for (; bdd < bdd_end; bdd++)
    {
*************** aarch64_init_fp16_types (void)
*** 1471,1483 ****
  static void
  aarch64_init_bf16_types (void)
  {
!   aarch64_bf16_type_node = make_node (REAL_TYPE);
!   TYPE_PRECISION (aarch64_bf16_type_node) = 16;
!   SET_TYPE_MODE (aarch64_bf16_type_node, BFmode);
!   layout_type (aarch64_bf16_type_node);
! 
!   lang_hooks.types.register_builtin_type (aarch64_bf16_type_node, "__bf16");
!   aarch64_bf16_ptr_type_node = build_pointer_type (aarch64_bf16_type_node);
  }
  
  /* Pointer authentication builtins that will become NOP on legacy platform.
--- 1681,1688 ----
  static void
  aarch64_init_bf16_types (void)
  {
!   lang_hooks.types.register_builtin_type (bfloat16_type_node, "__bf16");
!   aarch64_bf16_ptr_type_node = build_pointer_type (bfloat16_type_node);
  }
  
  /* Pointer authentication builtins that will become NOP on legacy platform.
*************** static rtx
*** 2437,2443 ****
  aarch64_expand_builtin_data_intrinsic (unsigned int fcode, tree exp, rtx target)
  {
    expand_operand ops[2];
!   machine_mode mode = GET_MODE (target);
    create_output_operand (&ops[0], target, mode);
    create_input_operand (&ops[1], expand_normal (CALL_EXPR_ARG (exp, 0)), mode);
    enum insn_code icode;
--- 2642,2648 ----
  aarch64_expand_builtin_data_intrinsic (unsigned int fcode, tree exp, rtx target)
  {
    expand_operand ops[2];
!   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
    create_output_operand (&ops[0], target, mode);
    create_input_operand (&ops[1], expand_normal (CALL_EXPR_ARG (exp, 0)), mode);
    enum insn_code icode;
*************** aarch64_general_expand_builtin (unsigned
*** 2626,2746 ****
    gcc_unreachable ();
  }
  
- tree
- aarch64_builtin_vectorized_function (unsigned int fn, tree type_out,
- 				     tree type_in)
- {
-   machine_mode in_mode, out_mode;
- 
-   if (TREE_CODE (type_out) != VECTOR_TYPE
-       || TREE_CODE (type_in) != VECTOR_TYPE)
-     return NULL_TREE;
- 
-   out_mode = TYPE_MODE (type_out);
-   in_mode = TYPE_MODE (type_in);
- 
- #undef AARCH64_CHECK_BUILTIN_MODE
- #define AARCH64_CHECK_BUILTIN_MODE(C, N) 1
- #define AARCH64_FIND_FRINT_VARIANT(N) \
-   (AARCH64_CHECK_BUILTIN_MODE (2, D) \
-     ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v2df] \
-     : (AARCH64_CHECK_BUILTIN_MODE (4, S) \
- 	? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v4sf] \
- 	: (AARCH64_CHECK_BUILTIN_MODE (2, S) \
- 	   ? aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_##N##v2sf] \
- 	   : NULL_TREE)))
-   switch (fn)
-     {
- #undef AARCH64_CHECK_BUILTIN_MODE
- #define AARCH64_CHECK_BUILTIN_MODE(C, N) \
-   (out_mode == V##C##N##Fmode && in_mode == V##C##N##Fmode)
-     CASE_CFN_FLOOR:
-       return AARCH64_FIND_FRINT_VARIANT (floor);
-     CASE_CFN_CEIL:
-       return AARCH64_FIND_FRINT_VARIANT (ceil);
-     CASE_CFN_TRUNC:
-       return AARCH64_FIND_FRINT_VARIANT (btrunc);
-     CASE_CFN_ROUND:
-       return AARCH64_FIND_FRINT_VARIANT (round);
-     CASE_CFN_NEARBYINT:
-       return AARCH64_FIND_FRINT_VARIANT (nearbyint);
-     CASE_CFN_SQRT:
-       return AARCH64_FIND_FRINT_VARIANT (sqrt);
- #undef AARCH64_CHECK_BUILTIN_MODE
- #define AARCH64_CHECK_BUILTIN_MODE(C, N) \
-   (out_mode == V##C##SImode && in_mode == V##C##N##Imode)
-     CASE_CFN_CLZ:
-       {
- 	if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- 	  return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_clzv4si];
- 	return NULL_TREE;
-       }
-     CASE_CFN_CTZ:
-       {
- 	if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- 	  return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_ctzv2si];
- 	else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- 	  return aarch64_builtin_decls[AARCH64_SIMD_BUILTIN_UNOP_ctzv4si];
- 	return NULL_TREE;
-       }
- #undef AARCH64_CHECK_BUILTIN_MODE
- #define AARCH64_CHECK_BUILTIN_MODE(C, N) \
-   (out_mode == V##C##N##Imode && in_mode == V##C##N##Fmode)
-     CASE_CFN_IFLOOR:
-     CASE_CFN_LFLOOR:
-     CASE_CFN_LLFLOOR:
-       {
- 	enum aarch64_builtins builtin;
- 	if (AARCH64_CHECK_BUILTIN_MODE (2, D))
- 	  builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv2dfv2di;
- 	else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- 	  builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv4sfv4si;
- 	else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- 	  builtin = AARCH64_SIMD_BUILTIN_UNOP_lfloorv2sfv2si;
- 	else
- 	  return NULL_TREE;
- 
- 	return aarch64_builtin_decls[builtin];
-       }
-     CASE_CFN_ICEIL:
-     CASE_CFN_LCEIL:
-     CASE_CFN_LLCEIL:
-       {
- 	enum aarch64_builtins builtin;
- 	if (AARCH64_CHECK_BUILTIN_MODE (2, D))
- 	  builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv2dfv2di;
- 	else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- 	  builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv4sfv4si;
- 	else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- 	  builtin = AARCH64_SIMD_BUILTIN_UNOP_lceilv2sfv2si;
- 	else
- 	  return NULL_TREE;
- 
- 	return aarch64_builtin_decls[builtin];
-       }
-     CASE_CFN_IROUND:
-     CASE_CFN_LROUND:
-     CASE_CFN_LLROUND:
-       {
- 	enum aarch64_builtins builtin;
- 	if (AARCH64_CHECK_BUILTIN_MODE (2, D))
- 	  builtin =	AARCH64_SIMD_BUILTIN_UNOP_lroundv2dfv2di;
- 	else if (AARCH64_CHECK_BUILTIN_MODE (4, S))
- 	  builtin =	AARCH64_SIMD_BUILTIN_UNOP_lroundv4sfv4si;
- 	else if (AARCH64_CHECK_BUILTIN_MODE (2, S))
- 	  builtin =	AARCH64_SIMD_BUILTIN_UNOP_lroundv2sfv2si;
- 	else
- 	  return NULL_TREE;
- 
- 	return aarch64_builtin_decls[builtin];
-       }
-     default:
-       return NULL_TREE;
-     }
- 
-   return NULL_TREE;
- }
- 
  /* Return builtin for reciprocal square root.  */
  
  tree
--- 2831,2836 ----
*************** aarch64_fold_builtin_lane_check (tree ar
*** 2780,2785 ****
--- 2870,2880 ----
  #define VAR1(T, N, MAP, FLAG, A) \
    case AARCH64_SIMD_BUILTIN_##T##_##N##A:
  
+ #undef VREINTERPRET_BUILTIN
+ #define VREINTERPRET_BUILTIN(A, B, L) \
+   case AARCH64_SIMD_BUILTIN_VREINTERPRET##L##_##A##_##B:
+ 
+ 
  /* Try to fold a call to the built-in function with subcode FCODE.  The
     function is passed the N_ARGS arguments in ARGS and it returns a value
     of type TYPE.  Return the new expression on success and NULL_TREE on
*************** aarch64_general_fold_builtin (unsigned i
*** 2796,2801 ****
--- 2891,2898 ----
        VAR1 (UNOP, floatv4si, 2, ALL, v4sf)
        VAR1 (UNOP, floatv2di, 2, ALL, v2df)
  	return fold_build1 (FLOAT_EXPR, type, args[0]);
+       AARCH64_SIMD_VREINTERPRET_BUILTINS
+ 	return fold_build1 (VIEW_CONVERT_EXPR, type, args[0]);
        case AARCH64_SIMD_BUILTIN_LANE_CHECK:
  	gcc_assert (n_args == 3);
  	if (aarch64_fold_builtin_lane_check (args[0], args[1], args[2]))
*************** get_mem_type_for_load_store (unsigned in
*** 2897,2902 ****
--- 2994,3012 ----
    }
  }
  
+ /* We've seen a vector load from address ADDR.  Record it in
+    vector_load_decls, if appropriate.  */
+ static void
+ aarch64_record_vector_load_arg (tree addr)
+ {
+   tree decl = aarch64_vector_load_decl (addr);
+   if (!decl)
+     return;
+   if (!cfun->machine->vector_load_decls)
+     cfun->machine->vector_load_decls = hash_set<tree>::create_ggc (31);
+   cfun->machine->vector_load_decls->add (decl);
+ }
+ 
  /* Try to fold STMT, given that it's a call to the built-in function with
     subcode FCODE.  Return the new statement on success and null on
     failure.  */
*************** aarch64_general_gimple_fold_builtin (uns
*** 2928,2937 ****
--- 3038,3074 ----
  	gimple_call_set_lhs (new_stmt, gimple_call_lhs (stmt));
  	break;
  
+      BUILTIN_VDC (BINOP, combine, 0, AUTO_FP)
+      BUILTIN_VD_I (BINOPU, combine, 0, NONE)
+      BUILTIN_VDC_P (BINOPP, combine, 0, NONE)
+ 	{
+ 	  tree first_part, second_part;
+ 	  if (BYTES_BIG_ENDIAN)
+ 	    {
+ 	      second_part = args[0];
+ 	      first_part = args[1];
+ 	    }
+ 	  else
+ 	    {
+ 	      first_part = args[0];
+ 	      second_part = args[1];
+ 	    }
+ 	  tree ret_type = gimple_call_return_type (stmt);
+ 	  tree ctor = build_constructor_va (ret_type, 2, NULL_TREE, first_part,
+ 					    NULL_TREE, second_part);
+ 	  new_stmt = gimple_build_assign (gimple_call_lhs (stmt), ctor);
+ 	}
+ 	break;
+ 
       /*lower store and load neon builtins to gimple.  */
       BUILTIN_VALL_F16 (LOAD1, ld1, 0, LOAD)
       BUILTIN_VDQ_I (LOAD1_U, ld1, 0, LOAD)
       BUILTIN_VALLP_NO_DI (LOAD1_P, ld1, 0, LOAD)
+ 	/* Punt until after inlining, so that we stand more chance of
+ 	   recording something meaningful in vector_load_decls.  */
+ 	if (!cfun->after_inlining)
+ 	  break;
+ 	aarch64_record_vector_load_arg (args[0]);
  	if (!BYTES_BIG_ENDIAN)
  	  {
  	    enum aarch64_simd_type mem_type
*************** aarch64_general_gimple_fold_builtin (uns
*** 2950,2955 ****
--- 3087,3094 ----
  				     fold_build2 (MEM_REF,
  						  access_type,
  						  args[0], zero));
+ 	    gimple_set_vuse (new_stmt, gimple_vuse (stmt));
+ 	    gimple_set_vdef (new_stmt, gimple_vdef (stmt));
  	  }
  	break;
  
*************** aarch64_general_gimple_fold_builtin (uns
*** 2973,2978 ****
--- 3112,3119 ----
  	      = gimple_build_assign (fold_build2 (MEM_REF, access_type,
  						  args[0], zero),
  				     args[1]);
+ 	    gimple_set_vuse (new_stmt, gimple_vuse (stmt));
+ 	    gimple_set_vdef (new_stmt, gimple_vdef (stmt));
  	  }
  	break;
  
*************** aarch64_general_gimple_fold_builtin (uns
*** 3093,3098 ****
--- 3234,3249 ----
      default:
        break;
      }
+ 
+   /* GIMPLE assign statements (unlike calls) require a non-null lhs. If we
+      created an assign statement with a null lhs, then fix this by assigning
+      to a new (and subsequently unused) variable. */
+   if (new_stmt && is_gimple_assign (new_stmt) && !gimple_assign_lhs (new_stmt))
+     {
+       tree new_lhs = make_ssa_name (gimple_call_return_type (stmt));
+       gimple_assign_set_lhs (new_stmt, new_lhs);
+     }
+ 
    return new_stmt;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-c.cc gcc-13.1.0/gcc/config/aarch64/aarch64-c.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target-specific code for C family languages.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Target-specific code for C family languages.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** aarch64_define_unconditional_macros (cpp
*** 64,70 ****
    builtin_define ("__ARM_ARCH_8A");
  
    builtin_define_with_int_value ("__ARM_ARCH_PROFILE",
!       AARCH64_ISA_V8_R ? 'R' : 'A');
    builtin_define ("__ARM_FEATURE_CLZ");
    builtin_define ("__ARM_FEATURE_IDIV");
    builtin_define ("__ARM_FEATURE_UNALIGNED");
--- 64,70 ----
    builtin_define ("__ARM_ARCH_8A");
  
    builtin_define_with_int_value ("__ARM_ARCH_PROFILE",
!       AARCH64_ISA_V8R ? 'R' : 'A');
    builtin_define ("__ARM_FEATURE_CLZ");
    builtin_define ("__ARM_FEATURE_IDIV");
    builtin_define ("__ARM_FEATURE_UNALIGNED");
*************** aarch64_update_cpp_builtins (cpp_reader
*** 82,88 ****
  {
    aarch64_def_or_undef (flag_unsafe_math_optimizations, "__ARM_FP_FAST", pfile);
  
!   builtin_define_with_int_value ("__ARM_ARCH", aarch64_architecture_version);
  
    builtin_define_with_int_value ("__ARM_SIZEOF_MINIMAL_ENUM",
  				 flag_short_enums ? 1 : 4);
--- 82,88 ----
  {
    aarch64_def_or_undef (flag_unsafe_math_optimizations, "__ARM_FP_FAST", pfile);
  
!   builtin_define_with_int_value ("__ARM_ARCH", AARCH64_ISA_V9A ? 9 : 8);
  
    builtin_define_with_int_value ("__ARM_SIZEOF_MINIMAL_ENUM",
  				 flag_short_enums ? 1 : 4);
*************** aarch64_update_cpp_builtins (cpp_reader
*** 92,98 ****
  
    aarch64_def_or_undef (TARGET_FLOAT, "__ARM_FEATURE_FMA", pfile);
  
!   if (TARGET_FLOAT || TARGET_SIMD)
      {
        builtin_define_with_int_value ("__ARM_FP", 0x0E);
        builtin_define ("__ARM_FP16_FORMAT_IEEE");
--- 92,98 ----
  
    aarch64_def_or_undef (TARGET_FLOAT, "__ARM_FEATURE_FMA", pfile);
  
!   if (TARGET_FLOAT)
      {
        builtin_define_with_int_value ("__ARM_FP", 0x0E);
        builtin_define ("__ARM_FP16_FORMAT_IEEE");
*************** aarch64_update_cpp_builtins (cpp_reader
*** 179,200 ****
    aarch64_def_or_undef (TARGET_RNG, "__ARM_FEATURE_RNG", pfile);
    aarch64_def_or_undef (TARGET_MEMTAG, "__ARM_FEATURE_MEMORY_TAGGING", pfile);
  
!   aarch64_def_or_undef (aarch64_bti_enabled (),
  			"__ARM_FEATURE_BTI_DEFAULT", pfile);
  
    cpp_undef (pfile, "__ARM_FEATURE_PAC_DEFAULT");
!   if (aarch64_ra_sign_scope != AARCH64_FUNCTION_NONE)
      {
        int v = 0;
!       if (aarch64_ra_sign_key == AARCH64_KEY_A)
  	v |= 1;
!       if (aarch64_ra_sign_key == AARCH64_KEY_B)
  	v |= 2;
!       if (aarch64_ra_sign_scope == AARCH64_FUNCTION_ALL)
  	v |= 4;
        builtin_define_with_int_value ("__ARM_FEATURE_PAC_DEFAULT", v);
      }
  
    aarch64_def_or_undef (TARGET_I8MM, "__ARM_FEATURE_MATMUL_INT8", pfile);
    aarch64_def_or_undef (TARGET_BF16_SIMD,
  			"__ARM_FEATURE_BF16_VECTOR_ARITHMETIC", pfile);
--- 179,202 ----
    aarch64_def_or_undef (TARGET_RNG, "__ARM_FEATURE_RNG", pfile);
    aarch64_def_or_undef (TARGET_MEMTAG, "__ARM_FEATURE_MEMORY_TAGGING", pfile);
  
!   aarch64_def_or_undef (aarch_bti_enabled (),
  			"__ARM_FEATURE_BTI_DEFAULT", pfile);
  
    cpp_undef (pfile, "__ARM_FEATURE_PAC_DEFAULT");
!   if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE)
      {
        int v = 0;
!       if (aarch_ra_sign_key == AARCH_KEY_A)
  	v |= 1;
!       if (aarch_ra_sign_key == AARCH_KEY_B)
  	v |= 2;
!       if (aarch_ra_sign_scope == AARCH_FUNCTION_ALL)
  	v |= 4;
        builtin_define_with_int_value ("__ARM_FEATURE_PAC_DEFAULT", v);
      }
  
+   aarch64_def_or_undef (TARGET_PAUTH, "__ARM_FEATURE_PAUTH", pfile);
+   aarch64_def_or_undef (TARGET_BTI, "__ARM_FEATURE_BTI", pfile);
    aarch64_def_or_undef (TARGET_I8MM, "__ARM_FEATURE_MATMUL_INT8", pfile);
    aarch64_def_or_undef (TARGET_BF16_SIMD,
  			"__ARM_FEATURE_BF16_VECTOR_ARITHMETIC", pfile);
*************** aarch64_update_cpp_builtins (cpp_reader
*** 202,207 ****
--- 204,210 ----
  			"__ARM_FEATURE_BF16_SCALAR_ARITHMETIC", pfile);
    aarch64_def_or_undef (TARGET_LS64,
  			"__ARM_FEATURE_LS64", pfile);
+   aarch64_def_or_undef (AARCH64_ISA_RCPC, "__ARM_FEATURE_RCPC", pfile);
  
    /* Not for ACLE, but required to keep "float.h" correct if we switch
       target between implementations that do or do not support ARMv8.2-A
*************** aarch64_pragma_target_parse (tree args,
*** 270,288 ****
    if (pop_target)
      aarch64_save_restore_target_globals (pop_target);
  
-   /* Initialize SIMD builtins if we haven't already.
-      Set current_target_pragma to NULL for the duration so that
-      the builtin initialization code doesn't try to tag the functions
-      being built with the attributes specified by any current pragma, thus
-      going into an infinite recursion.  */
-   if (TARGET_SIMD)
-     {
-       tree saved_current_target_pragma = current_target_pragma;
-       current_target_pragma = NULL;
-       aarch64_init_simd_builtins ();
-       current_target_pragma = saved_current_target_pragma;
-     }
- 
    return true;
  }
  
--- 273,278 ----
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-cc-fusion.cc gcc-13.1.0/gcc/config/aarch64/aarch64-cc-fusion.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-cc-fusion.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-cc-fusion.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  // Pass to fuse CC operations with other instructions.
! // Copyright (C) 2021-2022 Free Software Foundation, Inc.
  //
  // This file is part of GCC.
  //
--- 1,5 ----
  // Pass to fuse CC operations with other instructions.
! // Copyright (C) 2021-2023 Free Software Foundation, Inc.
  //
  // This file is part of GCC.
  //
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-cores.def gcc-13.1.0/gcc/config/aarch64/aarch64-cores.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-cores.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-cores.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 29,35 ****
     will be made, represented as an identifier.
     ARCH_IDENT is the architecture implemented by the chip as specified in
     aarch64-arches.def.
!    FLAGS are the bitwise-or of the traits that apply to that core.
     This need not include flags implied by the architecture.
     COSTS is the name of the rtx_costs routine to use.
     IMP is the implementer ID of the CPU vendor.  On a GNU/Linux system it
--- 29,38 ----
     will be made, represented as an identifier.
     ARCH_IDENT is the architecture implemented by the chip as specified in
     aarch64-arches.def.
!    FLAGS is a parentheses-enclosed, comma-separated list of architecture
!    features in the core that are present in addition to the base architecture.
!    The architecture feature names are as per the identifiers in
!    aarch64-option-extensions.def.
     This need not include flags implied by the architecture.
     COSTS is the name of the rtx_costs routine to use.
     IMP is the implementer ID of the CPU vendor.  On a GNU/Linux system it
***************
*** 46,176 ****
  /* ARMv8-A Architecture Processors.  */
  
  /* ARM ('A') cores. */
! AARCH64_CORE("cortex-a34",  cortexa34, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa35, 0x41, 0xd02, -1)
! AARCH64_CORE("cortex-a35",  cortexa35, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa35, 0x41, 0xd04, -1)
! AARCH64_CORE("cortex-a53",  cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa53, 0x41, 0xd03, -1)
! AARCH64_CORE("cortex-a57",  cortexa57, cortexa57, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, 0x41, 0xd07, -1)
! AARCH64_CORE("cortex-a72",  cortexa72, cortexa57, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, 0x41, 0xd08, -1)
! AARCH64_CORE("cortex-a73",  cortexa73, cortexa57, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, 0xd09, -1)
  
  /* Cavium ('C') cores. */
! AARCH64_CORE("thunderx",      thunderx,      thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 0x0a0, -1)
  /* Do not swap around "thunderxt88p1" and "thunderxt88",
     this order is required to handle variant correctly. */
! AARCH64_CORE("thunderxt88p1", thunderxt88p1, thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO,	thunderxt88,  0x43, 0x0a1, 0)
! AARCH64_CORE("thunderxt88",   thunderxt88,   thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderxt88,  0x43, 0x0a1, -1)
  
  /* OcteonTX is the official name for T81/T83. */
! AARCH64_CORE("octeontx",      octeontx,      thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 0x0a0, -1)
! AARCH64_CORE("octeontx81",    octeontxt81,   thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 0x0a2, -1)
! AARCH64_CORE("octeontx83",    octeontxt83,   thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 0x0a3, -1)
  
! AARCH64_CORE("thunderxt81",   thunderxt81,   thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 0x0a2, -1)
! AARCH64_CORE("thunderxt83",   thunderxt83,   thunderx,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, thunderx,  0x43, 0x0a3, -1)
  
  /* Ampere Computing ('\xC0') cores. */
! AARCH64_CORE("ampere1", ampere1, cortexa57, 8_6A, AARCH64_FL_FOR_ARCH8_6, ampere1, 0xC0, 0xac3, -1)
  /* Do not swap around "emag" and "xgene1",
     this order is required to handle variant correctly. */
! AARCH64_CORE("emag",        emag,      xgene1,    8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, emag, 0x50, 0x000, 3)
  
  /* APM ('P') cores. */
! AARCH64_CORE("xgene1",      xgene1,    xgene1,    8A,  AARCH64_FL_FOR_ARCH8, xgene1, 0x50, 0x000, -1)
  
  /* Qualcomm ('Q') cores. */
! AARCH64_CORE("falkor",      falkor,    falkor,    8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, qdf24xx,   0x51, 0xC00, -1)
! AARCH64_CORE("qdf24xx",     qdf24xx,   falkor,    8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO | AARCH64_FL_RDMA, qdf24xx,   0x51, 0xC00, -1)
  
  /* Samsung ('S') cores. */
! AARCH64_CORE("exynos-m1",   exynosm1,  exynosm1,  8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, exynosm1,  0x53, 0x001, -1)
  
  /* HXT ('h') cores. */
! AARCH64_CORE("phecda",      phecda,    falkor,    8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC | AARCH64_FL_CRYPTO, qdf24xx,   0x68, 0x000, -1)
  
  /* ARMv8.1-A Architecture Processors.  */
  
  /* Broadcom ('B') cores. */
! AARCH64_CORE("thunderx2t99p1",  thunderx2t99p1, thunderx2t99, 8_1A,  AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x42, 0x516, -1)
! AARCH64_CORE("vulcan",  vulcan, thunderx2t99, 8_1A,  AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x42, 0x516, -1)
  
  /* Cavium ('C') cores. */
! AARCH64_CORE("thunderx2t99",  thunderx2t99,  thunderx2t99, 8_1A,  AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_CRYPTO, thunderx2t99, 0x43, 0x0af, -1)
  
  /* ARMv8.2-A Architecture Processors.  */
  
  /* ARM ('A') cores. */
! AARCH64_CORE("cortex-a55",  cortexa55, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa53, 0x41, 0xd05, -1)
! AARCH64_CORE("cortex-a75",  cortexa75, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa73, 0x41, 0xd0a, -1)
! AARCH64_CORE("cortex-a76",  cortexa76, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, neoversen1, 0x41, 0xd0b, -1)
! AARCH64_CORE("cortex-a76ae",  cortexa76ae, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, neoversen1, 0x41, 0xd0e, -1)
! AARCH64_CORE("cortex-a77",  cortexa77, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, neoversen1, 0x41, 0xd0d, -1)
! AARCH64_CORE("cortex-a78",  cortexa78, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd41, -1)
! AARCH64_CORE("cortex-a78ae",  cortexa78ae, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd42, -1)
! AARCH64_CORE("cortex-a78c",  cortexa78c, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE | AARCH64_FL_FLAGM | AARCH64_FL_PAUTH, neoversen1, 0x41, 0xd4b, -1)
! AARCH64_CORE("cortex-a65",  cortexa65, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, cortexa73, 0x41, 0xd06, -1)
! AARCH64_CORE("cortex-a65ae",  cortexa65ae, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, cortexa73, 0x41, 0xd43, -1)
! AARCH64_CORE("cortex-x1",  cortexx1, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd44, -1)
! AARCH64_CORE("ares",  ares, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd0c, -1)
! AARCH64_CORE("neoverse-n1",  neoversen1, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_PROFILE, neoversen1, 0x41, 0xd0c, -1)
! AARCH64_CORE("neoverse-e1",  neoversee1, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD | AARCH64_FL_SSBS, cortexa73, 0x41, 0xd4a, -1)
  
  /* Cavium ('C') cores. */
! AARCH64_CORE("octeontx2",      octeontx2,      cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b0, -1)
! AARCH64_CORE("octeontx2t98",   octeontx2t98,   cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b1, -1)
! AARCH64_CORE("octeontx2t96",   octeontx2t96,   cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b2, -1)
  /* Note OcteonTX2 T93 is an alias to OcteonTX2 T96. */
! AARCH64_CORE("octeontx2t93",   octeontx2t93,   cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b2, -1)
! AARCH64_CORE("octeontx2f95",   octeontx2f95,   cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b3, -1)
! AARCH64_CORE("octeontx2f95n",  octeontx2f95n,  cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b4, -1)
! AARCH64_CORE("octeontx2f95mm", octeontx2f95mm, cortexa57, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_PROFILE, cortexa57, 0x43, 0x0b5, -1)
  
  /* Fujitsu ('F') cores. */
! AARCH64_CORE("a64fx", a64fx, a64fx, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_SVE, a64fx, 0x46, 0x001, -1)
  
  /* HiSilicon ('H') cores. */
! AARCH64_CORE("tsv110",  tsv110, tsv110, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_CRYPTO | AARCH64_FL_F16 | AARCH64_FL_AES | AARCH64_FL_SHA2, tsv110,   0x48, 0xd01, -1)
  
  /* ARMv8.3-A Architecture Processors.  */
  
  /* Marvell cores (TX3). */
! AARCH64_CORE("thunderx3t110",  thunderx3t110,  thunderx3t110, 8_3A,  AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_CRYPTO | AARCH64_FL_RCPC | AARCH64_FL_SM4 | AARCH64_FL_SHA3 | AARCH64_FL_F16FML | AARCH64_FL_RCPC8_4, thunderx3t110, 0x43, 0x0b8, 0x0a)
  
  /* ARMv8.4-A Architecture Processors.  */
  
  /* Arm ('A') cores.  */
! AARCH64_CORE("zeus", zeus, cortexa57, 8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_SVE | AARCH64_FL_RCPC | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_F16 | AARCH64_FL_PROFILE | AARCH64_FL_SSBS | AARCH64_FL_RNG, neoversev1, 0x41, 0xd40, -1)
! AARCH64_CORE("neoverse-v1", neoversev1, cortexa57, 8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_SVE | AARCH64_FL_RCPC | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_F16 | AARCH64_FL_PROFILE | AARCH64_FL_SSBS | AARCH64_FL_RNG, neoversev1, 0x41, 0xd40, -1)
! AARCH64_CORE("neoverse-512tvb", neoverse512tvb, cortexa57, 8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_SVE | AARCH64_FL_RCPC | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_F16 | AARCH64_FL_PROFILE | AARCH64_FL_SSBS | AARCH64_FL_RNG, neoverse512tvb, INVALID_IMP, INVALID_CORE, -1)
  
  /* Qualcomm ('Q') cores. */
! AARCH64_CORE("saphira",     saphira,    saphira,    8_4A,  AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_CRYPTO | AARCH64_FL_RCPC, saphira,   0x51, 0xC01, -1)
  
  /* ARMv8-A big.LITTLE implementations.  */
  
! AARCH64_CORE("cortex-a57.cortex-a53",  cortexa57cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa57, 0x41, AARCH64_BIG_LITTLE (0xd07, 0xd03), -1)
! AARCH64_CORE("cortex-a72.cortex-a53",  cortexa72cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa72, 0x41, AARCH64_BIG_LITTLE (0xd08, 0xd03), -1)
! AARCH64_CORE("cortex-a73.cortex-a35",  cortexa73cortexa35, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd09, 0xd04), -1)
! AARCH64_CORE("cortex-a73.cortex-a53",  cortexa73cortexa53, cortexa53, 8A,  AARCH64_FL_FOR_ARCH8 | AARCH64_FL_CRC, cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd09, 0xd03), -1)
  
  /* ARM DynamIQ big.LITTLE configurations.  */
  
! AARCH64_CORE("cortex-a75.cortex-a55",  cortexa75cortexa55, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd0a, 0xd05), -1)
! AARCH64_CORE("cortex-a76.cortex-a55",  cortexa76cortexa55, cortexa53, 8_2A,  AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_F16 | AARCH64_FL_RCPC | AARCH64_FL_DOTPROD, neoversen1, 0x41, AARCH64_BIG_LITTLE (0xd0b, 0xd05), -1)
  
  /* Armv8-R Architecture Processors.  */
! AARCH64_CORE("cortex-r82", cortexr82, cortexa53, 8R, AARCH64_FL_FOR_ARCH8_R, cortexa53, 0x41, 0xd15, -1)
  
  /* Armv9.0-A Architecture Processors.  */
  
  /* Arm ('A') cores. */
! AARCH64_CORE("cortex-a510",  cortexa510, cortexa55, 9A,  AARCH64_FL_FOR_ARCH9 | AARCH64_FL_SVE2_BITPERM | AARCH64_FL_MEMTAG | AARCH64_FL_I8MM | AARCH64_FL_BF16, cortexa53, 0x41, 0xd46, -1)
  
! AARCH64_CORE("cortex-a710",  cortexa710, cortexa57, 9A,  AARCH64_FL_FOR_ARCH9 | AARCH64_FL_SVE2_BITPERM | AARCH64_FL_MEMTAG | AARCH64_FL_I8MM | AARCH64_FL_BF16, neoversen2, 0x41, 0xd47, -1)
  
! AARCH64_CORE("cortex-x2",  cortexx2, cortexa57, 9A,  AARCH64_FL_FOR_ARCH9 | AARCH64_FL_SVE2_BITPERM | AARCH64_FL_MEMTAG | AARCH64_FL_I8MM | AARCH64_FL_BF16, neoversen2, 0x41, 0xd48, -1)
  
! AARCH64_CORE("neoverse-n2", neoversen2, cortexa57, 9A, AARCH64_FL_FOR_ARCH9 | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_SVE2_BITPERM | AARCH64_FL_RNG | AARCH64_FL_MEMTAG | AARCH64_FL_PROFILE, neoversen2, 0x41, 0xd49, -1)
  
! AARCH64_CORE("demeter", demeter, cortexa57, 9A, AARCH64_FL_FOR_ARCH9 | AARCH64_FL_I8MM | AARCH64_FL_BF16 | AARCH64_FL_SVE2_BITPERM | AARCH64_FL_RNG | AARCH64_FL_MEMTAG | AARCH64_FL_PROFILE, demeter, 0x41, 0xd4f, -1)
  
  #undef AARCH64_CORE
--- 49,186 ----
  /* ARMv8-A Architecture Processors.  */
  
  /* ARM ('A') cores. */
! AARCH64_CORE("cortex-a34",  cortexa34, cortexa53, V8A,  (CRC), cortexa35, 0x41, 0xd02, -1)
! AARCH64_CORE("cortex-a35",  cortexa35, cortexa53, V8A,  (CRC), cortexa35, 0x41, 0xd04, -1)
! AARCH64_CORE("cortex-a53",  cortexa53, cortexa53, V8A,  (CRC), cortexa53, 0x41, 0xd03, -1)
! AARCH64_CORE("cortex-a57",  cortexa57, cortexa57, V8A,  (CRC), cortexa57, 0x41, 0xd07, -1)
! AARCH64_CORE("cortex-a72",  cortexa72, cortexa57, V8A,  (CRC), cortexa72, 0x41, 0xd08, -1)
! AARCH64_CORE("cortex-a73",  cortexa73, cortexa57, V8A,  (CRC), cortexa73, 0x41, 0xd09, -1)
  
  /* Cavium ('C') cores. */
! AARCH64_CORE("thunderx",      thunderx,      thunderx,  V8A,  (CRC, CRYPTO), thunderx,  0x43, 0x0a0, -1)
  /* Do not swap around "thunderxt88p1" and "thunderxt88",
     this order is required to handle variant correctly. */
! AARCH64_CORE("thunderxt88p1", thunderxt88p1, thunderx,  V8A,  (CRC, CRYPTO),	thunderxt88,  0x43, 0x0a1, 0)
! AARCH64_CORE("thunderxt88",   thunderxt88,   thunderx,  V8A,  (CRC, CRYPTO), thunderxt88,  0x43, 0x0a1, -1)
  
  /* OcteonTX is the official name for T81/T83. */
! AARCH64_CORE("octeontx",      octeontx,      thunderx,  V8A,  (CRC, CRYPTO), thunderx,  0x43, 0x0a0, -1)
! AARCH64_CORE("octeontx81",    octeontxt81,   thunderx,  V8A,  (CRC, CRYPTO), thunderx,  0x43, 0x0a2, -1)
! AARCH64_CORE("octeontx83",    octeontxt83,   thunderx,  V8A,  (CRC, CRYPTO), thunderx,  0x43, 0x0a3, -1)
  
! AARCH64_CORE("thunderxt81",   thunderxt81,   thunderx,  V8A,  (CRC, CRYPTO), thunderx,  0x43, 0x0a2, -1)
! AARCH64_CORE("thunderxt83",   thunderxt83,   thunderx,  V8A,  (CRC, CRYPTO), thunderx,  0x43, 0x0a3, -1)
  
  /* Ampere Computing ('\xC0') cores. */
! AARCH64_CORE("ampere1", ampere1, cortexa57, V8_6A, (F16, RNG, AES, SHA3), ampere1, 0xC0, 0xac3, -1)
! AARCH64_CORE("ampere1a", ampere1a, cortexa57, V8_6A, (F16, RNG, AES, SHA3, SM4, MEMTAG), ampere1a, 0xC0, 0xac4, -1)
  /* Do not swap around "emag" and "xgene1",
     this order is required to handle variant correctly. */
! AARCH64_CORE("emag",        emag,      xgene1,    V8A,  (CRC, CRYPTO), emag, 0x50, 0x000, 3)
  
  /* APM ('P') cores. */
! AARCH64_CORE("xgene1",      xgene1,    xgene1,    V8A,  (), xgene1, 0x50, 0x000, -1)
  
  /* Qualcomm ('Q') cores. */
! AARCH64_CORE("falkor",      falkor,    falkor,    V8A,  (CRC, CRYPTO, RDMA), qdf24xx,   0x51, 0xC00, -1)
! AARCH64_CORE("qdf24xx",     qdf24xx,   falkor,    V8A,  (CRC, CRYPTO, RDMA), qdf24xx,   0x51, 0xC00, -1)
  
  /* Samsung ('S') cores. */
! AARCH64_CORE("exynos-m1",   exynosm1,  exynosm1,  V8A,  (CRC, CRYPTO), exynosm1,  0x53, 0x001, -1)
  
  /* HXT ('h') cores. */
! AARCH64_CORE("phecda",      phecda,    falkor,    V8A,  (CRC, CRYPTO), qdf24xx,   0x68, 0x000, -1)
  
  /* ARMv8.1-A Architecture Processors.  */
  
  /* Broadcom ('B') cores. */
! AARCH64_CORE("thunderx2t99p1",  thunderx2t99p1, thunderx2t99, V8_1A,  (CRYPTO), thunderx2t99, 0x42, 0x516, -1)
! AARCH64_CORE("vulcan",  vulcan, thunderx2t99, V8_1A,  (CRYPTO), thunderx2t99, 0x42, 0x516, -1)
  
  /* Cavium ('C') cores. */
! AARCH64_CORE("thunderx2t99",  thunderx2t99,  thunderx2t99, V8_1A,  (CRYPTO), thunderx2t99, 0x43, 0x0af, -1)
  
  /* ARMv8.2-A Architecture Processors.  */
  
  /* ARM ('A') cores. */
! AARCH64_CORE("cortex-a55",  cortexa55, cortexa53, V8_2A,  (F16, RCPC, DOTPROD), cortexa53, 0x41, 0xd05, -1)
! AARCH64_CORE("cortex-a75",  cortexa75, cortexa57, V8_2A,  (F16, RCPC, DOTPROD), cortexa73, 0x41, 0xd0a, -1)
! AARCH64_CORE("cortex-a76",  cortexa76, cortexa57, V8_2A,  (F16, RCPC, DOTPROD), neoversen1, 0x41, 0xd0b, -1)
! AARCH64_CORE("cortex-a76ae",  cortexa76ae, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS), neoversen1, 0x41, 0xd0e, -1)
! AARCH64_CORE("cortex-a77",  cortexa77, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS), neoversen1, 0x41, 0xd0d, -1)
! AARCH64_CORE("cortex-a78",  cortexa78, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS, PROFILE), neoversen1, 0x41, 0xd41, -1)
! AARCH64_CORE("cortex-a78ae",  cortexa78ae, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS, PROFILE), neoversen1, 0x41, 0xd42, -1)
! AARCH64_CORE("cortex-a78c",  cortexa78c, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS, PROFILE, FLAGM, PAUTH), neoversen1, 0x41, 0xd4b, -1)
! AARCH64_CORE("cortex-a65",  cortexa65, cortexa53, V8_2A,  (F16, RCPC, DOTPROD, SSBS), cortexa73, 0x41, 0xd06, -1)
! AARCH64_CORE("cortex-a65ae",  cortexa65ae, cortexa53, V8_2A,  (F16, RCPC, DOTPROD, SSBS), cortexa73, 0x41, 0xd43, -1)
! AARCH64_CORE("cortex-x1",  cortexx1, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS, PROFILE), neoversen1, 0x41, 0xd44, -1)
! AARCH64_CORE("cortex-x1c",  cortexx1c, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, SSBS, PROFILE, PAUTH), neoversen1, 0x41, 0xd4c, -1)
! AARCH64_CORE("ares",  ares, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, PROFILE), neoversen1, 0x41, 0xd0c, -1)
! AARCH64_CORE("neoverse-n1",  neoversen1, cortexa57, V8_2A,  (F16, RCPC, DOTPROD, PROFILE), neoversen1, 0x41, 0xd0c, -1)
! AARCH64_CORE("neoverse-e1",  neoversee1, cortexa53, V8_2A,  (F16, RCPC, DOTPROD, SSBS), cortexa73, 0x41, 0xd4a, -1)
  
  /* Cavium ('C') cores. */
! AARCH64_CORE("octeontx2",      octeontx2,      cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b0, -1)
! AARCH64_CORE("octeontx2t98",   octeontx2t98,   cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b1, -1)
! AARCH64_CORE("octeontx2t96",   octeontx2t96,   cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b2, -1)
  /* Note OcteonTX2 T93 is an alias to OcteonTX2 T96. */
! AARCH64_CORE("octeontx2t93",   octeontx2t93,   cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b2, -1)
! AARCH64_CORE("octeontx2f95",   octeontx2f95,   cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b3, -1)
! AARCH64_CORE("octeontx2f95n",  octeontx2f95n,  cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b4, -1)
! AARCH64_CORE("octeontx2f95mm", octeontx2f95mm, cortexa57, V8_2A,  (CRYPTO, PROFILE), cortexa57, 0x43, 0x0b5, -1)
  
  /* Fujitsu ('F') cores. */
! AARCH64_CORE("a64fx", a64fx, a64fx, V8_2A,  (F16, SVE), a64fx, 0x46, 0x001, -1)
  
  /* HiSilicon ('H') cores. */
! AARCH64_CORE("tsv110",  tsv110, tsv110, V8_2A,  (CRYPTO, F16), tsv110,   0x48, 0xd01, -1)
  
  /* ARMv8.3-A Architecture Processors.  */
  
  /* Marvell cores (TX3). */
! AARCH64_CORE("thunderx3t110",  thunderx3t110,  thunderx3t110, V8_3A,  (CRYPTO, SM4, SHA3, F16FML), thunderx3t110, 0x43, 0x0b8, 0x0a)
  
  /* ARMv8.4-A Architecture Processors.  */
  
  /* Arm ('A') cores.  */
! AARCH64_CORE("zeus", zeus, cortexa57, V8_4A,  (SVE, I8MM, BF16, PROFILE, SSBS, RNG), neoversev1, 0x41, 0xd40, -1)
! AARCH64_CORE("neoverse-v1", neoversev1, cortexa57, V8_4A,  (SVE, I8MM, BF16, PROFILE, SSBS, RNG), neoversev1, 0x41, 0xd40, -1)
! AARCH64_CORE("neoverse-512tvb", neoverse512tvb, cortexa57, V8_4A,  (SVE, I8MM, BF16, PROFILE, SSBS, RNG), neoverse512tvb, INVALID_IMP, INVALID_CORE, -1)
  
  /* Qualcomm ('Q') cores. */
! AARCH64_CORE("saphira",     saphira,    saphira,    V8_4A,  (CRYPTO), saphira,   0x51, 0xC01, -1)
  
  /* ARMv8-A big.LITTLE implementations.  */
  
! AARCH64_CORE("cortex-a57.cortex-a53",  cortexa57cortexa53, cortexa53, V8A,  (CRC), cortexa57, 0x41, AARCH64_BIG_LITTLE (0xd07, 0xd03), -1)
! AARCH64_CORE("cortex-a72.cortex-a53",  cortexa72cortexa53, cortexa53, V8A,  (CRC), cortexa72, 0x41, AARCH64_BIG_LITTLE (0xd08, 0xd03), -1)
! AARCH64_CORE("cortex-a73.cortex-a35",  cortexa73cortexa35, cortexa53, V8A,  (CRC), cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd09, 0xd04), -1)
! AARCH64_CORE("cortex-a73.cortex-a53",  cortexa73cortexa53, cortexa53, V8A,  (CRC), cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd09, 0xd03), -1)
  
  /* ARM DynamIQ big.LITTLE configurations.  */
  
! AARCH64_CORE("cortex-a75.cortex-a55",  cortexa75cortexa55, cortexa53, V8_2A,  (F16, RCPC, DOTPROD), cortexa73, 0x41, AARCH64_BIG_LITTLE (0xd0a, 0xd05), -1)
! AARCH64_CORE("cortex-a76.cortex-a55",  cortexa76cortexa55, cortexa53, V8_2A,  (F16, RCPC, DOTPROD), neoversen1, 0x41, AARCH64_BIG_LITTLE (0xd0b, 0xd05), -1)
  
  /* Armv8-R Architecture Processors.  */
! AARCH64_CORE("cortex-r82", cortexr82, cortexa53, V8R, (), cortexa53, 0x41, 0xd15, -1)
  
  /* Armv9.0-A Architecture Processors.  */
  
  /* Arm ('A') cores. */
! AARCH64_CORE("cortex-a510",  cortexa510, cortexa55, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), cortexa53, 0x41, 0xd46, -1)
  
! AARCH64_CORE("cortex-a710",  cortexa710, cortexa57, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd47, -1)
  
! AARCH64_CORE("cortex-a715",  cortexa715, cortexa57, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd4d, -1)
  
! AARCH64_CORE("cortex-x2",  cortexx2, cortexa57, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd48, -1)
  
! AARCH64_CORE("cortex-x3",  cortexx3, cortexa57, V9A,  (SVE2_BITPERM, MEMTAG, I8MM, BF16), neoversen2, 0x41, 0xd4e, -1)
! 
! AARCH64_CORE("neoverse-n2", neoversen2, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, RNG, MEMTAG, PROFILE), neoversen2, 0x41, 0xd49, -1)
! 
! AARCH64_CORE("demeter", demeter, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, RNG, MEMTAG, PROFILE), neoversev2, 0x41, 0xd4f, -1)
! AARCH64_CORE("neoverse-v2", neoversev2, cortexa57, V9A, (I8MM, BF16, SVE2_BITPERM, RNG, MEMTAG, PROFILE), neoversev2, 0x41, 0xd4f, -1)
  
  #undef AARCH64_CORE
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-cost-tables.h gcc-13.1.0/gcc/config/aarch64/aarch64-cost-tables.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-cost-tables.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-cost-tables.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* RTX cost tables for AArch64.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* RTX cost tables for AArch64.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** const struct cpu_cost_table ampere1_extr
*** 710,715 ****
--- 710,822 ----
      }
    },
    /* LD/ST */
+   {
+     COSTS_N_INSNS (4),         /* load.  */
+     COSTS_N_INSNS (4),         /* load_sign_extend.  */
+     0,                         /* ldrd (n/a).  */
+     0,                         /* ldm_1st.  */
+     0,                         /* ldm_regs_per_insn_1st.  */
+     0,                         /* ldm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (5),         /* loadf.  */
+     COSTS_N_INSNS (5),         /* loadd.  */
+     COSTS_N_INSNS (5),         /* load_unaligned.  */
+     0,                         /* store.  */
+     0,                         /* strd.  */
+     0,                         /* stm_1st.  */
+     0,                         /* stm_regs_per_insn_1st.  */
+     0,                         /* stm_regs_per_insn_subsequent.  */
+     COSTS_N_INSNS (2),         /* storef.  */
+     COSTS_N_INSNS (2),         /* stored.  */
+     COSTS_N_INSNS (2),         /* store_unaligned.  */
+     COSTS_N_INSNS (3),         /* loadv.  */
+     COSTS_N_INSNS (3)          /* storev.  */
+   },
+   {
+     /* FP SFmode */
+     {
+       COSTS_N_INSNS (25),      /* div.  */
+       COSTS_N_INSNS (4),       /* mult.  */
+       COSTS_N_INSNS (4),       /* mult_addsub.  */
+       COSTS_N_INSNS (4),       /* fma.  */
+       COSTS_N_INSNS (4),       /* addsub.  */
+       COSTS_N_INSNS (2),       /* fpconst.  */
+       COSTS_N_INSNS (4),       /* neg.  */
+       COSTS_N_INSNS (4),       /* compare.  */
+       COSTS_N_INSNS (4),       /* widen.  */
+       COSTS_N_INSNS (4),       /* narrow.  */
+       COSTS_N_INSNS (4),       /* toint.  */
+       COSTS_N_INSNS (4),       /* fromint.  */
+       COSTS_N_INSNS (4)        /* roundint.  */
+     },
+     /* FP DFmode */
+     {
+       COSTS_N_INSNS (34),      /* div.  */
+       COSTS_N_INSNS (5),       /* mult.  */
+       COSTS_N_INSNS (5),       /* mult_addsub.  */
+       COSTS_N_INSNS (5),       /* fma.  */
+       COSTS_N_INSNS (5),       /* addsub.  */
+       COSTS_N_INSNS (2),       /* fpconst.  */
+       COSTS_N_INSNS (5),       /* neg.  */
+       COSTS_N_INSNS (5),       /* compare.  */
+       COSTS_N_INSNS (5),       /* widen.  */
+       COSTS_N_INSNS (5),       /* narrow.  */
+       COSTS_N_INSNS (6),       /* toint.  */
+       COSTS_N_INSNS (6),       /* fromint.  */
+       COSTS_N_INSNS (5)        /* roundint.  */
+     }
+   },
+   /* Vector */
+   {
+     COSTS_N_INSNS (3),  /* alu.  */
+     COSTS_N_INSNS (3),  /* mult.  */
+     COSTS_N_INSNS (2),  /* movi.  */
+     COSTS_N_INSNS (2),  /* dup.  */
+     COSTS_N_INSNS (2)   /* extract.  */
+   }
+ };
+ 
+ const struct cpu_cost_table ampere1a_extra_costs =
+ {
+   /* ALU */
+   {
+     0,                 /* arith.  */
+     0,                 /* logical.  */
+     0,                 /* shift.  */
+     COSTS_N_INSNS (1), /* shift_reg.  */
+     0,                 /* arith_shift.  */
+     COSTS_N_INSNS (1), /* arith_shift_reg.  */
+     0,                 /* log_shift.  */
+     COSTS_N_INSNS (1), /* log_shift_reg.  */
+     0,                 /* extend.  */
+     COSTS_N_INSNS (1), /* extend_arith.  */
+     0,                 /* bfi.  */
+     0,                 /* bfx.  */
+     0,                 /* clz.  */
+     0,                 /* rev.  */
+     0,                 /* non_exec.  */
+     true               /* non_exec_costs_exec.  */
+   },
+   {
+     /* MULT SImode */
+     {
+       COSTS_N_INSNS (3),       /* simple.  */
+       COSTS_N_INSNS (3),       /* flag_setting.  */
+       COSTS_N_INSNS (3),       /* extend.  */
+       COSTS_N_INSNS (4),       /* add.  */
+       COSTS_N_INSNS (4),       /* extend_add.  */
+       COSTS_N_INSNS (19)       /* idiv.  */
+     },
+     /* MULT DImode */
+     {
+       COSTS_N_INSNS (3),       /* simple.  */
+       0,                       /* flag_setting (N/A).  */
+       COSTS_N_INSNS (3),       /* extend.  */
+       COSTS_N_INSNS (4),       /* add.  */
+       COSTS_N_INSNS (4),       /* extend_add.  */
+       COSTS_N_INSNS (35)       /* idiv.  */
+     }
+   },
+   /* LD/ST */
    {
      COSTS_N_INSNS (4),         /* load.  */
      COSTS_N_INSNS (4),         /* load_sign_extend.  */
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-d.cc gcc-13.1.0/gcc/config/aarch64/aarch64-d.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the AArch64 architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the AArch64 architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 20,25 ****
--- 20,26 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-d.h gcc-13.1.0/gcc/config/aarch64/aarch64-d.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/aarch64/aarch64-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the AArch64 architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Defined in aarch64-d.cc  */
+ extern void aarch64_d_target_versions (void);
+ extern void aarch64_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS aarch64_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO aarch64_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-elf-raw.h gcc-13.1.0/gcc/config/aarch64/aarch64-elf-raw.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-elf-raw.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-elf-raw.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 25,31 ****
  #define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
  #define ENDFILE_SPEC \
    " crtend%O%s crtn%O%s " \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  
  #ifndef LINK_SPEC
  #define LINK_SPEC "%{h*}			\
--- 25,31 ----
  #define STARTFILE_SPEC " crti%O%s crtbegin%O%s crt0%O%s"
  #define ENDFILE_SPEC \
    " crtend%O%s crtn%O%s " \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  
  #ifndef LINK_SPEC
  #define LINK_SPEC "%{h*}			\
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-elf.h gcc-13.1.0/gcc/config/aarch64/aarch64-elf.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** ASM_MABI_SPEC
*** 144,150 ****
  #undef TYPE_OPERAND_FMT
  #define TYPE_OPERAND_FMT	"%%%s"
  
- /* Stabs debug not required.  */
- #undef DBX_DEBUGGING_INFO
- 
  #endif /* GCC_AARCH64_ELF_H */
--- 144,147 ----
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-errata.h gcc-13.1.0/gcc/config/aarch64/aarch64-errata.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-errata.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-errata.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-feature-deps.h gcc-13.1.0/gcc/config/aarch64/aarch64-feature-deps.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-feature-deps.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/aarch64/aarch64-feature-deps.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,121 ----
+ /* Feature dependency helpers for AArch64.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef AARCH64_FEATURE_DEPS_H
+ #define AARCH64_FEATURE_DEPS_H 1
+ 
+ namespace {
+ namespace feature_deps {
+ 
+ /* Together, these definitions of get_flags take a list of
+    feature names (representing functions that are defined below)
+    and return the set of associated flags.  */
+ constexpr aarch64_feature_flags get_flags () { return 0; }
+ 
+ template<typename T1, typename ...Ts>
+ constexpr aarch64_feature_flags
+ get_flags (T1 i, Ts... args)
+ {
+   return i ().flag | get_flags (args...);
+ }
+ 
+ /* Like get_flags, but return the transitive closure of those features
+    and the ones that they rely on.  */
+ constexpr aarch64_feature_flags get_enable () { return 0; }
+ 
+ template<typename T1, typename ...Ts>
+ constexpr aarch64_feature_flags
+ get_enable (T1 i, Ts... args)
+ {
+   return i ().enable | get_enable (args...);
+ }
+ 
+ /* Define info<FEATURE> such that it has the following static constant
+    variables:
+ 
+    - flag: the aarch64_feature_flags bit associated with FEATURE
+ 
+    - enable: the transitive closure of the features that FEATURE requires,
+      plus FLAG itself
+ 
+    - explicit_on: the transitive closure of the features that an
+      explicit +FEATURE enables, including FLAG itself.  This is
+      always a superset of ENABLE
+ 
+    Also define a function FEATURE () that returns an info<FEATURE>
+    (which is an empty structure, since all members are static).
+ 
+    Building up the list feature-by-feature ensures that the definition
+    files are in topological order.  */
+ template<aarch64_feature> struct info;
+ 
+ #define HANDLE(IDENT, REQUIRES, EXPLICIT_ON)				\
+   template<> struct info<aarch64_feature::IDENT> {			\
+     static constexpr auto flag = AARCH64_FL_##IDENT;			\
+     static constexpr auto enable = flag | get_enable REQUIRES;		\
+     static constexpr auto explicit_on = enable | get_enable EXPLICIT_ON; \
+   };									\
+   constexpr info<aarch64_feature::IDENT> IDENT ()			\
+   {									\
+     return info<aarch64_feature::IDENT> ();				\
+   }
+ #define AARCH64_OPT_EXTENSION(A, IDENT, REQUIRES, EXPLICIT_ON, E, F) \
+   HANDLE (IDENT, REQUIRES, EXPLICIT_ON)
+ #define AARCH64_ARCH(A, B, IDENT, D, REQUIRES) HANDLE (IDENT, REQUIRES, ())
+ #include "config/aarch64/aarch64-option-extensions.def"
+ #include "config/aarch64/aarch64-arches.def"
+ #undef HANDLE
+ 
+ /* Return the set of all features that would need to be disabled if
+    the features in MASK are disabled.
+ 
+    Note that the size of the expression varies linearly with the number
+    of features, which means that invoking this function once per feature
+    is quadratic in the number of features.  However, collecting the same
+    information at compiler start-up is likely to be quadratic too, so
+    we're better off paying the cost once per compiler build rather than
+    once per compiler run.  */
+ constexpr aarch64_feature_flags
+ get_flags_off (aarch64_feature_flags mask)
+ {
+   return (0
+ #define AARCH64_OPT_EXTENSION(A, IDENT, C, D, E, F) \
+ 	  | (feature_deps::IDENT ().enable & mask ? AARCH64_FL_##IDENT : 0)
+ #include "config/aarch64/aarch64-option-extensions.def"
+ 	  );
+ }
+ 
+ /* Define root_off_<IDENT> variables for each feature, giving the set of
+    features that must be turned off by +noIDENT.  This set is not transitively
+    closed; use get_flags_off to complete the closure.  */
+ #define AARCH64_OPT_EXTENSION(A, IDENT, C, D, EXPLICIT_OFF, F) \
+   constexpr auto root_off_##IDENT \
+     = AARCH64_FL_##IDENT | get_flags EXPLICIT_OFF;
+ #include "config/aarch64/aarch64-option-extensions.def"
+ 
+ /* Define cpu_<NAME> variables for each CPU, giving the transitive
+    closure of all the features that the CPU supports.  */
+ #define AARCH64_CORE(A, CORE_IDENT, C, ARCH_IDENT, FEATURES, F, G, H, I) \
+   constexpr auto cpu_##CORE_IDENT = ARCH_IDENT ().enable | get_enable FEATURES;
+ #include "config/aarch64/aarch64-cores.def"
+ 
+ }
+ }
+ 
+ #endif
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-freebsd.h gcc-13.1.0/gcc/config/aarch64/aarch64-freebsd.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AArch64 running FreeBSD
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for AArch64 running FreeBSD
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 50,56 ****
  #define LINK_SPEC FBSD_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
  
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
--- 50,56 ----
  #define LINK_SPEC FBSD_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
  
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-fusion-pairs.def gcc-13.1.0/gcc/config/aarch64/aarch64-fusion-pairs.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-fusion-pairs.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-fusion-pairs.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** AARCH64_FUSION_PAIR ("cmp+branch", CMP_B
*** 36,40 ****
--- 36,41 ----
  AARCH64_FUSION_PAIR ("aes+aesmc", AES_AESMC)
  AARCH64_FUSION_PAIR ("alu+branch", ALU_BRANCH)
  AARCH64_FUSION_PAIR ("alu+cbz", ALU_CBZ)
+ AARCH64_FUSION_PAIR ("addsub_2reg_const1", ADDSUB_2REG_CONST1)
  
  #undef AARCH64_FUSION_PAIR
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-ldpstp.md gcc-13.1.0/gcc/config/aarch64/aarch64-ldpstp.md
*** gcc-12.2.0/gcc/config/aarch64/aarch64-ldpstp.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-ldpstp.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; AArch64 ldp/stp peephole optimizations.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; AArch64 ldp/stp peephole optimizations.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 83,90 ****
  	(match_operand:DREG 1 "register_operand" ""))
     (set (match_operand:DREG2 2 "memory_operand" "")
  	(match_operand:DREG2 3 "register_operand" ""))]
!   "TARGET_SIMD
!    && aarch64_operands_ok_for_ldpstp (operands, false, <DREG:MODE>mode)"
    [(parallel [(set (match_dup 0) (match_dup 1))
  	      (set (match_dup 2) (match_dup 3))])]
  {
--- 83,89 ----
  	(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)"
    [(parallel [(set (match_dup 0) (match_dup 1))
  	      (set (match_dup 2) (match_dup 3))])]
  {
***************
*** 96,102 ****
  	(match_operand:VQ 1 "memory_operand" ""))
     (set (match_operand:VQ2 2 "register_operand" "")
  	(match_operand:VQ2 3 "memory_operand" ""))]
!   "TARGET_SIMD
     && aarch64_operands_ok_for_ldpstp (operands, true, <VQ:MODE>mode)
     && (aarch64_tune_params.extra_tuning_flags
  	& AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS) == 0"
--- 95,101 ----
  	(match_operand:VQ 1 "memory_operand" ""))
     (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_tune_params.extra_tuning_flags
  	& AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS) == 0"
***************
*** 111,117 ****
  	(match_operand:VQ 1 "register_operand" ""))
     (set (match_operand:VQ2 2 "memory_operand" "")
  	(match_operand:VQ2 3 "register_operand" ""))]
!   "TARGET_SIMD
     && aarch64_operands_ok_for_ldpstp (operands, false, <VQ:MODE>mode)
     && (aarch64_tune_params.extra_tuning_flags
  	& AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS) == 0"
--- 110,116 ----
  	(match_operand:VQ 1 "register_operand" ""))
     (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_tune_params.extra_tuning_flags
  	& AARCH64_EXTRA_TUNE_NO_LDP_STP_QREGS) == 0"
***************
*** 306,312 ****
     (set (match_operand:VP_2E 6 "memory_operand" "")
          (match_operand:VP_2E 7 "aarch64_reg_or_zero" ""))
     (match_dup 8)]
!   "TARGET_SIMD
     && aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)"
    [(const_int 0)]
  {
--- 305,311 ----
     (set (match_operand:VP_2E 6 "memory_operand" "")
          (match_operand:VP_2E 7 "aarch64_reg_or_zero" ""))
     (match_dup 8)]
!   "TARGET_FLOAT
     && aarch64_operands_adjust_ok_for_ldpstp (operands, false, <MODE>mode)"
    [(const_int 0)]
  {
***************
*** 327,333 ****
     (set (match_operand:VP_2E 6 "register_operand" "")
          (match_operand:VP_2E 7 "memory_operand" ""))
     (match_dup 8)]
!   "TARGET_SIMD
     && aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)"
    [(const_int 0)]
  {
--- 326,332 ----
     (set (match_operand:VP_2E 6 "register_operand" "")
          (match_operand:VP_2E 7 "memory_operand" ""))
     (match_dup 8)]
!   "TARGET_FLOAT
     && aarch64_operands_adjust_ok_for_ldpstp (operands, true, <MODE>mode)"
    [(const_int 0)]
  {
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-linux.h gcc-13.1.0/gcc/config/aarch64/aarch64-linux.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 50,56 ****
  #define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
  
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC   \
--- 50,56 ----
  #define LINK_SPEC LINUX_TARGET_LINK_SPEC AARCH64_ERRATA_LINK_SPEC
  
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC   \
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-modes.def gcc-13.1.0/gcc/config/aarch64/aarch64-modes.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** CC_MODE (CCFPE);
*** 35,40 ****
--- 35,41 ----
  CC_MODE (CC_SWP);
  CC_MODE (CC_NZC);   /* Only N, Z and C bits of condition flags are valid.
  		       (Used with SVE predicate tests.)  */
+ CC_MODE (CC_NZV);   /* Only N, Z and V bits of condition flags are valid.  */
  CC_MODE (CC_NZ);    /* Only N and Z bits of condition flags are valid.  */
  CC_MODE (CC_Z);     /* Only Z bit of condition flags is valid.  */
  CC_MODE (CC_C);     /* C represents unsigned overflow of a simple addition.  */
*************** VECTOR_MODES (INT, 8);        /*       V
*** 70,75 ****
--- 71,77 ----
  VECTOR_MODES (INT, 16);       /* V16QI V8HI V4SI V2DI.  */
  VECTOR_MODES (FLOAT, 8);      /*                 V2SF.  */
  VECTOR_MODES (FLOAT, 16);     /*            V4SF V2DF.  */
+ VECTOR_MODE (INT, DI, 1);     /*                 V1DI.  */
  VECTOR_MODE (FLOAT, DF, 1);   /*                 V1DF.  */
  VECTOR_MODE (FLOAT, HF, 2);   /*                 V2HF.  */
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-netbsd.h gcc-13.1.0/gcc/config/aarch64/aarch64-netbsd.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AArch64 running NetBSD
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for AArch64 running NetBSD
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-option-extensions.def gcc-13.1.0/gcc/config/aarch64/aarch64-option-extensions.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-option-extensions.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-option-extensions.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 21,43 ****
  
     Before using #include to read this file, define a macro:
  
!       AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF,
! 			    SYNTHETIC, FEATURE_STRING)
  
-    - EXT_NAME is the name of the extension, represented as a string constant.
-    - FLAGS_CANONICAL is the canonical internal name for this flag.
-    - FLAGS_ON are the bitwise-or of the features that enabling the extension
-      adds, or zero if enabling this extension has no effect on other features.
-    - FLAGS_OFF are the bitwise-or of the features that disabling the extension
-      removes, or zero if disabling this extension has no effect on other
-      features.
-    - SYNTHETIC is a boolean to indicate whether the option is a purely synthetic
-      grouping of options and that the option itself has no feature bit (e.g.
-      crypto).  This is used to determine when sum of the individual options in
-      FLAGS_ON can be replaced by FLAG_CANONICAL in options minimization.  If the
-      group is synthetic then they can be replaced when all options in FLAGS_ON
-      are enabled, otherwise they can only be replaced when
-      FLAGS_ON | FLAG_CANONICAL are enabled.
     - FEAT_STRING is a string containing the entries in the 'Features' field of
       /proc/cpuinfo on a GNU/Linux system that correspond to this architecture
       extension being available.  Sometimes multiple entries are needed to enable
--- 21,54 ----
  
     Before using #include to read this file, define a macro:
  
!       AARCH64_OPT_EXTENSION(NAME, IDENT, REQUIRES, EXPLICIT_ON,
! 			    EXPLICIT_OFF, FEATURE_STRING)
! 
!    - NAME is the name of the extension, represented as a string constant.
! 
!    - IDENT is the canonical internal name for this flag.
! 
!    - REQUIRES is a list of features that must be enabled whenever this
!      feature is enabled.  The relationship is implicitly transitive:
!      if A appears in B's REQUIRES and B appears in C's REQUIRES then
!      A and B must be enabled whenever C is.  Thus, turning on C also
!      turns on A and B, while turning off A or B also turns off C.
! 
!    - EXPLICIT_ON is a list of features that are enabled by an explicit
!      +NAME specification, in addition to those listed in REQUIRES.
!      Usually this is an empty list; comments below explain the exceptions.
!      The list is implicitly transitively closed wrt REQUIRES (but *not*
!      to EXPLICIT_ON, since NAME is the only thing explicit in +NAME).
!      Thus if A is in B's REQUIRES and B is in C's EXPLICIT_ON, +C will
!      enable both B and A.  B's EXPLICIT_ON has no effect on +C.
! 
!    - EXPLICIT_OFF is a list of features that are disabled by an explicit
!      +noNAME specification, in addition to the features that are transitively
!      dependent on NAME (according to REQUIRES).  As with EXPLICIT_ON,
!      this is usually an empty list; comments below explain the exceptions.
!      If a feature A appears in this list then the list implicitly includes
!      any features that are transitively dependent on A (according to REQUIRES).
  
     - FEAT_STRING is a string containing the entries in the 'Features' field of
       /proc/cpuinfo on a GNU/Linux system that correspond to this architecture
       extension being available.  Sometimes multiple entries are needed to enable
***************
*** 47,241 ****
       that are required.  Their order is not important.  An empty string means
       do not detect this feature during auto detection.
  
!      NOTE: Any changes to the AARCH64_OPT_EXTENSION macro need to be mirrored in
!      config.gcc.  */
  
! /* Enabling "fp" just enables "fp".
!    Disabling "fp" also disables "simd", "crypto", "fp16", "aes", "sha2",
!    "sha3", sm3/sm4, "sve", "sve2", "sve2-aes", "sve2-sha3", "sve2-sm4",
!    "sve2-bitperm", "i8mm", "f32mm", "f64mm", and "bf16".  */
! AARCH64_OPT_EXTENSION("fp", AARCH64_FL_FP, 0, AARCH64_FL_SIMD | \
! 		      AARCH64_FL_CRYPTO | AARCH64_FL_F16 | AARCH64_FL_AES | \
! 		      AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | AARCH64_FL_SM4 | \
! 		      AARCH64_FL_SVE | AARCH64_FL_SVE2 | AARCH64_FL_SVE2_AES | \
! 		      AARCH64_FL_SVE2_SHA3 | AARCH64_FL_SVE2_SM4 | \
! 		      AARCH64_FL_SVE2_BITPERM | AARCH64_FL_I8MM | \
! 		      AARCH64_FL_F32MM | AARCH64_FL_F64MM | AARCH64_FL_BF16,
! 		       false, "fp")
  
! /* Enabling "simd" also enables "fp".
!    Disabling "simd" also disables "crypto", "dotprod", "aes", "sha2", "sha3",
!    "sm3/sm4", "sve", "sve2", "sve2-aes", "sve2-sha3", "sve2-sm4",
!    "sve2-bitperm", "i8mm", "f32mm" and "f64mm".  */
! AARCH64_OPT_EXTENSION("simd", AARCH64_FL_SIMD, AARCH64_FL_FP, \
! 		      AARCH64_FL_CRYPTO | AARCH64_FL_DOTPROD | \
! 		      AARCH64_FL_AES | AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | \
! 		      AARCH64_FL_SM4 | AARCH64_FL_SVE | AARCH64_FL_SVE2 | \
! 		      AARCH64_FL_SVE2_AES | AARCH64_FL_SVE2_SHA3 | \
! 		      AARCH64_FL_SVE2_SM4 | AARCH64_FL_SVE2_BITPERM | \
! 		      AARCH64_FL_I8MM | AARCH64_FL_F32MM | AARCH64_FL_F64MM, \
! 		      false, "asimd")
  
! /* Enabling "crypto" also enables "fp", "simd", "aes" and "sha2".
!    Disabling "crypto" disables "crypto", "aes", "sha2", "sha3" and "sm3/sm4",
!    "sve2-aes", "sve2-sha3", "sve2-sm4".  */
! AARCH64_OPT_EXTENSION("crypto", AARCH64_FL_CRYPTO, AARCH64_FL_FP | \
! 		      AARCH64_FL_SIMD | AARCH64_FL_AES | AARCH64_FL_SHA2, \
! 		      AARCH64_FL_AES | AARCH64_FL_SHA2 | AARCH64_FL_SHA3 | \
! 		      AARCH64_FL_SM4 | AARCH64_FL_SVE2_AES | \
! 		      AARCH64_FL_SVE2_SHA3 | AARCH64_FL_SVE2_SM4, true, \
! 		      "aes pmull sha1 sha2")
  
! /* Enabling or disabling "crc" only changes "crc".  */
! AARCH64_OPT_EXTENSION("crc", AARCH64_FL_CRC, 0, 0, false, "crc32")
  
! /* Enabling or disabling "lse" only changes "lse".  */
! AARCH64_OPT_EXTENSION("lse", AARCH64_FL_LSE, 0, 0, false, "atomics")
  
! /* Enabling "fp16" also enables "fp".
!    Disabling "fp16" disables "fp16", "fp16fml", "sve", "sve2",
!    "sve2-aes", "sve2-sha3", "sve2-sm4", "sve2-bitperm", "f32mm" and
!     "f64mm".  */
! AARCH64_OPT_EXTENSION("fp16", AARCH64_FL_F16, AARCH64_FL_FP, \
! 		      AARCH64_FL_F16FML | AARCH64_FL_SVE | AARCH64_FL_F32MM | \
! 		      AARCH64_FL_F64MM | AARCH64_FL_SVE2 | \
! 		      AARCH64_FL_SVE2_AES | AARCH64_FL_SVE2_SHA3 | \
! 		      AARCH64_FL_SVE2_SM4 | AARCH64_FL_SVE2_BITPERM, false, \
! 		      "fphp asimdhp")
  
! /* Enabling or disabling "rcpc" only changes "rcpc".  */
! AARCH64_OPT_EXTENSION("rcpc", AARCH64_FL_RCPC, 0, 0, false, "lrcpc")
  
! /* Enabling "rdma" also enables "fp", "simd".
!    Disabling "rdma" just disables "rdma".  */
! AARCH64_OPT_EXTENSION("rdma", AARCH64_FL_RDMA, \
! 		      AARCH64_FL_FP | AARCH64_FL_SIMD, 0, false, "asimdrdm")
  
! /* Enabling "dotprod" also enables "simd".
!    Disabling "dotprod" only disables "dotprod".  */
! AARCH64_OPT_EXTENSION("dotprod", AARCH64_FL_DOTPROD, AARCH64_FL_SIMD, 0, \
! 		      false, "asimddp")
  
! /* Enabling "aes" also enables "simd".
!    Disabling "aes" disables "aes" and "sve2-aes'.  */
! AARCH64_OPT_EXTENSION("aes", AARCH64_FL_AES, AARCH64_FL_SIMD, \
! 		      AARCH64_FL_SVE2_AES, false, "aes")
  
! /* Enabling "sha2" also enables "simd".
!    Disabling "sha2" just disables "sha2".  */
! AARCH64_OPT_EXTENSION("sha2", AARCH64_FL_SHA2, AARCH64_FL_SIMD, 0, false, \
! 		      "sha1 sha2")
  
! /* Enabling "sha3" enables "simd" and "sha2".
!    Disabling "sha3" disables "sha3" and "sve2-sha3".  */
! AARCH64_OPT_EXTENSION("sha3", AARCH64_FL_SHA3, AARCH64_FL_SIMD | \
! 		      AARCH64_FL_SHA2, AARCH64_FL_SVE2_SHA3, false, \
! 		      "sha3 sha512")
  
! /* Enabling "sm4" also enables "simd".
!    Disabling "sm4" disables "sm4" and "sve2-sm4".  */
! AARCH64_OPT_EXTENSION("sm4", AARCH64_FL_SM4, AARCH64_FL_SIMD, \
! 		      AARCH64_FL_SVE2_SM4, false, "sm3 sm4")
  
! /* Enabling "fp16fml" also enables "fp" and "fp16".
!    Disabling "fp16fml" just disables "fp16fml".  */
! AARCH64_OPT_EXTENSION("fp16fml", AARCH64_FL_F16FML, \
! 		      AARCH64_FL_FP | AARCH64_FL_F16, 0, false, "asimdfhm")
  
! /* Enabling "sve" also enables "fp16", "fp" and "simd".
!    Disabling "sve" disables "sve", "f32mm", "f64mm", "sve2", "sve2-aes",
!    "sve2-sha3", "sve2-sm4" and "sve2-bitperm".  */
! AARCH64_OPT_EXTENSION("sve", AARCH64_FL_SVE, AARCH64_FL_FP | AARCH64_FL_SIMD | \
! 		      AARCH64_FL_F16, AARCH64_FL_F32MM | AARCH64_FL_F64MM | \
! 		      AARCH64_FL_SVE2 | AARCH64_FL_SVE2_AES | \
! 		      AARCH64_FL_SVE2_SHA3 | AARCH64_FL_SVE2_SM4 | \
! 		      AARCH64_FL_SVE2_BITPERM, false, "sve")
  
! /* Enabling/Disabling "profile" does not enable/disable any other feature.  */
! AARCH64_OPT_EXTENSION("profile", AARCH64_FL_PROFILE, 0, 0, false, "")
  
! /* Enabling/Disabling "rng" only changes "rng".  */
! AARCH64_OPT_EXTENSION("rng", AARCH64_FL_RNG, 0, 0, false, "rng")
  
! /* Enabling/Disabling "memtag" only changes "memtag".  */
! AARCH64_OPT_EXTENSION("memtag", AARCH64_FL_MEMTAG, 0, 0, false, "")
  
! /* Enabling/Disabling "sb" only changes "sb".  */
! AARCH64_OPT_EXTENSION("sb", AARCH64_FL_SB, 0, 0, false, "sb")
  
! /* Enabling/Disabling "ssbs" only changes "ssbs".  */
! AARCH64_OPT_EXTENSION("ssbs", AARCH64_FL_SSBS, 0, 0, false, "ssbs")
  
! /* Enabling/Disabling "predres" only changes "predres".  */
! AARCH64_OPT_EXTENSION("predres", AARCH64_FL_PREDRES, 0, 0, false, "")
  
! /* Enabling "sve2" also enables "sve", "fp16", "fp", and "simd".
!    Disabling "sve2" disables "sve2", "sve2-aes", "sve2-sha3", "sve2-sm4", and
!    "sve2-bitperm".  */
! AARCH64_OPT_EXTENSION("sve2", AARCH64_FL_SVE2, AARCH64_FL_SVE | \
! 		      AARCH64_FL_FP | AARCH64_FL_SIMD | AARCH64_FL_F16, \
! 		      AARCH64_FL_SVE2_AES | AARCH64_FL_SVE2_SHA3 | \
! 		      AARCH64_FL_SVE2_SM4 | AARCH64_FL_SVE2_BITPERM, false, "sve2")
  
! /* Enabling "sve2-sm4" also enables "sm4", "simd", "fp16", "fp", "sve", and
!    "sve2". Disabling "sve2-sm4" just disables "sve2-sm4".  */
! AARCH64_OPT_EXTENSION("sve2-sm4", AARCH64_FL_SVE2_SM4, AARCH64_FL_SM4 | \
! 		      AARCH64_FL_SIMD | AARCH64_FL_F16 | AARCH64_FL_FP | \
! 		      AARCH64_FL_SVE | AARCH64_FL_SVE2, 0, false, "svesm4")
  
! /* Enabling "sve2-aes" also enables "aes", "simd", "fp16", "fp", "sve", and
!    "sve2". Disabling "sve2-aes" just disables "sve2-aes".  */
! AARCH64_OPT_EXTENSION("sve2-aes", AARCH64_FL_SVE2_AES, AARCH64_FL_AES | \
! 		      AARCH64_FL_SIMD | AARCH64_FL_F16 | AARCH64_FL_FP | \
! 		      AARCH64_FL_SVE | AARCH64_FL_SVE2, 0, false, "sveaes")
  
! /* Enabling "sve2-sha3" also enables "sha3", "simd", "fp16", "fp", "sve", and
!    "sve2". Disabling "sve2-sha3" just disables "sve2-sha3".  */
! AARCH64_OPT_EXTENSION("sve2-sha3", AARCH64_FL_SVE2_SHA3, AARCH64_FL_SHA3 | \
! 		      AARCH64_FL_SIMD | AARCH64_FL_F16 | AARCH64_FL_FP | \
! 		      AARCH64_FL_SVE | AARCH64_FL_SVE2, 0, false, "svesha3")
  
! /* Enabling "sve2-bitperm" also enables "simd", "fp16", "fp", "sve", and
!    "sve2".  Disabling "sve2-bitperm" just disables "sve2-bitperm".  */
! AARCH64_OPT_EXTENSION("sve2-bitperm", AARCH64_FL_SVE2_BITPERM, AARCH64_FL_SIMD | \
! 		      AARCH64_FL_F16 | AARCH64_FL_FP | AARCH64_FL_SVE | \
! 		      AARCH64_FL_SVE2, 0, false, "svebitperm")
  
! /* Enabling or disabling "tme" only changes "tme".  */
! AARCH64_OPT_EXTENSION("tme", AARCH64_FL_TME, 0, 0, false, "")
  
! /* Enabling "i8mm" also enables "simd" and "fp".
!    Disabling "i8mm" only disables "i8mm".  */
! AARCH64_OPT_EXTENSION("i8mm", AARCH64_FL_I8MM, \
! 		      AARCH64_FL_SIMD | AARCH64_FL_FP, 0, false, "i8mm")
  
! /* Enabling "f32mm" also enables "sve", "fp16", "fp", and "simd".
!    Disabling "f32mm" only disables "f32mm".  */
! AARCH64_OPT_EXTENSION("f32mm", AARCH64_FL_F32MM, \
! 		      AARCH64_FL_SVE | AARCH64_FL_F16 | AARCH64_FL_FP | \
! 		      AARCH64_FL_SIMD, 0, false, "f32mm")
  
! /* Enabling "f64mm" also enables "sve", "fp16", "fp", and "simd".
!    Disabling "f64mm" only disables "f64mm".  */
! AARCH64_OPT_EXTENSION("f64mm", AARCH64_FL_F64MM, \
! 		      AARCH64_FL_SVE | AARCH64_FL_F16 | AARCH64_FL_FP | \
! 		      AARCH64_FL_SIMD, 0, false, "f64mm")
  
! /* Enabling "bf16" also enables "simd" and "fp".
!    Disabling "bf16" only disables "bf16".  */
! AARCH64_OPT_EXTENSION("bf16", AARCH64_FL_BF16, \
! 		      AARCH64_FL_SIMD | AARCH64_FL_FP, 0, false, "bf16")
  
! /* Enabling/Disabling "flagm" only changes "flagm".  */
! AARCH64_OPT_EXTENSION("flagm", AARCH64_FL_FLAGM, 0, 0, false, "flagm")
  
! /* Enabling/Disabling "pauth" only changes "pauth".  */
! AARCH64_OPT_EXTENSION("pauth", AARCH64_FL_PAUTH, 0, 0, false, "paca pacg")
  
! /* Enabling/Disabling "ls64" only changes "ls64".  */
! AARCH64_OPT_EXTENSION("ls64", AARCH64_FL_LS64, 0, 0, false, "")
  
! /* Enabling/disabling "mops" only changes "mops".  */
! AARCH64_OPT_EXTENSION("mops", AARCH64_FL_MOPS, 0, 0, false, "")
  
  #undef AARCH64_OPT_EXTENSION
--- 58,154 ----
       that are required.  Their order is not important.  An empty string means
       do not detect this feature during auto detection.
  
!    The list of features must follow topological order wrt REQUIRES
!    and EXPLICIT_ON.  For example, if A is in B's REQUIRES list, A must
!    come before B.  This is enforced by aarch64-feature-deps.h.
  
!    NOTE: Any changes to the AARCH64_OPT_EXTENSION macro need to be mirrored in
!    config.gcc.  */
  
! AARCH64_OPT_EXTENSION("fp", FP, (), (), (), "fp")
  
! AARCH64_OPT_EXTENSION("simd", SIMD, (FP), (), (), "asimd")
  
! AARCH64_OPT_EXTENSION("crc", CRC, (), (), (), "crc32")
  
! AARCH64_OPT_EXTENSION("lse", LSE, (), (), (), "atomics")
  
! /* +nofp16 disables an implicit F16FML, even though an implicit F16FML
!    does not imply F16.  See F16FML for more details.  */
! AARCH64_OPT_EXTENSION("fp16", F16, (FP), (), (F16FML), "fphp asimdhp")
  
! AARCH64_OPT_EXTENSION("rcpc", RCPC, (), (), (), "lrcpc")
  
! /* An explicit +rdma implies +simd, but +rdma+nosimd still enables scalar
!    RDMA instructions.  */
! AARCH64_OPT_EXTENSION("rdma", RDMA, (), (SIMD), (), "asimdrdm")
  
! AARCH64_OPT_EXTENSION("dotprod", DOTPROD, (SIMD), (), (), "asimddp")
  
! AARCH64_OPT_EXTENSION("aes", AES, (SIMD), (), (), "aes")
  
! AARCH64_OPT_EXTENSION("sha2", SHA2, (SIMD), (), (), "sha1 sha2")
  
! /* +nocrypto disables AES, SHA2 and SM4, and anything that depends on them
!    (such as SHA3 and the SVE2 crypto extensions).  */
! AARCH64_OPT_EXTENSION("crypto", CRYPTO, (AES, SHA2), (), (AES, SHA2, SM4),
! 		      "aes pmull sha1 sha2")
  
! AARCH64_OPT_EXTENSION("sha3", SHA3, (SHA2), (), (), "sha3 sha512")
  
! AARCH64_OPT_EXTENSION("sm4", SM4, (SIMD), (), (), "sm3 sm4")
  
! /* An explicit +fp16fml implies +fp16, but a dependence on it does not.
!    Thus -march=armv8.4-a implies F16FML but not F16.  -march=armv8.4-a+fp16
!    and -march=armv8.4-a+fp16fml are equivalent and enable both F16FML and F16.
!    -march=armv8.4-a+nofp16+fp16 enables F16 but not F16FML.  */
! AARCH64_OPT_EXTENSION("fp16fml", F16FML, (), (F16), (), "asimdfhm")
  
! AARCH64_OPT_EXTENSION("sve", SVE, (SIMD, F16), (), (), "sve")
  
! AARCH64_OPT_EXTENSION("profile", PROFILE, (), (), (), "")
  
! AARCH64_OPT_EXTENSION("rng", RNG, (), (), (), "rng")
  
! AARCH64_OPT_EXTENSION("memtag", MEMTAG, (), (), (), "")
  
! AARCH64_OPT_EXTENSION("sb", SB, (), (), (), "sb")
  
! AARCH64_OPT_EXTENSION("ssbs", SSBS, (), (), (), "ssbs")
  
! AARCH64_OPT_EXTENSION("predres", PREDRES, (), (), (), "")
  
! AARCH64_OPT_EXTENSION("sve2", SVE2, (SVE), (), (), "sve2")
  
! AARCH64_OPT_EXTENSION("sve2-sm4", SVE2_SM4, (SVE2, SM4), (), (), "svesm4")
  
! AARCH64_OPT_EXTENSION("sve2-aes", SVE2_AES, (SVE2, AES), (), (), "sveaes")
  
! AARCH64_OPT_EXTENSION("sve2-sha3", SVE2_SHA3, (SVE2, SHA3), (), (), "svesha3")
  
! AARCH64_OPT_EXTENSION("sve2-bitperm", SVE2_BITPERM, (SVE2), (), (),
! 		      "svebitperm")
  
! AARCH64_OPT_EXTENSION("tme", TME, (), (), (), "")
  
! AARCH64_OPT_EXTENSION("i8mm", I8MM, (SIMD), (), (), "i8mm")
  
! AARCH64_OPT_EXTENSION("f32mm", F32MM, (SVE), (), (), "f32mm")
  
! AARCH64_OPT_EXTENSION("f64mm", F64MM, (SVE), (), (), "f64mm")
  
! /* An explicit +bf16 implies +simd, but +bf16+nosimd still enables scalar BF16
!    instructions.  */
! AARCH64_OPT_EXTENSION("bf16", BF16, (FP), (SIMD), (), "bf16")
  
! AARCH64_OPT_EXTENSION("flagm", FLAGM, (), (), (), "flagm")
  
! AARCH64_OPT_EXTENSION("pauth", PAUTH, (), (), (), "paca pacg")
  
! AARCH64_OPT_EXTENSION("ls64", LS64, (), (), (), "")
! 
! AARCH64_OPT_EXTENSION("mops", MOPS, (), (), (), "")
! 
! AARCH64_OPT_EXTENSION("cssc", CSSC, (), (), (), "cssc")
  
  #undef AARCH64_OPT_EXTENSION
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-opts.h gcc-13.1.0/gcc/config/aarch64/aarch64-opts.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 22,27 ****
--- 22,31 ----
  #ifndef GCC_AARCH64_OPTS_H
  #define GCC_AARCH64_OPTS_H
  
+ #ifndef USED_FOR_TARGET
+ typedef uint64_t aarch64_feature_flags;
+ #endif
+ 
  /* The various cores that implement AArch64.  */
  enum aarch64_processor
  {
*************** enum aarch64_code_model {
*** 71,86 ****
    AARCH64_CMODEL_LARGE
  };
  
- /* Function types -msign-return-address should sign.  */
- enum aarch64_function_type {
-   /* Don't sign any function.  */
-   AARCH64_FUNCTION_NONE,
-   /* Non-leaf functions.  */
-   AARCH64_FUNCTION_NON_LEAF,
-   /* All functions.  */
-   AARCH64_FUNCTION_ALL
- };
- 
  /* SVE vector register sizes.  */
  enum aarch64_sve_vector_bits_enum {
    SVE_SCALABLE,
--- 75,80 ----
*************** enum stack_protector_guard {
*** 98,101 ****
--- 92,101 ----
    SSP_GLOBAL			/* global canary */
  };
  
+ /* The key type that -msign-return-address should use.  */
+ enum aarch64_key_type {
+   AARCH64_KEY_A,
+   AARCH64_KEY_B
+ };
+ 
  #endif
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-passes.def gcc-13.1.0/gcc/config/aarch64/aarch64-passes.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AArch64-specific passes declarations.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* AArch64-specific passes declarations.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-protos.h gcc-13.1.0/gcc/config/aarch64/aarch64-protos.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 23,28 ****
--- 23,29 ----
  #define GCC_AARCH64_PROTOS_H
  
  #include "input.h"
+ #include "config/arm/aarch-common.h"
  
  /* SYMBOL_SMALL_ABSOLUTE: Generate symbol accesses through
     high and lo relocs that calculate the base address using a PC
*************** typedef struct simd_vec_cost advsimd_vec
*** 254,260 ****
  /* SVE-specific extensions to the information provided by simd_vec_cost.  */
  struct sve_vec_cost : simd_vec_cost
  {
!   constexpr sve_vec_cost (const simd_vec_cost &base,
  			  unsigned int clast_cost,
  			  unsigned int fadda_f16_cost,
  			  unsigned int fadda_f32_cost,
--- 255,261 ----
  /* SVE-specific extensions to the information provided by simd_vec_cost.  */
  struct sve_vec_cost : simd_vec_cost
  {
!   CONSTEXPR sve_vec_cost (const simd_vec_cost &base,
  			  unsigned int clast_cost,
  			  unsigned int fadda_f16_cost,
  			  unsigned int fadda_f32_cost,
*************** using aarch64_scalar_vec_issue_info = aa
*** 354,360 ****
     Advanced SIMD and SVE.  */
  struct aarch64_simd_vec_issue_info : aarch64_base_vec_issue_info
  {
!   constexpr aarch64_simd_vec_issue_info (aarch64_base_vec_issue_info base,
  					 unsigned int ld2_st2_general_ops,
  					 unsigned int ld3_st3_general_ops,
  					 unsigned int ld4_st4_general_ops)
--- 355,361 ----
     Advanced SIMD and SVE.  */
  struct aarch64_simd_vec_issue_info : aarch64_base_vec_issue_info
  {
!   CONSTEXPR aarch64_simd_vec_issue_info (aarch64_base_vec_issue_info base,
  					 unsigned int ld2_st2_general_ops,
  					 unsigned int ld3_st3_general_ops,
  					 unsigned int ld4_st4_general_ops)
*************** using aarch64_advsimd_vec_issue_info = a
*** 382,388 ****
     is a concept of "predicate operations".  */
  struct aarch64_sve_vec_issue_info : aarch64_simd_vec_issue_info
  {
!   constexpr aarch64_sve_vec_issue_info
      (aarch64_simd_vec_issue_info base,
       unsigned int pred_ops_per_cycle,
       unsigned int while_pred_ops,
--- 383,389 ----
     is a concept of "predicate operations".  */
  struct aarch64_sve_vec_issue_info : aarch64_simd_vec_issue_info
  {
!   CONSTEXPR aarch64_sve_vec_issue_info
      (aarch64_simd_vec_issue_info base,
       unsigned int pred_ops_per_cycle,
       unsigned int while_pred_ops,
*************** struct tune_params
*** 540,545 ****
--- 541,547 ----
    const char *loop_align;
    int int_reassoc_width;
    int fp_reassoc_width;
+   int fma_reassoc_width;
    int vec_reassoc_width;
    int min_div_recip_mul_sf;
    int min_div_recip_mul_df;
*************** enum aarch64_extra_tuning_flags
*** 650,667 ****
    AARCH64_EXTRA_TUNE_ALL = (1u << AARCH64_EXTRA_TUNE_index_END) - 1
  };
  
- /* Enum describing the various ways that the
-    aarch64_parse_{arch,tune,cpu,extension} functions can fail.
-    This way their callers can choose what kind of error to give.  */
- 
- enum aarch64_parse_opt_result
- {
-   AARCH64_PARSE_OK,			/* Parsing was successful.  */
-   AARCH64_PARSE_MISSING_ARG,		/* Missing argument.  */
-   AARCH64_PARSE_INVALID_FEATURE,	/* Invalid feature modifier.  */
-   AARCH64_PARSE_INVALID_ARG		/* Invalid arch, tune, cpu arg.  */
- };
- 
  /* Enum to distinguish which type of check is to be done in
     aarch64_simd_valid_immediate.  This is used as a bitmask where
     AARCH64_CHECK_MOV has both bits set.  Thus AARCH64_CHECK_MOV will
--- 652,657 ----
*************** enum simd_immediate_check {
*** 672,685 ****
    AARCH64_CHECK_MOV  = AARCH64_CHECK_ORR | AARCH64_CHECK_BIC
  };
  
- /* The key type that -msign-return-address should use.  */
- enum aarch64_key_type {
-   AARCH64_KEY_A,
-   AARCH64_KEY_B
- };
- 
- extern enum aarch64_key_type aarch64_ra_sign_key;
- 
  extern struct tune_params aarch64_tune_params;
  
  /* The available SVE predicate patterns, known in the ACLE as "svpattern".  */
--- 662,667 ----
*************** public:
*** 755,761 ****
    ~aarch64_simd_switcher ();
  
  private:
!   unsigned long m_old_isa_flags;
    bool m_old_general_regs_only;
  };
  
--- 737,743 ----
    ~aarch64_simd_switcher ();
  
  private:
!   unsigned long m_old_asm_isa_flags;
    bool m_old_general_regs_only;
  };
  
*************** void aarch64_post_cfi_startproc (void);
*** 763,769 ****
  poly_int64 aarch64_initial_elimination_offset (unsigned, unsigned);
  int aarch64_get_condition_code (rtx);
  bool aarch64_address_valid_for_prefetch_p (rtx, bool);
! bool aarch64_bitmask_imm (HOST_WIDE_INT val, machine_mode);
  unsigned HOST_WIDE_INT aarch64_and_split_imm1 (HOST_WIDE_INT val_in);
  unsigned HOST_WIDE_INT aarch64_and_split_imm2 (HOST_WIDE_INT val_in);
  bool aarch64_and_bitmask_imm (unsigned HOST_WIDE_INT val_in, machine_mode mode);
--- 745,751 ----
  poly_int64 aarch64_initial_elimination_offset (unsigned, unsigned);
  int aarch64_get_condition_code (rtx);
  bool aarch64_address_valid_for_prefetch_p (rtx, bool);
! bool aarch64_bitmask_imm (unsigned HOST_WIDE_INT val, machine_mode);
  unsigned HOST_WIDE_INT aarch64_and_split_imm1 (HOST_WIDE_INT val_in);
  unsigned HOST_WIDE_INT aarch64_and_split_imm2 (HOST_WIDE_INT val_in);
  bool aarch64_and_bitmask_imm (unsigned HOST_WIDE_INT val_in, machine_mode mode);
*************** bool aarch64_const_vec_all_same_in_range
*** 779,784 ****
--- 761,767 ----
  bool aarch64_constant_address_p (rtx);
  bool aarch64_emit_approx_div (rtx, rtx, rtx);
  bool aarch64_emit_approx_sqrt (rtx, rtx, bool);
+ tree aarch64_vector_load_decl (tree);
  void aarch64_expand_call (rtx, rtx, rtx, bool);
  bool aarch64_expand_cpymem (rtx *);
  bool aarch64_expand_setmem (rtx *);
*************** bool aarch64_masks_and_shift_for_bfi_p (
*** 800,806 ****
  					unsigned HOST_WIDE_INT,
  					unsigned HOST_WIDE_INT);
  bool aarch64_zero_extend_const_eq (machine_mode, rtx, machine_mode, rtx);
! bool aarch64_move_imm (HOST_WIDE_INT, machine_mode);
  machine_mode aarch64_sve_int_mode (machine_mode);
  opt_machine_mode aarch64_sve_pred_mode (unsigned int);
  machine_mode aarch64_sve_pred_mode (machine_mode);
--- 783,789 ----
  					unsigned HOST_WIDE_INT,
  					unsigned HOST_WIDE_INT);
  bool aarch64_zero_extend_const_eq (machine_mode, rtx, machine_mode, rtx);
! bool aarch64_move_imm (unsigned HOST_WIDE_INT, machine_mode);
  machine_mode aarch64_sve_int_mode (machine_mode);
  opt_machine_mode aarch64_sve_pred_mode (unsigned int);
  machine_mode aarch64_sve_pred_mode (machine_mode);
*************** bool aarch64_sve_float_arith_immediate_p
*** 850,857 ****
  bool aarch64_sve_float_mul_immediate_p (rtx);
  bool aarch64_split_dimode_const_store (rtx, rtx);
  bool aarch64_symbolic_address_p (rtx);
! bool aarch64_uimm12_shift (HOST_WIDE_INT);
  int aarch64_movk_shift (const wide_int_ref &, const wide_int_ref &);
  bool aarch64_use_return_insn_p (void);
  const char *aarch64_output_casesi (rtx *);
  
--- 833,841 ----
  bool aarch64_sve_float_mul_immediate_p (rtx);
  bool aarch64_split_dimode_const_store (rtx, rtx);
  bool aarch64_symbolic_address_p (rtx);
! bool aarch64_uimm12_shift (unsigned HOST_WIDE_INT);
  int aarch64_movk_shift (const wide_int_ref &, const wide_int_ref &);
+ bool aarch64_is_mov_xn_imm (unsigned HOST_WIDE_INT);
  bool aarch64_use_return_insn_p (void);
  const char *aarch64_output_casesi (rtx *);
  
*************** rtx aarch64_simd_vect_par_cnst_half (mac
*** 886,892 ****
  rtx aarch64_gen_stepped_int_parallel (unsigned int, int, int);
  bool aarch64_stepped_int_parallel_p (rtx, int);
  rtx aarch64_tls_get_addr (void);
! unsigned aarch64_dbx_register_number (unsigned);
  unsigned aarch64_trampoline_size (void);
  void aarch64_asm_output_labelref (FILE *, const char *);
  void aarch64_cpu_cpp_builtins (cpp_reader *);
--- 870,876 ----
  rtx aarch64_gen_stepped_int_parallel (unsigned int, int, int);
  bool aarch64_stepped_int_parallel_p (rtx, int);
  rtx aarch64_tls_get_addr (void);
! unsigned aarch64_debugger_regno (unsigned);
  unsigned aarch64_trampoline_size (void);
  void aarch64_asm_output_labelref (FILE *, const char *);
  void aarch64_cpu_cpp_builtins (cpp_reader *);
*************** void aarch64_sve_expand_vector_init (rtx
*** 915,927 ****
  void aarch64_init_cumulative_args (CUMULATIVE_ARGS *, const_tree, rtx,
  				   const_tree, unsigned, bool = false);
  void aarch64_init_expanders (void);
- void aarch64_init_simd_builtins (void);
  void aarch64_emit_call_insn (rtx);
  void aarch64_register_pragmas (void);
  void aarch64_relayout_simd_types (void);
  void aarch64_reset_previous_fndecl (void);
  bool aarch64_return_address_signing_enabled (void);
- bool aarch64_bti_enabled (void);
  void aarch64_save_restore_target_globals (tree);
  void aarch64_addti_scratch_regs (rtx, rtx, rtx *,
  				 rtx *, rtx *,
--- 899,909 ----
*************** gimple *aarch64_general_gimple_fold_buil
*** 994,1000 ****
  rtx aarch64_general_expand_builtin (unsigned int, tree, rtx, int);
  tree aarch64_general_builtin_decl (unsigned, bool);
  tree aarch64_general_builtin_rsqrt (unsigned int);
- tree aarch64_builtin_vectorized_function (unsigned int, tree, tree);
  void handle_arm_acle_h (void);
  void handle_arm_neon_h (void);
  
--- 976,981 ----
*************** extern bool aarch64_classify_address (st
*** 1039,1057 ****
  				      machine_mode, bool,
  				      aarch64_addr_query_type = ADDR_QUERY_M);
  
  /* Defined in common/config/aarch64-common.cc.  */
  bool aarch64_handle_option (struct gcc_options *, struct gcc_options *,
  			     const struct cl_decoded_option *, location_t);
  const char *aarch64_rewrite_selected_cpu (const char *name);
! enum aarch64_parse_opt_result aarch64_parse_extension (const char *,
! 						       uint64_t *,
! 						       std::string *);
  void aarch64_get_all_extension_candidates (auto_vec<const char *> *candidates);
! std::string aarch64_get_extension_string_for_isa_flags (uint64_t, uint64_t);
! 
! /* Defined in aarch64-d.cc  */
! extern void aarch64_d_target_versions (void);
! extern void aarch64_d_register_target_info (void);
  
  rtl_opt_pass *make_pass_fma_steering (gcc::context *);
  rtl_opt_pass *make_pass_track_speculation (gcc::context *);
--- 1020,1038 ----
  				      machine_mode, bool,
  				      aarch64_addr_query_type = ADDR_QUERY_M);
  
+ void aarch64_set_asm_isa_flags (aarch64_feature_flags);
+ 
  /* Defined in common/config/aarch64-common.cc.  */
+ void aarch64_set_asm_isa_flags (gcc_options *, aarch64_feature_flags);
  bool aarch64_handle_option (struct gcc_options *, struct gcc_options *,
  			     const struct cl_decoded_option *, location_t);
  const char *aarch64_rewrite_selected_cpu (const char *name);
! enum aarch_parse_opt_result aarch64_parse_extension (const char *,
!                                                      aarch64_feature_flags *,
!                                                      std::string *);
  void aarch64_get_all_extension_candidates (auto_vec<const char *> *candidates);
! std::string aarch64_get_extension_string_for_isa_flags (aarch64_feature_flags,
! 							aarch64_feature_flags);
  
  rtl_opt_pass *make_pass_fma_steering (gcc::context *);
  rtl_opt_pass *make_pass_track_speculation (gcc::context *);
*************** const char *aarch64_indirect_call_asm (r
*** 1083,1086 ****
--- 1064,1069 ----
  extern bool aarch64_harden_sls_retbr_p (void);
  extern bool aarch64_harden_sls_blr_p (void);
  
+ extern void aarch64_output_patchable_area (unsigned int, bool);
+ 
  #endif /* GCC_AARCH64_PROTOS_H */
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-simd-builtin-types.def gcc-13.1.0/gcc/config/aarch64/aarch64-simd-builtin-types.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-simd-builtin-types.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-simd-builtin-types.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 24,30 ****
    ENTRY (Int16x8_t, V8HI, none, 11)
    ENTRY (Int32x2_t, V2SI, none, 11)
    ENTRY (Int32x4_t, V4SI, none, 11)
!   ENTRY (Int64x1_t, DI, none, 11)
    ENTRY (Int64x2_t, V2DI, none, 11)
    ENTRY (Uint8x8_t, V8QI, unsigned, 11)
    ENTRY (Uint8x16_t, V16QI, unsigned, 12)
--- 24,30 ----
    ENTRY (Int16x8_t, V8HI, none, 11)
    ENTRY (Int32x2_t, V2SI, none, 11)
    ENTRY (Int32x4_t, V4SI, none, 11)
!   ENTRY (Int64x1_t, V1DI, none, 11)
    ENTRY (Int64x2_t, V2DI, none, 11)
    ENTRY (Uint8x8_t, V8QI, unsigned, 11)
    ENTRY (Uint8x16_t, V16QI, unsigned, 12)
***************
*** 32,38 ****
    ENTRY (Uint16x8_t, V8HI, unsigned, 12)
    ENTRY (Uint32x2_t, V2SI, unsigned, 12)
    ENTRY (Uint32x4_t, V4SI, unsigned, 12)
!   ENTRY (Uint64x1_t, DI, unsigned, 12)
    ENTRY (Uint64x2_t, V2DI, unsigned, 12)
    ENTRY (Poly8_t, QI, poly, 9)
    ENTRY (Poly16_t, HI, poly, 10)
--- 32,38 ----
    ENTRY (Uint16x8_t, V8HI, unsigned, 12)
    ENTRY (Uint32x2_t, V2SI, unsigned, 12)
    ENTRY (Uint32x4_t, V4SI, unsigned, 12)
!   ENTRY (Uint64x1_t, V1DI, unsigned, 12)
    ENTRY (Uint64x2_t, V2DI, unsigned, 12)
    ENTRY (Poly8_t, QI, poly, 9)
    ENTRY (Poly16_t, HI, poly, 10)
***************
*** 42,48 ****
    ENTRY (Poly8x16_t, V16QI, poly, 12)
    ENTRY (Poly16x4_t, V4HI, poly, 12)
    ENTRY (Poly16x8_t, V8HI, poly, 12)
!   ENTRY (Poly64x1_t, DI, poly, 12)
    ENTRY (Poly64x2_t, V2DI, poly, 12)
    ENTRY (Float16x4_t, V4HF, none, 13)
    ENTRY (Float16x8_t, V8HF, none, 13)
--- 42,48 ----
    ENTRY (Poly8x16_t, V16QI, poly, 12)
    ENTRY (Poly16x4_t, V4HI, poly, 12)
    ENTRY (Poly16x8_t, V8HI, poly, 12)
!   ENTRY (Poly64x1_t, V1DI, poly, 12)
    ENTRY (Poly64x2_t, V2DI, poly, 12)
    ENTRY (Float16x4_t, V4HF, none, 13)
    ENTRY (Float16x8_t, V8HF, none, 13)
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-simd-builtins.def gcc-13.1.0/gcc/config/aarch64/aarch64-simd-builtins.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-simd-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-simd-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-simd.md gcc-13.1.0/gcc/config/aarch64/aarch64-simd.md
*** gcc-12.2.0/gcc/config/aarch64/aarch64-simd.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-simd.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 AdvSIMD architecture.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 AdvSIMD architecture.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 21,27 ****
  (define_expand "mov<mode>"
    [(set (match_operand:VALL_F16 0 "nonimmediate_operand")
  	(match_operand:VALL_F16 1 "general_operand"))]
!   "TARGET_SIMD"
    "
    /* Force the operand into a register if it is not an
       immediate whose use can be replaced with xzr.
--- 21,27 ----
  (define_expand "mov<mode>"
    [(set (match_operand:VALL_F16 0 "nonimmediate_operand")
  	(match_operand:VALL_F16 1 "general_operand"))]
!   "TARGET_FLOAT"
    "
    /* Force the operand into a register if it is not an
       immediate whose use can be replaced with xzr.
***************
*** 52,58 ****
  (define_expand "movmisalign<mode>"
    [(set (match_operand:VALL_F16 0 "nonimmediate_operand")
          (match_operand:VALL_F16 1 "general_operand"))]
!   "TARGET_SIMD && !STRICT_ALIGNMENT"
  {
    /* This pattern is not permitted to fail during expansion: if both arguments
       are non-registers (e.g. memory := constant, which can be created by the
--- 52,58 ----
  (define_expand "movmisalign<mode>"
    [(set (match_operand:VALL_F16 0 "nonimmediate_operand")
          (match_operand:VALL_F16 1 "general_operand"))]
!   "TARGET_FLOAT && !STRICT_ALIGNMENT"
  {
    /* This pattern is not permitted to fail during expansion: if both arguments
       are non-registers (e.g. memory := constant, which can be created by the
***************
*** 116,125 ****
  
  (define_insn "*aarch64_simd_mov<VDMOV:mode>"
    [(set (match_operand:VDMOV 0 "nonimmediate_operand"
! 		"=w, m,  m,  w, ?r, ?w, ?r, w")
  	(match_operand:VDMOV 1 "general_operand"
! 		"m,  Dz, w,  w,  w,  r,  r, Dn"))]
!   "TARGET_SIMD
     && (register_operand (operands[0], <MODE>mode)
         || aarch64_simd_reg_or_zero (operands[1], <MODE>mode))"
  {
--- 116,125 ----
  
  (define_insn "*aarch64_simd_mov<VDMOV:mode>"
    [(set (match_operand:VDMOV 0 "nonimmediate_operand"
! 		"=w, m,  m,  w, ?r, ?w, ?r,  w,  w")
  	(match_operand:VDMOV 1 "general_operand"
! 		"m,  Dz, w,  w,  w,  r,  r, Dn, Dz"))]
!   "TARGET_FLOAT
     && (register_operand (operands[0], <MODE>mode)
         || aarch64_simd_reg_or_zero (operands[1], <MODE>mode))"
  {
***************
*** 128,153 ****
       case 0: return "ldr\t%d0, %1";
       case 1: return "str\txzr, %0";
       case 2: return "str\t%d1, %0";
!      case 3: return "mov\t%0.<Vbtype>, %1.<Vbtype>";
!      case 4: return "umov\t%0, %1.d[0]";
       case 5: return "fmov\t%d0, %1";
       case 6: return "mov\t%0, %1";
       case 7:
  	return aarch64_output_simd_mov_immediate (operands[1], 64);
       default: gcc_unreachable ();
       }
  }
    [(set_attr "type" "neon_load1_1reg<q>, store_8, neon_store1_1reg<q>,\
  		     neon_logic<q>, neon_to_gp<q>, f_mcr,\
! 		     mov_reg, neon_move<q>")]
  )
  
  (define_insn "*aarch64_simd_mov<VQMOV:mode>"
    [(set (match_operand:VQMOV 0 "nonimmediate_operand"
! 		"=w, Umn,  m,  w, ?r, ?w, ?r, w")
  	(match_operand:VQMOV 1 "general_operand"
! 		"m,  Dz, w,  w,  w,  r,  r, Dn"))]
!   "TARGET_SIMD
     && (register_operand (operands[0], <MODE>mode)
         || aarch64_simd_reg_or_zero (operands[1], <MODE>mode))"
  {
--- 128,161 ----
       case 0: return "ldr\t%d0, %1";
       case 1: return "str\txzr, %0";
       case 2: return "str\t%d1, %0";
!      case 3:
!        if (TARGET_SIMD)
! 	 return "mov\t%0.<Vbtype>, %1.<Vbtype>";
!        return "fmov\t%d0, %d1";
!      case 4:
!        if (TARGET_SIMD)
! 	 return "umov\t%0, %1.d[0]";
!        return "fmov\t%x0, %d1";
       case 5: return "fmov\t%d0, %1";
       case 6: return "mov\t%0, %1";
       case 7:
  	return aarch64_output_simd_mov_immediate (operands[1], 64);
+      case 8: return "fmov\t%d0, xzr";
       default: gcc_unreachable ();
       }
  }
    [(set_attr "type" "neon_load1_1reg<q>, store_8, neon_store1_1reg<q>,\
  		     neon_logic<q>, neon_to_gp<q>, f_mcr,\
! 		     mov_reg, neon_move<q>, f_mcr")
!    (set_attr "arch" "*,*,*,*,*,*,*,simd,*")]
  )
  
  (define_insn "*aarch64_simd_mov<VQMOV:mode>"
    [(set (match_operand:VQMOV 0 "nonimmediate_operand"
! 		"=w, Umn,  m,  w, ?r, ?w, ?r, w,  w")
  	(match_operand:VQMOV 1 "general_operand"
! 		"m,  Dz, w,  w,  w,  r,  r, Dn, Dz"))]
!   "TARGET_FLOAT
     && (register_operand (operands[0], <MODE>mode)
         || aarch64_simd_reg_or_zero (operands[1], <MODE>mode))"
  {
***************
*** 167,180 ****
  	return "#";
      case 7:
  	return aarch64_output_simd_mov_immediate (operands[1], 128);
      default:
  	gcc_unreachable ();
      }
  }
    [(set_attr "type" "neon_load1_1reg<q>, store_16, neon_store1_1reg<q>,\
  		     neon_logic<q>, multiple, multiple,\
! 		     multiple, neon_move<q>")
!    (set_attr "length" "4,4,4,4,8,8,8,4")]
  )
  
  ;; When storing lane zero we can use the normal STR and its more permissive
--- 175,191 ----
  	return "#";
      case 7:
  	return aarch64_output_simd_mov_immediate (operands[1], 128);
+     case 8:
+ 	return "fmov\t%d0, xzr";
      default:
  	gcc_unreachable ();
      }
  }
    [(set_attr "type" "neon_load1_1reg<q>, store_16, neon_store1_1reg<q>,\
  		     neon_logic<q>, multiple, multiple,\
! 		     multiple, neon_move<q>, fmov")
!    (set_attr "length" "4,4,4,4,8,8,8,4,4")
!    (set_attr "arch" "*,*,*,simd,*,*,*,simd,*")]
  )
  
  ;; When storing lane zero we can use the normal STR and its more permissive
***************
*** 195,201 ****
  	(match_operand:DREG 1 "aarch64_mem_pair_operand" "Ump"))
     (set (match_operand:DREG2 2 "register_operand" "=w")
  	(match_operand:DREG2 3 "memory_operand" "m"))]
!   "TARGET_SIMD
     && rtx_equal_p (XEXP (operands[3], 0),
  		   plus_constant (Pmode,
  				  XEXP (operands[1], 0),
--- 206,212 ----
  	(match_operand:DREG 1 "aarch64_mem_pair_operand" "Ump"))
     (set (match_operand:DREG2 2 "register_operand" "=w")
  	(match_operand:DREG2 3 "memory_operand" "m"))]
!   "TARGET_FLOAT
     && rtx_equal_p (XEXP (operands[3], 0),
  		   plus_constant (Pmode,
  				  XEXP (operands[1], 0),
***************
*** 209,215 ****
  	(match_operand:DREG 1 "register_operand" "w"))
     (set (match_operand:DREG2 2 "memory_operand" "=m")
  	(match_operand:DREG2 3 "register_operand" "w"))]
!   "TARGET_SIMD
     && rtx_equal_p (XEXP (operands[2], 0),
  		   plus_constant (Pmode,
  				  XEXP (operands[0], 0),
--- 220,226 ----
  	(match_operand:DREG 1 "register_operand" "w"))
     (set (match_operand:DREG2 2 "memory_operand" "=m")
  	(match_operand:DREG2 3 "register_operand" "w"))]
!   "TARGET_FLOAT
     && rtx_equal_p (XEXP (operands[2], 0),
  		   plus_constant (Pmode,
  				  XEXP (operands[0], 0),
***************
*** 223,229 ****
  	(match_operand:VQ 1 "aarch64_mem_pair_operand" "Ump"))
     (set (match_operand:VQ2 2 "register_operand" "=w")
  	(match_operand:VQ2 3 "memory_operand" "m"))]
!   "TARGET_SIMD
      && rtx_equal_p (XEXP (operands[3], 0),
  		    plus_constant (Pmode,
  			       XEXP (operands[1], 0),
--- 234,240 ----
  	(match_operand:VQ 1 "aarch64_mem_pair_operand" "Ump"))
     (set (match_operand:VQ2 2 "register_operand" "=w")
  	(match_operand:VQ2 3 "memory_operand" "m"))]
!   "TARGET_FLOAT
      && rtx_equal_p (XEXP (operands[3], 0),
  		    plus_constant (Pmode,
  			       XEXP (operands[1], 0),
***************
*** 237,246 ****
  	(match_operand:VQ 1 "register_operand" "w"))
     (set (match_operand:VQ2 2 "memory_operand" "=m")
  	(match_operand:VQ2 3 "register_operand" "w"))]
!   "TARGET_SIMD && rtx_equal_p (XEXP (operands[2], 0),
! 		plus_constant (Pmode,
! 			       XEXP (operands[0], 0),
! 			       GET_MODE_SIZE (<VQ:MODE>mode)))"
    "stp\\t%q1, %q3, %z0"
    [(set_attr "type" "neon_stp_q")]
  )
--- 248,258 ----
  	(match_operand:VQ 1 "register_operand" "w"))
     (set (match_operand:VQ2 2 "memory_operand" "=m")
  	(match_operand:VQ2 3 "register_operand" "w"))]
!   "TARGET_FLOAT
!    && rtx_equal_p (XEXP (operands[2], 0),
! 		   plus_constant (Pmode,
! 				  XEXP (operands[0], 0),
! 				  GET_MODE_SIZE (<VQ:MODE>mode)))"
    "stp\\t%q1, %q3, %z0"
    [(set_attr "type" "neon_stp_q")]
  )
***************
*** 248,255 ****
  
  (define_split
    [(set (match_operand:VQMOV 0 "register_operand" "")
!       (match_operand:VQMOV 1 "register_operand" ""))]
!   "TARGET_SIMD && reload_completed
     && GP_REGNUM_P (REGNO (operands[0]))
     && GP_REGNUM_P (REGNO (operands[1]))"
    [(const_int 0)]
--- 260,268 ----
  
  (define_split
    [(set (match_operand:VQMOV 0 "register_operand" "")
! 	(match_operand:VQMOV 1 "register_operand" ""))]
!   "TARGET_FLOAT
!    && reload_completed
     && GP_REGNUM_P (REGNO (operands[0]))
     && GP_REGNUM_P (REGNO (operands[1]))"
    [(const_int 0)]
***************
*** 261,267 ****
  (define_split
    [(set (match_operand:VQMOV 0 "register_operand" "")
          (match_operand:VQMOV 1 "register_operand" ""))]
!   "TARGET_SIMD && reload_completed
     && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
         || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))"
    [(const_int 0)]
--- 274,281 ----
  (define_split
    [(set (match_operand:VQMOV 0 "register_operand" "")
          (match_operand:VQMOV 1 "register_operand" ""))]
!   "TARGET_FLOAT
!    && reload_completed
     && ((FP_REGNUM_P (REGNO (operands[0])) && GP_REGNUM_P (REGNO (operands[1])))
         || (GP_REGNUM_P (REGNO (operands[0])) && FP_REGNUM_P (REGNO (operands[1]))))"
    [(const_int 0)]
***************
*** 273,279 ****
  (define_expand "@aarch64_split_simd_mov<mode>"
    [(set (match_operand:VQMOV 0)
  	(match_operand:VQMOV 1))]
!   "TARGET_SIMD"
    {
      rtx dst = operands[0];
      rtx src = operands[1];
--- 287,293 ----
  (define_expand "@aarch64_split_simd_mov<mode>"
    [(set (match_operand:VQMOV 0)
  	(match_operand:VQMOV 1))]
!   "TARGET_FLOAT"
    {
      rtx dst = operands[0];
      rtx src = operands[1];
***************
*** 306,318 ****
          (vec_select:<VHALF>
            (match_operand:VQMOV 1 "register_operand")
            (match_operand 2 "ascending_int_parallel")))]
!   "TARGET_SIMD"
  )
  
  (define_expand "aarch64_get_low<mode>"
    [(match_operand:<VHALF> 0 "register_operand")
     (match_operand:VQMOV 1 "register_operand")]
!   "TARGET_SIMD"
    {
      rtx lo = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, false);
      emit_insn (gen_aarch64_get_half<mode> (operands[0], operands[1], lo));
--- 320,339 ----
          (vec_select:<VHALF>
            (match_operand:VQMOV 1 "register_operand")
            (match_operand 2 "ascending_int_parallel")))]
!   "TARGET_FLOAT"
!   {
!     if (vect_par_cnst_lo_half (operands[2], <MODE>mode))
!       {
! 	emit_move_insn (operands[0], gen_lowpart (<VHALF>mode, operands[1]));
! 	DONE;
!       }
!   }
  )
  
  (define_expand "aarch64_get_low<mode>"
    [(match_operand:<VHALF> 0 "register_operand")
     (match_operand:VQMOV 1 "register_operand")]
!   "TARGET_FLOAT"
    {
      rtx lo = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, false);
      emit_insn (gen_aarch64_get_half<mode> (operands[0], operands[1], lo));
***************
*** 323,329 ****
  (define_expand "aarch64_get_high<mode>"
    [(match_operand:<VHALF> 0 "register_operand")
     (match_operand:VQMOV 1 "register_operand")]
!   "TARGET_SIMD"
    {
      rtx hi = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
      emit_insn (gen_aarch64_get_half<mode> (operands[0], operands[1], hi));
--- 344,350 ----
  (define_expand "aarch64_get_high<mode>"
    [(match_operand:<VHALF> 0 "register_operand")
     (match_operand:VQMOV 1 "register_operand")]
!   "TARGET_FLOAT"
    {
      rtx hi = aarch64_simd_vect_par_cnst_half (<MODE>mode, <nunits>, true);
      emit_insn (gen_aarch64_get_half<mode> (operands[0], operands[1], hi));
***************
*** 350,364 ****
  )
  
  (define_insn "aarch64_simd_mov_from_<mode>high"
!   [(set (match_operand:<VHALF> 0 "register_operand" "=w,?r")
          (vec_select:<VHALF>
!           (match_operand:VQMOV_NO2E 1 "register_operand" "w,w")
            (match_operand:VQMOV_NO2E 2 "vect_par_cnst_hi_half" "")))]
!   "TARGET_SIMD"
    "@
!    dup\\t%d0, %1.d[1]
!    umov\t%0, %1.d[1]"
!   [(set_attr "type" "neon_dup<q>,neon_to_gp<q>")
     (set_attr "length" "4")]
  )
  
--- 371,387 ----
  )
  
  (define_insn "aarch64_simd_mov_from_<mode>high"
!   [(set (match_operand:<VHALF> 0 "register_operand" "=w,?r,?r")
          (vec_select:<VHALF>
!           (match_operand:VQMOV_NO2E 1 "register_operand" "w,w,w")
            (match_operand:VQMOV_NO2E 2 "vect_par_cnst_hi_half" "")))]
!   "TARGET_FLOAT"
    "@
!    dup\t%d0, %1.d[1]
!    umov\t%0, %1.d[1]
!    fmov\t%0, %1.d[1]"
!   [(set_attr "type" "neon_dup<q>,neon_to_gp<q>,f_mrc")
!    (set_attr "arch" "simd,simd,*")
     (set_attr "length" "4")]
  )
  
***************
*** 693,699 ****
    [(match_operand:VHSDF 0 "register_operand")
     (match_operand:VHSDF 1 "register_operand")
     (match_operand:VHSDF 2 "register_operand")]
!   "TARGET_FLOAT && TARGET_SIMD"
  {
    rtx v_bitmask = gen_reg_rtx (<V_INT_EQUIV>mode);
    int bits = GET_MODE_UNIT_BITSIZE (<MODE>mode) - 1;
--- 716,722 ----
    [(match_operand:VHSDF 0 "register_operand")
     (match_operand:VHSDF 1 "register_operand")
     (match_operand:VHSDF 2 "register_operand")]
!   "TARGET_SIMD"
  {
    rtx v_bitmask = gen_reg_rtx (<V_INT_EQUIV>mode);
    int bits = GET_MODE_UNIT_BITSIZE (<MODE>mode) - 1;
***************
*** 817,823 ****
  )
  
  ;; The intrinsic version of integer ABS must not be allowed to
! ;; combine with any operation with an integerated ABS step, such
  ;; as SABD.
  (define_insn "aarch64_abs<mode>"
    [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w")
--- 840,846 ----
  )
  
  ;; The intrinsic version of integer ABS must not be allowed to
! ;; combine with any operation with an integrated ABS step, such
  ;; as SABD.
  (define_insn "aarch64_abs<mode>"
    [(set (match_operand:VSDQ_I_DI 0 "register_operand" "=w")
***************
*** 1041,1047 ****
  		(match_operand:<VEL> 1 "aarch64_simd_nonimmediate_operand" "w,?r,Utv"))
  	    (match_operand:VALL_F16 3 "register_operand" "0,0,0")
  	    (match_operand:SI 2 "immediate_operand" "i,i,i")))]
!   "TARGET_SIMD"
    {
     int elt = ENDIAN_LANE_N (<nunits>, exact_log2 (INTVAL (operands[2])));
     operands[2] = GEN_INT ((HOST_WIDE_INT) 1 << elt);
--- 1064,1070 ----
  		(match_operand:<VEL> 1 "aarch64_simd_nonimmediate_operand" "w,?r,Utv"))
  	    (match_operand:VALL_F16 3 "register_operand" "0,0,0")
  	    (match_operand:SI 2 "immediate_operand" "i,i,i")))]
!   "TARGET_SIMD && exact_log2 (INTVAL (operands[2])) >= 0"
    {
     int elt = ENDIAN_LANE_N (<nunits>, exact_log2 (INTVAL (operands[2])));
     operands[2] = GEN_INT ((HOST_WIDE_INT) 1 << elt);
***************
*** 1070,1076 ****
  		  [(match_operand:SI 4 "immediate_operand" "i")])))
  	    (match_operand:VALL_F16 1 "register_operand" "0")
  	    (match_operand:SI 2 "immediate_operand" "i")))]
!   "TARGET_SIMD"
    {
      int elt = ENDIAN_LANE_N (<nunits>, exact_log2 (INTVAL (operands[2])));
      operands[2] = GEN_INT (HOST_WIDE_INT_1 << elt);
--- 1093,1099 ----
  		  [(match_operand:SI 4 "immediate_operand" "i")])))
  	    (match_operand:VALL_F16 1 "register_operand" "0")
  	    (match_operand:SI 2 "immediate_operand" "i")))]
!   "TARGET_SIMD && exact_log2 (INTVAL (operands[2])) >= 0"
    {
      int elt = ENDIAN_LANE_N (<nunits>, exact_log2 (INTVAL (operands[2])));
      operands[2] = GEN_INT (HOST_WIDE_INT_1 << elt);
***************
*** 1091,1097 ****
  		  [(match_operand:SI 4 "immediate_operand" "i")])))
  	    (match_operand:VALL_F16_NO_V2Q 1 "register_operand" "0")
  	    (match_operand:SI 2 "immediate_operand" "i")))]
!   "TARGET_SIMD"
    {
      int elt = ENDIAN_LANE_N (<nunits>, exact_log2 (INTVAL (operands[2])));
      operands[2] = GEN_INT (HOST_WIDE_INT_1 << elt);
--- 1114,1120 ----
  		  [(match_operand:SI 4 "immediate_operand" "i")])))
  	    (match_operand:VALL_F16_NO_V2Q 1 "register_operand" "0")
  	    (match_operand:SI 2 "immediate_operand" "i")))]
!   "TARGET_SIMD && exact_log2 (INTVAL (operands[2])) >= 0"
    {
      int elt = ENDIAN_LANE_N (<nunits>, exact_log2 (INTVAL (operands[2])));
      operands[2] = GEN_INT (HOST_WIDE_INT_1 << elt);
***************
*** 4226,4237 ****
    [(set_attr "type" "neon_to_gp<q>, neon_dup<q>, neon_store1_one_lane<q>")]
  )
  
  (define_insn "load_pair_lanes<mode>"
    [(set (match_operand:<VDBL> 0 "register_operand" "=w")
  	(vec_concat:<VDBL>
  	   (match_operand:VDCSIF 1 "memory_operand" "Utq")
  	   (match_operand:VDCSIF 2 "memory_operand" "m")))]
!   "TARGET_SIMD
     && aarch64_mergeable_load_pair_p (<VDBL>mode, operands[1], operands[2])"
    "ldr\\t%<single_dtype>0, %1"
    [(set_attr "type" "neon_load1_1reg<dblq>")]
--- 4249,4270 ----
    [(set_attr "type" "neon_to_gp<q>, neon_dup<q>, neon_store1_one_lane<q>")]
  )
  
+ (define_insn "*aarch64_get_high<mode>"
+   [(set (match_operand:<VEL> 0 "aarch64_simd_nonimmediate_operand" "=r")
+ 	(vec_select:<VEL>
+ 	  (match_operand:VQ_2E 1 "register_operand" "w")
+ 	  (parallel [(match_operand:SI 2 "immediate_operand")])))]
+   "TARGET_FLOAT && ENDIAN_LANE_N (<nunits>, INTVAL (operands[2])) == 1"
+   "fmov\t%0, %1.d[1]"
+   [(set_attr "type" "f_mrc")]
+ )
+ 
  (define_insn "load_pair_lanes<mode>"
    [(set (match_operand:<VDBL> 0 "register_operand" "=w")
  	(vec_concat:<VDBL>
  	   (match_operand:VDCSIF 1 "memory_operand" "Utq")
  	   (match_operand:VDCSIF 2 "memory_operand" "m")))]
!   "TARGET_FLOAT
     && aarch64_mergeable_load_pair_p (<VDBL>mode, operands[1], operands[2])"
    "ldr\\t%<single_dtype>0, %1"
    [(set_attr "type" "neon_load1_1reg<dblq>")]
***************
*** 4261,4267 ****
  	(vec_concat:<VDBL>
  	   (match_operand:VDCSIF 1 "register_operand" "w, r")
  	   (match_operand:VDCSIF 2 "register_operand" "w, r")))]
!   "TARGET_SIMD"
    "@
     stp\t%<single_type>1, %<single_type>2, %y0
     stp\t%<single_wx>1, %<single_wx>2, %y0"
--- 4294,4300 ----
  	(vec_concat:<VDBL>
  	   (match_operand:VDCSIF 1 "register_operand" "w, r")
  	   (match_operand:VDCSIF 2 "register_operand" "w, r")))]
!   "TARGET_FLOAT"
    "@
     stp\t%<single_type>1, %<single_type>2, %y0
     stp\t%<single_wx>1, %<single_wx>2, %y0"
***************
*** 4276,4314 ****
  ;; the register alternatives either don't accept or themselves disparage.
  
  (define_insn "*aarch64_combine_internal<mode>"
!   [(set (match_operand:<VDBL> 0 "aarch64_reg_or_mem_pair_operand" "=w, w, w, Umn, Umn")
  	(vec_concat:<VDBL>
! 	  (match_operand:VDCSIF 1 "register_operand" "0, 0, 0, ?w, ?r")
! 	  (match_operand:VDCSIF 2 "aarch64_simd_nonimmediate_operand" "w, ?r, Utv, w, ?r")))]
!   "TARGET_SIMD
     && !BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    "@
     ins\t%0.<single_type>[1], %2.<single_type>[0]
     ins\t%0.<single_type>[1], %<single_wx>2
     ld1\t{%0.<single_type>}[1], %2
     stp\t%<single_type>1, %<single_type>2, %y0
     stp\t%<single_wx>1, %<single_wx>2, %y0"
!   [(set_attr "type" "neon_ins<dblq>, neon_from_gp<dblq>, neon_load1_one_lane<dblq>, neon_stp, store_16")]
  )
  
  (define_insn "*aarch64_combine_internal_be<mode>"
!   [(set (match_operand:<VDBL> 0 "aarch64_reg_or_mem_pair_operand" "=w, w, w, Umn, Umn")
  	(vec_concat:<VDBL>
! 	  (match_operand:VDCSIF 2 "aarch64_simd_nonimmediate_operand" "w, ?r, Utv, ?w, ?r")
! 	  (match_operand:VDCSIF 1 "register_operand" "0, 0, 0, ?w, ?r")))]
!   "TARGET_SIMD
     && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    "@
     ins\t%0.<single_type>[1], %2.<single_type>[0]
     ins\t%0.<single_type>[1], %<single_wx>2
     ld1\t{%0.<single_type>}[1], %2
     stp\t%<single_type>2, %<single_type>1, %y0
     stp\t%<single_wx>2, %<single_wx>1, %y0"
!   [(set_attr "type" "neon_ins<dblq>, neon_from_gp<dblq>, neon_load1_one_lane<dblq>, neon_stp, store_16")]
  )
  
  ;; In this insn, operand 1 should be low, and operand 2 the high part of the
--- 4309,4352 ----
  ;; the register alternatives either don't accept or themselves disparage.
  
  (define_insn "*aarch64_combine_internal<mode>"
!   [(set (match_operand:<VDBL> 0 "aarch64_reg_or_mem_pair_operand" "=w, w, w, w, Umn, Umn")
  	(vec_concat:<VDBL>
! 	  (match_operand:VDCSIF 1 "register_operand" "0, 0, 0, 0, ?w, ?r")
! 	  (match_operand:VDCSIF 2 "aarch64_simd_nonimmediate_operand" "w, ?r, ?r, Utv, w, ?r")))]
!   "TARGET_FLOAT
     && !BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    "@
     ins\t%0.<single_type>[1], %2.<single_type>[0]
     ins\t%0.<single_type>[1], %<single_wx>2
+    fmov\t%0.d[1], %2
     ld1\t{%0.<single_type>}[1], %2
     stp\t%<single_type>1, %<single_type>2, %y0
     stp\t%<single_wx>1, %<single_wx>2, %y0"
!   [(set_attr "type" "neon_ins<dblq>, neon_from_gp<dblq>, f_mcr,
! 		     neon_load1_one_lane<dblq>, neon_stp, store_16")
!    (set_attr "arch" "simd,simd,*,simd,*,*")]
  )
  
  (define_insn "*aarch64_combine_internal_be<mode>"
!   [(set (match_operand:<VDBL> 0 "aarch64_reg_or_mem_pair_operand" "=w, w, w, w, Umn, Umn")
  	(vec_concat:<VDBL>
! 	  (match_operand:VDCSIF 2 "aarch64_simd_nonimmediate_operand" "w, ?r, ?r, Utv, ?w, ?r")
! 	  (match_operand:VDCSIF 1 "register_operand" "0, 0, 0, 0, ?w, ?r")))]
!   "TARGET_FLOAT
     && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <VDBL>mode)
         || register_operand (operands[2], <MODE>mode))"
    "@
     ins\t%0.<single_type>[1], %2.<single_type>[0]
     ins\t%0.<single_type>[1], %<single_wx>2
+    fmov\t%0.d[1], %2
     ld1\t{%0.<single_type>}[1], %2
     stp\t%<single_type>2, %<single_type>1, %y0
     stp\t%<single_wx>2, %<single_wx>1, %y0"
!   [(set_attr "type" "neon_ins<dblq>, neon_from_gp<dblq>, f_mcr, neon_load1_one_lane<dblq>, neon_stp, store_16")
!    (set_attr "arch" "simd,simd,*,simd,*,*")]
  )
  
  ;; In this insn, operand 1 should be low, and operand 2 the high part of the
***************
*** 4319,4331 ****
  	(vec_concat:<VDBL>
  	  (match_operand:VDCSIF 1 "nonimmediate_operand" "w,?r,m")
  	  (match_operand:VDCSIF 2 "aarch64_simd_or_scalar_imm_zero")))]
!   "TARGET_SIMD && !BYTES_BIG_ENDIAN"
    "@
     fmov\\t%<single_type>0, %<single_type>1
     fmov\t%<single_type>0, %<single_wx>1
     ldr\\t%<single_type>0, %1"
!   [(set_attr "type" "neon_move<q>, neon_from_gp, neon_load1_1reg")
!    (set_attr "arch" "simd,fp,simd")]
  )
  
  (define_insn "*aarch64_combinez_be<mode>"
--- 4357,4368 ----
  	(vec_concat:<VDBL>
  	  (match_operand:VDCSIF 1 "nonimmediate_operand" "w,?r,m")
  	  (match_operand:VDCSIF 2 "aarch64_simd_or_scalar_imm_zero")))]
!   "TARGET_FLOAT && !BYTES_BIG_ENDIAN"
    "@
     fmov\\t%<single_type>0, %<single_type>1
     fmov\t%<single_type>0, %<single_wx>1
     ldr\\t%<single_type>0, %1"
!   [(set_attr "type" "neon_move<q>, neon_from_gp, neon_load1_1reg")]
  )
  
  (define_insn "*aarch64_combinez_be<mode>"
***************
*** 4333,4345 ****
          (vec_concat:<VDBL>
  	  (match_operand:VDCSIF 2 "aarch64_simd_or_scalar_imm_zero")
  	  (match_operand:VDCSIF 1 "nonimmediate_operand" "w,?r,m")))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN"
    "@
     fmov\\t%<single_type>0, %<single_type>1
     fmov\t%<single_type>0, %<single_wx>1
     ldr\\t%<single_type>0, %1"
!   [(set_attr "type" "neon_move<q>, neon_from_gp, neon_load1_1reg")
!    (set_attr "arch" "simd,fp,simd")]
  )
  
  ;; Form a vector whose first half (in array order) comes from operand 1
--- 4370,4381 ----
          (vec_concat:<VDBL>
  	  (match_operand:VDCSIF 2 "aarch64_simd_or_scalar_imm_zero")
  	  (match_operand:VDCSIF 1 "nonimmediate_operand" "w,?r,m")))]
!   "TARGET_FLOAT && BYTES_BIG_ENDIAN"
    "@
     fmov\\t%<single_type>0, %<single_type>1
     fmov\t%<single_type>0, %<single_wx>1
     ldr\\t%<single_type>0, %1"
!   [(set_attr "type" "neon_move<q>, neon_from_gp, neon_load1_1reg")]
  )
  
  ;; Form a vector whose first half (in array order) comes from operand 1
***************
*** 4350,4356 ****
  	(vec_concat:<VDBL>
  	  (match_operand:VDCSIF 1 "general_operand")
  	  (match_operand:VDCSIF 2 "general_operand")))]
!   "TARGET_SIMD"
  {
    int lo = BYTES_BIG_ENDIAN ? 2 : 1;
    int hi = BYTES_BIG_ENDIAN ? 1 : 2;
--- 4386,4392 ----
  	(vec_concat:<VDBL>
  	  (match_operand:VDCSIF 1 "general_operand")
  	  (match_operand:VDCSIF 2 "general_operand")))]
!   "TARGET_FLOAT"
  {
    int lo = BYTES_BIG_ENDIAN ? 2 : 1;
    int hi = BYTES_BIG_ENDIAN ? 1 : 2;
***************
*** 4368,4374 ****
      }
    else
      {
!       /* Use *aarch64_combine_general<mode>.  */
        operands[lo] = force_reg (<MODE>mode, operands[lo]);
        if (!aarch64_simd_nonimmediate_operand (operands[hi], <MODE>mode))
  	{
--- 4404,4410 ----
      }
    else
      {
!       /* Use *aarch64_combine_internal<mode>.  */
        operands[lo] = force_reg (<MODE>mode, operands[lo]);
        if (!aarch64_simd_nonimmediate_operand (operands[hi], <MODE>mode))
  	{
***************
*** 4390,4396 ****
    [(match_operand:<VDBL> 0 "register_operand")
     (match_operand:VDC 1 "general_operand")
     (match_operand:VDC 2 "general_operand")]
!   "TARGET_SIMD"
  {
    if (BYTES_BIG_ENDIAN)
      std::swap (operands[1], operands[2]);
--- 4426,4432 ----
    [(match_operand:<VDBL> 0 "register_operand")
     (match_operand:VDC 1 "general_operand")
     (match_operand:VDC 2 "general_operand")]
!   "TARGET_FLOAT"
  {
    if (BYTES_BIG_ENDIAN)
      std::swap (operands[1], operands[2]);
***************
*** 4831,4836 ****
--- 4867,4896 ----
    }
  )
  
+ ;; Optimize ((a + b) >> n) + c where n is half the bitsize of the vector
+ (define_insn_and_split "*bitmask_shift_plus<mode>"
+   [(set (match_operand:VQN 0 "register_operand" "=&w")
+ 	(plus:VQN
+ 	  (lshiftrt:VQN
+ 	    (plus:VQN (match_operand:VQN 1 "register_operand" "w")
+ 		      (match_operand:VQN 2 "register_operand" "w"))
+ 	    (match_operand:VQN 3 "aarch64_simd_shift_imm_vec_exact_top" ""))
+ 	  (match_operand:VQN 4 "register_operand" "w")))]
+   "TARGET_SIMD"
+   "#"
+   "&& true"
+   [(const_int 0)]
+ {
+   rtx tmp;
+   if (can_create_pseudo_p ())
+     tmp = gen_reg_rtx (<VNARROWQ>mode);
+   else
+     tmp = gen_rtx_REG (<VNARROWQ>mode, REGNO (operands[0]));
+   emit_insn (gen_aarch64_addhn<mode> (tmp, operands[1], operands[2]));
+   emit_insn (gen_aarch64_uaddw<Vnarrowq> (operands[0], operands[4], tmp));
+   DONE;
+ })
+ 
  ;; pmul.
  
  (define_insn "aarch64_pmul<mode>"
***************
*** 7063,7069 ****
  (define_expand "mov<mode>"
    [(set (match_operand:VSTRUCT_QD 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT_QD 1 "general_operand"))]
!   "TARGET_SIMD"
  {
    if (can_create_pseudo_p ())
      {
--- 7123,7129 ----
  (define_expand "mov<mode>"
    [(set (match_operand:VSTRUCT_QD 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT_QD 1 "general_operand"))]
!   "TARGET_FLOAT"
  {
    if (can_create_pseudo_p ())
      {
***************
*** 7075,7081 ****
  (define_expand "mov<mode>"
    [(set (match_operand:VSTRUCT 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT 1 "general_operand"))]
!   "TARGET_SIMD"
  {
    if (can_create_pseudo_p ())
      {
--- 7135,7141 ----
  (define_expand "mov<mode>"
    [(set (match_operand:VSTRUCT 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT 1 "general_operand"))]
!   "TARGET_FLOAT"
  {
    if (can_create_pseudo_p ())
      {
***************
*** 7087,7093 ****
  (define_expand "movv8di"
    [(set (match_operand:V8DI 0 "nonimmediate_operand")
  	(match_operand:V8DI 1 "general_operand"))]
!   "TARGET_SIMD"
  {
    if (can_create_pseudo_p () && MEM_P (operands[0]))
      operands[1] = force_reg (V8DImode, operands[1]);
--- 7147,7153 ----
  (define_expand "movv8di"
    [(set (match_operand:V8DI 0 "nonimmediate_operand")
  	(match_operand:V8DI 1 "general_operand"))]
!   ""
  {
    if (can_create_pseudo_p () && MEM_P (operands[0]))
      operands[1] = force_reg (V8DImode, operands[1]);
***************
*** 7255,7261 ****
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_2D 0 "nonimmediate_operand" "=w,m,w")
  	(match_operand:VSTRUCT_2D 1 "general_operand"      " w,w,m"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "@
--- 7315,7322 ----
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_2D 0 "nonimmediate_operand" "=w,m,w")
  	(match_operand:VSTRUCT_2D 1 "general_operand"      " w,w,m"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "@
***************
*** 7269,7275 ****
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_2Q 0 "nonimmediate_operand" "=w,m,w")
  	(match_operand:VSTRUCT_2Q 1 "general_operand"      " w,w,m"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "@
--- 7330,7337 ----
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_2Q 0 "nonimmediate_operand" "=w,m,w")
  	(match_operand:VSTRUCT_2Q 1 "general_operand"      " w,w,m"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "@
***************
*** 7277,7289 ****
     stp\\t%q1, %R1, %0
     ldp\\t%q0, %R0, %1"
    [(set_attr "type" "multiple,neon_stp_q,neon_ldp_q")
     (set_attr "length" "8,4,4")]
  )
  
  (define_insn "*aarch64_be_movoi"
    [(set (match_operand:OI 0 "nonimmediate_operand" "=w,m,w")
  	(match_operand:OI 1 "general_operand"      " w,w,m"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], OImode)
         || register_operand (operands[1], OImode))"
    "@
--- 7339,7353 ----
     stp\\t%q1, %R1, %0
     ldp\\t%q0, %R0, %1"
    [(set_attr "type" "multiple,neon_stp_q,neon_ldp_q")
+    (set_attr "arch" "simd,*,*")
     (set_attr "length" "8,4,4")]
  )
  
  (define_insn "*aarch64_be_movoi"
    [(set (match_operand:OI 0 "nonimmediate_operand" "=w,m,w")
  	(match_operand:OI 1 "general_operand"      " w,w,m"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], OImode)
         || register_operand (operands[1], OImode))"
    "@
***************
*** 7291,7347 ****
     stp\\t%q1, %R1, %0
     ldp\\t%q0, %R0, %1"
    [(set_attr "type" "multiple,neon_stp_q,neon_ldp_q")
     (set_attr "length" "8,4,4")]
  )
  
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_3QD 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:VSTRUCT_3QD 1 "general_operand"      " w,w,o"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "#"
    [(set_attr "type" "multiple")
     (set_attr "length" "12,8,8")]
  )
  
  (define_insn "*aarch64_be_movci"
    [(set (match_operand:CI 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:CI 1 "general_operand"      " w,w,o"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], CImode)
         || register_operand (operands[1], CImode))"
    "#"
    [(set_attr "type" "multiple")
!    (set_attr "length" "12,4,4")]
  )
  
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_4QD 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:VSTRUCT_4QD 1 "general_operand"      " w,w,o"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "#"
    [(set_attr "type" "multiple")
     (set_attr "length" "16,8,8")]
  )
  
  (define_insn "*aarch64_be_movxi"
    [(set (match_operand:XI 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:XI 1 "general_operand"      " w,w,o"))]
!   "TARGET_SIMD && BYTES_BIG_ENDIAN
     && (register_operand (operands[0], XImode)
         || register_operand (operands[1], XImode))"
    "#"
    [(set_attr "type" "multiple")
!    (set_attr "length" "16,4,4")]
  )
  
  (define_split
    [(set (match_operand:VSTRUCT_2QD 0 "register_operand")
  	(match_operand:VSTRUCT_2QD 1 "register_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    aarch64_simd_emit_reg_reg_move (operands, <VSTRUCT_ELT>mode, 2);
--- 7355,7420 ----
     stp\\t%q1, %R1, %0
     ldp\\t%q0, %R0, %1"
    [(set_attr "type" "multiple,neon_stp_q,neon_ldp_q")
+    (set_attr "arch" "simd,*,*")
     (set_attr "length" "8,4,4")]
  )
  
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_3QD 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:VSTRUCT_3QD 1 "general_operand"      " w,w,o"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "#"
    [(set_attr "type" "multiple")
+    (set_attr "arch" "fp<q>,*,*")
     (set_attr "length" "12,8,8")]
  )
  
  (define_insn "*aarch64_be_movci"
    [(set (match_operand:CI 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:CI 1 "general_operand"      " w,w,o"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], CImode)
         || register_operand (operands[1], CImode))"
    "#"
    [(set_attr "type" "multiple")
!    (set_attr "arch" "simd,*,*")
!    (set_attr "length" "12,8,8")]
  )
  
  (define_insn "*aarch64_be_mov<mode>"
    [(set (match_operand:VSTRUCT_4QD 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:VSTRUCT_4QD 1 "general_operand"      " w,w,o"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))"
    "#"
    [(set_attr "type" "multiple")
+    (set_attr "arch" "fp<q>,*,*")
     (set_attr "length" "16,8,8")]
  )
  
  (define_insn "*aarch64_be_movxi"
    [(set (match_operand:XI 0 "nonimmediate_operand" "=w,o,w")
  	(match_operand:XI 1 "general_operand"      " w,w,o"))]
!   "TARGET_FLOAT
!    && (!TARGET_SIMD || BYTES_BIG_ENDIAN)
     && (register_operand (operands[0], XImode)
         || register_operand (operands[1], XImode))"
    "#"
    [(set_attr "type" "multiple")
!    (set_attr "arch" "simd,*,*")
!    (set_attr "length" "16,8,8")]
  )
  
  (define_split
    [(set (match_operand:VSTRUCT_2QD 0 "register_operand")
  	(match_operand:VSTRUCT_2QD 1 "register_operand"))]
!   "TARGET_FLOAT && reload_completed"
    [(const_int 0)]
  {
    aarch64_simd_emit_reg_reg_move (operands, <VSTRUCT_ELT>mode, 2);
***************
*** 7351,7357 ****
  (define_split
    [(set (match_operand:OI 0 "register_operand")
  	(match_operand:OI 1 "register_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    aarch64_simd_emit_reg_reg_move (operands, TImode, 2);
--- 7424,7430 ----
  (define_split
    [(set (match_operand:OI 0 "register_operand")
  	(match_operand:OI 1 "register_operand"))]
!   "TARGET_FLOAT && reload_completed"
    [(const_int 0)]
  {
    aarch64_simd_emit_reg_reg_move (operands, TImode, 2);
***************
*** 7361,7367 ****
  (define_split
    [(set (match_operand:VSTRUCT_3QD 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT_3QD 1 "general_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], <MODE>mode)
--- 7434,7440 ----
  (define_split
    [(set (match_operand:VSTRUCT_3QD 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT_3QD 1 "general_operand"))]
!   "TARGET_FLOAT && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], <MODE>mode)
***************
*** 7370,7376 ****
        aarch64_simd_emit_reg_reg_move (operands, <VSTRUCT_ELT>mode, 3);
        DONE;
      }
!   else if (BYTES_BIG_ENDIAN)
      {
        int elt_size = GET_MODE_SIZE (<MODE>mode).to_constant () / <nregs>;
        machine_mode pair_mode = elt_size == 16 ? V2x16QImode : V2x8QImode;
--- 7443,7449 ----
        aarch64_simd_emit_reg_reg_move (operands, <VSTRUCT_ELT>mode, 3);
        DONE;
      }
!   else if (!TARGET_SIMD || BYTES_BIG_ENDIAN)
      {
        int elt_size = GET_MODE_SIZE (<MODE>mode).to_constant () / <nregs>;
        machine_mode pair_mode = elt_size == 16 ? V2x16QImode : V2x8QImode;
***************
*** 7397,7403 ****
  (define_split
    [(set (match_operand:CI 0 "nonimmediate_operand")
  	(match_operand:CI 1 "general_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], CImode)
--- 7470,7476 ----
  (define_split
    [(set (match_operand:CI 0 "nonimmediate_operand")
  	(match_operand:CI 1 "general_operand"))]
!   "TARGET_FLOAT && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], CImode)
***************
*** 7406,7412 ****
        aarch64_simd_emit_reg_reg_move (operands, TImode, 3);
        DONE;
      }
!   else if (BYTES_BIG_ENDIAN)
      {
        emit_move_insn (simplify_gen_subreg (OImode, operands[0], CImode, 0),
  		      simplify_gen_subreg (OImode, operands[1], CImode, 0));
--- 7479,7485 ----
        aarch64_simd_emit_reg_reg_move (operands, TImode, 3);
        DONE;
      }
!   else if (!TARGET_SIMD || BYTES_BIG_ENDIAN)
      {
        emit_move_insn (simplify_gen_subreg (OImode, operands[0], CImode, 0),
  		      simplify_gen_subreg (OImode, operands[1], CImode, 0));
***************
*** 7425,7431 ****
  (define_split
    [(set (match_operand:VSTRUCT_4QD 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT_4QD 1 "general_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], <MODE>mode)
--- 7498,7504 ----
  (define_split
    [(set (match_operand:VSTRUCT_4QD 0 "nonimmediate_operand")
  	(match_operand:VSTRUCT_4QD 1 "general_operand"))]
!   "TARGET_FLOAT && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], <MODE>mode)
***************
*** 7434,7440 ****
        aarch64_simd_emit_reg_reg_move (operands, <VSTRUCT_ELT>mode, 4);
        DONE;
      }
!   else if (BYTES_BIG_ENDIAN)
      {
        int elt_size = GET_MODE_SIZE (<MODE>mode).to_constant () / <nregs>;
        machine_mode pair_mode = elt_size == 16 ? V2x16QImode : V2x8QImode;
--- 7507,7513 ----
        aarch64_simd_emit_reg_reg_move (operands, <VSTRUCT_ELT>mode, 4);
        DONE;
      }
!   else if (!TARGET_SIMD || BYTES_BIG_ENDIAN)
      {
        int elt_size = GET_MODE_SIZE (<MODE>mode).to_constant () / <nregs>;
        machine_mode pair_mode = elt_size == 16 ? V2x16QImode : V2x8QImode;
***************
*** 7455,7461 ****
  (define_split
    [(set (match_operand:XI 0 "nonimmediate_operand")
  	(match_operand:XI 1 "general_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], XImode)
--- 7528,7534 ----
  (define_split
    [(set (match_operand:XI 0 "nonimmediate_operand")
  	(match_operand:XI 1 "general_operand"))]
!   "TARGET_FLOAT && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], XImode)
***************
*** 7464,7470 ****
        aarch64_simd_emit_reg_reg_move (operands, TImode, 4);
        DONE;
      }
!   else if (BYTES_BIG_ENDIAN)
      {
        emit_move_insn (simplify_gen_subreg (OImode, operands[0], XImode, 0),
  		      simplify_gen_subreg (OImode, operands[1], XImode, 0));
--- 7537,7543 ----
        aarch64_simd_emit_reg_reg_move (operands, TImode, 4);
        DONE;
      }
!   else if (!TARGET_SIMD || BYTES_BIG_ENDIAN)
      {
        emit_move_insn (simplify_gen_subreg (OImode, operands[0], XImode, 0),
  		      simplify_gen_subreg (OImode, operands[1], XImode, 0));
***************
*** 7479,7485 ****
  (define_split
    [(set (match_operand:V8DI 0 "nonimmediate_operand")
          (match_operand:V8DI 1 "general_operand"))]
!   "TARGET_SIMD && reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], V8DImode)
--- 7552,7558 ----
  (define_split
    [(set (match_operand:V8DI 0 "nonimmediate_operand")
          (match_operand:V8DI 1 "general_operand"))]
!   "reload_completed"
    [(const_int 0)]
  {
    if (register_operand (operands[0], V8DImode)
***************
*** 7489,7503 ****
        DONE;
      }
    else if ((register_operand (operands[0], V8DImode)
!             && memory_operand (operands[1], V8DImode))
!            || (memory_operand (operands[0], V8DImode)
!             && register_operand (operands[1], V8DImode)))
      {
        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));
        DONE;
      }
    else
--- 7562,7576 ----
        DONE;
      }
    else if ((register_operand (operands[0], V8DImode)
! 	    && memory_operand (operands[1], V8DImode))
! 	   || (memory_operand (operands[0], V8DImode)
! 	       && register_operand (operands[1], V8DImode)))
      {
        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));
        DONE;
      }
    else
***************
*** 8026,8041 ****
  })
  
  ;; Extract a single-element 64-bit vector from one half of a 128-bit vector.
! (define_expand "vec_extractv2dfv1df"
!   [(match_operand:V1DF 0 "register_operand")
!    (match_operand:V2DF 1 "register_operand")
     (match_operand 2 "immediate_operand")]
    "TARGET_SIMD"
  {
!   /* V1DF is rarely used by other patterns, so it should be better to hide
!      it in a subreg destination of a normal DF op.  */
!   rtx scalar0 = gen_lowpart (DFmode, operands[0]);
!   emit_insn (gen_vec_extractv2dfdf (scalar0, operands[1], operands[2]));
    DONE;
  })
  
--- 8099,8114 ----
  })
  
  ;; Extract a single-element 64-bit vector from one half of a 128-bit vector.
! (define_expand "vec_extract<mode><V1half>"
!   [(match_operand:<V1HALF> 0 "register_operand")
!    (match_operand:VQ_2E 1 "register_operand")
     (match_operand 2 "immediate_operand")]
    "TARGET_SIMD"
  {
!   /* V1DI and V1DF are rarely used by other patterns, so it should be better
!      to hide it in a subreg destination of a normal DI or DF op.  */
!   rtx scalar0 = gen_lowpart (<VHALF>mode, operands[0]);
!   emit_insn (gen_vec_extract<mode><Vhalf> (scalar0, operands[1], operands[2]));
    DONE;
  })
  
***************
*** 8048,8054 ****
  		 (match_operand:V16QI 1 "register_operand" "%0")
  		 (match_operand:V16QI 2 "register_operand" "w"))]
           CRYPTO_AES))]
!   "TARGET_SIMD && TARGET_AES"
    "aes<aes_op>\\t%0.16b, %2.16b"
    [(set_attr "type" "crypto_aese")]
  )
--- 8121,8127 ----
  		 (match_operand:V16QI 1 "register_operand" "%0")
  		 (match_operand:V16QI 2 "register_operand" "w"))]
           CRYPTO_AES))]
!   "TARGET_AES"
    "aes<aes_op>\\t%0.16b, %2.16b"
    [(set_attr "type" "crypto_aese")]
  )
***************
*** 8057,8063 ****
    [(set (match_operand:V16QI 0 "register_operand" "=w")
  	(unspec:V16QI [(match_operand:V16QI 1 "register_operand" "w")]
  	 CRYPTO_AESMC))]
!   "TARGET_SIMD && TARGET_AES"
    "aes<aesmc_op>\\t%0.16b, %1.16b"
    [(set_attr "type" "crypto_aesmc")]
  )
--- 8130,8136 ----
    [(set (match_operand:V16QI 0 "register_operand" "=w")
  	(unspec:V16QI [(match_operand:V16QI 1 "register_operand" "w")]
  	 CRYPTO_AESMC))]
!   "TARGET_AES"
    "aes<aesmc_op>\\t%0.16b, %1.16b"
    [(set_attr "type" "crypto_aesmc")]
  )
***************
*** 8076,8082 ****
  		(match_operand:V16QI 2 "register_operand" "w"))]
  	     UNSPEC_AESE)]
  	UNSPEC_AESMC))]
!   "TARGET_SIMD && TARGET_AES
     && aarch64_fusion_enabled_p (AARCH64_FUSE_AES_AESMC)"
    "aese\\t%0.16b, %2.16b\;aesmc\\t%0.16b, %0.16b"
    [(set_attr "type" "crypto_aese")
--- 8149,8155 ----
  		(match_operand:V16QI 2 "register_operand" "w"))]
  	     UNSPEC_AESE)]
  	UNSPEC_AESMC))]
!   "TARGET_AES
     && aarch64_fusion_enabled_p (AARCH64_FUSE_AES_AESMC)"
    "aese\\t%0.16b, %2.16b\;aesmc\\t%0.16b, %0.16b"
    [(set_attr "type" "crypto_aese")
***************
*** 8097,8103 ****
  			(match_operand:V16QI 2 "register_operand" "w"))]
  		UNSPEC_AESD)]
  	  UNSPEC_AESIMC))]
!   "TARGET_SIMD && TARGET_AES
     && aarch64_fusion_enabled_p (AARCH64_FUSE_AES_AESMC)"
    "aesd\\t%0.16b, %2.16b\;aesimc\\t%0.16b, %0.16b"
    [(set_attr "type" "crypto_aese")
--- 8170,8176 ----
  			(match_operand:V16QI 2 "register_operand" "w"))]
  		UNSPEC_AESD)]
  	  UNSPEC_AESIMC))]
!   "TARGET_AES
     && aarch64_fusion_enabled_p (AARCH64_FUSE_AES_AESMC)"
    "aesd\\t%0.16b, %2.16b\;aesimc\\t%0.16b, %0.16b"
    [(set_attr "type" "crypto_aese")
***************
*** 8111,8117 ****
          (unspec:SI [(match_operand:SI 1
                         "register_operand" "w")]
           UNSPEC_SHA1H))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha1h\\t%s0, %s1"
    [(set_attr "type" "crypto_sha1_fast")]
  )
--- 8184,8190 ----
          (unspec:SI [(match_operand:SI 1
                         "register_operand" "w")]
           UNSPEC_SHA1H))]
!   "TARGET_SHA2"
    "sha1h\\t%s0, %s1"
    [(set_attr "type" "crypto_sha1_fast")]
  )
***************
*** 8121,8127 ****
  	(unspec:SI [(vec_select:SI (match_operand:V4SI 1 "register_operand" "w")
  		     (parallel [(const_int 0)]))]
  	 UNSPEC_SHA1H))]
!   "TARGET_SIMD && TARGET_SHA2 && !BYTES_BIG_ENDIAN"
    "sha1h\\t%s0, %s1"
    [(set_attr "type" "crypto_sha1_fast")]
  )
--- 8194,8200 ----
  	(unspec:SI [(vec_select:SI (match_operand:V4SI 1 "register_operand" "w")
  		     (parallel [(const_int 0)]))]
  	 UNSPEC_SHA1H))]
!   "TARGET_SHA2 && !BYTES_BIG_ENDIAN"
    "sha1h\\t%s0, %s1"
    [(set_attr "type" "crypto_sha1_fast")]
  )
***************
*** 8131,8137 ****
  	(unspec:SI [(vec_select:SI (match_operand:V4SI 1 "register_operand" "w")
  		     (parallel [(const_int 3)]))]
  	 UNSPEC_SHA1H))]
!   "TARGET_SIMD && TARGET_SHA2 && BYTES_BIG_ENDIAN"
    "sha1h\\t%s0, %s1"
    [(set_attr "type" "crypto_sha1_fast")]
  )
--- 8204,8210 ----
  	(unspec:SI [(vec_select:SI (match_operand:V4SI 1 "register_operand" "w")
  		     (parallel [(const_int 3)]))]
  	 UNSPEC_SHA1H))]
!   "TARGET_SHA2 && BYTES_BIG_ENDIAN"
    "sha1h\\t%s0, %s1"
    [(set_attr "type" "crypto_sha1_fast")]
  )
***************
*** 8141,8147 ****
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
                        (match_operand:V4SI 2 "register_operand" "w")]
           UNSPEC_SHA1SU1))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha1su1\\t%0.4s, %2.4s"
    [(set_attr "type" "crypto_sha1_fast")]
  )
--- 8214,8220 ----
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
                        (match_operand:V4SI 2 "register_operand" "w")]
           UNSPEC_SHA1SU1))]
!   "TARGET_SHA2"
    "sha1su1\\t%0.4s, %2.4s"
    [(set_attr "type" "crypto_sha1_fast")]
  )
***************
*** 8152,8158 ****
                        (match_operand:SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           CRYPTO_SHA1))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha1<sha1_op>\\t%q0, %s2, %3.4s"
    [(set_attr "type" "crypto_sha1_slow")]
  )
--- 8225,8231 ----
                        (match_operand:SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           CRYPTO_SHA1))]
!   "TARGET_SHA2"
    "sha1<sha1_op>\\t%q0, %s2, %3.4s"
    [(set_attr "type" "crypto_sha1_slow")]
  )
***************
*** 8163,8169 ****
                        (match_operand:V4SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           UNSPEC_SHA1SU0))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha1su0\\t%0.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sha1_xor")]
  )
--- 8236,8242 ----
                        (match_operand:V4SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           UNSPEC_SHA1SU0))]
!   "TARGET_SHA2"
    "sha1su0\\t%0.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sha1_xor")]
  )
***************
*** 8176,8182 ****
                        (match_operand:V4SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           CRYPTO_SHA256))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha256h<sha256_op>\\t%q0, %q2, %3.4s"
    [(set_attr "type" "crypto_sha256_slow")]
  )
--- 8249,8255 ----
                        (match_operand:V4SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           CRYPTO_SHA256))]
!   "TARGET_SHA2"
    "sha256h<sha256_op>\\t%q0, %q2, %3.4s"
    [(set_attr "type" "crypto_sha256_slow")]
  )
***************
*** 8186,8192 ****
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
                        (match_operand:V4SI 2 "register_operand" "w")]
           UNSPEC_SHA256SU0))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha256su0\\t%0.4s, %2.4s"
    [(set_attr "type" "crypto_sha256_fast")]
  )
--- 8259,8265 ----
          (unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
                        (match_operand:V4SI 2 "register_operand" "w")]
           UNSPEC_SHA256SU0))]
!   "TARGET_SHA2"
    "sha256su0\\t%0.4s, %2.4s"
    [(set_attr "type" "crypto_sha256_fast")]
  )
***************
*** 8197,8203 ****
                        (match_operand:V4SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           UNSPEC_SHA256SU1))]
!   "TARGET_SIMD && TARGET_SHA2"
    "sha256su1\\t%0.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sha256_slow")]
  )
--- 8270,8276 ----
                        (match_operand:V4SI 2 "register_operand" "w")
                        (match_operand:V4SI 3 "register_operand" "w")]
           UNSPEC_SHA256SU1))]
!   "TARGET_SHA2"
    "sha256su1\\t%0.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sha256_slow")]
  )
***************
*** 8210,8216 ****
                        (match_operand:V2DI 2 "register_operand" "w")
                        (match_operand:V2DI 3 "register_operand" "w")]
           CRYPTO_SHA512))]
!   "TARGET_SIMD && TARGET_SHA3"
    "sha512h<sha512_op>\\t%q0, %q2, %3.2d"
    [(set_attr "type" "crypto_sha512")]
  )
--- 8283,8289 ----
                        (match_operand:V2DI 2 "register_operand" "w")
                        (match_operand:V2DI 3 "register_operand" "w")]
           CRYPTO_SHA512))]
!   "TARGET_SHA3"
    "sha512h<sha512_op>\\t%q0, %q2, %3.2d"
    [(set_attr "type" "crypto_sha512")]
  )
***************
*** 8220,8226 ****
          (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
                        (match_operand:V2DI 2 "register_operand" "w")]
           UNSPEC_SHA512SU0))]
!   "TARGET_SIMD && TARGET_SHA3"
    "sha512su0\\t%0.2d, %2.2d"
    [(set_attr "type" "crypto_sha512")]
  )
--- 8293,8299 ----
          (unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0")
                        (match_operand:V2DI 2 "register_operand" "w")]
           UNSPEC_SHA512SU0))]
!   "TARGET_SHA3"
    "sha512su0\\t%0.2d, %2.2d"
    [(set_attr "type" "crypto_sha512")]
  )
***************
*** 8231,8237 ****
                        (match_operand:V2DI 2 "register_operand" "w")
                        (match_operand:V2DI 3 "register_operand" "w")]
           UNSPEC_SHA512SU1))]
!   "TARGET_SIMD && TARGET_SHA3"
    "sha512su1\\t%0.2d, %2.2d, %3.2d"
    [(set_attr "type" "crypto_sha512")]
  )
--- 8304,8310 ----
                        (match_operand:V2DI 2 "register_operand" "w")
                        (match_operand:V2DI 3 "register_operand" "w")]
           UNSPEC_SHA512SU1))]
!   "TARGET_SHA3"
    "sha512su1\\t%0.2d, %2.2d, %3.2d"
    [(set_attr "type" "crypto_sha512")]
  )
***************
*** 8245,8251 ****
  	  (match_operand:VQ_I 2 "register_operand" "w")
  	  (match_operand:VQ_I 3 "register_operand" "w"))
  	 (match_operand:VQ_I 1 "register_operand" "w")))]
!   "TARGET_SIMD && TARGET_SHA3"
    "eor3\\t%0.16b, %1.16b, %2.16b, %3.16b"
    [(set_attr "type" "crypto_sha3")]
  )
--- 8318,8324 ----
  	  (match_operand:VQ_I 2 "register_operand" "w")
  	  (match_operand:VQ_I 3 "register_operand" "w"))
  	 (match_operand:VQ_I 1 "register_operand" "w")))]
!   "TARGET_SHA3"
    "eor3\\t%0.16b, %1.16b, %2.16b, %3.16b"
    [(set_attr "type" "crypto_sha3")]
  )
***************
*** 8257,8263 ****
  	  (match_operand:V2DI 2 "register_operand" "w")
  	  (const_int 1))
  	 (match_operand:V2DI 1 "register_operand" "w")))]
!   "TARGET_SIMD && TARGET_SHA3"
    "rax1\\t%0.2d, %1.2d, %2.2d"
    [(set_attr "type" "crypto_sha3")]
  )
--- 8330,8336 ----
  	  (match_operand:V2DI 2 "register_operand" "w")
  	  (const_int 1))
  	 (match_operand:V2DI 1 "register_operand" "w")))]
!   "TARGET_SHA3"
    "rax1\\t%0.2d, %1.2d, %2.2d"
    [(set_attr "type" "crypto_sha3")]
  )
***************
*** 8269,8275 ****
  	  (match_operand:V2DI 1 "register_operand" "%w")
  	  (match_operand:V2DI 2 "register_operand" "w"))
  	 (match_operand:SI 3 "aarch64_simd_shift_imm_di" "Usd")))]
!   "TARGET_SIMD && TARGET_SHA3"
    "xar\\t%0.2d, %1.2d, %2.2d, %3"
    [(set_attr "type" "crypto_sha3")]
  )
--- 8342,8348 ----
  	  (match_operand:V2DI 1 "register_operand" "%w")
  	  (match_operand:V2DI 2 "register_operand" "w"))
  	 (match_operand:SI 3 "aarch64_simd_shift_imm_di" "Usd")))]
!   "TARGET_SHA3"
    "xar\\t%0.2d, %1.2d, %2.2d, %3"
    [(set_attr "type" "crypto_sha3")]
  )
***************
*** 8281,8287 ****
  	  (not:VQ_I (match_operand:VQ_I 3 "register_operand" "w"))
  	  (match_operand:VQ_I 2 "register_operand" "w"))
  	 (match_operand:VQ_I 1 "register_operand" "w")))]
!   "TARGET_SIMD && TARGET_SHA3"
    "bcax\\t%0.16b, %1.16b, %2.16b, %3.16b"
    [(set_attr "type" "crypto_sha3")]
  )
--- 8354,8360 ----
  	  (not:VQ_I (match_operand:VQ_I 3 "register_operand" "w"))
  	  (match_operand:VQ_I 2 "register_operand" "w"))
  	 (match_operand:VQ_I 1 "register_operand" "w")))]
!   "TARGET_SHA3"
    "bcax\\t%0.16b, %1.16b, %2.16b, %3.16b"
    [(set_attr "type" "crypto_sha3")]
  )
***************
*** 8294,8300 ****
  		      (match_operand:V4SI 2 "register_operand" "w")
  		      (match_operand:V4SI 3 "register_operand" "w")]
  	 UNSPEC_SM3SS1))]
!   "TARGET_SIMD && TARGET_SM4"
    "sm3ss1\\t%0.4s, %1.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sm3")]
  )
--- 8367,8373 ----
  		      (match_operand:V4SI 2 "register_operand" "w")
  		      (match_operand:V4SI 3 "register_operand" "w")]
  	 UNSPEC_SM3SS1))]
!   "TARGET_SM4"
    "sm3ss1\\t%0.4s, %1.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sm3")]
  )
***************
*** 8307,8313 ****
  		      (match_operand:V4SI 3 "register_operand" "w")
  		      (match_operand:SI 4 "aarch64_imm2" "Ui2")]
  	 CRYPTO_SM3TT))]
!   "TARGET_SIMD && TARGET_SM4"
    "sm3tt<sm3tt_op>\\t%0.4s, %2.4s, %3.4s[%4]"
    [(set_attr "type" "crypto_sm3")]
  )
--- 8380,8386 ----
  		      (match_operand:V4SI 3 "register_operand" "w")
  		      (match_operand:SI 4 "aarch64_imm2" "Ui2")]
  	 CRYPTO_SM3TT))]
!   "TARGET_SM4"
    "sm3tt<sm3tt_op>\\t%0.4s, %2.4s, %3.4s[%4]"
    [(set_attr "type" "crypto_sm3")]
  )
***************
*** 8318,8324 ****
  		      (match_operand:V4SI 2 "register_operand" "w")
  		      (match_operand:V4SI 3 "register_operand" "w")]
  	 CRYPTO_SM3PART))]
!   "TARGET_SIMD && TARGET_SM4"
    "sm3partw<sm3part_op>\\t%0.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sm3")]
  )
--- 8391,8397 ----
  		      (match_operand:V4SI 2 "register_operand" "w")
  		      (match_operand:V4SI 3 "register_operand" "w")]
  	 CRYPTO_SM3PART))]
!   "TARGET_SM4"
    "sm3partw<sm3part_op>\\t%0.4s, %2.4s, %3.4s"
    [(set_attr "type" "crypto_sm3")]
  )
***************
*** 8330,8336 ****
  	(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
  		      (match_operand:V4SI 2 "register_operand" "w")]
  	 UNSPEC_SM4E))]
!   "TARGET_SIMD && TARGET_SM4"
    "sm4e\\t%0.4s, %2.4s"
    [(set_attr "type" "crypto_sm4")]
  )
--- 8403,8409 ----
  	(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "0")
  		      (match_operand:V4SI 2 "register_operand" "w")]
  	 UNSPEC_SM4E))]
!   "TARGET_SM4"
    "sm4e\\t%0.4s, %2.4s"
    [(set_attr "type" "crypto_sm4")]
  )
***************
*** 8340,8346 ****
  	(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "w")
  		      (match_operand:V4SI 2 "register_operand" "w")]
  	 UNSPEC_SM4EKEY))]
!   "TARGET_SIMD && TARGET_SM4"
    "sm4ekey\\t%0.4s, %1.4s, %2.4s"
    [(set_attr "type" "crypto_sm4")]
  )
--- 8413,8419 ----
  	(unspec:V4SI [(match_operand:V4SI 1 "register_operand" "w")
  		      (match_operand:V4SI 2 "register_operand" "w")]
  	 UNSPEC_SM4EKEY))]
!   "TARGET_SM4"
    "sm4ekey\\t%0.4s, %1.4s, %2.4s"
    [(set_attr "type" "crypto_sm4")]
  )
***************
*** 8926,8932 ****
          (unspec:TI  [(match_operand:DI 1 "register_operand" "w")
  		     (match_operand:DI 2 "register_operand" "w")]
  		    UNSPEC_PMULL))]
!  "TARGET_SIMD && TARGET_AES"
   "pmull\\t%0.1q, %1.1d, %2.1d"
    [(set_attr "type" "crypto_pmull")]
  )
--- 8999,9005 ----
          (unspec:TI  [(match_operand:DI 1 "register_operand" "w")
  		     (match_operand:DI 2 "register_operand" "w")]
  		    UNSPEC_PMULL))]
!  "TARGET_AES"
   "pmull\\t%0.1q, %1.1d, %2.1d"
    [(set_attr "type" "crypto_pmull")]
  )
***************
*** 8936,8942 ****
         (unspec:TI [(match_operand:V2DI 1 "register_operand" "w")
  		   (match_operand:V2DI 2 "register_operand" "w")]
  		  UNSPEC_PMULL2))]
!   "TARGET_SIMD && TARGET_AES"
    "pmull2\\t%0.1q, %1.2d, %2.2d"
    [(set_attr "type" "crypto_pmull")]
  )
--- 9009,9015 ----
         (unspec:TI [(match_operand:V2DI 1 "register_operand" "w")
  		   (match_operand:V2DI 2 "register_operand" "w")]
  		  UNSPEC_PMULL2))]
!   "TARGET_AES"
    "pmull2\\t%0.1q, %1.2d, %2.2d"
    [(set_attr "type" "crypto_pmull")]
  )
***************
*** 9047,9053 ****
    [(set (match_operand:V4SF 0 "register_operand" "=w")
          (plus: V4SF (match_operand:V4SF 1 "register_operand" "0")
                      (unspec:V4SF [(match_operand:V8BF 2 "register_operand" "w")
!                                   (match_operand:VBF 3 "register_operand" "w")
                                    (match_operand:SI 4 "const_int_operand" "n")]
                       BF_MLA)))]
    "TARGET_BF16_SIMD"
--- 9120,9126 ----
    [(set (match_operand:V4SF 0 "register_operand" "=w")
          (plus: V4SF (match_operand:V4SF 1 "register_operand" "0")
                      (unspec:V4SF [(match_operand:V8BF 2 "register_operand" "w")
!                                   (match_operand:VBF 3 "register_operand" "x")
                                    (match_operand:SI 4 "const_int_operand" "n")]
                       BF_MLA)))]
    "TARGET_BF16_SIMD"
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-speculation.cc gcc-13.1.0/gcc/config/aarch64/aarch64-speculation.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-speculation.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-speculation.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Speculation tracking and mitigation (e.g. CVE 2017-5753) for AArch64.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Speculation tracking and mitigation (e.g. CVE 2017-5753) for AArch64.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 44,49 ****
--- 44,51 ----
  #include "aarch64-sve-builtins-shapes.h"
  #include "aarch64-sve-builtins-base.h"
  #include "aarch64-sve-builtins-functions.h"
+ #include "ssa.h"
+ #include "gimple-fold.h"
  
  using namespace aarch64_sve;
  
*************** class svabd_impl : public function_base
*** 148,154 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* The integer operations are represented as the subtraction of the
         minimum from the maximum, with the signedness of the instruction
--- 150,156 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* The integer operations are represented as the subtraction of the
         minimum from the maximum, with the signedness of the instruction
*************** public:
*** 179,185 ****
    CONSTEXPR svac_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.add_ptrue_hint (0, e.gp_mode (0));
      insn_code icode = code_for_aarch64_pred_fac (m_unspec, e.vector_mode (0));
--- 181,187 ----
    CONSTEXPR svac_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      e.add_ptrue_hint (0, e.gp_mode (0));
      insn_code icode = code_for_aarch64_pred_fac (m_unspec, e.vector_mode (0));
*************** class svadda_impl : public function_base
*** 194,200 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Put the predicate last, as required by mask_fold_left_plus_optab.  */
      e.rotate_inputs_left (0, 3);
--- 196,202 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Put the predicate last, as required by mask_fold_left_plus_optab.  */
      e.rotate_inputs_left (0, 3);
*************** public:
*** 211,217 ****
    CONSTEXPR svadr_bhwd_impl (unsigned int shift) : m_shift (shift) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = GET_MODE (e.args[0]);
      if (m_shift == 0)
--- 213,219 ----
    CONSTEXPR svadr_bhwd_impl (unsigned int shift) : m_shift (shift) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = GET_MODE (e.args[0]);
      if (m_shift == 0)
*************** class svbic_impl : public function_base
*** 231,237 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert svbic of a constant into svand of its inverse.  */
      if (CONST_INT_P (e.args[2]))
--- 233,239 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert svbic of a constant into svand of its inverse.  */
      if (CONST_INT_P (e.args[2]))
*************** public:
*** 261,267 ****
    CONSTEXPR svbrk_binary_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (code_for_aarch64_brk (m_unspec));
    }
--- 263,269 ----
    CONSTEXPR svbrk_binary_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (code_for_aarch64_brk (m_unspec));
    }
*************** public:
*** 277,283 ****
    CONSTEXPR svbrk_unary_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_cond_insn (code_for_aarch64_brk (m_unspec));
    }
--- 279,285 ----
    CONSTEXPR svbrk_unary_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_cond_insn (code_for_aarch64_brk (m_unspec));
    }
*************** class svcadd_impl : public function_base
*** 290,296 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 292,298 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** public:
*** 311,317 ****
    CONSTEXPR svclast_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Match the fold_extract_optab order.  */
      std::swap (e.args[0], e.args[1]);
--- 313,319 ----
    CONSTEXPR svclast_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Match the fold_extract_optab order.  */
      std::swap (e.args[0], e.args[1]);
*************** class svcmla_impl : public function_base
*** 332,338 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 334,340 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** class svcmla_lane_impl : public function
*** 355,361 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 357,363 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** public:
*** 384,390 ****
      : m_code (code), m_unspec_for_fp (unspec_for_fp) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree pg = gimple_call_arg (f.call, 0);
      tree rhs1 = gimple_call_arg (f.call, 1);
--- 386,392 ----
      : m_code (code), m_unspec_for_fp (unspec_for_fp) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree pg = gimple_call_arg (f.call, 0);
      tree rhs1 = gimple_call_arg (f.call, 1);
*************** public:
*** 406,412 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
  
--- 408,414 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
  
*************** public:
*** 442,448 ****
        m_unspec_for_uint (unspec_for_uint) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      bool unsigned_p = e.type_suffix (0).unsigned_p;
--- 444,450 ----
        m_unspec_for_uint (unspec_for_uint) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      bool unsigned_p = e.type_suffix (0).unsigned_p;
*************** class svcmpuo_impl : public quiet<functi
*** 480,486 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.add_ptrue_hint (0, e.gp_mode (0));
      return e.use_exact_insn (code_for_aarch64_pred_fcmuo (e.vector_mode (0)));
--- 482,488 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      e.add_ptrue_hint (0, e.gp_mode (0));
      return e.use_exact_insn (code_for_aarch64_pred_fcmuo (e.vector_mode (0)));
*************** class svcnot_impl : public function_base
*** 491,497 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      if (e.pred == PRED_x)
--- 493,499 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      if (e.pred == PRED_x)
*************** public:
*** 514,528 ****
    CONSTEXPR svcnt_bhwd_impl (machine_mode ref_mode) : m_ref_mode (ref_mode) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
!     tree count = build_int_cstu (TREE_TYPE (f.lhs),
! 				 GET_MODE_NUNITS (m_ref_mode));
!     return gimple_build_assign (f.lhs, count);
    }
  
    rtx
!   expand (function_expander &) const OVERRIDE
    {
      return gen_int_mode (GET_MODE_NUNITS (m_ref_mode), DImode);
    }
--- 516,528 ----
    CONSTEXPR svcnt_bhwd_impl (machine_mode ref_mode) : m_ref_mode (ref_mode) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
!     return f.fold_to_cstu (GET_MODE_NUNITS (m_ref_mode));
    }
  
    rtx
!   expand (function_expander &) const override
    {
      return gen_int_mode (GET_MODE_NUNITS (m_ref_mode), DImode);
    }
*************** public:
*** 535,545 ****
  class svcnt_bhwd_pat_impl : public svcnt_bhwd_impl
  {
  public:
!   CONSTEXPR svcnt_bhwd_pat_impl (machine_mode ref_mode)
!     : svcnt_bhwd_impl (ref_mode) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree pattern_arg = gimple_call_arg (f.call, 0);
      aarch64_svpattern pattern = (aarch64_svpattern) tree_to_shwi (pattern_arg);
--- 535,544 ----
  class svcnt_bhwd_pat_impl : public svcnt_bhwd_impl
  {
  public:
!   using svcnt_bhwd_impl::svcnt_bhwd_impl;
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree pattern_arg = gimple_call_arg (f.call, 0);
      aarch64_svpattern pattern = (aarch64_svpattern) tree_to_shwi (pattern_arg);
*************** public:
*** 553,568 ****
      unsigned int elements_per_vq = 128 / GET_MODE_UNIT_BITSIZE (m_ref_mode);
      HOST_WIDE_INT value = aarch64_fold_sve_cnt_pat (pattern, elements_per_vq);
      if (value >= 0)
!       {
! 	tree count = build_int_cstu (TREE_TYPE (f.lhs), value);
! 	return gimple_build_assign (f.lhs, count);
!       }
  
      return NULL;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      unsigned int elements_per_vq = 128 / GET_MODE_UNIT_BITSIZE (m_ref_mode);
      e.args.quick_push (gen_int_mode (elements_per_vq, DImode));
--- 552,564 ----
      unsigned int elements_per_vq = 128 / GET_MODE_UNIT_BITSIZE (m_ref_mode);
      HOST_WIDE_INT value = aarch64_fold_sve_cnt_pat (pattern, elements_per_vq);
      if (value >= 0)
!       return f.fold_to_cstu (value);
  
      return NULL;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      unsigned int elements_per_vq = 128 / GET_MODE_UNIT_BITSIZE (m_ref_mode);
      e.args.quick_push (gen_int_mode (elements_per_vq, DImode));
*************** class svcntp_impl : public function_base
*** 575,581 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      e.add_ptrue_hint (0, mode);
--- 571,577 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      e.add_ptrue_hint (0, mode);
*************** public:
*** 587,597 ****
  class svcreate_impl : public quiet<multi_vector_function>
  {
  public:
!   CONSTEXPR svcreate_impl (unsigned int vectors_per_tuple)
!     : quiet<multi_vector_function> (vectors_per_tuple) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      unsigned int nargs = gimple_call_num_args (f.call);
      tree lhs_type = TREE_TYPE (f.lhs);
--- 583,592 ----
  class svcreate_impl : public quiet<multi_vector_function>
  {
  public:
!   using quiet<multi_vector_function>::quiet;
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      unsigned int nargs = gimple_call_num_args (f.call);
      tree lhs_type = TREE_TYPE (f.lhs);
*************** public:
*** 621,627 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      rtx lhs_tuple = e.get_nonoverlapping_reg_target ();
  
--- 616,622 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      rtx lhs_tuple = e.get_nonoverlapping_reg_target ();
  
*************** class svcvt_impl : public function_base
*** 643,649 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode0 = e.vector_mode (0);
      machine_mode mode1 = e.vector_mode (1);
--- 638,644 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode0 = e.vector_mode (0);
      machine_mode mode1 = e.vector_mode (1);
*************** class svdot_impl : public function_base
*** 706,712 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* In the optab, the multiplication operands come before the accumulator
         operand.  The optab is keyed off the multiplication mode.  */
--- 701,707 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* In the optab, the multiplication operands come before the accumulator
         operand.  The optab is keyed off the multiplication mode.  */
*************** public:
*** 721,735 ****
  class svdotprod_lane_impl : public unspec_based_function_base
  {
  public:
!   CONSTEXPR svdotprod_lane_impl (int unspec_for_sint,
! 				 int unspec_for_uint,
! 				 int unspec_for_float)
!     : unspec_based_function_base (unspec_for_sint,
! 				  unspec_for_uint,
! 				  unspec_for_float) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Use the same ordering as the dot_prod_optab, with the
         accumulator last.  */
--- 716,725 ----
  class svdotprod_lane_impl : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Use the same ordering as the dot_prod_optab, with the
         accumulator last.  */
*************** class svdup_impl : public quiet<function
*** 744,750 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree vec_type = TREE_TYPE (f.lhs);
      tree rhs = gimple_call_arg (f.call, f.pred == PRED_none ? 0 : 1);
--- 734,740 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree vec_type = TREE_TYPE (f.lhs);
      tree rhs = gimple_call_arg (f.call, f.pred == PRED_none ? 0 : 1);
*************** public:
*** 784,790 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      if (e.pred == PRED_none || e.pred == PRED_x)
        /* There's no benefit to using predicated instructions for _x here.  */
--- 774,780 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      if (e.pred == PRED_none || e.pred == PRED_x)
        /* There's no benefit to using predicated instructions for _x here.  */
*************** class svdup_lane_impl : public quiet<fun
*** 812,818 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* The native DUP lane has an index range of 64 bytes.  */
      machine_mode mode = e.vector_mode (0);
--- 802,808 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* The native DUP lane has an index range of 64 bytes.  */
      machine_mode mode = e.vector_mode (0);
*************** class svdupq_impl : public quiet<functio
*** 829,835 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree vec_type = TREE_TYPE (f.lhs);
      unsigned int nargs = gimple_call_num_args (f.call);
--- 819,825 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree vec_type = TREE_TYPE (f.lhs);
      unsigned int nargs = gimple_call_num_args (f.call);
*************** public:
*** 851,857 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      unsigned int elements_per_vq = e.args.length ();
--- 841,847 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      unsigned int elements_per_vq = e.args.length ();
*************** class svdupq_lane_impl : public quiet<fu
*** 900,906 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      rtx index = e.args[1];
--- 890,896 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      rtx index = e.args[1];
*************** public:
*** 964,970 ****
      : m_from_mode (from_mode) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      if (e.type_suffix (0).unsigned_p)
        {
--- 954,960 ----
      : m_from_mode (from_mode) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      if (e.type_suffix (0).unsigned_p)
        {
*************** public:
*** 1002,1012 ****
  class svget_impl : public quiet<multi_vector_function>
  {
  public:
!   CONSTEXPR svget_impl (unsigned int vectors_per_tuple)
!     : quiet<multi_vector_function> (vectors_per_tuple) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* Fold into a normal gimple component access.  */
      tree rhs_tuple = gimple_call_arg (f.call, 0);
--- 992,1001 ----
  class svget_impl : public quiet<multi_vector_function>
  {
  public:
!   using quiet<multi_vector_function>::quiet;
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* Fold into a normal gimple component access.  */
      tree rhs_tuple = gimple_call_arg (f.call, 0);
*************** public:
*** 1020,1026 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Fold the access into a subreg rvalue.  */
      return simplify_gen_subreg (e.vector_mode (0), e.args[0],
--- 1009,1015 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Fold the access into a subreg rvalue.  */
      return simplify_gen_subreg (e.vector_mode (0), e.args[0],
*************** class svindex_impl : public function_bas
*** 1033,1039 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (e.direct_optab_handler (vec_series_optab));
    }
--- 1022,1028 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (e.direct_optab_handler (vec_series_optab));
    }
*************** class svinsr_impl : public quiet<functio
*** 1043,1049 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      gcall *new_call = gimple_build_call_internal (IFN_VEC_SHL_INSERT, 2,
  						  gimple_call_arg (f.call, 0),
--- 1032,1038 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      gcall *new_call = gimple_build_call_internal (IFN_VEC_SHL_INSERT, 2,
  						  gimple_call_arg (f.call, 0),
*************** public:
*** 1053,1059 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = direct_optab_handler (vec_shl_insert_optab,
  					    e.vector_mode (0));
--- 1042,1048 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = direct_optab_handler (vec_shl_insert_optab,
  					    e.vector_mode (0));
*************** public:
*** 1068,1074 ****
    CONSTEXPR svlast_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (code_for_extract (m_unspec, e.vector_mode (0)));
    }
--- 1057,1063 ----
    CONSTEXPR svlast_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (code_for_extract (m_unspec, e.vector_mode (0)));
    }
*************** class svld1_impl : public full_width_acc
*** 1081,1093 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree vectype = f.vector_type (0);
  
--- 1070,1082 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree vectype = f.vector_type (0);
  
*************** public:
*** 1105,1111 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = convert_optab_handler (maskload_optab,
  					     e.vector_mode (0), e.gp_mode (0));
--- 1094,1100 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = convert_optab_handler (maskload_optab,
  					     e.vector_mode (0), e.gp_mode (0));
*************** public:
*** 1117,1127 ****
  class svld1_extend_impl : public extending_load
  {
  public:
!   CONSTEXPR svld1_extend_impl (type_suffix_index memory_type)
!     : extending_load (memory_type) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_load (UNSPEC_LD1_SVE, extend_rtx_code (),
  					     e.vector_mode (0),
--- 1106,1115 ----
  class svld1_extend_impl : public extending_load
  {
  public:
!   using extending_load::extending_load;
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_load (UNSPEC_LD1_SVE, extend_rtx_code (),
  					     e.vector_mode (0),
*************** class svld1_gather_impl : public full_wi
*** 1134,1146 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, as required by mask_gather_load_optab.  */
--- 1122,1134 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, as required by mask_gather_load_optab.  */
*************** public:
*** 1157,1167 ****
  class svld1_gather_extend_impl : public extending_load
  {
  public:
!   CONSTEXPR svld1_gather_extend_impl (type_suffix_index memory_type)
!     : extending_load (memory_type) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, since the extending gathers use the same
--- 1145,1154 ----
  class svld1_gather_extend_impl : public extending_load
  {
  public:
!   using extending_load::extending_load;
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, since the extending gathers use the same
*************** class load_replicate : public function_b
*** 1180,1192 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    tree
!   memory_scalar_type (const function_instance &fi) const OVERRIDE
    {
      return fi.scalar_type (0);
    }
--- 1167,1179 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    tree
!   memory_scalar_type (const function_instance &fi) const override
    {
      return fi.scalar_type (0);
    }
*************** class svld1rq_impl : public load_replica
*** 1196,1225 ****
  {
  public:
    machine_mode
!   memory_vector_mode (const function_instance &fi) const OVERRIDE
    {
      return aarch64_vq_mode (GET_MODE_INNER (fi.vector_mode (0))).require ();
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_sve_ld1rq (e.vector_mode (0));
      return e.use_contiguous_load_insn (icode);
    }
  };
  
  class svld1ro_impl : public load_replicate
  {
  public:
    machine_mode
!   memory_vector_mode (const function_instance &) const OVERRIDE
    {
      return OImode;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_sve_ld1ro (e.vector_mode (0));
      return e.use_contiguous_load_insn (icode);
--- 1183,1276 ----
  {
  public:
    machine_mode
!   memory_vector_mode (const function_instance &fi) const override
    {
      return aarch64_vq_mode (GET_MODE_INNER (fi.vector_mode (0))).require ();
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_sve_ld1rq (e.vector_mode (0));
      return e.use_contiguous_load_insn (icode);
    }
+ 
+   gimple *
+   fold (gimple_folder &f) const override
+   {
+     tree arg0 = gimple_call_arg (f.call, 0);
+     tree arg1 = gimple_call_arg (f.call, 1);
+ 
+     /* Transform:
+        lhs = svld1rq ({-1, -1, ... }, arg1)
+        into:
+        tmp = mem_ref<vectype> [(elem * {ref-all}) arg1]
+        lhs = vec_perm_expr<tmp, tmp, {0, 1, 2, 3, ...}>.
+        on little endian target.
+        vectype is the corresponding ADVSIMD type.  */
+ 
+     if (!BYTES_BIG_ENDIAN
+ 	&& integer_all_onesp (arg0)
+ 	&& !flag_non_call_exceptions)
+       {
+ 	tree lhs = gimple_call_lhs (f.call);
+ 	tree lhs_type = TREE_TYPE (lhs);
+ 	poly_uint64 lhs_len = TYPE_VECTOR_SUBPARTS (lhs_type);
+ 	tree eltype = TREE_TYPE (lhs_type);
+ 
+ 	scalar_mode elmode = GET_MODE_INNER (TYPE_MODE (lhs_type));
+ 	machine_mode vq_mode = aarch64_vq_mode (elmode).require ();
+ 	tree vectype = build_vector_type_for_mode (eltype, vq_mode);
+ 
+ 	tree elt_ptr_type
+ 	  = build_pointer_type_for_mode (eltype, VOIDmode, true);
+ 	tree zero = build_zero_cst (elt_ptr_type);
+ 
+ 	/* Use element type alignment.  */
+ 	tree access_type
+ 	  = build_aligned_type (vectype, TYPE_ALIGN (eltype));
+ 
+ 	tree mem_ref_lhs = make_ssa_name_fn (cfun, access_type, 0);
+ 	tree mem_ref_op = fold_build2 (MEM_REF, access_type, arg1, zero);
+ 	gimple *mem_ref_stmt
+ 	  = gimple_build_assign (mem_ref_lhs, mem_ref_op);
+ 
+ 	gimple_seq stmts = NULL;
+ 	gimple_seq_add_stmt_without_update (&stmts, mem_ref_stmt);
+ 
+ 	int source_nelts = TYPE_VECTOR_SUBPARTS (access_type).to_constant ();
+ 	vec_perm_builder sel (lhs_len, source_nelts, 1);
+ 	for (int i = 0; i < source_nelts; i++)
+ 	  sel.quick_push (i);
+ 
+ 	vec_perm_indices indices (sel, 1, source_nelts);
+ 	gcc_checking_assert (can_vec_perm_const_p (TYPE_MODE (lhs_type),
+ 						   TYPE_MODE (access_type),
+ 						   indices));
+ 	tree mask_type = build_vector_type (ssizetype, lhs_len);
+ 	tree mask = vec_perm_indices_to_tree (mask_type, indices);
+ 	gimple *g2 = gimple_build_assign (lhs, VEC_PERM_EXPR,
+ 					  mem_ref_lhs, mem_ref_lhs, mask);
+ 	gimple_seq_add_stmt_without_update (&stmts, g2);
+ 	gsi_replace_with_seq_vops (f.gsi, stmts);
+ 	return g2;
+       }
+ 
+     return NULL;
+   }
  };
  
  class svld1ro_impl : public load_replicate
  {
  public:
    machine_mode
!   memory_vector_mode (const function_instance &) const override
    {
      return OImode;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_sve_ld1ro (e.vector_mode (0));
      return e.use_contiguous_load_insn (icode);
*************** public:
*** 1230,1246 ****
  class svld234_impl : public full_width_access
  {
  public:
!   CONSTEXPR svld234_impl (unsigned int vectors_per_tuple)
!     : full_width_access (vectors_per_tuple) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree tuple_type = TREE_TYPE (f.lhs);
      tree vectype = f.vector_type (0);
--- 1281,1296 ----
  class svld234_impl : public full_width_access
  {
  public:
!   using full_width_access::full_width_access;
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree tuple_type = TREE_TYPE (f.lhs);
      tree vectype = f.vector_type (0);
*************** public:
*** 1275,1281 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode tuple_mode = TYPE_MODE (TREE_TYPE (e.call_expr));
      insn_code icode = convert_optab_handler (vec_mask_load_lanes_optab,
--- 1325,1331 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode tuple_mode = TYPE_MODE (TREE_TYPE (e.call_expr));
      insn_code icode = convert_optab_handler (vec_mask_load_lanes_optab,
*************** class svldff1_gather_impl : public full_
*** 1288,1300 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY | CP_READ_FFR | CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
--- 1338,1350 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY | CP_READ_FFR | CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
*************** public:
*** 1313,1323 ****
  class svldff1_gather_extend : public extending_load
  {
  public:
!   CONSTEXPR svldff1_gather_extend (type_suffix_index memory_type)
!     : extending_load (memory_type) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
--- 1363,1372 ----
  class svldff1_gather_extend : public extending_load
  {
  public:
!   using extending_load::extending_load;
  
    rtx
!   expand (function_expander &e) const override
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
*************** class svldnt1_impl : public full_width_a
*** 1340,1352 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_ldnt1 (e.vector_mode (0));
      return e.use_contiguous_load_insn (icode);
--- 1389,1401 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_ldnt1 (e.vector_mode (0));
      return e.use_contiguous_load_insn (icode);
*************** public:
*** 1360,1372 ****
    CONSTEXPR svldxf1_impl (int unspec) : m_unspec (unspec) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY | CP_READ_FFR | CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
--- 1409,1421 ----
    CONSTEXPR svldxf1_impl (int unspec) : m_unspec (unspec) {}
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY | CP_READ_FFR | CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
*************** public:
*** 1388,1400 ****
      : extending_load (memory_type), m_unspec (unspec) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY | CP_READ_FFR | CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
--- 1437,1449 ----
      : extending_load (memory_type), m_unspec (unspec) {}
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY | CP_READ_FFR | CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
*************** class svlen_impl : public quiet<function
*** 1414,1420 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* The argument only exists for its type.  */
      tree rhs_type = TREE_TYPE (gimple_call_arg (f.call, 0));
--- 1463,1469 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* The argument only exists for its type.  */
      tree rhs_type = TREE_TYPE (gimple_call_arg (f.call, 0));
*************** public:
*** 1424,1430 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* The argument only exists for its type.  */
      return gen_int_mode (GET_MODE_NUNITS (e.vector_mode (0)), DImode);
--- 1473,1479 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* The argument only exists for its type.  */
      return gen_int_mode (GET_MODE_NUNITS (e.vector_mode (0)), DImode);
*************** class svmad_impl : public function_base
*** 1435,1441 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return expand_mad (e);
    }
--- 1484,1490 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      return expand_mad (e);
    }
*************** class svmla_impl : public function_base
*** 1445,1451 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Put the accumulator at the end (argument 3), but keep it as the
         merge input for _m functions.  */
--- 1494,1500 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Put the accumulator at the end (argument 3), but keep it as the
         merge input for _m functions.  */
*************** class svmla_lane_impl : public function_
*** 1458,1464 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      if (e.type_suffix (0).integer_p)
        {
--- 1507,1513 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      if (e.type_suffix (0).integer_p)
        {
*************** class svmls_impl : public function_base
*** 1473,1479 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Put the accumulator at the end (argument 3), but keep it as the
         merge input for _m functions.  */
--- 1522,1528 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Put the accumulator at the end (argument 3), but keep it as the
         merge input for _m functions.  */
*************** class svmov_impl : public function_base
*** 1486,1492 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      return gimple_build_assign (f.lhs, BIT_AND_EXPR,
  				gimple_call_arg (f.call, 0),
--- 1535,1541 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      return gimple_build_assign (f.lhs, BIT_AND_EXPR,
  				gimple_call_arg (f.call, 0),
*************** public:
*** 1494,1500 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* The canonical form for the assembler alias "MOV Pa.B, Pb/Z, Pc.B"
         is "AND Pa.B, Pb/Z, Pc.B, Pc.B".  */
--- 1543,1549 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* The canonical form for the assembler alias "MOV Pa.B, Pb/Z, Pc.B"
         is "AND Pa.B, Pb/Z, Pc.B, Pc.B".  */
*************** class svmls_lane_impl : public function_
*** 1508,1514 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      if (e.type_suffix (0).integer_p)
        {
--- 1557,1563 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      if (e.type_suffix (0).integer_p)
        {
*************** class svmmla_impl : public function_base
*** 1523,1529 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode;
      if (e.type_suffix (0).integer_p)
--- 1572,1578 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode;
      if (e.type_suffix (0).integer_p)
*************** class svmsb_impl : public function_base
*** 1543,1549 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return expand_msb (e);
    }
--- 1592,1598 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      return expand_msb (e);
    }
*************** class svnand_impl : public function_base
*** 1553,1559 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      gcc_assert (e.pred == PRED_z);
      return e.use_exact_insn (CODE_FOR_aarch64_pred_nandvnx16bi_z);
--- 1602,1608 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      gcc_assert (e.pred == PRED_z);
      return e.use_exact_insn (CODE_FOR_aarch64_pred_nandvnx16bi_z);
*************** class svnor_impl : public function_base
*** 1564,1570 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      gcc_assert (e.pred == PRED_z);
      return e.use_exact_insn (CODE_FOR_aarch64_pred_norvnx16bi_z);
--- 1613,1619 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      gcc_assert (e.pred == PRED_z);
      return e.use_exact_insn (CODE_FOR_aarch64_pred_norvnx16bi_z);
*************** public:
*** 1577,1583 ****
    CONSTEXPR svnot_impl () : rtx_code_function (NOT, NOT, -1) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      if (e.type_suffix_ids[0] == TYPE_SUFFIX_b)
        {
--- 1626,1632 ----
    CONSTEXPR svnot_impl () : rtx_code_function (NOT, NOT, -1) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      if (e.type_suffix_ids[0] == TYPE_SUFFIX_b)
        {
*************** class svorn_impl : public function_base
*** 1595,1601 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      gcc_assert (e.pred == PRED_z);
      return e.use_exact_insn (CODE_FOR_aarch64_pred_ornvnx16bi_z);
--- 1644,1650 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      gcc_assert (e.pred == PRED_z);
      return e.use_exact_insn (CODE_FOR_aarch64_pred_ornvnx16bi_z);
*************** class svpfalse_impl : public function_ba
*** 1606,1618 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      return f.fold_to_pfalse ();
    }
  
    rtx
!   expand (function_expander &) const OVERRIDE
    {
      return CONST0_RTX (VNx16BImode);
    }
--- 1655,1667 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      return f.fold_to_pfalse ();
    }
  
    rtx
!   expand (function_expander &) const override
    {
      return CONST0_RTX (VNx16BImode);
    }
*************** public:
*** 1625,1631 ****
    CONSTEXPR svpfirst_svpnext_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      e.add_ptrue_hint (0, mode);
--- 1674,1680 ----
    CONSTEXPR svpfirst_svpnext_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      e.add_ptrue_hint (0, mode);
*************** public:
*** 1643,1655 ****
    CONSTEXPR svprf_bhwd_impl (machine_mode mode) : m_mode (mode) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_PREFETCH_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_prefetch_operands ();
      insn_code icode = code_for_aarch64_sve_prefetch (m_mode);
--- 1692,1704 ----
    CONSTEXPR svprf_bhwd_impl (machine_mode mode) : m_mode (mode) {}
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_PREFETCH_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_prefetch_operands ();
      insn_code icode = code_for_aarch64_sve_prefetch (m_mode);
*************** public:
*** 1667,1685 ****
    CONSTEXPR svprf_bhwd_gather_impl (machine_mode mode) : m_mode (mode) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_PREFETCH_MEMORY;
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &) const OVERRIDE
    {
      return m_mode;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_prefetch_operands ();
      e.prepare_gather_address_operands (1);
--- 1716,1734 ----
    CONSTEXPR svprf_bhwd_gather_impl (machine_mode mode) : m_mode (mode) {}
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_PREFETCH_MEMORY;
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &) const override
    {
      return m_mode;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_prefetch_operands ();
      e.prepare_gather_address_operands (1);
*************** public:
*** 1705,1711 ****
    CONSTEXPR svptest_impl (rtx_code compare) : m_compare (compare) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* See whether GP is an exact ptrue for some predicate mode;
         i.e. whether converting the GP to that mode will not drop
--- 1754,1760 ----
    CONSTEXPR svptest_impl (rtx_code compare) : m_compare (compare) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* See whether GP is an exact ptrue for some predicate mode;
         i.e. whether converting the GP to that mode will not drop
*************** class svptrue_impl : public function_bas
*** 1751,1763 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      return f.fold_to_ptrue ();
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return aarch64_ptrue_all (e.type_suffix (0).element_bytes);
    }
--- 1800,1812 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      return f.fold_to_ptrue ();
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      return aarch64_ptrue_all (e.type_suffix (0).element_bytes);
    }
*************** class svptrue_pat_impl : public function
*** 1767,1773 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree pattern_arg = gimple_call_arg (f.call, 0);
      aarch64_svpattern pattern = (aarch64_svpattern) tree_to_shwi (pattern_arg);
--- 1816,1822 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree pattern_arg = gimple_call_arg (f.call, 0);
      aarch64_svpattern pattern = (aarch64_svpattern) tree_to_shwi (pattern_arg);
*************** public:
*** 1788,1794 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* In rtl, the predicate is represented as the constant:
  
--- 1837,1843 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* In rtl, the predicate is represented as the constant:
  
*************** public:
*** 1816,1822 ****
    {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Treat non-_pat functions in the same way as _pat functions with
         an SV_ALL argument.  */
--- 1865,1871 ----
    {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Treat non-_pat functions in the same way as _pat functions with
         an SV_ALL argument.  */
*************** public:
*** 1877,1883 ****
    {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      rtx_code code = (e.type_suffix (0).unsigned_p
  		     ? m_code_for_uint
--- 1926,1932 ----
    {}
  
    rtx
!   expand (function_expander &e) const override
    {
      rtx_code code = (e.type_suffix (0).unsigned_p
  		     ? m_code_for_uint
*************** class svrdffr_impl : public function_bas
*** 1908,1920 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_FFR;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
--- 1957,1969 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_FFR;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* See the block comment in aarch64-sve.md for details about the
         FFR handling.  */
*************** class svreinterpret_impl : public quiet<
*** 1931,1937 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* Punt to rtl if the effect of the reinterpret on registers does not
         conform to GCC's endianness model.  */
--- 1980,1986 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* Punt to rtl if the effect of the reinterpret on registers does not
         conform to GCC's endianness model.  */
*************** public:
*** 1947,1953 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      return e.use_exact_insn (code_for_aarch64_sve_reinterpret (mode));
--- 1996,2002 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      return e.use_exact_insn (code_for_aarch64_sve_reinterpret (mode));
*************** class svrev_impl : public permute
*** 1958,1964 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* Punt for now on _b16 and wider; we'd need more complex evpc logic
         to rerecognize the result.  */
--- 2007,2013 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* Punt for now on _b16 and wider; we'd need more complex evpc logic
         to rerecognize the result.  */
*************** public:
*** 1974,1980 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (code_for_aarch64_sve_rev (e.vector_mode (0)));
    }
--- 2023,2029 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (code_for_aarch64_sve_rev (e.vector_mode (0)));
    }
*************** class svsel_impl : public quiet<function
*** 1984,1990 ****
  {
  public:
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* svsel corresponds exactly to VEC_COND_EXPR.  */
      gimple_seq stmts = NULL;
--- 2033,2039 ----
  {
  public:
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* svsel corresponds exactly to VEC_COND_EXPR.  */
      gimple_seq stmts = NULL;
*************** public:
*** 1996,2002 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* svsel (cond, truev, falsev) is vcond_mask (truev, falsev, cond).  */
      e.rotate_inputs_left (0, 3);
--- 2045,2051 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      /* svsel (cond, truev, falsev) is vcond_mask (truev, falsev, cond).  */
      e.rotate_inputs_left (0, 3);
*************** public:
*** 2011,2021 ****
  class svset_impl : public quiet<multi_vector_function>
  {
  public:
!   CONSTEXPR svset_impl (unsigned int vectors_per_tuple)
!     : quiet<multi_vector_function> (vectors_per_tuple) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree rhs_tuple = gimple_call_arg (f.call, 0);
      tree index = gimple_call_arg (f.call, 1);
--- 2060,2069 ----
  class svset_impl : public quiet<multi_vector_function>
  {
  public:
!   using quiet<multi_vector_function>::quiet;
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree rhs_tuple = gimple_call_arg (f.call, 0);
      tree index = gimple_call_arg (f.call, 1);
*************** public:
*** 2042,2048 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      rtx rhs_tuple = e.args[0];
      unsigned int index = INTVAL (e.args[1]);
--- 2090,2096 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      rtx rhs_tuple = e.args[0];
      unsigned int index = INTVAL (e.args[1]);
*************** class svsetffr_impl : public function_ba
*** 2065,2077 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.args.quick_push (CONSTM1_RTX (VNx16BImode));
      return e.use_exact_insn (CODE_FOR_aarch64_wrffr);
--- 2113,2125 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.args.quick_push (CONSTM1_RTX (VNx16BImode));
      return e.use_exact_insn (CODE_FOR_aarch64_wrffr);
*************** class svst1_impl : public full_width_acc
*** 2082,2094 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree vectype = f.vector_type (0);
  
--- 2130,2142 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree vectype = f.vector_type (0);
  
*************** public:
*** 2105,2111 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = convert_optab_handler (maskstore_optab,
  					     e.vector_mode (0), e.gp_mode (0));
--- 2153,2159 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = convert_optab_handler (maskstore_optab,
  					     e.vector_mode (0), e.gp_mode (0));
*************** class svst1_scatter_impl : public full_w
*** 2117,2129 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, as required by mask_scatter_store_optab.  */
--- 2165,2177 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, as required by mask_scatter_store_optab.  */
*************** public:
*** 2140,2150 ****
  class svst1_scatter_truncate_impl : public truncating_store
  {
  public:
!   CONSTEXPR svst1_scatter_truncate_impl (scalar_int_mode to_mode)
!     : truncating_store (to_mode) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, since the truncating scatters use the same
--- 2188,2197 ----
  class svst1_scatter_truncate_impl : public truncating_store
  {
  public:
!   using truncating_store::truncating_store;
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1);
      /* Put the predicate last, since the truncating scatters use the same
*************** public:
*** 2160,2170 ****
  class svst1_truncate_impl : public truncating_store
  {
  public:
!   CONSTEXPR svst1_truncate_impl (scalar_int_mode to_mode)
!     : truncating_store (to_mode) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_store_trunc (e.memory_vector_mode (),
  						    e.vector_mode (0));
--- 2207,2216 ----
  class svst1_truncate_impl : public truncating_store
  {
  public:
!   using truncating_store::truncating_store;
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_store_trunc (e.memory_vector_mode (),
  						    e.vector_mode (0));
*************** public:
*** 2176,2192 ****
  class svst234_impl : public full_width_access
  {
  public:
!   CONSTEXPR svst234_impl (unsigned int vectors_per_tuple)
!     : full_width_access (vectors_per_tuple) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      tree vectype = f.vector_type (0);
  
--- 2222,2237 ----
  class svst234_impl : public full_width_access
  {
  public:
!   using full_width_access::full_width_access;
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_MEMORY;
    }
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      tree vectype = f.vector_type (0);
  
*************** public:
*** 2208,2214 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode tuple_mode = GET_MODE (e.args.last ());
      insn_code icode = convert_optab_handler (vec_mask_store_lanes_optab,
--- 2253,2259 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode tuple_mode = GET_MODE (e.args.last ());
      insn_code icode = convert_optab_handler (vec_mask_store_lanes_optab,
*************** class svstnt1_impl : public full_width_a
*** 2221,2233 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_stnt1 (e.vector_mode (0));
      return e.use_contiguous_store_insn (icode);
--- 2266,2278 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_stnt1 (e.vector_mode (0));
      return e.use_contiguous_store_insn (icode);
*************** public:
*** 2241,2247 ****
      : rtx_code_function (MINUS, MINUS, UNSPEC_COND_FSUB) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Canonicalize subtractions of constants to additions.  */
      machine_mode mode = e.vector_mode (0);
--- 2286,2292 ----
      : rtx_code_function (MINUS, MINUS, UNSPEC_COND_FSUB) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Canonicalize subtractions of constants to additions.  */
      machine_mode mode = e.vector_mode (0);
*************** class svtbl_impl : public permute
*** 2256,2262 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (code_for_aarch64_sve_tbl (e.vector_mode (0)));
    }
--- 2301,2307 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (code_for_aarch64_sve_tbl (e.vector_mode (0)));
    }
*************** public:
*** 2270,2276 ****
      : binary_permute (base ? UNSPEC_TRN2 : UNSPEC_TRN1), m_base (base) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* svtrn1: { 0, nelts, 2, nelts + 2, 4, nelts + 4, ... }
         svtrn2: as for svtrn1, but with 1 added to each index.  */
--- 2315,2321 ----
      : binary_permute (base ? UNSPEC_TRN2 : UNSPEC_TRN1), m_base (base) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* svtrn1: { 0, nelts, 2, nelts + 2, 4, nelts + 4, ... }
         svtrn2: as for svtrn1, but with 1 added to each index.  */
*************** public:
*** 2292,2302 ****
  class svundef_impl : public quiet<multi_vector_function>
  {
  public:
!   CONSTEXPR svundef_impl (unsigned int vectors_per_tuple)
!     : quiet<multi_vector_function> (vectors_per_tuple) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      rtx target = e.get_reg_target ();
      emit_clobber (copy_rtx (target));
--- 2337,2346 ----
  class svundef_impl : public quiet<multi_vector_function>
  {
  public:
!   using quiet<multi_vector_function>::quiet;
  
    rtx
!   expand (function_expander &e) const override
    {
      rtx target = e.get_reg_target ();
      emit_clobber (copy_rtx (target));
*************** public:
*** 2311,2317 ****
    CONSTEXPR svunpk_impl (bool high_p) : m_high_p (high_p) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* Don't fold the predicate ops, since every bit of the svbool_t
         result is significant.  */
--- 2355,2361 ----
    CONSTEXPR svunpk_impl (bool high_p) : m_high_p (high_p) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* Don't fold the predicate ops, since every bit of the svbool_t
         result is significant.  */
*************** public:
*** 2326,2332 ****
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = GET_MODE (e.args[0]);
      unsigned int unpacku = m_high_p ? UNSPEC_UNPACKUHI : UNSPEC_UNPACKULO;
--- 2370,2376 ----
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = GET_MODE (e.args[0]);
      unsigned int unpacku = m_high_p ? UNSPEC_UNPACKUHI : UNSPEC_UNPACKULO;
*************** public:
*** 2353,2359 ****
    CONSTEXPR svusdot_impl (bool su) : m_su (su) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* The implementation of the ACLE function svsudot (for the non-lane
         version) is through the USDOT instruction but with the second and third
--- 2397,2403 ----
    CONSTEXPR svusdot_impl (bool su) : m_su (su) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* The implementation of the ACLE function svsudot (for the non-lane
         version) is through the USDOT instruction but with the second and third
*************** public:
*** 2382,2388 ****
      : binary_permute (base ? UNSPEC_UZP2 : UNSPEC_UZP1), m_base (base) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* svuzp1: { 0, 2, 4, 6, ... }
         svuzp2: { 1, 3, 5, 7, ... }.  */
--- 2426,2432 ----
      : binary_permute (base ? UNSPEC_UZP2 : UNSPEC_UZP1), m_base (base) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* svuzp1: { 0, 2, 4, 6, ... }
         svuzp2: { 1, 3, 5, 7, ... }.  */
*************** public:
*** 2456,2462 ****
    }
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      if (f.type_suffix (1).unsigned_p)
        return fold_type<poly_uint64> (f);
--- 2500,2506 ----
    }
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      if (f.type_suffix (1).unsigned_p)
        return fold_type<poly_uint64> (f);
*************** class svwrffr_impl : public function_bas
*** 2472,2484 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (CODE_FOR_aarch64_wrffr);
    }
--- 2516,2528 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_FFR;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (CODE_FOR_aarch64_wrffr);
    }
*************** public:
*** 2492,2498 ****
      : binary_permute (base ? UNSPEC_ZIP2 : UNSPEC_ZIP1), m_base (base) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      /* svzip1: { 0, nelts, 1, nelts + 1, 2, nelts + 2, ... }
         svzip2: as for svzip1, but with nelts / 2 added to each index.  */
--- 2536,2542 ----
      : binary_permute (base ? UNSPEC_ZIP2 : UNSPEC_ZIP1), m_base (base) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      /* svzip1: { 0, nelts, 1, nelts + 1, 2, nelts + 2, ... }
         svzip2: as for svzip1, but with nelts / 2 added to each index.  */
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.def gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.h gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-base.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-base.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-functions.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (function_base classes)
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (function_base classes)
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** template<typename T>
*** 30,50 ****
  class quiet : public T
  {
  public:
!   CONSTEXPR quiet () : T () {}
! 
!   /* Unfortunately we can't use parameter packs yet.  */
!   template<typename T1>
!   CONSTEXPR quiet (const T1 &t1) : T (t1) {}
! 
!   template<typename T1, typename T2>
!   CONSTEXPR quiet (const T1 &t1, const T2 &t2) : T (t1, t2) {}
! 
!   template<typename T1, typename T2, typename T3>
!   CONSTEXPR quiet (const T1 &t1, const T2 &t2, const T3 &t3)
!     : T (t1, t2, t3) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return 0;
    }
--- 30,39 ----
  class quiet : public T
  {
  public:
!   using T::T;
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return 0;
    }
*************** public:
*** 59,65 ****
      : m_vectors_per_tuple (vectors_per_tuple) {}
  
    unsigned int
!   vectors_per_tuple () const OVERRIDE
    {
      return m_vectors_per_tuple;
    }
--- 48,54 ----
      : m_vectors_per_tuple (vectors_per_tuple) {}
  
    unsigned int
!   vectors_per_tuple () const override
    {
      return m_vectors_per_tuple;
    }
*************** public:
*** 78,90 ****
      : multi_vector_function (vectors_per_tuple) {}
  
    tree
!   memory_scalar_type (const function_instance &fi) const OVERRIDE
    {
      return fi.scalar_type (0);
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &fi) const OVERRIDE
    {
      machine_mode mode = fi.vector_mode (0);
      if (m_vectors_per_tuple != 1)
--- 67,79 ----
      : multi_vector_function (vectors_per_tuple) {}
  
    tree
!   memory_scalar_type (const function_instance &fi) const override
    {
      return fi.scalar_type (0);
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &fi) const override
    {
      machine_mode mode = fi.vector_mode (0);
      if (m_vectors_per_tuple != 1)
*************** public:
*** 103,121 ****
      : m_memory_type (memory_type) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    tree
!   memory_scalar_type (const function_instance &) const OVERRIDE
    {
      return scalar_types[type_suffixes[m_memory_type].vector_type];
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &fi) const OVERRIDE
    {
      machine_mode mem_mode = type_suffixes[m_memory_type].vector_mode;
      machine_mode reg_mode = fi.vector_mode (0);
--- 92,110 ----
      : m_memory_type (memory_type) {}
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    tree
!   memory_scalar_type (const function_instance &) const override
    {
      return scalar_types[type_suffixes[m_memory_type].vector_type];
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &fi) const override
    {
      machine_mode mem_mode = type_suffixes[m_memory_type].vector_mode;
      machine_mode reg_mode = fi.vector_mode (0);
*************** public:
*** 145,157 ****
    CONSTEXPR truncating_store (scalar_int_mode to_mode) : m_to_mode (to_mode) {}
  
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_MEMORY;
    }
  
    tree
!   memory_scalar_type (const function_instance &fi) const OVERRIDE
    {
      /* In truncating stores, the signedness of the memory element is defined
         to be the same as the signedness of the vector element.  The signedness
--- 134,146 ----
    CONSTEXPR truncating_store (scalar_int_mode to_mode) : m_to_mode (to_mode) {}
  
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_MEMORY;
    }
  
    tree
!   memory_scalar_type (const function_instance &fi) const override
    {
      /* In truncating stores, the signedness of the memory element is defined
         to be the same as the signedness of the vector element.  The signedness
*************** public:
*** 163,169 ****
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &fi) const OVERRIDE
    {
      poly_uint64 nunits = GET_MODE_NUNITS (fi.vector_mode (0));
      return aarch64_sve_data_mode (m_to_mode, nunits).require ();
--- 152,158 ----
    }
  
    machine_mode
!   memory_vector_mode (const function_instance &fi) const override
    {
      poly_uint64 nunits = GET_MODE_NUNITS (fi.vector_mode (0));
      return aarch64_sve_data_mode (m_to_mode, nunits).require ();
*************** public:
*** 200,211 ****
  class rtx_code_function : public rtx_code_function_base
  {
  public:
!   CONSTEXPR rtx_code_function (rtx_code code_for_sint, rtx_code code_for_uint,
! 			       int unspec_for_fp = -1)
!     : rtx_code_function_base (code_for_sint, code_for_uint, unspec_for_fp) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.map_to_rtx_codes (m_code_for_sint, m_code_for_uint,
  			       m_unspec_for_fp);
--- 189,198 ----
  class rtx_code_function : public rtx_code_function_base
  {
  public:
!   using rtx_code_function_base::rtx_code_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.map_to_rtx_codes (m_code_for_sint, m_code_for_uint,
  			       m_unspec_for_fp);
*************** public:
*** 219,231 ****
  class rtx_code_function_rotated : public rtx_code_function_base
  {
  public:
!   CONSTEXPR rtx_code_function_rotated (rtx_code code_for_sint,
! 				       rtx_code code_for_uint,
! 				       int unspec_for_fp = -1)
!     : rtx_code_function_base (code_for_sint, code_for_uint, unspec_for_fp) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Rotate the inputs into their normal order, but continue to make _m
         functions merge with what was originally the first vector argument.  */
--- 206,215 ----
  class rtx_code_function_rotated : public rtx_code_function_base
  {
  public:
!   using rtx_code_function_base::rtx_code_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Rotate the inputs into their normal order, but continue to make _m
         functions merge with what was originally the first vector argument.  */
*************** public:
*** 272,285 ****
  class unspec_based_function : public unspec_based_function_base
  {
  public:
!   CONSTEXPR unspec_based_function (int unspec_for_sint, int unspec_for_uint,
! 				   int unspec_for_fp)
!     : unspec_based_function_base (unspec_for_sint, unspec_for_uint,
! 				  unspec_for_fp)
!   {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.map_to_unspecs (m_unspec_for_sint, m_unspec_for_uint,
  			     m_unspec_for_fp);
--- 256,265 ----
  class unspec_based_function : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.map_to_unspecs (m_unspec_for_sint, m_unspec_for_uint,
  			     m_unspec_for_fp);
*************** public:
*** 293,307 ****
  class unspec_based_function_rotated : public unspec_based_function_base
  {
  public:
!   CONSTEXPR unspec_based_function_rotated (int unspec_for_sint,
! 					   int unspec_for_uint,
! 					   int unspec_for_fp)
!     : unspec_based_function_base (unspec_for_sint, unspec_for_uint,
! 				  unspec_for_fp)
!   {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Rotate the inputs into their normal order, but continue to make _m
         functions merge with what was originally the first vector argument.  */
--- 273,282 ----
  class unspec_based_function_rotated : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Rotate the inputs into their normal order, but continue to make _m
         functions merge with what was originally the first vector argument.  */
*************** template<insn_code (*CODE) (int, machine
*** 321,335 ****
  class unspec_based_function_exact_insn : public unspec_based_function_base
  {
  public:
!   CONSTEXPR unspec_based_function_exact_insn (int unspec_for_sint,
! 					      int unspec_for_uint,
! 					      int unspec_for_fp)
!     : unspec_based_function_base (unspec_for_sint, unspec_for_uint,
! 				  unspec_for_fp)
!   {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (CODE (unspec_for (e), e.vector_mode (0)));
    }
--- 296,305 ----
  class unspec_based_function_exact_insn : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (CODE (unspec_for (e), e.vector_mode (0)));
    }
*************** template<insn_code (*INT_CODE) (int, mac
*** 378,392 ****
  class unspec_based_fused_function : public unspec_based_function_base
  {
  public:
!   CONSTEXPR unspec_based_fused_function (int unspec_for_sint,
! 					 int unspec_for_uint,
! 					 int unspec_for_fp)
!     : unspec_based_function_base (unspec_for_sint, unspec_for_uint,
! 				  unspec_for_fp)
!   {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      int unspec = unspec_for (e);
      insn_code icode;
--- 348,357 ----
  class unspec_based_fused_function : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      int unspec = unspec_for (e);
      insn_code icode;
*************** template<insn_code (*INT_CODE) (int, mac
*** 413,427 ****
  class unspec_based_fused_lane_function : public unspec_based_function_base
  {
  public:
!   CONSTEXPR unspec_based_fused_lane_function (int unspec_for_sint,
! 					      int unspec_for_uint,
! 					      int unspec_for_fp)
!     : unspec_based_function_base (unspec_for_sint, unspec_for_uint,
! 				  unspec_for_fp)
!   {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      int unspec = unspec_for (e);
      insn_code icode;
--- 378,387 ----
  class unspec_based_fused_lane_function : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      int unspec = unspec_for (e);
      insn_code icode;
*************** class code_for_mode_function : public fu
*** 451,457 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (CODE_FOR_MODE (e.vector_mode (N)));
    }
--- 411,417 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (CODE_FOR_MODE (e.vector_mode (N)));
    }
*************** public:
*** 477,483 ****
    CONSTEXPR fixed_insn_function (insn_code code) : m_code (code) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (m_code);
    }
--- 437,443 ----
    CONSTEXPR fixed_insn_function (insn_code code) : m_code (code) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (m_code);
    }
*************** public:
*** 519,525 ****
    CONSTEXPR binary_permute (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      insn_code icode = code_for_aarch64_sve (m_unspec, e.vector_mode (0));
      return e.use_exact_insn (icode);
--- 479,485 ----
    CONSTEXPR binary_permute (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      insn_code icode = code_for_aarch64_sve (m_unspec, e.vector_mode (0));
      return e.use_exact_insn (icode);
*************** public:
*** 547,553 ****
    {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      int unspec = (!e.type_suffix (0).integer_p ? m_unspec_for_fp
--- 507,513 ----
    {}
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      int unspec = (!e.type_suffix (0).integer_p ? m_unspec_for_fp
*************** public:
*** 576,582 ****
      : m_code (code), m_wide_unspec (wide_unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      machine_mode elem_mode = GET_MODE_INNER (mode);
--- 536,542 ----
      : m_code (code), m_wide_unspec (wide_unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      machine_mode elem_mode = GET_MODE_INNER (mode);
*************** public:
*** 610,616 ****
    CONSTEXPR unary_count (rtx_code code) : m_code (code) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* The md patterns treat the operand as an integer.  */
      machine_mode mode = aarch64_sve_int_mode (e.vector_mode (0));
--- 570,576 ----
    CONSTEXPR unary_count (rtx_code code) : m_code (code) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* The md patterns treat the operand as an integer.  */
      machine_mode mode = aarch64_sve_int_mode (e.vector_mode (0));
*************** public:
*** 636,642 ****
    {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Suffix 0 determines the predicate mode, suffix 1 determines the
         scalar mode and signedness.  */
--- 596,602 ----
    {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* Suffix 0 determines the predicate mode, suffix 1 determines the
         scalar mode and signedness.  */
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** long_type_suffix (function_resolver &r,
*** 454,466 ****
  struct nonoverloaded_base : public function_shape
  {
    bool
!   explicit_type_suffix_p (unsigned int) const OVERRIDE
    {
      return true;
    }
  
    tree
!   resolve (function_resolver &) const OVERRIDE
    {
      gcc_unreachable ();
    }
--- 454,466 ----
  struct nonoverloaded_base : public function_shape
  {
    bool
!   explicit_type_suffix_p (unsigned int) const override
    {
      return true;
    }
  
    tree
!   resolve (function_resolver &) const override
    {
      gcc_unreachable ();
    }
*************** template<unsigned int EXPLICIT_MASK>
*** 472,478 ****
  struct overloaded_base : public function_shape
  {
    bool
!   explicit_type_suffix_p (unsigned int i) const OVERRIDE
    {
      return (EXPLICIT_MASK >> i) & 1;
    }
--- 472,478 ----
  struct overloaded_base : public function_shape
  {
    bool
!   explicit_type_suffix_p (unsigned int i) const override
    {
      return (EXPLICIT_MASK >> i) & 1;
    }
*************** struct adr_base : public overloaded_base
*** 484,490 ****
    /* The function takes two arguments: a vector base and a vector displacement
       (either an index or an offset).  Resolve based on them both.  */
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      mode_suffix_index mode;
--- 484,490 ----
    /* The function takes two arguments: a vector base and a vector displacement
       (either an index or an offset).  Resolve based on them both.  */
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      mode_suffix_index mode;
*************** template<type_class_index CLASS = functi
*** 503,509 ****
  struct binary_imm_narrowb_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
--- 503,509 ----
  struct binary_imm_narrowb_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
*************** struct binary_imm_narrowb_base : public
*** 515,521 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (1, 1);
    }
--- 515,521 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (1, 1);
    }
*************** template<type_class_index CLASS = functi
*** 528,534 ****
  struct binary_imm_narrowt_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
--- 528,534 ----
  struct binary_imm_narrowt_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
*************** struct binary_imm_narrowt_base : public
*** 540,546 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 540,546 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct binary_imm_narrowt_base : public
*** 560,573 ****
  struct binary_imm_long_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,vh0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
--- 560,573 ----
  struct binary_imm_long_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,vh0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
*************** struct inc_dec_base : public overloaded_
*** 623,629 ****
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_range (m_pat_p ? 2 : 1, 1, 16);
    }
--- 623,629 ----
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_range (m_pat_p ? 2 : 1, 1, 16);
    }
*************** struct load_contiguous_base : public ove
*** 637,643 ****
    /* Resolve a call based purely on a pointer argument.  The other arguments
       are a governing predicate and (for MODE_vnum) a vnum offset.  */
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      bool vnum_p = r.mode_suffix_id == MODE_vnum;
      gcc_assert (r.mode_suffix_id == MODE_none || vnum_p);
--- 637,643 ----
    /* Resolve a call based purely on a pointer argument.  The other arguments
       are a governing predicate and (for MODE_vnum) a vnum offset.  */
    tree
!   resolve (function_resolver &r) const override
    {
      bool vnum_p = r.mode_suffix_id == MODE_vnum;
      gcc_assert (r.mode_suffix_id == MODE_none || vnum_p);
*************** struct load_contiguous_base : public ove
*** 658,664 ****
  struct load_gather_sv_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      mode_suffix_index mode;
--- 658,664 ----
  struct load_gather_sv_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      mode_suffix_index mode;
*************** struct load_ext_gather_base : public ove
*** 686,692 ****
       The function has an explicit type suffix that determines the type
       of the loaded data.  */
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      /* No resolution is needed for a vector base with no displacement;
         there's a one-to-one mapping between short and long names.  */
--- 686,692 ----
       The function has an explicit type suffix that determines the type
       of the loaded data.  */
    tree
!   resolve (function_resolver &r) const override
    {
      /* No resolution is needed for a vector base with no displacement;
         there's a one-to-one mapping between short and long names.  */
*************** struct load_ext_gather_base : public ove
*** 713,719 ****
  struct mmla_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      /* svmmla is distributed over several extensions.  Allow the common
--- 713,719 ----
  struct mmla_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      /* svmmla is distributed over several extensions.  Allow the common
*************** struct mmla_def : public overloaded_base
*** 729,735 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 729,735 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct prefetch_gather_base : public ove
*** 769,775 ****
       The prefetch operation is the final argument.  This is purely a
       mode-based resolution; there are no type suffixes.  */
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      bool has_displacement_p = r.displacement_units () != UNITS_none;
  
--- 769,775 ----
       The prefetch operation is the final argument.  This is purely a
       mode-based resolution; there are no type suffixes.  */
    tree
!   resolve (function_resolver &r) const override
    {
      bool has_displacement_p = r.displacement_units () != UNITS_none;
  
*************** template<typename BASE, unsigned int N>
*** 791,797 ****
  struct shift_right_imm_narrow_wrapper : public BASE
  {
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bits = c.type_suffix (0).element_bits / 2;
      return c.require_immediate_range (N, 1, bits);
--- 791,797 ----
  struct shift_right_imm_narrow_wrapper : public BASE
  {
    bool
!   check (function_checker &c) const override
    {
      unsigned int bits = c.type_suffix (0).element_bits / 2;
      return c.require_immediate_range (N, 1, bits);
*************** struct store_scatter_base : public overl
*** 811,817 ****
       The stored data is the final argument, and it determines the
       type suffix.  */
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      bool has_displacement_p = r.displacement_units () != UNITS_none;
  
--- 811,817 ----
       The stored data is the final argument, and it determines the
       type suffix.  */
    tree
!   resolve (function_resolver &r) const override
    {
      bool has_displacement_p = r.displacement_units () != UNITS_none;
  
*************** struct store_scatter_base : public overl
*** 832,845 ****
  struct ternary_shift_imm_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,v0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2, 1);
    }
--- 832,845 ----
  struct ternary_shift_imm_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,v0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2, 1);
    }
*************** template<unsigned int MODIFIER,
*** 862,868 ****
  struct ternary_resize2_opt_n_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 862,868 ----
  struct ternary_resize2_opt_n_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** template<unsigned int MODIFIER,
*** 884,890 ****
  struct ternary_resize2_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 884,890 ----
  struct ternary_resize2_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** template<unsigned int MODIFIER,
*** 908,914 ****
  struct ternary_resize2_lane_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 908,914 ----
  struct ternary_resize2_lane_base : public overloaded_base<0>
  {
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct ternary_bfloat_lane_base
*** 932,945 ****
    : public ternary_resize2_lane_base<16, TYPE_bfloat, TYPE_bfloat>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vB,vB,su64", group, MODE_none);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_lane_index (3, N);
    }
--- 932,945 ----
    : public ternary_resize2_lane_base<16, TYPE_bfloat, TYPE_bfloat>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vB,vB,su64", group, MODE_none);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_lane_index (3, N);
    }
*************** struct ternary_qq_lane_base
*** 954,960 ****
  				     TYPE_CLASS2, TYPE_CLASS3>
  {
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_lane_index (3, 4);
    }
--- 954,960 ----
  				     TYPE_CLASS2, TYPE_CLASS3>
  {
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_lane_index (3, 4);
    }
*************** template<type_class_index CLASS = functi
*** 966,972 ****
  struct unary_narrowb_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
--- 966,972 ----
  struct unary_narrowb_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
*************** struct unary_narrowb_base : public overl
*** 978,984 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_unary (CLASS, r.HALF_SIZE);
    }
--- 978,984 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_unary (CLASS, r.HALF_SIZE);
    }
*************** template<type_class_index CLASS = functi
*** 991,997 ****
  struct unary_narrowt_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
--- 991,997 ----
  struct unary_narrowt_base : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      STATIC_ASSERT (CLASS == function_resolver::SAME_TYPE_CLASS
*************** struct unary_narrowt_base : public overl
*** 1003,1009 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1003,1009 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct unary_narrowt_base : public overl
*** 1023,1029 ****
  struct adr_index_def : public adr_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      build_all (b, "b,b,d", group, MODE_u32base_s32index);
--- 1023,1029 ----
  struct adr_index_def : public adr_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      build_all (b, "b,b,d", group, MODE_u32base_s32index);
*************** SHAPE (adr_index)
*** 1041,1047 ****
  struct adr_offset_def : public adr_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_offset);
      build_all (b, "b,b,d", group, MODE_u32base_s32offset);
--- 1041,1047 ----
  struct adr_offset_def : public adr_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_offset);
      build_all (b, "b,b,d", group, MODE_u32base_s32offset);
*************** SHAPE (adr_offset)
*** 1058,1071 ****
  struct binary_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2);
    }
--- 1058,1071 ----
  struct binary_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2);
    }
*************** SHAPE (binary)
*** 1080,1086 ****
  struct binary_int_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vs0", group, MODE_none);
--- 1080,1086 ----
  struct binary_int_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vs0", group, MODE_none);
*************** struct binary_int_opt_n_def : public ove
*** 1088,1094 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1088,1094 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_int_opt_n)
*** 1108,1127 ****
  struct binary_lane_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_lane_index (2);
    }
--- 1108,1127 ----
  struct binary_lane_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_lane_index (2);
    }
*************** SHAPE (binary_lane)
*** 1135,1148 ****
  struct binary_long_lane_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0,vh0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
--- 1135,1148 ----
  struct binary_long_lane_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0,vh0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
*************** struct binary_long_lane_def : public ove
*** 1160,1166 ****
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_lane_index (2);
    }
--- 1160,1166 ----
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_lane_index (2);
    }
*************** SHAPE (binary_long_lane)
*** 1172,1178 ****
  struct binary_long_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0,vh0", group, MODE_none);
--- 1172,1178 ----
  struct binary_long_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0,vh0", group, MODE_none);
*************** struct binary_long_opt_n_def : public ov
*** 1180,1186 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
--- 1180,1186 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
*************** SHAPE (binary_long_opt_n)
*** 1202,1215 ****
  struct binary_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,s0", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1202,1215 ----
  struct binary_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,s0", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_n)
*** 1231,1237 ****
  struct binary_narrowb_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vh0,v0,v0", group, MODE_none);
--- 1231,1237 ----
  struct binary_narrowb_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vh0,v0,v0", group, MODE_none);
*************** struct binary_narrowb_opt_n_def : public
*** 1239,1245 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform_opt_n (2);
    }
--- 1239,1245 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform_opt_n (2);
    }
*************** SHAPE (binary_narrowb_opt_n)
*** 1253,1259 ****
  struct binary_narrowt_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vh0,vh0,v0,v0", group, MODE_none);
--- 1253,1259 ----
  struct binary_narrowt_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vh0,vh0,v0,v0", group, MODE_none);
*************** struct binary_narrowt_opt_n_def : public
*** 1261,1267 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1261,1267 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_narrowt_opt_n)
*** 1284,1290 ****
  struct binary_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0", group, MODE_none);
--- 1284,1290 ----
  struct binary_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0", group, MODE_none);
*************** struct binary_opt_n_def : public overloa
*** 1298,1304 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform_opt_n (2);
    }
--- 1298,1304 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform_opt_n (2);
    }
*************** SHAPE (binary_opt_n)
*** 1309,1315 ****
  struct binary_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "v0,v0,v0", group, MODE_none);
    }
--- 1309,1315 ----
  struct binary_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "v0,v0,v0", group, MODE_none);
    }
*************** SHAPE (binary_pred)
*** 1322,1341 ****
  struct binary_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_either_or (2, 90, 270);
    }
--- 1322,1341 ----
  struct binary_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_either_or (2, 90, 270);
    }
*************** SHAPE (binary_rotate)
*** 1349,1355 ****
  struct binary_scalar_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "v0,s0,s0", group, MODE_none);
    }
--- 1349,1355 ----
  struct binary_scalar_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "v0,s0,s0", group, MODE_none);
    }
*************** SHAPE (binary_scalar)
*** 1362,1375 ****
  struct binary_to_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vu0,v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2);
    }
--- 1362,1375 ----
  struct binary_to_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vu0,v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2);
    }
*************** SHAPE (binary_to_uint)
*** 1383,1396 ****
  struct binary_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1383,1396 ----
  struct binary_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_uint)
*** 1411,1424 ****
  struct binary_uint_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,su0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1411,1424 ----
  struct binary_uint_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,su0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_uint_n)
*** 1440,1446 ****
  struct binary_uint_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vu0", group, MODE_none);
--- 1440,1446 ----
  struct binary_uint_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vu0", group, MODE_none);
*************** struct binary_uint_opt_n_def : public ov
*** 1448,1454 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1448,1454 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_uint_opt_n)
*** 1468,1481 ****
  struct binary_uint64_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1468,1481 ----
  struct binary_uint64_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_uint64_n)
*** 1497,1503 ****
  struct binary_uint64_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vu64", group, MODE_none);
--- 1497,1503 ----
  struct binary_uint64_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vu64", group, MODE_none);
*************** struct binary_uint64_opt_n_def : public
*** 1505,1511 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1505,1511 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_uint64_opt_n)
*** 1522,1535 ****
  struct binary_wide_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1522,1535 ----
  struct binary_wide_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_wide)
*** 1549,1555 ****
  struct binary_wide_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0", group, MODE_none);
--- 1549,1555 ----
  struct binary_wide_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0", group, MODE_none);
*************** struct binary_wide_opt_n_def : public ov
*** 1557,1563 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1557,1563 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (binary_wide_opt_n)
*** 1576,1582 ****
  struct clast_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0", group, MODE_none);
--- 1576,1582 ----
  struct clast_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0", group, MODE_none);
*************** struct clast_def : public overloaded_bas
*** 1584,1590 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      if (!r.check_gp_argument (2, i, nargs)
--- 1584,1590 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      if (!r.check_gp_argument (2, i, nargs)
*************** SHAPE (clast)
*** 1615,1628 ****
  struct compare_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2);
    }
--- 1615,1628 ----
  struct compare_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2);
    }
*************** SHAPE (compare)
*** 1636,1642 ****
  struct compare_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,v0,v0", group, MODE_none);
--- 1636,1642 ----
  struct compare_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,v0,v0", group, MODE_none);
*************** struct compare_opt_n_def : public overlo
*** 1644,1650 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform_opt_n (2);
    }
--- 1644,1650 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform_opt_n (2);
    }
*************** SHAPE (compare_opt_n)
*** 1655,1668 ****
  struct compare_ptr_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,al,al", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1655,1668 ----
  struct compare_ptr_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,al,al", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (compare_ptr)
*** 1684,1697 ****
  struct compare_scalar_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,s1,s1", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1684,1697 ----
  struct compare_scalar_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,s1,s1", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (compare_scalar)
*** 1714,1720 ****
  struct compare_wide_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,v0,vw0", group, MODE_none);
--- 1714,1720 ----
  struct compare_wide_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vp,v0,vw0", group, MODE_none);
*************** struct compare_wide_opt_n_def : public o
*** 1722,1728 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1722,1728 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (compare_wide_opt_n)
*** 1739,1745 ****
  struct count_inherent_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "su64", group, MODE_none);
    }
--- 1739,1745 ----
  struct count_inherent_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "su64", group, MODE_none);
    }
*************** SHAPE (count_inherent)
*** 1750,1756 ****
  struct count_pat_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "su64,epattern", group, MODE_none);
    }
--- 1750,1756 ----
  struct count_pat_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "su64,epattern", group, MODE_none);
    }
*************** SHAPE (count_pat)
*** 1761,1767 ****
  struct count_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "su64,vp", group, MODE_none);
    }
--- 1761,1767 ----
  struct count_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "su64,vp", group, MODE_none);
    }
*************** SHAPE (count_pred)
*** 1772,1785 ****
  struct count_vector_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "su64,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (1);
    }
--- 1772,1785 ----
  struct count_vector_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "su64,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (1);
    }
*************** SHAPE (count_vector)
*** 1792,1805 ****
  struct create_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "t0,v0*t", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (r.vectors_per_tuple ());
    }
--- 1792,1805 ----
  struct create_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "t0,v0*t", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (r.vectors_per_tuple ());
    }
*************** SHAPE (create)
*** 1813,1819 ****
  struct dupq_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      /* The "_n" suffix is optional; the full name has it, but the short
         name doesn't.  */
--- 1813,1819 ----
  struct dupq_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      /* The "_n" suffix is optional; the full name has it, but the short
         name doesn't.  */
*************** struct dupq_def : public overloaded_base
*** 1821,1827 ****
    }
  
    tree
!   resolve (function_resolver &) const OVERRIDE
    {
      /* The short forms just make "_n" implicit, so no resolution is needed.  */
      gcc_unreachable ();
--- 1821,1827 ----
    }
  
    tree
!   resolve (function_resolver &) const override
    {
      /* The short forms just make "_n" implicit, so no resolution is needed.  */
      gcc_unreachable ();
*************** SHAPE (dupq)
*** 1836,1855 ****
  struct ext_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bytes = c.type_suffix (0).element_bytes;
      return c.require_immediate_range (2, 0, 256 / bytes - 1);
--- 1836,1855 ----
  struct ext_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      unsigned int bytes = c.type_suffix (0).element_bytes;
      return c.require_immediate_range (2, 0, 256 / bytes - 1);
*************** SHAPE (ext)
*** 1861,1874 ****
  struct fold_left_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "s0,s0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1861,1874 ----
  struct fold_left_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "s0,s0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (fold_left)
*** 1889,1902 ****
  struct get_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,t0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1889,1902 ----
  struct get_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,t0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct get_def : public overloaded_base<
*** 1909,1915 ****
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int nvectors = c.vectors_per_tuple ();
      return c.require_immediate_range (1, 0, nvectors - 1);
--- 1909,1915 ----
    }
  
    bool
!   check (function_checker &c) const override
    {
      unsigned int nvectors = c.vectors_per_tuple ();
      return c.require_immediate_range (1, 0, nvectors - 1);
*************** struct inc_dec_def : public inc_dec_base
*** 1927,1933 ****
    CONSTEXPR inc_dec_def () : inc_dec_base (false) {}
  
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      /* These functions are unusual in that the type suffixes for
--- 1927,1933 ----
    CONSTEXPR inc_dec_def () : inc_dec_base (false) {}
  
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      /* These functions are unusual in that the type suffixes for
*************** struct inc_dec_pat_def : public inc_dec_
*** 1952,1958 ****
    CONSTEXPR inc_dec_pat_def () : inc_dec_base (true) {}
  
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      /* These functions are unusual in that the type suffixes for
--- 1952,1958 ----
    CONSTEXPR inc_dec_pat_def () : inc_dec_base (true) {}
  
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      /* These functions are unusual in that the type suffixes for
*************** SHAPE (inc_dec_pat)
*** 1971,1984 ****
  struct inc_dec_pred_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vp", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1971,1984 ----
  struct inc_dec_pred_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vp", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (inc_dec_pred)
*** 1998,2011 ****
  struct inc_dec_pred_scalar_def : public overloaded_base<2>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "s0,s0,vp", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 1998,2011 ----
  struct inc_dec_pred_scalar_def : public overloaded_base<2>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "s0,s0,vp", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (inc_dec_pred_scalar)
*** 2023,2029 ****
  struct inherent_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "t0", group, MODE_none);
    }
--- 2023,2029 ----
  struct inherent_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "t0", group, MODE_none);
    }
*************** SHAPE (inherent)
*** 2034,2040 ****
  struct inherent_b_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      /* The "_b" suffix is optional; the full name has it, but the short
         name doesn't.  */
--- 2034,2040 ----
  struct inherent_b_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      /* The "_b" suffix is optional; the full name has it, but the short
         name doesn't.  */
*************** struct inherent_b_def : public overloade
*** 2042,2048 ****
    }
  
    tree
!   resolve (function_resolver &) const OVERRIDE
    {
      /* The short forms just make "_b" implicit, so no resolution is needed.  */
      gcc_unreachable ();
--- 2042,2048 ----
    }
  
    tree
!   resolve (function_resolver &) const override
    {
      /* The short forms just make "_b" implicit, so no resolution is needed.  */
      gcc_unreachable ();
*************** SHAPE (inherent_b)
*** 2055,2061 ****
  struct load_def : public load_contiguous_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_vnum);
--- 2055,2061 ----
  struct load_def : public load_contiguous_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_vnum);
*************** SHAPE (load)
*** 2072,2078 ****
  struct load_ext_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "t0,al", group, MODE_none);
      build_all (b, "t0,al,ss64", group, MODE_vnum);
--- 2072,2078 ----
  struct load_ext_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "t0,al", group, MODE_none);
      build_all (b, "t0,al,ss64", group, MODE_vnum);
*************** SHAPE (load_ext)
*** 2092,2098 ****
  struct load_ext_gather_index_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index (b, "t0,al,d", group);
--- 2092,2098 ----
  struct load_ext_gather_index_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index (b, "t0,al,d", group);
*************** SHAPE (load_ext_gather_index)
*** 2112,2118 ****
  struct load_ext_gather_index_restricted_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index64 (b, "t0,al,d", group);
--- 2112,2118 ----
  struct load_ext_gather_index_restricted_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index64 (b, "t0,al,d", group);
*************** SHAPE (load_ext_gather_index_restricted)
*** 2136,2142 ****
  struct load_ext_gather_offset_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_offset);
      build_sv_offset (b, "t0,al,d", group);
--- 2136,2142 ----
  struct load_ext_gather_offset_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_offset);
      build_sv_offset (b, "t0,al,d", group);
*************** SHAPE (load_ext_gather_offset)
*** 2161,2167 ****
  struct load_ext_gather_offset_restricted_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_offset);
      build_sv_uint_offset (b, "t0,al,d", group);
--- 2161,2167 ----
  struct load_ext_gather_offset_restricted_def : public load_ext_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_offset);
      build_sv_uint_offset (b, "t0,al,d", group);
*************** SHAPE (load_ext_gather_offset_restricted
*** 2183,2189 ****
  struct load_gather_sv_def : public load_gather_sv_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      b.add_overloaded_functions (group, MODE_offset);
--- 2183,2189 ----
  struct load_gather_sv_def : public load_gather_sv_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      b.add_overloaded_functions (group, MODE_offset);
*************** SHAPE (load_gather_sv)
*** 2205,2211 ****
  struct load_gather_sv_restricted_def : public load_gather_sv_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      b.add_overloaded_functions (group, MODE_offset);
--- 2205,2211 ----
  struct load_gather_sv_restricted_def : public load_gather_sv_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      b.add_overloaded_functions (group, MODE_offset);
*************** SHAPE (load_gather_sv_restricted)
*** 2226,2232 ****
  struct load_gather_vs_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      /* The base vector mode is optional; the full name has it but the
         short name doesn't.  There is no ambiguity with SHAPE_load_gather_sv
--- 2226,2232 ----
  struct load_gather_vs_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      /* The base vector mode is optional; the full name has it but the
         short name doesn't.  There is no ambiguity with SHAPE_load_gather_sv
*************** struct load_gather_vs_def : public overl
*** 2237,2243 ****
    }
  
    tree
!   resolve (function_resolver &) const OVERRIDE
    {
      /* The short name just makes the base vector mode implicit;
         no resolution is needed.  */
--- 2237,2243 ----
    }
  
    tree
!   resolve (function_resolver &) const override
    {
      /* The short name just makes the base vector mode implicit;
         no resolution is needed.  */
*************** SHAPE (load_gather_vs)
*** 2252,2258 ****
  struct load_replicate_def : public load_contiguous_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "t0,al", group, MODE_none);
--- 2252,2258 ----
  struct load_replicate_def : public load_contiguous_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "t0,al", group, MODE_none);
*************** SHAPE (load_replicate)
*** 2264,2270 ****
  struct pattern_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "vp,epattern", group, MODE_none);
    }
--- 2264,2270 ----
  struct pattern_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "vp,epattern", group, MODE_none);
    }
*************** SHAPE (pattern_pred)
*** 2276,2282 ****
  struct prefetch_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "_,ap,eprfop", group, MODE_none);
      build_all (b, "_,ap,ss64,eprfop", group, MODE_vnum);
--- 2276,2282 ----
  struct prefetch_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "_,ap,eprfop", group, MODE_none);
      build_all (b, "_,ap,ss64,eprfop", group, MODE_vnum);
*************** SHAPE (prefetch)
*** 2297,2303 ****
  struct prefetch_gather_index_def : public prefetch_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_index);
--- 2297,2303 ----
  struct prefetch_gather_index_def : public prefetch_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_index);
*************** SHAPE (prefetch_gather_index)
*** 2321,2327 ****
  struct prefetch_gather_offset_def : public prefetch_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_offset);
--- 2321,2327 ----
  struct prefetch_gather_offset_def : public prefetch_gather_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_offset);
*************** SHAPE (prefetch_gather_offset)
*** 2336,2342 ****
  struct ptest_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "sp,vp", group, MODE_none);
    }
--- 2336,2342 ----
  struct ptest_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "sp,vp", group, MODE_none);
    }
*************** SHAPE (ptest)
*** 2347,2353 ****
  struct rdffr_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "vp", group, MODE_none);
    }
--- 2347,2353 ----
  struct rdffr_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "vp", group, MODE_none);
    }
*************** SHAPE (rdffr)
*** 2358,2371 ****
  struct reduction_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "s0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (1);
    }
--- 2358,2371 ----
  struct reduction_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "s0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (1);
    }
*************** SHAPE (reduction)
*** 2381,2394 ****
  struct reduction_wide_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "sw0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (1);
    }
--- 2381,2394 ----
  struct reduction_wide_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "sw0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (1);
    }
*************** SHAPE (reduction_wide)
*** 2402,2415 ****
  struct set_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "t0,t0,su64,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 2402,2415 ----
  struct set_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "t0,t0,su64,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct set_def : public overloaded_base<
*** 2423,2429 ****
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int nvectors = c.vectors_per_tuple ();
      return c.require_immediate_range (1, 0, nvectors - 1);
--- 2423,2429 ----
    }
  
    bool
!   check (function_checker &c) const override
    {
      unsigned int nvectors = c.vectors_per_tuple ();
      return c.require_immediate_range (1, 0, nvectors - 1);
*************** SHAPE (set)
*** 2435,2441 ****
  struct setffr_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "_", group, MODE_none);
    }
--- 2435,2441 ----
  struct setffr_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "_", group, MODE_none);
    }
*************** SHAPE (setffr)
*** 2449,2468 ****
  struct shift_left_imm_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (1, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (1, 0, bits - 1);
--- 2449,2468 ----
  struct shift_left_imm_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (1, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (1, 0, bits - 1);
*************** SHAPE (shift_left_imm)
*** 2477,2483 ****
  struct shift_left_imm_long_def : public binary_imm_long_base
  {
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bits = c.type_suffix (0).element_bits / 2;
      return c.require_immediate_range (1, 0, bits - 1);
--- 2477,2483 ----
  struct shift_left_imm_long_def : public binary_imm_long_base
  {
    bool
!   check (function_checker &c) const override
    {
      unsigned int bits = c.type_suffix (0).element_bits / 2;
      return c.require_immediate_range (1, 0, bits - 1);
*************** SHAPE (shift_left_imm_long)
*** 2492,2498 ****
  struct shift_left_imm_to_uint_def : public shift_left_imm_def
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "vu0,v0,su64", group, MODE_n);
--- 2492,2498 ----
  struct shift_left_imm_to_uint_def : public shift_left_imm_def
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "vu0,v0,su64", group, MODE_n);
*************** SHAPE (shift_left_imm_to_uint)
*** 2507,2526 ****
  struct shift_right_imm_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (1, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (1, 1, bits);
--- 2507,2526 ----
  struct shift_right_imm_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_n);
      build_all (b, "v0,v0,su64", group, MODE_n);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (1, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (1, 1, bits);
*************** SHAPE (shift_right_imm_narrowt_to_uint)
*** 2572,2578 ****
  struct store_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_vnum);
--- 2572,2578 ----
  struct store_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_vnum);
*************** struct store_def : public overloaded_bas
*** 2581,2587 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      bool vnum_p = r.mode_suffix_id == MODE_vnum;
      gcc_assert (r.mode_suffix_id == MODE_none || vnum_p);
--- 2581,2587 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      bool vnum_p = r.mode_suffix_id == MODE_vnum;
      gcc_assert (r.mode_suffix_id == MODE_none || vnum_p);
*************** SHAPE (store)
*** 2612,2618 ****
  struct store_scatter_index_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index (b, "_,as,d,t0", group);
--- 2612,2618 ----
  struct store_scatter_index_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index (b, "_,as,d,t0", group);
*************** SHAPE (store_scatter_index)
*** 2632,2638 ****
  struct store_scatter_index_restricted_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index64 (b, "_,as,d,t0", group);
--- 2632,2638 ----
  struct store_scatter_index_restricted_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_index);
      build_sv_index64 (b, "_,as,d,t0", group);
*************** SHAPE (store_scatter_index_restricted)
*** 2657,2663 ****
  struct store_scatter_offset_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_offset);
--- 2657,2663 ----
  struct store_scatter_offset_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_offset);
*************** SHAPE (store_scatter_offset)
*** 2683,2689 ****
  struct store_scatter_offset_restricted_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_offset);
--- 2683,2689 ----
  struct store_scatter_offset_restricted_def : public store_scatter_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      b.add_overloaded_functions (group, MODE_offset);
*************** SHAPE (store_scatter_offset_restricted)
*** 2698,2711 ****
  struct tbl_tuple_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,t0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 2698,2711 ----
  struct tbl_tuple_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,t0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct ternary_bfloat_def
*** 2724,2730 ****
    : public ternary_resize2_base<16, TYPE_bfloat, TYPE_bfloat>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vB,vB", group, MODE_none);
--- 2724,2730 ----
    : public ternary_resize2_base<16, TYPE_bfloat, TYPE_bfloat>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vB,vB", group, MODE_none);
*************** struct ternary_bfloat_opt_n_def
*** 2752,2758 ****
    : public ternary_resize2_opt_n_base<16, TYPE_bfloat, TYPE_bfloat>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vB,vB", group, MODE_none);
--- 2752,2758 ----
    : public ternary_resize2_opt_n_base<16, TYPE_bfloat, TYPE_bfloat>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vB,vB", group, MODE_none);
*************** struct ternary_intq_uintq_lane_def
*** 2770,2776 ****
    : public ternary_qq_lane_base<TYPE_signed, TYPE_unsigned>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqs0,vqu0,su64", group, MODE_none);
--- 2770,2776 ----
    : public ternary_qq_lane_base<TYPE_signed, TYPE_unsigned>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqs0,vqu0,su64", group, MODE_none);
*************** struct ternary_intq_uintq_opt_n_def
*** 2786,2792 ****
  				      TYPE_signed, TYPE_unsigned>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqs0,vqu0", group, MODE_none);
--- 2786,2792 ----
  				      TYPE_signed, TYPE_unsigned>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqs0,vqu0", group, MODE_none);
*************** SHAPE (ternary_intq_uintq_opt_n)
*** 2802,2821 ****
  struct ternary_lane_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (3, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_lane_index (3);
    }
--- 2802,2821 ----
  struct ternary_lane_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (3, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_lane_index (3);
    }
*************** SHAPE (ternary_lane)
*** 2830,2849 ****
  struct ternary_lane_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0,su64,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (3, 2);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return (c.require_immediate_lane_index (3, 2)
  	    && c.require_immediate_one_of (4, 0, 90, 180, 270));
--- 2830,2849 ----
  struct ternary_lane_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0,su64,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (3, 2);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return (c.require_immediate_lane_index (3, 2)
  	    && c.require_immediate_one_of (4, 0, 90, 180, 270));
*************** struct ternary_long_lane_def
*** 2859,2872 ****
    : public ternary_resize2_lane_base<function_resolver::HALF_SIZE>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0,vh0,su64", group, MODE_none);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_lane_index (3);
    }
--- 2859,2872 ----
    : public ternary_resize2_lane_base<function_resolver::HALF_SIZE>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0,vh0,su64", group, MODE_none);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_lane_index (3);
    }
*************** struct ternary_long_opt_n_def
*** 2883,2889 ****
    : public ternary_resize2_opt_n_base<function_resolver::HALF_SIZE>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0,vh0", group, MODE_none);
--- 2883,2889 ----
    : public ternary_resize2_opt_n_base<function_resolver::HALF_SIZE>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vh0,vh0", group, MODE_none);
*************** SHAPE (ternary_long_opt_n)
*** 2900,2906 ****
  struct ternary_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0", group, MODE_none);
--- 2900,2906 ----
  struct ternary_opt_n_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0", group, MODE_none);
*************** struct ternary_opt_n_def : public overlo
*** 2908,2914 ****
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform_opt_n (3);
    }
--- 2908,2914 ----
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform_opt_n (3);
    }
*************** SHAPE (ternary_opt_n)
*** 2922,2928 ****
  struct ternary_qq_lane_def : public ternary_qq_lane_base<>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0,su64", group, MODE_none);
--- 2922,2928 ----
  struct ternary_qq_lane_def : public ternary_qq_lane_base<>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0,su64", group, MODE_none);
*************** SHAPE (ternary_qq_lane)
*** 2938,2951 ****
  struct ternary_qq_lane_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0,su64,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 2938,2951 ----
  struct ternary_qq_lane_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0,su64,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct ternary_qq_lane_rotate_def : publ
*** 2963,2969 ****
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return (c.require_immediate_lane_index (3, 4)
  	    && c.require_immediate_one_of (4, 0, 90, 180, 270));
--- 2963,2969 ----
    }
  
    bool
!   check (function_checker &c) const override
    {
      return (c.require_immediate_lane_index (3, 4)
  	    && c.require_immediate_one_of (4, 0, 90, 180, 270));
*************** struct ternary_qq_opt_n_def
*** 2981,2987 ****
    : public ternary_resize2_opt_n_base<function_resolver::QUARTER_SIZE>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0", group, MODE_none);
--- 2981,2987 ----
    : public ternary_resize2_opt_n_base<function_resolver::QUARTER_SIZE>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0", group, MODE_none);
*************** SHAPE (ternary_qq_opt_n)
*** 2998,3011 ****
  struct ternary_qq_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 2998,3011 ----
  struct ternary_qq_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vq0,vq0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct ternary_qq_rotate_def : public ov
*** 3022,3028 ****
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_one_of (3, 0, 90, 180, 270);
    }
--- 3022,3028 ----
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_one_of (3, 0, 90, 180, 270);
    }
*************** SHAPE (ternary_qq_rotate)
*** 3036,3055 ****
  struct ternary_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (3, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_one_of (3, 0, 90, 180, 270);
    }
--- 3036,3055 ----
  struct ternary_rotate_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (3, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_one_of (3, 0, 90, 180, 270);
    }
*************** SHAPE (ternary_rotate)
*** 3063,3069 ****
  struct ternary_shift_left_imm_def : public ternary_shift_imm_base
  {
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (2, 0, bits - 1);
--- 3063,3069 ----
  struct ternary_shift_left_imm_def : public ternary_shift_imm_base
  {
    bool
!   check (function_checker &c) const override
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (2, 0, bits - 1);
*************** SHAPE (ternary_shift_left_imm)
*** 3078,3084 ****
  struct ternary_shift_right_imm_def : public ternary_shift_imm_base
  {
    bool
!   check (function_checker &c) const OVERRIDE
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (2, 1, bits);
--- 3078,3084 ----
  struct ternary_shift_right_imm_def : public ternary_shift_imm_base
  {
    bool
!   check (function_checker &c) const override
    {
      unsigned int bits = c.type_suffix (0).element_bits;
      return c.require_immediate_range (2, 1, bits);
*************** SHAPE (ternary_shift_right_imm)
*** 3090,3103 ****
  struct ternary_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 3090,3103 ----
  struct ternary_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** struct ternary_uintq_intq_def
*** 3119,3125 ****
  				TYPE_unsigned, TYPE_signed>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqu0,vqs0", group, MODE_none);
--- 3119,3125 ----
  				TYPE_unsigned, TYPE_signed>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqu0,vqs0", group, MODE_none);
*************** struct ternary_uintq_intq_lane_def
*** 3136,3142 ****
    : public ternary_qq_lane_base<TYPE_unsigned, TYPE_signed>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqu0,vqs0,su64", group, MODE_none);
--- 3136,3142 ----
    : public ternary_qq_lane_base<TYPE_unsigned, TYPE_signed>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqu0,vqs0,su64", group, MODE_none);
*************** struct ternary_uintq_intq_opt_n_def
*** 3152,3158 ****
  				      TYPE_unsigned, TYPE_signed>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqu0,vqs0", group, MODE_none);
--- 3152,3158 ----
  				      TYPE_unsigned, TYPE_signed>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,vqu0,vqs0", group, MODE_none);
*************** SHAPE (ternary_uintq_intq_opt_n)
*** 3168,3187 ****
  struct tmad_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const OVERRIDE
    {
      return c.require_immediate_range (2, 0, 7);
    }
--- 3168,3187 ----
  struct tmad_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0,v0,su64", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_uniform (2, 1);
    }
  
    bool
!   check (function_checker &c) const override
    {
      return c.require_immediate_range (2, 0, 7);
    }
*************** SHAPE (tmad)
*** 3195,3208 ****
  struct unary_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_unary ();
    }
--- 3195,3208 ----
  struct unary_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_unary ();
    }
*************** SHAPE (unary)
*** 3216,3229 ****
  struct unary_convert_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v1", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_unary (r.type_suffix (0).tclass,
  			    r.type_suffix (0).element_bits);
--- 3216,3229 ----
  struct unary_convert_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v1", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_unary (r.type_suffix (0).tclass,
  			    r.type_suffix (0).element_bits);
*************** SHAPE (unary_convert)
*** 3239,3252 ****
  struct unary_convert_narrowt_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v1", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_unary (r.type_suffix (0).tclass,
  			    r.type_suffix (0).element_bits, true);
--- 3239,3252 ----
  struct unary_convert_narrowt_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,v1", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_unary (r.type_suffix (0).tclass,
  			    r.type_suffix (0).element_bits, true);
*************** SHAPE (unary_convert_narrowt)
*** 3258,3271 ****
  struct unary_long_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
--- 3258,3271 ----
  struct unary_long_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type, result_type;
*************** SHAPE (unary_long)
*** 3286,3292 ****
  struct unary_n_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      /* The "_n" suffix is optional; the full name has it, but the short
         name doesn't.  */
--- 3286,3292 ----
  struct unary_n_def : public overloaded_base<1>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      /* The "_n" suffix is optional; the full name has it, but the short
         name doesn't.  */
*************** struct unary_n_def : public overloaded_b
*** 3294,3300 ****
    }
  
    tree
!   resolve (function_resolver &) const OVERRIDE
    {
      /* The short forms just make "_n" implicit, so no resolution is needed.  */
      gcc_unreachable ();
--- 3294,3300 ----
    }
  
    tree
!   resolve (function_resolver &) const override
    {
      /* The short forms just make "_n" implicit, so no resolution is needed.  */
      gcc_unreachable ();
*************** SHAPE (unary_narrowt_to_uint)
*** 3322,3328 ****
  struct unary_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      build_all (b, "v0,v0", group, MODE_none);
    }
--- 3322,3328 ----
  struct unary_pred_def : public nonoverloaded_base
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      build_all (b, "v0,v0", group, MODE_none);
    }
*************** SHAPE (unary_pred)
*** 3336,3349 ****
  struct unary_to_int_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vs0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_unary (TYPE_signed);
    }
--- 3336,3349 ----
  struct unary_to_int_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vs0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_unary (TYPE_signed);
    }
*************** SHAPE (unary_to_int)
*** 3357,3370 ****
  struct unary_to_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vu0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      return r.resolve_unary (TYPE_unsigned);
    }
--- 3357,3370 ----
  struct unary_to_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "vu0,v0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      return r.resolve_unary (TYPE_unsigned);
    }
*************** SHAPE (unary_to_uint)
*** 3378,3391 ****
  struct unary_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 3378,3391 ----
  struct unary_uint_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vu0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
*************** SHAPE (unary_uint)
*** 3414,3427 ****
  struct unary_widen_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const OVERRIDE
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const OVERRIDE
    {
      unsigned int i, nargs;
      type_suffix_index type;
--- 3414,3427 ----
  struct unary_widen_def : public overloaded_base<0>
  {
    void
!   build (function_builder &b, const function_group_info &group) const override
    {
      b.add_overloaded_functions (group, MODE_none);
      build_all (b, "v0,vh0", group, MODE_none);
    }
  
    tree
!   resolve (function_resolver &r) const override
    {
      unsigned int i, nargs;
      type_suffix_index type;
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-shapes.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (function shapes)
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE2 intrinsics)
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE2 intrinsics)
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** class svaba_impl : public function_base
*** 82,88 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      rtx_code max_code = e.type_suffix (0).unsigned_p ? UMAX : SMAX;
      machine_mode mode = e.vector_mode (0);
--- 82,88 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      rtx_code max_code = e.type_suffix (0).unsigned_p ? UMAX : SMAX;
      machine_mode mode = e.vector_mode (0);
*************** class svcdot_impl : public function_base
*** 94,100 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 94,100 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** class svcdot_lane_impl : public function
*** 107,113 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 107,113 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** class svldnt1_gather_impl : public full_
*** 120,132 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_READ_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1, false);
      machine_mode mem_mode = e.memory_vector_mode ();
--- 120,132 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_READ_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1, false);
      machine_mode mem_mode = e.memory_vector_mode ();
*************** public:
*** 138,148 ****
  class svldnt1_gather_extend_impl : public extending_load
  {
  public:
!   CONSTEXPR svldnt1_gather_extend_impl (type_suffix_index memory_type)
!     : extending_load (memory_type) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1, false);
      /* Add a constant predicate for the extension rtx.  */
--- 138,147 ----
  class svldnt1_gather_extend_impl : public extending_load
  {
  public:
!   using extending_load::extending_load;
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1, false);
      /* Add a constant predicate for the extension rtx.  */
*************** public:
*** 162,168 ****
    CONSTEXPR svmatch_svnmatch_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* These are UNSPEC_PRED_Z operations and so need a hint operand.  */
      e.add_ptrue_hint (0, e.gp_mode (0));
--- 161,167 ----
    CONSTEXPR svmatch_svnmatch_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      /* These are UNSPEC_PRED_Z operations and so need a hint operand.  */
      e.add_ptrue_hint (0, e.gp_mode (0));
*************** public:
*** 178,191 ****
  class svmovl_lb_impl : public unspec_based_function_base
  {
  public:
!   CONSTEXPR svmovl_lb_impl (int unspec_for_sint, int unspec_for_uint,
! 			    int unspec_for_fp)
!     : unspec_based_function_base (unspec_for_sint, unspec_for_uint,
! 				  unspec_for_fp)
!   {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.args.quick_push (const0_rtx);
      return e.map_to_unspecs (m_unspec_for_sint, m_unspec_for_uint,
--- 177,186 ----
  class svmovl_lb_impl : public unspec_based_function_base
  {
  public:
!   using unspec_based_function_base::unspec_based_function_base;
  
    rtx
!   expand (function_expander &e) const override
    {
      e.args.quick_push (const0_rtx);
      return e.map_to_unspecs (m_unspec_for_sint, m_unspec_for_uint,
*************** class svqcadd_impl : public function_bas
*** 197,203 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 192,198 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** class svqrdcmlah_impl : public function_
*** 213,219 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 208,214 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** class svqrdcmlah_lane_impl : public func
*** 226,232 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
--- 221,227 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      /* Convert the rotation amount into a specific unspec.  */
      int rot = INTVAL (e.args.pop ());
*************** public:
*** 242,248 ****
      : unspec_based_function (UNSPEC_SQRSHL, UNSPEC_UQRSHL, -1) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      if (tree amount = uniform_integer_cst_p (gimple_call_arg (f.call, 2)))
        {
--- 237,243 ----
      : unspec_based_function (UNSPEC_SQRSHL, UNSPEC_UQRSHL, -1) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      if (tree amount = uniform_integer_cst_p (gimple_call_arg (f.call, 2)))
        {
*************** public:
*** 276,282 ****
      : unspec_based_function (UNSPEC_SQSHL, UNSPEC_UQSHL, -1) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      if (tree amount = uniform_integer_cst_p (gimple_call_arg (f.call, 2)))
        {
--- 271,277 ----
      : unspec_based_function (UNSPEC_SQSHL, UNSPEC_UQSHL, -1) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      if (tree amount = uniform_integer_cst_p (gimple_call_arg (f.call, 2)))
        {
*************** public:
*** 312,318 ****
      : unspec_based_function (UNSPEC_SRSHL, UNSPEC_URSHL, -1) {}
  
    gimple *
!   fold (gimple_folder &f) const OVERRIDE
    {
      if (tree amount = uniform_integer_cst_p (gimple_call_arg (f.call, 2)))
        {
--- 307,313 ----
      : unspec_based_function (UNSPEC_SRSHL, UNSPEC_URSHL, -1) {}
  
    gimple *
!   fold (gimple_folder &f) const override
    {
      if (tree amount = uniform_integer_cst_p (gimple_call_arg (f.call, 2)))
        {
*************** class svsqadd_impl : public function_bas
*** 349,355 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      if (e.pred == PRED_x
--- 344,350 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      if (e.pred == PRED_x
*************** class svsra_impl : public function_base
*** 363,369 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      rtx_code shift_code = e.type_suffix (0).unsigned_p ? LSHIFTRT : ASHIFTRT;
      machine_mode mode = e.vector_mode (0);
--- 358,364 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      rtx_code shift_code = e.type_suffix (0).unsigned_p ? LSHIFTRT : ASHIFTRT;
      machine_mode mode = e.vector_mode (0);
*************** class svstnt1_scatter_impl : public full
*** 375,387 ****
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const OVERRIDE
    {
      return CP_WRITE_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1, false);
      machine_mode mem_mode = e.memory_vector_mode ();
--- 370,382 ----
  {
  public:
    unsigned int
!   call_properties (const function_instance &) const override
    {
      return CP_WRITE_MEMORY;
    }
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1, false);
      machine_mode mem_mode = e.memory_vector_mode ();
*************** public:
*** 393,403 ****
  class svstnt1_scatter_truncate_impl : public truncating_store
  {
  public:
!   CONSTEXPR svstnt1_scatter_truncate_impl (scalar_int_mode to_mode)
!     : truncating_store (to_mode) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      e.prepare_gather_address_operands (1, false);
      insn_code icode = code_for_aarch64_scatter_stnt (e.vector_mode (0),
--- 388,397 ----
  class svstnt1_scatter_truncate_impl : public truncating_store
  {
  public:
!   using truncating_store::truncating_store;
  
    rtx
!   expand (function_expander &e) const override
    {
      e.prepare_gather_address_operands (1, false);
      insn_code icode = code_for_aarch64_scatter_stnt (e.vector_mode (0),
*************** public:
*** 412,418 ****
    CONSTEXPR svtbl2_impl () : quiet<multi_vector_function> (2) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      return e.use_exact_insn (code_for_aarch64_sve2_tbl2 (e.vector_mode (0)));
    }
--- 406,412 ----
    CONSTEXPR svtbl2_impl () : quiet<multi_vector_function> (2) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      return e.use_exact_insn (code_for_aarch64_sve2_tbl2 (e.vector_mode (0)));
    }
*************** class svuqadd_impl : public function_bas
*** 422,428 ****
  {
  public:
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      machine_mode mode = e.vector_mode (0);
      if (e.pred == PRED_x
--- 416,422 ----
  {
  public:
    rtx
!   expand (function_expander &e) const override
    {
      machine_mode mode = e.vector_mode (0);
      if (e.pred == PRED_x
*************** public:
*** 440,446 ****
    CONSTEXPR svwhilerw_svwhilewr_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const OVERRIDE
    {
      for (unsigned int i = 0; i < 2; ++i)
        e.args[i] = e.convert_to_pmode (e.args[i]);
--- 434,440 ----
    CONSTEXPR svwhilerw_svwhilewr_impl (int unspec) : m_unspec (unspec) {}
  
    rtx
!   expand (function_expander &e) const override
    {
      for (unsigned int i = 0; i < 2; ++i)
        e.args[i] = e.convert_to_pmode (e.args[i]);
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins-sve2.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE (__ARM_FEATURE_SVE intrinsics)
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins.cc gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** public:
*** 82,88 ****
  
    /* The architecture extensions that the function requires, as a set of
       AARCH64_FL_* flags.  */
!   uint64_t required_extensions;
  
    /* True if the decl represents an overloaded function that needs to be
       resolved by function_resolver.  */
--- 82,88 ----
  
    /* The architecture extensions that the function requires, as a set of
       AARCH64_FL_* flags.  */
!   aarch64_feature_flags required_extensions;
  
    /* True if the decl represents an overloaded function that needs to be
       resolved by function_resolver.  */
*************** static CONSTEXPR const function_group_in
*** 530,536 ****
  };
  
  /* The scalar type associated with each vector type.  */
! GTY(()) tree scalar_types[NUM_VECTOR_TYPES];
  
  /* The single-predicate and single-vector types, with their built-in
     "__SV..._t" name.  Allow an index of NUM_VECTOR_TYPES, which always
--- 530,537 ----
  };
  
  /* The scalar type associated with each vector type.  */
! extern GTY(()) tree scalar_types[NUM_VECTOR_TYPES];
! tree scalar_types[NUM_VECTOR_TYPES];
  
  /* The single-predicate and single-vector types, with their built-in
     "__SV..._t" name.  Allow an index of NUM_VECTOR_TYPES, which always
*************** GTY(()) tree scalar_types[NUM_VECTOR_TYP
*** 538,550 ****
  static GTY(()) tree abi_vector_types[NUM_VECTOR_TYPES + 1];
  
  /* Same, but with the arm_sve.h "sv..._t" name.  */
! GTY(()) tree acle_vector_types[MAX_TUPLE_SIZE][NUM_VECTOR_TYPES + 1];
  
  /* The svpattern enum type.  */
! GTY(()) tree acle_svpattern;
  
  /* The svprfop enum type.  */
! GTY(()) tree acle_svprfop;
  
  /* The list of all registered function decls, indexed by code.  */
  static GTY(()) vec<registered_function *, va_gc> *registered_functions;
--- 539,554 ----
  static GTY(()) tree abi_vector_types[NUM_VECTOR_TYPES + 1];
  
  /* Same, but with the arm_sve.h "sv..._t" name.  */
! extern GTY(()) tree acle_vector_types[MAX_TUPLE_SIZE][NUM_VECTOR_TYPES + 1];
! tree acle_vector_types[MAX_TUPLE_SIZE][NUM_VECTOR_TYPES + 1];
  
  /* The svpattern enum type.  */
! extern GTY(()) tree acle_svpattern;
! tree acle_svpattern;
  
  /* The svprfop enum type.  */
! extern GTY(()) tree acle_svprfop;
! tree acle_svprfop;
  
  /* The list of all registered function decls, indexed by code.  */
  static GTY(()) vec<registered_function *, va_gc> *registered_functions;
*************** check_required_registers (location_t loc
*** 690,705 ****
     Report an error against LOCATION if not.  */
  static bool
  check_required_extensions (location_t location, tree fndecl,
! 			   uint64_t required_extensions)
  {
!   uint64_t missing_extensions = required_extensions & ~aarch64_isa_flags;
    if (missing_extensions == 0)
      return check_required_registers (location, fndecl);
  
!   static const struct { uint64_t flag; const char *name; } extensions[] = {
! #define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, FEATURE_STRING) \
!     { FLAG_CANONICAL, EXT_NAME },
  #include "aarch64-option-extensions.def"
    };
  
--- 694,711 ----
     Report an error against LOCATION if not.  */
  static bool
  check_required_extensions (location_t location, tree fndecl,
! 			   aarch64_feature_flags required_extensions)
  {
!   auto missing_extensions = required_extensions & ~aarch64_asm_isa_flags;
    if (missing_extensions == 0)
      return check_required_registers (location, fndecl);
  
!   static const struct {
!     aarch64_feature_flags flag;
!     const char *name;
!   } extensions[] = {
! #define AARCH64_OPT_EXTENSION(EXT_NAME, IDENT, C, D, E, F) \
!     { AARCH64_FL_##IDENT, EXT_NAME },
  #include "aarch64-option-extensions.def"
    };
  
*************** function_builder::get_attributes (const
*** 989,995 ****
  registered_function &
  function_builder::add_function (const function_instance &instance,
  				const char *name, tree fntype, tree attrs,
! 				uint64_t required_extensions,
  				bool overloaded_p,
  				bool placeholder_p)
  {
--- 995,1001 ----
  registered_function &
  function_builder::add_function (const function_instance &instance,
  				const char *name, tree fntype, tree attrs,
! 				aarch64_feature_flags required_extensions,
  				bool overloaded_p,
  				bool placeholder_p)
  {
*************** function_builder::add_function (const fu
*** 1031,1041 ****
     one-to-one mapping between "short" and "full" names, and if standard
     overload resolution therefore isn't necessary.  */
  void
! function_builder::add_unique_function (const function_instance &instance,
! 				       tree return_type,
! 				       vec<tree> &argument_types,
! 				       uint64_t required_extensions,
! 				       bool force_direct_overloads)
  {
    /* Add the function under its full (unique) name.  */
    char *name = get_name (instance, false);
--- 1037,1048 ----
     one-to-one mapping between "short" and "full" names, and if standard
     overload resolution therefore isn't necessary.  */
  void
! function_builder::
! add_unique_function (const function_instance &instance,
! 		     tree return_type,
! 		     vec<tree> &argument_types,
! 		     aarch64_feature_flags required_extensions,
! 		     bool force_direct_overloads)
  {
    /* Add the function under its full (unique) name.  */
    char *name = get_name (instance, false);
*************** function_builder::add_unique_function (c
*** 1078,1085 ****
     features are available as part of resolving the function to the
     relevant unique function.  */
  void
! function_builder::add_overloaded_function (const function_instance &instance,
! 					   uint64_t required_extensions)
  {
    char *name = get_name (instance, true);
    if (registered_function **map_value = m_overload_names.get (name))
--- 1085,1093 ----
     features are available as part of resolving the function to the
     relevant unique function.  */
  void
! function_builder::
! add_overloaded_function (const function_instance &instance,
! 			 aarch64_feature_flags required_extensions)
  {
    char *name = get_name (instance, true);
    if (registered_function **map_value = m_overload_names.get (name))
*************** gimple_folder::redirect_call (const func
*** 2607,2612 ****
--- 2615,2627 ----
    return call;
  }
  
+ /* Fold the call to constant VAL.  */
+ gimple *
+ gimple_folder::fold_to_cstu (poly_uint64 val)
+ {
+   return gimple_build_assign (lhs, build_int_cstu (TREE_TYPE (lhs), val));
+ }
+ 
  /* Fold the call to a PTRUE, taking the element size from type suffix 0.  */
  gimple *
  gimple_folder::fold_to_ptrue ()
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins.def gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin lists for AArch64 SVE
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Builtin lists for AArch64 SVE
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** DEF_SVE_MODE (u64offset, none, svuint64_
*** 61,67 ****
  DEF_SVE_MODE (vnum, none, none, vectors)
  
  DEF_SVE_TYPE (svbool_t, 10, __SVBool_t, boolean_type_node)
! DEF_SVE_TYPE (svbfloat16_t, 14, __SVBfloat16_t, aarch64_bf16_type_node)
  DEF_SVE_TYPE (svfloat16_t, 13, __SVFloat16_t, aarch64_fp16_type_node)
  DEF_SVE_TYPE (svfloat32_t, 13, __SVFloat32_t, float_type_node)
  DEF_SVE_TYPE (svfloat64_t, 13, __SVFloat64_t, double_type_node)
--- 61,67 ----
  DEF_SVE_MODE (vnum, none, none, vectors)
  
  DEF_SVE_TYPE (svbool_t, 10, __SVBool_t, boolean_type_node)
! DEF_SVE_TYPE (svbfloat16_t, 14, __SVBfloat16_t, bfloat16_type_node)
  DEF_SVE_TYPE (svfloat16_t, 13, __SVFloat16_t, aarch64_fp16_type_node)
  DEF_SVE_TYPE (svfloat32_t, 13, __SVFloat32_t, float_type_node)
  DEF_SVE_TYPE (svfloat64_t, 13, __SVFloat64_t, double_type_node)
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins.h gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve-builtins.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve-builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for AArch64 SVE
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** struct function_group_info
*** 263,269 ****
  
    /* The architecture extensions that the functions require, as a set of
       AARCH64_FL_* flags.  */
!   uint64_t required_extensions;
  };
  
  /* Describes a single fully-resolved function (i.e. one that has a
--- 263,269 ----
  
    /* The architecture extensions that the functions require, as a set of
       AARCH64_FL_* flags.  */
!   aarch64_feature_flags required_extensions;
  };
  
  /* Describes a single fully-resolved function (i.e. one that has a
*************** public:
*** 321,328 ****
    ~function_builder ();
  
    void add_unique_function (const function_instance &, tree,
! 			    vec<tree> &, uint64_t, bool);
!   void add_overloaded_function (const function_instance &, uint64_t);
    void add_overloaded_functions (const function_group_info &,
  				 mode_suffix_index);
  
--- 321,329 ----
    ~function_builder ();
  
    void add_unique_function (const function_instance &, tree,
! 			    vec<tree> &, aarch64_feature_flags, bool);
!   void add_overloaded_function (const function_instance &,
! 				aarch64_feature_flags);
    void add_overloaded_functions (const function_group_info &,
  				 mode_suffix_index);
  
*************** private:
*** 338,344 ****
  
    registered_function &add_function (const function_instance &,
  				     const char *, tree, tree,
! 				     uint64_t, bool, bool);
  
    /* The function type to use for functions that are resolved by
       function_resolver.  */
--- 339,345 ----
  
    registered_function &add_function (const function_instance &,
  				     const char *, tree, tree,
! 				     aarch64_feature_flags, bool, bool);
  
    /* The function type to use for functions that are resolved by
       function_resolver.  */
*************** public:
*** 499,504 ****
--- 500,506 ----
    tree load_store_cookie (tree);
  
    gimple *redirect_call (const function_instance &);
+   gimple *fold_to_cstu (poly_uint64);
    gimple *fold_to_pfalse ();
    gimple *fold_to_ptrue ();
    gimple *fold_to_vl_pred (unsigned int);
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve.md gcc-13.1.0/gcc/config/aarch64/aarch64-sve.md
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 SVE.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 SVE.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 2533,2546 ****
  )
  
  ;; Duplicate an Advanced SIMD vector to fill an SVE vector (LE version).
! (define_insn "@aarch64_vec_duplicate_vq<mode>_le"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w")
  	(vec_duplicate:SVE_FULL
! 	  (match_operand:<V128> 1 "register_operand" "w")))]
    "TARGET_SVE && !BYTES_BIG_ENDIAN"
    {
!     operands[1] = gen_rtx_REG (<MODE>mode, REGNO (operands[1]));
!     return "dup\t%0.q, %1.q[0]";
    }
  )
  
--- 2533,2566 ----
  )
  
  ;; Duplicate an Advanced SIMD vector to fill an SVE vector (LE version).
! 
! (define_insn_and_split "@aarch64_vec_duplicate_vq<mode>_le"
!   [(set (match_operand:SVE_FULL 0 "register_operand" "=w, w")
  	(vec_duplicate:SVE_FULL
! 	  (match_operand:<V128> 1 "aarch64_sve_dup_ld1rq_operand" "w, UtQ")))
!    (clobber (match_scratch:VNx16BI 2 "=X, Upl"))]
    "TARGET_SVE && !BYTES_BIG_ENDIAN"
    {
!     switch (which_alternative)
!       {
! 	case 0:
! 	  operands[1] = gen_rtx_REG (<MODE>mode, REGNO (operands[1]));
! 	  return "dup\t%0.q, %1.q[0]";
! 	case 1:
! 	  return "#";
! 	default:
! 	  gcc_unreachable ();
!       }
!   }
!   "&& MEM_P (operands[1])"
!   [(const_int 0)]
!   {
!     if (GET_CODE (operands[2]) == SCRATCH)
!       operands[2] = gen_reg_rtx (VNx16BImode);
!     emit_move_insn (operands[2], CONSTM1_RTX (VNx16BImode));
!     rtx gp = gen_lowpart (<VPRED>mode, operands[2]);
!     emit_insn (gen_aarch64_sve_ld1rq<mode> (operands[0], operands[1], gp));
!     DONE;
    }
  )
  
***************
*** 8231,8237 ****
  	        [(match_operand:<VPRED> 1)
  	         (const_int SVE_KNOWN_PTRUE)
  	         (match_operand:SVE_FULL_F 2 "register_operand" "w")
! 	         (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero" "wDz")]
  	        UNSPEC_COND_FCMUO))
  	    (match_operand:<VPRED> 4 "register_operand" "Upa"))
  	  (match_dup:<VPRED> 1)))
--- 8251,8257 ----
  	        [(match_operand:<VPRED> 1)
  	         (const_int SVE_KNOWN_PTRUE)
  	         (match_operand:SVE_FULL_F 2 "register_operand" "w")
! 	         (match_operand:SVE_FULL_F 3 "register_operand" "w")]
  	        UNSPEC_COND_FCMUO))
  	    (match_operand:<VPRED> 4 "register_operand" "Upa"))
  	  (match_dup:<VPRED> 1)))
***************
*** 8267,8273 ****
  	        [(match_operand:<VPRED> 1)
  	         (const_int SVE_KNOWN_PTRUE)
  	         (match_operand:SVE_FULL_F 2 "register_operand" "w")
! 	         (match_operand:SVE_FULL_F 3 "aarch64_simd_reg_or_zero" "wDz")]
  	        UNSPEC_COND_FCMUO))
  	    (not:<VPRED>
  	      (match_operand:<VPRED> 4 "register_operand" "Upa")))
--- 8287,8293 ----
  	        [(match_operand:<VPRED> 1)
  	         (const_int SVE_KNOWN_PTRUE)
  	         (match_operand:SVE_FULL_F 2 "register_operand" "w")
! 	         (match_operand:SVE_FULL_F 3 "register_operand" "w")]
  	        UNSPEC_COND_FCMUO))
  	    (not:<VPRED>
  	      (match_operand:<VPRED> 4 "register_operand" "Upa")))
***************
*** 9612,9656 ****
  (define_insn "*aarch64_brk<brk_op>_cc"
    [(set (reg:CC_NZC CC_REGNUM)
  	(unspec:CC_NZC
! 	  [(match_operand:VNx16BI 1 "register_operand" "Upa, Upa")
  	   (match_dup 1)
  	   (match_operand:SI 4 "aarch64_sve_ptrue_flag")
  	   (unspec:VNx16BI
  	     [(match_dup 1)
! 	      (match_operand:VNx16BI 2 "register_operand" "Upa, Upa")
! 	      (match_operand:VNx16BI 3 "aarch64_simd_reg_or_zero" "Dz, 0")]
  	     SVE_BRK_UNARY)]
  	  UNSPEC_PTEST))
!    (set (match_operand:VNx16BI 0 "register_operand" "=Upa, Upa")
  	(unspec:VNx16BI
  	  [(match_dup 1)
  	   (match_dup 2)
  	   (match_dup 3)]
  	  SVE_BRK_UNARY))]
    "TARGET_SVE"
!   "@
!    brk<brk_op>s\t%0.b, %1/z, %2.b
!    brk<brk_op>s\t%0.b, %1/m, %2.b"
  )
  
  ;; Same, but with only the flags result being interesting.
  (define_insn "*aarch64_brk<brk_op>_ptest"
    [(set (reg:CC_NZC CC_REGNUM)
  	(unspec:CC_NZC
! 	  [(match_operand:VNx16BI 1 "register_operand" "Upa, Upa")
  	   (match_dup 1)
  	   (match_operand:SI 4 "aarch64_sve_ptrue_flag")
  	   (unspec:VNx16BI
  	     [(match_dup 1)
! 	      (match_operand:VNx16BI 2 "register_operand" "Upa, Upa")
! 	      (match_operand:VNx16BI 3 "aarch64_simd_reg_or_zero" "Dz, 0")]
  	     SVE_BRK_UNARY)]
  	  UNSPEC_PTEST))
!    (clobber (match_scratch:VNx16BI 0 "=Upa, Upa"))]
    "TARGET_SVE"
!   "@
!    brk<brk_op>s\t%0.b, %1/z, %2.b
!    brk<brk_op>s\t%0.b, %1/m, %2.b"
  )
  
  ;; -------------------------------------------------------------------------
--- 9632,9672 ----
  (define_insn "*aarch64_brk<brk_op>_cc"
    [(set (reg:CC_NZC CC_REGNUM)
  	(unspec:CC_NZC
! 	  [(match_operand:VNx16BI 1 "register_operand" "Upa")
  	   (match_dup 1)
  	   (match_operand:SI 4 "aarch64_sve_ptrue_flag")
  	   (unspec:VNx16BI
  	     [(match_dup 1)
! 	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "aarch64_simd_imm_zero")]
  	     SVE_BRK_UNARY)]
  	  UNSPEC_PTEST))
!    (set (match_operand:VNx16BI 0 "register_operand" "=Upa")
  	(unspec:VNx16BI
  	  [(match_dup 1)
  	   (match_dup 2)
  	   (match_dup 3)]
  	  SVE_BRK_UNARY))]
    "TARGET_SVE"
!   "brk<brk_op>s\t%0.b, %1/z, %2.b"
  )
  
  ;; Same, but with only the flags result being interesting.
  (define_insn "*aarch64_brk<brk_op>_ptest"
    [(set (reg:CC_NZC CC_REGNUM)
  	(unspec:CC_NZC
! 	  [(match_operand:VNx16BI 1 "register_operand" "Upa")
  	   (match_dup 1)
  	   (match_operand:SI 4 "aarch64_sve_ptrue_flag")
  	   (unspec:VNx16BI
  	     [(match_dup 1)
! 	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "aarch64_simd_imm_zero")]
  	     SVE_BRK_UNARY)]
  	  UNSPEC_PTEST))
!    (clobber (match_scratch:VNx16BI 0 "=Upa"))]
    "TARGET_SVE"
!   "brk<brk_op>s\t%0.b, %1/z, %2.b"
  )
  
  ;; -------------------------------------------------------------------------
***************
*** 9677,9683 ****
    "brk<brk_op>\t%0.b, %1/z, %2.b, %<brk_reg_opno>.b"
  )
  
! ;; Same, but also producing a flags result.
  (define_insn "*aarch64_brk<brk_op>_cc"
    [(set (reg:CC_NZC CC_REGNUM)
  	(unspec:CC_NZC
--- 9693,9753 ----
    "brk<brk_op>\t%0.b, %1/z, %2.b, %<brk_reg_opno>.b"
  )
  
! ;; BRKN, producing both a predicate and a flags result.  Unlike other
! ;; flag-setting instructions, these flags are always set wrt a ptrue.
! (define_insn_and_rewrite "*aarch64_brkn_cc"
!   [(set (reg:CC_NZC CC_REGNUM)
! 	(unspec:CC_NZC
! 	  [(match_operand:VNx16BI 4)
! 	   (match_operand:VNx16BI 5)
! 	   (const_int SVE_KNOWN_PTRUE)
! 	   (unspec:VNx16BI
! 	     [(match_operand:VNx16BI 1 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "register_operand" "0")]
! 	     UNSPEC_BRKN)]
! 	  UNSPEC_PTEST))
!    (set (match_operand:VNx16BI 0 "register_operand" "=Upa")
! 	(unspec:VNx16BI
! 	  [(match_dup 1)
! 	   (match_dup 2)
! 	   (match_dup 3)]
! 	  UNSPEC_BRKN))]
!   "TARGET_SVE"
!   "brkns\t%0.b, %1/z, %2.b, %0.b"
!   "&& (operands[4] != CONST0_RTX (VNx16BImode)
!        || operands[5] != CONST0_RTX (VNx16BImode))"
!   {
!     operands[4] = CONST0_RTX (VNx16BImode);
!     operands[5] = CONST0_RTX (VNx16BImode);
!   }
! )
! 
! ;; Same, but with only the flags result being interesting.
! (define_insn_and_rewrite "*aarch64_brkn_ptest"
!   [(set (reg:CC_NZC CC_REGNUM)
! 	(unspec:CC_NZC
! 	  [(match_operand:VNx16BI 4)
! 	   (match_operand:VNx16BI 5)
! 	   (const_int SVE_KNOWN_PTRUE)
! 	   (unspec:VNx16BI
! 	     [(match_operand:VNx16BI 1 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "register_operand" "0")]
! 	     UNSPEC_BRKN)]
! 	  UNSPEC_PTEST))
!    (clobber (match_scratch:VNx16BI 0 "=Upa"))]
!   "TARGET_SVE"
!   "brkns\t%0.b, %1/z, %2.b, %0.b"
!   "&& (operands[4] != CONST0_RTX (VNx16BImode)
!        || operands[5] != CONST0_RTX (VNx16BImode))"
!   {
!     operands[4] = CONST0_RTX (VNx16BImode);
!     operands[5] = CONST0_RTX (VNx16BImode);
!   }
! )
! 
! ;; BRKPA and BRKPB, producing both a predicate and a flags result.
  (define_insn "*aarch64_brk<brk_op>_cc"
    [(set (reg:CC_NZC CC_REGNUM)
  	(unspec:CC_NZC
***************
*** 9687,9703 ****
  	   (unspec:VNx16BI
  	     [(match_dup 1)
  	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "register_operand" "<brk_reg_con>")]
! 	     SVE_BRK_BINARY)]
  	  UNSPEC_PTEST))
     (set (match_operand:VNx16BI 0 "register_operand" "=Upa")
  	(unspec:VNx16BI
  	  [(match_dup 1)
  	   (match_dup 2)
  	   (match_dup 3)]
! 	  SVE_BRK_BINARY))]
    "TARGET_SVE"
!   "brk<brk_op>s\t%0.b, %1/z, %2.b, %<brk_reg_opno>.b"
  )
  
  ;; Same, but with only the flags result being interesting.
--- 9757,9773 ----
  	   (unspec:VNx16BI
  	     [(match_dup 1)
  	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "register_operand" "Upa")]
! 	     SVE_BRKP)]
  	  UNSPEC_PTEST))
     (set (match_operand:VNx16BI 0 "register_operand" "=Upa")
  	(unspec:VNx16BI
  	  [(match_dup 1)
  	   (match_dup 2)
  	   (match_dup 3)]
! 	  SVE_BRKP))]
    "TARGET_SVE"
!   "brk<brk_op>s\t%0.b, %1/z, %2.b, %3.b"
  )
  
  ;; Same, but with only the flags result being interesting.
***************
*** 9710,9721 ****
  	   (unspec:VNx16BI
  	     [(match_dup 1)
  	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "register_operand" "<brk_reg_con>")]
! 	     SVE_BRK_BINARY)]
  	  UNSPEC_PTEST))
     (clobber (match_scratch:VNx16BI 0 "=Upa"))]
    "TARGET_SVE"
!   "brk<brk_op>s\t%0.b, %1/z, %2.b, %<brk_reg_opno>.b"
  )
  
  ;; -------------------------------------------------------------------------
--- 9780,9791 ----
  	   (unspec:VNx16BI
  	     [(match_dup 1)
  	      (match_operand:VNx16BI 2 "register_operand" "Upa")
! 	      (match_operand:VNx16BI 3 "register_operand" "Upa")]
! 	     SVE_BRKP)]
  	  UNSPEC_PTEST))
     (clobber (match_scratch:VNx16BI 0 "=Upa"))]
    "TARGET_SVE"
!   "brk<brk_op>s\t%0.b, %1/z, %2.b, %3.b"
  )
  
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-sve2.md gcc-13.1.0/gcc/config/aarch64/aarch64-sve2.md
*** gcc-12.2.0/gcc/config/aarch64/aarch64-sve2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-sve2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 SVE2.
! ;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 SVE2.
! ;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 81,87 ****
  ;; ---- Histogram processing
  ;; ---- String matching
  ;;
! ;; == Crypotographic extensions
  ;; ---- Optional AES extensions
  ;; ---- Optional SHA-3 extensions
  ;; ---- Optional SM4 extensions
--- 81,87 ----
  ;; ---- Histogram processing
  ;; ---- String matching
  ;;
! ;; == Cryptographic extensions
  ;; ---- Optional AES extensions
  ;; ---- Optional SHA-3 extensions
  ;; ---- Optional SM4 extensions
***************
*** 1599,1604 ****
--- 1599,1620 ----
    "<sve_int_op>\t%0.<Ventype>, %2.<Vetype>, %3.<Vetype>"
  )
  
+ ;; Optimize ((a + b) >> n) where n is half the bitsize of the vector
+ (define_insn "*bitmask_shift_plus<mode>"
+   [(set (match_operand:SVE_FULL_HSDI 0 "register_operand" "=w")
+ 	(unspec:SVE_FULL_HSDI
+ 	   [(match_operand:<VPRED> 1)
+ 	    (lshiftrt:SVE_FULL_HSDI
+ 	      (plus:SVE_FULL_HSDI
+ 		(match_operand:SVE_FULL_HSDI 2 "register_operand" "w")
+ 		(match_operand:SVE_FULL_HSDI 3 "register_operand" "w"))
+ 	      (match_operand:SVE_FULL_HSDI 4
+ 		 "aarch64_simd_shift_imm_vec_exact_top" ""))]
+           UNSPEC_PRED_X))]
+   "TARGET_SVE2"
+   "addhnb\t%0.<Ventype>, %2.<Vetype>, %3.<Vetype>"
+ )
+ 
  ;; -------------------------------------------------------------------------
  ;; ---- [INT] Narrowing right shifts
  ;; -------------------------------------------------------------------------
***************
*** 2528,2534 ****
  )
  
  ;; =========================================================================
! ;; == Crypotographic extensions
  ;; =========================================================================
  
  ;; -------------------------------------------------------------------------
--- 2544,2550 ----
  )
  
  ;; =========================================================================
! ;; == Cryptographic extensions
  ;; =========================================================================
  
  ;; -------------------------------------------------------------------------
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-tune.md gcc-13.1.0/gcc/config/aarch64/aarch64-tune.md
*** gcc-12.2.0/gcc/config/aarch64/aarch64-tune.md	Fri Aug 19 08:15:35 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-tune.md	Wed Apr 26 07:11:18 2023
***************
*** 1,5 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexa510,cortexa710,cortexx2,neoversen2,demeter"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
--- 1,5 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically by gentune.sh from aarch64-cores.def
  (define_attr "tune"
! 	"cortexa34,cortexa35,cortexa53,cortexa57,cortexa72,cortexa73,thunderx,thunderxt88p1,thunderxt88,octeontx,octeontxt81,octeontxt83,thunderxt81,thunderxt83,ampere1,ampere1a,emag,xgene1,falkor,qdf24xx,exynosm1,phecda,thunderx2t99p1,vulcan,thunderx2t99,cortexa55,cortexa75,cortexa76,cortexa76ae,cortexa77,cortexa78,cortexa78ae,cortexa78c,cortexa65,cortexa65ae,cortexx1,cortexx1c,ares,neoversen1,neoversee1,octeontx2,octeontx2t98,octeontx2t96,octeontx2t93,octeontx2f95,octeontx2f95n,octeontx2f95mm,a64fx,tsv110,thunderx3t110,zeus,neoversev1,neoverse512tvb,saphira,cortexa57cortexa53,cortexa72cortexa53,cortexa73cortexa35,cortexa73cortexa53,cortexa75cortexa55,cortexa76cortexa55,cortexr82,cortexa510,cortexa710,cortexa715,cortexx2,cortexx3,neoversen2,demeter,neoversev2"
  	(const (symbol_ref "((enum attr_tune) aarch64_tune)")))
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-tuning-flags.def gcc-13.1.0/gcc/config/aarch64/aarch64-tuning-flags.def
*** gcc-12.2.0/gcc/config/aarch64/aarch64-tuning-flags.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-tuning-flags.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** AARCH64_EXTRA_TUNING_OPTION ("cheap_shif
*** 44,49 ****
--- 44,52 ----
  /* Disallow load/store pair instructions on Q-registers.  */
  AARCH64_EXTRA_TUNING_OPTION ("no_ldp_stp_qregs", NO_LDP_STP_QREGS)
  
+ /* Disallow load-pair instructions to be formed in combine/peephole.  */
+ AARCH64_EXTRA_TUNING_OPTION ("no_ldp_combine", NO_LDP_COMBINE)
+ 
  AARCH64_EXTRA_TUNING_OPTION ("rename_load_regs", RENAME_LOAD_REGS)
  
  AARCH64_EXTRA_TUNING_OPTION ("cse_sve_vl_constants", CSE_SVE_VL_CONSTANTS)
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64-vxworks.h gcc-13.1.0/gcc/config/aarch64/aarch64-vxworks.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64-vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64-vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.  Vxworks Aarch 64bit
     version.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Douglas B Rupp
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.  Vxworks Aarch 64bit
     version.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Douglas B Rupp
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64.cc gcc-13.1.0/gcc/config/aarch64/aarch64.cc
*** gcc-12.2.0/gcc/config/aarch64/aarch64.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 81,86 ****
--- 81,89 ----
  #include "rtlanal.h"
  #include "tree-dfa.h"
  #include "asan.h"
+ #include "aarch64-feature-deps.h"
+ #include "config/arm/aarch-common.h"
+ #include "config/arm/aarch-common-protos.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** static bool aarch64_builtin_support_vect
*** 304,313 ****
  static machine_mode aarch64_simd_container_mode (scalar_mode, poly_int64);
  static bool aarch64_print_address_internal (FILE*, machine_mode, rtx,
  					    aarch64_addr_query_type);
- static HOST_WIDE_INT aarch64_clamp_to_uimm12_shift (HOST_WIDE_INT val);
- 
- /* Major revision number of the ARM Architecture implemented by the target.  */
- unsigned aarch64_architecture_version;
  
  /* The processor for which instructions should be scheduled.  */
  enum aarch64_processor aarch64_tune = cortexa53;
--- 307,312 ----
*************** bool aarch64_pcrelative_literal_loads;
*** 321,332 ****
  /* Global flag for whether frame pointer is enabled.  */
  bool aarch64_use_frame_pointer;
  
- #define BRANCH_PROTECT_STR_MAX 255
  char *accepted_branch_protection_string = NULL;
  
- static enum aarch64_parse_opt_result
- aarch64_parse_branch_protection (const char*, char**);
- 
  /* Support for command line parsing of boolean flags in the tuning
     structures.  */
  struct aarch64_flag_desc
--- 320,327 ----
*************** static const struct cpu_addrcost_table n
*** 537,543 ****
    0 /* imm_offset  */
  };
  
! static const struct cpu_addrcost_table demeter_addrcost_table =
  {
      {
        1, /* hi  */
--- 532,538 ----
    0 /* imm_offset  */
  };
  
! static const struct cpu_addrcost_table neoversev2_addrcost_table =
  {
      {
        1, /* hi  */
*************** static const struct cpu_regmove_cost neo
*** 680,686 ****
    2 /* FP2FP  */
  };
  
! static const struct cpu_regmove_cost demeter_regmove_cost =
  {
    1, /* GP2GP  */
    /* Spilling to int<->fp instead of memory is recommended so set
--- 675,681 ----
    2 /* FP2FP  */
  };
  
! static const struct cpu_regmove_cost neoversev2_regmove_cost =
  {
    1, /* GP2GP  */
    /* Spilling to int<->fp instead of memory is recommended so set
*************** static const struct cpu_vector_cost thun
*** 1137,1143 ****
  
  static const advsimd_vec_cost ampere1_advsimd_vector_cost =
  {
!   3, /* int_stmt_cost  */
    3, /* fp_stmt_cost  */
    0, /* ld2_st2_permute_cost  */
    0, /* ld3_st3_permute_cost  */
--- 1132,1138 ----
  
  static const advsimd_vec_cost ampere1_advsimd_vector_cost =
  {
!   1, /* int_stmt_cost  */
    3, /* fp_stmt_cost  */
    0, /* ld2_st2_permute_cost  */
    0, /* ld3_st3_permute_cost  */
*************** static const advsimd_vec_cost ampere1_ad
*** 1153,1169 ****
    8, /* store_elt_extra_cost  */
    6, /* vec_to_scalar_cost  */
    7, /* scalar_to_vec_cost  */
!   5, /* align_load_cost  */
!   5, /* unalign_load_cost  */
!   2, /* unalign_store_cost  */
!   2  /* store_cost  */
  };
  
  /* Ampere-1 costs for vector insn classes.  */
  static const struct cpu_vector_cost ampere1_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
!   1, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
--- 1148,1164 ----
    8, /* store_elt_extra_cost  */
    6, /* vec_to_scalar_cost  */
    7, /* scalar_to_vec_cost  */
!   4, /* align_load_cost  */
!   4, /* unalign_load_cost  */
!   1, /* unalign_store_cost  */
!   1  /* store_cost  */
  };
  
  /* Ampere-1 costs for vector insn classes.  */
  static const struct cpu_vector_cost ampere1_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
!   3, /* scalar_fp_stmt_cost  */
    4, /* scalar_load_cost  */
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
*************** static const struct tune_params generic_
*** 1349,1354 ****
--- 1344,1350 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params cortexa3
*** 1385,1390 ****
--- 1381,1387 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params cortexa5
*** 1418,1423 ****
--- 1415,1421 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params cortexa5
*** 1451,1456 ****
--- 1449,1455 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params cortexa7
*** 1484,1489 ****
--- 1483,1489 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params cortexa7
*** 1517,1522 ****
--- 1517,1523 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params exynosm1
*** 1551,1556 ****
--- 1552,1558 ----
    "4",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params thunderx
*** 1583,1588 ****
--- 1585,1591 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params thunderx
*** 1615,1620 ****
--- 1618,1624 ----
    "8",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params tsv110_t
*** 1649,1654 ****
--- 1653,1659 ----
    "8",  /* loop_align.  */
    2,    /* int_reassoc_width.  */
    4,    /* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,    /* vec_reassoc_width.  */
    2,    /* min_div_recip_mul_sf.  */
    2,    /* min_div_recip_mul_df.  */
*************** static const struct tune_params xgene1_t
*** 1681,1686 ****
--- 1686,1692 ----
    "16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params emag_tun
*** 1713,1718 ****
--- 1719,1725 ----
    "16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params qdf24xx_
*** 1746,1751 ****
--- 1753,1759 ----
    "16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params saphira_
*** 1781,1786 ****
--- 1789,1795 ----
    "16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    1,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params thunderx
*** 1814,1819 ****
--- 1823,1829 ----
    "16",	/* loop_align.  */
    3,	/* int_reassoc_width.  */
    2,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params thunderx
*** 1847,1852 ****
--- 1857,1863 ----
    "16",	/* loop_align.  */
    3,	/* int_reassoc_width.  */
    2,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params neoverse
*** 1879,1884 ****
--- 1890,1896 ----
    "32:16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params ampere1_
*** 1915,1926 ****
    "32:16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
    0,	/* max_case_values.  */
    tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_NONE),		/* tune_flags.  */
    &ampere1_prefetch_tune
  };
  
--- 1927,1977 ----
    "32:16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
    0,	/* max_case_values.  */
    tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_NO_LDP_COMBINE),	/* tune_flags.  */
!   &ampere1_prefetch_tune
! };
! 
! static const struct tune_params ampere1a_tunings =
! {
!   &ampere1a_extra_costs,
!   &generic_addrcost_table,
!   &generic_regmove_cost,
!   &ampere1_vector_cost,
!   &generic_branch_cost,
!   &generic_approx_modes,
!   SVE_NOT_IMPLEMENTED, /* sve_width  */
!   { 4, /* load_int.  */
!     4, /* store_int.  */
!     4, /* load_fp.  */
!     4, /* store_fp.  */
!     4, /* load_pred.  */
!     4 /* store_pred.  */
!   }, /* memmov_cost.  */
!   4, /* issue_rate  */
!   (AARCH64_FUSE_ADRP_ADD | AARCH64_FUSE_AES_AESMC |
!    AARCH64_FUSE_MOV_MOVK | AARCH64_FUSE_MOVK_MOVK |
!    AARCH64_FUSE_ALU_BRANCH /* adds, ands, bics, ccmp, ccmn */ |
!    AARCH64_FUSE_CMP_BRANCH | AARCH64_FUSE_ALU_CBZ |
!    AARCH64_FUSE_ADDSUB_2REG_CONST1),
!   /* fusible_ops  */
!   "32",		/* function_align.  */
!   "4",		/* jump_align.  */
!   "32:16",	/* loop_align.  */
!   2,	/* int_reassoc_width.  */
!   4,	/* fp_reassoc_width.  */
!   1,	/* fma_reassoc_width.  */
!   2,	/* vec_reassoc_width.  */
!   2,	/* min_div_recip_mul_sf.  */
!   2,	/* min_div_recip_mul_df.  */
!   0,	/* max_case_values.  */
!   tune_params::AUTOPREFETCHER_WEAK,	/* autoprefetcher_model.  */
!   (AARCH64_EXTRA_TUNE_NO_LDP_COMBINE),	/* tune_flags.  */
    &ampere1_prefetch_tune
  };
  
*************** static const struct tune_params neoverse
*** 2092,2097 ****
--- 2143,2149 ----
    "32:16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   4,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params neoverse
*** 2229,2234 ****
--- 2281,2287 ----
    "32:16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   4,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params neoverse
*** 2417,2422 ****
--- 2470,2476 ----
    "32:16",	/* loop_align.  */
    2,	/* int_reassoc_width.  */
    4,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params neoverse
*** 2429,2435 ****
    &generic_prefetch_tune
  };
  
! static const advsimd_vec_cost demeter_advsimd_vector_cost =
  {
    2, /* int_stmt_cost  */
    2, /* fp_stmt_cost  */
--- 2483,2489 ----
    &generic_prefetch_tune
  };
  
! static const advsimd_vec_cost neoversev2_advsimd_vector_cost =
  {
    2, /* int_stmt_cost  */
    2, /* fp_stmt_cost  */
*************** static const advsimd_vec_cost demeter_ad
*** 2460,2466 ****
    1  /* store_cost  */
  };
  
! static const sve_vec_cost demeter_sve_vector_cost =
  {
    {
      2, /* int_stmt_cost  */
--- 2514,2520 ----
    1  /* store_cost  */
  };
  
! static const sve_vec_cost neoversev2_sve_vector_cost =
  {
    {
      2, /* int_stmt_cost  */
*************** static const sve_vec_cost demeter_sve_ve
*** 2517,2523 ****
    3 /* scatter_store_elt_cost  */
  };
  
! static const aarch64_scalar_vec_issue_info demeter_scalar_issue_info =
  {
    3, /* loads_stores_per_cycle  */
    2, /* stores_per_cycle  */
--- 2571,2577 ----
    3 /* scatter_store_elt_cost  */
  };
  
! static const aarch64_scalar_vec_issue_info neoversev2_scalar_issue_info =
  {
    3, /* loads_stores_per_cycle  */
    2, /* stores_per_cycle  */
*************** static const aarch64_scalar_vec_issue_in
*** 2526,2532 ****
    1 /* fp_simd_store_general_ops  */
  };
  
! static const aarch64_advsimd_vec_issue_info demeter_advsimd_issue_info =
  {
    {
      3, /* loads_stores_per_cycle  */
--- 2580,2586 ----
    1 /* fp_simd_store_general_ops  */
  };
  
! static const aarch64_advsimd_vec_issue_info neoversev2_advsimd_issue_info =
  {
    {
      3, /* loads_stores_per_cycle  */
*************** static const aarch64_advsimd_vec_issue_i
*** 2540,2546 ****
    3 /* ld4_st4_general_ops  */
  };
  
! static const aarch64_sve_vec_issue_info demeter_sve_issue_info =
  {
    {
      {
--- 2594,2600 ----
    3 /* ld4_st4_general_ops  */
  };
  
! static const aarch64_sve_vec_issue_info neoversev2_sve_issue_info =
  {
    {
      {
*************** static const aarch64_sve_vec_issue_info
*** 2562,2576 ****
    1 /* gather_scatter_pair_pred_ops  */
  };
  
! static const aarch64_vec_issue_info demeter_vec_issue_info =
  {
!   &demeter_scalar_issue_info,
!   &demeter_advsimd_issue_info,
!   &demeter_sve_issue_info
  };
  
  /* Demeter costs for vector insn classes.  */
! static const struct cpu_vector_cost demeter_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
    2, /* scalar_fp_stmt_cost  */
--- 2616,2630 ----
    1 /* gather_scatter_pair_pred_ops  */
  };
  
! static const aarch64_vec_issue_info neoversev2_vec_issue_info =
  {
!   &neoversev2_scalar_issue_info,
!   &neoversev2_advsimd_issue_info,
!   &neoversev2_sve_issue_info
  };
  
  /* Demeter costs for vector insn classes.  */
! static const struct cpu_vector_cost neoversev2_vector_cost =
  {
    1, /* scalar_int_stmt_cost  */
    2, /* scalar_fp_stmt_cost  */
*************** static const struct cpu_vector_cost deme
*** 2578,2594 ****
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
    1, /* cond_not_taken_branch_cost  */
!   &demeter_advsimd_vector_cost, /* advsimd  */
!   &demeter_sve_vector_cost, /* sve  */
!   &demeter_vec_issue_info /* issue_info  */
  };
  
! static const struct tune_params demeter_tunings =
  {
    &cortexa76_extra_costs,
!   &demeter_addrcost_table,
!   &demeter_regmove_cost,
!   &demeter_vector_cost,
    &generic_branch_cost,
    &generic_approx_modes,
    SVE_128, /* sve_width  */
--- 2632,2648 ----
    1, /* scalar_store_cost  */
    1, /* cond_taken_branch_cost  */
    1, /* cond_not_taken_branch_cost  */
!   &neoversev2_advsimd_vector_cost, /* advsimd  */
!   &neoversev2_sve_vector_cost, /* sve  */
!   &neoversev2_vec_issue_info /* issue_info  */
  };
  
! static const struct tune_params neoversev2_tunings =
  {
    &cortexa76_extra_costs,
!   &neoversev2_addrcost_table,
!   &neoversev2_regmove_cost,
!   &neoversev2_vector_cost,
    &generic_branch_cost,
    &generic_approx_modes,
    SVE_128, /* sve_width  */
*************** static const struct tune_params demeter_
*** 2606,2611 ****
--- 2660,2666 ----
    "32:16",	/* loop_align.  */
    3,	/* int_reassoc_width.  */
    6,	/* fp_reassoc_width.  */
+   4,	/* fma_reassoc_width.  */
    3,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** static const struct tune_params a64fx_tu
*** 2641,2646 ****
--- 2696,2702 ----
    "32",	/* loop_align.  */
    4,	/* int_reassoc_width.  */
    2,	/* fp_reassoc_width.  */
+   1,	/* fma_reassoc_width.  */
    2,	/* vec_reassoc_width.  */
    2,	/* min_div_recip_mul_sf.  */
    2,	/* min_div_recip_mul_df.  */
*************** aarch64_tuning_override_functions[] =
*** 2673,2718 ****
  /* A processor implementing AArch64.  */
  struct processor
  {
!   const char *const name;
!   enum aarch64_processor ident;
!   enum aarch64_processor sched_core;
!   enum aarch64_arch arch;
!   unsigned architecture_version;
!   const uint64_t flags;
!   const struct tune_params *const tune;
  };
  
  /* Architectures implementing AArch64.  */
! static const struct processor all_architectures[] =
  {
! #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
!   {NAME, CORE, CORE, AARCH64_ARCH_##ARCH_IDENT, ARCH_REV, FLAGS, NULL},
  #include "aarch64-arches.def"
!   {NULL, aarch64_none, aarch64_none, aarch64_no_arch, 0, 0, NULL}
  };
  
  /* Processor cores implementing AArch64.  */
  static const struct processor all_cores[] =
  {
! #define AARCH64_CORE(NAME, IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART, VARIANT) \
!   {NAME, IDENT, SCHED, AARCH64_ARCH_##ARCH,				\
!   all_architectures[AARCH64_ARCH_##ARCH].architecture_version,	\
!   FLAGS, &COSTS##_tunings},
  #include "aarch64-cores.def"
!   {"generic", generic, cortexa53, AARCH64_ARCH_8A, 8,
!     AARCH64_FL_FOR_ARCH8, &generic_tunings},
!   {NULL, aarch64_none, aarch64_none, aarch64_no_arch, 0, 0, NULL}
  };
  
- 
- /* Target specification.  These are populated by the -march, -mtune, -mcpu
-    handling code or by target attributes.  */
- static const struct processor *selected_arch;
- static const struct processor *selected_cpu;
- static const struct processor *selected_tune;
- 
- enum aarch64_key_type aarch64_ra_sign_key = AARCH64_KEY_A;
- 
  /* The current tuning set.  */
  struct tune_params aarch64_tune_params = generic_tunings;
  
--- 2729,2764 ----
  /* A processor implementing AArch64.  */
  struct processor
  {
!   const char *name;
!   aarch64_processor ident;
!   aarch64_processor sched_core;
!   aarch64_arch arch;
!   aarch64_feature_flags flags;
!   const tune_params *tune;
  };
  
  /* Architectures implementing AArch64.  */
! static CONSTEXPR const processor all_architectures[] =
  {
! #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, D, E) \
!   {NAME, CORE, CORE, AARCH64_ARCH_##ARCH_IDENT, \
!    feature_deps::ARCH_IDENT ().enable, NULL},
  #include "aarch64-arches.def"
!   {NULL, aarch64_none, aarch64_none, aarch64_no_arch, 0, NULL}
  };
  
  /* Processor cores implementing AArch64.  */
  static const struct processor all_cores[] =
  {
! #define AARCH64_CORE(NAME, IDENT, SCHED, ARCH, E, COSTS, G, H, I) \
!   {NAME, IDENT, SCHED, AARCH64_ARCH_##ARCH, \
!    feature_deps::cpu_##IDENT, &COSTS##_tunings},
  #include "aarch64-cores.def"
!   {"generic", generic, cortexa53, AARCH64_ARCH_V8A,
!    feature_deps::V8A ().enable, &generic_tunings},
!   {NULL, aarch64_none, aarch64_none, aarch64_no_arch, 0, NULL}
  };
  
  /* The current tuning set.  */
  struct tune_params aarch64_tune_params = generic_tunings;
  
*************** static const struct attribute_spec aarch
*** 2760,2775 ****
    { NULL,                 0, 0, false, false, false, false, NULL, NULL }
  };
  
- #define AARCH64_CPU_DEFAULT_FLAGS ((selected_cpu) ? selected_cpu->flags : 0)
- 
- /* An ISA extension in the co-processor and main instruction set space.  */
- struct aarch64_option_extension
- {
-   const char *const name;
-   const unsigned long flags_on;
-   const unsigned long flags_off;
- };
- 
  typedef enum aarch64_cond_code
  {
    AARCH64_EQ = 0, AARCH64_NE, AARCH64_CS, AARCH64_CC, AARCH64_MI, AARCH64_PL,
--- 2806,2811 ----
*************** aarch64_cc;
*** 2780,2879 ****
  
  #define AARCH64_INVERSE_CONDITION_CODE(X) ((aarch64_cc) (((int) X) ^ 1))
  
- struct aarch64_branch_protect_type
- {
-   /* The type's name that the user passes to the branch-protection option
-     string.  */
-   const char* name;
-   /* Function to handle the protection type and set global variables.
-     First argument is the string token corresponding with this type and the
-     second argument is the next token in the option string.
-     Return values:
-     * AARCH64_PARSE_OK: Handling was sucessful.
-     * AARCH64_INVALID_ARG: The type is invalid in this context and the caller
-       should print an error.
-     * AARCH64_INVALID_FEATURE: The type is invalid and the handler prints its
-       own error.  */
-   enum aarch64_parse_opt_result (*handler)(char*, char*);
-   /* A list of types that can follow this type in the option string.  */
-   const aarch64_branch_protect_type* subtypes;
-   unsigned int num_subtypes;
- };
- 
- static enum aarch64_parse_opt_result
- aarch64_handle_no_branch_protection (char* str, char* rest)
- {
-   aarch64_ra_sign_scope = AARCH64_FUNCTION_NONE;
-   aarch64_enable_bti = 0;
-   if (rest)
-     {
-       error ("unexpected %<%s%> after %<%s%>", rest, str);
-       return AARCH64_PARSE_INVALID_FEATURE;
-     }
-   return AARCH64_PARSE_OK;
- }
- 
- static enum aarch64_parse_opt_result
- aarch64_handle_standard_branch_protection (char* str, char* rest)
- {
-   aarch64_ra_sign_scope = AARCH64_FUNCTION_NON_LEAF;
-   aarch64_ra_sign_key = AARCH64_KEY_A;
-   aarch64_enable_bti = 1;
-   if (rest)
-     {
-       error ("unexpected %<%s%> after %<%s%>", rest, str);
-       return AARCH64_PARSE_INVALID_FEATURE;
-     }
-   return AARCH64_PARSE_OK;
- }
- 
- static enum aarch64_parse_opt_result
- aarch64_handle_pac_ret_protection (char* str ATTRIBUTE_UNUSED,
- 				    char* rest ATTRIBUTE_UNUSED)
- {
-   aarch64_ra_sign_scope = AARCH64_FUNCTION_NON_LEAF;
-   aarch64_ra_sign_key = AARCH64_KEY_A;
-   return AARCH64_PARSE_OK;
- }
- 
- static enum aarch64_parse_opt_result
- aarch64_handle_pac_ret_leaf (char* str ATTRIBUTE_UNUSED,
- 			      char* rest ATTRIBUTE_UNUSED)
- {
-   aarch64_ra_sign_scope = AARCH64_FUNCTION_ALL;
-   return AARCH64_PARSE_OK;
- }
- 
- static enum aarch64_parse_opt_result
- aarch64_handle_pac_ret_b_key (char* str ATTRIBUTE_UNUSED,
- 			      char* rest ATTRIBUTE_UNUSED)
- {
-   aarch64_ra_sign_key = AARCH64_KEY_B;
-   return AARCH64_PARSE_OK;
- }
- 
- static enum aarch64_parse_opt_result
- aarch64_handle_bti_protection (char* str ATTRIBUTE_UNUSED,
- 				    char* rest ATTRIBUTE_UNUSED)
- {
-   aarch64_enable_bti = 1;
-   return AARCH64_PARSE_OK;
- }
- 
- static const struct aarch64_branch_protect_type aarch64_pac_ret_subtypes[] = {
-   { "leaf", aarch64_handle_pac_ret_leaf, NULL, 0 },
-   { "b-key", aarch64_handle_pac_ret_b_key, NULL, 0 },
-   { NULL, NULL, NULL, 0 }
- };
- 
- static const struct aarch64_branch_protect_type aarch64_branch_protect_types[] = {
-   { "none", aarch64_handle_no_branch_protection, NULL, 0 },
-   { "standard", aarch64_handle_standard_branch_protection, NULL, 0 },
-   { "pac-ret", aarch64_handle_pac_ret_protection, aarch64_pac_ret_subtypes,
-     ARRAY_SIZE (aarch64_pac_ret_subtypes) },
-   { "bti", aarch64_handle_bti_protection, NULL, 0 },
-   { NULL, NULL, NULL, 0 }
- };
  
  /* The condition codes of the processor, and the inverse function.  */
  static const char * const aarch64_condition_codes[] =
--- 2816,2821 ----
*************** aarch64_reassociation_width (unsigned op
*** 3365,3379 ****
      return aarch64_tune_params.vec_reassoc_width;
    if (INTEGRAL_MODE_P (mode))
      return aarch64_tune_params.int_reassoc_width;
!   /* Avoid reassociating floating point addition so we emit more FMAs.  */
!   if (FLOAT_MODE_P (mode) && opc != PLUS_EXPR)
!     return aarch64_tune_params.fp_reassoc_width;
    return 1;
  }
  
  /* Provide a mapping from gcc register numbers to dwarf register numbers.  */
  unsigned
! aarch64_dbx_register_number (unsigned regno)
  {
     if (GP_REGNUM_P (regno))
       return AARCH64_DWARF_R0 + regno - R0_REGNUM;
--- 3307,3327 ----
      return aarch64_tune_params.vec_reassoc_width;
    if (INTEGRAL_MODE_P (mode))
      return aarch64_tune_params.int_reassoc_width;
!   /* Reassociation reduces the number of FMAs which may result in worse
!      performance.  Use a per-CPU setting for FMA reassociation which allows
!      narrow CPUs with few FP pipes to switch it off (value of 1), and wider
!      CPUs with many FP pipes to enable reassociation.
!      Since the reassociation pass doesn't understand FMA at all, assume
!      that any FP addition might turn into FMA.  */
!   if (FLOAT_MODE_P (mode))
!     return opc == PLUS_EXPR ? aarch64_tune_params.fma_reassoc_width
! 			    : aarch64_tune_params.fp_reassoc_width;
    return 1;
  }
  
  /* Provide a mapping from gcc register numbers to dwarf register numbers.  */
  unsigned
! aarch64_debugger_regno (unsigned regno)
  {
     if (GP_REGNUM_P (regno))
       return AARCH64_DWARF_R0 + regno - R0_REGNUM;
*************** aarch64_dbx_register_number (unsigned re
*** 3391,3396 ****
--- 3339,3358 ----
     return DWARF_FRAME_REGISTERS;
  }
  
+ /* Implement TARGET_DWARF_FRAME_REG_MODE.  */
+ static machine_mode
+ aarch64_dwarf_frame_reg_mode (int regno)
+ {
+   /* Predicate registers are call-clobbered in the EH ABI (which is
+      ARM_PCS_AAPCS64), so they should not be described by CFI.
+      Their size changes as VL changes, so any values computed by
+      __builtin_init_dwarf_reg_size_table might not be valid for
+      all frames.  */
+   if (PR_REGNUM_P (regno))
+     return VOIDmode;
+   return default_dwarf_frame_reg_mode (regno);
+ }
+ 
  /* If X is a CONST_DOUBLE, return its bit representation as a constant
     integer, otherwise return X unmodified.  */
  static rtx
*************** aarch64_classify_vector_mode (machine_mo
*** 3508,3514 ****
      case E_OImode:
      case E_CImode:
      case E_XImode:
!       return TARGET_SIMD ? VEC_ADVSIMD | VEC_STRUCT : 0;
  
      /* Structures of 64-bit Advanced SIMD vectors.  */
      case E_V2x8QImode:
--- 3470,3476 ----
      case E_OImode:
      case E_CImode:
      case E_XImode:
!       return TARGET_FLOAT ? VEC_ADVSIMD | VEC_STRUCT : 0;
  
      /* Structures of 64-bit Advanced SIMD vectors.  */
      case E_V2x8QImode:
*************** aarch64_classify_vector_mode (machine_mo
*** 3535,3541 ****
      case E_V4x4HFmode:
      case E_V4x2SFmode:
      case E_V4x1DFmode:
!       return TARGET_SIMD ? VEC_ADVSIMD | VEC_STRUCT | VEC_PARTIAL : 0;
  
      /* Structures of 128-bit Advanced SIMD vectors.  */
      case E_V2x16QImode:
--- 3497,3503 ----
      case E_V4x4HFmode:
      case E_V4x2SFmode:
      case E_V4x1DFmode:
!       return TARGET_FLOAT ? VEC_ADVSIMD | VEC_STRUCT | VEC_PARTIAL : 0;
  
      /* Structures of 128-bit Advanced SIMD vectors.  */
      case E_V2x16QImode:
*************** aarch64_classify_vector_mode (machine_mo
*** 3562,3574 ****
      case E_V4x8HFmode:
      case E_V4x4SFmode:
      case E_V4x2DFmode:
!       return TARGET_SIMD ? VEC_ADVSIMD | VEC_STRUCT : 0;
  
      /* 64-bit Advanced SIMD vectors.  */
      case E_V8QImode:
      case E_V4HImode:
      case E_V2SImode:
!     /* ...E_V1DImode doesn't exist.  */
      case E_V4HFmode:
      case E_V4BFmode:
      case E_V2SFmode:
--- 3524,3536 ----
      case E_V4x8HFmode:
      case E_V4x4SFmode:
      case E_V4x2DFmode:
!       return TARGET_FLOAT ? VEC_ADVSIMD | VEC_STRUCT : 0;
  
      /* 64-bit Advanced SIMD vectors.  */
      case E_V8QImode:
      case E_V4HImode:
      case E_V2SImode:
!     case E_V1DImode:
      case E_V4HFmode:
      case E_V4BFmode:
      case E_V2SFmode:
*************** aarch64_classify_vector_mode (machine_mo
*** 3582,3588 ****
      case E_V8BFmode:
      case E_V4SFmode:
      case E_V2DFmode:
!       return TARGET_SIMD ? VEC_ADVSIMD : 0;
  
      default:
        return 0;
--- 3544,3550 ----
      case E_V8BFmode:
      case E_V4SFmode:
      case E_V2DFmode:
!       return TARGET_FLOAT ? VEC_ADVSIMD : 0;
  
      default:
        return 0;
*************** aarch64_vectorize_related_mode (machine_
*** 3870,3876 ****
      }
  
    /* Prefer to use 1 128-bit vector instead of 2 64-bit vectors.  */
!   if ((vec_flags & VEC_ADVSIMD)
        && known_eq (nunits, 0U)
        && known_eq (GET_MODE_BITSIZE (vector_mode), 64U)
        && maybe_ge (GET_MODE_BITSIZE (element_mode)
--- 3832,3839 ----
      }
  
    /* Prefer to use 1 128-bit vector instead of 2 64-bit vectors.  */
!   if (TARGET_SIMD
!       && (vec_flags & VEC_ADVSIMD)
        && known_eq (nunits, 0U)
        && known_eq (GET_MODE_BITSIZE (vector_mode), 64U)
        && maybe_ge (GET_MODE_BITSIZE (element_mode)
*************** aarch64_vectorize_related_mode (machine_
*** 3884,3889 ****
--- 3847,3865 ----
    return default_vectorize_related_mode (vector_mode, element_mode, nunits);
  }
  
+ /* Implement TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT.  */
+ 
+ static bool
+ aarch64_vectorize_preferred_div_as_shifts_over_mult (const_tree type)
+ {
+   machine_mode mode = TYPE_MODE (type);
+   unsigned int vec_flags = aarch64_classify_vector_mode (mode);
+   bool sve_p = (vec_flags & VEC_ANY_SVE);
+   bool simd_p = (vec_flags & VEC_ADVSIMD);
+ 
+   return (sve_p && TARGET_SVE2) || (simd_p && TARGET_SIMD);
+ }
+ 
  /* Implement TARGET_PREFERRED_ELSE_VALUE.  For binary operations,
     prefer to use the first arithmetic operand as the else value if
     the else value doesn't matter, since that exactly matches the SVE
*************** aarch64_hard_regno_mode_ok (unsigned reg
*** 3968,3974 ****
  
    if (GP_REGNUM_P (regno))
      {
!       if (vec_flags & VEC_ANY_SVE)
  	return false;
        if (known_le (GET_MODE_SIZE (mode), 8))
  	return true;
--- 3944,3950 ----
  
    if (GP_REGNUM_P (regno))
      {
!       if (vec_flags & (VEC_ANY_SVE | VEC_STRUCT))
  	return false;
        if (known_le (GET_MODE_SIZE (mode), 8))
  	return true;
*************** aarch64_split_128bit_move (rtx dst, rtx
*** 4828,4834 ****
  
    machine_mode mode = GET_MODE (dst);
  
!   gcc_assert (mode == TImode || mode == TFmode);
    gcc_assert (!(side_effects_p (src) || side_effects_p (dst)));
    gcc_assert (mode == GET_MODE (src) || GET_MODE (src) == VOIDmode);
  
--- 4804,4810 ----
  
    machine_mode mode = GET_MODE (dst);
  
!   gcc_assert (mode == TImode || mode == TFmode || mode == TDmode);
    gcc_assert (!(side_effects_p (src) || side_effects_p (dst)));
    gcc_assert (mode == GET_MODE (src) || GET_MODE (src) == VOIDmode);
  
*************** aarch64_output_sve_vector_inc_dec (const
*** 5515,5529 ****
  					     factor, nelts_per_vq);
  }
  
  static int
  aarch64_internal_mov_immediate (rtx dest, rtx imm, bool generate,
! 				scalar_int_mode mode)
  {
    int i;
    unsigned HOST_WIDE_INT val, val2, mask;
    int one_match, zero_match;
    int num_insns;
  
    val = INTVAL (imm);
  
    if (aarch64_move_imm (val, mode))
--- 5491,5644 ----
  					     factor, nelts_per_vq);
  }
  
+ /* Multipliers for repeating bitmasks of width 32, 16, 8, 4, and 2.  */
+ 
+ static const unsigned HOST_WIDE_INT bitmask_imm_mul[] =
+   {
+     0x0000000100000001ull,
+     0x0001000100010001ull,
+     0x0101010101010101ull,
+     0x1111111111111111ull,
+     0x5555555555555555ull,
+   };
+ 
+ 
+ 
+ /* Return true if 64-bit VAL is a valid bitmask immediate.  */
+ static bool
+ aarch64_bitmask_imm (unsigned HOST_WIDE_INT val)
+ {
+   unsigned HOST_WIDE_INT tmp, mask, first_one, next_one;
+   int bits;
+ 
+   /* Check for a single sequence of one bits and return quickly if so.
+      The special cases of all ones and all zeroes returns false.  */
+   tmp = val + (val & -val);
+ 
+   if (tmp == (tmp & -tmp))
+     return (val + 1) > 1;
+ 
+   /* Invert if the immediate doesn't start with a zero bit - this means we
+      only need to search for sequences of one bits.  */
+   if (val & 1)
+     val = ~val;
+ 
+   /* Find the first set bit and set tmp to val with the first sequence of one
+      bits removed.  Return success if there is a single sequence of ones.  */
+   first_one = val & -val;
+   tmp = val & (val + first_one);
+ 
+   if (tmp == 0)
+     return true;
+ 
+   /* Find the next set bit and compute the difference in bit position.  */
+   next_one = tmp & -tmp;
+   bits = clz_hwi (first_one) - clz_hwi (next_one);
+   mask = val ^ tmp;
+ 
+   /* Check the bit position difference is a power of 2, and that the first
+      sequence of one bits fits within 'bits' bits.  */
+   if ((mask >> bits) != 0 || bits != (bits & -bits))
+     return false;
+ 
+   /* Check the sequence of one bits is repeated 64/bits times.  */
+   return val == mask * bitmask_imm_mul[__builtin_clz (bits) - 26];
+ }
+ 
+ 
+ /* Return true if VAL is a valid bitmask immediate for MODE.  */
+ bool
+ aarch64_bitmask_imm (unsigned HOST_WIDE_INT val, machine_mode mode)
+ {
+   if (mode == DImode)
+     return aarch64_bitmask_imm (val);
+ 
+   if (mode == SImode)
+     return aarch64_bitmask_imm ((val & 0xffffffff) | (val << 32));
+ 
+   /* Replicate small immediates to fit 64 bits.  */
+   int size = GET_MODE_UNIT_PRECISION (mode);
+   val &= (HOST_WIDE_INT_1U << size) - 1;
+   val *= bitmask_imm_mul[__builtin_clz (size) - 26];
+ 
+   return aarch64_bitmask_imm (val);
+ }
+ 
+ 
+ /* Return true if the immediate VAL can be a bitfield immediate
+    by changing the given MASK bits in VAL to zeroes, ones or bits
+    from the other half of VAL.  Return the new immediate in VAL2.  */
+ static inline bool
+ aarch64_check_bitmask (unsigned HOST_WIDE_INT val,
+ 		       unsigned HOST_WIDE_INT &val2,
+ 		       unsigned HOST_WIDE_INT mask)
+ {
+   val2 = val & ~mask;
+   if (val2 != val && aarch64_bitmask_imm (val2))
+     return true;
+   val2 = val | mask;
+   if (val2 != val && aarch64_bitmask_imm (val2))
+     return true;
+   val = val & ~mask;
+   val2 = val | (((val >> 32) | (val << 32)) & mask);
+   if (val2 != val && aarch64_bitmask_imm (val2))
+     return true;
+   val2 = val | (((val >> 16) | (val << 48)) & mask);
+   if (val2 != val && aarch64_bitmask_imm (val2))
+     return true;
+   return false;
+ }
+ 
+ 
+ /* Return true if VAL is a valid MOVZ immediate.  */
+ static inline bool
+ aarch64_is_movz (unsigned HOST_WIDE_INT val)
+ {
+   return (val >> (ctz_hwi (val) & 48)) < 65536;
+ }
+ 
+ 
+ /* Return true if immediate VAL can be created by a 64-bit MOVI/MOVN/MOVZ.  */
+ bool
+ aarch64_is_mov_xn_imm (unsigned HOST_WIDE_INT val)
+ {
+   return aarch64_is_movz (val) || aarch64_is_movz (~val)
+     || aarch64_bitmask_imm (val);
+ }
+ 
+ 
+ /* Return true if VAL is an immediate that can be created by a single
+    MOV instruction.  */
+ bool
+ aarch64_move_imm (unsigned HOST_WIDE_INT val, machine_mode mode)
+ {
+   gcc_assert (mode == SImode || mode == DImode);
+ 
+   if (val < 65536)
+     return true;
+ 
+   unsigned HOST_WIDE_INT mask =
+     (val >> 32) == 0 || mode == SImode ? 0xffffffff : HOST_WIDE_INT_M1U;
+ 
+   if (aarch64_is_movz (val & mask) || aarch64_is_movz (~val & mask))
+     return true;
+ 
+   val = (val & mask) | ((val << 32) & ~mask);
+   return aarch64_bitmask_imm (val);
+ }
+ 
+ 
  static int
  aarch64_internal_mov_immediate (rtx dest, rtx imm, bool generate,
! 				machine_mode mode)
  {
    int i;
    unsigned HOST_WIDE_INT val, val2, mask;
    int one_match, zero_match;
    int num_insns;
  
+   gcc_assert (mode == SImode || mode == DImode);
+ 
    val = INTVAL (imm);
  
    if (aarch64_move_imm (val, mode))
*************** aarch64_internal_mov_immediate (rtx dest
*** 5533,5563 ****
        return 1;
      }
  
-   /* Check to see if the low 32 bits are either 0xffffXXXX or 0xXXXXffff
-      (with XXXX non-zero). In that case check to see if the move can be done in
-      a smaller mode.  */
-   val2 = val & 0xffffffff;
-   if (mode == DImode
-       && aarch64_move_imm (val2, SImode)
-       && (((val >> 32) & 0xffff) == 0 || (val >> 48) == 0))
-     {
-       if (generate)
- 	emit_insn (gen_rtx_SET (dest, GEN_INT (val2)));
- 
-       /* Check if we have to emit a second instruction by checking to see
-          if any of the upper 32 bits of the original DI mode value is set.  */
-       if (val == val2)
- 	return 1;
- 
-       i = (val >> 48) ? 48 : 32;
- 
-       if (generate)
- 	 emit_insn (gen_insv_immdi (dest, GEN_INT (i),
- 				    GEN_INT ((val >> i) & 0xffff)));
- 
-       return 2;
-     }
- 
    if ((val >> 32) == 0 || mode == SImode)
      {
        if (generate)
--- 5648,5653 ----
*************** aarch64_internal_mov_immediate (rtx dest
*** 5581,5606 ****
    one_match = ((~val & mask) == 0) + ((~val & (mask << 16)) == 0) +
      ((~val & (mask << 32)) == 0) + ((~val & (mask << 48)) == 0);
  
!   if (zero_match != 2 && one_match != 2)
!     {
!       /* Try emitting a bitmask immediate with a movk replacing 16 bits.
! 	 For a 64-bit bitmask try whether changing 16 bits to all ones or
! 	 zeroes creates a valid bitmask.  To check any repeated bitmask,
! 	 try using 16 bits from the other 32-bit half of val.  */
  
!       for (i = 0; i < 64; i += 16, mask <<= 16)
  	{
! 	  val2 = val & ~mask;
! 	  if (val2 != val && aarch64_bitmask_imm (val2, mode))
! 	    break;
! 	  val2 = val | mask;
! 	  if (val2 != val && aarch64_bitmask_imm (val2, mode))
  	    break;
! 	  val2 = val2 & ~mask;
! 	  val2 = val2 | (((val2 >> 32) | (val2 << 32)) & mask);
! 	  if (val2 != val && aarch64_bitmask_imm (val2, mode))
  	    break;
  	}
        if (i != 64)
  	{
  	  if (generate)
--- 5671,5691 ----
    one_match = ((~val & mask) == 0) + ((~val & (mask << 16)) == 0) +
      ((~val & (mask << 32)) == 0) + ((~val & (mask << 48)) == 0);
  
!   /* Try a bitmask immediate and a movk to generate the immediate
!      in 2 instructions.  */
  
!   if (zero_match < 2 && one_match < 2)
!     {
!       for (i = 0; i < 64; i += 16)
  	{
! 	  if (aarch64_check_bitmask (val, val2, mask << i))
  	    break;
! 
! 	  val2 = val & ~(mask << i);
! 	  if ((val2 >> 32) == 0 && aarch64_move_imm (val2, DImode))
  	    break;
  	}
+ 
        if (i != 64)
  	{
  	  if (generate)
*************** aarch64_internal_mov_immediate (rtx dest
*** 5613,5618 ****
--- 5698,5722 ----
  	}
      }
  
+   /* Try a bitmask plus 2 movk to generate the immediate in 3 instructions.  */
+   if (zero_match + one_match == 0)
+     {
+       for (i = 0; i < 48; i += 16)
+ 	for (int j = i + 16; j < 64; j += 16)
+ 	  if (aarch64_check_bitmask (val, val2, (mask << i) | (mask << j)))
+ 	    {
+ 	      if (generate)
+ 		{
+ 		  emit_insn (gen_rtx_SET (dest, GEN_INT (val2)));
+ 		  emit_insn (gen_insv_immdi (dest, GEN_INT (i),
+ 					     GEN_INT ((val >> i) & 0xffff)));
+ 		  emit_insn (gen_insv_immdi (dest, GEN_INT (j),
+ 					       GEN_INT ((val >> j) & 0xffff)));
+ 		}
+ 	      return 3;
+ 	    }
+     }
+ 
    /* Generate 2-4 instructions, skipping 16 bits of all zeroes or ones which
       are emitted by the initial mov.  If one_match > zero_match, skip set bits,
       otherwise skip zero bits.  */
*************** aarch64_mov128_immediate (rtx imm)
*** 5657,5662 ****
--- 5761,5857 ----
  }
  
  
+ /* Return true if val can be encoded as a 12-bit unsigned immediate with
+    a left shift of 0 or 12 bits.  */
+ bool
+ aarch64_uimm12_shift (unsigned HOST_WIDE_INT val)
+ {
+   return val < 4096 || (val & 0xfff000) == val;
+ }
+ 
+ /* Returns the nearest value to VAL that will fit as a 12-bit unsigned immediate
+    that can be created with a left shift of 0 or 12.  */
+ static HOST_WIDE_INT
+ aarch64_clamp_to_uimm12_shift (unsigned HOST_WIDE_INT val)
+ {
+   /* Check to see if the value fits in 24 bits, as that is the maximum we can
+      handle correctly.  */
+   gcc_assert (val < 0x1000000);
+ 
+   if (val < 4096)
+     return val;
+ 
+   return val & 0xfff000;
+ }
+ 
+ 
+ /* Test whether:
+ 
+      X = (X & AND_VAL) | IOR_VAL;
+ 
+    can be implemented using:
+ 
+      MOVK X, #(IOR_VAL >> shift), LSL #shift
+ 
+    Return the shift if so, otherwise return -1.  */
+ int
+ aarch64_movk_shift (const wide_int_ref &and_val,
+ 		    const wide_int_ref &ior_val)
+ {
+   unsigned int precision = and_val.get_precision ();
+   unsigned HOST_WIDE_INT mask = 0xffff;
+   for (unsigned int shift = 0; shift < precision; shift += 16)
+     {
+       if (and_val == ~mask && (ior_val & mask) == ior_val)
+ 	return shift;
+       mask <<= 16;
+     }
+   return -1;
+ }
+ 
+ /* Create mask of ones, covering the lowest to highest bits set in VAL_IN.
+    Assumed precondition: VAL_IN Is not zero.  */
+ 
+ unsigned HOST_WIDE_INT
+ aarch64_and_split_imm1 (HOST_WIDE_INT val_in)
+ {
+   int lowest_bit_set = ctz_hwi (val_in);
+   int highest_bit_set = floor_log2 (val_in);
+   gcc_assert (val_in != 0);
+ 
+   return ((HOST_WIDE_INT_UC (2) << highest_bit_set) -
+ 	  (HOST_WIDE_INT_1U << lowest_bit_set));
+ }
+ 
+ /* Create constant where bits outside of lowest bit set to highest bit set
+    are set to 1.  */
+ 
+ unsigned HOST_WIDE_INT
+ aarch64_and_split_imm2 (HOST_WIDE_INT val_in)
+ {
+   return val_in | ~aarch64_and_split_imm1 (val_in);
+ }
+ 
+ /* Return true if VAL_IN is a valid 'and' bitmask immediate.  */
+ 
+ bool
+ aarch64_and_bitmask_imm (unsigned HOST_WIDE_INT val_in, machine_mode mode)
+ {
+   scalar_int_mode int_mode;
+   if (!is_a <scalar_int_mode> (mode, &int_mode))
+     return false;
+ 
+   if (aarch64_bitmask_imm (val_in, int_mode))
+     return false;
+ 
+   if (aarch64_move_imm (val_in, int_mode))
+     return false;
+ 
+   unsigned HOST_WIDE_INT imm2 = aarch64_and_split_imm2 (val_in);
+ 
+   return aarch64_bitmask_imm (imm2, int_mode);
+ }
+ 
  /* Return the number of temporary registers that aarch64_add_offset_1
     would need to add OFFSET to a register.  */
  
*************** aarch64_expand_sve_const_vector (rtx tar
*** 6241,6247 ****
  	  /* If the integer can be moved into a general register by a
  	     single instruction, do that and duplicate the result.  */
  	  if (CONST_INT_P (elt_value)
! 	      && aarch64_move_imm (INTVAL (elt_value), elt_mode))
  	    {
  	      elt_value = force_reg (elt_mode, elt_value);
  	      return expand_vector_broadcast (mode, elt_value);
--- 6436,6443 ----
  	  /* If the integer can be moved into a general register by a
  	     single instruction, do that and duplicate the result.  */
  	  if (CONST_INT_P (elt_value)
! 	      && aarch64_move_imm (INTVAL (elt_value),
! 				   encoded_bits <= 32 ? SImode : DImode))
  	    {
  	      elt_value = force_reg (elt_mode, elt_value);
  	      return expand_vector_broadcast (mode, elt_value);
*************** aarch64_expand_mov_immediate (rtx dest,
*** 6734,6741 ****
        return;
      }
  
!   aarch64_internal_mov_immediate (dest, imm, true,
! 				  as_a <scalar_int_mode> (mode));
  }
  
  /* Return the MEM rtx that provides the canary value that should be used
--- 6930,6936 ----
        return;
      }
  
!   aarch64_internal_mov_immediate (dest, imm, true, mode);
  }
  
  /* Return the MEM rtx that provides the canary value that should be used
*************** aarch64_function_value_regno_p (const un
*** 7193,7198 ****
--- 7388,7396 ----
    if (regno >= V0_REGNUM && regno < V0_REGNUM + HA_MAX_NUM_FLDS)
      return TARGET_FLOAT;
  
+   if (regno >= P0_REGNUM && regno < P0_REGNUM + HA_MAX_NUM_FLDS)
+     return TARGET_SVE;
+ 
    return false;
  }
  
*************** aarch64_vfp_is_call_candidate (cumulativ
*** 7264,7278 ****
  /* Given MODE and TYPE of a function argument, return the alignment in
     bits.  The idea is to suppress any stronger alignment requested by
     the user and opt for the natural alignment (specified in AAPCS64 \S
!    4.1).  ABI_BREAK is set to true if the alignment was incorrectly
!    calculated in versions of GCC prior to GCC-9.  This is a helper
     function for local use only.  */
  
  static unsigned int
  aarch64_function_arg_alignment (machine_mode mode, const_tree type,
! 				unsigned int *abi_break)
  {
    *abi_break = 0;
    if (!type)
      return GET_MODE_ALIGNMENT (mode);
  
--- 7462,7480 ----
  /* Given MODE and TYPE of a function argument, return the alignment in
     bits.  The idea is to suppress any stronger alignment requested by
     the user and opt for the natural alignment (specified in AAPCS64 \S
!    4.1).  ABI_BREAK is set to the old alignment if the alignment was
!    incorrectly calculated in versions of GCC prior to GCC-9.
!    ABI_BREAK_PACKED is set to the old alignment if it was incorrectly
!    calculated in versions between GCC-9 and GCC-13.  This is a helper
     function for local use only.  */
  
  static unsigned int
  aarch64_function_arg_alignment (machine_mode mode, const_tree type,
! 				unsigned int *abi_break,
! 				unsigned int *abi_break_packed)
  {
    *abi_break = 0;
+   *abi_break_packed = 0;
    if (!type)
      return GET_MODE_ALIGNMENT (mode);
  
*************** aarch64_function_arg_alignment (machine_
*** 7282,7293 ****
    gcc_assert (TYPE_MODE (type) == mode);
  
    if (!AGGREGATE_TYPE_P (type))
!     return TYPE_ALIGN (TYPE_MAIN_VARIANT (type));
  
    if (TREE_CODE (type) == ARRAY_TYPE)
      return TYPE_ALIGN (TREE_TYPE (type));
  
    unsigned int alignment = 0;
    unsigned int bitfield_alignment = 0;
    for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
      if (TREE_CODE (field) == FIELD_DECL)
--- 7484,7509 ----
    gcc_assert (TYPE_MODE (type) == mode);
  
    if (!AGGREGATE_TYPE_P (type))
!     {
!       /* The ABI alignment is the natural alignment of the type, without
! 	 any attributes applied.  Normally this is the alignment of the
! 	 TYPE_MAIN_VARIANT, but not always; see PR108910 for a counterexample.
! 	 For now we just handle the known exceptions explicitly.  */
!       type = TYPE_MAIN_VARIANT (type);
!       if (POINTER_TYPE_P (type))
! 	{
! 	  gcc_assert (known_eq (POINTER_SIZE, GET_MODE_BITSIZE (mode)));
! 	  return POINTER_SIZE;
! 	}
!       gcc_assert (!TYPE_USER_ALIGN (type));
!       return TYPE_ALIGN (type);
!     }
  
    if (TREE_CODE (type) == ARRAY_TYPE)
      return TYPE_ALIGN (TREE_TYPE (type));
  
    unsigned int alignment = 0;
+   unsigned int bitfield_alignment_with_packed = 0;
    unsigned int bitfield_alignment = 0;
    for (tree field = TYPE_FIELDS (type); field; field = DECL_CHAIN (field))
      if (TREE_CODE (field) == FIELD_DECL)
*************** aarch64_function_arg_alignment (machine_
*** 7307,7317 ****
  	   but gains 8-byte alignment and size thanks to "e".  */
  	alignment = std::max (alignment, DECL_ALIGN (field));
  	if (DECL_BIT_FIELD_TYPE (field))
! 	  bitfield_alignment
! 	    = std::max (bitfield_alignment,
! 			TYPE_ALIGN (DECL_BIT_FIELD_TYPE (field)));
        }
  
    if (bitfield_alignment > alignment)
      {
        *abi_break = alignment;
--- 7523,7552 ----
  	   but gains 8-byte alignment and size thanks to "e".  */
  	alignment = std::max (alignment, DECL_ALIGN (field));
  	if (DECL_BIT_FIELD_TYPE (field))
! 	  {
! 	    /* Take the bit-field type's alignment into account only
! 	       if the user didn't reduce this field's alignment with
! 	       the packed attribute.  */
! 	    if (!DECL_PACKED (field))
! 	      bitfield_alignment
! 		= std::max (bitfield_alignment,
! 			    TYPE_ALIGN (DECL_BIT_FIELD_TYPE (field)));
! 
! 	    /* Compute the alignment even if the bit-field is
! 	       packed, so that we can emit a warning in case the
! 	       alignment changed between GCC versions.  */
! 	    bitfield_alignment_with_packed
! 	      = std::max (bitfield_alignment_with_packed,
! 			  TYPE_ALIGN (DECL_BIT_FIELD_TYPE (field)));
! 	  }
        }
  
+   /* Emit a warning if the alignment is different when taking the
+      'packed' attribute into account.  */
+   if (bitfield_alignment != bitfield_alignment_with_packed
+       && bitfield_alignment_with_packed > alignment)
+     *abi_break_packed = bitfield_alignment_with_packed;
+ 
    if (bitfield_alignment > alignment)
      {
        *abi_break = alignment;
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7337,7352 ****
--- 7572,7654 ----
    bool allocate_ncrn, allocate_nvrn;
    HOST_WIDE_INT size;
    unsigned int abi_break;
+   unsigned int abi_break_packed;
  
    /* We need to do this once per argument.  */
    if (pcum->aapcs_arg_processed)
      return;
  
+   bool warn_pcs_change
+     = (warn_psabi
+        && !pcum->silent_p
+        && (currently_expanding_function_start
+ 	   || currently_expanding_gimple_stmt));
+ 
+   /* HFAs and HVAs can have an alignment greater than 16 bytes.  For example:
+ 
+        typedef struct foo {
+          __Int8x16_t foo[2] __attribute__((aligned(32)));
+        } foo;
+ 
+      is still a HVA despite its larger-than-normal alignment.
+      However, such over-aligned HFAs and HVAs are guaranteed to have
+      no padding.
+ 
+      If we exclude HFAs and HVAs from the discussion below, then there
+      are several things to note:
+ 
+      - Both the C and AAPCS64 interpretations of a type's alignment should
+        give a value that is no greater than the type's size.
+ 
+      - Types bigger than 16 bytes are passed indirectly.
+ 
+      - If an argument of type T is passed indirectly, TYPE and MODE describe
+        a pointer to T rather than T iself.
+ 
+      It follows that the AAPCS64 alignment of TYPE must be no greater
+      than 16 bytes.
+ 
+      Versions prior to GCC 9.1 ignored a bitfield's underlying type
+      and so could calculate an alignment that was too small.  If this
+      happened for TYPE then ABI_BREAK is this older, too-small alignment.
+ 
+      Although GCC 9.1 fixed that bug, it introduced a different one:
+      it would consider the alignment of a bitfield's underlying type even
+      if the field was packed (which should have the effect of overriding
+      the alignment of the underlying type).  This was fixed in GCC 13.1.
+ 
+      As a result of this bug, GCC 9 to GCC 12 could calculate an alignment
+      that was too big.  If this happened for TYPE, ABI_BREAK_PACKED is
+      this older, too-big alignment.
+ 
+      Also, the fact that GCC 9 to GCC 12 considered irrelevant
+      alignments meant they could calculate type alignments that were
+      bigger than the type's size, contrary to the assumption above.
+      The handling of register arguments was nevertheless (and justifiably)
+      written to follow the assumption that the alignment can never be
+      greater than the size.  The same was not true for stack arguments;
+      their alignment was instead handled by MIN bounds in
+      aarch64_function_arg_boundary.
+ 
+      The net effect is that, if GCC 9 to GCC 12 incorrectly calculated
+      an alignment of more than 16 bytes for TYPE then:
+ 
+      - If the argument was passed in registers, these GCC versions
+        would treat the alignment as though it was *less than* 16 bytes.
+ 
+      - If the argument was passed on the stack, these GCC versions
+        would treat the alignment as though it was *equal to* 16 bytes.
+ 
+      Both behaviors were wrong, but in different cases.  */
+ 
    pcum->aapcs_arg_processed = true;
  
    pure_scalable_type_info pst_info;
    if (type && pst_info.analyze_registers (type))
      {
+       /* aarch64_function_arg_alignment has never had an effect on
+ 	 this case.  */
+ 
        /* The PCS says that it is invalid to pass an SVE value to an
  	 unprototyped function.  There is no ABI-defined location we
  	 can return in this case, so we have no real choice but to raise
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7408,7413 ****
--- 7710,7723 ----
  						 &nregs);
    gcc_assert (!sve_p || !allocate_nvrn);
  
+   unsigned int alignment
+     = aarch64_function_arg_alignment (mode, type, &abi_break,
+ 				      &abi_break_packed);
+ 
+   gcc_assert ((allocate_nvrn || alignment <= 16 * BITS_PER_UNIT)
+ 	      && (!alignment || abi_break < alignment)
+ 	      && (!abi_break_packed || alignment < abi_break_packed));
+ 
    /* allocate_ncrn may be false-positive, but allocate_nvrn is quite reliable.
       The following code thus handles passing by SIMD/FP registers first.  */
  
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7417,7422 ****
--- 7727,7734 ----
       and homogenous short-vector aggregates (HVA).  */
    if (allocate_nvrn)
      {
+       /* aarch64_function_arg_alignment has never had an effect on
+ 	 this case.  */
        if (!pcum->silent_p && !TARGET_FLOAT)
  	aarch64_err_no_fpadvsimd (mode);
  
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7473,7491 ****
        /* C.8 if the argument has an alignment of 16 then the NGRN is
  	 rounded up to the next even number.  */
        if (nregs == 2
! 	  && ncrn % 2
  	  /* The == 16 * BITS_PER_UNIT instead of >= 16 * BITS_PER_UNIT
  	     comparison is there because for > 16 * BITS_PER_UNIT
  	     alignment nregs should be > 2 and therefore it should be
  	     passed by reference rather than value.  */
! 	  && (aarch64_function_arg_alignment (mode, type, &abi_break)
! 	      == 16 * BITS_PER_UNIT))
! 	{
! 	  if (abi_break && warn_psabi && currently_expanding_gimple_stmt)
! 	    inform (input_location, "parameter passing for argument of type "
! 		    "%qT changed in GCC 9.1", type);
! 	  ++ncrn;
! 	  gcc_assert (ncrn + nregs <= NUM_ARG_REGS);
  	}
  
        /* If an argument with an SVE mode needs to be shifted up to the
--- 7785,7813 ----
        /* C.8 if the argument has an alignment of 16 then the NGRN is
  	 rounded up to the next even number.  */
        if (nregs == 2
! 	  && ncrn % 2)
! 	{
! 	  /* Emit a warning if the alignment changed when taking the
! 	     'packed' attribute into account.  */
! 	  if (warn_pcs_change
! 	      && abi_break_packed
! 	      && ((abi_break_packed == 16 * BITS_PER_UNIT)
! 		  != (alignment == 16 * BITS_PER_UNIT)))
! 	    inform (input_location, "parameter passing for argument of type "
! 		    "%qT changed in GCC 13.1", type);
! 
  	  /* The == 16 * BITS_PER_UNIT instead of >= 16 * BITS_PER_UNIT
  	     comparison is there because for > 16 * BITS_PER_UNIT
  	     alignment nregs should be > 2 and therefore it should be
  	     passed by reference rather than value.  */
! 	  if (alignment == 16 * BITS_PER_UNIT)
! 	    {
! 	      if (warn_pcs_change && abi_break)
! 		inform (input_location, "parameter passing for argument of type "
! 			"%qT changed in GCC 9.1", type);
! 	      ++ncrn;
! 	      gcc_assert (ncrn + nregs <= NUM_ARG_REGS);
! 	    }
  	}
  
        /* If an argument with an SVE mode needs to be shifted up to the
*************** aarch64_layout_arg (cumulative_args_t pc
*** 7538,7550 ****
  on_stack:
    pcum->aapcs_stack_words = size / UNITS_PER_WORD;
  
!   if (aarch64_function_arg_alignment (mode, type, &abi_break)
!       == 16 * BITS_PER_UNIT)
      {
        int new_size = ROUND_UP (pcum->aapcs_stack_size, 16 / UNITS_PER_WORD);
        if (pcum->aapcs_stack_size != new_size)
  	{
! 	  if (abi_break && warn_psabi && currently_expanding_gimple_stmt)
  	    inform (input_location, "parameter passing for argument of type "
  		    "%qT changed in GCC 9.1", type);
  	  pcum->aapcs_stack_size = new_size;
--- 7860,7878 ----
  on_stack:
    pcum->aapcs_stack_words = size / UNITS_PER_WORD;
  
!   if (warn_pcs_change
!       && abi_break_packed
!       && ((abi_break_packed >= 16 * BITS_PER_UNIT)
! 	  != (alignment >= 16 * BITS_PER_UNIT)))
!     inform (input_location, "parameter passing for argument of type "
! 	    "%qT changed in GCC 13.1", type);
! 
!   if (alignment == 16 * BITS_PER_UNIT)
      {
        int new_size = ROUND_UP (pcum->aapcs_stack_size, 16 / UNITS_PER_WORD);
        if (pcum->aapcs_stack_size != new_size)
  	{
! 	  if (warn_pcs_change && abi_break)
  	    inform (input_location, "parameter passing for argument of type "
  		    "%qT changed in GCC 9.1", type);
  	  pcum->aapcs_stack_size = new_size;
*************** bool
*** 7647,7653 ****
  aarch64_function_arg_regno_p (unsigned regno)
  {
    return ((GP_REGNUM_P (regno) && regno < R0_REGNUM + NUM_ARG_REGS)
! 	  || (FP_REGNUM_P (regno) && regno < V0_REGNUM + NUM_FP_ARG_REGS));
  }
  
  /* Implement FUNCTION_ARG_BOUNDARY.  Every parameter gets at least
--- 7975,7982 ----
  aarch64_function_arg_regno_p (unsigned regno)
  {
    return ((GP_REGNUM_P (regno) && regno < R0_REGNUM + NUM_ARG_REGS)
! 	  || (FP_REGNUM_P (regno) && regno < V0_REGNUM + NUM_FP_ARG_REGS)
! 	  || (PR_REGNUM_P (regno) && regno < P0_REGNUM + NUM_PR_ARG_REGS));
  }
  
  /* Implement FUNCTION_ARG_BOUNDARY.  Every parameter gets at least
*************** static unsigned int
*** 7661,7677 ****
  aarch64_function_arg_boundary (machine_mode mode, const_tree type)
  {
    unsigned int abi_break;
    unsigned int alignment = aarch64_function_arg_alignment (mode, type,
! 							   &abi_break);
    alignment = MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY);
-   if (abi_break & warn_psabi)
-     {
-       abi_break = MIN (MAX (abi_break, PARM_BOUNDARY), STACK_BOUNDARY);
-       if (alignment != abi_break)
- 	inform (input_location, "parameter passing for argument of type "
- 		"%qT changed in GCC 9.1", type);
-     }
- 
    return alignment;
  }
  
--- 7990,8002 ----
  aarch64_function_arg_boundary (machine_mode mode, const_tree type)
  {
    unsigned int abi_break;
+   unsigned int abi_break_packed;
    unsigned int alignment = aarch64_function_arg_alignment (mode, type,
! 							   &abi_break,
! 							   &abi_break_packed);
!   /* We rely on aarch64_layout_arg and aarch64_gimplify_va_arg_expr
!      to emit warnings about ABI incompatibility.  */
    alignment = MIN (MAX (alignment, PARM_BOUNDARY), STACK_BOUNDARY);
    return alignment;
  }
  
*************** aarch64_get_reg_raw_mode (int regno)
*** 7687,7692 ****
--- 8012,8021 ----
         for SVE types are fundamentally incompatible with the
         __builtin_return/__builtin_apply interface.  */
      return as_a <fixed_size_mode> (V16QImode);
+   if (PR_REGNUM_P (regno))
+     /* For SVE PR regs, indicate that they should be ignored for
+        __builtin_apply/__builtin_return.  */
+     return as_a <fixed_size_mode> (VOIDmode);
    return default_get_reg_raw_mode (regno);
  }
  
*************** aarch64_return_address_signing_enabled (
*** 8621,8638 ****
    if (crtl->calls_eh_return)
      return false;
  
!   /* If signing scope is AARCH64_FUNCTION_NON_LEAF, we only sign a leaf function
       if its LR is pushed onto stack.  */
!   return (aarch64_ra_sign_scope == AARCH64_FUNCTION_ALL
! 	  || (aarch64_ra_sign_scope == AARCH64_FUNCTION_NON_LEAF
  	      && known_ge (cfun->machine->frame.reg_offset[LR_REGNUM], 0)));
  }
  
  /* Return TRUE if Branch Target Identification Mechanism is enabled.  */
  bool
! aarch64_bti_enabled (void)
  {
!   return (aarch64_enable_bti == 1);
  }
  
  /* The caller is going to use ST1D or LD1D to save or restore an SVE
--- 8950,9021 ----
    if (crtl->calls_eh_return)
      return false;
  
!   /* If signing scope is AARCH_FUNCTION_NON_LEAF, we only sign a leaf function
       if its LR is pushed onto stack.  */
!   return (aarch_ra_sign_scope == AARCH_FUNCTION_ALL
! 	  || (aarch_ra_sign_scope == AARCH_FUNCTION_NON_LEAF
  	      && known_ge (cfun->machine->frame.reg_offset[LR_REGNUM], 0)));
  }
  
+ /* Only used by the arm backend.  */
+ void aarch_bti_arch_check (void)
+ {}
+ 
  /* Return TRUE if Branch Target Identification Mechanism is enabled.  */
  bool
! aarch_bti_enabled (void)
  {
!   return (aarch_enable_bti == 1);
! }
! 
! /* Check if INSN is a BTI J insn.  */
! bool
! aarch_bti_j_insn_p (rtx_insn *insn)
! {
!   if (!insn || !INSN_P (insn))
!     return false;
! 
!   rtx pat = PATTERN (insn);
!   return GET_CODE (pat) == UNSPEC_VOLATILE && XINT (pat, 1) == UNSPECV_BTI_J;
! }
! 
! /* Check if X (or any sub-rtx of X) is a PACIASP/PACIBSP instruction.  */
! bool
! aarch_pac_insn_p (rtx x)
! {
!   if (!INSN_P (x))
!     return false;
! 
!   subrtx_var_iterator::array_type array;
!   FOR_EACH_SUBRTX_VAR (iter, array, PATTERN (x), ALL)
!     {
!       rtx sub = *iter;
!       if (sub && GET_CODE (sub) == UNSPEC)
! 	{
! 	  int unspec_val = XINT (sub, 1);
! 	  switch (unspec_val)
! 	    {
! 	    case UNSPEC_PACIASP:
!             case UNSPEC_PACIBSP:
! 	      return true;
! 
! 	    default:
! 	      return false;
! 	    }
! 	  iter.skip_subrtxes ();
! 	}
!     }
!   return false;
! }
! 
! rtx aarch_gen_bti_c (void)
! {
!   return gen_bti_c ();
! }
! 
! rtx aarch_gen_bti_j (void)
! {
!   return gen_bti_j ();
  }
  
  /* The caller is going to use ST1D or LD1D to save or restore an SVE
*************** aarch64_expand_prologue (void)
*** 9624,9635 ****
    /* Sign return address for functions.  */
    if (aarch64_return_address_signing_enabled ())
      {
!       switch (aarch64_ra_sign_key)
  	{
! 	  case AARCH64_KEY_A:
  	    insn = emit_insn (gen_paciasp ());
  	    break;
! 	  case AARCH64_KEY_B:
  	    insn = emit_insn (gen_pacibsp ());
  	    break;
  	  default:
--- 10007,10018 ----
    /* Sign return address for functions.  */
    if (aarch64_return_address_signing_enabled ())
      {
!       switch (aarch_ra_sign_key)
  	{
! 	  case AARCH_KEY_A:
  	    insn = emit_insn (gen_paciasp ());
  	    break;
! 	  case AARCH_KEY_B:
  	    insn = emit_insn (gen_pacibsp ());
  	    break;
  	  default:
*************** aarch64_expand_epilogue (bool for_sibcal
*** 9930,9941 ****
    if (aarch64_return_address_signing_enabled ()
        && (for_sibcall || !TARGET_ARMV8_3))
      {
!       switch (aarch64_ra_sign_key)
  	{
! 	  case AARCH64_KEY_A:
  	    insn = emit_insn (gen_autiasp ());
  	    break;
! 	  case AARCH64_KEY_B:
  	    insn = emit_insn (gen_autibsp ());
  	    break;
  	  default:
--- 10313,10324 ----
    if (aarch64_return_address_signing_enabled ()
        && (for_sibcall || !TARGET_ARMV8_3))
      {
!       switch (aarch_ra_sign_key)
  	{
! 	  case AARCH_KEY_A:
  	    insn = emit_insn (gen_autiasp ());
  	    break;
! 	  case AARCH_KEY_B:
  	    insn = emit_insn (gen_autibsp ());
  	    break;
  	  default:
*************** aarch64_output_mi_thunk (FILE *file, tre
*** 10014,10020 ****
    rtx_insn *insn;
    const char *fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk));
  
!   if (aarch64_bti_enabled ())
      emit_insn (gen_bti_c());
  
    reload_completed = 1;
--- 10397,10403 ----
    rtx_insn *insn;
    const char *fnname = IDENTIFIER_POINTER (DECL_ASSEMBLER_NAME (thunk));
  
!   if (aarch_bti_enabled ())
      emit_insn (gen_bti_c());
  
    reload_completed = 1;
*************** aarch64_tls_referenced_p (rtx x)
*** 10112,10318 ****
  }
  
  
- /* Return true if val can be encoded as a 12-bit unsigned immediate with
-    a left shift of 0 or 12 bits.  */
- bool
- aarch64_uimm12_shift (HOST_WIDE_INT val)
- {
-   return ((val & (((HOST_WIDE_INT) 0xfff) << 0)) == val
- 	  || (val & (((HOST_WIDE_INT) 0xfff) << 12)) == val
- 	  );
- }
- 
- /* Returns the nearest value to VAL that will fit as a 12-bit unsigned immediate
-    that can be created with a left shift of 0 or 12.  */
- static HOST_WIDE_INT
- aarch64_clamp_to_uimm12_shift (HOST_WIDE_INT val)
- {
-   /* Check to see if the value fits in 24 bits, as that is the maximum we can
-      handle correctly.  */
-   gcc_assert ((val & 0xffffff) == val);
- 
-   if (((val & 0xfff) << 0) == val)
-     return val;
- 
-   return val & (0xfff << 12);
- }
- 
- /* Return true if val is an immediate that can be loaded into a
-    register by a MOVZ instruction.  */
- static bool
- aarch64_movw_imm (HOST_WIDE_INT val, scalar_int_mode mode)
- {
-   if (GET_MODE_SIZE (mode) > 4)
-     {
-       if ((val & (((HOST_WIDE_INT) 0xffff) << 32)) == val
- 	  || (val & (((HOST_WIDE_INT) 0xffff) << 48)) == val)
- 	return 1;
-     }
-   else
-     {
-       /* Ignore sign extension.  */
-       val &= (HOST_WIDE_INT) 0xffffffff;
-     }
-   return ((val & (((HOST_WIDE_INT) 0xffff) << 0)) == val
- 	  || (val & (((HOST_WIDE_INT) 0xffff) << 16)) == val);
- }
- 
- /* Test whether:
- 
-      X = (X & AND_VAL) | IOR_VAL;
- 
-    can be implemented using:
- 
-      MOVK X, #(IOR_VAL >> shift), LSL #shift
- 
-    Return the shift if so, otherwise return -1.  */
- int
- aarch64_movk_shift (const wide_int_ref &and_val,
- 		    const wide_int_ref &ior_val)
- {
-   unsigned int precision = and_val.get_precision ();
-   unsigned HOST_WIDE_INT mask = 0xffff;
-   for (unsigned int shift = 0; shift < precision; shift += 16)
-     {
-       if (and_val == ~mask && (ior_val & mask) == ior_val)
- 	return shift;
-       mask <<= 16;
-     }
-   return -1;
- }
- 
- /* VAL is a value with the inner mode of MODE.  Replicate it to fill a
-    64-bit (DImode) integer.  */
- 
- static unsigned HOST_WIDE_INT
- aarch64_replicate_bitmask_imm (unsigned HOST_WIDE_INT val, machine_mode mode)
- {
-   unsigned int size = GET_MODE_UNIT_PRECISION (mode);
-   while (size < 64)
-     {
-       val &= (HOST_WIDE_INT_1U << size) - 1;
-       val |= val << size;
-       size *= 2;
-     }
-   return val;
- }
- 
- /* Multipliers for repeating bitmasks of width 32, 16, 8, 4, and 2.  */
- 
- static const unsigned HOST_WIDE_INT bitmask_imm_mul[] =
-   {
-     0x0000000100000001ull,
-     0x0001000100010001ull,
-     0x0101010101010101ull,
-     0x1111111111111111ull,
-     0x5555555555555555ull,
-   };
- 
- 
- /* Return true if val is a valid bitmask immediate.  */
- 
- bool
- aarch64_bitmask_imm (HOST_WIDE_INT val_in, machine_mode mode)
- {
-   unsigned HOST_WIDE_INT val, tmp, mask, first_one, next_one;
-   int bits;
- 
-   /* Check for a single sequence of one bits and return quickly if so.
-      The special cases of all ones and all zeroes returns false.  */
-   val = aarch64_replicate_bitmask_imm (val_in, mode);
-   tmp = val + (val & -val);
- 
-   if (tmp == (tmp & -tmp))
-     return (val + 1) > 1;
- 
-   /* Replicate 32-bit immediates so we can treat them as 64-bit.  */
-   if (mode == SImode)
-     val = (val << 32) | (val & 0xffffffff);
- 
-   /* Invert if the immediate doesn't start with a zero bit - this means we
-      only need to search for sequences of one bits.  */
-   if (val & 1)
-     val = ~val;
- 
-   /* Find the first set bit and set tmp to val with the first sequence of one
-      bits removed.  Return success if there is a single sequence of ones.  */
-   first_one = val & -val;
-   tmp = val & (val + first_one);
- 
-   if (tmp == 0)
-     return true;
- 
-   /* Find the next set bit and compute the difference in bit position.  */
-   next_one = tmp & -tmp;
-   bits = clz_hwi (first_one) - clz_hwi (next_one);
-   mask = val ^ tmp;
- 
-   /* Check the bit position difference is a power of 2, and that the first
-      sequence of one bits fits within 'bits' bits.  */
-   if ((mask >> bits) != 0 || bits != (bits & -bits))
-     return false;
- 
-   /* Check the sequence of one bits is repeated 64/bits times.  */
-   return val == mask * bitmask_imm_mul[__builtin_clz (bits) - 26];
- }
- 
- /* Create mask of ones, covering the lowest to highest bits set in VAL_IN.  
-    Assumed precondition: VAL_IN Is not zero.  */
- 
- unsigned HOST_WIDE_INT
- aarch64_and_split_imm1 (HOST_WIDE_INT val_in)
- {
-   int lowest_bit_set = ctz_hwi (val_in);
-   int highest_bit_set = floor_log2 (val_in);
-   gcc_assert (val_in != 0);
- 
-   return ((HOST_WIDE_INT_UC (2) << highest_bit_set) -
- 	  (HOST_WIDE_INT_1U << lowest_bit_set));
- }
- 
- /* Create constant where bits outside of lowest bit set to highest bit set
-    are set to 1.  */
- 
- unsigned HOST_WIDE_INT
- aarch64_and_split_imm2 (HOST_WIDE_INT val_in)
- {
-   return val_in | ~aarch64_and_split_imm1 (val_in);
- }
- 
- /* Return true if VAL_IN is a valid 'and' bitmask immediate.  */
- 
- bool
- aarch64_and_bitmask_imm (unsigned HOST_WIDE_INT val_in, machine_mode mode)
- {
-   scalar_int_mode int_mode;
-   if (!is_a <scalar_int_mode> (mode, &int_mode))
-     return false;
- 
-   if (aarch64_bitmask_imm (val_in, int_mode))
-     return false;
- 
-   if (aarch64_move_imm (val_in, int_mode))
-     return false;
- 
-   unsigned HOST_WIDE_INT imm2 = aarch64_and_split_imm2 (val_in);
- 
-   return aarch64_bitmask_imm (imm2, int_mode);
- }
- 
- /* Return true if val is an immediate that can be loaded into a
-    register in a single instruction.  */
- bool
- aarch64_move_imm (HOST_WIDE_INT val, machine_mode mode)
- {
-   scalar_int_mode int_mode;
-   if (!is_a <scalar_int_mode> (mode, &int_mode))
-     return false;
- 
-   if (aarch64_movw_imm (val, int_mode) || aarch64_movw_imm (~val, int_mode))
-     return 1;
-   return aarch64_bitmask_imm (val, int_mode);
- }
- 
  static bool
  aarch64_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
--- 10495,10500 ----
*************** aarch64_case_values_threshold (void)
*** 10355,10362 ****
    /* Use the specified limit for the number of cases before using jump
       tables at higher optimization levels.  */
    if (optimize > 2
!       && selected_cpu->tune->max_case_values != 0)
!     return selected_cpu->tune->max_case_values;
    else
      return optimize_size ? 8 : 11;
  }
--- 10537,10544 ----
    /* Use the specified limit for the number of cases before using jump
       tables at higher optimization levels.  */
    if (optimize > 2
!       && aarch64_tune_params.max_case_values != 0)
!     return aarch64_tune_params.max_case_values;
    else
      return optimize_size ? 8 : 11;
  }
*************** aarch64_mode_valid_for_sched_fusion_p (m
*** 10568,10573 ****
--- 10750,10756 ----
  {
    return mode == SImode || mode == DImode
  	 || mode == SFmode || mode == DFmode
+ 	 || mode == SDmode || mode == DDmode
  	 || (aarch64_vector_mode_supported_p (mode)
  	     && (known_eq (GET_MODE_SIZE (mode), 8)
  		 || (known_eq (GET_MODE_SIZE (mode), 16)
*************** aarch64_classify_address (struct aarch64
*** 10610,10622 ****
    vec_flags &= ~VEC_PARTIAL;
  
    /* On BE, we use load/store pair for all large int mode load/stores.
!      TI/TFmode may also use a load/store pair.  */
    bool advsimd_struct_p = (vec_flags == (VEC_ADVSIMD | VEC_STRUCT));
    bool load_store_pair_p = (type == ADDR_QUERY_LDP_STP
  			    || type == ADDR_QUERY_LDP_STP_N
  			    || mode == TImode
  			    || mode == TFmode
! 			    || (BYTES_BIG_ENDIAN && advsimd_struct_p));
    /* If we are dealing with ADDR_QUERY_LDP_STP_N that means the incoming mode
       corresponds to the actual size of the memory being loaded/stored and the
       mode of the corresponding addressing mode is half of that.  */
--- 10793,10807 ----
    vec_flags &= ~VEC_PARTIAL;
  
    /* On BE, we use load/store pair for all large int mode load/stores.
!      TI/TF/TDmode may also use a load/store pair.  */
    bool advsimd_struct_p = (vec_flags == (VEC_ADVSIMD | VEC_STRUCT));
    bool load_store_pair_p = (type == ADDR_QUERY_LDP_STP
  			    || type == ADDR_QUERY_LDP_STP_N
  			    || mode == TImode
  			    || mode == TFmode
! 			    || mode == TDmode
! 			    || ((!TARGET_SIMD || BYTES_BIG_ENDIAN)
! 				&& advsimd_struct_p));
    /* If we are dealing with ADDR_QUERY_LDP_STP_N that means the incoming mode
       corresponds to the actual size of the memory being loaded/stored and the
       mode of the corresponding addressing mode is half of that.  */
*************** aarch64_classify_address (struct aarch64
*** 10646,10651 ****
--- 10831,10837 ----
    /* On LE, for AdvSIMD, don't support anything other than POST_INC or
       REG addressing.  */
    if (advsimd_struct_p
+       && TARGET_SIMD
        && !BYTES_BIG_ENDIAN
        && (code != POST_INC && code != REG))
      return false;
*************** aarch64_classify_address (struct aarch64
*** 10689,10695 ****
  	  info->offset = op1;
  	  info->const_offset = offset;
  
! 	  /* TImode and TFmode values are allowed in both pairs of X
  	     registers and individual Q registers.  The available
  	     address modes are:
  	     X,X: 7-bit signed scaled offset
--- 10875,10881 ----
  	  info->offset = op1;
  	  info->const_offset = offset;
  
! 	  /* TImode, TFmode and TDmode values are allowed in both pairs of X
  	     registers and individual Q registers.  The available
  	     address modes are:
  	     X,X: 7-bit signed scaled offset
*************** aarch64_classify_address (struct aarch64
*** 10698,10704 ****
  	     When performing the check for pairs of X registers i.e.  LDP/STP
  	     pass down DImode since that is the natural size of the LDP/STP
  	     instruction memory accesses.  */
! 	  if (mode == TImode || mode == TFmode)
  	    return (aarch64_offset_7bit_signed_scaled_p (DImode, offset)
  		    && (aarch64_offset_9bit_signed_unscaled_p (mode, offset)
  			|| offset_12bit_unsigned_scaled_p (mode, offset)));
--- 10884,10890 ----
  	     When performing the check for pairs of X registers i.e.  LDP/STP
  	     pass down DImode since that is the natural size of the LDP/STP
  	     instruction memory accesses.  */
! 	  if (mode == TImode || mode == TFmode || mode == TDmode)
  	    return (aarch64_offset_7bit_signed_scaled_p (DImode, offset)
  		    && (aarch64_offset_9bit_signed_unscaled_p (mode, offset)
  			|| offset_12bit_unsigned_scaled_p (mode, offset)));
*************** aarch64_classify_address (struct aarch64
*** 10708,10714 ****
  	            && aarch64_offset_7bit_signed_scaled_p (DImode, offset + 48));
  
  	  /* A 7bit offset check because OImode will emit a ldp/stp
! 	     instruction (only big endian will get here).
  	     For ldp/stp instructions, the offset is scaled for the size of a
  	     single element of the pair.  */
  	  if (aarch64_advsimd_partial_struct_mode_p (mode)
--- 10894,10900 ----
  	            && aarch64_offset_7bit_signed_scaled_p (DImode, offset + 48));
  
  	  /* A 7bit offset check because OImode will emit a ldp/stp
! 	     instruction (only !TARGET_SIMD or big endian will get here).
  	     For ldp/stp instructions, the offset is scaled for the size of a
  	     single element of the pair.  */
  	  if (aarch64_advsimd_partial_struct_mode_p (mode)
*************** aarch64_classify_address (struct aarch64
*** 10719,10725 ****
  	    return aarch64_offset_7bit_signed_scaled_p (TImode, offset);
  
  	  /* Three 9/12 bit offsets checks because CImode will emit three
! 	     ldr/str instructions (only big endian will get here).  */
  	  if (aarch64_advsimd_partial_struct_mode_p (mode)
  	      && known_eq (GET_MODE_SIZE (mode), 24))
  	    return (aarch64_offset_7bit_signed_scaled_p (DImode, offset)
--- 10905,10912 ----
  	    return aarch64_offset_7bit_signed_scaled_p (TImode, offset);
  
  	  /* Three 9/12 bit offsets checks because CImode will emit three
! 	     ldr/str instructions (only !TARGET_SIMD or big endian will
! 	     get here).  */
  	  if (aarch64_advsimd_partial_struct_mode_p (mode)
  	      && known_eq (GET_MODE_SIZE (mode), 24))
  	    return (aarch64_offset_7bit_signed_scaled_p (DImode, offset)
*************** aarch64_classify_address (struct aarch64
*** 10821,10834 ****
  	  info->offset = XEXP (XEXP (x, 1), 1);
  	  info->const_offset = offset;
  
! 	  /* TImode and TFmode values are allowed in both pairs of X
  	     registers and individual Q registers.  The available
  	     address modes are:
  	     X,X: 7-bit signed scaled offset
  	     Q:   9-bit signed offset
  	     We conservatively require an offset representable in either mode.
  	   */
! 	  if (mode == TImode || mode == TFmode)
  	    return (aarch64_offset_7bit_signed_scaled_p (mode, offset)
  		    && aarch64_offset_9bit_signed_unscaled_p (mode, offset));
  
--- 11008,11021 ----
  	  info->offset = XEXP (XEXP (x, 1), 1);
  	  info->const_offset = offset;
  
! 	  /* TImode, TFmode and TDmode values are allowed in both pairs of X
  	     registers and individual Q registers.  The available
  	     address modes are:
  	     X,X: 7-bit signed scaled offset
  	     Q:   9-bit signed offset
  	     We conservatively require an offset representable in either mode.
  	   */
! 	  if (mode == TImode || mode == TFmode || mode == TDmode)
  	    return (aarch64_offset_7bit_signed_scaled_p (mode, offset)
  		    && aarch64_offset_9bit_signed_unscaled_p (mode, offset));
  
*************** aarch64_legitimize_address_displacement
*** 10990,10998 ****
  	 offset.  Use 4KB range for 1- and 2-byte accesses and a 16KB
  	 range otherwise to increase opportunities for sharing the base
  	 address of different sizes.  Unaligned accesses use the signed
! 	 9-bit range, TImode/TFmode use the intersection of signed
  	 scaled 7-bit and signed 9-bit offset.  */
!       if (mode == TImode || mode == TFmode)
  	second_offset = ((const_offset + 0x100) & 0x1f8) - 0x100;
        else if ((const_offset & (size - 1)) != 0)
  	second_offset = ((const_offset + 0x100) & 0x1ff) - 0x100;
--- 11177,11185 ----
  	 offset.  Use 4KB range for 1- and 2-byte accesses and a 16KB
  	 range otherwise to increase opportunities for sharing the base
  	 address of different sizes.  Unaligned accesses use the signed
! 	 9-bit range, TImode/TFmode/TDmode use the intersection of signed
  	 scaled 7-bit and signed 9-bit offset.  */
!       if (mode == TImode || mode == TFmode || mode == TDmode)
  	second_offset = ((const_offset + 0x100) & 0x1f8) - 0x100;
        else if ((const_offset & (size - 1)) != 0)
  	second_offset = ((const_offset + 0x100) & 0x1ff) - 0x100;
*************** aarch64_reinterpret_float_as_int (rtx va
*** 11073,11079 ****
  		  CONST_DOUBLE_REAL_VALUE (value),
  		  REAL_MODE_FORMAT (mode));
  
!   if (mode == DFmode)
      {
        int order = BYTES_BIG_ENDIAN ? 1 : 0;
        ival = zext_hwi (res[order], 32);
--- 11260,11266 ----
  		  CONST_DOUBLE_REAL_VALUE (value),
  		  REAL_MODE_FORMAT (mode));
  
!   if (mode == DFmode || mode == DDmode)
      {
        int order = BYTES_BIG_ENDIAN ? 1 : 0;
        ival = zext_hwi (res[order], 32);
*************** aarch64_float_const_rtx_p (rtx x)
*** 11103,11111 ****
        && SCALAR_FLOAT_MODE_P (mode)
        && aarch64_reinterpret_float_as_int (x, &ival))
      {
!       scalar_int_mode imode = (mode == HFmode
! 			       ? SImode
! 			       : int_mode_for_mode (mode).require ());
        int num_instr = aarch64_internal_mov_immediate
  			(NULL_RTX, gen_int_mode (ival, imode), false, imode);
        return num_instr < 3;
--- 11290,11296 ----
        && SCALAR_FLOAT_MODE_P (mode)
        && aarch64_reinterpret_float_as_int (x, &ival))
      {
!       machine_mode imode = known_eq (GET_MODE_SIZE (mode), 8) ? DImode : SImode;
        int num_instr = aarch64_internal_mov_immediate
  			(NULL_RTX, gen_int_mode (ival, imode), false, imode);
        return num_instr < 3;
*************** aarch64_float_const_rtx_p (rtx x)
*** 11114,11124 ****
    return false;
  }
  
! /* Return TRUE if rtx X is immediate constant 0.0 */
  bool
  aarch64_float_const_zero_rtx_p (rtx x)
  {
!   if (GET_MODE (x) == VOIDmode)
      return false;
  
    if (REAL_VALUE_MINUS_ZERO (*CONST_DOUBLE_REAL_VALUE (x)))
--- 11299,11313 ----
    return false;
  }
  
! /* Return TRUE if rtx X is immediate constant 0.0 (but not in Decimal
!    Floating Point).  */
  bool
  aarch64_float_const_zero_rtx_p (rtx x)
  {
!   /* 0.0 in Decimal Floating Point cannot be represented by #0 or
!      zr as our callers expect, so no need to check the actual
!      value if X is of Decimal Floating Point type.  */
!   if (GET_MODE_CLASS (GET_MODE (x)) == MODE_DECIMAL_FLOAT)
      return false;
  
    if (REAL_VALUE_MINUS_ZERO (*CONST_DOUBLE_REAL_VALUE (x)))
*************** aarch64_can_const_movi_rtx_p (rtx x, mac
*** 11156,11162 ****
    else
      return false;
  
!    /* use a 64 bit mode for everything except for DI/DF mode, where we use
       a 128 bit vector mode.  */
    int width = GET_MODE_BITSIZE (imode) == 64 ? 128 : 64;
  
--- 11345,11351 ----
    else
      return false;
  
!    /* use a 64 bit mode for everything except for DI/DF/DD mode, where we use
       a 128 bit vector mode.  */
    int width = GET_MODE_BITSIZE (imode) == 64 ? 128 : 64;
  
*************** aarch64_select_cc_mode (RTX_CODE code, r
*** 11278,11284 ****
    if (y == const0_rtx && (REG_P (x) || SUBREG_P (x))
        && (code == EQ || code == NE)
        && (mode_x == HImode || mode_x == QImode))
!     return CC_NZmode;
  
    /* Similarly, comparisons of zero_extends from shorter modes can
       be performed using an ANDS with an immediate mask.  */
--- 11467,11473 ----
    if (y == const0_rtx && (REG_P (x) || SUBREG_P (x))
        && (code == EQ || code == NE)
        && (mode_x == HImode || mode_x == QImode))
!     return CC_Zmode;
  
    /* Similarly, comparisons of zero_extends from shorter modes can
       be performed using an ANDS with an immediate mask.  */
*************** aarch64_select_cc_mode (RTX_CODE code, r
*** 11286,11300 ****
        && (mode_x == SImode || mode_x == DImode)
        && (GET_MODE (XEXP (x, 0)) == HImode || GET_MODE (XEXP (x, 0)) == QImode)
        && (code == EQ || code == NE))
!     return CC_NZmode;
  
    if ((mode_x == SImode || mode_x == DImode)
        && y == const0_rtx
        && (code == EQ || code == NE || code == LT || code == GE)
!       && (code_x == PLUS || code_x == MINUS || code_x == AND
! 	  || code_x == NEG
! 	  || (code_x == ZERO_EXTRACT && CONST_INT_P (XEXP (x, 1))
! 	      && CONST_INT_P (XEXP (x, 2)))))
      return CC_NZmode;
  
    /* A compare with a shifted operand.  Because of canonicalization,
--- 11475,11503 ----
        && (mode_x == SImode || mode_x == DImode)
        && (GET_MODE (XEXP (x, 0)) == HImode || GET_MODE (XEXP (x, 0)) == QImode)
        && (code == EQ || code == NE))
!     return CC_Zmode;
  
+   /* Zero extracts support equality comparisons.  */
+   if ((mode_x == SImode || mode_x == DImode)
+       && y == const0_rtx
+       && (code_x == ZERO_EXTRACT && CONST_INT_P (XEXP (x, 1))
+ 	  && CONST_INT_P (XEXP (x, 2)))
+       && (code == EQ || code == NE))
+     return CC_Zmode;
+ 
+   /* ANDS/BICS/TST support equality and all signed comparisons.  */
+   if ((mode_x == SImode || mode_x == DImode)
+       && y == const0_rtx
+       && (code_x == AND)
+       && (code == EQ || code == NE || code == LT || code == GE
+ 	  || code == GT || code == LE))
+     return CC_NZVmode;
+ 
+   /* ADDS/SUBS correctly set N and Z flags.  */
    if ((mode_x == SImode || mode_x == DImode)
        && y == const0_rtx
        && (code == EQ || code == NE || code == LT || code == GE)
!       && (code_x == PLUS || code_x == MINUS || code_x == NEG))
      return CC_NZmode;
  
    /* A compare with a shifted operand.  Because of canonicalization,
*************** aarch64_get_condition_code_1 (machine_mo
*** 11431,11436 ****
--- 11634,11652 ----
  	}
        break;
  
+     case E_CC_NZVmode:
+       switch (comp_code)
+ 	{
+ 	case NE: return AARCH64_NE;
+ 	case EQ: return AARCH64_EQ;
+ 	case GE: return AARCH64_PL;
+ 	case LT: return AARCH64_MI;
+ 	case GT: return AARCH64_GT;
+ 	case LE: return AARCH64_LE;
+ 	default: return -1;
+ 	}
+       break;
+ 
      case E_CC_NZmode:
        switch (comp_code)
  	{
*************** aarch64_anchor_offset (HOST_WIDE_INT off
*** 12356,12362 ****
    if (IN_RANGE (offset, -256, 0))
      return 0;
  
!   if (mode == TImode || mode == TFmode)
      return (offset + 0x100) & ~0x1ff;
  
    /* Use 12-bit offset by access size.  */
--- 12572,12578 ----
    if (IN_RANGE (offset, -256, 0))
      return 0;
  
!   if (mode == TImode || mode == TFmode || mode == TDmode)
      return (offset + 0x100) & ~0x1ff;
  
    /* Use 12-bit offset by access size.  */
*************** aarch64_secondary_reload (bool in_p ATTR
*** 12438,12455 ****
    /* Use aarch64_sve_reload_mem for SVE memory reloads that cannot use
       LDR and STR.  See the comment at the head of aarch64-sve.md for
       more details about the big-endian handling.  */
    if (reg_class_subset_p (rclass, FP_REGS)
        && !((REG_P (x) && HARD_REGISTER_P (x))
  	   || aarch64_simd_valid_immediate (x, NULL))
!       && mode != VNx16QImode)
      {
!       unsigned int vec_flags = aarch64_classify_vector_mode (mode);
!       if ((vec_flags & VEC_SVE_DATA)
! 	  && ((vec_flags & VEC_PARTIAL) || BYTES_BIG_ENDIAN))
! 	{
! 	  sri->icode = CODE_FOR_aarch64_sve_reload_mem;
! 	  return NO_REGS;
! 	}
      }
  
    /* If we have to disable direct literal pool loads and stores because the
--- 12654,12669 ----
    /* Use aarch64_sve_reload_mem for SVE memory reloads that cannot use
       LDR and STR.  See the comment at the head of aarch64-sve.md for
       more details about the big-endian handling.  */
+   unsigned int vec_flags = aarch64_classify_vector_mode (mode);
    if (reg_class_subset_p (rclass, FP_REGS)
        && !((REG_P (x) && HARD_REGISTER_P (x))
  	   || aarch64_simd_valid_immediate (x, NULL))
!       && mode != VNx16QImode
!       && (vec_flags & VEC_SVE_DATA)
!       && ((vec_flags & VEC_PARTIAL) || BYTES_BIG_ENDIAN))
      {
!       sri->icode = CODE_FOR_aarch64_sve_reload_mem;
!       return NO_REGS;
      }
  
    /* If we have to disable direct literal pool loads and stores because the
*************** aarch64_secondary_reload (bool in_p ATTR
*** 12465,12491 ****
  
    /* Without the TARGET_SIMD instructions we cannot move a Q register
       to a Q register directly.  We need a scratch.  */
!   if (REG_P (x) && (mode == TFmode || mode == TImode) && mode == GET_MODE (x)
!       && FP_REGNUM_P (REGNO (x)) && !TARGET_SIMD
        && reg_class_subset_p (rclass, FP_REGS))
      {
        sri->icode = code_for_aarch64_reload_mov (mode);
        return NO_REGS;
      }
  
!   /* A TFmode or TImode memory access should be handled via an FP_REGS
       because AArch64 has richer addressing modes for LDR/STR instructions
       than LDP/STP instructions.  */
    if (TARGET_FLOAT && rclass == GENERAL_REGS
        && known_eq (GET_MODE_SIZE (mode), 16) && MEM_P (x))
      return FP_REGS;
  
!   if (rclass == FP_REGS && (mode == TImode || mode == TFmode) && CONSTANT_P(x))
        return GENERAL_REGS;
  
    return NO_REGS;
  }
  
  static bool
  aarch64_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to)
  {
--- 12679,12735 ----
  
    /* Without the TARGET_SIMD instructions we cannot move a Q register
       to a Q register directly.  We need a scratch.  */
!   if (REG_P (x)
!       && (mode == TFmode
! 	  || mode == TImode
! 	  || mode == TDmode
! 	  || (vec_flags == VEC_ADVSIMD && known_eq (GET_MODE_SIZE (mode), 16)))
!       && mode == GET_MODE (x)
!       && !TARGET_SIMD
!       && FP_REGNUM_P (REGNO (x))
        && reg_class_subset_p (rclass, FP_REGS))
      {
        sri->icode = code_for_aarch64_reload_mov (mode);
        return NO_REGS;
      }
  
!   /* A TFmode, TImode or TDmode memory access should be handled via an FP_REGS
       because AArch64 has richer addressing modes for LDR/STR instructions
       than LDP/STP instructions.  */
    if (TARGET_FLOAT && rclass == GENERAL_REGS
        && known_eq (GET_MODE_SIZE (mode), 16) && MEM_P (x))
      return FP_REGS;
  
!   if (rclass == FP_REGS
!       && (mode == TImode || mode == TFmode || mode == TDmode)
!       && CONSTANT_P(x))
        return GENERAL_REGS;
  
    return NO_REGS;
  }
  
+ /* Implement TARGET_SECONDARY_MEMORY_NEEDED.  */
+ 
+ static bool
+ aarch64_secondary_memory_needed (machine_mode mode, reg_class_t class1,
+ 				 reg_class_t class2)
+ {
+   if (!TARGET_SIMD
+       && reg_classes_intersect_p (class1, FP_REGS)
+       && reg_classes_intersect_p (class2, FP_REGS))
+     {
+       /* We can't do a 128-bit FPR-to-FPR move without TARGET_SIMD,
+ 	 so we can't easily split a move involving tuples of 128-bit
+ 	 vectors.  Force the copy through memory instead.
+ 
+ 	 (Tuples of 64-bit vectors are fine.)  */
+       unsigned int vec_flags = aarch64_classify_vector_mode (mode);
+       if (vec_flags == (VEC_ADVSIMD | VEC_STRUCT))
+ 	return true;
+     }
+   return false;
+ }
+ 
  static bool
  aarch64_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to)
  {
*************** aarch64_output_casesi (rtx *operands)
*** 12802,12808 ****
  int
  aarch64_uxt_size (int shift, HOST_WIDE_INT mask)
  {
!   if (shift >= 0 && shift <= 3)
      {
        int size;
        for (size = 8; size <= 32; size *= 2)
--- 13046,13052 ----
  int
  aarch64_uxt_size (int shift, HOST_WIDE_INT mask)
  {
!   if (shift >= 0 && shift <= 4)
      {
        int size;
        for (size = 8; size <= 32; size *= 2)
*************** aarch64_rtx_mult_cost (rtx x, enum rtx_c
*** 13029,13035 ****
    if (VECTOR_MODE_P (mode))
      {
        unsigned int vec_flags = aarch64_classify_vector_mode (mode);
!       if (vec_flags & VEC_ADVSIMD)
  	{
  	  /* The select-operand-high-half versions of the instruction have the
  	     same cost as the three vector version - don't add the costs of the
--- 13273,13279 ----
    if (VECTOR_MODE_P (mode))
      {
        unsigned int vec_flags = aarch64_classify_vector_mode (mode);
!       if (TARGET_SIMD && (vec_flags & VEC_ADVSIMD))
  	{
  	  /* The select-operand-high-half versions of the instruction have the
  	     same cost as the three vector version - don't add the costs of the
*************** aarch64_rtx_costs (rtx x, machine_mode m
*** 13611,13619 ****
  		*cost += extra_cost->ldst.storev;
  	      else if (GET_MODE_CLASS (mode) == MODE_INT)
  		*cost += extra_cost->ldst.store;
! 	      else if (mode == SFmode)
  		*cost += extra_cost->ldst.storef;
! 	      else if (mode == DFmode)
  		*cost += extra_cost->ldst.stored;
  
  	      *cost +=
--- 13855,13863 ----
  		*cost += extra_cost->ldst.storev;
  	      else if (GET_MODE_CLASS (mode) == MODE_INT)
  		*cost += extra_cost->ldst.store;
! 	      else if (mode == SFmode || mode == SDmode)
  		*cost += extra_cost->ldst.storef;
! 	      else if (mode == DFmode || mode == DDmode)
  		*cost += extra_cost->ldst.stored;
  
  	      *cost +=
*************** aarch64_rtx_costs (rtx x, machine_mode m
*** 13704,13713 ****
  	     proportionally expensive to the number of instructions
  	     required to build that constant.  This is true whether we
  	     are compiling for SPEED or otherwise.  */
! 	  if (!is_a <scalar_int_mode> (mode, &int_mode))
! 	    int_mode = word_mode;
  	  *cost = COSTS_N_INSNS (aarch64_internal_mov_immediate
! 				 (NULL_RTX, x, false, int_mode));
  	}
        return true;
  
--- 13948,13957 ----
  	     proportionally expensive to the number of instructions
  	     required to build that constant.  This is true whether we
  	     are compiling for SPEED or otherwise.  */
! 	  machine_mode imode = known_le (GET_MODE_SIZE (mode), 4)
! 				? SImode : DImode;
  	  *cost = COSTS_N_INSNS (aarch64_internal_mov_immediate
! 				 (NULL_RTX, x, false, imode));
  	}
        return true;
  
*************** aarch64_rtx_costs (rtx x, machine_mode m
*** 13723,13731 ****
  	  bool succeed = aarch64_reinterpret_float_as_int (x, &ival);
  	  gcc_assert (succeed);
  
! 	  scalar_int_mode imode = (mode == HFmode
! 				   ? SImode
! 				   : int_mode_for_mode (mode).require ());
  	  int ncost = aarch64_internal_mov_immediate
  		(NULL_RTX, gen_int_mode (ival, imode), false, imode);
  	  *cost += COSTS_N_INSNS (ncost);
--- 13967,13974 ----
  	  bool succeed = aarch64_reinterpret_float_as_int (x, &ival);
  	  gcc_assert (succeed);
  
! 	  machine_mode imode = known_eq (GET_MODE_SIZE (mode), 8)
! 				? DImode : SImode;
  	  int ncost = aarch64_internal_mov_immediate
  		(NULL_RTX, gen_int_mode (ival, imode), false, imode);
  	  *cost += COSTS_N_INSNS (ncost);
*************** aarch64_rtx_costs (rtx x, machine_mode m
*** 13737,13747 ****
  	  /* mov[df,sf]_aarch64.  */
  	  if (aarch64_float_const_representable_p (x))
  	    /* FMOV (scalar immediate).  */
! 	    *cost += extra_cost->fp[mode == DFmode].fpconst;
  	  else if (!aarch64_float_const_zero_rtx_p (x))
  	    {
  	      /* This will be a load from memory.  */
! 	      if (mode == DFmode)
  		*cost += extra_cost->ldst.loadd;
  	      else
  		*cost += extra_cost->ldst.loadf;
--- 13980,13990 ----
  	  /* mov[df,sf]_aarch64.  */
  	  if (aarch64_float_const_representable_p (x))
  	    /* FMOV (scalar immediate).  */
! 	    *cost += extra_cost->fp[mode == DFmode || mode == DDmode].fpconst;
  	  else if (!aarch64_float_const_zero_rtx_p (x))
  	    {
  	      /* This will be a load from memory.  */
! 	      if (mode == DFmode || mode == DDmode)
  		*cost += extra_cost->ldst.loadd;
  	      else
  		*cost += extra_cost->ldst.loadf;
*************** aarch64_rtx_costs (rtx x, machine_mode m
*** 13767,13775 ****
  	    *cost += extra_cost->ldst.loadv;
  	  else if (GET_MODE_CLASS (mode) == MODE_INT)
  	    *cost += extra_cost->ldst.load;
! 	  else if (mode == SFmode)
  	    *cost += extra_cost->ldst.loadf;
! 	  else if (mode == DFmode)
  	    *cost += extra_cost->ldst.loadd;
  
  	  *cost +=
--- 14010,14018 ----
  	    *cost += extra_cost->ldst.loadv;
  	  else if (GET_MODE_CLASS (mode) == MODE_INT)
  	    *cost += extra_cost->ldst.load;
! 	  else if (mode == SFmode || mode == SDmode)
  	    *cost += extra_cost->ldst.loadf;
! 	  else if (mode == DFmode || mode == DDmode)
  	    *cost += extra_cost->ldst.loadd;
  
  	  *cost +=
*************** cost_minus:
*** 13975,13981 ****
  	  {
  	    /* SUBL2 and SUBW2.  */
  	    unsigned int vec_flags = aarch64_classify_vector_mode (mode);
! 	    if (vec_flags & VEC_ADVSIMD)
  	      {
  		/* The select-operand-high-half versions of the sub instruction
  		   have the same cost as the regular three vector version -
--- 14218,14224 ----
  	  {
  	    /* SUBL2 and SUBW2.  */
  	    unsigned int vec_flags = aarch64_classify_vector_mode (mode);
! 	    if (TARGET_SIMD && (vec_flags & VEC_ADVSIMD))
  	      {
  		/* The select-operand-high-half versions of the sub instruction
  		   have the same cost as the regular three vector version -
*************** cost_plus:
*** 14062,14068 ****
  	  {
  	    /* ADDL2 and ADDW2.  */
  	    unsigned int vec_flags = aarch64_classify_vector_mode (mode);
! 	    if (vec_flags & VEC_ADVSIMD)
  	      {
  		/* The select-operand-high-half versions of the add instruction
  		   have the same cost as the regular three vector version -
--- 14305,14311 ----
  	  {
  	    /* ADDL2 and ADDW2.  */
  	    unsigned int vec_flags = aarch64_classify_vector_mode (mode);
! 	    if (TARGET_SIMD && (vec_flags & VEC_ADVSIMD))
  	      {
  		/* The select-operand-high-half versions of the add instruction
  		   have the same cost as the regular three vector version -
*************** cost_plus:
*** 14104,14109 ****
--- 14347,14362 ----
  	    return true;
  	  }
  
+ 	if (aarch64_pluslong_immediate (op1, mode))
+ 	  {
+ 	    /* 24-bit add in 2 instructions or 12-bit shifted add.  */
+ 	    if ((INTVAL (op1) & 0xfff) != 0)
+ 	      *cost += COSTS_N_INSNS (1);
+ 
+ 	    *cost += rtx_cost (op0, mode, PLUS, 0, speed);
+ 	    return true;
+ 	  }
+ 
  	*cost += rtx_cost (op1, mode, PLUS, 1, speed);
  
  	/* Look for ADD (extended register).  */
*************** aarch64_register_move_cost (machine_mode
*** 14987,14993 ****
      return aarch64_register_move_cost (mode, from, GENERAL_REGS)
              + aarch64_register_move_cost (mode, GENERAL_REGS, to);
  
!   if (known_eq (GET_MODE_SIZE (mode), 16))
      {
        /* 128-bit operations on general registers require 2 instructions.  */
        if (from == GENERAL_REGS && to == GENERAL_REGS)
--- 15240,15248 ----
      return aarch64_register_move_cost (mode, from, GENERAL_REGS)
              + aarch64_register_move_cost (mode, GENERAL_REGS, to);
  
!   unsigned int vec_flags = aarch64_classify_vector_mode (mode);
!   if (vec_flags != (VEC_ADVSIMD | VEC_STRUCT | VEC_PARTIAL)
!       && known_eq (GET_MODE_SIZE (mode), 16))
      {
        /* 128-bit operations on general registers require 2 instructions.  */
        if (from == GENERAL_REGS && to == GENERAL_REGS)
*************** aarch64_register_move_cost (machine_mode
*** 15015,15020 ****
--- 15270,15285 ----
    else if (to == GENERAL_REGS)
      return regmove_cost->FP2GP;
  
+   if (!TARGET_SIMD && vec_flags == (VEC_ADVSIMD | VEC_STRUCT))
+     {
+       /* Needs a round-trip through memory, which can use LDP/STP for pairs.
+ 	 The cost must be greater than 2 units to indicate that direct
+ 	 moves aren't possible.  */
+       auto per_vector = (aarch64_tune_params.memmov_cost.load_fp
+ 			 + aarch64_tune_params.memmov_cost.store_fp);
+       return MIN (CEIL (per_vector, 2), 4);
+     }
+ 
    return regmove_cost->FP2FP;
  }
  
*************** aarch64_gimple_fold_builtin (gimple_stmt
*** 15094,15100 ****
    if (!new_stmt)
      return false;
  
!   gsi_replace (gsi, new_stmt, true);
    return true;
  }
  
--- 15359,15365 ----
    if (!new_stmt)
      return false;
  
!   gsi_replace (gsi, new_stmt, false);
    return true;
  }
  
*************** aarch64_first_cycle_multipass_dfa_lookah
*** 15417,15422 ****
--- 15682,15714 ----
  
  /* Vectorizer cost model target hooks.  */
  
+ /* If a vld1 from address ADDR should be recorded in vector_load_decls,
+    return the decl that should be recorded.  Return null otherwise.  */
+ tree
+ aarch64_vector_load_decl (tree addr)
+ {
+   if (TREE_CODE (addr) != ADDR_EXPR)
+     return NULL_TREE;
+   tree base = get_base_address (TREE_OPERAND (addr, 0));
+   if (TREE_CODE (base) != VAR_DECL)
+     return NULL_TREE;
+   return base;
+ }
+ 
+ /* Return true if STMT_INFO accesses a decl that is known to be the
+    argument to a vld1 in the same function.  */
+ static bool
+ aarch64_accesses_vector_load_decl_p (stmt_vec_info stmt_info)
+ {
+   if (!cfun->machine->vector_load_decls)
+     return false;
+   auto dr = STMT_VINFO_DATA_REF (stmt_info);
+   if (!dr)
+     return false;
+   tree decl = aarch64_vector_load_decl (DR_BASE_ADDRESS (dr));
+   return decl && cfun->machine->vector_load_decls->contains (decl);
+ }
+ 
  /* Information about how the CPU would issue the scalar, Advanced SIMD
     or SVE version of a vector loop, using the scheme defined by the
     aarch64_base_vec_issue_info hierarchy of structures.  */
*************** aarch64_vec_op_count::rename_cycles_per_
*** 15532,15538 ****
  {
    if (sve_issue_info () == &neoverse512tvb_sve_issue_info
        || sve_issue_info () == &neoversen2_sve_issue_info
!       || sve_issue_info () == &demeter_sve_issue_info)
      /* + 1 for an addition.  We've already counted a general op for each
         store, so we don't need to account for stores separately.  The branch
         reads no registers and so does not need to be counted either.
--- 15824,15830 ----
  {
    if (sve_issue_info () == &neoverse512tvb_sve_issue_info
        || sve_issue_info () == &neoversen2_sve_issue_info
!       || sve_issue_info () == &neoversev2_sve_issue_info)
      /* + 1 for an addition.  We've already counted a general op for each
         store, so we don't need to account for stores separately.  The branch
         reads no registers and so does not need to be counted either.
*************** private:
*** 15647,15652 ****
--- 15939,15958 ----
       supported by Advanced SIMD and SVE2.  */
    bool m_has_avg = false;
  
+   /* True if the vector body contains a store to a decl and if the
+      function is known to have a vld1 from the same decl.
+ 
+      In the Advanced SIMD ACLE, the recommended endian-agnostic way of
+      initializing a vector is:
+ 
+        float f[4] = { elts };
+        float32x4_t x = vld1q_f32(f);
+ 
+      We should strongly prefer vectorization of the initialization of f,
+      so that the store to f and the load back can be optimized away,
+      leaving a vectorization of { elts }.  */
+   bool m_stores_to_vector_load_decl = false;
+ 
    /* - If M_VEC_FLAGS is zero then we're costing the original scalar code.
       - If M_VEC_FLAGS & VEC_ADVSIMD is nonzero then we're costing Advanced
         SIMD code.
*************** aarch64_vector_costs::add_stmt_cost (int
*** 16663,16668 ****
--- 16969,16986 ----
  	    }
  	}
      }
+ 
+   /* If the statement stores to a decl that is known to be the argument
+      to a vld1 in the same function, ignore the store for costing purposes.
+      See the comment above m_stores_to_vector_load_decl for more details.  */
+   if (stmt_info
+       && (kind == vector_store || kind == unaligned_store)
+       && aarch64_accesses_vector_load_decl_p (stmt_info))
+     {
+       stmt_cost = 0;
+       m_stores_to_vector_load_decl = true;
+     }
+ 
    return record_stmt_cost (stmt_info, where, (count * stmt_cost).ceil ());
  }
  
*************** aarch64_vector_costs::prefer_unrolled_lo
*** 16677,16683 ****
  
    if (dump_enabled_p ())
      dump_printf_loc (MSG_NOTE, vect_location, "Number of insns in"
! 		     " unrolled Advanced SIMD loop = %d\n",
  		     m_unrolled_advsimd_stmts);
  
    /* The balance here is tricky.  On the one hand, we can't be sure whether
--- 16995,17002 ----
  
    if (dump_enabled_p ())
      dump_printf_loc (MSG_NOTE, vect_location, "Number of insns in"
! 		     " unrolled Advanced SIMD loop = "
! 		     HOST_WIDE_INT_PRINT_UNSIGNED "\n",
  		     m_unrolled_advsimd_stmts);
  
    /* The balance here is tricky.  On the one hand, we can't be sure whether
*************** aarch64_vector_costs::finish_cost (const
*** 16951,16962 ****
  
    /* Apply the heuristic described above m_stp_sequence_cost.  Prefer
       the scalar code in the event of a tie, since there is more chance
!      of scalar code being optimized with surrounding operations.  */
    if (!loop_vinfo
        && scalar_costs
!       && m_stp_sequence_cost != ~0U
!       && m_stp_sequence_cost >= scalar_costs->m_stp_sequence_cost)
!     m_costs[vect_body] = 2 * scalar_costs->total_cost ();
  
    vector_costs::finish_cost (scalar_costs);
  }
--- 17270,17290 ----
  
    /* Apply the heuristic described above m_stp_sequence_cost.  Prefer
       the scalar code in the event of a tie, since there is more chance
!      of scalar code being optimized with surrounding operations.
! 
!      In addition, if the vector body is a simple store to a decl that
!      is elsewhere loaded using vld1, strongly prefer the vector form,
!      to the extent of giving the prologue a zero cost.  See the comment
!      above m_stores_to_vector_load_decl for details.  */
    if (!loop_vinfo
        && scalar_costs
!       && m_stp_sequence_cost != ~0U)
!     {
!       if (m_stores_to_vector_load_decl)
! 	m_costs[vect_prologue] = 0;
!       else if (m_stp_sequence_cost >= scalar_costs->m_stp_sequence_cost)
! 	m_costs[vect_body] = 2 * scalar_costs->total_cost ();
!     }
  
    vector_costs::finish_cost (scalar_costs);
  }
*************** static void initialize_aarch64_code_mode
*** 17077,17090 ****
  
  /* Parse the TO_PARSE string and put the architecture struct that it
     selects into RES and the architectural features into ISA_FLAGS.
!    Return an aarch64_parse_opt_result describing the parse result.
     If there is an error parsing, RES and ISA_FLAGS are left unchanged.
     When the TO_PARSE string contains an invalid extension,
     a copy of the string is created and stored to INVALID_EXTENSION.  */
  
! static enum aarch64_parse_opt_result
  aarch64_parse_arch (const char *to_parse, const struct processor **res,
! 		    uint64_t *isa_flags, std::string *invalid_extension)
  {
    const char *ext;
    const struct processor *arch;
--- 17405,17419 ----
  
  /* Parse the TO_PARSE string and put the architecture struct that it
     selects into RES and the architectural features into ISA_FLAGS.
!    Return an aarch_parse_opt_result describing the parse result.
     If there is an error parsing, RES and ISA_FLAGS are left unchanged.
     When the TO_PARSE string contains an invalid extension,
     a copy of the string is created and stored to INVALID_EXTENSION.  */
  
! static enum aarch_parse_opt_result
  aarch64_parse_arch (const char *to_parse, const struct processor **res,
! 		    aarch64_feature_flags *isa_flags,
! 		    std::string *invalid_extension)
  {
    const char *ext;
    const struct processor *arch;
*************** aarch64_parse_arch (const char *to_parse
*** 17098,17104 ****
      len = strlen (to_parse);
  
    if (len == 0)
!     return AARCH64_PARSE_MISSING_ARG;
  
  
    /* Loop through the list of supported ARCHes to find a match.  */
--- 17427,17433 ----
      len = strlen (to_parse);
  
    if (len == 0)
!     return AARCH_PARSE_MISSING_ARG;
  
  
    /* Loop through the list of supported ARCHes to find a match.  */
*************** aarch64_parse_arch (const char *to_parse
*** 17107,17145 ****
        if (strlen (arch->name) == len
  	  && strncmp (arch->name, to_parse, len) == 0)
  	{
! 	  uint64_t isa_temp = arch->flags;
  
  	  if (ext != NULL)
  	    {
  	      /* TO_PARSE string contains at least one extension.  */
! 	      enum aarch64_parse_opt_result ext_res
  		= aarch64_parse_extension (ext, &isa_temp, invalid_extension);
  
! 	      if (ext_res != AARCH64_PARSE_OK)
  		return ext_res;
  	    }
  	  /* Extension parsing was successful.  Confirm the result
  	     arch and ISA flags.  */
  	  *res = arch;
  	  *isa_flags = isa_temp;
! 	  return AARCH64_PARSE_OK;
  	}
      }
  
    /* ARCH name not found in list.  */
!   return AARCH64_PARSE_INVALID_ARG;
  }
  
  /* Parse the TO_PARSE string and put the result tuning in RES and the
!    architecture flags in ISA_FLAGS.  Return an aarch64_parse_opt_result
     describing the parse result.  If there is an error parsing, RES and
     ISA_FLAGS are left unchanged.
     When the TO_PARSE string contains an invalid extension,
     a copy of the string is created and stored to INVALID_EXTENSION.  */
  
! static enum aarch64_parse_opt_result
  aarch64_parse_cpu (const char *to_parse, const struct processor **res,
! 		   uint64_t *isa_flags, std::string *invalid_extension)
  {
    const char *ext;
    const struct processor *cpu;
--- 17436,17475 ----
        if (strlen (arch->name) == len
  	  && strncmp (arch->name, to_parse, len) == 0)
  	{
! 	  auto isa_temp = arch->flags;
  
  	  if (ext != NULL)
  	    {
  	      /* TO_PARSE string contains at least one extension.  */
! 	      enum aarch_parse_opt_result ext_res
  		= aarch64_parse_extension (ext, &isa_temp, invalid_extension);
  
! 	      if (ext_res != AARCH_PARSE_OK)
  		return ext_res;
  	    }
  	  /* Extension parsing was successful.  Confirm the result
  	     arch and ISA flags.  */
  	  *res = arch;
  	  *isa_flags = isa_temp;
! 	  return AARCH_PARSE_OK;
  	}
      }
  
    /* ARCH name not found in list.  */
!   return AARCH_PARSE_INVALID_ARG;
  }
  
  /* Parse the TO_PARSE string and put the result tuning in RES and the
!    architecture flags in ISA_FLAGS.  Return an aarch_parse_opt_result
     describing the parse result.  If there is an error parsing, RES and
     ISA_FLAGS are left unchanged.
     When the TO_PARSE string contains an invalid extension,
     a copy of the string is created and stored to INVALID_EXTENSION.  */
  
! static enum aarch_parse_opt_result
  aarch64_parse_cpu (const char *to_parse, const struct processor **res,
! 		   aarch64_feature_flags *isa_flags,
! 		   std::string *invalid_extension)
  {
    const char *ext;
    const struct processor *cpu;
*************** aarch64_parse_cpu (const char *to_parse,
*** 17153,17159 ****
      len = strlen (to_parse);
  
    if (len == 0)
!     return AARCH64_PARSE_MISSING_ARG;
  
  
    /* Loop through the list of supported CPUs to find a match.  */
--- 17483,17489 ----
      len = strlen (to_parse);
  
    if (len == 0)
!     return AARCH_PARSE_MISSING_ARG;
  
  
    /* Loop through the list of supported CPUs to find a match.  */
*************** aarch64_parse_cpu (const char *to_parse,
*** 17161,17195 ****
      {
        if (strlen (cpu->name) == len && strncmp (cpu->name, to_parse, len) == 0)
  	{
! 	  uint64_t isa_temp = cpu->flags;
! 
  
  	  if (ext != NULL)
  	    {
  	      /* TO_PARSE string contains at least one extension.  */
! 	      enum aarch64_parse_opt_result ext_res
  		= aarch64_parse_extension (ext, &isa_temp, invalid_extension);
  
! 	      if (ext_res != AARCH64_PARSE_OK)
  		return ext_res;
  	    }
  	  /* Extension parsing was successfull.  Confirm the result
  	     cpu and ISA flags.  */
  	  *res = cpu;
  	  *isa_flags = isa_temp;
! 	  return AARCH64_PARSE_OK;
  	}
      }
  
    /* CPU name not found in list.  */
!   return AARCH64_PARSE_INVALID_ARG;
  }
  
  /* Parse the TO_PARSE string and put the cpu it selects into RES.
!    Return an aarch64_parse_opt_result describing the parse result.
     If the parsing fails the RES does not change.  */
  
! static enum aarch64_parse_opt_result
  aarch64_parse_tune (const char *to_parse, const struct processor **res)
  {
    const struct processor *cpu;
--- 17491,17524 ----
      {
        if (strlen (cpu->name) == len && strncmp (cpu->name, to_parse, len) == 0)
  	{
! 	  auto isa_temp = cpu->flags;
  
  	  if (ext != NULL)
  	    {
  	      /* TO_PARSE string contains at least one extension.  */
! 	      enum aarch_parse_opt_result ext_res
  		= aarch64_parse_extension (ext, &isa_temp, invalid_extension);
  
! 	      if (ext_res != AARCH_PARSE_OK)
  		return ext_res;
  	    }
  	  /* Extension parsing was successfull.  Confirm the result
  	     cpu and ISA flags.  */
  	  *res = cpu;
  	  *isa_flags = isa_temp;
! 	  return AARCH_PARSE_OK;
  	}
      }
  
    /* CPU name not found in list.  */
!   return AARCH_PARSE_INVALID_ARG;
  }
  
  /* Parse the TO_PARSE string and put the cpu it selects into RES.
!    Return an aarch_parse_opt_result describing the parse result.
     If the parsing fails the RES does not change.  */
  
! static enum aarch_parse_opt_result
  aarch64_parse_tune (const char *to_parse, const struct processor **res)
  {
    const struct processor *cpu;
*************** aarch64_parse_tune (const char *to_parse
*** 17200,17211 ****
        if (strcmp (cpu->name, to_parse) == 0)
  	{
  	  *res = cpu;
! 	  return AARCH64_PARSE_OK;
  	}
      }
  
    /* CPU name not found in list.  */
!   return AARCH64_PARSE_INVALID_ARG;
  }
  
  /* Parse TOKEN, which has length LENGTH to see if it is an option
--- 17529,17540 ----
        if (strcmp (cpu->name, to_parse) == 0)
  	{
  	  *res = cpu;
! 	  return AARCH_PARSE_OK;
  	}
      }
  
    /* CPU name not found in list.  */
!   return AARCH_PARSE_INVALID_ARG;
  }
  
  /* Parse TOKEN, which has length LENGTH to see if it is an option
*************** initialize_aarch64_tls_size (struct gcc_
*** 17413,17418 ****
--- 17742,17767 ----
    return;
  }
  
+ /* Return the CPU corresponding to the enum CPU.  */
+ 
+ static const struct processor *
+ aarch64_get_tune_cpu (enum aarch64_processor cpu)
+ {
+   gcc_assert (cpu != aarch64_none);
+ 
+   return &all_cores[cpu];
+ }
+ 
+ /* Return the architecture corresponding to the enum ARCH.  */
+ 
+ static const struct processor *
+ aarch64_get_arch (enum aarch64_arch arch)
+ {
+   gcc_assert (arch != aarch64_no_arch);
+ 
+   return &all_architectures[arch];
+ }
+ 
  /* Parse STRING looking for options in the format:
       string	:: option:string
       option	:: name=substring
*************** aarch64_override_options_after_change_1
*** 17523,17540 ****
  void
  aarch64_override_options_internal (struct gcc_options *opts)
  {
!   aarch64_tune_flags = selected_tune->flags;
!   aarch64_tune = selected_tune->sched_core;
    /* Make a copy of the tuning parameters attached to the core, which
       we may later overwrite.  */
!   aarch64_tune_params = *(selected_tune->tune);
!   aarch64_architecture_version = selected_arch->architecture_version;
!   if (selected_tune->tune == &generic_tunings)
      aarch64_adjust_generic_arch_tuning (aarch64_tune_params);
  
    if (opts->x_aarch64_override_tune_string)
      aarch64_parse_override_string (opts->x_aarch64_override_tune_string,
! 				  &aarch64_tune_params);
  
    /* This target defaults to strict volatile bitfields.  */
    if (opts->x_flag_strict_volatile_bitfields < 0 && abi_version_at_least (2))
--- 17872,17889 ----
  void
  aarch64_override_options_internal (struct gcc_options *opts)
  {
!   const struct processor *tune = aarch64_get_tune_cpu (opts->x_selected_tune);
!   aarch64_tune_flags = tune->flags;
!   aarch64_tune = tune->sched_core;
    /* Make a copy of the tuning parameters attached to the core, which
       we may later overwrite.  */
!   aarch64_tune_params = *(tune->tune);
!   if (tune->tune == &generic_tunings)
      aarch64_adjust_generic_arch_tuning (aarch64_tune_params);
  
    if (opts->x_aarch64_override_tune_string)
      aarch64_parse_override_string (opts->x_aarch64_override_tune_string,
! 				   &aarch64_tune_params);
  
    /* This target defaults to strict volatile bitfields.  */
    if (opts->x_flag_strict_volatile_bitfields < 0 && abi_version_at_least (2))
*************** aarch64_override_options_internal (struc
*** 17695,17707 ****
        && opts->x_optimize >= aarch64_tune_params.prefetch->default_opt_level)
      opts->x_flag_prefetch_loop_arrays = 1;
  
-   if (opts->x_aarch64_arch_string == NULL)
-     opts->x_aarch64_arch_string = selected_arch->name;
-   if (opts->x_aarch64_cpu_string == NULL)
-     opts->x_aarch64_cpu_string = selected_cpu->name;
-   if (opts->x_aarch64_tune_string == NULL)
-     opts->x_aarch64_tune_string = selected_tune->name;
- 
    aarch64_override_options_after_change_1 (opts);
  }
  
--- 18044,18049 ----
*************** aarch64_print_hint_for_extensions (const
*** 17780,17804 ****
  
  static bool
  aarch64_validate_mcpu (const char *str, const struct processor **res,
! 		       uint64_t *isa_flags)
  {
    std::string invalid_extension;
!   enum aarch64_parse_opt_result parse_res
      = aarch64_parse_cpu (str, res, isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH64_PARSE_OK)
      return true;
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_MISSING_ARG:
  	error ("missing cpu name in %<-mcpu=%s%>", str);
  	break;
!       case AARCH64_PARSE_INVALID_ARG:
  	error ("unknown value %qs for %<-mcpu%>", str);
  	aarch64_print_hint_for_core (str);
  	break;
!       case AARCH64_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs in %<-mcpu=%s%>",
  	       invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
--- 18122,18146 ----
  
  static bool
  aarch64_validate_mcpu (const char *str, const struct processor **res,
! 		       aarch64_feature_flags *isa_flags)
  {
    std::string invalid_extension;
!   enum aarch_parse_opt_result parse_res
      = aarch64_parse_cpu (str, res, isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH_PARSE_OK)
      return true;
  
    switch (parse_res)
      {
!       case AARCH_PARSE_MISSING_ARG:
  	error ("missing cpu name in %<-mcpu=%s%>", str);
  	break;
!       case AARCH_PARSE_INVALID_ARG:
  	error ("unknown value %qs for %<-mcpu%>", str);
  	aarch64_print_hint_for_core (str);
  	break;
!       case AARCH_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs in %<-mcpu=%s%>",
  	       invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
*************** aarch64_validate_sls_mitigation (const c
*** 17883,17992 ****
    free (str_root);
  }
  
- /* Parses CONST_STR for branch protection features specified in
-    aarch64_branch_protect_types, and set any global variables required.  Returns
-    the parsing result and assigns LAST_STR to the last processed token from
-    CONST_STR so that it can be used for error reporting.  */
- 
- static enum
- aarch64_parse_opt_result aarch64_parse_branch_protection (const char *const_str,
- 							  char** last_str)
- {
-   char *str_root = xstrdup (const_str);
-   char* token_save = NULL;
-   char *str = strtok_r (str_root, "+", &token_save);
-   enum aarch64_parse_opt_result res = AARCH64_PARSE_OK;
-   if (!str)
-     res = AARCH64_PARSE_MISSING_ARG;
-   else
-     {
-       char *next_str = strtok_r (NULL, "+", &token_save);
-       /* Reset the branch protection features to their defaults.  */
-       aarch64_handle_no_branch_protection (NULL, NULL);
- 
-       while (str && res == AARCH64_PARSE_OK)
- 	{
- 	  const aarch64_branch_protect_type* type = aarch64_branch_protect_types;
- 	  bool found = false;
- 	  /* Search for this type.  */
- 	  while (type && type->name && !found && res == AARCH64_PARSE_OK)
- 	    {
- 	      if (strcmp (str, type->name) == 0)
- 		{
- 		  found = true;
- 		  res = type->handler (str, next_str);
- 		  str = next_str;
- 		  next_str = strtok_r (NULL, "+", &token_save);
- 		}
- 	      else
- 		type++;
- 	    }
- 	  if (found && res == AARCH64_PARSE_OK)
- 	    {
- 	      bool found_subtype = true;
- 	      /* Loop through each token until we find one that isn't a
- 		 subtype.  */
- 	      while (found_subtype)
- 		{
- 		  found_subtype = false;
- 		  const aarch64_branch_protect_type *subtype = type->subtypes;
- 		  /* Search for the subtype.  */
- 		  while (str && subtype && subtype->name && !found_subtype
- 			  && res == AARCH64_PARSE_OK)
- 		    {
- 		      if (strcmp (str, subtype->name) == 0)
- 			{
- 			  found_subtype = true;
- 			  res = subtype->handler (str, next_str);
- 			  str = next_str;
- 			  next_str = strtok_r (NULL, "+", &token_save);
- 			}
- 		      else
- 			subtype++;
- 		    }
- 		}
- 	    }
- 	  else if (!found)
- 	    res = AARCH64_PARSE_INVALID_ARG;
- 	}
-     }
-   /* Copy the last processed token into the argument to pass it back.
-     Used by option and attribute validation to print the offending token.  */
-   if (last_str)
-     {
-       if (str) strcpy (*last_str, str);
-       else *last_str = NULL;
-     }
-   if (res == AARCH64_PARSE_OK)
-     {
-       /* If needed, alloc the accepted string then copy in const_str.
- 	Used by override_option_after_change_1.  */
-       if (!accepted_branch_protection_string)
- 	accepted_branch_protection_string = (char *) xmalloc (
- 						      BRANCH_PROTECT_STR_MAX
- 							+ 1);
-       strncpy (accepted_branch_protection_string, const_str,
- 		BRANCH_PROTECT_STR_MAX + 1);
-       /* Forcibly null-terminate.  */
-       accepted_branch_protection_string[BRANCH_PROTECT_STR_MAX] = '\0';
-     }
-   return res;
- }
- 
- static bool
- aarch64_validate_mbranch_protection (const char *const_str)
- {
-   char *str = (char *) xmalloc (strlen (const_str));
-   enum aarch64_parse_opt_result res =
-     aarch64_parse_branch_protection (const_str, &str);
-   if (res == AARCH64_PARSE_INVALID_ARG)
-     error ("invalid argument %<%s%> for %<-mbranch-protection=%>", str);
-   else if (res == AARCH64_PARSE_MISSING_ARG)
-     error ("missing argument for %<-mbranch-protection=%>");
-   free (str);
-   return res == AARCH64_PARSE_OK;
- }
- 
  /* Validate a command-line -march option.  Parse the arch and extensions
     (if any) specified in STR and throw errors if appropriate.  Put the
     results, if they are valid, in RES and ISA_FLAGS.  Return whether the
--- 18225,18230 ----
*************** aarch64_validate_mbranch_protection (con
*** 17994,18018 ****
  
  static bool
  aarch64_validate_march (const char *str, const struct processor **res,
! 			 uint64_t *isa_flags)
  {
    std::string invalid_extension;
!   enum aarch64_parse_opt_result parse_res
      = aarch64_parse_arch (str, res, isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH64_PARSE_OK)
      return true;
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_MISSING_ARG:
  	error ("missing arch name in %<-march=%s%>", str);
  	break;
!       case AARCH64_PARSE_INVALID_ARG:
  	error ("unknown value %qs for %<-march%>", str);
  	aarch64_print_hint_for_arch (str);
  	break;
!       case AARCH64_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs in %<-march=%s%>",
  	       invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
--- 18232,18261 ----
  
  static bool
  aarch64_validate_march (const char *str, const struct processor **res,
! 			aarch64_feature_flags *isa_flags)
  {
    std::string invalid_extension;
!   enum aarch_parse_opt_result parse_res
      = aarch64_parse_arch (str, res, isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH_PARSE_OK)
      return true;
  
    switch (parse_res)
      {
!       case AARCH_PARSE_MISSING_ARG:
  	error ("missing arch name in %<-march=%s%>", str);
  	break;
!       case AARCH_PARSE_INVALID_ARG:
  	error ("unknown value %qs for %<-march%>", str);
  	aarch64_print_hint_for_arch (str);
+ 	/* A common user error is confusing -march and -mcpu.
+ 	   If the -march string matches a known CPU suggest -mcpu.  */
+ 	parse_res = aarch64_parse_cpu (str, res, isa_flags, &invalid_extension);
+ 	if (parse_res == AARCH_PARSE_OK)
+ 	  inform (input_location, "did you mean %<-mcpu=%s%>?", str);
  	break;
!       case AARCH_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs in %<-march=%s%>",
  	       invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
*************** aarch64_validate_march (const char *str,
*** 18032,18049 ****
  static bool
  aarch64_validate_mtune (const char *str, const struct processor **res)
  {
!   enum aarch64_parse_opt_result parse_res
      = aarch64_parse_tune (str, res);
  
!   if (parse_res == AARCH64_PARSE_OK)
      return true;
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_MISSING_ARG:
  	error ("missing cpu name in %<-mtune=%s%>", str);
  	break;
!       case AARCH64_PARSE_INVALID_ARG:
  	error ("unknown value %qs for %<-mtune%>", str);
  	aarch64_print_hint_for_core (str);
  	break;
--- 18275,18292 ----
  static bool
  aarch64_validate_mtune (const char *str, const struct processor **res)
  {
!   enum aarch_parse_opt_result parse_res
      = aarch64_parse_tune (str, res);
  
!   if (parse_res == AARCH_PARSE_OK)
      return true;
  
    switch (parse_res)
      {
!       case AARCH_PARSE_MISSING_ARG:
  	error ("missing cpu name in %<-mtune=%s%>", str);
  	break;
!       case AARCH_PARSE_INVALID_ARG:
  	error ("unknown value %qs for %<-mtune%>", str);
  	aarch64_print_hint_for_core (str);
  	break;
*************** aarch64_validate_mtune (const char *str,
*** 18053,18093 ****
    return false;
  }
  
- static_assert (TARGET_CPU_generic < TARGET_CPU_MASK,
- 	       "TARGET_CPU_NBITS is big enough");
- 
- /* Return the CPU corresponding to the enum CPU.
-    If it doesn't specify a cpu, return the default.  */
- 
- static const struct processor *
- aarch64_get_tune_cpu (enum aarch64_processor cpu)
- {
-   if (cpu != aarch64_none)
-     return &all_cores[cpu];
- 
-   /* The & TARGET_CPU_MASK is to extract the bottom TARGET_CPU_NBITS bits that
-      encode the default cpu as selected by the --with-cpu GCC configure option
-      in config.gcc.
-      ???: The whole TARGET_CPU_DEFAULT and AARCH64_CPU_DEFAULT_FLAGS
-      flags mechanism should be reworked to make it more sane.  */
-   return &all_cores[TARGET_CPU_DEFAULT & TARGET_CPU_MASK];
- }
- 
- /* Return the architecture corresponding to the enum ARCH.
-    If it doesn't specify a valid architecture, return the default.  */
- 
- static const struct processor *
- aarch64_get_arch (enum aarch64_arch arch)
- {
-   if (arch != aarch64_no_arch)
-     return &all_architectures[arch];
- 
-   const struct processor *cpu
-     = &all_cores[TARGET_CPU_DEFAULT & TARGET_CPU_MASK];
- 
-   return &all_architectures[cpu->arch];
- }
- 
  /* Return the VG value associated with -msve-vector-bits= value VALUE.  */
  
  static poly_uint16
--- 18296,18301 ----
*************** aarch64_convert_sve_vector_bits (aarch64
*** 18109,18224 ****
      return (int) value / 64;
  }
  
  /* Implement TARGET_OPTION_OVERRIDE.  This is called once in the beginning
     and is used to parse the -m{cpu,tune,arch} strings and setup the initial
     tuning structs.  In particular it must set selected_tune and
!    aarch64_isa_flags that define the available ISA features and tuning
     decisions.  It must also set selected_arch as this will be used to
     output the .arch asm tags for each function.  */
  
  static void
  aarch64_override_options (void)
  {
!   uint64_t cpu_isa = 0;
!   uint64_t arch_isa = 0;
!   aarch64_isa_flags = 0;
! 
!   bool valid_cpu = true;
!   bool valid_tune = true;
!   bool valid_arch = true;
  
!   selected_cpu = NULL;
!   selected_arch = NULL;
!   selected_tune = NULL;
  
    if (aarch64_harden_sls_string)
      aarch64_validate_sls_mitigation (aarch64_harden_sls_string);
  
    if (aarch64_branch_protection_string)
!     aarch64_validate_mbranch_protection (aarch64_branch_protection_string);
  
    /* -mcpu=CPU is shorthand for -march=ARCH_FOR_CPU, -mtune=CPU.
       If either of -march or -mtune is given, they override their
       respective component of -mcpu.  */
    if (aarch64_cpu_string)
!     valid_cpu = aarch64_validate_mcpu (aarch64_cpu_string, &selected_cpu,
! 					&cpu_isa);
  
    if (aarch64_arch_string)
!     valid_arch = aarch64_validate_march (aarch64_arch_string, &selected_arch,
! 					  &arch_isa);
  
    if (aarch64_tune_string)
!     valid_tune = aarch64_validate_mtune (aarch64_tune_string, &selected_tune);
  
  #ifdef SUBTARGET_OVERRIDE_OPTIONS
    SUBTARGET_OVERRIDE_OPTIONS;
  #endif
  
!   /* If the user did not specify a processor, choose the default
!      one for them.  This will be the CPU set during configuration using
!      --with-cpu, otherwise it is "generic".  */
!   if (!selected_cpu)
!     {
!       if (selected_arch)
! 	{
! 	  selected_cpu = &all_cores[selected_arch->ident];
! 	  aarch64_isa_flags = arch_isa;
! 	  explicit_arch = selected_arch->arch;
! 	}
!       else
! 	{
! 	  /* Get default configure-time CPU.  */
! 	  selected_cpu = aarch64_get_tune_cpu (aarch64_none);
! 	  aarch64_isa_flags = TARGET_CPU_DEFAULT >> TARGET_CPU_NBITS;
! 	}
! 
!       if (selected_tune)
! 	explicit_tune_core = selected_tune->ident;
!     }
!   /* If both -mcpu and -march are specified check that they are architecturally
!      compatible, warn if they're not and prefer the -march ISA flags.  */
!   else if (selected_arch)
      {
!       if (selected_arch->arch != selected_cpu->arch)
  	{
  	  warning (0, "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch",
  		       aarch64_cpu_string,
  		       aarch64_arch_string);
  	}
!       aarch64_isa_flags = arch_isa;
!       explicit_arch = selected_arch->arch;
!       explicit_tune_core = selected_tune ? selected_tune->ident
! 					  : selected_cpu->ident;
      }
!   else
      {
!       /* -mcpu but no -march.  */
!       aarch64_isa_flags = cpu_isa;
!       explicit_tune_core = selected_tune ? selected_tune->ident
! 					  : selected_cpu->ident;
!       gcc_assert (selected_cpu);
!       selected_arch = &all_architectures[selected_cpu->arch];
!       explicit_arch = selected_arch->arch;
      }
! 
!   /* Set the arch as well as we will need it when outputing
!      the .arch directive in assembly.  */
!   if (!selected_arch)
      {
!       gcc_assert (selected_cpu);
!       selected_arch = &all_architectures[selected_cpu->arch];
      }
  
!   if (!selected_tune)
!     selected_tune = selected_cpu;
  
!   if (aarch64_enable_bti == 2)
      {
  #ifdef TARGET_ENABLE_BTI
!       aarch64_enable_bti = 1;
  #else
!       aarch64_enable_bti = 0;
  #endif
      }
  
--- 18317,18412 ----
      return (int) value / 64;
  }
  
+ /* Set the global aarch64_asm_isa_flags to FLAGS and update
+    aarch64_isa_flags accordingly.  */
+ 
+ void
+ aarch64_set_asm_isa_flags (aarch64_feature_flags flags)
+ {
+   aarch64_set_asm_isa_flags (&global_options, flags);
+ }
+ 
  /* Implement TARGET_OPTION_OVERRIDE.  This is called once in the beginning
     and is used to parse the -m{cpu,tune,arch} strings and setup the initial
     tuning structs.  In particular it must set selected_tune and
!    aarch64_asm_isa_flags that define the available ISA features and tuning
     decisions.  It must also set selected_arch as this will be used to
     output the .arch asm tags for each function.  */
  
  static void
  aarch64_override_options (void)
  {
!   aarch64_feature_flags cpu_isa = 0;
!   aarch64_feature_flags arch_isa = 0;
!   aarch64_set_asm_isa_flags (0);
  
!   const struct processor *cpu = NULL;
!   const struct processor *arch = NULL;
!   const struct processor *tune = NULL;
  
    if (aarch64_harden_sls_string)
      aarch64_validate_sls_mitigation (aarch64_harden_sls_string);
  
    if (aarch64_branch_protection_string)
!     aarch_validate_mbranch_protection (aarch64_branch_protection_string);
  
    /* -mcpu=CPU is shorthand for -march=ARCH_FOR_CPU, -mtune=CPU.
       If either of -march or -mtune is given, they override their
       respective component of -mcpu.  */
    if (aarch64_cpu_string)
!     aarch64_validate_mcpu (aarch64_cpu_string, &cpu, &cpu_isa);
  
    if (aarch64_arch_string)
!     aarch64_validate_march (aarch64_arch_string, &arch, &arch_isa);
  
    if (aarch64_tune_string)
!     aarch64_validate_mtune (aarch64_tune_string, &tune);
  
  #ifdef SUBTARGET_OVERRIDE_OPTIONS
    SUBTARGET_OVERRIDE_OPTIONS;
  #endif
  
!   if (cpu && arch)
      {
!       /* If both -mcpu and -march are specified, warn if they are not
! 	 architecturally compatible and prefer the -march ISA flags.  */
!       if (arch->arch != cpu->arch)
  	{
  	  warning (0, "switch %<-mcpu=%s%> conflicts with %<-march=%s%> switch",
  		       aarch64_cpu_string,
  		       aarch64_arch_string);
  	}
! 
!       selected_arch = arch->arch;
!       aarch64_set_asm_isa_flags (arch_isa);
      }
!   else if (cpu)
      {
!       selected_arch = cpu->arch;
!       aarch64_set_asm_isa_flags (cpu_isa);
      }
!   else if (arch)
      {
!       cpu = &all_cores[arch->ident];
!       selected_arch = arch->arch;
!       aarch64_set_asm_isa_flags (arch_isa);
!     }
!   else
!     {
!       /* No -mcpu or -march specified, so use the default CPU.  */
!       cpu = &all_cores[TARGET_CPU_DEFAULT];
!       selected_arch = cpu->arch;
!       aarch64_set_asm_isa_flags (cpu->flags);
      }
  
!   selected_tune = tune ? tune->ident : cpu->ident;
  
!   if (aarch_enable_bti == 2)
      {
  #ifdef TARGET_ENABLE_BTI
!       aarch_enable_bti = 1;
  #else
!       aarch_enable_bti = 0;
  #endif
      }
  
*************** aarch64_override_options (void)
*** 18228,18236 ****
    if (!TARGET_ILP32 && accepted_branch_protection_string == NULL)
      {
  #ifdef TARGET_ENABLE_PAC_RET
!       aarch64_ra_sign_scope = AARCH64_FUNCTION_NON_LEAF;
  #else
!       aarch64_ra_sign_scope = AARCH64_FUNCTION_NONE;
  #endif
      }
  
--- 18416,18424 ----
    if (!TARGET_ILP32 && accepted_branch_protection_string == NULL)
      {
  #ifdef TARGET_ENABLE_PAC_RET
!       aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF;
  #else
!       aarch_ra_sign_scope = AARCH_FUNCTION_NONE;
  #endif
      }
  
*************** aarch64_override_options (void)
*** 18244,18261 ****
    /* Convert -msve-vector-bits to a VG count.  */
    aarch64_sve_vg = aarch64_convert_sve_vector_bits (aarch64_sve_vector_bits);
  
!   if (aarch64_ra_sign_scope != AARCH64_FUNCTION_NONE && TARGET_ILP32)
      sorry ("return address signing is only supported for %<-mabi=lp64%>");
  
-   /* Make sure we properly set up the explicit options.  */
-   if ((aarch64_cpu_string && valid_cpu)
-        || (aarch64_tune_string && valid_tune))
-     gcc_assert (explicit_tune_core != aarch64_none);
- 
-   if ((aarch64_cpu_string && valid_cpu)
-        || (aarch64_arch_string && valid_arch))
-     gcc_assert (explicit_arch != aarch64_no_arch);
- 
    /* The pass to insert speculation tracking runs before
       shrink-wrapping and the latter does not know how to update the
       tracking status.  So disable it in this case.  */
--- 18432,18440 ----
    /* Convert -msve-vector-bits to a VG count.  */
    aarch64_sve_vg = aarch64_convert_sve_vector_bits (aarch64_sve_vector_bits);
  
!   if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE && TARGET_ILP32)
      sorry ("return address signing is only supported for %<-mabi=lp64%>");
  
    /* The pass to insert speculation tracking runs before
       shrink-wrapping and the latter does not know how to update the
       tracking status.  So disable it in this case.  */
*************** initialize_aarch64_code_model (struct gc
*** 18339,18380 ****
      }
  }
  
- /* Implement TARGET_OPTION_SAVE.  */
- 
- static void
- aarch64_option_save (struct cl_target_option *ptr, struct gcc_options *opts,
- 		     struct gcc_options */* opts_set */)
- {
-   ptr->x_aarch64_override_tune_string = opts->x_aarch64_override_tune_string;
-   ptr->x_aarch64_branch_protection_string
-     = opts->x_aarch64_branch_protection_string;
- }
- 
  /* Implements TARGET_OPTION_RESTORE.  Restore the backend codegen decisions
     using the information saved in PTR.  */
  
  static void
  aarch64_option_restore (struct gcc_options *opts,
! 			struct gcc_options */* opts_set */,
! 			struct cl_target_option *ptr)
  {
-   opts->x_explicit_arch = ptr->x_explicit_arch;
-   selected_arch = aarch64_get_arch (ptr->x_explicit_arch);
-   opts->x_explicit_tune_core = ptr->x_explicit_tune_core;
-   if (opts->x_explicit_tune_core == aarch64_none
-       && opts->x_explicit_arch != aarch64_no_arch)
-     selected_tune = &all_cores[selected_arch->ident];
-   else
-     selected_tune = aarch64_get_tune_cpu (ptr->x_explicit_tune_core);
-   opts->x_aarch64_override_tune_string = ptr->x_aarch64_override_tune_string;
-   opts->x_aarch64_branch_protection_string
-     = ptr->x_aarch64_branch_protection_string;
-   if (opts->x_aarch64_branch_protection_string)
-     {
-       aarch64_parse_branch_protection (opts->x_aarch64_branch_protection_string,
- 					NULL);
-     }
- 
    aarch64_override_options_internal (opts);
  }
  
--- 18518,18531 ----
      }
  }
  
  /* Implements TARGET_OPTION_RESTORE.  Restore the backend codegen decisions
     using the information saved in PTR.  */
  
  static void
  aarch64_option_restore (struct gcc_options *opts,
! 			struct gcc_options * /* opts_set */,
! 			struct cl_target_option * /* ptr */)
  {
    aarch64_override_options_internal (opts);
  }
  
*************** static void
*** 18384,18394 ****
  aarch64_option_print (FILE *file, int indent, struct cl_target_option *ptr)
  {
    const struct processor *cpu
!     = aarch64_get_tune_cpu (ptr->x_explicit_tune_core);
!   uint64_t isa_flags = ptr->x_aarch64_isa_flags;
!   const struct processor *arch = aarch64_get_arch (ptr->x_explicit_arch);
    std::string extension
!     = aarch64_get_extension_string_for_isa_flags (isa_flags, arch->flags);
  
    fprintf (file, "%*sselected tune = %s\n", indent, "", cpu->name);
    fprintf (file, "%*sselected arch = %s%s\n", indent, "",
--- 18535,18545 ----
  aarch64_option_print (FILE *file, int indent, struct cl_target_option *ptr)
  {
    const struct processor *cpu
!     = aarch64_get_tune_cpu (ptr->x_selected_tune);
!   const struct processor *arch = aarch64_get_arch (ptr->x_selected_arch);
    std::string extension
!     = aarch64_get_extension_string_for_isa_flags (ptr->x_aarch64_asm_isa_flags,
! 						  arch->flags);
  
    fprintf (file, "%*sselected tune = %s\n", indent, "", cpu->name);
    fprintf (file, "%*sselected arch = %s%s\n", indent, "",
*************** aarch64_handle_attr_arch (const char *st
*** 18495,18521 ****
  {
    const struct processor *tmp_arch = NULL;
    std::string invalid_extension;
!   enum aarch64_parse_opt_result parse_res
!     = aarch64_parse_arch (str, &tmp_arch, &aarch64_isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH64_PARSE_OK)
      {
        gcc_assert (tmp_arch);
!       selected_arch = tmp_arch;
!       explicit_arch = selected_arch->arch;
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_MISSING_ARG:
  	error ("missing name in %<target(\"arch=\")%> pragma or attribute");
  	break;
!       case AARCH64_PARSE_INVALID_ARG:
  	error ("invalid name %qs in %<target(\"arch=\")%> pragma or attribute", str);
  	aarch64_print_hint_for_arch (str);
  	break;
!       case AARCH64_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %s of value %qs in "
  	       "%<target()%> pragma or attribute", invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
--- 18646,18673 ----
  {
    const struct processor *tmp_arch = NULL;
    std::string invalid_extension;
!   aarch64_feature_flags tmp_flags;
!   enum aarch_parse_opt_result parse_res
!     = aarch64_parse_arch (str, &tmp_arch, &tmp_flags, &invalid_extension);
  
!   if (parse_res == AARCH_PARSE_OK)
      {
        gcc_assert (tmp_arch);
!       selected_arch = tmp_arch->arch;
!       aarch64_set_asm_isa_flags (tmp_flags);
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH_PARSE_MISSING_ARG:
  	error ("missing name in %<target(\"arch=\")%> pragma or attribute");
  	break;
!       case AARCH_PARSE_INVALID_ARG:
  	error ("invalid name %qs in %<target(\"arch=\")%> pragma or attribute", str);
  	aarch64_print_hint_for_arch (str);
  	break;
!       case AARCH_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %s of value %qs in "
  	       "%<target()%> pragma or attribute", invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
*************** aarch64_handle_attr_cpu (const char *str
*** 18534,18563 ****
  {
    const struct processor *tmp_cpu = NULL;
    std::string invalid_extension;
!   enum aarch64_parse_opt_result parse_res
!     = aarch64_parse_cpu (str, &tmp_cpu, &aarch64_isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH64_PARSE_OK)
      {
        gcc_assert (tmp_cpu);
!       selected_tune = tmp_cpu;
!       explicit_tune_core = selected_tune->ident;
! 
!       selected_arch = &all_architectures[tmp_cpu->arch];
!       explicit_arch = selected_arch->arch;
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_MISSING_ARG:
  	error ("missing name in %<target(\"cpu=\")%> pragma or attribute");
  	break;
!       case AARCH64_PARSE_INVALID_ARG:
  	error ("invalid name %qs in %<target(\"cpu=\")%> pragma or attribute", str);
  	aarch64_print_hint_for_core (str);
  	break;
!       case AARCH64_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs of value %qs in "
  	       "%<target()%> pragma or attribute", invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
--- 18686,18714 ----
  {
    const struct processor *tmp_cpu = NULL;
    std::string invalid_extension;
!   aarch64_feature_flags tmp_flags;
!   enum aarch_parse_opt_result parse_res
!     = aarch64_parse_cpu (str, &tmp_cpu, &tmp_flags, &invalid_extension);
  
!   if (parse_res == AARCH_PARSE_OK)
      {
        gcc_assert (tmp_cpu);
!       selected_tune = tmp_cpu->ident;
!       selected_arch = tmp_cpu->arch;
!       aarch64_set_asm_isa_flags (tmp_flags);
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH_PARSE_MISSING_ARG:
  	error ("missing name in %<target(\"cpu=\")%> pragma or attribute");
  	break;
!       case AARCH_PARSE_INVALID_ARG:
  	error ("invalid name %qs in %<target(\"cpu=\")%> pragma or attribute", str);
  	aarch64_print_hint_for_core (str);
  	break;
!       case AARCH_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs of value %qs in "
  	       "%<target()%> pragma or attribute", invalid_extension.c_str (), str);
  	aarch64_print_hint_for_extensions (invalid_extension);
*************** aarch64_handle_attr_cpu (const char *str
*** 18575,18597 ****
   aarch64_handle_attr_branch_protection (const char* str)
   {
    char *err_str = (char *) xmalloc (strlen (str) + 1);
!   enum aarch64_parse_opt_result res = aarch64_parse_branch_protection (str,
! 								      &err_str);
    bool success = false;
    switch (res)
      {
!      case AARCH64_PARSE_MISSING_ARG:
         error ("missing argument to %<target(\"branch-protection=\")%> pragma or"
  	      " attribute");
         break;
!      case AARCH64_PARSE_INVALID_ARG:
         error ("invalid protection type %qs in %<target(\"branch-protection"
  	      "=\")%> pragma or attribute", err_str);
         break;
!      case AARCH64_PARSE_OK:
         success = true;
        /* Fall through.  */
!      case AARCH64_PARSE_INVALID_FEATURE:
         break;
       default:
         gcc_unreachable ();
--- 18726,18748 ----
   aarch64_handle_attr_branch_protection (const char* str)
   {
    char *err_str = (char *) xmalloc (strlen (str) + 1);
!   enum aarch_parse_opt_result res = aarch_parse_branch_protection (str,
! 								   &err_str);
    bool success = false;
    switch (res)
      {
!      case AARCH_PARSE_MISSING_ARG:
         error ("missing argument to %<target(\"branch-protection=\")%> pragma or"
  	      " attribute");
         break;
!      case AARCH_PARSE_INVALID_ARG:
         error ("invalid protection type %qs in %<target(\"branch-protection"
  	      "=\")%> pragma or attribute", err_str);
         break;
!      case AARCH_PARSE_OK:
         success = true;
        /* Fall through.  */
!      case AARCH_PARSE_INVALID_FEATURE:
         break;
       default:
         gcc_unreachable ();
*************** static bool
*** 18606,18625 ****
  aarch64_handle_attr_tune (const char *str)
  {
    const struct processor *tmp_tune = NULL;
!   enum aarch64_parse_opt_result parse_res
      = aarch64_parse_tune (str, &tmp_tune);
  
!   if (parse_res == AARCH64_PARSE_OK)
      {
        gcc_assert (tmp_tune);
!       selected_tune = tmp_tune;
!       explicit_tune_core = selected_tune->ident;
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_INVALID_ARG:
  	error ("invalid name %qs in %<target(\"tune=\")%> pragma or attribute", str);
  	aarch64_print_hint_for_core (str);
  	break;
--- 18757,18775 ----
  aarch64_handle_attr_tune (const char *str)
  {
    const struct processor *tmp_tune = NULL;
!   enum aarch_parse_opt_result parse_res
      = aarch64_parse_tune (str, &tmp_tune);
  
!   if (parse_res == AARCH_PARSE_OK)
      {
        gcc_assert (tmp_tune);
!       selected_tune = tmp_tune->ident;
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH_PARSE_INVALID_ARG:
  	error ("invalid name %qs in %<target(\"tune=\")%> pragma or attribute", str);
  	aarch64_print_hint_for_core (str);
  	break;
*************** aarch64_handle_attr_tune (const char *st
*** 18638,18645 ****
  static bool
  aarch64_handle_attr_isa_flags (char *str)
  {
!   enum aarch64_parse_opt_result parse_res;
!   uint64_t isa_flags = aarch64_isa_flags;
  
    /* We allow "+nothing" in the beginning to clear out all architectural
       features if the user wants to handpick specific features.  */
--- 18788,18795 ----
  static bool
  aarch64_handle_attr_isa_flags (char *str)
  {
!   enum aarch_parse_opt_result parse_res;
!   auto isa_flags = aarch64_asm_isa_flags;
  
    /* We allow "+nothing" in the beginning to clear out all architectural
       features if the user wants to handpick specific features.  */
*************** aarch64_handle_attr_isa_flags (char *str
*** 18652,18670 ****
    std::string invalid_extension;
    parse_res = aarch64_parse_extension (str, &isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH64_PARSE_OK)
      {
!       aarch64_isa_flags = isa_flags;
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH64_PARSE_MISSING_ARG:
  	error ("missing value in %<target()%> pragma or attribute");
  	break;
  
!       case AARCH64_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs of value %qs in "
  	       "%<target()%> pragma or attribute", invalid_extension.c_str (), str);
  	break;
--- 18802,18820 ----
    std::string invalid_extension;
    parse_res = aarch64_parse_extension (str, &isa_flags, &invalid_extension);
  
!   if (parse_res == AARCH_PARSE_OK)
      {
!       aarch64_set_asm_isa_flags (isa_flags);
        return true;
      }
  
    switch (parse_res)
      {
!       case AARCH_PARSE_MISSING_ARG:
  	error ("missing value in %<target()%> pragma or attribute");
  	break;
  
!       case AARCH_PARSE_INVALID_FEATURE:
  	error ("invalid feature modifier %qs of value %qs in "
  	       "%<target()%> pragma or attribute", invalid_extension.c_str (), str);
  	break;
*************** aarch64_process_target_attr (tree args)
*** 18911,18922 ****
  	{
  	  /* Check if token is possibly an arch extension without
  	     leading '+'.  */
! 	  uint64_t isa_temp = 0;
  	  auto with_plus = std::string ("+") + token;
! 	  enum aarch64_parse_opt_result ext_res
  	    = aarch64_parse_extension (with_plus.c_str (), &isa_temp, nullptr);
  
! 	  if (ext_res == AARCH64_PARSE_OK)
  	    error ("arch extension %<%s%> should be prefixed by %<+%>",
  		   token);
  	  else
--- 19061,19072 ----
  	{
  	  /* Check if token is possibly an arch extension without
  	     leading '+'.  */
! 	  aarch64_feature_flags isa_temp = 0;
  	  auto with_plus = std::string ("+") + token;
! 	  enum aarch_parse_opt_result ext_res
  	    = aarch64_parse_extension (with_plus.c_str (), &isa_temp, nullptr);
  
! 	  if (ext_res == AARCH_PARSE_OK)
  	    error ("arch extension %<%s%> should be prefixed by %<+%>",
  		   token);
  	  else
*************** aarch64_option_valid_attribute_p (tree f
*** 18996,19013 ****
    if (ret)
      {
        aarch64_override_options_internal (&global_options);
-       /* Initialize SIMD builtins if we haven't already.
- 	 Set current_target_pragma to NULL for the duration so that
- 	 the builtin initialization code doesn't try to tag the functions
- 	 being built with the attributes specified by any current pragma, thus
- 	 going into an infinite recursion.  */
-       if (TARGET_SIMD)
- 	{
- 	  tree saved_current_target_pragma = current_target_pragma;
- 	  current_target_pragma = NULL;
- 	  aarch64_init_simd_builtins ();
- 	  current_target_pragma = saved_current_target_pragma;
- 	}
        new_target = build_target_option_node (&global_options,
  					     &global_options_set);
      }
--- 19146,19151 ----
*************** aarch64_can_inline_p (tree caller, tree
*** 19076,19083 ****
  					   : target_option_default_node);
  
    /* Callee's ISA flags should be a subset of the caller's.  */
    if ((caller_opts->x_aarch64_isa_flags & callee_opts->x_aarch64_isa_flags)
!        != callee_opts->x_aarch64_isa_flags)
      return false;
  
    /* Allow non-strict aligned functions inlining into strict
--- 19214,19225 ----
  					   : target_option_default_node);
  
    /* Callee's ISA flags should be a subset of the caller's.  */
+   if ((caller_opts->x_aarch64_asm_isa_flags
+        & callee_opts->x_aarch64_asm_isa_flags)
+       != callee_opts->x_aarch64_asm_isa_flags)
+     return false;
    if ((caller_opts->x_aarch64_isa_flags & callee_opts->x_aarch64_isa_flags)
!       != callee_opts->x_aarch64_isa_flags)
      return false;
  
    /* Allow non-strict aligned functions inlining into strict
*************** aarch64_legitimate_constant_p (machine_m
*** 19348,19354 ****
  {
    /* Support CSE and rematerialization of common constants.  */
    if (CONST_INT_P (x)
!       || (CONST_DOUBLE_P (x) && GET_MODE_CLASS (mode) == MODE_FLOAT))
      return true;
  
    /* Only accept variable-length vector constants if they can be
--- 19490,19496 ----
  {
    /* Support CSE and rematerialization of common constants.  */
    if (CONST_INT_P (x)
!       || CONST_DOUBLE_P (x))
      return true;
  
    /* Only accept variable-length vector constants if they can be
*************** aarch64_gimplify_va_arg_expr (tree valis
*** 19619,19626 ****
    size = int_size_in_bytes (type);
  
    unsigned int abi_break;
    align
!     = aarch64_function_arg_alignment (mode, type, &abi_break) / BITS_PER_UNIT;
  
    dw_align = false;
    adjust = 0;
--- 19761,19770 ----
    size = int_size_in_bytes (type);
  
    unsigned int abi_break;
+   unsigned int abi_break_packed;
    align
!     = aarch64_function_arg_alignment (mode, type, &abi_break, &abi_break_packed)
!     / BITS_PER_UNIT;
  
    dw_align = false;
    adjust = 0;
*************** aarch64_gimplify_va_arg_expr (tree valis
*** 19663,19668 ****
--- 19807,19816 ----
        rsize = ROUND_UP (size, UNITS_PER_WORD);
        nregs = rsize / UNITS_PER_WORD;
  
+       if (align <= 8 && abi_break_packed && warn_psabi)
+ 	inform (input_location, "parameter passing for argument of type "
+ 		"%qT changed in GCC 13.1", type);
+ 
        if (align > 8)
  	{
  	  if (abi_break && warn_psabi)
*************** aarch64_gimplify_va_arg_expr (tree valis
*** 19789,19800 ****
  	  field_t = long_double_type_node;
  	  field_ptr_t = long_double_ptr_type_node;
  	  break;
  	case E_HFmode:
  	  field_t = aarch64_fp16_type_node;
  	  field_ptr_t = aarch64_fp16_ptr_type_node;
  	  break;
  	case E_BFmode:
! 	  field_t = aarch64_bf16_type_node;
  	  field_ptr_t = aarch64_bf16_ptr_type_node;
  	  break;
  	case E_V2SImode:
--- 19937,19960 ----
  	  field_t = long_double_type_node;
  	  field_ptr_t = long_double_ptr_type_node;
  	  break;
+ 	case E_SDmode:
+ 	  field_t = dfloat32_type_node;
+ 	  field_ptr_t = build_pointer_type (dfloat32_type_node);
+ 	  break;
+ 	case E_DDmode:
+ 	  field_t = dfloat64_type_node;
+ 	  field_ptr_t = build_pointer_type (dfloat64_type_node);
+ 	  break;
+ 	case E_TDmode:
+ 	  field_t = dfloat128_type_node;
+ 	  field_ptr_t = build_pointer_type (dfloat128_type_node);
+ 	  break;
  	case E_HFmode:
  	  field_t = aarch64_fp16_type_node;
  	  field_ptr_t = aarch64_fp16_ptr_type_node;
  	  break;
  	case E_BFmode:
! 	  field_t = bfloat16_type_node;
  	  field_ptr_t = aarch64_bf16_ptr_type_node;
  	  break;
  	case E_V2SImode:
*************** aarch64_setup_incoming_varargs (cumulati
*** 19862,19868 ****
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *cum;
!   aarch64_function_arg_advance (pack_cumulative_args(&local_cum), arg);
  
    /* Found out how many registers we need to save.
       Honor tree-stdvar analysis results.  */
--- 20022,20029 ----
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *cum;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     aarch64_function_arg_advance (pack_cumulative_args(&local_cum), arg);
  
    /* Found out how many registers we need to save.
       Honor tree-stdvar analysis results.  */
*************** aarch64_conditional_register_usage (void
*** 19940,19945 ****
--- 20101,20107 ----
  	{
  	  fixed_regs[i] = 1;
  	  call_used_regs[i] = 1;
+ 	  CLEAR_HARD_REG_BIT (operand_reg_set, i);
  	}
      }
    if (!TARGET_SVE)
*************** aapcs_vfp_sub_candidate (const_tree type
*** 20040,20046 ****
      case REAL_TYPE:
        mode = TYPE_MODE (type);
        if (mode != DFmode && mode != SFmode
! 	  && mode != TFmode && mode != HFmode)
  	return -1;
  
        if (*modep == VOIDmode)
--- 20202,20209 ----
      case REAL_TYPE:
        mode = TYPE_MODE (type);
        if (mode != DFmode && mode != SFmode
! 	  && mode != TFmode && mode != HFmode
! 	  && mode != SDmode && mode != DDmode && mode != TDmode)
  	return -1;
  
        if (*modep == VOIDmode)
*************** aarch64_vfp_is_call_or_return_candidate
*** 20356,20362 ****
    machine_mode new_mode = VOIDmode;
    bool composite_p = aarch64_composite_type_p (type, mode);
  
!   if ((!composite_p && GET_MODE_CLASS (mode) == MODE_FLOAT)
        || aarch64_short_vector_p (type, mode))
      {
        *count = 1;
--- 20519,20527 ----
    machine_mode new_mode = VOIDmode;
    bool composite_p = aarch64_composite_type_p (type, mode);
  
!   if ((!composite_p
!        && (GET_MODE_CLASS (mode) == MODE_FLOAT
! 	   || GET_MODE_CLASS (mode) == MODE_DECIMAL_FLOAT))
        || aarch64_short_vector_p (type, mode))
      {
        *count = 1;
*************** aarch64_mangle_type (const_tree type)
*** 20693,20698 ****
--- 20858,20865 ----
    /* Half-precision floating point types.  */
    if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16)
      {
+       if (TYPE_MAIN_VARIANT (type) == float16_type_node)
+ 	return NULL;
        if (TYPE_MODE (type) == BFmode)
  	return "u6__bf16";
        else
*************** is_madd_op (enum attr_type t1)
*** 20751,20757 ****
      TYPE_SMMLA, TYPE_UMLAL, TYPE_UMLALS,TYPE_SMLSD, TYPE_SMLSDX, TYPE_SMLSLD
    };
  
!   for (i = 0; i < sizeof (mlatypes) / sizeof (enum attr_type); i++)
      {
        if (t1 == mlatypes[i])
  	return true;
--- 20918,20924 ----
      TYPE_SMMLA, TYPE_UMLAL, TYPE_UMLALS,TYPE_SMLSD, TYPE_SMLSDX, TYPE_SMLSLD
    };
  
!   for (i = 0; i < ARRAY_SIZE (mlatypes); i++)
      {
        if (t1 == mlatypes[i])
  	return true;
*************** aarch64_simd_valid_immediate (rtx op, si
*** 21204,21209 ****
--- 21371,21379 ----
    if (vec_flags == 0 || vec_flags == (VEC_ADVSIMD | VEC_STRUCT))
      return false;
  
+   if ((vec_flags & VEC_ADVSIMD) && !TARGET_SIMD)
+     return false;
+ 
    if (vec_flags & VEC_SVE_PRED)
      return aarch64_sve_pred_valid_immediate (op, info);
  
*************** aarch64_expand_vector_init (rtx target,
*** 21952,21957 ****
--- 22122,22159 ----
        return;
      }
  
+   /* Check for interleaving case.
+      For eg if initializer is (int16x8_t) {x, y, x, y, x, y, x, y}.
+      Generate following code:
+      dup v0.h, x
+      dup v1.h, y
+      zip1 v0.h, v0.h, v1.h
+      for "large enough" initializer.  */
+ 
+   if (n_elts >= 8)
+     {
+       int i;
+       for (i = 2; i < n_elts; i++)
+ 	if (!rtx_equal_p (XVECEXP (vals, 0, i), XVECEXP (vals, 0, i % 2)))
+ 	  break;
+ 
+       if (i == n_elts)
+ 	{
+ 	  machine_mode mode = GET_MODE (target);
+ 	  rtx dest[2];
+ 
+ 	  for (int i = 0; i < 2; i++)
+ 	    {
+ 	      rtx x = expand_vector_broadcast (mode, XVECEXP (vals, 0, i));
+ 	      dest[i] = force_reg (mode, x);
+ 	    }
+ 
+ 	  rtvec v = gen_rtvec (2, dest[0], dest[1]);
+ 	  emit_set_insn (target, gen_rtx_UNSPEC (mode, v, UNSPEC_ZIP1));
+ 	  return;
+ 	}
+     }
+ 
    enum insn_code icode = optab_handler (vec_set_optab, mode);
    gcc_assert (icode != CODE_FOR_nothing);
  
*************** aarch64_declare_function_name (FILE *str
*** 22518,22526 ****
    gcc_assert (targ_options);
  
    const struct processor *this_arch
!     = aarch64_get_arch (targ_options->x_explicit_arch);
  
!   uint64_t isa_flags = targ_options->x_aarch64_isa_flags;
    std::string extension
      = aarch64_get_extension_string_for_isa_flags (isa_flags,
  						  this_arch->flags);
--- 22720,22728 ----
    gcc_assert (targ_options);
  
    const struct processor *this_arch
!     = aarch64_get_arch (targ_options->x_selected_arch);
  
!   auto isa_flags = targ_options->x_aarch64_asm_isa_flags;
    std::string extension
      = aarch64_get_extension_string_for_isa_flags (isa_flags,
  						  this_arch->flags);
*************** aarch64_declare_function_name (FILE *str
*** 22537,22543 ****
       useful to readers of the generated asm.  Do it only when it changes
       from function to function and verbose assembly is requested.  */
    const struct processor *this_tune
!     = aarch64_get_tune_cpu (targ_options->x_explicit_tune_core);
  
    if (flag_debug_asm && aarch64_last_printed_tune_string != this_tune->name)
      {
--- 22739,22745 ----
       useful to readers of the generated asm.  Do it only when it changes
       from function to function and verbose assembly is requested.  */
    const struct processor *this_tune
!     = aarch64_get_tune_cpu (targ_options->x_selected_tune);
  
    if (flag_debug_asm && aarch64_last_printed_tune_string != this_tune->name)
      {
*************** aarch64_declare_function_name (FILE *str
*** 22555,22584 ****
    cfun->machine->label_is_assembled = true;
  }
  
! /* Implement PRINT_PATCHABLE_FUNCTION_ENTRY.  Check if the patch area is after
!    the function label and emit a BTI if necessary.  */
  
  void
  aarch64_print_patchable_function_entry (FILE *file,
  					unsigned HOST_WIDE_INT patch_area_size,
  					bool record_p)
  {
!   if (cfun->machine->label_is_assembled
!       && aarch64_bti_enabled ()
!       && !cgraph_node::get (cfun->decl)->only_called_directly_p ())
      {
!       /* Remove the BTI that follows the patch area and insert a new BTI
! 	 before the patch area right after the function label.  */
!       rtx_insn *insn = next_real_nondebug_insn (get_insns ());
!       if (insn
! 	  && INSN_P (insn)
! 	  && GET_CODE (PATTERN (insn)) == UNSPEC_VOLATILE
! 	  && XINT (PATTERN (insn), 1) == UNSPECV_BTI_C)
! 	delete_insn (insn);
!       asm_fprintf (file, "\thint\t34 // bti c\n");
      }
  
!   default_print_patchable_function_entry (file, patch_area_size, record_p);
  }
  
  /* Implement ASM_OUTPUT_DEF_FROM_DECLS.  Output .variant_pcs for aliases.  */
--- 22757,22812 ----
    cfun->machine->label_is_assembled = true;
  }
  
! /* Implement PRINT_PATCHABLE_FUNCTION_ENTRY.  */
  
  void
  aarch64_print_patchable_function_entry (FILE *file,
  					unsigned HOST_WIDE_INT patch_area_size,
  					bool record_p)
  {
!   if (!cfun->machine->label_is_assembled)
      {
!       /* Emit the patching area before the entry label, if any.  */
!       default_print_patchable_function_entry (file, patch_area_size,
! 					      record_p);
!       return;
      }
  
!   rtx pa = gen_patchable_area (GEN_INT (patch_area_size),
! 			       GEN_INT (record_p));
!   basic_block bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
! 
!   if (!aarch_bti_enabled ()
!       || cgraph_node::get (cfun->decl)->only_called_directly_p ())
!     {
!       /* Emit the patchable_area at the beginning of the function.  */
!       rtx_insn *insn = emit_insn_before (pa, BB_HEAD (bb));
!       INSN_ADDRESSES_NEW (insn, -1);
!       return;
!     }
! 
!   rtx_insn *insn = next_real_nondebug_insn (get_insns ());
!   if (!insn
!       || !INSN_P (insn)
!       || GET_CODE (PATTERN (insn)) != UNSPEC_VOLATILE
!       || XINT (PATTERN (insn), 1) != UNSPECV_BTI_C)
!     {
!       /* Emit a BTI_C.  */
!       insn = emit_insn_before (gen_bti_c (), BB_HEAD (bb));
!     }
! 
!   /* Emit the patchable_area after BTI_C.  */
!   insn = emit_insn_after (pa, insn);
!   INSN_ADDRESSES_NEW (insn, -1);
! }
! 
! /* Output patchable area.  */
! 
! void
! aarch64_output_patchable_area (unsigned int patch_area_size, bool record_p)
! {
!   default_print_patchable_function_entry (asm_out_file, patch_area_size,
! 					  record_p);
  }
  
  /* Implement ASM_OUTPUT_DEF_FROM_DECLS.  Output .variant_pcs for aliases.  */
*************** void
*** 22610,22616 ****
  aarch64_post_cfi_startproc (FILE *f, tree ignored ATTRIBUTE_UNUSED)
  {
    if (cfun->machine->frame.laid_out && aarch64_return_address_signing_enabled ()
!       && aarch64_ra_sign_key == AARCH64_KEY_B)
  	asm_fprintf (f, "\t.cfi_b_key_frame\n");
  }
  
--- 22838,22844 ----
  aarch64_post_cfi_startproc (FILE *f, tree ignored ATTRIBUTE_UNUSED)
  {
    if (cfun->machine->frame.laid_out && aarch64_return_address_signing_enabled ()
!       && aarch_ra_sign_key == AARCH_KEY_B)
  	asm_fprintf (f, "\t.cfi_b_key_frame\n");
  }
  
*************** aarch64_start_file (void)
*** 22623,22630 ****
      = TREE_TARGET_OPTION (target_option_default_node);
  
    const struct processor *default_arch
!     = aarch64_get_arch (default_options->x_explicit_arch);
!   uint64_t default_isa_flags = default_options->x_aarch64_isa_flags;
    std::string extension
      = aarch64_get_extension_string_for_isa_flags (default_isa_flags,
  						  default_arch->flags);
--- 22851,22858 ----
      = TREE_TARGET_OPTION (target_option_default_node);
  
    const struct processor *default_arch
!     = aarch64_get_arch (default_options->x_selected_arch);
!   auto default_isa_flags = default_options->x_aarch64_asm_isa_flags;
    std::string extension
      = aarch64_get_extension_string_for_isa_flags (default_isa_flags,
  						  default_arch->flags);
*************** aarch64_output_scalar_simd_mov_immediate
*** 23264,23270 ****
      }
  
    machine_mode vmode;
!   /* use a 64 bit mode for everything except for DI/DF mode, where we use
       a 128 bit vector mode.  */
    int width = GET_MODE_BITSIZE (mode) == 64 ? 128 : 64;
  
--- 23492,23498 ----
      }
  
    machine_mode vmode;
!   /* use a 64 bit mode for everything except for DI/DF/DD mode, where we use
       a 128 bit vector mode.  */
    int width = GET_MODE_BITSIZE (mode) == 64 ? 128 : 64;
  
*************** struct expand_vec_perm_d
*** 23422,23428 ****
--- 23650,23658 ----
    rtx target, op0, op1;
    vec_perm_indices perm;
    machine_mode vmode;
+   machine_mode op_mode;
    unsigned int vec_flags;
+   unsigned int op_vec_flags;
    bool one_vector_p;
    bool testing_p;
  };
*************** aarch64_evpc_trn (struct expand_vec_perm
*** 23580,23586 ****
  {
    HOST_WIDE_INT odd;
    poly_uint64 nelt = d->perm.length ();
!   rtx out, in0, in1, x;
    machine_mode vmode = d->vmode;
  
    if (GET_MODE_UNIT_SIZE (vmode) > 8)
--- 23810,23816 ----
  {
    HOST_WIDE_INT odd;
    poly_uint64 nelt = d->perm.length ();
!   rtx out, in0, in1;
    machine_mode vmode = d->vmode;
  
    if (GET_MODE_UNIT_SIZE (vmode) > 8)
*************** aarch64_evpc_trn (struct expand_vec_perm
*** 23604,23610 ****
       at the head of aarch64-sve.md for details.  */
    if (BYTES_BIG_ENDIAN && d->vec_flags == VEC_ADVSIMD)
      {
!       x = in0, in0 = in1, in1 = x;
        odd = !odd;
      }
    out = d->target;
--- 23834,23840 ----
       at the head of aarch64-sve.md for details.  */
    if (BYTES_BIG_ENDIAN && d->vec_flags == VEC_ADVSIMD)
      {
!       std::swap (in0, in1);
        odd = !odd;
      }
    out = d->target;
*************** aarch64_evpc_reencode (struct expand_vec
*** 23657,23662 ****
--- 23887,23894 ----
  
    newd.vmode = new_mode;
    newd.vec_flags = VEC_ADVSIMD;
+   newd.op_mode = newd.vmode;
+   newd.op_vec_flags = newd.vec_flags;
    newd.target = d->target ? gen_lowpart (new_mode, d->target) : NULL;
    newd.op0 = d->op0 ? gen_lowpart (new_mode, d->op0) : NULL;
    newd.op1 = d->op1 ? gen_lowpart (new_mode, d->op1) : NULL;
*************** static bool
*** 23672,23678 ****
  aarch64_evpc_uzp (struct expand_vec_perm_d *d)
  {
    HOST_WIDE_INT odd;
!   rtx out, in0, in1, x;
    machine_mode vmode = d->vmode;
  
    if (GET_MODE_UNIT_SIZE (vmode) > 8)
--- 23904,23910 ----
  aarch64_evpc_uzp (struct expand_vec_perm_d *d)
  {
    HOST_WIDE_INT odd;
!   rtx out, in0, in1;
    machine_mode vmode = d->vmode;
  
    if (GET_MODE_UNIT_SIZE (vmode) > 8)
*************** aarch64_evpc_uzp (struct expand_vec_perm
*** 23695,23701 ****
       at the head of aarch64-sve.md for details.  */
    if (BYTES_BIG_ENDIAN && d->vec_flags == VEC_ADVSIMD)
      {
!       x = in0, in0 = in1, in1 = x;
        odd = !odd;
      }
    out = d->target;
--- 23927,23933 ----
       at the head of aarch64-sve.md for details.  */
    if (BYTES_BIG_ENDIAN && d->vec_flags == VEC_ADVSIMD)
      {
!       std::swap (in0, in1);
        odd = !odd;
      }
    out = d->target;
*************** aarch64_evpc_zip (struct expand_vec_perm
*** 23711,23717 ****
  {
    unsigned int high;
    poly_uint64 nelt = d->perm.length ();
!   rtx out, in0, in1, x;
    machine_mode vmode = d->vmode;
  
    if (GET_MODE_UNIT_SIZE (vmode) > 8)
--- 23943,23949 ----
  {
    unsigned int high;
    poly_uint64 nelt = d->perm.length ();
!   rtx out, in0, in1;
    machine_mode vmode = d->vmode;
  
    if (GET_MODE_UNIT_SIZE (vmode) > 8)
*************** aarch64_evpc_zip (struct expand_vec_perm
*** 23736,23742 ****
       at the head of aarch64-sve.md for details.  */
    if (BYTES_BIG_ENDIAN && d->vec_flags == VEC_ADVSIMD)
      {
!       x = in0, in0 = in1, in1 = x;
        high = !high;
      }
    out = d->target;
--- 23968,23974 ----
       at the head of aarch64-sve.md for details.  */
    if (BYTES_BIG_ENDIAN && d->vec_flags == VEC_ADVSIMD)
      {
!       std::swap (in0, in1);
        high = !high;
      }
    out = d->target;
*************** aarch64_evpc_sve_tbl (struct expand_vec_
*** 23971,23976 ****
--- 24203,24235 ----
    return true;
  }
  
+ /* Try to implement D using SVE dup instruction.  */
+ 
+ static bool
+ aarch64_evpc_sve_dup (struct expand_vec_perm_d *d)
+ {
+   if (BYTES_BIG_ENDIAN
+       || !d->one_vector_p
+       || d->vec_flags != VEC_SVE_DATA
+       || d->op_vec_flags != VEC_ADVSIMD
+       || d->perm.encoding ().nelts_per_pattern () != 1
+       || !known_eq (d->perm.encoding ().npatterns (),
+ 		    GET_MODE_NUNITS (d->op_mode))
+       || !known_eq (GET_MODE_BITSIZE (d->op_mode), 128))
+     return false;
+ 
+   int npatterns = d->perm.encoding ().npatterns ();
+   for (int i = 0; i < npatterns; i++)
+     if (!known_eq (d->perm[i], i))
+       return false;
+ 
+   if (d->testing_p)
+     return true;
+ 
+   aarch64_expand_sve_dupq (d->target, GET_MODE (d->target), d->op0);
+   return true;
+ }
+ 
  /* Try to implement D using SVE SEL instruction.  */
  
  static bool
*************** aarch64_evpc_ins (struct expand_vec_perm
*** 24094,24099 ****
--- 24353,24360 ----
  static bool
  aarch64_expand_vec_perm_const_1 (struct expand_vec_perm_d *d)
  {
+   gcc_assert (d->op_mode != E_VOIDmode);
+ 
    /* The pattern matching functions above are written to look for a small
       number to begin the sequence (0, 1, N/2).  If we begin with an index
       from the second operand, we can swap the operands.  */
*************** aarch64_expand_vec_perm_const_1 (struct
*** 24104,24139 ****
        std::swap (d->op0, d->op1);
      }
  
!   if ((d->vec_flags == VEC_ADVSIMD
         || d->vec_flags == VEC_SVE_DATA
         || d->vec_flags == (VEC_SVE_DATA | VEC_PARTIAL)
         || d->vec_flags == VEC_SVE_PRED)
        && known_gt (nelt, 1))
      {
!       if (aarch64_evpc_rev_local (d))
! 	return true;
!       else if (aarch64_evpc_rev_global (d))
! 	return true;
!       else if (aarch64_evpc_ext (d))
! 	return true;
!       else if (aarch64_evpc_dup (d))
! 	return true;
!       else if (aarch64_evpc_zip (d))
! 	return true;
!       else if (aarch64_evpc_uzp (d))
! 	return true;
!       else if (aarch64_evpc_trn (d))
! 	return true;
!       else if (aarch64_evpc_sel (d))
! 	return true;
!       else if (aarch64_evpc_ins (d))
! 	return true;
!       else if (aarch64_evpc_reencode (d))
! 	return true;
!       if (d->vec_flags == VEC_SVE_DATA)
! 	return aarch64_evpc_sve_tbl (d);
!       else if (d->vec_flags == VEC_ADVSIMD)
! 	return aarch64_evpc_tbl (d);
      }
    return false;
  }
--- 24365,24409 ----
        std::swap (d->op0, d->op1);
      }
  
!   if (((d->vec_flags == VEC_ADVSIMD && TARGET_SIMD)
         || d->vec_flags == VEC_SVE_DATA
         || d->vec_flags == (VEC_SVE_DATA | VEC_PARTIAL)
         || d->vec_flags == VEC_SVE_PRED)
        && known_gt (nelt, 1))
      {
!       if (d->vmode == d->op_mode)
! 	{
! 	  if (aarch64_evpc_rev_local (d))
! 	    return true;
! 	  else if (aarch64_evpc_rev_global (d))
! 	    return true;
! 	  else if (aarch64_evpc_ext (d))
! 	    return true;
! 	  else if (aarch64_evpc_dup (d))
! 	    return true;
! 	  else if (aarch64_evpc_zip (d))
! 	    return true;
! 	  else if (aarch64_evpc_uzp (d))
! 	    return true;
! 	  else if (aarch64_evpc_trn (d))
! 	    return true;
! 	  else if (aarch64_evpc_sel (d))
! 	    return true;
! 	  else if (aarch64_evpc_ins (d))
! 	    return true;
! 	  else if (aarch64_evpc_reencode (d))
! 	    return true;
! 
! 	  if (d->vec_flags == VEC_SVE_DATA)
! 	    return aarch64_evpc_sve_tbl (d);
! 	  else if (d->vec_flags == VEC_ADVSIMD)
! 	    return aarch64_evpc_tbl (d);
! 	}
!       else
! 	{
! 	  if (aarch64_evpc_sve_dup (d))
! 	    return true;
! 	}
      }
    return false;
  }
*************** aarch64_expand_vec_perm_const_1 (struct
*** 24141,24148 ****
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! aarch64_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 				  rtx op1, const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
  
--- 24411,24419 ----
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! aarch64_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 				  rtx target, rtx op0, rtx op1,
! 				  const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
  
*************** aarch64_vectorize_vec_perm_const (machin
*** 24167,24178 ****
  		     sel.nelts_per_input ());
    d.vmode = vmode;
    d.vec_flags = aarch64_classify_vector_mode (d.vmode);
    d.target = target;
!   d.op0 = op0 ? force_reg (vmode, op0) : NULL_RTX;
    if (op0 == op1)
      d.op1 = d.op0;
    else
!     d.op1 = op1 ? force_reg (vmode, op1) : NULL_RTX;
    d.testing_p = !target;
  
    if (!d.testing_p)
--- 24438,24451 ----
  		     sel.nelts_per_input ());
    d.vmode = vmode;
    d.vec_flags = aarch64_classify_vector_mode (d.vmode);
+   d.op_mode = op_mode;
+   d.op_vec_flags = aarch64_classify_vector_mode (d.op_mode);
    d.target = target;
!   d.op0 = op0 ? force_reg (op_mode, op0) : NULL_RTX;
    if (op0 == op1)
      d.op1 = d.op0;
    else
!     d.op1 = op1 ? force_reg (op_mode, op1) : NULL_RTX;
    d.testing_p = !target;
  
    if (!d.testing_p)
*************** aarch64_vectorize_vec_perm_const (machin
*** 24184,24190 ****
  
    return ret;
  }
- 
  /* Generate a byte permute mask for a register of mode MODE,
     which has NUNITS units.  */
  
--- 24457,24462 ----
*************** aarch_macro_fusion_pair_p (rtx_insn *pre
*** 25455,25460 ****
--- 25727,25760 ----
  	}
      }
  
+   /* Fuse A+B+1 and A-B-1 */
+   if (simple_sets_p
+       && aarch64_fusion_enabled_p (AARCH64_FUSE_ADDSUB_2REG_CONST1))
+     {
+       /* We're trying to match:
+ 	  prev == (set (r0) (plus (r0) (r1)))
+ 	  curr == (set (r0) (plus (r0) (const_int 1)))
+ 	or:
+ 	  prev == (set (r0) (minus (r0) (r1)))
+ 	  curr == (set (r0) (plus (r0) (const_int -1))) */
+ 
+       rtx prev_src = SET_SRC (prev_set);
+       rtx curr_src = SET_SRC (curr_set);
+ 
+       int polarity = 1;
+       if (GET_CODE (prev_src) == MINUS)
+ 	polarity = -1;
+ 
+       if (GET_CODE (curr_src) == PLUS
+ 	  && (GET_CODE (prev_src) == PLUS || GET_CODE (prev_src) == MINUS)
+ 	  && CONST_INT_P (XEXP (curr_src, 1))
+ 	  && INTVAL (XEXP (curr_src, 1)) == polarity
+ 	  && REG_P (XEXP (curr_src, 0))
+ 	  && REG_P (SET_DEST (prev_set))
+ 	  && REGNO (SET_DEST (prev_set)) == REGNO (XEXP (curr_src, 0)))
+ 	return true;
+     }
+ 
    return false;
  }
  
*************** aarch64_operands_ok_for_ldpstp (rtx *ope
*** 25753,25758 ****
--- 26053,26072 ----
    enum reg_class rclass_1, rclass_2;
    rtx mem_1, mem_2, reg_1, reg_2;
  
+   /* Allow the tuning structure to disable LDP instruction formation
+      from combining instructions (e.g., in peephole2).
+      TODO: Implement fine-grained tuning control for LDP and STP:
+ 	   1. control policies for load and store separately;
+ 	   2. support the following policies:
+ 	      - default (use what is in the tuning structure)
+ 	      - always
+ 	      - never
+ 	      - aligned (only if the compiler can prove that the
+ 		load will be aligned to 2 * element_size)  */
+   if (load && (aarch64_tune_params.extra_tuning_flags
+ 	       & AARCH64_EXTRA_TUNE_NO_LDP_COMBINE))
+     return false;
+ 
    if (load)
      {
        mem_1 = operands[1];
*************** aarch64_gen_adjusted_ldpstp (rtx *operan
*** 26082,26088 ****
      base_off = (off_val_1 + off_val_3) / 2;
    else
      /* However, due to issues with negative LDP/STP offset generation for
!        larger modes, for DF, DI and vector modes. we must not use negative
         addresses smaller than 9 signed unadjusted bits can store.  This
         provides the most range in this case.  */
      base_off = off_val_1;
--- 26396,26402 ----
      base_off = (off_val_1 + off_val_3) / 2;
    else
      /* However, due to issues with negative LDP/STP offset generation for
!        larger modes, for DF, DD, DI and vector modes. we must not use negative
         addresses smaller than 9 signed unadjusted bits can store.  This
         provides the most range in this case.  */
      base_off = off_val_1;
*************** aarch64_dwarf_poly_indeterminate_value (
*** 26344,26366 ****
  }
  
  /* Implement TARGET_LIBGCC_FLOATING_POINT_MODE_SUPPORTED_P - return TRUE
!    if MODE is HFmode, and punt to the generic implementation otherwise.  */
  
  static bool
  aarch64_libgcc_floating_mode_supported_p (scalar_float_mode mode)
  {
!   return (mode == HFmode
  	  ? true
  	  : default_libgcc_floating_mode_supported_p (mode));
  }
  
  /* Implement TARGET_SCALAR_MODE_SUPPORTED_P - return TRUE
!    if MODE is HFmode, and punt to the generic implementation otherwise.  */
  
  static bool
  aarch64_scalar_mode_supported_p (scalar_mode mode)
  {
!   return (mode == HFmode
  	  ? true
  	  : default_scalar_mode_supported_p (mode));
  }
--- 26658,26683 ----
  }
  
  /* Implement TARGET_LIBGCC_FLOATING_POINT_MODE_SUPPORTED_P - return TRUE
!    if MODE is [BH]Fmode, and punt to the generic implementation otherwise.  */
  
  static bool
  aarch64_libgcc_floating_mode_supported_p (scalar_float_mode mode)
  {
!   return ((mode == HFmode || mode == BFmode)
  	  ? true
  	  : default_libgcc_floating_mode_supported_p (mode));
  }
  
  /* Implement TARGET_SCALAR_MODE_SUPPORTED_P - return TRUE
!    if MODE is [BH]Fmode, and punt to the generic implementation otherwise.  */
  
  static bool
  aarch64_scalar_mode_supported_p (scalar_mode mode)
  {
!   if (DECIMAL_FLOAT_MODE_P (mode))
!     return default_decimal_float_supported_p ();
! 
!   return ((mode == HFmode || mode == BFmode)
  	  ? true
  	  : default_scalar_mode_supported_p (mode));
  }
*************** aarch64_can_change_mode_class (machine_m
*** 26473,26481 ****
    bool from_pred_p = (from_flags & VEC_SVE_PRED);
    bool to_pred_p = (to_flags & VEC_SVE_PRED);
  
-   bool from_full_advsimd_struct_p = (from_flags == (VEC_ADVSIMD | VEC_STRUCT));
    bool to_partial_advsimd_struct_p = (to_flags == (VEC_ADVSIMD | VEC_STRUCT
  						   | VEC_PARTIAL));
  
    /* Don't allow changes between predicate modes and other modes.
       Only predicate registers can hold predicate modes and only
--- 26790,26799 ----
    bool from_pred_p = (from_flags & VEC_SVE_PRED);
    bool to_pred_p = (to_flags & VEC_SVE_PRED);
  
    bool to_partial_advsimd_struct_p = (to_flags == (VEC_ADVSIMD | VEC_STRUCT
  						   | VEC_PARTIAL));
+   bool from_partial_advsimd_struct_p = (from_flags == (VEC_ADVSIMD | VEC_STRUCT
+ 						   | VEC_PARTIAL));
  
    /* Don't allow changes between predicate modes and other modes.
       Only predicate registers can hold predicate modes and only
*************** aarch64_can_change_mode_class (machine_m
*** 26497,26505 ****
  	  || GET_MODE_UNIT_SIZE (from) != GET_MODE_UNIT_SIZE (to)))
      return false;
  
!   /* Don't allow changes between partial and full Advanced SIMD structure
!      modes.  */
!   if (from_full_advsimd_struct_p && to_partial_advsimd_struct_p)
      return false;
  
    if (maybe_ne (BITS_PER_SVE_VECTOR, 128u))
--- 26815,26824 ----
  	  || GET_MODE_UNIT_SIZE (from) != GET_MODE_UNIT_SIZE (to)))
      return false;
  
!   /* Don't allow changes between partial and other registers only if
!      one is a normal SIMD register, allow only if not larger than 64-bit.  */
!   if ((to_partial_advsimd_struct_p ^ from_partial_advsimd_struct_p)
!       && (known_gt (GET_MODE_SIZE (to), 8) || known_gt (GET_MODE_SIZE (to), 8)))
      return false;
  
    if (maybe_ne (BITS_PER_SVE_VECTOR, 128u))
*************** currently_supported_simd_type (tree t, t
*** 26647,26653 ****
  static int
  aarch64_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
  					struct cgraph_simd_clone *clonei,
! 					tree base_type, int num)
  {
    tree t, ret_type;
    unsigned int elt_bits, count;
--- 26966,26973 ----
  static int
  aarch64_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
  					struct cgraph_simd_clone *clonei,
! 					tree base_type, int num,
! 					bool explicit_p)
  {
    tree t, ret_type;
    unsigned int elt_bits, count;
*************** aarch64_simd_clone_compute_vecsize_and_s
*** 26665,26672 ****
  	  || const_simdlen > 1024
  	  || (const_simdlen & (const_simdlen - 1)) != 0))
      {
!       warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		  "unsupported simdlen %wd", const_simdlen);
        return 0;
      }
  
--- 26985,26993 ----
  	  || const_simdlen > 1024
  	  || (const_simdlen & (const_simdlen - 1)) != 0))
      {
!       if (explicit_p)
! 	warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		    "unsupported simdlen %wd", const_simdlen);
        return 0;
      }
  
*************** aarch64_simd_clone_compute_vecsize_and_s
*** 26674,26680 ****
    if (TREE_CODE (ret_type) != VOID_TYPE
        && !currently_supported_simd_type (ret_type, base_type))
      {
!       if (TYPE_SIZE (ret_type) != TYPE_SIZE (base_type))
  	warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
  		    "GCC does not currently support mixed size types "
  		    "for %<simd%> functions");
--- 26995,27003 ----
    if (TREE_CODE (ret_type) != VOID_TYPE
        && !currently_supported_simd_type (ret_type, base_type))
      {
!       if (!explicit_p)
! 	;
!       else if (TYPE_SIZE (ret_type) != TYPE_SIZE (base_type))
  	warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
  		    "GCC does not currently support mixed size types "
  		    "for %<simd%> functions");
*************** aarch64_simd_clone_compute_vecsize_and_s
*** 26701,26707 ****
        if (clonei->args[i].arg_type != SIMD_CLONE_ARG_TYPE_UNIFORM
  	  && !currently_supported_simd_type (arg_type, base_type))
  	{
! 	  if (TYPE_SIZE (arg_type) != TYPE_SIZE (base_type))
  	    warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
  			"GCC does not currently support mixed size types "
  			"for %<simd%> functions");
--- 27024,27032 ----
        if (clonei->args[i].arg_type != SIMD_CLONE_ARG_TYPE_UNIFORM
  	  && !currently_supported_simd_type (arg_type, base_type))
  	{
! 	  if (!explicit_p)
! 	    ;
! 	  else if (TYPE_SIZE (arg_type) != TYPE_SIZE (base_type))
  	    warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
  			"GCC does not currently support mixed size types "
  			"for %<simd%> functions");
*************** aarch64_simd_clone_compute_vecsize_and_s
*** 26731,26739 ****
        if (clonei->simdlen.is_constant (&const_simdlen)
  	  && maybe_ne (vec_bits, 64U) && maybe_ne (vec_bits, 128U))
  	{
! 	  warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		      "GCC does not currently support simdlen %wd for type %qT",
! 		      const_simdlen, base_type);
  	  return 0;
  	}
      }
--- 27056,27066 ----
        if (clonei->simdlen.is_constant (&const_simdlen)
  	  && maybe_ne (vec_bits, 64U) && maybe_ne (vec_bits, 128U))
  	{
! 	  if (explicit_p)
! 	    warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 			"GCC does not currently support simdlen %wd for "
! 			"type %qT",
! 			const_simdlen, base_type);
  	  return 0;
  	}
      }
*************** aarch64_stack_protect_guard (void)
*** 26818,26856 ****
    return NULL_TREE;
  }
  
- /* Return the diagnostic message string if conversion from FROMTYPE to
-    TOTYPE is not allowed, NULL otherwise.  */
- 
- static const char *
- aarch64_invalid_conversion (const_tree fromtype, const_tree totype)
- {
-   if (element_mode (fromtype) != element_mode (totype))
-     {
-       /* Do no allow conversions to/from BFmode scalar types.  */
-       if (TYPE_MODE (fromtype) == BFmode)
- 	return N_("invalid conversion from type %<bfloat16_t%>");
-       if (TYPE_MODE (totype) == BFmode)
- 	return N_("invalid conversion to type %<bfloat16_t%>");
-     }
- 
-   /* Conversion allowed.  */
-   return NULL;
- }
- 
- /* Return the diagnostic message string if the unary operation OP is
-    not permitted on TYPE, NULL otherwise.  */
- 
- static const char *
- aarch64_invalid_unary_op (int op, const_tree type)
- {
-   /* Reject all single-operand operations on BFmode except for &.  */
-   if (element_mode (type) == BFmode && op != ADDR_EXPR)
-     return N_("operation not permitted on type %<bfloat16_t%>");
- 
-   /* Operation allowed.  */
-   return NULL;
- }
- 
  /* Return the diagnostic message string if the binary operation OP is
     not permitted on TYPE1 and TYPE2, NULL otherwise.  */
  
--- 27145,27150 ----
*************** static const char *
*** 26858,26868 ****
  aarch64_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1,
  			   const_tree type2)
  {
-   /* Reject all 2-operand operations on BFmode.  */
-   if (element_mode (type1) == BFmode
-       || element_mode (type2) == BFmode)
-     return N_("operation not permitted on type %<bfloat16_t%>");
- 
    if (VECTOR_TYPE_P (type1)
        && VECTOR_TYPE_P (type2)
        && !TYPE_INDIVISIBLE_P (type1)
--- 27152,27157 ----
*************** aarch64_file_end_indicate_exec_stack ()
*** 26895,26904 ****
    file_end_indicate_exec_stack ();
  
    unsigned feature_1_and = 0;
!   if (aarch64_bti_enabled ())
      feature_1_and |= GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
  
!   if (aarch64_ra_sign_scope != AARCH64_FUNCTION_NONE)
      feature_1_and |= GNU_PROPERTY_AARCH64_FEATURE_1_PAC;
  
    if (feature_1_and)
--- 27184,27193 ----
    file_end_indicate_exec_stack ();
  
    unsigned feature_1_and = 0;
!   if (aarch_bti_enabled ())
      feature_1_and |= GNU_PROPERTY_AARCH64_FEATURE_1_BTI;
  
!   if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE)
      feature_1_and |= GNU_PROPERTY_AARCH64_FEATURE_1_PAC;
  
    if (feature_1_and)
*************** aarch64_libgcc_floating_mode_supported_p
*** 27459,27470 ****
  #undef TARGET_MANGLE_TYPE
  #define TARGET_MANGLE_TYPE aarch64_mangle_type
  
- #undef TARGET_INVALID_CONVERSION
- #define TARGET_INVALID_CONVERSION aarch64_invalid_conversion
- 
- #undef TARGET_INVALID_UNARY_OP
- #define TARGET_INVALID_UNARY_OP aarch64_invalid_unary_op
- 
  #undef TARGET_INVALID_BINARY_OP
  #define TARGET_INVALID_BINARY_OP aarch64_invalid_binary_op
  
--- 27748,27753 ----
*************** aarch64_libgcc_floating_mode_supported_p
*** 27496,27504 ****
  #undef TARGET_OFFLOAD_OPTIONS
  #define TARGET_OFFLOAD_OPTIONS aarch64_offload_options
  
- #undef TARGET_OPTION_SAVE
- #define TARGET_OPTION_SAVE aarch64_option_save
- 
  #undef TARGET_OPTION_RESTORE
  #define TARGET_OPTION_RESTORE aarch64_option_restore
  
--- 27779,27784 ----
*************** aarch64_libgcc_floating_mode_supported_p
*** 27520,27531 ****
--- 27800,27817 ----
  #undef TARGET_SCHED_REASSOCIATION_WIDTH
  #define TARGET_SCHED_REASSOCIATION_WIDTH aarch64_reassociation_width
  
+ #undef TARGET_DWARF_FRAME_REG_MODE
+ #define TARGET_DWARF_FRAME_REG_MODE aarch64_dwarf_frame_reg_mode
+ 
  #undef TARGET_PROMOTED_TYPE
  #define TARGET_PROMOTED_TYPE aarch64_promoted_type
  
  #undef TARGET_SECONDARY_RELOAD
  #define TARGET_SECONDARY_RELOAD aarch64_secondary_reload
  
+ #undef TARGET_SECONDARY_MEMORY_NEEDED
+ #define TARGET_SECONDARY_MEMORY_NEEDED aarch64_secondary_memory_needed
+ 
  #undef TARGET_SHIFT_TRUNCATION_MASK
  #define TARGET_SHIFT_TRUNCATION_MASK aarch64_shift_truncation_mask
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 27623,27632 ****
  #undef TARGET_VECTORIZE_BUILTINS
  #define TARGET_VECTORIZE_BUILTINS
  
- #undef TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
- #define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION \
-   aarch64_builtin_vectorized_function
- 
  #undef TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES
  #define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES \
    aarch64_autovectorize_vector_modes
--- 27909,27914 ----
*************** aarch64_libgcc_floating_mode_supported_p
*** 27646,27651 ****
--- 27928,27937 ----
  #undef TARGET_MAX_ANCHOR_OFFSET
  #define TARGET_MAX_ANCHOR_OFFSET 4095
  
+ #undef TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT
+ #define TARGET_VECTORIZE_PREFERRED_DIV_AS_SHIFTS_OVER_MULT \
+   aarch64_vectorize_preferred_div_as_shifts_over_mult
+ 
  #undef TARGET_VECTOR_ALIGNMENT
  #define TARGET_VECTOR_ALIGNMENT aarch64_simd_vector_alignment
  
*************** aarch64_libgcc_floating_mode_supported_p
*** 27823,27828 ****
--- 28109,28117 ----
  #undef TARGET_HAVE_SHADOW_CALL_STACK
  #define TARGET_HAVE_SHADOW_CALL_STACK true
  
+ #undef TARGET_CONST_ANCHOR
+ #define TARGET_CONST_ANCHOR 0x1000000
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-aarch64.h"
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64.h gcc-13.1.0/gcc/config/aarch64/aarch64.h
*** gcc-12.2.0/gcc/config/aarch64/aarch64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Machine description for AArch64 architecture.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 22,35 ****
  #ifndef GCC_AARCH64_H
  #define GCC_AARCH64_H
  
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS()	\
    aarch64_cpu_cpp_builtins (pfile)
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS aarch64_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO aarch64_d_register_target_info
- 
  
  
  #define REGISTER_TARGET_PRAGMAS() aarch64_register_pragmas ()
--- 22,42 ----
  #ifndef GCC_AARCH64_H
  #define GCC_AARCH64_H
  
+ /* Make these flags read-only so that all uses go via
+    aarch64_set_asm_isa_flags.  */
+ #ifndef GENERATOR_FILE
+ #undef aarch64_asm_isa_flags
+ #define aarch64_asm_isa_flags \
+   ((aarch64_feature_flags) global_options.x_aarch64_asm_isa_flags)
+ #undef aarch64_isa_flags
+ #define aarch64_isa_flags \
+   ((aarch64_feature_flags) global_options.x_aarch64_isa_flags)
+ #endif
+ 
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS()	\
    aarch64_cpu_cpp_builtins (pfile)
  
  
  
  #define REGISTER_TARGET_PRAGMAS() aarch64_register_pragmas ()
***************
*** 55,62 ****
  
  /* AdvSIMD is supported in the default configuration, unless disabled by
     -mgeneral-regs-only or by the +nosimd extension.  */
! #define TARGET_SIMD (!TARGET_GENERAL_REGS_ONLY && AARCH64_ISA_SIMD)
! #define TARGET_FLOAT (!TARGET_GENERAL_REGS_ONLY && AARCH64_ISA_FP)
  
  #define UNITS_PER_WORD		8
  
--- 62,69 ----
  
  /* AdvSIMD is supported in the default configuration, unless disabled by
     -mgeneral-regs-only or by the +nosimd extension.  */
! #define TARGET_SIMD (AARCH64_ISA_SIMD)
! #define TARGET_FLOAT (AARCH64_ISA_FP)
  
  #define UNITS_PER_WORD		8
  
***************
*** 148,285 ****
  
  #define PCC_BITFIELD_TYPE_MATTERS	1
  
! /* Major revision number of the ARM Architecture implemented by the target.  */
! extern unsigned aarch64_architecture_version;
! 
! /* Instruction tuning/selection flags.  */
! 
! /* Bit values used to identify processor capabilities.  */
! #define AARCH64_FL_SIMD       (1 << 0)	/* Has SIMD instructions.  */
! #define AARCH64_FL_FP         (1 << 1)	/* Has FP.  */
! #define AARCH64_FL_CRYPTO     (1 << 2)	/* Has crypto.  */
! #define AARCH64_FL_CRC        (1 << 3)	/* Has CRC.  */
! /* ARMv8.1-A architecture extensions.  */
! #define AARCH64_FL_LSE	      (1 << 4)  /* Has Large System Extensions.  */
! #define AARCH64_FL_RDMA       (1 << 5)  /* Has Round Double Multiply Add.  */
! #define AARCH64_FL_V8_1       (1 << 6)  /* Has ARMv8.1-A extensions.  */
! /* Armv8-R.  */
! #define AARCH64_FL_V8_R       (1 << 7)  /* Armv8-R AArch64.  */
! /* ARMv8.2-A architecture extensions.  */
! #define AARCH64_FL_V8_2       (1 << 8)  /* Has ARMv8.2-A features.  */
! #define AARCH64_FL_F16	      (1 << 9)  /* Has ARMv8.2-A FP16 extensions.  */
! #define AARCH64_FL_SVE        (1 << 10) /* Has Scalable Vector Extensions.  */
! /* ARMv8.3-A architecture extensions.  */
! #define AARCH64_FL_V8_3       (1 << 11)  /* Has ARMv8.3-A features.  */
! #define AARCH64_FL_RCPC       (1 << 12)  /* Has support for RCpc model.  */
! #define AARCH64_FL_DOTPROD    (1 << 13)  /* Has ARMv8.2-A Dot Product ins.  */
! /* New flags to split crypto into aes and sha2.  */
! #define AARCH64_FL_AES	      (1 << 14)  /* Has Crypto AES.  */
! #define AARCH64_FL_SHA2	      (1 << 15)  /* Has Crypto SHA2.  */
! /* ARMv8.4-A architecture extensions.  */
! #define AARCH64_FL_V8_4	      (1 << 16)  /* Has ARMv8.4-A features.  */
! #define AARCH64_FL_SM4	      (1 << 17)  /* Has ARMv8.4-A SM3 and SM4.  */
! #define AARCH64_FL_SHA3	      (1 << 18)  /* Has ARMv8.4-a SHA3 and SHA512.  */
! #define AARCH64_FL_F16FML     (1 << 19)  /* Has ARMv8.4-a FP16 extensions.  */
! #define AARCH64_FL_RCPC8_4    (1 << 20)  /* Has ARMv8.4-a RCPC extensions.  */
! 
! /* Statistical Profiling extensions.  */
! #define AARCH64_FL_PROFILE    (1 << 21)
! 
! /* ARMv8.5-A architecture extensions.  */
! #define AARCH64_FL_V8_5	      (1 << 22)  /* Has ARMv8.5-A features.  */
! #define AARCH64_FL_RNG	      (1 << 23)  /* ARMv8.5-A Random Number Insns.  */
! #define AARCH64_FL_MEMTAG     (1 << 24)  /* ARMv8.5-A Memory Tagging
! 					    Extensions.  */
! 
! /* Speculation Barrier instruction supported.  */
! #define AARCH64_FL_SB	      (1 << 25)
! 
! /* Speculative Store Bypass Safe instruction supported.  */
! #define AARCH64_FL_SSBS	      (1 << 26)
! 
! /* Execution and Data Prediction Restriction instructions supported.  */
! #define AARCH64_FL_PREDRES    (1 << 27)
! 
! /* SVE2 instruction supported.  */
! #define AARCH64_FL_SVE2		(1 << 28)
! #define AARCH64_FL_SVE2_AES	(1 << 29)
! #define AARCH64_FL_SVE2_SM4	(1 << 30)
! #define AARCH64_FL_SVE2_SHA3	(1ULL << 31)
! #define AARCH64_FL_SVE2_BITPERM	(1ULL << 32)
! 
! /* Transactional Memory Extension.  */
! #define AARCH64_FL_TME	      (1ULL << 33)  /* Has TME instructions.  */
! 
! /* Armv8.6-A architecture extensions.  */
! #define AARCH64_FL_V8_6	      (1ULL << 34)
! 
! /* 8-bit Integer Matrix Multiply (I8MM) extensions.  */
! #define AARCH64_FL_I8MM	      (1ULL << 35)
! 
! /* Brain half-precision floating-point (BFloat16) Extension.  */
! #define AARCH64_FL_BF16	      (1ULL << 36)
! 
! /* 32-bit Floating-point Matrix Multiply (F32MM) extensions.  */
! #define AARCH64_FL_F32MM      (1ULL << 37)
! 
! /* 64-bit Floating-point Matrix Multiply (F64MM) extensions.  */
! #define AARCH64_FL_F64MM      (1ULL << 38)
! 
! /* Flag Manipulation Instructions (FLAGM) extension.  */
! #define AARCH64_FL_FLAGM      (1ULL << 39)
! 
! /* Pointer Authentication (PAUTH) extension.  */
! #define AARCH64_FL_PAUTH      (1ULL << 40)
! 
! /* Armv9.0-A.  */
! #define AARCH64_FL_V9         (1ULL << 41)  /* Armv9.0-A Architecture.  */
! 
! /* 64-byte atomic load/store extensions.  */
! #define AARCH64_FL_LS64      (1ULL << 42)
! 
! /* Armv8.7-a architecture extensions.  */
! #define AARCH64_FL_V8_7       (1ULL << 43)
! 
! /* Hardware memory operation instructions.  */
! #define AARCH64_FL_MOPS       (1ULL << 44)
! 
! /* Armv8.8-a architecture extensions.  */
! #define AARCH64_FL_V8_8       (1ULL << 45)
! 
! /* Has FP and SIMD.  */
! #define AARCH64_FL_FPSIMD     (AARCH64_FL_FP | AARCH64_FL_SIMD)
  
! /* Has FP without SIMD.  */
! #define AARCH64_FL_FPQ16      (AARCH64_FL_FP & ~AARCH64_FL_SIMD)
  
! /* Architecture flags that effect instruction selection.  */
! #define AARCH64_FL_FOR_ARCH8       (AARCH64_FL_FPSIMD)
! #define AARCH64_FL_FOR_ARCH8_1			       \
!   (AARCH64_FL_FOR_ARCH8 | AARCH64_FL_LSE | AARCH64_FL_CRC \
!    | AARCH64_FL_RDMA | AARCH64_FL_V8_1)
! #define AARCH64_FL_FOR_ARCH8_2			\
!   (AARCH64_FL_FOR_ARCH8_1 | AARCH64_FL_V8_2)
! #define AARCH64_FL_FOR_ARCH8_3			\
!   (AARCH64_FL_FOR_ARCH8_2 | AARCH64_FL_V8_3 | AARCH64_FL_PAUTH)
! #define AARCH64_FL_FOR_ARCH8_4			\
!   (AARCH64_FL_FOR_ARCH8_3 | AARCH64_FL_V8_4 | AARCH64_FL_F16FML \
!    | AARCH64_FL_DOTPROD | AARCH64_FL_RCPC8_4 | AARCH64_FL_FLAGM)
! #define AARCH64_FL_FOR_ARCH8_5			\
!   (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_5	\
!    | AARCH64_FL_SB | AARCH64_FL_SSBS | AARCH64_FL_PREDRES)
! #define AARCH64_FL_FOR_ARCH8_6			\
!   (AARCH64_FL_FOR_ARCH8_5 | AARCH64_FL_V8_6 | AARCH64_FL_FPSIMD \
!    | AARCH64_FL_I8MM | AARCH64_FL_BF16)
! #define AARCH64_FL_FOR_ARCH8_7			\
!   (AARCH64_FL_FOR_ARCH8_6 | AARCH64_FL_V8_7 | AARCH64_FL_LS64)
! #define AARCH64_FL_FOR_ARCH8_8			\
!   (AARCH64_FL_FOR_ARCH8_7 | AARCH64_FL_V8_8 | AARCH64_FL_MOPS)
  
! #define AARCH64_FL_FOR_ARCH8_R     \
!   (AARCH64_FL_FOR_ARCH8_4 | AARCH64_FL_V8_R)
! #define AARCH64_FL_FOR_ARCH9       \
!   (AARCH64_FL_FOR_ARCH8_5 | AARCH64_FL_SVE | AARCH64_FL_SVE2 | AARCH64_FL_V9 \
!    | AARCH64_FL_F16)
  
  /* Macros to test ISA flags.  */
  
--- 155,181 ----
  
  #define PCC_BITFIELD_TYPE_MATTERS	1
  
! #ifndef USED_FOR_TARGET
  
! /* Define an enum of all features (architectures and extensions).  */
! enum class aarch64_feature : unsigned char {
! #define AARCH64_OPT_EXTENSION(A, IDENT, C, D, E, F) IDENT,
! #define AARCH64_ARCH(A, B, IDENT, D, E) IDENT,
! #include "aarch64-option-extensions.def"
! #include "aarch64-arches.def"
! };
  
! /* Define unique flags for each of the above.  */
! #define HANDLE(IDENT) \
!   constexpr auto AARCH64_FL_##IDENT \
!     = aarch64_feature_flags (1) << int (aarch64_feature::IDENT);
! #define AARCH64_OPT_EXTENSION(A, IDENT, C, D, E, F) HANDLE (IDENT)
! #define AARCH64_ARCH(A, B, IDENT, D, E) HANDLE (IDENT)
! #include "aarch64-option-extensions.def"
! #include "aarch64-arches.def"
! #undef HANDLE
  
! #endif
  
  /* Macros to test ISA flags.  */
  
*************** extern unsigned aarch64_architecture_ver
*** 289,295 ****
  #define AARCH64_ISA_SIMD           (aarch64_isa_flags & AARCH64_FL_SIMD)
  #define AARCH64_ISA_LSE		   (aarch64_isa_flags & AARCH64_FL_LSE)
  #define AARCH64_ISA_RDMA	   (aarch64_isa_flags & AARCH64_FL_RDMA)
! #define AARCH64_ISA_V8_2	   (aarch64_isa_flags & AARCH64_FL_V8_2)
  #define AARCH64_ISA_F16		   (aarch64_isa_flags & AARCH64_FL_F16)
  #define AARCH64_ISA_SVE            (aarch64_isa_flags & AARCH64_FL_SVE)
  #define AARCH64_ISA_SVE2	   (aarch64_isa_flags & AARCH64_FL_SVE2)
--- 185,191 ----
  #define AARCH64_ISA_SIMD           (aarch64_isa_flags & AARCH64_FL_SIMD)
  #define AARCH64_ISA_LSE		   (aarch64_isa_flags & AARCH64_FL_LSE)
  #define AARCH64_ISA_RDMA	   (aarch64_isa_flags & AARCH64_FL_RDMA)
! #define AARCH64_ISA_V8_2A	   (aarch64_isa_flags & AARCH64_FL_V8_2A)
  #define AARCH64_ISA_F16		   (aarch64_isa_flags & AARCH64_FL_F16)
  #define AARCH64_ISA_SVE            (aarch64_isa_flags & AARCH64_FL_SVE)
  #define AARCH64_ISA_SVE2	   (aarch64_isa_flags & AARCH64_FL_SVE2)
*************** extern unsigned aarch64_architecture_ver
*** 297,341 ****
  #define AARCH64_ISA_SVE2_BITPERM  (aarch64_isa_flags & AARCH64_FL_SVE2_BITPERM)
  #define AARCH64_ISA_SVE2_SHA3	   (aarch64_isa_flags & AARCH64_FL_SVE2_SHA3)
  #define AARCH64_ISA_SVE2_SM4	   (aarch64_isa_flags & AARCH64_FL_SVE2_SM4)
! #define AARCH64_ISA_V8_3	   (aarch64_isa_flags & AARCH64_FL_V8_3)
  #define AARCH64_ISA_DOTPROD	   (aarch64_isa_flags & AARCH64_FL_DOTPROD)
  #define AARCH64_ISA_AES	           (aarch64_isa_flags & AARCH64_FL_AES)
  #define AARCH64_ISA_SHA2	   (aarch64_isa_flags & AARCH64_FL_SHA2)
! #define AARCH64_ISA_V8_4	   (aarch64_isa_flags & AARCH64_FL_V8_4)
  #define AARCH64_ISA_SM4	           (aarch64_isa_flags & AARCH64_FL_SM4)
  #define AARCH64_ISA_SHA3	   (aarch64_isa_flags & AARCH64_FL_SHA3)
  #define AARCH64_ISA_F16FML	   (aarch64_isa_flags & AARCH64_FL_F16FML)
! #define AARCH64_ISA_RCPC8_4	   (aarch64_isa_flags & AARCH64_FL_RCPC8_4)
  #define AARCH64_ISA_RNG		   (aarch64_isa_flags & AARCH64_FL_RNG)
! #define AARCH64_ISA_V8_5	   (aarch64_isa_flags & AARCH64_FL_V8_5)
  #define AARCH64_ISA_TME		   (aarch64_isa_flags & AARCH64_FL_TME)
  #define AARCH64_ISA_MEMTAG	   (aarch64_isa_flags & AARCH64_FL_MEMTAG)
! #define AARCH64_ISA_V8_6	   (aarch64_isa_flags & AARCH64_FL_V8_6)
  #define AARCH64_ISA_I8MM	   (aarch64_isa_flags & AARCH64_FL_I8MM)
  #define AARCH64_ISA_F32MM	   (aarch64_isa_flags & AARCH64_FL_F32MM)
  #define AARCH64_ISA_F64MM	   (aarch64_isa_flags & AARCH64_FL_F64MM)
  #define AARCH64_ISA_BF16	   (aarch64_isa_flags & AARCH64_FL_BF16)
  #define AARCH64_ISA_SB		   (aarch64_isa_flags & AARCH64_FL_SB)
! #define AARCH64_ISA_V8_R	   (aarch64_isa_flags & AARCH64_FL_V8_R)
  #define AARCH64_ISA_PAUTH	   (aarch64_isa_flags & AARCH64_FL_PAUTH)
! #define AARCH64_ISA_V9		   (aarch64_isa_flags & AARCH64_FL_V9)
  #define AARCH64_ISA_MOPS	   (aarch64_isa_flags & AARCH64_FL_MOPS)
  #define AARCH64_ISA_LS64	   (aarch64_isa_flags & AARCH64_FL_LS64)
  
  /* Crypto is an optional extension to AdvSIMD.  */
! #define TARGET_CRYPTO (TARGET_SIMD && AARCH64_ISA_CRYPTO)
  
  /* SHA2 is an optional extension to AdvSIMD.  */
! #define TARGET_SHA2 ((TARGET_SIMD && AARCH64_ISA_SHA2) || TARGET_CRYPTO)
  
  /* SHA3 is an optional extension to AdvSIMD.  */
! #define TARGET_SHA3 (TARGET_SIMD && AARCH64_ISA_SHA3)
  
  /* AES is an optional extension to AdvSIMD.  */
! #define TARGET_AES ((TARGET_SIMD && AARCH64_ISA_AES) || TARGET_CRYPTO)
  
  /* SM is an optional extension to AdvSIMD.  */
! #define TARGET_SM4 (TARGET_SIMD && AARCH64_ISA_SM4)
  
  /* FP16FML is an optional extension to AdvSIMD.  */
  #define TARGET_F16FML (TARGET_SIMD && AARCH64_ISA_F16FML && TARGET_FP_F16INST)
--- 193,243 ----
  #define AARCH64_ISA_SVE2_BITPERM  (aarch64_isa_flags & AARCH64_FL_SVE2_BITPERM)
  #define AARCH64_ISA_SVE2_SHA3	   (aarch64_isa_flags & AARCH64_FL_SVE2_SHA3)
  #define AARCH64_ISA_SVE2_SM4	   (aarch64_isa_flags & AARCH64_FL_SVE2_SM4)
! #define AARCH64_ISA_V8_3A	   (aarch64_isa_flags & AARCH64_FL_V8_3A)
  #define AARCH64_ISA_DOTPROD	   (aarch64_isa_flags & AARCH64_FL_DOTPROD)
  #define AARCH64_ISA_AES	           (aarch64_isa_flags & AARCH64_FL_AES)
  #define AARCH64_ISA_SHA2	   (aarch64_isa_flags & AARCH64_FL_SHA2)
! #define AARCH64_ISA_V8_4A	   (aarch64_isa_flags & AARCH64_FL_V8_4A)
  #define AARCH64_ISA_SM4	           (aarch64_isa_flags & AARCH64_FL_SM4)
  #define AARCH64_ISA_SHA3	   (aarch64_isa_flags & AARCH64_FL_SHA3)
  #define AARCH64_ISA_F16FML	   (aarch64_isa_flags & AARCH64_FL_F16FML)
! #define AARCH64_ISA_RCPC	   (aarch64_isa_flags & AARCH64_FL_RCPC)
! #define AARCH64_ISA_RCPC8_4	   (aarch64_isa_flags & AARCH64_FL_V8_4A)
  #define AARCH64_ISA_RNG		   (aarch64_isa_flags & AARCH64_FL_RNG)
! #define AARCH64_ISA_V8_5A	   (aarch64_isa_flags & AARCH64_FL_V8_5A)
  #define AARCH64_ISA_TME		   (aarch64_isa_flags & AARCH64_FL_TME)
  #define AARCH64_ISA_MEMTAG	   (aarch64_isa_flags & AARCH64_FL_MEMTAG)
! #define AARCH64_ISA_V8_6A	   (aarch64_isa_flags & AARCH64_FL_V8_6A)
  #define AARCH64_ISA_I8MM	   (aarch64_isa_flags & AARCH64_FL_I8MM)
  #define AARCH64_ISA_F32MM	   (aarch64_isa_flags & AARCH64_FL_F32MM)
  #define AARCH64_ISA_F64MM	   (aarch64_isa_flags & AARCH64_FL_F64MM)
  #define AARCH64_ISA_BF16	   (aarch64_isa_flags & AARCH64_FL_BF16)
  #define AARCH64_ISA_SB		   (aarch64_isa_flags & AARCH64_FL_SB)
! #define AARCH64_ISA_V8R		   (aarch64_isa_flags & AARCH64_FL_V8R)
  #define AARCH64_ISA_PAUTH	   (aarch64_isa_flags & AARCH64_FL_PAUTH)
! #define AARCH64_ISA_V9A		   (aarch64_isa_flags & AARCH64_FL_V9A)
! #define AARCH64_ISA_V9_1A          (aarch64_isa_flags & AARCH64_FL_V9_1A)
! #define AARCH64_ISA_V9_2A          (aarch64_isa_flags & AARCH64_FL_V9_2A)
! #define AARCH64_ISA_V9_3A          (aarch64_isa_flags & AARCH64_FL_V9_3A)
  #define AARCH64_ISA_MOPS	   (aarch64_isa_flags & AARCH64_FL_MOPS)
  #define AARCH64_ISA_LS64	   (aarch64_isa_flags & AARCH64_FL_LS64)
+ #define AARCH64_ISA_CSSC	   (aarch64_isa_flags & AARCH64_FL_CSSC)
+ #define AARCH64_ISA_RCPC           (aarch64_isa_flags & AARCH64_FL_RCPC)
  
  /* Crypto is an optional extension to AdvSIMD.  */
! #define TARGET_CRYPTO (AARCH64_ISA_CRYPTO)
  
  /* SHA2 is an optional extension to AdvSIMD.  */
! #define TARGET_SHA2 (AARCH64_ISA_SHA2)
  
  /* SHA3 is an optional extension to AdvSIMD.  */
! #define TARGET_SHA3 (AARCH64_ISA_SHA3)
  
  /* AES is an optional extension to AdvSIMD.  */
! #define TARGET_AES (AARCH64_ISA_AES)
  
  /* SM is an optional extension to AdvSIMD.  */
! #define TARGET_SM4 (AARCH64_ISA_SM4)
  
  /* FP16FML is an optional extension to AdvSIMD.  */
  #define TARGET_F16FML (TARGET_SIMD && AARCH64_ISA_F16FML && TARGET_FP_F16INST)
*************** extern unsigned aarch64_architecture_ver
*** 347,387 ****
  #define TARGET_LSE (AARCH64_ISA_LSE)
  
  /* ARMv8.2-A FP16 support that can be enabled through the +fp16 extension.  */
! #define TARGET_FP_F16INST (TARGET_FLOAT && AARCH64_ISA_F16)
  #define TARGET_SIMD_F16INST (TARGET_SIMD && AARCH64_ISA_F16)
  
  /* Dot Product is an optional extension to AdvSIMD enabled through +dotprod.  */
! #define TARGET_DOTPROD (TARGET_SIMD && AARCH64_ISA_DOTPROD)
  
  /* SVE instructions, enabled through +sve.  */
! #define TARGET_SVE (!TARGET_GENERAL_REGS_ONLY && AARCH64_ISA_SVE)
  
  /* SVE2 instructions, enabled through +sve2.  */
! #define TARGET_SVE2 (TARGET_SVE && AARCH64_ISA_SVE2)
  
  /* SVE2 AES instructions, enabled through +sve2-aes.  */
! #define TARGET_SVE2_AES (TARGET_SVE2 && AARCH64_ISA_SVE2_AES)
  
  /* SVE2 BITPERM instructions, enabled through +sve2-bitperm.  */
! #define TARGET_SVE2_BITPERM (TARGET_SVE2 && AARCH64_ISA_SVE2_BITPERM)
  
  /* SVE2 SHA3 instructions, enabled through +sve2-sha3.  */
! #define TARGET_SVE2_SHA3 (TARGET_SVE2 && AARCH64_ISA_SVE2_SHA3)
  
  /* SVE2 SM4 instructions, enabled through +sve2-sm4.  */
! #define TARGET_SVE2_SM4 (TARGET_SVE2 && AARCH64_ISA_SVE2_SM4)
  
  /* ARMv8.3-A features.  */
! #define TARGET_ARMV8_3	(AARCH64_ISA_V8_3)
  
  /* Javascript conversion instruction from Armv8.3-a.  */
! #define TARGET_JSCVT	(TARGET_FLOAT && AARCH64_ISA_V8_3)
  
  /* Armv8.3-a Complex number extension to AdvSIMD extensions.  */
  #define TARGET_COMPLEX (TARGET_SIMD && TARGET_ARMV8_3)
  
  /* Floating-point rounding instructions from Armv8.5-a.  */
! #define TARGET_FRINT (AARCH64_ISA_V8_5 && TARGET_FLOAT)
  
  /* TME instructions are enabled.  */
  #define TARGET_TME (AARCH64_ISA_TME)
--- 249,289 ----
  #define TARGET_LSE (AARCH64_ISA_LSE)
  
  /* ARMv8.2-A FP16 support that can be enabled through the +fp16 extension.  */
! #define TARGET_FP_F16INST (AARCH64_ISA_F16)
  #define TARGET_SIMD_F16INST (TARGET_SIMD && AARCH64_ISA_F16)
  
  /* Dot Product is an optional extension to AdvSIMD enabled through +dotprod.  */
! #define TARGET_DOTPROD (AARCH64_ISA_DOTPROD)
  
  /* SVE instructions, enabled through +sve.  */
! #define TARGET_SVE (AARCH64_ISA_SVE)
  
  /* SVE2 instructions, enabled through +sve2.  */
! #define TARGET_SVE2 (AARCH64_ISA_SVE2)
  
  /* SVE2 AES instructions, enabled through +sve2-aes.  */
! #define TARGET_SVE2_AES (AARCH64_ISA_SVE2_AES)
  
  /* SVE2 BITPERM instructions, enabled through +sve2-bitperm.  */
! #define TARGET_SVE2_BITPERM (AARCH64_ISA_SVE2_BITPERM)
  
  /* SVE2 SHA3 instructions, enabled through +sve2-sha3.  */
! #define TARGET_SVE2_SHA3 (AARCH64_ISA_SVE2_SHA3)
  
  /* SVE2 SM4 instructions, enabled through +sve2-sm4.  */
! #define TARGET_SVE2_SM4 (AARCH64_ISA_SVE2_SM4)
  
  /* ARMv8.3-A features.  */
! #define TARGET_ARMV8_3	(AARCH64_ISA_V8_3A)
  
  /* Javascript conversion instruction from Armv8.3-a.  */
! #define TARGET_JSCVT	(TARGET_FLOAT && AARCH64_ISA_V8_3A)
  
  /* Armv8.3-a Complex number extension to AdvSIMD extensions.  */
  #define TARGET_COMPLEX (TARGET_SIMD && TARGET_ARMV8_3)
  
  /* Floating-point rounding instructions from Armv8.5-a.  */
! #define TARGET_FRINT (AARCH64_ISA_V8_5A && TARGET_FLOAT)
  
  /* TME instructions are enabled.  */
  #define TARGET_TME (AARCH64_ISA_TME)
*************** extern unsigned aarch64_architecture_ver
*** 390,408 ****
  #define TARGET_RNG (AARCH64_ISA_RNG)
  
  /* Memory Tagging instructions optional to Armv8.5 enabled through +memtag.  */
! #define TARGET_MEMTAG (AARCH64_ISA_V8_5 && AARCH64_ISA_MEMTAG)
  
  /* I8MM instructions are enabled through +i8mm.  */
  #define TARGET_I8MM (AARCH64_ISA_I8MM)
  #define TARGET_SVE_I8MM (TARGET_SVE && AARCH64_ISA_I8MM)
  
  /* F32MM instructions are enabled through +f32mm.  */
! #define TARGET_F32MM (AARCH64_ISA_F32MM)
! #define TARGET_SVE_F32MM (TARGET_SVE && AARCH64_ISA_F32MM)
  
  /* F64MM instructions are enabled through +f64mm.  */
! #define TARGET_F64MM (AARCH64_ISA_F64MM)
! #define TARGET_SVE_F64MM (TARGET_SVE && AARCH64_ISA_F64MM)
  
  /* BF16 instructions are enabled through +bf16.  */
  #define TARGET_BF16_FP (AARCH64_ISA_BF16)
--- 292,308 ----
  #define TARGET_RNG (AARCH64_ISA_RNG)
  
  /* Memory Tagging instructions optional to Armv8.5 enabled through +memtag.  */
! #define TARGET_MEMTAG (AARCH64_ISA_V8_5A && AARCH64_ISA_MEMTAG)
  
  /* I8MM instructions are enabled through +i8mm.  */
  #define TARGET_I8MM (AARCH64_ISA_I8MM)
  #define TARGET_SVE_I8MM (TARGET_SVE && AARCH64_ISA_I8MM)
  
  /* F32MM instructions are enabled through +f32mm.  */
! #define TARGET_SVE_F32MM (AARCH64_ISA_F32MM)
  
  /* F64MM instructions are enabled through +f64mm.  */
! #define TARGET_SVE_F64MM (AARCH64_ISA_F64MM)
  
  /* BF16 instructions are enabled through +bf16.  */
  #define TARGET_BF16_FP (AARCH64_ISA_BF16)
*************** extern unsigned aarch64_architecture_ver
*** 412,423 ****
--- 312,331 ----
  /* PAUTH instructions are enabled through +pauth.  */
  #define TARGET_PAUTH (AARCH64_ISA_PAUTH)
  
+ /* BTI instructions exist from Armv8.5-a onwards.  Their automatic use is
+    enabled through -mbranch-protection by using NOP-space instructions,
+    but this TARGET_ is used for defining BTI-related ACLE things.  */
+ #define TARGET_BTI (AARCH64_ISA_V8_5A)
+ 
  /* MOPS instructions are enabled through +mops.  */
  #define TARGET_MOPS (AARCH64_ISA_MOPS)
  
  /* LS64 instructions are enabled through +ls64.  */
  #define TARGET_LS64 (AARCH64_ISA_LS64)
  
+ /* CSSC instructions are enabled through +cssc.  */
+ #define TARGET_CSSC (AARCH64_ISA_CSSC)
+ 
  /* Make sure this is always defined so we don't have to check for ifdefs
     but rather use normal ifs.  */
  #ifndef TARGET_FIX_ERR_A53_835769_DEFAULT
*************** extern unsigned aarch64_architecture_ver
*** 430,435 ****
--- 338,350 ----
  /* SB instruction is enabled through +sb.  */
  #define TARGET_SB (AARCH64_ISA_SB)
  
+ /* RCPC loads from Armv8.3-a.  */
+ #define TARGET_RCPC (AARCH64_ISA_RCPC)
+ 
+ /* The RCPC2 extensions from Armv8.4-a that allow immediate offsets to LDAPR
+    and sign-extending versions.*/
+ #define TARGET_RCPC2 (AARCH64_ISA_RCPC8_4)
+ 
  /* Apply the workaround for Cortex-A53 erratum 835769.  */
  #define TARGET_FIX_ERR_A53_835769	\
    ((aarch64_fix_a53_err835769 == 2)	\
*************** extern unsigned aarch64_architecture_ver
*** 634,645 ****
  #define DWARF_FRAME_REGISTERS           (DWARF_ALT_FRAME_RETURN_COLUMN + 1)
  
  
! #define DBX_REGISTER_NUMBER(REGNO)	aarch64_dbx_register_number (REGNO)
  /* Provide a definition of DWARF_FRAME_REGNUM here so that fallback unwinders
     can use DWARF_ALT_FRAME_RETURN_COLUMN defined below.  This is just the same
     as the default definition in dwarf2out.cc.  */
  #undef DWARF_FRAME_REGNUM
! #define DWARF_FRAME_REGNUM(REGNO)	DBX_REGISTER_NUMBER (REGNO)
  
  #define DWARF_FRAME_RETURN_COLUMN	DWARF_FRAME_REGNUM (LR_REGNUM)
  
--- 549,560 ----
  #define DWARF_FRAME_REGISTERS           (DWARF_ALT_FRAME_RETURN_COLUMN + 1)
  
  
! #define DEBUGGER_REGNO(REGNO)	aarch64_debugger_regno (REGNO)
  /* Provide a definition of DWARF_FRAME_REGNUM here so that fallback unwinders
     can use DWARF_ALT_FRAME_RETURN_COLUMN defined below.  This is just the same
     as the default definition in dwarf2out.cc.  */
  #undef DWARF_FRAME_REGNUM
! #define DWARF_FRAME_REGNUM(REGNO)	DEBUGGER_REGNO (REGNO)
  
  #define DWARF_FRAME_RETURN_COLUMN	DWARF_FRAME_REGNUM (LR_REGNUM)
  
*************** extern unsigned aarch64_architecture_ver
*** 673,682 ****
  #define EH_RETURN_STACKADJ_RTX	gen_rtx_REG (Pmode, R4_REGNUM)
  #define EH_RETURN_HANDLER_RTX  aarch64_eh_return_handler_rtx ()
  
- /* Don't use __builtin_setjmp until we've defined it.  */
- #undef DONT_USE_BUILTIN_SETJMP
- #define DONT_USE_BUILTIN_SETJMP 1
- 
  #undef TARGET_COMPUTE_FRAME_LAYOUT
  #define TARGET_COMPUTE_FRAME_LAYOUT aarch64_layout_frame
  
--- 588,593 ----
*************** enum target_cpus
*** 813,828 ****
    TARGET_CPU_generic
  };
  
- /* Define how many bits are used to represent the CPU in TARGET_CPU_DEFAULT.
-    This needs to be big enough to fit the value of TARGET_CPU_generic.
-    All bits after this are used to represent the AARCH64_CPU_DEFAULT_FLAGS.  */
- #define TARGET_CPU_NBITS 8
- #define TARGET_CPU_MASK ((1 << TARGET_CPU_NBITS) - 1)
- 
  /* If there is no CPU defined at configure, use generic as default.  */
  #ifndef TARGET_CPU_DEFAULT
! #define TARGET_CPU_DEFAULT \
!   (TARGET_CPU_generic | (AARCH64_CPU_DEFAULT_FLAGS << TARGET_CPU_NBITS))
  #endif
  
  /* If inserting NOP before a mult-accumulate insn remember to adjust the
--- 724,732 ----
    TARGET_CPU_generic
  };
  
  /* If there is no CPU defined at configure, use generic as default.  */
  #ifndef TARGET_CPU_DEFAULT
! # define TARGET_CPU_DEFAULT TARGET_CPU_generic
  #endif
  
  /* If inserting NOP before a mult-accumulate insn remember to adjust the
*************** struct GTY (()) aarch64_frame
*** 956,961 ****
--- 860,866 ----
    bool is_scs_enabled;
  };
  
+ #ifdef hash_set_h
  typedef struct GTY (()) machine_function
  {
    struct aarch64_frame frame;
*************** typedef struct GTY (()) machine_function
*** 964,971 ****
--- 869,880 ----
    /* One entry for each general purpose register.  */
    rtx call_via[SP_REGNUM];
    bool label_is_assembled;
+   /* A set of all decls that have been passed to a vld1 intrinsic in the
+      current function.  This is used to help guide the vector cost model.  */
+   hash_set<tree> *vector_load_decls;
  } machine_function;
  #endif
+ #endif
  
  /* Which ABI to use.  */
  enum aarch64_abi_type
*************** extern enum aarch64_code_model aarch64_c
*** 1274,1287 ****
  #define ENDIAN_LANE_N(NUNITS, N) \
    (BYTES_BIG_ENDIAN ? NUNITS - 1 - N : N)
  
  /* Support for configure-time --with-arch, --with-cpu and --with-tune.
     --with-arch and --with-cpu are ignored if either -mcpu or -march is used.
     --with-tune is ignored if either -mtune or -mcpu is used (but is not
!    affected by -march).  */
  #define OPTION_DEFAULT_SPECS				\
    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" },	\
    {"cpu",  "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" },   \
!   {"tune", "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}}"},
  
  #define MCPU_TO_MARCH_SPEC \
     " %{mcpu=*:-march=%:rewrite_mcpu(%{mcpu=*:%*})}"
--- 1183,1226 ----
  #define ENDIAN_LANE_N(NUNITS, N) \
    (BYTES_BIG_ENDIAN ? NUNITS - 1 - N : N)
  
+ /* Extra specs when building a native AArch64-hosted compiler.
+    Option rewriting rules based on host system.  */
+ #if defined(__aarch64__)
+ extern const char *host_detect_local_cpu (int argc, const char **argv);
+ #define HAVE_LOCAL_CPU_DETECT
+ # define EXTRA_SPEC_FUNCTIONS                                           \
+   { "local_cpu_detect", host_detect_local_cpu },                        \
+   MCPU_TO_MARCH_SPEC_FUNCTIONS
+ 
+ /* Rewrite -m{arch,cpu,tune}=native based on the host system information.
+    When rewriting -march=native convert it into an -mcpu option if no other
+    -mcpu or -mtune was given.  */
+ # define MCPU_MTUNE_NATIVE_SPECS                                        \
+    " %{march=native:%<march=native %:local_cpu_detect(%{mcpu=*|mtune=*:arch;:cpu})}"            \
+    " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"              \
+    " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
+ /* This will be used in OPTION_DEFAULT_SPECS below.
+    When GCC is configured with --with-tune we don't want to materialize an
+    implicit -mtune would prevent the rewriting of -march=native into
+    -mcpu=native as per the above rules.  */
+ #define CONFIG_TUNE_SPEC						\
+  { "tune", "%{!mcpu=*:%{!mtune=*:%{!march=native:-mtune=%(VALUE)}}}" },
+ #else
+ # define MCPU_MTUNE_NATIVE_SPECS ""
+ # define EXTRA_SPEC_FUNCTIONS MCPU_TO_MARCH_SPEC_FUNCTIONS
+ # define CONFIG_TUNE_SPEC                                                \
+   {"tune", "%{!mcpu=*:%{!mtune=*:-mtune=%(VALUE)}}"},
+ #endif
+ 
  /* Support for configure-time --with-arch, --with-cpu and --with-tune.
     --with-arch and --with-cpu are ignored if either -mcpu or -march is used.
     --with-tune is ignored if either -mtune or -mcpu is used (but is not
!    affected by -march, except in the -march=native case as per the
!    CONFIG_TUNE_SPEC above).  */
  #define OPTION_DEFAULT_SPECS				\
    {"arch", "%{!march=*:%{!mcpu=*:-march=%(VALUE)}}" },	\
    {"cpu",  "%{!march=*:%{!mcpu=*:-mcpu=%(VALUE)}}" },   \
!   CONFIG_TUNE_SPEC
  
  #define MCPU_TO_MARCH_SPEC \
     " %{mcpu=*:-march=%:rewrite_mcpu(%{mcpu=*:%*})}"
*************** extern const char *aarch64_rewrite_mcpu
*** 1290,1311 ****
  #define MCPU_TO_MARCH_SPEC_FUNCTIONS \
    { "rewrite_mcpu", aarch64_rewrite_mcpu },
  
- #if defined(__aarch64__)
- extern const char *host_detect_local_cpu (int argc, const char **argv);
- #define HAVE_LOCAL_CPU_DETECT
- # define EXTRA_SPEC_FUNCTIONS						\
-   { "local_cpu_detect", host_detect_local_cpu },			\
-   MCPU_TO_MARCH_SPEC_FUNCTIONS
- 
- # define MCPU_MTUNE_NATIVE_SPECS					\
-    " %{march=native:%<march=native %:local_cpu_detect(arch)}"		\
-    " %{mcpu=native:%<mcpu=native %:local_cpu_detect(cpu)}"		\
-    " %{mtune=native:%<mtune=native %:local_cpu_detect(tune)}"
- #else
- # define MCPU_MTUNE_NATIVE_SPECS ""
- # define EXTRA_SPEC_FUNCTIONS MCPU_TO_MARCH_SPEC_FUNCTIONS
- #endif
- 
  #define ASM_CPU_SPEC \
     MCPU_TO_MARCH_SPEC
  
--- 1229,1234 ----
*************** extern const char *host_detect_local_cpu
*** 1319,1327 ****
  extern GTY(()) tree aarch64_fp16_type_node;
  extern GTY(()) tree aarch64_fp16_ptr_type_node;
  
! /* This type is the user-visible __bf16, and a pointer to that type.  Defined
!    in aarch64-builtins.cc.  */
! extern GTY(()) tree aarch64_bf16_type_node;
  extern GTY(()) tree aarch64_bf16_ptr_type_node;
  
  /* The generic unwind code in libgcc does not initialize the frame pointer.
--- 1242,1249 ----
  extern GTY(()) tree aarch64_fp16_type_node;
  extern GTY(()) tree aarch64_fp16_ptr_type_node;
  
! /* Pointer to the user-visible __bf16 type.  __bf16 itself is generic
!    bfloat16_type_node.  Defined in aarch64-builtins.cc.  */
  extern GTY(()) tree aarch64_bf16_ptr_type_node;
  
  /* The generic unwind code in libgcc does not initialize the frame pointer.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64.md gcc-13.1.0/gcc/config/aarch64/aarch64.md
*** gcc-12.2.0/gcc/config/aarch64/aarch64.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 303,308 ****
--- 303,309 ----
      UNSPEC_TAG_SPACE		; Translate address to MTE tag address space.
      UNSPEC_LD1RO
      UNSPEC_SALT_ADDR
+     UNSPECV_PATCHABLE_AREA
  ])
  
  (define_c_enum "unspecv" [
***************
*** 347,355 ****
     ; must not operate on inactive inputs if doing so could induce a fault.
     (SVE_STRICT_GP 1)])
  
- ;; If further include files are added the defintion of MD_INCLUDES
- ;; must be updated.
- 
  (include "constraints.md")
  (include "predicates.md")
  (include "iterators.md")
--- 348,353 ----
***************
*** 373,380 ****
  ;; Attributes of the architecture required to support the instruction (or
  ;; alternative). This attribute is used to compute attribute "enabled", use type
  ;; "any" to enable an alternative in all cases.
  
! (define_enum "arches" [ any rcpc8_4 fp simd sve fp16])
  
  (define_enum_attr "arch" "arches" (const_string "any"))
  
--- 371,381 ----
  ;; Attributes of the architecture required to support the instruction (or
  ;; alternative). This attribute is used to compute attribute "enabled", use type
  ;; "any" to enable an alternative in all cases.
+ ;;
+ ;; As a convenience, "fp_q" means "fp" + the ability to move between
+ ;; Q registers and is equivalent to "simd".
  
! (define_enum "arches" [ any rcpc8_4 fp fp_q simd sve fp16])
  
  (define_enum_attr "arch" "arches" (const_string "any"))
  
***************
*** 402,408 ****
  	(and (eq_attr "arch" "fp")
  	     (match_test "TARGET_FLOAT"))
  
! 	(and (eq_attr "arch" "simd")
  	     (match_test "TARGET_SIMD"))
  
  	(and (eq_attr "arch" "fp16")
--- 403,409 ----
  	(and (eq_attr "arch" "fp")
  	     (match_test "TARGET_FLOAT"))
  
! 	(and (eq_attr "arch" "fp_q, simd")
  	     (match_test "TARGET_SIMD"))
  
  	(and (eq_attr "arch" "fp16")
***************
*** 890,896 ****
      if (aarch64_return_address_signing_enabled ()
  	&& (TARGET_PAUTH))
        {
! 	if (aarch64_ra_sign_key == AARCH64_KEY_B)
  	  ret = "retab";
  	else
  	  ret = "retaa";
--- 891,897 ----
      if (aarch64_return_address_signing_enabled ()
  	&& (TARGET_PAUTH))
        {
! 	if (aarch_ra_sign_key == AARCH_KEY_B)
  	  ret = "retab";
  	else
  	  ret = "retaa";
***************
*** 946,957 ****
  		      (const_int 1)))]
  )
  
! (define_insn "*tb<optab><mode>1"
    [(set (pc) (if_then_else
! 	      (EQL (zero_extract:DI (match_operand:GPI 0 "register_operand" "r")
! 				    (const_int 1)
! 				    (match_operand 1
! 				      "aarch64_simd_shift_imm_<mode>" "n"))
  		   (const_int 0))
  	     (label_ref (match_operand 2 "" ""))
  	     (pc)))
--- 947,975 ----
  		      (const_int 1)))]
  )
  
! (define_expand "tbranch_<code><mode>3"
    [(set (pc) (if_then_else
!               (EQL (match_operand:SHORT 0 "register_operand")
!                    (match_operand 1 "const0_operand"))
!               (label_ref (match_operand 2 ""))
!               (pc)))]
!   ""
! {
!   rtx bitvalue = gen_reg_rtx (<ZEROM>mode);
!   rtx reg = gen_lowpart (<ZEROM>mode, operands[0]);
!   rtx val = gen_int_mode (HOST_WIDE_INT_1U << UINTVAL (operands[1]), <MODE>mode);
!   emit_insn (gen_and<zerom>3 (bitvalue, reg, val));
!   operands[1] = const0_rtx;
!   operands[0] = aarch64_gen_compare_reg (<CODE>, bitvalue,
! 					 operands[1]);
! })
! 
! (define_insn "*tb<optab><ALLI:mode><GPI:mode>1"
!   [(set (pc) (if_then_else
! 	      (EQL (zero_extract:GPI (match_operand:ALLI 0 "register_operand" "r")
! 				     (const_int 1)
! 				     (match_operand 1
! 				       "aarch64_simd_shift_imm_<ALLI:mode>" "n"))
  		   (const_int 0))
  	     (label_ref (match_operand 2 "" ""))
  	     (pc)))
***************
*** 962,976 ****
        {
  	if (get_attr_far_branch (insn) == 1)
  	  return aarch64_gen_far_branch (operands, 2, "Ltb",
! 					 "<inv_tb>\\t%<w>0, %1, ");
  	else
  	  {
  	    operands[1] = GEN_INT (HOST_WIDE_INT_1U << UINTVAL (operands[1]));
! 	    return "tst\t%<w>0, %1\;<bcond>\t%l2";
  	  }
        }
      else
!       return "<tbz>\t%<w>0, %1, %l2";
    }
    [(set_attr "type" "branch")
     (set (attr "length")
--- 980,994 ----
        {
  	if (get_attr_far_branch (insn) == 1)
  	  return aarch64_gen_far_branch (operands, 2, "Ltb",
! 					 "<inv_tb>\\t%<ALLI:w>0, %1, ");
  	else
  	  {
  	    operands[1] = GEN_INT (HOST_WIDE_INT_1U << UINTVAL (operands[1]));
! 	    return "tst\t%<ALLI:w>0, %1\;<bcond>\t%l2";
  	  }
        }
      else
!       return "<tbz>\t%<ALLI:w>0, %1, %l2";
    }
    [(set_attr "type" "branch")
     (set (attr "length")
***************
*** 1198,1204 ****
  
  (define_insn "*mov<mode>_aarch64"
    [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r,r,    w,r  ,r,w, m,m,r,w,w")
! 	(match_operand:SHORT 1 "aarch64_mov_operand"  " r,M,D<hq>,Usv,m,m,rZ,w,w,r,w"))]
    "(register_operand (operands[0], <MODE>mode)
      || aarch64_reg_or_zero (operands[1], <MODE>mode))"
  {
--- 1216,1222 ----
  
  (define_insn "*mov<mode>_aarch64"
    [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r,r,    w,r  ,r,w, m,m,r,w,w")
! 	(match_operand:SHORT 1 "aarch64_mov_operand"  " r,M,D<hq>,Usv,m,m,rZ,w,w,rZ,w"))]
    "(register_operand (operands[0], <MODE>mode)
      || aarch64_reg_or_zero (operands[1], <MODE>mode))"
  {
***************
*** 1222,1232 ****
       case 7:
         return "str\t%<size>1, %0";
       case 8:
!        return "umov\t%w0, %1.<v>[0]";
       case 9:
!        return "dup\t%0.<Vallxd>, %w1";
       case 10:
!        return "dup\t%<Vetype>0, %1.<v>[0]";
       default:
         gcc_unreachable ();
       }
--- 1240,1250 ----
       case 7:
         return "str\t%<size>1, %0";
       case 8:
!        return TARGET_SIMD ? "umov\t%w0, %1.<v>[0]" : "fmov\t%w0, %s1";
       case 9:
!        return TARGET_SIMD ? "dup\t%0.<Vallxd>, %w1" : "fmov\t%s0, %w1";
       case 10:
!        return TARGET_SIMD ? "dup\t%<Vetype>0, %1.<v>[0]" : "fmov\t%s0, %s1";
       default:
         gcc_unreachable ();
       }
***************
*** 1234,1240 ****
    ;; The "mov_imm" type for CNT is just a placeholder.
    [(set_attr "type" "mov_reg,mov_imm,neon_move,mov_imm,load_4,load_4,store_4,
  		     store_4,neon_to_gp<q>,neon_from_gp<q>,neon_dup")
!    (set_attr "arch" "*,*,simd,sve,*,*,*,*,simd,simd,simd")]
  )
  
  (define_expand "mov<mode>"
--- 1252,1258 ----
    ;; The "mov_imm" type for CNT is just a placeholder.
    [(set_attr "type" "mov_reg,mov_imm,neon_move,mov_imm,load_4,load_4,store_4,
  		     store_4,neon_to_gp<q>,neon_from_gp<q>,neon_dup")
!    (set_attr "arch" "*,*,simd,sve,*,*,*,*,*,*,*")]
  )
  
  (define_expand "mov<mode>"
***************
*** 1309,1324 ****
  )
  
  (define_insn_and_split "*movdi_aarch64"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r,r, r,w, m,m,   r,  r,  r, w,r,w, w")
! 	(match_operand:DI 1 "aarch64_mov_operand"  " r,r,k,N,M,n,Usv,m,m,rZ,w,Usw,Usa,Ush,rZ,w,w,Dd"))]
    "(register_operand (operands[0], DImode)
      || aarch64_reg_or_zero (operands[1], DImode))"
    "@
     mov\\t%x0, %x1
     mov\\t%0, %x1
     mov\\t%x0, %1
!    mov\\t%x0, %1
!    mov\\t%w0, %1
     #
     * return aarch64_output_sve_cnt_immediate (\"cnt\", \"%x0\", operands[1]);
     ldr\\t%x0, %1
--- 1327,1341 ----
  )
  
  (define_insn_and_split "*movdi_aarch64"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,k,r,r,r,r, r,w, m,m,   r,  r,  r, w,r,w, w")
! 	(match_operand:DI 1 "aarch64_mov_operand"  " r,r,k,O,n,Usv,m,m,rZ,w,Usw,Usa,Ush,rZ,w,w,Dd"))]
    "(register_operand (operands[0], DImode)
      || aarch64_reg_or_zero (operands[1], DImode))"
    "@
     mov\\t%x0, %x1
     mov\\t%0, %x1
     mov\\t%x0, %1
!    * return aarch64_is_mov_xn_imm (INTVAL (operands[1])) ? \"mov\\t%x0, %1\" : \"mov\\t%w0, %1\";
     #
     * return aarch64_output_sve_cnt_immediate (\"cnt\", \"%x0\", operands[1]);
     ldr\\t%x0, %1
***************
*** 1340,1350 ****
         DONE;
      }"
    ;; The "mov_imm" type for CNTD is just a placeholder.
!   [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,mov_imm,mov_imm,
  		     load_8,load_8,store_8,store_8,load_8,adr,adr,f_mcr,f_mrc,
  		     fmov,neon_move")
!    (set_attr "arch"   "*,*,*,*,*,*,sve,*,fp,*,fp,*,*,*,fp,fp,fp,simd")
!    (set_attr "length" "4,4,4,4,4,*,  4,4, 4,4, 4,8,4,4, 4, 4, 4,   4")]
  )
  
  (define_insn "insv_imm<mode>"
--- 1357,1367 ----
         DONE;
      }"
    ;; The "mov_imm" type for CNTD is just a placeholder.
!   [(set_attr "type" "mov_reg,mov_reg,mov_reg,mov_imm,mov_imm,mov_imm,
  		     load_8,load_8,store_8,store_8,load_8,adr,adr,f_mcr,f_mrc,
  		     fmov,neon_move")
!    (set_attr "arch"   "*,*,*,*,*,sve,*,fp,*,fp,*,*,*,fp,fp,fp,simd")
!    (set_attr "length" "4,4,4,4,*,  4,4, 4,4, 4,8,4,4, 4, 4, 4,   4")]
  )
  
  (define_insn "insv_imm<mode>"
***************
*** 1396,1409 ****
  
  (define_insn "*movti_aarch64"
    [(set (match_operand:TI 0
! 	 "nonimmediate_operand"  "=   r,w,w, r,w,r,m,m,w,m")
  	(match_operand:TI 1
! 	 "aarch64_movti_operand" " rUti,Z,r, w,w,m,r,Z,m,w"))]
    "(register_operand (operands[0], TImode)
      || aarch64_reg_or_zero (operands[1], TImode))"
    "@
     #
     movi\\t%0.2d, #0
     #
     #
     mov\\t%0.16b, %1.16b
--- 1413,1427 ----
  
  (define_insn "*movti_aarch64"
    [(set (match_operand:TI 0
! 	 "nonimmediate_operand"  "=   r,w,w,w, r,w,r,m,m,w,m")
  	(match_operand:TI 1
! 	 "aarch64_movti_operand" " rUti,Z,Z,r, w,w,m,r,Z,m,w"))]
    "(register_operand (operands[0], TImode)
      || aarch64_reg_or_zero (operands[1], TImode))"
    "@
     #
     movi\\t%0.2d, #0
+    fmov\t%d0, xzr
     #
     #
     mov\\t%0.16b, %1.16b
***************
*** 1412,1422 ****
     stp\\txzr, xzr, %0
     ldr\\t%q0, %1
     str\\t%q1, %0"
!   [(set_attr "type" "multiple,neon_move,f_mcr,f_mrc,neon_logic_q, \
  		             load_16,store_16,store_16,\
                               load_16,store_16")
!    (set_attr "length" "8,4,8,8,4,4,4,4,4,4")
!    (set_attr "arch" "*,simd,*,*,simd,*,*,*,fp,fp")]
  )
  
  ;; Split a TImode register-register or register-immediate move into
--- 1430,1440 ----
     stp\\txzr, xzr, %0
     ldr\\t%q0, %1
     str\\t%q1, %0"
!   [(set_attr "type" "multiple,neon_move,f_mcr,f_mcr,f_mrc,neon_logic_q, \
  		             load_16,store_16,store_16,\
                               load_16,store_16")
!    (set_attr "length" "8,4,4,8,8,4,4,4,4,4,4")
!    (set_attr "arch" "*,simd,*,*,*,simd,*,*,*,fp,fp")]
  )
  
  ;; Split a TImode register-register or register-immediate move into
***************
*** 1455,1470 ****
  )
  
  (define_insn "*mov<mode>_aarch64"
!   [(set (match_operand:HFBF 0 "nonimmediate_operand" "=w,w  , w,?r,w,w  ,w  ,w,m,r,m ,r")
! 	(match_operand:HFBF 1 "general_operand"      "Y ,?rY,?r, w,w,Ufc,Uvi,m,w,m,rY,r"))]
    "TARGET_FLOAT && (register_operand (operands[0], <MODE>mode)
      || aarch64_reg_or_fp_zero (operands[1], <MODE>mode))"
    "@
     movi\\t%0.4h, #0
     fmov\\t%h0, %w1
     dup\\t%w0.4h, %w1
     umov\\t%w0, %1.h[0]
     mov\\t%0.h[0], %1.h[0]
     fmov\\t%h0, %1
     * return aarch64_output_scalar_simd_mov_immediate (operands[1], HImode);
     ldr\\t%h0, %1
--- 1473,1491 ----
  )
  
  (define_insn "*mov<mode>_aarch64"
!   [(set (match_operand:HFBF 0 "nonimmediate_operand" "=w,w  ,w ,w  ,?r,?r,w,w,w  ,w  ,w,m,r,m ,r")
! 	(match_operand:HFBF 1 "general_operand"      "Y ,?rY,?r,?rY, w, w,w,w,Ufc,Uvi,m,w,m,rY,r"))]
    "TARGET_FLOAT && (register_operand (operands[0], <MODE>mode)
      || aarch64_reg_or_fp_zero (operands[1], <MODE>mode))"
    "@
     movi\\t%0.4h, #0
     fmov\\t%h0, %w1
     dup\\t%w0.4h, %w1
+    fmov\\t%s0, %w1
     umov\\t%w0, %1.h[0]
+    fmov\\t%w0, %s1
     mov\\t%0.h[0], %1.h[0]
+    fmov\\t%s0, %s1
     fmov\\t%h0, %1
     * return aarch64_output_scalar_simd_mov_immediate (operands[1], HImode);
     ldr\\t%h0, %1
***************
*** 1472,1487 ****
     ldrh\\t%w0, %1
     strh\\t%w1, %0
     mov\\t%w0, %w1"
!   [(set_attr "type" "neon_move,f_mcr,neon_move,neon_to_gp, neon_move,fconsts, \
! 		     neon_move,f_loads,f_stores,load_4,store_4,mov_reg")
!    (set_attr "arch" "simd,fp16,simd,simd,simd,fp16,simd,*,*,*,*,*")]
  )
  
! (define_insn "*movsf_aarch64"
!   [(set (match_operand:SF 0 "nonimmediate_operand" "=w,w  ,?r,w,w  ,w  ,w,m,r,m ,r,r")
! 	(match_operand:SF 1 "general_operand"      "Y ,?rY, w,w,Ufc,Uvi,m,w,m,rY,r,M"))]
!   "TARGET_FLOAT && (register_operand (operands[0], SFmode)
!     || aarch64_reg_or_fp_zero (operands[1], SFmode))"
    "@
     movi\\t%0.2s, #0
     fmov\\t%s0, %w1
--- 1493,1509 ----
     ldrh\\t%w0, %1
     strh\\t%w1, %0
     mov\\t%w0, %w1"
!   [(set_attr "type" "neon_move,f_mcr,neon_move,f_mcr,neon_to_gp,f_mrc,
! 		     neon_move,fmov,fconsts,neon_move,f_loads,f_stores,
! 		     load_4,store_4,mov_reg")
!    (set_attr "arch" "simd,fp16,simd,*,simd,*,simd,*,fp16,simd,*,*,*,*,*")]
  )
  
! (define_insn "*mov<mode>_aarch64"
!   [(set (match_operand:SFD 0 "nonimmediate_operand" "=w,w  ,?r,w,w  ,w  ,w,m,r,m ,r,r")
! 	(match_operand:SFD 1 "general_operand"      "Y ,?rY, w,w,Ufc,Uvi,m,w,m,rY,r,M"))]
!   "TARGET_FLOAT && (register_operand (operands[0], <MODE>mode)
!     || aarch64_reg_or_fp_zero (operands[1], <MODE>mode))"
    "@
     movi\\t%0.2s, #0
     fmov\\t%s0, %w1
***************
*** 1501,1511 ****
     (set_attr "arch" "simd,*,*,*,*,simd,*,*,*,*,*,*")]
  )
  
! (define_insn "*movdf_aarch64"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=w, w  ,?r,w,w  ,w  ,w,m,r,m ,r,r")
! 	(match_operand:DF 1 "general_operand"      "Y , ?rY, w,w,Ufc,Uvi,m,w,m,rY,r,N"))]
!   "TARGET_FLOAT && (register_operand (operands[0], DFmode)
!     || aarch64_reg_or_fp_zero (operands[1], DFmode))"
    "@
     movi\\t%d0, #0
     fmov\\t%d0, %x1
--- 1523,1533 ----
     (set_attr "arch" "simd,*,*,*,*,simd,*,*,*,*,*,*")]
  )
  
! (define_insn "*mov<mode>_aarch64"
!   [(set (match_operand:DFD 0 "nonimmediate_operand" "=w, w  ,?r,w,w  ,w  ,w,m,r,m ,r,r")
! 	(match_operand:DFD 1 "general_operand"      "Y , ?rY, w,w,Ufc,Uvi,m,w,m,rY,r,O"))]
!   "TARGET_FLOAT && (register_operand (operands[0], <MODE>mode)
!     || aarch64_reg_or_fp_zero (operands[1], <MODE>mode))"
    "@
     movi\\t%d0, #0
     fmov\\t%d0, %x1
***************
*** 1518,1524 ****
     ldr\\t%x0, %1
     str\\t%x1, %0
     mov\\t%x0, %x1
!    mov\\t%x0, %1"
    [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconstd,neon_move,\
  		     f_loadd,f_stored,load_8,store_8,mov_reg,\
  		     fconstd")
--- 1540,1546 ----
     ldr\\t%x0, %1
     str\\t%x1, %0
     mov\\t%x0, %x1
!    * return aarch64_is_mov_xn_imm (INTVAL (operands[1])) ? \"mov\\t%x0, %1\" : \"mov\\t%w0, %1\";"
    [(set_attr "type" "neon_move,f_mcr,f_mrc,fmov,fconstd,neon_move,\
  		     f_loadd,f_stored,load_8,store_8,mov_reg,\
  		     fconstd")
***************
*** 1527,1536 ****
  
  (define_split
    [(set (match_operand:GPF_HF 0 "nonimmediate_operand")
! 	(match_operand:GPF_HF 1 "general_operand"))]
    "can_create_pseudo_p ()
     && !aarch64_can_const_movi_rtx_p (operands[1], <MODE>mode)
     && !aarch64_float_const_representable_p (operands[1])
     &&  aarch64_float_const_rtx_p (operands[1])"
    [(const_int 0)]
    {
--- 1549,1559 ----
  
  (define_split
    [(set (match_operand:GPF_HF 0 "nonimmediate_operand")
! 	(match_operand:GPF_HF 1 "const_double_operand"))]
    "can_create_pseudo_p ()
     && !aarch64_can_const_movi_rtx_p (operands[1], <MODE>mode)
     && !aarch64_float_const_representable_p (operands[1])
+    && !aarch64_float_const_zero_rtx_p (operands[1])
     &&  aarch64_float_const_rtx_p (operands[1])"
    [(const_int 0)]
    {
***************
*** 1545,1557 ****
    }
  )
  
! (define_insn "*movtf_aarch64"
!   [(set (match_operand:TF 0
  	 "nonimmediate_operand" "=w,?r ,w ,?r,w,?w,w,m,?r,m ,m")
! 	(match_operand:TF 1
  	 "general_operand"      " w,?rY,?r,w ,Y,Y ,m,w,m ,?r,Y"))]
!   "TARGET_FLOAT && (register_operand (operands[0], TFmode)
!     || aarch64_reg_or_fp_zero (operands[1], TFmode))"
    "@
     mov\\t%0.16b, %1.16b
     #
--- 1568,1580 ----
    }
  )
  
! (define_insn "*mov<mode>_aarch64"
!   [(set (match_operand:TFD 0
  	 "nonimmediate_operand" "=w,?r ,w ,?r,w,?w,w,m,?r,m ,m")
! 	(match_operand:TFD 1
  	 "general_operand"      " w,?rY,?r,w ,Y,Y ,m,w,m ,?r,Y"))]
!   "TARGET_FLOAT && (register_operand (operands[0], <MODE>mode)
!     || aarch64_reg_or_fp_zero (operands[1], <MODE>mode))"
    "@
     mov\\t%0.16b, %1.16b
     #
***************
*** 1571,1578 ****
  )
  
  (define_split
!    [(set (match_operand:TF 0 "register_operand" "")
! 	 (match_operand:TF 1 "nonmemory_operand" ""))]
    "reload_completed && aarch64_split_128bit_move_p (operands[0], operands[1])"
    [(const_int 0)]
    {
--- 1594,1601 ----
  )
  
  (define_split
!    [(set (match_operand:TFD 0 "register_operand" "")
! 	 (match_operand:TFD 1 "nonmemory_operand" ""))]
    "reload_completed && aarch64_split_128bit_move_p (operands[0], operands[1])"
    [(const_int 0)]
    {
***************
*** 1586,1591 ****
--- 1609,1615 ----
       [(set (match_operand 2) (const_int 0))
        (clobber (match_dup 3))
        (clobber (match_dup 4))
+       (clobber (reg:CC CC_REGNUM))
        (set (match_operand 0)
  	   (unspec:BLK [(match_operand 1) (match_dup 2)] UNSPEC_CPYMEM))])]
    "TARGET_MOPS"
***************
*** 1599,1604 ****
--- 1623,1629 ----
    [(set (match_operand:DI 2 "register_operand" "+&r") (const_int 0))
     (clobber (match_operand:DI 0 "register_operand" "+&r"))
     (clobber (match_operand:DI 1 "register_operand" "+&r"))
+    (clobber (reg:CC CC_REGNUM))
     (set (mem:BLK (match_dup 0))
          (unspec:BLK [(mem:BLK (match_dup 1)) (match_dup 2)] UNSPEC_CPYMEM))]
    "TARGET_MOPS"
***************
*** 1629,1634 ****
--- 1654,1660 ----
     (set (match_operand:DI 2 "register_operand" "+&r") (const_int 0))
     (clobber (match_operand:DI 0 "register_operand" "+&r"))
     (clobber (match_operand:DI 1 "register_operand" "+&r"))
+    (clobber (reg:CC CC_REGNUM))
     (set (mem:BLK (match_dup 0))
          (unspec:BLK [(mem:BLK (match_dup 1)) (match_dup 2)] UNSPEC_MOVMEM))])]
   "TARGET_MOPS"
***************
*** 1674,1679 ****
--- 1700,1706 ----
    [(parallel
       [(set (match_operand 2) (const_int 0))
        (clobber (match_dup 3))
+       (clobber (reg:CC CC_REGNUM))
        (set (match_operand 0)
  	   (unspec:BLK [(match_operand 1)
  			(match_dup 2)] UNSPEC_SETMEM))])]
***************
*** 1686,1691 ****
--- 1713,1719 ----
  (define_insn "*aarch64_setmemdi"
    [(set (match_operand:DI 2 "register_operand" "+&r") (const_int 0))
     (clobber (match_operand:DI 0 "register_operand" "+&r"))
+    (clobber (reg:CC CC_REGNUM))
     (set (mem:BLK (match_dup 0))
          (unspec:BLK [(match_operand:QI 1 "aarch64_reg_or_zero" "rZ")
  		     (match_dup 2)] UNSPEC_SETMEM))]
***************
*** 3571,3585 ****
    [(set_attr "type" "alu_ext")]
  )
  
  (define_expand "abs<mode>2"
!   [(match_operand:GPI 0 "register_operand")
!    (match_operand:GPI 1 "register_operand")]
    ""
    {
!     rtx ccreg = aarch64_gen_compare_reg (LT, operands[1], const0_rtx);
!     rtx x = gen_rtx_LT (VOIDmode, ccreg, const0_rtx);
!     emit_insn (gen_csneg3<mode>_insn (operands[0], x, operands[1], operands[1]));
!     DONE;
    }
  )
  
--- 3599,3624 ----
    [(set_attr "type" "alu_ext")]
  )
  
+ (define_insn "*aarch64_abs<mode>2_cssc_insn"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+ 	(abs:GPI (match_operand:GPI 1 "register_operand" "r")))]
+   "TARGET_CSSC"
+   "abs\\t%<w>0, %<w>1"
+   [(set_attr "type" "alu_sreg")]
+ )
+ 
  (define_expand "abs<mode>2"
!   [(set (match_operand:GPI 0 "register_operand")
! 	(abs:GPI (match_operand:GPI 1 "register_operand")))]
    ""
    {
!     if (!TARGET_CSSC)
!       {
! 	rtx ccreg = aarch64_gen_compare_reg (LT, operands[1], const0_rtx);
! 	rtx x = gen_rtx_LT (VOIDmode, ccreg, const0_rtx);
! 	emit_insn (gen_csneg3<mode>_insn (operands[0], x, operands[1], operands[1]));
! 	DONE;
!       }
    }
  )
  
***************
*** 4373,4378 ****
--- 4412,4428 ----
    [(set_attr "type" "csel")]
  )
  
+ (define_insn "aarch64_umax<mode>3_insn"
+   [(set (match_operand:GPI 0 "register_operand" "=r,r")
+         (umax:GPI (match_operand:GPI 1 "register_operand" "r,r")
+ 		(match_operand:GPI 2 "aarch64_uminmax_operand" "r,Uum")))]
+   "TARGET_CSSC"
+   "@
+    umax\\t%<w>0, %<w>1, %<w>2
+    umax\\t%<w>0, %<w>1, %2"
+   [(set_attr "type" "alu_sreg,alu_imm")]
+ )
+ 
  ;; If X can be loaded by a single CNT[BHWD] instruction,
  ;;
  ;;    A = UMAX (B, X)
***************
*** 4403,4413 ****
    [(set (match_operand:GPI 0 "register_operand")
  	(umax:GPI (match_operand:GPI 1 "")
  		  (match_operand:GPI 2 "")))]
!   "TARGET_SVE"
    {
      if (aarch64_sve_cnt_immediate (operands[1], <MODE>mode))
        std::swap (operands[1], operands[2]);
!     else if (!aarch64_sve_cnt_immediate (operands[2], <MODE>mode))
        FAIL;
      rtx temp = gen_reg_rtx (<MODE>mode);
      operands[1] = force_reg (<MODE>mode, operands[1]);
--- 4453,4476 ----
    [(set (match_operand:GPI 0 "register_operand")
  	(umax:GPI (match_operand:GPI 1 "")
  		  (match_operand:GPI 2 "")))]
!   "TARGET_SVE || TARGET_CSSC"
    {
      if (aarch64_sve_cnt_immediate (operands[1], <MODE>mode))
        std::swap (operands[1], operands[2]);
!     else if (aarch64_sve_cnt_immediate (operands[2], <MODE>mode))
!       ;
!     else if (TARGET_CSSC)
!       {
! 	if (aarch64_uminmax_immediate (operands[1], <MODE>mode))
! 	  std::swap (operands[1], operands[2]);
! 	operands[1] = force_reg (<MODE>mode, operands[1]);
! 	if (!aarch64_uminmax_operand (operands[2], <MODE>mode))
! 	  operands[2] = force_reg (<MODE>mode, operands[2]);
! 	emit_insn (gen_aarch64_umax<mode>3_insn (operands[0], operands[1],
! 						 operands[2]));
! 	DONE;
!       }
!     else
        FAIL;
      rtx temp = gen_reg_rtx (<MODE>mode);
      operands[1] = force_reg (<MODE>mode, operands[1]);
***************
*** 4508,4515 ****
  )
  
  (define_insn "*and<mode>3_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (match_operand:GPI 1 "register_operand" "%r,r")
  		  (match_operand:GPI 2 "aarch64_logical_operand" "r,<lconst>"))
  	 (const_int 0)))
--- 4571,4578 ----
  )
  
  (define_insn "*and<mode>3_compare0"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (match_operand:GPI 1 "register_operand" "%r,r")
  		  (match_operand:GPI 2 "aarch64_logical_operand" "r,<lconst>"))
  	 (const_int 0)))
***************
*** 4524,4531 ****
  
  ;; zero_extend version of above
  (define_insn "*andsi3_compare0_uxtw"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:SI (match_operand:SI 1 "register_operand" "%r,r")
  		 (match_operand:SI 2 "aarch64_logical_operand" "r,K"))
  	 (const_int 0)))
--- 4587,4594 ----
  
  ;; zero_extend version of above
  (define_insn "*andsi3_compare0_uxtw"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:SI (match_operand:SI 1 "register_operand" "%r,r")
  		 (match_operand:SI 2 "aarch64_logical_operand" "r,K"))
  	 (const_int 0)))
***************
*** 4539,4546 ****
  )
  
  (define_insn "*and_<SHIFT:optab><mode>3_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (SHIFT:GPI
  		   (match_operand:GPI 1 "register_operand" "r")
  		   (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
--- 4602,4609 ----
  )
  
  (define_insn "*and_<SHIFT:optab><mode>3_compare0"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (SHIFT:GPI
  		   (match_operand:GPI 1 "register_operand" "r")
  		   (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
***************
*** 4549,4562 ****
     (set (match_operand:GPI 0 "register_operand" "=r")
  	(and:GPI (SHIFT:GPI (match_dup 1) (match_dup 2)) (match_dup 3)))]
    ""
!   "ands\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
    [(set_attr "type" "logics_shift_imm")]
  )
  
  ;; zero_extend version of above
  (define_insn "*and_<SHIFT:optab>si3_compare0_uxtw"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:SI (SHIFT:SI
  		  (match_operand:SI 1 "register_operand" "r")
  		  (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
--- 4612,4629 ----
     (set (match_operand:GPI 0 "register_operand" "=r")
  	(and:GPI (SHIFT:GPI (match_dup 1) (match_dup 2)) (match_dup 3)))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "ands\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logics_shift_imm")]
  )
  
  ;; zero_extend version of above
  (define_insn "*and_<SHIFT:optab>si3_compare0_uxtw"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:SI (SHIFT:SI
  		  (match_operand:SI 1 "register_operand" "r")
  		  (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
***************
*** 4566,4572 ****
  	(zero_extend:DI (and:SI (SHIFT:SI (match_dup 1) (match_dup 2))
  				(match_dup 3))))]
    ""
!   "ands\\t%w0, %w3, %w1, <SHIFT:shift> %2"
    [(set_attr "type" "logics_shift_imm")]
  )
  
--- 4633,4643 ----
  	(zero_extend:DI (and:SI (SHIFT:SI (match_dup 1) (match_dup 2))
  				(match_dup 3))))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (32 - UINTVAL (operands[2]));
!   return "ands\\t%w0, %w3, %w1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logics_shift_imm")]
  )
  
***************
*** 4577,4589 ****
  		      (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
  		     (match_operand:GPI 3 "register_operand" "r")))]
    ""
!   "<LOGICAL:logical>\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
    [(set_attr "type" "logic_shift_imm")]
  )
  
  (define_split
    [(set (match_operand:GPI 0 "register_operand")
  	(LOGICAL_OR_PLUS:GPI
  	  (and:GPI (ashift:GPI (match_operand:GPI 1 "register_operand")
  			       (match_operand:QI 2 "aarch64_shift_imm_<mode>"))
  		   (match_operand:GPI 3 "const_int_operand"))
--- 4648,4687 ----
  		      (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
  		     (match_operand:GPI 3 "register_operand" "r")))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "<LOGICAL:logical>\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logic_shift_imm")]
  )
  
  (define_split
    [(set (match_operand:GPI 0 "register_operand")
  	(LOGICAL_OR_PLUS:GPI
+ 	  (and:GPI
+ 	    (lshiftrt:GPI (match_operand:GPI 1 "register_operand")
+ 			  (match_operand:QI 2 "aarch64_shift_imm_<mode>"))
+ 	    (match_operand:GPI 3 "aarch64_logical_immediate"))
+ 	  (match_operand:GPI 4 "register_operand")))]
+   "can_create_pseudo_p ()
+    && aarch64_bitmask_imm (UINTVAL (operands[3]) << UINTVAL (operands[2]),
+ 			   <MODE>mode)"
+   [(set (match_dup 5) (and:GPI (match_dup 1) (match_dup 6)))
+    (set (match_dup 0) (LOGICAL_OR_PLUS:GPI
+ 		       (lshiftrt:GPI (match_dup 5) (match_dup 2))
+                        (match_dup 4)))]
+   {
+     operands[5] = gen_reg_rtx (<MODE>mode);
+     operands[6]
+       = gen_int_mode (UINTVAL (operands[3]) << UINTVAL (operands[2]),
+ 		      <MODE>mode);
+   }
+ )
+ 
+ (define_split
+   [(set (match_operand:GPI 0 "register_operand")
+ 	(LOGICAL_OR_PLUS:GPI
  	  (and:GPI (ashift:GPI (match_operand:GPI 1 "register_operand")
  			       (match_operand:QI 2 "aarch64_shift_imm_<mode>"))
  		   (match_operand:GPI 3 "const_int_operand"))
***************
*** 4647,4663 ****
    "operands[3] = gen_reg_rtx (<MODE>mode);"
  )
  
- (define_insn "*<optab>_rol<mode>3"
-   [(set (match_operand:GPI 0 "register_operand" "=r")
- 	(LOGICAL:GPI (rotate:GPI
- 		      (match_operand:GPI 1 "register_operand" "r")
- 		      (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
- 		     (match_operand:GPI 3 "register_operand" "r")))]
-   ""
-   "<logical>\\t%<w>0, %<w>3, %<w>1, ror #(<sizen> - %2)"
-   [(set_attr "type" "logic_shift_imm")]
- )
- 
  ;; zero_extend versions of above
  (define_insn "*<LOGICAL:optab>_<SHIFT:optab>si3_uxtw"
    [(set (match_operand:DI 0 "register_operand" "=r")
--- 4745,4750 ----
***************
*** 4667,4685 ****
  		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
  		     (match_operand:SI 3 "register_operand" "r"))))]
    ""
!   "<LOGICAL:logical>\\t%w0, %w3, %w1, <SHIFT:shift> %2"
!   [(set_attr "type" "logic_shift_imm")]
! )
! 
! (define_insn "*<optab>_rolsi3_uxtw"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(zero_extend:DI
! 	 (LOGICAL:SI (rotate:SI
! 		      (match_operand:SI 1 "register_operand" "r")
! 		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
! 		     (match_operand:SI 3 "register_operand" "r"))))]
!   ""
!   "<logical>\\t%w0, %w3, %w1, ror #(32 - %2)"
    [(set_attr "type" "logic_shift_imm")]
  )
  
--- 4754,4764 ----
  		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
  		     (match_operand:SI 3 "register_operand" "r"))))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (32 - UINTVAL (operands[2]));
!   return "<LOGICAL:logical>\\t%w0, %w3, %w1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logic_shift_imm")]
  )
  
***************
*** 4708,4714 ****
  	(not:GPI (SHIFT:GPI (match_operand:GPI 1 "register_operand" "r")
  			    (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))))]
    ""
!   "mvn\\t%<w>0, %<w>1, <shift> %2"
    [(set_attr "type" "logic_shift_imm")]
  )
  
--- 4787,4797 ----
  	(not:GPI (SHIFT:GPI (match_operand:GPI 1 "register_operand" "r")
  			    (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "mvn\\t%<w>0, %<w>1, <shift> %2";
! }
    [(set_attr "type" "logic_shift_imm")]
  )
  
***************
*** 4767,4774 ****
  )
  
  (define_insn "*and_one_cmpl<mode>3_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (not:GPI
  		   (match_operand:GPI 1 "register_operand" "r"))
  		  (match_operand:GPI 2 "register_operand" "r"))
--- 4850,4857 ----
  )
  
  (define_insn "*and_one_cmpl<mode>3_compare0"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (not:GPI
  		   (match_operand:GPI 1 "register_operand" "r"))
  		  (match_operand:GPI 2 "register_operand" "r"))
***************
*** 4782,4789 ****
  
  ;; zero_extend version of above
  (define_insn "*and_one_cmplsi3_compare0_uxtw"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:SI (not:SI
  		  (match_operand:SI 1 "register_operand" "r"))
  		 (match_operand:SI 2 "register_operand" "r"))
--- 4865,4872 ----
  
  ;; zero_extend version of above
  (define_insn "*and_one_cmplsi3_compare0_uxtw"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:SI (not:SI
  		  (match_operand:SI 1 "register_operand" "r"))
  		 (match_operand:SI 2 "register_operand" "r"))
***************
*** 4796,4803 ****
  )
  
  (define_insn "*and_one_cmpl<mode>3_compare0_no_reuse"
!   [(set (reg:CC_NZ CC_REGNUM)
!     (compare:CC_NZ
       (and:GPI (not:GPI
             (match_operand:GPI 0 "register_operand" "r"))
            (match_operand:GPI 1 "register_operand" "r"))
--- 4879,4886 ----
  )
  
  (define_insn "*and_one_cmpl<mode>3_compare0_no_reuse"
!   [(set (reg:CC_NZV CC_REGNUM)
!     (compare:CC_NZV
       (and:GPI (not:GPI
             (match_operand:GPI 0 "register_operand" "r"))
            (match_operand:GPI 1 "register_operand" "r"))
***************
*** 4815,4821 ****
  		       (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n")))
  		     (match_operand:GPI 3 "register_operand" "r")))]
    ""
!   "<LOGICAL:nlogical>\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
    [(set_attr "type" "logic_shift_imm")]
  )
  
--- 4898,4925 ----
  		       (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n")))
  		     (match_operand:GPI 3 "register_operand" "r")))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "<LOGICAL:nlogical>\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2";
! }
!   [(set_attr "type" "logic_shift_imm")]
! )
! 
! ;; Zero-extend version of the above.
! (define_insn "<LOGICAL:optab>_one_cmpl_<SHIFT:optab>sidi_uxtw"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(zero_extend:DI (LOGICAL:SI (not:SI
! 			 (SHIFT:SI
! 			  (match_operand:SI 1 "register_operand" "r")
! 			  (match_operand:QI 2 "aarch64_shift_imm_si" "n")))
! 			 (match_operand:SI 3 "register_operand" "r"))))]
!   ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (32 - UINTVAL (operands[2]));
!   return "<LOGICAL:nlogical>\\t%w0, %w3, %w1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logic_shift_imm")]
  )
  
***************
*** 4827,4833 ****
  		       (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
  		     (match_operand:GPI 3 "register_operand" "r"))))]
    ""
!   "eon\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
    [(set_attr "type" "logic_shift_imm")]
  )
  
--- 4931,4941 ----
  		       (match_operand:QI 2 "aarch64_shift_imm_<mode>" "n"))
  		     (match_operand:GPI 3 "register_operand" "r"))))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "eon\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logic_shift_imm")]
  )
  
***************
*** 4841,4853 ****
  		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
  		    (match_operand:SI 3 "register_operand" "r")))))]
    ""
!   "eon\\t%w0, %w3, %w1, <SHIFT:shift> %2"
    [(set_attr "type" "logic_shift_imm")]
  )
  
  (define_insn "*and_one_cmpl_<SHIFT:optab><mode>3_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (not:GPI
  		   (SHIFT:GPI
  		    (match_operand:GPI 1 "register_operand" "r")
--- 4949,4965 ----
  		      (match_operand:QI 2 "aarch64_shift_imm_si" "n"))
  		    (match_operand:SI 3 "register_operand" "r")))))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (32 - UINTVAL (operands[2]));
!   return "eon\\t%w0, %w3, %w1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logic_shift_imm")]
  )
  
  (define_insn "*and_one_cmpl_<SHIFT:optab><mode>3_compare0"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (not:GPI
  		   (SHIFT:GPI
  		    (match_operand:GPI 1 "register_operand" "r")
***************
*** 4859,4872 ****
  		  (SHIFT:GPI
  		   (match_dup 1) (match_dup 2))) (match_dup 3)))]
    ""
!   "bics\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2"
    [(set_attr "type" "logics_shift_imm")]
  )
  
  ;; zero_extend version of above
  (define_insn "*and_one_cmpl_<SHIFT:optab>si3_compare0_uxtw"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:SI (not:SI
  		  (SHIFT:SI
  		   (match_operand:SI 1 "register_operand" "r")
--- 4971,4988 ----
  		  (SHIFT:GPI
  		   (match_dup 1) (match_dup 2))) (match_dup 3)))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "bics\\t%<w>0, %<w>3, %<w>1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logics_shift_imm")]
  )
  
  ;; zero_extend version of above
  (define_insn "*and_one_cmpl_<SHIFT:optab>si3_compare0_uxtw"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:SI (not:SI
  		  (SHIFT:SI
  		   (match_operand:SI 1 "register_operand" "r")
***************
*** 4878,4890 ****
  			 (not:SI
  			  (SHIFT:SI (match_dup 1) (match_dup 2))) (match_dup 3))))]
    ""
!   "bics\\t%w0, %w3, %w1, <SHIFT:shift> %2"
    [(set_attr "type" "logics_shift_imm")]
  )
  
  (define_insn "*and_one_cmpl_<SHIFT:optab><mode>3_compare0_no_reuse"
!   [(set (reg:CC_NZ CC_REGNUM)
!     (compare:CC_NZ
       (and:GPI (not:GPI
             (SHIFT:GPI
              (match_operand:GPI 0 "register_operand" "r")
--- 4994,5010 ----
  			 (not:SI
  			  (SHIFT:SI (match_dup 1) (match_dup 2))) (match_dup 3))))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[2] = GEN_INT (32 - UINTVAL (operands[2]));
!   return "bics\\t%w0, %w3, %w1, <SHIFT:shift> %2";
! }
    [(set_attr "type" "logics_shift_imm")]
  )
  
  (define_insn "*and_one_cmpl_<SHIFT:optab><mode>3_compare0_no_reuse"
!   [(set (reg:CC_NZV CC_REGNUM)
!     (compare:CC_NZV
       (and:GPI (not:GPI
             (SHIFT:GPI
              (match_operand:GPI 0 "register_operand" "r")
***************
*** 4892,4898 ****
            (match_operand:GPI 2 "register_operand" "r"))
       (const_int 0)))]
    ""
!   "bics\\t<w>zr, %<w>2, %<w>0, <SHIFT:shift> %1"
    [(set_attr "type" "logics_shift_imm")]
  )
  
--- 5012,5022 ----
            (match_operand:GPI 2 "register_operand" "r"))
       (const_int 0)))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[1] = GEN_INT (<sizen> - UINTVAL (operands[1]));
!   return "bics\\t<w>zr, %<w>2, %<w>0, <SHIFT:shift> %1";
! }
    [(set_attr "type" "logics_shift_imm")]
  )
  
***************
*** 4919,4953 ****
    }
  )
  
! ;; Pop count be done via the "CNT" instruction in AdvSIMD.
! ;;
  ;; MOV	v.1d, x0
  ;; CNT	v1.8b, v.8b
  ;; ADDV b2, v1.8b
  ;; MOV	w0, v2.b[0]
  
  (define_expand "popcount<mode>2"
!   [(match_operand:GPI 0 "register_operand")
!    (match_operand:GPI 1 "register_operand")]
!   "TARGET_SIMD"
  {
!   rtx v = gen_reg_rtx (V8QImode);
!   rtx v1 = gen_reg_rtx (V8QImode);
!   rtx in = operands[1];
!   rtx out = operands[0];
!   if(<MODE>mode == SImode)
      {
!       rtx tmp;
!       tmp = gen_reg_rtx (DImode);
!       /* If we have SImode, zero extend to DImode, pop count does
!          not change if we have extra zeros. */
!       emit_insn (gen_zero_extendsidi2 (tmp, in));
!       in = tmp;
      }
-   emit_move_insn (v, gen_lowpart (V8QImode, in));
-   emit_insn (gen_popcountv8qi2 (v1, v));
-   emit_insn (gen_aarch64_zero_extend<mode>_reduc_plus_v8qi (out, v1));
-   DONE;
  })
  
  (define_insn "clrsb<mode>2"
--- 5043,5089 ----
    }
  )
  
! (define_insn "*aarch64_popcount<mode>2_cssc_insn"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
!         (popcount:GPI (match_operand:GPI 1 "register_operand" "r")))]
!   "TARGET_CSSC"
!   "cnt\\t%<w>0, %<w>1"
!   [(set_attr "type" "clz")]
! )
! 
! ;; The CSSC instructions can do popcount in the GP registers directly through
! ;; CNT.  If it is not available then we can use CNT on the Advanced SIMD side
! ;; through:
  ;; MOV	v.1d, x0
  ;; CNT	v1.8b, v.8b
  ;; ADDV b2, v1.8b
  ;; MOV	w0, v2.b[0]
  
  (define_expand "popcount<mode>2"
!   [(set (match_operand:GPI 0 "register_operand")
! 	(popcount:GPI (match_operand:GPI 1 "register_operand")))]
!   "TARGET_CSSC || TARGET_SIMD"
  {
!   if (!TARGET_CSSC)
      {
!       rtx v = gen_reg_rtx (V8QImode);
!       rtx v1 = gen_reg_rtx (V8QImode);
!       rtx in = operands[1];
!       rtx out = operands[0];
!       if(<MODE>mode == SImode)
! 	{
! 	  rtx tmp;
! 	  tmp = gen_reg_rtx (DImode);
! 	  /* If we have SImode, zero extend to DImode, pop count does
! 	     not change if we have extra zeros. */
! 	  emit_insn (gen_zero_extendsidi2 (tmp, in));
! 	  in = tmp;
! 	}
!       emit_move_insn (v, gen_lowpart (V8QImode, in));
!       emit_insn (gen_popcountv8qi2 (v1, v));
!       emit_insn (gen_aarch64_zero_extend<mode>_reduc_plus_v8qi (out, v1));
!       DONE;
      }
  })
  
  (define_insn "clrsb<mode>2"
***************
*** 4969,4982 ****
  ;; Split after reload into RBIT + CLZ.  Since RBIT is represented as an UNSPEC
  ;; it is unlikely to fold with any other operation, so keep this as a CTZ
  ;; expression and split after reload to enable scheduling them apart if
! ;; needed.
  
  (define_insn_and_split "ctz<mode>2"
   [(set (match_operand:GPI           0 "register_operand" "=r")
         (ctz:GPI (match_operand:GPI  1 "register_operand" "r")))]
    ""
!   "#"
!   "reload_completed"
    [(const_int 0)]
    "
    emit_insn (gen_aarch64_rbit (<MODE>mode, operands[0], operands[1]));
--- 5105,5118 ----
  ;; Split after reload into RBIT + CLZ.  Since RBIT is represented as an UNSPEC
  ;; it is unlikely to fold with any other operation, so keep this as a CTZ
  ;; expression and split after reload to enable scheduling them apart if
! ;; needed.  For TARGET_CSSC we have a single CTZ instruction that can do this.
  
  (define_insn_and_split "ctz<mode>2"
   [(set (match_operand:GPI           0 "register_operand" "=r")
         (ctz:GPI (match_operand:GPI  1 "register_operand" "r")))]
    ""
!   { return TARGET_CSSC ? "ctz\\t%<w>0, %<w>1" : "#"; }
!   "reload_completed && !TARGET_CSSC"
    [(const_int 0)]
    "
    emit_insn (gen_aarch64_rbit (<MODE>mode, operands[0], operands[1]));
***************
*** 4985,4992 ****
  ")
  
  (define_insn "*and<mode>_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (match_operand:SHORT 0 "register_operand" "r")
  	 (const_int 0)))]
    ""
--- 5121,5128 ----
  ")
  
  (define_insn "*and<mode>_compare0"
!   [(set (reg:CC_Z CC_REGNUM)
! 	(compare:CC_Z
  	 (match_operand:SHORT 0 "register_operand" "r")
  	 (const_int 0)))]
    ""
***************
*** 4995,5002 ****
  )
  
  (define_insn "*ands<GPI:mode>_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (zero_extend:GPI (match_operand:SHORT 1 "register_operand" "r"))
  	 (const_int 0)))
     (set (match_operand:GPI 0 "register_operand" "=r")
--- 5131,5138 ----
  )
  
  (define_insn "*ands<GPI:mode>_compare0"
!   [(set (reg:CC_Z CC_REGNUM)
! 	(compare:CC_Z
  	 (zero_extend:GPI (match_operand:SHORT 1 "register_operand" "r"))
  	 (const_int 0)))
     (set (match_operand:GPI 0 "register_operand" "=r")
***************
*** 5007,5014 ****
  )
  
  (define_insn "*and<mode>3nr_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (match_operand:GPI 0 "register_operand" "%r,r")
  		  (match_operand:GPI 1 "aarch64_logical_operand" "r,<lconst>"))
  	 (const_int 0)))]
--- 5143,5150 ----
  )
  
  (define_insn "*and<mode>3nr_compare0"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (match_operand:GPI 0 "register_operand" "%r,r")
  		  (match_operand:GPI 1 "aarch64_logical_operand" "r,<lconst>"))
  	 (const_int 0)))]
***************
*** 5020,5043 ****
  )
  
  (define_split
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (match_operand:GPI 0 "register_operand")
  		  (match_operand:GPI 1 "aarch64_mov_imm_operand"))
  	 (const_int 0)))
     (clobber (match_operand:SI 2 "register_operand"))]
    ""
    [(set (match_dup 2) (match_dup 1))
!    (set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (match_dup 0)
  		  (match_dup 2))
  	 (const_int 0)))]
  )
  
  (define_insn "*and<mode>3nr_compare0_zextract"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (zero_extract:GPI (match_operand:GPI 0 "register_operand" "r")
  		  (match_operand:GPI 1 "const_int_operand" "n")
  		  (match_operand:GPI 2 "const_int_operand" "n"))
--- 5156,5179 ----
  )
  
  (define_split
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (match_operand:GPI 0 "register_operand")
  		  (match_operand:GPI 1 "aarch64_mov_imm_operand"))
  	 (const_int 0)))
     (clobber (match_operand:SI 2 "register_operand"))]
    ""
    [(set (match_dup 2) (match_dup 1))
!    (set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (match_dup 0)
  		  (match_dup 2))
  	 (const_int 0)))]
  )
  
  (define_insn "*and<mode>3nr_compare0_zextract"
!   [(set (reg:CC_Z CC_REGNUM)
! 	(compare:CC_Z
  	 (zero_extract:GPI (match_operand:GPI 0 "register_operand" "r")
  		  (match_operand:GPI 1 "const_int_operand" "n")
  		  (match_operand:GPI 2 "const_int_operand" "n"))
***************
*** 5058,5078 ****
  )
  
  (define_insn "*and_<SHIFT:optab><mode>3nr_compare0"
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (SHIFT:GPI
  		   (match_operand:GPI 0 "register_operand" "r")
  		   (match_operand:QI 1 "aarch64_shift_imm_<mode>" "n"))
  		  (match_operand:GPI 2 "register_operand" "r"))
  	(const_int 0)))]
    ""
!   "tst\\t%<w>2, %<w>0, <SHIFT:shift> %1"
    [(set_attr "type" "logics_shift_imm")]
  )
  
  (define_split
!   [(set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (SHIFT:GPI
  		   (match_operand:GPI 0 "register_operand")
  		   (match_operand:QI 1 "aarch64_shift_imm_<mode>"))
--- 5194,5218 ----
  )
  
  (define_insn "*and_<SHIFT:optab><mode>3nr_compare0"
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (SHIFT:GPI
  		   (match_operand:GPI 0 "register_operand" "r")
  		   (match_operand:QI 1 "aarch64_shift_imm_<mode>" "n"))
  		  (match_operand:GPI 2 "register_operand" "r"))
  	(const_int 0)))]
    ""
! {
!   if (<SHIFT:is_rotl>)
!     operands[1] = GEN_INT (<sizen> - UINTVAL (operands[1]));
!   return "tst\\t%<w>2, %<w>0, <SHIFT:shift> %1";
! }
    [(set_attr "type" "logics_shift_imm")]
  )
  
  (define_split
!   [(set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (SHIFT:GPI
  		   (match_operand:GPI 0 "register_operand")
  		   (match_operand:QI 1 "aarch64_shift_imm_<mode>"))
***************
*** 5081,5088 ****
      (clobber (match_operand:SI 3 "register_operand"))]
    ""
    [(set (match_dup 3) (match_dup 2))
!    (set (reg:CC_NZ CC_REGNUM)
! 	(compare:CC_NZ
  	 (and:GPI (SHIFT:GPI
  		   (match_dup 0)
  		   (match_dup 1))
--- 5221,5228 ----
      (clobber (match_operand:SI 3 "register_operand"))]
    ""
    [(set (match_dup 3) (match_dup 2))
!    (set (reg:CC_NZV CC_REGNUM)
! 	(compare:CC_NZV
  	 (and:GPI (SHIFT:GPI
  		   (match_dup 0)
  		   (match_dup 1))
***************
*** 5467,5476 ****
    [(set_attr "type" "rotate_imm,shift_reg")]
  )
  
! ;; zero_extend version of above
  (define_insn "*<optab>si3_insn_uxtw"
    [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(zero_extend:DI (SHIFT:SI
  	 (match_operand:SI 1 "register_operand" "r,r")
  	 (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "Uss,r"))))]
    ""
--- 5607,5628 ----
    [(set_attr "type" "rotate_imm,shift_reg")]
  )
  
! (define_insn "*rol<mode>3_insn"
!   [(set (match_operand:GPI 0 "register_operand" "=r")
!         (rotate:GPI (match_operand:GPI 1 "register_operand" "r")
!                     (match_operand 2 "const_int_operand" "n")))]
!   "UINTVAL (operands[2]) < GET_MODE_BITSIZE (<MODE>mode)"
! {
!   operands[3] = GEN_INT (<sizen> - UINTVAL (operands[2]));
!   return "ror\\t%<w>0, %<w>1, %3";
! }
!   [(set_attr "type" "rotate_imm")]
! )
! 
! ;; zero_extend version of shifts
  (define_insn "*<optab>si3_insn_uxtw"
    [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(zero_extend:DI (SHIFT_no_rotate:SI
  	 (match_operand:SI 1 "register_operand" "r,r")
  	 (match_operand:QI 2 "aarch64_reg_or_shift_imm_si" "Uss,r"))))]
    ""
***************
*** 5480,5485 ****
--- 5632,5662 ----
    [(set_attr "type" "bfx,shift_reg")]
  )
  
+ ;; zero_extend version of rotate right
+ (define_insn "*rorsi3_insn_uxtw"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (zero_extend:DI
+          (rotatert:SI (match_operand:SI 1 "register_operand" "r")
+                     (match_operand 2 "const_int_operand" "n"))))]
+   "UINTVAL (operands[2]) < 32"
+   "ror\\t%w0, %w1, %2"
+   [(set_attr "type" "rotate_imm")]
+ )
+ 
+ ;; zero_extend version of rotate left
+ (define_insn "*rolsi3_insn_uxtw"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (zero_extend:DI
+          (rotate:SI (match_operand:SI 1 "register_operand" "r")
+                     (match_operand 2 "const_int_operand" "n"))))]
+   "UINTVAL (operands[2]) < 32"
+ {
+   operands[2] = GEN_INT (32 - UINTVAL (operands[2]));
+   return "ror\\t%w0, %w1, %2";
+ }
+   [(set_attr "type" "rotate_imm")]
+ )
+ 
  (define_insn "*<optab><mode>3_insn"
    [(set (match_operand:SHORT 0 "register_operand" "=r")
  	(ASHIFT:SHORT (match_operand:SHORT 1 "register_operand" "r")
***************
*** 5562,5593 ****
    [(set_attr "type" "rotate_imm")]
  )
  
- (define_insn "*ror<mode>3_insn"
-   [(set (match_operand:GPI 0 "register_operand" "=r")
- 	(rotate:GPI (match_operand:GPI 1 "register_operand" "r")
- 		    (match_operand 2 "const_int_operand" "n")))]
-   "UINTVAL (operands[2]) < GET_MODE_BITSIZE (<MODE>mode)"
- {
-   operands[3] = GEN_INT (<sizen> - UINTVAL (operands[2]));
-   return "ror\\t%<w>0, %<w>1, %3";
- }
-   [(set_attr "type" "rotate_imm")]
- )
- 
- ;; zero_extend version of the above
- (define_insn "*rorsi3_insn_uxtw"
-   [(set (match_operand:DI 0 "register_operand" "=r")
- 	(zero_extend:DI
- 	 (rotate:SI (match_operand:SI 1 "register_operand" "r")
- 		    (match_operand 2 "const_int_operand" "n"))))]
-   "UINTVAL (operands[2]) < 32"
- {
-   operands[3] = GEN_INT (32 - UINTVAL (operands[2]));
-   return "ror\\t%w0, %w1, %3";
- }
-   [(set_attr "type" "rotate_imm")]
- )
- 
  (define_insn "*<ANY_EXTEND:optab><GPI:mode>_ashl<SHORT:mode>"
    [(set (match_operand:GPI 0 "register_operand" "=r")
  	(ANY_EXTEND:GPI
--- 5739,5744 ----
***************
*** 6409,6415 ****
  (define_expand "<optab>dihf2"
    [(set (match_operand:HF 0 "register_operand")
  	(FLOATUORS:HF (match_operand:DI 1 "register_operand")))]
!   "TARGET_FLOAT && (TARGET_FP_F16INST || TARGET_SIMD)"
  {
    if (TARGET_FP_F16INST)
      emit_insn (gen_aarch64_fp16_<optab>dihf2 (operands[0], operands[1]));
--- 6560,6566 ----
  (define_expand "<optab>dihf2"
    [(set (match_operand:HF 0 "register_operand")
  	(FLOATUORS:HF (match_operand:DI 1 "register_operand")))]
!   "TARGET_FP_F16INST || TARGET_SIMD"
  {
    if (TARGET_FP_F16INST)
      emit_insn (gen_aarch64_fp16_<optab>dihf2 (operands[0], operands[1]));
***************
*** 6600,6605 ****
--- 6751,6767 ----
    [(set_attr "type" "ffarith<stype>")]
  )
  
+ (define_insn "<optab><mode>3"
+   [(set (match_operand:GPI 0 "register_operand" "=r,r")
+         (MAXMIN_NOUMAX:GPI (match_operand:GPI 1 "register_operand" "r,r")
+ 		(match_operand:GPI 2 "aarch64_<su>minmax_operand" "r,U<su>m")))]
+   "TARGET_CSSC"
+   "@
+    <optab>\\t%<w>0, %<w>1, %<w>2
+    <optab>\\t%<w>0, %<w>1, %2"
+   [(set_attr "type" "alu_sreg,alu_imm")]
+ )
+ 
  ;; Given that smax/smin do not specify the result when either input is NaN,
  ;; we could use either FMAXNM or FMAX for smax, and either FMINNM or FMIN
  ;; for smin.
***************
*** 6668,6674 ****
    [(match_operand:GPF 0 "register_operand")
     (match_operand:GPF 1 "register_operand")
     (match_operand:GPF 2 "register_operand")]
!   "TARGET_FLOAT && TARGET_SIMD"
  {
    rtx bitmask = gen_reg_rtx (<V_INT_EQUIV>mode);
    emit_move_insn (bitmask, GEN_INT (HOST_WIDE_INT_M1U
--- 6830,6836 ----
    [(match_operand:GPF 0 "register_operand")
     (match_operand:GPF 1 "register_operand")
     (match_operand:GPF 2 "register_operand")]
!   "TARGET_SIMD"
  {
    rtx bitmask = gen_reg_rtx (<V_INT_EQUIV>mode);
    emit_move_insn (bitmask, GEN_INT (HOST_WIDE_INT_M1U
***************
*** 6685,6691 ****
  		     (match_operand:GPF 2 "register_operand" "w,w,0,0")
  		     (match_operand:<V_INT_EQUIV> 3 "register_operand" "0,w,w,X")]
  	 UNSPEC_COPYSIGN))]
!   "TARGET_FLOAT && TARGET_SIMD"
    "@
     bsl\\t%0.<Vbtype>, %2.<Vbtype>, %1.<Vbtype>
     bit\\t%0.<Vbtype>, %2.<Vbtype>, %3.<Vbtype>
--- 6847,6853 ----
  		     (match_operand:GPF 2 "register_operand" "w,w,0,0")
  		     (match_operand:<V_INT_EQUIV> 3 "register_operand" "0,w,w,X")]
  	 UNSPEC_COPYSIGN))]
!   "TARGET_SIMD"
    "@
     bsl\\t%0.<Vbtype>, %2.<Vbtype>, %1.<Vbtype>
     bit\\t%0.<Vbtype>, %2.<Vbtype>, %3.<Vbtype>
***************
*** 6706,6712 ****
    [(match_operand:GPF 0 "register_operand")
     (match_operand:GPF 1 "register_operand")
     (match_operand:GPF 2 "register_operand")]
!   "TARGET_FLOAT && TARGET_SIMD"
  {
  
    machine_mode imode = <V_INT_EQUIV>mode;
--- 6868,6874 ----
    [(match_operand:GPF 0 "register_operand")
     (match_operand:GPF 1 "register_operand")
     (match_operand:GPF 2 "register_operand")]
!   "TARGET_SIMD"
  {
  
    machine_mode imode = <V_INT_EQUIV>mode;
***************
*** 6763,6770 ****
  )
  
  (define_expand "@aarch64_reload_mov<mode>"
!   [(set (match_operand:TX 0 "register_operand" "=w")
!         (match_operand:TX 1 "register_operand" "w"))
     (clobber (match_operand:DI 2 "register_operand" "=&r"))
    ]
    "TARGET_FLOAT"
--- 6925,6932 ----
  )
  
  (define_expand "@aarch64_reload_mov<mode>"
!   [(set (match_operand:VTX 0 "register_operand" "=w")
!         (match_operand:VTX 1 "register_operand" "w"))
     (clobber (match_operand:DI 2 "register_operand" "=&r"))
    ]
    "TARGET_FLOAT"
***************
*** 7705,7710 ****
--- 7867,7885 ----
    [(set_attr "type" "ls64")]
  )
  
+ (define_insn "patchable_area"
+   [(unspec_volatile [(match_operand 0 "const_int_operand")
+ 		     (match_operand 1 "const_int_operand")]
+ 		    UNSPECV_PATCHABLE_AREA)]
+   ""
+ {
+   aarch64_output_patchable_area (INTVAL (operands[0]),
+ 			         INTVAL (operands[1]) != 0);
+   return "";
+ }
+   [(set (attr "length") (symbol_ref "INTVAL (operands[0])"))]
+ )
+ 
  ;; AdvSIMD Stuff
  (include "aarch64-simd.md")
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/aarch64.opt gcc-13.1.0/gcc/config/aarch64/aarch64.opt
*** gcc-12.2.0/gcc/config/aarch64/aarch64.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/aarch64.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Machine description for AArch64 architecture.
! ; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ; Contributed by ARM Ltd.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Machine description for AArch64 architecture.
! ; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ; Contributed by ARM Ltd.
  ;
  ; This file is part of GCC.
***************
*** 21,40 ****
  HeaderInclude
  config/aarch64/aarch64-opts.h
  
  TargetVariable
! enum aarch64_processor explicit_tune_core = aarch64_none
  
  TargetVariable
! enum aarch64_arch explicit_arch = aarch64_no_arch
  
! TargetSave
! const char *x_aarch64_override_tune_string
  
  TargetVariable
! uint64_t aarch64_isa_flags = 0
  
  TargetVariable
! unsigned aarch64_enable_bti = 2
  
  ; The TLS dialect names to use with -mtls-dialect.
  
--- 21,46 ----
  HeaderInclude
  config/aarch64/aarch64-opts.h
  
+ HeaderInclude
+ config/arm/aarch-common.h
+ 
  TargetVariable
! enum aarch64_processor selected_tune = aarch64_none
  
  TargetVariable
! enum aarch64_arch selected_arch = aarch64_no_arch
  
! TargetVariable
! aarch64_feature_flags aarch64_asm_isa_flags = 0
  
  TargetVariable
! aarch64_feature_flags aarch64_isa_flags = 0
  
  TargetVariable
! unsigned aarch_enable_bti = 2
! 
! TargetVariable
! enum aarch_key_type aarch_ra_sign_key = AARCH_KEY_A
  
  ; The TLS dialect names to use with -mtls-dialect.
  
*************** Target RejectNegative Joined Enum(aarch6
*** 139,145 ****
  Generate code that conforms to the specified ABI.
  
  moverride=
! Target RejectNegative ToLower Joined Var(aarch64_override_tune_string)
  -moverride=<string>	Power users only! Override CPU optimization parameters.
  
  Enum
--- 145,151 ----
  Generate code that conforms to the specified ABI.
  
  moverride=
! Target RejectNegative ToLower Joined Var(aarch64_override_tune_string) Save
  -moverride=<string>	Power users only! Override CPU optimization parameters.
  
  Enum
*************** Target RejectNegative Joined Var(aarch64
*** 161,181 ****
  Use branch-protection features.
  
  msign-return-address=
! Target WarnRemoved RejectNegative Joined Enum(aarch64_ra_sign_scope_t) Var(aarch64_ra_sign_scope) Init(AARCH64_FUNCTION_NONE) Save
  Select return address signing scope.
  
  Enum
! Name(aarch64_ra_sign_scope_t) Type(enum aarch64_function_type)
  Supported AArch64 return address signing scope (for use with -msign-return-address= option):
  
  EnumValue
! Enum(aarch64_ra_sign_scope_t) String(none) Value(AARCH64_FUNCTION_NONE)
  
  EnumValue
! Enum(aarch64_ra_sign_scope_t) String(non-leaf) Value(AARCH64_FUNCTION_NON_LEAF)
  
  EnumValue
! Enum(aarch64_ra_sign_scope_t) String(all) Value(AARCH64_FUNCTION_ALL)
  
  mlow-precision-recip-sqrt
  Target Var(flag_mrecip_low_precision_sqrt) Optimization
--- 167,187 ----
  Use branch-protection features.
  
  msign-return-address=
! Target WarnRemoved RejectNegative Joined Enum(aarch_ra_sign_scope_t) Var(aarch_ra_sign_scope) Init(AARCH_FUNCTION_NONE) Save
  Select return address signing scope.
  
  Enum
! Name(aarch_ra_sign_scope_t) Type(enum aarch_function_type)
  Supported AArch64 return address signing scope (for use with -msign-return-address= option):
  
  EnumValue
! Enum(aarch_ra_sign_scope_t) String(none) Value(AARCH_FUNCTION_NONE)
  
  EnumValue
! Enum(aarch_ra_sign_scope_t) String(non-leaf) Value(AARCH_FUNCTION_NON_LEAF)
  
  EnumValue
! Enum(aarch_ra_sign_scope_t) String(all) Value(AARCH_FUNCTION_ALL)
  
  mlow-precision-recip-sqrt
  Target Var(flag_mrecip_low_precision_sqrt) Optimization
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/arm_acle.h gcc-13.1.0/gcc/config/aarch64/arm_acle.h
*** gcc-12.2.0/gcc/config/aarch64/arm_acle.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/arm_acle.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* AArch64 Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* AArch64 Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/arm_bf16.h gcc-13.1.0/gcc/config/aarch64/arm_bf16.h
*** gcc-12.2.0/gcc/config/aarch64/arm_bf16.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/arm_bf16.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Arm BF16 instrinsics include file.
  
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm BF16 instrinsics include file.
  
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/arm_fp16.h gcc-13.1.0/gcc/config/aarch64/arm_fp16.h
*** gcc-12.2.0/gcc/config/aarch64/arm_fp16.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/arm_fp16.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* ARM FP16 scalar intrinsics include file.
  
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM FP16 scalar intrinsics include file.
  
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/arm_neon.h gcc-13.1.0/gcc/config/aarch64/arm_neon.h
*** gcc-12.2.0/gcc/config/aarch64/arm_neon.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/arm_neon.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** vgetq_lane_u64 (uint64x2_t __a, const in
*** 2827,5579 ****
    return __aarch64_vget_lane_any (__a, __b);
  }
  
- /* vreinterpret  */
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_f16 (float16x4_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_f64 (float64x1_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_s8 (int8x8_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_s16 (int16x4_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_s32 (int32x2_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_s64 (int64x1_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_f32 (float32x2_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_u8 (uint8x8_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_u16 (uint16x4_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_u32 (uint32x2_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_u64 (uint64x1_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_p16 (poly16x4_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_p64 (poly64x1_t __a)
- {
-   return (poly8x8_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_f64 (float64x2_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_s8 (int8x16_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_s16 (int16x8_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_s32 (int32x4_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_s64 (int64x2_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_f16 (float16x8_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_f32 (float32x4_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_u8 (uint8x16_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_u16 (uint16x8_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_u32 (uint32x4_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_u64 (uint64x2_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_p16 (poly16x8_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_p64 (poly64x2_t __a)
- {
-   return (poly8x16_t) __a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_p128 (poly128_t __a)
- {
-   return (poly8x16_t)__a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_f16 (float16x4_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_f64 (float64x1_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_s8 (int8x8_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_s16 (int16x4_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_s32 (int32x2_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_s64 (int64x1_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_f32 (float32x2_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_u8 (uint8x8_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_u16 (uint16x4_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_u32 (uint32x2_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_u64 (uint64x1_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_p8 (poly8x8_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_p64 (poly64x1_t __a)
- {
-   return (poly16x4_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_f64 (float64x2_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_s8 (int8x16_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_s16 (int16x8_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_s32 (int32x4_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_s64 (int64x2_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_f16 (float16x8_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_f32 (float32x4_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_u8 (uint8x16_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_u16 (uint16x8_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_u32 (uint32x4_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_u64 (uint64x2_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_p8 (poly8x16_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_p64 (poly64x2_t __a)
- {
-   return (poly16x8_t) __a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_p128 (poly128_t __a)
- {
-   return (poly16x8_t)__a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_f16 (float16x4_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_f64 (float64x1_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_s8 (int8x8_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_s16 (int16x4_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_s32 (int32x2_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_s64 (int64x1_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_f32 (float32x2_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_u8 (uint8x8_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_u16 (uint16x4_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_u32 (uint32x2_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_u64 (uint64x1_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_p8 (poly8x8_t __a)
- {
-   return (poly64x1_t) __a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_p16 (poly16x4_t __a)
- {
-   return (poly64x1_t)__a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_f64 (float64x2_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_s8 (int8x16_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_s16 (int16x8_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_s32 (int32x4_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_s64 (int64x2_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_f16 (float16x8_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_f32 (float32x4_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_p128 (poly128_t __a)
- {
-   return (poly64x2_t)__a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_u8 (uint8x16_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_u16 (uint16x8_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_p16 (poly16x8_t __a)
- {
-   return (poly64x2_t)__a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_u32 (uint32x4_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_u64 (uint64x2_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_p8 (poly8x16_t __a)
- {
-   return (poly64x2_t) __a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_p8 (poly8x16_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_p16 (poly16x8_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_f16 (float16x8_t __a)
- {
-   return (poly128_t) __a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_f32 (float32x4_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_p64 (poly64x2_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_s64 (int64x2_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_u64 (uint64x2_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_s8 (int8x16_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_s16 (int16x8_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_s32 (int32x4_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_u8 (uint8x16_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_u16 (uint16x8_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_u32 (uint32x4_t __a)
- {
-   return (poly128_t)__a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_f64 (float64x1_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_s8 (int8x8_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_s16 (int16x4_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_s32 (int32x2_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_s64 (int64x1_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_f32 (float32x2_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_u8 (uint8x8_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_u16 (uint16x4_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_u32 (uint32x2_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_u64 (uint64x1_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_p8 (poly8x8_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_p16 (poly16x4_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_p64 (poly64x1_t __a)
- {
-   return (float16x4_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_f64 (float64x2_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_s8 (int8x16_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_s16 (int16x8_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_s32 (int32x4_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_s64 (int64x2_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_f32 (float32x4_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_u8 (uint8x16_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_u16 (uint16x8_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_u32 (uint32x4_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_u64 (uint64x2_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_p8 (poly8x16_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_p128 (poly128_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_p16 (poly16x8_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_p64 (poly64x2_t __a)
- {
-   return (float16x8_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_f16 (float16x4_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_f64 (float64x1_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_s8 (int8x8_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_s16 (int16x4_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_s32 (int32x2_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_s64 (int64x1_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_u8 (uint8x8_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_u16 (uint16x4_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_u32 (uint32x2_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_u64 (uint64x1_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_p8 (poly8x8_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_p16 (poly16x4_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_p64 (poly64x1_t __a)
- {
-   return (float32x2_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_f16 (float16x8_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_f64 (float64x2_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_s8 (int8x16_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_s16 (int16x8_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_s32 (int32x4_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_s64 (int64x2_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_u8 (uint8x16_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_u16 (uint16x8_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_u32 (uint32x4_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_u64 (uint64x2_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_p8 (poly8x16_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_p16 (poly16x8_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_p64 (poly64x2_t __a)
- {
-   return (float32x4_t) __a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_p128 (poly128_t __a)
- {
-   return (float32x4_t)__a;
- }
- 
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_f16 (float16x4_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_f32 (float32x2_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_p8 (poly8x8_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_p16 (poly16x4_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_p64 (poly64x1_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_s8 (int8x8_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_s16 (int16x4_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_s32 (int32x2_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_s64 (int64x1_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_u8 (uint8x8_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_u16 (uint16x4_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_u32 (uint32x2_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_u64 (uint64x1_t __a)
- {
-   return (float64x1_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_f16 (float16x8_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_f32 (float32x4_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_p8 (poly8x16_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_p16 (poly16x8_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_p64 (poly64x2_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_s8 (int8x16_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_s16 (int16x8_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_s32 (int32x4_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_s64 (int64x2_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_u8 (uint8x16_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_u16 (uint16x8_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_u32 (uint32x4_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_u64 (uint64x2_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_f16 (float16x4_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_f64 (float64x1_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_s8 (int8x8_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_s16 (int16x4_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_s32 (int32x2_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_f32 (float32x2_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_u8 (uint8x8_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_u16 (uint16x4_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_u32 (uint32x2_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_u64 (uint64x1_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_p8 (poly8x8_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_p16 (poly16x4_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_p64 (poly64x1_t __a)
- {
-   return (int64x1_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_f64 (float64x2_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_s8 (int8x16_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_s16 (int16x8_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_s32 (int32x4_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_f16 (float16x8_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_f32 (float32x4_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_u8 (uint8x16_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_u16 (uint16x8_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_u32 (uint32x4_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_u64 (uint64x2_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_p8 (poly8x16_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_p16 (poly16x8_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_p64 (poly64x2_t __a)
- {
-   return (int64x2_t) __a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_p128 (poly128_t __a)
- {
-   return (int64x2_t)__a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_f16 (float16x4_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_f64 (float64x1_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_s8 (int8x8_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_s16 (int16x4_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_s32 (int32x2_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_s64 (int64x1_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_f32 (float32x2_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_u8 (uint8x8_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_u16 (uint16x4_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_u32 (uint32x2_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_p8 (poly8x8_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_p16 (poly16x4_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_p64 (poly64x1_t __a)
- {
-   return (uint64x1_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_f64 (float64x2_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_s8 (int8x16_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_s16 (int16x8_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_s32 (int32x4_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_s64 (int64x2_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_f16 (float16x8_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_f32 (float32x4_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_u8 (uint8x16_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_u16 (uint16x8_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_u32 (uint32x4_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_p8 (poly8x16_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_p16 (poly16x8_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_p64 (poly64x2_t __a)
- {
-   return (uint64x2_t) __a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_p128 (poly128_t __a)
- {
-   return (uint64x2_t)__a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_f16 (float16x4_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_f64 (float64x1_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_s16 (int16x4_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_s32 (int32x2_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_s64 (int64x1_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_f32 (float32x2_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_u8 (uint8x8_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_u16 (uint16x4_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_u32 (uint32x2_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_u64 (uint64x1_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_p8 (poly8x8_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_p16 (poly16x4_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_p64 (poly64x1_t __a)
- {
-   return (int8x8_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_f64 (float64x2_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_s16 (int16x8_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_s32 (int32x4_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_s64 (int64x2_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_f16 (float16x8_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_f32 (float32x4_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_u8 (uint8x16_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_u16 (uint16x8_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_u32 (uint32x4_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_u64 (uint64x2_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_p8 (poly8x16_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_p16 (poly16x8_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_p64 (poly64x2_t __a)
- {
-   return (int8x16_t) __a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_p128 (poly128_t __a)
- {
-   return (int8x16_t)__a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_f16 (float16x4_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_f64 (float64x1_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_s8 (int8x8_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_s32 (int32x2_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_s64 (int64x1_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_f32 (float32x2_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_u8 (uint8x8_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_u16 (uint16x4_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_u32 (uint32x2_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_u64 (uint64x1_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_p8 (poly8x8_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_p16 (poly16x4_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_p64 (poly64x1_t __a)
- {
-   return (int16x4_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_f64 (float64x2_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_s8 (int8x16_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_s32 (int32x4_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_s64 (int64x2_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_f16 (float16x8_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_f32 (float32x4_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_u8 (uint8x16_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_u16 (uint16x8_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_u32 (uint32x4_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_u64 (uint64x2_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_p8 (poly8x16_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_p16 (poly16x8_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_p64 (poly64x2_t __a)
- {
-   return (int16x8_t) __a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_p128 (poly128_t __a)
- {
-   return (int16x8_t)__a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_f16 (float16x4_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_f64 (float64x1_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_s8 (int8x8_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_s16 (int16x4_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_s64 (int64x1_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_f32 (float32x2_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_u8 (uint8x8_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_u16 (uint16x4_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_u32 (uint32x2_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_u64 (uint64x1_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_p8 (poly8x8_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_p16 (poly16x4_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_p64 (poly64x1_t __a)
- {
-   return (int32x2_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_f64 (float64x2_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_s8 (int8x16_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_s16 (int16x8_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_s64 (int64x2_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_f16 (float16x8_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_f32 (float32x4_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_u8 (uint8x16_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_u16 (uint16x8_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_u32 (uint32x4_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_u64 (uint64x2_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_p8 (poly8x16_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_p16 (poly16x8_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_p64 (poly64x2_t __a)
- {
-   return (int32x4_t) __a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_p128 (poly128_t __a)
- {
-   return (int32x4_t)__a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_f16 (float16x4_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_f64 (float64x1_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_s8 (int8x8_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_s16 (int16x4_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_s32 (int32x2_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_s64 (int64x1_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_f32 (float32x2_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_u16 (uint16x4_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_u32 (uint32x2_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_u64 (uint64x1_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_p8 (poly8x8_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_p16 (poly16x4_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_p64 (poly64x1_t __a)
- {
-   return (uint8x8_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_f64 (float64x2_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_s8 (int8x16_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_s16 (int16x8_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_s32 (int32x4_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_s64 (int64x2_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_f16 (float16x8_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_f32 (float32x4_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_u16 (uint16x8_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_u32 (uint32x4_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_u64 (uint64x2_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_p8 (poly8x16_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_p16 (poly16x8_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_p64 (poly64x2_t __a)
- {
-   return (uint8x16_t) __a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_p128 (poly128_t __a)
- {
-   return (uint8x16_t)__a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_f16 (float16x4_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_f64 (float64x1_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_s8 (int8x8_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_s16 (int16x4_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_s32 (int32x2_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_s64 (int64x1_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_f32 (float32x2_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_u8 (uint8x8_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_u32 (uint32x2_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_u64 (uint64x1_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_p8 (poly8x8_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_p16 (poly16x4_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_p64 (poly64x1_t __a)
- {
-   return (uint16x4_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_f64 (float64x2_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_s8 (int8x16_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_s16 (int16x8_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_s32 (int32x4_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_s64 (int64x2_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_f16 (float16x8_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_f32 (float32x4_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_u8 (uint8x16_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_u32 (uint32x4_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_u64 (uint64x2_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_p8 (poly8x16_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_p16 (poly16x8_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_p64 (poly64x2_t __a)
- {
-   return (uint16x8_t) __a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_p128 (poly128_t __a)
- {
-   return (uint16x8_t)__a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_f16 (float16x4_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_f64 (float64x1_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_s8 (int8x8_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_s16 (int16x4_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_s32 (int32x2_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_s64 (int64x1_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_f32 (float32x2_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_u8 (uint8x8_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_u16 (uint16x4_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_u64 (uint64x1_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_p8 (poly8x8_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_p16 (poly16x4_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_p64 (poly64x1_t __a)
- {
-   return (uint32x2_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_f64 (float64x2_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_s8 (int8x16_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_s16 (int16x8_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_s32 (int32x4_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_s64 (int64x2_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_f16 (float16x8_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_f32 (float32x4_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_u8 (uint8x16_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_u16 (uint16x8_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_u64 (uint64x2_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_p8 (poly8x16_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_p16 (poly16x8_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_p64 (poly64x2_t __a)
- {
-   return (uint32x4_t) __a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_p128 (poly128_t __a)
- {
-   return (uint32x4_t)__a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_p128 (poly128_t __a)
- {
-   return (float64x2_t) __a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_f64 (float64x2_t __a)
- {
-   return (poly128_t) __a;
- }
- 
  /* vset_lane  */
  
  __extension__ extern __inline float16x4_t
--- 2827,2832 ----
*************** vqrdmlshs_laneq_s32 (int32_t __a, int32_
*** 10243,10249 ****
  #pragma GCC pop_options
  
  #pragma GCC push_options
! #pragma GCC target ("+nothing+crypto")
  /* vaes  */
  
  __extension__ extern __inline uint8x16_t
--- 7496,7502 ----
  #pragma GCC pop_options
  
  #pragma GCC push_options
! #pragma GCC target ("+nothing+aes")
  /* vaes  */
  
  __extension__ extern __inline uint8x16_t
*************** vaesimcq_u8 (uint8x16_t data)
*** 10273,10278 ****
--- 7526,7547 ----
  {
    return __builtin_aarch64_crypto_aesimcv16qi_uu (data);
  }
+ 
+ __extension__ extern __inline poly128_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vmull_p64 (poly64_t __a, poly64_t __b)
+ {
+   return
+     __builtin_aarch64_crypto_pmulldi_ppp (__a, __b);
+ }
+ 
+ __extension__ extern __inline poly128_t
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)
+ {
+   return __builtin_aarch64_crypto_pmullv2di_ppp (__a, __b);
+ }
+ 
  #pragma GCC pop_options
  
  /* vcage  */
*************** vrsrad_n_u64 (uint64_t __a, uint64_t __b
*** 23519,23525 ****
  }
  
  #pragma GCC push_options
! #pragma GCC target ("+nothing+crypto")
  
  /* vsha1  */
  
--- 20788,20794 ----
  }
  
  #pragma GCC push_options
! #pragma GCC target ("+nothing+sha2")
  
  /* vsha1  */
  
*************** vsha256su1q_u32 (uint32x4_t __tw0_3, uin
*** 23596,23616 ****
  						       __w12_15);
  }
  
- __extension__ extern __inline poly128_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vmull_p64 (poly64_t __a, poly64_t __b)
- {
-   return
-     __builtin_aarch64_crypto_pmulldi_ppp (__a, __b);
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
- vmull_high_p64 (poly64x2_t __a, poly64x2_t __b)
- {
-   return __builtin_aarch64_crypto_pmullv2di_ppp (__a, __b);
- }
- 
  #pragma GCC pop_options
  
  /* vshl */
--- 20865,20870 ----
*************** vst4q_bf16 (bfloat16_t * __a, bfloat16x8
*** 30988,31401 ****
    __builtin_aarch64_st4v8bf ((__builtin_aarch64_simd_bf *) __a, __val);
  }
  
- /* vreinterpret */
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_u8 (uint8x8_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_u16 (uint16x4_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_u32 (uint32x2_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_u64 (uint64x1_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_s8 (int8x8_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_s16 (int16x4_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_s32 (int32x2_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_s64 (int64x1_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_p8 (poly8x8_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_p16 (poly16x4_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_p64 (poly64x1_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_f16 (float16x4_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_f32 (float32x2_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_bf16_f64 (float64x1_t __a)
- {
-   return (bfloat16x4_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_u8 (uint8x16_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_u16 (uint16x8_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_u32 (uint32x4_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_u64 (uint64x2_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_s8 (int8x16_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_s16 (int16x8_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_s32 (int32x4_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_s64 (int64x2_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_p8 (poly8x16_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_p16 (poly16x8_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_p64 (poly64x2_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_p128 (poly128_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_f16 (float16x8_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_f32 (float32x4_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline bfloat16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_bf16_f64 (float64x2_t __a)
- {
-   return (bfloat16x8_t)__a;
- }
- 
- __extension__ extern __inline int8x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s8_bf16 (bfloat16x4_t __a)
- {
-   return (int8x8_t)__a;
- }
- 
- __extension__ extern __inline int16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s16_bf16 (bfloat16x4_t __a)
- {
-   return (int16x4_t)__a;
- }
- 
- __extension__ extern __inline int32x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s32_bf16 (bfloat16x4_t __a)
- {
-   return (int32x2_t)__a;
- }
- 
- __extension__ extern __inline int64x1_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_s64_bf16 (bfloat16x4_t __a)
- {
-   return (int64x1_t)__a;
- }
- 
- __extension__ extern __inline uint8x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u8_bf16 (bfloat16x4_t __a)
- {
-   return (uint8x8_t)__a;
- }
- 
- __extension__ extern __inline uint16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u16_bf16 (bfloat16x4_t __a)
- {
-   return (uint16x4_t)__a;
- }
- 
- __extension__ extern __inline uint32x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u32_bf16 (bfloat16x4_t __a)
- {
-   return (uint32x2_t)__a;
- }
- 
- __extension__ extern __inline uint64x1_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_u64_bf16 (bfloat16x4_t __a)
- {
-   return (uint64x1_t)__a;
- }
- 
- __extension__ extern __inline float16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f16_bf16 (bfloat16x4_t __a)
- {
-   return (float16x4_t)__a;
- }
- 
- __extension__ extern __inline float32x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f32_bf16 (bfloat16x4_t __a)
- {
-   return (float32x2_t)__a;
- }
- 
- __extension__ extern __inline float64x1_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_f64_bf16 (bfloat16x4_t __a)
- {
-   return (float64x1_t)__a;
- }
- 
- __extension__ extern __inline poly8x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p8_bf16 (bfloat16x4_t __a)
- {
-   return (poly8x8_t)__a;
- }
- 
- __extension__ extern __inline poly16x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p16_bf16 (bfloat16x4_t __a)
- {
-   return (poly16x4_t)__a;
- }
- 
- __extension__ extern __inline poly64x1_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpret_p64_bf16 (bfloat16x4_t __a)
- {
-   return (poly64x1_t)__a;
- }
- 
- __extension__ extern __inline int8x16_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s8_bf16 (bfloat16x8_t __a)
- {
-   return (int8x16_t)__a;
- }
- 
- __extension__ extern __inline int16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s16_bf16 (bfloat16x8_t __a)
- {
-   return (int16x8_t)__a;
- }
- 
- __extension__ extern __inline int32x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s32_bf16 (bfloat16x8_t __a)
- {
-   return (int32x4_t)__a;
- }
- 
- __extension__ extern __inline int64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_s64_bf16 (bfloat16x8_t __a)
- {
-   return (int64x2_t)__a;
- }
- 
- __extension__ extern __inline uint8x16_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u8_bf16 (bfloat16x8_t __a)
- {
-   return (uint8x16_t)__a;
- }
- 
- __extension__ extern __inline uint16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u16_bf16 (bfloat16x8_t __a)
- {
-   return (uint16x8_t)__a;
- }
- 
- __extension__ extern __inline uint32x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u32_bf16 (bfloat16x8_t __a)
- {
-   return (uint32x4_t)__a;
- }
- 
- __extension__ extern __inline uint64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_u64_bf16 (bfloat16x8_t __a)
- {
-   return (uint64x2_t)__a;
- }
- 
- __extension__ extern __inline float16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f16_bf16 (bfloat16x8_t __a)
- {
-   return (float16x8_t)__a;
- }
- 
- __extension__ extern __inline float32x4_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f32_bf16 (bfloat16x8_t __a)
- {
-   return (float32x4_t)__a;
- }
- 
- __extension__ extern __inline float64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_f64_bf16 (bfloat16x8_t __a)
- {
-   return (float64x2_t)__a;
- }
- 
- __extension__ extern __inline poly8x16_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p8_bf16 (bfloat16x8_t __a)
- {
-   return (poly8x16_t)__a;
- }
- 
- __extension__ extern __inline poly16x8_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p16_bf16 (bfloat16x8_t __a)
- {
-   return (poly16x8_t)__a;
- }
- 
- __extension__ extern __inline poly64x2_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p64_bf16 (bfloat16x8_t __a)
- {
-   return (poly64x2_t)__a;
- }
- 
- __extension__ extern __inline poly128_t
- __attribute__  ((__always_inline__, __gnu_inline__, __artificial__))
- vreinterpretq_p128_bf16 (bfloat16x8_t __a)
- {
-   return (poly128_t)__a;
- }
- 
  __extension__ extern __inline float32x2_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  vbfdot_f32 (float32x2_t __r, bfloat16x4_t __a, bfloat16x4_t __b)
--- 28242,28247 ----
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/arm_sve.h gcc-13.1.0/gcc/config/aarch64/arm_sve.h
*** gcc-12.2.0/gcc/config/aarch64/arm_sve.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/arm_sve.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AArch64 SVE intrinsics include file.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* AArch64 SVE intrinsics include file.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/atomics.md gcc-13.1.0/gcc/config/aarch64/atomics.md
*** gcc-12.2.0/gcc/config/aarch64/atomics.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/atomics.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 processor synchronization primitives.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 processor synchronization primitives.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 640,646 ****
    }
  )
  
! (define_insn "atomic_load<mode>"
    [(set (match_operand:ALLI 0 "register_operand" "=r")
      (unspec_volatile:ALLI
        [(match_operand:ALLI 1 "aarch64_sync_memory_operand" "Q")
--- 640,694 ----
    }
  )
  
! (define_insn "*atomic_load<ALLX:mode>_zext<SD_HSDI:mode>"
!   [(set (match_operand:SD_HSDI 0 "register_operand" "=r")
! 	(zero_extend:SD_HSDI
! 	  (unspec_volatile:ALLX
! 	    [(match_operand:ALLX 1 "aarch64_sync_memory_operand" "Q")
! 	     (match_operand:SI 2 "const_int_operand")]			;; model
! 	   UNSPECV_LDA)))]
!   "GET_MODE_SIZE (<SD_HSDI:MODE>mode) > GET_MODE_SIZE (<ALLX:MODE>mode)"
!   {
!     enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
!     if (is_mm_relaxed (model) || is_mm_consume (model) || is_mm_release (model))
!       return "ldr<ALLX:atomic_sfx>\t%<ALLX:w>0, %1";
!     else
!       return "ldar<ALLX:atomic_sfx>\t%<ALLX:w>0, %1";
!   }
! )
! 
! (define_expand "atomic_load<mode>"
!   [(match_operand:ALLI 0 "register_operand" "=r")
!    (match_operand:ALLI 1 "aarch64_sync_memory_operand" "Q")
!    (match_operand:SI   2 "const_int_operand")]
!   ""
!   {
!     /* If TARGET_RCPC and this is an ACQUIRE load, then expand to a pattern
!        using UNSPECV_LDAP.  */
!     enum memmodel model = memmodel_from_int (INTVAL (operands[2]));
!     if (TARGET_RCPC
! 	&& (is_mm_acquire (model)
! 	    || is_mm_acq_rel (model)))
!       emit_insn (gen_aarch64_atomic_load<mode>_rcpc (operands[0], operands[1],
! 						     operands[2]));
!     else
!       emit_insn (gen_aarch64_atomic_load<mode> (operands[0], operands[1],
! 						operands[2]));
!     DONE;
!   }
! )
! 
! (define_insn "aarch64_atomic_load<mode>_rcpc"
!   [(set (match_operand:ALLI 0 "register_operand" "=r")
!     (unspec_volatile:ALLI
!       [(match_operand:ALLI 1 "aarch64_sync_memory_operand" "Q")
!        (match_operand:SI 2 "const_int_operand")]			;; model
!       UNSPECV_LDAP))]
!   "TARGET_RCPC"
!   "ldapr<atomic_sfx>\t%<w>0, %1"
! )
! 
! (define_insn "aarch64_atomic_load<mode>"
    [(set (match_operand:ALLI 0 "register_operand" "=r")
      (unspec_volatile:ALLI
        [(match_operand:ALLI 1 "aarch64_sync_memory_operand" "Q")
***************
*** 656,661 ****
--- 704,731 ----
    }
  )
  
+ (define_insn "*aarch64_atomic_load<ALLX:mode>_rcpc_zext"
+   [(set (match_operand:GPI 0 "register_operand" "=r")
+     (zero_extend:GPI
+       (unspec_volatile:ALLX
+         [(match_operand:ALLX 1 "aarch64_sync_memory_operand" "Q")
+          (match_operand:SI 2 "const_int_operand")]			;; model
+        UNSPECV_LDAP)))]
+   "TARGET_RCPC && (<GPI:sizen> > <ALLX:sizen>)"
+   "ldapr<ALLX:atomic_sfx>\t%w0, %1"
+ )
+ 
+ (define_insn "*aarch64_atomic_load<ALLX:mode>_rcpc_sext"
+   [(set (match_operand:GPI  0 "register_operand" "=r")
+     (sign_extend:GPI
+       (unspec_volatile:ALLX
+         [(match_operand:ALLX 1 "aarch64_sync_memory_operand" "Q")
+          (match_operand:SI 2 "const_int_operand")]			;; model
+        UNSPECV_LDAP)))]
+   "TARGET_RCPC2 && (<GPI:sizen> > <ALLX:sizen>)"
+   "ldapurs<ALLX:size>\t%<GPI:w>0, %1"
+ )
+ 
  (define_insn "atomic_store<mode>"
    [(set (match_operand:ALLI 0 "aarch64_rcpc_memory_operand" "=Q,Ust")
      (unspec_volatile:ALLI
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/biarchilp32.h gcc-13.1.0/gcc/config/aarch64/biarchilp32.h
*** gcc-12.2.0/gcc/config/aarch64/biarchilp32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/biarchilp32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to ilp32 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to ilp32 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/biarchlp64.h gcc-13.1.0/gcc/config/aarch64/biarchlp64.h
*** gcc-12.2.0/gcc/config/aarch64/biarchlp64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/biarchlp64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to ilp64 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to ilp64 ABI.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/check-sve-md.awk gcc-13.1.0/gcc/config/aarch64/check-sve-md.awk
*** gcc-12.2.0/gcc/config/aarch64/check-sve-md.awk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/check-sve-md.awk	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  #!/usr/bin/awk -f
! # Copyright (C) 2019-2022 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
--- 1,5 ----
  #!/usr/bin/awk -f
! # Copyright (C) 2019-2023 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
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/constraints.md gcc-13.1.0/gcc/config/aarch64/constraints.md
*** gcc-12.2.0/gcc/config/aarch64/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 107,112 ****
--- 107,117 ----
  (define_constraint "N"
   "A constant that can be used with a 64-bit MOV immediate operation."
   (and (match_code "const_int")
+       (match_test "aarch64_is_mov_xn_imm (ival)")))
+ 
+ (define_constraint "O"
+  "A constant that can be used with a 32 or 64-bit MOV immediate operation."
+  (and (match_code "const_int")
        (match_test "aarch64_move_imm (ival, DImode)")))
  
  (define_constraint "Uti"
***************
*** 152,157 ****
--- 157,167 ----
         (match_test "aarch64_symbolic_address_p (op)")
         (match_test "aarch64_mov_operand_p (op, GET_MODE (op))")))
  
+ (define_constraint "Usm"
+  "A constant that can be used with the S[MIN/MAX] CSSC instructions."
+  (and (match_code "const_int")
+       (match_test "aarch64_sminmax_immediate (op, VOIDmode)")))
+ 
  ;; const is needed here to support UNSPEC_SALT_ADDR.
  (define_constraint "Usw"
    "@internal
***************
*** 389,394 ****
--- 399,409 ----
    (and (match_code "const_double,const_vector")
         (match_test "aarch64_float_const_representable_p (op)")))
  
+ (define_constraint "Uum"
+  "A constant that can be used with the U[MIN/MAX] CSSC instructions."
+  (and (match_code "const_int")
+       (match_test "aarch64_uminmax_immediate (op, VOIDmode)")))
+ 
  (define_constraint "Uvi"
    "A floating point constant which can be used with a\
     MOVI immediate operation."
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/cortex-a57-fma-steering.cc gcc-13.1.0/gcc/config/aarch64/cortex-a57-fma-steering.cc
*** gcc-12.2.0/gcc/config/aarch64/cortex-a57-fma-steering.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/cortex-a57-fma-steering.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* FMA steering optimization pass for Cortex-A57.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* FMA steering optimization pass for Cortex-A57.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/driver-aarch64.cc gcc-13.1.0/gcc/config/aarch64/driver-aarch64.cc
*** gcc-12.2.0/gcc/config/aarch64/driver-aarch64.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/driver-aarch64.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Native CPU detection for aarch64.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Native CPU detection for aarch64.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 26,42 ****
  #include "coretypes.h"
  #include "tm.h"
  #include "aarch64-protos.h"
  
  struct aarch64_arch_extension
  {
    const char *ext;
!   uint64_t flag;
    const char *feat_string;
  };
  
! #define AARCH64_OPT_EXTENSION(EXT_NAME, FLAG_CANONICAL, FLAGS_ON, FLAGS_OFF, \
! 			      SYNTHETIC, FEATURE_STRING) \
!   { EXT_NAME, FLAG_CANONICAL, FEATURE_STRING },
  static struct aarch64_arch_extension aarch64_extensions[] =
  {
  #include "aarch64-option-extensions.def"
--- 26,42 ----
  #include "coretypes.h"
  #include "tm.h"
  #include "aarch64-protos.h"
+ #include "aarch64-feature-deps.h"
  
  struct aarch64_arch_extension
  {
    const char *ext;
!   aarch64_feature_flags flag;
    const char *feat_string;
  };
  
! #define AARCH64_OPT_EXTENSION(EXT_NAME, IDENT, C, D, E, FEATURE_STRING) \
!   { EXT_NAME, AARCH64_FL_##IDENT, FEATURE_STRING },
  static struct aarch64_arch_extension aarch64_extensions[] =
  {
  #include "aarch64-option-extensions.def"
*************** struct aarch64_core_data
*** 50,56 ****
    unsigned char implementer_id; /* Exactly 8 bits */
    unsigned int part_no; /* 12 bits + 12 bits */
    unsigned variant;
!   const uint64_t flags;
  };
  
  #define AARCH64_BIG_LITTLE(BIG, LITTLE) \
--- 50,56 ----
    unsigned char implementer_id; /* Exactly 8 bits */
    unsigned int part_no; /* 12 bits + 12 bits */
    unsigned variant;
!   aarch64_feature_flags flags;
  };
  
  #define AARCH64_BIG_LITTLE(BIG, LITTLE) \
*************** struct aarch64_core_data
*** 62,70 ****
  #define DEFAULT_ARCH "8A"
  
  #define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART, VARIANT) \
!   { CORE_NAME, #ARCH, IMP, PART, VARIANT, FLAGS },
  
! static struct aarch64_core_data aarch64_cpu_data[] =
  {
  #include "aarch64-cores.def"
    { NULL, NULL, INVALID_IMP, INVALID_CORE, ALL_VARIANTS, 0 }
--- 62,70 ----
  #define DEFAULT_ARCH "8A"
  
  #define AARCH64_CORE(CORE_NAME, CORE_IDENT, SCHED, ARCH, FLAGS, COSTS, IMP, PART, VARIANT) \
!   { CORE_NAME, #ARCH, IMP, PART, VARIANT, feature_deps::cpu_##CORE_IDENT },
  
! static CONSTEXPR const aarch64_core_data aarch64_cpu_data[] =
  {
  #include "aarch64-cores.def"
    { NULL, NULL, INVALID_IMP, INVALID_CORE, ALL_VARIANTS, 0 }
*************** struct aarch64_arch_driver_info
*** 75,87 ****
  {
    const char* id;
    const char* name;
!   const uint64_t flags;
  };
  
  #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
!   { #ARCH_IDENT, NAME, FLAGS },
  
! static struct aarch64_arch_driver_info aarch64_arches[] =
  {
  #include "aarch64-arches.def"
    {NULL, NULL, 0}
--- 75,88 ----
  {
    const char* id;
    const char* name;
!   aarch64_feature_flags flags;
  };
  
+ /* Skip the leading "V" in the architecture name.  */
  #define AARCH64_ARCH(NAME, CORE, ARCH_IDENT, ARCH_REV, FLAGS) \
!   { #ARCH_IDENT + 1, NAME, feature_deps::ARCH_IDENT ().enable },
  
! static CONSTEXPR const aarch64_arch_driver_info aarch64_arches[] =
  {
  #include "aarch64-arches.def"
    {NULL, NULL, 0}
*************** static struct aarch64_arch_driver_info a
*** 91,97 ****
  /* Return an aarch64_arch_driver_info for the architecture described
     by ID, or NULL if ID describes something we don't know about.  */
  
! static struct aarch64_arch_driver_info*
  get_arch_from_id (const char* id)
  {
    unsigned int i = 0;
--- 92,98 ----
  /* Return an aarch64_arch_driver_info for the architecture described
     by ID, or NULL if ID describes something we don't know about.  */
  
! static const aarch64_arch_driver_info *
  get_arch_from_id (const char* id)
  {
    unsigned int i = 0;
*************** readline (FILE *f)
*** 202,210 ****
  	return std::string ();
        /* If we're not at the end of the line then override the
  	 \0 added by fgets.  */
!       last = strnlen (buf, size) - 1;
      }
!   while (!feof (f) && buf[last] != '\n');
  
    std::string result (buf);
    free (buf);
--- 203,211 ----
  	return std::string ();
        /* If we're not at the end of the line then override the
  	 \0 added by fgets.  */
!       last = strnlen (buf, size);
      }
!   while (!feof (f) && last > 0 && buf[last - 1] != '\n');
  
    std::string result (buf);
    free (buf);
*************** host_detect_local_cpu (int argc, const c
*** 260,267 ****
    unsigned int variants[2] = { ALL_VARIANTS, ALL_VARIANTS };
    unsigned int n_variants = 0;
    bool processed_exts = false;
!   uint64_t extension_flags = 0;
!   uint64_t default_flags = 0;
    std::string buf;
    size_t sep_pos = -1;
    char *fcpu_info;
--- 261,268 ----
    unsigned int variants[2] = { ALL_VARIANTS, ALL_VARIANTS };
    unsigned int n_variants = 0;
    bool processed_exts = false;
!   aarch64_feature_flags extension_flags = 0;
!   aarch64_feature_flags default_flags = 0;
    std::string buf;
    size_t sep_pos = -1;
    char *fcpu_info;
*************** host_detect_local_cpu (int argc, const c
*** 395,402 ****
  
        if (aarch64_cpu_data[i].name == NULL)
  	{
! 	  aarch64_arch_driver_info* arch_info
! 	    = get_arch_from_id (DEFAULT_ARCH);
  
  	  gcc_assert (arch_info);
  
--- 396,402 ----
  
        if (aarch64_cpu_data[i].name == NULL)
  	{
! 	  auto arch_info = get_arch_from_id (DEFAULT_ARCH);
  
  	  gcc_assert (arch_info);
  
*************** host_detect_local_cpu (int argc, const c
*** 406,412 ****
        else if (arch)
  	{
  	  const char *arch_id = aarch64_cpu_data[i].arch;
! 	  aarch64_arch_driver_info* arch_info = get_arch_from_id (arch_id);
  
  	  /* We got some arch indentifier that's not in aarch64-arches.def?  */
  	  if (!arch_info)
--- 406,412 ----
        else if (arch)
  	{
  	  const char *arch_id = aarch64_cpu_data[i].arch;
! 	  auto arch_info = get_arch_from_id (arch_id);
  
  	  /* We got some arch indentifier that's not in aarch64-arches.def?  */
  	  if (!arch_info)
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/falkor-tag-collision-avoidance.cc gcc-13.1.0/gcc/config/aarch64/falkor-tag-collision-avoidance.cc
*** gcc-12.2.0/gcc/config/aarch64/falkor-tag-collision-avoidance.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/falkor-tag-collision-avoidance.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Tag Collision Avoidance pass for Falkor.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Tag Collision Avoidance pass for Falkor.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/falkor.md gcc-13.1.0/gcc/config/aarch64/falkor.md
*** gcc-12.2.0/gcc/config/aarch64/falkor.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/falkor.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Falkor pipeline description
! ;; Copyright (C) 2017-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Falkor pipeline description
! ;; Copyright (C) 2017-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/fractional-cost.h gcc-13.1.0/gcc/config/aarch64/fractional-cost.h
*** gcc-12.2.0/gcc/config/aarch64/fractional-cost.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/fractional-cost.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  // Simple fixed-point representation of fractional costs
! // Copyright (C) 2021-2022 Free Software Foundation, Inc.
  //
  // This file is part of GCC.
  //
--- 1,5 ----
  // Simple fixed-point representation of fractional costs
! // Copyright (C) 2021-2023 Free Software Foundation, Inc.
  //
  // This file is part of GCC.
  //
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/geniterators.sh gcc-13.1.0/gcc/config/aarch64/geniterators.sh
*** gcc-12.2.0/gcc/config/aarch64/geniterators.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/geniterators.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  #
! # Copyright (C) 2014-2022 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
--- 1,6 ----
  #!/bin/sh
  #
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/gentune.sh gcc-13.1.0/gcc/config/aarch64/gentune.sh
*** gcc-12.2.0/gcc/config/aarch64/gentune.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/gentune.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  #
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
--- 1,6 ----
  #!/bin/sh
  #
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  # Contributed by ARM Ltd.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/iterators.md gcc-13.1.0/gcc/config/aarch64/iterators.md
*** gcc-12.2.0/gcc/config/aarch64/iterators.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/iterators.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 63,80 ****
  ;; Iterator for all 16-bit scalar floating point modes (HF, BF)
  (define_mode_iterator HFBF [HF BF])
  
- ;; Iterator for all scalar floating point modes (HF, SF, DF and TF)
- (define_mode_iterator GPF_TF_F16 [HF SF DF TF])
- 
  ;; Iterator for all scalar floating point modes suitable for moving, including
! ;; special BF type (HF, SF, DF, TF and BF)
! (define_mode_iterator GPF_TF_F16_MOV [HF BF SF DF TF])
  
  ;; Double vector modes.
  (define_mode_iterator VDF [V2SF V4HF])
  
! ;; Iterator for all scalar floating point modes (SF, DF and TF)
! (define_mode_iterator GPF_TF [SF DF TF])
  
  ;; Integer Advanced SIMD modes.
  (define_mode_iterator VDQ_I [V8QI V16QI V4HI V8HI V2SI V4SI V2DI])
--- 63,87 ----
  ;; Iterator for all 16-bit scalar floating point modes (HF, BF)
  (define_mode_iterator HFBF [HF BF])
  
  ;; Iterator for all scalar floating point modes suitable for moving, including
! ;; special BF type and decimal floating point types (HF, SF, DF, TF, BF,
! ;; SD, DD and TD)
! (define_mode_iterator GPF_TF_F16_MOV [HF BF SF DF TF SD DD TD])
! 
! ;; Iterator for scalar 32bit fp modes (SF, SD)
! (define_mode_iterator SFD [SD SF])
! 
! ;; Iterator for scalar 64bit fp modes (DF, DD)
! (define_mode_iterator DFD [DD DF])
! 
! ;; Iterator for scalar 128bit fp modes (TF, TD)
! (define_mode_iterator TFD [TD TF])
  
  ;; Double vector modes.
  (define_mode_iterator VDF [V2SF V4HF])
  
! ;; Iterator for all scalar floating point modes (SF, DF, TF, SD, DD, and TD)
! (define_mode_iterator GPF_TF [SF DF TF SD DD TD])
  
  ;; Integer Advanced SIMD modes.
  (define_mode_iterator VDQ_I [V8QI V16QI V4HI V8HI V2SI V4SI V2DI])
***************
*** 128,133 ****
--- 135,143 ----
  ;; VQ without 2 element modes.
  (define_mode_iterator VQ_NO2E [V16QI V8HI V4SI V8HF V4SF V8BF])
  
+ ;; 2 element quad vector modes.
+ (define_mode_iterator VQ_2E [V2DI V2DF])
+ 
  ;; BFmode vector modes.
  (define_mode_iterator VBF [V4BF V8BF])
  
***************
*** 301,307 ****
  ;; 2 and 4 lane SI modes.
  (define_mode_iterator VS [V2SI V4SI])
  
! (define_mode_iterator TX [TI TF])
  
  ;; Advanced SIMD opaque structure modes.
  (define_mode_iterator VSTRUCT [OI CI XI])
--- 311,319 ----
  ;; 2 and 4 lane SI modes.
  (define_mode_iterator VS [V2SI V4SI])
  
! (define_mode_iterator TX [TI TF TD])
! 
! (define_mode_iterator VTX [TI TF TD V16QI V8HI V4SI V2DI V8HF V4SF V2DF V8BF])
  
  ;; Advanced SIMD opaque structure modes.
  (define_mode_iterator VSTRUCT [OI CI XI])
***************
*** 403,412 ****
  				  V4x8HF V4x4SF V4x2DF V4x8BF])
  
  ;; Double scalar modes
! (define_mode_iterator DX [DI DF])
  
  ;; Duplicate of the above
! (define_mode_iterator DX2 [DI DF])
  
  ;; Single scalar modes
  (define_mode_iterator SX [SI SF])
--- 415,424 ----
  				  V4x8HF V4x4SF V4x2DF V4x8BF])
  
  ;; Double scalar modes
! (define_mode_iterator DX [DI DF DD])
  
  ;; Duplicate of the above
! (define_mode_iterator DX2 [DI DF DD])
  
  ;; Single scalar modes
  (define_mode_iterator SX [SI SF])
***************
*** 976,981 ****
--- 988,994 ----
      UNSPECV_LX			; Represent a load-exclusive.
      UNSPECV_SX			; Represent a store-exclusive.
      UNSPECV_LDA			; Represent an atomic load or load-acquire.
+     UNSPECV_LDAP		; Represent an atomic acquire load with RCpc semantics.
      UNSPECV_STL			; Represent an atomic store or store-release.
      UNSPECV_ATOMIC_CMPSW	; Represent an atomic compare swap.
      UNSPECV_ATOMIC_EXCHG	; Represent an atomic exchange.
***************
*** 1060,1071 ****
  (define_mode_attr nunits [(V8QI "8") (V16QI "16")
  			  (V4HI "4") (V8HI "8")
  			  (V2SI "2") (V4SI "4")
! 			  (V2DI "2") (V8DI "8")
  			  (V4HF "4") (V8HF "8")
  			  (V4BF "4") (V8BF "8")
  			  (V2SF "2") (V4SF "4")
  			  (V1DF "1") (V2DF "2")
! 			  (DI "1") (DF "1")])
  
  ;; Map a mode to the number of bits in it, if the size of the mode
  ;; is constant.
--- 1073,1085 ----
  (define_mode_attr nunits [(V8QI "8") (V16QI "16")
  			  (V4HI "4") (V8HI "8")
  			  (V2SI "2") (V4SI "4")
! 			  (V1DI "1") (V2DI "2")
  			  (V4HF "4") (V8HF "8")
  			  (V4BF "4") (V8BF "8")
  			  (V2SF "2") (V4SF "4")
  			  (V1DF "1") (V2DF "2")
! 			  (DI "1") (DF "1")
! 			  (V8DI "8")])
  
  ;; Map a mode to the number of bits in it, if the size of the mode
  ;; is constant.
***************
*** 1082,1087 ****
--- 1096,1103 ----
  
  ;; Give the number of bits in the mode
  (define_mode_attr sizen [(QI "8") (HI "16") (SI "32") (DI "64")])
+ (define_mode_attr ZEROM [(QI "SI") (HI "SI") (SI "SI") (DI "DI")])
+ (define_mode_attr zerom [(QI "si") (HI "si") (SI "si") (DI "di")])
  
  ;; Give the ordinal of the MSB in the mode
  (define_mode_attr sizem1 [(QI "#7") (HI "#15") (SI "#31") (DI "#63")
***************
*** 1435,1440 ****
--- 1451,1462 ----
  			 (V2DI "di")    (V2SF  "sf")
  			 (V4SF "v2sf")  (V2DF  "df")])
  
+ ;; Single-element half modes of quad vector modes.
+ (define_mode_attr V1HALF [(V2DI "V1DI")  (V2DF  "V1DF")])
+ 
+ ;; Single-element half modes of quad vector modes, in lower-case
+ (define_mode_attr V1half [(V2DI "v1di")  (V2DF  "v1df")])
+ 
  ;; Double modes of vector modes.
  (define_mode_attr VDBL [(V8QI "V16QI") (V4HI "V8HI")
  			(V4HF "V8HF")  (V4BF "V8BF")
***************
*** 2112,2118 ****
  ;; -------------------------------------------------------------------
  
  ;; This code iterator allows the various shifts supported on the core
! (define_code_iterator SHIFT [ashift ashiftrt lshiftrt rotatert])
  
  ;; This code iterator allows the shifts supported in arithmetic instructions
  (define_code_iterator ASHIFT [ashift ashiftrt lshiftrt])
--- 2134,2143 ----
  ;; -------------------------------------------------------------------
  
  ;; This code iterator allows the various shifts supported on the core
! (define_code_iterator SHIFT [ashift ashiftrt lshiftrt rotatert rotate])
! 
! ;; This code iterator allows all shifts except for rotates.
! (define_code_iterator SHIFT_no_rotate [ashift ashiftrt lshiftrt])
  
  ;; This code iterator allows the shifts supported in arithmetic instructions
  (define_code_iterator ASHIFT [ashift ashiftrt lshiftrt])
***************
*** 2164,2169 ****
--- 2189,2197 ----
  ;; Code iterator for variants of vector max and min.
  (define_code_iterator MAXMIN [smax smin umax umin])
  
+ ;; Code iterator for min/max ops but without UMAX.
+ (define_code_iterator MAXMIN_NOUMAX [smax smin umin])
+ 
  (define_code_iterator FMAXMIN [smax smin])
  
  ;; Signed and unsigned max operations.
***************
*** 2242,2247 ****
--- 2270,2276 ----
  			 (ashiftrt "ashr")
  			 (lshiftrt "lshr")
  			 (rotatert "rotr")
+ 			 (rotate   "rotl")
  			 (sign_extend "extend")
  			 (zero_extend "zero_extend")
  			 (sign_extract "extv")
***************
*** 2331,2337 ****
  
  ;; Similar for the instruction mnemonics
  (define_code_attr shift [(ashift "lsl") (ashiftrt "asr")
! 			 (lshiftrt "lsr") (rotatert "ror")])
  
  ;; Op prefix for shift right and accumulate.
  (define_code_attr sra_op [(ashiftrt "s") (lshiftrt "u")])
--- 2360,2369 ----
  
  ;; Similar for the instruction mnemonics
  (define_code_attr shift [(ashift "lsl") (ashiftrt "asr")
! 			 (lshiftrt "lsr") (rotatert "ror") (rotate "ror")])
! ;; True if shift is rotate left.
! (define_code_attr is_rotl [(ashift "0") (ashiftrt "0")
! 			   (lshiftrt "0") (rotatert "0") (rotate "1")])
  
  ;; Op prefix for shift right and accumulate.
  (define_code_attr sra_op [(ashiftrt "s") (lshiftrt "u")])
***************
*** 3112,3117 ****
--- 3144,3151 ----
  
  (define_int_iterator SVE_BRK_UNARY [UNSPEC_BRKA UNSPEC_BRKB])
  
+ (define_int_iterator SVE_BRKP [UNSPEC_BRKPA UNSPEC_BRKPB])
+ 
  (define_int_iterator SVE_BRK_BINARY [UNSPEC_BRKN UNSPEC_BRKPA UNSPEC_BRKPB])
  
  (define_int_iterator SVE_PITER [UNSPEC_PFIRST UNSPEC_PNEXT])
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/predicates.md gcc-13.1.0/gcc/config/aarch64/predicates.md
*** gcc-12.2.0/gcc/config/aarch64/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AArch64 architecture.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 146,152 ****
  
  (define_predicate "aarch64_pluslong_immediate"
    (and (match_code "const_int")
!        (match_test "(INTVAL (op) < 0xffffff && INTVAL (op) > -0xffffff)")))
  
  (define_predicate "aarch64_pluslong_strict_immedate"
    (and (match_operand 0 "aarch64_pluslong_immediate")
--- 146,168 ----
  
  (define_predicate "aarch64_pluslong_immediate"
    (and (match_code "const_int")
!        (match_test "IN_RANGE (INTVAL (op), -0xffffff, 0xffffff)")))
! 
! (define_predicate "aarch64_sminmax_immediate"
!   (and (match_code "const_int")
!        (match_test "IN_RANGE (INTVAL (op), -128, 127)")))
! 
! (define_predicate "aarch64_sminmax_operand"
!   (ior (match_operand 0 "register_operand")
!        (match_operand 0 "aarch64_sminmax_immediate")))
! 
! (define_predicate "aarch64_uminmax_immediate"
!   (and (match_code "const_int")
!        (match_test "IN_RANGE (INTVAL (op), 0, 255)")))
! 
! (define_predicate "aarch64_uminmax_operand"
!   (ior (match_operand 0 "register_operand")
!        (match_operand 0 "aarch64_uminmax_immediate")))
  
  (define_predicate "aarch64_pluslong_strict_immedate"
    (and (match_operand 0 "aarch64_pluslong_immediate")
***************
*** 660,665 ****
--- 676,685 ----
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "aarch64_sve_ld1r_operand")))
  
+ (define_predicate "aarch64_sve_dup_ld1rq_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "aarch64_sve_ld1rq_operand")))
+ 
  (define_predicate "aarch64_sve_ptrue_svpattern_immediate"
    (and (match_code "const")
         (match_test "aarch64_sve_ptrue_svpattern_p (op, NULL)")))
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/rtems.h gcc-13.1.0/gcc/config/aarch64/rtems.h
*** gcc-12.2.0/gcc/config/aarch64/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RTEMS based AARCH64 system.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RTEMS based AARCH64 system.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/saphira.md gcc-13.1.0/gcc/config/aarch64/saphira.md
*** gcc-12.2.0/gcc/config/aarch64/saphira.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/saphira.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Saphira pipeline description
! ;; Copyright (C) 2017-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Saphira pipeline description
! ;; Copyright (C) 2017-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/t-aarch64 gcc-13.1.0/gcc/config/aarch64/t-aarch64
*** gcc-12.2.0/gcc/config/aarch64/t-aarch64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/t-aarch64	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2022 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2023 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
***************
*** 18,28 ****
  #  along with GCC; see the file COPYING3.  If not see
  #  <http://www.gnu.org/licenses/>.
  
! TM_H += $(srcdir)/config/aarch64/aarch64-cores.def
  OPTIONS_H_EXTRA += $(srcdir)/config/aarch64/aarch64-cores.def \
! 		   $(srcdir)/config/aarch64/aarch64-arches.def \
! 		   $(srcdir)/config/aarch64/aarch64-fusion-pairs.def \
! 		   $(srcdir)/config/aarch64/aarch64-tuning-flags.def
  
  $(srcdir)/config/aarch64/aarch64-tune.md: s-aarch64-tune-md; @true
  s-aarch64-tune-md: $(srcdir)/config/aarch64/gentune.sh \
--- 18,28 ----
  #  along with GCC; see the file COPYING3.  If not see
  #  <http://www.gnu.org/licenses/>.
  
! TM_H += $(srcdir)/config/aarch64/aarch64-fusion-pairs.def \
! 	$(srcdir)/config/aarch64/aarch64-tuning-flags.def \
! 	$(srcdir)/config/aarch64/aarch64-option-extensions.def
  OPTIONS_H_EXTRA += $(srcdir)/config/aarch64/aarch64-cores.def \
! 		   $(srcdir)/config/aarch64/aarch64-arches.def
  
  $(srcdir)/config/aarch64/aarch64-tune.md: s-aarch64-tune-md; @true
  s-aarch64-tune-md: $(srcdir)/config/aarch64/gentune.sh \
*************** falkor-tag-collision-avoidance.o: \
*** 161,174 ****
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/aarch64/falkor-tag-collision-avoidance.cc
  
! aarch64-bti-insert.o: $(srcdir)/config/aarch64/aarch64-bti-insert.cc \
      $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(REGS_H) insn-config.h $(RTL_BASE_H) \
      dominance.h cfg.h cfganal.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(RECOG_H) \
      output.h hash-map.h $(DF_H) $(OBSTACK_H) $(TARGET_H) $(RTL_H) \
      $(CONTEXT_H) $(TREE_PASS_H) regrename.h \
      $(srcdir)/config/aarch64/aarch64-protos.h
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
! 		$(srcdir)/config/aarch64/aarch64-bti-insert.cc
  
  aarch64-cc-fusion.o: $(srcdir)/config/aarch64/aarch64-cc-fusion.cc \
      $(CONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(BACKEND_H) $(RTL_H) $(DF_H) \
--- 161,174 ----
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/aarch64/falkor-tag-collision-avoidance.cc
  
! aarch-bti-insert.o: $(srcdir)/config/arm/aarch-bti-insert.cc \
      $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(REGS_H) insn-config.h $(RTL_BASE_H) \
      dominance.h cfg.h cfganal.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(RECOG_H) \
      output.h hash-map.h $(DF_H) $(OBSTACK_H) $(TARGET_H) $(RTL_H) \
      $(CONTEXT_H) $(TREE_PASS_H) regrename.h \
      $(srcdir)/config/aarch64/aarch64-protos.h
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
! 		$(srcdir)/config/arm/aarch-bti-insert.cc
  
  aarch64-cc-fusion.o: $(srcdir)/config/aarch64/aarch64-cc-fusion.cc \
      $(CONFIG_H) $(SYSTEM_H) $(CORETYPES_H) $(BACKEND_H) $(RTL_H) $(DF_H) \
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/t-aarch64-freebsd gcc-13.1.0/gcc/config/aarch64/t-aarch64-freebsd
*** gcc-12.2.0/gcc/config/aarch64/t-aarch64-freebsd	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/t-aarch64-freebsd	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/t-aarch64-linux gcc-13.1.0/gcc/config/aarch64/t-aarch64-linux
*** gcc-12.2.0/gcc/config/aarch64/t-aarch64-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/t-aarch64-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2022 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2009-2023 Free Software Foundation, Inc.
  #  Contributed by ARM Ltd.
  #
  #  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/t-aarch64-netbsd gcc-13.1.0/gcc/config/aarch64/t-aarch64-netbsd
*** gcc-12.2.0/gcc/config/aarch64/t-aarch64-netbsd	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/t-aarch64-netbsd	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
--- 1,5 ----
  # Machine description for AArch64 architecture.
! #  Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  #  This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/t-aarch64-vxworks gcc-13.1.0/gcc/config/aarch64/t-aarch64-vxworks
*** gcc-12.2.0/gcc/config/aarch64/t-aarch64-vxworks	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/t-aarch64-vxworks	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilibs for VxWorks.
  #
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Multilibs for VxWorks.
  #
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 20,22 ****
--- 20,27 ----
  
  MULTILIB_OPTIONS += mrtp
  MULTILIB_DIRNAMES += mrtp
+ 
+ # Setup a separate multilib for mcmodel=large, for which
+ # we may not have shared lib support unlike with -mrtp alone.
+ MULTILIB_OPTIONS += mcmodel=large
+ MULTILIB_DIRNAMES += large
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/thunderx.md gcc-13.1.0/gcc/config/aarch64/thunderx.md
*** gcc-12.2.0/gcc/config/aarch64/thunderx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/thunderx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Cavium ThunderX pipeline description
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; Written by Andrew Pinski  <apinski@cavium.com>
  
--- 1,5 ----
  ;; Cavium ThunderX pipeline description
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; Written by Andrew Pinski  <apinski@cavium.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/thunderx2t99.md gcc-13.1.0/gcc/config/aarch64/thunderx2t99.md
*** gcc-12.2.0/gcc/config/aarch64/thunderx2t99.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/thunderx2t99.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Cavium ThunderX 2 CN99xx pipeline description
! ;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Cavium, Broadcom and Mentor Embedded.
  
--- 1,5 ----
  ;; Cavium ThunderX 2 CN99xx pipeline description
! ;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Cavium, Broadcom and Mentor Embedded.
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/thunderx3t110.md gcc-13.1.0/gcc/config/aarch64/thunderx3t110.md
*** gcc-12.2.0/gcc/config/aarch64/thunderx3t110.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/thunderx3t110.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Cavium ThunderX 3 CN11xx pipeline description
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Marvell
  
--- 1,5 ----
  ;; Cavium ThunderX 3 CN11xx pipeline description
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Marvell
  
diff -Nrcpad gcc-12.2.0/gcc/config/aarch64/tsv110.md gcc-13.1.0/gcc/config/aarch64/tsv110.md
*** gcc-12.2.0/gcc/config/aarch64/tsv110.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/aarch64/tsv110.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; tsv110 pipeline description
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; tsv110 pipeline description
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha-modes.def gcc-13.1.0/gcc/config/alpha/alpha-modes.def
*** gcc-12.2.0/gcc/config/alpha/alpha-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Alpha extra machine modes. 
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Alpha extra machine modes. 
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha-passes.def gcc-13.1.0/gcc/config/alpha/alpha-passes.def
*** gcc-12.2.0/gcc/config/alpha/alpha-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for DEC Alpha
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for DEC Alpha
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha-protos.h gcc-13.1.0/gcc/config/alpha/alpha-protos.h
*** gcc-12.2.0/gcc/config/alpha/alpha-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for alpha.cc functions used in the md file & elsewhere.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for alpha.cc functions used in the md file & elsewhere.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha.cc gcc-13.1.0/gcc/config/alpha/alpha.cc
*** gcc-12.2.0/gcc/config/alpha/alpha.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on the DEC Alpha.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on the DEC Alpha.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
*************** alpha_setup_incoming_varargs (cumulative
*** 6084,6091 ****
  {
    CUMULATIVE_ARGS cum = *get_cumulative_args (pcum);
  
!   /* Skip the current argument.  */
!   targetm.calls.function_arg_advance (pack_cumulative_args (&cum), arg);
  
  #if TARGET_ABI_OPEN_VMS
    /* For VMS, we allocate space for all 6 arg registers plus a count.
--- 6084,6092 ----
  {
    CUMULATIVE_ARGS cum = *get_cumulative_args (pcum);
  
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     /* Skip the current argument.  */
!     targetm.calls.function_arg_advance (pack_cumulative_args (&cum), arg);
  
  #if TARGET_ABI_OPEN_VMS
    /* For VMS, we allocate space for all 6 arg registers plus a count.
*************** alpha_output_mi_thunk_osf (FILE *file, t
*** 8458,8467 ****
  }
  #endif /* TARGET_ABI_OSF */
  
- /* Debugging support.  */
- 
- #include "gstab.h"
- 
  /* Name of the file containing the current function.  */
  
  static const char *current_function_file = "";
--- 8459,8464 ----
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha.h gcc-13.1.0/gcc/config/alpha/alpha.h
*** gcc-12.2.0/gcc/config/alpha/alpha.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for DEC Alpha.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for DEC Alpha.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  This file is part of GCC.
*************** enum reg_class {
*** 638,644 ****
     can use DWARF_ALT_FRAME_RETURN_COLUMN defined below.  This is just the same
     as the default definition in dwarf2out.cc.  */
  #undef DWARF_FRAME_REGNUM
! #define DWARF_FRAME_REGNUM(REG) DBX_REGISTER_NUMBER (REG)
  
  /* Before the prologue, RA lives in $26.  */
  #define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (Pmode, 26)
--- 638,644 ----
     can use DWARF_ALT_FRAME_RETURN_COLUMN defined below.  This is just the same
     as the default definition in dwarf2out.cc.  */
  #undef DWARF_FRAME_REGNUM
! #define DWARF_FRAME_REGNUM(REG) DEBUGGER_REGNO (REG)
  
  /* Before the prologue, RA lives in $26.  */
  #define INCOMING_RETURN_ADDR_RTX  gen_rtx_REG (Pmode, 26)
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha.md gcc-13.1.0/gcc/config/alpha/alpha.md
*** gcc-12.2.0/gcc/config/alpha/alpha.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for DEC Alpha for GNU C compiler
! ;; Copyright (C) 1992-2022 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for DEC Alpha for GNU C compiler
! ;; Copyright (C) 1992-2023 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/alpha.opt gcc-13.1.0/gcc/config/alpha/alpha.opt
*** gcc-12.2.0/gcc/config/alpha/alpha.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/alpha.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the DEC Alpha port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the DEC Alpha port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/constraints.md gcc-13.1.0/gcc/config/alpha/constraints.md
*** gcc-12.2.0/gcc/config/alpha/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for DEC Alpha.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for DEC Alpha.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/driver-alpha.cc gcc-13.1.0/gcc/config/alpha/driver-alpha.cc
*** gcc-12.2.0/gcc/config/alpha/driver-alpha.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/driver-alpha.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by Arthur Loiret <aloiret@debian.org>
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by Arthur Loiret <aloiret@debian.org>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/elf.h gcc-13.1.0/gcc/config/alpha/elf.h
*** gcc-12.2.0/gcc/config/alpha/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for DEC Alpha w/ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Richard Henderson (rth@tamu.edu).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for DEC Alpha w/ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Richard Henderson (rth@tamu.edu).
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 22,28 ****
  #define CC1_SPEC  "%{G*}"
  
  #undef  ASM_SPEC
! #define ASM_SPEC  "%{G*} %{relax:-relax} %{!gstabs*:-no-mdebug}%{gstabs*:-mdebug} %{mcpu=*:-m%*}"
  
  /* Do not output a .file directive at the beginning of the input file.  */
   
--- 22,28 ----
  #define CC1_SPEC  "%{G*}"
  
  #undef  ASM_SPEC
! #define ASM_SPEC  "%{G*} %{relax:-relax} %{mcpu=*:-m%*}"
  
  /* Do not output a .file directive at the beginning of the input file.  */
   
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/elf.opt gcc-13.1.0/gcc/config/alpha/elf.opt
*** gcc-12.2.0/gcc/config/alpha/elf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/elf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Alpha ELF options.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Alpha ELF options.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/ev4.md gcc-13.1.0/gcc/config/alpha/ev4.md
*** gcc-12.2.0/gcc/config/alpha/ev4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/ev4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Alpha EV4.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Alpha EV4.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/ev5.md gcc-13.1.0/gcc/config/alpha/ev5.md
*** gcc-12.2.0/gcc/config/alpha/ev5.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/ev5.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Alpha EV5.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Alpha EV5.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/ev6.md gcc-13.1.0/gcc/config/alpha/ev6.md
*** gcc-12.2.0/gcc/config/alpha/ev6.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/ev6.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Alpha EV6.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Alpha EV6.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/linux-elf.h gcc-13.1.0/gcc/config/alpha/linux-elf.h
*** gcc-12.2.0/gcc/config/alpha/linux-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/linux-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler
     for Alpha Linux-based GNU systems using ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler
     for Alpha Linux-based GNU systems using ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/linux.h gcc-13.1.0/gcc/config/alpha/linux.h
*** gcc-12.2.0/gcc/config/alpha/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for Alpha Linux-based GNU systems.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for Alpha Linux-based GNU systems.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Richard Henderson.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 106,112 ****
  
  #undef	ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
  
  #define LINK_GCC_C_SEQUENCE_SPEC \
--- 106,112 ----
  
  #undef	ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
  
  #define LINK_GCC_C_SEQUENCE_SPEC \
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/netbsd.h gcc-13.1.0/gcc/config/alpha/netbsd.h
*** gcc-12.2.0/gcc/config/alpha/netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for Alpha NetBSD systems.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for Alpha NetBSD systems.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/openbsd.h gcc-13.1.0/gcc/config/alpha/openbsd.h
*** gcc-12.2.0/gcc/config/alpha/openbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/openbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for an alpha OpenBSD target.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration file for an alpha OpenBSD target.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/predicates.md gcc-13.1.0/gcc/config/alpha/predicates.md
*** gcc-12.2.0/gcc/config/alpha/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for DEC Alpha.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for DEC Alpha.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/sync.md gcc-13.1.0/gcc/config/alpha/sync.md
*** gcc-12.2.0/gcc/config/alpha/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for Alpha synchronization instructions.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for Alpha synchronization instructions.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/t-alpha gcc-13.1.0/gcc/config/alpha/t-alpha
*** gcc-12.2.0/gcc/config/alpha/t-alpha	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/t-alpha	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/t-vms gcc-13.1.0/gcc/config/alpha/t-vms
*** gcc-12.2.0/gcc/config/alpha/t-vms	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/t-vms	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1996-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1996-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/alpha/vms.h gcc-13.1.0/gcc/config/alpha/vms.h
*** gcc-12.2.0/gcc/config/alpha/vms.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/alpha/vms.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Output variables, constants and external declarations, for GNU compiler.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Output variables, constants and external declarations, for GNU compiler.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-arch.h gcc-13.1.0/gcc/config/arc/arc-arch.h
*** gcc-12.2.0/gcc/config/arc/arc-arch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-arch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of types that are used to store ARC architecture and
     device information.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu (claziss@synopsys.com)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of types that are used to store ARC architecture and
     device information.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu (claziss@synopsys.com)
  
  This file is part of GCC.
*************** enum arc_tune_attr
*** 77,83 ****
      ARC_TUNE_CORE_3,
      ARC_TUNE_ARCHS4X,
      ARC_TUNE_ARCHS4XD,
!     ARC_TUNE_ARCHS4XD_SLOW
    };
  
  /* Extra options for a processor template to hold any CPU specific
--- 77,84 ----
      ARC_TUNE_CORE_3,
      ARC_TUNE_ARCHS4X,
      ARC_TUNE_ARCHS4XD,
!     ARC_TUNE_ARCHS4XD_SLOW,
!     ARC_TUNE_ARCHS4X_REL31A
    };
  
  /* Extra options for a processor template to hold any CPU specific
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-arches.def gcc-13.1.0/gcc/config/arc/arc-arches.def
*** gcc-12.2.0/gcc/config/arc/arc-arches.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-arches.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ARC ARCH architectures.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ARC ARCH architectures.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-c.cc gcc-13.1.0/gcc/config/arc/arc-c.cc
*** gcc-12.2.0/gcc/config/arc/arc-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-c.def gcc-13.1.0/gcc/config/arc/arc-c.def
*** gcc-12.2.0/gcc/config/arc/arc-c.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-c.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-cpus.def gcc-13.1.0/gcc/config/arc/arc-cpus.def
*** gcc-12.2.0/gcc/config/arc/arc-cpus.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-cpus.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ARC CPU architectures.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ARC CPU architectures.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** ARC_CPU (hs38,	     hs, FL_MPYOPT_9|FL_D
*** 64,69 ****
--- 64,70 ----
  ARC_CPU (hs38_linux, hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64|FL_FPU_FPUD_ALL, NONE, NONE)
  ARC_CPU (hs4x,  hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64, NONE, ARCHS4X)
  ARC_CPU (hs4xd, hs, FL_MPYOPT_9|FL_DIVREM|FL_LL64, NONE, ARCHS4XD)
+ ARC_CPU (hs4x_rel31, hs, FL_MPYOPT_2|FL_DIVREM|FL_LL64, NONE, ARCHS4X_REL31A)
  
  ARC_CPU (arc600,	  6xx, FL_BS, NONE, ARC600)
  ARC_CPU (arc600_norm,	  6xx, FL_BS|FL_NORM, NONE, ARC600)
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-modes.def gcc-13.1.0/gcc/config/arc/arc-modes.def
*** gcc-12.2.0/gcc/config/arc/arc-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  		on behalf of Synopsys Inc.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-options.def gcc-13.1.0/gcc/config/arc/arc-options.def
*** gcc-12.2.0/gcc/config/arc/arc-options.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-options.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ARC options.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ARC options.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-opts.h gcc-13.1.0/gcc/config/arc/arc-opts.h
*** gcc-12.2.0/gcc/config/arc/arc-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* GCC option-handling definitions for the Synopsys DesignWare ARC architecture.
  
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* GCC option-handling definitions for the Synopsys DesignWare ARC architecture.
  
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-passes.def gcc-13.1.0/gcc/config/arc/arc-passes.def
*** gcc-12.2.0/gcc/config/arc/arc-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for ARC.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for ARC.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-protos.h gcc-13.1.0/gcc/config/arc/arc-protos.h
*** gcc-12.2.0/gcc/config/arc/arc-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-simd.h gcc-13.1.0/gcc/config/arc/arc-simd.h
*** gcc-12.2.0/gcc/config/arc/arc-simd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-simd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Synopsys DesignWare ARC SIMD include file.
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
     Written by Saurabh Verma (saurabh.verma@celunite.com) on behalf os Synopsys
     Inc.
  
--- 1,5 ----
  /* Synopsys DesignWare ARC SIMD include file.
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
     Written by Saurabh Verma (saurabh.verma@celunite.com) on behalf os Synopsys
     Inc.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc-tables.opt gcc-13.1.0/gcc/config/arc/arc-tables.opt
*** gcc-12.2.0/gcc/config/arc/arc-tables.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc-tables.opt	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  ; Generated by    : ./gcc/config/arc/genoptions.awk
  ; Generated from  : ./gcc/config/arc/arc-cpu.def
  ;
! ; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 2,8 ----
  ; Generated by    : ./gcc/config/arc/genoptions.awk
  ; Generated from  : ./gcc/config/arc/arc-cpu.def
  ;
! ; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** EnumValue
*** 70,75 ****
--- 70,78 ----
  Enum(processor_type) String(hs4xd) Value(PROCESSOR_hs4xd)
  
  EnumValue
+ Enum(processor_type) String(hs4x_rel31) Value(PROCESSOR_hs4x_rel31)
+ 
+ EnumValue
  Enum(processor_type) String(arc600) Value(PROCESSOR_arc600)
  
  EnumValue
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc.cc gcc-13.1.0/gcc/config/arc/arc.cc
*** gcc-12.2.0/gcc/config/arc/arc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on the Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
     Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
     behalf of Synopsys Inc.
--- 1,5 ----
  /* Subroutines used for code generation on the Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
     Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
     behalf of Synopsys Inc.
*************** arc_sched_issue_rate (void)
*** 646,653 ****
  {
    switch (arc_tune)
      {
!     case TUNE_ARCHS4X:
!     case TUNE_ARCHS4XD:
        return 3;
      default:
        break;
--- 646,653 ----
  {
    switch (arc_tune)
      {
!     case ARC_TUNE_ARCHS4X:
!     case ARC_TUNE_ARCHS4XD:
        return 3;
      default:
        break;
*************** arc_override_options (void)
*** 1458,1463 ****
--- 1458,1469 ----
    if (!OPTION_SET_P (unaligned_access) && TARGET_HS)
      unaligned_access = 1;
  
+   if (TARGET_HS && (arc_tune == ARC_TUNE_ARCHS4X_REL31A))
+     {
+       TARGET_CODE_DENSITY_FRAME = 0;
+       flag_delayed_branch = 0;
+     }
+ 
    /* These need to be done at start up.  It's convenient to do them here.  */
    arc_init ();
  }
*************** arc_init_reg_tables (void)
*** 1879,1885 ****
     Because mlo / mhi form a 64 bit value, we use different gcc internal
     register numbers to make them form a register pair as the gcc internals
     know it.  mmid gets number 57, if still available, and mlo / mhi get
!    number 58 and 59, depending on endianness.  We use DBX_REGISTER_NUMBER
     to map this back.  */
    char rname56[5] = "r56";
    char rname57[5] = "r57";
--- 1885,1891 ----
     Because mlo / mhi form a 64 bit value, we use different gcc internal
     register numbers to make them form a register pair as the gcc internals
     know it.  mmid gets number 57, if still available, and mlo / mhi get
!    number 58 and 59, depending on endianness.  We use DEBUGGER_REGNO
     to map this back.  */
    char rname56[5] = "r56";
    char rname57[5] = "r57";
*************** arc_setup_incoming_varargs (cumulative_a
*** 2444,2450 ****
    /* We must treat `__builtin_va_alist' as an anonymous arg.  */
  
    next_cum = *get_cumulative_args (args_so_far);
!   arc_function_arg_advance (pack_cumulative_args (&next_cum), arg);
    first_anon_arg = next_cum;
  
    if (FUNCTION_ARG_REGNO_P (first_anon_arg))
--- 2450,2457 ----
    /* We must treat `__builtin_va_alist' as an anonymous arg.  */
  
    next_cum = *get_cumulative_args (args_so_far);
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     arc_function_arg_advance (pack_cumulative_args (&next_cum), arg);
    first_anon_arg = next_cum;
  
    if (FUNCTION_ARG_REGNO_P (first_anon_arg))
*************** arc_setup_incoming_varargs (cumulative_a
*** 2468,2473 ****
--- 2475,2494 ----
      }
  }
  
+ /* Return TRUE if reg is ok for short instrcutions.  */
+ 
+ static bool
+ arc_check_short_reg_p (rtx op)
+ {
+   if (!REG_P (op))
+     return false;
+ 
+   if (IN_RANGE (REGNO (op) ^ 4, 4, 11))
+     return true;
+ 
+   return false;
+ }
+ 
  /* Cost functions.  */
  
  /* Provide the costs of an addressing mode that contains ADDR.
*************** arc_address_cost (rtx addr, machine_mode
*** 2479,2485 ****
    switch (GET_CODE (addr))
      {
      case REG :
!       return speed || satisfies_constraint_Rcq (addr) ? 0 : 1;
      case PRE_INC: case PRE_DEC: case POST_INC: case POST_DEC:
      case PRE_MODIFY: case POST_MODIFY:
        return !speed;
--- 2500,2506 ----
    switch (GET_CODE (addr))
      {
      case REG :
!       return speed || arc_check_short_reg_p (addr) ? 0 : 1;
      case PRE_INC: case PRE_DEC: case POST_INC: case POST_DEC:
      case PRE_MODIFY: case POST_MODIFY:
        return !speed;
*************** arc_address_cost (rtx addr, machine_mode
*** 2511,2524 ****
  		    ? COSTS_N_INSNS (1)
  		    : speed
  		    ? 0
! 		    : (satisfies_constraint_Rcq (plus0)
  		       && satisfies_constraint_O (plus1))
  		    ? 0
  		    : 1);
  	  case REG:
  	    return (speed < 1 ? 0
! 		    : (satisfies_constraint_Rcq (plus0)
! 		       && satisfies_constraint_Rcq (plus1))
  		    ? 0 : 1);
  	  case CONST :
  	  case SYMBOL_REF :
--- 2532,2545 ----
  		    ? COSTS_N_INSNS (1)
  		    : speed
  		    ? 0
! 		    : (arc_check_short_reg_p (plus0)
  		       && satisfies_constraint_O (plus1))
  		    ? 0
  		    : 1);
  	  case REG:
  	    return (speed < 1 ? 0
! 		    : (arc_check_short_reg_p (plus0)
! 		       && arc_check_short_reg_p (plus1))
  		    ? 0 : 1);
  	  case CONST :
  	  case SYMBOL_REF :
*************** arc_save_callee_enter (uint64_t gmask,
*** 3350,3356 ****
        reg = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM);
        mem = gen_frame_mem (Pmode, plus_constant (Pmode,
  						 stack_pointer_rtx,
! 						 off));
        XVECEXP (insn, 0, indx) = gen_rtx_SET (mem, reg);
        RTX_FRAME_RELATED_P (XVECEXP (insn, 0, indx++)) = 1;
        off -= UNITS_PER_WORD;
--- 3371,3377 ----
        reg = gen_rtx_REG (Pmode, RETURN_ADDR_REGNUM);
        mem = gen_frame_mem (Pmode, plus_constant (Pmode,
  						 stack_pointer_rtx,
! 						 -off));
        XVECEXP (insn, 0, indx) = gen_rtx_SET (mem, reg);
        RTX_FRAME_RELATED_P (XVECEXP (insn, 0, indx++)) = 1;
        off -= UNITS_PER_WORD;
*************** arc_save_callee_enter (uint64_t gmask,
*** 3364,3370 ****
        reg = gen_rtx_REG (SImode, regno);
        mem = gen_frame_mem (SImode, plus_constant (Pmode,
  						  stack_pointer_rtx,
! 						  off));
        XVECEXP (insn, 0, indx) = gen_rtx_SET (mem, reg);
        RTX_FRAME_RELATED_P (XVECEXP (insn, 0, indx)) = 1;
        gmask = gmask & ~(1ULL << regno);
--- 3385,3391 ----
        reg = gen_rtx_REG (SImode, regno);
        mem = gen_frame_mem (SImode, plus_constant (Pmode,
  						  stack_pointer_rtx,
! 						  -off));
        XVECEXP (insn, 0, indx) = gen_rtx_SET (mem, reg);
        RTX_FRAME_RELATED_P (XVECEXP (insn, 0, indx)) = 1;
        gmask = gmask & ~(1ULL << regno);
*************** arc_save_callee_enter (uint64_t gmask,
*** 3374,3380 ****
      {
        mem = gen_frame_mem (Pmode, plus_constant (Pmode,
  						 stack_pointer_rtx,
! 						 off));
        XVECEXP (insn, 0, indx) = gen_rtx_SET (mem, hard_frame_pointer_rtx);
        RTX_FRAME_RELATED_P (XVECEXP (insn, 0, indx++)) = 1;
        off -= UNITS_PER_WORD;
--- 3395,3401 ----
      {
        mem = gen_frame_mem (Pmode, plus_constant (Pmode,
  						 stack_pointer_rtx,
! 						 -off));
        XVECEXP (insn, 0, indx) = gen_rtx_SET (mem, hard_frame_pointer_rtx);
        RTX_FRAME_RELATED_P (XVECEXP (insn, 0, indx++)) = 1;
        off -= UNITS_PER_WORD;
*************** arc_expand_epilogue (int sibcall_p)
*** 3965,3971 ****
    if (size)
      emit_insn (gen_blockage ());
  
!   if (ARC_INTERRUPT_P (fn_type) && restore_fp)
      {
        /* We need to restore FP before any SP operation in an
  	 interrupt.  */
--- 3986,3992 ----
    if (size)
      emit_insn (gen_blockage ());
  
!   if (ARC_INTERRUPT_P (fn_type))
      {
        /* We need to restore FP before any SP operation in an
  	 interrupt.  */
*************** arc_store_addr_hazard_p (rtx_insn* produ
*** 7817,7822 ****
--- 7838,7952 ----
    return arc_store_addr_hazard_internal_p (producer, consumer);
  }
  
+ /* Return length adjustment for INSN.
+    For ARC600:
+    A write to a core reg greater or equal to 32 must not be immediately
+    followed by a use.  Anticipate the length requirement to insert a nop
+    between PRED and SUCC to prevent a hazard.  */
+ 
+ static int
+ arc600_corereg_hazard (rtx_insn *pred, rtx_insn *succ)
+ {
+   if (!TARGET_ARC600)
+     return 0;
+   if (GET_CODE (PATTERN (pred)) == SEQUENCE)
+     pred = as_a <rtx_sequence *> (PATTERN (pred))->insn (1);
+   if (GET_CODE (PATTERN (succ)) == SEQUENCE)
+     succ = as_a <rtx_sequence *> (PATTERN (succ))->insn (0);
+   if (recog_memoized (pred) == CODE_FOR_mulsi_600
+       || recog_memoized (pred) == CODE_FOR_umul_600
+       || recog_memoized (pred) == CODE_FOR_mac_600
+       || recog_memoized (pred) == CODE_FOR_mul64_600
+       || recog_memoized (pred) == CODE_FOR_mac64_600
+       || recog_memoized (pred) == CODE_FOR_umul64_600
+       || recog_memoized (pred) == CODE_FOR_umac64_600)
+     return 0;
+   subrtx_iterator::array_type array;
+   FOR_EACH_SUBRTX (iter, array, PATTERN (pred), NONCONST)
+     {
+       const_rtx x = *iter;
+       switch (GET_CODE (x))
+ 	{
+ 	case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC:
+ 	  break;
+ 	default:
+ 	  /* This is also fine for PRE/POST_MODIFY, because they
+ 	     contain a SET.  */
+ 	  continue;
+ 	}
+       rtx dest = XEXP (x, 0);
+       /* Check if this sets a an extension register.  N.B. we use 61 for the
+ 	 condition codes, which is definitely not an extension register.  */
+       if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61
+ 	  /* Check if the same register is used by the PAT.  */
+ 	  && (refers_to_regno_p
+ 	      (REGNO (dest),
+ 	       REGNO (dest) + (GET_MODE_SIZE (GET_MODE (dest)) + 3) / 4U,
+ 	       PATTERN (succ), 0)))
+ 	return 4;
+     }
+   return 0;
+ }
+ 
+ /* For ARC600:
+    A write to a core reg greater or equal to 32 must not be immediately
+    followed by a use.  Anticipate the length requirement to insert a nop
+    between PRED and SUCC to prevent a hazard.  */
+ 
+ int
+ arc_hazard (rtx_insn *pred, rtx_insn *succ)
+ {
+   if (!pred || !INSN_P (pred) || !succ || !INSN_P (succ))
+     return 0;
+ 
+   if (TARGET_ARC600)
+     return arc600_corereg_hazard (pred, succ);
+ 
+   return 0;
+ }
+ 
+ /* When compiling for release 310a, insert a nop before any
+    conditional jump.  */
+ 
+ static int
+ arc_check_release31a (rtx_insn *pred, rtx_insn *succ)
+ {
+   if (!pred || !INSN_P (pred) || !succ || !INSN_P (succ))
+     return 0;
+ 
+   if (!JUMP_P (pred) && !single_set (pred))
+     return 0;
+ 
+   if (!JUMP_P (succ) && !single_set (succ))
+     return 0;
+ 
+   if (TARGET_HS && (arc_tune == ARC_TUNE_ARCHS4X_REL31A))
+     switch (get_attr_type (pred))
+       {
+       case TYPE_STORE:
+ 	switch (get_attr_type (succ))
+ 	  {
+ 	  case TYPE_BRCC:
+ 	  case TYPE_BRCC_NO_DELAY_SLOT:
+ 	  case TYPE_LOOP_END:
+ 	    return 1;
+ 	  default:
+ 	    break;
+ 	  }
+ 	break;
+       case TYPE_BRCC:
+       case TYPE_BRCC_NO_DELAY_SLOT:
+       case TYPE_LOOP_END:
+ 	if (get_attr_type (succ) == TYPE_STORE)
+ 	  return 1;
+ 	break;
+       default:
+ 	break;
+       }
+ 
+   return 0;
+ }
+ 
  /* The same functionality as arc_hazard.  It is called in machine
     reorg before any other optimization.  Hence, the NOP size is taken
     into account when doing branch shortening.  */
*************** workaround_arc_anomaly (void)
*** 7830,7839 ****
    for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
      {
        succ0 = next_real_insn (insn);
!       if (arc_hazard (insn, succ0))
! 	{
! 	  emit_insn_before (gen_nopv (), succ0);
! 	}
      }
  
    if (!TARGET_ARC700)
--- 7960,7967 ----
    for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
      {
        succ0 = next_real_insn (insn);
!       if (arc_hazard (insn, succ0) || arc_check_release31a (insn, succ0))
! 	emit_insn_before (gen_nopv (), succ0);
      }
  
    if (!TARGET_ARC700)
*************** arc_output_addsi (rtx *operands, bool co
*** 8890,8897 ****
    int intval = (REG_P (operands[2]) ? 1
  		: CONST_INT_P (operands[2]) ? INTVAL (operands[2]) : 0xbadc057);
    int neg_intval = -intval;
!   int short_0 = satisfies_constraint_Rcq (operands[0]);
!   int short_p = (!cond_p && short_0 && satisfies_constraint_Rcq (operands[1]));
    int ret = 0;
  
  #define REG_H_P(OP) (REG_P (OP) && ((TARGET_V2 && REGNO (OP) <= 31	\
--- 9018,9025 ----
    int intval = (REG_P (operands[2]) ? 1
  		: CONST_INT_P (operands[2]) ? INTVAL (operands[2]) : 0xbadc057);
    int neg_intval = -intval;
!   int short_0 = arc_check_short_reg_p (operands[0]);
!   int short_p = (!cond_p && short_0 && arc_check_short_reg_p (operands[1]));
    int ret = 0;
  
  #define REG_H_P(OP) (REG_P (OP) && ((TARGET_V2 && REGNO (OP) <= 31	\
*************** arc_output_addsi (rtx *operands, bool co
*** 8924,8930 ****
  	 patterns.  */
        if (short_p
  	  && ((REG_H_P (operands[2])
! 	       && (match || satisfies_constraint_Rcq (operands[2])))
  	      || (CONST_INT_P (operands[2])
  		  && ((unsigned) intval <= (match ? 127 : 7)))))
  	ADDSI_OUTPUT1 ("add%? %0,%1,%2 ;1");
--- 9052,9058 ----
  	 patterns.  */
        if (short_p
  	  && ((REG_H_P (operands[2])
! 	       && (match || arc_check_short_reg_p (operands[2])))
  	      || (CONST_INT_P (operands[2])
  		  && ((unsigned) intval <= (match ? 127 : 7)))))
  	ADDSI_OUTPUT1 ("add%? %0,%1,%2 ;1");
*************** arc_output_addsi (rtx *operands, bool co
*** 8951,8957 ****
        /* Generate add_s r0,b,u6; add_s r1,b,u6 patterns.  */
        if (TARGET_CODE_DENSITY && REG_P (operands[0]) && REG_P (operands[1])
  	  && ((REGNO (operands[0]) == 0) || (REGNO (operands[0]) == 1))
! 	  && satisfies_constraint_Rcq (operands[1])
  	  && satisfies_constraint_L (operands[2]))
  	ADDSI_OUTPUT1 ("add%? %0,%1,%2 ;6");
      }
--- 9079,9085 ----
        /* Generate add_s r0,b,u6; add_s r1,b,u6 patterns.  */
        if (TARGET_CODE_DENSITY && REG_P (operands[0]) && REG_P (operands[1])
  	  && ((REGNO (operands[0]) == 0) || (REGNO (operands[0]) == 1))
! 	  && arc_check_short_reg_p (operands[1])
  	  && satisfies_constraint_L (operands[2]))
  	ADDSI_OUTPUT1 ("add%? %0,%1,%2 ;6");
      }
*************** disi_highpart (rtx in)
*** 9324,9379 ****
    return simplify_gen_subreg (SImode, in, DImode, TARGET_BIG_ENDIAN ? 0 : 4);
  }
  
- /* Return length adjustment for INSN.
-    For ARC600:
-    A write to a core reg greater or equal to 32 must not be immediately
-    followed by a use.  Anticipate the length requirement to insert a nop
-    between PRED and SUCC to prevent a hazard.  */
- 
- static int
- arc600_corereg_hazard (rtx_insn *pred, rtx_insn *succ)
- {
-   if (!TARGET_ARC600)
-     return 0;
-   if (GET_CODE (PATTERN (pred)) == SEQUENCE)
-     pred = as_a <rtx_sequence *> (PATTERN (pred))->insn (1);
-   if (GET_CODE (PATTERN (succ)) == SEQUENCE)
-     succ = as_a <rtx_sequence *> (PATTERN (succ))->insn (0);
-   if (recog_memoized (pred) == CODE_FOR_mulsi_600
-       || recog_memoized (pred) == CODE_FOR_umul_600
-       || recog_memoized (pred) == CODE_FOR_mac_600
-       || recog_memoized (pred) == CODE_FOR_mul64_600
-       || recog_memoized (pred) == CODE_FOR_mac64_600
-       || recog_memoized (pred) == CODE_FOR_umul64_600
-       || recog_memoized (pred) == CODE_FOR_umac64_600)
-     return 0;
-   subrtx_iterator::array_type array;
-   FOR_EACH_SUBRTX (iter, array, PATTERN (pred), NONCONST)
-     {
-       const_rtx x = *iter;
-       switch (GET_CODE (x))
- 	{
- 	case SET: case POST_INC: case POST_DEC: case PRE_INC: case PRE_DEC:
- 	  break;
- 	default:
- 	  /* This is also fine for PRE/POST_MODIFY, because they
- 	     contain a SET.  */
- 	  continue;
- 	}
-       rtx dest = XEXP (x, 0);
-       /* Check if this sets an extension register.  N.B. we use 61 for the
- 	 condition codes, which is definitely not an extension register.  */
-       if (REG_P (dest) && REGNO (dest) >= 32 && REGNO (dest) < 61
- 	  /* Check if the same register is used by the PAT.  */
- 	  && (refers_to_regno_p
- 	      (REGNO (dest),
- 	       REGNO (dest) + (GET_MODE_SIZE (GET_MODE (dest)) + 3) / 4U,
- 	       PATTERN (succ), 0)))
- 	return 4;
-     }
-   return 0;
- }
- 
  /* Given a rtx, check if it is an assembly instruction or not.  */
  
  static int
--- 9452,9457 ----
*************** arc_asm_insn_p (rtx x)
*** 9408,9430 ****
    return 0;
  }
  
- /* For ARC600:
-    A write to a core reg greater or equal to 32 must not be immediately
-    followed by a use.  Anticipate the length requirement to insert a nop
-    between PRED and SUCC to prevent a hazard.  */
- 
- int
- arc_hazard (rtx_insn *pred, rtx_insn *succ)
- {
-   if (!pred || !INSN_P (pred) || !succ || !INSN_P (succ))
-     return 0;
- 
-   if (TARGET_ARC600)
-     return arc600_corereg_hazard (pred, succ);
- 
-   return 0;
- }
- 
  /* Return length adjustment for INSN.  */
  
  int
--- 9486,9491 ----
*************** split_addsi (rtx *operands)
*** 9987,9993 ****
    /* Try for two short insns first.  Lengths being equal, we prefer
       expansions with shorter register lifetimes.  */
    if (val > 127 && val <= 255
!       && satisfies_constraint_Rcq (operands[0]))
      {
        operands[3] = operands[2];
        operands[4] = gen_rtx_PLUS (SImode, operands[0], operands[1]);
--- 10048,10054 ----
    /* Try for two short insns first.  Lengths being equal, we prefer
       expansions with shorter register lifetimes.  */
    if (val > 127 && val <= 255
!       && arc_check_short_reg_p (operands[0]))
      {
        operands[3] = operands[2];
        operands[4] = gen_rtx_PLUS (SImode, operands[0], operands[1]);
*************** split_subsi (rtx *operands)
*** 10011,10018 ****
  
    /* Try for two short insns first.  Lengths being equal, we prefer
       expansions with shorter register lifetimes.  */
!   if (satisfies_constraint_Rcq (operands[0])
!       && satisfies_constraint_Rcq (operands[2]))
      {
        if (val >= -31 && val <= 127)
  	{
--- 10072,10079 ----
  
    /* Try for two short insns first.  Lengths being equal, we prefer
       expansions with shorter register lifetimes.  */
!   if (arc_check_short_reg_p (operands[0])
!       && arc_check_short_reg_p (operands[2]))
      {
        if (val >= -31 && val <= 127)
  	{
*************** arc_lra_p (void)
*** 10390,10401 ****
    return arc_lra_flag;
  }
  
! /* ??? Should we define TARGET_REGISTER_PRIORITY?  We might perfer to use
!    Rcq registers, because some insn are shorter with them.  OTOH we already
!    have separate alternatives for this purpose, and other insns don't
!    mind, so maybe we should rather prefer the other registers?
!    We need more data, and we can only get that if we allow people to
!    try all options.  */
  static int
  arc_register_priority (int r)
  {
--- 10451,10462 ----
    return arc_lra_flag;
  }
  
! /* ??? Should we define TARGET_REGISTER_PRIORITY?  We might perfer to
!    use q registers, because some insn are shorter with them.  OTOH we
!    already have separate alternatives for this purpose, and other
!    insns don't mind, so maybe we should rather prefer the other
!    registers?  We need more data, and we can only get that if we allow
!    people to try all options.  */
  static int
  arc_register_priority (int r)
  {
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc.h gcc-13.1.0/gcc/config/arc/arc.h
*** gcc-12.2.0/gcc/config/arc/arc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Synopsys DesignWare ARC cpu.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** do { \
*** 1330,1341 ****
  
  /* Debugging information.  */
  
! /* Generate DBX and DWARF debugging information.  */
! #ifdef DBX_DEBUGGING_INFO
! #undef DBX_DEBUGGING_INFO
! #endif
! #define DBX_DEBUGGING_INFO
! 
  #ifdef DWARF2_DEBUGGING_INFO
  #undef DWARF2_DEBUGGING_INFO
  #endif
--- 1330,1336 ----
  
  /* Debugging information.  */
  
! /* Generate DWARF debugging information.  */
  #ifdef DWARF2_DEBUGGING_INFO
  #undef DWARF2_DEBUGGING_INFO
  #endif
*************** do { \
*** 1345,1352 ****
  #undef PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
! /* How to renumber registers for dbx and gdb.  */
! #define DBX_REGISTER_NUMBER(REGNO)				\
    ((TARGET_MULMAC_32BY16_SET && (REGNO) >= 56 && (REGNO) <= 57) \
     ? ((REGNO) ^ !TARGET_BIG_ENDIAN)				\
     : (TARGET_MUL64_SET && (REGNO) >= 57 && (REGNO) <= 58)	\
--- 1340,1347 ----
  #undef PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
! /* How to renumber registers for gdb.  */
! #define DEBUGGER_REGNO(REGNO)				\
    ((TARGET_MULMAC_32BY16_SET && (REGNO) >= 56 && (REGNO) <= 57) \
     ? ((REGNO) ^ !TARGET_BIG_ENDIAN)				\
     : (TARGET_MUL64_SET && (REGNO) >= 57 && (REGNO) <= 58)	\
*************** do { \
*** 1385,1393 ****
  
  #define EH_RETURN_STACKADJ_RTX   gen_rtx_REG (Pmode, 2)
  
- /* Turn off splitting of long stabs.  */
- #define DBX_CONTIN_LENGTH 0
- 
  /* Miscellaneous.  */
  
  /* Specify the machine mode that this machine uses
--- 1380,1385 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc.md gcc-13.1.0/gcc/config/arc/arc.md
*** gcc-12.2.0/gcc/config/arc/arc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  ;; Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
  ;; behalf of Synopsys Inc.
--- 1,5 ----
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  ;; Sources derived from work done by Sankhya Technologies (www.sankhya.com) on
  ;; behalf of Synopsys Inc.
***************
*** 645,666 ****
  ;;   is made that makes conditional execution required.
  
  (define_attr "tune" "none,arc600,arc7xx,arc700_4_2_std,arc700_4_2_xmac, \
! core_3, archs4x, archs4xd, archs4xd_slow"
    (const
!    (cond [(symbol_ref "arc_tune == TUNE_ARC600")
  	  (const_string "arc600")
  	  (symbol_ref "arc_tune == ARC_TUNE_ARC7XX")
  	  (const_string "arc7xx")
! 	  (symbol_ref "arc_tune == TUNE_ARC700_4_2_STD")
  	  (const_string "arc700_4_2_std")
! 	  (symbol_ref "arc_tune == TUNE_ARC700_4_2_XMAC")
  	  (const_string "arc700_4_2_xmac")
! 	  (symbol_ref "arc_tune == ARC_TUNE_CORE_3")
! 	  (const_string "core_3")
! 	  (symbol_ref "arc_tune == TUNE_ARCHS4X")
  	  (const_string "archs4x")
! 	  (ior (symbol_ref "arc_tune == TUNE_ARCHS4XD")
! 	       (symbol_ref "arc_tune == TUNE_ARCHS4XD_SLOW"))
  	  (const_string "archs4xd")]
  	 (const_string "none"))))
  
--- 645,665 ----
  ;;   is made that makes conditional execution required.
  
  (define_attr "tune" "none,arc600,arc7xx,arc700_4_2_std,arc700_4_2_xmac, \
! archs4x, archs4xd"
    (const
!    (cond [(symbol_ref "arc_tune == ARC_TUNE_ARC600")
  	  (const_string "arc600")
  	  (symbol_ref "arc_tune == ARC_TUNE_ARC7XX")
  	  (const_string "arc7xx")
! 	  (symbol_ref "arc_tune == ARC_TUNE_ARC700_4_2_STD")
  	  (const_string "arc700_4_2_std")
! 	  (symbol_ref "arc_tune == ARC_TUNE_ARC700_4_2_XMAC")
  	  (const_string "arc700_4_2_xmac")
! 	  (ior (symbol_ref "arc_tune == ARC_TUNE_ARCHS4X")
! 	       (symbol_ref "arc_tune == ARC_TUNE_ARCHS4X_REL31A"))
  	  (const_string "archs4x")
! 	  (ior (symbol_ref "arc_tune == ARC_TUNE_ARCHS4XD")
! 	       (symbol_ref "arc_tune == ARC_TUNE_ARCHS4XD_SLOW"))
  	  (const_string "archs4xd")]
  	 (const_string "none"))))
  
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 671,683 ****
  
  (define_attr "tune_dspmpy" "none, slow, fast"
    (const
!   (cond [(ior (symbol_ref "arc_tune == TUNE_ARCHS4X")
! 	      (symbol_ref "arc_tune == TUNE_ARCHS4XD"))
  	 (const_string "fast")
! 	 (symbol_ref "arc_tune == TUNE_ARCHS4XD_SLOW")
  	 (const_string "slow")]
  	(const_string "none"))))
  
  ;; Move instructions.
  (define_expand "movqi"
    [(set (match_operand:QI 0 "move_dest_operand" "")
--- 670,691 ----
  
  (define_attr "tune_dspmpy" "none, slow, fast"
    (const
!   (cond [(ior (symbol_ref "arc_tune == ARC_TUNE_ARCHS4X")
! 	      (symbol_ref "arc_tune == ARC_TUNE_ARCHS4XD"))
  	 (const_string "fast")
! 	 (symbol_ref "arc_tune == ARC_TUNE_ARCHS4XD_SLOW")
  	 (const_string "slow")]
  	(const_string "none"))))
  
+ (define_attr "tune_store" "none, normal, rel31a"
+   (const
+   (cond [(ior (symbol_ref "arc_tune == ARC_TUNE_ARCHS4X")
+ 	      (symbol_ref "arc_tune == ARC_TUNE_ARCHS4XD"))
+ 	 (const_string "normal")
+ 	 (symbol_ref "arc_tune == ARC_TUNE_ARCHS4X_REL31A")
+ 	 (const_string "rel31a")]
+ 	(const_string "none"))))
+ 
  ;; Move instructions.
  (define_expand "movqi"
    [(set (match_operand:QI 0 "move_dest_operand" "")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 688,702 ****
  ; In order to allow the ccfsm machinery to do its work, the leading compact
  ; alternatives say 'canuse' - there is another alternative that will match
  ; when the condition codes are used.
- ; Rcq won't match if the condition is actually used; to avoid a spurious match
- ; via q, q is inactivated as constraint there.
  ; Likewise, the length of an alternative that might be shifted to conditional
  ; execution must reflect this, lest out-of-range branches are created.
  ; The iscompact attribute allows the epilogue expander to know for which
  ; insns it should lengthen the return insn.
  (define_insn "*movqi_insn"
!   [(set (match_operand:QI 0 "move_dest_operand" "=Rcq,Rcq#q,    w,Rcq#q,   h, w, w,???w,h, w,Rcq,  S,!*x,  r,r, Ucm,m,???m,  m,Usc")
! 	(match_operand:QI 1 "move_src_operand"  "  cL,   cP,Rcq#q,    P,hCm1,cL, I,?Rac,i,?i,  T,Rcq,Usd,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
    "register_operand (operands[0], QImode)
     || register_operand (operands[1], QImode)
     || (satisfies_constraint_Cm3 (operands[1])
--- 696,708 ----
  ; In order to allow the ccfsm machinery to do its work, the leading compact
  ; alternatives say 'canuse' - there is another alternative that will match
  ; when the condition codes are used.
  ; Likewise, the length of an alternative that might be shifted to conditional
  ; execution must reflect this, lest out-of-range branches are created.
  ; The iscompact attribute allows the epilogue expander to know for which
  ; insns it should lengthen the return insn.
  (define_insn "*movqi_insn"
!   [(set (match_operand:QI 0 "move_dest_operand" "=q, q,r,q,   h, w, w,???w,h, w,q,S,!*x,  r,r, Ucm,m,???m,  m,Usc")
! 	(match_operand:QI 1 "move_src_operand"  "rL,rP,q,P,hCm1,cL, I,?Rac,i,?i,T,q,Usd,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
    "register_operand (operands[0], QImode)
     || register_operand (operands[1], QImode)
     || (satisfies_constraint_Cm3 (operands[1])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 734,741 ****
    "if (prepare_move_operands (operands, HImode)) DONE;")
  
  (define_insn "*movhi_insn"
!   [(set (match_operand:HI 0 "move_dest_operand" "=Rcq,Rcq#q,    w,Rcq#q,   h, w, w,???w,Rcq#q,h, w,Rcq,  S,  r,r, Ucm,m,???m,  m,VUsc")
! 	(match_operand:HI 1 "move_src_operand" "   cL,   cP,Rcq#q,    P,hCm1,cL, I,?Rac,    i,i,?i,  T,Rcq,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
    "register_operand (operands[0], HImode)
     || register_operand (operands[1], HImode)
     || (CONSTANT_P (operands[1])
--- 740,747 ----
    "if (prepare_move_operands (operands, HImode)) DONE;")
  
  (define_insn "*movhi_insn"
!   [(set (match_operand:HI 0 "move_dest_operand" "=q, q,r,q,   h, w, w,???w,q,h, w,q,S,  r,r, Ucm,m,???m,  m,VUsc")
! 	(match_operand:HI 1 "move_src_operand" " rL,rP,q,P,hCm1,cL, I,?Rac,i,i,?i,T,q,Ucm,m,?Rac,c,?Rac,Cm3,i"))]
    "register_operand (operands[0], HImode)
     || register_operand (operands[1], HImode)
     || (CONSTANT_P (operands[1])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 785,792 ****
  ; the iscompact attribute allows the epilogue expander to know for which
  ; insns it should lengthen the return insn.
  (define_insn_and_split "*movsi_insn"		; 0  1 2 3    4   5 6   7   8   9  10  11  12  13  14  15  16    17      18  19  20    21   22 23  24   25 26  27  28
!   [(set (match_operand:SI 0 "move_dest_operand" "=q, q,r,q,   h, rl,r,  r,  r,  r, ?r,  r,  q,  h, rl,  q,  S,   Us<,RcqRck,!*x,  r,!*Rsd,!*Rcd,r,Ucm,  Usd,m,  m,VUsc")
! 	(match_operand:SI 1 "move_src_operand"  "rL,rP,q,P,hCm1,rLl,I,Clo,Chi,Cbi,Cpc,Clb,Cax,Cal,Cal,Uts,Rcq,RcqRck,   Us>,Usd,Ucm,  Usd,  Ucd,m,  r,!*Rzd,r,Cm3, C32"))]
    "register_operand (operands[0], SImode)
     || register_operand (operands[1], SImode)
     || (CONSTANT_P (operands[1])
--- 791,798 ----
  ; the iscompact attribute allows the epilogue expander to know for which
  ; insns it should lengthen the return insn.
  (define_insn_and_split "*movsi_insn"		; 0  1 2 3    4   5 6   7   8   9  10  11  12  13  14  15  16    17      18  19  20    21   22 23  24   25 26  27  28
!   [(set (match_operand:SI 0 "move_dest_operand" "=q, q,r,q,   h, rl,r,  r,  r,  r, ?r,  r,  q,  h, rl,  q,  S,   Us<,qRck,!*x,  r,!*Rsd,!*Rcd,r,Ucm,  Usd,m,  m,VUsc")
! 	(match_operand:SI 1 "move_src_operand"  "rL,rP,q,P,hCm1,rLl,I,Clo,Chi,Cbi,Cpc,Clb,Cax,Cal,Cal,Uts,q,qRck,   Us>,Usd,Ucm,  Usd,  Ucd,m,  r,!*Rzd,r,Cm3, C32"))]
    "register_operand (operands[0], SImode)
     || register_operand (operands[1], SImode)
     || (CONSTANT_P (operands[1])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 990,997 ****
       (match_operand 0 "cc_register" "")
       (match_operator 4 "zn_compare_operator"
         [(and:SI
! 	  (match_operand:SI 1 "register_operand"  "%Rcq,Rcq, c,  c,  c,  c,Rrq,Rrq,  c")
! 	  (match_operand:SI 2 "nonmemory_operand"  "Rcq,C0p,cI,C1p,Ccp,Chs,Cbf,Cbf,???Cal"))
  	(const_int 0)]))
     (clobber (match_scratch:SI 3 "=X,X,X,X,X,X,Rrq,1,c"))]
    "TARGET_NPS_BITOPS"
--- 996,1003 ----
       (match_operand 0 "cc_register" "")
       (match_operator 4 "zn_compare_operator"
         [(and:SI
! 	  (match_operand:SI 1 "register_operand"  "%q,  q, c,  c,  c,  c,  q,  q,  c")
! 	  (match_operand:SI 2 "nonmemory_operand"  "q,C0p,cI,C1p,Ccp,Chs,Cbf,Cbf,???Cal"))
  	(const_int 0)]))
     (clobber (match_scratch:SI 3 "=X,X,X,X,X,X,Rrq,1,c"))]
    "TARGET_NPS_BITOPS"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1006,1014 ****
       (match_operator 3 "zn_compare_operator"
         [(and:SI
  	  (match_operand:SI 1 "register_operand"
! 	   "%Rcq,Rcq, c, c, c,  c,  c,  c")
  	  (match_operand:SI 2 "nonmemory_operand"
! 	   " Rcq,C0p,cI,cL,C1p,Ccp,Chs,Cal"))
  	(const_int 0)]))]
    "reload_completed
     || !satisfies_constraint_Cbf (operands[2])
--- 1012,1020 ----
       (match_operator 3 "zn_compare_operator"
         [(and:SI
  	  (match_operand:SI 1 "register_operand"
! 	   "%q,  q, c, c, c,  c,  c,  c")
  	  (match_operand:SI 2 "nonmemory_operand"
! 	   " q,C0p,cI,cL,C1p,Ccp,Chs,Cal"))
  	(const_int 0)]))]
    "reload_completed
     || !satisfies_constraint_Cbf (operands[2])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1084,1092 ****
    [(set (match_operand:CC_ZN 0 "cc_set_register" "")
  	(match_operator 5 "zn_compare_operator"
  	  [(zero_extract:SI
! 	     (match_operand:SI 1 "register_operand" "%Rcqq,c,  c,Rrq,c")
! 	     (match_operand:SI 2 "const_int_operand"    "N,N,  n,Cbn,n")
! 	     (match_operand:SI 3 "const_int_operand"    "n,n,C_0,Cbn,n"))
  	   (const_int 0)]))
     (clobber (match_scratch:SI 4 "=X,X,X,Rrq,X"))]
    ""
--- 1090,1098 ----
    [(set (match_operand:CC_ZN 0 "cc_set_register" "")
  	(match_operator 5 "zn_compare_operator"
  	  [(zero_extract:SI
! 	     (match_operand:SI 1 "register_operand" "%q,c,  c,Rrq,c")
! 	     (match_operand:SI 2 "const_int_operand" "N,N,  n,Cbn,n")
! 	     (match_operand:SI 3 "const_int_operand" "n,n,C_0,Cbn,n"))
  	   (const_int 0)]))
     (clobber (match_scratch:SI 4 "=X,X,X,Rrq,X"))]
    ""
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1670,1676 ****
    ""
  {
    if (rtx_equal_p (operands[1], const0_rtx) && GET_CODE (operands[3]) == NE
!       && satisfies_constraint_Rcq (operands[0]))
      return "sub%?.ne %0,%0,%0";
    /* ??? might be good for speed on ARC600 too, *if* properly scheduled.  */
    if ((optimize_size && (!TARGET_ARC600_FAMILY))
--- 1676,1682 ----
    ""
  {
    if (rtx_equal_p (operands[1], const0_rtx) && GET_CODE (operands[3]) == NE
!       && IN_RANGE (REGNO (operands[0]) ^ 4, 4, 11))
      return "sub%?.ne %0,%0,%0";
    /* ??? might be good for speed on ARC600 too, *if* properly scheduled.  */
    if ((optimize_size && (!TARGET_ARC600_FAMILY))
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1972,1979 ****
  ;; Absolute instructions
  
  (define_insn "abssi2"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcq#q,w,w")
! 	(abs:SI (match_operand:SI 1 "nonmemory_operand" "Rcq#q,cL,Cal")))]
    ""
    "abs%? %0,%1%&"
    [(set_attr "type" "two_cycle_core")
--- 1978,1985 ----
  ;; Absolute instructions
  
  (define_insn "abssi2"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=q,w,w")
! 	(abs:SI (match_operand:SI 1 "nonmemory_operand" "q,cL,Cal")))]
    ""
    "abs%? %0,%1%&"
    [(set_attr "type" "two_cycle_core")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 1983,2004 ****
  ;; Maximum and minimum insns
  
  (define_insn "smaxsi3"
!    [(set (match_operand:SI 0 "dest_reg_operand"         "=Rcw, w,  w")
! 	 (smax:SI (match_operand:SI 1 "register_operand"  "%0, c,  c")
! 		  (match_operand:SI 2 "nonmemory_operand" "cL,cL,Cal")))]
    ""
!   "max%? %0,%1,%2"
    [(set_attr "type" "two_cycle_core")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")]
  )
  
  (define_insn "sminsi3"
!    [(set (match_operand:SI 0 "dest_reg_operand"         "=Rcw, w,  w")
! 	 (smin:SI (match_operand:SI 1 "register_operand"  "%0, c,  c")
! 		  (match_operand:SI 2 "nonmemory_operand" "cL,cL,Cal")))]
    ""
!   "min%? %0,%1,%2"
    [(set_attr "type" "two_cycle_core")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")]
--- 1989,2010 ----
  ;; Maximum and minimum insns
  
  (define_insn "smaxsi3"
!    [(set (match_operand:SI 0 "dest_reg_operand"           "=r, r,  r")
! 	 (smax:SI (match_operand:SI 1 "register_operand"  "%0, r,  r")
! 		  (match_operand:SI 2 "nonmemory_operand" "rL,rL,Cal")))]
    ""
!   "max%?\\t%0,%1,%2"
    [(set_attr "type" "two_cycle_core")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")]
  )
  
  (define_insn "sminsi3"
!    [(set (match_operand:SI 0 "dest_reg_operand"           "=r, r,  r")
! 	 (smin:SI (match_operand:SI 1 "register_operand"  "%0, r,  r")
! 		  (match_operand:SI 2 "nonmemory_operand" "rL,rL,Cal")))]
    ""
!   "min%?\\t%0,%1,%2"
    [(set_attr "type" "two_cycle_core")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2020,2029 ****
  ; We avoid letting this pattern use LP_COUNT as a register by specifying
  ;  register class 'W' instead of 'w'.
  (define_insn_and_split "*addsi3_mixed"
!   ;;                                                      0       1    2    3   4   5   6     7    8   9   a    b     c   d e   f  10  11  12
!   [(set (match_operand:SI 0 "dest_reg_operand"          "=Rcq#q,Rcq,   h,!*Rsd,Rcq,Rcb,Rcq, Rcqq,Rcqq,Rcw,Rcw, Rcw,    W,  W,W,  W,Rcqq,Rcw,  W")
! 	(plus:SI (match_operand:SI 1 "register_operand" "%0,      c,   0, Rcqq,  0,  0,Rcb, Rcqq,   0,  0,  c,   0,    c,  c,0,  0,   0,  0,  c")
! 		 (match_operand:SI 2 "nonmemory_operand" "cL,     0, Cm1,    L,CL2,Csp,CM4,RcqqK,  cO, cL,  0,cCca,cLCmL,Cca,I,C2a, Cal,Cal,Cal")))]
    ""
  {
    arc_output_addsi (operands, arc_ccfsm_cond_exec_p (), true);
--- 2026,2035 ----
  ; We avoid letting this pattern use LP_COUNT as a register by specifying
  ;  register class 'W' instead of 'w'.
  (define_insn_and_split "*addsi3_mixed"
!   ;;                                                      0  1    2     3   4   5   6  7  8  9 a    b     c   d e   f  10  11  12
!   [(set (match_operand:SI 0 "dest_reg_operand"           "=q,q,   h,!*Rsd,  q,Rcb,  q, q, q, r,r,   r,    W,  W,W,  W,  q,  r,  W")
! 	(plus:SI (match_operand:SI 1 "register_operand"  "%0,c,   0,    q,  0,  0,Rcb, q, 0, 0,r,   0,    c,  c,0,  0,  0,  0,  c")
! 		 (match_operand:SI 2 "nonmemory_operand" "cL,0, Cm1,    L,CL2,Csp,CM4,qK,cO,rL,0,rCca,cLCmL,Cca,I,C2a,Cal,Cal,Cal")))]
    ""
  {
    arc_output_addsi (operands, arc_ccfsm_cond_exec_p (), true);
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2075,2083 ****
     ])
  
  (define_insn "mulhisi3_reg"
!   [(set (match_operand:SI 0 "register_operand"                          "=Rcqq,r,r")
! 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand"  "   0,0,r"))
! 		 (sign_extend:SI (match_operand:HI 2 "nonmemory_operand" "Rcqq,r,r"))))]
    "TARGET_MPYW"
    "mpyw%? %0,%1,%2"
    [(set_attr "length" "*,4,4")
--- 2081,2089 ----
     ])
  
  (define_insn "mulhisi3_reg"
!   [(set (match_operand:SI 0 "register_operand"                          "=q,r,r")
! 	(mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand"  "0,0,r"))
! 		 (sign_extend:SI (match_operand:HI 2 "nonmemory_operand" "q,r,r"))))]
    "TARGET_MPYW"
    "mpyw%? %0,%1,%2"
    [(set_attr "length" "*,4,4")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2115,2123 ****
     ])
  
  (define_insn "umulhisi3_reg"
!   [(set (match_operand:SI 0 "register_operand"                          "=Rcqq, r, r")
! 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "   %0, 0, r"))
! 		 (zero_extend:SI (match_operand:HI 2 "register_operand" " Rcqq, r, r"))))]
    "TARGET_MPYW"
    "mpyuw%? %0,%1,%2"
    [(set_attr "length" "*,4,4")
--- 2121,2129 ----
     ])
  
  (define_insn "umulhisi3_reg"
!   [(set (match_operand:SI 0 "register_operand"                          "=q, r, r")
! 	(mult:SI (zero_extend:SI (match_operand:HI 1 "register_operand" "%0, 0, r"))
! 		 (zero_extend:SI (match_operand:HI 2 "register_operand"  "q, r, r"))))]
    "TARGET_MPYW"
    "mpyuw%? %0,%1,%2"
    [(set_attr "length" "*,4,4")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2238,2245 ****
  
  (define_insn "mulsi_600"
    [(set (match_operand:SI 2 "mlo_operand" "")
! 	(mult:SI (match_operand:SI 0 "register_operand"  "%Rcq#q,c,c,c")
! 		 (match_operand:SI 1 "nonmemory_operand" "Rcq#q,cL,I,Cal")))
     (clobber (match_operand:SI 3 "mhi_operand" ""))]
    "TARGET_MUL64_SET"
    "mul64%?\\t0,%0,%1"
--- 2244,2251 ----
  
  (define_insn "mulsi_600"
    [(set (match_operand:SI 2 "mlo_operand" "")
! 	(mult:SI (match_operand:SI 0 "register_operand" "%q,c,c,c")
! 		 (match_operand:SI 1 "nonmemory_operand" "q,cL,I,Cal")))
     (clobber (match_operand:SI 3 "mhi_operand" ""))]
    "TARGET_MUL64_SET"
    "mul64%?\\t0,%0,%1"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2274,2281 ****
  (define_insn "mul64"
    [(set (reg:DI MUL64_OUT_REG)
  	(mult:DI
! 	 (sign_extend:DI (match_operand:SI 0 "register_operand" "%Rcq#q, c,c,  c"))
! 	 (sign_extend:DI (match_operand:SI 1 "nonmemory_operand" "Rcq#q,cL,L,C32"))))]
    "TARGET_MUL64_SET"
    "mul64%? \t0, %0, %1%&"
    [(set_attr "length" "*,4,4,8")
--- 2280,2287 ----
  (define_insn "mul64"
    [(set (reg:DI MUL64_OUT_REG)
  	(mult:DI
! 	 (sign_extend:DI (match_operand:SI 0 "register_operand" "%q, c,c,  c"))
! 	 (sign_extend:DI (match_operand:SI 1 "nonmemory_operand" "q,cL,L,C32"))))]
    "TARGET_MUL64_SET"
    "mul64%? \t0, %0, %1%&"
    [(set_attr "length" "*,4,4,8")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2328,2338 ****
  ; registers, since it cannot be the destination of a multi-cycle insn
  ; like MPY or MPYU.
  (define_insn "mulsi3_700"
!  [(set (match_operand:SI 0 "mpy_dest_reg_operand"        "=Rcr,r,r,Rcr,r")
! 	(mult:SI (match_operand:SI 1 "register_operand"  "%0,c,0,0,c")
! 		 (match_operand:SI 2 "nonmemory_operand" "cL,cL,I,Cal,Cal")))]
   "TARGET_ARC700_MPY"
!   "mpyu%? %0,%1,%2"
    [(set_attr "length" "4,4,4,8,8")
     (set_attr "type" "umulti")
     (set_attr "predicable" "yes,no,no,yes,no")
--- 2334,2344 ----
  ; registers, since it cannot be the destination of a multi-cycle insn
  ; like MPY or MPYU.
  (define_insn "mulsi3_700"
!  [(set (match_operand:SI 0 "mpy_dest_reg_operand"        "=r, r,r,  r,r")
! 	(mult:SI (match_operand:SI 1 "register_operand"  "%0, r,0,  0,r")
! 		 (match_operand:SI 2 "nonmemory_operand" "rL,rL,I,Cal,Cal")))]
   "TARGET_ARC700_MPY"
!   "mpyu%?\\t%0,%1,%2"
    [(set_attr "length" "4,4,4,8,8")
     (set_attr "type" "umulti")
     (set_attr "predicable" "yes,no,no,yes,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2493,2507 ****
     (set_attr "length" "8")])
  
  (define_insn "mulsi3_highpart"
!   [(set (match_operand:SI 0 "register_operand"                  "=Rcr,r,Rcr,r")
  	(truncate:SI
  	 (lshiftrt:DI
  	  (mult:DI
! 	   (sign_extend:DI (match_operand:SI 1 "register_operand" "%0,c,  0,c"))
! 	   (sign_extend:DI (match_operand:SI 2 "extend_operand"    "c,c,  i,i")))
  	  (const_int 32))))]
    "TARGET_MPY"
!   "mpy%+%? %0,%1,%2"
    [(set_attr "length" "4,4,8,8")
     (set_attr "type" "multi")
     (set_attr "predicable" "yes,no,yes,no")
--- 2499,2513 ----
     (set_attr "length" "8")])
  
  (define_insn "mulsi3_highpart"
!   [(set (match_operand:SI 0 "register_operand"                    "=r,r,r,r")
  	(truncate:SI
  	 (lshiftrt:DI
  	  (mult:DI
! 	   (sign_extend:DI (match_operand:SI 1 "register_operand" "%0,r,0,r"))
! 	   (sign_extend:DI (match_operand:SI 2 "extend_operand"    "r,r,i,i")))
  	  (const_int 32))))]
    "TARGET_MPY"
!   "mpy%+%?\\t%0,%1,%2"
    [(set_attr "length" "4,4,8,8")
     (set_attr "type" "multi")
     (set_attr "predicable" "yes,no,yes,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2510,2524 ****
  ; Note that mpyhu has the same latency as mpy / mpyh,
  ; thus we use the type multi.
  (define_insn "*umulsi3_highpart_i"
!   [(set (match_operand:SI 0 "register_operand"                  "=Rcr,r,Rcr,r")
  	(truncate:SI
  	 (lshiftrt:DI
  	  (mult:DI
! 	   (zero_extend:DI (match_operand:SI 1 "register_operand" "%0,c,  0,c"))
! 	   (zero_extend:DI (match_operand:SI 2 "extend_operand"    "c,c,  i,i")))
  	  (const_int 32))))]
    "TARGET_MPY"
!   "mpy%+u%? %0,%1,%2"
    [(set_attr "length" "4,4,8,8")
     (set_attr "type" "multi")
     (set_attr "predicable" "yes,no,yes,no")
--- 2516,2530 ----
  ; Note that mpyhu has the same latency as mpy / mpyh,
  ; thus we use the type multi.
  (define_insn "*umulsi3_highpart_i"
!   [(set (match_operand:SI 0 "register_operand"                    "=r,r,r,r")
  	(truncate:SI
  	 (lshiftrt:DI
  	  (mult:DI
! 	   (zero_extend:DI (match_operand:SI 1 "register_operand" "%0,r,0,r"))
! 	   (zero_extend:DI (match_operand:SI 2 "extend_operand"    "r,r,i,i")))
  	  (const_int 32))))]
    "TARGET_MPY"
!   "mpy%+u%?\\t%0,%1,%2"
    [(set_attr "length" "4,4,8,8")
     (set_attr "type" "multi")
     (set_attr "predicable" "yes,no,yes,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2528,2542 ****
  ;; need a separate pattern for immediates
  ;; ??? This is fine for combine, but not for reload.
  (define_insn "umulsi3_highpart_int"
!   [(set (match_operand:SI 0 "register_operand"            "=Rcr, r, r,Rcr,  r")
  	(truncate:SI
  	 (lshiftrt:DI
  	  (mult:DI
! 	   (zero_extend:DI (match_operand:SI 1 "register_operand"  " 0, c, 0,  0,  c"))
! 	   (match_operand:DI 2 "immediate_usidi_operand" "L, L, I, Cal, Cal"))
  	  (const_int 32))))]
    "TARGET_MPY"
!   "mpy%+u%? %0,%1,%2"
    [(set_attr "length" "4,4,4,8,8")
     (set_attr "type" "multi")
     (set_attr "predicable" "yes,no,no,yes,no")
--- 2534,2548 ----
  ;; need a separate pattern for immediates
  ;; ??? This is fine for combine, but not for reload.
  (define_insn "umulsi3_highpart_int"
!   [(set (match_operand:SI 0 "register_operand"            "=r, r, r,r,  r")
  	(truncate:SI
  	 (lshiftrt:DI
  	  (mult:DI
! 	   (zero_extend:DI (match_operand:SI 1 "register_operand"  " 0, r, 0,  0,  r"))
! 	   (match_operand:DI 2 "immediate_usidi_operand" "L, L, I,Cal,Cal"))
  	  (const_int 32))))]
    "TARGET_MPY"
!   "mpy%+u%?\\t%0,%1,%2"
    [(set_attr "length" "4,4,4,8,8")
     (set_attr "type" "multi")
     (set_attr "predicable" "yes,no,no,yes,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2784,2796 ****
  (define_insn "*add_f_2"
    [(set (reg:CC_C CC_REG)
  	(compare:CC_C
! 	  (plus:SI (match_operand:SI 1 "register_operand" "c,0,c")
! 		   (match_operand:SI 2 "nonmemory_operand" "cL,I,cCal"))
  	  (match_dup 2)))
!    (set (match_operand:SI 0 "dest_reg_operand" "=w,Rcw,w")
  	(plus:SI (match_dup 1) (match_dup 2)))]
    ""
!   "add.f %0,%1,%2"
    [(set_attr "cond" "set")
     (set_attr "type" "compare")
     (set_attr "length" "4,4,8")])
--- 2790,2802 ----
  (define_insn "*add_f_2"
    [(set (reg:CC_C CC_REG)
  	(compare:CC_C
! 	  (plus:SI (match_operand:SI 1 "register_operand"  "r ,0,r")
! 		   (match_operand:SI 2 "nonmemory_operand" "rL,I,rCal"))
  	  (match_dup 2)))
!    (set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
  	(plus:SI (match_dup 1) (match_dup 2)))]
    ""
!   "add.f\\t%0,%1,%2"
    [(set_attr "cond" "set")
     (set_attr "type" "compare")
     (set_attr "length" "4,4,8")])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2887,2908 ****
  ; the casesi expander might generate a sub of zero, so we have to recognize it.
  ; combine should make such an insn go away.
  (define_insn_and_split "subsi3_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand"           "=Rcqq,Rcqq,Rcw,Rcw,w,w,w,  w,  w,  w")
! 	(minus:SI (match_operand:SI 1 "nonmemory_operand"    "0,Rcqq,  0, cL,c,L,I,Cal,Cal,  c")
! 		  (match_operand:SI 2 "nonmemory_operand" "Rcqq,Rcqq,  c,  0,c,c,0,  0,  c,Cal")))]
    "register_operand (operands[1], SImode)
     || register_operand (operands[2], SImode)"
    "@
!     sub%? %0,%1,%2%&
!     sub%? %0,%1,%2%&
!     sub%? %0,%1,%2
!     rsub%? %0,%2,%1
!     sub %0,%1,%2
!     rsub %0,%2,%1
!     rsub %0,%2,%1
!     rsub%? %0,%2,%1
!     rsub %0,%2,%1
!     sub %0,%1,%2"
    "reload_completed && get_attr_length (insn) == 8
     && satisfies_constraint_I (operands[1])
     && GET_CODE (PATTERN (insn)) != COND_EXEC"
--- 2893,2914 ----
  ; the casesi expander might generate a sub of zero, so we have to recognize it.
  ; combine should make such an insn go away.
  (define_insn_and_split "subsi3_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand"           "=q,q,r, r,r,r,r,  r,  r,  r")
! 	(minus:SI (match_operand:SI 1 "nonmemory_operand" "0,q,0,rL,r,L,I,Cal,Cal,  r")
! 		  (match_operand:SI 2 "nonmemory_operand" "q,q,r, 0,r,r,0,  0,  r,Cal")))]
    "register_operand (operands[1], SImode)
     || register_operand (operands[2], SImode)"
    "@
!     sub%?\\t%0,%1,%2%&
!     sub%?\\t%0,%1,%2%&
!     sub%?\\t%0,%1,%2
!     rsub%?\\t%0,%2,%1
!     sub\\t%0,%1,%2
!     rsub\\t%0,%2,%1
!     rsub\\t%0,%2,%1
!     rsub%?\\t%0,%2,%1
!     rsub\\t%0,%2,%1
!     sub\\t%0,%1,%2"
    "reload_completed && get_attr_length (insn) == 8
     && satisfies_constraint_I (operands[1])
     && GET_CODE (PATTERN (insn)) != COND_EXEC"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 2982,3000 ****
  
  (define_insn "sub_f"
    [(set (reg:CC CC_REG)
! 	(compare:CC (match_operand:SI 1 "nonmemory_operand" " c,L,0,I,c,Cal")
! 		    (match_operand:SI 2 "nonmemory_operand" "cL,c,I,0,Cal,c")))
!    (set (match_operand:SI 0 "dest_reg_operand" "=w,w,Rcw,Rcw,w,w")
  	(minus:SI (match_dup 1) (match_dup 2)))]
    "register_operand (operands[1], SImode)
     || register_operand (operands[2], SImode)"
    "@
! 	sub.f %0,%1,%2
! 	rsub.f %0,%2,%1
! 	sub.f %0,%1,%2
! 	rsub.f %0,%2,%1
! 	sub.f %0,%1,%2
! 	sub.f %0,%1,%2"
    [(set_attr "type" "compare")
     (set_attr "length" "4,4,4,4,8,8")])
  
--- 2988,3006 ----
  
  (define_insn "sub_f"
    [(set (reg:CC CC_REG)
! 	(compare:CC (match_operand:SI 1 "nonmemory_operand" " r,L,0,I,r,Cal")
! 		    (match_operand:SI 2 "nonmemory_operand" "rL,r,I,0,Cal,r")))
!    (set (match_operand:SI 0 "dest_reg_operand" "=r,r,r,r,r,r")
  	(minus:SI (match_dup 1) (match_dup 2)))]
    "register_operand (operands[1], SImode)
     || register_operand (operands[2], SImode)"
    "@
! 	sub.f\\t%0,%1,%2
! 	rsub.f\\t%0,%2,%1
! 	sub.f\\t%0,%1,%2
! 	rsub.f\\t%0,%2,%1
! 	sub.f\\t%0,%1,%2
! 	sub.f\\t%0,%1,%2"
    [(set_attr "type" "compare")
     (set_attr "length" "4,4,4,4,8,8")])
  
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3043,3054 ****
  ;; N.B. sub[123] has the operands of the MINUS in the opposite order from
  ;; what synth_mult likes.
  (define_insn "*sub_n"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
! 	(minus:SI (match_operand:SI 1 "nonmemory_operand" "0,c,?Cal")
! 		  (ashift:SI (match_operand:SI 2 "register_operand" "c,c,c")
  			     (match_operand:SI 3 "_1_2_3_operand" ""))))]
    ""
!   "sub%c3%? %0,%1,%2"
    [(set_attr "type" "shift")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
--- 3049,3060 ----
  ;; N.B. sub[123] has the operands of the MINUS in the opposite order from
  ;; what synth_mult likes.
  (define_insn "*sub_n"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
! 	(minus:SI (match_operand:SI 1 "nonmemory_operand" "0,r,?Cal")
! 		  (ashift:SI (match_operand:SI 2 "register_operand" "r,r,r")
  			     (match_operand:SI 3 "_1_2_3_operand" ""))))]
    ""
!   "sub%c3%?\\t%0,%1,%2"
    [(set_attr "type" "shift")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3056,3067 ****
     (set_attr "iscompact" "false")])
  
  (define_insn "*sub_n"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
! 	(minus:SI (match_operand:SI 1 "nonmemory_operand" "0,c,?Cal")
! 		  (mult:SI (match_operand:SI 2 "register_operand" "c,c,c")
  			   (match_operand:SI 3 "_2_4_8_operand" ""))))]
    ""
!   "sub%z3%? %0,%1,%2"
    [(set_attr "type" "shift")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
--- 3062,3073 ----
     (set_attr "iscompact" "false")])
  
  (define_insn "*sub_n"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
! 	(minus:SI (match_operand:SI 1 "nonmemory_operand" "0,r,?Cal")
! 		  (mult:SI (match_operand:SI 2 "register_operand" "r,r,r")
  			   (match_operand:SI 3 "_2_4_8_operand" ""))))]
    ""
!   "sub%z3%?\\t%0,%1,%2"
    [(set_attr "type" "shift")
     (set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3070,3081 ****
  
  ; ??? check if combine matches this.
  (define_insn "*bset"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
  	(ior:SI (ashift:SI (const_int 1)
! 			   (match_operand:SI 1 "nonmemory_operand" "cL,cL,c"))
! 		(match_operand:SI 2 "nonmemory_operand" "0,c,Cal")))]
    ""
!   "bset%? %0,%2,%1"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3076,3087 ----
  
  ; ??? check if combine matches this.
  (define_insn "*bset"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
  	(ior:SI (ashift:SI (const_int 1)
! 			   (match_operand:SI 1 "nonmemory_operand" "rL,rL,r"))
! 		(match_operand:SI 2 "nonmemory_operand" "0,r,Cal")))]
    ""
!   "bset%?\\t%0,%2,%1"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3083,3094 ****
  
  ; ??? check if combine matches this.
  (define_insn "*bxor"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
  	(xor:SI (ashift:SI (const_int 1)
! 			   (match_operand:SI 1 "nonmemory_operand" "cL,cL,c"))
! 		(match_operand:SI 2 "nonmemory_operand" "0,c,Cal")))]
    ""
!   "bxor%? %0,%2,%1"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3089,3100 ----
  
  ; ??? check if combine matches this.
  (define_insn "*bxor"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
  	(xor:SI (ashift:SI (const_int 1)
! 			   (match_operand:SI 1 "nonmemory_operand" "rL,rL,r"))
! 		(match_operand:SI 2 "nonmemory_operand" "0,r,Cal")))]
    ""
!   "bxor%?\\t%0,%2,%1"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3096,3107 ****
  
  ; ??? check if combine matches this.
  (define_insn "*bclr"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
  	(and:SI (not:SI (ashift:SI (const_int 1)
! 				   (match_operand:SI 1 "nonmemory_operand" "cL,cL,c")))
! 		(match_operand:SI 2 "nonmemory_operand" "0,c,Cal")))]
    ""
!   "bclr%? %0,%2,%1"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3102,3113 ----
  
  ; ??? check if combine matches this.
  (define_insn "*bclr"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
  	(and:SI (not:SI (ashift:SI (const_int 1)
! 				   (match_operand:SI 1 "nonmemory_operand" "rL,rL,r")))
! 		(match_operand:SI 2 "nonmemory_operand" "0,r,Cal")))]
    ""
!   "bclr%?\\t%0,%2,%1"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3113,3127 ****
  
  ; see also iorsi3 for use with constant bit number.
  (define_insn "*bset_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
! 	(ior:SI (match_operand:SI 1 "nonmemory_operand" "0,c,Cal")
  		(ashift:SI (const_int 1)
! 			   (match_operand:SI 2 "nonmemory_operand" "cL,cL,c"))) ) ]
    ""
    "@
!      bset%? %0,%1,%2 ;;peep2, constr 1
!      bset %0,%1,%2 ;;peep2, constr 2
!      bset %0,%1,%2 ;;peep2, constr 3"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3119,3133 ----
  
  ; see also iorsi3 for use with constant bit number.
  (define_insn "*bset_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
! 	(ior:SI (match_operand:SI 1 "nonmemory_operand" "0,r,Cal")
  		(ashift:SI (const_int 1)
! 			   (match_operand:SI 2 "nonmemory_operand" "rL,rL,r"))) ) ]
    ""
    "@
!      bset%?\\t%0,%1,%2 ;;peep2, constr 1
!      bset\\t%0,%1,%2 ;;peep2, constr 2
!      bset\\t%0,%1,%2 ;;peep2, constr 3"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3129,3143 ****
  
  ; see also xorsi3 for use with constant bit number.
  (define_insn "*bxor_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
! 	(xor:SI (match_operand:SI 1 "nonmemory_operand" "0,c,Cal")
  		(ashift:SI (const_int 1)
! 			(match_operand:SI 2 "nonmemory_operand" "cL,cL,c"))) ) ]
    ""
    "@
!      bxor%? %0,%1,%2
!      bxor %0,%1,%2
!      bxor %0,%1,%2"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3135,3149 ----
  
  ; see also xorsi3 for use with constant bit number.
  (define_insn "*bxor_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
! 	(xor:SI (match_operand:SI 1 "nonmemory_operand" "0,r,Cal")
  		(ashift:SI (const_int 1)
! 			(match_operand:SI 2 "nonmemory_operand" "rL,rL,r"))) ) ]
    ""
    "@
!      bxor%?\\t%0,%1,%2
!      bxor\\t%0,%1,%2
!      bxor\\t%0,%1,%2"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3145,3159 ****
  
  ; see also andsi3 for use with constant bit number.
  (define_insn "*bclr_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
  	(and:SI (not:SI (ashift:SI (const_int 1)
! 				   (match_operand:SI 2 "nonmemory_operand" "cL,rL,r")))
! 		(match_operand:SI 1 "nonmemory_operand" "0,c,Cal")))]
    ""
    "@
!      bclr%? %0,%1,%2
!      bclr %0,%1,%2
!      bclr %0,%1,%2"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3151,3165 ----
  
  ; see also andsi3 for use with constant bit number.
  (define_insn "*bclr_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
  	(and:SI (not:SI (ashift:SI (const_int 1)
! 				   (match_operand:SI 2 "nonmemory_operand" "rL,rL,r")))
! 		(match_operand:SI 1 "nonmemory_operand" "0,r,Cal")))]
    ""
    "@
!      bclr%?\\t%0,%1,%2
!      bclr\\t%0,%1,%2
!      bclr\\t%0,%1,%2"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3161,3177 ****
  
  ; see also andsi3 for use with constant bit number.
  (define_insn "*bmsk_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcw,w,w")
! 	(and:SI (match_operand:SI 1 "nonmemory_operand" "0,c,Cal")
  		(plus:SI (ashift:SI (const_int 1)
  				    (plus:SI (match_operand:SI 2 "nonmemory_operand" "rL,rL,r")
  					     (const_int 1)))
  			 (const_int -1))))]
    ""
    "@
!      bmsk%? %0,%1,%2
!      bmsk %0,%1,%2
!      bmsk %0,%1,%2"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
--- 3167,3183 ----
  
  ; see also andsi3 for use with constant bit number.
  (define_insn "*bmsk_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=r,r,r")
! 	(and:SI (match_operand:SI 1 "nonmemory_operand" "0,r,Cal")
  		(plus:SI (ashift:SI (const_int 1)
  				    (plus:SI (match_operand:SI 2 "nonmemory_operand" "rL,rL,r")
  					     (const_int 1)))
  			 (const_int -1))))]
    ""
    "@
!      bmsk%?\\t%0,%1,%2
!      bmsk\\t%0,%1,%2
!      bmsk\\t%0,%1,%2"
    [(set_attr "length" "4,4,8")
     (set_attr "predicable" "yes,no,no")
     (set_attr "cond" "canuse,nocond,nocond")]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3274,3291 ****
  
  ;;bic define_insn that allows limm to be the first operand
  (define_insn "*bicsi3_insn"
!    [(set (match_operand:SI 0 "dest_reg_operand" "=Rcqq,Rcw,Rcw,Rcw,w,w,w")
!  	(and:SI	(not:SI (match_operand:SI 1 "nonmemory_operand" "Rcqq,Lc,I,Cal,Lc,Cal,c"))
!  		(match_operand:SI 2 "nonmemory_operand" "0,0,0,0,c,c,Cal")))]
    ""
    "@
!    bic%? %0, %2, %1%& ;;constraint 0
!    bic%? %0,%2,%1  ;;constraint 1
!    bic %0,%2,%1    ;;constraint 2, FIXME: will it ever get generated ???
!    bic%? %0,%2,%1  ;;constraint 3, FIXME: will it ever get generated ???
!    bic %0,%2,%1    ;;constraint 4
!    bic %0,%2,%1    ;;constraint 5, FIXME: will it ever get generated ???
!    bic %0,%2,%1    ;;constraint 6"
    [(set_attr "length" "*,4,4,8,4,8,8")
    (set_attr "iscompact" "maybe, false, false, false, false, false, false")
    (set_attr "predicable" "no,yes,no,yes,no,no,no")
--- 3280,3297 ----
  
  ;;bic define_insn that allows limm to be the first operand
  (define_insn "*bicsi3_insn"
!    [(set (match_operand:SI 0 "dest_reg_operand" "=q,r,r,r,r,r,r")
!  	(and:SI	(not:SI (match_operand:SI 1 "nonmemory_operand" "q,Lr,I,Cal,Lr,Cal,r"))
!  		(match_operand:SI 2 "nonmemory_operand" "0,0,0,0,r,r,Cal")))]
    ""
    "@
!    bic%?\\t%0, %2, %1%& ;;constraint 0
!    bic%?\\t%0,%2,%1  ;;constraint 1
!    bic\\t%0,%2,%1    ;;constraint 2, FIXME: will it ever get generated ???
!    bic%?\\t%0,%2,%1  ;;constraint 3, FIXME: will it ever get generated ???
!    bic\\t%0,%2,%1    ;;constraint 4
!    bic\\t%0,%2,%1    ;;constraint 5, FIXME: will it ever get generated ???
!    bic\\t%0,%2,%1    ;;constraint 6"
    [(set_attr "length" "*,4,4,8,4,8,8")
    (set_attr "iscompact" "maybe, false, false, false, false, false, false")
    (set_attr "predicable" "no,yes,no,yes,no,no,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3326,3344 ****
     (set_attr "cond" "canuse,canuse,canuse,canuse,canuse,canuse,canuse_limm,nocond,nocond,canuse_limm,nocond,canuse,nocond")])
  
  (define_insn "xorsi3"
!   [(set (match_operand:SI 0 "dest_reg_operand"          "=Rcqq,Rcq,Rcw,Rcw,Rcw,Rcw, w,  w,w,  w,  w")
! 	(xor:SI (match_operand:SI 1 "register_operand"  "%0,   Rcq,  0,  c,  0,  0, c,  c,0,  0,  c")
! 		(match_operand:SI 2 "nonmemory_operand" " Rcqq,  0, cL,  0,C0p,  I,cL,C0p,I,Cal,Cal")))]
    ""
    "*
    switch (which_alternative)
      {
      case 0: case 2: case 5: case 6: case 8: case 9: case 10:
!       return \"xor%? %0,%1,%2%&\";
      case 1: case 3:
!       return \"xor%? %0,%2,%1%&\";
      case 4: case 7:
!       return \"bxor%? %0,%1,%z2\";
      default:
        gcc_unreachable ();
      }
--- 3332,3350 ----
     (set_attr "cond" "canuse,canuse,canuse,canuse,canuse,canuse,canuse_limm,nocond,nocond,canuse_limm,nocond,canuse,nocond")])
  
  (define_insn "xorsi3"
!   [(set (match_operand:SI 0 "dest_reg_operand"         "=q,q, r,r,  r,r, r,  r,r,  r,  r")
! 	(xor:SI (match_operand:SI 1 "register_operand" "%0,q, 0,r,  0,0, r,  r,0,  0,  r")
! 		(match_operand:SI 2 "nonmemory_operand" "q,0,rL,0,C0p,I,rL,C0p,I,Cal,Cal")))]
    ""
    "*
    switch (which_alternative)
      {
      case 0: case 2: case 5: case 6: case 8: case 9: case 10:
!       return \"xor%?\\t%0,%1,%2%&\";
      case 1: case 3:
!       return \"xor%?\\t%0,%2,%1%&\";
      case 4: case 7:
!       return \"bxor%?\\t%0,%1,%z2\";
      default:
        gcc_unreachable ();
      }
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3350,3366 ****
     (set_attr "cond" "canuse,canuse,canuse,canuse,canuse,canuse_limm,nocond,nocond,canuse_limm,canuse,nocond")])
  
  (define_insn "negsi2"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcqq,Rcqq,Rcw,w")
! 	(neg:SI (match_operand:SI 1 "register_operand" "0,Rcqq,0,c")))]
    ""
!   "neg%? %0,%1%&"
    [(set_attr "type" "unary")
     (set_attr "iscompact" "maybe,true,false,false")
     (set_attr "predicable" "no,no,yes,no")])
  
  (define_insn "one_cmplsi2"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=Rcqq,w")
! 	(not:SI (match_operand:SI 1 "register_operand" "Rcqq,c")))]
    ""
    "not%? %0,%1%&"
    [(set_attr "type" "unary,unary")
--- 3356,3372 ----
     (set_attr "cond" "canuse,canuse,canuse,canuse,canuse,canuse_limm,nocond,nocond,canuse_limm,canuse,nocond")])
  
  (define_insn "negsi2"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=q,q,r,r")
! 	(neg:SI (match_operand:SI 1 "register_operand" "0,q,0,r")))]
    ""
!   "neg%?\\t%0,%1%&"
    [(set_attr "type" "unary")
     (set_attr "iscompact" "maybe,true,false,false")
     (set_attr "predicable" "no,no,yes,no")])
  
  (define_insn "one_cmplsi2"
!   [(set (match_operand:SI 0 "dest_reg_operand" "=q,w")
! 	(not:SI (match_operand:SI 1 "register_operand" "q,c")))]
    ""
    "not%? %0,%1%&"
    [(set_attr "type" "unary,unary")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3490,3503 ****
     (set_attr "cond" "canuse,nocond,canuse,canuse,nocond,nocond")])
  
  (define_insn "*lshrsi3_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand"             "=Rcq,Rcqq,Rcqq,Rcw, w,   w")
! 	(lshiftrt:SI (match_operand:SI 1 "nonmemory_operand" "!0,Rcqq,   0,  0, c,cCal")
! 		     (match_operand:SI 2 "nonmemory_operand"  "N,  N,RcqqM, cL,cL,cCal")))]
    "TARGET_BARREL_SHIFTER
     && (register_operand (operands[1], SImode)
         || register_operand (operands[2], SImode))"
    "*return (which_alternative <= 1 && !arc_ccfsm_cond_exec_p ()
! 	    ?  \"lsr%? %0,%1%&\" : \"lsr%? %0,%1,%2%&\");"
    [(set_attr "type" "shift")
     (set_attr "iscompact" "maybe,maybe,maybe,false,false,false")
     (set_attr "predicable" "no,no,no,yes,no,no")
--- 3496,3509 ----
     (set_attr "cond" "canuse,nocond,canuse,canuse,nocond,nocond")])
  
  (define_insn "*lshrsi3_insn"
!   [(set (match_operand:SI 0 "dest_reg_operand"               "=q,q, q, r, r,   r")
! 	(lshiftrt:SI (match_operand:SI 1 "nonmemory_operand" "!0,q, 0, 0, r,rCal")
! 		     (match_operand:SI 2 "nonmemory_operand"  "N,N,qM,rL,rL,rCal")))]
    "TARGET_BARREL_SHIFTER
     && (register_operand (operands[1], SImode)
         || register_operand (operands[2], SImode))"
    "*return (which_alternative <= 1 && !arc_ccfsm_cond_exec_p ()
! 	    ?  \"lsr%?\\t%0,%1%&\" : \"lsr%?\\t%0,%1,%2%&\");"
    [(set_attr "type" "shift")
     (set_attr "iscompact" "maybe,maybe,maybe,false,false,false")
     (set_attr "predicable" "no,no,no,yes,no,no")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3538,3545 ****
  ;; modifed cc user if second, but not first operand is a compact register.
  (define_insn "cmpsi_cc_insn_mixed"
    [(set (reg:CC CC_REG)
! 	(compare:CC (match_operand:SI 0 "register_operand" "Rcq#q,Rcqq,  h, c, c,qRcq,c")
! 		    (match_operand:SI 1 "nonmemory_operand"   "cO,  hO,Cm1,cI,cL, Cal,Cal")))]
    ""
    "cmp%? %0,%B1%&"
    [(set_attr "type" "compare")
--- 3544,3551 ----
  ;; modifed cc user if second, but not first operand is a compact register.
  (define_insn "cmpsi_cc_insn_mixed"
    [(set (reg:CC CC_REG)
! 	(compare:CC (match_operand:SI 0 "register_operand"   "q, q,  h, c, c,  q,c")
! 		    (match_operand:SI 1 "nonmemory_operand" "cO,hO,Cm1,cI,cL,Cal,Cal")))]
    ""
    "cmp%? %0,%B1%&"
    [(set_attr "type" "compare")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3551,3557 ****
  
  (define_insn "*cmpsi_cc_zn_insn"
    [(set (reg:CC_ZN CC_REG)
! 	(compare:CC_ZN (match_operand:SI 0 "register_operand"  "qRcq,c")
  		       (const_int 0)))]
    ""
    "tst%? %0,%0%&"
--- 3557,3563 ----
  
  (define_insn "*cmpsi_cc_zn_insn"
    [(set (reg:CC_ZN CC_REG)
! 	(compare:CC_ZN (match_operand:SI 0 "register_operand"  "q,c")
  		       (const_int 0)))]
    ""
    "tst%? %0,%0%&"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3565,3571 ****
  (define_insn "*btst"
    [(set (reg:CC_ZN CC_REG)
  	(compare:CC_ZN
! 	  (zero_extract:SI (match_operand:SI 0 "register_operand" "Rcqq,c")
  			   (const_int 1)
  			   (match_operand:SI 1 "nonmemory_operand" "L,Lc"))
  	  (const_int 0)))]
--- 3571,3577 ----
  (define_insn "*btst"
    [(set (reg:CC_ZN CC_REG)
  	(compare:CC_ZN
! 	  (zero_extract:SI (match_operand:SI 0 "register_operand" "q,c")
  			   (const_int 1)
  			   (match_operand:SI 1 "nonmemory_operand" "L,Lc"))
  	  (const_int 0)))]
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3610,3616 ****
  
  (define_insn "*cmpsi_cc_z_insn"
    [(set (reg:CC_Z CC_REG)
! 	(compare:CC_Z (match_operand:SI 0 "register_operand"  "qRcq,c")
  		      (match_operand:SI 1 "p2_immediate_operand"  "O,n")))]
    ""
    "@
--- 3616,3622 ----
  
  (define_insn "*cmpsi_cc_z_insn"
    [(set (reg:CC_Z CC_REG)
! 	(compare:CC_Z (match_operand:SI 0 "register_operand"  "q,c")
  		      (match_operand:SI 1 "p2_immediate_operand"  "O,n")))]
    ""
    "@
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3623,3630 ****
  
  (define_insn "*cmpsi_cc_c_insn"
    [(set (reg:CC_C CC_REG)
! 	(compare:CC_C (match_operand:SI 0 "register_operand"  "Rcqq,Rcqq,  h, c,Rcqq,  c")
! 		      (match_operand:SI 1 "nonmemory_operand"   "cO,  hO,Cm1,cI, Cal,Cal")))]
    ""
    "cmp%? %0,%1%&"
    [(set_attr "type" "compare")
--- 3629,3636 ----
  
  (define_insn "*cmpsi_cc_c_insn"
    [(set (reg:CC_C CC_REG)
! 	(compare:CC_C (match_operand:SI 0 "register_operand"   "q, q,  h, c,  q,  c")
! 		      (match_operand:SI 1 "nonmemory_operand" "cO,hO,Cm1,cI,Cal,Cal")))]
    ""
    "cmp%? %0,%1%&"
    [(set_attr "type" "compare")
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 3936,3942 ****
  	 (const_int 2)))])
  
  (define_insn "indirect_jump"
!   [(set (pc) (match_operand:SI 0 "nonmemory_operand" "L,I,Cal,Rcqq,r"))]
    ""
    "@
     j%!%* %0%&
--- 3942,3948 ----
  	 (const_int 2)))])
  
  (define_insn "indirect_jump"
!   [(set (pc) (match_operand:SI 0 "nonmemory_operand" "L,I,Cal,q,r"))]
    ""
    "@
     j%!%* %0%&
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 4068,4074 ****
  ; Unlike the canonical tablejump, this pattern always uses a jump address,
  ; even for CASE_VECTOR_PC_RELATIVE.
  (define_insn "casesi_jump"
!   [(set (pc) (match_operand:SI 0 "register_operand" "Cal,Rcqq,c"))
     (use (label_ref (match_operand 1 "" "")))]
    ""
    "j%!%* [%0]%&"
--- 4074,4080 ----
  ; Unlike the canonical tablejump, this pattern always uses a jump address,
  ; even for CASE_VECTOR_PC_RELATIVE.
  (define_insn "casesi_jump"
!   [(set (pc) (match_operand:SI 0 "register_operand" "Cal,q,c"))
     (use (label_ref (match_operand 1 "" "")))]
    ""
    "j%!%* [%0]%&"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 4098,4115 ****
    }
  ")
  
- ; Rcq, which is used in alternative 0, checks for conditional execution.
  ; At instruction output time, if it doesn't match and we end up with
  ; alternative 1 ("q"), that means that we can't use the short form.
  (define_insn "*call_i"
    [(call (mem:SI (match_operand:SI 0
! 		  "call_address_operand" "Rcq,q,c,Cji,Csc,Cbp,Cbr,L,I,Cal"))
  	 (match_operand 1 "" ""))
     (clobber (reg:SI 31))]
    ""
    "@
     jl%!%* [%0]%&
-    jl%!%* [%0]%&
     jl%!%* [%0]
     jli_s %S0
     sjli  %S0
--- 4104,4119 ----
    }
  ")
  
  ; At instruction output time, if it doesn't match and we end up with
  ; alternative 1 ("q"), that means that we can't use the short form.
  (define_insn "*call_i"
    [(call (mem:SI (match_operand:SI 0
! 		  "call_address_operand" "q,c,Cji,Csc,Cbp,Cbr,L,I,Cal"))
  	 (match_operand 1 "" ""))
     (clobber (reg:SI 31))]
    ""
    "@
     jl%!%* [%0]%&
     jl%!%* [%0]
     jli_s %S0
     sjli  %S0
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 4118,4127 ****
     jl%!%* %0
     jl%* %0
     jl%! %0"
!   [(set_attr "type" "call,call,call,call_no_delay_slot,call_no_delay_slot,call,call,call,call,call_no_delay_slot")
!    (set_attr "iscompact" "maybe,false,*,true,*,*,*,*,*,*")
!    (set_attr "predicable" "no,no,yes,no,no,yes,no,yes,no,yes")
!    (set_attr "length" "*,*,4,2,4,4,4,4,4,8")])
  
  (define_expand "call_value"
    ;; operand 2 is stack_size_rtx
--- 4122,4131 ----
     jl%!%* %0
     jl%* %0
     jl%! %0"
!   [(set_attr "type" "call,call,call_no_delay_slot,call_no_delay_slot,call,call,call,call,call_no_delay_slot")
!    (set_attr "iscompact" "maybe,*,true,*,*,*,*,*,*")
!    (set_attr "predicable" "no,yes,no,no,yes,no,yes,no,yes")
!    (set_attr "length" "*,4,2,4,4,4,4,4,8")])
  
  (define_expand "call_value"
    ;; operand 2 is stack_size_rtx
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 4143,4161 ****
        XEXP (operands[1], 0) = force_reg (Pmode, callee);
    }")
  
- ; Rcq, which is used in alternative 0, checks for conditional execution.
  ; At instruction output time, if it doesn't match and we end up with
  ; alternative 1 ("q"), that means that we can't use the short form.
  (define_insn "*call_value_i"
!   [(set (match_operand 0 "dest_reg_operand"  "=Rcq,q,w,  w,  w,  w,  w,w,w,  w")
  	(call (mem:SI (match_operand:SI 1
! 		       "call_address_operand" "Rcq,q,c,Cji,Csc,Cbp,Cbr,L,I,Cal"))
  	      (match_operand 2 "" "")))
     (clobber (reg:SI 31))]
    ""
    "@
     jl%!%* [%1]%&
-    jl%!%* [%1]%&
     jl%!%* [%1]
     jli_s %S1
     sjli  %S1
--- 4147,4163 ----
        XEXP (operands[1], 0) = force_reg (Pmode, callee);
    }")
  
  ; At instruction output time, if it doesn't match and we end up with
  ; alternative 1 ("q"), that means that we can't use the short form.
  (define_insn "*call_value_i"
!   [(set (match_operand 0 "dest_reg_operand"  "=q,w,  w,  w,  w,  w,w,w,  w")
  	(call (mem:SI (match_operand:SI 1
! 		       "call_address_operand" "q,c,Cji,Csc,Cbp,Cbr,L,I,Cal"))
  	      (match_operand 2 "" "")))
     (clobber (reg:SI 31))]
    ""
    "@
     jl%!%* [%1]%&
     jl%!%* [%1]
     jli_s %S1
     sjli  %S1
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 4164,4173 ****
     jl%!%* %1
     jl%* %1
     jl%! %1"
!   [(set_attr "type" "call,call,call,call_no_delay_slot,call_no_delay_slot,call,call,call,call,call_no_delay_slot")
!    (set_attr "iscompact" "maybe,false,*,true,false,*,*,*,*,*")
!    (set_attr "predicable" "no,no,yes,no,no,yes,no,yes,no,yes")
!    (set_attr "length" "*,*,4,2,4,4,4,4,4,8")])
  
  ; There is a bl_s instruction (16 bit opcode branch-and-link), but we can't
  ; use it for lack of inter-procedural branch shortening.
--- 4166,4175 ----
     jl%!%* %1
     jl%* %1
     jl%! %1"
!   [(set_attr "type" "call,call,call_no_delay_slot,call_no_delay_slot,call,call,call,call,call_no_delay_slot")
!    (set_attr "iscompact" "maybe,*,true,false,*,*,*,*,*")
!    (set_attr "predicable" "no,yes,no,no,yes,no,yes,no,yes")
!    (set_attr "length" "*,4,2,4,4,4,4,4,8")])
  
  ; There is a bl_s instruction (16 bit opcode branch-and-link), but we can't
  ; use it for lack of inter-procedural branch shortening.
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 4935,4941 ****
    [(set (pc)
  	(if_then_else
  	  (match_operator 3 "equality_comparison_operator"
! 	    [(zero_extract:SI (match_operand:SI 1 "register_operand" "Rcqq,c")
  			      (const_int 1)
  			      (match_operand:SI 2 "nonmemory_operand" "L,Lc"))
  	     (const_int 0)])
--- 4937,4943 ----
    [(set (pc)
  	(if_then_else
  	  (match_operator 3 "equality_comparison_operator"
! 	    [(zero_extract:SI (match_operand:SI 1 "register_operand"  "q,c")
  			      (const_int 1)
  			      (match_operand:SI 2 "nonmemory_operand" "L,Lc"))
  	     (const_int 0)])
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 5145,5164 ****
     (set_attr "predicable" "yes")])
  
  (define_insn "abssf2"
!   [(set (match_operand:SF 0 "dest_reg_operand"    "=Rcq#q,Rcw,w")
! 	(abs:SF (match_operand:SF 1 "register_operand" "0,  0,c")))]
    ""
!   "bclr%? %0,%1,31%&"
    [(set_attr "type" "unary")
     (set_attr "iscompact" "maybe,false,false")
     (set_attr "length" "2,4,4")
     (set_attr "predicable" "no,yes,no")])
  
  (define_insn "negsf2"
!   [(set (match_operand:SF 0 "dest_reg_operand" "=Rcw,w")
! 	(neg:SF (match_operand:SF 1 "register_operand" "0,c")))]
    ""
!   "bxor%? %0,%1,31"
    [(set_attr "type" "unary")
     (set_attr "predicable" "yes,no")])
  
--- 5147,5166 ----
     (set_attr "predicable" "yes")])
  
  (define_insn "abssf2"
!   [(set (match_operand:SF 0 "dest_reg_operand"    "=q,r,r")
! 	(abs:SF (match_operand:SF 1 "register_operand" "0,0,r")))]
    ""
!   "bclr%?\\t%0,%1,31%&"
    [(set_attr "type" "unary")
     (set_attr "iscompact" "maybe,false,false")
     (set_attr "length" "2,4,4")
     (set_attr "predicable" "no,yes,no")])
  
  (define_insn "negsf2"
!   [(set (match_operand:SF 0 "dest_reg_operand" "=r,r")
! 	(neg:SF (match_operand:SF 1 "register_operand" "0,r")))]
    ""
!   "bxor%?\\t%0,%1,31"
    [(set_attr "type" "unary")
     (set_attr "predicable" "yes,no")])
  
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 5958,5965 ****
     (set_attr "length" "4")])
  
  (define_insn "*ashlsi2_cnt1"
!   [(set (match_operand:SI 0 "dest_reg_operand"           "=Rcqq,w")
! 	(ashift:SI (match_operand:SI 1 "register_operand" "Rcqq,c")
  		   (const_int 1)))]
    ""
    "asl%? %0,%1%&"
--- 5960,5967 ----
     (set_attr "length" "4")])
  
  (define_insn "*ashlsi2_cnt1"
!   [(set (match_operand:SI 0 "dest_reg_operand"           "=q,w")
! 	(ashift:SI (match_operand:SI 1 "register_operand" "q,c")
  		   (const_int 1)))]
    ""
    "asl%? %0,%1%&"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 5991,5998 ****
     (set_attr "predicable" "no")])
  
  (define_insn "*lshrsi3_cnt1"
!   [(set (match_operand:SI 0 "dest_reg_operand"             "=Rcqq,w")
! 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "Rcqq,c")
  		     (const_int 1)))]
    ""
    "lsr%? %0,%1%&"
--- 5993,6000 ----
     (set_attr "predicable" "no")])
  
  (define_insn "*lshrsi3_cnt1"
!   [(set (match_operand:SI 0 "dest_reg_operand"             "=q,w")
! 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "q,c")
  		     (const_int 1)))]
    ""
    "lsr%? %0,%1%&"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6001,6008 ****
     (set_attr "predicable" "no,no")])
  
  (define_insn "*ashrsi3_cnt1"
!   [(set (match_operand:SI 0 "dest_reg_operand"             "=Rcqq,w")
! 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "Rcqq,c")
  		     (const_int 1)))]
    ""
    "asr%? %0,%1%&"
--- 6003,6010 ----
     (set_attr "predicable" "no,no")])
  
  (define_insn "*ashrsi3_cnt1"
!   [(set (match_operand:SI 0 "dest_reg_operand"             "=q,w")
! 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "q,c")
  		     (const_int 1)))]
    ""
    "asr%? %0,%1%&"
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6133,6139 ****
     (set_attr "length" "36")])
  
  (define_insn "macd"
!   [(set (match_operand:DI 0 "even_register_operand"	       "=Rcr,r,r")
  	(plus:DI
  	 (mult:DI
  	  (sign_extend:DI (match_operand:SI 1 "register_operand" "%0,r,r"))
--- 6135,6141 ----
     (set_attr "length" "36")])
  
  (define_insn "macd"
!   [(set (match_operand:DI 0 "even_register_operand"	"=r,r,r")
  	(plus:DI
  	 (mult:DI
  	  (sign_extend:DI (match_operand:SI 1 "register_operand" "%0,r,r"))
*************** core_3, archs4x, archs4xd, archs4xd_slow
*** 6235,6241 ****
     (set_attr "length" "36")])
  
  (define_insn "macdu"
!   [(set (match_operand:DI 0 "even_register_operand"	       "=Rcr,r,r")
  	(plus:DI
  	 (mult:DI
  	  (zero_extend:DI (match_operand:SI 1 "register_operand" "%0,r,r"))
--- 6237,6243 ----
     (set_attr "length" "36")])
  
  (define_insn "macdu"
!   [(set (match_operand:DI 0 "even_register_operand"	"=r,r,r")
  	(plus:DI
  	 (mult:DI
  	  (zero_extend:DI (match_operand:SI 1 "register_operand" "%0,r,r"))
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc.opt gcc-13.1.0/gcc/config/arc/arc.opt
*** gcc-12.2.0/gcc/config/arc/arc.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Synopsys DesignWare ARC port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Synopsys DesignWare ARC port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Enum(arc_tune_attr) String(arc750d) Valu
*** 276,281 ****
--- 276,284 ----
  EnumValue
  Enum(arc_tune_attr) String(core3) Value(ARC_TUNE_CORE_3)
  
+ EnumValue
+ Enum(arc_tune_attr) String(release31a) Value(ARC_TUNE_ARCHS4X_REL31A)
+ 
  mindexed-loads
  Target Var(TARGET_INDEXED_LOADS) Init(TARGET_INDEXED_LOADS_DEFAULT)
  Enable the use of indexed loads.
*************** Target Ignore
*** 305,316 ****
  Does nothing.  Preserved for backward compatibility.
  
  mRcq
! Target Var(TARGET_Rcq)
! Enable Rcq constraint handling - most short code generation depends on this.
  
  mRcw
! Target Var(TARGET_Rcw)
! Enable Rcw constraint handling - ccfsm condexec mostly depends on this.
  
  mearly-cbranchsi
  Target Var(TARGET_EARLY_CBRANCHSI)
--- 308,321 ----
  Does nothing.  Preserved for backward compatibility.
  
  mRcq
! Target Ignore
! Does nothing.  Preserved for backward compatibility.
! 
  
  mRcw
! Target Ignore
! Does nothing.  Preserved for backward compatibility.
! 
  
  mearly-cbranchsi
  Target Var(TARGET_EARLY_CBRANCHSI)
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc600.md gcc-13.1.0/gcc/config/arc/arc600.md
*** gcc-12.2.0/gcc/config/arc/arc600.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc600.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC600 cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  ;;              on behalf of Synopsys Inc.
  
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC600 cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributor: Joern Rennecke <joern.rennecke@embecosm.com>
  ;;              on behalf of Synopsys Inc.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arc700.md gcc-13.1.0/gcc/config/arc/arc700.md
*** gcc-12.2.0/gcc/config/arc/arc700.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arc700.md	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  ;;    Ramana Radhakrishnan(ramana.radhakrishnan@codito.com)
  ;;    Factoring out and improvement of ARC700 Scheduling by
  ;;    Joern Rennecke (joern.rennecke@embecosm.com)
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 5,11 ----
  ;;    Ramana Radhakrishnan(ramana.radhakrishnan@codito.com)
  ;;    Factoring out and improvement of ARC700 Scheduling by
  ;;    Joern Rennecke (joern.rennecke@embecosm.com)
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arcEM.md gcc-13.1.0/gcc/config/arc/arcEM.md
*** gcc-12.2.0/gcc/config/arc/arcEM.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arcEM.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC EM cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC EM cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arcHS.md gcc-13.1.0/gcc/config/arc/arcHS.md
*** gcc-12.2.0/gcc/config/arc/arcHS.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arcHS.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributor: Claudiu Zissulescu <claudiu.zissulescu@synopsys.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arc/arcHS4x.md gcc-13.1.0/gcc/config/arc/arcHS4x.md
*** gcc-12.2.0/gcc/config/arc/arcHS4x.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/arcHS4x.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS4x cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,6 ----
  ;; DFA scheduling description of the Synopsys DesignWare ARC HS4x cpu
  ;; for GNU C compiler
! ;; Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
***************
*** 27,40 ****
  (define_cpu_unit "hs4x_mult" "ARCHS4x")
  (define_cpu_unit "hs4x_x1, hs4x_x2" "ARCHS4x")
  (define_cpu_unit "hs4x_y1, hs4x_y2" "ARCHS4x")
  
  (define_insn_reservation "hs4x_brj_op" 1
    (and (match_test "TARGET_HS")
         (eq_attr "tune" "archs4x, archs4xd")
         (eq_attr "type" "call, call_no_delay_slot, uncond_branch, jump, \
! branch, brcc,brcc_no_delay_slot, sfunc"))
    "hs4x_issue0")
  
  (define_insn_reservation "hs4x_data_load_op" 4
    (and (match_test "TARGET_HS")
         (eq_attr "tune" "archs4x, archs4xd")
--- 27,47 ----
  (define_cpu_unit "hs4x_mult" "ARCHS4x")
  (define_cpu_unit "hs4x_x1, hs4x_x2" "ARCHS4x")
  (define_cpu_unit "hs4x_y1, hs4x_y2" "ARCHS4x")
+ (define_cpu_unit "hs4x_brcc0, hs4x_brcc1" "ARCHS4x")
  
  (define_insn_reservation "hs4x_brj_op" 1
    (and (match_test "TARGET_HS")
         (eq_attr "tune" "archs4x, archs4xd")
         (eq_attr "type" "call, call_no_delay_slot, uncond_branch, jump, \
! branch, sfunc"))
    "hs4x_issue0")
  
+ (define_insn_reservation "hs4x_brcc_op" 1
+   (and (match_test "TARGET_HS")
+        (eq_attr "tune" "archs4x, archs4xd")
+        (eq_attr "type" "brcc,brcc_no_delay_slot,loop_end"))
+   "hs4x_issue0 + hs4x_brcc0 + hs4x_brcc1")
+ 
  (define_insn_reservation "hs4x_data_load_op" 4
    (and (match_test "TARGET_HS")
         (eq_attr "tune" "archs4x, archs4xd")
*************** branch, brcc,brcc_no_delay_slot, sfunc")
*** 43,52 ****
  
  (define_insn_reservation "hs4x_data_store_op" 1
    (and (match_test "TARGET_HS")
!        (eq_attr "tune" "archs4x, archs4xd")
         (eq_attr "type" "store"))
    "hs4x_issue1 + hs4x_ld_st")
  
  ;; Advanced ALU
  (define_insn_reservation "hs4x_adv_alue_op" 4
    (and (match_test "TARGET_HS")
--- 50,65 ----
  
  (define_insn_reservation "hs4x_data_store_op" 1
    (and (match_test "TARGET_HS")
!        (eq_attr "tune_store" "normal")
         (eq_attr "type" "store"))
    "hs4x_issue1 + hs4x_ld_st")
  
+ (define_insn_reservation "hs4x_data_store_1_op" 2
+   (and (match_test "TARGET_HS")
+        (eq_attr "tune_store" "rel31a")
+        (eq_attr "type" "store"))
+   "hs4x_issue1 + hs4x_ld_st + hs4x_brcc0, hs4x_brcc1")
+ 
  ;; Advanced ALU
  (define_insn_reservation "hs4x_adv_alue_op" 4
    (and (match_test "TARGET_HS")
diff -Nrcpad gcc-12.2.0/gcc/config/arc/atomic.md gcc-13.1.0/gcc/config/arc/atomic.md
*** gcc-12.2.0/gcc/config/arc/atomic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/atomic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for ARC atomic instructions.
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for ARC atomic instructions.
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arc/big.h gcc-13.1.0/gcc/config/arc/big.h
*** gcc-12.2.0/gcc/config/arc/big.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/big.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definition of big endian ARC machine for GNU compiler.
  
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definition of big endian ARC machine for GNU compiler.
  
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/builtins.def gcc-13.1.0/gcc/config/arc/builtins.def
*** gcc-12.2.0/gcc/config/arc/builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/constraints.md gcc-13.1.0/gcc/config/arc/constraints.md
*** gcc-12.2.0/gcc/config/arc/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 432,481 ****
  	       && !arc_legitimate_pic_addr_p (op)
  	       && !(satisfies_constraint_I (op) && optimize_size)"))
  
- ; Note that the 'cryptic' register constraints will not make reload use the
- ; associated class to reload into, but this will not penalize reloading of any
- ; other operands, or using an alternate part of the same alternative.
- 
- ; Rcq is different in three important ways from a register class constraint:
- ; - It does not imply a register class, hence reload will not use it to drive
- ;   reloads.
- ; - It matches even when there is no register class to describe its accepted
- ;   set; not having such a set again lessens the impact on register allocation.
- ; - It won't match when the instruction is conditionalized by the ccfsm.
- (define_constraint "Rcq"
-   "@internal
-    Cryptic q - for short insn generation while not affecting register allocation
-    Registers usable in ARCompact 16-bit instructions: @code{r0}-@code{r3},
-    @code{r12}-@code{r15}"
-   (and (match_code "reg")
-        (match_test "TARGET_Rcq
- 		    && !arc_ccfsm_cond_exec_p ()
- 		    && IN_RANGE (REGNO (op) ^ 4, 4, 11)")))
- 
- ; If we need a reload, we generally want to steer reload to use three-address
- ; alternatives in preference of two-address alternatives, unless the
- ; three-address alternative introduces a LIMM that is unnecessary for the
- ; two-address alternative.
- (define_constraint "Rcw"
-   "@internal
-    Cryptic w - for use in early alternatives with matching constraint"
-   (and (match_code "reg")
-        (match_test
- 	"TARGET_Rcw
- 	 && REGNO (op) < FIRST_PSEUDO_REGISTER
- 	 && TEST_HARD_REG_BIT (reg_class_contents[GENERAL_REGS],
- 			       REGNO (op))")))
- 
- (define_constraint "Rcr"
-   "@internal
-    Cryptic r - for use in early alternatives with matching constraint"
-   (and (match_code "reg")
-        (match_test
- 	"TARGET_Rcw
- 	 && REGNO (op) < FIRST_PSEUDO_REGISTER
- 	 && TEST_HARD_REG_BIT (reg_class_contents[GENERAL_REGS],
- 			       REGNO (op))")))
- 
  (define_constraint "Rcb"
    "@internal
     Stack Pointer register @code{r28} - do not reload into its class"
--- 432,437 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arc/driver-arc.cc gcc-13.1.0/gcc/config/arc/driver-arc.cc
*** gcc-12.2.0/gcc/config/arc/driver-arc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/driver-arc.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu <claziss@synopsys.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by Claudiu Zissulescu <claziss@synopsys.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arc/elf.h gcc-13.1.0/gcc/config/arc/elf.h
*** gcc-12.2.0/gcc/config/arc/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target macros for arc*-elf targets.
  
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target macros for arc*-elf targets.
  
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/fpx.md gcc-13.1.0/gcc/config/arc/fpx.md
*** gcc-12.2.0/gcc/config/arc/fpx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/fpx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Machine description of the Synopsys DesignWare ARC cpu Floating Point
  ;; extensions for GNU C compiler
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,6 ----
  ;; Machine description of the Synopsys DesignWare ARC cpu Floating Point
  ;; extensions for GNU C compiler
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/genmultilib.awk gcc-13.1.0/gcc/config/arc/genmultilib.awk
*** gcc-12.2.0/gcc/config/arc/genmultilib.awk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/genmultilib.awk	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arc/genoptions.awk gcc-13.1.0/gcc/config/arc/genoptions.awk
*** gcc-12.2.0/gcc/config/arc/genoptions.awk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/genoptions.awk	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arc/linux.h gcc-13.1.0/gcc/config/arc/linux.h
*** gcc-12.2.0/gcc/config/arc/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target macros for arc*-*-linux targets.
  
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target macros for arc*-*-linux targets.
  
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 45,51 ****
      %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \
    -X \
    %{mbig-endian:-EB} %{EB} %{EL} \
-   %{!z:-z max-page-size=0x2000 -z common-page-size=0x2000} \
    %{mcpu=nps400:-marclinux_nps; :-marclinux}"
  
  #undef STARTFILE_SPEC
--- 45,50 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arc/predicates.md gcc-13.1.0/gcc/config/arc/predicates.md
*** gcc-12.2.0/gcc/config/arc/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Synopsys DesignWare ARC.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arc/simdext.md gcc-13.1.0/gcc/config/arc/simdext.md
*** gcc-12.2.0/gcc/config/arc/simdext.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/simdext.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Machine description of the Synopsys DesignWare ARC cpu for GNU C compiler
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arc/t-arc gcc-13.1.0/gcc/config/arc/t-arc
*** gcc-12.2.0/gcc/config/arc/t-arc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/t-arc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # GCC Makefile fragment for Synopsys DesignWare ARC.
  #
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # GCC Makefile fragment for Synopsys DesignWare ARC.
  #
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arc/t-multilib gcc-13.1.0/gcc/config/arc/t-multilib
*** gcc-12.2.0/gcc/config/arc/t-multilib	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/t-multilib	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Generated from  : ./gcc/config/arc/arc-cpu.def
  # Used by         : tmake_file from Makefile and genmultilib
  
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 3,9 ----
  # Generated from  : ./gcc/config/arc/arc-cpu.def
  # Used by         : tmake_file from Makefile and genmultilib
  
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 21,29 ****
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! MULTILIB_OPTIONS = mcpu=em/mcpu=em_mini/mcpu=arcem/mcpu=em4/mcpu=em4_dmips/mcpu=em4_fpus/mcpu=em4_fpuda/mcpu=quarkse_em/mcpu=hs/mcpu=archs/mcpu=hs34/mcpu=hs38/mcpu=hs38_linux/mcpu=hs4x/mcpu=hs4xd/mcpu=arc600/mcpu=arc600_norm/mcpu=arc600_mul64/mcpu=arc600_mul32x16/mcpu=arc601/mcpu=arc601_norm/mcpu=arc601_mul64/mcpu=arc601_mul32x16/mcpu=arc700/mcpu=nps400
  
! MULTILIB_DIRNAMES = em em_mini arcem em4 em4_dmips em4_fpus em4_fpuda quarkse_em hs archs hs34 hs38 hs38_linux hs4x hs4xd arc600 arc600_norm arc600_mul64 arc600_mul32x16 arc601 arc601_norm arc601_mul64 arc601_mul32x16 arc700 nps400
  
  # Aliases:
  MULTILIB_MATCHES  = mcpu?arc600=mcpu?ARC600
--- 21,29 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
! MULTILIB_OPTIONS = mcpu=em/mcpu=em_mini/mcpu=arcem/mcpu=em4/mcpu=em4_dmips/mcpu=em4_fpus/mcpu=em4_fpuda/mcpu=quarkse_em/mcpu=hs/mcpu=archs/mcpu=hs34/mcpu=hs38/mcpu=hs38_linux/mcpu=hs4x/mcpu=hs4xd/mcpu=hs4x_rel31/mcpu=arc600/mcpu=arc600_norm/mcpu=arc600_mul64/mcpu=arc600_mul32x16/mcpu=arc601/mcpu=arc601_norm/mcpu=arc601_mul64/mcpu=arc601_mul32x16/mcpu=arc700/mcpu=nps400
  
! MULTILIB_DIRNAMES = em em_mini arcem em4 em4_dmips em4_fpus em4_fpuda quarkse_em hs archs hs34 hs38 hs38_linux hs4x hs4xd hs4x_rel31 arc600 arc600_norm arc600_mul64 arc600_mul32x16 arc601 arc601_norm arc601_mul64 arc601_mul32x16 arc700 nps400
  
  # Aliases:
  MULTILIB_MATCHES  = mcpu?arc600=mcpu?ARC600
diff -Nrcpad gcc-12.2.0/gcc/config/arc/t-multilib-linux gcc-13.1.0/gcc/config/arc/t-multilib-linux
*** gcc-12.2.0/gcc/config/arc/t-multilib-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arc/t-multilib-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/README-interworking gcc-13.1.0/gcc/config/arm/README-interworking
*** gcc-12.2.0/gcc/config/arm/README-interworking	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/README-interworking	Wed Apr 26 07:09:39 2023
*************** used.
*** 742,748 ****
       interworking as the --support-old-code switch has taken care if this.
  
  
! Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 742,748 ----
       interworking as the --support-old-code switch has taken care if this.
  
  
! Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/config/arm/aarch-bti-insert.cc gcc-13.1.0/gcc/config/arm/aarch-bti-insert.cc
*** gcc-12.2.0/gcc/config/arm/aarch-bti-insert.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/arm/aarch-bti-insert.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,214 ----
+ /* Branch Target Identification for AArch64 architecture.
+    Copyright (C) 2019-2023 Free Software Foundation, Inc.
+    Contributed by Arm Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #define INCLUDE_STRING
+ #include "system.h"
+ #include "coretypes.h"
+ #include "backend.h"
+ #include "target.h"
+ #include "rtl.h"
+ #include "tree.h"
+ #include "memmodel.h"
+ #include "gimple.h"
+ #include "tm_p.h"
+ #include "stringpool.h"
+ #include "attribs.h"
+ #include "emit-rtl.h"
+ #include "gimplify.h"
+ #include "gimple-iterator.h"
+ #include "dumpfile.h"
+ #include "rtl-iter.h"
+ #include "cfgrtl.h"
+ #include "tree-pass.h"
+ #include "cgraph.h"
+ 
+ /* This pass enables the support for Branch Target Identification Mechanism for
+    Arm/AArch64.  This is a security feature introduced in ARMv8.5-A
+    architecture and ARMv8.1-M.  A BTI instruction is used to guard against the
+    execution of instructions which are not the intended target of an indirect
+    branch.
+ 
+    Outside of a guarded memory region, a BTI instruction executes as a NOP.
+    Within a guarded memory region any target of an indirect branch must be
+    a compatible BTI or BRK, HLT, PACIASP, PACIBASP instruction (even if the
+    branch is triggered in a non-guarded memory region).  An incompatibility
+    generates a Branch Target Exception.
+ 
+    The compatibility of the BTI instruction is as follows (AArch64
+    examples):
+    BTI j : Can be a target of any indirect jump (BR Xn).
+    BTI c : Can be a target of any indirect call (BLR Xn and BR X16/X17).
+    BTI jc: Can be a target of any indirect call or indirect jump.
+    BTI   : Can not be a target of any indirect call or indirect jump.
+ 
+   In order to enable this mechanism, this pass iterates through the
+   control flow of the code and adds appropriate BTI instructions :
+   * Add a new "BTI C" at the beginning of a function, unless its already
+     protected by a "PACIASP/PACIBSP".  We exempt the functions that are only
+     called directly.
+   * Add a new "BTI J" for every target of an indirect jump, jump table targets,
+     non-local goto targets or labels that might be referenced by variables,
+     constant pools, etc (NOTE_INSN_DELETED_LABEL)
+ 
+   Since we have already changed the use of indirect tail calls to only x16
+   and x17, we do not have to use "BTI JC".
+ 
+   This pass is triggered by the command line option -mbranch-protection=bti or
+   -mbranch-protection=standard.  Since all the BTI instructions are in the HINT
+   space, this pass does not require any minimum architecture version.  */
+ 
+ namespace {
+ 
+ const pass_data pass_data_insert_bti =
+ {
+   RTL_PASS, /* type.  */
+   "bti", /* name.  */
+   OPTGROUP_NONE, /* optinfo_flags.  */
+   TV_MACH_DEP, /* tv_id.  */
+   0, /* properties_required.  */
+   0, /* properties_provided.  */
+   0, /* properties_destroyed.  */
+   0, /* todo_flags_start.  */
+   0, /* todo_flags_finish.  */
+ };
+ 
+ /* Insert the BTI instruction.  */
+ /* This is implemented as a late RTL pass that runs before branch
+    shortening and does the following.  */
+ static unsigned int
+ rest_of_insert_bti (void)
+ {
+   timevar_push (TV_MACH_DEP);
+ 
+   rtx bti_insn;
+   rtx_insn *insn;
+   basic_block bb;
+ 
+   bb = 0;
+   FOR_EACH_BB_FN (bb, cfun)
+     {
+       for (insn = BB_HEAD (bb); insn != NEXT_INSN (BB_END (bb));
+ 	   insn = NEXT_INSN (insn))
+ 	{
+ 	  /* If a label is marked to be preserved or can be a non-local goto
+ 	     target, it must be protected with a BTI J.  */
+ 	  if (LABEL_P (insn)
+ 	       && (LABEL_PRESERVE_P (insn)
+ 		   || bb->flags & BB_NON_LOCAL_GOTO_TARGET))
+ 	    {
+ 	      bti_insn = aarch_gen_bti_j ();
+ 	      emit_insn_after (bti_insn, insn);
+ 	      continue;
+ 	    }
+ 
+ 	  /* There could still be more labels that are valid targets of a
+ 	     BTI J instuction.  To find them we start looking through the
+ 	     JUMP_INSN.  If it jumps to a jump table, then we find all labels
+ 	     of the jump table to protect with a BTI J.  */
+ 	  if (JUMP_P (insn))
+ 	    {
+ 	      rtx_jump_table_data *table;
+ 	      if (tablejump_p (insn, NULL, &table))
+ 		{
+ 		  rtvec vec = table->get_labels ();
+ 		  int j;
+ 		  rtx_insn *label;
+ 
+ 		  for (j = GET_NUM_ELEM (vec) - 1; j >= 0; --j)
+ 		    {
+ 		      label = as_a <rtx_insn *> (XEXP (RTVEC_ELT (vec, j), 0));
+ 		      rtx_insn *next = next_nonnote_nondebug_insn (label);
+ 		      if (aarch_bti_j_insn_p (next))
+ 			continue;
+ 
+ 		      bti_insn = aarch_gen_bti_j ();
+ 		      emit_insn_after (bti_insn, label);
+ 		    }
+ 		}
+ 	    }
+ 
+ 	  /* Also look for calls to setjmp () which would be marked with
+ 	     REG_SETJMP note and put a BTI J after.  This is where longjump ()
+ 	     will return.  */
+ 	  if (CALL_P (insn) && (find_reg_note (insn, REG_SETJMP, NULL)))
+ 	    {
+ 	      bti_insn = aarch_gen_bti_j ();
+ 	      emit_insn_after (bti_insn, insn);
+ 	      continue;
+ 	    }
+ 	}
+     }
+ 
+   /* Since a Branch Target Exception can only be triggered by an indirect call,
+      we exempt function that are only called directly.  We also exempt
+      functions that are already protected by Return Address Signing (PACIASP/
+      PACIBSP).  For all other cases insert a BTI C at the beginning of the
+      function.  */
+   if (!cgraph_node::get (cfun->decl)->only_called_directly_p ())
+     {
+       bb = ENTRY_BLOCK_PTR_FOR_FN (cfun)->next_bb;
+       insn = BB_HEAD (bb);
+       if (!aarch_pac_insn_p (get_first_nonnote_insn ()))
+ 	{
+ 	  bti_insn = aarch_gen_bti_c ();
+ 	  emit_insn_before (bti_insn, insn);
+ 	}
+     }
+ 
+   timevar_pop (TV_MACH_DEP);
+   return 0;
+ }
+ 
+ 
+ class pass_insert_bti : public rtl_opt_pass
+ {
+ public:
+   pass_insert_bti (gcc::context *ctxt)
+     : rtl_opt_pass (pass_data_insert_bti, ctxt)
+   {}
+ 
+   /* opt_pass methods: */
+   virtual bool gate (function *)
+     {
+       if (aarch_bti_enabled ())
+         {
+           aarch_bti_arch_check ();
+           return true;
+         }
+       return false;
+     }
+ 
+   virtual unsigned int execute (function *)
+     {
+       return rest_of_insert_bti ();
+     }
+ 
+ }; // class pass_insert_bti
+ 
+ } // anon namespace
+ 
+ rtl_opt_pass *
+ make_pass_insert_bti (gcc::context *ctxt)
+ {
+   return new pass_insert_bti (ctxt);
+ }
diff -Nrcpad gcc-12.2.0/gcc/config/arm/aarch-common-protos.h gcc-13.1.0/gcc/config/arm/aarch-common-protos.h
*** gcc-12.2.0/gcc/config/arm/aarch-common-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/aarch-common-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Functions and structures shared between arm and aarch64.
  
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* Functions and structures shared between arm and aarch64.
  
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** extern int arm_no_early_alu_shift_value_
*** 42,47 ****
--- 42,53 ----
  extern int arm_no_early_mul_dep (rtx, rtx);
  extern int arm_no_early_store_addr_dep (rtx, rtx);
  extern bool arm_rtx_shift_left_p (rtx);
+ extern void aarch_bti_arch_check (void);
+ extern bool aarch_bti_enabled (void);
+ extern bool aarch_bti_j_insn_p (rtx_insn *);
+ extern bool aarch_pac_insn_p (rtx);
+ extern rtx aarch_gen_bti_c (void);
+ extern rtx aarch_gen_bti_j (void);
  
  /* RTX cost table definitions.  These are used when tuning for speed rather
     than for size and should reflect the _additional_ cost over the cost
*************** rtx_insn *arm_md_asm_adjust (vec<rtx> &o
*** 153,156 ****
--- 159,168 ----
  			     vec<rtx> &clobbers, HARD_REG_SET &clobbered_regs,
  			     location_t loc);
  
+ /* Parsing routine for branch-protection common to AArch64 and Arm.  */
+ enum aarch_parse_opt_result aarch_parse_branch_protection (const char*, char**);
+ 
+ /* Validation routine for branch-protection common to AArch64 and Arm.  */
+ bool aarch_validate_mbranch_protection (const char *);
+ 
  #endif /* GCC_AARCH_COMMON_PROTOS_H */
diff -Nrcpad gcc-12.2.0/gcc/config/arm/aarch-common.cc gcc-13.1.0/gcc/config/arm/aarch-common.cc
*** gcc-12.2.0/gcc/config/arm/aarch-common.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/aarch-common.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Dependency checks for instruction scheduling, shared between ARM and
     AARCH64.
  
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,7 ----
  /* Dependency checks for instruction scheduling, shared between ARM and
     AARCH64.
  
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 36,41 ****
--- 36,42 ----
  #include "expr.h"
  #include "function.h"
  #include "emit-rtl.h"
+ #include "aarch-common.h"
  
  /* Return TRUE if X is either an arithmetic shift left, or
     is a multiplication by a power of two.  */
*************** arm_md_asm_adjust (vec<rtx> &outputs, ve
*** 657,659 ****
--- 658,843 ----
  
    return saw_asm_flag ? seq : NULL;
  }
+ 
+ #define BRANCH_PROTECT_STR_MAX 255
+ extern char *accepted_branch_protection_string;
+ 
+ static enum aarch_parse_opt_result
+ aarch_handle_no_branch_protection (char* str, char* rest)
+ {
+   aarch_ra_sign_scope = AARCH_FUNCTION_NONE;
+   aarch_enable_bti = 0;
+   if (rest)
+     {
+       error ("unexpected %<%s%> after %<%s%>", rest, str);
+       return AARCH_PARSE_INVALID_FEATURE;
+     }
+   return AARCH_PARSE_OK;
+ }
+ 
+ static enum aarch_parse_opt_result
+ aarch_handle_standard_branch_protection (char* str, char* rest)
+ {
+   aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF;
+   aarch_ra_sign_key = AARCH_KEY_A;
+   aarch_enable_bti = 1;
+   if (rest)
+     {
+       error ("unexpected %<%s%> after %<%s%>", rest, str);
+       return AARCH_PARSE_INVALID_FEATURE;
+     }
+   return AARCH_PARSE_OK;
+ }
+ 
+ static enum aarch_parse_opt_result
+ aarch_handle_pac_ret_protection (char* str ATTRIBUTE_UNUSED,
+ 				 char* rest ATTRIBUTE_UNUSED)
+ {
+   aarch_ra_sign_scope = AARCH_FUNCTION_NON_LEAF;
+   aarch_ra_sign_key = AARCH_KEY_A;
+   return AARCH_PARSE_OK;
+ }
+ 
+ static enum aarch_parse_opt_result
+ aarch_handle_pac_ret_leaf (char* str ATTRIBUTE_UNUSED,
+ 			   char* rest ATTRIBUTE_UNUSED)
+ {
+   aarch_ra_sign_scope = AARCH_FUNCTION_ALL;
+   return AARCH_PARSE_OK;
+ }
+ 
+ static enum aarch_parse_opt_result
+ aarch_handle_pac_ret_b_key (char* str ATTRIBUTE_UNUSED,
+ 			    char* rest ATTRIBUTE_UNUSED)
+ {
+   aarch_ra_sign_key = AARCH_KEY_B;
+   return AARCH_PARSE_OK;
+ }
+ 
+ static enum aarch_parse_opt_result
+ aarch_handle_bti_protection (char* str ATTRIBUTE_UNUSED,
+ 			     char* rest ATTRIBUTE_UNUSED)
+ {
+   aarch_enable_bti = 1;
+   return AARCH_PARSE_OK;
+ }
+ 
+ static const struct aarch_branch_protect_type aarch_pac_ret_subtypes[] = {
+   { "leaf", aarch_handle_pac_ret_leaf, NULL, 0 },
+   { "b-key", aarch_handle_pac_ret_b_key, NULL, 0 },
+   { NULL, NULL, NULL, 0 }
+ };
+ 
+ static const struct aarch_branch_protect_type aarch_branch_protect_types[] = {
+   { "none", aarch_handle_no_branch_protection, NULL, 0 },
+   { "standard", aarch_handle_standard_branch_protection, NULL, 0 },
+   { "pac-ret", aarch_handle_pac_ret_protection, aarch_pac_ret_subtypes,
+     ARRAY_SIZE (aarch_pac_ret_subtypes) },
+   { "bti", aarch_handle_bti_protection, NULL, 0 },
+   { NULL, NULL, NULL, 0 }
+ };
+ 
+ /* Parses CONST_STR for branch protection features specified in
+    aarch64_branch_protect_types, and set any global variables required.  Returns
+    the parsing result and assigns LAST_STR to the last processed token from
+    CONST_STR so that it can be used for error reporting.  */
+ 
+ enum aarch_parse_opt_result
+ aarch_parse_branch_protection (const char *const_str, char** last_str)
+ {
+   char *str_root = xstrdup (const_str);
+   char* token_save = NULL;
+   char *str = strtok_r (str_root, "+", &token_save);
+   enum aarch_parse_opt_result res = AARCH_PARSE_OK;
+   if (!str)
+     res = AARCH_PARSE_MISSING_ARG;
+   else
+     {
+       char *next_str = strtok_r (NULL, "+", &token_save);
+       /* Reset the branch protection features to their defaults.  */
+       aarch_handle_no_branch_protection (NULL, NULL);
+ 
+       while (str && res == AARCH_PARSE_OK)
+ 	{
+ 	  const aarch_branch_protect_type* type = aarch_branch_protect_types;
+ 	  bool found = false;
+ 	  /* Search for this type.  */
+ 	  while (type && type->name && !found && res == AARCH_PARSE_OK)
+ 	    {
+ 	      if (strcmp (str, type->name) == 0)
+ 		{
+ 		  found = true;
+ 		  res = type->handler (str, next_str);
+ 		  str = next_str;
+ 		  next_str = strtok_r (NULL, "+", &token_save);
+ 		}
+ 	      else
+ 		type++;
+ 	    }
+ 	  if (found && res == AARCH_PARSE_OK)
+ 	    {
+ 	      bool found_subtype = true;
+ 	      /* Loop through each token until we find one that isn't a
+ 		 subtype.  */
+ 	      while (found_subtype)
+ 		{
+ 		  found_subtype = false;
+ 		  const aarch_branch_protect_type *subtype = type->subtypes;
+ 		  /* Search for the subtype.  */
+ 		  while (str && subtype && subtype->name && !found_subtype
+ 			  && res == AARCH_PARSE_OK)
+ 		    {
+ 		      if (strcmp (str, subtype->name) == 0)
+ 			{
+ 			  found_subtype = true;
+ 			  res = subtype->handler (str, next_str);
+ 			  str = next_str;
+ 			  next_str = strtok_r (NULL, "+", &token_save);
+ 			}
+ 		      else
+ 			subtype++;
+ 		    }
+ 		}
+ 	    }
+ 	  else if (!found)
+ 	    res = AARCH_PARSE_INVALID_ARG;
+ 	}
+     }
+   /* Copy the last processed token into the argument to pass it back.
+     Used by option and attribute validation to print the offending token.  */
+   if (last_str)
+     {
+       if (str)
+ 	strcpy (*last_str, str);
+       else
+ 	*last_str = NULL;
+     }
+ 
+   if (res == AARCH_PARSE_OK)
+     {
+       /* If needed, alloc the accepted string then copy in const_str.
+ 	Used by override_option_after_change_1.  */
+       if (!accepted_branch_protection_string)
+ 	accepted_branch_protection_string
+ 	  = (char *) xmalloc (BRANCH_PROTECT_STR_MAX + 1);
+       strncpy (accepted_branch_protection_string, const_str,
+ 	       BRANCH_PROTECT_STR_MAX + 1);
+       /* Forcibly null-terminate.  */
+       accepted_branch_protection_string[BRANCH_PROTECT_STR_MAX] = '\0';
+     }
+   return res;
+ }
+ 
+ bool
+ aarch_validate_mbranch_protection (const char *const_str)
+ {
+   char *str = (char *) xmalloc (strlen (const_str));
+   enum aarch_parse_opt_result res =
+     aarch_parse_branch_protection (const_str, &str);
+   if (res == AARCH_PARSE_INVALID_ARG)
+     error ("invalid argument %<%s%> for %<-mbranch-protection=%>", str);
+   else if (res == AARCH_PARSE_MISSING_ARG)
+     error ("missing argument for %<-mbranch-protection=%>");
+   free (str);
+   return res == AARCH_PARSE_OK;
+ }
diff -Nrcpad gcc-12.2.0/gcc/config/arm/aarch-common.h gcc-13.1.0/gcc/config/arm/aarch-common.h
*** gcc-12.2.0/gcc/config/arm/aarch-common.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/arm/aarch-common.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,73 ----
+ /* Types shared between arm and aarch64.
+ 
+    Copyright (C) 2009-2021 Free Software Foundation, Inc.
+    Contributed by Arm Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 3, or (at your
+    option) any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+    License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_AARCH_COMMON_H
+ #define GCC_AARCH_COMMON_H
+ 
+ /* Enum describing the various ways that the
+    aarch*_parse_{arch,tune,cpu,extension} functions can fail.
+    This way their callers can choose what kind of error to give.  */
+ 
+ enum aarch_parse_opt_result
+ {
+   AARCH_PARSE_OK,			/* Parsing was successful.  */
+   AARCH_PARSE_MISSING_ARG,		/* Missing argument.  */
+   AARCH_PARSE_INVALID_FEATURE,		/* Invalid feature modifier.  */
+   AARCH_PARSE_INVALID_ARG		/* Invalid arch, tune, cpu arg.  */
+ };
+ 
+ /* Function types -msign-return-address should sign.  */
+ enum aarch_function_type {
+   /* Don't sign any function.  */
+   AARCH_FUNCTION_NONE,
+   /* Non-leaf functions.  */
+   AARCH_FUNCTION_NON_LEAF,
+   /* All functions.  */
+   AARCH_FUNCTION_ALL
+ };
+ 
+ /* The key type that -msign-return-address should use.  */
+ enum aarch_key_type {
+   AARCH_KEY_A,
+   AARCH_KEY_B
+ };
+ 
+ struct aarch_branch_protect_type
+ {
+   /* The type's name that the user passes to the branch-protection option
+      string.  */
+   const char* name;
+   /* Function to handle the protection type and set global variables.
+      First argument is the string token corresponding with this type and the
+      second argument is the next token in the option string.
+      Return values:
+      * AARCH_PARSE_OK: Handling was sucessful.
+      * AARCH_INVALID_ARG: The type is invalid in this context and the caller
+      should print an error.
+      * AARCH_INVALID_FEATURE: The type is invalid and the handler prints its
+      own error.  */
+   enum aarch_parse_opt_result (*handler)(char*, char*);
+   /* A list of types that can follow this type in the option string.  */
+   const struct aarch_branch_protect_type* subtypes;
+   unsigned int num_subtypes;
+ };
+ 
+ #endif /* GCC_AARCH_COMMON_H */
diff -Nrcpad gcc-12.2.0/gcc/config/arm/aarch-cost-tables.h gcc-13.1.0/gcc/config/arm/aarch-cost-tables.h
*** gcc-12.2.0/gcc/config/arm/aarch-cost-tables.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/aarch-cost-tables.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* RTX cost tables shared between arm and aarch64.
  
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* RTX cost tables shared between arm and aarch64.
  
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/aout.h gcc-13.1.0/gcc/config/arm/aout.h
*** gcc-12.2.0/gcc/config/arm/aout.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/aout.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for ARM with a.out
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@armltd.co.uk).
     
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for ARM with a.out
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@armltd.co.uk).
     
     This file is part of GCC.
***************
*** 74,80 ****
    "wr8",   "wr9",   "wr10",  "wr11",				\
    "wr12",  "wr13",  "wr14",  "wr15",				\
    "wcgr0", "wcgr1", "wcgr2", "wcgr3",				\
!   "cc", "vfpcc", "sfp", "afp", "apsrq", "apsrge", "p0"		\
  }
  #endif
  
--- 74,81 ----
    "wr8",   "wr9",   "wr10",  "wr11",				\
    "wr12",  "wr13",  "wr14",  "wr15",				\
    "wcgr0", "wcgr1", "wcgr2", "wcgr3",				\
!   "cc", "vfpcc", "sfp", "afp", "apsrq", "apsrge", "p0",		\
!   "ra_auth_code"						\
  }
  #endif
  
***************
*** 145,159 ****
  #define NO_DOLLAR_IN_LABEL 1
  #endif
  
- /* Generate DBX debugging information.  riscix.h will undefine this because
-    the native assembler does not support stabs.  */
- #define DBX_DEBUGGING_INFO 1
- 
- /* Acorn dbx moans about continuation chars, so don't use any.  */
- #ifndef DBX_CONTIN_LENGTH
- #define DBX_CONTIN_LENGTH  0
- #endif
- 
  /* Output a function label definition.  */
  #ifndef ASM_DECLARE_FUNCTION_NAME
  #define ASM_DECLARE_FUNCTION_NAME(STREAM, NAME, DECL)	\
--- 146,151 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-builtins.cc gcc-13.1.0/gcc/config/arm/arm-builtins.cc
*** gcc-12.2.0/gcc/config/arm/arm-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of builtins used by the ARM backend.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Description of builtins used by the ARM backend.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** arm_unop_unone_imm_qualifiers[SIMD_MAX_B
*** 385,390 ****
--- 385,403 ----
    (arm_unop_unone_imm_qualifiers)
  
  static enum arm_type_qualifiers
+ arm_unop_pred_unone_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_predicate, qualifier_unsigned };
+ #define UNOP_PRED_UNONE_QUALIFIERS \
+   (arm_unop_pred_unone_qualifiers)
+ 
+ static enum arm_type_qualifiers
+ arm_unop_pred_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_predicate, qualifier_predicate };
+ #define UNOP_PRED_PRED_QUALIFIERS \
+   (arm_unop_pred_pred_qualifiers)
+ 
+ 
+ static enum arm_type_qualifiers
  arm_binop_none_none_none_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_none, qualifier_none, qualifier_none };
  #define BINOP_NONE_NONE_NONE_QUALIFIERS \
*************** arm_binop_pred_unone_unone_qualifiers[SI
*** 427,432 ****
--- 440,451 ----
    (arm_binop_pred_unone_unone_qualifiers)
  
  static enum arm_type_qualifiers
+ arm_binop_pred_unone_pred_qualifiers[SIMD_MAX_BUILTIN_ARGS]
+   = { qualifier_predicate, qualifier_unsigned, qualifier_predicate };
+ #define BINOP_PRED_UNONE_PRED_QUALIFIERS \
+   (arm_binop_pred_unone_pred_qualifiers)
+ 
+ static enum arm_type_qualifiers
  arm_binop_unone_none_imm_qualifiers[SIMD_MAX_BUILTIN_ARGS]
    = { qualifier_unsigned, qualifier_none, qualifier_immediate };
  #define BINOP_UNONE_NONE_IMM_QUALIFIERS \
*************** arm_set_sat_qualifiers[SIMD_MAX_BUILTIN_
*** 851,856 ****
--- 870,879 ----
    = { qualifier_void, qualifier_none };
  #define SET_SAT_QUALIFIERS (arm_set_sat_qualifiers)
  
+ #define v2qi_UP  E_V2QImode
+ #define v4bi_UP  E_V4BImode
+ #define v8bi_UP  E_V8BImode
+ #define v16bi_UP E_V16BImode
  #define v8qi_UP  E_V8QImode
  #define v4hi_UP  E_V4HImode
  #define v4hf_UP  E_V4HFmode
*************** arm_lookup_simd_builtin_type (machine_mo
*** 1471,1477 ****
  			      enum arm_type_qualifiers q)
  {
    int i;
!   int nelts = sizeof (arm_simd_types) / sizeof (arm_simd_types[0]);
  
    /* Non-poly scalar modes map to standard types not in the table.  */
    if (q != qualifier_poly && !VECTOR_MODE_P (mode))
--- 1494,1500 ----
  			      enum arm_type_qualifiers q)
  {
    int i;
!   int nelts = ARRAY_SIZE (arm_simd_types);
  
    /* Non-poly scalar modes map to standard types not in the table.  */
    if (q != qualifier_poly && !VECTOR_MODE_P (mode))
*************** arm_lookup_simd_builtin_type (machine_mo
*** 1489,1500 ****
  }
  
  static tree
! arm_simd_builtin_type (machine_mode mode, bool unsigned_p, bool poly_p)
  {
!   if (poly_p)
      return arm_lookup_simd_builtin_type (mode, qualifier_poly);
!   else if (unsigned_p)
      return arm_lookup_simd_builtin_type (mode, qualifier_unsigned);
    else
      return arm_lookup_simd_builtin_type (mode, qualifier_none);
  }
--- 1512,1525 ----
  }
  
  static tree
! arm_simd_builtin_type (machine_mode mode, arm_type_qualifiers qualifiers)
  {
!   if ((qualifiers & qualifier_poly) != 0)
      return arm_lookup_simd_builtin_type (mode, qualifier_poly);
!   else if ((qualifiers & qualifier_unsigned) != 0)
      return arm_lookup_simd_builtin_type (mode, qualifier_unsigned);
+   else if ((qualifiers & qualifier_predicate) != 0)
+     return unsigned_intHI_type_node;
    else
      return arm_lookup_simd_builtin_type (mode, qualifier_none);
  }
*************** static void
*** 1503,1509 ****
  arm_init_simd_builtin_types (void)
  {
    int i;
!   int nelts = sizeof (arm_simd_types) / sizeof (arm_simd_types[0]);
    tree tdecl;
  
    /* Poly types are a world of their own.  In order to maintain legacy
--- 1528,1534 ----
  arm_init_simd_builtin_types (void)
  {
    int i;
!   int nelts = ARRAY_SIZE (arm_simd_types);
    tree tdecl;
  
    /* Poly types are a world of their own.  In order to maintain legacy
*************** arm_init_builtin (unsigned int fcode, ar
*** 1755,1763 ****
        else
  	{
  	  eltype
! 	    = arm_simd_builtin_type (op_mode,
! 				     (qualifiers & qualifier_unsigned) != 0,
! 				     (qualifiers & qualifier_poly) != 0);
  	  gcc_assert (eltype != NULL);
  
  	  /* Add qualifiers.  */
--- 1780,1786 ----
        else
  	{
  	  eltype
! 	    = arm_simd_builtin_type (op_mode, qualifiers);
  	  gcc_assert (eltype != NULL);
  
  	  /* Add qualifiers.  */
*************** static void
*** 1929,1938 ****
  arm_init_crypto_builtins (void)
  {
    tree V16UQI_type_node
!     = arm_simd_builtin_type (V16QImode, true, false);
  
    tree V4USI_type_node
!     = arm_simd_builtin_type (V4SImode, true, false);
  
    tree v16uqi_ftype_v16uqi
      = build_function_type_list (V16UQI_type_node, V16UQI_type_node,
--- 1952,1961 ----
  arm_init_crypto_builtins (void)
  {
    tree V16UQI_type_node
!     = arm_simd_builtin_type (V16QImode, qualifier_unsigned);
  
    tree V4USI_type_node
!     = arm_simd_builtin_type (V4SImode, qualifier_unsigned);
  
    tree v16uqi_ftype_v16uqi
      = build_function_type_list (V16UQI_type_node, V16UQI_type_node,
*************** arm_expand_builtin_args (rtx target, mac
*** 2989,2999 ****
  		op[argc] = convert_memory_address (Pmode, op[argc]);
  
  	      /* MVE uses mve_pred16_t (aka HImode) for vectors of
! 		 predicates.  */
! 	      if (GET_MODE_CLASS (mode[argc]) == MODE_VECTOR_BOOL)
  		op[argc] = gen_lowpart (mode[argc], op[argc]);
  
! 	      /*gcc_assert (GET_MODE (op[argc]) == mode[argc]); */
  	      if (!(*insn_data[icode].operand[opno].predicate)
  		  (op[argc], mode[argc]))
  		op[argc] = copy_to_mode_reg (mode[argc], op[argc]);
--- 3012,3025 ----
  		op[argc] = convert_memory_address (Pmode, op[argc]);
  
  	      /* MVE uses mve_pred16_t (aka HImode) for vectors of
! 		 predicates, but internally we use V16BI/V8BI/V4BI/V2QI for
! 		 MVE predicate modes.  */
! 	      if (TARGET_HAVE_MVE && VALID_MVE_PRED_MODE (mode[argc]))
  		op[argc] = gen_lowpart (mode[argc], op[argc]);
  
! 	      gcc_assert (GET_MODE (op[argc]) == mode[argc]
! 			  || (GET_MODE(op[argc]) == E_VOIDmode
! 			      && CONSTANT_P (op[argc])));
  	      if (!(*insn_data[icode].operand[opno].predicate)
  		  (op[argc], mode[argc]))
  		op[argc] = copy_to_mode_reg (mode[argc], op[argc]);
*************** constant_arg:
*** 3198,3204 ****
    else
      emit_insn (insn);
  
!   if (GET_MODE_CLASS (tmode) == MODE_VECTOR_BOOL)
      {
        rtx HItarget = gen_reg_rtx (HImode);
        emit_move_insn (HItarget, gen_lowpart (HImode, target));
--- 3224,3230 ----
    else
      emit_insn (insn);
  
!   if (TARGET_HAVE_MVE && VALID_MVE_PRED_MODE (tmode))
      {
        rtx HItarget = gen_reg_rtx (HImode);
        emit_move_insn (HItarget, gen_lowpart (HImode, target));
*************** arm_expand_builtin (tree exp,
*** 4026,4154 ****
    return NULL_RTX;
  }
  
- tree
- arm_builtin_vectorized_function (unsigned int fn, tree type_out, tree type_in)
- {
-   machine_mode in_mode, out_mode;
-   int in_n, out_n;
-   bool out_unsigned_p = TYPE_UNSIGNED (type_out);
- 
-   /* Can't provide any vectorized builtins when we can't use NEON.  */
-   if (!TARGET_NEON)
-     return NULL_TREE;
- 
-   if (TREE_CODE (type_out) != VECTOR_TYPE
-       || TREE_CODE (type_in) != VECTOR_TYPE)
-     return NULL_TREE;
- 
-   out_mode = TYPE_MODE (TREE_TYPE (type_out));
-   out_n = TYPE_VECTOR_SUBPARTS (type_out);
-   in_mode = TYPE_MODE (TREE_TYPE (type_in));
-   in_n = TYPE_VECTOR_SUBPARTS (type_in);
- 
- /* ARM_CHECK_BUILTIN_MODE and ARM_FIND_VRINT_VARIANT are used to find the
-    decl of the vectorized builtin for the appropriate vector mode.
-    NULL_TREE is returned if no such builtin is available.  */
- #undef ARM_CHECK_BUILTIN_MODE
- #define ARM_CHECK_BUILTIN_MODE(C)    \
-   (TARGET_VFP5   \
-    && flag_unsafe_math_optimizations \
-    && ARM_CHECK_BUILTIN_MODE_1 (C))
- 
- #undef ARM_CHECK_BUILTIN_MODE_1
- #define ARM_CHECK_BUILTIN_MODE_1(C) \
-   (out_mode == SFmode && out_n == C \
-    && in_mode == SFmode && in_n == C)
- 
- #undef ARM_FIND_VRINT_VARIANT
- #define ARM_FIND_VRINT_VARIANT(N) \
-   (ARM_CHECK_BUILTIN_MODE (2) \
-     ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v2sf, false) \
-     : (ARM_CHECK_BUILTIN_MODE (4) \
-       ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v4sf, false) \
-       : NULL_TREE))
- 
-   switch (fn)
-     {
-     CASE_CFN_FLOOR:
-       return ARM_FIND_VRINT_VARIANT (vrintm);
-     CASE_CFN_CEIL:
-       return ARM_FIND_VRINT_VARIANT (vrintp);
-     CASE_CFN_TRUNC:
-       return ARM_FIND_VRINT_VARIANT (vrintz);
-     CASE_CFN_ROUND:
-       return ARM_FIND_VRINT_VARIANT (vrinta);
- #undef ARM_CHECK_BUILTIN_MODE_1
- #define ARM_CHECK_BUILTIN_MODE_1(C) \
-   (out_mode == SImode && out_n == C \
-    && in_mode == SFmode && in_n == C)
- 
- #define ARM_FIND_VCVT_VARIANT(N) \
-   (ARM_CHECK_BUILTIN_MODE (2) \
-    ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v2sfv2si, false) \
-    : (ARM_CHECK_BUILTIN_MODE (4) \
-      ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##v4sfv4si, false) \
-      : NULL_TREE))
- 
- #define ARM_FIND_VCVTU_VARIANT(N) \
-   (ARM_CHECK_BUILTIN_MODE (2) \
-    ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##uv2sfv2si, false) \
-    : (ARM_CHECK_BUILTIN_MODE (4) \
-      ? arm_builtin_decl(ARM_BUILTIN_NEON_##N##uv4sfv4si, false) \
-      : NULL_TREE))
-     CASE_CFN_LROUND:
-       return (out_unsigned_p
- 	      ? ARM_FIND_VCVTU_VARIANT (vcvta)
- 	      : ARM_FIND_VCVT_VARIANT (vcvta));
-     CASE_CFN_LCEIL:
-       return (out_unsigned_p
- 	      ? ARM_FIND_VCVTU_VARIANT (vcvtp)
- 	      : ARM_FIND_VCVT_VARIANT (vcvtp));
-     CASE_CFN_LFLOOR:
-       return (out_unsigned_p
- 	      ? ARM_FIND_VCVTU_VARIANT (vcvtm)
- 	      : ARM_FIND_VCVT_VARIANT (vcvtm));
- #undef ARM_CHECK_BUILTIN_MODE
- #define ARM_CHECK_BUILTIN_MODE(C, N) \
-   (out_mode == N##mode && out_n == C \
-    && in_mode == N##mode && in_n == C)
-     case CFN_BUILT_IN_BSWAP16:
-       if (ARM_CHECK_BUILTIN_MODE (4, HI))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv4hi, false);
-       else if (ARM_CHECK_BUILTIN_MODE (8, HI))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv8hi, false);
-       else
- 	return NULL_TREE;
-     case CFN_BUILT_IN_BSWAP32:
-       if (ARM_CHECK_BUILTIN_MODE (2, SI))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv2si, false);
-       else if (ARM_CHECK_BUILTIN_MODE (4, SI))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv4si, false);
-       else
- 	return NULL_TREE;
-     case CFN_BUILT_IN_BSWAP64:
-       if (ARM_CHECK_BUILTIN_MODE (2, DI))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_bswapv2di, false);
-       else
- 	return NULL_TREE;
-     CASE_CFN_COPYSIGN:
-       if (ARM_CHECK_BUILTIN_MODE (2, SF))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_copysignfv2sf, false);
-       else if (ARM_CHECK_BUILTIN_MODE (4, SF))
- 	return arm_builtin_decl (ARM_BUILTIN_NEON_copysignfv4sf, false);
-       else
- 	return NULL_TREE;
- 
-     default:
-       return NULL_TREE;
-     }
-   return NULL_TREE;
- }
- #undef ARM_FIND_VCVT_VARIANT
- #undef ARM_FIND_VCVTU_VARIANT
- #undef ARM_CHECK_BUILTIN_MODE
- #undef ARM_FIND_VRINT_VARIANT
- 
  void
  arm_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
  {
--- 4052,4057 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-builtins.h gcc-13.1.0/gcc/config/arm/arm-builtins.h
*** gcc-12.2.0/gcc/config/arm/arm-builtins.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations for determining resolver for a given builtin.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Declarations for determining resolver for a given builtin.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-c.cc gcc-13.1.0/gcc/config/arm/arm-c.cc
*** gcc-12.2.0/gcc/config/arm/arm-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** arm_cpu_builtins (struct cpp_reader* pfi
*** 202,207 ****
--- 202,209 ----
    def_or_undef_macro (pfile, "__ARM_FEATURE_QBIT", TARGET_ARM_QBIT);
    def_or_undef_macro (pfile, "__ARM_FEATURE_SAT", TARGET_ARM_SAT);
    def_or_undef_macro (pfile, "__ARM_FEATURE_CRYPTO", TARGET_CRYPTO);
+   def_or_undef_macro (pfile, "__ARM_FEATURE_AES", TARGET_CRYPTO);
+   def_or_undef_macro (pfile, "__ARM_FEATURE_SHA2", TARGET_CRYPTO);
  
    def_or_undef_macro (pfile, "__ARM_FEATURE_UNALIGNED", unaligned_access);
  
*************** arm_cpu_builtins (struct cpp_reader* pfi
*** 212,217 ****
--- 214,237 ----
    def_or_undef_macro (pfile, "__ARM_FEATURE_COMPLEX", TARGET_COMPLEX);
    def_or_undef_macro (pfile, "__ARM_32BIT_STATE", TARGET_32BIT);
  
+   def_or_undef_macro (pfile, "__ARM_FEATURE_PAUTH", TARGET_HAVE_PACBTI);
+   def_or_undef_macro (pfile, "__ARM_FEATURE_BTI", TARGET_HAVE_PACBTI);
+   def_or_undef_macro (pfile, "__ARM_FEATURE_BTI_DEFAULT",
+ 		      aarch_enable_bti == 1);
+ 
+   cpp_undef (pfile, "__ARM_FEATURE_PAC_DEFAULT");
+   if (aarch_ra_sign_scope != AARCH_FUNCTION_NONE)
+   {
+     unsigned int pac = 1;
+ 
+     gcc_assert (aarch_ra_sign_key == AARCH_KEY_A);
+ 
+     if (aarch_ra_sign_scope == AARCH_FUNCTION_ALL)
+       pac |= 0x4;
+ 
+     builtin_define_with_int_value ("__ARM_FEATURE_PAC_DEFAULT", pac);
+   }
+ 
    cpp_undef (pfile, "__ARM_FEATURE_MVE");
    if (TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT)
      {
*************** arm_cpu_builtins (struct cpp_reader* pfi
*** 236,243 ****
      builtin_define_with_int_value ("__ARM_FEATURE_LDREX",
  				   TARGET_ARM_FEATURE_LDREX);
  
    def_or_undef_macro (pfile, "__ARM_FEATURE_CLZ",
! 		      ((TARGET_ARM_ARCH >= 5 && !TARGET_THUMB)
  		       || TARGET_ARM_ARCH_ISA_THUMB >=2));
  
    def_or_undef_macro (pfile, "__ARM_FEATURE_NUMERIC_MAXMIN",
--- 256,267 ----
      builtin_define_with_int_value ("__ARM_FEATURE_LDREX",
  				   TARGET_ARM_FEATURE_LDREX);
  
+   /* ACLE says that __ARM_FEATURE_CLZ is defined if the hardware
+      supports it; it's also clear that this doesn't mean the current
+      ISA, so we define this even when compiling for Thumb1 if the
+      target supports CLZ in A32.  */
    def_or_undef_macro (pfile, "__ARM_FEATURE_CLZ",
! 		      ((TARGET_ARM_ARCH >= 5 && arm_arch_notm)
  		       || TARGET_ARM_ARCH_ISA_THUMB >=2));
  
    def_or_undef_macro (pfile, "__ARM_FEATURE_NUMERIC_MAXMIN",
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-cpus.in gcc-13.1.0/gcc/config/arm/arm-cpus.in
*** gcc-12.2.0/gcc/config/arm/arm-cpus.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-cpus.in	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # CPU, FPU and architecture specifications for ARM.
  #
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # CPU, FPU and architecture specifications for ARM.
  #
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** define feature cdecp5
*** 229,234 ****
--- 229,238 ----
  define feature cdecp6
  define feature cdecp7
  
+ # M-profile control flow integrity extensions (PAC/AUT/BTI).
+ # Optional from Armv8.1-M Mainline.
+ define feature pacbti
+ 
  # Feature groups.  Conventionally all (or mostly) upper case.
  # ALL_FPU lists all the feature bits associated with the floating-point
  # unit; these will all be removed if the floating-point unit is disabled
*************** begin arch armv8.1-m.main
*** 743,748 ****
--- 747,753 ----
   isa ARMv8_1m_main
  # fp => FPv5-sp-d16; fp.dp => FPv5-d16
   option dsp add armv7em
+  option pacbti add pacbti
   option fp add FPv5 fp16
   option fp.dp add FPv5 FP_DBL fp16
   option nofp remove ALL_FP
*************** begin cpu cortex-x1
*** 1542,1547 ****
--- 1547,1563 ----
   part d44
  end cpu cortex-x1
  
+ begin cpu cortex-x1c
+  cname cortexx1c
+  tune for cortex-a57
+  tune flags LDSCHED
+  architecture armv8.2-a+fp16+dotprod
+  option crypto add FP_ARMv8 CRYPTO
+  costs cortex_a57
+  vendor 41
+  part d4c
+ end cpu cortex-x1c
+ 
  begin cpu neoverse-n1
   cname neoversen1
   alias !ares
*************** begin cpu cortex-m55
*** 1633,1643 ****
--- 1649,1692 ----
   option nomve remove mve mve_float
   option nofp remove ALL_FP mve_float
   option nodsp remove MVE mve_float
+  option cdecp0 add cdecp0
+  option cdecp1 add cdecp1
+  option cdecp2 add cdecp2
+  option cdecp3 add cdecp3
+  option cdecp4 add cdecp4
+  option cdecp5 add cdecp5
+  option cdecp6 add cdecp6
+  option cdecp7 add cdecp7
   isa quirk_no_asmcpu quirk_vlldm
   costs v7m
   vendor 41
  end cpu cortex-m55
  
+ begin cpu star-mc1
+  cname starmc1
+  tune flags LDSCHED
+  architecture armv8-m.main+dsp+fp
+  option nofp remove ALL_FP
+  option nodsp remove armv7em
+  isa quirk_no_asmcpu quirk_vlldm
+  costs v7m
+ end cpu star-mc1
+ 
+ begin cpu cortex-m85
+  cname cortexm85
+  tune flags LDSCHED
+  architecture armv8.1-m.main+pacbti+mve.fp+fp.dp
+  option nopacbti remove pacbti
+  option nomve.fp remove mve_float
+  option nomve remove mve mve_float
+  option nofp remove ALL_FP mve_float
+  option nodsp remove MVE mve_float
+  isa quirk_no_asmcpu quirk_vlldm
+  costs v7m
+  part 0xd23
+  vendor 41
+ end cpu cortex-m85
+ 
  # V8 R-profile implementations.
  begin cpu cortex-r52
   cname cortexr52
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-d.cc gcc-13.1.0/gcc/config/arm/arm-d.cc
*** gcc-12.2.0/gcc/config/arm/arm-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the ARM architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the ARM architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,29 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "tm_p.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
  /* Implement TARGET_D_CPU_VERSIONS for ARM targets.  */
  
--- 21,30 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
+ #include "arm-protos.h"
  
  /* Implement TARGET_D_CPU_VERSIONS for ARM targets.  */
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-d.h gcc-13.1.0/gcc/config/arm/arm-d.h
*** gcc-12.2.0/gcc/config/arm/arm-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/arm/arm-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the ARM architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Defined in arm-d.cc  */
+ extern void arm_d_target_versions (void);
+ extern void arm_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS arm_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO arm_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-fixed.md gcc-13.1.0/gcc/config/arm/arm-fixed.md
*** gcc-12.2.0/gcc/config/arm/arm-fixed.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-fixed.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-flags.h gcc-13.1.0/gcc/config/arm/arm-flags.h
*** gcc-12.2.0/gcc/config/arm/arm-flags.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-flags.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Flags used to identify the presence of processor capabilities.
  
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* Flags used to identify the presence of processor capabilities.
  
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-generic.md gcc-13.1.0/gcc/config/arm/arm-generic.md
*** gcc-12.2.0/gcc/config/arm/arm-generic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-generic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Generic ARM Pipeline Description
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Generic ARM Pipeline Description
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-ldmstm.ml gcc-13.1.0/gcc/config/arm/arm-ldmstm.ml
*** gcc-12.2.0/gcc/config/arm/arm-ldmstm.ml	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-ldmstm.ml	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  (* Auto-generate ARM ldm/stm patterns
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,5 ----
  (* Auto-generate ARM ldm/stm patterns
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
*************** let _ =
*** 335,341 ****
  "/* ARM ldm/stm instruction patterns.  This file was automatically generated";
  "   using arm-ldmstm.ml.  Please do not edit manually.";
  "";
! "   Copyright (C) 2010-2022 Free Software Foundation, Inc.";
  "   Contributed by CodeSourcery.";
  "";
  "   This file is part of GCC.";
--- 335,341 ----
  "/* ARM ldm/stm instruction patterns.  This file was automatically generated";
  "   using arm-ldmstm.ml.  Please do not edit manually.";
  "";
! "   Copyright (C) 2010-2023 Free Software Foundation, Inc.";
  "   Contributed by CodeSourcery.";
  "";
  "   This file is part of GCC.";
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-mlib.h gcc-13.1.0/gcc/config/arm/arm-mlib.h
*** gcc-12.2.0/gcc/config/arm/arm-mlib.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/arm/arm-mlib.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,22 ----
+ /* Arm multilib default option include file.
+ 
+    Copyright (C) 2023 Free Software Foundation, Inc.
+    Contributed by Arm.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published
+    by the Free Software Foundation; either version 3, or (at your
+    option) any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+    License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define MULTILIB_DEFAULTS { "mbranch-protection=none" }
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-modes.def gcc-13.1.0/gcc/config/arm/arm-modes.def
*** gcc-12.2.0/gcc/config/arm/arm-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
*************** BOOL_MODE (B4I, 4, 1);
*** 91,96 ****
--- 91,97 ----
  VECTOR_BOOL_MODE (V16BI, 16, BI, 2);
  VECTOR_BOOL_MODE (V8BI, 8, B2I, 2);
  VECTOR_BOOL_MODE (V4BI, 4, B4I, 2);
+ VECTOR_MODE (INT, QI, 2);
  
  /* Fraction and accumulator vector modes.  */
  VECTOR_MODES (FRACT, 4);      /* V4QQ  V2HQ */
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-mve-builtins.cc gcc-13.1.0/gcc/config/arm/arm-mve-builtins.cc
*** gcc-12.2.0/gcc/config/arm/arm-mve-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-mve-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for Arm MVE
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for Arm MVE
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-mve-builtins.def gcc-13.1.0/gcc/config/arm/arm-mve-builtins.def
*** gcc-12.2.0/gcc/config/arm/arm-mve-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-mve-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin lists for Arm MVE
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Builtin lists for Arm MVE
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-mve-builtins.h gcc-13.1.0/gcc/config/arm/arm-mve-builtins.h
*** gcc-12.2.0/gcc/config/arm/arm-mve-builtins.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-mve-builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE support for Arm MVE
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* ACLE support for Arm MVE
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-opts.h gcc-13.1.0/gcc/config/arm/arm-opts.h
*** gcc-12.2.0/gcc/config/arm/arm-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for ARM.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for ARM.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-passes.def gcc-13.1.0/gcc/config/arm/arm-passes.def
*** gcc-12.2.0/gcc/config/arm/arm-passes.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/arm/arm-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,21 ----
+ /* Arm-specific passes declarations.
+    Copyright (C) 2022 Free Software Foundation, Inc.
+    Contributed by Arm Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_insert_bti);
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-protos.h gcc-13.1.0/gcc/config/arm/arm-protos.h
*** gcc-12.2.0/gcc/config/arm/arm-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in arm.cc and pe.c
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@arm.com)
     Minor hacks by Nick Clifton (nickc@cygnus.com)
  
--- 1,5 ----
  /* Prototypes for exported functions defined in arm.cc and pe.c
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (rearnsha@arm.com)
     Minor hacks by Nick Clifton (nickc@cygnus.com)
  
***************
*** 24,29 ****
--- 24,31 ----
  
  #include "sbitmap.h"
  
+ rtl_opt_pass *make_pass_insert_bti (gcc::context *ctxt);
+ 
  extern enum unwind_info_type arm_except_unwind_info (struct gcc_options *);
  extern int use_return_insn (int, rtx);
  extern bool use_simple_return_p (void);
*************** extern HOST_WIDE_INT arm_compute_initial
*** 45,51 ****
  							     unsigned int);
  extern HOST_WIDE_INT thumb_compute_initial_elimination_offset (unsigned int,
  							       unsigned int);
! extern unsigned int arm_dbx_register_number (unsigned int);
  extern void arm_output_fn_unwind (FILE *, bool);
  
  extern rtx arm_expand_builtin (tree exp, rtx target, rtx subtarget
--- 47,53 ----
  							     unsigned int);
  extern HOST_WIDE_INT thumb_compute_initial_elimination_offset (unsigned int,
  							       unsigned int);
! extern unsigned int arm_debugger_regno (unsigned int);
  extern void arm_output_fn_unwind (FILE *, bool);
  
  extern rtx arm_expand_builtin (tree exp, rtx target, rtx subtarget
*************** extern void neon_pairwise_reduce (rtx, r
*** 103,109 ****
  				  rtx (*) (rtx, rtx, rtx));
  extern rtx mve_bool_vec_to_const (rtx const_vec);
  extern rtx neon_make_constant (rtx, bool generate = true);
- extern tree arm_builtin_vectorized_function (unsigned int, tree, tree);
  extern void neon_expand_vector_init (rtx, rtx);
  extern void neon_lane_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT, const_tree);
  extern void arm_const_bounds (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
--- 105,110 ----
*************** extern int arm_coproc_mem_operand_wb (rt
*** 123,128 ****
--- 124,130 ----
  extern int neon_vector_mem_operand (rtx, int, bool);
  extern int mve_vector_mem_operand (machine_mode, rtx, bool);
  extern int neon_struct_mem_operand (rtx);
+ extern int mve_struct_mem_operand (rtx);
  
  extern rtx *neon_vcmla_lane_prepare_operands (rtx *);
  
*************** extern int vfp3_const_double_for_bits (r
*** 379,384 ****
--- 381,387 ----
  extern void arm_emit_coreregs_64bit_shift (enum rtx_code, rtx, rtx, rtx, rtx,
  					   rtx);
  extern bool arm_fusion_enabled_p (tune_params::fuse_ops);
+ extern bool arm_current_function_pac_enabled_p (void);
  extern bool arm_valid_symbolic_address_p (rtx);
  extern bool arm_validize_comparison (rtx *, rtx *, rtx *);
  extern bool arm_expand_vector_compare (rtx, rtx_code, rtx, rtx, bool);
*************** extern void arm_lang_object_attributes_i
*** 403,412 ****
  extern void arm_register_target_pragmas (void);
  extern void arm_cpu_cpp_builtins (struct cpp_reader *);
  
- /* Defined in arm-d.cc  */
- extern void arm_d_target_versions (void);
- extern void arm_d_register_target_info (void);
- 
  extern bool arm_is_constant_pool_ref (rtx);
  
  /* The bits in this mask specify which instruction scheduling options should
--- 406,411 ----
*************** struct cpu_option
*** 586,591 ****
--- 585,591 ----
  extern const arch_option all_architectures[];
  extern const cpu_option all_cores[];
  
+ 
  const cpu_option *arm_parse_cpu_option_name (const cpu_option *, const char *,
  					     const char *, bool = true);
  const arch_option *arm_parse_arch_option_name (const arch_option *,
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-simd-builtin-types.def gcc-13.1.0/gcc/config/arm/arm-simd-builtin-types.def
*** gcc-12.2.0/gcc/config/arm/arm-simd-builtin-types.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm-simd-builtin-types.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Builtin AdvSIMD types.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
***************
*** 51,57 ****
    ENTRY (Bfloat16x2_t, V2BF, none, 32, bfloat16, 20)
    ENTRY (Bfloat16x4_t, V4BF, none, 64, bfloat16, 20)
    ENTRY (Bfloat16x8_t, V8BF, none, 128, bfloat16, 20)
- 
-   ENTRY (Pred1x16_t, V16BI, predicate, 16, pred1, 16)
-   ENTRY (Pred2x8_t, V8BI, predicate, 8, pred1, 15)
-   ENTRY (Pred4x4_t, V4BI, predicate, 4, pred1, 15)
--- 51,53 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-tables.opt gcc-13.1.0/gcc/config/arm/arm-tables.opt
*** gcc-12.2.0/gcc/config/arm/arm-tables.opt	Fri Aug 19 08:15:35 2022
--- gcc-13.1.0/gcc/config/arm/arm-tables.opt	Wed Apr 26 07:11:18 2023
***************
*** 2,8 ****
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
--- 2,8 ----
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
*************** EnumValue
*** 256,261 ****
--- 256,264 ----
  Enum(processor_type) String(cortex-x1) Value( TARGET_CPU_cortexx1)
  
  EnumValue
+ Enum(processor_type) String(cortex-x1c) Value( TARGET_CPU_cortexx1c)
+ 
+ EnumValue
  Enum(processor_type) String(neoverse-n1) Value( TARGET_CPU_neoversen1)
  
  EnumValue
*************** EnumValue
*** 283,288 ****
--- 286,297 ----
  Enum(processor_type) String(cortex-m55) Value( TARGET_CPU_cortexm55)
  
  EnumValue
+ Enum(processor_type) String(star-mc1) Value( TARGET_CPU_starmc1)
+ 
+ EnumValue
+ Enum(processor_type) String(cortex-m85) Value( TARGET_CPU_cortexm85)
+ 
+ EnumValue
  Enum(processor_type) String(cortex-r52) Value( TARGET_CPU_cortexr52)
  
  EnumValue
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm-tune.md gcc-13.1.0/gcc/config/arm/arm-tune.md
*** gcc-12.2.0/gcc/config/arm/arm-tune.md	Fri Aug 19 08:15:35 2022
--- gcc-13.1.0/gcc/config/arm/arm-tune.md	Wed Apr 26 07:11:18 2023
***************
*** 2,8 ****
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
--- 2,8 ----
  ; Generated automatically by parsecpu.awk from arm-cpus.in.
  ; Do not edit.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  ; This file is part of GCC.
  
***************
*** 46,54 ****
  	cortexa73cortexa53,cortexa55,cortexa75,
  	cortexa76,cortexa76ae,cortexa77,
  	cortexa78,cortexa78ae,cortexa78c,
! 	cortexa710,cortexx1,neoversen1,
! 	cortexa75cortexa55,cortexa76cortexa55,neoversev1,
! 	neoversen2,cortexm23,cortexm33,
! 	cortexm35p,cortexm55,cortexr52,
  	cortexr52plus"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
--- 46,55 ----
  	cortexa73cortexa53,cortexa55,cortexa75,
  	cortexa76,cortexa76ae,cortexa77,
  	cortexa78,cortexa78ae,cortexa78c,
! 	cortexa710,cortexx1,cortexx1c,
! 	neoversen1,cortexa75cortexa55,cortexa76cortexa55,
! 	neoversev1,neoversen2,cortexm23,
! 	cortexm33,cortexm35p,cortexm55,
! 	starmc1,cortexm85,cortexr52,
  	cortexr52plus"
  	(const (symbol_ref "((enum attr_tune) arm_tune)")))
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm.cc gcc-13.1.0/gcc/config/arm/arm.cc
*** gcc-12.2.0/gcc/config/arm/arm.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Output routines for GCC for ARM.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com).
--- 1,5 ----
  /* Output routines for GCC for ARM.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com).
***************
*** 72,77 ****
--- 72,79 ----
  #include "selftest.h"
  #include "tree-vectorizer.h"
  #include "opts.h"
+ #include "aarch-common.h"
+ #include "aarch-common-protos.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** static int arm_cortex_a5_branch_cost (bo
*** 296,303 ****
  static int arm_cortex_m_branch_cost (bool, bool);
  static int arm_cortex_m7_branch_cost (bool, bool);
  
! static bool arm_vectorize_vec_perm_const (machine_mode, rtx, rtx, rtx,
! 					  const vec_perm_indices &);
  
  static bool aarch_macro_fusion_pair_p (rtx_insn*, rtx_insn*);
  
--- 298,305 ----
  static int arm_cortex_m_branch_cost (bool, bool);
  static int arm_cortex_m7_branch_cost (bool, bool);
  
! static bool arm_vectorize_vec_perm_const (machine_mode, machine_mode, rtx, rtx,
! 					  rtx, const vec_perm_indices &);
  
  static bool aarch_macro_fusion_pair_p (rtx_insn*, rtx_insn*);
  
*************** static const struct attribute_spec arm_a
*** 375,381 ****
    /* ARMv8-M Security Extensions support.  */
    { "cmse_nonsecure_entry", 0, 0, true, false, false, false,
      arm_handle_cmse_nonsecure_entry, NULL },
!   { "cmse_nonsecure_call", 0, 0, true, false, false, true,
      arm_handle_cmse_nonsecure_call, NULL },
    { "Advanced SIMD type", 1, 1, false, true, false, true, NULL, NULL },
    { NULL, 0, 0, false, false, false, false, NULL, NULL }
--- 377,383 ----
    /* ARMv8-M Security Extensions support.  */
    { "cmse_nonsecure_entry", 0, 0, true, false, false, false,
      arm_handle_cmse_nonsecure_entry, NULL },
!   { "cmse_nonsecure_call", 0, 0, false, false, false, true,
      arm_handle_cmse_nonsecure_call, NULL },
    { "Advanced SIMD type", 1, 1, false, true, false, true, NULL, NULL },
    { NULL, 0, 0, false, false, false, false, NULL, NULL }
*************** static const struct attribute_spec arm_a
*** 739,748 ****
  #undef TARGET_VECTORIZE_BUILTINS
  #define TARGET_VECTORIZE_BUILTINS
  
- #undef TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
- #define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION \
-   arm_builtin_vectorized_function
- 
  #undef TARGET_VECTOR_ALIGNMENT
  #define TARGET_VECTOR_ALIGNMENT arm_vector_alignment
  
--- 741,746 ----
*************** int arm_arch8_3 = 0;
*** 925,930 ****
--- 923,933 ----
  
  /* Nonzero if this chip supports the ARM Architecture 8.4 extensions.  */
  int arm_arch8_4 = 0;
+ 
+ /* Nonzero if this chip supports the ARM Architecture 8-M Mainline
+    extensions.  */
+ int arm_arch8m_main = 0;
+ 
  /* Nonzero if this chip supports the ARM Architecture 8.1-M Mainline
     extensions.  */
  int arm_arch8_1m_main = 0;
*************** const struct tune_params arm_fa726te_tun
*** 2417,2422 ****
--- 2420,2427 ----
    tune_params::SCHED_AUTOPREF_OFF
  };
  
+ char *accepted_branch_protection_string = NULL;
+ 
  /* Auto-generated CPU, FPU and architecture tables.  */
  #include "arm-cpu-data.h"
  
*************** arm_option_override_internal (struct gcc
*** 3202,3207 ****
--- 3207,3221 ----
        arm_stack_protector_guard_offset = offs;
      }
  
+   if (arm_current_function_pac_enabled_p ())
+     {
+       if (!arm_arch8m_main)
+         error ("This architecture does not support branch protection "
+                "instructions");
+       if (TARGET_TPCS_FRAME)
+         sorry ("Return address signing is not supported with %<-mtpcs-frame%>.");
+     }
+ 
  #ifdef SUBTARGET_OVERRIDE_INTERNAL_OPTIONS
    SUBTARGET_OVERRIDE_INTERNAL_OPTIONS;
  #endif
*************** arm_configure_build_target (struct arm_b
*** 3256,3261 ****
--- 3270,3286 ----
        tune_opts = strchr (opts->x_arm_tune_string, '+');
      }
  
+   if (opts->x_arm_branch_protection_string)
+     {
+       aarch_validate_mbranch_protection (opts->x_arm_branch_protection_string);
+ 
+       if (aarch_ra_sign_key != AARCH_KEY_A)
+ 	{
+ 	  warning (0, "invalid key type for %<-mbranch-protection=%>");
+ 	  aarch_ra_sign_key = AARCH_KEY_A;
+ 	}
+     }
+ 
    if (arm_selected_arch)
      {
        arm_initialize_isa (target->isa, arm_selected_arch->common.isa_bits);
*************** arm_option_reconfigure_globals (void)
*** 3837,3842 ****
--- 3862,3868 ----
    arm_arch_arm_hwdiv = bitmap_bit_p (arm_active_target.isa, isa_bit_adiv);
    arm_arch_crc = bitmap_bit_p (arm_active_target.isa, isa_bit_crc32);
    arm_arch_cmse = bitmap_bit_p (arm_active_target.isa, isa_bit_cmse);
+   arm_arch8m_main = arm_arch7 && arm_arch_cmse;
    arm_arch_lpae = bitmap_bit_p (arm_active_target.isa, isa_bit_lpae);
    arm_arch_i8mm = bitmap_bit_p (arm_active_target.isa, isa_bit_i8mm);
    arm_arch_bf16 = bitmap_bit_p (arm_active_target.isa, isa_bit_bf16);
*************** use_return_insn (int iscond, rtx sibling
*** 4336,4341 ****
--- 4362,4373 ----
    if (!reload_completed)
      return 0;
  
+   /* Never use a return instruction when return address signing
+      mechanism is enabled as it requires more than one
+      instruction.  */
+   if (arm_current_function_pac_enabled_p ())
+     return 0;
+ 
    func_type = arm_current_func_type ();
  
    /* Naked, volatile and stack alignment functions need special
*************** arm_handle_cmse_nonsecure_call (tree *no
*** 7609,7616 ****
  				 int /* flags */,
  				 bool *no_add_attrs)
  {
!   tree decl = NULL_TREE, fntype = NULL_TREE;
!   tree type;
  
    if (!use_cmse)
      {
--- 7641,7648 ----
  				 int /* flags */,
  				 bool *no_add_attrs)
  {
!   tree decl = NULL_TREE;
!   tree fntype, type;
  
    if (!use_cmse)
      {
*************** arm_handle_cmse_nonsecure_call (tree *no
*** 7620,7635 ****
        return NULL_TREE;
      }
  
!   if (TREE_CODE (*node) == VAR_DECL || TREE_CODE (*node) == TYPE_DECL)
      {
!       decl = *node;
!       fntype = TREE_TYPE (decl);
      }
  
!   while (fntype != NULL_TREE && TREE_CODE (fntype) == POINTER_TYPE)
      fntype = TREE_TYPE (fntype);
  
!   if (!decl || TREE_CODE (fntype) != FUNCTION_TYPE)
      {
  	warning (OPT_Wattributes, "%qE attribute only applies to base type of a "
  		 "function pointer", name);
--- 7652,7671 ----
        return NULL_TREE;
      }
  
!   if (DECL_P (*node))
      {
!       fntype = TREE_TYPE (*node);
! 
!       if (TREE_CODE (*node) == VAR_DECL || TREE_CODE (*node) == TYPE_DECL)
! 	decl = *node;
      }
+   else
+     fntype = *node;
  
!   while (fntype && TREE_CODE (fntype) == POINTER_TYPE)
      fntype = TREE_TYPE (fntype);
  
!   if ((DECL_P (*node) && !decl) || TREE_CODE (fntype) != FUNCTION_TYPE)
      {
  	warning (OPT_Wattributes, "%qE attribute only applies to base type of a "
  		 "function pointer", name);
*************** arm_handle_cmse_nonsecure_call (tree *no
*** 7644,7653 ****
  
    /* Prevent trees being shared among function types with and without
       cmse_nonsecure_call attribute.  */
!   type = TREE_TYPE (decl);
  
-   type = build_distinct_type_copy (type);
-   TREE_TYPE (decl) = type;
    fntype = type;
  
    while (TREE_CODE (fntype) != FUNCTION_TYPE)
--- 7680,7696 ----
  
    /* Prevent trees being shared among function types with and without
       cmse_nonsecure_call attribute.  */
!   if (decl)
!     {
!       type = build_distinct_type_copy (TREE_TYPE (decl));
!       TREE_TYPE (decl) = type;
!     }
!   else
!     {
!       type = build_distinct_type_copy (*node);
!       *node = type;
!     }
  
    fntype = type;
  
    while (TREE_CODE (fntype) != FUNCTION_TYPE)
*************** thumb2_legitimate_address_p (machine_mod
*** 8636,8641 ****
--- 8679,8689 ----
    bool use_ldrd;
    enum rtx_code code = GET_CODE (x);
  
+   /* If we are dealing with a MVE predicate mode, then treat it as a HImode as
+      can store and load it like any other 16-bit value.  */
+   if (TARGET_HAVE_MVE && VALID_MVE_PRED_MODE (mode))
+     mode = HImode;
+ 
    if (TARGET_HAVE_MVE && VALID_MVE_MODE (mode))
      return mve_vector_mem_operand (mode, x, strict_p);
  
*************** arm_mem_costs (rtx x, const struct cpu_c
*** 10201,10206 ****
--- 10249,10309 ----
    return true;
  }
  
+ /* Helper for arm_bfi_p.  */
+ static bool
+ arm_bfi_1_p (rtx op0, rtx op1, rtx *sub0, rtx *sub1)
+ {
+   unsigned HOST_WIDE_INT const1;
+   unsigned HOST_WIDE_INT const2 = 0;
+ 
+   if (!CONST_INT_P (XEXP (op0, 1)))
+     return false;
+ 
+   const1 = UINTVAL (XEXP (op0, 1));
+   if (!CONST_INT_P (XEXP (op1, 1))
+       || ~UINTVAL (XEXP (op1, 1)) != const1)
+     return false;
+ 
+   if (GET_CODE (XEXP (op0, 0)) == ASHIFT
+       && CONST_INT_P (XEXP (XEXP (op0, 0), 1)))
+     {
+       const2 = UINTVAL (XEXP (XEXP (op0, 0), 1));
+       *sub0 = XEXP (XEXP (op0, 0), 0);
+     }
+   else
+     *sub0 = XEXP (op0, 0);
+ 
+   if (const2 >= GET_MODE_BITSIZE (GET_MODE (op0)))
+     return false;
+ 
+   *sub1 = XEXP (op1, 0);
+   return exact_log2 (const1 + (HOST_WIDE_INT_1U << const2)) >= 0;
+ }
+ 
+ /* Recognize a BFI idiom.  Helper for arm_rtx_costs_internal.  The
+    format looks something like:
+ 
+    (IOR (AND (reg1) (~const1))
+ 	(AND (ASHIFT (reg2) (const2))
+ 	     (const1)))
+ 
+    where const1 is a consecutive sequence of 1-bits with the
+    least-significant non-zero bit starting at bit position const2.  If
+    const2 is zero, then the shift will not appear at all, due to
+    canonicalization.  The two arms of the IOR expression may be
+    flipped.  */
+ static bool
+ arm_bfi_p (rtx x, rtx *sub0, rtx *sub1)
+ {
+   if (GET_CODE (x) != IOR)
+     return false;
+   if (GET_CODE (XEXP (x, 0)) != AND
+       || GET_CODE (XEXP (x, 1)) != AND)
+     return false;
+   return (arm_bfi_1_p (XEXP (x, 0), XEXP (x, 1), sub0, sub1)
+ 	  || arm_bfi_1_p (XEXP (x, 1), XEXP (x, 0), sub1, sub0));
+ }
+ 
  /* RTX costs.  Make an estimate of the cost of executing the operation
     X, which is contained within an operation with code OUTER_CODE.
     SPEED_P indicates whether the cost desired is the performance cost,
*************** arm_rtx_costs_internal (rtx x, enum rtx_
*** 10959,10972 ****
        *cost = LIBCALL_COST (2);
        return false;
      case IOR:
!       if (mode == SImode && arm_arch6 && aarch_rev16_p (x))
!         {
!           if (speed_p)
!             *cost += extra_cost->alu.rev;
  
!           return true;
!         }
!     /* Fall through.  */
      case AND: case XOR:
        if (mode == SImode)
  	{
--- 11062,11089 ----
        *cost = LIBCALL_COST (2);
        return false;
      case IOR:
!       {
! 	rtx sub0, sub1;
! 	if (mode == SImode && arm_arch6 && aarch_rev16_p (x))
! 	  {
! 	    if (speed_p)
! 	      *cost += extra_cost->alu.rev;
  
! 	    return true;
! 	  }
! 	else if (mode == SImode && arm_arch_thumb2
! 		 && arm_bfi_p (x, &sub0, &sub1))
! 	  {
! 	    *cost += rtx_cost (sub0, mode, ZERO_EXTRACT, 1, speed_p);
! 	    *cost += rtx_cost (sub1, mode, ZERO_EXTRACT, 0, speed_p);
! 	    if (speed_p)
! 	      *cost += extra_cost->alu.bfi;
! 
! 	    return true;
! 	  }
!       }
! 
!       /* Fall through.  */
      case AND: case XOR:
        if (mode == SImode)
  	{
*************** simd_valid_immediate (rtx op, machine_mo
*** 12845,12854 ****
    /* Only support 128-bit vectors for MVE.  */
    if (TARGET_HAVE_MVE
        && (!vector
! 	  || (GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL)
  	  || n_elts * innersize != 16))
      return -1;
  
    /* Vectors of float constants.  */
    if (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
      {
--- 12962,12974 ----
    /* Only support 128-bit vectors for MVE.  */
    if (TARGET_HAVE_MVE
        && (!vector
! 	  || VALID_MVE_PRED_MODE (mode)
  	  || n_elts * innersize != 16))
      return -1;
  
+   if (!TARGET_HAVE_MVE && GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL)
+     return -1;
+ 
    /* Vectors of float constants.  */
    if (GET_MODE_CLASS (mode) == MODE_VECTOR_FLOAT)
      {
*************** neon_vdup_constant (rtx vals, bool gener
*** 13215,13223 ****
  rtx
  mve_bool_vec_to_const (rtx const_vec)
  {
!   int n_elts = GET_MODE_NUNITS ( GET_MODE (const_vec));
!   int repeat = 16 / n_elts;
!   int i;
    int hi_val = 0;
  
    for (i = 0; i < n_elts; i++)
--- 13335,13349 ----
  rtx
  mve_bool_vec_to_const (rtx const_vec)
  {
!   machine_mode mode = GET_MODE (const_vec);
! 
!   if (!VECTOR_MODE_P (mode))
!     return const_vec;
! 
!   unsigned n_elts = GET_MODE_NUNITS (mode);
!   unsigned el_prec = GET_MODE_PRECISION (GET_MODE_INNER (mode));
!   unsigned shift_c = 16 / n_elts;
!   unsigned i;
    int hi_val = 0;
  
    for (i = 0; i < n_elts; i++)
*************** mve_bool_vec_to_const (rtx const_vec)
*** 13226,13237 ****
        unsigned HOST_WIDE_INT elpart;
  
        gcc_assert (CONST_INT_P (el));
!       elpart = INTVAL (el);
  
!       for (int j = 0; j < repeat; j++)
! 	hi_val |= elpart << (i * repeat + j);
      }
!   return gen_int_mode (hi_val, HImode);
  }
  
  /* Return a non-NULL RTX iff VALS, which is a PARALLEL containing only
--- 13352,13367 ----
        unsigned HOST_WIDE_INT elpart;
  
        gcc_assert (CONST_INT_P (el));
!       elpart = INTVAL (el) & ((1U << el_prec) - 1);
  
!       unsigned index = BYTES_BIG_ENDIAN ? n_elts - i - 1 : i;
! 
!       hi_val |= elpart << (index * shift_c);
      }
!   /* We are using mov immediate to encode this constant which writes 32-bits
!      so we need to make sure the top 16-bits are all 0, otherwise we can't
!      guarantee we can actually write this immediate.  */
!   return gen_int_mode (hi_val, SImode);
  }
  
  /* Return a non-NULL RTX iff VALS, which is a PARALLEL containing only
*************** neon_make_constant (rtx vals, bool gener
*** 13274,13280 ****
        && simd_immediate_valid_for_move (const_vec, mode, NULL, NULL))
      /* Load using VMOV.  On Cortex-A8 this takes one cycle.  */
      return const_vec;
!   else if (TARGET_HAVE_MVE && (GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL))
      return mve_bool_vec_to_const (const_vec);
    else if ((target = neon_vdup_constant (vals, generate)) != NULL_RTX)
      /* Loaded using VDUP.  On Cortex-A8 the VDUP takes one NEON
--- 13404,13410 ----
        && simd_immediate_valid_for_move (const_vec, mode, NULL, NULL))
      /* Load using VMOV.  On Cortex-A8 this takes one cycle.  */
      return const_vec;
!   else if (TARGET_HAVE_MVE && VALID_MVE_PRED_MODE(mode))
      return mve_bool_vec_to_const (const_vec);
    else if ((target = neon_vdup_constant (vals, generate)) != NULL_RTX)
      /* Loaded using VDUP.  On Cortex-A8 the VDUP takes one NEON
*************** arm_coproc_mem_operand_no_writeback (rtx
*** 13509,13514 ****
--- 13639,13657 ----
    return arm_coproc_mem_operand_wb (op, 0);
  }
  
+ /* In non-STRICT mode, return the register number; in STRICT mode return
+    the hard regno or the replacement if it won't be a mem.  Otherwise, return
+    the original pseudo number.  */
+ static int
+ arm_effective_regno (rtx op, bool strict)
+ {
+   gcc_assert (REG_P (op));
+   if (!strict || REGNO (op) < FIRST_PSEUDO_REGISTER
+       || !reg_renumber || reg_renumber[REGNO (op)] < 0)
+     return REGNO (op);
+   return reg_renumber[REGNO (op)];
+ }
+ 
  /* This function returns TRUE on matching mode and op.
  1. For given modes, check for [Rn], return TRUE for Rn <= LO_REGS.
  2. For other modes, check for [Rn], return TRUE for Rn < R15 (expect R13).  */
*************** mve_vector_mem_operand (machine_mode mod
*** 13521,13530 ****
    /* Match: (mem (reg)).  */
    if (REG_P (op))
      {
!       int reg_no = REGNO (op);
        return (((mode == E_V8QImode || mode == E_V4QImode || mode == E_V4HImode)
  	       ? reg_no <= LAST_LO_REGNUM
! 	       :(reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM))
  	      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
      }
    code = GET_CODE (op);
--- 13664,13673 ----
    /* Match: (mem (reg)).  */
    if (REG_P (op))
      {
!       reg_no = arm_effective_regno (op, strict);
        return (((mode == E_V8QImode || mode == E_V4QImode || mode == E_V4HImode)
  	       ? reg_no <= LAST_LO_REGNUM
! 	       : reg_no < LAST_ARM_REGNUM)
  	      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
      }
    code = GET_CODE (op);
*************** mve_vector_mem_operand (machine_mode mod
*** 13532,13542 ****
    if (code == POST_INC || code == PRE_DEC
        || code == PRE_INC || code == POST_DEC)
      {
!       reg_no = REGNO (XEXP (op, 0));
!       return ((mode == E_V8QImode || mode == E_V4QImode || mode == E_V4HImode)
! 	      ? reg_no <= LAST_LO_REGNUM
! 	      :(reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM))
! 	|| reg_no >= FIRST_PSEUDO_REGISTER;
      }
    else if (((code == POST_MODIFY || code == PRE_MODIFY)
  	    && GET_CODE (XEXP (op, 1)) == PLUS
--- 13675,13685 ----
    if (code == POST_INC || code == PRE_DEC
        || code == PRE_INC || code == POST_DEC)
      {
!       reg_no = arm_effective_regno (XEXP (op, 0), strict);
!       return (((mode == E_V8QImode || mode == E_V4QImode || mode == E_V4HImode)
! 	       ? reg_no <= LAST_LO_REGNUM
! 	       :(reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM))
! 	      || (!strict && reg_no >= FIRST_PSEUDO_REGISTER));
      }
    else if (((code == POST_MODIFY || code == PRE_MODIFY)
  	    && GET_CODE (XEXP (op, 1)) == PLUS
*************** mve_vector_mem_operand (machine_mode mod
*** 13548,13554 ****
  	   || (reload_completed && code == PLUS && REG_P (XEXP (op, 0))
  	       && GET_CODE (XEXP (op, 1)) == CONST_INT))
      {
!       reg_no = REGNO (XEXP (op, 0));
        if (code == PLUS)
  	val = INTVAL (XEXP (op, 1));
        else
--- 13691,13697 ----
  	   || (reload_completed && code == PLUS && REG_P (XEXP (op, 0))
  	       && GET_CODE (XEXP (op, 1)) == CONST_INT))
      {
!       reg_no = arm_effective_regno (XEXP (op, 0), strict);
        if (code == PLUS)
  	val = INTVAL (XEXP (op, 1));
        else
*************** mve_vector_mem_operand (machine_mode mod
*** 13577,13586 ****
  	  default:
  	    return FALSE;
  	}
!       return reg_no >= FIRST_PSEUDO_REGISTER
! 	|| (MVE_STN_LDW_MODE (mode)
! 	    ? reg_no <= LAST_LO_REGNUM
! 	    : (reg_no < LAST_ARM_REGNUM && reg_no != SP_REGNUM));
      }
    return FALSE;
  }
--- 13720,13730 ----
  	  default:
  	    return FALSE;
  	}
!       return ((!strict && reg_no >= FIRST_PSEUDO_REGISTER)
! 	      || (MVE_STN_LDW_MODE (mode)
! 		  ? reg_no <= LAST_LO_REGNUM
! 		  : (reg_no < LAST_ARM_REGNUM
! 		     && (code == PLUS || reg_no != SP_REGNUM))));
      }
    return FALSE;
  }
*************** neon_vector_mem_operand (rtx op, int typ
*** 13657,13662 ****
--- 13801,13824 ----
    return FALSE;
  }
  
+ /* Return TRUE if OP is a mem suitable for loading/storing an MVE struct
+    type.  */
+ int
+ mve_struct_mem_operand (rtx op)
+ {
+   rtx ind = XEXP (op, 0);
+ 
+   /* Match: (mem (reg)).  */
+   if (REG_P (ind))
+     return arm_address_register_rtx_p (ind, 0);
+ 
+   /* Allow only post-increment by the mode size.  */
+   if (GET_CODE (ind) == POST_INC)
+     return arm_address_register_rtx_p (XEXP (ind, 0), 0);
+ 
+   return FALSE;
+ }
+ 
  /* Return TRUE if OP is a mem suitable for loading/storing a Neon struct
     type.  */
  int
*************** arm_compute_save_core_reg_mask (void)
*** 21129,21134 ****
--- 21291,21299 ----
  
    save_reg_mask |= arm_compute_save_reg0_reg12_mask ();
  
+   if (arm_current_function_pac_enabled_p ())
+     save_reg_mask |= 1 << IP_REGNUM;
+ 
    /* Decide if we need to save the link register.
       Interrupt routines have their own banked link register,
       so they never need to save it.
*************** emit_multi_reg_push (unsigned long mask,
*** 22132,22138 ****
      {
        if (mask & (1 << i))
  	{
! 	  reg = gen_rtx_REG (SImode, i);
  
  	  XVECEXP (par, 0, 0)
  	    = gen_rtx_SET (gen_frame_mem
--- 22297,22329 ----
      {
        if (mask & (1 << i))
  	{
! 	  /* NOTE: Dwarf code emitter handle reg-reg copies correctly and in the
! 	     following example reg-reg copy of SP to IP register is handled
! 	     through .cfi_def_cfa_register directive and the .cfi_offset
! 	     directive for IP register is skipped by dwarf code emitter.
! 	     Example:
! 		mov     ip, sp
! 		.cfi_def_cfa_register 12
! 		push    {fp, ip, lr, pc}
! 		.cfi_offset 11, -16
! 		.cfi_offset 13, -12
! 		.cfi_offset 14, -8
! 
! 	     Where as Arm-specific .save directive handling is different to that
! 	     of dwarf code emitter and it doesn't consider reg-reg copies while
! 	     updating the register list.  When PACBTI is enabled we manually
! 	     updated the .save directive register list to use "ra_auth_code"
! 	     (pseduo register 143) instead of IP register as shown in following
! 	     pseduo code.
! 	     Example:
! 		pacbti  ip, lr, sp
! 		.cfi_register 143, 12
! 		push    {r3, r7, ip, lr}
! 		.save {r3, r7, ra_auth_code, lr}
! 	  */
! 	  rtx dwarf_reg = reg = gen_rtx_REG (SImode, i);
! 	  if (arm_current_function_pac_enabled_p () && i == IP_REGNUM)
! 	    dwarf_reg = gen_rtx_REG (SImode, RA_AUTH_CODE);
  
  	  XVECEXP (par, 0, 0)
  	    = gen_rtx_SET (gen_frame_mem
*************** emit_multi_reg_push (unsigned long mask,
*** 22150,22156 ****
  	  if (dwarf_regs_mask & (1 << i))
  	    {
  	      tmp = gen_rtx_SET (gen_frame_mem (SImode, stack_pointer_rtx),
! 				 reg);
  	      RTX_FRAME_RELATED_P (tmp) = 1;
  	      XVECEXP (dwarf, 0, dwarf_par_index++) = tmp;
  	    }
--- 22341,22347 ----
  	  if (dwarf_regs_mask & (1 << i))
  	    {
  	      tmp = gen_rtx_SET (gen_frame_mem (SImode, stack_pointer_rtx),
! 				 dwarf_reg);
  	      RTX_FRAME_RELATED_P (tmp) = 1;
  	      XVECEXP (dwarf, 0, dwarf_par_index++) = tmp;
  	    }
*************** emit_multi_reg_push (unsigned long mask,
*** 22163,22169 ****
      {
        if (mask & (1 << i))
  	{
! 	  reg = gen_rtx_REG (SImode, i);
  
  	  XVECEXP (par, 0, j) = gen_rtx_USE (VOIDmode, reg);
  
--- 22354,22362 ----
      {
        if (mask & (1 << i))
  	{
! 	  rtx dwarf_reg = reg = gen_rtx_REG (SImode, i);
! 	  if (arm_current_function_pac_enabled_p () && i == IP_REGNUM)
! 	    dwarf_reg = gen_rtx_REG (SImode, RA_AUTH_CODE);
  
  	  XVECEXP (par, 0, j) = gen_rtx_USE (VOIDmode, reg);
  
*************** emit_multi_reg_push (unsigned long mask,
*** 22174,22180 ****
  			       (SImode,
  				plus_constant (Pmode, stack_pointer_rtx,
  					       4 * j)),
! 			       reg);
  	      RTX_FRAME_RELATED_P (tmp) = 1;
  	      XVECEXP (dwarf, 0, dwarf_par_index++) = tmp;
  	    }
--- 22367,22373 ----
  			       (SImode,
  				plus_constant (Pmode, stack_pointer_rtx,
  					       4 * j)),
! 			       dwarf_reg);
  	      RTX_FRAME_RELATED_P (tmp) = 1;
  	      XVECEXP (dwarf, 0, dwarf_par_index++) = tmp;
  	    }
*************** arm_emit_multi_reg_pop (unsigned long sa
*** 22259,22265 ****
    for (j = 0, i = 0; j < num_regs; i++)
      if (saved_regs_mask & (1 << i))
        {
!         reg = gen_rtx_REG (SImode, i);
          if ((num_regs == 1) && emit_update && !return_in_pc)
            {
              /* Emit single load with writeback.  */
--- 22452,22460 ----
    for (j = 0, i = 0; j < num_regs; i++)
      if (saved_regs_mask & (1 << i))
        {
! 	rtx dwarf_reg = reg = gen_rtx_REG (SImode, i);
! 	if (arm_current_function_pac_enabled_p () && i == IP_REGNUM)
! 	  dwarf_reg = gen_rtx_REG (SImode, RA_AUTH_CODE);
          if ((num_regs == 1) && emit_update && !return_in_pc)
            {
              /* Emit single load with writeback.  */
*************** arm_emit_multi_reg_pop (unsigned long sa
*** 22267,22273 ****
                                   gen_rtx_POST_INC (Pmode,
                                                     stack_pointer_rtx));
              tmp = emit_insn (gen_rtx_SET (reg, tmp));
!             REG_NOTES (tmp) = alloc_reg_note (REG_CFA_RESTORE, reg, dwarf);
              return;
            }
  
--- 22462,22469 ----
                                   gen_rtx_POST_INC (Pmode,
                                                     stack_pointer_rtx));
              tmp = emit_insn (gen_rtx_SET (reg, tmp));
! 	    REG_NOTES (tmp) = alloc_reg_note (REG_CFA_RESTORE, dwarf_reg,
! 					      dwarf);
              return;
            }
  
*************** arm_emit_multi_reg_pop (unsigned long sa
*** 22281,22287 ****
          /* We need to maintain a sequence for DWARF info too.  As dwarf info
             should not have PC, skip PC.  */
          if (i != PC_REGNUM)
!           dwarf = alloc_reg_note (REG_CFA_RESTORE, reg, dwarf);
  
          j++;
        }
--- 22477,22483 ----
          /* We need to maintain a sequence for DWARF info too.  As dwarf info
             should not have PC, skip PC.  */
          if (i != PC_REGNUM)
! 	  dwarf = alloc_reg_note (REG_CFA_RESTORE, dwarf_reg, dwarf);
  
          j++;
        }
*************** arm_expand_prologue (void)
*** 23420,23431 ****
  
    /* The static chain register is the same as the IP register.  If it is
       clobbered when creating the frame, we need to save and restore it.  */
!   clobber_ip = IS_NESTED (func_type)
! 	       && ((TARGET_APCS_FRAME && frame_pointer_needed && TARGET_ARM)
! 		   || ((flag_stack_check == STATIC_BUILTIN_STACK_CHECK
! 			|| flag_stack_clash_protection)
! 		       && !df_regs_ever_live_p (LR_REGNUM)
! 		       && arm_r3_live_at_start_p ()));
  
    /* Find somewhere to store IP whilst the frame is being created.
       We try the following places in order:
--- 23616,23628 ----
  
    /* The static chain register is the same as the IP register.  If it is
       clobbered when creating the frame, we need to save and restore it.  */
!   clobber_ip = (IS_NESTED (func_type)
!                 && (((TARGET_APCS_FRAME && frame_pointer_needed && TARGET_ARM)
!                      || ((flag_stack_check == STATIC_BUILTIN_STACK_CHECK
!                           || flag_stack_clash_protection)
!                          && !df_regs_ever_live_p (LR_REGNUM)
!                          && arm_r3_live_at_start_p ()))
!                     || arm_current_function_pac_enabled_p ()));
  
    /* Find somewhere to store IP whilst the frame is being created.
       We try the following places in order:
*************** arm_expand_prologue (void)
*** 23450,23456 ****
  	{
  	  rtx addr, dwarf;
  
- 	  gcc_assert(arm_compute_static_chain_stack_bytes() == 4);
  	  saved_regs += 4;
  
  	  addr = gen_rtx_PRE_DEC (Pmode, stack_pointer_rtx);
--- 23647,23652 ----
*************** arm_expand_prologue (void)
*** 23463,23468 ****
--- 23659,23666 ----
  					      -fp_offset));
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	  add_reg_note (insn, REG_FRAME_RELATED_EXPR, dwarf);
+ 	  if (arm_current_function_pac_enabled_p ())
+ 	    cfun->machine->pacspval_needed = 1;
  	}
        else
  	{
*************** arm_expand_prologue (void)
*** 23498,23506 ****
--- 23696,23721 ----
  	  RTX_FRAME_RELATED_P (insn) = 1;
  	  fp_offset = args_to_push;
  	  args_to_push = 0;
+ 	  if (arm_current_function_pac_enabled_p ())
+ 	    cfun->machine->pacspval_needed = 1;
  	}
      }
  
+   if (arm_current_function_pac_enabled_p ())
+     {
+       /* If IP was clobbered we only emit a PAC instruction as the BTI
+          one will be added before the push of the clobbered IP (if
+          necessary) by the bti pass.  */
+       if (aarch_bti_enabled () && !clobber_ip)
+ 	insn = emit_insn (gen_pacbti_nop ());
+       else
+ 	insn = emit_insn (gen_pac_nop ());
+ 
+       rtx dwarf = gen_rtx_SET (ip_rtx, gen_rtx_REG (SImode, RA_AUTH_CODE));
+       RTX_FRAME_RELATED_P (insn) = 1;
+       add_reg_note (insn, REG_CFA_REGISTER, dwarf);
+     }
+ 
    if (TARGET_APCS_FRAME && frame_pointer_needed && TARGET_ARM)
      {
        if (IS_INTERRUPT (func_type))
*************** arm_print_condition (FILE *stream)
*** 23784,23791 ****
  /* Globally reserved letters: acln
     Puncutation letters currently used: @_|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
!    Upper case letters currently used: ABCDEFGHIJKLMNOPQRSTU
!    Letters previously used, but now deprecated/obsolete: sVWXYZ.
  
     Note that the global reservation for 'c' is only for CONSTANT_ADDRESS_P.
  
--- 23999,24006 ----
  /* Globally reserved letters: acln
     Puncutation letters currently used: @_|?().!#
     Lower case letters currently used: bcdefhimpqtvwxyz
!    Upper case letters currently used: ABCDEFGHIJKLMNOPQRSTUV
!    Letters previously used, but now deprecated/obsolete: sWXYZ.
  
     Note that the global reservation for 'c' is only for CONSTANT_ADDRESS_P.
  
*************** arm_print_condition (FILE *stream)
*** 23801,23807 ****
     If CODE is 'N' then X is a floating point operand that must be negated
     before output.
     If CODE is 'B' then output a bitwise inverted value of X (a const int).
!    If X is a REG and CODE is `M', output a ldm/stm style multi-reg.  */
  static void
  arm_print_operand (FILE *stream, rtx x, int code)
  {
--- 24016,24025 ----
     If CODE is 'N' then X is a floating point operand that must be negated
     before output.
     If CODE is 'B' then output a bitwise inverted value of X (a const int).
!    If X is a REG and CODE is `M', output a ldm/stm style multi-reg.
!    If CODE is 'V', then the operand must be a CONST_INT representing
!    the bits to preserve in the modified register (Rd) of a BFI or BFC
!    instruction: print out both the width and lsb (shift) fields.  */
  static void
  arm_print_operand (FILE *stream, rtx x, int code)
  {
*************** arm_print_operand (FILE *stream, rtx x,
*** 24110,24117 ****
  	     stream);
        return;
  
-     case 's':
      case 'V':
      case 'W':
      case 'X':
      case 'Y':
--- 24328,24355 ----
  	     stream);
        return;
  
      case 'V':
+       {
+ 	/* Output the LSB (shift) and width for a bitmask instruction
+ 	   based on a literal mask.  The LSB is printed first,
+ 	   followed by the width.
+ 
+ 	   Eg. For 0b1...1110001, the result is #1, #3.  */
+ 	if (!CONST_INT_P (x))
+ 	  {
+ 	    output_operand_lossage ("invalid operand for code '%c'", code);
+ 	    return;
+ 	  }
+ 
+ 	unsigned HOST_WIDE_INT val
+ 	  = ~UINTVAL (x) & HOST_WIDE_INT_UC (0xffffffff);
+ 	int lsb = exact_log2 (val & -val);
+ 	asm_fprintf (stream, "#%d, #%d", lsb,
+ 		     (exact_log2 (val + (val & -val)) - lsb));
+       }
+       return;
+ 
+     case 's':
      case 'W':
      case 'X':
      case 'Y':
*************** arm_hard_regno_mode_ok (unsigned int reg
*** 25443,25452 ****
      return false;
  
    if (IS_VPR_REGNUM (regno))
!     return mode == HImode
!       || mode == V16BImode
!       || mode == V8BImode
!       || mode == V4BImode;
  
    if (TARGET_THUMB1)
      /* For the Thumb we only allow values bigger than SImode in
--- 25681,25687 ----
      return false;
  
    if (IS_VPR_REGNUM (regno))
!     return VALID_MVE_PRED_MODE (mode);
  
    if (TARGET_THUMB1)
      /* For the Thumb we only allow values bigger than SImode in
*************** arm_modes_tieable_p (machine_mode mode1,
*** 25525,25530 ****
--- 25760,25769 ----
    if (GET_MODE_CLASS (mode1) == GET_MODE_CLASS (mode2))
      return true;
  
+   if (TARGET_HAVE_MVE
+       && (VALID_MVE_PRED_MODE (mode1) && VALID_MVE_PRED_MODE (mode2)))
+     return true;
+ 
    /* We specifically want to allow elements of "structure" modes to
       be tieable to the structure.  This more general condition allows
       other rarer situations too.  */
*************** arm_regno_class (int regno)
*** 25557,25562 ****
--- 25796,25804 ----
    if (IS_VPR_REGNUM (regno))
      return VPR_REG;
  
+   if (IS_PAC_REGNUM (regno))
+     return PAC_REG;
+ 
    if (TARGET_THUMB1)
      {
        if (regno == STACK_POINTER_REGNUM)
*************** arm_init_machine_status (void)
*** 26717,26722 ****
--- 26959,26965 ----
    machine->func_type = ARM_FT_UNKNOWN;
  #endif
    machine->static_chain_stack_bytes = -1;
+   machine->pacspval_needed = 0;
    return machine;
  }
  
*************** thumb2_expand_return (bool simple_return
*** 27289,27295 ****
  	 to assert it for now to ensure that future code changes do not silently
  	 change this behavior.  */
        gcc_assert (!IS_CMSE_ENTRY (arm_current_func_type ()));
!       if (num_regs == 1)
          {
            rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
            rtx reg = gen_rtx_REG (SImode, PC_REGNUM);
--- 27532,27545 ----
  	 to assert it for now to ensure that future code changes do not silently
  	 change this behavior.  */
        gcc_assert (!IS_CMSE_ENTRY (arm_current_func_type ()));
!       if (arm_current_function_pac_enabled_p ())
!         {
!           gcc_assert (!(saved_regs_mask & (1 << PC_REGNUM)));
!           arm_emit_multi_reg_pop (saved_regs_mask);
!           emit_insn (gen_aut_nop ());
!           emit_jump_insn (simple_return_rtx);
!         }
!       else if (num_regs == 1)
          {
            rtx par = gen_rtx_PARALLEL (VOIDmode, rtvec_alloc (2));
            rtx reg = gen_rtx_REG (SImode, PC_REGNUM);
*************** arm_expand_epilogue (bool really_return)
*** 27713,27719 ****
            && really_return
            && crtl->args.pretend_args_size == 0
            && saved_regs_mask & (1 << LR_REGNUM)
!           && !crtl->calls_eh_return)
          {
            saved_regs_mask &= ~(1 << LR_REGNUM);
            saved_regs_mask |= (1 << PC_REGNUM);
--- 27963,27970 ----
            && really_return
            && crtl->args.pretend_args_size == 0
            && saved_regs_mask & (1 << LR_REGNUM)
!           && !crtl->calls_eh_return
! 	  && !arm_current_function_pac_enabled_p ())
          {
            saved_regs_mask &= ~(1 << LR_REGNUM);
            saved_regs_mask |= (1 << PC_REGNUM);
*************** arm_expand_epilogue (bool really_return)
*** 27827,27832 ****
--- 28078,28086 ----
  	}
      }
  
+   if (arm_current_function_pac_enabled_p ())
+     emit_insn (gen_aut_nop ());
+ 
    if (!really_return)
      return;
  
*************** static void
*** 28339,28344 ****
--- 28593,28600 ----
  arm_file_start (void)
  {
    int val;
+   bool pac = (aarch_ra_sign_scope != AARCH_FUNCTION_NONE);
+   bool bti = (aarch_enable_bti == 1);
  
    arm_print_asm_arch_directives
      (asm_out_file, TREE_TARGET_OPTION (target_option_default_node));
*************** arm_file_start (void)
*** 28409,28414 ****
--- 28665,28686 ----
  	arm_emit_eabi_attribute ("Tag_ABI_FP_16bit_format", 38,
  			     (int) arm_fp16_format);
  
+       if (TARGET_HAVE_PACBTI)
+ 	{
+ 	  arm_emit_eabi_attribute ("Tag_PAC_extension", 50, 2);
+ 	  arm_emit_eabi_attribute ("Tag_BTI_extension", 52, 2);
+ 	}
+       else if (pac || bti)
+ 	{
+ 	  arm_emit_eabi_attribute ("Tag_PAC_extension", 50, 1);
+ 	  arm_emit_eabi_attribute ("Tag_BTI_extension", 52, 1);
+ 	}
+ 
+       if (bti)
+         arm_emit_eabi_attribute ("TAG_BTI_use", 74, 1);
+       if (pac)
+ 	arm_emit_eabi_attribute ("TAG_PACRET_use", 76, 1);
+ 
        if (arm_lang_output_object_attributes_hook)
  	arm_lang_output_object_attributes_hook();
      }
*************** arm_setup_incoming_varargs (cumulative_a
*** 29051,29057 ****
    if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
      {
        nregs = pcum->aapcs_ncrn;
!       if (nregs & 1)
  	{
  	  int res = arm_needs_doubleword_align (arg.mode, arg.type);
  	  if (res < 0 && warn_psabi)
--- 29323,29330 ----
    if (pcum->pcs_variant <= ARM_PCS_AAPCS_LOCAL)
      {
        nregs = pcum->aapcs_ncrn;
!       if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
! 	  && (nregs & 1))
  	{
  	  int res = arm_needs_doubleword_align (arg.mode, arg.type);
  	  if (res < 0 && warn_psabi)
*************** arm_vector_mode_supported_p (machine_mod
*** 29335,29348 ****
      return true;
  
    if (TARGET_HAVE_MVE
!       && (mode == V2DImode || mode == V4SImode || mode == V8HImode
! 	  || mode == V16QImode
! 	  || mode == V16BImode || mode == V8BImode || mode == V4BImode))
!       return true;
  
    if (TARGET_HAVE_MVE_FLOAT
        && (mode == V2DFmode || mode == V4SFmode || mode == V8HFmode))
!       return true;
  
    return false;
  }
--- 29608,29619 ----
      return true;
  
    if (TARGET_HAVE_MVE
!       && (VALID_MVE_SI_MODE (mode) || VALID_MVE_PRED_MODE (mode)))
!     return true;
  
    if (TARGET_HAVE_MVE_FLOAT
        && (mode == V2DFmode || mode == V4SFmode || mode == V8HFmode))
!     return true;
  
    return false;
  }
*************** arm_shift_truncation_mask (machine_mode
*** 29476,29482 ****
  /* Map internal gcc register numbers to DWARF2 register numbers.  */
  
  unsigned int
! arm_dbx_register_number (unsigned int regno)
  {
    if (regno < 16)
      return regno;
--- 29747,29753 ----
  /* Map internal gcc register numbers to DWARF2 register numbers.  */
  
  unsigned int
! arm_debugger_regno (unsigned int regno)
  {
    if (regno < 16)
      return regno;
*************** arm_dbx_register_number (unsigned int re
*** 29496,29501 ****
--- 29767,29775 ----
    if (IS_IWMMXT_REGNUM (regno))
      return 112 + regno - FIRST_IWMMXT_REGNUM;
  
+   if (IS_PAC_REGNUM (regno))
+     return DWARF_PAC_REGNUM;
+ 
    return DWARF_FRAME_REGISTERS;
  }
  
*************** arm_unwind_emit_sequence (FILE * out_fil
*** 29589,29595 ****
    gcc_assert (nregs);
  
    reg = REGNO (SET_SRC (XVECEXP (p, 0, 1)));
!   if (reg < 16)
      {
        /* For -Os dummy registers can be pushed at the beginning to
  	 avoid separate stack pointer adjustment.  */
--- 29863,29869 ----
    gcc_assert (nregs);
  
    reg = REGNO (SET_SRC (XVECEXP (p, 0, 1)));
!   if (reg < 16 || IS_PAC_REGNUM (reg))
      {
        /* For -Os dummy registers can be pushed at the beginning to
  	 avoid separate stack pointer adjustment.  */
*************** arm_unwind_emit_sequence (FILE * out_fil
*** 29646,29651 ****
--- 29920,29927 ----
  	 double precision register names.  */
        if (IS_VFP_REGNUM (reg))
  	asm_fprintf (out_file, "d%d", (reg - FIRST_VFP_REGNUM) / 2);
+       else if (IS_PAC_REGNUM (reg))
+ 	asm_fprintf (asm_out_file, "ra_auth_code");
        else
  	asm_fprintf (out_file, "%r", reg);
  
*************** arm_unwind_emit_set (FILE * out_file, rt
*** 29740,29746 ****
  	  /* Move from sp to reg.  */
  	  asm_fprintf (out_file, "\t.movsp %r\n", REGNO (e0));
  	}
!      else if (GET_CODE (e1) == PLUS
  	      && REG_P (XEXP (e1, 0))
  	      && REGNO (XEXP (e1, 0)) == SP_REGNUM
  	      && CONST_INT_P (XEXP (e1, 1)))
--- 30016,30022 ----
  	  /* Move from sp to reg.  */
  	  asm_fprintf (out_file, "\t.movsp %r\n", REGNO (e0));
  	}
!       else if (GET_CODE (e1) == PLUS
  	      && REG_P (XEXP (e1, 0))
  	      && REGNO (XEXP (e1, 0)) == SP_REGNUM
  	      && CONST_INT_P (XEXP (e1, 1)))
*************** arm_unwind_emit_set (FILE * out_file, rt
*** 29749,29754 ****
--- 30025,30035 ----
  	  asm_fprintf (out_file, "\t.movsp %r, #%d\n",
  		       REGNO (e0), (int)INTVAL(XEXP (e1, 1)));
  	}
+       else if (REGNO (e0) == IP_REGNUM && arm_current_function_pac_enabled_p ())
+ 	{
+ 	  if (cfun->machine->pacspval_needed)
+ 	    asm_fprintf (out_file, "\t.pacspval\n");
+ 	}
        else
  	abort ();
        break;
*************** arm_unwind_emit (FILE * out_file, rtx_in
*** 29803,29812 ****
  	    src = SET_SRC (pat);
  	    dest = SET_DEST (pat);
  
! 	    gcc_assert (src == stack_pointer_rtx);
  	    reg = REGNO (dest);
! 	    asm_fprintf (out_file, "\t.unwind_raw 0, 0x%x @ vsp = r%d\n",
! 			 reg + 0x90, reg);
  	  }
  	  handled_one = true;
  	  break;
--- 30084,30098 ----
  	    src = SET_SRC (pat);
  	    dest = SET_DEST (pat);
  
! 	    gcc_assert (src == stack_pointer_rtx
! 			|| IS_PAC_REGNUM (REGNO (src)));
  	    reg = REGNO (dest);
! 
! 	    if (IS_PAC_REGNUM (REGNO (src)))
! 	      arm_unwind_emit_set (out_file, PATTERN (insn));
! 	    else
! 	      asm_fprintf (out_file, "\t.unwind_raw 0, 0x%x @ vsp = r%d\n",
! 			   reg + 0x90, reg);
  	  }
  	  handled_one = true;
  	  break;
*************** arm_mangle_type (const_tree type)
*** 30267,30272 ****
--- 30553,30560 ----
    /* Half-precision floating point types.  */
    if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16)
      {
+       if (TYPE_MAIN_VARIANT (type) == float16_type_node)
+ 	return NULL;
        if (TYPE_MODE (type) == BFmode)
  	return "u6__bf16";
        else
*************** arm_mode_to_pred_mode (machine_mode mode
*** 31144,31149 ****
--- 31432,31438 ----
      case 16: return V16BImode;
      case 8: return V8BImode;
      case 4: return V4BImode;
+     case 2: return V2QImode;
      }
    return opt_machine_mode ();
  }
*************** arm_expand_vec_perm_const_1 (struct expa
*** 31817,31825 ****
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! arm_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0, rtx op1,
  			      const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
    int i, nelt, which;
  
--- 32106,32118 ----
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! arm_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 			      rtx target, rtx op0, rtx op1,
  			      const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    struct expand_vec_perm_d d;
    int i, nelt, which;
  
*************** arm_fusion_enabled_p (tune_params::fuse_
*** 32903,32908 ****
--- 33196,33273 ----
    return current_tune->fusible_ops & op;
  }
  
+ /* Return TRUE if return address signing mechanism is enabled.  */
+ bool
+ arm_current_function_pac_enabled_p (void)
+ {
+   return (aarch_ra_sign_scope == AARCH_FUNCTION_ALL
+           || (aarch_ra_sign_scope == AARCH_FUNCTION_NON_LEAF
+               && !crtl->is_leaf));
+ }
+ 
+ /* Raise an error if the current target arch is not bti compatible.  */
+ void aarch_bti_arch_check (void)
+ {
+   if (!arm_arch8m_main)
+     error ("This architecture does not support branch protection instructions");
+ }
+ 
+ /* Return TRUE if Branch Target Identification Mechanism is enabled.  */
+ bool
+ aarch_bti_enabled (void)
+ {
+   return aarch_enable_bti != 0;
+ }
+ 
+ /* Check if INSN is a BTI J insn.  */
+ bool
+ aarch_bti_j_insn_p (rtx_insn *insn)
+ {
+   if (!insn || !INSN_P (insn))
+     return false;
+ 
+   rtx pat = PATTERN (insn);
+   return GET_CODE (pat) == UNSPEC_VOLATILE && XINT (pat, 1) == VUNSPEC_BTI_NOP;
+ }
+ 
+ /* Check if X (or any sub-rtx of X) is a PACIASP/PACIBSP instruction.  */
+ bool
+ aarch_pac_insn_p (rtx x)
+ {
+   if (!x || !INSN_P (x))
+     return false;
+ 
+   rtx pat = PATTERN (x);
+ 
+   if (GET_CODE (pat) == SET)
+     {
+       rtx tmp = XEXP (pat, 1);
+       if (tmp
+ 	  && ((GET_CODE (tmp) == UNSPEC
+                && XINT (tmp, 1) == UNSPEC_PAC_NOP)
+               || (GET_CODE (tmp) == UNSPEC_VOLATILE
+                   && XINT (tmp, 1) == VUNSPEC_PACBTI_NOP)))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
+  /* Target specific mapping for aarch_gen_bti_c and aarch_gen_bti_j.
+     For Arm, both of these map to a simple BTI instruction.  */
+ 
+ rtx
+ aarch_gen_bti_c (void)
+ {
+   return gen_bti_nop ();
+ }
+ 
+ rtx
+ aarch_gen_bti_j (void)
+ {
+   return gen_bti_nop ();
+ }
+ 
  /* Implement TARGET_SCHED_CAN_SPECULATE_INSN.  Return true if INSN can be
     scheduled for speculative execution.  Reject the long-running division
     and square-root instructions.  */
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm.h gcc-13.1.0/gcc/config/arm/arm.h
*** gcc-12.2.0/gcc/config/arm/arm.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for ARM.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
     and Martin Simmons (@harleqn.co.uk).
     More major hacks by Richard Earnshaw (rearnsha@arm.com)
*************** extern char arm_arch_name[];
*** 47,56 ****
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS() arm_cpu_cpp_builtins (pfile)
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS arm_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO arm_d_register_target_info
- 
  #include "config/arm/arm-opts.h"
  
  /* The processor for which instructions should be scheduled.  */
--- 47,52 ----
*************** emission of floating point pcs attribute
*** 335,340 ****
--- 331,342 ----
  						isa_bit_mve_float) \
  			       && !TARGET_GENERAL_REGS_ONLY)
  
+ /* Non-zero if this target supports Armv8.1-M Mainline pointer-signing
+    extension.  */
+ #define TARGET_HAVE_PACBTI (arm_arch8_1m_main \
+ 			    && bitmap_bit_p (arm_active_target.isa, \
+ 					     isa_bit_pacbti))
+ 
  /* MVE have few common instructions as VFP, like VLDM alias VPOP, VLDR, VSTM
     alia VPUSH, VSTR and VMOV, VMSR and VMRS.  In the same manner it updates few
     registers such as FPCAR, FPCCR, FPDSCR, FPSCR, MVFR0, MVFR1 and MVFR2.  All
*************** extern int arm_arch8_3;
*** 504,509 ****
--- 506,515 ----
  /* Nonzero if this chip supports the ARM Architecture 8.4 extensions.  */
  extern int arm_arch8_4;
  
+ /* Nonzero if this chip supports the ARM Architecture 8-M Mainline
+    extensions.  */
+ extern int arm_arch8m_main;
+ 
  /* Nonzero if this chip supports the ARM Architecture 8.1-M Mainline
     extensions.  */
  extern int arm_arch8_1m_main;
*************** extern const int arm_arch_cde_coproc_bit
*** 810,816 ****
  	s16-s31	      S	VFP variable (aka d8-d15).
  	vfpcc		Not a real register.  Represents the VFP condition
  			code flags.
! 	vpr		Used to represent MVE VPR predication.  */
  
  /* The stack backtrace structure is as follows:
    fp points to here:  |  save code pointer  |      [fp]
--- 816,823 ----
  	s16-s31	      S	VFP variable (aka d8-d15).
  	vfpcc		Not a real register.  Represents the VFP condition
  			code flags.
! 	vpr		Used to represent MVE VPR predication.
! 	ra_auth_code	Pseudo register to save PAC.  */
  
  /* The stack backtrace structure is as follows:
    fp points to here:  |  save code pointer  |      [fp]
*************** extern const int arm_arch_cde_coproc_bit
*** 851,857 ****
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,			\
    /* Specials.  */		\
!   1,1,1,1,1,1,1			\
  }
  
  /* 1 for registers not available across function calls.
--- 858,864 ----
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,			\
    /* Specials.  */		\
!   1,1,1,1,1,1,1,1		\
  }
  
  /* 1 for registers not available across function calls.
*************** extern const int arm_arch_cde_coproc_bit
*** 881,887 ****
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,			\
    /* Specials.  */		\
!   1,1,1,1,1,1,1			\
  }
  
  #ifndef SUBTARGET_CONDITIONAL_REGISTER_USAGE
--- 888,894 ----
    1,1,1,1,1,1,1,1,		\
    1,1,1,1,			\
    /* Specials.  */		\
!   1,1,1,1,1,1,1,1		\
  }
  
  #ifndef SUBTARGET_CONDITIONAL_REGISTER_USAGE
*************** extern const int arm_arch_cde_coproc_bit
*** 1057,1068 ****
     && (LAST_VFP_REGNUM - (REGNUM) >= 2 * (N) - 1))
  
  /* The number of hard registers is 16 ARM + 1 CC + 1 SFP + 1 AFP
!    + 1 APSRQ + 1 APSRGE + 1 VPR.  */
  /* Intel Wireless MMX Technology registers add 16 + 4 more.  */
  /* VFP (VFP3) adds 32 (64) + 1 VFPCC.  */
! #define FIRST_PSEUDO_REGISTER   107
  
! #define DBX_REGISTER_NUMBER(REGNO) arm_dbx_register_number (REGNO)
  
  /* Value should be nonzero if functions must have frame pointers.
     Zero means the frame pointer need not be set up (and parms may be accessed
--- 1064,1077 ----
     && (LAST_VFP_REGNUM - (REGNUM) >= 2 * (N) - 1))
  
  /* The number of hard registers is 16 ARM + 1 CC + 1 SFP + 1 AFP
!    + 1 APSRQ + 1 APSRGE + 1 VPR + 1 Pseudo register to save PAC.  */
  /* Intel Wireless MMX Technology registers add 16 + 4 more.  */
  /* VFP (VFP3) adds 32 (64) + 1 VFPCC.  */
! #define FIRST_PSEUDO_REGISTER   108
  
! #define DWARF_PAC_REGNUM 143
! 
! #define DEBUGGER_REGNO(REGNO) arm_debugger_regno (REGNO)
  
  /* Value should be nonzero if functions must have frame pointers.
     Zero means the frame pointer need not be set up (and parms may be accessed
*************** extern const int arm_arch_cde_coproc_bit
*** 1095,1100 ****
--- 1104,1114 ----
     || (MODE) == V16QImode || (MODE) == V8HFmode || (MODE) == V4SFmode \
     || (MODE) == V2DFmode)
  
+ #define VALID_MVE_PRED_MODE(MODE) \
+   ((MODE) == HImode							\
+    || (MODE) == V16BImode || (MODE) == V8BImode || (MODE) == V4BImode	\
+    || (MODE) == V2QImode)
+ 
  #define VALID_MVE_SI_MODE(MODE) \
    ((MODE) == V2DImode ||(MODE) == V4SImode || (MODE) == V8HImode \
     || (MODE) == V16QImode)
*************** extern int arm_regs_in_sequence[];
*** 1247,1258 ****
    CC_REGNUM, VFPCC_REGNUM,			\
    FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM,	\
    SP_REGNUM, PC_REGNUM, APSRQ_REGNUM,		\
!   APSRGE_REGNUM, VPR_REGNUM			\
  }
  
  #define IS_VPR_REGNUM(REGNUM) \
    ((REGNUM) == VPR_REGNUM)
  
  /* Use different register alloc ordering for Thumb.  */
  #define ADJUST_REG_ALLOC_ORDER arm_order_regs_for_local_alloc ()
  
--- 1261,1275 ----
    CC_REGNUM, VFPCC_REGNUM,			\
    FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM,	\
    SP_REGNUM, PC_REGNUM, APSRQ_REGNUM,		\
!   APSRGE_REGNUM, VPR_REGNUM, RA_AUTH_CODE	\
  }
  
  #define IS_VPR_REGNUM(REGNUM) \
    ((REGNUM) == VPR_REGNUM)
  
+ #define IS_PAC_REGNUM(REGNUM) \
+   ((REGNUM) == RA_AUTH_CODE)
+ 
  /* Use different register alloc ordering for Thumb.  */
  #define ADJUST_REG_ALLOC_ORDER arm_order_regs_for_local_alloc ()
  
*************** enum reg_class
*** 1291,1296 ****
--- 1308,1314 ----
    SFP_REG,
    AFP_REG,
    VPR_REG,
+   PAC_REG,
    GENERAL_AND_VPR_REGS,
    ALL_REGS,
    LIM_REG_CLASSES
*************** enum reg_class
*** 1321,1326 ****
--- 1339,1345 ----
    "SFP_REG",		\
    "AFP_REG",		\
    "VPR_REG",		\
+   "PAC_REG",		\
    "GENERAL_AND_VPR_REGS", \
    "ALL_REGS"		\
  }
*************** enum reg_class
*** 1350,1355 ****
--- 1369,1375 ----
    { 0x00000000, 0x00000000, 0x00000000, 0x00000040 }, /* SFP_REG */	\
    { 0x00000000, 0x00000000, 0x00000000, 0x00000080 }, /* AFP_REG */	\
    { 0x00000000, 0x00000000, 0x00000000, 0x00000400 }, /* VPR_REG.  */	\
+   { 0x00000000, 0x00000000, 0x00000000, 0x00000800 }, /* PAC_REG.  */	\
    { 0x00005FFF, 0x00000000, 0x00000000, 0x00000400 }, /* GENERAL_AND_VPR_REGS.  */ \
    { 0xFFFF7FFF, 0xFFFFFFFF, 0xFFFFFFFF, 0x0000040F }  /* ALL_REGS.  */	\
  }
*************** typedef struct GTY(()) machine_function
*** 1615,1620 ****
--- 1635,1643 ----
    /* The number of bytes used to store the static chain register on the
       stack, above the stack frame.  */
    int static_chain_stack_bytes;
+   /* Set to 1 when pointer authentication operation uses value of SP other
+      than the incoming stack pointer value.  */
+   int pacspval_needed;
  }
  machine_function;
  #endif
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm.md gcc-13.1.0/gcc/config/arm/arm.md
*** gcc-12.2.0/gcc/config/arm/arm.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for ARM for GNU compiler
! ;;  Copyright (C) 1991-2022 Free Software Foundation, Inc.
  ;;  Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
  ;;  and Martin Simmons (@harleqn.co.uk).
  ;;  More major hacks by Richard Earnshaw (rearnsha@arm.com).
--- 1,5 ----
  ;;- Machine description for ARM for GNU compiler
! ;;  Copyright (C) 1991-2023 Free Software Foundation, Inc.
  ;;  Contributed by Pieter `Tiggr' Schoenmakers (rcpieter@win.tue.nl)
  ;;  and Martin Simmons (@harleqn.co.uk).
  ;;  More major hacks by Richard Earnshaw (rearnsha@arm.com).
***************
*** 42,47 ****
--- 42,48 ----
     (APSRQ_REGNUM    104)	; Q bit pseudo register
     (APSRGE_REGNUM   105)	; GE bits pseudo register
     (VPR_REGNUM      106)	; Vector Predication Register - MVE register.
+    (RA_AUTH_CODE    107)	; Pseudo register to save PAC.
    ]
  )
  ;; 3rd operand to select_dominance_cc_mode
***************
*** 3002,3031 ****
  
  ; ??? Check split length for Thumb-2
  (define_insn_and_split "*arm_andsi3_insn"
!   [(set (match_operand:SI         0 "s_register_operand" "=r,l,r,r,r")
! 	(and:SI (match_operand:SI 1 "s_register_operand" "%r,0,r,r,r")
! 		(match_operand:SI 2 "reg_or_int_operand" "I,l,K,r,?n")))]
    "TARGET_32BIT"
    "@
     and%?\\t%0, %1, %2
     and%?\\t%0, %1, %2
     bic%?\\t%0, %1, #%B2
     and%?\\t%0, %1, %2
     #"
    "TARGET_32BIT
     && CONST_INT_P (operands[2])
     && !(const_ok_for_arm (INTVAL (operands[2]))
! 	|| const_ok_for_arm (~INTVAL (operands[2])))"
    [(clobber (const_int 0))]
    "
!   arm_split_constant  (AND, SImode, curr_insn, 
  	               INTVAL (operands[2]), operands[0], operands[1], 0);
    DONE;
    "
!   [(set_attr "length" "4,4,4,4,16")
     (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "no,yes,no,no,no")
!    (set_attr "type" "logic_imm,logic_imm,logic_reg,logic_reg,logic_imm")]
  )
  
  (define_insn "*andsi3_compare0"
--- 3003,3038 ----
  
  ; ??? Check split length for Thumb-2
  (define_insn_and_split "*arm_andsi3_insn"
!   [(set (match_operand:SI         0 "s_register_operand" "=r,l,r,r,r,r")
! 	(and:SI (match_operand:SI 1 "s_register_operand" "%r,0,r,r,0,r")
! 		(match_operand:SI 2 "reg_or_int_operand" "I,l,K,r,Dj,?n")))]
    "TARGET_32BIT"
    "@
     and%?\\t%0, %1, %2
     and%?\\t%0, %1, %2
     bic%?\\t%0, %1, #%B2
     and%?\\t%0, %1, %2
+    bfc%?\\t%0, %V2
     #"
    "TARGET_32BIT
     && CONST_INT_P (operands[2])
     && !(const_ok_for_arm (INTVAL (operands[2]))
! 	|| const_ok_for_arm (~INTVAL (operands[2]))
! 	|| (arm_arch_thumb2
! 	    && satisfies_constraint_Dj (operands[2])
! 	    && (rtx_equal_p (operands[0], operands[1])
! 		|| !reload_completed)))"
    [(clobber (const_int 0))]
    "
!   arm_split_constant  (AND, SImode, curr_insn,
  	               INTVAL (operands[2]), operands[0], operands[1], 0);
    DONE;
    "
!   [(set_attr "length" "4,4,4,4,4,16")
     (set_attr "predicable" "yes")
!    (set_attr "predicable_short_it" "no,yes,no,no,no,no")
!    (set_attr "arch" "*,*,*,*,v6t2,*")
!    (set_attr "type" "logic_imm,logic_imm,logic_reg,logic_reg,bfm,logic_imm")]
  )
  
  (define_insn "*andsi3_compare0"
***************
*** 3471,3483 ****
    }"
  )
  
! (define_insn "insv_zero"
    [(set (zero_extract:SI (match_operand:SI 0 "s_register_operand" "+r")
                           (match_operand:SI 1 "const_int_M_operand" "M")
                           (match_operand:SI 2 "const_int_M_operand" "M"))
          (const_int 0))]
    "arm_arch_thumb2"
    "bfc%?\t%0, %2, %1"
    [(set_attr "length" "4")
     (set_attr "predicable" "yes")
     (set_attr "type" "bfm")]
--- 3478,3502 ----
    }"
  )
  
! (define_insn_and_split "insv_zero"
    [(set (zero_extract:SI (match_operand:SI 0 "s_register_operand" "+r")
                           (match_operand:SI 1 "const_int_M_operand" "M")
                           (match_operand:SI 2 "const_int_M_operand" "M"))
          (const_int 0))]
    "arm_arch_thumb2"
    "bfc%?\t%0, %2, %1"
+   ""
+   [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 1)))]
+   {
+     /* Convert back to a normal AND operation, so that we can take advantage
+        of BIC and AND when appropriate; we'll still emit BFC if that's the
+        right thing to do.  */
+     unsigned HOST_WIDE_INT width = UINTVAL (operands[1]);
+     unsigned HOST_WIDE_INT lsb = UINTVAL (operands[2]);
+     unsigned HOST_WIDE_INT mask = (HOST_WIDE_INT_1U << width) - 1;
+ 
+     operands[1] = gen_int_mode (~(mask << lsb), SImode);
+   }
    [(set_attr "length" "4")
     (set_attr "predicable" "yes")
     (set_attr "type" "bfm")]
***************
*** 3495,3500 ****
--- 3514,3589 ----
     (set_attr "type" "bfm")]
  )
  
+ (define_insn "*bfi"
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "s_register_operand" "0")
+ 			(match_operand 2 "const_int_operand" "Dj"))
+ 		(and:SI (ashift:SI
+ 			 (match_operand:SI 3 "s_register_operand" "r")
+ 			 (match_operand 4 "const_int_operand" "i"))
+ 			(match_operand 5 "const_int_operand" "i"))))]
+   "arm_arch_thumb2
+    && UINTVAL (operands[4]) < 32
+    && UINTVAL (operands[2]) == ~UINTVAL (operands[5])
+    && (exact_log2 (UINTVAL (operands[5])
+ 		   + (HOST_WIDE_INT_1U << UINTVAL (operands[4])))
+        >= 0)"
+   "bfi%?\t%0, %3, %V2"
+   [(set_attr "length" "4")
+    (set_attr "predicable" "yes")
+    (set_attr "type" "bfm")]
+ )
+ 
+ (define_insn "*bfi_alt1"
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(ior:SI (and:SI (ashift:SI
+ 			 (match_operand:SI 3 "s_register_operand" "r")
+ 			 (match_operand 4 "const_int_operand" "i"))
+ 			(match_operand 5 "const_int_operand" "i"))
+ 		(and:SI (match_operand:SI 1 "s_register_operand" "0")
+ 			(match_operand 2 "const_int_operand" "Dj"))))]
+   "arm_arch_thumb2
+    && UINTVAL (operands[4]) < 32
+    && UINTVAL (operands[2]) == ~UINTVAL (operands[5])
+    && (exact_log2 (UINTVAL (operands[5])
+ 		   + (HOST_WIDE_INT_1U << UINTVAL (operands[4])))
+        >= 0)"
+   "bfi%?\t%0, %3, %V2"
+   [(set_attr "length" "4")
+    (set_attr "predicable" "yes")
+    (set_attr "type" "bfm")]
+ )
+ 
+ (define_insn "*bfi_alt2"
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 1 "s_register_operand" "0")
+ 			(match_operand 2 "const_int_operand" "i"))
+ 		(and:SI (match_operand:SI 3 "s_register_operand" "r")
+ 			(match_operand 4 "const_int_operand" "i"))))]
+   "arm_arch_thumb2
+    && UINTVAL (operands[2]) == ~UINTVAL (operands[4])
+    && exact_log2 (UINTVAL (operands[4]) + 1) >= 0"
+   "bfi%?\t%0, %3, %V2"
+   [(set_attr "length" "4")
+    (set_attr "predicable" "yes")
+    (set_attr "type" "bfm")]
+ )
+ 
+ (define_insn "*bfi_alt3"
+   [(set (match_operand:SI 0 "s_register_operand" "=r")
+ 	(ior:SI (and:SI (match_operand:SI 3 "s_register_operand" "r")
+ 			(match_operand 4 "const_int_operand" "i"))
+ 		(and:SI (match_operand:SI 1 "s_register_operand" "0")
+ 			(match_operand 2 "const_int_operand" "i"))))]
+   "arm_arch_thumb2
+    && UINTVAL (operands[2]) == ~UINTVAL (operands[4])
+    && exact_log2 (UINTVAL (operands[4]) + 1) >= 0"
+   "bfi%?\t%0, %3, %V2"
+   [(set_attr "length" "4")
+    (set_attr "predicable" "yes")
+    (set_attr "type" "bfm")]
+ )
+ 
  (define_insn "andsi_notsi_si"
    [(set (match_operand:SI 0 "s_register_operand" "=r")
  	(and:SI (not:SI (match_operand:SI 2 "s_register_operand" "r"))
***************
*** 12695,12702 ****
    rtx hi_op0 = gen_highpart_mode (SImode, DImode, operands[0]);
    rtx hi_op1 = gen_highpart_mode (SImode, DImode, operands[1]);
  
!   emit_insn (gen_movmisalignsi (lo_op0, lo_op1));
!   emit_insn (gen_movmisalignsi (hi_op0, hi_op1));
    DONE;
  })
  
--- 12784,12799 ----
    rtx hi_op0 = gen_highpart_mode (SImode, DImode, operands[0]);
    rtx hi_op1 = gen_highpart_mode (SImode, DImode, operands[1]);
  
!   if (aligned_operand (lo_op0, SImode) && aligned_operand (lo_op1, SImode))
!     {
!       emit_move_insn (lo_op0, lo_op1);
!       emit_move_insn (hi_op0, hi_op1);
!     }
!   else
!     {
!       emit_insn (gen_movmisalignsi (lo_op0, lo_op1));
!       emit_insn (gen_movmisalignsi (hi_op0, hi_op1));
!     }
    DONE;
  })
  
***************
*** 12890,12895 ****
--- 12987,13022 ----
     (set_attr "length" "8")]
  )
  
+ (define_insn "pac_nop"
+   [(set (reg:SI IP_REGNUM)
+ 	(unspec:SI [(reg:SI SP_REGNUM) (reg:SI LR_REGNUM)]
+ 		   UNSPEC_PAC_NOP))]
+   "arm_arch8m_main"
+   "pac\t%|ip, %|lr, %|sp"
+   [(set_attr "conds" "unconditional")])
+ 
+ (define_insn "pacbti_nop"
+   [(set (reg:SI IP_REGNUM)
+ 	(unspec_volatile:SI [(reg:SI SP_REGNUM) (reg:SI LR_REGNUM)]
+ 			    VUNSPEC_PACBTI_NOP))]
+   "arm_arch8m_main"
+   "pacbti\t%|ip, %|lr, %|sp"
+   [(set_attr "conds" "unconditional")])
+ 
+ (define_insn "aut_nop"
+   [(unspec_volatile:SI [(reg:SI IP_REGNUM) (reg:SI SP_REGNUM) (reg:SI LR_REGNUM)]
+ 		       VUNSPEC_AUT_NOP)]
+   "arm_arch8m_main"
+   "aut\t%|ip, %|lr, %|sp"
+   [(set_attr "conds" "unconditional")])
+ 
+ (define_insn "bti_nop"
+   [(unspec_volatile [(const_int 0)] VUNSPEC_BTI_NOP)]
+   "arm_arch8m_main"
+   "bti"
+   [(set_attr "conds" "unconditional")
+    (set_attr "type" "nop")])
+ 
  ;; Vector bits common to IWMMXT, Neon and MVE
  (include "vec-common.md")
  ;; Load the Intel Wireless Multimedia Extension patterns
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm.opt gcc-13.1.0/gcc/config/arm/arm.opt
*** gcc-12.2.0/gcc/config/arm/arm.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the ARM port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the ARM port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
***************
*** 21,26 ****
--- 21,38 ----
  HeaderInclude
  config/arm/arm-opts.h
  
+ HeaderInclude
+ config/arm/aarch-common.h
+ 
+ TargetVariable
+ enum aarch_function_type aarch_ra_sign_scope = AARCH_FUNCTION_NONE
+ 
+ TargetVariable
+ unsigned aarch_enable_bti = 0
+ 
+ TargetVariable
+ enum aarch_key_type aarch_ra_sign_key = AARCH_KEY_A
+ 
  Enum
  Name(tls_type) Type(enum arm_tls_type)
  TLS dialect to use:
*************** mbranch-cost=
*** 314,319 ****
--- 326,335 ----
  Target RejectNegative Joined UInteger Var(arm_branch_cost) Init(-1)
  Cost to assume for a branch insn.
  
+ mbranch-protection=
+ Target RejectNegative Joined Var(arm_branch_protection_string) Save
+ Use branch-protection features.
+ 
  mgeneral-regs-only
  Target RejectNegative Mask(GENERAL_REGS_ONLY) Save
  Generate code which uses the core registers only (r0-r14).
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm1020e.md gcc-13.1.0/gcc/config/arm/arm1020e.md
*** gcc-12.2.0/gcc/config/arm/arm1020e.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm1020e.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM 1020E & ARM 1022E Pipeline Description
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 1020E & ARM 1022E Pipeline Description
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm1026ejs.md gcc-13.1.0/gcc/config/arm/arm1026ejs.md
*** gcc-12.2.0/gcc/config/arm/arm1026ejs.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm1026ejs.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM 1026EJ-S Pipeline Description
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 1026EJ-S Pipeline Description
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm1136jfs.md gcc-13.1.0/gcc/config/arm/arm1136jfs.md
*** gcc-12.2.0/gcc/config/arm/arm1136jfs.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm1136jfs.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM 1136J[F]-S Pipeline Description
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 1136J[F]-S Pipeline Description
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm926ejs.md gcc-13.1.0/gcc/config/arm/arm926ejs.md
*** gcc-12.2.0/gcc/config/arm/arm926ejs.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm926ejs.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM 926EJ-S Pipeline Description
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM 926EJ-S Pipeline Description
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_acle.h gcc-13.1.0/gcc/config/arm/arm_acle.h
*** gcc-12.2.0/gcc/config/arm/arm_acle.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_acle.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* ARM Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM Non-NEON ACLE intrinsics include file.
  
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_acle_builtins.def gcc-13.1.0/gcc/config/arm/arm_acle_builtins.def
*** gcc-12.2.0/gcc/config/arm/arm_acle_builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_acle_builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ACLE builtin definitions for ARM.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* ACLE builtin definitions for ARM.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_bf16.h gcc-13.1.0/gcc/config/arm/arm_bf16.h
*** gcc-12.2.0/gcc/config/arm/arm_bf16.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_bf16.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Arm BF16 intrinsics include file.
  
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Arm BF16 intrinsics include file.
  
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_cde.h gcc-13.1.0/gcc/config/arm/arm_cde.h
*** gcc-12.2.0/gcc/config/arm/arm_cde.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_cde.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Arm Custom Datapath Extension (CDE) intrinsics include file.
  
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm Custom Datapath Extension (CDE) intrinsics include file.
  
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_cde_builtins.def gcc-13.1.0/gcc/config/arm/arm_cde_builtins.def
*** gcc-12.2.0/gcc/config/arm/arm_cde_builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_cde_builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Arm Custom Datapath Extension (CDE) builtin definitions.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* Arm Custom Datapath Extension (CDE) builtin definitions.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Arm Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_cmse.h gcc-13.1.0/gcc/config/arm/arm_cmse.h
*** gcc-12.2.0/gcc/config/arm/arm_cmse.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_cmse.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* ARMv8-M Secure Extensions intrinsics include file.
  
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARMv8-M Secure Extensions intrinsics include file.
  
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_fp16.h gcc-13.1.0/gcc/config/arm/arm_fp16.h
*** gcc-12.2.0/gcc/config/arm/arm_fp16.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_fp16.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* ARM FP16 intrinsics include file.
  
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM FP16 intrinsics include file.
  
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_mve.h gcc-13.1.0/gcc/config/arm/arm_mve.h
*** gcc-12.2.0/gcc/config/arm/arm_mve.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_mve.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
*************** __extension__ extern __inline mve_pred16
*** 3528,3562 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp16q (uint32_t __a)
  {
!   return __builtin_mve_vctp16qhi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp32q (uint32_t __a)
  {
!   return __builtin_mve_vctp32qhi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp64q (uint32_t __a)
  {
!   return __builtin_mve_vctp64qhi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp8q (uint32_t __a)
  {
!   return __builtin_mve_vctp8qhi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vpnot (mve_pred16_t __a)
  {
!   return __builtin_mve_vpnothi (__a);
  }
  
  __extension__ extern __inline uint8x16_t
--- 3528,3562 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp16q (uint32_t __a)
  {
!   return __builtin_mve_vctp16qv8bi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp32q (uint32_t __a)
  {
!   return __builtin_mve_vctp32qv4bi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp64q (uint32_t __a)
  {
!   return __builtin_mve_vctp64qv2qi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp8q (uint32_t __a)
  {
!   return __builtin_mve_vctp8qv16bi (__a);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vpnot (mve_pred16_t __a)
  {
!   return __builtin_mve_vpnotv16bi (__a);
  }
  
  __extension__ extern __inline uint8x16_t
*************** __extension__ extern __inline mve_pred16
*** 6696,6723 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp8q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp8q_mhi (__a, __p);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp64q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp64q_mhi (__a, __p);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp32q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp32q_mhi (__a, __p);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp16q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp16q_mhi (__a, __p);
  }
  
  __extension__ extern __inline uint64_t
--- 6696,6723 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp8q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp8q_mv16bi (__a, __p);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp64q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp64q_mv2qi (__a, __p);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp32q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp32q_mv4bi (__a, __p);
  }
  
  __extension__ extern __inline mve_pred16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vctp16q_m (uint32_t __a, mve_pred16_t __p)
  {
!   return __builtin_mve_vctp16q_mv8bi (__a, __p);
  }
  
  __extension__ extern __inline uint64_t
*************** __arm_vabdq_m_u16 (uint16x8_t __inactive
*** 9675,9716 ****
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_s8 (int8x16_t __inactive, int8x16_t __a, int __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_sv16qi (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_s32 (int32x4_t __inactive, int32x4_t __a, int __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_sv4si (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_s16 (int16x8_t __inactive, int16x8_t __a, int __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_sv8hi (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_u8 (uint8x16_t __inactive, uint8x16_t __a, int __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_uv16qi (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_u32 (uint32x4_t __inactive, uint32x4_t __a, int __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_uv4si (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_u16 (uint16x8_t __inactive, uint16x8_t __a, int __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_uv8hi (__inactive, __a, __b, __p);
  }
--- 9675,9716 ----
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_s8 (int8x16_t __inactive, int8x16_t __a, int8_t __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_sv16qi (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_s32 (int32x4_t __inactive, int32x4_t __a, int32_t __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_sv4si (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_s16 (int16x8_t __inactive, int16x8_t __a, int16_t __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_sv8hi (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_u8 (uint8x16_t __inactive, uint8x16_t __a, uint8_t __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_uv16qi (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_u32 (uint32x4_t __inactive, uint32x4_t __a, uint32_t __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_uv4si (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m_n_u16 (uint16x8_t __inactive, uint16x8_t __a, uint16_t __b, mve_pred16_t __p)
  {
    return __builtin_mve_vaddq_m_n_uv8hi (__inactive, __a, __b, __p);
  }
*************** __extension__ extern __inline void
*** 16171,16184 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_u8 (uint8_t * __addr, uint8x16_t __value, mve_pred16_t __p)
  {
!   return vstrbq_p_u8 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_s8 (int8_t * __addr, int8x16_t __value, mve_pred16_t __p)
  {
!   return vstrbq_p_s8 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
--- 16171,16184 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_u8 (uint8_t * __addr, uint8x16_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrbq_p_u8 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_s8 (int8_t * __addr, int8x16_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrbq_p_s8 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
*************** __extension__ extern __inline uint8x16_t
*** 16203,16216 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_u8 (uint8_t const *__base, mve_pred16_t __p)
  {
!   return vldrbq_z_u8 ( __base, __p);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_s8 (int8_t const *__base, mve_pred16_t __p)
  {
!   return vldrbq_z_s8 ( __base, __p);
  }
  
  __extension__ extern __inline int8x16x2_t
--- 16203,16216 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_u8 (uint8_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrbq_z_u8 ( __base, __p);
  }
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_s8 (int8_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrbq_z_s8 ( __base, __p);
  }
  
  __extension__ extern __inline int8x16x2_t
*************** __extension__ extern __inline void
*** 16253,16266 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_u16 (uint16_t * __addr, uint16x8_t __value, mve_pred16_t __p)
  {
!   return vstrhq_p_u16 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_s16 (int16_t * __addr, int16x8_t __value, mve_pred16_t __p)
  {
!   return vstrhq_p_s16 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
--- 16253,16266 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_u16 (uint16_t * __addr, uint16x8_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrhq_p_u16 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_s16 (int16_t * __addr, int16x8_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrhq_p_s16 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
*************** __extension__ extern __inline uint16x8_t
*** 16285,16298 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_u16 (uint16_t const *__base, mve_pred16_t __p)
  {
!   return vldrhq_z_u16 ( __base, __p);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_s16 (int16_t const *__base, mve_pred16_t __p)
  {
!   return vldrhq_z_s16 ( __base, __p);
  }
  
  __extension__ extern __inline int16x8x2_t
--- 16285,16298 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_u16 (uint16_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrhq_z_u16 ( __base, __p);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_s16 (int16_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrhq_z_s16 ( __base, __p);
  }
  
  __extension__ extern __inline int16x8x2_t
*************** __extension__ extern __inline void
*** 16335,16348 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_u32 (uint32_t * __addr, uint32x4_t __value, mve_pred16_t __p)
  {
!   return vstrwq_p_u32 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_s32 (int32_t * __addr, int32x4_t __value, mve_pred16_t __p)
  {
!   return vstrwq_p_s32 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
--- 16335,16348 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_u32 (uint32_t * __addr, uint32x4_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrwq_p_u32 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_s32 (int32_t * __addr, int32x4_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrwq_p_s32 (__addr, __value, __p);
  }
  
  __extension__ extern __inline void
*************** __extension__ extern __inline uint32x4_t
*** 16367,16380 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_u32 (uint32_t const *__base, mve_pred16_t __p)
  {
!   return vldrwq_z_u32 ( __base, __p);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_s32 (int32_t const *__base, mve_pred16_t __p)
  {
!   return vldrwq_z_s32 ( __base, __p);
  }
  
  __extension__ extern __inline int32x4x2_t
--- 16367,16380 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_u32 (uint32_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrwq_z_u32 ( __base, __p);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_s32 (int32_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrwq_z_s32 ( __base, __p);
  }
  
  __extension__ extern __inline int32x4x2_t
*************** __extension__ extern __inline float16x8_
*** 19837,19843 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_f16 (float16_t const *__base, mve_pred16_t __p)
  {
!   return vldrhq_z_f16 (__base, __p);
  }
  
  __extension__ extern __inline void
--- 19837,19843 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_f16 (float16_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrhq_z_f16 (__base, __p);
  }
  
  __extension__ extern __inline void
*************** __extension__ extern __inline void
*** 19853,19859 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_f16 (float16_t * __addr, float16x8_t __value, mve_pred16_t __p)
  {
!   return vstrhq_p_f16 (__addr, __value, __p);
  }
  
  __extension__ extern __inline float32x4x4_t
--- 19853,19859 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_f16 (float16_t * __addr, float16x8_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrhq_p_f16 (__addr, __value, __p);
  }
  
  __extension__ extern __inline float32x4x4_t
*************** __extension__ extern __inline float32x4_
*** 19878,19884 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_f32 (float32_t const *__base, mve_pred16_t __p)
  {
!   return vldrwq_z_f32 (__base, __p);
  }
  
  __extension__ extern __inline void
--- 19878,19884 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vld1q_z_f32 (float32_t const *__base, mve_pred16_t __p)
  {
!   return __arm_vldrwq_z_f32 (__base, __p);
  }
  
  __extension__ extern __inline void
*************** __extension__ extern __inline void
*** 19894,19900 ****
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_f32 (float32_t * __addr, float32x4_t __value, mve_pred16_t __p)
  {
!   return vstrwq_p_f32 (__addr, __value, __p);
  }
  
  __extension__ extern __inline float16x8_t
--- 19894,19900 ----
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
  __arm_vst1q_p_f32 (float32_t * __addr, float32x4_t __value, mve_pred16_t __p)
  {
!   return __arm_vstrwq_p_f32 (__addr, __value, __p);
  }
  
  __extension__ extern __inline float16x8_t
*************** __arm_vabdq_m (uint16x8_t __inactive, ui
*** 26417,26458 ****
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (int8x16_t __inactive, int8x16_t __a, int __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_s8 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (int32x4_t __inactive, int32x4_t __a, int __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_s32 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (int16x8_t __inactive, int16x8_t __a, int __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_s16 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (uint8x16_t __inactive, uint8x16_t __a, int __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_u8 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (uint32x4_t __inactive, uint32x4_t __a, int __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_u32 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (uint16x8_t __inactive, uint16x8_t __a, int __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_u16 (__inactive, __a, __b, __p);
  }
--- 26417,26458 ----
  
  __extension__ extern __inline int8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (int8x16_t __inactive, int8x16_t __a, int8_t __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_s8 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (int32x4_t __inactive, int32x4_t __a, int32_t __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_s32 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline int16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (int16x8_t __inactive, int16x8_t __a, int16_t __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_s16 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint8x16_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (uint8x16_t __inactive, uint8x16_t __a, uint8_t __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_u8 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint32x4_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (uint32x4_t __inactive, uint32x4_t __a, uint32_t __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_u32 (__inactive, __a, __b, __p);
  }
  
  __extension__ extern __inline uint16x8_t
  __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
! __arm_vaddq_m (uint16x8_t __inactive, uint16x8_t __a, uint16_t __b, mve_pred16_t __p)
  {
   return __arm_vaddq_m_n_u16 (__inactive, __a, __b, __p);
  }
*************** enum {
*** 35582,35587 ****
--- 35582,35590 ----
  	short: __ARM_mve_type_int_n, \
  	int: __ARM_mve_type_int_n, \
  	long: __ARM_mve_type_int_n, \
+ 	_Float16: __ARM_mve_type_fp_n, \
+ 	__fp16: __ARM_mve_type_fp_n, \
+ 	float: __ARM_mve_type_fp_n, \
  	double: __ARM_mve_type_fp_n, \
  	long long: __ARM_mve_type_int_n, \
  	unsigned char: __ARM_mve_type_int_n, \
*************** extern void *__ARM_undef;
*** 35656,35662 ****
  #define __ARM_mve_coerce1(param, type) \
      _Generic(param, type: param, const type: param, default: *(type *)__ARM_undef)
  #define __ARM_mve_coerce2(param, type) \
!     _Generic(param, type: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef)
  
  #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
  
--- 35659,35667 ----
  #define __ARM_mve_coerce1(param, type) \
      _Generic(param, type: param, const type: param, default: *(type *)__ARM_undef)
  #define __ARM_mve_coerce2(param, type) \
!     _Generic(param, type: param, __fp16: param, default: _Generic (param, _Float16: param, float16_t: param, float32_t: param, default: *(type *)__ARM_undef))
! #define __ARM_mve_coerce3(param, type) \
!     _Generic(param, type: param, default: _Generic (param, int8_t: param, int16_t: param, int32_t: param, int64_t: param, uint8_t: param, uint16_t: param, uint32_t: param, uint64_t: param, default: *(type *)__ARM_undef))
  
  #if (__ARM_FEATURE_MVE & 2) /* MVE Floating point.  */
  
*************** extern void *__ARM_undef;
*** 35871,35886 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_f16 (__ARM_mve_coerce(p0, float16x8_t), __ARM_mve_coerce(p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_f32 (__ARM_mve_coerce(p0, float32x4_t), __ARM_mve_coerce(p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));})
  
  #define __arm_vandq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 35876,35891 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)));})
  
  #define __arm_vandq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 35925,35938 ****
  #define __arm_vmulq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 35930,35943 ----
  #define __arm_vmulq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 35957,35970 ****
  #define __arm_vcmpeqq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpeqq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpeqq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpeqq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 35962,35975 ----
  #define __arm_vcmpeqq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpeqq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpeqq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpeqq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 35995,36010 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpeqq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpeqq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));})
  
  #define __arm_vcmpgtq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36000,36015 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpeqq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpeqq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpeqq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double), p2));})
  
  #define __arm_vcmpgtq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36012,36024 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgtq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgtq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));})
  
  #define __arm_vcmpleq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36017,36029 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgtq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgtq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)));})
  
  #define __arm_vcmpleq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36028,36038 ****
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpleq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpleq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));})
  
  #define __arm_vcmpltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36033,36043 ----
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpleq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpleq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)));})
  
  #define __arm_vcmpltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36040,36064 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpltq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpltq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));})
  
  #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36045,36069 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpltq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpltq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)));})
  
  #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36113,36120 ****
  #define __arm_vmaxnmavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vmaxnmq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36118,36125 ----
  #define __arm_vmaxnmavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vmaxnmq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36125,36138 ****
  #define __arm_vmaxnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vmaxnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vminnmaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36130,36143 ----
  #define __arm_vmaxnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vmaxnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vminnmaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36143,36150 ****
  #define __arm_vminnmavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vbrsrq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 36148,36155 ----
  #define __arm_vminnmavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vbrsrq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 36166,36179 ****
  #define __arm_vsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36171,36184 ----
  #define __arm_vsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36186,36193 ****
  #define __arm_vminnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vshlq_r(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 36191,36198 ----
  #define __arm_vminnmvq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t)), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t)));})
  
  #define __arm_vshlq_r(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 36242,36253 ****
  #define __arm_vrshlq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vrshlq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vrshlq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrshlq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36247,36258 ----
  #define __arm_vrshlq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vrshlq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vrshlq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrshlq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36278,36289 ****
  #define __arm_vqsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36283,36294 ----
  #define __arm_vqsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36334,36345 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrshlq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrshlq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrshlq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vqrdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36339,36350 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrshlq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrshlq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrshlq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vqrdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36347,36355 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vmlaldavxq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36352,36360 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vmlaldavxq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36382,36389 ****
  #define __arm_vqdmulltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
--- 36387,36394 ----
  #define __arm_vqdmulltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
*************** extern void *__ARM_undef;
*** 36396,36412 ****
  #define __arm_vqdmullbq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
  #define __arm_vqdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
--- 36401,36417 ----
  #define __arm_vqdmullbq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
  #define __arm_vqdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
*************** extern void *__ARM_undef;
*** 36414,36425 ****
  #define __arm_vqaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36419,36430 ----
  #define __arm_vqaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36452,36463 ****
  #define __arm_vhaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36457,36468 ----
  #define __arm_vhaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36482,36493 ****
  #define __arm_vhsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 36487,36498 ----
  #define __arm_vhsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 36630,36641 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));})
  
  #define __arm_vsriq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36635,36646 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vsriq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36714,36757 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
! 	    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqdmlashq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
! 	    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqrdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vmlasq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));})
  
  #define __arm_vqdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqrdmladhxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36719,36762 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
! 	    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqdmlashq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
! 	    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqrdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vmlasq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqrdmladhxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36941,36951 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgtq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgtq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
--- 36946,36956 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgtq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgtq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgtq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
*************** extern void *__ARM_undef;
*** 36957,36967 ****
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpleq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpleq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));})
  
  #define __arm_vcmpltq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36962,36972 ----
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpleq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpleq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpleq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double), p2));})
  
  #define __arm_vcmpltq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36971,36981 ****
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpltq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpltq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));})
  
  #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36976,36986 ----
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpltq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpltq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpltq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double), p2));})
  
  #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 36988,37001 ****
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpneq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpneq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2));})
  
  #define __arm_vcvtbq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 36993,37006 ----
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpneq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpneq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpneq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double), p2));})
  
  #define __arm_vcvtbq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37049,37056 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vfmaq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vfmaq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t)));})
  
--- 37054,37061 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vfmaq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vfmaq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t)));})
  
*************** extern void *__ARM_undef;
*** 37065,37072 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double)));})
  
  #define __arm_vmaxnmaq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37070,37077 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double)));})
  
  #define __arm_vmaxnmaq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37089,37102 ****
  #define __arm_vmaxnmavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vmaxnmvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vminnmaq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37094,37107 ----
  #define __arm_vmaxnmavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmavq_p_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmavq_p_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vmaxnmvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vmaxnmvq_p_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vmaxnmvq_p_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vminnmaq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37107,37120 ****
  #define __arm_vminnmavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vminnmvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_p_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_p_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vrndnq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37112,37125 ----
  #define __arm_vminnmavq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmavq_p_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmavq_p_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vminnmvq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vminnmvq_p_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vminnmvq_p_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #define __arm_vrndnq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37176,37188 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgeq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgeq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double)));})
  
  #define __arm_vrshrnbq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37181,37193 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgeq_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t)), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgeq_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t)), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double)), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double)));})
  
  #define __arm_vrshrnbq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37283,37293 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(__p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(__p1, double), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgeq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgeq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
--- 37288,37298 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce2(p1, double), p2), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vcmpgeq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce2(p1, double), p2), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vcmpgeq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), p2), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vcmpgeq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
*************** extern void *__ARM_undef;
*** 37316,37329 ****
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vandq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37321,37334 ----
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vandq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37464,37478 ****
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vfmaq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vfmaq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vfmasq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vfmsq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37469,37483 ----
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vfmaq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vfmaq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmaq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vfmasq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vfmasq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vfmsq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37507,37520 ****
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vmulq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vmulq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vornq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37512,37525 ----
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vmulq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vmulq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vornq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 37541,37554 ****
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vsubq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vsubq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vorrq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 37546,37559 ----
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vsubq_m_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vsubq_m_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f16 (__ARM_mve_coerce(__p0, float16x8_t), __ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_m_n_f32 (__ARM_mve_coerce(__p0, float32x4_t), __ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vorrq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38021,38039 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vandq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
--- 38026,38044 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vaddq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vaddq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vaddq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vandq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
*************** extern void *__ARM_undef;
*** 38156,38174 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vmulq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vmulq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vnegq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \
--- 38161,38179 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vmulq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vmulq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vmulq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vnegq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \
*************** extern void *__ARM_undef;
*** 38254,38263 ****
  #define __arm_vsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vsubq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vsubq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(__p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(__p2, double), p3));})
  
  #define __arm_vcmulq_rot90_x(p1,p2,p3)  ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
--- 38259,38280 ----
  #define __arm_vsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
+   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
+   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
+   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_float16x8_t]: __arm_vsubq_x_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce(__p2, float16x8_t), p3), \
    int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_float32x4_t]: __arm_vsubq_x_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce(__p2, float32x4_t), p3), \
!   int (*)[__ARM_mve_type_float16x8_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f16 (__ARM_mve_coerce(__p1, float16x8_t), __ARM_mve_coerce2(p2, double), p3), \
!   int (*)[__ARM_mve_type_float32x4_t][__ARM_mve_type_fp_n]: __arm_vsubq_x_n_f32 (__ARM_mve_coerce(__p1, float32x4_t), __ARM_mve_coerce2(p2, double), p3));})
  
  #define __arm_vcmulq_rot90_x(p1,p2,p3)  ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
*************** extern void *__ARM_undef;
*** 38281,38296 ****
  #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int64x2_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint64x2_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vsetq_lane_f16 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vsetq_lane_f32 (__ARM_mve_coerce2(__p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #else /* MVE Integer.  */
  
--- 38298,38313 ----
  #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int64x2_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint64x2_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float16x8_t]: __arm_vsetq_lane_f16 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float16x8_t), p2), \
!   int (*)[__ARM_mve_type_fp_n][__ARM_mve_type_float32x4_t]: __arm_vsetq_lane_f32 (__ARM_mve_coerce2(p0, double), __ARM_mve_coerce(__p1, float32x4_t), p2));})
  
  #else /* MVE Integer.  */
  
*************** extern void *__ARM_undef;
*** 38408,38419 ****
  #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38425,38436 ----
  #define __arm_vcmpneq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38440,38451 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
  
  #define __arm_vshlq_r(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 38457,38468 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vshlq_r(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 38459,38470 ****
  #define __arm_vrshlq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vrshlq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vrshlq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrshlq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38476,38487 ----
  #define __arm_vrshlq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vrshlq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vrshlq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrshlq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38495,38506 ****
  #define __arm_vqsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38512,38523 ----
  #define __arm_vqsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38569,38580 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrshlq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrshlq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrshlq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vqrdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 38586,38597 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrshlq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrshlq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrshlq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqrshlq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vqrdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38582,38597 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vqdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
--- 38599,38614 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vqdmulhq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
*************** extern void *__ARM_undef;
*** 38599,38610 ****
  #define __arm_vqaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38616,38627 ----
  #define __arm_vqaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38635,38646 ****
  #define __arm_vmulq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38652,38663 ----
  #define __arm_vmulq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38715,38726 ****
  #define __arm_vhsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38732,38743 ----
  #define __arm_vhsubq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38745,38756 ****
  #define __arm_vhaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
--- 38762,38773 ----
  #define __arm_vhaddq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
*************** extern void *__ARM_undef;
*** 38820,38831 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int)));})
  
  #define __arm_vandq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 38837,38848 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vandq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38856,38867 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
  
  #define __arm_vqmovntq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 38873,38884 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vqmovntq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38942,38957 ****
  #define __arm_vqdmulltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
  #define __arm_vqdmullbq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
--- 38959,38974 ----
  #define __arm_vqdmulltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
  #define __arm_vqdmullbq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)));})
  
*************** extern void *__ARM_undef;
*** 38961,38969 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vcmpgtq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 38978,38986 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vcmpgtq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38971,38979 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vcmpleq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 38988,38996 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vcmpleq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38981,38989 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpleq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpleq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vcmpltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 38998,39006 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpleq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpleq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vcmpltq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 38991,39010 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t)));})
  
  #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
--- 39008,39027 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t)), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t)), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
*************** extern void *__ARM_undef;
*** 39029,39040 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2));})
  
  #define __arm_vbicq_m_n(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 39046,39057 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpeqq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpeqq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpeqq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpeqq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2));})
  
  #define __arm_vbicq_m_n(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 39144,39168 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqdmlashq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqrdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqrdmladhxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 39161,39185 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqdmlashq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqrdmlahq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqrdmladhxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 39225,39233 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32_t), p2));})
  
  #define __arm_vdupq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 39242,39297 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgeq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgeq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgeq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgeq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2));})
! 
! 
! #define __arm_vcmpgtq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpgtq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpgtq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpgtq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpgtq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2));})
! 
! #define __arm_vcmpleq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpleq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpleq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpleq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpleq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2));})
! 
! #define __arm_vcmpltq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpltq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpltq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpltq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpltq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2));})
! 
! #define __arm_vcmpneq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
!   __typeof(p1) __p1 = (p1); \
!   _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vcmpneq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vcmpneq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vcmpneq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpneq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpneq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpneq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpneq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2));})
  
  #define __arm_vdupq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 39250,39272 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));})
  
  #define __arm_vmlasq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t)));})
  
  #define __arm_vnegq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 39314,39336 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vmlasq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vnegq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 39291,39299 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t)));})
  
  #define __arm_vqdmlsdhq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 39355,39363 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int)), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int)));})
  
  #define __arm_vqdmlsdhq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 39456,39467 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 39520,39531 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 39561,39572 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vornq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 39625,39636 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vornq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 39594,39605 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 39658,39669 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 39611,39622 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 39675,39686 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 39953,39967 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));})
  
  #define __arm_vcaddq_rot270_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
--- 40017,40031 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vaddq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vaddq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vaddq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vaddq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vcaddq_rot270_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
*************** extern void *__ARM_undef;
*** 40055,40069 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));})
  
  #define __arm_vnegq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \
--- 40119,40133 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmulq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmulq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmulq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmulq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmulq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmulq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmulq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vnegq_x(p1,p2) ({ __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)])0, \
*************** extern void *__ARM_undef;
*** 40171,40176 ****
--- 40235,40256 ----
    int (*)[__ARM_mve_type_uint16_t_ptr]: __arm_vld4q_u16 (__ARM_mve_coerce1(p0, uint16_t *)), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vld4q_u32 (__ARM_mve_coerce1(p0, uint32_t *))))
  
+ #define __arm_vsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
+   __typeof(p2) __p2 = (p2); \
+   _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
+   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vsubq_x_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
+   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vsubq_x_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
+   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vsubq_x_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
+   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
+   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3));})
+ 
  #define __arm_vgetq_lane(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
    int (*)[__ARM_mve_type_int8x16_t]: __arm_vgetq_lane_s8 (__ARM_mve_coerce(__p0, int8x16_t), p1), \
*************** extern void *__ARM_undef;
*** 40185,40198 ****
  #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce(__p0, int8_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce(__p0, int16_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int64x2_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce(__p0, uint8_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce(__p0, uint16_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint64x2_t), p2));})
  
  #endif /* MVE Integer.  */
  
--- 40265,40278 ----
  #define __arm_vsetq_lane(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vsetq_lane_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vsetq_lane_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vsetq_lane_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int64x2_t]: __arm_vsetq_lane_s64 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int64x2_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vsetq_lane_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vsetq_lane_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vsetq_lane_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint64x2_t]: __arm_vsetq_lane_u64 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint64x2_t), p2));})
  
  #endif /* MVE Integer.  */
  
*************** extern void *__ARM_undef;
*** 40372,40383 ****
  #define __arm_vhaddq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u8( __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u16( __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u32( __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 40452,40463 ----
  #define __arm_vhaddq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u8( __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u16( __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_x_n_u32( __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 40402,40413 ****
  #define __arm_vhsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 40482,40493 ----
  #define __arm_vhsubq_x(p1,p2,p3) ({ __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u8 (__ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u16 (__ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_x_n_u32 (__ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhsubq_x_s8 (__ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhsubq_x_s16 (__ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhsubq_x_s32 (__ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 40527,40551 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));})
  
  #define __arm_vqrdmlashq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));})
  
  #define __arm_vqdmlashq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));})
  
  #define __arm_vqrshlq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 40607,40631 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vqrdmlashq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vqdmlashq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlashq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vqrshlq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 40646,40657 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 40726,40737 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqsubq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqsubq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqsubq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 40666,40674 ****
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));})
  
  #define __arm_vqrdmlsdhxq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 40746,40754 ----
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqrdmulhq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqrdmulhq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqrdmulhq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqrdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vqrdmlsdhxq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 40794,40810 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_p_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_p_u16 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vmlaldavaxq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_p_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
  #define __arm_vmlsldavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 40874,40890 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_p_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_p_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vmlaldavaxq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_p_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
  #define __arm_vmlsldavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 40943,40954 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 41023,41034 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vhaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vhaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vhaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 40982,40993 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vhsubq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vhsubq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vhsubq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));})
  
  #define __arm_vmaxq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41062,41073 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vhsubq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vhsubq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vhsubq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3), \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vhsubq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vmaxq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41015,41037 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));})
  
  #define __arm_vmlasq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3));})
  
  #define __arm_vmulhq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41095,41117 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlaq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vmlasq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vmlasq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vmulhq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41077,41088 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8_t), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16_t), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
--- 41157,41168 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vqaddq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqaddq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqaddq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqaddq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
*************** extern void *__ARM_undef;
*** 41094,41110 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));})
  
  #define __arm_vqdmulhq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8_t), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
--- 41174,41190 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmlahq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vqdmulhq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulhq_m_n_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vqdmulhq_m_s8 (__ARM_mve_coerce(__p0, int8x16_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
    int (*)[__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulhq_m_s16 (__ARM_mve_coerce(__p0, int16x8_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulhq_m_s32 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
*************** extern void *__ARM_undef;
*** 41115,41129 ****
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_m_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_m_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3));})
  
  #define __arm_vqdmulltq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16_t), p3), \
!   int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32_t), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_m_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_m_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
--- 41195,41209 ----
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmullbq_m_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmullbq_m_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmullbq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3));})
  
  #define __arm_vqdmulltq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce3(p2, int), p3), \
!   int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int_n]: __arm_vqdmulltq_m_n_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce3(p2, int), p3), \
    int (*)[__ARM_mve_type_int32x4_t][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vqdmulltq_m_s16 (__ARM_mve_coerce(__p0, int32x4_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
    int (*)[__ARM_mve_type_int64x2_t][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vqdmulltq_m_s32 (__ARM_mve_coerce(__p0, int64x2_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
*************** extern void *__ARM_undef;
*** 41189,41197 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
  #define __arm_vmullbq_poly_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41269,41277 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_p_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_p_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3));})
  
  #define __arm_vmullbq_poly_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41262,41312 ****
  #define __arm_viwdupq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));})
  
  #define __arm_viwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u16 (__ARM_mve_coerce(__p0, uint32_t), p1, (const int) p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, (const int) p2));})
  
  #define __arm_viwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u32 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_viwdupq_u8(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u8 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vdwdupq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));})
  
  #define __arm_vdwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u16 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vdwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u32 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vdwdupq_u8(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u8 (__ARM_mve_coerce(__p0, uint32_t), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vshlcq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
--- 41342,41392 ----
  #define __arm_viwdupq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_viwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));})
  
  #define __arm_viwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u16 (__ARM_mve_coerce3(p0, int), p1, (const int) p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, (const int) p2));})
  
  #define __arm_viwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u32 (__ARM_mve_coerce3(p0, int), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_viwdupq_u8(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_viwdupq_n_u8 (__ARM_mve_coerce3(p0, int), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_viwdupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vdwdupq_m(p0,p1,p2,p3,p4) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2, p3, p4), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vdwdupq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_m_wb_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t *), p2, p3, p4));})
  
  #define __arm_vdwdupq_u16(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u16 (__ARM_mve_coerce3(p0, int), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u16 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vdwdupq_u32(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u32 (__ARM_mve_coerce3(p0, int), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u32 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vdwdupq_u8(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
!   int (*)[__ARM_mve_type_int_n]: __arm_vdwdupq_n_u8 (__ARM_mve_coerce3(p0, int), p1, p2), \
    int (*)[__ARM_mve_type_uint32_t_ptr]: __arm_vdwdupq_wb_u8 (__ARM_mve_coerce(__p0, uint32_t *), p1, p2));})
  
  #define __arm_vshlcq_m(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
*************** extern void *__ARM_undef;
*** 41343,41356 ****
  #define __arm_vaddlvaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vaddlvaq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vaddlvq(p0) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 41423,41436 ----
  #define __arm_vaddlvaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vaddlvaq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddlvaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddlvaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vaddlvq(p0) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 41365,41386 ****
  #define __arm_vaddvaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vaddvaq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_p_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_p_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vaddvq(p0) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
--- 41445,41466 ----
  #define __arm_vaddvaq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t)));})
  
  #define __arm_vaddvaq_p(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t]: __arm_vaddvaq_p_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t]: __arm_vaddvaq_p_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t]: __arm_vaddvaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t]: __arm_vaddvaq_p_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t]: __arm_vaddvaq_p_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t]: __arm_vaddvaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
  
  #define __arm_vaddvq(p0) ({ __typeof(p0) __p0 = (p0); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)])0, \
*************** extern void *__ARM_undef;
*** 41406,41414 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpcsq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpcsq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpcsq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
  
  #define __arm_vcmpcsq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41486,41494 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpcsq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpcsq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpcsq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vcmpcsq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41416,41424 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpcsq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpcsq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpcsq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2));})
  
  #define __arm_vcmphiq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41496,41504 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmpcsq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmpcsq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmpcsq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmpcsq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2));})
  
  #define __arm_vcmphiq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41426,41441 ****
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmphiq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmphiq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmphiq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t)));})
  
  #define __arm_vcmphiq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8_t), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16_t), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32_t), p2), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmphiq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmphiq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmphiq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
--- 41506,41521 ----
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmphiq_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t)), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmphiq_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t)), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmphiq_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t)), \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int)), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int)));})
  
  #define __arm_vcmphiq_m(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)])0, \
!   int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce3(p1, int), p2), \
!   int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_int_n]: __arm_vcmphiq_m_n_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce3(p1, int), p2), \
    int (*)[__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vcmphiq_m_u8 (__ARM_mve_coerce(__p0, uint8x16_t), __ARM_mve_coerce(__p1, uint8x16_t), p2), \
    int (*)[__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vcmphiq_m_u16 (__ARM_mve_coerce(__p0, uint16x8_t), __ARM_mve_coerce(__p1, uint16x8_t), p2), \
    int (*)[__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vcmphiq_m_u32 (__ARM_mve_coerce(__p0, uint32x4_t), __ARM_mve_coerce(__p1, uint32x4_t), p2));})
*************** extern void *__ARM_undef;
*** 41532,41565 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vmladavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vmladavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_s8 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_s16 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_s32 (__ARM_mve_coerce(__p0, int32_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaxq_u8 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaxq_u16 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaxq_u32 (__ARM_mve_coerce(__p0, uint32_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vmladavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41612,41645 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vmladavaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaq_p_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaq_p_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaq_p_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaq_p_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vmladavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int8x16_t][__ARM_mve_type_int8x16_t]: __arm_vmladavaxq_s8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int8x16_t), __ARM_mve_coerce(__p2, int8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmladavaxq_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmladavaxq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint8x16_t][__ARM_mve_type_uint8x16_t]: __arm_vmladavaxq_u8 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint8x16_t), __ARM_mve_coerce(__p2, uint8x16_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmladavaxq_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmladavaxq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vmladavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41602,41618 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_u16 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vmlaldavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_s16 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));})
  
  #define __arm_vmlaldavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41682,41698 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaq_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint16x8_t][__ARM_mve_type_uint16x8_t]: __arm_vmlaldavaq_u16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint16x8_t), __ARM_mve_coerce(__p2, uint16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vmlaldavaq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vmlaldavaxq(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int16x8_t][__ARM_mve_type_int16x8_t]: __arm_vmlaldavaxq_s16 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int16x8_t), __ARM_mve_coerce(__p2, int16x8_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vmlaldavaxq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)));})
  
  #define __arm_vmlaldavq(p0,p1) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
*************** extern void *__ARM_undef;
*** 41807,41821 ****
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vrmlaldavhaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce(__p0, int64_t), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce(__p0, uint64_t), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
--- 41887,41901 ----
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t)), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t)));})
  
  #define __arm_vrmlaldavhaq_p(p0,p1,p2,p3) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
    __typeof(p2) __p2 = (p2); \
    _Generic( (int (*)[__ARM_mve_typeid(__p0)][__ARM_mve_typeid(__p1)][__ARM_mve_typeid(__p2)])0, \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_int32x4_t][__ARM_mve_type_int32x4_t]: __arm_vrmlaldavhaq_p_s32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, int32x4_t), __ARM_mve_coerce(__p2, int32x4_t), p3), \
!   int (*)[__ARM_mve_type_int_n][__ARM_mve_type_uint32x4_t][__ARM_mve_type_uint32x4_t]: __arm_vrmlaldavhaq_p_u32 (__ARM_mve_coerce3(p0, int), __ARM_mve_coerce(__p1, uint32x4_t), __ARM_mve_coerce(__p2, uint32x4_t), p3));})
  
  #define __arm_vstrbq_scatter_offset(p0,p1,p2) ({ __typeof(p0) __p0 = (p0); \
    __typeof(p1) __p1 = (p1); \
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_mve_builtins.def gcc-13.1.0/gcc/config/arm/arm_mve_builtins.def
*** gcc-12.2.0/gcc/config/arm/arm_mve_builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_mve_builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /*  MVE builtin definitions for Arm.
!     Copyright  (C) 2019-2022 Free Software Foundation, Inc.
      Contributed by Arm.
  
      This file is part of GCC.
--- 1,5 ----
  /*  MVE builtin definitions for Arm.
!     Copyright  (C) 2019-2023 Free Software Foundation, Inc.
      Contributed by Arm.
  
      This file is part of GCC.
*************** VAR2 (UNOP_UNONE_NONE, vcvtaq_u, v8hi, v
*** 71,81 ****
  VAR2 (UNOP_UNONE_IMM, vmvnq_n_u, v8hi, v4si)
  VAR1 (UNOP_UNONE_UNONE, vrev16q_u, v16qi)
  VAR1 (UNOP_UNONE_UNONE, vaddlvq_u, v4si)
! VAR1 (UNOP_UNONE_UNONE, vctp16q, hi)
! VAR1 (UNOP_UNONE_UNONE, vctp32q, hi)
! VAR1 (UNOP_UNONE_UNONE, vctp64q, hi)
! VAR1 (UNOP_UNONE_UNONE, vctp8q, hi)
! VAR1 (UNOP_UNONE_UNONE, vpnot, hi)
  VAR2 (BINOP_NONE_NONE_NONE, vsubq_n_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, vbrsrq_n_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_IMM, vcvtq_n_to_f_s, v8hf, v4sf)
--- 71,81 ----
  VAR2 (UNOP_UNONE_IMM, vmvnq_n_u, v8hi, v4si)
  VAR1 (UNOP_UNONE_UNONE, vrev16q_u, v16qi)
  VAR1 (UNOP_UNONE_UNONE, vaddlvq_u, v4si)
! VAR1 (UNOP_PRED_UNONE, vctp16q, v8bi)
! VAR1 (UNOP_PRED_UNONE, vctp32q, v4bi)
! VAR1 (UNOP_PRED_UNONE, vctp64q, v2qi)
! VAR1 (UNOP_PRED_UNONE, vctp8q, v16bi)
! VAR1 (UNOP_PRED_PRED, vpnot, v16bi)
  VAR2 (BINOP_NONE_NONE_NONE, vsubq_n_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_NONE, vbrsrq_n_f, v8hf, v4sf)
  VAR2 (BINOP_NONE_NONE_IMM, vcvtq_n_to_f_s, v8hf, v4sf)
*************** VAR2 (BINOP_NONE_NONE_IMM, vshllbq_n_s,
*** 265,274 ****
  VAR2 (BINOP_NONE_NONE_IMM, vorrq_n_s, v8hi, v4si)
  VAR2 (BINOP_NONE_NONE_IMM, vbicq_n_s, v8hi, v4si)
  VAR1 (BINOP_UNONE_UNONE_UNONE, vrmlaldavhq_u, v4si)
! VAR1 (BINOP_UNONE_UNONE_UNONE, vctp8q_m, hi)
! VAR1 (BINOP_UNONE_UNONE_UNONE, vctp64q_m, hi)
! VAR1 (BINOP_UNONE_UNONE_UNONE, vctp32q_m, hi)
! VAR1 (BINOP_UNONE_UNONE_UNONE, vctp16q_m, hi)
  VAR1 (BINOP_UNONE_UNONE_UNONE, vaddlvaq_u, v4si)
  VAR1 (BINOP_NONE_NONE_NONE, vrmlsldavhxq_s, v4si)
  VAR1 (BINOP_NONE_NONE_NONE, vrmlsldavhq_s, v4si)
--- 265,274 ----
  VAR2 (BINOP_NONE_NONE_IMM, vorrq_n_s, v8hi, v4si)
  VAR2 (BINOP_NONE_NONE_IMM, vbicq_n_s, v8hi, v4si)
  VAR1 (BINOP_UNONE_UNONE_UNONE, vrmlaldavhq_u, v4si)
! VAR1 (BINOP_PRED_UNONE_PRED, vctp8q_m, v16bi)
! VAR1 (BINOP_PRED_UNONE_PRED, vctp64q_m, v2qi)
! VAR1 (BINOP_PRED_UNONE_PRED, vctp32q_m, v4bi)
! VAR1 (BINOP_PRED_UNONE_PRED, vctp16q_m, v8bi)
  VAR1 (BINOP_UNONE_UNONE_UNONE, vaddlvaq_u, v4si)
  VAR1 (BINOP_NONE_NONE_NONE, vrmlsldavhxq_s, v4si)
  VAR1 (BINOP_NONE_NONE_NONE, vrmlsldavhq_s, v4si)
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_mve_types.h gcc-13.1.0/gcc/config/arm/arm_mve_types.h
*** gcc-12.2.0/gcc/config/arm/arm_mve_types.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_mve_types.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
--- 1,6 ----
  /* Arm MVE intrinsics include file.
  
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Arm.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_neon.h gcc-13.1.0/gcc/config/arm/arm_neon.h
*** gcc-12.2.0/gcc/config/arm/arm_neon.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_neon.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,6 ----
  /* ARM NEON intrinsics include file.
  
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_neon_builtins.def gcc-13.1.0/gcc/config/arm/arm_neon_builtins.def
*** gcc-12.2.0/gcc/config/arm/arm_neon_builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_neon_builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* NEON builtin definitions for ARM.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
--- 1,5 ----
  /* NEON builtin definitions for ARM.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
  
     This file is part of GCC.
*************** VAR1 (UNOP, vcvtv4hf, v4sf)
*** 264,270 ****
  VAR10 (TERNOP, vbsl,
  	 v8qi, v4hi, v2si, v2sf, di, v16qi, v8hi, v4si, v4sf, v2di)
  VAR2 (TERNOP, vbsl, v8hf, v4hf)
- VAR2 (UNOP, copysignf, v2sf, v4sf)
  VAR2 (UNOP, vrintn, v2sf, v4sf)
  VAR2 (UNOP, vrinta, v2sf, v4sf)
  VAR2 (UNOP, vrintp, v2sf, v4sf)
--- 264,269 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/arm_vfp_builtins.def gcc-13.1.0/gcc/config/arm/arm_vfp_builtins.def
*** gcc-12.2.0/gcc/config/arm/arm_vfp_builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/arm_vfp_builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* VFP instruction builtin definitions.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
--- 1,5 ----
  /* VFP instruction builtin definitions.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/bpabi.h gcc-13.1.0/gcc/config/arm/bpabi.h
*** gcc-12.2.0/gcc/config/arm/bpabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/bpabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for ARM BPABI targets.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM BPABI targets.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/common.md gcc-13.1.0/gcc/config/arm/common.md
*** gcc-12.2.0/gcc/config/arm/common.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/common.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Common predicate definitions for ARM, Thumb and AArch64
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;; Contributed by Fujitsu Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Common predicate definitions for ARM, Thumb and AArch64
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;; Contributed by Fujitsu Ltd.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/constraints.md gcc-13.1.0/gcc/config/arm/constraints.md
*** gcc-12.2.0/gcc/config/arm/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for ARM and Thumb
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for ARM and Thumb
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 32,38 ****
  
  ;; The following multi-letter normal constraints have been used:
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
! ;;			 Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
  ;; in Thumb-2 state: Ha, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra,
  ;;		     Rg, Ri
--- 32,38 ----
  
  ;; The following multi-letter normal constraints have been used:
  ;; in ARM/Thumb-2 state: Da, Db, Dc, Dd, Dn, DN, Dm, Dl, DL, Do, Dv, Dy, Di,
! ;;			 Dj, Ds, Dt, Dp, Dz, Tu, Te
  ;; in Thumb-1 state: Pa, Pb, Pc, Pd, Pe
  ;; in Thumb-2 state: Ha, Pj, PJ, Ps, Pt, Pu, Pv, Pw, Px, Py, Pz, Rd, Rf, Rb, Ra,
  ;;		     Rg, Ri
***************
*** 316,322 ****
   "@internal
    In ARM/Thumb-2 state with MVE a constant vector of booleans."
   (and (match_code "const_vector")
!       (match_test "TARGET_HAVE_MVE && GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL")))
  
  (define_constraint "Da"
   "@internal
--- 316,322 ----
   "@internal
    In ARM/Thumb-2 state with MVE a constant vector of booleans."
   (and (match_code "const_vector")
!       (match_test "TARGET_HAVE_MVE && VALID_MVE_PRED_MODE (mode)")))
  
  (define_constraint "Da"
   "@internal
***************
*** 354,359 ****
--- 354,367 ----
   (and (match_code "const_double,const_int")
        (match_test "TARGET_32BIT && arm_const_double_by_immediates (op)")))
  
+ (define_constraint "Dj"
+   "@internal
+    In cores with the v6t2 ISA, a constant with exactly one consecutive
+    string of zero bits."
+   (and (match_code "const_int")
+        (match_test "arm_arch_thumb2
+ 		    && exact_log2 (~ival + (~ival & -~ival)) >= 0")))
+ 
  (define_constraint "Dm"
   "@internal
    In ARM/Thumb-2 state a const_vector which can be loaded with a Neon vmov
***************
*** 466,471 ****
--- 474,484 ----
   (and (match_code "mem")
        (match_test "TARGET_32BIT && arm_coproc_mem_operand (op, FALSE)")))
  
+ (define_memory_constraint "Ug"
+  "@internal
+   In Thumb-2 state a valid MVE struct load/store address."
+  (match_operand 0 "mve_struct_operand"))
+ 
  (define_memory_constraint "Uj"
   "@internal
    In ARM/Thumb-2 state a VFP load/store address that supports writeback
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a15-neon.md gcc-13.1.0/gcc/config/arm/cortex-a15-neon.md
*** gcc-12.2.0/gcc/config/arm/cortex-a15-neon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a15-neon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A15 NEON pipeline description
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A15 NEON pipeline description
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a15.md gcc-13.1.0/gcc/config/arm/cortex-a15.md
*** gcc-12.2.0/gcc/config/arm/cortex-a15.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a15.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A15 pipeline description
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
  
--- 1,5 ----
  ;; ARM Cortex-A15 pipeline description
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; Written by Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a17-neon.md gcc-13.1.0/gcc/config/arm/cortex-a17-neon.md
*** gcc-12.2.0/gcc/config/arm/cortex-a17-neon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a17-neon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A17 NEON pipeline description
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A17 NEON pipeline description
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a17.md gcc-13.1.0/gcc/config/arm/cortex-a17.md
*** gcc-12.2.0/gcc/config/arm/cortex-a17.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a17.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A17 pipeline description
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A17 pipeline description
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a5.md gcc-13.1.0/gcc/config/arm/cortex-a5.md
*** gcc-12.2.0/gcc/config/arm/cortex-a5.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a5.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A5 pipeline description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-A5 pipeline description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a53.md gcc-13.1.0/gcc/config/arm/cortex-a53.md
*** gcc-12.2.0/gcc/config/arm/cortex-a53.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a53.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A53 pipeline description
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A53 pipeline description
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a57.md gcc-13.1.0/gcc/config/arm/cortex-a57.md
*** gcc-12.2.0/gcc/config/arm/cortex-a57.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a57.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A57 pipeline description
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A57 pipeline description
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a7.md gcc-13.1.0/gcc/config/arm/cortex-a7.md
*** gcc-12.2.0/gcc/config/arm/cortex-a7.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a7.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A7 pipeline description
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;; Based on cortex-a5.md which was originally contributed by CodeSourcery.
--- 1,5 ----
  ;; ARM Cortex-A7 pipeline description
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by ARM Ltd.
  ;; Based on cortex-a5.md which was originally contributed by CodeSourcery.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a8-neon.md gcc-13.1.0/gcc/config/arm/cortex-a8-neon.md
*** gcc-12.2.0/gcc/config/arm/cortex-a8-neon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a8-neon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A8 NEON scheduling description.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-A8 NEON scheduling description.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a8.md gcc-13.1.0/gcc/config/arm/cortex-a8.md
*** gcc-12.2.0/gcc/config/arm/cortex-a8.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a8.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A8 scheduling description.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-A8 scheduling description.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a9-neon.md gcc-13.1.0/gcc/config/arm/cortex-a9-neon.md
*** gcc-12.2.0/gcc/config/arm/cortex-a9-neon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a9-neon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;;
  ;; Neon pipeline description contributed by ARM Ltd.
  ;;
--- 1,5 ----
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;;
  ;; Neon pipeline description contributed by ARM Ltd.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-a9.md gcc-13.1.0/gcc/config/arm/cortex-a9.md
*** gcc-12.2.0/gcc/config/arm/cortex-a9.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-a9.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Originally written by CodeSourcery for VFP.
  ;;
  ;; Rewritten by Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
--- 1,5 ----
  ;; ARM Cortex-A9 pipeline description
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Originally written by CodeSourcery for VFP.
  ;;
  ;; Rewritten by Ramana Radhakrishnan <ramana.radhakrishnan@arm.com>
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-m4-fpu.md gcc-13.1.0/gcc/config/arm/cortex-m4-fpu.md
*** gcc-12.2.0/gcc/config/arm/cortex-m4-fpu.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-m4-fpu.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-M4 FPU pipeline description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-M4 FPU pipeline description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-m4.md gcc-13.1.0/gcc/config/arm/cortex-m4.md
*** gcc-12.2.0/gcc/config/arm/cortex-m4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-m4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-M4 pipeline description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-M4 pipeline description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-m7.md gcc-13.1.0/gcc/config/arm/cortex-m7.md
*** gcc-12.2.0/gcc/config/arm/cortex-m7.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-m7.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-M7 pipeline description
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Cortex-M7 pipeline description
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-r4.md gcc-13.1.0/gcc/config/arm/cortex-r4.md
*** gcc-12.2.0/gcc/config/arm/cortex-r4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-r4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-R4 scheduling description.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-R4 scheduling description.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/cortex-r4f.md gcc-13.1.0/gcc/config/arm/cortex-r4f.md
*** gcc-12.2.0/gcc/config/arm/cortex-r4f.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/cortex-r4f.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Cortex-R4F VFP pipeline description
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Cortex-R4F VFP pipeline description
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/crypto.def gcc-13.1.0/gcc/config/arm/crypto.def
*** gcc-12.2.0/gcc/config/arm/crypto.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/crypto.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Cryptographic instruction builtin definitions.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
--- 1,5 ----
  /* Cryptographic instruction builtin definitions.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by ARM Ltd.
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/crypto.md gcc-13.1.0/gcc/config/arm/crypto.md
*** gcc-12.2.0/gcc/config/arm/crypto.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/crypto.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARMv8-A crypto patterns.
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARMv8-A crypto patterns.
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/driver-arm.cc gcc-13.1.0/gcc/config/arm/driver-arm.cc
*** gcc-12.2.0/gcc/config/arm/driver-arm.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/driver-arm.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/elf.h gcc-13.1.0/gcc/config/arm/elf.h
*** gcc-12.2.0/gcc/config/arm/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     For ARM with ELF obj format.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org> and
     Catherine Moore <clm@cygnus.com>
     
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     For ARM with ELF obj format.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org> and
     Catherine Moore <clm@cygnus.com>
     
diff -Nrcpad gcc-12.2.0/gcc/config/arm/exynos-m1.md gcc-13.1.0/gcc/config/arm/exynos-m1.md
*** gcc-12.2.0/gcc/config/arm/exynos-m1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/exynos-m1.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Samsung Exynos M1 pipeline description
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Samsung Exynos M1 pipeline description
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/fa526.md gcc-13.1.0/gcc/config/arm/fa526.md
*** gcc-12.2.0/gcc/config/arm/fa526.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/fa526.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Faraday FA526 Pipeline Description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA526 Pipeline Description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/fa606te.md gcc-13.1.0/gcc/config/arm/fa606te.md
*** gcc-12.2.0/gcc/config/arm/fa606te.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/fa606te.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Faraday FA606TE Pipeline Description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA606TE Pipeline Description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/fa626te.md gcc-13.1.0/gcc/config/arm/fa626te.md
*** gcc-12.2.0/gcc/config/arm/fa626te.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/fa626te.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/fa726te.md gcc-13.1.0/gcc/config/arm/fa726te.md
*** gcc-12.2.0/gcc/config/arm/fa726te.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/fa726te.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Faraday FA726TE Pipeline Description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA726TE Pipeline Description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Written by I-Jui Sung, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/fmp626.md gcc-13.1.0/gcc/config/arm/fmp626.md
*** gcc-12.2.0/gcc/config/arm/fmp626.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/fmp626.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Faraday FA626TE Pipeline Description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Written by Mingfeng Wu, based on ARM926EJ-S Pipeline Description.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/freebsd.h gcc-13.1.0/gcc/config/arm/freebsd.h
*** gcc-12.2.0/gcc/config/arm/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, FreeBSD/arm version.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, FreeBSD/arm version.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/fuchsia-elf.h gcc-13.1.0/gcc/config/arm/fuchsia-elf.h
*** gcc-12.2.0/gcc/config/arm/fuchsia-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/fuchsia-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for ARM Fuchsia ELF targets.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Contributed by Google.
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM Fuchsia ELF targets.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Contributed by Google.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/iterators.md gcc-13.1.0/gcc/config/arm/iterators.md
*** gcc-12.2.0/gcc/config/arm/iterators.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/iterators.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Code and mode itertator and attribute definitions for the ARM backend
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Code and mode itertator and attribute definitions for the ARM backend
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 272,279 ****
  (define_mode_iterator MVE_2 [V16QI V8HI V4SI])
  (define_mode_iterator MVE_5 [V8HI V4SI])
  (define_mode_iterator MVE_6 [V8HI V4SI])
! (define_mode_iterator MVE_7 [V16BI V8BI V4BI])
! (define_mode_iterator MVE_7_HI [HI V16BI V8BI V4BI])
  
  ;;----------------------------------------------------------------------------
  ;; Code iterators
--- 272,279 ----
  (define_mode_iterator MVE_2 [V16QI V8HI V4SI])
  (define_mode_iterator MVE_5 [V8HI V4SI])
  (define_mode_iterator MVE_6 [V8HI V4SI])
! (define_mode_iterator MVE_7 [V16BI V8BI V4BI V2QI])
! (define_mode_iterator MVE_7_HI [HI V16BI V8BI V4BI V2QI])
  
  ;;----------------------------------------------------------------------------
  ;; Code iterators
***************
*** 949,957 ****
  (define_mode_attr earlyclobber_32 [(V16QI "=w") (V8HI "=w") (V4SI "=&w")
  						(V8HF "=w") (V4SF "=&w")])
  (define_mode_attr MVE_VPRED [(V16QI "V16BI") (V8HI "V8BI") (V4SI "V4BI")
!                              (V2DI "HI") (V8HF "V8BI")   (V4SF "V4BI")])
  (define_mode_attr MVE_vpred [(V16QI "v16bi") (V8HI "v8bi") (V4SI "v4bi")
!                              (V2DI "hi") (V8HF "v8bi")   (V4SF "v4bi")])
  
  ;;----------------------------------------------------------------------------
  ;; Code attributes
--- 949,960 ----
  (define_mode_attr earlyclobber_32 [(V16QI "=w") (V8HI "=w") (V4SI "=&w")
  						(V8HF "=w") (V4SF "=&w")])
  (define_mode_attr MVE_VPRED [(V16QI "V16BI") (V8HI "V8BI") (V4SI "V4BI")
! 			     (V8HF "V8BI")   (V4SF "V4BI") (V2DI "V2QI")])
  (define_mode_attr MVE_vpred [(V16QI "v16bi") (V8HI "v8bi") (V4SI "v4bi")
! 			     (V8HF "v8bi")   (V4SF "v4bi")
! 			     (V16BI "v16bi") (V8BI "v8bi") (V4BI "v4bi")
! 			     (V2QI "v2qi")])
! (define_mode_attr MVE_vctp [(V16BI "8") (V8BI "16") (V4BI "32") (V2QI "64")])
  
  ;;----------------------------------------------------------------------------
  ;; Code attributes
***************
*** 1150,1155 ****
--- 1153,1165 ----
                                (UNSPEC_VRINTA "unconditional") (UNSPEC_VRINTM "unconditional")
                                (UNSPEC_VRINTR "nocond") (UNSPEC_VRINTX "nocond")])
  
+ (define_int_attr nvrint_pattern [(UNSPEC_NVRINTZ "btrunc")
+ 				 (UNSPEC_NVRINTP "ceil")
+ 				 (UNSPEC_NVRINTA "round")
+ 				 (UNSPEC_NVRINTM "floor")
+ 				 (UNSPEC_NVRINTX "rint")
+ 				 (UNSPEC_NVRINTN "roundeven")])
+ 
  (define_int_attr nvrint_variant [(UNSPEC_NVRINTZ "z") (UNSPEC_NVRINTP "p")
                                  (UNSPEC_NVRINTA "a") (UNSPEC_NVRINTM "m")
                                  (UNSPEC_NVRINTX "x") (UNSPEC_NVRINTN "n")])
***************
*** 1454,1464 ****
  		       (VADCIQ_M_S "s") (SQRSHRL_64 "64") (SQRSHRL_48 "48")
  		       (UQRSHLL_64 "64") (UQRSHLL_48 "48") (VSHLCQ_M_S "s")
  		       (VSHLCQ_M_U "u")])
- 
- (define_int_attr mode1 [(VCTP8Q "8") (VCTP16Q "16") (VCTP32Q "32")
- 			(VCTP64Q "64") (VCTP8Q_M "8") (VCTP16Q_M "16")
- 			(VCTP32Q_M "32") (VCTP64Q_M "64")])
- 
  ;; Both kinds of return insn.
  (define_code_iterator RETURNS [return simple_return])
  (define_code_attr return_str [(return "") (simple_return "simple_")])
--- 1464,1469 ----
***************
*** 1550,1557 ****
  (define_int_iterator VCVTNQ [VCVTNQ_S VCVTNQ_U])
  (define_int_iterator VCVTMQ [VCVTMQ_S VCVTMQ_U])
  (define_int_iterator VADDLVQ [VADDLVQ_U VADDLVQ_S])
- (define_int_iterator VCTPQ [VCTP8Q VCTP16Q VCTP32Q VCTP64Q])
- (define_int_iterator VCTPQ_M [VCTP8Q_M VCTP16Q_M VCTP32Q_M VCTP64Q_M])
  (define_int_iterator VCVTQ_N_TO_F [VCVTQ_N_TO_F_S VCVTQ_N_TO_F_U])
  (define_int_iterator VCREATEQ [VCREATEQ_U VCREATEQ_S])
  (define_int_iterator VSHRQ_N [VSHRQ_N_S VSHRQ_N_U])
--- 1555,1560 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/iwmmxt.md gcc-13.1.0/gcc/config/arm/iwmmxt.md
*** gcc-12.2.0/gcc/config/arm/iwmmxt.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/iwmmxt.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/iwmmxt2.md gcc-13.1.0/gcc/config/arm/iwmmxt2.md
*** gcc-12.2.0/gcc/config/arm/iwmmxt2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/iwmmxt2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Patterns for the Intel Wireless MMX technology architecture.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/ldmstm.md gcc-13.1.0/gcc/config/arm/ldmstm.md
*** gcc-12.2.0/gcc/config/arm/ldmstm.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/ldmstm.md	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* ARM ldm/stm instruction patterns.  This file was automatically generated
     using arm-ldmstm.ml.  Please do not edit manually.
  
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,7 ----
  /* ARM ldm/stm instruction patterns.  This file was automatically generated
     using arm-ldmstm.ml.  Please do not edit manually.
  
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/ldrdstrd.md gcc-13.1.0/gcc/config/arm/ldrdstrd.md
*** gcc-12.2.0/gcc/config/arm/ldrdstrd.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/ldrdstrd.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; ARM ldrd/strd peephole optimizations.
  ;;
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;
  ;; Written by Greta Yorsh <greta.yorsh@arm.com>
  
--- 1,6 ----
  ;; ARM ldrd/strd peephole optimizations.
  ;;
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;
  ;; Written by Greta Yorsh <greta.yorsh@arm.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/linux-eabi.h gcc-13.1.0/gcc/config/arm/linux-eabi.h
*** gcc-12.2.0/gcc/config/arm/linux-eabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/linux-eabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for ARM GNU/Linux EABI targets.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM GNU/Linux EABI targets.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
***************
*** 30,38 ****
      }						\
    while (false)
  
- #define EXTRA_TARGET_D_OS_VERSIONS()		\
-   ANDROID_TARGET_D_OS_VERSIONS();
- 
  /* We default to a soft-float ABI so that binaries can run on all
     target hardware.  If you override this to use the hard-float ABI then
     change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well.  */
--- 30,35 ----
***************
*** 124,130 ****
  
  #undef	ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
    LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
  
  /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
--- 121,127 ----
  
  #undef	ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} "	\
    LINUX_OR_ANDROID_LD (GNU_USER_TARGET_ENDFILE_SPEC, ANDROID_ENDFILE_SPEC)
  
  /* Use the default LIBGCC_SPEC, not the version in linux-elf.h, as we
diff -Nrcpad gcc-12.2.0/gcc/config/arm/linux-elf.h gcc-13.1.0/gcc/config/arm/linux-elf.h
*** gcc-12.2.0/gcc/config/arm/linux-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/linux-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for ARM running Linux-based GNU systems using ELF
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for ARM running Linux-based GNU systems using ELF
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/linux-gas.h gcc-13.1.0/gcc/config/arm/linux-gas.h
*** gcc-12.2.0/gcc/config/arm/linux-gas.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/linux-gas.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     ARM Linux-based GNU systems version.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Russell King  <rmk92@ecs.soton.ac.uk>.
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     ARM Linux-based GNU systems version.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Russell King  <rmk92@ecs.soton.ac.uk>.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/marvell-f-iwmmxt.md gcc-13.1.0/gcc/config/arm/marvell-f-iwmmxt.md
*** gcc-12.2.0/gcc/config/arm/marvell-f-iwmmxt.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/marvell-f-iwmmxt.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Marvell WMMX2 pipeline description
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Marvell WMMX2 pipeline description
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Written by Marvell, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/marvell-pj4.md gcc-13.1.0/gcc/config/arm/marvell-pj4.md
*** gcc-12.2.0/gcc/config/arm/marvell-pj4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/marvell-pj4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Marvell ARM Processor Pipeline Description
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Marvell.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Marvell ARM Processor Pipeline Description
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Marvell.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/mmintrin.h gcc-13.1.0/gcc/config/arm/mmintrin.h
*** gcc-12.2.0/gcc/config/arm/mmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/mmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/mve.md gcc-13.1.0/gcc/config/arm/mve.md
*** gcc-12.2.0/gcc/config/arm/mve.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/mve.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Arm M-profile Vector Extension Machine Description
! ;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Arm M-profile Vector Extension Machine Description
! ;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 18,83 ****
  ;; <http://www.gnu.org/licenses/>.
  
  (define_insn "*mve_mov<mode>"
!   [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w,w,r,w,Ux,w")
! 	(match_operand:MVE_types 1 "general_operand" "w,r,w,Dn,UxUi,r,Dm,w,Ul"))]
    "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
  {
!   if (which_alternative == 3 || which_alternative == 6)
      {
!       int width, is_valid;
!       static char templ[40];
  
!       is_valid = simd_immediate_valid_for_move (operands[1], <MODE>mode,
! 	&operands[1], &width);
  
!       gcc_assert (is_valid != 0);
  
!       if (width == 0)
! 	return "vmov.f32\t%q0, %1  @ <mode>";
!       else
! 	sprintf (templ, "vmov.i%d\t%%q0, %%x1  @ <mode>", width);
!       return templ;
!     }
  
!   if (which_alternative == 4 || which_alternative == 7)
!     {
!       if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode || <MODE>mode == TImode)
! 	{
! 	  if (which_alternative == 7)
! 	    output_asm_insn ("vstrw.32\t%q1, %E0", operands);
! 	  else
! 	    output_asm_insn ("vldrw.u32\t%q0, %E1",operands);
! 	}
        else
! 	{
! 	  if (which_alternative == 7)
! 	    output_asm_insn ("vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0", operands);
! 	  else
! 	    output_asm_insn ("vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1", operands);
! 	}
!       return "";
!     }
!   switch (which_alternative)
!     {
!     case 0:
!       return "vmov\t%q0, %q1";
!     case 1:
!       return "vmov\t%e0, %Q1, %R1  @ <mode>\;vmov\t%f0, %J1, %K1";
!     case 2:
!       return "vmov\t%Q0, %R0, %e1  @ <mode>\;vmov\t%J0, %K0, %f1";
!     case 5:
        return output_move_quad (operands);
!     case 8:
  	return output_move_neon (operands);
      default:
        gcc_unreachable ();
        return "";
      }
  }
!   [(set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_move,mve_store,mve_load")
!    (set_attr "length" "4,8,8,4,8,8,4,4,4")
!    (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*,*")
!    (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*,*")])
  
  (define_insn "*mve_vdup<mode>"
    [(set (match_operand:MVE_vecs 0 "s_register_operand" "=w")
--- 18,90 ----
  ;; <http://www.gnu.org/licenses/>.
  
  (define_insn "*mve_mov<mode>"
!   [(set (match_operand:MVE_types 0 "nonimmediate_operand" "=w,w,r,w   , w,   r,Ux,w")
! 	(match_operand:MVE_types 1 "general_operand"      " w,r,w,DnDm,UxUi,r,w, Ul"))]
    "TARGET_HAVE_MVE || TARGET_HAVE_MVE_FLOAT"
  {
!   switch (which_alternative)
      {
!     case 0:  /* [w,w].  */
!       return "vmov\t%q0, %q1";
  
!     case 1:  /* [w,r].  */
!       return "vmov\t%e0, %Q1, %R1  %@ <mode>\;vmov\t%f0, %J1, %K1";
  
!     case 2:  /* [r,w].  */
!       return "vmov\t%Q0, %R0, %e1  %@ <mode>\;vmov\t%J0, %K0, %f1";
  
!     case 3:  /* [w,DnDm].  */
!       {
! 	int width, is_valid;
  
! 	is_valid = simd_immediate_valid_for_move (operands[1], <MODE>mode,
! 						  &operands[1], &width);
! 
! 	gcc_assert (is_valid);
! 
! 	if (width == 0)
! 	  return "vmov.f32\t%q0, %1  %@ <mode>";
! 	else
! 	  {
! 	    const int templ_size = 40;
! 	    static char templ[templ_size];
! 	    if (snprintf (templ, templ_size,
! 			  "vmov.i%d\t%%q0, %%x1  %%@ <mode>", width)
! 		> templ_size)
! 	      abort ();
! 	    return templ;
! 	  }
!       }
! 
!     case 4:  /* [w,UxUi].  */
!       if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode
! 	  || <MODE>mode == TImode)
! 	return "vldrw.u32\t%q0, %E1";
        else
! 	return "vldr<V_sz_elem1>.<V_sz_elem>\t%q0, %E1";
! 
!     case 5:  /* [r,r].  */
        return output_move_quad (operands);
! 
!     case 6:  /* [Ux,w].  */
!       if (<MODE>mode == V2DFmode || <MODE>mode == V2DImode
! 	  || <MODE>mode == TImode)
! 	return "vstrw.32\t%q1, %E0";
!       else
! 	return "vstr<V_sz_elem1>.<V_sz_elem>\t%q1, %E0";
! 
!     case 7:  /* [w,Ul].  */
  	return output_move_neon (operands);
+ 
      default:
        gcc_unreachable ();
        return "";
      }
  }
!   [(set_attr "type" "mve_move,mve_move,mve_move,mve_move,mve_load,multiple,mve_store,mve_load")
!    (set_attr "length" "4,8,8,4,4,8,4,8")
!    (set_attr "thumb2_pool_range" "*,*,*,*,1018,*,*,*")
!    (set_attr "neg_pool_range" "*,*,*,*,996,*,*,*")])
  
  (define_insn "*mve_vdup<mode>"
    [(set (match_operand:MVE_vecs 0 "s_register_operand" "=w")
***************
*** 92,98 ****
  ;; [vst4q])
  ;;
  (define_insn "mve_vst4q<mode>"
!   [(set (match_operand:XI 0 "neon_struct_operand" "=Um")
  	(unspec:XI [(match_operand:XI 1 "s_register_operand" "w")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VST4Q))
--- 99,105 ----
  ;; [vst4q])
  ;;
  (define_insn "mve_vst4q<mode>"
!   [(set (match_operand:XI 0 "mve_struct_operand" "=Ug")
  	(unspec:XI [(match_operand:XI 1 "s_register_operand" "w")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VST4Q))
***************
*** 245,251 ****
  	(neg:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vneg.f%#<V_sz_elem>  %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
--- 252,258 ----
  	(neg:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vneg.f%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 259,265 ****
  	 VDUPQ_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vdup.%#<V_sz_elem>   %q0, %1"
    [(set_attr "type" "mve_move")
  ])
  
--- 266,272 ----
  	 VDUPQ_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vdup.%#<V_sz_elem>\t%q0, %1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 272,278 ****
  	(abs:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vabs.f%#<V_sz_elem>  %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
--- 279,285 ----
  	(abs:MVE_0 (match_operand:MVE_0 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vabs.f%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 367,373 ****
  	 VQNEGQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vqneg.s%#<V_sz_elem> %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
--- 374,380 ----
  	 VQNEGQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vqneg.s%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 381,387 ****
  	 VQABSQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vqabs.s%#<V_sz_elem> %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
--- 388,394 ----
  	 VQABSQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vqabs.s%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 394,400 ****
  	(neg:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vneg.s%#<V_sz_elem>  %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
--- 401,407 ----
  	(neg:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vneg.s%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 428,434 ****
  	 VDUPQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "vdup.%#<V_sz_elem>   %q0, %1"
    [(set_attr "type" "mve_move")
  ])
  
--- 435,441 ----
  	 VDUPQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "vdup.%#<V_sz_elem>\t%q0, %1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 441,447 ****
  	(clz:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vclz.i%#<V_sz_elem>  %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  (define_expand "mve_vclzq_u<mode>"
--- 448,454 ----
  	(clz:MVE_2 (match_operand:MVE_2 1 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vclz.i%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  (define_expand "mve_vclzq_u<mode>"
***************
*** 462,468 ****
  	 VCLSQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vcls.s%#<V_sz_elem>  %q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
--- 469,475 ----
  	 VCLSQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vcls.s%#<V_sz_elem>\t%q0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 629,659 ****
  	 VADDLVQ))
    ]
    "TARGET_HAVE_MVE"
!   "vaddlv.<supf>32 %Q0, %R0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vctp8q vctp16q vctp32q vctp64q])
  ;;
! (define_insn "mve_vctp<mode1>qhi"
    [
!    (set (match_operand:HI 0 "vpr_register_operand" "=Up")
! 	(unspec:HI [(match_operand:SI 1 "s_register_operand" "r")]
! 	VCTPQ))
    ]
    "TARGET_HAVE_MVE"
!   "vctp.<mode1> %1"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vpnot])
  ;;
! (define_insn "mve_vpnothi"
    [
!    (set (match_operand:HI 0 "vpr_register_operand" "=Up")
! 	(unspec:HI [(match_operand:HI 1 "vpr_register_operand" "0")]
  	 VPNOT))
    ]
    "TARGET_HAVE_MVE"
--- 636,666 ----
  	 VADDLVQ))
    ]
    "TARGET_HAVE_MVE"
!   "vaddlv.<supf>32\t%Q0, %R0, %q1"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vctp8q vctp16q vctp32q vctp64q])
  ;;
! (define_insn "mve_vctp<MVE_vctp>q<MVE_vpred>"
    [
!    (set (match_operand:MVE_7 0 "vpr_register_operand" "=Up")
! 	(unspec:MVE_7 [(match_operand:SI 1 "s_register_operand" "r")]
! 	VCTP))
    ]
    "TARGET_HAVE_MVE"
!   "vctp.<MVE_vctp> %1"
    [(set_attr "type" "mve_move")
  ])
  
  ;;
  ;; [vpnot])
  ;;
! (define_insn "mve_vpnotv16bi"
    [
!    (set (match_operand:V16BI 0 "vpr_register_operand" "=Up")
! 	(unspec:V16BI [(match_operand:V16BI 1 "vpr_register_operand" "0")]
  	 VPNOT))
    ]
    "TARGET_HAVE_MVE"
***************
*** 672,678 ****
  	 VSUBQ_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vsub.f<V_sz_elem>  %q0, %q1, %2"
    [(set_attr "type" "mve_move")
  ])
  
--- 679,685 ----
  	 VSUBQ_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vsub.f<V_sz_elem>\t%q0, %q1, %2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 716,722 ****
  	 VCREATEQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 723,729 ----
  	 VCREATEQ_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 731,737 ****
  	 VCREATEQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmov %q0[2], %q0[0], %Q2, %Q1\;vmov %q0[3], %q0[1], %R2, %R1"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 738,744 ----
  	 VCREATEQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmov %q0[2], %q0[0], %Q1, %Q2\;vmov %q0[3], %q0[1], %R1, %R2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 810,816 ****
  	 VADDLVQ_P))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vaddlvt.<supf>32 %Q0, %R0, %q1"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 817,823 ----
  	 VADDLVQ_P))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vaddlvt.<supf>32\t%Q0, %R0, %q1"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 824,830 ****
  		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vcmp.<mve_cmp_type>%#<V_sz_elem>  <mve_cmp_op>, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 831,837 ----
  		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vcmp.<mve_cmp_type>%#<V_sz_elem>\t<mve_cmp_op>, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 834,841 ****
  (define_insn "mve_vcmp<mve_cmp_op>q_n_<mode>"
    [
     (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
! 	(MVE_COMPARISONS:<MVE_VPRED> (match_operand:MVE_2 1 "s_register_operand" "w")
! 		    (match_operand:<V_elem> 2 "s_register_operand" "r")))
    ]
    "TARGET_HAVE_MVE"
    "vcmp.<mve_cmp_type>%#<V_sz_elem>	<mve_cmp_op>, %q1, %2"
--- 841,849 ----
  (define_insn "mve_vcmp<mve_cmp_op>q_n_<mode>"
    [
     (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
! 	(MVE_COMPARISONS:<MVE_VPRED>
! 	 (match_operand:MVE_2 1 "s_register_operand" "w")
! 	 (vec_duplicate:MVE_2 (match_operand:<V_elem> 2 "s_register_operand" "r"))))
    ]
    "TARGET_HAVE_MVE"
    "vcmp.<mve_cmp_type>%#<V_sz_elem>	<mve_cmp_op>, %q1, %2"
***************
*** 872,878 ****
  	 VADDQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "vadd.i%#<V_sz_elem>	%q0, %q1, %2"
    [(set_attr "type" "mve_move")
  ])
  
--- 880,886 ----
  	 VADDQ_N))
    ]
    "TARGET_HAVE_MVE"
!   "vadd.i%#<V_sz_elem>\t%q0, %q1, %2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 887,893 ****
  	 VADDVAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vaddva.<supf>%#<V_sz_elem>	%0, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 895,901 ----
  	 VADDVAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vaddva.<supf>%#<V_sz_elem>\t%0, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 1617,1623 ****
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:SI 2 "mve_imm_7" "Ra")]
  	 VQSHLUQ_N_S))
    ]
    "TARGET_HAVE_MVE"
--- 1625,1631 ----
    [
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 		       (match_operand:SI 2 "<MVE_pred>" "<MVE_constraint>")]
  	 VQSHLUQ_N_S))
    ]
    "TARGET_HAVE_MVE"
***************
*** 1827,1833 ****
  	 VADDLVAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vaddlva.<supf>32 %Q0, %R0, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 1835,1841 ----
  	 VADDLVAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vaddlva.<supf>32\t%Q0, %R0, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 1842,1848 ****
  	 VADDQ_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vadd.f%#<V_sz_elem>	%q0, %q1, %2"
    [(set_attr "type" "mve_move")
  ])
  
--- 1850,1856 ----
  	 VADDQ_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vadd.f%#<V_sz_elem>\t%q0, %q1, %2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 1924,1931 ****
  (define_insn "@mve_vcmp<mve_cmp_op>q_n_f<mode>"
    [
     (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
! 	(MVE_FP_COMPARISONS:<MVE_VPRED> (match_operand:MVE_0 1 "s_register_operand" "w")
! 			       (match_operand:<V_elem> 2 "s_register_operand" "r")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vcmp.f%#<V_sz_elem>	<mve_cmp_op>, %q1, %2"
--- 1932,1940 ----
  (define_insn "@mve_vcmp<mve_cmp_op>q_n_f<mode>"
    [
     (set (match_operand:<MVE_VPRED> 0 "vpr_register_operand" "=Up")
! 	(MVE_FP_COMPARISONS:<MVE_VPRED>
! 	 (match_operand:MVE_0 1 "s_register_operand" "w")
! 	 (vec_duplicate:MVE_0 (match_operand:<V_elem> 2 "s_register_operand" "r"))))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
    "vcmp.f%#<V_sz_elem>	<mve_cmp_op>, %q1, %2"
***************
*** 1950,1964 ****
  ;;
  ;; [vctp8q_m vctp16q_m vctp32q_m vctp64q_m])
  ;;
! (define_insn "mve_vctp<mode1>q_mhi"
    [
!    (set (match_operand:HI 0 "vpr_register_operand" "=Up")
! 	(unspec:HI [(match_operand:SI 1 "s_register_operand" "r")
! 		    (match_operand:HI 2 "vpr_register_operand" "Up")]
! 	 VCTPQ_M))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vctpt.<mode1> %1"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 1959,1973 ----
  ;;
  ;; [vctp8q_m vctp16q_m vctp32q_m vctp64q_m])
  ;;
! (define_insn "mve_vctp<MVE_vctp>q_m<MVE_vpred>"
    [
!    (set (match_operand:MVE_7 0 "vpr_register_operand" "=Up")
! 	(unspec:MVE_7 [(match_operand:SI 1 "s_register_operand" "r")
! 		    (match_operand:MVE_7 2 "vpr_register_operand" "Up")]
! 	 VCTP_M))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vctpt.<MVE_vctp> %1"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 2536,2542 ****
  	 VRMLALDAVHQ))
    ]
    "TARGET_HAVE_MVE"
!   "vrmlaldavh.<supf>32 %Q0, %R0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 2545,2551 ----
  	 VRMLALDAVHQ))
    ]
    "TARGET_HAVE_MVE"
!   "vrmlaldavh.<supf>32\t%Q0, %R0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 2608,2614 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  				 (match_operand:MVE_5 2 "s_register_operand" "w")
! 				 (match_operand:SI 3 "mve_imm_8" "Rb")]
  	 VQRSHRNBQ_N))
    ]
    "TARGET_HAVE_MVE"
--- 2617,2623 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  				 (match_operand:MVE_5 2 "s_register_operand" "w")
! 				 (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
  	 VQRSHRNBQ_N))
    ]
    "TARGET_HAVE_MVE"
***************
*** 2623,2629 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  				 (match_operand:MVE_5 2 "s_register_operand" "w")
! 				 (match_operand:SI 3 "mve_imm_8" "Rb")]
  	 VQRSHRUNBQ_N_S))
    ]
    "TARGET_HAVE_MVE"
--- 2632,2638 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  				 (match_operand:MVE_5 2 "s_register_operand" "w")
! 				 (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
  	 VQRSHRUNBQ_N_S))
    ]
    "TARGET_HAVE_MVE"
***************
*** 2642,2648 ****
  	 VRMLALDAVHAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vrmlaldavha.<supf>32 %Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
  ])
  
--- 2651,2657 ----
  	 VRMLALDAVHAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vrmlaldavha.<supf>32\t%Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 3039,3045 ****
  	 VDUPQ_M_N))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vdupt.%#<V_sz_elem>	%q0, %2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 3048,3054 ----
  	 VDUPQ_M_N))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vdupt.%#<V_sz_elem>\t%q0, %2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 3496,3502 ****
  ;;
  (define_insn "mve_vrev64q_m_<supf><mode>"
    [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
  		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
--- 3505,3511 ----
  ;;
  (define_insn "mve_vrev64q_m_<supf><mode>"
    [
!    (set (match_operand:MVE_2 0 "s_register_operand" "=&w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
  		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
***************
*** 3563,3569 ****
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg")]
  	 VSRIQ_N))
    ]
    "TARGET_HAVE_MVE"
--- 3572,3578 ----
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")]
  	 VSRIQ_N))
    ]
    "TARGET_HAVE_MVE"
***************
*** 3710,3716 ****
  	 VADDLVAQ_P))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vaddlvat.<supf>32 %Q0, %R0, %q2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  ;;
--- 3719,3725 ----
  	 VADDLVAQ_P))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vaddlvat.<supf>32\t%Q0, %R0, %q2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  ;;
***************
*** 3984,3990 ****
  	 VDUPQ_M_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vpst\;vdupt.%#<V_sz_elem>	%q0, %2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 3993,3999 ----
  	 VDUPQ_M_N_F))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vpst\;vdupt.%#<V_sz_elem>\t%q0, %2"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 4156,4162 ****
  	 VMLALDAVAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmlaldava.<supf>%#<V_sz_elem> %Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
  ])
  
--- 4165,4171 ----
  	 VMLALDAVAQ))
    ]
    "TARGET_HAVE_MVE"
!   "vmlaldava.<supf>%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 4172,4178 ****
  	 VMLALDAVAXQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vmlaldavax.s%#<V_sz_elem> %Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
  ])
  
--- 4181,4187 ----
  	 VMLALDAVAXQ_S))
    ]
    "TARGET_HAVE_MVE"
!   "vmlaldavax.s%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 4466,4472 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")]
  	 VQRSHRNTQ_N))
    ]
    "TARGET_HAVE_MVE"
--- 4475,4481 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
  	 VQRSHRNTQ_N))
    ]
    "TARGET_HAVE_MVE"
***************
*** 4482,4488 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")]
  	 VQRSHRUNTQ_N_S))
    ]
    "TARGET_HAVE_MVE"
--- 4491,4497 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
  	 VQRSHRUNTQ_N_S))
    ]
    "TARGET_HAVE_MVE"
***************
*** 4591,4597 ****
  ;;
  (define_insn "mve_vrev64q_m_f<mode>"
    [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=w")
  	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
  		       (match_operand:MVE_0 2 "s_register_operand" "w")
  		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
--- 4600,4606 ----
  ;;
  (define_insn "mve_vrev64q_m_f<mode>"
    [
!    (set (match_operand:MVE_0 0 "s_register_operand" "=&w")
  	(unspec:MVE_0 [(match_operand:MVE_0 1 "s_register_operand" "0")
  		       (match_operand:MVE_0 2 "s_register_operand" "w")
  		       (match_operand:<MVE_VPRED> 3 "vpr_register_operand" "Up")]
***************
*** 4770,4776 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")]
  	 VRSHRNBQ_N))
    ]
    "TARGET_HAVE_MVE"
--- 4779,4785 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
  	 VRSHRNBQ_N))
    ]
    "TARGET_HAVE_MVE"
***************
*** 4786,4792 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")]
  	 VRSHRNTQ_N))
    ]
    "TARGET_HAVE_MVE"
--- 4795,4801 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")]
  	 VRSHRNTQ_N))
    ]
    "TARGET_HAVE_MVE"
***************
*** 4970,4976 ****
    "TARGET_HAVE_MVE"
    "vpst\;vabavt.<supf>%#<V_sz_elem>\t%0, %q2, %q3"
    [(set_attr "type" "mve_move")
! ])
  
  ;;
  ;; [vqshluq_m_n_s])
--- 4979,4985 ----
    "TARGET_HAVE_MVE"
    "vpst\;vabavt.<supf>%#<V_sz_elem>\t%0, %q2, %q3"
    [(set_attr "type" "mve_move")
!    (set_attr "length" "8")])
  
  ;;
  ;; [vqshluq_m_n_s])
***************
*** 4980,4992 ****
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_7" "Ra")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQSHLUQ_M_N_S))
    ]
    "TARGET_HAVE_MVE"
    "vpst\n\tvqshlut.s%#<V_sz_elem>\t%q0, %q2, %3"
!   [(set_attr "type" "mve_move")])
  
  ;;
  ;; [vshlq_m_s, vshlq_m_u])
--- 4989,5002 ----
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred>" "<MVE_constraint>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQSHLUQ_M_N_S))
    ]
    "TARGET_HAVE_MVE"
    "vpst\n\tvqshlut.s%#<V_sz_elem>\t%q0, %q2, %3"
!   [(set_attr "type" "mve_move")
!    (set_attr "length" "8")])
  
  ;;
  ;; [vshlq_m_s, vshlq_m_u])
***************
*** 5002,5008 ****
    ]
    "TARGET_HAVE_MVE"
    "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
!   [(set_attr "type" "mve_move")])
  
  ;;
  ;; [vsriq_m_n_s, vsriq_m_n_u])
--- 5012,5019 ----
    ]
    "TARGET_HAVE_MVE"
    "vpst\;vshlt.<supf>%#<V_sz_elem>\t%q0, %q2, %q3"
!   [(set_attr "type" "mve_move")
!    (set_attr "length" "8")])
  
  ;;
  ;; [vsriq_m_n_s, vsriq_m_n_u])
***************
*** 5012,5024 ****
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_selective_upto_8" "Rg")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VSRIQ_M_N))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;vsrit.%#<V_sz_elem>\t%q0, %q2, %3"
!   [(set_attr "type" "mve_move")])
  
  ;;
  ;; [vsubq_m_u, vsubq_m_s])
--- 5023,5036 ----
     (set (match_operand:MVE_2 0 "s_register_operand" "=w")
  	(unspec:MVE_2 [(match_operand:MVE_2 1 "s_register_operand" "0")
  		       (match_operand:MVE_2 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred2>" "<MVE_constraint2>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VSRIQ_M_N))
    ]
    "TARGET_HAVE_MVE"
    "vpst\;vsrit.%#<V_sz_elem>\t%q0, %q2, %3"
!   [(set_attr "type" "mve_move")
!    (set_attr "length" "8")])
  
  ;;
  ;; [vsubq_m_u, vsubq_m_s])
***************
*** 5034,5040 ****
    ]
    "TARGET_HAVE_MVE"
    "vpst\;vsubt.i%#<V_sz_elem>\t%q0, %q2, %q3"
!   [(set_attr "type" "mve_move")])
  
  ;;
  ;; [vcvtq_m_n_to_f_u, vcvtq_m_n_to_f_s])
--- 5046,5053 ----
    ]
    "TARGET_HAVE_MVE"
    "vpst\;vsubt.i%#<V_sz_elem>\t%q0, %q2, %q3"
!   [(set_attr "type" "mve_move")
!    (set_attr "length" "8")])
  
  ;;
  ;; [vcvtq_m_n_to_f_u, vcvtq_m_n_to_f_s])
***************
*** 6119,6125 ****
  	 VMLALDAVAXQ_P))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vmlaldavaxt.<supf>%#<V_sz_elem> %Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 6132,6138 ----
  	 VMLALDAVAXQ_P))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vmlaldavaxt.<supf>%#<V_sz_elem>\t%Q0, %R0, %q2, %q3"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 6131,6137 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQRSHRNBQ_M_N))
    ]
--- 6144,6150 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQRSHRNBQ_M_N))
    ]
***************
*** 6148,6154 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQRSHRNTQ_M_N))
    ]
--- 6161,6167 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQRSHRNTQ_M_N))
    ]
***************
*** 6216,6222 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VRSHRNBQ_M_N))
    ]
--- 6229,6235 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VRSHRNBQ_M_N))
    ]
***************
*** 6233,6239 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VRSHRNTQ_M_N))
    ]
--- 6246,6252 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VRSHRNTQ_M_N))
    ]
***************
*** 6454,6460 ****
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "mve_imm_8" "Rb")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQRSHRUNBQ_M_N_S))
    ]
--- 6467,6473 ----
     (set (match_operand:<V_narrow_pack> 0 "s_register_operand" "=w")
  	(unspec:<V_narrow_pack> [(match_operand:<V_narrow_pack> 1 "s_register_operand" "0")
  		       (match_operand:MVE_5 2 "s_register_operand" "w")
! 		       (match_operand:SI 3 "<MVE_pred3>" "<MVE_constraint3>")
  		       (match_operand:<MVE_VPRED> 4 "vpr_register_operand" "Up")]
  	 VQRSHRUNBQ_M_N_S))
    ]
***************
*** 7263,7277 ****
  }
    [(set_attr "length" "8")])
  
- ;;
- ;; [vstrbq_p_s vstrbq_p_u]
- ;;
  (define_insn "mve_vstrbq_p_<supf><mode>"
    [(set (match_operand:<MVE_B_ELEM> 0 "mve_memory_operand" "=Ux")
! 	(unspec:<MVE_B_ELEM> [(match_operand:MVE_2 1 "s_register_operand" "w")
! 			      (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
! 	 VSTRBQ))
!   ]
    "TARGET_HAVE_MVE"
  {
     rtx ops[2];
--- 7276,7288 ----
  }
    [(set_attr "length" "8")])
  
  (define_insn "mve_vstrbq_p_<supf><mode>"
    [(set (match_operand:<MVE_B_ELEM> 0 "mve_memory_operand" "=Ux")
! 	(unspec:<MVE_B_ELEM>
! 	 [(match_operand:MVE_2 1 "s_register_operand" "w")
! 	  (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")
! 	  (match_dup 0)]
! 	 VSTRBQ))]
    "TARGET_HAVE_MVE"
  {
     rtx ops[2];
***************
*** 7657,7663 ****
    [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
  	(unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w")
  		      (match_operand:SI 2 "immediate_operand" "i")
! 		      (match_operand:HI 3 "vpr_register_operand" "Up")]
  	 VLDRDGBQ))
    ]
    "TARGET_HAVE_MVE"
--- 7668,7674 ----
    [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
  	(unspec:V2DI [(match_operand:V2DI 1 "s_register_operand" "w")
  		      (match_operand:SI 2 "immediate_operand" "i")
! 		      (match_operand:V2QI 3 "vpr_register_operand" "Up")]
  	 VLDRDGBQ))
    ]
    "TARGET_HAVE_MVE"
***************
*** 7698,7704 ****
   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
         (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
  		     (match_operand:V2DI 2 "s_register_operand" "w")
! 		     (match_operand:HI 3 "vpr_register_operand" "Up")]
  	VLDRDGOQ))
   ]
   "TARGET_HAVE_MVE"
--- 7709,7715 ----
   [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
         (unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
  		     (match_operand:V2DI 2 "s_register_operand" "w")
! 		     (match_operand:V2QI 3 "vpr_register_operand" "Up")]
  	VLDRDGOQ))
   ]
   "TARGET_HAVE_MVE"
***************
*** 7739,7745 ****
    [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
  	(unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
  		      (match_operand:V2DI 2 "s_register_operand" "w")
! 		      (match_operand:HI 3 "vpr_register_operand" "Up")]
  	 VLDRDGSOQ))
    ]
    "TARGET_HAVE_MVE"
--- 7750,7756 ----
    [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
  	(unspec:V2DI [(match_operand:V2DI 1 "memory_operand" "Us")
  		      (match_operand:V2DI 2 "s_register_operand" "w")
! 		      (match_operand:V2QI 3 "vpr_register_operand" "Up")]
  	 VLDRDGSOQ))
    ]
    "TARGET_HAVE_MVE"
***************
*** 8070,8079 ****
  ;;
  (define_insn "mve_vstrhq_p_fv8hf"
    [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux")
! 	(unspec:V8HI [(match_operand:V8HF 1 "s_register_operand" "w")
! 		      (match_operand:V8BI 2 "vpr_register_operand" "Up")]
! 	 VSTRHQ_F))
!   ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
  {
     rtx ops[2];
--- 8081,8091 ----
  ;;
  (define_insn "mve_vstrhq_p_fv8hf"
    [(set (match_operand:V8HI 0 "mve_memory_operand" "=Ux")
! 	(unspec:V8HI
! 	 [(match_operand:V8HF 1 "s_register_operand" "w")
! 	  (match_operand:V8BI 2 "vpr_register_operand" "Up")
! 	  (match_dup 0)]
! 	 VSTRHQ_F))]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
  {
     rtx ops[2];
***************
*** 8090,8097 ****
  ;;
  (define_insn "mve_vstrhq_p_<supf><mode>"
    [(set (match_operand:<MVE_H_ELEM> 0 "mve_memory_operand" "=Ux")
! 	(unspec:<MVE_H_ELEM> [(match_operand:MVE_6 1 "s_register_operand" "w")
! 			      (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
  	 VSTRHQ))
    ]
    "TARGET_HAVE_MVE"
--- 8102,8111 ----
  ;;
  (define_insn "mve_vstrhq_p_<supf><mode>"
    [(set (match_operand:<MVE_H_ELEM> 0 "mve_memory_operand" "=Ux")
! 	(unspec:<MVE_H_ELEM>
! 	 [(match_operand:MVE_6 1 "s_register_operand" "w")
! 	  (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")
! 	  (match_dup 0)]
  	 VSTRHQ))
    ]
    "TARGET_HAVE_MVE"
***************
*** 8269,8278 ****
  ;;
  (define_insn "mve_vstrwq_p_fv4sf"
    [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
! 	(unspec:V4SI [(match_operand:V4SF 1 "s_register_operand" "w")
! 		      (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")]
! 	 VSTRWQ_F))
!   ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
  {
     rtx ops[2];
--- 8283,8293 ----
  ;;
  (define_insn "mve_vstrwq_p_fv4sf"
    [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
! 	(unspec:V4SI
! 	 [(match_operand:V4SF 1 "s_register_operand" "w")
! 	  (match_operand:<MVE_VPRED> 2 "vpr_register_operand" "Up")
! 	  (match_dup 0)]
! 	 VSTRWQ_F))]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
  {
     rtx ops[2];
***************
*** 8289,8298 ****
  ;;
  (define_insn "mve_vstrwq_p_<supf>v4si"
    [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
! 	(unspec:V4SI [(match_operand:V4SI 1 "s_register_operand" "w")
! 		      (match_operand:V4BI 2 "vpr_register_operand" "Up")]
! 	 VSTRWQ))
!   ]
    "TARGET_HAVE_MVE"
  {
     rtx ops[2];
--- 8304,8314 ----
  ;;
  (define_insn "mve_vstrwq_p_<supf>v4si"
    [(set (match_operand:V4SI 0 "mve_memory_operand" "=Ux")
! 	(unspec:V4SI
! 	 [(match_operand:V4SI 1 "s_register_operand" "w")
! 	  (match_operand:V4BI 2 "vpr_register_operand" "Up")
! 	  (match_dup 0)]
! 	 VSTRWQ))]
    "TARGET_HAVE_MVE"
  {
     rtx ops[2];
***************
*** 8352,8358 ****
  		[(match_operand:V2DI 0 "s_register_operand" "w")
  		 (match_operand:SI 1 "mve_vldrd_immediate" "Ri")
  		 (match_operand:V2DI 2 "s_register_operand" "w")
! 		 (match_operand:HI 3 "vpr_register_operand" "Up")]
  	 VSTRDSBQ))
    ]
    "TARGET_HAVE_MVE"
--- 8368,8374 ----
  		[(match_operand:V2DI 0 "s_register_operand" "w")
  		 (match_operand:SI 1 "mve_vldrd_immediate" "Ri")
  		 (match_operand:V2DI 2 "s_register_operand" "w")
! 		 (match_operand:V2QI 3 "vpr_register_operand" "Up")]
  	 VSTRDSBQ))
    ]
    "TARGET_HAVE_MVE"
***************
*** 8395,8401 ****
    [(match_operand:V2DI 0 "mve_scatter_memory")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:V2DI 2 "s_register_operand")
!    (match_operand:HI 3 "vpr_register_operand")
     (unspec:V4SI [(const_int 0)] VSTRDSOQ)]
    "TARGET_HAVE_MVE"
  {
--- 8411,8417 ----
    [(match_operand:V2DI 0 "mve_scatter_memory")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:V2DI 2 "s_register_operand")
!    (match_operand:V2QI 3 "vpr_register_operand")
     (unspec:V4SI [(const_int 0)] VSTRDSOQ)]
    "TARGET_HAVE_MVE"
  {
***************
*** 8413,8419 ****
  	  [(match_operand:SI 0 "register_operand" "r")
  	   (match_operand:V2DI 1 "s_register_operand" "w")
  	   (match_operand:V2DI 2 "s_register_operand" "w")
! 	   (match_operand:HI 3 "vpr_register_operand" "Up")]
  	  VSTRDSOQ))]
    "TARGET_HAVE_MVE"
    "vpst\;vstrdt.64\t%q2, [%0, %q1]"
--- 8429,8435 ----
  	  [(match_operand:SI 0 "register_operand" "r")
  	   (match_operand:V2DI 1 "s_register_operand" "w")
  	   (match_operand:V2DI 2 "s_register_operand" "w")
! 	   (match_operand:V2QI 3 "vpr_register_operand" "Up")]
  	  VSTRDSOQ))]
    "TARGET_HAVE_MVE"
    "vpst\;vstrdt.64\t%q2, [%0, %q1]"
***************
*** 8454,8460 ****
    [(match_operand:V2DI 0 "mve_scatter_memory")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:V2DI 2 "s_register_operand")
!    (match_operand:HI 3 "vpr_register_operand")
     (unspec:V4SI [(const_int 0)] VSTRDSSOQ)]
    "TARGET_HAVE_MVE"
  {
--- 8470,8476 ----
    [(match_operand:V2DI 0 "mve_scatter_memory")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:V2DI 2 "s_register_operand")
!    (match_operand:V2QI 3 "vpr_register_operand")
     (unspec:V4SI [(const_int 0)] VSTRDSSOQ)]
    "TARGET_HAVE_MVE"
  {
***************
*** 8473,8479 ****
  	  [(match_operand:SI 0 "register_operand" "r")
  	   (match_operand:V2DI 1 "s_register_operand" "w")
  	   (match_operand:V2DI 2 "s_register_operand" "w")
! 	   (match_operand:HI 3 "vpr_register_operand" "Up")]
  	  VSTRDSSOQ))]
    "TARGET_HAVE_MVE"
    "vpst\;vstrdt.64\t%q2, [%0, %q1, UXTW #3]"
--- 8489,8495 ----
  	  [(match_operand:SI 0 "register_operand" "r")
  	   (match_operand:V2DI 1 "s_register_operand" "w")
  	   (match_operand:V2DI 2 "s_register_operand" "w")
! 	   (match_operand:V2QI 3 "vpr_register_operand" "Up")]
  	  VSTRDSSOQ))]
    "TARGET_HAVE_MVE"
    "vpst\;vstrdt.64\t%q2, [%0, %q1, UXTW #3]"
***************
*** 8921,8927 ****
  		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vadd.i%#<V_sz_elem>  %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 8937,8943 ----
  		    (match_operand:MVE_2 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE"
!   "vadd.i%#<V_sz_elem>\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 8935,8941 ****
  		    (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vadd.f%#<V_sz_elem> %q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
--- 8951,8957 ----
  		    (match_operand:MVE_0 2 "s_register_operand" "w")))
    ]
    "TARGET_HAVE_MVE && TARGET_HAVE_MVE_FLOAT"
!   "vadd.f%#<V_sz_elem>\t%q0, %q1, %q2"
    [(set_attr "type" "mve_move")
  ])
  
***************
*** 9036,9042 ****
         (minus:SI (match_dup 2)
  		 (match_operand:SI 4 "immediate_operand" "i")))]
   "TARGET_HAVE_MVE"
!  "vddup.u%#<V_sz_elem>  %q0, %1, %3")
  
  ;;
  ;; [vddupq_m_n_u])
--- 9052,9058 ----
         (minus:SI (match_dup 2)
  		 (match_operand:SI 4 "immediate_operand" "i")))]
   "TARGET_HAVE_MVE"
!  "vddup.u%#<V_sz_elem>\t%q0, %1, %3")
  
  ;;
  ;; [vddupq_m_n_u])
***************
*** 9072,9078 ****
         (minus:SI (match_dup 3)
  		 (match_operand:SI 6 "immediate_operand" "i")))]
   "TARGET_HAVE_MVE"
!  "vpst\;\tvddupt.u%#<V_sz_elem>\t%q0, %2, %4"
   [(set_attr "length""8")])
  
  ;;
--- 9088,9094 ----
         (minus:SI (match_dup 3)
  		 (match_operand:SI 6 "immediate_operand" "i")))]
   "TARGET_HAVE_MVE"
!  "vpst\;vddupt.u%#<V_sz_elem>\t%q0, %2, %4"
   [(set_attr "length""8")])
  
  ;;
***************
*** 9188,9194 ****
  	 VDWDUPQ_M))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;\tvdwdupt.u%#<V_sz_elem>\t%q2, %3, %R4, %5"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
--- 9204,9210 ----
  	 VDWDUPQ_M))
    ]
    "TARGET_HAVE_MVE"
!   "vpst\;vdwdupt.u%#<V_sz_elem>\t%q2, %3, %R4, %5"
    [(set_attr "type" "mve_move")
     (set_attr "length""8")])
  
***************
*** 9445,9451 ****
  		[(match_operand:V2DI 1 "s_register_operand" "0")
  		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
  		 (match_operand:V2DI 3 "s_register_operand" "w")
! 		 (match_operand:HI 4 "vpr_register_operand")]
  	 VSTRDSBWBQ))
     (set (match_operand:V2DI 0 "s_register_operand" "=w")
  	(unspec:V2DI [(match_dup 1) (match_dup 2)]
--- 9461,9467 ----
  		[(match_operand:V2DI 1 "s_register_operand" "0")
  		 (match_operand:SI 2 "mve_vldrd_immediate" "Ri")
  		 (match_operand:V2DI 3 "s_register_operand" "w")
! 		 (match_operand:V2QI 4 "vpr_register_operand")]
  	 VSTRDSBWBQ))
     (set (match_operand:V2DI 0 "s_register_operand" "=w")
  	(unspec:V2DI [(match_dup 1) (match_dup 2)]
***************
*** 9736,9742 ****
    [(match_operand:V2DI 0 "s_register_operand")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:SI 2 "mve_vldrd_immediate")
!    (match_operand:HI 3 "vpr_register_operand")
     (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
    "TARGET_HAVE_MVE"
  {
--- 9752,9758 ----
    [(match_operand:V2DI 0 "s_register_operand")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:SI 2 "mve_vldrd_immediate")
!    (match_operand:V2QI 3 "vpr_register_operand")
     (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
    "TARGET_HAVE_MVE"
  {
***************
*** 9752,9758 ****
    [(match_operand:V2DI 0 "s_register_operand")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:SI 2 "mve_vldrd_immediate")
!    (match_operand:HI 3 "vpr_register_operand")
     (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
    "TARGET_HAVE_MVE"
  {
--- 9768,9774 ----
    [(match_operand:V2DI 0 "s_register_operand")
     (match_operand:V2DI 1 "s_register_operand")
     (match_operand:SI 2 "mve_vldrd_immediate")
!    (match_operand:V2QI 3 "vpr_register_operand")
     (unspec:V2DI [(const_int 0)] VLDRDGBWBQ)]
    "TARGET_HAVE_MVE"
  {
***************
*** 9786,9792 ****
    [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
  	(unspec:V2DI [(match_operand:V2DI 2 "s_register_operand" "1")
  		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
! 		      (match_operand:HI 4 "vpr_register_operand" "Up")
  		      (mem:BLK (scratch))]
  	 VLDRDGBWBQ))
     (set (match_operand:V2DI 1 "s_register_operand" "=&w")
--- 9802,9808 ----
    [(set (match_operand:V2DI 0 "s_register_operand" "=&w")
  	(unspec:V2DI [(match_operand:V2DI 2 "s_register_operand" "1")
  		      (match_operand:SI 3 "mve_vldrd_immediate" "Ri")
! 		      (match_operand:V2QI 4 "vpr_register_operand" "Up")
  		      (mem:BLK (scratch))]
  	 VLDRDGBWBQ))
     (set (match_operand:V2DI 1 "s_register_operand" "=&w")
***************
*** 9952,9958 ****
  ;; [vst2q])
  ;;
  (define_insn "mve_vst2q<mode>"
!   [(set (match_operand:OI 0 "neon_struct_operand" "=Um")
  	(unspec:OI [(match_operand:OI 1 "s_register_operand" "w")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VST2Q))
--- 9968,9974 ----
  ;; [vst2q])
  ;;
  (define_insn "mve_vst2q<mode>"
!   [(set (match_operand:OI 0 "mve_struct_operand" "=Ug")
  	(unspec:OI [(match_operand:OI 1 "s_register_operand" "w")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VST2Q))
***************
*** 9981,9987 ****
  ;;
  (define_insn "mve_vld2q<mode>"
    [(set (match_operand:OI 0 "s_register_operand" "=w")
! 	(unspec:OI [(match_operand:OI 1 "neon_struct_operand" "Um")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VLD2Q))
    ]
--- 9997,10003 ----
  ;;
  (define_insn "mve_vld2q<mode>"
    [(set (match_operand:OI 0 "s_register_operand" "=w")
! 	(unspec:OI [(match_operand:OI 1 "mve_struct_operand" "Ug")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VLD2Q))
    ]
***************
*** 10009,10015 ****
  ;;
  (define_insn "mve_vld4q<mode>"
    [(set (match_operand:XI 0 "s_register_operand" "=w")
! 	(unspec:XI [(match_operand:XI 1 "neon_struct_operand" "Um")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VLD4Q))
    ]
--- 10025,10031 ----
  ;;
  (define_insn "mve_vld4q<mode>"
    [(set (match_operand:XI 0 "s_register_operand" "=w")
! 	(unspec:XI [(match_operand:XI 1 "mve_struct_operand" "Ug")
  		    (unspec:MVE_VLD_ST [(const_int 0)] UNSPEC_VSTRUCTDUMMY)]
  	 VLD4Q))
    ]
***************
*** 10462,10468 ****
  )
  
  (define_insn "*movmisalign<mode>_mve_store"
!   [(set (match_operand:MVE_VLD_ST 0 "neon_permissive_struct_operand"	     "=Ux")
  	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "s_register_operand" " w")]
  	 UNSPEC_MISALIGNED_ACCESS))]
    "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
--- 10478,10484 ----
  )
  
  (define_insn "*movmisalign<mode>_mve_store"
!   [(set (match_operand:MVE_VLD_ST 0 "mve_memory_operand"	     "=Ux")
  	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "s_register_operand" " w")]
  	 UNSPEC_MISALIGNED_ACCESS))]
    "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
***************
*** 10475,10481 ****
  
  (define_insn "*movmisalign<mode>_mve_load"
    [(set (match_operand:MVE_VLD_ST 0 "s_register_operand"				 "=w")
! 	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "neon_permissive_struct_operand" " Ux")]
  	 UNSPEC_MISALIGNED_ACCESS))]
    "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
      || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode)))
--- 10491,10497 ----
  
  (define_insn "*movmisalign<mode>_mve_load"
    [(set (match_operand:MVE_VLD_ST 0 "s_register_operand"				 "=w")
! 	(unspec:MVE_VLD_ST [(match_operand:MVE_VLD_ST 1 "mve_memory_operand" " Ux")]
  	 UNSPEC_MISALIGNED_ACCESS))]
    "((TARGET_HAVE_MVE && VALID_MVE_SI_MODE (<MODE>mode))
      || (TARGET_HAVE_MVE_FLOAT && VALID_MVE_SF_MODE (<MODE>mode)))
diff -Nrcpad gcc-12.2.0/gcc/config/arm/neon.md gcc-13.1.0/gcc/config/arm/neon.md
*** gcc-12.2.0/gcc/config/arm/neon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/neon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM NEON coprocessor Machine Description
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM NEON coprocessor Machine Description
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 635,640 ****
--- 635,647 ----
   [(set_attr "type" "neon_fp_mla_s<q>")]
  )
  
+ (define_expand "<NEON_VRINT:nvrint_pattern><VCVTF:mode>2"
+   [(set (match_operand:VCVTF 0 "s_register_operand")
+         (unspec:VCVTF [(match_operand:VCVTF 1 "s_register_operand")]
+ 		      NEON_VRINT))]
+   "TARGET_NEON && TARGET_VFP5 && flag_unsafe_math_optimizations"
+ )
+ 
  (define_insn "neon_vrint<NEON_VRINT:nvrint_variant><VCVTF:mode>"
    [(set (match_operand:VCVTF 0 "s_register_operand" "=w")
          (unspec:VCVTF [(match_operand:VCVTF 1
***************
*** 645,650 ****
--- 652,665 ----
    [(set_attr "type" "neon_fp_round_<V_elem_ch><q>")]
  )
  
+ (define_expand "l<NEON_VCVT:nvrint_pattern><su_optab><VCVTF:mode><v_cmp_result>2"
+   [(set (match_operand:<V_cmp_result> 0 "register_operand")
+ 	(FIXUORS:<V_cmp_result>
+ 	  (unspec:VCVTF [(match_operand:VCVTF 1 "register_operand")]
+ 			NEON_VCVT)))]
+   "TARGET_NEON && TARGET_VFP5 && flag_unsafe_math_optimizations"
+ )
+ 
  (define_insn "neon_vcvt<NEON_VCVT:nvrint_variant><su_optab><VCVTF:mode><v_cmp_result>"
    [(set (match_operand:<V_cmp_result> 0 "register_operand" "=w")
  	(FIXUORS:<V_cmp_result> (unspec:VCVTF
***************
*** 3059,3065 ****
    "TARGET_I8MM"
  )
  
! (define_expand "neon_copysignf<mode>"
    [(match_operand:VCVTF 0 "register_operand")
     (match_operand:VCVTF 1 "register_operand")
     (match_operand:VCVTF 2 "register_operand")]
--- 3074,3080 ----
    "TARGET_I8MM"
  )
  
! (define_expand "copysign<mode>3"
    [(match_operand:VCVTF 0 "register_operand")
     (match_operand:VCVTF 1 "register_operand")
     (match_operand:VCVTF 2 "register_operand")]
diff -Nrcpad gcc-12.2.0/gcc/config/arm/netbsd-eabi.h gcc-13.1.0/gcc/config/arm/netbsd-eabi.h
*** gcc-12.2.0/gcc/config/arm/netbsd-eabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/netbsd-eabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/netbsd-elf.h gcc-13.1.0/gcc/config/arm/netbsd-elf.h
*** gcc-12.2.0/gcc/config/arm/netbsd-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/netbsd-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, NetBSD/arm ELF version.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
***************
*** 85,93 ****
  #undef PTRDIFF_TYPE
  #define PTRDIFF_TYPE "long int"
  
- /* We don't have any limit on the length as out debugger is GDB.  */
- #undef DBX_CONTIN_LENGTH
- 
  /* NetBSD does its profiling differently to the Acorn compiler. We
     don't need a word following the mcount call; and to skip it
     requires either an assembly stub or use of fomit-frame-pointer when
--- 85,90 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/parsecpu.awk gcc-13.1.0/gcc/config/arm/parsecpu.awk
*** gcc-12.2.0/gcc/config/arm/parsecpu.awk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/parsecpu.awk	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Manipulate the CPU, FPU and architecture descriptions for ARM.
! # Copyright (C) 2017-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,5 ----
  # Manipulate the CPU, FPU and architecture descriptions for ARM.
! # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** function boilerplate (style) {
*** 62,68 ****
      print cc "Generated automatically by parsecpu.awk from arm-cpus.in."
      print cc "Do not edit."
      print ""
!     print cc "Copyright (C) 2011-2022 Free Software Foundation, Inc."
      print ""
      print cc "This file is part of GCC."
      print ""
--- 62,68 ----
      print cc "Generated automatically by parsecpu.awk from arm-cpus.in."
      print cc "Do not edit."
      print ""
!     print cc "Copyright (C) 2011-2023 Free Software Foundation, Inc."
      print ""
      print cc "This file is part of GCC."
      print ""
diff -Nrcpad gcc-12.2.0/gcc/config/arm/predicates.md gcc-13.1.0/gcc/config/arm/predicates.md
*** gcc-12.2.0/gcc/config/arm/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for ARM and Thumb
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for ARM and Thumb
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 876,881 ****
--- 876,885 ----
    (and (match_code "mem")
         (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 2, true)")))
  
+ (define_predicate "mve_struct_operand"
+   (and (match_code "mem")
+        (match_test "TARGET_HAVE_MVE && mve_struct_mem_operand (op)")))
+ 
  (define_predicate "neon_permissive_struct_operand"
    (and (match_code "mem")
         (match_test "TARGET_32BIT && neon_vector_mem_operand (op, 2, false)")))
diff -Nrcpad gcc-12.2.0/gcc/config/arm/rtems.h gcc-13.1.0/gcc/config/arm/rtems.h
*** gcc-12.2.0/gcc/config/arm/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RTEMS based ARM systems using EABI.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RTEMS based ARM systems using EABI.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/arm/semi.h gcc-13.1.0/gcc/config/arm/semi.h
*** gcc-12.2.0/gcc/config/arm/semi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/semi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  ARM on semi-hosted platform
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  ARM on semi-hosted platform
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Richard Earnshaw (richard.earnshaw@arm.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/symbian.h gcc-13.1.0/gcc/config/arm/symbian.h
*** gcc-12.2.0/gcc/config/arm/symbian.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/symbian.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for Symbian OS on ARM processors.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for Symbian OS on ARM processors.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC   
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/sync.md gcc-13.1.0/gcc/config/arm/sync.md
*** gcc-12.2.0/gcc/config/arm/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for ARM processor synchronization primitives.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com)
  ;; 64bit Atomics by Dave Gilbert (david.gilbert@linaro.org)
  ;;
--- 1,5 ----
  ;; Machine description for ARM processor synchronization primitives.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Written by Marcus Shawcroft (marcus.shawcroft@arm.com)
  ;; 64bit Atomics by Dave Gilbert (david.gilbert@linaro.org)
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-aprofile gcc-13.1.0/gcc/config/arm/t-aprofile
*** gcc-12.2.0/gcc/config/arm/t-aprofile	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-aprofile	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-arm gcc-13.1.0/gcc/config/arm/t-arm
*** gcc-12.2.0/gcc/config/arm/t-arm	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-arm	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Rules common to all arm targets
  #
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Rules common to all arm targets
  #
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** arm-d.o: $(srcdir)/config/arm/arm-d.cc
*** 175,177 ****
--- 175,187 ----
  arm-common.o: arm-cpu-cdata.h
  
  driver-arm.o: arm-native.h
+ 
+ PASSES_EXTRA += $(srcdir)/config/arm/arm-passes.def
+ 
+ aarch-bti-insert.o: $(srcdir)/config/arm/aarch-bti-insert.cc \
+     $(CONFIG_H) $(SYSTEM_H) $(TM_H) $(REGS_H) insn-config.h $(RTL_BASE_H) \
+     dominance.h cfg.h cfganal.h $(BASIC_BLOCK_H) $(INSN_ATTR_H) $(RECOG_H) \
+     output.h hash-map.h $(DF_H) $(OBSTACK_H) $(TARGET_H) $(RTL_H) \
+     $(CONTEXT_H) $(TREE_PASS_H) regrename.h
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/arm/aarch-bti-insert.cc
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-arm-elf gcc-13.1.0/gcc/config/arm/t-arm-elf
*** gcc-12.2.0/gcc/config/arm/t-arm-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-arm-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1998-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1998-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-fuchsia gcc-13.1.0/gcc/config/arm/t-fuchsia
*** gcc-12.2.0/gcc/config/arm/t-fuchsia	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-fuchsia	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2017-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-linux-eabi gcc-13.1.0/gcc/config/arm/t-linux-eabi
*** gcc-12.2.0/gcc/config/arm/t-linux-eabi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-linux-eabi	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2005-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2005-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-multilib gcc-13.1.0/gcc/config/arm/t-multilib
*** gcc-12.2.0/gcc/config/arm/t-multilib	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-multilib	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-phoenix gcc-13.1.0/gcc/config/arm/t-phoenix
*** gcc-12.2.0/gcc/config/arm/t-phoenix	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-phoenix	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-rmprofile gcc-13.1.0/gcc/config/arm/t-rmprofile
*** gcc-12.2.0/gcc/config/arm/t-rmprofile	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-rmprofile	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 27,34 ****
  
  # Arch and FPU variants to build libraries with
  
! MULTI_ARCH_OPTS_RM	= march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7e-m+fp/march=armv7e-m+fp.dp/march=armv8-m.base/march=armv8-m.main/march=armv8-m.main+fp/march=armv8-m.main+fp.dp/march=armv8.1-m.main+mve
! MULTI_ARCH_DIRS_RM	= v6-m v7-m v7e-m v7e-m+fp v7e-m+dp v8-m.base v8-m.main v8-m.main+fp v8-m.main+dp v8.1-m.main+mve
  
  # Base M-profile (no fp)
  MULTILIB_REQUIRED	+= mthumb/march=armv6s-m/mfloat-abi=soft
--- 27,37 ----
  
  # Arch and FPU variants to build libraries with
  
! MULTI_ARCH_OPTS_RM	= march=armv6s-m/march=armv7-m/march=armv7e-m/march=armv7e-m+fp/march=armv7e-m+fp.dp/march=armv8-m.base/march=armv8-m.main/march=armv8-m.main+fp/march=armv8-m.main+fp.dp/march=armv8.1-m.main+mve/march=armv8.1-m.main+pacbti/march=armv8.1-m.main+pacbti+fp/march=armv8.1-m.main+pacbti+fp.dp/march=armv8.1-m.main+pacbti+mve
! MULTI_ARCH_DIRS_RM	= v6-m v7-m v7e-m v7e-m+fp v7e-m+dp v8-m.base v8-m.main v8-m.main+fp v8-m.main+dp v8.1-m.main+mve v8.1-m.main+pacbti v8.1-m.main+pacbti+fp v8.1-m.main+pacbti+dp v8.1-m.main+pacbti+mve
! 
! MULTI_ARCH_OPTS_RM	+= mbranch-protection=standard
! MULTI_ARCH_DIRS_RM	+= bp
  
  # Base M-profile (no fp)
  MULTILIB_REQUIRED	+= mthumb/march=armv6s-m/mfloat-abi=soft
*************** MULTILIB_REQUIRED	+= mthumb/march=armv8-
*** 50,55 ****
--- 53,65 ----
  MULTILIB_REQUIRED	+= mthumb/march=armv8-m.main+fp.dp/mfloat-abi=softfp
  MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+mve/mfloat-abi=hard
  
+ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+pacbti/mbranch-protection=standard/mfloat-abi=soft
+ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+pacbti+fp/mbranch-protection=standard/mfloat-abi=softfp
+ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+pacbti+fp/mbranch-protection=standard/mfloat-abi=hard
+ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+pacbti+fp.dp/mbranch-protection=standard/mfloat-abi=softfp
+ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+pacbti+fp.dp/mbranch-protection=standard/mfloat-abi=hard
+ MULTILIB_REQUIRED	+= mthumb/march=armv8.1-m.main+pacbti+mve/mbranch-protection=standard/mfloat-abi=hard
+ 
  # Arch Matches
  MULTILIB_MATCHES	+= march?armv6s-m=march?armv6-m
  
*************** MULTILIB_MATCHES += $(foreach FP, $(v8_1
*** 87,95 ****
--- 97,159 ----
  MULTILIB_MATCHES += $(foreach FP, $(v8_1m_dp_variants), \
  			     march?armv8-m.main+fp.dp=mlibarch?armv8.1-m.main$(FP))
  
+ # Map all mbranch-protection values other than 'none' to 'standard'.
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?bti
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?pac-ret
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?pac-ret+leaf
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?pac-ret+bti
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?pac-ret+leaf+bti
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?bti+pac-ret
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?bti+pac-ret+leaf
+ MULTILIB_MATCHES	+= mbranch-protection?standard=mbranch-protection?standard+leaf
+ 
  # For all the MULTILIB_REQUIRED for v8-m and above, add MULTILIB_MATCHES which
  # maps mlibarch with march for multilib linking.
  MULTILIB_MATCHES	+= march?armv8-m.main=mlibarch?armv8-m.main
  MULTILIB_MATCHES	+= march?armv8-m.main+fp=mlibarch?armv8-m.main+fp
  MULTILIB_MATCHES	+= march?armv8-m.main+fp.dp=mlibarch?armv8-m.main+fp.dp
  MULTILIB_MATCHES	+= march?armv8.1-m.main+mve=mlibarch?armv8.1-m.main+mve
+ 
+ # For -mbranch-protection=none and +pacbti reuses the existing non pacbti
+ # multilibs.
+ MULTILIB_REUSE		+= $(foreach OPT, fp fp\.dp, \
+ 			     mthumb/march.armv8-m\.main+$(OPT)/mfloat-abi.softfp=mthumb/march.armv8\.1-m\.main+pacbti+$(OPT)/mfloat-abi.softfp)
+ MULTILIB_REUSE		+= $(foreach OPT, fp fp\.dp, \
+ 			     mthumb/march.armv8-m\.main+$(OPT)/mfloat-abi.hard=mthumb/march.armv8\.1-m\.main+pacbti+$(OPT)/mfloat-abi.hard)
+ 
+ MULTILIB_REUSE		+= $(foreach OPT, pacbti pacbti+mve, \
+ 			     mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+$(OPT)/mfloat-abi.soft)
+ MULTILIB_REUSE		+= $(foreach OPT, pacbti pacbti+mve, \
+ 			     mthumb/march.armv8-m\.main/mfloat-abi.soft=mthumb/march.armv8\.1-m\.main+$(OPT)/mfloat-abi.softfp)
+ 
+ MULTILIB_REUSE		+= mthumb/march.armv8\.1-m\.main+mve/mfloat-abi.hard=mthumb/march.armv8\.1-m\.main+pacbti+mve/mfloat-abi.hard
+ 
+ pacbti_fp_variants =  fp fp+mve mve.fp fp+mve.fp
+ pacbti_dp_variants = fp.dp fp.dp+mve fp.dp+mve.fp
+ 
+ # For -mbranch-protection=standard and +pacbti linking to existing pacbti
+ # multlibs.
+ MULTILIB_MATCHES	+= march?armv8.1-m.main+pacbti=mlibarch?armv8.1-m.main+pacbti
+ MULTILIB_MATCHES	+= march?armv8.1-m.main+pacbti=mlibarch?armv8.1-m.main+pacbti+dsp
+ MULTILIB_MATCHES	+= march?armv8.1-m.main+pacbti=mlibarch?armv8.1-m.main+dsp+pacbti
+ MULTILIB_MATCHES	+= march?armv8.1-m.main+pacbti+mve=mlibarch?armv8.1-m.main+pacbti+mve
+ MULTILIB_MATCHES	+= march?armv8.1-m.main+pacbti+mve=mlibarch?armv8.1-m.main+pacbti+dsp+mve
+ MULTILIB_MATCHES	+= march?armv8.1-m.main+pacbti+mve=mlibarch?armv8.1-m.main+dsp+pacbti+mve
+ 
+ MULTILIB_MATCHES	+= $(foreach OPT, $(pacbti_fp_variants), \
+ 			     march?armv8.1-m.main+pacbti+fp=mlibarch?armv8.1-m.main+pacbti+$(OPT))
+ 
+ MULTILIB_MATCHES	+= $(foreach OPT, $(pacbti_fp_variants), \
+ 			     march?armv8.1-m.main+pacbti+fp=mlibarch?armv8.1-m.main+pacbti+dsp+$(OPT))
+ 
+ MULTILIB_MATCHES	+= $(foreach OPT, $(pacbti_dp_variants), \
+ 			     march?armv8.1-m.main+pacbti+fp.dp=mlibarch?armv8.1-m.main+pacbti+$(OPT))
+ 
+ MULTILIB_MATCHES	+= $(foreach OPT, $(pacbti_dp_variants), \
+ 			     march?armv8.1-m.main+pacbti+fp.dp=mlibarch?armv8.1-m.main+pacbti+dsp+$(OPT))
+ 
+ MULTILIB_MATCHES	+= $(foreach OPT, $(pacbti_fp_variants), \
+ 			     march?armv8.1-m.main+pacbti+fp=mlibarch?armv8.1-m.main+dsp+pacbti+$(OPT))
+ 
+ MULTILIB_MATCHES	+= $(foreach OPT, $(pacbti_dp_variants), \
+ 			     march?armv8.1-m.main+pacbti+fp.dp=mlibarch?armv8.1-m.main+dsp+pacbti+$(OPT))
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-symbian gcc-13.1.0/gcc/config/arm/t-symbian
*** gcc-12.2.0/gcc/config/arm/t-symbian	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-symbian	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/t-vxworks gcc-13.1.0/gcc/config/arm/t-vxworks
*** gcc-12.2.0/gcc/config/arm/t-vxworks	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/t-vxworks	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/arm/thumb1.md gcc-13.1.0/gcc/config/arm/thumb1.md
*** gcc-12.2.0/gcc/config/arm/thumb1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/thumb1.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Thumb-1 Machine Description
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; ARM Thumb-1 Machine Description
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/thumb2.md gcc-13.1.0/gcc/config/arm/thumb2.md
*** gcc-12.2.0/gcc/config/arm/thumb2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/thumb2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM Thumb-2 Machine Description
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM Thumb-2 Machine Description
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery, LLC.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/types.md gcc-13.1.0/gcc/config/arm/types.md
*** gcc-12.2.0/gcc/config/arm/types.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/types.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Instruction Classification for ARM for GNU compiler.
  
! ;; Copyright (C) 1991-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; Instruction Classification for ARM for GNU compiler.
  
! ;; Copyright (C) 1991-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 248,254 ****
  ; wmmx_wunpckil
  ; wmmx_wxor
  ;
! ; The classification below is for NEON instructions.
  ;
  ; neon_add
  ; neon_add_q
--- 248,255 ----
  ; wmmx_wunpckil
  ; wmmx_wxor
  ;
! ; The classification below is for NEON instructions. If a new neon type is
! ; added, please ensure this is added to the is_neon_type attribute below too.
  ;
  ; neon_add
  ; neon_add_q
***************
*** 1281,1286 ****
--- 1282,1288 ----
            neon_fp_mla_d_q, neon_fp_mla_d_scalar_q, neon_fp_sqrt_s,\
            neon_fp_sqrt_s_q, neon_fp_sqrt_d, neon_fp_sqrt_d_q,\
            neon_fp_div_s, neon_fp_div_s_q, neon_fp_div_d, neon_fp_div_d_q, crypto_aese,\
+           neon_fcadd, neon_fcmla, \
            crypto_aesmc, crypto_sha1_xor, crypto_sha1_fast, crypto_sha1_slow,\
            crypto_sha256_fast, crypto_sha256_slow")
          (const_string "yes")
diff -Nrcpad gcc-12.2.0/gcc/config/arm/uclinux-eabi.h gcc-13.1.0/gcc/config/arm/uclinux-eabi.h
*** gcc-12.2.0/gcc/config/arm/uclinux-eabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/uclinux-eabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for ARM EABI ucLinux
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Paul Brook <paul@codesourcery.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for ARM EABI ucLinux
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Paul Brook <paul@codesourcery.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/uclinux-elf.h gcc-13.1.0/gcc/config/arm/uclinux-elf.h
*** gcc-12.2.0/gcc/config/arm/uclinux-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/uclinux-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for ARM running ucLinux using ELF
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Philip Blundell <pb@nexus.co.uk>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for ARM running ucLinux using ELF
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Philip Blundell <pb@nexus.co.uk>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/uclinuxfdpiceabi.h gcc-13.1.0/gcc/config/arm/uclinuxfdpiceabi.h
*** gcc-12.2.0/gcc/config/arm/uclinuxfdpiceabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/uclinuxfdpiceabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for ARM GNU/Linux FDPIC EABI targets.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by STMicroelectronics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Configuration file for ARM GNU/Linux FDPIC EABI targets.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by STMicroelectronics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/unknown-elf.h gcc-13.1.0/gcc/config/arm/unknown-elf.h
*** gcc-12.2.0/gcc/config/arm/unknown-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/unknown-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for non-Linux based ARM systems using ELF
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Catherine Moore <clm@cygnus.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for non-Linux based ARM systems using ELF
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Catherine Moore <clm@cygnus.com>
  
     This file is part of GCC.
***************
*** 33,39 ****
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC	\
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
    UNKNOWN_ELF_STARTFILE_SPEC
  
  #define UNKNOWN_ELF_ENDFILE_SPEC	"crtend%O%s crtn%O%s"
--- 33,39 ----
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC	\
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} "	\
    UNKNOWN_ELF_STARTFILE_SPEC
  
  #define UNKNOWN_ELF_ENDFILE_SPEC	"crtend%O%s crtn%O%s"
diff -Nrcpad gcc-12.2.0/gcc/config/arm/unspecs.md gcc-13.1.0/gcc/config/arm/unspecs.md
*** gcc-12.2.0/gcc/config/arm/unspecs.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/unspecs.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Unspec defintions.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Unspec defintions.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by ARM Ltd.
  
  ;; This file is part of GCC.
***************
*** 159,164 ****
--- 159,165 ----
    UNSPEC_VCDE		; Custom Datapath Extension instruction.
    UNSPEC_VCDEA		; Custom Datapath Extension instruction.
    UNSPEC_DLS		; Used for DLS (Do Loop Start), Armv8.1-M Mainline instruction
+   UNSPEC_PAC_NOP	; Represents PAC signing LR
  ])
  
  
***************
*** 254,259 ****
--- 255,263 ----
  			; instruction.
    VUNSPEC_VLLDM		; Represent the lazy load multiple with vlldm
  			; instruction.
+   VUNSPEC_PACBTI_NOP	; Represents PAC signing LR + valid landing pad
+   VUNSPEC_AUT_NOP	; Represents PAC verifying LR
+   VUNSPEC_BTI_NOP	; Represent BTI
  ])
  
  ;; Enumerators for NEON unspecs.
***************
*** 575,584 ****
    VCVTMQ_S
    VCVTMQ_U
    VADDLVQ_U
!   VCTP8Q
!   VCTP16Q
!   VCTP32Q
!   VCTP64Q
    VPNOT
    VCREATEQ_F
    VCVTQ_N_TO_F_S
--- 579,586 ----
    VCVTMQ_S
    VCVTMQ_U
    VADDLVQ_U
!   VCTP
!   VCTP_M
    VPNOT
    VCREATEQ_F
    VCVTQ_N_TO_F_S
***************
*** 702,711 ****
    VADDLVAQ_S
    VBICQ_N_U
    VBICQ_N_S
-   VCTP8Q_M
-   VCTP16Q_M
-   VCTP32Q_M
-   VCTP64Q_M
    VCVTBQ_F16_F32
    VCVTTQ_F16_F32
    VMLALDAVQ_U
--- 704,709 ----
diff -Nrcpad gcc-12.2.0/gcc/config/arm/vec-common.md gcc-13.1.0/gcc/config/arm/vec-common.md
*** gcc-12.2.0/gcc/config/arm/vec-common.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/vec-common.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Description for shared bits common to IWMMXT and Neon.
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Description for shared bits common to IWMMXT and Neon.
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 280,308 ****
    DONE;
  })
  
! (define_expand "movmisalign<mode>"
!  [(set (match_operand:VDQ 0 "neon_perm_struct_or_reg_operand")
! 	(unspec:VDQ [(match_operand:VDQ 1 "neon_perm_struct_or_reg_operand")]
  	 UNSPEC_MISALIGNED_ACCESS))]
   "ARM_HAVE_<MODE>_LDST && !BYTES_BIG_ENDIAN
    && unaligned_access && !TARGET_REALLY_IWMMXT"
  {
!  rtx adjust_mem;
!  /* This pattern is not permitted to fail during expansion: if both arguments
!     are non-registers (e.g. memory := constant, which can be created by the
!     auto-vectorizer), force operand 1 into a register.  */
!  if (!s_register_operand (operands[0], <MODE>mode)
!      && !s_register_operand (operands[1], <MODE>mode))
!    operands[1] = force_reg (<MODE>mode, operands[1]);
  
!  if (s_register_operand (operands[0], <MODE>mode))
!    adjust_mem = operands[1];
!  else
!    adjust_mem = operands[0];
  
!  /* Legitimize address.  */
!  if (!neon_vector_mem_operand (adjust_mem, 2, true))
!    XEXP (adjust_mem, 0) = force_reg (Pmode, XEXP (adjust_mem, 0));
  })
  
  (define_insn "mve_vshlq_<supf><mode>"
--- 280,360 ----
    DONE;
  })
  
! (define_expand "@movmisalign<mode>"
!  [(set (match_operand:VDQ 0 "nonimmediate_operand")
! 	(unspec:VDQ [(match_operand:VDQ 1 "general_operand")]
  	 UNSPEC_MISALIGNED_ACCESS))]
   "ARM_HAVE_<MODE>_LDST && !BYTES_BIG_ENDIAN
    && unaligned_access && !TARGET_REALLY_IWMMXT"
  {
!   rtx *memloc;
!   bool for_store = false;
!   /* This pattern is not permitted to fail during expansion: if both arguments
!      are non-registers (e.g. memory := constant, which can be created by the
!      auto-vectorizer), force operand 1 into a register.  */
!   if (!s_register_operand (operands[0], <MODE>mode)
!       && !s_register_operand (operands[1], <MODE>mode))
!     operands[1] = force_reg (<MODE>mode, operands[1]);
  
!   if (s_register_operand (operands[0], <MODE>mode))
!     memloc = &operands[1];
!   else
!     {
!       memloc = &operands[0];
!       for_store = true;
!     }
  
!   /* For MVE, vector loads/stores must be aligned to the element size.  If the
!      alignment is less than that convert the load/store to a suitable mode.  */
!   if (TARGET_HAVE_MVE
!       && (MEM_ALIGN (*memloc)
! 	  < GET_MODE_ALIGNMENT (GET_MODE_INNER (<MODE>mode))))
!     {
!       scalar_mode new_smode;
!       switch (MEM_ALIGN (*memloc))
! 	{
! 	case 64:
! 	case 32:
! 	  new_smode = SImode;
! 	  break;
! 	case 16:
! 	  new_smode = HImode;
! 	  break;
! 	default:
! 	  new_smode = QImode;
! 	  break;
! 	}
!       machine_mode new_mode
! 	= mode_for_vector (new_smode,
! 			   GET_MODE_SIZE (<MODE>mode)
! 			   / GET_MODE_SIZE (new_smode)).require ();
!       rtx new_mem = adjust_address (*memloc, new_mode, 0);
! 
!       if (!for_store)
! 	{
! 	  rtx reg = gen_reg_rtx (new_mode);
! 	  emit_insn (gen_movmisalign (new_mode, reg, new_mem));
! 	  emit_move_insn (operands[0], gen_lowpart (<MODE>mode, reg));
! 	  DONE;
! 	}
!       emit_insn (gen_movmisalign (new_mode, new_mem,
! 				  gen_lowpart (new_mode, operands[1])));
!       DONE;
!     }
! 
!   /* Legitimize address.  */
!   if ((TARGET_HAVE_MVE
!        && !mve_vector_mem_operand (<MODE>mode, XEXP (*memloc, 0), false))
!       || (!TARGET_HAVE_MVE
! 	  && !neon_vector_mem_operand (*memloc, 2, false)))
!     {
!       rtx new_mem
! 	= replace_equiv_address (*memloc,
! 				 force_reg (Pmode, XEXP (*memloc, 0)),
! 				 false);
!       gcc_assert (MEM_ALIGN (new_mem) == MEM_ALIGN (*memloc));
!       *memloc = new_mem;
!     }
  })
  
  (define_insn "mve_vshlq_<supf><mode>"
diff -Nrcpad gcc-12.2.0/gcc/config/arm/vfp.md gcc-13.1.0/gcc/config/arm/vfp.md
*** gcc-12.2.0/gcc/config/arm/vfp.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/vfp.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM VFP instruction patterns
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM VFP instruction patterns
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
***************
*** 88,94 ****
      case 2:
        return "mov%?\t%0, %1\t%@ movhi";
      case 1:
!       if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_VECTOR_BOOL)
          operands[1] = mve_bool_vec_to_const (operands[1]);
        else
          operands[1] = gen_lowpart (HImode, operands[1]);
--- 88,94 ----
      case 2:
        return "mov%?\t%0, %1\t%@ movhi";
      case 1:
!       if (VALID_MVE_PRED_MODE (<MODE>mode))
          operands[1] = mve_bool_vec_to_const (operands[1]);
        else
          operands[1] = gen_lowpart (HImode, operands[1]);
***************
*** 105,113 ****
      case 8:
        return "vmov%?.f32\t%0, %1\t%@ int";
      case 9:
!       return "vmsr%?\t P0, %1\t@ movhi";
      case 10:
!       return "vmrs%?\t %0, P0\t@ movhi";
      default:
        gcc_unreachable ();
      }
--- 105,113 ----
      case 8:
        return "vmov%?.f32\t%0, %1\t%@ int";
      case 9:
!       return "vmsr%?\tp0, %1\t@ movhi";
      case 10:
!       return "vmrs%?\t%0, p0\t@ movhi";
      default:
        gcc_unreachable ();
      }
***************
*** 192,198 ****
      case 2:
        return "mov%?\t%0, %1\t%@ movhi";
      case 1:
!       if (GET_MODE_CLASS (GET_MODE (operands[1])) == MODE_VECTOR_BOOL)
          operands[1] = mve_bool_vec_to_const (operands[1]);
        else
          operands[1] = gen_lowpart (HImode, operands[1]);
--- 192,198 ----
      case 2:
        return "mov%?\t%0, %1\t%@ movhi";
      case 1:
!       if (VALID_MVE_PRED_MODE (<MODE>mode))
          operands[1] = mve_bool_vec_to_const (operands[1]);
        else
          operands[1] = gen_lowpart (HImode, operands[1]);
***************
*** 209,217 ****
      case 8:
        return "vmov%?.f32\t%0, %1\t%@ int";
      case 9:
!       return "vmsr%?\t P0, %1\t%@ movhi";
      case 10:
!       return "vmrs%?\t%0, P0\t%@ movhi";
      default:
        gcc_unreachable ();
      }
--- 209,217 ----
      case 8:
        return "vmov%?.f32\t%0, %1\t%@ int";
      case 9:
!       return "vmsr%?\tp0, %1\t%@ movhi";
      case 10:
!       return "vmrs%?\t%0, p0\t%@ movhi";
      default:
        gcc_unreachable ();
      }
***************
*** 312,320 ****
      case 12: case 13:
        return output_move_vfp (operands);
      case 14:
!       return \"vmsr\\t P0, %1\";
      case 15:
!       return \"vmrs\\t %0, P0\";
      case 16:
        return \"mcr\\tp10, 7, %1, cr1, cr0, 0\\t @SET_FPSCR\";
      case 17:
--- 312,320 ----
      case 12: case 13:
        return output_move_vfp (operands);
      case 14:
!       return \"vmsr\\tp0, %1\";
      case 15:
!       return \"vmrs\\t%0, p0\";
      case 16:
        return \"mcr\\tp10, 7, %1, cr1, cr0, 0\\t @SET_FPSCR\";
      case 17:
diff -Nrcpad gcc-12.2.0/gcc/config/arm/vfp11.md gcc-13.1.0/gcc/config/arm/vfp11.md
*** gcc-12.2.0/gcc/config/arm/vfp11.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/vfp11.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ARM VFP11 pipeline description
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ARM VFP11 pipeline description
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;; Written by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/vxworks.h gcc-13.1.0/gcc/config/arm/vxworks.h
*** gcc-12.2.0/gcc/config/arm/vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GCC,
     for ARM with targeting the VXWorks run time environment. 
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
     Contributed by: Mike Stump <mrs@wrs.com>
     Brought up to date by CodeSourcery, LLC.
--- 1,6 ----
  /* Definitions of target machine for GCC,
     for ARM with targeting the VXWorks run time environment. 
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
     Contributed by: Mike Stump <mrs@wrs.com>
     Brought up to date by CodeSourcery, LLC.
diff -Nrcpad gcc-12.2.0/gcc/config/arm/vxworks.opt gcc-13.1.0/gcc/config/arm/vxworks.opt
*** gcc-12.2.0/gcc/config/arm/vxworks.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/vxworks.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; ARM VxWorks options.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; ARM VxWorks options.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/arm/xgene1.md gcc-13.1.0/gcc/config/arm/xgene1.md
*** gcc-12.2.0/gcc/config/arm/xgene1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/arm/xgene1.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for AppliedMicro xgene1 core.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Theobroma Systems Design und Consulting GmbH.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for AppliedMicro xgene1 core.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Theobroma Systems Design und Consulting GmbH.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-arch.h gcc-13.1.0/gcc/config/avr/avr-arch.h
*** gcc-12.2.0/gcc/config/avr/avr-arch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-arch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of types that are used to store AVR architecture and
     device information.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of types that are used to store AVR architecture and
     device information.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-c.cc gcc-13.1.0/gcc/config/avr/avr-c.cc
*** gcc-12.2.0/gcc/config/avr/avr-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-devices.cc gcc-13.1.0/gcc/config/avr/avr-devices.cc
*** gcc-12.2.0/gcc/config/avr/avr-devices.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-devices.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by Anatoly Sokolov (aesok@post.ru)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-dimode.md gcc-13.1.0/gcc/config/avr/avr-dimode.md
*** gcc-12.2.0/gcc/config/avr/avr-dimode.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-dimode.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;;   Machine description for GNU compiler,
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 1998-2022 Free Software Foundation, Inc.
  ;;   Contributed by Georg Lay (avr@gjlay.de)
  ;;
  ;; This file is part of GCC.
--- 1,6 ----
  ;;   Machine description for GNU compiler,
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 1998-2023 Free Software Foundation, Inc.
  ;;   Contributed by Georg Lay (avr@gjlay.de)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-fixed.md gcc-13.1.0/gcc/config/avr/avr-fixed.md
*** gcc-12.2.0/gcc/config/avr/avr-fixed.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-fixed.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;;   This file contains instructions that support fixed-point operations
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;;   Contributed by Sean D'Epagnier  (sean@depagnier.com)
  ;;                  Georg-Johann Lay (avr@gjlay.de)
--- 1,6 ----
  ;;   This file contains instructions that support fixed-point operations
  ;;   for Atmel AVR micro controllers.
! ;;   Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;;   Contributed by Sean D'Epagnier  (sean@depagnier.com)
  ;;                  Georg-Johann Lay (avr@gjlay.de)
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-log.cc gcc-13.1.0/gcc/config/avr/avr-log.cc
*** gcc-12.2.0/gcc/config/avr/avr-log.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-log.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for log output for Atmel AVR back end.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for log output for Atmel AVR back end.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-mcus.def gcc-13.1.0/gcc/config/avr/avr-mcus.def
*** gcc-12.2.0/gcc/config/avr/avr-mcus.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-mcus.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* AVR MCUs.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* AVR MCUs.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** AVR_MCU ("atxmega16c4",      ARCH_AVRXME
*** 306,311 ****
--- 306,319 ----
  AVR_MCU ("atxmega32a4u",     ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32A4U__", 0x2000, 0x0, 0x9000, 0)
  AVR_MCU ("atxmega32c4",      ARCH_AVRXMEGA2, AVR_ISA_RMW,  "__AVR_ATxmega32C4__",  0x2000, 0x0, 0x9000, 0)
  AVR_MCU ("atxmega32e5",      ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_ATxmega32E5__",  0x2000, 0x0, 0x9000, 0)
+ AVR_MCU ("avr64da28",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DA28__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64da32",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DA32__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64da48",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DA48__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64da64",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DA64__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64db28",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DB28__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64db32",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DB32__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64db48",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DB48__",    0x6000, 0x0, 0x8000, 0x10000)
+ AVR_MCU ("avr64db64",        ARCH_AVRXMEGA2, AVR_ISA_NONE, "__AVR_AVR64DB64__",    0x6000, 0x0, 0x8000, 0x10000)
  /* Xmega, Flash + RAM < 64K, flash visible in RAM address space */
  AVR_MCU ("avrxmega3",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  NULL,                  0x3f00, 0x0, 0x8000, 0)
  AVR_MCU ("attiny202",        ARCH_AVRXMEGA3, AVR_ISA_RCALL, "__AVR_ATtiny202__",   0x3f80, 0x0, 0x800,  0x8000)
*************** AVR_MCU ("atmega3208",       ARCH_AVRXME
*** 342,347 ****
--- 350,361 ----
  AVR_MCU ("atmega3209",       ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_ATmega3209__",  0x3800, 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 ("avr32da28",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_AVR32DA28__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32da32",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_AVR32DA32__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32da48",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_AVR32DA48__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32db28",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_AVR32DB28__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32db32",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_AVR32DB32__",   0x7000, 0x0, 0x8000, 0x8000)
+ AVR_MCU ("avr32db48",        ARCH_AVRXMEGA3, AVR_ISA_NONE,  "__AVR_AVR32DB48__",   0x7000, 0x0, 0x8000, 0x8000)
  /* Xmega, 64K < Flash <= 128K, RAM <= 64K */
  AVR_MCU ("avrxmega4",        ARCH_AVRXMEGA4, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x11000, 0)
  AVR_MCU ("atxmega64a3",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64A3__",  0x2000, 0x0, 0x11000, 0)
*************** AVR_MCU ("atxmega64b1",      ARCH_AVRXME
*** 352,357 ****
--- 366,379 ----
  AVR_MCU ("atxmega64b3",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64B3__",  0x2000, 0x0, 0x11000, 0)
  AVR_MCU ("atxmega64c3",      ARCH_AVRXMEGA4, AVR_ISA_RMW,  "__AVR_ATxmega64C3__",  0x2000, 0x0, 0x11000, 0)
  AVR_MCU ("atxmega64d4",      ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_ATxmega64D4__",  0x2000, 0x0, 0x11000, 0)
+ AVR_MCU ("avr128da28",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DA28__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128da32",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DA32__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128da48",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DA48__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128da64",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DA64__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128db28",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DB28__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128db32",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DB32__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128db48",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DB48__",   0x4000, 0x0, 0x8000,  0x20000)
+ AVR_MCU ("avr128db64",       ARCH_AVRXMEGA4, AVR_ISA_NONE, "__AVR_AVR128DB64__",   0x4000, 0x0, 0x8000,  0x20000)
  /* Xmega, 64K < Flash <= 128K, RAM > 64K */
  AVR_MCU ("avrxmega5",        ARCH_AVRXMEGA5, AVR_ISA_NONE, NULL,                   0x2000, 0x0, 0x11000, 0)
  AVR_MCU ("atxmega64a1",      ARCH_AVRXMEGA5, AVR_ISA_NONE, "__AVR_ATxmega64A1__",  0x2000, 0x0, 0x11000, 0)
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-modes.def gcc-13.1.0/gcc/config/avr/avr-modes.def
*** gcc-12.2.0/gcc/config/avr/avr-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-passes.def gcc-13.1.0/gcc/config/avr/avr-passes.def
*** gcc-12.2.0/gcc/config/avr/avr-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for AVR.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for AVR.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc. */
  
  /* This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-protos.h gcc-13.1.0/gcc/config/avr/avr-protos.h
*** gcc-12.2.0/gcc/config/avr/avr-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Prototypes for exported functions defined in avr.cc
     
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
--- 1,6 ----
  /* Prototypes for exported functions defined in avr.cc
     
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr-stdint.h gcc-13.1.0/gcc/config/avr/avr-stdint.h
*** gcc-12.2.0/gcc/config/avr/avr-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using newlib.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using newlib.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr.cc gcc-13.1.0/gcc/config/avr/avr.cc
*** gcc-12.2.0/gcc/config/avr/avr.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for insn-output.cc for ATMEL AVR micro controllers
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for insn-output.cc for ATMEL AVR micro controllers
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr.h gcc-13.1.0/gcc/config/avr/avr.h
*** gcc-12.2.0/gcc/config/avr/avr.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for ATMEL AVR at90s8515, ATmega103/103L, ATmega603/603L microcontrollers.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Denis Chertykov (chertykov@gmail.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr.md gcc-13.1.0/gcc/config/avr/avr.md
*** gcc-12.2.0/gcc/config/avr/avr.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;;   Machine description for GNU compiler,
  ;;   for ATMEL AVR micro controllers.
! ;;   Copyright (C) 1998-2022 Free Software Foundation, Inc.
  ;;   Contributed by Denis Chertykov (chertykov@gmail.com)
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;;   Machine description for GNU compiler,
  ;;   for ATMEL AVR micro controllers.
! ;;   Copyright (C) 1998-2023 Free Software Foundation, Inc.
  ;;   Contributed by Denis Chertykov (chertykov@gmail.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avr.opt gcc-13.1.0/gcc/config/avr/avr.opt
*** gcc-12.2.0/gcc/config/avr/avr.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avr.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the ATMEL AVR port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the ATMEL AVR port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/avr/avrlibc.h gcc-13.1.0/gcc/config/avr/avrlibc.h
*** gcc-12.2.0/gcc/config/avr/avrlibc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/avrlibc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for the GNU compiler collection
     for Atmel AVR micro controller if configured for AVR-Libc.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for the GNU compiler collection
     for Atmel AVR micro controller if configured for AVR-Libc.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/builtins.def gcc-13.1.0/gcc/config/avr/builtins.def
*** gcc-12.2.0/gcc/config/avr/builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/avr/constraints.md gcc-13.1.0/gcc/config/avr/constraints.md
*** gcc-12.2.0/gcc/config/avr/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/avr/driver-avr.cc gcc-13.1.0/gcc/config/avr/driver-avr.cc
*** gcc-12.2.0/gcc/config/avr/driver-avr.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/driver-avr.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay <avr@gjlay.de>
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay <avr@gjlay.de>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/elf.h gcc-13.1.0/gcc/config/avr/elf.h
*** gcc-12.2.0/gcc/config/avr/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/gen-avr-mmcu-specs.cc gcc-13.1.0/gcc/config/avr/gen-avr-mmcu-specs.cc
*** gcc-12.2.0/gcc/config/avr/gen-avr-mmcu-specs.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/gen-avr-mmcu-specs.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Joern Rennecke
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Joern Rennecke
  
     This file is part of GCC.
*************** print_mcu (const avr_mcu_t *mcu)
*** 279,285 ****
    if (is_device)
      {
        fprintf (f, "*self_spec:\n");
!       fprintf (f, "\t%%{!mmcu=avr*: %%<mmcu=* -mmcu=%s} ", arch->name);
        fprintf (f, "%s ", rcall_spec);
        fprintf (f, "%s\n\n", sp8_spec);
  
--- 279,285 ----
    if (is_device)
      {
        fprintf (f, "*self_spec:\n");
!       fprintf (f, "\t%%<mmcu=* -mmcu=%s ", arch->name);
        fprintf (f, "%s ", rcall_spec);
        fprintf (f, "%s\n\n", sp8_spec);
  
diff -Nrcpad gcc-12.2.0/gcc/config/avr/gen-avr-mmcu-texi.cc gcc-13.1.0/gcc/config/avr/gen-avr-mmcu-texi.cc
*** gcc-12.2.0/gcc/config/avr/gen-avr-mmcu-texi.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/gen-avr-mmcu-texi.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
     This file is part of GCC.
***************
*** 23,32 ****
  
  #define IN_GEN_AVR_MMCU_TEXI
  
  #include "avr-devices.cc"
  
  static const avr_mcu_t*
! mcus[sizeof avr_mcu_types / sizeof avr_mcu_types[0]];
  
  static int letter (char c)
  {
--- 23,34 ----
  
  #define IN_GEN_AVR_MMCU_TEXI
  
+ #define ARRAY_SIZE(a) (sizeof (a) / sizeof ((a)[0]))
+ 
  #include "avr-devices.cc"
  
  static const avr_mcu_t*
! mcus[ARRAY_SIZE (avr_mcu_types)];
  
  static int letter (char c)
  {
*************** c_prefix (const char *str)
*** 53,62 ****
  {
    static const char *const prefixes[] =
      {
!       "attiny", "atmega", "atxmega", "ata", "at90"
      };
  
!   int i, n = (int) (sizeof (prefixes) / sizeof (*prefixes));
  
    for (i = 0; i < n; i++)
      if (str_prefix_p (str, prefixes[i]))
--- 55,64 ----
  {
    static const char *const prefixes[] =
      {
!       "attiny", "atmega", "atxmega", "ata", "at90", "avr"
      };
  
!   int i, n = (int) (ARRAY_SIZE (prefixes));
  
    for (i = 0; i < n; i++)
      if (str_prefix_p (str, prefixes[i]))
*************** int main (void)
*** 160,166 ****
    size_t i, n_mcus = 0;
    const avr_mcu_t *mcu;
  
!   printf ("@c Copyright (C) 2012-2022 Free Software Foundation, Inc.\n");
    printf ("@c This is part of the GCC manual.\n");
    printf ("@c For copying conditions, see the file "
  	  "gcc/doc/include/fdl.texi.\n\n");
--- 162,168 ----
    size_t i, n_mcus = 0;
    const avr_mcu_t *mcu;
  
!   printf ("@c Copyright (C) 2012-2023 Free Software Foundation, Inc.\n");
    printf ("@c This is part of the GCC manual.\n");
    printf ("@c For copying conditions, see the file "
  	  "gcc/doc/include/fdl.texi.\n\n");
*************** int main (void)
*** 185,191 ****
  	  print_mcus (n_mcus);
  	  n_mcus = 0;
  
! 	  for (i = 0; i < sizeof (avr_texinfo) / sizeof (*avr_texinfo); i++)
  	    if (arch_id == avr_texinfo[i].arch_id)
  	      printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
  	}
--- 187,193 ----
  	  print_mcus (n_mcus);
  	  n_mcus = 0;
  
! 	  for (i = 0; i < ARRAY_SIZE (avr_texinfo); i++)
  	    if (arch_id == avr_texinfo[i].arch_id)
  	      printf ("@item %s\n%s\n", mcu->name, avr_texinfo[i].texinfo);
  	}
diff -Nrcpad gcc-12.2.0/gcc/config/avr/genmultilib.awk gcc-13.1.0/gcc/config/avr/genmultilib.awk
*** gcc-12.2.0/gcc/config/avr/genmultilib.awk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/genmultilib.awk	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/avr/predicates.md gcc-13.1.0/gcc/config/avr/predicates.md
*** gcc-12.2.0/gcc/config/avr/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for ATMEL AVR micro controllers.
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/avr/specs.h gcc-13.1.0/gcc/config/avr/specs.h
*** gcc-12.2.0/gcc/config/avr/specs.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/specs.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Specs definitions for Atmel AVR back end.
  
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
--- 1,6 ----
  /* Specs definitions for Atmel AVR back end.
  
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay (avr@gjlay.de)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/avr/stdfix.h gcc-13.1.0/gcc/config/avr/stdfix.h
*** gcc-12.2.0/gcc/config/avr/stdfix.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/stdfix.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/avr/t-avr gcc-13.1.0/gcc/config/avr/t-avr
*** gcc-12.2.0/gcc/config/avr/t-avr	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/avr/t-avr	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2000-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2000-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin-modes.def gcc-13.1.0/gcc/config/bfin/bfin-modes.def
*** gcc-12.2.0/gcc/config/bfin/bfin-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for Blackfin.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for Blackfin.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin-opts.h gcc-13.1.0/gcc/config/bfin/bfin-opts.h
*** gcc-12.2.0/gcc/config/bfin/bfin-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for the Blackfin port needed for option handling.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for the Blackfin port needed for option handling.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin-protos.h gcc-13.1.0/gcc/config/bfin/bfin-protos.h
*** gcc-12.2.0/gcc/config/bfin/bfin-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for Blackfin functions used in the md file & elsewhere.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
     This file is part of GNU CC.
  
--- 1,5 ----
  /* Prototypes for Blackfin functions used in the md file & elsewhere.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
     This file is part of GNU CC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin.cc gcc-13.1.0/gcc/config/bfin/bfin.cc
*** gcc-12.2.0/gcc/config/bfin/bfin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* The Blackfin code generation auxiliary output file.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
--- 1,5 ----
  /* The Blackfin code generation auxiliary output file.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin.h gcc-13.1.0/gcc/config/bfin/bfin.h
*** gcc-12.2.0/gcc/config/bfin/bfin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for the Blackfin port.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for the Blackfin port.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Analog Devices.
  
     This file is part of GCC.
*************** typedef struct {
*** 810,816 ****
     subsequent accesses occur to other fields in the same word of the
     structure, but to different bytes.  */
  #define SLOW_BYTE_ACCESS  0
- #define SLOW_SHORT_ACCESS 0
  
  /* Define this if most significant bit is lowest numbered
     in instructions that operate on numbered bit-fields. */
--- 810,815 ----
*************** extern rtx bfin_cc_rtx, bfin_rets_rtx;
*** 1094,1101 ****
  /* This works for GAS and some other assemblers.  */
  #define SET_ASM_OP              ".set "
  
! /* DBX register number for a given compiler register number */
! #define DBX_REGISTER_NUMBER(REGNO)  (REGNO) 
  
  #define SIZE_ASM_OP     "\t.size\t"
  
--- 1093,1100 ----
  /* This works for GAS and some other assemblers.  */
  #define SET_ASM_OP              ".set "
  
! /* Debugger register number for a given compiler register number */
! #define DEBUGGER_REGNO(REGNO)  (REGNO) 
  
  #define SIZE_ASM_OP     "\t.size\t"
  
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin.md gcc-13.1.0/gcc/config/bfin/bfin.md
*** gcc-12.2.0/gcc/config/bfin/bfin.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for Blackfin for GNU compiler
! ;;  Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;  Contributed by Analog Devices.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Machine description for Blackfin for GNU compiler
! ;;  Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;  Contributed by Analog Devices.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/bfin.opt gcc-13.1.0/gcc/config/bfin/bfin.opt
*** gcc-12.2.0/gcc/config/bfin/bfin.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/bfin.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Blackfin port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Blackfin port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/constraints.md gcc-13.1.0/gcc/config/bfin/constraints.md
*** gcc-12.2.0/gcc/config/bfin/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Blackfin
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Blackfin
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/elf.h gcc-13.1.0/gcc/config/bfin/elf.h
*** gcc-12.2.0/gcc/config/bfin/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/linux.h gcc-13.1.0/gcc/config/bfin/linux.h
*** gcc-12.2.0/gcc/config/bfin/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/predicates.md gcc-13.1.0/gcc/config/bfin/predicates.md
*** gcc-12.2.0/gcc/config/bfin/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for the Blackfin.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for the Blackfin.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/print-sysroot-suffix.sh gcc-13.1.0/gcc/config/bfin/print-sysroot-suffix.sh
*** gcc-12.2.0/gcc/config/bfin/print-sysroot-suffix.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/print-sysroot-suffix.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  #!/bin/sh
! # Copyright (C) 2007-2022 Free Software Foundation, Inc.
  # This file is part of GCC.
  
  # GCC is free software; you can redistribute it and/or modify
--- 1,5 ----
  #!/bin/sh
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  # This file is part of GCC.
  
  # GCC is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/rtems.h gcc-13.1.0/gcc/config/bfin/rtems.h
*** gcc-12.2.0/gcc/config/bfin/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a bfin
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Ralf Corsépius (ralf.corsepius@rtems.org).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a bfin
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Ralf Corsépius (ralf.corsepius@rtems.org).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/sync.md gcc-13.1.0/gcc/config/bfin/sync.md
*** gcc-12.2.0/gcc/config/bfin/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for Blackfin synchronization instructions.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for Blackfin synchronization instructions.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Analog Devices.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/t-bfin-elf gcc-13.1.0/gcc/config/bfin/t-bfin-elf
*** gcc-12.2.0/gcc/config/bfin/t-bfin-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/t-bfin-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2005-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2005-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/t-bfin-linux gcc-13.1.0/gcc/config/bfin/t-bfin-linux
*** gcc-12.2.0/gcc/config/bfin/t-bfin-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/t-bfin-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2007-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/t-bfin-uclinux gcc-13.1.0/gcc/config/bfin/t-bfin-uclinux
*** gcc-12.2.0/gcc/config/bfin/t-bfin-uclinux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/t-bfin-uclinux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2007-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/bfin/uclinux.h gcc-13.1.0/gcc/config/bfin/uclinux.h
*** gcc-12.2.0/gcc/config/bfin/uclinux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bfin/uclinux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf-helpers.h gcc-13.1.0/gcc/config/bpf/bpf-helpers.h
*** gcc-12.2.0/gcc/config/bpf/bpf-helpers.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf-helpers.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf-opts.h gcc-13.1.0/gcc/config/bpf/bpf-opts.h
*** gcc-12.2.0/gcc/config/bpf/bpf-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for eBPF.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for eBPF.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf-passes.def gcc-13.1.0/gcc/config/bpf/bpf-passes.def
*** gcc-12.2.0/gcc/config/bpf/bpf-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declaration of target-specific passes for eBPF.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Declaration of target-specific passes for eBPF.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf-protos.h gcc-13.1.0/gcc/config/bpf/bpf-protos.h
*** gcc-12.2.0/gcc/config/bpf/bpf-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition of eBPF target for GNU compiler.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definition of eBPF target for GNU compiler.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf.cc gcc-13.1.0/gcc/config/bpf/bpf.cc
*** gcc-12.2.0/gcc/config/bpf/bpf.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation for eBPF.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for code generation for eBPF.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum bpf_builtins
*** 184,196 ****
  
    /* Compile Once - Run Everywhere (CO-RE) support.  */
    BPF_BUILTIN_PRESERVE_ACCESS_INDEX,
  
    BPF_BUILTIN_MAX,
  };
  
  static GTY (()) tree bpf_builtins[(int) BPF_BUILTIN_MAX];
  
- 
  void bpf_register_coreattr_pass (void);
  
  /* Initialize the per-function machine status.  */
--- 184,196 ----
  
    /* Compile Once - Run Everywhere (CO-RE) support.  */
    BPF_BUILTIN_PRESERVE_ACCESS_INDEX,
+   BPF_BUILTIN_PRESERVE_FIELD_INFO,
  
    BPF_BUILTIN_MAX,
  };
  
  static GTY (()) tree bpf_builtins[(int) BPF_BUILTIN_MAX];
  
  void bpf_register_coreattr_pass (void);
  
  /* Initialize the per-function machine status.  */
*************** bpf_option_override (void)
*** 253,258 ****
--- 253,266 ----
    if (bpf_has_jmp32 == -1)
      bpf_has_jmp32 = (bpf_isa >= ISA_V3);
  
+   /* Disable -fstack-protector as it is not supported in BPF.  */
+   if (flag_stack_protect)
+     {
+       inform (input_location,
+               "%<-fstack-protector%> does not work "
+ 	      "on this architecture");
+       flag_stack_protect = 0;
+     }
  }
  
  #undef TARGET_OPTION_OVERRIDE
*************** void
*** 291,296 ****
--- 299,305 ----
  bpf_target_macros (cpp_reader *pfile)
  {
    builtin_define ("__BPF__");
+   builtin_define ("__bpf__");
  
    if (TARGET_BIG_ENDIAN)
      builtin_define ("__BPF_BIG_ENDIAN__");
*************** bpf_compute_frame_layout (void)
*** 427,433 ****
  void
  bpf_expand_prologue (void)
  {
-   rtx insn;
    HOST_WIDE_INT size;
  
    size = (cfun->machine->local_vars_size
--- 436,441 ----
*************** bpf_expand_prologue (void)
*** 467,473 ****
  				       plus_constant (DImode,
  						      hard_frame_pointer_rtx,
  						      fp_offset - 8));
! 		  insn = emit_move_insn (mem, gen_rtx_REG (DImode, regno));
  		  fp_offset -= 8;
  		}
  	    }
--- 475,481 ----
  				       plus_constant (DImode,
  						      hard_frame_pointer_rtx,
  						      fp_offset - 8));
! 		  emit_move_insn (mem, gen_rtx_REG (DImode, regno));
  		  fp_offset -= 8;
  		}
  	    }
*************** bpf_expand_prologue (void)
*** 480,494 ****
       accessor.  */
    if (cfun->calls_alloca)
      {
!       insn = emit_move_insn (stack_pointer_rtx,
! 			     hard_frame_pointer_rtx);
  
        if (size > 0)
  	{
! 	  insn = emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 					 gen_rtx_PLUS (Pmode,
! 						       stack_pointer_rtx,
! 						       GEN_INT (-size))));
  	}
      }
  }
--- 488,502 ----
       accessor.  */
    if (cfun->calls_alloca)
      {
!       emit_move_insn (stack_pointer_rtx,
!                       hard_frame_pointer_rtx);
  
        if (size > 0)
  	{
! 	  emit_insn (gen_rtx_SET (stack_pointer_rtx,
!                                   gen_rtx_PLUS (Pmode,
!                                                 stack_pointer_rtx,
!                                                 GEN_INT (-size))));
  	}
      }
  }
*************** bpf_expand_epilogue (void)
*** 503,509 ****
       not restoring callee-saved registers in BPF.  */
    if (TARGET_XBPF)
      {
-       rtx insn;
        int regno;
        int fp_offset = -cfun->machine->local_vars_size;
  
--- 511,516 ----
*************** bpf_expand_epilogue (void)
*** 527,533 ****
  				       plus_constant (DImode,
  						      hard_frame_pointer_rtx,
  						      fp_offset - 8));
! 		  insn = emit_move_insn (gen_rtx_REG (DImode, regno), mem);
  		  fp_offset -= 8;
  		}
  	    }
--- 534,540 ----
  				       plus_constant (DImode,
  						      hard_frame_pointer_rtx,
  						      fp_offset - 8));
! 		  emit_move_insn (gen_rtx_REG (DImode, regno), mem);
  		  fp_offset -= 8;
  		}
  	    }
*************** bpf_address_base_p (rtx x, bool strict)
*** 659,670 ****
     target machine for a memory operand of mode MODE.  */
  
  static bool
! bpf_legitimate_address_p (machine_mode mode ATTRIBUTE_UNUSED,
  			  rtx x,
  			  bool strict)
  {
    switch (GET_CODE (x))
      {
      case REG:
        return bpf_address_base_p (x, strict);
  
--- 666,680 ----
     target machine for a memory operand of mode MODE.  */
  
  static bool
! bpf_legitimate_address_p (machine_mode mode,
  			  rtx x,
  			  bool strict)
  {
    switch (GET_CODE (x))
      {
+     case CONST_INT:
+       return (mode == FUNCTION_MODE);
+ 
      case REG:
        return bpf_address_base_p (x, strict);
  
*************** bpf_print_operand (FILE *file, rtx op, i
*** 878,890 ****
        output_address (GET_MODE (op), XEXP (op, 0));
        break;
      case CONST_DOUBLE:
!       if (CONST_DOUBLE_HIGH (op))
! 	fprintf (file, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
! 		 CONST_DOUBLE_HIGH (op), CONST_DOUBLE_LOW (op));
!       else if (CONST_DOUBLE_LOW (op) < 0)
! 	fprintf (file, HOST_WIDE_INT_PRINT_HEX, CONST_DOUBLE_LOW (op));
        else
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, CONST_DOUBLE_LOW (op));
        break;
      default:
        output_addr_const (file, op);
--- 888,922 ----
        output_address (GET_MODE (op), XEXP (op, 0));
        break;
      case CONST_DOUBLE:
!       if (GET_MODE (op) == VOIDmode)
! 	{
! 	  if (CONST_DOUBLE_HIGH (op))
! 	    fprintf (file, HOST_WIDE_INT_PRINT_DOUBLE_HEX,
! 		     CONST_DOUBLE_HIGH (op), CONST_DOUBLE_LOW (op));
! 	  else if (CONST_DOUBLE_LOW (op) < 0)
! 	    fprintf (file, HOST_WIDE_INT_PRINT_HEX, CONST_DOUBLE_LOW (op));
! 	  else
! 	    fprintf (file, HOST_WIDE_INT_PRINT_DEC, CONST_DOUBLE_LOW (op));
! 	}
        else
! 	{
! 	  long vals[2];
! 	  real_to_target (vals, CONST_DOUBLE_REAL_VALUE (op), GET_MODE (op));
! 	  vals[0] &= 0xffffffff;
! 	  vals[1] &= 0xffffffff;
! 	  if (GET_MODE (op) == SFmode)
! 	    fprintf (file, "0x%08lx", vals[0]);
! 	  else if (GET_MODE (op) == DFmode)
! 	    {
! 	      /* Note: real_to_target puts vals in target word order.  */
! 	      if (WORDS_BIG_ENDIAN)
! 		fprintf (file, "0x%08lx%08lx", vals[0], vals[1]);
! 	      else
! 		fprintf (file, "0x%08lx%08lx", vals[1], vals[0]);
! 	    }
! 	  else
! 	    gcc_unreachable ();
! 	}
        break;
      default:
        output_addr_const (file, op);
*************** bpf_init_builtins (void)
*** 964,969 ****
--- 996,1004 ----
    def_builtin ("__builtin_preserve_access_index",
  	       BPF_BUILTIN_PRESERVE_ACCESS_INDEX,
  	       build_function_type_list (ptr_type_node, ptr_type_node, 0));
+   def_builtin ("__builtin_preserve_field_info",
+ 	       BPF_BUILTIN_PRESERVE_FIELD_INFO,
+ 	       build_function_type_list (unsigned_type_node, ptr_type_node, unsigned_type_node, 0));
  }
  
  #undef TARGET_INIT_BUILTINS
*************** static tree bpf_core_compute (tree, vec<
*** 973,978 ****
--- 1008,1206 ----
  static int bpf_core_get_index (const tree);
  static bool is_attr_preserve_access (tree);
  
+ /* BPF Compile Once - Run Everywhere (CO-RE) support. Construct a CO-RE
+    relocation record for EXPR of kind KIND to be emitted in the .BTF.ext
+    section. Does nothing if we are not targetting BPF CO-RE, or if the
+    constructed relocation would be a no-op.  */
+ 
+ static void
+ maybe_make_core_relo (tree expr, enum btf_core_reloc_kind kind)
+ {
+   /* If we are not targetting BPF CO-RE, do not make a relocation. We
+      might not be generating any debug info at all.  */
+   if (!TARGET_BPF_CORE)
+     return;
+ 
+   auto_vec<unsigned int, 16> accessors;
+   tree container = bpf_core_compute (expr, &accessors);
+ 
+   /* Any valid use of the builtin must have at least one access. Otherwise,
+      there is nothing to record and nothing to do. This is primarily a
+      guard against optimizations leading to unexpected expressions in the
+      argument of the builtin. For example, if the builtin is used to read
+      a field of a structure which can be statically determined to hold a
+      constant value, the argument to the builtin will be optimized to that
+      constant. This is OK, and means the builtin call is superfluous.
+      e.g.
+      struct S foo;
+      foo.a = 5;
+      int x = __preserve_access_index (foo.a);
+      ... do stuff with x
+      'foo.a' in the builtin argument will be optimized to '5' with -01+.
+      This sequence does not warrant recording a CO-RE relocation.  */
+ 
+   if (accessors.length () < 1)
+     return;
+   accessors.reverse ();
+ 
+   rtx_code_label *label = gen_label_rtx ();
+   LABEL_PRESERVE_P (label) = 1;
+   emit_label (label);
+ 
+   /* Determine what output section this relocation will apply to.
+      If this function is associated with a section, use that. Otherwise,
+      fall back on '.text'.  */
+   const char * section_name;
+   if (current_function_decl && DECL_SECTION_NAME (current_function_decl))
+     section_name = DECL_SECTION_NAME (current_function_decl);
+   else
+     section_name = ".text";
+ 
+   /* Add the CO-RE relocation information to the BTF container.  */
+   bpf_core_reloc_add (TREE_TYPE (container), section_name, &accessors, label,
+ 		      kind);
+ }
+ 
+ /* Expand a call to __builtin_preserve_field_info by evaluating the requested
+    information about SRC according to KIND, and return a tree holding
+    the result.  */
+ 
+ static tree
+ bpf_core_field_info (tree src, enum btf_core_reloc_kind kind)
+ {
+   unsigned int result;
+   poly_int64 bitsize, bitpos;
+   tree var_off = NULL_TREE;
+   machine_mode mode;
+   int unsignedp, reversep, volatilep;
+   location_t loc = EXPR_LOCATION (src);
+ 
+   get_inner_reference (src, &bitsize, &bitpos, &var_off, &mode, &unsignedp,
+ 		       &reversep, &volatilep);
+ 
+   /* Note: Use DECL_BIT_FIELD_TYPE rather than DECL_BIT_FIELD here, because it
+      remembers whether the field in question was originally declared as a
+      bitfield, regardless of how it has been optimized.  */
+   bool bitfieldp = (TREE_CODE (src) == COMPONENT_REF
+ 		    && DECL_BIT_FIELD_TYPE (TREE_OPERAND (src, 1)));
+ 
+   unsigned int align = TYPE_ALIGN (TREE_TYPE (src));
+   if (TREE_CODE (src) == COMPONENT_REF)
+     {
+       tree field = TREE_OPERAND (src, 1);
+       if (DECL_BIT_FIELD_TYPE (field))
+ 	align = TYPE_ALIGN (DECL_BIT_FIELD_TYPE (field));
+       else
+ 	align = TYPE_ALIGN (TREE_TYPE (field));
+     }
+ 
+   unsigned int start_bitpos = bitpos & ~(align - 1);
+   unsigned int end_bitpos = start_bitpos + align;
+ 
+   switch (kind)
+     {
+     case BPF_RELO_FIELD_BYTE_OFFSET:
+       {
+ 	if (var_off != NULL_TREE)
+ 	  {
+ 	    error_at (loc, "unsupported variable field offset");
+ 	    return error_mark_node;
+ 	  }
+ 
+ 	if (bitfieldp)
+ 	  result = start_bitpos / 8;
+ 	else
+ 	  result = bitpos / 8;
+       }
+       break;
+ 
+     case BPF_RELO_FIELD_BYTE_SIZE:
+       {
+ 	if (mode == BLKmode && bitsize == -1)
+ 	  {
+ 	    error_at (loc, "unsupported variable size field access");
+ 	    return error_mark_node;
+ 	  }
+ 
+ 	if (bitfieldp)
+ 	  {
+ 	    /* To match LLVM behavior, byte size of bitfields is recorded as
+ 	       the full size of the base type. A 3-bit bitfield of type int is
+ 	       therefore recorded as having a byte size of 4 bytes. */
+ 	    result = end_bitpos - start_bitpos;
+ 	    if (result & (result - 1))
+ 	      {
+ 		error_at (loc, "unsupported field expression");
+ 		return error_mark_node;
+ 	      }
+ 	    result = result / 8;
+ 	  }
+ 	else
+ 	  result = bitsize / 8;
+       }
+       break;
+ 
+     case BPF_RELO_FIELD_EXISTS:
+       /* The field always exists at compile time.  */
+       result = 1;
+       break;
+ 
+     case BPF_RELO_FIELD_SIGNED:
+       result = !unsignedp;
+       break;
+ 
+     case BPF_RELO_FIELD_LSHIFT_U64:
+     case BPF_RELO_FIELD_RSHIFT_U64:
+       {
+ 	if (mode == BLKmode && bitsize == -1)
+ 	  {
+ 	    error_at (loc, "unsupported variable size field access");
+ 	    return error_mark_node;
+ 	  }
+ 	if (var_off != NULL_TREE)
+ 	  {
+ 	    error_at (loc, "unsupported variable field offset");
+ 	    return error_mark_node;
+ 	  }
+ 
+ 	if (!bitfieldp)
+ 	  {
+ 	    if (bitsize > 64)
+ 	      {
+ 		error_at (loc, "field size too large");
+ 		return error_mark_node;
+ 	      }
+ 	    result = 64 - bitsize;
+ 	    break;
+ 	  }
+ 
+ 	if (end_bitpos - start_bitpos > 64)
+ 	  {
+ 	    error_at (loc, "field size too large");
+ 	    return error_mark_node;
+ 	  }
+ 
+ 	if (kind == BPF_RELO_FIELD_LSHIFT_U64)
+ 	  {
+ 	    if (TARGET_BIG_ENDIAN)
+ 	      result = bitpos + 64 - start_bitpos - align;
+ 	    else
+ 	      result = start_bitpos + 64 - bitpos - bitsize;
+ 	  }
+ 	else /* RSHIFT_U64 */
+ 	  result = 64 - bitsize;
+       }
+       break;
+ 
+     default:
+       error ("invalid second argument to built-in function");
+       return error_mark_node;
+       break;
+     }
+ 
+   return build_int_cst (unsigned_type_node, result);
+ }
+ 
  /* Expand a call to a BPF-specific built-in function that was set up
     with bpf_init_builtins.  */
  
*************** bpf_expand_builtin (tree exp, rtx target
*** 1023,1039 ****
        /* The result of the load is in R0.  */
        return gen_rtx_REG (ops[0].mode, BPF_R0);
      }
!   else if (code == -1)
      {
!       /* A resolved overloaded builtin, e.g. __bpf_preserve_access_index_si */
        tree arg = CALL_EXPR_ARG (exp, 0);
  
        if (arg == NULL_TREE)
  	return NULL_RTX;
  
-       auto_vec<unsigned int, 16> accessors;
-       tree container;
- 
        if (TREE_CODE (arg) == SSA_NAME)
  	{
  	  gimple *def_stmt = SSA_NAME_DEF_STMT (arg);
--- 1251,1265 ----
        /* The result of the load is in R0.  */
        return gen_rtx_REG (ops[0].mode, BPF_R0);
      }
! 
!   else if (code == -BPF_BUILTIN_PRESERVE_ACCESS_INDEX)
      {
!       /* A resolved overloaded __builtin_preserve_access_index.  */
        tree arg = CALL_EXPR_ARG (exp, 0);
  
        if (arg == NULL_TREE)
  	return NULL_RTX;
  
        if (TREE_CODE (arg) == SSA_NAME)
  	{
  	  gimple *def_stmt = SSA_NAME_DEF_STMT (arg);
*************** bpf_expand_builtin (tree exp, rtx target
*** 1047,1097 ****
        /* Avoid double-recording information if the argument is an access to
  	 a struct/union marked __attribute__((preserve_access_index)). This
  	 Will be handled by the attribute handling pass.  */
!       if (is_attr_preserve_access (arg))
! 	return expand_normal (arg);
! 
!       container = bpf_core_compute (arg, &accessors);
! 
!       /* Any valid use of the builtin must have at least one access. Otherwise,
! 	 there is nothing to record and nothing to do. This is primarily a
! 	 guard against optimizations leading to unexpected expressions in the
! 	 argument of the builtin. For example, if the builtin is used to read
! 	 a field of a structure which can be statically determined to hold a
! 	 constant value, the argument to the builtin will be optimized to that
! 	 constant. This is OK, and means the builtin call is superfluous.
! 	 e.g.
! 	   struct S foo;
! 	   foo.a = 5;
! 	   int x = __preserve_access_index (foo.a);
! 	   ... do stuff with x
! 	 'foo.a' in the builtin argument will be optimized to '5' with -01+.
! 	 This sequence does not warrant recording a CO-RE relocation.  */
  
!       if (accessors.length () < 1)
! 	return expand_normal (arg);
  
!       accessors.reverse ();
  
!       container = TREE_TYPE (container);
  
!       rtx_code_label *label = gen_label_rtx ();
!       LABEL_PRESERVE_P (label) = 1;
!       emit_label (label);
  
!       /* Determine what output section this relocation will apply to.
! 	 If this function is associated with a section, use that. Otherwise,
! 	 fall back on '.text'.  */
!       const char * section_name;
!       if (current_function_decl && DECL_SECTION_NAME (current_function_decl))
! 	section_name = DECL_SECTION_NAME (current_function_decl);
!       else
! 	section_name = ".text";
  
!       /* Add the CO-RE relocation information to the BTF container.  */
!       bpf_core_reloc_add (container, section_name, &accessors, label);
  
!       return expand_normal (arg);
      }
    gcc_unreachable ();
  }
  
--- 1273,1317 ----
        /* Avoid double-recording information if the argument is an access to
  	 a struct/union marked __attribute__((preserve_access_index)). This
  	 Will be handled by the attribute handling pass.  */
!       if (!is_attr_preserve_access (arg))
! 	maybe_make_core_relo (arg, BPF_RELO_FIELD_BYTE_OFFSET);
  
!       return expand_normal (arg);
!     }
  
!   else if (code == -BPF_BUILTIN_PRESERVE_FIELD_INFO)
!     {
!       /* A resolved overloaded __builtin_preserve_field_info.  */
!       tree src = CALL_EXPR_ARG (exp, 0);
!       tree kind_tree = CALL_EXPR_ARG (exp, 1);
!       unsigned HOST_WIDE_INT kind_val = 0;
!       if (tree_fits_uhwi_p (kind_tree))
! 	kind_val = tree_to_uhwi (kind_tree);
!       else
! 	{
! 	  error ("invalid argument to built-in function");
! 	  return expand_normal (error_mark_node);
! 	}
  
!       enum btf_core_reloc_kind kind = (enum btf_core_reloc_kind) kind_val;
  
!       if (TREE_CODE (src) == SSA_NAME)
! 	{
! 	  gimple *def_stmt = SSA_NAME_DEF_STMT (src);
! 	  if (is_gimple_assign (def_stmt))
! 	    src = gimple_assign_rhs1 (def_stmt);
! 	}
!       if (TREE_CODE (src) == ADDR_EXPR)
! 	src = TREE_OPERAND (src, 0);
  
!       tree result = bpf_core_field_info (src, kind);
  
!       if (result != error_mark_node)
! 	maybe_make_core_relo (src, kind);
  
!       return expand_normal (result);
      }
+ 
    gcc_unreachable ();
  }
  
*************** bpf_core_get_index (const tree node)
*** 1257,1297 ****
     __builtin_preserve_access_index.  */
  
  static tree
! bpf_core_newdecl (tree type)
  {
!   tree rettype = build_function_type_list (type, type, NULL);
    char name[80];
!   int len = snprintf (name, sizeof (name), "%s", "__builtin_pai_");
  
!   static unsigned long cnt = 0;
!   len = snprintf (name + len, sizeof (name) - len, "%lu", cnt++);
  
!   return add_builtin_function_ext_scope (name, rettype, -1, BUILT_IN_MD, NULL,
! 					 NULL_TREE);
  }
  
  /* Return whether EXPR could access some aggregate data structure that
     BPF CO-RE support needs to know about.  */
  
! static int
  bpf_core_is_maybe_aggregate_access (tree expr)
  {
!   enum tree_code code = TREE_CODE (expr);
!   if (code == COMPONENT_REF || code == ARRAY_REF)
!     return 1;
! 
!   if (code == ADDR_EXPR)
        return bpf_core_is_maybe_aggregate_access (TREE_OPERAND (expr, 0));
! 
!   return 0;
  }
  
  /* Callback function used with walk_tree from bpf_resolve_overloaded_builtin.  */
  
  static tree
  bpf_core_walk (tree *tp, int *walk_subtrees, void *data)
  {
!   location_t loc = *((location_t *) data);
  
    /* If this is a type, don't do anything. */
    if (TYPE_P (*tp))
--- 1477,1549 ----
     __builtin_preserve_access_index.  */
  
  static tree
! bpf_core_newdecl (tree type, enum bpf_builtins which)
  {
!   tree rettype;
    char name[80];
!   static unsigned long pai_count = 0;
!   static unsigned long pfi_count = 0;
  
!   switch (which)
!     {
!     case BPF_BUILTIN_PRESERVE_ACCESS_INDEX:
!       {
! 	rettype = build_function_type_list (type, type, NULL);
! 	int len = snprintf (name, sizeof (name), "%s", "__builtin_pai_");
! 	len = snprintf (name + len, sizeof (name) - len, "%lu", pai_count++);
!       }
!       break;
  
!     case BPF_BUILTIN_PRESERVE_FIELD_INFO:
!       {
! 	rettype = build_function_type_list (unsigned_type_node, type,
! 					    unsigned_type_node, NULL);
! 	int len = snprintf (name, sizeof (name), "%s", "__builtin_pfi_");
! 	len = snprintf (name + len, sizeof (name) - len, "%lu", pfi_count++);
!       }
!       break;
! 
!     default:
!       gcc_unreachable ();
!     }
! 
!   return add_builtin_function_ext_scope (name, rettype, -which,
! 					 BUILT_IN_MD, NULL, NULL_TREE);
  }
  
  /* Return whether EXPR could access some aggregate data structure that
     BPF CO-RE support needs to know about.  */
  
! static bool
  bpf_core_is_maybe_aggregate_access (tree expr)
  {
!   switch (TREE_CODE (expr))
!     {
!     case COMPONENT_REF:
!     case BIT_FIELD_REF:
!     case ARRAY_REF:
!     case ARRAY_RANGE_REF:
!       return true;
!     case ADDR_EXPR:
!     case NOP_EXPR:
        return bpf_core_is_maybe_aggregate_access (TREE_OPERAND (expr, 0));
!     default:
!       return false;
!     }
  }
  
+ struct core_walk_data {
+   location_t loc;
+   enum bpf_builtins which;
+   tree arg;
+ };
+ 
  /* Callback function used with walk_tree from bpf_resolve_overloaded_builtin.  */
  
  static tree
  bpf_core_walk (tree *tp, int *walk_subtrees, void *data)
  {
!   struct core_walk_data *dat = (struct core_walk_data *) data;
  
    /* If this is a type, don't do anything. */
    if (TYPE_P (*tp))
*************** bpf_core_walk (tree *tp, int *walk_subtr
*** 1300,1351 ****
        return NULL_TREE;
      }
  
!   if (bpf_core_is_maybe_aggregate_access (*tp))
      {
!       tree newdecl = bpf_core_newdecl (TREE_TYPE (*tp));
!       tree newcall = build_call_expr_loc (loc, newdecl, 1, *tp);
!       *tp = newcall;
        *walk_subtrees = 0;
      }
  
    return NULL_TREE;
  }
  
  
  /* Implement TARGET_RESOLVE_OVERLOADED_BUILTIN (see gccint manual section
     Target Macros::Misc.).
!    We use this for the __builtin_preserve_access_index builtin for CO-RE
!    support.
  
     FNDECL is the declaration of the builtin, and ARGLIST is the list of
!    arguments passed to it, and is really a vec<tree,_> *.
! 
!    In this case, the 'operation' implemented by the builtin is a no-op;
!    the builtin is just a marker. So, the result is simply the argument.  */
  
  static tree
  bpf_resolve_overloaded_builtin (location_t loc, tree fndecl, void *arglist)
  {
!   if (DECL_MD_FUNCTION_CODE (fndecl) != BPF_BUILTIN_PRESERVE_ACCESS_INDEX)
      return NULL_TREE;
  
-   /* We only expect one argument, but it may be an arbitrarily-complicated
-      statement-expression. */
    vec<tree, va_gc> *params = static_cast<vec<tree, va_gc> *> (arglist);
    unsigned n_params = params ? params->length() : 0;
  
!   if (n_params != 1)
      {
!       error_at (loc, "expected exactly 1 argument");
!       return NULL_TREE;
      }
  
    tree param = (*params)[0];
  
!   /* If not generating BPF_CORE information, the builtin does nothing.  */
!   if (!TARGET_BPF_CORE)
      return param;
  
    /* Do remove_c_maybe_const_expr for the arg.
       TODO: WHY do we have to do this here? Why doesn't c-typeck take care
       of it before or after this hook? */
--- 1552,1663 ----
        return NULL_TREE;
      }
  
!   /* Build a new function call to a type-resolved temporary builtin for the
!      desired operation, and pass along args as necessary.  */
!   tree newdecl = bpf_core_newdecl (TREE_TYPE (*tp), dat->which);
! 
!   if (dat->which == BPF_BUILTIN_PRESERVE_ACCESS_INDEX)
      {
!       if (bpf_core_is_maybe_aggregate_access (*tp))
! 	{
! 	  *tp = build_call_expr_loc (dat->loc, newdecl, 1, *tp);
! 	  *walk_subtrees = 0;
! 	}
!     }
!   else
!     {
!       *tp = build_call_expr_loc (dat->loc, newdecl, 2, *tp, dat->arg);
        *walk_subtrees = 0;
      }
  
    return NULL_TREE;
  }
  
+ /* Implement target hook small_register_classes_for_mode_p.  */
+ 
+ static bool
+ bpf_small_register_classes_for_mode_p (machine_mode mode)
+ {
+   if (TARGET_XBPF)
+     return 1;
+   else
+     /* Avoid putting function addresses in registers, as calling these
+        is not supported in eBPF.  */
+     return (mode != FUNCTION_MODE);
+ }
+ 
+ #undef TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P
+ #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P \
+   bpf_small_register_classes_for_mode_p
+ 
+ /* Return whether EXPR is a valid first argument for a call to
+    __builtin_preserve_field_info.  */
+ 
+ static bool
+ bpf_is_valid_preserve_field_info_arg (tree expr)
+ {
+   switch (TREE_CODE (expr))
+     {
+     case COMPONENT_REF:
+     case BIT_FIELD_REF:
+     case ARRAY_REF:
+     case ARRAY_RANGE_REF:
+       return true;
+     case NOP_EXPR:
+       return bpf_is_valid_preserve_field_info_arg (TREE_OPERAND (expr, 0));
+     case ADDR_EXPR:
+       /* Do not accept ADDR_EXPRs like &foo.bar, but do accept accesses like
+ 	 foo.baz where baz is an array.  */
+       return (TREE_CODE (TREE_TYPE (TREE_OPERAND (expr, 0))) == ARRAY_TYPE);
+     default:
+       return false;
+     }
+ }
  
  /* Implement TARGET_RESOLVE_OVERLOADED_BUILTIN (see gccint manual section
     Target Macros::Misc.).
!    Used for CO-RE support builtins such as __builtin_preserve_access_index
!    and __builtin_preserve_field_info.
  
     FNDECL is the declaration of the builtin, and ARGLIST is the list of
!    arguments passed to it, and is really a vec<tree,_> *.  */
  
  static tree
  bpf_resolve_overloaded_builtin (location_t loc, tree fndecl, void *arglist)
  {
!   enum bpf_builtins which = (enum bpf_builtins) DECL_MD_FUNCTION_CODE (fndecl);
! 
!   if (which < BPF_BUILTIN_PRESERVE_ACCESS_INDEX
!       || which >= BPF_BUILTIN_MAX)
      return NULL_TREE;
  
    vec<tree, va_gc> *params = static_cast<vec<tree, va_gc> *> (arglist);
    unsigned n_params = params ? params->length() : 0;
  
!   if (!(which == BPF_BUILTIN_PRESERVE_ACCESS_INDEX && n_params == 1)
!       && n_params != 2)
      {
!       error_at (loc, "wrong number of arguments");
!       return error_mark_node;
      }
  
    tree param = (*params)[0];
  
!   /* If not generating BPF_CORE information, preserve_access_index does
!      nothing, and simply "resolves to" the argument.  */
!   if (which == BPF_BUILTIN_PRESERVE_ACCESS_INDEX && !TARGET_BPF_CORE)
      return param;
  
+   /* For __builtin_preserve_field_info, enforce that the parameter is exactly a
+      field access and not a more complex expression.  */
+   else if (which == BPF_BUILTIN_PRESERVE_FIELD_INFO
+ 	   && !bpf_is_valid_preserve_field_info_arg (param))
+     {
+       error_at (EXPR_LOC_OR_LOC (param, loc),
+ 		"argument is not a field access");
+       return error_mark_node;
+     }
+ 
    /* Do remove_c_maybe_const_expr for the arg.
       TODO: WHY do we have to do this here? Why doesn't c-typeck take care
       of it before or after this hook? */
*************** bpf_resolve_overloaded_builtin (location
*** 1369,1375 ****
       This ensures that all the relevant information remains within the
       expression trees the builtin finally gets.  */
  
!   walk_tree (&param, bpf_core_walk, (void *) &loc, NULL);
  
    return param;
  }
--- 1681,1695 ----
       This ensures that all the relevant information remains within the
       expression trees the builtin finally gets.  */
  
!   struct core_walk_data data;
!   data.loc = loc;
!   data.which = which;
!   if (which == BPF_BUILTIN_PRESERVE_ACCESS_INDEX)
!     data.arg = NULL_TREE;
!   else
!     data.arg = (*params)[1];
! 
!   walk_tree (&param, bpf_core_walk, (void *) &data, NULL);
  
    return param;
  }
*************** handle_attr_preserve (function *fn)
*** 1456,1462 ****
  {
    basic_block bb;
    rtx_insn *insn;
-   rtx_code_label *label;
    FOR_EACH_BB_FN (bb, fn)
      {
        FOR_BB_INSNS (bb, insn)
--- 1776,1781 ----
*************** handle_attr_preserve (function *fn)
*** 1487,1513 ****
  		    }
  
  		  if (is_attr_preserve_access (expr))
! 		    {
! 		      auto_vec<unsigned int, 16> accessors;
! 		      tree container = bpf_core_compute (expr, &accessors);
! 		      if (accessors.length () < 1)
! 			continue;
! 		      accessors.reverse ();
! 
! 		      container = TREE_TYPE (container);
! 		      const char * section_name;
! 		      if (DECL_SECTION_NAME (fn->decl))
! 			section_name = DECL_SECTION_NAME (fn->decl);
! 		      else
! 			section_name = ".text";
! 
! 		      label = gen_label_rtx ();
! 		      LABEL_PRESERVE_P (label) = 1;
! 		      emit_label (label);
! 
! 		      /* Add the CO-RE relocation information to the BTF container.  */
! 		      bpf_core_reloc_add (container, section_name, &accessors, label);
! 		    }
  		}
  	    }
  	  rtx_insn *seq = get_insns ();
--- 1806,1812 ----
  		    }
  
  		  if (is_attr_preserve_access (expr))
! 		    maybe_make_core_relo (expr, BPF_RELO_FIELD_BYTE_OFFSET);
  		}
  	    }
  	  rtx_insn *seq = get_insns ();
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf.h gcc-13.1.0/gcc/config/bpf/bpf.h
*** gcc-12.2.0/gcc/config/bpf/bpf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition of the eBPF target for GCC.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definition of the eBPF target for GCC.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** enum reg_class
*** 209,215 ****
     register REGNO.  In general there is more that one such class;
     choose a class which is "minimal", meaning that no smaller class
     also contains the register.  */
! #define REGNO_REG_CLASS(REGNO) GENERAL_REGS
  
  /* A macro whose definition is the name of the class to which a
     valid base register must belong.  A base register is one used in
--- 209,215 ----
     register REGNO.  In general there is more that one such class;
     choose a class which is "minimal", meaning that no smaller class
     also contains the register.  */
! #define REGNO_REG_CLASS(REGNO) ((void)(REGNO), GENERAL_REGS)
  
  /* A macro whose definition is the name of the class to which a
     valid base register must belong.  A base register is one used in
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf.md gcc-13.1.0/gcc/config/bpf/bpf.md
*** gcc-12.2.0/gcc/config/bpf/bpf.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for eBPF.
! ;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Machine description for eBPF.
! ;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
***************
*** 242,248 ****
  
  (define_insn "zero_extendhidi2"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r")
! 	(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "0,r,m")))]
    ""
    "@
     and\t%0,0xffff
--- 242,248 ----
  
  (define_insn "zero_extendhidi2"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r")
! 	(zero_extend:DI (match_operand:HI 1 "nonimmediate_operand" "0,r,q")))]
    ""
    "@
     and\t%0,0xffff
***************
*** 252,258 ****
  
  (define_insn "zero_extendqidi2"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r")
! 	(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "0,r,m")))]
    ""
    "@
     and\t%0,0xff
--- 252,258 ----
  
  (define_insn "zero_extendqidi2"
    [(set (match_operand:DI 0 "register_operand" "=r,r,r")
! 	(zero_extend:DI (match_operand:QI 1 "nonimmediate_operand" "0,r,q")))]
    ""
    "@
     and\t%0,0xff
***************
*** 263,269 ****
  (define_insn "zero_extendsidi2"
    [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
! 	  (match_operand:SI 1 "nonimmediate_operand" "r,m")))]
    ""
    "@
     * return bpf_has_alu32 ? \"mov32\t%0,%1\" : \"mov\t%0,%1\;and\t%0,0xffffffff\";
--- 263,269 ----
  (define_insn "zero_extendsidi2"
    [(set (match_operand:DI 0 "register_operand" "=r,r")
  	(zero_extend:DI
! 	  (match_operand:SI 1 "nonimmediate_operand" "r,q")))]
    ""
    "@
     * return bpf_has_alu32 ? \"mov32\t%0,%1\" : \"mov\t%0,%1\;and\t%0,0xffffffff\";
***************
*** 302,309 ****
  }")
  
  (define_insn "*mov<MM:mode>"
!   [(set (match_operand:MM 0 "nonimmediate_operand" "=r, r,r,m,m")
!         (match_operand:MM 1 "mov_src_operand"      " m,rI,B,r,I"))]
    ""
    "@
     ldx<mop>\t%0,%1
--- 302,309 ----
  }")
  
  (define_insn "*mov<MM:mode>"
!   [(set (match_operand:MM 0 "nonimmediate_operand" "=r, r,r,q,q")
!         (match_operand:MM 1 "mov_src_operand"      " q,rI,B,r,I"))]
    ""
    "@
     ldx<mop>\t%0,%1
***************
*** 341,346 ****
--- 341,363 ----
    "rsh<msuffix>\t%0,%2"
    [(set_attr "type" "<mtype>")])
  
+ ;;;; Endianness conversion
+ 
+ (define_mode_iterator BSM [HI SI DI])
+ (define_mode_attr endmode [(HI "16") (SI "32") (DI "64")])
+ 
+ (define_insn "bswap<BSM:mode>2"
+   [(set (match_operand:BSM 0 "register_operand"            "=r")
+         (bswap:BSM (match_operand:BSM 1 "register_operand" " r")))]
+   ""
+ {
+   if (TARGET_BIG_ENDIAN)
+     return "endle\t%0, <endmode>";
+   else
+     return "endbe\t%0, <endmode>";
+ }
+   [(set_attr "type" "end")])
+ 
  ;;;; Conditional branches
  
  ;; The eBPF jump instructions use 64-bit arithmetic when evaluating
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/bpf.opt gcc-13.1.0/gcc/config/bpf/bpf.opt
*** gcc-12.2.0/gcc/config/bpf/bpf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/bpf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the eBPF compiler port.
  
! ; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the eBPF compiler port.
  
! ; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/constraints.md gcc-13.1.0/gcc/config/bpf/constraints.md
*** gcc-12.2.0/gcc/config/bpf/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for eBPF.
! ;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for eBPF.
! ;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 29,31 ****
--- 29,42 ----
  (define_constraint "S"
    "A constant call address."
    (match_code "const,symbol_ref,label_ref,const_int"))
+ 
+ ;;
+ ;; Memory constraints.
+ ;;
+ 
+ ; Just like 'm' but disallows const_int.
+ ; Used for ldx[b,h,w,dw] and stx[b,h,w,dw] instructions.
+ (define_memory_constraint "q"
+   "Memory reference which is not a constant integer."
+   (and (match_code "mem")
+        (match_test "GET_CODE(XEXP(op, 0)) != CONST_INT")))
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/coreout.cc gcc-13.1.0/gcc/config/bpf/coreout.cc
*** gcc-12.2.0/gcc/config/bpf/coreout.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/coreout.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* BPF Compile Once - Run Everywhere (CO-RE) support.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* BPF Compile Once - Run Everywhere (CO-RE) support.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** static GTY (()) vec<bpf_core_section_ref
*** 152,158 ****
  
  void
  bpf_core_reloc_add (const tree type, const char * section_name,
! 		    vec<unsigned int> *accessors, rtx_code_label *label)
  {
    char buf[40];
    unsigned int i, n = 0;
--- 152,159 ----
  
  void
  bpf_core_reloc_add (const tree type, const char * section_name,
! 		    vec<unsigned int> *accessors, rtx_code_label *label,
! 		    enum btf_core_reloc_kind kind)
  {
    char buf[40];
    unsigned int i, n = 0;
*************** bpf_core_reloc_add (const tree type, con
*** 173,179 ****
  
    bpfcr->bpfcr_type = get_btf_id (ctf_lookup_tree_type (ctfc, type));
    bpfcr->bpfcr_insn_label = label;
!   bpfcr->bpfcr_kind = BPF_RELO_FIELD_BYTE_OFFSET;
  
    /* Add the CO-RE reloc to the appropriate section.  */
    bpf_core_section_ref sec;
--- 174,180 ----
  
    bpfcr->bpfcr_type = get_btf_id (ctf_lookup_tree_type (ctfc, type));
    bpfcr->bpfcr_insn_label = label;
!   bpfcr->bpfcr_kind = kind;
  
    /* Add the CO-RE reloc to the appropriate section.  */
    bpf_core_section_ref sec;
*************** bpf_core_get_sou_member_index (ctf_conta
*** 207,213 ****
    if (TREE_CODE (node) == FIELD_DECL)
      {
        const tree container = DECL_CONTEXT (node);
-       const char * name = IDENTIFIER_POINTER (DECL_NAME (node));
  
        /* Lookup the CTF type info for the containing type.  */
        dw_die_ref die = lookup_type_die (container);
--- 208,213 ----
*************** bpf_core_get_sou_member_index (ctf_conta
*** 222,237 ****
        if (kind != CTF_K_STRUCT && kind != CTF_K_UNION)
          return -1;
  
        int i = 0;
        ctf_dmdef_t * dmd;
        for (dmd = dtd->dtd_u.dtu_members;
             dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd))
          {
!           if (get_btf_id (dmd->dmd_type) > BTF_MAX_TYPE)
!             continue;
!           if (strcmp (dmd->dmd_name, name) == 0)
!             return i;
!           i++;
          }
      }
    return -1;
--- 222,242 ----
        if (kind != CTF_K_STRUCT && kind != CTF_K_UNION)
          return -1;
  
+       tree field = TYPE_FIELDS (container);
        int i = 0;
        ctf_dmdef_t * dmd;
        for (dmd = dtd->dtd_u.dtu_members;
             dmd != NULL; dmd = (ctf_dmdef_t *) ctf_dmd_list_next (dmd))
          {
! 	  bool field_has_btf = get_btf_id (dmd->dmd_type) <= BTF_MAX_TYPE;
! 
! 	  if (field == node)
! 	    return field_has_btf ? i : -1;
! 
! 	  if (field_has_btf)
! 	    i++;
! 
! 	  field = DECL_CHAIN (field);
          }
      }
    return -1;
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/coreout.h gcc-13.1.0/gcc/config/bpf/coreout.h
*** gcc-12.2.0/gcc/config/bpf/coreout.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/coreout.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* coreout.h - Declarations and definitions related to
     BPF Compile Once - Run Everywhere (CO-RE) support.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* coreout.h - Declarations and definitions related to
     BPF Compile Once - Run Everywhere (CO-RE) support.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** extern void btf_ext_init (void);
*** 103,109 ****
  extern void btf_ext_output (void);
  
  extern void bpf_core_reloc_add (const tree, const char *, vec<unsigned int> *,
! 				rtx_code_label *);
  extern int bpf_core_get_sou_member_index (ctf_container_ref, const tree);
  
  #ifdef	__cplusplus
--- 103,109 ----
  extern void btf_ext_output (void);
  
  extern void bpf_core_reloc_add (const tree, const char *, vec<unsigned int> *,
! 				rtx_code_label *, enum btf_core_reloc_kind);
  extern int bpf_core_get_sou_member_index (ctf_container_ref, const tree);
  
  #ifdef	__cplusplus
diff -Nrcpad gcc-12.2.0/gcc/config/bpf/predicates.md gcc-13.1.0/gcc/config/bpf/predicates.md
*** gcc-12.2.0/gcc/config/bpf/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/bpf/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for eBPF.
! ;; Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for eBPF.
! ;; Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-isas.def gcc-13.1.0/gcc/config/c6x/c6x-isas.def
*** gcc-12.2.0/gcc/config/c6x/c6x-isas.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-isas.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C6X ISA names.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* C6X ISA names.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-modes.def gcc-13.1.0/gcc/config/c6x/c6x-modes.def
*** gcc-12.2.0/gcc/config/c6x/c6x-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for TI C6x.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for TI C6x.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-mult.md gcc-13.1.0/gcc/config/c6x/c6x-mult.md
*** gcc-12.2.0/gcc/config/c6x/c6x-mult.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-mult.md	Wed Apr 26 07:11:18 2023
***************
*** 3,9 ****
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 3,9 ----
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 424,430 ****
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 424,430 ----
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-mult.md.in gcc-13.1.0/gcc/config/c6x/c6x-mult.md.in
*** gcc-12.2.0/gcc/config/c6x/c6x-mult.md.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-mult.md.in	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 1,7 ----
  ;; Multiplication patterns for TI C6X.
  ;; This file is processed by genmult.sh to produce two variants of each
  ;; pattern, a normal one and a real_mult variant for modulo scheduling.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-opts.h gcc-13.1.0/gcc/config/c6x/c6x-opts.h
*** gcc-12.2.0/gcc/config/c6x/c6x-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for TI C6X.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for TI C6X.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-protos.h gcc-13.1.0/gcc/config/c6x/c6x-protos.h
*** gcc-12.2.0/gcc/config/c6x/c6x-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in c6x.cc.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in c6x.cc.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-sched.md gcc-13.1.0/gcc/config/c6x/c6x-sched.md
*** gcc-12.2.0/gcc/config/c6x/c6x-sched.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-sched.md	Wed Apr 26 07:11:18 2023
***************
*** 4,10 ****
  ;; Definitions for side 1, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 4,10 ----
  ;; Definitions for side 1, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 237,243 ****
  ;; Definitions for side 2, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 237,243 ----
  ;; Definitions for side 2, cross n
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 470,476 ****
  ;; Definitions for side 1, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 470,476 ----
  ;; Definitions for side 1, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
***************
*** 703,709 ****
  ;; Definitions for side 2, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 703,709 ----
  ;; Definitions for side 2, cross y
  
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-sched.md.in gcc-13.1.0/gcc/config/c6x/c6x-sched.md.in
*** gcc-12.2.0/gcc/config/c6x/c6x-sched.md.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-sched.md.in	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
--- 1,5 ----
  ;; Scheduling description for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x-tables.opt gcc-13.1.0/gcc/config/c6x/c6x-tables.opt
*** gcc-12.2.0/gcc/config/c6x/c6x-tables.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x-tables.opt	Wed Apr 26 07:11:18 2023
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x.cc gcc-13.1.0/gcc/config/c6x/c6x.cc
*** gcc-12.2.0/gcc/config/c6x/c6x.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Code for TI C6X
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Target Code for TI C6X
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
*************** typedef int unit_req_table[2][UNIT_REQ_M
*** 195,201 ****
  static unit_req_table unit_reqs;
  
  /* Register map for debugging.  */
! unsigned const dbx_register_map[FIRST_PSEUDO_REGISTER] =
  {
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,	/* A0 - A15.  */
    37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,	/* A16 - A32.  */
--- 195,201 ----
  static unit_req_table unit_reqs;
  
  /* Register map for debugging.  */
! unsigned const debugger_register_map[FIRST_PSEUDO_REGISTER] =
  {
    0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,	/* A0 - A15.  */
    37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49,	/* A16 - A32.  */
*************** static unsigned reg_save_order[] =
*** 2580,2586 ****
    REG_B14, REG_A15
  };
  
! #define N_SAVE_ORDER (sizeof reg_save_order / sizeof *reg_save_order)
  
  /* Compute the layout of the stack frame and store it in FRAME.  */
  
--- 2580,2586 ----
    REG_B14, REG_A15
  };
  
! #define N_SAVE_ORDER (ARRAY_SIZE (reg_save_order))
  
  /* Compute the layout of the stack frame and store it in FRAME.  */
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x.h gcc-13.1.0/gcc/config/c6x/c6x.h
*** gcc-12.2.0/gcc/config/c6x/c6x.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Definitions for TI C6X.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Target Definitions for TI C6X.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
*************** struct GTY(()) machine_function
*** 503,511 ****
      "B24", "B25", "B26", "B27", "B28", "B29", "B30", "B31",	\
      "FP", "ARGP", "ILC" }
  
! #define DBX_REGISTER_NUMBER(N) (dbx_register_map[(N)])
  
! extern unsigned const dbx_register_map[FIRST_PSEUDO_REGISTER];
  
  #define FINAL_PRESCAN_INSN c6x_final_prescan_insn
  
--- 503,511 ----
      "B24", "B25", "B26", "B27", "B28", "B29", "B30", "B31",	\
      "FP", "ARGP", "ILC" }
  
! #define DEBUGGER_REGNO(N) (debugger_register_map[(N)])
  
! extern unsigned const debugger_register_map[FIRST_PSEUDO_REGISTER];
  
  #define FINAL_PRESCAN_INSN c6x_final_prescan_insn
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x.md gcc-13.1.0/gcc/config/c6x/c6x.md
*** gcc-12.2.0/gcc/config/c6x/c6x.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
--- 1,5 ----
  ;; Machine description for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x.opt gcc-13.1.0/gcc/config/c6x/c6x.opt
*** gcc-12.2.0/gcc/config/c6x/c6x.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Option definitions for TI C6X.
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ; Contributed by CodeSourcery.
  ;
--- 1,5 ----
  ; Option definitions for TI C6X.
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ; Contributed by CodeSourcery.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/c6x_intrinsics.h gcc-13.1.0/gcc/config/c6x/c6x_intrinsics.h
*** gcc-12.2.0/gcc/config/c6x/c6x_intrinsics.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/c6x_intrinsics.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Intrinsics for TI C6X.
  
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,6 ----
  /* Intrinsics for TI C6X.
  
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/constraints.md gcc-13.1.0/gcc/config/c6x/constraints.md
*** gcc-12.2.0/gcc/config/c6x/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for TI C6X.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
--- 1,5 ----
  ;; Constraint definitions for TI C6X.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Jenner <andrew@codesourcery.com>
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;; Contributed by CodeSourcery.
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/elf-common.h gcc-13.1.0/gcc/config/c6x/elf-common.h
*** gcc-12.2.0/gcc/config/c6x/elf-common.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/elf-common.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/elf.h gcc-13.1.0/gcc/config/c6x/elf.h
*** gcc-12.2.0/gcc/config/c6x/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* ELF definitions for TI C6X
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/genmult.sh gcc-13.1.0/gcc/config/c6x/genmult.sh
*** gcc-12.2.0/gcc/config/c6x/genmult.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/genmult.sh	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  # Generate c6x-mult.md from c6x-mult.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 2,8 ----
  # Generate c6x-mult.md from c6x-mult.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/genopt.sh gcc-13.1.0/gcc/config/c6x/genopt.sh
*** gcc-12.2.0/gcc/config/c6x/genopt.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/genopt.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  # Generate c6x-tables.opt from the lists in *.def.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  # Generate c6x-tables.opt from the lists in *.def.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** cat <<EOF
*** 22,28 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 22,28 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from c6x-isas.def.
  ;
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/gensched.sh gcc-13.1.0/gcc/config/c6x/gensched.sh
*** gcc-12.2.0/gcc/config/c6x/gensched.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/gensched.sh	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  # Generate c6x-sched.md from c6x-sched.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
--- 2,8 ----
  # Generate c6x-sched.md from c6x-sched.md.in
  # The input file is passed as an argument.
  
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  #This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/predicates.md gcc-13.1.0/gcc/config/c6x/predicates.md
*** gcc-12.2.0/gcc/config/c6x/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Predicates for TI C6X
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Predicates for TI C6X
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/sync.md gcc-13.1.0/gcc/config/c6x/sync.md
*** gcc-12.2.0/gcc/config/c6x/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for C6X synchronization instructions.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for C6X synchronization instructions.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/t-c6x gcc-13.1.0/gcc/config/c6x/t-c6x
*** gcc-12.2.0/gcc/config/c6x/t-c6x	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/t-c6x	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for TI C6X.
! # Copyright (C) 2010-2022 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for TI C6X.
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/t-c6x-elf gcc-13.1.0/gcc/config/c6x/t-c6x-elf
*** gcc-12.2.0/gcc/config/c6x/t-c6x-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/t-c6x-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for TI C6X using ELF.
! # Copyright (C) 2010-2022 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for TI C6X using ELF.
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  # Contributed by CodeSourcery.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/c6x/uclinux-elf.h gcc-13.1.0/gcc/config/c6x/uclinux-elf.h
*** gcc-12.2.0/gcc/config/c6x/uclinux-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/c6x/uclinux-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for TI C6X running ucLinux using ELF
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
--- 1,5 ----
  /* Definitions for TI C6X running ucLinux using ELF
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Andrew Jenner <andrew@codesourcery.com>
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/constraints.md gcc-13.1.0/gcc/config/cr16/constraints.md
*** gcc-12.2.0/gcc/config/cr16/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/constraints.md	Thu Jan  1 00:00:00 1970
***************
*** 1,81 ****
- ;; Predicates of machine description for CR16.
- ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
- ;; Contributed by KPIT Cummins Infosystems Limited.
- ;;
- ;; This file is part of GCC.
- ;;
- ;; GCC is free software; you can redistribute it and/or modify it
- ;; under the terms of the GNU General Public License as published
- ;; by the Free Software Foundation; either version 3, or (at your
- ;; option) any later version.
- ;;
- ;; GCC is distributed in the hope that it will be useful, but WITHOUT
- ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- ;; License for more details.
- ;;
- ;; You should have received a copy of the GNU General Public License
- ;; along with GCC; see the file COPYING3.  If not see
- ;; <http://www.gnu.org/licenses/>.  
- 
- ;; Constraints
- ;; Register constraints
- (define_register_constraint "b" "NOSP_REGS"
-   "@no sp registers")
- 
- (define_register_constraint "c" "SHORT_REGS"
-   "@short registers")
- 
- (define_register_constraint "d" "LONG_REGS"
-   "@long registers")
- 
- ;; Integer constraints.
- (define_constraint "I"
-   "A signed 4-bit immediate."
-   (and (match_code "const_int")
-        (match_test "SIGNED_INT_FITS_N_BITS (ival, 4)")))
- 
- (define_constraint "J"
-   "A signed 5-bit immediate."
-   (and (match_code "const_int")
-        (match_test "SIGNED_INT_FITS_N_BITS (ival, 5)")))
- 
- (define_constraint "K"
-   "A signed 6-bit immediate."
-   (and (match_code "const_int")
-        (match_test "SIGNED_INT_FITS_N_BITS (ival, 6)")))
- 
- (define_constraint "L"
-   "A unsigned 4-bit immediate."
-   (and (match_code "const_int")
-        (match_test "UNSIGNED_INT_FITS_N_BITS (ival, 4)")))
- 
- (define_constraint "M"
-   "A unsigned and customized  4-bit immediate."
-   (and (match_code "const_int")
-        (match_test "(IN_RANGE_P (ival, 0, 15) && ((ival != 9) && (ival != 11)))")))
- 
- (define_constraint "N"
-   "A signed 16-bit immediate."
-   (and (match_code "const_int")
-        (match_test "IN_RANGE_P (ival, -32768, 32767)")))
- 
- (define_constraint "O"
-   "A unsigned 20-bit immediate."
-   (and (match_code "const_int")
-        (match_test "IN_RANGE_P (ival, 0, 1048575)")))
- 
- (define_constraint "Q"
-   "A shift QI immediate."
-   (and (match_code "const_int")
-        (match_test "IN_RANGE_P (ival, 0, 7)")))
- 
- (define_constraint "R"
-   "A shift HI immediate."
-   (and (match_code "const_int")
-        (match_test "IN_RANGE_P (ival, 0, 15)")))
- 
- (define_constraint "S"
-   "A shift SI immediate."
-   (and (match_code "const_int")
-        (match_test "IN_RANGE_P (ival, 0, 31)")))
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/cr16-protos.h gcc-13.1.0/gcc/config/cr16/cr16-protos.h
*** gcc-12.2.0/gcc/config/cr16/cr16-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/cr16-protos.h	Thu Jan  1 00:00:00 1970
***************
*** 1,98 ****
- /* Prototypes for exported functions defined in cr16.cc
-    Copyright (C) 2012-2022 Free Software Foundation, Inc.
-    Contributed by KPIT Cummins Infosystems Limited.
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
- 
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #ifndef GCC_CR16_PROTOS_H
- #define GCC_CR16_PROTOS_H
- 
- /* Register usage.  */
- extern enum reg_class cr16_regno_reg_class (int);
- 
- /* Passing function arguments.  */
- extern int cr16_function_arg_regno_p (int);
- 
- #ifdef TREE_CODE
- #ifdef RTX_CODE
- 
- extern void cr16_init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx);
- 
- #endif /* RTX_CODE.  */
- #endif /* TREE_CODE.  */
- 
- /* Enumeration giving the various data models we support.  */
- enum data_model_type
- {
-   DM_DEFAULT,		/* Default data model (in CR16C/C+ - up to 16M).  */
-   DM_NEAR,		/* Near data model    (in CR16C/C+ - up to 1M).  */
-   DM_FAR,		/* Far data model     (in CR16C+   - up to 4G)
- 			   (in CR16C    - up to 16M).  */
-   ILLEGAL_DM		/* Illegal data model.  */
- };
- 
- #ifdef RTX_CODE
- 
- /* Addressing Modes.  */
- struct cr16_address
- {
-   rtx base;	 	/* Base register: Any register or register pair.  */
-   rtx index;		/* Index register: If one is present.  */
-   rtx disp;		/* Displacement or Absolute address.  */
-   enum data_model_type data;	/* data ref type.  */
-   int code;		/* Whether the address is code address. 
- 			   0 - data, 1 - code label, 2 - function label.  */
- };
- 
- enum cr16_addrtype
- {
-   CR16_INVALID,
-   CR16_REG_REL,
-   CR16_REGP_REL,
-   CR16_INDEX_REGP_REL,
-   CR16_ABSOLUTE
- };
- 
- extern int cr16_operand_bit_pos (int val, int bitval);
- extern void cr16_decompose_const (rtx x, int *code,
- 				  enum data_model_type *data,
- 				  bool treat_as_const);
- extern enum cr16_addrtype cr16_decompose_address (rtx addr,
- 						  struct cr16_address *out,
- 						  bool debug_print,
- 						  bool treat_as_const);
- extern int cr16_const_double_ok (rtx op);
- extern int legitimate_pic_operand_p (rtx);
- extern rtx legitimize_pic_address (rtx, machine_mode, rtx);
- 
- 
- /* Prologue/Epilogue functions.  */
- extern int cr16_initial_elimination_offset (int, int);
- extern char *cr16_prepare_push_pop_string (int);
- extern void cr16_expand_prologue (void);
- extern void cr16_expand_epilogue (void);
- extern const char *cr16_emit_add_sub_di (rtx *, enum rtx_code);
- extern const char *cr16_emit_logical_di (rtx *, enum rtx_code);
- 
- #endif /* RTX_CODE.  */
- 
- /* Handling the "interrupt" attribute.  */
- extern int cr16_interrupt_function_p (void);
- extern bool cr16_is_data_model (enum data_model_type);
- extern poly_int64 cr16_push_rounding (poly_int64);
- 
- #endif /* Not GCC_CR16_PROTOS_H.  */ 
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/cr16.cc gcc-13.1.0/gcc/config/cr16/cr16.cc
*** gcc-12.2.0/gcc/config/cr16/cr16.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/cr16.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,2201 ****
- /* Output routines for CR16 processor.
-    Copyright (C) 2012-2022 Free Software Foundation, Inc.
-    Contributed by KPIT Cummins Infosystems Limited.
-   
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
-  
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #define IN_TARGET_CODE 1
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "backend.h"
- #include "target.h"
- #include "rtl.h"
- #include "tree.h"
- #include "stringpool.h"
- #include "attribs.h"
- #include "df.h"
- #include "memmodel.h"
- #include "tm_p.h"
- #include "regs.h"
- #include "emit-rtl.h"
- #include "diagnostic-core.h"
- #include "stor-layout.h"
- #include "calls.h"
- #include "conditions.h"
- #include "output.h"
- #include "expr.h"
- #include "builtins.h"
- 
- /* This file should be included last.  */
- #include "target-def.h"
- 
- /* Definitions.  */
- 
- /* Maximum number of register used for passing parameters.  */
- #define MAX_REG_FOR_PASSING_ARGS  6
- 
- /* Minimum number register used for passing parameters.  */
- #define MIN_REG_FOR_PASSING_ARGS  2
- 
- /* The maximum count of words supported in the assembly of the architecture in
-    a push/pop instruction.  */
- #define MAX_COUNT  8
- 
- /* Predicate is true if the current function is a 'noreturn' function, 
-    i.e. it is qualified as volatile.  */
- #define FUNC_IS_NORETURN_P(decl) (TREE_THIS_VOLATILE (decl))
- 
- /* Predicate that holds when we need to save registers even for 'noreturn'
-    functions, to accommodate for unwinding.  */
- #define MUST_SAVE_REGS_P() \
-   (flag_unwind_tables || (flag_exceptions && !UI_SJLJ))
- 
- /* Nonzero if the rtx X is a signed const int of n bits.  */
- #define RTX_SIGNED_INT_FITS_N_BITS(X, n)                \
-   ((GET_CODE (X) == CONST_INT                          \
-    && SIGNED_INT_FITS_N_BITS (INTVAL (X), n)) ? 1 : 0)
- 
- /* Nonzero if the rtx X is an unsigned const int of n bits.  */
- #define RTX_UNSIGNED_INT_FITS_N_BITS(X, n)               \
-   ((GET_CODE (X) == CONST_INT                            \
-    && UNSIGNED_INT_FITS_N_BITS (INTVAL (X), n)) ? 1 : 0)
- 
- /* Structure for stack computations.  */
- 
- /* variable definitions in the struture
-    args_size             Number of bytes saved on the stack for local 
- 			 variables
- 
-    reg_size		 Number of bytes saved on the stack for 
- 			 non-scratch registers
- 
-    total_size 		 The sum of 2 sizes: locals vars and padding byte 
- 			 for saving the registers. Used in expand_prologue() 
- 			 and expand_epilogue()
- 
-    last_reg_to_save      Will hold the number of the last register the 
- 			 prologue saves, -1 if no register is saved
- 
-    save_regs[16]	 Each object in the array is a register number. 
- 			 Mark 1 for registers that need to be saved
- 
-    num_regs		 Number of registers saved
- 
-    initialized		 Non-zero if frame size already calculated, not 
- 			 used yet
- 
-    function_makes_calls  Does the function make calls ? not used yet.  */
- 
- struct cr16_frame_info
- {
-   unsigned long var_size;
-   unsigned long args_size;
-   unsigned int  reg_size;
-   unsigned long total_size;
-   long          last_reg_to_save;
-   long          save_regs[FIRST_PSEUDO_REGISTER];
-   int           num_regs;
-   int           initialized;
-   int           function_makes_calls;
- };
- 
- /* Current frame information calculated by cr16_compute_frame_size.  */
- static struct cr16_frame_info current_frame_info;
- 
- /* Static Variables.  */
- 
- /* Data model that was supplied by user via command line option
-    This will be overridden in case of invalid combination
-    of core and data model options are supplied.  */
- static enum data_model_type data_model = DM_DEFAULT;
- 
- /* TARGETM Function Prototypes and forward declarations  */
- static void cr16_print_operand (FILE *, rtx, int);
- static void cr16_print_operand_address (FILE *, machine_mode, rtx);
- 
- /* Stack layout and calling conventions.  */
- #undef  TARGET_STRUCT_VALUE_RTX
- #define TARGET_STRUCT_VALUE_RTX		cr16_struct_value_rtx
- #undef  TARGET_RETURN_IN_MEMORY
- #define TARGET_RETURN_IN_MEMORY		cr16_return_in_memory
- 
- /* Target-specific uses of '__attribute__'.  */
- #undef  TARGET_ATTRIBUTE_TABLE
- #define TARGET_ATTRIBUTE_TABLE 		cr16_attribute_table
- #undef TARGET_NARROW_VOLATILE_BITFIELD
- #define TARGET_NARROW_VOLATILE_BITFIELD hook_bool_void_false
- 
- /* EH related.  */
- #undef TARGET_UNWIND_WORD_MODE
- #define TARGET_UNWIND_WORD_MODE		cr16_unwind_word_mode
- 
- /* Override Options.  */
- #undef TARGET_OPTION_OVERRIDE
- #define TARGET_OPTION_OVERRIDE  	cr16_override_options 
- 
- /* Conditional register usuage.  */
- #undef TARGET_CONDITIONAL_REGISTER_USAGE 
- #define TARGET_CONDITIONAL_REGISTER_USAGE cr16_conditional_register_usage
- 
- /* Controlling register spills.  */
- #undef TARGET_CLASS_LIKELY_SPILLED_P
- #define TARGET_CLASS_LIKELY_SPILLED_P	cr16_class_likely_spilled_p
- 
- /* Passing function arguments.  */
- #undef TARGET_PUSH_ARGUMENT
- #define TARGET_PUSH_ARGUMENT		hook_bool_uint_true
- #undef TARGET_FUNCTION_ARG
- #define TARGET_FUNCTION_ARG 		cr16_function_arg
- #undef TARGET_FUNCTION_ARG_ADVANCE
- #define TARGET_FUNCTION_ARG_ADVANCE 	cr16_function_arg_advance
- #undef TARGET_RETURN_POPS_ARGS
- #define TARGET_RETURN_POPS_ARGS 	cr16_return_pops_args
- 
- /* Initialize the GCC target structure.  */
- #undef TARGET_FRAME_POINTER_REQUIRED
- #define TARGET_FRAME_POINTER_REQUIRED	cr16_frame_pointer_required
- #undef TARGET_CAN_ELIMINATE
- #define TARGET_CAN_ELIMINATE 		cr16_can_eliminate
- #undef TARGET_LEGITIMIZE_ADDRESS
- #define TARGET_LEGITIMIZE_ADDRESS 	cr16_legitimize_address
- #undef TARGET_LEGITIMATE_CONSTANT_P
- #define TARGET_LEGITIMATE_CONSTANT_P    cr16_legitimate_constant_p
- #undef TARGET_LEGITIMATE_ADDRESS_P
- #define TARGET_LEGITIMATE_ADDRESS_P     cr16_legitimate_address_p
- 
- #undef TARGET_LRA_P
- #define TARGET_LRA_P hook_bool_void_false
- 
- /* Returning function value.  */
- #undef TARGET_FUNCTION_VALUE
- #define TARGET_FUNCTION_VALUE 		cr16_function_value
- #undef TARGET_LIBCALL_VALUE
- #define TARGET_LIBCALL_VALUE 		cr16_libcall_value
- #undef TARGET_FUNCTION_VALUE_REGNO_P
- #define TARGET_FUNCTION_VALUE_REGNO_P 	cr16_function_value_regno_p
- 
- /* printing the values.  */
- #undef TARGET_PRINT_OPERAND
- #define TARGET_PRINT_OPERAND 		cr16_print_operand
- #undef TARGET_PRINT_OPERAND_ADDRESS
- #define TARGET_PRINT_OPERAND_ADDRESS 	cr16_print_operand_address
- 
- /* Relative costs of operations.  */
- #undef  TARGET_ADDRESS_COST
- #define TARGET_ADDRESS_COST 		cr16_address_cost
- #undef TARGET_REGISTER_MOVE_COST
- #define TARGET_REGISTER_MOVE_COST 	cr16_register_move_cost
- #undef TARGET_MEMORY_MOVE_COST
- #define TARGET_MEMORY_MOVE_COST 	cr16_memory_move_cost
- 
- #undef TARGET_CONSTANT_ALIGNMENT
- #define TARGET_CONSTANT_ALIGNMENT	constant_alignment_word_strings
- 
- /* Table of machine attributes.  */
- static const struct attribute_spec cr16_attribute_table[] = {
-   /* ISRs have special prologue and epilogue requirements.  */
-   /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
-        affects_type_identity, handler, exclude }.  */
-   {"interrupt", 0, 0, false, true, true, false, NULL, NULL},
-   {NULL, 0, 0, false, false, false, false, NULL, NULL}
- };
- 
- /* TARGET_ASM_UNALIGNED_xx_OP generates .?byte directive
-    .?byte directive along with @c is not understood by assembler.
-    Therefore, make all TARGET_ASM_UNALIGNED_xx_OP same
-    as TARGET_ASM_ALIGNED_xx_OP.  */
- #undef TARGET_ASM_UNALIGNED_HI_OP
- #define TARGET_ASM_UNALIGNED_HI_OP 	TARGET_ASM_ALIGNED_HI_OP
- #undef TARGET_ASM_UNALIGNED_SI_OP
- #define TARGET_ASM_UNALIGNED_SI_OP 	TARGET_ASM_ALIGNED_SI_OP
- #undef TARGET_ASM_UNALIGNED_DI_OP
- #define TARGET_ASM_UNALIGNED_DI_OP 	TARGET_ASM_ALIGNED_DI_OP
- 
- #undef TARGET_HARD_REGNO_NREGS
- #define TARGET_HARD_REGNO_NREGS		cr16_hard_regno_nregs
- #undef TARGET_HARD_REGNO_MODE_OK
- #define TARGET_HARD_REGNO_MODE_OK	cr16_hard_regno_mode_ok
- #undef TARGET_MODES_TIEABLE_P
- #define TARGET_MODES_TIEABLE_P		cr16_modes_tieable_p
- 
- /* Target hook implementations.  */
- 
- /* Implements hook TARGET_RETURN_IN_MEMORY.  */
- static bool
- cr16_return_in_memory (const_tree type, const_tree fntype ATTRIBUTE_UNUSED)
- {
-   const HOST_WIDE_INT size = int_size_in_bytes (type);
-   return ((size == -1) || (size > 8));
- }
- 
- /* Implement TARGET_CLASS_LIKELY_SPILLED_P.  */
- static bool
- cr16_class_likely_spilled_p (reg_class_t rclass)
- {
-   if ((rclass) == SHORT_REGS || (rclass) == DOUBLE_BASE_REGS 
-       || (rclass) == LONG_REGS || (rclass) == GENERAL_REGS)
-     return true;
- 
-   return false;
- }
- 
- static poly_int64
- cr16_return_pops_args (tree, tree, poly_int64)
- {
-   return 0;
- }
- 
- /* Returns true if data model selected via command line option
-    is same as function argument.  */
- bool
- cr16_is_data_model (enum data_model_type model)
- {
-   return (model == data_model);
- }
- 
- /* Parse relevant options and override.  */
- static void
- cr16_override_options (void)
- {
-   /* Disable -fdelete-null-pointer-checks option for CR16 target.
-      Programs which rely on NULL pointer dereferences _not_ halting the 
-      program may not work properly with this option. So disable this 
-      option.  */
-   flag_delete_null_pointer_checks = 0;
- 
-   /* FIXME: To avoid spill_failure ICE during exception handling,
-    * disable cse_fllow_jumps. The spill error occurs when compiler
-    * can't find a suitable candidate in GENERAL_REGS class to reload
-    * a 32bit register.
-    * Need to find a better way of avoiding this situation. */
-   if (flag_exceptions)
-     flag_cse_follow_jumps = 0;
- 
-   /* If -fpic option, data_model == DM_FAR.  */
-   if (flag_pic == NEAR_PIC)
-     {
-       data_model = DM_FAR;
-     }
- 
-   /* The only option we want to examine is data model option.  */
-   if (cr16_data_model)
-     {
-       if (strcmp (cr16_data_model, "medium") == 0)
- 	data_model = DM_DEFAULT;
-       else if (strcmp (cr16_data_model, "near") == 0)
- 	data_model = DM_NEAR;
-       else if (strcmp (cr16_data_model, "far") == 0)
- 	{
- 	  if (TARGET_CR16CP)
- 	    data_model = DM_FAR;
- 	  else
- 	    error ("data-model=far not valid for cr16c architecture");
- 	}
-       else
- 	error ("invalid data model option %<-mdata-model=%s%>",
- 	       cr16_data_model);
-     }
-   else
-     data_model = DM_DEFAULT;
- }
- 
- /* Implements the macro  TARGET_CONDITIONAL_REGISTER_USAGE.  */
- static void
- cr16_conditional_register_usage (void)
- {
-   if (flag_pic)
-     {
-       fixed_regs[12] = call_used_regs[12] = 1;
-     }
- }
- 
- /* Stack layout and calling conventions routines.  */
- 
- /* Return nonzero if the current function being compiled is an interrupt
-    function as specified by the "interrupt" attribute.  */
- int
- cr16_interrupt_function_p (void)
- {
-   tree attributes;
- 
-   attributes = TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl));
-   return (lookup_attribute ("interrupt", attributes) != NULL_TREE);
- }
- 
- /* Compute values for the array current_frame_info.save_regs and the variable 
-    current_frame_info.reg_size. The index of current_frame_info.save_regs 
-    is numbers of register, each will get 1 if we need to save it in the 
-    current function, 0 if not. current_frame_info.reg_size is the total sum 
-    of the registers being saved.  */
- static void
- cr16_compute_save_regs (void)
- {
-   unsigned int regno;
- 
-   /* Initialize here so in case the function is no-return it will be -1.  */
-   current_frame_info.last_reg_to_save = -1;
- 
-   /* Initialize the number of bytes to be saved. */
-   current_frame_info.reg_size = 0;
- 
-   /* No need to save any registers if the function never returns.  */
-   if (FUNC_IS_NORETURN_P (current_function_decl) && !MUST_SAVE_REGS_P ())
-     return;
- 
-   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-     {
-       if (fixed_regs[regno])
- 	{
- 	  current_frame_info.save_regs[regno] = 0;
- 	  continue;
- 	}
- 
-       /* If this reg is used and not call-used (except RA), save it.  */
-       if (cr16_interrupt_function_p ())
- 	{
- 	  if (!crtl->is_leaf && call_used_or_fixed_reg_p (regno))
- 	    /* This is a volatile reg in a non-leaf interrupt routine - save 
- 	       it for the sake of its sons.  */
- 	    current_frame_info.save_regs[regno] = 1;
- 	  else if (df_regs_ever_live_p (regno))
- 	    /* This reg is used - save it.  */
- 	    current_frame_info.save_regs[regno] = 1;
- 	  else
- 	    /* This reg is not used, and is not a volatile - don't save.  */
- 	    current_frame_info.save_regs[regno] = 0;
- 	}
-       else
- 	{
- 	  /* If this reg is used and not call-used (except RA), save it.  */
- 	  if (df_regs_ever_live_p (regno)
- 	      && (!call_used_or_fixed_reg_p (regno)
- 		  || regno == RETURN_ADDRESS_REGNUM))
- 	    current_frame_info.save_regs[regno] = 1;
- 	  else
- 	    current_frame_info.save_regs[regno] = 0;
- 	}
-     }
- 
-   /* Save registers so the exception handler can modify them.  */
-   if (crtl->calls_eh_return)
-     {
-       unsigned int i;
- 
-       for (i = 0;; ++i)
- 	{
- 	  regno = EH_RETURN_DATA_REGNO (i);
- 	  if (INVALID_REGNUM == regno)
- 	    break;
- 	  current_frame_info.save_regs[regno] = 1;
- 	}
-     }
- 
-   for (regno = 0; regno < FIRST_PSEUDO_REGISTER; regno++)
-     if (current_frame_info.save_regs[regno] == 1)
-       {
- 	current_frame_info.last_reg_to_save = regno;
- 	if (regno >= CR16_FIRST_DWORD_REGISTER)
- 	  current_frame_info.reg_size += CR16_UNITS_PER_DWORD;
- 	else
- 	  current_frame_info.reg_size += UNITS_PER_WORD;
-       }
- }
- 
- /* Compute the size of the local area and the size to be adjusted by the
-    prologue and epilogue.  */
- static void
- cr16_compute_frame (void)
- {
-   /* For aligning the local variables.  */
-   int stack_alignment = STACK_BOUNDARY / BITS_PER_UNIT;
-   int padding_locals;
- 
-   /* Padding needed for each element of the frame.  */
-   current_frame_info.var_size = get_frame_size ();
- 
-   /* Align to the stack alignment.  */
-   padding_locals = current_frame_info.var_size % stack_alignment;
-   if (padding_locals)
-     padding_locals = stack_alignment - padding_locals;
- 
-   current_frame_info.var_size += padding_locals;
-   current_frame_info.total_size
-     = (current_frame_info.var_size
-        + (ACCUMULATE_OUTGOING_ARGS
- 	  ? (HOST_WIDE_INT) crtl->outgoing_args_size : 0));
- }
- 
- /* Implements the macro INITIAL_ELIMINATION_OFFSET, return the OFFSET.  */
- int
- cr16_initial_elimination_offset (int from, int to)
- {
-   /* Compute this since we need to use current_frame_info.reg_size.  */
-   cr16_compute_save_regs ();
- 
-   /* Compute this since we need to use current_frame_info.var_size.  */
-   cr16_compute_frame ();
- 
-   if (((from) == FRAME_POINTER_REGNUM) && ((to) == STACK_POINTER_REGNUM))
-     return (ACCUMULATE_OUTGOING_ARGS
- 	    ? (HOST_WIDE_INT) crtl->outgoing_args_size : 0);
-   else if (((from) == ARG_POINTER_REGNUM) && ((to) == FRAME_POINTER_REGNUM))
-     return (current_frame_info.reg_size + current_frame_info.var_size);
-   else if (((from) == ARG_POINTER_REGNUM) && ((to) == STACK_POINTER_REGNUM))
-     return (current_frame_info.reg_size + current_frame_info.var_size 
- 	    + (ACCUMULATE_OUTGOING_ARGS
- 	       ? (HOST_WIDE_INT) crtl->outgoing_args_size : 0));
-   else
-     gcc_unreachable ();
- }
- 
- /* Register Usage.  */
- 
- /* Return the class number of the smallest class containing reg number REGNO.
-    This could be a conditional expression or could index an array.  */
- enum reg_class
- cr16_regno_reg_class (int regno)
- {
-   if ((regno >= 0) && (regno < CR16_FIRST_DWORD_REGISTER))
-     return SHORT_REGS;
- 
-   if ((regno >= CR16_FIRST_DWORD_REGISTER) && (regno < FIRST_PSEUDO_REGISTER))
-     return LONG_REGS;
- 
-   return NO_REGS;
- }
- 
- /* Implement TARGET_HARD_REGNO_NREGS.  */
- 
- static unsigned int
- cr16_hard_regno_nregs (unsigned int regno, machine_mode mode)
- {
-   if (regno >= CR16_FIRST_DWORD_REGISTER)
-     return CEIL (GET_MODE_SIZE (mode), CR16_UNITS_PER_DWORD);
-   return CEIL (GET_MODE_SIZE (mode), UNITS_PER_WORD);
- }
- 
- /* Implement TARGET_HARD_REGNO_MODE_OK.  On the CR16 architecture, all
-    registers can hold all modes, except that double precision floats
-    (and double ints) must fall on even-register boundaries.  */
- 
- static bool
- cr16_hard_regno_mode_ok (unsigned int regno, machine_mode mode)
- {
-   if ((GET_MODE_SIZE (mode) >= 4) && (regno == 11))
-     return false;
-  
-   if (mode == DImode || mode == DFmode)
-     {
-       if ((regno > 8) || (regno & 1))
- 	return false;
-       return true;
-     }
- 
-   if ((TARGET_INT32)
-        && ((regno >= 12) && (GET_MODE_SIZE (mode) < 4 )))
-      return false;
- 
-   /* CC can only hold CCmode values.  */
-   if (GET_MODE_CLASS (mode) == MODE_CC)
-     return false;
-   return true;
- }
- 
- /* Implement TARGET_MODES_TIEABLE_P.  */
- static bool
- cr16_modes_tieable_p (machine_mode mode1, machine_mode mode2)
- {
-   return GET_MODE_CLASS (mode1) == GET_MODE_CLASS (mode2);
- }
- 
- /* Returns register number for function return value.*/
- static inline unsigned int
- cr16_ret_register (void)
- {
-   return 0;
- }
- 
- /* Implements hook TARGET_STRUCT_VALUE_RTX.  */
- static rtx
- cr16_struct_value_rtx (tree fntype ATTRIBUTE_UNUSED,
-                        int incoming ATTRIBUTE_UNUSED)
- {
-   return gen_rtx_REG (Pmode, cr16_ret_register ());
- }
- 
- /* Returning function value.  */
- 
- /* Worker function for TARGET_FUNCTION_VALUE_REGNO_P.  */
- static bool
- cr16_function_value_regno_p (const unsigned int regno)
- {
-   return (regno == cr16_ret_register ());
- }
- 
- /* Create an RTX representing the place where a
-    library function returns a value of mode MODE.  */
- static rtx
- cr16_libcall_value (machine_mode mode,
- 		    const_rtx func ATTRIBUTE_UNUSED)
- {
-   return gen_rtx_REG (mode, cr16_ret_register ());
- }
- 
- /* Create an RTX representing the place where a
-    function returns a value of data type VALTYPE.  */
- static rtx
- cr16_function_value (const_tree type,
- 		     const_tree fn_decl_or_type ATTRIBUTE_UNUSED,
- 		     bool outgoing ATTRIBUTE_UNUSED)
- {
-   return gen_rtx_REG (TYPE_MODE (type), cr16_ret_register ());
- }
- 
- /* Passing function arguments.  */
- 
- /* If enough param regs are available for passing the param of type TYPE return
-    the number of registers needed else 0.  */
- static int
- enough_regs_for_param (CUMULATIVE_ARGS * cum, const_tree type,
- 		       machine_mode mode)
- {
-   int type_size;
-   int remaining_size;
- 
-   if (mode != BLKmode)
-     type_size = GET_MODE_BITSIZE (mode);
-   else
-     type_size = int_size_in_bytes (type) * BITS_PER_UNIT;
- 
-   remaining_size = BITS_PER_WORD * (MAX_REG_FOR_PASSING_ARGS
- 				    - (MIN_REG_FOR_PASSING_ARGS + cum->ints) +
- 				    1);
- 
-   /* Any variable which is too big to pass in two registers, will pass on
-      stack.  */
-   if ((remaining_size >= type_size) && (type_size <= 2 * BITS_PER_WORD))
-     return (type_size + BITS_PER_WORD - 1) / BITS_PER_WORD;
- 
-   return 0;
- }
- 
- /* Implement TARGET_FUNCTION_ARG.  */
- static rtx
- cr16_function_arg (cumulative_args_t cum_v, const function_arg_info &arg)
- {
-   CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
-   cum->last_parm_in_reg = 0;
- 
-   /* function_arg () is called with this type just after all the args have 
-      had their registers assigned. The rtx that function_arg returns from 
-      this type is supposed to pass to 'gen_call' but currently it is not 
-      implemented.  */
-   if (arg.end_marker_p ())
-     return NULL_RTX;
- 
-   if (targetm.calls.must_pass_in_stack (arg) || (cum->ints < 0))
-     return NULL_RTX;
- 
-   if (arg.mode == BLKmode)
-     {
-       /* Enable structures that need padding bytes at the end to pass to a
-          function in registers.  */
-       if (enough_regs_for_param (cum, arg.type, arg.mode) != 0)
- 	{
- 	  cum->last_parm_in_reg = 1;
- 	  return gen_rtx_REG (arg.mode, MIN_REG_FOR_PASSING_ARGS + cum->ints);
- 	}
-     }
- 
-   if ((MIN_REG_FOR_PASSING_ARGS + cum->ints) > MAX_REG_FOR_PASSING_ARGS)
-     return NULL_RTX;
-   else
-     {
-       if (enough_regs_for_param (cum, arg.type, arg.mode) != 0)
- 	{
- 	  cum->last_parm_in_reg = 1;
- 	  return gen_rtx_REG (arg.mode, MIN_REG_FOR_PASSING_ARGS + cum->ints);
- 	}
-     }
- 
-   return NULL_RTX;
- }
- 
- /* Implements the macro INIT_CUMULATIVE_ARGS defined in cr16.h.  */
- void
- cr16_init_cumulative_args (CUMULATIVE_ARGS * cum, tree fntype,
- 			   rtx libfunc ATTRIBUTE_UNUSED)
- {
-   tree param, next_param;
- 
-   cum->ints = 0;
- 
-   /* Determine if this function has variable arguments.  This is indicated by
-      the last argument being 'void_type_mode' if there are no variable
-      arguments.  Change here for a different vararg.  */
-   for (param = (fntype) ? TYPE_ARG_TYPES (fntype) : 0;
-        param != NULL_TREE; param = next_param)
-     {
-       next_param = TREE_CHAIN (param);
-       if ((next_param == NULL_TREE) && (TREE_VALUE (param) != void_type_node))
- 	{
- 	  cum->ints = -1;
- 	  return;
- 	}
-     }
- }
- 
- /* Implements the macro FUNCTION_ARG_ADVANCE defined in cr16.h.  */
- static void
- cr16_function_arg_advance (cumulative_args_t cum_v,
- 			   const function_arg_info &arg)
- {
-   CUMULATIVE_ARGS * cum = get_cumulative_args (cum_v);
- 
-   /* l holds the number of registers required.  */
-   int l = GET_MODE_BITSIZE (arg.mode) / BITS_PER_WORD;
- 
-   /* If the parameter isn't passed on a register don't advance cum.  */
-   if (!cum->last_parm_in_reg)
-     return;
- 
-   if (targetm.calls.must_pass_in_stack (arg) || (cum->ints < 0))
-     return;
- 
-   if ((arg.mode == SImode) || (arg.mode == HImode)
-       || (arg.mode == QImode) || (arg.mode == DImode))
-     {
-       if (l <= 1)
- 	cum->ints += 1;
-       else
- 	cum->ints += l;
-     }
-   else if ((arg.mode == SFmode) || (arg.mode == DFmode))
-     cum->ints += l;
-   else if (arg.mode == BLKmode)
-     {
-       if ((l = enough_regs_for_param (cum, arg.type, arg.mode)) != 0)
- 	cum->ints += l;
-     }
-   return;
- }
- 
- /* Implements the macro FUNCTION_ARG_REGNO_P defined in cr16.h.
-    Return nonzero if N is a register used for passing parameters.  */
- int
- cr16_function_arg_regno_p (int n)
- {
-   return ((n <= MAX_REG_FOR_PASSING_ARGS) && (n >= MIN_REG_FOR_PASSING_ARGS));
- }
- 
- /* Addressing modes. 
-    Following set of function implement the macro GO_IF_LEGITIMATE_ADDRESS
-    defined in cr16.h.  */
- 
- /* Helper function to check if is a valid base register that can
-    hold address.  */
- static int
- cr16_addr_reg_p (rtx addr_reg)
- {
-   rtx reg;
- 
-   if (REG_P (addr_reg))
-     reg = addr_reg;
-   else if ((GET_CODE (addr_reg) == SUBREG)
- 	   && REG_P (SUBREG_REG (addr_reg))
- 	   && (GET_MODE_SIZE (GET_MODE (SUBREG_REG (addr_reg)))
- 	       <= UNITS_PER_WORD))
-     reg = SUBREG_REG (addr_reg);
-   else
-     return FALSE;
- 
-   if (GET_MODE (reg) != Pmode)
-     return FALSE;
- 
-   return TRUE;
- }
- 
- /* Helper functions: Created specifically for decomposing operand of CONST
-    Recursively look into expression x for code or data symbol.
-    The function expects the expression to contain combination of 
-    SYMBOL_REF, CONST_INT, (PLUS or MINUS)
-    LABEL_REF, CONST_INT, (PLUS or MINUS)
-    SYMBOL_REF
-    LABEL_REF
-    All other combinations will result in code = -1 and data = ILLEGAL_DM
-    code data
-    -1   ILLEGAL_DM   The expression did not contain SYMBOL_REF or LABEL_REF
-     0   DM_FAR       SYMBOL_REF was found and it was far data reference. 
-     0   DM_DEFAULT   SYMBOL_REF was found and it was medium data reference. 
-     1   ILLEGAL_DM   LABEL_REF was found. 
-     2   ILLEGAL_DM   SYMBOL_REF was found and it was function reference.  */
- void
- cr16_decompose_const (rtx x, int *code, enum data_model_type *data,
- 		      bool treat_as_const)
- {
-   *code = -1;
-   *data = ILLEGAL_DM;
-   switch (GET_CODE (x))
-     {
-     case SYMBOL_REF:
-       *code = SYMBOL_REF_FUNCTION_P (x) ? 2 : 0;
-       /* 2 indicates func sym.  */
-       if (*code == 0)
- 	{
- 	  if (CR16_TARGET_DATA_NEAR)
- 	    *data = DM_DEFAULT;
- 	  else if (CR16_TARGET_DATA_MEDIUM)
- 	    *data = DM_FAR;
- 	  else if (CR16_TARGET_DATA_FAR)
- 	    {
- 	      if (treat_as_const)
- 		/* This will be used only for printing 
- 		   the qualifier. This call is (may be)
- 		   made by cr16_print_operand_address.  */
- 		*data = DM_FAR;
- 	      else
- 		/* This call is (may be) made by 
- 		   cr16_legitimate_address_p.  */
- 		*data = ILLEGAL_DM;
- 	    }
- 	}
-       return;
- 
-     case LABEL_REF:
-       /* 1 - indicates non-function symbol.  */
-       *code = 1;
-       return;
- 
-     case PLUS:
-     case MINUS:
-       /* Look into the tree nodes.  */
-       if (GET_CODE (XEXP (x, 0)) == CONST_INT)
- 	cr16_decompose_const (XEXP (x, 1), code, data, treat_as_const);
-       else if (GET_CODE (XEXP (x, 1)) == CONST_INT)
- 	cr16_decompose_const (XEXP (x, 0), code, data, treat_as_const);
-       return;
-     default:
-       return;
-     }
- }
- 
- /* Decompose Address
-    This function decomposes the address returns the type of address
-    as defined in enum cr16_addrtype.  It also fills the parameter *out.
-    The decomposed address can be used for two purposes.  One to 
-    check if the address is valid and second to print the address
-    operand.
- 
-    Following tables list valid address supported in CR16C/C+ architectures.
-    Legend: 
-    aN : Absoulte address N-bit address
-    R  : One 16-bit register
-    RP : Consecutive two 16-bit registers or one 32-bit register
-    I  : One 32-bit register
-    dispN : Signed displacement of N-bits
- 
-    ----Code addresses----
-    Branch operands:
-    disp9        : CR16_ABSOLUTE       (disp)
-    disp17       : CR16_ABSOLUTE       (disp)
-    disp25       : CR16_ABSOLUTE       (disp)
-    RP + disp25  : CR16_REGP_REL       (base, disp)
- 
-    Jump operands:
-    RP           : CR16_REGP_REL       (base, disp=0)
-    a24          : CR16_ABSOLUTE       (disp)
- 
-    ----Data addresses----
-    a20          : CR16_ABSOLUTE       (disp)                near (1M)
-    a24          : CR16_ABSOLUTE       (disp)                medium  (16M)
-    R  + d20     : CR16_REG_REL        (base,  disp)         near (1M+64K)
-    RP + d4      : CR16_REGP_REL       (base,  disp)         far  (4G)
-    RP + d16     : CR16_REGP_REL       (base,  disp)         far  (4G)
-    RP + d20     : CR16_REGP_REL       (base,  disp)         far  (4G)
-    I            : *** Valid but port does not support this
-    I  + a20     : *** Valid but port does not support this
-    I  + RP + d14: CR16_INDEX_REGP_REL (base,  index, disp)  far  (4G)
-    I  + RP + d20: CR16_INDEX_REGP_REL (base,  index, disp)  far  (4G)
- 
-    Decomposing Data model in case of absolute address.
- 
-    Target Option             Address type Resultant Data ref type
-    ----------------------    ------------ -----------------------
-    CR16_TARGET_MODEL_NEAR    ABS20        DM_DEFAULT
-    CR16_TARGET_MODEL_NEAR    IMM20        DM_DEFAULT
-    CR16_TARGET_MODEL_NEAR    ABS24        Invalid
-    CR16_TARGET_MODEL_NEAR    IMM32        Invalid
- 
-    CR16_TARGET_MODEL_MEDIUM  ABS20        DM_DEFAULT
-    CR16_TARGET_MODEL_MEDIUM  IMM20        DM_DEFAULT
-    CR16_TARGET_MODEL_MEDIUM  ABS24        DM_FAR
-    CR16_TARGET_MODEL_MEDIUM  IMM32        Invalid
- 
-    CR16_TARGET_MODEL_FAR     ABS20        DM_DEFAULT
-    CR16_TARGET_MODEL_FAR     IMM20        DM_DEFAULT
-    CR16_TARGET_MODEL_FAR     ABS24        DM_FAR
-    CR16_TARGET_MODEL_FAR     IMM32        DM_FAR.  */
- enum cr16_addrtype
- cr16_decompose_address (rtx addr, struct cr16_address *out,
- 			bool debug_print, bool treat_as_const)
- {
-   rtx base = NULL_RTX, disp = NULL_RTX, index = NULL_RTX;
-   enum data_model_type data = ILLEGAL_DM;
-   int code = -1;
-   enum cr16_addrtype retval = CR16_INVALID;
- 
-   switch (GET_CODE (addr))
-     {
-     case CONST_INT:
-       /* Absolute address (known at compile time).  */
-       code = 0;
-       if (debug_print)
- 	fprintf (stderr, "\ncode:%d", code);
-       disp = addr;
- 
-       if (debug_print)
- 	{
- 	  fprintf (stderr, "\ndisp:");
- 	  debug_rtx (disp);
- 	}
- 
-       if (UNSIGNED_INT_FITS_N_BITS (INTVAL (disp), 20))
- 	{
- 	  data = DM_DEFAULT;
- 	  if (debug_print)
- 	    fprintf (stderr, "\ndata:%d", data);
- 	  retval = CR16_ABSOLUTE;
- 	}
-       else if (UNSIGNED_INT_FITS_N_BITS (INTVAL (disp), 24))
- 	{
- 	  if (!CR16_TARGET_DATA_NEAR)
- 	    {
- 	      data = DM_FAR;
- 	      if (debug_print)
- 		fprintf (stderr, "\ndata:%d", data);
- 	      retval = CR16_ABSOLUTE;
- 	    }
- 	  else
- 	    return CR16_INVALID;	/* ABS24 is not support in NEAR model.  */
- 	}
-       else
- 	return CR16_INVALID;
-       break;
- 
-     case CONST:
-       /* A CONST is an expression of PLUS or MINUS with 
- 	 CONST_INT, SYMBOL_REF or LABEL_REF. This is the
- 	 result of assembly-time arithmetic computation.  */
-       retval = CR16_ABSOLUTE;
-       disp = addr;
-       /* Call the helper function to check the validity.  */
-       cr16_decompose_const (XEXP (addr, 0), &code, &data, treat_as_const);
-       if ((code == 0) && (data == ILLEGAL_DM))
- 	/* CONST is not valid code or data address.  */
- 	return CR16_INVALID;
-       if (debug_print)
- 	{
- 	  fprintf (stderr, "\ndisp:");
- 	  debug_rtx (disp);
- 	  fprintf (stderr, "\ncode:%d", code);
- 	  fprintf (stderr, "\ndata:%d", data);
- 	}
-       break;
- 
-     case LABEL_REF:
-       retval = CR16_ABSOLUTE;
-       disp = addr;
-       /* 1 - indicates non-function symbol.  */
-       code = 1;
-       if (debug_print)
- 	{
- 	  fprintf (stderr, "\ndisp:");
- 	  debug_rtx (disp);
- 	  fprintf (stderr, "\ncode:%d", code);
- 	}
-       break;
- 
-     case SYMBOL_REF:
-       /* Absolute address (known at link time).  */
-       retval = CR16_ABSOLUTE;
-       disp = addr;
-       /* This is a code address if symbol_ref is a function.  */
-       /* 2 indicates func sym.  */
-       code = SYMBOL_REF_FUNCTION_P (addr) ? 2 : 0;
-       if (debug_print)
- 	{
- 	  fprintf (stderr, "\ndisp:");
- 	  debug_rtx (disp);
- 	  fprintf (stderr, "\ncode:%d", code);
- 	}
-       /* If not function ref then check if valid data ref.  */
-       if (code == 0)
- 	{
- 	  if (CR16_TARGET_DATA_NEAR)
- 	    data = DM_DEFAULT;
- 	  else if (CR16_TARGET_DATA_MEDIUM)
- 	    data = DM_FAR;
- 	  else if (CR16_TARGET_DATA_FAR)
- 	    {
- 	      if (treat_as_const)
- 		/* This will be used only for printing the 
- 		   qualifier. This call is (may be) made
- 		   by cr16_print_operand_address.  */
- 		data = DM_FAR;
- 	      else
- 		/* This call is (may be) made by 
- 		   cr16_legitimate_address_p.  */
- 		return CR16_INVALID;
- 	    }
- 	  else
- 	    data = DM_DEFAULT;
- 	}
-       if (debug_print)
- 	fprintf (stderr, "\ndata:%d", data);
-       break;
- 
-     case REG:
-     case SUBREG:
-       /* Register relative address.  */
-       /* Assume REG fits in a single register.  */
-       retval = CR16_REG_REL;
-       if (GET_MODE_BITSIZE (GET_MODE (addr)) > BITS_PER_WORD)
- 	if (!LONG_REG_P (REGNO (addr)))
- 	  /* REG will result in reg pair.  */
- 	  retval = CR16_REGP_REL;
-       base = addr;
-       if (debug_print)
- 	{
- 	  fprintf (stderr, "\nbase:");
- 	  debug_rtx (base);
- 	}
-       break;
- 
-     case PLUS:
-       switch (GET_CODE (XEXP (addr, 0)))
- 	{
- 	case REG:
- 	case SUBREG:
- 	  /* REG + DISP20.  */
- 	  /* All Reg relative addresses having a displacement needs 
- 	     to fit in 20-bits.  */
- 	  disp = XEXP (addr, 1);
- 	  if (debug_print)
- 	    {
- 	      fprintf (stderr, "\ndisp:");
- 	      debug_rtx (disp);
- 	    }
- 	  switch (GET_CODE (XEXP (addr, 1)))
- 	    {
- 	    case CONST_INT:
- 	      /* Shall fit in 20-bits.  */
- 	      if (!UNSIGNED_INT_FITS_N_BITS (INTVAL (disp), 20))
- 		return CR16_INVALID;
- 	      code = 0;
- 	      if (debug_print)
- 		fprintf (stderr, "\ncode:%d", code);
- 	      break;
- 
- 	    case UNSPEC:
- 	      switch (XINT (XEXP (addr, 1), 1))
- 		{
- 		case UNSPEC_LIBRARY_OFFSET:
- 		default:
- 		  gcc_unreachable ();
- 		}
- 	      break;
- 
- 	    case LABEL_REF:
- 	    case SYMBOL_REF:
- 	    case CONST:
- 	      /* This is also a valid expression for address.
- 	         However, we cannot ascertain if the resultant
- 	         displacement will be valid 20-bit value.  Therefore, 
- 	         lets not allow such an expression for now.  This will 
- 	         be updated when  we find a way to validate this 
- 	         expression as legitimate address. 
- 	         Till then fall through CR16_INVALID.  */
- 	    default:
- 	      return CR16_INVALID;
- 	    }
- 
- 	  /* Now check if REG can fit into single or pair regs.  */
- 	  retval = CR16_REG_REL;
- 	  base = XEXP (addr, 0);
- 	  if (debug_print)
- 	    {
- 	      fprintf (stderr, "\nbase:");
- 	      debug_rtx (base);
- 	    }
- 	  if (GET_MODE_BITSIZE (GET_MODE ((XEXP (addr, 0)))) > BITS_PER_WORD)
- 	    {
- 	      if (!LONG_REG_P (REGNO ((XEXP (addr, 0)))))
- 		/* REG will result in reg pair.  */
- 		retval = CR16_REGP_REL;
- 	    }
- 	  break;
- 
- 	case PLUS:
- 	  /* Valid expr: 
- 	     plus
- 	      /\
- 	     /  \
- 	     plus idx
- 	      /\
- 	     /  \
- 	     reg  const_int
- 
- 	     Check if the operand 1 is valid index register.  */
- 	  data = ILLEGAL_DM;
- 	  if (debug_print)
- 	    fprintf (stderr, "\ndata:%d", data);
- 	  switch (GET_CODE (XEXP (addr, 1)))
- 	    {
- 	    case REG:
- 	    case SUBREG:
- 	      if (!REG_OK_FOR_INDEX_P (XEXP (addr, 1)))
- 		return CR16_INVALID;
- 	      /* OK. REG is a valid index register.  */
- 	      index = XEXP (addr, 1);
- 	      if (debug_print)
- 		{
- 		  fprintf (stderr, "\nindex:");
- 		  debug_rtx (index);
- 		}
- 	      break;
- 	    default:
- 	      return CR16_INVALID;
- 	    }
- 	  /* Check if operand 0 of operand 0 is REGP.  */
- 	  switch (GET_CODE (XEXP (XEXP (addr, 0), 0)))
- 	    {
- 	    case REG:
- 	    case SUBREG:
- 	      /* Now check if REG is a REGP and not in LONG regs.  */
- 	      if (GET_MODE_BITSIZE (GET_MODE (XEXP (XEXP (addr, 0), 0)))
- 		  > BITS_PER_WORD)
- 		{
- 		  if (REGNO (XEXP (XEXP (addr, 0), 0))
- 		      >= CR16_FIRST_DWORD_REGISTER)
- 		    return CR16_INVALID;
- 		  base = XEXP (XEXP (addr, 0), 0);
- 		  if (debug_print)
- 		    {
- 		      fprintf (stderr, "\nbase:");
- 		      debug_rtx (base);
- 		    }
- 		}
- 	      else
- 		return CR16_INVALID;
- 	      break;
- 	    default:
- 	      return CR16_INVALID;
- 	    }
- 	  /* Now check if the operand 1 of operand 0 is const_int.  */
- 	  if (GET_CODE (XEXP (XEXP (addr, 0), 1)) == CONST_INT)
- 	    {
- 	      disp = XEXP (XEXP (addr, 0), 1);
- 	      if (debug_print)
- 		{
- 		  fprintf (stderr, "\ndisp:");
- 		  debug_rtx (disp);
- 		}
- 	      if (!UNSIGNED_INT_FITS_N_BITS (INTVAL (disp), 20))
- 		return CR16_INVALID;
- 	    }
- 	  else
- 	    return CR16_INVALID;
- 	  retval = CR16_INDEX_REGP_REL;
- 	  break;
- 	default:
- 	  return CR16_INVALID;
- 	}
-       break;
- 
-     default:
-       return CR16_INVALID;
-     }
- 
-   /* Check if the base and index registers are valid.  */
-   if (base && !(cr16_addr_reg_p (base)))
-     return CR16_INVALID;
-   if (base && !(CR16_REG_OK_FOR_BASE_P (base)))
-     return CR16_INVALID;
-   if (index && !(REG_OK_FOR_INDEX_P (index)))
-     return CR16_INVALID;
- 
-   /* Write the decomposition to out parameter.  */
-   out->base = base;
-   out->disp = disp;
-   out->index = index;
-   out->data = data;
-   out->code = code;
- 
-   return retval;
- }
- 
- /* Return non-zero value if 'x' is legitimate PIC operand
-    when generating PIC code.  */
- int
- legitimate_pic_operand_p (rtx x)
- {
-   switch (GET_CODE (x))
-     {
-     case SYMBOL_REF:
-       return 0;
-     case LABEL_REF:
-       return 0;
-     case CONST:
-       /* REVISIT: Use something like symbol_referenced_p.  */
-       if (GET_CODE (XEXP (x, 0)) == PLUS
- 	  && (GET_CODE (XEXP (XEXP (x, 0), 0)) == SYMBOL_REF
- 	      || GET_CODE (XEXP (XEXP (x, 0), 0)) == LABEL_REF)
- 	  && (GET_CODE (XEXP (XEXP (x, 0), 1)) == CONST_INT))
- 	return 0;
-       break;
-     case MEM:
-       return legitimate_pic_operand_p (XEXP (x, 0));
-     default:
-       break;
-     }
-   return 1;
- }
- 
- /* Convert a non-PIC address in `orig' to a PIC address in `reg'.
- 
-      Input            Output (-f pic)        Output (-f PIC)
-      orig             reg
-                                                                                                                              
-      C1   symbol           symbol@BRO (r12)        symbol@GOT (r12)
-                                                                                                                              
-      C2   symbol + offset  symbol+offset@BRO (r12) symbol+offset@GOT (r12)
-                                                                                                                              
-      NOTE: @BRO is added using unspec:BRO
-      NOTE: @GOT is added using unspec:GOT.  */
- rtx
- legitimize_pic_address (rtx orig, machine_mode mode ATTRIBUTE_UNUSED,
- 			rtx reg)
- {
-   /* First handle a simple SYMBOL_REF or LABEL_REF.  */
-   if (GET_CODE (orig) == SYMBOL_REF || GET_CODE (orig) == LABEL_REF)
-     {
-       if (reg == 0)
- 	reg = gen_reg_rtx (Pmode);
- 
-       if (flag_pic == NEAR_PIC)
- 	{
- 	  /* Unspec to handle -fpic option.  */
- 	  emit_insn (gen_unspec_bro_addr (reg, orig));
- 	  emit_insn (gen_addsi3 (reg, reg, pic_offset_table_rtx));
- 	}
-       else if (flag_pic == FAR_PIC)
- 	{
- 	  /* Unspec to handle -fPIC option.  */
- 	  emit_insn (gen_unspec_got_addr (reg, orig));
- 	}
-       return reg;
-     }
-   else if (GET_CODE (orig) == CONST)
-     {
-       /* To handle (symbol + offset).  */
-       rtx base, offset;
- 
-       if (GET_CODE (XEXP (orig, 0)) == PLUS
- 	  && XEXP (XEXP (orig, 0), 0) == pic_offset_table_rtx)
- 	return orig;
- 
-       if (reg == 0)
- 	{
- 	  gcc_assert (can_create_pseudo_p ());
- 	  reg = gen_reg_rtx (Pmode);
- 	}
- 
-       gcc_assert (GET_CODE (XEXP (orig, 0)) == PLUS);
- 
-       base = legitimize_pic_address (XEXP (XEXP (orig, 0), 0), Pmode, reg);
-       offset = legitimize_pic_address (XEXP (XEXP (orig, 0), 1), Pmode,
- 				       base == reg ? 0 : reg);
- 
-       /* REVISIT: Optimize for const-offsets.  */
-       emit_insn (gen_addsi3 (reg, base, offset));
- 
-       return reg;
-     }
-   return orig;
- }
- 
- /* Implementation of TARGET_LEGITIMATE_ADDRESS_P.  */
- static bool
- cr16_legitimate_address_p (machine_mode mode ATTRIBUTE_UNUSED,
- 			   rtx addr, bool strict)
- {
-   enum cr16_addrtype addrtype;
-   struct cr16_address address;
- 
-   if (TARGET_DEBUG_ADDR)
-     {
-       fprintf (stderr,
- 	       "\n======\nTARGET_LEGITIMATE_ADDRESS_P, mode = %s, strict = %d",
- 	       GET_MODE_NAME (mode), strict);
-       debug_rtx (addr);
-     }
-   addrtype = cr16_decompose_address (addr, &address,
- 				     (TARGET_DEBUG_ADDR ? 1 : 0), FALSE);
- 
-   if (TARGET_DEBUG_ADDR)
-     {
-       const char *typestr;
- 
-       switch (addrtype)
- 	{
- 	case CR16_INVALID:
- 	  typestr = "invalid";
- 	  break;
- 	case CR16_ABSOLUTE:
- 	  typestr = "absolute";
- 	  break;
- 	case CR16_REG_REL:
- 	  typestr = "register relative";
- 	  break;
- 	case CR16_REGP_REL:
- 	  typestr = "register pair relative";
- 	  break;
- 	case CR16_INDEX_REGP_REL:
- 	  typestr = "index + register pair relative";
- 	  break;
- 	default:
- 	  gcc_unreachable ();
- 	}
-       fprintf (stderr, "\ncr16 address type: %s\n", typestr);
-     }
- 
-   if (addrtype == CR16_INVALID)
-     return FALSE;
- 
-   if (strict)
-     {
-       if (address.base
- 	  && !REGNO_MODE_OK_FOR_BASE_P (REGNO (address.base), mode))
- 	{
- 	  if (TARGET_DEBUG_ADDR)
- 	    fprintf (stderr, "base register not strict\n");
- 	  return FALSE;
- 	}
-       if (address.index && !REGNO_OK_FOR_INDEX_P (REGNO (address.index)))
- 	{
- 	  if (TARGET_DEBUG_ADDR)
- 	    fprintf (stderr, "index register not strict\n");
- 	  return FALSE;
- 	}
-     }
- 
-   /* Return true if addressing mode is register relative.  */
-   if (flag_pic)
-     {
-       if (addrtype == CR16_REG_REL || addrtype == CR16_REGP_REL)
- 	return TRUE;
-       else
- 	return FALSE;
-     }
- 
-   return TRUE;
- }
- 
- /* Routines to compute costs.  */
- 
- /* Return cost of the memory address x.  */
- static int
- cr16_address_cost (rtx addr, machine_mode mode ATTRIBUTE_UNUSED,
- 		   addr_space_t as ATTRIBUTE_UNUSED,
- 		   bool speed ATTRIBUTE_UNUSED)
- {
-   enum cr16_addrtype addrtype;
-   struct cr16_address address;
-   int cost = 2;
- 
-   addrtype = cr16_decompose_address (addr, &address, 0, FALSE);
- 
-   gcc_assert (addrtype != CR16_INVALID);
- 
-   /* CR16_ABSOLUTE            : 3
-      CR16_REG_REL  (disp !=0) : 4
-      CR16_REG_REL  (disp ==0) : 5
-      CR16_REGP_REL (disp !=0) : 6
-      CR16_REGP_REL (disp ==0) : 7
-      CR16_INDEX_REGP_REL (disp !=0) : 8
-      CR16_INDEX_REGP_REL (disp ==0) : 9.  */
-   switch (addrtype)
-     {
-     case CR16_ABSOLUTE:
-       cost += 1;
-       break;
-     case CR16_REGP_REL:
-       cost += 2;
-       /* Fall through.  */
-     case CR16_REG_REL:
-       cost += 3;
-       if (address.disp)
- 	cost -= 1;
-       break;
-     case CR16_INDEX_REGP_REL:
-       cost += 7;
-       if (address.disp)
- 	cost -= 1;
-     default:
-       break;
-     }
- 
-   if (TARGET_DEBUG_ADDR)
-     {
-       fprintf (stderr, "\n======\nmacro TARGET_ADDRESS_COST = %d\n", cost);
-       debug_rtx (addr);
-     }
- 
-   return cost;
- }
- 
- 
- /* Implement `TARGET_REGISTER_MOVE_COST'.  */
- static int
- cr16_register_move_cost (machine_mode mode ATTRIBUTE_UNUSED,
- 			 reg_class_t from ATTRIBUTE_UNUSED, reg_class_t to)
- {
-   return (to != GENERAL_REGS ? 8 : 2);
- }
- 
- /* Implement `TARGET_MEMORY_MOVE_COST'.  */
- 
- /* Return the cost of moving data of mode MODE between a register of class
-    CLASS and memory; IN is zero if the value is to be written to memory,
-    nonzero if it is to be read in. This cost is relative to those in
-    REGISTER_MOVE_COST.  */
- static int
- cr16_memory_move_cost (machine_mode mode,
- 		       reg_class_t rclass ATTRIBUTE_UNUSED,
- 		       bool in ATTRIBUTE_UNUSED)
- {
-   /* One LD or ST takes twice the time of a simple reg-reg move.  */
-   if (reg_classes_intersect_p (rclass, GENERAL_REGS))
-     return (4 * cr16_hard_regno_nregs (0, mode));
-   else
-     return (100);
- }
- 
- /* Instruction output.  */
- 
- /* Check if a const_double is ok for cr16 store-immediate instructions.  */
- int
- cr16_const_double_ok (rtx op)
- {
-   if (GET_MODE (op) == SFmode)
-     {
-       long l;
-       REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (op), l);
-       return UNSIGNED_INT_FITS_N_BITS (l, 4) ? 1 : 0;
-     }
- 
-   return ((UNSIGNED_INT_FITS_N_BITS (CONST_DOUBLE_LOW (op), 4)) &&
- 	  (UNSIGNED_INT_FITS_N_BITS (CONST_DOUBLE_HIGH (op), 4))) ? 1 : 0;
- }
- 
- /* Returns bit position of first 0 or 1 bit.
-    It is safe to assume val as 16-bit wide.  */
- int
- cr16_operand_bit_pos (int val, int bitval)
- {
-   int i;
-   if (bitval == 0)
-     val = ~val;
- 
-   for (i = 0; i < 16; i++)
-     if (val & (1 << i))
-       break;
-   return i;
- }
- 
- /* Implements the macro PRINT_OPERAND defined in cr16.h.  */
- static void
- cr16_print_operand (FILE * file, rtx x, int code)
- {
-   int ptr_dereference = 0;
- 
-   switch (code)
-     {
-     case 'd':
-       {
- 	const char *cr16_cmp_str;
- 	switch (GET_CODE (x))
- 	  {
- 	    /* MD: compare (reg, reg or imm) but CR16: cmp (reg or imm, reg)
- 	       -> swap all non symmetric ops.  */
- 	  case EQ:
- 	    cr16_cmp_str = "eq";
- 	    break;
- 	  case NE:
- 	    cr16_cmp_str = "ne";
- 	    break;
- 	  case GT:
- 	    cr16_cmp_str = "lt";
- 	    break;
- 	  case GTU:
- 	    cr16_cmp_str = "lo";
- 	    break;
- 	  case LT:
- 	    cr16_cmp_str = "gt";
- 	    break;
- 	  case LTU:
- 	    cr16_cmp_str = "hi";
- 	    break;
- 	  case GE:
- 	    cr16_cmp_str = "le";
- 	    break;
- 	  case GEU:
- 	    cr16_cmp_str = "ls";
- 	    break;
- 	  case LE:
- 	    cr16_cmp_str = "ge";
- 	    break;
- 	  case LEU:
- 	    cr16_cmp_str = "hs";
- 	    break;
- 	  default:
- 	    gcc_unreachable ();
- 	  }
- 	fprintf (file, "%s", cr16_cmp_str);
- 	return;
-       }
-     case '$':
-       putc ('$', file);
-       return;
- 
-     case 'p':
-       if (GET_CODE (x) == REG)
- 	{
- 	  /* For Push instructions, we should not print register pairs.  */
- 	  fprintf (file, "%s", reg_names[REGNO (x)]);
- 	  return;
- 	}
-       break;
- 
-     case 'b':
-       /* Print the immediate address for bal 
-          'b' is used instead of 'a' to avoid compiler calling
-          the GO_IF_LEGITIMATE_ADDRESS which cannot
-          perform checks on const_int code addresses as it
-          assumes all const_int are data addresses.  */
-       fprintf (file, "0x%lx", INTVAL (x));
-       return;
- 
-     case 'r':
-       /* Print bit position of first 0.  */
-       fprintf (file, "%d", cr16_operand_bit_pos (INTVAL (x), 0));
-       return;
- 
-     case 's':
-       /* Print bit position of first 1.  */
-       fprintf (file, "%d", cr16_operand_bit_pos (INTVAL (x), 1));
-       return;
-     case 'g':
-       /* 'g' is used for implicit mem: dereference.  */
-       ptr_dereference = 1;
-       /* FALLTHRU */
-     case 'f':
-     case 0:
-       /* default.  */
-       switch (GET_CODE (x))
- 	{
- 	case REG:
- 	  if (GET_MODE_BITSIZE (GET_MODE (x)) > BITS_PER_WORD)
- 	    {
- 	      if (LONG_REG_P (REGNO (x)))
- 		fprintf (file, "(%s)", reg_names[REGNO (x)]);
- 	      else
- 		fprintf (file, "(%s,%s)", reg_names[REGNO (x) + 1],
- 			 reg_names[REGNO (x)]);
- 	    }
- 	  else
- 	    fprintf (file, "%s", reg_names[REGNO (x)]);
- 	  return;
- 
- 	case MEM:
- 	  output_address (GET_MODE (x), XEXP (x, 0));
- 	  return;
- 
- 	case CONST_DOUBLE:
- 	  {
- 	    long l;
- 
- 	    REAL_VALUE_TO_TARGET_SINGLE (*CONST_DOUBLE_REAL_VALUE (x), l);
- 
- 	    fprintf (file, "$0x%lx", l);
- 	    return;
- 	  }
- 	case CONST_INT:
- 	  {
- 	    fprintf (file, "$%ld", INTVAL (x));
- 	    return;
- 	  }
- 	case UNSPEC:
- 	  switch (XINT (x, 1))
- 	    {
- 	    default:
- 	      gcc_unreachable ();
- 	    }
- 	  break;
- 
- 	default:
- 	  if (!ptr_dereference)
- 	    {
- 	      putc ('$', file);
- 	    }
- 	  cr16_print_operand_address (file, VOIDmode, x);
- 	  return;
- 	}
-       gcc_unreachable ();
-     default:
-       output_operand_lossage ("invalid %%xn code");
-     }
- 
-   gcc_unreachable ();
- }
- 
- /* Implements the macro PRINT_OPERAND_ADDRESS defined in cr16.h.  */
- 
- static void
- cr16_print_operand_address (FILE * file, machine_mode /*mode*/, rtx addr)
- {
-   enum cr16_addrtype addrtype;
-   struct cr16_address address;
- 
-   /* Decompose the address. Also ask it to treat address as constant.  */
-   addrtype = cr16_decompose_address (addr, &address, 0, TRUE);
- 
-   if (address.disp && GET_CODE (address.disp) == UNSPEC)
-     {
-       debug_rtx (addr);
-     }
- 
-   switch (addrtype)
-     {
-     case CR16_REG_REL:
-       if (address.disp)
- 	{
- 	  if (GET_CODE (address.disp) == UNSPEC)
- 	    cr16_print_operand (file, address.disp, 0);
- 	  else
- 	    output_addr_const (file, address.disp);
- 	}
-       else
- 	fprintf (file, "0");
-       fprintf (file, "(%s)", reg_names[REGNO (address.base)]);
-       break;
- 
-     case CR16_ABSOLUTE:
-       if (address.disp)
- 	output_addr_const (file, address.disp);
-       else
- 	fprintf (file, "0");
-       break;
- 
-     case CR16_INDEX_REGP_REL:
-       fprintf (file, "[%s]", reg_names[REGNO (address.index)]);
-       /* Fall through.  */
-     case CR16_REGP_REL:
-       if (address.disp)
- 	{
- 	  if (GET_CODE (address.disp) == UNSPEC)
- 	    cr16_print_operand (file, address.disp, 0);
- 	  else
- 	    output_addr_const (file, address.disp);
- 	}
-       else
- 	fprintf (file, "0");
-       fprintf (file, "(%s,%s)", reg_names[REGNO (address.base) + 1],
- 	       reg_names[REGNO (address.base)]);
-       break;
-     default:
-       debug_rtx (addr);
-       gcc_unreachable ();
-     }
-   /* Add qualifiers to the address expression that was just printed.  */
-   if (flag_pic < NEAR_PIC && address.code == 0)
-     {
-       if (address.data == DM_FAR)
- 	/* Addr contains SYMBOL_REF & far data ptr.  */
- 	fprintf (file, "@l");
-       else if (address.data == DM_DEFAULT)
- 	/* Addr contains SYMBOL_REF & medium data ptr.  */
- 	fprintf (file, "@m");
-       /* Addr contains SYMBOL_REF & medium data ptr.  */
-       else if (address.data == DM_NEAR)
- 	/* Addr contains SYMBOL_REF & near data ptr.  */
- 	fprintf (file, "@s");
-     }
-   else if (flag_pic == NEAR_PIC
- 	   && (address.code == 0) && (address.data == DM_FAR
- 				      || address.data == DM_DEFAULT
- 				      || address.data == DM_NEAR))
-     {
-       fprintf (file, "@l");
-     }
-   else if (flag_pic == NEAR_PIC && address.code == 2)
-     {
-       fprintf (file, "pic");
-     }
-   else if (flag_pic == NEAR_PIC && address.code == 1)
-     {
-       fprintf (file, "@cpic");
-     }
- 
-   else if (flag_pic == FAR_PIC && address.code == 2)
-     {
-       /* REVISIT: cr16 register indirect jump expects a 1-bit right shifted
-          address ! GOTc tells assembler this symbol is a text-address 
-          This needs to be fixed in such a way that this offset is done 
-          only in the case where an address is being used for indirect jump
-          or call. Determining the potential usage of loadd is of course not
-          possible always. Eventually, this has to be fixed in the 
-          processor.  */
-       fprintf (file, "GOT (%s)", reg_names[PIC_OFFSET_TABLE_REGNUM]);
-     }
-   else if (flag_pic == FAR_PIC && address.code == 1)
-     {
-       fprintf (file, "@cGOT (%s)", reg_names[PIC_OFFSET_TABLE_REGNUM]);
-     }
- 
-   else if (flag_pic == FAR_PIC &&
- 	   (address.data == DM_FAR || address.data == DM_DEFAULT
- 	    || address.data == DM_NEAR))
-     {
-       fprintf (file, "@GOT (%s)", reg_names[PIC_OFFSET_TABLE_REGNUM]);
-     }
- }
- 
- /* Machine description helper functions.  */
- 
- /* Called from cr16.md. The return value depends on the parameter push_or_pop:
-    When push_or_pop is zero -> string for push instructions of prologue.
-    When push_or_pop is nonzero -> string for pop/popret/retx in epilogue.
-    Relies on the assumptions:
-    1. RA is the last register to be saved.
-    2. The maximal value of the counter is MAX_COUNT.  */
- char *
- cr16_prepare_push_pop_string (int push_or_pop)
- {
-   /* j is the number of registers being saved, takes care that there won't be
-      more than 8 in one push/pop instruction.  */
- 
-   /* For the register mask string.  */
-   static char one_inst_str[50];
- 
-   /* i is the index of current_frame_info.save_regs[], going from 0 until 
-      current_frame_info.last_reg_to_save.  */
-   int i, start_reg;
-   int word_cnt;
-   int print_ra;
-   char *return_str;
- 
-   /* For reversing on the push instructions if there are more than one.  */
-   char *temp_str;
- 
-   return_str = (char *) xmalloc (160);
-   temp_str = (char *) xmalloc (160);
- 
-   /* Initialize.  */
-   memset (return_str, 0, 3);
- 
-   i = 0;
-   while (i <= current_frame_info.last_reg_to_save)
-     {
-       /* Prepare mask for one instruction.  */
-       one_inst_str[0] = 0;
- 
-       /* To count number of words in one instruction.  */
-       word_cnt = 0;
-       start_reg = i;
-       print_ra = 0;
-       while ((word_cnt < MAX_COUNT) 
- 	     && (i <= current_frame_info.last_reg_to_save))
- 	{
- 	  /* For each non consecutive save register, 
- 	     a new instruction shall be generated.  */
- 	  if (!current_frame_info.save_regs[i])
- 	    {
- 	      /* Move to next reg and break.  */
- 	      ++i;
- 	      break;
- 	    }
- 
- 	  if (i == RETURN_ADDRESS_REGNUM)
- 	    print_ra = 1;
- 	  else
- 	    {
- 	      /* Check especially if adding 2 does not cross the MAX_COUNT.  */
- 	      if ((word_cnt + ((i < CR16_FIRST_DWORD_REGISTER) ? 1 : 2))
- 		  >= MAX_COUNT)
- 		break;
- 	      /* Increase word count by 2 for long registers except RA.   */
- 	      word_cnt += ((i < CR16_FIRST_DWORD_REGISTER) ? 1 : 2);
- 	    }
- 	  ++i;
- 	}
- 
-       /* No need to generate any instruction as
-          no register or RA needs to be saved.  */
-       if ((word_cnt == 0) && (print_ra == 0))
- 	continue;
- 
-       /* Now prepare the instruction operands.  */
-       if (word_cnt > 0)
- 	{
- 	  sprintf (one_inst_str, "$%d, %s", word_cnt, reg_names[start_reg]);
- 	  if (print_ra)
- 	    strcat (one_inst_str, ", ra");
- 	}
-       else
- 	strcat (one_inst_str, "ra");
- 
-       if (push_or_pop == 1)
- 	{
- 	  /* Pop instruction.  */
- 	  if (print_ra && !cr16_interrupt_function_p ()
- 	      && !crtl->calls_eh_return)
- 	    /* Print popret if RA is saved and its not a interrupt 
- 	       function.  */
- 	    strcpy (temp_str, "\n\tpopret\t");
- 	  else
- 	    strcpy (temp_str, "\n\tpop\t");
- 
- 	  strcat (temp_str, one_inst_str);
- 
- 	  /* Add the pop instruction list.  */
- 	  strcat (return_str, temp_str);
- 	}
-       else
- 	{
- 	  /* Push instruction.  */
- 	  strcpy (temp_str, "\n\tpush\t");
- 	  strcat (temp_str, one_inst_str);
- 
- 	  /* We need to reverse the order of the instructions if there
- 	     are more than one. (since the pop will not be reversed in 
- 	     the epilogue.  */
- 	  strcat (temp_str, return_str);
- 	  strcpy (return_str, temp_str);
- 	}
-     }
- 
-   if (push_or_pop == 1)
-     {
-       /* POP.  */
-       if (cr16_interrupt_function_p ())
- 	strcat (return_str, "\n\tretx\n");
-       else if (crtl->calls_eh_return)
- 	{
- 	  /* Add stack adjustment before returning to exception handler
- 	     NOTE: EH_RETURN_STACKADJ_RTX must refer to (r5, r4).  */
- 	  strcat (return_str, "\n\taddd\t (r5, r4), (sp)\t\n");
- 	  strcat (return_str, "\n\tjump\t (ra)\n");
- 
- 	  /* But before anything else, undo the adjustment addition done in
- 	     cr16_expand_epilogue ().  */
- 	  strcpy (temp_str, "\n\tsubd\t (r5, r4), (sp)\t\n");
- 	  strcat (temp_str, return_str);
- 	  strcpy (return_str, temp_str);
- 	}
-       else if (!FUNC_IS_NORETURN_P (current_function_decl)
- 	       && !(current_frame_info.save_regs[RETURN_ADDRESS_REGNUM]))
- 	strcat (return_str, "\n\tjump\t (ra)\n");
-     }
- 
-   /* Skip the newline and the tab in the start of return_str.  */
-   return_str += 2;
-   return return_str;
- }
- 
- 
- /* Generate DWARF2 annotation for multi-push instruction.  */
- static void
- cr16_create_dwarf_for_multi_push (rtx insn)
- {
-   rtx dwarf, reg, tmp;
-   int i, j, from, to, word_cnt, dwarf_par_index, inc;
-   machine_mode mode;
-   int num_regs = 0, offset = 0, split_here = 0, total_push_bytes = 0;
- 
-   for (i = 0; i <= current_frame_info.last_reg_to_save; ++i)
-     {
-       if (current_frame_info.save_regs[i])
- 	{
- 	  ++num_regs;
- 	  if (i < CR16_FIRST_DWORD_REGISTER)
- 	    total_push_bytes += 2;
- 	  else
- 	    total_push_bytes += 4;
- 	}
-     }
- 
-   if (!num_regs)
-     return;
- 
-   dwarf = gen_rtx_SEQUENCE (VOIDmode, rtvec_alloc (num_regs + 1));
-   dwarf_par_index = num_regs;
- 
-   from = current_frame_info.last_reg_to_save + 1;
-   to = current_frame_info.last_reg_to_save;
-   word_cnt = 0;
- 
-   for (i = current_frame_info.last_reg_to_save; i >= 0;)
-     {
-       if (!current_frame_info.save_regs[i] || i == 0 || split_here)
- 	{
- 	  /* This block of regs is pushed in one instruction.  */
- 	  if (i == 0 && current_frame_info.save_regs[i])
- 	    from = 0;
- 
- 	  for (j = to; j >= from; --j)
- 	    {
- 	      if (j < CR16_FIRST_DWORD_REGISTER)
- 		{
- 		  mode = HImode;
- 		  inc = 1;
- 		}
- 	      else
- 		{
- 		  mode = SImode;
- 		  inc = 2;
- 		}
- 	      reg = gen_rtx_REG (mode, j);
- 	      offset += 2 * inc;
- 	      tmp = gen_rtx_SET (gen_frame_mem (mode,
- 						plus_constant
- 						(Pmode, stack_pointer_rtx,
- 						 total_push_bytes - offset)),
- 				 reg);
- 	      RTX_FRAME_RELATED_P (tmp) = 1;
- 	      XVECEXP (dwarf, 0, dwarf_par_index--) = tmp;
- 	    }
- 	  from = i;
- 	  to = --i;
- 	  split_here = 0;
- 	  word_cnt = 0;
- 	  continue;
- 	}
- 
-       if (i != RETURN_ADDRESS_REGNUM)
- 	{
- 	  inc = (i < CR16_FIRST_DWORD_REGISTER) ? 1 : 2;
- 	  if (word_cnt + inc >= MAX_COUNT || FRAME_POINTER_REGNUM == i)
- 	    {
- 	      split_here = 1;
- 	      from = i;
- 	      continue;
- 	    }
- 	  word_cnt += inc;
- 	}
- 
-       from = i--;
-     }
- 
-   tmp = gen_rtx_SET (stack_pointer_rtx,
- 		     gen_rtx_PLUS (SImode, stack_pointer_rtx,
- 				   GEN_INT (-offset)));
-   RTX_FRAME_RELATED_P (tmp) = 1;
-   XVECEXP (dwarf, 0, 0) = tmp;
- 
-   add_reg_note (insn, REG_FRAME_RELATED_EXPR, dwarf);
- }
- 
- /*
- CompactRISC CR16 Architecture stack layout:
- 
-      0 +---------------------
-     |
-     .
-     .
-     |
-     +==================== Sp (x) = Ap (x+1)
-       A | Args for functions
-       | | called by X and      Dynamically
-       | | Dynamic allocations  allocated and
-       | | (alloca, variable    deallocated
-   Stack | length arrays).
-   grows +-------------------- Fp (x)
-   down| | Local variables of X
-   ward| +--------------------
-       | | Regs saved for X-1
-       | +==================== Sp (x-1) = Ap (x)
-     | Args for func X
-     | pushed by X-1
-     +-------------------- Fp (x-1)
-     |
-     |
-     V
- */
- void
- cr16_expand_prologue (void)
- {
-   rtx insn;
- 
-   cr16_compute_frame ();
-   cr16_compute_save_regs ();
- 
-   /* If there is no need in push and adjustment to sp, return.  */
-   if ((current_frame_info.total_size + current_frame_info.reg_size) == 0)
-     return;
- 
-   if (current_frame_info.last_reg_to_save != -1)
-     {
-       /* If there are registers to push.  */
-       insn = emit_insn (gen_push_for_prologue
- 			(GEN_INT (current_frame_info.reg_size)));
-       cr16_create_dwarf_for_multi_push (insn);
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
- 
- 
-   if (current_frame_info.total_size > 0)
-     {
-       insn = emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- 				    GEN_INT (-current_frame_info.total_size)));
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
- 
-   if (frame_pointer_needed)
-     {
-       /* Initialize the frame pointer with the value of the stack pointer
-          pointing now to the locals.  */
-       insn = emit_move_insn (frame_pointer_rtx, stack_pointer_rtx);
-     }
- }
- 
- /* Generate insn that updates the stack for local variables and padding 
-    for registers we save.   - Generate the appropriate return insn.  */
- void
- cr16_expand_epilogue (void)
- {
-   rtx insn;
- 
-   /* Nonzero if we need to return and pop only RA. This will generate a
-      different insn. This differentiate is for the peepholes for call as 
-      last statement in function.  */
-   int only_popret_RA = (current_frame_info.save_regs[RETURN_ADDRESS_REGNUM]
- 			&& (current_frame_info.reg_size 
- 			    == CR16_UNITS_PER_DWORD));
-   
-   if (frame_pointer_needed)
-     {
-       /* Restore the stack pointer with the frame pointers value.  */
-       insn = emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
-     }
- 
-   if (current_frame_info.total_size > 0)
-     {
-       insn = emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- 				    GEN_INT (current_frame_info.total_size)));
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
- 
-   if (crtl->calls_eh_return)
-     {
-       /* Add this here so that (r5, r4) is actually loaded with the adjustment
-          value; otherwise, the load might be optimized away...
-          NOTE: remember to subtract the adjustment before popping the regs
-          and add it back before returning.  */
-       insn = emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx,
- 				    EH_RETURN_STACKADJ_RTX));
-     }
- 
-   if (cr16_interrupt_function_p ())
-     {
-       insn = emit_jump_insn (gen_interrupt_return ());
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
-   else if (crtl->calls_eh_return)
-     {
-       /* Special case, pop what's necessary, adjust SP and jump to (RA).  */
-       insn = emit_jump_insn (gen_pop_and_popret_return 
- 			     (GEN_INT (current_frame_info.reg_size)));
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
-   else if (current_frame_info.last_reg_to_save == -1)
-     /* Nothing to pop.  */
-     /* Don't output jump for interrupt routine, only retx.  */
-     emit_jump_insn (gen_jump_return ());
-   else if (only_popret_RA)
-     {
-       insn = emit_jump_insn (gen_popret_RA_return ());
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
-   else
-     {
-       insn = emit_jump_insn (gen_pop_and_popret_return 
- 			     (GEN_INT (current_frame_info.reg_size)));
-       RTX_FRAME_RELATED_P (insn) = 1;
-     }
- }
- 
- /* Implements FRAME_POINTER_REQUIRED.  */
- static bool
- cr16_frame_pointer_required (void)
- {
-   return (cfun->calls_alloca || crtl->calls_eh_return
- 	  || cfun->has_nonlocal_label || crtl->calls_eh_return);
- }
- 
- static bool
- cr16_can_eliminate (const int from ATTRIBUTE_UNUSED, const int to)
- {
-   return (to == STACK_POINTER_REGNUM ? !frame_pointer_needed : true);
- }
- 
- 
- /* A C compound statement that attempts to replace X with
-    a valid memory address for an operand of mode MODE. WIN
-    will be a C statement label elsewhere in the code.
-    X will always be the result of a call to break_out_memory_refs (),
-    and OLDX will be the operand that was given to that function to
-    produce X.
-    The code generated by this macro should not alter the
-    substructure of X.  If it transforms X into a more legitimate form, 
-    it should assign X (which will always be a C variable) a new value.  */
- static rtx
- cr16_legitimize_address (rtx x, rtx orig_x ATTRIBUTE_UNUSED,
- 			 machine_mode mode ATTRIBUTE_UNUSED)
- {
-   if (flag_pic)
-     return legitimize_pic_address (orig_x, mode, NULL_RTX);
-   else
-     return x;
- }
- 
- /* Implement TARGET_LEGITIMATE_CONSTANT_P
-    Nonzero if X is a legitimate constant for an immediate
-    operand on the target machine.  You can assume that X
-    satisfies CONSTANT_P. In cr16c treat legitimize float 
-    constant as an immediate operand.  */
- static bool
- cr16_legitimate_constant_p (machine_mode mode ATTRIBUTE_UNUSED,
- 			    rtx x ATTRIBUTE_UNUSED)
- {
-   return 1;
- }
- 
- static scalar_int_mode
- cr16_unwind_word_mode (void)
- {
-   return SImode;
- }
- 
- /* Helper function for md file. This function is used to emit arithmetic 
-    DI instructions. The argument "num" decides which instruction to be
-    printed.  */
- const char *
- cr16_emit_add_sub_di (rtx *operands, enum rtx_code code)
- {
-   rtx lo_op[2] ;
-   rtx hi0_op[2] ;
-   rtx hi1_op[2] ;
- 
-   lo_op[0] = gen_lowpart (SImode, operands[0]);
-   hi0_op[0] = simplify_gen_subreg (HImode, operands[0], DImode, 4);
-   hi1_op[0] = simplify_gen_subreg (HImode, operands[0], DImode, 6);
- 
-   lo_op[1] = gen_lowpart (SImode, operands[2]);
-   hi0_op[1] = simplify_gen_subreg (HImode, operands[2], DImode, 4);
-   hi1_op[1] = simplify_gen_subreg (HImode, operands[2], DImode, 6);
- 
-   switch (code)
-   {
-     case PLUS:
-       {
- 	output_asm_insn ("addd\t%1, %0", lo_op) ;
- 	output_asm_insn ("addcw\t%1, %0", hi0_op) ;
- 	output_asm_insn ("addcw\t%1, %0", hi1_op) ;
- 	break;
-       }
-     case MINUS:
-       {
- 	output_asm_insn ("subd\t%1, %0", lo_op) ;
- 	output_asm_insn ("subcw\t%1, %0", hi0_op) ;
- 	output_asm_insn ("subcw\t%1, %0", hi1_op) ;
- 	break;
-       }
-    default:
-      break;
-   }
- 
-   return "";
- }
- 
- 
- /* Helper function for md file. This function is used to emit logical 
-    DI instructions. The argument "num" decides which instruction to be
-    printed.  */
- const char *
- cr16_emit_logical_di (rtx *operands, enum rtx_code code)
- {
-   rtx lo_op[2] ;
-   rtx hi_op[2] ;
- 
-   lo_op[0] = gen_lowpart (SImode, operands[0]);
-   hi_op[0] = simplify_gen_subreg (SImode, operands[0], DImode, 4);
- 
-   lo_op[1] = gen_lowpart (SImode, operands[2]);
-   hi_op[1] = simplify_gen_subreg (SImode, operands[2], DImode, 4);
- 
-   switch (code)
-   {
-     case AND:
-       {
- 	output_asm_insn ("andd\t%1, %0", lo_op) ;
- 	output_asm_insn ("andd\t%1, %0", hi_op) ;
- 	return "";
-       }
-     case IOR:
-       {
- 	output_asm_insn ("ord\t%1, %0", lo_op) ;
- 	output_asm_insn ("ord\t%1, %0", hi_op) ;
- 	return "";
-       }
-     case XOR:
-       {
- 	output_asm_insn ("xord\t%1, %0", lo_op) ;
- 	output_asm_insn ("xord\t%1, %0", hi_op) ;
- 	return "";
-       }
-     default:
-       break;
-   }
- 
-   return "";
- }
- 
- /* Implement PUSH_ROUNDING.  */
- 
- poly_int64
- cr16_push_rounding (poly_int64 bytes)
- {
-   return (bytes + 1) & ~1;
- }
- 
- /* Initialize 'targetm' variable which contains pointers to functions 
-    and data relating to the target machine.  */
- 
- struct gcc_target targetm = TARGET_INITIALIZER;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/cr16.h gcc-13.1.0/gcc/config/cr16/cr16.h
*** gcc-12.2.0/gcc/config/cr16/cr16.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/cr16.h	Thu Jan  1 00:00:00 1970
***************
*** 1,556 ****
- /* Definitions of target machine for GNU compiler, for CR16.
-    Copyright (C) 2012-2022 Free Software Foundation, Inc.
-    Contributed by KPIT Cummins Infosystems Limited.
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
- 
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
-    
- #ifndef GCC_CR16_H
- #define GCC_CR16_H
- 
- #define OBJECT_FORMAT_ELF
- 
- /* Controlling the driver.  */
- 
- /* The GNU C++ standard library requires that these macros be defined.  */
- #undef CPLUSPLUS_CPP_SPEC
- #define CPLUSPLUS_CPP_SPEC "-D_GNU_SOURCE %(cpp)"
- 
- #undef  STARTFILE_SPEC
- #define STARTFILE_SPEC "crt1.o%s crti.o%s crtbegin.o%s crtlibid.o%s"
- 
- #undef  ENDFILE_SPEC
- #define ENDFILE_SPEC "crtend.o%s crtn.o%s"
- 
- #undef  MATH_LIBRARY
- #define MATH_LIBRARY ""
- 
- #undef  LIB_SPEC
- #define LIB_SPEC "-( -lc %{msim*:-lsim}%{!msim*:-lnosys} -) \
- %{msim*:%{!T*:-Tsim.ld}} \
- %{!T*:%{!msim*: %{-Telf32cr16.x}}}"
- 
- /* Run-time target specification.  */
- #ifndef TARGET_CPU_CPP_BUILTINS
- #define TARGET_CPU_CPP_BUILTINS()          \
- do                                         \
-   {                                        \
-     builtin_define ("__CR__");             \
-     builtin_define ("__CR16__");           \
-     builtin_define ("__CR16C__");          \
-     if (TARGET_CR16CP)                     \
-       builtin_define ("__CR16CP__");       \
-     else                                   \
-       builtin_define ("__CR16CSTD__");     \
-     if (CR16_TARGET_DATA_NEAR)             \
-       builtin_define ("__DATA_NEAR__");    \
-     if (CR16_TARGET_DATA_MEDIUM)           \
-       builtin_define ("__DATA_MEDIUM__");  \
-     if (CR16_TARGET_DATA_FAR)              \
-       builtin_define ("__DATA_FAR__");     \
-     if (TARGET_INT32)                      \
-       builtin_define ("__INT32__");        \
-   }                                        \
- while (0)
- #endif
- 
- /* Force the generation of dwarf .debug_frame sections even if not
-    compiling -g.  This guarantees that we can unwind the stack.  */
- #define DWARF2_FRAME_INFO 1
- 
- #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
- 
- /* Generate .file/.loc directives, so that the assembler generates the
-    line table.  */
- #define DWARF2_ASM_LINE_DEBUG_INFO 1
- 
- #define CR16_TARGET_DATA_NEAR   cr16_is_data_model (DM_NEAR)
- #define CR16_TARGET_DATA_MEDIUM cr16_is_data_model (DM_DEFAULT)
- #define CR16_TARGET_DATA_FAR    cr16_is_data_model (DM_FAR)
- 
- /* Storage layout.  */
- #define BITS_BIG_ENDIAN     0
- 
- #define BYTES_BIG_ENDIAN    0
- 
- #define WORDS_BIG_ENDIAN    0
- 
- #define UNITS_PER_WORD      2
- 
- /* Units per 32-bit (DWORD).  */
- #define CR16_UNITS_PER_DWORD 4
- 
- #define POINTER_SIZE        32
- 
- #define PARM_BOUNDARY       16
- 
- #define STACK_BOUNDARY      (MAX (BIGGEST_ALIGNMENT, PARM_BOUNDARY))
- 
- #define FUNCTION_BOUNDARY   BIGGEST_ALIGNMENT
- 
- /* Biggest alignment on CR16C+ is 32-bit as internal bus is AMBA based 
-    where as CR16C is proprietary internal bus architecture.  */
- #define BIGGEST_ALIGNMENT   ((TARGET_CR16CP) ? 32 : 16)
- 
- #define MAX_FIXED_MODE_SIZE 64
- 
- /* In CR16 arrays of chars are word-aligned, so strcpy () will be faster.  */
- #define DATA_ALIGNMENT(TYPE, ALIGN)              \
-   (((TREE_CODE (TYPE) == ARRAY_TYPE)             \
-      && (TYPE_MODE (TREE_TYPE (TYPE)) == QImode) \
-      && ((ALIGN) < BITS_PER_WORD))               \
-      ? (BITS_PER_WORD) : (ALIGN))
- 
- #define STRICT_ALIGNMENT 0
- 
- #define PCC_BITFIELD_TYPE_MATTERS 1
- 
- /* Layout of source language data types.  */
- #define INT_TYPE_SIZE       (TARGET_INT32 ? 32 : 16)
- 
- #define SHORT_TYPE_SIZE     16
- 
- #define LONG_TYPE_SIZE      32
- 
- #define LONG_LONG_TYPE_SIZE 64
- 
- #define FLOAT_TYPE_SIZE     32
- 
- #define DOUBLE_TYPE_SIZE    64
- 
- #define LONG_DOUBLE_TYPE_SIZE 64
- 
- #define DEFAULT_SIGNED_CHAR 1
- 
- #define SIZE_TYPE           "long unsigned int"
- 
- #define PTRDIFF_TYPE        "long int"
- 
- #define WCHAR_TYPE          "short unsigned int"
- 
- #define WCHAR_TYPE_SIZE     16
- 
- /* By default, the C++ compiler will use the lowest bit of the pointer
-    to function to indicate a pointer-to-member-function points to a
-    virtual member function.  However, in CR architecture FUNCTION_BOUNDARY
-    indicates function addresses are always even, but function pointers can be
-    odd (after right-shifting them when loading them into a register), and the
-    default doesn't work.  In that case, the lowest bit of the delta
-    field will be used (the remainder of the field is shifted to the left).  */
- #define TARGET_PTRMEMFUNC_VBIT_LOCATION     ptrmemfunc_vbit_in_delta
- 
- /* Define DEFAULT_PCC_STRUCT_RETURN to 1 if all structure and union return
-    values must be in memory.  */
- #define DEFAULT_PCC_STRUCT_RETURN 0
- 
- /* Register usage.  */
- 
- /* First 32-bit register is R12.  */
- #define CR16_FIRST_DWORD_REGISTER   12
- 
- #define FIRST_PSEUDO_REGISTER       16
- 
- /* 1 for registers that have pervasive standard uses
-    and are not available for the register allocator.
-    On the CR16, only the stack pointer (r15) is such.  */
- #define FIXED_REGISTERS                               \
-   {                                                   \
-   /* r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r10.  */ \
-     0,  0,  0,  0,  0,  0,  0,  0,  0,  0,  0,        \
-   /* r11 r12 r13 ra  sp.  */                          \
-     0,  0,  0,  0,  1                                 \
-   }      
- 
- /* 1 for registers not available across function calls.
-    These must include the FIXED_REGISTERS and also any
-    registers that can be used without being saved.
-    The latter must include the registers where values are returned
-    and the register where structure-value addresses are passed.
-  
-    On the CR16, calls clobbers r0-r6 (scratch registers), 
-    ra (the return address) and sp (the stack pointer).  */
- #define CALL_USED_REGISTERS                           \
-   {                                                   \
-   /* r0  r1  r2  r3  r4  r5  r6  r7  r8  r9  r10.  */ \
-     1,  1,  1,  1,  1,  1,  1,  0,  0,  0,  0,        \
-   /* r11 r12 r13 ra  sp.  */                          \
-     0,  0,  0,  1,  1                                 \
-   }
- 
- /* Returns 1 if the register is longer than word size, 0 otherwise.  */
- #define LONG_REG_P(REGNO)                                                    \
-   (targetm.hard_regno_nregs (REGNO,                                          \
- 			     GET_MODE_WIDER_MODE (word_mode).require ()) == 1)
- 
- /* Interrupt functions can only use registers that have already been 
-    saved by the prologue, even if they would normally be call-clobbered 
-    Check if sizes are same and then check if it is possible to rename.  */
- #define HARD_REGNO_RENAME_OK(SRC, DEST)                 \
-   (!cr16_interrupt_function_p () || (df_regs_ever_live_p (DEST)))
- 
- /* Exception handling stuff.  */
- 
- /*To ensure correct dwarf unwinding.  */
- #define LIBGCC2_UNWIND_ATTRIBUTE __attribute__((optimize ("no-gcse","no-dse")))
- 
- #define gen_rtx_RA	gen_rtx_REG (Pmode, RETURN_ADDRESS_REGNUM)
- 
- /* Use (r8,r7) and (r10,r9) to pass exception handling information.  */
- #define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? (N*2 + 7) : INVALID_REGNUM)
- 
- #define DWARF2_UNWIND_INFO 1
- 
- /* (r5,r4) holds a stack adjustment for returning to a handler.  */
- #define EH_RETURN_STACKADJ_RTX 		gen_rtx_REG (Pmode, 4)
- 
- #define EH_RETURN_HANDLER_RTX \
-   gen_rtx_MEM (Pmode, plus_constant (Pmode, arg_pointer_rtx, -4))
- 
- #define INCOMING_RETURN_ADDR_RTX	gen_rtx_RA
- 
- #define DWARF_FRAME_RETURN_COLUMN	\
-   DWARF_FRAME_REGNUM (RETURN_ADDRESS_REGNUM)
- 
- #define INCOMING_FRAME_SP_OFFSET		0	
- #define FRAME_POINTER_CFA_OFFSET(FNDECL)	0	
- 
- /* A C expression whose value is RTL representing the value of the return
-    address for the frame COUNT steps up from the current frame.  */
- #define RETURN_ADDR_RTX(COUNT, FRAME) 			  		\
-   (COUNT == 0)	?  gen_rtx_PLUS (Pmode, gen_rtx_RA, gen_rtx_RA)		\
- 		:  const0_rtx
- 
- enum reg_class
- {
-   NO_REGS,
-   SHORT_REGS,
-   LONG_REGS,
-   NOSP_REGS,
-   DOUBLE_BASE_REGS,
-   GENERAL_REGS,
-   ALL_REGS,
-   LIM_REG_CLASSES
- };
- 
- #define N_REG_CLASSES (int) LIM_REG_CLASSES
- 
- #define REG_CLASS_NAMES	\
-   {			\
-     "NO_REGS",		\
-     "SHORT_REGS",	\
-     "LONG_REGS",	\
-     "NOSP_REGS",	\
-     "DOUBLE_BASE_REGS",	\
-     "GENERAL_REGS",	\
-     "ALL_REGS"		\
-   }
- 
- #define REG_CLASS_CONTENTS			     		\
-   {						     		\
-     {0x00000000}, /* NO_REGS		             */  	\
-     {0x00000FFF}, /* SHORT_REGS 	: 0 - 11     */   	\
-     {0x0000F000}, /* LONG_REGS 		: 12 - 15    */  	\
-     {0x00007FFF}, /* NOSP_REGS 		: 0 - 14     */   	\
-     {0x0000F555}, /* DOUBLE_BASE_REGS   : 2,4,6,8,10 */  	\
-     {0x0000FFFF}, /* GENERAL_REGS	: 0 - 15     */  	\
-     {0x0000FFFF}  /* ALL_REGS 		: 0 - 15     */  	\
-   }
- 
- #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P  hook_bool_mode_true 
- 
- #define REGNO_REG_CLASS(REGNO)  cr16_regno_reg_class (REGNO)
- 
- #define BASE_REG_CLASS      GENERAL_REGS
- 
- #define MODE_BASE_REG_CLASS(MODE) \
-   (GET_MODE_SIZE (MODE) <= 4 ?  (BASE_REG_CLASS) :  (DOUBLE_BASE_REGS))
- 
- #define INDEX_REG_CLASS      LONG_REGS
- 
- #define CR16_REGNO_OK_FOR_BASE_P(REGNO)                  \
-   (((REGNO) < FIRST_PSEUDO_REGISTER)                     \
-      || (reg_renumber && ((unsigned) reg_renumber[REGNO] \
-                         < FIRST_PSEUDO_REGISTER)))
- 
- /* Use even-numbered reg for 64-bit accesses.  */
- #define REGNO_MODE_OK_FOR_BASE_P(REGNO, MODE)	  \
- 	(CR16_REGNO_OK_FOR_BASE_P(REGNO)  &&	  \
- 	  ((GET_MODE_SIZE (MODE) > 4  &&  	  \
- 	     (REGNO) < CR16_FIRST_DWORD_REGISTER) \
- 	     ? (((REGNO) & 1) == 0) 		  \
- 	     : 1))
- 
- /* TODO: For now lets not support index addressing mode.  */
- #define REGNO_OK_FOR_INDEX_P(REGNO)        \
-   (((REGNO >= CR16_FIRST_DWORD_REGISTER)   \
-      && ((REGNO) < FIRST_PSEUDO_REGISTER)) \
-    || (reg_renumber                        \
-        && (((unsigned) reg_renumber[REGNO] >= CR16_FIRST_DWORD_REGISTER)  \
-             && ((unsigned) reg_renumber[REGNO] < FIRST_PSEUDO_REGISTER))) \
-   )
- 
- #define PREFERRED_RELOAD_CLASS(X, CLASS) CLASS
- 
- /* The maximum number of consecutive registers of class CLASS needed to
-    hold a value of mode MODE.
-    On the CompactRISC architecture, the size of MODE in words.
-    The size of MODE in double words for the class LONG_REGS.
- 
-    The following check assumes if the class is not LONG_REGS, then
-    all (NO_REGS, SHORT_REGS, NOSP_REGS and GENERAL_REGS) other classes are 
-    short.  We may have to check if this can cause any degradation in 
-    performance.  */
- #define CLASS_MAX_NREGS(CLASS, MODE) \
-   (CLASS == LONG_REGS \
-    ? (GET_MODE_SIZE (MODE) + CR16_UNITS_PER_DWORD - 1) / CR16_UNITS_PER_DWORD\
-    : (GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) / UNITS_PER_WORD)
- 
- /* Macros to check the range of integers . These macros were used across
-    the port, majorly in constraints.md, predicates.md files. */
- #define SIGNED_INT_FITS_N_BITS(imm, N)           \
-   ((((imm) < ((HOST_WIDE_INT) 1 << ((N) - 1)))       \
-       && ((imm) >= -((HOST_WIDE_INT) 1 << ((N) - 1)))) ? 1 : 0)
- 
- #define UNSIGNED_INT_FITS_N_BITS(imm, N) \
-   (((imm) < ((HOST_WIDE_INT) 1 << (N)) && (imm) >= (HOST_WIDE_INT) 0) ? 1 : 0)
- 
- #define IN_RANGE_P(VALUE, LOW, HIGH)                            \
-   ((((HOST_WIDE_INT)(VALUE)) >= (HOST_WIDE_INT)(LOW))           \
-    && (((HOST_WIDE_INT)(VALUE)) <= ((HOST_WIDE_INT)(HIGH))))
- 
- #define IN_RAN(VALUE, LOW, HIGH)                             \
-   (((((HOST_WIDE_INT)(VALUE)) >= (HOST_WIDE_INT)(LOW))       \
-    && (((HOST_WIDE_INT)(VALUE)) <= ((HOST_WIDE_INT)(HIGH)))) ? 1 : 0)
- 
- /* This check is for sbit/cbit instruction.  */
- #define OK_FOR_Z(OP) \
-   ((GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == CONST_INT) \
-    || (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == REG) \
-    || (GET_CODE (OP) == MEM && GET_CODE (XEXP (OP, 0)) == PLUS \
-        && GET_CODE (XEXP ((XEXP (OP, 0)), 0)) == REG \
-        && GET_CODE (XEXP ((XEXP (OP, 0)), 1)) == CONST_INT))
- 
- /* Stack layout and calling conventions.  */
- #define STACK_GROWS_DOWNWARD 1
- 
- #define STACK_POINTER_REGNUM    15
- 
- #define FRAME_POINTER_REGNUM    13
- 
- #define ARG_POINTER_REGNUM      12
- 
- #define STATIC_CHAIN_REGNUM     1
- 
- #define RETURN_ADDRESS_REGNUM   14
- 
- #define FIRST_PARM_OFFSET(FNDECL) 0
- 
- #define ELIMINABLE_REGS                            \
-   {                                                \
-     { ARG_POINTER_REGNUM,   STACK_POINTER_REGNUM}, \
-     { ARG_POINTER_REGNUM,   FRAME_POINTER_REGNUM}, \
-     { FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM}  \
-   }
- 
- #define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET)              \
-   do                                                              \
-     {                                                             \
-       (OFFSET) = cr16_initial_elimination_offset ((FROM), (TO));  \
-     }                                                             \
-   while (0)
- 
- /* Passing function arguments.  */
- 
- #define ACCUMULATE_OUTGOING_ARGS 0
- 
- #define PUSH_ROUNDING(BYTES) cr16_push_rounding (BYTES)
- 
- #ifndef CUMULATIVE_ARGS
- struct cumulative_args
- {
-   int ints;
-   int last_parm_in_reg;
- };
- 
- #define CUMULATIVE_ARGS struct cumulative_args
- #endif
- 
- /* On the CR16 architecture, Varargs routines should receive their parameters 
-    on the stack.  */
- 
- #define INIT_CUMULATIVE_ARGS(CUM, FNTYPE, LIBNAME, FNDECL, N_NAMED_ARGS) \
-   cr16_init_cumulative_args (&(CUM), (FNTYPE), (LIBNAME))
- 
- #define FUNCTION_ARG_REGNO_P(REGNO)  cr16_function_arg_regno_p (REGNO)
- 
- /* Generating code for profiling - NOT IMPLEMENTED.  */
- #undef  FUNCTION_PROFILER
- #define FUNCTION_PROFILER(STREAM, LABELNO)      \
- {                                               \
-   sorry ("profiler support for CR16");          \
- }
- 
- /* Trampolines for nested functions - NOT SUPPORTED.  */
- #define TRAMPOLINE_SIZE    16
- 
- /* ADDRESSING MODES.  */
- 
- #define CONSTANT_ADDRESS_P(X)       \
-   (GET_CODE (X) == LABEL_REF        \
-    || GET_CODE (X) == SYMBOL_REF    \
-    || GET_CODE (X) == CONST         \
-    || GET_CODE (X) == CONST_INT)
- 
- #define MAX_REGS_PER_ADDRESS    2
- 
- #define HAVE_POST_INCREMENT     0
- #define HAVE_POST_DECREMENT     0
- #define HAVE_POST_MODIFY_DISP   0
- #define HAVE_POST_MODIFY_REG    0
- 
- #ifdef REG_OK_STRICT
- #define CR16_REG_OK_FOR_BASE_P(X)	CR16_REGNO_OK_FOR_BASE_P (REGNO (X))
- #define REG_MODE_OK_FOR_BASE_P(X, MODE)	\
-   REGNO_MODE_OK_FOR_BASE_P (REGNO(X), MODE)
- #define REG_OK_FOR_INDEX_P(X)   REGNO_OK_FOR_INDEX_P (REGNO (X))
- #else /* not REG_OK_STRICT.  */
- #define CR16_REG_OK_FOR_BASE_P(X)	1
- #define REG_MODE_OK_FOR_BASE_P(X, MODE)	1
- #define REG_OK_FOR_INDEX_P(X)   1
- #endif /* not REG_OK_STRICT.  */
- 
- /* Assume best case (branch predicted).  */
- #define BRANCH_COST(speed_p, predictable_p)       2
- 
- #define SLOW_BYTE_ACCESS  1
- 
- /* It is as good or better to call a constant function address than to
-    call an address kept in a register.  */
- #define NO_FUNCTION_CSE 1
- 
- /* Dividing the output into sections.  */
- 
- #define TEXT_SECTION_ASM_OP "\t.section\t.text"
- 
- #define DATA_SECTION_ASM_OP "\t.section\t.data"
- 
- #define BSS_SECTION_ASM_OP  "\t.section\t.bss"
- 
- /* Position independent code (PIC).  */
- /* NEAR_PIC for -fpic option.  */
- 
- #define NEAR_PIC 1
-                                       
- /* FAR_PIC for -fPIC option.  */                                                                                       
- 
- #define FAR_PIC  2
- 
- #define PIC_OFFSET_TABLE_REGNUM  12
- 
- #define LEGITIMATE_PIC_OPERAND_P(X) legitimate_pic_operand_p (X)       
- 
- /* Assembler format.  */
- 
- /* Character to start a comment.  */
- #define ASM_COMMENT_START "#"
- 
- #define GLOBAL_ASM_OP "\t.globl\t"
- 
- #undef USER_LABEL_PREFIX
- #define USER_LABEL_PREFIX "_"
- 
- #undef ASM_OUTPUT_LABELREF
- #define ASM_OUTPUT_LABELREF(STREAM, NAME) \
-   asm_fprintf (STREAM, "%U%s", (*targetm.strip_name_encoding) (NAME))
- 
- #define ASM_OUTPUT_SYMBOL_REF(STREAM, SYMBOL)   \
-   do                                            \
-     {                                           \
-       const char *rn = XSTR (SYMBOL, 0);        \
-       assemble_name (STREAM, rn);               \
-       if (SYMBOL_REF_FUNCTION_P (SYMBOL))       \
-       {                                         \
-         fprintf ((STREAM), "@c");               \
-       }                                         \
-     }                                           \
-   while (0)
- 
- #undef ASM_APP_ON
- #define ASM_APP_ON   "#APP\n"
- 
- #undef ASM_APP_OFF
- #define ASM_APP_OFF  "#NO_APP\n"
- 
- /* Switch into a generic section.  */
- #define TARGET_ASM_NAMED_SECTION	default_elf_asm_named_section
- 
- #undef INIT_SECTION_ASM_OP
- #define INIT_SECTION_ASM_OP		"\t.section\t.init"
- 
- #undef FINI_SECTION_ASM_OP
- #define FINI_SECTION_ASM_OP		"\t.section\t.fini"
- 
- /* Instruction output.  */
- 
- #define REGISTER_NAMES                                     \
-   {                                                        \
-     "r0",  "r1",  "r2",  "r3",  "r4",  "r5",  "r6",  "r7", \
-     "r8",  "r9",  "r10", "r11", "r12", "r13", "ra",  "sp"  \
-   }
- 
- /* Output of dispatch tables.  */
- 
- /* Revisit. No PC relative case as label expressions are not 
-    properly supported in binutils else we could have done this:
-    #define CASE_VECTOR_PC_RELATIVE (optimize_size ? 1 : 0).  */
- #define CASE_VECTOR_PC_RELATIVE 0
- 
- #define ASM_OUTPUT_ADDR_DIFF_ELT(FILE, BODY, VALUE, REL)    \
-   ((GET_MODE (BODY) == QImode)                              \
-    ? fprintf ((FILE), "\t.byte (.L%d-.L%d) >> 1\n",         \
-               VALUE, REL)                                   \
-    : fprintf ((FILE), "\t.word (.L%d-.L%d) >> 1\n",         \
-               VALUE, REL))
- 
- #define ASM_OUTPUT_ADDR_VEC_ELT(STREAM, VALUE) \
-   asm_fprintf ((STREAM), "\t.long\t.L%d@c\n", (VALUE))
- 
- /* Alignment in assembler file.  */
- 
- #define ASM_OUTPUT_ALIGN(STREAM, POWER) \
-   asm_fprintf ((STREAM), "\t.align\t%d\n", 1 << (POWER))
- 
- /* Miscellaneous parameters.  */
- 
- #define CASE_VECTOR_MODE  Pmode
- 
- #define MOVE_MAX 4
- 
- #define STORE_FLAG_VALUE  1
- 
- #define Pmode SImode
- 
- #define FUNCTION_MODE QImode
- 
- /* Define this boolean macro(s) to indicate whether or not your architecture
-    has (un)conditional branches that can span all of memory.  It is used in
-    conjunction with an optimization that partitions hot and cold basic blocks
-    into separate sections of the executable.
-    CR16 contains branch instructions that span whole address space.  */
- #define HAS_LONG_COND_BRANCH    1
- #define HAS_LONG_UNCOND_BRANCH  1
- 
- #endif /* End of GCC_CR16_H.  */
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/cr16.md gcc-13.1.0/gcc/config/cr16/cr16.md
*** gcc-12.2.0/gcc/config/cr16/cr16.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/cr16.md	Thu Jan  1 00:00:00 1970
***************
*** 1,1084 ****
- ;; GCC machine description for CR16.
- ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
- ;; Contributed by KPIT Cummins Infosystems Limited.
- 
- ;; This file is part of GCC.
- 
- ;; GCC is free software; you can redistribute it and/or modify it
- ;; under the terms of the GNU General Public License as published by
- ;; the Free Software Foundation; either version 3, or (at your option)
- ;; any later version.
- 
- ;; GCC is distributed in the hope that it will be useful, but WITHOUT
- ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- ;; License for more details.
- 
- ;; You should have received a copy of the GNU General Public License
- ;; along with GCC; see the file COPYING3.  If not see
- ;; <http://www.gnu.org/licenses/>. 
- 
- ;;  Register numbers
- (define_constants
-   [(SP_REGNUM 15); Stack pointer
-    (RA_REGNUM 14); Return address
-   ]
- )
- 
- ;; Predicates & Constraints
- (include "predicates.md")
- (include "constraints.md")
- 
- ;; UNSPEC usage
- (define_constants
-   [(UNSPEC_PIC_ADDR             0)
-    (UNSPEC_PIC_LOAD_ADDR        1)
-    (UNSPEC_LIBRARY_OFFSET       2)
-    (UNSPEC_SH_LIB_PUSH_R12      3)
-    (UNSPEC_SH_LIB_POP_R12       4)
-    (UNSPEC_RETURN_ADDR          5)
-   ]
- )
- 
- ;; Attributes
- (define_attr "length" "" (const_int 2))
- 
- (define_asm_attributes
-   [(set_attr "length" "2")]
- )
- 
- ;;  Mode Macro Definitions
- (define_mode_iterator CR16IM [QI HI SI])
- (define_mode_iterator LONG   [SI SF])
- (define_mode_iterator ALLMTD [QI HI SI SF DI DF])
- (define_mode_iterator DOUBLE [DI DF])
- (define_mode_iterator SHORT  [QI HI])
- (define_mode_attr tIsa       [(QI "b") (HI "w") (SI "d") (SF "d")])
- (define_mode_attr lImmArith  [(QI "4") (HI "4") (SI "6") (SF "6")])
- (define_mode_attr lImmArithD [(QI "4") (HI "4") (SI "6") (SF "6") (DI "12") (DF "12")])
- (define_mode_attr iF         [(QI "i") (HI "i") (SI "i") (SF "F")])
- (define_mode_attr iFD        [(DI "i") (DF "F")])
- (define_mode_attr LL         [(QI "L") (HI "L")])
- (define_mode_attr shImmBits  [(QI "3") (HI "4") (SI "5")])
- 
- ; In QI mode we push 2 bytes instead of 1 byte.
- (define_mode_attr pushCnstr [(QI "X") (HI "<") (SI "<") (SF "<") (DI "<") (DF "<")])
- 
- ; tpush will be used to generate the 'number of registers to push' in the 
- ; push instruction.
- (define_mode_attr tpush [(QI "1") (HI "1") (SI "2") (SF "2") (DI "4") (DF "4")])
- 
- ;;  Code Macro Definitions
- (define_code_attr  sIsa    [(sign_extend "")  (zero_extend "u")])
- (define_code_attr  sPat    [(sign_extend "s") (zero_extend "u")])
- (define_code_attr  szPat   [(sign_extend "")  (zero_extend "zero_")])
- (define_code_attr  szIsa   [(sign_extend "x") (zero_extend "z")])
- 
- (define_code_iterator sz_xtnd    [ sign_extend       zero_extend])
- (define_code_iterator any_cond   [eq ne gt gtu lt ltu ge geu le leu])
- (define_code_iterator plusminus  [plus minus])
- 
- (define_code_attr plusminus_insn [(plus "add") (minus "sub")])
- (define_code_attr plusminus_flag [(plus "PLUS") (minus "MINUS")])
- (define_code_attr comm 		 [(plus "%") (minus "")])
- 
- (define_code_iterator any_logic  [and ior xor])
- (define_code_attr logic 	 [(and "and") (ior "or") (xor "xor")])
- (define_code_attr any_logic_insn [(and "and") (ior "ior") (xor "xor")])
- (define_code_attr any_logic_flag [(and "AND") (ior "IOR") (xor "XOR")])
- 
- (define_mode_iterator QH 	 [QI HI])
- (define_mode_attr qh 		 [(QI "qi") (HI "hi")])
- (define_mode_attr QHsz 		 [(QI "2,2,2") (HI "2,2,4")])
- (define_mode_attr QHsuffix 	 [(QI "b") (HI "w")])
- 
- 
- ;;  Function Prologue and Epilogue
- (define_expand "prologue"
-   [(const_int 0)]
-   ""
-   {
-     cr16_expand_prologue ();
-     DONE;
-   }
- )
- 
- (define_insn "push_for_prologue"
-   [(set (reg:SI SP_REGNUM)
- 	(minus:SI (reg:SI SP_REGNUM)
- 		  (match_operand:SI 0 "immediate_operand" "i")))]
-   "reload_completed"
-   {
-     return cr16_prepare_push_pop_string (0);
-   }
-   [(set_attr "length" "4")]
- )
- 
- (define_expand "epilogue"
-   [(return)]
-   ""
-   {
-     cr16_expand_epilogue ();
-     DONE;
-   }
- )
- 
- (define_insn "pop_and_popret_return"
-   [(set (reg:SI SP_REGNUM)
- 	(plus:SI (reg:SI SP_REGNUM)
- 		 (match_operand:SI 0 "immediate_operand" "i")))
-    (use (reg:SI RA_REGNUM))
-    (return)]
-   "reload_completed"
-   {
-     return cr16_prepare_push_pop_string (1);
-   }
-   [(set_attr "length" "4")]
- )
- 
- (define_insn "popret_RA_return"
-   [(use (reg:SI RA_REGNUM))
-    (return)]
-   "reload_completed"
-   "popret\tra"
-   [(set_attr "length" "2")]
- )
- 
- ;; Arithmetic Instruction  Patterns
- 
- ;; Addition-Subtraction "adddi3/subdi3" insns.
- (define_insn "<plusminus_insn>di3"
-   [(set (match_operand:DI 0 "register_operand" "=r")
- 	(plusminus:DI (match_operand:DI 1 "register_operand" "<comm>0")
- 		      (match_operand:DI 2 "register_operand" "r")))]
-   ""
-   {
-     return cr16_emit_add_sub_di (operands, <plusminus_flag>);
-   })
- 
- (define_insn "addsi3"
-   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r,r")
- 	(plus:SI (match_operand:SI 1 "register_operand" "%0,0,0,0,0")
- 		 (match_operand:SI 2 "reg_si_int_operand" "r,M,N,O,i")))]
-   ""
-   "addd\t%2, %0"
-   [(set_attr "length" "2,2,4,4,6")]
- )
- 
- ;; Addition-Subtraction "addhi3/subhi3" insns.
- (define_insn "<plusminus_insn>hi3"
-   [(set (match_operand:HI 0 "register_operand" "=c,c,c")
- 	(plusminus:HI (match_operand:HI 1 "register_operand" "<comm>0,0,0")
- 		      (match_operand:HI 2 "reg_hi_int_operand" "c,M,N")))]
-   ""
-   "<plusminus_insn>w\t%2, %0"
-   [(set_attr "length" "2,2,4")]
- )
- 
- ;; Addition-Subtraction "addqi3/subqi3" insns.
- (define_insn "<plusminus_insn>qi3"
-   [(set (match_operand:QI 0 "register_operand" "=c,c")
- 	(plusminus:QI (match_operand:QI 1 "register_operand" "<comm>0,0")
- 		      (match_operand:QI 2 "reg_qi_int_operand" "c,M")))]
-   ""
-   "<plusminus_insn>b\t%2, %0"
-   [(set_attr "length" "2,2")]
- )
- 
- ;;  Subtract Instruction
- (define_insn "subsi3"
-   [(set (match_operand:SI 0 "register_operand" "=r,r")
- 	(minus:SI (match_operand:SI 1 "register_operand" "0,0")
- 		  (match_operand:SI 2 "reg_si_int_operand" "r,i")))]
-   ""
-   "subd\t%2, %0"
-   [(set_attr "length" "4,6")]
- )
- 
- ;;  Multiply and Accumulate Instructions "smachisi3/umachisi3"
- (define_insn "<sPat>maddhisi4"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(plus:SI
- 	(mult:SI (sz_xtnd:SI (match_operand:HI 1 "register_operand" "r"))
- 		 (sz_xtnd:SI (match_operand:HI 2 "register_operand" "r")))
- 	(match_operand:SI 3 "register_operand" "0")))]
-   "TARGET_MAC"
-   "mac<sPat>w\t%1, %2, %0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Multiply Instructions
- (define_insn "mulhi3"
-   [(set (match_operand:HI 0 "register_operand" "=c,c,c")
- 	(mult:HI (match_operand:HI 1 "register_operand" "%0,0,0")
- 		 (match_operand:HI 2 "reg_or_int_operand" "c,M,N")))]
-   ""
-   "mulw\t%2, %0"
-   [(set_attr "length" "2,2,4")]
- )
- 
- (define_insn "mulqihi3"
-   [(set (match_operand:HI 0 "register_operand" "=c")
- 	(mult:HI (sign_extend:HI (match_operand:QI 1 "register_operand" "%0"))
- 		 (sign_extend:HI (match_operand:QI 2 "register_operand" "c"))))]
-   ""
-   "mulsb\t%2, %0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Bit Set/Clear Instructions
- (define_expand "insv"
-   [(set (zero_extract (match_operand 0 "memory_operand" "")
- 		      (match_operand 1 "immediate_operand" "")
- 		      (match_operand 2 "immediate_operand" ""))
- 	(match_operand 3 "immediate_operand" ""))]
-   "TARGET_BIT_OPS"
-   {
-     if (INTVAL (operands[1]) != 1)
-       FAIL;
-     if (INTVAL (operands[2]) < 0 || INTVAL (operands[2]) > 15)
-       FAIL;
-     if (INTVAL (operands[3]) == 1)
-       {
- 	if (GET_MODE (operands[0]) == QImode)
- 	  {
- 	    emit_insn (gen_set_bitqi (operands[0], operands[2]));
- 	    DONE;
- 	  }
- 	else if (GET_MODE (operands[0]) == HImode)
- 	  {
- 	    emit_insn (gen_set_bithi (operands[0], operands[2]));
- 	    DONE;
- 	  }
-       }
-     if (INTVAL (operands[3]) == 0)
-       {
- 	if (GET_MODE (operands[0]) == QImode)
- 	  {
- 	    emit_insn (gen_clr_bitqi (operands[0], operands[2]));
- 	    DONE;
- 	  }
- 	else if (GET_MODE (operands[0]) == HImode)
- 	  {
- 	    emit_insn (gen_clr_bithi (operands[0], operands[2]));
- 	    DONE;
- 	  }
-       }
-   }
- )
- 
- (define_insn "set_bit<mode>"
-   [(set (zero_extract:SHORT (match_operand:SHORT 0 "memory_operand" "+m")
- 			    (const_int 1)
- 			    (match_operand 1 "immediate_operand" "i"))
- 	(const_int 1))]
-   "TARGET_BIT_OPS"
-   "sbit<tIsa>\t%1,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "clr_bit<mode>"
-   [(set (zero_extract:SHORT (match_operand:SHORT 0 "memory_operand" "+m")
- 			    (const_int 1)
- 			    (match_operand 1 "immediate_operand" "i"))
- 	(const_int 0))]
-   "TARGET_BIT_OPS"
-   "cbit<tIsa>\t%1,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "set_bit<mode>_mem"
-   [(set (match_operand:SHORT 0 "bit_operand" "=m")
- 	(ior:SHORT (match_dup 0)
- 		   (match_operand:SHORT 1 "one_bit_operand" "i"))
-   )]
-   "TARGET_BIT_OPS"
-   "sbit<tIsa>\t$%s1,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "clear_bit<mode>_mem"
-   [(set (match_operand:SHORT 0 "bit_operand" "=m")
- 	(and:SHORT (match_dup 0)
- 		   (match_operand:SHORT 1 "rev_one_bit_operand" "i"))
-   )]
-   "TARGET_BIT_OPS"
-   "cbit<tIsa>\t$%r1,%0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Logical Instructions - and/ior/xor "anddi3/iordi3/xordi3"
- (define_insn "<any_logic_insn>di3"
-   [(set (match_operand:DI 0 "register_operand" "=r")
- 	(any_logic:DI (match_operand:DI 1 "register_operand" "%0")
- 		      (match_operand:DI 2 "register_operand" "r")))]
-   ""
-   {
-     return cr16_emit_logical_di (operands, <any_logic_flag>);
-   })
- 
- ; Logical and/ior/xor "andsi3/iorsi3/xorsi3"
- (define_insn "<any_logic_insn>si3"
-   [(set (match_operand:SI 0 "register_operand" "=r,r,r,r")
- 	(any_logic:SI (match_operand:SI 1 "register_operand" "%0,0,0,0")
- 		      (match_operand:SI 2 "reg_si_int_operand" "r,M,N,i")))]
-   ""
-   "<logic>d\t%2, %0"
-   [(set_attr "length" "2,2,4,6")]
- )
- 
- ; Logical and/ior/xor in HImode "andhi3/iorhi3/xorhi3"
- ; Logical and/ior/xor in QImode "andqi3/iorqi3/xorqi3"
- (define_insn "<any_logic_insn><qh>3"
-   [(set (match_operand:QH 0 "register_operand" "=c,c,c")
- 	(any_logic:QH (match_operand:QH 1 "register_operand" "%0,0,0")
- 		      (match_operand:QH 2 "reg_hi_int_operand" "c,M,N")))]
-   ""
-   "<logic><QHsuffix>\t%2, %0"
-   [(set_attr "length" "<QHsz>")]
- )
- 
- ;;  Sign and Zero Extend Instructions
- (define_insn "<szPat>extendhisi2"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(sz_xtnd:SI (match_operand:HI 1 "register_operand" "r")))]
-   ""
-   "mov<szIsa>w\t%1, %0"
-   [(set_attr "length" "4")]
- )
- 
- (define_insn "<szPat>extendqihi2"
-   [(set (match_operand:HI 0 "register_operand" "=r")
- 	(sz_xtnd:HI (match_operand:QI 1 "register_operand" "r")))]
-   ""
-   "mov<szIsa>b\t%1, %0"
-   [(set_attr "length" "4")]
- )
- 
- ;;  One's Complement
- (define_insn "one_cmpldi2"
-   [(set (match_operand:DI 0 "register_operand" "=r")
- 	(not:DI (match_operand:DI 1 "register_operand" "0")))]
-   ""
-   {
-     rtx xoperand ;
-     int reg0 = REGNO (operands[0]);
- 
-     xoperand = gen_rtx_REG (SImode, reg0 + 2);
-     output_asm_insn ("xord\t$-1, %0", operands);
-     output_asm_insn ("xord\t$-1, %0", &xoperand);
-     return "" ;
-   }
-   [(set_attr "length" "12")]
- )
- 
- (define_insn "one_cmpl<mode>2"
-   [(set (match_operand:CR16IM 0 "register_operand" "=r")
- 	(not:CR16IM (match_operand:CR16IM 1 "register_operand" "0")))]
-   ""
-   "xor<tIsa>\t$-1, %0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Arithmetic Left and Right Shift Instructions
- (define_insn "ashlqi3"
-   [(set (match_operand:QI 0 "register_operand" "=c,c")
- 	(ashift:QI (match_operand:QI 1 "register_operand" "0,0")
- 		   (match_operand:QI 2 "nonmemory_operand" "c,I")))]
-   ""
-   "ashub\t%2, %0"
-   [(set_attr "length" "2,2")]
- )
- 
- (define_insn "ashlhi3"
-   [(set (match_operand:HI 0 "register_operand" "=c,c")
- 	(ashift:HI (match_operand:HI 1 "register_operand" "0,0")
- 		   (match_operand:QI 2 "nonmemory_operand" "c,J")))]
-   ""
-   "ashuw\t%2, %0"
-   [(set_attr "length" "2,2")]
- )
- 
- (define_insn "ashlsi3"
-   [(set (match_operand:SI 0 "register_operand" "=r,r")
- 	(ashift:SI (match_operand:SI 1 "register_operand" "0,0")
- 		   (match_operand:QI 2 "nonmemory_operand" "r,K")))]
-   ""
-   "ashud\t%2, %0"
-   [(set_attr "length" "2,2")]
- )
- 
- (define_expand "ashr<mode>3"
-   [(set (match_operand:CR16IM 0 "register_operand" "")
- 	(ashiftrt:CR16IM (match_operand:CR16IM 1 "register_operand" "")
- 			 (match_operand:QI 2 "nonmemory_operand" "")))]
-   ""
-   {
-     if (GET_CODE (operands[2]) == CONST_INT)
-       {
- 	/* If the constant is not in range, try placing it in a reg */
- 	if (!UNSIGNED_INT_FITS_N_BITS(INTVAL (operands[2]),<shImmBits>))
- 	operands[2] = copy_to_mode_reg(QImode, operands[2]);
-       }
- 
-     if (GET_CODE (operands[2]) != CONST_INT)
-       operands[2] = gen_rtx_NEG (QImode, negate_rtx (QImode, operands[2]));
-   }
- )
- 
- (define_insn "ashrqi3_imm_insn"
-   [(set (match_operand:QI 0 "register_operand" "=c")
- 	(ashiftrt:QI (match_operand:QI 1 "register_operand" "0")
- 		     (match_operand:QI 2 "shift_qi_imm_operand" "i")))]
-   ""
-   "ashub\t$%n2, %0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "ashrhi3_imm_insn"
-   [(set (match_operand:HI 0 "register_operand" "=c")
- 	(ashiftrt:HI (match_operand:HI 1 "register_operand" "0")
- 		     (match_operand:QI 2 "shift_hi_imm_operand" "i")))]
-   ""
-   "ashuw\t$%n2, %0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "ashrsi3_imm_insn"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "0")
- 		     (match_operand:QI 2 "shift_si_imm_operand" "i")))]
-   ""
-   "ashud\t$%n2, %0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "ashrqi3_neg_insn"
-   [(set (match_operand:QI 0 "register_operand" "=c")
- 	(ashiftrt:QI (match_operand:QI 1 "register_operand" "0")
- 		     (neg:QI (match_operand:QI 2 "register_operand" "c"))))]
-   ""
-   "ashub\t%2,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "ashrhi3_neg_insn"
-   [(set (match_operand:HI 0 "register_operand" "=c")
- 	(ashiftrt:HI (match_operand:HI 1 "register_operand" "0")
- 		     (neg:QI (match_operand:QI 2 "register_operand" "c"))))]
-   ""
-   "ashuw\t%2,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "ashrdi3_neg_insn"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(ashiftrt:SI (match_operand:SI 1 "register_operand" "0")
- 		     (neg:QI (match_operand:QI 2 "register_operand" "r"))))]
-   ""
-   "ashud\t%2,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_expand "lshr<mode>3"
-   [(set (match_operand:CR16IM 0 "register_operand" "")
- 	(lshiftrt:CR16IM (match_operand:CR16IM 1 "register_operand" "")
- 			 (match_operand:QI 2 "reg_or_int_operand" "")))]
-   ""
-   {
-     if (GET_CODE (operands[2]) == CONST_INT)
-       {
- 	/* If the constant is not in range, try placing it in a reg */
- 	if (!UNSIGNED_INT_FITS_N_BITS(INTVAL (operands[2]),<shImmBits>))
- 	operands[2] = copy_to_mode_reg(QImode, operands[2]);
-       }
- 
- 	if (GET_CODE (operands[2]) != CONST_INT)
- 	operands[2] = gen_rtx_NEG (QImode, negate_rtx (QImode, operands[2]));
-    }
- )
- 
- (define_insn "lshrqi3_imm_insn"
-   [(set (match_operand:QI 0 "register_operand" "=c")
- 	(lshiftrt:QI (match_operand:QI 1 "register_operand" "0")
- 		     (match_operand:QI 2 "shift_qi_operand" "Q")))]
-   ""
-   "lshb\t$%n2, %0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "lshrhi3_imm_insn"
-   [(set (match_operand:HI 0 "register_operand" "=c")
- 	(lshiftrt:HI (match_operand:HI 1 "register_operand" "0")
- 		     (match_operand:QI 2 "shift_hi_operand" "R")))]
-   ""
-   "lshw\t$%n2, %0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "lshrsi3_imm_insn"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
- 		     (match_operand:QI 2 "shift_si_operand" "S")))]
-   ""
-   "lshd\t$%n2, %0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "lshrqi3_neg_insn"
-   [(set (match_operand:QI 0 "register_operand" "=c")
- 	(lshiftrt:QI (match_operand:QI 1 "register_operand" "0")
- 		     (neg:QI (match_operand:QI 2 "register_operand" "c"))))]
-   ""
-   "lshb\t%2,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "lshrhi3_neg_insn"
-   [(set (match_operand:HI 0 "register_operand" "=c")
- 	(lshiftrt:HI (match_operand:HI 1 "register_operand" "0")
- 		     (neg:QI (match_operand:QI 2 "register_operand" "c"))))]
-   ""
-   "lshw\t%2,%0"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "lshrsi3_neg_insn"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(lshiftrt:SI (match_operand:SI 1 "register_operand" "0")
- 		     (neg:QI (match_operand:QI 2 "register_operand" "r"))))]
-   ""
-   "lshd\t%2,%0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Move Instructions
- 
- ;; Move any non-immediate operand 0 to a general operand 1.
- ;; This applies only before starting the reload process
- ;; Operand 0 is not a register operand of type mode MODE
- ;; If Operand 0 is a push operand of type mode MODE
- ;; then, if Operand 1 is a non-SP register
- ;; then, Operand 1 = copy_to_mode_reg (<MODE>mode, Operand 1)
- ;; endif
- ;; else
- ;; if Operand 1 is either register or 4-bit immediate constant
- ;; then, Operand 1 = copy_to_mode_reg (<MODE>mode, Operand 1)
- ;; endif
- ;; endif
- ;;
- ;; What does copy_to_mode_reg (mode, rtx val) do?
- ;; Copy the value into new temp reg and return the reg where the
- ;; mode of the new reg is always mode MODE when value is constant
- ;;
- ;; Why should copy_to_mode_reg be called?
- ;; All sorts of move are nor supported by CR16. Therefore, 
- ;; when unsupported move is encountered, the additional instructions 
- ;; will be introduced for the purpose.
- ;;
- ;; A new move insn is inserted for Op 1 when one of the following
- ;; conditions is met.
- ;; Case 1:  Op 0 is push_operand
- ;;          Op 1 is SP register
- ;;
- ;; Case 2:  Op 0 is not push_operand
- ;;          Op 1 is neither register nor unsigned 4-bit immediate
- 
- (define_expand "mov<mode>"
-   [(set (match_operand:ALLMTD 0 "nonimmediate_operand" "")
- 	(match_operand:ALLMTD 1 "general_operand" ""))]
-   ""
-   {
-     if (!(reload_in_progress || reload_completed))
-       {
- 	/* Only if Op0 is a register operand.  */
- 	if (!register_operand (operands[0], <MODE>mode))
- 	  {
- 	    if (push_operand (operands[0], <MODE>mode)) 
- 	      {
- 		/* Use copy_to_mode_reg only if the register needs 
- 		to be pushed is SP as CR16 does not support pushing SP.  */
- 		if (!nosp_reg_operand (operands[1], <MODE>mode))
- 		  operands[1] = copy_to_mode_reg (<MODE>mode, operands[1]);
- 	      }
- 	    else
- 	      {
- 		/* Use copy_to_mode_reg if op1 is not register operand
- 		   subject to conditions inside.  */
- 		if (!register_operand (operands[1], <MODE>mode))
- 		  {
- 		    /* CR16 does not support moving immediate to SI or SF 
- 		       type memory.  */
- 		    if (<MODE>mode == SImode || <MODE>mode == SFmode ||
- 			<MODE>mode == DImode || <MODE>mode == DFmode)
- 		      operands[1] = copy_to_mode_reg (<MODE>mode, operands[1]);
- 		    else
- 		      /* moving imm4 is supported by CR16 instruction.  */
- 		      if (!u4bits_operand (operands[1], <MODE>mode))
- 			operands[1] = copy_to_mode_reg (<MODE>mode, operands[1]);
- 		  }
- 	       }
- 	  }
- 
- 	  /* If operand-1 is a symbol, convert it into a BRO or GOT Format.  */
- 	  if (flag_pic && ! legitimate_pic_operand_p (operands[1]))
- 	    {
- 	      operands[1] = legitimize_pic_address (operands[1], <MODE>mode, 0);
- 	    }
-       }
-   }
- )
- 
- ; ALLMT     : QI,HI,SI,SF
- ; pushCnstr : Push constraints 
- ;                QI : X
- ;             HI,SI,SF,DI,DF : <
- ; b         : All non-sp registers
- ; tpush     : Push count
- ;                QI,HI : 1
- ;                SI,SF : 2
- ;                DI,DF : 4
- (define_insn "push<mode>_internal"
-   [(set (match_operand:ALLMTD 0 "push_operand" "=<pushCnstr>")
- 	(match_operand:ALLMTD 1 "nosp_reg_operand" "b"))]
-   ""
-   "push\t$<tpush>,%p1"
-   [(set_attr "length" "2")]
- )
- 
- ; (DI, DF) move
- (define_insn "*mov<mode>_double"
-   [(set (match_operand:DOUBLE 0 "nonimmediate_operand" "=r, r, r, m")
- 	(match_operand:DOUBLE 1 "general_operand" "r, <iFD>, m, r"))]
-   "register_operand (operands[0], DImode) 
-    || register_operand (operands[0], DFmode)
-    || register_operand (operands[1], DImode)
-    || register_operand (operands[1], DFmode)"
-   {
-     if (which_alternative == 0) {
-       rtx xoperands[2];
-       int reg0 = REGNO (operands[0]);
-       int reg1 = REGNO (operands[1]);
- 
-       xoperands[0] = gen_rtx_REG (SImode, reg0 + 2);
-       xoperands[1] = gen_rtx_REG (SImode, reg1 + 2);
-       if ((reg1 + 2) != reg0)
- 	{
- 	  output_asm_insn ("movd\t%1, %0", operands);
- 	  output_asm_insn ("movd\t%1, %0", xoperands);
- 	}
-       else
- 	{
- 	  output_asm_insn ("movd\t%1, %0", xoperands);
- 	  output_asm_insn ("movd\t%1, %0", operands);
- 	}}
- 
-     else if (which_alternative == 1) {
-       rtx lo_operands[2];
-       rtx hi_operands[2];
- 
-       lo_operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]));
-       hi_operands[0] = gen_rtx_REG (SImode, REGNO (operands[0]) + 2);
-       lo_operands[1] = simplify_gen_subreg (SImode, operands[1],
- 		       VOIDmode == GET_MODE (operands[1])
- 		       ? DImode  : GET_MODE (operands[1]), 0);
-       hi_operands[1] = simplify_gen_subreg (SImode, operands[1],
- 		       VOIDmode == GET_MODE (operands[1])
- 		       ? DImode  : GET_MODE (operands[1]), 4);
-       output_asm_insn ("movd\t%1, %0", lo_operands);
-       output_asm_insn ("movd\t%1, %0", hi_operands);}
- 
-     else if (which_alternative == 2) {
-       rtx xoperands[2];
-       int reg0 = REGNO (operands[0]), reg1 = -2;
-       rtx addr;
- 
- 	if (MEM_P (operands[1]))
- 	  addr = XEXP (operands[1], 0);
- 	else
- 	  addr = NULL_RTX;
- 	switch (GET_CODE (addr))
- 	  {
- 	    case REG:
- 	    case SUBREG:
- 	      reg1 = REGNO (addr);
- 	      break;
- 	    case PLUS:
- 	      switch (GET_CODE (XEXP (addr, 0))) {
- 		case REG:
- 		case SUBREG:
- 		  reg1 = REGNO (XEXP (addr, 0));
- 		  break;
- 		case PLUS:
- 		  reg1 = REGNO (XEXP (XEXP (addr, 0), 0));
- 		  break;
- 		default:
- 		  inform (DECL_SOURCE_LOCATION (cfun->decl), "unexpected expression; addr:");
- 		  debug_rtx (addr);
- 		  inform (DECL_SOURCE_LOCATION (cfun->decl), "operands[1]:");
- 		  debug_rtx (operands[1]);
- 		  inform (DECL_SOURCE_LOCATION (cfun->decl), "generated code might now work\n");
- 		  break;}
- 	      break;
- 	    default:
- 	      break;
- 	  }
- 
- 	xoperands[0] = gen_rtx_REG (SImode, reg0 + 2);
- 	xoperands[1] = offset_address (operands[1], GEN_INT (4), 2);
- 	gcc_assert ((reg0 + 1) != reg1);
- 	if (reg0 != reg1  &&  (reg1 + 1) != reg0)
- 	  {
- 	    output_asm_insn ("loadd\t%1, %0", operands);
- 	    output_asm_insn ("loadd\t%1, %0", xoperands);
- 	  }
- 	else
- 	  {
- 	    output_asm_insn ("loadd\t%1, %0", xoperands);
- 	    output_asm_insn ("loadd\t%1, %0", operands);
- 	  }}
-     else
-       {
- 	rtx xoperands[2];
- 	xoperands[0] = offset_address (operands[0], GEN_INT (4), 2);
- 	xoperands[1] = gen_rtx_REG (SImode, REGNO (operands[1]) + 2);
- 	output_asm_insn ("stord\t%1, %0", operands);
-    	output_asm_insn ("stord\t%1, %0", xoperands);
-       }
-     return "";
-   }
-   [(set_attr "length" "4, <lImmArithD>, <lImmArithD>, <lImmArithD>")]
- )
- 
- ; All long (SI, SF) register move, load and store operations
- ; The print_operand will take care of printing the register pair 
- ; when mode is SI/SF and register is in SHORT_REGS
- (define_insn "*mov<mode>_long"
-   [(set (match_operand:LONG 0 "nonimmediate_operand" "=r, r, r, m")
- 	(match_operand:LONG 1 "general_operand" "r, <iF>, m, r"))]
-   "register_operand (operands[0], <MODE>mode)
-    || register_operand (operands[1], <MODE>mode)"
-   "@
-   mov<tIsa>\t%1, %0
-   mov<tIsa>\t%1, %0
-   load<tIsa>\t%1, %0
-   stor<tIsa>\t%1, %0"
-   [(set_attr "length" "2,<lImmArith>,<lImmArith>,<lImmArith>")]
- )
- 
- ;; All short (QI, HI) register move, load and store operations
- (define_insn "*mov<mode>_short"
-   [(set (match_operand:SHORT 0 "nonimmediate_operand" "=r, r, r, m, m")
- 	(match_operand:SHORT 1 "general_operand" "r, <iF>, m, r, <LL>"))]
-   "(register_operand (operands[0], <MODE>mode))
-     || (store_operand (operands[0], <MODE>mode)
- 	&& (register_operand (operands[1], <MODE>mode)
- 	    || u4bits_operand (operands[1], <MODE>mode)))"
-   "@
-   mov<tIsa>\t%1, %0
-   mov<tIsa>\t%1, %0
-   load<tIsa>\t%1, %0
-   stor<tIsa>\t%1, %0
-   stor<tIsa>\t%1, %0"
-   [(set_attr "length" "2,<lImmArith>,<lImmArith>,<lImmArith>,<lImmArith>")]
- )
- 
- ;;  Compare Instructions
- ; Instruction generated compares the operands in reverse order
- ; Therefore, while printing the asm, the reverse of the
- ; compare condition shall be printed.
- (define_insn "cbranch<mode>4"
-   [(set (pc)
- 	(if_then_else (match_operator 0 "ordered_comparison_operator"
- 		      [(match_operand:CR16IM 1 "register_operand" "r,r")
- 		       (match_operand:CR16IM 2 "nonmemory_operand" "r,n")])
- 		       (label_ref (match_operand 3 "" ""))
-                       (pc)))
-    (clobber (cc0))]
-   ""
-   "cmp<tIsa>\t%2, %1\;b%d0\t%l3"
-   [(set_attr "length" "6,6")]
- )
- 
- (define_expand "cmp<mode>"
-   [(parallel [(set (cc0)
-     (compare (match_operand:CR16IM 0 "register_operand" "")
- 	     (match_operand:CR16IM 1 "nonmemory_operand" "")))
-     (clobber (match_scratch:HI 2 "=r"))] ) ]
-   ""
-   "")
- 
- ;;  Scond Instructions
- (define_expand "cstore<mode>4"
-   [(set (cc0)
- 	(compare (match_operand:CR16IM 2 "register_operand" "")
- 		 (match_operand:CR16IM 3 "nonmemory_operand" "")))
-    (set (match_operand:HI 0 "register_operand")
- 	(match_operator:HI 1 "ordered_comparison_operator"
- 	[(cc0) (const_int 0)]))]
-   ""
-   ""
- )
- 
- (define_insn "*cmp<mode>_insn"
-   [(set (cc0)
- 	(compare (match_operand:CR16IM 0 "register_operand" "r,r")
- 		 (match_operand:CR16IM 1 "nonmemory_operand" "r,n")))]
-   ""
-   "cmp<tIsa>\t%1, %0"
-   [(set_attr "length" "2,4")]
- )
- 
- (define_insn "sCOND_internal"
-   [(set (match_operand:HI 0 "register_operand" "=r")
- 	(match_operator:HI 1 "ordered_comparison_operator"
- 	[(cc0) (const_int 0)]))]
-   ""
-   "s%d1\t%0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Jumps and Branches
- (define_insn "indirect_jump_return"
-   [(set (pc)
- 	  (reg:SI RA_REGNUM))
-    (return)]
-   "reload_completed"
-   "jump\t (ra)"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "jump_return"
-   [(unspec:SI [(const_int 0)] UNSPEC_RETURN_ADDR)
-    (return)]
-   "reload_completed"
-   "jump\t(ra)"
-   [(set_attr "length" "2")]
- )
- 
- (define_insn "indirect_jump"
-   [(set (pc)
- 	(match_operand:SI 0 "reg_or_sym_operand" "r,i"))]
-   ""
-   "@
-   jump\t%0
-   br\t%a0"
-   [(set_attr "length" "2,6")]
- )
- 
- (define_insn "interrupt_return"
-   [(unspec_volatile [(const_int 0)] 0)
-    (return)]
-   ""
-   {
-     return cr16_prepare_push_pop_string (1);
-   }
-   [(set_attr "length" "14")]
- )
- 
- (define_insn "jump_to_imm"
-   [(set (pc)
- 	(match_operand 0 "jump_imm_operand" "i"))]
-   ""
-   "br\t%c0"
-   [(set_attr "length" "6")]
- )
- 
- (define_insn "jump"
-   [(set (pc)
- 	(label_ref (match_operand 0 "" "")))]
-   ""
-   "br\t%l0"
-   [(set_attr "length" "6")]
- )
- 
- ;;  Table Jump
- (define_insn "tablejump"
-   [(set (pc)
- 	(match_operand:SI 0 "register_operand" "r"))
-    (use (label_ref:SI (match_operand 1 "" "")))]
-   "!flag_pic"
-   "jump\t%0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Call Instructions
- (define_expand "call"
-   [(call (match_operand:QI 0 "memory_operand" "")
- 	 (match_operand 1 "" ""))]
-   ""
-   {
-     if (flag_pic && ! legitimate_pic_operand_p (operands[0]))
-       {
- 	operands[0] = gen_const_mem (QImode,
- 	legitimize_pic_address (XEXP (operands[0], 0), Pmode, 0));
- 	emit_call_insn (gen_cr16_call (operands[0], operands[1]));
-       }
-     else
-       emit_call_insn (gen_cr16_call (operands[0], operands[1]));
-       DONE;
-   }
- )
- 
- (define_expand "cr16_call"
-   [(parallel
-     [(call (match_operand:QI 0 "memory_operand" "")
- 	   (match_operand 1 "" ""))
-    (clobber (reg:SI RA_REGNUM))])]
-   ""
-   ""
- )
- 
- (define_insn "cr16_call_insn_branch_pic"
-   [(call (mem:QI (match_operand:SI 0 "call_imm_operand" "i"))
- 	 (match_operand 1 "" ""))
-    (clobber (match_operand:SI 2 "register_operand" "+r"))]
-   "flag_pic == FAR_PIC"
-   {
-     if (GET_CODE (operands[0]) != CONST_INT)
-       return "loadd\t%g0, %2 \n\tjal %2";
-     else
-       return "jal %2";
-   }
-   [(set_attr "length" "8")]
- )
- 
- (define_insn "cr16_call_insn_branch"
-   [(call (mem:QI (match_operand:SI 0 "call_imm_operand" "i"))
- 	 (match_operand 1 "" ""))
-    (clobber (match_operand:SI 2 "register_operand" "+r"))]
-   "flag_pic == 0 || flag_pic == NEAR_PIC"
-   {
-     /* Print the immediate address for bal 
-        'b' is used instead of 'a' to avoid compiler calling
-        the GO_IF_LEGITIMATE_ADDRESS which cannot
-        perform checks on const_int code addresses as it
-        assumes all const_int are data addresses.
-     */
-     if (GET_CODE (operands[0]) != CONST_INT)
-       return "bal (ra), %a0";
-     else
-       operands[4] = GEN_INT ((INTVAL (operands[0]))>>1);
-       return "movd\t%g4,\t(r1,r0)\n\tjal\t(r1,r0)";	
-   }
-   [(set_attr "length" "6")]
- )
- 
- (define_insn "cr16_call_insn_jump"
-   [(call (mem:QI (match_operand:SI 0 "register_operand" "r"))
- 	 (match_operand 1 "" ""))
-    (clobber (match_operand:SI 2 "register_operand" "+r"))]
-   ""
-   "jal\t%0"
-   [(set_attr "length" "2")]
- )
- 
- ;;  Call Value Instructions
- 
- (define_expand "call_value"
-   [(set (match_operand 0 "general_operand" "")
- 	(call (match_operand:QI 1 "memory_operand" "")
- 	      (match_operand 2 "" "")))]
-   ""
-   {
-     if (flag_pic && !legitimate_pic_operand_p (operands[1]))
-       {
- 	operands[1] = gen_const_mem (QImode,
- 	legitimize_pic_address (XEXP (operands[1], 0), Pmode, 0));
- 	emit_call_insn (gen_cr16_call_value (operands[0], operands[1], operands[2]));
-       }
-     else
- 	emit_call_insn (gen_cr16_call_value (operands[0], operands[1], operands[2]));
-     DONE;
-   }
- )
- 
- (define_expand "cr16_call_value"
-   [(parallel
-     [(set (match_operand 0 "general_operand" "")
- 	  (call (match_operand 1 "memory_operand" "")
- 		(match_operand 2 "" "")))
-      (clobber (reg:SI RA_REGNUM))])]
-   ""
-   ""
- )
- 
- (define_insn "cr16_call_value_insn_branch_pic"
-   [(set (match_operand 0 "" "=g")
- 	(call (mem:QI (match_operand:SI 1 "call_imm_operand" "i"))
- 	      (match_operand 2 "" "")))
-    (clobber (match_operand:SI 3 "register_operand" "+r"))]
-   "flag_pic == FAR_PIC"
-   {
-     if (GET_CODE (operands[1]) != CONST_INT)
-       return "loadd\t%g1, %3 \n\tjal %3";
-     else
-       return "jal %3";
-   }
-   [(set_attr "length" "8")]
- )
- 
- (define_insn "cr16_call_value_insn_branch"
-   [(set (match_operand 0 "" "=g")
- 	(call (mem:QI (match_operand:SI 1 "call_imm_operand" "i"))
- 	      (match_operand 2 "" "")))
-    (clobber (match_operand:SI 3 "register_operand" "+r"))]
-   "flag_pic == 0 || flag_pic == NEAR_PIC"
-   {
-     /* Print the immediate address for bal 
-        'b' is used instead of 'a' to avoid compiler calling
-        the GO_IF_LEGITIMATE_ADDRESS which cannot
-        perform checks on const_int code addresses as it
-        assumes all const_int are data addresses.
-     */
-     if (GET_CODE (operands[1]) != CONST_INT) 
-       return "bal (ra), %a1";
-     else
-       {
- 	operands[4] = GEN_INT ((INTVAL (operands[1]))>>1);
-         return "movd\t%g4,\t(r1,r0)\n\tjal\t(r1,r0)";	
-       }
-   }
-   [(set_attr "length" "6")]
- )
- 
- 
- (define_insn "cr16_call_value_insn_jump"
-   [(set (match_operand 0 "" "=g")
- 	(call (mem:QI (match_operand:SI 1 "register_operand" "r"))
- 	      (match_operand 2 "" "")))
-    (clobber (match_operand:SI 3 "register_operand" "+r"))]
-   ""
-   "jal\t%1"
-   [(set_attr "length" "2")]
- )
- 
- 
- ;;  Nop
- (define_insn "nop"
-   [(const_int 0)]
-   ""
-   "nop\t"
- )
- 
- ;; PIC
- /* When generating pic, we need to load the symbol offset into a register.
-    So that the optimizer does not confuse this with a normal symbol load
-    we use an unspec.  The offset will be loaded from a constant pool entry,
-    since that is the only type of relocation we can use.  */
-                                                                                                                             
- (define_insn "unspec_bro_addr"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(unspec:SI [(match_operand 1 "" "")] UNSPEC_PIC_ADDR))]
-   ""
-   "movd \t%f1, %0"
-   [(set_attr "length" "4")]
- )
- 
- (define_insn "unspec_got_addr"
-   [(set (match_operand:SI 0 "register_operand" "=r")
- 	(unspec:SI [(match_operand 1 "" "")] UNSPEC_PIC_LOAD_ADDR))]
-   ""
-   "loadd \t%g1, %0"
-   [(set_attr "length" "6")]
- )
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/cr16.opt gcc-13.1.0/gcc/config/cr16/cr16.opt
*** gcc-12.2.0/gcc/config/cr16/cr16.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/cr16.opt	Thu Jan  1 00:00:00 1970
***************
*** 1,51 ****
- ; Options for the National Semiconductor CR16 port of the compiler.
- ; Copyright (C) 2012-2022 Free Software Foundation, Inc.
- ; Contributed by KPIT Cummins Infosystems Limited.
- ;
- ; This file is part of GCC.
- ;
- ; GCC is free software; you can redistribute it and/or modify it
- ; under the terms of the GNU General Public License as published
- ; by the Free Software Foundation; either version 3, or (at your
- ; option) any later version.
- ;
- ; GCC is distributed in the hope that it will be useful, but WITHOUT
- ; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- ; License for more details.
- ;
- ; You should have received a copy of the GNU General Public License
- ; along with GCC; see the file COPYING3.  If not see
- ; <http://www.gnu.org/licenses/>.
- 
- msim
- Target
- Use simulator runtime.
- 
- mbit-ops
- Target Mask(BIT_OPS)
- Generate SBIT, CBIT instructions.
- 
- mmac
- Target Mask(MAC)
- Support multiply accumulate instructions.
- 
- mdebug-addr
- Target RejectNegative Var(TARGET_DEBUG_ADDR) Undocumented
- 
- mdata-model=
- Target RejectNegative JoinedOrMissing Var(cr16_data_model)
- Treat data references as near, far or medium. medium is default.
- 
- mcr16c
- Target RejectNegative Mask(CR16C)
- Generate code for CR16C architecture.
- 
- mcr16cplus
- Target RejectNegative InverseMask(CR16C,CR16CP)
- Generate code for CR16C+ architecture (Default).
- 
- mint32
- Target RejectNegative Mask(INT32)
- Treat integers as 32-bit.
- 
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/predicates.md gcc-13.1.0/gcc/config/cr16/predicates.md
*** gcc-12.2.0/gcc/config/cr16/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/predicates.md	Thu Jan  1 00:00:00 1970
***************
*** 1,225 ****
- ;; Predicates of machine description for CR16.
- ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
- ;; Contributed by KPIT Cummins Infosystems Limited.
- ;;
- ;; This file is part of GCC.
- ;;
- ;; GCC is free software; you can redistribute it and/or modify it
- ;; under the terms of the GNU General Public License as published
- ;; by the Free Software Foundation; either version 3, or (at your
- ;; option) any later version.
- ;;
- ;; GCC is distributed in the hope that it will be useful, but WITHOUT
- ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- ;; License for more details.
- ;;
- ;; You should have received a copy of the GNU General Public License
- ;; along with GCC; see the file COPYING3.  If not see
- ;; <http://www.gnu.org/licenses/>.  
- 
- ;;  Predicates
- 
- ;; Predicates for sbit/cbit instructions
- ;; bit operand used for the generation of bit insn generation
- (define_predicate "bit_operand"
-   (match_code "mem")
- {
-   return ((GET_CODE (op) == MEM && OK_FOR_Z (op)));
- })
- 
- ;; Unsigned 4-bits constant int or double value.
- (define_predicate "u4bits_operand"
-   (match_code "const_int,const_double")
- {
-   if (GET_CODE (op) == CONST_DOUBLE)
-     return cr16_const_double_ok (op);
-     return (UNSIGNED_INT_FITS_N_BITS(INTVAL (op), 4)) ? 1 : 0;
- })
- 
- ;; Operand is a constant integer where
- ;; only one bit is set to 1.
- (define_predicate "one_bit_operand"
-   (match_code "const_int")
- {
-   unsigned int val;
- 
-   val = INTVAL (op);
-   if (mode == QImode) 
-     val &= 0xff;
-   else if (mode == HImode)
-     val &= 0xffff;
-   else
-     gcc_unreachable();
- 
-   if (val != 0)
-     return (val & (val - 1)) == 0; /* true if only one bit is set.  */
-   else
-     return 0;
- })
- 
- ;; Operand is a constant integer where
- ;; only one bit is set to 0.
- (define_predicate "rev_one_bit_operand"
-   (match_code "const_int")
- {
-   unsigned int val;
- 
-   val = ~INTVAL (op); /* Invert and use.  */
-   if (mode == QImode) 
-     val &= 0xff;
-   else if (mode == HImode)
-     val &= 0xffff;
-   else
-     gcc_unreachable();
- 
-   if (val != 0)
-     return (val & (val - 1)) == 0; /* true if only one bit is set.  */
-   else
-     return 0;
- })
- 
- ;; Predicates for shift instructions
- ;; Immediate operand predicate for count in shift operations.
- ;; Immediate shall be 3-bits in case operand to be operated on
- ;; is a qi mode operand.
- (define_predicate "shift_qi_imm_operand"
-   (match_code "const_int")
- {
-   return (UNSIGNED_INT_FITS_N_BITS(INTVAL (op), 3)) ? 1 : 0;
- })
- 
- ;; Immediate shall be 4-bits in case operand to be operated on
- ;; is a hi mode operand.
- (define_predicate "shift_hi_imm_operand"
-   (match_code "const_int")
- {
-   return (UNSIGNED_INT_FITS_N_BITS(INTVAL (op), 4)) ? 1 : 0;
- })
- 
- ;; Immediate shall be 3-bits in case operand to be operated on
- ;; is a si mode operand.
- (define_predicate "shift_si_imm_operand"
-   (match_code "const_int")
- {
-   return (UNSIGNED_INT_FITS_N_BITS(INTVAL (op), 5)) ? 1 : 0;
- })
- 
- ;; Predicates for jump/call instructions
- ;; Jump immediate cannot be more than 24-bits
- (define_predicate "jump_imm_operand"
-   (match_code "const_int")
- {
-   return (UNSIGNED_INT_FITS_N_BITS(INTVAL (op), 24)) ? 1 : 0;
- })
- 
- ;; Call immediate cannot be more than 24-bits
- (define_predicate "call_imm_operand"
-   (match_operand 0 "immediate_operand")
- {
-   if (GET_CODE (op) != CONST_INT) return 1;
-     return (UNSIGNED_INT_FITS_N_BITS(INTVAL (op), 24)) ? 1 : 0;
- })
- 
- ;; Operand is register or 4-bit immediate operand
- (define_predicate "reg_or_u4bits_operand"
-   (ior (match_operand 0 "u4bits_operand")
-        (match_operand 0 "register_operand")))
- 
- ;; Operand is a register or symbol reference
- (define_predicate "reg_or_sym_operand"
-   (ior (match_code "symbol_ref")
-        (match_operand 0 "register_operand")))
- 
- ;; Operand is a non stack pointer register
- (define_predicate "nosp_reg_operand"
-   (and (match_operand 0 "register_operand")
-        (match_test "REGNO (op) != SP_REGNUM")))
- 
- (define_predicate "hard_reg_operand"
-   (and (match_operand 0 "register_operand")
-        (match_test "REGNO (op) <= 15")))
- 
- ;; Operand is a memory reference and
- ;; not a push operand.
- (define_predicate "store_operand"
-   (and (match_operand 0 "memory_operand")
-        (not (match_operand 0 "push_operand"))))
- 
- ;; Helper predicate 
- (define_predicate "reg_or_int_operand"
-   (ior (match_code "const_int")
-        (match_operand 0 "register_operand")))
- 
- ;;
- ;;
- ;; Atithmetic/logical predicates
- 
- ;; QI Helper
- (define_predicate "arith_qi_operand"
-    (match_code "const_int")
- {
-         return (IN_RAN(INTVAL (op), 0, 15) && ((INTVAL (op) != 9) 
-                 || (INTVAL (op) != 11))) ? 1 : 0 ; 
- })
- 
- ;;QI Reg, subreg(reg) or const_int.
- (define_predicate "reg_qi_int_operand"
-   (ior (match_operand 0 "arith_qi_operand")
-        (match_operand 0 "register_operand")))
- 
- ;; HI Helper
- (define_predicate "arith_hi_operand"
-    (match_code "const_int")
- {
-         return (IN_RAN(INTVAL (op), -32768, 32768) ) ? 1 : 0 ; 
- })
- 
- ;;HI Reg, subreg(reg) or const_int.
- (define_predicate "reg_hi_int_operand"
-   (ior (match_operand 0 "arith_hi_operand")
-        (match_operand 0 "register_operand")))
- 
- ;;SI Reg, subreg(reg) or const_int.
- (define_predicate "reg_si_int_operand"
-   (ior (match_operand 0 "const_int_operand")
-        (match_operand 0 "register_operand")))
- 
- ;;
- ;; Shift predicates
- 
- ;; QI Helper
- (define_predicate "shift_qi_operand"
-    (match_code "const_int")
- {
-         return (IN_RAN(INTVAL (op), 0, 7) ) ? 1 : 0; 
- })
- 
- ;;QI Reg, subreg(reg) or const_int.
- (define_predicate "shift_reg_qi_int_operand"
-   (ior (match_operand 0 "shift_qi_operand")
-        (match_operand 0 "register_operand")))
- 
- ;; HI Helper
- (define_predicate "shift_hi_operand"
-    (match_code "const_int")
- {
-         return (IN_RAN(INTVAL (op), 0, 15) ) ? 1 : 0 ; 
- })
- 
- ;;HI Reg, subreg(reg) or const_int.
- (define_predicate "shift_reg_hi_int_operand"
-   (ior (match_operand 0 "shift_hi_operand")
-        (match_operand 0 "register_operand")))
- 
- ;; SI Helper
- (define_predicate "shift_si_operand"
-    (match_code "const_int")
- {
-         return (IN_RAN(INTVAL (op), 0, 31) ) ? 1 : 0; 
- })
- 
- ;;SI Reg, subreg(reg) or const_int.
- (define_predicate "shift_reg_si_int_operand"
-   (ior (match_operand 0 "shift_si_operand")
-        (match_operand 0 "register_operand")))
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cr16/t-cr16 gcc-13.1.0/gcc/config/cr16/t-cr16
*** gcc-12.2.0/gcc/config/cr16/t-cr16	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cr16/t-cr16	Thu Jan  1 00:00:00 1970
***************
*** 1,25 ****
- # CR16 Target Makefile
- # Copyright (C) 2012-2022 Free Software Foundation, Inc.
- # Contributed by KPIT Cummins Infosystems Limited.
- #
- # This file is part of GCC.
- #
- # GCC is free software; you can redistribute it and/or modify it
- # under the terms of the GNU General Public License as published
- # by the Free Software Foundation; either version 3, or (at your
- # option) any later version.
- #
- # GCC is distributed in the hope that it will be useful, but WITHOUT
- # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- # License for more details.
- #
- # You should have received a copy of the GNU General Public License
- # along with GCC; see the file COPYING3.  If not see
- # <http://www.gnu.org/licenses/>.     
- 
- MULTILIB_OPTIONS     = fPIC mint32 
- MULTILIB_DIRNAMES    = far-pic int32 
- MULTILIB_MATCHES     =
- MULTILIB_EXTRA_OPTS  = mcr16cplus mdata-model=far
- 
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/cris/constraints.md gcc-13.1.0/gcc/config/cris/constraints.md
*** gcc-12.2.0/gcc/config/cris/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for CRIS.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for CRIS.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 100,116 ****
  					       || reload_completed)")))
  
  ;; Extra constraints.
! (define_constraint "R"
!   "An operand to BDAP or BIAP."
!        ;; A BIAP; r.S?
!   (ior (match_test "cris_biap_index_p (op, reload_in_progress
! 					   || reload_completed)")
!        ;; A [reg] or (int) [reg], maybe with post-increment.
!        (match_test "cris_bdap_index_p (op, reload_in_progress
! 					   || reload_completed)")
!        (match_test "CONSTANT_P (op)")))
! 
! (define_constraint "T"
    "Memory three-address operand."
    ;; All are indirect-memory:
    (and (match_code "mem")
--- 100,106 ----
  					       || reload_completed)")))
  
  ;; Extra constraints.
! (define_memory_constraint "T"
    "Memory three-address operand."
    ;; All are indirect-memory:
    (and (match_code "mem")
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris-modes.def gcc-13.1.0/gcc/config/cris/cris-modes.def
*** gcc-12.2.0/gcc/config/cris/cris-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for CRIS.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for CRIS.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris-passes.def gcc-13.1.0/gcc/config/cris/cris-passes.def
*** gcc-12.2.0/gcc/config/cris/cris-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for Visium.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for Visium.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris-protos.h gcc-13.1.0/gcc/config/cris/cris-protos.h
*** gcc-12.2.0/gcc/config/cris/cris-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Axis Communications.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Axis Communications.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris.cc gcc-13.1.0/gcc/config/cris/cris.cc
*** gcc-12.2.0/gcc/config/cris/cris.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
*************** cris_rtx_costs (rtx x, machine_mode mode
*** 1884,1890 ****
  	if (val == 0)
  	  *total = 0;
  	else if (val < 32 && val >= -32)
! 	  *total = 1;
  	/* Eight or 16 bits are a word and cycle more expensive.  */
  	else if (val <= 32767 && val >= -32768)
  	  *total = 2;
--- 1884,1911 ----
  	if (val == 0)
  	  *total = 0;
  	else if (val < 32 && val >= -32)
! 	  switch (outer_code)
! 	    {
! 	      /* For modes that fit in one register we tell they cost
! 		 the same as with register operands.  DImode operations
! 		 needs careful consideration for more basic reasons:
! 		 shifting by a non-word-size amount needs more
! 		 operations than an addition by a register pair.
! 		 Deliberately excluding SET, PLUS and comparisons and
! 		 also not including the full -64..63 range for (PLUS
! 		 and) MINUS.  */
! 	    case MINUS: case ASHIFT: case LSHIFTRT:
! 	    case ASHIFTRT: case AND: case IOR:
! 	      if (GET_MODE_SIZE(mode) <= UNITS_PER_WORD)
! 		{
! 		  *total = 0;
! 		  break;
! 		}
! 	      /* FALL THROUGH.  */
! 	    default:
! 	      *total = 1;
! 	      break;
! 	    }
  	/* Eight or 16 bits are a word and cycle more expensive.  */
  	else if (val <= 32767 && val >= -32768)
  	  *total = 2;
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris.h gcc-13.1.0/gcc/config/cris/cris.h
*** gcc-12.2.0/gcc/config/cris/cris.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for GCC.  Part of the machine description for CRIS.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Axis Communications.  Written by Hans-Peter Nilsson.
  
  This file is part of GCC.
*************** enum reg_class
*** 570,576 ****
     an inverse mapping from dwarf register to gcc register.  There is one
     need in dwarf2out.cc:expand_builtin_init_dwarf_reg_sizes.  Right now, I
     don't see that we need exact correspondence between DWARF *frame*
!    registers and DBX_REGISTER_NUMBER, so map them onto GCC registers.  */
  #define DWARF_FRAME_REGNUM(REG) (REG)
  
  /* Node: Stack Checking */
--- 570,576 ----
     an inverse mapping from dwarf register to gcc register.  There is one
     need in dwarf2out.cc:expand_builtin_init_dwarf_reg_sizes.  Right now, I
     don't see that we need exact correspondence between DWARF *frame*
!    registers and DEBUGGER_REGNO, so map them onto GCC registers.  */
  #define DWARF_FRAME_REGNUM(REG) (REG)
  
  /* Node: Stack Checking */
*************** struct cum_args {int regs;};
*** 888,894 ****
  
  /* Node: All Debuggers */
  
! #define DBX_REGISTER_NUMBER(REGNO)				\
   ((REGNO) == CRIS_SRP_REGNUM ? CRIS_CANONICAL_SRP_REGNUM :	\
    (REGNO) == CRIS_MOF_REGNUM ? CRIS_CANONICAL_MOF_REGNUM :	\
    (REGNO) == CRIS_CC0_REGNUM ? CRIS_CANONICAL_CC0_REGNUM :	\
--- 888,894 ----
  
  /* Node: All Debuggers */
  
! #define DEBUGGER_REGNO(REGNO)				\
   ((REGNO) == CRIS_SRP_REGNUM ? CRIS_CANONICAL_SRP_REGNUM :	\
    (REGNO) == CRIS_MOF_REGNUM ? CRIS_CANONICAL_MOF_REGNUM :	\
    (REGNO) == CRIS_CC0_REGNUM ? CRIS_CANONICAL_CC0_REGNUM :	\
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris.md gcc-13.1.0/gcc/config/cris/cris.md
*** gcc-12.2.0/gcc/config/cris/cris.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for CRIS cpu cores.
! ;; Copyright (C) 1998-2022 Free Software Foundation, Inc.
  ;; Contributed by Axis Communications.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for CRIS cpu cores.
! ;; Copyright (C) 1998-2023 Free Software Foundation, Inc.
  ;; Contributed by Axis Communications.
  
  ;; This file is part of GCC.
***************
*** 183,188 ****
--- 183,192 ----
  
  (define_mode_iterator WD [SI HI])
  (define_mode_iterator BW [HI QI])
+ 
+ ; Another "BW" for use where an independent iteration is needed.
+ (define_mode_iterator BW2 [HI QI])
+ 
  (define_mode_attr S [(SI "HI") (HI "QI")])
  (define_mode_attr s [(SI "hi") (HI "qi")])
  (define_mode_attr m [(SI ".d") (HI ".w") (QI ".b")])
***************
*** 1362,1373 ****
  {
    rtx reg = operands[0];
    rtx_insn *i = next_nonnote_nondebug_insn_bb (curr_insn);
  
    while (i != NULL_RTX && (!INSN_P (i) || DEBUG_INSN_P (i)))
      i = next_nonnote_nondebug_insn_bb (i);
  
!   if (i == NULL_RTX || reg_mentioned_p (reg, i) || BARRIER_P (i))
      FAIL;
  })
  
  (define_insn "<u>mul<s><mode>3"
--- 1366,1428 ----
  {
    rtx reg = operands[0];
    rtx_insn *i = next_nonnote_nondebug_insn_bb (curr_insn);
+   rtx x, src, dest;
  
    while (i != NULL_RTX && (!INSN_P (i) || DEBUG_INSN_P (i)))
      i = next_nonnote_nondebug_insn_bb (i);
  
!   /* We don't want to strip the clobber if the next insn possibly uses the
!      zeroness of the result.  Preferably fail only if we see a compare insn
!      that looks eliminable and with the register "reg" compared.  With some
!      effort we could also check for an equality test (EQ, NE) in the post-split
!      user, just not for now.  */
!   if (i == NULL_RTX)
      FAIL;
+ 
+   x = single_set (i);
+ 
+   /* We explicitly need to bail on a BARRIER, but that's implied by a failing
+      single_set test.  */
+   if (x == NULL_RTX)
+     FAIL;
+ 
+   src = SET_SRC (x);
+   dest = SET_DEST (x);
+ 
+   /* Bail on (post-split) eliminable compares.  */
+   if (REG_P (dest) && REGNO (dest) == CRIS_CC0_REGNUM
+       && GET_CODE (src) == COMPARE)
+     {
+       rtx cop0 = XEXP (src, 0);
+ 
+       if (REG_P (cop0) && REGNO (cop0) == REGNO (reg)
+ 	  && XEXP (src, 1) == const0_rtx)
+ 	FAIL;
+     }
+ 
+   /* Bail out if we see a (pre-split) cbranch or cstore where the comparison
+      looks eliminable and uses the destination register in this addition.  We
+      don't need to look very deep: a single_set which is a parallel clobbers
+      something, and (one of) that something, is always CRIS_CC0_REGNUM here.
+      Also, the entities we're looking for are two-element parallels.  A
+      split-up cbranch or cstore doesn't clobber CRIS_CC0_REGNUM.  A cbranch has
+      if_then_else as its source with a comparison operator as the condition,
+      and a cstore has a source with the comparison operator directly.  That
+      also matches dstep, so look for pc as destination for the if_then_else.
+      We error on the safe side if we happen to catch other conditional entities
+      and FAIL, that just means the split won't happen.  */
+   if (GET_CODE (PATTERN (i)) == PARALLEL && XVECLEN (PATTERN (i), 0) == 2)
+     {
+       rtx cmp
+ 	= (GET_CODE (src) == IF_THEN_ELSE && dest == pc_rtx
+ 	   ? XEXP (src, 0)
+ 	   : (COMPARISON_P (src) ? src : NULL_RTX));
+       gcc_assert (cmp == NULL_RTX || COMPARISON_P (cmp));
+ 
+       if (cmp && REG_P (XEXP (cmp, 0)) && XEXP (cmp, 1) == const0_rtx
+ 	  && REGNO (XEXP (cmp, 0)) == REGNO (reg))
+ 	FAIL;
+     }
  })
  
  (define_insn "<u>mul<s><mode>3"
***************
*** 2832,2837 ****
--- 2887,2938 ----
    operands[3] = gen_rtx_ZERO_EXTEND (SImode, op1);
    operands[4] = GEN_INT (trunc_int_for_mode (INTVAL (operands[1]), QImode));
  })
+ 
+ ;; Fix a decomposed szext: fuse it with the memory operand of the
+ ;; load.  This is typically the sign-extension part of a decomposed
+ ;; "indirect offset" address.
+ (define_peephole2 ; lra_szext_decomposed
+   [(parallel
+     [(set (match_operand:BW 0 "register_operand")
+ 	  (match_operand:BW 1 "memory_operand"))
+      (clobber (reg:CC CRIS_CC0_REGNUM))])
+    (parallel
+     [(set (match_operand:SI 2 "register_operand") (szext:SI (match_dup 0)))
+      (clobber (reg:CC CRIS_CC0_REGNUM))])]
+   "REGNO (operands[0]) == REGNO (operands[2])
+    || peep2_reg_dead_p (2, operands[0])"
+   [(parallel
+     [(set (match_dup 2) (szext:SI (match_dup 1)))
+      (clobber (reg:CC CRIS_CC0_REGNUM))])])
+ 
+ ;; Re-compose a decomposed "indirect offset" address for a szext
+ ;; operation.  The non-clobbering "addi" is generated by LRA.
+ ;; This and lra_szext_decomposed is covered by cris/rld-legit1.c.
+ (define_peephole2 ; lra_szext_decomposed_indirect_with_offset
+   [(parallel
+     [(set (match_operand:SI 0 "register_operand")
+ 	  (sign_extend:SI (mem:BW (match_operand:SI 1 "register_operand"))))
+      (clobber (reg:CC CRIS_CC0_REGNUM))])
+    (set (match_dup 0)
+ 	(plus:SI (match_dup 0) (match_operand:SI 2 "register_operand")))
+    (parallel
+     [(set (match_operand:SI 3 "register_operand")
+ 	  (szext:SI (mem:BW2 (match_dup 0))))
+      (clobber (reg:CC CRIS_CC0_REGNUM))])]
+   "(REGNO (operands[0]) == REGNO (operands[3])
+     || peep2_reg_dead_p (3, operands[0]))
+    && (REGNO (operands[0]) == REGNO (operands[1])
+        || peep2_reg_dead_p (3, operands[0]))"
+   [(parallel
+     [(set
+       (match_dup 3)
+       (szext:SI
+        (mem:BW2 (plus:SI (szext:SI (mem:BW (match_dup 1))) (match_dup 2)))))
+      (clobber (reg:CC CRIS_CC0_REGNUM))])])
+ 
+ ;; Add operations with similar or same decomposed addresses here, when
+ ;; encountered - but only when covered by mentioned test-cases for at
+ ;; least one of the cases generalized in the pattern.
  
  ;; Local variables:
  ;; mode:emacs-lisp
diff -Nrcpad gcc-12.2.0/gcc/config/cris/cris.opt gcc-13.1.0/gcc/config/cris/cris.opt
*** gcc-12.2.0/gcc/config/cris/cris.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/cris.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/cris/elf.opt gcc-13.1.0/gcc/config/cris/elf.opt
*** gcc-12.2.0/gcc/config/cris/elf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/elf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; ELF-specific options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; ELF-specific options for the CRIS port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/cris/predicates.md gcc-13.1.0/gcc/config/cris/predicates.md
*** gcc-12.2.0/gcc/config/cris/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Operand and operator predicates for the GCC CRIS port.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Operand and operator predicates for the GCC CRIS port.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/cris/sync.md gcc-13.1.0/gcc/config/cris/sync.md
*** gcc-12.2.0/gcc/config/cris/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for CRIS atomic memory sequences.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for CRIS atomic memory sequences.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/cris/t-cris gcc-13.1.0/gcc/config/cris/t-cris
*** gcc-12.2.0/gcc/config/cris/t-cris	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/t-cris	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  #
  # The Makefile fragment to include when compiling gcc et al for CRIS.
  #
! # Copyright (C) 2001-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 3,9 ----
  #
  # The Makefile fragment to include when compiling gcc et al for CRIS.
  #
! # Copyright (C) 2001-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/cris/t-elfmulti gcc-13.1.0/gcc/config/cris/t-elfmulti
*** gcc-12.2.0/gcc/config/cris/t-elfmulti	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/cris/t-elfmulti	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2001-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2001-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/csky/constraints.md gcc-13.1.0/gcc/config/csky/constraints.md
*** gcc-12.2.0/gcc/config/csky/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraints for C-SKY.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraints for C-SKY.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky-elf.h gcc-13.1.0/gcc/config/csky/csky-elf.h
*** gcc-12.2.0/gcc/config/csky/csky-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations for bare-metal C-SKY targets.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Declarations for bare-metal C-SKY targets.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky-linux-elf.h gcc-13.1.0/gcc/config/csky/csky-linux-elf.h
*** gcc-12.2.0/gcc/config/csky/csky-linux-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky-linux-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations for C-SKY targets running Linux.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Declarations for C-SKY targets running Linux.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
***************
*** 65,70 ****
--- 65,81 ----
  
  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-cskyv2%{mfloat-abi=hard:-hf}%{mbig-endian:-be}.so.1"
  
+ #ifdef CSKY_ENABLE_MULTILIB
+ #undef SYSROOT_SUFFIX_SPEC
+ #define SYSROOT_SUFFIX_SPEC					\
+   "%{mbig-endian:/big}"						\
+   "%{mcpu=ck807*:/ck807}"					\
+   "%{mcpu=ck860*:/ck860}"					\
+   "%{mcpu=ck800*:/ck800}"					\
+   "%{mfloat-abi=softfp:/soft-fp}"				\
+   "%{mfloat-abi=hard:/hard-fp}"
+ #endif
+ 
  #define LINUX_TARGET_LINK_SPEC	"%{h*} %{version:-v}		\
     %{b}								\
     %{static:-Bstatic}						\
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky-modes.def gcc-13.1.0/gcc/config/csky/csky-modes.def
*** gcc-12.2.0/gcc/config/csky/csky-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C-SKY extra machine modes.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* C-SKY extra machine modes.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky-protos.h gcc-13.1.0/gcc/config/csky/csky-protos.h
*** gcc-12.2.0/gcc/config/csky/csky-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototype declarations for the C-SKY back end.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototype declarations for the C-SKY back end.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky.cc gcc-13.1.0/gcc/config/csky/csky.cc
*** gcc-12.2.0/gcc/config/csky/csky.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC backend functions for C-SKY targets.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* GCC backend functions for C-SKY targets.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
*************** enum reg_class regno_reg_class[FIRST_PSE
*** 172,178 ****
  /* Arrays that map GCC register numbers to debugger register numbers,
     '-1' means that is INVALID_REGNUM.
     TODO: which rules according to here ?  */
! const int csky_dbx_regno[FIRST_PSEUDO_REGISTER] =
  {
    0,  1,  2,  3,  4,  5,  6,  7,
    8,  9,  10, 11, 12, 13, 14, 15,
--- 172,178 ----
  /* Arrays that map GCC register numbers to debugger register numbers,
     '-1' means that is INVALID_REGNUM.
     TODO: which rules according to here ?  */
! const int csky_debugger_regno[FIRST_PSEUDO_REGISTER] =
  {
    0,  1,  2,  3,  4,  5,  6,  7,
    8,  9,  10, 11, 12, 13, 14, 15,
*************** csky_cpu_cpp_builtins (cpp_reader *pfile
*** 396,401 ****
--- 396,406 ----
  	  builtin_define ("__csky_hard_float_abi__");
  	  builtin_define ("__CSKY_HARD_FLOAT_ABI__");
  	}
+       else
+ 	{
+ 	  builtin_define ("__csky_soft_float_abi__");
+ 	  builtin_define ("__CSKY_SOFT_FLOAT_ABI__");
+ 	}
        if (TARGET_SINGLE_FPU)
  	{
  	  builtin_define ("__csky_hard_float_fpu_sf__");
*************** csky_setup_incoming_varargs (cumulative_
*** 2086,2092 ****
  
    cfun->machine->uses_anonymous_args = 1;
    local_cum = *pcum;
!   csky_function_arg_advance (local_cum_v, arg);
    regs_to_push = CSKY_NPARM_REGS - local_cum.reg;
    if (regs_to_push)
      *pretend_size  = regs_to_push * UNITS_PER_WORD;
--- 2091,2098 ----
  
    cfun->machine->uses_anonymous_args = 1;
    local_cum = *pcum;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     csky_function_arg_advance (local_cum_v, arg);
    regs_to_push = CSKY_NPARM_REGS - local_cum.reg;
    if (regs_to_push)
      *pretend_size  = regs_to_push * UNITS_PER_WORD;
*************** csky_emit_compare_float (enum rtx_code c
*** 6342,6350 ****
      case GT:
      case LT:
      case LE:
!       if (op1 == CONST0_RTX (mode) && (CSKY_ISA_FEATURE_GET(fpv2_sf)
! 				       || CSKY_ISA_FEATURE_GET(fpv2_df)
! 				       || CSKY_ISA_FEATURE_GET(fpv2_divd)))
  	op1 = force_reg (mode, op1);
        break;
      case ORDERED:
--- 6348,6354 ----
      case GT:
      case LT:
      case LE:
!       if (op1 == CONST0_RTX (mode) && TARGET_SUPPORT_FPV2)
  	op1 = force_reg (mode, op1);
        break;
      case ORDERED:
*************** csky_init_cumulative_args (CUMULATIVE_AR
*** 7302,7308 ****
  void
  csky_init_builtins (void)
  {
!   /* Inint fp16.  */
    static tree csky_floatHF_type_node = make_node (REAL_TYPE);
    TYPE_PRECISION (csky_floatHF_type_node) = GET_MODE_PRECISION (HFmode);
    layout_type (csky_floatHF_type_node);
--- 7306,7312 ----
  void
  csky_init_builtins (void)
  {
!   /* Init fp16.  */
    static tree csky_floatHF_type_node = make_node (REAL_TYPE);
    TYPE_PRECISION (csky_floatHF_type_node) = GET_MODE_PRECISION (HFmode);
    layout_type (csky_floatHF_type_node);
*************** csky_init_builtins (void)
*** 7315,7324 ****
  static const char *
  csky_mangle_type (const_tree type)
  {
!   if (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL
!       && DECL_NAME (TYPE_NAME (type))
!       && !strcmp (IDENTIFIER_POINTER (DECL_NAME (TYPE_NAME (type))), "__fp16"))
!     return "__fp16";
  
    /* Use the default mangling.  */
    return NULL;
--- 7319,7328 ----
  static const char *
  csky_mangle_type (const_tree type)
  {
!   if (TREE_CODE (type) == REAL_TYPE
!       && TYPE_PRECISION (type) == 16
!       && TYPE_MAIN_VARIANT (type) != float16_type_node)
!     return "Dh";
  
    /* Use the default mangling.  */
    return NULL;
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky.h gcc-13.1.0/gcc/config/csky/csky.h
*** gcc-12.2.0/gcc/config/csky/csky.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declarations for the C-SKY back end.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Declarations for the C-SKY back end.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
***************
*** 165,170 ****
--- 165,174 ----
  			     || CSKY_ISA_FEATURE (fpv3_sf) \
  			     || CSKY_ISA_FEATURE (fpv3_df))
  
+ #define TARGET_SUPPORT_FPV2 (CSKY_ISA_FEATURE(fpv2_sf)    \
+ 			     || CSKY_ISA_FEATURE(fpv2_df) \
+ 			     || CSKY_ISA_FEATURE(fpv2_divd))
+ 
  /* Number of loads/stores handled by ldm/stm.  */
  #define CSKY_MIN_MULTIPLE_STLD	3
  #define CSKY_MAX_MULTIPLE_STLD	12
*************** typedef struct
*** 418,424 ****
     The int cast is to prevent a complaint about unsigned comparison to
     zero, since CSKY_FIRST_PARM_REGNUM is zero.  */
  #define FUNCTION_ARG_REGNO_P(REGNO)                          \
!   (((REGNO) >= CSKY_FIRST_PARM_REGNUM                        \
      && (REGNO) < (CSKY_NPARM_REGS + CSKY_FIRST_PARM_REGNUM)) \
     || FUNCTION_VARG_REGNO_P(REGNO))
  
--- 422,428 ----
     The int cast is to prevent a complaint about unsigned comparison to
     zero, since CSKY_FIRST_PARM_REGNUM is zero.  */
  #define FUNCTION_ARG_REGNO_P(REGNO)                          \
!   (((int)(REGNO) >= CSKY_FIRST_PARM_REGNUM                   \
      && (REGNO) < (CSKY_NPARM_REGS + CSKY_FIRST_PARM_REGNUM)) \
     || FUNCTION_VARG_REGNO_P(REGNO))
  
*************** while (0)
*** 948,954 ****
     specially when using MULTILIB_OPTIONS.  */
  #undef MULTILIB_DEFAULTS
  #define MULTILIB_DEFAULTS    \
!     {"mlittle-endian", "mcpu=ck810f", "msoft-float"}
  
  /* Support for a compile-time default CPU, et cetera.  The rules are:
     --with-arch is ignored if -march or -mcpu are specified.
--- 952,958 ----
     specially when using MULTILIB_OPTIONS.  */
  #undef MULTILIB_DEFAULTS
  #define MULTILIB_DEFAULTS    \
!     {"mlittle-endian", "mcpu=ck810f", "mfloat-abi=soft"}
  
  /* Support for a compile-time default CPU, et cetera.  The rules are:
     --with-arch is ignored if -march or -mcpu are specified.
*************** while (0)
*** 997,1003 ****
     is different from that used in other debug info sections.
     Given a GCC hard register number,
     this macro should return the .eh_frame register number.*/
! #define DWARF_FRAME_REGNUM(REG)	 DBX_REGISTER_NUMBER (REG)
  
  /* If INCOMING_RETURN_ADDR_RTX is defined & the RTL is REG,
     define DWARF_FRAME_RETURN_COLUMN to DWARF_FRAME_REGNUM.  */
--- 1001,1007 ----
     is different from that used in other debug info sections.
     Given a GCC hard register number,
     this macro should return the .eh_frame register number.*/
! #define DWARF_FRAME_REGNUM(REG)	 DEBUGGER_REGNO (REG)
  
  /* If INCOMING_RETURN_ADDR_RTX is defined & the RTL is REG,
     define DWARF_FRAME_RETURN_COLUMN to DWARF_FRAME_REGNUM.  */
*************** while (0)
*** 1006,1014 ****
  /* Use r0 and r1 to pass exception handling information.  */
  #define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? N : INVALID_REGNUM)
  
! /* How to renumber registers for dbx and gdb.  */
! extern const int csky_dbx_regno[];
! #define DBX_REGISTER_NUMBER(REGNO) ((unsigned int) csky_dbx_regno[REGNO])
  
  
  /******************************************************************
--- 1010,1018 ----
  /* Use r0 and r1 to pass exception handling information.  */
  #define EH_RETURN_DATA_REGNO(N) ((N) < 2 ? N : INVALID_REGNUM)
  
! /* How to renumber registers for gdb.  */
! extern const int csky_debugger_regno[];
! #define DEBUGGER_REGNO(REGNO) ((unsigned int) csky_debugger_regno[REGNO])
  
  
  /******************************************************************
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky.md gcc-13.1.0/gcc/config/csky/csky.md
*** gcc-12.2.0/gcc/config/csky/csky.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for C-SKY processors.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for C-SKY processors.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
***************
*** 573,579 ****
  	(ior:SI (match_operand:SI 1 "register_operand"	"0")
  		(ashift:SI (const_int 1)
  			   (match_operand:SI 2 "csky_literal_K_operand" "K"))))]
!   "TARGET_MINI_REGISTERS"
    "bseti\t%0, %2"
    [(set_attr "length" "2")])
  
--- 573,579 ----
  	(ior:SI (match_operand:SI 1 "register_operand"	"0")
  		(ashift:SI (const_int 1)
  			   (match_operand:SI 2 "csky_literal_K_operand" "K"))))]
!   "CSKY_ISA_FEATURE (E1)"
    "bseti\t%0, %2"
    [(set_attr "length" "2")])
  
***************
*** 582,588 ****
  	(ior:SI (match_operand:SI 1 "register_operand"	"0,r")
  		(ashift:SI (const_int 1)
  			   (match_operand:SI 2 "csky_literal_K_operand" "K,K"))))]
!   "!TARGET_MINI_REGISTERS"
    "bseti\t%0, %1, %2"
    [(set_attr "length" "2,4")])
  
--- 582,588 ----
  	(ior:SI (match_operand:SI 1 "register_operand"	"0,r")
  		(ashift:SI (const_int 1)
  			   (match_operand:SI 2 "csky_literal_K_operand" "K,K"))))]
!   "CSKY_ISA_FEATURE (E2)"
    "bseti\t%0, %1, %2"
    [(set_attr "length" "2,4")])
  
***************
*** 599,605 ****
  	(and:SI (match_operand:SI 1 "register_operand"	"0")
  		(not:SI (ashift:SI (const_int 1)
  				   (match_operand:SI 2 "csky_literal_K_operand" "K")))))]
!   "TARGET_MINI_REGISTERS"
    "bclri\t%0, %2"
    [(set_attr "length" "2")])
  
--- 599,605 ----
  	(and:SI (match_operand:SI 1 "register_operand"	"0")
  		(not:SI (ashift:SI (const_int 1)
  				   (match_operand:SI 2 "csky_literal_K_operand" "K")))))]
!   "CSKY_ISA_FEATURE (E1)"
    "bclri\t%0, %2"
    [(set_attr "length" "2")])
  
***************
*** 608,614 ****
  	(and:SI (match_operand:SI 1 "register_operand"	"0,r")
  		(not:SI (ashift:SI (const_int 1)
  				   (match_operand:SI 2 "csky_literal_K_operand" "K,K")))))]
!   "!TARGET_MINI_REGISTERS"
    "bclri\t%0, %1, %2"
    [(set_attr "length" "2,4")])
  
--- 608,614 ----
  	(and:SI (match_operand:SI 1 "register_operand"	"0,r")
  		(not:SI (ashift:SI (const_int 1)
  				   (match_operand:SI 2 "csky_literal_K_operand" "K,K")))))]
!   "CSKY_ISA_FEATURE (E2)"
    "bclri\t%0, %1, %2"
    [(set_attr "length" "2,4")])
  
***************
*** 1279,1285 ****
    "reload_completed && !rtx_equal_p (operands[0], operands[1])"
    [(set (match_dup 0)
  	(if_then_else:SI (ne (reg:CC CSKY_CC_REGNUM) (const_int 0))
! 			 (plus:SI (match_dup 0) (match_dup 2))))]
    {
      emit_insn (gen_movf (copy_rtx (operands[0]),
  			 copy_rtx (operands[1]),
--- 1279,1286 ----
    "reload_completed && !rtx_equal_p (operands[0], operands[1])"
    [(set (match_dup 0)
  	(if_then_else:SI (ne (reg:CC CSKY_CC_REGNUM) (const_int 0))
! 			 (plus:SI (match_dup 0) (match_dup 2))
! 			 (match_dup 0)))]
    {
      emit_insn (gen_movf (copy_rtx (operands[0]),
  			 copy_rtx (operands[1]),
***************
*** 1305,1311 ****
    "reload_completed && !rtx_equal_p (operands[0], operands[1])"
    [(set (match_dup 0)
  	(if_then_else:SI (eq (reg:CC CSKY_CC_REGNUM) (const_int 0))
! 			 (plus:SI (match_dup 0) (match_dup 2))))]
    {
      emit_insn (gen_movt (copy_rtx (operands[0]),
  			 copy_rtx (operands[1]),
--- 1306,1313 ----
    "reload_completed && !rtx_equal_p (operands[0], operands[1])"
    [(set (match_dup 0)
  	(if_then_else:SI (eq (reg:CC CSKY_CC_REGNUM) (const_int 0))
! 			 (plus:SI (match_dup 0) (match_dup 2))
! 			 (match_dup 0)))]
    {
      emit_insn (gen_movt (copy_rtx (operands[0]),
  			 copy_rtx (operands[1]),
***************
*** 3012,3018 ****
    [(set (reg:CC CSKY_CC_REGNUM)
  	(ne:CC (match_operand:SI 0 "register_operand"	    "r")
  	       (match_operand:SI 1 "csky_literal_I_operand" "I")))]
!   "!TARGET_MINI_REGISTERS && CSKY_ISA_FEATURE (E2)"
    "cmpnei\t%0, %1"
    [(set_attr "type" "cmp")]
  )
--- 3014,3020 ----
    [(set (reg:CC CSKY_CC_REGNUM)
  	(ne:CC (match_operand:SI 0 "register_operand"	    "r")
  	       (match_operand:SI 1 "csky_literal_I_operand" "I")))]
!   "CSKY_ISA_FEATURE (E2)"
    "cmpnei\t%0, %1"
    [(set_attr "type" "cmp")]
  )
***************
*** 3054,3060 ****
    [(set (reg:CC CSKY_CC_REGNUM)
  	(lt:CC (match_operand:SI 0 "register_operand"	     "a,r")
  	       (match_operand:SI 1 "csky_literal_Uk_operand" "J,Uk")))]
!   "!TARGET_MINI_REGISTERS && CSKY_ISA_FEATURE (E2)"
    "cmplti\t%0, %1"
    [(set_attr "length" "2,4")
     (set_attr "type" "cmp")]
--- 3056,3062 ----
    [(set (reg:CC CSKY_CC_REGNUM)
  	(lt:CC (match_operand:SI 0 "register_operand"	     "a,r")
  	       (match_operand:SI 1 "csky_literal_Uk_operand" "J,Uk")))]
!   "CSKY_ISA_FEATURE (E2)"
    "cmplti\t%0, %1"
    [(set_attr "length" "2,4")
     (set_attr "type" "cmp")]
***************
*** 3147,3153 ****
    [(set (reg:CC CSKY_CC_REGNUM)
  	(geu:CC (match_operand:SI 0 "register_operand"	      "a,r")
  		(match_operand:SI 1 "csky_literal_Uk_operand" "J,Uk")))]
!   "!TARGET_MINI_REGISTERS && CSKY_ISA_FEATURE (E2)"
    "cmphsi\t%0, %1"
    [(set_attr "length" "2,4")
     (set_attr "type" "cmp")]
--- 3149,3155 ----
    [(set (reg:CC CSKY_CC_REGNUM)
  	(geu:CC (match_operand:SI 0 "register_operand"	      "a,r")
  		(match_operand:SI 1 "csky_literal_Uk_operand" "J,Uk")))]
!   "CSKY_ISA_FEATURE (E2)"
    "cmphsi\t%0, %1"
    [(set_attr "length" "2,4")
     (set_attr "type" "cmp")]
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky.opt gcc-13.1.0/gcc/config/csky/csky.opt
*** gcc-12.2.0/gcc/config/csky/csky.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Command-line options for the C-SKY back end.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Command-line options for the C-SKY back end.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_cores.def gcc-13.1.0/gcc/config/csky/csky_cores.def
*** gcc-12.2.0/gcc/config/csky/csky_cores.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_cores.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Architecture and core descriptions for the C-SKY back end.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Architecture and core descriptions for the C-SKY back end.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_genopt.sh gcc-13.1.0/gcc/config/csky/csky_genopt.sh
*** gcc-12.2.0/gcc/config/csky/csky_genopt.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_genopt.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  # Generate csky_tables.opt from the lists in *.def.
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  #!/bin/sh
  # Generate csky_tables.opt from the lists in *.def.
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
*************** cat <<EOF
*** 23,29 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 23,29 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_insn_dsp.md gcc-13.1.0/gcc/config/csky/csky_insn_dsp.md
*** gcc-12.2.0/gcc/config/csky/csky_insn_dsp.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_insn_dsp.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; C-SKY DSP instruction descriptions.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; C-SKY DSP instruction descriptions.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_insn_fpu.md gcc-13.1.0/gcc/config/csky/csky_insn_fpu.md
*** gcc-12.2.0/gcc/config/csky/csky_insn_fpu.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_insn_fpu.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; C-SKY FPU instruction descriptions.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; C-SKY FPU instruction descriptions.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_insn_fpuv2.md gcc-13.1.0/gcc/config/csky/csky_insn_fpuv2.md
*** gcc-12.2.0/gcc/config/csky/csky_insn_fpuv2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_insn_fpuv2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; C-SKY FPUV2 instruction descriptions.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; C-SKY FPUV2 instruction descriptions.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_insn_fpuv3.md gcc-13.1.0/gcc/config/csky/csky_insn_fpuv3.md
*** gcc-12.2.0/gcc/config/csky/csky_insn_fpuv3.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_insn_fpuv3.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; C-SKY FPUV3 instruction descriptions.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; C-SKY FPUV3 instruction descriptions.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
***************
*** 476,489 ****
    [(set (match_operand:SI 0 "register_operand" "=v")
  	(FIX_SU:SI (unspec:F3ANY [(match_operand:F3ANY 1 "register_operand" "0")]
  				   FRM)))]
!   "CSKY_ISA_FEATURE(fpv3_<mode>)"
    "fftoi.f<f3t>.<fixsu>32<rm>\t%0, %1"
  )
  
  (define_insn "<frm_pattern><mode>2"
    [(set (match_operand:F3ANY 0 "register_operand" "=v")
  	(unspec:F3ANY [(match_operand:F3ANY 1 "register_operand" "0")] FRMF))]
!   "CSKY_ISA_FEATURE(fpv3_<mode>)"
    "fftofi.f<f3t><rm>\t%0, %1"
  )
  
--- 476,491 ----
    [(set (match_operand:SI 0 "register_operand" "=v")
  	(FIX_SU:SI (unspec:F3ANY [(match_operand:F3ANY 1 "register_operand" "0")]
  				   FRM)))]
!   "CSKY_ISA_FEATURE(fpv3_<mode>)
!    && (flag_fp_int_builtin_inexact || !flag_trapping_math)"
    "fftoi.f<f3t>.<fixsu>32<rm>\t%0, %1"
  )
  
  (define_insn "<frm_pattern><mode>2"
    [(set (match_operand:F3ANY 0 "register_operand" "=v")
  	(unspec:F3ANY [(match_operand:F3ANY 1 "register_operand" "0")] FRMF))]
!   "CSKY_ISA_FEATURE(fpv3_<mode>)
!    && (flag_fp_int_builtin_inexact || !flag_trapping_math)"
    "fftofi.f<f3t><rm>\t%0, %1"
  )
  
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_isa.def gcc-13.1.0/gcc/config/csky/csky_isa.def
*** gcc-12.2.0/gcc/config/csky/csky_isa.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_isa.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ISA feature descriptions for the C-SKY back end.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* ISA feature descriptions for the C-SKY back end.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_isa.h gcc-13.1.0/gcc/config/csky/csky_isa.h
*** gcc-12.2.0/gcc/config/csky/csky_isa.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_isa.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ISA feature enumerations for C-SKY targets.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* ISA feature enumerations for C-SKY targets.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_opts.h gcc-13.1.0/gcc/config/csky/csky_opts.h
*** gcc-12.2.0/gcc/config/csky/csky_opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Processor and arch enumerations for C-SKY targets.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  /* Processor and arch enumerations for C-SKY targets.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by C-SKY Microsystems and Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_pipeline_ck801.md gcc-13.1.0/gcc/config/csky/csky_pipeline_ck801.md
*** gcc-12.2.0/gcc/config/csky/csky_pipeline_ck801.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_pipeline_ck801.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduler information for C-SKY CK801 processors.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduler information for C-SKY CK801 processors.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_pipeline_ck802.md gcc-13.1.0/gcc/config/csky/csky_pipeline_ck802.md
*** gcc-12.2.0/gcc/config/csky/csky_pipeline_ck802.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_pipeline_ck802.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Instruction scheduling information for C-SKY CK802 processors.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Instruction scheduling information for C-SKY CK802 processors.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_pipeline_ck803.md gcc-13.1.0/gcc/config/csky/csky_pipeline_ck803.md
*** gcc-12.2.0/gcc/config/csky/csky_pipeline_ck803.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_pipeline_ck803.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduler information for C-SKY CK803 processors.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduler information for C-SKY CK803 processors.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_pipeline_ck810.md gcc-13.1.0/gcc/config/csky/csky_pipeline_ck810.md
*** gcc-12.2.0/gcc/config/csky/csky_pipeline_ck810.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_pipeline_ck810.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Instruction scheduling information for C-SKY CK810 processors.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Instruction scheduling information for C-SKY CK810 processors.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/csky_tables.opt gcc-13.1.0/gcc/config/csky/csky_tables.opt
*** gcc-12.2.0/gcc/config/csky/csky_tables.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/csky_tables.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by csky_genopt.sh from csky_cores.def.
  
! ; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/csky/predicates.md gcc-13.1.0/gcc/config/csky/predicates.md
*** gcc-12.2.0/gcc/config/csky/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicates for C-SKY.
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicates for C-SKY.
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by C-SKY Microsystems and Mentor Graphics.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/t-csky gcc-13.1.0/gcc/config/csky/t-csky
*** gcc-12.2.0/gcc/config/csky/t-csky	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/t-csky	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Make rules for all C-SKY targets.
  #
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Make rules for all C-SKY targets.
  #
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/t-csky-elf gcc-13.1.0/gcc/config/csky/t-csky-elf
*** gcc-12.2.0/gcc/config/csky/t-csky-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/t-csky-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilib configuration for csky*-elf.
  #
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Multilib configuration for csky*-elf.
  #
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/csky/t-csky-linux gcc-13.1.0/gcc/config/csky/t-csky-linux
*** gcc-12.2.0/gcc/config/csky/t-csky-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/csky/t-csky-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilib configuration for csky*-linux-*.
  #
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
--- 1,6 ----
  # Multilib configuration for csky*-linux-*.
  #
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  # Contributed by C-SKY Microsystems and Mentor Graphics.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-c.cc gcc-13.1.0/gcc/config/darwin-c.cc
*** gcc-12.2.0/gcc/config/darwin-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Darwin support needed only by C/C++ frontends.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Darwin support needed only by C/C++ frontends.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** darwin_register_frameworks (const char *
*** 505,511 ****
        size_t i;
  
        /* Setup default search path for frameworks.  */
!       for (i=0; i<sizeof (framework_defaults)/sizeof(const char *); ++i)
  	{
  	  char *str;
  	  if (sysroot)
--- 505,511 ----
        size_t i;
  
        /* Setup default search path for frameworks.  */
!       for (i = 0; i < ARRAY_SIZE (framework_defaults); ++i)
  	{
  	  char *str;
  	  if (sysroot)
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-d.cc gcc-13.1.0/gcc/config/darwin-d.cc
*** gcc-12.2.0/gcc/config/darwin-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Darwin support needed only by D front-end.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* Darwin support needed only by D front-end.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  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
*************** along with GCC; see the file COPYING3.
*** 18,23 ****
--- 18,24 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "tm.h"
  #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
*************** darwin_d_register_target_info (void)
*** 66,75 ****
  #undef TARGET_D_MINFO_SECTION
  #define TARGET_D_MINFO_SECTION "__DATA,__minfodata"
  
! #undef TARGET_D_MINFO_START_NAME
! #define TARGET_D_MINFO_START_NAME "*section$start$__DATA$__minfodata"
  
! #undef TARGET_D_MINFO_END_NAME
! #define TARGET_D_MINFO_END_NAME "*section$end$__DATA$__minfodata"
  
  struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
--- 67,76 ----
  #undef TARGET_D_MINFO_SECTION
  #define TARGET_D_MINFO_SECTION "__DATA,__minfodata"
  
! #undef TARGET_D_MINFO_SECTION_START
! #define TARGET_D_MINFO_SECTION_START "*section$start$__DATA$__minfodata"
  
! #undef TARGET_D_MINFO_SECTION_END
! #define TARGET_D_MINFO_SECTION_END "*section$end$__DATA$__minfodata"
  
  struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-driver.cc gcc-13.1.0/gcc/config/darwin-driver.cc
*** gcc-12.2.0/gcc/config/darwin-driver.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-driver.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Additional functions for the GCC driver on Darwin native.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Additional functions for the GCC driver on Darwin native.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-f.cc gcc-13.1.0/gcc/config/darwin-f.cc
*** gcc-12.2.0/gcc/config/darwin-f.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-f.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Darwin support needed only by Fortran frontends.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Daniel Franke.
  
  This file is part of GCC.
--- 1,5 ----
  /* Darwin support needed only by Fortran frontends.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Daniel Franke.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-ppc-ldouble-patch.def gcc-13.1.0/gcc/config/darwin-ppc-ldouble-patch.def
*** gcc-12.2.0/gcc/config/darwin-ppc-ldouble-patch.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-ppc-ldouble-patch.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-protos.h gcc-13.1.0/gcc/config/darwin-protos.h
*** gcc-12.2.0/gcc/config/darwin-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/darwin-sections.def gcc-13.1.0/gcc/config/darwin-sections.def
*** gcc-12.2.0/gcc/config/darwin-sections.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin-sections.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/darwin.cc gcc-13.1.0/gcc/config/darwin.cc
*** gcc-12.2.0/gcc/config/darwin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for generic Darwin as target machine for GNU C compiler.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Functions for generic Darwin as target machine for GNU C compiler.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** darwin_label_is_anonymous_local_objc_nam
*** 1936,1941 ****
--- 1936,1943 ----
      }
    else if (startswith ((const char *)p, "ClassMethods"))
      return false;
+   else if (startswith ((const char *)p, "ClassProtocols"))
+     return false;
    else if (startswith ((const char *)p, "Instance"))
      {
        if (p[8] == 'I' || p[8] == 'M')
diff -Nrcpad gcc-12.2.0/gcc/config/darwin.h gcc-13.1.0/gcc/config/darwin.h
*** gcc-12.2.0/gcc/config/darwin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for Darwin (Mac OS X) systems.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Target definitions for Darwin (Mac OS X) systems.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** extern GTY(()) int darwin_ms_struct;
*** 396,405 ****
  
  #define DSYMUTIL_SPEC \
    "%{!c:%{!E:%{!S:%{!r:%{!M:%{!MM:%{!fsyntax-only:%{!fdump=*:\
!      %{g*:%{!gctf:%{!gbtf:%{!gstabs*:%{%:debug-level-gt(0): -idsym \
         %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm|.s|.f|.f90|\
  	 .f95|.f03|.f77|.for|.F|.F90|.F95|.F03|.d: -dsym }\
!       }}}}}\
     }}}}}}}}"
  
  #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC
--- 396,405 ----
  
  #define DSYMUTIL_SPEC \
    "%{!c:%{!E:%{!S:%{!r:%{!M:%{!MM:%{!fsyntax-only:%{!fdump=*:\
!      %{g*:%{!gctf:%{!gbtf:%{%:debug-level-gt(0): -idsym \
         %{.c|.cc|.C|.cpp|.cp|.c++|.cxx|.CPP|.m|.mm|.s|.f|.f90|\
  	 .f95|.f03|.f77|.for|.F|.F90|.F95|.F03|.d: -dsym }\
!       }}}}\
     }}}}}}}}"
  
  #define LINK_COMMAND_SPEC LINK_COMMAND_SPEC_A DSYMUTIL_SPEC
*************** extern GTY(()) int darwin_ms_struct;
*** 443,452 ****
                       %:replace-outfile(-lobjc libobjc-gnu.a%s); \
                      :%:replace-outfile(-lobjc -lobjc-gnu )}}\
     %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\
     %{static|static-libgcc|static-libphobos:%:replace-outfile(-lgphobos libgphobos.a%s)}\
     %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\
     %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\
!    %{force_cpusubtype_ALL:-arch %(darwin_arch)} \
     %{!force_cpusubtype_ALL:-arch %(darwin_subarch)} "\
     LINK_SYSROOT_SPEC \
    "%{mmacosx-version-min=*:-macosx_version_min %*} \
--- 443,458 ----
                       %:replace-outfile(-lobjc libobjc-gnu.a%s); \
                      :%:replace-outfile(-lobjc -lobjc-gnu )}}\
     %{static|static-libgcc|static-libgfortran:%:replace-outfile(-lgfortran libgfortran.a%s)}\
+    %{static|static-libgcc|static-libquadmath:%:replace-outfile(-lquadmath libquadmath.a%s)}\
     %{static|static-libgcc|static-libphobos:%:replace-outfile(-lgphobos libgphobos.a%s)}\
     %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\
     %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\
!    %{static|static-libgm2:%:replace-outfile(-lm2pim libm2pim.a%s)}\
!    %{static|static-libgm2:%:replace-outfile(-lm2iso libm2iso.a%s)}\
!    %{static|static-libgm2:%:replace-outfile(-lm2min libm2min.a%s)}\
!    %{static|static-libgm2:%:replace-outfile(-lm2log libm2log.a%s)}\
!    %{static|static-libgm2:%:replace-outfile(-lm2cor libm2cor.a%s)}\
!   %{force_cpusubtype_ALL:-arch %(darwin_arch)} \
     %{!force_cpusubtype_ALL:-arch %(darwin_subarch)} "\
     LINK_SYSROOT_SPEC \
    "%{mmacosx-version-min=*:-macosx_version_min %*} \
*************** extern GTY(()) int darwin_ms_struct;
*** 460,507 ****
  
  #define LIB_SPEC "%{!static:-lSystem}"
  
! /*
!    Note that by default, -lgcc_eh is not linked against.
!    This is because,in general, we need to unwind through system libraries that
!    are linked with the shared unwinder in libunwind (or libgcc_s for 10.4/5).
  
!    For -static-libgcc: < 10.6, use the unwinder in libgcc_eh (and find
!    the emultls impl. there too).
  
     For -static-libgcc: >= 10.6, the unwinder *still* comes from libSystem and
     we find the emutls impl from lemutls_w. In either case, the builtins etc.
!    are linked from -lgcc.
  
     When we have specified shared-libgcc or any case that might require
     exceptions, we pull the libgcc content (including emulated tls) from
!    -lgcc_s.1 in GCC and the unwinder from /usr/lib/libgcc_s.1 for < 10.6 and
     libSystem for >= 10.6 respectively.
     Otherwise, we just link the emutls/builtins from convenience libs.
  
-    If we need exceptions, prior to 10.3.9, then we have to link the static
-    eh lib, since there's no shared version on the system.
- 
-    In all cases, libgcc_s.1 will be installed with the compiler, or any app
-    built using it, so we can link the builtins and emutls shared on all.
- 
     We have to work around that DYLD_XXXX are disabled in macOS 10.11+ which
     means that any bootstrap trying to use a shared libgcc with a bumped SO-
     name will fail.  This means that we do not accept shared libgcc for these
!    versions.
  
!    For -static-libgcc: >= 10.6, the unwinder *still* comes from libSystem and
!    we find the emutls impl from lemutls_w. In either case, the builtins etc.
!    are linked from -lgcc.
! >
!    Otherwise, we just link the shared version of gcc_s.1.1 and pick up
!    exceptions:
       * Prior to 10.3.9, then we have to link the static eh lib, since there
!        is no shared version on the system.
       * from 10.3.9 to 10.5, from /usr/lib/libgcc_s.1.dylib
       * from 10.6 onwards, from libSystem.dylib
- 
-    In all cases, libgcc_s.1.1 will be installed with the compiler, or any app
-    built using it, so we can link the builtins and emutls shared on all.
  */
  #undef REAL_LIBGCC_SPEC
  #define REAL_LIBGCC_SPEC \
--- 466,501 ----
  
  #define LIB_SPEC "%{!static:-lSystem}"
  
! /* Note that by default, -lgcc_eh (which provides a statically-linked unwinder)
!    is not used. This is because, in general, we need to unwind through system
!    libraries that are linked with the shared unwinder in libunwind (or libgcc_s
!    for OSX 10.4/5 [darwin8/9]).
  
!    When -static-libgcc is forced: < 10.6, use the unwinder in libgcc_eh (and
!    find the emultls impl. there too).
  
     For -static-libgcc: >= 10.6, the unwinder *still* comes from libSystem and
     we find the emutls impl from lemutls_w. In either case, the builtins etc.
!    are linked from -lgcc.  The eh library is still available so that it could
!    be specified explicitly if there is some reason to do so.
  
     When we have specified shared-libgcc or any case that might require
     exceptions, we pull the libgcc content (including emulated tls) from
!    -lgcc_s.1.1 in GCC and the unwinder from /usr/lib/libgcc_s.1 for < 10.6 and
     libSystem for >= 10.6 respectively.
     Otherwise, we just link the emutls/builtins from convenience libs.
  
     We have to work around that DYLD_XXXX are disabled in macOS 10.11+ which
     means that any bootstrap trying to use a shared libgcc with a bumped SO-
     name will fail.  This means that we do not accept shared libgcc for these
!    versions (the primary reason for forcing a shared libgcc was that it
!    contained the unwinder on Darwin8 and 9).
  
!    When using the shared version of gcc_s.1.1 the unwinder is provided by:
       * Prior to 10.3.9, then we have to link the static eh lib, since there
!        is no shared unwinder version on the system.
       * from 10.3.9 to 10.5, from /usr/lib/libgcc_s.1.dylib
       * from 10.6 onwards, from libSystem.dylib
  */
  #undef REAL_LIBGCC_SPEC
  #define REAL_LIBGCC_SPEC \
*************** extern GTY(()) int darwin_ms_struct;
*** 594,607 ****
  "%{static} -arch %(darwin_arch) " \
  ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC
  
- #ifdef HAVE_AS_STABS_DIRECTIVE
- /* We only pass a debug option to the assembler if that supports stabs, since
-    dwarf is not uniformly supported in the assemblers.  */
- #define ASM_DEBUG_SPEC  "%{g*:%{%:debug-level-gt(0):%{!gdwarf*:--gstabs}}}"
- #else
  #define ASM_DEBUG_SPEC  ""
- #endif
- 
  #undef  ASM_DEBUG_OPTION_SPEC
  #define ASM_DEBUG_OPTION_SPEC	""
  
--- 588,594 ----
*************** ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC
*** 615,624 ****
  #define DWARF2_DEBUGGING_INFO 1
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
- #ifdef HAVE_AS_STABS_DIRECTIVE
- #define DBX_DEBUGGING_INFO 1
- #endif
- 
  #define DEBUG_FRAME_SECTION	  "__DWARF,__debug_frame,regular,debug"
  #define DEBUG_INFO_SECTION	  "__DWARF,__debug_info,regular,debug"
  #define DEBUG_ABBREV_SECTION	  "__DWARF,__debug_abbrev,regular,debug"
--- 602,607 ----
*************** ASM_OPTIONS ASM_MMACOSX_VERSION_MIN_SPEC
*** 650,667 ****
                                 ? "__DWARF,__debug_gnu_pubt,regular,debug" \
                                 : "__DWARF,__debug_pubtypes,regular,debug")
  
- /* When generating stabs debugging, use N_BINCL entries.  */
- 
- #define DBX_USE_BINCL
- 
- /* There is no limit to the length of stabs strings.  */
- 
- #define DBX_CONTIN_LENGTH 0
- 
- /* gdb needs a null N_SO at the end of each file for scattered loading.  */
- 
- #define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
- 
  /* GCC's definition of 'one_only' is the same as its definition of 'weak'.  */
  #define MAKE_DECL_ONE_ONLY(DECL) (DECL_WEAK (DECL) = 1)
  
--- 633,638 ----
diff -Nrcpad gcc-12.2.0/gcc/config/darwin.opt gcc-13.1.0/gcc/config/darwin.opt
*** gcc-12.2.0/gcc/config/darwin.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/darwin.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Processor-independent options for Darwin.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Processor-independent options for Darwin.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/dbxcoff.h gcc-13.1.0/gcc/config/dbxcoff.h
*** gcc-12.2.0/gcc/config/dbxcoff.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/dbxcoff.h	Thu Jan  1 00:00:00 1970
***************
*** 1,56 ****
- /* Definitions needed when using stabs embedded in COFF sections.
-    Copyright (C) 1996-2022 Free Software Foundation, Inc.
- 
- This file is part of GCC.
- 
- GCC is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- 
- GCC is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
- /* This file may be included by any COFF target which wishes to
-    support -gstabs generating stabs in sections, as produced by gas
-    and understood by gdb.  */
- 
- /* Output DBX (stabs) debugging information if doing -gstabs.  */
- 
- #define DBX_DEBUGGING_INFO 1
- 
- /* Be function-relative for block and source line stab directives.  */
- 
- #define DBX_BLOCKS_FUNCTION_RELATIVE 1
- 
- /* but, to make this work, functions must appear prior to line info.  */
- 
- #define DBX_FUNCTION_FIRST
- 
- /* Generate a blank trailing N_SO to mark the end of the .o file, since
-    we can't depend upon the linker to mark .o file boundaries with
-    embedded stabs.  */
- 
- #define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
- 
- /* Like block addresses, stabs line numbers are relative to the
-    current function.  */
- 
- #define DBX_LINES_FUNCTION_RELATIVE 1
- 
- /* When generating stabs debugging, use N_BINCL entries.  */
- 
- #undef DBX_USE_BINCL
- #define DBX_USE_BINCL
- 
- /* There is no limit to the length of stabs strings.  */
- 
- #ifndef DBX_CONTIN_LENGTH
- #define DBX_CONTIN_LENGTH 0
- #endif
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/dbxelf.h gcc-13.1.0/gcc/config/dbxelf.h
*** gcc-12.2.0/gcc/config/dbxelf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/dbxelf.h	Thu Jan  1 00:00:00 1970
***************
*** 1,68 ****
- /* Definitions needed when using stabs embedded in ELF sections.
-    Copyright (C) 1999-2022 Free Software Foundation, Inc.
- 
- This file is part of GCC.
- 
- GCC is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- 
- GCC is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- 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/>.  */
- 
- /* This file may be included by any ELF target which wishes to
-    support -gstabs generating stabs in sections, as produced by gas
-    and understood by gdb.  */
- 
- #ifndef GCC_DBX_ELF_H
- #define GCC_DBX_ELF_H
- 
- /* Output DBX (stabs) debugging information if doing -gstabs.  */
- 
- #define DBX_DEBUGGING_INFO 1
- 
- /* Make LBRAC and RBRAC addresses relative to the start of the
-    function.  The native Solaris stabs debugging format works this
-    way, gdb expects it, and it reduces the number of relocation
-    entries...  */
- 
- #define DBX_BLOCKS_FUNCTION_RELATIVE 1
- 
- /* ... but, to make this work, functions must appear prior to line info.  */
- 
- #define DBX_FUNCTION_FIRST
- 
- /* When generating stabs debugging, use N_BINCL entries.  */
- 
- #define DBX_USE_BINCL
- 
- /* There is no limit to the length of stabs strings.  */
- 
- #ifndef DBX_CONTIN_LENGTH
- #define DBX_CONTIN_LENGTH 0
- #endif
- 
- /* Like block addresses, stabs line numbers are relative to the
-    current function.  */
- 
- #define DBX_LINES_FUNCTION_RELATIVE 1
- 
- /* Generate a blank trailing N_SO to mark the end of the .o file, since
-    we can't depend upon the linker to mark .o file boundaries with
-    embedded stabs.  */
- 
- #define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
- 
- #endif /* ! GCC_DBX_ELF_H */
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/default-c.cc gcc-13.1.0/gcc/config/default-c.cc
*** gcc-12.2.0/gcc/config/default-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/default-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default C-family target hooks initializer.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default C-family target hooks initializer.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/default-d.cc gcc-13.1.0/gcc/config/default-d.cc
*** gcc-12.2.0/gcc/config/default-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/default-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default D language target hooks initializer.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* Default D language target hooks initializer.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  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
*************** along with GCC; see the file COPYING3.
*** 18,26 ****
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
- #include "memmodel.h"
  #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
  struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
--- 18,28 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
+ /* Do not include tm.h or tm_p.h here; definitions needed by the target
+    architecture to initialize targetdm should instead be added to tm_d.h.  */
+ 
  struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/dragonfly-d.cc gcc-13.1.0/gcc/config/dragonfly-d.cc
*** gcc-12.2.0/gcc/config/dragonfly-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/dragonfly-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* DragonFly support needed only by D front-end.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* DragonFly support needed only by D front-end.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  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
*************** along with GCC; see the file COPYING3.
*** 18,23 ****
--- 18,24 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "tm.h"
  #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
diff -Nrcpad gcc-12.2.0/gcc/config/dragonfly-stdint.h gcc-13.1.0/gcc/config/dragonfly-stdint.h
*** gcc-12.2.0/gcc/config/dragonfly-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/dragonfly-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types for DragonFly systems.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for <stdint.h> types for DragonFly systems.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/dragonfly.h gcc-13.1.0/gcc/config/dragonfly.h
*** gcc-12.2.0/gcc/config/dragonfly.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/dragonfly.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all DragonFly targets.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
--- 1,5 ----
  /* Base configuration file for all DragonFly targets.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/dragonfly.opt gcc-13.1.0/gcc/config/dragonfly.opt
*** gcc-12.2.0/gcc/config/dragonfly.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/dragonfly.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; DragonFly BSD options.
  
! ; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; DragonFly BSD options.
  
! ; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/elfos.h gcc-13.1.0/gcc/config/elfos.h
*** gcc-12.2.0/gcc/config/elfos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/elfos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* elfos.h  --  operating system specific defines to be used when
     targeting GCC for some generic ELF system
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
  
  This file is part of GCC.
--- 1,6 ----
  /* elfos.h  --  operating system specific defines to be used when
     targeting GCC for some generic ELF system
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Based on svr4.h contributed by Ron Guilmette (rfg@netcom.com).
  
  This file is part of GCC.
*************** see the files COPYING3 and COPYING.RUNTI
*** 482,490 ****
  
  #undef TARGET_LIBC_HAS_FUNCTION
  #define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
- 
- /* ELF support needed only by D front-end.  */
- 
- #define TARGET_D_MINFO_SECTION "minfo"
- #define TARGET_D_MINFO_START_NAME "__start_minfo"
- #define TARGET_D_MINFO_END_NAME "__stop_minfo"
--- 482,484 ----
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/constraints.md gcc-13.1.0/gcc/config/epiphany/constraints.md
*** gcc-12.2.0/gcc/config/epiphany/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Adaptiva epiphany
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Adaptiva epiphany
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany-modes.def gcc-13.1.0/gcc/config/epiphany/epiphany-modes.def
*** gcc-12.2.0/gcc/config/epiphany/epiphany-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Adapteva Epiphany cpu.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Adapteva Epiphany cpu.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany-protos.h gcc-13.1.0/gcc/config/epiphany/epiphany-protos.h
*** gcc-12.2.0/gcc/config/epiphany/epiphany-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, EPIPHANY cpu.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, EPIPHANY cpu.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany-sched.md gcc-13.1.0/gcc/config/epiphany/epiphany-sched.md
*** gcc-12.2.0/gcc/config/epiphany/epiphany-sched.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany-sched.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA scheduling description for EPIPHANY
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; DFA scheduling description for EPIPHANY
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany.cc gcc-13.1.0/gcc/config/epiphany/epiphany.cc
*** gcc-12.2.0/gcc/config/epiphany/epiphany.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on the EPIPHANY cpu.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on the EPIPHANY cpu.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
*************** epiphany_setup_incoming_varargs (cumulat
*** 727,737 ****
    machine_function_t *mf = MACHINE_FUNCTION (cfun);
  
    /* All BLKmode values are passed by reference.  */
!   gcc_assert (arg.mode != BLKmode);
  
    next_cum = *get_cumulative_args (cum);
!   next_cum = (ROUND_ADVANCE_CUM (next_cum, arg.mode, arg.type)
! 	      + ROUND_ADVANCE_ARG (arg.mode, arg.type));
    first_anon_arg = next_cum;
  
    if (first_anon_arg < MAX_EPIPHANY_PARM_REGS && !no_rtl)
--- 727,739 ----
    machine_function_t *mf = MACHINE_FUNCTION (cfun);
  
    /* All BLKmode values are passed by reference.  */
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     gcc_assert (arg.mode != BLKmode);
  
    next_cum = *get_cumulative_args (cum);
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     next_cum = (ROUND_ADVANCE_CUM (next_cum, arg.mode, arg.type)
! 		+ ROUND_ADVANCE_ARG (arg.mode, arg.type));
    first_anon_arg = next_cum;
  
    if (first_anon_arg < MAX_EPIPHANY_PARM_REGS && !no_rtl)
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany.h gcc-13.1.0/gcc/config/epiphany/epiphany.h
*** gcc-12.2.0/gcc/config/epiphany/epiphany.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Argonaut EPIPHANY cpu.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Argonaut EPIPHANY cpu.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
*************** do \
*** 795,808 ****
  
  /* Debugging information.  */
  
! /* Generate DBX and DWARF debugging information.  */
! #define DBX_DEBUGGING_INFO 1
! 
  #undef PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
- 
- /* Turn off splitting of long stabs.  */
- #define DBX_CONTIN_LENGTH 0
  
  /* Miscellaneous.  */
  
--- 795,803 ----
  
  /* Debugging information.  */
  
! /* Generate DWARF debugging information.  */
  #undef PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
  /* Miscellaneous.  */
  
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany.md gcc-13.1.0/gcc/config/epiphany/epiphany.md
*** gcc-12.2.0/gcc/config/epiphany/epiphany.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of the Adaptiva epiphany cpu for GNU C compiler
! ;; Copyright (C) 1994-2022 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description of the Adaptiva epiphany cpu for GNU C compiler
! ;; Copyright (C) 1994-2023 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany.opt gcc-13.1.0/gcc/config/epiphany/epiphany.opt
*** gcc-12.2.0/gcc/config/epiphany/epiphany.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Adapteva EPIPHANY port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Options for the Adapteva EPIPHANY port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/epiphany_intrinsics.h gcc-13.1.0/gcc/config/epiphany/epiphany_intrinsics.h
*** gcc-12.2.0/gcc/config/epiphany/epiphany_intrinsics.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/epiphany_intrinsics.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Epiphany intrinsic functions
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Epiphany intrinsic functions
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/mode-switch-use.cc gcc-13.1.0/gcc/config/epiphany/mode-switch-use.cc
*** gcc-12.2.0/gcc/config/epiphany/mode-switch-use.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/mode-switch-use.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Insert USEs in instructions that require mode switching.
     This should probably be merged into mode-switching.cc .
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,6 ----
  /* Insert USEs in instructions that require mode switching.
     This should probably be merged into mode-switching.cc .
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/predicates.md gcc-13.1.0/gcc/config/epiphany/predicates.md
*** gcc-12.2.0/gcc/config/epiphany/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for code generation on the EPIPHANY cpu.
! ;; Copyright (C) 1994-2022 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for code generation on the EPIPHANY cpu.
! ;; Copyright (C) 1994-2023 Free Software Foundation, Inc.
  ;; Contributed by Embecosm on behalf of Adapteva, Inc.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/resolve-sw-modes.cc gcc-13.1.0/gcc/config/epiphany/resolve-sw-modes.cc
*** gcc-12.2.0/gcc/config/epiphany/resolve-sw-modes.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/resolve-sw-modes.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Mode switching cleanup pass for the EPIPHANY cpu.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Mode switching cleanup pass for the EPIPHANY cpu.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Embecosm on behalf of Adapteva, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/rtems.h gcc-13.1.0/gcc/config/epiphany/rtems.h
*** gcc-12.2.0/gcc/config/epiphany/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RTEMS based EPIPHANY systems.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RTEMS based EPIPHANY systems.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/epiphany/t-epiphany gcc-13.1.0/gcc/config/epiphany/t-epiphany
*** gcc-12.2.0/gcc/config/epiphany/t-epiphany	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/epiphany/t-epiphany	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1997-2022 Free Software Foundation, Inc.
  # Contributed by Embecosm on behalf of Adapteva, Inc.
  #
  # This file is part of GCC.
--- 1,4 ----
! # Copyright (C) 1997-2023 Free Software Foundation, Inc.
  # Contributed by Embecosm on behalf of Adapteva, Inc.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/flat.h gcc-13.1.0/gcc/config/flat.h
*** gcc-12.2.0/gcc/config/flat.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/flat.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Defines to be used for targets that support flat executables.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Defines to be used for targets that support flat executables.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/constraints.md gcc-13.1.0/gcc/config/fr30/constraints.md
*** gcc-12.2.0/gcc/config/fr30/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for the FR30.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Constraint definitions for the FR30.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/fr30-protos.h gcc-13.1.0/gcc/config/fr30/fr30-protos.h
*** gcc-12.2.0/gcc/config/fr30/fr30-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/fr30-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for fr30.cc functions used in the md file & elsewhere.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for fr30.cc functions used in the md file & elsewhere.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/fr30.cc gcc-13.1.0/gcc/config/fr30/fr30.cc
*** gcc-12.2.0/gcc/config/fr30/fr30.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/fr30.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* FR30 specific functions.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
     This file is part of GCC.
--- 1,5 ----
  /* FR30 specific functions.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
     This file is part of GCC.
*************** fr30_setup_incoming_varargs (cumulative_
*** 471,486 ****
      = get_cumulative_args (arg_regs_used_so_far_v);
    int size;
  
!   /* All BLKmode values are passed by reference.  */
!   gcc_assert (arg.mode != BLKmode);
  
!   /* ??? This run-time test as well as the code inside the if
!      statement is probably unnecessary.  */
!   if (targetm.calls.strict_argument_naming (arg_regs_used_so_far_v))
!     /* If TARGET_STRICT_ARGUMENT_NAMING returns true, then the last named
!        arg must not be treated as an anonymous arg.  */
!     /* ??? This is a pointer increment, which makes no sense.  */
!     arg_regs_used_so_far += fr30_num_arg_regs (arg);
  
    size = FR30_NUM_ARG_REGS - (* arg_regs_used_so_far);
  
--- 471,489 ----
      = get_cumulative_args (arg_regs_used_so_far_v);
    int size;
  
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     {
!       /* All BLKmode values are passed by reference.  */
!       gcc_assert (arg.mode != BLKmode);
  
!       /* ??? This run-time test as well as the code inside the if
! 	 statement is probably unnecessary.  */
!       if (targetm.calls.strict_argument_naming (arg_regs_used_so_far_v))
! 	/* If TARGET_STRICT_ARGUMENT_NAMING returns true, then the last named
! 	   arg must not be treated as an anonymous arg.  */
! 	/* ??? This is a pointer increment, which makes no sense.  */
! 	arg_regs_used_so_far += fr30_num_arg_regs (arg);
!     }
  
    size = FR30_NUM_ARG_REGS - (* arg_regs_used_so_far);
  
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/fr30.h gcc-13.1.0/gcc/config/fr30/fr30.h
*** gcc-12.2.0/gcc/config/fr30/fr30.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/fr30.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /*{{{  Comment.  */ 
  
  /* Definitions of FR30 target. 
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
  This file is part of GCC.
--- 1,7 ----
  /*{{{  Comment.  */ 
  
  /* Definitions of FR30 target. 
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/fr30.md gcc-13.1.0/gcc/config/fr30/fr30.md
*** gcc-12.2.0/gcc/config/fr30/fr30.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/fr30.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; FR30 machine description.
! ;; Copyright (C) 1998-2022 Free Software Foundation, Inc.
  ;; Contributed by Cygnus Solutions.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; FR30 machine description.
! ;; Copyright (C) 1998-2023 Free Software Foundation, Inc.
  ;; Contributed by Cygnus Solutions.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/fr30.opt gcc-13.1.0/gcc/config/fr30/fr30.opt
*** gcc-12.2.0/gcc/config/fr30/fr30.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/fr30.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the FR30 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the FR30 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/fr30/predicates.md gcc-13.1.0/gcc/config/fr30/predicates.md
*** gcc-12.2.0/gcc/config/fr30/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fr30/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for FR30.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for FR30.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/freebsd-d.cc gcc-13.1.0/gcc/config/freebsd-d.cc
*** gcc-12.2.0/gcc/config/freebsd-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/freebsd-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* FreeBSD support needed only by D front-end.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* FreeBSD support needed only by D front-end.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  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
*************** along with GCC; see the file COPYING3.
*** 18,26 ****
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
- #include "memmodel.h"
  #include "tm.h"
! #include "tm_p.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
--- 18,25 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/freebsd-nthr.h gcc-13.1.0/gcc/config/freebsd-nthr.h
*** gcc-12.2.0/gcc/config/freebsd-nthr.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/freebsd-nthr.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* FreeBSD configuration setting for FreeBSD systems.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Loren J. Rittle <ljrittle@acm.org>
  
  This file is part of GCC.
--- 1,5 ----
  /* FreeBSD configuration setting for FreeBSD systems.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Loren J. Rittle <ljrittle@acm.org>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/freebsd-spec.h gcc-13.1.0/gcc/config/freebsd-spec.h
*** gcc-12.2.0/gcc/config/freebsd-spec.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/freebsd-spec.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/freebsd-stdint.h gcc-13.1.0/gcc/config/freebsd-stdint.h
*** gcc-12.2.0/gcc/config/freebsd-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/freebsd-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types for FreeBSD systems.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for <stdint.h> types for FreeBSD systems.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by Gerald Pfeifer <gerald@pfeifer.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/freebsd.h gcc-13.1.0/gcc/config/freebsd.h
*** gcc-12.2.0/gcc/config/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all FreeBSD targets.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/freebsd.opt gcc-13.1.0/gcc/config/freebsd.opt
*** gcc-12.2.0/gcc/config/freebsd.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/freebsd.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; FreeBSD options.
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; FreeBSD options.
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/frv/constraints.md gcc-13.1.0/gcc/config/frv/constraints.md
*** gcc-12.2.0/gcc/config/frv/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for FRV.
! ;; Copyright (C) 2001-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for FRV.
! ;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv-asm.h gcc-13.1.0/gcc/config/frv/frv-asm.h
*** gcc-12.2.0/gcc/config/frv/frv-asm.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv-asm.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Assembler Support.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Assembler Support.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv-modes.def gcc-13.1.0/gcc/config/frv/frv-modes.def
*** gcc-12.2.0/gcc/config/frv/frv-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for FRV.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for FRV.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv-opts.h gcc-13.1.0/gcc/config/frv/frv-opts.h
*** gcc-12.2.0/gcc/config/frv/frv-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Frv option-handling defitions.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Frv option-handling defitions.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv-protos.h gcc-13.1.0/gcc/config/frv/frv-protos.h
*** gcc-12.2.0/gcc/config/frv/frv-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Frv prototypes.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Frv prototypes.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv.cc gcc-13.1.0/gcc/config/frv/frv.cc
*** gcc-12.2.0/gcc/config/frv/frv.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
*************** frv_setup_incoming_varargs (cumulative_a
*** 2104,2110 ****
  {
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
  
!   if (TARGET_DEBUG_ARG)
      fprintf (stderr,
  	     "setup_vararg: words = %2d, mode = %4s, pretend_size = %d, second_time = %d\n",
  	     *cum, GET_MODE_NAME (arg.mode), *pretend_size, second_time);
--- 2104,2111 ----
  {
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
  
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
!       && TARGET_DEBUG_ARG)
      fprintf (stderr,
  	     "setup_vararg: words = %2d, mode = %4s, pretend_size = %d, second_time = %d\n",
  	     *cum, GET_MODE_NAME (arg.mode), *pretend_size, second_time);
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv.h gcc-13.1.0/gcc/config/frv/frv.h
*** gcc-12.2.0/gcc/config/frv/frv.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target macros for the FRV port of GCC.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target macros for the FRV port of GCC.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
*************** fprintf (STREAM, "\t.word .L%d\n", VALUE
*** 1737,1760 ****
  
  /* Macros Affecting all Debug Formats.  */
  
! /* A C expression that returns the DBX register number for the compiler
     register number REGNO.  In simple cases, the value of this expression may be
     REGNO itself.  But sometimes there are some registers that the compiler
!    knows about and DBX does not, or vice versa.  In such cases, some register
!    may need to have one number in the compiler and another for DBX.
  
     If two registers have consecutive numbers inside GCC, and they can be
     used as a pair to hold a multiword value, then they *must* have consecutive
!    numbers after renumbering with `DBX_REGISTER_NUMBER'.  Otherwise, debuggers
     will be unable to access such a pair, because they expect register pairs to
     be consecutive in their own numbering scheme.
  
!    If you find yourself defining `DBX_REGISTER_NUMBER' in way that does not
     preserve register pairs, then what you must do instead is redefine the
     actual register numbering scheme.
  
     This declaration is required.  */
! #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
  
  #undef  PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
--- 1737,1760 ----
  
  /* Macros Affecting all Debug Formats.  */
  
! /* A C expression that returns the debugger register number for the compiler
     register number REGNO.  In simple cases, the value of this expression may be
     REGNO itself.  But sometimes there are some registers that the compiler
!    knows about and debugger does not, or vice versa.  In such cases, some register
!    may need to have one number in the compiler and another for debugger.
  
     If two registers have consecutive numbers inside GCC, and they can be
     used as a pair to hold a multiword value, then they *must* have consecutive
!    numbers after renumbering with `DEBUGGER_REGNO'.  Otherwise, debuggers
     will be unable to access such a pair, because they expect register pairs to
     be consecutive in their own numbering scheme.
  
!    If you find yourself defining `DEBUGGER_REGNO' in way that does not
     preserve register pairs, then what you must do instead is redefine the
     actual register numbering scheme.
  
     This declaration is required.  */
! #define DEBUGGER_REGNO(REGNO) (REGNO)
  
  #undef  PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv.md gcc-13.1.0/gcc/config/frv/frv.md
*** gcc-12.2.0/gcc/config/frv/frv.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Frv Machine Description
! ;; Copyright (C) 1999-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Frv Machine Description
! ;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/frv/frv.opt gcc-13.1.0/gcc/config/frv/frv.opt
*** gcc-12.2.0/gcc/config/frv/frv.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/frv.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the FR-V port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the FR-V port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/frv/linux.h gcc-13.1.0/gcc/config/frv/linux.h
*** gcc-12.2.0/gcc/config/frv/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target macros for the FRV Linux port of GCC.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target macros for the FRV Linux port of GCC.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/frv/predicates.md gcc-13.1.0/gcc/config/frv/predicates.md
*** gcc-12.2.0/gcc/config/frv/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Frv.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Frv.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/frv/t-frv gcc-13.1.0/gcc/config/frv/t-frv
*** gcc-12.2.0/gcc/config/frv/t-frv	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/t-frv	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/frv/t-linux gcc-13.1.0/gcc/config/frv/t-linux
*** gcc-12.2.0/gcc/config/frv/t-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/frv/t-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/constraints.md gcc-13.1.0/gcc/config/ft32/constraints.md
*** gcc-12.2.0/gcc/config/ft32/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for FT32
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for FT32
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/ft32-protos.h gcc-13.1.0/gcc/config/ft32/ft32-protos.h
*** gcc-12.2.0/gcc/config/ft32/ft32-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/ft32-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for ft32.cc functions used in the md file & elsewhere.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for ft32.cc functions used in the md file & elsewhere.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/ft32.cc gcc-13.1.0/gcc/config/ft32/ft32.cc
*** gcc-12.2.0/gcc/config/ft32/ft32.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/ft32.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Code for ft32
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Code for ft32
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
*************** ft32_setup_incoming_varargs (cumulative_
*** 634,641 ****
  			     int *pretend_size, int no_rtl ATTRIBUTE_UNUSED)
  {
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
!   int named_size =
!     GET_MODE_SIZE (SImode) * (*cum - FT32_R0) + GET_MODE_SIZE (arg.mode);
  
    if (named_size < 24)
      *pretend_size = 24 - named_size;
--- 634,643 ----
  			     int *pretend_size, int no_rtl ATTRIBUTE_UNUSED)
  {
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
!   int named_size = 0;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     named_size =
!       GET_MODE_SIZE (SImode) * (*cum - FT32_R0) + GET_MODE_SIZE (arg.mode);
  
    if (named_size < 24)
      *pretend_size = 24 - named_size;
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/ft32.h gcc-13.1.0/gcc/config/ft32/ft32.h
*** gcc-12.2.0/gcc/config/ft32/ft32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/ft32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Definitions for ft32.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Definitions for ft32.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by FTDI <support@ftdi.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/ft32.md gcc-13.1.0/gcc/config/ft32/ft32.md
*** gcc-12.2.0/gcc/config/ft32/ft32.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/ft32.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for FT32
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for FT32
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/ft32.opt gcc-13.1.0/gcc/config/ft32/ft32.opt
*** gcc-12.2.0/gcc/config/ft32/ft32.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/ft32.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the FT32 port of the compiler.
  
! ; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the FT32 port of the compiler.
  
! ; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/predicates.md gcc-13.1.0/gcc/config/ft32/predicates.md
*** gcc-12.2.0/gcc/config/ft32/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for FT32
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for FT32
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;; Contributed by FTDI <support@ftdi.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ft32/t-ft32 gcc-13.1.0/gcc/config/ft32/t-ft32
*** gcc-12.2.0/gcc/config/ft32/t-ft32	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ft32/t-ft32	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for ft32
! # Copyright (C) 2015-2022 Free Software Foundation, Inc.
  # Contributed by FTDI <support@ftdi.com>
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for ft32
! # Copyright (C) 2015-2023 Free Software Foundation, Inc.
  # Contributed by FTDI <support@ftdi.com>
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/fuchsia.h gcc-13.1.0/gcc/config/fuchsia.h
*** gcc-12.2.0/gcc/config/fuchsia.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fuchsia.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all Fuchsia targets.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Contributed by Google.
  
  This file is part of GCC.
--- 1,5 ----
  /* Base configuration file for all Fuchsia targets.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Contributed by Google.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/fused-madd.opt gcc-13.1.0/gcc/config/fused-madd.opt
*** gcc-12.2.0/gcc/config/fused-madd.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/fused-madd.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; -mfused-madd option (some targets only).
  ;
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; -mfused-madd option (some targets only).
  ;
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/g.opt gcc-13.1.0/gcc/config/g.opt
*** gcc-12.2.0/gcc/config/g.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/g.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; -G option (small data, some targets only).
  
! ; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; -G option (small data, some targets only).
  
! ; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/constraints.md gcc-13.1.0/gcc/config/gcn/constraints.md
*** gcc-12.2.0/gcc/config/gcn/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for GCN.
! ;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for GCN.
! ;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/driver-gcn.cc gcc-13.1.0/gcc/config/gcn/driver-gcn.cc
*** gcc-12.2.0/gcc/config/gcn/driver-gcn.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/driver-gcn.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-builtins.def gcc-13.1.0/gcc/config/gcn/gcn-builtins.def
*** gcc-12.2.0/gcc/config/gcn/gcn-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
*************** DEF_BUILTIN (SQRTF, 3 /*CODE_FOR_sqrtf *
*** 59,64 ****
--- 59,114 ----
  	     _A2 (GCN_BTI_SF, GCN_BTI_SF),
  	     gcn_expand_builtin_1)
  
+ DEF_BUILTIN (FABSVF, 3 /*CODE_FOR_fabsvf */,
+ 	     "fabsvf", B_INSN,
+ 	     _A2 (GCN_BTI_V64SF, GCN_BTI_V64SF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FABSV, 3 /*CODE_FOR_fabsv */,
+ 	     "fabsv", B_INSN,
+ 	     _A2 (GCN_BTI_V64DF, GCN_BTI_V64DF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FLOORVF, 3 /*CODE_FOR_floorvf */,
+ 	     "floorvf", B_INSN,
+ 	     _A2 (GCN_BTI_V64SF, GCN_BTI_V64SF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FLOORV, 3 /*CODE_FOR_floorv */,
+ 	     "floorv", B_INSN,
+ 	     _A2 (GCN_BTI_V64DF, GCN_BTI_V64DF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (LDEXPVF, 3 /*CODE_FOR_ldexpvf */,
+ 	     "ldexpvf", B_INSN,
+ 	     _A3 (GCN_BTI_V64SF, GCN_BTI_V64SF, GCN_BTI_V64SI),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (LDEXPV, 3 /*CODE_FOR_ldexpv */,
+ 	     "ldexpv", B_INSN,
+ 	     _A3 (GCN_BTI_V64DF, GCN_BTI_V64DF, GCN_BTI_V64SI),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FREXPVF_EXP, 3 /*CODE_FOR_frexpvf_exp */,
+ 	     "frexpvf_exp", B_INSN,
+ 	     _A2 (GCN_BTI_V64SI, GCN_BTI_V64SF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FREXPVF_MANT, 3 /*CODE_FOR_frexpvf_mant */,
+ 	     "frexpvf_mant", B_INSN,
+ 	     _A2 (GCN_BTI_V64SF, GCN_BTI_V64SF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FREXPV_EXP, 3 /*CODE_FOR_frexpv_exp */,
+ 	     "frexpv_exp", B_INSN,
+ 	     _A2 (GCN_BTI_V64SI, GCN_BTI_V64DF),
+ 	     gcn_expand_builtin_1)
+ 
+ DEF_BUILTIN (FREXPV_MANT, 3 /*CODE_FOR_frexpv_mant */,
+ 	     "frexpv_mant", B_INSN,
+ 	     _A2 (GCN_BTI_V64DF, GCN_BTI_V64DF),
+ 	     gcn_expand_builtin_1)
+ 
  DEF_BUILTIN (CMP_SWAP, -1,
  	    "cmp_swap", B_INSN,
  	    _A4 (GCN_BTI_UINT, GCN_BTI_VOIDPTR, GCN_BTI_UINT, GCN_BTI_UINT),
*************** DEF_BUILTIN (ACC_SINGLE_COPY_END, -1, "s
*** 108,113 ****
--- 158,171 ----
  DEF_BUILTIN (ACC_BARRIER, -1, "acc_barrier", B_INSN, _A1 (GCN_BTI_VOID),
  	     gcn_expand_builtin_1)
  
+ /* Kernel inputs.  */
+ 
+ DEF_BUILTIN (FIRST_CALL_THIS_THREAD_P, -1, "first_call_this_thread_p", B_INSN,
+ 	     _A1 (GCN_BTI_BOOL), gcn_expand_builtin_1)
+ DEF_BUILTIN (KERNARG_PTR, -1, "kernarg_ptr", B_INSN, _A1 (GCN_BTI_VOIDPTR),
+ 	     gcn_expand_builtin_1)
+ DEF_BUILTIN (GET_STACK_LIMIT, -1, "get_stack_limit", B_INSN,
+ 	     _A1 (GCN_BTI_VOIDPTR), gcn_expand_builtin_1)
  
  #undef _A1
  #undef _A2
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-hsa.h gcc-13.1.0/gcc/config/gcn/gcn-hsa.h
*** gcc-12.2.0/gcc/config/gcn/gcn-hsa.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-hsa.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
*************** extern unsigned int gcn_local_sym_hash (
*** 75,142 ****
     supported for gcn.  */
  #define GOMP_SELF_SPECS ""
  
! #ifdef HAVE_GCN_XNACK_FIJI
! #define X_FIJI
! #else
! #define X_FIJI "!march=*:;march=fiji:;"
! #endif
! #ifdef HAVE_GCN_XNACK_GFX900
! #define X_900
! #else
! #define X_900 "march=gfx900:;"
! #endif
! #ifdef HAVE_GCN_XNACK_GFX906
! #define X_906
! #else
! #define X_906 "march=gfx906:;"
! #endif
! #ifdef HAVE_GCN_XNACK_GFX908
! #define X_908
! #else
! #define X_908 "march=gfx908:;"
! #endif
! 
! /* These targets can't have SRAM-ECC, even if a broken assembler allows it.  */
! #define S_FIJI "!march=*:;march=fiji:;"
! #define S_900 "march=gfx900:;"
! #define S_906 "march=gfx906:;"
! #ifdef HAVE_GCN_SRAM_ECC_GFX908
! #define S_908
! #else
! #define S_908 "march=gfx908:;"
! #endif
  
- #ifdef HAVE_GCN_ASM_V3_SYNTAX
- #define SRAMOPT "!msram-ecc=off:-mattr=+sram-ecc;:-mattr=-sram-ecc"
- #endif
- #ifdef HAVE_GCN_ASM_V4_SYNTAX
  /* In HSACOv4 no attribute setting means the binary supports "any" hardware
     configuration.  The name of the attribute also changed.  */
  #define SRAMOPT "msram-ecc=on:-mattr=+sramecc;msram-ecc=off:-mattr=-sramecc"
- #endif
- #if !defined(SRAMOPT) && !defined(IN_LIBGCC2)
- #error "No assembler syntax configured"
- #endif
- 
- #ifdef HAVE_GCN_ASM_V4_SYNTAX
- /* FIJI cards don't seem to support drivers new enough to allow HSACOv4.  */
- #define HSACO3_SELECT_OPT \
-     "%{!march=*|march=fiji:--amdhsa-code-object-version=3} "
- #else
- #define HSACO3_SELECT_OPT
- #endif
- 
- /* These targets can't have SRAM-ECC, even if a broken assembler allows it.  */
- #define DRIVER_SELF_SPECS \
-   "%{march=fiji|march=gfx900|march=gfx906:%{!msram-ecc=*:-msram-ecc=off}}"
  
  /* Use LLVM assembler and linker options.  */
  #define ASM_SPEC  "-triple=amdgcn--amdhsa "  \
  		  "%:last_arg(%{march=*:-mcpu=%*}) " \
! 		  HSACO3_SELECT_OPT \
! 		  "%{" X_FIJI X_900 X_906 X_908 \
! 		     "mxnack:-mattr=+xnack;:-mattr=-xnack} " \
! 		  "%{" S_FIJI S_900 S_906 S_908 SRAMOPT "} " \
  		  "-filetype=obj"
  #define LINK_SPEC "--pie --export-dynamic"
  #define LIB_SPEC  "-lc"
--- 75,93 ----
     supported for gcn.  */
  #define GOMP_SELF_SPECS ""
  
! #define NO_XNACK "!march=*:;march=fiji:;"
! #define NO_SRAM_ECC "!march=*:;march=fiji:;march=gfx900:;march=gfx906:;"
  
  /* In HSACOv4 no attribute setting means the binary supports "any" hardware
     configuration.  The name of the attribute also changed.  */
  #define SRAMOPT "msram-ecc=on:-mattr=+sramecc;msram-ecc=off:-mattr=-sramecc"
  
  /* Use LLVM assembler and linker options.  */
  #define ASM_SPEC  "-triple=amdgcn--amdhsa "  \
  		  "%:last_arg(%{march=*:-mcpu=%*}) " \
! 		  "%{!march=*|march=fiji:--amdhsa-code-object-version=3} " \
! 		  "%{" NO_XNACK "mxnack:-mattr=+xnack;:-mattr=-xnack} " \
! 		  "%{" NO_SRAM_ECC SRAMOPT "} " \
  		  "-filetype=obj"
  #define LINK_SPEC "--pie --export-dynamic"
  #define LIB_SPEC  "-lc"
*************** extern const char *last_arg_spec_functio
*** 162,165 ****
  #define DWARF2_DEBUGGING_INFO      1
  #define DWARF2_ASM_LINE_DEBUG_INFO 1
  #define EH_FRAME_THROUGH_COLLECT2  1
! #define DBX_REGISTER_NUMBER(REGNO) gcn_dwarf_register_number (REGNO)
--- 113,116 ----
  #define DWARF2_DEBUGGING_INFO      1
  #define DWARF2_ASM_LINE_DEBUG_INFO 1
  #define EH_FRAME_THROUGH_COLLECT2  1
! #define DEBUGGER_REGNO(REGNO) gcn_dwarf_register_number (REGNO)
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-modes.def gcc-13.1.0/gcc/config/gcn/gcn-modes.def
*** gcc-12.2.0/gcc/config/gcn/gcn-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
*************** VECTOR_MODE (FLOAT, HF, 64);    /*		  V6
*** 29,34 ****
--- 29,76 ----
  VECTOR_MODE (FLOAT, SF, 64);    /*		  V64SF */
  VECTOR_MODE (FLOAT, DF, 64);    /*		  V64DF */
  
+ /* Artificial vector modes, for when vector masking doesn't work (yet).  */
+ VECTOR_MODE (INT, QI, 32);      /*		  V32QI */
+ VECTOR_MODE (INT, HI, 32);      /*		  V32HI */
+ VECTOR_MODE (INT, SI, 32);      /*		  V32SI */
+ VECTOR_MODE (INT, DI, 32);      /*		  V32DI */
+ VECTOR_MODE (INT, TI, 32);      /*		  V32TI */
+ VECTOR_MODE (FLOAT, HF, 32);    /*		  V32HF */
+ VECTOR_MODE (FLOAT, SF, 32);    /*		  V32SF */
+ VECTOR_MODE (FLOAT, DF, 32);    /*		  V32DF */
+ VECTOR_MODE (INT, QI, 16);      /*		  V16QI */
+ VECTOR_MODE (INT, HI, 16);      /*		  V16HI */
+ VECTOR_MODE (INT, SI, 16);      /*		  V16SI */
+ VECTOR_MODE (INT, DI, 16);      /*		  V16DI */
+ VECTOR_MODE (INT, TI, 16);      /*		  V16TI */
+ VECTOR_MODE (FLOAT, HF, 16);    /*		  V16HF */
+ VECTOR_MODE (FLOAT, SF, 16);    /*		  V16SF */
+ VECTOR_MODE (FLOAT, DF, 16);    /*		  V16DF */
+ VECTOR_MODE (INT, QI, 8);      /*		  V8QI */
+ VECTOR_MODE (INT, HI, 8);      /*		  V8HI */
+ VECTOR_MODE (INT, SI, 8);      /*		  V8SI */
+ VECTOR_MODE (INT, DI, 8);      /*		  V8DI */
+ VECTOR_MODE (INT, TI, 8);      /*		  V8TI */
+ VECTOR_MODE (FLOAT, HF, 8);    /*		  V8HF */
+ VECTOR_MODE (FLOAT, SF, 8);    /*		  V8SF */
+ VECTOR_MODE (FLOAT, DF, 8);    /*		  V8DF */
+ VECTOR_MODE (INT, QI, 4);      /*		  V4QI */
+ VECTOR_MODE (INT, HI, 4);      /*		  V4HI */
+ VECTOR_MODE (INT, SI, 4);      /*		  V4SI */
+ VECTOR_MODE (INT, DI, 4);      /*		  V4DI */
+ VECTOR_MODE (INT, TI, 4);      /*		  V4TI */
+ VECTOR_MODE (FLOAT, HF, 4);    /*		  V4HF */
+ VECTOR_MODE (FLOAT, SF, 4);    /*		  V4SF */
+ VECTOR_MODE (FLOAT, DF, 4);    /*		  V4DF */
+ VECTOR_MODE (INT, QI, 2);      /*		  V2QI */
+ VECTOR_MODE (INT, HI, 2);      /*		  V2HI */
+ VECTOR_MODE (INT, SI, 2);      /*		  V2SI */
+ VECTOR_MODE (INT, DI, 2);      /*		  V2DI */
+ VECTOR_MODE (INT, TI, 2);      /*		  V2TI */
+ VECTOR_MODE (FLOAT, HF, 2);    /*		  V2HF */
+ VECTOR_MODE (FLOAT, SF, 2);    /*		  V2SF */
+ VECTOR_MODE (FLOAT, DF, 2);    /*		  V2DF */
+ 
  /* Vector units handle reads independently and thus no large alignment
     needed.  */
  ADJUST_ALIGNMENT (V64QI, 1);
*************** ADJUST_ALIGNMENT (V64TI, 16);
*** 39,41 ****
--- 81,123 ----
  ADJUST_ALIGNMENT (V64HF, 2);
  ADJUST_ALIGNMENT (V64SF, 4);
  ADJUST_ALIGNMENT (V64DF, 8);
+ ADJUST_ALIGNMENT (V32QI, 1);
+ ADJUST_ALIGNMENT (V32HI, 2);
+ ADJUST_ALIGNMENT (V32SI, 4);
+ ADJUST_ALIGNMENT (V32DI, 8);
+ ADJUST_ALIGNMENT (V32TI, 16);
+ ADJUST_ALIGNMENT (V32HF, 2);
+ ADJUST_ALIGNMENT (V32SF, 4);
+ ADJUST_ALIGNMENT (V32DF, 8);
+ ADJUST_ALIGNMENT (V16QI, 1);
+ ADJUST_ALIGNMENT (V16HI, 2);
+ ADJUST_ALIGNMENT (V16SI, 4);
+ ADJUST_ALIGNMENT (V16DI, 8);
+ ADJUST_ALIGNMENT (V16TI, 16);
+ ADJUST_ALIGNMENT (V16HF, 2);
+ ADJUST_ALIGNMENT (V16SF, 4);
+ ADJUST_ALIGNMENT (V16DF, 8);
+ ADJUST_ALIGNMENT (V8QI, 1);
+ ADJUST_ALIGNMENT (V8HI, 2);
+ ADJUST_ALIGNMENT (V8SI, 4);
+ ADJUST_ALIGNMENT (V8DI, 8);
+ ADJUST_ALIGNMENT (V8TI, 16);
+ ADJUST_ALIGNMENT (V8HF, 2);
+ ADJUST_ALIGNMENT (V8SF, 4);
+ ADJUST_ALIGNMENT (V8DF, 8);
+ ADJUST_ALIGNMENT (V4QI, 1);
+ ADJUST_ALIGNMENT (V4HI, 2);
+ ADJUST_ALIGNMENT (V4SI, 4);
+ ADJUST_ALIGNMENT (V4DI, 8);
+ ADJUST_ALIGNMENT (V4TI, 16);
+ ADJUST_ALIGNMENT (V4HF, 2);
+ ADJUST_ALIGNMENT (V4SF, 4);
+ ADJUST_ALIGNMENT (V4DF, 8);
+ ADJUST_ALIGNMENT (V2QI, 1);
+ ADJUST_ALIGNMENT (V2HI, 2);
+ ADJUST_ALIGNMENT (V2SI, 4);
+ ADJUST_ALIGNMENT (V2DI, 8);
+ ADJUST_ALIGNMENT (V2TI, 16);
+ ADJUST_ALIGNMENT (V2HF, 2);
+ ADJUST_ALIGNMENT (V2SF, 4);
+ ADJUST_ALIGNMENT (V2DF, 8);
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-opts.h gcc-13.1.0/gcc/config/gcn/gcn-opts.h
*** gcc-12.2.0/gcc/config/gcn/gcn-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
*************** enum processor_type
*** 23,38 ****
    PROCESSOR_FIJI,    // gfx803
    PROCESSOR_VEGA10,  // gfx900
    PROCESSOR_VEGA20,  // gfx906
!   PROCESSOR_GFX908   // as yet unnamed
  };
  
  /* Set in gcn_option_override.  */
! extern int gcn_isa;
  
! #define TARGET_GCN3 (gcn_isa == 3)
! #define TARGET_GCN3_PLUS (gcn_isa >= 3)
! #define TARGET_GCN5 (gcn_isa == 5)
! #define TARGET_GCN5_PLUS (gcn_isa >= 5)
  
  enum sram_ecc_type
  {
--- 23,58 ----
    PROCESSOR_FIJI,    // gfx803
    PROCESSOR_VEGA10,  // gfx900
    PROCESSOR_VEGA20,  // gfx906
!   PROCESSOR_GFX908,
!   PROCESSOR_GFX90a
  };
  
+ #define TARGET_FIJI (gcn_arch == PROCESSOR_FIJI)
+ #define TARGET_VEGA10 (gcn_arch == PROCESSOR_VEGA10)
+ #define TARGET_VEGA20 (gcn_arch == PROCESSOR_VEGA20)
+ #define TARGET_GFX908 (gcn_arch == PROCESSOR_GFX908)
+ #define TARGET_GFX90a (gcn_arch == PROCESSOR_GFX90a)
+ 
  /* Set in gcn_option_override.  */
! extern enum gcn_isa {
!   ISA_UNKNOWN,
!   ISA_GCN3,
!   ISA_GCN5,
!   ISA_CDNA1,
!   ISA_CDNA2
! } gcn_isa;
  
! #define TARGET_GCN3 (gcn_isa == ISA_GCN3)
! #define TARGET_GCN3_PLUS (gcn_isa >= ISA_GCN3)
! #define TARGET_GCN5 (gcn_isa == ISA_GCN5)
! #define TARGET_GCN5_PLUS (gcn_isa >= ISA_GCN5)
! #define TARGET_CDNA1 (gcn_isa == ISA_CDNA1)
! #define TARGET_CDNA1_PLUS (gcn_isa >= ISA_CDNA1)
! #define TARGET_CDNA2 (gcn_isa == ISA_CDNA2)
! #define TARGET_CDNA2_PLUS (gcn_isa >= ISA_CDNA2)
! 
! #define TARGET_M0_LDS_LIMIT (TARGET_GCN3)
! #define TARGET_PACKED_WORK_ITEMS (TARGET_CDNA2_PLUS)
  
  enum sram_ecc_type
  {
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-protos.h gcc-13.1.0/gcc/config/gcn/gcn-protos.h
*** gcc-12.2.0/gcc/config/gcn/gcn-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
*************** extern bool gcn_constant64_p (rtx);
*** 24,30 ****
--- 24,37 ----
  extern bool gcn_constant_p (rtx);
  extern rtx gcn_convert_mask_mode (rtx reg);
  extern unsigned int gcn_dwarf_register_number (unsigned int regno);
+ extern rtx get_exec (int64_t);
+ extern rtx get_exec (machine_mode mode);
  extern char * gcn_expand_dpp_shr_insn (machine_mode, const char *, int, int);
+ extern char * gcn_expand_dpp_swap_pairs_insn (machine_mode, const char *, int);
+ extern char * gcn_expand_dpp_distribute_even_insn (machine_mode, const char *,
+ 						   int unspec);
+ extern char * gcn_expand_dpp_distribute_odd_insn (machine_mode, const char *,
+ 						  int unspec);
  extern void gcn_expand_epilogue ();
  extern rtx gcn_expand_scaled_offsets (addr_space_t as, rtx base, rtx offsets,
  				      rtx scale, bool unsigned_p, rtx exec);
*************** extern rtx gcn_expand_scalar_to_vector_a
*** 34,41 ****
  extern void gcn_expand_vector_init (rtx, rtx);
  extern bool gcn_flat_address_p (rtx, machine_mode);
  extern bool gcn_fp_constant_p (rtx, bool);
- extern rtx gcn_full_exec ();
- extern rtx gcn_full_exec_reg ();
  extern rtx gcn_gen_undef (machine_mode);
  extern bool gcn_global_address_p (rtx);
  extern tree gcn_goacc_adjust_private_decl (location_t, tree var, int level);
--- 41,46 ----
*************** extern int gcn_hard_regno_nregs (int reg
*** 54,59 ****
--- 59,65 ----
  extern void gcn_hsa_declare_function_name (FILE *file, const char *name,
  					   tree decl);
  extern HOST_WIDE_INT gcn_initial_elimination_offset (int, int);
+ extern REAL_VALUE_TYPE gcn_dconst1over2pi (void);
  extern bool gcn_inline_constant64_p (rtx, bool);
  extern bool gcn_inline_constant_p (rtx);
  extern int gcn_inline_fp_constant_p (rtx, bool);
*************** extern rtx gcn_operand_part (machine_mod
*** 66,81 ****
  extern bool gcn_regno_mode_code_ok_for_base_p (int, machine_mode,
  					       addr_space_t, int, int);
  extern reg_class gcn_regno_reg_class (int regno);
- extern rtx gcn_scalar_exec ();
- extern rtx gcn_scalar_exec_reg ();
  extern bool gcn_scalar_flat_address_p (rtx);
  extern bool gcn_scalar_flat_mem_p (rtx);
  extern bool gcn_sgpr_move_p (rtx, rtx);
  extern bool gcn_valid_move_p (machine_mode, rtx, rtx);
  extern rtx gcn_vec_constant (machine_mode, int);
  extern rtx gcn_vec_constant (machine_mode, rtx);
  extern bool gcn_vgpr_move_p (rtx, rtx);
! extern void print_operand_address (FILE *file, register rtx addr);
  extern void print_operand (FILE *file, rtx x, int code);
  extern bool regno_ok_for_index_p (int);
  
--- 72,86 ----
  extern bool gcn_regno_mode_code_ok_for_base_p (int, machine_mode,
  					       addr_space_t, int, int);
  extern reg_class gcn_regno_reg_class (int regno);
  extern bool gcn_scalar_flat_address_p (rtx);
  extern bool gcn_scalar_flat_mem_p (rtx);
  extern bool gcn_sgpr_move_p (rtx, rtx);
+ extern bool gcn_stepped_zero_int_parallel_p (rtx op, int step);
  extern bool gcn_valid_move_p (machine_mode, rtx, rtx);
  extern rtx gcn_vec_constant (machine_mode, int);
  extern rtx gcn_vec_constant (machine_mode, rtx);
  extern bool gcn_vgpr_move_p (rtx, rtx);
! extern void print_operand_address (FILE *file, rtx addr);
  extern void print_operand (FILE *file, rtx x, int code);
  extern bool regno_ok_for_index_p (int);
  
*************** extern gimple_opt_pass *make_pass_omp_gc
*** 104,112 ****
  inline bool
  vgpr_1reg_mode_p (machine_mode mode)
  {
!   return (mode == SImode || mode == SFmode || mode == HImode || mode == QImode
! 	  || mode == V64QImode || mode == V64HImode || mode == V64SImode
! 	  || mode == V64HFmode || mode == V64SFmode || mode == BImode);
  }
  
  /* Return true if MODE is valid for 1 SGPR register.  */
--- 109,119 ----
  inline bool
  vgpr_1reg_mode_p (machine_mode mode)
  {
!   if (VECTOR_MODE_P (mode))
!     mode = GET_MODE_INNER (mode);
! 
!   return (mode == SImode || mode == SFmode || mode == HImode || mode == HFmode
! 	  || mode == QImode || mode == BImode);
  }
  
  /* Return true if MODE is valid for 1 SGPR register.  */
*************** sgpr_1reg_mode_p (machine_mode mode)
*** 123,130 ****
  inline bool
  vgpr_2reg_mode_p (machine_mode mode)
  {
!   return (mode == DImode || mode == DFmode
! 	  || mode == V64DImode || mode == V64DFmode);
  }
  
  /* Return true if MODE can be handled directly by VGPR operations.  */
--- 130,139 ----
  inline bool
  vgpr_2reg_mode_p (machine_mode mode)
  {
!   if (VECTOR_MODE_P (mode))
!     mode = GET_MODE_INNER (mode);
! 
!   return (mode == DImode || mode == DFmode);
  }
  
  /* Return true if MODE can be handled directly by VGPR operations.  */
*************** vgpr_2reg_mode_p (machine_mode mode)
*** 132,140 ****
  inline bool
  vgpr_vector_mode_p (machine_mode mode)
  {
!   return (mode == V64QImode || mode == V64HImode
! 	  || mode == V64SImode || mode == V64DImode
! 	  || mode == V64HFmode || mode == V64SFmode || mode == V64DFmode);
  }
  
  
--- 141,147 ----
  inline bool
  vgpr_vector_mode_p (machine_mode mode)
  {
!   return VECTOR_MODE_P (mode);
  }
  
  
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-run.cc gcc-13.1.0/gcc/config/gcn/gcn-run.cc
*** gcc-12.2.0/gcc/config/gcn/gcn-run.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-run.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Run a stand-alone AMD GCN kernel.
  
     Copyright 2017 Mentor Graphics Corporation
!    Copyright (C) 2018-2022 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
--- 1,7 ----
  /* Run a stand-alone AMD GCN kernel.
  
     Copyright 2017 Mentor Graphics Corporation
!    Copyright (C) 2018-2023 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
***************
*** 35,40 ****
--- 35,41 ----
  #include <signal.h>
  
  #include "hsa.h"
+ #include "../../../libgomp/config/gcn/libgomp-gcn.h"
  
  #ifndef HSA_RUNTIME_LIB
  #define HSA_RUNTIME_LIB "libhsa-runtime64.so.1"
*************** device_malloc (size_t size, hsa_region_t
*** 487,525 ****
     automatically assign the exit value to *return_value.  */
  struct kernargs
  {
!   /* Kernargs.  */
!   int32_t argc;
!   int64_t argv;
!   int64_t out_ptr;
!   int64_t heap_ptr;
! 
!   /* Output data.  */
!   struct output
!   {
!     int return_value;
!     unsigned int next_output;
!     struct printf_data
!     {
!       int written;
!       char msg[128];
!       int type;
!       union
!       {
! 	int64_t ivalue;
! 	double dvalue;
! 	char text[128];
!       };
!     } queue[1024];
!     unsigned int consumed;
!   } output_data;
  };
  
- struct heap
- {
-   int64_t size;
-   char data[0];
- } heap;
- 
  /* Print any console output from the kernel.
     We print all entries from "consumed" to the next entry without a "written"
     flag, or "next_output" is reached.  The buffer is circular, but the
--- 488,503 ----
     automatically assign the exit value to *return_value.  */
  struct kernargs
  {
!   union {
!     struct {
!       int32_t argc;
!       int64_t argv;
!     } args;
!     struct kernargs_abi abi;
!   };
!   struct output output_data;
  };
  
  /* Print any console output from the kernel.
     We print all entries from "consumed" to the next entry without a "written"
     flag, or "next_output" is reached.  The buffer is circular, but the
*************** main (int argc, char *argv[])
*** 687,692 ****
--- 665,680 ----
    for (int i = 0; i < kernel_argc; i++)
      args_size += strlen (kernel_argv[i]) + 1;
  
+   /* The device stack can be adjusted via an environment variable.  */
+   char *envvar = getenv ("GCN_STACK_SIZE");
+   int stack_size = 1 * 1024 * 1024;  /* 1MB default.  */
+   if (envvar)
+     {
+       int val = atoi (envvar);
+       if (val)
+ 	stack_size = val;
+     }
+ 
    /* Allocate device memory for both function parameters and the argv
       data.  */
    struct kernargs *kernargs = device_malloc (sizeof (*kernargs),
*************** main (int argc, char *argv[])
*** 702,712 ****
    XHSA (hsa_fns.hsa_memory_assign_agent_fn (heap, device,
  					    HSA_ACCESS_PERMISSION_RW),
  	"Assign heap to device agent");
  
    /* Write the data to the target.  */
!   kernargs->argc = kernel_argc;
!   kernargs->argv = (int64_t) args->argv_data;
!   kernargs->out_ptr = (int64_t) &kernargs->output_data;
    kernargs->output_data.return_value = 0xcafe0000; /* Default return value. */
    kernargs->output_data.next_output = 0;
    for (unsigned i = 0; i < (sizeof (kernargs->output_data.queue)
--- 690,701 ----
    XHSA (hsa_fns.hsa_memory_assign_agent_fn (heap, device,
  					    HSA_ACCESS_PERMISSION_RW),
  	"Assign heap to device agent");
+   void *stack = device_malloc (stack_size, heap_region);
  
    /* Write the data to the target.  */
!   kernargs->args.argc = kernel_argc;
!   kernargs->args.argv = (int64_t) args->argv_data;
!   kernargs->abi.out_ptr = (int64_t) &kernargs->output_data;
    kernargs->output_data.return_value = 0xcafe0000; /* Default return value. */
    kernargs->output_data.next_output = 0;
    for (unsigned i = 0; i < (sizeof (kernargs->output_data.queue)
*************** main (int argc, char *argv[])
*** 721,728 ****
        memcpy (&args->strings[offset], kernel_argv[i], arg_len + 1);
        offset += arg_len;
      }
!   kernargs->heap_ptr = (int64_t) heap;
    hsa_fns.hsa_memory_copy_fn (&heap->size, &heap_size, sizeof (heap_size));
  
    /* Run constructors on the GPU.  */
    run (init_array_kernel, kernargs);
--- 710,720 ----
        memcpy (&args->strings[offset], kernel_argv[i], arg_len + 1);
        offset += arg_len;
      }
!   kernargs->abi.heap_ptr = (int64_t) heap;
    hsa_fns.hsa_memory_copy_fn (&heap->size, &heap_size, sizeof (heap_size));
+   kernargs->abi.arena_ptr = 0;
+   kernargs->abi.stack_ptr = (int64_t) stack;
+   kernargs->abi.stack_size_per_thread = stack_size;
  
    /* Run constructors on the GPU.  */
    run (init_array_kernel, kernargs);
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-tree.cc gcc-13.1.0/gcc/config/gcn/gcn-tree.cc
*** gcc-12.2.0/gcc/config/gcn/gcn-tree.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-tree.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
     
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
     
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn-valu.md gcc-13.1.0/gcc/config/gcn/gcn-valu.md
*** gcc-12.2.0/gcc/config/gcn/gcn-valu.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn-valu.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  ;; This file 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
--- 1,4 ----
! ;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  ;; This file 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
***************
*** 17,102 ****
  ;; {{{ Vector iterators
  
  ; Vector modes for specific types
- ; (This will make more sense when there are multiple vector sizes)
  (define_mode_iterator V_QI
! 		      [V64QI])
  (define_mode_iterator V_HI
! 		      [V64HI])
  (define_mode_iterator V_HF
! 		      [V64HF])
  (define_mode_iterator V_SI
! 		      [V64SI])
  (define_mode_iterator V_SF
! 		      [V64SF])
  (define_mode_iterator V_DI
! 		      [V64DI])
  (define_mode_iterator V_DF
! 		      [V64DF])
  
  ; Vector modes for sub-dword modes
  (define_mode_iterator V_QIHI
! 		      [V64QI V64HI])
  
  ; Vector modes for one vector register
  (define_mode_iterator V_1REG
! 		      [V64QI V64HI V64SI V64HF V64SF])
  
  (define_mode_iterator V_INT_1REG
! 		      [V64QI V64HI V64SI])
  (define_mode_iterator V_INT_1REG_ALT
! 		      [V64QI V64HI V64SI])
  (define_mode_iterator V_FP_1REG
! 		      [V64HF V64SF])
  
  ; Vector modes for two vector registers
  (define_mode_iterator V_2REG
! 		      [V64DI V64DF])
  
  ; Vector modes with native support
  (define_mode_iterator V_noQI
! 		      [V64HI V64HF V64SI V64SF V64DI V64DF])
  (define_mode_iterator V_noHI
! 		      [V64HF V64SI V64SF V64DI V64DF])
  
  (define_mode_iterator V_INT_noQI
! 		      [V64HI V64SI V64DI])
  
  ; All of above
  (define_mode_iterator V_ALL
! 		      [V64QI V64HI V64HF V64SI V64SF V64DI V64DF])
  (define_mode_iterator V_ALL_ALT
! 		      [V64QI V64HI V64HF V64SI V64SF V64DI V64DF])
  
  (define_mode_iterator V_INT
! 		      [V64QI V64HI V64SI V64DI])
  (define_mode_iterator V_FP
! 		      [V64HF V64SF V64DF])
  
  (define_mode_attr scalar_mode
!   [(V64QI "qi") (V64HI "hi") (V64SI "si")
     (V64HF "hf") (V64SF "sf") (V64DI "di") (V64DF "df")])
  
  (define_mode_attr SCALAR_MODE
!   [(V64QI "QI") (V64HI "HI") (V64SI "SI")
     (V64HF "HF") (V64SF "SF") (V64DI "DI") (V64DF "DF")])
  
  (define_mode_attr vnsi
!   [(V64QI "v64si") (V64HI "v64si") (V64HF "v64si") (V64SI "v64si")
     (V64SF "v64si") (V64DI "v64si") (V64DF "v64si")])
  
  (define_mode_attr VnSI
!   [(V64QI "V64SI") (V64HI "V64SI") (V64HF "V64SI") (V64SI "V64SI")
     (V64SF "V64SI") (V64DI "V64SI") (V64DF "V64SI")])
  
  (define_mode_attr vndi
!   [(V64QI "v64di") (V64HI "v64di") (V64HF "v64di") (V64SI "v64di")
     (V64SF "v64di") (V64DI "v64di") (V64DF "v64di")])
  
  (define_mode_attr VnDI
!   [(V64QI "V64DI") (V64HI "V64DI") (V64HF "V64DI") (V64SI "V64DI")
     (V64SF "V64DI") (V64DI "V64DI") (V64DF "V64DI")])
  
! (define_mode_attr sdwa [(V64QI "BYTE_0") (V64HI "WORD_0") (V64SI "DWORD")])
  
  ;; }}}
  ;; {{{ Substitutions
--- 17,253 ----
  ;; {{{ Vector iterators
  
  ; Vector modes for specific types
  (define_mode_iterator V_QI
! 		      [V2QI V4QI V8QI V16QI V32QI V64QI])
  (define_mode_iterator V_HI
! 		      [V2HI V4HI V8HI V16HI V32HI V64HI])
  (define_mode_iterator V_HF
! 		      [V2HF V4HF V8HF V16HF V32HF V64HF])
  (define_mode_iterator V_SI
! 		      [V2SI V4SI V8SI V16SI V32SI V64SI])
  (define_mode_iterator V_SF
! 		      [V2SF V4SF V8SF V16SF V32SF V64SF])
  (define_mode_iterator V_DI
! 		      [V2DI V4DI V8DI V16DI V32DI V64DI])
  (define_mode_iterator V_DF
! 		      [V2DF V4DF V8DF V16DF V32DF V64DF])
  
  ; Vector modes for sub-dword modes
  (define_mode_iterator V_QIHI
! 		      [V2QI V2HI
! 		       V4QI V4HI
! 		       V8QI V8HI
! 		       V16QI V16HI
! 		       V32QI V32HI
! 		       V64QI V64HI])
  
  ; Vector modes for one vector register
  (define_mode_iterator V_1REG
! 		      [V2QI V2HI V2SI V2HF V2SF
! 		       V4QI V4HI V4SI V4HF V4SF
! 		       V8QI V8HI V8SI V8HF V8SF
! 		       V16QI V16HI V16SI V16HF V16SF
! 		       V32QI V32HI V32SI V32HF V32SF
! 		       V64QI V64HI V64SI V64HF V64SF])
! (define_mode_iterator V_1REG_ALT
! 		      [V2QI V2HI V2SI V2HF V2SF
! 		       V4QI V4HI V4SI V4HF V4SF
! 		       V8QI V8HI V8SI V8HF V8SF
! 		       V16QI V16HI V16SI V16HF V16SF
! 		       V32QI V32HI V32SI V32HF V32SF
! 		       V64QI V64HI V64SI V64HF V64SF])
  
  (define_mode_iterator V_INT_1REG
! 		      [V2QI V2HI V2SI
! 		       V4QI V4HI V4SI
! 		       V8QI V8HI V8SI
! 		       V16QI V16HI V16SI
! 		       V32QI V32HI V32SI
! 		       V64QI V64HI V64SI])
  (define_mode_iterator V_INT_1REG_ALT
! 		      [V2QI V2HI V2SI
! 		       V4QI V4HI V4SI
! 		       V8QI V8HI V8SI
! 		       V16QI V16HI V16SI
! 		       V32QI V32HI V32SI
! 		       V64QI V64HI V64SI])
  (define_mode_iterator V_FP_1REG
! 		      [V2HF V2SF
! 		       V4HF V4SF
! 		       V8HF V8SF
! 		       V16HF V16SF
! 		       V32HF V32SF
! 		       V64HF V64SF])
  
  ; Vector modes for two vector registers
  (define_mode_iterator V_2REG
! 		      [V2DI V2DF
! 		       V4DI V4DF
! 		       V8DI V8DF
! 		       V16DI V16DF
! 		       V32DI V32DF
! 		       V64DI V64DF])
! (define_mode_iterator V_2REG_ALT
! 		      [V2DI V2DF
! 		       V4DI V4DF
! 		       V8DI V8DF
! 		       V16DI V16DF
! 		       V32DI V32DF
! 		       V64DI V64DF])
  
  ; Vector modes with native support
  (define_mode_iterator V_noQI
! 		      [V2HI V2HF V2SI V2SF V2DI V2DF
! 		       V4HI V4HF V4SI V4SF V4DI V4DF
! 		       V8HI V8HF V8SI V8SF V8DI V8DF
! 		       V16HI V16HF V16SI V16SF V16DI V16DF
! 		       V32HI V32HF V32SI V32SF V32DI V32DF
! 		       V64HI V64HF V64SI V64SF V64DI V64DF])
  (define_mode_iterator V_noHI
! 		      [V2HF V2SI V2SF V2DI V2DF
! 		       V4HF V4SI V4SF V4DI V4DF
! 		       V8HF V8SI V8SF V8DI V8DF
! 		       V16HF V16SI V16SF V16DI V16DF
! 		       V32HF V32SI V32SF V32DI V32DF
! 		       V64HF V64SI V64SF V64DI V64DF])
  
  (define_mode_iterator V_INT_noQI
! 		      [V2HI V2SI V2DI
! 		       V4HI V4SI V4DI
! 		       V8HI V8SI V8DI
! 		       V16HI V16SI V16DI
! 		       V32HI V32SI V32DI
! 		       V64HI V64SI V64DI])
! (define_mode_iterator V_INT_noHI
! 		      [V2SI V2DI
! 		       V4SI V4DI
! 		       V8SI V8DI
! 		       V16SI V16DI
! 		       V32SI V32DI
! 		       V64SI V64DI])
  
  ; All of above
  (define_mode_iterator V_ALL
! 		      [V2QI V2HI V2HF V2SI V2SF V2DI V2DF
! 		       V4QI V4HI V4HF V4SI V4SF V4DI V4DF
! 		       V8QI V8HI V8HF V8SI V8SF V8DI V8DF
! 		       V16QI V16HI V16HF V16SI V16SF V16DI V16DF
! 		       V32QI V32HI V32HF V32SI V32SF V32DI V32DF
! 		       V64QI V64HI V64HF V64SI V64SF V64DI V64DF])
  (define_mode_iterator V_ALL_ALT
! 		      [V2QI V2HI V2HF V2SI V2SF V2DI V2DF
! 		       V4QI V4HI V4HF V4SI V4SF V4DI V4DF
! 		       V8QI V8HI V8HF V8SI V8SF V8DI V8DF
! 		       V16QI V16HI V16HF V16SI V16SF V16DI V16DF
! 		       V32QI V32HI V32HF V32SI V32SF V32DI V32DF
! 		       V64QI V64HI V64HF V64SI V64SF V64DI V64DF])
  
  (define_mode_iterator V_INT
! 		      [V2QI V2HI V2SI V2DI
! 		       V4QI V4HI V4SI V4DI
! 		       V8QI V8HI V8SI V8DI
! 		       V16QI V16HI V16SI V16DI
! 		       V32QI V32HI V32SI V32DI
! 		       V64QI V64HI V64SI V64DI])
  (define_mode_iterator V_FP
! 		      [V2HF V2SF V2DF
! 		       V4HF V4SF V4DF
! 		       V8HF V8SF V8DF
! 		       V16HF V16SF V16DF
! 		       V32HF V32SF V32DF
! 		       V64HF V64SF V64DF])
  
  (define_mode_attr scalar_mode
!   [(V2QI "qi") (V2HI "hi") (V2SI "si")
!    (V2HF "hf") (V2SF "sf") (V2DI "di") (V2DF "df")
!    (V4QI "qi") (V4HI "hi") (V4SI "si")
!    (V4HF "hf") (V4SF "sf") (V4DI "di") (V4DF "df")
!    (V8QI "qi") (V8HI "hi") (V8SI "si")
!    (V8HF "hf") (V8SF "sf") (V8DI "di") (V8DF "df")
!    (V16QI "qi") (V16HI "hi") (V16SI "si")
!    (V16HF "hf") (V16SF "sf") (V16DI "di") (V16DF "df")
!    (V32QI "qi") (V32HI "hi") (V32SI "si")
!    (V32HF "hf") (V32SF "sf") (V32DI "di") (V32DF "df")
!    (V64QI "qi") (V64HI "hi") (V64SI "si")
     (V64HF "hf") (V64SF "sf") (V64DI "di") (V64DF "df")])
  
  (define_mode_attr SCALAR_MODE
!   [(V2QI "QI") (V2HI "HI") (V2SI "SI")
!    (V2HF "HF") (V2SF "SF") (V2DI "DI") (V2DF "DF")
!    (V4QI "QI") (V4HI "HI") (V4SI "SI")
!    (V4HF "HF") (V4SF "SF") (V4DI "DI") (V4DF "DF")
!    (V8QI "QI") (V8HI "HI") (V8SI "SI")
!    (V8HF "HF") (V8SF "SF") (V8DI "DI") (V8DF "DF")
!    (V16QI "QI") (V16HI "HI") (V16SI "SI")
!    (V16HF "HF") (V16SF "SF") (V16DI "DI") (V16DF "DF")
!    (V32QI "QI") (V32HI "HI") (V32SI "SI")
!    (V32HF "HF") (V32SF "SF") (V32DI "DI") (V32DF "DF")
!    (V64QI "QI") (V64HI "HI") (V64SI "SI")
     (V64HF "HF") (V64SF "SF") (V64DI "DI") (V64DF "DF")])
  
  (define_mode_attr vnsi
!   [(V2QI "v2si") (V2HI "v2si") (V2HF "v2si") (V2SI "v2si")
!    (V2SF "v2si") (V2DI "v2si") (V2DF "v2si")
!    (V4QI "v4si") (V4HI "v4si") (V4HF "v4si") (V4SI "v4si")
!    (V4SF "v4si") (V4DI "v4si") (V4DF "v4si")
!    (V8QI "v8si") (V8HI "v8si") (V8HF "v8si") (V8SI "v8si")
!    (V8SF "v8si") (V8DI "v8si") (V8DF "v8si")
!    (V16QI "v16si") (V16HI "v16si") (V16HF "v16si") (V16SI "v16si")
!    (V16SF "v16si") (V16DI "v16si") (V16DF "v16si")
!    (V32QI "v32si") (V32HI "v32si") (V32HF "v32si") (V32SI "v32si")
!    (V32SF "v32si") (V32DI "v32si") (V32DF "v32si")
!    (V64QI "v64si") (V64HI "v64si") (V64HF "v64si") (V64SI "v64si")
     (V64SF "v64si") (V64DI "v64si") (V64DF "v64si")])
  
  (define_mode_attr VnSI
!   [(V2QI "V2SI") (V2HI "V2SI") (V2HF "V2SI") (V2SI "V2SI")
!    (V2SF "V2SI") (V2DI "V2SI") (V2DF "V2SI")
!    (V4QI "V4SI") (V4HI "V4SI") (V4HF "V4SI") (V4SI "V4SI")
!    (V4SF "V4SI") (V4DI "V4SI") (V4DF "V4SI")
!    (V8QI "V8SI") (V8HI "V8SI") (V8HF "V8SI") (V8SI "V8SI")
!    (V8SF "V8SI") (V8DI "V8SI") (V8DF "V8SI")
!    (V16QI "V16SI") (V16HI "V16SI") (V16HF "V16SI") (V16SI "V16SI")
!    (V16SF "V16SI") (V16DI "V16SI") (V16DF "V16SI")
!    (V32QI "V32SI") (V32HI "V32SI") (V32HF "V32SI") (V32SI "V32SI")
!    (V32SF "V32SI") (V32DI "V32SI") (V32DF "V32SI")
!    (V64QI "V64SI") (V64HI "V64SI") (V64HF "V64SI") (V64SI "V64SI")
     (V64SF "V64SI") (V64DI "V64SI") (V64DF "V64SI")])
  
  (define_mode_attr vndi
!   [(V2QI "v2di") (V2HI "v2di") (V2HF "v2di") (V2SI "v2di")
!    (V2SF "v2di") (V2DI "v2di") (V2DF "v2di")
!    (V4QI "v4di") (V4HI "v4di") (V4HF "v4di") (V4SI "v4di")
!    (V4SF "v4di") (V4DI "v4di") (V4DF "v4di")
!    (V8QI "v8di") (V8HI "v8di") (V8HF "v8di") (V8SI "v8di")
!    (V8SF "v8di") (V8DI "v8di") (V8DF "v8di")
!    (V16QI "v16di") (V16HI "v16di") (V16HF "v16di") (V16SI "v16di")
!    (V16SF "v16di") (V16DI "v16di") (V16DF "v16di")
!    (V32QI "v32di") (V32HI "v32di") (V32HF "v32di") (V32SI "v32di")
!    (V32SF "v32di") (V32DI "v32di") (V32DF "v32di")
!    (V64QI "v64di") (V64HI "v64di") (V64HF "v64di") (V64SI "v64di")
     (V64SF "v64di") (V64DI "v64di") (V64DF "v64di")])
  
  (define_mode_attr VnDI
!   [(V2QI "V2DI") (V2HI "V2DI") (V2HF "V2DI") (V2SI "V2DI")
!    (V2SF "V2DI") (V2DI "V2DI") (V2DF "V2DI")
!    (V4QI "V4DI") (V4HI "V4DI") (V4HF "V4DI") (V4SI "V4DI")
!    (V4SF "V4DI") (V4DI "V4DI") (V4DF "V4DI")
!    (V8QI "V8DI") (V8HI "V8DI") (V8HF "V8DI") (V8SI "V8DI")
!    (V8SF "V8DI") (V8DI "V8DI") (V8DF "V8DI")
!    (V16QI "V16DI") (V16HI "V16DI") (V16HF "V16DI") (V16SI "V16DI")
!    (V16SF "V16DI") (V16DI "V16DI") (V16DF "V16DI")
!    (V32QI "V32DI") (V32HI "V32DI") (V32HF "V32DI") (V32SI "V32DI")
!    (V32SF "V32DI") (V32DI "V32DI") (V32DF "V32DI")
!    (V64QI "V64DI") (V64HI "V64DI") (V64HF "V64DI") (V64SI "V64DI")
     (V64SF "V64DI") (V64DI "V64DI") (V64DF "V64DI")])
  
! (define_mode_attr sdwa
!   [(V2QI "BYTE_0") (V2HI "WORD_0") (V2SI "DWORD")
!    (V4QI "BYTE_0") (V4HI "WORD_0") (V4SI "DWORD")
!    (V8QI "BYTE_0") (V8HI "WORD_0") (V8SI "DWORD")
!    (V16QI "BYTE_0") (V16HI "WORD_0") (V16SI "DWORD")
!    (V32QI "BYTE_0") (V32HI "WORD_0") (V32SI "DWORD")
!    (V64QI "BYTE_0") (V64HI "WORD_0") (V64SI "DWORD")])
  
  ;; }}}
  ;; {{{ Substitutions
***************
*** 178,183 ****
--- 329,365 ----
  	(match_operand:V_ALL 1 "general_operand"))]
    ""
    {
+     /* Bitwise reinterpret casts via SUBREG don't work with GCN vector
+        registers, but we can convert the MEM to a mode that does work.  */
+     if (MEM_P (operands[0]) && !SUBREG_P (operands[0])
+ 	&& SUBREG_P (operands[1])
+ 	&& GET_MODE_SIZE (GET_MODE (operands[1]))
+ 	   == GET_MODE_SIZE (GET_MODE (SUBREG_REG (operands[1]))))
+       {
+         rtx src = SUBREG_REG (operands[1]);
+         rtx mem = copy_rtx (operands[0]);
+ 	PUT_MODE_RAW (mem, GET_MODE (src));
+ 	emit_move_insn (mem, src);
+ 	DONE;
+       }
+     if (MEM_P (operands[1]) && !SUBREG_P (operands[1])
+ 	&& SUBREG_P (operands[0])
+ 	&& GET_MODE_SIZE (GET_MODE (operands[0]))
+ 	   == GET_MODE_SIZE (GET_MODE (SUBREG_REG (operands[0]))))
+       {
+         rtx dest = SUBREG_REG (operands[0]);
+         rtx mem = copy_rtx (operands[1]);
+ 	PUT_MODE_RAW (mem, GET_MODE (dest));
+ 	emit_move_insn (dest, mem);
+ 	DONE;
+       }
+ 
+     /* SUBREG of MEM is not supported.  */
+     gcc_assert ((!SUBREG_P (operands[0])
+ 		 || !MEM_P (SUBREG_REG (operands[0])))
+ 		&& (!SUBREG_P (operands[1])
+ 		    || !MEM_P (SUBREG_REG (operands[1]))));
+ 
      if (MEM_P (operands[0]) && !lra_in_progress && !reload_completed)
        {
  	operands[1] = force_reg (<MODE>mode, operands[1]);
***************
*** 620,625 ****
--- 802,870 ----
     (set_attr "exec" "none")
     (set_attr "laneselect" "yes")])
  
+ (define_insn "vec_extract<V_1REG:mode><V_1REG_ALT:mode>_nop"
+   [(set (match_operand:V_1REG_ALT 0 "register_operand" "=v,v")
+ 	(vec_select:V_1REG_ALT
+ 	  (match_operand:V_1REG 1 "register_operand"   " 0,v")
+ 	  (match_operand 2 "ascending_zero_int_parallel" "")))]
+   "MODE_VF (<V_1REG_ALT:MODE>mode) < MODE_VF (<V_1REG:MODE>mode)
+    && <V_1REG_ALT:SCALAR_MODE>mode == <V_1REG:SCALAR_MODE>mode"
+   "@
+   ; in-place extract %0
+   v_mov_b32\t%L0, %L1"
+   [(set_attr "type" "vmult")
+    (set_attr "length" "0,8")])
+   
+ (define_insn "vec_extract<V_2REG:mode><V_2REG_ALT:mode>_nop"
+   [(set (match_operand:V_2REG_ALT 0 "register_operand" "=v,v")
+ 	(vec_select:V_2REG_ALT
+ 	  (match_operand:V_2REG 1 "register_operand"   " 0,v")
+ 	  (match_operand 2 "ascending_zero_int_parallel" "")))]
+   "MODE_VF (<V_2REG_ALT:MODE>mode) < MODE_VF (<V_2REG:MODE>mode)
+    && <V_2REG_ALT:SCALAR_MODE>mode == <V_2REG:SCALAR_MODE>mode"
+   "@
+   ; in-place extract %0
+   v_mov_b32\t%L0, %L1\;v_mov_b32\t%H0, %H1"
+   [(set_attr "type" "vmult")
+    (set_attr "length" "0,8")])
+   
+ (define_expand "vec_extract<V_ALL:mode><V_ALL_ALT:mode>"
+   [(match_operand:V_ALL_ALT 0 "register_operand")
+    (match_operand:V_ALL 1 "register_operand")
+    (match_operand 2 "immediate_operand")]
+   "MODE_VF (<V_ALL_ALT:MODE>mode) < MODE_VF (<V_ALL:MODE>mode)
+    && <V_ALL_ALT:SCALAR_MODE>mode == <V_ALL:SCALAR_MODE>mode"
+   {
+     int numlanes = GET_MODE_NUNITS (<V_ALL_ALT:MODE>mode);
+     int firstlane = INTVAL (operands[2]) * numlanes;
+     rtx tmp;
+ 
+     if (firstlane == 0)
+       {
+ 	rtx parallel = gen_rtx_PARALLEL (<V_ALL:MODE>mode,
+ 					  rtvec_alloc (numlanes));
+ 	for (int i = 0; i < numlanes; i++)
+ 	  XVECEXP (parallel, 0, i) = GEN_INT (i);
+ 	emit_insn (gen_vec_extract<V_ALL:mode><V_ALL_ALT:mode>_nop
+ 		   (operands[0], operands[1], parallel));
+       } else {
+         /* FIXME: optimize this by using DPP where available.  */
+ 
+         rtx permutation = gen_reg_rtx (<V_ALL:VnSI>mode);
+ 	emit_insn (gen_vec_series<V_ALL:vnsi> (permutation,
+ 					       GEN_INT (firstlane*4),
+ 					       GEN_INT (4)));
+ 
+ 	tmp = gen_reg_rtx (<V_ALL:MODE>mode);
+ 	emit_insn (gen_ds_bpermute<V_ALL:mode> (tmp, permutation, operands[1],
+ 						get_exec (<V_ALL:MODE>mode)));
+ 
+ 	emit_move_insn (operands[0],
+ 			gen_rtx_SUBREG (<V_ALL_ALT:MODE>mode, tmp, 0));
+       }
+     DONE;
+   })
+ 
  (define_expand "extract_last_<mode>"
    [(match_operand:<SCALAR_MODE> 0 "register_operand")
     (match_operand:DI 1 "gcn_alu_operand")
***************
*** 671,676 ****
--- 916,931 ----
      DONE;
    })
  
+ (define_expand "vec_init<V_ALL:mode><V_ALL_ALT:mode>"
+   [(match_operand:V_ALL 0 "register_operand")
+    (match_operand:V_ALL_ALT 1)]
+   "<V_ALL:SCALAR_MODE>mode == <V_ALL_ALT:SCALAR_MODE>mode
+    && MODE_VF (<V_ALL_ALT:MODE>mode) < MODE_VF (<V_ALL:MODE>mode)"
+   {
+     gcn_expand_vector_init (operands[0], operands[1]);
+     DONE;
+   })
+ 
  ;; }}}
  ;; {{{ Scatter / Gather
  
***************
*** 823,839 ****
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
!       {
! 	/* Work around assembler bug in which a 64-bit register is expected,
! 	but a 32-bit value would be correct.  */
! 	int reg = REGNO (operands[2]) - FIRST_VGPR_REG;
! 	if (HAVE_GCN_ASM_GLOBAL_LOAD_FIXED)
! 	  sprintf (buf, "global_load%%o0\t%%0, v%d, %%1 offset:%%3%s\;"
! 			"s_waitcnt\tvmcnt(0)", reg, glc);
! 	else
! 	  sprintf (buf, "global_load%%o0\t%%0, v[%d:%d], %%1 offset:%%3%s\;"
! 			"s_waitcnt\tvmcnt(0)", reg, reg + 1, glc);
!       }
      else
        gcc_unreachable ();
        
--- 1078,1085 ----
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
!       sprintf (buf, "global_load%%o0\t%%0, %%2, %%1 offset:%%3%s\;"
! 	       "s_waitcnt\tvmcnt(0)", glc);
      else
        gcc_unreachable ();
        
***************
*** 958,974 ****
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
!       {
! 	/* Work around assembler bug in which a 64-bit register is expected,
! 	but a 32-bit value would be correct.  */
! 	int reg = REGNO (operands[1]) - FIRST_VGPR_REG;
! 	if (HAVE_GCN_ASM_GLOBAL_LOAD_FIXED)
! 	  sprintf (buf, "global_store%%s3\tv%d, %%3, %%0 offset:%%2%s",
! 		   reg, glc);
! 	else
! 	  sprintf (buf, "global_store%%s3\tv[%d:%d], %%3, %%0 offset:%%2%s",
! 		   reg, reg + 1, glc);
!       }
      else
        gcc_unreachable ();
  
--- 1204,1210 ----
  
      static char buf[200];
      if (AS_GLOBAL_P (as))
!       sprintf (buf, "global_store%%s3\t%%1, %%3, %%0 offset:%%2%s", glc);
      else
        gcc_unreachable ();
  
***************
*** 1031,1036 ****
--- 1267,1311 ----
    [(set_attr "type" "vop_dpp")
     (set_attr "length" "16")])
  
+ (define_insn "@dpp_swap_pairs<mode>"
+   [(set (match_operand:V_noHI 0 "register_operand"    "=v")
+ 	(unspec:V_noHI
+ 	  [(match_operand:V_noHI 1 "register_operand" " v")]
+ 	  UNSPEC_MOV_DPP_SWAP_PAIRS))]
+   ""
+   {
+     return gcn_expand_dpp_swap_pairs_insn (<MODE>mode, "v_mov_b32",
+ 	                                   UNSPEC_MOV_DPP_SWAP_PAIRS);
+   }
+   [(set_attr "type" "vop_dpp")
+    (set_attr "length" "16")])
+ 
+ (define_insn "@dpp_distribute_even<mode>"
+   [(set (match_operand:V_noHI 0 "register_operand"    "=v")
+ 	(unspec:V_noHI
+ 	  [(match_operand:V_noHI 1 "register_operand" " v")]
+ 	  UNSPEC_MOV_DPP_DISTRIBUTE_EVEN))]
+   ""
+   {
+     return gcn_expand_dpp_distribute_even_insn (<MODE>mode, "v_mov_b32",
+ 						UNSPEC_MOV_DPP_DISTRIBUTE_EVEN);
+   }
+   [(set_attr "type" "vop_dpp")
+    (set_attr "length" "16")])
+ 
+ (define_insn "@dpp_distribute_odd<mode>"
+   [(set (match_operand:V_noHI 0 "register_operand"    "=v")
+ 	(unspec:V_noHI
+ 	  [(match_operand:V_noHI 1 "register_operand" " v")]
+ 	  UNSPEC_MOV_DPP_DISTRIBUTE_EVEN))]
+   ""
+   {
+     return gcn_expand_dpp_distribute_odd_insn (<MODE>mode, "v_mov_b32",
+ 					       UNSPEC_MOV_DPP_DISTRIBUTE_ODD);
+   }
+   [(set_attr "type" "vop_dpp")
+    (set_attr "length" "16")])
+ 
  ;; }}}
  ;; {{{ ALU special case: add/sub
  
***************
*** 1992,1997 ****
--- 2267,2446 ----
      DONE;
    })
  
+ (define_int_iterator UNSPEC_CMUL_OP [UNSPEC_CMUL UNSPEC_CMUL_CONJ])
+ (define_int_attr conj_op [(UNSPEC_CMUL "") (UNSPEC_CMUL_CONJ "_conj")])
+ (define_int_attr cmul_subadd [(UNSPEC_CMUL "sub") (UNSPEC_CMUL_CONJ "add")])
+ (define_int_attr cmul_addsub [(UNSPEC_CMUL "add") (UNSPEC_CMUL_CONJ "sub")])
+ 
+ (define_expand "cmul<conj_op><mode>3"
+   [(set (match_operand:V_noHI 0 "register_operand"    "=&v")
+         (unspec:V_noHI
+ 	  [(match_operand:V_noHI 1 "register_operand" "v")
+ 	   (match_operand:V_noHI 2 "register_operand" "v")]
+ 	  UNSPEC_CMUL_OP))]
+   ""
+   {
+     // operands[1]                                                  a   b
+     // operands[2]                                                  c   d
+     rtx t1 = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_mul<mode>3 (t1, operands[1], operands[2]));   // a*c b*d
+ 
+     rtx s2_perm = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_swap_pairs<mode> (s2_perm, operands[2])); // d   c
+ 
+     rtx t2 = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_mul<mode>3 (t2, operands[1], s2_perm));       // a*d b*c
+ 
+     rtx t1_perm = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_swap_pairs<mode> (t1_perm, t1));          // b*d a*c
+ 
+     rtx even = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (even, get_exec (0x5555555555555555UL));
+     rtx dest = operands[0];
+     emit_insn (gen_<cmul_subadd><mode>3_exec (dest, t1, t1_perm, dest, even));
+                                                              // a*c-b*d 0
+ 
+     rtx t2_perm = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_swap_pairs<mode> (t2_perm, t2));          // b*c a*d
+ 
+     rtx odd = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (odd, get_exec (0xaaaaaaaaaaaaaaaaUL));
+     emit_insn (gen_<cmul_addsub><mode>3_exec (dest, t2, t2_perm, dest, odd));
+                                                                    // 0 a*d+b*c
+     DONE;
+   })
+ 
+ (define_code_iterator addsub [plus minus])
+ (define_code_attr addsub_as [(plus "a") (minus "s")])
+ 
+ (define_expand "cml<addsub_as><mode>4"
+   [(set (match_operand:V_FP 0 "register_operand"      "=&v")
+ 	(addsub:V_FP
+ 	  (unspec:V_FP
+ 	    [(match_operand:V_FP 1 "register_operand" "v")
+ 	     (match_operand:V_FP 2 "register_operand" "v")]
+ 	    UNSPEC_CMUL)
+ 	  (match_operand:V_FP 3 "register_operand"    "v")))]
+   ""
+   {
+     rtx a = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_distribute_even<mode> (a, operands[1]));    // a   a
+ 
+     rtx t1 = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_fm<addsub_as><mode>4 (t1, a, operands[2], operands[3]));
+                                                                    // a*c a*d
+ 
+     rtx b = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_distribute_odd<mode> (b, operands[1]));     // b   b
+ 
+     rtx t2 = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_mul<mode>3 (t2, b, operands[2]));               // b*c b*d
+ 
+     rtx t2_perm = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_swap_pairs<mode> (t2_perm, t2));            // b*d b*c
+ 
+     rtx even = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (even, get_exec (0x5555555555555555UL));
+     rtx dest = operands[0];
+     emit_insn (gen_sub<mode>3_exec (dest, t1, t2_perm, dest, even));
+ 
+     rtx odd = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (odd, get_exec (0xaaaaaaaaaaaaaaaaUL));
+     emit_insn (gen_add<mode>3_exec (dest, t1, t2_perm, dest, odd));
+ 
+     DONE;
+   })
+ 
+ (define_expand "vec_addsub<mode>3"
+   [(set (match_operand:V_noHI 0 "register_operand"     "=&v")
+         (vec_merge:V_noHI
+           (minus:V_noHI
+             (match_operand:V_noHI 1 "register_operand" "v")
+             (match_operand:V_noHI 2 "register_operand" "v"))
+           (plus:V_noHI (match_dup 1) (match_dup 2))
+           (const_int 6148914691236517205)))]
+   ""
+   {
+     rtx even = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (even, get_exec (0x5555555555555555UL));
+     rtx dest = operands[0];
+     rtx x = operands[1];
+     rtx y = operands[2];
+     emit_insn (gen_sub<mode>3_exec (dest, x, y, dest, even));
+     rtx odd = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (odd, get_exec (0xaaaaaaaaaaaaaaaaUL));
+     emit_insn (gen_add<mode>3_exec (dest, x, y, dest, odd));
+ 
+     DONE;
+   })
+ 
+ (define_int_iterator CADD [UNSPEC_CADD90 UNSPEC_CADD270])
+ (define_int_attr rot [(UNSPEC_CADD90 "90") (UNSPEC_CADD270 "270")])
+ (define_int_attr cadd_subadd [(UNSPEC_CADD90 "sub") (UNSPEC_CADD270 "add")])
+ (define_int_attr cadd_addsub [(UNSPEC_CADD90 "add") (UNSPEC_CADD270 "sub")])
+ 
+ (define_expand "cadd<rot><mode>3"
+   [(set (match_operand:V_noHI 0 "register_operand"                 "=&v")
+         (unspec:V_noHI [(match_operand:V_noHI 1 "register_operand" "v")
+                         (match_operand:V_noHI 2 "register_operand" "v")]
+                         CADD))]
+   ""
+   {
+     rtx dest = operands[0];
+     rtx x = operands[1];
+     rtx y = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_dpp_swap_pairs<mode> (y, operands[2]));
+ 
+     rtx even = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (even, get_exec (0x5555555555555555UL));
+     emit_insn (gen_<cadd_subadd><mode>3_exec (dest, x, y, dest, even));
+     rtx odd = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (odd, get_exec (0xaaaaaaaaaaaaaaaaUL));
+     emit_insn (gen_<cadd_addsub><mode>3_exec (dest, x, y, dest, odd));
+ 
+     DONE;
+   })
+ 
+ (define_expand "vec_fmaddsub<mode>4"
+   [(match_operand:V_noHI 0 "register_operand" "=&v")
+    (match_operand:V_noHI 1 "register_operand" "v")
+    (match_operand:V_noHI 2 "register_operand" "v")
+    (match_operand:V_noHI 3 "register_operand" "v")]
+   ""
+   {
+     rtx t1 = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_mul<mode>3 (t1, operands[1], operands[2]));
+     rtx even = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (even, get_exec (0x5555555555555555UL));
+     rtx dest = operands[0];
+     emit_insn (gen_sub<mode>3_exec (dest, t1, operands[3], dest, even));
+     rtx odd = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (odd, get_exec (0xaaaaaaaaaaaaaaaaUL));
+     emit_insn (gen_add<mode>3_exec (dest, t1, operands[3], dest, odd));
+ 
+     DONE;
+   })
+ 
+ (define_expand "vec_fmsubadd<mode>4"
+   [(match_operand:V_noHI 0 "register_operand" "=&v")
+    (match_operand:V_noHI 1 "register_operand" "v")
+    (match_operand:V_noHI 2 "register_operand" "v")
+    (match_operand:V_noHI 3 "register_operand" "v")]
+   ""
+   {
+     rtx t1 = gen_reg_rtx (<MODE>mode);
+     emit_insn (gen_mul<mode>3 (t1, operands[1], operands[2]));
+     rtx even = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (even, get_exec (0x5555555555555555UL));
+     rtx dest = operands[0];
+     emit_insn (gen_add<mode>3_exec (dest, t1, operands[3], dest, even));
+     rtx odd = gen_rtx_REG (DImode, EXEC_REG);
+     emit_move_insn (odd, get_exec (0xaaaaaaaaaaaaaaaaUL));
+     emit_insn (gen_add<mode>3_exec (dest, t1, operands[3], dest, odd));
+ 
+     DONE;
+   })
+ 
  ;; }}}
  ;; {{{ ALU generic case
  
***************
*** 2105,2114 ****
    })
  
  (define_insn "<expander><mode>3<exec>"
!   [(set (match_operand:V_SI 0 "register_operand"  "= v")
! 	(shiftop:V_SI
! 	  (match_operand:V_SI 1 "gcn_alu_operand" "  v")
! 	  (vec_duplicate:V_SI
  	    (match_operand:SI 2 "gcn_alu_operand"  "SvB"))))]
    ""
    "v_<revmnemonic>0\t%0, %2, %1"
--- 2554,2563 ----
    })
  
  (define_insn "<expander><mode>3<exec>"
!   [(set (match_operand:V_INT_noHI 0 "register_operand"  "= v")
! 	(shiftop:V_INT_noHI
! 	  (match_operand:V_INT_noHI 1 "gcn_alu_operand" "  v")
! 	  (vec_duplicate:<VnSI>
  	    (match_operand:SI 2 "gcn_alu_operand"  "SvB"))))]
    ""
    "v_<revmnemonic>0\t%0, %2, %1"
***************
*** 2136,2145 ****
    })
  
  (define_insn "v<expander><mode>3<exec>"
!   [(set (match_operand:V_SI 0 "register_operand"  "=v")
! 	(shiftop:V_SI
! 	  (match_operand:V_SI 1 "gcn_alu_operand" " v")
! 	  (match_operand:V_SI 2 "gcn_alu_operand" "vB")))]
    ""
    "v_<revmnemonic>0\t%0, %2, %1"
    [(set_attr "type" "vop2")
--- 2585,2594 ----
    })
  
  (define_insn "v<expander><mode>3<exec>"
!   [(set (match_operand:V_INT_noHI 0 "register_operand"  "=v")
! 	(shiftop:V_INT_noHI
! 	  (match_operand:V_INT_noHI 1 "gcn_alu_operand" " v")
! 	  (match_operand:<VnSI> 2 "gcn_alu_operand"	"vB")))]
    ""
    "v_<revmnemonic>0\t%0, %2, %1"
    [(set_attr "type" "vop2")
***************
*** 2165,2170 ****
--- 2614,2647 ----
      DONE;
    })
  
+ (define_expand "<expander><mode>3_exec"
+   [(set (match_operand:V_QIHI 0 "gcn_valu_dst_operand")
+ 	(vec_merge:V_QIHI
+ 	  (minmaxop:V_QIHI
+ 	    (match_operand:V_QIHI 1 "gcn_valu_src0_operand")
+ 	    (match_operand:V_QIHI 2 "gcn_valu_src1com_operand"))
+ 	  (match_operand:V_QIHI 3 "gcn_register_or_unspec_operand" "U0")
+ 	  (match_operand:DI 4 "gcn_exec_reg_operand" "e")))]
+   ""
+   {
+     enum {smin, umin, smax, umax};
+     bool unsignedp = (<code> == umax || <code> == umin);
+     rtx insi1 = gen_reg_rtx (<VnSI>mode);
+     rtx insi2 = gen_reg_rtx (<VnSI>mode);
+     rtx outsi = gen_reg_rtx (<VnSI>mode);
+     rtx out = operands[0];
+     rtx exec = operands[4];
+     rtx tmp = gen_reg_rtx (<MODE>mode);
+ 
+     convert_move (insi1, operands[1], unsignedp);
+     convert_move (insi2, operands[2], unsignedp);
+     emit_insn (gen_<code><vnsi>3_exec (outsi, insi1, insi2,
+                                        gcn_gen_undef(<VnSI>mode), exec));
+     convert_move (tmp, outsi, unsignedp);
+     emit_insn (gen_mov<mode>_exec (out, tmp, operands[3], exec));
+     DONE;
+   })
+ 
  (define_insn "<expander><vnsi>3<exec>"
    [(set (match_operand:V_SI 0 "gcn_valu_dst_operand"	   "=  v,RD")
  	(minmaxop:V_SI
***************
*** 2177,2182 ****
--- 2654,2754 ----
    [(set_attr "type" "vop2,ds")
     (set_attr "length" "8,8")])
  
+ (define_insn_and_split "<expander><mode>3"
+   [(set (match_operand:V_DI 0 "register_operand"      "=v")
+ 	(minmaxop:V_DI
+ 	  (match_operand:V_DI 1 "gcn_alu_operand"     " v")
+ 	  (match_operand:V_DI 2 "gcn_alu_operand"     " v")))
+     (clobber (reg:DI VCC_REG))]
+   ""
+   "#"
+   "reload_completed"
+   [(const_int 0)]
+   {
+     rtx out = operands[0];
+     rtx vcc = gen_rtx_REG (DImode, VCC_REG);
+ 
+     enum {smin, smax, umin, umax};
+     bool minp = (<code> == smin || <code> == umin);
+     if (<code> == smin || <code> == smax)
+       emit_insn (gen_vec_cmp<mode>di (vcc, minp ? gen_rtx_LT (VOIDmode, 0, 0) :
+                                       gen_rtx_GT (VOIDmode, 0, 0), operands[1],
+                                       operands[2]));
+     else
+       emit_insn (gen_vec_cmp<mode>di (vcc, minp ? gen_rtx_LTU (VOIDmode, 0, 0) :
+                                       gen_rtx_GTU (VOIDmode, 0, 0), operands[1],
+                                       operands[2]));
+     emit_insn (gen_vcond_mask_<mode>di (out, operands[1], operands[2], vcc));
+   }
+   [(set_attr "type" "mult")])
+ 
+ (define_insn_and_split "<expander><mode>3_exec"
+   [(set (match_operand:V_DI 0 "register_operand"                 "= v")
+ 	(vec_merge:V_DI
+           (minmaxop:V_DI
+             (match_operand:V_DI 1 "gcn_alu_operand"              "  v")
+             (match_operand:V_DI 2 "gcn_alu_operand"              "  v"))
+           (match_operand:V_DI 3 "gcn_register_or_unspec_operand" " U0")
+           (match_operand:DI 4 "gcn_exec_reg_operand"  "+e")))
+     (clobber (match_scratch:<VnDI> 5		      "= &v"))
+     (clobber (reg:DI VCC_REG))]
+   ""
+   "#"
+   "reload_completed"
+   [(const_int 0)]
+   {
+     rtx out = operands[0];
+     rtx vcc = gen_rtx_REG (DImode, VCC_REG);
+     rtx exec = operands[4];
+     rtx tmp = operands[5];
+ 
+     enum {smin, smax, umin, umax};
+     bool minp = (<code> == smin || <code> == umin);
+     if (<code> == smin || <code> == smax)
+       emit_insn (gen_vec_cmp<mode>di_exec (vcc,
+                                            minp ? gen_rtx_LT (VOIDmode, 0, 0) :
+                                            gen_rtx_GT (VOIDmode, 0, 0),
+                                            operands[1], operands[2], exec));
+     else
+       emit_insn (gen_vec_cmp<mode>di_exec (vcc,
+                                            minp ? gen_rtx_LTU (VOIDmode, 0, 0) :
+                                            gen_rtx_GTU (VOIDmode, 0, 0),
+                                            operands[1], operands[2], exec));
+     emit_insn (gen_vcond_mask_<mode>di (tmp, operands[1], operands[2], vcc));
+     emit_insn (gen_mov<mode>_exec (out, tmp, operands[3], exec));
+   }
+   [(set_attr "type" "mult")])
+ 
+ ;; }}}
+ ;; {{{ Int unops
+ 
+ (define_expand "neg<mode>2"
+   [(match_operand:V_INT 0 "register_operand")
+    (match_operand:V_INT 1 "register_operand")]
+   ""
+   {
+     emit_insn (gen_sub<mode>3 (operands[0], gcn_vec_constant (<MODE>mode, 0),
+ 			       operands[1]));
+     DONE;
+   })
+ 
+ (define_insn_and_split "one_cmpl<mode>2<exec>"
+   [(set (match_operand:V_DI 0 "register_operand"  "=   v")
+         (not:V_DI
+           (match_operand:V_DI 1 "gcn_alu_operand" "vSvDB")))]
+   ""
+   "#"
+   "reload_completed"
+   [(set (match_dup 3) (not:<VnSI> (match_dup 5)))
+    (set (match_dup 4) (not:<VnSI> (match_dup 6)))]
+   {
+     operands[3] = gcn_operand_part (<VnDI>mode, operands[0], 0);
+     operands[4] = gcn_operand_part (<VnDI>mode, operands[0], 1);
+     operands[5] = gcn_operand_part (<VnDI>mode, operands[1], 0);
+     operands[6] = gcn_operand_part (<VnDI>mode, operands[1], 1);
+   }
+   [(set_attr "type" "mult")])
+ 
  ;; }}}
  ;; {{{ FP binops - special cases
  
***************
*** 2260,2265 ****
--- 2832,2854 ----
    [(set_attr "type" "vop2")
     (set_attr "length" "8,8")])
  
+ (define_code_iterator fminmaxop [smin smax])
+ (define_expand "<fexpander><mode>3"
+   [(set (match_operand:FP 0 "gcn_valu_dst_operand")
+ 	(fminmaxop:FP
+ 	  (match_operand:FP 1 "gcn_valu_src0_operand")
+ 	  (match_operand:FP 2 "gcn_valu_src1_operand")))]
+   ""
+   {})
+ 
+ (define_expand "<fexpander><mode>3<exec>"
+   [(set (match_operand:V_FP 0 "gcn_valu_dst_operand")
+ 	(fminmaxop:V_FP
+ 	  (match_operand:V_FP 1 "gcn_valu_src0_operand")
+ 	  (match_operand:V_FP 2 "gcn_valu_src1_operand")))]
+   ""
+   {})
+ 
  ;; }}}
  ;; {{{ FP unops
  
***************
*** 2307,2312 ****
--- 2896,3090 ----
    [(set_attr "type" "vop1")
     (set_attr "length" "8")])
  
+ ; These FP unops have f64, f32 and f16 versions.
+ (define_int_iterator MATH_UNOP_1OR2REG
+   [UNSPEC_FLOOR UNSPEC_CEIL])
+ 
+ ; These FP unops only have f16/f32 versions.
+ (define_int_iterator MATH_UNOP_1REG
+   [UNSPEC_EXP2 UNSPEC_LOG2])
+ 
+ (define_int_iterator MATH_UNOP_TRIG
+   [UNSPEC_SIN UNSPEC_COS])
+ 
+ (define_int_attr math_unop
+   [(UNSPEC_FLOOR "floor")
+    (UNSPEC_CEIL "ceil")
+    (UNSPEC_EXP2 "exp2")
+    (UNSPEC_LOG2 "log2")
+    (UNSPEC_SIN "sin")
+    (UNSPEC_COS "cos")])
+ 
+ (define_int_attr math_unop_insn
+   [(UNSPEC_FLOOR "floor")
+    (UNSPEC_CEIL "ceil")
+    (UNSPEC_EXP2 "exp")
+    (UNSPEC_LOG2 "log")
+    (UNSPEC_SIN "sin")
+    (UNSPEC_COS "cos")])
+ 
+ (define_insn "<math_unop><mode>2"
+   [(set (match_operand:FP 0 "register_operand"  "=  v")
+ 	(unspec:FP
+ 	  [(match_operand:FP 1 "gcn_alu_operand" "vSvB")]
+ 	  MATH_UNOP_1OR2REG))]
+   ""
+   "v_<math_unop_insn>%i0\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "<math_unop><mode>2<exec>"
+   [(set (match_operand:V_FP 0 "register_operand"  "=  v")
+ 	(unspec:V_FP
+ 	  [(match_operand:V_FP 1 "gcn_alu_operand" "vSvB")]
+ 	  MATH_UNOP_1OR2REG))]
+   ""
+   "v_<math_unop_insn>%i0\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "<math_unop><mode>2"
+   [(set (match_operand:FP_1REG 0 "register_operand"  "=  v")
+ 	(unspec:FP_1REG
+ 	  [(match_operand:FP_1REG 1 "gcn_alu_operand" "vSvB")]
+ 	  MATH_UNOP_1REG))]
+   "flag_unsafe_math_optimizations"
+   "v_<math_unop_insn>%i0\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "<math_unop><mode>2<exec>"
+   [(set (match_operand:V_FP_1REG 0 "register_operand"  "=  v")
+ 	(unspec:V_FP_1REG
+ 	  [(match_operand:V_FP_1REG 1 "gcn_alu_operand" "vSvB")]
+ 	  MATH_UNOP_1REG))]
+   "flag_unsafe_math_optimizations"
+   "v_<math_unop_insn>%i0\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "*<math_unop><mode>2_insn"
+   [(set (match_operand:FP_1REG 0 "register_operand"  "=  v")
+ 	(unspec:FP_1REG
+ 	  [(match_operand:FP_1REG 1 "gcn_alu_operand" "vSvB")]
+ 	  MATH_UNOP_TRIG))]
+   "flag_unsafe_math_optimizations"
+   "v_<math_unop_insn>%i0\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "*<math_unop><mode>2<exec>_insn"
+   [(set (match_operand:V_FP_1REG 0 "register_operand"  "=  v")
+ 	(unspec:V_FP_1REG
+ 	  [(match_operand:V_FP_1REG 1 "gcn_alu_operand" "vSvB")]
+ 	  MATH_UNOP_TRIG))]
+   "flag_unsafe_math_optimizations"
+   "v_<math_unop_insn>%i0\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ ; Trigonometric functions need their input scaled by 1/(2*PI) first.
+ 
+ (define_expand "<math_unop><mode>2"
+   [(set (match_dup 2)
+ 	(mult:FP_1REG
+ 	  (match_dup 3)
+ 	  (match_operand:FP_1REG 1 "gcn_alu_operand")))
+    (set (match_operand:FP_1REG 0 "register_operand")
+ 	(unspec:FP_1REG
+ 	  [(match_dup 2)]
+ 	  MATH_UNOP_TRIG))]
+   "flag_unsafe_math_optimizations"
+   {
+     operands[2] = gen_reg_rtx (<MODE>mode);
+     operands[3] = const_double_from_real_value (gcn_dconst1over2pi (),
+ 						<MODE>mode);
+   })
+ 
+ (define_expand "<math_unop><mode>2<exec>"
+   [(set (match_dup 2)
+ 	(mult:V_FP_1REG
+ 	  (match_dup 3)
+ 	  (match_operand:V_FP_1REG 1 "gcn_alu_operand")))
+    (set (match_operand:V_FP_1REG 0 "register_operand")
+ 	(unspec:V_FP_1REG
+ 	  [(match_dup 2)]
+ 	  MATH_UNOP_TRIG))]
+   "flag_unsafe_math_optimizations"
+   {
+     operands[2] = gen_reg_rtx (<MODE>mode);
+     operands[3] =
+ 	gcn_vec_constant (<MODE>mode,
+ 			  const_double_from_real_value (gcn_dconst1over2pi (),
+ 							<SCALAR_MODE>mode));
+   })
+ 
+ ; Implement ldexp pattern
+ 
+ (define_insn "ldexp<mode>3"
+   [(set (match_operand:FP 0 "register_operand"  "=v")
+ 	(unspec:FP
+ 	  [(match_operand:FP 1 "gcn_alu_operand" "vB")
+ 	   (match_operand:SI 2 "gcn_alu_operand" "vSvA")]
+ 	  UNSPEC_LDEXP))]
+   ""
+   "v_ldexp%i0\t%0, %1, %2"
+   [(set_attr "type" "vop3a")
+    (set_attr "length" "8")])
+ 
+ (define_insn "ldexp<mode>3<exec>"
+   [(set (match_operand:V_FP 0 "register_operand"     "=  v")
+ 	(unspec:V_FP
+ 	  [(match_operand:V_FP 1 "gcn_alu_operand"   "  vB")
+ 	   (match_operand:<VnSI> 2 "gcn_alu_operand" "vSvA")]
+ 	  UNSPEC_LDEXP))]
+   ""
+   "v_ldexp%i0\t%0, %1, %2"
+   [(set_attr "type" "vop3a")
+    (set_attr "length" "8")])
+ 
+ ; Implement frexp patterns
+ 
+ (define_insn "frexp<mode>_exp2"
+   [(set (match_operand:SI 0 "register_operand" "=v")
+ 	(unspec:SI
+ 	  [(match_operand:FP 1 "gcn_alu_operand" "vB")]
+ 	  UNSPEC_FREXP_EXP))]
+   ""
+   "v_frexp_exp_i32%i1\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "frexp<mode>_mant2"
+   [(set (match_operand:FP 0 "register_operand" "=v")
+ 	(unspec:FP
+ 	  [(match_operand:FP 1 "gcn_alu_operand" "vB")]
+ 	  UNSPEC_FREXP_MANT))]
+   ""
+   "v_frexp_mant%i1\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "frexp<mode>_exp2<exec>"
+   [(set (match_operand:<VnSI> 0 "register_operand" "=v")
+ 	(unspec:<VnSI>
+ 	  [(match_operand:V_FP 1 "gcn_alu_operand" "vB")]
+ 	  UNSPEC_FREXP_EXP))]
+   ""
+   "v_frexp_exp_i32%i1\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
+ (define_insn "frexp<mode>_mant2<exec>"
+   [(set (match_operand:V_FP 0 "register_operand" "=v")
+ 	(unspec:V_FP
+ 	  [(match_operand:V_FP 1 "gcn_alu_operand" "vB")]
+ 	  UNSPEC_FREXP_MANT))]
+   ""
+   "v_frexp_mant%i1\t%0, %1"
+   [(set_attr "type" "vop1")
+    (set_attr "length" "8")])
+ 
  ;; }}}
  ;; {{{ FP fused multiply and add
  
***************
*** 2356,2361 ****
--- 3134,3189 ----
    [(set_attr "type" "vop3a")
     (set_attr "length" "8")])
  
+ (define_insn "fms<mode>4<exec>"
+   [(set (match_operand:V_FP 0 "register_operand"  "=  v,   v")
+ 	(fma:V_FP
+ 	  (match_operand:V_FP 1 "gcn_alu_operand" "% vA,  vA")
+ 	(match_operand:V_FP 2 "gcn_alu_operand"   "  vA,vSvA")
+ 	(neg:V_FP
+ 	  (match_operand:V_FP 3 "gcn_alu_operand" "vSvA,  vA"))))]
+   ""
+   "v_fma%i0\t%0, %1, %2, -%3"
+   [(set_attr "type" "vop3a")
+    (set_attr "length" "8")])
+ 
+ (define_insn "fms<mode>4_negop2<exec>"
+   [(set (match_operand:V_FP 0 "register_operand"    "=  v,   v,   v")
+ 	(fma:V_FP
+ 	  (match_operand:V_FP 1 "gcn_alu_operand"   "  vA,  vA,vSvA")
+ 	  (neg:V_FP
+ 	    (match_operand:V_FP 2 "gcn_alu_operand" "  vA,vSvA,  vA"))
+ 	  (neg:V_FP
+ 	    (match_operand:V_FP 3 "gcn_alu_operand" "vSvA,  vA,  vA"))))]
+   ""
+   "v_fma%i0\t%0, %1, -%2, -%3"
+   [(set_attr "type" "vop3a")
+    (set_attr "length" "8")])
+ 
+ (define_insn "fms<mode>4"
+   [(set (match_operand:FP 0 "register_operand"    "=  v,   v")
+ 	(fma:FP
+ 	  (match_operand:FP 1 "gcn_alu_operand"   "% vA,  vA")
+ 	  (match_operand:FP 2 "gcn_alu_operand"   "  vA,vSvA")
+ 	  (neg:FP
+ 	    (match_operand:FP 3 "gcn_alu_operand" "vSvA,  vA"))))]
+   ""
+   "v_fma%i0\t%0, %1, %2, -%3"
+   [(set_attr "type" "vop3a")
+    (set_attr "length" "8")])
+ 
+ (define_insn "fms<mode>4_negop2"
+   [(set (match_operand:FP 0 "register_operand"    "=  v,   v,   v")
+ 	(fma:FP
+ 	  (match_operand:FP 1 "gcn_alu_operand"   "  vA,  vA,vSvA")
+ 	  (neg:FP
+ 	    (match_operand:FP 2 "gcn_alu_operand" "  vA,vSvA,  vA"))
+ 	  (neg:FP
+ 	    (match_operand:FP 3 "gcn_alu_operand" "vSvA,  vA,  vA"))))]
+   ""
+   "v_fma%i0\t%0, %1, -%2, -%3"
+   [(set_attr "type" "vop3a")
+    (set_attr "length" "8")])
+ 
  ;; }}}
  ;; {{{ FP division
  
***************
*** 2476,2484 ****
  (define_mode_iterator CVT_FROM_MODE [HI SI HF SF DF])
  (define_mode_iterator CVT_TO_MODE [HI SI HF SF DF])
  
! (define_mode_iterator VCVT_MODE [V64HI V64SI V64HF V64SF V64DF])
! (define_mode_iterator VCVT_FMODE [V64HF V64SF V64DF])
! (define_mode_iterator VCVT_IMODE [V64HI V64SI])
  
  (define_code_iterator cvt_op [fix unsigned_fix
  			      float unsigned_float
--- 3304,3330 ----
  (define_mode_iterator CVT_FROM_MODE [HI SI HF SF DF])
  (define_mode_iterator CVT_TO_MODE [HI SI HF SF DF])
  
! (define_mode_iterator VCVT_MODE
! 		      [V2HI V2SI V2HF V2SF V2DF
! 		       V4HI V4SI V4HF V4SF V4DF
! 		       V8HI V8SI V8HF V8SF V8DF
! 		       V16HI V16SI V16HF V16SF V16DF
! 		       V32HI V32SI V32HF V32SF V32DF
! 		       V64HI V64SI V64HF V64SF V64DF])
! (define_mode_iterator VCVT_FMODE
! 		      [V2HF V2SF V2DF
! 		       V4HF V4SF V4DF
! 		       V8HF V8SF V8DF
! 		       V16HF V16SF V16DF
! 		       V32HF V32SF V32DF
! 		       V64HF V64SF V64DF])
! (define_mode_iterator VCVT_IMODE
! 		      [V2HI V2SI
! 		       V4HI V4SI
! 		       V8HI V8SI
! 		       V16HI V16SI
! 		       V32HI V32SI
! 		       V64HI V64SI])
  
  (define_code_iterator cvt_op [fix unsigned_fix
  			      float unsigned_float
***************
*** 2505,2512 ****
    [(set (match_operand:VCVT_FMODE 0 "register_operand" "=  v")
  	(cvt_op:VCVT_FMODE
  	  (match_operand:VCVT_MODE 1 "gcn_alu_operand" "vSvB")))]
!   "gcn_valid_cvt_p (<VCVT_MODE:MODE>mode, <VCVT_FMODE:MODE>mode,
! 		    <cvt_name>_cvt)"
    "v_cvt<cvt_operands>\t%0, %1"
    [(set_attr "type" "vop1")
     (set_attr "length" "8")])
--- 3351,3359 ----
    [(set (match_operand:VCVT_FMODE 0 "register_operand" "=  v")
  	(cvt_op:VCVT_FMODE
  	  (match_operand:VCVT_MODE 1 "gcn_alu_operand" "vSvB")))]
!   "MODE_VF (<VCVT_MODE:MODE>mode) == MODE_VF (<VCVT_FMODE:MODE>mode)
!    && gcn_valid_cvt_p (<VCVT_MODE:MODE>mode, <VCVT_FMODE:MODE>mode,
! 		       <cvt_name>_cvt)"
    "v_cvt<cvt_operands>\t%0, %1"
    [(set_attr "type" "vop1")
     (set_attr "length" "8")])
***************
*** 2515,2522 ****
    [(set (match_operand:VCVT_IMODE 0 "register_operand"  "=  v")
  	(cvt_op:VCVT_IMODE
  	  (match_operand:VCVT_FMODE 1 "gcn_alu_operand" "vSvB")))]
!   "gcn_valid_cvt_p (<VCVT_FMODE:MODE>mode, <VCVT_IMODE:MODE>mode,
! 		    <cvt_name>_cvt)"
    "v_cvt<cvt_operands>\t%0, %1"
    [(set_attr "type" "vop1")
     (set_attr "length" "8")])
--- 3362,3370 ----
    [(set (match_operand:VCVT_IMODE 0 "register_operand"  "=  v")
  	(cvt_op:VCVT_IMODE
  	  (match_operand:VCVT_FMODE 1 "gcn_alu_operand" "vSvB")))]
!   "MODE_VF (<VCVT_IMODE:MODE>mode) == MODE_VF (<VCVT_FMODE:MODE>mode)
!    && gcn_valid_cvt_p (<VCVT_FMODE:MODE>mode, <VCVT_IMODE:MODE>mode,
! 		       <cvt_name>_cvt)"
    "v_cvt<cvt_operands>\t%0, %1"
    [(set_attr "type" "vop1")
     (set_attr "length" "8")])
***************
*** 2888,2894 ****
  (define_expand "while_ultsidi"
    [(match_operand:DI 0 "register_operand")
     (match_operand:SI 1 "")
!    (match_operand:SI 2 "")]
    ""
    {
      if (GET_CODE (operands[1]) != CONST_INT
--- 3736,3743 ----
  (define_expand "while_ultsidi"
    [(match_operand:DI 0 "register_operand")
     (match_operand:SI 1 "")
!    (match_operand:SI 2 "")
!    (match_operand:SI 3 "")]
    ""
    {
      if (GET_CODE (operands[1]) != CONST_INT
***************
*** 2913,2918 ****
--- 3762,3772 ----
  			      : ~((unsigned HOST_WIDE_INT)-1 << diff));
  	emit_move_insn (operands[0], gen_rtx_CONST_INT (VOIDmode, mask));
        }
+     if (INTVAL (operands[3]) < 64)
+       emit_insn (gen_anddi3 (operands[0], operands[0],
+ 			     gen_rtx_CONST_INT (VOIDmode,
+ 						~((unsigned HOST_WIDE_INT)-1
+ 						  << INTVAL (operands[3])))));
      DONE;
    })
  
***************
*** 3030,3036 ****
      DONE;
    })
  
! ;; TODO smin umin smax umax
  (define_code_iterator cond_bitop [and ior xor])
  
  (define_expand "cond_<expander><mode>"
--- 3884,3932 ----
      DONE;
    })
  
! (define_code_iterator cond_fminmaxop [smin smax])
! 
! (define_expand "cond_<fexpander><mode>"
!   [(match_operand:V_FP 0 "register_operand")
!    (match_operand:DI 1 "register_operand")
!    (cond_fminmaxop:V_FP
!      (match_operand:V_FP 2 "gcn_alu_operand")
!      (match_operand:V_FP 3 "gcn_alu_operand"))
!    (match_operand:V_FP 4 "register_operand")]
!   ""
!   {
!     operands[1] = force_reg (DImode, operands[1]);
!     operands[2] = force_reg (<MODE>mode, operands[2]);
! 
!     emit_insn (gen_<fexpander><mode>3_exec (operands[0], operands[2],
! 					    operands[3], operands[4],
! 					    operands[1]));
!     DONE;
!   })
! 
! (define_code_iterator cond_minmaxop [smin smax umin umax])
! 
! (define_expand "cond_<expander><mode>"
!   [(match_operand:V_INT 0 "register_operand")
!    (match_operand:DI 1 "register_operand")
!    (cond_minmaxop:V_INT
!      (match_operand:V_INT 2 "gcn_alu_operand")
!      (match_operand:V_INT 3 "gcn_alu_operand"))
!    (match_operand:V_INT 4 "register_operand")]
!   ""
!   {
!     operands[1] = force_reg (DImode, operands[1]);
!     operands[2] = force_reg (<MODE>mode, operands[2]);
!     rtx tmp = gen_reg_rtx (<MODE>mode);
! 
!     emit_insn (gen_<expander><mode>3_exec (tmp, operands[2], operands[3],
!                                            gcn_gen_undef(<MODE>mode),
!                                            operands[1]));
!     emit_insn (gen_vcond_mask_<mode>di (operands[0], tmp, operands[4],
!                                         operands[1]));
!     DONE;
!   })
! 
  (define_code_iterator cond_bitop [and ior xor])
  
  (define_expand "cond_<expander><mode>"
***************
*** 3051,3056 ****
--- 3947,3975 ----
      DONE;
    })
  
+ (define_code_iterator cond_shiftop [ashift lshiftrt ashiftrt])
+ 
+ (define_expand "cond_<expander><mode>"
+   [(match_operand:V_INT_noHI 0 "register_operand")
+    (match_operand:DI 1 "register_operand")
+    (cond_shiftop:V_INT_noHI
+      (match_operand:V_INT_noHI 2 "gcn_alu_operand")
+      (match_operand:V_INT_noHI 3 "gcn_alu_operand"))
+    (match_operand:V_INT_noHI 4 "register_operand")]
+   ""
+   {
+     operands[1] = force_reg (DImode, operands[1]);
+     operands[2] = force_reg (<MODE>mode, operands[2]);
+ 
+     rtx shiftby = gen_reg_rtx (<VnSI>mode);
+     convert_move (shiftby, operands[3], 0);
+ 
+     emit_insn (gen_v<expander><mode>3_exec (operands[0], operands[2],
+                                             shiftby, operands[4],
+                                             operands[1]));
+     DONE;
+   })
+ 
  ;; }}}
  ;; {{{ Vector reductions
  
***************
*** 3102,3110 ****
      rtx tmp = gcn_expand_reduc_scalar (<MODE>mode, operands[1],
  				       <reduc_unspec>);
  
!     /* The result of the reduction is in lane 63 of tmp.  */
!     emit_insn (gen_mov_from_lane63_<mode> (operands[0], tmp));
  
      DONE;
    })
  
--- 4021,4041 ----
      rtx tmp = gcn_expand_reduc_scalar (<MODE>mode, operands[1],
  				       <reduc_unspec>);
  
!     rtx last_lane = GEN_INT (GET_MODE_NUNITS (<MODE>mode) - 1);
!     emit_insn (gen_vec_extract<mode><scalar_mode> (operands[0], tmp,
! 						   last_lane));
! 
!     DONE;
!   })
  
+ (define_expand "reduc_<fexpander>_scal_<mode>"
+   [(match_operand:<SCALAR_MODE> 0 "register_operand")
+    (fminmaxop:V_FP
+      (match_operand:V_FP 1 "register_operand"))]
+   ""
+   {
+     /* fmin/fmax are identical to smin/smax.  */
+     emit_insn (gen_reduc_<expander>_scal_<mode> (operands[0], operands[1]));
      DONE;
    })
  
***************
*** 3134,3140 ****
  	(unspec:V_1REG
  	  [(match_operand:V_1REG 1 "register_operand" "v")
  	   (match_operand:V_1REG 2 "register_operand" "v")
! 	   (match_operand:SI 3 "const_int_operand"    "n")]
  	  REDUC_UNSPEC))]
    ; GCN3 requires a carry out, GCN5 not
    "!(TARGET_GCN3 && SCALAR_INT_MODE_P (<SCALAR_MODE>mode)
--- 4065,4071 ----
  	(unspec:V_1REG
  	  [(match_operand:V_1REG 1 "register_operand" "v")
  	   (match_operand:V_1REG 2 "register_operand" "v")
! 	   (match_operand:SI 3 "const_int_operand"        "n")]
  	  REDUC_UNSPEC))]
    ; GCN3 requires a carry out, GCN5 not
    "!(TARGET_GCN3 && SCALAR_INT_MODE_P (<SCALAR_MODE>mode)
***************
*** 3242,3279 ****
    [(set_attr "type" "vmult")
     (set_attr "length" "16")])
  
- ; Instructions to move a scalar value from lane 63 of a vector register.
- (define_insn "mov_from_lane63_<mode>"
-   [(set (match_operand:<SCALAR_MODE> 0 "register_operand" "=Sg,v")
- 	(unspec:<SCALAR_MODE>
- 	  [(match_operand:V_1REG 1 "register_operand"	  "  v,v")]
- 	  UNSPEC_MOV_FROM_LANE63))]
-   ""
-   "@
-    v_readlane_b32\t%0, %1, 63
-    v_mov_b32\t%0, %1 wave_ror:1"
-   [(set_attr "type" "vop3a,vop_dpp")
-    (set_attr "exec" "none,*")
-    (set_attr "length" "8")])
- 
- (define_insn "mov_from_lane63_<mode>"
-   [(set (match_operand:<SCALAR_MODE> 0 "register_operand" "=Sg,v")
- 	(unspec:<SCALAR_MODE>
- 	  [(match_operand:V_2REG 1 "register_operand"	  "  v,v")]
- 	  UNSPEC_MOV_FROM_LANE63))]
-   ""
-   "@
-    v_readlane_b32\t%L0, %L1, 63\;v_readlane_b32\t%H0, %H1, 63
-    * if (REGNO (operands[0]) <= REGNO (operands[1]))	\
-        return \"v_mov_b32\t%L0, %L1 wave_ror:1\;\"	\
- 	      \"v_mov_b32\t%H0, %H1 wave_ror:1\";	\
-      else						\
-        return \"v_mov_b32\t%H0, %H1 wave_ror:1\;\"	\
- 	      \"v_mov_b32\t%L0, %L1 wave_ror:1\";"
-   [(set_attr "type" "vop3a,vop_dpp")
-    (set_attr "exec" "none,*")
-    (set_attr "length" "8")])
- 
  ;; }}}
  ;; {{{ Miscellaneous
  
--- 4173,4178 ----
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn.cc gcc-13.1.0/gcc/config/gcn/gcn.cc
*** gcc-12.2.0/gcc/config/gcn/gcn.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
***************
*** 52,57 ****
--- 52,59 ----
  #include "rtl-iter.h"
  #include "dwarf2.h"
  #include "gimple.h"
+ #include "cgraph.h"
+ #include "case-cfn-macros.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** static bool ext_gcn_constants_init = 0;
*** 66,72 ****
  
  /* Holds the ISA variant, derived from the command line parameters.  */
  
! int gcn_isa = 3;		/* Default to GCN3.  */
  
  /* Reserve this much space for LDS (for propagating variables from
     worker-single mode to worker-partitioned mode), per workgroup.  Global
--- 68,74 ----
  
  /* Holds the ISA variant, derived from the command line parameters.  */
  
! enum gcn_isa gcn_isa = ISA_GCN3;	/* Default to GCN3.  */
  
  /* Reserve this much space for LDS (for propagating variables from
     worker-single mode to worker-partitioned mode), per workgroup.  Global
*************** gcn_option_override (void)
*** 129,150 ****
    if (!flag_pic)
      flag_pic = flag_pie;
  
!   gcn_isa = gcn_arch == PROCESSOR_FIJI ? 3 : 5;
! 
!   /* The default stack size needs to be small for offload kernels because
!      there may be many, many threads.  Also, a smaller stack gives a
!      measureable performance boost.  But, a small stack is insufficient
!      for running the testsuite, so we use a larger default for the stand
!      alone case.  */
!   if (stack_size_opt == -1)
!     {
!       if (flag_openacc || flag_openmp)
! 	/* 512 bytes per work item = 32kB total.  */
! 	stack_size_opt = 512 * 64;
!       else
! 	/* 1MB total.  */
! 	stack_size_opt = 1048576;
!     }
  
    /* Reserve 1Kb (somewhat arbitrarily) of LDS space for reduction results and
       worker broadcasts.  */
--- 131,143 ----
    if (!flag_pic)
      flag_pic = flag_pie;
  
!   gcn_isa = (gcn_arch == PROCESSOR_FIJI ? ISA_GCN3
!       : gcn_arch == PROCESSOR_VEGA10 ? ISA_GCN5
!       : gcn_arch == PROCESSOR_VEGA20 ? ISA_GCN5
!       : gcn_arch == PROCESSOR_GFX908 ? ISA_CDNA1
!       : gcn_arch == PROCESSOR_GFX90a ? ISA_CDNA2
!       : ISA_UNKNOWN);
!   gcc_assert (gcn_isa != ISA_UNKNOWN);
  
    /* Reserve 1Kb (somewhat arbitrarily) of LDS space for reduction results and
       worker broadcasts.  */
*************** static const struct gcn_kernel_arg_type
*** 221,231 ****
  };
  
  static const long default_requested_args
! 	= (1 << PRIVATE_SEGMENT_BUFFER_ARG)
! 	  | (1 << DISPATCH_PTR_ARG)
  	  | (1 << QUEUE_PTR_ARG)
  	  | (1 << KERNARG_SEGMENT_PTR_ARG)
- 	  | (1 << PRIVATE_SEGMENT_WAVE_OFFSET_ARG)
  	  | (1 << WORKGROUP_ID_X_ARG)
  	  | (1 << WORK_ITEM_ID_X_ARG)
  	  | (1 << WORK_ITEM_ID_Y_ARG)
--- 214,222 ----
  };
  
  static const long default_requested_args
! 	= (1 << DISPATCH_PTR_ARG)
  	  | (1 << QUEUE_PTR_ARG)
  	  | (1 << KERNARG_SEGMENT_PTR_ARG)
  	  | (1 << WORKGROUP_ID_X_ARG)
  	  | (1 << WORK_ITEM_ID_X_ARG)
  	  | (1 << WORK_ITEM_ID_Y_ARG)
*************** gcn_scalar_mode_supported_p (scalar_mode
*** 388,393 ****
--- 379,475 ----
  	  || mode == TImode);
  }
  
+ /* Return a vector mode with N lanes of MODE.  */
+ 
+ static machine_mode
+ VnMODE (int n, machine_mode mode)
+ {
+   switch (mode)
+     {
+     case E_QImode:
+       switch (n)
+ 	{
+ 	case 2: return V2QImode;
+ 	case 4: return V4QImode;
+ 	case 8: return V8QImode;
+ 	case 16: return V16QImode;
+ 	case 32: return V32QImode;
+ 	case 64: return V64QImode;
+ 	}
+       break;
+     case E_HImode:
+       switch (n)
+ 	{
+ 	case 2: return V2HImode;
+ 	case 4: return V4HImode;
+ 	case 8: return V8HImode;
+ 	case 16: return V16HImode;
+ 	case 32: return V32HImode;
+ 	case 64: return V64HImode;
+ 	}
+       break;
+     case E_HFmode:
+       switch (n)
+ 	{
+ 	case 2: return V2HFmode;
+ 	case 4: return V4HFmode;
+ 	case 8: return V8HFmode;
+ 	case 16: return V16HFmode;
+ 	case 32: return V32HFmode;
+ 	case 64: return V64HFmode;
+ 	}
+       break;
+     case E_SImode:
+       switch (n)
+ 	{
+ 	case 2: return V2SImode;
+ 	case 4: return V4SImode;
+ 	case 8: return V8SImode;
+ 	case 16: return V16SImode;
+ 	case 32: return V32SImode;
+ 	case 64: return V64SImode;
+ 	}
+       break;
+     case E_SFmode:
+       switch (n)
+ 	{
+ 	case 2: return V2SFmode;
+ 	case 4: return V4SFmode;
+ 	case 8: return V8SFmode;
+ 	case 16: return V16SFmode;
+ 	case 32: return V32SFmode;
+ 	case 64: return V64SFmode;
+ 	}
+       break;
+     case E_DImode:
+       switch (n)
+ 	{
+ 	case 2: return V2DImode;
+ 	case 4: return V4DImode;
+ 	case 8: return V8DImode;
+ 	case 16: return V16DImode;
+ 	case 32: return V32DImode;
+ 	case 64: return V64DImode;
+ 	}
+       break;
+     case E_DFmode:
+       switch (n)
+ 	{
+ 	case 2: return V2DFmode;
+ 	case 4: return V4DFmode;
+ 	case 8: return V8DFmode;
+ 	case 16: return V16DFmode;
+ 	case 32: return V32DFmode;
+ 	case 64: return V64DFmode;
+ 	}
+       break;
+     default:
+       break;
+     }
+ 
+   return VOIDmode;
+ }
+ 
  /* Implement TARGET_CLASS_MAX_NREGS.
   
     Return the number of hard registers needed to hold a value of MODE in
*************** gcn_class_max_nregs (reg_class_t rclass,
*** 410,415 ****
--- 492,506 ----
      }
    else if (rclass == VCC_CONDITIONAL_REG && mode == BImode)
      return 2;
+ 
+   /* Vector modes in SGPRs are not supposed to happen (disallowed by
+      gcn_hard_regno_mode_ok), but there are some patterns that have an "Sv"
+      constraint and are used by splitters, post-reload.
+      This ensures that we don't accidentally mark the following 63 scalar
+      registers as "live".  */
+   if (rclass == SGPR_REGS && VECTOR_MODE_P (mode))
+     return CEIL (GET_MODE_SIZE (GET_MODE_INNER (mode)), 4);
+ 
    return CEIL (GET_MODE_SIZE (mode), 4);
  }
  
*************** gcn_can_change_mode_class (machine_mode
*** 549,554 ****
--- 640,662 ----
  {
    if (!vgpr_vector_mode_p (from) && !vgpr_vector_mode_p (to))
      return true;
+ 
+   /* Vector conversions are only valid when changing mode with a fixed number
+      of lanes, or changing number of lanes with a fixed mode.  Anything else
+      would require actual data movement.  */
+   if (VECTOR_MODE_P (from) && VECTOR_MODE_P (to)
+       && GET_MODE_NUNITS (from) != GET_MODE_NUNITS (to)
+       && GET_MODE_INNER (from) != GET_MODE_INNER (to))
+     return false;
+ 
+   /* Vector/scalar conversions are only permitted when the scalar mode
+      is the same or smaller than the inner vector mode.  */
+   if ((VECTOR_MODE_P (from) && !VECTOR_MODE_P (to)
+        && GET_MODE_SIZE (to) >= GET_MODE_SIZE (GET_MODE_INNER (from)))
+       || (VECTOR_MODE_P (to) && !VECTOR_MODE_P (from)
+ 	  && GET_MODE_SIZE (from) >= GET_MODE_SIZE (GET_MODE_INNER (to))))
+     return false;
+ 
    return (gcn_class_max_nregs (regclass, from)
  	  == gcn_class_max_nregs (regclass, to));
  }
*************** gcn_class_likely_spilled_p (reg_class_t
*** 588,593 ****
--- 696,711 ----
  bool
  gcn_modes_tieable_p (machine_mode mode1, machine_mode mode2)
  {
+   if (VECTOR_MODE_P (mode1) || VECTOR_MODE_P (mode2))
+     {
+       int vf1 = (VECTOR_MODE_P (mode1) ? GET_MODE_NUNITS (mode1) : 1);
+       int vf2 = (VECTOR_MODE_P (mode2) ? GET_MODE_NUNITS (mode2) : 1);
+       machine_mode inner1 = (vf1 > 1 ? GET_MODE_INNER (mode1) : mode1);
+       machine_mode inner2 = (vf2 > 1 ? GET_MODE_INNER (mode2) : mode2);
+ 
+       return (vf1 == vf2 || (inner1 == inner2 && vf2 <= vf1));
+     }
+ 
    return (GET_MODE_BITSIZE (mode1) <= MAX_FIXED_MODE_SIZE
  	  && GET_MODE_BITSIZE (mode2) <= MAX_FIXED_MODE_SIZE);
  }
*************** gcn_truly_noop_truncation (poly_uint64 o
*** 609,622 ****
  rtx
  gcn_operand_part (machine_mode mode, rtx op, int n)
  {
!   if (GET_MODE_SIZE (mode) >= 256)
      {
!       /*gcc_assert (GET_MODE_SIZE (mode) == 256 || n == 0);  */
  
        if (REG_P (op))
  	{
  	  gcc_assert (REGNO (op) + n < FIRST_PSEUDO_REGISTER);
! 	  return gen_rtx_REG (V64SImode, REGNO (op) + n);
  	}
        if (GET_CODE (op) == CONST_VECTOR)
  	{
--- 727,742 ----
  rtx
  gcn_operand_part (machine_mode mode, rtx op, int n)
  {
!   int vf = VECTOR_MODE_P (mode) ? GET_MODE_NUNITS (mode) : 1;
! 
!   if (vf > 1)
      {
!       machine_mode vsimode = VnMODE (vf, SImode);
  
        if (REG_P (op))
  	{
  	  gcc_assert (REGNO (op) + n < FIRST_PSEUDO_REGISTER);
! 	  return gen_rtx_REG (vsimode, REGNO (op) + n);
  	}
        if (GET_CODE (op) == CONST_VECTOR)
  	{
*************** gcn_operand_part (machine_mode mode, rtx
*** 627,636 ****
  	    RTVEC_ELT (v, i) = gcn_operand_part (GET_MODE_INNER (mode),
  						 CONST_VECTOR_ELT (op, i), n);
  
! 	  return gen_rtx_CONST_VECTOR (V64SImode, v);
  	}
        if (GET_CODE (op) == UNSPEC && XINT (op, 1) == UNSPEC_VECTOR)
! 	return gcn_gen_undef (V64SImode);
        gcc_unreachable ();
      }
    else if (GET_MODE_SIZE (mode) == 8 && REG_P (op))
--- 747,756 ----
  	    RTVEC_ELT (v, i) = gcn_operand_part (GET_MODE_INNER (mode),
  						 CONST_VECTOR_ELT (op, i), n);
  
! 	  return gen_rtx_CONST_VECTOR (vsimode, v);
  	}
        if (GET_CODE (op) == UNSPEC && XINT (op, 1) == UNSPEC_VECTOR)
! 	return gcn_gen_undef (vsimode);
        gcc_unreachable ();
      }
    else if (GET_MODE_SIZE (mode) == 8 && REG_P (op))
*************** static reg_class_t
*** 687,693 ****
  gcn_spill_class (reg_class_t c, machine_mode /*mode */ )
  {
    if (reg_classes_intersect_p (ALL_CONDITIONAL_REGS, c)
!       || c == VCC_CONDITIONAL_REG)
      return SGPR_REGS;
    else
      return NO_REGS;
--- 807,813 ----
  gcn_spill_class (reg_class_t c, machine_mode /*mode */ )
  {
    if (reg_classes_intersect_p (ALL_CONDITIONAL_REGS, c)
!       || c == VCC_CONDITIONAL_REG || c == EXEC_MASK_REG)
      return SGPR_REGS;
    else
      return NO_REGS;
*************** gcn_ira_change_pseudo_allocno_class (int
*** 719,725 ****
  /* Create a new DImode pseudo reg and emit an instruction to initialize
     it to VAL.  */
  
! static rtx
  get_exec (int64_t val)
  {
    rtx reg = gen_reg_rtx (DImode);
--- 839,845 ----
  /* Create a new DImode pseudo reg and emit an instruction to initialize
     it to VAL.  */
  
! rtx
  get_exec (int64_t val)
  {
    rtx reg = gen_reg_rtx (DImode);
*************** get_exec (int64_t val)
*** 727,762 ****
    return reg;
  }
  
- /* Return value of scalar exec register.  */
- 
- rtx
- gcn_scalar_exec ()
- {
-   return const1_rtx;
- }
- 
- /* Return pseudo holding scalar exec register.  */
- 
- rtx
- gcn_scalar_exec_reg ()
- {
-   return get_exec (1);
- }
- 
- /* Return value of full exec register.  */
- 
  rtx
! gcn_full_exec ()
! {
!   return constm1_rtx;
! }
! 
! /* Return pseudo holding full exec register.  */
! 
! rtx
! gcn_full_exec_reg ()
  {
!   return get_exec (-1);
  }
  
  /* }}}  */
--- 847,857 ----
    return reg;
  }
  
  rtx
! get_exec (machine_mode mode)
  {
!   int vf = (VECTOR_MODE_P (mode) ? GET_MODE_NUNITS (mode) : 1);
!   return get_exec (0xffffffffffffffffUL >> (64-vf));
  }
  
  /* }}}  */
*************** init_ext_gcn_constants (void)
*** 772,783 ****
    /* FIXME: this constant probably does not match what hardware really loads.
       Reality check it eventually.  */
    real_from_string (&dconst1over2pi,
! 		    "0.1591549430918953357663423455968866839");
    real_convert (&dconst1over2pi, SFmode, &dconst1over2pi);
  
    ext_gcn_constants_init = 1;
  }
  
  /* Return non-zero if X is a constant that can appear as an inline operand.
     This is 0, 0.5, -0.5, 1, -1, 2, -2, 4,-4, 1/(2*pi)
     Or a vector of those.
--- 867,886 ----
    /* FIXME: this constant probably does not match what hardware really loads.
       Reality check it eventually.  */
    real_from_string (&dconst1over2pi,
! 		    "0.15915494309189532");
    real_convert (&dconst1over2pi, SFmode, &dconst1over2pi);
  
    ext_gcn_constants_init = 1;
  }
  
+ REAL_VALUE_TYPE
+ gcn_dconst1over2pi (void)
+ {
+   if (!ext_gcn_constants_init)
+     init_ext_gcn_constants ();
+   return dconst1over2pi;
+ }
+ 
  /* Return non-zero if X is a constant that can appear as an inline operand.
     This is 0, 0.5, -0.5, 1, -1, 2, -2, 4,-4, 1/(2*pi)
     Or a vector of those.
*************** int
*** 787,794 ****
  gcn_inline_fp_constant_p (rtx x, bool allow_vector)
  {
    machine_mode mode = GET_MODE (x);
  
!   if ((mode == V64HFmode || mode == V64SFmode || mode == V64DFmode)
        && allow_vector)
      {
        int n;
--- 890,902 ----
  gcn_inline_fp_constant_p (rtx x, bool allow_vector)
  {
    machine_mode mode = GET_MODE (x);
+   int vf = VECTOR_MODE_P (mode) ? GET_MODE_NUNITS (mode) : 1;
  
!   if (vf > 1)
!     mode = GET_MODE_INNER (mode);
! 
!   if (vf > 1
!       && (mode == HFmode || mode == SFmode || mode == DFmode)
        && allow_vector)
      {
        int n;
*************** gcn_inline_fp_constant_p (rtx x, bool al
*** 797,803 ****
        n = gcn_inline_fp_constant_p (CONST_VECTOR_ELT (x, 0), false);
        if (!n)
  	return 0;
!       for (int i = 1; i < 64; i++)
  	if (CONST_VECTOR_ELT (x, i) != CONST_VECTOR_ELT (x, 0))
  	  return 0;
        return 1;
--- 905,911 ----
        n = gcn_inline_fp_constant_p (CONST_VECTOR_ELT (x, 0), false);
        if (!n)
  	return 0;
!       for (int i = 1; i < vf; i++)
  	if (CONST_VECTOR_ELT (x, i) != CONST_VECTOR_ELT (x, 0))
  	  return 0;
        return 1;
*************** bool
*** 852,859 ****
  gcn_fp_constant_p (rtx x, bool allow_vector)
  {
    machine_mode mode = GET_MODE (x);
  
!   if ((mode == V64HFmode || mode == V64SFmode || mode == V64DFmode)
        && allow_vector)
      {
        int n;
--- 960,972 ----
  gcn_fp_constant_p (rtx x, bool allow_vector)
  {
    machine_mode mode = GET_MODE (x);
+   int vf = VECTOR_MODE_P (mode) ? GET_MODE_NUNITS (mode) : 1;
  
!   if (vf > 1)
!     mode = GET_MODE_INNER (mode);
! 
!   if (vf > 1
!       && (mode == HFmode || mode == SFmode || mode == DFmode)
        && allow_vector)
      {
        int n;
*************** gcn_fp_constant_p (rtx x, bool allow_vec
*** 862,868 ****
        n = gcn_fp_constant_p (CONST_VECTOR_ELT (x, 0), false);
        if (!n)
  	return false;
!       for (int i = 1; i < 64; i++)
  	if (CONST_VECTOR_ELT (x, i) != CONST_VECTOR_ELT (x, 0))
  	  return false;
        return true;
--- 975,981 ----
        n = gcn_fp_constant_p (CONST_VECTOR_ELT (x, 0), false);
        if (!n)
  	return false;
!       for (int i = 1; i < vf; i++)
  	if (CONST_VECTOR_ELT (x, i) != CONST_VECTOR_ELT (x, 0))
  	  return false;
        return true;
*************** gcn_gen_undef (machine_mode mode)
*** 1076,1081 ****
--- 1189,1455 ----
  }
  
  /* }}}  */
+ /* {{{ Utility functions.  */
+ 
+ /*  Generalised accessor functions for instruction patterns.
+     The machine desription '@' prefix does something similar, but as of
+     GCC 10 is incompatible with define_subst, and anyway it doesn't
+     auto-handle the exec feature.
+ 
+     Four macros are provided; each function only needs one:
+ 
+     GEN_VN         - create accessor functions for all sizes of one mode
+     GEN_VNM        - create accessor functions for all sizes of all modes
+     GEN_VN_NOEXEC  - for insns without "_exec" variants
+     GEN_VNM_NOEXEC - likewise
+  
+     E.g.  add<mode>3
+       GEN_VNM (add, 3, A(rtx dest, rtx s1, rtx s2), A(dest, s1, s2)
+ 
+       gen_addvNsi3 (dst, a, b)
+         -> calls gen_addv64si3, or gen_addv32si3, etc.
+ 
+       gen_addvNm3 (dst, a, b)
+         -> calls gen_addv64qi3, or gen_addv2di3, etc.
+ 
+     The mode is determined from the first parameter, which must be called
+     "dest" (or else the macro doesn't work).
+ 
+     Each function has two optional parameters at the end: merge_src and exec.
+     If exec is non-null, the function will call the "_exec" variant of the
+     insn.  If exec is non-null but merge_src is null then an undef unspec
+     will be created.
+ 
+     E.g. cont.
+       gen_addvNsi3 (v64sidst, a, b, oldval, exec)
+         -> calls gen_addv64si3_exec (v64sidst, a, b, oldval, exec)
+ 
+       gen_addvNm3 (v2qidst, a, b, NULL, exec)
+         -> calls gen_addv2qi3_exec (v2qidst, a, b,
+                                     gcn_gen_undef (V2QImode), exec)
+    */
+ 
+ #define A(...) __VA_ARGS__
+ #define GEN_VN_NOEXEC(PREFIX, SUFFIX, PARAMS, ARGS) \
+ static rtx \
+ gen_##PREFIX##vN##SUFFIX (PARAMS) \
+ { \
+   machine_mode mode = GET_MODE (dest); \
+   int n = GET_MODE_NUNITS (mode); \
+   \
+   switch (n) \
+     { \
+     case 2: return gen_##PREFIX##v2##SUFFIX (ARGS); \
+     case 4: return gen_##PREFIX##v4##SUFFIX (ARGS); \
+     case 8: return gen_##PREFIX##v8##SUFFIX (ARGS); \
+     case 16: return gen_##PREFIX##v16##SUFFIX (ARGS); \
+     case 32: return gen_##PREFIX##v32##SUFFIX (ARGS); \
+     case 64: return gen_##PREFIX##v64##SUFFIX (ARGS); \
+     } \
+   \
+   gcc_unreachable (); \
+   return NULL_RTX; \
+ }
+ 
+ #define GEN_VNM_NOEXEC(PREFIX, SUFFIX, PARAMS, ARGS) \
+ GEN_VN_NOEXEC (PREFIX, qi##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN_NOEXEC (PREFIX, hi##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN_NOEXEC (PREFIX, hf##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN_NOEXEC (PREFIX, si##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN_NOEXEC (PREFIX, sf##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN_NOEXEC (PREFIX, di##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN_NOEXEC (PREFIX, df##SUFFIX, A(PARAMS), A(ARGS)) \
+ static rtx \
+ gen_##PREFIX##vNm##SUFFIX (PARAMS) \
+ { \
+   machine_mode mode = GET_MODE_INNER (GET_MODE (dest)); \
+   \
+   switch (mode) \
+     { \
+     case E_QImode: return gen_##PREFIX##vNqi##SUFFIX (ARGS); \
+     case E_HImode: return gen_##PREFIX##vNhi##SUFFIX (ARGS); \
+     case E_HFmode: return gen_##PREFIX##vNhf##SUFFIX (ARGS); \
+     case E_SImode: return gen_##PREFIX##vNsi##SUFFIX (ARGS); \
+     case E_SFmode: return gen_##PREFIX##vNsf##SUFFIX (ARGS); \
+     case E_DImode: return gen_##PREFIX##vNdi##SUFFIX (ARGS); \
+     case E_DFmode: return gen_##PREFIX##vNdf##SUFFIX (ARGS); \
+     default: \
+       break; \
+     } \
+   \
+   gcc_unreachable (); \
+   return NULL_RTX; \
+ }
+ 
+ #define GEN_VN(PREFIX, SUFFIX, PARAMS, ARGS) \
+ static rtx \
+ gen_##PREFIX##vN##SUFFIX (PARAMS, rtx merge_src=NULL, rtx exec=NULL) \
+ { \
+   machine_mode mode = GET_MODE (dest); \
+   int n = GET_MODE_NUNITS (mode); \
+   \
+   if (exec && !merge_src) \
+ 	merge_src = gcn_gen_undef (mode); \
+       \
+   if (exec) \
+     switch (n) \
+       { \
+       case 2: return gen_##PREFIX##v2##SUFFIX##_exec (ARGS, merge_src, exec); \
+       case 4: return gen_##PREFIX##v4##SUFFIX##_exec (ARGS, merge_src, exec); \
+       case 8: return gen_##PREFIX##v8##SUFFIX##_exec (ARGS, merge_src, exec); \
+       case 16: return gen_##PREFIX##v16##SUFFIX##_exec (ARGS, merge_src, exec); \
+       case 32: return gen_##PREFIX##v32##SUFFIX##_exec (ARGS, merge_src, exec); \
+       case 64: return gen_##PREFIX##v64##SUFFIX##_exec (ARGS, merge_src, exec); \
+       } \
+   else \
+     switch (n) \
+       { \
+       case 2: return gen_##PREFIX##v2##SUFFIX (ARGS); \
+       case 4: return gen_##PREFIX##v4##SUFFIX (ARGS); \
+       case 8: return gen_##PREFIX##v8##SUFFIX (ARGS); \
+       case 16: return gen_##PREFIX##v16##SUFFIX (ARGS); \
+       case 32: return gen_##PREFIX##v32##SUFFIX (ARGS); \
+       case 64: return gen_##PREFIX##v64##SUFFIX (ARGS); \
+       } \
+   \
+   gcc_unreachable (); \
+   return NULL_RTX; \
+ }
+ 
+ #define GEN_VNM(PREFIX, SUFFIX, PARAMS, ARGS) \
+ GEN_VN (PREFIX, qi##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN (PREFIX, hi##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN (PREFIX, hf##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN (PREFIX, si##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN (PREFIX, sf##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN (PREFIX, di##SUFFIX, A(PARAMS), A(ARGS)) \
+ GEN_VN (PREFIX, df##SUFFIX, A(PARAMS), A(ARGS)) \
+ static rtx \
+ gen_##PREFIX##vNm##SUFFIX (PARAMS, rtx merge_src=NULL, rtx exec=NULL) \
+ { \
+   machine_mode mode = GET_MODE_INNER (GET_MODE (dest)); \
+   \
+   switch (mode) \
+     { \
+     case E_QImode: return gen_##PREFIX##vNqi##SUFFIX (ARGS, merge_src, exec); \
+     case E_HImode: return gen_##PREFIX##vNhi##SUFFIX (ARGS, merge_src, exec); \
+     case E_HFmode: return gen_##PREFIX##vNhf##SUFFIX (ARGS, merge_src, exec); \
+     case E_SImode: return gen_##PREFIX##vNsi##SUFFIX (ARGS, merge_src, exec); \
+     case E_SFmode: return gen_##PREFIX##vNsf##SUFFIX (ARGS, merge_src, exec); \
+     case E_DImode: return gen_##PREFIX##vNdi##SUFFIX (ARGS, merge_src, exec); \
+     case E_DFmode: return gen_##PREFIX##vNdf##SUFFIX (ARGS, merge_src, exec); \
+     default: \
+       break; \
+     } \
+   \
+   gcc_unreachable (); \
+   return NULL_RTX; \
+ }
+ 
+ GEN_VNM (add,3, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VN (add,si3_dup, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VN (add,si3_vcc_dup, A(rtx dest, rtx src1, rtx src2, rtx vcc),
+ 	A(dest, src1, src2, vcc))
+ GEN_VN (add,di3_sext_dup2, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VN (add,di3_vcc_zext_dup, A(rtx dest, rtx src1, rtx src2, rtx vcc),
+ 	A(dest, src1, src2, vcc))
+ GEN_VN (add,di3_zext_dup2, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VN (add,di3_vcc_zext_dup2, A(rtx dest, rtx src1, rtx src2, rtx vcc),
+ 	A(dest, src1, src2, vcc))
+ GEN_VN (addc,si3, A(rtx dest, rtx src1, rtx src2, rtx vccout, rtx vccin),
+ 	A(dest, src1, src2, vccout, vccin))
+ GEN_VN (and,si3, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VN (ashl,si3, A(rtx dest, rtx src, rtx shift), A(dest, src, shift))
+ GEN_VNM_NOEXEC (ds_bpermute,, A(rtx dest, rtx addr, rtx src, rtx exec),
+ 		A(dest, addr, src, exec))
+ GEN_VNM (gather,_expr, A(rtx dest, rtx addr, rtx as, rtx vol),
+ 	 A(dest, addr, as, vol))
+ GEN_VNM (mov,, A(rtx dest, rtx src), A(dest, src))
+ GEN_VN (mul,si3_dup, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VN (sub,si3, A(rtx dest, rtx src1, rtx src2), A(dest, src1, src2))
+ GEN_VNM (vec_duplicate,, A(rtx dest, rtx src), A(dest, src))
+ GEN_VN_NOEXEC (vec_series,si, A(rtx dest, rtx x, rtx c), A(dest, x, c))
+ 
+ #undef GEN_VNM
+ #undef GEN_VN
+ #undef GET_VN_FN
+ #undef A
+ 
+ /* Get icode for vector instructions without an optab.  */
+ 
+ #define CODE_FOR(PREFIX, SUFFIX) \
+ static int \
+ get_code_for_##PREFIX##vN##SUFFIX (int nunits) \
+ { \
+   switch (nunits) \
+     { \
+     case 2: return CODE_FOR_##PREFIX##v2##SUFFIX; \
+     case 4: return CODE_FOR_##PREFIX##v4##SUFFIX; \
+     case 8: return CODE_FOR_##PREFIX##v8##SUFFIX; \
+     case 16: return CODE_FOR_##PREFIX##v16##SUFFIX; \
+     case 32: return CODE_FOR_##PREFIX##v32##SUFFIX; \
+     case 64: return CODE_FOR_##PREFIX##v64##SUFFIX; \
+     } \
+   \
+   gcc_unreachable (); \
+   return CODE_FOR_nothing; \
+ }
+ 
+ #define CODE_FOR_OP(PREFIX) \
+ 	  CODE_FOR (PREFIX, qi) \
+ 	CODE_FOR (PREFIX, hi) \
+ 	CODE_FOR (PREFIX, hf) \
+ 	CODE_FOR (PREFIX, si) \
+ 	CODE_FOR (PREFIX, sf) \
+ 	CODE_FOR (PREFIX, di) \
+ 	CODE_FOR (PREFIX, df) \
+ static int \
+ get_code_for_##PREFIX (machine_mode mode) \
+ { \
+   int vf = GET_MODE_NUNITS (mode); \
+   machine_mode smode = GET_MODE_INNER (mode); \
+   \
+   switch (smode) \
+     { \
+     case E_QImode: return get_code_for_##PREFIX##vNqi (vf); \
+     case E_HImode: return get_code_for_##PREFIX##vNhi (vf); \
+     case E_HFmode: return get_code_for_##PREFIX##vNhf (vf); \
+     case E_SImode: return get_code_for_##PREFIX##vNsi (vf); \
+     case E_SFmode: return get_code_for_##PREFIX##vNsf (vf); \
+     case E_DImode: return get_code_for_##PREFIX##vNdi (vf); \
+     case E_DFmode: return get_code_for_##PREFIX##vNdf (vf); \
+     default: break; \
+     } \
+   \
+   gcc_unreachable (); \
+   return CODE_FOR_nothing; \
+ }
+ 
+ CODE_FOR_OP (reload_in)
+ CODE_FOR_OP (reload_out)
+ 
+ #undef CODE_FOR_OP
+ #undef CODE_FOR
+ 
+ /* Return true if OP is a PARALLEL of CONST_INTs that form a linear
+    series with step STEP.  */
+ 
+ bool
+ gcn_stepped_zero_int_parallel_p (rtx op, int step)
+ {
+   if (GET_CODE (op) != PARALLEL || !CONST_INT_P (XVECEXP (op, 0, 0)))
+     return false;
+ 
+   unsigned HOST_WIDE_INT base = 0;
+   for (int i = 0; i < XVECLEN (op, 0); ++i)
+     if (!CONST_INT_P (XVECEXP (op, 0, i))
+ 	|| UINTVAL (XVECEXP (op, 0, i)) != base + i * step)
+       return false;
+ 
+   return true;
+ }
+ 
+ /* }}}  */
  /* {{{ Addresses, pointers and moves.  */
  
  /* Return true is REG is a valid place to store a pointer,
*************** gcn_addr_space_convert (rtx op, tree fro
*** 1502,1511 ****
  
    if (AS_LDS_P (as_from) && AS_FLAT_P (as_to))
      {
!       rtx queue = gen_rtx_REG (DImode,
! 			       cfun->machine->args.reg[QUEUE_PTR_ARG]);
        rtx group_seg_aperture_hi = gen_rtx_MEM (SImode,
! 				     gen_rtx_PLUS (DImode, queue,
  						   gen_int_mode (64, SImode)));
        rtx tmp = gen_reg_rtx (DImode);
  
--- 1876,1889 ----
  
    if (AS_LDS_P (as_from) && AS_FLAT_P (as_to))
      {
!       /* The high bits of the QUEUE_PTR_ARG register are used by
! 	 GCN_BUILTIN_FIRST_CALL_THIS_THREAD_P, so mask them out.  */
!       rtx queue_reg = gen_rtx_REG (DImode,
! 				   cfun->machine->args.reg[QUEUE_PTR_ARG]);
!       rtx queue_ptr = gen_reg_rtx (DImode);
!       emit_insn (gen_anddi3 (queue_ptr, queue_reg, GEN_INT (0xffffffffffff)));
        rtx group_seg_aperture_hi = gen_rtx_MEM (SImode,
! 				     gen_rtx_PLUS (DImode, queue_ptr,
  						   gen_int_mode (64, SImode)));
        rtx tmp = gen_reg_rtx (DImode);
  
*************** regno_ok_for_index_p (int regno)
*** 1629,1731 ****
    return regno == M0_REG || VGPR_REGNO_P (regno);
  }
  
! /* Generate move which uses the exec flags.  If EXEC is NULL, then it is
!    assumed that all lanes normally relevant to the mode of the move are
!    affected.  If PREV is NULL, then a sensible default is supplied for
!    the inactive lanes.  */
  
! static rtx
! gen_mov_with_exec (rtx op0, rtx op1, rtx exec = NULL, rtx prev = NULL)
  {
    machine_mode mode = GET_MODE (op0);
  
!   if (vgpr_vector_mode_p (mode))
      {
!       if (exec && exec != CONSTM1_RTX (DImode))
  	{
! 	  if (!prev)
! 	    prev = op0;
  	}
!       else
  	{
! 	  if (!prev)
! 	    prev = gcn_gen_undef (mode);
! 	  exec = gcn_full_exec_reg ();
  	}
  
!       rtx set = gen_rtx_SET (op0, gen_rtx_VEC_MERGE (mode, op1, prev, exec));
! 
!       return gen_rtx_PARALLEL (VOIDmode,
! 	       gen_rtvec (2, set,
! 			 gen_rtx_CLOBBER (VOIDmode,
! 					  gen_rtx_SCRATCH (V64DImode))));
      }
  
-   return (gen_rtx_PARALLEL
- 	  (VOIDmode,
- 	   gen_rtvec (2, gen_rtx_SET (op0, op1),
- 		      gen_rtx_USE (VOIDmode,
- 				   exec ? exec : gcn_scalar_exec ()))));
- }
- 
- /* Generate masked move.  */
- 
- static rtx
- gen_duplicate_load (rtx op0, rtx op1, rtx op2 = NULL, rtx exec = NULL)
- {
-   if (exec)
-     return (gen_rtx_SET (op0,
- 			 gen_rtx_VEC_MERGE (GET_MODE (op0),
- 					    gen_rtx_VEC_DUPLICATE (GET_MODE
- 								   (op0), op1),
- 					    op2, exec)));
-   else
-     return (gen_rtx_SET (op0, gen_rtx_VEC_DUPLICATE (GET_MODE (op0), op1)));
- }
- 
- /* Expand vector init of OP0 by VEC.
-    Implements vec_init instruction pattern.  */
- 
- void
- gcn_expand_vector_init (rtx op0, rtx vec)
- {
    int64_t initialized_mask = 0;
!   int64_t curr_mask = 1;
!   machine_mode mode = GET_MODE (op0);
! 
!   rtx val = XVECEXP (vec, 0, 0);
  
!   for (int i = 1; i < 64; i++)
!     if (rtx_equal_p (val, XVECEXP (vec, 0, i)))
!       curr_mask |= (int64_t) 1 << i;
  
!   if (gcn_constant_p (val))
!     emit_move_insn (op0, gcn_vec_constant (mode, val));
!   else
      {
!       val = force_reg (GET_MODE_INNER (mode), val);
!       emit_insn (gen_duplicate_load (op0, val));
      }
!   initialized_mask |= curr_mask;
!   for (int i = 1; i < 64; i++)
      if (!(initialized_mask & ((int64_t) 1 << i)))
        {
! 	curr_mask = (int64_t) 1 << i;
! 	rtx val = XVECEXP (vec, 0, i);
! 
! 	for (int j = i + 1; j < 64; j++)
! 	  if (rtx_equal_p (val, XVECEXP (vec, 0, j)))
! 	    curr_mask |= (int64_t) 1 << j;
! 	if (gcn_constant_p (val))
! 	  emit_insn (gen_mov_with_exec (op0, gcn_vec_constant (mode, val),
! 					get_exec (curr_mask)));
  	else
  	  {
! 	    val = force_reg (GET_MODE_INNER (mode), val);
! 	    emit_insn (gen_duplicate_load (op0, val, op0,
! 					   get_exec (curr_mask)));
  	  }
! 	initialized_mask |= curr_mask;
        }
  }
  
--- 2007,2158 ----
    return regno == M0_REG || VGPR_REGNO_P (regno);
  }
  
! /* Expand vector init of OP0 by VEC.
!    Implements vec_init instruction pattern.  */
  
! void
! gcn_expand_vector_init (rtx op0, rtx vec)
  {
+   rtx val[64];
    machine_mode mode = GET_MODE (op0);
+   int vf = GET_MODE_NUNITS (mode);
+   machine_mode addrmode = VnMODE (vf, DImode);
+   machine_mode offsetmode = VnMODE (vf, SImode);
  
!   int64_t mem_mask = 0;
!   int64_t item_mask[64];
!   rtx ramp = gen_reg_rtx (offsetmode);
!   rtx addr = gen_reg_rtx (addrmode);
! 
!   int unit_size = GET_MODE_SIZE (GET_MODE_INNER (GET_MODE (op0)));
!   emit_insn (gen_mulvNsi3_dup (ramp, gen_rtx_REG (offsetmode, VGPR_REGNO (1)),
! 			       GEN_INT (unit_size)));
! 
!   bool simple_repeat = true;
! 
!   /* Expand nested vectors into one vector.  */
!   int item_count = XVECLEN (vec, 0);
!   for (int i = 0, j = 0; i < item_count; i++)
      {
!       rtx item = XVECEXP (vec, 0, i);
!       machine_mode mode = GET_MODE (item);
!       int units = VECTOR_MODE_P (mode) ? GET_MODE_NUNITS (mode) : 1;
!       item_mask[j] = (((uint64_t)-1)>>(64-units)) << j;
! 
!       if (simple_repeat && i != 0)
! 	simple_repeat = item == XVECEXP (vec, 0, i-1);
! 
!       /* If its a vector of values then copy them into the final location.  */
!       if (GET_CODE (item) == CONST_VECTOR)
  	{
! 	  for (int k = 0; k < units; k++)
! 	    val[j++] = XVECEXP (item, 0, k);
! 	  continue;
  	}
!       /* Otherwise, we have a scalar or an expression that expands...  */
! 
!       if (MEM_P (item))
  	{
! 	  rtx base = XEXP (item, 0);
! 	  if (MEM_ADDR_SPACE (item) == DEFAULT_ADDR_SPACE
! 	      && REG_P (base))
! 	    {
! 	      /* We have a simple vector load.  We can put the addresses in
! 		 the vector, combine it with any other such MEMs, and load it
! 		 all with a single gather at the end.  */
! 	      int64_t mask = ((0xffffffffffffffffUL
! 			       >> (64-GET_MODE_NUNITS (mode)))
! 			      << j);
! 	      rtx exec = get_exec (mask);
! 	      emit_insn (gen_subvNsi3
! 			 (ramp, ramp,
! 			  gcn_vec_constant (offsetmode, j*unit_size),
! 			  ramp, exec));
! 	      emit_insn (gen_addvNdi3_zext_dup2
! 			 (addr, ramp, base,
! 			  (mem_mask ? addr : gcn_gen_undef (addrmode)),
! 			  exec));
! 	      mem_mask |= mask;
! 	    }
! 	  else
! 	    /* The MEM is non-trivial, so let's load it independently.  */
! 	    item = force_reg (mode, item);
  	}
+       else if (!CONST_INT_P (item) && !CONST_DOUBLE_P (item))
+ 	/* The item may be a symbol_ref, or something else non-trivial.  */
+ 	item = force_reg (mode, item);
  
!       /* Duplicate the vector across each item.
! 	 It is either a smaller vector register that needs shifting,
! 	 or a MEM that needs loading.  */
!       val[j] = item;
!       j += units;
      }
  
    int64_t initialized_mask = 0;
!   rtx prev = NULL;
  
!   if (mem_mask)
!     {
!       emit_insn (gen_gathervNm_expr
! 		 (op0, gen_rtx_PLUS (addrmode, addr,
! 				     gen_rtx_VEC_DUPLICATE (addrmode,
! 							    const0_rtx)),
! 		  GEN_INT (DEFAULT_ADDR_SPACE), GEN_INT (0),
! 		  NULL, get_exec (mem_mask)));
!       prev = op0;
!       initialized_mask = mem_mask;
!     }
  
!   if (simple_repeat && item_count > 1 && !prev)
      {
!       /* Special case for instances of {A, B, A, B, A, B, ....}, etc.  */
!       rtx src = gen_rtx_SUBREG (mode, val[0], 0);
!       rtx input_vf_mask = GEN_INT (GET_MODE_NUNITS (GET_MODE (val[0]))-1);
! 
!       rtx permutation = gen_reg_rtx (VnMODE (vf, SImode));
!       emit_insn (gen_vec_seriesvNsi (permutation, GEN_INT (0), GEN_INT (1)));
!       rtx mask_dup = gen_reg_rtx (VnMODE (vf, SImode));
!       emit_insn (gen_vec_duplicatevNsi (mask_dup, input_vf_mask));
!       emit_insn (gen_andvNsi3 (permutation, permutation, mask_dup));
!       emit_insn (gen_ashlvNsi3 (permutation, permutation, GEN_INT (2)));
!       emit_insn (gen_ds_bpermutevNm (op0, permutation, src, get_exec (mode)));
!       return;
      }
! 
!   /* Write each value, elementwise, but coalesce matching values into one
!      instruction, where possible.  */
!   for (int i = 0; i < vf; i++)
      if (!(initialized_mask & ((int64_t) 1 << i)))
        {
! 	if (gcn_constant_p (val[i]))
! 	  emit_insn (gen_movvNm (op0, gcn_vec_constant (mode, val[i]), prev,
! 				 get_exec (item_mask[i])));
! 	else if (VECTOR_MODE_P (GET_MODE (val[i]))
! 		 && (GET_MODE_NUNITS (GET_MODE (val[i])) == vf
! 		     || i == 0))
! 	  emit_insn (gen_movvNm (op0, gen_rtx_SUBREG (mode, val[i], 0), prev,
! 				 get_exec (item_mask[i])));
! 	else if (VECTOR_MODE_P (GET_MODE (val[i])))
! 	  {
! 	    rtx permutation = gen_reg_rtx (VnMODE (vf, SImode));
! 	    emit_insn (gen_vec_seriesvNsi (permutation, GEN_INT (-i*4),
! 					   GEN_INT (4)));
! 	    rtx tmp = gen_reg_rtx (mode);
! 	    emit_insn (gen_ds_bpermutevNm (tmp, permutation,
! 					   gen_rtx_SUBREG (mode, val[i], 0),
! 					   get_exec (-1)));
! 	    emit_insn (gen_movvNm (op0, tmp, prev, get_exec (item_mask[i])));
! 	  }
  	else
  	  {
! 	    rtx reg = force_reg (GET_MODE_INNER (mode), val[i]);
! 	    emit_insn (gen_vec_duplicatevNm (op0, reg, prev,
! 					     get_exec (item_mask[i])));
  	  }
! 
! 	initialized_mask |= item_mask[i];
! 	prev = op0;
        }
  }
  
*************** strided_constant (machine_mode mode, int
*** 1736,1753 ****
  {
    rtx x = gen_reg_rtx (mode);
    emit_move_insn (x, gcn_vec_constant (mode, base));
!   emit_insn (gen_addv64si3_exec (x, x, gcn_vec_constant (mode, val * 32),
! 				 x, get_exec (0xffffffff00000000)));
!   emit_insn (gen_addv64si3_exec (x, x, gcn_vec_constant (mode, val * 16),
! 				 x, get_exec (0xffff0000ffff0000)));
!   emit_insn (gen_addv64si3_exec (x, x, gcn_vec_constant (mode, val * 8),
! 				 x, get_exec (0xff00ff00ff00ff00)));
!   emit_insn (gen_addv64si3_exec (x, x, gcn_vec_constant (mode, val * 4),
! 				 x, get_exec (0xf0f0f0f0f0f0f0f0)));
!   emit_insn (gen_addv64si3_exec (x, x, gcn_vec_constant (mode, val * 2),
! 				 x, get_exec (0xcccccccccccccccc)));
!   emit_insn (gen_addv64si3_exec (x, x, gcn_vec_constant (mode, val * 1),
! 				 x, get_exec (0xaaaaaaaaaaaaaaaa)));
    return x;
  }
  
--- 2163,2180 ----
  {
    rtx x = gen_reg_rtx (mode);
    emit_move_insn (x, gcn_vec_constant (mode, base));
!   emit_insn (gen_addvNm3 (x, x, gcn_vec_constant (mode, val * 32),
! 			  x, get_exec (0xffffffff00000000)));
!   emit_insn (gen_addvNm3 (x, x, gcn_vec_constant (mode, val * 16),
! 			  x, get_exec (0xffff0000ffff0000)));
!   emit_insn (gen_addvNm3 (x, x, gcn_vec_constant (mode, val * 8),
! 			  x, get_exec (0xff00ff00ff00ff00)));
!   emit_insn (gen_addvNm3 (x, x, gcn_vec_constant (mode, val * 4),
! 			  x, get_exec (0xf0f0f0f0f0f0f0f0)));
!   emit_insn (gen_addvNm3 (x, x, gcn_vec_constant (mode, val * 2),
! 			  x, get_exec (0xcccccccccccccccc)));
!   emit_insn (gen_addvNm3 (x, x, gcn_vec_constant (mode, val * 1),
! 			  x, get_exec (0xaaaaaaaaaaaaaaaa)));
    return x;
  }
  
*************** gcn_addr_space_legitimize_address (rtx x
*** 1777,1791 ****
      case ADDR_SPACE_LDS:
      case ADDR_SPACE_GDS:
        /* FIXME: LDS support offsets, handle them!.  */
!       if (vgpr_vector_mode_p (mode) && GET_MODE (x) != V64SImode)
  	{
! 	  rtx addrs = gen_reg_rtx (V64SImode);
  	  rtx base = force_reg (SImode, x);
! 	  rtx offsets = strided_constant (V64SImode, 0,
  					  GET_MODE_UNIT_SIZE (mode));
  
! 	  emit_insn (gen_vec_duplicatev64si (addrs, base));
! 	  emit_insn (gen_addv64si3 (addrs, offsets, addrs));
  	  return addrs;
  	}
        return x;
--- 2204,2220 ----
      case ADDR_SPACE_LDS:
      case ADDR_SPACE_GDS:
        /* FIXME: LDS support offsets, handle them!.  */
!       if (vgpr_vector_mode_p (mode)
! 	  && GET_MODE_INNER (GET_MODE (x)) != SImode)
  	{
! 	  machine_mode simode = VnMODE (GET_MODE_NUNITS (mode), SImode);
! 	  rtx addrs = gen_reg_rtx (simode);
  	  rtx base = force_reg (SImode, x);
! 	  rtx offsets = strided_constant (simode, 0,
  					  GET_MODE_UNIT_SIZE (mode));
  
! 	  emit_insn (gen_vec_duplicatevNsi (addrs, base));
! 	  emit_insn (gen_addvNsi3 (addrs, offsets, addrs));
  	  return addrs;
  	}
        return x;
*************** gcn_addr_space_legitimize_address (rtx x
*** 1793,1808 ****
    gcc_unreachable ();
  }
  
! /* Convert a (mem:<MODE> (reg:DI)) to (mem:<MODE> (reg:V64DI)) with the
     proper vector of stepped addresses.
  
     MEM will be a DImode address of a vector in an SGPR.
!    TMP will be a V64DImode VGPR pair or (scratch:V64DI).  */
  
  rtx
  gcn_expand_scalar_to_vector_address (machine_mode mode, rtx exec, rtx mem,
  				     rtx tmp)
  {
    gcc_assert (MEM_P (mem));
    rtx mem_base = XEXP (mem, 0);
    rtx mem_index = NULL_RTX;
--- 2222,2239 ----
    gcc_unreachable ();
  }
  
! /* Convert a (mem:<MODE> (reg:DI)) to (mem:<MODE> (reg:VnDI)) with the
     proper vector of stepped addresses.
  
     MEM will be a DImode address of a vector in an SGPR.
!    TMP will be a VnDImode VGPR pair or (scratch:VnDI).  */
  
  rtx
  gcn_expand_scalar_to_vector_address (machine_mode mode, rtx exec, rtx mem,
  				     rtx tmp)
  {
+   machine_mode pmode = VnMODE (GET_MODE_NUNITS (mode), DImode);
+   machine_mode offmode = VnMODE (GET_MODE_NUNITS (mode), SImode);
    gcc_assert (MEM_P (mem));
    rtx mem_base = XEXP (mem, 0);
    rtx mem_index = NULL_RTX;
*************** gcn_expand_scalar_to_vector_address (mac
*** 1826,1847 ****
  
    machine_mode inner = GET_MODE_INNER (mode);
    int shift = exact_log2 (GET_MODE_SIZE (inner));
!   rtx ramp = gen_rtx_REG (V64SImode, VGPR_REGNO (1));
!   rtx undef_v64si = gcn_gen_undef (V64SImode);
    rtx new_base = NULL_RTX;
    addr_space_t as = MEM_ADDR_SPACE (mem);
  
    rtx tmplo = (REG_P (tmp)
! 	       ? gcn_operand_part (V64DImode, tmp, 0)
! 	       : gen_reg_rtx (V64SImode));
  
    /* tmplo[:] = ramp[:] << shift  */
!   if (exec)
!     emit_insn (gen_ashlv64si3_exec (tmplo, ramp,
! 				    gen_int_mode (shift, SImode),
! 				    undef_v64si, exec));
!   else
!     emit_insn (gen_ashlv64si3 (tmplo, ramp, gen_int_mode (shift, SImode)));
  
    if (AS_FLAT_P (as))
      {
--- 2257,2274 ----
  
    machine_mode inner = GET_MODE_INNER (mode);
    int shift = exact_log2 (GET_MODE_SIZE (inner));
!   rtx ramp = gen_rtx_REG (offmode, VGPR_REGNO (1));
    rtx new_base = NULL_RTX;
    addr_space_t as = MEM_ADDR_SPACE (mem);
  
    rtx tmplo = (REG_P (tmp)
! 	       ? gcn_operand_part (pmode, tmp, 0)
! 	       : gen_reg_rtx (offmode));
  
    /* tmplo[:] = ramp[:] << shift  */
!   emit_insn (gen_ashlvNsi3 (tmplo, ramp,
! 			    gen_int_mode (shift, SImode),
! 			    NULL, exec));
  
    if (AS_FLAT_P (as))
      {
*************** gcn_expand_scalar_to_vector_address (mac
*** 1851,1903 ****
  	{
  	  rtx mem_base_lo = gcn_operand_part (DImode, mem_base, 0);
  	  rtx mem_base_hi = gcn_operand_part (DImode, mem_base, 1);
! 	  rtx tmphi = gcn_operand_part (V64DImode, tmp, 1);
  
  	  /* tmphi[:] = mem_base_hi  */
! 	  if (exec)
! 	    emit_insn (gen_vec_duplicatev64si_exec (tmphi, mem_base_hi,
! 						    undef_v64si, exec));
! 	  else
! 	    emit_insn (gen_vec_duplicatev64si (tmphi, mem_base_hi));
  
  	  /* tmp[:] += zext (mem_base)  */
  	  if (exec)
  	    {
! 	      emit_insn (gen_addv64si3_vcc_dup_exec (tmplo, mem_base_lo, tmplo,
! 						     vcc, undef_v64si, exec));
! 	      emit_insn (gen_addcv64si3_exec (tmphi, tmphi, const0_rtx,
! 					      vcc, vcc, undef_v64si, exec));
  	    }
  	  else
! 	    emit_insn (gen_addv64di3_vcc_zext_dup (tmp, mem_base_lo, tmp, vcc));
  	}
        else
  	{
! 	  tmp = gen_reg_rtx (V64DImode);
! 	  if (exec)
! 	    emit_insn (gen_addv64di3_vcc_zext_dup2_exec
! 		       (tmp, tmplo, mem_base, vcc, gcn_gen_undef (V64DImode),
! 			exec));
! 	  else
! 	    emit_insn (gen_addv64di3_vcc_zext_dup2 (tmp, tmplo, mem_base, vcc));
  	}
  
        new_base = tmp;
      }
    else if (AS_ANY_DS_P (as))
      {
!       if (!exec)
! 	emit_insn (gen_addv64si3_dup (tmplo, tmplo, mem_base));
!       else
!         emit_insn (gen_addv64si3_dup_exec (tmplo, tmplo, mem_base,
! 					   gcn_gen_undef (V64SImode), exec));
        new_base = tmplo;
      }
    else
      {
!       mem_base = gen_rtx_VEC_DUPLICATE (V64DImode, mem_base);
!       new_base = gen_rtx_PLUS (V64DImode, mem_base,
! 			       gen_rtx_SIGN_EXTEND (V64DImode, tmplo));
      }
  
    return gen_rtx_PLUS (GET_MODE (new_base), new_base,
--- 2278,2318 ----
  	{
  	  rtx mem_base_lo = gcn_operand_part (DImode, mem_base, 0);
  	  rtx mem_base_hi = gcn_operand_part (DImode, mem_base, 1);
! 	  rtx tmphi = gcn_operand_part (pmode, tmp, 1);
  
  	  /* tmphi[:] = mem_base_hi  */
! 	  emit_insn (gen_vec_duplicatevNsi (tmphi, mem_base_hi, NULL, exec));
  
  	  /* tmp[:] += zext (mem_base)  */
  	  if (exec)
  	    {
! 	      emit_insn (gen_addvNsi3_vcc_dup (tmplo, mem_base_lo, tmplo,
! 					       vcc, NULL, exec));
! 	      emit_insn (gen_addcvNsi3 (tmphi, tmphi, const0_rtx,
! 				        vcc, vcc, NULL, exec));
  	    }
  	  else
! 	    emit_insn (gen_addvNdi3_vcc_zext_dup (tmp, mem_base_lo, tmp, vcc));
  	}
        else
  	{
! 	  tmp = gen_reg_rtx (pmode);
! 	  emit_insn (gen_addvNdi3_vcc_zext_dup2 (tmp, tmplo, mem_base, vcc,
! 						 NULL, exec));
  	}
  
        new_base = tmp;
      }
    else if (AS_ANY_DS_P (as))
      {
!       emit_insn (gen_addvNsi3_dup (tmplo, tmplo, mem_base, NULL, exec));
        new_base = tmplo;
      }
    else
      {
!       mem_base = gen_rtx_VEC_DUPLICATE (pmode, mem_base);
!       new_base = gen_rtx_PLUS (pmode, mem_base,
! 			       gen_rtx_SIGN_EXTEND (pmode, tmplo));
      }
  
    return gen_rtx_PLUS (GET_MODE (new_base), new_base,
*************** gcn_expand_scalar_to_vector_address (mac
*** 1914,1955 ****
     If EXEC is set then _exec patterns will be used, otherwise plain.
  
     Return values.
!      ADDR_SPACE_FLAT   - return V64DImode vector of absolute addresses.
!      ADDR_SPACE_GLOBAL - return V64SImode vector of offsets.  */
  
  rtx
  gcn_expand_scaled_offsets (addr_space_t as, rtx base, rtx offsets, rtx scale,
  			   bool unsigned_p, rtx exec)
  {
!   rtx tmpsi = gen_reg_rtx (V64SImode);
!   rtx tmpdi = gen_reg_rtx (V64DImode);
!   rtx undefsi = exec ? gcn_gen_undef (V64SImode) : NULL;
!   rtx undefdi = exec ? gcn_gen_undef (V64DImode) : NULL;
  
    if (CONST_INT_P (scale)
        && INTVAL (scale) > 0
        && exact_log2 (INTVAL (scale)) >= 0)
!     emit_insn (gen_ashlv64si3 (tmpsi, offsets,
! 			       GEN_INT (exact_log2 (INTVAL (scale)))));
    else
!     (exec
!      ? emit_insn (gen_mulv64si3_dup_exec (tmpsi, offsets, scale, undefsi,
! 					  exec))
!      : emit_insn (gen_mulv64si3_dup (tmpsi, offsets, scale)));
  
    /* "Global" instructions do not support negative register offsets.  */
    if (as == ADDR_SPACE_FLAT || !unsigned_p)
      {
        if (unsigned_p)
! 	(exec
! 	 ?  emit_insn (gen_addv64di3_zext_dup2_exec (tmpdi, tmpsi, base,
! 						    undefdi, exec))
! 	 :  emit_insn (gen_addv64di3_zext_dup2 (tmpdi, tmpsi, base)));
        else
! 	(exec
! 	 ?  emit_insn (gen_addv64di3_sext_dup2_exec (tmpdi, tmpsi, base,
! 						     undefdi, exec))
! 	 :  emit_insn (gen_addv64di3_sext_dup2 (tmpdi, tmpsi, base)));
        return tmpdi;
      }
    else if (as == ADDR_SPACE_GLOBAL)
--- 2329,2361 ----
     If EXEC is set then _exec patterns will be used, otherwise plain.
  
     Return values.
!      ADDR_SPACE_FLAT   - return VnDImode vector of absolute addresses.
!      ADDR_SPACE_GLOBAL - return VnSImode vector of offsets.  */
  
  rtx
  gcn_expand_scaled_offsets (addr_space_t as, rtx base, rtx offsets, rtx scale,
  			   bool unsigned_p, rtx exec)
  {
!   int vf = GET_MODE_NUNITS (GET_MODE (offsets));
!   rtx tmpsi = gen_reg_rtx (VnMODE (vf, SImode));
!   rtx tmpdi = gen_reg_rtx (VnMODE (vf, DImode));
  
    if (CONST_INT_P (scale)
        && INTVAL (scale) > 0
        && exact_log2 (INTVAL (scale)) >= 0)
!     emit_insn (gen_ashlvNsi3 (tmpsi, offsets,
! 			      GEN_INT (exact_log2 (INTVAL (scale))),
! 			      NULL, exec));
    else
!      emit_insn (gen_mulvNsi3_dup (tmpsi, offsets, scale, NULL, exec));
  
    /* "Global" instructions do not support negative register offsets.  */
    if (as == ADDR_SPACE_FLAT || !unsigned_p)
      {
        if (unsigned_p)
! 	 emit_insn (gen_addvNdi3_zext_dup2 (tmpdi, tmpsi, base, NULL, exec));
        else
! 	 emit_insn (gen_addvNdi3_sext_dup2 (tmpdi, tmpsi, base, NULL, exec));
        return tmpdi;
      }
    else if (as == ADDR_SPACE_GLOBAL)
*************** gcn_secondary_reload (bool in_p, rtx x,
*** 2050,2108 ****
  	      || GET_MODE_CLASS (reload_mode) == MODE_VECTOR_FLOAT)
  	    {
  	      if (in_p)
! 		switch (reload_mode)
! 		  {
! 		  case E_V64SImode:
! 		    sri->icode = CODE_FOR_reload_inv64si;
! 		    break;
! 		  case E_V64SFmode:
! 		    sri->icode = CODE_FOR_reload_inv64sf;
! 		    break;
! 		  case E_V64HImode:
! 		    sri->icode = CODE_FOR_reload_inv64hi;
! 		    break;
! 		  case E_V64HFmode:
! 		    sri->icode = CODE_FOR_reload_inv64hf;
! 		    break;
! 		  case E_V64QImode:
! 		    sri->icode = CODE_FOR_reload_inv64qi;
! 		    break;
! 		  case E_V64DImode:
! 		    sri->icode = CODE_FOR_reload_inv64di;
! 		    break;
! 		  case E_V64DFmode:
! 		    sri->icode = CODE_FOR_reload_inv64df;
! 		    break;
! 		  default:
! 		    gcc_unreachable ();
! 		  }
  	      else
! 		switch (reload_mode)
! 		  {
! 		  case E_V64SImode:
! 		    sri->icode = CODE_FOR_reload_outv64si;
! 		    break;
! 		  case E_V64SFmode:
! 		    sri->icode = CODE_FOR_reload_outv64sf;
! 		    break;
! 		  case E_V64HImode:
! 		    sri->icode = CODE_FOR_reload_outv64hi;
! 		    break;
! 		  case E_V64HFmode:
! 		    sri->icode = CODE_FOR_reload_outv64hf;
! 		    break;
! 		  case E_V64QImode:
! 		    sri->icode = CODE_FOR_reload_outv64qi;
! 		    break;
! 		  case E_V64DImode:
! 		    sri->icode = CODE_FOR_reload_outv64di;
! 		    break;
! 		  case E_V64DFmode:
! 		    sri->icode = CODE_FOR_reload_outv64df;
! 		    break;
! 		  default:
! 		    gcc_unreachable ();
! 		  }
  	      break;
  	    }
  	  /* Fallthrough.  */
--- 2456,2464 ----
  	      || GET_MODE_CLASS (reload_mode) == MODE_VECTOR_FLOAT)
  	    {
  	      if (in_p)
! 		sri->icode = get_code_for_reload_in (reload_mode);
  	      else
! 		sri->icode = get_code_for_reload_out (reload_mode);
  	      break;
  	    }
  	  /* Fallthrough.  */
*************** gcn_conditional_register_usage (void)
*** 2180,2185 ****
--- 2536,2546 ----
        fixed_regs[cfun->machine->args.reg[DISPATCH_PTR_ARG]] = 1;
        fixed_regs[cfun->machine->args.reg[DISPATCH_PTR_ARG] + 1] = 1;
      }
+   if (cfun->machine->args.reg[QUEUE_PTR_ARG] >= 0)
+     {
+       fixed_regs[cfun->machine->args.reg[QUEUE_PTR_ARG]] = 1;
+       fixed_regs[cfun->machine->args.reg[QUEUE_PTR_ARG] + 1] = 1;
+     }
    if (cfun->machine->args.reg[WORKGROUP_ID_X_ARG] >= 0)
      fixed_regs[cfun->machine->args.reg[WORKGROUP_ID_X_ARG]] = 1;
    if (cfun->machine->args.reg[WORK_ITEM_ID_X_ARG] >= 0)
*************** gcn_function_value (const_tree valtype,
*** 2278,2284 ****
        && GET_MODE_SIZE (mode) < 4)
      mode = SImode;
  
!   return gen_rtx_REG (mode, SGPR_REGNO (RETURN_VALUE_REG));
  }
  
  /* Implement TARGET_FUNCTION_VALUE_REGNO_P.
--- 2639,2645 ----
        && GET_MODE_SIZE (mode) < 4)
      mode = SImode;
  
!   return gen_rtx_REG (mode, RETURN_VALUE_REG);
  }
  
  /* Implement TARGET_FUNCTION_VALUE_REGNO_P.
*************** num_arg_regs (const function_arg_info &a
*** 2302,2308 ****
      return 0;
  
    int size = arg.promoted_size_in_bytes ();
!   return (size + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  }
  
  /* Implement TARGET_STRICT_ARGUMENT_NAMING.
--- 2663,2671 ----
      return 0;
  
    int size = arg.promoted_size_in_bytes ();
!   int regsize = UNITS_PER_WORD * (VECTOR_MODE_P (arg.mode)
! 				  ? GET_MODE_NUNITS (arg.mode) : 1);
!   return (size + regsize - 1) / regsize;
  }
  
  /* Implement TARGET_STRICT_ARGUMENT_NAMING.
*************** gcn_function_arg (cumulative_args_t cum_
*** 2352,2367 ****
        if (targetm.calls.must_pass_in_stack (arg))
  	return 0;
  
!       /* Vector parameters are not supported yet.  */
!       if (VECTOR_MODE_P (arg.mode))
! 	return 0;
! 
!       int reg_num = FIRST_PARM_REG + cum->num;
        int num_regs = num_arg_regs (arg);
        if (num_regs > 0)
  	while (reg_num % num_regs != 0)
  	  reg_num++;
!       if (reg_num + num_regs <= FIRST_PARM_REG + NUM_PARM_REGS)
  	return gen_rtx_REG (arg.mode, reg_num);
      }
    else
--- 2715,2730 ----
        if (targetm.calls.must_pass_in_stack (arg))
  	return 0;
  
!       int first_reg = (VECTOR_MODE_P (arg.mode)
! 		       ? FIRST_VPARM_REG : FIRST_PARM_REG);
!       int cum_num = (VECTOR_MODE_P (arg.mode)
! 		     ? cum->vnum : cum->num);
!       int reg_num = first_reg + cum_num;
        int num_regs = num_arg_regs (arg);
        if (num_regs > 0)
  	while (reg_num % num_regs != 0)
  	  reg_num++;
!       if (reg_num + num_regs <= first_reg + NUM_PARM_REGS)
  	return gen_rtx_REG (arg.mode, reg_num);
      }
    else
*************** gcn_function_arg_advance (cumulative_arg
*** 2413,2423 ****
        if (!arg.named)
  	return;
  
        int num_regs = num_arg_regs (arg);
        if (num_regs > 0)
! 	while ((FIRST_PARM_REG + cum->num) % num_regs != 0)
! 	  cum->num++;
!       cum->num += num_regs;
      }
    else
      {
--- 2776,2790 ----
        if (!arg.named)
  	return;
  
+       int first_reg = (VECTOR_MODE_P (arg.mode)
+ 		       ? FIRST_VPARM_REG : FIRST_PARM_REG);
+       int *cum_num = (VECTOR_MODE_P (arg.mode)
+ 		      ? &cum->vnum : &cum->num);
        int num_regs = num_arg_regs (arg);
        if (num_regs > 0)
! 	while ((first_reg + *cum_num) % num_regs != 0)
! 	  (*cum_num)++;
!       *cum_num += num_regs;
      }
    else
      {
*************** gcn_arg_partial_bytes (cumulative_args_t
*** 2448,2467 ****
    if (targetm.calls.must_pass_in_stack (arg))
      return 0;
  
!   if (cum->num >= NUM_PARM_REGS)
      return 0;
  
    /* If the argument fits entirely in registers, return 0.  */
!   if (cum->num + num_arg_regs (arg) <= NUM_PARM_REGS)
      return 0;
  
!   return (NUM_PARM_REGS - cum->num) * UNITS_PER_WORD;
  }
  
! /* A normal function which takes a pointer argument (to a scalar) may be
!    passed a pointer to LDS space (via a high-bits-set aperture), and that only
!    works with FLAT addressing, not GLOBAL.  Force FLAT addressing if the
!    function has an incoming pointer-to-scalar parameter.  */
  
  static void
  gcn_detect_incoming_pointer_arg (tree fndecl)
--- 2815,2842 ----
    if (targetm.calls.must_pass_in_stack (arg))
      return 0;
  
!   int cum_num = (VECTOR_MODE_P (arg.mode) ? cum->vnum : cum->num);
!   int regsize = UNITS_PER_WORD * (VECTOR_MODE_P (arg.mode)
! 				  ? GET_MODE_NUNITS (arg.mode) : 1);
! 
!   if (cum_num >= NUM_PARM_REGS)
      return 0;
  
    /* If the argument fits entirely in registers, return 0.  */
!   if (cum_num + num_arg_regs (arg) <= NUM_PARM_REGS)
      return 0;
  
!   return (NUM_PARM_REGS - cum_num) * regsize;
  }
  
! /* A normal function which takes a pointer argument may be passed a pointer to
!    LDS space (via a high-bits-set aperture), and that only works with FLAT
!    addressing, not GLOBAL.  Force FLAT addressing if the function has an
!    incoming pointer parameter.  NOTE: This is a heuristic that works in the
!    offloading case, but in general, a function might read global pointer
!    variables, etc. that may refer to LDS space or other special memory areas
!    not supported by GLOBAL instructions, and then this argument check would not
!    suffice.  */
  
  static void
  gcn_detect_incoming_pointer_arg (tree fndecl)
*************** gcn_detect_incoming_pointer_arg (tree fn
*** 2471,2478 ****
    for (tree arg = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
         arg;
         arg = TREE_CHAIN (arg))
!     if (POINTER_TYPE_P (TREE_VALUE (arg))
! 	&& !AGGREGATE_TYPE_P (TREE_TYPE (TREE_VALUE (arg))))
        cfun->machine->use_flat_addressing = true;
  }
  
--- 2846,2852 ----
    for (tree arg = TYPE_ARG_TYPES (TREE_TYPE (fndecl));
         arg;
         arg = TREE_CHAIN (arg))
!     if (POINTER_TYPE_P (TREE_VALUE (arg)))
        cfun->machine->use_flat_addressing = true;
  }
  
*************** gcn_return_in_memory (const_tree type, c
*** 2543,2556 ****
    if (AGGREGATE_TYPE_P (type))
      return true;
  
-   /* Vector return values are not supported yet.  */
-   if (VECTOR_TYPE_P (type))
-     return true;
- 
    if (mode == BLKmode)
      return true;
  
!   if (size > 2 * UNITS_PER_WORD)
      return true;
  
    return false;
--- 2917,2927 ----
    if (AGGREGATE_TYPE_P (type))
      return true;
  
    if (mode == BLKmode)
      return true;
  
!   if ((!VECTOR_TYPE_P (type) && size > 2 * UNITS_PER_WORD)
!       || size > 2 * UNITS_PER_WORD * 64)
      return true;
  
    return false;
*************** gcn_omp_device_kind_arch_isa (enum omp_d
*** 2632,2640 ****
      case omp_device_kind:
        return strcmp (name, "gpu") == 0;
      case omp_device_arch:
!       return strcmp (name, "gcn") == 0;
      case omp_device_isa:
!       if (strcmp (name, "fiji") == 0)
  	return gcn_arch == PROCESSOR_FIJI;
        if (strcmp (name, "gfx900") == 0)
  	return gcn_arch == PROCESSOR_VEGA10;
--- 3003,3011 ----
      case omp_device_kind:
        return strcmp (name, "gpu") == 0;
      case omp_device_arch:
!       return strcmp (name, "amdgcn") == 0 || strcmp (name, "gcn") == 0;
      case omp_device_isa:
!       if (strcmp (name, "fiji") == 0 || strcmp (name, "gfx803") == 0)
  	return gcn_arch == PROCESSOR_FIJI;
        if (strcmp (name, "gfx900") == 0)
  	return gcn_arch == PROCESSOR_VEGA10;
*************** gcn_omp_device_kind_arch_isa (enum omp_d
*** 2642,2647 ****
--- 3013,3020 ----
  	return gcn_arch == PROCESSOR_VEGA20;
        if (strcmp (name, "gfx908") == 0)
  	return gcn_arch == PROCESSOR_GFX908;
+       if (strcmp (name, "gfx90a") == 0)
+ 	return gcn_arch == PROCESSOR_GFX90a;
        return 0;
      default:
        gcc_unreachable ();
*************** move_callee_saved_registers (rtx sp, mac
*** 2875,2880 ****
--- 3248,3257 ----
        emit_insn (move_vectors);
        emit_insn (move_scalars);
      }
+ 
+   /* This happens when a new register becomes "live" after reload.
+      Check your splitters!  */
+   gcc_assert (offset <= offsets->callee_saves);
  }
  
  /* Generate prologue.  Called from gen_prologue during pro_and_epilogue pass.
*************** gcn_expand_prologue ()
*** 2993,3002 ****
      }
    else
      {
!       rtx wave_offset = gen_rtx_REG (SImode,
! 				     cfun->machine->args.
! 				     reg[PRIVATE_SEGMENT_WAVE_OFFSET_ARG]);
  
        if (cfun->machine->args.requested & (1 << FLAT_SCRATCH_INIT_ARG))
  	{
  	  rtx fs_init_lo =
--- 3370,3425 ----
      }
    else
      {
!       if (TARGET_PACKED_WORK_ITEMS)
! 	{
! 	  /* v0 conatins the X, Y and Z dimensions all in one.
! 	     Expand them out for ABI compatibility.  */
! 	  /* TODO: implement and use zero_extract.  */
! 	  rtx v1 = gen_rtx_REG (V64SImode, VGPR_REGNO (1));
! 	  emit_insn (gen_andv64si3 (v1, gen_rtx_REG (V64SImode, VGPR_REGNO (0)),
! 				    gen_rtx_CONST_INT (VOIDmode, 0x3FF << 10)));
! 	  emit_insn (gen_lshrv64si3 (v1, v1, gen_rtx_CONST_INT (VOIDmode, 10)));
! 	  emit_insn (gen_prologue_use (v1));
! 
! 	  rtx v2 = gen_rtx_REG (V64SImode, VGPR_REGNO (2));
! 	  emit_insn (gen_andv64si3 (v2, gen_rtx_REG (V64SImode, VGPR_REGNO (0)),
! 				    gen_rtx_CONST_INT (VOIDmode, 0x3FF << 20)));
! 	  emit_insn (gen_lshrv64si3 (v2, v2, gen_rtx_CONST_INT (VOIDmode, 20)));
! 	  emit_insn (gen_prologue_use (v2));
! 	}
! 
!       /* We no longer use the private segment for the stack (it's not
! 	 accessible to reverse offload), so we must calculate a wave offset
! 	 from the grid dimensions and stack size, which is calculated on the
! 	 host, and passed in the kernargs region.
! 	 See libgomp-gcn.h for details.  */
!       rtx wave_offset = gen_rtx_REG (SImode, FIRST_PARM_REG);
! 
!       rtx num_waves_mem = gcn_oacc_dim_size (1);
!       rtx num_waves = gen_rtx_REG (SImode, FIRST_PARM_REG+1);
!       set_mem_addr_space (num_waves_mem, ADDR_SPACE_SCALAR_FLAT);
!       emit_move_insn (num_waves, num_waves_mem);
! 
!       rtx workgroup_num = gcn_oacc_dim_pos (0);
!       rtx wave_num = gen_rtx_REG (SImode, FIRST_PARM_REG+2);
!       emit_move_insn(wave_num, gcn_oacc_dim_pos (1));
! 
!       rtx thread_id = gen_rtx_REG (SImode, FIRST_PARM_REG+3);
!       emit_insn (gen_mulsi3 (thread_id, num_waves, workgroup_num));
!       emit_insn (gen_addsi3_scc (thread_id, thread_id, wave_num));
  
+       rtx kernarg_reg = gen_rtx_REG (DImode, cfun->machine->args.reg
+ 				     [KERNARG_SEGMENT_PTR_ARG]);
+       rtx stack_size_mem = gen_rtx_MEM (SImode,
+ 					gen_rtx_PLUS (DImode, kernarg_reg,
+ 						      GEN_INT (52)));
+       set_mem_addr_space (stack_size_mem, ADDR_SPACE_SCALAR_FLAT);
+       emit_move_insn (wave_offset, stack_size_mem);
+ 
+       emit_insn (gen_mulsi3 (wave_offset, wave_offset, thread_id));
+ 
+       /* The FLAT_SCRATCH_INIT is not usually needed, but can be enabled
+ 	 via the function attributes.  */
        if (cfun->machine->args.requested & (1 << FLAT_SCRATCH_INIT_ARG))
  	{
  	  rtx fs_init_lo =
*************** gcn_expand_prologue ()
*** 3033,3042 ****
        HOST_WIDE_INT sp_adjust = (offsets->local_vars
  				 + offsets->outgoing_args_size);
  
!       /* Initialise FP and SP from the buffer descriptor in s[0:3].  */
!       emit_move_insn (fp_lo, gen_rtx_REG (SImode, 0));
!       emit_insn (gen_andsi3_scc (fp_hi, gen_rtx_REG (SImode, 1),
! 				 gen_int_mode (0xffff, SImode)));
        rtx scc = gen_rtx_REG (BImode, SCC_REG);
        emit_insn (gen_addsi3_scalar_carry (fp_lo, fp_lo, wave_offset, scc));
        emit_insn (gen_addcsi3_scalar_zero (fp_hi, fp_hi, scc));
--- 3456,3467 ----
        HOST_WIDE_INT sp_adjust = (offsets->local_vars
  				 + offsets->outgoing_args_size);
  
!       /* Initialize FP and SP from space allocated on the host.  */
!       rtx stack_addr_mem = gen_rtx_MEM (DImode,
! 					gen_rtx_PLUS (DImode, kernarg_reg,
! 						      GEN_INT (40)));
!       set_mem_addr_space (stack_addr_mem, ADDR_SPACE_SCALAR_FLAT);
!       emit_move_insn (fp, stack_addr_mem);
        rtx scc = gen_rtx_REG (BImode, SCC_REG);
        emit_insn (gen_addsi3_scalar_carry (fp_lo, fp_lo, wave_offset, scc));
        emit_insn (gen_addcsi3_scalar_zero (fp_hi, fp_hi, scc));
*************** gcn_expand_prologue ()
*** 3081,3093 ****
    /* Ensure that the scheduler doesn't do anything unexpected.  */
    emit_insn (gen_blockage ());
  
!   /* m0 is initialized for the usual LDS DS and FLAT memory case.
!      The low-part is the address of the topmost addressable byte, which is
!      size-1.  The high-part is an offset and should be zero.  */
!   emit_move_insn (gen_rtx_REG (SImode, M0_REG),
! 		  gen_int_mode (LDS_SIZE, SImode));
  
!   emit_insn (gen_prologue_use (gen_rtx_REG (SImode, M0_REG)));
  
    if (cfun && cfun->machine && !cfun->machine->normal_function && flag_openmp)
      {
--- 3506,3521 ----
    /* Ensure that the scheduler doesn't do anything unexpected.  */
    emit_insn (gen_blockage ());
  
!   if (TARGET_M0_LDS_LIMIT)
!   {
!     /* m0 is initialized for the usual LDS DS and FLAT memory case.
!        The low-part is the address of the topmost addressable byte, which is
!        size-1.  The high-part is an offset and should be zero.  */
!     emit_move_insn (gen_rtx_REG (SImode, M0_REG),
! 	gen_int_mode (LDS_SIZE, SImode));
  
!     emit_insn (gen_prologue_use (gen_rtx_REG (SImode, M0_REG)));
!   }
  
    if (cfun && cfun->machine && !cfun->machine->normal_function && flag_openmp)
      {
*************** gcn_expand_epilogue (void)
*** 3169,3177 ****
        emit_move_insn (kernarg_reg, retptr_mem);
  
        rtx retval_mem = gen_rtx_MEM (SImode, kernarg_reg);
        set_mem_addr_space (retval_mem, ADDR_SPACE_SCALAR_FLAT);
!       emit_move_insn (retval_mem,
! 		      gen_rtx_REG (SImode, SGPR_REGNO (RETURN_VALUE_REG)));
      }
  
    emit_jump_insn (gen_gcn_return ());
--- 3597,3606 ----
        emit_move_insn (kernarg_reg, retptr_mem);
  
        rtx retval_mem = gen_rtx_MEM (SImode, kernarg_reg);
+       rtx scalar_retval = gen_rtx_REG (SImode, FIRST_PARM_REG);
        set_mem_addr_space (retval_mem, ADDR_SPACE_SCALAR_FLAT);
!       emit_move_insn (scalar_retval, gen_rtx_REG (SImode, RETURN_VALUE_REG));
!       emit_move_insn (retval_mem, scalar_retval);
      }
  
    emit_jump_insn (gen_gcn_return ());
*************** gcn_valid_cvt_p (machine_mode from, mach
*** 3381,3386 ****
--- 3810,3818 ----
  
    if (VECTOR_MODE_P (from))
      {
+       if (GET_MODE_NUNITS (from) != GET_MODE_NUNITS (to))
+ 	return false;
+ 
        from = GET_MODE_INNER (from);
        to = GET_MODE_INNER (to);
      }
*************** enum gcn_builtin_type_index
*** 3566,3571 ****
--- 3998,4004 ----
    GCN_BTI_SF,
    GCN_BTI_V64SI,
    GCN_BTI_V64SF,
+   GCN_BTI_V64DF,
    GCN_BTI_V64PTR,
    GCN_BTI_SIPTR,
    GCN_BTI_SFPTR,
*************** static GTY(()) tree gcn_builtin_types[GC
*** 3582,3587 ****
--- 4015,4021 ----
  #define sf_type_node (gcn_builtin_types[GCN_BTI_SF])
  #define v64si_type_node (gcn_builtin_types[GCN_BTI_V64SI])
  #define v64sf_type_node (gcn_builtin_types[GCN_BTI_V64SF])
+ #define v64df_type_node (gcn_builtin_types[GCN_BTI_V64DF])
  #define v64ptr_type_node (gcn_builtin_types[GCN_BTI_V64PTR])
  #define siptr_type_node (gcn_builtin_types[GCN_BTI_SIPTR])
  #define sfptr_type_node (gcn_builtin_types[GCN_BTI_SFPTR])
*************** gcn_init_builtin_types (void)
*** 3671,3690 ****
    sf_type_node = float32_type_node;
    v64si_type_node = build_vector_type (intSI_type_node, 64);
    v64sf_type_node = build_vector_type (float_type_node, 64);
    v64ptr_type_node = build_vector_type (unsigned_intDI_type_node
  					/*build_pointer_type
  					  (integer_type_node) */
  					, 64);
    tree tmp = build_distinct_type_copy (intSI_type_node);
!   TYPE_ADDR_SPACE (tmp) = ADDR_SPACE_FLAT;
    siptr_type_node = build_pointer_type (tmp);
  
    tmp = build_distinct_type_copy (float_type_node);
!   TYPE_ADDR_SPACE (tmp) = ADDR_SPACE_FLAT;
    sfptr_type_node = build_pointer_type (tmp);
  
    tmp = build_distinct_type_copy (void_type_node);
!   TYPE_ADDR_SPACE (tmp) = ADDR_SPACE_FLAT;
    voidptr_type_node = build_pointer_type (tmp);
  
    tmp = build_distinct_type_copy (void_type_node);
--- 4105,4125 ----
    sf_type_node = float32_type_node;
    v64si_type_node = build_vector_type (intSI_type_node, 64);
    v64sf_type_node = build_vector_type (float_type_node, 64);
+   v64df_type_node = build_vector_type (double_type_node, 64);
    v64ptr_type_node = build_vector_type (unsigned_intDI_type_node
  					/*build_pointer_type
  					  (integer_type_node) */
  					, 64);
    tree tmp = build_distinct_type_copy (intSI_type_node);
!   TYPE_ADDR_SPACE (tmp) = ADDR_SPACE_DEFAULT;
    siptr_type_node = build_pointer_type (tmp);
  
    tmp = build_distinct_type_copy (float_type_node);
!   TYPE_ADDR_SPACE (tmp) = ADDR_SPACE_DEFAULT;
    sfptr_type_node = build_pointer_type (tmp);
  
    tmp = build_distinct_type_copy (void_type_node);
!   TYPE_ADDR_SPACE (tmp) = ADDR_SPACE_DEFAULT;
    voidptr_type_node = build_pointer_type (tmp);
  
    tmp = build_distinct_type_copy (void_type_node);
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 3876,3882 ****
  	rtx mem = gen_rtx_MEM (GET_MODE (target), addrs);
  	/*set_mem_addr_space (mem, ADDR_SPACE_FLAT); */
  	/* FIXME: set attributes.  */
! 	emit_insn (gen_mov_with_exec (target, mem, exec));
  	return target;
        }
      case GCN_BUILTIN_FLAT_STORE_PTR_INT32:
--- 4311,4317 ----
  	rtx mem = gen_rtx_MEM (GET_MODE (target), addrs);
  	/*set_mem_addr_space (mem, ADDR_SPACE_FLAT); */
  	/* FIXME: set attributes.  */
! 	emit_insn (gen_movvNm (target, mem, NULL, exec));
  	return target;
        }
      case GCN_BUILTIN_FLAT_STORE_PTR_INT32:
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 3911,3930 ****
  	rtx mem = gen_rtx_MEM (vmode, addrs);
  	/*set_mem_addr_space (mem, ADDR_SPACE_FLAT); */
  	/* FIXME: set attributes.  */
! 	emit_insn (gen_mov_with_exec (mem, val, exec));
  	return target;
        }
      case GCN_BUILTIN_SQRTVF:
        {
  	if (ignore)
  	  return target;
- 	rtx exec = gcn_full_exec_reg ();
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
  					  EXPAND_NORMAL));
! 	emit_insn (gen_sqrtv64sf2_exec
! 		   (target, arg, gcn_gen_undef (V64SFmode), exec));
  	return target;
        }
      case GCN_BUILTIN_SQRTF:
--- 4346,4363 ----
  	rtx mem = gen_rtx_MEM (vmode, addrs);
  	/*set_mem_addr_space (mem, ADDR_SPACE_FLAT); */
  	/* FIXME: set attributes.  */
! 	emit_insn (gen_movvNm (mem, val, NULL, exec));
  	return target;
        }
      case GCN_BUILTIN_SQRTVF:
        {
  	if (ignore)
  	  return target;
  	rtx arg = force_reg (V64SFmode,
  			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
  					  V64SFmode,
  					  EXPAND_NORMAL));
! 	emit_insn (gen_sqrtv64sf2 (target, arg));
  	return target;
        }
      case GCN_BUILTIN_SQRTF:
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 3938,3943 ****
--- 4371,4494 ----
  	emit_insn (gen_sqrtsf2 (target, arg));
  	return target;
        }
+     case GCN_BUILTIN_FABSVF:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64SFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64SFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_absv64sf2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_FABSV:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64DFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64DFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_absv64df2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_FLOORVF:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64SFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64SFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_floorv64sf2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_FLOORV:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64DFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64DFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_floorv64df2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_LDEXPVF:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg1 = force_reg (V64SFmode,
+ 			      expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					   V64SFmode,
+ 					   EXPAND_NORMAL));
+ 	rtx arg2 = force_reg (V64SImode,
+ 			      expand_expr (CALL_EXPR_ARG (exp, 1), NULL_RTX,
+ 					   V64SImode,
+ 					   EXPAND_NORMAL));
+ 	emit_insn (gen_ldexpv64sf3 (target, arg1, arg2));
+ 	return target;
+       }
+     case GCN_BUILTIN_LDEXPV:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg1 = force_reg (V64DFmode,
+ 			      expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					   V64DFmode,
+ 					   EXPAND_NORMAL));
+ 	rtx arg2 = force_reg (V64SImode,
+ 			      expand_expr (CALL_EXPR_ARG (exp, 1), NULL_RTX,
+ 					   V64SImode,
+ 					   EXPAND_NORMAL));
+ 	emit_insn (gen_ldexpv64df3 (target, arg1, arg2));
+ 	return target;
+       }
+     case GCN_BUILTIN_FREXPVF_EXP:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64SFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64SFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_frexpv64sf_exp2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_FREXPVF_MANT:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64SFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64SFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_frexpv64sf_mant2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_FREXPV_EXP:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64DFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64DFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_frexpv64df_exp2 (target, arg));
+ 	return target;
+       }
+     case GCN_BUILTIN_FREXPV_MANT:
+       {
+ 	if (ignore)
+ 	  return target;
+ 	rtx arg = force_reg (V64DFmode,
+ 			     expand_expr (CALL_EXPR_ARG (exp, 0), NULL_RTX,
+ 					  V64DFmode,
+ 					  EXPAND_NORMAL));
+ 	emit_insn (gen_frexpv64df_mant2 (target, arg));
+ 	return target;
+       }
      case GCN_BUILTIN_OMP_DIM_SIZE:
        {
  	if (ignore)
*************** gcn_expand_builtin_1 (tree exp, rtx targ
*** 3995,4000 ****
--- 4546,4660 ----
        emit_insn (gen_gcn_wavefront_barrier ());
        return target;
  
+     case GCN_BUILTIN_GET_STACK_LIMIT:
+       {
+ 	/* stackbase = (stack_segment_decr & 0x0000ffffffffffff)
+ 			+ stack_wave_offset);
+ 	   seg_size = dispatch_ptr->private_segment_size;
+ 	   stacklimit = stackbase + seg_size*64;
+ 	   with segsize = *(uint32_t *) ((char *) dispatch_ptr
+ 				       + 6*sizeof(int16_t) + 3*sizeof(int32_t));
+ 	   cf. struct hsa_kernel_dispatch_packet_s in the HSA doc.  */
+ 	rtx ptr;
+ 	if (cfun->machine->args.reg[DISPATCH_PTR_ARG] >= 0
+ 	    && cfun->machine->args.reg[KERNARG_SEGMENT_PTR_ARG] >= 0)
+ 	  {
+ 	    rtx num_waves_mem = gcn_oacc_dim_size (1);
+ 	    rtx num_waves = gen_reg_rtx (SImode);
+ 	    set_mem_addr_space (num_waves_mem, ADDR_SPACE_SCALAR_FLAT);
+ 	    emit_move_insn (num_waves, num_waves_mem);
+ 
+ 	    rtx workgroup_num = gcn_oacc_dim_pos (0);
+ 	    rtx wave_num = gen_reg_rtx (SImode);
+ 	    emit_move_insn(wave_num, gcn_oacc_dim_pos (1));
+ 
+ 	    rtx thread_id = gen_reg_rtx (SImode);
+ 	    emit_insn (gen_mulsi3 (thread_id, num_waves, workgroup_num));
+ 	    emit_insn (gen_addsi3_scc (thread_id, thread_id, wave_num));
+ 
+ 	    rtx kernarg_reg = gen_rtx_REG (DImode, cfun->machine->args.reg
+ 					   [KERNARG_SEGMENT_PTR_ARG]);
+ 	    rtx stack_size_mem = gen_rtx_MEM (SImode,
+ 					      gen_rtx_PLUS (DImode,
+ 							    kernarg_reg,
+ 							    GEN_INT (52)));
+ 	    set_mem_addr_space (stack_size_mem, ADDR_SPACE_SCALAR_FLAT);
+ 	    rtx stack_size = gen_reg_rtx (SImode);
+ 	    emit_move_insn (stack_size, stack_size_mem);
+ 
+ 	    rtx wave_offset = gen_reg_rtx (SImode);
+ 	    emit_insn (gen_mulsi3 (wave_offset, stack_size, thread_id));
+ 
+ 	    rtx stack_limit_offset = gen_reg_rtx (SImode);
+ 	    emit_insn (gen_addsi3 (stack_limit_offset, wave_offset,
+ 				   stack_size));
+ 
+ 	    rtx stack_limit_offset_di = gen_reg_rtx (DImode);
+ 	    emit_move_insn (gen_rtx_SUBREG (SImode, stack_limit_offset_di, 4),
+ 			    const0_rtx);
+ 	    emit_move_insn (gen_rtx_SUBREG (SImode, stack_limit_offset_di, 0),
+ 			    stack_limit_offset);
+ 
+ 	    rtx stack_addr_mem = gen_rtx_MEM (DImode,
+ 					      gen_rtx_PLUS (DImode,
+ 							    kernarg_reg,
+ 							    GEN_INT (40)));
+ 	    set_mem_addr_space (stack_addr_mem, ADDR_SPACE_SCALAR_FLAT);
+ 	    rtx stack_addr = gen_reg_rtx (DImode);
+ 	    emit_move_insn (stack_addr, stack_addr_mem);
+ 
+ 	    ptr = gen_rtx_PLUS (DImode, stack_addr, stack_limit_offset_di);
+ 	  }
+ 	else
+ 	  {
+ 	    ptr = gen_reg_rtx (DImode);
+ 	    emit_move_insn (ptr, const0_rtx);
+ 	  }
+ 	return ptr;
+       }
+     case GCN_BUILTIN_KERNARG_PTR:
+       {
+ 	rtx ptr;
+ 	if (cfun->machine->args.reg[KERNARG_SEGMENT_PTR_ARG] >= 0)
+ 	   ptr = gen_rtx_REG (DImode,
+ 			      cfun->machine->args.reg[KERNARG_SEGMENT_PTR_ARG]);
+ 	else
+ 	  {
+ 	    ptr = gen_reg_rtx (DImode);
+ 	    emit_move_insn (ptr, const0_rtx);
+ 	  }
+ 	return ptr;
+       }
+     case GCN_BUILTIN_FIRST_CALL_THIS_THREAD_P:
+       {
+ 	/* Stash a marker in the unused upper 16 bits of s[0:1] to indicate
+ 	   whether it was the first call.  */
+ 	rtx result = gen_reg_rtx (BImode);
+ 	emit_move_insn (result, const0_rtx);
+ 	if (cfun->machine->args.reg[QUEUE_PTR_ARG] >= 0)
+ 	  {
+ 	    rtx not_first = gen_label_rtx ();
+ 	    rtx reg = gen_rtx_REG (DImode,
+ 			cfun->machine->args.reg[QUEUE_PTR_ARG]);
+ 	    reg = gcn_operand_part (DImode, reg, 1);
+ 	    rtx cmp = force_reg (SImode,
+ 				 gen_rtx_LSHIFTRT (SImode, reg, GEN_INT (16)));
+ 	    emit_insn (gen_cstoresi4 (result, gen_rtx_NE (BImode, cmp,
+ 							  GEN_INT(12345)),
+ 				      cmp, GEN_INT(12345)));
+ 	    emit_jump_insn (gen_cjump (not_first, gen_rtx_EQ (BImode, result,
+ 							      const0_rtx),
+ 				       result));
+ 	    emit_move_insn (reg,
+ 	      force_reg (SImode,
+ 		gen_rtx_IOR (SImode,
+ 			     gen_rtx_AND (SImode, reg, GEN_INT (0x0000ffff)),
+ 			     GEN_INT (12345L << 16))));
+ 	    emit_insn (gen_rtx_USE (VOIDmode, reg));
+ 	    emit_label (not_first);
+ 	  }
+ 	return result;
+       }
      default:
        gcc_unreachable ();
      }
*************** gcn_vectorize_get_mask_mode (machine_mod
*** 4090,4099 ****
     Helper function for gcn_vectorize_vec_perm_const.  */
  
  static rtx
! gcn_make_vec_perm_address (unsigned int *perm)
  {
!   rtx x = gen_reg_rtx (V64SImode);
!   emit_move_insn (x, gcn_vec_constant (V64SImode, 0));
  
    /* Permutation addresses use byte addressing.  With each vector lane being
       4 bytes wide, and with 64 lanes in total, only bits 2..7 are significant,
--- 4750,4760 ----
     Helper function for gcn_vectorize_vec_perm_const.  */
  
  static rtx
! gcn_make_vec_perm_address (unsigned int *perm, int nelt)
  {
!   machine_mode mode = VnMODE (nelt, SImode);
!   rtx x = gen_reg_rtx (mode);
!   emit_move_insn (x, gcn_vec_constant (mode, 0));
  
    /* Permutation addresses use byte addressing.  With each vector lane being
       4 bytes wide, and with 64 lanes in total, only bits 2..7 are significant,
*************** gcn_make_vec_perm_address (unsigned int
*** 4109,4123 ****
      {
        uint64_t exec_mask = 0;
        uint64_t lane_mask = 1;
!       for (int j = 0; j < 64; j++, lane_mask <<= 1)
! 	if ((perm[j] * 4) & bit_mask)
  	  exec_mask |= lane_mask;
  
        if (exec_mask)
! 	emit_insn (gen_addv64si3_exec (x, x,
! 				       gcn_vec_constant (V64SImode,
! 							 bit_mask),
! 				       x, get_exec (exec_mask)));
      }
  
    return x;
--- 4770,4782 ----
      {
        uint64_t exec_mask = 0;
        uint64_t lane_mask = 1;
!       for (int j = 0; j < nelt; j++, lane_mask <<= 1)
! 	if (((perm[j] % nelt) * 4) & bit_mask)
  	  exec_mask |= lane_mask;
  
        if (exec_mask)
! 	emit_insn (gen_addvNsi3 (x, x, gcn_vec_constant (mode, bit_mask),
! 				 x, get_exec (exec_mask)));
      }
  
    return x;
*************** gcn_make_vec_perm_address (unsigned int
*** 4131,4140 ****
     permutations.  */
  
  static bool
! gcn_vectorize_vec_perm_const (machine_mode vmode, rtx dst,
! 			      rtx src0, rtx src1,
  			      const vec_perm_indices & sel)
  {
    unsigned int nelt = GET_MODE_NUNITS (vmode);
  
    gcc_assert (VECTOR_MODE_P (vmode));
--- 4790,4802 ----
     permutations.  */
  
  static bool
! gcn_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 			      rtx dst, rtx src0, rtx src1,
  			      const vec_perm_indices & sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    unsigned int nelt = GET_MODE_NUNITS (vmode);
  
    gcc_assert (VECTOR_MODE_P (vmode));
*************** gcn_vectorize_vec_perm_const (machine_mo
*** 4184,4222 ****
  	src1_lanes |= lane_bit;
      }
  
!   rtx addr = gcn_make_vec_perm_address (perm);
!   rtx (*ds_bpermute) (rtx, rtx, rtx, rtx);
! 
!   switch (vmode)
!     {
!     case E_V64QImode:
!       ds_bpermute = gen_ds_bpermutev64qi;
!       break;
!     case E_V64HImode:
!       ds_bpermute = gen_ds_bpermutev64hi;
!       break;
!     case E_V64SImode:
!       ds_bpermute = gen_ds_bpermutev64si;
!       break;
!     case E_V64HFmode:
!       ds_bpermute = gen_ds_bpermutev64hf;
!       break;
!     case E_V64SFmode:
!       ds_bpermute = gen_ds_bpermutev64sf;
!       break;
!     case E_V64DImode:
!       ds_bpermute = gen_ds_bpermutev64di;
!       break;
!     case E_V64DFmode:
!       ds_bpermute = gen_ds_bpermutev64df;
!       break;
!     default:
!       gcc_assert (false);
!     }
  
    /* Load elements from src0 to dst.  */
!   gcc_assert (~src1_lanes);
!   emit_insn (ds_bpermute (dst, addr, src0, gcn_full_exec_reg ()));
  
    /* Load elements from src1 to dst.  */
    if (src1_lanes)
--- 4846,4856 ----
  	src1_lanes |= lane_bit;
      }
  
!   rtx addr = gcn_make_vec_perm_address (perm, nelt);
  
    /* Load elements from src0 to dst.  */
!   gcc_assert ((~src1_lanes) & (0xffffffffffffffffUL > (64-nelt)));
!   emit_insn (gen_ds_bpermutevNm (dst, addr, src0, get_exec (vmode)));
  
    /* Load elements from src1 to dst.  */
    if (src1_lanes)
*************** gcn_vectorize_vec_perm_const (machine_mo
*** 4227,4234 ****
           the two source vectors together.
         */
        rtx tmp = gen_reg_rtx (vmode);
!       emit_insn (ds_bpermute (tmp, addr, src1, gcn_full_exec_reg ()));
!       emit_insn (gen_mov_with_exec (dst, tmp, get_exec (src1_lanes)));
      }
  
    return true;
--- 4861,4868 ----
           the two source vectors together.
         */
        rtx tmp = gen_reg_rtx (vmode);
!       emit_insn (gen_ds_bpermutevNm (tmp, addr, src1, get_exec (vmode)));
!       emit_insn (gen_movvNm (dst, tmp, dst, get_exec (src1_lanes)));
      }
  
    return true;
*************** gcn_vector_mode_supported_p (machine_mod
*** 4244,4250 ****
  {
    return (mode == V64QImode || mode == V64HImode
  	  || mode == V64SImode || mode == V64DImode
! 	  || mode == V64SFmode || mode == V64DFmode);
  }
  
  /* Implement TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
--- 4878,4899 ----
  {
    return (mode == V64QImode || mode == V64HImode
  	  || mode == V64SImode || mode == V64DImode
! 	  || mode == V64SFmode || mode == V64DFmode
! 	  || mode == V32QImode || mode == V32HImode
! 	  || mode == V32SImode || mode == V32DImode
! 	  || mode == V32SFmode || mode == V32DFmode
! 	  || mode == V16QImode || mode == V16HImode
! 	  || mode == V16SImode || mode == V16DImode
! 	  || mode == V16SFmode || mode == V16DFmode
! 	  || mode == V8QImode || mode == V8HImode
! 	  || mode == V8SImode || mode == V8DImode
! 	  || mode == V8SFmode || mode == V8DFmode
! 	  || mode == V4QImode || mode == V4HImode
! 	  || mode == V4SImode || mode == V4DImode
! 	  || mode == V4SFmode || mode == V4DFmode
! 	  || mode == V2QImode || mode == V2HImode
! 	  || mode == V2SImode || mode == V2DImode
! 	  || mode == V2SFmode || mode == V2DFmode);
  }
  
  /* Implement TARGET_VECTORIZE_PREFERRED_SIMD_MODE.
*************** gcn_vectorize_preferred_simd_mode (scala
*** 4273,4295 ****
      }
  }
  
  /* Implement TARGET_VECTORIZE_RELATED_MODE.
  
     All GCN vectors are 64-lane, so this is simpler than other architectures.
     In particular, we do *not* want to match vector bit-size.  */
  
  static opt_machine_mode
! gcn_related_vector_mode (machine_mode ARG_UNUSED (vector_mode),
  			 scalar_mode element_mode, poly_uint64 nunits)
  {
!   if (known_ne (nunits, 0U) && known_ne (nunits, 64U))
!     return VOIDmode;
  
!   machine_mode pref_mode = gcn_vectorize_preferred_simd_mode (element_mode);
!   if (!VECTOR_MODE_P (pref_mode))
!     return VOIDmode;
  
!   return pref_mode;
  }
  
  /* Implement TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT.
--- 4922,4995 ----
      }
  }
  
+ /* Implement TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES.
+ 
+    Try all the vector modes.  */
+ 
+ unsigned int gcn_autovectorize_vector_modes (vector_modes *modes,
+ 					     bool ARG_UNUSED (all))
+ {
+   modes->safe_push (V64QImode);
+   modes->safe_push (V64HImode);
+   modes->safe_push (V64SImode);
+   modes->safe_push (V64SFmode);
+   modes->safe_push (V64DImode);
+   modes->safe_push (V64DFmode);
+ 
+   modes->safe_push (V32QImode);
+   modes->safe_push (V32HImode);
+   modes->safe_push (V32SImode);
+   modes->safe_push (V32SFmode);
+   modes->safe_push (V32DImode);
+   modes->safe_push (V32DFmode);
+ 
+   modes->safe_push (V16QImode);
+   modes->safe_push (V16HImode);
+   modes->safe_push (V16SImode);
+   modes->safe_push (V16SFmode);
+   modes->safe_push (V16DImode);
+   modes->safe_push (V16DFmode);
+ 
+   modes->safe_push (V8QImode);
+   modes->safe_push (V8HImode);
+   modes->safe_push (V8SImode);
+   modes->safe_push (V8SFmode);
+   modes->safe_push (V8DImode);
+   modes->safe_push (V8DFmode);
+ 
+   modes->safe_push (V4QImode);
+   modes->safe_push (V4HImode);
+   modes->safe_push (V4SImode);
+   modes->safe_push (V4SFmode);
+   modes->safe_push (V4DImode);
+   modes->safe_push (V4DFmode);
+ 
+   modes->safe_push (V2QImode);
+   modes->safe_push (V2HImode);
+   modes->safe_push (V2SImode);
+   modes->safe_push (V2SFmode);
+   modes->safe_push (V2DImode);
+   modes->safe_push (V2DFmode);
+ 
+   /* We shouldn't need VECT_COMPARE_COSTS as they should all cost the same.  */
+   return 0;
+ }
+ 
  /* Implement TARGET_VECTORIZE_RELATED_MODE.
  
     All GCN vectors are 64-lane, so this is simpler than other architectures.
     In particular, we do *not* want to match vector bit-size.  */
  
  static opt_machine_mode
! gcn_related_vector_mode (machine_mode vector_mode,
  			 scalar_mode element_mode, poly_uint64 nunits)
  {
!   int n = nunits.to_constant ();
  
!   if (n == 0)
!     n = GET_MODE_NUNITS (vector_mode);
  
!   return VnMODE (n, element_mode);
  }
  
  /* Implement TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT.
*************** gcn_vector_alignment_reachable (const_tr
*** 4344,4349 ****
--- 5044,5122 ----
    return !is_packed;
  }
  
+ /* Generate DPP pairwise swap instruction.
+    This instruction swaps the values in each even lane with the value in the
+    next one:
+      a, b, c, d -> b, a, d, c.
+    The opcode is given by INSN.  */
+ 
+ char *
+ gcn_expand_dpp_swap_pairs_insn (machine_mode mode, const char *insn,
+ 				int ARG_UNUSED (unspec))
+ {
+   static char buf[128];
+   const char *dpp;
+ 
+   /* Add the DPP modifiers.  */
+   dpp = "quad_perm:[1,0,3,2]";
+ 
+   if (vgpr_2reg_mode_p (mode))
+     sprintf (buf, "%s\t%%L0, %%L1 %s\n\t%s\t%%H0, %%H1 %s",
+ 	     insn, dpp, insn, dpp);
+   else
+     sprintf (buf, "%s\t%%0, %%1 %s", insn, dpp);
+ 
+   return buf;
+ }
+ 
+ /* Generate DPP distribute even instruction.
+    This instruction copies the value in each even lane to the next one:
+      a, b, c, d -> a, a, c, c.
+    The opcode is given by INSN.  */
+ 
+ char *
+ gcn_expand_dpp_distribute_even_insn (machine_mode mode, const char *insn,
+ 				     int ARG_UNUSED (unspec))
+ {
+   static char buf[128];
+   const char *dpp;
+ 
+   /* Add the DPP modifiers.  */
+   dpp = "quad_perm:[0,0,2,2]";
+ 
+   if (vgpr_2reg_mode_p (mode))
+     sprintf (buf, "%s\t%%L0, %%L1 %s\n\t%s\t%%H0, %%H1 %s",
+ 	     insn, dpp, insn, dpp);
+   else
+     sprintf (buf, "%s\t%%0, %%1 %s", insn, dpp);
+ 
+   return buf;
+ }
+ 
+ /* Generate DPP distribute odd instruction.
+    This isntruction copies the value in each odd lane to the previous one:
+      a, b, c, d -> b, b, d, d.
+    The opcode is given by INSN.  */
+ 
+ char *
+ gcn_expand_dpp_distribute_odd_insn (machine_mode mode, const char *insn,
+ 				    int ARG_UNUSED (unspec))
+ {
+   static char buf[128];
+   const char *dpp;
+ 
+   /* Add the DPP modifiers.  */
+   dpp = "quad_perm:[1,1,3,3]";
+ 
+   if (vgpr_2reg_mode_p (mode))
+     sprintf (buf, "%s\t%%L0, %%L1 %s\n\t%s\t%%H0, %%H1 %s",
+ 	     insn, dpp, insn, dpp);
+   else
+     sprintf (buf, "%s\t%%0, %%1 %s", insn, dpp);
+ 
+   return buf;
+ }
+ 
  /* Generate DPP instructions used for vector reductions.
  
     The opcode is given by INSN.
*************** gcn_expand_dpp_shr_insn (machine_mode mo
*** 4413,4432 ****
  
     The vector register SRC of mode MODE is reduced using the operation given
     by UNSPEC, and the scalar result is returned in lane 63 of a vector
!    register.  */
  
  rtx
  gcn_expand_reduc_scalar (machine_mode mode, rtx src, int unspec)
  {
    machine_mode orig_mode = mode;
    bool use_moves = (((unspec == UNSPEC_SMIN_DPP_SHR
  		      || unspec == UNSPEC_SMAX_DPP_SHR
  		      || unspec == UNSPEC_UMIN_DPP_SHR
  		      || unspec == UNSPEC_UMAX_DPP_SHR)
! 		     && (mode == V64DImode
! 			 || mode == V64DFmode))
  		    || (unspec == UNSPEC_PLUS_DPP_SHR
! 			&& mode == V64DFmode));
    rtx_code code = (unspec == UNSPEC_SMIN_DPP_SHR ? SMIN
  		   : unspec == UNSPEC_SMAX_DPP_SHR ? SMAX
  		   : unspec == UNSPEC_UMIN_DPP_SHR ? UMIN
--- 5186,5207 ----
  
     The vector register SRC of mode MODE is reduced using the operation given
     by UNSPEC, and the scalar result is returned in lane 63 of a vector
!    register (or lane 31, 15, 7, 3, 1 for partial vectors).  */
  
  rtx
  gcn_expand_reduc_scalar (machine_mode mode, rtx src, int unspec)
  {
    machine_mode orig_mode = mode;
+   machine_mode scalar_mode = GET_MODE_INNER (mode);
+   int vf = GET_MODE_NUNITS (mode);
    bool use_moves = (((unspec == UNSPEC_SMIN_DPP_SHR
  		      || unspec == UNSPEC_SMAX_DPP_SHR
  		      || unspec == UNSPEC_UMIN_DPP_SHR
  		      || unspec == UNSPEC_UMAX_DPP_SHR)
! 		     && (scalar_mode == DImode
! 			 || scalar_mode == DFmode))
  		    || (unspec == UNSPEC_PLUS_DPP_SHR
! 			&& scalar_mode == DFmode));
    rtx_code code = (unspec == UNSPEC_SMIN_DPP_SHR ? SMIN
  		   : unspec == UNSPEC_SMAX_DPP_SHR ? SMAX
  		   : unspec == UNSPEC_UMIN_DPP_SHR ? UMIN
*************** gcn_expand_reduc_scalar (machine_mode mo
*** 4437,4459 ****
  		       || unspec == UNSPEC_SMAX_DPP_SHR
  		       || unspec == UNSPEC_UMIN_DPP_SHR
  		       || unspec == UNSPEC_UMAX_DPP_SHR)
! 		      && (mode == V64QImode
! 			  || mode == V64HImode));
    bool unsignedp = (unspec == UNSPEC_UMIN_DPP_SHR
  		    || unspec == UNSPEC_UMAX_DPP_SHR);
    bool use_plus_carry = unspec == UNSPEC_PLUS_DPP_SHR
  			&& GET_MODE_CLASS (mode) == MODE_VECTOR_INT
! 			&& (TARGET_GCN3 || mode == V64DImode);
  
    if (use_plus_carry)
      unspec = UNSPEC_PLUS_CARRY_DPP_SHR;
  
    if (use_extends)
      {
!       rtx tmp = gen_reg_rtx (V64SImode);
        convert_move (tmp, src, unsignedp);
        src = tmp;
-       mode = V64SImode;
      }
  
    /* Perform reduction by first performing the reduction operation on every
--- 5212,5234 ----
  		       || unspec == UNSPEC_SMAX_DPP_SHR
  		       || unspec == UNSPEC_UMIN_DPP_SHR
  		       || unspec == UNSPEC_UMAX_DPP_SHR)
! 		      && (scalar_mode == QImode
! 			  || scalar_mode == HImode));
    bool unsignedp = (unspec == UNSPEC_UMIN_DPP_SHR
  		    || unspec == UNSPEC_UMAX_DPP_SHR);
    bool use_plus_carry = unspec == UNSPEC_PLUS_DPP_SHR
  			&& GET_MODE_CLASS (mode) == MODE_VECTOR_INT
! 			&& (TARGET_GCN3 || scalar_mode == DImode);
  
    if (use_plus_carry)
      unspec = UNSPEC_PLUS_CARRY_DPP_SHR;
  
    if (use_extends)
      {
!       mode = VnMODE (vf, SImode);
!       rtx tmp = gen_reg_rtx (mode);
        convert_move (tmp, src, unsignedp);
        src = tmp;
      }
  
    /* Perform reduction by first performing the reduction operation on every
*************** gcn_expand_reduc_scalar (machine_mode mo
*** 4461,4467 ****
       iteration (thereby effectively reducing every 4 lanes) and so on until
       all lanes are reduced.  */
    rtx in, out = force_reg (mode, src);
!   for (int i = 0, shift = 1; i < 6; i++, shift <<= 1)
      {
        rtx shift_val = gen_rtx_CONST_INT (VOIDmode, shift);
        in = out;
--- 5236,5243 ----
       iteration (thereby effectively reducing every 4 lanes) and so on until
       all lanes are reduced.  */
    rtx in, out = force_reg (mode, src);
!   int iterations = exact_log2 (vf);
!   for (int i = 0, shift = 1; i < iterations; i++, shift <<= 1)
      {
        rtx shift_val = gen_rtx_CONST_INT (VOIDmode, shift);
        in = out;
*************** gcn_vectorization_cost (enum vect_cost_f
*** 4514,4519 ****
--- 5290,5454 ----
    return 1;
  }
  
+ /* Implement TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN.  */
+ 
+ static int
+ gcn_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *ARG_UNUSED (node),
+ 					    struct cgraph_simd_clone *clonei,
+ 					    tree ARG_UNUSED (base_type),
+ 					    int ARG_UNUSED (num),
+ 					    bool explicit_p)
+ {
+   if (known_eq (clonei->simdlen, 0U))
+     clonei->simdlen = 64;
+   else if (maybe_ne (clonei->simdlen, 64U))
+     {
+       /* Note that x86 has a similar message that is likely to trigger on
+ 	 sizes that are OK for gcn; the user can't win.  */
+       if (explicit_p)
+ 	warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
+ 		    "unsupported simdlen %wd (amdgcn)",
+ 		    clonei->simdlen.to_constant ());
+       return 0;
+     }
+ 
+   clonei->vecsize_mangle = 'n';
+   clonei->vecsize_int = 0;
+   clonei->vecsize_float = 0;
+ 
+   /* DImode ought to be more natural here, but VOIDmode produces better code,
+      at present, due to the shift-and-test steps not being optimized away
+      inside the in-branch clones.  */
+   clonei->mask_mode = VOIDmode;
+ 
+   return 1;
+ }
+ 
+ /* Implement TARGET_SIMD_CLONE_ADJUST.  */
+ 
+ static void
+ gcn_simd_clone_adjust (struct cgraph_node *ARG_UNUSED (node))
+ {
+   /* This hook has to be defined when
+      TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN is defined, but we don't
+      need it to do anything yet.  */
+ }
+ 
+ /* Implement TARGET_SIMD_CLONE_USABLE.  */
+ 
+ static int
+ gcn_simd_clone_usable (struct cgraph_node *ARG_UNUSED (node))
+ {
+   /* We don't need to do anything here because
+      gcn_simd_clone_compute_vecsize_and_simdlen currently only returns one
+      possibility.  */
+   return 0;
+ }
+ 
+ tree mathfn_built_in_explicit (tree, combined_fn);
+ 
+ /* Implement TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION.
+    Return the function declaration of the vectorized version of the builtin
+    in the math library if available.  */
+ 
+ tree
+ gcn_vectorize_builtin_vectorized_function (unsigned int fn, tree type_out,
+ 					   tree type_in)
+ {
+   if (TREE_CODE (type_out) != VECTOR_TYPE
+       || TREE_CODE (type_in) != VECTOR_TYPE)
+     return NULL_TREE;
+ 
+   machine_mode out_mode = TYPE_MODE (TREE_TYPE (type_out));
+   int out_n = TYPE_VECTOR_SUBPARTS (type_out);
+   machine_mode in_mode = TYPE_MODE (TREE_TYPE (type_in));
+   int in_n = TYPE_VECTOR_SUBPARTS (type_in);
+   combined_fn cfn = combined_fn (fn);
+ 
+   /* Keep this consistent with the list of vectorized math routines.  */
+   int implicit_p;
+   switch (fn)
+     {
+     CASE_CFN_ACOS:
+     CASE_CFN_ACOSH:
+     CASE_CFN_ASIN:
+     CASE_CFN_ASINH:
+     CASE_CFN_ATAN:
+     CASE_CFN_ATAN2:
+     CASE_CFN_ATANH:
+     CASE_CFN_COPYSIGN:
+     CASE_CFN_COS:
+     CASE_CFN_COSH:
+     CASE_CFN_ERF:
+     CASE_CFN_EXP:
+     CASE_CFN_EXP2:
+     CASE_CFN_FINITE:
+     CASE_CFN_FMOD:
+     CASE_CFN_GAMMA:
+     CASE_CFN_HYPOT:
+     CASE_CFN_ISNAN:
+     CASE_CFN_LGAMMA:
+     CASE_CFN_LOG:
+     CASE_CFN_LOG10:
+     CASE_CFN_LOG2:
+     CASE_CFN_POW:
+     CASE_CFN_REMAINDER:
+     CASE_CFN_RINT:
+     CASE_CFN_SIN:
+     CASE_CFN_SINH:
+     CASE_CFN_SQRT:
+     CASE_CFN_TAN:
+     CASE_CFN_TANH:
+     CASE_CFN_TGAMMA:
+       implicit_p = 1;
+       break;
+ 
+     CASE_CFN_SCALB:
+     CASE_CFN_SIGNIFICAND:
+       implicit_p = 0;
+       break;
+ 
+     default:
+       return NULL_TREE;
+     }
+ 
+   tree out_t_node = (out_mode == DFmode) ? double_type_node : float_type_node;
+   tree fndecl = implicit_p ? mathfn_built_in (out_t_node, cfn)
+ 			   : mathfn_built_in_explicit (out_t_node, cfn);
+ 
+   const char *bname = IDENTIFIER_POINTER (DECL_NAME (fndecl));
+   char name[20];
+   sprintf (name, out_mode == DFmode ? "v%ddf_%s" : "v%dsf_%s",
+ 	   out_n, bname + 10);
+ 
+   unsigned arity = 0;
+   for (tree args = DECL_ARGUMENTS (fndecl); args; args = TREE_CHAIN (args))
+     arity++;
+ 
+   tree fntype = (arity == 1)
+ 		? build_function_type_list (type_out, type_in, NULL)
+ 		: build_function_type_list (type_out, type_in, type_in, NULL);
+ 
+   /* Build a function declaration for the vectorized function.  */
+   tree new_fndecl = build_decl (BUILTINS_LOCATION,
+ 				FUNCTION_DECL, get_identifier (name), fntype);
+   TREE_PUBLIC (new_fndecl) = 1;
+   DECL_EXTERNAL (new_fndecl) = 1;
+   DECL_IS_NOVOPS (new_fndecl) = 1;
+   TREE_READONLY (new_fndecl) = 1;
+ 
+   return new_fndecl;
+ }
+ 
+ /* Implement TARGET_LIBC_HAS_FUNCTION.  */
+ 
+ bool
+ gcn_libc_has_function (enum function_class fn_class,
+ 		       tree type)
+ {
+   return bsd_libc_has_function (fn_class, type);
+ }
+ 
  /* }}}  */
  /* {{{ md_reorg pass.  */
  
*************** gcn_md_reorg (void)
*** 4770,4779 ****
  		      {
  			if (VECTOR_MODE_P (GET_MODE (x)))
  			  {
! 			    new_exec = -1;
! 			    break;
  			  }
! 			else
  			  new_exec = 1;
  		      }
  		  }
--- 5705,5715 ----
  		      {
  			if (VECTOR_MODE_P (GET_MODE (x)))
  			  {
! 			    int vf = GET_MODE_NUNITS (GET_MODE (x));
! 			    new_exec = MAX ((uint64_t)new_exec,
! 					    0xffffffffffffffffUL >> (64-vf));
  			  }
! 			else if (new_exec == 0)
  			  new_exec = 1;
  		      }
  		  }
*************** gcn_oacc_dim_size (int dim)
*** 5105,5111 ****
  					cfun->machine->args.
  					reg[DISPATCH_PTR_ARG]),
  			   GEN_INT (offset[dim]));
!   return gen_rtx_MEM (SImode, addr);
  }
  
  /* Helper function for oacc_dim_pos instruction.
--- 6041,6049 ----
  					cfun->machine->args.
  					reg[DISPATCH_PTR_ARG]),
  			   GEN_INT (offset[dim]));
!   rtx mem = gen_rtx_MEM (SImode, addr);
!   set_mem_addr_space (mem, ADDR_SPACE_SCALAR_FLAT);
!   return mem;
  }
  
  /* Helper function for oacc_dim_pos instruction.
*************** gcn_shared_mem_layout (unsigned HOST_WID
*** 5216,5286 ****
  static void
  output_file_start (void)
  {
    const char *cpu;
-   bool use_xnack_attr = true;
-   bool use_sram_attr = true;
    switch (gcn_arch)
      {
      case PROCESSOR_FIJI:
        cpu = "gfx803";
! #ifndef HAVE_GCN_XNACK_FIJI
!       use_xnack_attr = false;
! #endif
!       use_sram_attr = false;
        break;
      case PROCESSOR_VEGA10:
        cpu = "gfx900";
! #ifndef HAVE_GCN_XNACK_GFX900
!       use_xnack_attr = false;
! #endif
!       use_sram_attr = false;
        break;
      case PROCESSOR_VEGA20:
        cpu = "gfx906";
! #ifndef HAVE_GCN_XNACK_GFX906
!       use_xnack_attr = false;
! #endif
!       use_sram_attr = false;
        break;
      case PROCESSOR_GFX908:
        cpu = "gfx908";
! #ifndef HAVE_GCN_XNACK_GFX908
!       use_xnack_attr = false;
! #endif
! #ifndef HAVE_GCN_SRAM_ECC_GFX908
!       use_sram_attr = false;
! #endif
        break;
      default: gcc_unreachable ();
      }
  
- #if HAVE_GCN_ASM_V3_SYNTAX
-   const char *xnack = (flag_xnack ? "+xnack" : "");
-   const char *sram_ecc = (flag_sram_ecc ? "+sram-ecc" : "");
- #endif
- #if HAVE_GCN_ASM_V4_SYNTAX
-   /* In HSACOv4 no attribute setting means the binary supports "any" hardware
-      configuration.  In GCC binaries, this is true for SRAM ECC, but not
-      XNACK.  */
-   const char *xnack = (flag_xnack ? ":xnack+" : ":xnack-");
-   const char *sram_ecc = (flag_sram_ecc == SRAM_ECC_ON ? ":sramecc+"
- 			  : flag_sram_ecc == SRAM_ECC_OFF ? ":sramecc-"
- 			  : "");
- #endif
-   if (!use_xnack_attr)
-     xnack = "";
-   if (!use_sram_attr)
-     sram_ecc = "";
- 
    fprintf(asm_out_file, "\t.amdgcn_target \"amdgcn-unknown-amdhsa--%s%s%s\"\n",
! 	  cpu,
! #if HAVE_GCN_ASM_V3_SYNTAX
! 	  xnack, sram_ecc
! #endif
! #ifdef HAVE_GCN_ASM_V4_SYNTAX
! 	  sram_ecc, xnack
! #endif
! 	  );
  }
  
  /* Implement ASM_DECLARE_FUNCTION_NAME via gcn-hsa.h.
--- 6154,6194 ----
  static void
  output_file_start (void)
  {
+   /* In HSACOv4 no attribute setting means the binary supports "any" hardware
+      configuration.  In GCC binaries, this is true for SRAM ECC, but not
+      XNACK.  */
+   const char *xnack = (flag_xnack ? ":xnack+" : ":xnack-");
+   const char *sram_ecc = (flag_sram_ecc == SRAM_ECC_ON ? ":sramecc+"
+ 			  : flag_sram_ecc == SRAM_ECC_OFF ? ":sramecc-"
+ 			  : "");
+ 
    const char *cpu;
    switch (gcn_arch)
      {
      case PROCESSOR_FIJI:
        cpu = "gfx803";
!       xnack = "";
!       sram_ecc = "";
        break;
      case PROCESSOR_VEGA10:
        cpu = "gfx900";
!       sram_ecc = "";
        break;
      case PROCESSOR_VEGA20:
        cpu = "gfx906";
!       sram_ecc = "";
        break;
      case PROCESSOR_GFX908:
        cpu = "gfx908";
!       break;
!     case PROCESSOR_GFX90a:
!       cpu = "gfx90a";
        break;
      default: gcc_unreachable ();
      }
  
    fprintf(asm_out_file, "\t.amdgcn_target \"amdgcn-unknown-amdhsa--%s%s%s\"\n",
! 	  cpu, sram_ecc, xnack);
  }
  
  /* Implement ASM_DECLARE_FUNCTION_NAME via gcn-hsa.h.
*************** gcn_hsa_declare_function_name (FILE *fil
*** 5329,5334 ****
--- 6237,6246 ----
  	sgpr = MAX_NORMAL_SGPR_COUNT;
      }
  
+   /* The gfx90a accum_offset field can't represent 0 registers.  */
+   if (gcn_arch == PROCESSOR_GFX90a && vgpr < 4)
+     vgpr = 4;
+ 
    fputs ("\t.rodata\n"
  	 "\t.p2align\t6\n"
  	 "\t.amdhsa_kernel\t", file);
*************** gcn_hsa_declare_function_name (FILE *fil
*** 5386,5402 ****
  	   "\t  .amdhsa_reserve_vcc\t1\n"
  	   "\t  .amdhsa_reserve_flat_scratch\t0\n"
  	   "\t  .amdhsa_reserve_xnack_mask\t%i\n"
! 	   "\t  .amdhsa_private_segment_fixed_size\t%i\n"
  	   "\t  .amdhsa_group_segment_fixed_size\t%u\n"
  	   "\t  .amdhsa_float_denorm_mode_32\t3\n"
  	   "\t  .amdhsa_float_denorm_mode_16_64\t3\n",
  	   vgpr,
  	   sgpr,
  	   xnack_enabled,
- 	   /* workitem_private_segment_bytes_size needs to be
- 	      one 64th the wave-front stack size.  */
- 	   stack_size_opt / 64,
  	   LDS_SIZE);
    fputs ("\t.end_amdhsa_kernel\n", file);
  
  #if 1
--- 6298,6316 ----
  	   "\t  .amdhsa_reserve_vcc\t1\n"
  	   "\t  .amdhsa_reserve_flat_scratch\t0\n"
  	   "\t  .amdhsa_reserve_xnack_mask\t%i\n"
! 	   "\t  .amdhsa_private_segment_fixed_size\t0\n"
  	   "\t  .amdhsa_group_segment_fixed_size\t%u\n"
  	   "\t  .amdhsa_float_denorm_mode_32\t3\n"
  	   "\t  .amdhsa_float_denorm_mode_16_64\t3\n",
  	   vgpr,
  	   sgpr,
  	   xnack_enabled,
  	   LDS_SIZE);
+   if (gcn_arch == PROCESSOR_GFX90a)
+     fprintf (file,
+ 	     "\t  .amdhsa_accum_offset\t%i\n"
+ 	     "\t  .amdhsa_tg_split\t0\n",
+ 	     (vgpr+3)&~3); // I think this means the AGPRs come after the VGPRs
    fputs ("\t.end_amdhsa_kernel\n", file);
  
  #if 1
*************** gcn_hsa_declare_function_name (FILE *fil
*** 5415,5421 ****
  	   "            .kernarg_segment_size: %i\n"
  	   "            .kernarg_segment_align: %i\n"
  	   "            .group_segment_fixed_size: %u\n"
! 	   "            .private_segment_fixed_size: %i\n"
  	   "            .wavefront_size: 64\n"
  	   "            .sgpr_count: %i\n"
  	   "            .vgpr_count: %i\n"
--- 6329,6335 ----
  	   "            .kernarg_segment_size: %i\n"
  	   "            .kernarg_segment_align: %i\n"
  	   "            .group_segment_fixed_size: %u\n"
! 	   "            .private_segment_fixed_size: 0\n"
  	   "            .wavefront_size: 64\n"
  	   "            .sgpr_count: %i\n"
  	   "            .vgpr_count: %i\n"
*************** gcn_hsa_declare_function_name (FILE *fil
*** 5423,5430 ****
  	   cfun->machine->kernarg_segment_byte_size,
  	   cfun->machine->kernarg_segment_alignment,
  	   LDS_SIZE,
- 	   stack_size_opt / 64,
  	   sgpr, vgpr);
    fputs ("        .end_amdgpu_metadata\n", file);
  #endif
  
--- 6337,6345 ----
  	   cfun->machine->kernarg_segment_byte_size,
  	   cfun->machine->kernarg_segment_alignment,
  	   LDS_SIZE,
  	   sgpr, vgpr);
+   if (gcn_arch == PROCESSOR_GFX90a)
+     fprintf (file, "            .agpr_count: 0\n"); // AGPRs are not used, yet
    fputs ("        .end_amdgpu_metadata\n", file);
  #endif
  
*************** static void
*** 5507,5519 ****
  print_reg (FILE *file, rtx x)
  {
    machine_mode mode = GET_MODE (x);
    if (mode == BImode || mode == QImode || mode == HImode || mode == SImode
!       || mode == HFmode || mode == SFmode
!       || mode == V64SFmode || mode == V64SImode
!       || mode == V64QImode || mode == V64HImode)
      fprintf (file, "%s", reg_names[REGNO (x)]);
!   else if (mode == DImode || mode == V64DImode
! 	   || mode == DFmode || mode == V64DFmode)
      {
        if (SGPR_REGNO_P (REGNO (x)))
  	fprintf (file, "s[%i:%i]", REGNO (x) - FIRST_SGPR_REG,
--- 6422,6433 ----
  print_reg (FILE *file, rtx x)
  {
    machine_mode mode = GET_MODE (x);
+   if (VECTOR_MODE_P (mode))
+     mode = GET_MODE_INNER (mode);
    if (mode == BImode || mode == QImode || mode == HImode || mode == SImode
!       || mode == HFmode || mode == SFmode)
      fprintf (file, "%s", reg_names[REGNO (x)]);
!   else if (mode == DImode || mode == DFmode)
      {
        if (SGPR_REGNO_P (REGNO (x)))
  	fprintf (file, "s[%i:%i]", REGNO (x) - FIRST_SGPR_REG,
*************** print_operand_address (FILE *file, rtx m
*** 5724,5746 ****
  	      if (vgpr_offset == NULL_RTX)
  		/* In this case, the vector offset is zero, so we use the first
  		   lane of v1, which is initialized to zero.  */
! 		{
! 		  if (HAVE_GCN_ASM_GLOBAL_LOAD_FIXED)
! 		    fprintf (file, "v1");
! 		  else
! 		    fprintf (file, "v[1:2]");
! 		}
  	      else if (REG_P (vgpr_offset)
  		       && VGPR_REGNO_P (REGNO (vgpr_offset)))
! 		{
! 		  if (HAVE_GCN_ASM_GLOBAL_LOAD_FIXED)
! 		    fprintf (file, "v%d",
! 			     REGNO (vgpr_offset) - FIRST_VGPR_REG);
! 		  else
! 		    fprintf (file, "v[%d:%d]",
! 			     REGNO (vgpr_offset) - FIRST_VGPR_REG,
! 			     REGNO (vgpr_offset) - FIRST_VGPR_REG + 1);
! 		}
  	      else
  		output_operand_lossage ("bad ADDR_SPACE_GLOBAL address");
  	    }
--- 6638,6647 ----
  	      if (vgpr_offset == NULL_RTX)
  		/* In this case, the vector offset is zero, so we use the first
  		   lane of v1, which is initialized to zero.  */
! 		fprintf (file, "v1");
  	      else if (REG_P (vgpr_offset)
  		       && VGPR_REGNO_P (REGNO (vgpr_offset)))
! 		fprintf (file, "v%d", REGNO (vgpr_offset) - FIRST_VGPR_REG);
  	      else
  		output_operand_lossage ("bad ADDR_SPACE_GLOBAL address");
  	    }
*************** print_operand (FILE *file, rtx x, int co
*** 5973,5992 ****
      case 'o':
        {
  	const char *s = 0;
! 	switch (GET_MODE_SIZE (GET_MODE (x)))
  	  {
! 	  case 1:
  	    s = "_ubyte";
  	    break;
! 	  case 2:
  	    s = "_ushort";
  	    break;
! 	  /* The following are full-vector variants.  */
! 	  case 64:
! 	    s = "_ubyte";
! 	    break;
! 	  case 128:
! 	    s = "_ushort";
  	    break;
  	  }
  
--- 6874,6893 ----
      case 'o':
        {
  	const char *s = 0;
! 	machine_mode mode = GET_MODE (x);
! 	if (VECTOR_MODE_P (mode))
! 	  mode = GET_MODE_INNER (mode);
! 
! 	switch (mode)
  	  {
! 	  case E_QImode:
  	    s = "_ubyte";
  	    break;
! 	  case E_HImode:
! 	  case E_HFmode:
  	    s = "_ushort";
  	    break;
! 	  default:
  	    break;
  	  }
  
*************** print_operand (FILE *file, rtx x, int co
*** 6001,6043 ****
        }
      case 's':
        {
! 	const char *s = "";
! 	switch (GET_MODE_SIZE (GET_MODE (x)))
  	  {
! 	  case 1:
  	    s = "_byte";
  	    break;
! 	  case 2:
  	    s = "_short";
  	    break;
! 	  case 4:
  	    s = "_dword";
  	    break;
! 	  case 8:
  	    s = "_dwordx2";
  	    break;
! 	  case 12:
! 	    s = "_dwordx3";
! 	    break;
! 	  case 16:
  	    s = "_dwordx4";
  	    break;
- 	  case 32:
- 	    s = "_dwordx8";
- 	    break;
- 	  case 64:
- 	    s = VECTOR_MODE_P (GET_MODE (x)) ? "_byte" : "_dwordx16";
- 	    break;
- 	  /* The following are full-vector variants.  */
- 	  case 128:
- 	    s = "_short";
- 	    break;
- 	  case 256:
- 	    s = "_dword";
- 	    break;
- 	  case 512:
- 	    s = "_dwordx2";
- 	    break;
  	  default:
  	    output_operand_lossage ("invalid operand %%xn code");
  	    return;
--- 6902,6932 ----
        }
      case 's':
        {
! 	const char *s;
! 	machine_mode mode = GET_MODE (x);
! 	if (VECTOR_MODE_P (mode))
! 	  mode = GET_MODE_INNER (mode);
! 
! 	switch (mode)
  	  {
! 	  case E_QImode:
  	    s = "_byte";
  	    break;
! 	  case E_HImode:
! 	  case E_HFmode:
  	    s = "_short";
  	    break;
! 	  case E_SImode:
! 	  case E_SFmode:
  	    s = "_dword";
  	    break;
! 	  case E_DImode:
! 	  case E_DFmode:
  	    s = "_dwordx2";
  	    break;
! 	  case E_TImode:
  	    s = "_dwordx4";
  	    break;
  	  default:
  	    output_operand_lossage ("invalid operand %%xn code");
  	    return;
*************** print_operand (FILE *file, rtx x, int co
*** 6411,6417 ****
  	      str = "-4.0";
  	      break;
  	    case 248:
! 	      str = "1/pi";
  	      break;
  	    default:
  	      rtx ix = simplify_gen_subreg (GET_MODE (x) == DFmode
--- 7300,7306 ----
  	      str = "-4.0";
  	      break;
  	    case 248:
! 	      str = "0.15915494";
  	      break;
  	    default:
  	      rtx ix = simplify_gen_subreg (GET_MODE (x) == DFmode
*************** print_operand (FILE *file, rtx x, int co
*** 6445,6451 ****
    gcc_unreachable ();
  }
  
! /* Implement DBX_REGISTER_NUMBER macro.
   
     Return the DWARF register number that corresponds to the GCC internal
     REGNO.  */
--- 7334,7340 ----
    gcc_unreachable ();
  }
  
! /* Implement DEBUGGER_REGNO macro.
   
     Return the DWARF register number that corresponds to the GCC internal
     REGNO.  */
*************** gcn_dwarf_register_span (rtx rtl)
*** 6541,6546 ****
--- 7430,7438 ----
  #define TARGET_ASM_TRAMPOLINE_TEMPLATE gcn_asm_trampoline_template
  #undef  TARGET_ATTRIBUTE_TABLE
  #define TARGET_ATTRIBUTE_TABLE gcn_attribute_table
+ #undef  TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES
+ #define TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES \
+   gcn_autovectorize_vector_modes
  #undef  TARGET_BUILTIN_DECL
  #define TARGET_BUILTIN_DECL gcn_builtin_decl
  #undef  TARGET_CAN_CHANGE_MODE_CLASS
*************** gcn_dwarf_register_span (rtx rtl)
*** 6607,6612 ****
--- 7499,7506 ----
    gcn_ira_change_pseudo_allocno_class
  #undef  TARGET_LEGITIMATE_CONSTANT_P
  #define TARGET_LEGITIMATE_CONSTANT_P gcn_legitimate_constant_p
+ #undef  TARGET_LIBC_HAS_FUNCTION
+ #define TARGET_LIBC_HAS_FUNCTION gcn_libc_has_function
  #undef  TARGET_LRA_P
  #define TARGET_LRA_P hook_bool_void_true
  #undef  TARGET_MACHINE_DEPENDENT_REORG
*************** gcn_dwarf_register_span (rtx rtl)
*** 6634,6639 ****
--- 7528,7540 ----
  #define TARGET_SECTION_TYPE_FLAGS gcn_section_type_flags
  #undef  TARGET_SCALAR_MODE_SUPPORTED_P
  #define TARGET_SCALAR_MODE_SUPPORTED_P gcn_scalar_mode_supported_p
+ #undef  TARGET_SIMD_CLONE_ADJUST
+ #define TARGET_SIMD_CLONE_ADJUST gcn_simd_clone_adjust
+ #undef  TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN
+ #define TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN \
+   gcn_simd_clone_compute_vecsize_and_simdlen
+ #undef  TARGET_SIMD_CLONE_USABLE
+ #define TARGET_SIMD_CLONE_USABLE gcn_simd_clone_usable
  #undef  TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P
  #define TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P \
    gcn_small_register_classes_for_mode_p
*************** gcn_dwarf_register_span (rtx rtl)
*** 6647,6652 ****
--- 7548,7556 ----
  #define TARGET_TRULY_NOOP_TRUNCATION gcn_truly_noop_truncation
  #undef  TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST
  #define TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST gcn_vectorization_cost
+ #undef  TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
+ #define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION \
+   gcn_vectorize_builtin_vectorized_function
  #undef  TARGET_VECTORIZE_GET_MASK_MODE
  #define TARGET_VECTORIZE_GET_MASK_MODE gcn_vectorize_get_mask_mode
  #undef  TARGET_VECTORIZE_PREFERRED_SIMD_MODE
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn.h gcc-13.1.0/gcc/config/gcn/gcn.h
*** gcc-12.2.0/gcc/config/gcn/gcn.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,4 ----
! /* Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
     This file 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
***************
*** 16,31 ****
  
  #include "config/gcn/gcn-opts.h"
  
! #define TARGET_CPU_CPP_BUILTINS()	\
!   do					\
!     {					\
!       builtin_define ("__AMDGCN__");	\
!       if (TARGET_GCN3)			\
! 	builtin_define ("__GCN3__");	\
!       else if (TARGET_GCN5)		\
! 	builtin_define ("__GCN5__");	\
!     }					\
!   while(0)
  
  /* Support for a compile-time default architecture and tuning.
     The rules are:
--- 16,47 ----
  
  #include "config/gcn/gcn-opts.h"
  
! #define TARGET_CPU_CPP_BUILTINS()                                              \
!   do                                                                           \
!     {                                                                          \
!       builtin_define ("__AMDGCN__");                                           \
!       if (TARGET_GCN3)                                                         \
! 	builtin_define ("__GCN3__");                                           \
!       else if (TARGET_GCN5)                                                    \
! 	builtin_define ("__GCN5__");                                           \
!       else if (TARGET_CDNA1)                                                   \
! 	builtin_define ("__CDNA1__");                                          \
!       else if (TARGET_CDNA2)                                                   \
! 	builtin_define ("__CDNA2__");                                          \
!       if (TARGET_FIJI)                                                         \
! 	{                                                                      \
! 	  builtin_define ("__fiji__");                                         \
! 	  builtin_define ("__gfx803__");                                       \
! 	}                                                                      \
!       else if (TARGET_VEGA10)                                                  \
! 	builtin_define ("__gfx900__");                                         \
!       else if (TARGET_VEGA20)                                                  \
! 	builtin_define ("__gfx906__");                                         \
!       else if (TARGET_GFX908)                                                  \
! 	builtin_define ("__gfx908__");                                         \
!       else if (TARGET_GFX90a)                                                  \
! 	builtin_define ("__gfx90a__");                                         \
!   } while (0)
  
  /* Support for a compile-time default architecture and tuning.
     The rules are:
***************
*** 134,140 ****
  #define LINK_REGNUM		  18
  #define EXEC_SAVE_REG		  20
  #define CC_SAVE_REG		  22
! #define RETURN_VALUE_REG	  24	/* Must be divisible by 4.  */
  #define STATIC_CHAIN_REGNUM	  30
  #define WORK_ITEM_ID_Z_REG	  162
  #define SOFT_ARG_REG		  416
--- 150,156 ----
  #define LINK_REGNUM		  18
  #define EXEC_SAVE_REG		  20
  #define CC_SAVE_REG		  22
! #define RETURN_VALUE_REG	  168	/* Must be divisible by 4.  */
  #define STATIC_CHAIN_REGNUM	  30
  #define WORK_ITEM_ID_Z_REG	  162
  #define SOFT_ARG_REG		  416
***************
*** 142,148 ****
  #define DWARF_LINK_REGISTER	  420
  #define FIRST_PSEUDO_REGISTER	  421
  
! #define FIRST_PARM_REG 24
  #define NUM_PARM_REGS  6
  
  /* There is no arg pointer.  Just choose random fixed register that does
--- 158,165 ----
  #define DWARF_LINK_REGISTER	  420
  #define FIRST_PSEUDO_REGISTER	  421
  
! #define FIRST_PARM_REG (FIRST_SGPR_REG + 24)
! #define FIRST_VPARM_REG (FIRST_VGPR_REG + 8)
  #define NUM_PARM_REGS  6
  
  /* There is no arg pointer.  Just choose random fixed register that does
***************
*** 160,171 ****
  #define CC_REG_P(X)		(REG_P (X) && CC_REGNO_P (REGNO (X)))
  #define CC_REGNO_P(X)		((X) == SCC_REG || (X) == VCC_REG)
  #define FUNCTION_ARG_REGNO_P(N) \
!   ((N) >= FIRST_PARM_REG && (N) < (FIRST_PARM_REG + NUM_PARM_REGS))
  
  
  #define FIXED_REGISTERS {			    \
      /* Scalars.  */				    \
!     1, 1, 0, 0, 1, 1, 1, 1, 1, 1,		    \
  /*		fp    sp    lr.  */		    \
      1, 1, 0, 0, 0, 0, 1, 1, 0, 0,		    \
  /*  exec_save, cc_save */			    \
--- 177,189 ----
  #define CC_REG_P(X)		(REG_P (X) && CC_REGNO_P (REGNO (X)))
  #define CC_REGNO_P(X)		((X) == SCC_REG || (X) == VCC_REG)
  #define FUNCTION_ARG_REGNO_P(N) \
!   (((N) >= FIRST_PARM_REG && (N) < (FIRST_PARM_REG + NUM_PARM_REGS)) \
!    || ((N) >= FIRST_VPARM_REG && (N) < (FIRST_VPARM_REG + NUM_PARM_REGS)))
  
  
  #define FIXED_REGISTERS {			    \
      /* Scalars.  */				    \
!     1, 1, 1, 1, 1, 1, 1, 1, 1, 1,		    \
  /*		fp    sp    lr.  */		    \
      1, 1, 0, 0, 0, 0, 1, 1, 0, 0,		    \
  /*  exec_save, cc_save */			    \
*************** typedef struct gcn_args
*** 546,551 ****
--- 564,570 ----
    tree fntype;
    struct gcn_kernel_args args;
    int num;
+   int vnum;
    int offset;
    int alignment;
  } CUMULATIVE_ARGS;
*************** enum gcn_builtin_codes
*** 649,655 ****
      }
  
  /* This needs to match gcn_function_value.  */
! #define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, SGPR_REGNO (RETURN_VALUE_REG))
  
  /* The s_ff0 and s_flbit instructions return -1 if no input bits are set.  */
  #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = -1, 2)
--- 668,674 ----
      }
  
  /* This needs to match gcn_function_value.  */
! #define LIBCALL_VALUE(MODE) gen_rtx_REG (MODE, RETURN_VALUE_REG)
  
  /* The s_ff0 and s_flbit instructions return -1 if no input bits are set.  */
  #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = -1, 2)
*************** enum gcn_builtin_codes
*** 671,673 ****
--- 690,716 ----
  /* Trampolines */
  #define TRAMPOLINE_SIZE 36
  #define TRAMPOLINE_ALIGNMENT 64
+ 
+ /* MD Optimization.
+    The following are intended to be obviously constant at compile time to
+    allow genconditions to eliminate bad patterns at compile time.  */
+ #define MODE_VF(M) \
+   ((M == V64QImode || M == V64HImode || M == V64HFmode || M == V64SImode \
+     || M == V64SFmode || M == V64DImode || M == V64DFmode) \
+    ? 64 \
+    : (M == V32QImode || M == V32HImode || M == V32HFmode || M == V32SImode \
+       || M == V32SFmode || M == V32DImode || M == V32DFmode) \
+    ? 32 \
+    : (M == V16QImode || M == V16HImode || M == V16HFmode || M == V16SImode \
+       || M == V16SFmode || M == V16DImode || M == V16DFmode) \
+    ? 16 \
+    : (M == V8QImode || M == V8HImode || M == V8HFmode || M == V8SImode \
+       || M == V8SFmode || M == V8DImode || M == V8DFmode) \
+    ? 8 \
+    : (M == V4QImode || M == V4HImode || M == V4HFmode || M == V4SImode \
+       || M == V4SFmode || M == V4DImode || M == V4DFmode) \
+    ? 4 \
+    : (M == V2QImode || M == V2HImode || M == V2HFmode || M == V2SImode \
+       || M == V2SFmode || M == V2DImode || M == V2DFmode) \
+    ? 2 \
+    : 1)
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn.md gcc-13.1.0/gcc/config/gcn/gcn.md
*** gcc-12.2.0/gcc/config/gcn/gcn.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  ;; This file 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
--- 1,4 ----
! ;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  ;; This file 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
***************
*** 78,88 ****
    UNSPEC_PLUS_CARRY_DPP_SHR UNSPEC_PLUS_CARRY_IN_DPP_SHR
    UNSPEC_AND_DPP_SHR UNSPEC_IOR_DPP_SHR UNSPEC_XOR_DPP_SHR
    UNSPEC_MOV_DPP_SHR
!   UNSPEC_MOV_FROM_LANE63
    UNSPEC_GATHER
    UNSPEC_SCATTER
    UNSPEC_RCP
!   UNSPEC_FLBIT_INT])
  
  ;; }}}
  ;; {{{ Attributes
--- 78,96 ----
    UNSPEC_PLUS_CARRY_DPP_SHR UNSPEC_PLUS_CARRY_IN_DPP_SHR
    UNSPEC_AND_DPP_SHR UNSPEC_IOR_DPP_SHR UNSPEC_XOR_DPP_SHR
    UNSPEC_MOV_DPP_SHR
!   UNSPEC_MOV_DPP_SWAP_PAIRS
!   UNSPEC_MOV_DPP_DISTRIBUTE_EVEN
!   UNSPEC_MOV_DPP_DISTRIBUTE_ODD
!   UNSPEC_CMUL UNSPEC_CMUL_CONJ
!   UNSPEC_CMUL_ADD UNSPEC_CMUL_SUB
!   UNSPEC_CADD90
!   UNSPEC_CADD270
    UNSPEC_GATHER
    UNSPEC_SCATTER
    UNSPEC_RCP
!   UNSPEC_FLBIT_INT
!   UNSPEC_FLOOR UNSPEC_CEIL UNSPEC_SIN UNSPEC_COS UNSPEC_EXP2 UNSPEC_LOG2
!   UNSPEC_LDEXP UNSPEC_FREXP_EXP UNSPEC_FREXP_MANT])
  
  ;; }}}
  ;; {{{ Attributes
***************
*** 371,376 ****
--- 379,388 ----
     (sign_extend "extend")
     (zero_extend "zero_extend")])
  
+ (define_code_attr fexpander
+   [(smin "fmin")
+    (smax "fmax")])
+ 
  ;; }}}
  ;; {{{ Miscellaneous instructions
  
***************
*** 481,494 ****
         we emit bytes directly as a workaround.  */
      switch (which_alternative) {
      case 0:
!       if (REG_P (operands[1]) && REGNO (operands[1]) == SCC_REG)
! 	return "; s_mov_b32\t%0,%1 is not supported by the assembler.\;"
! 	       ".byte\t0xfd\;"
! 	       ".byte\t0x0\;"
! 	       ".byte\t0x80|%R0\;"
! 	       ".byte\t0xbe";
!       else
! 	return "s_mov_b32\t%0, %1";
      case 1:
        if (REG_P (operands[1]) && REGNO (operands[1]) == SCC_REG)
  	return "; v_mov_b32\t%0, %1\;"
--- 493,499 ----
         we emit bytes directly as a workaround.  */
      switch (which_alternative) {
      case 0:
!       return "s_mov_b32\t%0, %1";
      case 1:
        if (REG_P (operands[1]) && REGNO (operands[1]) == SCC_REG)
  	return "; v_mov_b32\t%0, %1\;"
***************
*** 505,520 ****
      case 4:
        return "v_cmp_ne_u32\tvcc, 0, %1";
      case 5:
!       if (REGNO (operands[1]) == SCC_REG)
! 	return "; s_mov_b32\t%0, %1 is not supported by the assembler.\;"
! 	       ".byte\t0xfd\;"
! 	       ".byte\t0x0\;"
! 	       ".byte\t0xea\;"
! 	       ".byte\t0xbe\;"
! 	       "s_mov_b32\tvcc_hi, 0";
!       else
! 	return "s_mov_b32\tvcc_lo, %1\;"
! 	       "s_mov_b32\tvcc_hi, 0";
      case 6:
        return "s_load_dword\t%0, %A1\;s_waitcnt\tlgkmcnt(0)";
      case 7:
--- 510,517 ----
      case 4:
        return "v_cmp_ne_u32\tvcc, 0, %1";
      case 5:
!       return "s_mov_b32\tvcc_lo, %1\;"
! 	     "s_mov_b32\tvcc_hi, 0";
      case 6:
        return "s_load_dword\t%0, %A1\;s_waitcnt\tlgkmcnt(0)";
      case 7:
***************
*** 702,708 ****
  ;; {{{ Prologue/Epilogue
  
  (define_insn "prologue_use"
!   [(unspec_volatile [(match_operand 0)] UNSPECV_PROLOGUE_USE)]
    ""
    ""
    [(set_attr "length" "0")])
--- 699,705 ----
  ;; {{{ Prologue/Epilogue
  
  (define_insn "prologue_use"
!   [(unspec_volatile [(match_operand 0 "register_operand")] UNSPECV_PROLOGUE_USE)]
    ""
    ""
    [(set_attr "length" "0")])
***************
*** 739,746 ****
        return "s_branch\t%0";
      else
        /* !!! This sequence clobbers EXEC_SAVE_REG and CC_SAVE_REG.  */
!       return "; s_mov_b32\ts22, scc is not supported by the assembler.\;"
! 	     ".long\t0xbe9600fd\;"
  	     "s_getpc_b64\ts[20:21]\;"
  	     "s_add_u32\ts20, s20, %0@rel32@lo+4\;"
  	     "s_addc_u32\ts21, s21, %0@rel32@hi+4\;"
--- 736,742 ----
        return "s_branch\t%0";
      else
        /* !!! This sequence clobbers EXEC_SAVE_REG and CC_SAVE_REG.  */
!       return "s_mov_b32\ts22, scc\;"
  	     "s_getpc_b64\ts[20:21]\;"
  	     "s_add_u32\ts20, s20, %0@rel32@lo+4\;"
  	     "s_addc_u32\ts21, s21, %0@rel32@hi+4\;"
***************
*** 801,811 ****
  	  }
  	else
  	  return "s_cbranch%c1\t.Lskip%=\;"
! 		 "; s_mov_b32\ts22, scc is not supported by the assembler.\;"
! 		 ".byte\t0xfd\;"
! 		 ".byte\t0x0\;"
! 		 ".byte\t0x80|22\;"
! 		 ".byte\t0xbe\;"
  		 "s_getpc_b64\ts[20:21]\;"
  		 "s_add_u32\ts20, s20, %0@rel32@lo+4\;"
  		 "s_addc_u32\ts21, s21, %0@rel32@hi+4\;"
--- 797,803 ----
  	  }
  	else
  	  return "s_cbranch%c1\t.Lskip%=\;"
! 		 "s_mov_b32\ts22, scc\;"
  		 "s_getpc_b64\ts[20:21]\;"
  		 "s_add_u32\ts20, s20, %0@rel32@lo+4\;"
  		 "s_addc_u32\ts21, s21, %0@rel32@hi+4\;"
***************
*** 890,897 ****
  
      if (SYMBOL_REF_P (operands[1])
  	&& SYMBOL_REF_WEAK (operands[1]))
! 	return "; s_mov_b32\ts22, scc is not supported by the assembler.\;"
! 	       ".long\t0xbe9600fd\;"
  	       "s_getpc_b64\t%0\;"
  	       "s_add_u32\t%L0, %L0, %1@gotpcrel32@lo+4\;"
  	       "s_addc_u32\t%H0, %H0, %1@gotpcrel32@hi+4\;"
--- 882,888 ----
  
      if (SYMBOL_REF_P (operands[1])
  	&& SYMBOL_REF_WEAK (operands[1]))
! 	return "s_mov_b32\ts22, scc\;"
  	       "s_getpc_b64\t%0\;"
  	       "s_add_u32\t%L0, %L0, %1@gotpcrel32@lo+4\;"
  	       "s_addc_u32\t%H0, %H0, %1@gotpcrel32@hi+4\;"
***************
*** 899,906 ****
  	       "s_cmpk_lg_u32\ts22, 0\;"
  	       "s_waitcnt\tlgkmcnt(0)";
  
!     return "; s_mov_b32\ts22, scc is not supported by the assembler.\;"
! 	   ".long\t0xbe9600fd\;"
  	   "s_getpc_b64\t%0\;"
  	   "s_add_u32\t%L0, %L0, %1@rel32@lo+4\;"
  	   "s_addc_u32\t%H0, %H0, %1@rel32@hi+4\;"
--- 890,896 ----
  	       "s_cmpk_lg_u32\ts22, 0\;"
  	       "s_waitcnt\tlgkmcnt(0)";
  
!     return "s_mov_b32\ts22, scc\;"
  	   "s_getpc_b64\t%0\;"
  	   "s_add_u32\t%L0, %L0, %1@rel32@lo+4\;"
  	   "s_addc_u32\t%H0, %H0, %1@rel32@hi+4\;"
***************
*** 930,940 ****
    {})
  
  (define_insn "gcn_call_value"
!   [(set (match_operand 0 "register_operand" "=Sg,Sg")
! 	(call (mem (match_operand 1 "immediate_operand" "Y,B"))
  	      (match_operand 2 "const_int_operand")))
     (clobber (reg:DI LR_REGNUM))
!    (clobber (match_scratch:DI 3 "=&Sg,X"))]
    ""
    "@
    s_getpc_b64\t%3\;s_add_u32\t%L3, %L3, %1@rel32@lo+4\;s_addc_u32\t%H3, %H3, %1@rel32@hi+4\;s_swappc_b64\ts[18:19], %3
--- 920,930 ----
    {})
  
  (define_insn "gcn_call_value"
!   [(set (match_operand 0 "register_operand"		"=Sgv,Sgv")
! 	(call (mem (match_operand 1 "immediate_operand" "   Y,  B"))
  	      (match_operand 2 "const_int_operand")))
     (clobber (reg:DI LR_REGNUM))
!    (clobber (match_scratch:DI 3				"=&Sg,  X"))]
    ""
    "@
    s_getpc_b64\t%3\;s_add_u32\t%L3, %L3, %1@rel32@lo+4\;s_addc_u32\t%H3, %H3, %1@rel32@hi+4\;s_swappc_b64\ts[18:19], %3
***************
*** 943,953 ****
     (set_attr "length" "24")])
  
  (define_insn "gcn_call_value_indirect"
!   [(set (match_operand 0 "register_operand" "=Sg")
! 	(call (mem (match_operand:DI 1 "register_operand" "Sg"))
  	      (match_operand 2 "" "")))
     (clobber (reg:DI LR_REGNUM))
!    (clobber (match_scratch:DI 3 "=X"))]
    ""
    "s_swappc_b64\ts[18:19], %1"
    [(set_attr "type" "sop1")
--- 933,943 ----
     (set_attr "length" "24")])
  
  (define_insn "gcn_call_value_indirect"
!   [(set (match_operand 0 "register_operand"		  "=Sgv")
! 	(call (mem (match_operand:DI 1 "register_operand" "  Sg"))
  	      (match_operand 2 "" "")))
     (clobber (reg:DI LR_REGNUM))
!    (clobber (match_scratch:DI 3				  "=  X"))]
    ""
    "s_swappc_b64\ts[18:19], %1"
    [(set_attr "type" "sop1")
***************
*** 1410,1416 ****
    ""
  {
    if (can_create_pseudo_p ()
!       && !TARGET_GCN5
        && !gcn_inline_immediate_operand (operands[2], SImode))
      operands[2] = force_reg (SImode, operands[2]);
  
--- 1400,1406 ----
    ""
  {
    if (can_create_pseudo_p ()
!       && !TARGET_GCN5_PLUS
        && !gcn_inline_immediate_operand (operands[2], SImode))
      operands[2] = force_reg (SImode, operands[2]);
  
***************
*** 1451,1457 ****
  		(match_operand:SI 1 "register_operand"         "Sg,Sg,v"))
  	      (match_operand:DI 2 "gcn_32bit_immediate_operand" "A, B,A"))
  	    (const_int 32))))]
!   "TARGET_GCN5 || gcn_inline_immediate_operand (operands[2], SImode)"
    "@
    s_mul_hi<sgnsuffix>0\t%0, %1, %2
    s_mul_hi<sgnsuffix>0\t%0, %1, %2
--- 1441,1447 ----
  		(match_operand:SI 1 "register_operand"         "Sg,Sg,v"))
  	      (match_operand:DI 2 "gcn_32bit_immediate_operand" "A, B,A"))
  	    (const_int 32))))]
!   "TARGET_GCN5_PLUS || gcn_inline_immediate_operand (operands[2], SImode)"
    "@
    s_mul_hi<sgnsuffix>0\t%0, %1, %2
    s_mul_hi<sgnsuffix>0\t%0, %1, %2
***************
*** 1469,1475 ****
    ""
  {
    if (can_create_pseudo_p ()
!       && !TARGET_GCN5
        && !gcn_inline_immediate_operand (operands[2], SImode))
      operands[2] = force_reg (SImode, operands[2]);
  
--- 1459,1465 ----
    ""
  {
    if (can_create_pseudo_p ()
!       && !TARGET_GCN5_PLUS
        && !gcn_inline_immediate_operand (operands[2], SImode))
      operands[2] = force_reg (SImode, operands[2]);
  
***************
*** 1506,1512 ****
  		   (match_operand:SI 1 "register_operand"       "Sg, Sg, v"))
  		 (match_operand:DI 2 "gcn_32bit_immediate_operand"
  								 "A,  B, A")))]
!   "TARGET_GCN5 || gcn_inline_immediate_operand (operands[2], SImode)"
    "#"
    "&& reload_completed"
    [(const_int 0)]
--- 1496,1502 ----
  		   (match_operand:SI 1 "register_operand"       "Sg, Sg, v"))
  		 (match_operand:DI 2 "gcn_32bit_immediate_operand"
  								 "A,  B, A")))]
!   "TARGET_GCN5_PLUS || gcn_inline_immediate_operand (operands[2], SImode)"
    "#"
    "&& reload_completed"
    [(const_int 0)]
***************
*** 1698,1703 ****
--- 1688,1713 ----
  ;; }}}
  ;; {{{ ALU: generic 64-bit
  
+ (define_insn_and_split "one_cmpldi2"
+   [(set (match_operand:DI 0 "register_operand"        "=Sg,    v")
+ 	(not:DI (match_operand:DI 1 "gcn_alu_operand" "SgA,vSvDB")))
+    (clobber (match_scratch:BI 2			      "=cs,    X"))]
+   ""
+   "#"
+   "reload_completed"
+   [(parallel [(set (match_dup 3) (not:SI (match_dup 4)))
+ 	      (clobber (match_dup 2))])
+    (parallel [(set (match_dup 5) (not:SI (match_dup 6)))
+ 	      (clobber (match_dup 2))])]
+   {
+     operands[3] = gcn_operand_part (DImode, operands[0], 0);
+     operands[4] = gcn_operand_part (DImode, operands[1], 0);
+     operands[5] = gcn_operand_part (DImode, operands[0], 1);
+     operands[6] = gcn_operand_part (DImode, operands[1], 1);
+   }
+   [(set_attr "type" "mult")]
+ )
+ 
  (define_code_iterator vec_and_scalar64_com [and ior xor])
  
  (define_insn_and_split "<expander>di3"
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/gcn.opt gcc-13.1.0/gcc/config/gcn/gcn.opt
*** gcc-12.2.0/gcc/config/gcn/gcn.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/gcn.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the GCN port of the compiler.
  
! ; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the GCN port of the compiler.
  
! ; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Enum(gpu_type) String(gfx906) Value(PROC
*** 37,42 ****
--- 37,45 ----
  EnumValue
  Enum(gpu_type) String(gfx908) Value(PROCESSOR_GFX908)
  
+ EnumValue
+ Enum(gpu_type) String(gfx90a) Value(PROCESSOR_GFX90a)
+ 
  march=
  Target RejectNegative Joined ToLower Enum(gpu_type) Var(gcn_arch) Init(PROCESSOR_FIJI)
  Specify the name of the target GPU.
*************** int stack_size_opt = -1
*** 66,72 ****
  
  mstack-size=
  Target RejectNegative Joined UInteger Var(stack_size_opt) Init(-1)
! -mstack-size=<number>	Set the private segment size per wave-front, in bytes.
  
  int gang_private_size_opt = -1
  
--- 69,75 ----
  
  mstack-size=
  Target RejectNegative Joined UInteger Var(stack_size_opt) Init(-1)
! Obsolete; use GCN_STACK_SIZE at runtime.
  
  int gang_private_size_opt = -1
  
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/mkoffload.cc gcc-13.1.0/gcc/config/gcn/mkoffload.cc
*** gcc-12.2.0/gcc/config/gcn/mkoffload.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/mkoffload.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Offload image generation tool for AMD GCN.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Offload image generation tool for AMD GCN.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 55,63 ****
  #define EF_AMDGPU_MACH_AMDGCN_GFX906 0x2f
  #undef  EF_AMDGPU_MACH_AMDGCN_GFX908
  #define EF_AMDGPU_MACH_AMDGCN_GFX908 0x30
! 
! #define EF_AMDGPU_XNACK_V3    0x100
! #define EF_AMDGPU_SRAM_ECC_V3 0x200
  
  #define EF_AMDGPU_FEATURE_XNACK_V4	0x300  /* Mask.  */
  #define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4	0x000
--- 55,62 ----
  #define EF_AMDGPU_MACH_AMDGCN_GFX906 0x2f
  #undef  EF_AMDGPU_MACH_AMDGCN_GFX908
  #define EF_AMDGPU_MACH_AMDGCN_GFX908 0x30
! #undef  EF_AMDGPU_MACH_AMDGCN_GFX90a
! #define EF_AMDGPU_MACH_AMDGCN_GFX90a 0x3f
  
  #define EF_AMDGPU_FEATURE_XNACK_V4	0x300  /* Mask.  */
  #define EF_AMDGPU_FEATURE_XNACK_UNSUPPORTED_V4	0x000
***************
*** 71,89 ****
  #define EF_AMDGPU_FEATURE_SRAMECC_OFF_V4	0x800
  #define EF_AMDGPU_FEATURE_SRAMECC_ON_V4		0xc00
  
- #ifdef HAVE_GCN_ASM_V3_SYNTAX
- #define SET_XNACK_ON(VAR) VAR |= EF_AMDGPU_XNACK_V3
- #define SET_XNACK_OFF(VAR) VAR &= ~EF_AMDGPU_XNACK_V3
- #define TEST_XNACK(VAR) (VAR & EF_AMDGPU_XNACK_V3)
- 
- #define SET_SRAM_ECC_ON(VAR) VAR |= EF_AMDGPU_SRAM_ECC_V3
- #define SET_SRAM_ECC_ANY(VAR) SET_SRAM_ECC_ON (VAR)
- #define SET_SRAM_ECC_OFF(VAR) VAR &= ~EF_AMDGPU_SRAM_ECC_V3
- #define SET_SRAM_ECC_UNSUPPORTED(VAR) SET_SRAM_ECC_OFF (VAR)
- #define TEST_SRAM_ECC_ANY(VAR) 0 /* Not supported.  */
- #define TEST_SRAM_ECC_ON(VAR) (VAR & EF_AMDGPU_SRAM_ECC_V3)
- #endif
- #ifdef HAVE_GCN_ASM_V4_SYNTAX
  #define SET_XNACK_ON(VAR) VAR = ((VAR & ~EF_AMDGPU_FEATURE_XNACK_V4) \
  				 | EF_AMDGPU_FEATURE_XNACK_ON_V4)
  #define SET_XNACK_OFF(VAR) VAR = ((VAR & ~EF_AMDGPU_FEATURE_XNACK_V4) \
--- 70,75 ----
***************
*** 104,110 ****
  				== EF_AMDGPU_FEATURE_SRAMECC_ANY_V4)
  #define TEST_SRAM_ECC_ON(VAR) ((VAR & EF_AMDGPU_FEATURE_SRAMECC_V4) \
  			       == EF_AMDGPU_FEATURE_SRAMECC_ON_V4)
- #endif
  
  #ifndef R_AMDGPU_NONE
  #define R_AMDGPU_NONE		0
--- 90,95 ----
*************** static struct obstack files_to_cleanup;
*** 130,141 ****
  enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
  uint32_t elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX803;  // Default GPU architecture.
  uint32_t elf_flags =
- #ifdef HAVE_GCN_ASM_V3_SYNTAX
-     0;
- #endif
- #ifdef HAVE_GCN_ASM_V4_SYNTAX
      (EF_AMDGPU_FEATURE_XNACK_ANY_V4 | EF_AMDGPU_FEATURE_SRAMECC_ANY_V4);
! #endif
  
  /* Delete tempfiles.  */
  
--- 115,123 ----
  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_XNACK_ANY_V4 | EF_AMDGPU_FEATURE_SRAMECC_ANY_V4);
! 
! static int gcn_stack_size = 0;  /* Zero means use default.  */
  
  /* Delete tempfiles.  */
  
*************** copy_early_debug_info (const char *infil
*** 362,375 ****
  
    /* Patch the correct elf architecture flag into the file.  */
    ehdr.e_ident[7] = ELFOSABI_AMDGPU_HSA;
- #ifdef HAVE_GCN_ASM_V3_SYNTAX
-   ehdr.e_ident[8] = ELFABIVERSION_AMDGPU_HSA_V3;
- #endif
- #ifdef HAVE_GCN_ASM_V4_SYNTAX
    ehdr.e_ident[8] = (elf_arch == EF_AMDGPU_MACH_AMDGCN_GFX803
  		     ? ELFABIVERSION_AMDGPU_HSA_V3
  		     : ELFABIVERSION_AMDGPU_HSA_V4);
- #endif
    ehdr.e_type = ET_REL;
    ehdr.e_machine = EM_AMDGPU;
    ehdr.e_flags = elf_arch | elf_flags_actual;
--- 344,352 ----
*************** process_asm (FILE *in, FILE *out, FILE *
*** 578,583 ****
--- 555,561 ----
  	    char *funcname;
  	    if (sscanf (buf, "\t.8byte\t%ms\n", &funcname))
  	      {
+ 		fputs (buf, out);
  		obstack_ptr_grow (&fns_os, funcname);
  		fn_count++;
  		continue;
*************** process_asm (FILE *in, FILE *out, FILE *
*** 602,608 ****
  		 out);
  	}
        else if (sscanf (buf, " .section .gnu.offload_funcs%c", &dummy) > 0)
! 	state = IN_FUNCS;
        else if (sscanf (buf, " .amdgpu_metadata%c", &dummy) > 0)
  	{
  	  state = IN_METADATA;
--- 580,594 ----
  		 out);
  	}
        else if (sscanf (buf, " .section .gnu.offload_funcs%c", &dummy) > 0)
! 	{
! 	  state = IN_FUNCS;
! 	  /* Likewise for .gnu.offload_vars; used for reverse offload. */
! 	  fputs (buf, out);
! 	  fputs ("\t.global .offload_func_table\n"
! 		 "\t.type .offload_func_table, @object\n"
! 		 ".offload_func_table:\n",
! 		 out);
! 	}
        else if (sscanf (buf, " .amdgpu_metadata%c", &dummy) > 0)
  	{
  	  state = IN_METADATA;
*************** process_asm (FILE *in, FILE *out, FILE *
*** 636,641 ****
--- 622,628 ----
    struct regcount *regcounts = XOBFINISH (&regcounts_os, struct regcount *);
  
    fprintf (cfile, "#include <stdlib.h>\n");
+   fprintf (cfile, "#include <stdint.h>\n");
    fprintf (cfile, "#include <stdbool.h>\n\n");
  
    fprintf (cfile, "static const int gcn_num_vars = %d;\n\n", var_count);
*************** process_asm (FILE *in, FILE *out, FILE *
*** 677,682 ****
--- 664,681 ----
      }
    fprintf (cfile, "\n};\n\n");
  
+   /* Set the stack size if the user configured a value.  */
+   if (gcn_stack_size)
+     fprintf (cfile,
+ 	     "static __attribute__((constructor))\n"
+ 	     "void configure_stack_size (void)\n"
+ 	     "{\n"
+ 	     "  const char *val = getenv (\"GCN_STACK_SIZE\");\n"
+ 	     "  if (!val || val[0] == '\\0')\n"
+ 	     "    setenv (\"GCN_STACK_SIZE\", \"%d\", true);\n"
+ 	     "}\n\n",
+ 	     gcn_stack_size);
+ 
    obstack_free (&fns_os, NULL);
    for (i = 0; i < dims_count; i++)
      free (dims[i].name);
*************** process_asm (FILE *in, FILE *out, FILE *
*** 689,695 ****
  /* Embed an object file into a C source file.  */
  
  static void
! process_obj (FILE *in, FILE *cfile)
  {
    size_t len = 0;
    const char *input = read_file (in, &len);
--- 688,694 ----
  /* Embed an object file into a C source file.  */
  
  static void
! process_obj (FILE *in, FILE *cfile, uint32_t omp_requires)
  {
    size_t len = 0;
    const char *input = read_file (in, &len);
*************** process_obj (FILE *in, FILE *cfile)
*** 716,732 ****
  	   len);
  
    fprintf (cfile,
! 	   "static const struct gcn_image_desc {\n"
  	   "  const struct gcn_image *gcn_image;\n"
  	   "  unsigned kernel_count;\n"
  	   "  const struct hsa_kernel_description *kernel_infos;\n"
  	   "  unsigned global_variable_count;\n"
! 	   "} target_data = {\n"
  	   "  &gcn_image,\n"
  	   "  sizeof (gcn_kernels) / sizeof (gcn_kernels[0]),\n"
  	   "  gcn_kernels,\n"
  	   "  gcn_num_vars\n"
! 	   "};\n\n");
  
    fprintf (cfile,
  	   "#ifdef __cplusplus\n"
--- 715,733 ----
  	   len);
  
    fprintf (cfile,
! 	   "static const struct gcn_data {\n"
! 	   "  uintptr_t omp_requires_mask;\n"
  	   "  const struct gcn_image *gcn_image;\n"
  	   "  unsigned kernel_count;\n"
  	   "  const struct hsa_kernel_description *kernel_infos;\n"
  	   "  unsigned global_variable_count;\n"
! 	   "} gcn_data = {\n"
! 	   "  %d,\n"
  	   "  &gcn_image,\n"
  	   "  sizeof (gcn_kernels) / sizeof (gcn_kernels[0]),\n"
  	   "  gcn_kernels,\n"
  	   "  gcn_num_vars\n"
! 	   "};\n\n", omp_requires);
  
    fprintf (cfile,
  	   "#ifdef __cplusplus\n"
*************** process_obj (FILE *in, FILE *cfile)
*** 745,751 ****
    fprintf (cfile, "static __attribute__((constructor)) void init (void)\n"
  	   "{\n"
  	   "  GOMP_offload_register_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*GCN*/, &target_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_GCN),
  	   GOMP_DEVICE_GCN);
--- 746,752 ----
    fprintf (cfile, "static __attribute__((constructor)) void init (void)\n"
  	   "{\n"
  	   "  GOMP_offload_register_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*GCN*/, &gcn_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_GCN),
  	   GOMP_DEVICE_GCN);
*************** process_obj (FILE *in, FILE *cfile)
*** 753,759 ****
    fprintf (cfile, "static __attribute__((destructor)) void fini (void)\n"
  	   "{\n"
  	   "  GOMP_offload_unregister_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*GCN*/, &target_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_GCN),
  	   GOMP_DEVICE_GCN);
--- 754,760 ----
    fprintf (cfile, "static __attribute__((destructor)) void fini (void)\n"
  	   "{\n"
  	   "  GOMP_offload_unregister_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*GCN*/, &gcn_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_GCN),
  	   GOMP_DEVICE_GCN);
*************** main (int argc, char **argv)
*** 818,824 ****
    FILE *cfile = stdout;
    const char *outname = 0;
  
!   progname = "mkoffload";
    diagnostic_initialize (global_dc, 0);
  
    obstack_init (&files_to_cleanup);
--- 819,825 ----
    FILE *cfile = stdout;
    const char *outname = 0;
  
!   progname = tool_name;
    diagnostic_initialize (global_dc, 0);
  
    obstack_init (&files_to_cleanup);
*************** main (int argc, char **argv)
*** 884,890 ****
    bool fopenacc = false;
    bool fPIC = false;
    bool fpic = false;
-   bool sram_seen = false;
    for (int i = 1; i < argc; i++)
      {
  #define STR "-foffload-abi="
--- 885,890 ----
*************** main (int argc, char **argv)
*** 912,931 ****
        else if (strcmp (argv[i], "-mno-xnack") == 0)
  	SET_XNACK_OFF (elf_flags);
        else if (strcmp (argv[i], "-msram-ecc=on") == 0)
! 	{
! 	  SET_SRAM_ECC_ON (elf_flags);
! 	  sram_seen = true;
! 	}
        else if (strcmp (argv[i], "-msram-ecc=any") == 0)
! 	{
! 	  SET_SRAM_ECC_ANY (elf_flags);
! 	  sram_seen = true;
! 	}
        else if (strcmp (argv[i], "-msram-ecc=off") == 0)
! 	{
! 	  SET_SRAM_ECC_OFF (elf_flags);
! 	  sram_seen = true;
! 	}
        else if (strcmp (argv[i], "-save-temps") == 0)
  	save_temps = true;
        else if (strcmp (argv[i], "-v") == 0)
--- 912,922 ----
        else if (strcmp (argv[i], "-mno-xnack") == 0)
  	SET_XNACK_OFF (elf_flags);
        else if (strcmp (argv[i], "-msram-ecc=on") == 0)
! 	SET_SRAM_ECC_ON (elf_flags);
        else if (strcmp (argv[i], "-msram-ecc=any") == 0)
! 	SET_SRAM_ECC_ANY (elf_flags);
        else if (strcmp (argv[i], "-msram-ecc=off") == 0)
! 	SET_SRAM_ECC_OFF (elf_flags);
        else if (strcmp (argv[i], "-save-temps") == 0)
  	save_temps = true;
        else if (strcmp (argv[i], "-v") == 0)
*************** main (int argc, char **argv)
*** 941,973 ****
  	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX906;
        else if (strcmp (argv[i], "-march=gfx908") == 0)
  	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX908;
      }
  
    if (!(fopenacc ^ fopenmp))
      fatal_error (input_location, "either -fopenacc or -fopenmp must be set");
  
-   if (!sram_seen)
-     {
- #ifdef HAVE_GCN_ASM_V3_SYNTAX
-       /* For HSACOv3, the SRAM-ECC feature defaults to "on" on GPUs where the
- 	 feature is available.
- 	 (HSACOv4 has elf_flags initialsed to "any" in all cases.)  */
-       switch (elf_arch)
- 	{
- 	case EF_AMDGPU_MACH_AMDGCN_GFX803:
- 	case EF_AMDGPU_MACH_AMDGCN_GFX900:
- 	case EF_AMDGPU_MACH_AMDGCN_GFX906:
- #ifndef HAVE_GCN_SRAM_ECC_GFX908
- 	case EF_AMDGPU_MACH_AMDGCN_GFX908:
- #endif
- 	  break;
- 	default:
- 	  SET_SRAM_ECC_ON (elf_flags);
- 	  break;
- 	}
- #endif
-     }
- 
    const char *abi;
    switch (offload_abi)
      {
--- 932,948 ----
  	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX906;
        else if (strcmp (argv[i], "-march=gfx908") == 0)
  	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX908;
+       else if (strcmp (argv[i], "-march=gfx90a") == 0)
+ 	elf_arch = EF_AMDGPU_MACH_AMDGCN_GFX90a;
+ #define STR "-mstack-size="
+       else if (startswith (argv[i], STR))
+ 	gcn_stack_size = atoi (argv[i] + strlen (STR));
+ #undef STR
      }
  
    if (!(fopenacc ^ fopenmp))
      fatal_error (input_location, "either -fopenacc or -fopenmp must be set");
  
    const char *abi;
    switch (offload_abi)
      {
*************** main (int argc, char **argv)
*** 1082,1087 ****
--- 1057,1063 ----
  		    }
  		  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))
*************** main (int argc, char **argv)
*** 1106,1111 ****
--- 1082,1090 ----
        if (verbose)
  	obstack_ptr_grow (&ld_argv_obstack, "-v");
  
+       if (save_temps)
+ 	obstack_ptr_grow (&ld_argv_obstack, "-save-temps");
+ 
        for (int i = 1; i < argc; i++)
  	if (startswith (argv[i], "-l")
  	    || startswith (argv[i], "-Wl")
*************** main (int argc, char **argv)
*** 1132,1140 ****
--- 1111,1138 ----
        unsetenv ("COMPILER_PATH");
        unsetenv ("LIBRARY_PATH");
  
+       char *omp_requires_file;
+       if (save_temps)
+ 	omp_requires_file = concat (dumppfx, ".mkoffload.omp_requires", NULL);
+       else
+ 	omp_requires_file = make_temp_file (".mkoffload.omp_requires");
+       obstack_ptr_grow (&files_to_cleanup, omp_requires_file);
+ 
        /* Run the compiler pass.  */
+       xputenv (concat ("GCC_OFFLOAD_OMP_REQUIRES_FILE=", omp_requires_file, NULL));
        fork_execute (cc_argv[0], CONST_CAST (char **, cc_argv), true, ".gcc_args");
        obstack_free (&cc_argv_obstack, NULL);
+       unsetenv("GCC_OFFLOAD_OMP_REQUIRES_FILE");
+ 
+       in = fopen (omp_requires_file, "rb");
+       if (!in)
+ 	fatal_error (input_location, "cannot open omp_requires file %qs",
+ 		     omp_requires_file);
+       uint32_t omp_requires;
+       if (fread (&omp_requires, sizeof (omp_requires), 1, in) != 1)
+ 	fatal_error (input_location, "cannot read omp_requires file %qs",
+ 		     omp_requires_file);
+       fclose (in);
  
        in = fopen (gcn_s1_name, "r");
        if (!in)
*************** main (int argc, char **argv)
*** 1157,1163 ****
        if (!in)
  	fatal_error (input_location, "cannot open intermediate gcn obj file");
  
!       process_obj (in, cfile);
  
        fclose (in);
  
--- 1155,1161 ----
        if (!in)
  	fatal_error (input_location, "cannot open intermediate gcn obj file");
  
!       process_obj (in, cfile, omp_requires);
  
        fclose (in);
  
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/offload.h gcc-13.1.0/gcc/config/gcn/offload.h
*** gcc-12.2.0/gcc/config/gcn/offload.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/offload.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Support for AMD GCN offloading.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Support for AMD GCN offloading.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/predicates.md gcc-13.1.0/gcc/config/gcn/predicates.md
*** gcc-12.2.0/gcc/config/gcn/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for GCN.
! ;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for GCN.
! ;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 197,199 ****
--- 197,206 ----
         (ior (match_operand 0 "gcn_ds_memory_operand")
  	    (and (match_code "unspec")
                (match_test "XINT (op, 1) == UNSPEC_VECTOR")))))
+ 
+ (define_predicate "ascending_zero_int_parallel"
+   (match_code "parallel")
+ {
+   return gcn_stepped_zero_int_parallel_p (op, 1);
+ })
+ 
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/t-gcn-hsa gcc-13.1.0/gcc/config/gcn/t-gcn-hsa
*** gcc-12.2.0/gcc/config/gcn/t-gcn-hsa	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/t-gcn-hsa	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! #  Copyright (C) 2016-2022 Free Software Foundation, Inc.
  #
  #  This file 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
--- 1,4 ----
! #  Copyright (C) 2016-2023 Free Software Foundation, Inc.
  #
  #  This file 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
*************** ALL_HOST_OBJS += gcn-run.o
*** 42,49 ****
  gcn-run$(exeext): gcn-run.o
  	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
  
! MULTILIB_OPTIONS = march=gfx900/march=gfx906/march=gfx908
! MULTILIB_DIRNAMES = gfx900 gfx906 gfx908
  
  gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.cc
  	$(COMPILE) $<
--- 42,49 ----
  gcn-run$(exeext): gcn-run.o
  	+$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ $< -ldl
  
! MULTILIB_OPTIONS = march=gfx900/march=gfx906/march=gfx908/march=gfx90a
! MULTILIB_DIRNAMES = gfx900 gfx906 gfx908 gfx90a
  
  gcn-tree.o: $(srcdir)/config/gcn/gcn-tree.cc
  	$(COMPILE) $<
diff -Nrcpad gcc-12.2.0/gcc/config/gcn/t-omp-device gcc-13.1.0/gcc/config/gcn/t-omp-device
*** gcc-12.2.0/gcc/config/gcn/t-omp-device	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gcn/t-omp-device	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
  omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.cc
  	echo kind: gpu > $@
! 	echo arch: gcn >> $@
! 	echo isa: fiji gfx900 gfx906 gfx908 >> $@
--- 1,4 ----
  omp-device-properties-gcn: $(srcdir)/config/gcn/gcn.cc
  	echo kind: gpu > $@
! 	echo arch: amdgcn gcn >> $@
! 	echo isa: fiji gfx803 gfx900 gfx906 gfx908 gfx90a >> $@
diff -Nrcpad gcc-12.2.0/gcc/config/glibc-c.cc gcc-13.1.0/gcc/config/glibc-c.cc
*** gcc-12.2.0/gcc/config/glibc-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/glibc-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C-family target hooks initializer for targets possibly using glibc.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* C-family target hooks initializer for targets possibly using glibc.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/glibc-d.cc gcc-13.1.0/gcc/config/glibc-d.cc
*** gcc-12.2.0/gcc/config/glibc-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/glibc-d.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,74 ****
- /* Glibc support needed only by D front-end.
-    Copyright (C) 2017-2022 Free Software Foundation, Inc.
- 
- GCC is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3, or (at your option) any later
- version.
- 
- GCC is distributed in the hope that it will be useful, but WITHOUT ANY
- WARRANTY; without even the implied warranty of MERCHANTABILITY or
- FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- for more details.
- 
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "tm.h"
- #include "memmodel.h"
- #include "tm_p.h"
- #include "d/d-target.h"
- #include "d/d-target-def.h"
- 
- /* Implement TARGET_D_OS_VERSIONS for Glibc targets.  */
- 
- static void
- glibc_d_os_builtins (void)
- {
-   d_add_builtin_version ("Posix");
- 
- #define builtin_version(TXT) d_add_builtin_version (TXT)
- 
- #ifdef GNU_USER_TARGET_D_OS_VERSIONS
-   GNU_USER_TARGET_D_OS_VERSIONS ();
- #endif
- 
- #ifdef EXTRA_TARGET_D_OS_VERSIONS
-   EXTRA_TARGET_D_OS_VERSIONS ();
- #endif
- }
- 
- /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
- 
- static tree
- glibc_d_handle_target_object_format (void)
- {
-   const char *objfmt = "elf";
- 
-   return build_string_literal (strlen (objfmt) + 1, objfmt);
- }
- 
- /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for Glibc targets.  */
- 
- static void
- glibc_d_register_target_info (void)
- {
-   const struct d_target_info_spec handlers[] = {
-     { "objectFormat", glibc_d_handle_target_object_format },
-     { NULL, NULL },
-   };
- 
-   d_add_target_info_handlers (handlers);
- }
- 
- #undef TARGET_D_OS_VERSIONS
- #define TARGET_D_OS_VERSIONS glibc_d_os_builtins
- 
- #undef TARGET_D_REGISTER_OS_TARGET_INFO
- #define TARGET_D_REGISTER_OS_TARGET_INFO glibc_d_register_target_info
- 
- struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/glibc-stdint.h gcc-13.1.0/gcc/config/glibc-stdint.h
*** gcc-12.2.0/gcc/config/glibc-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/glibc-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using GNU libc or uClibc.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using GNU libc or uClibc.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/gnu-d.cc gcc-13.1.0/gcc/config/gnu-d.cc
*** gcc-12.2.0/gcc/config/gnu-d.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/gnu-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,65 ----
+ /* GNU system support needed only by D front-end.
+    Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for GNU targets.  */
+ 
+ static void
+ gnu_d_os_builtins (void)
+ {
+   d_add_builtin_version ("Posix");
+   d_add_builtin_version ("Hurd");
+   d_add_builtin_version ("CRuntime_Glibc");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ gnu_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "elf";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for GNU targets.  */
+ 
+ static void
+ gnu_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", gnu_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS gnu_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO gnu_d_register_target_info
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/gnu-user.h gcc-13.1.0/gcc/config/gnu-user.h
*** gcc-12.2.0/gcc/config/gnu-user.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gnu-user.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Definitions for systems using, at least optionally, a GNU
     (glibc-based) userspace or other userspace with libc derived from
     glibc (e.g. uClibc) or for which similar specs are appropriate.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
  
--- 1,7 ----
  /* Definitions for systems using, at least optionally, a GNU
     (glibc-based) userspace or other userspace with libc derived from
     glibc (e.g. uClibc) or for which similar specs are appropriate.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 138,144 ****
    LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
    LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
  #undef LIBHWASAN_EARLY_SPEC
! #define LIBHWASAN_EARLY_SPEC "%{static-libhwasan:%{!shared:" \
    LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \
    LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}"
  #undef LIBTSAN_EARLY_SPEC
--- 138,145 ----
    LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \
    LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}"
  #undef LIBHWASAN_EARLY_SPEC
! #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \
!   "%{static-libhwasan:%{!shared:" \
    LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \
    LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}"
  #undef LIBTSAN_EARLY_SPEC
diff -Nrcpad gcc-12.2.0/gcc/config/gnu-user.opt gcc-13.1.0/gcc/config/gnu-user.opt
*** gcc-12.2.0/gcc/config/gnu-user.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gnu-user.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for systems using gnu-user.h.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for systems using gnu-user.h.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/gnu.h gcc-13.1.0/gcc/config/gnu.h
*** gcc-12.2.0/gcc/config/gnu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/gnu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Configuration common to all targets running the GNU system.  */
  
  /*
! Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Configuration common to all targets running the GNU system.  */
  
  /*
! Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC.  If not, see <http://www
*** 31,39 ****
  	builtin_assert ("system=unix");		\
  	builtin_assert ("system=posix");	\
      } while (0)
- 
- #define GNU_USER_TARGET_D_OS_VERSIONS()		\
-     do {					\
- 	builtin_version ("Hurd");		\
- 	builtin_version ("CRuntime_Glibc");	\
-     } while (0)
--- 31,33 ----
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/combiner.md gcc-13.1.0/gcc/config/h8300/combiner.md
*** gcc-12.2.0/gcc/config/h8300/combiner.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/combiner.md	Wed Apr 26 07:09:39 2023
***************
*** 1142,1149 ****
  ;; Storing a part of HImode to QImode.
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
  				(const_int 8)) 1))]
    ""
    "#"
--- 1142,1149 ----
  ;; Storing a part of HImode to QImode.
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh")
! 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 8)) 1))]
    ""
    "#"
***************
*** 1153,1160 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r")
  				(const_int 8)) 1))
     (clobber (reg:CC CC_REG))]
    ""
--- 1153,1160 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:HI (match_operand:HI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 8)) 1))
     (clobber (reg:CC CC_REG))]
    ""
***************
*** 1164,1171 ****
  ;; Storing a part of SImode to QImode.
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
  				(const_int 8)) 3))]
    ""
    "#"
--- 1164,1171 ----
  ;; Storing a part of SImode to QImode.
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 8)) 3))]
    ""
    "#"
***************
*** 1175,1182 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
  				(const_int 8)) 3))
     (clobber (reg:CC CC_REG))]
    ""
--- 1175,1182 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 8)) 3))
     (clobber (reg:CC CC_REG))]
    ""
***************
*** 1184,1193 ****
    [(set_attr "length" "8")])
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
  				(const_int 16)) 3))
!    (clobber (match_scratch:SI 2 "=&r"))]
    ""
    "#"
    "&& reload_completed"
--- 1184,1193 ----
    [(set_attr "length" "8")])
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 16)) 3))
!    (clobber (match_scratch:SI 2 "=&r,&r,&r,&r,&r,&r,&r,&r,&r"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 1197,1216 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
  				(const_int 16)) 3))
!    (clobber (match_scratch:SI 2 "=&r"))
     (clobber (reg:CC CC_REG))]
    ""
    "mov.w\\t%e1,%f2\;mov.b\\t%w2,%R0"
    [(set_attr "length" "10")])
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
  				(const_int 24)) 3))
!    (clobber (match_scratch:SI 2 "=&r"))]
    ""
    "#"
    "&& reload_completed"
--- 1197,1216 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 16)) 3))
!    (clobber (match_scratch:SI 2 "=&r,&r,&r,&r,&r,&r,&r,&r,&r"))
     (clobber (reg:CC CC_REG))]
    ""
    "mov.w\\t%e1,%f2\;mov.b\\t%w2,%R0"
    [(set_attr "length" "10")])
  
  (define_insn_and_split ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 24)) 3))
!    (clobber (match_scratch:SI 2 "=&r,&r,&r,&r,&r,&r,&r,&r,&r"))]
    ""
    "#"
    "&& reload_completed"
***************
*** 1220,1229 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm<")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r")
  				(const_int 24)) 3))
!    (clobber (match_scratch:SI 2 "=&r"))
     (clobber (reg:CC CC_REG))]
    ""
    "mov.w\\t%e1,%f2\;mov.b\\t%x2,%R0"
--- 1220,1229 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn ""
!   [(set (match_operand:QI 0 "general_operand_dst" "=rm,Za,Zb,Zc,Zd,Ze,Zf,Zh,Zg")
! 	(subreg:QI (lshiftrt:SI (match_operand:SI 1 "register_operand" "r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7")
  				(const_int 24)) 3))
!    (clobber (match_scratch:SI 2 "=&r,&r,&r,&r,&r,&r,&r,&r,&r"))
     (clobber (reg:CC CC_REG))]
    ""
    "mov.w\\t%e1,%f2\;mov.b\\t%x2,%R0"
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/constraints.md gcc-13.1.0/gcc/config/h8300/constraints.md
*** gcc-12.2.0/gcc/config/h8300/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Renesas H8/300.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for Renesas H8/300.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 211,218 ****
    (and (match_code "const_int")
         (match_test "exact_log2 (ival & 0xff) != -1")))
  
! (define_constraint "Z"
    "@internal"
    (and (match_test "TARGET_H8300SX")
         (match_code "mem")
         (match_test "CONSTANT_P (XEXP (op, 0))")))
--- 211,251 ----
    (and (match_code "const_int")
         (match_test "exact_log2 (ival & 0xff) != -1")))
  
! (define_constraint "Zz"
    "@internal"
    (and (match_test "TARGET_H8300SX")
         (match_code "mem")
         (match_test "CONSTANT_P (XEXP (op, 0))")))
+ 
+ (define_register_constraint "Z0" "NOT_R0_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z1" "NOT_R1_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z2" "NOT_R2_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z3" "NOT_R3_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z4" "NOT_R4_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z5" "NOT_R5_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z6" "NOT_R6_REGS"
+   "@internal")
+ 
+ (define_register_constraint "Z7" "NOT_SP_REGS"
+   "@internal")
+ 
+ (define_constraint "Za" "@internal" (match_test "pre_incdec_with_reg (op, 0)"))
+ (define_constraint "Zb" "@internal" (match_test "pre_incdec_with_reg (op, 1)"))
+ (define_constraint "Zc" "@internal" (match_test "pre_incdec_with_reg (op, 2)"))
+ (define_constraint "Zd" "@internal" (match_test "pre_incdec_with_reg (op, 3)"))
+ (define_constraint "Ze" "@internal" (match_test "pre_incdec_with_reg (op, 4)"))
+ (define_constraint "Zf" "@internal" (match_test "pre_incdec_with_reg (op, 5)"))
+ (define_constraint "Zg" "@internal" (match_test "pre_incdec_with_reg (op, 6)"))
+ (define_constraint "Zh" "@internal" (match_test "pre_incdec_with_reg (op, 7)"))
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/elf.h gcc-13.1.0/gcc/config/h8300/elf.h
*** gcc-12.2.0/gcc/config/h8300/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version generating elf
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version generating elf
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/extensions.md gcc-13.1.0/gcc/config/h8300/extensions.md
*** gcc-12.2.0/gcc/config/h8300/extensions.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/extensions.md	Wed Apr 26 07:09:39 2023
***************
*** 47,52 ****
--- 47,70 ----
      operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
    })
  
+ ;; Similarly, but setting cczn.
+ (define_split
+   [(set (reg:CCZN CC_REG)
+ 	(compare:CCZN
+ 	  (zero_extend:HI (match_operand:QI 1 "general_operand_src" ""))
+ 	  (const_int 0)))
+    (set (match_operand:HI 0 "register_operand" "")
+         (zero_extend:HI (match_dup 1)))]
+   "!REG_P (operands[1]) && reload_completed"
+   [(parallel [(set (match_dup 2) (match_dup 1))
+ 	      (clobber (reg:CC CC_REG))])
+    (parallel [(set (reg:CCZN CC_REG)
+ 		   (compare:CCZN (zero_extend:HI (match_dup 2)) (const_int 0)))
+ 	      (set (match_dup 0) (zero_extend:HI (match_dup 2)))])]
+   {
+     operands[2] = gen_rtx_REG (QImode, REGNO (operands[0]));
+   })
+ 
  (define_insn "*zero_extendqisi2"
    [(set (match_operand:SI 0 "register_operand" "=r,r")
  	(zero_extend:SI (match_operand:QI 1 "general_operand_src" "0,g>")))]
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/genmova.sh gcc-13.1.0/gcc/config/h8300/genmova.sh
*** gcc-12.2.0/gcc/config/h8300/genmova.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/genmova.sh	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  # Generate mova.md, a file containing patterns that can be implemented
  # using the h8sx mova instruction.
  
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 2,8 ----
  # Generate mova.md, a file containing patterns that can be implemented
  # using the h8sx mova instruction.
  
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 22,28 ****
  
  echo ";; -*- buffer-read-only: t -*-"
  echo ";; Generated automatically from genmova.sh"
! echo ";; Copyright (C) 2004-2022 Free Software Foundation, Inc."
  echo ";;"
  echo ";; This file is part of GCC."
  echo ";;"
--- 22,28 ----
  
  echo ";; -*- buffer-read-only: t -*-"
  echo ";; Generated automatically from genmova.sh"
! echo ";; Copyright (C) 2004-2023 Free Software Foundation, Inc."
  echo ";;"
  echo ";; This file is part of GCC."
  echo ";;"
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/h8300-modes.def gcc-13.1.0/gcc/config/h8300/h8300-modes.def
*** gcc-12.2.0/gcc/config/h8300/h8300-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/h8300-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler. 
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler. 
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/h8300-protos.h gcc-13.1.0/gcc/config/h8300/h8300-protos.h
*** gcc-12.2.0/gcc/config/h8300/h8300-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/h8300-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 version
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** extern int h8300_initial_elimination_off
*** 100,105 ****
--- 100,106 ----
  extern int h8300_regs_ok_for_stm (int, rtx[]);
  extern int h8300_hard_regno_rename_ok (unsigned int, unsigned int);
  extern bool h8300_move_ok (rtx, rtx);
+ extern bool pre_incdec_with_reg (rtx, unsigned int);
  
  struct cpp_reader;
  extern void h8300_pr_interrupt (struct cpp_reader *);
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/h8300.cc gcc-13.1.0/gcc/config/h8300/h8300.cc
*** gcc-12.2.0/gcc/config/h8300/h8300.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/h8300.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for insn-output.cc for Renesas H8/300.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,5 ----
  /* Subroutines for insn-output.cc for Renesas H8/300.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** static int
*** 1140,1146 ****
  h8300_register_move_cost (machine_mode mode ATTRIBUTE_UNUSED,
                           reg_class_t from, reg_class_t to)
  {
!   if (from == MAC_REGS || to == MAC_REG)
      return 6;
    else
      return 3;
--- 1140,1146 ----
  h8300_register_move_cost (machine_mode mode ATTRIBUTE_UNUSED,
                           reg_class_t from, reg_class_t to)
  {
!   if (from == MAC_REGS || to == MAC_REGS)
      return 6;
    else
      return 3;
*************** h8300_ok_for_sibcall_p (tree fndecl, tre
*** 5531,5536 ****
--- 5531,5562 ----
  
    return 1;
  }
+ 
+ /* Return TRUE if OP is a PRE_INC or PRE_DEC
+    instruction using REG, FALSE otherwise.  */
+ 
+ bool
+ pre_incdec_with_reg (rtx op, unsigned int reg)
+ {
+   /* OP must be a MEM.  */
+   if (GET_CODE (op) != MEM)
+     return false;
+ 
+   /* The address must be a PRE_INC or PRE_DEC.  */
+   op = XEXP (op, 0);
+   if (GET_CODE (op) != PRE_DEC && GET_CODE (op) != PRE_INC)
+     return false;
+ 
+   /* It must be a register that is being incremented
+      or decremented.  */
+   op = XEXP (op, 0);
+   if (!REG_P (op))
+     return false;
+ 
+   /* Finally, check that the register number matches.  */
+   return REGNO (op) == reg;
+ }
+ 
  
  /* Initialize the GCC target structure.  */
  #undef TARGET_ATTRIBUTE_TABLE
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/h8300.h gcc-13.1.0/gcc/config/h8300/h8300.h
*** gcc-12.2.0/gcc/config/h8300/h8300.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/h8300.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (generic)
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (generic)
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com),
     Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
  
*************** extern const char * const *h8_reg_names;
*** 282,287 ****
--- 282,289 ----
  
  enum reg_class {
    NO_REGS, COUNTER_REGS, SOURCE_REGS, DESTINATION_REGS,
+   NOT_R0_REGS, NOT_R1_REGS, NOT_R2_REGS, NOT_R3_REGS,
+   NOT_R4_REGS, NOT_R5_REGS, NOT_R6_REGS, NOT_SP_REGS,
    GENERAL_REGS, MAC_REGS, ALL_REGS, LIM_REG_CLASSES
  };
  
*************** enum reg_class {
*** 291,296 ****
--- 293,300 ----
  
  #define REG_CLASS_NAMES \
  { "NO_REGS", "COUNTER_REGS", "SOURCE_REGS", "DESTINATION_REGS", \
+   "NOT_R0_REGS", "NOT_R1_REGS", "NOT_R2_REGS", "NOT_R3_REGS", \
+   "NOT_R4_REGS", "NOT_R5_REGS", "NOT_R6_REGS", "NOT_SP_REGS", \
    "GENERAL_REGS", "MAC_REGS", "ALL_REGS", "LIM_REGS" }
  
  /* Define which registers fit in which classes.
*************** enum reg_class {
*** 302,307 ****
--- 306,319 ----
     {0x010},		/* COUNTER_REGS */	\
     {0x020},		/* SOURCE_REGS */	\
     {0x040},		/* DESTINATION_REGS */	\
+    {0x0fe},		/* NOT_R0_REGS */	\
+    {0x0fd},		/* NOT_R1_REGS */	\
+    {0x0fb},		/* NOT_R2_REGS */	\
+    {0x0f7},		/* NOT_R3_REGS */	\
+    {0x0ef},		/* NOT_R4_REGS */	\
+    {0x0df},		/* NOT_R5_REGS */	\
+    {0x0bf},		/* NOT_R6_REGS */	\
+    {0x07f},		/* NOT_SP_REGS */	\
     {0xeff},		/* GENERAL_REGS */	\
     {0x100},		/* MAC_REGS */		\
     {0xfff},		/* ALL_REGS	*/	\
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/h8300.md gcc-13.1.0/gcc/config/h8300/h8300.md
*** gcc-12.2.0/gcc/config/h8300/h8300.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/h8300.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for Renesas H8/300
! ;; Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  ;;   Contributed by Steve Chamberlain (sac@cygnus.com),
  ;;   Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
--- 1,5 ----
  ;; GCC machine description for Renesas H8/300
! ;; Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  ;;   Contributed by Steve Chamberlain (sac@cygnus.com),
  ;;   Jim Wilson (wilson@cygnus.com), and Doug Evans (dje@cygnus.com).
***************
*** 221,226 ****
--- 221,227 ----
  (define_mode_iterator QHI [QI HI])
  
  (define_mode_iterator HSI [HI SI])
+ (define_mode_iterator HSI2 [HI SI])
  
  (define_mode_iterator QHSI [QI HI SI])
  (define_mode_iterator QHSI2 [QI HI SI])
***************
*** 236,241 ****
--- 237,243 ----
  (define_code_iterator ors [ior xor])
  
  (define_code_iterator eqne [eq ne])
+ (define_code_attr eqne_invert [(eq "ne") (ne "eq")])
  
  ;; For storing the C flag, map from the unsigned comparison to the right
  ;; code for testing the C bit.
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/h8300.opt gcc-13.1.0/gcc/config/h8300/h8300.opt
*** gcc-12.2.0/gcc/config/h8300/h8300.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/h8300.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Renesas H8/300 port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Renesas H8/300 port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/linux.h gcc-13.1.0/gcc/config/h8300/linux.h
*** gcc-12.2.0/gcc/config/h8300/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (linux variant)
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by Yoshinori Sato <ysato@users.sourceforge.jp>
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Renesas H8/300 (linux variant)
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by Yoshinori Sato <ysato@users.sourceforge.jp>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/mova.md gcc-13.1.0/gcc/config/h8300/mova.md
*** gcc-12.2.0/gcc/config/h8300/mova.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/mova.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically from genmova.sh
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; -*- buffer-read-only: t -*-
  ;; Generated automatically from genmova.sh
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/movepush.md gcc-13.1.0/gcc/config/h8300/movepush.md
*** gcc-12.2.0/gcc/config/h8300/movepush.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/movepush.md	Wed Apr 26 07:09:39 2023
***************
*** 5,12 ****
  ;; movqi
  
  (define_insn_and_split "*movqi"
!   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,<,r,r,m")
! 	(match_operand:QI 1 "general_operand_src" " I,r>,r,n,m,r"))]
    "!TARGET_H8300SX && h8300_move_ok (operands[0], operands[1])"
    "#"
    "&& reload_completed"
--- 5,12 ----
  ;; movqi
  
  (define_insn_and_split "*movqi"
!   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m")
! 	(match_operand:QI 1 "general_operand_src" " I,r>,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,n,m,r"))]
    "!TARGET_H8300SX && h8300_move_ok (operands[0], operands[1])"
    "#"
    "&& reload_completed"
***************
*** 14,34 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movqi<cczn>"
!   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,<,r,r,m")
! 	(match_operand:QI 1 "general_operand_src" " I,r>,r,n,m,r"))
     (clobber (reg:CC CC_REG))]
    "!TARGET_H8300SX && h8300_move_ok (operands[0], operands[1])"
    "@
     sub.b	%X0,%X0
     mov.b	%R1,%X0
     mov.b	%X1,%R0
     mov.b	%R1,%X0
     mov.b	%R1,%X0
     mov.b	%X1,%R0"
    [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
  
  (define_insn_and_split "*movqi_h8sx"
!   [(set (match_operand:QI 0 "general_operand_dst" "=Z,rQ")
  	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))]
    "TARGET_H8300SX"
    "#"
--- 14,41 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movqi<cczn>"
!   [(set (match_operand:QI 0 "general_operand_dst" "=r,r ,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m")
! 	(match_operand:QI 1 "general_operand_src" " I,r>,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,n,m,r"))
     (clobber (reg:CC CC_REG))]
    "!TARGET_H8300SX && h8300_move_ok (operands[0], operands[1])"
    "@
     sub.b	%X0,%X0
     mov.b	%R1,%X0
     mov.b	%X1,%R0
+    mov.b	%X1,%R0
+    mov.b	%X1,%R0
+    mov.b	%X1,%R0
+    mov.b	%X1,%R0
+    mov.b	%X1,%R0
+    mov.b	%X1,%R0
+    mov.b	%X1,%R0
     mov.b	%R1,%X0
     mov.b	%R1,%X0
     mov.b	%X1,%R0"
    [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
  
  (define_insn_and_split "*movqi_h8sx"
!   [(set (match_operand:QI 0 "general_operand_dst" "=Zz,rQ")
  	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))]
    "TARGET_H8300SX"
    "#"
***************
*** 37,43 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movqi_h8sx<cczn>"
!   [(set (match_operand:QI 0 "general_operand_dst" "=Z,rQ")
  	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))
     (clobber (reg:CC CC_REG))]
    "TARGET_H8300SX"
--- 44,50 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movqi_h8sx<cczn>"
!   [(set (match_operand:QI 0 "general_operand_dst" "=Zz,rQ")
  	(match_operand:QI 1 "general_operand_src" "P4>X,rQi"))
     (clobber (reg:CC CC_REG))]
    "TARGET_H8300SX"
***************
*** 88,95 ****
  ;; movhi
  
  (define_insn_and_split "*movhi"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,<,r,r,m")
! 	(match_operand:HI 1 "general_operand_src" "I,r>,r,i,m,r"))]
    "!TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
    "#"
--- 95,102 ----
  ;; movhi
  
  (define_insn_and_split "*movhi"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m")
! 	(match_operand:HI 1 "general_operand_src" "I,r>,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,i,m,r"))]
    "!TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
    "#"
***************
*** 98,105 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movhi<cczn>"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,<,r,r,m")
! 	(match_operand:HI 1 "general_operand_src" "I,r>,r,i,m,r"))
     (clobber (reg:CC CC_REG))]
    "!TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
--- 105,112 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movhi<cczn>"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m")
! 	(match_operand:HI 1 "general_operand_src" "I,r>,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,i,m,r"))
     (clobber (reg:CC CC_REG))]
    "!TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
***************
*** 109,119 ****
     mov.w	%T1,%T0
     mov.w	%T1,%T0
     mov.w	%T1,%T0
     mov.w	%T1,%T0"
    [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
  
  (define_insn_and_split "*movhi_h8sx"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Z,Q,rQ")
  	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))]
    "TARGET_H8300SX"
    "#"
--- 116,133 ----
     mov.w	%T1,%T0
     mov.w	%T1,%T0
     mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
+    mov.w	%T1,%T0
     mov.w	%T1,%T0"
    [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
  
  (define_insn_and_split "*movhi_h8sx"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Zz,Q,rQ")
  	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))]
    "TARGET_H8300SX"
    "#"
***************
*** 122,128 ****
  	      (clobber (reg:CC CC_REG))])])
    
  (define_insn "*movhi_h8sx<cczn>"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Z,Q,rQ")
  	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))
     (clobber (reg:CC CC_REG))]
    "TARGET_H8300SX"
--- 136,142 ----
  	      (clobber (reg:CC CC_REG))])])
    
  (define_insn "*movhi_h8sx<cczn>"
!   [(set (match_operand:HI 0 "general_operand_dst" "=r,r,Zz,Q,rQ")
  	(match_operand:HI 1 "general_operand_src" "I,P3>X,P4>X,IP8>X,rQi"))
     (clobber (reg:CC CC_REG))]
    "TARGET_H8300SX"
***************
*** 158,165 ****
  
  ;; movsi
  (define_insn_and_split "*movsi"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,<,r,r,m,*a,*a,r")
! 	(match_operand:SI 1 "general_operand_src" "I,r,i,r,>,m,r,I,r,*a"))]
    "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
    "#"
--- 172,179 ----
  
  ;; movsi
  (define_insn_and_split "*movsi"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m,*a,*a,r")
! 	(match_operand:SI 1 "general_operand_src" "I,r,i,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,>,m,r,I,r,*a"))]
    "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
    "#"
***************
*** 168,175 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movsi_clobber_flags"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,<,r,r,m,*a,*a, r")
! 	(match_operand:SI 1 "general_operand_src" " I,r,i,r,>,m,r, I, r,*a"))
     (clobber (reg:CC CC_REG))]
    "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
--- 182,189 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movsi_clobber_flags"
!   [(set (match_operand:SI 0 "general_operand_dst" "=r,r,r,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m,*a,*a, r")
! 	(match_operand:SI 1 "general_operand_src" " I,r,i,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,>,m,r, I, r,*a"))
     (clobber (reg:CC CC_REG))]
    "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
***************
*** 178,188 ****
      {
      case 0:
        return "sub.l	%S0,%S0";
!     case 7:
        return "clrmac";
!     case 8:
        return "clrmac\;ldmac %1,macl";
!     case 9:
        return "stmac	macl,%0";
      default:
        if (GET_CODE (operands[1]) == CONST_INT)
--- 192,202 ----
      {
      case 0:
        return "sub.l	%S0,%S0";
!     case 14:
        return "clrmac";
!     case 15:
        return "clrmac\;ldmac %1,macl";
!     case 16:
        return "stmac	macl,%0";
      default:
        if (GET_CODE (operands[1]) == CONST_INT)
***************
*** 238,246 ****
  (define_insn "*movsi_cczn"
    [(set (reg:CCZN CC_REG)
  	(compare:CCZN
! 	  (match_operand:SI 1 "general_operand_src" " I,r,i,r,>,m,r")
  	  (const_int 0)))
!    (set (match_operand:SI 0 "general_operand_dst" "=r,r,r,<,r,r,m")
  	(match_dup 1))]
    "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
--- 252,260 ----
  (define_insn "*movsi_cczn"
    [(set (reg:CCZN CC_REG)
  	(compare:CCZN
! 	  (match_operand:SI 1 "general_operand_src" " I,r,i,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,>,m,r")
  	  (const_int 0)))
!    (set (match_operand:SI 0 "general_operand_dst" "=r,r,r,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r,r,m")
  	(match_dup 1))]
    "(TARGET_H8300S || TARGET_H8300H) && !TARGET_H8300SX
      && h8300_move_ok (operands[0], operands[1])"
***************
*** 251,256 ****
--- 265,277 ----
     mov.l	%S1,%S0
     mov.l	%S1,%S0
     mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
     mov.l	%S1,%S0"
    [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
  
***************
*** 316,323 ****
     (set_attr "length_table" "*,movl")])
  
  (define_insn_and_split "*movsf"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,<,r")
! 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,r,>"))]
    "!TARGET_H8300SX
      && (register_operand (operands[0], SFmode)
  	|| register_operand (operands[1], SFmode))"
--- 337,344 ----
     (set_attr "length_table" "*,movl")])
  
  (define_insn_and_split "*movsf"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r")
! 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,>"))]
    "!TARGET_H8300SX
      && (register_operand (operands[0], SFmode)
  	|| register_operand (operands[1], SFmode))"
***************
*** 327,334 ****
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movsf_clobber_flags"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,<,r")
! 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,r,>"))
     (clobber (reg:CC CC_REG))]
    "!TARGET_H8300SX
      && (register_operand (operands[0], SFmode)
--- 348,355 ----
  	      (clobber (reg:CC CC_REG))])])
  
  (define_insn "*movsf_clobber_flags"
!   [(set (match_operand:SF 0 "general_operand_dst" "=r,r,r,m,Za,Zb,Zc,Zd,Ze,Zf,Zg,Zh,r")
! 	(match_operand:SF 1 "general_operand_src" "G,r,im,r,Z0,Z1,Z2,Z3,Z4,Z5,Z6,Z7,>"))
     (clobber (reg:CC CC_REG))]
    "!TARGET_H8300SX
      && (register_operand (operands[0], SFmode)
***************
*** 338,343 ****
--- 359,371 ----
     mov.l	%S1,%S0
     mov.l	%S1,%S0
     mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
+    mov.l	%S1,%S0
     mov.l	%S1,%S0
     mov.l	%S1,%S0"
    [(set (attr "length") (symbol_ref "compute_mov_length (operands)"))])
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/predicates.md gcc-13.1.0/gcc/config/h8300/predicates.md
*** gcc-12.2.0/gcc/config/h8300/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Renesas H8/300.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Renesas H8/300.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/t-h8300 gcc-13.1.0/gcc/config/h8300/t-h8300
*** gcc-12.2.0/gcc/config/h8300/t-h8300	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/t-h8300	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1993-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1993-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/t-linux gcc-13.1.0/gcc/config/h8300/t-linux
*** gcc-12.2.0/gcc/config/h8300/t-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/t-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2015-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2015-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/h8300/testcompare.md gcc-13.1.0/gcc/config/h8300/testcompare.md
*** gcc-12.2.0/gcc/config/h8300/testcompare.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/h8300/testcompare.md	Wed Apr 26 07:09:39 2023
***************
*** 61,66 ****
--- 61,75 ----
    "mov.b	%t0,%t0"
    [(set_attr "length" "2")])
  
+ (define_insn "*tsthi_upper_z"
+   [(set (reg:CCZ CC_REG)
+ 	(compare (and:HI (match_operand:HI 0 "register_operand" "r")
+ 			 (const_int -256))
+ 		 (const_int 0)))]
+   "reload_completed"
+   "mov.b	%t0,%t0"
+   [(set_attr "length" "2")])
+ 
  (define_insn "*tstsi_upper"
    [(set (reg:CCZN CC_REG)
  	(compare (and:SI (match_operand:SI 0 "register_operand" "r")
***************
*** 86,91 ****
--- 95,124 ----
    }
    [(set_attr "length_table" "add")])
  
+ (define_insn "*cmpqi_z"
+   [(set (reg:CCZ CC_REG)
+ 	(eq (match_operand:QI 0 "h8300_dst_operand" "rQ")
+ 	    (match_operand:QI 1 "h8300_src_operand" "rQi")))]
+   "reload_completed"
+   { return "cmp.b	%X1,%X0"; }
+   [(set_attr "length_table" "add")])
+ 
+ (define_insn "*cmphi_z"
+   [(set (reg:CCZ CC_REG)
+ 	(eq (match_operand:HI 0 "h8300_dst_operand" "rQ")
+ 	    (match_operand:HI 1 "h8300_src_operand" "rQi")))]
+   "reload_completed"
+   { return "cmp.w	%T1,%T0"; }
+   [(set_attr "length_table" "add")])
+ 
+ (define_insn "*cmpsi_z"
+   [(set (reg:CCZ CC_REG)
+ 	(eq (match_operand:SI 0 "h8300_dst_operand" "rQ")
+ 	    (match_operand:SI 1 "h8300_src_operand" "rQi")))]
+   "reload_completed"
+   { return "cmp.l	%S1,%S0"; }
+   [(set_attr "length_table" "add")])
+ 
  (define_insn "*cmpqi"
    [(set (reg:CC CC_REG)
  	(compare (match_operand:QI 0 "h8300_dst_operand" "rQ")
***************
*** 209,214 ****
--- 242,249 ----
  	  return "xor.l\t%S0,%S0\;bist\t#0,%w0";
  	gcc_unreachable ();
        }
+     else
+       gcc_unreachable ();
    }
    [(set (attr "length") (symbol_ref "<MODE>mode == SImode ? 6 : 4"))])
  
***************
*** 340,342 ****
--- 375,609 ----
  	(ashift:QHSI (<geultu_to_c>:QHSI (reg:CCC CC_REG) (const_int 0))
  		     (match_dup 3)))])
  
+ ;; Storing Z into a QImode destination is fairly easy on the H8/S and
+ ;; newer as the stc; shift; mask is just 3 insns/6 bytes.  On the H8/300H
+ ;; it is 4 insns/8 bytes which is a speed improvement, but a size
+ ;; regression relative to the branchy sequence
+ ;;
+ ;; Storing inverted Z in QImode is not profitable on the H8/300H, but
+ ;; is a speed improvement on the H8S.
+ (define_insn_and_split "*store_z_qi"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(eq:QI (match_operand:HI 1 "register_operand" "r")
+ 	       (match_operand:HI 2 "register_operand" "r")))]
+   "TARGET_H8300S || !optimize_size"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(eq:CCZ (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(ne:QI (reg:CCZ CC_REG) (const_int 0)))])
+ 
+ (define_insn_and_split "*store_z_i_qi"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(ne:QI (match_operand:HI 1 "register_operand" "r")
+ 	       (match_operand:HI 2 "register_operand" "r")))]
+   "TARGET_H8300S"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(eq:CCZ (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(eq:QI (reg:CCZ CC_REG) (const_int 0)))])
+ 
+ (define_insn "*store_z_qi"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(ne:QI (reg:CCZ CC_REG) (const_int 0)))]
+   "(TARGET_H8300S || !optimize_size) && reload_completed"
+   {
+     if (TARGET_H8300S)
+       return "stc\tccr,%X0\;shar\t#2,%X0\;and\t#0x1,%X0";
+     else
+       return "stc\tccr,%X0\;shar\t%X0\;shar\t%X0\;and\t#0x1,%X0";
+   }
+   [(set (attr "length") (symbol_ref "TARGET_H8300S ? 6 : 8"))])
+ 
+ (define_insn "*store_z_i_qi"
+   [(set (match_operand:QI 0 "register_operand" "=r")
+ 	(eq:QI (reg:CCZ CC_REG) (const_int 0)))]
+   "(TARGET_H8300S || !optimize_size) && reload_completed"
+   "stc\tccr,%X0\;bld\t#2,%X0\;xor.w\t%T0,%T0\;bist\t#0,%X0";
+   [(set_attr "length" "8")])
+ 
+ ;; Storing Z or an inverted Z into a HImode destination is
+ ;; profitable on the H8/S and older variants, but not on the
+ ;; H8/SX where the branchy sequence can use the two-byte
+ ;; mov-immediate that is specific to the H8/SX
+ (define_insn_and_split "*store_z_hi"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(eqne:HSI (match_operand:HSI2 1 "register_operand" "r")
+ 		  (match_operand:HSI2 2 "register_operand" "r")))]
+   "!TARGET_H8300SX"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(eq:CCZ (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(<eqne_invert>:HSI (reg:CCZ CC_REG) (const_int 0)))])
+ 
+ ;; Similar, but putting the result into the sign bit
+ (define_insn_and_split "*store_z_hi_sb"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(ashift:HSI (eqne:HSI (match_operand:HSI2 1 "register_operand" "r")
+ 			      (match_operand:HSI2 2 "register_operand" "r"))
+ 		     (const_int 15)))]
+   "!TARGET_H8300SX"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(eq:CCZ (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(ashift:HSI (<eqne_invert>:HSI (reg:CCZ CC_REG) (const_int 0))
+ 		    (const_int 15)))])
+ 
+ ;; Similar, but negating the result
+ (define_insn_and_split "*store_z_hi_neg"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(neg:HSI (eqne:HSI (match_operand:HSI2 1 "register_operand" "r")
+ 			   (match_operand:HSI2 2 "register_operand" "r"))))]
+   "!TARGET_H8300SX"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(eq:CCZ (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(neg:HSI (<eqne_invert>:HSI (reg:CCZ CC_REG) (const_int 0))))])
+ 
+ (define_insn_and_split "*store_z_hi_and"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(and:HSI (eqne:HSI (match_operand:HSI2 1 "register_operand" "r")
+ 			   (match_operand:HSI2 2 "register_operand" "r"))
+ 		 (match_operand:HSI 3 "register_operand" "r")))]
+   "!TARGET_H8300SX"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(eq:CCZ (match_dup 1) (match_dup 2)))
+    (set (match_dup 0)
+ 	(and:HSI (<eqne_invert>:HSI (reg:CCZ CC_REG) (const_int 0))
+ 		 (match_dup 3)))])
+ 
+ (define_insn "*store_z_<mode>"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(eqne:HSI (reg:CCZ CC_REG) (const_int 0)))]
+   "!TARGET_H8300SX"
+   {
+     if (<MODE>mode == HImode)
+       {
+ 	if (<CODE> == NE)
+ 	  {
+ 	    if (TARGET_H8300S)
+ 	      return "stc\tccr,%X0\;shlr.b\t#2,%X0\;and.w\t#1,%T0";
+ 	    return "stc\tccr,%X0\;bld\t#2,%X0\;xor.w\t%T0,%T0\;bst\t#0,%X0";
+ 	  }
+ 	else
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;xor.w\t%T0,%T0\;bist\t#0,%X0";
+       }
+     else if (<MODE>mode == SImode)
+       {
+ 	if (<CODE> == NE)
+ 	  {
+ 	    if (TARGET_H8300S)
+ 	      return "stc\tccr,%X0\;shlr.b\t#2,%X0\;and.l\t#1,%S0";
+ 	    return "stc\tccr,%X0\;bld\t#2,%X0\;xor.l\t%S0,%S0\;bst\t#0,%X0";
+ 	  }
+ 	else
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;xor.l\t%S0,%S0\;bist\t#0,%X0";
+       }
+     gcc_unreachable ();
+   }
+ ;; XXXSImode is 2 bytes longer
+   [(set_attr "length" "8")])
+ 
+ (define_insn "*store_z_<mode>_sb"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(ashift:HSI (eqne:HSI (reg:CCZ CC_REG) (const_int 0))
+ 		    (const_int 15)))]
+   "!TARGET_H8300SX"
+   {
+     if (<MODE>mode == HImode)
+       {
+ 	if (<CODE> == NE)
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;xor.w\t%T0,%T0\;bst\t#7,%t0";
+ 	else
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;xor.w\t%T0,%T0\;bist\t#7,%t0";
+       }
+     else if (<MODE>mode == SImode)
+       {
+ 	if (<CODE> == NE)
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;xor.l\t%T0,%T0\;rotxr.l\t%S0";
+ 	else
+ 	  return "stc\tccr,%X0\;bild\t#2,%X0\;xor.l\t%T0,%T0\;rotxr.l\t%S0";
+       }
+     gcc_unreachable ();
+   }
+   ;; XXX SImode is larger
+   [(set_attr "length" "8")])
+ 
+ (define_insn "*store_z_<mode>_neg"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(neg:HSI (eqne:HSI (reg:CCZ CC_REG) (const_int 0))))]
+   "!TARGET_H8300SX"
+   {
+     if (<MODE>mode == HImode)
+       {
+ 	if (<CODE> == NE)
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;subx.b\t%X0,%X0\;exts.w\t%T0";
+ 	else
+ 	  return "stc\tccr,%X0\;bild\t#2,%X0\;subx.b\t%X0,%X0\;exts.w\t%T0";
+       }
+     else if (<MODE>mode == SImode)
+       {
+ 	if (<CODE> == NE)
+ 	  return "stc\tccr,%X0\;bld\t#2,%X0\;subx.b\t%X0,%X0\;exts.w\t%T0\;exts.l\t%S0";
+ 	else
+ 	  return "stc\tccr,%X0\;bild\t#2,%X0\;subx.b\t%X0,%X0\;exts.w\t%T0\;exts.l\t%S0";
+       }
+     gcc_unreachable ();
+   }
+   ;; XXX simode is an instruction longer
+   [(set_attr "length" "8")])
+ 
+ (define_insn "*store_z_<mode>_and"
+   [(set (match_operand:HSI 0 "register_operand" "=r")
+ 	(and:HSI (eqne:HSI (reg:CCZ CC_REG) (const_int 0))
+ 		 (match_operand:HSI 1 "register_operand" "r")))]
+   "!TARGET_H8300SX"
+   {
+     if (<MODE>mode == HImode)
+       {
+ 	if (<CODE> == NE)
+ 	  return "bld\t#0,%X1\;stc\tccr,%X0\;band\t#2,%X0\;xor.w\t%T0,%T0\;bst\t#0,%X0";
+ 	else
+ 	  return "bild\t#0,%X1\;stc\tccr,%X0\;band\t#2,%X0\;xor.w\t%T0,%T0\;bist\t#0,X0";
+       }
+     else if (<MODE>mode == SImode)
+       {
+ 	if (<CODE> == NE)
+ 	  return "bld\t#0,%X1\;stc\tccr,%X0\;band\t#2,%X0\;xor.l\t%S0,%S0\;bst\t#0,%X0";
+ 	else
+ 	  return "bild\t#0,%X1\;stc\tccr,%X0\;band\t#2,%X0\;xor.l\t%S0,%S0\;bist\t#0,X0";
+       }
+     gcc_unreachable ();
+   }
+   ;; XXX simode is an instruction longer
+   [(set_attr "length" "8")])
+ 
+ ;; We can test the upper byte of a HImode register and the upper word
+ ;; of a SImode register
+ 
+ ;; We can test the upper byte of a HImode register and the upper word
+ ;; of a SImode register
+ (define_insn_and_split "*store_z"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+ 	(eqne:HI (and:HI (match_operand:HI 1 "register_operand" "r")
+ 			 (const_int -256))
+ 		 (const_int 0)))]
+   "!TARGET_H8300SX"
+   "#"
+   "&& reload_completed"
+   [(set (reg:CCZ CC_REG)
+ 	(compare (and:HI (match_dup 1) (const_int -256))
+ 		 (const_int 0)))
+    (set (match_dup 0)
+ 	(<eqne_invert>:HI (reg:CCZ CC_REG) (const_int 0)))])
diff -Nrcpad gcc-12.2.0/gcc/config/host-darwin.cc gcc-13.1.0/gcc/config/host-darwin.cc
*** gcc-12.2.0/gcc/config/host-darwin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-darwin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/host-darwin.h gcc-13.1.0/gcc/config/host-darwin.h
*** gcc-12.2.0/gcc/config/host-darwin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-darwin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Darwin host-specific hook definitions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/host-hpux.cc gcc-13.1.0/gcc/config/host-hpux.cc
*** gcc-12.2.0/gcc/config/host-hpux.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-hpux.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* HP-UX host-specific hook definitions.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* HP-UX host-specific hook definitions.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/host-linux.cc gcc-13.1.0/gcc/config/host-linux.cc
*** gcc-12.2.0/gcc/config/host-linux.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-linux.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Linux host-specific hook definitions.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Linux host-specific hook definitions.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 99,105 ****
  #elif defined(__riscv) && defined (__LP64__)
  # define TRY_EMPTY_VM_SPACE	0x1000000000
  #elif defined(__loongarch__) && defined(__LP64__)
! # define TRY_EMPTY_VM_SPACE	0x8000000000
  #else
  # define TRY_EMPTY_VM_SPACE	0
  #endif
--- 99,105 ----
  #elif defined(__riscv) && defined (__LP64__)
  # define TRY_EMPTY_VM_SPACE	0x1000000000
  #elif defined(__loongarch__) && defined(__LP64__)
! # define TRY_EMPTY_VM_SPACE	0x1000000000
  #else
  # define TRY_EMPTY_VM_SPACE	0
  #endif
diff -Nrcpad gcc-12.2.0/gcc/config/host-netbsd.cc gcc-13.1.0/gcc/config/host-netbsd.cc
*** gcc-12.2.0/gcc/config/host-netbsd.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-netbsd.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* NetBSD host-specific hook definitions.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* NetBSD host-specific hook definitions.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/host-openbsd.cc gcc-13.1.0/gcc/config/host-openbsd.cc
*** gcc-12.2.0/gcc/config/host-openbsd.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-openbsd.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* OpenBSD host-specific hook definitions.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* OpenBSD host-specific hook definitions.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/host-solaris.cc gcc-13.1.0/gcc/config/host-solaris.cc
*** gcc-12.2.0/gcc/config/host-solaris.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/host-solaris.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Solaris host-specific hook definitions.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Solaris host-specific hook definitions.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/hpux11.opt gcc-13.1.0/gcc/config/hpux11.opt
*** gcc-12.2.0/gcc/config/hpux11.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/hpux11.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; HP-UX 11 options.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; HP-UX 11 options.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/adxintrin.h gcc-13.1.0/gcc/config/i386/adxintrin.h
*** gcc-12.2.0/gcc/config/i386/adxintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/adxintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/ammintrin.h gcc-13.1.0/gcc/config/i386/ammintrin.h
*** gcc-12.2.0/gcc/config/i386/ammintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/ammintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/amxbf16intrin.h gcc-13.1.0/gcc/config/i386/amxbf16intrin.h
*** gcc-12.2.0/gcc/config/i386/amxbf16intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/amxbf16intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/amxcomplexintrin.h gcc-13.1.0/gcc/config/i386/amxcomplexintrin.h
*** gcc-12.2.0/gcc/config/i386/amxcomplexintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/amxcomplexintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,59 ----
+ /* Copyright (C) 2023 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/>.  */
+ 
+ #if !defined _IMMINTRIN_H_INCLUDED
+ #error "Never use <amxcomplexintrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AMXCOMPLEXINTRIN_H_INCLUDED
+ #define _AMXCOMPLEXINTRIN_H_INCLUDED
+ 
+ #if !defined(__AMX_COMPLEX__)
+ #pragma GCC push_options
+ #pragma GCC target("amx-complex")
+ #define __DISABLE_AMX_COMPLEX__
+ #endif /* __AMX_COMPLEX__ */
+ 
+ #if defined(__x86_64__)
+ #define _tile_cmmimfp16ps_internal(src1_dst,src2,src3)				\
+   __asm__ volatile\
+   ("{tcmmimfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tcmmimfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
+ 
+ #define _tile_cmmrlfp16ps_internal(src1_dst,src2,src3)				\
+   __asm__ volatile\
+   ("{tcmmrlfp16ps\t%%tmm"#src3", %%tmm"#src2", %%tmm"#src1_dst"|tcmmrlfp16ps\t%%tmm"#src1_dst", %%tmm"#src2", %%tmm"#src3"}" ::)
+ 
+ #define _tile_cmmimfp16ps(src1_dst,src2,src3)					\
+   _tile_cmmimfp16ps_internal (src1_dst, src2, src3)
+ 
+ #define _tile_cmmrlfp16ps(src1_dst,src2,src3)					\
+   _tile_cmmrlfp16ps_internal (src1_dst, src2, src3)
+ 
+ #endif
+ 
+ #ifdef __DISABLE_AMX_COMPLEX__
+ #undef __DISABLE_AMX_COMPLEX__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AMX_COMPLEX__ */
+ 
+ #endif /* _AMXCOMPLEXINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/amxfp16intrin.h gcc-13.1.0/gcc/config/i386/amxfp16intrin.h
*** gcc-12.2.0/gcc/config/i386/amxfp16intrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/amxfp16intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,46 ----
+ /* Copyright (C) 2020-2023 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/>.  */
+ 
+ #if !defined _IMMINTRIN_H_INCLUDED
+ #error "Never use <amxfp16intrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AMXFP16INTRIN_H_INCLUDED
+ #define _AMXFP16INTRIN_H_INCLUDED
+ 
+ #if defined(__x86_64__)
+ #define _tile_dpfp16ps_internal(dst,src1,src2)			\
+   __asm__ volatile \
+   ("{tdpfp16ps\t%%tmm"#src2", %%tmm"#src1", %%tmm"#dst"|tdpfp16ps\t%%tmm"#dst", %%tmm"#src1", %%tmm"#src2"}" ::)
+ 
+ #define _tile_dpfp16ps(dst,src1,src2)				\
+   _tile_dpfp16ps_internal (dst,src1,src2)
+ 
+ #endif
+ 
+ #ifdef __DISABLE_AMX_FP16__
+ #undef __DISABLE_AMX_FP16__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AMX_FP16__ */
+ 
+ #endif /* _AMXFP16INTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/amxint8intrin.h gcc-13.1.0/gcc/config/i386/amxint8intrin.h
*** gcc-12.2.0/gcc/config/i386/amxint8intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/amxint8intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/amxtileintrin.h gcc-13.1.0/gcc/config/i386/amxtileintrin.h
*** gcc-12.2.0/gcc/config/i386/amxtileintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/amxtileintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _tile_release (void)
*** 62,68 ****
  #define _tile_loadd_internal(dst,base,stride)				\
    __asm__ volatile							\
    ("{tileloadd\t(%0,%1,1), %%tmm"#dst"|tileloadd\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_stream_loadd(dst,base,stride)		\
    _tile_stream_loadd_internal (dst, base, stride)
--- 62,68 ----
  #define _tile_loadd_internal(dst,base,stride)				\
    __asm__ volatile							\
    ("{tileloadd\t(%0,%1,1), %%tmm"#dst"|tileloadd\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_stream_loadd(dst,base,stride)		\
    _tile_stream_loadd_internal (dst, base, stride)
*************** _tile_release (void)
*** 70,76 ****
  #define _tile_stream_loadd_internal(dst,base,stride)			\
    __asm__ volatile							\
    ("{tileloaddt1\t(%0,%1,1), %%tmm"#dst"|tileloaddt1\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((long) (stride)))
  
  #define _tile_stored(dst,base,stride)		\
    _tile_stored_internal (dst, base, stride)
--- 70,76 ----
  #define _tile_stream_loadd_internal(dst,base,stride)			\
    __asm__ volatile							\
    ("{tileloaddt1\t(%0,%1,1), %%tmm"#dst"|tileloaddt1\t%%tmm"#dst", [%0+%1*1]}" \
!    :: "r" ((const void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)))
  
  #define _tile_stored(dst,base,stride)		\
    _tile_stored_internal (dst, base, stride)
*************** _tile_release (void)
*** 78,84 ****
  #define _tile_stored_internal(src,base,stride)				\
    __asm__ volatile							\
    ("{tilestored\t%%tmm"#src", (%0,%1,1)|tilestored\t[%0+%1*1], %%tmm"#src"}" \
!    :: "r" ((void*) (base)), "r" ((long) (stride)) \
     : "memory")
  
  #define _tile_zero(dst)				\
--- 78,84 ----
  #define _tile_stored_internal(src,base,stride)				\
    __asm__ volatile							\
    ("{tilestored\t%%tmm"#src", (%0,%1,1)|tilestored\t[%0+%1*1], %%tmm"#src"}" \
!    :: "r" ((void*) (base)), "r" ((__PTRDIFF_TYPE__) (stride)) \
     : "memory")
  
  #define _tile_zero(dst)				\
diff -Nrcpad gcc-12.2.0/gcc/config/i386/athlon.md gcc-13.1.0/gcc/config/i386/athlon.md
*** gcc-12.2.0/gcc/config/i386/athlon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/athlon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/atom.md gcc-13.1.0/gcc/config/i386/atom.md
*** gcc-12.2.0/gcc/config/i386/atom.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/atom.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Atom Scheduling
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Atom Scheduling
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/att.h gcc-13.1.0/gcc/config/i386/att.h
*** gcc-12.2.0/gcc/config/i386/att.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/att.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AT&T assembler syntax for the Intel 80386.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for AT&T assembler syntax for the Intel 80386.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx2intrin.h gcc-13.1.0/gcc/config/i386/avx2intrin.h
*** gcc-12.2.0/gcc/config/i386/avx2intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx2intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx5124fmapsintrin.h gcc-13.1.0/gcc/config/i386/avx5124fmapsintrin.h
*** gcc-12.2.0/gcc/config/i386/avx5124fmapsintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx5124fmapsintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx5124vnniwintrin.h gcc-13.1.0/gcc/config/i386/avx5124vnniwintrin.h
*** gcc-12.2.0/gcc/config/i386/avx5124vnniwintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx5124vnniwintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512bf16intrin.h gcc-13.1.0/gcc/config/i386/avx512bf16intrin.h
*** gcc-12.2.0/gcc/config/i386/avx512bf16intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512bf16intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 35,54 ****
  #endif /* __AVX512BF16__ */
  
  /* Internal data types for implementing the intrinsics.  */
! typedef short __v32bh __attribute__ ((__vector_size__ (64)));
  
  /* The Intel API is flexible enough that we must allow aliasing with other
     vector types, and their scalar components.  */
! typedef short __m512bh __attribute__ ((__vector_size__ (64), __may_alias__));
  
  /* Convert One BF16 Data to One Single Float Data.  */
  extern __inline float
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_cvtsbh_ss (__bfloat16 __A)
  {
!   union{ float a; unsigned int b;} __tmp;
!   __tmp.b = ((unsigned int)(__A)) << 16;
!   return __tmp.a;
  }
  
  /* vcvtne2ps2bf16 */
--- 35,52 ----
  #endif /* __AVX512BF16__ */
  
  /* Internal data types for implementing the intrinsics.  */
! typedef __bf16 __v32bf __attribute__ ((__vector_size__ (64)));
  
  /* The Intel API is flexible enough that we must allow aliasing with other
     vector types, and their scalar components.  */
! typedef __bf16 __m512bh __attribute__ ((__vector_size__ (64), __may_alias__));
  
  /* Convert One BF16 Data to One Single Float Data.  */
  extern __inline float
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_cvtsbh_ss (__bf16 __A)
  {
!   return __builtin_ia32_cvtbf2sf (__A);
  }
  
  /* vcvtne2ps2bf16 */
*************** extern __inline __m512bh
*** 57,77 ****
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_cvtne2ps_pbh (__m512 __A, __m512 __B)
  {
!   return (__m512bh)__builtin_ia32_cvtne2ps2bf16_v32hi(__A, __B);
  }
  
  extern __inline __m512bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtne2ps_pbh (__m512bh __A, __mmask32 __B, __m512 __C, __m512 __D)
  {
!   return (__m512bh)__builtin_ia32_cvtne2ps2bf16_v32hi_mask(__C, __D, __A, __B);
  }
  
  extern __inline __m512bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_cvtne2ps_pbh (__mmask32 __A, __m512 __B, __m512 __C)
  {
!   return (__m512bh)__builtin_ia32_cvtne2ps2bf16_v32hi_maskz(__B, __C, __A);
  }
  
  /* vcvtneps2bf16 */
--- 55,75 ----
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_cvtne2ps_pbh (__m512 __A, __m512 __B)
  {
!   return (__m512bh)__builtin_ia32_cvtne2ps2bf16_v32bf(__A, __B);
  }
  
  extern __inline __m512bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_mask_cvtne2ps_pbh (__m512bh __A, __mmask32 __B, __m512 __C, __m512 __D)
  {
!   return (__m512bh)__builtin_ia32_cvtne2ps2bf16_v32bf_mask(__C, __D, __A, __B);
  }
  
  extern __inline __m512bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_maskz_cvtne2ps_pbh (__mmask32 __A, __m512 __B, __m512 __C)
  {
!   return (__m512bh)__builtin_ia32_cvtne2ps2bf16_v32bf_maskz(__B, __C, __A);
  }
  
  /* vcvtneps2bf16 */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512bf16vlintrin.h gcc-13.1.0/gcc/config/i386/avx512bf16vlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512bf16vlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512bf16vlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 35,104 ****
  #endif /* __AVX512BF16__ */
  
  /* Internal data types for implementing the intrinsics.  */
! typedef short __v16bh __attribute__ ((__vector_size__ (32)));
! typedef short __v8bh __attribute__ ((__vector_size__ (16)));
  
  /* The Intel API is flexible enough that we must allow aliasing with other
     vector types, and their scalar components.  */
! typedef short __m256bh __attribute__ ((__vector_size__ (32), __may_alias__));
! typedef short __m128bh __attribute__ ((__vector_size__ (16), __may_alias__));
  
- typedef unsigned short __bfloat16;
  /* vcvtne2ps2bf16 */
  
  extern __inline __m256bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_cvtne2ps_pbh (__m256 __A, __m256 __B)
  {
!   return (__m256bh)__builtin_ia32_cvtne2ps2bf16_v16hi(__A, __B);
  }
  
  extern __inline __m256bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtne2ps_pbh (__m256bh __A, __mmask16 __B, __m256 __C, __m256 __D)
  {
!   return (__m256bh)__builtin_ia32_cvtne2ps2bf16_v16hi_mask(__C, __D, __A, __B);
  }
  
  extern __inline __m256bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_maskz_cvtne2ps_pbh (__mmask16 __A, __m256 __B, __m256 __C)
  {
!   return (__m256bh)__builtin_ia32_cvtne2ps2bf16_v16hi_maskz(__B, __C, __A);
  }
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtne2ps_pbh (__m128 __A, __m128 __B)
  {
!   return (__m128bh)__builtin_ia32_cvtne2ps2bf16_v8hi(__A, __B);
  }
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtne2ps_pbh (__m128bh __A, __mmask8 __B, __m128 __C, __m128 __D)
  {
!   return (__m128bh)__builtin_ia32_cvtne2ps2bf16_v8hi_mask(__C, __D, __A, __B);
  }
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_cvtne2ps_pbh (__mmask8 __A, __m128 __B, __m128 __C)
  {
!   return (__m128bh)__builtin_ia32_cvtne2ps2bf16_v8hi_maskz(__B, __C, __A);
  }
  
  /* vcvtneps2bf16 */
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
- _mm256_cvtneps_pbh (__m256 __A)
- {
-   return (__m128bh)__builtin_ia32_cvtneps2bf16_v8sf(__A);
- }
- 
- extern __inline __m128bh
- __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtneps_pbh (__m128bh __A, __mmask8 __B, __m256 __C)
  {
    return (__m128bh)__builtin_ia32_cvtneps2bf16_v8sf_mask(__C, __A, __B);
--- 35,103 ----
  #endif /* __AVX512BF16__ */
  
  /* Internal data types for implementing the intrinsics.  */
! typedef __bf16 __v16bf __attribute__ ((__vector_size__ (32)));
! typedef __bf16 __v8bf __attribute__ ((__vector_size__ (16)));
  
  /* The Intel API is flexible enough that we must allow aliasing with other
     vector types, and their scalar components.  */
! typedef __bf16 __m256bh __attribute__ ((__vector_size__ (32), __may_alias__));
! typedef __bf16 __m128bh __attribute__ ((__vector_size__ (16), __may_alias__));
! 
! typedef __bf16 __bfloat16;
! 
! #define _mm256_cvtneps_pbh(A) \
!   (__m128bh) __builtin_ia32_cvtneps2bf16_v8sf (A)
! #define _mm_cvtneps_pbh(A) \
!   (__m128bh) __builtin_ia32_cvtneps2bf16_v4sf (A)
  
  /* vcvtne2ps2bf16 */
  
  extern __inline __m256bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_cvtne2ps_pbh (__m256 __A, __m256 __B)
  {
!   return (__m256bh)__builtin_ia32_cvtne2ps2bf16_v16bf(__A, __B);
  }
  
  extern __inline __m256bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtne2ps_pbh (__m256bh __A, __mmask16 __B, __m256 __C, __m256 __D)
  {
!   return (__m256bh)__builtin_ia32_cvtne2ps2bf16_v16bf_mask(__C, __D, __A, __B);
  }
  
  extern __inline __m256bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_maskz_cvtne2ps_pbh (__mmask16 __A, __m256 __B, __m256 __C)
  {
!   return (__m256bh)__builtin_ia32_cvtne2ps2bf16_v16bf_maskz(__B, __C, __A);
  }
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtne2ps_pbh (__m128 __A, __m128 __B)
  {
!   return (__m128bh)__builtin_ia32_cvtne2ps2bf16_v8bf(__A, __B);
  }
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtne2ps_pbh (__m128bh __A, __mmask8 __B, __m128 __C, __m128 __D)
  {
!   return (__m128bh)__builtin_ia32_cvtne2ps2bf16_v8bf_mask(__C, __D, __A, __B);
  }
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_maskz_cvtne2ps_pbh (__mmask8 __A, __m128 __B, __m128 __C)
  {
!   return (__m128bh)__builtin_ia32_cvtne2ps2bf16_v8bf_maskz(__B, __C, __A);
  }
  
  /* vcvtneps2bf16 */
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_mask_cvtneps_pbh (__m128bh __A, __mmask8 __B, __m256 __C)
  {
    return (__m128bh)__builtin_ia32_cvtneps2bf16_v8sf_mask(__C, __A, __B);
*************** _mm256_maskz_cvtneps_pbh (__mmask8 __A,
*** 113,125 ****
  
  extern __inline __m128bh
  __attribute__((__gnu_inline__, __always_inline__, __artificial__))
- _mm_cvtneps_pbh (__m128 __A)
- {
-   return (__m128bh)__builtin_ia32_cvtneps2bf16_v4sf(__A);
- }
- 
- extern __inline __m128bh
- __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_mask_cvtneps_pbh (__m128bh __A, __mmask8 __B, __m128 __C)
  {
    return (__m128bh)__builtin_ia32_cvtneps2bf16_v4sf_mask(__C, __A, __B);
--- 112,117 ----
*************** _mm_maskz_dpbf16_ps (__mmask8 __A, __m12
*** 176,188 ****
    return (__m128)__builtin_ia32_dpbf16ps_v4sf_maskz(__B, __C, __D, __A);
  }
  
! extern __inline __bfloat16
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtness_sbh (float __A)
  {
    __v4sf __V = {__A, 0, 0, 0};
!   __v8hi __R = __builtin_ia32_cvtneps2bf16_v4sf_mask ((__v4sf)__V,
! 	       (__v8hi)_mm_undefined_si128 (), (__mmask8)-1);
    return __R[0];
  }
  
--- 168,180 ----
    return (__m128)__builtin_ia32_dpbf16ps_v4sf_maskz(__B, __C, __D, __A);
  }
  
! extern __inline __bf16
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_cvtness_sbh (float __A)
  {
    __v4sf __V = {__A, 0, 0, 0};
!   __v8bf __R = __builtin_ia32_cvtneps2bf16_v4sf_mask ((__v4sf)__V,
! 	       (__v8bf)_mm_undefined_si128 (), (__mmask8)-1);
    return __R[0];
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512bitalgintrin.h gcc-13.1.0/gcc/config/i386/avx512bitalgintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512bitalgintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512bitalgintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512bwintrin.h gcc-13.1.0/gcc/config/i386/avx512bwintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512bwintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512bwintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512cdintrin.h gcc-13.1.0/gcc/config/i386/avx512cdintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512cdintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512cdintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512dqintrin.h gcc-13.1.0/gcc/config/i386/avx512dqintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512dqintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512dqintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512erintrin.h gcc-13.1.0/gcc/config/i386/avx512erintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512erintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512erintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** extern __inline __m512d
*** 51,59 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_exp2a23_round_pd (__m512d __A, int __R)
  {
-   __m512d __W;
    return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A,
! 					       (__v8df) __W,
  					       (__mmask8) -1, __R);
  }
  
--- 51,58 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_exp2a23_round_pd (__m512d __A, int __R)
  {
    return (__m512d) __builtin_ia32_exp2pd_mask ((__v8df) __A,
! 					       (__v8df) _mm512_undefined_pd (),
  					       (__mmask8) -1, __R);
  }
  
*************** extern __inline __m512
*** 79,87 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_exp2a23_round_ps (__m512 __A, int __R)
  {
-   __m512 __W;
    return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A,
! 					      (__v16sf) __W,
  					      (__mmask16) -1, __R);
  }
  
--- 78,85 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_exp2a23_round_ps (__m512 __A, int __R)
  {
    return (__m512) __builtin_ia32_exp2ps_mask ((__v16sf) __A,
! 					      (__v16sf) _mm512_undefined_ps (),
  					      (__mmask16) -1, __R);
  }
  
*************** extern __inline __m512d
*** 107,115 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rcp28_round_pd (__m512d __A, int __R)
  {
-   __m512d __W;
    return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A,
! 						(__v8df) __W,
  						(__mmask8) -1, __R);
  }
  
--- 105,112 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rcp28_round_pd (__m512d __A, int __R)
  {
    return (__m512d) __builtin_ia32_rcp28pd_mask ((__v8df) __A,
! 						(__v8df) _mm512_undefined_pd (),
  						(__mmask8) -1, __R);
  }
  
*************** extern __inline __m512
*** 135,143 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rcp28_round_ps (__m512 __A, int __R)
  {
-   __m512 __W;
    return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A,
! 					       (__v16sf) __W,
  					       (__mmask16) -1, __R);
  }
  
--- 132,139 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rcp28_round_ps (__m512 __A, int __R)
  {
    return (__m512) __builtin_ia32_rcp28ps_mask ((__v16sf) __A,
! 					       (__v16sf) _mm512_undefined_ps (),
  					       (__mmask16) -1, __R);
  }
  
*************** extern __inline __m512d
*** 229,237 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rsqrt28_round_pd (__m512d __A, int __R)
  {
-   __m512d __W;
    return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A,
! 						  (__v8df) __W,
  						  (__mmask8) -1, __R);
  }
  
--- 225,232 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rsqrt28_round_pd (__m512d __A, int __R)
  {
    return (__m512d) __builtin_ia32_rsqrt28pd_mask ((__v8df) __A,
! 						  (__v8df) _mm512_undefined_pd (),
  						  (__mmask8) -1, __R);
  }
  
*************** extern __inline __m512
*** 257,265 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rsqrt28_round_ps (__m512 __A, int __R)
  {
-   __m512 __W;
    return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A,
! 						 (__v16sf) __W,
  						 (__mmask16) -1, __R);
  }
  
--- 252,259 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_rsqrt28_round_ps (__m512 __A, int __R)
  {
    return (__m512) __builtin_ia32_rsqrt28ps_mask ((__v16sf) __A,
! 						 (__v16sf) _mm512_undefined_ps (),
  						 (__mmask16) -1, __R);
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512fintrin.h gcc-13.1.0/gcc/config/i386/avx512fintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512fintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512fintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** extern __inline __m512
*** 185,191 ****
--- 185,194 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_undefined_ps (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m512 __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
*************** extern __inline __m512d
*** 195,201 ****
--- 198,207 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_undefined_pd (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m512d __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
*************** extern __inline __m512i
*** 203,209 ****
--- 209,218 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_undefined_epi32 (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m512i __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512fp16intrin.h gcc-13.1.0/gcc/config/i386/avx512fp16intrin.h
*** gcc-12.2.0/gcc/config/i386/avx512fp16intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512fp16intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** extern __inline __m128h
*** 183,210 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_setzero_ph (void)
  {
!   return _mm_set1_ph (0.0f);
  }
  
  extern __inline __m256h
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_setzero_ph (void)
  {
!   return _mm256_set1_ph (0.0f);
  }
  
  extern __inline __m512h
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_setzero_ph (void)
  {
!   return _mm512_set1_ph (0.0f);
  }
  
  extern __inline __m128h
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_undefined_ph (void)
  {
    __m128h __Y = __Y;
    return __Y;
  }
  
--- 183,213 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_setzero_ph (void)
  {
!   return _mm_set1_ph (0.0f16);
  }
  
  extern __inline __m256h
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_setzero_ph (void)
  {
!   return _mm256_set1_ph (0.0f16);
  }
  
  extern __inline __m512h
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_setzero_ph (void)
  {
!   return _mm512_set1_ph (0.0f16);
  }
  
  extern __inline __m128h
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_undefined_ph (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m128h __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
*************** extern __inline __m256h
*** 212,218 ****
--- 215,224 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_undefined_ph (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m256h __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
*************** extern __inline __m512h
*** 220,226 ****
--- 226,235 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm512_undefined_ph (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m512h __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
*************** _mm512_castph512_ph128 (__m512h __A)
*** 272,281 ****
  {
    union
    {
!     __m128h a[4];
!     __m512h v;
!   } u = { .v = __A };
!   return u.a[0];
  }
  
  extern __inline __m256h
--- 281,290 ----
  {
    union
    {
!     __m128h __a[4];
!     __m512h __v;
!   } __u = { .__v = __A };
!   return __u.__a[0];
  }
  
  extern __inline __m256h
*************** _mm512_castph512_ph256 (__m512h __A)
*** 284,293 ****
  {
    union
    {
!     __m256h a[2];
!     __m512h v;
!   } u = { .v = __A };
!   return u.a[0];
  }
  
  extern __inline __m512h
--- 293,302 ----
  {
    union
    {
!     __m256h __a[2];
!     __m512h __v;
!   } __u = { .__v = __A };
!   return __u.__a[0];
  }
  
  extern __inline __m512h
*************** _mm512_castph128_ph512 (__m128h __A)
*** 296,306 ****
  {
    union
    {
!     __m128h a[4];
!     __m512h v;
!   } u;
!   u.a[0] = __A;
!   return u.v;
  }
  
  extern __inline __m512h
--- 305,315 ----
  {
    union
    {
!     __m128h __a[4];
!     __m512h __v;
!   } __u;
!   __u.__a[0] = __A;
!   return __u.__v;
  }
  
  extern __inline __m512h
*************** _mm512_castph256_ph512 (__m256h __A)
*** 309,319 ****
  {
    union
    {
!     __m256h a[2];
!     __m512h v;
!   } u;
!   u.a[0] = __A;
!   return u.v;
  }
  
  extern __inline __m512h
--- 318,328 ----
  {
    union
    {
!     __m256h __a[2];
!     __m512h __v;
!   } __u;
!   __u.__a[0] = __A;
!   return __u.__v;
  }
  
  extern __inline __m512h
*************** extern __inline __m128h
*** 358,364 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set_sh (_Float16 __F)
  {
!   return _mm_set_ph (0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, __F);
  }
  
  /* Create a vector with element 0 as *P and the rest zero.  */
--- 367,374 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_set_sh (_Float16 __F)
  {
!   return _mm_set_ph (0.0f16, 0.0f16, 0.0f16, 0.0f16, 0.0f16, 0.0f16, 0.0f16,
! 		     __F);
  }
  
  /* Create a vector with element 0 as *P and the rest zero.  */
*************** extern __inline __m128h
*** 366,372 ****
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_load_sh (void const *__P)
  {
!   return _mm_set_ph (0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f,
  		     *(_Float16 const *) __P);
  }
  
--- 376,382 ----
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
  _mm_load_sh (void const *__P)
  {
!   return _mm_set_ph (0.0f16, 0.0f16, 0.0f16, 0.0f16, 0.0f16, 0.0f16, 0.0f16,
  		     *(_Float16 const *) __P);
  }
  
*************** _mm512_set1_pch (_Float16 _Complex __A)
*** 7155,7165 ****
  {
    union
    {
!     _Float16 _Complex a;
!     float b;
!   } u = { .a = __A};
  
!   return (__m512h) _mm512_set1_ps (u.b);
  }
  
  // intrinsics below are alias for f*mul_*ch
--- 7165,7175 ----
  {
    union
    {
!     _Float16 _Complex __a;
!     float __b;
!   } __u = { .__a = __A};
  
!   return (__m512h) _mm512_set1_ps (__u.__b);
  }
  
  // intrinsics below are alias for f*mul_*ch
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512fp16vlintrin.h gcc-13.1.0/gcc/config/i386/avx512fp16vlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512fp16vlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512fp16vlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm256_castph256_ph128 (__m256h __A)
*** 124,133 ****
  {
    union
    {
!     __m128h a[2];
!     __m256h v;
!   } u = { .v = __A };
!   return u.a[0];
  }
  
  extern __inline __m256h
--- 124,133 ----
  {
    union
    {
!     __m128h __a[2];
!     __m256h __v;
!   } __u = { .__v = __A };
!   return __u.__a[0];
  }
  
  extern __inline __m256h
*************** _mm256_castph128_ph256 (__m128h __A)
*** 136,146 ****
  {
    union
    {
!     __m128h a[2];
!     __m256h v;
!   } u;
!   u.a[0] = __A;
!   return u.v;
  }
  
  extern __inline __m256h
--- 136,146 ----
  {
    union
    {
!     __m128h __a[2];
!     __m256h __v;
!   } __u;
!   __u.__a[0] = __A;
!   return __u.__v;
  }
  
  extern __inline __m256h
*************** _mm256_set1_pch (_Float16 _Complex __A)
*** 3317,3327 ****
  {
    union
    {
!     _Float16 _Complex a;
!     float b;
!   } u = { .a = __A };
  
!   return (__m256h) _mm256_set1_ps (u.b);
  }
  
  extern __inline __m128h
--- 3317,3327 ----
  {
    union
    {
!     _Float16 _Complex __a;
!     float __b;
!   } __u = { .__a = __A };
  
!   return (__m256h) _mm256_set1_ps (__u.__b);
  }
  
  extern __inline __m128h
*************** _mm_set1_pch (_Float16 _Complex __A)
*** 3330,3340 ****
  {
    union
    {
!     _Float16 _Complex a;
!     float b;
!   } u = { .a = __A };
  
!   return (__m128h) _mm_set1_ps (u.b);
  }
  
  // intrinsics below are alias for f*mul_*ch
--- 3330,3340 ----
  {
    union
    {
!     _Float16 _Complex __a;
!     float __b;
!   } __u = { .__a = __A };
  
!   return (__m128h) _mm_set1_ps (__u.__b);
  }
  
  // intrinsics below are alias for f*mul_*ch
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512ifmaintrin.h gcc-13.1.0/gcc/config/i386/avx512ifmaintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512ifmaintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512ifmaintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512ifmavlintrin.h gcc-13.1.0/gcc/config/i386/avx512ifmavlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512ifmavlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512ifmavlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 34,78 ****
  #define __DISABLE_AVX512IFMAVL__
  #endif /* __AVX512IFMAVL__ */
  
! extern __inline __m128i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_madd52lo_epu64 (__m128i __X, __m128i __Y, __m128i __Z)
! {
!   return (__m128i) __builtin_ia32_vpmadd52luq128_mask ((__v2di) __X,
! 						       (__v2di) __Y,
! 						       (__v2di) __Z,
! 						       (__mmask8) -1);
! }
  
! extern __inline __m128i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm_madd52hi_epu64 (__m128i __X, __m128i __Y, __m128i __Z)
! {
!   return (__m128i) __builtin_ia32_vpmadd52huq128_mask ((__v2di) __X,
! 						       (__v2di) __Y,
! 						       (__v2di) __Z,
! 						       (__mmask8) -1);
! }
  
! extern __inline __m256i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_madd52lo_epu64 (__m256i __X, __m256i __Y, __m256i __Z)
! {
!   return (__m256i) __builtin_ia32_vpmadd52luq256_mask ((__v4di) __X,
! 						       (__v4di) __Y,
! 						       (__v4di) __Z,
! 						       (__mmask8) -1);
! }
  
! extern __inline __m256i
! __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
! _mm256_madd52hi_epu64 (__m256i __X, __m256i __Y, __m256i __Z)
! {
!   return (__m256i) __builtin_ia32_vpmadd52huq256_mask ((__v4di) __X,
! 						       (__v4di) __Y,
! 						       (__v4di) __Z,
! 						       (__mmask8) -1);
! }
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
--- 34,59 ----
  #define __DISABLE_AVX512IFMAVL__
  #endif /* __AVX512IFMAVL__ */
  
! #define _mm_madd52lo_epu64(A, B, C)			  \
!   ((__m128i) __builtin_ia32_vpmadd52luq128 ((__v2di) (A), \
! 					    (__v2di) (B), \
! 					    (__v2di) (C)))
  
! #define _mm_madd52hi_epu64(A, B, C)			  \
!   ((__m128i) __builtin_ia32_vpmadd52huq128 ((__v2di) (A), \
! 					    (__v2di) (B), \
! 					    (__v2di) (C)))
  
! #define _mm256_madd52lo_epu64(A, B, C)			  \
!   ((__m256i) __builtin_ia32_vpmadd52luq256 ((__v4di) (A), \
! 					    (__v4di) (B), \
! 					    (__v4di) (C)))
  
! 
! #define _mm256_madd52hi_epu64(A, B, C)			  \
!   ((__m256i) __builtin_ia32_vpmadd52huq256 ((__v4di) (A), \
! 					    (__v4di) (B), \
! 					    (__v4di) (C)))
  
  extern __inline __m128i
  __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512pfintrin.h gcc-13.1.0/gcc/config/i386/avx512pfintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512pfintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512pfintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vbmi2intrin.h gcc-13.1.0/gcc/config/i386/avx512vbmi2intrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vbmi2intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vbmi2intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vbmi2vlintrin.h gcc-13.1.0/gcc/config/i386/avx512vbmi2vlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vbmi2vlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vbmi2vlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vbmiintrin.h gcc-13.1.0/gcc/config/i386/avx512vbmiintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vbmiintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vbmiintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vbmivlintrin.h gcc-13.1.0/gcc/config/i386/avx512vbmivlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vbmivlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vbmivlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vlbwintrin.h gcc-13.1.0/gcc/config/i386/avx512vlbwintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vlbwintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vlbwintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vldqintrin.h gcc-13.1.0/gcc/config/i386/avx512vldqintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vldqintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vldqintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vlintrin.h gcc-13.1.0/gcc/config/i386/avx512vlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vnniintrin.h gcc-13.1.0/gcc/config/i386/avx512vnniintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vnniintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vnniintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vnnivlintrin.h gcc-13.1.0/gcc/config/i386/avx512vnnivlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vnnivlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vnnivlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vp2intersectintrin.h gcc-13.1.0/gcc/config/i386/avx512vp2intersectintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vp2intersectintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vp2intersectintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vp2intersectvlintrin.h gcc-13.1.0/gcc/config/i386/avx512vp2intersectvlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vp2intersectvlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vp2intersectvlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vpopcntdqintrin.h gcc-13.1.0/gcc/config/i386/avx512vpopcntdqintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vpopcntdqintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vpopcntdqintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avx512vpopcntdqvlintrin.h gcc-13.1.0/gcc/config/i386/avx512vpopcntdqvlintrin.h
*** gcc-12.2.0/gcc/config/i386/avx512vpopcntdqvlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avx512vpopcntdqvlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avxifmaintrin.h gcc-13.1.0/gcc/config/i386/avxifmaintrin.h
*** gcc-12.2.0/gcc/config/i386/avxifmaintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/avxifmaintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,78 ----
+ /* Copyright (C) 2020-2023 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 _IMMINTRIN_H_INCLUDED
+ #error "Never use <avxifmaintrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AVXIFMAINTRIN_H_INCLUDED
+ #define _AVXIFMAINTRIN_H_INCLUDED
+ 
+ #ifndef __AVXIFMA__
+ #pragma GCC push_options
+ #pragma GCC target("avxifma")
+ #define __DISABLE_AVXIFMA__
+ #endif /* __AVXIFMA__ */
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_madd52lo_avx_epu64 (__m128i __X, __m128i __Y, __m128i __Z)
+ {
+   return (__m128i) __builtin_ia32_vpmadd52luq128 ((__v2di) __X,
+ 						  (__v2di) __Y,
+ 						  (__v2di) __Z);
+ }
+ 
+ extern __inline __m128i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_madd52hi_avx_epu64 (__m128i __X, __m128i __Y, __m128i __Z)
+ {
+   return (__m128i) __builtin_ia32_vpmadd52huq128 ((__v2di) __X,
+ 						  (__v2di) __Y,
+ 						  (__v2di) __Z);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_madd52lo_avx_epu64 (__m256i __X, __m256i __Y, __m256i __Z)
+ {
+   return (__m256i) __builtin_ia32_vpmadd52luq256 ((__v4di) __X,
+ 						  (__v4di) __Y,
+ 						  (__v4di) __Z);
+ }
+ 
+ extern __inline __m256i
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_madd52hi_avx_epu64 (__m256i __X, __m256i __Y, __m256i __Z)
+ {
+   return (__m256i) __builtin_ia32_vpmadd52huq256 ((__v4di) __X,
+ 						  (__v4di) __Y,
+ 						  (__v4di) __Z);
+ }
+ 
+ #ifdef __DISABLE_AVXIFMA__
+ #undef __DISABLE_AVXIFMA__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AVXIFMA__ */
+ 
+ #endif /* _AVXIFMAINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avxintrin.h gcc-13.1.0/gcc/config/i386/avxintrin.h
*** gcc-12.2.0/gcc/config/i386/avxintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avxintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm256_movemask_ps (__m256 __A)
*** 1207,1227 ****
--- 1207,1236 ----
  extern __inline __m256d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_undefined_pd (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m256d __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
  extern __inline __m256 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_undefined_ps (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m256 __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
  extern __inline __m256i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm256_undefined_si256 (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m256i __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avxmath.h gcc-13.1.0/gcc/config/i386/avxmath.h
*** gcc-12.2.0/gcc/config/i386/avxmath.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avxmath.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avxneconvertintrin.h gcc-13.1.0/gcc/config/i386/avxneconvertintrin.h
*** gcc-12.2.0/gcc/config/i386/avxneconvertintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/avxneconvertintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,140 ----
+ /* Copyright (C) 2021-2023 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 _IMMINTRIN_H_INCLUDED
+ #error "Never use <avxneconvertintrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AVXNECONVERTINTRIN_H_INCLUDED
+ #define _AVXNECONVERTINTRIN_H_INCLUDED
+ 
+ #ifndef __AVXNECONVERT__
+ #pragma GCC push_options
+ #pragma GCC target ("avxneconvert")
+ #define __DISABLE_AVXNECONVERT__
+ #endif /* __AVXNECONVERT__ */
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_bcstnebf16_ps (const void *__P)
+ {
+   return (__m128) __builtin_ia32_vbcstnebf162ps128 ((const __bf16 *) __P);
+ }
+ 
+ extern __inline __m256
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_bcstnebf16_ps (const void *__P)
+ {
+   return (__m256) __builtin_ia32_vbcstnebf162ps256 ((const __bf16 *) __P);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_bcstnesh_ps (const void *__P)
+ {
+   return (__m128) __builtin_ia32_vbcstnesh2ps128 ((const _Float16 *) __P);
+ }
+ 
+ extern __inline __m256
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_bcstnesh_ps (const void *__P)
+ {
+   return (__m256) __builtin_ia32_vbcstnesh2ps256 ((const _Float16 *) __P);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtneebf16_ps (const __m128bh *__A)
+ {
+   return (__m128) __builtin_ia32_vcvtneebf162ps128 ((const __v8bf *) __A);
+ }
+ 
+ extern __inline __m256
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtneebf16_ps (const __m256bh *__A)
+ {
+   return (__m256) __builtin_ia32_vcvtneebf162ps256 ((const __v16bf *) __A);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtneeph_ps (const __m128h *__A)
+ {
+   return (__m128) __builtin_ia32_vcvtneeph2ps128 ((const __v8hf *) __A);
+ }
+ 
+ extern __inline __m256
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtneeph_ps (const __m256h *__A)
+ {
+   return (__m256) __builtin_ia32_vcvtneeph2ps256 ((const __v16hf *) __A);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtneobf16_ps (const __m128bh *__A)
+ {
+   return (__m128) __builtin_ia32_vcvtneobf162ps128 ((const __v8bf *) __A);
+ }
+ 
+ extern __inline __m256
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtneobf16_ps (const __m256bh *__A)
+ {
+   return (__m256) __builtin_ia32_vcvtneobf162ps256 ((const __v16bf *) __A);
+ }
+ 
+ extern __inline __m128
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtneoph_ps (const __m128h *__A)
+ {
+   return (__m128) __builtin_ia32_vcvtneoph2ps128 ((const __v8hf *) __A);
+ }
+ 
+ extern __inline __m256
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtneoph_ps (const __m256h *__A)
+ {
+   return (__m256) __builtin_ia32_vcvtneoph2ps256 ((const __v16hf *) __A);
+ }
+ 
+ extern __inline __m128bh
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_cvtneps_avx_pbh (__m128 __A)
+ {
+   return (__m128bh) __builtin_ia32_cvtneps2bf16_v4sf (__A);
+ }
+ 
+ extern __inline __m128bh
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_cvtneps_avx_pbh (__m256 __A)
+ {
+   return (__m128bh) __builtin_ia32_cvtneps2bf16_v8sf (__A);
+ }
+ 
+ #ifdef __DISABLE_AVXNECONVERT__
+ #undef __DISABLE_AVXNECONVERT__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AVXNECONVERT__ */
+ 
+ #endif /* _AVXNECONVERTINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avxvnniint8intrin.h gcc-13.1.0/gcc/config/i386/avxvnniint8intrin.h
*** gcc-12.2.0/gcc/config/i386/avxvnniint8intrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/avxvnniint8intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,138 ----
+ /* Copyright (C) 2020-2023 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/>.  */
+ 
+ #if !defined _IMMINTRIN_H_INCLUDED
+ #error "Never use <avxvnniint8vlintrin.h> directly; include <immintrin.h> instead."
+ #endif
+ 
+ #ifndef _AVXVNNIINT8INTRIN_H_INCLUDED
+ #define _AVXVNNIINT8INTRIN_H_INCLUDED
+ 
+ #if !defined(__AVXVNNIINT8__)
+ #pragma GCC push_options
+ #pragma GCC target("avxvnniint8")
+ #define __DISABLE_AVXVNNIINT8__
+ #endif /* __AVXVNNIINT8__ */
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbssd_epi32 (__m128i __W, __m128i __A, __m128i __B)
+ {
+   return (__m128i)
+     __builtin_ia32_vpdpbssd128 ((__v4si) __W, (__v4si) __A, (__v4si) __B);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbssds_epi32 (__m128i __W, __m128i __A, __m128i __B)
+ {
+   return (__m128i)
+     __builtin_ia32_vpdpbssds128 ((__v4si) __W, (__v4si) __A, (__v4si) __B);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbsud_epi32 (__m128i __W, __m128i __A, __m128i __B)
+ {
+   return (__m128i)
+     __builtin_ia32_vpdpbsud128 ((__v4si) __W, (__v4si) __A, (__v4si) __B);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbsuds_epi32 (__m128i __W, __m128i __A, __m128i __B)
+ {
+   return (__m128i)
+     __builtin_ia32_vpdpbsuds128 ((__v4si) __W, (__v4si) __A, (__v4si) __B);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbuud_epi32 (__m128i __W, __m128i __A, __m128i __B)
+ {
+   return (__m128i)
+     __builtin_ia32_vpdpbuud128 ((__v4si) __W, (__v4si) __A, (__v4si) __B);
+ }
+ 
+ extern __inline __m128i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm_dpbuuds_epi32 (__m128i __W, __m128i __A, __m128i __B)
+ {
+   return (__m128i)
+     __builtin_ia32_vpdpbuuds128 ((__v4si) __W, (__v4si) __A, (__v4si) __B);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbssd_epi32 (__m256i __W, __m256i __A, __m256i __B)
+ {
+   return (__m256i)
+     __builtin_ia32_vpdpbssd256 ((__v8si) __W, (__v8si) __A, (__v8si) __B);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbssds_epi32 (__m256i __W, __m256i __A, __m256i __B)
+ {
+   return (__m256i)
+     __builtin_ia32_vpdpbssds256 ((__v8si) __W, (__v8si) __A, (__v8si) __B);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbsud_epi32 (__m256i __W, __m256i __A, __m256i __B)
+ {
+   return (__m256i)
+     __builtin_ia32_vpdpbsud256 ((__v8si) __W, (__v8si) __A, (__v8si) __B);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbsuds_epi32 (__m256i __W, __m256i __A, __m256i __B)
+ {
+   return (__m256i)
+     __builtin_ia32_vpdpbsuds256 ((__v8si) __W, (__v8si) __A, (__v8si) __B);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbuud_epi32 (__m256i __W, __m256i __A, __m256i __B)
+ {
+   return (__m256i)
+     __builtin_ia32_vpdpbuud256 ((__v8si) __W, (__v8si) __A, (__v8si) __B);
+ }
+ 
+ extern __inline __m256i
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _mm256_dpbuuds_epi32 (__m256i __W, __m256i __A, __m256i __B)
+ {
+   return (__m256i)
+     __builtin_ia32_vpdpbuuds256 ((__v8si) __W, (__v8si) __A, (__v8si) __B);
+ }
+ 
+ #ifdef __DISABLE_AVXVNNIINT8__
+ #undef __DISABLE_AVXVNNIINT8__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_AVXVNNIINT8__ */
+ 
+ #endif /* __AVXVNNIINT8INTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/avxvnniintrin.h gcc-13.1.0/gcc/config/i386/avxvnniintrin.h
*** gcc-12.2.0/gcc/config/i386/avxvnniintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/avxvnniintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/bdver1.md gcc-13.1.0/gcc/config/i386/bdver1.md
*** gcc-12.2.0/gcc/config/i386/bdver1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/bdver1.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/bdver3.md gcc-13.1.0/gcc/config/i386/bdver3.md
*** gcc-12.2.0/gcc/config/i386/bdver3.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/bdver3.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/biarch64.h gcc-13.1.0/gcc/config/i386/biarch64.h
*** gcc-12.2.0/gcc/config/i386/biarch64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/biarch64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to 64bit mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults. 
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Bo Thorsen <bo@suse.de>.
  
  This file is part of GCC.
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to 64bit mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults. 
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Bo Thorsen <bo@suse.de>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/biarchx32.h gcc-13.1.0/gcc/config/i386/biarchx32.h
*** gcc-12.2.0/gcc/config/i386/biarchx32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/biarchx32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Make configure files to produce biarch compiler defaulting to x32 mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Make configure files to produce biarch compiler defaulting to x32 mode.
     This file must be included very first, while the OS specific file later
     to overwrite otherwise wrong defaults.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/bmi2intrin.h gcc-13.1.0/gcc/config/i386/bmi2intrin.h
*** gcc-12.2.0/gcc/config/i386/bmi2intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/bmi2intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/bmiintrin.h gcc-13.1.0/gcc/config/i386/bmiintrin.h
*** gcc-12.2.0/gcc/config/i386/bmiintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/bmiintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/bmmintrin.h gcc-13.1.0/gcc/config/i386/bmmintrin.h
*** gcc-12.2.0/gcc/config/i386/bmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/bmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/bsd.h gcc-13.1.0/gcc/config/i386/bsd.h
*** gcc-12.2.0/gcc/config/i386/bsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/bsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Definitions for BSD assembler syntax for Intel 386
     (actually AT&T syntax for insns and operands,
     adapted to BSD conventions for symbol names and debugging.)
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Definitions for BSD assembler syntax for Intel 386
     (actually AT&T syntax for insns and operands,
     adapted to BSD conventions for symbol names and debugging.)
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 36,42 ****
  #define ASM_LONG "\t.long\t"
  #define ASM_QUAD "\t.quad\t"  /* Should not be used for 32bit compilation.  */
  
! /* This was suggested, but it shouldn't be right for DBX output. -- RMS
     #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NAME) */
  
  
--- 36,42 ----
  #define ASM_LONG "\t.long\t"
  #define ASM_QUAD "\t.quad\t"  /* Should not be used for 32bit compilation.  */
  
! /* This was suggested, but it shouldn't be right for debugger output. -- RMS
     #define ASM_OUTPUT_SOURCE_FILENAME(FILE, NAME) */
  
  
*************** along with GCC; see the file COPYING3.
*** 91,99 ****
  /* The prefix to add to user-visible assembler symbols.  */
  
  #define USER_LABEL_PREFIX "_"
- 
- /* Sequent has some changes in the format of DBX symbols.  */
- #define DBX_NO_XREFS 1
- 
- /* Don't split DBX symbols into continuations.  */
- #define DBX_CONTIN_LENGTH 0
--- 91,93 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/btver2.md gcc-13.1.0/gcc/config/i386/btver2.md
*** gcc-12.2.0/gcc/config/i386/btver2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/btver2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cet.h gcc-13.1.0/gcc/config/i386/cet.h
*** gcc-12.2.0/gcc/config/i386/cet.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cet.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ELF program property for Intel CET.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /* ELF program property for Intel CET.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is free software; you can redistribute it and/or modify it
     under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cetintrin.h gcc-13.1.0/gcc/config/i386/cetintrin.h
*** gcc-12.2.0/gcc/config/i386/cetintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cetintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cldemoteintrin.h gcc-13.1.0/gcc/config/i386/cldemoteintrin.h
*** gcc-12.2.0/gcc/config/i386/cldemoteintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cldemoteintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/clflushoptintrin.h gcc-13.1.0/gcc/config/i386/clflushoptintrin.h
*** gcc-12.2.0/gcc/config/i386/clflushoptintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/clflushoptintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/clwbintrin.h gcc-13.1.0/gcc/config/i386/clwbintrin.h
*** gcc-12.2.0/gcc/config/i386/clwbintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/clwbintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/clzerointrin.h gcc-13.1.0/gcc/config/i386/clzerointrin.h
*** gcc-12.2.0/gcc/config/i386/clzerointrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/clzerointrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cmpccxaddintrin.h gcc-13.1.0/gcc/config/i386/cmpccxaddintrin.h
*** gcc-12.2.0/gcc/config/i386/cmpccxaddintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/cmpccxaddintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,89 ----
+ /* Copyright (C) 2012-2023 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 _X86GPRINTRIN_H_INCLUDED
+ #error "Never use <cmpccxaddintrin.h> directly; include <x86gprintrin.h> instead."
+ #endif
+ 
+ #ifndef _CMPCCXADDINTRIN_H_INCLUDED
+ #define _CMPCCXADDINTRIN_H_INCLUDED
+ 
+ #ifdef __x86_64__
+ 
+ #ifndef __CMPCCXADD__
+ #pragma GCC push_options
+ #pragma GCC target("cmpccxadd")
+ #define __DISABLE_CMPCCXADD__
+ #endif /* __CMPCCXADD__ */
+ 
+ typedef enum {
+     _CMPCCX_O,   /* Overflow.  */
+     _CMPCCX_NO,  /* No overflow.  */
+     _CMPCCX_B,   /* Below.  */
+     _CMPCCX_NB,  /* Not below.  */
+     _CMPCCX_Z,   /* Zero.  */
+     _CMPCCX_NZ,  /* Not zero.  */
+     _CMPCCX_BE,  /* Below or equal.  */
+     _CMPCCX_NBE, /* Neither below nor equal.  */
+     _CMPCCX_S,   /* Sign.  */
+     _CMPCCX_NS,  /* No sign.  */
+     _CMPCCX_P,   /* Parity.  */
+     _CMPCCX_NP,  /* No parity.  */
+     _CMPCCX_L,   /* Less.  */
+     _CMPCCX_NL,  /* Not less.  */
+     _CMPCCX_LE,  /* Less or equal.  */
+     _CMPCCX_NLE, /* Neither less nor equal.  */
+ } _CMPCCX_ENUM;
+ 
+ #ifdef __OPTIMIZE__
+ extern __inline int
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _cmpccxadd_epi32 (int *__A, int __B, int __C, const _CMPCCX_ENUM __D)
+ {
+   return __builtin_ia32_cmpccxadd (__A, __B, __C, __D);
+ }
+ 
+ extern __inline long long
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _cmpccxadd_epi64 (long long *__A, long long __B, long long __C,
+ 		   const _CMPCCX_ENUM __D)
+ {
+   return __builtin_ia32_cmpccxadd64 (__A, __B, __C, __D);
+ }
+ #else
+ #define _cmpccxadd_epi32(A,B,C,D) \
+   __builtin_ia32_cmpccxadd ((int *) (A), (int) (B), (int) (C), \
+ 			    (_CMPCCX_ENUM) (D))
+ #define _cmpccxadd_epi64(A,B,C,D) \
+   __builtin_ia32_cmpccxadd64 ((long long *) (A), (long long) (B), \
+ 			      (long long) (C), (_CMPCCX_ENUM) (D))
+ #endif
+ 
+ #ifdef __DISABLE_CMPCCXADD__
+ #undef __DISABLE_CMPCCXADD__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_CMPCCXADD__ */
+ 
+ #endif
+ 
+ #endif /* _CMPCCXADDINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/constraints.md gcc-13.1.0/gcc/config/i386/constraints.md
*** gcc-12.2.0/gcc/config/i386/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for IA-32 and x86-64.
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for IA-32 and x86-64.
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 168,173 ****
--- 168,176 ----
  ;;  z  Constant call address operand.
  ;;  C  Integer SSE constant with all bits set operand.
  ;;  F  Floating-point SSE constant with all bits set operand.
+ ;;  H  Integer SSE constant that is 128/256bit all ones
+ ;;     and zero-extand to 256/512bit, or 128bit all ones
+ ;;     and zero-extend to 512bit.
  ;;  M  x86-64 memory operand.
  
  (define_constraint "Bf"
***************
*** 233,238 ****
--- 236,246 ----
    (and (match_test "TARGET_SSE")
         (match_operand 0 "float_vector_all_ones_operand")))
  
+ (define_constraint "BH"
+   "@internal integer constant with last half/quarter bits set operand."
+   (ior (match_operand 0 "vector_all_ones_zero_extend_half_operand")
+        (match_operand 0 "vector_all_ones_zero_extend_quarter_operand")))
+ 
  ;; NB: Similar to 'm', but don't use define_memory_constraint on x86-64
  ;; to prevent LRA from converting the operand to the form '(mem (reg X))'
  ;; where X is a base register.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/core2.md gcc-13.1.0/gcc/config/i386/core2.md
*** gcc-12.2.0/gcc/config/i386/core2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/core2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling for Core 2 and derived processors.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling for Core 2 and derived processors.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cpuid.h gcc-13.1.0/gcc/config/i386/cpuid.h
*** gcc-12.2.0/gcc/config/i386/cpuid.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cpuid.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /*
!  * Copyright (C) 2007-2022 Free Software Foundation, Inc.
   *
   * This file is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the
--- 1,5 ----
  /*
!  * Copyright (C) 2007-2023 Free Software Foundation, Inc.
   *
   * This file is free software; you can redistribute it and/or modify it
   * under the terms of the GNU General Public License as published by the
***************
*** 25,33 ****
--- 25,37 ----
  #define _CPUID_H_INCLUDED
  
  /* %eax */
+ #define bit_RAOINT	(1 << 3)
  #define bit_AVXVNNI	(1 << 4)
  #define bit_AVX512BF16	(1 << 5)
+ #define bit_CMPCCXADD	(1 << 7)
+ #define bit_AMX_FP16	(1 << 21)
  #define bit_HRESET	(1 << 22)
+ #define bit_AVXIFMA	(1 << 23)
  
  /* %ecx */
  #define bit_SSE3	(1 << 0)
***************
*** 48,54 ****
--- 52,61 ----
  #define bit_RDRND	(1 << 30)
  
  /* %edx */
+ #define bit_AVXVNNIINT8 (1 << 4)
+ #define bit_AVXNECONVERT (1 << 5)
  #define bit_CMPXCHG8B	(1 << 8)
+ #define bit_PREFETCHI	(1 << 14)
  #define bit_CMOV	(1 << 15)
  #define bit_MMX		(1 << 23)
  #define bit_FXSAVE	(1 << 24)
***************
*** 134,139 ****
--- 141,147 ----
  #define bit_AMX_BF16    (1 << 22)
  #define bit_AMX_TILE    (1 << 24)
  #define bit_AMX_INT8    (1 << 25)
+ #define bit_AMX_COMPLEX (1 << 8)
  
  /* Extended State Enumeration Sub-leaf (%eax == 0xd, %ecx == 1) */
  #define bit_XSAVEOPT	(1 << 0)
***************
*** 204,209 ****
--- 212,221 ----
  #define signature_VORTEX_ecx	0x436f5320
  #define signature_VORTEX_edx	0x36387865
  
+ #define signature_SHANGHAI_ebx	0x68532020
+ #define signature_SHANGHAI_ecx	0x20206961
+ #define signature_SHANGHAI_edx	0x68676e61
+ 
  #ifndef __x86_64__
  /* At least one cpu (Winchip 2) does not set %ebx and %ecx
     for cpuid leaf 1. Forcibly zero the two registers before
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cross-stdarg.h gcc-13.1.0/gcc/config/i386/cross-stdarg.h
*** gcc-12.2.0/gcc/config/i386/cross-stdarg.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cross-stdarg.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/crtdll.h gcc-13.1.0/gcc/config/i386/crtdll.h
*** gcc-12.2.0/gcc/config/i386/crtdll.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/crtdll.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using GNU tools and the Windows32 API Library.
     This variant uses CRTDLL.DLL instead of MSVCRTDLL.DLL.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using GNU tools and the Windows32 API Library.
     This variant uses CRTDLL.DLL instead of MSVCRTDLL.DLL.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygming.h gcc-13.1.0/gcc/config/i386/cygming.h
*** gcc-12.2.0/gcc/config/i386/cygming.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cygming.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 72,90 ****
  
  #endif
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n)				\
!   (TARGET_64BIT ? dbx64_register_map[n]			\
     : (dwarf_debuginfo_p ()				\
!       ? svr4_dbx_register_map[n] : dbx_register_map[n]))
  
  /* Map gcc register number to DWARF 2 CFA column number. For 32 bit
!    target, always use the svr4_dbx_register_map for DWARF .eh_frame
     even if we don't use DWARF .debug_frame. */
  #undef DWARF_FRAME_REGNUM
  #define DWARF_FRAME_REGNUM(n)				\
!   (TARGET_64BIT ? dbx64_register_map[(n)]		\
! 		: svr4_dbx_register_map[(n)])
  
  /* The 64-bit MS_ABI changes the set of call-used registers.  */
  #undef DWARF_FRAME_REGISTERS
--- 72,90 ----
  
  #endif
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n)				\
!   (TARGET_64BIT ? debugger64_register_map[n]			\
     : (dwarf_debuginfo_p ()				\
!       ? svr4_debugger_register_map[n] : debugger_register_map[n]))
  
  /* Map gcc register number to DWARF 2 CFA column number. For 32 bit
!    target, always use the svr4_debugger_register_map for DWARF .eh_frame
     even if we don't use DWARF .debug_frame. */
  #undef DWARF_FRAME_REGNUM
  #define DWARF_FRAME_REGNUM(n)				\
!   (TARGET_64BIT ? debugger64_register_map[(n)]		\
! 		: svr4_debugger_register_map[(n)])
  
  /* The 64-bit MS_ABI changes the set of call-used registers.  */
  #undef DWARF_FRAME_REGISTERS
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygming.opt gcc-13.1.0/gcc/config/i386/cygming.opt
*** gcc-12.2.0/gcc/config/i386/cygming.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cygming.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Cygwin- and MinGW-specific options.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Cygwin- and MinGW-specific options.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygwin-d.cc gcc-13.1.0/gcc/config/i386/cygwin-d.cc
*** gcc-12.2.0/gcc/config/i386/cygwin-d.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/cygwin-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,72 ----
+ /* Cygwin support needed only by D front-end.
+    Copyright (C) 2021-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "target.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for Cygwin targets.  */
+ 
+ static void
+ cygwin_d_os_builtins (void)
+ {
+   d_add_builtin_version ("Windows");
+   d_add_builtin_version ("Cygwin");
+   d_add_builtin_version ("Posix");
+   d_add_builtin_version ("CRuntime_Newlib");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ cygwin_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "coff";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for Cygwin targets.  */
+ 
+ static void
+ cygwin_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", cygwin_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS cygwin_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO cygwin_d_register_target_info
+ 
+ /* Define TARGET_D_TEMPLATES_ALWAYS_COMDAT for Cygwin targets.  */
+ 
+ #undef TARGET_D_TEMPLATES_ALWAYS_COMDAT
+ #define TARGET_D_TEMPLATES_ALWAYS_COMDAT true
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygwin-stdint.h gcc-13.1.0/gcc/config/i386/cygwin-stdint.h
*** gcc-12.2.0/gcc/config/i386/cygwin-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cygwin-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using Cygwin.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using Cygwin.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygwin-w64.h gcc-13.1.0/gcc/config/i386/cygwin-w64.h
*** gcc-12.2.0/gcc/config/i386/cygwin-w64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cygwin-w64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows 32/64 via Cygwin runtime, using GNU tools and
     the Windows API Library.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows 32/64 via Cygwin runtime, using GNU tools and
     the Windows API Library.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygwin.h gcc-13.1.0/gcc/config/i386/cygwin.h
*** gcc-12.2.0/gcc/config/i386/cygwin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cygwin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using a Unix style C library and tools.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 29,43 ****
      }								\
    while (0)
  
- #define EXTRA_TARGET_D_OS_VERSIONS()				\
-   do								\
-     {								\
-       builtin_version ("Cygwin");				\
-       builtin_version ("Posix");				\
-       builtin_version ("CRuntime_Newlib");			\
-     }								\
-   while (0)
- 
  #undef CPP_SPEC
  #define CPP_SPEC "%(cpp_cpu) %{posix:-D_POSIX_SOURCE} \
    %{!ansi:-Dunix} \
--- 29,34 ----
*************** along with GCC; see the file COPYING3.
*** 57,63 ****
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}\
     %{!shared:%:if-exists(default-manifest.o%s)}\
     %{fvtable-verify=none:%s; \
      fvtable-verify=preinit:vtv_end.o%s; \
--- 48,54 ----
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!shared:%{!mno-daz-ftz:crtfastmath.o%s}}} \
     %{!shared:%:if-exists(default-manifest.o%s)}\
     %{fvtable-verify=none:%s; \
      fvtable-verify=preinit:vtv_end.o%s; \
diff -Nrcpad gcc-12.2.0/gcc/config/i386/cygwin.opt gcc-13.1.0/gcc/config/i386/cygwin.opt
*** gcc-12.2.0/gcc/config/i386/cygwin.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/cygwin.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Cygwin-specific options.
  
! ; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Cygwin-specific options.
  
! ; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/darwin.h gcc-13.1.0/gcc/config/i386/darwin.h
*** gcc-12.2.0/gcc/config/i386/darwin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/darwin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for x86 running Darwin.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Target definitions for x86 running Darwin.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 110,116 ****
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     %{mpc32:crtprec32.o%s} \
     %{mpc64:crtprec64.o%s} \
     %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR
--- 110,116 ----
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!shared:%{!mno-daz-ftz:crtfastmath.o%s}}} \
     %{mpc32:crtprec32.o%s} \
     %{mpc64:crtprec64.o%s} \
     %{mpc80:crtprec80.o%s}" TM_DESTRUCTOR
*************** along with GCC; see the file COPYING3.
*** 237,247 ****
  /* Darwin uses the standard DWARF register numbers but the default
     register numbers for STABS.  Fortunately for 64-bit code the
     default and the standard are the same.  */
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) 					\
!   (TARGET_64BIT ? dbx64_register_map[n]				\
!    : dwarf_debuginfo_p () ? svr4_dbx_register_map[n]		\
!    : dbx_register_map[n])
  
  /* Unfortunately, the 32-bit EH information also doesn't use the standard
     DWARF register numbers.  */
--- 237,247 ----
  /* Darwin uses the standard DWARF register numbers but the default
     register numbers for STABS.  Fortunately for 64-bit code the
     default and the standard are the same.  */
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) 					\
!   (TARGET_64BIT ? debugger64_register_map[n]				\
!    : dwarf_debuginfo_p () ? svr4_debugger_register_map[n]		\
!    : debugger_register_map[n])
  
  /* Unfortunately, the 32-bit EH information also doesn't use the standard
     DWARF register numbers.  */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/darwin32-biarch.h gcc-13.1.0/gcc/config/i386/darwin32-biarch.h
*** gcc-12.2.0/gcc/config/i386/darwin32-biarch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/darwin32-biarch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target definitions for i386 running Darwin with a 32b host and supporting
     a 64b multilib.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target definitions for i386 running Darwin with a 32b host and supporting
     a 64b multilib.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/darwin64-biarch.h gcc-13.1.0/gcc/config/i386/darwin64-biarch.h
*** gcc-12.2.0/gcc/config/i386/darwin64-biarch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/darwin64-biarch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target definitions for x86_64 running Darwin with a 64b host supporting a
     32b multilib.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,6 ----
  /* Target definitions for x86_64 running Darwin with a 64b host supporting a
     32b multilib.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/djgpp-stdint.h gcc-13.1.0/gcc/config/i386/djgpp-stdint.h
*** gcc-12.2.0/gcc/config/i386/djgpp-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/djgpp-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using DJGPP.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using DJGPP.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/djgpp.cc gcc-13.1.0/gcc/config/i386/djgpp.cc
*** gcc-12.2.0/gcc/config/i386/djgpp.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/djgpp.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for DJGPP.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for DJGPP.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/djgpp.h gcc-13.1.0/gcc/config/i386/djgpp.h
*** gcc-12.2.0/gcc/config/i386/djgpp.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/djgpp.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration for an i386 running MS-DOS with DJGPP.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration for an i386 running MS-DOS with DJGPP.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 128,135 ****
  #undef PTRDIFF_TYPE
  #define PTRDIFF_TYPE "int"
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) svr4_dbx_register_map[n]
  
  /* Default to pcc-struct-return.  */
  #define DEFAULT_PCC_STRUCT_RETURN 1
--- 128,135 ----
  #undef PTRDIFF_TYPE
  #define PTRDIFF_TYPE "int"
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) svr4_debugger_register_map[n]
  
  /* Default to pcc-struct-return.  */
  #define DEFAULT_PCC_STRUCT_RETURN 1
diff -Nrcpad gcc-12.2.0/gcc/config/i386/djgpp.opt gcc-13.1.0/gcc/config/i386/djgpp.opt
*** gcc-12.2.0/gcc/config/i386/djgpp.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/djgpp.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; DJGPP-specific options.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; DJGPP-specific options.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/dragonfly.h gcc-13.1.0/gcc/config/i386/dragonfly.h
*** gcc-12.2.0/gcc/config/i386/dragonfly.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/dragonfly.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running DragonFly with ELF format
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Intel 386 running DragonFly with ELF format
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by John Marino <gnugcc@marino.st>
  
  This file is part of GCC.
*************** see the files COPYING3 and COPYING.RUNTI
*** 34,42 ****
  #undef  ASM_APP_OFF
  #define ASM_APP_OFF "#NO_APP\n"
  
! #undef  DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  #undef  NO_PROFILE_COUNTERS
  #define NO_PROFILE_COUNTERS	1
--- 34,42 ----
  #undef  ASM_APP_OFF
  #define ASM_APP_OFF "#NO_APP\n"
  
! #undef  DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  #undef  NO_PROFILE_COUNTERS
  #define NO_PROFILE_COUNTERS	1
diff -Nrcpad gcc-12.2.0/gcc/config/i386/driver-i386.cc gcc-13.1.0/gcc/config/i386/driver-i386.cc
*** gcc-12.2.0/gcc/config/i386/driver-i386.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/driver-i386.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** const char *host_detect_local_cpu (int a
*** 438,444 ****
  	  || vendor == VENDOR_CYRIX
  	  || vendor == VENDOR_NSC)
  	cache = detect_caches_amd (ext_level);
!       else if (vendor == VENDOR_INTEL)
  	{
  	  bool xeon_mp = (family == 15 && model == 6);
  	  cache = detect_caches_intel (xeon_mp, max_level,
--- 438,445 ----
  	  || vendor == VENDOR_CYRIX
  	  || vendor == VENDOR_NSC)
  	cache = detect_caches_amd (ext_level);
!       else if (vendor == VENDOR_INTEL
! 			 || vendor == VENDOR_ZHAOXIN)
  	{
  	  bool xeon_mp = (family == 15 && model == 6);
  	  cache = detect_caches_intel (xeon_mp, max_level,
*************** const char *host_detect_local_cpu (int a
*** 464,469 ****
--- 465,472 ----
  	processor = PROCESSOR_GEODE;
        else if (has_feature (FEATURE_MOVBE) && family == 22)
  	processor = PROCESSOR_BTVER2;
+       else if (has_feature (FEATURE_AVX512F))
+ 	processor = PROCESSOR_ZNVER4;
        else if (has_feature (FEATURE_VAES))
  	processor = PROCESSOR_ZNVER3;
        else if (has_feature (FEATURE_CLWB))
*************** const char *host_detect_local_cpu (int a
*** 518,523 ****
--- 521,540 ----
  	    processor = PROCESSOR_I486;
  	}
      }
+   else if (vendor == VENDOR_ZHAOXIN)
+     {
+       processor = PROCESSOR_GENERIC;
+ 
+       switch (family)
+ 	{
+ 	case 7:
+ 	  if (model == 0x3b)
+ 	    processor = PROCESSOR_LUJIAZUI;
+ 	  break;
+ 	default:
+ 	  break;
+ 	}
+     }
    else
      {
        switch (family)
*************** const char *host_detect_local_cpu (int a
*** 574,588 ****
  	      /* This is unknown family 0x6 CPU.  */
  	      if (has_feature (FEATURE_AVX))
  		{
! 		  if (has_feature (FEATURE_AVX512VP2INTERSECT))
! 		    {
! 		      if (has_feature (FEATURE_TSXLDTRK))
! 			/* Assume Sapphire Rapids.  */
! 			cpu = "sapphirerapids";
! 		      else
! 			/* Assume Tiger Lake */
! 			cpu = "tigerlake";
! 		    }
  		  /* Assume Cooper Lake */
  		  else if (has_feature (FEATURE_AVX512BF16))
  		    cpu = "cooperlake";
--- 591,611 ----
  	      /* This is unknown family 0x6 CPU.  */
  	      if (has_feature (FEATURE_AVX))
  		{
! 		  /* Assume Grand Ridge.  */
! 		  if (has_feature (FEATURE_RAOINT))
! 		    cpu = "grandridge";
! 		  /* Assume Granite Rapids.  */
! 		  else if (has_feature (FEATURE_AMX_FP16))
! 		    cpu = "graniterapids";
! 		  /* Assume Sierra Forest.  */
! 		  else if (has_feature (FEATURE_AVXVNNIINT8))
! 		    cpu = "sierraforest";
! 		  /* Assume Tiger Lake */
! 		  else if (has_feature (FEATURE_AVX512VP2INTERSECT))
! 		    cpu = "tigerlake";
! 		  /* Assume Sapphire Rapids.  */
! 		  else if (has_feature (FEATURE_TSXLDTRK))
! 		    cpu = "sapphirerapids";
  		  /* Assume Cooper Lake */
  		  else if (has_feature (FEATURE_AVX512BF16))
  		    cpu = "cooperlake";
*************** const char *host_detect_local_cpu (int a
*** 767,778 ****
--- 790,807 ----
      case PROCESSOR_ZNVER3:
        cpu = "znver3";
        break;
+     case PROCESSOR_ZNVER4:
+       cpu = "znver4";
+       break;
      case PROCESSOR_BTVER1:
        cpu = "btver1";
        break;
      case PROCESSOR_BTVER2:
        cpu = "btver2";
        break;
+     case PROCESSOR_LUJIAZUI:
+       cpu = "lujiazui";
+       break;
  
      default:
        /* Use something reasonable.  */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/driver-mingw32.cc gcc-13.1.0/gcc/config/i386/driver-mingw32.cc
*** gcc-12.2.0/gcc/config/i386/driver-mingw32.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/driver-mingw32.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Host OS specific configuration for the gcc driver.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Host OS specific configuration for the gcc driver.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/emmintrin.h gcc-13.1.0/gcc/config/i386/emmintrin.h
*** gcc-12.2.0/gcc/config/i386/emmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/emmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_setr_pd (double __W, double __X)
*** 99,105 ****
--- 99,108 ----
  extern __inline __m128d __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_undefined_pd (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m128d __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
*************** _mm_move_epi64 (__m128i __A)
*** 785,791 ****
--- 788,797 ----
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_undefined_si128 (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m128i __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/enqcmdintrin.h gcc-13.1.0/gcc/config/i386/enqcmdintrin.h
*** gcc-12.2.0/gcc/config/i386/enqcmdintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/enqcmdintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/f16cintrin.h gcc-13.1.0/gcc/config/i386/f16cintrin.h
*** gcc-12.2.0/gcc/config/i386/f16cintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/f16cintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/fma4intrin.h gcc-13.1.0/gcc/config/i386/fma4intrin.h
*** gcc-12.2.0/gcc/config/i386/fma4intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/fma4intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/fmaintrin.h gcc-13.1.0/gcc/config/i386/fmaintrin.h
*** gcc-12.2.0/gcc/config/i386/fmaintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/fmaintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/freebsd.h gcc-13.1.0/gcc/config/i386/freebsd.h
*** gcc-12.2.0/gcc/config/i386/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running FreeBSD with ELF format
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
     Adapted from GNU/Linux version by John Polstra.
--- 1,5 ----
  /* Definitions for Intel 386 running FreeBSD with ELF format
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
     Adapted from GNU/Linux version by John Polstra.
*************** along with GCC; see the file COPYING3.
*** 32,40 ****
  #undef  ASM_APP_OFF
  #define ASM_APP_OFF "#NO_APP\n"
  
! #undef  DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  #undef  NO_PROFILE_COUNTERS
  #define NO_PROFILE_COUNTERS	1
--- 32,40 ----
  #undef  ASM_APP_OFF
  #define ASM_APP_OFF "#NO_APP\n"
  
! #undef  DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  #undef  NO_PROFILE_COUNTERS
  #define NO_PROFILE_COUNTERS	1
diff -Nrcpad gcc-12.2.0/gcc/config/i386/freebsd64.h gcc-13.1.0/gcc/config/i386/freebsd64.h
*** gcc-12.2.0/gcc/config/i386/freebsd64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/freebsd64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AMD x86-64 running FreeBSD with ELF format
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by David O'Brien <obrien@FreeBSD.org>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for AMD x86-64 running FreeBSD with ELF format
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by David O'Brien <obrien@FreeBSD.org>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/fxsrintrin.h gcc-13.1.0/gcc/config/i386/fxsrintrin.h
*** gcc-12.2.0/gcc/config/i386/fxsrintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/fxsrintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gas.h gcc-13.1.0/gcc/config/i386/gas.h
*** gcc-12.2.0/gcc/config/i386/gas.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gas.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 using GAS.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for Intel 386 using GAS.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 31,45 ****
   * Next is the question of whether to uses underscores.  RMS didn't
   * like this idea at first, but since it is now obvious that we
   * need this separate tm file for use with gas, at least to get
!  * dbx debugging info, I think we should also switch to underscores.
   * We can keep i386v for real att style output, and the few
   * people who want both form will have to compile twice.
   */
  
- /* these come from i386/bsd.h, but are specific to sequent */
- #undef DBX_NO_XREFS
- #undef DBX_CONTIN_LENGTH
- 
  /* Output #ident as a .ident.  */
  
  #undef TARGET_ASM_OUTPUT_IDENT
--- 31,41 ----
   * Next is the question of whether to uses underscores.  RMS didn't
   * like this idea at first, but since it is now obvious that we
   * need this separate tm file for use with gas, at least to get
!  * debugging info, I think we should also switch to underscores.
   * We can keep i386v for real att style output, and the few
   * people who want both form will have to compile twice.
   */
  
  /* Output #ident as a .ident.  */
  
  #undef TARGET_ASM_OUTPUT_IDENT
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gcc-auto-profile gcc-13.1.0/gcc/config/i386/gcc-auto-profile
*** gcc-12.2.0/gcc/config/i386/gcc-auto-profile	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gcc-auto-profile	Wed Apr 26 07:09:39 2023
*************** if grep -q hypervisor /proc/cpuinfo ; th
*** 33,40 ****
    echo >&2 "Warning: branch profiling may not be functional in VMs"
  fi
  
! case `egrep -q "^cpu family\s*: 6" /proc/cpuinfo &&
!   egrep "^model\s*:" /proc/cpuinfo | head -n1` in
  model*:\ 55|\
  model*:\ 77|\
  model*:\ 76|\
--- 33,47 ----
    echo >&2 "Warning: branch profiling may not be functional in VMs"
  fi
  
! case `grep -E -q "^cpu family\s*: 6" /proc/cpuinfo &&
!   grep -E "^model\s*:" /proc/cpuinfo | head -n1` in
! model*:\ 46|\
! model*:\ 30|\
! model*:\ 31|\
! model*:\ 26|\
! model*:\ 47|\
! model*:\ 37|\
! model*:\ 44) E="cpu/event=0x88,umask=0x40/$FLAGS" ;;
  model*:\ 55|\
  model*:\ 77|\
  model*:\ 76|\
*************** model*:\ 95|\
*** 43,48 ****
--- 50,60 ----
  model*:\ 87|\
  model*:\ 133|\
  model*:\ 122) E="cpu/event=0xC4,umask=0xFE/p$FLAGS" ;;
+ model*:\ 28|\
+ model*:\ 38|\
+ model*:\ 39|\
+ model*:\ 54|\
+ model*:\ 53) E="cpu/event=0x88,umask=0x41/$FLAGS" ;;
  model*:\ 42|\
  model*:\ 45|\
  model*:\ 58|\
*************** model*:\ 165|\
*** 63,85 ****
  model*:\ 166|\
  model*:\ 85|\
  model*:\ 85) E="cpu/event=0xC4,umask=0x20/p$FLAGS" ;;
- model*:\ 46|\
- model*:\ 30|\
- model*:\ 31|\
- model*:\ 26|\
- model*:\ 47|\
- model*:\ 37|\
- model*:\ 44) E="cpu/event=0x88,umask=0x40/p$FLAGS" ;;
- model*:\ 28|\
- model*:\ 38|\
- model*:\ 39|\
- model*:\ 54|\
- model*:\ 53) E="cpu/event=0x88,umask=0x41/p$FLAGS" ;;
  model*:\ 126|\
  model*:\ 140|\
  model*:\ 141|\
  model*:\ 106|\
  model*:\ 108) E="cpu/event=0xc4,umask=0x20/p$FLAGS" ;;
  *)
  echo >&2 "Unknown CPU. Run contrib/gen_autofdo_event.py --all --script to update script."
  	exit 1 ;;
--- 75,88 ----
  model*:\ 166|\
  model*:\ 85|\
  model*:\ 85) E="cpu/event=0xC4,umask=0x20/p$FLAGS" ;;
  model*:\ 126|\
  model*:\ 140|\
  model*:\ 141|\
+ model*:\ 143|\
  model*:\ 106|\
  model*:\ 108) E="cpu/event=0xc4,umask=0x20/p$FLAGS" ;;
+ model*:\ 134|\
+ model*:\ 150) E="cpu/event=0xc4,umask=0xfe/p$FLAGS" ;;
  *)
  echo >&2 "Unknown CPU. Run contrib/gen_autofdo_event.py --all --script to update script."
  	exit 1 ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/geode.md gcc-13.1.0/gcc/config/i386/geode.md
*** gcc-12.2.0/gcc/config/i386/geode.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/geode.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Geode Scheduling
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Geode Scheduling
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gfniintrin.h gcc-13.1.0/gcc/config/i386/gfniintrin.h
*** gcc-12.2.0/gcc/config/i386/gfniintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gfniintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/glm.md gcc-13.1.0/gcc/config/i386/glm.md
*** gcc-12.2.0/gcc/config/i386/glm.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/glm.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Goldmont(GLM) Scheduling
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Goldmont(GLM) Scheduling
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gmm_malloc.h gcc-13.1.0/gcc/config/i386/gmm_malloc.h
*** gcc-12.2.0/gcc/config/i386/gmm_malloc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gmm_malloc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gnu-property.cc gcc-13.1.0/gcc/config/i386/gnu-property.cc
*** gcc-12.2.0/gcc/config/i386/gnu-property.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gnu-property.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for x86 GNU property.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions for x86 GNU property.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gnu-user-common.h gcc-13.1.0/gcc/config/i386/gnu-user-common.h
*** gcc-12.2.0/gcc/config/i386/gnu-user-common.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gnu-user-common.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common definitions for Intel 386 and AMD x86-64 systems using
!    GNU userspace.  Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Ilya Enkovich.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common definitions for Intel 386 and AMD x86-64 systems using
!    GNU userspace.  Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Ilya Enkovich.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 47,53 ****
  
  /* Similar to standard GNU userspace, but adding -ffast-math support.  */
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     %{mpc32:crtprec32.o%s} \
     %{mpc64:crtprec64.o%s} \
     %{mpc80:crtprec80.o%s}"
--- 47,53 ----
  
  /* Similar to standard GNU userspace, but adding -ffast-math support.  */
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!shared:%{!mno-daz-ftz:crtfastmath.o%s}}} \
     %{mpc32:crtprec32.o%s} \
     %{mpc64:crtprec64.o%s} \
     %{mpc80:crtprec80.o%s}"
*************** along with GCC; see the file COPYING3.
*** 66,72 ****
  #define STACK_CHECK_STATIC_BUILTIN 1
  
  /* We only build the -fsplit-stack support in libgcc if the
!    assembler has full support for the CFI directives.  */
! #if HAVE_GAS_CFI_PERSONALITY_DIRECTIVE
  #define TARGET_CAN_SPLIT_STACK
  #endif
--- 66,73 ----
  #define STACK_CHECK_STATIC_BUILTIN 1
  
  /* We only build the -fsplit-stack support in libgcc if the
!    assembler has full support for the CFI directives.  Also
!    we only support -fsplit-stack on glibc targets.  */
! #if (DEFAULT_LIBC == LIBC_GLIBC) && HAVE_GAS_CFI_PERSONALITY_DIRECTIVE
  #define TARGET_CAN_SPLIT_STACK
  #endif
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gnu-user.h gcc-13.1.0/gcc/config/i386/gnu-user.h
*** gcc-12.2.0/gcc/config/i386/gnu-user.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gnu-user.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 systems using GNU userspace.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
  
--- 1,5 ----
  /* Definitions for Intel 386 systems using GNU userspace.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
  
*************** along with GCC; see the file COPYING3.
*** 26,34 ****
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  /* Output assembler code to FILE to call the profiler.
     To the best of my knowledge, no GNU userspace libc has required the label
--- 26,34 ----
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  /* Output assembler code to FILE to call the profiler.
     To the best of my knowledge, no GNU userspace libc has required the label
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gnu-user64.h gcc-13.1.0/gcc/config/i386/gnu-user64.h
*** gcc-12.2.0/gcc/config/i386/gnu-user64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gnu-user64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AMD x86-64 using GNU userspace.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for AMD x86-64 using GNU userspace.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gnu.h gcc-13.1.0/gcc/config/i386/gnu.h
*** gcc-12.2.0/gcc/config/i386/gnu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/gnu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Configuration for an i386 running GNU with ELF as the target machine.  */
  
  /*
! Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Configuration for an i386 running GNU with ELF as the target machine.  */
  
  /*
! Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC.  If not, see <http://www
*** 41,48 ****
  #define TARGET_THREAD_SSP_OFFSET        0x14
  
  /* We only build the -fsplit-stack support in libgcc if the
!    assembler has full support for the CFI directives.  */
! #if HAVE_GAS_CFI_PERSONALITY_DIRECTIVE
  #define TARGET_CAN_SPLIT_STACK
  #endif
  /* We steal the last transactional memory word.  */
--- 41,49 ----
  #define TARGET_THREAD_SSP_OFFSET        0x14
  
  /* We only build the -fsplit-stack support in libgcc if the
!    assembler has full support for the CFI directives.  Also
!    we only support -fsplit-stack on glibc targets.  */
! #if (DEFAULT_LIBC == LIBC_GLIBC) && HAVE_GAS_CFI_PERSONALITY_DIRECTIVE
  #define TARGET_CAN_SPLIT_STACK
  #endif
  /* We steal the last transactional memory word.  */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/gnu64.h gcc-13.1.0/gcc/config/i386/gnu64.h
*** gcc-12.2.0/gcc/config/i386/gnu64.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/gnu64.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,40 ----
+ /* Configuration for an x86_64 running GNU with ELF as the target machine.  */
+ 
+ /*
+ Copyright (C) 2023 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 of the License, or
+ (at your option) any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC.  If not, see <http://www.gnu.org/licenses/>.
+ */
+ 
+ #define GNU_USER_LINK_EMULATION32 "elf_i386"
+ #define GNU_USER_LINK_EMULATION64 "elf_x86_64"
+ #define GNU_USER_LINK_EMULATIONX32 "elf32_x86_64"
+ 
+ #undef GNU_USER_DYNAMIC_LINKER
+ #define GNU_USER_DYNAMIC_LINKER32 "/lib/ld.so.1"
+ #define GNU_USER_DYNAMIC_LINKER64 "/lib/ld-x86-64.so.1"
+ #define GNU_USER_DYNAMIC_LINKERX32 "/lib/ld-x32.so.1"
+ 
+ #undef	STARTFILE_SPEC
+ #if defined HAVE_LD_PIE
+ #define STARTFILE_SPEC \
+   "%{!shared: %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};pie:Scrt1.o%s;static:crt0.o%s;:crt1.o%s}} \
+    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
+ #else
+ #define STARTFILE_SPEC \
+   "%{!shared: %{pg|p|profile:%{static:gcrt0.o%s;:gcrt1.o%s};static:crt0.o%s;:crt1.o%s}} \
+    crti.o%s %{static:crtbeginT.o%s;shared|pie:crtbeginS.o%s;:crtbegin.o%s}"
+ #endif
diff -Nrcpad gcc-12.2.0/gcc/config/i386/haswell.md gcc-13.1.0/gcc/config/i386/haswell.md
*** gcc-12.2.0/gcc/config/i386/haswell.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/haswell.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling for Haswell and derived processors.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling for Haswell and derived processors.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/host-cygwin.cc gcc-13.1.0/gcc/config/i386/host-cygwin.cc
*** gcc-12.2.0/gcc/config/i386/host-cygwin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/host-cygwin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Cygwin host-specific hook definitions.
!  Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
   This file is part of GCC.
  
--- 1,5 ----
  /* Cygwin host-specific hook definitions.
!  Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
   This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/host-i386-darwin.cc gcc-13.1.0/gcc/config/i386/host-i386-darwin.cc
*** gcc-12.2.0/gcc/config/i386/host-i386-darwin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/host-i386-darwin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* i386-darwin host-specific hook definitions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* i386-darwin host-specific hook definitions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/host-mingw32.cc gcc-13.1.0/gcc/config/i386/host-mingw32.cc
*** gcc-12.2.0/gcc/config/i386/host-mingw32.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/host-mingw32.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* mingw32 host-specific hook definitions.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* mingw32 host-specific hook definitions.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** static size_t mingw32_gt_pch_alloc_granu
*** 44,52 ****
  
  static inline void w32_error(const char*, const char*, int, const char*);
  
- /* FIXME: Is this big enough?  */
- static const size_t pch_VA_max_size  = 128 * 1024 * 1024;
- 
  /* Granularity for reserving address space.  */
  static size_t va_granularity = 0x10000;
  
--- 44,49 ----
*************** static void *
*** 88,96 ****
  mingw32_gt_pch_get_address (size_t size, int)
  {
    void* res;
-   size = (size + va_granularity - 1) & ~(va_granularity - 1);
-   if (size > pch_VA_max_size)
-     return NULL;
  
    /* FIXME: We let system determine base by setting first arg to NULL.
       Allocating at top of available address space avoids unnecessary
--- 85,90 ----
*************** mingw32_gt_pch_get_address (size_t size,
*** 100,106 ****
       If we allocate at bottom we need to reserve the address as early
       as possible and at the same point in each invocation. */
   
!   res = VirtualAlloc (NULL, pch_VA_max_size,
  		      MEM_RESERVE | MEM_TOP_DOWN,
  		      PAGE_NOACCESS);
    if (!res)
--- 94,100 ----
       If we allocate at bottom we need to reserve the address as early
       as possible and at the same point in each invocation. */
   
!   res = VirtualAlloc (NULL, size,
  		      MEM_RESERVE | MEM_TOP_DOWN,
  		      PAGE_NOACCESS);
    if (!res)
*************** mingw32_gt_pch_use_address (void *&addr,
*** 150,156 ****
  
    /* Offset must be also be a multiple of allocation granularity for
       this to work.  We can't change the offset. */ 
!   if ((offset & (va_granularity - 1)) != 0 || size > pch_VA_max_size)
      return -1;
  
  
--- 144,150 ----
  
    /* Offset must be also be a multiple of allocation granularity for
       this to work.  We can't change the offset. */ 
!   if ((offset & (va_granularity - 1)) != 0)
      return -1;
  
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/hresetintrin.h gcc-13.1.0/gcc/config/i386/hresetintrin.h
*** gcc-12.2.0/gcc/config/i386/hresetintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/hresetintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-builtin-types.awk gcc-13.1.0/gcc/config/i386/i386-builtin-types.awk
*** gcc-12.2.0/gcc/config/i386/i386-builtin-types.awk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-builtin-types.awk	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! #  Copyright (C) 2009-2022 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
--- 1,4 ----
! #  Copyright (C) 2009-2023 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
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-builtin-types.def gcc-13.1.0/gcc/config/i386/i386-builtin-types.def
*** gcc-12.2.0/gcc/config/i386/i386-builtin-types.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-builtin-types.def	Wed Apr 26 07:09:39 2023
*************** DEF_PRIMITIVE_TYPE (UINT16, short_unsign
*** 69,74 ****
--- 69,75 ----
  DEF_PRIMITIVE_TYPE (INT64, long_long_integer_type_node)
  DEF_PRIMITIVE_TYPE (UINT64, long_long_unsigned_type_node)
  DEF_PRIMITIVE_TYPE (FLOAT16, ix86_float16_type_node)
+ DEF_PRIMITIVE_TYPE (BFLOAT16, ix86_bf16_type_node)
  DEF_PRIMITIVE_TYPE (FLOAT, float_type_node)
  DEF_PRIMITIVE_TYPE (DOUBLE, double_type_node)
  DEF_PRIMITIVE_TYPE (FLOAT80, float80_type_node)
*************** DEF_VECTOR_TYPE (V8QI, QI)
*** 86,91 ****
--- 87,93 ----
  DEF_VECTOR_TYPE (V2DF, DOUBLE)
  DEF_VECTOR_TYPE (V4SF, FLOAT)
  DEF_VECTOR_TYPE (V8HF, FLOAT16)
+ DEF_VECTOR_TYPE (V8BF, BFLOAT16)
  DEF_VECTOR_TYPE (V2DI, DI)
  DEF_VECTOR_TYPE (V4SI, SI)
  DEF_VECTOR_TYPE (V8HI, HI)
*************** DEF_VECTOR_TYPE (V16UQI, UQI, V16QI)
*** 99,104 ****
--- 101,107 ----
  DEF_VECTOR_TYPE (V4DF, DOUBLE)
  DEF_VECTOR_TYPE (V8SF, FLOAT)
  DEF_VECTOR_TYPE (V16HF, FLOAT16)
+ DEF_VECTOR_TYPE (V16BF, BFLOAT16)
  DEF_VECTOR_TYPE (V4DI, DI)
  DEF_VECTOR_TYPE (V8SI, SI)
  DEF_VECTOR_TYPE (V16HI, HI)
*************** DEF_VECTOR_TYPE (V16UHI, UHI, V16HI)
*** 110,115 ****
--- 113,119 ----
  # AVX512F vectors
  DEF_VECTOR_TYPE (V32SF, FLOAT)
  DEF_VECTOR_TYPE (V32HF, FLOAT16)
+ DEF_VECTOR_TYPE (V32BF, BFLOAT16)
  DEF_VECTOR_TYPE (V16SF, FLOAT)
  DEF_VECTOR_TYPE (V8DF, DOUBLE)
  DEF_VECTOR_TYPE (V8DI, DI)
*************** DEF_POINTER_TYPE (PVOID, VOID)
*** 135,140 ****
--- 139,145 ----
  DEF_POINTER_TYPE (PDOUBLE, DOUBLE)
  DEF_POINTER_TYPE (PFLOAT, FLOAT)
  DEF_POINTER_TYPE (PCFLOAT16, FLOAT16, CONST)
+ DEF_POINTER_TYPE (PCBFLOAT16, BFLOAT16, CONST)
  DEF_POINTER_TYPE (PSHORT, SHORT)
  DEF_POINTER_TYPE (PUSHORT, USHORT)
  DEF_POINTER_TYPE (PINT, INT)
*************** DEF_POINTER_TYPE (PCV4DF, V4DF, CONST)
*** 178,183 ****
--- 183,192 ----
  DEF_POINTER_TYPE (PCV4SF, V4SF, CONST)
  DEF_POINTER_TYPE (PCV8DF, V8DF, CONST)
  DEF_POINTER_TYPE (PCV8SF, V8SF, CONST)
+ DEF_POINTER_TYPE (PCV8HF, V8HF, CONST)
+ DEF_POINTER_TYPE (PCV8BF, V8BF, CONST)
+ DEF_POINTER_TYPE (PCV16HF, V16HF, CONST)
+ DEF_POINTER_TYPE (PCV16BF, V16BF, CONST)
  DEF_POINTER_TYPE (PCV16SF, V16SF, CONST)
  
  DEF_POINTER_TYPE (PCV2DI, V2DI, CONST)
*************** DEF_FUNCTION_TYPE (V8DI, V8DI, V2DI, INT
*** 516,521 ****
--- 525,531 ----
  DEF_FUNCTION_TYPE (V8DI, V8DI, V2DI, INT, V8DI, UQI)
  DEF_FUNCTION_TYPE (V8DI, V8DI, V4DI, INT, V8DI, UQI)
  DEF_FUNCTION_TYPE (V4DI, V8SI, V8SI)
+ DEF_FUNCTION_TYPE (V4DI, V32QI, V32QI)
  DEF_FUNCTION_TYPE (V8DI, V64QI, V64QI)
  DEF_FUNCTION_TYPE (V4DI, V4DI, V2DI)
  DEF_FUNCTION_TYPE (V4DI, PCV4DI, V4DI)
*************** DEF_FUNCTION_TYPE (V4SI, V4SI, V4SI, UHI
*** 1271,1300 ****
  DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI, UHI)
  
  # BF16 builtins
! DEF_FUNCTION_TYPE (V32HI, V16SF, V16SF)
! DEF_FUNCTION_TYPE (V32HI, V16SF, V16SF, V32HI, USI)
! DEF_FUNCTION_TYPE (V32HI, V16SF, V16SF, USI)
! DEF_FUNCTION_TYPE (V16HI, V8SF, V8SF)
! DEF_FUNCTION_TYPE (V16HI, V8SF, V8SF, V16HI, UHI)
! DEF_FUNCTION_TYPE (V16HI, V8SF, V8SF, UHI)
! DEF_FUNCTION_TYPE (V8HI, V4SF, V4SF)
! DEF_FUNCTION_TYPE (V8HI, V4SF, V4SF, V8HI, UQI)
! DEF_FUNCTION_TYPE (V8HI, V4SF, V4SF, UQI)
! DEF_FUNCTION_TYPE (V16HI, V16SF)
! DEF_FUNCTION_TYPE (V16HI, V16SF, V16HI, UHI)
! DEF_FUNCTION_TYPE (V16HI, V16SF, UHI)
! DEF_FUNCTION_TYPE (V8HI, V8SF)
! DEF_FUNCTION_TYPE (V8HI, V8SF, V8HI, UQI)
! DEF_FUNCTION_TYPE (V8HI, V8SF, UQI)
! DEF_FUNCTION_TYPE (V8HI, V4SF)
! DEF_FUNCTION_TYPE (V8HI, V4SF, V8HI, UQI)
! DEF_FUNCTION_TYPE (V8HI, V4SF, UQI)
! DEF_FUNCTION_TYPE (V16SF, V16SF, V32HI, V32HI)
! DEF_FUNCTION_TYPE (V16SF, V16SF, V32HI, V32HI, UHI)
! DEF_FUNCTION_TYPE (V8SF, V8SF, V16HI, V16HI)
! DEF_FUNCTION_TYPE (V8SF, V8SF, V16HI, V16HI, UQI)
! DEF_FUNCTION_TYPE (V4SF, V4SF, V8HI, V8HI)
! DEF_FUNCTION_TYPE (V4SF, V4SF, V8HI, V8HI, UQI)
  
  # KEYLOCKER builtins
  DEF_FUNCTION_TYPE (UINT, UINT, V2DI, V2DI, PVOID)
--- 1281,1311 ----
  DEF_FUNCTION_TYPE (V8SI, V8SI, V8SI, UHI)
  
  # BF16 builtins
! DEF_FUNCTION_TYPE (FLOAT, BFLOAT16)
! DEF_FUNCTION_TYPE (V32BF, V16SF, V16SF)
! DEF_FUNCTION_TYPE (V32BF, V16SF, V16SF, V32BF, USI)
! DEF_FUNCTION_TYPE (V32BF, V16SF, V16SF, USI)
! DEF_FUNCTION_TYPE (V16BF, V8SF, V8SF)
! DEF_FUNCTION_TYPE (V16BF, V8SF, V8SF, V16BF, UHI)
! DEF_FUNCTION_TYPE (V16BF, V8SF, V8SF, UHI)
! DEF_FUNCTION_TYPE (V8BF, V4SF, V4SF)
! DEF_FUNCTION_TYPE (V8BF, V4SF, V4SF, V8BF, UQI)
! DEF_FUNCTION_TYPE (V8BF, V4SF, V4SF, UQI)
! DEF_FUNCTION_TYPE (V16BF, V16SF)
! DEF_FUNCTION_TYPE (V16BF, V16SF, V16BF, UHI)
! DEF_FUNCTION_TYPE (V16BF, V16SF, UHI)
! DEF_FUNCTION_TYPE (V8BF, V8SF)
! DEF_FUNCTION_TYPE (V8BF, V8SF, V8BF, UQI)
! DEF_FUNCTION_TYPE (V8BF, V8SF, UQI)
! DEF_FUNCTION_TYPE (V8BF, V4SF)
! DEF_FUNCTION_TYPE (V8BF, V4SF, V8BF, UQI)
! DEF_FUNCTION_TYPE (V8BF, V4SF, UQI)
! DEF_FUNCTION_TYPE (V16SF, V16SF, V32BF, V32BF)
! DEF_FUNCTION_TYPE (V16SF, V16SF, V32BF, V32BF, UHI)
! DEF_FUNCTION_TYPE (V8SF, V8SF, V16BF, V16BF)
! DEF_FUNCTION_TYPE (V8SF, V8SF, V16BF, V16BF, UQI)
! DEF_FUNCTION_TYPE (V4SF, V4SF, V8BF, V8BF)
! DEF_FUNCTION_TYPE (V4SF, V4SF, V8BF, V8BF, UQI)
  
  # KEYLOCKER builtins
  DEF_FUNCTION_TYPE (UINT, UINT, V2DI, V2DI, PVOID)
*************** DEF_FUNCTION_TYPE (V32HF, V32HF)
*** 1387,1389 ****
--- 1398,1418 ----
  DEF_FUNCTION_TYPE_ALIAS (V8HF_FTYPE_V8HF, ROUND)
  DEF_FUNCTION_TYPE_ALIAS (V16HF_FTYPE_V16HF, ROUND)
  DEF_FUNCTION_TYPE_ALIAS (V32HF_FTYPE_V32HF, ROUND)
+ 
+ # AVXNECONVERT builtins
+ DEF_FUNCTION_TYPE (V4SF, PCBFLOAT16)
+ DEF_FUNCTION_TYPE (V8SF, PCBFLOAT16)
+ DEF_FUNCTION_TYPE (V4SF, PCFLOAT16)
+ DEF_FUNCTION_TYPE (V8SF, PCFLOAT16)
+ DEF_FUNCTION_TYPE (V4SF, PCV8HF)
+ DEF_FUNCTION_TYPE (V8SF, PCV16HF)
+ DEF_FUNCTION_TYPE (V4SF, PCV8BF)
+ DEF_FUNCTION_TYPE (V8SF, PCV16BF)
+ 
+ # CMPccXADD builtins
+ DEF_FUNCTION_TYPE (INT, PINT, INT, INT, INT)
+ DEF_FUNCTION_TYPE (LONGLONG, PLONGLONG, LONGLONG, LONGLONG, INT)
+ 
+ # PREFETCHI builtins
+ DEF_FUNCTION_TYPE (VOID, PCVOID, INT)
+ DEF_FUNCTION_TYPE (VOID, PCVOID, INT, INT, INT)
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-builtin.def gcc-13.1.0/gcc/config/i386/i386-builtin.def
*** gcc-12.2.0/gcc/config/i386/i386-builtin.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-builtin.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin functions for ia32.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Builtin functions for ia32.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 23,31 ****
     <http://www.gnu.org/licenses/>.  */
  
  /* Before including this file, some macros must be defined:
!    BDESC (mask, icode, name, code, comparison, flag)
       -- definition of each builtin
!    BDESC_FIRST (kind, KIND, mask, icode, name, code, comparison, flag)
       -- like BDESC, but used for the first builtin in each category;
  	bdesc_##kind will be used in the name of the array and
  	IX86_BUILTIN__BDESC_##KIND##_FIRST will be the low boundary
--- 23,31 ----
     <http://www.gnu.org/licenses/>.  */
  
  /* Before including this file, some macros must be defined:
!    BDESC (mask, mask2, icode, name, code, comparison, flag)
       -- definition of each builtin
!    BDESC_FIRST (kind, KIND, mask, mask2, icode, name, code, comparison, flag)
       -- like BDESC, but used for the first builtin in each category;
  	bdesc_##kind will be used in the name of the array and
  	IX86_BUILTIN__BDESC_##KIND##_FIRST will be the low boundary
***************
*** 35,64 ****
          IX86_BUILTIN__BDESC_##NEXT_KIND##_FIRST - 1.  */
  
  BDESC_FIRST (comi, COMI,
!        OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comieq", IX86_BUILTIN_COMIEQSS, UNEQ, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comilt", IX86_BUILTIN_COMILTSS, UNLT, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comile", IX86_BUILTIN_COMILESS, UNLE, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comigt", IX86_BUILTIN_COMIGTSS, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comige", IX86_BUILTIN_COMIGESS, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comineq", IX86_BUILTIN_COMINEQSS, LTGT, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomieq", IX86_BUILTIN_UCOMIEQSS, UNEQ, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomilt", IX86_BUILTIN_UCOMILTSS, UNLT, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomile", IX86_BUILTIN_UCOMILESS, UNLE, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomigt", IX86_BUILTIN_UCOMIGTSS, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomige", IX86_BUILTIN_UCOMIGESS, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomineq", IX86_BUILTIN_UCOMINEQSS, LTGT, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdeq", IX86_BUILTIN_COMIEQSD, UNEQ, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdlt", IX86_BUILTIN_COMILTSD, UNLT, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdle", IX86_BUILTIN_COMILESD, UNLE, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdgt", IX86_BUILTIN_COMIGTSD, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdge", IX86_BUILTIN_COMIGESD, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdneq", IX86_BUILTIN_COMINEQSD, LTGT, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdeq", IX86_BUILTIN_UCOMIEQSD, UNEQ, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdlt", IX86_BUILTIN_UCOMILTSD, UNLT, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdle", IX86_BUILTIN_UCOMILESD, UNLE, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdgt", IX86_BUILTIN_UCOMIGTSD, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdge", IX86_BUILTIN_UCOMIGESD, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdneq", IX86_BUILTIN_UCOMINEQSD, LTGT, 0)
  
  BDESC_END (COMI, PCMPESTR)
  
--- 35,64 ----
          IX86_BUILTIN__BDESC_##NEXT_KIND##_FIRST - 1.  */
  
  BDESC_FIRST (comi, COMI,
!        OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comieq", IX86_BUILTIN_COMIEQSS, EQ, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comilt", IX86_BUILTIN_COMILTSS, LT, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comile", IX86_BUILTIN_COMILESS, LE, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comigt", IX86_BUILTIN_COMIGTSS, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comige", IX86_BUILTIN_COMIGESS, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_comi, "__builtin_ia32_comineq", IX86_BUILTIN_COMINEQSS, NE, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomieq", IX86_BUILTIN_UCOMIEQSS, EQ, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomilt", IX86_BUILTIN_UCOMILTSS, LT, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomile", IX86_BUILTIN_UCOMILESS, LE, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomigt", IX86_BUILTIN_UCOMIGTSS, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomige", IX86_BUILTIN_UCOMIGESS, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_ucomi, "__builtin_ia32_ucomineq", IX86_BUILTIN_UCOMINEQSS, NE, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdeq", IX86_BUILTIN_COMIEQSD, EQ, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdlt", IX86_BUILTIN_COMILTSD, LT, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdle", IX86_BUILTIN_COMILESD, LE, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdgt", IX86_BUILTIN_COMIGTSD, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdge", IX86_BUILTIN_COMIGESD, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_comi, "__builtin_ia32_comisdneq", IX86_BUILTIN_COMINEQSD, NE, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdeq", IX86_BUILTIN_UCOMIEQSD, EQ, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdlt", IX86_BUILTIN_UCOMILTSD, LT, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdle", IX86_BUILTIN_UCOMILESD, LE, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdgt", IX86_BUILTIN_UCOMIGTSD, GT, 0)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdge", IX86_BUILTIN_UCOMIGESD, GE, 0)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_ucomi, "__builtin_ia32_ucomisdneq", IX86_BUILTIN_UCOMINEQSD, NE, 0)
  
  BDESC_END (COMI, PCMPESTR)
  
*************** BDESC (OPTION_MASK_ISA_RTM, 0, CODE_FOR_
*** 274,279 ****
--- 274,297 ----
  BDESC (OPTION_MASK_ISA_RTM, 0, CODE_FOR_xend, "__builtin_ia32_xend", IX86_BUILTIN_XEND, UNKNOWN, (int) VOID_FTYPE_VOID)
  BDESC (OPTION_MASK_ISA_RTM, 0, CODE_FOR_xtest, "__builtin_ia32_xtest", IX86_BUILTIN_XTEST, UNKNOWN, (int) INT_FTYPE_VOID)
  
+ /* AVX-NE-CONVERT */
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vbcstnebf162ps_v4sf, "__builtin_ia32_vbcstnebf162ps128", IX86_BUILTIN_VBCSTNEBF162PS128, UNKNOWN, (int) V4SF_FTYPE_PCBFLOAT16)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vbcstnebf162ps_v8sf, "__builtin_ia32_vbcstnebf162ps256", IX86_BUILTIN_VBCSTNEBF162PS256, UNKNOWN, (int) V8SF_FTYPE_PCBFLOAT16)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vbcstnesh2ps_v4sf, "__builtin_ia32_vbcstnesh2ps128", IX86_BUILTIN_VBCSTNESH2PS128, UNKNOWN, (int) V4SF_FTYPE_PCFLOAT16)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vbcstnesh2ps_v8sf, "__builtin_ia32_vbcstnesh2ps256", IX86_BUILTIN_VBCSTNESH2PS256, UNKNOWN, (int) V8SF_FTYPE_PCFLOAT16)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneebf162ps_v8bf, "__builtin_ia32_vcvtneebf162ps128", IX86_BUILTIN_VCVTNEEBF162PS128, UNKNOWN, (int) V4SF_FTYPE_PCV8BF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneebf162ps_v16bf, "__builtin_ia32_vcvtneebf162ps256", IX86_BUILTIN_VCVTNEEBF162PS256, UNKNOWN, (int) V8SF_FTYPE_PCV16BF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneeph2ps_v8hf, "__builtin_ia32_vcvtneeph2ps128", IX86_BUILTIN_VCVTNEEPH2PS128, UNKNOWN, (int) V4SF_FTYPE_PCV8HF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneeph2ps_v16hf, "__builtin_ia32_vcvtneeph2ps256", IX86_BUILTIN_VCVTNEEPH2PS256, UNKNOWN, (int) V8SF_FTYPE_PCV16HF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneobf162ps_v8bf, "__builtin_ia32_vcvtneobf162ps128", IX86_BUILTIN_VCVTNEOBF162PS128, UNKNOWN, (int) V4SF_FTYPE_PCV8BF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneobf162ps_v16bf, "__builtin_ia32_vcvtneobf162ps256", IX86_BUILTIN_VCVTNEOBF162PS256, UNKNOWN, (int) V8SF_FTYPE_PCV16BF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneoph2ps_v8hf, "__builtin_ia32_vcvtneoph2ps128", IX86_BUILTIN_VCVTNEOPH2PS128, UNKNOWN, (int) V4SF_FTYPE_PCV8HF)
+ BDESC (0, OPTION_MASK_ISA2_AVXNECONVERT, CODE_FOR_vcvtneoph2ps_v16hf, "__builtin_ia32_vcvtneoph2ps256", IX86_BUILTIN_VCVTNEOPH2PS256, UNKNOWN, (int) V8SF_FTYPE_PCV16HF)
+ 
+ /* CMPCCXADD */
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_CMPCCXADD, CODE_FOR_cmpccxadd_si, "__builtin_ia32_cmpccxadd", IX86_BUILTIN_CMPCCXADD, UNKNOWN, (int) INT_FTYPE_PINT_INT_INT_INT)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_CMPCCXADD, CODE_FOR_cmpccxadd_di, "__builtin_ia32_cmpccxadd64", IX86_BUILTIN_CMPCCXADD64, UNKNOWN, (int) LONGLONG_FTYPE_PLONGLONG_LONGLONG_LONGLONG_INT)
+ 
  /* AVX512BW */
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_loadv32hi_mask, "__builtin_ia32_loaddquhi512_mask", IX86_BUILTIN_LOADDQUHI512_MASK, UNKNOWN, (int) V32HI_FTYPE_PCSHORT_V32HI_USI)
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_loadv64qi_mask, "__builtin_ia32_loaddquqi512_mask", IX86_BUILTIN_LOADDQUQI512_MASK, UNKNOWN, (int) V64QI_FTYPE_PCCHAR_V64QI_UDI)
*************** BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE
*** 397,402 ****
--- 415,430 ----
  BDESC (0, OPTION_MASK_ISA2_AVX512FP16, CODE_FOR_avx512f_loadhf_mask, "__builtin_ia32_loadsh_mask", IX86_BUILTIN_LOADSH_MASK, UNKNOWN, (int) V8HF_FTYPE_PCFLOAT16_V8HF_UQI)
  BDESC (0, OPTION_MASK_ISA2_AVX512FP16, CODE_FOR_avx512f_storehf_mask, "__builtin_ia32_storesh_mask", IX86_BUILTIN_STORESH_MASK, UNKNOWN, (int) VOID_FTYPE_PCFLOAT16_V8HF_UQI)
  
+ /* RAOINT */
+ BDESC (0, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_aaddsi, "__builtin_ia32_aadd32", IX86_BUILTIN_AADD32, UNKNOWN, (int) VOID_FTYPE_PINT_INT)
+ BDESC (0, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_aandsi, "__builtin_ia32_aand32", IX86_BUILTIN_AAND32, UNKNOWN, (int) VOID_FTYPE_PINT_INT)
+ BDESC (0, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_aorsi, "__builtin_ia32_aor32", IX86_BUILTIN_AOR32, UNKNOWN, (int) VOID_FTYPE_PINT_INT)
+ BDESC (0, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_axorsi, "__builtin_ia32_axor32", IX86_BUILTIN_AXOR32, UNKNOWN, (int) VOID_FTYPE_PINT_INT)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_aadddi, "__builtin_ia32_aadd64", IX86_BUILTIN_AADD64, UNKNOWN, (int) VOID_FTYPE_PLONGLONG_LONGLONG)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_aanddi, "__builtin_ia32_aand64", IX86_BUILTIN_AAND64, UNKNOWN, (int) VOID_FTYPE_PLONGLONG_LONGLONG)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_aordi, "__builtin_ia32_aor64", IX86_BUILTIN_AOR64, UNKNOWN, (int) VOID_FTYPE_PLONGLONG_LONGLONG)
+ BDESC (OPTION_MASK_ISA_64BIT, OPTION_MASK_ISA2_RAOINT, CODE_FOR_rao_axordi, "__builtin_ia32_axor64", IX86_BUILTIN_AXOR64, UNKNOWN, (int) VOID_FTYPE_PLONGLONG_LONGLONG)
+ 
  /* RDPKRU and WRPKRU.  */
  BDESC (OPTION_MASK_ISA_PKU, 0, CODE_FOR_rdpkru,  "__builtin_ia32_rdpkru", IX86_BUILTIN_RDPKRU, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)
  BDESC (OPTION_MASK_ISA_PKU, 0, CODE_FOR_wrpkru,  "__builtin_ia32_wrpkru", IX86_BUILTIN_WRPKRU, UNKNOWN, (int) VOID_FTYPE_UNSIGNED)
*************** BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_
*** 469,474 ****
--- 497,506 ----
  BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_FOR_nothing, "__builtin_ia32_aesencwide128kl_u8", IX86_BUILTIN_AESENCWIDE128KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_PCV2DI_PCVOID)
  BDESC (0, OPTION_MASK_ISA2_WIDEKL, CODE_FOR_nothing, "__builtin_ia32_aesencwide256kl_u8", IX86_BUILTIN_AESENCWIDE256KLU8, UNKNOWN, (int) UINT8_FTYPE_PV2DI_PCV2DI_PCVOID)
  
+ /* PREFETCHI */
+ BDESC (0, OPTION_MASK_ISA2_PREFETCHI, CODE_FOR_prefetchi, "__builtin_ia32_prefetchi", IX86_BUILTIN_PREFETCHI, UNKNOWN, (int) VOID_FTYPE_PCVOID_INT)
+ BDESC (0, 0, CODE_FOR_nothing, "__builtin_ia32_prefetch", IX86_BUILTIN_PREFETCH, UNKNOWN, (int) VOID_FTYPE_PCVOID_INT_INT_INT)
+ 
  BDESC_END (SPECIAL_ARGS, PURE_ARGS)
  
  /* AVX */
*************** BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_
*** 647,653 ****
  
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_copysignv4sf3,  "__builtin_ia32_copysignps", IX86_BUILTIN_CPYSGNPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movss,  "__builtin_ia32_movss", IX86_BUILTIN_MOVSS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movhlps_exp,  "__builtin_ia32_movhlps", IX86_BUILTIN_MOVHLPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movlhps_exp,  "__builtin_ia32_movlhps", IX86_BUILTIN_MOVLHPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_vec_interleave_highv4sf, "__builtin_ia32_unpckhps", IX86_BUILTIN_UNPCKHPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
--- 679,685 ----
  
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_copysignv4sf3,  "__builtin_ia32_copysignps", IX86_BUILTIN_CPYSGNPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  
! BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movss_v4sf,  "__builtin_ia32_movss", IX86_BUILTIN_MOVSS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movhlps_exp,  "__builtin_ia32_movhlps", IX86_BUILTIN_MOVHLPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_sse_movlhps_exp,  "__builtin_ia32_movlhps", IX86_BUILTIN_MOVLHPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
  BDESC (OPTION_MASK_ISA_SSE, 0, CODE_FOR_vec_interleave_highv4sf, "__builtin_ia32_unpckhps", IX86_BUILTIN_UNPCKHPS, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF)
*************** BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR
*** 749,755 ****
  
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_copysignv2df3,  "__builtin_ia32_copysignpd", IX86_BUILTIN_CPYSGNPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_movsd,  "__builtin_ia32_movsd", IX86_BUILTIN_MOVSD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_vec_interleave_highv2df, "__builtin_ia32_unpckhpd", IX86_BUILTIN_UNPCKHPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_vec_interleave_lowv2df, "__builtin_ia32_unpcklpd", IX86_BUILTIN_UNPCKLPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  
--- 781,787 ----
  
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_copysignv2df3,  "__builtin_ia32_copysignpd", IX86_BUILTIN_CPYSGNPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_sse2_movsd_v2df,  "__builtin_ia32_movsd", IX86_BUILTIN_MOVSD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_vec_interleave_highv2df, "__builtin_ia32_unpckhpd", IX86_BUILTIN_UNPCKHPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_vec_interleave_lowv2df, "__builtin_ia32_unpcklpd", IX86_BUILTIN_UNPCKLPD, UNKNOWN, (int) V2DF_FTYPE_V2DF_V2DF)
  
*************** BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FO
*** 900,906 ****
  BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_psignv2si3, "__builtin_ia32_psignd", IX86_BUILTIN_PSIGND, UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI)
  
  /* SSSE3.  */
! BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_ssse3_palignrti, "__builtin_ia32_palignr128", IX86_BUILTIN_PALIGNR128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_CONVERT)
  BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_palignrdi, "__builtin_ia32_palignr", IX86_BUILTIN_PALIGNR, UNKNOWN, (int) V1DI_FTYPE_V1DI_V1DI_INT_CONVERT)
  
  /* SSE4.1 */
--- 932,938 ----
  BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_psignv2si3, "__builtin_ia32_psignd", IX86_BUILTIN_PSIGND, UNKNOWN, (int) V2SI_FTYPE_V2SI_V2SI)
  
  /* SSSE3.  */
! BDESC (OPTION_MASK_ISA_SSSE3, 0, CODE_FOR_ssse3_palignrv1ti, "__builtin_ia32_palignr128", IX86_BUILTIN_PALIGNR128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT_CONVERT)
  BDESC (OPTION_MASK_ISA_SSSE3 | OPTION_MASK_ISA_MMX, 0, CODE_FOR_ssse3_palignrdi, "__builtin_ia32_palignr", IX86_BUILTIN_PALIGNR, UNKNOWN, (int) V1DI_FTYPE_V1DI_V1DI_INT_CONVERT)
  
  /* SSE4.1 */
*************** BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_
*** 1036,1043 ****
  
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_blendpd256, "__builtin_ia32_blendpd256", IX86_BUILTIN_BLENDPD256, UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_INT)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_blendps256, "__builtin_ia32_blendps256", IX86_BUILTIN_BLENDPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_INT)
! BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_nothing, "__builtin_ia32_blendvpd256", IX86_BUILTIN_BLENDVPD256, UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_V4DF)
! BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_nothing, "__builtin_ia32_blendvps256", IX86_BUILTIN_BLENDVPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_V8SF)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_dpps256, "__builtin_ia32_dpps256", IX86_BUILTIN_DPPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_INT)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_shufpd256, "__builtin_ia32_shufpd256", IX86_BUILTIN_SHUFPD256, UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_INT)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_shufps256, "__builtin_ia32_shufps256", IX86_BUILTIN_SHUFPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_INT)
--- 1068,1075 ----
  
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_blendpd256, "__builtin_ia32_blendpd256", IX86_BUILTIN_BLENDPD256, UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_INT)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_blendps256, "__builtin_ia32_blendps256", IX86_BUILTIN_BLENDPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_INT)
! BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_blendvpd256, "__builtin_ia32_blendvpd256", IX86_BUILTIN_BLENDVPD256, UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_V4DF)
! BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_blendvps256, "__builtin_ia32_blendvps256", IX86_BUILTIN_BLENDVPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_V8SF)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_dpps256, "__builtin_ia32_dpps256", IX86_BUILTIN_DPPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_INT)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_shufpd256, "__builtin_ia32_shufpd256", IX86_BUILTIN_SHUFPD256, UNKNOWN, (int) V4DF_FTYPE_V4DF_V4DF_INT)
  BDESC (OPTION_MASK_ISA_AVX, 0, CODE_FOR_avx_shufps256, "__builtin_ia32_shufps256", IX86_BUILTIN_SHUFPS256, UNKNOWN, (int) V8SF_FTYPE_V8SF_V8SF_INT)
*************** BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR
*** 1217,1223 ****
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_mulv8si3, "__builtin_ia32_pmulld256"  , IX86_BUILTIN_PMULLD256  , UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_vec_widen_umult_even_v8si, "__builtin_ia32_pmuludq256", IX86_BUILTIN_PMULUDQ256, UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_iorv4di3, "__builtin_ia32_por256", IX86_BUILTIN_POR256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI)
! BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_psadbw, "__builtin_ia32_psadbw256", IX86_BUILTIN_PSADBW256, UNKNOWN, (int) V16HI_FTYPE_V32QI_V32QI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_pshufbv32qi3, "__builtin_ia32_pshufb256", IX86_BUILTIN_PSHUFB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_pshufdv3, "__builtin_ia32_pshufd256", IX86_BUILTIN_PSHUFD256, UNKNOWN, (int) V8SI_FTYPE_V8SI_INT)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_pshufhwv3, "__builtin_ia32_pshufhw256", IX86_BUILTIN_PSHUFHW256, UNKNOWN, (int) V16HI_FTYPE_V16HI_INT)
--- 1249,1255 ----
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_mulv8si3, "__builtin_ia32_pmulld256"  , IX86_BUILTIN_PMULLD256  , UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_vec_widen_umult_even_v8si, "__builtin_ia32_pmuludq256", IX86_BUILTIN_PMULUDQ256, UNKNOWN, (int) V4DI_FTYPE_V8SI_V8SI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_iorv4di3, "__builtin_ia32_por256", IX86_BUILTIN_POR256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI)
! BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_psadbw, "__builtin_ia32_psadbw256", IX86_BUILTIN_PSADBW256, UNKNOWN, (int) V4DI_FTYPE_V32QI_V32QI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_pshufbv32qi3, "__builtin_ia32_pshufb256", IX86_BUILTIN_PSHUFB256, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_pshufdv3, "__builtin_ia32_pshufd256", IX86_BUILTIN_PSHUFD256, UNKNOWN, (int) V8SI_FTYPE_V8SI_INT)
  BDESC (OPTION_MASK_ISA_AVX2, 0, CODE_FOR_avx2_pshufhwv3, "__builtin_ia32_pshufhw256", IX86_BUILTIN_PSHUFHW256, UNKNOWN, (int) V16HI_FTYPE_V16HI_INT)
*************** BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_
*** 1351,1358 ****
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_compressv8df_mask, "__builtin_ia32_compressdf512_mask", IX86_BUILTIN_COMPRESSPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_compressv16sf_mask, "__builtin_ia32_compresssf512_mask", IX86_BUILTIN_COMPRESSPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_floatv8siv8df2_mask, "__builtin_ia32_cvtdq2pd512_mask", IX86_BUILTIN_CVTDQ2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SI_V8DF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_vcvtps2ph512_mask,  "__builtin_ia32_vcvtps2ph512_mask", IX86_BUILTIN_CVTPS2PH512, UNKNOWN, (int) V16HI_FTYPE_V16SF_INT_V16HI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_ufloatv8siv8df2_mask, "__builtin_ia32_cvtudq2pd512_mask", IX86_BUILTIN_CVTUDQ2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SI_V8DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_cvtusi2sd32, "__builtin_ia32_cvtusi2sd32", IX86_BUILTIN_CVTUSI2SD32, UNKNOWN, (int) V2DF_FTYPE_V2DF_UINT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_expandv8df_mask, "__builtin_ia32_expanddf512_mask", IX86_BUILTIN_EXPANDPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_expandv8df_maskz, "__builtin_ia32_expanddf512_maskz", IX86_BUILTIN_EXPANDPD512Z, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_UQI)
--- 1383,1390 ----
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_compressv8df_mask, "__builtin_ia32_compressdf512_mask", IX86_BUILTIN_COMPRESSPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_compressv16sf_mask, "__builtin_ia32_compresssf512_mask", IX86_BUILTIN_COMPRESSPS512, UNKNOWN, (int) V16SF_FTYPE_V16SF_V16SF_UHI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_floatv8siv8df2_mask, "__builtin_ia32_cvtdq2pd512_mask", IX86_BUILTIN_CVTDQ2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SI_V8DF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_vcvtps2ph512_mask_sae,  "__builtin_ia32_vcvtps2ph512_mask", IX86_BUILTIN_CVTPS2PH512, UNKNOWN, (int) V16HI_FTYPE_V16SF_INT_V16HI_UHI)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_floatunsv8siv8df2_mask, "__builtin_ia32_cvtudq2pd512_mask", IX86_BUILTIN_CVTUDQ2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SI_V8DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_cvtusi2sd32, "__builtin_ia32_cvtusi2sd32", IX86_BUILTIN_CVTUSI2SD32, UNKNOWN, (int) V2DF_FTYPE_V2DF_UINT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_expandv8df_mask, "__builtin_ia32_expanddf512_mask", IX86_BUILTIN_EXPANDPD512, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_expandv8df_maskz, "__builtin_ia32_expanddf512_maskz", IX86_BUILTIN_EXPANDPD512Z, UNKNOWN, (int) V8DF_FTYPE_V8DF_V8DF_UQI)
*************** BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION
*** 1687,1718 ****
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv2dfv2di2_mask, "__builtin_ia32_cvttpd2uqq128_mask", IX86_BUILTIN_CVTTPD2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V2DF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_notruncv4dfv4di2_mask, "__builtin_ia32_cvtpd2qq256_mask", IX86_BUILTIN_CVTPD2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4DF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_notruncv2dfv2di2_mask, "__builtin_ia32_cvtpd2qq128_mask", IX86_BUILTIN_CVTPD2QQ128, UNKNOWN, (int) V2DI_FTYPE_V2DF_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv4dfv4di2_mask, "__builtin_ia32_cvtpd2uqq256_mask", IX86_BUILTIN_CVTPD2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4DF_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv2dfv2di2_mask, "__builtin_ia32_cvtpd2uqq128_mask", IX86_BUILTIN_CVTPD2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V2DF_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv4dfv4si2_mask, "__builtin_ia32_cvtpd2udq256_mask", IX86_BUILTIN_CVTPD2UDQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_notruncv2dfv2si2_mask, "__builtin_ia32_cvtpd2udq128_mask", IX86_BUILTIN_CVTPD2UDQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2qq256_mask", IX86_BUILTIN_CVTTPS2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_fix_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2qq128_mask", IX86_BUILTIN_CVTTPS2QQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2uqq256_mask", IX86_BUILTIN_CVTTPS2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_fixuns_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2uqq128_mask", IX86_BUILTIN_CVTTPS2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2dq256_mask", IX86_BUILTIN_CVTTPS2DQ256_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4si2_mask, "__builtin_ia32_cvttps2dq128_mask", IX86_BUILTIN_CVTTPS2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2udq256_mask", IX86_BUILTIN_CVTTPS2UDQ256, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_truncv4sfv4si2_mask, "__builtin_ia32_cvttps2udq128_mask", IX86_BUILTIN_CVTTPS2UDQ128, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4dfv4si2_mask, "__builtin_ia32_cvttpd2dq256_mask", IX86_BUILTIN_CVTTPD2DQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvttpd2dq_mask, "__builtin_ia32_cvttpd2dq128_mask", IX86_BUILTIN_CVTTPD2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_truncv4dfv4si2_mask, "__builtin_ia32_cvttpd2udq256_mask", IX86_BUILTIN_CVTTPD2UDQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufix_truncv2dfv2si2_mask, "__builtin_ia32_cvttpd2udq128_mask", IX86_BUILTIN_CVTTPD2UDQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx_cvtpd2dq256_mask, "__builtin_ia32_cvtpd2dq256_mask", IX86_BUILTIN_CVTPD2DQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvtpd2dq_mask, "__builtin_ia32_cvtpd2dq128_mask", IX86_BUILTIN_CVTPD2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatv4siv4df2_mask, "__builtin_ia32_cvtdq2pd256_mask", IX86_BUILTIN_CVTDQ2PD256_MASK, UNKNOWN, (int) V4DF_FTYPE_V4SI_V4DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvtdq2pd_mask, "__builtin_ia32_cvtdq2pd128_mask", IX86_BUILTIN_CVTDQ2PD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V4SI_V2DF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufloatv4siv4df2_mask, "__builtin_ia32_cvtudq2pd256_mask", IX86_BUILTIN_CVTUDQ2PD256_MASK, UNKNOWN, (int) V4DF_FTYPE_V4SI_V4DF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufloatv2siv2df2_mask, "__builtin_ia32_cvtudq2pd128_mask", IX86_BUILTIN_CVTUDQ2PD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V4SI_V2DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatv8siv8sf2_mask, "__builtin_ia32_cvtdq2ps256_mask", IX86_BUILTIN_CVTDQ2PS256_MASK, UNKNOWN, (int) V8SF_FTYPE_V8SI_V8SF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatv4siv4sf2_mask, "__builtin_ia32_cvtdq2ps128_mask", IX86_BUILTIN_CVTDQ2PS128_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SI_V4SF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufloatv8siv8sf2_mask, "__builtin_ia32_cvtudq2ps256_mask", IX86_BUILTIN_CVTUDQ2PS256_MASK, UNKNOWN, (int) V8SF_FTYPE_V8SI_V8SF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_ufloatv4siv4sf2_mask, "__builtin_ia32_cvtudq2ps128_mask", IX86_BUILTIN_CVTUDQ2PS128_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SI_V4SF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx_cvtps2pd256_mask, "__builtin_ia32_cvtps2pd256_mask", IX86_BUILTIN_CVTPS2PD256_MASK, UNKNOWN, (int) V4DF_FTYPE_V4SF_V4DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvtps2pd_mask, "__builtin_ia32_cvtps2pd128_mask", IX86_BUILTIN_CVTPS2PD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V4SF_V2DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_vec_dupv32qi_mask, "__builtin_ia32_pbroadcastb256_mask", IX86_BUILTIN_PBROADCASTB256_MASK, UNKNOWN, (int) V32QI_FTYPE_V16QI_V32QI_USI)
--- 1719,1750 ----
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv2dfv2di2_mask, "__builtin_ia32_cvttpd2uqq128_mask", IX86_BUILTIN_CVTTPD2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V2DF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_notruncv4dfv4di2_mask, "__builtin_ia32_cvtpd2qq256_mask", IX86_BUILTIN_CVTPD2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4DF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_notruncv2dfv2di2_mask, "__builtin_ia32_cvtpd2qq128_mask", IX86_BUILTIN_CVTPD2QQ128, UNKNOWN, (int) V2DI_FTYPE_V2DF_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_notruncv4dfv4di2_mask, "__builtin_ia32_cvtpd2uqq256_mask", IX86_BUILTIN_CVTPD2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4DF_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_notruncv2dfv2di2_mask, "__builtin_ia32_cvtpd2uqq128_mask", IX86_BUILTIN_CVTPD2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V2DF_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_notruncv4dfv4si2_mask, "__builtin_ia32_cvtpd2udq256_mask", IX86_BUILTIN_CVTPD2UDQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_notruncv2dfv2si2_mask, "__builtin_ia32_cvtpd2udq128_mask", IX86_BUILTIN_CVTPD2UDQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2qq256_mask", IX86_BUILTIN_CVTTPS2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_fix_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2qq128_mask", IX86_BUILTIN_CVTTPS2QQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv4sfv4di2_mask, "__builtin_ia32_cvttps2uqq256_mask", IX86_BUILTIN_CVTTPS2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_fixuns_truncv2sfv2di2_mask, "__builtin_ia32_cvttps2uqq128_mask", IX86_BUILTIN_CVTTPS2UQQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2dq256_mask", IX86_BUILTIN_CVTTPS2DQ256_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4sfv4si2_mask, "__builtin_ia32_cvttps2dq128_mask", IX86_BUILTIN_CVTTPS2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv8sfv8si2_mask, "__builtin_ia32_cvttps2udq256_mask", IX86_BUILTIN_CVTTPS2UDQ256, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv4sfv4si2_mask, "__builtin_ia32_cvttps2udq128_mask", IX86_BUILTIN_CVTTPS2UDQ128, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fix_truncv4dfv4si2_mask, "__builtin_ia32_cvttpd2dq256_mask", IX86_BUILTIN_CVTTPD2DQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvttpd2dq_mask, "__builtin_ia32_cvttpd2dq128_mask", IX86_BUILTIN_CVTTPD2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv4dfv4si2_mask, "__builtin_ia32_cvttpd2udq256_mask", IX86_BUILTIN_CVTTPD2UDQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_fixuns_truncv2dfv2si2_mask, "__builtin_ia32_cvttpd2udq128_mask", IX86_BUILTIN_CVTTPD2UDQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx_cvtpd2dq256_mask, "__builtin_ia32_cvtpd2dq256_mask", IX86_BUILTIN_CVTPD2DQ256_MASK, UNKNOWN, (int) V4SI_FTYPE_V4DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvtpd2dq_mask, "__builtin_ia32_cvtpd2dq128_mask", IX86_BUILTIN_CVTPD2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V2DF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatv4siv4df2_mask, "__builtin_ia32_cvtdq2pd256_mask", IX86_BUILTIN_CVTDQ2PD256_MASK, UNKNOWN, (int) V4DF_FTYPE_V4SI_V4DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvtdq2pd_mask, "__builtin_ia32_cvtdq2pd128_mask", IX86_BUILTIN_CVTDQ2PD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V4SI_V2DF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatunsv4siv4df2_mask, "__builtin_ia32_cvtudq2pd256_mask", IX86_BUILTIN_CVTUDQ2PD256_MASK, UNKNOWN, (int) V4DF_FTYPE_V4SI_V4DF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatunsv2siv2df2_mask, "__builtin_ia32_cvtudq2pd128_mask", IX86_BUILTIN_CVTUDQ2PD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V4SI_V2DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatv8siv8sf2_mask, "__builtin_ia32_cvtdq2ps256_mask", IX86_BUILTIN_CVTDQ2PS256_MASK, UNKNOWN, (int) V8SF_FTYPE_V8SI_V8SF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatv4siv4sf2_mask, "__builtin_ia32_cvtdq2ps128_mask", IX86_BUILTIN_CVTDQ2PS128_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SI_V4SF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatunsv8siv8sf2_mask, "__builtin_ia32_cvtudq2ps256_mask", IX86_BUILTIN_CVTUDQ2PS256_MASK, UNKNOWN, (int) V8SF_FTYPE_V8SI_V8SF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_floatunsv4siv4sf2_mask, "__builtin_ia32_cvtudq2ps128_mask", IX86_BUILTIN_CVTUDQ2PS128_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SI_V4SF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx_cvtps2pd256_mask, "__builtin_ia32_cvtps2pd256_mask", IX86_BUILTIN_CVTPS2PD256_MASK, UNKNOWN, (int) V4DF_FTYPE_V4SF_V4DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_cvtps2pd_mask, "__builtin_ia32_cvtps2pd128_mask", IX86_BUILTIN_CVTPS2PD128_MASK, UNKNOWN, (int) V2DF_FTYPE_V4SF_V2DF_UQI)
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_vec_dupv32qi_mask, "__builtin_ia32_pbroadcastb256_mask", IX86_BUILTIN_PBROADCASTB256_MASK, UNKNOWN, (int) V32QI_FTYPE_V16QI_V32QI_USI)
*************** BDESC (OPTION_MASK_ISA_AVX512BW | OPTION
*** 2040,2047 ****
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_lshrvv8hi_mask, "__builtin_ia32_psrlv8hi_mask", IX86_BUILTIN_PSRLVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx_fix_notruncv8sfv8si_mask, "__builtin_ia32_cvtps2dq256_mask", IX86_BUILTIN_CVTPS2DQ256_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_fix_notruncv4sfv4si_mask, "__builtin_ia32_cvtps2dq128_mask", IX86_BUILTIN_CVTPS2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ufix_notruncv8sfv8si_mask, "__builtin_ia32_cvtps2udq256_mask", IX86_BUILTIN_CVTPS2UDQ256, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_ufix_notruncv4sfv4si_mask, "__builtin_ia32_cvtps2udq128_mask", IX86_BUILTIN_CVTPS2UDQ128, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_cvtps2qqv4di_mask, "__builtin_ia32_cvtps2qq256_mask", IX86_BUILTIN_CVTPS2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_cvtps2qqv2di_mask, "__builtin_ia32_cvtps2qq128_mask", IX86_BUILTIN_CVTPS2QQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_cvtps2uqqv4di_mask, "__builtin_ia32_cvtps2uqq256_mask", IX86_BUILTIN_CVTPS2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
--- 2072,2079 ----
  BDESC (OPTION_MASK_ISA_AVX512BW | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_lshrvv8hi_mask, "__builtin_ia32_psrlv8hi_mask", IX86_BUILTIN_PSRLVV8HI, UNKNOWN, (int) V8HI_FTYPE_V8HI_V8HI_V8HI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx_fix_notruncv8sfv8si_mask, "__builtin_ia32_cvtps2dq256_mask", IX86_BUILTIN_CVTPS2DQ256_MASK, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_sse2_fix_notruncv4sfv4si_mask, "__builtin_ia32_cvtps2dq128_mask", IX86_BUILTIN_CVTPS2DQ128_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_fixuns_notruncv8sfv8si_mask, "__builtin_ia32_cvtps2udq256_mask", IX86_BUILTIN_CVTPS2UDQ256, UNKNOWN, (int) V8SI_FTYPE_V8SF_V8SI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512vl_fixuns_notruncv4sfv4si_mask, "__builtin_ia32_cvtps2udq128_mask", IX86_BUILTIN_CVTPS2UDQ128, UNKNOWN, (int) V4SI_FTYPE_V4SF_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_cvtps2qqv4di_mask, "__builtin_ia32_cvtps2qq256_mask", IX86_BUILTIN_CVTPS2QQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_cvtps2qqv2di_mask, "__builtin_ia32_cvtps2qq128_mask", IX86_BUILTIN_CVTPS2QQ128, UNKNOWN, (int) V2DI_FTYPE_V4SF_V2DI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512DQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_avx512dq_cvtps2uqqv4di_mask, "__builtin_ia32_cvtps2uqq256_mask", IX86_BUILTIN_CVTPS2UQQ256, UNKNOWN, (int) V4DI_FTYPE_V4SF_V4DI_UQI)
*************** BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE
*** 2486,2503 ****
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_ucmpv32hi3_mask, "__builtin_ia32_ucmpw512_mask", IX86_BUILTIN_UCMPW512, UNKNOWN, (int) USI_FTYPE_V32HI_V32HI_INT_USI)
  
  /* AVX512IFMA */
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpamdd52luqv8di_mask, "__builtin_ia32_vpmadd52luq512_mask", IX86_BUILTIN_VPMADD52LUQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpamdd52luqv8di_maskz, "__builtin_ia32_vpmadd52luq512_maskz", IX86_BUILTIN_VPMADD52LUQ512_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpamdd52huqv8di_mask, "__builtin_ia32_vpmadd52huq512_mask", IX86_BUILTIN_VPMADD52HUQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpamdd52huqv8di_maskz, "__builtin_ia32_vpmadd52huq512_maskz", IX86_BUILTIN_VPMADD52HUQ512_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52luqv4di_mask, "__builtin_ia32_vpmadd52luq256_mask", IX86_BUILTIN_VPMADD52LUQ256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52luqv4di_maskz, "__builtin_ia32_vpmadd52luq256_maskz", IX86_BUILTIN_VPMADD52LUQ256_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52huqv4di_mask, "__builtin_ia32_vpmadd52huq256_mask", IX86_BUILTIN_VPMADD52HUQ256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52huqv4di_maskz, "__builtin_ia32_vpmadd52huq256_maskz", IX86_BUILTIN_VPMADD52HUQ256_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52luqv2di_mask, "__builtin_ia32_vpmadd52luq128_mask", IX86_BUILTIN_VPMADD52LUQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52luqv2di_maskz, "__builtin_ia32_vpmadd52luq128_maskz", IX86_BUILTIN_VPMADD52LUQ128_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52huqv2di_mask, "__builtin_ia32_vpmadd52huq128_mask", IX86_BUILTIN_VPMADD52HUQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpamdd52huqv2di_maskz, "__builtin_ia32_vpmadd52huq128_maskz", IX86_BUILTIN_VPMADD52HUQ128_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
  
  /* AVX512VBMI */
  BDESC (OPTION_MASK_ISA_AVX512VBMI, 0, CODE_FOR_vpmultishiftqbv64qi_mask, "__builtin_ia32_vpmultishiftqb512_mask", IX86_BUILTIN_VPMULTISHIFTQB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_V64QI_UDI)
--- 2518,2539 ----
  BDESC (OPTION_MASK_ISA_AVX512BW, 0, CODE_FOR_avx512bw_ucmpv32hi3_mask, "__builtin_ia32_ucmpw512_mask", IX86_BUILTIN_UCMPW512, UNKNOWN, (int) USI_FTYPE_V32HI_V32HI_INT_USI)
  
  /* AVX512IFMA */
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpmadd52luqv8di_mask, "__builtin_ia32_vpmadd52luq512_mask", IX86_BUILTIN_VPMADD52LUQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpmadd52luqv8di_maskz, "__builtin_ia32_vpmadd52luq512_maskz", IX86_BUILTIN_VPMADD52LUQ512_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpmadd52huqv8di_mask, "__builtin_ia32_vpmadd52huq512_mask", IX86_BUILTIN_VPMADD52HUQ512, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA, 0, CODE_FOR_vpmadd52huqv8di_maskz, "__builtin_ia32_vpmadd52huq512_maskz", IX86_BUILTIN_VPMADD52HUQ512_MASKZ, UNKNOWN, (int) V8DI_FTYPE_V8DI_V8DI_V8DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52luqv4di_mask, "__builtin_ia32_vpmadd52luq256_mask", IX86_BUILTIN_VPMADD52LUQ256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52luqv4di_maskz, "__builtin_ia32_vpmadd52luq256_maskz", IX86_BUILTIN_VPMADD52LUQ256_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52huqv4di_mask, "__builtin_ia32_vpmadd52huq256_mask", IX86_BUILTIN_VPMADD52HUQ256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52huqv4di_maskz, "__builtin_ia32_vpmadd52huq256_maskz", IX86_BUILTIN_VPMADD52HUQ256_MASKZ, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52luqv2di_mask, "__builtin_ia32_vpmadd52luq128_mask", IX86_BUILTIN_VPMADD52LUQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52luqv2di_maskz, "__builtin_ia32_vpmadd52luq128_maskz", IX86_BUILTIN_VPMADD52LUQ128_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52huqv2di_mask, "__builtin_ia32_vpmadd52huq128_mask", IX86_BUILTIN_VPMADD52HUQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpmadd52huqv2di_maskz, "__builtin_ia32_vpmadd52huq128_maskz", IX86_BUILTIN_VPMADD52HUQ128_MASKZ, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI_UQI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXIFMA, CODE_FOR_vpmadd52luqv4di, "__builtin_ia32_vpmadd52luq256", IX86_BUINTIN_VPMADD52LUQ256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXIFMA, CODE_FOR_vpmadd52huqv4di, "__builtin_ia32_vpmadd52huq256", IX86_BUINTIN_VPMADD52HUQ256, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_V4DI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXIFMA, CODE_FOR_vpmadd52luqv2di, "__builtin_ia32_vpmadd52luq128", IX86_BUINTIN_VPMADD52LUQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)
! BDESC (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXIFMA, CODE_FOR_vpmadd52huqv2di, "__builtin_ia32_vpmadd52huq128", IX86_BUINTIN_VPMADD52HUQ128, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_V2DI)
  
  /* AVX512VBMI */
  BDESC (OPTION_MASK_ISA_AVX512VBMI, 0, CODE_FOR_vpmultishiftqbv64qi_mask, "__builtin_ia32_vpmultishiftqb512_mask", IX86_BUILTIN_VPMULTISHIFTQB512, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI_V64QI_UDI)
*************** BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTI
*** 2690,2695 ****
--- 2726,2745 ----
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si_mask, "__builtin_ia32_vpdpwssds_v4si_mask", IX86_BUILTIN_VPDPWSSDSV4SI_MASK, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  BDESC (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpdpwssds_v4si_maskz, "__builtin_ia32_vpdpwssds_v4si_maskz", IX86_BUILTIN_VPDPWSSDSV4SI_MASKZ, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI_UQI)
  
+ /* AVXVNNIINT8 */
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbssd_v8si, "__builtin_ia32_vpdpbssd256", IX86_BUILTIN_VPDPBSSDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbssds_v8si, "__builtin_ia32_vpdpbssds256", IX86_BUILTIN_VPDPBSSDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbsud_v8si, "__builtin_ia32_vpdpbsud256", IX86_BUILTIN_VPDPBSUDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbsuds_v8si, "__builtin_ia32_vpdpbsuds256", IX86_BUILTIN_VPDPBSUDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbuud_v8si, "__builtin_ia32_vpdpbuud256", IX86_BUILTIN_VPDPBUUDV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbuuds_v8si, "__builtin_ia32_vpdpbuuds256", IX86_BUILTIN_VPDPBUUDSV8SI, UNKNOWN, (int) V8SI_FTYPE_V8SI_V8SI_V8SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbssd_v4si, "__builtin_ia32_vpdpbssd128", IX86_BUILTIN_VPDPBSSDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbssds_v4si, "__builtin_ia32_vpdpbssds128", IX86_BUILTIN_VPDPBSSDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbsud_v4si, "__builtin_ia32_vpdpbsud128", IX86_BUILTIN_VPDPBSUDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbsuds_v4si, "__builtin_ia32_vpdpbsuds128", IX86_BUILTIN_VPDPBSUDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbuud_v4si, "__builtin_ia32_vpdpbuud128", IX86_BUILTIN_VPDPBUUDV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+ BDESC (0, OPTION_MASK_ISA2_AVXVNNIINT8, CODE_FOR_vpdpbuuds_v4si, "__builtin_ia32_vpdpbuuds128", IX86_BUILTIN_VPDPBUUDSV4SI, UNKNOWN, (int) V4SI_FTYPE_V4SI_V4SI_V4SI)
+ 
  /* VPCLMULQDQ */
  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX512VL, 0, CODE_FOR_vpclmulqdq_v2di, "__builtin_ia32_vpclmulqdq_v2di", IX86_BUILTIN_VPCLMULQDQ2, UNKNOWN, (int) V2DI_FTYPE_V2DI_V2DI_INT)
  BDESC (OPTION_MASK_ISA_VPCLMULQDQ | OPTION_MASK_ISA_AVX, 0, CODE_FOR_vpclmulqdq_v4di, "__builtin_ia32_vpclmulqdq_v4di", IX86_BUILTIN_VPCLMULQDQ4, UNKNOWN, (int) V4DI_FTYPE_V4DI_V4DI_INT)
*************** BDESC (0, OPTION_MASK_ISA2_AVX5124VNNIW,
*** 2747,2793 ****
  BDESC (0, OPTION_MASK_ISA2_RDPID, CODE_FOR_rdpid, "__builtin_ia32_rdpid", IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)
  
  /* VAES.  */
! BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdec_v16qi, "__builtin_ia32_vaesdec_v16qi", IX86_BUILTIN_VAESDEC16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdec_v32qi, "__builtin_ia32_vaesdec_v32qi", IX86_BUILTIN_VAESDEC32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdec_v64qi, "__builtin_ia32_vaesdec_v64qi", IX86_BUILTIN_VAESDEC64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
! BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdeclast_v16qi, "__builtin_ia32_vaesdeclast_v16qi", IX86_BUILTIN_VAESDECLAST16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdeclast_v32qi, "__builtin_ia32_vaesdeclast_v32qi", IX86_BUILTIN_VAESDECLAST32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdeclast_v64qi, "__builtin_ia32_vaesdeclast_v64qi", IX86_BUILTIN_VAESDECLAST64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
! BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenc_v16qi, "__builtin_ia32_vaesenc_v16qi", IX86_BUILTIN_VAESENC16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenc_v32qi, "__builtin_ia32_vaesenc_v32qi", IX86_BUILTIN_VAESENC32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenc_v64qi, "__builtin_ia32_vaesenc_v64qi", IX86_BUILTIN_VAESENC64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
! BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenclast_v16qi, "__builtin_ia32_vaesenclast_v16qi", IX86_BUILTIN_VAESENCLAST16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenclast_v32qi, "__builtin_ia32_vaesenclast_v32qi", IX86_BUILTIN_VAESENCLAST32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenclast_v64qi, "__builtin_ia32_vaesenclast_v64qi", IX86_BUILTIN_VAESENCLAST64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
  
  /* BF16 */
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v32hi, "__builtin_ia32_cvtne2ps2bf16_v32hi", IX86_BUILTIN_CVTNE2PS2HI16_V32HI, UNKNOWN, (int) V32HI_FTYPE_V16SF_V16SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v32hi_mask, "__builtin_ia32_cvtne2ps2bf16_v32hi_mask", IX86_BUILTIN_CVTNE2PS2HI16_V32HI_MASK, UNKNOWN, (int) V32HI_FTYPE_V16SF_V16SF_V32HI_USI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v32hi_maskz, "__builtin_ia32_cvtne2ps2bf16_v32hi_maskz", IX86_BUILTIN_CVTNE2PS2HI16_V32HI_MASKZ, UNKNOWN, (int) V32HI_FTYPE_V16SF_V16SF_USI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v16hi, "__builtin_ia32_cvtne2ps2bf16_v16hi", IX86_BUILTIN_CVTNE2PS2HI16_V16HI, UNKNOWN, (int) V16HI_FTYPE_V8SF_V8SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v16hi_mask, "__builtin_ia32_cvtne2ps2bf16_v16hi_mask", IX86_BUILTIN_CVTNE2PS2HI16_V16HI_MASK, UNKNOWN, (int) V16HI_FTYPE_V8SF_V8SF_V16HI_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v16hi_maskz, "__builtin_ia32_cvtne2ps2bf16_v16hi_maskz", IX86_BUILTIN_CVTNE2PS2HI16_V16HI_MASKZ, UNKNOWN, (int) V16HI_FTYPE_V8SF_V8SF_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v8hi, "__builtin_ia32_cvtne2ps2bf16_v8hi", IX86_BUILTIN_CVTNE2PS2HI16_V8HI, UNKNOWN, (int) V8HI_FTYPE_V4SF_V4SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v8hi_mask, "__builtin_ia32_cvtne2ps2bf16_v8hi_mask", IX86_BUILTIN_CVTNE2PS2HI16_V8HI_MASK, UNKNOWN, (int) V8HI_FTYPE_V4SF_V4SF_V8HI_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v8hi_maskz, "__builtin_ia32_cvtne2ps2bf16_v8hi_maskz", IX86_BUILTIN_CVTNE2PS2HI16_V8HI_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V4SF_V4SF_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v16sf, "__builtin_ia32_cvtneps2bf16_v16sf", IX86_BUILTIN_CVTNEPS2HI16_V16SF, UNKNOWN, (int) V16HI_FTYPE_V16SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v16sf_mask, "__builtin_ia32_cvtneps2bf16_v16sf_mask", IX86_BUILTIN_CVTNEPS2HI16_V16SF_MASK, UNKNOWN, (int) V16HI_FTYPE_V16SF_V16HI_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v16sf_maskz, "__builtin_ia32_cvtneps2bf16_v16sf_maskz", IX86_BUILTIN_CVTNE2PS2HI16_V16SF_MASKZ, UNKNOWN, (int) V16HI_FTYPE_V16SF_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v8sf, "__builtin_ia32_cvtneps2bf16_v8sf", IX86_BUILTIN_CVTNEPS2HI16_V8SF, UNKNOWN, (int) V8HI_FTYPE_V8SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v8sf_mask, "__builtin_ia32_cvtneps2bf16_v8sf_mask", IX86_BUILTIN_CVTNEPS2HI16_V8SF_MASK, UNKNOWN, (int) V8HI_FTYPE_V8SF_V8HI_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v8sf_maskz, "__builtin_ia32_cvtneps2bf16_v8sf_maskz", IX86_BUILTIN_CVTNE2PS2HI16_V8SF_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V8SF_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v4sf, "__builtin_ia32_cvtneps2bf16_v4sf", IX86_BUILTIN_CVTNEPS2HI16_V4SF, UNKNOWN, (int) V8HI_FTYPE_V4SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v4sf_mask, "__builtin_ia32_cvtneps2bf16_v4sf_mask", IX86_BUILTIN_CVTNEPS2HI16_V4SF_MASK, UNKNOWN, (int) V8HI_FTYPE_V4SF_V8HI_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v4sf_maskz, "__builtin_ia32_cvtneps2bf16_v4sf_maskz", IX86_BUILTIN_CVTNE2PS2HI16_V4SF_MASKZ, UNKNOWN, (int) V8HI_FTYPE_V4SF_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v16sf, "__builtin_ia32_dpbf16ps_v16sf", IX86_BUILTIN_DPHI16PS_V16SF, UNKNOWN, (int) V16SF_FTYPE_V16SF_V32HI_V32HI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v16sf_mask, "__builtin_ia32_dpbf16ps_v16sf_mask", IX86_BUILTIN_DPHI16PS_V16SF_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V32HI_V32HI_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v16sf_maskz, "__builtin_ia32_dpbf16ps_v16sf_maskz", IX86_BUILTIN_DPHI16PS_V16SF_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V32HI_V32HI_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v8sf, "__builtin_ia32_dpbf16ps_v8sf", IX86_BUILTIN_DPHI16PS_V8SF, UNKNOWN, (int) V8SF_FTYPE_V8SF_V16HI_V16HI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v8sf_mask, "__builtin_ia32_dpbf16ps_v8sf_mask", IX86_BUILTIN_DPHI16PS_V8SF_MASK, UNKNOWN, (int) V8SF_FTYPE_V8SF_V16HI_V16HI_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v8sf_maskz, "__builtin_ia32_dpbf16ps_v8sf_maskz", IX86_BUILTIN_DPHI16PS_V8SF_MASKZ, UNKNOWN, (int) V8SF_FTYPE_V8SF_V16HI_V16HI_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v4sf, "__builtin_ia32_dpbf16ps_v4sf", IX86_BUILTIN_DPHI16PS_V4SF, UNKNOWN, (int) V4SF_FTYPE_V4SF_V8HI_V8HI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v4sf_mask, "__builtin_ia32_dpbf16ps_v4sf_mask", IX86_BUILTIN_DPHI16PS_V4SF_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SF_V8HI_V8HI_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v4sf_maskz, "__builtin_ia32_dpbf16ps_v4sf_maskz", IX86_BUILTIN_DPHI16PS_V4SF_MASKZ, UNKNOWN, (int) V4SF_FTYPE_V4SF_V8HI_V8HI_UQI)
  
  /* AVX512FP16.  */
  BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512FP16, CODE_FOR_addv8hf3_mask, "__builtin_ia32_addph128_mask", IX86_BUILTIN_ADDPH128_MASK, UNKNOWN, (int) V8HF_FTYPE_V8HF_V8HF_V8HF_UQI)
--- 2797,2845 ----
  BDESC (0, OPTION_MASK_ISA2_RDPID, CODE_FOR_rdpid, "__builtin_ia32_rdpid", IX86_BUILTIN_RDPID, UNKNOWN, (int) UNSIGNED_FTYPE_VOID)
  
  /* VAES.  */
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdec_v16qi, "__builtin_ia32_vaesdec_v16qi", IX86_BUILTIN_VAESDEC16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdec_v32qi, "__builtin_ia32_vaesdec_v32qi", IX86_BUILTIN_VAESDEC32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdec_v64qi, "__builtin_ia32_vaesdec_v64qi", IX86_BUILTIN_VAESDEC64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdeclast_v16qi, "__builtin_ia32_vaesdeclast_v16qi", IX86_BUILTIN_VAESDECLAST16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdeclast_v32qi, "__builtin_ia32_vaesdeclast_v32qi", IX86_BUILTIN_VAESDECLAST32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesdeclast_v64qi, "__builtin_ia32_vaesdeclast_v64qi", IX86_BUILTIN_VAESDECLAST64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenc_v16qi, "__builtin_ia32_vaesenc_v16qi", IX86_BUILTIN_VAESENC16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenc_v32qi, "__builtin_ia32_vaesenc_v32qi", IX86_BUILTIN_VAESENC32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenc_v64qi, "__builtin_ia32_vaesenc_v64qi", IX86_BUILTIN_VAESENC64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenclast_v16qi, "__builtin_ia32_vaesenclast_v16qi", IX86_BUILTIN_VAESENCLAST16, UNKNOWN, (int) V16QI_FTYPE_V16QI_V16QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenclast_v32qi, "__builtin_ia32_vaesenclast_v32qi", IX86_BUILTIN_VAESENCLAST32, UNKNOWN, (int) V32QI_FTYPE_V32QI_V32QI)
  BDESC (0, OPTION_MASK_ISA2_VAES, CODE_FOR_vaesenclast_v64qi, "__builtin_ia32_vaesenclast_v64qi", IX86_BUILTIN_VAESENCLAST64, UNKNOWN, (int) V64QI_FTYPE_V64QI_V64QI)
  
  /* BF16 */
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v32bf, "__builtin_ia32_cvtne2ps2bf16_v32bf", IX86_BUILTIN_CVTNE2PS2BF16_V32BF, UNKNOWN, (int) V32BF_FTYPE_V16SF_V16SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v32bf_mask, "__builtin_ia32_cvtne2ps2bf16_v32bf_mask", IX86_BUILTIN_CVTNE2PS2BF16_V32BF_MASK, UNKNOWN, (int) V32BF_FTYPE_V16SF_V16SF_V32BF_USI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v32bf_maskz, "__builtin_ia32_cvtne2ps2bf16_v32bf_maskz", IX86_BUILTIN_CVTNE2PS2BF16_V32BF_MASKZ, UNKNOWN, (int) V32BF_FTYPE_V16SF_V16SF_USI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v16bf, "__builtin_ia32_cvtne2ps2bf16_v16bf", IX86_BUILTIN_CVTNE2PS2BF16_V16BF, UNKNOWN, (int) V16BF_FTYPE_V8SF_V8SF)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v16bf_mask, "__builtin_ia32_cvtne2ps2bf16_v16bf_mask", IX86_BUILTIN_CVTNE2PS2BF16_V16BF_MASK, UNKNOWN, (int) V16BF_FTYPE_V8SF_V8SF_V16BF_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v16bf_maskz, "__builtin_ia32_cvtne2ps2bf16_v16bf_maskz", IX86_BUILTIN_CVTNE2PS2BF16_V16BF_MASKZ, UNKNOWN, (int) V16BF_FTYPE_V8SF_V8SF_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v8bf, "__builtin_ia32_cvtne2ps2bf16_v8bf", IX86_BUILTIN_CVTNE2PS2BF16_V8BF, UNKNOWN, (int) V8BF_FTYPE_V4SF_V4SF)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v8bf_mask, "__builtin_ia32_cvtne2ps2bf16_v8bf_mask", IX86_BUILTIN_CVTNE2PS2BF16_V8BF_MASK, UNKNOWN, (int) V8BF_FTYPE_V4SF_V4SF_V8BF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtne2ps2bf16_v8bf_maskz, "__builtin_ia32_cvtne2ps2bf16_v8bf_maskz", IX86_BUILTIN_CVTNE2PS2BF16_V8BF_MASKZ, UNKNOWN, (int) V8BF_FTYPE_V4SF_V4SF_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v16sf, "__builtin_ia32_cvtneps2bf16_v16sf", IX86_BUILTIN_CVTNEPS2BF16_V16SF, UNKNOWN, (int) V16BF_FTYPE_V16SF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v16sf_mask, "__builtin_ia32_cvtneps2bf16_v16sf_mask", IX86_BUILTIN_CVTNEPS2BF16_V16SF_MASK, UNKNOWN, (int) V16BF_FTYPE_V16SF_V16BF_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v16sf_maskz, "__builtin_ia32_cvtneps2bf16_v16sf_maskz", IX86_BUILTIN_CVTNE2PS2BF16_V16SF_MASKZ, UNKNOWN, (int) V16BF_FTYPE_V16SF_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXNECONVERT | OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_vcvtneps2bf16_v8sf, "__builtin_ia32_cvtneps2bf16_v8sf", IX86_BUILTIN_CVTNEPS2BF16_V8SF, UNKNOWN, (int) V8BF_FTYPE_V8SF)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v8sf_mask, "__builtin_ia32_cvtneps2bf16_v8sf_mask", IX86_BUILTIN_CVTNEPS2BF16_V8SF_MASK, UNKNOWN, (int) V8BF_FTYPE_V8SF_V8BF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v8sf_maskz, "__builtin_ia32_cvtneps2bf16_v8sf_maskz", IX86_BUILTIN_CVTNE2PS2BF16_V8SF_MASKZ, UNKNOWN, (int) V8BF_FTYPE_V8SF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVXNECONVERT | OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_vcvtneps2bf16_v4sf, "__builtin_ia32_cvtneps2bf16_v4sf", IX86_BUILTIN_CVTNEPS2BF16_V4SF, UNKNOWN, (int) V8BF_FTYPE_V4SF)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v4sf_mask, "__builtin_ia32_cvtneps2bf16_v4sf_mask", IX86_BUILTIN_CVTNEPS2BF16_V4SF_MASK, UNKNOWN, (int) V8BF_FTYPE_V4SF_V8BF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_cvtneps2bf16_v4sf_maskz, "__builtin_ia32_cvtneps2bf16_v4sf_maskz", IX86_BUILTIN_CVTNE2PS2BF16_V4SF_MASKZ, UNKNOWN, (int) V8BF_FTYPE_V4SF_UQI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v16sf, "__builtin_ia32_dpbf16ps_v16sf", IX86_BUILTIN_DPBF16PS_V16SF, UNKNOWN, (int) V16SF_FTYPE_V16SF_V32BF_V32BF)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v16sf_mask, "__builtin_ia32_dpbf16ps_v16sf_mask", IX86_BUILTIN_DPBF16PS_V16SF_MASK, UNKNOWN, (int) V16SF_FTYPE_V16SF_V32BF_V32BF_UHI)
! BDESC (0, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v16sf_maskz, "__builtin_ia32_dpbf16ps_v16sf_maskz", IX86_BUILTIN_DPBF16PS_V16SF_MASKZ, UNKNOWN, (int) V16SF_FTYPE_V16SF_V32BF_V32BF_UHI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v8sf, "__builtin_ia32_dpbf16ps_v8sf", IX86_BUILTIN_DPBF16PS_V8SF, UNKNOWN, (int) V8SF_FTYPE_V8SF_V16BF_V16BF)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v8sf_mask, "__builtin_ia32_dpbf16ps_v8sf_mask", IX86_BUILTIN_DPBF16PS_V8SF_MASK, UNKNOWN, (int) V8SF_FTYPE_V8SF_V16BF_V16BF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v8sf_maskz, "__builtin_ia32_dpbf16ps_v8sf_maskz", IX86_BUILTIN_DPBF16PS_V8SF_MASKZ, UNKNOWN, (int) V8SF_FTYPE_V8SF_V16BF_V16BF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v4sf, "__builtin_ia32_dpbf16ps_v4sf", IX86_BUILTIN_DPBF16PS_V4SF, UNKNOWN, (int) V4SF_FTYPE_V4SF_V8BF_V8BF)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v4sf_mask, "__builtin_ia32_dpbf16ps_v4sf_mask", IX86_BUILTIN_DPBF16PS_V4SF_MASK, UNKNOWN, (int) V4SF_FTYPE_V4SF_V8BF_V8BF_UQI)
! BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512BF16, CODE_FOR_avx512f_dpbf16ps_v4sf_maskz, "__builtin_ia32_dpbf16ps_v4sf_maskz", IX86_BUILTIN_DPBF16PS_V4SF_MASKZ, UNKNOWN, (int) V4SF_FTYPE_V4SF_V8BF_V8BF_UQI)
! BDESC (OPTION_MASK_ISA_SSE2, 0, CODE_FOR_extendbfsf2_1, "__builtin_ia32_cvtbf2sf", IX86_BUILTIN_CVTBF2SF, UNKNOWN, (int) FLOAT_FTYPE_BFLOAT16)
! 
  
  /* AVX512FP16.  */
  BDESC (OPTION_MASK_ISA_AVX512VL, OPTION_MASK_ISA2_AVX512FP16, CODE_FOR_addv8hf3_mask, "__builtin_ia32_addph128_mask", IX86_BUILTIN_ADDPH128_MASK, UNKNOWN, (int) V8HF_FTYPE_V8HF_V8HF_V8HF_UQI)
*************** BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_
*** 2967,2977 ****
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_floatv16siv16sf2_mask_round, "__builtin_ia32_cvtdq2ps512_mask", IX86_BUILTIN_CVTDQ2PS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtpd2dq512_mask_round, "__builtin_ia32_cvtpd2dq512_mask", IX86_BUILTIN_CVTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtpd2ps512_mask_round,  "__builtin_ia32_cvtpd2ps512_mask", IX86_BUILTIN_CVTPD2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DF_V8SF_QI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_ufix_notruncv8dfv8si2_mask_round, "__builtin_ia32_cvtpd2udq512_mask", IX86_BUILTIN_CVTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_vcvtph2ps512_mask_round,  "__builtin_ia32_vcvtph2ps512_mask", IX86_BUILTIN_CVTPH2PS512, UNKNOWN, (int) V16SF_FTYPE_V16HI_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_fix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2dq512_mask", IX86_BUILTIN_CVTPS2DQ512_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtps2pd512_mask_round, "__builtin_ia32_cvtps2pd512_mask", IX86_BUILTIN_CVTPS2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SF_V8DF_QI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_ufix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2udq512_mask", IX86_BUILTIN_CVTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtsd2ss_round, "__builtin_ia32_cvtsd2ss_round", IX86_BUILTIN_CVTSD2SS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtsd2ss_mask_round, "__builtin_ia32_cvtsd2ss_mask_round", IX86_BUILTIN_CVTSD2SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_sse2_cvtsi2sdq_round, "__builtin_ia32_cvtsi2sd64", IX86_BUILTIN_CVTSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_INT64_INT)
--- 3019,3029 ----
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_floatv16siv16sf2_mask_round, "__builtin_ia32_cvtdq2ps512_mask", IX86_BUILTIN_CVTDQ2PS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtpd2dq512_mask_round, "__builtin_ia32_cvtpd2dq512_mask", IX86_BUILTIN_CVTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtpd2ps512_mask_round,  "__builtin_ia32_cvtpd2ps512_mask", IX86_BUILTIN_CVTPD2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DF_V8SF_QI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fixuns_notruncv8dfv8si2_mask_round, "__builtin_ia32_cvtpd2udq512_mask", IX86_BUILTIN_CVTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_vcvtph2ps512_mask_round,  "__builtin_ia32_vcvtph2ps512_mask", IX86_BUILTIN_CVTPH2PS512, UNKNOWN, (int) V16SF_FTYPE_V16HI_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_fix_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2dq512_mask", IX86_BUILTIN_CVTPS2DQ512_MASK, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_cvtps2pd512_mask_round, "__builtin_ia32_cvtps2pd512_mask", IX86_BUILTIN_CVTPS2PD512, UNKNOWN, (int) V8DF_FTYPE_V8SF_V8DF_QI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_avx512f_fixuns_notruncv16sfv16si_mask_round, "__builtin_ia32_cvtps2udq512_mask", IX86_BUILTIN_CVTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtsd2ss_round, "__builtin_ia32_cvtsd2ss_round", IX86_BUILTIN_CVTSD2SS_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_sse2_cvtsd2ss_mask_round, "__builtin_ia32_cvtsd2ss_mask_round", IX86_BUILTIN_CVTSD2SS_MASK_ROUND, UNKNOWN, (int) V4SF_FTYPE_V4SF_V2DF_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_sse2_cvtsi2sdq_round, "__builtin_ia32_cvtsi2sd64", IX86_BUILTIN_CVTSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_INT64_INT)
*************** BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_
*** 2982,2989 ****
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2dq512_mask", IX86_BUILTIN_CVTTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fixuns_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2udq512_mask", IX86_BUILTIN_CVTTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2dq512_mask", IX86_BUILTIN_CVTTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_ufix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2udq512_mask", IX86_BUILTIN_CVTTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_ufloatv16siv16sf2_mask_round, "__builtin_ia32_cvtudq2ps512_mask", IX86_BUILTIN_CVTUDQ2PS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_cvtusi2sd64_round, "__builtin_ia32_cvtusi2sd64", IX86_BUILTIN_CVTUSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_UINT64_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_cvtusi2ss32_round, "__builtin_ia32_cvtusi2ss32", IX86_BUILTIN_CVTUSI2SS32, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_cvtusi2ss64_round, "__builtin_ia32_cvtusi2ss64", IX86_BUILTIN_CVTUSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT64_INT)
--- 3034,3041 ----
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fix_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2dq512_mask", IX86_BUILTIN_CVTTPD2DQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fixuns_truncv8dfv8si2_mask_round, "__builtin_ia32_cvttpd2udq512_mask", IX86_BUILTIN_CVTTPD2UDQ512, UNKNOWN, (int) V8SI_FTYPE_V8DF_V8SI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fix_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2dq512_mask", IX86_BUILTIN_CVTTPS2DQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_fixuns_truncv16sfv16si2_mask_round, "__builtin_ia32_cvttps2udq512_mask", IX86_BUILTIN_CVTTPS2UDQ512, UNKNOWN, (int) V16SI_FTYPE_V16SF_V16SI_HI_INT)
! BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_floatunsv16siv16sf2_mask_round, "__builtin_ia32_cvtudq2ps512_mask", IX86_BUILTIN_CVTUDQ2PS512, UNKNOWN, (int) V16SF_FTYPE_V16SI_V16SF_HI_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_cvtusi2sd64_round, "__builtin_ia32_cvtusi2sd64", IX86_BUILTIN_CVTUSI2SD64, UNKNOWN, (int) V2DF_FTYPE_V2DF_UINT64_INT)
  BDESC (OPTION_MASK_ISA_AVX512F, 0, CODE_FOR_cvtusi2ss32_round, "__builtin_ia32_cvtusi2ss32", IX86_BUILTIN_CVTUSI2SS32, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT_INT)
  BDESC (OPTION_MASK_ISA_AVX512F | OPTION_MASK_ISA_64BIT, 0, CODE_FOR_cvtusi2ss64_round, "__builtin_ia32_cvtusi2ss64", IX86_BUILTIN_CVTUSI2SS64, UNKNOWN, (int) V4SF_FTYPE_V4SF_UINT64_INT)
*************** BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE
*** 3133,3139 ****
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_rangesv4sf_mask_round, "__builtin_ia32_rangess128_mask_round", IX86_BUILTIN_RANGESS128, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_fix_notruncv8dfv8di2_mask_round, "__builtin_ia32_cvtpd2qq512_mask", IX86_BUILTIN_CVTPD2QQ512, UNKNOWN, (int) V8DI_FTYPE_V8DF_V8DI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_cvtps2qqv8di_mask_round, "__builtin_ia32_cvtps2qq512_mask", IX86_BUILTIN_CVTPS2QQ512, UNKNOWN, (int) V8DI_FTYPE_V8SF_V8DI_QI_INT)
! BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_ufix_notruncv8dfv8di2_mask_round, "__builtin_ia32_cvtpd2uqq512_mask", IX86_BUILTIN_CVTPD2UQQ512, UNKNOWN, (int) V8DI_FTYPE_V8DF_V8DI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_cvtps2uqqv8di_mask_round, "__builtin_ia32_cvtps2uqq512_mask", IX86_BUILTIN_CVTPS2UQQ512, UNKNOWN, (int) V8DI_FTYPE_V8SF_V8DI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_floatv8div8sf2_mask_round, "__builtin_ia32_cvtqq2ps512_mask", IX86_BUILTIN_CVTQQ2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DI_V8SF_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_floatunsv8div8sf2_mask_round, "__builtin_ia32_cvtuqq2ps512_mask", IX86_BUILTIN_CVTUQQ2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DI_V8SF_QI_INT)
--- 3185,3191 ----
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_rangesv4sf_mask_round, "__builtin_ia32_rangess128_mask_round", IX86_BUILTIN_RANGESS128, UNKNOWN, (int) V4SF_FTYPE_V4SF_V4SF_INT_V4SF_UQI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_fix_notruncv8dfv8di2_mask_round, "__builtin_ia32_cvtpd2qq512_mask", IX86_BUILTIN_CVTPD2QQ512, UNKNOWN, (int) V8DI_FTYPE_V8DF_V8DI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_cvtps2qqv8di_mask_round, "__builtin_ia32_cvtps2qq512_mask", IX86_BUILTIN_CVTPS2QQ512, UNKNOWN, (int) V8DI_FTYPE_V8SF_V8DI_QI_INT)
! BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_fixuns_notruncv8dfv8di2_mask_round, "__builtin_ia32_cvtpd2uqq512_mask", IX86_BUILTIN_CVTPD2UQQ512, UNKNOWN, (int) V8DI_FTYPE_V8DF_V8DI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_avx512dq_cvtps2uqqv8di_mask_round, "__builtin_ia32_cvtps2uqq512_mask", IX86_BUILTIN_CVTPS2UQQ512, UNKNOWN, (int) V8DI_FTYPE_V8SF_V8DI_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_floatv8div8sf2_mask_round, "__builtin_ia32_cvtqq2ps512_mask", IX86_BUILTIN_CVTQQ2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DI_V8SF_QI_INT)
  BDESC (OPTION_MASK_ISA_AVX512DQ, 0, CODE_FOR_floatunsv8div8sf2_mask_round, "__builtin_ia32_cvtuqq2ps512_mask", IX86_BUILTIN_CVTUQQ2PS512, UNKNOWN, (int) V8SF_FTYPE_V8DI_V8SF_QI_INT)
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-builtins.cc gcc-13.1.0/gcc/config/i386/i386-builtins.cc
*** gcc-12.2.0/gcc/config/i386/i386-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** BDESC_VERIFYS (IX86_BUILTIN_MAX,
*** 126,131 ****
--- 126,133 ----
  static GTY(()) tree ix86_builtin_type_tab[(int) IX86_BT_LAST_CPTR + 1];
  
  tree ix86_float16_type_node = NULL_TREE;
+ tree ix86_bf16_type_node = NULL_TREE;
+ 
  /* Retrieve an element from the above table, building some of
     the types lazily.  */
  
*************** def_builtin (HOST_WIDE_INT mask, HOST_WI
*** 277,286 ****
        if (((mask2 == 0 || (mask2 & ix86_isa_flags2) != 0)
  	   && (mask == 0 || (mask & ix86_isa_flags) != 0))
  	  || ((mask & OPTION_MASK_ISA_MMX) != 0 && TARGET_MMX_WITH_SSE)
! 	  /* "Unified" builtin used by either AVXVNNI intrinsics or AVX512VNNIVL
! 	     non-mask intrinsics should be defined whenever avxvnni
! 	     or avx512vnni && avx512vl exist.  */
  	  || (mask2 == OPTION_MASK_ISA2_AVXVNNI)
  	  || (lang_hooks.builtin_function
  	      == lang_hooks.builtin_function_ext_scope))
  	{
--- 279,292 ----
        if (((mask2 == 0 || (mask2 & ix86_isa_flags2) != 0)
  	   && (mask == 0 || (mask & ix86_isa_flags) != 0))
  	  || ((mask & OPTION_MASK_ISA_MMX) != 0 && TARGET_MMX_WITH_SSE)
! 	  /* "Unified" builtin used by either AVXVNNI/AVXIFMA intrinsics
! 	     or AVX512VNNIVL/AVX512IFMAVL non-mask intrinsics should be
! 	     defined whenever avxvnni/avxifma or avx512vnni/avxifma &&
! 	     avx512vl exist.  */
  	  || (mask2 == OPTION_MASK_ISA2_AVXVNNI)
+ 	  || (mask2 == OPTION_MASK_ISA2_AVXIFMA)
+ 	  || (mask2 == (OPTION_MASK_ISA2_AVXNECONVERT
+ 			| OPTION_MASK_ISA2_AVX512BF16))
  	  || (lang_hooks.builtin_function
  	      == lang_hooks.builtin_function_ext_scope))
  	{
*************** ix86_add_new_builtins (HOST_WIDE_INT isa
*** 385,390 ****
--- 391,398 ----
  	  ix86_builtins[i] = decl;
  	  if (ix86_builtins_isa[i].const_p)
  	    TREE_READONLY (decl) = 1;
+ 	  if (ix86_builtins_isa[i].pure_p)
+ 	    DECL_PURE_P (decl) = 1;
  	}
      }
  
*************** ix86_register_float16_builtin_type (void
*** 1365,1370 ****
--- 1373,1395 ----
  }
  
  static void
+ ix86_register_bf16_builtin_type (void)
+ {
+   if (bfloat16_type_node == NULL_TREE)
+     {
+       ix86_bf16_type_node = make_node (REAL_TYPE);
+       TYPE_PRECISION (ix86_bf16_type_node) = 16;
+       SET_TYPE_MODE (ix86_bf16_type_node, BFmode);
+       layout_type (ix86_bf16_type_node);
+     }
+   else
+     ix86_bf16_type_node = bfloat16_type_node;
+ 
+   if (!maybe_get_identifier ("__bf16") && TARGET_SSE2)
+     lang_hooks.types.register_builtin_type (ix86_bf16_type_node, "__bf16");
+ }
+ 
+ static void
  ix86_init_builtin_types (void)
  {
    tree float80_type_node, const_string_type_node;
*************** ix86_init_builtin_types (void)
*** 1388,1399 ****
    lang_hooks.types.register_builtin_type (float80_type_node, "__float80");
  
    /* The __float128 type.  The node has already been created as
!      _Float128, so we only need to register the __float128 name for
!      it.  */
!   lang_hooks.types.register_builtin_type (float128_type_node, "__float128");
  
    ix86_register_float16_builtin_type ();
  
    const_string_type_node
      = build_pointer_type (build_qualified_type
  			  (char_type_node, TYPE_QUAL_CONST));
--- 1413,1435 ----
    lang_hooks.types.register_builtin_type (float80_type_node, "__float80");
  
    /* The __float128 type.  The node has already been created as
!      _Float128, so for C we only need to register the __float128 name for
!      it.  For C++, we create a distinct type which will mangle differently
!      (g) vs. _Float128 (DF128_) and behave backwards compatibly.  */
!   if (float128t_type_node == NULL_TREE)
!     {
!       float128t_type_node = make_node (REAL_TYPE);
!       TYPE_PRECISION (float128t_type_node)
! 	= TYPE_PRECISION (float128_type_node);
!       SET_TYPE_MODE (float128t_type_node, TYPE_MODE (float128_type_node));
!       layout_type (float128t_type_node);
!     }
!   lang_hooks.types.register_builtin_type (float128t_type_node, "__float128");
  
    ix86_register_float16_builtin_type ();
  
+   ix86_register_bf16_builtin_type ();
+ 
    const_string_type_node
      = build_pointer_type (build_qualified_type
  			  (char_type_node, TYPE_QUAL_CONST));
*************** ix86_builtin_vectorized_function (unsign
*** 1517,1537 ****
  
    switch (fn)
      {
-     CASE_CFN_EXP2:
-       if (out_mode == SFmode && in_mode == SFmode)
- 	{
- 	  if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_EXP2PS);
- 	}
-       break;
- 
      CASE_CFN_IFLOOR:
      CASE_CFN_LFLOOR:
-     CASE_CFN_LLFLOOR:
        /* The round insn does not trap on denormals.  */
        if (flag_trapping_math || !TARGET_SSE4_1)
  	break;
  
        if (out_mode == SImode && in_mode == DFmode)
  	{
  	  if (out_n == 4 && in_n == 2)
--- 1553,1568 ----
  
    switch (fn)
      {
      CASE_CFN_IFLOOR:
      CASE_CFN_LFLOOR:
        /* The round insn does not trap on denormals.  */
        if (flag_trapping_math || !TARGET_SSE4_1)
  	break;
  
+       /* PR106910, currently vectorizer doesn't go direct internal fn way
+ 	 when out_n != in_n, so let's still keep this.
+ 	 Otherwise, it relies on expander of
+ 	 lceilmn2/lfloormn2/lroundmn2/lrintmn2.  */
        if (out_mode == SImode && in_mode == DFmode)
  	{
  	  if (out_n == 4 && in_n == 2)
*************** ix86_builtin_vectorized_function (unsign
*** 1541,1560 ****
  	  else if (out_n == 16 && in_n == 8)
  	    return ix86_get_builtin (IX86_BUILTIN_FLOORPD_VEC_PACK_SFIX512);
  	}
-       if (out_mode == SImode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPS_SFIX);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPS_SFIX256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPS_SFIX512);
- 	}
        break;
  
      CASE_CFN_ICEIL:
      CASE_CFN_LCEIL:
-     CASE_CFN_LLCEIL:
        /* The round insn does not trap on denormals.  */
        if (flag_trapping_math || !TARGET_SSE4_1)
  	break;
--- 1572,1581 ----
*************** ix86_builtin_vectorized_function (unsign
*** 1568,1587 ****
  	  else if (out_n == 16 && in_n == 8)
  	    return ix86_get_builtin (IX86_BUILTIN_CEILPD_VEC_PACK_SFIX512);
  	}
-       if (out_mode == SImode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPS_SFIX);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPS_SFIX256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPS_SFIX512);
- 	}
        break;
  
      CASE_CFN_IRINT:
      CASE_CFN_LRINT:
-     CASE_CFN_LLRINT:
        if (out_mode == SImode && in_mode == DFmode)
  	{
  	  if (out_n == 4 && in_n == 2)
--- 1589,1598 ----
*************** ix86_builtin_vectorized_function (unsign
*** 1591,1610 ****
  	  else if (out_n == 16 && in_n == 8)
  	    return ix86_get_builtin (IX86_BUILTIN_VEC_PACK_SFIX512);
  	}
-       if (out_mode == SImode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_CVTPS2DQ);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_CVTPS2DQ256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_CVTPS2DQ512);
- 	}
        break;
  
      CASE_CFN_IROUND:
      CASE_CFN_LROUND:
-     CASE_CFN_LLROUND:
        /* The round insn does not trap on denormals.  */
        if (flag_trapping_math || !TARGET_SSE4_1)
  	break;
--- 1602,1611 ----
*************** ix86_builtin_vectorized_function (unsign
*** 1618,1767 ****
  	  else if (out_n == 16 && in_n == 8)
  	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ_VEC_PACK_SFIX512);
  	}
-       if (out_mode == SImode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ_SFIX);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ_SFIX256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ_SFIX512);
- 	}
        break;
  
-     CASE_CFN_FLOOR:
-       /* The round insn does not trap on denormals.  */
-       if (flag_trapping_math || !TARGET_SSE4_1)
- 	break;
- 
-       if (out_mode == DFmode && in_mode == DFmode)
- 	{
- 	  if (out_n == 2 && in_n == 2)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPD);
- 	  else if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPD256);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPD512);
- 	}
-       if (out_mode == SFmode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPS);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPS256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPS512);
- 	}
-       if (out_mode == HFmode && in_mode == HFmode)
- 	{
- 	  /* V8HF/V16HF is supported in ix86_vector_mode_supported_p
- 	     under TARGET_AVX512FP16, TARGET_AVX512VL is needed here.  */
- 	  if (out_n < 32 && !TARGET_AVX512VL)
- 	    break;
- 
- 	  if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPH);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPH256);
- 	  else if (out_n == 32 && in_n == 32)
- 	    return ix86_get_builtin (IX86_BUILTIN_FLOORPH512);
- 	}
-       break;
- 
-     CASE_CFN_CEIL:
-       /* The round insn does not trap on denormals.  */
-       if (flag_trapping_math || !TARGET_SSE4_1)
- 	break;
- 
-       if (out_mode == DFmode && in_mode == DFmode)
- 	{
- 	  if (out_n == 2 && in_n == 2)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPD);
- 	  else if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPD256);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPD512);
- 	}
-       if (out_mode == SFmode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPS);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPS256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPS512);
- 	}
-       if (out_mode == HFmode && in_mode == HFmode)
- 	{
- 	  /* V8HF/V16HF is supported in ix86_vector_mode_supported_p
- 	     under TARGET_AVX512FP16, TARGET_AVX512VL is needed here.  */
- 	  if (out_n < 32 && !TARGET_AVX512VL)
- 	    break;
- 
- 	  if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPH);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPH256);
- 	  else if (out_n == 32 && in_n == 32)
- 	    return ix86_get_builtin (IX86_BUILTIN_CEILPH512);
- 	}
-       break;
- 
-     CASE_CFN_TRUNC:
-       /* The round insn does not trap on denormals.  */
-       if (flag_trapping_math || !TARGET_SSE4_1)
- 	break;
- 
-       if (out_mode == DFmode && in_mode == DFmode)
- 	{
- 	  if (out_n == 2 && in_n == 2)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPD);
- 	  else if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPD256);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPD512);
- 	}
-       if (out_mode == SFmode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPS);
- 	  else if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPS256);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPS512);
- 	}
-       if (out_mode == HFmode && in_mode == HFmode)
- 	{
- 	  /* V8HF/V16HF is supported in ix86_vector_mode_supported_p
- 	     under TARGET_AVX512FP16, TARGET_AVX512VL is needed here.  */
- 	  if (out_n < 32 && !TARGET_AVX512VL)
- 	    break;
- 
- 	  if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPH);
- 	  else if (out_n == 16 && in_n == 16)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPH256);
- 	  else if (out_n == 32 && in_n == 32)
- 	    return ix86_get_builtin (IX86_BUILTIN_TRUNCPH512);
- 	}
-       break;
- 
-     CASE_CFN_FMA:
-       if (out_mode == DFmode && in_mode == DFmode)
- 	{
- 	  if (out_n == 2 && in_n == 2)
- 	    return ix86_get_builtin (IX86_BUILTIN_VFMADDPD);
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_VFMADDPD256);
- 	}
-       if (out_mode == SFmode && in_mode == SFmode)
- 	{
- 	  if (out_n == 4 && in_n == 4)
- 	    return ix86_get_builtin (IX86_BUILTIN_VFMADDPS);
- 	  if (out_n == 8 && in_n == 8)
- 	    return ix86_get_builtin (IX86_BUILTIN_VFMADDPS256);
- 	}
-       break;
  
      default:
        break;
--- 1619,1626 ----
*************** get_builtin_code_for_version (tree decl,
*** 1936,1943 ****
  
    enum feature_priority priority = P_NONE;
  
!   static unsigned int NUM_FEATURES
!     = sizeof (isa_names_table) / sizeof (_isa_names_table);
  
    unsigned int i;
  
--- 1795,1801 ----
  
    enum feature_priority priority = P_NONE;
  
!   static unsigned int NUM_FEATURES = ARRAY_SIZE (isa_names_table);
  
    unsigned int i;
  
*************** fold_builtin_cpu (tree fndecl, tree *arg
*** 2280,2286 ****
        /* Check the value.  */
        final = build2 (EQ_EXPR, unsigned_type_node, ref,
  		      build_int_cstu (unsigned_type_node, field_val));
!       return build1 (CONVERT_EXPR, integer_type_node, final);
      }
    else if (fn_code == IX86_BUILTIN_CPU_SUPPORTS)
      {
--- 2138,2144 ----
        /* Check the value.  */
        final = build2 (EQ_EXPR, unsigned_type_node, ref,
  		      build_int_cstu (unsigned_type_node, field_val));
!       return build1 (NOP_EXPR, integer_type_node, final);
      }
    else if (fn_code == IX86_BUILTIN_CPU_SUPPORTS)
      {
*************** fold_builtin_cpu (tree fndecl, tree *arg
*** 2290,2297 ****
        tree final;
  
        unsigned int field_val = 0;
!       unsigned int NUM_ISA_NAMES
! 	= sizeof (isa_names_table) / sizeof (struct _isa_names_table);
  
        for (i = 0; i < NUM_ISA_NAMES; i++)
  	if (strcmp (isa_names_table[i].name,
--- 2148,2154 ----
        tree final;
  
        unsigned int field_val = 0;
!       unsigned int NUM_ISA_NAMES = ARRAY_SIZE (isa_names_table);
  
        for (i = 0; i < NUM_ISA_NAMES; i++)
  	if (strcmp (isa_names_table[i].name,
*************** fold_builtin_cpu (tree fndecl, tree *arg
*** 2305,2311 ****
  	  return integer_zero_node;
  	}
  
!       if (isa_names_table[i].feature >= 32)
  	{
  	  if (ix86_cpu_features2_var == nullptr)
  	    {
--- 2162,2169 ----
  	  return integer_zero_node;
  	}
  
!       unsigned feature = isa_names_table[i].feature;
!       if (feature >= INT_TYPE_SIZE)
  	{
  	  if (ix86_cpu_features2_var == nullptr)
  	    {
*************** fold_builtin_cpu (tree fndecl, tree *arg
*** 2323,2368 ****
  	      varpool_node::add (ix86_cpu_features2_var);
  	    }
  
! 	  for (unsigned int j = 0; j < SIZE_OF_CPU_FEATURES; j++)
! 	    if (isa_names_table[i].feature < (32 + 32 + j * 32))
! 	      {
! 		field_val = (1U << (isa_names_table[i].feature
! 				    - (32 + j * 32)));
! 		tree index = size_int (j);
! 		array_elt = build4 (ARRAY_REF, unsigned_type_node,
! 				    ix86_cpu_features2_var,
! 				    index, NULL_TREE, NULL_TREE);
! 		/* Return __cpu_features2[index] & field_val  */
! 		final = build2 (BIT_AND_EXPR, unsigned_type_node,
! 				array_elt,
! 				build_int_cstu (unsigned_type_node,
! 						field_val));
! 		return build1 (CONVERT_EXPR, integer_type_node, final);
! 	      }
  	}
  
!       field = TYPE_FIELDS (ix86_cpu_model_type_node);
!       /* Get the last field, which is __cpu_features.  */
!       while (DECL_CHAIN (field))
!         field = DECL_CHAIN (field);
  
!       /* Get the appropriate field: __cpu_model.__cpu_features  */
!       ref = build3 (COMPONENT_REF, TREE_TYPE (field), ix86_cpu_model_var,
! 		    field, NULL_TREE);
  
!       /* Access the 0th element of __cpu_features array.  */
!       array_elt = build4 (ARRAY_REF, unsigned_type_node, ref,
! 			  integer_zero_node, NULL_TREE, NULL_TREE);
  
!       field_val = (1U << isa_names_table[i].feature);
!       /* Return __cpu_model.__cpu_features[0] & field_val  */
        final = build2 (BIT_AND_EXPR, unsigned_type_node, array_elt,
  		      build_int_cstu (unsigned_type_node, field_val));
!       if (isa_names_table[i].feature == (INT_TYPE_SIZE - 1))
  	return build2 (NE_EXPR, integer_type_node, final,
  		       build_int_cst (unsigned_type_node, 0));
        else
! 	return build1 (CONVERT_EXPR, integer_type_node, final);
      }
    gcc_unreachable ();
  }
--- 2181,2221 ----
  	      varpool_node::add (ix86_cpu_features2_var);
  	    }
  
! 	  /* Skip __cpu_features[0].  */
! 	  feature -= INT_TYPE_SIZE;
! 	  tree index = size_int (feature / INT_TYPE_SIZE);
! 	  feature = feature % INT_TYPE_SIZE;
! 	  array_elt = build4 (ARRAY_REF, unsigned_type_node,
! 			      ix86_cpu_features2_var,
! 			      index, NULL_TREE, NULL_TREE);
! 	  /* Return __cpu_features2[index] & field_val  */
  	}
+       else
+ 	{
+ 	  field = TYPE_FIELDS (ix86_cpu_model_type_node);
+ 	  /* Get the last field, which is __cpu_features.  */
+ 	  while (DECL_CHAIN (field))
+ 	    field = DECL_CHAIN (field);
  
! 	  /* Get the appropriate field: __cpu_model.__cpu_features  */
! 	  ref = build3 (COMPONENT_REF, TREE_TYPE (field), ix86_cpu_model_var,
! 			field, NULL_TREE);
  
! 	  /* Access the 0th element of __cpu_features array.  */
! 	  array_elt = build4 (ARRAY_REF, unsigned_type_node, ref,
! 			      integer_zero_node, NULL_TREE, NULL_TREE);
  
! 	  /* Return __cpu_model.__cpu_features[0] & field_val  */
! 	}
  
!       field_val = 1U << feature;
        final = build2 (BIT_AND_EXPR, unsigned_type_node, array_elt,
  		      build_int_cstu (unsigned_type_node, field_val));
!       if (feature == INT_TYPE_SIZE - 1)
  	return build2 (NE_EXPR, integer_type_node, final,
  		       build_int_cst (unsigned_type_node, 0));
        else
! 	return build1 (NOP_EXPR, integer_type_node, final);
      }
    gcc_unreachable ();
  }
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-builtins.h gcc-13.1.0/gcc/config/i386/i386-builtins.h
*** gcc-12.2.0/gcc/config/i386/i386-builtins.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-c.cc gcc-13.1.0/gcc/config/i386/i386-c.cc
*** gcc-12.2.0/gcc/config/i386/i386-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for macro/preprocessor support on the ia-32.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for macro/preprocessor support on the ia-32.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 132,137 ****
--- 132,141 ----
        def_or_undef (parse_in, "__znver3");
        def_or_undef (parse_in, "__znver3__");
        break;
+     case PROCESSOR_ZNVER4:
+       def_or_undef (parse_in, "__znver4");
+       def_or_undef (parse_in, "__znver4__");
+       break;
      case PROCESSOR_BTVER1:
        def_or_undef (parse_in, "__btver1");
        def_or_undef (parse_in, "__btver1__");
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 140,145 ****
--- 144,153 ----
        def_or_undef (parse_in, "__btver2");
        def_or_undef (parse_in, "__btver2__");
        break;
+     case PROCESSOR_LUJIAZUI:
+       def_or_undef (parse_in, "__lujiazui");
+       def_or_undef (parse_in, "__lujiazui__");
+       break;
      case PROCESSOR_PENTIUM4:
        def_or_undef (parse_in, "__pentium4");
        def_or_undef (parse_in, "__pentium4__");
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 194,199 ****
--- 202,215 ----
        def_or_undef (parse_in, "__tremont");
        def_or_undef (parse_in, "__tremont__");
        break;
+     case PROCESSOR_SIERRAFOREST:
+       def_or_undef (parse_in, "__sierraforest");
+       def_or_undef (parse_in, "__sierraforest__");
+       break;
+     case PROCESSOR_GRANDRIDGE:
+       def_or_undef (parse_in, "__grandridge");
+       def_or_undef (parse_in, "__grandridge__");
+       break;
      case PROCESSOR_KNL:
        def_or_undef (parse_in, "__knl");
        def_or_undef (parse_in, "__knl__");
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 238,243 ****
--- 254,263 ----
        def_or_undef (parse_in, "__sapphirerapids");
        def_or_undef (parse_in, "__sapphirerapids__");
        break;
+     case PROCESSOR_GRANITERAPIDS:
+       def_or_undef (parse_in, "__graniterapids");
+       def_or_undef (parse_in, "__graniterapids__");
+       break;
      case PROCESSOR_ALDERLAKE:
        def_or_undef (parse_in, "__alderlake");
        def_or_undef (parse_in, "__alderlake__");
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 326,337 ****
--- 346,363 ----
      case PROCESSOR_ZNVER3:
        def_or_undef (parse_in, "__tune_znver3__");
        break;
+     case PROCESSOR_ZNVER4:
+       def_or_undef (parse_in, "__tune_znver4__");
+       break;
      case PROCESSOR_BTVER1:
        def_or_undef (parse_in, "__tune_btver1__");
        break;
      case PROCESSOR_BTVER2:
        def_or_undef (parse_in, "__tune_btver2__");
         break;
+     case PROCESSOR_LUJIAZUI:
+       def_or_undef (parse_in, "__tune_lujiazui__");
+        break;
      case PROCESSOR_PENTIUM4:
        def_or_undef (parse_in, "__tune_pentium4__");
        break;
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 370,375 ****
--- 396,407 ----
      case PROCESSOR_TREMONT:
        def_or_undef (parse_in, "__tune_tremont__");
        break;
+     case PROCESSOR_SIERRAFOREST:
+       def_or_undef (parse_in, "__tune_sierraforest__");
+       break;
+     case PROCESSOR_GRANDRIDGE:
+       def_or_undef (parse_in, "__tune_grandridge__");
+       break;
      case PROCESSOR_KNL:
        def_or_undef (parse_in, "__tune_knl__");
        break;
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 412,417 ****
--- 444,452 ----
      case PROCESSOR_ROCKETLAKE:
        def_or_undef (parse_in, "__tune_rocketlake__");
        break;
+     case PROCESSOR_GRANITERAPIDS:
+       def_or_undef (parse_in, "__tune_graniterapids__");
+       break;
      case PROCESSOR_INTEL:
      case PROCESSOR_GENERIC:
        break;
*************** ix86_target_macros_internal (HOST_WIDE_I
*** 626,631 ****
--- 661,682 ----
      def_or_undef (parse_in, "__WIDEKL__");
    if (isa_flag2 & OPTION_MASK_ISA2_AVXVNNI)
      def_or_undef (parse_in, "__AVXVNNI__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AVXIFMA)
+     def_or_undef (parse_in, "__AVXIFMA__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AVXVNNIINT8)
+     def_or_undef (parse_in, "__AVXVNNIINT8__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AVXNECONVERT)
+     def_or_undef (parse_in, "__AVXNECONVERT__");
+   if (isa_flag2 & OPTION_MASK_ISA2_CMPCCXADD)
+     def_or_undef (parse_in, "__CMPCCXADD__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AMX_FP16)
+     def_or_undef (parse_in, "__AMX_FP16__");
+   if (isa_flag2 & OPTION_MASK_ISA2_PREFETCHI)
+     def_or_undef (parse_in, "__PREFETCHI__");
+   if (isa_flag2 & OPTION_MASK_ISA2_RAOINT)
+     def_or_undef (parse_in, "__RAOINT__");
+   if (isa_flag2 & OPTION_MASK_ISA2_AMX_COMPLEX)
+     def_or_undef (parse_in, "__AMX_COMPLEX__");
    if (TARGET_IAMCU)
      {
        def_or_undef (parse_in, "__iamcu");
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-d.cc gcc-13.1.0/gcc/config/i386/i386-d.cc
*** gcc-12.2.0/gcc/config/i386/i386-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the x86 architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the x86 architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-d.h gcc-13.1.0/gcc/config/i386/i386-d.h
*** gcc-12.2.0/gcc/config/i386/i386-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/i386-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,26 ----
+ /* Definitions for the D front end on the x86 architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* In i386-d.cc  */
+ extern void ix86_d_target_versions (void);
+ extern void ix86_d_register_target_info (void);
+ extern bool ix86_d_has_stdcall_convention (unsigned int *, unsigned int *);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS ix86_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO ix86_d_register_target_info
+ #define TARGET_D_HAS_STDCALL_CONVENTION ix86_d_has_stdcall_convention
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-expand.cc gcc-13.1.0/gcc/config/i386/i386-expand.cc
*** gcc-12.2.0/gcc/config/i386/i386-expand.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-expand.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 92,97 ****
--- 92,98 ----
  #include "i386-options.h"
  #include "i386-builtins.h"
  #include "i386-expand.h"
+ #include "asan.h"
  
  /* Split one or more double-mode RTL references into pairs of half-mode
     references.  The RTL can be REG, offsettable MEM, integer constant, or
*************** split_double_mode (machine_mode mode, rt
*** 165,170 ****
--- 166,249 ----
      }
  }
  
+ /* Emit the double word assignment DST = { LO, HI }.  */
+ 
+ void
+ split_double_concat (machine_mode mode, rtx dst, rtx lo, rtx hi)
+ {
+   rtx dlo, dhi;
+   int deleted_move_count = 0;
+   split_double_mode (mode, &dst, 1, &dlo, &dhi);
+   /* Constraints ensure that if both lo and hi are MEMs, then
+      dst has early-clobber and thus addresses of MEMs don't use
+      dlo/dhi registers.  Otherwise if at least one of li and hi are MEMs,
+      dlo/dhi are registers.  */
+   if (MEM_P (lo)
+       && rtx_equal_p (dlo, hi)
+       && reg_overlap_mentioned_p (dhi, lo))
+     {
+       /* If dlo is same as hi and lo's address uses dhi register,
+ 	 code below would first emit_move_insn (dhi, hi)
+ 	 and then emit_move_insn (dlo, lo).  But the former
+ 	 would invalidate lo's address.  Load into dhi first,
+ 	 then swap.  */
+       emit_move_insn (dhi, lo);
+       lo = dhi;
+     }
+   else if (MEM_P (hi)
+ 	   && !MEM_P (lo)
+ 	   && !rtx_equal_p (dlo, lo)
+ 	   && reg_overlap_mentioned_p (dlo, hi))
+     {
+       /* In this case, code below would first emit_move_insn (dlo, lo)
+ 	 and then emit_move_insn (dhi, hi).  But the former would
+ 	 invalidate hi's address.  */
+       if (rtx_equal_p (dhi, lo))
+ 	{
+ 	  /* We can't load into dhi first, so load into dlo
+ 	     first and we'll swap.  */
+ 	  emit_move_insn (dlo, hi);
+ 	  hi = dlo;
+ 	}
+       else
+ 	{
+ 	  /* Load into dhi first.  */
+ 	  emit_move_insn (dhi, hi);
+ 	  hi = dhi;
+ 	}
+     }
+   if (!rtx_equal_p (dlo, hi))
+     {
+       if (!rtx_equal_p (dlo, lo))
+ 	emit_move_insn (dlo, lo);
+       else
+ 	deleted_move_count++;
+       if (!rtx_equal_p (dhi, hi))
+ 	emit_move_insn (dhi, hi);
+       else
+ 	deleted_move_count++;
+     }
+   else if (!rtx_equal_p (lo, dhi))
+     {
+       if (!rtx_equal_p (dhi, hi))
+ 	emit_move_insn (dhi, hi);
+       else
+ 	deleted_move_count++;
+       if (!rtx_equal_p (dlo, lo))
+ 	emit_move_insn (dlo, lo);
+       else
+ 	deleted_move_count++;
+     }
+   else if (mode == TImode)
+     emit_insn (gen_swapdi (dlo, dhi));
+   else
+     emit_insn (gen_swapsi (dlo, dhi));
+ 
+   if (deleted_move_count == 2)
+     emit_note (NOTE_INSN_DELETED);
+ }
+ 
+ 
  /* Generate either "mov $0, reg" or "xor reg, reg", as appropriate
     for the target.  */
  
*************** ix86_convert_const_wide_int_to_broadcast
*** 223,229 ****
       broadcast only if vector broadcast is available.  */
    if (!TARGET_AVX
        || !CONST_WIDE_INT_P (op)
!       || standard_sse_constant_p (op, mode))
      return nullptr;
  
    HOST_WIDE_INT val = CONST_WIDE_INT_ELT (op, 0);
--- 302,310 ----
       broadcast only if vector broadcast is available.  */
    if (!TARGET_AVX
        || !CONST_WIDE_INT_P (op)
!       || standard_sse_constant_p (op, mode)
!       || (CONST_WIDE_INT_NUNITS (op) * HOST_BITS_PER_WIDE_INT
! 	  != GET_MODE_BITSIZE (mode)))
      return nullptr;
  
    HOST_WIDE_INT val = CONST_WIDE_INT_ELT (op, 0);
*************** ix86_convert_const_wide_int_to_broadcast
*** 257,263 ****
    machine_mode vector_mode;
    if (!mode_for_vector (broadcast_mode, nunits).exists (&vector_mode))
      gcc_unreachable ();
!   rtx target = ix86_gen_scratch_sse_rtx (vector_mode);
    bool ok = ix86_expand_vector_init_duplicate (false, vector_mode,
  					       target,
  					       GEN_INT (val_broadcast));
--- 338,344 ----
    machine_mode vector_mode;
    if (!mode_for_vector (broadcast_mode, nunits).exists (&vector_mode))
      gcc_unreachable ();
!   rtx target = gen_reg_rtx (vector_mode);
    bool ok = ix86_expand_vector_init_duplicate (false, vector_mode,
  					       target,
  					       GEN_INT (val_broadcast));
*************** ix86_expand_vector_move (machine_mode mo
*** 605,611 ****
        if (!register_operand (op0, mode)
  	  && !register_operand (op1, mode))
  	{
! 	  rtx scratch = ix86_gen_scratch_sse_rtx (mode);
  	  emit_move_insn (scratch, op1);
  	  op1 = scratch;
  	}
--- 686,692 ----
        if (!register_operand (op0, mode)
  	  && !register_operand (op1, mode))
  	{
! 	  rtx scratch = gen_reg_rtx (mode);
  	  emit_move_insn (scratch, op1);
  	  op1 = scratch;
  	}
*************** ix86_expand_vector_move (machine_mode mo
*** 647,653 ****
        && !register_operand (op0, mode)
        && !register_operand (op1, mode))
      {
!       rtx tmp = ix86_gen_scratch_sse_rtx (GET_MODE (op0));
        emit_move_insn (tmp, op1);
        emit_move_insn (op0, tmp);
        return;
--- 728,734 ----
        && !register_operand (op0, mode)
        && !register_operand (op1, mode))
      {
!       rtx tmp = gen_reg_rtx (GET_MODE (op0));
        emit_move_insn (tmp, op1);
        emit_move_insn (op0, tmp);
        return;
*************** ix86_avx256_split_vector_move_misalign (
*** 705,710 ****
--- 786,795 ----
        extract = gen_avx_vextractf128v32qi;
        mode = V16QImode;
        break;
+     case E_V16BFmode:
+       extract = gen_avx_vextractf128v16bf;
+       mode = V8BFmode;
+       break;
      case E_V16HFmode:
        extract = gen_avx_vextractf128v16hf;
        mode = V8HFmode;
*************** ix86_split_convert_uns_si_sse (rtx opera
*** 1702,1710 ****
        input = gen_rtx_REG (vecmode, REGNO (input));
        emit_move_insn (value, CONST0_RTX (vecmode));
        if (vecmode == V4SFmode)
! 	emit_insn (gen_sse_movss (value, value, input));
        else
! 	emit_insn (gen_sse2_movsd (value, value, input));
      }
  
    emit_move_insn (large, two31);
--- 1787,1795 ----
        input = gen_rtx_REG (vecmode, REGNO (input));
        emit_move_insn (value, CONST0_RTX (vecmode));
        if (vecmode == V4SFmode)
! 	emit_insn (gen_sse_movss_v4sf (value, value, input));
        else
! 	emit_insn (gen_sse2_movsd_v2df (value, value, input));
      }
  
    emit_move_insn (large, two31);
*************** ix86_expand_vector_convert_uns_vsivsf (r
*** 1948,1954 ****
  }
  
  /* Adjust a V*SFmode/V*DFmode value VAL so that *sfix_trunc* resp. fix_trunc*
!    pattern can be used on it instead of *ufix_trunc* resp. fixuns_trunc*.
     This is done by doing just signed conversion if < 0x1p31, and otherwise by
     subtracting 0x1p31 first and xoring in 0x80000000 from *XORP afterwards.  */
  
--- 2033,2039 ----
  }
  
  /* Adjust a V*SFmode/V*DFmode value VAL so that *sfix_trunc* resp. fix_trunc*
!    pattern can be used on it instead of fixuns_trunc*.
     This is done by doing just signed conversion if < 0x1p31, and otherwise by
     subtracting 0x1p31 first and xoring in 0x80000000 from *XORP afterwards.  */
  
*************** ix86_expand_branch (enum rtx_code code,
*** 2267,2278 ****
  
    /* Handle special case - vector comparsion with boolean result, transform
       it using ptest instruction.  */
!   if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
      {
        rtx flag = gen_rtx_REG (CCZmode, FLAGS_REG);
        machine_mode p_mode = GET_MODE_SIZE (mode) == 32 ? V4DImode : V2DImode;
  
        gcc_assert (code == EQ || code == NE);
        /* Generate XOR since we can't check that one operand is zero vector.  */
        tmp = gen_reg_rtx (mode);
        emit_insn (gen_rtx_SET (tmp, gen_rtx_XOR (mode, op0, op1)));
--- 2352,2371 ----
  
    /* Handle special case - vector comparsion with boolean result, transform
       it using ptest instruction.  */
!   if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT
!       || mode == OImode)
      {
        rtx flag = gen_rtx_REG (CCZmode, FLAGS_REG);
        machine_mode p_mode = GET_MODE_SIZE (mode) == 32 ? V4DImode : V2DImode;
  
        gcc_assert (code == EQ || code == NE);
+ 
+       if (mode == OImode)
+ 	{
+ 	  op0 = lowpart_subreg (p_mode, force_reg (mode, op0), mode);
+ 	  op1 = lowpart_subreg (p_mode, force_reg (mode, op1), mode);
+ 	  mode = p_mode;
+ 	}
        /* Generate XOR since we can't check that one operand is zero vector.  */
        tmp = gen_reg_rtx (mode);
        emit_insn (gen_rtx_SET (tmp, gen_rtx_XOR (mode, op0, op1)));
*************** ix86_expand_branch (enum rtx_code code,
*** 2309,2329 ****
      case E_DImode:
        if (TARGET_64BIT)
  	goto simple;
-       /* For 32-bit target DI comparison may be performed on
- 	 SSE registers.  To allow this we should avoid split
- 	 to SI mode which is achieved by doing xor in DI mode
- 	 and then comparing with zero (which is recognized by
- 	 STV pass).  We don't compare using xor when optimizing
- 	 for size.  */
-       if (!optimize_insn_for_size_p ()
- 	  && TARGET_STV
- 	  && (code == EQ || code == NE))
- 	{
- 	  op0 = force_reg (mode, gen_rtx_XOR (mode, op0, op1));
- 	  op1 = const0_rtx;
- 	}
        /* FALLTHRU */
      case E_TImode:
        /* Expand DImode branch into multiple compare+branch.  */
        {
  	rtx lo[2], hi[2];
--- 2402,2416 ----
      case E_DImode:
        if (TARGET_64BIT)
  	goto simple;
        /* FALLTHRU */
      case E_TImode:
+       /* DI and TI mode equality/inequality comparisons may be performed
+          on SSE registers.  Avoid splitting them, except when optimizing
+ 	 for size.  */
+       if ((code == EQ || code == NE)
+ 	  && !optimize_insn_for_size_p ())
+ 	goto simple;
+ 
        /* Expand DImode branch into multiple compare+branch.  */
        {
  	rtx lo[2], hi[2];
*************** ix86_expand_branch (enum rtx_code code,
*** 2342,2375 ****
  
  	submode = mode == DImode ? SImode : DImode;
  
! 	/* When comparing for equality, we can use (hi0^hi1)|(lo0^lo1) to
! 	   avoid two branches.  This costs one extra insn, so disable when
! 	   optimizing for size.  */
! 
! 	if ((code == EQ || code == NE)
! 	    && (!optimize_insn_for_size_p ()
! 	        || hi[1] == const0_rtx || lo[1] == const0_rtx))
! 	  {
! 	    rtx xor0, xor1;
! 
! 	    xor1 = hi[0];
! 	    if (hi[1] != const0_rtx)
! 	      xor1 = expand_binop (submode, xor_optab, xor1, hi[1],
! 				   NULL_RTX, 0, OPTAB_WIDEN);
! 
! 	    xor0 = lo[0];
! 	    if (lo[1] != const0_rtx)
! 	      xor0 = expand_binop (submode, xor_optab, xor0, lo[1],
! 				   NULL_RTX, 0, OPTAB_WIDEN);
! 
! 	    tmp = expand_binop (submode, ior_optab, xor1, xor0,
! 				NULL_RTX, 0, OPTAB_WIDEN);
! 
! 	    ix86_expand_branch (code, tmp, const0_rtx, label);
! 	    return;
! 	  }
! 
! 	/* Otherwise, if we are doing less-than or greater-or-equal-than,
  	   op1 is a constant and the low word is zero, then we can just
  	   examine the high word.  Similarly for low word -1 and
  	   less-or-equal-than or greater-than.  */
--- 2429,2435 ----
  
  	submode = mode == DImode ? SImode : DImode;
  
! 	/* If we are doing less-than or greater-or-equal-than,
  	   op1 is a constant and the low word is zero, then we can just
  	   examine the high word.  Similarly for low word -1 and
  	   less-or-equal-than or greater-than.  */
*************** ix86_prepare_fp_compare_args (enum rtx_c
*** 2607,2612 ****
--- 2667,2701 ----
    machine_mode op_mode = GET_MODE (op0);
    bool is_sse = SSE_FLOAT_MODE_SSEMATH_OR_HF_P (op_mode);
  
+   if (op_mode == BFmode)
+     {
+       rtx op = gen_lowpart (HImode, op0);
+       if (CONST_INT_P (op))
+ 	op = simplify_const_unary_operation (FLOAT_EXTEND, SFmode,
+ 					     op0, BFmode);
+       else
+ 	{
+ 	  rtx t1 = gen_reg_rtx (SImode);
+ 	  emit_insn (gen_zero_extendhisi2 (t1, op));
+ 	  emit_insn (gen_ashlsi3 (t1, t1, GEN_INT (16)));
+ 	  op = gen_lowpart (SFmode, t1);
+ 	}
+       *pop0 = op;
+       op = gen_lowpart (HImode, op1);
+       if (CONST_INT_P (op))
+ 	op = simplify_const_unary_operation (FLOAT_EXTEND, SFmode,
+ 					     op1, BFmode);
+       else
+ 	{
+ 	  rtx t1 = gen_reg_rtx (SImode);
+ 	  emit_insn (gen_zero_extendhisi2 (t1, op));
+ 	  emit_insn (gen_ashlsi3 (t1, t1, GEN_INT (16)));
+ 	  op = gen_lowpart (SFmode, t1);
+ 	}
+       *pop1 = op;
+       return ix86_prepare_fp_compare_args (code, pop0, pop1);
+     }
+ 
    /* All of the unordered compare instructions only work on registers.
       The same is true of the fcomi compare instructions.  The XFmode
       compare instructions require registers except when comparing
*************** ix86_expand_int_movcc (rtx operands[])
*** 3134,3139 ****
--- 3223,3229 ----
    rtx compare_op;
    machine_mode mode = GET_MODE (operands[0]);
    bool sign_bit_compare_p = false;
+   bool negate_cc_compare_p = false;
    rtx op0 = XEXP (operands[1], 0);
    rtx op1 = XEXP (operands[1], 1);
    rtx op2 = operands[2];
*************** ix86_expand_int_movcc (rtx operands[])
*** 3144,3149 ****
--- 3234,3243 ----
  	  && !TARGET_64BIT))
      return false;
  
+   if (GET_MODE (op0) == BFmode
+       && !ix86_fp_comparison_operator (operands[1], VOIDmode))
+     return false;
+ 
    start_sequence ();
    compare_op = ix86_expand_compare (code, op0, op1);
    compare_seq = get_insns ();
*************** ix86_expand_int_movcc (rtx operands[])
*** 3180,3195 ****
        HOST_WIDE_INT cf = INTVAL (op3);
        HOST_WIDE_INT diff;
  
        diff = ct - cf;
        /*  Sign bit compares are better done using shifts than we do by using
  	  sbb.  */
        if (sign_bit_compare_p
  	  || ix86_expand_carry_flag_compare (code, op0, op1, &compare_op))
  	{
  	  /* Detect overlap between destination and compare sources.  */
  	  rtx tmp = out;
  
!           if (!sign_bit_compare_p)
  	    {
  	      rtx flags;
  	      bool fpcmp = false;
--- 3274,3321 ----
        HOST_WIDE_INT cf = INTVAL (op3);
        HOST_WIDE_INT diff;
  
+       if ((mode == SImode
+ 	   || (TARGET_64BIT && mode == DImode))
+ 	  && (GET_MODE (op0) == SImode
+ 	      || (TARGET_64BIT && GET_MODE (op0) == DImode)))
+ 	{
+ 	  /* Special case x != 0 ? -1 : y.  */
+ 	  if (code == NE && op1 == const0_rtx && ct == -1)
+ 	    {
+ 	      negate_cc_compare_p = true;
+ 	      std::swap (ct, cf);
+ 	      code = EQ;
+ 	    }
+ 	  else if (code == EQ && op1 == const0_rtx && cf == -1)
+ 	    negate_cc_compare_p = true;
+ 	}
+ 
        diff = ct - cf;
        /*  Sign bit compares are better done using shifts than we do by using
  	  sbb.  */
        if (sign_bit_compare_p
+ 	  || negate_cc_compare_p
  	  || ix86_expand_carry_flag_compare (code, op0, op1, &compare_op))
  	{
  	  /* Detect overlap between destination and compare sources.  */
  	  rtx tmp = out;
  
! 	  if (negate_cc_compare_p)
! 	    {
! 	      if (GET_MODE (op0) == DImode)
! 		emit_insn (gen_x86_negdi_ccc (gen_reg_rtx (DImode), op0));
! 	      else
! 		emit_insn (gen_x86_negsi_ccc (gen_reg_rtx (SImode),
! 					      gen_lowpart (SImode, op0)));
! 
! 	      tmp = gen_reg_rtx (mode);
! 	      if (mode == DImode)
! 		emit_insn (gen_x86_movdicc_0_m1_neg (tmp));
! 	      else
! 		emit_insn (gen_x86_movsicc_0_m1_neg (gen_lowpart (SImode,
! 								  tmp)));
! 	    }
! 	  else if (!sign_bit_compare_p)
  	    {
  	      rtx flags;
  	      bool fpcmp = false;
*************** ix86_expand_int_movcc (rtx operands[])
*** 3224,3231 ****
  		}
  	      diff = ct - cf;
  
! 	      if (reg_overlap_mentioned_p (out, op0)
! 		  || reg_overlap_mentioned_p (out, op1))
  		tmp = gen_reg_rtx (mode);
  
  	      if (mode == DImode)
--- 3350,3356 ----
  		}
  	      diff = ct - cf;
  
! 	      if (reg_overlap_mentioned_p (out, compare_op))
  		tmp = gen_reg_rtx (mode);
  
  	      if (mode == DImode)
*************** ix86_expand_sse_movcc (rtx dest, rtx cmp
*** 4017,4024 ****
--- 4142,4151 ----
      case E_V16QImode:
      case E_V8HImode:
      case E_V8HFmode:
+     case E_V8BFmode:
      case E_V4SImode:
      case E_V2DImode:
+     case E_V1TImode:
        if (TARGET_SSE4_1)
  	{
  	  gen = gen_sse4_1_pblendvb;
*************** ix86_expand_sse_movcc (rtx dest, rtx cmp
*** 4036,4041 ****
--- 4163,4169 ----
      case E_V32QImode:
      case E_V16HImode:
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V8SImode:
      case E_V4DImode:
        if (TARGET_AVX2)
*************** ix86_expand_sse_movcc (rtx dest, rtx cmp
*** 4054,4059 ****
--- 4182,4190 ----
      case E_V32HFmode:
        gen = gen_avx512bw_blendmv32hf;
        break;
+     case E_V32BFmode:
+       gen = gen_avx512bw_blendmv32bf;
+       break;
      case E_V16SImode:
        gen = gen_avx512f_blendmv16si;
        break;
*************** ix86_expand_fp_movcc (rtx operands[])
*** 4181,4186 ****
--- 4312,4321 ----
    rtx op0 = XEXP (operands[1], 0);
    rtx op1 = XEXP (operands[1], 1);
  
+   if (GET_MODE (op0) == BFmode
+       && !ix86_fp_comparison_operator (operands[1], VOIDmode))
+     return false;
+ 
    if (SSE_FLOAT_MODE_SSEMATH_OR_HF_P (mode))
      {
        machine_mode cmode;
*************** ix86_expand_int_sse_cmp (rtx dest, enum
*** 4416,4430 ****
  	case GTU:
  	  break;
  
- 	case NE:
  	case LE:
  	case LEU:
  	  code = reverse_condition (code);
  	  *negate = true;
  	  break;
  
  	case GE:
  	case GEU:
  	  code = reverse_condition (code);
  	  *negate = true;
  	  /* FALLTHRU */
--- 4551,4638 ----
  	case GTU:
  	  break;
  
  	case LE:
  	case LEU:
+ 	  /* x <= cst can be handled as x < cst + 1 unless there is
+ 	     wrap around in cst + 1.  */
+ 	  if (GET_CODE (cop1) == CONST_VECTOR
+ 	      && GET_MODE_INNER (mode) != TImode)
+ 	    {
+ 	      unsigned int n_elts = GET_MODE_NUNITS (mode), i;
+ 	      machine_mode eltmode = GET_MODE_INNER (mode);
+ 	      for (i = 0; i < n_elts; ++i)
+ 		{
+ 		  rtx elt = CONST_VECTOR_ELT (cop1, i);
+ 		  if (!CONST_INT_P (elt))
+ 		    break;
+ 		  if (code == GE)
+ 		    {
+ 		      /* For LE punt if some element is signed maximum.  */
+ 		      if ((INTVAL (elt) & (GET_MODE_MASK (eltmode) >> 1))
+ 			  == (GET_MODE_MASK (eltmode) >> 1))
+ 			break;
+ 		    }
+ 		  /* For LEU punt if some element is unsigned maximum.  */
+ 		  else if (elt == constm1_rtx)
+ 		    break;
+ 		}
+ 	      if (i == n_elts)
+ 		{
+ 		  rtvec v = rtvec_alloc (n_elts);
+ 		  for (i = 0; i < n_elts; ++i)
+ 		    RTVEC_ELT (v, i)
+ 		      = gen_int_mode (INTVAL (CONST_VECTOR_ELT (cop1, i)) + 1,
+ 				      eltmode);
+ 		  cop1 = gen_rtx_CONST_VECTOR (mode, v);
+ 		  std::swap (cop0, cop1);
+ 		  code = code == LE ? GT : GTU;
+ 		  break;
+ 		}
+ 	    }
+ 	  /* FALLTHRU */
+ 	case NE:
  	  code = reverse_condition (code);
  	  *negate = true;
  	  break;
  
  	case GE:
  	case GEU:
+ 	  /* x >= cst can be handled as x > cst - 1 unless there is
+ 	     wrap around in cst - 1.  */
+ 	  if (GET_CODE (cop1) == CONST_VECTOR
+ 	      && GET_MODE_INNER (mode) != TImode)
+ 	    {
+ 	      unsigned int n_elts = GET_MODE_NUNITS (mode), i;
+ 	      machine_mode eltmode = GET_MODE_INNER (mode);
+ 	      for (i = 0; i < n_elts; ++i)
+ 		{
+ 		  rtx elt = CONST_VECTOR_ELT (cop1, i);
+ 		  if (!CONST_INT_P (elt))
+ 		    break;
+ 		  if (code == GE)
+ 		    {
+ 		      /* For GE punt if some element is signed minimum.  */
+ 		      if (INTVAL (elt) < 0
+ 			  && ((INTVAL (elt) & (GET_MODE_MASK (eltmode) >> 1))
+ 			      == 0))
+ 			break;
+ 		    }
+ 		  /* For GEU punt if some element is zero.  */
+ 		  else if (elt == const0_rtx)
+ 		    break;
+ 		}
+ 	      if (i == n_elts)
+ 		{
+ 		  rtvec v = rtvec_alloc (n_elts);
+ 		  for (i = 0; i < n_elts; ++i)
+ 		    RTVEC_ELT (v, i)
+ 		      = gen_int_mode (INTVAL (CONST_VECTOR_ELT (cop1, i)) - 1,
+ 				      eltmode);
+ 		  cop1 = gen_rtx_CONST_VECTOR (mode, v);
+ 		  code = code == GE ? GT : GTU;
+ 		  break;
+ 		}
+ 	    }
  	  code = reverse_condition (code);
  	  *negate = true;
  	  /* FALLTHRU */
*************** ix86_expand_int_sse_cmp (rtx dest, enum
*** 4462,4467 ****
--- 4670,4680 ----
  	    }
  	}
  
+       if (GET_CODE (cop0) == CONST_VECTOR)
+ 	cop0 = force_reg (mode, cop0);
+       else if (GET_CODE (cop1) == CONST_VECTOR)
+ 	cop1 = force_reg (mode, cop1);
+ 
        rtx optrue = op_true ? op_true : CONSTM1_RTX (data_mode);
        rtx opfalse = op_false ? op_false : CONST0_RTX (data_mode);
        if (*negate)
*************** ix86_expand_int_sse_cmp (rtx dest, enum
*** 4658,4670 ****
    if (*negate)
      std::swap (op_true, op_false);
  
    /* Allow the comparison to be done in one mode, but the movcc to
       happen in another mode.  */
    if (data_mode == mode)
!     {
!       x = ix86_expand_sse_cmp (dest, code, cop0, cop1,
! 			       op_true, op_false);
!     }
    else
      {
        gcc_assert (GET_MODE_SIZE (data_mode) == GET_MODE_SIZE (mode));
--- 4871,4883 ----
    if (*negate)
      std::swap (op_true, op_false);
  
+   if (GET_CODE (cop1) == CONST_VECTOR)
+     cop1 = force_reg (mode, cop1);
+ 
    /* Allow the comparison to be done in one mode, but the movcc to
       happen in another mode.  */
    if (data_mode == mode)
!     x = ix86_expand_sse_cmp (dest, code, cop0, cop1, op_true, op_false);
    else
      {
        gcc_assert (GET_MODE_SIZE (data_mode) == GET_MODE_SIZE (mode));
*************** ix86_split_ashl (rtx *operands, rtx scra
*** 6011,6017 ****
        if (count >= half_width)
  	{
  	  emit_move_insn (high[0], low[1]);
! 	  emit_move_insn (low[0], const0_rtx);
  
  	  if (count > half_width)
  	    ix86_expand_ashl_const (high[0], count - half_width, mode);
--- 6224,6230 ----
        if (count >= half_width)
  	{
  	  emit_move_insn (high[0], low[1]);
! 	  ix86_expand_clear (low[0]);
  
  	  if (count > half_width)
  	    ix86_expand_ashl_const (high[0], count - half_width, mode);
*************** ix86_expand_v1ti_ashiftrt (rtx operands[
*** 6891,6896 ****
--- 7104,7140 ----
      }
  }
  
+ /* Replace all occurrences of REG FROM with REG TO in X, including
+    occurrences with different modes.  */
+ 
+ rtx
+ ix86_replace_reg_with_reg (rtx x, rtx from, rtx to)
+ {
+   gcc_checking_assert (REG_P (from)
+ 		       && REG_P (to)
+ 		       && GET_MODE (from) == GET_MODE (to));
+   if (!reg_overlap_mentioned_p (from, x))
+     return x;
+   rtx ret = copy_rtx (x);
+   subrtx_ptr_iterator::array_type array;
+   FOR_EACH_SUBRTX_PTR (iter, array, &ret, NONCONST)
+     {
+       rtx *loc = *iter;
+       x = *loc;
+       if (REG_P (x) && REGNO (x) == REGNO (from))
+ 	{
+ 	  if (x == from)
+ 	    *loc = to;
+ 	  else
+ 	    {
+ 	      gcc_checking_assert (REG_NREGS (x) == 1);
+ 	      *loc = gen_rtx_REG (GET_MODE (x), REGNO (to));
+ 	    }
+ 	}
+     }
+   return ret;
+ }
+ 
  /* Return mode for the memcpy/memset loop counter.  Prefer SImode over
     DImode for constant loop counts.  */
  
*************** ix86_expand_set_or_cpymem (rtx dst, rtx
*** 8461,8466 ****
--- 8705,8712 ----
  
        if (TARGET_AVX256_SPLIT_REGS && GET_MODE_BITSIZE (move_mode) > 128)
  	move_mode = TImode;
+       if (TARGET_AVX512_SPLIT_REGS && GET_MODE_BITSIZE (move_mode) > 256)
+ 	move_mode = OImode;
  
        /* Find the corresponding vector mode with the same size as MOVE_MODE.
  	 MOVE_MODE is an integer mode at the moment (SI, DI, TI, etc.).  */
*************** ix86_expand_call (rtx retval, rtx fnaddr
*** 9266,9271 ****
--- 9512,9528 ----
        fnaddr = gen_rtx_MEM (QImode, copy_to_mode_reg (word_mode, fnaddr));
      }
  
+   /* PR100665: Hwasan may tag code pointer which is not supported by LAM,
+      mask off code pointers here.
+      TODO: also need to handle indirect jump.  */
+   if (ix86_memtag_can_tag_addresses () && !fndecl
+       && sanitize_flags_p (SANITIZE_HWADDRESS))
+     {
+       rtx untagged_addr = ix86_memtag_untagged_pointer (XEXP (fnaddr, 0),
+ 							NULL_RTX);
+       fnaddr = gen_rtx_MEM (QImode, untagged_addr);
+     }
+ 
    call = gen_rtx_CALL (VOIDmode, fnaddr, callarg1);
  
    if (retval)
*************** ix86_expand_sse_compare (const struct bu
*** 9762,9808 ****
    return target;
  }
  
  /* Subroutine of ix86_expand_builtin to take care of comi insns.  */
  
  static rtx
  ix86_expand_sse_comi (const struct builtin_description *d, tree exp,
  		      rtx target)
  {
!   rtx pat;
    tree arg0 = CALL_EXPR_ARG (exp, 0);
    tree arg1 = CALL_EXPR_ARG (exp, 1);
    rtx op0 = expand_normal (arg0);
    rtx op1 = expand_normal (arg1);
!   machine_mode mode0 = insn_data[d->icode].operand[0].mode;
!   machine_mode mode1 = insn_data[d->icode].operand[1].mode;
!   enum rtx_code comparison = d->comparison;
  
    if (VECTOR_MODE_P (mode0))
      op0 = safe_vector_operand (op0, mode0);
    if (VECTOR_MODE_P (mode1))
      op1 = safe_vector_operand (op1, mode1);
  
    target = gen_reg_rtx (SImode);
!   emit_move_insn (target, const0_rtx);
    target = gen_rtx_SUBREG (QImode, target, 0);
  
    if ((optimize && !register_operand (op0, mode0))
!       || !insn_data[d->icode].operand[0].predicate (op0, mode0))
      op0 = copy_to_mode_reg (mode0, op0);
    if ((optimize && !register_operand (op1, mode1))
!       || !insn_data[d->icode].operand[1].predicate (op1, mode1))
      op1 = copy_to_mode_reg (mode1, op1);
  
!   pat = GEN_FCN (d->icode) (op0, op1);
    if (! pat)
      return 0;
-   emit_insn (pat);
-   emit_insn (gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
- 			  gen_rtx_fmt_ee (comparison, QImode,
- 					  SET_DEST (pat),
- 					  const0_rtx)));
  
!   return SUBREG_REG (target);
  }
  
  /* Subroutines of ix86_expand_args_builtin to take care of round insns.  */
--- 10019,10139 ----
    return target;
  }
  
+ /* Subroutine of ix86_sse_comi and ix86_sse_comi_round to take care of
+  * ordered EQ or unordered NE, generate PF jump.  */
+ 
+ static rtx
+ ix86_ssecom_setcc (const enum rtx_code comparison,
+ 		   bool check_unordered, machine_mode mode,
+ 		   rtx set_dst, rtx target)
+ {
+ 
+   rtx_code_label *label = NULL;
+ 
+   /* NB: For ordered EQ or unordered NE, check ZF alone isn't sufficient
+      with NAN operands.  */
+   if (check_unordered)
+     {
+       gcc_assert (comparison == EQ || comparison == NE);
+ 
+       rtx flag = gen_rtx_REG (CCFPmode, FLAGS_REG);
+       label = gen_label_rtx ();
+       rtx tmp = gen_rtx_fmt_ee (UNORDERED, VOIDmode, flag, const0_rtx);
+       tmp = gen_rtx_IF_THEN_ELSE (VOIDmode, tmp,
+ 				  gen_rtx_LABEL_REF (VOIDmode, label),
+ 				  pc_rtx);
+       emit_jump_insn (gen_rtx_SET (pc_rtx, tmp));
+     }
+ 
+   /* NB: Set CCFPmode and check a different CCmode which is in subset
+      of CCFPmode.  */
+   if (GET_MODE (set_dst) != mode)
+     {
+       gcc_assert (mode == CCAmode || mode == CCCmode
+ 		  || mode == CCOmode || mode == CCPmode
+ 		  || mode == CCSmode || mode == CCZmode);
+       set_dst = gen_rtx_REG (mode, FLAGS_REG);
+     }
+ 
+   emit_insn (gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
+ 			  gen_rtx_fmt_ee (comparison, QImode,
+ 					  set_dst,
+ 					  const0_rtx)));
+ 
+   if (label)
+     emit_label (label);
+ 
+   return SUBREG_REG (target);
+ }
+ 
  /* Subroutine of ix86_expand_builtin to take care of comi insns.  */
  
  static rtx
  ix86_expand_sse_comi (const struct builtin_description *d, tree exp,
  		      rtx target)
  {
!   rtx pat, set_dst;
    tree arg0 = CALL_EXPR_ARG (exp, 0);
    tree arg1 = CALL_EXPR_ARG (exp, 1);
    rtx op0 = expand_normal (arg0);
    rtx op1 = expand_normal (arg1);
!   enum insn_code icode = d->icode;
!   const struct insn_data_d *insn_p = &insn_data[icode];
!   machine_mode mode0 = insn_p->operand[0].mode;
!   machine_mode mode1 = insn_p->operand[1].mode;
  
    if (VECTOR_MODE_P (mode0))
      op0 = safe_vector_operand (op0, mode0);
    if (VECTOR_MODE_P (mode1))
      op1 = safe_vector_operand (op1, mode1);
  
+   enum rtx_code comparison = d->comparison;
+   rtx const_val = const0_rtx;
+ 
+   bool check_unordered = false;
+   machine_mode mode = CCFPmode;
+   switch (comparison)
+     {
+     case LE:	/* -> GE  */
+     case LT:	/* -> GT  */
+       std::swap (op0, op1);
+       comparison = swap_condition (comparison);
+       /* FALLTHRU */
+     case GT:
+     case GE:
+       break;
+     case EQ:
+       check_unordered = true;
+       mode = CCZmode;
+       break;
+     case NE:
+       check_unordered = true;
+       mode = CCZmode;
+       const_val = const1_rtx;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
    target = gen_reg_rtx (SImode);
!   emit_move_insn (target, const_val);
    target = gen_rtx_SUBREG (QImode, target, 0);
  
    if ((optimize && !register_operand (op0, mode0))
!       || !insn_p->operand[0].predicate (op0, mode0))
      op0 = copy_to_mode_reg (mode0, op0);
    if ((optimize && !register_operand (op1, mode1))
!       || !insn_p->operand[1].predicate (op1, mode1))
      op1 = copy_to_mode_reg (mode1, op1);
  
!   pat = GEN_FCN (icode) (op0, op1);
    if (! pat)
      return 0;
  
!   set_dst = SET_DEST (pat);
!   emit_insn (pat);
!   return ix86_ssecom_setcc (comparison, check_unordered, mode,
! 			    set_dst, target);
  }
  
  /* Subroutines of ix86_expand_args_builtin to take care of round insns.  */
*************** ix86_expand_args_builtin (const struct b
*** 10177,10182 ****
--- 10508,10514 ----
        return ix86_expand_sse_ptest (d, exp, target);
      case FLOAT128_FTYPE_FLOAT128:
      case FLOAT_FTYPE_FLOAT:
+     case FLOAT_FTYPE_BFLOAT16:
      case INT_FTYPE_INT:
      case UINT_FTYPE_UINT:
      case UINT16_FTYPE_UINT16:
*************** ix86_expand_args_builtin (const struct b
*** 10294,10302 ****
      case V8DF_FTYPE_V2DF:
      case V8DF_FTYPE_V8DF:
      case V4DI_FTYPE_V4DI:
!     case V16HI_FTYPE_V16SF:
!     case V8HI_FTYPE_V8SF:
!     case V8HI_FTYPE_V4SF:
        nargs = 1;
        break;
      case V4SF_FTYPE_V4SF_VEC_MERGE:
--- 10626,10634 ----
      case V8DF_FTYPE_V2DF:
      case V8DF_FTYPE_V8DF:
      case V4DI_FTYPE_V4DI:
!     case V16BF_FTYPE_V16SF:
!     case V8BF_FTYPE_V8SF:
!     case V8BF_FTYPE_V4SF:
        nargs = 1;
        break;
      case V4SF_FTYPE_V4SF_VEC_MERGE:
*************** ix86_expand_args_builtin (const struct b
*** 10359,10364 ****
--- 10691,10697 ----
      case V8SI_FTYPE_V16HI_V16HI:
      case V4DI_FTYPE_V4DI_V4DI:
      case V4DI_FTYPE_V8SI_V8SI:
+     case V4DI_FTYPE_V32QI_V32QI:
      case V8DI_FTYPE_V64QI_V64QI:
        if (comparison == UNKNOWN)
  	return ix86_expand_binop_builtin (icode, exp, target);
*************** ix86_expand_args_builtin (const struct b
*** 10423,10434 ****
      case USI_FTYPE_USI_USI:
      case UDI_FTYPE_UDI_UDI:
      case V16SI_FTYPE_V8DF_V8DF:
!     case V32HI_FTYPE_V16SF_V16SF:
!     case V16HI_FTYPE_V8SF_V8SF:
!     case V8HI_FTYPE_V4SF_V4SF:
!     case V16HI_FTYPE_V16SF_UHI:
!     case V8HI_FTYPE_V8SF_UQI:
!     case V8HI_FTYPE_V4SF_UQI:
        nargs = 2;
        break;
      case V2DI_FTYPE_V2DI_INT_CONVERT:
--- 10756,10767 ----
      case USI_FTYPE_USI_USI:
      case UDI_FTYPE_UDI_UDI:
      case V16SI_FTYPE_V8DF_V8DF:
!     case V32BF_FTYPE_V16SF_V16SF:
!     case V16BF_FTYPE_V8SF_V8SF:
!     case V8BF_FTYPE_V4SF_V4SF:
!     case V16BF_FTYPE_V16SF_UHI:
!     case V8BF_FTYPE_V8SF_UQI:
!     case V8BF_FTYPE_V4SF_UQI:
        nargs = 2;
        break;
      case V2DI_FTYPE_V2DI_INT_CONVERT:
*************** ix86_expand_args_builtin (const struct b
*** 10634,10648 ****
      case V16HI_FTYPE_V16HI_V16HI_V16HI:
      case V8SI_FTYPE_V8SI_V8SI_V8SI:
      case V8HI_FTYPE_V8HI_V8HI_V8HI:
!     case V32HI_FTYPE_V16SF_V16SF_USI:
!     case V16HI_FTYPE_V8SF_V8SF_UHI:
!     case V8HI_FTYPE_V4SF_V4SF_UQI:
!     case V16HI_FTYPE_V16SF_V16HI_UHI:
!     case V8HI_FTYPE_V8SF_V8HI_UQI:
!     case V8HI_FTYPE_V4SF_V8HI_UQI:
!     case V16SF_FTYPE_V16SF_V32HI_V32HI:
!     case V8SF_FTYPE_V8SF_V16HI_V16HI:
!     case V4SF_FTYPE_V4SF_V8HI_V8HI:
        nargs = 3;
        break;
      case V32QI_FTYPE_V32QI_V32QI_INT:
--- 10967,10981 ----
      case V16HI_FTYPE_V16HI_V16HI_V16HI:
      case V8SI_FTYPE_V8SI_V8SI_V8SI:
      case V8HI_FTYPE_V8HI_V8HI_V8HI:
!     case V32BF_FTYPE_V16SF_V16SF_USI:
!     case V16BF_FTYPE_V8SF_V8SF_UHI:
!     case V8BF_FTYPE_V4SF_V4SF_UQI:
!     case V16BF_FTYPE_V16SF_V16BF_UHI:
!     case V8BF_FTYPE_V8SF_V8BF_UQI:
!     case V8BF_FTYPE_V4SF_V8BF_UQI:
!     case V16SF_FTYPE_V16SF_V32BF_V32BF:
!     case V8SF_FTYPE_V8SF_V16BF_V16BF:
!     case V4SF_FTYPE_V4SF_V8BF_V8BF:
        nargs = 3;
        break;
      case V32QI_FTYPE_V32QI_V32QI_INT:
*************** ix86_expand_args_builtin (const struct b
*** 10789,10797 ****
      case V16HI_FTYPE_V32QI_V32QI_V16HI_UHI:
      case V8SI_FTYPE_V16HI_V16HI_V8SI_UQI:
      case V4SI_FTYPE_V8HI_V8HI_V4SI_UQI:
!     case V32HI_FTYPE_V16SF_V16SF_V32HI_USI:
!     case V16HI_FTYPE_V8SF_V8SF_V16HI_UHI:
!     case V8HI_FTYPE_V4SF_V4SF_V8HI_UQI:
        nargs = 4;
        break;
      case V2DF_FTYPE_V2DF_V2DF_V2DI_INT:
--- 11122,11130 ----
      case V16HI_FTYPE_V32QI_V32QI_V16HI_UHI:
      case V8SI_FTYPE_V16HI_V16HI_V8SI_UQI:
      case V4SI_FTYPE_V8HI_V8HI_V4SI_UQI:
!     case V32BF_FTYPE_V16SF_V16SF_V32BF_USI:
!     case V16BF_FTYPE_V8SF_V8SF_V16BF_UHI:
!     case V8BF_FTYPE_V4SF_V4SF_V8BF_UQI:
        nargs = 4;
        break;
      case V2DF_FTYPE_V2DF_V2DF_V2DI_INT:
*************** ix86_expand_args_builtin (const struct b
*** 10829,10837 ****
        break;
      case UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED:
      case UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG:
!     case V16SF_FTYPE_V16SF_V32HI_V32HI_UHI:
!     case V8SF_FTYPE_V8SF_V16HI_V16HI_UQI:
!     case V4SF_FTYPE_V4SF_V8HI_V8HI_UQI:
        nargs = 4;
        break;
      case UQI_FTYPE_V8DI_V8DI_INT_UQI:
--- 11162,11170 ----
        break;
      case UCHAR_FTYPE_UCHAR_UINT_UINT_PUNSIGNED:
      case UCHAR_FTYPE_UCHAR_ULONGLONG_ULONGLONG_PULONGLONG:
!     case V16SF_FTYPE_V16SF_V32BF_V32BF_UHI:
!     case V8SF_FTYPE_V8SF_V16BF_V16BF_UQI:
!     case V4SF_FTYPE_V4SF_V8BF_V8BF_UQI:
        nargs = 4;
        break;
      case UQI_FTYPE_V8DI_V8DI_INT_UQI:
*************** ix86_expand_sse_comi_round (const struct
*** 11401,11442 ****
  
    emit_insn (pat);
  
!   rtx_code_label *label = NULL;
! 
!   /* NB: For ordered EQ or unordered NE, check ZF alone isn't sufficient
!      with NAN operands.  */
!   if (check_unordered)
!     {
!       gcc_assert (comparison == EQ || comparison == NE);
! 
!       rtx flag = gen_rtx_REG (CCFPmode, FLAGS_REG);
!       label = gen_label_rtx ();
!       rtx tmp = gen_rtx_fmt_ee (UNORDERED, VOIDmode, flag, const0_rtx);
!       tmp = gen_rtx_IF_THEN_ELSE (VOIDmode, tmp,
! 				  gen_rtx_LABEL_REF (VOIDmode, label),
! 				  pc_rtx);
!       emit_jump_insn (gen_rtx_SET (pc_rtx, tmp));
!     }
! 
!   /* NB: Set CCFPmode and check a different CCmode which is in subset
!      of CCFPmode.  */
!   if (GET_MODE (set_dst) != mode)
!     {
!       gcc_assert (mode == CCAmode || mode == CCCmode
! 		  || mode == CCOmode || mode == CCPmode
! 		  || mode == CCSmode || mode == CCZmode);
!       set_dst = gen_rtx_REG (mode, FLAGS_REG);
!     }
! 
!   emit_insn (gen_rtx_SET (gen_rtx_STRICT_LOW_PART (VOIDmode, target),
! 			  gen_rtx_fmt_ee (comparison, QImode,
! 					  set_dst,
! 					  const0_rtx)));
! 
!   if (label)
!     emit_label (label);
! 
!   return SUBREG_REG (target);
  }
  
  static rtx
--- 11734,11741 ----
  
    emit_insn (pat);
  
!   return ix86_ssecom_setcc (comparison, check_unordered, mode,
! 			    set_dst, target);
  }
  
  static rtx
*************** ix86_expand_special_args_builtin (const
*** 11725,11732 ****
    tree arg;
    rtx pat, op;
    unsigned int i, nargs, arg_adjust, memory;
    bool aligned_mem = false;
!   rtx xops[3];
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
    machine_mode tmode = insn_p->operand[0].mode;
--- 12024,12032 ----
    tree arg;
    rtx pat, op;
    unsigned int i, nargs, arg_adjust, memory;
+   unsigned int constant = 100;
    bool aligned_mem = false;
!   rtx xops[4];
    enum insn_code icode = d->icode;
    const struct insn_data_d *insn_p = &insn_data[icode];
    machine_mode tmode = insn_p->operand[0].mode;
*************** ix86_expand_special_args_builtin (const
*** 11762,11767 ****
--- 12062,12075 ----
      case V8SF_FTYPE_PCV4SF:
      case V8SF_FTYPE_PCFLOAT:
      case V4SF_FTYPE_PCFLOAT:
+     case V4SF_FTYPE_PCFLOAT16:
+     case V4SF_FTYPE_PCBFLOAT16:
+     case V4SF_FTYPE_PCV8BF:
+     case V4SF_FTYPE_PCV8HF:
+     case V8SF_FTYPE_PCFLOAT16:
+     case V8SF_FTYPE_PCBFLOAT16:
+     case V8SF_FTYPE_PCV16HF:
+     case V8SF_FTYPE_PCV16BF:
      case V4DF_FTYPE_PCV2DF:
      case V4DF_FTYPE_PCDOUBLE:
      case V2DF_FTYPE_PCDOUBLE:
*************** ix86_expand_special_args_builtin (const
*** 12009,12014 ****
--- 12317,12329 ----
        klass = load;
        memory = 0;
        break;
+     case INT_FTYPE_PINT_INT_INT_INT:
+     case LONGLONG_FTYPE_PLONGLONG_LONGLONG_LONGLONG_INT:
+       nargs = 4;
+       klass = load;
+       memory = 0;
+       constant = 3;
+       break;
      default:
        gcc_unreachable ();
      }
*************** ix86_expand_special_args_builtin (const
*** 12074,12079 ****
--- 12389,12403 ----
  	  if (MEM_ALIGN (op) < align)
  	    set_mem_align (op, align);
  	}
+       else if (i == constant)
+ 	{
+ 	  /* This must be the constant.  */
+ 	  if (!insn_p->operand[nargs].predicate(op, SImode))
+ 	    {
+ 	      error ("the fourth argument must be one of enum %qs", "_CMPCCX_ENUM");
+ 	      return const0_rtx;
+ 	    }
+ 	}
        else
  	{
  	  /* This must be register.  */
*************** ix86_expand_special_args_builtin (const
*** 12115,12120 ****
--- 12439,12447 ----
      case 3:
        pat = GEN_FCN (icode) (target, xops[0], xops[1], xops[2]);
        break;
+     case 4:
+       pat = GEN_FCN (icode) (target, xops[0], xops[1], xops[2], xops[3]);
+       break;
      default:
        gcc_unreachable ();
      }
*************** ix86_expand_vec_set_builtin (tree exp)
*** 12234,12240 ****
    op1 = expand_expr (arg1, NULL_RTX, mode1, EXPAND_NORMAL);
    elt = get_element_number (TREE_TYPE (arg0), arg2);
  
!   if (GET_MODE (op1) != mode1 && GET_MODE (op1) != VOIDmode)
      op1 = convert_modes (mode1, GET_MODE (op1), op1, true);
  
    op0 = force_reg (tmode, op0);
--- 12561,12567 ----
    op1 = expand_expr (arg1, NULL_RTX, mode1, EXPAND_NORMAL);
    elt = get_element_number (TREE_TYPE (arg0), arg2);
  
!   if (GET_MODE (op1) != mode1)
      op1 = convert_modes (mode1, GET_MODE (op1), op1, true);
  
    op0 = force_reg (tmode, op0);
*************** ix86_check_builtin_isa_match (unsigned i
*** 12269,12274 ****
--- 12596,12605 ----
       OPTION_MASK_ISA_FMA | OPTION_MASK_ISA_FMA4
       (OPTION_MASK_ISA_AVX512VNNI | OPTION_MASK_ISA_AVX512VL) or
         OPTION_MASK_ISA2_AVXVNNI
+      (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512IFMA) or
+        OPTION_MASK_ISA2_AVXIFMA
+      (OPTION_MASK_ISA_AVXNECONVERT | OPTION_MASK_ISA2_AVX512BF16) or
+        OPTION_MASK_ISA2_AVXNECONVERT
       where for each such pair it is sufficient if either of the ISAs is
       enabled, plus if it is ored with other options also those others.
       OPTION_MASK_ISA_MMX in bisa is satisfied also if TARGET_MMX_WITH_SSE.  */
*************** ix86_check_builtin_isa_match (unsigned i
*** 12298,12303 ****
--- 12629,12656 ----
        isa2 |= OPTION_MASK_ISA2_AVXVNNI;
      }
  
+   if ((((bisa & (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL))
+ 	== (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL))
+        || (bisa2 & OPTION_MASK_ISA2_AVXIFMA) != 0)
+       && (((isa & (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL))
+ 	   == (OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL))
+ 	  || (isa2 & OPTION_MASK_ISA2_AVXIFMA) != 0))
+     {
+       isa |= OPTION_MASK_ISA_AVX512IFMA | OPTION_MASK_ISA_AVX512VL;
+       isa2 |= OPTION_MASK_ISA2_AVXIFMA;
+     }
+ 
+   if ((((bisa & OPTION_MASK_ISA_AVX512VL) != 0
+ 	 && (bisa2 & OPTION_MASK_ISA2_AVX512BF16) != 0)
+ 	&& (bisa2 & OPTION_MASK_ISA2_AVXNECONVERT) != 0)
+        && (((isa & OPTION_MASK_ISA_AVX512VL) != 0
+ 	    && (isa2 & OPTION_MASK_ISA2_AVX512BF16) != 0)
+ 	   || (isa2 & OPTION_MASK_ISA2_AVXNECONVERT) != 0))
+     {
+       isa |= OPTION_MASK_ISA_AVX512VL;
+       isa2 |= OPTION_MASK_ISA2_AVXNECONVERT | OPTION_MASK_ISA2_AVX512BF16;
+     }
+ 
    if ((bisa & OPTION_MASK_ISA_MMX) && !TARGET_MMX && TARGET_MMX_WITH_SSE
        /* __builtin_ia32_maskmovq requires MMX registers.  */
        && fcode != IX86_BUILTIN_MASKMOVQ)
*************** ix86_expand_builtin (tree exp, rtx targe
*** 12846,12851 ****
--- 13199,13300 ----
  	return target;
        }
  
+     case IX86_BUILTIN_PREFETCH:
+       {
+ 	arg0 = CALL_EXPR_ARG (exp, 0); // const void *
+ 	arg1 = CALL_EXPR_ARG (exp, 1); // const int
+ 	arg2 = CALL_EXPR_ARG (exp, 2); // const int
+ 	arg3 = CALL_EXPR_ARG (exp, 3); // const int
+ 
+ 	op0 = expand_normal (arg0);
+ 	op1 = expand_normal (arg1);
+ 	op2 = expand_normal (arg2);
+ 	op3 = expand_normal (arg3);
+ 
+ 	if (!CONST_INT_P (op1) || !CONST_INT_P (op2) || !CONST_INT_P (op3))
+ 	  {
+ 	    error ("second, third and fourth argument must be a const");
+ 	    return const0_rtx;
+ 	  }
+ 
+ 	if (INTVAL (op3) == 1)
+ 	  {
+ 	    if (INTVAL (op2) < 2 || INTVAL (op2) > 3)
+ 	      {
+ 		error ("invalid third argument");
+ 		return const0_rtx;
+ 	      }
+ 
+ 	    if (TARGET_64BIT && TARGET_PREFETCHI
+ 		&& local_func_symbolic_operand (op0, GET_MODE (op0)))
+ 	      emit_insn (gen_prefetchi (op0, op2));
+ 	    else
+ 	      {
+ 		warning (0, "instruction prefetch applies when in 64-bit mode"
+ 			    " with RIP-relative addressing and"
+ 			    " option %<-mprefetchi%>;"
+ 			    " they stay NOPs otherwise");
+ 		emit_insn (gen_nop ());
+ 	      }
+ 	  }
+ 	else
+ 	  {
+ 	    if (!address_operand (op0, VOIDmode))
+ 	      {
+ 		op0 = convert_memory_address (Pmode, op0);
+ 		op0 = copy_addr_to_reg (op0);
+ 	      }
+ 
+ 	    if (INTVAL (op2) < 0 || INTVAL (op2) > 3)
+ 	      {
+ 		warning (0, "invalid third argument to %<__builtin_ia32_prefetch%>; using zero");
+ 		op2 = const0_rtx;
+ 	      }
+ 
+ 	    if (TARGET_3DNOW || TARGET_PREFETCH_SSE
+ 		|| TARGET_PRFCHW || TARGET_PREFETCHWT1)
+ 	      emit_insn (gen_prefetch (op0, op1, op2));
+ 	    else if (!MEM_P (op0) && side_effects_p (op0))
+ 	      /* Don't do anything with direct references to volatile memory,
+ 		 but generate code to handle other side effects.  */
+ 	      emit_insn (op0);
+ 	  }
+ 
+ 	return 0;
+       }
+ 
+     case IX86_BUILTIN_PREFETCHI:
+       {
+ 	arg0 = CALL_EXPR_ARG (exp, 0); // const void *
+ 	arg1 = CALL_EXPR_ARG (exp, 1); // const int
+ 
+ 	op0 = expand_normal (arg0);
+ 	op1 = expand_normal (arg1);
+ 
+ 	if (!CONST_INT_P (op1))
+ 	  {
+ 	    error ("second argument must be a const");
+ 	    return const0_rtx;
+ 	  }
+ 
+ 	/* GOT/PLT_PIC should not be available for instruction prefetch.
+ 	   It must be real instruction address.  */
+ 	if (TARGET_64BIT
+ 	    && local_func_symbolic_operand (op0, GET_MODE (op0)))
+ 	  emit_insn (gen_prefetchi (op0, op1));
+ 	else
+ 	  {
+ 	    /* Ignore the hint.  */
+ 	    warning (0, "instruction prefetch applies when in 64-bit mode"
+ 			" with RIP-relative addressing and"
+ 			" option %<-mprefetchi%>;"
+ 			" they stay NOPs otherwise");
+ 	    emit_insn (gen_nop ());
+ 	  }
+ 
+ 	return 0;
+       }
+ 
      case IX86_BUILTIN_VEC_INIT_V2SI:
      case IX86_BUILTIN_VEC_INIT_V4HI:
      case IX86_BUILTIN_VEC_INIT_V8QI:
*************** ix86_vector_duplicate_value (machine_mod
*** 14808,14813 ****
--- 15257,15266 ----
    bool ok;
    rtx_insn *insn;
    rtx dup;
+   /* Save/restore recog_data in case this is called from splitters
+      or other routines where recog_data needs to stay valid across
+      force_reg.  See PR106577.  */
+   recog_data_d recog_data_save = recog_data;
  
    /* First attempt to recognize VAL as-is.  */
    dup = gen_vec_duplicate (mode, val);
*************** ix86_vector_duplicate_value (machine_mod
*** 14833,14838 ****
--- 15286,15292 ----
        ok = recog_memoized (insn) >= 0;
        gcc_assert (ok);
      }
+   recog_data = recog_data_save;
    return true;
  }
  
*************** static machine_mode
*** 14843,14849 ****
  get_mode_wider_vector (machine_mode o)
  {
    /* ??? Rely on the ordering that genmodes.cc gives to vectors.  */
!   machine_mode n = GET_MODE_WIDER_MODE (o).require ();
    gcc_assert (GET_MODE_NUNITS (o) == GET_MODE_NUNITS (n) * 2);
    gcc_assert (GET_MODE_SIZE (o) == GET_MODE_SIZE (n));
    return n;
--- 15297,15303 ----
  get_mode_wider_vector (machine_mode o)
  {
    /* ??? Rely on the ordering that genmodes.cc gives to vectors.  */
!   machine_mode n = GET_MODE_NEXT_MODE (o).require ();
    gcc_assert (GET_MODE_NUNITS (o) == GET_MODE_NUNITS (n) * 2);
    gcc_assert (GET_MODE_SIZE (o) == GET_MODE_SIZE (n));
    return n;
*************** ix86_expand_vector_init_duplicate (bool
*** 14919,14924 ****
--- 15373,15379 ----
  
      case E_V8HImode:
      case E_V8HFmode:
+     case E_V8BFmode:
        if (TARGET_AVX2)
  	return ix86_vector_duplicate_value (mode, target, val);
  
*************** ix86_expand_vector_init_duplicate (bool
*** 14935,14945 ****
  	  dperm.op0 = dperm.op1 = gen_reg_rtx (mode);
  	  dperm.one_operand_p = true;
  
! 	  if (mode == V8HFmode)
  	    {
! 	      tmp1 = force_reg (HFmode, val);
  	      tmp2 = gen_reg_rtx (mode);
! 	      emit_insn (gen_vec_setv8hf_0 (tmp2, CONST0_RTX (mode), tmp1));
  	      tmp1 = gen_lowpart (mode, tmp2);
  	    }
  	  else
--- 15390,15401 ----
  	  dperm.op0 = dperm.op1 = gen_reg_rtx (mode);
  	  dperm.one_operand_p = true;
  
! 	  if (mode == V8HFmode || mode == V8BFmode)
  	    {
! 	      tmp1 = force_reg (GET_MODE_INNER (mode), val);
  	      tmp2 = gen_reg_rtx (mode);
! 	      emit_insn (maybe_gen_vec_set_0 (mode, tmp2,
! 					      CONST0_RTX (mode), tmp1));
  	      tmp1 = gen_lowpart (mode, tmp2);
  	    }
  	  else
*************** ix86_expand_vector_init_duplicate (bool
*** 15003,15016 ****
  
      case E_V16HImode:
      case E_V16HFmode:
      case E_V32QImode:
        if (TARGET_AVX2)
  	return ix86_vector_duplicate_value (mode, target, val);
        else
  	{
! 	  machine_mode hvmode = (mode == V16HImode ? V8HImode
! 				 : mode == V16HFmode ? V8HFmode
! 				 : V16QImode);
  	  rtx x = gen_reg_rtx (hvmode);
  
  	  ok = ix86_expand_vector_init_duplicate (false, hvmode, x, val);
--- 15459,15488 ----
  
      case E_V16HImode:
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V32QImode:
        if (TARGET_AVX2)
  	return ix86_vector_duplicate_value (mode, target, val);
        else
  	{
! 	  machine_mode hvmode;
! 	  switch (mode)
! 	    {
! 	    case V16HImode:
! 	      hvmode = V8HImode;
! 	      break;
! 	    case V16HFmode:
! 	      hvmode = V8HFmode;
! 	      break;
! 	    case V16BFmode:
! 	      hvmode = V8BFmode;
! 	      break;
! 	    case V32QImode:
! 	      hvmode = V16QImode;
! 	      break;
! 	    default:
! 	      gcc_unreachable ();
! 	    }
  	  rtx x = gen_reg_rtx (hvmode);
  
  	  ok = ix86_expand_vector_init_duplicate (false, hvmode, x, val);
*************** ix86_expand_vector_init_duplicate (bool
*** 15023,15036 ****
  
      case E_V32HImode:
      case E_V32HFmode:
      case E_V64QImode:
        if (TARGET_AVX512BW)
  	return ix86_vector_duplicate_value (mode, target, val);
        else
  	{
! 	  machine_mode hvmode = (mode == V32HImode ? V16HImode
! 				 : mode == V32HFmode ? V16HFmode
! 				 : V32QImode);
  	  rtx x = gen_reg_rtx (hvmode);
  
  	  ok = ix86_expand_vector_init_duplicate (false, hvmode, x, val);
--- 15495,15524 ----
  
      case E_V32HImode:
      case E_V32HFmode:
+     case E_V32BFmode:
      case E_V64QImode:
        if (TARGET_AVX512BW)
  	return ix86_vector_duplicate_value (mode, target, val);
        else
  	{
! 	  machine_mode hvmode;
! 	  switch (mode)
! 	    {
! 	    case V32HImode:
! 	      hvmode = V16HImode;
! 	      break;
! 	    case V32HFmode:
! 	      hvmode = V16HFmode;
! 	      break;
! 	    case V32BFmode:
! 	      hvmode = V16BFmode;
! 	      break;
! 	    case V64QImode:
! 	      hvmode = V32QImode;
! 	      break;
! 	    default:
! 	      gcc_unreachable ();
! 	    }
  	  rtx x = gen_reg_rtx (hvmode);
  
  	  ok = ix86_expand_vector_init_duplicate (false, hvmode, x, val);
*************** ix86_expand_vector_init_one_nonzero (boo
*** 15143,15148 ****
--- 15631,15648 ----
        use_vector_set = TARGET_AVX512FP16 && one_var == 0;
        gen_vec_set_0 = gen_vec_setv32hf_0;
        break;
+     case E_V8BFmode:
+       use_vector_set = TARGET_AVX512FP16 && one_var == 0;
+       gen_vec_set_0 = gen_vec_setv8bf_0;
+       break;
+     case E_V16BFmode:
+       use_vector_set = TARGET_AVX512FP16 && one_var == 0;
+       gen_vec_set_0 = gen_vec_setv16bf_0;
+       break;
+     case E_V32BFmode:
+       use_vector_set = TARGET_AVX512FP16 && one_var == 0;
+       gen_vec_set_0 = gen_vec_setv32bf_0;
+       break;
      case E_V32HImode:
        use_vector_set = TARGET_AVX512FP16 && one_var == 0;
        gen_vec_set_0 = gen_vec_setv32hi_0;
*************** ix86_expand_vector_init_one_var (bool mm
*** 15297,15302 ****
--- 15797,15804 ----
        /* FALLTHRU */
      case E_V8HFmode:
      case E_V16HFmode:
+     case E_V8BFmode:
+     case E_V16BFmode:
      case E_V4DFmode:
      case E_V8SFmode:
      case E_V8SImode:
*************** ix86_expand_vector_init_concat (machine_
*** 15380,15385 ****
--- 15882,15890 ----
  	case E_V32HFmode:
  	  half_mode = V16HFmode;
  	  break;
+ 	case E_V32BFmode:
+ 	  half_mode = V16BFmode;
+ 	  break;
  	case E_V16SImode:
  	  half_mode = V8SImode;
  	  break;
*************** ix86_expand_vector_init_concat (machine_
*** 15395,15400 ****
--- 15900,15908 ----
  	case E_V16HFmode:
  	  half_mode = V8HFmode;
  	  break;
+ 	case E_V16BFmode:
+ 	  half_mode = V8BFmode;
+ 	  break;
  	case E_V8SImode:
  	  half_mode = V4SImode;
  	  break;
*************** ix86_expand_vector_init_interleave (mach
*** 15553,15558 ****
--- 16061,16075 ----
        second_imode = V2DImode;
        third_imode = VOIDmode;
        break;
+     case E_V8BFmode:
+       gen_load_even = gen_vec_interleave_lowv8bf;
+       gen_interleave_first_low = gen_vec_interleave_lowv4si;
+       gen_interleave_second_low = gen_vec_interleave_lowv2di;
+       inner_mode = BFmode;
+       first_imode = V4SImode;
+       second_imode = V2DImode;
+       third_imode = VOIDmode;
+       break;
      case E_V8HImode:
        gen_load_even = gen_vec_setv8hi;
        gen_interleave_first_low = gen_vec_interleave_lowv4si;
*************** ix86_expand_vector_init_interleave (mach
*** 15578,15592 ****
    for (i = 0; i < n; i++)
      {
        op = ops [i + i];
!       if (inner_mode == HFmode)
  	{
  	  rtx even, odd;
! 	  /* Use vpuncklwd to pack 2 HFmode.  */
! 	  op0 = gen_reg_rtx (V8HFmode);
! 	  even = lowpart_subreg (V8HFmode, force_reg (HFmode, op), HFmode);
! 	  odd = lowpart_subreg (V8HFmode,
! 				force_reg (HFmode, ops[i + i + 1]),
! 				HFmode);
  	  emit_insn (gen_load_even (op0, even, odd));
  	}
        else
--- 16095,16112 ----
    for (i = 0; i < n; i++)
      {
        op = ops [i + i];
!       if (inner_mode == HFmode || inner_mode == BFmode)
  	{
  	  rtx even, odd;
! 	  /* Use vpuncklwd to pack 2 HFmode or BFmode.  */
! 	  machine_mode vec_mode =
! 	    (inner_mode == HFmode) ? V8HFmode : V8BFmode;
! 	  op0 = gen_reg_rtx (vec_mode);
! 	  even = lowpart_subreg (vec_mode,
! 				 force_reg (inner_mode, op), inner_mode);
! 	  odd = lowpart_subreg (vec_mode,
! 				force_reg (inner_mode, ops[i + i + 1]),
! 				inner_mode);
  	  emit_insn (gen_load_even (op0, even, odd));
  	}
        else
*************** ix86_expand_vector_init_general (bool mm
*** 15735,15740 ****
--- 16255,16264 ----
        half_mode = V8HFmode;
        goto half;
  
+     case E_V16BFmode:
+       half_mode = V8BFmode;
+       goto half;
+ 
  half:
        n = GET_MODE_NUNITS (mode);
        for (i = 0; i < n; i++)
*************** half:
*** 15763,15768 ****
--- 16287,16297 ----
        half_mode = V16HFmode;
        goto quarter;
  
+     case E_V32BFmode:
+       quarter_mode = V8BFmode;
+       half_mode = V16BFmode;
+       goto quarter;
+ 
  quarter:
        n = GET_MODE_NUNITS (mode);
        for (i = 0; i < n; i++)
*************** quarter:
*** 15802,15807 ****
--- 16331,16337 ----
        /* FALLTHRU */
  
      case E_V8HFmode:
+     case E_V8BFmode:
  
        n = GET_MODE_NUNITS (mode);
        for (i = 0; i < n; i++)
*************** ix86_expand_vector_init (bool mmx_ok, rt
*** 15905,15911 ****
  	  if (inner_mode == QImode
  	      || inner_mode == HImode
  	      || inner_mode == TImode
! 	      || inner_mode == HFmode)
  	    {
  	      unsigned int n_bits = n_elts * GET_MODE_SIZE (inner_mode);
  	      scalar_mode elt_mode = inner_mode == TImode ? DImode : SImode;
--- 16435,16442 ----
  	  if (inner_mode == QImode
  	      || inner_mode == HImode
  	      || inner_mode == TImode
! 	      || inner_mode == HFmode
! 	      || inner_mode == BFmode)
  	    {
  	      unsigned int n_bits = n_elts * GET_MODE_SIZE (inner_mode);
  	      scalar_mode elt_mode = inner_mode == TImode ? DImode : SImode;
*************** ix86_expand_vector_set_var (rtx target,
*** 15989,15995 ****
    /* 512-bits vector byte/word broadcast and comparison only available
       under TARGET_AVX512BW, break 512-bits vector into two 256-bits vector
       when without TARGET_AVX512BW.  */
!   if ((mode == V32HImode || mode == V32HFmode || mode == V64QImode)
        && !TARGET_AVX512BW)
      {
        gcc_assert (TARGET_AVX512F);
--- 16520,16527 ----
    /* 512-bits vector byte/word broadcast and comparison only available
       under TARGET_AVX512BW, break 512-bits vector into two 256-bits vector
       when without TARGET_AVX512BW.  */
!   if ((mode == V32HImode || mode == V32HFmode || mode == V32BFmode
!        || mode == V64QImode)
        && !TARGET_AVX512BW)
      {
        gcc_assert (TARGET_AVX512F);
*************** ix86_expand_vector_set_var (rtx target,
*** 16010,16015 ****
--- 16542,16553 ----
  	  extract_hi = gen_vec_extract_hi_v32hf;
  	  extract_lo = gen_vec_extract_lo_v32hf;
  	}
+       else if (mode == V32BFmode)
+ 	{
+ 	  half_mode = V16BFmode;
+ 	  extract_hi = gen_vec_extract_hi_v32bf;
+ 	  extract_lo = gen_vec_extract_lo_v32bf;
+ 	}
        else
  	{
  	  half_mode = V32QImode;
*************** ix86_expand_vector_set_var (rtx target,
*** 16066,16071 ****
--- 16604,16618 ----
  	case E_V32HFmode:
  	  cmp_mode = V32HImode;
  	  break;
+ 	case E_V8BFmode:
+ 	  cmp_mode = V8HImode;
+ 	  break;
+ 	case E_V16BFmode:
+ 	  cmp_mode = V16HImode;
+ 	  break;
+ 	case E_V32BFmode:
+ 	  cmp_mode = V32HImode;
+ 	  break;
  	default:
  	  gcc_unreachable ();
  	}
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 16103,16109 ****
    bool use_vec_merge = false;
    bool blendm_const = false;
    rtx tmp;
!   static rtx (*gen_extract[7][2]) (rtx, rtx)
      = {
  	{ gen_vec_extract_lo_v32qi, gen_vec_extract_hi_v32qi },
  	{ gen_vec_extract_lo_v16hi, gen_vec_extract_hi_v16hi },
--- 16650,16656 ----
    bool use_vec_merge = false;
    bool blendm_const = false;
    rtx tmp;
!   static rtx (*gen_extract[8][2]) (rtx, rtx)
      = {
  	{ gen_vec_extract_lo_v32qi, gen_vec_extract_hi_v32qi },
  	{ gen_vec_extract_lo_v16hi, gen_vec_extract_hi_v16hi },
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 16111,16119 ****
  	{ gen_vec_extract_lo_v4di, gen_vec_extract_hi_v4di },
  	{ gen_vec_extract_lo_v8sf, gen_vec_extract_hi_v8sf },
  	{ gen_vec_extract_lo_v4df, gen_vec_extract_hi_v4df },
! 	{ gen_vec_extract_lo_v16hf, gen_vec_extract_hi_v16hf }
        };
!   static rtx (*gen_insert[7][2]) (rtx, rtx, rtx)
      = {
  	{ gen_vec_set_lo_v32qi, gen_vec_set_hi_v32qi },
  	{ gen_vec_set_lo_v16hi, gen_vec_set_hi_v16hi },
--- 16658,16667 ----
  	{ gen_vec_extract_lo_v4di, gen_vec_extract_hi_v4di },
  	{ gen_vec_extract_lo_v8sf, gen_vec_extract_hi_v8sf },
  	{ gen_vec_extract_lo_v4df, gen_vec_extract_hi_v4df },
! 	{ gen_vec_extract_lo_v16hf, gen_vec_extract_hi_v16hf },
! 	{ gen_vec_extract_lo_v16bf, gen_vec_extract_hi_v16bf }
        };
!   static rtx (*gen_insert[8][2]) (rtx, rtx, rtx)
      = {
  	{ gen_vec_set_lo_v32qi, gen_vec_set_hi_v32qi },
  	{ gen_vec_set_lo_v16hi, gen_vec_set_hi_v16hi },
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 16122,16127 ****
--- 16670,16676 ----
  	{ gen_vec_set_lo_v8sf, gen_vec_set_hi_v8sf },
  	{ gen_vec_set_lo_v4df, gen_vec_set_hi_v4df },
  	{ gen_vec_set_lo_v16hf, gen_vec_set_hi_v16hf },
+ 	{ gen_vec_set_lo_v16bf, gen_vec_set_hi_v16bf },
        };
    int i, j, n;
    machine_mode mmode = VOIDmode;
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 16290,16295 ****
--- 16839,16845 ----
  
      case E_V8HImode:
      case E_V8HFmode:
+     case E_V8BFmode:
      case E_V2HImode:
        use_vec_merge = TARGET_SSE2;
        break;
*************** ix86_expand_vector_set (bool mmx_ok, rtx
*** 16313,16330 ****
        goto half;
  
      case E_V16HFmode:
        /* For ELT == 0, vec_setv8hf_0 can save 1 vpbroadcastw.  */
        if (TARGET_AVX2 && elt != 0)
  	{
  	  mmode = SImode;
! 	  gen_blendm = gen_avx2_pblendph_1;
  	  blendm_const = true;
  	  break;
  	}
        else
  	{
! 	  half_mode = V8HFmode;
! 	  j = 6;
  	  n = 8;
  	  goto half;
  	}
--- 16863,16882 ----
        goto half;
  
      case E_V16HFmode:
+     case E_V16BFmode:
        /* For ELT == 0, vec_setv8hf_0 can save 1 vpbroadcastw.  */
        if (TARGET_AVX2 && elt != 0)
  	{
  	  mmode = SImode;
! 	  gen_blendm = ((mode == E_V16HFmode) ? gen_avx2_pblendph_1
! 						: gen_avx2_pblendbf_1);
  	  blendm_const = true;
  	  break;
  	}
        else
  	{
! 	  half_mode = ((mode == E_V16HFmode) ? V8HFmode : V8BFmode);
! 	  j = ((mode == E_V16HFmode) ? 6 : 7);
  	  n = 8;
  	  goto half;
  	}
*************** half:
*** 16416,16421 ****
--- 16968,16980 ----
  	  gen_blendm = gen_avx512bw_blendmv32hf;
  	}
        break;
+     case E_V32BFmode:
+       if (TARGET_AVX512BW)
+ 	{
+ 	  mmode = SImode;
+ 	  gen_blendm = gen_avx512bw_blendmv32bf;
+ 	}
+       break;
      case E_V32HImode:
        if (TARGET_AVX512BW)
  	{
*************** ix86_expand_vector_extract (bool mmx_ok,
*** 16623,16628 ****
--- 17182,17188 ----
  
      case E_V8HImode:
      case E_V8HFmode:
+     case E_V8BFmode:
      case E_V2HImode:
        use_vec_extr = TARGET_SSE2;
        break;
*************** ix86_expand_vector_extract (bool mmx_ok,
*** 16789,16814 ****
        return;
  
      case E_V32HFmode:
        if (TARGET_AVX512BW)
  	{
! 	  tmp = gen_reg_rtx (V16HFmode);
  	  if (elt < 16)
! 	    emit_insn (gen_vec_extract_lo_v32hf (tmp, vec));
  	  else
! 	    emit_insn (gen_vec_extract_hi_v32hf (tmp, vec));
  	  ix86_expand_vector_extract (false, target, tmp, elt & 15);
  	  return;
  	}
        break;
  
      case E_V16HFmode:
        if (TARGET_AVX)
  	{
! 	  tmp = gen_reg_rtx (V8HFmode);
  	  if (elt < 8)
! 	    emit_insn (gen_vec_extract_lo_v16hf (tmp, vec));
  	  else
! 	    emit_insn (gen_vec_extract_hi_v16hf (tmp, vec));
  	  ix86_expand_vector_extract (false, target, tmp, elt & 7);
  	  return;
  	}
--- 17349,17380 ----
        return;
  
      case E_V32HFmode:
+     case E_V32BFmode:
        if (TARGET_AVX512BW)
  	{
! 	  tmp = (mode == E_V32HFmode
! 		 ? gen_reg_rtx (V16HFmode)
! 		 : gen_reg_rtx (V16BFmode));
  	  if (elt < 16)
! 	    emit_insn (maybe_gen_vec_extract_lo (mode, tmp, vec));
  	  else
! 	    emit_insn (maybe_gen_vec_extract_hi (mode, tmp, vec));
  	  ix86_expand_vector_extract (false, target, tmp, elt & 15);
  	  return;
  	}
        break;
  
      case E_V16HFmode:
+     case E_V16BFmode:
        if (TARGET_AVX)
  	{
! 	  tmp = (mode == E_V16HFmode
! 		 ? gen_reg_rtx (V8HFmode)
! 		 : gen_reg_rtx (V8BFmode));
  	  if (elt < 8)
! 	    emit_insn (maybe_gen_vec_extract_lo (mode, tmp, vec));
  	  else
! 	    emit_insn (maybe_gen_vec_extract_hi (mode, tmp, vec));
  	  ix86_expand_vector_extract (false, target, tmp, elt & 7);
  	  return;
  	}
*************** expand_vec_perm_movs (struct expand_vec_
*** 18394,18402 ****
    if (d->one_operand_p)
      return false;
  
!   if (!(TARGET_SSE && vmode == V4SFmode)
!       && !(TARGET_MMX_WITH_SSE && vmode == V2SFmode)
!       && !(TARGET_SSE2 && vmode == V2DFmode))
      return false;
  
    /* Only the first element is changed.  */
--- 18960,18968 ----
    if (d->one_operand_p)
      return false;
  
!   if (!(TARGET_SSE && (vmode == V4SFmode || vmode == V4SImode))
!       && !(TARGET_MMX_WITH_SSE && (vmode == V2SFmode || vmode == V2SImode))
!       && !(TARGET_SSE2 && (vmode == V2DFmode || vmode == V2DImode)))
      return false;
  
    /* Only the first element is changed.  */
*************** expand_vec_perm_blend (struct expand_vec
*** 18441,18449 ****
      ;
    else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
      ;
!   else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 16
! 			     || GET_MODE_SIZE (vmode) == 8
! 			     || GET_MODE_SIZE (vmode) == 4))
      ;
    else
      return false;
--- 19007,19016 ----
      ;
    else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
      ;
!   else if (TARGET_SSE4_1
! 	   && (GET_MODE_SIZE (vmode) == 16
! 	       || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
! 	       || GET_MODE_SIZE (vmode) == 4))
      ;
    else
      return false;
*************** expand_vec_perm_blend (struct expand_vec
*** 18476,18481 ****
--- 19043,19050 ----
      case E_V8SFmode:
      case E_V2DFmode:
      case E_V4SFmode:
+     case E_V2SFmode:
+     case E_V2HImode:
      case E_V4HImode:
      case E_V8HImode:
      case E_V8SImode:
*************** expand_vec_perm_blend (struct expand_vec
*** 18500,18509 ****
        goto do_subreg;
  
      case E_V4SImode:
!       for (i = 0; i < 4; ++i)
! 	mask |= (d->perm[i] >= 4 ? 3 : 0) << (i * 2);
!       vmode = V8HImode;
!       goto do_subreg;
  
      case E_V16QImode:
        /* See if bytes move in pairs so we can use pblendw with
--- 19069,19088 ----
        goto do_subreg;
  
      case E_V4SImode:
!       if (TARGET_AVX2)
! 	{
! 	  /* Use vpblendd instead of vpblendw.  */
! 	  for (i = 0; i < nelt; ++i)
! 	    mask |= ((unsigned HOST_WIDE_INT) (d->perm[i] >= nelt)) << i;
! 	  break;
! 	}
!       else
! 	{
! 	  for (i = 0; i < 4; ++i)
! 	    mask |= (d->perm[i] >= 4 ? 3 : 0) << (i * 2);
! 	  vmode = V8HImode;
! 	  goto do_subreg;
! 	}
  
      case E_V16QImode:
        /* See if bytes move in pairs so we can use pblendw with
*************** expand_vec_perm_1 (struct expand_vec_per
*** 19331,19341 ****
  	}
      }
  
    /* Try movss/movsd instructions.  */
    if (expand_vec_perm_movs (d))
      return true;
  
!   /* Finally, try the fully general two operand permute.  */
    if (expand_vselect_vconcat (d->target, d->op0, d->op1, d->perm, nelt,
  			      d->testing_p))
      return true;
--- 19910,19924 ----
  	}
      }
  
+   /* Try the SSE4.1 blend variable merge instructions.  */
+   if (expand_vec_perm_blend (d))
+     return true;
+ 
    /* Try movss/movsd instructions.  */
    if (expand_vec_perm_movs (d))
      return true;
  
!   /* Try the fully general two operand permute.  */
    if (expand_vselect_vconcat (d->target, d->op0, d->op1, d->perm, nelt,
  			      d->testing_p))
      return true;
*************** expand_vec_perm_1 (struct expand_vec_per
*** 19358,19367 ****
  	return true;
      }
  
-   /* Try the SSE4.1 blend variable merge instructions.  */
-   if (expand_vec_perm_blend (d))
-     return true;
- 
    /* Try one of the AVX vpermil variable permutations.  */
    if (expand_vec_perm_vpermil (d))
      return true;
--- 19941,19946 ----
*************** expand_vec_perm_1 (struct expand_vec_per
*** 19394,19399 ****
--- 19973,20108 ----
    return false;
  }
  
+ /* Canonicalize vec_perm index to make the first index
+    always comes from the first vector.  */
+ static void
+ ix86_vec_perm_index_canon (struct expand_vec_perm_d *d)
+ {
+   unsigned nelt = d->nelt;
+   if (d->perm[0] < nelt)
+     return;
+ 
+   for (unsigned i = 0; i != nelt; i++)
+     d->perm[i] = (d->perm[i] + nelt) % (2 * nelt);
+ 
+   std::swap (d->op0, d->op1);
+   return;
+ }
+ 
+ /* A subroutine of ix86_expand_vec_perm_const_1. Try to implement D
+    in terms of a pair of shufps+ shufps/pshufd instructions.  */
+ static bool
+ expand_vec_perm_shufps_shufps (struct expand_vec_perm_d *d)
+ {
+   unsigned char perm1[4];
+   machine_mode vmode = d->vmode;
+   bool ok;
+   unsigned i, j, k, count = 0;
+ 
+   if (d->one_operand_p
+       || (vmode != V4SImode && vmode != V4SFmode))
+     return false;
+ 
+   if (d->testing_p)
+     return true;
+ 
+   ix86_vec_perm_index_canon (d);
+   for (i = 0; i < 4; ++i)
+     count += d->perm[i] > 3 ? 1 : 0;
+ 
+   gcc_assert (count & 3);
+ 
+   rtx tmp = gen_reg_rtx (vmode);
+   /* 2 from op0 and 2 from op1.  */
+   if (count == 2)
+     {
+       unsigned char perm2[4];
+       for (i = 0, j = 0, k = 2; i < 4; ++i)
+ 	if (d->perm[i] & 4)
+ 	  {
+ 	    perm1[k++] = d->perm[i];
+ 	    perm2[i] = k - 1;
+ 	  }
+ 	else
+ 	  {
+ 	    perm1[j++] = d->perm[i];
+ 	    perm2[i] = j - 1;
+ 	  }
+ 
+       /* shufps.  */
+       ok = expand_vselect_vconcat (tmp, d->op0, d->op1,
+ 				  perm1, d->nelt, false);
+       gcc_assert (ok);
+       if (vmode == V4SImode && TARGET_SSE2)
+       /* pshufd.  */
+ 	ok = expand_vselect (d->target, tmp,
+ 			     perm2, d->nelt, false);
+       else
+ 	{
+ 	  /* shufps.  */
+ 	  perm2[2] += 4;
+ 	  perm2[3] += 4;
+ 	  ok = expand_vselect_vconcat (d->target, tmp, tmp,
+ 				       perm2, d->nelt, false);
+ 	}
+       gcc_assert (ok);
+     }
+   /* 3 from one op and 1 from another.  */
+   else
+     {
+       unsigned pair_idx = 8, lone_idx = 8, shift;
+ 
+       /* Find the lone index.  */
+       for (i = 0; i < 4; ++i)
+ 	if ((d->perm[i] > 3 && count == 1)
+ 	    || (d->perm[i] < 4 && count == 3))
+ 	  lone_idx = i;
+ 
+       /* When lone_idx is not 0, it must from second op(count == 1).  */
+       gcc_assert (count == (lone_idx ? 1 : 3));
+ 
+       /* Find the pair index that sits in the same half as the lone index.  */
+       shift = lone_idx & 2;
+       pair_idx = 1 - lone_idx + 2 * shift;
+ 
+       /* First permutate lone index and pair index into the same vector as
+ 	 [ lone, lone, pair, pair ].  */
+       perm1[1] = perm1[0]
+ 	= (count == 3) ? d->perm[lone_idx] : d->perm[lone_idx] - 4;
+       perm1[3] = perm1[2]
+ 	= (count == 3) ? d->perm[pair_idx] : d->perm[pair_idx] + 4;
+ 
+       /* Alway put the vector contains lone indx at the first.  */
+       if (count == 1)
+ 	std::swap (d->op0, d->op1);
+ 
+       /* shufps.  */
+       ok = expand_vselect_vconcat (tmp, d->op0, d->op1,
+ 				   perm1, d->nelt, false);
+       gcc_assert (ok);
+ 
+       /* Refine lone and pair index to original order.  */
+       perm1[shift] = lone_idx << 1;
+       perm1[shift + 1] = pair_idx << 1;
+ 
+       /* Select the remaining 2 elements in another vector.  */
+       for (i = 2 - shift; i < 4 - shift; ++i)
+ 	perm1[i] = lone_idx == 1 ? d->perm[i] + 4 : d->perm[i];
+ 
+       /* Adjust to original selector.  */
+       if (lone_idx > 1)
+ 	std::swap (tmp, d->op1);
+ 
+       /* shufps.  */
+       ok = expand_vselect_vconcat (d->target, tmp, d->op1,
+ 				   perm1, d->nelt, false);
+ 
+       gcc_assert (ok);
+     }
+ 
+   return true;
+ }
+ 
  /* A subroutine of ix86_expand_vec_perm_const_1.  Try to implement D
     in terms of a pair of pshuflw + pshufhw instructions.  */
  
*************** expand_vec_perm_palignr (struct expand_v
*** 19539,19547 ****
    shift = GEN_INT (min * GET_MODE_UNIT_BITSIZE (d->vmode));
    if (GET_MODE_SIZE (d->vmode) == 16)
      {
!       target = gen_reg_rtx (TImode);
!       emit_insn (gen_ssse3_palignrti (target, gen_lowpart (TImode, dcopy.op1),
! 				      gen_lowpart (TImode, dcopy.op0), shift));
      }
    else
      {
--- 20248,20258 ----
    shift = GEN_INT (min * GET_MODE_UNIT_BITSIZE (d->vmode));
    if (GET_MODE_SIZE (d->vmode) == 16)
      {
!       target = gen_reg_rtx (V1TImode);
!       emit_insn (gen_ssse3_palignrv1ti (target,
! 					gen_lowpart (V1TImode, dcopy.op1),
! 					gen_lowpart (V1TImode, dcopy.op0),
! 					shift));
      }
    else
      {
*************** expand_vec_perm_pblendv (struct expand_v
*** 19587,19595 ****
      ;
    else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
      ;
!   else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 4
! 			     || GET_MODE_SIZE (vmode) == 8
! 			     || GET_MODE_SIZE (vmode) == 16))
      ;
    else
      return false;
--- 20298,20307 ----
      ;
    else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
      ;
!   else if (TARGET_SSE4_1
! 	   && (GET_MODE_SIZE (vmode) == 16
! 	       || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
! 	       || GET_MODE_SIZE (vmode) == 4))
      ;
    else
      return false;
*************** expand_vec_perm_2perm_pblendv (struct ex
*** 20453,20461 ****
      ;
    else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
      ;
!   else if (TARGET_SSE4_1 && (GET_MODE_SIZE (vmode) == 16
! 			     || GET_MODE_SIZE (vmode) == 8
! 			     || GET_MODE_SIZE (vmode) == 4))
      ;
    else
      return false;
--- 21165,21174 ----
      ;
    else if (TARGET_AVX && (vmode == V4DFmode || vmode == V8SFmode))
      ;
!   else if (TARGET_SSE4_1
! 	   && (GET_MODE_SIZE (vmode) == 16
! 	       || (TARGET_MMX_WITH_SSE && GET_MODE_SIZE (vmode) == 8)
! 	       || GET_MODE_SIZE (vmode) == 4))
      ;
    else
      return false;
*************** expand_vec_perm_vpshufb2_vpermq_even_odd
*** 20942,20947 ****
--- 21655,21755 ----
    return true;
  }
  
+ /* Implement permutation with pslldq + psrldq + por when pshufb is not
+    available.  */
+ static bool
+ expand_vec_perm_pslldq_psrldq_por (struct expand_vec_perm_d *d, bool pandn)
+ {
+   unsigned i, nelt = d->nelt;
+   unsigned start1, end1 = -1;
+   machine_mode vmode = d->vmode, imode;
+   int start2 = -1;
+   bool clear_op0, clear_op1;
+   unsigned inner_size;
+   rtx op0, op1, dop1;
+   rtx (*gen_vec_shr) (rtx, rtx, rtx);
+   rtx (*gen_vec_shl) (rtx, rtx, rtx);
+ 
+   /* pshufd can be used for V4SI/V2DI under TARGET_SSE2.  */
+   if (!TARGET_SSE2 || (vmode != E_V16QImode && vmode != E_V8HImode))
+     return false;
+ 
+   start1 = d->perm[0];
+   for (i = 1; i < nelt; i++)
+     {
+       if (d->perm[i] != d->perm[i-1] + 1
+ 	  || d->perm[i] == nelt)
+ 	{
+ 	  if (start2 == -1)
+ 	    {
+ 	      start2 = d->perm[i];
+ 	      end1 = d->perm[i-1];
+ 	    }
+ 	  else
+ 	    return false;
+ 	}
+     }
+ 
+   clear_op0 = end1 != nelt - 1;
+   clear_op1 = start2 % nelt != 0;
+   /* pandn/pand is needed to clear upper/lower bits of op0/op1.  */
+   if (!pandn && (clear_op0 || clear_op1))
+     return false;
+ 
+   if (d->testing_p)
+     return true;
+ 
+   gen_vec_shr = vmode == E_V16QImode ? gen_vec_shr_v16qi : gen_vec_shr_v8hi;
+   gen_vec_shl = vmode == E_V16QImode ? gen_vec_shl_v16qi : gen_vec_shl_v8hi;
+   imode = GET_MODE_INNER (vmode);
+   inner_size = GET_MODE_BITSIZE (imode);
+   op0 = gen_reg_rtx (vmode);
+   op1 = gen_reg_rtx (vmode);
+ 
+   if (start1)
+     emit_insn (gen_vec_shr (op0, d->op0, GEN_INT (start1 * inner_size)));
+   else
+     emit_move_insn (op0, d->op0);
+ 
+   dop1 = d->op1;
+   if (d->one_operand_p)
+     dop1 = d->op0;
+ 
+   int shl_offset = end1 - start1 + 1 - start2 % nelt;
+   if (shl_offset)
+     emit_insn (gen_vec_shl (op1, dop1, GEN_INT (shl_offset * inner_size)));
+   else
+     emit_move_insn (op1, dop1);
+ 
+   /* Clear lower/upper bits for op0/op1.  */
+   if (clear_op0 || clear_op1)
+     {
+       rtx vec[16];
+       rtx const_vec;
+       rtx clear;
+       for (i = 0; i != nelt; i++)
+ 	{
+ 	  if (i < (end1 - start1 + 1))
+ 	    vec[i] = gen_int_mode ((HOST_WIDE_INT_1U << inner_size) - 1, imode);
+ 	  else
+ 	    vec[i] = CONST0_RTX (imode);
+ 	}
+       const_vec = gen_rtx_CONST_VECTOR (vmode, gen_rtvec_v (nelt, vec));
+       const_vec = validize_mem (force_const_mem (vmode, const_vec));
+       clear = force_reg (vmode, const_vec);
+ 
+       if (clear_op0)
+ 	emit_move_insn (op0, gen_rtx_AND (vmode, op0, clear));
+       if (clear_op1)
+ 	emit_move_insn (op1, gen_rtx_AND (vmode,
+ 					  gen_rtx_NOT (vmode, clear),
+ 					  op1));
+     }
+ 
+   emit_move_insn (d->target, gen_rtx_IOR (vmode, op0, op1));
+   return true;
+ }
+ 
  /* A subroutine of expand_vec_perm_even_odd_1.  Implement extract-even
     and extract-odd permutations of two V8QI, V8HI, V16QI, V16HI or V32QI
     operands with two "and" and "pack" or two "shift" and "pack" insns.
*************** expand_vec_perm_broadcast_1 (struct expa
*** 21549,21569 ****
        return true;
  
      case E_V8HFmode:
        /* This can be implemented via interleave and pshufd.  */
        if (d->testing_p)
  	return true;
  
        if (elt >= nelt2)
  	{
! 	  gen = gen_vec_interleave_highv8hf;
  	  elt -= nelt2;
  	}
        else
! 	gen = gen_vec_interleave_lowv8hf;
        nelt2 /= 2;
  
        dest = gen_reg_rtx (vmode);
!       emit_insn (gen (dest, op0, op0));
  
        vmode = V4SImode;
        op0 = gen_lowpart (vmode, dest);
--- 22357,22379 ----
        return true;
  
      case E_V8HFmode:
+     case E_V8BFmode:
        /* This can be implemented via interleave and pshufd.  */
        if (d->testing_p)
  	return true;
  
+       rtx (*maybe_gen) (machine_mode, int, rtx, rtx, rtx);
        if (elt >= nelt2)
  	{
! 	  maybe_gen = maybe_gen_vec_interleave_high;
  	  elt -= nelt2;
  	}
        else
! 	maybe_gen = maybe_gen_vec_interleave_low;
        nelt2 /= 2;
  
        dest = gen_reg_rtx (vmode);
!       emit_insn (maybe_gen (vmode, 1, dest, op0, op0));
  
        vmode = V4SImode;
        op0 = gen_lowpart (vmode, dest);
*************** ix86_expand_vec_perm_const_1 (struct exp
*** 21843,21848 ****
--- 22653,22661 ----
    if (expand_vec_perm_2perm_pblendv (d, true))
      return true;
  
+   if (expand_vec_perm_shufps_shufps (d))
+     return true;
+ 
    /* Try sequences of three instructions.  */
  
    if (expand_vec_perm_even_odd_pack (d))
*************** ix86_expand_vec_perm_const_1 (struct exp
*** 21854,21859 ****
--- 22667,22675 ----
    if (expand_vec_perm_pshufb2 (d))
      return true;
  
+   if (expand_vec_perm_pslldq_psrldq_por (d, false))
+     return true;
+ 
    if (expand_vec_perm_interleave3 (d))
      return true;
  
*************** ix86_expand_vec_perm_const_1 (struct exp
*** 21892,21897 ****
--- 22708,22717 ----
    if (expand_vec_perm_even_odd (d))
      return true;
  
+   /* Generate four or five instructions.  */
+   if (expand_vec_perm_pslldq_psrldq_por (d, true))
+     return true;
+ 
    /* Even longer sequences.  */
    if (expand_vec_perm_vpshufb4_vpermq2 (d))
      return true;
*************** canonicalize_perm (struct expand_vec_per
*** 21959,21967 ****
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  bool
! ix86_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 			       rtx op1, const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
    unsigned char perm[MAX_VECT_LEN];
    unsigned int i, nelt, which;
--- 22779,22791 ----
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  bool
! ix86_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 			       rtx target, rtx op0, rtx op1,
! 			       const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    struct expand_vec_perm_d d;
    unsigned char perm[MAX_VECT_LEN];
    unsigned int i, nelt, which;
*************** ix86_expand_cmpxchg_loop (rtx *ptarget_b
*** 23432,23435 ****
--- 24256,24284 ----
    *ptarget_bool = target_bool;
  }
  
+ /* Convert a BFmode VAL to SFmode without signaling sNaNs.
+    This is done by returning SF SUBREG of ((HI SUBREG) (VAL)) << 16.  */
+ 
+ rtx
+ ix86_expand_fast_convert_bf_to_sf (rtx val)
+ {
+   rtx op = gen_lowpart (HImode, val), ret;
+   if (CONST_INT_P (op))
+     {
+       ret = simplify_const_unary_operation (FLOAT_EXTEND, SFmode,
+ 					    val, BFmode);
+       if (ret)
+ 	return ret;
+       /* FLOAT_EXTEND simplification will fail if VAL is a sNaN.  */
+       ret = gen_reg_rtx (SImode);
+       emit_move_insn (ret, GEN_INT (INTVAL (op) & 0xffff));
+       emit_insn (gen_ashlsi3 (ret, ret, GEN_INT (16)));
+       return gen_lowpart (SFmode, ret);
+     }
+ 
+   ret = gen_reg_rtx (SFmode);
+   emit_insn (gen_extendbfsf2_1 (ret, force_reg (BFmode, val)));
+   return ret;
+ }
+ 
  #include "gt-i386-expand.h"
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-expand.h gcc-13.1.0/gcc/config/i386/i386-expand.h
*** gcc-12.2.0/gcc/config/i386/i386-expand.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-expand.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** rtx gen_push (rtx arg);
*** 48,55 ****
  rtx gen_pop (rtx arg);
  rtx ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
  			 machine_mode mode, int ignore);
! bool ix86_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 				    rtx op1, const vec_perm_indices &sel);
  bool ix86_notrack_prefixed_insn_p (rtx_insn *);
  machine_mode ix86_split_reduction (machine_mode mode);
  void ix86_expand_divmod_libfunc (rtx libfunc, machine_mode mode, rtx op0,
--- 48,56 ----
  rtx gen_pop (rtx arg);
  rtx ix86_expand_builtin (tree exp, rtx target, rtx subtarget,
  			 machine_mode mode, int ignore);
! bool ix86_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 				    rtx target, rtx op0, rtx op1,
! 				    const vec_perm_indices &sel);
  bool ix86_notrack_prefixed_insn_p (rtx_insn *);
  machine_mode ix86_split_reduction (machine_mode mode);
  void ix86_expand_divmod_libfunc (rtx libfunc, machine_mode mode, rtx op0,
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-features.cc gcc-13.1.0/gcc/config/i386/i386-features.cc
*** gcc-12.2.0/gcc/config/i386/i386-features.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-features.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** scalar_chain::scalar_chain (enum machine
*** 291,297 ****
--- 291,303 ----
    insns = BITMAP_ALLOC (NULL);
    defs = BITMAP_ALLOC (NULL);
    defs_conv = BITMAP_ALLOC (NULL);
+   insns_conv = BITMAP_ALLOC (NULL);
    queue = NULL;
+ 
+   n_sse_to_integer = 0;
+   n_integer_to_sse = 0;
+ 
+   max_visits = x86_stv_max_visits;
  }
  
  /* Free chain's data.  */
*************** scalar_chain::~scalar_chain ()
*** 301,306 ****
--- 307,313 ----
    BITMAP_FREE (insns);
    BITMAP_FREE (defs);
    BITMAP_FREE (defs_conv);
+   BITMAP_FREE (insns_conv);
    bitmap_obstack_release (NULL);
  }
  
*************** scalar_chain::~scalar_chain ()
*** 309,343 ****
  void
  scalar_chain::add_to_queue (unsigned insn_uid)
  {
!   if (bitmap_bit_p (insns, insn_uid)
!       || bitmap_bit_p (queue, insn_uid))
      return;
  
    if (dump_file)
      fprintf (dump_file, "  Adding insn %d into chain's #%d queue\n",
  	     insn_uid, chain_id);
-   bitmap_set_bit (queue, insn_uid);
- }
- 
- general_scalar_chain::general_scalar_chain (enum machine_mode smode_,
- 					    enum machine_mode vmode_)
-      : scalar_chain (smode_, vmode_)
- {
-   insns_conv = BITMAP_ALLOC (NULL);
-   n_sse_to_integer = 0;
-   n_integer_to_sse = 0;
- }
- 
- general_scalar_chain::~general_scalar_chain ()
- {
-   BITMAP_FREE (insns_conv);
  }
  
  /* For DImode conversion, mark register defined by DEF as requiring
     conversion.  */
  
  void
! general_scalar_chain::mark_dual_mode_def (df_ref def)
  {
    gcc_assert (DF_REF_REG_DEF_P (def));
  
--- 316,334 ----
  void
  scalar_chain::add_to_queue (unsigned insn_uid)
  {
!   if (!bitmap_set_bit (queue, insn_uid))
      return;
  
    if (dump_file)
      fprintf (dump_file, "  Adding insn %d into chain's #%d queue\n",
  	     insn_uid, chain_id);
  }
  
  /* For DImode conversion, mark register defined by DEF as requiring
     conversion.  */
  
  void
! scalar_chain::mark_dual_mode_def (df_ref def)
  {
    gcc_assert (DF_REF_REG_DEF_P (def));
  
*************** general_scalar_chain::mark_dual_mode_def
*** 364,388 ****
  	     DF_REF_REGNO (def), DF_REF_INSN_UID (def), chain_id);
  }
  
- /* For TImode conversion, it is unused.  */
- 
- void
- timode_scalar_chain::mark_dual_mode_def (df_ref)
- {
-   gcc_unreachable ();
- }
- 
  /* Check REF's chain to add new insns into a queue
!    and find registers requiring conversion.  */
  
! void
! scalar_chain::analyze_register_chain (bitmap candidates, df_ref ref)
  {
    df_link *chain;
  
!   gcc_assert (bitmap_bit_p (insns, DF_REF_INSN_UID (ref))
! 	      || bitmap_bit_p (candidates, DF_REF_INSN_UID (ref)));
!   add_to_queue (DF_REF_INSN_UID (ref));
  
    for (chain = DF_REF_CHAIN (ref); chain; chain = chain->next)
      {
--- 355,372 ----
  	     DF_REF_REGNO (def), DF_REF_INSN_UID (def), chain_id);
  }
  
  /* Check REF's chain to add new insns into a queue
!    and find registers requiring conversion.  Return true if OK, false
!    if the analysis was aborted.  */
  
! bool
! scalar_chain::analyze_register_chain (bitmap candidates, df_ref ref,
! 				      bitmap disallowed)
  {
    df_link *chain;
+   bool mark_def = false;
  
!   gcc_checking_assert (bitmap_bit_p (insns, DF_REF_INSN_UID (ref)));
  
    for (chain = DF_REF_CHAIN (ref); chain; chain = chain->next)
      {
*************** scalar_chain::analyze_register_chain (bi
*** 391,396 ****
--- 375,383 ----
        if (!NONDEBUG_INSN_P (DF_REF_INSN (chain->ref)))
  	continue;
  
+       if (--max_visits == 0)
+ 	return false;
+ 
        if (!DF_REF_REG_MEM_P (chain->ref))
  	{
  	  if (bitmap_bit_p (insns, uid))
*************** scalar_chain::analyze_register_chain (bi
*** 401,406 ****
--- 388,397 ----
  	      add_to_queue (uid);
  	      continue;
  	    }
+ 
+ 	  /* If we run into parts of an aborted chain discovery abort.  */
+ 	  if (bitmap_bit_p (disallowed, uid))
+ 	    return false;
  	}
  
        if (DF_REF_REG_DEF_P (chain->ref))
*************** scalar_chain::analyze_register_chain (bi
*** 415,438 ****
  	  if (dump_file)
  	    fprintf (dump_file, "  r%d use in insn %d isn't convertible\n",
  		     DF_REF_REGNO (chain->ref), uid);
! 	  mark_dual_mode_def (ref);
  	}
      }
  }
  
! /* Add instruction into a chain.  */
  
! void
! scalar_chain::add_insn (bitmap candidates, unsigned int insn_uid)
  {
!   if (bitmap_bit_p (insns, insn_uid))
!     return;
  
    if (dump_file)
      fprintf (dump_file, "  Adding insn %d to chain #%d\n", insn_uid, chain_id);
  
-   bitmap_set_bit (insns, insn_uid);
- 
    rtx_insn *insn = DF_INSN_UID_GET (insn_uid)->insn;
    rtx def_set = single_set (insn);
    if (def_set && REG_P (SET_DEST (def_set))
--- 406,434 ----
  	  if (dump_file)
  	    fprintf (dump_file, "  r%d use in insn %d isn't convertible\n",
  		     DF_REF_REGNO (chain->ref), uid);
! 	  mark_def = true;
  	}
      }
+ 
+   if (mark_def)
+     mark_dual_mode_def (ref);
+ 
+   return true;
  }
  
! /* Add instruction into a chain.  Return true if OK, false if the search
!    was aborted.  */
  
! bool
! scalar_chain::add_insn (bitmap candidates, unsigned int insn_uid,
! 			bitmap disallowed)
  {
!   if (!bitmap_set_bit (insns, insn_uid))
!     return true;
  
    if (dump_file)
      fprintf (dump_file, "  Adding insn %d to chain #%d\n", insn_uid, chain_id);
  
    rtx_insn *insn = DF_INSN_UID_GET (insn_uid)->insn;
    rtx def_set = single_set (insn);
    if (def_set && REG_P (SET_DEST (def_set))
*************** scalar_chain::add_insn (bitmap candidate
*** 445,461 ****
    df_ref ref;
    for (ref = DF_INSN_UID_DEFS (insn_uid); ref; ref = DF_REF_NEXT_LOC (ref))
      if (!HARD_REGISTER_P (DF_REF_REG (ref)))
!       analyze_register_chain (candidates, ref);
    for (ref = DF_INSN_UID_USES (insn_uid); ref; ref = DF_REF_NEXT_LOC (ref))
      if (!DF_REF_REG_MEM_P (ref))
!       analyze_register_chain (candidates, ref);
  }
  
  /* Build new chain starting from insn INSN_UID recursively
!    adding all dependent uses and definitions.  */
  
! void
! scalar_chain::build (bitmap candidates, unsigned insn_uid)
  {
    queue = BITMAP_ALLOC (NULL);
    bitmap_set_bit (queue, insn_uid);
--- 441,467 ----
    df_ref ref;
    for (ref = DF_INSN_UID_DEFS (insn_uid); ref; ref = DF_REF_NEXT_LOC (ref))
      if (!HARD_REGISTER_P (DF_REF_REG (ref)))
!       if (!analyze_register_chain (candidates, ref, disallowed))
! 	return false;
! 
!   /* The operand(s) of VEC_SELECT don't need to be converted/convertible.  */
!   if (def_set && GET_CODE (SET_SRC (def_set)) == VEC_SELECT)
!     return true;
! 
    for (ref = DF_INSN_UID_USES (insn_uid); ref; ref = DF_REF_NEXT_LOC (ref))
      if (!DF_REF_REG_MEM_P (ref))
!       if (!analyze_register_chain (candidates, ref, disallowed))
! 	return false;
! 
!   return true;
  }
  
  /* Build new chain starting from insn INSN_UID recursively
!    adding all dependent uses and definitions.  Return true if OK, false
!    if the chain discovery was aborted.  */
  
! bool
! scalar_chain::build (bitmap candidates, unsigned insn_uid, bitmap disallowed)
  {
    queue = BITMAP_ALLOC (NULL);
    bitmap_set_bit (queue, insn_uid);
*************** scalar_chain::build (bitmap candidates,
*** 468,474 ****
        insn_uid = bitmap_first_set_bit (queue);
        bitmap_clear_bit (queue, insn_uid);
        bitmap_clear_bit (candidates, insn_uid);
!       add_insn (candidates, insn_uid);
      }
  
    if (dump_file)
--- 474,490 ----
        insn_uid = bitmap_first_set_bit (queue);
        bitmap_clear_bit (queue, insn_uid);
        bitmap_clear_bit (candidates, insn_uid);
!       if (!add_insn (candidates, insn_uid, disallowed))
! 	{
! 	  /* If we aborted the search put sofar found insn on the set of
! 	     disallowed insns so that further searches reaching them also
! 	     abort and thus we abort the whole but yet undiscovered chain.  */
! 	  bitmap_ior_into (disallowed, insns);
! 	  if (dump_file)
! 	    fprintf (dump_file, "Aborted chain #%d discovery\n", chain_id);
! 	  BITMAP_FREE (queue);
! 	  return false;
! 	}
      }
  
    if (dump_file)
*************** scalar_chain::build (bitmap candidates,
*** 492,497 ****
--- 508,515 ----
      }
  
    BITMAP_FREE (queue);
+ 
+   return true;
  }
  
  /* Return a cost of building a vector costant
*************** general_scalar_chain::compute_convert_ga
*** 579,584 ****
--- 597,610 ----
  	      igain -= vector_const_cost (XEXP (src, 0));
  	    if (CONST_INT_P (XEXP (src, 1)))
  	      igain -= vector_const_cost (XEXP (src, 1));
+ 	    if (MEM_P (XEXP (src, 1)))
+ 	      {
+ 		if (optimize_insn_for_size_p ())
+ 		  igain -= COSTS_N_BYTES (m == 2 ? 3 : 5);
+ 		else
+ 		  igain += m * ix86_cost->int_load[2]
+ 			   - ix86_cost->sse_load[sse_cost_idx];
+ 	      }
  	    break;
  
  	  case NEG:
*************** general_scalar_chain::compute_convert_ga
*** 646,651 ****
--- 672,694 ----
  	      }
  	    break;
  
+ 	  case VEC_SELECT:
+ 	    if (XVECEXP (XEXP (src, 1), 0, 0) == const0_rtx)
+ 	      {
+ 		// movd (4 bytes) replaced with movdqa (4 bytes).
+ 		if (!optimize_insn_for_size_p ())
+ 		  igain += ix86_cost->sse_to_integer - ix86_cost->xmm_move;
+ 	      }
+ 	    else
+ 	      {
+ 		// pshufd; movd replaced with pshufd.
+ 		if (optimize_insn_for_size_p ())
+ 		  igain += COSTS_N_BYTES (4);
+ 		else
+ 		  igain += ix86_cost->sse_to_integer;
+ 	      }
+ 	    break;
+ 
  	  default:
  	    gcc_unreachable ();
  	  }
*************** gen_gpr_to_xmm_move_src (enum machine_mo
*** 711,718 ****
    switch (GET_MODE_NUNITS (vmode))
      {
      case 1:
!       /* We are not using this case currently.  */
!       gcc_unreachable ();
      case 2:
        return gen_rtx_VEC_CONCAT (vmode, gpr,
  				 CONST0_RTX (GET_MODE_INNER (vmode)));
--- 754,760 ----
    switch (GET_MODE_NUNITS (vmode))
      {
      case 1:
!       return gen_rtx_SUBREG (vmode, gpr, 0);
      case 2:
        return gen_rtx_VEC_CONCAT (vmode, gpr,
  				 CONST0_RTX (GET_MODE_INNER (vmode)));
*************** gen_gpr_to_xmm_move_src (enum machine_mo
*** 726,732 ****
     and replace its uses in a chain.  */
  
  void
! general_scalar_chain::make_vector_copies (rtx_insn *insn, rtx reg)
  {
    rtx vreg = *defs_map.get (reg);
  
--- 768,774 ----
     and replace its uses in a chain.  */
  
  void
! scalar_chain::make_vector_copies (rtx_insn *insn, rtx reg)
  {
    rtx vreg = *defs_map.get (reg);
  
*************** general_scalar_chain::make_vector_copies
*** 790,796 ****
     scalar uses outside of the chain.  */
  
  void
! general_scalar_chain::convert_reg (rtx_insn *insn, rtx dst, rtx src)
  {
    start_sequence ();
    if (!TARGET_INTER_UNIT_MOVES_FROM_VEC)
--- 832,838 ----
     scalar uses outside of the chain.  */
  
  void
! scalar_chain::convert_reg (rtx_insn *insn, rtx dst, rtx src)
  {
    start_sequence ();
    if (!TARGET_INTER_UNIT_MOVES_FROM_VEC)
*************** general_scalar_chain::convert_op (rtx *o
*** 932,941 ****
      }
  }
  
! /* Convert INSN to vector mode.  */
  
  void
! general_scalar_chain::convert_insn (rtx_insn *insn)
  {
    /* Generate copies for out-of-chain uses of defs and adjust debug uses.  */
    for (df_ref ref = DF_INSN_DEFS (insn); ref; ref = DF_REF_NEXT_LOC (ref))
--- 974,1064 ----
      }
  }
  
! /* Convert COMPARE to vector mode.  */
! 
! rtx
! scalar_chain::convert_compare (rtx op1, rtx op2, rtx_insn *insn)
! {
!   rtx src, tmp;
!   /* Comparison against anything other than zero, requires an XOR.  */
!   if (op2 != const0_rtx)
!     {
!       convert_op (&op1, insn);
!       convert_op (&op2, insn);
!       /* If both operands are MEMs, explicitly load the OP1 into TMP.  */
!       if (MEM_P (op1) && MEM_P (op2))
! 	{
! 	  tmp = gen_reg_rtx (vmode);
! 	  emit_insn_before (gen_rtx_SET (tmp, op1), insn);
! 	  src = tmp;
! 	}
!       else
! 	src = op1;
!       src = gen_rtx_XOR (vmode, src, op2);
!     }
!   else if (GET_CODE (op1) == AND
! 	   && GET_CODE (XEXP (op1, 0)) == NOT)
!     {
!       rtx op11 = XEXP (XEXP (op1, 0), 0);
!       rtx op12 = XEXP (op1, 1);
!       convert_op (&op11, insn);
!       convert_op (&op12, insn);
!       if (!REG_P (op11))
! 	{
! 	  tmp = gen_reg_rtx (vmode);
! 	  emit_insn_before (gen_rtx_SET (tmp, op11), insn);
! 	  op11 = tmp;
! 	}
!       src = gen_rtx_AND (vmode, gen_rtx_NOT (vmode, op11), op12);
!     }
!   else if (GET_CODE (op1) == AND)
!     {
!       rtx op11 = XEXP (op1, 0);
!       rtx op12 = XEXP (op1, 1);
!       convert_op (&op11, insn);
!       convert_op (&op12, insn);
!       if (!REG_P (op11))
! 	{
! 	  tmp = gen_reg_rtx (vmode);
! 	  emit_insn_before (gen_rtx_SET (tmp, op11), insn);
! 	  op11 = tmp;
! 	}
!       return gen_rtx_UNSPEC (CCmode, gen_rtvec (2, op11, op12),
! 			     UNSPEC_PTEST);
!     }
!   else
!     {
!       convert_op (&op1, insn);
!       src = op1;
!     }
! 
!   if (!REG_P (src))
!     {
!       tmp = gen_reg_rtx (vmode);
!       emit_insn_before (gen_rtx_SET (tmp, src), insn);
!       src = tmp;
!     }
! 
!   if (vmode == V2DImode)
!     {
!       tmp = gen_reg_rtx (vmode);
!       emit_insn_before (gen_vec_interleave_lowv2di (tmp, src, src), insn);
!       src = tmp;
!     }
!   else if (vmode == V4SImode)
!     {
!       tmp = gen_reg_rtx (vmode);
!       emit_insn_before (gen_sse2_pshufd (tmp, src, const0_rtx), insn);
!       src = tmp;
!     }
! 
!   return gen_rtx_UNSPEC (CCmode, gen_rtvec (2, src, src), UNSPEC_PTEST);
! }
! 
! /* Helper function for converting INSN to vector mode.  */
  
  void
! scalar_chain::convert_insn_common (rtx_insn *insn)
  {
    /* Generate copies for out-of-chain uses of defs and adjust debug uses.  */
    for (df_ref ref = DF_INSN_DEFS (insn); ref; ref = DF_REF_NEXT_LOC (ref))
*************** general_scalar_chain::convert_insn (rtx_
*** 996,1002 ****
--- 1119,1131 ----
  	    XEXP (note, 0) = *vreg;
  	  *DF_REF_REAL_LOC (ref) = *vreg;
  	}
+ }
  
+ /* Convert INSN to vector mode.  */
+ 
+ void
+ general_scalar_chain::convert_insn (rtx_insn *insn)
+ {
    rtx def_set = single_set (insn);
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
*************** general_scalar_chain::convert_insn (rtx_
*** 1010,1025 ****
        emit_conversion_insns (gen_move_insn (dst, tmp), insn);
        dst = gen_rtx_SUBREG (vmode, tmp, 0);
      }
!   else if (REG_P (dst))
      {
        /* Replace the definition with a SUBREG to the definition we
!          use inside the chain.  */
        rtx *vdef = defs_map.get (dst);
        if (vdef)
  	dst = *vdef;
        dst = gen_rtx_SUBREG (vmode, dst, 0);
        /* IRA doesn't like to have REG_EQUAL/EQUIV notes when the SET_DEST
!          is a non-REG_P.  So kill those off.  */
        rtx note = find_reg_equal_equiv_note (insn);
        if (note)
  	remove_note (insn, note);
--- 1139,1154 ----
        emit_conversion_insns (gen_move_insn (dst, tmp), insn);
        dst = gen_rtx_SUBREG (vmode, tmp, 0);
      }
!   else if (REG_P (dst) && GET_MODE (dst) == smode)
      {
        /* Replace the definition with a SUBREG to the definition we
! 	 use inside the chain.  */
        rtx *vdef = defs_map.get (dst);
        if (vdef)
  	dst = *vdef;
        dst = gen_rtx_SUBREG (vmode, dst, 0);
        /* IRA doesn't like to have REG_EQUAL/EQUIV notes when the SET_DEST
! 	 is a non-REG_P.  So kill those off.  */
        rtx note = find_reg_equal_equiv_note (insn);
        if (note)
  	remove_note (insn, note);
*************** general_scalar_chain::convert_insn (rtx_
*** 1090,1114 ****
        break;
  
      case COMPARE:
-       src = SUBREG_REG (XEXP (XEXP (src, 0), 0));
- 
-       gcc_assert (REG_P (src) && GET_MODE (src) == DImode);
-       subreg = gen_rtx_SUBREG (V2DImode, src, 0);
-       emit_insn_before (gen_vec_interleave_lowv2di
- 			(copy_rtx_if_shared (subreg),
- 			 copy_rtx_if_shared (subreg),
- 			 copy_rtx_if_shared (subreg)),
- 			insn);
        dst = gen_rtx_REG (CCmode, FLAGS_REG);
!       src = gen_rtx_UNSPEC (CCmode, gen_rtvec (2, copy_rtx_if_shared (subreg),
! 					       copy_rtx_if_shared (subreg)),
! 			    UNSPEC_PTEST);
        break;
  
      case CONST_INT:
        convert_op (&src, insn);
        break;
  
      default:
        gcc_unreachable ();
      }
--- 1219,1250 ----
        break;
  
      case COMPARE:
        dst = gen_rtx_REG (CCmode, FLAGS_REG);
!       src = convert_compare (XEXP (src, 0), XEXP (src, 1), insn);
        break;
  
      case CONST_INT:
        convert_op (&src, insn);
        break;
  
+     case VEC_SELECT:
+       if (XVECEXP (XEXP (src, 1), 0, 0) == const0_rtx)
+ 	src = XEXP (src, 0);
+       else if (smode == DImode)
+ 	{
+ 	  rtx tmp = gen_lowpart (V1TImode, XEXP (src, 0));
+ 	  dst = gen_lowpart (V1TImode, dst);
+ 	  src = gen_rtx_LSHIFTRT (V1TImode, tmp, GEN_INT (64));
+ 	}
+       else
+ 	{
+ 	  rtx tmp = XVECEXP (XEXP (src, 1), 0, 0);
+ 	  rtvec vec = gen_rtvec (4, tmp, tmp, tmp, tmp);
+ 	  rtx par = gen_rtx_PARALLEL (VOIDmode, vec);
+ 	  src = gen_rtx_VEC_SELECT (vmode, XEXP (src, 0), par);
+ 	}
+       break;
+ 
      default:
        gcc_unreachable ();
      }
*************** general_scalar_chain::convert_insn (rtx_
*** 1126,1131 ****
--- 1262,1501 ----
    df_insn_rescan (insn);
  }
  
+ /* Compute a gain for chain conversion.  */
+ 
+ int
+ timode_scalar_chain::compute_convert_gain ()
+ {
+   /* Assume that if we have to move TImode values between units,
+      then transforming this chain isn't worth it.  */
+   if (n_sse_to_integer || n_integer_to_sse)
+     return -1;
+ 
+   bitmap_iterator bi;
+   unsigned insn_uid;
+ 
+   /* Split ties to prefer V1TImode when not optimizing for size.  */
+   int gain = optimize_size ? 0 : 1;
+ 
+   if (dump_file)
+     fprintf (dump_file, "Computing gain for chain #%d...\n", chain_id);
+ 
+   EXECUTE_IF_SET_IN_BITMAP (insns, 0, insn_uid, bi)
+     {
+       rtx_insn *insn = DF_INSN_UID_GET (insn_uid)->insn;
+       rtx def_set = single_set (insn);
+       rtx src = SET_SRC (def_set);
+       rtx dst = SET_DEST (def_set);
+       HOST_WIDE_INT op1val;
+       int scost, vcost;
+       int igain = 0;
+ 
+       switch (GET_CODE (src))
+ 	{
+ 	case REG:
+ 	  if (optimize_insn_for_size_p ())
+ 	    igain = MEM_P (dst) ? COSTS_N_BYTES (6) : COSTS_N_BYTES (3);
+ 	  else
+ 	    igain = COSTS_N_INSNS (1);
+ 	  break;
+ 
+ 	case MEM:
+ 	  igain = optimize_insn_for_size_p () ? COSTS_N_BYTES (7)
+ 					      : COSTS_N_INSNS (1);
+ 	  break;
+ 
+ 	case CONST_INT:
+ 	  if (MEM_P (dst)
+ 	      && standard_sse_constant_p (src, V1TImode))
+ 	    igain = optimize_insn_for_size_p() ? COSTS_N_BYTES (11) : 1;
+ 	  break;
+ 
+ 	case NOT:
+ 	  if (MEM_P (dst))
+ 	    igain = -COSTS_N_INSNS (1);
+ 	  break;
+ 
+ 	case AND:
+ 	case XOR:
+ 	case IOR:
+ 	  if (!MEM_P (dst))
+ 	    igain = COSTS_N_INSNS (1);
+ 	  break;
+ 
+ 	case ASHIFT:
+ 	case LSHIFTRT:
+ 	  /* See ix86_expand_v1ti_shift.  */
+ 	  op1val = INTVAL (XEXP (src, 1));
+ 	  if (optimize_insn_for_size_p ())
+ 	    {
+ 	      if (op1val == 64 || op1val == 65)
+ 		scost = COSTS_N_BYTES (5);
+ 	      else if (op1val >= 66)
+ 		scost = COSTS_N_BYTES (6);
+ 	      else if (op1val == 1)
+ 		scost = COSTS_N_BYTES (8);
+ 	      else
+ 		scost = COSTS_N_BYTES (9);
+ 
+ 	      if ((op1val & 7) == 0)
+ 		vcost = COSTS_N_BYTES (5);
+ 	      else if (op1val > 64)
+ 		vcost = COSTS_N_BYTES (10);
+ 	      else
+ 		vcost = TARGET_AVX ? COSTS_N_BYTES (19) : COSTS_N_BYTES (23);
+ 	    }
+ 	  else
+ 	    {
+ 	      scost = COSTS_N_INSNS (2);
+ 	      if ((op1val & 7) == 0)
+ 		vcost = COSTS_N_INSNS (1);
+ 	      else if (op1val > 64)
+ 		vcost = COSTS_N_INSNS (2);
+ 	      else
+ 		vcost = TARGET_AVX ? COSTS_N_INSNS (4) : COSTS_N_INSNS (5);
+ 	    }
+ 	  igain = scost - vcost;
+ 	  break;
+ 
+ 	case ASHIFTRT:
+ 	  /* See ix86_expand_v1ti_ashiftrt.  */
+ 	  op1val = INTVAL (XEXP (src, 1));
+ 	  if (optimize_insn_for_size_p ())
+ 	    {
+ 	      if (op1val == 64 || op1val == 127)
+ 		scost = COSTS_N_BYTES (7);
+ 	      else if (op1val == 1)
+ 		scost = COSTS_N_BYTES (8);
+ 	      else if (op1val == 65)
+ 		scost = COSTS_N_BYTES (10);
+ 	      else if (op1val >= 66)
+ 		scost = COSTS_N_BYTES (11);
+ 	      else
+ 		scost = COSTS_N_BYTES (9);
+ 
+ 	      if (op1val == 127)
+ 		vcost = COSTS_N_BYTES (10);
+ 	      else if (op1val == 64)
+ 		vcost = COSTS_N_BYTES (14);
+ 	      else if (op1val == 96)
+ 		vcost = COSTS_N_BYTES (18);
+ 	      else if (op1val >= 111)
+ 		vcost = COSTS_N_BYTES (15);
+ 	      else if (TARGET_AVX2 && op1val == 32)
+ 		vcost = COSTS_N_BYTES (16);
+ 	      else if (TARGET_SSE4_1 && op1val == 32)
+ 		vcost = COSTS_N_BYTES (20);
+ 	      else if (op1val >= 96)
+ 		vcost = COSTS_N_BYTES (23);
+ 	      else if ((op1val & 7) == 0)
+ 		vcost = COSTS_N_BYTES (28);
+ 	      else if (TARGET_AVX2 && op1val < 32)
+ 		vcost = COSTS_N_BYTES (30);
+ 	      else if (op1val == 1 || op1val >= 64)
+ 		vcost = COSTS_N_BYTES (42);
+ 	      else
+ 		vcost = COSTS_N_BYTES (47);
+ 	    }
+ 	  else
+ 	    {
+ 	      if (op1val >= 65 && op1val <= 126)
+ 		scost = COSTS_N_INSNS (3);
+ 	      else
+ 		scost = COSTS_N_INSNS (2);
+ 
+ 	      if (op1val == 127)
+ 		vcost = COSTS_N_INSNS (2);
+ 	      else if (op1val == 64)
+ 		vcost = COSTS_N_INSNS (3);
+ 	      else if (op1val == 96)
+ 		vcost = COSTS_N_INSNS (4);
+ 	      else if (op1val >= 111)
+ 		vcost = COSTS_N_INSNS (3);
+ 	      else if (TARGET_AVX2 && op1val == 32)
+ 		vcost = COSTS_N_INSNS (3);
+ 	      else if (TARGET_SSE4_1 && op1val == 32)
+ 		vcost = COSTS_N_INSNS (4);
+ 	      else if (op1val >= 96)
+ 		vcost = COSTS_N_INSNS (5);
+ 	      else if ((op1val & 7) == 0)
+ 		vcost = COSTS_N_INSNS (6);
+ 	      else if (TARGET_AVX2 && op1val < 32)
+ 		vcost = COSTS_N_INSNS (6);
+ 	      else if (op1val == 1 || op1val >= 64)
+ 		vcost = COSTS_N_INSNS (9);
+ 	      else
+ 		vcost = COSTS_N_INSNS (10);
+ 	    }
+ 	  igain = scost - vcost;
+ 	  break;
+ 
+ 	case ROTATE:
+ 	case ROTATERT:
+ 	  /* See ix86_expand_v1ti_rotate.  */
+ 	  op1val = INTVAL (XEXP (src, 1));
+ 	  if (optimize_insn_for_size_p ())
+ 	    {
+ 	      scost = COSTS_N_BYTES (13);
+ 	      if ((op1val & 31) == 0)
+ 		vcost = COSTS_N_BYTES (5);
+ 	      else if ((op1val & 7) == 0)
+ 		vcost = TARGET_AVX ? COSTS_N_BYTES (13) : COSTS_N_BYTES (18);
+ 	      else if (op1val > 32 && op1val < 96)
+ 		vcost = COSTS_N_BYTES (24);
+ 	      else
+ 		vcost = COSTS_N_BYTES (19);
+ 	    }
+ 	  else
+ 	    {
+ 	      scost = COSTS_N_INSNS (3);
+ 	      if ((op1val & 31) == 0)
+ 		vcost = COSTS_N_INSNS (1);
+ 	      else if ((op1val & 7) == 0)
+ 		vcost = TARGET_AVX ? COSTS_N_INSNS (3) : COSTS_N_INSNS (4);
+ 	      else if (op1val > 32 && op1val < 96)
+ 		vcost = COSTS_N_INSNS (5);
+ 	      else
+ 		vcost = COSTS_N_INSNS (1);
+ 	    }
+ 	  igain = scost - vcost;
+ 	  break;
+ 
+ 	case COMPARE:
+ 	  if (XEXP (src, 1) == const0_rtx)
+ 	    {
+ 	      if (GET_CODE (XEXP (src, 0)) == AND)
+ 		/* and;and;or (9 bytes) vs. ptest (5 bytes).  */
+ 		igain = optimize_insn_for_size_p() ? COSTS_N_BYTES (4)
+ 						   : COSTS_N_INSNS (2);
+ 	      /* or (3 bytes) vs. ptest (5 bytes).  */
+ 	      else if (optimize_insn_for_size_p ())
+ 		igain = -COSTS_N_BYTES (2);
+ 	    }
+ 	  else if (XEXP (src, 1) == const1_rtx)
+ 	    /* and;cmp -1 (7 bytes) vs. pcmpeqd;pxor;ptest (13 bytes).  */
+ 	    igain = optimize_insn_for_size_p() ? -COSTS_N_BYTES (6)
+ 					       : -COSTS_N_INSNS (1);
+ 	  break;
+ 
+ 	default:
+ 	  break;
+ 	}
+ 
+       if (igain != 0 && dump_file)
+ 	{
+ 	  fprintf (dump_file, "  Instruction gain %d for ", igain);
+ 	  dump_insn_slim (dump_file, insn);
+ 	}
+       gain += igain;
+     }
+ 
+   if (dump_file)
+     fprintf (dump_file, "  Total gain: %d\n", gain);
+ 
+   return gain;
+ }
+ 
  /* Fix uses of converted REG in debug insns.  */
  
  void
*************** timode_scalar_chain::fix_debug_reg_uses
*** 1139,1145 ****
      {
        rtx_insn *insn = DF_REF_INSN (ref);
        /* Make sure the next ref is for a different instruction,
!          so that we're not affected by the rescan.  */
        next = DF_REF_NEXT_REG (ref);
        while (next && DF_REF_INSN (next) == insn)
  	next = DF_REF_NEXT_REG (next);
--- 1509,1515 ----
      {
        rtx_insn *insn = DF_REF_INSN (ref);
        /* Make sure the next ref is for a different instruction,
! 	 so that we're not affected by the rescan.  */
        next = DF_REF_NEXT_REG (ref);
        while (next && DF_REF_INSN (next) == insn)
  	next = DF_REF_NEXT_REG (next);
*************** timode_scalar_chain::fix_debug_reg_uses
*** 1164,1169 ****
--- 1534,1597 ----
      }
  }
  
+ /* Convert operand OP in INSN from TImode to V1TImode.  */
+ 
+ void
+ timode_scalar_chain::convert_op (rtx *op, rtx_insn *insn)
+ {
+   if (GET_MODE (*op) == V1TImode)
+     return;
+ 
+   *op = copy_rtx_if_shared (*op);
+ 
+   if (REG_P (*op))
+     *op = gen_rtx_SUBREG (V1TImode, *op, 0);
+   else if (MEM_P (*op))
+     {
+       rtx tmp = gen_reg_rtx (V1TImode);
+       emit_insn_before (gen_rtx_SET (tmp,
+ 				     gen_gpr_to_xmm_move_src (V1TImode, *op)),
+ 			insn);
+       *op = tmp;
+ 
+       if (dump_file)
+ 	fprintf (dump_file, "  Preloading operand for insn %d into r%d\n",
+ 		 INSN_UID (insn), REGNO (tmp));
+     }
+   else if (CONST_SCALAR_INT_P (*op))
+     {
+       rtx vec_cst;
+       rtx tmp = gen_reg_rtx (V1TImode);
+ 
+       /* Prefer all ones vector in case of -1.  */
+       if (constm1_operand (*op, TImode))
+ 	vec_cst = CONSTM1_RTX (V1TImode);
+       else
+ 	{
+ 	  rtx *v = XALLOCAVEC (rtx, 1);
+ 	  v[0] = *op;
+ 	  vec_cst = gen_rtx_CONST_VECTOR (V1TImode, gen_rtvec_v (1, v));
+ 	}
+ 
+       if (!standard_sse_constant_p (vec_cst, V1TImode))
+ 	{
+ 	  start_sequence ();
+ 	  vec_cst = validize_mem (force_const_mem (V1TImode, vec_cst));
+ 	  rtx_insn *seq = get_insns ();
+ 	  end_sequence ();
+ 	  emit_insn_before (seq, insn);
+ 	}
+ 
+       emit_insn_before (gen_move_insn (tmp, vec_cst), insn);
+       *op = tmp;
+     }
+   else
+     {
+       gcc_assert (SUBREG_P (*op));
+       gcc_assert (GET_MODE (*op) == vmode);
+     }
+ }
+ 
  /* Convert INSN from TImode to V1T1mode.  */
  
  void
*************** timode_scalar_chain::convert_insn (rtx_i
*** 1172,1188 ****
    rtx def_set = single_set (insn);
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
    switch (GET_CODE (dst))
      {
      case REG:
!       {
! 	rtx tmp = find_reg_equal_equiv_note (insn);
! 	if (tmp)
! 	  PUT_MODE (XEXP (tmp, 0), V1TImode);
! 	PUT_MODE (dst, V1TImode);
! 	fix_debug_reg_uses (dst);
!       }
        break;
      case MEM:
        PUT_MODE (dst, V1TImode);
--- 1600,1628 ----
    rtx def_set = single_set (insn);
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
+   rtx tmp;
  
    switch (GET_CODE (dst))
      {
      case REG:
!       if (GET_MODE (dst) == TImode)
! 	{
! 	  PUT_MODE (dst, V1TImode);
! 	  fix_debug_reg_uses (dst);
! 	}
!       if (GET_MODE (dst) == V1TImode)
! 	{
! 	  tmp = find_reg_equal_equiv_note (insn);
! 	  if (tmp)
! 	    {
! 	      if (GET_MODE (XEXP (tmp, 0)) == TImode)
! 		PUT_MODE (XEXP (tmp, 0), V1TImode);
! 	      else if (CONST_SCALAR_INT_P (XEXP (tmp, 0)))
! 		XEXP (tmp, 0)
! 		  = gen_rtx_CONST_VECTOR (V1TImode,
! 					  gen_rtvec (1, XEXP (tmp, 0)));
! 	    }
! 	}
        break;
      case MEM:
        PUT_MODE (dst, V1TImode);
*************** timode_scalar_chain::convert_insn (rtx_i
*** 1210,1216 ****
  	{
  	  /* Since there are no instructions to store 128-bit constant,
  	     temporary register usage is required.  */
- 	  rtx tmp = gen_reg_rtx (V1TImode);
  	  start_sequence ();
  	  src = gen_rtx_CONST_VECTOR (V1TImode, gen_rtvec (1, src));
  	  src = validize_mem (force_const_mem (V1TImode, src));
--- 1650,1655 ----
*************** timode_scalar_chain::convert_insn (rtx_i
*** 1218,1225 ****
  	  end_sequence ();
  	  if (seq)
  	    emit_insn_before (seq, insn);
! 	  emit_conversion_insns (gen_rtx_SET (dst, tmp), insn);
! 	  dst = tmp;
  	}
        break;
  
--- 1657,1668 ----
  	  end_sequence ();
  	  if (seq)
  	    emit_insn_before (seq, insn);
! 	  if (MEM_P (dst))
! 	    {
! 	      tmp = gen_reg_rtx (V1TImode);
! 	      emit_insn_before (gen_rtx_SET (tmp, src), insn);
! 	      src = tmp;
! 	    }
  	}
        break;
  
*************** timode_scalar_chain::convert_insn (rtx_i
*** 1235,1250 ****
  	default:
  	  gcc_unreachable ();
  	}
!       if (NONDEBUG_INSN_P (insn))
  	{
! 	  rtx tmp = gen_reg_rtx (V1TImode);
! 	  /* Since there are no instructions to store standard SSE
! 	     constant, temporary register usage is required.  */
! 	  emit_conversion_insns (gen_rtx_SET (dst, tmp), insn);
! 	  dst = tmp;
  	}
        break;
  
      default:
        gcc_unreachable ();
      }
--- 1678,1743 ----
  	default:
  	  gcc_unreachable ();
  	}
!       if (MEM_P (dst))
  	{
! 	  tmp = gen_reg_rtx (V1TImode);
! 	  emit_insn_before (gen_rtx_SET (tmp, src), insn);
! 	  src = tmp;
! 	}
!       break;
! 
!     case AND:
!       if (GET_CODE (XEXP (src, 0)) == NOT)
! 	{
! 	  convert_op (&XEXP (XEXP (src, 0), 0), insn);
! 	  convert_op (&XEXP (src, 1), insn);
! 	  PUT_MODE (XEXP (src, 0), V1TImode);
! 	  PUT_MODE (src, V1TImode);
! 	  break;
! 	}
!       /* FALLTHRU */
! 
!     case XOR:
!     case IOR:
!       convert_op (&XEXP (src, 0), insn);
!       convert_op (&XEXP (src, 1), insn);
!       PUT_MODE (src, V1TImode);
!       if (MEM_P (dst))
! 	{
! 	  tmp = gen_reg_rtx (V1TImode);
! 	  emit_insn_before (gen_rtx_SET (tmp, src), insn);
! 	  src = tmp;
! 	}
!       break;
! 
!     case NOT:
!       src = XEXP (src, 0);
!       convert_op (&src, insn);
!       tmp = gen_reg_rtx (V1TImode);
!       emit_insn_before (gen_move_insn (tmp, CONSTM1_RTX (V1TImode)), insn);
!       src = gen_rtx_XOR (V1TImode, src, tmp);
!       if (MEM_P (dst))
! 	{
! 	  tmp = gen_reg_rtx (V1TImode);
! 	  emit_insn_before (gen_rtx_SET (tmp, src), insn);
! 	  src = tmp;
  	}
        break;
  
+     case COMPARE:
+       dst = gen_rtx_REG (CCmode, FLAGS_REG);
+       src = convert_compare (XEXP (src, 0), XEXP (src, 1), insn);
+       break;
+ 
+     case ASHIFT:
+     case LSHIFTRT:
+     case ASHIFTRT:
+     case ROTATERT:
+     case ROTATE:
+       convert_op (&XEXP (src, 0), insn);
+       PUT_MODE (src, V1TImode);
+       break;
+ 
      default:
        gcc_unreachable ();
      }
*************** timode_scalar_chain::convert_insn (rtx_i
*** 1264,1270 ****
     Also populates defs_map which is used later by convert_insn.  */
  
  void
! general_scalar_chain::convert_registers ()
  {
    bitmap_iterator bi;
    unsigned id;
--- 1757,1763 ----
     Also populates defs_map which is used later by convert_insn.  */
  
  void
! scalar_chain::convert_registers ()
  {
    bitmap_iterator bi;
    unsigned id;
*************** scalar_chain::convert ()
*** 1299,1305 ****
  
    EXECUTE_IF_SET_IN_BITMAP (insns, 0, id, bi)
      {
!       convert_insn (DF_INSN_UID_GET (id)->insn);
        converted_insns++;
      }
  
--- 1792,1800 ----
  
    EXECUTE_IF_SET_IN_BITMAP (insns, 0, id, bi)
      {
!       rtx_insn *insn = DF_INSN_UID_GET (id)->insn;
!       convert_insn_common (insn);
!       convert_insn (insn);
        converted_insns++;
      }
  
*************** pseudo_reg_set (rtx_insn *insn)
*** 1339,1358 ****
    return set;
  }
  
! /* Check if comparison INSN may be transformed
!    into vector comparison.  Currently we transform
!    zero checks only which look like:
  
!    (set (reg:CCZ 17 flags)
!         (compare:CCZ (ior:SI (subreg:SI (reg:DI x) 4)
!                              (subreg:SI (reg:DI x) 0))
! 		     (const_int 0 [0])))  */
  
  static bool
  convertible_comparison_p (rtx_insn *insn, enum machine_mode mode)
  {
!   /* ??? Currently convertible for double-word DImode chain only.  */
!   if (TARGET_64BIT || mode != DImode)
      return false;
  
    if (!TARGET_SSE4_1)
--- 1834,1860 ----
    return set;
  }
  
! /* Return true if the register REG is defined in a single DEF chain.
!    If it is defined in more than one DEF chains, we may not be able
!    to convert it in all chains.  */
  
! static bool
! single_def_chain_p (rtx reg)
! {
!   df_ref ref = DF_REG_DEF_CHAIN (REGNO (reg));
!   if (!ref)
!     return false;
!   return DF_REF_NEXT_REG (ref) == nullptr;
! }
! 
! /* Check if comparison INSN may be transformed into vector comparison.
!    Currently we transform equality/inequality checks which look like:
!    (set (reg:CCZ 17 flags) (compare:CCZ (reg:TI x) (reg:TI y)))  */
  
  static bool
  convertible_comparison_p (rtx_insn *insn, enum machine_mode mode)
  {
!   if (mode != (TARGET_64BIT ? TImode : DImode))
      return false;
  
    if (!TARGET_SSE4_1)
*************** convertible_comparison_p (rtx_insn *insn
*** 1375,1408 ****
    rtx op1 = XEXP (src, 0);
    rtx op2 = XEXP (src, 1);
  
!   if (op2 != CONST0_RTX (GET_MODE (op2)))
!     return false;
! 
!   if (GET_CODE (op1) != IOR)
!     return false;
! 
!   op2 = XEXP (op1, 1);
!   op1 = XEXP (op1, 0);
! 
!   if (!SUBREG_P (op1)
!       || !SUBREG_P (op2)
!       || GET_MODE (op1) != SImode
!       || GET_MODE (op2) != SImode
!       || ((SUBREG_BYTE (op1) != 0
! 	   || SUBREG_BYTE (op2) != GET_MODE_SIZE (SImode))
! 	  && (SUBREG_BYTE (op2) != 0
! 	      || SUBREG_BYTE (op1) != GET_MODE_SIZE (SImode))))
!     return false;
  
!   op1 = SUBREG_REG (op1);
!   op2 = SUBREG_REG (op2);
  
!   if (op1 != op2
!       || !REG_P (op1)
!       || GET_MODE (op1) != DImode)
!     return false;
  
!   return true;
  }
  
  /* The general version of scalar_to_vector_candidate_p.  */
--- 1877,1917 ----
    rtx op1 = XEXP (src, 0);
    rtx op2 = XEXP (src, 1);
  
!   /* *cmp<dwi>_doubleword.  */
!   if ((CONST_SCALAR_INT_P (op1)
!        || ((REG_P (op1) || MEM_P (op1))
! 	   && GET_MODE (op1) == mode))
!       && (CONST_SCALAR_INT_P (op2)
! 	  || ((REG_P (op2) || MEM_P (op2))
! 	      && GET_MODE (op2) == mode)))
!     return true;
  
!   /* *testti_doubleword.  */
!   if (op2 == const0_rtx
!       && GET_CODE (op1) == AND
!       && REG_P (XEXP (op1, 0)))
!     {
!       rtx op12 = XEXP (op1, 1);
!       return GET_MODE (XEXP (op1, 0)) == TImode
! 	     && (CONST_SCALAR_INT_P (op12)
! 		 || ((REG_P (op12) || MEM_P (op12))
! 		     && GET_MODE (op12) == TImode));
!     }
  
!   /* *test<dwi>_not_doubleword.  */
!   if (op2 == const0_rtx
!       && GET_CODE (op1) == AND
!       && GET_CODE (XEXP (op1, 0)) == NOT)
!     {
!       rtx op11 = XEXP (XEXP (op1, 0), 0);
!       rtx op12 = XEXP (op1, 1);
!       return (REG_P (op11) || MEM_P (op11))
! 	     && (REG_P (op12) || MEM_P (op12))
! 	     && GET_MODE (op11) == mode
! 	     && GET_MODE (op12) == mode;
!     }
  
!   return false;
  }
  
  /* The general version of scalar_to_vector_candidate_p.  */
*************** general_scalar_to_vector_candidate_p (rt
*** 1499,1504 ****
--- 2008,2023 ----
      case CONST_INT:
        return REG_P (dst);
  
+     case VEC_SELECT:
+       /* Excluding MEM_P (dst) avoids intefering with vpextr[dq].  */
+       return REG_P (dst)
+ 	     && REG_P (XEXP (src, 0))
+ 	     && GET_MODE (XEXP (src, 0)) == (mode == DImode ? V2DImode
+ 							    : V4SImode)
+ 	     && GET_CODE (XEXP (src, 1)) == PARALLEL
+ 	     && XVECLEN (XEXP (src, 1), 0) == 1
+ 	     && CONST_INT_P (XVECEXP (XEXP (src, 1), 0, 0));
+ 
      default:
        return false;
      }
*************** general_scalar_to_vector_candidate_p (rt
*** 1515,1520 ****
--- 2034,2049 ----
    return true;
  }
  
+ /* Check for a suitable TImode memory operand.  */
+ 
+ static bool
+ timode_mem_p (rtx x)
+ {
+   return MEM_P (x)
+ 	 && (TARGET_SSE_UNALIGNED_LOAD_OPTIMAL
+ 	     || !misaligned_operand (x, TImode));
+ }
+ 
  /* The TImode version of scalar_to_vector_candidate_p.  */
  
  static bool
*************** timode_scalar_to_vector_candidate_p (rtx
*** 1528,1572 ****
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
!   /* Only TImode load and store are allowed.  */
!   if (GET_MODE (dst) != TImode)
!     return false;
  
!   if (MEM_P (dst))
!     {
!       /* Check for store.  Memory must be aligned or unaligned store
! 	 is optimal.  Only support store from register, standard SSE
! 	 constant or CONST_WIDE_INT generated from piecewise store.
  
! 	 ??? Verify performance impact before enabling CONST_INT for
! 	 __int128 store.  */
!       if (misaligned_operand (dst, TImode)
! 	  && !TARGET_SSE_UNALIGNED_STORE_OPTIMAL)
! 	return false;
  
!       switch (GET_CODE (src))
! 	{
! 	default:
! 	  return false;
  
! 	case REG:
! 	case CONST_WIDE_INT:
! 	  return true;
  
! 	case CONST_INT:
! 	  return standard_sse_constant_p (src, TImode);
! 	}
!     }
!   else if (MEM_P (src))
      {
!       /* Check for load.  Memory must be aligned or unaligned load is
! 	 optimal.  */
        return (REG_P (dst)
  	      && (!misaligned_operand (src, TImode)
  		  || TARGET_SSE_UNALIGNED_LOAD_OPTIMAL));
-     }
  
!   return false;
  }
  
  /* For a register REGNO, scan instructions for its defs and uses.
--- 2057,2136 ----
    rtx src = SET_SRC (def_set);
    rtx dst = SET_DEST (def_set);
  
!   if (GET_CODE (src) == COMPARE)
!     return convertible_comparison_p (insn, TImode);
  
!   if (GET_MODE (dst) != TImode
!       || (GET_MODE (src) != TImode
! 	  && !CONST_SCALAR_INT_P (src)))
!     return false;
  
!   if (!REG_P (dst) && !MEM_P (dst))
!     return false;
  
!   if (MEM_P (dst)
!       && misaligned_operand (dst, TImode)
!       && !TARGET_SSE_UNALIGNED_STORE_OPTIMAL)
!     return false;
  
!   if (REG_P (dst) && !single_def_chain_p (dst))
!     return false;
  
!   switch (GET_CODE (src))
      {
!     case REG:
!       return single_def_chain_p (src);
! 
!     case CONST_WIDE_INT:
!       return true;
! 
!     case CONST_INT:
!       /* ??? Verify performance impact before enabling CONST_INT for
! 	 __int128 store.  */
!       return standard_sse_constant_p (src, TImode);
! 
!     case MEM:
!       /* Memory must be aligned or unaligned load is optimal.  */
        return (REG_P (dst)
  	      && (!misaligned_operand (src, TImode)
  		  || TARGET_SSE_UNALIGNED_LOAD_OPTIMAL));
  
!     case AND:
!       if (!MEM_P (dst)
! 	  && GET_CODE (XEXP (src, 0)) == NOT
! 	  && REG_P (XEXP (XEXP (src, 0), 0))
! 	  && (REG_P (XEXP (src, 1))
! 	      || CONST_SCALAR_INT_P (XEXP (src, 1))
! 	      || timode_mem_p (XEXP (src, 1))))
! 	return true;
!       return REG_P (XEXP (src, 0))
! 	     && (REG_P (XEXP (src, 1))
! 		 || CONST_SCALAR_INT_P (XEXP (src, 1))
! 		 || timode_mem_p (XEXP (src, 1)));
! 
!     case IOR:
!     case XOR:
!       return REG_P (XEXP (src, 0))
! 	     && (REG_P (XEXP (src, 1))
! 		 || CONST_SCALAR_INT_P (XEXP (src, 1))
! 		 || timode_mem_p (XEXP (src, 1)));
! 
!     case NOT:
!       return REG_P (XEXP (src, 0)) || timode_mem_p (XEXP (src, 0));
! 
!     case ASHIFT:
!     case LSHIFTRT:
!     case ASHIFTRT:
!     case ROTATERT:
!     case ROTATE:
!       /* Handle shifts/rotates by integer constants between 0 and 127.  */
!       return REG_P (XEXP (src, 0))
! 	     && CONST_INT_P (XEXP (src, 1))
! 	     && (INTVAL (XEXP (src, 1)) & ~0x7f) == 0;
! 
!     default:
!       return false;
!     }
  }
  
  /* For a register REGNO, scan instructions for its defs and uses.
*************** static void
*** 1576,1581 ****
--- 2140,2150 ----
  timode_check_non_convertible_regs (bitmap candidates, bitmap regs,
  				   unsigned int regno)
  {
+   /* Do nothing if REGNO is already in REGS or is a hard reg.  */
+   if (bitmap_bit_p (regs, regno)
+       || HARD_REGISTER_NUM_P (regno))
+     return;
+ 
    for (df_ref def = DF_REG_DEF_CHAIN (regno);
         def;
         def = DF_REF_NEXT_REG (def))
*************** timode_check_non_convertible_regs (bitma
*** 1611,1617 ****
      }
  }
  
! /* The TImode version of remove_non_convertible_regs.  */
  
  static void
  timode_remove_non_convertible_regs (bitmap candidates)
--- 2180,2192 ----
      }
  }
  
! /* For a given bitmap of insn UIDs scans all instructions and
!    remove insn from CANDIDATES in case it has both convertible
!    and not convertible definitions.
! 
!    All insns in a bitmap are conversion candidates according to
!    scalar_to_vector_candidate_p.  Currently it implies all insns
!    are single_set.  */
  
  static void
  timode_remove_non_convertible_regs (bitmap candidates)
*************** timode_remove_non_convertible_regs (bitm
*** 1619,1674 ****
    bitmap_iterator bi;
    unsigned id;
    bitmap regs = BITMAP_ALLOC (NULL);
  
!   EXECUTE_IF_SET_IN_BITMAP (candidates, 0, id, bi)
!     {
!       rtx def_set = single_set (DF_INSN_UID_GET (id)->insn);
!       rtx dest = SET_DEST (def_set);
!       rtx src = SET_SRC (def_set);
! 
!       if ((!REG_P (dest)
! 	   || bitmap_bit_p (regs, REGNO (dest))
! 	   || HARD_REGISTER_P (dest))
! 	  && (!REG_P (src)
! 	      || bitmap_bit_p (regs, REGNO (src))
! 	      || HARD_REGISTER_P (src)))
! 	continue;
  
!       if (REG_P (dest))
! 	timode_check_non_convertible_regs (candidates, regs,
! 					   REGNO (dest));
  
!       if (REG_P (src))
! 	timode_check_non_convertible_regs (candidates, regs,
! 					   REGNO (src));
!     }
  
!   EXECUTE_IF_SET_IN_BITMAP (regs, 0, id, bi)
!     {
!       for (df_ref def = DF_REG_DEF_CHAIN (id);
! 	   def;
! 	   def = DF_REF_NEXT_REG (def))
! 	if (bitmap_bit_p (candidates, DF_REF_INSN_UID (def)))
! 	  {
! 	    if (dump_file)
! 	      fprintf (dump_file, "Removing insn %d from candidates list\n",
! 		       DF_REF_INSN_UID (def));
  
! 	    bitmap_clear_bit (candidates, DF_REF_INSN_UID (def));
! 	  }
  
!       for (df_ref ref = DF_REG_USE_CHAIN (id);
! 	   ref;
! 	   ref = DF_REF_NEXT_REG (ref))
! 	if (bitmap_bit_p (candidates, DF_REF_INSN_UID (ref)))
! 	  {
! 	    if (dump_file)
! 	      fprintf (dump_file, "Removing insn %d from candidates list\n",
! 		       DF_REF_INSN_UID (ref));
  
! 	    bitmap_clear_bit (candidates, DF_REF_INSN_UID (ref));
! 	  }
!     }
  
    BITMAP_FREE (regs);
  }
--- 2194,2250 ----
    bitmap_iterator bi;
    unsigned id;
    bitmap regs = BITMAP_ALLOC (NULL);
+   bool changed;
  
!   do {
!     changed = false;
!     EXECUTE_IF_SET_IN_BITMAP (candidates, 0, id, bi)
!       {
! 	rtx_insn *insn = DF_INSN_UID_GET (id)->insn;
! 	df_ref ref;
  
! 	FOR_EACH_INSN_DEF (ref, insn)
! 	  if (!DF_REF_REG_MEM_P (ref)
! 	      && GET_MODE (DF_REF_REG (ref)) == TImode)
! 	    timode_check_non_convertible_regs (candidates, regs,
! 					       DF_REF_REGNO (ref));
  
! 	FOR_EACH_INSN_USE (ref, insn)
! 	  if (!DF_REF_REG_MEM_P (ref)
! 	      && GET_MODE (DF_REF_REG (ref)) == TImode)
! 	    timode_check_non_convertible_regs (candidates, regs,
! 					       DF_REF_REGNO (ref));
!       }
  
!     EXECUTE_IF_SET_IN_BITMAP (regs, 0, id, bi)
!       {
! 	for (df_ref def = DF_REG_DEF_CHAIN (id);
! 	     def;
! 	     def = DF_REF_NEXT_REG (def))
! 	  if (bitmap_bit_p (candidates, DF_REF_INSN_UID (def)))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "Removing insn %d from candidates list\n",
! 			 DF_REF_INSN_UID (def));
  
! 	      bitmap_clear_bit (candidates, DF_REF_INSN_UID (def));
! 	      changed = true;
! 	    }
  
! 	for (df_ref ref = DF_REG_USE_CHAIN (id);
! 	     ref;
! 	     ref = DF_REF_NEXT_REG (ref))
! 	  if (bitmap_bit_p (candidates, DF_REF_INSN_UID (ref)))
! 	    {
! 	      if (dump_file)
! 		fprintf (dump_file, "Removing insn %d from candidates list\n",
! 			 DF_REF_INSN_UID (ref));
  
! 	      bitmap_clear_bit (candidates, DF_REF_INSN_UID (ref));
! 	      changed = true;
! 	    }
!       }
!   } while (changed);
  
    BITMAP_FREE (regs);
  }
*************** convert_scalars_to_vector (bool timode_p
*** 1737,1766 ****
        fprintf (dump_file, "There are no candidates for optimization.\n");
  
    for (unsigned i = 0; i <= 2; ++i)
!     while (!bitmap_empty_p (&candidates[i]))
!       {
! 	unsigned uid = bitmap_first_set_bit (&candidates[i]);
! 	scalar_chain *chain;
! 
! 	if (cand_mode[i] == TImode)
! 	  chain = new timode_scalar_chain;
! 	else
! 	  chain = new general_scalar_chain (cand_mode[i], cand_vmode[i]);
  
! 	/* Find instructions chain we want to convert to vector mode.
! 	   Check all uses and definitions to estimate all required
! 	   conversions.  */
! 	chain->build (&candidates[i], uid);
  
! 	if (chain->compute_convert_gain () > 0)
! 	  converted_insns += chain->convert ();
! 	else
! 	  if (dump_file)
! 	    fprintf (dump_file, "Chain #%d conversion is not profitable\n",
! 		     chain->chain_id);
  
! 	delete chain;
!       }
  
    if (dump_file)
      fprintf (dump_file, "Total insns converted: %d\n", converted_insns);
--- 2313,2346 ----
        fprintf (dump_file, "There are no candidates for optimization.\n");
  
    for (unsigned i = 0; i <= 2; ++i)
!     {
!       auto_bitmap disallowed;
!       bitmap_tree_view (&candidates[i]);
!       while (!bitmap_empty_p (&candidates[i]))
! 	{
! 	  unsigned uid = bitmap_first_set_bit (&candidates[i]);
! 	  scalar_chain *chain;
  
! 	  if (cand_mode[i] == TImode)
! 	    chain = new timode_scalar_chain;
! 	  else
! 	    chain = new general_scalar_chain (cand_mode[i], cand_vmode[i]);
  
! 	  /* Find instructions chain we want to convert to vector mode.
! 	     Check all uses and definitions to estimate all required
! 	     conversions.  */
! 	  if (chain->build (&candidates[i], uid, disallowed))
! 	    {
! 	      if (chain->compute_convert_gain () > 0)
! 		converted_insns += chain->convert ();
! 	      else if (dump_file)
! 		fprintf (dump_file, "Chain #%d conversion is not profitable\n",
! 			 chain->chain_id);
! 	    }
  
! 	  delete chain;
! 	}
!     }
  
    if (dump_file)
      fprintf (dump_file, "Total insns converted: %d\n", converted_insns);
*************** public:
*** 1873,1885 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        return TARGET_AVX && TARGET_VZEROUPPER
  	&& flag_expensive_optimizations && !optimize_size;
      }
  
!   virtual unsigned int execute (function *)
      {
        return rest_of_handle_insert_vzeroupper ();
      }
--- 2453,2465 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        return TARGET_AVX && TARGET_VZEROUPPER
  	&& flag_expensive_optimizations && !optimize_size;
      }
  
!   unsigned int execute (function *) final override
      {
        return rest_of_handle_insert_vzeroupper ();
      }
*************** public:
*** 1908,1930 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        return ((!timode_p || TARGET_64BIT)
  	      && TARGET_STV && TARGET_SSE2 && optimize > 1);
      }
  
!   virtual unsigned int execute (function *)
      {
        return convert_scalars_to_vector (timode_p);
      }
  
!   opt_pass *clone ()
      {
        return new pass_stv (m_ctxt);
      }
  
!   void set_pass_param (unsigned int n, bool param)
      {
        gcc_assert (n == 0);
        timode_p = param;
--- 2488,2510 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        return ((!timode_p || TARGET_64BIT)
  	      && TARGET_STV && TARGET_SSE2 && optimize > 1);
      }
  
!   unsigned int execute (function *) final override
      {
        return convert_scalars_to_vector (timode_p);
      }
  
!   opt_pass *clone () final override
      {
        return new pass_stv (m_ctxt);
      }
  
!   void set_pass_param (unsigned int n, bool param) final override
      {
        gcc_assert (n == 0);
        timode_p = param;
*************** public:
*** 2135,2148 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        need_endbr = (flag_cf_protection & CF_BRANCH) != 0;
        patchable_area_size = crtl->patch_area_size - crtl->patch_area_entry;
        return need_endbr || patchable_area_size;
      }
  
!   virtual unsigned int execute (function *)
      {
        timevar_push (TV_MACH_DEP);
        rest_of_insert_endbr_and_patchable_area (need_endbr,
--- 2715,2728 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        need_endbr = (flag_cf_protection & CF_BRANCH) != 0;
        patchable_area_size = crtl->patch_area_size - crtl->patch_area_entry;
        return need_endbr || patchable_area_size;
      }
  
!   unsigned int execute (function *) final override
      {
        timevar_push (TV_MACH_DEP);
        rest_of_insert_endbr_and_patchable_area (need_endbr,
*************** public:
*** 2399,2405 ****
    {}
  
    /* opt_pass methods: */
!   virtual bool gate (function *)
      {
        return (TARGET_AVX
  	      && TARGET_SSE_PARTIAL_REG_DEPENDENCY
--- 2979,2985 ----
    {}
  
    /* opt_pass methods: */
!   bool gate (function *) final override
      {
        return (TARGET_AVX
  	      && TARGET_SSE_PARTIAL_REG_DEPENDENCY
*************** public:
*** 2408,2414 ****
  	      && optimize_function_for_speed_p (cfun));
      }
  
!   virtual unsigned int execute (function *)
      {
        return remove_partial_avx_dependency ();
      }
--- 2988,2994 ----
  	      && optimize_function_for_speed_p (cfun));
      }
  
!   unsigned int execute (function *) final override
      {
        return remove_partial_avx_dependency ();
      }
*************** ix86_get_function_versions_dispatcher (v
*** 2798,2803 ****
--- 3378,3384 ----
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
+       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
  
        dispatcher_node = cgraph_node::get_create (dispatch_decl);
        gcc_assert (dispatcher_node != NULL);
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-features.h gcc-13.1.0/gcc/config/i386/i386-features.h
*** gcc-12.2.0/gcc/config/i386/i386-features.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-features.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** class scalar_chain
*** 148,186 ****
    /* Registers used in both vector and sclar modes.  */
    bitmap defs_conv;
  
!   void build (bitmap candidates, unsigned insn_uid);
    virtual int compute_convert_gain () = 0;
    int convert ();
  
   protected:
    void add_to_queue (unsigned insn_uid);
    void emit_conversion_insns (rtx insns, rtx_insn *pos);
  
   private:
!   void add_insn (bitmap candidates, unsigned insn_uid);
!   void analyze_register_chain (bitmap candidates, df_ref ref);
!   virtual void mark_dual_mode_def (df_ref def) = 0;
    virtual void convert_insn (rtx_insn *insn) = 0;
!   virtual void convert_registers () = 0;
  };
  
  class general_scalar_chain : public scalar_chain
  {
   public:
!   general_scalar_chain (enum machine_mode smode_, enum machine_mode vmode_);
!   ~general_scalar_chain ();
!   int compute_convert_gain ();
   private:
!   hash_map<rtx, rtx> defs_map;
!   bitmap insns_conv;
!   unsigned n_sse_to_integer;
!   unsigned n_integer_to_sse;
!   void mark_dual_mode_def (df_ref def);
!   void convert_insn (rtx_insn *insn);
!   void convert_op (rtx *op, rtx_insn *insn);
!   void convert_reg (rtx_insn *insn, rtx dst, rtx src);
!   void make_vector_copies (rtx_insn *, rtx);
!   void convert_registers ();
    int vector_const_cost (rtx exp);
  };
  
--- 148,193 ----
    /* Registers used in both vector and sclar modes.  */
    bitmap defs_conv;
  
!   /* Limit on chain discovery.  */
!   unsigned max_visits;
! 
!   bitmap insns_conv;
!   hash_map<rtx, rtx> defs_map;
!   unsigned n_sse_to_integer;
!   unsigned n_integer_to_sse;
! 
!   bool build (bitmap candidates, unsigned insn_uid, bitmap disallowed);
    virtual int compute_convert_gain () = 0;
    int convert ();
  
   protected:
    void add_to_queue (unsigned insn_uid);
    void emit_conversion_insns (rtx insns, rtx_insn *pos);
+   rtx convert_compare (rtx op1, rtx op2, rtx_insn *insn);
+   void mark_dual_mode_def (df_ref def);
+   void convert_reg (rtx_insn *insn, rtx dst, rtx src);
+   void convert_insn_common (rtx_insn *insn);
+   void make_vector_copies (rtx_insn *, rtx);
+   void convert_registers ();
  
   private:
!   bool add_insn (bitmap candidates, unsigned insn_uid, bitmap disallowed);
!   bool analyze_register_chain (bitmap candidates, df_ref ref,
! 			       bitmap disallowed);
    virtual void convert_insn (rtx_insn *insn) = 0;
!   virtual void convert_op (rtx *op, rtx_insn *insn) = 0;
  };
  
  class general_scalar_chain : public scalar_chain
  {
   public:
!   general_scalar_chain (enum machine_mode smode_, enum machine_mode vmode_)
!     : scalar_chain (smode_, vmode_) {}
!   int compute_convert_gain () final override;
! 
   private:
!   void convert_insn (rtx_insn *insn) final override;
!   void convert_op (rtx *op, rtx_insn *insn) final override;
    int vector_const_cost (rtx exp);
  };
  
*************** class timode_scalar_chain : public scala
*** 188,208 ****
  {
   public:
    timode_scalar_chain () : scalar_chain (TImode, V1TImode) {}
! 
!   /* Convert from TImode to V1TImode is always faster.  */
!   int compute_convert_gain () { return 1; }
  
   private:
-   void mark_dual_mode_def (df_ref def);
    void fix_debug_reg_uses (rtx reg);
!   void convert_insn (rtx_insn *insn);
!   /* We don't convert registers to difference size.  */
!   void convert_registers () {}
  };
  
  } // anon namespace
  
! bool ix86_save_reg (unsigned int regno, bool maybe_eh_return, bool ignore_outlined);
  int ix86_compare_version_priority (tree decl1, tree decl2);
  tree ix86_generate_version_dispatcher_body (void *node_p);
  tree ix86_get_function_versions_dispatcher (void *decl);
--- 195,212 ----
  {
   public:
    timode_scalar_chain () : scalar_chain (TImode, V1TImode) {}
!   int compute_convert_gain () final override;
  
   private:
    void fix_debug_reg_uses (rtx reg);
!   void convert_insn (rtx_insn *insn) final override;
!   void convert_op (rtx *op, rtx_insn *insn) final override;
  };
  
  } // anon namespace
  
! bool ix86_save_reg (unsigned int regno, bool maybe_eh_return,
! 		    bool ignore_outlined);
  int ix86_compare_version_priority (tree decl1, tree decl2);
  tree ix86_generate_version_dispatcher_body (void *node_p);
  tree ix86_get_function_versions_dispatcher (void *decl);
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-isa.def gcc-13.1.0/gcc/config/i386/i386-isa.def
*** gcc-12.2.0/gcc/config/i386/i386-isa.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-isa.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition for processor table alias flags.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definition for processor table alias flags.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** DEF_PTA(KL)
*** 109,111 ****
--- 109,119 ----
  DEF_PTA(WIDEKL)
  DEF_PTA(AVXVNNI)
  DEF_PTA(AVX512FP16)
+ DEF_PTA(AVXIFMA)
+ DEF_PTA(AVXVNNIINT8)
+ DEF_PTA(AVXNECONVERT)
+ DEF_PTA(CMPCCXADD)
+ DEF_PTA(AMX_FP16)
+ DEF_PTA(PREFETCHI)
+ DEF_PTA(RAOINT)
+ DEF_PTA(AMX_COMPLEX)
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-modes.def gcc-13.1.0/gcc/config/i386/i386-modes.def
*** gcc-12.2.0/gcc/config/i386/i386-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 24,29 ****
--- 24,31 ----
  FRACTIONAL_FLOAT_MODE (XF, 80, 12, ieee_extended_intel_96_format);
  FLOAT_MODE (TF, 16, ieee_quad_format);
  FLOAT_MODE (HF, 2, ieee_half_format);
+ FLOAT_MODE (BF, 2, 0);
+ ADJUST_FLOAT_FORMAT (BF, &arm_bfloat_half_format);
  
  /* In ILP32 mode, XFmode has size 12 and alignment 4.
     In LP64 mode, XFmode has size and alignment 16.  */
*************** VECTOR_MODES (FLOAT, 64);     /*  V32HF
*** 91,96 ****
--- 93,99 ----
  VECTOR_MODES (FLOAT, 128);    /* V64HF V32SF V16DF V8TF */
  VECTOR_MODES (FLOAT, 256);    /* V128HF V64SF V32DF V16TF */
  VECTOR_MODE (FLOAT, HF, 2);   /* 	      	   V2HF */
+ VECTOR_MODE (FLOAT, BF, 2);   /* 	      	   V2BF */
  VECTOR_MODE (FLOAT, HF, 6);   /*		   V6HF */
  VECTOR_MODE (INT, TI, 1);     /*                   V1TI */
  VECTOR_MODE (INT, DI, 1);     /*                   V1DI */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-options.cc gcc-13.1.0/gcc/config/i386/i386-options.cc
*** gcc-12.2.0/gcc/config/i386/i386-options.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-options.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 127,143 ****
  #define m_SAPPHIRERAPIDS (HOST_WIDE_INT_1U<<PROCESSOR_SAPPHIRERAPIDS)
  #define m_ALDERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ALDERLAKE)
  #define m_ROCKETLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ROCKETLAKE)
  #define m_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \
  		       | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \
  		       | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS \
! 		       | m_ROCKETLAKE)
  #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_CORE_AVX512)
  #define m_CORE_ALL (m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE | m_CORE_AVX2)
  #define m_GOLDMONT (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT)
  #define m_GOLDMONT_PLUS (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT_PLUS)
  #define m_TREMONT (HOST_WIDE_INT_1U<<PROCESSOR_TREMONT)
  #define m_INTEL (HOST_WIDE_INT_1U<<PROCESSOR_INTEL)
  
  #define m_GEODE (HOST_WIDE_INT_1U<<PROCESSOR_GEODE)
  #define m_K6 (HOST_WIDE_INT_1U<<PROCESSOR_K6)
  #define m_K6_GEODE (m_K6 | m_GEODE)
--- 127,149 ----
  #define m_SAPPHIRERAPIDS (HOST_WIDE_INT_1U<<PROCESSOR_SAPPHIRERAPIDS)
  #define m_ALDERLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ALDERLAKE)
  #define m_ROCKETLAKE (HOST_WIDE_INT_1U<<PROCESSOR_ROCKETLAKE)
+ #define m_GRANITERAPIDS (HOST_WIDE_INT_1U<<PROCESSOR_GRANITERAPIDS)
  #define m_CORE_AVX512 (m_SKYLAKE_AVX512 | m_CANNONLAKE \
  		       | m_ICELAKE_CLIENT | m_ICELAKE_SERVER | m_CASCADELAKE \
  		       | m_TIGERLAKE | m_COOPERLAKE | m_SAPPHIRERAPIDS \
! 		       | m_ROCKETLAKE | m_GRANITERAPIDS)
  #define m_CORE_AVX2 (m_HASWELL | m_SKYLAKE | m_CORE_AVX512)
  #define m_CORE_ALL (m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE | m_CORE_AVX2)
  #define m_GOLDMONT (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT)
  #define m_GOLDMONT_PLUS (HOST_WIDE_INT_1U<<PROCESSOR_GOLDMONT_PLUS)
  #define m_TREMONT (HOST_WIDE_INT_1U<<PROCESSOR_TREMONT)
+ #define m_SIERRAFOREST (HOST_WIDE_INT_1U<<PROCESSOR_SIERRAFOREST)
+ #define m_GRANDRIDGE (HOST_WIDE_INT_1U<<PROCESSOR_GRANDRIDGE)
+ #define m_CORE_ATOM (m_SIERRAFOREST | m_GRANDRIDGE)
  #define m_INTEL (HOST_WIDE_INT_1U<<PROCESSOR_INTEL)
  
+ #define m_LUJIAZUI (HOST_WIDE_INT_1U<<PROCESSOR_LUJIAZUI)
+ 
  #define m_GEODE (HOST_WIDE_INT_1U<<PROCESSOR_GEODE)
  #define m_K6 (HOST_WIDE_INT_1U<<PROCESSOR_K6)
  #define m_K6_GEODE (m_K6 | m_GEODE)
*************** along with GCC; see the file COPYING3.
*** 152,162 ****
  #define m_ZNVER1 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER1)
  #define m_ZNVER2 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER2)
  #define m_ZNVER3 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER3)
  #define m_BTVER1 (HOST_WIDE_INT_1U<<PROCESSOR_BTVER1)
  #define m_BTVER2 (HOST_WIDE_INT_1U<<PROCESSOR_BTVER2)
  #define m_BDVER	(m_BDVER1 | m_BDVER2 | m_BDVER3 | m_BDVER4)
  #define m_BTVER (m_BTVER1 | m_BTVER2)
! #define m_ZNVER	(m_ZNVER1 | m_ZNVER2 | m_ZNVER3)
  #define m_AMD_MULTIPLE (m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER \
  			| m_ZNVER)
  
--- 158,169 ----
  #define m_ZNVER1 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER1)
  #define m_ZNVER2 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER2)
  #define m_ZNVER3 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER3)
+ #define m_ZNVER4 (HOST_WIDE_INT_1U<<PROCESSOR_ZNVER4)
  #define m_BTVER1 (HOST_WIDE_INT_1U<<PROCESSOR_BTVER1)
  #define m_BTVER2 (HOST_WIDE_INT_1U<<PROCESSOR_BTVER2)
  #define m_BDVER	(m_BDVER1 | m_BDVER2 | m_BDVER3 | m_BDVER4)
  #define m_BTVER (m_BTVER1 | m_BTVER2)
! #define m_ZNVER	(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4)
  #define m_AMD_MULTIPLE (m_ATHLON_K8 | m_AMDFAM10 | m_BDVER | m_BTVER \
  			| m_ZNVER)
  
*************** static struct ix86_target_opts isa2_opts
*** 224,230 ****
    { "-mkl",		OPTION_MASK_ISA2_KL },
    { "-mwidekl", 	OPTION_MASK_ISA2_WIDEKL },
    { "-mavxvnni",	OPTION_MASK_ISA2_AVXVNNI },
!   { "-mavx512fp16",	OPTION_MASK_ISA2_AVX512FP16 }
  };
  static struct ix86_target_opts isa_opts[] =
  {
--- 231,245 ----
    { "-mkl",		OPTION_MASK_ISA2_KL },
    { "-mwidekl", 	OPTION_MASK_ISA2_WIDEKL },
    { "-mavxvnni",	OPTION_MASK_ISA2_AVXVNNI },
!   { "-mavx512fp16",	OPTION_MASK_ISA2_AVX512FP16 },
!   { "-mavxifma",	OPTION_MASK_ISA2_AVXIFMA },
!   { "-mavxvnniint8",	OPTION_MASK_ISA2_AVXVNNIINT8 },
!   { "-mavxneconvert",   OPTION_MASK_ISA2_AVXNECONVERT },
!   { "-mcmpccxadd",      OPTION_MASK_ISA2_CMPCCXADD },
!   { "-mamx-fp16",       OPTION_MASK_ISA2_AMX_FP16 },
!   { "-mprefetchi",      OPTION_MASK_ISA2_PREFETCHI },
!   { "-mraoint", 	OPTION_MASK_ISA2_RAOINT },
!   { "-mamx-complex",	OPTION_MASK_ISA2_AMX_COMPLEX }
  };
  static struct ix86_target_opts isa_opts[] =
  {
*************** ix86_omp_device_kind_arch_isa (enum omp_
*** 305,314 ****
      case omp_device_kind:
        return strcmp (name, "cpu") == 0;
      case omp_device_arch:
- #ifdef ACCEL_COMPILER
-       if (strcmp (name, "intel_mic") == 0)
- 	return 1;
- #endif
        if (strcmp (name, "x86") == 0)
  	return 1;
        if (TARGET_64BIT)
--- 320,325 ----
*************** ix86_function_specific_save (struct cl_t
*** 677,683 ****
    ptr->x_recip_mask_explicit = opts->x_recip_mask_explicit;
    ptr->x_ix86_arch_string = opts->x_ix86_arch_string;
    ptr->x_ix86_tune_string = opts->x_ix86_tune_string;
-   ptr->x_ix86_abi = opts->x_ix86_abi;
    ptr->x_ix86_asm_dialect = opts->x_ix86_asm_dialect;
    ptr->x_ix86_branch_cost = opts->x_ix86_branch_cost;
    ptr->x_ix86_dump_tunes = opts->x_ix86_dump_tunes;
--- 688,693 ----
*************** static const struct processor_costs *pro
*** 741,746 ****
--- 751,758 ----
    &slm_cost,
    &slm_cost,
    &tremont_cost,
+   &alderlake_cost,
+   &alderlake_cost,
    &slm_cost,
    &slm_cost,
    &skylake_cost,
*************** static const struct processor_costs *pro
*** 754,760 ****
--- 766,774 ----
    &icelake_cost,
    &alderlake_cost,
    &icelake_cost,
+   &icelake_cost,
    &intel_cost,
+   &lujiazui_cost,
    &geode_cost,
    &k6_cost,
    &athlon_cost,
*************** static const struct processor_costs *pro
*** 768,774 ****
    &btver2_cost,
    &znver1_cost,
    &znver2_cost,
!   &znver3_cost
  };
  
  /* Guarantee that the array is aligned with enum processor_type.  */
--- 782,789 ----
    &btver2_cost,
    &znver1_cost,
    &znver2_cost,
!   &znver3_cost,
!   &znver4_cost
  };
  
  /* Guarantee that the array is aligned with enum processor_type.  */
*************** ix86_function_specific_restore (struct g
*** 808,814 ****
    opts->x_recip_mask_explicit = ptr->x_recip_mask_explicit;
    opts->x_ix86_arch_string = ptr->x_ix86_arch_string;
    opts->x_ix86_tune_string = ptr->x_ix86_tune_string;
-   opts->x_ix86_abi = ptr->x_ix86_abi;
    opts->x_ix86_asm_dialect = ptr->x_ix86_asm_dialect;
    opts->x_ix86_branch_cost = ptr->x_ix86_branch_cost;
    opts->x_ix86_dump_tunes = ptr->x_ix86_dump_tunes;
--- 823,828 ----
*************** ix86_valid_target_attribute_inner_p (tre
*** 1069,1074 ****
--- 1083,1096 ----
      IX86_ATTR_ISA ("hreset", OPT_mhreset),
      IX86_ATTR_ISA ("avxvnni",   OPT_mavxvnni),
      IX86_ATTR_ISA ("avx512fp16", OPT_mavx512fp16),
+     IX86_ATTR_ISA ("avxifma", OPT_mavxifma),
+     IX86_ATTR_ISA ("avxvnniint8", OPT_mavxvnniint8),
+     IX86_ATTR_ISA ("avxneconvert", OPT_mavxneconvert),
+     IX86_ATTR_ISA ("cmpccxadd",   OPT_mcmpccxadd),
+     IX86_ATTR_ISA ("amx-fp16", OPT_mamx_fp16),
+     IX86_ATTR_ISA ("prefetchi",   OPT_mprefetchi),
+     IX86_ATTR_ISA ("raoint", OPT_mraoint),
+     IX86_ATTR_ISA ("amx-complex", OPT_mamx_complex),
  
      /* enum options */
      IX86_ATTR_ENUM ("fpmath=",	OPT_mfpmath_),
*************** ix86_recompute_optlev_based_flags (struc
*** 1816,1823 ****
--- 1838,1874 ----
  void
  ix86_override_options_after_change (void)
  {
+   /* Default align_* from the processor table.  */
    ix86_default_align (&global_options);
+ 
    ix86_recompute_optlev_based_flags (&global_options, &global_options_set);
+ 
+   /* Disable unrolling small loops when there's explicit
+      -f{,no}unroll-loop.  */
+   if ((OPTION_SET_P (flag_unroll_loops))
+      || (OPTION_SET_P (flag_unroll_all_loops)
+ 	 && flag_unroll_all_loops))
+     {
+       if (!OPTION_SET_P (ix86_unroll_only_small_loops))
+ 	ix86_unroll_only_small_loops = 0;
+       /* Re-enable -frename-registers and -fweb if funroll-loops
+ 	 enabled.  */
+       if (!OPTION_SET_P (flag_web))
+ 	flag_web = flag_unroll_loops;
+       if (!OPTION_SET_P (flag_rename_registers))
+ 	flag_rename_registers = flag_unroll_loops;
+       /* -fcunroll-grow-size default follws -f[no]-unroll-loops.  */
+       if (!OPTION_SET_P (flag_cunroll_grow_size))
+ 	flag_cunroll_grow_size = flag_unroll_loops
+ 				 || flag_peel_loops
+ 				 || optimize >= 3;
+     }
+   else
+     {
+       if (!OPTION_SET_P (flag_cunroll_grow_size))
+ 	flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
+     }
+ 
  }
  
  /* Clear stack slot assignments remembered from previous functions.
*************** ix86_option_override_internal (bool main
*** 1984,1989 ****
--- 2035,2043 ----
    if (TARGET_UINTR && !TARGET_64BIT)
      error ("%<-muintr%> not supported for 32-bit code");
  
+   if (ix86_lam_type && !TARGET_LP64)
+     error ("%<-mlam=%> option: [u48|u57] not supported for 32-bit code");
+ 
    if (!opts->x_ix86_arch_string)
      opts->x_ix86_arch_string
        = TARGET_64BIT_P (opts->x_ix86_isa_flags)
*************** ix86_option_override_internal (bool main
*** 2329,2335 ****
  
    set_ix86_tune_features (opts, ix86_tune, opts->x_ix86_dump_tunes);
  
!   ix86_recompute_optlev_based_flags (opts, opts_set);
  
    ix86_tune_cost = processor_cost_table[ix86_tune];
    /* TODO: ix86_cost should be chosen at instruction or function granuality
--- 2383,2389 ----
  
    set_ix86_tune_features (opts, ix86_tune, opts->x_ix86_dump_tunes);
  
!   ix86_override_options_after_change ();
  
    ix86_tune_cost = processor_cost_table[ix86_tune];
    /* TODO: ix86_cost should be chosen at instruction or function granuality
*************** ix86_option_override_internal (bool main
*** 2360,2368 ****
        || TARGET_64BIT_P (opts->x_ix86_isa_flags))
      opts->x_ix86_regparm = REGPARM_MAX;
  
-   /* Default align_* from the processor table.  */
-   ix86_default_align (opts);
- 
    /* Provide default for -mbranch-cost= value.  */
    SET_OPTION_IF_UNSET (opts, opts_set, ix86_branch_cost,
  		       ix86_tune_cost->branch_cost);
--- 2414,2419 ----
*************** ix86_option_override_internal (bool main
*** 2934,2939 ****
--- 2985,2992 ----
      }
  
    if (ix86_tune_features [X86_TUNE_AVOID_256FMA_CHAINS])
+     SET_OPTION_IF_UNSET (opts, opts_set, param_avoid_fma_max_bits, 512);
+   else if (ix86_tune_features [X86_TUNE_AVOID_256FMA_CHAINS])
      SET_OPTION_IF_UNSET (opts, opts_set, param_avoid_fma_max_bits, 256);
    else if (ix86_tune_features [X86_TUNE_AVOID_128FMA_CHAINS])
      SET_OPTION_IF_UNSET (opts, opts_set, param_avoid_fma_max_bits, 128);
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-options.h gcc-13.1.0/gcc/config/i386/i386-options.h
*** gcc-12.2.0/gcc/config/i386/i386-options.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-options.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-opts.h gcc-13.1.0/gcc/config/i386/i386-opts.h
*** gcc-12.2.0/gcc/config/i386/i386-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for IA-32.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for IA-32.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** enum harden_sls {
*** 128,131 ****
--- 128,137 ----
    harden_sls_all = harden_sls_return | harden_sls_indirect_jmp
  };
  
+ enum lam_type {
+   lam_none = 0,
+   lam_u48 = 1,
+   lam_u57
+ };
+ 
  #endif
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-passes.def gcc-13.1.0/gcc/config/i386/i386-passes.def
*** gcc-12.2.0/gcc/config/i386/i386-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for IA-32 
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for IA-32 
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386-protos.h gcc-13.1.0/gcc/config/i386/i386-protos.h
*** gcc-12.2.0/gcc/config/i386/i386-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void ix86_reset_previous_fndecl (
*** 50,57 ****
  
  extern bool ix86_using_red_zone (void);
  
- extern rtx ix86_gen_scratch_sse_rtx (machine_mode);
- 
  extern unsigned int ix86_regmode_natural_size (machine_mode);
  extern bool ix86_check_builtin_isa_match (unsigned int fcode);
  #ifdef RTX_CODE
--- 50,55 ----
*************** extern void print_reg (rtx, int, FILE*);
*** 85,90 ****
--- 83,89 ----
  extern void ix86_print_operand (FILE *, rtx, int);
  
  extern void split_double_mode (machine_mode, rtx[], int, rtx[], rtx[]);
+ extern void split_double_concat (machine_mode, rtx, rtx lo, rtx);
  
  extern const char *output_set_got (rtx, rtx);
  extern const char *output_387_binary_op (rtx_insn *, rtx*);
*************** extern void ix86_expand_binary_operator
*** 108,114 ****
  					 machine_mode, rtx[]);
  extern void ix86_expand_vector_logical_operator (enum rtx_code,
  						 machine_mode, rtx[]);
! extern bool ix86_binary_operator_ok (enum rtx_code, machine_mode, rtx[]);
  extern bool ix86_avoid_lea_for_add (rtx_insn *, rtx[]);
  extern bool ix86_use_lea_for_mov (rtx_insn *, rtx[]);
  extern bool ix86_avoid_lea_for_addr (rtx_insn *, rtx[]);
--- 107,113 ----
  					 machine_mode, rtx[]);
  extern void ix86_expand_vector_logical_operator (enum rtx_code,
  						 machine_mode, rtx[]);
! extern bool ix86_binary_operator_ok (enum rtx_code, machine_mode, rtx[3]);
  extern bool ix86_avoid_lea_for_add (rtx_insn *, rtx[]);
  extern bool ix86_use_lea_for_mov (rtx_insn *, rtx[]);
  extern bool ix86_avoid_lea_for_addr (rtx_insn *, rtx[]);
*************** extern void ix86_expand_unary_operator (
*** 122,127 ****
--- 121,128 ----
  					rtx[]);
  extern rtx ix86_build_const_vector (machine_mode, bool, rtx);
  extern rtx ix86_build_signbit_mask (machine_mode, bool, bool);
+ extern HOST_WIDE_INT ix86_convert_const_vector_to_integer (rtx,
+ 							   machine_mode);
  extern void ix86_split_convert_uns_si_sse (rtx[]);
  extern void ix86_expand_convert_uns_didf_sse (rtx, rtx);
  extern void ix86_expand_convert_uns_sixf_sse (rtx, rtx);
*************** extern void ix86_split_fp_absneg_operato
*** 137,143 ****
  					   rtx[]);
  extern void ix86_expand_copysign (rtx []);
  extern void ix86_expand_xorsign (rtx []);
! extern bool ix86_unary_operator_ok (enum rtx_code, machine_mode, rtx[]);
  extern bool ix86_match_ccmode (rtx, machine_mode);
  extern void ix86_expand_branch (enum rtx_code, rtx, rtx, rtx);
  extern void ix86_expand_setcc (rtx, enum rtx_code, rtx, rtx);
--- 138,144 ----
  					   rtx[]);
  extern void ix86_expand_copysign (rtx []);
  extern void ix86_expand_xorsign (rtx []);
! extern bool ix86_unary_operator_ok (enum rtx_code, machine_mode, rtx[2]);
  extern bool ix86_match_ccmode (rtx, machine_mode);
  extern void ix86_expand_branch (enum rtx_code, rtx, rtx, rtx);
  extern void ix86_expand_setcc (rtx, enum rtx_code, rtx, rtx);
*************** extern void ix86_split_lshr (rtx *, rtx,
*** 165,170 ****
--- 166,172 ----
  extern void ix86_expand_v1ti_shift (enum rtx_code, rtx[]);
  extern void ix86_expand_v1ti_rotate (enum rtx_code, rtx[]);
  extern void ix86_expand_v1ti_ashiftrt (rtx[]);
+ extern rtx ix86_replace_reg_with_reg (rtx, rtx, rtx);
  extern rtx ix86_find_base_term (rtx);
  extern bool ix86_check_movabs (rtx, int);
  extern bool ix86_check_no_addr_space (rtx);
*************** extern void ix86_expand_atomic_fetch_op_
*** 224,229 ****
--- 226,234 ----
  					      bool, bool);
  extern void ix86_expand_cmpxchg_loop (rtx *, rtx, rtx, rtx, rtx, rtx,
  				      bool, rtx_code_label *);
+ extern rtx ix86_expand_fast_convert_bf_to_sf (rtx);
+ extern rtx ix86_memtag_untagged_pointer (rtx, rtx);
+ extern bool ix86_memtag_can_tag_addresses (void);
  
  #ifdef TREE_CODE
  extern void init_cumulative_args (CUMULATIVE_ARGS *, tree, rtx, tree, int);
*************** extern bool ix86_extract_perm_from_pool_
*** 274,284 ****
  extern void ix86_target_macros (void);
  extern void ix86_register_pragmas (void);
  
- /* In i386-d.cc  */
- extern void ix86_d_target_versions (void);
- extern void ix86_d_register_target_info (void);
- extern bool ix86_d_has_stdcall_convention (unsigned int *, unsigned int *);
- 
  /* In winnt.cc  */
  extern void i386_pe_unique_section (tree, int);
  extern void i386_pe_declare_function_type (FILE *, const char *, int);
--- 279,284 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386.cc gcc-13.1.0/gcc/config/i386/i386.cc
*** gcc-12.2.0/gcc/config/i386/i386.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on IA-32.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for code generation on IA-32.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 96,101 ****
--- 96,102 ----
  #include "i386-expand.h"
  #include "i386-features.h"
  #include "function-abi.h"
+ #include "rtl-error.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** enum reg_class const regclass_map[FIRST_
*** 173,179 ****
  
  /* The "default" register map used in 32bit mode.  */
  
! int const dbx_register_map[FIRST_PSEUDO_REGISTER] =
  {
    /* general regs */
    0, 2, 1, 3, 6, 7, 4, 5,
--- 174,180 ----
  
  /* The "default" register map used in 32bit mode.  */
  
! int const debugger_register_map[FIRST_PSEUDO_REGISTER] =
  {
    /* general regs */
    0, 2, 1, 3, 6, 7, 4, 5,
*************** int const dbx_register_map[FIRST_PSEUDO_
*** 204,210 ****
  
  /* The "default" register map used in 64bit mode.  */
  
! int const dbx64_register_map[FIRST_PSEUDO_REGISTER] =
  {
    /* general regs */
    0, 1, 2, 3, 4, 5, 6, 7,
--- 205,211 ----
  
  /* The "default" register map used in 64bit mode.  */
  
! int const debugger64_register_map[FIRST_PSEUDO_REGISTER] =
  {
    /* general regs */
    0, 1, 2, 3, 4, 5, 6, 7,
*************** int const dbx64_register_map[FIRST_PSEUD
*** 283,289 ****
  	17 for %st(6) (gcc regno = 14)
  	18 for %st(7) (gcc regno = 15)
  */
! int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER] =
  {
    /* general regs */
    0, 2, 1, 3, 6, 7, 5, 4,
--- 284,290 ----
  	17 for %st(6) (gcc regno = 14)
  	18 for %st(7) (gcc regno = 15)
  */
! int const svr4_debugger_register_map[FIRST_PSEUDO_REGISTER] =
  {
    /* general regs */
    0, 2, 1, 3, 6, 7, 5, 4,
*************** ix86_function_ok_for_sibcall (tree decl,
*** 1024,1029 ****
--- 1025,1040 ----
  	 return false;
      }
  
+   /* Disable sibcall if callee has indirect_return attribute and
+      caller doesn't since callee will return to the caller's caller
+      via an indirect jump.  */
+   if (((flag_cf_protection & (CF_RETURN | CF_BRANCH))
+        == (CF_RETURN | CF_BRANCH))
+       && lookup_attribute ("indirect_return", TYPE_ATTRIBUTES (type))
+       && !lookup_attribute ("indirect_return",
+ 			    TYPE_ATTRIBUTES (TREE_TYPE (cfun->decl))))
+     return false;
+ 
    /* Otherwise okay.  That also includes certain types of indirect calls.  */
    return true;
  }
*************** classify_argument (machine_mode mode, co
*** 2389,2394 ****
--- 2400,2406 ----
      case E_CTImode:
        return 0;
      case E_HFmode:
+     case E_BFmode:
        if (!(bit_offset % 64))
  	classes[0] = X86_64_SSEHF_CLASS;
        else
*************** classify_argument (machine_mode mode, co
*** 2412,2417 ****
--- 2424,2430 ----
        classes[1] = X86_64_SSEUP_CLASS;
        return 2;
      case E_HCmode:
+     case E_BCmode:
        classes[0] = X86_64_SSE_CLASS;
        if (!(bit_offset % 64))
  	return 1;
*************** classify_argument (machine_mode mode, co
*** 2452,2457 ****
--- 2465,2471 ----
      case E_V8SImode:
      case E_V32QImode:
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V16HImode:
      case E_V4DFmode:
      case E_V4DImode:
*************** classify_argument (machine_mode mode, co
*** 2463,2468 ****
--- 2477,2483 ----
      case E_V8DFmode:
      case E_V16SFmode:
      case E_V32HFmode:
+     case E_V32BFmode:
      case E_V8DImode:
      case E_V16SImode:
      case E_V32HImode:
*************** classify_argument (machine_mode mode, co
*** 2481,2486 ****
--- 2496,2502 ----
      case E_V16QImode:
      case E_V8HImode:
      case E_V8HFmode:
+     case E_V8BFmode:
      case E_V2DFmode:
      case E_V2DImode:
        classes[0] = X86_64_SSE_CLASS;
*************** classify_argument (machine_mode mode, co
*** 2492,2498 ****
--- 2508,2516 ----
      case E_V2SImode:
      case E_V4HImode:
      case E_V4HFmode:
+     case E_V4BFmode:
      case E_V2HFmode:
+     case E_V2BFmode:
      case E_V8QImode:
        classes[0] = X86_64_SSE_CLASS;
        return 1;
*************** construct_container (machine_mode mode,
*** 2782,2790 ****
  	    intreg++;
  	    break;
  	  case X86_64_SSEHF_CLASS:
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
! 				   gen_rtx_REG (HFmode,
  						GET_SSE_REGNO (sse_regno)),
  				   GEN_INT (i*8));
  	    sse_regno++;
--- 2800,2809 ----
  	    intreg++;
  	    break;
  	  case X86_64_SSEHF_CLASS:
+ 	    tmpmode = (mode == BFmode ? BFmode : HFmode);
  	    exp [nexps++]
  	      = gen_rtx_EXPR_LIST (VOIDmode,
! 				   gen_rtx_REG (tmpmode,
  						GET_SSE_REGNO (sse_regno)),
  				   GEN_INT (i*8));
  	    sse_regno++;
*************** pass_in_reg:
*** 2935,2940 ****
--- 2954,2960 ----
        /* FALLTHRU */
  
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V8SFmode:
      case E_V8SImode:
      case E_V64QImode:
*************** pass_in_reg:
*** 2942,2947 ****
--- 2962,2968 ----
      case E_V16SImode:
      case E_V8DImode:
      case E_V32HFmode:
+     case E_V32BFmode:
      case E_V16SFmode:
      case E_V8DFmode:
      case E_V32QImode:
*************** pass_in_reg:
*** 2954,2959 ****
--- 2975,2981 ----
      case E_V4SImode:
      case E_V2DImode:
      case E_V8HFmode:
+     case E_V8BFmode:
      case E_V4SFmode:
      case E_V2DFmode:
        if (!type || !AGGREGATE_TYPE_P (type))
*************** pass_in_reg:
*** 2972,2977 ****
--- 2994,3000 ----
      case E_V8QImode:
      case E_V4HImode:
      case E_V4HFmode:
+     case E_V4BFmode:
      case E_V2SImode:
      case E_V2SFmode:
      case E_V1TImode:
*************** pass_in_reg:
*** 3178,3183 ****
--- 3201,3207 ----
      case E_V4SImode:
      case E_V2DImode:
      case E_V8HFmode:
+     case E_V8BFmode:
      case E_V4SFmode:
      case E_V2DFmode:
        if (!type || !AGGREGATE_TYPE_P (type))
*************** pass_in_reg:
*** 3198,3206 ****
--- 3222,3232 ----
      case E_V16SImode:
      case E_V8DImode:
      case E_V32HFmode:
+     case E_V32BFmode:
      case E_V16SFmode:
      case E_V8DFmode:
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V8SFmode:
      case E_V8SImode:
      case E_V32QImode:
*************** pass_in_reg:
*** 3218,3223 ****
--- 3244,3250 ----
      case E_V8QImode:
      case E_V4HImode:
      case E_V4HFmode:
+     case E_V4BFmode:
      case E_V2SImode:
      case E_V2SFmode:
      case E_V1TImode:
*************** function_arg_64 (const CUMULATIVE_ARGS *
*** 3261,3266 ****
--- 3288,3294 ----
        break;
  
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V8SFmode:
      case E_V8SImode:
      case E_V32QImode:
*************** function_arg_64 (const CUMULATIVE_ARGS *
*** 3268,3273 ****
--- 3296,3302 ----
      case E_V4DFmode:
      case E_V4DImode:
      case E_V32HFmode:
+     case E_V32BFmode:
      case E_V16SFmode:
      case E_V16SImode:
      case E_V64QImode:
*************** function_value_32 (machine_mode orig_mod
*** 3991,3998 ****
      /* Most things go in %eax.  */
      regno = AX_REG;
  
!   /* Return _Float16/_Complex _Foat16 by sse register.  */
!   if (mode == HFmode)
      regno = FIRST_SSE_REG;
    if (mode == HCmode)
      {
--- 4020,4027 ----
      /* Most things go in %eax.  */
      regno = AX_REG;
  
!   /* Return __bf16/ _Float16/_Complex _Foat16 by sse register.  */
!   if (mode == HFmode || mode == BFmode)
      regno = FIRST_SSE_REG;
    if (mode == HCmode)
      {
*************** function_value_64 (machine_mode orig_mod
*** 4040,4045 ****
--- 4069,4075 ----
  
        switch (mode)
  	{
+ 	case E_BFmode:
  	case E_HFmode:
  	case E_HCmode:
  	case E_SFmode:
*************** ix86_setup_incoming_varargs (cumulative_
*** 4534,4540 ****
    /* For varargs, we do not want to skip the dummy va_dcl argument.
       For stdargs, we do want to skip the last named argument.  */
    next_cum = *cum;
!   if (stdarg_p (fntype))
      ix86_function_arg_advance (pack_cumulative_args (&next_cum), arg);
  
    if (cum->call_abi == MS_ABI)
--- 4564,4571 ----
    /* For varargs, we do not want to skip the dummy va_dcl argument.
       For stdargs, we do want to skip the last named argument.  */
    next_cum = *cum;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
!       && stdarg_p (fntype))
      ix86_function_arg_advance (pack_cumulative_args (&next_cum), arg);
  
    if (cum->call_abi == MS_ABI)
*************** ix86_gimplify_va_arg (tree valist, tree
*** 4735,4740 ****
--- 4766,4772 ----
    switch (nat_mode)
      {
      case E_V16HFmode:
+     case E_V16BFmode:
      case E_V8SFmode:
      case E_V8SImode:
      case E_V32QImode:
*************** ix86_gimplify_va_arg (tree valist, tree
*** 4742,4747 ****
--- 4774,4780 ----
      case E_V4DFmode:
      case E_V4DImode:
      case E_V32HFmode:
+     case E_V32BFmode:
      case E_V16SFmode:
      case E_V16SImode:
      case E_V64QImode:
*************** standard_80387_constant_rtx (int idx)
*** 5160,5166 ****
  				       XFmode);
  }
  
! /* Return 1 if X is all bits 0 and 2 if X is all bits 1
     in supported SSE/AVX vector mode.  */
  
  int
--- 5193,5200 ----
  				       XFmode);
  }
  
! /* Return 1 if X is all bits 0, 2 if X is all bits 1
!    and 3 if X is all bits 1 with zero extend
     in supported SSE/AVX vector mode.  */
  
  int
*************** standard_sse_constant_p (rtx x, machine_
*** 5208,5213 ****
--- 5242,5251 ----
  	}
      }
  
+   if (vector_all_ones_zero_extend_half_operand (x, mode)
+       || vector_all_ones_zero_extend_quarter_operand (x, mode))
+     return 3;
+ 
    return 0;
  }
  
*************** standard_sse_constant_opcode (rtx_insn *
*** 5315,5320 ****
--- 5353,5377 ----
  	  gcc_unreachable ();
  	}
     }
+   else if (vector_all_ones_zero_extend_half_operand (x, mode))
+     {
+       if (GET_MODE_SIZE (mode) == 64)
+ 	{
+ 	  gcc_assert (TARGET_AVX512F);
+ 	  return "vpcmpeqd \t %t0, %t0, %t0";
+ 	}
+       else if (GET_MODE_SIZE (mode) == 32)
+ 	{
+ 	  gcc_assert (TARGET_AVX);
+ 	  return "vpcmpeqd \t %x0, %x0, %x0";
+ 	}
+       gcc_unreachable ();
+     }
+   else if (vector_all_ones_zero_extend_quarter_operand (x, mode))
+     {
+       gcc_assert (TARGET_AVX512F);
+       return "vpcmpeqd \t %x0, %x0, %x0";
+     }
  
    gcc_unreachable ();
  }
*************** ix86_get_ssemov (rtx *operands, unsigned
*** 5417,5423 ****
        switch (type)
  	{
  	case opcode_int:
! 	  if (scalar_mode == E_HFmode)
  	    opcode = (misaligned_p
  		      ? (TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64")
  		      : "vmovdqa64");
--- 5474,5480 ----
        switch (type)
  	{
  	case opcode_int:
! 	  if (scalar_mode == E_HFmode || scalar_mode == E_BFmode)
  	    opcode = (misaligned_p
  		      ? (TARGET_AVX512BW ? "vmovdqu16" : "vmovdqu64")
  		      : "vmovdqa64");
*************** ix86_get_ssemov (rtx *operands, unsigned
*** 5437,5442 ****
--- 5494,5500 ----
        switch (scalar_mode)
  	{
  	case E_HFmode:
+ 	case E_BFmode:
  	  if (evex_reg_p)
  	    opcode = (misaligned_p
  		      ? (TARGET_AVX512BW
*************** ix86_output_ssemov (rtx_insn *insn, rtx
*** 5621,5626 ****
--- 5679,5685 ----
  	return "%vmovss\t{%1, %0|%0, %1}";
  
      case MODE_HF:
+     case MODE_BF:
        if (REG_P (operands[0]) && REG_P (operands[1]))
  	return "vmovsh\t{%d1, %0|%0, %d1}";
        else
*************** ix86_compute_frame_layout (void)
*** 6818,6824 ****
  	 stack clash protections are enabled and the allocated frame is
  	 larger than the probe interval, then use pushes to save
  	 callee saved registers.  */
!       || (flag_stack_clash_protection && to_allocate > get_probe_interval ()))
      frame->save_regs_using_mov = false;
  
    if (ix86_using_red_zone ()
--- 6877,6885 ----
  	 stack clash protections are enabled and the allocated frame is
  	 larger than the probe interval, then use pushes to save
  	 callee saved registers.  */
!       || (flag_stack_clash_protection
! 	  && !ix86_target_stack_probe ()
! 	  && to_allocate > get_probe_interval ()))
      frame->save_regs_using_mov = false;
  
    if (ix86_using_red_zone ()
*************** ix86_expand_prologue (void)
*** 8703,8710 ****
        sse_registers_saved = true;
      }
  
!   /* If stack clash protection is requested, then probe the stack.  */
!   if (allocate >= 0 && flag_stack_clash_protection)
      {
        ix86_adjust_stack_and_probe (allocate, int_registers_saved, false);
        allocate = 0;
--- 8764,8774 ----
        sse_registers_saved = true;
      }
  
!   /* If stack clash protection is requested, then probe the stack, unless it
!      is already probed on the target.  */
!   if (allocate >= 0
!       && flag_stack_clash_protection
!       && !ix86_target_stack_probe ())
      {
        ix86_adjust_stack_and_probe (allocate, int_registers_saved, false);
        allocate = 0;
*************** ix86_legitimate_constant_p (machine_mode
*** 10638,10643 ****
--- 10702,10712 ----
      case CONST_VECTOR:
        if (!standard_sse_constant_p (x, mode))
  	return false;
+       break;
+ 
+     case CONST_DOUBLE:
+       if (mode == E_BFmode)
+ 	return false;
  
      default:
        break;
*************** ix86_print_operand (FILE *file, rtx x, i
*** 13150,13156 ****
  	    }
  
  	  if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
! 	    warning (0, "non-integer operand used with operand code %<z%>");
  	  /* FALLTHRU */
  
  	case 'Z':
--- 13219,13231 ----
  	    }
  
  	  if (GET_MODE_CLASS (GET_MODE (x)) == MODE_FLOAT)
! 	    {
! 	      if (this_is_asm_operands)
! 		warning_for_asm (this_is_asm_operands,
! 				 "non-integer operand used with operand code %<z%>");
! 	      else
! 		warning (0, "non-integer operand used with operand code %<z%>");
! 	    }
  	  /* FALLTHRU */
  
  	case 'Z':
*************** ix86_print_operand (FILE *file, rtx x, i
*** 13213,13223 ****
  	  else
  	    {
  	      output_operand_lossage ("invalid operand type used with "
! 				      "operand code 'Z'");
  	      return;
  	    }
  
! 	  output_operand_lossage ("invalid operand size for operand code 'Z'");
  	  return;
  
  	case 'd':
--- 13288,13299 ----
  	  else
  	    {
  	      output_operand_lossage ("invalid operand type used with "
! 				      "operand code '%c'", code);
  	      return;
  	    }
  
! 	  output_operand_lossage ("invalid operand size for operand code '%c'",
! 				  code);
  	  return;
  
  	case 'd':
*************** ix86_vec_interleave_v2df_operator_ok (rt
*** 15594,15600 ****
    if (MEM_P (operands[0]))
      return rtx_equal_p (operands[0], operands[1 + high]);
    if (MEM_P (operands[1]) && MEM_P (operands[2]))
!     return TARGET_SSE3 && rtx_equal_p (operands[1], operands[2]);
    return true;
  }
  
--- 15670,15676 ----
    if (MEM_P (operands[0]))
      return rtx_equal_p (operands[0], operands[1 + high]);
    if (MEM_P (operands[1]) && MEM_P (operands[2]))
!     return false;
    return true;
  }
  
*************** ix86_build_signbit_mask (machine_mode mo
*** 15723,15728 ****
--- 15799,15853 ----
    return force_reg (vec_mode, v);
  }
  
+ /* Return HOST_WIDE_INT for const vector OP in MODE.  */
+ 
+ HOST_WIDE_INT
+ ix86_convert_const_vector_to_integer (rtx op, machine_mode mode)
+ {
+   if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
+     gcc_unreachable ();
+ 
+   int nunits = GET_MODE_NUNITS (mode);
+   wide_int val = wi::zero (GET_MODE_BITSIZE (mode));
+   machine_mode innermode = GET_MODE_INNER (mode);
+   unsigned int innermode_bits = GET_MODE_BITSIZE (innermode);
+ 
+   switch (mode)
+     {
+     case E_V2QImode:
+     case E_V4QImode:
+     case E_V2HImode:
+     case E_V8QImode:
+     case E_V4HImode:
+     case E_V2SImode:
+       for (int i = 0; i < nunits; ++i)
+ 	{
+ 	  int v = INTVAL (XVECEXP (op, 0, i));
+ 	  wide_int wv = wi::shwi (v, innermode_bits);
+ 	  val = wi::insert (val, wv, innermode_bits * i, innermode_bits);
+ 	}
+       break;
+     case E_V2HFmode:
+     case E_V2BFmode:
+     case E_V4HFmode:
+     case E_V4BFmode:
+     case E_V2SFmode:
+       for (int i = 0; i < nunits; ++i)
+ 	{
+ 	  rtx x = XVECEXP (op, 0, i);
+ 	  int v = real_to_target (NULL, CONST_DOUBLE_REAL_VALUE (x),
+ 				  REAL_MODE_FORMAT (innermode));
+ 	  wide_int wv = wi::shwi (v, innermode_bits);
+ 	  val = wi::insert (val, wv, innermode_bits * i, innermode_bits);
+ 	}
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   return val.to_shwi ();
+ }
+ 
  /* Return TRUE or FALSE depending on whether the first SET in INSN
     has source and destination with matching CC modes, and that the
     CC mode is at least as constrained as REQ_MODE.  */
*************** ix86_call_use_plt_p (rtx call_op)
*** 16013,16018 ****
--- 16138,16156 ----
    return true;
  }
  
+ /* Implement TARGET_IFUNC_REF_LOCAL_OK.  If this hook returns true,
+    the PLT entry will be used as the function address for local IFUNC
+    functions.  When the PIC register is needed for PLT call, indirect
+    call via the PLT entry will fail since the PIC register may not be
+    set up properly for indirect call.  In this case, we should return
+    false.  */
+ 
+ static bool
+ ix86_ifunc_ref_local_ok (void)
+ {
+   return !flag_pic || (TARGET_64BIT && ix86_cmodel != CM_LARGE_PIC);
+ }
+ 
  /* Return true if the function being called was marked with attribute
     "noplt" or using -fno-plt and we are compiling for non-PIC.  We need
     to handle the non-PIC case in the backend because there is no easy
*************** assign_386_stack_local (machine_mode mod
*** 16552,16561 ****
      if (s->mode == mode && s->n == n)
        return validize_mem (copy_rtx (s->rtl));
  
    s = ggc_alloc<stack_local_entry> ();
    s->n = n;
    s->mode = mode;
!   s->rtl = assign_stack_local (mode, GET_MODE_SIZE (mode), 0);
  
    s->next = ix86_stack_locals;
    ix86_stack_locals = s;
--- 16690,16707 ----
      if (s->mode == mode && s->n == n)
        return validize_mem (copy_rtx (s->rtl));
  
+   int align = 0;
+   /* For DImode with SLOT_FLOATxFDI_387 use 32-bit
+      alignment with -m32 -mpreferred-stack-boundary=2.  */
+   if (mode == DImode
+       && !TARGET_64BIT
+       && n == SLOT_FLOATxFDI_387
+       && ix86_preferred_stack_boundary < GET_MODE_ALIGNMENT (DImode))
+     align = 32;
    s = ggc_alloc<stack_local_entry> ();
    s->n = n;
    s->mode = mode;
!   s->rtl = assign_stack_local (mode, GET_MODE_SIZE (mode), align);
  
    s->next = ix86_stack_locals;
    ix86_stack_locals = s;
*************** int
*** 16829,16835 ****
  ix86_attr_length_vex_default (rtx_insn *insn, bool has_0f_opcode,
  			      bool has_vex_w)
  {
!   int i;
  
    /* Only 0f opcode can use 2 byte VEX prefix and  VEX W bit uses 3
       byte VEX prefix.  */
--- 16975,16982 ----
  ix86_attr_length_vex_default (rtx_insn *insn, bool has_0f_opcode,
  			      bool has_vex_w)
  {
!   int i, reg_only = 2 + 1;
!   bool has_mem = false;
  
    /* Only 0f opcode can use 2 byte VEX prefix and  VEX W bit uses 3
       byte VEX prefix.  */
*************** ix86_attr_length_vex_default (rtx_insn *
*** 16849,16864 ****
  	if (GET_MODE (recog_data.operand[i]) == DImode
  	    && GENERAL_REG_P (recog_data.operand[i]))
  	  return 3 + 1;
        }
!     else
        {
  	/* REX.X or REX.B bits use 3 byte VEX prefix.  */
! 	if (MEM_P (recog_data.operand[i])
! 	    && x86_extended_reg_mentioned_p (recog_data.operand[i]))
  	  return 3 + 1;
        }
  
!   return 2 + 1;
  }
  
  
--- 16996,17018 ----
  	if (GET_MODE (recog_data.operand[i]) == DImode
  	    && GENERAL_REG_P (recog_data.operand[i]))
  	  return 3 + 1;
+ 
+ 	/* REX.B bit requires 3-byte VEX. Right here we don't know which
+ 	   operand will be encoded using VEX.B, so be conservative.  */
+ 	if (REX_INT_REGNO_P (recog_data.operand[i])
+ 	    || REX_SSE_REGNO_P (recog_data.operand[i]))
+ 	  reg_only = 3 + 1;
        }
!     else if (MEM_P (recog_data.operand[i]))
        {
  	/* REX.X or REX.B bits use 3 byte VEX prefix.  */
! 	if (x86_extended_reg_mentioned_p (recog_data.operand[i]))
  	  return 3 + 1;
+ 
+ 	has_mem = true;
        }
  
!   return has_mem ? 2 + 1 : reg_only;
  }
  
  
*************** ix86_gimple_fold_builtin (gimple_stmt_it
*** 18351,18356 ****
--- 18505,18519 ----
  	}
        break;
  
+     case IX86_BUILTIN_PBLENDVB256:
+     case IX86_BUILTIN_BLENDVPS256:
+     case IX86_BUILTIN_BLENDVPD256:
+       /* pcmpeqb/d/q is under avx2, w/o avx2, it's veclower
+ 	 to scalar operations and not combined back.  */
+       if (!TARGET_AVX2)
+ 	break;
+ 
+       /* FALLTHRU.  */
      case IX86_BUILTIN_BLENDVPD:
        /* blendvpd is under sse4.1 but pcmpgtq is under sse4.2,
  	 w/o sse4.2, it's veclowered to scalar operations and
*************** ix86_gimple_fold_builtin (gimple_stmt_it
*** 18359,18368 ****
  	break;
        /* FALLTHRU.  */
      case IX86_BUILTIN_PBLENDVB128:
-     case IX86_BUILTIN_PBLENDVB256:
      case IX86_BUILTIN_BLENDVPS:
-     case IX86_BUILTIN_BLENDVPS256:
-     case IX86_BUILTIN_BLENDVPD256:
        gcc_assert (n_args == 3);
        arg0 = gimple_call_arg (stmt, 0);
        arg1 = gimple_call_arg (stmt, 1);
--- 18522,18528 ----
*************** ix86_vectorize_builtin_scatter (const_tr
*** 18912,18917 ****
--- 19072,19084 ----
    if (!TARGET_AVX512F)
      return NULL_TREE;
  
+   if (known_eq (TYPE_VECTOR_SUBPARTS (vectype), 2u)
+       ? !TARGET_USE_SCATTER_2PARTS
+       : (known_eq (TYPE_VECTOR_SUBPARTS (vectype), 4u)
+ 	 ? !TARGET_USE_SCATTER_4PARTS
+ 	 : !TARGET_USE_SCATTER))
+     return NULL_TREE;
+ 
    if ((TREE_CODE (index_type) != INTEGER_TYPE
         && !POINTER_TYPE_P (index_type))
        || (TYPE_MODE (index_type) != SImode
*************** ix86_secondary_reload (bool in_p, rtx x,
*** 19337,19343 ****
      }
  
    /* Require movement to gpr, and then store to memory.  */
!   if ((mode == HFmode || mode == HImode || mode == V2QImode)
        && !TARGET_SSE4_1
        && SSE_CLASS_P (rclass)
        && !in_p && MEM_P (x))
--- 19504,19511 ----
      }
  
    /* Require movement to gpr, and then store to memory.  */
!   if ((mode == HFmode || mode == HImode || mode == V2QImode
!        || mode == BFmode)
        && !TARGET_SSE4_1
        && SSE_CLASS_P (rclass)
        && !in_p && MEM_P (x))
*************** ix86_can_change_mode_class (machine_mode
*** 19585,19591 ****
  	 the vec_dupv4hi pattern.
  	 NB: SSE2 can load 16bit data to sse register via pinsrw.  */
        int mov_size = MAYBE_SSE_CLASS_P (regclass) && TARGET_SSE2 ? 2 : 4;
!       if (GET_MODE_SIZE (from) < mov_size)
  	return false;
      }
  
--- 19753,19760 ----
  	 the vec_dupv4hi pattern.
  	 NB: SSE2 can load 16bit data to sse register via pinsrw.  */
        int mov_size = MAYBE_SSE_CLASS_P (regclass) && TARGET_SSE2 ? 2 : 4;
!       if (GET_MODE_SIZE (from) < mov_size
! 	  || GET_MODE_SIZE (to) < mov_size)
  	return false;
      }
  
*************** inline_memory_move_cost (machine_mode mo
*** 19686,19694 ****
  	  index = 1;
  	  break;
  	/* DImode loads and stores assumed to cost the same as SImode.  */
! 	default:
  	  index = 2;
  	  break;
  	}
  
        if (in == 2)
--- 19855,19866 ----
  	  index = 1;
  	  break;
  	/* DImode loads and stores assumed to cost the same as SImode.  */
! 	case 4:
! 	case 8:
  	  index = 2;
  	  break;
+ 	default:
+ 	  return 100;
  	}
  
        if (in == 2)
*************** ix86_hard_regno_mode_ok (unsigned int re
*** 19949,19960 ****
  	      || VALID_AVX512F_SCALAR_MODE (mode)))
  	return true;
  
-       /* For AVX512FP16, vmovw supports movement of HImode
- 	 and HFmode between GPR and SSE registers.  */
-       if (TARGET_AVX512FP16
- 	  && VALID_AVX512FP16_SCALAR_MODE (mode))
- 	return true;
- 
        /* For AVX-5124FMAPS or AVX-5124VNNIW
  	 allow V64SF and V64SI modes for special regnos.  */
        if ((TARGET_AVX5124FMAPS || TARGET_AVX5124VNNIW)
--- 20121,20126 ----
*************** ix86_hard_regno_mode_ok (unsigned int re
*** 19973,19978 ****
--- 20139,20148 ----
        if (EXT_REX_SSE_REGNO_P (regno))
  	return false;
  
+       /* Use pinsrw/pextrw to mov 16-bit data from/to sse to/from integer.  */
+       if (TARGET_SSE2 && mode == HImode)
+ 	return true;
+ 
        /* OImode and AVX modes are available only when AVX is enabled.  */
        return ((TARGET_AVX
  	       && VALID_AVX256_REG_OR_OI_MODE (mode))
*************** ix86_modes_tieable_p (machine_mode mode1
*** 20150,20155 ****
--- 20320,20337 ----
      return (GET_MODE_SIZE (mode1) == 8
  	    && ix86_hard_regno_mode_ok (FIRST_MMX_REG, mode1));
  
+   /* SCmode and DImode can be tied.  */
+   if ((mode1 == E_SCmode && mode2 == E_DImode)
+       || (mode1 == E_DImode && mode2 == E_SCmode))
+     return TARGET_64BIT;
+ 
+   /* [SD]Cmode and V2[SD]Fmode modes can be tied.  */
+   if ((mode1 == E_SCmode && mode2 == E_V2SFmode)
+       || (mode1 == E_V2SFmode && mode2 == E_SCmode)
+       || (mode1 == E_DCmode && mode2 == E_V2DFmode)
+       || (mode1 == E_V2DFmode && mode2 == E_DCmode))
+     return true;
+ 
    return false;
  }
  
*************** ix86_vec_cost (machine_mode mode, int co
*** 20212,20221 ****
  
    if (GET_MODE_BITSIZE (mode) == 128
        && TARGET_SSE_SPLIT_REGS)
!     return cost * 2;
!   if (GET_MODE_BITSIZE (mode) > 128
        && TARGET_AVX256_SPLIT_REGS)
      return cost * GET_MODE_BITSIZE (mode) / 128;
    return cost;
  }
  
--- 20394,20406 ----
  
    if (GET_MODE_BITSIZE (mode) == 128
        && TARGET_SSE_SPLIT_REGS)
!     return cost * GET_MODE_BITSIZE (mode) / 64;
!   else if (GET_MODE_BITSIZE (mode) > 128
        && TARGET_AVX256_SPLIT_REGS)
      return cost * GET_MODE_BITSIZE (mode) / 128;
+   else if (GET_MODE_BITSIZE (mode) > 256
+       && TARGET_AVX512_SPLIT_REGS)
+     return cost * GET_MODE_BITSIZE (mode) / 256;
    return cost;
  }
  
*************** ix86_rtx_costs (rtx x, machine_mode mode
*** 20643,20649 ****
  	        op0 = XEXP (op0, 0), mode = GET_MODE (op0);
  	    }
  
!   	  *total = (cost->mult_init[MODE_INDEX (mode)]
  		    + nbits * cost->mult_bit
  	            + rtx_cost (op0, mode, outer_code, opno, speed)
  		    + rtx_cost (op1, mode, outer_code, opno, speed));
--- 20828,20844 ----
  	        op0 = XEXP (op0, 0), mode = GET_MODE (op0);
  	    }
  
! 	  int mult_init;
! 	  // Double word multiplication requires 3 mults and 2 adds.
! 	  if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
! 	    {
! 	      mult_init = 3 * cost->mult_init[MODE_INDEX (word_mode)]
! 			  + 2 * cost->add;
! 	      nbits *= 3;
! 	    }
! 	  else mult_init = cost->mult_init[MODE_INDEX (mode)];
! 
!   	  *total = (mult_init
  		    + nbits * cost->mult_bit
  	            + rtx_cost (op0, mode, outer_code, opno, speed)
  		    + rtx_cost (op1, mode, outer_code, opno, speed));
*************** ix86_rtx_costs (rtx x, machine_mode mode
*** 20737,20806 ****
  	}
  
        if (SSE_FLOAT_MODE_SSEMATH_OR_HF_P (mode))
! 	{
! 	  *total = cost->addss;
! 	  return false;
! 	}
        else if (X87_FLOAT_MODE_P (mode))
! 	{
! 	  *total = cost->fadd;
! 	  return false;
! 	}
        else if (FLOAT_MODE_P (mode))
! 	{
! 	  *total = ix86_vec_cost (mode, cost->addss);
! 	  return false;
! 	}
!       /* FALLTHRU */
  
-     case AND:
      case IOR:
      case XOR:
!       if (GET_MODE_CLASS (mode) == MODE_INT
! 	  && GET_MODE_SIZE (mode) > UNITS_PER_WORD)
  	{
! 	  *total = (cost->add * 2
! 		    + (rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed)
! 		       << (GET_MODE (XEXP (x, 0)) != DImode))
! 		    + (rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed)
! 	               << (GET_MODE (XEXP (x, 1)) != DImode)));
  	  return true;
  	}
!       else if (code == AND
! 	       && address_no_seg_operand (x, mode))
  	{
! 	  *total = cost->lea;
! 	  return true;
  	}
!       /* FALLTHRU */
! 
!     case NEG:
!       if (SSE_FLOAT_MODE_SSEMATH_OR_HF_P (mode))
  	{
! 	  *total = cost->sse_op;
! 	  return false;
  	}
!       else if (X87_FLOAT_MODE_P (mode))
  	{
! 	  *total = cost->fchs;
! 	  return false;
  	}
!       else if (FLOAT_MODE_P (mode))
  	{
! 	  *total = ix86_vec_cost (mode, cost->sse_op);
! 	  return false;
  	}
!       /* FALLTHRU */
  
      case NOT:
        if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
! 	*total = ix86_vec_cost (mode, cost->sse_op);
        else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
  	*total = cost->add * 2;
        else
  	*total = cost->add;
        return false;
  
      case COMPARE:
        rtx op0, op1;
        op0 = XEXP (x, 0);
--- 20932,21056 ----
  	}
  
        if (SSE_FLOAT_MODE_SSEMATH_OR_HF_P (mode))
! 	*total = cost->addss;
        else if (X87_FLOAT_MODE_P (mode))
! 	*total = cost->fadd;
        else if (FLOAT_MODE_P (mode))
! 	*total = ix86_vec_cost (mode, cost->addss);
!       else if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
! 	*total = ix86_vec_cost (mode, cost->sse_op);
!       else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
! 	*total = cost->add * 2;
!       else
! 	*total = cost->add;
!       return false;
  
      case IOR:
      case XOR:
!       if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
! 	*total = ix86_vec_cost (mode, cost->sse_op);
!       else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
! 	*total = cost->add * 2;
!       else
! 	*total = cost->add;
!       return false;
! 
!     case AND:
!       if (address_no_seg_operand (x, mode))
  	{
! 	  *total = cost->lea;
  	  return true;
  	}
!       else if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
  	{
! 	  /* pandn is a single instruction.  */
! 	  if (GET_CODE (XEXP (x, 0)) == NOT)
! 	    {
! 	      *total = ix86_vec_cost (mode, cost->sse_op)
! 		       + rtx_cost (XEXP (XEXP (x, 0), 0), mode,
! 				   outer_code, opno, speed)
! 		       + rtx_cost (XEXP (x, 1), mode,
! 				   outer_code, opno, speed);
! 	      return true;
! 	    }
! 	  else if (GET_CODE (XEXP (x, 1)) == NOT)
! 	    {
! 	      *total = ix86_vec_cost (mode, cost->sse_op)
! 		       + rtx_cost (XEXP (x, 0), mode,
! 				   outer_code, opno, speed)
! 		       + rtx_cost (XEXP (XEXP (x, 1), 0), mode,
! 				   outer_code, opno, speed);
! 	      return true;
! 	    }
! 	  *total = ix86_vec_cost (mode, cost->sse_op);
  	}
!       else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
  	{
! 	  if (TARGET_BMI && GET_CODE (XEXP (x,0)) == NOT)
! 	    {
! 	      *total = cost->add * 2
! 		       + rtx_cost (XEXP (XEXP (x, 0), 0), mode,
! 				   outer_code, opno, speed)
! 		       + rtx_cost (XEXP (x, 1), mode,
! 				   outer_code, opno, speed);
! 	      return true;
! 	    }
! 	  else if (TARGET_BMI && GET_CODE (XEXP (x, 1)) == NOT)
! 	    {
! 	      *total = cost->add * 2
! 		       + rtx_cost (XEXP (x, 0), mode,
! 				   outer_code, opno, speed)
! 		       + rtx_cost (XEXP (XEXP (x, 1), 0), mode,
! 				   outer_code, opno, speed);
! 	      return true;
! 	    }
! 	  *total = cost->add * 2;
  	}
!       else if (TARGET_BMI && GET_CODE (XEXP (x,0)) == NOT)
  	{
! 	  *total = cost->add
! 		   + rtx_cost (XEXP (XEXP (x, 0), 0), mode,
! 			       outer_code, opno, speed)
! 		   + rtx_cost (XEXP (x, 1), mode, outer_code, opno, speed);
! 	  return true;
  	}
!       else if (TARGET_BMI && GET_CODE (XEXP (x,1)) == NOT)
  	{
! 	  *total = cost->add
! 		   + rtx_cost (XEXP (x, 0), mode, outer_code, opno, speed)
! 		   + rtx_cost (XEXP (XEXP (x, 1), 0), mode,
! 			       outer_code, opno, speed);
! 	  return true;
  	}
!       else
! 	*total = cost->add;
!       return false;
  
      case NOT:
        if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
! 	// vnot is pxor -1.
! 	*total = ix86_vec_cost (mode, cost->sse_op) + 1;
        else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
  	*total = cost->add * 2;
        else
  	*total = cost->add;
        return false;
  
+     case NEG:
+       if (SSE_FLOAT_MODE_SSEMATH_OR_HF_P (mode))
+ 	*total = cost->sse_op;
+       else if (X87_FLOAT_MODE_P (mode))
+ 	*total = cost->fchs;
+       else if (FLOAT_MODE_P (mode))
+ 	*total = ix86_vec_cost (mode, cost->sse_op);
+       else if (GET_MODE_CLASS (mode) == MODE_VECTOR_INT)
+ 	*total = ix86_vec_cost (mode, cost->sse_op);
+       else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
+ 	*total = cost->add * 3;
+       else
+ 	*total = cost->add;
+       return false;
+ 
      case COMPARE:
        rtx op0, op1;
        op0 = XEXP (x, 0);
*************** ix86_rtx_costs (rtx x, machine_mode mode
*** 20850,20855 ****
--- 21100,21118 ----
  	  return true;
  	}
  
+       if (SCALAR_INT_MODE_P (GET_MODE (op0))
+ 	  && GET_MODE_SIZE (GET_MODE (op0)) > UNITS_PER_WORD)
+ 	{
+ 	  if (op1 == const0_rtx)
+ 	    *total = cost->add
+ 		     + rtx_cost (op0, GET_MODE (op0), outer_code, opno, speed);
+ 	  else
+ 	    *total = 3*cost->add
+ 		     + rtx_cost (op0, GET_MODE (op0), outer_code, opno, speed)
+ 		     + rtx_cost (op1, GET_MODE (op0), outer_code, opno, speed);
+ 	  return true;
+ 	}
+ 
        /* The embedded comparison operand is completely free.  */
        if (!general_operand (op0, GET_MODE (op0)) && op1 == const0_rtx)
  	*total = 0;
*************** ix86_rtx_costs (rtx x, machine_mode mode
*** 20895,20905 ****
      case UNSPEC:
        if (XINT (x, 1) == UNSPEC_TP)
  	*total = 0;
!       else if (XINT(x, 1) == UNSPEC_VTERNLOG)
  	{
  	  *total = cost->sse_op;
  	  return true;
  	}
        return false;
  
      case VEC_SELECT:
--- 21158,21182 ----
      case UNSPEC:
        if (XINT (x, 1) == UNSPEC_TP)
  	*total = 0;
!       else if (XINT (x, 1) == UNSPEC_VTERNLOG)
  	{
  	  *total = cost->sse_op;
  	  return true;
  	}
+       else if (XINT (x, 1) == UNSPEC_PTEST)
+ 	{
+ 	  *total = cost->sse_op;
+ 	  if (XVECLEN (x, 0) == 2
+ 	      && GET_CODE (XVECEXP (x, 0, 0)) == AND)
+ 	    {
+ 	      rtx andop = XVECEXP (x, 0, 0);
+ 	      *total += rtx_cost (XEXP (andop, 0), GET_MODE (andop),
+ 				  AND, opno, speed)
+ 			+ rtx_cost (XEXP (andop, 1), GET_MODE (andop),
+ 				    AND, opno, speed);
+ 	      return true;
+ 	    }
+ 	}
        return false;
  
      case VEC_SELECT:
*************** ix86_rtx_costs (rtx x, machine_mode mode
*** 20927,20932 ****
--- 21204,21254 ----
          *total += 1;
        return false;
  
+     case ZERO_EXTRACT:
+       if (XEXP (x, 1) == const1_rtx
+ 	  && GET_CODE (XEXP (x, 2)) == ZERO_EXTEND
+ 	  && GET_MODE (XEXP (x, 2)) == SImode
+ 	  && GET_MODE (XEXP (XEXP (x, 2), 0)) == QImode)
+ 	{
+ 	  /* Ignore cost of zero extension and masking of last argument.  */
+ 	  *total += rtx_cost (XEXP (x, 0), mode, code, 0, speed);
+ 	  *total += rtx_cost (XEXP (x, 1), mode, code, 1, speed);
+ 	  *total += rtx_cost (XEXP (XEXP (x, 2), 0), mode, code, 2, speed);
+ 	  return true;
+ 	}
+       return false;
+ 
+     case IF_THEN_ELSE:
+       if (TARGET_XOP
+ 	  && VECTOR_MODE_P (mode)
+ 	  && (GET_MODE_SIZE (mode) == 16 || GET_MODE_SIZE (mode) == 32))
+ 	{
+ 	  /* vpcmov.  */
+ 	  *total = speed ? COSTS_N_INSNS (2) : COSTS_N_BYTES (6);
+ 	  if (!REG_P (XEXP (x, 0)))
+ 	    *total += rtx_cost (XEXP (x, 0), mode, code, 0, speed);
+ 	  if (!REG_P (XEXP (x, 1)))
+ 	    *total += rtx_cost (XEXP (x, 1), mode, code, 1, speed);
+ 	  if (!REG_P (XEXP (x, 2)))
+ 	    *total += rtx_cost (XEXP (x, 2), mode, code, 2, speed);
+ 	  return true;
+ 	}
+       else if (TARGET_CMOVE
+ 	       && SCALAR_INT_MODE_P (mode)
+ 	       && GET_MODE_SIZE (mode) <= UNITS_PER_WORD)
+ 	{
+ 	  /* cmov.  */
+ 	  *total = COSTS_N_INSNS (1);
+ 	  if (!REG_P (XEXP (x, 0)))
+ 	    *total += rtx_cost (XEXP (x, 0), mode, code, 0, speed);
+ 	  if (!REG_P (XEXP (x, 1)))
+ 	    *total += rtx_cost (XEXP (x, 1), mode, code, 1, speed);
+ 	  if (!REG_P (XEXP (x, 2)))
+ 	    *total += rtx_cost (XEXP (x, 2), mode, code, 2, speed);
+ 	  return true;
+ 	}
+       return false;
+ 
      default:
        return false;
      }
*************** x86_output_mi_thunk (FILE *file, tree th
*** 21182,21187 ****
--- 21504,21510 ----
    rtx this_reg, tmp, fnaddr;
    unsigned int tmp_regno;
    rtx_insn *insn;
+   int saved_flag_force_indirect_call = flag_force_indirect_call;
  
    if (TARGET_64BIT)
      tmp_regno = R10_REG;
*************** x86_output_mi_thunk (FILE *file, tree th
*** 21194,21199 ****
--- 21517,21525 ----
  	tmp_regno = DX_REG;
        else
  	tmp_regno = CX_REG;
+ 
+       if (flag_pic)
+   flag_force_indirect_call = 0;
      }
  
    emit_note (NOTE_INSN_PROLOGUE_END);
*************** x86_output_mi_thunk (FILE *file, tree th
*** 21361,21366 ****
--- 21687,21694 ----
    final (insn, file, 1);
    final_end_function ();
    assemble_end_function (thunk_fndecl, fnname);
+ 
+   flag_force_indirect_call = saved_flag_force_indirect_call;
  }
  
  static void
*************** ix86_scalar_mode_supported_p (scalar_mod
*** 22131,22137 ****
      return default_decimal_float_supported_p ();
    else if (mode == TFmode)
      return true;
!   else if (mode == HFmode && TARGET_SSE2)
      return true;
    else
      return default_scalar_mode_supported_p (mode);
--- 22459,22465 ----
      return default_decimal_float_supported_p ();
    else if (mode == TFmode)
      return true;
!   else if ((mode == HFmode || mode == BFmode) && TARGET_SSE2)
      return true;
    else
      return default_scalar_mode_supported_p (mode);
*************** ix86_libgcc_floating_mode_supported_p (s
*** 22147,22153 ****
       be defined by the C front-end for AVX512FP16 intrinsics.  We will
       issue an error in ix86_expand_move for HFmode if AVX512FP16 isn't
       enabled.  */
!   return ((mode == HFmode && TARGET_SSE2)
  	  ? true
  	  : default_libgcc_floating_mode_supported_p (mode));
  }
--- 22475,22481 ----
       be defined by the C front-end for AVX512FP16 intrinsics.  We will
       issue an error in ix86_expand_move for HFmode if AVX512FP16 isn't
       enabled.  */
!   return (((mode == HFmode || mode == BFmode) && TARGET_SSE2)
  	  ? true
  	  : default_libgcc_floating_mode_supported_p (mode));
  }
*************** ix86_mangle_type (const_tree type)
*** 22444,22451 ****
--- 22772,22784 ----
        && TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != REAL_TYPE)
      return NULL;
  
+   if (type == float128_type_node || type == float64x_type_node)
+     return NULL;
+ 
    switch (TYPE_MODE (type))
      {
+     case E_BFmode:
+       return "DF16b";
      case E_HFmode:
        /* _Float16 is "DF16_".
  	 Align with clang's decision in https://reviews.llvm.org/D33719. */
*************** ix86_mangle_type (const_tree type)
*** 22461,22466 ****
--- 22794,22820 ----
      }
  }
  
+ /* Create C++ tinfo symbols for only conditionally available fundamental
+    types.  */
+ 
+ static void
+ ix86_emit_support_tinfos (emit_support_tinfos_callback callback)
+ {
+   extern tree ix86_float16_type_node;
+   extern tree ix86_bf16_type_node;
+ 
+   if (!TARGET_SSE2)
+     {
+       gcc_checking_assert (!float16_type_node && !bfloat16_type_node);
+       float16_type_node = ix86_float16_type_node;
+       bfloat16_type_node = ix86_bf16_type_node;
+       callback (float16_type_node);
+       callback (bfloat16_type_node);
+       float16_type_node = NULL_TREE;
+       bfloat16_type_node = NULL_TREE;
+     }
+ }
+ 
  static GTY(()) tree ix86_tls_stack_chk_guard_decl;
  
  static tree
*************** ix86_reassociation_width (unsigned int o
*** 22792,22803 ****
        /* Integer vector instructions execute in FP unit
  	 and can execute 3 additions and one multiplication per cycle.  */
        if ((ix86_tune == PROCESSOR_ZNVER1 || ix86_tune == PROCESSOR_ZNVER2
! 	   || ix86_tune == PROCESSOR_ZNVER3)
     	  && INTEGRAL_MODE_P (mode) && op != PLUS && op != MINUS)
  	return 1;
  
        /* Account for targets that splits wide vectors into multiple parts.  */
!       if (TARGET_AVX256_SPLIT_REGS && GET_MODE_BITSIZE (mode) > 128)
  	div = GET_MODE_BITSIZE (mode) / 128;
        else if (TARGET_SSE_SPLIT_REGS && GET_MODE_BITSIZE (mode) > 64)
  	div = GET_MODE_BITSIZE (mode) / 64;
--- 23146,23159 ----
        /* Integer vector instructions execute in FP unit
  	 and can execute 3 additions and one multiplication per cycle.  */
        if ((ix86_tune == PROCESSOR_ZNVER1 || ix86_tune == PROCESSOR_ZNVER2
! 	   || ix86_tune == PROCESSOR_ZNVER3 || ix86_tune == PROCESSOR_ZNVER4)
     	  && INTEGRAL_MODE_P (mode) && op != PLUS && op != MINUS)
  	return 1;
  
        /* Account for targets that splits wide vectors into multiple parts.  */
!       if (TARGET_AVX512_SPLIT_REGS && GET_MODE_BITSIZE (mode) > 256)
! 	div = GET_MODE_BITSIZE (mode) / 256;
!       else if (TARGET_AVX256_SPLIT_REGS && GET_MODE_BITSIZE (mode) > 128)
  	div = GET_MODE_BITSIZE (mode) / 128;
        else if (TARGET_SSE_SPLIT_REGS && GET_MODE_BITSIZE (mode) > 64)
  	div = GET_MODE_BITSIZE (mode) / 64;
*************** ix86_memmodel_check (unsigned HOST_WIDE_
*** 23339,23345 ****
  static int
  ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
  					     struct cgraph_simd_clone *clonei,
! 					     tree base_type, int num)
  {
    int ret = 1;
  
--- 23695,23702 ----
  static int
  ix86_simd_clone_compute_vecsize_and_simdlen (struct cgraph_node *node,
  					     struct cgraph_simd_clone *clonei,
! 					     tree base_type, int num,
! 					     bool explicit_p)
  {
    int ret = 1;
  
*************** ix86_simd_clone_compute_vecsize_and_simd
*** 23348,23355 ****
  	  || clonei->simdlen > 1024
  	  || (clonei->simdlen & (clonei->simdlen - 1)) != 0))
      {
!       warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		  "unsupported simdlen %wd", clonei->simdlen.to_constant ());
        return 0;
      }
  
--- 23705,23713 ----
  	  || clonei->simdlen > 1024
  	  || (clonei->simdlen & (clonei->simdlen - 1)) != 0))
      {
!       if (explicit_p)
! 	warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		    "unsupported simdlen %wd", clonei->simdlen.to_constant ());
        return 0;
      }
  
*************** ix86_simd_clone_compute_vecsize_and_simd
*** 23369,23376 ****
  	  break;
  	/* FALLTHRU */
        default:
! 	warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		    "unsupported return type %qT for simd", ret_type);
  	return 0;
        }
  
--- 23727,23735 ----
  	  break;
  	/* FALLTHRU */
        default:
! 	if (explicit_p)
! 	  warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		      "unsupported return type %qT for simd", ret_type);
  	return 0;
        }
  
*************** ix86_simd_clone_compute_vecsize_and_simd
*** 23399,23411 ****
  	default:
  	  if (clonei->args[i].arg_type == SIMD_CLONE_ARG_TYPE_UNIFORM)
  	    break;
! 	  warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		      "unsupported argument type %qT for simd", arg_type);
  	  return 0;
  	}
      }
  
!   if (!TREE_PUBLIC (node->decl))
      {
        /* If the function isn't exported, we can pick up just one ISA
  	 for the clones.  */
--- 23758,23771 ----
  	default:
  	  if (clonei->args[i].arg_type == SIMD_CLONE_ARG_TYPE_UNIFORM)
  	    break;
! 	  if (explicit_p)
! 	    warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 			"unsupported argument type %qT for simd", arg_type);
  	  return 0;
  	}
      }
  
!   if (!TREE_PUBLIC (node->decl) || !explicit_p)
      {
        /* If the function isn't exported, we can pick up just one ISA
  	 for the clones.  */
*************** ix86_simd_clone_compute_vecsize_and_simd
*** 23476,23484 ****
  	cnt /= clonei->vecsize_float;
        if (cnt > (TARGET_64BIT ? 16 : 8))
  	{
! 	  warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 		      "unsupported simdlen %wd",
! 		      clonei->simdlen.to_constant ());
  	  return 0;
  	}
        }
--- 23836,23845 ----
  	cnt /= clonei->vecsize_float;
        if (cnt > (TARGET_64BIT ? 16 : 8))
  	{
! 	  if (explicit_p)
! 	    warning_at (DECL_SOURCE_LOCATION (node->decl), 0,
! 			"unsupported simdlen %wd",
! 			clonei->simdlen.to_constant ());
  	  return 0;
  	}
        }
*************** ix86_loop_unroll_adjust (unsigned nunrol
*** 23533,23538 ****
--- 23894,23909 ----
    unsigned i;
    unsigned mem_count = 0;
  
+   /* Unroll small size loop when unroll factor is not explicitly
+      specified.  */
+   if (ix86_unroll_only_small_loops && !loop->unroll)
+     {
+       if (loop->ninsns <= ix86_cost->small_unroll_ninsns)
+ 	return MIN (nunroll, ix86_cost->small_unroll_factor);
+       else
+ 	return 1;
+     }
+ 
    if (!TARGET_ADJUST_UNROLL)
       return nunroll;
  
*************** ix86_optab_supported_p (int op, machine_
*** 23814,23819 ****
--- 24185,24191 ----
      case ldexp_optab:
      case scalb_optab:
      case round_optab:
+     case lround_optab:
        return opt_type == OPTIMIZE_FOR_SPEED;
  
      case rint_optab:
*************** ix86_optab_supported_p (int op, machine_
*** 23844,23858 ****
      }
  }
  
- /* Implement the TARGET_GEN_MEMSET_SCRATCH_RTX hook.  Return a scratch
-    register in MODE for vector load and store.  */
- 
- rtx
- ix86_gen_scratch_sse_rtx (machine_mode mode)
- {
-   return gen_reg_rtx (mode);
- }
- 
  /* Address space support.
  
     This is not "far pointers" in the 16-bit sense, but an easy way
--- 24216,24221 ----
*************** ix86_push_rounding (poly_int64 bytes)
*** 23965,23970 ****
--- 24328,24438 ----
    return ROUND_UP (bytes, UNITS_PER_WORD);
  }
  
+ /* Use 8 bits metadata start from bit48 for LAM_U48,
+    6 bits metadat start from bit57 for LAM_U57.  */
+ #define IX86_HWASAN_SHIFT (ix86_lam_type == lam_u48		\
+ 			   ? 48					\
+ 			   : (ix86_lam_type == lam_u57 ? 57 : 0))
+ #define IX86_HWASAN_TAG_SIZE (ix86_lam_type == lam_u48		\
+ 			      ? 8				\
+ 			      : (ix86_lam_type == lam_u57 ? 6 : 0))
+ 
+ /* Implement TARGET_MEMTAG_CAN_TAG_ADDRESSES.  */
+ bool
+ ix86_memtag_can_tag_addresses ()
+ {
+   return ix86_lam_type != lam_none && TARGET_LP64;
+ }
+ 
+ /* Implement TARGET_MEMTAG_TAG_SIZE.  */
+ unsigned char
+ ix86_memtag_tag_size ()
+ {
+   return IX86_HWASAN_TAG_SIZE;
+ }
+ 
+ /* Implement TARGET_MEMTAG_SET_TAG.  */
+ rtx
+ ix86_memtag_set_tag (rtx untagged, rtx tag, rtx target)
+ {
+   /* default_memtag_insert_random_tag may
+      generate tag with value more than 6 bits.  */
+   if (ix86_lam_type == lam_u57)
+     {
+       unsigned HOST_WIDE_INT and_imm
+ 	= (HOST_WIDE_INT_1U << IX86_HWASAN_TAG_SIZE) - 1;
+ 
+       emit_insn (gen_andqi3 (tag, tag, GEN_INT (and_imm)));
+     }
+   tag = expand_simple_binop (Pmode, ASHIFT, tag,
+ 			     GEN_INT (IX86_HWASAN_SHIFT), NULL_RTX,
+ 			     /* unsignedp = */1, OPTAB_WIDEN);
+   rtx ret = expand_simple_binop (Pmode, IOR, untagged, tag, target,
+ 				 /* unsignedp = */1, OPTAB_DIRECT);
+   return ret;
+ }
+ 
+ /* Implement TARGET_MEMTAG_EXTRACT_TAG.  */
+ rtx
+ ix86_memtag_extract_tag (rtx tagged_pointer, rtx target)
+ {
+   rtx tag = expand_simple_binop (Pmode, LSHIFTRT, tagged_pointer,
+ 				 GEN_INT (IX86_HWASAN_SHIFT), target,
+ 				 /* unsignedp = */0,
+ 				 OPTAB_DIRECT);
+   rtx ret = gen_reg_rtx (QImode);
+   /* Mask off bit63 when LAM_U57.  */
+   if (ix86_lam_type == lam_u57)
+     {
+       unsigned HOST_WIDE_INT and_imm
+ 	= (HOST_WIDE_INT_1U << IX86_HWASAN_TAG_SIZE) - 1;
+       emit_insn (gen_andqi3 (ret, gen_lowpart (QImode, tag),
+ 			     gen_int_mode (and_imm, QImode)));
+     }
+   else
+     emit_move_insn (ret, gen_lowpart (QImode, tag));
+   return ret;
+ }
+ 
+ /* The default implementation of TARGET_MEMTAG_UNTAGGED_POINTER.  */
+ rtx
+ ix86_memtag_untagged_pointer (rtx tagged_pointer, rtx target)
+ {
+   /* Leave bit63 alone.  */
+   rtx tag_mask = gen_int_mode (((HOST_WIDE_INT_1U << IX86_HWASAN_SHIFT)
+ 				+ (HOST_WIDE_INT_1U << 63) - 1),
+ 			       Pmode);
+   rtx untagged_base = expand_simple_binop (Pmode, AND, tagged_pointer,
+ 					   tag_mask, target, true,
+ 					   OPTAB_DIRECT);
+   gcc_assert (untagged_base);
+   return untagged_base;
+ }
+ 
+ /* Implement TARGET_MEMTAG_ADD_TAG.  */
+ rtx
+ ix86_memtag_add_tag (rtx base, poly_int64 offset, unsigned char tag_offset)
+ {
+   rtx base_tag = gen_reg_rtx (QImode);
+   rtx base_addr = gen_reg_rtx (Pmode);
+   rtx tagged_addr = gen_reg_rtx (Pmode);
+   rtx new_tag = gen_reg_rtx (QImode);
+   unsigned HOST_WIDE_INT and_imm
+     = (HOST_WIDE_INT_1U << IX86_HWASAN_SHIFT) - 1;
+ 
+   /* When there's "overflow" in tag adding,
+      need to mask the most significant bit off.  */
+   emit_move_insn (base_tag, ix86_memtag_extract_tag (base, NULL_RTX));
+   emit_move_insn (base_addr,
+ 		  ix86_memtag_untagged_pointer (base, NULL_RTX));
+   emit_insn (gen_add2_insn (base_tag, gen_int_mode (tag_offset, QImode)));
+   emit_move_insn (new_tag, base_tag);
+   emit_insn (gen_andqi3 (new_tag, new_tag, gen_int_mode (and_imm, QImode)));
+   emit_move_insn (tagged_addr,
+ 		  ix86_memtag_set_tag (base_addr, new_tag, NULL_RTX));
+   return plus_constant (Pmode, tagged_addr, offset);
+ }
+ 
  /* Target-specific selftests.  */
  
  #if CHECKING_P
*************** ix86_libgcc_floating_mode_supported_p
*** 24517,24522 ****
--- 24985,24993 ----
  #undef TARGET_MANGLE_TYPE
  #define TARGET_MANGLE_TYPE ix86_mangle_type
  
+ #undef TARGET_EMIT_SUPPORT_TINFOS
+ #define TARGET_EMIT_SUPPORT_TINFOS ix86_emit_support_tinfos
+ 
  #undef TARGET_STACK_PROTECT_GUARD
  #define TARGET_STACK_PROTECT_GUARD ix86_stack_protect_guard
  
*************** ix86_libgcc_floating_mode_supported_p
*** 24752,24764 ****
    ix86_get_multilib_abi_name
  
  #undef TARGET_IFUNC_REF_LOCAL_OK
! #define TARGET_IFUNC_REF_LOCAL_OK hook_bool_void_true
  
  #if !TARGET_MACHO && !TARGET_DLLIMPORT_DECL_ATTRIBUTES
  # undef TARGET_ASM_RELOC_RW_MASK
  # define TARGET_ASM_RELOC_RW_MASK ix86_reloc_rw_mask
  #endif
  
  static bool ix86_libc_has_fast_function (int fcode ATTRIBUTE_UNUSED)
  {
  #ifdef OPTION_GLIBC
--- 25223,25253 ----
    ix86_get_multilib_abi_name
  
  #undef TARGET_IFUNC_REF_LOCAL_OK
! #define TARGET_IFUNC_REF_LOCAL_OK ix86_ifunc_ref_local_ok
  
  #if !TARGET_MACHO && !TARGET_DLLIMPORT_DECL_ATTRIBUTES
  # undef TARGET_ASM_RELOC_RW_MASK
  # define TARGET_ASM_RELOC_RW_MASK ix86_reloc_rw_mask
  #endif
  
+ #undef TARGET_MEMTAG_CAN_TAG_ADDRESSES
+ #define TARGET_MEMTAG_CAN_TAG_ADDRESSES ix86_memtag_can_tag_addresses
+ 
+ #undef TARGET_MEMTAG_ADD_TAG
+ #define TARGET_MEMTAG_ADD_TAG ix86_memtag_add_tag
+ 
+ #undef TARGET_MEMTAG_SET_TAG
+ #define TARGET_MEMTAG_SET_TAG ix86_memtag_set_tag
+ 
+ #undef TARGET_MEMTAG_EXTRACT_TAG
+ #define TARGET_MEMTAG_EXTRACT_TAG ix86_memtag_extract_tag
+ 
+ #undef TARGET_MEMTAG_UNTAGGED_POINTER
+ #define TARGET_MEMTAG_UNTAGGED_POINTER ix86_memtag_untagged_pointer
+ 
+ #undef TARGET_MEMTAG_TAG_SIZE
+ #define TARGET_MEMTAG_TAG_SIZE ix86_memtag_tag_size
+ 
  static bool ix86_libc_has_fast_function (int fcode ATTRIBUTE_UNUSED)
  {
  #ifdef OPTION_GLIBC
*************** static bool ix86_libc_has_fast_function
*** 24774,24782 ****
  #undef TARGET_LIBC_HAS_FAST_FUNCTION
  #define TARGET_LIBC_HAS_FAST_FUNCTION ix86_libc_has_fast_function
  
- #undef TARGET_GEN_MEMSET_SCRATCH_RTX
- #define TARGET_GEN_MEMSET_SCRATCH_RTX ix86_gen_scratch_sse_rtx
- 
  #if CHECKING_P
  #undef TARGET_RUN_TARGET_SELFTESTS
  #define TARGET_RUN_TARGET_SELFTESTS selftest::ix86_run_selftests
--- 25263,25268 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386.h gcc-13.1.0/gcc/config/i386/i386.h
*** gcc-12.2.0/gcc/config/i386/i386.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GCC for IA-32.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** struct processor_costs {
*** 219,224 ****
--- 219,229 ----
    const char *const align_jump;		/* Jump alignment.  */
    const char *const align_label;	/* Label alignment.  */
    const char *const align_func;		/* Function alignment.  */
+ 
+   const unsigned small_unroll_ninsns;	/* Insn count limit for small loop
+ 					   to be unrolled.  */
+   const unsigned small_unroll_factor;   /* Unroll factor for small loop to
+ 					   be unrolled.  */
  };
  
  extern const struct processor_costs *ix86_cost;
*************** extern unsigned char ix86_tune_features[
*** 392,401 ****
--- 397,412 ----
  	ix86_tune_features[X86_TUNE_AVOID_4BYTE_PREFIXES]
  #define TARGET_USE_GATHER_2PARTS \
  	ix86_tune_features[X86_TUNE_USE_GATHER_2PARTS]
+ #define TARGET_USE_SCATTER_2PARTS \
+ 	ix86_tune_features[X86_TUNE_USE_SCATTER_2PARTS]
  #define TARGET_USE_GATHER_4PARTS \
  	ix86_tune_features[X86_TUNE_USE_GATHER_4PARTS]
+ #define TARGET_USE_SCATTER_4PARTS \
+ 	ix86_tune_features[X86_TUNE_USE_SCATTER_4PARTS]
  #define TARGET_USE_GATHER \
  	ix86_tune_features[X86_TUNE_USE_GATHER]
+ #define TARGET_USE_SCATTER \
+ 	ix86_tune_features[X86_TUNE_USE_SCATTER]
  #define TARGET_FUSE_CMP_AND_BRANCH_32 \
  	ix86_tune_features[X86_TUNE_FUSE_CMP_AND_BRANCH_32]
  #define TARGET_FUSE_CMP_AND_BRANCH_64 \
*************** extern unsigned char ix86_tune_features[
*** 414,419 ****
--- 425,432 ----
  	ix86_tune_features[X86_TUNE_SOFTWARE_PREFETCHING_BENEFICIAL]
  #define TARGET_AVX256_SPLIT_REGS \
  	ix86_tune_features[X86_TUNE_AVX256_SPLIT_REGS]
+ #define TARGET_AVX512_SPLIT_REGS \
+ 	ix86_tune_features[X86_TUNE_AVX512_SPLIT_REGS]
  #define TARGET_GENERAL_REGS_SSE_SPILL \
  	ix86_tune_features[X86_TUNE_GENERAL_REGS_SSE_SPILL]
  #define TARGET_AVOID_MEM_OPND_FOR_CMOVE \
*************** extern const char *host_detect_local_cpu
*** 608,618 ****
  /* Target Pragmas.  */
  #define REGISTER_TARGET_PRAGMAS() ix86_register_pragmas ()
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS ix86_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO ix86_d_register_target_info
- #define TARGET_D_HAS_STDCALL_CONVENTION ix86_d_has_stdcall_convention
- 
  #ifndef CC1_SPEC
  #define CC1_SPEC "%(cc1_cpu) "
  #endif
--- 621,626 ----
*************** extern const char *host_detect_local_cpu
*** 1011,1032 ****
  #define VALID_AVX256_REG_MODE(MODE)					\
    ((MODE) == V32QImode || (MODE) == V16HImode || (MODE) == V8SImode	\
     || (MODE) == V4DImode || (MODE) == V2TImode || (MODE) == V8SFmode	\
!    || (MODE) == V4DFmode || (MODE) == V16HFmode)
  
  #define VALID_AVX256_REG_OR_OI_MODE(MODE)		\
    (VALID_AVX256_REG_MODE (MODE) || (MODE) == OImode)
  
  #define VALID_AVX512F_SCALAR_MODE(MODE)					\
!   ((MODE) == DImode || (MODE) == DFmode || (MODE) == SImode		\
!    || (MODE) == SFmode)
! 
! #define VALID_AVX512FP16_SCALAR_MODE(MODE)	\
!   ((MODE) == HImode || (MODE) == HFmode)
  
  #define VALID_AVX512F_REG_MODE(MODE)					\
    ((MODE) == V8DImode || (MODE) == V8DFmode || (MODE) == V64QImode	\
     || (MODE) == V16SImode || (MODE) == V16SFmode || (MODE) == V32HImode \
!    || (MODE) == V4TImode || (MODE) == V32HFmode)
  
  #define VALID_AVX512F_REG_OR_XI_MODE(MODE)				\
    (VALID_AVX512F_REG_MODE (MODE) || (MODE) == XImode)
--- 1019,1038 ----
  #define VALID_AVX256_REG_MODE(MODE)					\
    ((MODE) == V32QImode || (MODE) == V16HImode || (MODE) == V8SImode	\
     || (MODE) == V4DImode || (MODE) == V2TImode || (MODE) == V8SFmode	\
!    || (MODE) == V4DFmode || (MODE) == V16HFmode || (MODE) == V16BFmode)
  
  #define VALID_AVX256_REG_OR_OI_MODE(MODE)		\
    (VALID_AVX256_REG_MODE (MODE) || (MODE) == OImode)
  
  #define VALID_AVX512F_SCALAR_MODE(MODE)					\
!   ((MODE) == DImode || (MODE) == DFmode					\
!    || (MODE) == SImode || (MODE) == SFmode				\
!    || (MODE) == HImode || (MODE) == HFmode || (MODE) == BFmode)
  
  #define VALID_AVX512F_REG_MODE(MODE)					\
    ((MODE) == V8DImode || (MODE) == V8DFmode || (MODE) == V64QImode	\
     || (MODE) == V16SImode || (MODE) == V16SFmode || (MODE) == V32HImode \
!    || (MODE) == V4TImode || (MODE) == V32HFmode || (MODE) == V32BFmode)
  
  #define VALID_AVX512F_REG_OR_XI_MODE(MODE)				\
    (VALID_AVX512F_REG_MODE (MODE) || (MODE) == XImode)
*************** extern const char *host_detect_local_cpu
*** 1035,1057 ****
    ((MODE) == V2DImode || (MODE) == V2DFmode || (MODE) == V16QImode	\
     || (MODE) == V4SImode || (MODE) == V4SFmode || (MODE) == V8HImode	\
     || (MODE) == TFmode || (MODE) == V1TImode || (MODE) == V8HFmode	\
!    || (MODE) == TImode)
  
  #define VALID_AVX512FP16_REG_MODE(MODE)					\
!   ((MODE) == V8HFmode || (MODE) == V16HFmode || (MODE) == V32HFmode	\
!    || (MODE) == V2HFmode)
  
  #define VALID_SSE2_REG_MODE(MODE)					\
    ((MODE) == V16QImode || (MODE) == V8HImode || (MODE) == V2DFmode	\
     || (MODE) == V8HFmode || (MODE) == V4HFmode || (MODE) == V2HFmode	\
     || (MODE) == V4QImode || (MODE) == V2HImode || (MODE) == V1SImode	\
!    || (MODE) == V2DImode || (MODE) == V2QImode || (MODE) == DFmode	\
!    || (MODE) == HFmode)
  
  #define VALID_SSE_REG_MODE(MODE)					\
    ((MODE) == V1TImode || (MODE) == TImode				\
     || (MODE) == V4SFmode || (MODE) == V4SImode				\
!    || (MODE) == SFmode || (MODE) == TFmode || (MODE) == TDmode)
  
  #define VALID_MMX_REG_MODE_3DNOW(MODE) \
    ((MODE) == V2SFmode || (MODE) == SFmode)
--- 1041,1065 ----
    ((MODE) == V2DImode || (MODE) == V2DFmode || (MODE) == V16QImode	\
     || (MODE) == V4SImode || (MODE) == V4SFmode || (MODE) == V8HImode	\
     || (MODE) == TFmode || (MODE) == V1TImode || (MODE) == V8HFmode	\
!    || (MODE) == V8BFmode || (MODE) == TImode)
  
  #define VALID_AVX512FP16_REG_MODE(MODE)					\
!   ((MODE) == V8HFmode || (MODE) == V16HFmode || (MODE) == V32HFmode)
  
  #define VALID_SSE2_REG_MODE(MODE)					\
    ((MODE) == V16QImode || (MODE) == V8HImode || (MODE) == V2DFmode	\
     || (MODE) == V8HFmode || (MODE) == V4HFmode || (MODE) == V2HFmode	\
+    || (MODE) == V8BFmode || (MODE) == V4BFmode || (MODE) == V2BFmode	\
     || (MODE) == V4QImode || (MODE) == V2HImode || (MODE) == V1SImode	\
!    || (MODE) == V2DImode || (MODE) == V2QImode				\
!    || (MODE) == DFmode	|| (MODE) == DImode				\
!    || (MODE) == HFmode || (MODE) == BFmode)
  
  #define VALID_SSE_REG_MODE(MODE)					\
    ((MODE) == V1TImode || (MODE) == TImode				\
     || (MODE) == V4SFmode || (MODE) == V4SImode				\
!    || (MODE) == SFmode || (MODE) == SImode				\
!    || (MODE) == TFmode || (MODE) == TDmode)
  
  #define VALID_MMX_REG_MODE_3DNOW(MODE) \
    ((MODE) == V2SFmode || (MODE) == SFmode)
*************** extern const char *host_detect_local_cpu
*** 1061,1067 ****
    ((MODE) == V1DImode || (MODE) == DImode				\
     || (MODE) == V2SImode || (MODE) == SImode				\
     || (MODE) == V4HImode || (MODE) == V8QImode				\
!    || (MODE) == V4HFmode)
  
  #define VALID_MASK_REG_MODE(MODE) ((MODE) == HImode || (MODE) == QImode)
  
--- 1069,1075 ----
    ((MODE) == V1DImode || (MODE) == DImode				\
     || (MODE) == V2SImode || (MODE) == SImode				\
     || (MODE) == V4HImode || (MODE) == V8QImode				\
!    || (MODE) == V4HFmode || (MODE) == V4BFmode)
  
  #define VALID_MASK_REG_MODE(MODE) ((MODE) == HImode || (MODE) == QImode)
  
*************** extern const char *host_detect_local_cpu
*** 1077,1084 ****
     || (MODE) == CQImode || (MODE) == CHImode				\
     || (MODE) == CSImode || (MODE) == CDImode				\
     || (MODE) == SDmode || (MODE) == DDmode				\
!    || (MODE) == HFmode || (MODE) == HCmode				\
!    || (MODE) == V2HImode || (MODE) == V2HFmode				\
     || (MODE) == V1SImode || (MODE) == V4QImode || (MODE) == V2QImode	\
     || (TARGET_64BIT							\
         && ((MODE) == TImode || (MODE) == CTImode			\
--- 1085,1092 ----
     || (MODE) == CQImode || (MODE) == CHImode				\
     || (MODE) == CSImode || (MODE) == CDImode				\
     || (MODE) == SDmode || (MODE) == DDmode				\
!    || (MODE) == HFmode || (MODE) == HCmode || (MODE) == BFmode		\
!    || (MODE) == V2HImode || (MODE) == V2HFmode || (MODE) == V2BFmode	\
     || (MODE) == V1SImode || (MODE) == V4QImode || (MODE) == V2QImode	\
     || (TARGET_64BIT							\
         && ((MODE) == TImode || (MODE) == CTImode			\
*************** extern const char *host_detect_local_cpu
*** 1095,1102 ****
     || (MODE) == V4DImode || (MODE) == V8SFmode || (MODE) == V4DFmode	\
     || (MODE) == V2TImode || (MODE) == V8DImode || (MODE) == V64QImode	\
     || (MODE) == V16SImode || (MODE) == V32HImode || (MODE) == V8DFmode	\
!    || (MODE) == V16SFmode || (MODE) == V32HFmode || (MODE) == V16HFmode \
!    || (MODE) == V8HFmode)
  
  #define X87_FLOAT_MODE_P(MODE)	\
    (TARGET_80387 && ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode))
--- 1103,1111 ----
     || (MODE) == V4DImode || (MODE) == V8SFmode || (MODE) == V4DFmode	\
     || (MODE) == V2TImode || (MODE) == V8DImode || (MODE) == V64QImode	\
     || (MODE) == V16SImode || (MODE) == V32HImode || (MODE) == V8DFmode	\
!    || (MODE) == V16SFmode \
!    || (MODE) == V32HFmode || (MODE) == V16HFmode || (MODE) == V8HFmode  \
!    || (MODE) == V32BFmode || (MODE) == V16BFmode || (MODE) == V8BFmode)
  
  #define X87_FLOAT_MODE_P(MODE)	\
    (TARGET_80387 && ((MODE) == SFmode || (MODE) == DFmode || (MODE) == XFmode))
*************** do {							\
*** 1937,1945 ****
  
  #define SLOW_BYTE_ACCESS 0
  
- /* Nonzero if access to memory by shorts is slow and undesirable.  */
- #define SLOW_SHORT_ACCESS 0
- 
  /* Define this macro if it is as good or better to call a constant
     function address than to call an address kept in a register.
  
--- 1946,1951 ----
*************** do {							\
*** 2033,2046 ****
    { "zmm28", XMM28_REG }, { "zmm29", XMM29_REG }, { "zmm30", XMM30_REG }, { "zmm31", XMM31_REG }  \
  }
  
! /* How to renumber registers for dbx and gdb.  */
  
! #define DBX_REGISTER_NUMBER(N) \
!   (TARGET_64BIT ? dbx64_register_map[(N)] : dbx_register_map[(N)])
  
! extern int const dbx_register_map[FIRST_PSEUDO_REGISTER];
! extern int const dbx64_register_map[FIRST_PSEUDO_REGISTER];
! extern int const svr4_dbx_register_map[FIRST_PSEUDO_REGISTER];
  
  /* Before the prologue, RA is at 0(%esp).  */
  #define INCOMING_RETURN_ADDR_RTX \
--- 2039,2052 ----
    { "zmm28", XMM28_REG }, { "zmm29", XMM29_REG }, { "zmm30", XMM30_REG }, { "zmm31", XMM31_REG }  \
  }
  
! /* How to renumber registers for gdb.  */
  
! #define DEBUGGER_REGNO(N) \
!   (TARGET_64BIT ? debugger64_register_map[(N)] : debugger_register_map[(N)])
  
! extern int const debugger_register_map[FIRST_PSEUDO_REGISTER];
! extern int const debugger64_register_map[FIRST_PSEUDO_REGISTER];
! extern int const svr4_debugger_register_map[FIRST_PSEUDO_REGISTER];
  
  /* Before the prologue, RA is at 0(%esp).  */
  #define INCOMING_RETURN_ADDR_RTX \
*************** enum processor_type
*** 2229,2234 ****
--- 2235,2242 ----
    PROCESSOR_GOLDMONT,
    PROCESSOR_GOLDMONT_PLUS,
    PROCESSOR_TREMONT,
+   PROCESSOR_SIERRAFOREST,
+   PROCESSOR_GRANDRIDGE,
    PROCESSOR_KNL,
    PROCESSOR_KNM,
    PROCESSOR_SKYLAKE,
*************** enum processor_type
*** 2242,2248 ****
--- 2250,2258 ----
    PROCESSOR_SAPPHIRERAPIDS,
    PROCESSOR_ALDERLAKE,
    PROCESSOR_ROCKETLAKE,
+   PROCESSOR_GRANITERAPIDS,
    PROCESSOR_INTEL,
+   PROCESSOR_LUJIAZUI,
    PROCESSOR_GEODE,
    PROCESSOR_K6,
    PROCESSOR_ATHLON,
*************** enum processor_type
*** 2257,2262 ****
--- 2267,2273 ----
    PROCESSOR_ZNVER1,
    PROCESSOR_ZNVER2,
    PROCESSOR_ZNVER3,
+   PROCESSOR_ZNVER4,
    PROCESSOR_max
  };
  
*************** constexpr wide_int_bitmask PTA_ICELAKE_S
*** 2328,2337 ****
  constexpr wide_int_bitmask PTA_TIGERLAKE = PTA_ICELAKE_CLIENT | PTA_MOVDIRI
    | PTA_MOVDIR64B | PTA_CLWB | PTA_AVX512VP2INTERSECT | PTA_KL | PTA_WIDEKL;
  constexpr wide_int_bitmask PTA_SAPPHIRERAPIDS = PTA_ICELAKE_SERVER | PTA_MOVDIRI
!   | PTA_MOVDIR64B | PTA_AVX512VP2INTERSECT | PTA_ENQCMD | PTA_CLDEMOTE
!   | PTA_PTWRITE | PTA_WAITPKG | PTA_SERIALIZE | PTA_TSXLDTRK | PTA_AMX_TILE
!   | PTA_AMX_INT8 | PTA_AMX_BF16 | PTA_UINTR | PTA_AVXVNNI | PTA_AVX512FP16
!   | PTA_AVX512BF16;
  constexpr wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF
    | PTA_AVX512ER | PTA_AVX512F | PTA_AVX512CD | PTA_PREFETCHWT1;
  constexpr wide_int_bitmask PTA_BONNELL = PTA_CORE2 | PTA_MOVBE;
--- 2339,2347 ----
  constexpr wide_int_bitmask PTA_TIGERLAKE = PTA_ICELAKE_CLIENT | PTA_MOVDIRI
    | PTA_MOVDIR64B | PTA_CLWB | PTA_AVX512VP2INTERSECT | PTA_KL | PTA_WIDEKL;
  constexpr wide_int_bitmask PTA_SAPPHIRERAPIDS = PTA_ICELAKE_SERVER | PTA_MOVDIRI
!   | PTA_MOVDIR64B | PTA_ENQCMD | PTA_CLDEMOTE | PTA_PTWRITE | PTA_WAITPKG
!   | PTA_SERIALIZE | PTA_TSXLDTRK | PTA_AMX_TILE | PTA_AMX_INT8 | PTA_AMX_BF16
!   | PTA_UINTR | PTA_AVXVNNI | PTA_AVX512FP16 | PTA_AVX512BF16;
  constexpr wide_int_bitmask PTA_KNL = PTA_BROADWELL | PTA_AVX512PF
    | PTA_AVX512ER | PTA_AVX512F | PTA_AVX512CD | PTA_PREFETCHWT1;
  constexpr wide_int_bitmask PTA_BONNELL = PTA_CORE2 | PTA_MOVBE;
*************** constexpr wide_int_bitmask PTA_ALDERLAKE
*** 2348,2355 ****
--- 2358,2385 ----
    | PTA_AVX2 | PTA_BMI | PTA_BMI2 | PTA_F16C | PTA_FMA | PTA_LZCNT
    | PTA_PCONFIG | PTA_PKU | PTA_VAES | PTA_VPCLMULQDQ | PTA_SERIALIZE
    | PTA_HRESET | PTA_KL | PTA_WIDEKL | PTA_AVXVNNI;
+ constexpr wide_int_bitmask PTA_SIERRAFOREST = PTA_ALDERLAKE | PTA_AVXIFMA
+   | PTA_AVXVNNIINT8 | PTA_AVXNECONVERT | PTA_CMPCCXADD;
+ constexpr wide_int_bitmask PTA_GRANITERAPIDS = PTA_SAPPHIRERAPIDS | PTA_AMX_FP16
+   | PTA_PREFETCHI | PTA_AMX_COMPLEX;
+ constexpr wide_int_bitmask PTA_GRANDRIDGE = PTA_SIERRAFOREST | PTA_RAOINT;
  constexpr wide_int_bitmask PTA_KNM = PTA_KNL | PTA_AVX5124VNNIW
    | PTA_AVX5124FMAPS | PTA_AVX512VPOPCNTDQ;
+ constexpr wide_int_bitmask PTA_ZNVER1 = PTA_64BIT | PTA_MMX | PTA_SSE | PTA_SSE2
+   | PTA_SSE3 | PTA_SSE4A | PTA_CX16 | PTA_ABM | PTA_SSSE3 | PTA_SSE4_1
+   | PTA_SSE4_2 | PTA_AES | PTA_PCLMUL | PTA_AVX | PTA_AVX2 | PTA_BMI | PTA_BMI2
+   | PTA_F16C | PTA_FMA | PTA_PRFCHW | PTA_FXSR | PTA_XSAVE | PTA_XSAVEOPT
+   | PTA_FSGSBASE | PTA_RDRND | PTA_MOVBE | PTA_MWAITX | PTA_ADX | PTA_RDSEED
+   | PTA_CLZERO | PTA_CLFLUSHOPT | PTA_XSAVEC | PTA_XSAVES | PTA_SHA | PTA_LZCNT
+   | PTA_POPCNT;
+ constexpr wide_int_bitmask PTA_ZNVER2 = PTA_ZNVER1 | PTA_CLWB | PTA_RDPID
+   | PTA_WBNOINVD;
+ constexpr wide_int_bitmask PTA_ZNVER3 = PTA_ZNVER2 | PTA_VAES | PTA_VPCLMULQDQ
+   | PTA_PKU;
+ constexpr wide_int_bitmask PTA_ZNVER4 = PTA_ZNVER3 | PTA_AVX512F | PTA_AVX512DQ
+   | PTA_AVX512IFMA | PTA_AVX512CD | PTA_AVX512BW | PTA_AVX512VL
+   | PTA_AVX512BF16 | PTA_AVX512VBMI | PTA_AVX512VBMI2 | PTA_GFNI
+   | PTA_AVX512VNNI | PTA_AVX512BITALG | PTA_AVX512VPOPCNTDQ;
  
  #ifndef GENERATOR_FILE
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386.md gcc-13.1.0/gcc/config/i386/i386.md
*** gcc-12.2.0/gcc/config/i386/i386.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for IA-32 and x86-64.
! ;; Copyright (C) 1988-2022 Free Software Foundation, Inc.
  ;; Mostly by William Schelter.
  ;; x86_64 support added by Jan Hubicka
  ;;
--- 1,5 ----
  ;; GCC machine description for IA-32 and x86-64.
! ;; Copyright (C) 1988-2023 Free Software Foundation, Inc.
  ;; Mostly by William Schelter.
  ;; x86_64 support added by Jan Hubicka
  ;;
***************
*** 113,118 ****
--- 113,119 ----
    UNSPEC_PEEPSIB
    UNSPEC_INSN_FALSE_DEP
    UNSPEC_SBB
+   UNSPEC_CC_NE
  
    ;; For SSE/MMX support:
    UNSPEC_FIX_NOTRUNC
***************
*** 129,134 ****
--- 130,136 ----
    ;; For AVX/AVX512F support
    UNSPEC_SCALEF
    UNSPEC_PCMP
+   UNSPEC_CVTBFSF
  
    ;; Generic math support
    UNSPEC_IEEE_MIN	; not commutative
***************
*** 329,334 ****
--- 331,339 ----
  
    ;; For HRESET support
    UNSPECV_HRESET
+ 
+   ;; For PREFETCHI support
+   UNSPECV_PREFETCHI
  ])
  
  ;; Constants to represent rounding modes in the ROUND instruction
***************
*** 473,480 ****
  
  ;; Processor type.
  (define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,nehalem,
! 		    atom,slm,glm,haswell,generic,amdfam10,bdver1,bdver2,bdver3,
! 		    bdver4,btver2,znver1,znver2,znver3"
    (const (symbol_ref "ix86_schedule")))
  
  ;; A basic instruction type.  Refinements due to arguments to be
--- 478,485 ----
  
  ;; Processor type.
  (define_attr "cpu" "none,pentium,pentiumpro,geode,k6,athlon,k8,core2,nehalem,
! 		    atom,slm,glm,haswell,generic,lujiazui,amdfam10,bdver1,
! 		    bdver2,bdver3,bdver4,btver2,znver1,znver2,znver3,znver4"
    (const (symbol_ref "ix86_schedule")))
  
  ;; A basic instruction type.  Refinements due to arguments to be
***************
*** 499,506 ****
  
  ;; Main data type used by the insn
  (define_attr "mode"
!   "unknown,none,QI,HI,SI,DI,TI,OI,XI,HF,SF,DF,XF,TF,V32HF,V16HF,V8HF,
!    V16SF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,V8DF,V4HF,V2HF"
    (const_string "unknown"))
  
  ;; The CPU unit operations uses.
--- 504,511 ----
  
  ;; Main data type used by the insn
  (define_attr "mode"
!   "unknown,none,QI,HI,SI,DI,TI,OI,XI,HF,BF,SF,DF,XF,TF,V32HF,V16HF,V8HF,
!    V16SF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,V8DF,V4HF,V4BF,V2HF,V2BF"
    (const_string "unknown"))
  
  ;; The CPU unit operations uses.
***************
*** 835,841 ****
  		    sse_noavx,sse2,sse2_noavx,sse3,sse3_noavx,sse4,sse4_noavx,
  		    avx,noavx,avx2,noavx2,bmi,bmi2,fma4,fma,avx512f,noavx512f,
  		    avx512bw,noavx512bw,avx512dq,noavx512dq,fma_or_avx512vl,
! 		    avx512vl,noavx512vl,avxvnni,avx512vnnivl,avx512fp16"
    (const_string "base"))
  
  ;; Define instruction set of MMX instructions
--- 840,847 ----
  		    sse_noavx,sse2,sse2_noavx,sse3,sse3_noavx,sse4,sse4_noavx,
  		    avx,noavx,avx2,noavx2,bmi,bmi2,fma4,fma,avx512f,noavx512f,
  		    avx512bw,noavx512bw,avx512dq,noavx512dq,fma_or_avx512vl,
! 		    avx512vl,noavx512vl,avxvnni,avx512vnnivl,avx512fp16,avxifma,
! 		    avx512ifmavl,avxneconvert,avx512bf16vl"
    (const_string "base"))
  
  ;; Define instruction set of MMX instructions
***************
*** 891,896 ****
--- 897,908 ----
  	   (symbol_ref "TARGET_AVX512VNNI && TARGET_AVX512VL")
  	 (eq_attr "isa" "avx512fp16")
  	   (symbol_ref "TARGET_AVX512FP16")
+ 	 (eq_attr "isa" "avxifma") (symbol_ref "TARGET_AVXIFMA")
+ 	 (eq_attr "isa" "avx512ifmavl")
+ 	   (symbol_ref "TARGET_AVX512IFMA && TARGET_AVX512VL")
+ 	 (eq_attr "isa" "avxneconvert") (symbol_ref "TARGET_AVXNECONVERT")
+ 	 (eq_attr "isa" "avx512bf16vl")
+ 	   (symbol_ref "TARGET_AVX512BF16 && TARGET_AVX512VL")
  
  	 (eq_attr "mmx_isa" "native")
  	   (symbol_ref "!TARGET_MMX_WITH_SSE")
***************
*** 1104,1110 ****
  ;; GET_MODE_SIZE (<MODE>mode).  For XFmode which depends on
  ;; command line options just use GET_MODE_SIZE macro.
  (define_mode_attr MODE_SIZE [(QI "1") (HI "2") (SI "4") (DI "8")
! 			     (TI "16") (HF "2") (SF "4") (DF "8")
  			     (XF "GET_MODE_SIZE (XFmode)")
  			     (V16QI "16") (V32QI "32") (V64QI "64")
  			     (V8HI "16") (V16HI "32") (V32HI "64")
--- 1116,1122 ----
  ;; GET_MODE_SIZE (<MODE>mode).  For XFmode which depends on
  ;; command line options just use GET_MODE_SIZE macro.
  (define_mode_attr MODE_SIZE [(QI "1") (HI "2") (SI "4") (DI "8")
! 			     (TI "16") (HF "2") (BF "2") (SF "4") (DF "8")
  			     (XF "GET_MODE_SIZE (XFmode)")
  			     (V16QI "16") (V32QI "32") (V64QI "64")
  			     (V8HI "16") (V16HI "32") (V32HI "64")
***************
*** 1114,1125 ****
  			     (V2DF "16") (V4DF "32") (V8DF "64")
  			     (V4SF "16") (V8SF "32") (V16SF "64")
  			     (V8HF "16") (V16HF "32") (V32HF "64")
! 			     (V4HF "8") (V2HF "4")])
  
  ;; Double word integer modes as mode attribute.
  (define_mode_attr DWI [(QI "HI") (HI "SI") (SI "DI") (DI "TI") (TI "OI")])
  (define_mode_attr dwi [(QI "hi") (HI "si") (SI "di") (DI "ti") (TI "oi")])
  
  ;; LEA mode corresponding to an integer mode
  (define_mode_attr LEAMODE [(QI "SI") (HI "SI") (SI "SI") (DI "DI")])
  
--- 1126,1143 ----
  			     (V2DF "16") (V4DF "32") (V8DF "64")
  			     (V4SF "16") (V8SF "32") (V16SF "64")
  			     (V8HF "16") (V16HF "32") (V32HF "64")
! 			     (V4HF "8") (V2HF "4")
! 			     (V8BF "16") (V16BF "32") (V32BF "64")
! 			     (V4BF "8") (V2BF "4")])
  
  ;; Double word integer modes as mode attribute.
  (define_mode_attr DWI [(QI "HI") (HI "SI") (SI "DI") (DI "TI") (TI "OI")])
  (define_mode_attr dwi [(QI "hi") (HI "si") (SI "di") (DI "ti") (TI "oi")])
  
+ ;; Half sized integer modes.
+ (define_mode_attr HALF [(TI "DI") (DI "SI")])
+ (define_mode_attr half [(TI "di") (DI "si")])
+ 
  ;; LEA mode corresponding to an integer mode
  (define_mode_attr LEAMODE [(QI "SI") (HI "SI") (SI "SI") (DI "DI")])
  
***************
*** 1192,1198 ****
  	[(QI "general_operand")
  	 (HI "general_operand")
  	 (SI "x86_64_szext_general_operand")
! 	 (DI "x86_64_szext_general_operand")])
  
  (define_mode_attr nonmemory_szext_operand
  	[(QI "nonmemory_operand")
--- 1210,1217 ----
  	[(QI "general_operand")
  	 (HI "general_operand")
  	 (SI "x86_64_szext_general_operand")
! 	 (DI "x86_64_szext_general_operand")
! 	 (TI "x86_64_hilo_general_operand")])
  
  (define_mode_attr nonmemory_szext_operand
  	[(QI "nonmemory_operand")
***************
*** 1247,1253 ****
  (define_mode_iterator X87MODEF [SF DF XF])
  
  ;; All x87 floating point modes plus HFmode
! (define_mode_iterator X87MODEFH [HF SF DF XF])
  
  ;; All SSE floating point modes
  (define_mode_iterator SSEMODEF [HF SF DF TF])
--- 1266,1272 ----
  (define_mode_iterator X87MODEF [SF DF XF])
  
  ;; All x87 floating point modes plus HFmode
! (define_mode_iterator X87MODEFH [HF SF DF XF BF])
  
  ;; All SSE floating point modes
  (define_mode_iterator SSEMODEF [HF SF DF TF])
***************
*** 1257,1264 ****
  (define_mode_attr ssemodesuffix
    [(HF "sh") (SF "ss") (DF "sd")
     (V32HF "ph") (V16SF "ps") (V8DF "pd")
!    (V16HF "ph") (V8SF "ps") (V4DF "pd")
!    (V8HF "ph") (V4SF "ps") (V2DF "pd")
     (V16QI "b") (V8HI "w") (V4SI "d") (V2DI "q")
     (V32QI "b") (V16HI "w") (V8SI "d") (V4DI "q")
     (V64QI "b") (V32HI "w") (V16SI "d") (V8DI "q")])
--- 1276,1283 ----
  (define_mode_attr ssemodesuffix
    [(HF "sh") (SF "ss") (DF "sd")
     (V32HF "ph") (V16SF "ps") (V8DF "pd")
!    (V16HF "ph") (V16BF "bf") (V8SF "ps") (V4DF "pd")
!    (V8HF "ph")  (V8BF "bf") (V4SF "ps") (V2DF "pd")
     (V16QI "b") (V8HI "w") (V4SI "d") (V2DI "q")
     (V32QI "b") (V16HI "w") (V8SI "d") (V4DI "q")
     (V64QI "b") (V32HI "w") (V16SI "d") (V8DI "q")])
***************
*** 1268,1274 ****
  
  ;; SSE vector mode corresponding to a scalar mode
  (define_mode_attr ssevecmode
!   [(QI "V16QI") (HI "V8HI") (SI "V4SI") (DI "V2DI") (HF "V8HF") (SF "V4SF") (DF "V2DF")])
  (define_mode_attr ssevecmodelower
    [(QI "v16qi") (HI "v8hi") (SI "v4si") (DI "v2di") (SF "v4sf") (DF "v2df")])
  
--- 1287,1293 ----
  
  ;; SSE vector mode corresponding to a scalar mode
  (define_mode_attr ssevecmode
!   [(QI "V16QI") (HI "V8HI") (SI "V4SI") (DI "V2DI") (HF "V8HF") (BF "V8BF") (SF "V4SF") (DF "V2DF")])
  (define_mode_attr ssevecmodelower
    [(QI "v16qi") (HI "v8hi") (SI "v4si") (DI "v2di") (SF "v4sf") (DF "v2df")])
  
***************
*** 1303,1315 ****
  (include "bdver1.md")
  (include "bdver3.md")
  (include "btver2.md")
! (include "znver1.md")
  (include "geode.md")
  (include "atom.md")
  (include "slm.md")
  (include "glm.md")
  (include "core2.md")
  (include "haswell.md")
  
  
  ;; Operand and operator predicates and constraints
--- 1322,1336 ----
  (include "bdver1.md")
  (include "bdver3.md")
  (include "btver2.md")
! (include "znver.md")
! (include "znver4.md")
  (include "geode.md")
  (include "atom.md")
  (include "slm.md")
  (include "glm.md")
  (include "core2.md")
  (include "haswell.md")
+ (include "lujiazui.md")
  
  
  ;; Operand and operator predicates and constraints
***************
*** 1338,1353 ****
    DONE;
  })
  
  (define_expand "cstore<mode>4"
    [(set (reg:CC FLAGS_REG)
! 	(compare:CC (match_operand:SWIM 2 "nonimmediate_operand")
! 		    (match_operand:SWIM 3 "<general_operand>")))
     (set (match_operand:QI 0 "register_operand")
  	(match_operator 1 "ordered_comparison_operator"
  	  [(reg:CC FLAGS_REG) (const_int 0)]))]
    ""
  {
!   if (MEM_P (operands[2]) && MEM_P (operands[3]))
      operands[2] = force_reg (<MODE>mode, operands[2]);
    ix86_expand_setcc (operands[0], GET_CODE (operands[1]),
  		     operands[2], operands[3]);
--- 1359,1396 ----
    DONE;
  })
  
+ (define_expand "cbranchoi4"
+   [(set (reg:CC FLAGS_REG)
+ 	(compare:CC (match_operand:OI 1 "nonimmediate_operand")
+ 		    (match_operand:OI 2 "nonimmediate_operand")))
+    (set (pc) (if_then_else
+ 	       (match_operator 0 "bt_comparison_operator"
+ 		[(reg:CC FLAGS_REG) (const_int 0)])
+ 	       (label_ref (match_operand 3))
+ 	       (pc)))]
+   "TARGET_AVX"
+ {
+   ix86_expand_branch (GET_CODE (operands[0]),
+ 		      operands[1], operands[2], operands[3]);
+   DONE;
+ })
+ 
  (define_expand "cstore<mode>4"
    [(set (reg:CC FLAGS_REG)
! 	(compare:CC (match_operand:SDWIM 2 "nonimmediate_operand")
! 		    (match_operand:SDWIM 3 "<general_operand>")))
     (set (match_operand:QI 0 "register_operand")
  	(match_operator 1 "ordered_comparison_operator"
  	  [(reg:CC FLAGS_REG) (const_int 0)]))]
    ""
  {
!   if (<MODE>mode == (TARGET_64BIT ? TImode : DImode))
!     {
!       if (GET_CODE (operands[1]) != EQ
! 	  && GET_CODE (operands[1]) != NE)
! 	FAIL;
!     }
!   else if (MEM_P (operands[2]) && MEM_P (operands[3]))
      operands[2] = force_reg (<MODE>mode, operands[2]);
    ix86_expand_setcc (operands[0], GET_CODE (operands[1]),
  		     operands[2], operands[3]);
***************
*** 1413,1422 ****
  (define_insn "*cmpqi_ext<mode>_1"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (match_operand:QI 0 "nonimmediate_operand" "QBc,m")
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand:SWI248 1 "register_operand" "Q,Q")
  	      (const_int 8)
  	      (const_int 8)) 0)))]
    "ix86_match_ccmode (insn, CCmode)"
--- 1456,1465 ----
  (define_insn "*cmpqi_ext<mode>_1"
    [(set (reg FLAGS_REG)
  	(compare
! 	  (match_operand:QI 0 "nonimm_x64constmem_operand" "QBc,m")
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand 1 "int248_register_operand" "Q,Q")
  	      (const_int 8)
  	      (const_int 8)) 0)))]
    "ix86_match_ccmode (insn, CCmode)"
***************
*** 1430,1436 ****
  	(compare
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand:SWI248 0 "register_operand" "Q")
  	      (const_int 8)
  	      (const_int 8)) 0)
  	  (match_operand:QI 1 "const0_operand")))]
--- 1473,1479 ----
  	(compare
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand 0 "int248_register_operand" "Q")
  	      (const_int 8)
  	      (const_int 8)) 0)
  	  (match_operand:QI 1 "const0_operand")))]
***************
*** 1455,1464 ****
  	(compare
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand:SWI248 0 "register_operand" "Q,Q")
  	      (const_int 8)
  	      (const_int 8)) 0)
! 	  (match_operand:QI 1 "general_operand" "QnBc,m")))]
    "ix86_match_ccmode (insn, CCmode)"
    "cmp{b}\t{%1, %h0|%h0, %1}"
    [(set_attr "isa" "*,nox64")
--- 1498,1507 ----
  	(compare
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand 0 "int248_register_operand" "Q,Q")
  	      (const_int 8)
  	      (const_int 8)) 0)
! 	  (match_operand:QI 1 "general_x64constmem_operand" "QnBc,m")))]
    "ix86_match_ccmode (insn, CCmode)"
    "cmp{b}\t{%1, %h0|%h0, %1}"
    [(set_attr "isa" "*,nox64")
***************
*** 1470,1481 ****
  	(compare
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand:SWI248 0 "register_operand" "Q")
  	      (const_int 8)
  	      (const_int 8)) 0)
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand:SWI248 1 "register_operand" "Q")
  	      (const_int 8)
  	      (const_int 8)) 0)))]
    "ix86_match_ccmode (insn, CCmode)"
--- 1513,1524 ----
  	(compare
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand 0 "int248_register_operand" "Q")
  	      (const_int 8)
  	      (const_int 8)) 0)
  	  (subreg:QI
  	    (zero_extract:SWI248
! 	      (match_operand 1 "int248_register_operand" "Q")
  	      (const_int 8)
  	      (const_int 8)) 0)))]
    "ix86_match_ccmode (insn, CCmode)"
***************
*** 1483,1488 ****
--- 1526,1596 ----
    [(set_attr "type" "icmp")
     (set_attr "mode" "QI")])
  
+ (define_insn_and_split "*cmp<dwi>_doubleword"
+   [(set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ (match_operand:<DWI> 0 "nonimmediate_operand")
+ 		     (match_operand:<DWI> 1 "general_operand")))]
+   "ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(parallel [(set (reg:CCZ FLAGS_REG)
+ 		   (compare:CCZ (ior:DWIH (match_dup 4) (match_dup 5))
+ 				(const_int 0)))
+ 	      (set (match_dup 4) (ior:DWIH (match_dup 4) (match_dup 5)))])]
+ {
+   split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);
+   /* Placing the SUBREG pieces in pseudos helps reload.  */
+   for (int i = 0; i < 4; i++)
+     if (SUBREG_P (operands[i]))
+       operands[i] = force_reg (<MODE>mode, operands[i]);
+ 
+   operands[4] = gen_reg_rtx (<MODE>mode);
+ 
+   /* Special case comparisons against -1.  */
+   if (operands[1] == constm1_rtx && operands[3] == constm1_rtx)
+     {
+       emit_insn (gen_and<mode>3 (operands[4], operands[0], operands[2]));
+       emit_insn (gen_cmp_1 (<MODE>mode, operands[4], constm1_rtx));
+       DONE;
+     }
+ 
+   if (operands[1] == const0_rtx)
+     emit_move_insn (operands[4], operands[0]);
+   else if (operands[0] == const0_rtx)
+     emit_move_insn (operands[4], operands[1]);
+   else if (operands[1] == constm1_rtx)
+     emit_insn (gen_one_cmpl<mode>2 (operands[4], operands[0]));
+   else if (operands[0] == constm1_rtx)
+     emit_insn (gen_one_cmpl<mode>2 (operands[4], operands[1]));
+   else
+     {
+       if (CONST_SCALAR_INT_P (operands[1])
+ 	  && !x86_64_immediate_operand (operands[1], <MODE>mode))
+ 	operands[1] = force_reg (<MODE>mode, operands[1]);
+       emit_insn (gen_xor<mode>3 (operands[4], operands[0], operands[1]));
+     }
+ 
+   if (operands[3] == const0_rtx)
+     operands[5] = operands[2];
+   else if (operands[2] == const0_rtx)
+     operands[5] = operands[3];
+   else
+     {
+       operands[5] = gen_reg_rtx (<MODE>mode);
+       if (operands[3] == constm1_rtx)
+ 	emit_insn (gen_one_cmpl<mode>2 (operands[5], operands[2]));
+       else if (operands[2] == constm1_rtx)
+ 	emit_insn (gen_one_cmpl<mode>2 (operands[5], operands[3]));
+       else
+ 	{
+ 	  if (CONST_SCALAR_INT_P (operands[3])
+ 	      && !x86_64_immediate_operand (operands[3], <MODE>mode))
+ 	    operands[3] = force_reg (<MODE>mode, operands[3]);
+ 	  emit_insn (gen_xor<mode>3 (operands[5], operands[2], operands[3]));
+ 	}
+     }
+ })
+ 
  ;; These implement float point compares.
  ;; %%% See if we can get away with VOIDmode operands on the actual insns,
  ;; which would allow mix and match FP modes on the compares.  Which is what
***************
*** 1554,1559 ****
--- 1662,1689 ----
    DONE;
  })
  
+ (define_expand "cbranchbf4"
+   [(set (reg:CC FLAGS_REG)
+ 	(compare:CC (match_operand:BF 1 "cmp_fp_expander_operand")
+ 		    (match_operand:BF 2 "cmp_fp_expander_operand")))
+    (set (pc) (if_then_else
+ 	      (match_operator 0 "comparison_operator"
+ 	       [(reg:CC FLAGS_REG)
+ 		(const_int 0)])
+ 	      (label_ref (match_operand 3))
+ 	      (pc)))]
+   "TARGET_80387 || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH)"
+ {
+   rtx op1 = ix86_expand_fast_convert_bf_to_sf (operands[1]);
+   rtx op2 = ix86_expand_fast_convert_bf_to_sf (operands[2]);
+   do_compare_rtx_and_jump (op1, op2, GET_CODE (operands[0]), 0,
+ 			   SFmode, NULL_RTX, NULL,
+ 			   as_a <rtx_code_label *> (operands[3]),
+ 			   /* Unfortunately this isn't propagated.  */
+ 			   profile_probability::even ());
+   DONE;
+ })
+ 
  (define_expand "cstorehf4"
    [(set (reg:CC FLAGS_REG)
  	(compare:CC (match_operand:HF 2 "cmp_fp_expander_operand")
***************
*** 1569,1574 ****
--- 1699,1723 ----
    DONE;
  })
  
+ (define_expand "cstorebf4"
+   [(set (reg:CC FLAGS_REG)
+ 	(compare:CC (match_operand:BF 2 "cmp_fp_expander_operand")
+ 		    (match_operand:BF 3 "cmp_fp_expander_operand")))
+    (set (match_operand:QI 0 "register_operand")
+ 	(match_operator 1 "comparison_operator"
+ 	  [(reg:CC FLAGS_REG)
+ 	   (const_int 0)]))]
+   "TARGET_80387 || (SSE_FLOAT_MODE_P (SFmode) && TARGET_SSE_MATH)"
+ {
+   rtx op1 = ix86_expand_fast_convert_bf_to_sf (operands[2]);
+   rtx op2 = ix86_expand_fast_convert_bf_to_sf (operands[3]);
+   rtx res = emit_store_flag_force (operands[0], GET_CODE (operands[1]),
+ 				   op1, op2, SFmode, 0, 1);
+   if (!rtx_equal_p (res, operands[0]))
+     emit_move_insn (operands[0], res);
+   DONE;
+ })
+ 
  (define_expand "cstore<mode>4"
    [(set (reg:CC FLAGS_REG)
  	(compare:CC (match_operand:MODEF 2 "cmp_fp_expander_operand")
***************
*** 2182,2190 ****
  
  (define_insn "*movdi_internal"
    [(set (match_operand:DI 0 "nonimmediate_operand"
!     "=r  ,o  ,r,r  ,r,m ,*y,*y,?*y,?m,?r,?*y,*v,*v,*v,m ,m,?r ,?*Yd,?r,?*v,?*y,?*x,*k,*k  ,*r,*m,*k")
  	(match_operand:DI 1 "general_operand"
!     "riFo,riF,Z,rem,i,re,C ,*y,Bk ,*y,*y,r  ,C ,*v,Bk,*v,v,*Yd,r   ,*v,r  ,*x ,*y ,*r,*kBk,*k,*k,CBC"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
     && ix86_hardreg_mov_ok (operands[0], operands[1])"
  {
--- 2331,2339 ----
  
  (define_insn "*movdi_internal"
    [(set (match_operand:DI 0 "nonimmediate_operand"
!     "=r  ,o  ,r,r  ,r,m ,*y,*y,?*y,?m,?r,?*y,?v,?v,?v,m ,m,?r ,?*Yd,?r,?v,?*y,?*x,*k,*k  ,*r,*m,*k")
  	(match_operand:DI 1 "general_operand"
!     "riFo,riF,Z,rem,i,re,C ,*y,Bk ,*y,*y,r  ,C ,?v,Bk,?v,v,*Yd,r   ,?v,r  ,*x ,*y ,*r,*kBk,*k,*k,CBC"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
     && ix86_hardreg_mov_ok (operands[0], operands[1])"
  {
***************
*** 2403,2411 ****
  
  (define_insn "*movsi_internal"
    [(set (match_operand:SI 0 "nonimmediate_operand"
!     "=r,m ,*y,*y,?*y,?m,?r,?*y,*v,*v,*v,m ,?r,?*v,*k,*k  ,*rm,*k")
  	(match_operand:SI 1 "general_operand"
!     "g ,re,C ,*y,Bk ,*y,*y,r  ,C ,*v,Bk,*v,*v,r  ,*r,*kBk,*k ,CBC"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
     && ix86_hardreg_mov_ok (operands[0], operands[1])"
  {
--- 2552,2560 ----
  
  (define_insn "*movsi_internal"
    [(set (match_operand:SI 0 "nonimmediate_operand"
!     "=r,m ,*y,*y,?*y,?m,?r,?*y,?v,?v,?v,m ,?r,?v,*k,*k  ,*rm,*k")
  	(match_operand:SI 1 "general_operand"
!     "g ,re,C ,*y,Bk ,*y,*y,r  ,C ,?v,Bk,?v,?v,r  ,*r,*kBk,*k ,CBC"))]
    "!(MEM_P (operands[0]) && MEM_P (operands[1]))
     && ix86_hardreg_mov_ok (operands[0], operands[1])"
  {
***************
*** 2898,2904 ****
     (set_attr "memory" "load")
     (set_attr "mode" "<MODE>")])
  
! (define_insn "*swap<mode>"
    [(set (match_operand:SWI48 0 "register_operand" "+r")
  	(match_operand:SWI48 1 "register_operand" "+r"))
     (set (match_dup 1)
--- 3047,3053 ----
     (set_attr "memory" "load")
     (set_attr "mode" "<MODE>")])
  
! (define_insn "swap<mode>"
    [(set (match_operand:SWI48 0 "register_operand" "+r")
  	(match_operand:SWI48 1 "register_operand" "+r"))
     (set (match_dup 1)
***************
*** 2948,2953 ****
--- 3097,3114 ----
    [(parallel [(set (match_dup 1) (match_dup 2))
  	      (set (match_dup 2) (match_dup 1))])])
  
+ ;; Convert moves to/from AX_REG into xchg with -Oz.
+ (define_peephole2
+   [(set (match_operand:SWI48 0 "general_reg_operand")
+ 	(match_operand:SWI48 1 "general_reg_operand"))]
+  "optimize_size > 1
+   && ((REGNO (operands[0]) == AX_REG)
+       != (REGNO (operands[1]) == AX_REG))
+   && optimize_insn_for_size_p ()
+   && peep2_reg_dead_p (1, operands[1])"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	      (set (match_dup 1) (match_dup 0))])])
+ 
  (define_expand "movstrict<mode>"
    [(set (strict_low_part (match_operand:SWI12 0 "register_operand"))
  	(match_operand:SWI12 1 "general_operand"))]
***************
*** 2998,3004 ****
  
  (define_insn "*extv<mode>"
    [(set (match_operand:SWI24 0 "register_operand" "=R")
! 	(sign_extract:SWI24 (match_operand:SWI24 1 "register_operand" "Q")
  			    (const_int 8)
  			    (const_int 8)))]
    ""
--- 3159,3165 ----
  
  (define_insn "*extv<mode>"
    [(set (match_operand:SWI24 0 "register_operand" "=R")
! 	(sign_extract:SWI24 (match_operand 1 "int248_register_operand" "Q")
  			    (const_int 8)
  			    (const_int 8)))]
    ""
***************
*** 3031,3037 ****
    [(set (match_operand:QI 0 "norex_memory_operand" "=Bn")
  	(subreg:QI
  	  (zero_extract:SWI248
! 	    (match_operand:SWI248 1 "register_operand" "Q")
  	    (const_int 8)
  	    (const_int 8)) 0))]
    "TARGET_64BIT && reload_completed"
--- 3192,3198 ----
    [(set (match_operand:QI 0 "norex_memory_operand" "=Bn")
  	(subreg:QI
  	  (zero_extract:SWI248
! 	    (match_operand 1 "int248_register_operand" "Q")
  	    (const_int 8)
  	    (const_int 8)) 0))]
    "TARGET_64BIT && reload_completed"
***************
*** 3041,3047 ****
  
  (define_insn "*extzv<mode>"
    [(set (match_operand:SWI248 0 "register_operand" "=R")
! 	(zero_extract:SWI248 (match_operand:SWI248 1 "register_operand" "Q")
  			     (const_int 8)
  			     (const_int 8)))]
    ""
--- 3202,3208 ----
  
  (define_insn "*extzv<mode>"
    [(set (match_operand:SWI248 0 "register_operand" "=R")
! 	(zero_extract:SWI248 (match_operand 1 "int248_register_operand" "Q")
  			     (const_int 8)
  			     (const_int 8)))]
    ""
***************
*** 3053,3059 ****
    [(set (match_operand:QI 0 "nonimmediate_operand" "=QBc,?R,m")
  	(subreg:QI
  	  (zero_extract:SWI248
! 	    (match_operand:SWI248 1 "register_operand" "Q,Q,Q")
  	    (const_int 8)
  	    (const_int 8)) 0))]
    ""
--- 3214,3220 ----
    [(set (match_operand:QI 0 "nonimmediate_operand" "=QBc,?R,m")
  	(subreg:QI
  	  (zero_extract:SWI248
! 	    (match_operand 1 "int248_register_operand" "Q,Q,Q")
  	    (const_int 8)
  	    (const_int 8)) 0))]
    ""
***************
*** 3081,3087 ****
  (define_peephole2
    [(set (match_operand:QI 0 "register_operand")
  	(subreg:QI
! 	  (zero_extract:SWI248 (match_operand:SWI248 1 "register_operand")
  			       (const_int 8)
  			       (const_int 8)) 0))
     (set (match_operand:QI 2 "norex_memory_operand") (match_dup 0))]
--- 3242,3248 ----
  (define_peephole2
    [(set (match_operand:QI 0 "register_operand")
  	(subreg:QI
! 	  (zero_extract:SWI248 (match_operand 1 "int248_register_operand")
  			       (const_int 8)
  			       (const_int 8)) 0))
     (set (match_operand:QI 2 "norex_memory_operand") (match_dup 0))]
***************
*** 3128,3134 ****
  
  (define_insn "*insvqi_1_mem_rex64"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
--- 3289,3295 ----
  
  (define_insn "*insvqi_1_mem_rex64"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
***************
*** 3140,3146 ****
  
  (define_insn "@insv<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(match_operand:SWI248 1 "general_operand" "QnBc,m"))]
--- 3301,3307 ----
  
  (define_insn "@insv<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(match_operand:SWI248 1 "general_operand" "QnBc,m"))]
***************
*** 3156,3162 ****
  
  (define_insn "*insvqi_1"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
--- 3317,3323 ----
  
  (define_insn "*insvqi_1"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
***************
*** 3170,3176 ****
  (define_peephole2
    [(set (match_operand:QI 0 "register_operand")
  	(match_operand:QI 1 "norex_memory_operand"))
!    (set (zero_extract:SWI248 (match_operand:SWI248 2 "register_operand")
  			     (const_int 8)
  			     (const_int 8))
  	(subreg:SWI248 (match_dup 0) 0))]
--- 3331,3337 ----
  (define_peephole2
    [(set (match_operand:QI 0 "register_operand")
  	(match_operand:QI 1 "norex_memory_operand"))
!    (set (zero_extract:SWI248 (match_operand 2 "int248_register_operand")
  			     (const_int 8)
  			     (const_int 8))
  	(subreg:SWI248 (match_dup 0) 0))]
***************
*** 3186,3192 ****
    [(parallel [(set (match_operand:SWI48 0 "general_reg_operand")
  		   (const_int 0))
  	      (clobber (reg:CC FLAGS_REG))])
!    (set (zero_extract:SWI248 (match_operand:SWI248 1 "general_reg_operand")
  			     (const_int 8)
  			     (const_int 8))
  	(const_int 0))]
--- 3347,3353 ----
    [(parallel [(set (match_operand:SWI48 0 "general_reg_operand")
  		   (const_int 0))
  	      (clobber (reg:CC FLAGS_REG))])
!    (set (zero_extract:SWI248 (match_operand 1 "int248_register_operand")
  			     (const_int 8)
  			     (const_int 8))
  	(const_int 0))]
***************
*** 3199,3205 ****
  (define_peephole2
    [(set (match_operand:SWI48 0 "general_reg_operand")
  	(match_operand:SWI48 1 "const_int_operand"))
!    (set (zero_extract:SWI248 (match_operand:SWI248 2 "general_reg_operand")
  			     (const_int 8)
  			     (const_int 8))
  	(match_operand:SWI248 3 "const_int_operand"))]
--- 3360,3366 ----
  (define_peephole2
    [(set (match_operand:SWI48 0 "general_reg_operand")
  	(match_operand:SWI48 1 "const_int_operand"))
!    (set (zero_extract:SWI248 (match_operand 2 "int248_register_operand")
  			     (const_int 8)
  			     (const_int 8))
  	(match_operand:SWI248 3 "const_int_operand"))]
***************
*** 3217,3227 ****
  
  (define_insn "*insvqi_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(any_extract:SWI248
! 	  (match_operand:SWI248 1 "register_operand" "Q")
  	  (const_int 8)
  	  (const_int 8)))]
    ""
--- 3378,3388 ----
  
  (define_insn "*insvqi_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(any_extract:SWI248
! 	  (match_operand 1 "int248_register_operand" "Q")
  	  (const_int 8)
  	  (const_int 8)))]
    ""
***************
*** 3231,3237 ****
  
  (define_insn "*insvqi_3"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(any_shiftrt:SWI248
--- 3392,3398 ----
  
  (define_insn "*insvqi_3"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(any_shiftrt:SWI248
***************
*** 3338,3346 ****
    operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx);
  })
  
! (define_insn "*pushhf_rex64"
!   [(set (match_operand:HF 0 "push_operand" "=X,X")
! 	(match_operand:HF 1 "nonmemory_no_elim_operand" "r,x"))]
    "TARGET_64BIT"
  {
    /* Anything else should be already split before reg-stack.  */
--- 3499,3509 ----
    operands[0] = replace_equiv_address (operands[0], stack_pointer_rtx);
  })
  
! (define_mode_iterator HFBF [HF BF])
! 
! (define_insn "*push<mode>_rex64"
!   [(set (match_operand:HFBF 0 "push_operand" "=X,X")
! 	(match_operand:HFBF 1 "nonmemory_no_elim_operand" "r,x"))]
    "TARGET_64BIT"
  {
    /* Anything else should be already split before reg-stack.  */
***************
*** 3351,3359 ****
     (set_attr "type" "push,multi")
     (set_attr "mode" "DI,TI")])
  
! (define_insn "*pushhf"
!   [(set (match_operand:HF 0 "push_operand" "=X,X")
! 	(match_operand:HF 1 "general_no_elim_operand" "rmF,x"))]
    "!TARGET_64BIT"
  {
    /* Anything else should be already split before reg-stack.  */
--- 3514,3522 ----
     (set_attr "type" "push,multi")
     (set_attr "mode" "DI,TI")])
  
! (define_insn "*push<mode>"
!   [(set (match_operand:HFBF 0 "push_operand" "=X,X")
! 	(match_operand:HFBF 1 "general_no_elim_operand" "rmF,x"))]
    "!TARGET_64BIT"
  {
    /* Anything else should be already split before reg-stack.  */
***************
*** 3392,3398 ****
     (set_attr "unit" "i387,*,*")
     (set_attr "mode" "SF,SI,SF")])
  
! (define_mode_iterator MODESH [SF HF])
  ;; %%% Kill this when call knows how to work this out.
  (define_split
    [(set (match_operand:MODESH 0 "push_operand")
--- 3555,3561 ----
     (set_attr "unit" "i387,*,*")
     (set_attr "mode" "SF,SI,SF")])
  
! (define_mode_iterator MODESH [SF HF BF])
  ;; %%% Kill this when call knows how to work this out.
  (define_split
    [(set (match_operand:MODESH 0 "push_operand")
***************
*** 3880,3897 ****
  	   ]
  	   (const_string "*")))])
  
! (define_insn "*movhf_internal"
!  [(set (match_operand:HF 0 "nonimmediate_operand"
  	 "=?r,?r,?r,?m,v,v,?r,m,?v,v")
!        (match_operand:HF 1 "general_operand"
! 	 "r  ,F ,m ,rF,C,v, v,v,r ,m"))]
   "!(MEM_P (operands[0]) && MEM_P (operands[1]))
    && (lra_in_progress
        || reload_completed
        || !CONST_DOUBLE_P (operands[1])
        || (TARGET_SSE2
! 	  && standard_sse_constant_p (operands[1], HFmode) == 1)
!       || memory_operand (operands[0], HFmode))"
  {
    switch (get_attr_type (insn))
      {
--- 4043,4063 ----
  	   ]
  	   (const_string "*")))])
  
! (define_mode_attr hfbfconstf
!  [(HF "F") (BF "")])
! 
! (define_insn "*mov<mode>_internal"
!  [(set (match_operand:HFBF 0 "nonimmediate_operand"
  	 "=?r,?r,?r,?m,v,v,?r,m,?v,v")
!        (match_operand:HFBF 1 "general_operand"
! 	 "r  ,F ,m ,r<hfbfconstf>,C,v, v,v,r ,m"))]
   "!(MEM_P (operands[0]) && MEM_P (operands[1]))
    && (lra_in_progress
        || reload_completed
        || !CONST_DOUBLE_P (operands[1])
        || (TARGET_SSE2
! 	  && standard_sse_constant_p (operands[1], <MODE>mode) == 1)
!       || memory_operand (operands[0], <MODE>mode))"
  {
    switch (get_attr_type (insn))
      {
***************
*** 3986,3992 ****
  			 (not (match_test "TARGET_HIMODE_MATH"))))
  		 (const_string "SI")
  	      ]
! 	      (const_string "HI")))])
  
  (define_split
    [(set (match_operand 0 "any_fp_register_operand")
--- 4152,4164 ----
  			 (not (match_test "TARGET_HIMODE_MATH"))))
  		 (const_string "SI")
  	      ]
! 	      (const_string "HI")))
!    (set (attr "enabled")
! 	(cond [(and (match_test "<MODE>mode == BFmode")
! 		    (eq_attr "alternative" "1"))
! 		(symbol_ref "false")
! 	      ]
! 	      (const_string "*")))])
  
  (define_split
    [(set (match_operand 0 "any_fp_register_operand")
***************
*** 4046,4051 ****
--- 4218,4233 ----
  
  ;; Zero extension instructions
  
+ (define_insn_and_split "zero_extendditi2"
+   [(set (match_operand:TI 0 "nonimmediate_operand" "=r,o")
+ 	(zero_extend:TI (match_operand:DI 1 "nonimmediate_operand" "rm,r")))]
+   "TARGET_64BIT"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 3) (match_dup 1))
+    (set (match_dup 4) (const_int 0))]
+   "split_double_mode (TImode, &operands[0], 1, &operands[3], &operands[4]);")
+ 
  (define_expand "zero_extendsidi2"
    [(set (match_operand:DI 0 "nonimmediate_operand")
  	(zero_extend:DI (match_operand:SI 1 "nonimmediate_operand")))])
***************
*** 4367,4383 ****
    "!TARGET_64BIT"
    "#")
  
  ;; Split the memory case.  If the source register doesn't die, it will stay
  ;; this way, if it does die, following peephole2s take care of it.
  (define_split
!   [(set (match_operand:DI 0 "memory_operand")
! 	(sign_extend:DI (match_operand:SI 1 "register_operand")))
     (clobber (reg:CC FLAGS_REG))
!    (clobber (match_operand:SI 2 "register_operand"))]
    "reload_completed"
    [(const_int 0)]
  {
!   split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);
  
    emit_move_insn (operands[3], operands[1]);
  
--- 4549,4575 ----
    "!TARGET_64BIT"
    "#")
  
+ (define_insn "extendditi2"
+   [(set (match_operand:TI 0 "nonimmediate_operand" "=*A,r,?r,?*o")
+ 	(sign_extend:TI (match_operand:DI 1 "register_operand" "0,0,r,r")))
+    (clobber (reg:CC FLAGS_REG))
+    (clobber (match_scratch:DI 2 "=X,X,X,&r"))]
+   "TARGET_64BIT"
+   "#")
+ 
  ;; Split the memory case.  If the source register doesn't die, it will stay
  ;; this way, if it does die, following peephole2s take care of it.
  (define_split
!   [(set (match_operand:<DWI> 0 "memory_operand")
! 	(sign_extend:<DWI> (match_operand:DWIH 1 "register_operand")))
     (clobber (reg:CC FLAGS_REG))
!    (clobber (match_operand:DWIH 2 "register_operand"))]
    "reload_completed"
    [(const_int 0)]
  {
!   rtx bits = GEN_INT (<MODE_SIZE> * BITS_PER_UNIT - 1);
! 
!   split_double_mode (<DWI>mode, &operands[0], 1, &operands[3], &operands[4]);
  
    emit_move_insn (operands[3], operands[1]);
  
***************
*** 4386,4397 ****
        && REGNO (operands[1]) == AX_REG
        && REGNO (operands[2]) == DX_REG)
      {
!       emit_insn (gen_ashrsi3_cvt (operands[2], operands[1], GEN_INT (31)));
      }
    else
      {
        emit_move_insn (operands[2], operands[1]);
!       emit_insn (gen_ashrsi3_cvt (operands[2], operands[2], GEN_INT (31)));
      }
    emit_move_insn (operands[4], operands[2]);
    DONE;
--- 4578,4589 ----
        && REGNO (operands[1]) == AX_REG
        && REGNO (operands[2]) == DX_REG)
      {
!       emit_insn (gen_ashr<mode>3_cvt (operands[2], operands[1], bits));
      }
    else
      {
        emit_move_insn (operands[2], operands[1]);
!       emit_insn (gen_ashr<mode>3_cvt (operands[2], operands[2], bits));
      }
    emit_move_insn (operands[4], operands[2]);
    DONE;
***************
*** 4400,4468 ****
  ;; Peepholes for the case where the source register does die, after
  ;; being split with the above splitter.
  (define_peephole2
!   [(set (match_operand:SI 0 "memory_operand")
! 	(match_operand:SI 1 "general_reg_operand"))
!    (set (match_operand:SI 2 "general_reg_operand") (match_dup 1))
     (parallel [(set (match_dup 2)
! 		   (ashiftrt:SI (match_dup 2) (const_int 31)))
  	       (clobber (reg:CC FLAGS_REG))])
!    (set (match_operand:SI 3 "memory_operand") (match_dup 2))]
    "REGNO (operands[1]) != REGNO (operands[2])
     && peep2_reg_dead_p (2, operands[1])
     && peep2_reg_dead_p (4, operands[2])
     && !reg_mentioned_p (operands[2], operands[3])"
    [(set (match_dup 0) (match_dup 1))
!    (parallel [(set (match_dup 1) (ashiftrt:SI (match_dup 1) (const_int 31)))
  	      (clobber (reg:CC FLAGS_REG))])
     (set (match_dup 3) (match_dup 1))])
  
  (define_peephole2
!   [(set (match_operand:SI 0 "memory_operand")
! 	(match_operand:SI 1 "general_reg_operand"))
!    (parallel [(set (match_operand:SI 2 "general_reg_operand")
! 		   (ashiftrt:SI (match_dup 1) (const_int 31)))
  	       (clobber (reg:CC FLAGS_REG))])
!    (set (match_operand:SI 3 "memory_operand") (match_dup 2))]
    "/* cltd is shorter than sarl $31, %eax */
     !optimize_function_for_size_p (cfun)
     && REGNO (operands[1]) == AX_REG
     && REGNO (operands[2]) == DX_REG
     && peep2_reg_dead_p (2, operands[1])
     && peep2_reg_dead_p (3, operands[2])
     && !reg_mentioned_p (operands[2], operands[3])"
    [(set (match_dup 0) (match_dup 1))
!    (parallel [(set (match_dup 1) (ashiftrt:SI (match_dup 1) (const_int 31)))
  	      (clobber (reg:CC FLAGS_REG))])
     (set (match_dup 3) (match_dup 1))])
  
  ;; Extend to register case.  Optimize case where source and destination
  ;; registers match and cases where we can use cltd.
  (define_split
!   [(set (match_operand:DI 0 "register_operand")
! 	(sign_extend:DI (match_operand:SI 1 "register_operand")))
     (clobber (reg:CC FLAGS_REG))
!    (clobber (match_scratch:SI 2))]
    "reload_completed"
    [(const_int 0)]
  {
!   split_double_mode (DImode, &operands[0], 1, &operands[3], &operands[4]);
  
    if (REGNO (operands[3]) != REGNO (operands[1]))
      emit_move_insn (operands[3], operands[1]);
  
    /* Generate a cltd if possible and doing so it profitable.  */
    if ((optimize_function_for_size_p (cfun) || TARGET_USE_CLTD)
!       && REGNO (operands[3]) == AX_REG
        && REGNO (operands[4]) == DX_REG)
      {
!       emit_insn (gen_ashrsi3_cvt (operands[4], operands[3], GEN_INT (31)));
        DONE;
      }
  
    if (REGNO (operands[4]) != REGNO (operands[1]))
      emit_move_insn (operands[4], operands[1]);
  
!   emit_insn (gen_ashrsi3_cvt (operands[4], operands[4], GEN_INT (31)));
    DONE;
  })
  
--- 4592,4670 ----
  ;; Peepholes for the case where the source register does die, after
  ;; being split with the above splitter.
  (define_peephole2
!   [(set (match_operand:DWIH 0 "memory_operand")
! 	(match_operand:DWIH 1 "general_reg_operand"))
!    (set (match_operand:DWIH 2 "general_reg_operand") (match_dup 1))
     (parallel [(set (match_dup 2)
! 		   (ashiftrt:DWIH (match_dup 2)
! 				  (match_operand 4 "const_int_operand")))
  	       (clobber (reg:CC FLAGS_REG))])
!    (set (match_operand:DWIH 3 "memory_operand") (match_dup 2))]
    "REGNO (operands[1]) != REGNO (operands[2])
+    && INTVAL (operands[4]) == (<MODE_SIZE> * BITS_PER_UNIT - 1)
     && peep2_reg_dead_p (2, operands[1])
     && peep2_reg_dead_p (4, operands[2])
     && !reg_mentioned_p (operands[2], operands[3])"
    [(set (match_dup 0) (match_dup 1))
!    (parallel [(set (match_dup 1) (ashiftrt:DWIH (match_dup 1) (match_dup 4)))
  	      (clobber (reg:CC FLAGS_REG))])
     (set (match_dup 3) (match_dup 1))])
  
  (define_peephole2
!   [(set (match_operand:DWIH 0 "memory_operand")
! 	(match_operand:DWIH 1 "general_reg_operand"))
!    (parallel [(set (match_operand:DWIH 2 "general_reg_operand")
! 		   (ashiftrt:DWIH (match_dup 1)
! 				  (match_operand 4 "const_int_operand")))
  	       (clobber (reg:CC FLAGS_REG))])
!    (set (match_operand:DWIH 3 "memory_operand") (match_dup 2))]
    "/* cltd is shorter than sarl $31, %eax */
     !optimize_function_for_size_p (cfun)
     && REGNO (operands[1]) == AX_REG
     && REGNO (operands[2]) == DX_REG
+    && INTVAL (operands[4]) == (<MODE_SIZE> * BITS_PER_UNIT - 1)
     && peep2_reg_dead_p (2, operands[1])
     && peep2_reg_dead_p (3, operands[2])
     && !reg_mentioned_p (operands[2], operands[3])"
    [(set (match_dup 0) (match_dup 1))
!    (parallel [(set (match_dup 1) (ashiftrt:DWIH (match_dup 1) (match_dup 4)))
  	      (clobber (reg:CC FLAGS_REG))])
     (set (match_dup 3) (match_dup 1))])
  
  ;; Extend to register case.  Optimize case where source and destination
  ;; registers match and cases where we can use cltd.
  (define_split
!   [(set (match_operand:<DWI> 0 "register_operand")
! 	(sign_extend:<DWI> (match_operand:DWIH 1 "register_operand")))
     (clobber (reg:CC FLAGS_REG))
!    (clobber (match_scratch:DWIH 2))]
    "reload_completed"
    [(const_int 0)]
  {
!   rtx bits = GEN_INT (<MODE_SIZE> * BITS_PER_UNIT - 1);
! 
!   split_double_mode (<DWI>mode, &operands[0], 1, &operands[3], &operands[4]);
  
    if (REGNO (operands[3]) != REGNO (operands[1]))
      emit_move_insn (operands[3], operands[1]);
  
+   rtx src = operands[1];
+   if (REGNO (operands[3]) == AX_REG)
+     src = operands[3];
+ 
    /* Generate a cltd if possible and doing so it profitable.  */
    if ((optimize_function_for_size_p (cfun) || TARGET_USE_CLTD)
!       && REGNO (src) == AX_REG
        && REGNO (operands[4]) == DX_REG)
      {
!       emit_insn (gen_ashr<mode>3_cvt (operands[4], src, bits));
        DONE;
      }
  
    if (REGNO (operands[4]) != REGNO (operands[1]))
      emit_move_insn (operands[4], operands[1]);
  
!   emit_insn (gen_ashr<mode>3_cvt (operands[4], operands[4], bits));
    DONE;
  })
  
***************
*** 4575,4580 ****
--- 4777,4795 ----
       (if_then_else (eq_attr "prefix_0f" "0")
  	(const_string "0")
  	(const_string "1")))])
+ 
+ (define_insn "*extendqi<SWI24:mode>_ext_1"
+   [(set (match_operand:SWI24 0 "register_operand" "=R")
+ 	(sign_extend:SWI24
+ 	  (subreg:QI
+ 	    (zero_extract:SWI248
+ 	      (match_operand 1 "int248_register_operand" "Q")
+ 	      (const_int 8)
+ 	      (const_int 8)) 0)))]
+   ""
+   "movs{b<SWI24:imodesuffix>|x}\t{%h1, %0|%0, %h1}"
+    [(set_attr "type" "imovx")
+     (set_attr "mode" "<SWI24:MODE>")])
  
  ;; Conversions between float and double.
  
***************
*** 4785,4790 ****
--- 5000,5030 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<MODE>")])
  
+ (define_expand "extendbfsf2"
+   [(set (match_operand:SF 0 "register_operand")
+ 	(unspec:SF
+ 	  [(match_operand:BF 1 "register_operand")]
+ 	 UNSPEC_CVTBFSF))]
+  "TARGET_SSE2 && !HONOR_NANS (BFmode)")
+ 
+ ;; Don't use float_extend since psrlld doesn't raise
+ ;; exceptions and turn a sNaN into a qNaN.
+ (define_insn "extendbfsf2_1"
+   [(set (match_operand:SF 0 "register_operand"   "=x,Yw")
+ 	(unspec:SF
+ 	  [(match_operand:BF 1 "register_operand" " 0,Yw")]
+ 	  UNSPEC_CVTBFSF))]
+  "TARGET_SSE2"
+  "@
+   pslld\t{$16, %0|%0, 16}
+   vpslld\t{$16, %1, %0|%0, %1, 16}"
+   [(set_attr "isa" "noavx,avx")
+    (set_attr "type" "sseishft1")
+    (set_attr "length_immediate" "1")
+    (set_attr "prefix_data16" "1,*")
+    (set_attr "prefix" "orig,vex")
+    (set_attr "mode" "TI")
+    (set_attr "memory" "none")])
  
  (define_expand "extend<mode>xf2"
    [(set (match_operand:XF 0 "nonimmediate_operand")
***************
*** 5001,5007 ****
    [(set_attr "type" "ssecvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "HF")])
! 
  ;; Signed conversion to DImode.
  
  (define_expand "fix_truncxfdi2"
--- 5241,5259 ----
    [(set_attr "type" "ssecvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "HF")])
! 
! (define_insn "truncsfbf2"
!   [(set (match_operand:BF 0 "register_operand" "=x, v")
! 	(float_truncate:BF
! 	  (match_operand:SF 1 "register_operand" "x,v")))]
!   "((TARGET_AVX512BF16 && TARGET_AVX512VL) || TARGET_AVXNECONVERT)
!    && !HONOR_NANS (BFmode) && flag_unsafe_math_optimizations"
!   "@
!   %{vex%} vcvtneps2bf16\t{%1, %0|%0, %1}
!   vcvtneps2bf16\t{%1, %0|%0, %1}"
!   [(set_attr "isa" "avxneconvert,avx512bf16vl")
!    (set_attr "prefix" "vex,evex")])
! 
  ;; Signed conversion to DImode.
  
  (define_expand "fix_truncxfdi2"
***************
*** 5734,5744 ****
    split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
    if (operands[2] == const0_rtx)
      {
!       ix86_expand_binary_operator (PLUS, <MODE>mode, &operands[3]);
        DONE;
      }
  })
  
  (define_insn "*add<mode>_1"
    [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r")
  	(plus:SWI48
--- 5986,6026 ----
    split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
    if (operands[2] == const0_rtx)
      {
!       if (operands[5] != const0_rtx)
! 	ix86_expand_binary_operator (PLUS, <MODE>mode, &operands[3]);
!       else if (!rtx_equal_p (operands[3], operands[4]))
! 	emit_move_insn (operands[3], operands[4]);
!       else
! 	emit_note (NOTE_INSN_DELETED);
        DONE;
      }
  })
  
+ (define_insn_and_split "*add<dwi>3_doubleword_zext"
+   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o")
+ 	(plus:<DWI>
+ 	  (zero_extend:<DWI>
+ 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r")) 
+ 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0")))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands)"
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (reg:CCC FLAGS_REG)
+ 		   (compare:CCC
+ 		     (plus:DWIH (match_dup 1) (match_dup 2))
+ 		     (match_dup 1)))
+ 	      (set (match_dup 0)
+ 		   (plus:DWIH (match_dup 1) (match_dup 2)))])
+    (parallel [(set (match_dup 3)
+ 		   (plus:DWIH
+ 		     (plus:DWIH
+ 		       (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0))
+ 		       (match_dup 4))
+ 		     (const_int 0)))
+ 	      (clobber (reg:CC FLAGS_REG))])]
+  "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[3]);")
+ 
  (define_insn "*add<mode>_1"
    [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,r,r")
  	(plus:SWI48
***************
*** 6282,6288 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (match_operand:SWI124 1 "nonimmediate_operand" "0")
! 	  (match_operand:SWI124 2 "const_int_operand" "n")))
     (clobber (match_scratch:SWI124 0 "=<r>"))]
    "ix86_match_ccmode (insn, CCGCmode)"
  {
--- 6564,6570 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (match_operand:SWI124 1 "nonimmediate_operand" "0")
! 	  (match_operand:SWI124 2 "const_int_operand")))
     (clobber (match_scratch:SWI124 0 "=<r>"))]
    "ix86_match_ccmode (insn, CCGCmode)"
  {
***************
*** 6359,6364 ****
--- 6641,6662 ----
  	(const_string "*")))
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "*addqi_ext<mode>_0"
+   [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ 	(plus:QI
+ 	  (subreg:QI
+ 	    (zero_extract:SWI248
+ 	      (match_operand 2 "int248_register_operand" "Q,Q")
+ 	      (const_int 8)
+ 	      (const_int 8)) 0)
+ 	  (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")))
+    (clobber (reg:CC FLAGS_REG))]
+   ""
+   "add{b}\t{%h2, %0|%0, %h2}"
+   [(set_attr "isa" "*,nox64")
+    (set_attr "type" "alu")
+    (set_attr "mode" "QI")])
+ 
  (define_expand "addqi_ext_1"
    [(parallel
       [(set (zero_extract:HI (match_operand:HI 0 "register_operand")
***************
*** 6375,6391 ****
  
  (define_insn "*addqi_ext<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (plus:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_operand" "QnBc,m")) 0))
     (clobber (reg:CC FLAGS_REG))]
    "/* FIXME: without this LRA can't reload this pattern, see PR82524.  */
     rtx_equal_p (operands[0], operands[1])"
--- 6673,6689 ----
  
  (define_insn "*addqi_ext<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (plus:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m")) 0))
     (clobber (reg:CC FLAGS_REG))]
    "/* FIXME: without this LRA can't reload this pattern, see PR82524.  */
     rtx_equal_p (operands[0], operands[1])"
***************
*** 6414,6432 ****
  
  (define_insn "*addqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (plus:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "%0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 2 "register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
    (clobber (reg:CC FLAGS_REG))]
--- 6712,6730 ----
  
  (define_insn "*addqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (plus:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "%0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 2 "int248_register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
    (clobber (reg:CC FLAGS_REG))]
***************
*** 6488,6494 ****
  	(eq:CCO (plus:<DWI>
  		   (sign_extend:<DWI>
  		      (match_operand:SWI 1 "nonimmediate_operand" "0"))
! 		   (match_operand:<DWI> 3 "const_int_operand" "i"))
  		(sign_extend:<DWI>
  		   (plus:SWI
  		     (match_dup 1)
--- 6786,6792 ----
  	(eq:CCO (plus:<DWI>
  		   (sign_extend:<DWI>
  		      (match_operand:SWI 1 "nonimmediate_operand" "0"))
! 		   (match_operand:<DWI> 3 "const_int_operand"))
  		(sign_extend:<DWI>
  		   (plus:SWI
  		     (match_dup 1)
***************
*** 6561,6567 ****
  	  (plus:<QPWI>
  	    (sign_extend:<QPWI>
  	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0"))
! 	    (match_operand:<QPWI> 3 "const_scalar_int_operand" ""))
  	  (sign_extend:<QPWI>
  	    (plus:<DWI>
  	      (match_dup 1)
--- 6859,6865 ----
  	  (plus:<QPWI>
  	    (sign_extend:<QPWI>
  	      (match_operand:<DWI> 1 "nonimmediate_operand" "%0"))
! 	    (match_operand:<QPWI> 3 "const_scalar_int_operand" "n"))
  	  (sign_extend:<QPWI>
  	    (plus:<DWI>
  	      (match_dup 1)
***************
*** 6646,6652 ****
  		[(match_operand 3 "flags_reg_operand") (const_int 0)])
  	      (sign_extend:<DWI>
  		(match_operand:SWI 1 "nonimmediate_operand" "%0")))
! 	    (match_operand:<DWI> 6 "const_int_operand" ""))
  	  (sign_extend:<DWI>
  	    (plus:SWI
  	      (plus:SWI
--- 6944,6950 ----
  		[(match_operand 3 "flags_reg_operand") (const_int 0)])
  	      (sign_extend:<DWI>
  		(match_operand:SWI 1 "nonimmediate_operand" "%0")))
! 	    (match_operand:<DWI> 6 "const_int_operand" "n"))
  	  (sign_extend:<DWI>
  	    (plus:SWI
  	      (plus:SWI
***************
*** 6811,6818 ****
  	(any_or:SWI12
  	  (ashift:SWI12
  	    (match_operand:SWI12 1 "index_register_operand" "l")
! 	    (match_operand 2 "const_0_to_3_operand" "n"))
! 	  (match_operand 3 "const_int_operand" "n")))]
    "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
     && ((unsigned HOST_WIDE_INT) INTVAL (operands[3])
         < (HOST_WIDE_INT_1U << INTVAL (operands[2])))"
--- 7109,7116 ----
  	(any_or:SWI12
  	  (ashift:SWI12
  	    (match_operand:SWI12 1 "index_register_operand" "l")
! 	    (match_operand 2 "const_0_to_3_operand"))
! 	  (match_operand 3 "const_int_operand")))]
    "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
     && ((unsigned HOST_WIDE_INT) INTVAL (operands[3])
         < (HOST_WIDE_INT_1U << INTVAL (operands[2])))"
***************
*** 6835,6842 ****
  	(any_or:SWI48
  	  (ashift:SWI48
  	    (match_operand:SWI48 1 "index_register_operand" "l")
! 	    (match_operand 2 "const_0_to_3_operand" "n"))
! 	  (match_operand 3 "const_int_operand" "n")))]
    "(unsigned HOST_WIDE_INT) INTVAL (operands[3])
     < (HOST_WIDE_INT_1U << INTVAL (operands[2]))"
    "#"
--- 7133,7140 ----
  	(any_or:SWI48
  	  (ashift:SWI48
  	    (match_operand:SWI48 1 "index_register_operand" "l")
! 	    (match_operand 2 "const_0_to_3_operand"))
! 	  (match_operand 3 "const_int_operand")))]
    "(unsigned HOST_WIDE_INT) INTVAL (operands[3])
     < (HOST_WIDE_INT_1U << INTVAL (operands[2]))"
    "#"
***************
*** 6887,6892 ****
--- 7185,7213 ----
      }
  })
  
+ (define_insn_and_split "*sub<dwi>3_doubleword_zext"
+   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o")
+ 	(minus:<DWI>
+ 	  (match_operand:<DWI> 1 "nonimmediate_operand" "0,0")
+ 	  (zero_extend:<DWI>
+ 	    (match_operand:DWIH 2 "nonimmediate_operand" "rm,r"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_binary_operator_ok (UNKNOWN, <DWI>mode, operands)"
+   "#"
+   "&& reload_completed"
+   [(parallel [(set (reg:CC FLAGS_REG)
+ 		   (compare:CC (match_dup 1) (match_dup 2)))
+ 	      (set (match_dup 0)
+ 		   (minus:DWIH (match_dup 1) (match_dup 2)))])
+    (parallel [(set (match_dup 3)
+ 		   (minus:DWIH
+ 		     (minus:DWIH
+ 		       (match_dup 4)
+ 		       (ltu:DWIH (reg:CC FLAGS_REG) (const_int 0)))
+ 		     (const_int 0)))
+ 	      (clobber (reg:CC FLAGS_REG))])]
+   "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[3]);")
+ 
  (define_insn "*sub<mode>_1"
    [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m,<r>")
  	(minus:SWI
***************
*** 6960,6980 ****
    [(set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
  (define_insn "*subqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (minus:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 2 "register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
    (clobber (reg:CC FLAGS_REG))]
--- 7281,7317 ----
    [(set_attr "type" "alu")
     (set_attr "mode" "SI")])
  
+ (define_insn "*subqi_ext<mode>_0"
+   [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ 	(minus:QI
+ 	  (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")
+ 	  (subreg:QI
+ 	    (zero_extract:SWI248
+ 	      (match_operand 2 "int248_register_operand" "Q,Q")
+ 	      (const_int 8)
+ 	      (const_int 8)) 0)))
+    (clobber (reg:CC FLAGS_REG))]
+   ""
+   "sub{b}\t{%h2, %0|%0, %h2}"
+   [(set_attr "isa" "*,nox64")
+    (set_attr "type" "alu")
+    (set_attr "mode" "QI")])
+ 
  (define_insn "*subqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (minus:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 2 "int248_register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
    (clobber (reg:CC FLAGS_REG))]
***************
*** 7032,7038 ****
  	(eq:CCO (minus:<DWI>
  		   (sign_extend:<DWI>
  		      (match_operand:SWI 1 "nonimmediate_operand" "0"))
! 		   (match_operand:<DWI> 3 "const_int_operand" "i"))
  		(sign_extend:<DWI>
  		   (minus:SWI
  		     (match_dup 1)
--- 7369,7375 ----
  	(eq:CCO (minus:<DWI>
  		   (sign_extend:<DWI>
  		      (match_operand:SWI 1 "nonimmediate_operand" "0"))
! 		   (match_operand:<DWI> 3 "const_int_operand"))
  		(sign_extend:<DWI>
  		   (minus:SWI
  		     (match_dup 1)
***************
*** 7100,7106 ****
  	  (minus:<QPWI>
  	    (sign_extend:<QPWI>
  	      (match_operand:<DWI> 1 "nonimmediate_operand" "0"))
! 	    (match_operand:<QPWI> 3 "const_scalar_int_operand" ""))
  	  (sign_extend:<QPWI>
  	    (minus:<DWI>
  	      (match_dup 1)
--- 7437,7443 ----
  	  (minus:<QPWI>
  	    (sign_extend:<QPWI>
  	      (match_operand:<DWI> 1 "nonimmediate_operand" "0"))
! 	    (match_operand:<QPWI> 3 "const_scalar_int_operand"))
  	  (sign_extend:<QPWI>
  	    (minus:<DWI>
  	      (match_dup 1)
***************
*** 7183,7189 ****
  		(match_operand:SWI 1 "nonimmediate_operand" "%0"))
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
! 	    (match_operand:<DWI> 6 "const_int_operand" ""))
  	  (sign_extend:<DWI>
  	    (minus:SWI
  	      (minus:SWI
--- 7520,7526 ----
  		(match_operand:SWI 1 "nonimmediate_operand" "%0"))
  	      (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  		[(match_operand 3 "flags_reg_operand") (const_int 0)]))
! 	    (match_operand:<DWI> 6 "const_int_operand" "n"))
  	  (sign_extend:<DWI>
  	    (minus:SWI
  	      (minus:SWI
***************
*** 7453,7459 ****
  		(match_operand:SWI48 1 "nonimmediate_operand" "%0"))
  	      (match_operand:SWI48 2 "x86_64_immediate_operand" "e")))
  	  (plus:<DWI>
! 	    (match_operand:<DWI> 6 "const_scalar_int_operand" "")
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_dup 3) (const_int 0)]))))
     (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm")
--- 7790,7796 ----
  		(match_operand:SWI48 1 "nonimmediate_operand" "%0"))
  	      (match_operand:SWI48 2 "x86_64_immediate_operand" "e")))
  	  (plus:<DWI>
! 	    (match_operand:<DWI> 6 "const_scalar_int_operand")
  	    (match_operator:<DWI> 4 "ix86_carry_flag_operator"
  	      [(match_dup 3) (const_int 0)]))))
     (set (match_operand:SWI48 0 "nonimmediate_operand" "=rm")
***************
*** 8447,8455 ****
  	  (lshiftrt:<DWI>
  	    (mult:<DWI> (zero_extend:<DWI> (match_dup 2))
  			(zero_extend:<DWI> (match_dup 3)))
! 	    (match_operand:QI 4 "const_int_operand" "n"))))]
    "TARGET_BMI2 && INTVAL (operands[4]) == <MODE_SIZE> * BITS_PER_UNIT
!    && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "mulx\t{%3, %0, %1|%1, %0, %3}"
    [(set_attr "type" "imulx")
     (set_attr "prefix" "vex")
--- 8784,8792 ----
  	  (lshiftrt:<DWI>
  	    (mult:<DWI> (zero_extend:<DWI> (match_dup 2))
  			(zero_extend:<DWI> (match_dup 3)))
! 	    (match_operand:QI 4 "const_int_operand"))))]
    "TARGET_BMI2 && INTVAL (operands[4]) == <MODE_SIZE> * BITS_PER_UNIT
!    && !(MEM_P (operands[2]) && MEM_P (operands[3]))"
    "mulx\t{%3, %0, %1|%1, %0, %3}"
    [(set_attr "type" "imulx")
     (set_attr "prefix" "vex")
***************
*** 9081,9087 ****
  (define_insn_and_split "*udivmod<mode>4_pow2"
    [(set (match_operand:SWI48 0 "register_operand" "=r")
  	(udiv:SWI48 (match_operand:SWI48 2 "register_operand" "0")
! 		    (match_operand:SWI48 3 "const_int_operand" "n")))
     (set (match_operand:SWI48 1 "register_operand" "=r")
  	(umod:SWI48 (match_dup 2) (match_dup 3)))
     (clobber (reg:CC FLAGS_REG))]
--- 9418,9424 ----
  (define_insn_and_split "*udivmod<mode>4_pow2"
    [(set (match_operand:SWI48 0 "register_operand" "=r")
  	(udiv:SWI48 (match_operand:SWI48 2 "register_operand" "0")
! 		    (match_operand:SWI48 3 "const_int_operand")))
     (set (match_operand:SWI48 1 "register_operand" "=r")
  	(umod:SWI48 (match_dup 2) (match_dup 3)))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 9162,9168 ****
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	  (udiv:SI (match_operand:SI 2 "register_operand" "0")
! 		   (match_operand:SI 3 "const_int_operand" "n"))))
     (set (match_operand:SI 1 "register_operand" "=r")
  	(umod:SI (match_dup 2) (match_dup 3)))
     (clobber (reg:CC FLAGS_REG))]
--- 9499,9505 ----
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	  (udiv:SI (match_operand:SI 2 "register_operand" "0")
! 		   (match_operand:SI 3 "const_int_operand"))))
     (set (match_operand:SI 1 "register_operand" "=r")
  	(umod:SI (match_dup 2) (match_dup 3)))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 9246,9252 ****
    [(set (match_operand:DI 1 "register_operand" "=r")
  	(zero_extend:DI
  	  (umod:SI (match_operand:SI 2 "register_operand" "0")
! 		   (match_operand:SI 3 "const_int_operand" "n"))))
     (set (match_operand:SI 0 "register_operand" "=r")
  	(udiv:SI (match_dup 2) (match_dup 3)))
     (clobber (reg:CC FLAGS_REG))]
--- 9583,9589 ----
    [(set (match_operand:DI 1 "register_operand" "=r")
  	(zero_extend:DI
  	  (umod:SI (match_operand:SI 2 "register_operand" "0")
! 		   (match_operand:SI 3 "const_int_operand"))))
     (set (match_operand:SI 0 "register_operand" "=r")
  	(udiv:SI (match_dup 2) (match_dup 3)))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 9313,9319 ****
  ;; Avoid sign-extension (using cdq) for constant numerators.
  (define_insn_and_split "*divmodsi4_const"
    [(set (match_operand:SI 0 "register_operand" "=&a")
! 	(div:SI (match_operand:SI 2 "const_int_operand" "n")
  		(match_operand:SI 3 "nonimmediate_operand" "rm")))
     (set (match_operand:SI 1 "register_operand" "=&d")
  	(mod:SI (match_dup 2) (match_dup 3)))
--- 9650,9656 ----
  ;; Avoid sign-extension (using cdq) for constant numerators.
  (define_insn_and_split "*divmodsi4_const"
    [(set (match_operand:SI 0 "register_operand" "=&a")
! 	(div:SI (match_operand:SI 2 "const_int_operand")
  		(match_operand:SI 3 "nonimmediate_operand" "rm")))
     (set (match_operand:SI 1 "register_operand" "=&d")
  	(mod:SI (match_dup 2) (match_dup 3)))
***************
*** 9503,9516 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (and:QI
! 	    (match_operand:QI 0 "nonimmediate_operand" "%qm,*a,qm,r")
! 	    (match_operand:QI 1 "nonmemory_operand" "q,n,n,n"))
  	  (const_int 0)))]
    "ix86_match_ccmode (insn,
  		      CONST_INT_P (operands[1])
  		      && INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode)"
  {
!   if (which_alternative == 3)
      {
        if (CONST_INT_P (operands[1]) && INTVAL (operands[1]) < 0)
  	operands[1] = GEN_INT (INTVAL (operands[1]) & 0xff);
--- 9840,9853 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (and:QI
! 	    (match_operand:QI 0 "nonimmediate_operand" "%qm,qm,r")
! 	    (match_operand:QI 1 "nonmemory_operand" "q,n,n"))
  	  (const_int 0)))]
    "ix86_match_ccmode (insn,
  		      CONST_INT_P (operands[1])
  		      && INTVAL (operands[1]) >= 0 ? CCNOmode : CCZmode)"
  {
!   if (get_attr_mode (insn) == MODE_SI)
      {
        if (CONST_INT_P (operands[1]) && INTVAL (operands[1]) < 0)
  	operands[1] = GEN_INT (INTVAL (operands[1]) & 0xff);
***************
*** 9519,9526 ****
    return "test{b}\t{%1, %0|%0, %1}";
  }
    [(set_attr "type" "test")
!    (set_attr "mode" "QI,QI,QI,SI")
!    (set_attr "pent_pair" "uv,uv,np,np")])
  
  (define_insn "*test<mode>_1"
    [(set (reg FLAGS_REG)
--- 9856,9871 ----
    return "test{b}\t{%1, %0|%0, %1}";
  }
    [(set_attr "type" "test")
!    (set (attr "mode")
!      (cond [(eq_attr "alternative" "2")
! 	      (const_string "SI")
! 	    (and (match_test "optimize_insn_for_size_p ()")
! 		 (and (match_operand 0 "ext_QIreg_operand")
! 		      (match_operand 1 "const_0_to_127_operand")))
! 	      (const_string "SI")
! 	   ]
! 	   (const_string "QI")))
!    (set_attr "pent_pair" "uv,np,np")])
  
  (define_insn "*test<mode>_1"
    [(set (reg FLAGS_REG)
***************
*** 9553,9562 ****
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 0 "register_operand" "Q,Q")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 1 "general_operand" "QnBc,m"))
  	  (const_int 0)))]
    "ix86_match_ccmode (insn, CCNOmode)"
    "test{b}\t{%1, %h0|%h0, %1}"
--- 9898,9907 ----
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 0 "int248_register_operand" "Q,Q")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 1 "general_x64constmem_operand" "QnBc,m"))
  	  (const_int 0)))]
    "ix86_match_ccmode (insn, CCNOmode)"
    "test{b}\t{%1, %h0|%h0, %1}"
***************
*** 9570,9581 ****
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 0 "register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0))
  	  (const_int 0)))]
--- 9915,9926 ----
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 0 "int248_register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0))
  	  (const_int 0)))]
***************
*** 9584,9597 ****
    [(set_attr "type" "test")
     (set_attr "mode" "QI")])
  
  ;; Combine likes to form bit extractions for some tests.  Humor it.
  (define_insn_and_split "*testqi_ext_3"
    [(set (match_operand 0 "flags_reg_operand")
          (match_operator 1 "compare_operator"
  	  [(zero_extract:SWI248
  	     (match_operand 2 "int_nonimmediate_operand" "rm")
! 	     (match_operand 3 "const_int_operand" "n")
! 	     (match_operand 4 "const_int_operand" "n"))
  	   (const_int 0)]))]
    "/* Ensure that resulting mask is zero or sign extended operand.  */
     INTVAL (operands[4]) >= 0
--- 9929,9963 ----
    [(set_attr "type" "test")
     (set_attr "mode" "QI")])
  
+ ;; Provide a *testti instruction that STV can implement using ptest.
+ ;; This pattern splits into *andti3_doubleword and *cmpti_doubleword.
+ (define_insn_and_split "*testti_doubleword"
+   [(set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ
+ 	  (and:TI (match_operand:TI 0 "register_operand")
+ 		  (match_operand:TI 1 "general_operand"))
+ 	  (const_int 0)))]
+   "TARGET_64BIT
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(parallel [(set (match_dup 2) (and:TI (match_dup 0) (match_dup 1)))
+               (clobber (reg:CC FLAGS_REG))])
+    (set (reg:CCZ FLAGS_REG) (compare:CCZ (match_dup 2) (const_int 0)))]
+ {
+   operands[2] = gen_reg_rtx (TImode);
+   if (!x86_64_hilo_general_operand (operands[1], TImode))
+     operands[1] = force_reg (TImode, operands[1]);
+ })
+ 
  ;; Combine likes to form bit extractions for some tests.  Humor it.
  (define_insn_and_split "*testqi_ext_3"
    [(set (match_operand 0 "flags_reg_operand")
          (match_operator 1 "compare_operator"
  	  [(zero_extract:SWI248
  	     (match_operand 2 "int_nonimmediate_operand" "rm")
! 	     (match_operand 3 "const_int_operand")
! 	     (match_operand 4 "const_int_operand"))
  	   (const_int 0)]))]
    "/* Ensure that resulting mask is zero or sign extended operand.  */
     INTVAL (operands[4]) >= 0
***************
*** 9692,9697 ****
--- 10058,10102 ----
    operands[2] = gen_rtx_AND (mode, val, immed_wide_int_const (mask, mode));
  })
  
+ ;; Split and;cmp (as optimized by combine) into not;test
+ ;; Except when TARGET_BMI provides andn (*andn_<mode>_ccno).
+ (define_insn_and_split "*test<mode>_not"
+   [(set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ
+ 	  (and:SWI
+ 	    (not:SWI (match_operand:SWI 0 "register_operand"))
+ 	    (match_operand:SWI 1 "<nonmemory_szext_operand>"))
+ 	  (const_int 0)))]
+   "ix86_pre_reload_split ()
+    && (!TARGET_BMI || !REG_P (operands[1]))"
+   "#"
+   "&& 1"
+   [(set (match_dup 2) (not:SWI (match_dup 0)))
+    (set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ (and:SWI (match_dup 2) (match_dup 1))
+ 		     (const_int 0)))]
+   "operands[2] = gen_reg_rtx (<MODE>mode);")
+ 
+ ;; Split and;cmp (as optimized by combine) into andn;cmp $0
+ (define_insn_and_split "*test<mode>_not_doubleword"
+   [(set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ
+ 	  (and:DWI
+ 	    (not:DWI (match_operand:DWI 0 "nonimmediate_operand"))
+ 	    (match_operand:DWI 1 "nonimmediate_operand"))
+ 	  (const_int 0)))]
+   "ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(parallel
+       [(set (match_dup 2) (and:DWI (not:DWI (match_dup 0)) (match_dup 1)))
+        (clobber (reg:CC FLAGS_REG))])
+    (set (reg:CCZ FLAGS_REG) (compare:CCZ (match_dup 2) (const_int 0)))]
+ {
+   operands[0] = force_reg (<MODE>mode, operands[0]);
+   operands[2] = gen_reg_rtx (<MODE>mode);
+ })
+ 
  ;; Convert HImode/SImode test instructions with immediate to QImode ones.
  ;; i386 does not allow to encode test with 8bit sign extended immediate, so
  ;; this is relatively important trick.
***************
*** 9713,9725 ****
  	(match_op_dup 1
  	  [(and:QI
  	     (subreg:QI
! 	       (zero_extract:SI (match_dup 2)
  				(const_int 8)
  				(const_int 8)) 0)
  	     (match_dup 3))
  	   (const_int 0)]))]
  {
!   operands[2] = gen_lowpart (SImode, operands[2]);
    operands[3] = gen_int_mode (INTVAL (operands[3]) >> 8, QImode);
  })
  
--- 10118,10130 ----
  	(match_op_dup 1
  	  [(and:QI
  	     (subreg:QI
! 	       (zero_extract:HI (match_dup 2)
  				(const_int 8)
  				(const_int 8)) 0)
  	     (match_dup 3))
  	   (const_int 0)]))]
  {
!   operands[2] = gen_lowpart (HImode, operands[2]);
    operands[3] = gen_int_mode (INTVAL (operands[3]) >> 8, QImode);
  })
  
***************
*** 9749,9767 ****
  ;; it should be done with splitters.
  
  (define_expand "and<mode>3"
!   [(set (match_operand:SWIM1248x 0 "nonimmediate_operand")
! 	(and:SWIM1248x (match_operand:SWIM1248x 1 "nonimmediate_operand")
! 		       (match_operand:SWIM1248x 2 "<general_szext_operand>")))]
    ""
  {
    machine_mode mode = <MODE>mode;
  
!   if (<MODE>mode == DImode && !TARGET_64BIT)
!     ;
!   else if (const_int_operand (operands[2], <MODE>mode)
! 	   && register_operand (operands[0], <MODE>mode)
! 	   && !(TARGET_ZERO_EXTEND_WITH_AND
! 		&& optimize_function_for_speed_p (cfun)))
      {
        unsigned HOST_WIDE_INT ival = UINTVAL (operands[2]);
  
--- 10154,10175 ----
  ;; it should be done with splitters.
  
  (define_expand "and<mode>3"
!   [(set (match_operand:SDWIM 0 "nonimmediate_operand")
! 	(and:SDWIM (match_operand:SDWIM 1 "nonimmediate_operand")
! 		   (match_operand:SDWIM 2 "<general_szext_operand>")))]
    ""
  {
    machine_mode mode = <MODE>mode;
  
!   if (GET_MODE_SIZE (<MODE>mode) > UNITS_PER_WORD
!       && !x86_64_hilo_general_operand (operands[2], <MODE>mode))
!     operands[2] = force_reg (<MODE>mode, operands[2]);
! 
!   if (GET_MODE_SIZE (<MODE>mode) <= UNITS_PER_WORD
!       && const_int_operand (operands[2], <MODE>mode)
!       && register_operand (operands[0], <MODE>mode)
!       && !(TARGET_ZERO_EXTEND_WITH_AND
! 	   && optimize_function_for_speed_p (cfun)))
      {
        unsigned HOST_WIDE_INT ival = UINTVAL (operands[2]);
  
***************
*** 9783,9816 ****
    DONE;
  })
  
! (define_insn_and_split "*anddi3_doubleword"
!   [(set (match_operand:DI 0 "nonimmediate_operand")
! 	(and:DI
! 	 (match_operand:DI 1 "nonimmediate_operand")
! 	 (match_operand:DI 2 "x86_64_szext_general_operand")))
     (clobber (reg:CC FLAGS_REG))]
!   "!TARGET_64BIT
!    && ix86_binary_operator_ok (AND, DImode, operands)
!    && ix86_pre_reload_split ()"
    "#"
!   "&& 1"
!   [(const_int 0)]
  {
!   split_double_mode (DImode, &operands[0], 3, &operands[0], &operands[3]);
  
    if (operands[2] == const0_rtx)
      emit_move_insn (operands[0], const0_rtx);
    else if (operands[2] == constm1_rtx)
!     emit_move_insn (operands[0], operands[1]);
    else
!     emit_insn (gen_andsi3 (operands[0], operands[1], operands[2]));
  
    if (operands[5] == const0_rtx)
      emit_move_insn (operands[3], const0_rtx);
    else if (operands[5] == constm1_rtx)
!     emit_move_insn (operands[3], operands[4]);
    else
!     emit_insn (gen_andsi3 (operands[3], operands[4], operands[5]));
  
    DONE;
  })
--- 10191,10227 ----
    DONE;
  })
  
! (define_insn_and_split "*and<dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r")
! 	(and:<DWI>
! 	 (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0")
! 	 (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
!   "ix86_binary_operator_ok (AND, <DWI>mode, operands)"
    "#"
!   "&& reload_completed"
!   [(const_int:DWIH 0)]
  {
!   bool emit_insn_deleted_note_p = false;
! 
!   split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
  
    if (operands[2] == const0_rtx)
      emit_move_insn (operands[0], const0_rtx);
    else if (operands[2] == constm1_rtx)
!     emit_insn_deleted_note_p = true;
    else
!     ix86_expand_binary_operator (AND, <MODE>mode, &operands[0]);
  
    if (operands[5] == const0_rtx)
      emit_move_insn (operands[3], const0_rtx);
    else if (operands[5] == constm1_rtx)
!     {
!       if (emit_insn_deleted_note_p)
! 	emit_note (NOTE_INSN_DELETED);
!     }
    else
!     ix86_expand_binary_operator (AND, <MODE>mode, &operands[3]);
  
    DONE;
  })
***************
*** 10038,10058 ****
    "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
     && reload_completed"
    [(parallel
!      [(set (zero_extract:SI (match_dup 0)
  			    (const_int 8)
  			    (const_int 8))
! 	   (subreg:SI
  	     (xor:QI
  	       (subreg:QI
! 		 (zero_extract:SI (match_dup 0)
  				  (const_int 8)
  				  (const_int 8)) 0)
  	       (subreg:QI
! 		 (zero_extract:SI (match_dup 0)
  				  (const_int 8)
  				  (const_int 8)) 0)) 0))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[0] = gen_lowpart (SImode, operands[0]);")
  
  (define_insn "*anddi_2"
    [(set (reg FLAGS_REG)
--- 10449,10469 ----
    "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
     && reload_completed"
    [(parallel
!      [(set (zero_extract:HI (match_dup 0)
  			    (const_int 8)
  			    (const_int 8))
! 	   (subreg:HI
  	     (xor:QI
  	       (subreg:QI
! 		 (zero_extract:HI (match_dup 0)
  				  (const_int 8)
  				  (const_int 8)) 0)
  	       (subreg:QI
! 		 (zero_extract:HI (match_dup 0)
  				  (const_int 8)
  				  (const_int 8)) 0)) 0))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[0] = gen_lowpart (HImode, operands[0]);")
  
  (define_insn "*anddi_2"
    [(set (reg FLAGS_REG)
***************
*** 10111,10117 ****
  			 CONST_INT_P (operands[2])
  			 && INTVAL (operands[2]) >= 0 ? CCNOmode : CCZmode)"
  {
!   if (which_alternative == 2)
      {
        if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) < 0)
          operands[2] = GEN_INT (INTVAL (operands[2]) & 0xff);
--- 10522,10528 ----
  			 CONST_INT_P (operands[2])
  			 && INTVAL (operands[2]) >= 0 ? CCNOmode : CCZmode)"
  {
!   if (get_attr_mode (insn) == MODE_SI)
      {
        if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) < 0)
          operands[2] = GEN_INT (INTVAL (operands[2]) & 0xff);
***************
*** 10120,10126 ****
    return "and{b}\t{%2, %0|%0, %2}";
  }
    [(set_attr "type" "alu")
!    (set_attr "mode" "QI,QI,SI")
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
--- 10531,10545 ----
    return "and{b}\t{%2, %0|%0, %2}";
  }
    [(set_attr "type" "alu")
!    (set (attr "mode")
!      (cond [(eq_attr "alternative" "2")
! 	      (const_string "SI")
! 	    (and (match_test "optimize_insn_for_size_p ()")
! 		 (and (match_operand 0 "ext_QIreg_operand")
! 		      (match_operand 2 "const_0_to_127_operand")))
! 	      (const_string "SI")
! 	   ]
! 	   (const_string "QI")))
     ;; Potential partial reg stall on alternative 2.
     (set (attr "preferred_for_speed")
       (cond [(eq_attr "alternative" "2")
***************
*** 10141,10146 ****
--- 10560,10581 ----
    [(set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "*andqi_ext<mode>_0"
+   [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ 	(and:QI
+ 	  (subreg:QI
+ 	    (zero_extract:SWI248
+ 	      (match_operand 2 "int248_register_operand" "Q,Q")
+ 	      (const_int 8)
+ 	      (const_int 8)) 0)
+ 	  (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")))
+    (clobber (reg:CC FLAGS_REG))]
+   ""
+   "and{b}\t{%h2, %0|%0, %h2}"
+   [(set_attr "isa" "*,nox64")
+    (set_attr "type" "alu")
+    (set_attr "mode" "QI")])
+ 
  (define_expand "andqi_ext_1"
    [(parallel
       [(set (zero_extract:HI (match_operand:HI 0 "register_operand")
***************
*** 10157,10173 ****
  
  (define_insn "*andqi_ext<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_operand" "QnBc,m")) 0))
     (clobber (reg:CC FLAGS_REG))]
    "/* FIXME: without this LRA can't reload this pattern, see PR82524.  */
     rtx_equal_p (operands[0], operands[1])"
--- 10592,10608 ----
  
  (define_insn "*andqi_ext<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m")) 0))
     (clobber (reg:CC FLAGS_REG))]
    "/* FIXME: without this LRA can't reload this pattern, see PR82524.  */
     rtx_equal_p (operands[0], operands[1])"
***************
*** 10184,10196 ****
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_operand" "QnBc,m"))
  	  (const_int 0)))
     (set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
--- 10619,10631 ----
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m"))
  	  (const_int 0)))
     (set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
***************
*** 10211,10229 ****
  
  (define_insn "*andqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "%0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 2 "register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
     (clobber (reg:CC FLAGS_REG))]
--- 10646,10664 ----
  
  (define_insn "*andqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (and:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "%0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 2 "int248_register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 10248,10267 ****
      && (!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
      && !(~INTVAL (operands[2]) & ~(255 << 8))"
    [(parallel
!      [(set (zero_extract:SI (match_dup 0)
  			    (const_int 8)
  			    (const_int 8))
! 	   (subreg:SI
  	     (and:QI
  	       (subreg:QI
! 		 (zero_extract:SI (match_dup 1)
  				  (const_int 8)
  				  (const_int 8)) 0)
  	       (match_dup 2)) 0))
        (clobber (reg:CC FLAGS_REG))])]
  {
!   operands[0] = gen_lowpart (SImode, operands[0]);
!   operands[1] = gen_lowpart (SImode, operands[1]);
    operands[2] = gen_int_mode (INTVAL (operands[2]) >> 8, QImode);
  })
  
--- 10683,10702 ----
      && (!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
      && !(~INTVAL (operands[2]) & ~(255 << 8))"
    [(parallel
!      [(set (zero_extract:HI (match_dup 0)
  			    (const_int 8)
  			    (const_int 8))
! 	   (subreg:HI
  	     (and:QI
  	       (subreg:QI
! 		 (zero_extract:HI (match_dup 1)
  				  (const_int 8)
  				  (const_int 8)) 0)
  	       (match_dup 2)) 0))
        (clobber (reg:CC FLAGS_REG))])]
  {
!   operands[0] = gen_lowpart (HImode, operands[0]);
!   operands[1] = gen_lowpart (HImode, operands[1]);
    operands[2] = gen_int_mode (INTVAL (operands[2]) >> 8, QImode);
  })
  
***************
*** 10286,10339 ****
    operands[2] = gen_int_mode (INTVAL (operands[2]), QImode);
  })
  
! (define_insn "*andndi3_doubleword"
!   [(set (match_operand:DI 0 "register_operand")
! 	(and:DI
! 	  (not:DI (match_operand:DI 1 "register_operand"))
! 	  (match_operand:DI 2 "nonimmediate_operand")))
!    (clobber (reg:CC FLAGS_REG))]
!   "!TARGET_64BIT && TARGET_STV && TARGET_SSE2
!    && ix86_pre_reload_split ()"
!   "#")
! 
! (define_split
!   [(set (match_operand:DI 0 "register_operand")
! 	(and:DI
! 	  (not:DI (match_operand:DI 1 "register_operand"))
! 	  (match_operand:DI 2 "nonimmediate_operand")))
     (clobber (reg:CC FLAGS_REG))]
!   "!TARGET_64BIT && TARGET_BMI && TARGET_STV && TARGET_SSE2
!    && can_create_pseudo_p ()"
    [(parallel [(set (match_dup 0)
! 		   (and:SI (not:SI (match_dup 1)) (match_dup 2)))
  	      (clobber (reg:CC FLAGS_REG))])
     (parallel [(set (match_dup 3)
! 		   (and:SI (not:SI (match_dup 4)) (match_dup 5)))
  	      (clobber (reg:CC FLAGS_REG))])]
!   "split_double_mode (DImode, &operands[0], 3, &operands[0], &operands[3]);")
  
! (define_split
!   [(set (match_operand:DI 0 "register_operand")
! 	(and:DI
! 	  (not:DI (match_operand:DI 1 "register_operand"))
! 	  (match_operand:DI 2 "nonimmediate_operand")))
     (clobber (reg:CC FLAGS_REG))]
!   "!TARGET_64BIT && !TARGET_BMI && TARGET_STV && TARGET_SSE2
!    && can_create_pseudo_p ()"
!   [(set (match_dup 6) (not:SI (match_dup 1)))
     (parallel [(set (match_dup 0)
! 		   (and:SI (match_dup 6) (match_dup 2)))
! 	      (clobber (reg:CC FLAGS_REG))])
!    (set (match_dup 7) (not:SI (match_dup 4)))
!    (parallel [(set (match_dup 3)
! 		   (and:SI (match_dup 7) (match_dup 5)))
  	      (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[6] = gen_reg_rtx (SImode);
!   operands[7] = gen_reg_rtx (SImode);
! 
!   split_double_mode (DImode, &operands[0], 3, &operands[0], &operands[3]);
! })
  
  (define_insn "*andn<mode>_1"
    [(set (match_operand:SWI48 0 "register_operand" "=r,r,?k")
--- 10721,10758 ----
    operands[2] = gen_int_mode (INTVAL (operands[2]), QImode);
  })
  
! (define_insn_and_split "*andn<dwi>3_doubleword_bmi"
!   [(set (match_operand:<DWI> 0 "register_operand" "=&r,r,r")
! 	(and:<DWI>
! 	  (not:<DWI> (match_operand:<DWI> 1 "register_operand" "r,0,r"))
! 	  (match_operand:<DWI> 2 "nonimmediate_operand" "ro,ro,0")))
     (clobber (reg:CC FLAGS_REG))]
!   "TARGET_BMI"
!   "#"
!   "&& reload_completed"
    [(parallel [(set (match_dup 0)
! 		   (and:DWIH (not:DWIH (match_dup 1)) (match_dup 2)))
  	      (clobber (reg:CC FLAGS_REG))])
     (parallel [(set (match_dup 3)
! 		   (and:DWIH (not:DWIH (match_dup 4)) (match_dup 5)))
  	      (clobber (reg:CC FLAGS_REG))])]
!   "split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);")
  
! (define_insn_and_split "*andn<mode>3_doubleword"
!   [(set (match_operand:DWI 0 "register_operand")
! 	(and:DWI
! 	  (not:DWI (match_operand:DWI 1 "register_operand"))
! 	  (match_operand:DWI 2 "nonimmediate_operand")))
     (clobber (reg:CC FLAGS_REG))]
!   "!TARGET_BMI
!    && ix86_pre_reload_split ()"
!   "#"
!   "&& 1"
!   [(set (match_dup 3) (not:DWI (match_dup 1)))
     (parallel [(set (match_dup 0)
! 		   (and:DWI (match_dup 3) (match_dup 2)))
  	      (clobber (reg:CC FLAGS_REG))])]
!   "operands[3] = gen_reg_rtx (<MODE>mode);")
  
  (define_insn "*andn<mode>_1"
    [(set (match_operand:SWI48 0 "register_operand" "=r,r,?k")
***************
*** 10386,10391 ****
--- 10805,10920 ----
    [(set_attr "type" "bitmanip")
     (set_attr "btver2_decode" "direct, double")
     (set_attr "mode" "<MODE>")])
+ 
+ ;; Split *andnsi_1 after reload with -Oz when not;and is shorter.
+ (define_split
+   [(set (match_operand:SI 0 "register_operand")
+ 	(and:SI (not:SI (match_operand:SI 1 "register_operand"))
+ 		(match_operand:SI 2 "nonimmediate_operand")))
+    (clobber (reg:CC FLAGS_REG))]
+   "reload_completed
+    && optimize_insn_for_size_p () && optimize_size > 1
+    && REGNO (operands[0]) == REGNO (operands[1])
+    && LEGACY_INT_REG_P (operands[0])
+    && !REX_INT_REG_P (operands[2])
+    && !reg_overlap_mentioned_p (operands[0], operands[2])"
+   [(set (match_dup 0) (not:SI (match_dup 1)))
+    (parallel [(set (match_dup 0) (and:SI (match_dup 0) (match_dup 2)))
+ 	      (clobber (reg:CC FLAGS_REG))])])
+ 
+ ;; Split *andn_si_ccno with -Oz when not;test is shorter.
+ (define_split
+   [(set (match_operand 0 "flags_reg_operand")
+ 	(match_operator 1 "compare_operator"
+ 	  [(and:SI (not:SI (match_operand:SI 2 "general_reg_operand"))
+ 		   (match_operand:SI 3 "nonimmediate_operand"))
+ 	   (const_int 0)]))
+    (clobber (match_dup 2))]
+   "reload_completed
+    && optimize_insn_for_size_p () && optimize_size > 1
+    && LEGACY_INT_REG_P (operands[2])
+    && !REX_INT_REG_P (operands[3])
+    && !reg_overlap_mentioned_p (operands[2], operands[3])"
+   [(set (match_dup 2) (not:SI (match_dup 2)))
+    (set (match_dup 0) (match_op_dup 1
+                         [(and:SI (match_dup 3) (match_dup 2))
+ 			 (const_int 0)]))])
+ 
+ ;; Variant 1 of 4: Split ((A | B) ^ A) ^ C as (B & ~A) ^ C.
+ (define_split
+   [(set (match_operand:SWI48 0 "register_operand")
+ 	(xor:SWI48
+ 	   (xor:SWI48
+ 	      (ior:SWI48 (match_operand:SWI48 1 "register_operand")
+ 			 (match_operand:SWI48 2 "nonimmediate_operand"))
+ 	      (match_dup 1))
+ 	   (match_operand:SWI48 3 "nonimmediate_operand")))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_BMI"
+   [(parallel
+       [(set (match_dup 4) (and:SWI48 (not:SWI48 (match_dup 1)) (match_dup 2)))
+        (clobber (reg:CC FLAGS_REG))])
+    (parallel
+       [(set (match_dup 0) (xor:SWI48 (match_dup 4) (match_dup 3)))
+        (clobber (reg:CC FLAGS_REG))])]
+   "operands[4] = gen_reg_rtx (<MODE>mode);")
+ 
+ ;; Variant 2 of 4: Split ((A | B) ^ B) ^ C as (A & ~B) ^ C.
+ (define_split
+   [(set (match_operand:SWI48 0 "register_operand")
+ 	(xor:SWI48
+ 	   (xor:SWI48
+ 	      (ior:SWI48 (match_operand:SWI48 1 "register_operand")
+ 			 (match_operand:SWI48 2 "register_operand"))
+ 	      (match_dup 2))
+ 	   (match_operand:SWI48 3 "nonimmediate_operand")))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_BMI"
+   [(parallel
+       [(set (match_dup 4) (and:SWI48 (not:SWI48 (match_dup 2)) (match_dup 1)))
+        (clobber (reg:CC FLAGS_REG))])
+    (parallel
+       [(set (match_dup 0) (xor:SWI48 (match_dup 4) (match_dup 3)))
+        (clobber (reg:CC FLAGS_REG))])]
+   "operands[4] = gen_reg_rtx (<MODE>mode);")
+ 
+ ;; Variant 3 of 4: Split ((A | B) ^ C) ^ A as (B & ~A) ^ C.
+ (define_split
+   [(set (match_operand:SWI48 0 "register_operand")
+ 	(xor:SWI48
+ 	   (xor:SWI48
+ 	      (ior:SWI48 (match_operand:SWI48 1 "register_operand")
+ 			 (match_operand:SWI48 2 "nonimmediate_operand"))
+ 	      (match_operand:SWI48 3 "nonimmediate_operand"))
+ 	   (match_dup 1)))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_BMI"
+   [(parallel
+       [(set (match_dup 4) (and:SWI48 (not:SWI48 (match_dup 1)) (match_dup 2)))
+        (clobber (reg:CC FLAGS_REG))])
+    (parallel
+       [(set (match_dup 0) (xor:SWI48 (match_dup 4) (match_dup 3)))
+        (clobber (reg:CC FLAGS_REG))])]
+   "operands[4] = gen_reg_rtx (<MODE>mode);")
+ 
+ ;; Variant 4 of 4: Split ((A | B) ^ C) ^ B as (A & ~B) ^ C.
+ (define_split
+   [(set (match_operand:SWI48 0 "register_operand")
+ 	(xor:SWI48
+ 	   (xor:SWI48
+ 	      (ior:SWI48 (match_operand:SWI48 1 "register_operand")
+ 			 (match_operand:SWI48 2 "register_operand"))
+ 	      (match_operand:SWI48 3 "nonimmediate_operand"))
+ 	   (match_dup 2)))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_BMI"
+   [(parallel
+       [(set (match_dup 4) (and:SWI48 (not:SWI48 (match_dup 2)) (match_dup 1)))
+        (clobber (reg:CC FLAGS_REG))])
+    (parallel
+       [(set (match_dup 0) (xor:SWI48 (match_dup 4) (match_dup 3)))
+        (clobber (reg:CC FLAGS_REG))])]
+   "operands[4] = gen_reg_rtx (<MODE>mode);")
  
  ;; Logical inclusive and exclusive OR instructions
  
***************
*** 10393,10421 ****
  ;; If this is considered useful, it should be done with splitters.
  
  (define_expand "<code><mode>3"
!   [(set (match_operand:SWIM1248x 0 "nonimmediate_operand")
! 	(any_or:SWIM1248x (match_operand:SWIM1248x 1 "nonimmediate_operand")
! 			  (match_operand:SWIM1248x 2 "<general_operand>")))]
    ""
!   "ix86_expand_binary_operator (<CODE>, <MODE>mode, operands); DONE;")
  
! (define_insn_and_split "*<code>di3_doubleword"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=ro,r")
! 	(any_or:DI
! 	 (match_operand:DI 1 "nonimmediate_operand" "0,0")
! 	 (match_operand:DI 2 "x86_64_szext_general_operand" "re,o")))
     (clobber (reg:CC FLAGS_REG))]
!   "!TARGET_64BIT
!    && ix86_binary_operator_ok (<CODE>, DImode, operands)"
    "#"
    "&& reload_completed"
!   [(const_int 0)]
  {
    /* This insn may disappear completely when operands[2] == const0_rtx
       and operands[0] == operands[1], which requires a NOTE_INSN_DELETED.  */
    bool emit_insn_deleted_note_p = false;
  
!   split_double_mode (DImode, &operands[0], 3, &operands[0], &operands[3]);
  
    if (operands[2] == const0_rtx)
      emit_insn_deleted_note_p = true;
--- 10922,10956 ----
  ;; If this is considered useful, it should be done with splitters.
  
  (define_expand "<code><mode>3"
!   [(set (match_operand:SDWIM 0 "nonimmediate_operand")
! 	(any_or:SDWIM (match_operand:SDWIM 1 "nonimmediate_operand")
! 		      (match_operand:SDWIM 2 "<general_operand>")))]
    ""
! {
!   if (GET_MODE_SIZE (<MODE>mode) > UNITS_PER_WORD
!       && !x86_64_hilo_general_operand (operands[2], <MODE>mode))
!     operands[2] = force_reg (<MODE>mode, operands[2]);
  
!   ix86_expand_binary_operator (<CODE>, <MODE>mode, operands);
!   DONE;
! })
! 
! (define_insn_and_split "*<code><dwi>3_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r")
! 	(any_or:<DWI>
! 	 (match_operand:<DWI> 1 "nonimmediate_operand" "%0,0")
! 	 (match_operand:<DWI> 2 "x86_64_hilo_general_operand" "r<di>,o")))
     (clobber (reg:CC FLAGS_REG))]
!   "ix86_binary_operator_ok (<CODE>, <DWI>mode, operands)"
    "#"
    "&& reload_completed"
!   [(const_int:DWIH 0)]
  {
    /* This insn may disappear completely when operands[2] == const0_rtx
       and operands[0] == operands[1], which requires a NOTE_INSN_DELETED.  */
    bool emit_insn_deleted_note_p = false;
  
!   split_double_mode (<DWI>mode, &operands[0], 3, &operands[0], &operands[3]);
  
    if (operands[2] == const0_rtx)
      emit_insn_deleted_note_p = true;
***************
*** 10424,10433 ****
        if (<CODE> == IOR)
  	emit_move_insn (operands[0], constm1_rtx);
        else
! 	ix86_expand_unary_operator (NOT, SImode, &operands[0]);
      }
    else
!     ix86_expand_binary_operator (<CODE>, SImode, &operands[0]);
  
    if (operands[5] == const0_rtx)
      {
--- 10959,10968 ----
        if (<CODE> == IOR)
  	emit_move_insn (operands[0], constm1_rtx);
        else
! 	ix86_expand_unary_operator (NOT, <MODE>mode, &operands[0]);
      }
    else
!     ix86_expand_binary_operator (<CODE>, <MODE>mode, &operands[0]);
  
    if (operands[5] == const0_rtx)
      {
***************
*** 10439,10448 ****
        if (<CODE> == IOR)
  	emit_move_insn (operands[3], constm1_rtx);
        else
! 	ix86_expand_unary_operator (NOT, SImode, &operands[3]);
      }
    else
!     ix86_expand_binary_operator (<CODE>, SImode, &operands[3]);
  
    DONE;
  })
--- 10974,10983 ----
        if (<CODE> == IOR)
  	emit_move_insn (operands[3], constm1_rtx);
        else
! 	ix86_expand_unary_operator (NOT, <MODE>mode, &operands[3]);
      }
    else
!     ix86_expand_binary_operator (<CODE>, <MODE>mode, &operands[3]);
  
    DONE;
  })
***************
*** 10468,10473 ****
--- 11003,11041 ----
     (set_attr "type" "alu, alu, msklog")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn_and_split "*notxor<mode>_1"
+   [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,r,?k")
+ 	(not:SWI248
+ 	  (xor:SWI248
+ 	    (match_operand:SWI248 1 "nonimmediate_operand" "%0,0,k")
+ 	    (match_operand:SWI248 2 "<general_operand>" "r<i>,<m>,k"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_binary_operator_ok (XOR, <MODE>mode, operands)"
+   "#"
+   "&& reload_completed"
+   [(parallel
+     [(set (match_dup 0)
+ 	  (xor:SWI248 (match_dup 1) (match_dup 2)))
+      (clobber (reg:CC FLAGS_REG))])
+    (set (match_dup 0)
+ 	(not:SWI248 (match_dup 0)))]
+ {
+   if (MASK_REG_P (operands[0]))
+     {
+       emit_insn (gen_kxnor<mode> (operands[0], operands[1], operands[2]));
+       DONE;
+     }
+ }
+   [(set (attr "isa")
+ 	(cond [(eq_attr "alternative" "2")
+ 		 (if_then_else (eq_attr "mode" "SI,DI")
+ 		   (const_string "avx512bw")
+ 		   (const_string "avx512f"))
+ 	      ]
+ 	      (const_string "*")))
+    (set_attr "type" "alu, alu, msklog")
+    (set_attr "mode" "<MODE>")])
+ 
  (define_insn_and_split "*iordi_1_bts"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=rm")
  	(ior:DI
***************
*** 10601,10606 ****
--- 11169,11212 ----
  	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
  	   (symbol_ref "true")))])
  
+ (define_insn_and_split "*notxorqi_1"
+   [(set (match_operand:QI 0 "nonimmediate_operand" "=qm,q,r,?k")
+ 	(not:QI
+ 	  (xor:QI (match_operand:QI 1 "nonimmediate_operand" "%0,0,0,k")
+ 		  (match_operand:QI 2 "general_operand" "qn,m,rn,k"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_binary_operator_ok (XOR, QImode, operands)"
+   "#"
+   "&& reload_completed"
+   [(parallel
+     [(set (match_dup 0)
+ 	  (xor:QI (match_dup 1) (match_dup 2)))
+      (clobber (reg:CC FLAGS_REG))])
+    (set (match_dup 0)
+ 	(not:QI (match_dup 0)))]
+ {
+   if (mask_reg_operand (operands[0], QImode))
+     {
+       emit_insn (gen_kxnorqi (operands[0], operands[1], operands[2]));
+       DONE;
+     }
+ }
+   [(set_attr "isa" "*,*,*,avx512f")
+    (set_attr "type" "alu,alu,alu,msklog")
+    (set (attr "mode")
+ 	(cond [(eq_attr "alternative" "2")
+ 		 (const_string "SI")
+ 		(and (eq_attr "alternative" "3")
+ 		     (match_test "!TARGET_AVX512DQ"))
+ 		 (const_string "HI")
+ 	       ]
+ 	       (const_string "QI")))
+    ;; Potential partial reg stall on alternative 2.
+    (set (attr "preferred_for_speed")
+      (cond [(eq_attr "alternative" "2")
+ 	      (symbol_ref "!TARGET_PARTIAL_REG_STALL")]
+ 	   (symbol_ref "true")))])
+ 
  ;; Alternative 1 is needed to work around LRA limitation, see PR82524.
  (define_insn_and_split "*<code><mode>_1_slp"
    [(set (strict_low_part (match_operand:SWI12 0 "register_operand" "+<r>,&<r>"))
***************
*** 10711,10729 ****
    [(set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*<code>qi_ext<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (any_or:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_operand" "QnBc,m")) 0))
     (clobber (reg:CC FLAGS_REG))]
    "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
     /* FIXME: without this LRA can't reload this pattern, see PR82524.  */
--- 11317,11351 ----
    [(set_attr "type" "alu")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "*<code>qi_ext<mode>_0"
+   [(set (match_operand:QI 0 "nonimm_x64constmem_operand" "=QBc,m")
+ 	(any_or:QI
+ 	  (subreg:QI
+ 	    (zero_extract:SWI248
+ 	      (match_operand 2 "int248_register_operand" "Q,Q")
+ 	      (const_int 8)
+ 	      (const_int 8)) 0)
+ 	  (match_operand:QI 1 "nonimm_x64constmem_operand" "0,0")))
+    (clobber (reg:CC FLAGS_REG))]
+   ""
+   "<logic>{b}\t{%h2, %0|%0, %h2}"
+   [(set_attr "isa" "*,nox64")
+    (set_attr "type" "alu")
+    (set_attr "mode" "QI")])
+ 
  (define_insn "*<code>qi_ext<mode>_1"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (any_or:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m")) 0))
     (clobber (reg:CC FLAGS_REG))]
    "(!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
     /* FIXME: without this LRA can't reload this pattern, see PR82524.  */
***************
*** 10735,10753 ****
  
  (define_insn "*<code>qi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (any_or:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "%0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 2 "register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
     (clobber (reg:CC FLAGS_REG))]
--- 11357,11375 ----
  
  (define_insn "*<code>qi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (any_or:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "%0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 2 "int248_register_operand" "Q")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 10773,10785 ****
      && (!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
      && !(INTVAL (operands[2]) & ~(255 << 8))"
    [(parallel
!      [(set (zero_extract:SI (match_dup 0)
  			    (const_int 8)
  			    (const_int 8))
! 	   (subreg:SI
  	     (any_or:QI
  	       (subreg:QI
! 		 (zero_extract:SI (match_dup 1)
  				  (const_int 8)
  				  (const_int 8)) 0)
  	       (match_dup 2)) 0))
--- 11395,11407 ----
      && (!TARGET_PARTIAL_REG_STALL || optimize_function_for_size_p (cfun))
      && !(INTVAL (operands[2]) & ~(255 << 8))"
    [(parallel
!      [(set (zero_extract:HI (match_dup 0)
  			    (const_int 8)
  			    (const_int 8))
! 	   (subreg:HI
  	     (any_or:QI
  	       (subreg:QI
! 		 (zero_extract:HI (match_dup 1)
  				  (const_int 8)
  				  (const_int 8)) 0)
  	       (match_dup 2)) 0))
***************
*** 10794,10801 ****
  	emit_note (NOTE_INSN_DELETED);
        DONE;
      }
!   operands[0] = gen_lowpart (SImode, operands[0]);
!   operands[1] = gen_lowpart (SImode, operands[1]);
    operands[2] = gen_int_mode (INTVAL (operands[2]) >> 8, QImode);
  })
  
--- 11416,11423 ----
  	emit_note (NOTE_INSN_DELETED);
        DONE;
      }
!   operands[0] = gen_lowpart (HImode, operands[0]);
!   operands[1] = gen_lowpart (HImode, operands[1]);
    operands[2] = gen_int_mode (INTVAL (operands[2]) >> 8, QImode);
  })
  
***************
*** 10848,10860 ****
  	  (xor:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_operand" "QnBc,m"))
  	  (const_int 0)))
     (set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
--- 11470,11482 ----
  	  (xor:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0,0")
  		(const_int 8)
  		(const_int 8)) 0)
! 	    (match_operand:QI 2 "general_x64constmem_operand" "QnBc,m"))
  	  (const_int 0)))
     (set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q,Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
***************
*** 10875,10909 ****
  
  ;; Split DST = (HI<<32)|LO early to minimize register usage.
  (define_code_iterator any_or_plus [plus ior xor])
! (define_split
!   [(set (match_operand:DI 0 "register_operand")
! 	(any_or_plus:DI
! 	  (ashift:DI (match_operand:DI 1 "register_operand")
! 		     (const_int 32))
! 	  (zero_extend:DI (match_operand:SI 2 "register_operand"))))]
!   "!TARGET_64BIT"
!   [(set (match_dup 3) (match_dup 4))
!    (set (match_dup 5) (match_dup 2))]
  {
!   operands[3] = gen_highpart (SImode, operands[0]);
!   operands[4] = gen_lowpart (SImode, operands[1]);
!   operands[5] = gen_lowpart (SImode, operands[0]);
  })
  
! (define_split
!   [(set (match_operand:DI 0 "register_operand")
! 	(any_or_plus:DI
! 	  (zero_extend:DI (match_operand:SI 1 "register_operand"))
! 	  (ashift:DI (match_operand:DI 2 "register_operand")
! 		     (const_int 32))))]
!   "!TARGET_64BIT"
!   [(set (match_dup 3) (match_dup 4))
!    (set (match_dup 5) (match_dup 1))]
  {
!   operands[3] = gen_highpart (SImode, operands[0]);
!   operands[4] = gen_lowpart (SImode, operands[2]);
!   operands[5] = gen_lowpart (SImode, operands[0]);
  })
  
  ;; Negation instructions
  
--- 11497,11662 ----
  
  ;; Split DST = (HI<<32)|LO early to minimize register usage.
  (define_code_iterator any_or_plus [plus ior xor])
! (define_insn_and_split "*concat<mode><dwi>3_1"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r")
! 	(any_or_plus:<DWI>
! 	  (ashift:<DWI> (match_operand:<DWI> 1 "register_operand" "r,r")
! 			(match_operand:<DWI> 2 "const_int_operand"))
! 	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 3 "nonimmediate_operand" "r,m"))))]
!   "INTVAL (operands[2]) == <MODE_SIZE> * BITS_PER_UNIT"
!   "#"
!   "&& reload_completed"
!   [(clobber (const_int 0))]
  {
!   split_double_concat (<DWI>mode, operands[0], operands[3],
! 		       gen_lowpart (<MODE>mode, operands[1]));
!   DONE;
  })
  
! (define_insn_and_split "*concat<mode><dwi>3_2"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r")
! 	(any_or_plus:<DWI>
! 	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 1 "nonimmediate_operand" "r,m"))
! 	  (ashift:<DWI> (match_operand:<DWI> 2 "register_operand" "r,r")
! 			(match_operand:<DWI> 3 "const_int_operand"))))]
!   "INTVAL (operands[3]) == <MODE_SIZE> * BITS_PER_UNIT"
!   "#"
!   "&& reload_completed"
!   [(clobber (const_int 0))]
  {
!   split_double_concat (<DWI>mode, operands[0], operands[1],
! 		       gen_lowpart (<MODE>mode, operands[2]));
!   DONE;
! })
! 
! (define_insn_and_split "*concat<mode><dwi>3_3"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,r,&r")
! 	(any_or_plus:<DWI>
! 	  (ashift:<DWI>
! 	    (zero_extend:<DWI>
! 	      (match_operand:DWIH 1 "nonimmediate_operand" "r,m,r,m"))
! 	    (match_operand:<DWI> 2 "const_int_operand"))
! 	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 3 "nonimmediate_operand" "r,r,m,m"))))]
!   "INTVAL (operands[2]) == <MODE_SIZE> * BITS_PER_UNIT"
!   "#"
!   "&& reload_completed"
!   [(clobber (const_int 0))]
! {
!   split_double_concat (<DWI>mode, operands[0], operands[3], operands[1]);
!   DONE;
! })
! 
! (define_insn_and_split "*concat<mode><dwi>3_4"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro,r,r,&r")
! 	(any_or_plus:<DWI>
! 	  (zero_extend:<DWI>
! 	    (match_operand:DWIH 1 "nonimmediate_operand" "r,m,r,m"))
! 	  (ashift:<DWI>
! 	    (zero_extend:<DWI>
! 	      (match_operand:DWIH 2 "nonimmediate_operand" "r,r,m,m"))
! 	    (match_operand:<DWI> 3 "const_int_operand"))))]
!   "INTVAL (operands[3]) == <MODE_SIZE> * BITS_PER_UNIT"
!   "#"
!   "&& reload_completed"
!   [(clobber (const_int 0))]
! {
!   split_double_concat (<DWI>mode, operands[0], operands[1], operands[2]);
!   DONE;
  })
+ 
+ (define_insn_and_split "*concat<half><mode>3_5"
+   [(set (match_operand:DWI 0 "nonimmediate_operand" "=r,o,o")
+ 	(any_or_plus:DWI
+ 	  (ashift:DWI (match_operand:DWI 1 "register_operand" "r,r,r")
+ 		      (match_operand:DWI 2 "const_int_operand"))
+ 	  (match_operand:DWI 3 "const_scalar_int_operand" "n,n,Wd")))]
+   "INTVAL (operands[2]) == <MODE_SIZE> * BITS_PER_UNIT / 2
+    && (<MODE>mode == DImode
+        ? CONST_INT_P (operands[3])
+ 	 && (UINTVAL (operands[3]) & ~GET_MODE_MASK (SImode)) == 0
+        : CONST_INT_P (operands[3])
+        ? INTVAL (operands[3]) >= 0
+        : CONST_WIDE_INT_NUNITS (operands[3]) == 2
+ 	 && CONST_WIDE_INT_ELT (operands[3], 1) == 0)
+    && !(CONST_INT_P (operands[3])
+ 	? ix86_endbr_immediate_operand (operands[3], VOIDmode)
+ 	: ix86_endbr_immediate_operand (GEN_INT (CONST_WIDE_INT_ELT (operands[3],
+ 								     0)),
+ 					VOIDmode))"
+   "#"
+   "&& reload_completed"
+   [(clobber (const_int 0))]
+ {
+   rtx op3 = simplify_subreg (<HALF>mode, operands[3], <MODE>mode, 0);
+   split_double_concat (<MODE>mode, operands[0], op3,
+ 		       gen_lowpart (<HALF>mode, operands[1]));
+   DONE;
+ }
+   [(set_attr "isa" "*,nox64,x64")])
+ 
+ (define_insn_and_split "*concat<mode><dwi>3_6"
+   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o,o,r")
+ 	(any_or_plus:<DWI>
+ 	  (ashift:<DWI>
+ 	    (zero_extend:<DWI>
+ 	      (match_operand:DWIH 1 "nonimmediate_operand" "r,r,r,m"))
+ 	    (match_operand:<DWI> 2 "const_int_operand"))
+ 	  (match_operand:<DWI> 3 "const_scalar_int_operand" "n,n,Wd,n")))]
+   "INTVAL (operands[2]) == <MODE_SIZE> * BITS_PER_UNIT
+    && (<DWI>mode == DImode
+        ? CONST_INT_P (operands[3])
+ 	 && (UINTVAL (operands[3]) & ~GET_MODE_MASK (SImode)) == 0
+        : CONST_INT_P (operands[3])
+        ? INTVAL (operands[3]) >= 0
+        : CONST_WIDE_INT_NUNITS (operands[3]) == 2
+ 	 && CONST_WIDE_INT_ELT (operands[3], 1) == 0)
+    && !(CONST_INT_P (operands[3])
+ 	? ix86_endbr_immediate_operand (operands[3], VOIDmode)
+ 	: ix86_endbr_immediate_operand (GEN_INT (CONST_WIDE_INT_ELT (operands[3],
+ 								     0)),
+ 					VOIDmode))"
+   "#"
+   "&& reload_completed"
+   [(clobber (const_int 0))]
+ {
+   rtx op3 = simplify_subreg (<MODE>mode, operands[3], <DWI>mode, 0);
+   split_double_concat (<DWI>mode, operands[0], op3, operands[1]);
+   DONE;
+ }
+   [(set_attr "isa" "*,nox64,x64,*")])
+ 
+ (define_insn_and_split "*concat<mode><dwi>3_7"
+   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=r,o,o,r")
+ 	(any_or_plus:<DWI>
+ 	  (zero_extend:<DWI>
+ 	    (match_operand:DWIH 1 "nonimmediate_operand" "r,r,r,m"))
+ 	  (match_operand:<DWI> 2 "const_scalar_int_operand" "n,n,Wd,n")))]
+   "<DWI>mode == DImode
+    ? CONST_INT_P (operands[2])
+      && (UINTVAL (operands[2]) & GET_MODE_MASK (SImode)) == 0
+      && !ix86_endbr_immediate_operand (operands[2], VOIDmode)
+    : CONST_WIDE_INT_P (operands[2])
+      && CONST_WIDE_INT_NUNITS (operands[2]) == 2
+      && CONST_WIDE_INT_ELT (operands[2], 0) == 0
+      && !ix86_endbr_immediate_operand (GEN_INT (CONST_WIDE_INT_ELT (operands[2],
+ 								    1)),
+ 				       VOIDmode)"
+   "#"
+   "&& reload_completed"
+   [(clobber (const_int 0))]
+ {
+   rtx op2;
+   if (<DWI>mode == DImode)
+     op2 = gen_int_mode (INTVAL (operands[2]) >> 32, <MODE>mode);
+   else
+     op2 = gen_int_mode (CONST_WIDE_INT_ELT (operands[2], 1), <MODE>mode);
+   split_double_concat (<DWI>mode, operands[0], operands[1], op2);
+   DONE;
+ }
+   [(set_attr "isa" "*,nox64,x64,*")])
  
  ;; Negation instructions
  
***************
*** 10922,10928 ****
    "&& reload_completed"
    [(parallel
      [(set (reg:CCC FLAGS_REG)
! 	  (ne:CCC (match_dup 1) (const_int 0)))
       (set (match_dup 0) (neg:DWIH (match_dup 1)))])
     (parallel
      [(set (match_dup 2)
--- 11675,11681 ----
    "&& reload_completed"
    [(parallel
      [(set (reg:CCC FLAGS_REG)
! 	  (unspec:CCC [(match_dup 1) (const_int 0)] UNSPEC_CC_NE))
       (set (match_dup 0) (neg:DWIH (match_dup 1)))])
     (parallel
      [(set (match_dup 2)
***************
*** 10936,10941 ****
--- 11689,11780 ----
       (clobber (reg:CC FLAGS_REG))])]
    "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);")
  
+ ;; Convert:
+ ;;   mov %esi, %edx
+ ;;   negl %eax
+ ;;   adcl $0, %edx
+ ;;   negl %edx
+ ;; to:
+ ;;   xorl %edx, %edx
+ ;;   negl %eax
+ ;;   sbbl %esi, %edx
+ 
+ (define_peephole2
+   [(set (match_operand:SWI48 0 "general_reg_operand")
+ 	(match_operand:SWI48 1 "nonimmediate_gr_operand"))
+    (parallel
+     [(set (reg:CCC FLAGS_REG)
+ 	  (unspec:CCC [(match_operand:SWI48 2 "general_reg_operand")
+ 		       (const_int 0)] UNSPEC_CC_NE))
+      (set (match_dup 2) (neg:SWI48 (match_dup 2)))])
+    (parallel
+     [(set (match_dup 0)
+ 	  (plus:SWI48 (plus:SWI48
+ 			(ltu:SWI48 (reg:CC FLAGS_REG) (const_int 0))
+ 			(match_dup 0))
+ 		      (const_int 0)))
+      (clobber (reg:CC FLAGS_REG))])
+    (parallel
+     [(set (match_dup 0)
+ 	  (neg:SWI48 (match_dup 0)))
+      (clobber (reg:CC FLAGS_REG))])]
+   "REGNO (operands[0]) != REGNO (operands[2])
+    && !reg_mentioned_p (operands[0], operands[1])
+    && !reg_mentioned_p (operands[2], operands[1])"
+   [(parallel
+     [(set (reg:CCC FLAGS_REG)
+ 	  (unspec:CCC [(match_dup 2) (const_int 0)] UNSPEC_CC_NE))
+      (set (match_dup 2) (neg:SWI48 (match_dup 2)))])
+    (parallel
+     [(set (match_dup 0)
+ 	  (minus:SWI48 (minus:SWI48
+ 			 (match_dup 0)
+ 			 (ltu:SWI48 (reg:CC FLAGS_REG) (const_int 0)))
+ 		       (match_dup 1)))
+      (clobber (reg:CC FLAGS_REG))])]
+   "ix86_expand_clear (operands[0]);")
+ 
+ ;; Convert:
+ ;;   xorl %edx, %edx
+ ;;   negl %eax
+ ;;   adcl $0, %edx
+ ;;   negl %edx
+ ;; to:
+ ;;   negl %eax
+ ;;   sbbl %edx, %edx	// *x86_mov<mode>cc_0_m1
+ 
+ (define_peephole2
+   [(parallel
+     [(set (match_operand:SWI48 0 "general_reg_operand") (const_int 0))
+      (clobber (reg:CC FLAGS_REG))])
+    (parallel
+     [(set (reg:CCC FLAGS_REG)
+ 	  (unspec:CCC [(match_operand:SWI48 1 "general_reg_operand")
+ 		       (const_int 0)] UNSPEC_CC_NE))
+      (set (match_dup 1) (neg:SWI48 (match_dup 1)))])
+    (parallel
+     [(set (match_dup 0)
+ 	  (plus:SWI48 (plus:SWI48
+ 			(ltu:SWI48 (reg:CC FLAGS_REG) (const_int 0))
+ 			(match_dup 0))
+ 		      (const_int 0)))
+      (clobber (reg:CC FLAGS_REG))])
+    (parallel
+     [(set (match_dup 0)
+ 	  (neg:SWI48 (match_dup 0)))
+      (clobber (reg:CC FLAGS_REG))])]
+   "REGNO (operands[0]) != REGNO (operands[1])"
+   [(parallel
+     [(set (reg:CCC FLAGS_REG)
+ 	  (unspec:CCC [(match_dup 1) (const_int 0)] UNSPEC_CC_NE))
+      (set (match_dup 1) (neg:SWI48 (match_dup 1)))])
+    (parallel
+     [(set (match_dup 0)
+ 	  (if_then_else:SWI48 (ltu:SWI48 (reg:CC FLAGS_REG) (const_int 0))
+ 			      (const_int -1)
+ 			      (const_int 0)))
+      (clobber (reg:CC FLAGS_REG))])])
+ 
  (define_insn "*neg<mode>_1"
    [(set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
  	(neg:SWI (match_operand:SWI 1 "nonimmediate_operand" "0")))
***************
*** 11003,11011 ****
  
  (define_insn "*neg<mode>_ccc_1"
    [(set (reg:CCC FLAGS_REG)
! 	(ne:CCC
! 	  (match_operand:SWI 1 "nonimmediate_operand" "0")
! 	  (const_int 0)))
     (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
  	(neg:SWI (match_dup 1)))]
    ""
--- 11842,11850 ----
  
  (define_insn "*neg<mode>_ccc_1"
    [(set (reg:CCC FLAGS_REG)
! 	(unspec:CCC
! 	  [(match_operand:SWI 1 "nonimmediate_operand" "0")
! 	   (const_int 0)] UNSPEC_CC_NE))
     (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
  	(neg:SWI (match_dup 1)))]
    ""
***************
*** 11015,11039 ****
  
  (define_insn "*neg<mode>_ccc_2"
    [(set (reg:CCC FLAGS_REG)
! 	(ne:CCC
! 	  (match_operand:SWI 1 "nonimmediate_operand" "0")
! 	  (const_int 0)))
     (clobber (match_scratch:SWI 0 "=<r>"))]
    ""
    "neg{<imodesuffix>}\t%0"
    [(set_attr "type" "negnot")
     (set_attr "mode" "<MODE>")])
  
  (define_insn "*negqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (neg:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
     (clobber (reg:CC FLAGS_REG))]
--- 11854,11886 ----
  
  (define_insn "*neg<mode>_ccc_2"
    [(set (reg:CCC FLAGS_REG)
! 	(unspec:CCC
! 	  [(match_operand:SWI 1 "nonimmediate_operand" "0")
! 	   (const_int 0)] UNSPEC_CC_NE))
     (clobber (match_scratch:SWI 0 "=<r>"))]
    ""
    "neg{<imodesuffix>}\t%0"
    [(set_attr "type" "negnot")
     (set_attr "mode" "<MODE>")])
  
+ (define_expand "x86_neg<mode>_ccc"
+   [(parallel
+     [(set (reg:CCC FLAGS_REG)
+ 	  (unspec:CCC [(match_operand:SWI48 1 "register_operand")
+ 		       (const_int 0)] UNSPEC_CC_NE))
+      (set (match_operand:SWI48 0 "register_operand")
+ 	  (neg:SWI48 (match_dup 1)))])])
+ 
  (define_insn "*negqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (neg:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)) 0))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 11046,11053 ****
  ;; Negate with jump on overflow.
  (define_expand "negv<mode>3"
    [(parallel [(set (reg:CCO FLAGS_REG)
! 		   (ne:CCO (match_operand:SWI 1 "register_operand")
! 			   (match_dup 3)))
  	      (set (match_operand:SWI 0 "register_operand")
  		   (neg:SWI (match_dup 1)))])
     (set (pc) (if_then_else
--- 11893,11901 ----
  ;; Negate with jump on overflow.
  (define_expand "negv<mode>3"
    [(parallel [(set (reg:CCO FLAGS_REG)
! 		   (unspec:CCO
! 		     [(match_operand:SWI 1 "register_operand")
! 		      (match_dup 3)] UNSPEC_CC_NE))
  	      (set (match_operand:SWI 0 "register_operand")
  		   (neg:SWI (match_dup 1)))])
     (set (pc) (if_then_else
***************
*** 11063,11070 ****
  
  (define_insn "*negv<mode>3"
    [(set (reg:CCO FLAGS_REG)
! 	(ne:CCO (match_operand:SWI 1 "nonimmediate_operand" "0")
! 		(match_operand:SWI 2 "const_int_operand")))
     (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
  	(neg:SWI (match_dup 1)))]
    "ix86_unary_operator_ok (NEG, <MODE>mode, operands)
--- 11911,11919 ----
  
  (define_insn "*negv<mode>3"
    [(set (reg:CCO FLAGS_REG)
! 	(unspec:CCO [(match_operand:SWI 1 "nonimmediate_operand" "0")
! 		     (match_operand:SWI 2 "const_int_operand")]
! 		    UNSPEC_CC_NE))
     (set (match_operand:SWI 0 "nonimmediate_operand" "=<r>m")
  	(neg:SWI (match_dup 1)))]
    "ix86_unary_operator_ok (NEG, <MODE>mode, operands)
***************
*** 11130,11136 ****
     "&& 1"
    [(parallel
      [(set (reg:CCC FLAGS_REG)
! 	  (ne:CCC (match_dup 1) (const_int 0)))
       (set (match_dup 2) (neg:DWIH (match_dup 1)))])
     (parallel
      [(set (match_dup 5)
--- 11979,11985 ----
     "&& 1"
    [(parallel
      [(set (reg:CCC FLAGS_REG)
! 	  (unspec:CCC [(match_dup 1) (const_int 0)] UNSPEC_CC_NE))
       (set (match_dup 2) (neg:DWIH (match_dup 1)))])
     (parallel
      [(set (match_dup 5)
***************
*** 11174,11180 ****
     "&& 1"
    [(parallel
      [(set (reg:CCC FLAGS_REG)
! 	  (ne:CCC (match_dup 1) (const_int 0)))
       (set (match_dup 2) (neg:DWIH (match_dup 1)))])
     (parallel
      [(set (match_dup 5)
--- 12023,12029 ----
     "&& 1"
    [(parallel
      [(set (reg:CCC FLAGS_REG)
! 	  (unspec:CCC [(match_dup 1) (const_int 0)] UNSPEC_CC_NE))
       (set (match_dup 2) (neg:DWIH (match_dup 1)))])
     (parallel
      [(set (match_dup 5)
***************
*** 11489,11512 ****
  ;; One complement instructions
  
  (define_expand "one_cmpl<mode>2"
!   [(set (match_operand:SWIM1248x 0 "nonimmediate_operand")
! 	(not:SWIM1248x (match_operand:SWIM1248x 1 "nonimmediate_operand")))]
    ""
    "ix86_expand_unary_operator (NOT, <MODE>mode, operands); DONE;")
  
! (define_insn_and_split "*one_cmpldi2_doubleword"
!   [(set (match_operand:DI 0 "nonimmediate_operand")
! 	(not:DI (match_operand:DI 1 "nonimmediate_operand")))]
!   "!TARGET_64BIT
!    && ix86_unary_operator_ok (NOT, DImode, operands)
!    && ix86_pre_reload_split ()"
    "#"
!   "&& 1"
    [(set (match_dup 0)
! 	(not:SI (match_dup 1)))
     (set (match_dup 2)
! 	(not:SI (match_dup 3)))]
!   "split_double_mode (DImode, &operands[0], 2, &operands[0], &operands[2]);")
  
  (define_insn "*one_cmpl<mode>2_1"
    [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,?k")
--- 12338,12359 ----
  ;; One complement instructions
  
  (define_expand "one_cmpl<mode>2"
!   [(set (match_operand:SDWIM 0 "nonimmediate_operand")
! 	(not:SDWIM (match_operand:SDWIM 1 "nonimmediate_operand")))]
    ""
    "ix86_expand_unary_operator (NOT, <MODE>mode, operands); DONE;")
  
! (define_insn_and_split "*one_cmpl<dwi>2_doubleword"
!   [(set (match_operand:<DWI> 0 "nonimmediate_operand" "=ro")
! 	(not:<DWI> (match_operand:<DWI> 1 "nonimmediate_operand" "0")))]
!   "ix86_unary_operator_ok (NOT, <DWI>mode, operands)"
    "#"
!   "&& reload_completed"
    [(set (match_dup 0)
! 	(not:DWIH (match_dup 1)))
     (set (match_dup 2)
! 	(not:DWIH (match_dup 3)))]
!   "split_double_mode (<DWI>mode, &operands[0], 2, &operands[0], &operands[2]);")
  
  (define_insn "*one_cmpl<mode>2_1"
    [(set (match_operand:SWI248 0 "nonimmediate_operand" "=rm,?k")
***************
*** 11665,11675 ****
  	(ashift:<DWI>
  	  (match_operand:<DWI> 1 "register_operand")
  	  (subreg:QI
! 	    (and:SI
! 	      (match_operand:SI 2 "register_operand" "c")
! 	      (match_operand:SI 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
!   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 12512,12524 ----
  	(ashift:<DWI>
  	  (match_operand:<DWI> 1 "register_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand" "c")
! 	      (match_operand 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
!   "((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
!     || ((INTVAL (operands[3]) & (2 * <MODE_SIZE> * BITS_PER_UNIT - 1))
! 	 == (2 * <MODE_SIZE> * BITS_PER_UNIT - 1)))
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 11687,11692 ****
--- 12536,12550 ----
  	   (ashift:DWIH (match_dup 5) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
+   if ((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) != 0)
+     {
+       operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
+       operands[2] = gen_lowpart (QImode, operands[2]);
+       emit_insn (gen_ashl<dwi>3_doubleword (operands[0], operands[1],
+ 					    operands[2]));
+       DONE;
+     }
+ 
    split_double_mode (<DWI>mode, &operands[0], 2, &operands[4], &operands[6]);
  
    operands[8] = GEN_INT (<MODE_SIZE> * BITS_PER_UNIT - 1);
***************
*** 11695,11705 ****
    if ((INTVAL (operands[3]) & ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
        != ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
      {
!       rtx tem = gen_reg_rtx (SImode);
!       emit_insn (gen_andsi3 (tem, operands[2], operands[3]));
!       operands[2] = tem;
      }
  
    operands[2] = gen_lowpart (QImode, operands[2]);
  
    if (!rtx_equal_p (operands[6], operands[7]))
--- 12553,12568 ----
    if ((INTVAL (operands[3]) & ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
        != ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
      {
!       rtx xops[3];
!       xops[0] = gen_reg_rtx (GET_MODE (operands[2]));
!       xops[1] = operands[2];
!       xops[2] = GEN_INT (INTVAL (operands[3])
! 			 & ((<MODE_SIZE> * BITS_PER_UNIT) - 1));
!       ix86_expand_binary_operator (AND, GET_MODE (operands[2]), xops);
!       operands[2] = xops[0];
      }
  
+   operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
    operands[2] = gen_lowpart (QImode, operands[2]);
  
    if (!rtx_equal_p (operands[6], operands[7]))
***************
*** 11714,11720 ****
  	    (match_operand:QI 2 "register_operand" "c")
  	    (match_operand:QI 3 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
!   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 12577,12585 ----
  	    (match_operand:QI 2 "register_operand" "c")
  	    (match_operand:QI 3 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
!   "((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
!     || ((INTVAL (operands[3]) & (2 * <MODE_SIZE> * BITS_PER_UNIT - 1))
! 	 == (2 * <MODE_SIZE> * BITS_PER_UNIT - 1)))
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 11732,11737 ****
--- 12597,12609 ----
  	   (ashift:DWIH (match_dup 5) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
+   if ((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) != 0)
+     {
+       emit_insn (gen_ashl<dwi>3_doubleword (operands[0], operands[1],
+ 					    operands[2]));
+       DONE;
+     }
+ 
    split_double_mode (<DWI>mode, &operands[0], 2, &operands[4], &operands[6]);
  
    operands[8] = GEN_INT (<MODE_SIZE> * BITS_PER_UNIT - 1);
***************
*** 11749,11755 ****
      emit_move_insn (operands[6], operands[7]);
  })
  
! (define_insn "*ashl<mode>3_doubleword"
    [(set (match_operand:DWI 0 "register_operand" "=&r")
  	(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "0n")
  		    (match_operand:QI 2 "nonmemory_operand" "<S>c")))
--- 12621,12627 ----
      emit_move_insn (operands[6], operands[7]);
  })
  
! (define_insn "ashl<mode>3_doubleword"
    [(set (match_operand:DWI 0 "register_operand" "=&r")
  	(ashift:DWI (match_operand:DWI 1 "reg_or_pm1_operand" "0n")
  		    (match_operand:QI 2 "nonmemory_operand" "<S>c")))
***************
*** 11804,11818 ****
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "*x86_64_shld_1"
    [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
          (ior:DI (ashift:DI (match_dup 0)
! 			   (match_operand:QI 2 "const_0_to_63_operand" "J"))
  		(subreg:DI
  		  (lshiftrt:TI
  		    (zero_extend:TI
  		      (match_operand:DI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_255_operand" "N")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && INTVAL (operands[3]) == 64 - INTVAL (operands[2])"
--- 12676,12690 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "x86_64_shld_1"
    [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
          (ior:DI (ashift:DI (match_dup 0)
! 			   (match_operand:QI 2 "const_0_to_63_operand"))
  		(subreg:DI
  		  (lshiftrt:TI
  		    (zero_extend:TI
  		      (match_operand:DI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_255_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && INTVAL (operands[3]) == 64 - INTVAL (operands[2])"
***************
*** 11825,11830 ****
--- 12697,12738 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
+ (define_insn_and_split "*x86_64_shld_shrd_1_nozext"
+   [(set (match_operand:DI 0 "nonimmediate_operand")
+ 	(ior:DI (ashift:DI (match_operand:DI 4 "nonimmediate_operand")
+ 			     (match_operand:QI 2 "const_0_to_63_operand"))
+ 		(lshiftrt:DI
+ 		  (match_operand:DI 1 "nonimmediate_operand")
+ 		  (match_operand:QI 3 "const_0_to_63_operand"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT
+    && INTVAL (operands[3]) == 64 - INTVAL (operands[2])
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   if (rtx_equal_p (operands[4], operands[0]))
+     {
+       operands[1] = force_reg (DImode, operands[1]);
+       emit_insn (gen_x86_64_shld_1 (operands[0], operands[1], operands[2], operands[3]));
+     }
+   else if (rtx_equal_p (operands[1], operands[0]))
+     {
+       operands[4] = force_reg (DImode, operands[4]);
+       emit_insn (gen_x86_64_shrd_1 (operands[0], operands[4], operands[3], operands[2]));
+     }
+   else
+    {
+      operands[1] = force_reg (DImode, operands[1]);
+      rtx tmp = gen_reg_rtx (DImode);
+      emit_move_insn (tmp, operands[4]);
+      emit_insn (gen_x86_64_shld_1 (tmp, operands[1], operands[2], operands[3]));
+      emit_move_insn (operands[0], tmp);
+    }
+    DONE;
+ })
+ 
  (define_insn_and_split "*x86_64_shld_2"
    [(set (match_operand:DI 0 "nonimmediate_operand")
  	(ior:DI (ashift:DI (match_dup 0)
***************
*** 11868,11882 ****
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "*x86_shld_1"
    [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m")
          (ior:SI (ashift:SI (match_dup 0)
! 			   (match_operand:QI 2 "const_0_to_31_operand" "I"))
  		(subreg:SI
  		  (lshiftrt:DI
  		    (zero_extend:DI
  		      (match_operand:SI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_63_operand" "J")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "INTVAL (operands[3]) == 32 - INTVAL (operands[2])"
    "shld{l}\t{%2, %1, %0|%0, %1, %2}"
--- 12776,12790 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "x86_shld_1"
    [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m")
          (ior:SI (ashift:SI (match_dup 0)
! 			   (match_operand:QI 2 "const_0_to_31_operand"))
  		(subreg:SI
  		  (lshiftrt:DI
  		    (zero_extend:DI
  		      (match_operand:SI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_63_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "INTVAL (operands[3]) == 32 - INTVAL (operands[2])"
    "shld{l}\t{%2, %1, %0|%0, %1, %2}"
***************
*** 11889,11894 ****
--- 12797,12837 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
+ (define_insn_and_split "*x86_shld_shrd_1_nozext"
+   [(set (match_operand:SI 0 "nonimmediate_operand")
+ 	(ior:SI (ashift:SI (match_operand:SI 4 "nonimmediate_operand")
+ 			     (match_operand:QI 2 "const_0_to_31_operand"))
+ 	       (lshiftrt:SI
+ 		   (match_operand:SI 1 "nonimmediate_operand")
+ 		   (match_operand:QI 3 "const_0_to_31_operand"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "INTVAL (operands[3]) == 32 - INTVAL (operands[2])
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   if (rtx_equal_p (operands[4], operands[0]))
+     {
+       operands[1] = force_reg (SImode, operands[1]);
+       emit_insn (gen_x86_shld_1 (operands[0], operands[1], operands[2], operands[3]));
+     }
+   else if (rtx_equal_p (operands[1], operands[0]))
+     {
+       operands[4] = force_reg (SImode, operands[4]);
+       emit_insn (gen_x86_shrd_1 (operands[0], operands[4], operands[3], operands[2]));
+     }
+   else
+    {
+      operands[1] = force_reg (SImode, operands[1]);
+      rtx tmp = gen_reg_rtx (SImode);
+      emit_move_insn (tmp, operands[4]);
+      emit_insn (gen_x86_shld_1 (tmp, operands[1], operands[2], operands[3]));
+      emit_move_insn (operands[0], tmp);
+    }
+    DONE;
+ })
+ 
  (define_insn_and_split "*x86_shld_2"
    [(set (match_operand:SI 0 "nonimmediate_operand")
  	(ior:SI (ashift:SI (match_dup 0)
***************
*** 11961,11969 ****
  	(ashift:SWI48
  	  (match_operand:SWI48 1 "nonimmediate_operand")
  	  (subreg:QI
! 	    (and:SI
! 	      (match_operand:SI 2 "register_operand" "c,r")
! 	      (match_operand:SI 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands)
     && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
--- 12904,12912 ----
  	(ashift:SWI48
  	  (match_operand:SWI48 1 "nonimmediate_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand" "c,r")
! 	      (match_operand 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (ASHIFT, <MODE>mode, operands)
     && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
***************
*** 11976,11982 ****
  	   (ashift:SWI48 (match_dup 1)
  			 (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[2] = gen_lowpart (QImode, operands[2]);"
    [(set_attr "isa" "*,bmi2")])
  
  (define_insn_and_split "*ashl<mode>3_mask_1"
--- 12919,12928 ----
  	   (ashift:SWI48 (match_dup 1)
  			 (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
!   operands[2] = gen_lowpart (QImode, operands[2]);
! }
    [(set_attr "isa" "*,bmi2")])
  
  (define_insn_and_split "*ashl<mode>3_mask_1"
***************
*** 12396,12402 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (ashift:SI (match_operand:SI 1 "register_operand" "0")
! 		     (match_operand:QI 2 "const_1_to_31_operand" "I"))
  	  (const_int 0)))
     (set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI (ashift:SI (match_dup 1) (match_dup 2))))]
--- 13342,13348 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (ashift:SI (match_operand:SI 1 "register_operand" "0")
! 		     (match_operand:QI 2 "const_1_to_31_operand"))
  	  (const_int 0)))
     (set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI (ashift:SI (match_dup 1) (match_dup 2))))]
***************
*** 12488,12501 ****
  
  (define_insn "*ashlqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (ashift:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (match_operand:QI 2 "nonmemory_operand" "cI")) 0))
--- 13434,13447 ----
  
  (define_insn "*ashlqi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (ashift:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (match_operand:QI 2 "nonmemory_operand" "cI")) 0))
***************
*** 12549,12557 ****
  	(any_shiftrt:SWI48
  	  (match_operand:SWI48 1 "nonimmediate_operand")
  	  (subreg:QI
! 	    (and:SI
! 	      (match_operand:SI 2 "register_operand" "c,r")
! 	      (match_operand:SI 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)
     && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
--- 13495,13503 ----
  	(any_shiftrt:SWI48
  	  (match_operand:SWI48 1 "nonimmediate_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand" "c,r")
! 	      (match_operand 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)
     && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
***************
*** 12564,12570 ****
  	   (any_shiftrt:SWI48 (match_dup 1)
  			      (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[2] = gen_lowpart (QImode, operands[2]);"
    [(set_attr "isa" "*,bmi2")])
  
  (define_insn_and_split "*<insn><mode>3_mask_1"
--- 13510,13519 ----
  	   (any_shiftrt:SWI48 (match_dup 1)
  			      (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
!   operands[2] = gen_lowpart (QImode, operands[2]);
! }
    [(set_attr "isa" "*,bmi2")])
  
  (define_insn_and_split "*<insn><mode>3_mask_1"
***************
*** 12594,12604 ****
  	(any_shiftrt:<DWI>
  	  (match_operand:<DWI> 1 "register_operand")
  	  (subreg:QI
! 	    (and:SI
! 	      (match_operand:SI 2 "register_operand" "c")
! 	      (match_operand:SI 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
!   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 13543,13555 ----
  	(any_shiftrt:<DWI>
  	  (match_operand:<DWI> 1 "register_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand" "c")
! 	      (match_operand 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
!   "((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
!     || ((INTVAL (operands[3]) & (2 * <MODE_SIZE> * BITS_PER_UNIT - 1))
! 	 == (2 * <MODE_SIZE> * BITS_PER_UNIT - 1)))
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 12616,12621 ****
--- 13567,13581 ----
  	   (any_shiftrt:DWIH (match_dup 7) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
+   if ((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) != 0)
+     {
+       operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
+       operands[2] = gen_lowpart (QImode, operands[2]);
+       emit_insn (gen_<insn><dwi>3_doubleword (operands[0], operands[1],
+ 					      operands[2]));
+       DONE;
+     }
+ 
    split_double_mode (<DWI>mode, &operands[0], 2, &operands[4], &operands[6]);
  
    operands[8] = GEN_INT (<MODE_SIZE> * BITS_PER_UNIT - 1);
***************
*** 12624,12634 ****
    if ((INTVAL (operands[3]) & ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
        != ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
      {
!       rtx tem = gen_reg_rtx (SImode);
!       emit_insn (gen_andsi3 (tem, operands[2], operands[3]));
!       operands[2] = tem;
      }
  
    operands[2] = gen_lowpart (QImode, operands[2]);
  
    if (!rtx_equal_p (operands[4], operands[5]))
--- 13584,13599 ----
    if ((INTVAL (operands[3]) & ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
        != ((<MODE_SIZE> * BITS_PER_UNIT) - 1))
      {
!       rtx xops[3];
!       xops[0] = gen_reg_rtx (GET_MODE (operands[2]));
!       xops[1] = operands[2];
!       xops[2] = GEN_INT (INTVAL (operands[3])
! 			 & ((<MODE_SIZE> * BITS_PER_UNIT) - 1));
!       ix86_expand_binary_operator (AND, GET_MODE (operands[2]), xops);
!       operands[2] = xops[0];
      }
  
+   operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
    operands[2] = gen_lowpart (QImode, operands[2]);
  
    if (!rtx_equal_p (operands[4], operands[5]))
***************
*** 12643,12649 ****
  	    (match_operand:QI 2 "register_operand" "c")
  	    (match_operand:QI 3 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
!   "(INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
--- 13608,13616 ----
  	    (match_operand:QI 2 "register_operand" "c")
  	    (match_operand:QI 3 "const_int_operand"))))
     (clobber (reg:CC FLAGS_REG))]
!   "((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) == 0
!     || ((INTVAL (operands[3]) & (2 * <MODE_SIZE> * BITS_PER_UNIT - 1))
! 	 == (2 * <MODE_SIZE> * BITS_PER_UNIT - 1)))
     && ix86_pre_reload_split ()"
    "#"
    "&& 1"
***************
*** 12661,12666 ****
--- 13628,13640 ----
  	   (any_shiftrt:DWIH (match_dup 7) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
+   if ((INTVAL (operands[3]) & (<MODE_SIZE> * BITS_PER_UNIT)) != 0)
+     {
+       emit_insn (gen_<insn><dwi>3_doubleword (operands[0], operands[1],
+ 					      operands[2]));
+       DONE;
+     }
+ 
    split_double_mode (<DWI>mode, &operands[0], 2, &operands[4], &operands[6]);
  
    operands[8] = GEN_INT (<MODE_SIZE> * BITS_PER_UNIT - 1);
***************
*** 12678,12684 ****
      emit_move_insn (operands[4], operands[5]);
  })
  
! (define_insn_and_split "*<insn><mode>3_doubleword"
    [(set (match_operand:DWI 0 "register_operand" "=&r")
  	(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
  			 (match_operand:QI 2 "nonmemory_operand" "<S>c")))
--- 13652,13658 ----
      emit_move_insn (operands[4], operands[5]);
  })
  
! (define_insn_and_split "<insn><mode>3_doubleword"
    [(set (match_operand:DWI 0 "register_operand" "=&r")
  	(any_shiftrt:DWI (match_operand:DWI 1 "register_operand" "0")
  			 (match_operand:QI 2 "nonmemory_operand" "<S>c")))
***************
*** 12727,12741 ****
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "*x86_64_shrd_1"
    [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
          (ior:DI (lshiftrt:DI (match_dup 0)
! 			     (match_operand:QI 2 "const_0_to_63_operand" "J"))
  		(subreg:DI
  		  (ashift:TI
  		    (zero_extend:TI
  		      (match_operand:DI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_255_operand" "N")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && INTVAL (operands[3]) == 64 - INTVAL (operands[2])"
--- 13701,13715 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "x86_64_shrd_1"
    [(set (match_operand:DI 0 "nonimmediate_operand" "+r*m")
          (ior:DI (lshiftrt:DI (match_dup 0)
! 			     (match_operand:QI 2 "const_0_to_63_operand"))
  		(subreg:DI
  		  (ashift:TI
  		    (zero_extend:TI
  		      (match_operand:DI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_255_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT
     && INTVAL (operands[3]) == 64 - INTVAL (operands[2])"
***************
*** 12748,12753 ****
--- 13722,13763 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
+ (define_insn_and_split "*x86_64_shrd_shld_1_nozext"
+   [(set (match_operand:DI 0 "nonimmediate_operand")
+ 	(ior:DI (lshiftrt:DI (match_operand:DI 4 "nonimmediate_operand")
+ 			     (match_operand:QI 2 "const_0_to_63_operand"))
+ 		(ashift:DI
+ 		  (match_operand:DI 1 "nonimmediate_operand")
+ 		  (match_operand:QI 3 "const_0_to_63_operand"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT
+    && INTVAL (operands[3]) == 64 - INTVAL (operands[2])
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   if (rtx_equal_p (operands[4], operands[0]))
+     {
+       operands[1] = force_reg (DImode, operands[1]);
+       emit_insn (gen_x86_64_shrd_1 (operands[0], operands[1], operands[2], operands[3]));
+     }
+   else if (rtx_equal_p (operands[1], operands[0]))
+     {
+       operands[4] = force_reg (DImode, operands[4]);
+       emit_insn (gen_x86_64_shld_1 (operands[0], operands[4], operands[3], operands[2]));
+     }
+   else
+    {
+      operands[1] = force_reg (DImode, operands[1]);
+      rtx tmp = gen_reg_rtx (DImode);
+      emit_move_insn (tmp, operands[4]);
+      emit_insn (gen_x86_64_shrd_1 (tmp, operands[1], operands[2], operands[3]));
+      emit_move_insn (operands[0], tmp);
+    }
+    DONE;
+ })
+ 
  (define_insn_and_split "*x86_64_shrd_2"
    [(set (match_operand:DI 0 "nonimmediate_operand")
  	(ior:DI (lshiftrt:DI (match_dup 0)
***************
*** 12791,12805 ****
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "*x86_shrd_1"
    [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m")
          (ior:SI (lshiftrt:SI (match_dup 0)
! 			     (match_operand:QI 2 "const_0_to_31_operand" "I"))
  		(subreg:SI
  		  (ashift:DI
  		    (zero_extend:DI
  		      (match_operand:SI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_63_operand" "J")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "INTVAL (operands[3]) == 32 - INTVAL (operands[2])"
    "shrd{l}\t{%2, %1, %0|%0, %1, %2}"
--- 13801,13815 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
! (define_insn "x86_shrd_1"
    [(set (match_operand:SI 0 "nonimmediate_operand" "+r*m")
          (ior:SI (lshiftrt:SI (match_dup 0)
! 			     (match_operand:QI 2 "const_0_to_31_operand"))
  		(subreg:SI
  		  (ashift:DI
  		    (zero_extend:DI
  		      (match_operand:SI 1 "register_operand" "r"))
! 		    (match_operand:QI 3 "const_0_to_63_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "INTVAL (operands[3]) == 32 - INTVAL (operands[2])"
    "shrd{l}\t{%2, %1, %0|%0, %1, %2}"
***************
*** 12812,12817 ****
--- 13822,13862 ----
     (set_attr "amdfam10_decode" "vector")
     (set_attr "bdver1_decode" "vector")])
  
+ (define_insn_and_split "*x86_shrd_shld_1_nozext"
+   [(set (match_operand:SI 0 "nonimmediate_operand")
+ 	(ior:SI (lshiftrt:SI (match_operand:SI 4 "nonimmediate_operand")
+ 			     (match_operand:QI 2 "const_0_to_31_operand"))
+ 	       (ashift:SI
+ 		   (match_operand:SI 1 "nonimmediate_operand")
+ 		   (match_operand:QI 3 "const_0_to_31_operand"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "INTVAL (operands[3]) == 32 - INTVAL (operands[2])
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   if (rtx_equal_p (operands[4], operands[0]))
+     {
+       operands[1] = force_reg (SImode, operands[1]);
+       emit_insn (gen_x86_shrd_1 (operands[0], operands[1], operands[2], operands[3]));
+     }
+   else if (rtx_equal_p (operands[1], operands[0]))
+     {
+       operands[4] = force_reg (SImode, operands[4]);
+       emit_insn (gen_x86_shld_1 (operands[0], operands[4], operands[3], operands[2]));
+     }
+   else
+    {
+      operands[1] = force_reg (SImode, operands[1]);
+      rtx tmp = gen_reg_rtx (SImode);
+      emit_move_insn (tmp, operands[4]);
+      emit_insn (gen_x86_shrd_1 (tmp, operands[1], operands[2], operands[3]));
+      emit_move_insn (operands[0], tmp);
+    }
+    DONE;
+ })
+ 
  (define_insn_and_split "*x86_shrd_2"
    [(set (match_operand:SI 0 "nonimmediate_operand")
  	(ior:SI (lshiftrt:SI (match_dup 0)
***************
*** 12943,12948 ****
--- 13988,14018 ----
         (const_string "*")))
     (set_attr "mode" "<MODE>")])
  
+ ;; Specialization of *lshr<mode>3_1 below, extracting the SImode
+ ;; highpart of a DI to be extracted, but allowing it to be clobbered.
+ (define_insn_and_split "*highpartdisi2"
+   [(set (subreg:DI (match_operand:SI 0 "register_operand" "=r,x,?k") 0)
+         (lshiftrt:DI (match_operand:DI 1 "register_operand" "0,0,k")
+ 		     (const_int 32)))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT"
+   "#"
+   "&& reload_completed"
+   [(parallel
+     [(set (match_dup 0) (lshiftrt:DI (match_dup 1) (const_int 32)))
+      (clobber (reg:CC FLAGS_REG))])]
+ {
+   if (SSE_REG_P (operands[0]))
+     {
+       rtx tmp = gen_rtx_REG (V4SImode, REGNO (operands[0]));
+       emit_insn (gen_sse_shufps_v4si (tmp, tmp, tmp,
+ 				      const1_rtx, const1_rtx,
+ 				      GEN_INT (5), GEN_INT (5)));
+       DONE;
+     }
+   operands[0] = gen_rtx_REG (DImode, REGNO (operands[0]));
+ })
+ 
  (define_insn "*lshr<mode>3_1"
    [(set (match_operand:SWI48 0 "nonimmediate_operand" "=rm,r,?k")
  	(lshiftrt:SWI48
***************
*** 13207,13213 ****
    [(set (reg FLAGS_REG)
  	(compare
  	  (any_shiftrt:SI (match_operand:SI 1 "register_operand" "0")
! 			  (match_operand:QI 2 "const_1_to_31_operand" "I"))
  	  (const_int 0)))
     (set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI (any_shiftrt:SI (match_dup 1) (match_dup 2))))]
--- 14277,14283 ----
    [(set (reg FLAGS_REG)
  	(compare
  	  (any_shiftrt:SI (match_operand:SI 1 "register_operand" "0")
! 			  (match_operand:QI 2 "const_1_to_31_operand"))
  	  (const_int 0)))
     (set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI (any_shiftrt:SI (match_dup 1) (match_dup 2))))]
***************
*** 13267,13280 ****
  
  (define_insn "*<insn>qi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand:SWI248 0 "register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (any_shiftrt:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand:SWI248 1 "register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (match_operand:QI 2 "nonmemory_operand" "cI")) 0))
--- 14337,14350 ----
  
  (define_insn "*<insn>qi_ext<mode>_2"
    [(set (zero_extract:SWI248
! 	  (match_operand 0 "int248_register_operand" "+Q")
  	  (const_int 8)
  	  (const_int 8))
  	(subreg:SWI248
  	  (any_shiftrt:QI
  	    (subreg:QI
  	      (zero_extract:SWI248
! 	        (match_operand 1 "int248_register_operand" "0")
  		(const_int 8)
  		(const_int 8)) 0)
  	    (match_operand:QI 2 "nonmemory_operand" "cI")) 0))
***************
*** 13309,13314 ****
--- 14379,14386 ----
    if (const_1_to_63_operand (operands[2], VOIDmode))
      emit_insn (gen_ix86_<insn>ti3_doubleword
  		(operands[0], operands[1], operands[2]));
+   else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 64)
+     emit_insn (gen_<insn>64ti2_doubleword (operands[0], operands[1]));
    else
      {
        rtx amount = force_reg (QImode, operands[2]);
***************
*** 13342,13347 ****
--- 14414,14421 ----
    else if (const_1_to_31_operand (operands[2], VOIDmode))
      emit_insn (gen_ix86_<insn>di3_doubleword
  		(operands[0], operands[1], operands[2]));
+   else if (CONST_INT_P (operands[2]) && INTVAL (operands[2]) == 32)
+     emit_insn (gen_<insn>32di2_doubleword (operands[0], operands[1]));
    else
      FAIL;
  
***************
*** 13361,13369 ****
  	(any_rotate:SWI
  	  (match_operand:SWI 1 "nonimmediate_operand")
  	  (subreg:QI
! 	    (and:SI
! 	      (match_operand:SI 2 "register_operand" "c")
! 	      (match_operand:SI 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)
     && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
--- 14435,14443 ----
  	(any_rotate:SWI
  	  (match_operand:SWI 1 "nonimmediate_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand" "c")
! 	      (match_operand 3 "const_int_operand")) 0)))
     (clobber (reg:CC FLAGS_REG))]
    "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)
     && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
***************
*** 13376,13391 ****
  	   (any_rotate:SWI (match_dup 1)
  			   (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[2] = gen_lowpart (QImode, operands[2]);")
  
  (define_split
    [(set (match_operand:SWI 0 "register_operand")
  	(any_rotate:SWI
  	  (match_operand:SWI 1 "const_int_operand")
  	  (subreg:QI
! 	    (and:SI
! 	      (match_operand:SI 2 "register_operand")
! 	      (match_operand:SI 3 "const_int_operand")) 0)))]
   "(INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode) - 1))
     == GET_MODE_BITSIZE (<MODE>mode) - 1"
   [(set (match_dup 4) (match_dup 1))
--- 14450,14468 ----
  	   (any_rotate:SWI (match_dup 1)
  			   (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
!   operands[2] = gen_lowpart (QImode, operands[2]);
! })
  
  (define_split
    [(set (match_operand:SWI 0 "register_operand")
  	(any_rotate:SWI
  	  (match_operand:SWI 1 "const_int_operand")
  	  (subreg:QI
! 	    (and
! 	      (match_operand 2 "int248_register_operand")
! 	      (match_operand 3 "const_int_operand")) 0)))]
   "(INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode) - 1))
     == GET_MODE_BITSIZE (<MODE>mode) - 1"
   [(set (match_dup 4) (match_dup 1))
***************
*** 13505,13510 ****
--- 14582,14623 ----
    split_double_mode (<DWI>mode, &operands[0], 1, &operands[4], &operands[5]);
  })
  
+ (define_insn_and_split "<insn>32di2_doubleword"
+  [(set (match_operand:DI 0 "register_operand" "=r,r,r")
+        (any_rotate:DI (match_operand:DI 1 "nonimmediate_operand" "0,r,o")
+                       (const_int 32)))]
+  "!TARGET_64BIT"
+  "#"
+  "&& reload_completed"
+  [(set (match_dup 0) (match_dup 3))
+   (set (match_dup 2) (match_dup 1))]
+ {
+   split_double_mode (DImode, &operands[0], 2, &operands[0], &operands[2]);
+   if (rtx_equal_p (operands[0], operands[1]))
+     {
+       emit_insn (gen_swapsi (operands[0], operands[2]));
+       DONE;
+     }
+ })
+ 
+ (define_insn_and_split "<insn>64ti2_doubleword"
+  [(set (match_operand:TI 0 "register_operand" "=r,r,r")
+        (any_rotate:TI (match_operand:TI 1 "nonimmediate_operand" "0,r,o")
+                       (const_int 64)))]
+  "TARGET_64BIT"
+  "#"
+  "&& reload_completed"
+  [(set (match_dup 0) (match_dup 3))
+   (set (match_dup 2) (match_dup 1))]
+ {
+   split_double_mode (TImode, &operands[0], 2, &operands[0], &operands[2]);
+   if (rtx_equal_p (operands[0], operands[1]))
+     {
+       emit_insn (gen_swapdi (operands[0], operands[2]));
+       DONE;
+     }
+ })
+ 
  (define_mode_attr rorx_immediate_operand
  	[(SI "const_0_to_31_operand")
  	 (DI "const_0_to_63_operand")])
***************
*** 13584,13590 ****
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		       (match_operand:QI 2 "const_0_to_31_operand" "I"))))]
    "TARGET_64BIT && TARGET_BMI2 && !optimize_function_for_size_p (cfun)"
    "rorx\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "rotatex")
--- 14697,14703 ----
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(zero_extend:DI
  	  (rotatert:SI (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		       (match_operand:QI 2 "const_0_to_31_operand"))))]
    "TARGET_64BIT && TARGET_BMI2 && !optimize_function_for_size_p (cfun)"
    "rorx\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "rotatex")
***************
*** 13751,13759 ****
  	  (ashift:SWI48
  	    (const_int 1)
  	    (subreg:QI
! 	      (and:SI
! 		(match_operand:SI 1 "register_operand")
! 		(match_operand:SI 2 "const_int_operand")) 0))
  	  (match_operand:SWI48 3 "register_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_USE_BT
--- 14864,14872 ----
  	  (ashift:SWI48
  	    (const_int 1)
  	    (subreg:QI
! 	      (and
! 		(match_operand 1 "int248_register_operand")
! 		(match_operand 2 "const_int_operand")) 0))
  	  (match_operand:SWI48 3 "register_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_USE_BT
***************
*** 13769,13775 ****
  			   (match_dup 1))
  	     (match_dup 3)))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[1] = gen_lowpart (QImode, operands[1]);")
  
  (define_insn_and_split "*<btsc><mode>_mask_1"
    [(set (match_operand:SWI48 0 "register_operand")
--- 14882,14891 ----
  			   (match_dup 1))
  	     (match_dup 3)))
        (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[1] = force_reg (GET_MODE (operands[1]), operands[1]);
!   operands[1] = gen_lowpart (QImode, operands[1]);
! })
  
  (define_insn_and_split "*<btsc><mode>_mask_1"
    [(set (match_operand:SWI48 0 "register_operand")
***************
*** 13816,13824 ****
  	  (rotate:SWI48
  	    (const_int -2)
  	    (subreg:QI
! 	      (and:SI
! 		(match_operand:SI 1 "register_operand")
! 		(match_operand:SI 2 "const_int_operand")) 0))
  	  (match_operand:SWI48 3 "register_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_USE_BT
--- 14932,14940 ----
  	  (rotate:SWI48
  	    (const_int -2)
  	    (subreg:QI
! 	      (and
! 		(match_operand 1 "int248_register_operand")
! 		(match_operand 2 "const_int_operand")) 0))
  	  (match_operand:SWI48 3 "register_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_USE_BT
***************
*** 13834,13840 ****
  			   (match_dup 1))
  	     (match_dup 3)))
        (clobber (reg:CC FLAGS_REG))])]
!   "operands[1] = gen_lowpart (QImode, operands[1]);")
  
  (define_insn_and_split "*btr<mode>_mask_1"
    [(set (match_operand:SWI48 0 "register_operand")
--- 14950,14959 ----
  			   (match_dup 1))
  	     (match_dup 3)))
        (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[1] = force_reg (GET_MODE (operands[1]), operands[1]);
!   operands[1] = gen_lowpart (QImode, operands[1]);
! })
  
  (define_insn_and_split "*btr<mode>_mask_1"
    [(set (match_operand:SWI48 0 "register_operand")
***************
*** 13937,13943 ****
  (define_insn "*btsq_imm"
    [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
  			 (const_int 1)
! 			 (match_operand 1 "const_0_to_63_operand" "J"))
  	(const_int 1))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
--- 15056,15062 ----
  (define_insn "*btsq_imm"
    [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
  			 (const_int 1)
! 			 (match_operand 1 "const_0_to_63_operand"))
  	(const_int 1))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
***************
*** 13950,13956 ****
  (define_insn "*btrq_imm"
    [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
  			 (const_int 1)
! 			 (match_operand 1 "const_0_to_63_operand" "J"))
  	(const_int 0))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
--- 15069,15075 ----
  (define_insn "*btrq_imm"
    [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
  			 (const_int 1)
! 			 (match_operand 1 "const_0_to_63_operand"))
  	(const_int 0))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
***************
*** 13963,13969 ****
  (define_insn "*btcq_imm"
    [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
  			 (const_int 1)
! 			 (match_operand 1 "const_0_to_63_operand" "J"))
  	(not:DI (zero_extract:DI (match_dup 0) (const_int 1) (match_dup 1))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
--- 15082,15088 ----
  (define_insn "*btcq_imm"
    [(set (zero_extract:DI (match_operand:DI 0 "nonimmediate_operand" "+rm")
  			 (const_int 1)
! 			 (match_operand 1 "const_0_to_63_operand"))
  	(not:DI (zero_extract:DI (match_dup 0) (const_int 1) (match_dup 1))))
     (clobber (reg:CC FLAGS_REG))]
    "TARGET_64BIT && (TARGET_USE_BT || reload_completed)"
***************
*** 14185,14190 ****
--- 15304,15347 ----
    PUT_CODE (operands[0], reverse_condition (GET_CODE (operands[0])));
  })
  
+ (define_insn_and_split "*jcc_bt<mode>_mask_1"
+   [(set (pc)
+ 	(if_then_else (match_operator 0 "bt_comparison_operator"
+ 			[(zero_extract:SWI48
+ 			   (match_operand:SWI48 1 "register_operand")
+ 			   (const_int 1)
+ 			   (zero_extend:SI
+ 			     (subreg:QI
+ 			       (and
+ 				 (match_operand 2 "int248_register_operand")
+ 				 (match_operand 3 "const_int_operand")) 0)))])
+ 		      (label_ref (match_operand 4))
+ 		      (pc)))
+    (clobber (reg:CC FLAGS_REG))]
+   "(TARGET_USE_BT || optimize_function_for_size_p (cfun))
+    && (INTVAL (operands[3]) & (GET_MODE_BITSIZE (<MODE>mode)-1))
+       == GET_MODE_BITSIZE (<MODE>mode)-1
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (reg:CCC FLAGS_REG)
+ 	(compare:CCC
+ 	  (zero_extract:SWI48
+ 	    (match_dup 1)
+ 	    (const_int 1)
+ 	    (match_dup 2))
+ 	  (const_int 0)))
+    (set (pc)
+ 	(if_then_else (match_op_dup 0 [(reg:CCC FLAGS_REG) (const_int 0)])
+ 		      (label_ref (match_dup 4))
+ 		      (pc)))]
+ {
+   operands[2] = force_reg (GET_MODE (operands[2]), operands[2]);
+   operands[2] = gen_lowpart (SImode, operands[2]);
+   operands[0] = shallow_copy_rtx (operands[0]);
+   PUT_CODE (operands[0], reverse_condition (GET_CODE (operands[0])));
+ })
+ 
  ;; Help combine recognize bt followed by cmov
  (define_split
    [(set (match_operand:SWI248 0 "register_operand")
***************
*** 14491,14497 ****
  	(unspec:QI
  	  [(match_operand:HF 1 "register_operand" "v")
  	   (match_operand:HF 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_31_operand" "n")]
  	  UNSPEC_PCMP))]
    "TARGET_AVX512FP16"
    "vcmpsh\t{%3, %2, %1, %0|%0, %1, %2, %3}"
--- 15648,15654 ----
  	(unspec:QI
  	  [(match_operand:HF 1 "register_operand" "v")
  	   (match_operand:HF 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_31_operand")]
  	  UNSPEC_PCMP))]
    "TARGET_AVX512FP16"
    "vcmpsh\t{%3, %2, %1, %0|%0, %1, %2, %3}"
***************
*** 14719,14725 ****
  ;; Convert setcc + movzbl to xor + setcc if operands don't overlap.
  
  (define_peephole2
!   [(set (reg FLAGS_REG) (match_operand 0))
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))
--- 15876,15882 ----
  ;; Convert setcc + movzbl to xor + setcc if operands don't overlap.
  
  (define_peephole2
!   [(set (match_operand 4 "flags_reg_operand") (match_operand 0))
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))
***************
*** 14733,14745 ****
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
  {
-   operands[4] = gen_rtx_REG (GET_MODE (operands[0]), FLAGS_REG);
    operands[5] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(parallel [(set (reg FLAGS_REG) (match_operand 0))
  	      (match_operand 4)])
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
--- 15890,15901 ----
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
  {
    operands[5] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(parallel [(set (match_operand 5 "flags_reg_operand") (match_operand 0))
  	      (match_operand 4)])
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
***************
*** 14757,14770 ****
     (set (strict_low_part (match_dup 6))
  	(match_dup 2))]
  {
-   operands[5] = gen_rtx_REG (GET_MODE (operands[0]), FLAGS_REG);
    operands[6] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(set (reg FLAGS_REG) (match_operand 0))
!    (parallel [(set (reg FLAGS_REG) (match_operand 1))
  	      (match_operand 5)])
     (set (match_operand:QI 2 "register_operand")
  	(match_operator:QI 3 "ix86_comparison_operator"
--- 15913,15925 ----
     (set (strict_low_part (match_dup 6))
  	(match_dup 2))]
  {
    operands[6] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(set (match_operand 6 "flags_reg_operand") (match_operand 0))
!    (parallel [(set (match_operand 7 "flags_reg_operand") (match_operand 1))
  	      (match_operand 5)])
     (set (match_operand:QI 2 "register_operand")
  	(match_operator:QI 3 "ix86_comparison_operator"
***************
*** 14785,14792 ****
     (set (strict_low_part (match_dup 8))
  	(match_dup 3))]
  {
-   operands[6] = gen_rtx_REG (GET_MODE (operands[0]), FLAGS_REG);
-   operands[7] = gen_rtx_REG (GET_MODE (operands[1]), FLAGS_REG);
    operands[8] = gen_lowpart (QImode, operands[4]);
    ix86_expand_clear (operands[4]);
  })
--- 15940,15945 ----
***************
*** 14794,14800 ****
  ;; Similar, but match zero extend with andsi3.
  
  (define_peephole2
!   [(set (reg FLAGS_REG) (match_operand 0))
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))
--- 15947,15953 ----
  ;; Similar, but match zero extend with andsi3.
  
  (define_peephole2
!   [(set (match_operand 4 "flags_reg_operand") (match_operand 0))
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
  	  [(reg FLAGS_REG) (const_int 0)]))
***************
*** 14808,14820 ****
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
  {
-   operands[4] = gen_rtx_REG (GET_MODE (operands[0]), FLAGS_REG);
    operands[5] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(parallel [(set (reg FLAGS_REG) (match_operand 0))
  	      (match_operand 4)])
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
--- 15961,15972 ----
     (set (strict_low_part (match_dup 5))
  	(match_dup 2))]
  {
    operands[5] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(parallel [(set (match_operand 5 "flags_reg_operand") (match_operand 0))
  	      (match_operand 4)])
     (set (match_operand:QI 1 "register_operand")
  	(match_operator:QI 2 "ix86_comparison_operator"
***************
*** 14833,14846 ****
     (set (strict_low_part (match_dup 6))
  	(match_dup 2))]
  {
-   operands[5] = gen_rtx_REG (GET_MODE (operands[0]), FLAGS_REG);
    operands[6] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(set (reg FLAGS_REG) (match_operand 0))
!    (parallel [(set (reg FLAGS_REG) (match_operand 1))
  	      (match_operand 5)])
     (set (match_operand:QI 2 "register_operand")
  	(match_operator:QI 3 "ix86_comparison_operator"
--- 15985,15997 ----
     (set (strict_low_part (match_dup 6))
  	(match_dup 2))]
  {
    operands[6] = gen_lowpart (QImode, operands[3]);
    ix86_expand_clear (operands[3]);
  })
  
  (define_peephole2
!   [(set (match_operand 6 "flags_reg_operand") (match_operand 0))
!    (parallel [(set (match_operand 7 "flags_reg_operand") (match_operand 1))
  	      (match_operand 5)])
     (set (match_operand:QI 2 "register_operand")
  	(match_operator:QI 3 "ix86_comparison_operator"
***************
*** 14862,14869 ****
     (set (strict_low_part (match_dup 8))
  	(match_dup 3))]
  {
-   operands[6] = gen_rtx_REG (GET_MODE (operands[0]), FLAGS_REG);
-   operands[7] = gen_rtx_REG (GET_MODE (operands[1]), FLAGS_REG);
    operands[8] = gen_lowpart (QImode, operands[4]);
    ix86_expand_clear (operands[4]);
  })
--- 16013,16018 ----
***************
*** 15938,15943 ****
--- 17087,17152 ----
     (set_attr "prefix_rep" "1")
     (set_attr "mode" "SI")])
  
+ (define_insn_and_split "*ctzsidi2_<s>ext"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(any_extend:DI
+ 	  (ctz:SI
+ 	    (match_operand:SI 1 "nonimmediate_operand" "rm"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT"
+ {
+   if (TARGET_BMI)
+     return "tzcnt{l}\t{%1, %k0|%k0, %1}";
+   else if (TARGET_CPU_P (GENERIC)
+ 	   && !optimize_function_for_size_p (cfun))
+     /* tzcnt expands to 'rep bsf' and we can use it even if !TARGET_BMI.  */
+     return "rep%; bsf{l}\t{%1, %k0|%k0, %1}";
+   return "bsf{l}\t{%1, %k0|%k0, %1}";
+ }
+   "(TARGET_BMI || TARGET_CPU_P (GENERIC))
+    && TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
+    && optimize_function_for_speed_p (cfun)
+    && !reg_mentioned_p (operands[0], operands[1])"
+   [(parallel
+     [(set (match_dup 0)
+ 	  (any_extend:DI (ctz:SI (match_dup 1))))
+      (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)
+      (clobber (reg:CC FLAGS_REG))])]
+   "ix86_expand_clear (operands[0]);"
+   [(set_attr "type" "alu1")
+    (set_attr "prefix_0f" "1")
+    (set (attr "prefix_rep")
+      (if_then_else
+        (ior (match_test "TARGET_BMI")
+ 	    (and (not (match_test "optimize_function_for_size_p (cfun)"))
+ 		 (match_test "TARGET_CPU_P (GENERIC)")))
+        (const_string "1")
+        (const_string "0")))
+    (set_attr "mode" "SI")])
+ 
+ (define_insn "*ctzsidi2_<s>ext_falsedep"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(any_extend:DI
+ 	  (ctz:SI
+ 	    (match_operand:SI 1 "nonimmediate_operand" "rm"))))
+    (unspec [(match_operand:DI 2 "register_operand" "0")]
+ 	   UNSPEC_INSN_FALSE_DEP)
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT"
+ {
+   if (TARGET_BMI)
+     return "tzcnt{l}\t{%1, %k0|%k0, %1}";
+   else if (TARGET_CPU_P (GENERIC))
+     /* tzcnt expands to 'rep bsf' and we can use it even if !TARGET_BMI.  */
+     return "rep%; bsf{l}\t{%1, %k0|%k0, %1}";
+   else
+     gcc_unreachable ();
+ }
+   [(set_attr "type" "alu1")
+    (set_attr "prefix_0f" "1")
+    (set_attr "prefix_rep" "1")
+    (set_attr "mode" "SI")])
+ 
  (define_insn "bsr_rex64"
    [(set (reg:CCZ FLAGS_REG)
  	(compare:CCZ (match_operand:DI 1 "nonimmediate_operand" "rm")
***************
*** 16281,16286 ****
--- 17490,17531 ----
     (set_attr "type" "bitmanip")
     (set_attr "mode" "SI")])
  
+ (define_insn_and_split "*clzsi2_lzcnt_zext_2"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (clz:SI (match_operand:SI 1 "nonimmediate_operand" "rm"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_LZCNT && TARGET_64BIT"
+   "lzcnt{l}\t{%1, %k0|%k0, %1}"
+   "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
+    && optimize_function_for_speed_p (cfun)
+    && !reg_mentioned_p (operands[0], operands[1])"
+   [(parallel
+     [(set (match_dup 0)
+ 	  (zero_extend:DI (clz:SI (match_dup 1))))
+      (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)
+      (clobber (reg:CC FLAGS_REG))])]
+   "ix86_expand_clear (operands[0]);"
+   [(set_attr "prefix_rep" "1")
+    (set_attr "type" "bitmanip")
+    (set_attr "mode" "SI")])
+ 
+ ; False dependency happens when destination is only updated by tzcnt,
+ ; lzcnt or popcnt.  There is no false dependency when destination is
+ ; also used in source.
+ (define_insn "*clzsi2_lzcnt_zext_2_falsedep"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (clz:SI (match_operand:SWI48 1 "nonimmediate_operand" "rm"))))
+    (unspec [(match_operand:DI 2 "register_operand" "0")]
+ 	   UNSPEC_INSN_FALSE_DEP)
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_LZCNT"
+   "lzcnt{l}\t{%1, %k0|%k0, %1}"
+   [(set_attr "prefix_rep" "1")
+    (set_attr "type" "bitmanip")
+    (set_attr "mode" "SI")])
+ 
  (define_int_iterator LT_ZCNT
  	[(UNSPEC_TZCNT "TARGET_BMI")
  	 (UNSPEC_LZCNT "TARGET_LZCNT")])
***************
*** 16508,16514 ****
  	  (zero_extract:SWI48
  	    (match_operand:SWI48 1 "nonimmediate_operand" "rm")
  	    (umin:SWI48 (and:SWI48 (match_dup 2) (const_int 255))
! 			(match_operand:SWI48 3 "const_int_operand" "n"))
  	    (const_int 0))
  	  (const_int 0)))
     (clobber (reg:CC FLAGS_REG))]
--- 17753,17759 ----
  	  (zero_extract:SWI48
  	    (match_operand:SWI48 1 "nonimmediate_operand" "rm")
  	    (umin:SWI48 (and:SWI48 (match_dup 2) (const_int 255))
! 			(match_operand:SWI48 3 "const_int_operand"))
  	    (const_int 0))
  	  (const_int 0)))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 16525,16531 ****
  	  (zero_extract:SWI48
  	    (match_operand:SWI48 1 "nonimmediate_operand" "rm")
  	    (umin:SWI48 (zero_extend:SWI48 (match_dup 2))
! 			(match_operand:SWI48 3 "const_int_operand" "n"))
  	    (const_int 0))
  	  (const_int 0)))
     (clobber (reg:CC FLAGS_REG))]
--- 17770,17776 ----
  	  (zero_extract:SWI48
  	    (match_operand:SWI48 1 "nonimmediate_operand" "rm")
  	    (umin:SWI48 (zero_extend:SWI48 (match_dup 2))
! 			(match_operand:SWI48 3 "const_int_operand"))
  	    (const_int 0))
  	  (const_int 0)))
     (clobber (reg:CC FLAGS_REG))]
***************
*** 16543,16549 ****
  	    (zero_extract:SWI48
  	      (match_operand:SWI48 1 "nonimmediate_operand" "rm")
  	      (umin:SWI48 (zero_extend:SWI48 (match_dup 2))
! 			  (match_operand:SWI48 3 "const_int_operand" "n"))
  	      (const_int 0))
  	    (const_int 0))
  	(const_int 0)))
--- 17788,17794 ----
  	    (zero_extract:SWI48
  	      (match_operand:SWI48 1 "nonimmediate_operand" "rm")
  	      (umin:SWI48 (zero_extend:SWI48 (match_dup 2))
! 			  (match_operand:SWI48 3 "const_int_operand"))
  	      (const_int 0))
  	    (const_int 0))
  	(const_int 0)))
***************
*** 16583,16588 ****
--- 17828,17865 ----
     (set_attr "prefix" "vex")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "*bmi2_bzhi_zero_extendsidi_4"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (and:SI
+ 	    (plus:SI
+ 	      (ashift:SI (const_int 1)
+ 			 (match_operand:QI 2 "register_operand" "r"))
+ 	      (const_int -1))
+ 	    (match_operand:SI 1 "nonimmediate_operand" "rm"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT && TARGET_BMI2"
+   "bzhi\t{%q2, %q1, %q0|%q0, %q1, %q2}"
+   [(set_attr "type" "bitmanip")
+    (set_attr "prefix" "vex")
+    (set_attr "mode" "DI")])
+ 
+ (define_insn "*bmi2_bzhi_zero_extendsidi_5"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(and:DI
+ 	  (zero_extend:DI
+ 	    (plus:SI
+ 	      (ashift:SI (const_int 1)
+ 			 (match_operand:QI 2 "register_operand" "r"))
+ 	      (const_int -1)))
+ 	  (match_operand:DI 1 "nonimmediate_operand" "rm")))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_64BIT && TARGET_BMI2"
+   "bzhi\t{%q2, %q1, %q0|%q0, %q1, %q2}"
+   [(set_attr "type" "bitmanip")
+    (set_attr "prefix" "vex")
+    (set_attr "mode" "DI")])
+ 
  (define_insn "bmi2_pdep_<mode>3"
    [(set (match_operand:SWI48 0 "register_operand" "=r")
          (unspec:SWI48 [(match_operand:SWI48 1 "register_operand" "r")
***************
*** 16610,16617 ****
    [(set (match_operand:SWI48 0 "register_operand" "=r")
          (zero_extract:SWI48
            (match_operand:SWI48 1 "nonimmediate_operand" "rm")
!           (match_operand 2 "const_0_to_255_operand" "N")
!           (match_operand 3 "const_0_to_255_operand" "N")))
     (clobber (reg:CC FLAGS_REG))]
     "TARGET_TBM"
  {
--- 17887,17894 ----
    [(set (match_operand:SWI48 0 "register_operand" "=r")
          (zero_extract:SWI48
            (match_operand:SWI48 1 "nonimmediate_operand" "rm")
!           (match_operand 2 "const_0_to_255_operand")
!           (match_operand 3 "const_0_to_255_operand")))
     (clobber (reg:CC FLAGS_REG))]
     "TARGET_TBM"
  {
***************
*** 16845,16850 ****
--- 18122,18175 ----
     (set_attr "type" "bitmanip")
     (set_attr "mode" "SI")])
  
+ (define_insn_and_split "*popcountsi2_zext_2"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (popcount:SI (match_operand:SI 1 "nonimmediate_operand" "rm"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_POPCNT && TARGET_64BIT"
+ {
+ #if TARGET_MACHO
+   return "popcnt\t{%1, %k0|%k0, %1}";
+ #else
+   return "popcnt{l}\t{%1, %k0|%k0, %1}";
+ #endif
+ }
+   "&& TARGET_AVOID_FALSE_DEP_FOR_BMI && epilogue_completed
+    && optimize_function_for_speed_p (cfun)
+    && !reg_mentioned_p (operands[0], operands[1])"
+   [(parallel
+     [(set (match_dup 0)
+ 	  (zero_extend:DI (popcount:SI (match_dup 1))))
+      (unspec [(match_dup 0)] UNSPEC_INSN_FALSE_DEP)
+      (clobber (reg:CC FLAGS_REG))])]
+   "ix86_expand_clear (operands[0]);"
+   [(set_attr "prefix_rep" "1")
+    (set_attr "type" "bitmanip")
+    (set_attr "mode" "SI")])
+ 
+ ; False dependency happens when destination is only updated by tzcnt,
+ ; lzcnt or popcnt.  There is no false dependency when destination is
+ ; also used in source.
+ (define_insn "*popcountsi2_zext_2_falsedep"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI
+ 	  (popcount:SI (match_operand:SI 1 "nonimmediate_operand" "rm"))))
+    (unspec [(match_operand:DI 2 "register_operand" "0")]
+ 	   UNSPEC_INSN_FALSE_DEP)
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_POPCNT && TARGET_64BIT"
+ {
+ #if TARGET_MACHO
+   return "popcnt\t{%1, %k0|%k0, %1}";
+ #else
+   return "popcnt{l}\t{%1, %k0|%k0, %1}";
+ #endif
+ }
+   [(set_attr "prefix_rep" "1")
+    (set_attr "type" "bitmanip")
+    (set_attr "mode" "SI")])
+ 
  (define_insn_and_split "*popcounthi2_1"
    [(set (match_operand:SI 0 "register_operand")
  	(popcount:SI
***************
*** 16863,16868 ****
--- 18188,18211 ----
    DONE;
  })
  
+ (define_insn_and_split "*popcounthi2_2"
+   [(set (match_operand:SI 0 "register_operand")
+ 	(zero_extend:SI
+ 	  (popcount:HI (match_operand:HI 1 "nonimmediate_operand"))))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_POPCNT
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   rtx tmp = gen_reg_rtx (HImode);
+ 
+   emit_insn (gen_popcounthi2 (tmp, operands[1]));
+   emit_insn (gen_zero_extendhisi2 (operands[0], tmp));
+   DONE;
+ })
+ 
  (define_insn "popcounthi2"
    [(set (match_operand:HI 0 "register_operand" "=r")
  	(popcount:HI
***************
*** 17182,17187 ****
--- 18525,18563 ----
    PUT_CODE (operands[5], GET_CODE (operands[5]) == EQ ? UNORDERED : ORDERED);
  })
  
+ ;; Eliminate HImode popcount&1 using parity flag (variant 2)
+ (define_peephole2
+   [(match_scratch:HI 0 "Q")
+    (parallel [(set (match_operand:HI 1 "register_operand")
+ 		   (popcount:HI
+ 		    (match_operand:HI 2 "nonimmediate_operand")))
+ 	      (clobber (reg:CC FLAGS_REG))])
+    (set (reg:CCZ FLAGS_REG)
+         (compare:CCZ (and:QI (match_operand:QI 3 "register_operand")
+ 			     (const_int 1))
+ 		     (const_int 0)))
+    (set (pc) (if_then_else (match_operator 4 "bt_comparison_operator"
+ 			    [(reg:CCZ FLAGS_REG)
+ 			     (const_int 0)])
+ 			   (label_ref (match_operand 5))
+ 			   (pc)))]
+   "REGNO (operands[1]) == REGNO (operands[3])
+    && peep2_reg_dead_p (2, operands[1])
+    && peep2_reg_dead_p (2, operands[3])
+    && peep2_regno_dead_p (3, FLAGS_REG)"
+   [(set (match_dup 0) (match_dup 2))
+    (parallel [(set (reg:CC FLAGS_REG)
+ 		   (unspec:CC [(match_dup 0)] UNSPEC_PARITY))
+ 	      (clobber (match_dup 0))])
+    (set (pc) (if_then_else (match_op_dup 4 [(reg:CC FLAGS_REG)
+ 					    (const_int 0)])
+ 			   (label_ref (match_dup 5))
+ 			   (pc)))]
+ {
+   operands[4] = shallow_copy_rtx (operands[4]);
+   PUT_CODE (operands[4], GET_CODE (operands[4]) == EQ ? UNORDERED : ORDERED);
+ })
+ 
  
  ;; Thread-local storage patterns for ELF.
  ;;
***************
*** 18151,18158 ****
     (set (reg:CCFP FPSR_REG)
  	(unspec:CCFP [(match_dup 2) (match_dup 3)]
  		     UNSPEC_C2_FLAG))]
!   "TARGET_USE_FANCY_MATH_387
!    && flag_finite_math_only"
    "fprem"
    [(set_attr "type" "fpspc")
     (set_attr "znver1_decode" "vector")
--- 19527,19533 ----
     (set (reg:CCFP FPSR_REG)
  	(unspec:CCFP [(match_dup 2) (match_dup 3)]
  		     UNSPEC_C2_FLAG))]
!   "TARGET_USE_FANCY_MATH_387"
    "fprem"
    [(set_attr "type" "fpspc")
     (set_attr "znver1_decode" "vector")
***************
*** 18162,18169 ****
    [(use (match_operand:XF 0 "register_operand"))
     (use (match_operand:XF 1 "general_operand"))
     (use (match_operand:XF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387
!    && flag_finite_math_only"
  {
    rtx_code_label *label = gen_label_rtx ();
  
--- 19537,19543 ----
    [(use (match_operand:XF 0 "register_operand"))
     (use (match_operand:XF 1 "general_operand"))
     (use (match_operand:XF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387"
  {
    rtx_code_label *label = gen_label_rtx ();
  
***************
*** 18186,18193 ****
    [(use (match_operand:MODEF 0 "register_operand"))
     (use (match_operand:MODEF 1 "general_operand"))
     (use (match_operand:MODEF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387
!    && flag_finite_math_only"
  {
    rtx (*gen_truncxf) (rtx, rtx);
  
--- 19560,19566 ----
    [(use (match_operand:MODEF 0 "register_operand"))
     (use (match_operand:MODEF 1 "general_operand"))
     (use (match_operand:MODEF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387"
  {
    rtx (*gen_truncxf) (rtx, rtx);
  
***************
*** 18226,18233 ****
     (set (reg:CCFP FPSR_REG)
  	(unspec:CCFP [(match_dup 2) (match_dup 3)]
  		     UNSPEC_C2_FLAG))]
!   "TARGET_USE_FANCY_MATH_387
!    && flag_finite_math_only"
    "fprem1"
    [(set_attr "type" "fpspc")
     (set_attr "znver1_decode" "vector")
--- 19599,19605 ----
     (set (reg:CCFP FPSR_REG)
  	(unspec:CCFP [(match_dup 2) (match_dup 3)]
  		     UNSPEC_C2_FLAG))]
!   "TARGET_USE_FANCY_MATH_387"
    "fprem1"
    [(set_attr "type" "fpspc")
     (set_attr "znver1_decode" "vector")
***************
*** 18237,18244 ****
    [(use (match_operand:XF 0 "register_operand"))
     (use (match_operand:XF 1 "general_operand"))
     (use (match_operand:XF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387
!    && flag_finite_math_only"
  {
    rtx_code_label *label = gen_label_rtx ();
  
--- 19609,19615 ----
    [(use (match_operand:XF 0 "register_operand"))
     (use (match_operand:XF 1 "general_operand"))
     (use (match_operand:XF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387"
  {
    rtx_code_label *label = gen_label_rtx ();
  
***************
*** 18261,18268 ****
    [(use (match_operand:MODEF 0 "register_operand"))
     (use (match_operand:MODEF 1 "general_operand"))
     (use (match_operand:MODEF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387
!    && flag_finite_math_only"
  {
    rtx (*gen_truncxf) (rtx, rtx);
  
--- 19632,19638 ----
    [(use (match_operand:MODEF 0 "register_operand"))
     (use (match_operand:MODEF 1 "general_operand"))
     (use (match_operand:MODEF 2 "general_operand"))]
!   "TARGET_USE_FANCY_MATH_387"
  {
    rtx (*gen_truncxf) (rtx, rtx);
  
***************
*** 19234,19240 ****
    [(set (match_operand:MODEFH 0 "register_operand" "=x,x,x,v,v")
  	(unspec:MODEFH
  	  [(match_operand:MODEFH 1 "nonimmediate_operand" "0,x,m,v,m")
! 	   (match_operand:SI 2 "const_0_to_15_operand" "n,n,n,n,n")]
  	  UNSPEC_ROUND))]
    "TARGET_SSE4_1"
    "@
--- 20604,20610 ----
    [(set (match_operand:MODEFH 0 "register_operand" "=x,x,x,v,v")
  	(unspec:MODEFH
  	  [(match_operand:MODEFH 1 "nonimmediate_operand" "0,x,m,v,m")
! 	   (match_operand:SI 2 "const_0_to_15_operand")]
  	  UNSPEC_ROUND))]
    "TARGET_SSE4_1"
    "@
***************
*** 19400,19407 ****
     (set_attr "mode" "<MODE>")])
  
  (define_expand "lrint<MODEF:mode><SWI48:mode>2"
!   [(set (match_operand:SWI48 0 "nonimmediate_operand")
!      (unspec:SWI48 [(match_operand:MODEF 1 "register_operand")]
  		   UNSPEC_FIX_NOTRUNC))]
    "SSE_FLOAT_MODE_P (<MODEF:MODE>mode) && TARGET_SSE_MATH")
  
--- 20770,20777 ----
     (set_attr "mode" "<MODE>")])
  
  (define_expand "lrint<MODEF:mode><SWI48:mode>2"
!   [(set (match_operand:SWI48 0 "register_operand")
!      (unspec:SWI48 [(match_operand:MODEF 1 "nonimmediate_operand")]
  		   UNSPEC_FIX_NOTRUNC))]
    "SSE_FLOAT_MODE_P (<MODEF:MODE>mode) && TARGET_SSE_MATH")
  
***************
*** 19417,19425 ****
         && ((<SWI248x:MODE>mode != DImode) || TARGET_64BIT)
         && !flag_trapping_math && !flag_rounding_math)"
  {
-   if (optimize_insn_for_size_p ())
-     FAIL;
- 
    if (SSE_FLOAT_MODE_P (<X87MODEF:MODE>mode) && TARGET_SSE_MATH
        && <SWI248x:MODE>mode != HImode
        && ((<SWI248x:MODE>mode != DImode) || TARGET_64BIT)
--- 20787,20792 ----
***************
*** 20519,20524 ****
--- 21886,21897 ----
     (set_attr "mode" "<MODE>")
     (set_attr "length_immediate" "0")])
  
+ (define_expand "x86_mov<mode>cc_0_m1_neg"
+   [(parallel
+     [(set (match_operand:SWI48 0 "register_operand")
+ 	  (neg:SWI48 (ltu:SWI48 (reg:CCC FLAGS_REG) (const_int 0))))
+      (clobber (reg:CC FLAGS_REG))])])
+ 
  (define_split
    [(set (match_operand:SWI48 0 "register_operand")
  	(neg:SWI48
***************
*** 20552,20558 ****
  	    (const_int 0))))]
    ""
    [(set (reg:CCC FLAGS_REG)
! 	(ne:CCC (match_dup 1) (const_int 0)))
     (set (match_dup 0)
  	(neg:SWI (ltu:SWI (reg:CCC FLAGS_REG) (const_int 0))))])
  
--- 21925,21931 ----
  	    (const_int 0))))]
    ""
    [(set (reg:CCC FLAGS_REG)
! 	(unspec:CCC [(match_dup 1) (const_int 0)] UNSPEC_CC_NE))
     (set (match_dup 0)
  	(neg:SWI (ltu:SWI (reg:CCC FLAGS_REG) (const_int 0))))])
  
***************
*** 20722,20729 ****
  					  (match_dup 0)))]
  {
    operands[7] = SET_DEST (XVECEXP (PATTERN (peep2_next_insn (1)), 0, 0));
!   operands[8] = replace_rtx (operands[5], operands[0], operands[1], true);
!   operands[9] = replace_rtx (operands[6], operands[0], operands[1], true);
  })
  
  ;; Eliminate a reg-reg mov by inverting the condition of a cmov (#2).
--- 22095,22104 ----
  					  (match_dup 0)))]
  {
    operands[7] = SET_DEST (XVECEXP (PATTERN (peep2_next_insn (1)), 0, 0));
!   operands[8]
!     = ix86_replace_reg_with_reg (operands[5], operands[0], operands[1]);
!   operands[9]
!     = ix86_replace_reg_with_reg (operands[6], operands[0], operands[1]);
  })
  
  ;; Eliminate a reg-reg mov by inverting the condition of a cmov (#2).
***************
*** 20745,20751 ****
    && REGNO (operands[2]) != REGNO (operands[1])
    && peep2_reg_dead_p (2, operands[1])
    && peep2_reg_dead_p (4, operands[2])
!   && !reg_overlap_mentioned_p (operands[0], operands[3])"
   [(parallel [(set (match_dup 7) (match_dup 8))
  	     (set (match_dup 1) (match_dup 9))])
    (set (match_dup 0) (match_dup 3))
--- 22120,22127 ----
    && REGNO (operands[2]) != REGNO (operands[1])
    && peep2_reg_dead_p (2, operands[1])
    && peep2_reg_dead_p (4, operands[2])
!   && !reg_overlap_mentioned_p (operands[0], operands[3])
!   && !reg_mentioned_p (operands[2], operands[6])"
   [(parallel [(set (match_dup 7) (match_dup 8))
  	     (set (match_dup 1) (match_dup 9))])
    (set (match_dup 0) (match_dup 3))
***************
*** 20754,20761 ****
  					  (match_dup 0)))]
  {
    operands[7] = SET_DEST (XVECEXP (PATTERN (peep2_next_insn (2)), 0, 0));
!   operands[8] = replace_rtx (operands[5], operands[0], operands[1], true);
!   operands[9] = replace_rtx (operands[6], operands[0], operands[1], true);
  })
  
  (define_insn "movhf_mask"
--- 22130,22139 ----
  					  (match_dup 0)))]
  {
    operands[7] = SET_DEST (XVECEXP (PATTERN (peep2_next_insn (2)), 0, 0));
!   operands[8]
!     = ix86_replace_reg_with_reg (operands[5], operands[0], operands[1]);
!   operands[9]
!     = ix86_replace_reg_with_reg (operands[6], operands[0], operands[1]);
  })
  
  (define_insn "movhf_mask"
***************
*** 21426,21432 ****
  	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
  			    UNSPECV_PROBE_STACK_RANGE))
     (set (reg:P SP_REG)
!         (minus:P (reg:P SP_REG) (match_operand:P 2 "const_int_operand" "n")))
     (clobber (reg:CC FLAGS_REG))
     (clobber (mem:BLK (scratch)))]
    ""
--- 22804,22810 ----
  	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
  			    UNSPECV_PROBE_STACK_RANGE))
     (set (reg:P SP_REG)
!         (minus:P (reg:P SP_REG) (match_operand:P 2 "const_int_operand")))
     (clobber (reg:CC FLAGS_REG))
     (clobber (mem:BLK (scratch)))]
    ""
***************
*** 21436,21442 ****
  (define_insn "@probe_stack_range_<mode>"
    [(set (match_operand:P 0 "register_operand" "=r")
  	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
! 			    (match_operand:P 2 "const_int_operand" "n")]
  			    UNSPECV_PROBE_STACK_RANGE))
     (clobber (reg:CC FLAGS_REG))]
    ""
--- 22814,22820 ----
  (define_insn "@probe_stack_range_<mode>"
    [(set (match_operand:P 0 "register_operand" "=r")
  	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")
! 			    (match_operand:P 2 "const_int_operand")]
  			    UNSPECV_PROBE_STACK_RANGE))
     (clobber (reg:CC FLAGS_REG))]
    ""
***************
*** 21819,21825 ****
  	(match_operator 1 "compare_operator"
  	  [(and:QI
  	     (subreg:QI
! 	       (zero_extract:SWI248 (match_operand:SWI248 2 "QIreg_operand")
  				    (const_int 8)
  				    (const_int 8)) 0)
  	     (match_operand 3 "const_int_operand"))
--- 23197,23203 ----
  	(match_operator 1 "compare_operator"
  	  [(and:QI
  	     (subreg:QI
! 	       (zero_extract:SWI248 (match_operand 2 "int248_register_operand")
  				    (const_int 8)
  				    (const_int 8)) 0)
  	     (match_operand 3 "const_int_operand"))
***************
*** 21894,21900 ****
     (parallel [(set (match_dup 0)
  		   (match_op_dup 3 [(match_dup 0) (match_dup 1)]))
  	      (clobber (reg:CC FLAGS_REG))])]
!   "operands[4] = replace_rtx (operands[2], operands[0], operands[1], true);")
  
  (define_peephole2
    [(set (match_operand 0 "mmx_reg_operand")
--- 23272,23281 ----
     (parallel [(set (match_dup 0)
  		   (match_op_dup 3 [(match_dup 0) (match_dup 1)]))
  	      (clobber (reg:CC FLAGS_REG))])]
! {
!   operands[4]
!     = ix86_replace_reg_with_reg (operands[2], operands[0], operands[1]);
! })
  
  (define_peephole2
    [(set (match_operand 0 "mmx_reg_operand")
***************
*** 22880,22886 ****
  
  (define_insn "*prefetch_3dnow"
    [(prefetch (match_operand 0 "address_operand" "p")
! 	     (match_operand:SI 1 "const_int_operand" "n")
  	     (const_int 3))]
    "TARGET_3DNOW || TARGET_PRFCHW || TARGET_PREFETCHWT1"
  {
--- 24261,24267 ----
  
  (define_insn "*prefetch_3dnow"
    [(prefetch (match_operand 0 "address_operand" "p")
! 	     (match_operand:SI 1 "const_int_operand")
  	     (const_int 3))]
    "TARGET_3DNOW || TARGET_PRFCHW || TARGET_PREFETCHWT1"
  {
***************
*** 22905,22910 ****
--- 24286,24311 ----
  	(symbol_ref "memory_address_length (operands[0], false)"))
     (set_attr "memory" "none")])
  
+ (define_insn "prefetchi"
+   [(unspec_volatile [(match_operand 0 "local_func_symbolic_operand" "p")
+ 		     (match_operand:SI 1 "const_int_operand")]
+ 		    UNSPECV_PREFETCHI)]
+   "TARGET_PREFETCHI && TARGET_64BIT"
+ {
+   static const char * const patterns[2] = {
+     "prefetchit1\t%0", "prefetchit0\t%0"
+   };
+ 
+   int locality = INTVAL (operands[1]);
+   gcc_assert (IN_RANGE (locality, 2, 3));
+ 
+   return patterns[locality - 2];
+ }
+   [(set_attr "type" "sse")
+    (set (attr "length_address")
+ 	(symbol_ref "memory_address_length (operands[0], false)"))
+    (set_attr "memory" "none")])
+ 
  (define_expand "stack_protect_set"
    [(match_operand 0 "memory_operand")
     (match_operand 1 "memory_operand")]
***************
*** 23075,23084 ****
  
  (define_insn "sse4_2_crc32di"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(unspec:DI
! 	  [(match_operand:DI 1 "register_operand" "0")
! 	   (match_operand:DI 2 "nonimmediate_operand" "rm")]
! 	  UNSPEC_CRC32))]
    "TARGET_64BIT && TARGET_CRC32"
    "crc32{q}\t{%2, %0|%0, %2}"
    [(set_attr "type" "sselog1")
--- 24476,24486 ----
  
  (define_insn "sse4_2_crc32di"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(zero_extend:DI
! 	  (unspec:SI
! 	    [(match_operand:SI 1 "register_operand" "0")
! 	     (match_operand:DI 2 "nonimmediate_operand" "rm")]
! 	  UNSPEC_CRC32)))]
    "TARGET_64BIT && TARGET_CRC32"
    "crc32{q}\t{%2, %0|%0, %2}"
    [(set_attr "type" "sselog1")
***************
*** 23430,23436 ****
  (define_insn "@lwp_lwpval<mode>"
    [(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")
      	    	     (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		     (match_operand:SI 2 "const_int_operand" "i")]
  		    UNSPECV_LWPVAL_INTRINSIC)]
    "TARGET_LWP"
    "lwpval\t{%2, %1, %0|%0, %1, %2}"
--- 24832,24838 ----
  (define_insn "@lwp_lwpval<mode>"
    [(unspec_volatile [(match_operand:SWI48 0 "register_operand" "r")
      	    	     (match_operand:SI 1 "nonimmediate_operand" "rm")
! 		     (match_operand:SI 2 "const_int_operand")]
  		    UNSPECV_LWPVAL_INTRINSIC)]
    "TARGET_LWP"
    "lwpval\t{%2, %1, %0|%0, %1, %2}"
***************
*** 23443,23449 ****
    [(set (reg:CCC FLAGS_REG)
  	(unspec_volatile:CCC [(match_operand:SWI48 0 "register_operand" "r")
  			      (match_operand:SI 1 "nonimmediate_operand" "rm")
! 			      (match_operand:SI 2 "const_int_operand" "i")]
  			     UNSPECV_LWPINS_INTRINSIC))]
    "TARGET_LWP"
    "lwpins\t{%2, %1, %0|%0, %1, %2}"
--- 24845,24851 ----
    [(set (reg:CCC FLAGS_REG)
  	(unspec_volatile:CCC [(match_operand:SWI48 0 "register_operand" "r")
  			      (match_operand:SI 1 "nonimmediate_operand" "rm")
! 			      (match_operand:SI 2 "const_int_operand")]
  			     UNSPECV_LWPINS_INTRINSIC))]
    "TARGET_LWP"
    "lwpins\t{%2, %1, %0|%0, %1, %2}"
***************
*** 23649,23655 ****
     (set_attr "length" "3")])
  
  (define_insn "xabort"
!   [(unspec_volatile [(match_operand:SI 0 "const_0_to_255_operand" "n")]
  		    UNSPECV_XABORT)]
    "TARGET_RTM"
    "xabort\t%0"
--- 25051,25057 ----
     (set_attr "length" "3")])
  
  (define_insn "xabort"
!   [(unspec_volatile [(match_operand:SI 0 "const_0_to_255_operand")]
  		    UNSPECV_XABORT)]
    "TARGET_RTM"
    "xabort\t%0"
***************
*** 23984,23989 ****
--- 25386,25443 ----
    DONE;
  })
  
+ ;; Defined because the generic expand_builtin_issignaling for XFmode
+ ;; only tests for sNaNs, but i387 treats also pseudo numbers as always
+ ;; signaling.
+ (define_expand "issignalingxf2"
+   [(match_operand:SI 0 "register_operand")
+    (match_operand:XF 1 "general_operand")]
+   ""
+ {
+   rtx temp = operands[1];
+   if (!MEM_P (temp))
+     {
+       rtx mem = assign_stack_temp (XFmode, GET_MODE_SIZE (XFmode));
+       emit_move_insn (mem, temp);
+       temp = mem;
+     }
+   rtx ex = adjust_address (temp, HImode, 8);
+   rtx hi = adjust_address (temp, SImode, 4);
+   rtx lo = adjust_address (temp, SImode, 0);
+   rtx val = GEN_INT (HOST_WIDE_INT_M1U << 30);
+   rtx mask = GEN_INT (0x7fff);
+   rtx bit = GEN_INT (HOST_WIDE_INT_1U << 30);
+   /* Expand to:
+      ((ex & mask) && (int) hi >= 0)
+      || ((ex & mask) == mask && ((hi ^ bit) | ((lo | -lo) >> 31)) > val).  */
+   rtx nlo = expand_unop (SImode, neg_optab, lo, NULL_RTX, 0);
+   lo = expand_binop (SImode, ior_optab, lo, nlo,
+ 		     NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   lo = expand_shift (RSHIFT_EXPR, SImode, lo, 31, NULL_RTX, 1);
+   temp = expand_binop (SImode, xor_optab, hi, bit,
+ 		       NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   temp = expand_binop (SImode, ior_optab, temp, lo,
+ 		       NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   temp = emit_store_flag_force (gen_reg_rtx (SImode), GTU, temp, val,
+ 				SImode, 1, 1);
+   ex = expand_binop (HImode, and_optab, ex, mask,
+ 		     NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   rtx temp2 = emit_store_flag_force (gen_reg_rtx (SImode), NE,
+ 				     ex, const0_rtx, SImode, 1, 1);
+   ex = emit_store_flag_force (gen_reg_rtx (SImode), EQ,
+ 			      ex, mask, HImode, 1, 1);
+   temp = expand_binop (SImode, and_optab, temp, ex,
+ 		       NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   rtx temp3 = emit_store_flag_force (gen_reg_rtx (SImode), GE,
+ 				     hi, const0_rtx, SImode, 0, 1);
+   temp2 = expand_binop (SImode, and_optab, temp2, temp3,
+ 			NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   temp = expand_binop (SImode, ior_optab, temp, temp2,
+ 		       NULL_RTX, 1, OPTAB_LIB_WIDEN);
+   emit_move_insn (operands[0], temp);
+   DONE;
+ })
+ 
  (include "mmx.md")
  (include "sse.md")
  (include "sync.md")
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386.opt gcc-13.1.0/gcc/config/i386/i386.opt
*** gcc-12.2.0/gcc/config/i386/i386.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the IA-32 and AMD64 ports of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the IA-32 and AMD64 ports of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** TargetVariable
*** 109,116 ****
  enum cmodel ix86_cmodel = CM_32
  
  ;; -mabi=
! TargetSave
! enum calling_abi x_ix86_abi
  
  ;; -masm=
  TargetSave
--- 109,116 ----
  enum cmodel ix86_cmodel = CM_32
  
  ;; -mabi=
! TargetVariable
! enum calling_abi ix86_abi = SYSV_ABI
  
  ;; -masm=
  TargetSave
*************** mpc80
*** 420,425 ****
--- 420,429 ----
  Target RejectNegative
  Set 80387 floating-point precision to 80-bit.
  
+ mdaz-ftz
+ Target
+ Set the FTZ and DAZ Flags.
+ 
  mpreferred-stack-boundary=
  Target RejectNegative Joined UInteger Var(ix86_preferred_stack_boundary_arg)
  Attempt to keep stack aligned to this power of 2.
*************** Target Mask(STV) Save
*** 595,600 ****
--- 599,608 ----
  Disable Scalar to Vector optimization pass transforming 64-bit integer
  computations into a vector ones.
  
+ -param=x86-stv-max-visits=
+ Target Joined UInteger Var(x86_stv_max_visits) Init(10000) IntegerRange(1, 1000000) Param
+ The maximum number of use and def visits when discovering a STV chain before the discovery is aborted.
+ 
  mdispatch-scheduler
  Target RejectNegative Var(flag_dispatch_scheduler)
  Do dispatch scheduling if processor is bdver1, bdver2, bdver3, bdver4
*************** Enable shadow stack built-in functions f
*** 1047,1053 ****
  Technology (CET).
  
  mcet-switch
! Target Undocumented Var(flag_cet_switch) Init(0)
  Turn on CET instrumentation for switch statements that use a jump table and
  an indirect jump.
  
--- 1055,1061 ----
  Technology (CET).
  
  mcet-switch
! Target Var(flag_cet_switch) Init(0)
  Turn on CET instrumentation for switch statements that use a jump table and
  an indirect jump.
  
*************** Support MWAIT and MONITOR built-in funct
*** 1205,1211 ****
  
  mavx512fp16
  Target Mask(ISA2_AVX512FP16) Var(ix86_isa_flags2) Save
! Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512FP16 built-in functions and code generation.
  
  mdirect-extern-access
  Target Var(ix86_direct_extern_access) Init(1)
--- 1213,1219 ----
  
  mavx512fp16
  Target Mask(ISA2_AVX512FP16) Var(ix86_isa_flags2) Save
! Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, AVX512F and AVX512-FP16 built-in functions and code generation.
  
  mdirect-extern-access
  Target Var(ix86_direct_extern_access) Init(1)
*************** Do not use GOT to access external symbol
*** 1214,1216 ****
--- 1222,1280 ----
  -param=x86-stlf-window-ninsns=
  Target Joined UInteger Var(x86_stlf_window_ninsns) Init(64) Param
  Instructions number above which STFL stall penalty can be compensated.
+ 
+ mavxifma
+ Target Mask(ISA2_AVXIFMA) Var(ix86_isa_flags2) Save
+ Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
+ AVXIFMA built-in functions and code generation.
+ 
+ mavxvnniint8
+ Target Mask(ISA2_AVXVNNIINT8) Var(ix86_isa_flags2) Save
+ Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2 and
+ AVXVNNIINT8 built-in functions and code generation.
+ 
+ mavxneconvert
+ Target Mask(ISA2_AVXNECONVERT) Var(ix86_isa_flags2) Save
+ Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
+ AVXNECONVERT build-in functions and code generation.
+ 
+ mcmpccxadd
+ Target Mask(ISA2_CMPCCXADD) Var(ix86_isa_flags2) Save
+ Support MMX, SSE, SSE2, SSE3, SSSE3, SSE4.1, SSE4.2, AVX, AVX2, and
+ CMPCCXADD build-in functions and code generation.
+ 
+ mamx-fp16
+ Target Mask(ISA2_AMX_FP16) Var(ix86_isa_flags2) Save
+ Support AMX-FP16 built-in functions and code generation.
+ 
+ mprefetchi
+ Target Mask(ISA2_PREFETCHI) Var(ix86_isa_flags2) Save
+ Support PREFETCHI built-in functions and code generation.
+ 
+ mraoint
+ Target Mask(ISA2_RAOINT) Var(ix86_isa_flags2) Save
+ Support RAOINT built-in functions and code generation.
+ 
+ munroll-only-small-loops
+ Target Var(ix86_unroll_only_small_loops) Init(0) Save
+ Enable conservative small loop unrolling.
+ 
+ mlam=
+ Target RejectNegative Joined Enum(lam_type) Var(ix86_lam_type) Init(lam_none)
+ -mlam=[none|u48|u57] Instrument meta data position in user data pointers.
+ 
+ Enum
+ Name(lam_type) Type(enum lam_type) UnknownError(unknown lam type %qs)
+ 
+ EnumValue
+ Enum(lam_type) String(none) Value(lam_none)
+ 
+ EnumValue
+ Enum(lam_type) String(u48) Value(lam_u48)
+ 
+ EnumValue
+ Enum(lam_type) String(u57) Value(lam_u57)
+ 
+ mamx-complex
+ Target Mask(ISA2_AMX_COMPLEX) Var(ix86_isa_flags2) Save
+ Support AMX-COMPLEX built-in functions and code generation.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/i386elf.h gcc-13.1.0/gcc/config/i386/i386elf.h
*** gcc-12.2.0/gcc/config/i386/i386elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/i386elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for GCC for Intel 80386 using ELF
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
     Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com).
  
--- 1,5 ----
  /* Target definitions for GCC for Intel 80386 using ELF
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
     Derived from sysv4.h written by Ron Guilmette (rfg@netcom.com).
  
*************** along with GCC; see the file COPYING3.
*** 36,44 ****
  			  %{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}}\
  			crtbegin.o%s"
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  #define LOCAL_LABEL_PREFIX	"."
  
--- 36,44 ----
  			  %{pg:gcrt0.o%s}%{!pg:%{p:mcrt0.o%s}%{!p:crt0.o%s}}}}\
  			crtbegin.o%s"
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  #define LOCAL_LABEL_PREFIX	"."
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/ia32intrin.h gcc-13.1.0/gcc/config/i386/ia32intrin.h
*** gcc-12.2.0/gcc/config/i386/ia32intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/ia32intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/iamcu.h gcc-13.1.0/gcc/config/i386/iamcu.h
*** gcc-12.2.0/gcc/config/i386/iamcu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/iamcu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for Intel MCU psABI.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for Intel MCU psABI.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 33,41 ****
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  #undef ASM_SPEC
  #define ASM_SPEC "--32 -march=iamcu"
--- 33,41 ----
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  #undef ASM_SPEC
  #define ASM_SPEC "--32 -march=iamcu"
diff -Nrcpad gcc-12.2.0/gcc/config/i386/immintrin.h gcc-13.1.0/gcc/config/i386/immintrin.h
*** gcc-12.2.0/gcc/config/i386/immintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/immintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 44,49 ****
--- 44,53 ----
  
  #include <avxvnniintrin.h>
  
+ #include <avxifmaintrin.h>
+ 
+ #include <avxvnniint8intrin.h>
+ 
  #include <avx2intrin.h>
  
  #include <avx512fintrin.h>
***************
*** 114,131 ****
--- 118,143 ----
  
  #include <vpclmulqdqintrin.h>
  
+ #ifdef __SSE2__
  #include <avx512bf16vlintrin.h>
  
  #include <avx512bf16intrin.h>
  
+ #include <avxneconvertintrin.h>
+ #endif
+ 
  #include <amxtileintrin.h>
  
  #include <amxint8intrin.h>
  
  #include <amxbf16intrin.h>
  
+ #include <amxcomplexintrin.h>
+ 
  #include <prfchwintrin.h>
  
  #include <keylockerintrin.h>
  
+ #include <amxfp16intrin.h>
+ 
  #endif /* _IMMINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/intelmic-mkoffload.cc gcc-13.1.0/gcc/config/i386/intelmic-mkoffload.cc
*** gcc-12.2.0/gcc/config/i386/intelmic-mkoffload.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/intelmic-mkoffload.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,695 ****
- /* Offload image generation tool for Intel MIC devices.
- 
-    Copyright (C) 2014-2022 Free Software Foundation, Inc.
- 
-    Contributed by Ilya Verbin <ilya.verbin@intel.com>.
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3, or (at your option)
-    any later version.
- 
-    GCC is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #define IN_TARGET_CODE 1
- 
- #include "config.h"
- #include <libgen.h>
- #include "system.h"
- #include "coretypes.h"
- #include "obstack.h"
- #include "intl.h"
- #include "diagnostic.h"
- #include "collect-utils.h"
- #include "intelmic-offload.h"
- 
- const char tool_name[] = "intelmic mkoffload";
- 
- const char image_section_name[] = ".gnu.offload_images";
- const char *symbols[3] = { "__offload_image_intelmic_start",
- 			   "__offload_image_intelmic_end",
- 			   "__offload_image_intelmic_size" };
- const char *out_obj_filename = NULL;
- 
- int num_temps = 0;
- const int MAX_NUM_TEMPS = 10;
- const char *temp_files[MAX_NUM_TEMPS];
- 
- enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
- 
- /* Delete tempfiles and exit function.  */
- 
- void
- tool_cleanup (bool from_signal ATTRIBUTE_UNUSED)
- {
-   for (int i = 0; i < num_temps; i++)
-     maybe_unlink (temp_files[i]);
- }
- 
- static void
- mkoffload_cleanup (void)
- {
-   tool_cleanup (false);
- }
- 
- /* Unlink FILE unless requested otherwise.  */
- 
- void
- maybe_unlink (const char *file)
- {
-   if (!save_temps)
-     {
-       if (unlink_if_ordinary (file)
- 	  && errno != ENOENT)
- 	fatal_error (input_location, "deleting file %s: %m", file);
-     }
-   else if (verbose)
-     fprintf (stderr, "[Leaving %s]\n", file);
- }
- 
- /* Add or change the value of an environment variable, outputting the
-    change to standard error if in verbose mode.  */
- static void
- xputenv (const char *string)
- {
-   if (verbose)
-     fprintf (stderr, "%s\n", string);
-   putenv (CONST_CAST (char *, string));
- }
- 
- /* Parse STR, saving found tokens into PVALUES and return their number.
-    Tokens are assumed to be delimited by ':'.  */
- static unsigned
- parse_env_var (const char *str, char ***pvalues)
- {
-   const char *curval, *nextval;
-   char **values;
-   unsigned num = 1, i;
- 
-   curval = strchr (str, ':');
-   while (curval)
-     {
-       num++;
-       curval = strchr (curval + 1, ':');
-     }
- 
-   values = (char **) xmalloc (num * sizeof (char *));
-   curval = str;
-   nextval = strchr (curval, ':');
-   if (nextval == NULL)
-     nextval = strchr (curval, '\0');
- 
-   for (i = 0; i < num; i++)
-     {
-       int l = nextval - curval;
-       values[i] = (char *) xmalloc (l + 1);
-       memcpy (values[i], curval, l);
-       values[i][l] = 0;
-       curval = nextval + 1;
-       nextval = strchr (curval, ':');
-       if (nextval == NULL)
- 	nextval = strchr (curval, '\0');
-     }
-   *pvalues = values;
-   return num;
- }
- 
- /* Auxiliary function that frees elements of PTR and PTR itself.
-    N is number of elements to be freed.  If PTR is NULL, nothing is freed.
-    If an element is NULL, subsequent elements are not freed.  */
- static void
- free_array_of_ptrs (void **ptr, unsigned n)
- {
-   unsigned i;
-   if (!ptr)
-     return;
-   for (i = 0; i < n; i++)
-     {
-       if (!ptr[i])
- 	break;
-       free (ptr[i]);
-     }
-   free (ptr);
-   return;
- }
- 
- /* Check whether NAME can be accessed in MODE.  This is like access,
-    except that it never considers directories to be executable.  */
- static int
- access_check (const char *name, int mode)
- {
-   if (mode == X_OK)
-     {
-       struct stat st;
- 
-       if (stat (name, &st) < 0 || S_ISDIR (st.st_mode))
- 	return -1;
-     }
- 
-   return access (name, mode);
- }
- 
- /* Find target compiler using a path from COLLECT_GCC or COMPILER_PATH.  */
- static char *
- find_target_compiler (const char *name)
- {
-   bool found = false;
-   char **paths = NULL;
-   unsigned n_paths, i;
-   char *target_compiler;
-   const char *collect_gcc = getenv ("COLLECT_GCC");
-   const char *gcc_path = dirname (ASTRDUP (collect_gcc));
-   const char *gcc_exec = basename (ASTRDUP (collect_gcc));
- 
-   if (strcmp (gcc_exec, collect_gcc) == 0)
-     {
-       /* collect_gcc has no path, so it was found in PATH.  Make sure we also
- 	 find accel-gcc in PATH.  */
-       target_compiler = XDUPVEC (char, name, strlen (name) + 1);
-       found = true;
-       goto out;
-     }
- 
-   target_compiler = concat (gcc_path, "/", name, NULL);
-   if (access_check (target_compiler, X_OK) == 0)
-     {
-       found = true;
-       goto out;
-     }
- 
-   n_paths = parse_env_var (getenv ("COMPILER_PATH"), &paths);
-   for (i = 0; i < n_paths; i++)
-     {
-       size_t len = strlen (paths[i]) + 1 + strlen (name) + 1;
-       target_compiler = XRESIZEVEC (char, target_compiler, len);
-       sprintf (target_compiler, "%s/%s", paths[i], name);
-       if (access_check (target_compiler, X_OK) == 0)
- 	{
- 	  found = true;
- 	  break;
- 	}
-     }
- 
- out:
-   free_array_of_ptrs ((void **) paths, n_paths);
-   return found ? target_compiler : NULL;
- }
- 
- static void
- compile_for_target (struct obstack *argv_obstack)
- {
-   switch (offload_abi)
-     {
-     case OFFLOAD_ABI_LP64:
-       obstack_ptr_grow (argv_obstack, "-m64");
-       break;
-     case OFFLOAD_ABI_ILP32:
-       obstack_ptr_grow (argv_obstack, "-m32");
-       break;
-     default:
-       gcc_unreachable ();
-     }
-   obstack_ptr_grow (argv_obstack, NULL);
-   char **argv = XOBFINISH (argv_obstack, char **);
- 
-   /* Save environment variables.  */
-   const char *epath = getenv ("GCC_EXEC_PREFIX");
-   const char *cpath = getenv ("COMPILER_PATH");
-   const char *lpath = getenv ("LIBRARY_PATH");
-   const char *rpath = getenv ("LD_RUN_PATH");
-   unsetenv ("GCC_EXEC_PREFIX");
-   unsetenv ("COMPILER_PATH");
-   unsetenv ("LIBRARY_PATH");
-   unsetenv ("LD_RUN_PATH");
- 
-   fork_execute (argv[0], argv, false, NULL);
-   obstack_free (argv_obstack, NULL);
- 
-   /* Restore environment variables.  */
-   xputenv (concat ("GCC_EXEC_PREFIX=", epath, NULL));
-   xputenv (concat ("COMPILER_PATH=", cpath, NULL));
-   xputenv (concat ("LIBRARY_PATH=", lpath, NULL));
-   xputenv (concat ("LD_RUN_PATH=", rpath, NULL));
- }
- 
- /* Generates object file with the descriptor for the target library.  */
- static const char *
- generate_target_descr_file (const char *target_compiler)
- {
-   char *dump_filename = concat (dumppfx, "_target_descr.c", NULL);
-   const char *src_filename = save_temps
-     ? dump_filename
-     : make_temp_file ("_target_descr.c");
-   const char *obj_filename = save_temps
-     ? concat (dumppfx, "_target_descr.o", NULL)
-     : make_temp_file ("_target_descr.o");
-   temp_files[num_temps++] = src_filename;
-   temp_files[num_temps++] = obj_filename;
-   FILE *src_file = fopen (src_filename, "w");
- 
-   if (!src_file)
-     fatal_error (input_location, "cannot open '%s'", src_filename);
- 
-   fprintf (src_file,
- 	   "extern const void *const __offload_funcs_end[];\n"
- 	   "extern const void *const __offload_vars_end[];\n\n"
- 
- 	   "const void *const __offload_func_table[0]\n"
- 	   "__attribute__ ((__used__, visibility (\"hidden\"),\n"
- 	   "section (\".gnu.offload_funcs\"))) = { };\n\n"
- 
- 	   "const void *const __offload_var_table[0]\n"
- 	   "__attribute__ ((__used__, visibility (\"hidden\"),\n"
- 	   "section (\".gnu.offload_vars\"))) = { };\n\n"
- 
- 	   "const void *const __OFFLOAD_TARGET_TABLE__[]\n"
- 	   "__attribute__ ((__used__, visibility (\"hidden\"))) = {\n"
- 	   "  &__offload_func_table, &__offload_funcs_end,\n"
- 	   "  &__offload_var_table, &__offload_vars_end\n"
- 	   "};\n\n");
- 
-   fprintf (src_file,
- 	   "#ifdef __cplusplus\n"
- 	   "extern \"C\"\n"
- 	   "#endif\n"
- 	   "void target_register_lib (const void *);\n\n"
- 
- 	   "__attribute__((constructor))\n"
- 	   "static void\n"
- 	   "init (void)\n"
- 	   "{\n"
- 	   "  target_register_lib (__OFFLOAD_TARGET_TABLE__);\n"
- 	   "}\n");
-   fclose (src_file);
- 
-   struct obstack argv_obstack;
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, target_compiler);
-   if (save_temps)
-     obstack_ptr_grow (&argv_obstack, "-save-temps");
-   if (verbose)
-     obstack_ptr_grow (&argv_obstack, "-v");
-   obstack_ptr_grow (&argv_obstack, "-dumpdir");
-   obstack_ptr_grow (&argv_obstack, "");
-   obstack_ptr_grow (&argv_obstack, "-dumpbase");
-   obstack_ptr_grow (&argv_obstack, dump_filename);
-   obstack_ptr_grow (&argv_obstack, "-dumpbase-ext");
-   obstack_ptr_grow (&argv_obstack, ".c");
-   obstack_ptr_grow (&argv_obstack, "-c");
-   obstack_ptr_grow (&argv_obstack, "-shared");
-   obstack_ptr_grow (&argv_obstack, "-fPIC");
-   obstack_ptr_grow (&argv_obstack, src_filename);
-   obstack_ptr_grow (&argv_obstack, "-o");
-   obstack_ptr_grow (&argv_obstack, obj_filename);
-   compile_for_target (&argv_obstack);
- 
-   return obj_filename;
- }
- 
- /* Generates object file with __offload_*_end symbols for the target
-    library.  */
- static const char *
- generate_target_offloadend_file (const char *target_compiler)
- {
-   char *dump_filename = concat (dumppfx, "_target_offloadend.c", NULL);
-   const char *src_filename = save_temps
-     ? dump_filename
-     : make_temp_file ("_target_offloadend.c");
-   const char *obj_filename = save_temps
-     ? concat (dumppfx, "_target_offloadend.o", NULL)
-     : make_temp_file ("_target_offloadend.o");
-   temp_files[num_temps++] = src_filename;
-   temp_files[num_temps++] = obj_filename;
-   FILE *src_file = fopen (src_filename, "w");
- 
-   if (!src_file)
-     fatal_error (input_location, "cannot open '%s'", src_filename);
- 
-   fprintf (src_file,
- 	   "const void *const __offload_funcs_end[0]\n"
- 	   "__attribute__ ((__used__, visibility (\"hidden\"),\n"
- 	   "section (\".gnu.offload_funcs\"))) = { };\n\n"
- 
- 	   "const void *const __offload_vars_end[0]\n"
- 	   "__attribute__ ((__used__, visibility (\"hidden\"),\n"
- 	   "section (\".gnu.offload_vars\"))) = { };\n");
-   fclose (src_file);
- 
-   struct obstack argv_obstack;
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, target_compiler);
-   if (save_temps)
-     obstack_ptr_grow (&argv_obstack, "-save-temps");
-   if (verbose)
-     obstack_ptr_grow (&argv_obstack, "-v");
-   obstack_ptr_grow (&argv_obstack, "-dumpdir");
-   obstack_ptr_grow (&argv_obstack, "");
-   obstack_ptr_grow (&argv_obstack, "-dumpbase");
-   obstack_ptr_grow (&argv_obstack, dump_filename);
-   obstack_ptr_grow (&argv_obstack, "-dumpbase-ext");
-   obstack_ptr_grow (&argv_obstack, ".c");
-   obstack_ptr_grow (&argv_obstack, "-c");
-   obstack_ptr_grow (&argv_obstack, "-shared");
-   obstack_ptr_grow (&argv_obstack, "-fPIC");
-   obstack_ptr_grow (&argv_obstack, src_filename);
-   obstack_ptr_grow (&argv_obstack, "-o");
-   obstack_ptr_grow (&argv_obstack, obj_filename);
-   compile_for_target (&argv_obstack);
- 
-   return obj_filename;
- }
- 
- /* Generates object file with the host side descriptor.  */
- static const char *
- generate_host_descr_file (const char *host_compiler)
- {
-   char *dump_filename = concat (dumppfx, "_host_descr.c", NULL);
-   const char *src_filename = save_temps
-     ? dump_filename
-     : make_temp_file ("_host_descr.c");
-   const char *obj_filename = save_temps
-     ? concat (dumppfx, "_host_descr.o", NULL)
-     : make_temp_file ("_host_descr.o");
-   temp_files[num_temps++] = src_filename;
-   temp_files[num_temps++] = obj_filename;
-   FILE *src_file = fopen (src_filename, "w");
- 
-   if (!src_file)
-     fatal_error (input_location, "cannot open '%s'", src_filename);
- 
-   fprintf (src_file,
- 	   "extern const void *const __OFFLOAD_TABLE__;\n"
- 	   "extern const void *const __offload_image_intelmic_start;\n"
- 	   "extern const void *const __offload_image_intelmic_end;\n\n"
- 
- 	   "static const void *const __offload_target_data[] = {\n"
- 	   "  &__offload_image_intelmic_start, &__offload_image_intelmic_end\n"
- 	   "};\n\n");
- 
-   fprintf (src_file,
- 	   "#ifdef __cplusplus\n"
- 	   "extern \"C\"\n"
- 	   "#endif\n"
- 	   "void GOMP_offload_register (const void *, int, const void *);\n"
- 	   "#ifdef __cplusplus\n"
- 	   "extern \"C\"\n"
- 	   "#endif\n"
- 	   "void GOMP_offload_unregister (const void *, int, const void *);\n\n"
- 
- 	   "__attribute__((constructor))\n"
- 	   "static void\n"
- 	   "init (void)\n"
- 	   "{\n"
- 	   "  GOMP_offload_register (&__OFFLOAD_TABLE__, %d, __offload_target_data);\n"
- 	   "}\n\n", GOMP_DEVICE_INTEL_MIC);
- 
-   fprintf (src_file,
- 	   "__attribute__((destructor))\n"
- 	   "static void\n"
- 	   "fini (void)\n"
- 	   "{\n"
- 	   "  GOMP_offload_unregister (&__OFFLOAD_TABLE__, %d, __offload_target_data);\n"
- 	   "}\n", GOMP_DEVICE_INTEL_MIC);
- 
-   fclose (src_file);
- 
-   struct obstack argv_obstack;
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, host_compiler);
-   if (save_temps)
-     obstack_ptr_grow (&argv_obstack, "-save-temps");
-   if (verbose)
-     obstack_ptr_grow (&argv_obstack, "-v");
-   obstack_ptr_grow (&argv_obstack, "-dumpdir");
-   obstack_ptr_grow (&argv_obstack, "");
-   obstack_ptr_grow (&argv_obstack, "-dumpbase");
-   obstack_ptr_grow (&argv_obstack, dump_filename);
-   obstack_ptr_grow (&argv_obstack, "-dumpbase-ext");
-   obstack_ptr_grow (&argv_obstack, ".c");
-   obstack_ptr_grow (&argv_obstack, "-c");
-   obstack_ptr_grow (&argv_obstack, "-fPIC");
-   obstack_ptr_grow (&argv_obstack, "-shared");
-   switch (offload_abi)
-     {
-     case OFFLOAD_ABI_LP64:
-       obstack_ptr_grow (&argv_obstack, "-m64");
-       break;
-     case OFFLOAD_ABI_ILP32:
-       obstack_ptr_grow (&argv_obstack, "-m32");
-       break;
-     default:
-       gcc_unreachable ();
-     }
-   obstack_ptr_grow (&argv_obstack, src_filename);
-   obstack_ptr_grow (&argv_obstack, "-o");
-   obstack_ptr_grow (&argv_obstack, obj_filename);
-   obstack_ptr_grow (&argv_obstack, NULL);
- 
-   char **argv = XOBFINISH (&argv_obstack, char **);
-   fork_execute (argv[0], argv, false, NULL);
-   obstack_free (&argv_obstack, NULL);
- 
-   return obj_filename;
- }
- 
- static const char *
- prepare_target_image (const char *target_compiler, int argc, char **argv)
- {
-   const char *target_descr_filename
-     = generate_target_descr_file (target_compiler);
-   const char *target_offloadend_filename
-     = generate_target_offloadend_file (target_compiler);
- 
-   char *opt1
-     = XALLOCAVEC (char, sizeof ("-Wl,") + strlen (target_descr_filename));
-   char *opt2
-     = XALLOCAVEC (char, sizeof ("-Wl,") + strlen (target_offloadend_filename));
-   sprintf (opt1, "-Wl,%s", target_descr_filename);
-   sprintf (opt2, "-Wl,%s", target_offloadend_filename);
- 
-   char *dump_filename = concat (dumppfx, ".mkoffload", NULL);
-   const char *target_so_filename = save_temps
-     ? concat (dumppfx, "_offload_intelmic.so", NULL)
-     : make_temp_file ("_offload_intelmic.so");
-   temp_files[num_temps++] = target_so_filename;
-   struct obstack argv_obstack;
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, target_compiler);
-   if (save_temps)
-     obstack_ptr_grow (&argv_obstack, "-save-temps");
-   if (verbose)
-     obstack_ptr_grow (&argv_obstack, "-v");
-   obstack_ptr_grow (&argv_obstack, "-xlto");
-   obstack_ptr_grow (&argv_obstack, opt1);
-   for (int i = 1; i < argc; i++)
-     {
-       if (!strcmp (argv[i], "-o") && i + 1 != argc)
- 	++i;
-       else
- 	obstack_ptr_grow (&argv_obstack, argv[i]);
-     }
-   obstack_ptr_grow (&argv_obstack, opt2);
-   /* NB: Put -fPIC and -shared the last to create shared library.  */
-   obstack_ptr_grow (&argv_obstack, "-fPIC");
-   obstack_ptr_grow (&argv_obstack, "-shared");
-   obstack_ptr_grow (&argv_obstack, "-dumpdir");
-   obstack_ptr_grow (&argv_obstack, "");
-   obstack_ptr_grow (&argv_obstack, "-dumpbase");
-   obstack_ptr_grow (&argv_obstack, dump_filename);
-   obstack_ptr_grow (&argv_obstack, "-dumpbase-ext");
-   obstack_ptr_grow (&argv_obstack, "");
-   obstack_ptr_grow (&argv_obstack, "-o");
-   obstack_ptr_grow (&argv_obstack, target_so_filename);
-   compile_for_target (&argv_obstack);
- 
-   /* Run objcopy.  */
-   char *rename_section_opt
-     = XALLOCAVEC (char, sizeof (".data=") + strlen (image_section_name));
-   sprintf (rename_section_opt, ".data=%s", image_section_name);
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, "objcopy");
-   obstack_ptr_grow (&argv_obstack, "-B");
-   obstack_ptr_grow (&argv_obstack, "i386");
-   obstack_ptr_grow (&argv_obstack, "-I");
-   obstack_ptr_grow (&argv_obstack, "binary");
-   obstack_ptr_grow (&argv_obstack, "-O");
-   switch (offload_abi)
-     {
-     case OFFLOAD_ABI_LP64:
-       obstack_ptr_grow (&argv_obstack, "elf64-x86-64");
-       break;
-     case OFFLOAD_ABI_ILP32:
-       obstack_ptr_grow (&argv_obstack, "elf32-i386");
-       break;
-     default:
-       gcc_unreachable ();
-     }
-   obstack_ptr_grow (&argv_obstack, target_so_filename);
-   obstack_ptr_grow (&argv_obstack, "--rename-section");
-   obstack_ptr_grow (&argv_obstack, rename_section_opt);
-   obstack_ptr_grow (&argv_obstack, NULL);
-   char **new_argv = XOBFINISH (&argv_obstack, char **);
-   fork_execute (new_argv[0], new_argv, false, NULL);
-   obstack_free (&argv_obstack, NULL);
- 
-   /* Objcopy has created symbols, containing the input file name with
-      non-alphanumeric characters replaced by underscores.
-      We are going to rename these new symbols.  */
-   size_t symbol_name_len = strlen (target_so_filename);
-   char *symbol_name = XALLOCAVEC (char, symbol_name_len + 1);
-   for (size_t i = 0; i < symbol_name_len; i++)
-     {
-       char c = target_so_filename[i];
-       if (!ISALNUM (c))
- 	c = '_';
-       symbol_name[i] = c;
-     }
-   symbol_name[symbol_name_len] = '\0';
- 
-   char *opt_for_objcopy[3];
-   opt_for_objcopy[0] = XALLOCAVEC (char, sizeof ("_binary__start=")
- 					 + symbol_name_len
- 					 + strlen (symbols[0]));
-   opt_for_objcopy[1] = XALLOCAVEC (char, sizeof ("_binary__end=")
- 					 + symbol_name_len
- 					 + strlen (symbols[1]));
-   opt_for_objcopy[2] = XALLOCAVEC (char, sizeof ("_binary__size=")
- 					 + symbol_name_len
- 					 + strlen (symbols[2]));
-   sprintf (opt_for_objcopy[0], "_binary_%s_start=%s", symbol_name, symbols[0]);
-   sprintf (opt_for_objcopy[1], "_binary_%s_end=%s", symbol_name, symbols[1]);
-   sprintf (opt_for_objcopy[2], "_binary_%s_size=%s", symbol_name, symbols[2]);
- 
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, "objcopy");
-   obstack_ptr_grow (&argv_obstack, target_so_filename);
-   obstack_ptr_grow (&argv_obstack, "--redefine-sym");
-   obstack_ptr_grow (&argv_obstack, opt_for_objcopy[0]);
-   obstack_ptr_grow (&argv_obstack, "--redefine-sym");
-   obstack_ptr_grow (&argv_obstack, opt_for_objcopy[1]);
-   obstack_ptr_grow (&argv_obstack, "--redefine-sym");
-   obstack_ptr_grow (&argv_obstack, opt_for_objcopy[2]);
-   obstack_ptr_grow (&argv_obstack, NULL);
-   new_argv = XOBFINISH (&argv_obstack, char **);
-   fork_execute (new_argv[0], new_argv, false, NULL);
-   obstack_free (&argv_obstack, NULL);
- 
-   return target_so_filename;
- }
- 
- int
- main (int argc, char **argv)
- {
-   progname = "mkoffload-intelmic";
-   gcc_init_libintl ();
-   diagnostic_initialize (global_dc, 0);
- 
-   if (atexit (mkoffload_cleanup) != 0)
-     fatal_error (input_location, "atexit failed");
- 
-   const char *host_compiler = getenv ("COLLECT_GCC");
-   if (!host_compiler)
-     fatal_error (input_location, "COLLECT_GCC must be set");
- 
-   const char *target_driver_name = GCC_INSTALL_NAME;
-   char *target_compiler = find_target_compiler (target_driver_name);
-   if (target_compiler == NULL)
-     fatal_error (input_location, "offload compiler %s not found",
- 		 target_driver_name);
- 
-   /* We may be called with all the arguments stored in some file and
-      passed with @file.  Expand them into argv before processing.  */
-   expandargv (&argc, &argv);
- 
-   /* Scan the argument vector.  */
-   for (int i = 1; i < argc; i++)
-     {
- #define STR "-foffload-abi="
-       if (startswith (argv[i], STR))
- 	{
- 	  if (strcmp (argv[i] + strlen (STR), "lp64") == 0)
- 	    offload_abi = OFFLOAD_ABI_LP64;
- 	  else if (strcmp (argv[i] + strlen (STR), "ilp32") == 0)
- 	    offload_abi = OFFLOAD_ABI_ILP32;
- 	  else
- 	    fatal_error (input_location,
- 			 "unrecognizable argument of option " STR);
- 	}
- #undef STR
-       else if (strcmp (argv[i], "-save-temps") == 0)
- 	save_temps = true;
-       else if (strcmp (argv[i], "-v") == 0)
- 	verbose = true;
-       else if (strcmp (argv[i], "-dumpbase") == 0
- 	       && i + 1 < argc)
- 	dumppfx = argv[++i];
-       else if (strcmp (argv[i], "-o") == 0
- 	       && i + 1 < argc)
- 	out_obj_filename = argv[++i];
-     }
- 
-   if (!out_obj_filename)
-     fatal_error (input_location, "output file not specified");
- 
-   if (!dumppfx)
-     dumppfx = out_obj_filename;
- 
-   const char *target_so_filename
-     = prepare_target_image (target_compiler, argc, argv);
- 
-   const char *host_descr_filename = generate_host_descr_file (host_compiler);
- 
-   /* Perform partial linking for the target image and host side descriptor.
-      As a result we'll get a finalized object file with all offload data.  */
-   struct obstack argv_obstack;
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, "ld");
-   obstack_ptr_grow (&argv_obstack, "-m");
-   switch (offload_abi)
-     {
-     case OFFLOAD_ABI_LP64:
-       obstack_ptr_grow (&argv_obstack, "elf_x86_64");
-       break;
-     case OFFLOAD_ABI_ILP32:
-       obstack_ptr_grow (&argv_obstack, "elf_i386");
-       break;
-     default:
-       gcc_unreachable ();
-     }
-   obstack_ptr_grow (&argv_obstack, "--relocatable");
-   obstack_ptr_grow (&argv_obstack, host_descr_filename);
-   obstack_ptr_grow (&argv_obstack, target_so_filename);
-   obstack_ptr_grow (&argv_obstack, "-o");
-   obstack_ptr_grow (&argv_obstack, out_obj_filename);
-   obstack_ptr_grow (&argv_obstack, NULL);
-   char **new_argv = XOBFINISH (&argv_obstack, char **);
-   fork_execute (new_argv[0], new_argv, false, NULL);
-   obstack_free (&argv_obstack, NULL);
- 
-   /* Run objcopy on the resultant object file to localize generated symbols
-      to avoid conflicting between different DSO and an executable.  */
-   obstack_init (&argv_obstack);
-   obstack_ptr_grow (&argv_obstack, "objcopy");
-   obstack_ptr_grow (&argv_obstack, "-L");
-   obstack_ptr_grow (&argv_obstack, symbols[0]);
-   obstack_ptr_grow (&argv_obstack, "-L");
-   obstack_ptr_grow (&argv_obstack, symbols[1]);
-   obstack_ptr_grow (&argv_obstack, "-L");
-   obstack_ptr_grow (&argv_obstack, symbols[2]);
-   obstack_ptr_grow (&argv_obstack, out_obj_filename);
-   obstack_ptr_grow (&argv_obstack, NULL);
-   new_argv = XOBFINISH (&argv_obstack, char **);
-   fork_execute (new_argv[0], new_argv, false, NULL);
-   obstack_free (&argv_obstack, NULL);
- 
-   return 0;
- }
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/intelmic-offload.h gcc-13.1.0/gcc/config/i386/intelmic-offload.h
*** gcc-12.2.0/gcc/config/i386/intelmic-offload.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/intelmic-offload.h	Thu Jan  1 00:00:00 1970
***************
*** 1,35 ****
- /* Support for Intel MIC offloading.
- 
-    Copyright (C) 2014-2022 Free Software Foundation, Inc.
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 3, or (at your option)
-    any later version.
- 
-    GCC is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
- 
-    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 INTELMIC_OFFLOAD_H
- #define INTELMIC_OFFLOAD_H
- 
- /* Support for OpenACC acc_on_device.  */
- 
- #include "gomp-constants.h"
- 
- #define ACCEL_COMPILER_acc_device GOMP_DEVICE_INTEL_MIC
- 
- #endif
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/k6.md gcc-13.1.0/gcc/config/i386/k6.md
*** gcc-12.2.0/gcc/config/i386/k6.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/k6.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; AMD K6/K6-2 Scheduling
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; AMD K6/K6-2 Scheduling
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/keylockerintrin.h gcc-13.1.0/gcc/config/i386/keylockerintrin.h
*** gcc-12.2.0/gcc/config/i386/keylockerintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/keylockerintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/kfreebsd-gnu.h gcc-13.1.0/gcc/config/i386/kfreebsd-gnu.h
*** gcc-12.2.0/gcc/config/i386/kfreebsd-gnu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/kfreebsd-gnu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Intel 386 running kFreeBSD-based GNU systems with ELF format
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/kfreebsd-gnu64.h gcc-13.1.0/gcc/config/i386/kfreebsd-gnu64.h
*** gcc-12.2.0/gcc/config/i386/kfreebsd-gnu64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/kfreebsd-gnu64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for AMD x86-64 running kFreeBSD-based GNU systems with ELF format
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/kopensolaris-gnu.h gcc-13.1.0/gcc/config/i386/kopensolaris-gnu.h
*** gcc-12.2.0/gcc/config/i386/kopensolaris-gnu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/kopensolaris-gnu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running kOpenSolaris-based GNU systems with ELF format
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Intel 386 running kOpenSolaris-based GNU systems with ELF format
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/linux-common.h gcc-13.1.0/gcc/config/i386/linux-common.h
*** gcc-12.2.0/gcc/config/i386/linux-common.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/linux-common.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running Linux-based GNU systems with ELF format.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Ilya Enkovich.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Intel 386 running Linux-based GNU systems with ELF format.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Ilya Enkovich.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 27,35 ****
      }                                          \
    while (0)
  
- #define EXTRA_TARGET_D_OS_VERSIONS()		\
-   ANDROID_TARGET_D_OS_VERSIONS();
- 
  #undef CC1_SPEC
  #define CC1_SPEC \
    LINUX_OR_ANDROID_CC (GNU_USER_TARGET_CC1_SPEC, \
--- 27,32 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/linux.h gcc-13.1.0/gcc/config/i386/linux.h
*** gcc-12.2.0/gcc/config/i386/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running Linux-based GNU systems with ELF format.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
  
--- 1,5 ----
  /* Definitions for Intel 386 running Linux-based GNU systems with ELF format.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/linux64.h gcc-13.1.0/gcc/config/i386/linux64.h
*** gcc-12.2.0/gcc/config/i386/linux64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/linux64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for AMD x86-64 running Linux-based GNU systems with ELF format.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for AMD x86-64 running Linux-based GNU systems with ELF format.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Jan Hubicka <jh@suse.cz>, based on linux.h.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/lujiazui.md gcc-13.1.0/gcc/config/i386/lujiazui.md
*** gcc-12.2.0/gcc/config/i386/lujiazui.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/lujiazui.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,846 ----
+ ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
+ ;;
+ ;; This file is part of GCC.
+ ;;
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ ;;
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ ;;
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ ;;
+ 
+ ;; Scheduling for ZHAOXIN lujiazui processor.
+ 
+ ;; Modeling automatons for decoders, execution pipes, AGU pipes, and divider.
+ (define_automaton "lujiazui_decoder,lujiazui_core,lujiazui_agu,lujiazui_div")
+ 
+ ;; The rules for the decoder are simple:
+ ;;  - an instruction with 1 uop can be decoded by any of the three
+ ;;    decoders in one cycle.
+ ;;  - an instruction with 2 uops can be decoded by decoder 0 or decoder 1
+ ;;    but still in only one cycle.
+ ;;  - a complex (microcode) instruction can only be decoded by
+ ;;    decoder 0, and this takes an unspecified number of cycles.
+ ;;
+ ;; The goal is to schedule such that we have a few-one-two uops sequence
+ ;; in each cycle, to decode as many instructions per cycle as possible.
+ (define_cpu_unit "lua_decoder0" "lujiazui_decoder")
+ (define_cpu_unit "lua_decoder1" "lujiazui_decoder")
+ (define_cpu_unit "lua_decoder2" "lujiazui_decoder")
+ 
+ ;; We first wish to find an instruction for lua_decoder0, so exclude
+ ;; lua_decoder1 and lua_decoder2 from being reserved until
+ ;; lua_decoder0 is reserved, and also exclude lua_decoder2
+ ;; from being reserved until lua_decoder1 is reserved.
+ (presence_set "lua_decoder1" "lua_decoder0")
+ (presence_set "lua_decoder2" "lua_decoder0")
+ (presence_set "lua_decoder2" "lua_decoder1")
+ 
+ ;; Most instructions can be decoded on any of the three decoders.
+ (define_reservation "lua_decodern" "lua_decoder0|lua_decoder1|lua_decoder2")
+ (define_reservation "lua_decoder01" "lua_decoder0|lua_decoder1")
+ 
+ ;; The out-of-order core has six pipelines.
+ ;; Port 4, 5 are responsible for address calculations, load or store.
+ ;; Port 0, 1, 2, 3 for everything else.
+ 
+ (define_cpu_unit "lua_p0,lua_p1,lua_p2,lua_p3" "lujiazui_core")
+ (define_cpu_unit "lua_p4,lua_p5" "lujiazui_agu")
+ 
+ (define_cpu_unit "lua_div" "lujiazui_div")
+ 
+ (define_reservation "lua_p03" "lua_p0|lua_p3")
+ (define_reservation "lua_p12" "lua_p1|lua_p2")
+ (define_reservation "lua_p1p2" "lua_p1+lua_p2")
+ (define_reservation "lua_p45" "lua_p4|lua_p5")
+ (define_reservation "lua_p4p5" "lua_p4+lua_p5")
+ (define_reservation "lua_p0p1p2p3" "lua_p0+lua_p1+lua_p2+lua_p3")
+ 
+ ;; Only the irregular instructions have to be modeled here.
+ 
+ ;; Complex instruction.
+ (define_insn_reservation "lua_complex_insn" 6
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (eq_attr "type" "other,multi,str"))
+ 			 "lua_decoder0")
+ 
+ ;; Call instruction.
+ (define_insn_reservation "lua_call" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (eq_attr "type" "call,callv"))
+ 			 "lua_decoder0,lua_p45,lua_p1")
+ 
+ ;; MOV - integer moves.
+ (define_insn_reservation "lua_imov" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "imov,imovx")))
+ 			 "lua_decodern,lua_p12")
+ 
+ (define_insn_reservation "lua_imov_load" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "imov,imovx")))
+ 			 "lua_decoder01,lua_p45")
+ 
+ (define_insn_reservation "lua_imov_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "imov")))
+ 			 "lua_decodern,lua_p12+lua_p45")
+ 
+ (define_insn_reservation "lua_icmov" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none,unknown")
+ 				   (eq_attr "type" "icmov")))
+ 			 "lua_decodern,lua_p2")
+ 
+ (define_insn_reservation "lua_icmov_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "icmov")))
+ 			 "lua_decoder01,lua_p45,lua_p2")
+ 
+ ;; Push and pop.
+ (define_insn_reservation "lua_push_reg" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "push")))
+ 			 "lua_decodern,lua_p12+lua_p45")
+ 
+ (define_insn_reservation "lua_push_mem" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 				   (eq_attr "type" "push")))
+ 			 "lua_decoder01,lua_p45,lua_p12+lua_p45")
+ 
+ (define_insn_reservation "lua_pop_reg" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "pop")))
+ 			 "lua_decoder01,lua_p45")
+ 
+ (define_insn_reservation "lua_pop_mem" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 				   (eq_attr "type" "pop")))
+ 			 "lua_decoder0,lua_p45,lua_p12+lua_p45")
+ 
+ (define_insn_reservation "lua_lea" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 				  (eq_attr "type" "lea"))
+ 			 "hsw_decodern,lua_p45")
+ 
+ (define_insn_reservation "lua_shift_rotate" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none,unknown")
+ 			 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
+ 			 "lua_decodern,lua_p2")
+ 
+ (define_insn_reservation "lua_shift_rotate_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 			 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
+ 			 "lua_decoder01,lua_p45,lua_p2")
+ 
+ (define_insn_reservation "lua_shift_rotate_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 			 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
+ 			 "lua_decoder01,lua_p2,lua_p45")
+ 
+ (define_insn_reservation "lua_shift_rotate_both" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 			 (eq_attr "type" "ishift,ishift1,rotate,rotate1")))
+ 			 "lua_decoder0,lua_p45,lua_p2,lua_p45")
+ 
+ (define_insn_reservation "lua_branch" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "ibr")))
+ 			 "lua_decodern,lua_p1")
+ 
+ (define_insn_reservation "lua_indirect_branch_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "ibr")))
+ 			 "lua_decodern,lua_p45,lua_p1")
+ 
+ (define_insn_reservation "lua_leave" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (eq_attr "type" "leave"))
+ 			 "lua_decoder0,lua_p45+lua_p12,lua_p12")
+ 
+ ;; Multiplication instructions.
+ 
+ (define_insn_reservation "lua_imul_qi" 2
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "type" "imul,imulx"))))
+ 			 "lua_decodern,lua_p1p2")
+ 
+ (define_insn_reservation "lua_imul_qi_mem" 6
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "!none")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "type" "imul,imulx"))))
+ 			 "lua_decoder01,lua_p1p2+lua_p45")
+ 
+ (define_insn_reservation "lua_imul_hisi" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "HI,SI")
+ 					(eq_attr "type" "imul,imulx"))))
+ 			 "lua_decoder0,lua_p1p2")
+ 
+ (define_insn_reservation "lua_imul_hisi_mem" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "!none")
+ 				   (and (eq_attr "mode" "HI,SI")
+ 					(eq_attr "type" "imul,imulx"))))
+ 			 "lua_decoder0,lua_p1p2+lua_p45")
+ 
+ (define_insn_reservation "lua_imul_di" 12
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "type" "imul,imulx"))))
+ 			 "lua_decoder0,lua_p0p1p2p3")
+ 
+ (define_insn_reservation "lua_imul_di_mem" 16
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "!none")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "type" "imul,imulx"))))
+ 			 "lua_decoder0,lua_p0p1p2p3+lua_p45")
+ 
+ ;; Division instructions.
+ 
+ (define_insn_reservation "lua_idiv_qi" 21
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p0p1p2p3,lua_div*21")
+ 
+ (define_insn_reservation "lua_idiv_qi_load" 25
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*21")
+ 
+ (define_insn_reservation "lua_idiv_hi" 22
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p0p1p2p3,lua_div*22")
+ 
+ (define_insn_reservation "lua_idiv_hi_load" 26
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*22")
+ 
+ (define_insn_reservation "lua_idiv_si" 20
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p0p1p2p3,lua_div*20")
+ 
+ (define_insn_reservation "lua_idiv_si_load" 24
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*20")
+ 
+ (define_insn_reservation "lua_idiv_di" 150
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p0p1p2p3,lua_div*150")
+ 
+ (define_insn_reservation "lua_idiv_di_load" 154
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "type" "idiv"))))
+ 			 "lua_decoder0,lua_p45,lua_p0p1p2p3,lua_div*150")
+ 
+ ;; x87 floating point operations.
+ 
+ (define_insn_reservation "lua_fxch" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (eq_attr "type" "fxch"))
+ 			 "lua_decodern,lua_p1")
+ 
+ (define_insn_reservation "lua_fop" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none,unknown")
+ 				   (eq_attr "type" "fop")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_fop_load" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "fop")))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_fop_store" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "fop")))
+ 			 "lua_decodern,lua_p0,lua_p45")
+ 
+ (define_insn_reservation "lua_fop_both" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 				   (eq_attr "type" "fop")))
+ 			 "lua_decoder0,lua_p45,lua_p0,lua_p45")
+ 
+ (define_insn_reservation "lua_fsgn" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (eq_attr "type" "fsgn"))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_fistp" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "fistp")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_fistp_mem" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "!none")
+ 				   (eq_attr "type" "fistp")))
+ 			 "lua_decoder0,lua_p0+lua_p45")
+ 
+ (define_insn_reservation "lua_fcmov" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (eq_attr "type" "fcmov"))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_fcmp" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "fcmp")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_fcmp_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "fcmp")))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_fmov" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "fmov")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_fmov_load" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "!XF")
+ 					(eq_attr "type" "fmov"))))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_fmov_XF_load" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "XF")
+ 					(eq_attr "type" "fmov"))))
+ 			 "lua_decoder0,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_fmov_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (and (eq_attr "mode" "!XF")
+ 					(eq_attr "type" "fmov"))))
+ 			 "lua_decoder0,lua_p0,lua_p45")
+ 
+ (define_insn_reservation "lua_fmov_XF_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (and (eq_attr "mode" "XF")
+ 					(eq_attr "type" "fmov"))))
+ 			 "lua_decoder0,lua_p0,lua_p45")
+ 
+ (define_insn_reservation "lua_fmul" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "fmul")))
+ 			 "lua_decodern,lua_p3")
+ 
+ (define_insn_reservation "lua_fmul_load" 8
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "fp_int_src" "false")
+ 				   (and (eq_attr "memory" "load")
+ 					(eq_attr "type" "fmul"))))
+ 			 "lua_decoder01,lua_p45,lua_p3")
+ 
+ (define_insn_reservation "lua_fimul_load" 8
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "fp_int_src" "true")
+ 				   (and (eq_attr "memory" "load")
+ 					(eq_attr "type" "fmul"))))
+ 			 "lua_decoder0,lua_p45,lua_p3")
+ 
+ ;; fdiv instructions.
+ 
+ (define_insn_reservation "lua_fdiv_SF" 15
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "SF")
+ 				    (eq_attr "type" "fdiv,fpspc"))))
+ 			 "lua_decodern,lua_p0,lua_div*15")
+ 
+ (define_insn_reservation "lua_fdiv_SF_load" 19
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "SF")
+ 				    (eq_attr "type" "fdiv,fpspc"))))
+ 			 "lua_decoder01,lua_p45,lua_p0,lua_div*15")
+ 
+ (define_insn_reservation "lua_fdiv_DF" 18
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "DF")
+ 				    (eq_attr "type" "fdiv,fpspc"))))
+ 			 "lua_decodern,lua_p0,lua_div*18")
+ 
+ (define_insn_reservation "lua_fdiv_DF_load" 22
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "DF")
+ 				    (eq_attr "type" "fdiv,fpspc"))))
+ 			 "lua_decoder01,lua_p45,lua_p0,lua_div*18")
+ 
+ (define_insn_reservation "lua_fdiv_XF" 22
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "XF")
+ 				    (eq_attr "type" "fdiv,fpspc"))))
+ 			 "lua_decoder0,lua_p0,lua_div*22")
+ 
+ (define_insn_reservation "lua_fdiv_XF_load" 26
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "XF")
+ 				    (eq_attr "type" "fdiv,fpspc"))))
+ 			 "lua_decoder0,lua_p45,lua_p0,lua_div*22")
+ 
+ ;; MMX instructions.
+ 
+ (define_insn_reservation "lua_mmx_sse_add_shft" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 			 (eq_attr "type" "mmxadd,sseiadd,mmxshft,sseishft")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_mmx_sse_add_shft_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 			 (eq_attr "type" "mmxadd,sseiadd,mmxshft,sseishft")))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_mmx_sse_add_shft_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 			 (eq_attr "type" "mmxadd,sseiadd,mmxshft,sseishft")))
+ 			 "lua_decodern,lua_p0,lua_p45")
+ 
+ (define_insn_reservation "lua_mmx_mul" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "mmxmul,sseimul")))
+ 			 "lua_decodern,lua_p3")
+ 
+ (define_insn_reservation "lua_mmx_mul_load" 9
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "mmxmul,sseimul")))
+ 			 "lua_decoder01,lua_p45,lua_p3")
+ 
+ (define_insn_reservation "lua_mmxcvt" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "mmxcvt")))
+ 			 "lua_decodern,lua_p03")
+ 
+ (define_insn_reservation "lua_mmxcvt_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "mmxcvt")))
+ 			 "lua_decoder01,lua_p45,lua_p03")
+ 
+ ;; The sfence instruction.
+ (define_insn_reservation "lua_sse_sfence" 13
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "unknown")
+ 				   (eq_attr "type" "sse")))
+ 			 "lua_decoder0,lua_p45")
+ 
+ (define_insn_reservation "lua_sse_SFDF" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "mode" "SF,DF")
+ 				   (eq_attr "type" "sse")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_V4SF" 13
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "mode" "V4SF")
+ 				   (eq_attr "type" "sse")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_V8SF" 19
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "mode" "V8SF,V4DF")
+ 				   (eq_attr "type" "sse")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_add1" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "sseadd1")))
+ 			 "lua_decoder0,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_add1_load" 8
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "sseadd1")))
+ 			 "lua_decoder0,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_cmp" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "ssecmp,ssecomi")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_cmp_load" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "ssecmp,ssecomi")))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_logic" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "sselog,sselog1")))
+ 			 "lua_decodern,lua_p03")
+ 
+ (define_insn_reservation "lua_sse_logic_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "sselog,sselog1")))
+ 			 "lua_decoder01,lua_p45,lua_p03")
+ 
+ (define_insn_reservation "lua_sse_add" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "sseadd")))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_sse_add_load" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "sseadd")))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_ssemul_ss_ps" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "SF,V4SF,V8SF")
+ 					(eq_attr "type" "ssemul"))))
+ 			 "lua_decodern,lua_p3")
+ 
+ (define_insn_reservation "lua_ssemul_ss_ps_load" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "SF,V4SF,V8SF")
+ 					(eq_attr "type" "ssemul"))))
+ 			 "lua_decoder01,lua_p45,lua_p3")
+ 
+ (define_insn_reservation "lua_ssemul_sd_pd" 4
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "DF,V2DF,V4DF")
+ 					(eq_attr "type" "ssemul"))))
+ 			 "lua_decodern,lua_p3")
+ 
+ (define_insn_reservation "lua_ssemul_sd_pd_load" 8
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "DF,V2DF,V4DF")
+ 					(eq_attr "type" "ssemul"))))
+ 			 "lua_decoder01,lua_p45,lua_p3")
+ 
+ (define_insn_reservation "lua_ssediv_SF" 13
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "SF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decodern,lua_p0,lua_div*13")
+ 
+ (define_insn_reservation "lua_ssediv_load_SF" 17
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "SF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder01,lua_p45,lua_p0,lua_div*13")
+ 
+ (define_insn_reservation "lua_ssediv_V4SF" 23
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "V4SF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decodern,lua_p0,lua_div*23")
+ 
+ (define_insn_reservation "lua_ssediv_load_V4SF" 27
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "V4SF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder01,lua_p45,lua_p0,lua_div*23")
+ 
+ (define_insn_reservation "lua_ssediv_V8SF" 47
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "V8SF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder0,lua_p0,lua_div*47")
+ 
+ (define_insn_reservation "lua_ssediv_load_V8SF" 51
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "V8SF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder0,lua_p45,lua_p0,lua_div*47")
+ 
+ (define_insn_reservation "lua_ssediv_SD" 17
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "DF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decodern,lua_p0,lua_div*17")
+ 
+ (define_insn_reservation "lua_ssediv_load_SD" 21
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "DF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder01,lua_p45,lua_p0,lua_div*17")
+ 
+ (define_insn_reservation "lua_ssediv_V2DF" 30
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "V2DF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decodern,lua_p0,lua_div*30")
+ 
+ (define_insn_reservation "lua_ssediv_load_V2DF" 34
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "V2DF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder01,lua_p45,lua_p0,lua_div*30")
+ 
+ (define_insn_reservation "lua_ssediv_V4DF" 56
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "V4DF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder0,lua_p0,lua_div*56")
+ 
+ (define_insn_reservation "lua_ssediv_load_V4DF" 60
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "V4DF")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "lua_decoder0,lua_p4p5,lua_p0,lua_div*56")
+ 
+ 
+ (define_insn_reservation "lua_sseicvt_si" 2
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "SI")
+ 			 (and (match_operand:SF 1 "memory_operand")
+ 					(eq_attr "type" "sseicvt")))))
+ 			 "lua_decoder01,lua_p0")
+ 
+ (define_insn_reservation "lua_sseicvt_si_load" 6
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "SI")
+ 			 (and (match_operand:SF 1 "memory_operand")
+ 					(eq_attr "type" "sseicvt")))))
+ 			 "lua_decoder0,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_sseicvtdf_si" 3
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "mode" "SI")
+ 			 (and (match_operand:DF 1 "memory_operand")
+ 					(eq_attr "type" "sseicvt")))))
+ 			 "lua_decodern,lua_p0")
+ 
+ (define_insn_reservation "lua_sseicvtdf_si_load" 7
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (and (eq_attr "mode" "SI")
+ 			 (and (match_operand:DF 1 "memory_operand")
+ 					(eq_attr "type" "sseicvt")))))
+ 			 "lua_decoder01,lua_p45,lua_p0")
+ 
+ (define_insn_reservation "lua_ssecvt" 6
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "ssecvt")))
+ 			 "lua_decoder01,lua_p03")
+ 
+ (define_insn_reservation "lua_ssecvt_load" 10
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "ssecvt")))
+ 			 "lua_decoder0,lua_p45,lua_p03")
+ 
+ (define_insn_reservation "lua_sse_mov" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "ssemov")))
+ 			 "lua_decodern,lua_p03")
+ 
+ (define_insn_reservation "lua_sse_mov_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "ssemov")))
+ 			 "lua_decoder01,lua_p45,lua_p03")
+ 
+ (define_insn_reservation "lua_sse_mov_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "ssemov")))
+ 			 "lua_decoder01,lua_p0,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_alu" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none,unknown")
+ 				   (eq_attr "type" "alu")))
+ 			 "lua_decodern,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_alu_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "alu")))
+ 			 "lua_decoder01,lua_p45,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_alu_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "alu")))
+ 			 "lua_decoder01,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_alu_both" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 				   (eq_attr "type" "alu")))
+ 			 "lua_decoder0,lua_p45,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_alu1" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none,unknown")
+ 				   (eq_attr "type" "alu1")))
+ 			 "lua_decodern,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_alu1_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "alu1")))
+ 			 "lua_decoder01,lua_p45,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_alu1_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "alu1")))
+ 			 "lua_decoder01,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_alu1_both" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 				   (eq_attr "type" "alu1")))
+ 			 "lua_decoder0,lua_p45,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_negnot_incdec" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "negnot,incdec")))
+ 			 "lua_decodern,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_negnot_setcc" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "setcc")))
+ 			 "lua_decodern,lua_p2")
+ 
+ (define_insn_reservation "lua_insn_negnot_setcc_mem" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "!none")
+ 				   (eq_attr "type" "negnot,setcc")))
+ 			 "lua_decoder01,lua_p45,lua_p2,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_incdec_mem" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "!none")
+ 				   (eq_attr "type" "incdec")))
+ 			 "lua_decoder0,lua_p45,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_icmptest" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none,unknown")
+ 				   (eq_attr "type" "icmp,test")))
+ 			 "lua_decodern,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_icmptest_load" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "icmp,test")))
+ 			 "lua_decoder01,lua_p45,lua_p12")
+ 
+ (define_insn_reservation "lua_insn_icmptest_store" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "store")
+ 				   (eq_attr "type" "icmp,test")))
+ 			 "lua_decoder01,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_icmptest_both" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "both")
+ 				   (eq_attr "type" "icmp,test")))
+ 			 "lua_decoder0,lua_p45,lua_p12,lua_p45")
+ 
+ (define_insn_reservation "lua_insn_sseishft1_mmx" 1
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "none")
+ 				   (eq_attr "type" "sseishft1,mmx,mmxcmp")))
+ 			 "lua_decodern,lua_p03")
+ 
+ (define_insn_reservation "lua_insn_sseishft1_mmx_mem" 5
+ 			 (and (eq_attr "cpu" "lujiazui")
+ 			      (and (eq_attr "memory" "load")
+ 				   (eq_attr "type" "sseishft1,mmx,mmxcmp")))
+ 			 "lua_decoder01,lua_p45,lua_p03")
diff -Nrcpad gcc-12.2.0/gcc/config/i386/lwpintrin.h gcc-13.1.0/gcc/config/i386/lwpintrin.h
*** gcc-12.2.0/gcc/config/i386/lwpintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/lwpintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/lynx.h gcc-13.1.0/gcc/config/i386/lynx.h
*** gcc-12.2.0/gcc/config/i386/lynx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/lynx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for LynxOS on i386.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for LynxOS on i386.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 37,45 ****
  
  /* LynxOS's GDB counts the floating point registers from 16.  */
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n)						\
!   (TARGET_64BIT ? dbx64_register_map[n]					\
     : (n) == 0 ? 0							\
     : (n) == 1 ? 2							\
     : (n) == 2 ? 1							\
--- 37,45 ----
  
  /* LynxOS's GDB counts the floating point registers from 16.  */
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n)						\
!   (TARGET_64BIT ? debugger64_register_map[n]					\
     : (n) == 0 ? 0							\
     : (n) == 1 ? 2							\
     : (n) == 2 ? 1							\
diff -Nrcpad gcc-12.2.0/gcc/config/i386/lzcntintrin.h gcc-13.1.0/gcc/config/i386/lzcntintrin.h
*** gcc-12.2.0/gcc/config/i386/lzcntintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/lzcntintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw-mcfgthread.h gcc-13.1.0/gcc/config/i386/mingw-mcfgthread.h
*** gcc-12.2.0/gcc/config/i386/mingw-mcfgthread.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/mingw-mcfgthread.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1 ----
+ #define TARGET_USING_MCFGTHREAD  1
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw-pthread.h gcc-13.1.0/gcc/config/i386/mingw-pthread.h
*** gcc-12.2.0/gcc/config/i386/mingw-pthread.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mingw-pthread.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Defines that pthread library shall be enabled by default
     for target.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Defines that pthread library shall be enabled by default
     for target.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw-stdint.h gcc-13.1.0/gcc/config/i386/mingw-stdint.h
*** gcc-12.2.0/gcc/config/i386/mingw-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mingw-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using mingw.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using mingw.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw-w64.h gcc-13.1.0/gcc/config/i386/mingw-w64.h
*** gcc-12.2.0/gcc/config/i386/mingw-w64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mingw-w64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows 32/64 via mingw-w64 runtime, using GNU tools and
     the Windows API Library.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows 32/64 via mingw-w64 runtime, using GNU tools and
     the Windows API Library.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw-w64.opt gcc-13.1.0/gcc/config/i386/mingw-w64.opt
*** gcc-12.2.0/gcc/config/i386/mingw-w64.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mingw-w64.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; MinGW-w64-specific options.
  
! ; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; MinGW-w64-specific options.
  
! ; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw.opt gcc-13.1.0/gcc/config/i386/mingw.opt
*** gcc-12.2.0/gcc/config/i386/mingw.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mingw.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; MinGW-specific options.
  
! ; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; MinGW-specific options.
  
! ; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mingw32.h gcc-13.1.0/gcc/config/i386/mingw32.h
*** gcc-12.2.0/gcc/config/i386/mingw32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mingw32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using GNU tools and the Windows32 API Library.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific defines to be used when targeting GCC for
     hosting on Windows32, using GNU tools and the Windows32 API Library.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 32,37 ****
--- 32,41 ----
  	 | MASK_STACK_PROBE | MASK_ALIGN_DOUBLE \
  	 | MASK_MS_BITFIELD_LAYOUT)
  
+ #ifndef TARGET_USING_MCFGTHREAD
+ #define TARGET_USING_MCFGTHREAD  0
+ #endif
+ 
  /* See i386/crtdll.h for an alternative definition. _INTEGRAL_MAX_BITS
     is for compatibility with native compiler.  */
  #define EXTRA_OS_CPP_BUILTINS()					\
*************** along with GCC; see the file COPYING3.
*** 50,67 ****
  	  builtin_define_std ("WIN64");				\
  	  builtin_define ("_WIN64");				\
  	}							\
!     }								\
!   while (0)
! 
! #define EXTRA_TARGET_D_OS_VERSIONS()				\
!   do								\
!     {								\
!       builtin_version ("MinGW");				\
!       if (TARGET_64BIT && ix86_abi == MS_ABI)			\
! 	builtin_version ("Win64");				\
!       else if (!TARGET_64BIT)					\
! 	builtin_version ("Win32");				\
!       builtin_version ("CRuntime_Microsoft");			\
      }								\
    while (0)
  
--- 54,61 ----
  	  builtin_define_std ("WIN64");				\
  	  builtin_define ("_WIN64");				\
  	}							\
!       if (TARGET_USING_MCFGTHREAD)				\
! 	builtin_define ("__USING_MCFGTHREAD__");		\
      }								\
    while (0)
  
*************** along with GCC; see the file COPYING3.
*** 181,191 ****
  #else
  #define SHARED_LIBGCC_SPEC " -lgcc "
  #endif
  #undef REAL_LIBGCC_SPEC
  #define REAL_LIBGCC_SPEC \
    "%{mthreads:-lmingwthrd} -lmingw32 \
     " SHARED_LIBGCC_SPEC " \
!    -lmoldname -lmingwex -lmsvcrt -lkernel32"
  
  #undef STARTFILE_SPEC
  #define STARTFILE_SPEC "%{shared|mdll:dllcrt2%O%s} \
--- 175,190 ----
  #else
  #define SHARED_LIBGCC_SPEC " -lgcc "
  #endif
+ #if TARGET_USING_MCFGTHREAD
+ #define MCFGTHREAD_SPEC  " -lmcfgthread -lkernel32 -lntdll "
+ #else
+ #define MCFGTHREAD_SPEC  ""
+ #endif
  #undef REAL_LIBGCC_SPEC
  #define REAL_LIBGCC_SPEC \
    "%{mthreads:-lmingwthrd} -lmingw32 \
     " SHARED_LIBGCC_SPEC " \
!    -lmoldname -lmingwex -lmsvcrt -lkernel32 " MCFGTHREAD_SPEC
  
  #undef STARTFILE_SPEC
  #define STARTFILE_SPEC "%{shared|mdll:dllcrt2%O%s} \
*************** along with GCC; see the file COPYING3.
*** 197,203 ****
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     %{!shared:%:if-exists(default-manifest.o%s)}\
     %{fvtable-verify=none:%s; \
      fvtable-verify=preinit:vtv_end.o%s; \
--- 196,202 ----
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{mdaz-ftz:crtfastmath.o%s;Ofast|ffast-math|funsafe-math-optimizations:%{!shared:%{!mno-daz-ftz:crtfastmath.o%s}}} \
     %{!shared:%:if-exists(default-manifest.o%s)}\
     %{fvtable-verify=none:%s; \
      fvtable-verify=preinit:vtv_end.o%s; \
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mm3dnow.h gcc-13.1.0/gcc/config/i386/mm3dnow.h
*** gcc-12.2.0/gcc/config/i386/mm3dnow.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mm3dnow.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mmintrin.h gcc-13.1.0/gcc/config/i386/mmintrin.h
*** gcc-12.2.0/gcc/config/i386/mmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mmx.md gcc-13.1.0/gcc/config/i386/mmx.md
*** gcc-12.2.0/gcc/config/i386/mmx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mmx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for MMX and 3dNOW! instructions
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for MMX and 3dNOW! instructions
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 48,54 ****
  (define_mode_iterator MMXMODEI8 [V8QI V4HI V2SI (V1DI "TARGET_SSE2")])
  
  ;; All 8-byte vector modes handled by MMX
! (define_mode_iterator MMXMODE [V8QI V4HI V2SI V1DI V2SF V4HF])
  (define_mode_iterator MMXMODE124 [V8QI V4HI V2SI V2SF])
  
  ;; Mix-n-match
--- 48,54 ----
  (define_mode_iterator MMXMODEI8 [V8QI V4HI V2SI (V1DI "TARGET_SSE2")])
  
  ;; All 8-byte vector modes handled by MMX
! (define_mode_iterator MMXMODE [V8QI V4HI V2SI V1DI V2SF V4HF V4BF])
  (define_mode_iterator MMXMODE124 [V8QI V4HI V2SI V2SF])
  
  ;; Mix-n-match
***************
*** 58,64 ****
  (define_mode_iterator MMXMODE248 [V4HI V2SI V1DI])
  
  ;; All 4-byte integer/float16 vector modes
! (define_mode_iterator V_32 [V4QI V2HI V1SI V2HF])
  
  ;; 4-byte integer vector modes
  (define_mode_iterator VI_32 [V4QI V2HI])
--- 58,64 ----
  (define_mode_iterator MMXMODE248 [V4HI V2SI V1DI])
  
  ;; All 4-byte integer/float16 vector modes
! (define_mode_iterator V_32 [V4QI V2HI V1SI V2HF V2BF])
  
  ;; 4-byte integer vector modes
  (define_mode_iterator VI_32 [V4QI V2HI])
***************
*** 69,74 ****
--- 69,81 ----
  ;; 4-byte and 2-byte QImode vector modes
  (define_mode_iterator VI1_16_32 [V4QI V2QI])
  
+ ;; All 2-byte, 4-byte and 8-byte vector modes with more than 1 element
+ (define_mode_iterator V_16_32_64
+    [V2QI V4QI V2HI V2HF
+     (V8QI "TARGET_64BIT") (V4HI "TARGET_64BIT")
+     (V4HF "TARGET_64BIT") (V4BF "TARGET_64BIT")
+     (V2SI "TARGET_64BIT") (V2SF "TARGET_64BIT")])
+ 
  ;; V2S* modes
  (define_mode_iterator V2FI [V2SF V2SI])
  
***************
*** 80,85 ****
--- 87,101 ----
    [(V8QI "b") (V4QI "b") (V2QI "b")
     (V4HI "w") (V2HI "w") (V2SI "d") (V1DI "q")])
  
+ ;; Mapping to same size integral mode.
+ (define_mode_attr mmxinsnmode
+   [(V8QI "DI") (V4QI "SI") (V2QI "HI")
+    (V4HI "DI") (V2HI "SI")
+    (V2SI "DI")
+    (V4HF "DI") (V2HF "SI")
+    (V4BF "DI") (V2BF "SI")
+    (V2SF "DI")])
+ 
  (define_mode_attr mmxdoublemode
    [(V8QI "V8HI") (V4HI "V4SI")])
  
***************
*** 117,123 ****
  	(match_operand:MMXMODE 1 "nonimm_or_0_operand"
      "rCo,rC,C,rm,rC,C  ,!y,m  ,?!y,?!y,r  ,C,v,m,v,v,r,*x,!y"))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE)
!    && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
  {
    switch (get_attr_type (insn))
      {
--- 133,140 ----
  	(match_operand:MMXMODE 1 "nonimm_or_0_operand"
      "rCo,rC,C,rm,rC,C  ,!y,m  ,?!y,?!y,r  ,C,v,m,v,v,r,*x,!y"))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE)
!    && !(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && ix86_hardreg_mov_ok (operands[0], operands[1])"
  {
    switch (get_attr_type (insn))
      {
***************
*** 199,207 ****
       (cond [(eq_attr "alternative" "2")
  	      (const_string "SI")
  	    (eq_attr "alternative" "11,12")
! 	      (cond [(match_test "<MODE>mode == V2SFmode")
! 		       (const_string "V4SF")
! 		     (match_test "<MODE>mode == V4HFmode")
  		       (const_string "V4SF")
  		     (ior (not (match_test "TARGET_SSE2"))
  			  (match_test "optimize_function_for_size_p (cfun)"))
--- 216,224 ----
       (cond [(eq_attr "alternative" "2")
  	      (const_string "SI")
  	    (eq_attr "alternative" "11,12")
! 	      (cond [(match_test "<MODE>mode == V2SFmode
! 				  || <MODE>mode == V4HFmode
! 				  || <MODE>mode == V4BFmode")
  		       (const_string "V4SF")
  		     (ior (not (match_test "TARGET_SSE2"))
  			  (match_test "optimize_function_for_size_p (cfun)"))
***************
*** 213,225 ****
  		 (ior (ior (and (match_test "<MODE>mode == V2SFmode")
  				(not (match_test "TARGET_MMX_WITH_SSE")))
  			   (not (match_test "TARGET_SSE2")))
! 		      (match_test "<MODE>mode == V4HFmode")))
  	      (const_string "V2SF")
  
  	    (and (eq_attr "alternative" "14")
  		 (ior (ior (match_test "<MODE>mode == V2SFmode")
  			   (not (match_test "TARGET_SSE2")))
! 		      (match_test "<MODE>mode == V4HFmode")))
  	      (const_string "V2SF")
  	   ]
  	   (const_string "DI")))
--- 230,244 ----
  		 (ior (ior (and (match_test "<MODE>mode == V2SFmode")
  				(not (match_test "TARGET_MMX_WITH_SSE")))
  			   (not (match_test "TARGET_SSE2")))
! 		      (match_test "<MODE>mode == V4HFmode
! 				  || <MODE>mode == V4BFmode")))
  	      (const_string "V2SF")
  
  	    (and (eq_attr "alternative" "14")
  		 (ior (ior (match_test "<MODE>mode == V2SFmode")
  			   (not (match_test "TARGET_SSE2")))
! 		      (match_test "<MODE>mode == V4HFmode
! 				  || <MODE>mode == V4BFmode")))
  	      (const_string "V2SF")
  	   ]
  	   (const_string "DI")))
***************
*** 268,274 ****
      "=r ,m ,v,v,v,m,r,v")
  	(match_operand:V_32 1 "general_operand"
      "rmC,rC,C,v,m,v,v,r"))]
!   "!(MEM_P (operands[0]) && MEM_P (operands[1]))"
  {
    switch (get_attr_type (insn))
      {
--- 287,294 ----
      "=r ,m ,v,v,v,m,r,v")
  	(match_operand:V_32 1 "general_operand"
      "rmC,rC,C,v,m,v,v,r"))]
!   "!(MEM_P (operands[0]) && MEM_P (operands[1]))
!    && ix86_hardreg_mov_ok (operands[0], operands[1])"
  {
    switch (get_attr_type (insn))
      {
***************
*** 307,313 ****
         (const_string "*")))
     (set (attr "mode")
       (cond [(eq_attr "alternative" "2,3")
! 	      (cond [(match_test "<MODE>mode == V2HFmode")
  		       (const_string "V4SF")
  		     (match_test "TARGET_AVX")
  		       (const_string "TI")
--- 327,334 ----
         (const_string "*")))
     (set (attr "mode")
       (cond [(eq_attr "alternative" "2,3")
! 	      (cond [(match_test "<MODE>mode == V2HFmode
! 				 || <MODE>mode == V2BFmode")
  		       (const_string "V4SF")
  		     (match_test "TARGET_AVX")
  		       (const_string "TI")
***************
*** 318,324 ****
  		    (const_string "TI"))
  
  	    (and (eq_attr "alternative" "4,5")
! 		 (ior (match_test "<MODE>mode == V2HFmode")
  		      (not (match_test "TARGET_SSE2"))))
  	      (const_string "SF")
  	   ]
--- 339,346 ----
  		    (const_string "TI"))
  
  	    (and (eq_attr "alternative" "4,5")
! 		 (ior (match_test "<MODE>mode == V2HFmode
! 				 || <MODE>mode == V2BFmode")
  		      (not (match_test "TARGET_SSE2"))))
  	      (const_string "SF")
  	   ]
***************
*** 331,336 ****
--- 353,374 ----
  	   ]
  	   (symbol_ref "true")))])
  
+ ;; 16-bit, 32-bit and 64-bit constant vector stores.  After reload,
+ ;; convert them to immediate integer stores.
+ (define_insn_and_split "*mov<mode>_imm"
+   [(set (match_operand:V_16_32_64 0 "memory_operand" "=m")
+ 	(match_operand:V_16_32_64 1 "x86_64_const_vector_operand" "i"))]
+   ""
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 0) (match_dup 1))]
+ {
+   HOST_WIDE_INT val = ix86_convert_const_vector_to_integer (operands[1],
+ 							    <MODE>mode);
+   operands[1] = GEN_INT (val);
+   operands[0] = lowpart_subreg (<mmxinsnmode>mode, operands[0], <MODE>mode);
+ })
+ 
  ;; For TARGET_64BIT we always round up to 8 bytes.
  (define_insn "*push<mode>2_rex64"
    [(set (match_operand:V_32 0 "push_operand" "=X,X")
***************
*** 1116,1121 ****
--- 1154,1178 ----
    DONE;
  })
  
+ (define_insn "*mmx_blendps"
+   [(set (match_operand:V2SF 0 "register_operand" "=Yr,*x,x")
+ 	(vec_merge:V2SF
+ 	  (match_operand:V2SF 2 "register_operand" "Yr,*x,x")
+ 	  (match_operand:V2SF 1 "register_operand" "0,0,x")
+ 	  (match_operand:SI 3 "const_0_to_3_operand")))]
+   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
+   "@
+    blendps\t{%3, %2, %0|%0, %2, %3}
+    blendps\t{%3, %2, %0|%0, %2, %3}
+    vblendps\t{%3, %2, %1, %0|%0, %1, %2, %3}"
+   [(set_attr "isa" "noavx,noavx,avx")
+    (set_attr "type" "ssemov")
+    (set_attr "length_immediate" "1")
+    (set_attr "prefix_data16" "1,1,*")
+    (set_attr "prefix_extra" "1")
+    (set_attr "prefix" "orig,orig,vex")
+    (set_attr "mode" "V4SF")])
+ 
  (define_insn "mmx_blendvps"
    [(set (match_operand:V2SF 0 "register_operand" "=Yr,*x,x")
  	(unspec:V2SF
***************
*** 1480,1490 ****
     (set_attr "prefix" "*,maybe_vex,orig")
     (set_attr "mode" "DI,V4SF,V4SF")])
  
! (define_insn "*mmx_movss"
!   [(set (match_operand:V2SF 0 "register_operand"   "=x,v")
! 	(vec_merge:V2SF
! 	  (match_operand:V2SF 2 "register_operand" " x,v")
! 	  (match_operand:V2SF 1 "register_operand" " 0,v")
  	  (const_int 1)))]
    "TARGET_MMX_WITH_SSE"
    "@
--- 1537,1547 ----
     (set_attr "prefix" "*,maybe_vex,orig")
     (set_attr "mode" "DI,V4SF,V4SF")])
  
! (define_insn "*mmx_movss_<mode>"
!   [(set (match_operand:V2FI 0 "register_operand"   "=x,v")
! 	(vec_merge:V2FI
! 	  (match_operand:V2FI 2 "register_operand" " x,v")
! 	  (match_operand:V2FI 1 "register_operand" " 0,v")
  	  (const_int 1)))]
    "TARGET_MMX_WITH_SSE"
    "@
***************
*** 1599,1604 ****
--- 1656,1816 ----
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;
+ ;; Parallel single-precision floating point rounding operations.
+ ;;
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ 
+ (define_expand "nearbyintv2sf2"
+   [(set (match_operand:V2SF 0 "register_operand")
+ 	(unspec:V2SF
+ 	  [(match_operand:V2SF 1 "register_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
+   "operands[2] = GEN_INT (ROUND_MXCSR | ROUND_NO_EXC);")
+ 
+ (define_expand "rintv2sf2"
+   [(set (match_operand:V2SF 0 "register_operand")
+ 	(unspec:V2SF
+ 	  [(match_operand:V2SF 1 "register_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
+   "operands[2] = GEN_INT (ROUND_MXCSR);")
+ 
+ (define_expand "ceilv2sf2"
+   [(set (match_operand:V2SF 0 "register_operand")
+ 	(unspec:V2SF
+ 	  [(match_operand:V2SF 1 "register_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math
+    && TARGET_MMX_WITH_SSE"
+   "operands[2] = GEN_INT (ROUND_CEIL | ROUND_NO_EXC);")
+ 
+ (define_expand "lceilv2sfv2si2"
+   [(match_operand:V2SI 0 "register_operand")
+    (match_operand:V2SF 1 "register_operand")]
+  "TARGET_SSE4_1 && !flag_trapping_math
+   && TARGET_MMX_WITH_SSE"
+ {
+   rtx tmp = gen_reg_rtx (V2SFmode);
+   emit_insn (gen_ceilv2sf2 (tmp, operands[1]));
+   emit_insn (gen_fix_truncv2sfv2si2 (operands[0], tmp));
+   DONE;
+ })
+ 
+ (define_expand "floorv2sf2"
+   [(set (match_operand:V2SF 0 "register_operand")
+ 	(unspec:V2SF
+ 	  [(match_operand:V2SF 1 "register_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math
+   && TARGET_MMX_WITH_SSE"
+   "operands[2] = GEN_INT (ROUND_FLOOR | ROUND_NO_EXC);")
+ 
+ (define_expand "lfloorv2sfv2si2"
+   [(match_operand:V2SI 0 "register_operand")
+    (match_operand:V2SF 1 "register_operand")]
+  "TARGET_SSE4_1 && !flag_trapping_math
+   && TARGET_MMX_WITH_SSE"
+ {
+   rtx tmp = gen_reg_rtx (V2SFmode);
+   emit_insn (gen_floorv2sf2 (tmp, operands[1]));
+   emit_insn (gen_fix_truncv2sfv2si2 (operands[0], tmp));
+   DONE;
+ })
+ 
+ (define_expand "btruncv2sf2"
+   [(set (match_operand:V2SF 0 "register_operand")
+ 	(unspec:V2SF
+ 	  [(match_operand:V2SF 1 "register_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math
+   && TARGET_MMX_WITH_SSE"
+   "operands[2] = GEN_INT (ROUND_TRUNC | ROUND_NO_EXC);")
+ 
+ (define_insn "*mmx_roundv2sf2"
+   [(set (match_operand:V2SF 0 "register_operand" "=Yr,*x,v")
+ 	(unspec:V2SF
+ 	  [(match_operand:V2SF 1 "register_operand" "Yr,x,v")
+ 	   (match_operand:SI 2 "const_0_to_15_operand")]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
+   "%vroundps\t{%2, %1, %0|%0, %1, %2}"
+   [(set_attr "isa" "noavx,noavx,avx")
+    (set_attr "type" "ssecvt")
+    (set_attr "prefix_data16" "1,1,*")
+    (set_attr "prefix_extra" "1")
+    (set_attr "length_immediate" "1")
+    (set_attr "prefix" "orig,orig,vex")
+    (set_attr "mode" "V4SF")])
+ 
+ (define_insn "lrintv2sfv2si2"
+   [(set (match_operand:V2SI 0 "register_operand" "=v")
+ 	(unspec:V2SI
+ 	  [(match_operand:V2SF 1 "register_operand" "v")]
+ 	  UNSPEC_FIX_NOTRUNC))]
+   "TARGET_MMX_WITH_SSE"
+   "%vcvtps2dq\t{%1, %0|%0, %1}"
+   [(set_attr "type" "ssecvt")
+    (set (attr "prefix_data16")
+      (if_then_else
+        (match_test "TARGET_AVX")
+      (const_string "*")
+      (const_string "1")))
+    (set_attr "prefix" "maybe_vex")
+    (set_attr "mode" "TI")])
+ 
+ (define_expand "roundv2sf2"
+   [(set (match_dup 3)
+ 	(plus:V2SF
+ 	  (match_operand:V2SF 1 "register_operand")
+ 	  (match_dup 2)))
+    (set (match_operand:V2SF 0 "register_operand")
+ 	(unspec:V2SF
+ 	  [(match_dup 3) (match_dup 4)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math
+    && TARGET_MMX_WITH_SSE"
+ {
+   const struct real_format *fmt;
+   REAL_VALUE_TYPE pred_half, half_minus_pred_half;
+   rtx half, vec_half;
+ 
+   /* load nextafter (0.5, 0.0) */
+   fmt = REAL_MODE_FORMAT (SFmode);
+   real_2expN (&half_minus_pred_half, -(fmt->p) - 1, SFmode);
+   real_arithmetic (&pred_half, MINUS_EXPR, &dconsthalf, &half_minus_pred_half);
+   half = const_double_from_real_value (pred_half, SFmode);
+ 
+   vec_half = ix86_build_const_vector (V2SFmode, true, half);
+   vec_half = force_reg (V2SFmode, vec_half);
+ 
+   operands[2] = gen_reg_rtx (V2SFmode);
+   emit_insn (gen_copysignv2sf3 (operands[2], vec_half, operands[1]));
+ 
+   operands[3] = gen_reg_rtx (V2SFmode);
+   operands[4] = GEN_INT (ROUND_TRUNC);
+ })
+ 
+ (define_expand "lroundv2sfv2si2"
+   [(match_operand:V2SI 0 "register_operand")
+    (match_operand:V2SF 1 "register_operand")]
+  "TARGET_SSE4_1 && !flag_trapping_math
+   && TARGET_MMX_WITH_SSE"
+ {
+   rtx tmp = gen_reg_rtx (V2SFmode);
+   emit_insn (gen_roundv2sf2 (tmp, operands[1]));
+   emit_insn (gen_fix_truncv2sfv2si2 (operands[0], tmp));
+   DONE;
+ })
+ 
+ 
+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+ ;;
  ;; Parallel half-precision floating point arithmetic
  ;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
***************
*** 2937,2969 ****
     (set_attr "type" "mmxadd,sselog,sselog,sselog")
     (set_attr "mode" "DI,TI,TI,TI")])
  
! (define_insn "<code><mode>3"
!   [(set (match_operand:VI_16_32 0 "register_operand" "=?r,x,x,v")
          (any_logic:VI_16_32
! 	  (match_operand:VI_16_32 1 "register_operand" "%0,0,x,v")
! 	  (match_operand:VI_16_32 2 "register_operand" "r,x,x,v")))
!    (clobber (reg:CC FLAGS_REG))]
    ""
    "#"
!   [(set_attr "isa" "*,sse2_noavx,avx,avx512vl")
!    (set_attr "type" "alu,sselog,sselog,sselog")
!    (set_attr "mode" "SI,TI,TI,TI")])
  
  (define_split
!   [(set (match_operand:VI_16_32 0 "general_reg_operand")
          (any_logic:VI_16_32
! 	  (match_operand:VI_16_32 1 "general_reg_operand")
! 	  (match_operand:VI_16_32 2 "general_reg_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "reload_completed"
    [(parallel
       [(set (match_dup 0)
! 	   (any_logic:SI (match_dup 1) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
!   operands[2] = lowpart_subreg (SImode, operands[2], <MODE>mode);
!   operands[1] = lowpart_subreg (SImode, operands[1], <MODE>mode);
!   operands[0] = lowpart_subreg (SImode, operands[0], <MODE>mode);
  })
  
  (define_split
--- 3149,3196 ----
     (set_attr "type" "mmxadd,sselog,sselog,sselog")
     (set_attr "mode" "DI,TI,TI,TI")])
  
! (define_expand "<code><mode>3"
!   [(set (match_operand:VI_16_32 0 "nonimmediate_operand")
          (any_logic:VI_16_32
! 	  (match_operand:VI_16_32 1 "nonimmediate_operand")
! 	  (match_operand:VI_16_32 2 "nonimmediate_or_x86_64_const_vector_operand")))]
    ""
+   "ix86_expand_binary_operator (<CODE>, <MODE>mode, operands); DONE;")
+ 
+ (define_insn "*<code><mode>3"
+   [(set (match_operand:VI_16_32 0 "nonimmediate_operand" "=?r,m,x,x,v")
+         (any_logic:VI_16_32
+ 	  (match_operand:VI_16_32 1 "nonimmediate_operand" "%0,0,0,x,v")
+ 	  (match_operand:VI_16_32 2 "nonimmediate_or_x86_64_const_vector_operand" "r,i,x,x,v")))
+    (clobber (reg:CC FLAGS_REG))]
+   "ix86_binary_operator_ok (<CODE>, <MODE>mode, operands)"
    "#"
!   [(set_attr "isa" "*,*,sse2_noavx,avx,avx512vl")
!    (set_attr "type" "alu,alu,sselog,sselog,sselog")
!    (set_attr "mode" "SI,SI,TI,TI,TI")])
  
  (define_split
!   [(set (match_operand:VI_16_32 0 "nonimmediate_gr_operand")
          (any_logic:VI_16_32
! 	  (match_operand:VI_16_32 1 "nonimmediate_gr_operand")
! 	  (match_operand:VI_16_32 2 "reg_or_const_vector_operand")))
     (clobber (reg:CC FLAGS_REG))]
    "reload_completed"
    [(parallel
       [(set (match_dup 0)
! 	   (any_logic:<mmxinsnmode> (match_dup 1) (match_dup 2)))
        (clobber (reg:CC FLAGS_REG))])]
  {
!   if (!register_operand (operands[2], <MODE>mode))
!     {
!       HOST_WIDE_INT val = ix86_convert_const_vector_to_integer (operands[2],
! 								<MODE>mode);
!       operands[2] = GEN_INT (val);
!     }
!   else
!     operands[2] = lowpart_subreg (<mmxinsnmode>mode, operands[2], <MODE>mode);
!   operands[1] = lowpart_subreg (<mmxinsnmode>mode, operands[1], <MODE>mode);
!   operands[0] = lowpart_subreg (<mmxinsnmode>mode, operands[0], <MODE>mode);
  })
  
  (define_split
***************
*** 3454,3460 ****
    [(set (match_operand:HI 0 "register_sse4nonimm_operand" "=r,r,m")
  	(vec_select:HI
  	  (match_operand:V4HI 1 "register_operand" "y,YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n,n")])))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE)
     && (TARGET_SSE || TARGET_3DNOW_A)"
    "@
--- 3681,3687 ----
    [(set (match_operand:HI 0 "register_sse4nonimm_operand" "=r,r,m")
  	(vec_select:HI
  	  (match_operand:V4HI 1 "register_operand" "y,YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_3_operand")])))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE)
     && (TARGET_SSE || TARGET_3DNOW_A)"
    "@
***************
*** 3473,3479 ****
  	(zero_extend:SWI48
  	  (vec_select:HI
  	    (match_operand:V4HI 1 "register_operand" "y,YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n")]))))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE)
     && (TARGET_SSE || TARGET_3DNOW_A)"
    "@
--- 3700,3706 ----
  	(zero_extend:SWI48
  	  (vec_select:HI
  	    (match_operand:V4HI 1 "register_operand" "y,YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_3_operand")]))))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE)
     && (TARGET_SSE || TARGET_3DNOW_A)"
    "@
***************
*** 3490,3496 ****
    [(set (match_operand:QI 0 "nonimmediate_operand" "=r,m")
  	(vec_select:QI
  	  (match_operand:V8QI 1 "register_operand" "YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_7_operand" "n,n")])))]
    "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
    "@
     %vpextrb\t{%2, %1, %k0|%k0, %1, %2}
--- 3717,3723 ----
    [(set (match_operand:QI 0 "nonimmediate_operand" "=r,m")
  	(vec_select:QI
  	  (match_operand:V8QI 1 "register_operand" "YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_7_operand")])))]
    "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
    "@
     %vpextrb\t{%2, %1, %k0|%k0, %1, %2}
***************
*** 3507,3513 ****
  	(zero_extend:SWI248
  	  (vec_select:QI
  	    (match_operand:V8QI 1 "register_operand" "YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_7_operand" "n")]))))]
    "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
    "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "sselog1")
--- 3734,3740 ----
  	(zero_extend:SWI248
  	  (vec_select:QI
  	    (match_operand:V8QI 1 "register_operand" "YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_7_operand")]))))]
    "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
    "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "sselog1")
***************
*** 3630,3636 ****
  	(vec_merge:V4HI
  	  (match_operand:V4HI 2 "register_operand" "Yr,*x,x")
  	  (match_operand:V4HI 1 "register_operand" "0,0,x")
! 	  (match_operand:SI 3 "const_0_to_15_operand" "n,n,n")))]
    "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
    "@
     pblendw\t{%3, %2, %0|%0, %2, %3}
--- 3857,3863 ----
  	(vec_merge:V4HI
  	  (match_operand:V4HI 2 "register_operand" "Yr,*x,x")
  	  (match_operand:V4HI 1 "register_operand" "0,0,x")
! 	  (match_operand:SI 3 "const_0_to_15_operand")))]
    "TARGET_SSE4_1 && TARGET_MMX_WITH_SSE"
    "@
     pblendw\t{%3, %2, %0|%0, %2, %3}
***************
*** 3648,3654 ****
  	(vec_merge:V2HI
  	  (match_operand:V2HI 2 "register_operand" "Yr,*x,x")
  	  (match_operand:V2HI 1 "register_operand" "0,0,x")
! 	  (match_operand:SI 3 "const_0_to_7_operand" "n,n,n")))]
    "TARGET_SSE4_1"
    "@
     pblendw\t{%3, %2, %0|%0, %2, %3}
--- 3875,3881 ----
  	(vec_merge:V2HI
  	  (match_operand:V2HI 2 "register_operand" "Yr,*x,x")
  	  (match_operand:V2HI 1 "register_operand" "0,0,x")
! 	  (match_operand:SI 3 "const_0_to_7_operand")))]
    "TARGET_SSE4_1"
    "@
     pblendw\t{%3, %2, %0|%0, %2, %3}
***************
*** 4035,4041 ****
    [(set (match_operand:HI 0 "register_sse4nonimm_operand" "=r,m")
  	(vec_select:HI
  	  (match_operand:V2HI 1 "register_operand" "YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_1_operand" "n,n")])))]
    "TARGET_SSE2"
    "@
     %vpextrw\t{%2, %1, %k0|%k0, %1, %2}
--- 4262,4268 ----
    [(set (match_operand:HI 0 "register_sse4nonimm_operand" "=r,m")
  	(vec_select:HI
  	  (match_operand:V2HI 1 "register_operand" "YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_1_operand")])))]
    "TARGET_SSE2"
    "@
     %vpextrw\t{%2, %1, %k0|%k0, %1, %2}
***************
*** 4051,4057 ****
  	(zero_extend:SWI48
  	  (vec_select:HI
  	    (match_operand:V2HI 1 "register_operand" "YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_1_operand" "n")]))))]
    "TARGET_SSE2"
    "%vpextrw\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "sselog1")
--- 4278,4284 ----
  	(zero_extend:SWI48
  	  (vec_select:HI
  	    (match_operand:V2HI 1 "register_operand" "YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_1_operand")]))))]
    "TARGET_SSE2"
    "%vpextrw\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "sselog1")
***************
*** 4063,4069 ****
    [(set (match_operand:QI 0 "nonimmediate_operand" "=r,m")
  	(vec_select:QI
  	  (match_operand:V4QI 1 "register_operand" "YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n")])))]
    "TARGET_SSE4_1"
    "@
     %vpextrb\t{%2, %1, %k0|%k0, %1, %2}
--- 4290,4296 ----
    [(set (match_operand:QI 0 "nonimmediate_operand" "=r,m")
  	(vec_select:QI
  	  (match_operand:V4QI 1 "register_operand" "YW,YW")
! 	  (parallel [(match_operand:SI 2 "const_0_to_3_operand")])))]
    "TARGET_SSE4_1"
    "@
     %vpextrb\t{%2, %1, %k0|%k0, %1, %2}
***************
*** 4080,4086 ****
  	(zero_extend:SWI248
  	  (vec_select:QI
  	    (match_operand:V4QI 1 "register_operand" "YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n")]))))]
    "TARGET_SSE4_1"
    "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "sselog1")
--- 4307,4313 ----
  	(zero_extend:SWI248
  	  (vec_select:QI
  	    (match_operand:V4QI 1 "register_operand" "YW")
! 	    (parallel [(match_operand:SI 2 "const_0_to_3_operand")]))))]
    "TARGET_SSE4_1"
    "%vpextrb\t{%2, %1, %k0|%k0, %1, %2}"
    [(set_attr "type" "sselog1")
***************
*** 4405,4417 ****
     (set_attr "type" "sseiadd")
     (set_attr "mode" "TI")])
  
! (define_insn "mmx_psadbw"
    [(set (match_operand:V1DI 0 "register_operand" "=y,x,Yw")
!         (unspec:V1DI [(match_operand:V8QI 1 "register_operand" "0,0,Yw")
  		      (match_operand:V8QI 2 "register_mmxmem_operand" "ym,x,Yw")]
  		     UNSPEC_PSADBW))]
!   "(TARGET_MMX || TARGET_MMX_WITH_SSE)
!    && (TARGET_SSE || TARGET_3DNOW_A)"
    "@
     psadbw\t{%2, %0|%0, %2}
     psadbw\t{%2, %0|%0, %2}
--- 4632,4652 ----
     (set_attr "type" "sseiadd")
     (set_attr "mode" "TI")])
  
! (define_expand "mmx_psadbw"
!   [(set (match_operand:V1DI 0 "register_operand")
! 	(unspec:V1DI [(match_operand:V8QI 1 "register_mmxmem_operand")
! 		      (match_operand:V8QI 2 "register_mmxmem_operand")]
! 		     UNSPEC_PSADBW))]
!   "(TARGET_MMX || TARGET_MMX_WITH_SSE) && (TARGET_SSE || TARGET_3DNOW_A)"
!   "ix86_fixup_binary_operands_no_copy (PLUS, V8QImode, operands);")
! 
! (define_insn "*mmx_psadbw"
    [(set (match_operand:V1DI 0 "register_operand" "=y,x,Yw")
! 	(unspec:V1DI [(match_operand:V8QI 1 "register_mmxmem_operand" "%0,0,Yw")
  		      (match_operand:V8QI 2 "register_mmxmem_operand" "ym,x,Yw")]
  		     UNSPEC_PSADBW))]
!   "(TARGET_MMX || TARGET_MMX_WITH_SSE) && (TARGET_SSE || TARGET_3DNOW_A)
!    && ix86_binary_operator_ok (PLUS, V8QImode, operands)"
    "@
     psadbw\t{%2, %0|%0, %2}
     psadbw\t{%2, %0|%0, %2}
diff -Nrcpad gcc-12.2.0/gcc/config/i386/movdirintrin.h gcc-13.1.0/gcc/config/i386/movdirintrin.h
*** gcc-12.2.0/gcc/config/i386/movdirintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/movdirintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/msformat-c.cc gcc-13.1.0/gcc/config/i386/msformat-c.cc
*** gcc-12.2.0/gcc/config/i386/msformat-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/msformat-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Check calls to formatted I/O functions (-Wformat).
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mwaitintrin.h gcc-13.1.0/gcc/config/i386/mwaitintrin.h
*** gcc-12.2.0/gcc/config/i386/mwaitintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mwaitintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/mwaitxintrin.h gcc-13.1.0/gcc/config/i386/mwaitxintrin.h
*** gcc-12.2.0/gcc/config/i386/mwaitxintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/mwaitxintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/netbsd-elf.h gcc-13.1.0/gcc/config/i386/netbsd-elf.h
*** gcc-12.2.0/gcc/config/i386/netbsd-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/netbsd-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GCC,
     for i386/ELF NetBSD systems.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by matthew green <mrg@eterna.com.au>
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GCC,
     for i386/ELF NetBSD systems.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by matthew green <mrg@eterna.com.au>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 66,73 ****
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n)  svr4_dbx_register_map[n]
  
  
  /* Output assembler code to FILE to call the profiler.  */
--- 66,73 ----
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n)  svr4_debugger_register_map[n]
  
  
  /* Output assembler code to FILE to call the profiler.  */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/netbsd64.h gcc-13.1.0/gcc/config/i386/netbsd64.h
*** gcc-12.2.0/gcc/config/i386/netbsd64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/netbsd64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GCC,
     for x86-64/ELF NetBSD systems.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GCC,
     for x86-64/ELF NetBSD systems.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/nmmintrin.h gcc-13.1.0/gcc/config/i386/nmmintrin.h
*** gcc-12.2.0/gcc/config/i386/nmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/nmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/nto.h gcc-13.1.0/gcc/config/i386/nto.h
*** gcc-12.2.0/gcc/config/i386/nto.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/nto.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel 386 running QNX/Neutrino.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for Intel 386 running QNX/Neutrino.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** crti.o%s \
*** 100,103 ****
  
  #define TARGET_POSIX_IO
  
! #undef DBX_REGISTER_NUMBER
--- 100,103 ----
  
  #define TARGET_POSIX_IO
  
! #undef DEBUGGER_REGNO
diff -Nrcpad gcc-12.2.0/gcc/config/i386/nto.opt gcc-13.1.0/gcc/config/i386/nto.opt
*** gcc-12.2.0/gcc/config/i386/nto.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/nto.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; QNX options.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; QNX options.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/openbsdelf.h gcc-13.1.0/gcc/config/i386/openbsdelf.h
*** gcc-12.2.0/gcc/config/i386/openbsdelf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/openbsdelf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Configuration for an OpenBSD i386 target.
     
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Configuration for an OpenBSD i386 target.
     
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 25,33 ****
      }						\
    while (0)
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  /* This must agree with <machine/_types.h>.  */
  #undef SIZE_TYPE
--- 25,33 ----
      }						\
    while (0)
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  /* This must agree with <machine/_types.h>.  */
  #undef SIZE_TYPE
diff -Nrcpad gcc-12.2.0/gcc/config/i386/pconfigintrin.h gcc-13.1.0/gcc/config/i386/pconfigintrin.h
*** gcc-12.2.0/gcc/config/i386/pconfigintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/pconfigintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/pentium.md gcc-13.1.0/gcc/config/i386/pentium.md
*** gcc-12.2.0/gcc/config/i386/pentium.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/pentium.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pentium Scheduling
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Pentium Scheduling
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/pkuintrin.h gcc-13.1.0/gcc/config/i386/pkuintrin.h
*** gcc-12.2.0/gcc/config/i386/pkuintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/pkuintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/pmm_malloc.h gcc-13.1.0/gcc/config/i386/pmm_malloc.h
*** gcc-12.2.0/gcc/config/i386/pmm_malloc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/pmm_malloc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/pmmintrin.h gcc-13.1.0/gcc/config/i386/pmmintrin.h
*** gcc-12.2.0/gcc/config/i386/pmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/pmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/popcntintrin.h gcc-13.1.0/gcc/config/i386/popcntintrin.h
*** gcc-12.2.0/gcc/config/i386/popcntintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/popcntintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/ppro.md gcc-13.1.0/gcc/config/i386/ppro.md
*** gcc-12.2.0/gcc/config/i386/ppro.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/ppro.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling for the Intel P6 family of processors
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling for the Intel P6 family of processors
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/predicates.md gcc-13.1.0/gcc/config/i386/predicates.md
*** gcc-12.2.0/gcc/config/i386/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for IA-32 and x86-64.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for IA-32 and x86-64.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 92,97 ****
--- 92,105 ----
    (and (match_code "reg")
         (match_test "MASK_REGNO_P (REGNO (op))")))
  
+ ;; Match a DI, SI or HImode register operand.
+ (define_special_predicate "int248_register_operand"
+   (and (match_operand 0 "register_operand")
+        (ior (and (match_test "TARGET_64BIT")
+ 		 (match_test "GET_MODE (op) == DImode"))
+ 	    (match_test "GET_MODE (op) == SImode")
+ 	    (match_test "GET_MODE (op) == HImode"))))
+ 
  ;; Match a DI, SI, HI or QImode nonimmediate_operand.
  (define_special_predicate "int_nonimmediate_operand"
    (and (match_operand 0 "nonimmediate_operand")
***************
*** 101,106 ****
--- 109,128 ----
  	    (match_test "GET_MODE (op) == HImode")
  	    (match_test "GET_MODE (op) == QImode"))))
  
+ ;; Match nonimmediate operand, but exclude non-constant addresses for x86_64.
+ (define_predicate "nonimm_x64constmem_operand"
+   (ior (match_operand 0 "register_operand")
+        (and (match_operand 0 "memory_operand")
+ 	    (ior (not (match_test "TARGET_64BIT"))
+ 		 (match_test "constant_address_p (XEXP (op, 0))")))))
+ 
+ ;; Match general operand, but exclude non-constant addresses for x86_64.
+ (define_predicate "general_x64constmem_operand"
+   (ior (match_operand 0 "nonmemory_operand")
+        (and (match_operand 0 "memory_operand")
+ 	    (ior (not (match_test "TARGET_64BIT"))
+ 		 (match_test "constant_address_p (XEXP (op, 0))")))))
+ 
  ;; Match register operands, but include memory operands for TARGET_SSE_MATH.
  (define_predicate "register_ssemem_operand"
    (if_then_else
***************
*** 610,615 ****
--- 632,652 ----
    return false;
  })
  
+ (define_predicate "local_func_symbolic_operand"
+   (match_operand 0 "local_symbolic_operand")
+ {
+   if (GET_CODE (op) == CONST
+       && GET_CODE (XEXP (op, 0)) == PLUS
+       && CONST_INT_P (XEXP (XEXP (op, 0), 1)))
+     op = XEXP (XEXP (op, 0), 0);
+ 
+   if (GET_CODE (op) == SYMBOL_REF
+       && !SYMBOL_REF_FUNCTION_P (op))
+     return false;
+ 
+   return true;
+ })
+ 
  ;; Test for a legitimate @GOTOFF operand.
  ;;
  ;; VxWorks does not impose a fixed gap between segments; the run-time
***************
*** 672,677 ****
--- 709,720 ----
  {
    if (SUBREG_P (op))
      op = SUBREG_REG (op);
+ 
+   /* Before reload, we can allow (SUBREG (MEM...)) as a register operand
+      because it is guaranteed to be reloaded into one.  */
+   if (MEM_P (op))
+     return true;
+ 
    return !(op == arg_pointer_rtx
  	   || op == frame_pointer_rtx
  	   || IN_RANGE (REGNO (op),
***************
*** 685,690 ****
--- 728,734 ----
  {
    if (SUBREG_P (op))
      op = SUBREG_REG (op);
+ 
    if (reload_completed)
      return REG_OK_FOR_INDEX_STRICT_P (op);
    else
***************
*** 906,911 ****
--- 950,960 ----
    (and (match_code "const_int")
         (match_test "IN_RANGE (INTVAL (op), 0, 63)")))
  
+ ;; Match 0 to 127.
+ (define_predicate "const_0_to_127_operand"
+   (and (match_code "const_int")
+        (match_test "IN_RANGE (INTVAL (op), 0, 127)")))
+ 
  ;; Match 0 to 255.
  (define_predicate "const_0_to_255_operand"
    (and (match_code "const_int")
***************
*** 919,924 ****
--- 968,981 ----
    return val <= 255*8 && val % 8 == 0;
  })
  
+ ;; Match 1 to 255 except multiples of 8
+ (define_predicate "const_0_to_255_not_mul_8_operand"
+   (match_code "const_int")
+ {
+   unsigned HOST_WIDE_INT val = INTVAL (op);
+   return val <= 255 && val % 8 != 0;
+ })
+ 
  ;; Return true if OP is CONST_INT >= 1 and <= 31 (a valid operand
  ;; for shift & compare patterns, as shifting by 0 does not change flags).
  (define_predicate "const_1_to_31_operand"
***************
*** 1139,1144 ****
--- 1196,1250 ----
         (match_test "INTEGRAL_MODE_P (GET_MODE (op))")
         (match_test "op == CONSTM1_RTX (GET_MODE (op))")))
  
+ /* Return true if operand is an 128/256bit all ones vector
+    that zero-extends to 256/512bit.  */
+ (define_predicate "vector_all_ones_zero_extend_half_operand"
+   (match_code "const_vector")
+ {
+   mode = GET_MODE (op);
+   if (GET_MODE_CLASS (mode) != MODE_VECTOR_INT
+       || (GET_MODE_SIZE (mode) != 32
+ 	  && GET_MODE_SIZE (mode) != 64))
+     return false;
+ 
+   int nelts = CONST_VECTOR_NUNITS (op);
+   for (int i = 0; i != nelts; i++)
+     {
+       rtx elt = CONST_VECTOR_ELT (op, i);
+       if (i < nelts / 2
+ 	  && elt != CONSTM1_RTX (GET_MODE_INNER (mode)))
+ 	return false;
+       if (i >= nelts / 2
+ 	  && elt != CONST0_RTX (GET_MODE_INNER (mode)))
+ 	return false;
+     }
+   return true;
+ })
+ 
+ /* Return true if operand is an 128bit all ones vector
+    that zero extends to 512bit.  */
+ (define_predicate "vector_all_ones_zero_extend_quarter_operand"
+   (match_code "const_vector")
+ {
+   mode = GET_MODE (op);
+   if (GET_MODE_CLASS (mode) != MODE_VECTOR_INT
+       || GET_MODE_SIZE (mode) != 64)
+     return false;
+ 
+   int nelts = CONST_VECTOR_NUNITS (op);
+   for (int i = 0; i != nelts; i++)
+     {
+       rtx elt = CONST_VECTOR_ELT (op, i);
+       if (i < nelts / 4
+ 	  && elt != CONSTM1_RTX (GET_MODE_INNER (mode)))
+ 	return false;
+       if (i >= nelts / 4
+ 	  && elt != CONST0_RTX (GET_MODE_INNER (mode)))
+ 	return false;
+     }
+   return true;
+ })
+ 
  ; Return true when OP is operand acceptable for vector memory operand.
  ; Only AVX can have misaligned memory operand.
  (define_predicate "vector_memory_operand"
***************
*** 1151,1156 ****
--- 1257,1269 ----
    (ior (match_operand 0 "register_operand")
         (match_operand 0 "vector_memory_operand")))
  
+ ; Return true when OP is register_operand, vector_memory_operand
+ ; or const_vector.
+ (define_predicate "vector_or_const_vector_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "vector_memory_operand")
+        (match_code "const_vector")))
+ 
  (define_predicate "bcst_mem_operand"
    (and (match_code "vec_duplicate")
         (and (match_test "TARGET_AVX512F")
***************
*** 1182,1187 ****
--- 1295,1319 ----
    (ior (match_operand 0 "register_operand")
         (match_code "const_vector")))
  
+ ;; Return true when OP is CONST_VECTOR which can be converted to a
+ ;; sign extended 32-bit integer.
+ (define_predicate "x86_64_const_vector_operand"
+   (match_code "const_vector")
+ {
+   if (mode == VOIDmode)
+     mode = GET_MODE (op);
+   else if (GET_MODE (op) != mode)
+     return false;
+   if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
+     return false;
+   HOST_WIDE_INT val = ix86_convert_const_vector_to_integer (op, mode);
+   return trunc_int_for_mode (val, SImode) == val;
+ })
+ 
+ (define_predicate "nonimmediate_or_x86_64_const_vector_operand"
+   (ior (match_operand 0 "nonimmediate_operand")
+        (match_operand 0 "x86_64_const_vector_operand")))
+ 
  ;; Return true when OP is nonimmediate or standard SSE constant.
  (define_predicate "nonimmediate_or_sse_const_operand"
    (ior (match_operand 0 "nonimmediate_operand")
***************
*** 2019,2029 ****
    for(i = 4; i < 7; i++)
      {
        elt = XVECEXP (op, 0, i);
!       if (GET_CODE (elt) != SET
! 	  || GET_CODE (SET_DEST (elt)) != REG
! 	  || GET_MODE (SET_DEST (elt)) != V2DImode
! 	  || REGNO (SET_DEST (elt)) != GET_SSE_REGNO (i)
! 	  || SET_SRC (elt) != CONST0_RTX (V2DImode))
  	return false;
      }
  
--- 2151,2161 ----
    for(i = 4; i < 7; i++)
      {
        elt = XVECEXP (op, 0, i);
!       if (GET_CODE (elt) != CLOBBER
! 	  || GET_MODE (elt) != VOIDmode
! 	  || GET_CODE (XEXP (elt, 0)) != REG
! 	  || GET_MODE (XEXP (elt, 0)) != V2DImode
! 	  || REGNO (XEXP (elt, 0)) != GET_SSE_REGNO (i))
  	return false;
      }
  
***************
*** 2069,2079 ****
    for(i = 4; i < 7; i++)
      {
        elt = XVECEXP (op, 0, i + 1);
!       if (GET_CODE (elt) != SET
! 	  || GET_CODE (SET_DEST (elt)) != REG
! 	  || GET_MODE (SET_DEST (elt)) != V2DImode
! 	  || REGNO (SET_DEST (elt)) != GET_SSE_REGNO (i)
! 	  || SET_SRC (elt) != CONST0_RTX (V2DImode))
  	return false;
      }
  
--- 2201,2211 ----
    for(i = 4; i < 7; i++)
      {
        elt = XVECEXP (op, 0, i + 1);
!       if (GET_CODE (elt) != CLOBBER
! 	  || GET_MODE (elt) != VOIDmode
! 	  || GET_CODE (XEXP (elt, 0)) != REG
! 	  || GET_MODE (XEXP (elt, 0)) != V2DImode
! 	  || REGNO (XEXP (elt, 0)) != GET_SSE_REGNO (i))
  	return false;
      }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/prfchiintrin.h gcc-13.1.0/gcc/config/i386/prfchiintrin.h
*** gcc-12.2.0/gcc/config/i386/prfchiintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/prfchiintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,61 ----
+ /* Copyright (C) 2022-2023 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/>.  */
+ 
+ #if !defined _X86GPRINTRIN_H_INCLUDED
+ # error "Never use <prfchiintrin.h> directly; include <x86gprintrin.h> instead."
+ #endif
+ 
+ #ifndef _PRFCHIINTRIN_H_INCLUDED
+ #define _PRFCHIINTRIN_H_INCLUDED
+ 
+ #ifdef __x86_64__
+ 
+ 
+ #ifndef __PREFETCHI__
+ #pragma GCC push_options
+ #pragma GCC target("prefetchi")
+ #define __DISABLE_PREFETCHI__
+ #endif /* __PREFETCHI__ */
+ 
+ extern __inline void
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _m_prefetchit0 (void* __P)
+ {
+   __builtin_ia32_prefetchi (__P, 3);
+ }
+ 
+ extern __inline void
+ __attribute__((__gnu_inline__, __always_inline__, __artificial__))
+ _m_prefetchit1 (void* __P)
+ {
+   __builtin_ia32_prefetchi (__P, 2);
+ }
+ 
+ #ifdef __DISABLE_PREFETCHI__
+ #undef __DISABLE_PREFETCHI__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_PREFETCHI__ */
+ 
+ #endif /* __x86_64__ */
+ 
+ #endif /* _PRFCHIINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/prfchwintrin.h gcc-13.1.0/gcc/config/i386/prfchwintrin.h
*** gcc-12.2.0/gcc/config/i386/prfchwintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/prfchwintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/raointintrin.h gcc-13.1.0/gcc/config/i386/raointintrin.h
*** gcc-12.2.0/gcc/config/i386/raointintrin.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/raointintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,100 ----
+ /* Copyright (C) 2019-2023 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 _X86GPRINTRIN_H_INCLUDED
+ #error "Never use <raointintrin.h> directly; include <x86gprintrin.h> instead."
+ #endif // _X86GPRINTRIN_H_INCLUDED
+ 
+ #ifndef __RAOINTINTRIN_H_INCLUDED
+ #define __RAOINTINTRIN_H_INCLUDED
+ 
+ #ifndef __RAOINT__
+ #pragma GCC push_options
+ #pragma GCC target("raoint")
+ #define __DISABLE_RAOINT__
+ #endif /* __RAOINT__ */
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _aadd_i32 (int *__A, int __B)
+ {
+   __builtin_ia32_aadd32 ((int *)__A, __B);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _aand_i32 (int *__A, int __B)
+ {
+   __builtin_ia32_aand32 ((int *)__A, __B);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _aor_i32 (int *__A, int __B)
+ {
+   __builtin_ia32_aor32 ((int *)__A, __B);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _axor_i32 (int *__A, int __B)
+ {
+   __builtin_ia32_axor32 ((int *)__A, __B);
+ }
+ 
+ #ifdef __x86_64__
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _aadd_i64 (long long *__A, long long __B)
+ {
+   __builtin_ia32_aadd64 ((long long *)__A, __B);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _aand_i64 (long long *__A, long long __B)
+ {
+   __builtin_ia32_aand64 ((long long *)__A, __B);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _aor_i64 (long long *__A, long long __B)
+ {
+   __builtin_ia32_aor64 ((long long *)__A, __B);
+ }
+ 
+ extern __inline void
+ __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
+ _axor_i64 (long long *__A, long long __B)
+ {
+   __builtin_ia32_axor64 ((long long *)__A, __B);
+ }
+ #endif /* __x86_64__ */
+ 
+ #ifdef __DISABLE_RAOINT__
+ #undef __DISABLE_RAOINT__
+ #pragma GCC pop_options
+ #endif /* __DISABLE_RAOINT__ */
+ 
+ #endif /* __RAOINTINTRIN_H_INCLUDED */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/rdos.h gcc-13.1.0/gcc/config/i386/rdos.h
*** gcc-12.2.0/gcc/config/i386/rdos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/rdos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RDOS on i386.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RDOS on i386.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/rdos64.h gcc-13.1.0/gcc/config/i386/rdos64.h
*** gcc-12.2.0/gcc/config/i386/rdos64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/rdos64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RDOS on x86_64.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RDOS on x86_64.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/rdseedintrin.h gcc-13.1.0/gcc/config/i386/rdseedintrin.h
*** gcc-12.2.0/gcc/config/i386/rdseedintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/rdseedintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/rtemself.h gcc-13.1.0/gcc/config/i386/rtemself.h
*** gcc-12.2.0/gcc/config/i386/rtemself.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/rtemself.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting an ix86 using ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting an ix86 using ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/rtmintrin.h gcc-13.1.0/gcc/config/i386/rtmintrin.h
*** gcc-12.2.0/gcc/config/i386/rtmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/rtmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/serializeintrin.h gcc-13.1.0/gcc/config/i386/serializeintrin.h
*** gcc-12.2.0/gcc/config/i386/serializeintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/serializeintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/sgxintrin.h gcc-13.1.0/gcc/config/i386/sgxintrin.h
*** gcc-12.2.0/gcc/config/i386/sgxintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/sgxintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/shaintrin.h gcc-13.1.0/gcc/config/i386/shaintrin.h
*** gcc-12.2.0/gcc/config/i386/shaintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/shaintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/slm.md gcc-13.1.0/gcc/config/i386/slm.md
*** gcc-12.2.0/gcc/config/i386/slm.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/slm.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Slivermont(SLM) Scheduling
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Slivermont(SLM) Scheduling
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/i386/smmintrin.h gcc-13.1.0/gcc/config/i386/smmintrin.h
*** gcc-12.2.0/gcc/config/i386/smmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/smmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_insert_ps (__m128 __D, __m128 __S, c
*** 365,381 ****
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_extract_ps (__m128 __X, const int __N)
  {
!   union { int i; float f; } __tmp;
!   __tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)__X, __N);
!   return __tmp.i;
  }
  #else
  #define _mm_extract_ps(X, N)						\
    (__extension__							\
     ({									\
!      union { int i; float f; } __tmp;					\
!      __tmp.f = __builtin_ia32_vec_ext_v4sf ((__v4sf)(__m128)(X), (int)(N)); \
!      __tmp.i;								\
     }))
  #endif
  
--- 365,382 ----
  extern __inline int __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_extract_ps (__m128 __X, const int __N)
  {
!   union { int __i; float __f; } __tmp;
!   __tmp.__f = __builtin_ia32_vec_ext_v4sf ((__v4sf)__X, __N);
!   return __tmp.__i;
  }
  #else
  #define _mm_extract_ps(X, N)						\
    (__extension__							\
     ({									\
!      union { int __i; float __f; } __tmp;				\
!      __tmp.__f = __builtin_ia32_vec_ext_v4sf ((__v4sf)(__m128)(X),	\
! 					      (int)(N));		\
!      __tmp.__i;								\
     }))
  #endif
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/sol2.h gcc-13.1.0/gcc/config/i386/sol2.h
*** gcc-12.2.0/gcc/config/i386/sol2.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/sol2.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for GCC for Intel 80386 running Solaris 2
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Fred Fish (fnf@cygnus.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* Target definitions for GCC for Intel 80386 running Solaris 2
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Fred Fish (fnf@cygnus.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/sse.md gcc-13.1.0/gcc/config/i386/sse.md
*** gcc-12.2.0/gcc/config/i386/sse.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/sse.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for SSE instructions
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for SSE instructions
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 166,175 ****
    UNSPEC_VPSHLDV
  
    ;; For AVX512VNNI support
!   UNSPEC_VPMADDUBSWACCD
!   UNSPEC_VPMADDUBSWACCSSD
!   UNSPEC_VPMADDWDACCD
!   UNSPEC_VPMADDWDACCSSD
  
    ;; For VAES support
    UNSPEC_VAESDEC
--- 166,175 ----
    UNSPEC_VPSHLDV
  
    ;; For AVX512VNNI support
!   UNSPEC_VPDPBUSD
!   UNSPEC_VPDPBUSDS
!   UNSPEC_VPDPWSSD
!   UNSPEC_VPDPWSSDS
  
    ;; For VAES support
    UNSPEC_VAESDEC
***************
*** 187,194 ****
    UNSPEC_VP2INTERSECT
  
    ;; For AVX512BF16 support
-   UNSPEC_VCVTNE2PS2BF16
-   UNSPEC_VCVTNEPS2BF16
    UNSPEC_VDPBF16PS
  
    ;; For AVX512FP16 suppport
--- 187,192 ----
***************
*** 200,205 ****
--- 198,210 ----
    UNSPEC_COMPLEX_FCMUL
    UNSPEC_COMPLEX_MASK
  
+   ;; For AVX-VNNI-INT8 support
+   UNSPEC_VPDPBSSD
+   UNSPEC_VPDPBSSDS
+   UNSPEC_VPDPBSUD
+   UNSPEC_VPDPBSUDS
+   UNSPEC_VPDPBUUD
+   UNSPEC_VPDPBUUDS
  ])
  
  (define_c_enum "unspecv" [
***************
*** 232,237 ****
--- 237,243 ----
     (V8DI "TARGET_AVX512F")  (V4DI "TARGET_AVX") V2DI
     (V4TI "TARGET_AVX512F") (V2TI "TARGET_AVX") V1TI
     (V32HF "TARGET_AVX512F") (V16HF "TARGET_AVX") V8HF
+    (V32BF "TARGET_AVX512F") (V16BF "TARGET_AVX") V8BF
     (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
     (V8DF "TARGET_AVX512F")  (V4DF "TARGET_AVX") V2DF])
  
***************
*** 263,272 ****
    [V64QI (V16QI "TARGET_AVX512VL") (V32QI "TARGET_AVX512VL")
     V32HI (V16HI "TARGET_AVX512VL") (V8HI "TARGET_AVX512VL")])
  
! (define_mode_iterator VI12HF_AVX512VL
    [V64QI (V16QI "TARGET_AVX512VL") (V32QI "TARGET_AVX512VL")
     V32HI (V16HI "TARGET_AVX512VL") (V8HI "TARGET_AVX512VL")
!    V32HF (V16HF "TARGET_AVX512VL") (V8HF "TARGET_AVX512VL")])
  
  ;; Same iterator, but without supposed TARGET_AVX512BW
  (define_mode_iterator VI12_AVX512VLBW
--- 269,279 ----
    [V64QI (V16QI "TARGET_AVX512VL") (V32QI "TARGET_AVX512VL")
     V32HI (V16HI "TARGET_AVX512VL") (V8HI "TARGET_AVX512VL")])
  
! (define_mode_iterator VI12HFBF_AVX512VL
    [V64QI (V16QI "TARGET_AVX512VL") (V32QI "TARGET_AVX512VL")
     V32HI (V16HI "TARGET_AVX512VL") (V8HI "TARGET_AVX512VL")
!    V32HF (V16HF "TARGET_AVX512VL") (V8HF "TARGET_AVX512VL")
!    V32BF (V16BF "TARGET_AVX512VL") (V8BF "TARGET_AVX512VL")])
  
  ;; Same iterator, but without supposed TARGET_AVX512BW
  (define_mode_iterator VI12_AVX512VLBW
***************
*** 295,323 ****
  (define_mode_iterator V_256
    [V32QI V16HI V8SI V4DI V8SF V4DF])
  
! ;; All 256bit vector modes including HF vector mode
  (define_mode_iterator V_256H
!   [V32QI V16HI V8SI V4DI V8SF V4DF V16HF])
  
  ;; All 128bit and 256bit vector modes
  (define_mode_iterator V_128_256
!   [V32QI V16QI V16HI V8HI V8SI V4SI V4DI V2DI V16HF V8HF V8SF V4SF V4DF V2DF])
  
  ;; All 512bit vector modes
  (define_mode_iterator V_512 [V64QI V32HI V16SI V8DI V16SF V8DF])
  
  ;; All 256bit and 512bit vector modes
  (define_mode_iterator V_256_512
!   [V32QI V16HI V16HF V8SI V4DI V8SF V4DF
     (V64QI "TARGET_AVX512F") (V32HI "TARGET_AVX512F") (V32HF "TARGET_AVX512F")
!    (V16SI "TARGET_AVX512F") (V8DI "TARGET_AVX512F") (V16SF "TARGET_AVX512F")
!    (V8DF "TARGET_AVX512F")])
  
  ;; All vector float modes
  (define_mode_iterator VF
    [(V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
     (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")])
  
  (define_mode_iterator VFH
    [(V32HF "TARGET_AVX512FP16")
     (V16HF "TARGET_AVX512FP16 && TARGET_AVX512VL")
--- 302,336 ----
  (define_mode_iterator V_256
    [V32QI V16HI V8SI V4DI V8SF V4DF])
  
! ;; All 256bit vector modes including HF/BF vector modes
  (define_mode_iterator V_256H
!   [V32QI V16HI V8SI V4DI V8SF V4DF V16HF V16BF])
  
  ;; All 128bit and 256bit vector modes
  (define_mode_iterator V_128_256
!   [V32QI V16QI V16HI V8HI V8SI V4SI V4DI V2DI V2TI V1TI
!    V16HF V8HF V8SF V4SF V4DF V2DF])
  
  ;; All 512bit vector modes
  (define_mode_iterator V_512 [V64QI V32HI V16SI V8DI V16SF V8DF])
  
  ;; All 256bit and 512bit vector modes
  (define_mode_iterator V_256_512
!   [V32QI V16HI V16HF V16BF V8SI V4DI V8SF V4DF
     (V64QI "TARGET_AVX512F") (V32HI "TARGET_AVX512F") (V32HF "TARGET_AVX512F")
!    (V32BF "TARGET_AVX512F") (V16SI "TARGET_AVX512F") (V8DI "TARGET_AVX512F")
!    (V16SF "TARGET_AVX512F") (V8DF "TARGET_AVX512F")])
  
  ;; All vector float modes
  (define_mode_iterator VF
    [(V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
     (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")])
  
+ (define_mode_iterator VF1_VF2_AVX512DQ
+   [(V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
+    (V8DF "TARGET_AVX512DQ") (V4DF "TARGET_AVX512DQ && TARGET_AVX512VL")
+    (V2DF "TARGET_AVX512DQ && TARGET_AVX512VL")])
+ 
  (define_mode_iterator VFH
    [(V32HF "TARGET_AVX512FP16")
     (V16HF "TARGET_AVX512FP16 && TARGET_AVX512VL")
***************
*** 434,439 ****
--- 447,459 ----
  (define_mode_iterator VF_AVX512FP16
    [V32HF V16HF V8HF])
  
+ (define_mode_iterator VF_AVX512HFBF16
+   [(V32HF "TARGET_AVX512FP16") (V16HF "TARGET_AVX512FP16")
+    (V8HF "TARGET_AVX512FP16") V32BF V16BF V8BF])
+ 
+ (define_mode_iterator VF_AVX512BWHFBF16
+   [V32HF V16HF V8HF V32BF V16BF V8BF])
+ 
  (define_mode_iterator VF_AVX512FP16VL
    [V32HF (V16HF "TARGET_AVX512VL") (V8HF "TARGET_AVX512VL")])
  
***************
*** 446,458 ****
     (V4DI "TARGET_AVX") V2DI])
  
  ;; All vector integer and HF modes
! (define_mode_iterator VIHF
    [(V16SI "TARGET_AVX512F") (V8DI "TARGET_AVX512F")
     (V64QI "TARGET_AVX512BW") (V32QI "TARGET_AVX") V16QI
     (V32HI "TARGET_AVX512BW") (V16HI "TARGET_AVX") V8HI
     (V8SI "TARGET_AVX") V4SI
     (V4DI "TARGET_AVX") V2DI
!    (V32HF "TARGET_AVX512BW") (V16HF "TARGET_AVX") V8HF])
  
  (define_mode_iterator VI_AVX2
    [(V64QI "TARGET_AVX512BW") (V32QI "TARGET_AVX2") V16QI
--- 466,479 ----
     (V4DI "TARGET_AVX") V2DI])
  
  ;; All vector integer and HF modes
! (define_mode_iterator VIHFBF
    [(V16SI "TARGET_AVX512F") (V8DI "TARGET_AVX512F")
     (V64QI "TARGET_AVX512BW") (V32QI "TARGET_AVX") V16QI
     (V32HI "TARGET_AVX512BW") (V16HI "TARGET_AVX") V8HI
     (V8SI "TARGET_AVX") V4SI
     (V4DI "TARGET_AVX") V2DI
!    (V32HF "TARGET_AVX512BW") (V16HF "TARGET_AVX") V8HF
!    (V32BF "TARGET_AVX512BW") (V16BF "TARGET_AVX") V8BF])
  
  (define_mode_iterator VI_AVX2
    [(V64QI "TARGET_AVX512BW") (V32QI "TARGET_AVX2") V16QI
***************
*** 466,474 ****
  
  ;; All DImode vector integer modes
  (define_mode_iterator V_AVX
!   [V16QI V8HI V4SI V2DI V4SF V2DF
     (V32QI "TARGET_AVX") (V16HI "TARGET_AVX")
!    (V8SI "TARGET_AVX") (V4DI "TARGET_AVX")
     (V8SF "TARGET_AVX") (V4DF"TARGET_AVX")])
  
  (define_mode_iterator VI48_AVX
--- 487,495 ----
  
  ;; All DImode vector integer modes
  (define_mode_iterator V_AVX
!   [V16QI V8HI V4SI V2DI V1TI V4SF V2DF
     (V32QI "TARGET_AVX") (V16HI "TARGET_AVX")
!    (V8SI "TARGET_AVX") (V4DI "TARGET_AVX") (V2TI "TARGET_AVX")
     (V8SF "TARGET_AVX") (V4DF"TARGET_AVX")])
  
  (define_mode_iterator VI48_AVX
***************
*** 574,583 ****
  (define_mode_iterator VIMAX_AVX2
    [(V2TI "TARGET_AVX2") V1TI])
  
- ;; ??? This should probably be dropped in favor of VIMAX_AVX2_AVX512BW.
- (define_mode_iterator SSESCALARMODE
-   [(V4TI "TARGET_AVX512BW") (V2TI "TARGET_AVX2") TI])
- 
  (define_mode_iterator VI12_AVX2
    [(V32QI "TARGET_AVX2") V16QI
     (V16HI "TARGET_AVX2") V8HI])
--- 595,600 ----
***************
*** 679,684 ****
--- 696,702 ----
     (V4SI  "avx512vl") (V8SI  "avx512vl") (V16SI "avx512f")
     (V2DI  "avx512vl") (V4DI  "avx512vl") (V8DI "avx512f")
     (V8HF "avx512fp16") (V16HF "avx512vl") (V32HF "avx512bw")
+    (V8BF "avx512vl") (V16BF "avx512vl") (V32BF "avx512bw")
     (V4SF "avx512vl") (V8SF "avx512vl") (V16SF "avx512f")
     (V2DF "avx512vl") (V4DF "avx512vl") (V8DF "avx512f")])
  
***************
*** 711,717 ****
      (V4HI "ssse3") (V8HI "ssse3") (V16HI "avx2") (V32HI "avx512bw")
      (V4SI "ssse3") (V8SI "avx2")
      (V2DI "ssse3") (V4DI "avx2")
!     (TI "ssse3") (V2TI "avx2") (V4TI "avx512bw")])
  
  (define_mode_attr sse4_1_avx2
     [(V16QI "sse4_1") (V32QI "avx2") (V64QI "avx512bw")
--- 729,735 ----
      (V4HI "ssse3") (V8HI "ssse3") (V16HI "avx2") (V32HI "avx512bw")
      (V4SI "ssse3") (V8SI "avx2")
      (V2DI "ssse3") (V4DI "avx2")
!     (V1TI "ssse3") (V2TI "avx2") (V4TI "avx512bw")])
  
  (define_mode_attr sse4_1_avx2
     [(V16QI "sse4_1") (V32QI "avx2") (V64QI "avx512bw")
***************
*** 739,745 ****
     (V8HI "avx512vl") (V16HI "avx512vl") (V32HI "avx512bw")])
  
  (define_mode_attr shuffletype
!   [(V32HF "f") (V16HF "f") (V8HF "f")
     (V16SF "f") (V16SI "i") (V8DF "f") (V8DI "i")
     (V8SF "f") (V8SI "i") (V4DF "f") (V4DI "i")
     (V4SF "f") (V4SI "i") (V2DF "f") (V2DI "i")
--- 757,764 ----
     (V8HI "avx512vl") (V16HI "avx512vl") (V32HI "avx512bw")])
  
  (define_mode_attr shuffletype
!   [(V32HF "i") (V16HF "i") (V8HF "i")
!    (V32BF "i") (V16BF "i") (V8BF "i")
     (V16SF "f") (V16SI "i") (V8DF "f") (V8DI "i")
     (V8SF "f") (V8SI "i") (V4DF "f") (V4DI "i")
     (V4SF "f") (V4SI "i") (V2DF "f") (V2DI "i")
***************
*** 789,795 ****
  ;; All 128 and 256bit vector integer modes
  (define_mode_iterator VI_128_256 [V16QI V8HI V4SI V2DI V32QI V16HI V8SI V4DI])
  ;; All 256bit vector integer and HF modes
! (define_mode_iterator VIHF_256 [V32QI V16HI V8SI V4DI V16HF])
  
  ;; Various 128bit vector integer mode combinations
  (define_mode_iterator VI12_128 [V16QI V8HI])
--- 808,814 ----
  ;; All 128 and 256bit vector integer modes
  (define_mode_iterator VI_128_256 [V16QI V8HI V4SI V2DI V32QI V16HI V8SI V4DI])
  ;; All 256bit vector integer and HF modes
! (define_mode_iterator VIHFBF_256 [V32QI V16HI V8SI V4DI V16HF V16BF])
  
  ;; Various 128bit vector integer mode combinations
  (define_mode_iterator VI12_128 [V16QI V8HI])
***************
*** 816,827 ****
  (define_mode_iterator VI4_256_8_512 [V8SI V8DI])
  (define_mode_iterator VI_AVX512BW
    [V16SI V8DI (V32HI "TARGET_AVX512BW") (V64QI "TARGET_AVX512BW")])
! (define_mode_iterator VIHF_AVX512BW
    [V16SI V8DI (V32HI "TARGET_AVX512BW") (V64QI "TARGET_AVX512BW")
!   (V32HF "TARGET_AVX512BW")])
  
  ;; Int-float size matches
! (define_mode_iterator VI2F_256_512 [V16HI V32HI V16HF V32HF])
  (define_mode_iterator VI4F_128 [V4SI V4SF])
  (define_mode_iterator VI8F_128 [V2DI V2DF])
  (define_mode_iterator VI4F_256 [V8SI V8SF])
--- 835,846 ----
  (define_mode_iterator VI4_256_8_512 [V8SI V8DI])
  (define_mode_iterator VI_AVX512BW
    [V16SI V8DI (V32HI "TARGET_AVX512BW") (V64QI "TARGET_AVX512BW")])
! (define_mode_iterator VIHFBF_AVX512BW
    [V16SI V8DI (V32HI "TARGET_AVX512BW") (V64QI "TARGET_AVX512BW")
!   (V32HF "TARGET_AVX512BW") (V32BF "TARGET_AVX512BW")])
  
  ;; Int-float size matches
! (define_mode_iterator VI2F_256_512 [V16HI V32HI V16HF V32HF V16BF V32BF])
  (define_mode_iterator VI4F_128 [V4SI V4SF])
  (define_mode_iterator VI8F_128 [V2DI V2DF])
  (define_mode_iterator VI4F_256 [V8SI V8SF])
***************
*** 866,874 ****
     (V8SF "TARGET_AVX512VL") (V4DF "TARGET_AVX512VL")
     V16SF V8DF])
  
! (define_mode_iterator V8_128 [V8HI V8HF])
! (define_mode_iterator V16_256 [V16HI V16HF])
! (define_mode_iterator V32_512 [V32HI V32HF])
  
  ;; Mapping from float mode to required SSE level
  (define_mode_attr sse
--- 885,893 ----
     (V8SF "TARGET_AVX512VL") (V4DF "TARGET_AVX512VL")
     V16SF V8DF])
  
! (define_mode_iterator V8_128 [V8HI V8HF V8BF])
! (define_mode_iterator V16_256 [V16HI V16HF V16BF])
! (define_mode_iterator V32_512 [V32HI V32HF V32BF])
  
  ;; Mapping from float mode to required SSE level
  (define_mode_attr sse
***************
*** 890,904 ****
    [(V4SF "sse4_1") (V2DF "sse4_1")
     (V8SF "avx") (V4DF "avx")
     (V8DF "avx512f")
     (V4DI "avx") (V2DI "sse4_1")
     (V8SI "avx") (V4SI "sse4_1")
     (V16QI "sse4_1") (V32QI "avx")
     (V8HI "sse4_1") (V16HI "avx")])
  
  (define_mode_attr avxsizesuffix
!   [(V64QI "512") (V32HI "512") (V16SI "512") (V8DI "512")
!    (V32QI "256") (V16HI "256") (V8SI "256") (V4DI "256")
!    (V16QI "") (V8HI "") (V4SI "") (V2DI "")
     (V32HF "512") (V16SF "512") (V8DF "512")
     (V16HF "256") (V8SF "256") (V4DF "256")
     (V8HF "") (V4SF "") (V2DF "")])
--- 909,924 ----
    [(V4SF "sse4_1") (V2DF "sse4_1")
     (V8SF "avx") (V4DF "avx")
     (V8DF "avx512f")
+    (V2TI "avx") (V1TI "sse4_1")
     (V4DI "avx") (V2DI "sse4_1")
     (V8SI "avx") (V4SI "sse4_1")
     (V16QI "sse4_1") (V32QI "avx")
     (V8HI "sse4_1") (V16HI "avx")])
  
  (define_mode_attr avxsizesuffix
!   [(V64QI "512") (V32HI "512") (V16SI "512") (V8DI "512") (V4TI "512")
!    (V32QI "256") (V16HI "256") (V8SI "256") (V4DI "256") (V2TI "256")
!    (V16QI "") (V8HI "") (V4SI "") (V2DI "") (V1TI "")
     (V32HF "512") (V16SF "512") (V8DF "512")
     (V16HF "256") (V8SF "256") (V4DF "256")
     (V8HF "") (V4SF "") (V2DF "")])
***************
*** 912,917 ****
--- 932,938 ----
     (V8SF "V8SF") (V4DF "V4DF")
     (V4SF "V4SF") (V2DF "V2DF")
     (V8HF "TI") (V16HF "OI") (V32HF "XI")
+    (V8BF "TI") (V16BF "OI") (V32BF "XI")
     (TI "TI")])
  
  (define_mode_attr sseintvecinsnmode
***************
*** 928,943 ****
    [(V64QI "BC") (V32HI "BC") (V16SI "BC") (V8DI "BC") (V4TI "BC")
     (V32QI "BC") (V16HI "BC") (V8SI "BC") (V4DI "BC") (V2TI "BC")
     (V16QI "BC") (V8HI "BC") (V4SI "BC") (V2DI "BC") (V1TI "BC")
!    (V32HF "BF") (V16SF "BF") (V8DF "BF")
!    (V16HF "BF") (V8SF "BF") (V4DF "BF")
!    (V8HF "BF") (V4SF "BF") (V2DF "BF")])
  
  ;; SSE integer instruction suffix for various modes
  (define_mode_attr sseintmodesuffix
    [(V16QI "b") (V8HI "w") (V4SI "d") (V2DI "q")
     (V32QI "b") (V16HI "w") (V8SI "d") (V4DI "q")
     (V64QI "b") (V32HI "w") (V16SI "d") (V8DI "q")
!    (V8HF "w") (V16HF "w") (V32HF "w")])
  
  ;; Mapping of vector modes to corresponding mask size
  (define_mode_attr avx512fmaskmode
--- 949,965 ----
    [(V64QI "BC") (V32HI "BC") (V16SI "BC") (V8DI "BC") (V4TI "BC")
     (V32QI "BC") (V16HI "BC") (V8SI "BC") (V4DI "BC") (V2TI "BC")
     (V16QI "BC") (V8HI "BC") (V4SI "BC") (V2DI "BC") (V1TI "BC")
!    (V32HF "BF") (V32BF "BF") (V16SF "BF") (V8DF "BF")
!    (V16HF "BF") (V16BF "BF") (V8SF "BF") (V4DF "BF")
!    (V8HF "BF") (V8BF "BF") (V4SF "BF") (V2DF "BF")])
  
  ;; SSE integer instruction suffix for various modes
  (define_mode_attr sseintmodesuffix
    [(V16QI "b") (V8HI "w") (V4SI "d") (V2DI "q")
     (V32QI "b") (V16HI "w") (V8SI "d") (V4DI "q")
     (V64QI "b") (V32HI "w") (V16SI "d") (V8DI "q")
!    (V8HF "w") (V16HF "w") (V32HF "w")
!    (V8BF "w") (V16BF "w") (V32BF "w")])
  
  ;; Mapping of vector modes to corresponding mask size
  (define_mode_attr avx512fmaskmode
***************
*** 946,951 ****
--- 968,974 ----
     (V16SI "HI") (V8SI  "QI") (V4SI  "QI")
     (V8DI  "QI") (V4DI  "QI") (V2DI  "QI")
     (V32HF "SI") (V16HF "HI") (V8HF  "QI")
+    (V32BF "SI") (V16BF "HI") (V8BF  "QI")
     (V16SF "HI") (V8SF  "QI") (V4SF  "QI")
     (V8DF  "QI") (V4DF  "QI") (V2DF  "QI")])
  
***************
*** 960,965 ****
--- 983,989 ----
     (V16SI "hi") (V8SI  "qi") (V4SI  "qi")
     (V8DI  "qi") (V4DI  "qi") (V2DI  "qi")
     (V32HF "si") (V16HF "hi") (V8HF  "qi")
+    (V32BF "si") (V16BF "hi") (V8BF  "qi")
     (V16SF "hi") (V8SF  "qi") (V4SF  "qi")
     (V8DF  "qi") (V4DF  "qi") (V2DF  "qi")])
  
***************
*** 970,983 ****
     (V16SI "QI") (V8SI  "QI") (V4SI  "QI")
     (V8DI  "QI") (V4DI  "QI") (V2DI  "QI")
     (V32HF "HI") (V16HF "QI") (V8HF  "QI")
     (V16SF "QI") (V8SF  "QI") (V4SF  "QI")
     (V8DF  "QI") (V4DF  "QI") (V2DF  "QI")])
  
  ;; Mapping of vector float modes to an integer mode of the same size
  (define_mode_attr sseintvecmode
!   [(V32HF "V32HI") (V16SF "V16SI") (V8DF  "V8DI")
!    (V16HF "V16HI") (V8SF  "V8SI")  (V4DF  "V4DI")
!    (V8HF "V8HI") (V4SF  "V4SI")  (V2DF  "V2DI")
     (V16SI "V16SI") (V8DI  "V8DI")
     (V8SI  "V8SI")  (V4DI  "V4DI")
     (V4SI  "V4SI")  (V2DI  "V2DI")
--- 994,1008 ----
     (V16SI "QI") (V8SI  "QI") (V4SI  "QI")
     (V8DI  "QI") (V4DI  "QI") (V2DI  "QI")
     (V32HF "HI") (V16HF "QI") (V8HF  "QI")
+    (V32BF "HI") (V16BF "QI") (V8BF  "QI")
     (V16SF "QI") (V8SF  "QI") (V4SF  "QI")
     (V8DF  "QI") (V4DF  "QI") (V2DF  "QI")])
  
  ;; Mapping of vector float modes to an integer mode of the same size
  (define_mode_attr sseintvecmode
!   [(V32HF "V32HI") (V32BF "V32HI") (V16SF "V16SI") (V8DF  "V8DI")
!    (V16HF "V16HI") (V16BF "V16HI") (V8SF  "V8SI")  (V4DF  "V4DI")
!    (V8HF "V8HI") (V8BF "V8HI") (V4SF "V4SI")  (V2DF  "V2DI")
     (V16SI "V16SI") (V8DI  "V8DI")
     (V8SI  "V8SI")  (V4DI  "V4DI")
     (V4SI  "V4SI")  (V2DI  "V2DI")
***************
*** 985,1004 ****
     (V32HI "V32HI") (V64QI "V64QI")
     (V32QI "V32QI") (V16QI "V16QI")])
  
  (define_mode_attr sseintvecmode2
    [(V8DF "XI") (V4DF "OI") (V2DF "TI")
     (V8SF "OI") (V4SF "TI")
     (V16HF "OI") (V8HF "TI")])
  
  (define_mode_attr sseintvecmodelower
!   [(V32HF "v32hi") (V16SF "v16si") (V8DF "v8di")
!    (V16HF "v16hi") (V8SF "v8si") (V4DF "v4di")
!    (V8HF "v8hi") (V4SF "v4si") (V2DF "v2di")
     (V8SI "v8si") (V4DI "v4di")
     (V4SI "v4si") (V2DI "v2di")
     (V16HI "v16hi") (V8HI "v8hi")
     (V32QI "v32qi") (V16QI "v16qi")])
  
  ;; Mapping of vector modes to a vector mode of double size
  (define_mode_attr ssedoublevecmode
    [(V64QI "V128QI") (V32HI "V64HI") (V16SI "V32SI") (V8DI "V16DI")
--- 1010,1045 ----
     (V32HI "V32HI") (V64QI "V64QI")
     (V32QI "V32QI") (V16QI "V16QI")])
  
+ ;; Mapping of vector modes to an V*HImode of the same size
+ (define_mode_attr ssewvecmode
+   [(V8DI "V32HI") (V4DI "V16HI") (V2DI "V8HI")
+    (V16SI "V32HI") (V8SI "V16HI") (V4SI "V8HI")])
+ 
+ (define_mode_attr ssewvecmodelower
+   [(V8DI "v32hi") (V4DI "v16hi") (V2DI "v8hi")
+    (V16SI "v32hi") (V8SI "v16hi") (V4SI "v8hi")])
+ 
  (define_mode_attr sseintvecmode2
    [(V8DF "XI") (V4DF "OI") (V2DF "TI")
     (V8SF "OI") (V4SF "TI")
     (V16HF "OI") (V8HF "TI")])
  
  (define_mode_attr sseintvecmodelower
!   [(V32HF "v32hi") (V32BF "v32hi") (V16SF "v16si") (V8DF "v8di")
!    (V16HF "v16hi") (V16BF "v16hi") (V8SF "v8si") (V4DF "v4di")
!    (V8HF "v8hi") (V8BF "v8hi") (V4SF "v4si") (V2DF "v2di")
     (V8SI "v8si") (V4DI "v4di")
     (V4SI "v4si") (V2DI "v2di")
     (V16HI "v16hi") (V8HI "v8hi")
     (V32QI "v32qi") (V16QI "v16qi")])
  
+ ;; Mapping of vector modes to an V*SImode of the same size
+ (define_mode_attr ssedvecmode
+  [(V64QI "V16SI") (V32QI "V8SI") (V16QI "V4SI")])
+ 
+ (define_mode_attr ssedvecmodelower
+  [(V64QI "v16si") (V32QI "v8si") (V16QI "v4si")])
+ 
  ;; Mapping of vector modes to a vector mode of double size
  (define_mode_attr ssedoublevecmode
    [(V64QI "V128QI") (V32HI "V64HI") (V16SI "V32SI") (V8DI "V16DI")
***************
*** 1007,1013 ****
     (V16SF "V32SF") (V8DF "V16DF")
     (V8SF "V16SF") (V4DF "V8DF")
     (V4SF "V8SF") (V2DF "V4DF")
!    (V32HF "V64HF") (V16HF "V32HF") (V8HF "V16HF")])
  
  ;; Mapping of vector modes to a vector mode of half size
  ;; instead of V1DI/V1DF, DI/DF are used for V2DI/V2DF although they are scalar.
--- 1048,1055 ----
     (V16SF "V32SF") (V8DF "V16DF")
     (V8SF "V16SF") (V4DF "V8DF")
     (V4SF "V8SF") (V2DF "V4DF")
!    (V32HF "V64HF") (V16HF "V32HF") (V8HF "V16HF")
!    (V32BF "V64BF") (V16BF "V32BF") (V8BF "V16BF")])
  
  ;; Mapping of vector modes to a vector mode of half size
  ;; instead of V1DI/V1DF, DI/DF are used for V2DI/V2DF although they are scalar.
***************
*** 1018,1024 ****
     (V16SF "V8SF") (V8DF "V4DF")
     (V8SF  "V4SF") (V4DF "V2DF")
     (V4SF  "V2SF") (V2DF "DF")
!    (V32HF "V16HF") (V16HF "V8HF") (V8HF "V4HF")])
  
  (define_mode_attr ssehalfvecmodelower
    [(V64QI "v32qi") (V32HI "v16hi") (V16SI "v8si") (V8DI "v4di") (V4TI "v2ti")
--- 1060,1067 ----
     (V16SF "V8SF") (V8DF "V4DF")
     (V8SF  "V4SF") (V4DF "V2DF")
     (V4SF  "V2SF") (V2DF "DF")
!    (V32HF "V16HF") (V16HF "V8HF") (V8HF "V4HF")
!    (V32BF "V16BF") (V16BF "V8BF") (V8BF "V4BF")])
  
  (define_mode_attr ssehalfvecmodelower
    [(V64QI "v32qi") (V32HI "v16hi") (V16SI "v8si") (V8DI "v4di") (V4TI "v2ti")
***************
*** 1027,1033 ****
     (V16SF "v8sf") (V8DF "v4df")
     (V8SF  "v4sf") (V4DF "v2df")
     (V4SF  "v2sf")
!    (V32HF "v16hf") (V16HF "v8hf") (V8HF "v4hf")])
  
  ;; Mapping of vector modes to vector hf modes of conversion.
  (define_mode_attr ssePHmode
--- 1070,1077 ----
     (V16SF "v8sf") (V8DF "v4df")
     (V8SF  "v4sf") (V4DF "v2df")
     (V4SF  "v2sf")
!    (V32HF "v16hf") (V16HF "v8hf") (V8HF "v4hf")
!    (V32BF "v16bf") (V16BF "v8bf") (V8BF "v4bf")])
  
  ;; Mapping of vector modes to vector hf modes of conversion.
  (define_mode_attr ssePHmode
***************
*** 1078,1083 ****
--- 1122,1128 ----
     (V16SI "SI") (V8SI "SI")  (V4SI "SI")
     (V8DI "DI")  (V4DI "DI")  (V2DI "DI")
     (V32HF "HF") (V16HF "HF") (V8HF "HF")
+    (V32BF "BF") (V16BF "BF") (V8BF "BF")
     (V16SF "SF") (V8SF "SF")  (V4SF "SF")
     (V8DF "DF")  (V4DF "DF")  (V2DF "DF")
     (V4TI "TI")  (V2TI "TI")])
***************
*** 1089,1094 ****
--- 1134,1140 ----
     (V16SI "si") (V8SI "si")  (V4SI "si")
     (V8DI "di")  (V4DI "di")  (V2DI "di")
     (V32HF "hf") (V16HF "hf")  (V8HF "hf")
+    (V32BF "bf") (V16BF "bf")  (V8BF "bf")
     (V16SF "sf") (V8SF "sf")  (V4SF "sf")
     (V8DF "df")  (V4DF "df")  (V2DF "df")
     (V4TI "ti")  (V2TI "ti")])
***************
*** 1100,1105 ****
--- 1146,1152 ----
     (V16SI "V4SI")  (V8SI "V4SI")  (V4SI "V4SI")
     (V8DI "V2DI")   (V4DI "V2DI")  (V2DI "V2DI")
     (V32HF "V8HF")  (V16HF "V8HF") (V8HF "V8HF")
+    (V32BF "V8BF")  (V16BF "V8BF") (V8BF "V8BF")
     (V16SF "V4SF")  (V8SF "V4SF")  (V4SF "V4SF")
     (V8DF "V2DF")   (V4DF "V2DF")  (V2DF "V2DF")])
  
***************
*** 1108,1117 ****
    [(V64QI "b") (V32HI "w") (V16SI "k") (V8DI "q")
     (V32QI "b") (V16HI "w") (V8SI "k") (V4DI "q")
     (V16QI "b") (V8HI "w") (V4SI "k") (V2DI "q")
!    (V32HF "w") (V16SF "k") (V8DF "q")
!    (V16HF "w") (V8SF "k") (V4DF "q")
!    (V8HF "w") (V4SF "k") (V2DF "q")
!    (HF "w") (SF "k") (DF "q")])
  
  ;; Mapping of vector modes to VPTERNLOG suffix
  (define_mode_attr ternlogsuffix
--- 1155,1164 ----
    [(V64QI "b") (V32HI "w") (V16SI "k") (V8DI "q")
     (V32QI "b") (V16HI "w") (V8SI "k") (V4DI "q")
     (V16QI "b") (V8HI "w") (V4SI "k") (V2DI "q")
!    (V32HF "w") (V32BF "w") (V16SF "k") (V8DF "q")
!    (V16HF "w") (V16BF "w") (V8SF "k") (V4DF "q")
!    (V8HF "w") (V8BF "w") (V4SF "k") (V2DF "q")
!    (HF "w") (BF "w") (SF "k") (DF "q")])
  
  ;; Mapping of vector modes to VPTERNLOG suffix
  (define_mode_attr ternlogsuffix
***************
*** 1121,1126 ****
--- 1168,1174 ----
     (V16SF "d") (V8SF "d") (V4SF "d")
     (V32HI "d") (V16HI "d") (V8HI "d")
     (V32HF "d") (V16HF "d") (V8HF "d")
+    (V32BF "d") (V16BF "d") (V8BF "d")
     (V64QI "d") (V32QI "d") (V16QI "d")])
  
  ;; Number of scalar elements in each vector type
***************
*** 1146,1151 ****
--- 1194,1200 ----
     (V32HI "16") (V16HI "16") (V8HI "16")
     (V16SI "32") (V8SI "32") (V4SI "32")
     (V32HF "16") (V16HF "16") (V8HF "16")
+    (V32BF "16") (V16BF "16") (V8BF "16")
     (V16SF "32") (V8SF "32") (V4SF "32")
     (V8DF "64") (V4DF "64") (V2DF "64")])
  
***************
*** 1157,1165 ****
     (V4SI  "p") (V4SF  "")
     (V8SI  "p") (V8SF  "")
     (V16SI "p") (V16SF "")
!    (V16QI "p") (V8HI "p") (V8HF "p")
!    (V32QI "p") (V16HI "p") (V16HF "p")
!    (V64QI "p") (V32HI "p") (V32HF "p")])
  
  ;; SSE prefix for integer and HF vector comparison.
  (define_mode_attr ssecmpintprefix
--- 1206,1214 ----
     (V4SI  "p") (V4SF  "")
     (V8SI  "p") (V8SF  "")
     (V16SI "p") (V16SF "")
!    (V16QI "p") (V8HI "p") (V8HF "p") (V8BF "p")
!    (V32QI "p") (V16HI "p") (V16HF "p") (V16BF "p")
!    (V64QI "p") (V32HI "p") (V32HF "p") (V32BF "p")])
  
  ;; SSE prefix for integer and HF vector comparison.
  (define_mode_attr ssecmpintprefix
***************
*** 1194,1199 ****
--- 1243,1253 ----
     (V16HI "V32QI") (V8SI "V16HI") (V4DI "V8SI")
     (V32HI "V64QI") (V16SI "V32HI") (V8DI "V16SI")])
  
+ (define_mode_attr ssepackmodelower
+   [(V8HI "v16qi") (V4SI "v8hi") (V2DI "v4si")
+    (V16HI "v32qi") (V8SI "v16hi") (V4DI "v8si")
+    (V32HI "v64qi") (V16SI "v32hi") (V8DI "v16si")])
+ 
  ;; Mapping of the max integer size for xop rotate immediate constraint
  (define_mode_attr sserotatemax
    [(V16QI "7") (V8HI "15") (V4SI "31") (V2DI "63")])
***************
*** 1207,1213 ****
  ;; i128 for integer vectors and TARGET_AVX2, f128 otherwise.
  ;; i64x4 or f64x4 for 512bit modes.
  (define_mode_attr i128
!   [(V16HF "%~128") (V32HF "i64x4") (V16SF "f64x4") (V8SF "f128")
     (V8DF "f64x4") (V4DF "f128")
     (V64QI "i64x4") (V32QI "%~128") (V32HI "i64x4") (V16HI "%~128")
     (V16SI "i64x4") (V8SI "%~128") (V8DI "i64x4") (V4DI "%~128")])
--- 1261,1268 ----
  ;; i128 for integer vectors and TARGET_AVX2, f128 otherwise.
  ;; i64x4 or f64x4 for 512bit modes.
  (define_mode_attr i128
!   [(V16HF "%~128") (V32HF "i64x4") (V16BF "%~128") (V32BF "i64x4")
!    (V16SF "f64x4") (V8SF "f128")
     (V8DF "f64x4") (V4DF "f128")
     (V64QI "i64x4") (V32QI "%~128") (V32HI "i64x4") (V16HI "%~128")
     (V16SI "i64x4") (V8SI "%~128") (V8DI "i64x4") (V4DI "%~128")])
***************
*** 1215,1221 ****
  ;; For 256-bit modes for TARGET_AVX512VL && TARGET_AVX512DQ
  ;; i32x4, f32x4, i64x2 or f64x2 suffixes.
  (define_mode_attr i128vldq
!   [(V8SF "f32x4") (V4DF "f64x2")
     (V32QI "i32x4") (V16HI "i32x4") (V8SI "i32x4") (V4DI "i64x2")])
  
  ;; Mix-n-match
--- 1270,1276 ----
  ;; For 256-bit modes for TARGET_AVX512VL && TARGET_AVX512DQ
  ;; i32x4, f32x4, i64x2 or f64x2 suffixes.
  (define_mode_attr i128vldq
!   [(V16HF "i32x4") (V16BF "i32x4") (V8SF "f32x4") (V4DF "f64x2")
     (V32QI "i32x4") (V16HI "i32x4") (V8SI "i32x4") (V4DI "i64x2")])
  
  ;; Mix-n-match
***************
*** 1233,1249 ****
     (V16SI "d")  (V8SI "d")  (V4SI "d")
     (V8DI "q")   (V4DI "q")  (V2DI "q")
     (V32HF "w")  (V16HF "w") (V8HF "w")
     (V16SF "ss") (V8SF "ss") (V4SF "ss")
     (V8DF "sd")  (V4DF "sd") (V2DF "sd")])
  
  ;; Tie mode of assembler operand to mode iterator
  (define_mode_attr xtg_mode
    [(V16QI "x") (V8HI "x") (V4SI "x") (V2DI "x")
!    (V8HF "x") (V4SF "x") (V2DF "x")
     (V32QI "t") (V16HI "t") (V8SI "t") (V4DI "t")
!    (V16HF "t") (V8SF "t") (V4DF "t")
     (V64QI "g") (V32HI "g") (V16SI "g") (V8DI "g")
!    (V32HF "g") (V16SF "g") (V8DF "g")])
  
  ;; Half mask mode for unpacks
  (define_mode_attr HALFMASKMODE
--- 1288,1305 ----
     (V16SI "d")  (V8SI "d")  (V4SI "d")
     (V8DI "q")   (V4DI "q")  (V2DI "q")
     (V32HF "w")  (V16HF "w") (V8HF "w")
+    (V32BF "w")  (V16BF "w") (V8BF "w")
     (V16SF "ss") (V8SF "ss") (V4SF "ss")
     (V8DF "sd")  (V4DF "sd") (V2DF "sd")])
  
  ;; Tie mode of assembler operand to mode iterator
  (define_mode_attr xtg_mode
    [(V16QI "x") (V8HI "x") (V4SI "x") (V2DI "x")
!    (V8HF "x")  (V8BF "x") (V4SF "x") (V2DF "x")
     (V32QI "t") (V16HI "t") (V8SI "t") (V4DI "t")
!    (V16HF "t") (V16BF "t") (V8SF "t") (V4DF "t")
     (V64QI "g") (V32HI "g") (V16SI "g") (V8DI "g")
!    (V32HF "g") (V32BF "g") (V16SF "g") (V8DF "g")])
  
  ;; Half mask mode for unpacks
  (define_mode_attr HALFMASKMODE
***************
*** 1279,1287 ****
  
  (define_insn "mov<mode>_internal"
    [(set (match_operand:VMOVE 0 "nonimmediate_operand"
! 	 "=v,v ,v ,m")
  	(match_operand:VMOVE 1 "nonimmediate_or_sse_const_operand"
! 	 " C,<sseconstm1>,vm,v"))]
    "TARGET_SSE
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))
--- 1335,1343 ----
  
  (define_insn "mov<mode>_internal"
    [(set (match_operand:VMOVE 0 "nonimmediate_operand"
! 	 "=v,v ,v,v ,m")
  	(match_operand:VMOVE 1 "nonimmediate_or_sse_const_operand"
! 	 " C,<sseconstm1>,BH,vm,v"))]
    "TARGET_SSE
     && (register_operand (operands[0], <MODE>mode)
         || register_operand (operands[1], <MODE>mode))
***************
*** 1299,1305 ****
        gcc_unreachable ();
      }
  }
!   [(set_attr "type" "sselog1,sselog1,ssemov,ssemov")
     (set_attr "prefix" "maybe_vex")
     (set (attr "mode")
  	(cond [(match_test "TARGET_AVX")
--- 1355,1361 ----
        gcc_unreachable ();
      }
  }
!   [(set_attr "type" "sselog1,sselog1,sselog1,ssemov,ssemov")
     (set_attr "prefix" "maybe_vex")
     (set (attr "mode")
  	(cond [(match_test "TARGET_AVX")
***************
*** 1310,1316 ****
  	       (and (match_test "<MODE>mode == V2DFmode")
  		    (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL"))
  		 (const_string "V4SF")
! 	       (and (eq_attr "alternative" "3")
  		    (match_test "TARGET_SSE_TYPELESS_STORES"))
  		 (const_string "V4SF")
  	       (and (eq_attr "alternative" "0")
--- 1366,1372 ----
  	       (and (match_test "<MODE>mode == V2DFmode")
  		    (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL"))
  		 (const_string "V4SF")
! 	       (and (eq_attr "alternative" "4")
  		    (match_test "TARGET_SSE_TYPELESS_STORES"))
  		 (const_string "V4SF")
  	       (and (eq_attr "alternative" "0")
***************
*** 1470,1476 ****
  	      (match_operand:MODEFH 1 "memory_operand" "m"))
  	    (match_operand:<ssevecmode> 2 "nonimm_or_0_operand" "0C")
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:<ssevecmode> 4 "const0_operand" "C")
  	  (const_int 1)))]
    "TARGET_AVX512F"
    "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{3%}%N2, %1}"
--- 1526,1532 ----
  	      (match_operand:MODEFH 1 "memory_operand" "m"))
  	    (match_operand:<ssevecmode> 2 "nonimm_or_0_operand" "0C")
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:<ssevecmode> 4 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX512F"
    "vmov<ssescalarmodesuffix>\t{%1, %0%{%3%}%N2|%0%{3%}%N2, %1}"
***************
*** 1541,1550 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<avx512>_blendm<mode>"
!   [(set (match_operand:VF_AVX512FP16 0 "register_operand" "=v,v")
! 	(vec_merge:VF_AVX512FP16
! 	  (match_operand:VF_AVX512FP16 2 "nonimmediate_operand" "vm,vm")
! 	  (match_operand:VF_AVX512FP16 1 "nonimm_or_0_operand" "0C,v")
  	  (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
    "TARGET_AVX512BW"
    "@
--- 1597,1606 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<avx512>_blendm<mode>"
!   [(set (match_operand:VF_AVX512BWHFBF16 0 "register_operand" "=v,v")
! 	(vec_merge:VF_AVX512BWHFBF16
! 	  (match_operand:VF_AVX512BWHFBF16 2 "nonimmediate_operand" "vm,vm")
! 	  (match_operand:VF_AVX512BWHFBF16 1 "nonimm_or_0_operand" "0C,v")
  	  (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk,Yk")))]
    "TARGET_AVX512BW"
    "@
***************
*** 1583,1591 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<avx512>_store<mode>_mask"
!   [(set (match_operand:VI12HF_AVX512VL 0 "memory_operand" "=m")
! 	(vec_merge:VI12HF_AVX512VL
! 	  (match_operand:VI12HF_AVX512VL 1 "register_operand" "v")
  	  (match_dup 0)
  	  (match_operand:<avx512fmaskmode> 2 "register_operand" "Yk")))]
    "TARGET_AVX512BW"
--- 1639,1647 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<avx512>_store<mode>_mask"
!   [(set (match_operand:VI12HFBF_AVX512VL 0 "memory_operand" "=m")
! 	(vec_merge:VI12HFBF_AVX512VL
! 	  (match_operand:VI12HFBF_AVX512VL 1 "register_operand" "v")
  	  (match_dup 0)
  	  (match_operand:<avx512fmaskmode> 2 "register_operand" "Yk")))]
    "TARGET_AVX512BW"
***************
*** 1610,1616 ****
  	  (vec_select:<ssescalarmode>
  	    (match_operand:VI8F_128 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))
! 	  (match_operand:<ssescalarmode> 2 "const0_operand" "C")))]
    "TARGET_SSE2"
    "%vmovq\t{%1, %0|%0, %q1}"
    [(set_attr "type" "ssemov")
--- 1666,1672 ----
  	  (vec_select:<ssescalarmode>
  	    (match_operand:VI8F_128 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))
! 	  (match_operand:<ssescalarmode> 2 "const0_operand")))]
    "TARGET_SSE2"
    "%vmovq\t{%1, %0|%0, %q1}"
    [(set_attr "type" "ssemov")
***************
*** 2004,2010 ****
    [(set (match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "=k")
  	(any_lshift:SWI1248_AVX512BWDQ
  	  (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")
! 	  (match_operand 2 "const_0_to_255_operand" "n")))
     (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512F"
    "k<mshift><mskmodesuffix>\t{%2, %1, %0|%0, %1, %2}"
--- 2060,2066 ----
    [(set (match_operand:SWI1248_AVX512BWDQ 0 "register_operand" "=k")
  	(any_lshift:SWI1248_AVX512BWDQ
  	  (match_operand:SWI1248_AVX512BWDQ 1 "register_operand" "k")
! 	  (match_operand 2 "const_0_to_255_operand")))
     (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512F"
    "k<mshift><mskmodesuffix>\t{%2, %1, %0|%0, %1, %2}"
***************
*** 2056,2062 ****
  	  (ashift:HI
  	    (zero_extend:HI (match_operand:QI 1 "register_operand" "k"))
  	    (const_int 8))
! 	  (zero_extend:HI (match_operand:QI 2 "register_operand" "k"))))]
    "TARGET_AVX512F"
    "kunpckbw\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "mode" "HI")
--- 2112,2119 ----
  	  (ashift:HI
  	    (zero_extend:HI (match_operand:QI 1 "register_operand" "k"))
  	    (const_int 8))
! 	  (zero_extend:HI (match_operand:QI 2 "register_operand" "k"))))
!    (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512F"
    "kunpckbw\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "mode" "HI")
***************
*** 2069,2075 ****
  	  (ashift:SI
  	    (zero_extend:SI (match_operand:HI 1 "register_operand" "k"))
  	    (const_int 16))
! 	  (zero_extend:SI (match_operand:HI 2 "register_operand" "k"))))]
    "TARGET_AVX512BW"
    "kunpckwd\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "mode" "SI")])
--- 2126,2133 ----
  	  (ashift:SI
  	    (zero_extend:SI (match_operand:HI 1 "register_operand" "k"))
  	    (const_int 16))
! 	  (zero_extend:SI (match_operand:HI 2 "register_operand" "k"))))
!    (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512BW"
    "kunpckwd\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "mode" "SI")])
***************
*** 2080,2086 ****
  	  (ashift:DI
  	    (zero_extend:DI (match_operand:SI 1 "register_operand" "k"))
  	    (const_int 32))
! 	  (zero_extend:DI (match_operand:SI 2 "register_operand" "k"))))]
    "TARGET_AVX512BW"
    "kunpckdq\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "mode" "DI")])
--- 2138,2145 ----
  	  (ashift:DI
  	    (zero_extend:DI (match_operand:SI 1 "register_operand" "k"))
  	    (const_int 32))
! 	  (zero_extend:DI (match_operand:SI 2 "register_operand" "k"))))
!    (unspec [(const_int 0)] UNSPEC_MASKOP)]
    "TARGET_AVX512BW"
    "kunpckdq\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "mode" "DI")])
***************
*** 3426,3432 ****
  	(unspec:VF_128_256
  	  [(match_operand:VF_128_256 1 "register_operand" "x")
  	   (match_operand:VF_128_256 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_0_to_31_operand" "n")]
  	  UNSPEC_PCMP))]
    "TARGET_AVX"
    "vcmp<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
--- 3485,3491 ----
  	(unspec:VF_128_256
  	  [(match_operand:VF_128_256 1 "register_operand" "x")
  	   (match_operand:VF_128_256 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_0_to_31_operand")]
  	  UNSPEC_PCMP))]
    "TARGET_AVX"
    "vcmp<ssemodesuffix>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
***************
*** 3637,3643 ****
  	  (unspec:VF_128
  	    [(match_operand:VF_128 1 "register_operand" "x")
  	     (match_operand:VF_128 2 "nonimmediate_operand" "xm")
! 	     (match_operand:SI 3 "const_0_to_31_operand" "n")]
  	    UNSPEC_PCMP)
  	 (match_dup 1)
  	 (const_int 1)))]
--- 3696,3702 ----
  	  (unspec:VF_128
  	    [(match_operand:VF_128 1 "register_operand" "x")
  	     (match_operand:VF_128 2 "nonimmediate_operand" "xm")
! 	     (match_operand:SI 3 "const_0_to_31_operand")]
  	    UNSPEC_PCMP)
  	 (match_dup 1)
  	 (const_int 1)))]
***************
*** 3730,3736 ****
  	  (unspec:<V48H_AVX512VL:avx512fmaskmode>
  	    [(match_operand:V48H_AVX512VL 1 "nonimmediate_operand")
  	     (match_operand:V48H_AVX512VL 2 "nonimmediate_operand")
! 	     (match_operand:SI 3 "const_0_to_7_operand" "n")]
  	    UNSPEC_PCMP)))]
    "TARGET_AVX512F
     && (!VALID_MASK_AVX512BW_MODE (<SWI248x:MODE>mode) || TARGET_AVX512BW)
--- 3789,3795 ----
  	  (unspec:<V48H_AVX512VL:avx512fmaskmode>
  	    [(match_operand:V48H_AVX512VL 1 "nonimmediate_operand")
  	     (match_operand:V48H_AVX512VL 2 "nonimmediate_operand")
! 	     (match_operand:SI 3 "const_0_to_7_operand")]
  	    UNSPEC_PCMP)))]
    "TARGET_AVX512F
     && (!VALID_MASK_AVX512BW_MODE (<SWI248x:MODE>mode) || TARGET_AVX512BW)
***************
*** 3936,3942 ****
  	(unspec:<avx512fmaskmode>
  	  [(match_operand:VI12_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_7_operand" "n")]
  	  UNSPEC_UNSIGNED_PCMP))]
    "TARGET_AVX512BW"
    "vpcmpu<ssemodesuffix>\t{%3, %2, %1, %0<mask_scalar_merge_operand4>|%0<mask_scalar_merge_operand4>, %1, %2, %3}"
--- 3995,4001 ----
  	(unspec:<avx512fmaskmode>
  	  [(match_operand:VI12_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI12_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_7_operand")]
  	  UNSPEC_UNSIGNED_PCMP))]
    "TARGET_AVX512BW"
    "vpcmpu<ssemodesuffix>\t{%3, %2, %1, %0<mask_scalar_merge_operand4>|%0<mask_scalar_merge_operand4>, %1, %2, %3}"
***************
*** 4034,4040 ****
  	(unspec:<avx512fmaskmode>
  	  [(match_operand:VI48_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_7_operand" "n")]
  	  UNSPEC_UNSIGNED_PCMP))]
    "TARGET_AVX512F"
    "vpcmpu<ssemodesuffix>\t{%3, %2, %1, %0<mask_scalar_merge_operand4>|%0<mask_scalar_merge_operand4>, %1, %2, %3}"
--- 4093,4099 ----
  	(unspec:<avx512fmaskmode>
  	  [(match_operand:VI48_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI48_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_7_operand")]
  	  UNSPEC_UNSIGNED_PCMP))]
    "TARGET_AVX512F"
    "vpcmpu<ssemodesuffix>\t{%3, %2, %1, %0<mask_scalar_merge_operand4>|%0<mask_scalar_merge_operand4>, %1, %2, %3}"
***************
*** 4174,4180 ****
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH_128 1 "register_operand" "v")
  	     (match_operand:VFH_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")
! 	     (match_operand:SI 3 "const_0_to_31_operand" "n")]
  	    UNSPEC_PCMP)
  	  (const_int 1)))]
    "TARGET_AVX512F"
--- 4233,4239 ----
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH_128 1 "register_operand" "v")
  	     (match_operand:VFH_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")
! 	     (match_operand:SI 3 "const_0_to_31_operand")]
  	    UNSPEC_PCMP)
  	  (const_int 1)))]
    "TARGET_AVX512F"
***************
*** 4190,4196 ****
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH_128 1 "register_operand" "v")
  	     (match_operand:VFH_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")
! 	     (match_operand:SI 3 "const_0_to_31_operand" "n")]
  	    UNSPEC_PCMP)
  	  (and:<avx512fmaskmode>
  	    (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")
--- 4249,4255 ----
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH_128 1 "register_operand" "v")
  	     (match_operand:VFH_128 2 "<round_saeonly_nimm_scalar_predicate>" "<round_saeonly_constraint>")
! 	     (match_operand:SI 3 "const_0_to_31_operand")]
  	    UNSPEC_PCMP)
  	  (and:<avx512fmaskmode>
  	    (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")
***************
*** 4252,4258 ****
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI_256 2 "register_operand")
! 	   (match_operand:VI_256 3 "nonimmediate_operand")]))]
    "TARGET_AVX2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
--- 4311,4317 ----
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI_256 2 "register_operand")
! 	   (match_operand:VI_256 3 "nonimmediate_or_const_vector_operand")]))]
    "TARGET_AVX2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
***************
*** 4264,4270 ****
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI124_128 2 "register_operand")
! 	   (match_operand:VI124_128 3 "vector_operand")]))]
    "TARGET_SSE2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
--- 4323,4329 ----
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI124_128 2 "register_operand")
! 	   (match_operand:VI124_128 3 "vector_or_const_vector_operand")]))]
    "TARGET_SSE2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
***************
*** 4276,4282 ****
    [(set (match_operand:V2DI 0 "register_operand")
  	(match_operator:V2DI 1 ""
  	  [(match_operand:V2DI 2 "register_operand")
! 	   (match_operand:V2DI 3 "vector_operand")]))]
    "TARGET_SSE4_2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
--- 4335,4341 ----
    [(set (match_operand:V2DI 0 "register_operand")
  	(match_operator:V2DI 1 ""
  	  [(match_operand:V2DI 2 "register_operand")
! 	   (match_operand:V2DI 3 "vector_or_const_vector_operand")]))]
    "TARGET_SSE4_2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
***************
*** 4338,4344 ****
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI_256 2 "register_operand")
! 	   (match_operand:VI_256 3 "nonimmediate_operand")]))]
    "TARGET_AVX2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
--- 4397,4403 ----
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI_256 2 "register_operand")
! 	   (match_operand:VI_256 3 "nonimmediate_or_const_vector_operand")]))]
    "TARGET_AVX2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
***************
*** 4350,4356 ****
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI124_128 2 "register_operand")
! 	   (match_operand:VI124_128 3 "vector_operand")]))]
    "TARGET_SSE2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
--- 4409,4415 ----
    [(set (match_operand:<sseintvecmode> 0 "register_operand")
  	(match_operator:<sseintvecmode> 1 ""
  	  [(match_operand:VI124_128 2 "register_operand")
! 	   (match_operand:VI124_128 3 "vector_or_const_vector_operand")]))]
    "TARGET_SSE2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
***************
*** 4362,4368 ****
    [(set (match_operand:V2DI 0 "register_operand")
  	(match_operator:V2DI 1 ""
  	  [(match_operand:V2DI 2 "register_operand")
! 	   (match_operand:V2DI 3 "vector_operand")]))]
    "TARGET_SSE4_2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
--- 4421,4427 ----
    [(set (match_operand:V2DI 0 "register_operand")
  	(match_operator:V2DI 1 ""
  	  [(match_operand:V2DI 2 "register_operand")
! 	   (match_operand:V2DI 3 "vector_or_const_vector_operand")]))]
    "TARGET_SSE4_2"
  {
    bool ok = ix86_expand_int_vec_cmp (operands);
***************
*** 4375,4387 ****
  	(match_operator:V2DI 1 ""
  	  [(match_operand:V2DI 2 "register_operand")
  	   (match_operand:V2DI 3 "vector_operand")]))]
!   "TARGET_SSE4_1"
  {
!   bool ok = ix86_expand_int_vec_cmp (operands);
    gcc_assert (ok);
    DONE;
  })
  
  (define_expand "vcond<V_512:mode><VF_512:mode>"
    [(set (match_operand:V_512 0 "register_operand")
  	(if_then_else:V_512
--- 4434,4496 ----
  	(match_operator:V2DI 1 ""
  	  [(match_operand:V2DI 2 "register_operand")
  	   (match_operand:V2DI 3 "vector_operand")]))]
!   "TARGET_SSE2"
  {
!   bool ok;
!   if (!TARGET_SSE4_1)
!     {
!       rtx ops[4];
!       ops[0] = gen_reg_rtx (V4SImode);
!       ops[2] = gen_lowpart (V4SImode, force_reg (V2DImode, operands[2]));
!       ops[3] = gen_lowpart (V4SImode, force_reg (V2DImode, operands[3]));
!       ops[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]), V4SImode,
! 			       ops[2], ops[3]);
!       ok = ix86_expand_int_vec_cmp (ops);
! 
!       rtx tmp1 = gen_reg_rtx (V4SImode);
!       emit_insn (gen_sse2_pshufd (tmp1, ops[0], GEN_INT (0xb1)));
! 
!       rtx tmp2 = gen_reg_rtx (V4SImode);
!       if (GET_CODE (operands[1]) == EQ)
! 	emit_insn (gen_andv4si3 (tmp2, tmp1, ops[0]));
!       else
! 	emit_insn (gen_iorv4si3 (tmp2, tmp1, ops[0]));
! 
!       emit_move_insn (operands[0], gen_lowpart (V2DImode, tmp2));
!     }
!   else
!     ok = ix86_expand_int_vec_cmp (operands);
    gcc_assert (ok);
    DONE;
  })
  
+ (define_expand "vec_cmpeqv1tiv1ti"
+   [(set (match_operand:V1TI 0 "register_operand")
+ 	(match_operator:V1TI 1 ""
+ 	  [(match_operand:V1TI 2 "register_operand")
+ 	   (match_operand:V1TI 3 "vector_operand")]))]
+   "TARGET_SSE2"
+ {
+   rtx dst = gen_reg_rtx (V2DImode);
+   rtx op1 = gen_lowpart (V2DImode, force_reg (V1TImode, operands[2]));
+   rtx op2 = gen_lowpart (V2DImode, force_reg (V1TImode, operands[3]));
+   rtx cmp = gen_rtx_fmt_ee (GET_CODE (operands[1]), V2DImode, op1, op2);
+   emit_insn (gen_vec_cmpeqv2div2di (dst, cmp, op1, op2));
+ 
+   rtx tmp1 = gen_reg_rtx (V4SImode);
+   rtx tmp2 = gen_lowpart (V4SImode, dst);
+   emit_insn (gen_sse2_pshufd (tmp1, tmp2, GEN_INT (0x4e)));
+ 
+   rtx tmp3 = gen_reg_rtx (V4SImode);
+   if (GET_CODE (operands[1]) == EQ)
+     emit_insn (gen_andv4si3 (tmp3, tmp2, tmp1));
+   else
+     emit_insn (gen_iorv4si3 (tmp3, tmp2, tmp1));
+ 
+   emit_move_insn (operands[0], gen_lowpart (V1TImode, tmp3));
+   DONE;
+ })
+ 
  (define_expand "vcond<V_512:mode><VF_512:mode>"
    [(set (match_operand:V_512 0 "register_operand")
  	(if_then_else:V_512
***************
*** 4448,4461 ****
    DONE;
  })
  
  (define_expand "vcond<mode><sseintvecmodelower>"
!   [(set (match_operand:VF_AVX512FP16VL 0 "register_operand")
! 	(if_then_else:VF_AVX512FP16VL
  	  (match_operator 3 ""
  	    [(match_operand:<sseintvecmode> 4 "vector_operand")
  	     (match_operand:<sseintvecmode> 5 "vector_operand")])
! 	  (match_operand:VF_AVX512FP16VL 1 "general_operand")
! 	  (match_operand:VF_AVX512FP16VL 2 "general_operand")))]
    "TARGET_AVX512FP16"
  {
    bool ok = ix86_expand_int_vcond (operands);
--- 4557,4574 ----
    DONE;
  })
  
+ (define_mode_iterator VF_AVX512HFBFVL
+   [V32HF (V16HF "TARGET_AVX512VL") (V8HF "TARGET_AVX512VL")
+    V32BF (V16BF "TARGET_AVX512VL") (V8BF "TARGET_AVX512VL")])
+ 
  (define_expand "vcond<mode><sseintvecmodelower>"
!   [(set (match_operand:VF_AVX512HFBFVL 0 "register_operand")
! 	(if_then_else:VF_AVX512HFBFVL
  	  (match_operator 3 ""
  	    [(match_operand:<sseintvecmode> 4 "vector_operand")
  	     (match_operand:<sseintvecmode> 5 "vector_operand")])
! 	  (match_operand:VF_AVX512HFBFVL 1 "general_operand")
! 	  (match_operand:VF_AVX512HFBFVL 2 "general_operand")))]
    "TARGET_AVX512FP16"
  {
    bool ok = ix86_expand_int_vcond (operands);
***************
*** 4487,4496 ****
    "TARGET_AVX512F")
  
  (define_expand "vcond_mask_<mode><avx512fmaskmodelower>"
!   [(set (match_operand:VI12HF_AVX512VL 0 "register_operand")
! 	(vec_merge:VI12HF_AVX512VL
! 	  (match_operand:VI12HF_AVX512VL 1 "nonimmediate_operand")
! 	  (match_operand:VI12HF_AVX512VL 2 "nonimm_or_0_operand")
  	  (match_operand:<avx512fmaskmode> 3 "register_operand")))]
    "TARGET_AVX512BW")
  
--- 4600,4609 ----
    "TARGET_AVX512F")
  
  (define_expand "vcond_mask_<mode><avx512fmaskmodelower>"
!   [(set (match_operand:VI12HFBF_AVX512VL 0 "register_operand")
! 	(vec_merge:VI12HFBF_AVX512VL
! 	  (match_operand:VI12HFBF_AVX512VL 1 "nonimmediate_operand")
! 	  (match_operand:VI12HFBF_AVX512VL 2 "nonimm_or_0_operand")
  	  (match_operand:<avx512fmaskmode> 3 "register_operand")))]
    "TARGET_AVX512BW")
  
***************
*** 4514,4523 ****
  })
  
  (define_expand "vcond_mask_<mode><sseintvecmodelower>"
!   [(set (match_operand:VI124_128 0 "register_operand")
! 	(vec_merge:VI124_128
! 	  (match_operand:VI124_128 1 "vector_operand")
! 	  (match_operand:VI124_128 2 "nonimm_or_0_operand")
  	  (match_operand:<sseintvecmode> 3 "register_operand")))]
    "TARGET_SSE2"
  {
--- 4627,4636 ----
  })
  
  (define_expand "vcond_mask_<mode><sseintvecmodelower>"
!   [(set (match_operand:VI_128 0 "register_operand")
! 	(vec_merge:VI_128
! 	  (match_operand:VI_128 1 "vector_operand")
! 	  (match_operand:VI_128 2 "nonimm_or_0_operand")
  	  (match_operand:<sseintvecmode> 3 "register_operand")))]
    "TARGET_SSE2"
  {
***************
*** 4526,4538 ****
    DONE;
  })
  
! (define_expand "vcond_mask_v2div2di"
!   [(set (match_operand:V2DI 0 "register_operand")
! 	(vec_merge:V2DI
! 	  (match_operand:V2DI 1 "vector_operand")
! 	  (match_operand:V2DI 2 "nonimm_or_0_operand")
! 	  (match_operand:V2DI 3 "register_operand")))]
!   "TARGET_SSE4_2"
  {
    ix86_expand_sse_movcc (operands[0], operands[3],
  			 operands[1], operands[2]);
--- 4639,4651 ----
    DONE;
  })
  
! (define_expand "vcond_mask_v1tiv1ti"
!   [(set (match_operand:V1TI 0 "register_operand")
! 	(vec_merge:V1TI
! 	  (match_operand:V1TI 1 "vector_operand")
! 	  (match_operand:V1TI 2 "nonimm_or_0_operand")
! 	  (match_operand:V1TI 3 "register_operand")))]
!   "TARGET_SSE2"
  {
    ix86_expand_sse_movcc (operands[0], operands[3],
  			 operands[1], operands[2]);
***************
*** 6016,6022 ****
  	      (match_operand:VFH_128 1 "register_operand" "0,0")
  	      (match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")
  	      (match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))
! 	    (match_operand:VFH_128 4 "const0_operand" "C,C")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
--- 6129,6135 ----
  	      (match_operand:VFH_128 1 "register_operand" "0,0")
  	      (match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")
  	      (match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))
! 	    (match_operand:VFH_128 4 "const0_operand")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
***************
*** 6074,6080 ****
  	      (match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")
  	      (neg:VFH_128
  		(match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")))
! 	    (match_operand:VFH_128 4 "const0_operand" "C,C")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
--- 6187,6193 ----
  	      (match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v")
  	      (neg:VFH_128
  		(match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")))
! 	    (match_operand:VFH_128 4 "const0_operand")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
***************
*** 6146,6152 ****
  		(match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v"))
  	      (match_operand:VFH_128 1 "register_operand" "0,0")
  	      (match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))
! 	    (match_operand:VFH_128 4 "const0_operand" "C,C")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
--- 6259,6265 ----
  		(match_operand:VFH_128 2 "<round_nimm_scalar_predicate>" "<round_constraint>,v"))
  	      (match_operand:VFH_128 1 "register_operand" "0,0")
  	      (match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>"))
! 	    (match_operand:VFH_128 4 "const0_operand")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
***************
*** 6207,6213 ****
  	      (match_operand:VFH_128 1 "register_operand" "0,0")
  	      (neg:VFH_128
  		(match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")))
! 	    (match_operand:VFH_128 4 "const0_operand" "C,C")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
--- 6320,6326 ----
  	      (match_operand:VFH_128 1 "register_operand" "0,0")
  	      (neg:VFH_128
  		(match_operand:VFH_128 3 "<round_nimm_scalar_predicate>" "v,<round_constraint>")))
! 	    (match_operand:VFH_128 4 "const0_operand")
  	    (match_operand:QI 5 "register_operand" "Yk,Yk"))
  	  (match_dup 1)
  	  (const_int 1)))]
***************
*** 6712,6718 ****
    if (!MEM_P (operands[3]))
      operands[3] = force_reg (V8HFmode, operands[3]);
    op1 = lowpart_subreg (V4SFmode, operands[3], V8HFmode);
!   emit_insn (gen_sse_movss (dest, op1, op0));
    emit_move_insn (operands[0], lowpart_subreg (V8HFmode, dest, V4SFmode));
    DONE;
  })
--- 6825,6831 ----
    if (!MEM_P (operands[3]))
      operands[3] = force_reg (V8HFmode, operands[3]);
    op1 = lowpart_subreg (V4SFmode, operands[3], V8HFmode);
!   emit_insn (gen_sse_movss_v4sf (dest, op1, op0));
    emit_move_insn (operands[0], lowpart_subreg (V8HFmode, dest, V4SFmode));
    DONE;
  })
***************
*** 6742,6748 ****
    if (!MEM_P (operands[3]))
      operands[3] = force_reg (V8HFmode, operands[3]);
    op1 = lowpart_subreg (V4SFmode, operands[3], V8HFmode);
!   emit_insn (gen_sse_movss (dest, op1, op0));
    emit_move_insn (operands[0], lowpart_subreg (V8HFmode, dest, V4SFmode));
    DONE;
  })
--- 6855,6861 ----
    if (!MEM_P (operands[3]))
      operands[3] = force_reg (V8HFmode, operands[3]);
    op1 = lowpart_subreg (V4SFmode, operands[3], V8HFmode);
!   emit_insn (gen_sse_movss_v4sf (dest, op1, op0));
    emit_move_insn (operands[0], lowpart_subreg (V8HFmode, dest, V4SFmode));
    DONE;
  })
***************
*** 6872,6878 ****
    [(set (match_operand:V8HF 0 "register_operand" "=v")
  	(vec_concat:V8HF
  	    (any_float:V4HF (match_operand:VI4_128_8_256 1 "vector_operand" "vm"))
! 	    (match_operand:V4HF 2 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
--- 6985,6991 ----
    [(set (match_operand:V8HF 0 "register_operand" "=v")
  	(vec_concat:V8HF
  	    (any_float:V4HF (match_operand:VI4_128_8_256 1 "vector_operand" "vm"))
! 	    (match_operand:V4HF 2 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 6901,6907 ****
                  (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
                  (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)]))
              (match_operand:QI 3 "register_operand" "Yk"))
! 	    (match_operand:V4HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
--- 7014,7020 ----
                  (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
                  (parallel [(const_int 0) (const_int 1) (const_int 2) (const_int 3)]))
              (match_operand:QI 3 "register_operand" "Yk"))
! 	    (match_operand:V4HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 6914,6922 ****
  	(vec_merge:V4HF
  		(any_float:V4HF (match_operand:VI4_128_8_256 1
  				  "vector_operand" "vm"))
! 	    (match_operand:V4HF 3 "const0_operand" "C")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	    (match_operand:V4HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
--- 7027,7035 ----
  	(vec_merge:V4HF
  		(any_float:V4HF (match_operand:VI4_128_8_256 1
  				  "vector_operand" "vm"))
! 	    (match_operand:V4HF 3 "const0_operand")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	    (match_operand:V4HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix><sseintconvert>2ph<qq2phsuff>\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 6948,6954 ****
    [(set (match_operand:V8HF 0 "register_operand" "=v")
  	(vec_concat:V8HF
  	    (any_float:V2HF (match_operand:V2DI 1 "vector_operand" "vm"))
! 	    (match_operand:V6HF 2 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ph{x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
--- 7061,7067 ----
    [(set (match_operand:V8HF 0 "register_operand" "=v")
  	(vec_concat:V8HF
  	    (any_float:V2HF (match_operand:V2DI 1 "vector_operand" "vm"))
! 	    (match_operand:V6HF 2 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ph{x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 6977,6983 ****
                  (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
                  (parallel [(const_int 0) (const_int 1)]))
              (match_operand:QI 3 "register_operand" "Yk"))
! 	    (match_operand:V6HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ph{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
--- 7090,7096 ----
                  (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
                  (parallel [(const_int 0) (const_int 1)]))
              (match_operand:QI 3 "register_operand" "Yk"))
! 	    (match_operand:V6HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ph{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 6990,6998 ****
  	(vec_merge:V2HF
  		(any_float:V2HF (match_operand:V2DI 1
  				  "vector_operand" "vm"))
! 	    (match_operand:V2HF 3 "const0_operand" "C")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	    (match_operand:V6HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ph{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
--- 7103,7111 ----
  	(vec_merge:V2HF
  		(any_float:V2HF (match_operand:V2DI 1
  				  "vector_operand" "vm"))
! 	    (match_operand:V2HF 3 "const0_operand")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	    (match_operand:V6HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ph{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7295,7301 ****
  	(vec_concat:V8HF
  	    (float_truncate:V4HF
  	      (match_operand:VF4_128_8_256 1 "vector_operand" "vm"))
! 	    (match_operand:V4HF 2 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
--- 7408,7414 ----
  	(vec_concat:V8HF
  	    (float_truncate:V4HF
  	      (match_operand:VF4_128_8_256 1 "vector_operand" "vm"))
! 	    (match_operand:V4HF 2 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7328,7334 ****
  	      (parallel [(const_int 0) (const_int 1)
  			 (const_int 2) (const_int 3)]))
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:V4HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
--- 7441,7447 ----
  	      (parallel [(const_int 0) (const_int 1)
  			 (const_int 2) (const_int 3)]))
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:V4HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7341,7349 ****
  	  (vec_merge:V4HF
  	    (float_truncate:V4HF
  	      (match_operand:VF4_128_8_256 1 "vector_operand" "vm"))
! 	    (match_operand:V4HF 3 "const0_operand" "C")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	  (match_operand:V4HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
--- 7454,7462 ----
  	  (vec_merge:V4HF
  	    (float_truncate:V4HF
  	      (match_operand:VF4_128_8_256 1 "vector_operand" "vm"))
! 	    (match_operand:V4HF 3 "const0_operand")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	  (match_operand:V4HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvt<castmode>2ph<ph2pssuffix><qq2phsuff>\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7374,7380 ****
  	(vec_concat:V8HF
  	  (float_truncate:V2HF
  	    (match_operand:V2DF 1 "vector_operand" "vm"))
! 	  (match_operand:V6HF 2 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvtpd2ph{x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
--- 7487,7493 ----
  	(vec_concat:V8HF
  	  (float_truncate:V2HF
  	    (match_operand:V2DF 1 "vector_operand" "vm"))
! 	  (match_operand:V6HF 2 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvtpd2ph{x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7404,7410 ****
  	      (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
  	      (parallel [(const_int 0) (const_int 1)]))
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:V6HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvtpd2ph{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
--- 7517,7523 ----
  	      (match_operand:V8HF 2 "nonimm_or_0_operand" "0C")
  	      (parallel [(const_int 0) (const_int 1)]))
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:V6HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvtpd2ph{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7417,7425 ****
  	  (vec_merge:V2HF
  	    (float_truncate:V2HF
  	      (match_operand:V2DF 1 "vector_operand" "vm"))
! 	    (match_operand:V2HF 3 "const0_operand" "C")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	  (match_operand:V6HF 4 "const0_operand" "C")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvtpd2ph{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
--- 7530,7538 ----
  	  (vec_merge:V2HF
  	    (float_truncate:V2HF
  	      (match_operand:V2DF 1 "vector_operand" "vm"))
! 	    (match_operand:V2HF 3 "const0_operand")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	  (match_operand:V6HF 4 "const0_operand")))]
    "TARGET_AVX512FP16 && TARGET_AVX512VL"
    "vcvtpd2ph{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 7737,7743 ****
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn "ufloat<sseintvecmodelower><mode>2<mask_name><round_name>"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
  	(unsigned_float:VF1_AVX512VL
  	  (match_operand:<sseintvecmode> 1 "nonimmediate_operand" "<round_constraint>")))]
--- 7850,7856 ----
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn "<mask_codefor>floatuns<sseintvecmodelower><mode>2<mask_name><round_name>"
    [(set (match_operand:VF1_AVX512VL 0 "register_operand" "=v")
  	(unsigned_float:VF1_AVX512VL
  	  (match_operand:<sseintvecmode> 1 "nonimmediate_operand" "<round_constraint>")))]
***************
*** 7748,7771 ****
     (set_attr "mode" "<MODE>")])
  
  (define_expand "floatuns<sseintvecmodelower><mode>2"
!   [(match_operand:VF1 0 "register_operand")
!    (match_operand:<sseintvecmode> 1 "register_operand")]
    "TARGET_SSE2 && (<MODE>mode == V4SFmode || TARGET_AVX2)"
  {
!   if (<MODE>mode == V16SFmode)
!     emit_insn (gen_ufloatv16siv16sf2 (operands[0], operands[1]));
!   else
!     if (TARGET_AVX512VL)
!       {
! 	if (<MODE>mode == V4SFmode)
! 	  emit_insn (gen_ufloatv4siv4sf2 (operands[0], operands[1]));
! 	else
! 	  emit_insn (gen_ufloatv8siv8sf2 (operands[0], operands[1]));
!       }
!   else
!     ix86_expand_vector_convert_uns_vsivsf (operands[0], operands[1]);
! 
!   DONE;
  })
  
  
--- 7861,7876 ----
     (set_attr "mode" "<MODE>")])
  
  (define_expand "floatuns<sseintvecmodelower><mode>2"
!   [(set (match_operand:VF1 0 "register_operand")
! 	(unsigned_float:VF1
! 	  (match_operand:<sseintvecmode> 1 "register_operand")))]
    "TARGET_SSE2 && (<MODE>mode == V4SFmode || TARGET_AVX2)"
  {
!   if (<MODE>mode != V16SFmode && !TARGET_AVX512VL)
!     {
!       ix86_expand_vector_convert_uns_vsivsf (operands[0], operands[1]);
!       DONE;
!     }
  })
  
  
***************
*** 7800,7806 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn "<mask_codefor><avx512>_ufix_notrunc<sf2simodelower><mode><mask_name><round_name>"
    [(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
  	(unspec:VI4_AVX512VL
  	  [(match_operand:<ssePSmode> 1 "nonimmediate_operand" "<round_constraint>")]
--- 7905,7911 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn "<mask_codefor><avx512>_fixuns_notrunc<sf2simodelower><mode><mask_name><round_name>"
    [(set (match_operand:VI4_AVX512VL 0 "register_operand" "=v")
  	(unspec:VI4_AVX512VL
  	  [(match_operand:<ssePSmode> 1 "nonimmediate_operand" "<round_constraint>")]
***************
*** 7857,7863 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "<fixsuffix>fix_truncv16sfv16si2<mask_name><round_saeonly_name>"
    [(set (match_operand:V16SI 0 "register_operand" "=v")
  	(any_fix:V16SI
  	  (match_operand:V16SF 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")))]
--- 7962,7968 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "fix<fixunssuffix>_truncv16sfv16si2<mask_name><round_saeonly_name>"
    [(set (match_operand:V16SI 0 "register_operand" "=v")
  	(any_fix:V16SI
  	  (match_operand:V16SF 1 "<round_saeonly_nimm_predicate>" "<round_saeonly_constraint>")))]
***************
*** 7897,7918 ****
     (set_attr "mode" "TI")])
  
  (define_expand "fixuns_trunc<mode><sseintvecmodelower>2"
!   [(match_operand:<sseintvecmode> 0 "register_operand")
!    (match_operand:VF1 1 "register_operand")]
    "TARGET_SSE2"
  {
!   if (<MODE>mode == V16SFmode)
!     emit_insn (gen_ufix_truncv16sfv16si2 (operands[0],
! 					  operands[1]));
!   else
      {
        rtx tmp[3];
        tmp[0] = ix86_expand_adjust_ufix_to_sfix_si (operands[1], &tmp[2]);
        tmp[1] = gen_reg_rtx (<sseintvecmode>mode);
        emit_insn (gen_fix_trunc<mode><sseintvecmodelower>2 (tmp[1], tmp[0]));
        emit_insn (gen_xor<sseintvecmodelower>3 (operands[0], tmp[1], tmp[2]));
      }
-   DONE;
  })
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
--- 8002,8022 ----
     (set_attr "mode" "TI")])
  
  (define_expand "fixuns_trunc<mode><sseintvecmodelower>2"
!   [(set (match_operand:<sseintvecmode> 0 "register_operand")
! 	  (unsigned_fix:<sseintvecmode>
! 	    (match_operand:VF1_128_256 1 "register_operand")))]
    "TARGET_SSE2"
  {
!   /* AVX512 support vcvttps2udq for all 128/256/512-bit vectors.  */
!   if (!TARGET_AVX512VL)
      {
        rtx tmp[3];
        tmp[0] = ix86_expand_adjust_ufix_to_sfix_si (operands[1], &tmp[2]);
        tmp[1] = gen_reg_rtx (<sseintvecmode>mode);
        emit_insn (gen_fix_trunc<mode><sseintvecmodelower>2 (tmp[1], tmp[0]));
        emit_insn (gen_xor<sseintvecmodelower>3 (operands[0], tmp[1], tmp[2]));
+       DONE;
      }
  })
  
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
***************
*** 8203,8209 ****
    [(set (match_operand:V4SF 0 "register_operand" "=v")
  	(vec_concat:V4SF
  	    (any_float:V2SF (match_operand:V2DI 1 "nonimmediate_operand" "vm"))
! 	    (match_operand:V2SF 2 "const0_operand" "C")))]
    "TARGET_AVX512DQ && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ps{x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
--- 8307,8313 ----
    [(set (match_operand:V4SF 0 "register_operand" "=v")
  	(vec_concat:V4SF
  	    (any_float:V2SF (match_operand:V2DI 1 "nonimmediate_operand" "vm"))
! 	    (match_operand:V2SF 2 "const0_operand")))]
    "TARGET_AVX512DQ && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ps{x}\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 8278,8284 ****
                  (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
                  (parallel [(const_int 0) (const_int 1)]))
              (match_operand:QI 3 "register_operand" "Yk"))
! 	    (match_operand:V2SF 4 "const0_operand" "C")))]
    "TARGET_AVX512DQ && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ps{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
--- 8382,8388 ----
                  (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
                  (parallel [(const_int 0) (const_int 1)]))
              (match_operand:QI 3 "register_operand" "Yk"))
! 	    (match_operand:V2SF 4 "const0_operand")))]
    "TARGET_AVX512DQ && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ps{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 8291,8306 ****
  	(vec_merge:V2SF
  		(any_float:V2SF (match_operand:V2DI 1
  				  "nonimmediate_operand" "vm"))
! 	    (match_operand:V2SF 3 "const0_operand" "C")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	    (match_operand:V2SF 4 "const0_operand" "C")))]
    "TARGET_AVX512DQ && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "V4SF")])
  
! (define_insn "ufloat<si2dfmodelower><mode>2<mask_name>"
    [(set (match_operand:VF2_512_256VL 0 "register_operand" "=v")
  	(unsigned_float:VF2_512_256VL
  	  (match_operand:<si2dfmode> 1 "nonimmediate_operand" "vm")))]
--- 8395,8410 ----
  	(vec_merge:V2SF
  		(any_float:V2SF (match_operand:V2DI 1
  				  "nonimmediate_operand" "vm"))
! 	    (match_operand:V2SF 3 "const0_operand")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	    (match_operand:V2SF 4 "const0_operand")))]
    "TARGET_AVX512DQ && TARGET_AVX512VL"
    "vcvt<floatsuffix>qq2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "V4SF")])
  
! (define_insn "floatuns<si2dfmodelower><mode>2<mask_name>"
    [(set (match_operand:VF2_512_256VL 0 "register_operand" "=v")
  	(unsigned_float:VF2_512_256VL
  	  (match_operand:<si2dfmode> 1 "nonimmediate_operand" "vm")))]
***************
*** 8310,8316 ****
      (set_attr "prefix" "evex")
      (set_attr "mode" "<MODE>")])
  
! (define_insn "ufloatv2siv2df2<mask_name>"
    [(set (match_operand:V2DF 0 "register_operand" "=v")
  	(unsigned_float:V2DF
  	  (vec_select:V2SI
--- 8414,8420 ----
      (set_attr "prefix" "evex")
      (set_attr "mode" "<MODE>")])
  
! (define_insn "<mask_codefor>floatunsv2siv2df2<mask_name>"
    [(set (match_operand:V2DF 0 "register_operand" "=v")
  	(unsigned_float:V2DF
  	  (vec_select:V2SI
***************
*** 8459,8469 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! ;; For ufix_notrunc* insn patterns
  (define_mode_attr pd2udqsuff
    [(V8DF "") (V4DF "{y}")])
  
! (define_insn "ufix_notrunc<mode><si2dfmodelower>2<mask_name><round_name>"
    [(set (match_operand:<si2dfmode> 0 "register_operand" "=v")
  	(unspec:<si2dfmode>
  	  [(match_operand:VF2_512_256VL 1 "nonimmediate_operand" "<round_constraint>")]
--- 8563,8573 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! ;; For fixuns_notrunc* insn patterns
  (define_mode_attr pd2udqsuff
    [(V8DF "") (V4DF "{y}")])
  
! (define_insn "fixuns_notrunc<mode><si2dfmodelower>2<mask_name><round_name>"
    [(set (match_operand:<si2dfmode> 0 "register_operand" "=v")
  	(unspec:<si2dfmode>
  	  [(match_operand:VF2_512_256VL 1 "nonimmediate_operand" "<round_constraint>")]
***************
*** 8474,8480 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn "ufix_notruncv2dfv2si2"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (unspec:V2SI
--- 8578,8584 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn "fixuns_notruncv2dfv2si2"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (unspec:V2SI
***************
*** 8487,8493 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "ufix_notruncv2dfv2si2_mask"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
--- 8591,8597 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "fixuns_notruncv2dfv2si2_mask"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
***************
*** 8505,8511 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "*ufix_notruncv2dfv2si2_mask_1"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
--- 8609,8615 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "*fixuns_notruncv2dfv2si2_mask_1"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
***************
*** 8531,8537 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "OI")])
  
! (define_insn "ufix_truncv2dfv2si2"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (unsigned_fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "vm"))
--- 8635,8641 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "OI")])
  
! (define_insn "*fixuns_truncv2dfv2si2"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (unsigned_fix:V2SI (match_operand:V2DF 1 "nonimmediate_operand" "vm"))
***************
*** 8542,8548 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "ufix_truncv2dfv2si2_mask"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
--- 8646,8652 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "fixuns_truncv2dfv2si2_mask"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
***************
*** 8558,8564 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "*ufix_truncv2dfv2si2_mask_1"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
--- 8662,8668 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "TI")])
  
! (define_insn "*fixuns_truncv2dfv2si2_mask_1"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(vec_concat:V4SI
  	  (vec_merge:V2SI
***************
*** 8581,8587 ****
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn "ufix_truncv4dfv4si2<mask_name>"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(unsigned_fix:V4SI (match_operand:V4DF 1 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512VL && TARGET_AVX512F"
--- 8685,8691 ----
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn "fixuns_truncv4dfv4si2<mask_name>"
    [(set (match_operand:V4SI 0 "register_operand" "=v")
  	(unsigned_fix:V4SI (match_operand:V4DF 1 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512VL && TARGET_AVX512F"
***************
*** 8611,8617 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseintvecmode2>")])
  
! (define_insn "ufix_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>"
    [(set (match_operand:<sseintvecmode> 0 "register_operand" "=v")
  	(unspec:<sseintvecmode>
  	  [(match_operand:VF2_AVX512VL 1 "nonimmediate_operand" "<round_constraint>")]
--- 8715,8721 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseintvecmode2>")])
  
! (define_insn "fixuns_notrunc<mode><sseintvecmodelower>2<mask_name><round_name>"
    [(set (match_operand:<sseintvecmode> 0 "register_operand" "=v")
  	(unspec:<sseintvecmode>
  	  [(match_operand:VF2_AVX512VL 1 "nonimmediate_operand" "<round_constraint>")]
***************
*** 8714,8720 ****
    DONE;
  })
  
! (define_insn "ufix_trunc<mode><sseintvecmodelower>2<mask_name>"
    [(set (match_operand:<sseintvecmode> 0 "register_operand" "=v")
  	(unsigned_fix:<sseintvecmode>
  	  (match_operand:VF1_128_256VL 1 "nonimmediate_operand" "vm")))]
--- 8818,8824 ----
    DONE;
  })
  
! (define_insn "<mask_codefor>fixuns_trunc<mode><sseintvecmodelower>2<mask_name>"
    [(set (match_operand:<sseintvecmode> 0 "register_operand" "=v")
  	(unsigned_fix:<sseintvecmode>
  	  (match_operand:VF1_128_256VL 1 "nonimmediate_operand" "vm")))]
***************
*** 8793,8799 ****
    "@
     cvtsd2ss\t{%2, %0|%0, %2}
     cvtsd2ss\t{%2, %0|%0, %q2}
!    vcvtsd2ss\t{<round_mask_op3>%2, %1, %0<mask_operand3>|<mask_operand3>%0, %1, %q2<round_mask_op3>}"
    [(set_attr "isa" "noavx,noavx,avx")
     (set_attr "type" "ssecvt")
     (set_attr "athlon_decode" "vector,double,*")
--- 8897,8903 ----
    "@
     cvtsd2ss\t{%2, %0|%0, %2}
     cvtsd2ss\t{%2, %0|%0, %q2}
!    vcvtsd2ss\t{<round_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %q2<round_mask_op3>}"
    [(set_attr "isa" "noavx,noavx,avx")
     (set_attr "type" "ssecvt")
     (set_attr "athlon_decode" "vector,double,*")
***************
*** 8837,8843 ****
    "@
     cvtss2sd\t{%2, %0|%0, %2}
     cvtss2sd\t{%2, %0|%0, %k2}
!    vcvtss2sd\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|<mask_operand3>%0, %1, %k2<round_saeonly_mask_op3>}"
    [(set_attr "isa" "noavx,noavx,avx")
     (set_attr "type" "ssecvt")
     (set_attr "amdfam10_decode" "vector,double,*")
--- 8941,8947 ----
    "@
     cvtss2sd\t{%2, %0|%0, %2}
     cvtss2sd\t{%2, %0|%0, %k2}
!    vcvtss2sd\t{<round_saeonly_mask_op3>%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %k2<round_saeonly_mask_op3>}"
    [(set_attr "isa" "noavx,noavx,avx")
     (set_attr "type" "ssecvt")
     (set_attr "amdfam10_decode" "vector,double,*")
***************
*** 8917,8923 ****
  	(vec_concat:V4SF
  	  (float_truncate:V2SF
  	    (match_operand:V2DF 1 "vector_operand" "vBm"))
! 	  (match_operand:V2SF 2 "const0_operand" "C")))]
    "TARGET_SSE2"
  {
    if (TARGET_AVX)
--- 9021,9027 ----
  	(vec_concat:V4SF
  	  (float_truncate:V2SF
  	    (match_operand:V2DF 1 "vector_operand" "vBm"))
! 	  (match_operand:V2SF 2 "const0_operand")))]
    "TARGET_SSE2"
  {
    if (TARGET_AVX)
***************
*** 8962,8968 ****
  	      (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
  	      (parallel [(const_int 0) (const_int 1)]))
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:V2SF 4 "const0_operand" "C")))]
    "TARGET_AVX512VL"
    "vcvtpd2ps{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
--- 9066,9072 ----
  	      (match_operand:V4SF 2 "nonimm_or_0_operand" "0C")
  	      (parallel [(const_int 0) (const_int 1)]))
  	    (match_operand:QI 3 "register_operand" "Yk"))
! 	  (match_operand:V2SF 4 "const0_operand")))]
    "TARGET_AVX512VL"
    "vcvtpd2ps{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 8975,8983 ****
  	  (vec_merge:V2SF
  	    (float_truncate:V2SF
  	      (match_operand:V2DF 1 "nonimmediate_operand" "vm"))
! 	    (match_operand:V2SF 3 "const0_operand" "C")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	  (match_operand:V2SF 4 "const0_operand" "C")))]
    "TARGET_AVX512VL"
    "vcvtpd2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
--- 9079,9087 ----
  	  (vec_merge:V2SF
  	    (float_truncate:V2SF
  	      (match_operand:V2DF 1 "nonimmediate_operand" "vm"))
! 	    (match_operand:V2SF 3 "const0_operand")
  	    (match_operand:QI 2 "register_operand" "Yk"))
! 	  (match_operand:V2SF 4 "const0_operand")))]
    "TARGET_AVX512VL"
    "vcvtpd2ps{x}\t{%1, %0%{%2%}%{z%}|%0%{%2%}%{z%}, %1}"
    [(set_attr "type" "ssecvt")
***************
*** 9110,9120 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "sse2_cvtps2pd<mask_name>"
    [(set (match_operand:V2DF 0 "register_operand" "=v")
  	(float_extend:V2DF
  	  (vec_select:V2SF
! 	    (match_operand:V4SF 1 "vector_operand" "vm")
  	    (parallel [(const_int 0) (const_int 1)]))))]
    "TARGET_SSE2 && <mask_avx512vl_condition>"
    "%vcvtps2pd\t{%1, %0<mask_operand2>|%0<mask_operand2>, %q1}"
--- 9214,9240 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
+ (define_expand "extendv2sfv2df2"
+   [(set (match_operand:V2DF 0 "register_operand")
+ 	(float_extend:V2DF
+ 	  (match_operand:V2SF 1 "nonimmediate_operand")))]
+   "TARGET_MMX_WITH_SSE"
+ {
+   if (!MEM_P (operands[1]))
+     {
+       operands[1] = lowpart_subreg (V4SFmode,
+ 				    force_reg (V2SFmode, operands[1]),
+ 				    V2SFmode);
+       emit_insn (gen_sse2_cvtps2pd (operands[0], operands[1]));
+       DONE;
+     }
+ })
+ 
  (define_insn "sse2_cvtps2pd<mask_name>"
    [(set (match_operand:V2DF 0 "register_operand" "=v")
  	(float_extend:V2DF
  	  (vec_select:V2SF
! 	    (match_operand:V4SF 1 "register_operand" "v")
  	    (parallel [(const_int 0) (const_int 1)]))))]
    "TARGET_SSE2 && <mask_avx512vl_condition>"
    "%vcvtps2pd\t{%1, %0<mask_operand2>|%0<mask_operand2>, %q1}"
***************
*** 9126,9137 ****
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "V2DF")])
  
! (define_insn "extendv2sfv2df2"
    [(set (match_operand:V2DF 0 "register_operand" "=v")
  	(float_extend:V2DF
! 	  (match_operand:V2SF 1 "register_operand" "v")))]
!   "TARGET_MMX_WITH_SSE"
!   "%vcvtps2pd\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssecvt")
     (set_attr "amdfam10_decode" "direct")
     (set_attr "athlon_decode" "double")
--- 9246,9257 ----
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "V2DF")])
  
! (define_insn "sse2_cvtps2pd<mask_name>_1"
    [(set (match_operand:V2DF 0 "register_operand" "=v")
  	(float_extend:V2DF
! 	  (match_operand:V2SF 1 "memory_operand" "m")))]
!   "TARGET_SSE2 && <mask_avx512vl_condition>"
!   "%vcvtps2pd\t{%1, %0<mask_operand2>|%0<mask_operand2>, %q1}"
    [(set_attr "type" "ssecvt")
     (set_attr "amdfam10_decode" "direct")
     (set_attr "athlon_decode" "double")
***************
*** 9188,9194 ****
  	  (vec_select:V2SF
  	    (match_operand:V4SF 1 "vector_operand")
  	    (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE2")
  
  (define_expand "vec_unpacks_lo_v8sf"
    [(set (match_operand:V4DF 0 "register_operand")
--- 9308,9322 ----
  	  (vec_select:V2SF
  	    (match_operand:V4SF 1 "vector_operand")
  	    (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE2"
! {
!   if (MEM_P (operands[1]))
!     {
!       operands[1] = adjust_address_nv (operands[1], V2SFmode, 0);
!       emit_insn (gen_sse2_cvtps2pd_1 (operands[0], operands[1]));
!       DONE;
!     }
! })
  
  (define_expand "vec_unpacks_lo_v8sf"
    [(set (match_operand:V4DF 0 "register_operand")
***************
*** 10361,10371 ****
     (set_attr "prefix" "orig,maybe_evex,orig,maybe_evex,maybe_vex")
     (set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
  
! (define_insn "sse_movss"
!   [(set (match_operand:V4SF 0 "register_operand"   "=x,v")
! 	(vec_merge:V4SF
! 	  (match_operand:V4SF 2 "register_operand" " x,v")
! 	  (match_operand:V4SF 1 "register_operand" " 0,v")
  	  (const_int 1)))]
    "TARGET_SSE"
    "@
--- 10489,10499 ----
     (set_attr "prefix" "orig,maybe_evex,orig,maybe_evex,maybe_vex")
     (set_attr "mode" "V4SF,V4SF,V2SF,V2SF,V2SF")])
  
! (define_insn "sse_movss_<mode>"
!   [(set (match_operand:VI4F_128 0 "register_operand"   "=x,v")
! 	(vec_merge:VI4F_128
! 	  (match_operand:VI4F_128 2 "register_operand" " x,v")
! 	  (match_operand:VI4F_128 1 "register_operand" " 0,v")
  	  (const_int 1)))]
    "TARGET_SSE"
    "@
***************
*** 10512,10518 ****
    [(set (match_operand:V4SF 0 "register_operand"       "=v")
  	(vec_concat:V4SF
  	  (match_operand:V2SF 1 "nonimmediate_operand" "vm")
! 	  (match_operand:V2SF 2 "const0_operand"       " C")))]
    "TARGET_SSE2"
    "%vmovq\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssemov")
--- 10640,10646 ----
    [(set (match_operand:V4SF 0 "register_operand"       "=v")
  	(vec_concat:V4SF
  	  (match_operand:V2SF 1 "nonimmediate_operand" "vm")
! 	  (match_operand:V2SF 2 "const0_operand")))]
    "TARGET_SSE2"
    "%vmovq\t{%1, %0|%0, %1}"
    [(set_attr "type" "ssemov")
***************
*** 10523,10533 ****
  ;; see comment above inline_secondary_memory_needed function in i386.cc
  (define_insn "vec_set<mode>_0"
    [(set (match_operand:VI4F_128 0 "nonimmediate_operand"
! 	  "=Yr,*x,v,v,v,x,x,v,Yr ,*x ,x  ,m ,m   ,m")
  	(vec_merge:VI4F_128
  	  (vec_duplicate:VI4F_128
  	    (match_operand:<ssescalarmode> 2 "general_operand"
! 	  " Yr,*x,v,m,r ,m,x,v,*rm,*rm,*rm,!x,!*re,!*fF"))
  	  (match_operand:VI4F_128 1 "nonimm_or_0_operand"
  	  " C , C,C,C,C ,C,0,v,0  ,0  ,x  ,0 ,0   ,0")
  	  (const_int 1)))]
--- 10651,10661 ----
  ;; see comment above inline_secondary_memory_needed function in i386.cc
  (define_insn "vec_set<mode>_0"
    [(set (match_operand:VI4F_128 0 "nonimmediate_operand"
! 	  "=Yr,*x,v,v,v,x,x,v,Yr ,?x ,x  ,m ,m   ,m")
  	(vec_merge:VI4F_128
  	  (vec_duplicate:VI4F_128
  	    (match_operand:<ssescalarmode> 2 "general_operand"
! 	  " Yr,*x,v,m,r ,m,x,v,?rm,?rm,?rm,!x,?re,!*fF"))
  	  (match_operand:VI4F_128 1 "nonimm_or_0_operand"
  	  " C , C,C,C,C ,C,0,v,0  ,0  ,x  ,0 ,0   ,0")
  	  (const_int 1)))]
***************
*** 10593,10599 ****
  	   ]
  	   (symbol_ref "true")))])
  
! (define_insn "vec_set<mode>_0"
    [(set (match_operand:V8_128 0 "register_operand"
  	  "=v,v,v,x,x,Yr,*x,x,x,x,v,v")
  	(vec_merge:V8_128
--- 10721,10727 ----
  	   ]
  	   (symbol_ref "true")))])
  
! (define_insn "@vec_set<mode>_0"
    [(set (match_operand:V8_128 0 "register_operand"
  	  "=v,v,v,x,x,Yr,*x,x,x,x,v,v")
  	(vec_merge:V8_128
***************
*** 10658,10664 ****
  		   (const_string "HF")
  		   (const_string "TI")))
     (set (attr "enabled")
!      (cond [(and (not (match_test "<MODE>mode == V8HFmode"))
  		 (eq_attr "alternative" "2"))
  	      (symbol_ref "false")
  	   ]
--- 10786,10792 ----
  		   (const_string "HF")
  		   (const_string "TI")))
     (set (attr "enabled")
!      (cond [(and (not (match_test "<MODE>mode == V8HFmode || <MODE>mode == V8BFmode"))
  		 (eq_attr "alternative" "2"))
  	      (symbol_ref "false")
  	   ]
***************
*** 10670,10676 ****
  	(vec_merge:VI2F_256_512
  	  (vec_duplicate:VI2F_256_512
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "r,m"))
! 	  (match_operand:VI2F_256_512 1 "const0_operand" "C,C")
  	  (const_int 1)))]
    "TARGET_AVX512FP16"
    "@
--- 10798,10804 ----
  	(vec_merge:VI2F_256_512
  	  (vec_duplicate:VI2F_256_512
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "r,m"))
! 	  (match_operand:VI2F_256_512 1 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX512FP16"
    "@
***************
*** 10680,10690 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "HF")])
  
! (define_insn "avx512fp16_movsh"
!   [(set (match_operand:V8HF 0 "register_operand" "=v")
! 	(vec_merge:V8HF
!           (match_operand:V8HF 2 "register_operand" "v")
! 	  (match_operand:V8HF 1 "register_operand" "v")
  	  (const_int 1)))]
    "TARGET_AVX512FP16"
    "vmovsh\t{%2, %1, %0|%0, %1, %2}"
--- 10808,10860 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "HF")])
  
! (define_insn_and_split "*vec_set<mode>_0_zero_extendhi"
!   [(set (match_operand:VI48_AVX512F 0 "register_operand")
! 	(vec_merge:VI48_AVX512F
! 	 (vec_duplicate:VI48_AVX512F
! 	  (zero_extend:<ssescalarmode>
! 	    (match_operand:HI 1 "nonimmediate_operand")))
! 	 (match_operand:VI48_AVX512F 2 "const0_operand")
! 	 (const_int 1)))]
!   "TARGET_AVX512FP16 && ix86_pre_reload_split ()"
!   "#"
!   "&& 1"
!   [(const_int 0)]
! {
!   rtx dest = gen_reg_rtx (<ssewvecmode>mode);
!   emit_insn (gen_vec_set<ssewvecmodelower>_0 (dest,
! 					      CONST0_RTX (<ssewvecmode>mode),
! 					      operands[1]));
!   emit_move_insn (operands[0],
! 		  lowpart_subreg (<MODE>mode, dest, <ssewvecmode>mode));
!   DONE;
! })
! 
! (define_insn_and_split "*vec_setv2di_0_zero_extendhi_1"
!   [(set (match_operand:V2DI 0 "register_operand")
! 	(vec_concat:V2DI
! 	  (zero_extend:DI
! 	    (match_operand:HI 1 "nonimmediate_operand"))
! 	  (const_int 0)))]
!   "TARGET_AVX512FP16 && ix86_pre_reload_split ()"
!   "#"
!   "&& 1"
!   [(const_int 0)]
! {
!   rtx dest = gen_reg_rtx (V8HImode);
!   emit_insn (gen_vec_setv8hi_0 (dest, CONST0_RTX (V8HImode), operands[1]));
!   emit_move_insn (operands[0],
! 		  lowpart_subreg (V2DImode, dest, V8HImode));
!   DONE;
! })
! 
! (define_mode_iterator V8BFH_128 [V8HF V8BF])
! 
! (define_insn "avx512fp16_mov<mode>"
!   [(set (match_operand:V8BFH_128 0 "register_operand" "=v")
! 	(vec_merge:V8BFH_128
!           (match_operand:V8BFH_128 2 "register_operand" "v")
! 	  (match_operand:V8BFH_128 1 "register_operand" "v")
  	  (const_int 1)))]
    "TARGET_AVX512FP16"
    "vmovsh\t{%2, %1, %0|%0, %1, %2}"
***************
*** 10730,10736 ****
  	(vec_merge:VI4F_256_512
  	  (vec_duplicate:VI4F_256_512
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "v,m,r"))
! 	  (match_operand:VI4F_256_512 1 "const0_operand" "C,C,C")
  	  (const_int 1)))]
    "TARGET_AVX"
    "@
--- 10900,10906 ----
  	(vec_merge:VI4F_256_512
  	  (vec_duplicate:VI4F_256_512
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "v,m,r"))
! 	  (match_operand:VI4F_256_512 1 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX"
    "@
***************
*** 10749,10759 ****
  	   ]
  	   (symbol_ref "true")))])
  
  (define_insn "sse4_1_insertps"
    [(set (match_operand:V4SF 0 "register_operand" "=Yr,*x,v")
  	(unspec:V4SF [(match_operand:V4SF 2 "nonimmediate_operand" "Yrm,*xm,vm")
  		      (match_operand:V4SF 1 "register_operand" "0,0,v")
! 		      (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")]
  		     UNSPEC_INSERTPS))]
    "TARGET_SSE4_1"
  {
--- 10919,10969 ----
  	   ]
  	   (symbol_ref "true")))])
  
+ (define_insn_and_split "*vec_set<mode>_0_zero_extendsi"
+   [(set (match_operand:VI8 0 "register_operand")
+ 	(vec_merge:VI8
+ 	 (vec_duplicate:VI8
+ 	  (zero_extend:DI
+ 	    (match_operand:SI 1 "nonimmediate_operand")))
+ 	 (match_operand:VI8 2 "const0_operand")
+ 	 (const_int 1)))]
+   "TARGET_SSE2 && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   rtx dest = gen_reg_rtx (<ssepackmode>mode);
+   emit_insn (gen_vec_set<ssepackmodelower>_0 (dest,
+ 					      CONST0_RTX (<ssepackmode>mode),
+ 					      operands[1]));
+   emit_move_insn (operands[0],
+ 		  lowpart_subreg (<MODE>mode, dest, <ssepackmode>mode));
+   DONE;
+ })
+ 
+ (define_insn_and_split "*vec_setv2di_0_zero_extendsi_1"
+   [(set (match_operand:V2DI 0 "register_operand")
+ 	(vec_concat:V2DI
+ 	  (zero_extend:DI
+ 	    (match_operand:SI 1 "nonimmediate_operand"))
+ 	  (const_int 0)))]
+   "TARGET_SSE2 && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   rtx dest = gen_reg_rtx (V4SImode);
+   emit_insn (gen_vec_setv4si_0 (dest, CONST0_RTX (V4SImode), operands[1]));
+   emit_move_insn (operands[0],
+ 		  lowpart_subreg (V2DImode, dest, V4SImode));
+   DONE;
+ })
+ 
  (define_insn "sse4_1_insertps"
    [(set (match_operand:V4SF 0 "register_operand" "=Yr,*x,v")
  	(unspec:V4SF [(match_operand:V4SF 2 "nonimmediate_operand" "Yrm,*xm,vm")
  		      (match_operand:V4SF 1 "register_operand" "0,0,v")
! 		      (match_operand:SI 3 "const_0_to_255_operand")]
  		     UNSPEC_INSERTPS))]
    "TARGET_SSE4_1"
  {
***************
*** 10827,10835 ****
    DONE;
  })
  
! (define_expand "vec_setv8hf"
!   [(match_operand:V8HF 0 "register_operand")
!    (match_operand:HF 1 "register_operand")
     (match_operand 2 "vec_setm_sse41_operand")]
    "TARGET_SSE"
  {
--- 11037,11045 ----
    DONE;
  })
  
! (define_expand "vec_set<mode>"
!   [(match_operand:V8BFH_128 0 "register_operand")
!    (match_operand:<ssescalarmode> 1 "register_operand")
     (match_operand 2 "vec_setm_sse41_operand")]
    "TARGET_SSE"
  {
***************
*** 10870,10876 ****
    [(set (match_operand:SF 0 "nonimmediate_operand" "=rm,rm,rm,Yv,Yv")
  	(vec_select:SF
  	  (match_operand:V4SF 1 "register_operand" "Yr,*x,v,0,v")
! 	  (parallel [(match_operand:SI 2 "const_0_to_3_operand" "n,n,n,n,n")])))]
    "TARGET_SSE4_1"
    "@
     extractps\t{%2, %1, %0|%0, %1, %2}
--- 11080,11086 ----
    [(set (match_operand:SF 0 "nonimmediate_operand" "=rm,rm,rm,Yv,Yv")
  	(vec_select:SF
  	  (match_operand:V4SF 1 "register_operand" "Yr,*x,v,0,v")
! 	  (parallel [(match_operand:SI 2 "const_0_to_3_operand")])))]
    "TARGET_SSE4_1"
    "@
     extractps\t{%2, %1, %0|%0, %1, %2}
***************
*** 10909,10918 ****
     (set_attr "mode" "V4SF,V4SF,V4SF,*,*")])
  
  (define_insn_and_split "*vec_extractv4sf_mem"
!   [(set (match_operand:SF 0 "register_operand" "=v,*r,f")
  	(vec_select:SF
  	  (match_operand:V4SF 1 "memory_operand" "o,o,o")
! 	  (parallel [(match_operand 2 "const_0_to_3_operand" "n,n,n")])))]
    "TARGET_SSE"
    "#"
    "&& reload_completed"
--- 11119,11128 ----
     (set_attr "mode" "V4SF,V4SF,V4SF,*,*")])
  
  (define_insn_and_split "*vec_extractv4sf_mem"
!   [(set (match_operand:SF 0 "register_operand" "=v,?r,f")
  	(vec_select:SF
  	  (match_operand:V4SF 1 "memory_operand" "o,o,o")
! 	  (parallel [(match_operand 2 "const_0_to_3_operand")])))]
    "TARGET_SSE"
    "#"
    "&& reload_completed"
***************
*** 11557,11563 ****
     (set_attr "length_immediate" "1")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn_and_split "vec_extract_lo_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=v,v,m")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V32_512 1 "nonimmediate_operand" "v,m,v")
--- 11767,11773 ----
     (set_attr "length_immediate" "1")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn_and_split "@vec_extract_lo_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=v,v,m")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V32_512 1 "nonimmediate_operand" "v,m,v")
***************
*** 11599,11605 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn "vec_extract_hi_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=vm")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V32_512 1 "register_operand" "v")
--- 11809,11815 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn "@vec_extract_hi_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=vm")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V32_512 1 "register_operand" "v")
***************
*** 11619,11625 ****
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn_and_split "vec_extract_lo_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=v,m")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V16_256 1 "nonimmediate_operand" "vm,v")
--- 11829,11835 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
! (define_insn_and_split "@vec_extract_lo_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=v,m")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V16_256 1 "nonimmediate_operand" "vm,v")
***************
*** 11633,11639 ****
    [(set (match_dup 0) (match_dup 1))]
    "operands[1] = gen_lowpart (<ssehalfvecmode>mode, operands[1]);")
  
! (define_insn "vec_extract_hi_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=xm,vm,vm")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V16_256 1 "register_operand" "x,v,v")
--- 11843,11849 ----
    [(set (match_dup 0) (match_dup 1))]
    "operands[1] = gen_lowpart (<ssehalfvecmode>mode, operands[1]);")
  
! (define_insn "@vec_extract_hi_<mode>"
    [(set (match_operand:<ssehalfvecmode> 0 "nonimmediate_operand" "=xm,vm,vm")
  	(vec_select:<ssehalfvecmode>
  	  (match_operand:V16_256 1 "register_operand" "x,v,v")
***************
*** 11775,11794 ****
  ;; NB: *vec_extract<mode>_0 must be placed before *vec_extracthf.
  ;; Otherwise, it will be ignored.
  (define_insn_and_split "*vec_extract<mode>_0"
!   [(set (match_operand:HF 0 "nonimmediate_operand" "=v,m,r")
! 	(vec_select:HF
! 	  (match_operand:VF_AVX512FP16 1 "nonimmediate_operand" "vm,v,m")
  	  (parallel [(const_int 0)])))]
!   "TARGET_AVX512FP16 && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "#"
    "&& reload_completed"
    [(set (match_dup 0) (match_dup 1))]
!   "operands[1] = gen_lowpart (HFmode, operands[1]);")
  
! (define_insn "*vec_extracthf"
!   [(set (match_operand:HF 0 "register_sse4nonimm_operand" "=*r,m,x,v")
! 	(vec_select:HF
! 	  (match_operand:V8HF 1 "register_operand" "v,v,0,v")
  	  (parallel
  	    [(match_operand:SI 2 "const_0_to_7_operand")])))]
    "TARGET_SSE2"
--- 11985,12004 ----
  ;; NB: *vec_extract<mode>_0 must be placed before *vec_extracthf.
  ;; Otherwise, it will be ignored.
  (define_insn_and_split "*vec_extract<mode>_0"
!   [(set (match_operand:<ssescalarmode> 0 "nonimmediate_operand" "=v,m,r")
! 	(vec_select:<ssescalarmode>
! 	  (match_operand:VF_AVX512HFBF16 1 "nonimmediate_operand" "vm,v,m")
  	  (parallel [(const_int 0)])))]
!   "TARGET_AVX512F && !(MEM_P (operands[0]) && MEM_P (operands[1]))"
    "#"
    "&& reload_completed"
    [(set (match_dup 0) (match_dup 1))]
!   "operands[1] = gen_lowpart (<ssescalarmode>mode, operands[1]);")
  
! (define_insn "*vec_extract<mode>"
!   [(set (match_operand:HFBF 0 "register_sse4nonimm_operand" "=?r,m,x,v")
! 	(vec_select:HFBF
! 	  (match_operand:<ssevecmode> 1 "register_operand" "v,v,0,v")
  	  (parallel
  	    [(match_operand:SI 2 "const_0_to_7_operand")])))]
    "TARGET_SSE2"
***************
*** 11823,11828 ****
--- 12033,12039 ----
     (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") V4SI
     (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") V2DI
     (V32HF "TARGET_AVX512BW") (V16HF "TARGET_AVX") V8HF
+    (V32BF "TARGET_AVX512BW") (V16BF "TARGET_AVX") V8BF
     (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
     (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") V2DF
     (V4TI "TARGET_AVX512F") (V2TI "TARGET_AVX")])
***************
*** 11948,12054 ****
  })
  
  (define_insn "*vec_interleave_highv2df"
!   [(set (match_operand:V2DF 0 "nonimmediate_operand"     "=x,v,v,x,v,m")
  	(vec_select:V2DF
  	  (vec_concat:V4DF
! 	    (match_operand:V2DF 1 "nonimmediate_operand" " 0,v,o,o,o,v")
! 	    (match_operand:V2DF 2 "nonimmediate_operand" " x,v,1,0,v,0"))
  	  (parallel [(const_int 1)
  		     (const_int 3)])))]
    "TARGET_SSE2 && ix86_vec_interleave_v2df_operator_ok (operands, 1)"
    "@
     unpckhpd\t{%2, %0|%0, %2}
     vunpckhpd\t{%2, %1, %0|%0, %1, %2}
-    %vmovddup\t{%H1, %0|%0, %H1}
     movlpd\t{%H1, %0|%0, %H1}
     vmovlpd\t{%H1, %2, %0|%0, %2, %H1}
     %vmovhpd\t{%1, %0|%q0, %1}"
!   [(set_attr "isa" "noavx,avx,sse3,noavx,avx,*")
!    (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
     (set (attr "prefix_data16")
!      (if_then_else (eq_attr "alternative" "3,5")
  		   (const_string "1")
  		   (const_string "*")))
!    (set_attr "prefix" "orig,maybe_evex,maybe_vex,orig,maybe_evex,maybe_vex")
!    (set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,V1DF")])
  
! (define_expand "avx512f_movddup512<mask_name>"
!   [(set (match_operand:V8DF 0 "register_operand")
  	(vec_select:V8DF
  	  (vec_concat:V16DF
! 	    (match_operand:V8DF 1 "nonimmediate_operand")
  	    (match_dup 1))
  	  (parallel [(const_int 0) (const_int 8)
  		     (const_int 2) (const_int 10)
  		     (const_int 4) (const_int 12)
  		     (const_int 6) (const_int 14)])))]
!   "TARGET_AVX512F")
! 
! (define_expand "avx512f_unpcklpd512<mask_name>"
!   [(set (match_operand:V8DF 0 "register_operand")
! 	(vec_select:V8DF
! 	  (vec_concat:V16DF
! 	    (match_operand:V8DF 1 "register_operand")
! 	    (match_operand:V8DF 2 "nonimmediate_operand"))
! 	  (parallel [(const_int 0) (const_int 8)
! 		     (const_int 2) (const_int 10)
! 		     (const_int 4) (const_int 12)
! 		     (const_int 6) (const_int 14)])))]
!   "TARGET_AVX512F")
  
! (define_insn "*avx512f_unpcklpd512<mask_name>"
!   [(set (match_operand:V8DF 0 "register_operand" "=v,v")
  	(vec_select:V8DF
  	  (vec_concat:V16DF
! 	    (match_operand:V8DF 1 "nonimmediate_operand" "vm, v")
! 	    (match_operand:V8DF 2 "nonimmediate_operand" "1 ,vm"))
  	  (parallel [(const_int 0) (const_int 8)
  		     (const_int 2) (const_int 10)
  		     (const_int 4) (const_int 12)
  		     (const_int 6) (const_int 14)])))]
    "TARGET_AVX512F"
!   "@
!    vmovddup\t{%1, %0<mask_operand3>|%0<mask_operand3>, %1}
!    vunpcklpd\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sselog")
     (set_attr "prefix" "evex")
     (set_attr "mode" "V8DF")])
  
  ;; Recall that the 256-bit unpck insns only shuffle within their lanes.
! (define_expand "avx_movddup256<mask_name>"
!   [(set (match_operand:V4DF 0 "register_operand")
  	(vec_select:V4DF
  	  (vec_concat:V8DF
! 	    (match_operand:V4DF 1 "nonimmediate_operand")
  	    (match_dup 1))
  	  (parallel [(const_int 0) (const_int 4)
  		     (const_int 2) (const_int 6)])))]
!   "TARGET_AVX && <mask_avx512vl_condition>")
! 
! (define_expand "avx_unpcklpd256<mask_name>"
!   [(set (match_operand:V4DF 0 "register_operand")
! 	(vec_select:V4DF
! 	  (vec_concat:V8DF
! 	    (match_operand:V4DF 1 "register_operand")
! 	    (match_operand:V4DF 2 "nonimmediate_operand"))
! 	  (parallel [(const_int 0) (const_int 4)
! 		     (const_int 2) (const_int 6)])))]
!   "TARGET_AVX && <mask_avx512vl_condition>")
  
! (define_insn "*avx_unpcklpd256<mask_name>"
!   [(set (match_operand:V4DF 0 "register_operand"         "=v,v")
  	(vec_select:V4DF
  	  (vec_concat:V8DF
! 	    (match_operand:V4DF 1 "nonimmediate_operand" " v,m")
! 	    (match_operand:V4DF 2 "nonimmediate_operand" "vm,1"))
  	  (parallel [(const_int 0) (const_int 4)
  		     (const_int 2) (const_int 6)])))]
    "TARGET_AVX && <mask_avx512vl_condition>"
!   "@
!    vunpcklpd\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}
!    vmovddup\t{%1, %0<mask_operand3>|%0<mask_operand3>, %1}"
    [(set_attr "type" "sselog")
!    (set_attr "prefix" "vex")
     (set_attr "mode" "V4DF")])
  
  (define_expand "vec_interleave_lowv4df"
--- 12159,12246 ----
  })
  
  (define_insn "*vec_interleave_highv2df"
!   [(set (match_operand:V2DF 0 "nonimmediate_operand"     "=x,v,x,v,m")
  	(vec_select:V2DF
  	  (vec_concat:V4DF
! 	    (match_operand:V2DF 1 "nonimmediate_operand" " 0,v,o,o,v")
! 	    (match_operand:V2DF 2 "nonimmediate_operand" " x,v,0,v,0"))
  	  (parallel [(const_int 1)
  		     (const_int 3)])))]
    "TARGET_SSE2 && ix86_vec_interleave_v2df_operator_ok (operands, 1)"
    "@
     unpckhpd\t{%2, %0|%0, %2}
     vunpckhpd\t{%2, %1, %0|%0, %1, %2}
     movlpd\t{%H1, %0|%0, %H1}
     vmovlpd\t{%H1, %2, %0|%0, %2, %H1}
     %vmovhpd\t{%1, %0|%q0, %1}"
!   [(set_attr "isa" "noavx,avx,noavx,avx,*")
!    (set_attr "type" "sselog,sselog,ssemov,ssemov,ssemov")
     (set (attr "prefix_data16")
!      (if_then_else (eq_attr "alternative" "2,4")
  		   (const_string "1")
  		   (const_string "*")))
!    (set_attr "prefix" "orig,maybe_evex,orig,maybe_evex,maybe_vex")
!    (set_attr "mode" "V2DF,V2DF,V1DF,V1DF,V1DF")])
  
! (define_insn "avx512f_movddup512<mask_name>"
!   [(set (match_operand:V8DF 0 "register_operand" "=v")
  	(vec_select:V8DF
  	  (vec_concat:V16DF
! 	    (match_operand:V8DF 1 "nonimmediate_operand" "m")
  	    (match_dup 1))
  	  (parallel [(const_int 0) (const_int 8)
  		     (const_int 2) (const_int 10)
  		     (const_int 4) (const_int 12)
  		     (const_int 6) (const_int 14)])))]
!   "TARGET_AVX512F"
!   "vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
!   [(set_attr "type" "sselog1")
!    (set_attr "prefix" "evex")
!    (set_attr "mode" "V8DF")])
  
! (define_insn "avx512f_unpcklpd512<mask_name>"
!   [(set (match_operand:V8DF 0 "register_operand" "=v")
  	(vec_select:V8DF
  	  (vec_concat:V16DF
! 	    (match_operand:V8DF 1 "register_operand" "v")
! 	    (match_operand:V8DF 2 "nonimmediate_operand" "vm"))
  	  (parallel [(const_int 0) (const_int 8)
  		     (const_int 2) (const_int 10)
  		     (const_int 4) (const_int 12)
  		     (const_int 6) (const_int 14)])))]
    "TARGET_AVX512F"
!   "vunpcklpd\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sselog")
     (set_attr "prefix" "evex")
     (set_attr "mode" "V8DF")])
  
  ;; Recall that the 256-bit unpck insns only shuffle within their lanes.
! (define_insn "avx_movddup256<mask_name>"
!   [(set (match_operand:V4DF 0 "register_operand" "=v")
  	(vec_select:V4DF
  	  (vec_concat:V8DF
! 	    (match_operand:V4DF 1 "nonimmediate_operand" "m")
  	    (match_dup 1))
  	  (parallel [(const_int 0) (const_int 4)
  		     (const_int 2) (const_int 6)])))]
!   "TARGET_AVX && <mask_avx512vl_condition>"
!   "vmovddup\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
!   [(set_attr "type" "sselog1")
!    (set_attr "prefix" "<mask_prefix>")
!    (set_attr "mode" "V4DF")])
  
! (define_insn "avx_unpcklpd256<mask_name>"
!   [(set (match_operand:V4DF 0 "register_operand"         "=v")
  	(vec_select:V4DF
  	  (vec_concat:V8DF
! 	    (match_operand:V4DF 1 "register_operand" " v")
! 	    (match_operand:V4DF 2 "nonimmediate_operand" "vm"))
  	  (parallel [(const_int 0) (const_int 4)
  		     (const_int 2) (const_int 6)])))]
    "TARGET_AVX && <mask_avx512vl_condition>"
!   "vunpcklpd\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "sselog")
!    (set_attr "prefix" "<mask_prefix>")
     (set_attr "mode" "V4DF")])
  
  (define_expand "vec_interleave_lowv4df"
***************
*** 12110,12138 ****
  })
  
  (define_insn "*vec_interleave_lowv2df"
!   [(set (match_operand:V2DF 0 "nonimmediate_operand"     "=x,v,v,x,v,o")
  	(vec_select:V2DF
  	  (vec_concat:V4DF
! 	    (match_operand:V2DF 1 "nonimmediate_operand" " 0,v,m,0,v,0")
! 	    (match_operand:V2DF 2 "nonimmediate_operand" " x,v,1,m,m,v"))
  	  (parallel [(const_int 0)
  		     (const_int 2)])))]
    "TARGET_SSE2 && ix86_vec_interleave_v2df_operator_ok (operands, 0)"
    "@
     unpcklpd\t{%2, %0|%0, %2}
     vunpcklpd\t{%2, %1, %0|%0, %1, %2}
-    %vmovddup\t{%1, %0|%0, %q1}
     movhpd\t{%2, %0|%0, %q2}
     vmovhpd\t{%2, %1, %0|%0, %1, %q2}
     %vmovlpd\t{%2, %H0|%H0, %2}"
!   [(set_attr "isa" "noavx,avx,sse3,noavx,avx,*")
!    (set_attr "type" "sselog,sselog,sselog,ssemov,ssemov,ssemov")
     (set (attr "prefix_data16")
!      (if_then_else (eq_attr "alternative" "3,5")
  		   (const_string "1")
  		   (const_string "*")))
!    (set_attr "prefix" "orig,maybe_evex,maybe_vex,orig,maybe_evex,maybe_vex")
!    (set_attr "mode" "V2DF,V2DF,DF,V1DF,V1DF,V1DF")])
  
  (define_split
    [(set (match_operand:V2DF 0 "memory_operand")
--- 12302,12329 ----
  })
  
  (define_insn "*vec_interleave_lowv2df"
!   [(set (match_operand:V2DF 0 "nonimmediate_operand"     "=x,v,x,v,o")
  	(vec_select:V2DF
  	  (vec_concat:V4DF
! 	    (match_operand:V2DF 1 "nonimmediate_operand" " 0,v,0,v,0")
! 	    (match_operand:V2DF 2 "nonimmediate_operand" " x,v,m,m,v"))
  	  (parallel [(const_int 0)
  		     (const_int 2)])))]
    "TARGET_SSE2 && ix86_vec_interleave_v2df_operator_ok (operands, 0)"
    "@
     unpcklpd\t{%2, %0|%0, %2}
     vunpcklpd\t{%2, %1, %0|%0, %1, %2}
     movhpd\t{%2, %0|%0, %q2}
     vmovhpd\t{%2, %1, %0|%0, %1, %q2}
     %vmovlpd\t{%2, %H0|%H0, %2}"
!   [(set_attr "isa" "noavx,avx,noavx,avx,*")
!    (set_attr "type" "sselog,sselog,ssemov,ssemov,ssemov")
     (set (attr "prefix_data16")
!      (if_then_else (eq_attr "alternative" "2,4")
  		   (const_string "1")
  		   (const_string "*")))
!    (set_attr "prefix" "orig,maybe_evex,orig,maybe_evex,maybe_vex")
!    (set_attr "mode" "V2DF,V2DF,V1DF,V1DF,V1DF")])
  
  (define_split
    [(set (match_operand:V2DF 0 "memory_operand")
***************
*** 13281,13291 ****
    [(set (match_dup 0) (match_dup 1))]
    "operands[0] = adjust_address (operands[0], DFmode, 0);")
  
! (define_insn "sse2_movsd"
!   [(set (match_operand:V2DF 0 "nonimmediate_operand"   "=x,v,x,v,m,x,x,v,o")
! 	(vec_merge:V2DF
! 	  (match_operand:V2DF 2 "nonimmediate_operand" " x,v,m,m,v,0,0,v,0")
! 	  (match_operand:V2DF 1 "nonimmediate_operand" " 0,v,0,v,0,x,o,o,v")
  	  (const_int 1)))]
    "TARGET_SSE2"
    "@
--- 13472,13482 ----
    [(set (match_dup 0) (match_dup 1))]
    "operands[0] = adjust_address (operands[0], DFmode, 0);")
  
! (define_insn "sse2_movsd_<mode>"
!   [(set (match_operand:VI8F_128 0 "nonimmediate_operand"   "=x,v,x,v,m,x,x,v,o")
! 	(vec_merge:VI8F_128
! 	  (match_operand:VI8F_128 2 "nonimmediate_operand" " x,v,m,m,v,0,0,v,0")
! 	  (match_operand:VI8F_128 1 "nonimmediate_operand" " 0,v,0,v,0,x,o,o,v")
  	  (const_int 1)))]
    "TARGET_SSE2"
    "@
***************
*** 13338,13393 ****
     (set_attr "mode" "V2DF,DF,DF")])
  
  (define_insn "vec_concatv2df"
!   [(set (match_operand:V2DF 0 "register_operand"     "=x,x,v,x,v,x,x, v,x,x")
  	(vec_concat:V2DF
! 	  (match_operand:DF 1 "nonimmediate_operand" " 0,x,v,m,m,0,x,vm,0,0")
! 	  (match_operand:DF 2 "nonimm_or_0_operand"  " x,x,v,1,1,m,m, C,x,m")))]
!   "TARGET_SSE
!    && (!(MEM_P (operands[1]) && MEM_P (operands[2]))
!        || (TARGET_SSE3 && rtx_equal_p (operands[1], operands[2])))"
    "@
     unpcklpd\t{%2, %0|%0, %2}
     vunpcklpd\t{%2, %1, %0|%0, %1, %2}
     vunpcklpd\t{%2, %1, %0|%0, %1, %2}
-    %vmovddup\t{%1, %0|%0, %1}
-    vmovddup\t{%1, %0|%0, %1}
     movhpd\t{%2, %0|%0, %2}
     vmovhpd\t{%2, %1, %0|%0, %1, %2}
     %vmovq\t{%1, %0|%0, %1}
     movlhps\t{%2, %0|%0, %2}
     movhps\t{%2, %0|%0, %2}"
    [(set (attr "isa")
!      (cond [(eq_attr "alternative" "0,5")
  	      (const_string "sse2_noavx")
! 	    (eq_attr "alternative" "1,6")
  	      (const_string "avx")
! 	    (eq_attr "alternative" "2,4")
  	      (const_string "avx512vl")
! 	    (eq_attr "alternative" "3")
! 	      (const_string "sse3")
! 	    (eq_attr "alternative" "7")
  	      (const_string "sse2")
  	   ]
  	   (const_string "noavx")))
     (set (attr "type")
       (if_then_else
!        (eq_attr "alternative" "0,1,2,3,4")
         (const_string "sselog")
         (const_string "ssemov")))
     (set (attr "prefix_data16")
! 	(if_then_else (eq_attr "alternative" "5")
  		      (const_string "1")
  		      (const_string "*")))
     (set (attr "prefix")
!      (cond [(eq_attr "alternative" "1,6")
  	      (const_string "vex")
! 	    (eq_attr "alternative" "2,4")
  	      (const_string "evex")
! 	    (eq_attr "alternative" "3,7")
  	      (const_string "maybe_vex")
  	   ]
  	   (const_string "orig")))
!    (set_attr "mode" "V2DF,V2DF,V2DF, DF, DF, V1DF,V1DF,DF,V4SF,V2SF")])
  
  ;; vmovq clears also the higher bits.
  (define_insn "vec_set<mode>_0"
--- 13529,13578 ----
     (set_attr "mode" "V2DF,DF,DF")])
  
  (define_insn "vec_concatv2df"
!   [(set (match_operand:V2DF 0 "register_operand"     "=x,x,v,x,x, v,x,x")
  	(vec_concat:V2DF
! 	  (match_operand:DF 1 "nonimmediate_operand" " 0,x,v,0,x,vm,0,0")
! 	  (match_operand:DF 2 "nonimm_or_0_operand"  " x,x,v,m,m, C,x,m")))]
!   "TARGET_SSE && !(MEM_P (operands[1]) && MEM_P (operands[2]))"
    "@
     unpcklpd\t{%2, %0|%0, %2}
     vunpcklpd\t{%2, %1, %0|%0, %1, %2}
     vunpcklpd\t{%2, %1, %0|%0, %1, %2}
     movhpd\t{%2, %0|%0, %2}
     vmovhpd\t{%2, %1, %0|%0, %1, %2}
     %vmovq\t{%1, %0|%0, %1}
     movlhps\t{%2, %0|%0, %2}
     movhps\t{%2, %0|%0, %2}"
    [(set (attr "isa")
!      (cond [(eq_attr "alternative" "0,3")
  	      (const_string "sse2_noavx")
! 	    (eq_attr "alternative" "1,4")
  	      (const_string "avx")
! 	    (eq_attr "alternative" "2")
  	      (const_string "avx512vl")
! 	    (eq_attr "alternative" "5")
  	      (const_string "sse2")
  	   ]
  	   (const_string "noavx")))
     (set (attr "type")
       (if_then_else
!        (eq_attr "alternative" "0,1,2")
         (const_string "sselog")
         (const_string "ssemov")))
     (set (attr "prefix_data16")
! 	(if_then_else (eq_attr "alternative" "3")
  		      (const_string "1")
  		      (const_string "*")))
     (set (attr "prefix")
!      (cond [(eq_attr "alternative" "1,4")
  	      (const_string "vex")
! 	    (eq_attr "alternative" "2")
  	      (const_string "evex")
! 	    (eq_attr "alternative" "5")
  	      (const_string "maybe_vex")
  	   ]
  	   (const_string "orig")))
!    (set_attr "mode" "V2DF,V2DF,V2DF,V1DF,V1DF,DF,V4SF,V2SF")])
  
  ;; vmovq clears also the higher bits.
  (define_insn "vec_set<mode>_0"
***************
*** 13395,13401 ****
  	(vec_merge:VF2_512_256
  	  (vec_duplicate:VF2_512_256
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "vm"))
! 	  (match_operand:VF2_512_256 1 "const0_operand" "C")
  	  (const_int 1)))]
    "TARGET_AVX"
    "vmovq\t{%2, %x0|%x0, %2}"
--- 13580,13586 ----
  	(vec_merge:VF2_512_256
  	  (vec_duplicate:VF2_512_256
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "vm"))
! 	  (match_operand:VF2_512_256 1 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX"
    "vmovq\t{%2, %x0|%x0, %2}"
***************
*** 14260,14267 ****
    "TARGET_AVX512VL"
  {
    if (GET_MODE_SIZE (GET_MODE_INNER (<MODE>mode)) == 4)
!     return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %t1}";
!   return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %g1}";
  }
    [(set_attr "type" "ssemov")
     (set_attr "memory" "store")
--- 14445,14452 ----
    "TARGET_AVX512VL"
  {
    if (GET_MODE_SIZE (GET_MODE_INNER (<MODE>mode)) == 4)
!     return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
!   return "vpmov<trunsuffix><pmov_suff_4>\t{%1, %0%{%2%}|%0%{%2%}, %1}";
  }
    [(set_attr "type" "ssemov")
     (set_attr "memory" "store")
***************
*** 14360,14366 ****
  	  (match_dup 0)
  	  (match_operand:QI 2 "register_operand" "Yk")))]
    "TARGET_AVX512VL"
!   "vpmov<trunsuffix>qw\t{%1, %0%{%2%}|%0%{%2%}, %g1}"
    [(set_attr "type" "ssemov")
     (set_attr "memory" "store")
     (set_attr "prefix" "evex")
--- 14545,14551 ----
  	  (match_dup 0)
  	  (match_operand:QI 2 "register_operand" "Yk")))]
    "TARGET_AVX512VL"
!   "vpmov<trunsuffix>qw\t{%1, %0%{%2%}|%0%{%2%}, %1}"
    [(set_attr "type" "ssemov")
     (set_attr "memory" "store")
     (set_attr "prefix" "evex")
***************
*** 15697,15704 ****
  	      sel[7] = 15;
  	    }
  	  vec_perm_indices indices (sel, 2, 8);
! 	  bool ok = targetm.vectorize.vec_perm_const (V8SImode, target,
! 						      arg0, arg1, indices);
  	  gcc_assert (ok);
  	  emit_move_insn (operands[0],
  			  lowpart_subreg (V4DImode, target, V8SImode));
--- 15882,15890 ----
  	      sel[7] = 15;
  	    }
  	  vec_perm_indices indices (sel, 2, 8);
! 	  bool ok = targetm.vectorize.vec_perm_const (V8SImode, V8SImode,
! 						      target, arg0, arg1,
! 						      indices);
  	  gcc_assert (ok);
  	  emit_move_insn (operands[0],
  			  lowpart_subreg (V4DImode, target, V8SImode));
***************
*** 15825,15834 ****
  
  (define_expand "ashlv1ti3"
    [(set (match_operand:V1TI 0 "register_operand")
  	(ashift:V1TI
  	 (match_operand:V1TI 1 "register_operand")
! 	 (match_operand:QI 2 "general_operand")))]
!   "TARGET_SSE2 && TARGET_64BIT"
  {
    ix86_expand_v1ti_shift (ASHIFT, operands);
    DONE;
--- 16011,16038 ----
  
  (define_expand "ashlv1ti3"
    [(set (match_operand:V1TI 0 "register_operand")
+         (ashift:V1TI
+          (match_operand:V1TI 1 "register_operand")
+          (match_operand:QI 2 "general_operand")))]
+   "TARGET_SSE2 && TARGET_64BIT"
+ {
+   if (!CONST_INT_P (operands[2]))
+     {
+       ix86_expand_v1ti_shift (ASHIFT, operands);
+       DONE;
+     }
+ })
+ 
+ (define_insn_and_split "*ashlv1ti3_internal"
+   [(set (match_operand:V1TI 0 "register_operand")
  	(ashift:V1TI
  	 (match_operand:V1TI 1 "register_operand")
! 	 (match_operand:SI 2 "const_0_to_255_not_mul_8_operand")))]
!   "TARGET_SSE2 && TARGET_64BIT
!    && ix86_pre_reload_split ()"
!   "#"
!   "&& 1"
!   [(const_int 0)]
  {
    ix86_expand_v1ti_shift (ASHIFT, operands);
    DONE;
***************
*** 15841,15846 ****
--- 16045,16068 ----
  	 (match_operand:QI 2 "general_operand")))]
    "TARGET_SSE2 && TARGET_64BIT"
  {
+   if (!CONST_INT_P (operands[2]))
+     {
+       ix86_expand_v1ti_shift (LSHIFTRT, operands);
+       DONE;
+     }
+ })
+ 
+ (define_insn_and_split "*lshrv1ti3_internal"
+   [(set (match_operand:V1TI 0 "register_operand")
+ 	(lshiftrt:V1TI
+ 	 (match_operand:V1TI 1 "register_operand")
+ 	 (match_operand:SI 2 "const_0_to_255_not_mul_8_operand")))]
+   "TARGET_SSE2 && TARGET_64BIT
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
    ix86_expand_v1ti_shift (LSHIFTRT, operands);
    DONE;
  })
***************
*** 15852,15857 ****
--- 16074,16098 ----
  	 (match_operand:QI 2 "general_operand")))]
    "TARGET_SSE2 && TARGET_64BIT"
  {
+   if (!CONST_INT_P (operands[2]))
+     {
+       ix86_expand_v1ti_ashiftrt (operands);
+       DONE;
+     }
+ })
+ 
+ 
+ (define_insn_and_split "*ashrv1ti3_internal"
+   [(set (match_operand:V1TI 0 "register_operand")
+ 	(ashiftrt:V1TI
+ 	 (match_operand:V1TI 1 "register_operand")
+ 	 (match_operand:SI 2 "const_0_to_255_operand")))]
+   "TARGET_SSE2 && TARGET_64BIT
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
    ix86_expand_v1ti_ashiftrt (operands);
    DONE;
  })
***************
*** 15863,15868 ****
--- 16104,16127 ----
  	 (match_operand:QI 2 "general_operand")))]
    "TARGET_SSE2 && TARGET_64BIT"
  {
+   if (!CONST_INT_P (operands[2]))
+     {
+       ix86_expand_v1ti_rotate (ROTATE, operands);
+       DONE;
+     }
+ })
+ 
+ (define_insn_and_split "*rotlv1ti3_internal"
+   [(set (match_operand:V1TI 0 "register_operand")
+ 	(rotate:V1TI
+ 	 (match_operand:V1TI 1 "register_operand")
+ 	 (match_operand:SI 2 "const_0_to_255_operand")))]
+   "TARGET_SSE2 && TARGET_64BIT
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
    ix86_expand_v1ti_rotate (ROTATE, operands);
    DONE;
  })
***************
*** 15874,15879 ****
--- 16133,16156 ----
  	 (match_operand:QI 2 "general_operand")))]
    "TARGET_SSE2 && TARGET_64BIT"
  {
+   if (!CONST_INT_P (operands[2]))
+     {
+       ix86_expand_v1ti_rotate (ROTATERT, operands);
+       DONE;
+     }
+ })
+ 
+ (define_insn_and_split "*rotrv1ti3_internal"
+   [(set (match_operand:V1TI 0 "register_operand")
+ 	(rotatert:V1TI
+ 	 (match_operand:V1TI 1 "register_operand")
+ 	 (match_operand:SI 2 "const_0_to_255_operand")))]
+   "TARGET_SSE2 && TARGET_64BIT
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
    ix86_expand_v1ti_rotate (ROTATERT, operands);
    DONE;
  })
***************
*** 15882,15888 ****
    [(set (match_operand:VIMAX_AVX512VL 0 "register_operand" "=v")
  	(any_lshift:VIMAX_AVX512VL
  	 (match_operand:VIMAX_AVX512VL 1 "nonimmediate_operand" "vm")
! 	 (match_operand:SI 2 "const_0_to_255_mul_8_operand" "n")))]
    "TARGET_AVX512BW"
  {
    operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
--- 16159,16165 ----
    [(set (match_operand:VIMAX_AVX512VL 0 "register_operand" "=v")
  	(any_lshift:VIMAX_AVX512VL
  	 (match_operand:VIMAX_AVX512VL 1 "nonimmediate_operand" "vm")
! 	 (match_operand:SI 2 "const_0_to_255_mul_8_operand")))]
    "TARGET_AVX512BW"
  {
    operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
***************
*** 15897,15903 ****
    [(set (match_operand:VIMAX_AVX2 0 "register_operand" "=x,Yw")
  	(any_lshift:VIMAX_AVX2
  	 (match_operand:VIMAX_AVX2 1 "register_operand" "0,Yw")
! 	 (match_operand:SI 2 "const_0_to_255_mul_8_operand" "n,n")))]
    "TARGET_SSE2"
  {
    operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
--- 16174,16180 ----
    [(set (match_operand:VIMAX_AVX2 0 "register_operand" "=x,Yw")
  	(any_lshift:VIMAX_AVX2
  	 (match_operand:VIMAX_AVX2 1 "register_operand" "0,Yw")
! 	 (match_operand:SI 2 "const_0_to_255_mul_8_operand")))]
    "TARGET_SSE2"
  {
    operands[2] = GEN_INT (INTVAL (operands[2]) / 8);
***************
*** 17252,17272 ****
  })
  
  (define_expand "vec_pack_trunc_qi"
!   [(set (match_operand:HI 0 "register_operand")
! 	(ior:HI (ashift:HI (zero_extend:HI (match_operand:QI 2 "register_operand"))
!                            (const_int 8))
! 		(zero_extend:HI (match_operand:QI 1 "register_operand"))))]
    "TARGET_AVX512F")
  
  (define_expand "vec_pack_trunc_<mode>"
!   [(set (match_operand:<DOUBLEMASKMODE> 0 "register_operand")
! 	(ior:<DOUBLEMASKMODE>
! 	  (ashift:<DOUBLEMASKMODE>
  	    (zero_extend:<DOUBLEMASKMODE>
! 	      (match_operand:SWI24 2 "register_operand"))
! 	    (match_dup 3))
! 	  (zero_extend:<DOUBLEMASKMODE>
! 	    (match_operand:SWI24 1 "register_operand"))))]
    "TARGET_AVX512BW"
  {
    operands[3] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
--- 17529,17554 ----
  })
  
  (define_expand "vec_pack_trunc_qi"
!   [(parallel
!     [(set (match_operand:HI 0 "register_operand")
! 	(ior:HI
! 	   (ashift:HI (zero_extend:HI (match_operand:QI 2 "register_operand"))
! 		      (const_int 8))
! 	   (zero_extend:HI (match_operand:QI 1 "register_operand"))))
!      (unspec [(const_int 0)] UNSPEC_MASKOP)])]
    "TARGET_AVX512F")
  
  (define_expand "vec_pack_trunc_<mode>"
!   [(parallel
!     [(set (match_operand:<DOUBLEMASKMODE> 0 "register_operand")
! 	  (ior:<DOUBLEMASKMODE>
! 	    (ashift:<DOUBLEMASKMODE>
! 	      (zero_extend:<DOUBLEMASKMODE>
! 	        (match_operand:SWI24 2 "register_operand"))
! 	      (match_dup 3))
  	    (zero_extend:<DOUBLEMASKMODE>
! 	      (match_operand:SWI24 1 "register_operand"))))
!      (unspec [(const_int 0)] UNSPEC_MASKOP)])]
    "TARGET_AVX512BW"
  {
    operands[3] = GEN_INT (GET_MODE_BITSIZE (<MODE>mode));
***************
*** 17596,17602 ****
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn "vec_interleave_high<mode><mask_name>"
    [(set (match_operand:V8_128 0 "register_operand" "=x,Yw")
  	(vec_select:V8_128
  	  (vec_concat:<ssedoublevecmode>
--- 17878,17884 ----
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn "@vec_interleave_high<mode><mask_name>"
    [(set (match_operand:V8_128 0 "register_operand" "=x,Yw")
  	(vec_select:V8_128
  	  (vec_concat:<ssedoublevecmode>
***************
*** 17664,17670 ****
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn "vec_interleave_low<mode><mask_name>"
    [(set (match_operand:V8_128 0 "register_operand" "=x,Yw")
  	(vec_select:V8_128
  	  (vec_concat:<ssedoublevecmode>
--- 17946,17952 ----
     (set_attr "prefix" "maybe_evex")
     (set_attr "mode" "OI")])
  
! (define_insn "@vec_interleave_low<mode><mask_name>"
    [(set (match_operand:V8_128 0 "register_operand" "=x,Yw")
  	(vec_select:V8_128
  	  (vec_concat:<ssedoublevecmode>
***************
*** 17831,17847 ****
  
  ;; Modes handled by pinsr patterns.
  (define_mode_iterator PINSR_MODE
!   [(V16QI "TARGET_SSE4_1") V8HI V8HF
     (V4SI "TARGET_SSE4_1")
     (V2DI "TARGET_SSE4_1 && TARGET_64BIT")])
  
  (define_mode_attr sse2p4_1
    [(V16QI "sse4_1") (V8HI "sse2") (V8HF "sse2")
!    (V4SI "sse4_1") (V2DI "sse4_1")])
  
  (define_mode_attr pinsr_evex_isa
    [(V16QI "avx512bw") (V8HI "avx512bw") (V8HF "avx512bw")
!    (V4SI "avx512dq") (V2DI "avx512dq")])
  
  ;; sse4_1_pinsrd must come before sse2_loadld since it is preferred.
  (define_insn "<sse2p4_1>_pinsr<ssemodesuffix>"
--- 18113,18129 ----
  
  ;; Modes handled by pinsr patterns.
  (define_mode_iterator PINSR_MODE
!   [(V16QI "TARGET_SSE4_1") V8HI V8HF V8BF
     (V4SI "TARGET_SSE4_1")
     (V2DI "TARGET_SSE4_1 && TARGET_64BIT")])
  
  (define_mode_attr sse2p4_1
    [(V16QI "sse4_1") (V8HI "sse2") (V8HF "sse2")
!    (V8BF "sse2") (V4SI "sse4_1") (V2DI "sse4_1")])
  
  (define_mode_attr pinsr_evex_isa
    [(V16QI "avx512bw") (V8HI "avx512bw") (V8HF "avx512bw")
!    (V8BF "avx512bw") (V4SI "avx512dq") (V2DI "avx512dq")])
  
  ;; sse4_1_pinsrd must come before sse2_loadld since it is preferred.
  (define_insn "<sse2p4_1>_pinsr<ssemodesuffix>"
***************
*** 17956,17962 ****
  	  (match_operand:AVX512_VEC 1 "reg_or_0_operand" "v,C,C")
  	  (vec_duplicate:AVX512_VEC
  		(match_operand:<ssequartermode> 2 "nonimmediate_operand" "vm,xm,vm"))
! 	  (match_operand:SI 3 "const_int_operand" "n,n,n")))]
    "TARGET_AVX512F
     && (INTVAL (operands[3])
         == (GET_MODE_UNIT_SIZE (<MODE>mode) == 4 ? 0xFFF0 : 0xFC))"
--- 18238,18244 ----
  	  (match_operand:AVX512_VEC 1 "reg_or_0_operand" "v,C,C")
  	  (vec_duplicate:AVX512_VEC
  		(match_operand:<ssequartermode> 2 "nonimmediate_operand" "vm,xm,vm"))
! 	  (match_operand:SI 3 "const_int_operand")))]
    "TARGET_AVX512F
     && (INTVAL (operands[3])
         == (GET_MODE_UNIT_SIZE (<MODE>mode) == 4 ? 0xFFF0 : 0xFC))"
***************
*** 18004,18010 ****
  	  (match_operand:AVX512_VEC 1 "register_operand" "v")
  	  (vec_duplicate:AVX512_VEC
  		(match_operand:<ssequartermode> 2 "nonimmediate_operand" "vm"))
! 	  (match_operand:SI 3 "const_int_operand" "n")))]
    "TARGET_AVX512F"
  {
    int mask;
--- 18286,18292 ----
  	  (match_operand:AVX512_VEC 1 "register_operand" "v")
  	  (vec_duplicate:AVX512_VEC
  		(match_operand:<ssequartermode> 2 "nonimmediate_operand" "vm"))
! 	  (match_operand:SI 3 "const_int_operand")))]
    "TARGET_AVX512F"
  {
    int mask;
***************
*** 18672,18678 ****
    [(set (match_operand:V32HI 0 "register_operand" "=v")
  	(unspec:V32HI
  	  [(match_operand:V32HI 1 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 2 "const_0_to_255_operand" "n")]
  	  UNSPEC_PSHUFLW))]
    "TARGET_AVX512BW"
    "vpshuflw\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
--- 18954,18960 ----
    [(set (match_operand:V32HI 0 "register_operand" "=v")
  	(unspec:V32HI
  	  [(match_operand:V32HI 1 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 2 "const_0_to_255_operand")]
  	  UNSPEC_PSHUFLW))]
    "TARGET_AVX512BW"
    "vpshuflw\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
***************
*** 18848,18854 ****
    [(set (match_operand:V32HI 0 "register_operand" "=v")
  	(unspec:V32HI
  	  [(match_operand:V32HI 1 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 2 "const_0_to_255_operand" "n")]
  	  UNSPEC_PSHUFHW))]
    "TARGET_AVX512BW"
    "vpshufhw\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
--- 19130,19136 ----
    [(set (match_operand:V32HI 0 "register_operand" "=v")
  	(unspec:V32HI
  	  [(match_operand:V32HI 1 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 2 "const_0_to_255_operand")]
  	  UNSPEC_PSHUFHW))]
    "TARGET_AVX512BW"
    "vpshufhw\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
***************
*** 19020,19025 ****
--- 19302,19327 ----
  (define_mode_iterator PEXTR_MODE12
    [(V16QI "TARGET_SSE4_1") V8HI])
  
+ (define_insn_and_split "*vec_extract<mode>_0_mem"
+   [(set (match_operand:<ssescalarmode> 0 "memory_operand")
+ 	(vec_select:<ssescalarmode>
+ 	  (match_operand:PEXTR_MODE12 1 "register_operand")
+ 	  (parallel [(const_int 0)])))]
+   "TARGET_SSE2
+    && !TARGET_SSE4_1
+    && (TARGET_INTER_UNIT_MOVES_FROM_VEC
+        || optimize_function_for_speed_p (cfun))
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 2) (match_dup 3))
+    (set (match_dup 0) (match_dup 4))]
+ {
+   operands[2] = gen_reg_rtx (SImode);
+   operands[3] = gen_lowpart (SImode, force_reg (<MODE>mode, operands[1]));
+   operands[4] = gen_lowpart (<ssescalarmode>mode, operands[2]);
+ })
+ 
  (define_insn "*vec_extract<mode>"
    [(set (match_operand:<ssescalarmode> 0 "register_sse4nonimm_operand" "=r,m")
  	(vec_select:<ssescalarmode>
***************
*** 19485,19495 ****
     (set_attr "type" "sselog,ssemov,sselog,ssemov,mmxcvt,mmxmov")
     (set_attr "mode" "TI,TI,V4SF,SF,DI,DI")])
  
! (define_insn "*vec_concatv4si"
!   [(set (match_operand:V4SI 0 "register_operand"       "=x,v,x,x,v")
! 	(vec_concat:V4SI
! 	  (match_operand:V2SI 1 "register_operand"     " 0,v,0,0,v")
! 	  (match_operand:V2SI 2 "nonimmediate_operand" " x,v,x,m,m")))]
    "TARGET_SSE"
    "@
     punpcklqdq\t{%2, %0|%0, %2}
--- 19787,19797 ----
     (set_attr "type" "sselog,ssemov,sselog,ssemov,mmxcvt,mmxmov")
     (set_attr "mode" "TI,TI,V4SF,SF,DI,DI")])
  
! (define_insn "*vec_concat<mode>"
!   [(set (match_operand:VI124_128 0 "register_operand"       "=x,v,x,x,v")
! 	(vec_concat:VI124_128
! 	  (match_operand:<ssehalfvecmode> 1 "register_operand"     " 0,v,0,0,v")
! 	  (match_operand:<ssehalfvecmode> 2 "nonimmediate_operand" " x,v,x,m,m")))]
    "TARGET_SSE"
    "@
     punpcklqdq\t{%2, %0|%0, %2}
***************
*** 19502,19512 ****
     (set_attr "prefix" "orig,maybe_evex,orig,orig,maybe_evex")
     (set_attr "mode" "TI,TI,V4SF,V2SF,V2SF")])
  
  (define_insn "*vec_concat<mode>_0"
    [(set (match_operand:VI124_128 0 "register_operand"       "=v,x")
  	(vec_concat:VI124_128
  	  (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm,?!*y")
! 	  (match_operand:<ssehalfvecmode> 2 "const0_operand"       " C,C")))]
    "TARGET_SSE2"
    "@
     %vmovq\t{%1, %0|%0, %1}
--- 19804,19868 ----
     (set_attr "prefix" "orig,maybe_evex,orig,orig,maybe_evex")
     (set_attr "mode" "TI,TI,V4SF,V2SF,V2SF")])
  
+ (define_insn_and_split "*vec_concatv16qi_permt2"
+   [(set (match_operand:V16QI 0 "register_operand")
+ 	(unspec:V16QI
+ 	  [(const_vector:V16QI [(const_int 0) (const_int 1)
+ 				(const_int 2) (const_int 3)
+ 				(const_int 4) (const_int 5)
+ 				(const_int 6) (const_int 7)
+ 				(const_int 16) (const_int 17)
+ 				(const_int 18) (const_int 19)
+ 				(const_int 20) (const_int 21)
+ 				(const_int 22) (const_int 23)])
+ 	   (match_operand:V16QI 1 "register_operand")
+ 	   (match_operand:V16QI 2 "nonimmediate_operand")]
+ 	  UNSPEC_VPERMT2))]
+   "TARGET_AVX512VL && TARGET_AVX512VBMI
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_concat:V16QI (match_dup 1) (match_dup 2)))]
+ {
+   operands[1] = lowpart_subreg (V8QImode,
+ 				force_reg (V16QImode, operands[1]),
+ 				V16QImode);
+   if (!MEM_P (operands[2]))
+     operands[2] = force_reg (V16QImode, operands[2]);
+   operands[2] = lowpart_subreg (V8QImode, operands[2], V16QImode);
+ })
+ 
+ (define_insn_and_split "*vec_concatv8hi_permt2"
+   [(set (match_operand:V8HI 0 "register_operand")
+ 	(unspec:V8HI
+ 	  [(const_vector:V8HI [(const_int 0) (const_int 1)
+ 				(const_int 2) (const_int 3)
+ 				(const_int 8) (const_int 9)
+ 				(const_int 10) (const_int 11)])
+ 	   (match_operand:V8HI 1 "register_operand")
+ 	   (match_operand:V8HI 2 "nonimmediate_operand")]
+ 	  UNSPEC_VPERMT2))]
+   "TARGET_AVX512VL && TARGET_AVX512BW
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (match_dup 0)
+ 	(vec_concat:V8HI (match_dup 1) (match_dup 2)))]
+ {
+   operands[1] = lowpart_subreg (V4HImode,
+ 				force_reg (V8HImode, operands[1]),
+ 				V8HImode);
+   if (!MEM_P (operands[2]))
+     operands[2] = force_reg (V8HImode, operands[2]);
+   operands[2] = lowpart_subreg (V4HImode, operands[2], V8HImode);
+ })
+ 
  (define_insn "*vec_concat<mode>_0"
    [(set (match_operand:VI124_128 0 "register_operand"       "=v,x")
  	(vec_concat:VI124_128
  	  (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm,?!*y")
! 	  (match_operand:<ssehalfvecmode> 2 "const0_operand")))]
    "TARGET_SSE2"
    "@
     %vmovq\t{%1, %0|%0, %1}
***************
*** 19580,19586 ****
    [(set (match_operand:V2DI 0 "register_operand"     "=v,v ,x")
  	(vec_concat:V2DI
  	  (match_operand:DI 1 "nonimmediate_operand" " r,vm,?!*y")
! 	  (match_operand:DI 2 "const0_operand"       " C,C ,C")))]
    "TARGET_SSE2"
    "@
     * return HAVE_AS_IX86_INTERUNIT_MOVQ ? \"%vmovq\t{%1, %0|%0, %1}\" : \"%vmovd\t{%1, %0|%0, %1}\";
--- 19936,19942 ----
    [(set (match_operand:V2DI 0 "register_operand"     "=v,v ,x")
  	(vec_concat:V2DI
  	  (match_operand:DI 1 "nonimmediate_operand" " r,vm,?!*y")
! 	  (match_operand:DI 2 "const0_operand")))]
    "TARGET_SSE2"
    "@
     * return HAVE_AS_IX86_INTERUNIT_MOVQ ? \"%vmovq\t{%1, %0|%0, %1}\" : \"%vmovd\t{%1, %0|%0, %1}\";
***************
*** 19604,19610 ****
  	(vec_merge:VI8_AVX_AVX512F
  	  (vec_duplicate:VI8_AVX_AVX512F
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "r,vm"))
! 	  (match_operand:VI8_AVX_AVX512F 1 "const0_operand" "C,C")
  	  (const_int 1)))]
    "TARGET_AVX"
    "vmovq\t{%2, %x0|%x0, %2}"
--- 19960,19966 ----
  	(vec_merge:VI8_AVX_AVX512F
  	  (vec_duplicate:VI8_AVX_AVX512F
  	    (match_operand:<ssescalarmode> 2 "nonimmediate_operand" "r,vm"))
! 	  (match_operand:VI8_AVX_AVX512F 1 "const0_operand")
  	  (const_int 1)))]
    "TARGET_AVX"
    "vmovq\t{%2, %x0|%x0, %2}"
***************
*** 19760,19772 ****
  
  ;; The correct representation for this is absolutely enormous, and
  ;; surely not generally useful.
! (define_insn "<sse2_avx2>_psadbw"
    [(set (match_operand:VI8_AVX2_AVX512BW 0 "register_operand" "=x,YW")
  	(unspec:VI8_AVX2_AVX512BW
! 	  [(match_operand:<ssebytemode> 1 "register_operand" "0,YW")
  	   (match_operand:<ssebytemode> 2 "vector_operand" "xBm,YWm")]
  	  UNSPEC_PSADBW))]
!   "TARGET_SSE2"
    "@
     psadbw\t{%2, %0|%0, %2}
     vpsadbw\t{%2, %1, %0|%0, %1, %2}"
--- 20116,20138 ----
  
  ;; The correct representation for this is absolutely enormous, and
  ;; surely not generally useful.
! (define_expand "<sse2_avx2>_psadbw"
!   [(set (match_operand:VI8_AVX2_AVX512BW 0 "register_operand")
! 	(unspec:VI8_AVX2_AVX512BW
! 	  [(match_operand:<ssebytemode> 1 "vector_operand")
! 	   (match_operand:<ssebytemode> 2 "vector_operand")]
! 	  UNSPEC_PSADBW))]
!   "TARGET_SSE2"
!   "ix86_fixup_binary_operands_no_copy (PLUS, <ssebytemode>mode, operands);")
! 
! (define_insn "*<sse2_avx2>_psadbw"
    [(set (match_operand:VI8_AVX2_AVX512BW 0 "register_operand" "=x,YW")
  	(unspec:VI8_AVX2_AVX512BW
! 	  [(match_operand:<ssebytemode> 1 "vector_operand" "%0,YW")
  	   (match_operand:<ssebytemode> 2 "vector_operand" "xBm,YWm")]
  	  UNSPEC_PSADBW))]
!   "TARGET_SSE2
!    && ix86_binary_operator_ok (PLUS, <ssebytemode>mode, operands)"
    "@
     psadbw\t{%2, %0|%0, %2}
     vpsadbw\t{%2, %1, %0|%0, %1, %2}"
***************
*** 19805,19811 ****
  	(unspec:SI
  	  [(lt:VF_128_256
  	     (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	     (match_operand:<sseintvecmode> 2 "const0_operand" "C"))]
  	  UNSPEC_MOVMSK))]
    "TARGET_SSE"
    "#"
--- 20171,20177 ----
  	(unspec:SI
  	  [(lt:VF_128_256
  	     (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	     (match_operand:<sseintvecmode> 2 "const0_operand"))]
  	  UNSPEC_MOVMSK))]
    "TARGET_SSE"
    "#"
***************
*** 19823,19829 ****
  	  (unspec:SI
  	    [(lt:VF_128_256
  	       (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	       (match_operand:<sseintvecmode> 2 "const0_operand" "C"))]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE"
    "#"
--- 20189,20195 ----
  	  (unspec:SI
  	    [(lt:VF_128_256
  	       (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	       (match_operand:<sseintvecmode> 2 "const0_operand"))]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE"
    "#"
***************
*** 19841,19847 ****
  	  [(subreg:VF_128_256
  	     (ashiftrt:<sseintvecmode>
  	       (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	       (match_operand:QI 2 "const_int_operand" "n")) 0)]
  	  UNSPEC_MOVMSK))]
    "TARGET_SSE"
    "#"
--- 20207,20213 ----
  	  [(subreg:VF_128_256
  	     (ashiftrt:<sseintvecmode>
  	       (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	       (match_operand:QI 2 "const_int_operand")) 0)]
  	  UNSPEC_MOVMSK))]
    "TARGET_SSE"
    "#"
***************
*** 19860,19866 ****
  	    [(subreg:VF_128_256
  	       (ashiftrt:<sseintvecmode>
  		 (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	       (match_operand:QI 2 "const_int_operand" "n")) 0)]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE"
    "#"
--- 20226,20232 ----
  	    [(subreg:VF_128_256
  	       (ashiftrt:<sseintvecmode>
  		 (match_operand:<sseintvecmode> 1 "register_operand" "x")
! 	       (match_operand:QI 2 "const_int_operand")) 0)]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE"
    "#"
***************
*** 20001,20007 ****
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(unspec:SI
  	  [(lt:VI1_AVX2 (match_operand:VI1_AVX2 1 "register_operand" "x")
! 			(match_operand:VI1_AVX2 2 "const0_operand" "C"))]
  	  UNSPEC_MOVMSK))]
    "TARGET_SSE2"
    "#"
--- 20367,20373 ----
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(unspec:SI
  	  [(lt:VI1_AVX2 (match_operand:VI1_AVX2 1 "register_operand" "x")
! 			(match_operand:VI1_AVX2 2 "const0_operand"))]
  	  UNSPEC_MOVMSK))]
    "TARGET_SSE2"
    "#"
***************
*** 20023,20029 ****
  	(zero_extend:DI
  	  (unspec:SI
  	    [(lt:VI1_AVX2 (match_operand:VI1_AVX2 1 "register_operand" "x")
! 			  (match_operand:VI1_AVX2 2 "const0_operand" "C"))]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE2"
    "#"
--- 20389,20395 ----
  	(zero_extend:DI
  	  (unspec:SI
  	    [(lt:VI1_AVX2 (match_operand:VI1_AVX2 1 "register_operand" "x")
! 			  (match_operand:VI1_AVX2 2 "const0_operand"))]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE2"
    "#"
***************
*** 20045,20051 ****
  	(sign_extend:DI
  	  (unspec:SI
  	    [(lt:V16QI (match_operand:V16QI 1 "register_operand" "x")
! 		       (match_operand:V16QI 2 "const0_operand" "C"))]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE2"
    "#"
--- 20411,20417 ----
  	(sign_extend:DI
  	  (unspec:SI
  	    [(lt:V16QI (match_operand:V16QI 1 "register_operand" "x")
! 		       (match_operand:V16QI 2 "const0_operand"))]
  	    UNSPEC_MOVMSK)))]
    "TARGET_64BIT && TARGET_SSE2"
    "#"
***************
*** 20062,20067 ****
--- 20428,20451 ----
     (set_attr "prefix" "maybe_vex")
     (set_attr "mode" "SI")])
  
+ ;; Optimize pxor/pcmpeqb/pmovmskb/cmp 0xffff to ptest.
+ (define_mode_attr vi1avx2const
+   [(V32QI "0xffffffff") (V16QI "0xffff")])
+ 
+ (define_split
+   [(set (reg:CCZ FLAGS_REG)
+ 	(compare:CCZ (unspec:SI
+ 			[(eq:VI1_AVX2
+ 			    (match_operand:VI1_AVX2 0 "vector_operand")
+ 			    (match_operand:VI1_AVX2 1 "const0_operand"))]
+ 		    UNSPEC_MOVMSK)
+ 		 (match_operand 2 "const_int_operand")))]
+   "TARGET_SSE4_1 && (INTVAL (operands[2]) == (int) (<vi1avx2const>))"
+   [(set (reg:CC FLAGS_REG)
+ 	(unspec:CC [(match_dup 0)
+ 		    (match_dup 0)]
+ 		   UNSPEC_PTEST))])
+ 
  (define_expand "sse2_maskmovdqu"
    [(set (match_operand:V16QI 0 "memory_operand")
  	(unspec:V16QI [(match_operand:V16QI 1 "register_operand")
***************
*** 20826,20832 ****
  	  (unspec:VI1_AVX512
  	    [(match_operand:VI1_AVX512 1 "register_operand" "v")
  	     (match_operand:VI1_AVX512 2 "nonimmediate_operand" "vm")
! 	     (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n")]
  	    UNSPEC_PALIGNR)
  	(match_operand:VI1_AVX512 4 "nonimm_or_0_operand" "0C")
  	(match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
--- 21210,21216 ----
  	  (unspec:VI1_AVX512
  	    [(match_operand:VI1_AVX512 1 "register_operand" "v")
  	     (match_operand:VI1_AVX512 2 "nonimmediate_operand" "vm")
! 	     (match_operand:SI 3 "const_0_to_255_mul_8_operand")]
  	    UNSPEC_PALIGNR)
  	(match_operand:VI1_AVX512 4 "nonimm_or_0_operand" "0C")
  	(match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
***************
*** 20843,20853 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<ssse3_avx2>_palignr<mode>"
!   [(set (match_operand:SSESCALARMODE 0 "register_operand" "=x,<v_Yw>")
! 	(unspec:SSESCALARMODE
! 	  [(match_operand:SSESCALARMODE 1 "register_operand" "0,<v_Yw>")
! 	   (match_operand:SSESCALARMODE 2 "vector_operand" "xBm,<v_Yw>m")
! 	   (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n,n")]
  	  UNSPEC_PALIGNR))]
    "TARGET_SSSE3"
  {
--- 21227,21237 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<ssse3_avx2>_palignr<mode>"
!   [(set (match_operand:VIMAX_AVX2_AVX512BW 0 "register_operand" "=x,<v_Yw>")
! 	(unspec:VIMAX_AVX2_AVX512BW
! 	  [(match_operand:VIMAX_AVX2_AVX512BW 1 "register_operand" "0,<v_Yw>")
! 	   (match_operand:VIMAX_AVX2_AVX512BW 2 "vector_operand" "xBm,<v_Yw>m")
! 	   (match_operand:SI 3 "const_0_to_255_mul_8_operand")]
  	  UNSPEC_PALIGNR))]
    "TARGET_SSSE3"
  {
***************
*** 20876,20882 ****
    [(set (match_operand:DI 0 "register_operand" "=y,x,Yw")
  	(unspec:DI [(match_operand:DI 1 "register_operand" "0,0,Yw")
  		    (match_operand:DI 2 "register_mmxmem_operand" "ym,x,Yw")
! 		    (match_operand:SI 3 "const_0_to_255_mul_8_operand" "n,n,n")]
  		   UNSPEC_PALIGNR))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
  {
--- 21260,21266 ----
    [(set (match_operand:DI 0 "register_operand" "=y,x,Yw")
  	(unspec:DI [(match_operand:DI 1 "register_operand" "0,0,Yw")
  		    (match_operand:DI 2 "register_mmxmem_operand" "ym,x,Yw")
! 		    (match_operand:SI 3 "const_0_to_255_mul_8_operand")]
  		   UNSPEC_PALIGNR))]
    "(TARGET_MMX || TARGET_MMX_WITH_SSE) && TARGET_SSSE3"
  {
***************
*** 20892,20902 ****
        gcc_unreachable ();
      }
  }
!   "TARGET_SSSE3 && reload_completed
!    && SSE_REGNO_P (REGNO (operands[0]))"
    [(set (match_dup 0)
  	(lshiftrt:V1TI (match_dup 0) (match_dup 3)))]
  {
    /* Emulate MMX palignrdi with SSE psrldq.  */
    rtx op0 = lowpart_subreg (V2DImode, operands[0],
  			    GET_MODE (operands[0]));
--- 21276,21305 ----
        gcc_unreachable ();
      }
  }
!   "(TARGET_SSSE3 && reload_completed
!     && SSE_REGNO_P (REGNO (operands[0])))
!    || operands[3] == const0_rtx
!    || INTVAL (operands[3]) == 64"
    [(set (match_dup 0)
  	(lshiftrt:V1TI (match_dup 0) (match_dup 3)))]
  {
+   if (operands[3] == const0_rtx)
+     {
+       if (!rtx_equal_p (operands[0], operands[2]))
+ 	emit_move_insn (operands[0], operands[2]);
+       else
+ 	emit_note (NOTE_INSN_DELETED);
+       DONE;
+     }
+   else if (INTVAL (operands[3]) == 64)
+     {
+       if (!rtx_equal_p (operands[0], operands[1]))
+ 	emit_move_insn (operands[0], operands[1]);
+       else
+ 	emit_note (NOTE_INSN_DELETED);
+       DONE;
+     }
+ 
    /* Emulate MMX palignrdi with SSE psrldq.  */
    rtx op0 = lowpart_subreg (V2DImode, operands[0],
  			    GET_MODE (operands[0]));
***************
*** 21163,21169 ****
  	   (match_operand:VF_128_256 2 "vector_operand" "YrBm,*xBm,xm")
  	   (lt:VF_128_256
  	     (match_operand:<sseintvecmode> 3 "register_operand" "Yz,Yz,x")
! 	     (match_operand:<sseintvecmode> 4 "const0_operand" "C,C,C"))]
  	  UNSPEC_BLENDV))]
    "TARGET_SSE4_1"
    "#"
--- 21566,21572 ----
  	   (match_operand:VF_128_256 2 "vector_operand" "YrBm,*xBm,xm")
  	   (lt:VF_128_256
  	     (match_operand:<sseintvecmode> 3 "register_operand" "Yz,Yz,x")
! 	     (match_operand:<sseintvecmode> 4 "const0_operand"))]
  	  UNSPEC_BLENDV))]
    "TARGET_SSE4_1"
    "#"
***************
*** 21195,21201 ****
  	   (subreg:<ssebytemode>
  	     (lt:VI48_AVX
  	       (match_operand:VI48_AVX 3 "register_operand" "Yz,Yz,x")
! 	       (match_operand:VI48_AVX 4 "const0_operand" "C,C,C")) 0)]
  	  UNSPEC_BLENDV))]
    "TARGET_SSE4_1"
    "#"
--- 21598,21604 ----
  	   (subreg:<ssebytemode>
  	     (lt:VI48_AVX
  	       (match_operand:VI48_AVX 3 "register_operand" "Yz,Yz,x")
! 	       (match_operand:VI48_AVX 4 "const0_operand")) 0)]
  	  UNSPEC_BLENDV))]
    "TARGET_SSE4_1"
    "#"
***************
*** 21250,21256 ****
  	(unspec:VF_128_256
  	  [(match_operand:VF_128_256 1 "vector_operand" "%0,0,x")
  	   (match_operand:VF_128_256 2 "vector_operand" "YrBm,*xBm,xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")]
  	  UNSPEC_DP))]
    "TARGET_SSE4_1"
    "@
--- 21653,21659 ----
  	(unspec:VF_128_256
  	  [(match_operand:VF_128_256 1 "vector_operand" "%0,0,x")
  	   (match_operand:VF_128_256 2 "vector_operand" "YrBm,*xBm,xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_DP))]
    "TARGET_SSE4_1"
    "@
***************
*** 21288,21294 ****
  	(unspec:VI1_AVX2
  	  [(match_operand:VI1_AVX2 1 "register_operand" "0,0,x")
  	   (match_operand:VI1_AVX2 2 "vector_operand" "YrBm,*xBm,xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")]
  	  UNSPEC_MPSADBW))]
    "TARGET_SSE4_1"
    "@
--- 21691,21697 ----
  	(unspec:VI1_AVX2
  	  [(match_operand:VI1_AVX2 1 "register_operand" "0,0,x")
  	   (match_operand:VI1_AVX2 2 "vector_operand" "YrBm,*xBm,xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_MPSADBW))]
    "TARGET_SSE4_1"
    "@
***************
*** 21377,21383 ****
  	  [(match_operand:VI1_AVX2 1 "register_operand"  "0,0,x")
  	   (match_operand:VI1_AVX2 2 "vector_operand" "YrBm,*xBm,xm")
  	   (lt:VI1_AVX2 (match_operand:VI1_AVX2 3 "register_operand" "Yz,Yz,x")
! 			(match_operand:VI1_AVX2 4 "const0_operand" "C,C,C"))]
  	  UNSPEC_BLENDV))]
    "TARGET_SSE4_1"
    "#"
--- 21780,21786 ----
  	  [(match_operand:VI1_AVX2 1 "register_operand"  "0,0,x")
  	   (match_operand:VI1_AVX2 2 "vector_operand" "YrBm,*xBm,xm")
  	   (lt:VI1_AVX2 (match_operand:VI1_AVX2 3 "register_operand" "Yz,Yz,x")
! 			(match_operand:VI1_AVX2 4 "const0_operand"))]
  	  UNSPEC_BLENDV))]
    "TARGET_SSE4_1"
    "#"
***************
*** 21421,21427 ****
  	(vec_merge:V8_128
  	  (match_operand:V8_128 2 "vector_operand" "YrBm,*xBm,xm")
  	  (match_operand:V8_128 1 "register_operand" "0,0,x")
! 	  (match_operand:SI 3 "const_0_to_255_operand" "n,n,n")))]
    "TARGET_SSE4_1"
    "@
     pblendw\t{%3, %2, %0|%0, %2, %3}
--- 21824,21830 ----
  	(vec_merge:V8_128
  	  (match_operand:V8_128 2 "vector_operand" "YrBm,*xBm,xm")
  	  (match_operand:V8_128 1 "register_operand" "0,0,x")
! 	  (match_operand:SI 3 "const_0_to_255_operand")))]
    "TARGET_SSE4_1"
    "@
     pblendw\t{%3, %2, %0|%0, %2, %3}
***************
*** 21493,21499 ****
  	(vec_merge:V16_256
  	  (match_operand:V16_256 2 "nonimmediate_operand" "xm")
  	  (match_operand:V16_256 1 "register_operand" "x")
! 	  (match_operand:SI 3 "avx2_pblendw_operand" "n")))]
    "TARGET_AVX2"
  {
    operands[3] = GEN_INT (INTVAL (operands[3]) & 0xff);
--- 21896,21902 ----
  	(vec_merge:V16_256
  	  (match_operand:V16_256 2 "nonimmediate_operand" "xm")
  	  (match_operand:V16_256 1 "register_operand" "x")
! 	  (match_operand:SI 3 "avx2_pblendw_operand")))]
    "TARGET_AVX2"
  {
    operands[3] = GEN_INT (INTVAL (operands[3]) & 0xff);
***************
*** 21510,21516 ****
  	(vec_merge:VI4_AVX2
  	  (match_operand:VI4_AVX2 2 "nonimmediate_operand" "xm")
  	  (match_operand:VI4_AVX2 1 "register_operand" "x")
! 	  (match_operand:SI 3 "const_0_to_255_operand" "n")))]
    "TARGET_AVX2"
    "vpblendd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ssemov")
--- 21913,21919 ----
  	(vec_merge:VI4_AVX2
  	  (match_operand:VI4_AVX2 2 "nonimmediate_operand" "xm")
  	  (match_operand:VI4_AVX2 1 "register_operand" "x")
! 	  (match_operand:SI 3 "const_0_to_255_operand")))]
    "TARGET_AVX2"
    "vpblendd\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "ssemov")
***************
*** 21547,21555 ****
  	(vec_select:V32QI
  	  (vec_concat:V64QI
  	    (match_operand:V32QI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V32QI 2 "const0_operand" "C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
--- 21950,21958 ----
  	(vec_select:V32QI
  	  (vec_concat:V64QI
  	    (match_operand:V32QI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V32QI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
***************
*** 21566,21575 ****
  	    (subreg:V32QI
  	      (vec_concat:VI248_256
  		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
! 	    (match_operand:V32QI 3 "const0_operand" "C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
--- 21969,21978 ----
  	    (subreg:V32QI
  	      (vec_concat:VI248_256
  		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
! 	    (match_operand:V32QI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
***************
*** 21601,21609 ****
  	(vec_select:V64QI
  	  (vec_concat:V128QI
  	    (match_operand:V64QI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V64QI 2 "const0_operand" "C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n")])))]
    "TARGET_AVX512BW"
    "#"
    "&& reload_completed"
--- 22004,22012 ----
  	(vec_select:V64QI
  	  (vec_concat:V128QI
  	    (match_operand:V64QI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V64QI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_AVX512BW"
    "#"
    "&& reload_completed"
***************
*** 21620,21629 ****
  	    (subreg:V64QI
  	      (vec_concat:VI248_512
  		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
! 	    (match_operand:V64QI 3 "const0_operand" "C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n")])))]
    "TARGET_AVX512BW"
    "#"
    "&& reload_completed"
--- 22023,22032 ----
  	    (subreg:V64QI
  	      (vec_concat:VI248_512
  		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
! 	    (match_operand:V64QI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_AVX512BW"
    "#"
    "&& reload_completed"
***************
*** 21693,21701 ****
  	(vec_select:V16QI
  	  (vec_concat:V32QI
  	    (match_operand:V16QI 1 "vector_operand" "YrBm,*xBm,Ywm")
! 	    (match_operand:V16QI 2 "const0_operand" "C,C,C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n,n,n")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
--- 22096,22104 ----
  	(vec_select:V16QI
  	  (vec_concat:V32QI
  	    (match_operand:V16QI 1 "vector_operand" "YrBm,*xBm,Ywm")
! 	    (match_operand:V16QI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
***************
*** 21726,21735 ****
  	    (subreg:V16QI
  	      (vec_concat:VI248_128
  		(match_operand:<ssehalfvecmode> 1 "vector_operand" "YrBm,*xBm,Ywm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C,C,C")) 0)
! 	    (match_operand:V16QI 3 "const0_operand" "C,C,C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n,n,n")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
--- 22129,22138 ----
  	    (subreg:V16QI
  	      (vec_concat:VI248_128
  		(match_operand:<ssehalfvecmode> 1 "vector_operand" "YrBm,*xBm,Ywm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
! 	    (match_operand:V16QI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
***************
*** 21932,21940 ****
  	(vec_select:V32HI
  	  (vec_concat:V64HI
  	    (match_operand:V32HI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V32HI 2 "const0_operand" "C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
--- 22335,22343 ----
  	(vec_select:V32HI
  	  (vec_concat:V64HI
  	    (match_operand:V32HI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V32HI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
***************
*** 21951,21960 ****
  	    (subreg:V32HI
  	      (vec_concat:VI148_512
  	        (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
! 	    (match_operand:V32HI 3 "const0_operand" "C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
--- 22354,22363 ----
  	    (subreg:V32HI
  	      (vec_concat:VI148_512
  	        (match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
! 	    (match_operand:V32HI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
***************
*** 21986,21994 ****
  	(vec_select:V16HI
  	  (vec_concat:V32HI
  	    (match_operand:V16HI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V16HI 2 "const0_operand" "C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
--- 22389,22397 ----
  	(vec_select:V16HI
  	  (vec_concat:V32HI
  	    (match_operand:V16HI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V16HI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
***************
*** 22005,22014 ****
  	    (subreg:V16HI
  	      (vec_concat:VI148_256
  		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C")) 0)
! 	    (match_operand:V16HI 3 "const0_operand" "C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
--- 22408,22417 ----
  	    (subreg:V16HI
  	      (vec_concat:VI148_256
  		(match_operand:<ssehalfvecmode> 1 "nonimmediate_operand" "vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
! 	    (match_operand:V16HI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
***************
*** 22084,22092 ****
  	(vec_select:V8HI
  	  (vec_concat:V16HI
  	    (match_operand:V8HI 1 "vector_operand" "YrBm,*xBm,vm")
! 	    (match_operand:V8HI 2 "const0_operand" "C,C,C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n,n,n")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
--- 22487,22495 ----
  	(vec_select:V8HI
  	  (vec_concat:V16HI
  	    (match_operand:V8HI 1 "vector_operand" "YrBm,*xBm,vm")
! 	    (match_operand:V8HI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
***************
*** 22115,22124 ****
  	    (subreg:V8HI
  	      (vec_concat:VI148_128
  		(match_operand:<ssehalfvecmode> 1 "vector_operand" "YrBm,*xBm,vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand" "C,C,C")) 0)
! 	    (match_operand:V8HI 3 "const0_operand" "C,C,C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n,n,n")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
--- 22518,22527 ----
  	    (subreg:V8HI
  	      (vec_concat:VI148_128
  		(match_operand:<ssehalfvecmode> 1 "vector_operand" "YrBm,*xBm,vm")
! 		(match_operand:<ssehalfvecmode> 2 "const0_operand")) 0)
! 	    (match_operand:V8HI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
***************
*** 22276,22290 ****
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
  (define_expand "<insn>v2qiv2di2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
! 	  (match_operand:V2QI 1 "register_operand")))]
    "TARGET_SSE4_1"
  {
!   rtx op1 = force_reg (V2QImode, operands[1]);
!   op1 = lowpart_subreg (V16QImode, op1, V2QImode);
!   emit_insn (gen_sse4_1_<code>v2qiv2di2 (operands[0], op1));
    DONE;
  })
  
--- 22679,22730 ----
     (set_attr "prefix" "orig,orig,maybe_evex")
     (set_attr "mode" "TI")])
  
+ (define_insn "*sse4_1_<code>v2qiv2di2<mask_name>_1"
+   [(set (match_operand:V2DI 0 "register_operand" "=v")
+ 	(any_extend:V2DI
+ 	 (match_operand:V2QI 1 "memory_operand" "m")))]
+   "TARGET_SSE4_1 && <mask_avx512vl_condition>"
+   "%vpmov<extsuffix>bq\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}"
+   [(set_attr "type" "ssemov")
+    (set_attr "prefix_extra" "1")
+    (set_attr "prefix" "maybe_evex")
+    (set_attr "mode" "TI")])
+ 
  (define_expand "<insn>v2qiv2di2"
    [(set (match_operand:V2DI 0 "register_operand")
  	(any_extend:V2DI
! 	 (match_operand:V2QI 1 "nonimmediate_operand")))]
    "TARGET_SSE4_1"
  {
!   if (!MEM_P (operands[1]))
!     {
!       rtx op1 = force_reg (V2QImode, operands[1]);
!       op1 = lowpart_subreg (V16QImode, op1, V2QImode);
!       emit_insn (gen_sse4_1_<code>v2qiv2di2 (operands[0], op1));
!       DONE;
!     }
! })
! 
! (define_insn_and_split "*sse4_1_zero_extendv2qiv2di2_2"
!   [(set (match_operand:V2DI 0 "register_operand")
! 	(zero_extend:V2DI
! 	 (vec_select:V2QI
! 	  (subreg:V16QI
! 	   (vec_merge:V8_128
! 	    (vec_duplicate:V8_128
! 	     (match_operand:<ssescalarmode> 1 "nonimmediate_operand"))
! 	    (match_operand:V8_128 2 "const0_operand")
! 	    (const_int 1)) 0)
! 	  (parallel [(const_int 0) (const_int 1)]))))]
!   "TARGET_SSE4_1 && ix86_pre_reload_split ()"
!   "#"
!   "&& 1"
!   [(const_int 0)]
! {
!   if (!MEM_P (operands[1]))
!     operands[1] = force_reg (<ssescalarmode>mode, operands[1]);
!   operands[1] = lowpart_subreg (V2QImode, operands[1], <ssescalarmode>mode);
!   emit_insn (gen_zero_extendv2qiv2di2 (operands[0], operands[1]));
    DONE;
  })
  
***************
*** 22439,22447 ****
  	(vec_select:V16SI
  	  (vec_concat:V32SI
  	    (match_operand:V16SI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V16SI 2 "const0_operand" "C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
--- 22879,22887 ----
  	(vec_select:V16SI
  	  (vec_concat:V32SI
  	    (match_operand:V16SI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V16SI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
***************
*** 22457,22466 ****
  	  (vec_concat:V32SI
  	    (vec_concat:V16SI
  	      (match_operand:V8SI 1 "nonimmediate_operand" "vm")
! 	      (match_operand:V8SI 2 "const0_operand" "C"))
! 	    (match_operand:V16SI 3 "const0_operand" "C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
--- 22897,22906 ----
  	  (vec_concat:V32SI
  	    (vec_concat:V16SI
  	      (match_operand:V8SI 1 "nonimmediate_operand" "vm")
! 	      (match_operand:V8SI 2 "const0_operand"))
! 	    (match_operand:V16SI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_AVX512F"
    "#"
    "&& reload_completed"
***************
*** 22491,22499 ****
  	(vec_select:V8SI
  	  (vec_concat:V16SI
  	    (match_operand:V8SI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V8SI 2 "const0_operand" "C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
--- 22931,22939 ----
  	(vec_select:V8SI
  	  (vec_concat:V16SI
  	    (match_operand:V8SI 1 "nonimmediate_operand" "vm")
! 	    (match_operand:V8SI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
***************
*** 22509,22518 ****
  	  (vec_concat:V16SI
  	    (vec_concat:V8SI
  	      (match_operand:V4SI 1 "nonimmediate_operand" "vm")
! 	      (match_operand:V4SI 2 "const0_operand" "C"))
! 	    (match_operand:V8SI 3 "const0_operand" "C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
--- 22949,22958 ----
  	  (vec_concat:V16SI
  	    (vec_concat:V8SI
  	      (match_operand:V4SI 1 "nonimmediate_operand" "vm")
! 	      (match_operand:V4SI 2 "const0_operand"))
! 	    (match_operand:V8SI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_AVX2"
    "#"
    "&& reload_completed"
***************
*** 22575,22583 ****
  	(vec_select:V4SI
  	  (vec_concat:V8SI
  	    (match_operand:V4SI 1 "vector_operand" "YrBm,*xBm,vm")
! 	    (match_operand:V4SI 2 "const0_operand" "C,C,C"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand" "n,n,n")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
--- 23015,23023 ----
  	(vec_select:V4SI
  	  (vec_concat:V8SI
  	    (match_operand:V4SI 1 "vector_operand" "YrBm,*xBm,vm")
! 	    (match_operand:V4SI 2 "const0_operand"))
  	  (match_parallel 3 "pmovzx_parallel"
! 	    [(match_operand 4 "const_int_operand")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
***************
*** 22603,22612 ****
  	  (vec_concat:V8SI
  	    (vec_concat:V4SI
  	      (match_operand:V2SI 1 "vector_operand" "YrBm, *xBm, vm")
! 	      (match_operand:V2SI 2 "const0_operand" "C,C,C"))
! 	    (match_operand:V4SI 3 "const0_operand" "C,C,C"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand" "n,n,n")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
--- 23043,23052 ----
  	  (vec_concat:V8SI
  	    (vec_concat:V4SI
  	      (match_operand:V2SI 1 "vector_operand" "YrBm, *xBm, vm")
! 	      (match_operand:V2SI 2 "const0_operand"))
! 	    (match_operand:V4SI 3 "const0_operand"))
  	  (match_parallel 4 "pmovzx_parallel"
! 	    [(match_operand 5 "const_int_operand")])))]
    "TARGET_SSE4_1"
    "#"
    "&& reload_completed"
***************
*** 22688,22693 ****
--- 23128,23146 ----
     (set_attr "prefix" "orig,orig,vex")
     (set_attr "mode" "TI")])
  
+ (define_insn_and_split "*ptest<mode>_and"
+   [(set (reg:CC FLAGS_REG)
+ 	(unspec:CC [(and:V_AVX (match_operand:V_AVX 0 "register_operand")
+ 			       (match_operand:V_AVX 1 "vector_operand"))
+ 		    (and:V_AVX (match_dup 0) (match_dup 1))]
+ 		   UNSPEC_PTEST))]
+   "TARGET_SSE4_1
+    && ix86_pre_reload_split ()"
+   "#"
+   "&& 1"
+   [(set (reg:CC FLAGS_REG)
+ 	(unspec:CC [(match_dup 0) (match_dup 1)] UNSPEC_PTEST))])
+ 
  (define_expand "nearbyint<mode>2"
    [(set (match_operand:VFH 0 "register_operand")
  	(unspec:VFH
***************
*** 22706,22716 ****
    "TARGET_SSE4_1"
    "operands[2] = GEN_INT (ROUND_MXCSR);")
  
  (define_insn "<sse4_1>_round<ssemodesuffix><avxsizesuffix>"
    [(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x,x")
  	(unspec:VF_128_256
  	  [(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm,xm")
! 	   (match_operand:SI 2 "const_0_to_15_operand" "n,n,n")]
  	  UNSPEC_ROUND))]
    "TARGET_SSE4_1"
    "%vround<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
--- 23159,23177 ----
    "TARGET_SSE4_1"
    "operands[2] = GEN_INT (ROUND_MXCSR);")
  
+ ;; Note vcvtpd2qq require avx512dq for all vector lengths.
+ (define_expand "lrint<mode><sseintvecmodelower>2"
+   [(set (match_operand:<sseintvecmode> 0 "register_operand")
+ 	(unspec:<sseintvecmode>
+ 	  [(match_operand:VF1_VF2_AVX512DQ 1 "register_operand")]
+ 	 UNSPEC_FIX_NOTRUNC))]
+  "TARGET_SSE2")
+ 
  (define_insn "<sse4_1>_round<ssemodesuffix><avxsizesuffix>"
    [(set (match_operand:VF_128_256 0 "register_operand" "=Yr,*x,x")
  	(unspec:VF_128_256
  	  [(match_operand:VF_128_256 1 "vector_operand" "YrBm,*xBm,xm")
! 	   (match_operand:SI 2 "const_0_to_15_operand")]
  	  UNSPEC_ROUND))]
    "TARGET_SSE4_1"
    "%vround<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
***************
*** 22803,22809 ****
  	(vec_merge:VF_128
  	  (unspec:VF_128
  	    [(match_operand:VF_128 2 "nonimmediate_operand" "Yrm,*xm,xm,vm")
! 	     (match_operand:SI 3 "const_0_to_15_operand" "n,n,n,n")]
  	    UNSPEC_ROUND)
  	  (match_operand:VF_128 1 "register_operand" "0,0,x,v")
  	  (const_int 1)))]
--- 23264,23270 ----
  	(vec_merge:VF_128
  	  (unspec:VF_128
  	    [(match_operand:VF_128 2 "nonimmediate_operand" "Yrm,*xm,xm,vm")
! 	     (match_operand:SI 3 "const_0_to_15_operand")]
  	    UNSPEC_ROUND)
  	  (match_operand:VF_128 1 "register_operand" "0,0,x,v")
  	  (const_int 1)))]
***************
*** 22827,22833 ****
  	  (vec_duplicate:VFH_128
  	    (unspec:<ssescalarmode>
  	      [(match_operand:<ssescalarmode> 2 "nonimmediate_operand" "Yrm,*xm,xm,vm")
! 	       (match_operand:SI 3 "const_0_to_15_operand" "n,n,n,n")]
  	      UNSPEC_ROUND))
  	  (match_operand:VFH_128 1 "register_operand" "0,0,x,v")
  	  (const_int 1)))]
--- 23288,23294 ----
  	  (vec_duplicate:VFH_128
  	    (unspec:<ssescalarmode>
  	      [(match_operand:<ssescalarmode> 2 "nonimmediate_operand" "Yrm,*xm,xm,vm")
! 	       (match_operand:SI 3 "const_0_to_15_operand")]
  	      UNSPEC_ROUND))
  	  (match_operand:VFH_128 1 "register_operand" "0,0,x,v")
  	  (const_int 1)))]
***************
*** 22845,22850 ****
--- 23306,23360 ----
     (set_attr "prefix" "orig,orig,vex,evex")
     (set_attr "mode" "<MODE>")])
  
+ (define_expand "floor<mode>2"
+   [(set (match_operand:VFH 0 "register_operand")
+ 	(unspec:VFH
+ 	  [(match_operand:VFH 1 "vector_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math"
+   "operands[2] = GEN_INT (ROUND_FLOOR | ROUND_NO_EXC);")
+ 
+ (define_expand "lfloor<mode><sseintvecmodelower>2"
+   [(match_operand:<sseintvecmode> 0 "register_operand")
+    (match_operand:VF1_VF2_AVX512DQ 1 "register_operand")]
+  "TARGET_SSE4_1 && !flag_trapping_math"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_floor<mode>2 (tmp, operands[1]));
+   emit_insn (gen_fix_trunc<mode><sseintvecmodelower>2 (operands[0], tmp));
+   DONE;
+ })
+ 
+ (define_expand "ceil<mode>2"
+   [(set (match_operand:VFH 0 "register_operand")
+ 	(unspec:VFH
+ 	  [(match_operand:VFH 1 "vector_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math"
+   "operands[2] = GEN_INT (ROUND_CEIL | ROUND_NO_EXC);")
+ 
+ (define_expand "lceil<mode><sseintvecmodelower>2"
+   [(match_operand:<sseintvecmode> 0 "register_operand")
+    (match_operand:VF1_VF2_AVX512DQ 1 "register_operand")]
+  "TARGET_SSE4_1 && !flag_trapping_math"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_ceil<mode>2 (tmp, operands[1]));
+   emit_insn (gen_fix_trunc<mode><sseintvecmodelower>2 (operands[0], tmp));
+   DONE;
+ })
+ 
+ (define_expand "btrunc<mode>2"
+   [(set (match_operand:VFH 0 "register_operand")
+ 	(unspec:VFH
+ 	  [(match_operand:VFH 1 "vector_operand")
+ 	   (match_dup 2)]
+ 	  UNSPEC_ROUND))]
+   "TARGET_SSE4_1 && !flag_trapping_math"
+   "operands[2] = GEN_INT (ROUND_TRUNC | ROUND_NO_EXC);")
+ 
  (define_expand "round<mode>2"
    [(set (match_dup 3)
  	(plus:VF
***************
*** 22879,22884 ****
--- 23389,23405 ----
    operands[4] = GEN_INT (ROUND_TRUNC);
  })
  
+ (define_expand "lround<mode><sseintvecmodelower>2"
+   [(match_operand:<sseintvecmode> 0 "register_operand")
+    (match_operand:VF1_VF2_AVX512DQ 1 "register_operand")]
+  "TARGET_SSE4_1 && !flag_trapping_math"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_round<mode>2 (tmp, operands[1]));
+   emit_insn (gen_fix_trunc<mode><sseintvecmodelower>2 (operands[0], tmp));
+   DONE;
+ })
+ 
  (define_expand "round<mode>2_sfix"
    [(match_operand:<sseintvecmode> 0 "register_operand")
     (match_operand:VF1 1 "register_operand")]
***************
*** 22940,22946 ****
  	   (match_operand:SI 3 "register_operand" "a,a")
  	   (match_operand:V16QI 4 "nonimmediate_operand" "x,m")
  	   (match_operand:SI 5 "register_operand" "d,d")
! 	   (match_operand:SI 6 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_PCMPESTR))
     (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
  	(unspec:V16QI
--- 23461,23467 ----
  	   (match_operand:SI 3 "register_operand" "a,a")
  	   (match_operand:V16QI 4 "nonimmediate_operand" "x,m")
  	   (match_operand:SI 5 "register_operand" "d,d")
! 	   (match_operand:SI 6 "const_0_to_255_operand")]
  	  UNSPEC_PCMPESTR))
     (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
  	(unspec:V16QI
***************
*** 22964,22971 ****
    "&& 1"
    [(const_int 0)]
  {
!   int ecx = !find_regno_note (curr_insn, REG_UNUSED, REGNO (operands[0]));
!   int xmm0 = !find_regno_note (curr_insn, REG_UNUSED, REGNO (operands[1]));
    int flags = !find_regno_note (curr_insn, REG_UNUSED, FLAGS_REG);
  
    if (ecx)
--- 23485,23494 ----
    "&& 1"
    [(const_int 0)]
  {
!   int ecx = !find_regno_note (curr_insn, REG_UNUSED,
! 			      reg_or_subregno (operands[0]));
!   int xmm0 = !find_regno_note (curr_insn, REG_UNUSED,
! 			       reg_or_subregno (operands[1]));
    int flags = !find_regno_note (curr_insn, REG_UNUSED, FLAGS_REG);
  
    if (ecx)
***************
*** 23000,23006 ****
  	   (match_operand:SI 2 "register_operand" "a,a")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
  	   (match_operand:SI 4 "register_operand" "d,d")
! 	   (match_operand:SI 5 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_PCMPESTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
--- 23523,23529 ----
  	   (match_operand:SI 2 "register_operand" "a,a")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
  	   (match_operand:SI 4 "register_operand" "d,d")
! 	   (match_operand:SI 5 "const_0_to_255_operand")]
  	  UNSPEC_PCMPESTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
***************
*** 23028,23034 ****
  	   (match_operand:SI 2 "register_operand" "a,a")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
  	   (match_operand:SI 4 "register_operand" "d,d")
! 	   (match_operand:SI 5 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_PCMPESTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
--- 23551,23557 ----
  	   (match_operand:SI 2 "register_operand" "a,a")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
  	   (match_operand:SI 4 "register_operand" "d,d")
! 	   (match_operand:SI 5 "const_0_to_255_operand")]
  	  UNSPEC_PCMPESTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
***************
*** 23056,23062 ****
  	   (match_operand:SI 3 "register_operand" "a,a,a,a")
  	   (match_operand:V16QI 4 "nonimmediate_operand" "x,m,x,m")
  	   (match_operand:SI 5 "register_operand" "d,d,d,d")
! 	   (match_operand:SI 6 "const_0_to_255_operand" "n,n,n,n")]
  	  UNSPEC_PCMPESTR))
     (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
     (clobber (match_scratch:SI    1 "= X, X,c,c"))]
--- 23579,23585 ----
  	   (match_operand:SI 3 "register_operand" "a,a,a,a")
  	   (match_operand:V16QI 4 "nonimmediate_operand" "x,m,x,m")
  	   (match_operand:SI 5 "register_operand" "d,d,d,d")
! 	   (match_operand:SI 6 "const_0_to_255_operand")]
  	  UNSPEC_PCMPESTR))
     (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
     (clobber (match_scratch:SI    1 "= X, X,c,c"))]
***************
*** 23080,23086 ****
  	(unspec:SI
  	  [(match_operand:V16QI 2 "register_operand" "x,x")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
! 	   (match_operand:SI 4 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_PCMPISTR))
     (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
  	(unspec:V16QI
--- 23603,23609 ----
  	(unspec:SI
  	  [(match_operand:V16QI 2 "register_operand" "x,x")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m")
! 	   (match_operand:SI 4 "const_0_to_255_operand")]
  	  UNSPEC_PCMPISTR))
     (set (match_operand:V16QI 1 "register_operand" "=Yz,Yz")
  	(unspec:V16QI
***************
*** 23100,23107 ****
    "&& 1"
    [(const_int 0)]
  {
!   int ecx = !find_regno_note (curr_insn, REG_UNUSED, REGNO (operands[0]));
!   int xmm0 = !find_regno_note (curr_insn, REG_UNUSED, REGNO (operands[1]));
    int flags = !find_regno_note (curr_insn, REG_UNUSED, FLAGS_REG);
  
    if (ecx)
--- 23623,23632 ----
    "&& 1"
    [(const_int 0)]
  {
!   int ecx = !find_regno_note (curr_insn, REG_UNUSED,
! 			      reg_or_subregno (operands[0]));
!   int xmm0 = !find_regno_note (curr_insn, REG_UNUSED,
! 			       reg_or_subregno (operands[1]));
    int flags = !find_regno_note (curr_insn, REG_UNUSED, FLAGS_REG);
  
    if (ecx)
***************
*** 23131,23137 ****
  	(unspec:SI
  	  [(match_operand:V16QI 1 "register_operand" "x,x")
  	   (match_operand:V16QI 2 "nonimmediate_operand" "x,m")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_PCMPISTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
--- 23656,23662 ----
  	(unspec:SI
  	  [(match_operand:V16QI 1 "register_operand" "x,x")
  	   (match_operand:V16QI 2 "nonimmediate_operand" "x,m")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_PCMPISTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
***************
*** 23155,23161 ****
  	(unspec:V16QI
  	  [(match_operand:V16QI 1 "register_operand" "x,x")
  	   (match_operand:V16QI 2 "nonimmediate_operand" "x,m")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_PCMPISTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
--- 23680,23686 ----
  	(unspec:V16QI
  	  [(match_operand:V16QI 1 "register_operand" "x,x")
  	   (match_operand:V16QI 2 "nonimmediate_operand" "x,m")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_PCMPISTR))
     (set (reg:CC FLAGS_REG)
  	(unspec:CC
***************
*** 23179,23185 ****
  	(unspec:CC
  	  [(match_operand:V16QI 2 "register_operand" "x,x,x,x")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m,x,m")
! 	   (match_operand:SI 4 "const_0_to_255_operand" "n,n,n,n")]
  	  UNSPEC_PCMPISTR))
     (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
     (clobber (match_scratch:SI    1 "= X, X,c,c"))]
--- 23704,23710 ----
  	(unspec:CC
  	  [(match_operand:V16QI 2 "register_operand" "x,x,x,x")
  	   (match_operand:V16QI 3 "nonimmediate_operand" "x,m,x,m")
! 	   (match_operand:SI 4 "const_0_to_255_operand")]
  	  UNSPEC_PCMPISTR))
     (clobber (match_scratch:V16QI 0 "=Yz,Yz,X,X"))
     (clobber (match_scratch:SI    1 "= X, X,c,c"))]
***************
*** 23226,23234 ****
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI48_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand" "n")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const_2_to_3_operand" "n")]
       UNSPEC_GATHER_PREFETCH)]
    "TARGET_AVX512PF"
  {
--- 23751,23759 ----
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI48_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const_2_to_3_operand")]
       UNSPEC_GATHER_PREFETCH)]
    "TARGET_AVX512PF"
  {
***************
*** 23273,23281 ****
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI4_256_8_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand" "n")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const_2_to_3_operand" "n")]
       UNSPEC_GATHER_PREFETCH)]
    "TARGET_AVX512PF"
  {
--- 23798,23806 ----
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI4_256_8_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const_2_to_3_operand")]
       UNSPEC_GATHER_PREFETCH)]
    "TARGET_AVX512PF"
  {
***************
*** 23320,23328 ****
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI48_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand" "n")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const2367_operand" "n")]
       UNSPEC_SCATTER_PREFETCH)]
    "TARGET_AVX512PF"
  {
--- 23845,23853 ----
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI48_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const2367_operand")]
       UNSPEC_SCATTER_PREFETCH)]
    "TARGET_AVX512PF"
  {
***************
*** 23369,23377 ****
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI4_256_8_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand" "n")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const2367_operand" "n")]
       UNSPEC_SCATTER_PREFETCH)]
    "TARGET_AVX512PF"
  {
--- 23894,23902 ----
  	[(unspec:P
  	   [(match_operand:P 2 "vsib_address_operand" "Tv")
  	    (match_operand:VI4_256_8_512 1 "register_operand" "v")
! 	    (match_operand:SI 3 "const1248_operand")]
  	   UNSPEC_VSIBADDR)])
!       (match_operand:SI 4 "const2367_operand")]
       UNSPEC_SCATTER_PREFETCH)]
    "TARGET_AVX512PF"
  {
***************
*** 23393,23398 ****
--- 23918,23930 ----
     (set_attr "prefix" "evex")
     (set_attr "mode" "XI")])
  
+ (define_expand "exp2<mode>2"
+   [(set (match_operand:VF_512 0 "register_operand")
+ 	(unspec:VF_512
+ 	  [(match_operand:VF_512 1 "vector_operand")]
+ 	  UNSPEC_EXP2))]
+   "TARGET_AVX512ER")
+ 
  (define_insn "avx512er_exp2<mode><mask_name><round_saeonly_name>"
    [(set (match_operand:VF_512 0 "register_operand" "=v")
  	(unspec:VF_512
***************
*** 23424,23430 ****
  	  (match_operand:VF_128 2 "register_operand" "v")
  	  (const_int 1)))]
    "TARGET_AVX512ER"
!   "vrcp28<ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%1, %2, %0<mask_operand3>|<mask_opernad3>%0, %2, %<iptr>1<round_saeonly_mask_op3>}"
    [(set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
     (set_attr "type" "sse")
--- 23956,23962 ----
  	  (match_operand:VF_128 2 "register_operand" "v")
  	  (const_int 1)))]
    "TARGET_AVX512ER"
!   "vrcp28<ssescalarmodesuffix>\t{<round_saeonly_mask_op3>%1, %2, %0<mask_operand3>|<mask_operand3>%0, %2, %<iptr>1<round_saeonly_mask_op3>}"
    [(set_attr "length_immediate" "1")
     (set_attr "prefix" "evex")
     (set_attr "type" "sse")
***************
*** 23581,23586 ****
--- 24113,24144 ----
    "vpcmov\t{%3, %2, %1, %0|%0, %1, %2, %3}"
    [(set_attr "type" "sse4arg")])
  
+ ;; Recognize XOP's vpcmov from canonical (xor (and (xor t f) c) f)
+ (define_split
+   [(set (match_operand:V_128_256 0 "register_operand")
+ 	(xor:V_128_256
+ 	  (and:V_128_256
+ 	    (xor:V_128_256 (match_operand:V_128_256 1 "register_operand")
+ 			   (match_operand:V_128_256 2 "register_operand"))
+ 	    (match_operand:V_128_256 3 "nonimmediate_operand"))
+ 	  (match_dup 1)))]
+   "TARGET_XOP"
+   [(set (match_dup 0) (if_then_else:V_128_256 (match_dup 3)
+ 					      (match_dup 2)
+ 					      (match_dup 1)))])
+ (define_split
+   [(set (match_operand:V_128_256 0 "register_operand")
+ 	(xor:V_128_256
+ 	  (and:V_128_256
+ 	    (xor:V_128_256 (match_operand:V_128_256 1 "register_operand")
+ 			   (match_operand:V_128_256 2 "register_operand"))
+ 	    (match_operand:V_128_256 3 "nonimmediate_operand"))
+ 	  (match_dup 2)))]
+   "TARGET_XOP"
+   [(set (match_dup 0) (if_then_else:V_128_256 (match_dup 3)
+ 					      (match_dup 1)
+ 					      (match_dup 2)))])
+ 
  ;; XOP horizontal add/subtract instructions
  (define_insn "xop_phadd<u>bw"
    [(set (match_operand:V8HI 0 "register_operand" "=x")
***************
*** 23909,23915 ****
    [(set (match_operand:VI_128 0 "register_operand" "=x")
  	(rotate:VI_128
  	 (match_operand:VI_128 1 "nonimmediate_operand" "xm")
! 	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand" "n")))]
    "TARGET_XOP"
    "vprot<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "sseishft")
--- 24467,24473 ----
    [(set (match_operand:VI_128 0 "register_operand" "=x")
  	(rotate:VI_128
  	 (match_operand:VI_128 1 "nonimmediate_operand" "xm")
! 	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand")))]
    "TARGET_XOP"
    "vprot<ssemodesuffix>\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr "type" "sseishft")
***************
*** 23920,23926 ****
    [(set (match_operand:VI_128 0 "register_operand" "=x")
  	(rotatert:VI_128
  	 (match_operand:VI_128 1 "nonimmediate_operand" "xm")
! 	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand" "n")))]
    "TARGET_XOP"
  {
    operands[3]
--- 24478,24484 ----
    [(set (match_operand:VI_128 0 "register_operand" "=x")
  	(rotatert:VI_128
  	 (match_operand:VI_128 1 "nonimmediate_operand" "xm")
! 	 (match_operand:SI 2 "const_0_to_<sserotatemax>_operand")))]
    "TARGET_XOP"
  {
    operands[3]
***************
*** 24355,24362 ****
  	      sel[3] = 7;
  	    }
  	  vec_perm_indices indices (sel, arg0 != arg1 ? 2 : 1, 4);
! 	  bool ok = targetm.vectorize.vec_perm_const (V4SImode, target,
! 						      arg0, arg1, indices);
  	  gcc_assert (ok);
  	  emit_move_insn (operands[0],
  			  lowpart_subreg (V2DImode, target, V4SImode));
--- 24913,24921 ----
  	      sel[3] = 7;
  	    }
  	  vec_perm_indices indices (sel, arg0 != arg1 ? 2 : 1, 4);
! 	  bool ok = targetm.vectorize.vec_perm_const (V4SImode, V4SImode,
! 						      target, arg0, arg1,
! 						      indices);
  	  gcc_assert (ok);
  	  emit_move_insn (operands[0],
  			  lowpart_subreg (V2DImode, target, V4SImode));
***************
*** 24526,24532 ****
  	(unspec:VI_128
  	  [(match_operand:VI_128 1 "register_operand" "x")
  	   (match_operand:VI_128 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_int_operand" "n")]
  	  UNSPEC_XOP_TRUEFALSE))]
    "TARGET_XOP"
  {
--- 25085,25091 ----
  	(unspec:VI_128
  	  [(match_operand:VI_128 1 "register_operand" "x")
  	   (match_operand:VI_128 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_int_operand")]
  	  UNSPEC_XOP_TRUEFALSE))]
    "TARGET_XOP"
  {
***************
*** 24546,24552 ****
  	  [(match_operand:VF_128_256 1 "register_operand" "x,x")
  	   (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m")
  	   (match_operand:<sseintvecmode> 3 "nonimmediate_operand" "xm,x")
! 	   (match_operand:SI 4 "const_0_to_3_operand" "n,n")]
  	  UNSPEC_VPERMIL2))]
    "TARGET_XOP"
    "vpermil2<ssemodesuffix>\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}"
--- 25105,25111 ----
  	  [(match_operand:VF_128_256 1 "register_operand" "x,x")
  	   (match_operand:VF_128_256 2 "nonimmediate_operand" "x,m")
  	   (match_operand:<sseintvecmode> 3 "nonimmediate_operand" "xm,x")
! 	   (match_operand:SI 4 "const_0_to_3_operand")]
  	  UNSPEC_VPERMIL2))]
    "TARGET_XOP"
    "vpermil2<ssemodesuffix>\t{%4, %3, %2, %1, %0|%0, %1, %2, %3, %4}"
***************
*** 24634,24640 ****
  (define_insn "aeskeygenassist"
    [(set (match_operand:V2DI 0 "register_operand" "=x")
  	(unspec:V2DI [(match_operand:V2DI 1 "vector_operand" "xBm")
! 		      (match_operand:SI 2 "const_0_to_255_operand" "n")]
  		     UNSPEC_AESKEYGENASSIST))]
    "TARGET_AES"
    "%vaeskeygenassist\t{%2, %1, %0|%0, %1, %2}"
--- 25193,25199 ----
  (define_insn "aeskeygenassist"
    [(set (match_operand:V2DI 0 "register_operand" "=x")
  	(unspec:V2DI [(match_operand:V2DI 1 "vector_operand" "xBm")
! 		      (match_operand:SI 2 "const_0_to_255_operand")]
  		     UNSPEC_AESKEYGENASSIST))]
    "TARGET_AES"
    "%vaeskeygenassist\t{%2, %1, %0|%0, %1, %2}"
***************
*** 24648,24654 ****
    [(set (match_operand:V2DI 0 "register_operand" "=x,x")
  	(unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x")
  		      (match_operand:V2DI 2 "vector_operand" "xBm,xm")
! 		      (match_operand:SI 3 "const_0_to_255_operand" "n,n")]
  		     UNSPEC_PCLMUL))]
    "TARGET_PCLMUL"
    "@
--- 25207,25213 ----
    [(set (match_operand:V2DI 0 "register_operand" "=x,x")
  	(unspec:V2DI [(match_operand:V2DI 1 "register_operand" "0,x")
  		      (match_operand:V2DI 2 "vector_operand" "xBm,xm")
! 		      (match_operand:SI 3 "const_0_to_255_operand")]
  		     UNSPEC_PCLMUL))]
    "TARGET_PCLMUL"
    "@
***************
*** 24725,24735 ****
     (V32HI "avx512bw") (V16HI "avx512bw") (V8HI "avx512bw")
     (V16SI "avx512f") (V8SI "avx512f") (V4SI "avx512f")
     (V8DI "avx512f") (V4DI "avx512f") (V2DI "avx512f")
!    (V32HF "avx512bw") (V16HF "avx512bw") (V8HF "avx512bw")])
  
  (define_insn "avx2_pbroadcast<mode>"
!   [(set (match_operand:VIHF 0 "register_operand" "=x,v")
! 	(vec_duplicate:VIHF
  	  (vec_select:<ssescalarmode>
  	    (match_operand:<ssexmmmode> 1 "nonimmediate_operand" "xm,vm")
  	    (parallel [(const_int 0)]))))]
--- 25284,25295 ----
     (V32HI "avx512bw") (V16HI "avx512bw") (V8HI "avx512bw")
     (V16SI "avx512f") (V8SI "avx512f") (V4SI "avx512f")
     (V8DI "avx512f") (V4DI "avx512f") (V2DI "avx512f")
!    (V32HF "avx512bw") (V16HF "avx512bw") (V8HF "avx512bw")
!    (V32BF "avx512bw") (V16BF "avx512bw") (V8BF "avx512bw")])
  
  (define_insn "avx2_pbroadcast<mode>"
!   [(set (match_operand:VIHFBF 0 "register_operand" "=x,v")
! 	(vec_duplicate:VIHFBF
  	  (vec_select:<ssescalarmode>
  	    (match_operand:<ssexmmmode> 1 "nonimmediate_operand" "xm,vm")
  	    (parallel [(const_int 0)]))))]
***************
*** 24742,24751 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "avx2_pbroadcast<mode>_1"
!   [(set (match_operand:VIHF_256 0 "register_operand" "=x,x,v,v")
! 	(vec_duplicate:VIHF_256
  	  (vec_select:<ssescalarmode>
! 	    (match_operand:VIHF_256 1 "nonimmediate_operand" "m,x,m,v")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX2"
    "@
--- 25302,25311 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "avx2_pbroadcast<mode>_1"
!   [(set (match_operand:VIHFBF_256 0 "register_operand" "=x,x,v,v")
! 	(vec_duplicate:VIHFBF_256
  	  (vec_select:<ssescalarmode>
! 	    (match_operand:VIHFBF_256 1 "nonimmediate_operand" "m,x,m,v")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX2"
    "@
***************
*** 25100,25106 ****
  	(unspec:V4DI
  	  [(match_operand:V4DI 1 "register_operand" "x")
  	   (match_operand:V4DI 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
  	  UNSPEC_VPERMTI))]
    "TARGET_AVX2"
    "vperm2i128\t{%3, %2, %1, %0|%0, %1, %2, %3}"
--- 25660,25666 ----
  	(unspec:V4DI
  	  [(match_operand:V4DI 1 "register_operand" "x")
  	   (match_operand:V4DI 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_VPERMTI))]
    "TARGET_AVX2"
    "vperm2i128\t{%3, %2, %1, %0|%0, %1, %2, %3}"
***************
*** 25121,25130 ****
     (set_attr "mode" "V4DF")])
  
  (define_insn "<avx512>_vec_dup<mode>_1"
!   [(set (match_operand:VIHF_AVX512BW 0 "register_operand" "=v,v")
! 	(vec_duplicate:VIHF_AVX512BW
  	  (vec_select:<ssescalarmode>
! 	    (match_operand:VIHF_AVX512BW 1 "nonimmediate_operand" "v,m")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX512F"
    "@
--- 25681,25690 ----
     (set_attr "mode" "V4DF")])
  
  (define_insn "<avx512>_vec_dup<mode>_1"
!   [(set (match_operand:VIHFBF_AVX512BW 0 "register_operand" "=v,v")
! 	(vec_duplicate:VIHFBF_AVX512BW
  	  (vec_select:<ssescalarmode>
! 	    (match_operand:VIHFBF_AVX512BW 1 "nonimmediate_operand" "v,m")
  	    (parallel [(const_int 0)]))))]
    "TARGET_AVX512F"
    "@
***************
*** 25154,25161 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<avx512>_vec_dup<mode><mask_name>"
!   [(set (match_operand:VI12HF_AVX512VL 0 "register_operand" "=v")
! 	(vec_duplicate:VI12HF_AVX512VL
  	  (vec_select:<ssescalarmode>
  	    (match_operand:<ssexmmmode> 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))))]
--- 25714,25721 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<avx512>_vec_dup<mode><mask_name>"
!   [(set (match_operand:VI12HFBF_AVX512VL 0 "register_operand" "=v")
! 	(vec_duplicate:VI12HFBF_AVX512VL
  	  (vec_select:<ssescalarmode>
  	    (match_operand:<ssexmmmode> 1 "nonimmediate_operand" "vm")
  	    (parallel [(const_int 0)]))))]
***************
*** 25190,25197 ****
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<mask_codefor><avx512>_vec_dup_gpr<mode><mask_name>"
!   [(set (match_operand:VI12HF_AVX512VL 0 "register_operand" "=v,v")
! 	(vec_duplicate:VI12HF_AVX512VL
  	  (match_operand:<ssescalarmode> 1 "nonimmediate_operand" "vm,r")))]
    "TARGET_AVX512BW"
    "@
--- 25750,25757 ----
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_insn "<mask_codefor><avx512>_vec_dup_gpr<mode><mask_name>"
!   [(set (match_operand:VI12HFBF_AVX512VL 0 "register_operand" "=v,v")
! 	(vec_duplicate:VI12HFBF_AVX512VL
  	  (match_operand:<ssescalarmode> 1 "nonimmediate_operand" "vm,r")))]
    "TARGET_AVX512BW"
    "@
***************
*** 25291,25297 ****
    [(V8SF "ss") (V4DF "sd") (V8SI "ss") (V4DI "sd")])
  ;; Modes handled by AVX2 vec_dup patterns.
  (define_mode_iterator AVX2_VEC_DUP_MODE
!   [V32QI V16QI V16HI V8HI V8SI V4SI V16HF V8HF])
  
  (define_insn "*vec_dup<mode>"
    [(set (match_operand:AVX2_VEC_DUP_MODE 0 "register_operand" "=x,x,v")
--- 25851,25857 ----
    [(V8SF "ss") (V4DF "sd") (V8SI "ss") (V4DI "sd")])
  ;; Modes handled by AVX2 vec_dup patterns.
  (define_mode_iterator AVX2_VEC_DUP_MODE
!   [V32QI V16QI V16HI V8HI V8SI V4SI V16HF V8HF V16BF V8BF])
  
  (define_insn "*vec_dup<mode>"
    [(set (match_operand:AVX2_VEC_DUP_MODE 0 "register_operand" "=x,x,v")
***************
*** 25644,25650 ****
  	(unspec:AVX256MODE2P
  	  [(match_operand:AVX256MODE2P 1 "register_operand" "x")
  	   (match_operand:AVX256MODE2P 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
  	  UNSPEC_VPERMIL2F128))]
    "TARGET_AVX"
    "vperm2<i128>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
--- 26204,26210 ----
  	(unspec:AVX256MODE2P
  	  [(match_operand:AVX256MODE2P 1 "register_operand" "x")
  	   (match_operand:AVX256MODE2P 2 "nonimmediate_operand" "xm")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_VPERMIL2F128))]
    "TARGET_AVX"
    "vperm2<i128>\t{%3, %2, %1, %0|%0, %1, %2, %3}"
***************
*** 25684,25690 ****
        (vec_select:V_128
  	(match_operand:V_128 1 "register_operand" "0,Yw")
  	(match_parallel 2 "palignr_operand"
! 	  [(match_operand 3 "const_int_operand" "n,n")])))]
    "TARGET_SSSE3"
  {
    operands[2] = (GEN_INT (INTVAL (operands[3])
--- 26244,26250 ----
        (vec_select:V_128
  	(match_operand:V_128 1 "register_operand" "0,Yw")
  	(match_parallel 2 "palignr_operand"
! 	  [(match_operand 3 "const_int_operand")])))]
    "TARGET_SSSE3"
  {
    operands[2] = (GEN_INT (INTVAL (operands[3])
***************
*** 26054,26059 ****
--- 26614,26620 ----
     (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") V4SI
     (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX") V2DI
     (V32HF "TARGET_AVX512F") (V16HF "TARGET_AVX") V8HF
+    (V32BF "TARGET_AVX512F") (V16BF "TARGET_AVX") V8BF
     (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
     (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX") (V2DF "TARGET_SSE2")
     (V4TI "TARGET_AVX512F") (V2TI "TARGET_AVX")])
***************
*** 26066,26071 ****
--- 26627,26633 ----
     (V16SI "TARGET_AVX512F") (V8SI "TARGET_AVX") V4SI
     (V8DI "TARGET_AVX512F") (V4DI "TARGET_AVX")
     (V32HF "TARGET_AVX512F") (V16HF "TARGET_AVX") V8HF
+    (V32BF "TARGET_AVX512F") (V16BF "TARGET_AVX") V8BF
     (V16SF "TARGET_AVX512F") (V8SF "TARGET_AVX") V4SF
     (V8DF "TARGET_AVX512F") (V4DF "TARGET_AVX")
     (V4TI "TARGET_AVX512F")])
***************
*** 26354,26360 ****
    [(set (match_operand:V8HI 0 "register_operand" "=v")
  	(vec_concat:V8HI
  	  (unspec:V4HI [(match_operand:V4SF 1 "register_operand" "v")
! 			(match_operand:SI 2 "const_0_to_255_operand" "N")]
  		       UNSPEC_VCVTPS2PH)
  	  (match_operand:V4HI 3 "const0_operand")))]
    "(TARGET_F16C || TARGET_AVX512VL) && <mask_avx512vl_condition>"
--- 26916,26922 ----
    [(set (match_operand:V8HI 0 "register_operand" "=v")
  	(vec_concat:V8HI
  	  (unspec:V4HI [(match_operand:V4SF 1 "register_operand" "v")
! 			(match_operand:SI 2 "const_0_to_255_operand")]
  		       UNSPEC_VCVTPS2PH)
  	  (match_operand:V4HI 3 "const0_operand")))]
    "(TARGET_F16C || TARGET_AVX512VL) && <mask_avx512vl_condition>"
***************
*** 26366,26372 ****
  (define_insn "*vcvtps2ph_store<merge_mask_name>"
    [(set (match_operand:V4HI 0 "memory_operand" "=m")
  	(unspec:V4HI [(match_operand:V4SF 1 "register_operand" "v")
! 		      (match_operand:SI 2 "const_0_to_255_operand" "N")]
  		     UNSPEC_VCVTPS2PH))]
    "TARGET_F16C || TARGET_AVX512VL"
    "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
--- 26928,26934 ----
  (define_insn "*vcvtps2ph_store<merge_mask_name>"
    [(set (match_operand:V4HI 0 "memory_operand" "=m")
  	(unspec:V4HI [(match_operand:V4SF 1 "register_operand" "v")
! 		      (match_operand:SI 2 "const_0_to_255_operand")]
  		     UNSPEC_VCVTPS2PH))]
    "TARGET_F16C || TARGET_AVX512VL"
    "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
***************
*** 26377,26383 ****
  (define_insn "vcvtps2ph256<mask_name>"
    [(set (match_operand:V8HI 0 "register_operand" "=v")
  	(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "v")
! 		      (match_operand:SI 2 "const_0_to_255_operand" "N")]
  		     UNSPEC_VCVTPS2PH))]
    "TARGET_F16C || TARGET_AVX512VL"
    "vcvtps2ph\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
--- 26939,26945 ----
  (define_insn "vcvtps2ph256<mask_name>"
    [(set (match_operand:V8HI 0 "register_operand" "=v")
  	(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "v")
! 		      (match_operand:SI 2 "const_0_to_255_operand")]
  		     UNSPEC_VCVTPS2PH))]
    "TARGET_F16C || TARGET_AVX512VL"
    "vcvtps2ph\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
***************
*** 26389,26395 ****
  (define_insn "*vcvtps2ph256<merge_mask_name>"
    [(set (match_operand:V8HI 0 "memory_operand" "=m")
  	(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "v")
! 		      (match_operand:SI 2 "const_0_to_255_operand" "N")]
  		     UNSPEC_VCVTPS2PH))]
    "TARGET_F16C || TARGET_AVX512VL"
    "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
--- 26951,26957 ----
  (define_insn "*vcvtps2ph256<merge_mask_name>"
    [(set (match_operand:V8HI 0 "memory_operand" "=m")
  	(unspec:V8HI [(match_operand:V8SF 1 "register_operand" "v")
! 		      (match_operand:SI 2 "const_0_to_255_operand")]
  		     UNSPEC_VCVTPS2PH))]
    "TARGET_F16C || TARGET_AVX512VL"
    "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
***************
*** 26398,26411 ****
     (set_attr "btver2_decode" "vector")
     (set_attr "mode" "V8SF")])
  
! (define_insn "<mask_codefor>avx512f_vcvtps2ph512<mask_name>"
    [(set (match_operand:V16HI 0 "register_operand" "=v")
  	(unspec:V16HI
  	  [(match_operand:V16SF 1 "register_operand" "v")
! 	   (match_operand:SI 2 "const_0_to_255_operand" "N")]
  	  UNSPEC_VCVTPS2PH))]
    "TARGET_AVX512F"
!   "vcvtps2ph\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}"
    [(set_attr "type" "ssecvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "V16SF")])
--- 26960,26999 ----
     (set_attr "btver2_decode" "vector")
     (set_attr "mode" "V8SF")])
  
! ;; vcvtps2ph is special, it encodes {sae} in evex, but round control in the imm
! ;; For intrinsic _mm512_cvt_roundps_ph (a, imm), imm contains both {sae}
! ;; and round control, we need to separate it in the assembly output.
! ;; op2 in avx512f_vcvtps2ph512_mask_sae contains both sae and round control.
! (define_expand "avx512f_vcvtps2ph512_mask_sae"
!  [(set (match_operand:V16HI 0 "register_operand" "=v")
!        (vec_merge:V16HI
! 	 (unspec:V16HI
! 	   [(match_operand:V16SF 1 "register_operand" "v")
! 	   (match_operand:SI 2 "const_0_to_255_operand")]
! 	   UNSPEC_VCVTPS2PH)
! 	 (match_operand:V16HI 3 "nonimm_or_0_operand")
! 	 (match_operand:HI 4 "register_operand")))]
!   "TARGET_AVX512F"
! {
!   int round = INTVAL (operands[2]);
!   /* Separate {sae} from rounding control imm,
!      imm[3:7] will be ignored by the instruction.  */
!   if (round & 8)
!     {
!       emit_insn (gen_avx512f_vcvtps2ph512_mask_round (operands[0], operands[1],
! 	  operands[2], operands[3], operands[4], GEN_INT (8)));
!       DONE;
!     }
! })
! 
! (define_insn "<mask_codefor>avx512f_vcvtps2ph512<mask_name><round_saeonly_name>"
    [(set (match_operand:V16HI 0 "register_operand" "=v")
  	(unspec:V16HI
  	  [(match_operand:V16SF 1 "register_operand" "v")
! 	   (match_operand:SI 2 "const_0_to_255_operand")]
  	  UNSPEC_VCVTPS2PH))]
    "TARGET_AVX512F"
!   "vcvtps2ph\t{%2, <round_saeonly_mask_op3>%1, %0<mask_operand3>|%0<mask_operand3>, %1<round_saeonly_mask_op3>, %2}"
    [(set_attr "type" "ssecvt")
     (set_attr "prefix" "evex")
     (set_attr "mode" "V16SF")])
***************
*** 26414,26420 ****
    [(set (match_operand:V16HI 0 "memory_operand" "=m")
  	(unspec:V16HI
  	  [(match_operand:V16SF 1 "register_operand" "v")
! 	   (match_operand:SI 2 "const_0_to_255_operand" "N")]
  	  UNSPEC_VCVTPS2PH))]
    "TARGET_AVX512F"
    "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
--- 27002,27008 ----
    [(set (match_operand:V16HI 0 "memory_operand" "=m")
  	(unspec:V16HI
  	  [(match_operand:V16SF 1 "register_operand" "v")
! 	   (match_operand:SI 2 "const_0_to_255_operand")]
  	  UNSPEC_VCVTPS2PH))]
    "TARGET_AVX512F"
    "vcvtps2ph\t{%2, %1, %0<merge_mask_operand3>|%0<merge_mask_operand3>, %1, %2}"
***************
*** 26472,26478 ****
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 4 "register_operand" "x")
! 		 (match_operand:SI 6 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:VEC_GATHER_MODE 5 "register_operand" "1")]
--- 27060,27066 ----
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 4 "register_operand" "x")
! 		 (match_operand:SI 6 "const1248_operand")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:VEC_GATHER_MODE 5 "register_operand" "1")]
***************
*** 26492,26498 ****
  	     [(unspec:P
  		[(match_operand:P 2 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 3 "register_operand" "x")
! 		 (match_operand:SI 5 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:VEC_GATHER_MODE 4 "register_operand" "1")]
--- 27080,27086 ----
  	     [(unspec:P
  		[(match_operand:P 2 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 3 "register_operand" "x")
! 		 (match_operand:SI 5 "const1248_operand")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:VEC_GATHER_MODE 4 "register_operand" "1")]
***************
*** 26533,26539 ****
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 4 "register_operand" "x")
! 		 (match_operand:SI 6 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:<VEC_GATHER_SRCDI> 5 "register_operand" "1")]
--- 27121,27127 ----
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 4 "register_operand" "x")
! 		 (match_operand:SI 6 "const1248_operand")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:<VEC_GATHER_SRCDI> 5 "register_operand" "1")]
***************
*** 26553,26559 ****
  	     [(unspec:P
  		[(match_operand:P 2 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "x")
! 		 (match_operand:SI 5 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:<VEC_GATHER_SRCDI> 4 "register_operand" "1")]
--- 27141,27147 ----
  	     [(unspec:P
  		[(match_operand:P 2 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "x")
! 		 (match_operand:SI 5 "const1248_operand")]
  		UNSPEC_VSIBADDR)])
  	   (mem:BLK (scratch))
  	   (match_operand:<VEC_GATHER_SRCDI> 4 "register_operand" "1")]
***************
*** 26578,26584 ****
  	       [(unspec:P
  		  [(match_operand:P 3 "vsib_address_operand" "Tv")
  		   (match_operand:<VEC_GATHER_IDXDI> 4 "register_operand" "x")
! 		   (match_operand:SI 6 "const1248_operand" "n")]
  		  UNSPEC_VSIBADDR)])
  	     (mem:BLK (scratch))
  	     (match_operand:<VEC_GATHER_SRCDI> 5 "register_operand" "1")]
--- 27166,27172 ----
  	       [(unspec:P
  		  [(match_operand:P 3 "vsib_address_operand" "Tv")
  		   (match_operand:<VEC_GATHER_IDXDI> 4 "register_operand" "x")
! 		   (match_operand:SI 6 "const1248_operand")]
  		  UNSPEC_VSIBADDR)])
  	     (mem:BLK (scratch))
  	     (match_operand:<VEC_GATHER_SRCDI> 5 "register_operand" "1")]
***************
*** 26601,26607 ****
  	       [(unspec:P
  		  [(match_operand:P 2 "vsib_address_operand" "Tv")
  		   (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "x")
! 		   (match_operand:SI 5 "const1248_operand" "n")]
  		  UNSPEC_VSIBADDR)])
  	     (mem:BLK (scratch))
  	     (match_operand:<VEC_GATHER_SRCDI> 4 "register_operand" "1")]
--- 27189,27195 ----
  	       [(unspec:P
  		  [(match_operand:P 2 "vsib_address_operand" "Tv")
  		   (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "x")
! 		   (match_operand:SI 5 "const1248_operand")]
  		  UNSPEC_VSIBADDR)])
  	     (mem:BLK (scratch))
  	     (match_operand:<VEC_GATHER_SRCDI> 4 "register_operand" "1")]
***************
*** 26643,26649 ****
  	     [(unspec:P
  		[(match_operand:P 4 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 3 "register_operand" "v")
! 		 (match_operand:SI 5 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:<avx512fmaskmode> 2 "=&Yk"))]
--- 27231,27237 ----
  	     [(unspec:P
  		[(match_operand:P 4 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 3 "register_operand" "v")
! 		 (match_operand:SI 5 "const1248_operand")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:<avx512fmaskmode> 2 "=&Yk"))]
***************
*** 26664,26670 ****
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
! 		 (match_operand:SI 4 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:<avx512fmaskmode> 1 "=&Yk"))]
--- 27252,27258 ----
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
! 		 (match_operand:SI 4 "const1248_operand")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:<avx512fmaskmode> 1 "=&Yk"))]
***************
*** 26705,26711 ****
  	     [(unspec:P
  		[(match_operand:P 4 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "v")
! 		 (match_operand:SI 5 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:QI 2 "=&Yk"))]
--- 27293,27299 ----
  	     [(unspec:P
  		[(match_operand:P 4 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 3 "register_operand" "v")
! 		 (match_operand:SI 5 "const1248_operand")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:QI 2 "=&Yk"))]
***************
*** 26726,26732 ****
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
! 		 (match_operand:SI 4 "const1248_operand" "n")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:QI 1 "=&Yk"))]
--- 27314,27320 ----
  	     [(unspec:P
  		[(match_operand:P 3 "vsib_address_operand" "Tv")
  		 (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
! 		 (match_operand:SI 4 "const1248_operand")]
  		UNSPEC_VSIBADDR)])]
  	  UNSPEC_GATHER))
     (clobber (match_scratch:QI 1 "=&Yk"))]
***************
*** 26771,26777 ****
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand" "n")
  	      (match_operand:<avx512fmaskmode> 6 "register_operand" "1")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
--- 27359,27365 ----
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXSI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand")
  	      (match_operand:<avx512fmaskmode> 6 "register_operand" "1")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
***************
*** 26811,26817 ****
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand" "n")
  	      (match_operand:QI 6 "register_operand" "1")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
--- 27399,27405 ----
  	  [(unspec:P
  	     [(match_operand:P 0 "vsib_address_operand" "Tv")
  	      (match_operand:<VEC_GATHER_IDXDI> 2 "register_operand" "v")
! 	      (match_operand:SI 4 "const1248_operand")
  	      (match_operand:QI 6 "register_operand" "1")]
  	     UNSPEC_VSIBADDR)])
  	(unspec:VI48F
***************
*** 27032,27038 ****
    [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k")
            (unspec:<avx512fmaskmode>
              [(match_operand:VFH_AVX512VL 1 "vector_operand" "vm")
!              (match_operand 2 "const_0_to_255_operand" "n")]
               UNSPEC_FPCLASS))]
     "TARGET_AVX512DQ || VALID_AVX512FP16_REG_MODE(<MODE>mode)"
     "vfpclass<ssemodesuffix><vecmemsuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2}";
--- 27620,27626 ----
    [(set (match_operand:<avx512fmaskmode> 0 "register_operand" "=k")
            (unspec:<avx512fmaskmode>
              [(match_operand:VFH_AVX512VL 1 "vector_operand" "vm")
!              (match_operand 2 "const_0_to_255_operand")]
               UNSPEC_FPCLASS))]
     "TARGET_AVX512DQ || VALID_AVX512FP16_REG_MODE(<MODE>mode)"
     "vfpclass<ssemodesuffix><vecmemsuffix>\t{%2, %1, %0<mask_scalar_merge_operand3>|%0<mask_scalar_merge_operand3>, %1, %2}";
***************
*** 27046,27052 ****
  	(and:<avx512fmaskmode>
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH_128 1 "nonimmediate_operand" "vm")
!              (match_operand 2 "const_0_to_255_operand" "n")]
  	    UNSPEC_FPCLASS)
  	  (const_int 1)))]
     "TARGET_AVX512DQ || VALID_AVX512FP16_REG_MODE(<MODE>mode)"
--- 27634,27640 ----
  	(and:<avx512fmaskmode>
  	  (unspec:<avx512fmaskmode>
  	    [(match_operand:VFH_128 1 "nonimmediate_operand" "vm")
!              (match_operand 2 "const_0_to_255_operand")]
  	    UNSPEC_FPCLASS)
  	  (const_int 1)))]
     "TARGET_AVX512DQ || VALID_AVX512FP16_REG_MODE(<MODE>mode)"
***************
*** 27170,27176 ****
  	(unspec:V4SI
  	  [(match_operand:V4SI 1 "register_operand" "0")
  	   (match_operand:V4SI 2 "vector_operand" "xBm")
! 	   (match_operand:SI 3 "const_0_to_3_operand" "n")]
  	  UNSPEC_SHA1RNDS4))]
    "TARGET_SHA"
    "sha1rnds4\t{%3, %2, %0|%0, %2, %3}"
--- 27758,27764 ----
  	(unspec:V4SI
  	  [(match_operand:V4SI 1 "register_operand" "0")
  	   (match_operand:V4SI 2 "vector_operand" "xBm")
! 	   (match_operand:SI 3 "const_0_to_3_operand")]
  	  UNSPEC_SHA1RNDS4))]
    "TARGET_SHA"
    "sha1rnds4\t{%3, %2, %0|%0, %2, %3}"
***************
*** 27256,27262 ****
  (define_int_attr vpmadd52type
    [(UNSPEC_VPMADD52LUQ "luq") (UNSPEC_VPMADD52HUQ "huq")])
  
! (define_expand "vpamdd52huq<mode>_maskz"
    [(match_operand:VI8_AVX512VL 0 "register_operand")
     (match_operand:VI8_AVX512VL 1 "register_operand")
     (match_operand:VI8_AVX512VL 2 "register_operand")
--- 27844,27850 ----
  (define_int_attr vpmadd52type
    [(UNSPEC_VPMADD52LUQ "luq") (UNSPEC_VPMADD52HUQ "huq")])
  
! (define_expand "vpmadd52huq<mode>_maskz"
    [(match_operand:VI8_AVX512VL 0 "register_operand")
     (match_operand:VI8_AVX512VL 1 "register_operand")
     (match_operand:VI8_AVX512VL 2 "register_operand")
***************
*** 27264,27276 ****
     (match_operand:<avx512fmaskmode> 4 "register_operand")]
    "TARGET_AVX512IFMA"
  {
!   emit_insn (gen_vpamdd52huq<mode>_maskz_1 (
      operands[0], operands[1], operands[2], operands[3],
      CONST0_RTX (<MODE>mode), operands[4]));
    DONE;
  })
  
! (define_expand "vpamdd52luq<mode>_maskz"
    [(match_operand:VI8_AVX512VL 0 "register_operand")
     (match_operand:VI8_AVX512VL 1 "register_operand")
     (match_operand:VI8_AVX512VL 2 "register_operand")
--- 27852,27864 ----
     (match_operand:<avx512fmaskmode> 4 "register_operand")]
    "TARGET_AVX512IFMA"
  {
!   emit_insn (gen_vpmadd52huq<mode>_maskz_1 (
      operands[0], operands[1], operands[2], operands[3],
      CONST0_RTX (<MODE>mode), operands[4]));
    DONE;
  })
  
! (define_expand "vpmadd52luq<mode>_maskz"
    [(match_operand:VI8_AVX512VL 0 "register_operand")
     (match_operand:VI8_AVX512VL 1 "register_operand")
     (match_operand:VI8_AVX512VL 2 "register_operand")
***************
*** 27278,27303 ****
     (match_operand:<avx512fmaskmode> 4 "register_operand")]
    "TARGET_AVX512IFMA"
  {
!   emit_insn (gen_vpamdd52luq<mode>_maskz_1 (
      operands[0], operands[1], operands[2], operands[3],
      CONST0_RTX (<MODE>mode), operands[4]));
    DONE;
  })
  
! (define_insn "vpamdd52<vpmadd52type><mode><sd_maskz_name>"
!   [(set (match_operand:VI8_AVX512VL 0 "register_operand" "=v")
! 	(unspec:VI8_AVX512VL
! 	  [(match_operand:VI8_AVX512VL 1 "register_operand" "0")
! 	   (match_operand:VI8_AVX512VL 2 "register_operand" "v")
! 	   (match_operand:VI8_AVX512VL 3 "nonimmediate_operand" "vm")]
  	  VPMADD52))]
    "TARGET_AVX512IFMA"
!   "vpmadd52<vpmadd52type>\t{%3, %2, %0<sd_mask_op4>|%0<sd_mask_op4>, %2, %3}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn "vpamdd52<vpmadd52type><mode>_mask"
    [(set (match_operand:VI8_AVX512VL 0 "register_operand" "=v")
  	(vec_merge:VI8_AVX512VL
  	  (unspec:VI8_AVX512VL
--- 27866,27923 ----
     (match_operand:<avx512fmaskmode> 4 "register_operand")]
    "TARGET_AVX512IFMA"
  {
!   emit_insn (gen_vpmadd52luq<mode>_maskz_1 (
      operands[0], operands[1], operands[2], operands[3],
      CONST0_RTX (<MODE>mode), operands[4]));
    DONE;
  })
  
! (define_insn "vpmadd52<vpmadd52type>v8di"
!   [(set (match_operand:V8DI 0 "register_operand" "=v")
! 	(unspec:V8DI
! 	  [(match_operand:V8DI 1 "register_operand" "0")
! 	   (match_operand:V8DI 2 "register_operand" "v")
! 	   (match_operand:V8DI 3 "nonimmediate_operand" "vm")]
  	  VPMADD52))]
    "TARGET_AVX512IFMA"
!   "vpmadd52<vpmadd52type>\t{%3, %2, %0|%0, %2, %3}"
!   [(set_attr "type" "ssemuladd")
!    (set_attr "prefix" "evex")
!    (set_attr "mode" "XI")])
! 
! (define_insn "vpmadd52<vpmadd52type><mode>"
!   [(set (match_operand:VI8_AVX2 0 "register_operand" "=x,v")
! 	(unspec:VI8_AVX2
! 	  [(match_operand:VI8_AVX2 1 "register_operand" "0,0")
! 	   (match_operand:VI8_AVX2 2 "register_operand" "x,v")
! 	   (match_operand:VI8_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  VPMADD52))]
!   "TARGET_AVXIFMA || (TARGET_AVX512IFMA && TARGET_AVX512VL)"
!   "@
!   %{vex%} vpmadd52<vpmadd52type>\t{%3, %2, %0|%0, %2, %3}
!   vpmadd52<vpmadd52type>\t{%3, %2, %0|%0, %2, %3}"
!   [(set_attr "isa" "avxifma,avx512ifmavl")
!    (set_attr "type" "ssemuladd")
!    (set_attr "prefix" "vex,evex")
!    (set_attr "mode" "<sseinsnmode>")])
! 
! (define_insn "vpmadd52<vpmadd52type><mode>_maskz_1"
!   [(set (match_operand:VI8_AVX512VL 0 "register_operand" "=v")
! 	(vec_merge:VI8_AVX512VL
! 	  (unspec:VI8_AVX512VL
! 	    [(match_operand:VI8_AVX512VL 1 "register_operand" "0")
! 	     (match_operand:VI8_AVX512VL 2 "register_operand" "v")
! 	     (match_operand:VI8_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    VPMADD52)
! 	  (match_operand:VI8_AVX512VL 4 "const0_operand" "C")
! 	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
!   "TARGET_AVX512IFMA"
!   "vpmadd52<vpmadd52type>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3}"
    [(set_attr "type" "ssemuladd")
     (set_attr "prefix" "evex")
     (set_attr "mode" "<sseinsnmode>")])
  
! (define_insn "vpmadd52<vpmadd52type><mode>_mask"
    [(set (match_operand:VI8_AVX512VL 0 "register_operand" "=v")
  	(vec_merge:VI8_AVX512VL
  	  (unspec:VI8_AVX512VL
***************
*** 27397,27403 ****
  	    [(match_operand:V16SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD)
! 	  (match_operand:V16SF 4 "const0_operand" "C")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
--- 28017,28023 ----
  	    [(match_operand:V16SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD)
! 	  (match_operand:V16SF 4 "const0_operand")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
***************
*** 27438,27444 ****
  	    [(match_operand:V4SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD)
! 	  (match_operand:V4SF 4 "const0_operand" "C")
  	  (match_operand:QI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}"
--- 28058,28064 ----
  	    [(match_operand:V4SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FMADD)
! 	  (match_operand:V4SF 4 "const0_operand")
  	  (match_operand:QI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}"
***************
*** 27479,27485 ****
  	    [(match_operand:V16SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD)
! 	  (match_operand:V16SF 4 "const0_operand" "C")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fnmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
--- 28099,28105 ----
  	    [(match_operand:V16SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD)
! 	  (match_operand:V16SF 4 "const0_operand")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fnmaddps\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
***************
*** 27520,27526 ****
  	    [(match_operand:V4SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD)
! 	  (match_operand:V4SF 4 "const0_operand" "C")
  	  (match_operand:QI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fnmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}"
--- 28140,28146 ----
  	    [(match_operand:V4SF 1 "register_operand" "0")
  	     (match_operand:V64SF 2 "register_operand" "v")
  	     (match_operand:V4SF 3 "memory_operand" "m")] UNSPEC_VP4FNMADD)
! 	  (match_operand:V4SF 4 "const0_operand")
  	  (match_operand:QI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124FMAPS"
    "v4fnmaddss\t{%3, %x2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %x2, %3}"
***************
*** 27561,27567 ****
  	    [(match_operand:V16SI 1 "register_operand" "0")
  	     (match_operand:V64SI 2 "register_operand" "v")
  	     (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSD)
! 	  (match_operand:V16SI 4 "const0_operand" "C")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124VNNIW"
    "vp4dpwssd\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
--- 28181,28187 ----
  	    [(match_operand:V16SI 1 "register_operand" "0")
  	     (match_operand:V64SI 2 "register_operand" "v")
  	     (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSD)
! 	  (match_operand:V16SI 4 "const0_operand")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124VNNIW"
    "vp4dpwssd\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
***************
*** 27602,27608 ****
  	    [(match_operand:V16SI 1 "register_operand" "0")
  	     (match_operand:V64SI 2 "register_operand" "v")
  	     (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSDS)
! 	  (match_operand:V16SI 4 "const0_operand" "C")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124VNNIW"
    "vp4dpwssds\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
--- 28222,28228 ----
  	    [(match_operand:V16SI 1 "register_operand" "0")
  	     (match_operand:V64SI 2 "register_operand" "v")
  	     (match_operand:V4SI 3 "memory_operand" "m")] UNSPEC_VP4DPWSSDS)
! 	  (match_operand:V16SI 4 "const0_operand")
  	  (match_operand:HI 5 "register_operand" "Yk")))]
    "TARGET_AVX5124VNNIW"
    "vp4dpwssds\t{%3, %g2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %g2, %3}"
***************
*** 27678,27684 ****
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "0,v")
  	   (match_operand:VI1_AVX512F 2 "vector_operand" "xBm,vm")
! 	   (match_operand 3 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_GF2P8AFFINEINV))]
    "TARGET_GFNI"
    "@
--- 28298,28304 ----
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "0,v")
  	   (match_operand:VI1_AVX512F 2 "vector_operand" "xBm,vm")
! 	   (match_operand 3 "const_0_to_255_operand")]
  	  UNSPEC_GF2P8AFFINEINV))]
    "TARGET_GFNI"
    "@
***************
*** 27695,27701 ****
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "0,v")
  	   (match_operand:VI1_AVX512F 2 "vector_operand" "xBm,vm")
! 	   (match_operand 3 "const_0_to_255_operand" "n,n")]
  	  UNSPEC_GF2P8AFFINE))]
    "TARGET_GFNI"
    "@
--- 28315,28321 ----
  	(unspec:VI1_AVX512F
  	  [(match_operand:VI1_AVX512F 1 "register_operand" "0,v")
  	   (match_operand:VI1_AVX512F 2 "vector_operand" "xBm,vm")
! 	   (match_operand 3 "const_0_to_255_operand")]
  	  UNSPEC_GF2P8AFFINE))]
    "TARGET_GFNI"
    "@
***************
*** 27728,27734 ****
  	(unspec:VI248_AVX512VL
  	  [(match_operand:VI248_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI248_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
  	  UNSPEC_VPSHRD))]
    "TARGET_AVX512VBMI2"
    "vpshrd<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
--- 28348,28354 ----
  	(unspec:VI248_AVX512VL
  	  [(match_operand:VI248_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI248_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_VPSHRD))]
    "TARGET_AVX512VBMI2"
    "vpshrd<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
***************
*** 27739,27745 ****
  	(unspec:VI248_AVX512VL
  	  [(match_operand:VI248_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI248_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_255_operand" "n")]
  	  UNSPEC_VPSHLD))]
    "TARGET_AVX512VBMI2"
    "vpshld<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
--- 28359,28365 ----
  	(unspec:VI248_AVX512VL
  	  [(match_operand:VI248_AVX512VL 1 "register_operand" "v")
  	   (match_operand:VI248_AVX512VL 2 "nonimmediate_operand" "vm")
! 	   (match_operand:SI 3 "const_0_to_255_operand")]
  	  UNSPEC_VPSHLD))]
    "TARGET_AVX512VBMI2"
    "vpshld<ssemodesuffix>\t{%3, %2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2, %3 }"
***************
*** 27795,27801 ****
  	     (match_operand:VI248_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI248_AVX512VL 3 "nonimmediate_operand" "vm")]
  	    UNSPEC_VPSHRDV)
! 	  (match_operand:VI248_AVX512VL 4 "const0_operand" "C")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VBMI2"
    "vpshrdv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
--- 28415,28421 ----
  	     (match_operand:VI248_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI248_AVX512VL 3 "nonimmediate_operand" "vm")]
  	    UNSPEC_VPSHRDV)
! 	  (match_operand:VI248_AVX512VL 4 "const0_operand")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VBMI2"
    "vpshrdv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
***************
*** 27852,27887 ****
  	     (match_operand:VI248_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI248_AVX512VL 3 "nonimmediate_operand" "vm")]
  	    UNSPEC_VPSHLDV)
! 	  (match_operand:VI248_AVX512VL 4 "const0_operand" "C")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VBMI2"
    "vpshldv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
     [(set_attr ("prefix") ("evex"))
     (set_attr "mode" "<sseinsnmode>")])
  
- (define_mode_attr VI1SI
-  [(V64QI "V16SI") (V32QI "V8SI") (V16QI "V4SI")])
- 
- (define_mode_attr vi1si
-  [(V64QI "v16si") (V32QI "v8si") (V16QI "v4si")])
- 
  (define_expand "usdot_prod<mode>"
!   [(match_operand:<VI1SI> 0 "register_operand")
     (match_operand:VI1_AVX512VNNI 1 "register_operand")
     (match_operand:VI1_AVX512VNNI 2 "register_operand")
!    (match_operand:<VI1SI> 3 "register_operand")]
    "(<MODE_SIZE> == 64
      ||((TARGET_AVX512VNNI && TARGET_AVX512VL)
  	    || TARGET_AVXVNNI))"
  {
!   operands[1] = lowpart_subreg (<VI1SI>mode,
  				force_reg (<MODE>mode, operands[1]),
  				<MODE>mode);
!   operands[2] = lowpart_subreg (<VI1SI>mode,
  				force_reg (<MODE>mode, operands[2]),
  				<MODE>mode);
    emit_insn (gen_rtx_SET (operands[0], operands[3]));
!   emit_insn (gen_vpdpbusd_<vi1si> (operands[0], operands[3],
  				  operands[1], operands[2]));
    DONE;
  })
--- 28472,28501 ----
  	     (match_operand:VI248_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI248_AVX512VL 3 "nonimmediate_operand" "vm")]
  	    UNSPEC_VPSHLDV)
! 	  (match_operand:VI248_AVX512VL 4 "const0_operand")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VBMI2"
    "vpshldv<ssemodesuffix>\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
     [(set_attr ("prefix") ("evex"))
     (set_attr "mode" "<sseinsnmode>")])
  
  (define_expand "usdot_prod<mode>"
!   [(match_operand:<ssedvecmode> 0 "register_operand")
     (match_operand:VI1_AVX512VNNI 1 "register_operand")
     (match_operand:VI1_AVX512VNNI 2 "register_operand")
!    (match_operand:<ssedvecmode> 3 "register_operand")]
    "(<MODE_SIZE> == 64
      ||((TARGET_AVX512VNNI && TARGET_AVX512VL)
  	    || TARGET_AVXVNNI))"
  {
!   operands[1] = lowpart_subreg (<ssedvecmode>mode,
  				force_reg (<MODE>mode, operands[1]),
  				<MODE>mode);
!   operands[2] = lowpart_subreg (<ssedvecmode>mode,
  				force_reg (<MODE>mode, operands[2]),
  				<MODE>mode);
    emit_insn (gen_rtx_SET (operands[0], operands[3]));
!   emit_insn (gen_vpdpbusd_<ssedvecmodelower> (operands[0], operands[3],
  				  operands[1], operands[2]));
    DONE;
  })
***************
*** 27892,27898 ****
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPMADDUBSWACCD))]
    "TARGET_AVX512VNNI"
    "vpdpbusd\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
--- 28506,28512 ----
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPDPBUSD))]
    "TARGET_AVX512VNNI"
    "vpdpbusd\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
***************
*** 27903,27909 ****
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPMADDUBSWACCD))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
    %{vex%} vpdpbusd\t{%3, %2, %0|%0, %2, %3}
--- 28517,28523 ----
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPDPBUSD))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
    %{vex%} vpdpbusd\t{%3, %2, %0|%0, %2, %3}
***************
*** 27918,27924 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDUBSWACCD)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
--- 28532,28538 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPBUSD)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
***************
*** 27947,27954 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
! 	    ] UNSPEC_VPMADDUBSWACCD)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpbusd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
--- 28561,28568 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")
! 	    ] UNSPEC_VPDPBUSD)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpbusd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
***************
*** 27960,27966 ****
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPMADDUBSWACCSSD))]
    "TARGET_AVX512VNNI"
    "vpdpbusds\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
--- 28574,28580 ----
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPDPBUSDS))]
    "TARGET_AVX512VNNI"
    "vpdpbusds\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
***************
*** 27971,27977 ****
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPMADDUBSWACCSSD))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
     %{vex%} vpdpbusds\t{%3, %2, %0|%0, %2, %3}
--- 28585,28591 ----
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPDPBUSDS))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
     %{vex%} vpdpbusds\t{%3, %2, %0|%0, %2, %3}
***************
*** 27986,27992 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDUBSWACCSSD)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
--- 28600,28606 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPBUSDS)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
***************
*** 28015,28022 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDUBSWACCSSD)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpbusds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
--- 28629,28636 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPBUSDS)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpbusds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
***************
*** 28028,28034 ****
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPMADDWDACCD))]
    "TARGET_AVX512VNNI"
    "vpdpwssd\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
--- 28642,28648 ----
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPDPWSSD))]
    "TARGET_AVX512VNNI"
    "vpdpwssd\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
***************
*** 28039,28045 ****
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPMADDWDACCD))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
    %{vex%} vpdpwssd\t{%3, %2, %0|%0, %2, %3}
--- 28653,28659 ----
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPDPWSSD))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
    %{vex%} vpdpwssd\t{%3, %2, %0|%0, %2, %3}
***************
*** 28054,28060 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDWDACCD)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
--- 28668,28674 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPWSSD)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
***************
*** 28083,28090 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDWDACCD)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpwssd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
--- 28697,28704 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPWSSD)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpwssd\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
***************
*** 28096,28102 ****
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPMADDWDACCSSD))]
    "TARGET_AVX512VNNI"
    "vpdpwssds\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
--- 28710,28716 ----
  	  [(match_operand:V16SI 1 "register_operand" "0")
  	   (match_operand:V16SI 2 "register_operand" "v")
  	   (match_operand:V16SI 3 "nonimmediate_operand" "vm")]
! 	  UNSPEC_VPDPWSSDS))]
    "TARGET_AVX512VNNI"
    "vpdpwssds\t{%3, %2, %0|%0, %2, %3}"
    [(set_attr ("prefix") ("evex"))])
***************
*** 28107,28113 ****
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPMADDWDACCSSD))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
    %{vex%} vpdpwssds\t{%3, %2, %0|%0, %2, %3}
--- 28721,28727 ----
  	  [(match_operand:VI4_AVX2 1 "register_operand" "0,0")
  	   (match_operand:VI4_AVX2 2 "register_operand" "x,v")
  	   (match_operand:VI4_AVX2 3 "nonimmediate_operand" "xm,vm")]
! 	  UNSPEC_VPDPWSSDS))]
    "TARGET_AVXVNNI || (TARGET_AVX512VNNI && TARGET_AVX512VL)"
    "@
    %{vex%} vpdpwssds\t{%3, %2, %0|%0, %2, %3}
***************
*** 28122,28128 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDWDACCSSD)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
--- 28736,28742 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPWSSDS)
  	  (match_dup 1)
  	  (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
***************
*** 28151,28158 ****
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPMADDWDACCSSD)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand" "C")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpwssds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
--- 28765,28772 ----
  	    [(match_operand:VI4_AVX512VL 1 "register_operand" "0")
  	     (match_operand:VI4_AVX512VL 2 "register_operand" "v")
  	     (match_operand:VI4_AVX512VL 3 "nonimmediate_operand" "vm")]
! 	    UNSPEC_VPDPWSSDS)
! 	  (match_operand:VI4_AVX512VL 4 "const0_operand")
  	  (match_operand:<avx512fmaskmode> 5 "register_operand" "Yk")))]
    "TARGET_AVX512VNNI"
    "vpdpwssds\t{%3, %2, %0%{%5%}%{z%}|%0%{%5%}%{z%}, %2, %3 }"
***************
*** 28202,28208 ****
    [(set (match_operand:VI8_FVL 0 "register_operand" "=v")
  	(unspec:VI8_FVL [(match_operand:VI8_FVL 1 "register_operand" "v")
  			 (match_operand:VI8_FVL 2 "vector_operand" "vm")
! 			 (match_operand:SI 3 "const_0_to_255_operand" "n")]
  			UNSPEC_VPCLMULQDQ))]
    "TARGET_VPCLMULQDQ"
    "vpclmulqdq\t{%3, %2, %1, %0|%0, %1, %2, %3}"
--- 28816,28822 ----
    [(set (match_operand:VI8_FVL 0 "register_operand" "=v")
  	(unspec:VI8_FVL [(match_operand:VI8_FVL 1 "register_operand" "v")
  			 (match_operand:VI8_FVL 2 "vector_operand" "vm")
! 			 (match_operand:SI 3 "const_0_to_255_operand")]
  			UNSPEC_VPCLMULQDQ))]
    "TARGET_VPCLMULQDQ"
    "vpclmulqdq\t{%3, %2, %1, %0|%0, %1, %2, %3}"
***************
*** 28267,28307 ****
    "vp2intersectd\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr ("prefix") ("evex"))])
  
! (define_mode_iterator BF16 [V32HI (V16HI "TARGET_AVX512VL") (V8HI "TARGET_AVX512VL")])
  ;; Converting from BF to SF
  (define_mode_attr bf16_cvt_2sf
!   [(V32HI  "V16SF") (V16HI  "V8SF") (V8HI  "V4SF")])
  ;; Converting from SF to BF
  (define_mode_attr sf_cvt_bf16
!   [(V4SF  "V8HI") (V8SF  "V8HI") (V16SF  "V16HI")])
  ;; Mapping from BF to SF
  (define_mode_attr sf_bf16
!   [(V4SF  "V8HI") (V8SF  "V16HI") (V16SF  "V32HI")])
  
  (define_expand "avx512f_cvtne2ps2bf16_<mode>_maskz"
!   [(match_operand:BF16 0 "register_operand")
     (match_operand:<bf16_cvt_2sf> 1 "register_operand")
!    (match_operand:<bf16_cvt_2sf> 2 "register_operand")
     (match_operand:<avx512fmaskmode> 3 "register_operand")]
    "TARGET_AVX512BF16"
  {
!   emit_insn (gen_avx512f_cvtne2ps2bf16_<mode>_mask(operands[0], operands[1],
!     operands[2], CONST0_RTX(<MODE>mode), operands[3]));
    DONE;
  })
  
  (define_insn "avx512f_cvtne2ps2bf16_<mode><mask_name>"
!   [(set (match_operand:BF16 0 "register_operand" "=v")
! 	(unspec:BF16
! 	  [(match_operand:<bf16_cvt_2sf> 1 "register_operand" "v")
! 	   (match_operand:<bf16_cvt_2sf> 2 "register_operand" "v")]
!         UNSPEC_VCVTNE2PS2BF16))]
    "TARGET_AVX512BF16"
    "vcvtne2ps2bf16\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}")
  
  (define_expand "avx512f_cvtneps2bf16_<mode>_maskz"
    [(match_operand:<sf_cvt_bf16> 0 "register_operand")
!    (match_operand:VF1_AVX512VL 1 "register_operand")
     (match_operand:<avx512fmaskmode> 2 "register_operand")]
    "TARGET_AVX512BF16"
  {
--- 28881,28985 ----
    "vp2intersectd\t{%2, %1, %0|%0, %1, %2}"
    [(set_attr ("prefix") ("evex"))])
  
! (define_mode_iterator VF_AVX512BF16VL
!   [V32BF (V16BF "TARGET_AVX512VL") (V8BF "TARGET_AVX512VL")])
  ;; Converting from BF to SF
  (define_mode_attr bf16_cvt_2sf
!   [(V32BF  "V16SF") (V16BF  "V8SF") (V8BF  "V4SF")])
  ;; Converting from SF to BF
  (define_mode_attr sf_cvt_bf16
!   [(V8SF  "V8BF") (V16SF  "V16BF")])
  ;; Mapping from BF to SF
  (define_mode_attr sf_bf16
!   [(V4SF  "V8BF") (V8SF  "V16BF") (V16SF  "V32BF")])
  
  (define_expand "avx512f_cvtne2ps2bf16_<mode>_maskz"
!   [(match_operand:VF_AVX512BF16VL 0 "register_operand")
     (match_operand:<bf16_cvt_2sf> 1 "register_operand")
!    (match_operand:<bf16_cvt_2sf> 2 "nonimmediate_operand")
     (match_operand:<avx512fmaskmode> 3 "register_operand")]
    "TARGET_AVX512BF16"
  {
!   emit_insn (gen_avx512f_cvtne2ps2bf16_<mode>_mask(operands[0], operands[2],
!     operands[1], CONST0_RTX(<MODE>mode), operands[3]));
    DONE;
  })
  
  (define_insn "avx512f_cvtne2ps2bf16_<mode><mask_name>"
!   [(set (match_operand:VF_AVX512BF16VL 0 "register_operand" "=v")
! 	(vec_concat:VF_AVX512BF16VL
! 	  (float_truncate:<ssehalfvecmode>
! 	    (match_operand:<bf16_cvt_2sf> 2 "nonimmediate_operand" "vm"))
! 	  (float_truncate:<ssehalfvecmode>
! 	    (match_operand:<bf16_cvt_2sf> 1 "register_operand" "v"))))]
    "TARGET_AVX512BF16"
    "vcvtne2ps2bf16\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}")
  
+ (define_expand "vcvtneps2bf16_v4sf"
+   [(set (match_operand:V8BF 0 "register_operand")
+ 	(vec_concat:V8BF
+ 	  (float_truncate:V4BF
+ 	    (match_operand:V4SF 1 "nonimmediate_operand"))
+ 	  (match_dup 2)))]
+   "TARGET_AVXNECONVERT || (TARGET_AVX512BF16 && TARGET_AVX512VL)"
+   "operands[2] = CONST0_RTX (V4BFmode);")
+ 
+ (define_insn "*vcvtneps2bf16_v4sf"
+   [(set (match_operand:V8BF 0 "register_operand" "=x,v")
+ 	(vec_concat:V8BF
+ 	  (float_truncate:V4BF
+ 	    (match_operand:V4SF 1 "nonimmediate_operand" "xm,vm"))
+ 	  (match_operand:V4BF 2 "const0_operand")))]
+   "TARGET_AVXNECONVERT || (TARGET_AVX512BF16 && TARGET_AVX512VL)"
+   "@
+   %{vex%} vcvtneps2bf16{x}\t{%1, %0|%0, %1}
+   vcvtneps2bf16{x}\t{%1, %0|%0, %1}"
+   [(set_attr "isa" "avxneconvert,avx512bf16vl")
+    (set_attr "prefix" "vex,evex")])
+ 
+ (define_expand "avx512f_cvtneps2bf16_v4sf_maskz"
+   [(match_operand:V8BF 0 "register_operand")
+    (match_operand:V4SF 1 "nonimmediate_operand")
+    (match_operand:QI 2 "register_operand")]
+   "TARGET_AVX512BF16 && TARGET_AVX512VL"
+ {
+   emit_insn (gen_avx512f_cvtneps2bf16_v4sf_mask_1(operands[0], operands[1],
+     CONST0_RTX(V8BFmode), operands[2], CONST0_RTX(V4BFmode)));
+   DONE;
+ })
+ 
+ (define_expand "avx512f_cvtneps2bf16_v4sf_mask"
+   [(match_operand:V8BF 0 "register_operand")
+    (match_operand:V4SF 1 "nonimmediate_operand")
+    (match_operand:V8BF 2 "nonimm_or_0_operand")
+    (match_operand:QI 3 "register_operand")]
+   "TARGET_AVX512BF16 && TARGET_AVX512VL"
+ {
+   emit_insn (gen_avx512f_cvtneps2bf16_v4sf_mask_1(operands[0], operands[1],
+     operands[2], operands[3], CONST0_RTX(V4BFmode)));
+   DONE;
+ })
+ 
+ (define_insn "avx512f_cvtneps2bf16_v4sf_mask_1"
+   [(set (match_operand:V8BF 0 "register_operand" "=v")
+ 	(vec_concat:V8BF
+ 	  (vec_merge:V4BF
+ 	    (float_truncate:V4BF
+ 	      (match_operand:V4SF 1 "nonimmediate_operand" "vm"))
+ 	    (vec_select:V4BF
+ 	      (match_operand:V8BF 2 "nonimm_or_0_operand" "0C")
+ 	      (parallel [(const_int 0) (const_int 1)
+ 			 (const_int 2) (const_int 3)]))
+ 	    (match_operand:QI 3 "register_operand" "Yk"))
+ 	  (match_operand:V4BF 4 "const0_operand")))]
+   "TARGET_AVX512BF16 && TARGET_AVX512VL"
+   "vcvtneps2bf16{x}\t{%1, %0%{%3%}%N2|%0%{%3%}%N2, %1}")
+ 
+ (define_mode_iterator VF1_AVX512_256 [V16SF (V8SF "TARGET_AVX512VL")])
+ 
  (define_expand "avx512f_cvtneps2bf16_<mode>_maskz"
    [(match_operand:<sf_cvt_bf16> 0 "register_operand")
!    (match_operand:VF1_AVX512_256 1 "nonimmediate_operand")
     (match_operand:<avx512fmaskmode> 2 "register_operand")]
    "TARGET_AVX512BF16"
  {
***************
*** 28310,28322 ****
    DONE;
  })
  
  (define_insn "avx512f_cvtneps2bf16_<mode><mask_name>"
    [(set (match_operand:<sf_cvt_bf16> 0 "register_operand" "=v")
! 	(unspec:<sf_cvt_bf16>
! 	  [(match_operand:VF1_AVX512VL 1 "register_operand" "v")]
!         UNSPEC_VCVTNEPS2BF16))]
    "TARGET_AVX512BF16"
!   "vcvtneps2bf16\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}")
  
  (define_expand "avx512f_dpbf16ps_<mode>_maskz"
    [(match_operand:VF1_AVX512VL 0 "register_operand")
--- 28988,29011 ----
    DONE;
  })
  
+ (define_insn "vcvtneps2bf16_v8sf"
+   [(set (match_operand:V8BF 0 "register_operand" "=x,v")
+ 	(float_truncate:V8BF
+ 	  (match_operand:V8SF 1 "nonimmediate_operand" "xm,vm")))]
+   "TARGET_AVXNECONVERT || (TARGET_AVX512BF16 && TARGET_AVX512VL)"
+   "@
+   %{vex%} vcvtneps2bf16{y}\t{%1, %0|%0, %1}
+   vcvtneps2bf16{y}\t{%1, %0|%0, %1}"
+   [(set_attr "isa" "avxneconvert,avx512bf16vl")
+    (set_attr "prefix" "vex,evex")])
+ 
+ 
  (define_insn "avx512f_cvtneps2bf16_<mode><mask_name>"
    [(set (match_operand:<sf_cvt_bf16> 0 "register_operand" "=v")
! 	(float_truncate:<sf_cvt_bf16>
! 	  (match_operand:VF1_AVX512_256 1 "nonimmediate_operand" "vm")))]
    "TARGET_AVX512BF16"
!   "vcvtneps2bf16<qq2phsuff>\t{%1, %0<mask_operand2>|%0<mask_operand2>, %1}")
  
  (define_expand "avx512f_dpbf16ps_<mode>_maskz"
    [(match_operand:VF1_AVX512VL 0 "register_operand")
***************
*** 28336,28342 ****
  	(unspec:VF1_AVX512VL
  	  [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
  	   (match_operand:<sf_bf16> 2 "register_operand" "v")
! 	   (match_operand:<sf_bf16> 3 "register_operand" "v")]
          UNSPEC_VDPBF16PS))]
    "TARGET_AVX512BF16"
    "vdpbf16ps\t{%3, %2, %0<maskz_half_operand4>|%0<maskz_half_operand4>, %2, %3}")
--- 29025,29031 ----
  	(unspec:VF1_AVX512VL
  	  [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
  	   (match_operand:<sf_bf16> 2 "register_operand" "v")
! 	   (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
          UNSPEC_VDPBF16PS))]
    "TARGET_AVX512BF16"
    "vdpbf16ps\t{%3, %2, %0<maskz_half_operand4>|%0<maskz_half_operand4>, %2, %3}")
***************
*** 28347,28353 ****
  	  (unspec:VF1_AVX512VL
  	    [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
  	     (match_operand:<sf_bf16> 2 "register_operand" "v")
! 	     (match_operand:<sf_bf16> 3 "register_operand" "v")]
               UNSPEC_VDPBF16PS)
            (match_dup 1)
            (match_operand:<avx512fmaskhalfmode> 4 "register_operand" "Yk")))]
--- 29036,29042 ----
  	  (unspec:VF1_AVX512VL
  	    [(match_operand:VF1_AVX512VL 1 "register_operand" "0")
  	     (match_operand:<sf_bf16> 2 "register_operand" "v")
! 	     (match_operand:<sf_bf16> 3 "nonimmediate_operand" "vm")]
               UNSPEC_VDPBF16PS)
            (match_dup 1)
            (match_operand:<avx512fmaskhalfmode> 4 "register_operand" "Yk")))]
***************
*** 28404,28410 ****
  
    for (i = 4; i < 7; i++)
      XVECEXP (operands[2], 0, i)
!       = gen_rtx_SET (xmm_regs[i], CONST0_RTX (V2DImode));
  
    XVECEXP (operands[2], 0, 7)
      = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG));
--- 29093,29099 ----
  
    for (i = 4; i < 7; i++)
      XVECEXP (operands[2], 0, i)
!       = gen_rtx_CLOBBER (VOIDmode, xmm_regs[i]);
  
    XVECEXP (operands[2], 0, 7)
      = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG));
***************
*** 28461,28467 ****
  
    for (i = 4; i < 7; i++)
      XVECEXP (operands[2], 0, i + 1)
!       = gen_rtx_SET (xmm_regs[i], CONST0_RTX (V2DImode));
  
    XVECEXP (operands[2], 0, 8)
      = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG));
--- 29150,29156 ----
  
    for (i = 4; i < 7; i++)
      XVECEXP (operands[2], 0, i + 1)
!       = gen_rtx_CLOBBER (VOIDmode, xmm_regs[i]);
  
    XVECEXP (operands[2], 0, 8)
      = gen_rtx_CLOBBER (VOIDmode, gen_rtx_REG (CCmode, FLAGS_REG));
***************
*** 28592,28594 ****
--- 29281,29423 ----
      gcc_unreachable ();
    DONE;
  })
+ 
+ (define_int_iterator VPDOTPROD
+   [UNSPEC_VPDPBSSD
+    UNSPEC_VPDPBSSDS
+    UNSPEC_VPDPBSUD
+    UNSPEC_VPDPBSUDS
+    UNSPEC_VPDPBUUD
+    UNSPEC_VPDPBUUDS])
+ 
+ (define_int_attr vpdotprodtype
+   [(UNSPEC_VPDPBSSD "bssd") (UNSPEC_VPDPBSSDS "bssds")
+    (UNSPEC_VPDPBSUD "bsud") (UNSPEC_VPDPBSUDS "bsuds")
+    (UNSPEC_VPDPBUUD "buud") (UNSPEC_VPDPBUUDS "buuds")])
+ 
+ (define_expand "sdot_prod<mode>"
+   [(match_operand:<ssedvecmode> 0 "register_operand")
+    (match_operand:VI1 1 "register_operand")
+    (match_operand:VI1 2 "register_operand")
+    (match_operand:<ssedvecmode> 3 "register_operand")]
+   "TARGET_AVXVNNIINT8"
+ {
+   operands[1] = lowpart_subreg (<ssedvecmode>mode,
+                                 force_reg (<MODE>mode, operands[1]),
+                                 <MODE>mode);
+   operands[2] = lowpart_subreg (<ssedvecmode>mode,
+                                 force_reg (<MODE>mode, operands[2]),
+                                 <MODE>mode);
+   emit_insn (gen_rtx_SET (operands[0], operands[3]));
+   emit_insn (gen_vpdpbssd_<ssedvecmodelower> (operands[0], operands[3],
+ 				   operands[1], operands[2]));
+   DONE;
+ })
+ 
+ (define_expand "udot_prod<mode>"
+   [(match_operand:<ssedvecmode> 0 "register_operand")
+    (match_operand:VI1 1 "register_operand")
+    (match_operand:VI1 2 "register_operand")
+    (match_operand:<ssedvecmode> 3 "register_operand")]
+   "TARGET_AVXVNNIINT8"
+ {
+   operands[1] = lowpart_subreg (<ssedvecmode>mode,
+                                 force_reg (<MODE>mode, operands[1]),
+                                 <MODE>mode);
+   operands[2] = lowpart_subreg (<ssedvecmode>mode,
+                                 force_reg (<MODE>mode, operands[2]),
+                                 <MODE>mode);
+   emit_insn (gen_rtx_SET (operands[0], operands[3]));
+   emit_insn (gen_vpdpbuud_<ssedvecmodelower> (operands[0], operands[3],
+ 				   operands[1], operands[2]));
+   DONE;
+ })
+ 
+ (define_insn "vpdp<vpdotprodtype>_<mode>"
+   [(set (match_operand:VI4_AVX 0 "register_operand" "=x")
+ 	(unspec:VI4_AVX
+ 	  [(match_operand:VI4_AVX 1 "register_operand" "0")
+ 	   (match_operand:VI4_AVX 2 "register_operand" "x")
+ 	   (match_operand:VI4_AVX 3 "nonimmediate_operand" "xm")]
+ 	  VPDOTPROD))]
+   "TARGET_AVXVNNIINT8"
+   "vpdp<vpdotprodtype>\t{%3, %2, %0|%0, %2, %3}"
+    [(set_attr "prefix" "vex")])
+ 
+ (define_insn "vbcstnebf162ps_<mode>"
+   [(set (match_operand:VF1_128_256 0 "register_operand" "=x")
+ 	(vec_duplicate:VF1_128_256
+ 	  (float_extend:SF
+ 	    (match_operand:BF 1 "memory_operand" "m"))))]
+   "TARGET_AVXNECONVERT"
+   "vbcstnebf162ps\t{%1, %0|%0, %1}"
+   [(set_attr "prefix" "vex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_insn "vbcstnesh2ps_<mode>"
+   [(set (match_operand:VF1_128_256 0 "register_operand" "=x")
+ 	(vec_duplicate:VF1_128_256
+ 	  (float_extend:SF
+ 	    (match_operand:HF 1 "memory_operand" "m"))))]
+   "TARGET_AVXNECONVERT"
+   "vbcstnesh2ps\t{%1, %0|%0, %1}"
+   [(set_attr "prefix" "vex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_mode_iterator V16BFH_256 [V16HF V16BF])
+ 
+ (define_mode_attr bf16_ph
+   [(V8HF "ph") (V16HF "ph")
+    (V8BF "bf16") (V16BF "bf16")])
+ 
+ (define_insn "vcvtnee<bf16_ph>2ps_<mode>"
+   [(set (match_operand:V4SF 0 "register_operand" "=x")
+ 	(float_extend:V4SF
+ 	  (vec_select:<ssehalfvecmode>
+ 	    (match_operand:V8BFH_128 1 "memory_operand" "m")
+ 	    (parallel [(const_int 0) (const_int 2)
+ 		       (const_int 4) (const_int 6)]))))]
+   "TARGET_AVXNECONVERT"
+   "vcvtnee<bf16_ph>2ps\t{%1, %0|%0, %1}"
+   [(set_attr "prefix" "vex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_insn "vcvtnee<bf16_ph>2ps_<mode>"
+   [(set (match_operand:V8SF 0 "register_operand" "=x")
+ 	(float_extend:V8SF
+ 	  (vec_select:<ssehalfvecmode>
+ 	    (match_operand:V16BFH_256 1 "memory_operand" "m")
+ 	    (parallel [(const_int 0) (const_int 2)
+ 		       (const_int 4) (const_int 6)
+ 		       (const_int 8) (const_int 10)
+ 		       (const_int 12) (const_int 14)]))))]
+   "TARGET_AVXNECONVERT"
+   "vcvtnee<bf16_ph>2ps\t{%1, %0|%0, %1}"
+   [(set_attr "prefix" "vex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_insn "vcvtneo<bf16_ph>2ps_<mode>"
+   [(set (match_operand:V4SF 0 "register_operand" "=x")
+ 	(float_extend:V4SF
+ 	  (vec_select:<ssehalfvecmode>
+ 	    (match_operand:V8BFH_128 1 "memory_operand" "m")
+ 	    (parallel [(const_int 1) (const_int 3)
+ 		       (const_int 5) (const_int 7)]))))]
+   "TARGET_AVXNECONVERT"
+   "vcvtneo<bf16_ph>2ps\t{%1, %0|%0, %1}"
+   [(set_attr "prefix" "vex")
+    (set_attr "mode" "<sseinsnmode>")])
+ 
+ (define_insn "vcvtneo<bf16_ph>2ps_<mode>"
+   [(set (match_operand:V8SF 0 "register_operand" "=x")
+ 	(float_extend:V8SF
+ 	  (vec_select:<ssehalfvecmode>
+ 	    (match_operand:V16BFH_256 1 "memory_operand" "m")
+ 	    (parallel [(const_int 1) (const_int 3)
+ 		       (const_int 5) (const_int 7)
+ 		       (const_int 9) (const_int 11)
+ 		       (const_int 13) (const_int 15)]))))]
+   "TARGET_AVXNECONVERT"
+   "vcvtneo<bf16_ph>2ps\t{%1, %0|%0, %1}"
+   [(set_attr "prefix" "vex")
+    (set_attr "mode" "<sseinsnmode>")])
diff -Nrcpad gcc-12.2.0/gcc/config/i386/ssemath.h gcc-13.1.0/gcc/config/i386/ssemath.h
*** gcc-12.2.0/gcc/config/i386/ssemath.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/ssemath.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/stringop.def gcc-13.1.0/gcc/config/i386/stringop.def
*** gcc-12.2.0/gcc/config/i386/stringop.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/stringop.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for stringop strategy for IA-32.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for stringop strategy for IA-32.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/subst.md gcc-13.1.0/gcc/config/i386/subst.md
*** gcc-12.2.0/gcc/config/i386/subst.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/subst.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for AVX512F instructions
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for AVX512F instructions
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 25,30 ****
--- 25,31 ----
     V16SI V8SI  V4SI
     V8DI  V4DI  V2DI
     V32HF V16HF V8HF
+    V32BF V16BF V8BF
     V16SF V8SF  V4SF
     V8DF  V4DF  V2DF])
  
***************
*** 137,143 ****
   [(set (match_dup 0)
         (vec_merge:SUBST_V
  	 (match_dup 1)
! 	 (match_operand:SUBST_V 2 "const0_operand" "C")
  	 (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))
  ])
  
--- 138,144 ----
   [(set (match_dup 0)
         (vec_merge:SUBST_V
  	 (match_dup 1)
! 	 (match_operand:SUBST_V 2 "const0_operand")
  	 (match_operand:<avx512fmaskmode> 3 "register_operand" "Yk")))
  ])
  
***************
*** 155,161 ****
  	(vec_merge:SUBST_V
  	  (vec_merge:SUBST_V
  	    (match_dup 1)
! 	    (match_operand:SUBST_V 3 "const0_operand" "C")
  	    (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
  	  (match_dup 2)
  	  (const_int 1)))])
--- 156,162 ----
  	(vec_merge:SUBST_V
  	  (vec_merge:SUBST_V
  	    (match_dup 1)
! 	    (match_operand:SUBST_V 3 "const0_operand")
  	    (match_operand:<avx512fmaskmode> 4 "register_operand" "Yk"))
  	  (match_dup 2)
  	  (const_int 1)))])
***************
*** 171,177 ****
   [(set (match_dup 0)
         (vec_merge:SUBST_CV
  	 (match_dup 1)
! 	 (match_operand:SUBST_CV 2 "const0_operand" "C")
  	 (unspec:<avx512fmaskmode>
  	   [(match_operand:<avx512fmaskcmode> 3 "register_operand" "Yk")]
  	   UNSPEC_COMPLEX_MASK)))
--- 172,178 ----
   [(set (match_dup 0)
         (vec_merge:SUBST_CV
  	 (match_dup 1)
! 	 (match_operand:SUBST_CV 2 "const0_operand")
  	 (unspec:<avx512fmaskmode>
  	   [(match_operand:<avx512fmaskcmode> 3 "register_operand" "Yk")]
  	   UNSPEC_COMPLEX_MASK)))
***************
*** 372,378 ****
  	(vec_merge:SUBST_CV
  	  (vec_merge:SUBST_CV
  	    (match_dup 1)
! 	    (match_operand:SUBST_CV 3 "const0_operand" "C")
  	    (unspec:<avx512fmaskmode>
  	      [(match_operand:<avx512fmaskcmode> 4 "register_operand" "Yk")]
  	      UNSPEC_COMPLEX_MASK))
--- 373,379 ----
  	(vec_merge:SUBST_CV
  	  (vec_merge:SUBST_CV
  	    (match_dup 1)
! 	    (match_operand:SUBST_CV 3 "const0_operand")
  	    (unspec:<avx512fmaskmode>
  	      [(match_operand:<avx512fmaskcmode> 4 "register_operand" "Yk")]
  	      UNSPEC_COMPLEX_MASK))
***************
*** 478,482 ****
    [(set (match_dup 0)
          (vec_merge:SUBST_V
  	  (match_dup 1)
! 	  (match_operand:SUBST_V 2 "const0_operand" "C")
  	  (match_operand:<avx512fmaskhalfmode> 3 "register_operand" "Yk")))])
--- 479,483 ----
    [(set (match_dup 0)
          (vec_merge:SUBST_V
  	  (match_dup 1)
! 	  (match_operand:SUBST_V 2 "const0_operand")
  	  (match_operand:<avx512fmaskhalfmode> 3 "register_operand" "Yk")))])
diff -Nrcpad gcc-12.2.0/gcc/config/i386/sym-mingw32.cc gcc-13.1.0/gcc/config/i386/sym-mingw32.cc
*** gcc-12.2.0/gcc/config/i386/sym-mingw32.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/sym-mingw32.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,3 ----
+ /* Prevent any name mangling to make sure that the linker
+    will always find the symbol. */
+ char HOST_EXTRA_OBJS_SYMBOL asm ("HOST_EXTRA_OBJS_SYMBOL");
diff -Nrcpad gcc-12.2.0/gcc/config/i386/sync.md gcc-13.1.0/gcc/config/i386/sync.md
*** gcc-12.2.0/gcc/config/i386/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for i386 synchronization instructions.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for i386 synchronization instructions.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 37,42 ****
--- 37,48 ----
    UNSPECV_CMPXCHG
    UNSPECV_XCHG
    UNSPECV_LOCK
+  
+   ;; For CMPccXADD support
+   UNSPECV_CMPCCXADD
+ 
+   ;; For RAOINT support
+   UNSPECV_RAOINT
  ])
  
  (define_expand "sse2_lfence"
***************
*** 745,754 ****
  	    [(match_operand:SWI 0 "memory_operand" "+m")
  	     (match_operand:SI 3 "const_int_operand")]		;; model
  	    UNSPECV_XCHG)
! 	  (match_operand:SWI 2 "const_int_operand" "i")))
     (set (match_dup 0)
  	(plus:SWI (match_dup 0)
! 		  (match_operand:SWI 1 "const_int_operand" "i")))]
    "(unsigned HOST_WIDE_INT) INTVAL (operands[1])
     == -(unsigned HOST_WIDE_INT) INTVAL (operands[2])"
  {
--- 751,760 ----
  	    [(match_operand:SWI 0 "memory_operand" "+m")
  	     (match_operand:SI 3 "const_int_operand")]		;; model
  	    UNSPECV_XCHG)
! 	  (match_operand:SWI 2 "const_int_operand")))
     (set (match_dup 0)
  	(plus:SWI (match_dup 0)
! 		  (match_operand:SWI 1 "const_int_operand")))]
    "(unsigned HOST_WIDE_INT) INTVAL (operands[1])
     == -(unsigned HOST_WIDE_INT) INTVAL (operands[2])"
  {
***************
*** 782,787 ****
--- 788,806 ----
    ""
    "%K3xchg{<imodesuffix>}\t{%1, %0|%0, %1}")
  
+ (define_code_iterator any_plus_logic [and ior xor plus])
+ (define_code_attr plus_logic [(and "and") (ior "or") (xor "xor") (plus "add")])
+ 
+ (define_insn "rao_a<plus_logic><mode>"
+   [(set (match_operand:SWI48 0 "memory_operand" "+m")
+        (unspec_volatile:SWI48
+          [(any_plus_logic:SWI48 (match_dup 0)
+ 				(match_operand:SWI48 1 "register_operand" "r"))
+           (const_int 0)]      ;; MEMMODEL_RELAXED
+          UNSPECV_RAOINT))]
+   "TARGET_RAOINT"
+   "a<plus_logic>\t{%1, %0|%0, %1}")
+ 
  (define_insn "atomic_add<mode>"
    [(set (match_operand:SWI 0 "memory_operand" "+m")
  	(unspec_volatile:SWI
***************
*** 1061,1063 ****
--- 1080,1107 ----
  	(any_logic:SWI (match_dup 0) (match_dup 1)))]
    ""
    "lock{%;} %K2<logic>{<imodesuffix>}\t{%1, %0|%0, %1}")
+ 
+ ;; CMPCCXADD
+ 
+ (define_insn "cmpccxadd_<mode>"
+   [(set (match_operand:SWI48x 0 "register_operand" "=r")
+ 	(unspec_volatile:SWI48x
+ 	  [(match_operand:SWI48x 1 "memory_operand" "+m")
+ 	   (match_operand:SWI48x 2 "register_operand" "0")
+ 	   (match_operand:SWI48x 3 "register_operand" "r")
+ 	   (match_operand:SI 4 "const_0_to_15_operand" "n")]
+ 	  UNSPECV_CMPCCXADD))
+    (set (match_dup 1)
+ 	(unspec_volatile:SWI48x [(const_int 0)] UNSPECV_CMPCCXADD))
+    (clobber (reg:CC FLAGS_REG))]
+   "TARGET_CMPCCXADD && TARGET_64BIT"
+ {
+   char buf[128];
+   const char *ops = "cmp%sxadd\t{%%3, %%0, %%1|%%1, %%0, %%3}";
+   char const *cc[16] = {"o" ,"no", "b", "nb", "z", "nz", "be", "nbe",
+ 			"s", "ns", "p", "np", "l", "nl", "le", "nle"};
+ 
+   snprintf (buf, sizeof (buf), ops, cc[INTVAL (operands[4])]);
+   output_asm_insn (buf, operands);
+   return "";
+ })
diff -Nrcpad gcc-12.2.0/gcc/config/i386/sysv4.h gcc-13.1.0/gcc/config/i386/sysv4.h
*** gcc-12.2.0/gcc/config/i386/sysv4.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/sysv4.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for GCC for Intel 80386 running System V.4
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     Written by Ron Guilmette (rfg@netcom.com).
  
--- 1,5 ----
  /* Target definitions for GCC for Intel 80386 running System V.4
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     Written by Ron Guilmette (rfg@netcom.com).
  
*************** along with GCC; see the file COPYING3.
*** 26,33 ****
  #undef X86_FILE_START_VERSION_DIRECTIVE
  #define X86_FILE_START_VERSION_DIRECTIVE true
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n)  svr4_dbx_register_map[n]
  
  /* A C statement (sans semicolon) to output to the stdio stream
     FILE the assembler definition of uninitialized global DECL named
--- 26,33 ----
  #undef X86_FILE_START_VERSION_DIRECTIVE
  #define X86_FILE_START_VERSION_DIRECTIVE true
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n)  svr4_debugger_register_map[n]
  
  /* A C statement (sans semicolon) to output to the stdio stream
     FILE the assembler definition of uninitialized global DECL named
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-cygming gcc-13.1.0/gcc/config/i386/t-cygming
*** gcc-12.2.0/gcc/config/i386/t-cygming	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-cygming	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** winnt-stubs.o: $(srcdir)/config/i386/win
*** 39,44 ****
--- 39,48 ----
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  	$(srcdir)/config/i386/winnt-stubs.cc
  
+ cygwin-d.o: $(srcdir)/config/i386/cygwin-d.cc
+ 	$(COMPILE) $<
+ 	$(POSTCOMPILE)
+ 
  winnt-d.o: $(srcdir)/config/i386/winnt-d.cc
  	$(COMPILE) $<
  	$(POSTCOMPILE)
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-cygwin-w64 gcc-13.1.0/gcc/config/i386/t-cygwin-w64
*** gcc-12.2.0/gcc/config/i386/t-cygwin-w64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-cygwin-w64	Wed Apr 26 07:09:39 2023
***************
*** 1,3 ****
- MULTILIB_OPTIONS = m64/m32
- MULTILIB_DIRNAMES = 64
- MULTILIB_OSDIRNAMES = ../lib ../lib32
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-freebsd64 gcc-13.1.0/gcc/config/i386/t-freebsd64
*** gcc-12.2.0/gcc/config/i386/t-freebsd64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-freebsd64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2019-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2019-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-gnu-property gcc-13.1.0/gcc/config/i386/t-gnu-property
*** gcc-12.2.0/gcc/config/i386/t-gnu-property	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-gnu-property	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2017-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-i386 gcc-13.1.0/gcc/config/i386/t-i386
*** gcc-12.2.0/gcc/config/i386/t-i386	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-i386	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2008-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** i386-features.o: $(srcdir)/config/i386/i
*** 62,68 ****
--- 62,73 ----
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
+ # i386-builtin-types.inc is included into i386-builtins.h.
+ # Below are direct users of i386-builtins.h:
  i386.o: i386-builtin-types.inc
+ i386-builtins.o: i386-builtin-types.inc
+ i386-expand.o: i386-builtin-types.inc
+ i386-features.o: i386-builtin-types.inc
  
  i386-builtin-types.inc: s-i386-bt ; @true
  s-i386-bt: $(srcdir)/config/i386/i386-builtin-types.awk \
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-intelmic gcc-13.1.0/gcc/config/i386/t-intelmic
*** gcc-12.2.0/gcc/config/i386/t-intelmic	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-intelmic	Thu Jan  1 00:00:00 1970
***************
*** 1,10 ****
- CFLAGS-mkoffload.o += $(DRIVER_DEFINES) -DGCC_INSTALL_NAME=\"$(GCC_INSTALL_NAME)\"
- 
- mkoffload.o: $(srcdir)/config/i386/intelmic-mkoffload.cc
- 	$(COMPILE) $<
- 	$(POSTCOMPILE)
- ALL_HOST_OBJS += mkoffload.o
- 
- mkoffload$(exeext): mkoffload.o collect-utils.o libcommon-target.a $(LIBIBERTY) $(LIBDEPS)
- 	$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
- 	  mkoffload.o collect-utils.o libcommon-target.a $(LIBIBERTY) $(LIBS)
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-linux64 gcc-13.1.0/gcc/config/i386/t-linux64
*** gcc-12.2.0/gcc/config/i386/t-linux64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-linux64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-omp-device gcc-13.1.0/gcc/config/i386/t-omp-device
*** gcc-12.2.0/gcc/config/i386/t-omp-device	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-omp-device	Thu Jan  1 00:00:00 1970
***************
*** 1,6 ****
- omp-device-properties-i386: $(srcdir)/config/i386/i386-options.cc
- 	echo kind: cpu > $@
- 	echo arch: intel_mic x86 x86_64 i386 i486 i586 i686 ia32 >> $@
- 	echo isa: sse4 `sed -n '/^static struct ix86_target_opts isa2\?_opts\[\] =/,/^};/p' \
- 	  $(srcdir)/config/i386/i386-options.cc | \
- 	  sed -n 's/",.*$$//;s/^  { "-m//p'` >> $@
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-rtems gcc-13.1.0/gcc/config/i386/t-rtems
*** gcc-12.2.0/gcc/config/i386/t-rtems	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-rtems	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1999-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1999-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/i386/t-sol2 gcc-13.1.0/gcc/config/i386/t-sol2
*** gcc-12.2.0/gcc/config/i386/t-sol2	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/t-sol2	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/i386/tbmintrin.h gcc-13.1.0/gcc/config/i386/tbmintrin.h
*** gcc-12.2.0/gcc/config/i386/tbmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/tbmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/tmmintrin.h gcc-13.1.0/gcc/config/i386/tmmintrin.h
*** gcc-12.2.0/gcc/config/i386/tmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/tmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/tsxldtrkintrin.h gcc-13.1.0/gcc/config/i386/tsxldtrkintrin.h
*** gcc-12.2.0/gcc/config/i386/tsxldtrkintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/tsxldtrkintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/uintrintrin.h gcc-13.1.0/gcc/config/i386/uintrintrin.h
*** gcc-12.2.0/gcc/config/i386/uintrintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/uintrintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/unix.h gcc-13.1.0/gcc/config/i386/unix.h
*** gcc-12.2.0/gcc/config/i386/unix.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/unix.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Unix assembler syntax for the Intel 80386.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for Unix assembler syntax for the Intel 80386.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/utf8-mingw32.rc gcc-13.1.0/gcc/config/i386/utf8-mingw32.rc
*** gcc-12.2.0/gcc/config/i386/utf8-mingw32.rc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/utf8-mingw32.rc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,3 ----
+ #include <winuser.h>
+ 
+ CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "winnt-utf8.manifest"
diff -Nrcpad gcc-12.2.0/gcc/config/i386/vaesintrin.h gcc-13.1.0/gcc/config/i386/vaesintrin.h
*** gcc-12.2.0/gcc/config/i386/vaesintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/vaesintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/vpclmulqdqintrin.h gcc-13.1.0/gcc/config/i386/vpclmulqdqintrin.h
*** gcc-12.2.0/gcc/config/i386/vpclmulqdqintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/vpclmulqdqintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/vxworks.h gcc-13.1.0/gcc/config/i386/vxworks.h
*** gcc-12.2.0/gcc/config/i386/vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* IA32 VxWorks target definitions for GNU compiler.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Updated by CodeSourcery, LLC.
  
  This file is part of GCC.
--- 1,5 ----
  /* IA32 VxWorks target definitions for GNU compiler.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Updated by CodeSourcery, LLC.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 54,65 ****
  
  #endif
  
! /* Provide our target specific DBX_REGISTER_NUMBER.  VxWorks relies on
     the SVR4 numbering.  */
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  /* CPU macro definitions, ordered to account for VxWorks 7 not
     supporting CPUs older than PENTIUM4 since SR0650.  */
--- 54,65 ----
  
  #endif
  
! /* Provide our target specific DEBUGGER_REGNO.  VxWorks relies on
     the SVR4 numbering.  */
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  /* CPU macro definitions, ordered to account for VxWorks 7 not
     supporting CPUs older than PENTIUM4 since SR0650.  */
diff -Nrcpad gcc-12.2.0/gcc/config/i386/vxworksae.h gcc-13.1.0/gcc/config/i386/vxworksae.h
*** gcc-12.2.0/gcc/config/i386/vxworksae.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/vxworksae.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* IA32 VxWorks AE target definitions for GNU compiler.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
--- 1,5 ----
  /* IA32 VxWorks AE target definitions for GNU compiler.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/i386/waitpkgintrin.h gcc-13.1.0/gcc/config/i386/waitpkgintrin.h
*** gcc-12.2.0/gcc/config/i386/waitpkgintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/waitpkgintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/wbnoinvdintrin.h gcc-13.1.0/gcc/config/i386/wbnoinvdintrin.h
*** gcc-12.2.0/gcc/config/i386/wbnoinvdintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/wbnoinvdintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/winnt-cxx.cc gcc-13.1.0/gcc/config/i386/winnt-cxx.cc
*** gcc-12.2.0/gcc/config/i386/winnt-cxx.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/winnt-cxx.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target support for C++ classes on Windows.
     Contributed by Danny Smith (dannysmith@users.sourceforge.net)
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target support for C++ classes on Windows.
     Contributed by Danny Smith (dannysmith@users.sourceforge.net)
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/winnt-d.cc gcc-13.1.0/gcc/config/i386/winnt-d.cc
*** gcc-12.2.0/gcc/config/i386/winnt-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/winnt-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Windows support needed only by D front-end.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* Windows support needed only by D front-end.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  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
*************** along with GCC; see the file COPYING3.
*** 21,29 ****
  #include "system.h"
  #include "coretypes.h"
  #include "target.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
- #include "tm_p.h"
  
  /* Implement TARGET_D_OS_VERSIONS for Windows targets.  */
  
--- 21,29 ----
  #include "system.h"
  #include "coretypes.h"
  #include "target.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
  /* Implement TARGET_D_OS_VERSIONS for Windows targets.  */
  
*************** static void
*** 31,42 ****
  winnt_d_os_builtins (void)
  {
    d_add_builtin_version ("Windows");
  
! #define builtin_version(TXT) d_add_builtin_version (TXT)
  
! #ifdef EXTRA_TARGET_D_OS_VERSIONS
!   EXTRA_TARGET_D_OS_VERSIONS ();
! #endif
  }
  
  /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
--- 31,44 ----
  winnt_d_os_builtins (void)
  {
    d_add_builtin_version ("Windows");
+   d_add_builtin_version ("MinGW");
  
!   if (TARGET_64BIT && ix86_abi == MS_ABI)
!     d_add_builtin_version ("Win64");
!   else if (!TARGET_64BIT)
!     d_add_builtin_version ("Win32");
  
!   d_add_builtin_version ("CRuntime_Microsoft");
  }
  
  /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
*************** winnt_d_register_target_info (void)
*** 67,83 ****
  #undef TARGET_D_REGISTER_OS_TARGET_INFO
  #define TARGET_D_REGISTER_OS_TARGET_INFO winnt_d_register_target_info
  
- /* Define TARGET_D_MINFO_SECTION for Windows targets.  */
- 
- #undef TARGET_D_MINFO_SECTION
- #define TARGET_D_MINFO_SECTION "minfo"
- 
- #undef TARGET_D_MINFO_START_NAME
- #define TARGET_D_MINFO_START_NAME "__start_minfo"
- 
- #undef TARGET_D_MINFO_END_NAME
- #define TARGET_D_MINFO_END_NAME "__stop_minfo"
- 
  /* Define TARGET_D_TEMPLATES_ALWAYS_COMDAT for Windows targets.  */
  
  #undef TARGET_D_TEMPLATES_ALWAYS_COMDAT
--- 69,74 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/winnt-stubs.cc gcc-13.1.0/gcc/config/i386/winnt-stubs.cc
*** gcc-12.2.0/gcc/config/i386/winnt-stubs.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/winnt-stubs.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Dummy subroutines for language-specific support on Windows.
     Contributed by Danny Smith (dannysmith@users.sourceforge.net)
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Dummy subroutines for language-specific support on Windows.
     Contributed by Danny Smith (dannysmith@users.sourceforge.net)
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/winnt-utf8.manifest gcc-13.1.0/gcc/config/i386/winnt-utf8.manifest
*** gcc-12.2.0/gcc/config/i386/winnt-utf8.manifest	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/winnt-utf8.manifest	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,8 ----
+ <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+ <assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
+   <application>
+     <windowsSettings>
+       <activeCodePage xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings">UTF-8</activeCodePage>
+     </windowsSettings>
+   </application>
+ </assembly>
diff -Nrcpad gcc-12.2.0/gcc/config/i386/winnt.cc gcc-13.1.0/gcc/config/i386/winnt.cc
*** gcc-12.2.0/gcc/config/i386/winnt.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/winnt.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Subroutines for insn-output.cc for Windows NT.
     Contributed by Douglas Rupp (drupp@cs.washington.edu)
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Subroutines for insn-output.cc for Windows NT.
     Contributed by Douglas Rupp (drupp@cs.washington.edu)
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/wmmintrin.h gcc-13.1.0/gcc/config/i386/wmmintrin.h
*** gcc-12.2.0/gcc/config/i386/wmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/wmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x-mingw32 gcc-13.1.0/gcc/config/i386/x-mingw32
*** gcc-12.2.0/gcc/config/i386/x-mingw32	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x-mingw32	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** WERROR_FLAGS += -Wno-format
*** 27,34 ****
  
  host-mingw32.o : $(srcdir)/config/i386/host-mingw32.cc $(CONFIG_H) $(SYSTEM_H) \
    coretypes.h hosthooks.h hosthooks-def.h toplev.h $(DIAGNOSTIC_H) $(HOOKS_H)
! 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
! 		$(srcdir)/config/i386/host-mingw32.cc
  
  driver-mingw32.o : $(srcdir)/config/i386/driver-mingw32.cc $(CONFIG_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
--- 27,33 ----
  
  host-mingw32.o : $(srcdir)/config/i386/host-mingw32.cc $(CONFIG_H) $(SYSTEM_H) \
    coretypes.h hosthooks.h hosthooks-def.h toplev.h $(DIAGNOSTIC_H) $(HOOKS_H)
! 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
  
  driver-mingw32.o : $(srcdir)/config/i386/driver-mingw32.cc $(CONFIG_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x-mingw32-utf8 gcc-13.1.0/gcc/config/i386/x-mingw32-utf8
*** gcc-12.2.0/gcc/config/i386/x-mingw32-utf8	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/x-mingw32-utf8	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,63 ----
+ # Copyright (C) 2023 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ #
+ #
+ # For mingw Windows hosts, embed a manifest that sets the active
+ # code page of the driver and compiler proper processes to utf8.
+ # This only has an effect when gcc is hosted on Windows version
+ # 1903 (May 2019 Update) or later.
+ 
+ # The resource .rc file references the utf8 .manifest file.
+ # Compile it into an object file using windres.
+ # The resulting .o file gets added to host_extra_gcc_objs in
+ # config.host for mingw hosts and gets linked into
+ # the driver as a .o file, so it's lack of symbols is OK.
+ utf8rc-mingw32.o : $(srcdir)/config/i386/utf8-mingw32.rc \
+   $(srcdir)/config/i386/winnt-utf8.manifest
+ 	$(WINDRES) $< $@
+ 
+ # Create an object file that just exports the global symbol
+ # HOST_EXTRA_OBJS_SYMBOL
+ sym-mingw32.o : $(srcdir)/config/i386/sym-mingw32.cc
+ 	$(COMPILER) -c $<
+ 
+ # Combine the two object files into one which has both the
+ # compiled utf8 resource and the HOST_EXTRA_OBJS_SYMBOL symbol.
+ # The resulting .o file gets added to host_extra_objs in
+ # config.host for mingw hosts and gets archived into
+ # libbackend.a which gets linked into the compiler proper.
+ # If nothing references it into libbackend.a, it will not
+ # get linked into the compiler proper eventually.
+ # Therefore we need to request the symbol at compiler link time.
+ # -nostdlib is required for supporting old gcc versions that
+ # don't apply it automatically with -r.
+ utf8-mingw32.o : utf8rc-mingw32.o sym-mingw32.o
+ 	$(COMPILER) -r -nostdlib utf8rc-mingw32.o sym-mingw32.o -o $@
+ 
+ # Force compilers to link against the utf8 resource by
+ # requiring the symbol to be defined.
+ # Otherwise the object file won't get linked in the compilers
+ # because nothing is referencing it in libbackend.a
+ # This is expected because the resource object is not supposed
+ # to have any symbols, it just has to be linked into the
+ # executable in order for Windows to use the utf8 code page.
+ # Some build environments are passing these flags to other
+ # programs as well, so make the symbol definition optional
+ # such that these programs don't fail to build when they
+ # don't find it.
+ $(COMPILERS) : override LDFLAGS += -Wl,--undefined=HOST_EXTRA_OBJS_SYMBOL
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-64.h gcc-13.1.0/gcc/config/i386/x86-64.h
*** gcc-12.2.0/gcc/config/i386/x86-64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* OS independent definitions for AMD x86-64.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Bo Thorsen <bo@suse.de>.
  
  This file is part of GCC.
--- 1,5 ----
  /* OS independent definitions for AMD x86-64.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Bo Thorsen <bo@suse.de>.
  
  This file is part of GCC.
*************** see the files COPYING3 and COPYING.RUNTI
*** 26,34 ****
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(n) \
!   (TARGET_64BIT ? dbx64_register_map[n] : svr4_dbx_register_map[n])
  
  /* Output assembler code to FILE to call the profiler.  */
  #define NO_PROFILE_COUNTERS 1
--- 26,34 ----
  #undef ASM_COMMENT_START
  #define ASM_COMMENT_START "#"
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(n) \
!   (TARGET_64BIT ? debugger64_register_map[n] : svr4_debugger_register_map[n])
  
  /* Output assembler code to FILE to call the profiler.  */
  #define NO_PROFILE_COUNTERS 1
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-tune-costs.h gcc-13.1.0/gcc/config/i386/x86-tune-costs.h
*** gcc-12.2.0/gcc/config/i386/x86-tune-costs.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-tune-costs.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Costs of operations of individual x86 CPUs.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Costs of operations of individual x86 CPUs.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** struct processor_costs ix86_size_cost =
*** 135,140 ****
--- 135,142 ----
    NULL,					/* Jump alignment.  */
    NULL,					/* Label alignment.  */
    NULL,					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* Processor costs (relative to an add) */
*************** struct processor_costs i386_cost = {	/*
*** 244,249 ****
--- 246,253 ----
    "4",					/* Jump alignment.  */
    NULL,					/* Label alignment.  */
    "4",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs i486_memcpy[2] = {
*************** struct processor_costs i486_cost = {	/*
*** 354,359 ****
--- 358,365 ----
    "16",					/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs pentium_memcpy[2] = {
*************** struct processor_costs pentium_cost = {
*** 462,467 ****
--- 468,475 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static const
*************** struct processor_costs lakemont_cost = {
*** 563,568 ****
--- 571,578 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* PentiumPro has optimized rep instructions for blocks aligned by 8 bytes
*************** struct processor_costs pentiumpro_cost =
*** 679,684 ****
--- 689,696 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs geode_memcpy[2] = {
*************** struct processor_costs geode_cost = {
*** 786,791 ****
--- 798,805 ----
    NULL,					/* Jump alignment.  */
    NULL,					/* Label alignment.  */
    NULL,					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs k6_memcpy[2] = {
*************** struct processor_costs k6_cost = {
*** 896,901 ****
--- 910,917 ----
    "32:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "32",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* For some reason, Athlon deals better with REP prefix (relative to loops)
*************** struct processor_costs athlon_cost = {
*** 1007,1012 ****
--- 1023,1030 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* K8 has optimized REP instruction for medium sized blocks, but for very
*************** struct processor_costs k8_cost = {
*** 1127,1132 ****
--- 1145,1152 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* AMDFAM10 has optimized REP instruction for medium sized blocks, but for
*************** struct processor_costs amdfam10_cost = {
*** 1255,1260 ****
--- 1275,1282 ----
    "32:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "32",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /*  BDVER has optimized REP instruction for medium sized blocks, but for
*************** const struct processor_costs bdver_cost
*** 1376,1381 ****
--- 1398,1405 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "11",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  
*************** struct processor_costs znver1_cost = {
*** 1529,1534 ****
--- 1553,1560 ----
    "16",					/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /*  ZNVER2 has optimized REP instruction for medium sized blocks, but for
*************** struct processor_costs znver2_cost = {
*** 1686,1691 ****
--- 1712,1719 ----
    "16",					/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  struct processor_costs znver3_cost = {
*************** struct processor_costs znver3_cost = {
*** 1818,1823 ****
--- 1846,1989 ----
    "16",					/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
+ };
+ 
+ /* This table currently replicates znver3_cost table. */
+ struct processor_costs znver4_cost = {
+   {
+   /* Start of register allocator costs.  integer->integer move cost is 2. */
+ 
+   /* reg-reg moves are done by renaming and thus they are even cheaper than
+      1 cycle.  Because reg-reg move cost is 2 and following tables correspond
+      to doubles of latencies, we do not model this correctly.  It does not
+      seem to make practical difference to bump prices up even more.  */
+   6,					/* cost for loading QImode using
+ 					   movzbl.  */
+   {6, 6, 6},				/* cost of loading integer registers
+ 					   in QImode, HImode and SImode.
+ 					   Relative to reg-reg move (2).  */
+   {8, 8, 8},				/* cost of storing integer
+ 					   registers.  */
+   2,					/* cost of reg,reg fld/fst.  */
+   {14, 14, 17},				/* cost of loading fp registers
+ 					   in SFmode, DFmode and XFmode.  */
+   {12, 12, 16},				/* cost of storing fp registers
+ 					   in SFmode, DFmode and XFmode.  */
+   2,					/* cost of moving MMX register.  */
+   {6, 6},				/* cost of loading MMX registers
+ 					   in SImode and DImode.  */
+   {8, 8},				/* cost of storing MMX registers
+ 					   in SImode and DImode.  */
+   2, 2, 3,				/* cost of moving XMM,YMM,ZMM
+ 					   register.  */
+   {6, 6, 10, 10, 12},			/* cost of loading SSE registers
+ 					   in 32,64,128,256 and 512-bit.  */
+   {8, 8, 8, 12, 12},			/* cost of storing SSE registers
+ 					   in 32,64,128,256 and 512-bit.  */
+   6, 8,					/* SSE->integer and integer->SSE
+ 					   moves.  */
+   8, 8,					/* mask->integer and integer->mask moves */
+   {6, 6, 6},				/* cost of loading mask register
+ 					   in QImode, HImode, SImode.  */
+   {8, 8, 8},				/* cost if storing mask register
+ 					   in QImode, HImode, SImode.  */
+   2,					/* cost of moving mask register.  */
+   /* End of register allocator costs.  */
+   },
+ 
+   COSTS_N_INSNS (1),			/* cost of an add instruction.  */
+   /* TODO: Lea with 3 components has cost 2.  */
+   COSTS_N_INSNS (1),			/* cost of a lea instruction.  */
+   COSTS_N_INSNS (1),			/* variable shift costs.  */
+   COSTS_N_INSNS (1),			/* constant shift costs.  */
+   {COSTS_N_INSNS (3),			/* cost of starting multiply for QI.  */
+    COSTS_N_INSNS (3),			/* 				 HI.  */
+    COSTS_N_INSNS (3),			/*				 SI.  */
+    COSTS_N_INSNS (3),			/*				 DI.  */
+    COSTS_N_INSNS (3)},			/*			other.  */
+   0,					/* cost of multiply per each bit
+ 					   set.  */
+   {COSTS_N_INSNS (12),			/* cost of a divide/mod for QI.  */
+    COSTS_N_INSNS (13),			/* 			    HI.  */
+    COSTS_N_INSNS (13),			/*			    SI.  */
+    COSTS_N_INSNS (18),			/*			    DI.  */
+    COSTS_N_INSNS (18)},			/*			    other.  */
+   COSTS_N_INSNS (1),			/* cost of movsx.  */
+   COSTS_N_INSNS (1),			/* cost of movzx.  */
+   8,					/* "large" insn.  */
+   9,					/* MOVE_RATIO.  */
+   6,					/* CLEAR_RATIO */
+   {6, 6, 6},				/* cost of loading integer registers
+ 					   in QImode, HImode and SImode.
+ 					   Relative to reg-reg move (2).  */
+   {8, 8, 8},				/* cost of storing integer
+ 					   registers.  */
+   {6, 6, 10, 10, 12},			/* cost of loading SSE registers
+ 					   in 32bit, 64bit, 128bit, 256bit and 512bit */
+   {8, 8, 8, 12, 12},			/* cost of storing SSE register
+ 					   in 32bit, 64bit, 128bit, 256bit and 512bit */
+   {6, 6, 6, 6, 6},			/* cost of unaligned loads.  */
+   {8, 8, 8, 8, 8},			/* cost of unaligned stores.  */
+   2, 2, 2,				/* cost of moving XMM,YMM,ZMM
+ 					   register.  */
+   6,					/* cost of moving SSE register to integer.  */
+   /* VGATHERDPD is 17 uops and throughput is 4, VGATHERDPS is 24 uops,
+      throughput 5.  Approx 7 uops do not depend on vector size and every load
+      is 5 uops.  */
+   14, 10,				/* Gather load static, per_elt.  */
+   14, 20,				/* Gather store static, per_elt.  */
+   32,					/* size of l1 cache.  */
+   1024,					/* size of l2 cache.  */
+   64,					/* size of prefetch block.  */
+   /* New AMD processors never drop prefetches; if they cannot be performed
+      immediately, they are queued.  We set number of simultaneous prefetches
+      to a large constant to reflect this (it probably is not a good idea not
+      to limit number of prefetches at all, as their execution also takes some
+      time).  */
+   100,					/* number of parallel prefetches.  */
+   3,					/* Branch cost.  */
+   COSTS_N_INSNS (7),			/* cost of FADD and FSUB insns.  */
+   COSTS_N_INSNS (7),			/* cost of FMUL instruction.  */
+   /* Latency of fdiv is 8-15.  */
+   COSTS_N_INSNS (15),			/* cost of FDIV instruction.  */
+   COSTS_N_INSNS (1),			/* cost of FABS instruction.  */
+   COSTS_N_INSNS (1),			/* cost of FCHS instruction.  */
+   /* Latency of fsqrt is 4-10.  */
+   COSTS_N_INSNS (25),			/* cost of FSQRT instruction.  */
+ 
+   COSTS_N_INSNS (1),			/* cost of cheap SSE instruction.  */
+   COSTS_N_INSNS (3),			/* cost of ADDSS/SD SUBSS/SD insns.  */
+   COSTS_N_INSNS (3),			/* cost of MULSS instruction.  */
+   COSTS_N_INSNS (3),			/* cost of MULSD instruction.  */
+   COSTS_N_INSNS (4),			/* cost of FMA SS instruction.  */
+   COSTS_N_INSNS (4),			/* cost of FMA SD instruction.  */
+   COSTS_N_INSNS (13),			/* cost of DIVSS instruction.  */
+   /* 9-13.  */
+   COSTS_N_INSNS (13),			/* cost of DIVSD instruction.  */
+   COSTS_N_INSNS (15),			/* cost of SQRTSS instruction.  */
+   COSTS_N_INSNS (21),			/* cost of SQRTSD instruction.  */
+   /* Zen can execute 4 integer operations per cycle.  FP operations
+      take 3 cycles and it can execute 2 integer additions and 2
+      multiplications thus reassociation may make sense up to with of 6.
+      SPEC2k6 bencharks suggests
+      that 4 works better than 6 probably due to register pressure.
+ 
+      Integer vector operations are taken by FP unit and execute 3 vector
+      plus/minus operations per cycle but only one multiply.  This is adjusted
+      in ix86_reassociation_width.  */
+   4, 4, 3, 6,				/* reassoc int, fp, vec_int, vec_fp.  */
+   znver2_memcpy,
+   znver2_memset,
+   COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
+   COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
+   "16",					/* Loop alignment.  */
+   "16",					/* Jump alignment.  */
+   "0:0:8",				/* Label alignment.  */
+   "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* skylake_cost should produce code tuned for Skylake familly of CPUs.  */
*************** struct processor_costs skylake_cost = {
*** 1866,1872 ****
    {8, 8, 8, 12, 24},			/* cost of storing SSE registers
  					   in 32,64,128,256 and 512-bit */
    6, 6,				/* SSE->integer and integer->SSE moves */
!   5, 5,				/* mask->integer and integer->mask moves */
    {8, 8, 8},				/* cost of loading mask register
  					   in QImode, HImode, SImode.  */
    {6, 6, 6},				/* cost if storing mask register
--- 2032,2038 ----
    {8, 8, 8, 12, 24},			/* cost of storing SSE registers
  					   in 32,64,128,256 and 512-bit */
    6, 6,				/* SSE->integer and integer->SSE moves */
!   6, 6,				/* mask->integer and integer->mask moves */
    {8, 8, 8},				/* cost of loading mask register
  					   in QImode, HImode, SImode.  */
    {6, 6, 6},				/* cost if storing mask register
*************** struct processor_costs skylake_cost = {
*** 1897,1911 ****
    8,					/* "large" insn */
    17,					/* MOVE_RATIO */
    17,					/* CLEAR_RATIO */
!   {4, 4, 4},				/* cost of loading integer registers
  					   in QImode, HImode and SImode.
  					   Relative to reg-reg move (2).  */
!   {6, 6, 6},				/* cost of storing integer registers */
!   {6, 6, 6, 10, 20},			/* cost of loading SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
    {8, 8, 8, 8, 16},			/* cost of storing SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {6, 6, 6, 10, 20},			/* cost of unaligned loads.  */
    {8, 8, 8, 8, 16},			/* cost of unaligned stores.  */
    2, 2, 4,				/* cost of moving XMM,YMM,ZMM register */
    6,					/* cost of moving SSE register to integer.  */
--- 2063,2077 ----
    8,					/* "large" insn */
    17,					/* MOVE_RATIO */
    17,					/* CLEAR_RATIO */
!   {6, 6, 6},				/* cost of loading integer registers
  					   in QImode, HImode and SImode.
  					   Relative to reg-reg move (2).  */
!   {8, 8, 8},				/* cost of storing integer registers */
!   {8, 8, 8, 8, 16},			/* cost of loading SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
    {8, 8, 8, 8, 16},			/* cost of storing SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {8, 8, 8, 8, 16},			/* cost of unaligned loads.  */
    {8, 8, 8, 8, 16},			/* cost of unaligned stores.  */
    2, 2, 4,				/* cost of moving XMM,YMM,ZMM register */
    6,					/* cost of moving SSE register to integer.  */
*************** struct processor_costs skylake_cost = {
*** 1942,1947 ****
--- 2108,2115 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* icelake_cost should produce code tuned for Icelake family of CPUs.
*************** struct processor_costs icelake_cost = {
*** 1992,1998 ****
    {8, 8, 8, 12, 24},			/* cost of storing SSE registers
  					   in 32,64,128,256 and 512-bit */
    6, 6,				/* SSE->integer and integer->SSE moves */
!   5, 5,				/* mask->integer and integer->mask moves */
    {8, 8, 8},				/* cost of loading mask register
  					   in QImode, HImode, SImode.  */
    {6, 6, 6},				/* cost if storing mask register
--- 2160,2166 ----
    {8, 8, 8, 12, 24},			/* cost of storing SSE registers
  					   in 32,64,128,256 and 512-bit */
    6, 6,				/* SSE->integer and integer->SSE moves */
!   6, 6,				/* mask->integer and integer->mask moves */
    {8, 8, 8},				/* cost of loading mask register
  					   in QImode, HImode, SImode.  */
    {6, 6, 6},				/* cost if storing mask register
*************** struct processor_costs icelake_cost = {
*** 2023,2037 ****
    8,					/* "large" insn */
    17,					/* MOVE_RATIO */
    17,					/* CLEAR_RATIO */
!   {4, 4, 4},				/* cost of loading integer registers
  					   in QImode, HImode and SImode.
  					   Relative to reg-reg move (2).  */
!   {6, 6, 6},				/* cost of storing integer registers */
!   {6, 6, 6, 10, 20},			/* cost of loading SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
    {8, 8, 8, 8, 16},			/* cost of storing SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {6, 6, 6, 10, 20},			/* cost of unaligned loads.  */
    {8, 8, 8, 8, 16},			/* cost of unaligned stores.  */
    2, 2, 4,				/* cost of moving XMM,YMM,ZMM register */
    6,					/* cost of moving SSE register to integer.  */
--- 2191,2205 ----
    8,					/* "large" insn */
    17,					/* MOVE_RATIO */
    17,					/* CLEAR_RATIO */
!   {6, 6, 6},				/* cost of loading integer registers
  					   in QImode, HImode and SImode.
  					   Relative to reg-reg move (2).  */
!   {8, 8, 8},				/* cost of storing integer registers */
!   {8, 8, 8, 8, 16},			/* cost of loading SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
    {8, 8, 8, 8, 16},			/* cost of storing SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {8, 8, 8, 8, 16},			/* cost of unaligned loads.  */
    {8, 8, 8, 8, 16},			/* cost of unaligned stores.  */
    2, 2, 4,				/* cost of moving XMM,YMM,ZMM register */
    6,					/* cost of moving SSE register to integer.  */
*************** struct processor_costs icelake_cost = {
*** 2068,2073 ****
--- 2236,2243 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* alderlake_cost should produce code tuned for alderlake family of CPUs.  */
*************** struct processor_costs alderlake_cost =
*** 2146,2158 ****
    {6, 6, 6},				/* cost of loading integer registers
  					   in QImode, HImode and SImode.
  					   Relative to reg-reg move (2).  */
!   {6, 6, 6},				/* cost of storing integer registers */
!   {6, 6, 6, 10, 15},			/* cost of loading SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {6, 6, 6, 10, 15},			/* cost of storing SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {6, 6, 6, 10, 15},			/* cost of unaligned loads.  */
!   {6, 6, 6, 10, 15},			/* cost of unaligned storess.  */
    2, 3, 4,				/* cost of moving XMM,YMM,ZMM register */
    6,					/* cost of moving SSE register to integer.  */
    18, 6,				/* Gather load static, per_elt.  */
--- 2316,2328 ----
    {6, 6, 6},				/* cost of loading integer registers
  					   in QImode, HImode and SImode.
  					   Relative to reg-reg move (2).  */
!   {8, 8, 8},				/* cost of storing integer registers */
!   {8, 8, 8, 10, 15},			/* cost of loading SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {8, 8, 8, 10, 15},			/* cost of storing SSE register
  					   in 32bit, 64bit, 128bit, 256bit and 512bit */
!   {8, 8, 8, 10, 15},			/* cost of unaligned loads.  */
!   {8, 8, 8, 10, 15},			/* cost of unaligned storess.  */
    2, 3, 4,				/* cost of moving XMM,YMM,ZMM register */
    6,					/* cost of moving SSE register to integer.  */
    18, 6,				/* Gather load static, per_elt.  */
*************** struct processor_costs alderlake_cost =
*** 2188,2193 ****
--- 2358,2365 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
    /* BTVER1 has optimized REP instruction for medium sized blocks, but for
*************** const struct processor_costs btver1_cost
*** 2301,2306 ****
--- 2473,2480 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "11",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs btver2_memcpy[2] = {
*************** const struct processor_costs btver2_cost
*** 2411,2416 ****
--- 2585,2592 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "11",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs pentium4_memcpy[2] = {
*************** struct processor_costs pentium4_cost = {
*** 2520,2525 ****
--- 2696,2703 ----
    NULL,					/* Jump alignment.  */
    NULL,					/* Label alignment.  */
    NULL,					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs nocona_memcpy[2] = {
*************** struct processor_costs nocona_cost = {
*** 2632,2637 ****
--- 2810,2817 ----
    NULL,					/* Jump alignment.  */
    NULL,					/* Label alignment.  */
    NULL,					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs atom_memcpy[2] = {
*************** struct processor_costs atom_cost = {
*** 2742,2747 ****
--- 2922,2929 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs slm_memcpy[2] = {
*************** struct processor_costs slm_cost = {
*** 2852,2857 ****
--- 3034,3041 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs tremont_memcpy[2] = {
*************** struct processor_costs tremont_cost = {
*** 2976,2981 ****
--- 3160,3167 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  static stringop_algs intel_memcpy[2] = {
*************** struct processor_costs intel_cost = {
*** 3086,3091 ****
--- 3272,3396 ----
    "16:8:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
+ };
+ 
+ /* lujiazui_cost should produce code tuned for ZHAOXIN lujiazui CPU.  */
+ static stringop_algs lujiazui_memcpy[2] = {
+   {libcall, {{32, loop, false}, {8192, rep_prefix_4_byte, false},
+ 			 {-1, libcall, false}}},
+   {libcall, {{12, unrolled_loop, true}, {32, loop, false},
+ 			 {6144, rep_prefix_8_byte, false},
+ 			 {-1, libcall, false}}}};
+ static stringop_algs lujiazui_memset[2] = {
+   {libcall, {{32, loop, false}, {8192, rep_prefix_4_byte, false},
+ 			 {-1, libcall, false}}},
+   {libcall, {{12, loop, true}, {32, loop, false},
+ 			 {640, rep_prefix_8_byte, false},
+ 			 {-1, libcall, false}}}};
+ static const
+ struct processor_costs lujiazui_cost = {
+   {
+   /* Start of register allocator costs.  integer->integer move cost is 2.  */
+   6,				/* cost for loading QImode using movzbl.  */
+   {6, 6, 6},			/* cost of loading integer registers
+ 					   in QImode, HImode and SImode.
+ 					   Relative to reg-reg move (2).  */
+   {6, 6, 6},			/* cost of storing integer registers.  */
+   2,					/* cost of reg,reg fld/fst.  */
+   {6, 6, 8},			/* cost of loading fp registers
+ 				in SFmode, DFmode and XFmode.  */
+   {6, 6, 8},			/* cost of storing fp registers
+ 				in SFmode, DFmode and XFmode.  */
+   2,				/* cost of moving MMX register.  */
+   {6, 6},			/* cost of loading MMX registers
+ 				in SImode and DImode.  */
+   {6, 6},			/* cost of storing MMX registers
+ 				in SImode and DImode.  */
+   2, 3, 4,			/* cost of moving XMM,YMM,ZMM register.  */
+   {6, 6, 6, 10, 15},	/* cost of loading SSE registers
+ 				in 32,64,128,256 and 512-bit.  */
+   {6, 6, 6, 10, 15},	/* cost of storing SSE registers
+ 				in 32,64,128,256 and 512-bit.  */
+   6, 6,				/* SSE->integer and integer->SSE moves.  */
+   6, 6,				/* mask->integer and integer->mask moves.  */
+   {6, 6, 6},		/* cost of loading mask register
+ 				in QImode, HImode, SImode.  */
+   {6, 6, 6},		/* cost if storing mask register
+ 				in QImode, HImode, SImode.  */
+   2,				/* cost of moving mask register.  */
+   /* End of register allocator costs.  */
+   },
+ 
+   COSTS_N_INSNS (1),			/* cost of an add instruction.  */
+   COSTS_N_INSNS (1) + 1,		/* cost of a lea instruction.  */
+   COSTS_N_INSNS (1),			/* variable shift costs.  */
+   COSTS_N_INSNS (1),			/* constant shift costs.  */
+   {COSTS_N_INSNS (2),			/* cost of starting multiply for QI.  */
+    COSTS_N_INSNS (3),			/*				 HI.  */
+    COSTS_N_INSNS (3),			/*				 SI.  */
+    COSTS_N_INSNS (12),			/*				 DI.  */
+    COSTS_N_INSNS (14)},		/*				 other.  */
+   0,				/* cost of multiply per each bit set.  */
+   {COSTS_N_INSNS (22),			/* cost of a divide/mod for QI.  */
+    COSTS_N_INSNS (24),			/*			    HI.  */
+    COSTS_N_INSNS (24),			/*			    SI.  */
+    COSTS_N_INSNS (150),			/*			    DI.  */
+    COSTS_N_INSNS (152)},		/*			    other.  */
+   COSTS_N_INSNS (1),			/* cost of movsx.  */
+   COSTS_N_INSNS (1),			/* cost of movzx.  */
+   8,					/* "large" insn.  */
+   17,					/* MOVE_RATIO.  */
+   6,					/* CLEAR_RATIO.  */
+   {6, 6, 6},				/* cost of loading integer registers
+ 					   in QImode, HImode and SImode.
+ 					   Relative to reg-reg move (2).  */
+   {6, 6, 6},			/* cost of storing integer registers.  */
+   {6, 6, 6, 10, 15},			/* cost of loading SSE register
+ 				in 32bit, 64bit, 128bit, 256bit and 512bit.  */
+   {6, 6, 6, 10, 15},			/* cost of storing SSE register
+ 				in 32bit, 64bit, 128bit, 256bit and 512bit.  */
+   {6, 6, 6, 10, 15},			/* cost of unaligned loads.  */
+   {6, 6, 6, 10, 15},			/* cost of unaligned storess.  */
+   2, 3, 4,			/* cost of moving XMM,YMM,ZMM register.  */
+   6,				/* cost of moving SSE register to integer.  */
+   18, 6,				/* Gather load static, per_elt.  */
+   18, 6,				/* Gather store static, per_elt.  */
+   32,				  	/* size of l1 cache.  */
+   4096,					/* size of l2 cache.  */
+   64,					/* size of prefetch block.  */
+   /* Lujiazui processor never drop prefetches, like AMD processors.  */
+   100,					/* number of parallel prefetches.  */
+   3,					/* Branch cost.  */
+   COSTS_N_INSNS (3),			/* cost of FADD and FSUB insns.  */
+   COSTS_N_INSNS (4),			/* cost of FMUL instruction.  */
+   COSTS_N_INSNS (22),			/* cost of FDIV instruction.  */
+   COSTS_N_INSNS (1),			/* cost of FABS instruction.  */
+   COSTS_N_INSNS (1),			/* cost of FCHS instruction.  */
+   COSTS_N_INSNS (44),			/* cost of FSQRT instruction.  */
+ 
+   COSTS_N_INSNS (1),			/* cost of cheap SSE instruction.  */
+   COSTS_N_INSNS (3),			/* cost of ADDSS/SD SUBSS/SD insns.  */
+   COSTS_N_INSNS (3),			/* cost of MULSS instruction.  */
+   COSTS_N_INSNS (4),			/* cost of MULSD instruction.  */
+   COSTS_N_INSNS (6),			/* cost of FMA SS instruction.  */
+   COSTS_N_INSNS (6),			/* cost of FMA SD instruction.  */
+   COSTS_N_INSNS (13),			/* cost of DIVSS instruction.  */
+   COSTS_N_INSNS (17),			/* cost of DIVSD instruction.  */
+   COSTS_N_INSNS (32),			/* cost of SQRTSS instruction.  */
+   COSTS_N_INSNS (60),			/* cost of SQRTSD instruction.  */
+   1, 4, 3, 3,				/* reassoc int, fp, vec_int, vec_fp.  */
+   lujiazui_memcpy,
+   lujiazui_memset,
+   COSTS_N_INSNS (4),			/* cond_taken_branch_cost.  */
+   COSTS_N_INSNS (2),			/* cond_not_taken_branch_cost.  */
+   "16:11:8",				/* Loop alignment.  */
+   "16:11:8",				/* Jump alignment.  */
+   "0:0:8",				/* Label alignment.  */
+   "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* Generic should produce code tuned for Core-i7 (and newer chips)
*************** struct processor_costs generic_cost = {
*** 3205,3210 ****
--- 3510,3517 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
  /* core_cost should produce code tuned for Core familly of CPUs.  */
*************** struct processor_costs core_cost = {
*** 3331,3335 ****
--- 3638,3644 ----
    "16:11:8",				/* Jump alignment.  */
    "0:0:8",				/* Label alignment.  */
    "16",					/* Func alignment.  */
+   4,					/* Small unroll limit.  */
+   2,					/* Small unroll factor.  */
  };
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-tune-sched-atom.cc gcc-13.1.0/gcc/config/i386/x86-tune-sched-atom.cc
*** gcc-12.2.0/gcc/config/i386/x86-tune-sched-atom.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-tune-sched-atom.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Scheduler hooks for IA-32 which implement atom+ specific logic.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Scheduler hooks for IA-32 which implement atom+ specific logic.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-tune-sched-bd.cc gcc-13.1.0/gcc/config/i386/x86-tune-sched-bd.cc
*** gcc-12.2.0/gcc/config/i386/x86-tune-sched-bd.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-tune-sched-bd.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Scheduler hooks for IA-32 which implement bdver1-4 specific logic.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Scheduler hooks for IA-32 which implement bdver1-4 specific logic.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-tune-sched-core.cc gcc-13.1.0/gcc/config/i386/x86-tune-sched-core.cc
*** gcc-12.2.0/gcc/config/i386/x86-tune-sched-core.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-tune-sched-core.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Scheduler hooks for IA-32 which implement bdver1-4 specific logic.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Scheduler hooks for IA-32 which implement bdver1-4 specific logic.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-tune-sched.cc gcc-13.1.0/gcc/config/i386/x86-tune-sched.cc
*** gcc-12.2.0/gcc/config/i386/x86-tune-sched.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-tune-sched.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Scheduler hooks for IA-32 which implement CPU specific logic.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Scheduler hooks for IA-32 which implement CPU specific logic.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** ix86_issue_rate (void)
*** 58,63 ****
--- 58,64 ----
      case PROCESSOR_K8:
      case PROCESSOR_AMDFAM10:
      case PROCESSOR_BTVER1:
+     case PROCESSOR_LUJIAZUI:
        return 3;
  
      case PROCESSOR_BDVER1:
*************** ix86_issue_rate (void)
*** 67,81 ****
--- 68,97 ----
      case PROCESSOR_ZNVER1:
      case PROCESSOR_ZNVER2:
      case PROCESSOR_ZNVER3:
+     case PROCESSOR_ZNVER4:
      case PROCESSOR_CORE2:
      case PROCESSOR_NEHALEM:
      case PROCESSOR_SANDYBRIDGE:
      case PROCESSOR_HASWELL:
      case PROCESSOR_TREMONT:
+     case PROCESSOR_SKYLAKE:
+     case PROCESSOR_SKYLAKE_AVX512:
+     case PROCESSOR_CASCADELAKE:
+     case PROCESSOR_CANNONLAKE:
      case PROCESSOR_ALDERLAKE:
      case PROCESSOR_GENERIC:
        return 4;
  
+     case PROCESSOR_ICELAKE_CLIENT:
+     case PROCESSOR_ICELAKE_SERVER:
+     case PROCESSOR_TIGERLAKE:
+     case PROCESSOR_COOPERLAKE:
+     case PROCESSOR_ROCKETLAKE:
+       return 5;
+ 
+     case PROCESSOR_SAPPHIRERAPIDS:
+       return 6;
+ 
      default:
        return 1;
      }
*************** ix86_adjust_cost (rtx_insn *insn, int de
*** 368,373 ****
--- 384,390 ----
  
      case PROCESSOR_ATHLON:
      case PROCESSOR_K8:
+     case PROCESSOR_LUJIAZUI:
        memory = get_attr_memory (insn);
  
        /* Show ability of reorder buffer to hide latency of load by executing
*************** ix86_adjust_cost (rtx_insn *insn, int de
*** 399,404 ****
--- 416,422 ----
      case PROCESSOR_ZNVER1:
      case PROCESSOR_ZNVER2:
      case PROCESSOR_ZNVER3:
+     case PROCESSOR_ZNVER4:
        /* Stack engine allows to execute push&pop instructions in parall.  */
        if ((insn_type == TYPE_PUSH || insn_type == TYPE_POP)
  	  && (dep_insn_type == TYPE_PUSH || dep_insn_type == TYPE_POP))
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86-tune.def gcc-13.1.0/gcc/config/i386/x86-tune.def
*** gcc-12.2.0/gcc/config/i386/x86-tune.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86-tune.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of x86 tunable features.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of x86 tunable features.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 41,48 ****
  /* X86_TUNE_SCHEDULE: Enable scheduling.  */
  DEF_TUNE (X86_TUNE_SCHEDULE, "schedule",
            m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL | m_SILVERMONT
! 	  | m_INTEL | m_KNL | m_KNM | m_K6_GEODE | m_AMD_MULTIPLE | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_PARTIAL_REG_DEPENDENCY: Enable more register renaming
     on modern chips.  Prefer stores affecting whole integer register
--- 41,49 ----
  /* X86_TUNE_SCHEDULE: Enable scheduling.  */
  DEF_TUNE (X86_TUNE_SCHEDULE, "schedule",
            m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL | m_SILVERMONT
! 	  | m_INTEL | m_KNL | m_KNM | m_K6_GEODE | m_AMD_MULTIPLE | m_LUJIAZUI
! 	  | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM
! 	  | m_GENERIC)
  
  /* X86_TUNE_PARTIAL_REG_DEPENDENCY: Enable more register renaming
     on modern chips.  Prefer stores affecting whole integer register
*************** DEF_TUNE (X86_TUNE_SCHEDULE, "schedule",
*** 51,58 ****
  DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency",
            m_P4_NOCONA | m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE | m_CORE_AVX2
  	  | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL
! 	  | m_KNL | m_KNM | m_AMD_MULTIPLE | m_TREMONT | m_ALDERLAKE
! 	  | m_GENERIC)
  
  /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: This knob promotes all store
     destinations to be 128bit to allow register renaming on 128bit SSE units,
--- 52,59 ----
  DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENCY, "partial_reg_dependency",
            m_P4_NOCONA | m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE | m_CORE_AVX2
  	  | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL
! 	  | m_KNL | m_KNM | m_AMD_MULTIPLE | m_LUJIAZUI | m_TREMONT
! 	  | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY: This knob promotes all store
     destinations to be 128bit to allow register renaming on 128bit SSE units,
*************** DEF_TUNE (X86_TUNE_PARTIAL_REG_DEPENDENC
*** 62,68 ****
     that can be partly masked by careful scheduling of moves.  */
  DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY, "sse_partial_reg_dependency",
            m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10
! 	  | m_BDVER | m_ZNVER | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY: This knob avoids
     partial write to the destination in scalar SSE conversion from FP
--- 63,70 ----
     that can be partly masked by careful scheduling of moves.  */
  DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_DEPENDENCY, "sse_partial_reg_dependency",
            m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10
! 	  | m_BDVER | m_ZNVER | m_LUJIAZUI | m_TREMONT | m_ALDERLAKE
! 	  | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY: This knob avoids
     partial write to the destination in scalar SSE conversion from FP
*************** DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_DEPEN
*** 70,89 ****
  DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY,
  	  "sse_partial_reg_fp_converts_dependency",
  	  m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10
! 	  | m_BDVER | m_ZNVER | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY: This knob avoids partial
     write to the destination in scalar SSE conversion from integer to FP.  */
  DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY,
  	  "sse_partial_reg_converts_dependency",
  	  m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10
! 	  | m_BDVER | m_ZNVER | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_DEST_FALSE_DEP_FOR_GLC: This knob inserts zero-idiom before
     several insns to break false dependency on the dest register for GLC
     micro-architecture.  */
  DEF_TUNE (X86_TUNE_DEST_FALSE_DEP_FOR_GLC,
! 	  "dest_false_dep_for_glc", m_SAPPHIRERAPIDS | m_ALDERLAKE)
  
  /* X86_TUNE_SSE_SPLIT_REGS: Set for machines where the type and dependencies
     are resolved on SSE register parts instead of whole registers, so we may
--- 72,94 ----
  DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_FP_CONVERTS_DEPENDENCY,
  	  "sse_partial_reg_fp_converts_dependency",
  	  m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10
! 	  | m_BDVER | m_ZNVER | m_LUJIAZUI | m_ALDERLAKE | m_CORE_ATOM
! 	  | m_GENERIC)
  
  /* X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY: This knob avoids partial
     write to the destination in scalar SSE conversion from integer to FP.  */
  DEF_TUNE (X86_TUNE_SSE_PARTIAL_REG_CONVERTS_DEPENDENCY,
  	  "sse_partial_reg_converts_dependency",
  	  m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_AMDFAM10
! 	  | m_BDVER | m_ZNVER | m_LUJIAZUI | m_ALDERLAKE | m_CORE_ATOM
! 	  | m_GENERIC)
  
  /* X86_TUNE_DEST_FALSE_DEP_FOR_GLC: This knob inserts zero-idiom before
     several insns to break false dependency on the dest register for GLC
     micro-architecture.  */
  DEF_TUNE (X86_TUNE_DEST_FALSE_DEP_FOR_GLC,
! 	  "dest_false_dep_for_glc", m_SAPPHIRERAPIDS | m_ALDERLAKE
! 	  | m_CORE_ATOM)
  
  /* X86_TUNE_SSE_SPLIT_REGS: Set for machines where the type and dependencies
     are resolved on SSE register parts instead of whole registers, so we may
*************** DEF_TUNE (X86_TUNE_PARTIAL_FLAG_REG_STAL
*** 108,146 ****
  DEF_TUNE (X86_TUNE_MOVX, "movx",
            m_PPRO | m_P4_NOCONA | m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE
  	  | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_KNL | m_KNM | m_INTEL
! 	  | m_GOLDMONT_PLUS | m_GEODE | m_AMD_MULTIPLE
! 	  | m_CORE_AVX2 | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_MEMORY_MISMATCH_STALL: Avoid partial stores that are followed by
     full sized loads.  */
  DEF_TUNE (X86_TUNE_MEMORY_MISMATCH_STALL, "memory_mismatch_stall",
            m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_INTEL
  	  | m_KNL | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS | m_AMD_MULTIPLE
! 	  | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_FUSE_CMP_AND_BRANCH_32: Fuse compare with a subsequent
     conditional jump instruction for 32 bit TARGET.  */
  DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_32, "fuse_cmp_and_branch_32",
! 	  m_CORE_ALL | m_BDVER | m_ZNVER | m_GENERIC)
  
  /* X86_TUNE_FUSE_CMP_AND_BRANCH_64: Fuse compare with a subsequent
     conditional jump instruction for TARGET_64BIT.  */
  DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_64, "fuse_cmp_and_branch_64",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BDVER
! 	  | m_ZNVER | m_GENERIC)
  
  /* X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS: Fuse compare with a
     subsequent conditional jump instruction when the condition jump
     check sign flag (SF) or overflow flag (OF).  */
  DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, "fuse_cmp_and_branch_soflags",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BDVER
! 	  | m_ZNVER | m_GENERIC)
  
  /* X86_TUNE_FUSE_ALU_AND_BRANCH: Fuse alu with a subsequent conditional
     jump instruction when the alu instruction produces the CCFLAG consumed by
     the conditional jump instruction. */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH, "fuse_alu_and_branch",
!           m_SANDYBRIDGE | m_CORE_AVX2 | m_GENERIC)
  
  
  /*****************************************************************************/
--- 113,151 ----
  DEF_TUNE (X86_TUNE_MOVX, "movx",
            m_PPRO | m_P4_NOCONA | m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE
  	  | m_BONNELL | m_SILVERMONT | m_GOLDMONT | m_KNL | m_KNM | m_INTEL
! 	  | m_GOLDMONT_PLUS | m_GEODE | m_AMD_MULTIPLE | m_LUJIAZUI
! 	  | m_CORE_AVX2 | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_MEMORY_MISMATCH_STALL: Avoid partial stores that are followed by
     full sized loads.  */
  DEF_TUNE (X86_TUNE_MEMORY_MISMATCH_STALL, "memory_mismatch_stall",
            m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_INTEL
  	  | m_KNL | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS | m_AMD_MULTIPLE
! 	  | m_LUJIAZUI | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_FUSE_CMP_AND_BRANCH_32: Fuse compare with a subsequent
     conditional jump instruction for 32 bit TARGET.  */
  DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_32, "fuse_cmp_and_branch_32",
! 	  m_CORE_ALL | m_BDVER | m_ZNVER | m_LUJIAZUI | m_GENERIC)
  
  /* X86_TUNE_FUSE_CMP_AND_BRANCH_64: Fuse compare with a subsequent
     conditional jump instruction for TARGET_64BIT.  */
  DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_64, "fuse_cmp_and_branch_64",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BDVER
! 	  | m_ZNVER | m_LUJIAZUI | m_GENERIC)
  
  /* X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS: Fuse compare with a
     subsequent conditional jump instruction when the condition jump
     check sign flag (SF) or overflow flag (OF).  */
  DEF_TUNE (X86_TUNE_FUSE_CMP_AND_BRANCH_SOFLAGS, "fuse_cmp_and_branch_soflags",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_BDVER
! 	  | m_ZNVER | m_LUJIAZUI | m_GENERIC)
  
  /* X86_TUNE_FUSE_ALU_AND_BRANCH: Fuse alu with a subsequent conditional
     jump instruction when the alu instruction produces the CCFLAG consumed by
     the conditional jump instruction. */
  DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH, "fuse_alu_and_branch",
! 		  m_SANDYBRIDGE | m_CORE_AVX2 | m_LUJIAZUI | m_GENERIC)
  
  
  /*****************************************************************************/
*************** DEF_TUNE (X86_TUNE_FUSE_ALU_AND_BRANCH,
*** 157,163 ****
  
  DEF_TUNE (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, "accumulate_outgoing_args",
  	  m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL
! 	  | m_GOLDMONT | m_GOLDMONT_PLUS | m_ATHLON_K8)
  
  /* X86_TUNE_PROLOGUE_USING_MOVE: Do not use push/pop in prologues that are
     considered on critical path.  */
--- 162,168 ----
  
  DEF_TUNE (X86_TUNE_ACCUMULATE_OUTGOING_ARGS, "accumulate_outgoing_args",
  	  m_PPRO | m_P4_NOCONA | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL
! 	  | m_GOLDMONT | m_GOLDMONT_PLUS | m_ATHLON_K8 | m_LUJIAZUI)
  
  /* X86_TUNE_PROLOGUE_USING_MOVE: Do not use push/pop in prologues that are
     considered on critical path.  */
*************** DEF_TUNE (X86_TUNE_EPILOGUE_USING_MOVE,
*** 171,185 ****
  
  /* X86_TUNE_USE_LEAVE: Use "leave" instruction in epilogues where it fits.  */
  DEF_TUNE (X86_TUNE_USE_LEAVE, "use_leave",
! 	  m_386 | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE | m_TREMONT
! 	  | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_PUSH_MEMORY: Enable generation of "push mem" instructions.
     Some chips, like 486 and Pentium works faster with separate load
     and push instructions.  */
  DEF_TUNE (X86_TUNE_PUSH_MEMORY, "push_memory",
            m_386 | m_P4_NOCONA | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE
! 	  | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_SINGLE_PUSH: Enable if single push insn is preferred
     over esp subtraction.  */
--- 176,190 ----
  
  /* X86_TUNE_USE_LEAVE: Use "leave" instruction in epilogues where it fits.  */
  DEF_TUNE (X86_TUNE_USE_LEAVE, "use_leave",
! 	  m_386 | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE | m_LUJIAZUI
! 	  | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_PUSH_MEMORY: Enable generation of "push mem" instructions.
     Some chips, like 486 and Pentium works faster with separate load
     and push instructions.  */
  DEF_TUNE (X86_TUNE_PUSH_MEMORY, "push_memory",
            m_386 | m_P4_NOCONA | m_CORE_ALL | m_K6_GEODE | m_AMD_MULTIPLE
! 	  | m_LUJIAZUI | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_SINGLE_PUSH: Enable if single push insn is preferred
     over esp subtraction.  */
*************** DEF_TUNE (X86_TUNE_SOFTWARE_PREFETCHING_
*** 234,240 ****
  
  /* X86_TUNE_LCP_STALL: Avoid an expensive length-changing prefix stall
     on 16-bit immediate moves into memory on Core2 and Corei7.  */
! DEF_TUNE (X86_TUNE_LCP_STALL, "lcp_stall", m_CORE_ALL | m_GENERIC)
  
  /* X86_TUNE_READ_MODIFY: Enable use of read-modify instructions such
     as "add mem, reg".  */
--- 239,245 ----
  
  /* X86_TUNE_LCP_STALL: Avoid an expensive length-changing prefix stall
     on 16-bit immediate moves into memory on Core2 and Corei7.  */
! DEF_TUNE (X86_TUNE_LCP_STALL, "lcp_stall", m_CORE_ALL | m_LUJIAZUI | m_GENERIC)
  
  /* X86_TUNE_READ_MODIFY: Enable use of read-modify instructions such
     as "add mem, reg".  */
*************** DEF_TUNE (X86_TUNE_READ_MODIFY, "read_mo
*** 249,267 ****
  DEF_TUNE (X86_TUNE_USE_INCDEC, "use_incdec",
            ~(m_P4_NOCONA | m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE
  	    | m_BONNELL | m_SILVERMONT | m_INTEL |  m_KNL | m_KNM | m_GOLDMONT
! 	    | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_GENERIC))
  
  /* X86_TUNE_INTEGER_DFMODE_MOVES: Enable if integer moves are preferred
     for DFmode copies */
  DEF_TUNE (X86_TUNE_INTEGER_DFMODE_MOVES, "integer_dfmode_moves",
            ~(m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT
! 	    | m_KNL | m_KNM | m_INTEL | m_GEODE | m_AMD_MULTIPLE | m_GOLDMONT
! 	    | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_GENERIC))
  
  /* X86_TUNE_OPT_AGU: Optimize for Address Generation Unit. This flag
     will impact LEA instruction selection. */
  DEF_TUNE (X86_TUNE_OPT_AGU, "opt_agu", m_BONNELL | m_SILVERMONT | m_KNL
! 	 | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL)
  
  /* X86_TUNE_AVOID_LEA_FOR_ADDR: Avoid lea for address computation.  */
  DEF_TUNE (X86_TUNE_AVOID_LEA_FOR_ADDR, "avoid_lea_for_addr",
--- 254,274 ----
  DEF_TUNE (X86_TUNE_USE_INCDEC, "use_incdec",
            ~(m_P4_NOCONA | m_CORE2 | m_NEHALEM  | m_SANDYBRIDGE
  	    | m_BONNELL | m_SILVERMONT | m_INTEL |  m_KNL | m_KNM | m_GOLDMONT
! 	    | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM
! 	    | m_LUJIAZUI | m_GENERIC))
  
  /* X86_TUNE_INTEGER_DFMODE_MOVES: Enable if integer moves are preferred
     for DFmode copies */
  DEF_TUNE (X86_TUNE_INTEGER_DFMODE_MOVES, "integer_dfmode_moves",
            ~(m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT
! 	    | m_KNL | m_KNM | m_INTEL | m_GEODE | m_AMD_MULTIPLE | m_LUJIAZUI
! 	    | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	    | m_CORE_ATOM | m_GENERIC))
  
  /* X86_TUNE_OPT_AGU: Optimize for Address Generation Unit. This flag
     will impact LEA instruction selection. */
  DEF_TUNE (X86_TUNE_OPT_AGU, "opt_agu", m_BONNELL | m_SILVERMONT | m_KNL
! 	 | m_KNM | m_GOLDMONT | m_GOLDMONT_PLUS | m_INTEL | m_LUJIAZUI)
  
  /* X86_TUNE_AVOID_LEA_FOR_ADDR: Avoid lea for address computation.  */
  DEF_TUNE (X86_TUNE_AVOID_LEA_FOR_ADDR, "avoid_lea_for_addr",
*************** DEF_TUNE (X86_TUNE_SINGLE_STRINGOP, "sin
*** 294,300 ****
     move/set sequences of bytes with known size.  */
  DEF_TUNE (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB,
  	  "prefer_known_rep_movsb_stosb",
! 	  m_SKYLAKE | m_ALDERLAKE | m_TREMONT | m_CORE_AVX512)
  
  /* X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES: Enable generation of
     compact prologues and epilogues by issuing a misaligned moves.  This
--- 301,308 ----
     move/set sequences of bytes with known size.  */
  DEF_TUNE (X86_TUNE_PREFER_KNOWN_REP_MOVSB_STOSB,
  	  "prefer_known_rep_movsb_stosb",
! 	  m_SKYLAKE | m_ALDERLAKE | m_CORE_ATOM | m_TREMONT | m_CORE_AVX512
! 	  | m_LUJIAZUI)
  
  /* X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES: Enable generation of
     compact prologues and epilogues by issuing a misaligned moves.  This
*************** DEF_TUNE (X86_TUNE_PREFER_KNOWN_REP_MOVS
*** 303,317 ****
     FIXME: This may actualy be a win on more targets than listed here.  */
  DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES,
  	  "misaligned_move_string_pro_epilogues",
! 	  m_386 | m_486 | m_CORE_ALL | m_AMD_MULTIPLE | m_TREMONT
! 	  | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_USE_SAHF: Controls use of SAHF.  */
  DEF_TUNE (X86_TUNE_USE_SAHF, "use_sahf",
            m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT
  	  | m_KNL | m_KNM | m_INTEL | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER
! 	  | m_BTVER | m_ZNVER | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT
! 	  | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_USE_CLTD: Controls use of CLTD and CTQO instructions.  */
  DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd",
--- 311,325 ----
     FIXME: This may actualy be a win on more targets than listed here.  */
  DEF_TUNE (X86_TUNE_MISALIGNED_MOVE_STRING_PRO_EPILOGUES,
  	  "misaligned_move_string_pro_epilogues",
! 	  m_386 | m_486 | m_CORE_ALL | m_AMD_MULTIPLE | m_LUJIAZUI | m_TREMONT
! 	  | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_USE_SAHF: Controls use of SAHF.  */
  DEF_TUNE (X86_TUNE_USE_SAHF, "use_sahf",
            m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT
  	  | m_KNL | m_KNM | m_INTEL | m_K6_GEODE | m_K8 | m_AMDFAM10 | m_BDVER
! 	  | m_BTVER | m_ZNVER | m_LUJIAZUI | m_GOLDMONT | m_GOLDMONT_PLUS
! 	  | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_USE_CLTD: Controls use of CLTD and CTQO instructions.  */
  DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd",
*************** DEF_TUNE (X86_TUNE_USE_CLTD, "use_cltd",
*** 321,333 ****
  /* X86_TUNE_USE_BT: Enable use of BT (bit test) instructions.  */
  DEF_TUNE (X86_TUNE_USE_BT, "use_bt",
            m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL
! 	  | m_LAKEMONT | m_AMD_MULTIPLE | m_GOLDMONT | m_GOLDMONT_PLUS
! 	  | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_AVOID_FALSE_DEP_FOR_BMI: Avoid false dependency
     for bit-manipulation instructions.  */
  DEF_TUNE (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, "avoid_false_dep_for_bmi",
! 	  m_SANDYBRIDGE | m_CORE_AVX2 | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_ADJUST_UNROLL: This enables adjusting the unroll factor based
     on hardware capabilities. Bdver3 hardware has a loop buffer which makes
--- 329,342 ----
  /* X86_TUNE_USE_BT: Enable use of BT (bit test) instructions.  */
  DEF_TUNE (X86_TUNE_USE_BT, "use_bt",
            m_CORE_ALL | m_BONNELL | m_SILVERMONT | m_KNL | m_KNM | m_INTEL
! 	  | m_LAKEMONT | m_AMD_MULTIPLE | m_LUJIAZUI | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_AVOID_FALSE_DEP_FOR_BMI: Avoid false dependency
     for bit-manipulation instructions.  */
  DEF_TUNE (X86_TUNE_AVOID_FALSE_DEP_FOR_BMI, "avoid_false_dep_for_bmi",
! 	  m_SANDYBRIDGE | m_CORE_AVX2 | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM
! 	  | m_LUJIAZUI | m_GENERIC)
  
  /* X86_TUNE_ADJUST_UNROLL: This enables adjusting the unroll factor based
     on hardware capabilities. Bdver3 hardware has a loop buffer which makes
*************** DEF_TUNE (X86_TUNE_ADJUST_UNROLL, "adjus
*** 339,356 ****
     if-converted sequence to one.  */
  DEF_TUNE (X86_TUNE_ONE_IF_CONV_INSN, "one_if_conv_insn",
  	  m_SILVERMONT | m_KNL | m_KNM | m_INTEL | m_CORE_ALL | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_AVOID_MFENCE: Use lock prefixed instructions instead of mfence.  */
  DEF_TUNE (X86_TUNE_AVOID_MFENCE, "avoid_mfence",
! 	 m_CORE_ALL | m_BDVER | m_ZNVER | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_EXPAND_ABS: This enables a new abs pattern by
     generating instructions for abs (x) = (((signed) x >> (W-1) ^ x) -
     (signed) x >> (W-1)) instead of cmove or SSE max/abs instructions.  */
  DEF_TUNE (X86_TUNE_EXPAND_ABS, "expand_abs",
  	  m_CORE_ALL | m_SILVERMONT | m_KNL | m_KNM | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS)
  
  /*****************************************************************************/
  /* 387 instruction selection tuning                                          */
--- 348,367 ----
     if-converted sequence to one.  */
  DEF_TUNE (X86_TUNE_ONE_IF_CONV_INSN, "one_if_conv_insn",
  	  m_SILVERMONT | m_KNL | m_KNM | m_INTEL | m_CORE_ALL | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_LUJIAZUI
! 	  | m_GENERIC)
  
  /* X86_TUNE_AVOID_MFENCE: Use lock prefixed instructions instead of mfence.  */
  DEF_TUNE (X86_TUNE_AVOID_MFENCE, "avoid_mfence",
! 	 m_CORE_ALL | m_BDVER | m_ZNVER | m_LUJIAZUI | m_TREMONT | m_ALDERLAKE
! 	 | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_EXPAND_ABS: This enables a new abs pattern by
     generating instructions for abs (x) = (((signed) x >> (W-1) ^ x) -
     (signed) x >> (W-1)) instead of cmove or SSE max/abs instructions.  */
  DEF_TUNE (X86_TUNE_EXPAND_ABS, "expand_abs",
  	  m_CORE_ALL | m_SILVERMONT | m_KNL | m_KNM | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS | m_LUJIAZUI)
  
  /*****************************************************************************/
  /* 387 instruction selection tuning                                          */
*************** DEF_TUNE (X86_TUNE_USE_HIMODE_FIOP, "use
*** 367,383 ****
  DEF_TUNE (X86_TUNE_USE_SIMODE_FIOP, "use_simode_fiop",
            ~(m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL
  	    | m_SILVERMONT | m_KNL | m_KNM | m_INTEL | m_AMD_MULTIPLE
! 	    | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	    | m_GENERIC))
  
  /* X86_TUNE_USE_FFREEP: Use freep instruction instead of fstp.  */
! DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE)
  
  /* X86_TUNE_EXT_80387_CONSTANTS: Use fancy 80387 constants, such as PI.  */
  DEF_TUNE (X86_TUNE_EXT_80387_CONSTANTS, "ext_80387_constants",
            m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT
! 	  | m_KNL | m_KNM | m_INTEL | m_K6_GEODE | m_ATHLON_K8 | m_GOLDMONT
! 	  | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /*****************************************************************************/
  /* SSE instruction selection tuning                                          */
--- 378,395 ----
  DEF_TUNE (X86_TUNE_USE_SIMODE_FIOP, "use_simode_fiop",
            ~(m_PENT | m_LAKEMONT | m_PPRO | m_CORE_ALL | m_BONNELL
  	    | m_SILVERMONT | m_KNL | m_KNM | m_INTEL | m_AMD_MULTIPLE
! 	    | m_LUJIAZUI | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT
! 	    | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC))
  
  /* X86_TUNE_USE_FFREEP: Use freep instruction instead of fstp.  */
! DEF_TUNE (X86_TUNE_USE_FFREEP, "use_ffreep", m_AMD_MULTIPLE | m_LUJIAZUI)
  
  /* X86_TUNE_EXT_80387_CONSTANTS: Use fancy 80387 constants, such as PI.  */
  DEF_TUNE (X86_TUNE_EXT_80387_CONSTANTS, "ext_80387_constants",
            m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BONNELL | m_SILVERMONT
! 	  | m_KNL | m_KNM | m_INTEL | m_K6_GEODE | m_ATHLON_K8 | m_LUJIAZUI
! 	  | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM
! 	  | m_GENERIC)
  
  /*****************************************************************************/
  /* SSE instruction selection tuning                                          */
*************** DEF_TUNE (X86_TUNE_GENERAL_REGS_SSE_SPIL
*** 393,406 ****
  DEF_TUNE (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, "sse_unaligned_load_optimal",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_KNL | m_KNM
  	  | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	  | m_AMDFAM10 | m_BDVER | m_BTVER | m_ZNVER | m_GENERIC)
  
  /* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL: Use movups for misaligned stores
     instead of a sequence loading registers by parts.  */
  DEF_TUNE (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL, "sse_unaligned_store_optimal",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_KNL | m_KNM
! 	  | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS
! 	  | m_TREMONT | m_ALDERLAKE | m_BDVER | m_ZNVER | m_GENERIC)
  
  /* X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL: Use packed single
     precision 128bit instructions instead of double where possible.   */
--- 405,419 ----
  DEF_TUNE (X86_TUNE_SSE_UNALIGNED_LOAD_OPTIMAL, "sse_unaligned_load_optimal",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_KNL | m_KNM
  	  | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	  | m_CORE_ATOM | m_AMDFAM10 | m_BDVER | m_BTVER | m_ZNVER | m_LUJIAZUI
! 	  | m_GENERIC)
  
  /* X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL: Use movups for misaligned stores
     instead of a sequence loading registers by parts.  */
  DEF_TUNE (X86_TUNE_SSE_UNALIGNED_STORE_OPTIMAL, "sse_unaligned_store_optimal",
  	  m_NEHALEM | m_SANDYBRIDGE | m_CORE_AVX2 | m_SILVERMONT | m_KNL | m_KNM
! 	  | m_INTEL | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	  | m_CORE_ATOM | m_BDVER | m_ZNVER | m_LUJIAZUI | m_GENERIC)
  
  /* X86_TUNE_SSE_PACKED_SINGLE_INSN_OPTIMAL: Use packed single
     precision 128bit instructions instead of double where possible.   */
*************** DEF_TUNE (X86_TUNE_SSE_PACKED_SINGLE_INS
*** 409,421 ****
  
  /* X86_TUNE_SSE_TYPELESS_STORES: Always movaps/movups for 128bit stores.   */
  DEF_TUNE (X86_TUNE_SSE_TYPELESS_STORES, "sse_typeless_stores",
! 	  m_AMD_MULTIPLE | m_CORE_ALL | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_SSE_LOAD0_BY_PXOR: Always use pxor to load0 as opposed to
     xorps/xorpd and other variants.  */
  DEF_TUNE (X86_TUNE_SSE_LOAD0_BY_PXOR, "sse_load0_by_pxor",
  	  m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BDVER | m_BTVER | m_ZNVER
! 	  | m_TREMONT | m_ALDERLAKE | m_GENERIC)
  
  /* X86_TUNE_INTER_UNIT_MOVES_TO_VEC: Enable moves in from integer
     to SSE registers.  If disabled, the moves will be done by storing
--- 422,435 ----
  
  /* X86_TUNE_SSE_TYPELESS_STORES: Always movaps/movups for 128bit stores.   */
  DEF_TUNE (X86_TUNE_SSE_TYPELESS_STORES, "sse_typeless_stores",
! 	  m_AMD_MULTIPLE | m_LUJIAZUI | m_CORE_ALL | m_TREMONT | m_ALDERLAKE
! 	  | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_SSE_LOAD0_BY_PXOR: Always use pxor to load0 as opposed to
     xorps/xorpd and other variants.  */
  DEF_TUNE (X86_TUNE_SSE_LOAD0_BY_PXOR, "sse_load0_by_pxor",
  	  m_PPRO | m_P4_NOCONA | m_CORE_ALL | m_BDVER | m_BTVER | m_ZNVER
! 	  | m_LUJIAZUI | m_TREMONT | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC)
  
  /* X86_TUNE_INTER_UNIT_MOVES_TO_VEC: Enable moves in from integer
     to SSE registers.  If disabled, the moves will be done by storing
*************** DEF_TUNE (X86_TUNE_SLOW_PSHUFB, "slow_ps
*** 462,491 ****
  /* X86_TUNE_AVOID_4BYTE_PREFIXES: Avoid instructions requiring 4+ bytes of prefixes.  */
  DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES, "avoid_4byte_prefixes",
  	  m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	  | m_INTEL)
  
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ALDERLAKE | m_GENERIC))
  
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ALDERLAKE | m_GENERIC))
  
  /* X86_TUNE_USE_GATHER: Use gather instructions for vectors with 8 or more
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER, "use_gather",
! 	  ~(m_ZNVER1 | m_ZNVER2 | m_ALDERLAKE | m_GENERIC))
  
  /* X86_TUNE_AVOID_128FMA_CHAINS: Avoid creating loops with tight 128bit or
     smaller FMA chain.  */
! DEF_TUNE (X86_TUNE_AVOID_128FMA_CHAINS, "avoid_fma_chains", m_ZNVER)
  
  /* X86_TUNE_AVOID_256FMA_CHAINS: Avoid creating loops with tight 256bit or
     smaller FMA chain.  */
! DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3)
  
  /* X86_TUNE_V2DF_REDUCTION_PREFER_PHADDPD: Prefer haddpd
     for v2df vector reduction.  */
--- 476,525 ----
  /* X86_TUNE_AVOID_4BYTE_PREFIXES: Avoid instructions requiring 4+ bytes of prefixes.  */
  DEF_TUNE (X86_TUNE_AVOID_4BYTE_PREFIXES, "avoid_4byte_prefixes",
  	  m_SILVERMONT | m_GOLDMONT | m_GOLDMONT_PLUS | m_TREMONT | m_ALDERLAKE
! 	  | m_CORE_ATOM | m_INTEL)
  
  /* X86_TUNE_USE_GATHER_2PARTS: Use gather instructions for vectors with 2
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_2PARTS, "use_gather_2parts",
! 	  ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC))
! 
! /* X86_TUNE_USE_SCATTER_2PARTS: Use scater instructions for vectors with 2
!    elements.  */
! DEF_TUNE (X86_TUNE_USE_SCATTER_2PARTS, "use_scatter_2parts",
! 	  ~(m_ZNVER4))
  
  /* X86_TUNE_USE_GATHER_4PARTS: Use gather instructions for vectors with 4
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER_4PARTS, "use_gather_4parts",
! 	  ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER3 | m_ZNVER4 | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC))
! 
! /* X86_TUNE_USE_SCATTER_4PARTS: Use scater instructions for vectors with 4
!    elements.  */
! DEF_TUNE (X86_TUNE_USE_SCATTER_4PARTS, "use_scatter_4parts",
! 	  ~(m_ZNVER4))
  
  /* X86_TUNE_USE_GATHER: Use gather instructions for vectors with 8 or more
     elements.  */
  DEF_TUNE (X86_TUNE_USE_GATHER, "use_gather",
! 	  ~(m_ZNVER1 | m_ZNVER2 | m_ZNVER4 | m_ALDERLAKE | m_CORE_ATOM | m_GENERIC))
! 
! /* X86_TUNE_USE_SCATTER: Use scater instructions for vectors with 8 or more
!    elements.  */
! DEF_TUNE (X86_TUNE_USE_SCATTER, "use_scatter",
! 	  ~(m_ZNVER4))
  
  /* X86_TUNE_AVOID_128FMA_CHAINS: Avoid creating loops with tight 128bit or
     smaller FMA chain.  */
! DEF_TUNE (X86_TUNE_AVOID_128FMA_CHAINS, "avoid_fma_chains", m_ZNVER1 | m_ZNVER2 | m_ZNVER3)
  
  /* X86_TUNE_AVOID_256FMA_CHAINS: Avoid creating loops with tight 256bit or
     smaller FMA chain.  */
! DEF_TUNE (X86_TUNE_AVOID_256FMA_CHAINS, "avoid_fma256_chains", m_ZNVER2 | m_ZNVER3
! 	  | m_ALDERLAKE | m_SAPPHIRERAPIDS | m_CORE_ATOM)
! 
! /* X86_TUNE_AVOID_512FMA_CHAINS: Avoid creating loops with tight 512bit or
!    smaller FMA chain.  */
! DEF_TUNE (X86_TUNE_AVOID_512FMA_CHAINS, "avoid_fma512_chains", m_NONE)
  
  /* X86_TUNE_V2DF_REDUCTION_PREFER_PHADDPD: Prefer haddpd
     for v2df vector reduction.  */
*************** DEF_TUNE (X86_TUNE_AVX128_OPTIMAL, "avx1
*** 519,543 ****
     instructions in the auto-vectorizer.  */
  DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_CORE_AVX512)
  
  /* X86_TUNE_AVX256_MOVE_BY_PIECES: Optimize move_by_pieces with 256-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX256_MOVE_BY_PIECES, "avx256_move_by_pieces",
! 	  m_CORE_AVX512)
  
  /* X86_TUNE_AVX256_STORE_BY_PIECES: Optimize store_by_pieces with 256-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECES, "avx256_store_by_pieces",
! 	  m_CORE_AVX512)
  
  /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces",
! 	  m_SAPPHIRERAPIDS)
  
  /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces",
! 	  m_SAPPHIRERAPIDS)
  
  /*****************************************************************************/
  /*****************************************************************************/
--- 553,580 ----
     instructions in the auto-vectorizer.  */
  DEF_TUNE (X86_TUNE_AVX256_OPTIMAL, "avx256_optimal", m_CORE_AVX512)
  
+ /* X86_TUNE_AVX256_SPLIT_REGS: if true, AVX512 ops are split into two AVX256 ops.  */
+ DEF_TUNE (X86_TUNE_AVX512_SPLIT_REGS, "avx512_split_regs", m_ZNVER4)
+ 
  /* X86_TUNE_AVX256_MOVE_BY_PIECES: Optimize move_by_pieces with 256-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX256_MOVE_BY_PIECES, "avx256_move_by_pieces",
! 	  m_ALDERLAKE | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3)
  
  /* X86_TUNE_AVX256_STORE_BY_PIECES: Optimize store_by_pieces with 256-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX256_STORE_BY_PIECES, "avx256_store_by_pieces",
! 	  m_ALDERLAKE | m_CORE_AVX2 | m_ZNVER1 | m_ZNVER2 | m_ZNVER3)
  
  /* X86_TUNE_AVX512_MOVE_BY_PIECES: Optimize move_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_MOVE_BY_PIECES, "avx512_move_by_pieces",
! 	  m_SAPPHIRERAPIDS | m_ZNVER4)
  
  /* X86_TUNE_AVX512_STORE_BY_PIECES: Optimize store_by_pieces with 512-bit
     AVX instructions.  */
  DEF_TUNE (X86_TUNE_AVX512_STORE_BY_PIECES, "avx512_store_by_pieces",
! 	  m_SAPPHIRERAPIDS | m_ZNVER4)
  
  /*****************************************************************************/
  /*****************************************************************************/
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86gprintrin.h gcc-13.1.0/gcc/config/i386/x86gprintrin.h
*** gcc-12.2.0/gcc/config/i386/x86gprintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86gprintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 52,57 ****
--- 52,59 ----
  
  #include <clzerointrin.h>
  
+ #include <cmpccxaddintrin.h>
+ 
  #include <enqcmdintrin.h>
  
  #include <fxsrintrin.h>
***************
*** 72,77 ****
--- 74,83 ----
  
  #include <pkuintrin.h>
  
+ #include <prfchiintrin.h>
+ 
+ #include <raointintrin.h>
+ 
  #include <rdseedintrin.h>
  
  #include <rtmintrin.h>
diff -Nrcpad gcc-12.2.0/gcc/config/i386/x86intrin.h gcc-13.1.0/gcc/config/i386/x86intrin.h
*** gcc-12.2.0/gcc/config/i386/x86intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/x86intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xm-cygwin.h gcc-13.1.0/gcc/config/i386/xm-cygwin.h
*** gcc-12.2.0/gcc/config/i386/xm-cygwin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xm-cygwin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Configuration for GCC for hosting on Windows NT.
     using a unix style C library.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Configuration for GCC for hosting on Windows NT.
     using a unix style C library.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xm-djgpp.h gcc-13.1.0/gcc/config/i386/xm-djgpp.h
*** gcc-12.2.0/gcc/config/i386/xm-djgpp.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xm-djgpp.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration for GCC for Intel 80386 running DJGPP.
!    Copyright (C) 1988-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration for GCC for Intel 80386 running DJGPP.
!    Copyright (C) 1988-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xm-mingw32.h gcc-13.1.0/gcc/config/i386/xm-mingw32.h
*** gcc-12.2.0/gcc/config/i386/xm-mingw32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xm-mingw32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Configuration for GCC for hosting on Windows32.
     using GNU tools and the Windows32 API Library.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Configuration for GCC for hosting on Windows32.
     using GNU tools and the Windows32 API Library.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xmmintrin.h gcc-13.1.0/gcc/config/i386/xmmintrin.h
*** gcc-12.2.0/gcc/config/i386/xmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 36,41 ****
--- 36,43 ----
  /* Constants for use with _mm_prefetch.  */
  enum _mm_hint
  {
+   _MM_HINT_IT0 = 19,
+   _MM_HINT_IT1 = 18,
    /* _MM_HINT_ET is _MM_HINT_T with set 3rd bit.  */
    _MM_HINT_ET0 = 7,
    _MM_HINT_ET1 = 6,
*************** enum _mm_hint
*** 51,61 ****
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_prefetch (const void *__P, enum _mm_hint __I)
  {
!   __builtin_prefetch (__P, (__I & 0x4) >> 2, __I & 0x3);
  }
  #else
  #define _mm_prefetch(P, I) \
!   __builtin_prefetch ((P), ((I & 0x4) >> 2), (I & 0x3))
  #endif
  
  #ifndef __SSE__
--- 53,64 ----
  extern __inline void __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_prefetch (const void *__P, enum _mm_hint __I)
  {
!   __builtin_ia32_prefetch (__P, (__I & 0x4) >> 2,
! 			   __I & 0x3, (__I & 0x10) >> 4);
  }
  #else
  #define _mm_prefetch(P, I) \
!   __builtin_ia32_prefetch ((P), ((I) & 0x4) >> 2, ((I) & 0x3), ((I) & 0x10) >> 4)
  #endif
  
  #ifndef __SSE__
*************** typedef float __v4sf __attribute__ ((__v
*** 109,115 ****
--- 112,121 ----
  extern __inline __m128 __attribute__((__gnu_inline__, __always_inline__, __artificial__))
  _mm_undefined_ps (void)
  {
+ #pragma GCC diagnostic push
+ #pragma GCC diagnostic ignored "-Winit-self"
    __m128 __Y = __Y;
+ #pragma GCC diagnostic pop
    return __Y;
  }
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xopintrin.h gcc-13.1.0/gcc/config/i386/xopintrin.h
*** gcc-12.2.0/gcc/config/i386/xopintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xopintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xsavecintrin.h gcc-13.1.0/gcc/config/i386/xsavecintrin.h
*** gcc-12.2.0/gcc/config/i386/xsavecintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xsavecintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xsaveintrin.h gcc-13.1.0/gcc/config/i386/xsaveintrin.h
*** gcc-12.2.0/gcc/config/i386/xsaveintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xsaveintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xsaveoptintrin.h gcc-13.1.0/gcc/config/i386/xsaveoptintrin.h
*** gcc-12.2.0/gcc/config/i386/xsaveoptintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xsaveoptintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xsavesintrin.h gcc-13.1.0/gcc/config/i386/xsavesintrin.h
*** gcc-12.2.0/gcc/config/i386/xsavesintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xsavesintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/xtestintrin.h gcc-13.1.0/gcc/config/i386/xtestintrin.h
*** gcc-12.2.0/gcc/config/i386/xtestintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/xtestintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/i386/znver.md gcc-13.1.0/gcc/config/i386/znver.md
*** gcc-12.2.0/gcc/config/i386/znver.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/znver.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,1354 ----
+ ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
+ ;;
+ ;; This file is part of GCC.
+ ;;
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ ;;
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ ;;
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ ;;
+ 
+ 
+ (define_attr "znver1_decode" "direct,vector,double"
+   (const_string "direct"))
+ 
+ ;; AMD znver1, znver2 and znver3 Scheduling
+ ;; Modeling automatons for zen decoders, integer execution pipes,
+ ;; SIMD/FP domain, AGU pipes, and dividers.
+ (define_automaton "znver1, znver1_ieu, znver1_fp, znver1_agu, znver1_idiv, znver1_fdiv")
+ 
+ ;; Decoders unit has 4 decoders and all of them can decode fast path
+ ;; and vector type instructions.
+ (define_cpu_unit "znver1-decode0" "znver1")
+ (define_cpu_unit "znver1-decode1" "znver1")
+ (define_cpu_unit "znver1-decode2" "znver1")
+ (define_cpu_unit "znver1-decode3" "znver1")
+ 
+ ;; Currently blocking all decoders for vector path instructions as
+ ;; they are dispatched separetely as microcode sequence.
+ ;; Fix me: Need to revisit this.
+ (define_reservation "znver1-vector" "znver1-decode0+znver1-decode1+znver1-decode2+znver1-decode3")
+ 
+ ;; Direct instructions can be issued to any of the four decoders.
+ (define_reservation "znver1-direct" "znver1-decode0|znver1-decode1|znver1-decode2|znver1-decode3")
+ 
+ ;; Fix me: Need to revisit this later to simulate fast path double behavior.
+ (define_reservation "znver1-double" "znver1-direct")
+ 
+ 
+ ;; Integer unit 4 ALU pipes.
+ (define_cpu_unit "znver1-ieu0" "znver1_ieu")
+ (define_cpu_unit "znver1-ieu1" "znver1_ieu")
+ (define_cpu_unit "znver1-ieu2" "znver1_ieu")
+ (define_cpu_unit "znver1-ieu3" "znver1_ieu")
+ (define_reservation "znver1-ieu" "znver1-ieu0|znver1-ieu1|znver1-ieu2|znver1-ieu3")
+ 
+ ;; 2 AGU pipes in znver1 and 3 AGU pipes in znver2 and znver3
+ ;; According to CPU diagram last AGU unit is used only for stores.
+ (define_cpu_unit "znver1-agu0" "znver1_agu")
+ (define_cpu_unit "znver1-agu1" "znver1_agu")
+ (define_cpu_unit "znver2-agu2" "znver1_agu")
+ (define_reservation "znver1-agu-reserve" "znver1-agu0|znver1-agu1")
+ (define_reservation "znver2-store-agu-reserve" "znver1-agu0|znver1-agu1|znver2-agu2")
+ 
+ ;; Load is 4 cycles. We do not model reservation of load unit.
+ ;;(define_reservation "znver1-load" "znver1-agu-reserve, nothing, nothing, nothing")
+ (define_reservation "znver1-load" "znver1-agu-reserve")
+ ;; Store operations differs between znver1, znver2 and znver3 because extra AGU
+ ;; was added.
+ (define_reservation "znver1-store" "znver1-agu-reserve")
+ (define_reservation "znver2-store" "znver2-store-agu-reserve")
+ 
+ ;; vectorpath (microcoded) instructions are single issue instructions.
+ ;; So, they occupy all the integer units.
+ (define_reservation "znver1-ivector" "znver1-ieu0+znver1-ieu1
+ 				      +znver1-ieu2+znver1-ieu3
+ 				      +znver1-agu0+znver1-agu1")
+ 
+ (define_reservation "znver2-ivector" "znver1-ieu0+znver1-ieu1
+ 				      +znver1-ieu2+znver1-ieu3
+ 				      +znver1-agu0+znver1-agu1+znver2-agu2")
+ 
+ ;; Floating point unit 4 FP pipes.
+ (define_cpu_unit "znver1-fp0" "znver1_fp")
+ (define_cpu_unit "znver1-fp1" "znver1_fp")
+ (define_cpu_unit "znver1-fp2" "znver1_fp")
+ (define_cpu_unit "znver1-fp3" "znver1_fp")
+ 
+ (define_reservation "znver1-fpu" "znver1-fp0|znver1-fp1|znver1-fp2|znver1-fp3")
+ 
+ (define_reservation "znver1-fvector" "znver1-fp0+znver1-fp1
+ 				      +znver1-fp2+znver1-fp3
+ 				      +znver1-agu0+znver1-agu1")
+ (define_reservation "znver2-fvector" "znver1-fp0+znver1-fp1
+ 				      +znver1-fp2+znver1-fp3
+ 				      +znver1-agu0+znver1-agu1+znver2-agu2")
+ 
+ ;; Dividers
+ (define_cpu_unit "znver1-idiv" "znver1_idiv")
+ (define_cpu_unit "znver1-fdiv" "znver1_fdiv")
+ 
+ ;; Call instruction
+ (define_insn_reservation "znver1_call" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (eq_attr "type" "call,callv"))
+ 			 "znver1-double,znver1-store,znver1-ieu0|znver1-ieu3")
+ 
+ (define_insn_reservation "znver2_call" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (eq_attr "type" "call,callv"))
+ 			 "znver1-double,znver2-store,znver1-ieu0|znver1-ieu3")
+ 
+ ;; General instructions
+ (define_insn_reservation "znver1_push" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "push")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver1-direct,znver1-store")
+ (define_insn_reservation "znver2_push" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "push")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver1-direct,znver2-store")
+ 
+ (define_insn_reservation "znver1_push_load" 4
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "push")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver1-direct,znver1-load,znver1-store")
+ (define_insn_reservation "znver2_push_load" 4
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "push")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver1-direct,znver1-load,znver2-store")
+ 
+ (define_insn_reservation "znver1_pop" 4
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "pop")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load")
+ 
+ (define_insn_reservation "znver1_pop_mem" 4
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "pop")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver1-direct,znver1-load,znver1-store")
+ (define_insn_reservation "znver2_pop_mem" 4
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "pop")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver1-direct,znver1-load,znver2-store")
+ 
+ ;; Leave
+ (define_insn_reservation "znver1_leave" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (eq_attr "type" "leave"))
+ 			 "znver1-double,znver1-ieu, znver1-store")
+ (define_insn_reservation "znver2_leave" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (eq_attr "type" "leave"))
+ 			 "znver1-double,znver1-ieu, znver2-store")
+ 
+ ;; Integer Instructions or General instructions
+ ;; Multiplications
+ ;; Reg operands
+ (define_insn_reservation "znver1_imul" 3
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "imul")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-ieu1")
+ 
+ (define_insn_reservation "znver1_imul_mem" 7
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "imul")
+ 				   (eq_attr "memory" "!none")))
+ 			 "znver1-direct,znver1-load, znver1-ieu1")
+ 
+ ;; Divisions
+ ;; Reg operands
+ (define_insn_reservation "znver1_idiv_DI" 41
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-idiv*14")
+ 
+ (define_insn_reservation "znver1_idiv_SI" 25
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-idiv*14")
+ 
+ (define_insn_reservation "znver1_idiv_HI" 17
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-idiv*14")
+ 
+ (define_insn_reservation "znver1_idiv_QI" 12
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-direct,znver1-idiv*13")
+ 
+ ;; Mem operands
+ (define_insn_reservation "znver1_idiv_mem_DI" 45
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-load,znver1-idiv*14")
+ 
+ (define_insn_reservation "znver1_idiv_mem_SI" 29
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-load,znver1-idiv*14")
+ 
+ (define_insn_reservation "znver1_idiv_mem_HI" 21
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-load,znver1-idiv*14")
+ 
+ (define_insn_reservation "znver1_idiv_mem_QI" 16
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-direct,znver1-load,znver1-idiv*13")
+ 
+ (define_insn_reservation "znver3_idiv_DI" 18
+ 			 (and (eq_attr "cpu" "znver3")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-idiv*7")
+ 
+ (define_insn_reservation "znver3_idiv_SI" 12
+ 			 (and (eq_attr "cpu" "znver3")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-idiv*6")
+ 
+ (define_insn_reservation "znver3_idiv_HI" 10
+ 			 (and (eq_attr "cpu" "znver3")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-idiv*4")
+ 
+ (define_insn_reservation "znver3_idiv_QI" 9
+ 			 (and (eq_attr "cpu" "znver3")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-direct,znver1-idiv*4")
+ 
+ (define_insn_reservation "znver3_idiv_mem_DI" 22
+                          (and (eq_attr "cpu" "znver3")
+                               (and (eq_attr "type" "idiv")
+                                    (and (eq_attr "mode" "DI")
+                                         (eq_attr "memory" "load"))))
+                          "znver1-double,znver1-load,znver1-idiv*7")
+ 
+ (define_insn_reservation "znver3_idiv_mem_SI" 16
+                          (and (eq_attr "cpu" "znver3")
+                               (and (eq_attr "type" "idiv")
+                                    (and (eq_attr "mode" "SI")
+                                         (eq_attr "memory" "load"))))
+                          "znver1-double,znver1-load,znver1-idiv*6")
+ 
+ (define_insn_reservation "znver3_idiv_mem_HI" 14
+                          (and (eq_attr "cpu" "znver3")
+                               (and (eq_attr "type" "idiv")
+                                    (and (eq_attr "mode" "HI")
+                                         (eq_attr "memory" "load"))))
+                          "znver1-double,znver1-load,znver1-idiv*4")
+ 
+ (define_insn_reservation "znver3_idiv_mem_QI" 13
+                          (and (eq_attr "cpu" "znver3")
+                               (and (eq_attr "type" "idiv")
+                                    (and (eq_attr "mode" "QI")
+                                         (eq_attr "memory" "load"))))
+                          "znver1-direct,znver1-load,znver1-idiv*4")
+ 
+ ;; STR ISHIFT which are micro coded.
+ ;; Fix me: Latency need to be rechecked.
+ (define_insn_reservation "znver1_str_ishift" 6
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "str,ishift")
+ 				   (eq_attr "memory" "both,store")))
+ 			 "znver1-vector,znver1-ivector")
+ 
+ (define_insn_reservation "znver2_str_ishift" 3
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "ishift")
+ 				   (eq_attr "memory" "both,store")))
+ 			 "znver1-vector,znver1-ivector")
+ (define_insn_reservation "znver2_str_istr" 19
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "str")
+ 				   (eq_attr "memory" "both,store")))
+ 			 "znver1-vector,znver1-ivector")
+ 
+ ;; MOV - integer moves
+ (define_insn_reservation "znver1_load_imov_double" 2
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "imovx")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-ieu|znver1-ieu")
+ 
+ (define_insn_reservation "znver2_load_imov_double" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "imovx")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-ieu|znver1-ieu")
+ 
+ (define_insn_reservation "znver1_load_imov_direct" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "imov,imovx")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-ieu")
+ 
+ (define_insn_reservation "znver1_load_imov_double_store" 2
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "imovx")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver1-double,znver1-ieu|znver1-ieu,znver1-store")
+ 
+ (define_insn_reservation "znver2_load_imov_double_store" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "imovx")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver1-double,znver1-ieu|znver1-ieu,znver2-store")
+ 
+ (define_insn_reservation "znver1_load_imov_direct_store" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "imov,imovx")
+ 				   (eq_attr "memory" "store")))
+ 				   "znver1-direct,znver1-ieu,znver1-store")
+ 
+ (define_insn_reservation "znver2_load_imov_direct_store" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "imov,imovx")
+ 				   (eq_attr "memory" "store")))
+ 				   "znver1-direct,znver1-ieu,znver2-store")
+ 
+ (define_insn_reservation "znver1_load_imov_double_load" 5
+ 			 (and (eq_attr "cpu" "znver1,znver2")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "imovx")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-ieu|znver1-ieu")
+ 
+ (define_insn_reservation "znver2_load_imov_double_load" 4
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "imovx")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-ieu|znver1-ieu")
+ 
+ (define_insn_reservation "znver1_load_imov_direct_load" 4
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "imov,imovx")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load")
+ 
+ ;; INTEGER/GENERAL instructions
+ ;; register/imm operands only: ALU, ICMP, NEG, NOT, ROTATE, ISHIFT, TEST
+ (define_insn_reservation "znver1_insn" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov")
+ 				   (eq_attr "memory" "none,unknown")))
+ 			 "znver1-direct,znver1-ieu")
+ 
+ (define_insn_reservation "znver1_insn_load" 5
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-ieu")
+ 
+ (define_insn_reservation "znver1_insn_store" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver1-direct,znver1-ieu,znver1-store")
+ 
+ (define_insn_reservation "znver2_insn_store" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver1-direct,znver1-ieu,znver2-store")
+ 
+ (define_insn_reservation "znver1_insn_both" 5
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver1-direct,znver1-load,znver1-ieu,znver1-store")
+ 
+ (define_insn_reservation "znver2_insn_both" 5
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver1-direct,znver1-load,znver1-ieu,znver2-store")
+ 
+ ;; Fix me: Other vector type insns keeping latency 6 as of now.
+ (define_insn_reservation "znver1_ieu_vector" 6
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (eq_attr "type" "other,str,multi"))
+ 			 "znver1-vector,znver1-ivector")
+ 
+ (define_insn_reservation "znver2_ieu_vector" 5
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (eq_attr "type" "other,str,multi"))
+ 			 "znver1-vector,znver2-ivector")
+ 
+ ;; ALU1 register operands.
+ (define_insn_reservation "znver1_alu1_vector" 3
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (and (eq_attr "type" "alu1")
+ 					(eq_attr "memory" "none,unknown"))))
+ 			 "znver1-vector,znver1-ivector")
+ 
+ (define_insn_reservation "znver2_alu1_vector" 3
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (and (eq_attr "type" "alu1")
+ 					(eq_attr "memory" "none,unknown"))))
+ 			 "znver1-vector,znver2-ivector")
+ 
+ (define_insn_reservation "znver1_alu1_double" 2
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "alu1")
+ 					(eq_attr "memory" "none,unknown"))))
+ 			 "znver1-double,znver1-ieu")
+ 
+ (define_insn_reservation "znver1_alu1_direct" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "direct")
+ 				   (and (eq_attr "type" "alu1")
+ 					(eq_attr "memory" "none,unknown"))))
+ 			 "znver1-direct,znver1-ieu")
+ 
+ ;; Branches : Fix me need to model conditional branches.
+ (define_insn_reservation "znver1_branch" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "none")))
+ 			  "znver1-direct")
+ 
+ ;; Indirect branches check latencies.
+ (define_insn_reservation "znver1_indirect_branch_mem" 6
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "load")))
+ 			 "znver1-vector,znver1-ivector")
+ 
+ (define_insn_reservation "znver2_indirect_branch_mem" 6
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "load")))
+ 			 "znver1-vector,znver2-ivector")
+ 
+ ;; LEA executes in ALU units with 1 cycle latency.
+ (define_insn_reservation "znver1_lea" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (eq_attr "type" "lea"))
+ 			 "znver1-direct,znver1-ieu")
+ 
+ ;; Other integer instrucions
+ (define_insn_reservation "znver1_idirect" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "unit" "integer,unknown")
+ 				   (eq_attr "memory" "none,unknown")))
+ 			 "znver1-direct,znver1-ieu")
+ 
+ ;;  Floating point
+ (define_insn_reservation "znver1_fp_cmov" 6
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (eq_attr "type" "fcmov"))
+ 			 "znver1-vector,znver1-fvector")
+ 
+ (define_insn_reservation "znver1_fp_mov_direct_load" 8 
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "direct")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-direct,znver1-load,znver1-fp3|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_fp_mov_direct_store" 5
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "znver1_decode" "direct")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver1-direct,znver1-fp2|znver1-fp3,znver1-store")
+ (define_insn_reservation "znver2_fp_mov_direct_store" 5
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "direct")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver1-direct,znver1-fp2|znver1-fp3,znver2-store")
+ 
+ (define_insn_reservation "znver1_fp_mov_double" 4
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp3")
+ 
+ (define_insn_reservation "znver1_fp_mov_double_load" 12
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp3")
+ 
+ (define_insn_reservation "znver1_fp_mov_direct" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (eq_attr "type" "fmov"))
+ 			 "znver1-direct,znver1-fp3")
+ 
+ ;; TODO: AGU?
+ (define_insn_reservation "znver1_fp_spc_direct" 5
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "fpspc")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver1-direct,znver1-fp3,znver1-fp2")
+ 
+ (define_insn_reservation "znver1_fp_insn_vector" 6
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (eq_attr "type" "fpspc,mmxcvt,sselog1,ssemul,ssemov")))
+ 			 "znver1-vector,znver1-fvector")
+ (define_insn_reservation "znver2_fp_insn_vector" 6
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (eq_attr "type" "fpspc,mmxcvt,sselog1,ssemul,ssemov")))
+ 			 "znver1-vector,znver2-fvector")
+ 
+ ;; FABS
+ (define_insn_reservation "znver1_fp_fsgn" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (eq_attr "type" "fsgn"))
+ 			 "znver1-direct,znver1-fp3")
+ 
+ (define_insn_reservation "znver1_fp_fcmp" 2
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "znver1_decode" "double")
+ 					(eq_attr "type" "fcmp"))))
+ 			 "znver1-double,znver1-fp0,znver1-fp2")
+ 
+ (define_insn_reservation "znver1_fp_fcmp_load" 9
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "memory" "none")
+ 				   (and (eq_attr "znver1_decode" "double")
+ 					(eq_attr "type" "fcmp"))))
+ 			 "znver1-double,znver1-load, znver1-fp0,znver1-fp2")
+ 
+ ;;FADD FSUB FMUL
+ (define_insn_reservation "znver1_fp_op_mul" 5
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "fop,fmul")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_fp_op_mul_load" 12 
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "fop,fmul")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_fp_op_imul_load" 16
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "fop,fmul")
+ 				   (and (eq_attr "fp_int_src" "true")
+ 					(eq_attr "memory" "load"))))
+ 			"znver1-double,znver1-load,znver1-fp3,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_fp_op_div" 15
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fdiv*6")
+ 
+ (define_insn_reservation "znver1_fp_op_div_load" 22
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fdiv*6")
+ 
+ (define_insn_reservation "znver1_fp_op_idiv_load" 27
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (and (eq_attr "fp_int_src" "true")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fdiv*6")
+ 
+ (define_insn_reservation "znver2_fp_op_idiv_load" 26
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (and (eq_attr "fp_int_src" "true")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fdiv*6")
+ 
+ 
+ ;; MMX, SSE, SSEn.n, AVX, AVX2 instructions
+ (define_insn_reservation "znver1_fp_insn" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (eq_attr "type" "mmx"))
+ 			 "znver1-direct,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_mmx_add" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxadd")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_mmx_add_load" 8
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxadd")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_mmx_cmp" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxcmp")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_mmx_cmp_load" 8
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxcmp")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_mmx_cvt_pck_shuf" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_mmx_cvt_pck_shuf_load" 8
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_mmx_shift_move" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxshft,mmxmov")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp2")
+ 
+ (define_insn_reservation "znver1_mmx_shift_move_load" 8
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxshft,mmxmov")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp2")
+ 
+ (define_insn_reservation "znver1_mmx_move_store" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "mmxshft,mmxmov")
+ 				   (eq_attr "memory" "store,both")))
+ 			  "znver1-direct,znver1-fp2,znver1-store")
+ (define_insn_reservation "znver2_mmx_move_store" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "mmxshft,mmxmov")
+ 				   (eq_attr "memory" "store,both")))
+ 			  "znver1-direct,znver1-fp2,znver2-store")
+ 
+ (define_insn_reservation "znver1_mmx_mul" 3
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxmul")
+ 				   (eq_attr "memory" "none")))
+ 			  "znver1-direct,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_mmx_load" 10
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "mmxmul")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0")
+ 
+ ;; TODO
+ (define_insn_reservation "znver1_avx256_log" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+  				   (and (eq_attr "type" "sselog")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_avx256_log_load" 8
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "sselog")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_sse_log" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "sselog")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_sse_log_load" 8
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "sselog")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_avx256_log1" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "sselog1")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_avx256_log1_load" 8
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "sselog1")
+ 					(eq_attr "memory" "!none"))))
+ 			 "znver1-double,znver1-load,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_sse_log1" 1
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "sselog1")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_sse_log1_load" 8
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "sselog1")
+ 				   (eq_attr "memory" "!none")))
+ 			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_sse_comi" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
+ 				   (and (eq_attr "prefix" "!vex")
+ 					(and (eq_attr "prefix_extra" "0")
+ 					     (and (eq_attr "type" "ssecomi")
+ 						  (eq_attr "memory" "none"))))))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_comi_load" 8
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "prefix_extra" "0")
+ 				   (and (eq_attr "type" "ssecomi")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_comi_double" 2
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "prefix" "vex")
+ 				   (and (eq_attr "prefix_extra" "0")
+ 					(and (eq_attr "type" "ssecomi")
+ 					     (eq_attr "memory" "none")))))
+ 			 "znver1-double,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_comi_double_load" 10
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "prefix" "vex")
+ 				   (and (eq_attr "prefix_extra" "0")
+ 					(and (eq_attr "type" "ssecomi")
+ 					     (eq_attr "memory" "load")))))
+ 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_test" 1
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "prefix_extra" "1")
+ 				   (and (eq_attr "type" "ssecomi")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-direct,znver1-fp1|znver1-fp2")
+ 
+ (define_insn_reservation "znver1_sse_test_load" 8
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "prefix_extra" "1")
+ 				   (and (eq_attr "type" "ssecomi")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
+ 
+ ;; SSE moves
+ ;; Fix me:  Need to revist this again some of the moves may be restricted
+ ;; to some fpu pipes.
+ (define_insn_reservation "znver1_sse_mov" 2
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (eq_attr "isa" "avx")
+ 					(and (eq_attr "type" "ssemov")
+ 					     (eq_attr "memory" "none")))))
+ 			 "znver1-direct,znver1-ieu0")
+ 
+ (define_insn_reservation "znver2_sse_mov" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (eq_attr "isa" "avx")
+ 					(and (eq_attr "type" "ssemov")
+ 					     (eq_attr "memory" "none")))))
+ 			 "znver1-direct,znver1-ieu0")
+ 
+ (define_insn_reservation "znver1_avx_mov" 2
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "TI")
+ 				   (and (eq_attr "isa" "avx")
+ 					(and (eq_attr "type" "ssemov")
+ 					     (and (match_operand:SI 1 "register_operand")
+ 						  (eq_attr "memory" "none"))))))
+ 			 "znver1-direct,znver1-ieu2")
+ 
+ (define_insn_reservation "znver2_avx_mov" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "mode" "TI")
+ 				   (and (eq_attr "isa" "avx")
+ 					(and (eq_attr "type" "ssemov")
+ 					     (and (match_operand:SI 1 "register_operand")
+ 						  (eq_attr "memory" "none"))))))
+ 			 "znver1-direct,znver1-ieu2")
+ 
+ (define_insn_reservation "znver1_sseavx_mov" 1
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					      (eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_sseavx_mov_store" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
+ 				   (and (eq_attr "type" "ssemov")
+ 					(eq_attr "memory" "store"))))
+ 			"znver1-direct,znver1-fpu,znver1-store")
+ (define_insn_reservation "znver2_sseavx_mov_store" 1
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (eq_attr "memory" "store")))
+ 			"znver1-direct,znver1-fpu,znver2-store")
+ 
+ (define_insn_reservation "znver1_sseavx_mov_load" 8
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			       (and (eq_attr "type" "ssemov")
+ 				    (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_avx256_mov" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "ssemov")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fpu")
+ 
+ (define_insn_reservation "znver1_avx256_mov_store" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "ssemov")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver1-double,znver1-fpu,znver1-store")
+ 
+ (define_insn_reservation "znver1_avx256_mov_load" 8
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "ssemov")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fpu")
+ 
+ ;; SSE add
+ (define_insn_reservation "znver1_sseavx_add" 3
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "type" "sseadd")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp2|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_sseavx_add_load" 10
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "type" "sseadd")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp2|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_avx256_add" 3
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "sseadd")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp2|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_avx256_add_load" 10
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
+ 				   (and (eq_attr "type" "sseadd")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp2|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_sseavx_fma" 5
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				   (eq_attr "cpu" "znver2"))
+ 			      (and (eq_attr "type" "ssemuladd")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sseavx_fma_load" 12
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				   (eq_attr "cpu" "znver2"))
+ 			      (and (eq_attr "type" "ssemuladd")
+ 				   (eq_attr "memory" "load")))
+ 			"znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_avx256_fma" 5
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF")
+ 				   (and (eq_attr "type" "ssemuladd")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_avx256_fma_load" 12
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF")
+ 				   (and (eq_attr "type" "ssemuladd")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver3_sseavx_fma" 4
+ 			 (and (and (eq_attr "cpu" "znver3")
+ 			      (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				   (and (eq_attr "type" "ssemuladd")
+ 					(eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver3_sseavx_fma_load" 11
+ 			 (and (and (eq_attr "cpu" "znver3")
+ 			       (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				     (and (eq_attr "type" "ssemuladd")
+ 					  (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver3_avx256_fma" 4
+ 			 (and (eq_attr "cpu" "znver3")
+ 			      (and (eq_attr "mode" "V8SF,V4DF")
+ 			           (and (eq_attr "type" "ssemuladd")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver3_avx256_fma_load" 11
+ 			  (and (eq_attr "cpu" "znver3")
+ 			       (and (eq_attr "mode" "V8SF,V4DF")
+ 			            (and (eq_attr "type" "ssemuladd")
+ 					 (eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sseavx_iadd" 1
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "DI,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "type" "sseiadd")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_sseavx_iadd_load" 8
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "DI,TI"))
+ 				   (ior (eq_attr "cpu" "znver2")
+ 					(eq_attr "cpu" "znver3")))
+ 			      (and (eq_attr "type" "sseiadd")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_avx256_iadd" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "OI")
+ 				   (and (eq_attr "type" "sseiadd")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0|znver1-fp1|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_avx256_iadd_load" 8
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "OI")
+ 				   (and (eq_attr "type" "sseiadd")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
+ 
+ ;; SSE conversions.
+ (define_insn_reservation "znver1_ssecvtsf_si_load" 12
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (eq_attr "type" "sseicvt")
+ 					(and (match_operand:SF 1 "memory_operand")
+ 					     (eq_attr "memory" "load")))))
+ 			 "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
+ 
+ (define_insn_reservation "znver1_ssecvtdf_si" 5
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (match_operand:DF 1 "register_operand")
+ 					(and (eq_attr "type" "sseicvt")
+ 					     (eq_attr "memory" "none")))))
+ 			 "znver1-double,znver1-fp3,znver1-ieu0")
+ (define_insn_reservation "znver2_ssecvtdf_si" 4
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (match_operand:DF 1 "register_operand")
+ 					(and (eq_attr "type" "sseicvt")
+ 					     (eq_attr "memory" "none")))))
+ 			 "znver1-double,znver1-fp3,znver1-ieu0")
+ 
+ (define_insn_reservation "znver1_ssecvtdf_si_load" 12
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (eq_attr "type" "sseicvt")
+ 					(and (match_operand:DF 1 "memory_operand")
+ 					     (eq_attr "memory" "load")))))
+ 			 "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
+ 
+ (define_insn_reservation "znver2_ssecvtdf_si_load" 11
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "mode" "SI")
+ 				   (and (eq_attr "type" "sseicvt")
+ 					(and (match_operand:DF 1 "memory_operand")
+ 					     (eq_attr "memory" "load")))))
+ 			 "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
+ 
+ 
+ ;; All other used ssecvt fp3 pipes
+ ;; Check: Need to revisit this again.
+ ;; Some SSE converts may use different pipe combinations.
+ (define_insn_reservation "znver1_ssecvt" 4
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp3")
+ 
+ (define_insn_reservation "znver2_ssecvt" 3
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp3")
+ 
+ (define_insn_reservation "znver1_ssecvt_load" 11
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp3")
+ 
+ ;; SSE div
+ (define_insn_reservation "znver1_ssediv_ss_ps" 10
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF")))
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fdiv*4")
+ 
+ (define_insn_reservation "znver1_ssediv_ss_ps_load" 17
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF")))
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fdiv*4")
+ 
+ (define_insn_reservation "znver1_ssediv_sd_pd" 13
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V2DF,DF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "V4DF,V2DF,DF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "V4DF,V2DF,DF")))
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fdiv*5")
+ 
+ (define_insn_reservation "znver1_ssediv_sd_pd_load" 20
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 					       (eq_attr "mode" "V2DF,DF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "V4DF,V2DF,DF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "V4DF,V2DF,DF")))
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fdiv*5")
+ 
+ (define_insn_reservation "znver1_ssediv_avx256_ps" 12
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF")
+ 				   (and (eq_attr "memory" "none")
+ 					(eq_attr "type" "ssediv"))))
+ 			 "znver1-double,znver1-fdiv*8")
+ 
+ (define_insn_reservation "znver1_ssediv_avx256_ps_load" 19
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF")
+ 				   (and (eq_attr "type" "ssediv")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fdiv*8")
+ 
+ (define_insn_reservation "znver1_ssediv_avx256_pd" 15
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V4DF")
+ 				   (and (eq_attr "type" "ssediv")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fdiv*10")
+ 
+ (define_insn_reservation "znver1_ssediv_avx256_pd_load" 22 
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V4DF")
+ 				   (and (eq_attr "type" "ssediv")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fdiv*10")
+ ;; SSE MUL
+ (define_insn_reservation "znver1_ssemul_ss_ps" 3
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF,V4DF,V2DF,DF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF,V4DF,V2DF,DF")))
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_ssemul_ss_ps_load" 10 
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "V8SF,V4SF,SF")))
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_ssemul_avx256_ps" 3
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF")
+ 				   (and (eq_attr "type" "ssemul")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0*2|znver1-fp1*2")
+ 
+ (define_insn_reservation "znver1_ssemul_avx256_ps_load" 10
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF")
+ 				   (and (eq_attr "type" "ssemul")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0*2|znver1-fp1*2")
+ 
+ (define_insn_reservation "znver1_ssemul_sd_pd" 4
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V2DF,DF")
+ 				   (and (eq_attr "type" "ssemul")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_ssemul_sd_pd_load" 11
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V2DF,DF")
+ 				   (and (eq_attr "type" "ssemul")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver2_ssemul_sd_pd" 3
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver2_ssemul_sd_pd_load" 10
+ 			 (and (eq_attr "cpu" "znver2,znver3")
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ 
+ (define_insn_reservation "znver1_ssemul_avx256_pd" 5
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V4DF")
+ 				   (and (eq_attr "type" "ssemul")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0*2|znver1-fp1*2")
+ 
+ (define_insn_reservation "znver1_ssemul_avx256_pd_load" 12
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V4DF")
+ 				   (and (eq_attr "type" "ssemul")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0*2|znver1-fp1*2")
+ 
+ ;;SSE imul
+ (define_insn_reservation "znver1_sseimul" 3
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "TI"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "TI,OI"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "TI,OI")))
+ 			      (and (eq_attr "type" "sseimul")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_sseimul_avx256" 4
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "mode" "OI")
+ 				   (and (eq_attr "type" "sseimul")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0*2")
+ 
+ (define_insn_reservation "znver1_sseimul_load" 10
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "TI"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 			                (eq_attr "mode" "TI,OI"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 			                (eq_attr "mode" "TI,OI")))
+ 			      (and (eq_attr "type" "sseimul")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_sseimul_avx256_load" 11
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "mode" "OI")
+ 				   (and (eq_attr "type" "sseimul")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0*2")
+ 
+ (define_insn_reservation "znver1_sseimul_di" 3 
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "mode" "DI")
+ 				   (and (eq_attr "memory" "none")
+ 					(eq_attr "type" "sseimul"))))
+ 			 "znver1-direct,znver1-fp0")
+ 
+ (define_insn_reservation "znver1_sseimul_load_di" 10 
+ 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
+ 			      (and (eq_attr "mode" "DI")
+ 				   (and (eq_attr "type" "sseimul")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-direct,znver1-load,znver1-fp0")
+ 
+ ;; SSE compares
+ (define_insn_reservation "znver1_sse_cmp" 1
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF")))
+ 			       (and (eq_attr "type" "ssecmp")
+ 				    (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_cmp_load" 8
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 				         (eq_attr "mode" "SF,DF,V4SF,V2DF"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 				        (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF")))
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_cmp_avx256" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF")
+ 				   (and (eq_attr "type" "ssecmp")
+ 					(eq_attr "memory" "none"))))
+ 			"znver1-double,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_cmp_avx256_load" 8
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "V8SF,V4DF")
+ 				   (and (eq_attr "type" "ssecmp")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
+ 
+ (define_insn_reservation "znver1_sse_icmp" 1
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 					       (eq_attr "mode" "QI,HI,SI,DI,TI"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI")))
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver1-direct,znver1-fp0|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_sse_icmp_load" 8
+ 			 (and (ior (and (eq_attr "cpu" "znver1")
+ 			                (eq_attr "mode" "QI,HI,SI,DI,TI"))
+ 				   (and (eq_attr "cpu" "znver2")
+ 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI"))
+ 				   (and (eq_attr "cpu" "znver3")
+ 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI")))
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_sse_icmp_avx256" 1
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "OI")
+ 				   (and (eq_attr "type" "ssecmp")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver1-double,znver1-fp0|znver1-fp3")
+ 
+ (define_insn_reservation "znver1_sse_icmp_avx256_load" 8
+ 			 (and (eq_attr "cpu" "znver1")
+ 			      (and (eq_attr "mode" "OI")
+ 				   (and (eq_attr "type" "ssecmp")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp3")
diff -Nrcpad gcc-12.2.0/gcc/config/i386/znver1.md gcc-13.1.0/gcc/config/i386/znver1.md
*** gcc-12.2.0/gcc/config/i386/znver1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/i386/znver1.md	Thu Jan  1 00:00:00 1970
***************
*** 1,1350 ****
- ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
- ;;
- ;; This file is part of GCC.
- ;;
- ;; GCC is free software; you can redistribute it and/or modify
- ;; it under the terms of the GNU General Public License as published by
- ;; the Free Software Foundation; either version 3, or (at your option)
- ;; any later version.
- ;;
- ;; GCC is distributed in the hope that it will be useful,
- ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
- ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- ;; GNU General Public License for more details.
- ;;
- ;; You should have received a copy of the GNU General Public License
- ;; along with GCC; see the file COPYING3.  If not see
- ;; <http://www.gnu.org/licenses/>.
- ;;
- 
- 
- (define_attr "znver1_decode" "direct,vector,double"
-   (const_string "direct"))
- 
- ;; AMD znver1, znver2 and znver3 Scheduling
- ;; Modeling automatons for zen decoders, integer execution pipes,
- ;; AGU pipes and floating point execution units.
- (define_automaton "znver1, znver1_ieu, znver1_fp, znver1_agu")
- 
- ;; Decoders unit has 4 decoders and all of them can decode fast path
- ;; and vector type instructions.
- (define_cpu_unit "znver1-decode0" "znver1")
- (define_cpu_unit "znver1-decode1" "znver1")
- (define_cpu_unit "znver1-decode2" "znver1")
- (define_cpu_unit "znver1-decode3" "znver1")
- 
- ;; Currently blocking all decoders for vector path instructions as
- ;; they are dispatched separetely as microcode sequence.
- ;; Fix me: Need to revisit this.
- (define_reservation "znver1-vector" "znver1-decode0+znver1-decode1+znver1-decode2+znver1-decode3")
- 
- ;; Direct instructions can be issued to any of the four decoders.
- (define_reservation "znver1-direct" "znver1-decode0|znver1-decode1|znver1-decode2|znver1-decode3")
- 
- ;; Fix me: Need to revisit this later to simulate fast path double behavior.
- (define_reservation "znver1-double" "znver1-direct")
- 
- 
- ;; Integer unit 4 ALU pipes.
- (define_cpu_unit "znver1-ieu0" "znver1_ieu")
- (define_cpu_unit "znver1-ieu1" "znver1_ieu")
- (define_cpu_unit "znver1-ieu2" "znver1_ieu")
- (define_cpu_unit "znver1-ieu3" "znver1_ieu")
- (define_reservation "znver1-ieu" "znver1-ieu0|znver1-ieu1|znver1-ieu2|znver1-ieu3")
- 
- ;; 2 AGU pipes in znver1 and 3 AGU pipes in znver2 and znver3
- ;; According to CPU diagram last AGU unit is used only for stores.
- (define_cpu_unit "znver1-agu0" "znver1_agu")
- (define_cpu_unit "znver1-agu1" "znver1_agu")
- (define_cpu_unit "znver2-agu2" "znver1_agu")
- (define_reservation "znver1-agu-reserve" "znver1-agu0|znver1-agu1")
- (define_reservation "znver2-store-agu-reserve" "znver1-agu0|znver1-agu1|znver2-agu2")
- 
- ;; Load is 4 cycles. We do not model reservation of load unit.
- ;;(define_reservation "znver1-load" "znver1-agu-reserve, nothing, nothing, nothing")
- (define_reservation "znver1-load" "znver1-agu-reserve")
- ;; Store operations differs between znver1, znver2 and znver3 because extra AGU
- ;; was added.
- (define_reservation "znver1-store" "znver1-agu-reserve")
- (define_reservation "znver2-store" "znver2-store-agu-reserve")
- 
- ;; vectorpath (microcoded) instructions are single issue instructions.
- ;; So, they occupy all the integer units.
- (define_reservation "znver1-ivector" "znver1-ieu0+znver1-ieu1
- 				      +znver1-ieu2+znver1-ieu3
- 				      +znver1-agu0+znver1-agu1")
- 
- (define_reservation "znver2-ivector" "znver1-ieu0+znver1-ieu1
- 				      +znver1-ieu2+znver1-ieu3
- 				      +znver1-agu0+znver1-agu1+znver2-agu2")
- 
- ;; Floating point unit 4 FP pipes.
- (define_cpu_unit "znver1-fp0" "znver1_fp")
- (define_cpu_unit "znver1-fp1" "znver1_fp")
- (define_cpu_unit "znver1-fp2" "znver1_fp")
- (define_cpu_unit "znver1-fp3" "znver1_fp")
- 
- (define_reservation "znver1-fpu" "znver1-fp0|znver1-fp1|znver1-fp2|znver1-fp3")
- 
- (define_reservation "znver1-fvector" "znver1-fp0+znver1-fp1
- 				      +znver1-fp2+znver1-fp3
- 				      +znver1-agu0+znver1-agu1")
- (define_reservation "znver2-fvector" "znver1-fp0+znver1-fp1
- 				      +znver1-fp2+znver1-fp3
- 				      +znver1-agu0+znver1-agu1+znver2-agu2")
- 
- ;; Call instruction
- (define_insn_reservation "znver1_call" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (eq_attr "type" "call,callv"))
- 			 "znver1-double,znver1-store,znver1-ieu0|znver1-ieu3")
- 
- (define_insn_reservation "znver2_call" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (eq_attr "type" "call,callv"))
- 			 "znver1-double,znver2-store,znver1-ieu0|znver1-ieu3")
- 
- ;; General instructions
- (define_insn_reservation "znver1_push" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "push")
- 				   (eq_attr "memory" "store")))
- 			 "znver1-direct,znver1-store")
- (define_insn_reservation "znver2_push" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "push")
- 				   (eq_attr "memory" "store")))
- 			 "znver1-direct,znver2-store")
- 
- (define_insn_reservation "znver1_push_load" 4
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "push")
- 				   (eq_attr "memory" "both")))
- 			 "znver1-direct,znver1-load,znver1-store")
- (define_insn_reservation "znver2_push_load" 4
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "push")
- 				   (eq_attr "memory" "both")))
- 			 "znver1-direct,znver1-load,znver2-store")
- 
- (define_insn_reservation "znver1_pop" 4
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "pop")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load")
- 
- (define_insn_reservation "znver1_pop_mem" 4
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "pop")
- 				   (eq_attr "memory" "both")))
- 			 "znver1-direct,znver1-load,znver1-store")
- (define_insn_reservation "znver2_pop_mem" 4
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "pop")
- 				   (eq_attr "memory" "both")))
- 			 "znver1-direct,znver1-load,znver2-store")
- 
- ;; Leave
- (define_insn_reservation "znver1_leave" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (eq_attr "type" "leave"))
- 			 "znver1-double,znver1-ieu, znver1-store")
- (define_insn_reservation "znver2_leave" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (eq_attr "type" "leave"))
- 			 "znver1-double,znver1-ieu, znver2-store")
- 
- ;; Integer Instructions or General instructions
- ;; Multiplications
- ;; Reg operands
- (define_insn_reservation "znver1_imul" 3
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "imul")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-ieu1")
- 
- (define_insn_reservation "znver1_imul_mem" 7
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "imul")
- 				   (eq_attr "memory" "!none")))
- 			 "znver1-direct,znver1-load, znver1-ieu1")
- 
- ;; Divisions
- ;; Reg operands
- (define_insn_reservation "znver1_idiv_DI" 41
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "DI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu2*41")
- 
- (define_insn_reservation "znver1_idiv_SI" 25
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "SI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu2*25")
- 
- (define_insn_reservation "znver1_idiv_HI" 17
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "HI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu2*17")
- 
- (define_insn_reservation "znver1_idiv_QI" 12
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "QI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-direct,znver1-ieu2*12")
- 
- ;; Mem operands
- (define_insn_reservation "znver1_idiv_mem_DI" 45
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "DI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-load,znver1-ieu2*41")
- 
- (define_insn_reservation "znver1_idiv_mem_SI" 29
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "SI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-load,znver1-ieu2*25")
- 
- (define_insn_reservation "znver1_idiv_mem_HI" 21
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "HI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-load,znver1-ieu2*17")
- 
- (define_insn_reservation "znver1_idiv_mem_QI" 16
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "QI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-direct,znver1-load,znver1-ieu2*12")
- 
- (define_insn_reservation "znver3_idiv_DI" 18
- 			 (and (eq_attr "cpu" "znver3")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "DI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu2*18")
- 
- (define_insn_reservation "znver3_idiv_SI" 12
- 			 (and (eq_attr "cpu" "znver3")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "SI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu2*12")
- 
- (define_insn_reservation "znver3_idiv_HI" 10
- 			 (and (eq_attr "cpu" "znver3")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "HI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu2*10")
- 
- (define_insn_reservation "znver3_idiv_QI" 9
- 			 (and (eq_attr "cpu" "znver3")
- 			      (and (eq_attr "type" "idiv")
- 				   (and (eq_attr "mode" "QI")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-direct,znver1-ieu2*9")
- 
- (define_insn_reservation "znver3_idiv_mem_DI" 22
-                          (and (eq_attr "cpu" "znver3")
-                               (and (eq_attr "type" "idiv")
-                                    (and (eq_attr "mode" "DI")
-                                         (eq_attr "memory" "load"))))
-                          "znver1-double,znver1-load,znver1-ieu2*22")
- 
- (define_insn_reservation "znver3_idiv_mem_SI" 16
-                          (and (eq_attr "cpu" "znver3")
-                               (and (eq_attr "type" "idiv")
-                                    (and (eq_attr "mode" "SI")
-                                         (eq_attr "memory" "load"))))
-                          "znver1-double,znver1-load,znver1-ieu2*16")
- 
- (define_insn_reservation "znver3_idiv_mem_HI" 14
-                          (and (eq_attr "cpu" "znver3")
-                               (and (eq_attr "type" "idiv")
-                                    (and (eq_attr "mode" "HI")
-                                         (eq_attr "memory" "load"))))
-                          "znver1-double,znver1-load,znver1-ieu2*10")
- 
- (define_insn_reservation "znver3_idiv_mem_QI" 13
-                          (and (eq_attr "cpu" "znver3")
-                               (and (eq_attr "type" "idiv")
-                                    (and (eq_attr "mode" "QI")
-                                         (eq_attr "memory" "load"))))
-                          "znver1-direct,znver1-load,znver1-ieu2*9")
- 
- ;; STR ISHIFT which are micro coded.
- ;; Fix me: Latency need to be rechecked.
- (define_insn_reservation "znver1_str_ishift" 6
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "str,ishift")
- 				   (eq_attr "memory" "both,store")))
- 			 "znver1-vector,znver1-ivector")
- 
- (define_insn_reservation "znver2_str_ishift" 3
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "ishift")
- 				   (eq_attr "memory" "both,store")))
- 			 "znver1-vector,znver1-ivector")
- (define_insn_reservation "znver2_str_istr" 19
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "str")
- 				   (eq_attr "memory" "both,store")))
- 			 "znver1-vector,znver1-ivector")
- 
- ;; MOV - integer moves
- (define_insn_reservation "znver1_load_imov_double" 2
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "imovx")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu|znver1-ieu")
- 
- (define_insn_reservation "znver2_load_imov_double" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "imovx")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-ieu|znver1-ieu")
- 
- (define_insn_reservation "znver1_load_imov_direct" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "imov,imovx")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-ieu")
- 
- (define_insn_reservation "znver1_load_imov_double_store" 2
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "imovx")
- 					(eq_attr "memory" "store"))))
- 			 "znver1-double,znver1-ieu|znver1-ieu,znver1-store")
- 
- (define_insn_reservation "znver2_load_imov_double_store" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "imovx")
- 					(eq_attr "memory" "store"))))
- 			 "znver1-double,znver1-ieu|znver1-ieu,znver2-store")
- 
- (define_insn_reservation "znver1_load_imov_direct_store" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "imov,imovx")
- 				   (eq_attr "memory" "store")))
- 				   "znver1-direct,znver1-ieu,znver1-store")
- 
- (define_insn_reservation "znver2_load_imov_direct_store" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "imov,imovx")
- 				   (eq_attr "memory" "store")))
- 				   "znver1-direct,znver1-ieu,znver2-store")
- 
- (define_insn_reservation "znver1_load_imov_double_load" 5
- 			 (and (eq_attr "cpu" "znver1,znver2")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "imovx")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-ieu|znver1-ieu")
- 
- (define_insn_reservation "znver2_load_imov_double_load" 4
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "imovx")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-ieu|znver1-ieu")
- 
- (define_insn_reservation "znver1_load_imov_direct_load" 4
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "imov,imovx")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load")
- 
- ;; INTEGER/GENERAL instructions
- ;; register/imm operands only: ALU, ICMP, NEG, NOT, ROTATE, ISHIFT, TEST
- (define_insn_reservation "znver1_insn" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov")
- 				   (eq_attr "memory" "none,unknown")))
- 			 "znver1-direct,znver1-ieu")
- 
- (define_insn_reservation "znver1_insn_load" 5
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift,ishift1,test,setcc,incdec,icmov")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-ieu")
- 
- (define_insn_reservation "znver1_insn_store" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
- 				   (eq_attr "memory" "store")))
- 			 "znver1-direct,znver1-ieu,znver1-store")
- 
- (define_insn_reservation "znver2_insn_store" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
- 				   (eq_attr "memory" "store")))
- 			 "znver1-direct,znver1-ieu,znver2-store")
- 
- (define_insn_reservation "znver1_insn_both" 5
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
- 				   (eq_attr "memory" "both")))
- 			 "znver1-direct,znver1-load,znver1-ieu,znver1-store")
- 
- (define_insn_reservation "znver2_insn_both" 5
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "alu,icmp,negnot,rotate,rotate1,ishift1,test,setcc,incdec")
- 				   (eq_attr "memory" "both")))
- 			 "znver1-direct,znver1-load,znver1-ieu,znver2-store")
- 
- ;; Fix me: Other vector type insns keeping latency 6 as of now.
- (define_insn_reservation "znver1_ieu_vector" 6
- 			 (and (eq_attr "cpu" "znver1")
- 			      (eq_attr "type" "other,str,multi"))
- 			 "znver1-vector,znver1-ivector")
- 
- (define_insn_reservation "znver2_ieu_vector" 5
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (eq_attr "type" "other,str,multi"))
- 			 "znver1-vector,znver2-ivector")
- 
- ;; ALU1 register operands.
- (define_insn_reservation "znver1_alu1_vector" 3
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "znver1_decode" "vector")
- 				   (and (eq_attr "type" "alu1")
- 					(eq_attr "memory" "none,unknown"))))
- 			 "znver1-vector,znver1-ivector")
- 
- (define_insn_reservation "znver2_alu1_vector" 3
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "vector")
- 				   (and (eq_attr "type" "alu1")
- 					(eq_attr "memory" "none,unknown"))))
- 			 "znver1-vector,znver2-ivector")
- 
- (define_insn_reservation "znver1_alu1_double" 2
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "alu1")
- 					(eq_attr "memory" "none,unknown"))))
- 			 "znver1-double,znver1-ieu")
- 
- (define_insn_reservation "znver1_alu1_direct" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "direct")
- 				   (and (eq_attr "type" "alu1")
- 					(eq_attr "memory" "none,unknown"))))
- 			 "znver1-direct,znver1-ieu")
- 
- ;; Branches : Fix me need to model conditional branches.
- (define_insn_reservation "znver1_branch" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "ibr")
- 					(eq_attr "memory" "none")))
- 			  "znver1-direct")
- 
- ;; Indirect branches check latencies.
- (define_insn_reservation "znver1_indirect_branch_mem" 6
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "ibr")
- 					(eq_attr "memory" "load")))
- 			 "znver1-vector,znver1-ivector")
- 
- (define_insn_reservation "znver2_indirect_branch_mem" 6
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "ibr")
- 					(eq_attr "memory" "load")))
- 			 "znver1-vector,znver2-ivector")
- 
- ;; LEA executes in ALU units with 1 cycle latency.
- (define_insn_reservation "znver1_lea" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (eq_attr "type" "lea"))
- 			 "znver1-direct,znver1-ieu")
- 
- ;; Other integer instrucions
- (define_insn_reservation "znver1_idirect" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "unit" "integer,unknown")
- 				   (eq_attr "memory" "none,unknown")))
- 			 "znver1-direct,znver1-ieu")
- 
- ;;  Floating point
- (define_insn_reservation "znver1_fp_cmov" 6
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (eq_attr "type" "fcmov"))
- 			 "znver1-vector,znver1-fvector")
- 
- (define_insn_reservation "znver1_fp_mov_direct_load" 8 
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "direct")
- 				   (and (eq_attr "type" "fmov")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-direct,znver1-load,znver1-fp3|znver1-fp1")
- 
- (define_insn_reservation "znver1_fp_mov_direct_store" 5
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "znver1_decode" "direct")
- 				   (and (eq_attr "type" "fmov")
- 					(eq_attr "memory" "store"))))
- 			 "znver1-direct,znver1-fp2|znver1-fp3,znver1-store")
- (define_insn_reservation "znver2_fp_mov_direct_store" 5
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "direct")
- 				   (and (eq_attr "type" "fmov")
- 					(eq_attr "memory" "store"))))
- 			 "znver1-direct,znver1-fp2|znver1-fp3,znver2-store")
- 
- (define_insn_reservation "znver1_fp_mov_double" 4
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "fmov")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp3")
- 
- (define_insn_reservation "znver1_fp_mov_double_load" 12
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "double")
- 				   (and (eq_attr "type" "fmov")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp3")
- 
- (define_insn_reservation "znver1_fp_mov_direct" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (eq_attr "type" "fmov"))
- 			 "znver1-direct,znver1-fp3")
- 
- ;; TODO: AGU?
- (define_insn_reservation "znver1_fp_spc_direct" 5
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "fpspc")
- 				   (eq_attr "memory" "store")))
- 			 "znver1-direct,znver1-fp3,znver1-fp2")
- 
- (define_insn_reservation "znver1_fp_insn_vector" 6
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "znver1_decode" "vector")
- 				   (eq_attr "type" "fpspc,mmxcvt,sselog1,ssemul,ssemov")))
- 			 "znver1-vector,znver1-fvector")
- (define_insn_reservation "znver2_fp_insn_vector" 6
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "znver1_decode" "vector")
- 				   (eq_attr "type" "fpspc,mmxcvt,sselog1,ssemul,ssemov")))
- 			 "znver1-vector,znver2-fvector")
- 
- ;; FABS
- (define_insn_reservation "znver1_fp_fsgn" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (eq_attr "type" "fsgn"))
- 			 "znver1-direct,znver1-fp3")
- 
- (define_insn_reservation "znver1_fp_fcmp" 2
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "memory" "none")
- 				   (and (eq_attr "znver1_decode" "double")
- 					(eq_attr "type" "fcmp"))))
- 			 "znver1-double,znver1-fp0,znver1-fp2")
- 
- (define_insn_reservation "znver1_fp_fcmp_load" 9
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "memory" "none")
- 				   (and (eq_attr "znver1_decode" "double")
- 					(eq_attr "type" "fcmp"))))
- 			 "znver1-double,znver1-load, znver1-fp0,znver1-fp2")
- 
- ;;FADD FSUB FMUL
- (define_insn_reservation "znver1_fp_op_mul" 5
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "fop,fmul")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0*5")
- 
- (define_insn_reservation "znver1_fp_op_mul_load" 12 
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "fop,fmul")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0*5")
- 
- (define_insn_reservation "znver1_fp_op_imul_load" 16
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "fop,fmul")
- 				   (and (eq_attr "fp_int_src" "true")
- 					(eq_attr "memory" "load"))))
- 			"znver1-double,znver1-load,znver1-fp3,znver1-fp0")
- 
- (define_insn_reservation "znver1_fp_op_div" 15
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "fdiv")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp3*15")
- 
- (define_insn_reservation "znver1_fp_op_div_load" 22
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "fdiv")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp3*15")
- 
- (define_insn_reservation "znver1_fp_op_idiv_load" 27
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "fdiv")
- 				   (and (eq_attr "fp_int_src" "true")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp3*19")
- 
- (define_insn_reservation "znver2_fp_op_idiv_load" 26
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "fdiv")
- 				   (and (eq_attr "fp_int_src" "true")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp3*19")
- 
- 
- ;; MMX, SSE, SSEn.n, AVX, AVX2 instructions
- (define_insn_reservation "znver1_fp_insn" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (eq_attr "type" "mmx"))
- 			 "znver1-direct,znver1-fpu")
- 
- (define_insn_reservation "znver1_mmx_add" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxadd")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3")
- 
- (define_insn_reservation "znver1_mmx_add_load" 8
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxadd")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
- 
- (define_insn_reservation "znver1_mmx_cmp" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxcmp")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp3")
- 
- (define_insn_reservation "znver1_mmx_cmp_load" 8
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxcmp")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp3")
- 
- (define_insn_reservation "znver1_mmx_cvt_pck_shuf" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_mmx_cvt_pck_shuf_load" 8
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_mmx_shift_move" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxshft,mmxmov")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp2")
- 
- (define_insn_reservation "znver1_mmx_shift_move_load" 8
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxshft,mmxmov")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp2")
- 
- (define_insn_reservation "znver1_mmx_move_store" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "mmxshft,mmxmov")
- 				   (eq_attr "memory" "store,both")))
- 			  "znver1-direct,znver1-fp2,znver1-store")
- (define_insn_reservation "znver2_mmx_move_store" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "mmxshft,mmxmov")
- 				   (eq_attr "memory" "store,both")))
- 			  "znver1-direct,znver1-fp2,znver2-store")
- 
- (define_insn_reservation "znver1_mmx_mul" 3
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxmul")
- 				   (eq_attr "memory" "none")))
- 			  "znver1-direct,znver1-fp0*3")
- 
- (define_insn_reservation "znver1_mmx_load" 10
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "mmxmul")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0*3")
- 
- ;; TODO
- (define_insn_reservation "znver1_avx256_log" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
-  				   (and (eq_attr "type" "sselog")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fpu")
- 
- (define_insn_reservation "znver1_avx256_log_load" 8
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "sselog")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fpu")
- 
- (define_insn_reservation "znver1_sse_log" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "sselog")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fpu")
- 
- (define_insn_reservation "znver1_sse_log_load" 8
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "sselog")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fpu")
- 
- (define_insn_reservation "znver1_avx256_log1" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "sselog1")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_avx256_log1_load" 8
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "sselog1")
- 					(eq_attr "memory" "!none"))))
- 			 "znver1-double,znver1-load,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_sse_log1" 1
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "sselog1")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_sse_log1_load" 8
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "sselog1")
- 				   (eq_attr "memory" "!none")))
- 			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_sse_comi" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "SF,DF,V4SF,V2DF")
- 				   (and (eq_attr "prefix" "!vex")
- 					(and (eq_attr "prefix_extra" "0")
- 					     (and (eq_attr "type" "ssecomi")
- 						  (eq_attr "memory" "none"))))))
- 			 "znver1-direct,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_comi_load" 8
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "prefix_extra" "0")
- 				   (and (eq_attr "type" "ssecomi")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_comi_double" 2
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "prefix" "vex")
- 				   (and (eq_attr "prefix_extra" "0")
- 					(and (eq_attr "type" "ssecomi")
- 					     (eq_attr "memory" "none")))))
- 			 "znver1-double,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_comi_double_load" 10
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "prefix" "vex")
- 				   (and (eq_attr "prefix_extra" "0")
- 					(and (eq_attr "type" "ssecomi")
- 					     (eq_attr "memory" "load")))))
- 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_test" 1
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "prefix_extra" "1")
- 				   (and (eq_attr "type" "ssecomi")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-direct,znver1-fp1|znver1-fp2")
- 
- (define_insn_reservation "znver1_sse_test_load" 8
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "prefix_extra" "1")
- 				   (and (eq_attr "type" "ssecomi")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-direct,znver1-load,znver1-fp1|znver1-fp2")
- 
- ;; SSE moves
- ;; Fix me:  Need to revist this again some of the moves may be restricted
- ;; to some fpu pipes.
- (define_insn_reservation "znver1_sse_mov" 2
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (eq_attr "isa" "avx")
- 					(and (eq_attr "type" "ssemov")
- 					     (eq_attr "memory" "none")))))
- 			 "znver1-direct,znver1-ieu0")
- 
- (define_insn_reservation "znver2_sse_mov" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (eq_attr "isa" "avx")
- 					(and (eq_attr "type" "ssemov")
- 					     (eq_attr "memory" "none")))))
- 			 "znver1-direct,znver1-ieu0")
- 
- (define_insn_reservation "znver1_avx_mov" 2
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "TI")
- 				   (and (eq_attr "isa" "avx")
- 					(and (eq_attr "type" "ssemov")
- 					     (and (match_operand:SI 1 "register_operand")
- 						  (eq_attr "memory" "none"))))))
- 			 "znver1-direct,znver1-ieu2")
- 
- (define_insn_reservation "znver2_avx_mov" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "mode" "TI")
- 				   (and (eq_attr "isa" "avx")
- 					(and (eq_attr "type" "ssemov")
- 					     (and (match_operand:SI 1 "register_operand")
- 						  (eq_attr "memory" "none"))))))
- 			 "znver1-direct,znver1-ieu2")
- 
- (define_insn_reservation "znver1_sseavx_mov" 1
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					      (eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "type" "ssemov")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fpu")
- 
- (define_insn_reservation "znver1_sseavx_mov_store" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "SF,DF,V4SF,V2DF,TI")
- 				   (and (eq_attr "type" "ssemov")
- 					(eq_attr "memory" "store"))))
- 			"znver1-direct,znver1-fpu,znver1-store")
- (define_insn_reservation "znver2_sseavx_mov_store" 1
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "ssemov")
- 				   (eq_attr "memory" "store")))
- 			"znver1-direct,znver1-fpu,znver2-store")
- 
- (define_insn_reservation "znver1_sseavx_mov_load" 8
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			       (and (eq_attr "type" "ssemov")
- 				    (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fpu")
- 
- (define_insn_reservation "znver1_avx256_mov" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "ssemov")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fpu")
- 
- (define_insn_reservation "znver1_avx256_mov_store" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "ssemov")
- 					(eq_attr "memory" "store"))))
- 			 "znver1-double,znver1-fpu,znver1-store")
- 
- (define_insn_reservation "znver1_avx256_mov_load" 8
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "ssemov")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fpu")
- 
- ;; SSE add
- (define_insn_reservation "znver1_sseavx_add" 3
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "type" "sseadd")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp2|znver1-fp3")
- 
- (define_insn_reservation "znver1_sseavx_add_load" 10
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "type" "sseadd")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp2|znver1-fp3")
- 
- (define_insn_reservation "znver1_avx256_add" 3
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "sseadd")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp2|znver1-fp3")
- 
- (define_insn_reservation "znver1_avx256_add_load" 10
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF,OI")
- 				   (and (eq_attr "type" "sseadd")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp2|znver1-fp3")
- 
- (define_insn_reservation "znver1_sseavx_fma" 5
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				   (eq_attr "cpu" "znver2"))
- 			      (and (eq_attr "type" "ssemuladd")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sseavx_fma_load" 12
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				   (eq_attr "cpu" "znver2"))
- 			      (and (eq_attr "type" "ssemuladd")
- 				   (eq_attr "memory" "load")))
- 			"znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_avx256_fma" 5
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF")
- 				   (and (eq_attr "type" "ssemuladd")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_avx256_fma_load" 12
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF")
- 				   (and (eq_attr "type" "ssemuladd")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver3_sseavx_fma" 4
- 			 (and (and (eq_attr "cpu" "znver3")
- 			      (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				   (and (eq_attr "type" "ssemuladd")
- 					(eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver3_sseavx_fma_load" 11
- 			 (and (and (eq_attr "cpu" "znver3")
- 			       (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				     (and (eq_attr "type" "ssemuladd")
- 					  (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver3_avx256_fma" 4
- 			 (and (eq_attr "cpu" "znver3")
- 			      (and (eq_attr "mode" "V8SF,V4DF")
- 			           (and (eq_attr "type" "ssemuladd")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver3_avx256_fma_load" 11
- 			  (and (eq_attr "cpu" "znver3")
- 			       (and (eq_attr "mode" "V8SF,V4DF")
- 			            (and (eq_attr "type" "ssemuladd")
- 					 (eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sseavx_iadd" 1
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "DI,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "type" "sseiadd")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp1|znver1-fp3")
- 
- (define_insn_reservation "znver1_sseavx_iadd_load" 8
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "DI,TI"))
- 				   (ior (eq_attr "cpu" "znver2")
- 					(eq_attr "cpu" "znver3")))
- 			      (and (eq_attr "type" "sseiadd")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
- 
- (define_insn_reservation "znver1_avx256_iadd" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "OI")
- 				   (and (eq_attr "type" "sseiadd")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp0|znver1-fp1|znver1-fp3")
- 
- (define_insn_reservation "znver1_avx256_iadd_load" 8
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "OI")
- 				   (and (eq_attr "type" "sseiadd")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1|znver1-fp3")
- 
- ;; SSE conversions.
- (define_insn_reservation "znver1_ssecvtsf_si_load" 12
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (eq_attr "type" "sseicvt")
- 					(and (match_operand:SF 1 "memory_operand")
- 					     (eq_attr "memory" "load")))))
- 			 "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
- 
- (define_insn_reservation "znver1_ssecvtdf_si" 5
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (match_operand:DF 1 "register_operand")
- 					(and (eq_attr "type" "sseicvt")
- 					     (eq_attr "memory" "none")))))
- 			 "znver1-double,znver1-fp3,znver1-ieu0")
- (define_insn_reservation "znver2_ssecvtdf_si" 4
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (match_operand:DF 1 "register_operand")
- 					(and (eq_attr "type" "sseicvt")
- 					     (eq_attr "memory" "none")))))
- 			 "znver1-double,znver1-fp3,znver1-ieu0")
- 
- (define_insn_reservation "znver1_ssecvtdf_si_load" 12
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (eq_attr "type" "sseicvt")
- 					(and (match_operand:DF 1 "memory_operand")
- 					     (eq_attr "memory" "load")))))
- 			 "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
- 
- (define_insn_reservation "znver2_ssecvtdf_si_load" 11
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "mode" "SI")
- 				   (and (eq_attr "type" "sseicvt")
- 					(and (match_operand:DF 1 "memory_operand")
- 					     (eq_attr "memory" "load")))))
- 			 "znver1-double,znver1-load,znver1-fp3,znver1-ieu0")
- 
- 
- ;; All other used ssecvt fp3 pipes
- ;; Check: Need to revisit this again.
- ;; Some SSE converts may use different pipe combinations.
- (define_insn_reservation "znver1_ssecvt" 4
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "type" "ssecvt")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp3")
- 
- (define_insn_reservation "znver2_ssecvt" 3
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "ssecvt")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp3")
- 
- (define_insn_reservation "znver1_ssecvt_load" 11
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "type" "ssecvt")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp3")
- 
- ;; SSE div
- (define_insn_reservation "znver1_ssediv_ss_ps" 10
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "V8SF,V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "V8SF,V4SF,SF")))
- 			      (and (eq_attr "type" "ssediv")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp3*10")
- 
- (define_insn_reservation "znver1_ssediv_ss_ps_load" 17
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "V8SF,V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "V8SF,V4SF,SF")))
- 			      (and (eq_attr "type" "ssediv")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp3*10")
- 
- (define_insn_reservation "znver1_ssediv_sd_pd" 13
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V2DF,DF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "V4DF,V2DF,DF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "V4DF,V2DF,DF")))
- 			      (and (eq_attr "type" "ssediv")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp3*13")
- 
- (define_insn_reservation "znver1_ssediv_sd_pd_load" 20
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 					       (eq_attr "mode" "V2DF,DF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "V4DF,V2DF,DF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "V4DF,V2DF,DF")))
- 			      (and (eq_attr "type" "ssediv")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp3*13")
- 
- (define_insn_reservation "znver1_ssediv_avx256_ps" 12
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF")
- 				   (and (eq_attr "memory" "none")
- 					(eq_attr "type" "ssediv"))))
- 			 "znver1-double,znver1-fp3*12")
- 
- (define_insn_reservation "znver1_ssediv_avx256_ps_load" 19
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF")
- 				   (and (eq_attr "type" "ssediv")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp3*12")
- 
- (define_insn_reservation "znver1_ssediv_avx256_pd" 15
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V4DF")
- 				   (and (eq_attr "type" "ssediv")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp3*15")
- 
- (define_insn_reservation "znver1_ssediv_avx256_pd_load" 22 
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V4DF")
- 				   (and (eq_attr "type" "ssediv")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp3*15")
- ;; SSE MUL
- (define_insn_reservation "znver1_ssemul_ss_ps" 3
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "V8SF,V4SF,SF,V4DF,V2DF,DF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "V8SF,V4SF,SF,V4DF,V2DF,DF")))
- 			      (and (eq_attr "type" "ssemul")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,(znver1-fp0|znver1-fp1)*3")
- 
- (define_insn_reservation "znver1_ssemul_ss_ps_load" 10 
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "V8SF,V4SF,SF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "V8SF,V4SF,SF")))
- 			      (and (eq_attr "type" "ssemul")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,(znver1-fp0|znver1-fp1)*3")
- 
- (define_insn_reservation "znver1_ssemul_avx256_ps" 3
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF")
- 				   (and (eq_attr "type" "ssemul")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,(znver1-fp0|znver1-fp1)*3")
- 
- (define_insn_reservation "znver1_ssemul_avx256_ps_load" 10
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF")
- 				   (and (eq_attr "type" "ssemul")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,(znver1-fp0|znver1-fp1)*3")
- 
- (define_insn_reservation "znver1_ssemul_sd_pd" 4
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V2DF,DF")
- 				   (and (eq_attr "type" "ssemul")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-direct,(znver1-fp0|znver1-fp1)*4")
- 
- (define_insn_reservation "znver1_ssemul_sd_pd_load" 11
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V2DF,DF")
- 				   (and (eq_attr "type" "ssemul")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-direct,znver1-load,(znver1-fp0|znver1-fp1)*4")
- 
- (define_insn_reservation "znver2_ssemul_sd_pd" 3
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "ssemul")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,(znver1-fp0|znver1-fp1)*3")
- 
- (define_insn_reservation "znver2_ssemul_sd_pd_load" 10
- 			 (and (eq_attr "cpu" "znver2,znver3")
- 			      (and (eq_attr "type" "ssemul")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,(znver1-fp0|znver1-fp1)*3")
- 
- 
- (define_insn_reservation "znver1_ssemul_avx256_pd" 5
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V4DF")
- 				   (and (eq_attr "type" "ssemul")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,(znver1-fp0|znver1-fp1)*4")
- 
- (define_insn_reservation "znver1_ssemul_avx256_pd_load" 12
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V4DF")
- 				   (and (eq_attr "type" "ssemul")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,(znver1-fp0|znver1-fp1)*4")
- 
- ;;SSE imul
- (define_insn_reservation "znver1_sseimul" 3
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "TI"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "TI,OI"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "TI,OI")))
- 			      (and (eq_attr "type" "sseimul")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0*3")
- 
- (define_insn_reservation "znver1_sseimul_avx256" 4
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "mode" "OI")
- 				   (and (eq_attr "type" "sseimul")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp0*4")
- 
- (define_insn_reservation "znver1_sseimul_load" 10
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "TI"))
- 				   (and (eq_attr "cpu" "znver2")
- 			                (eq_attr "mode" "TI,OI"))
- 				   (and (eq_attr "cpu" "znver3")
- 			                (eq_attr "mode" "TI,OI")))
- 			      (and (eq_attr "type" "sseimul")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0*3")
- 
- (define_insn_reservation "znver1_sseimul_avx256_load" 11
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "mode" "OI")
- 				   (and (eq_attr "type" "sseimul")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp0*4")
- 
- (define_insn_reservation "znver1_sseimul_di" 3 
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "mode" "DI")
- 				   (and (eq_attr "memory" "none")
- 					(eq_attr "type" "sseimul"))))
- 			 "znver1-direct,znver1-fp0*3")
- 
- (define_insn_reservation "znver1_sseimul_load_di" 10 
- 			 (and (eq_attr "cpu" "znver1,znver2,znver3")
- 			      (and (eq_attr "mode" "DI")
- 				   (and (eq_attr "type" "sseimul")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-direct,znver1-load,znver1-fp0*3")
- 
- ;; SSE compares
- (define_insn_reservation "znver1_sse_cmp" 1
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF")))
- 			       (and (eq_attr "type" "ssecmp")
- 				    (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_cmp_load" 8
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 				         (eq_attr "mode" "SF,DF,V4SF,V2DF"))
- 				   (and (eq_attr "cpu" "znver2")
- 				        (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "SF,DF,V4SF,V2DF,V8SF,V4DF")))
- 			      (and (eq_attr "type" "ssecmp")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_cmp_avx256" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF")
- 				   (and (eq_attr "type" "ssecmp")
- 					(eq_attr "memory" "none"))))
- 			"znver1-double,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_cmp_avx256_load" 8
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "V8SF,V4DF")
- 				   (and (eq_attr "type" "ssecmp")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp1")
- 
- (define_insn_reservation "znver1_sse_icmp" 1
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 					       (eq_attr "mode" "QI,HI,SI,DI,TI"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI")))
- 			      (and (eq_attr "type" "ssecmp")
- 				   (eq_attr "memory" "none")))
- 			 "znver1-direct,znver1-fp0|znver1-fp3")
- 
- (define_insn_reservation "znver1_sse_icmp_load" 8
- 			 (and (ior (and (eq_attr "cpu" "znver1")
- 			                (eq_attr "mode" "QI,HI,SI,DI,TI"))
- 				   (and (eq_attr "cpu" "znver2")
- 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI"))
- 				   (and (eq_attr "cpu" "znver3")
- 					      (eq_attr "mode" "QI,HI,SI,DI,TI,OI")))
- 			      (and (eq_attr "type" "ssecmp")
- 				   (eq_attr "memory" "load")))
- 			 "znver1-direct,znver1-load,znver1-fp0|znver1-fp3")
- 
- (define_insn_reservation "znver1_sse_icmp_avx256" 1
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "OI")
- 				   (and (eq_attr "type" "ssecmp")
- 					(eq_attr "memory" "none"))))
- 			 "znver1-double,znver1-fp0|znver1-fp3")
- 
- (define_insn_reservation "znver1_sse_icmp_avx256_load" 8
- 			 (and (eq_attr "cpu" "znver1")
- 			      (and (eq_attr "mode" "OI")
- 				   (and (eq_attr "type" "ssecmp")
- 					(eq_attr "memory" "load"))))
- 			 "znver1-double,znver1-load,znver1-fp0|znver1-fp3")
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/i386/znver4.md gcc-13.1.0/gcc/config/i386/znver4.md
*** gcc-12.2.0/gcc/config/i386/znver4.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/i386/znver4.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,1068 ----
+ ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
+ ;;
+ ;; This file is part of GCC.
+ ;;
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ ;;
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ ;;
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ ;;
+ 
+ 
+ (define_attr "znver4_decode" "direct,vector,double"
+   (const_string "direct"))
+ 
+ ;; AMD znver4 Scheduling
+ ;; Modeling automatons for zen decoders, integer execution pipes,
+ ;; AGU pipes, branch, floating point execution and fp store units.
+ (define_automaton "znver4, znver4_ieu, znver4_idiv, znver4_fdiv, znver4_agu, znver4_fpu, znver4_fp_store")
+ 
+ ;; Decoders unit has 4 decoders and all of them can decode fast path
+ ;; and vector type instructions.
+ (define_cpu_unit "znver4-decode0" "znver4")
+ (define_cpu_unit "znver4-decode1" "znver4")
+ (define_cpu_unit "znver4-decode2" "znver4")
+ (define_cpu_unit "znver4-decode3" "znver4")
+ 
+ ;; Currently blocking all decoders for vector path instructions as
+ ;; they are dispatched separetely as microcode sequence.
+ (define_reservation "znver4-vector" "znver4-decode0+znver4-decode1+znver4-decode2+znver4-decode3")
+ 
+ ;; Direct instructions can be issued to any of the four decoders.
+ (define_reservation "znver4-direct" "znver4-decode0|znver4-decode1|znver4-decode2|znver4-decode3")
+ 
+ ;; Fix me: Need to revisit this later to simulate fast path double behavior.
+ (define_reservation "znver4-double" "znver4-direct")
+ 
+ 
+ ;; Integer unit 4 ALU pipes.
+ (define_cpu_unit "znver4-ieu0" "znver4_ieu")
+ (define_cpu_unit "znver4-ieu1" "znver4_ieu")
+ (define_cpu_unit "znver4-ieu2" "znver4_ieu")
+ (define_cpu_unit "znver4-ieu3" "znver4_ieu")
+ ;; Znver4 has an additional branch unit.
+ (define_cpu_unit "znver4-bru0" "znver4_ieu")
+ (define_reservation "znver4-ieu" "znver4-ieu0|znver4-ieu1|znver4-ieu2|znver4-ieu3")
+ 
+ ;; 3 AGU pipes in znver4
+ (define_cpu_unit "znver4-agu0" "znver4_agu")
+ (define_cpu_unit "znver4-agu1" "znver4_agu")
+ (define_cpu_unit "znver4-agu2" "znver4_agu")
+ (define_reservation "znver4-agu-reserve" "znver4-agu0|znver4-agu1|znver4-agu2")
+ 
+ ;; Load is 4 cycles. We do not model reservation of load unit.
+ (define_reservation "znver4-load" "znver4-agu-reserve")
+ (define_reservation "znver4-store" "znver4-agu-reserve")
+ 
+ ;; vectorpath (microcoded) instructions are single issue instructions.
+ ;; So, they occupy all the integer units.
+ (define_reservation "znver4-ivector" "znver4-ieu0+znver4-ieu1
+ 				      +znver4-ieu2+znver4-ieu3+znver4-bru0
+ 				      +znver4-agu0+znver4-agu1+znver4-agu2")
+ 
+ ;; Floating point unit 4 FP pipes.
+ (define_cpu_unit "znver4-fpu0" "znver4_fpu")
+ (define_cpu_unit "znver4-fpu1" "znver4_fpu")
+ (define_cpu_unit "znver4-fpu2" "znver4_fpu")
+ (define_cpu_unit "znver4-fpu3" "znver4_fpu")
+ 
+ (define_reservation "znver4-fpu" "znver4-fpu0|znver4-fpu1|znver4-fpu2|znver4-fpu3")
+ 
+ (define_reservation "znver4-fvector" "znver4-fpu0+znver4-fpu1
+ 				      +znver4-fpu2+znver4-fpu3
+ 				      +znver4-agu0+znver4-agu1+znver4-agu2")
+ 
+ ;; DIV units
+ (define_cpu_unit "znver4-idiv" "znver4_idiv")
+ (define_cpu_unit "znver4-fdiv" "znver4_fdiv")
+ 
+ ;; Separate fp store and fp-to-int store. Although there are 2 store pipes, the
+ ;; throughput is limited to only one per cycle.
+ (define_cpu_unit "znver4-fp-store" "znver4_fp_store")
+ 
+ 
+ ;; Integer Instructions
+ ;; Move instructions
+ ;; XCHG
+ (define_insn_reservation "znver4_imov_double" 1
+ 			(and (eq_attr "cpu" "znver4")
+ 				 (and (eq_attr "znver1_decode" "double")
+ 				  (and (eq_attr "type" "imov")
+ 				   (eq_attr "memory" "none"))))
+ 			 "znver4-double,znver4-ieu")
+ 
+ (define_insn_reservation "znver4_imov_double_load" 5
+ 			(and (eq_attr "cpu" "znver4")
+ 				 (and (eq_attr "znver1_decode" "double")
+ 				  (and (eq_attr "type" "imov")
+ 				   (eq_attr "memory" "load"))))
+ 			 "znver4-double,znver4-load,znver4-ieu")
+ 
+ ;; imov, imovx
+ (define_insn_reservation "znver4_imov" 1
+             (and (eq_attr "cpu" "znver4")
+ 				 (and (eq_attr "type" "imov,imovx")
+ 				  (eq_attr "memory" "none")))
+              "znver4-direct,znver4-ieu")
+ 
+ (define_insn_reservation "znver4_imov_load" 5
+ 			(and (eq_attr "cpu" "znver4")
+ 				 (and (eq_attr "type" "imov,imovx")
+ 				  (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-ieu")
+ 
+ ;; Push Instruction
+ (define_insn_reservation "znver4_push" 1
+ 			(and (eq_attr "cpu" "znver4")
+ 			     (and (eq_attr "type" "push")
+ 				  (eq_attr "memory" "store")))
+ 			 "znver4-direct,znver4-store")
+ 
+ (define_insn_reservation "znver4_push_mem" 5
+ 			(and (eq_attr "cpu" "znver4")
+ 				 (and (eq_attr "type" "push")
+ 				  (eq_attr "memory" "both")))
+ 			 "znver4-direct,znver4-load,znver4-store")
+ 
+ ;; Pop instruction
+ (define_insn_reservation "znver4_pop" 4
+ 			(and (eq_attr "cpu" "znver4")
+ 			     (and (eq_attr "type" "pop")
+ 				  (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load")
+ 
+ (define_insn_reservation "znver4_pop_mem" 5
+             (and (eq_attr "cpu" "znver4")
+                  (and (eq_attr "type" "pop")
+                   (eq_attr "memory" "both")))
+              "znver4-direct,znver4-load,znver4-store")
+ 
+ ;; Integer Instructions or General instructions
+ ;; Multiplications
+ (define_insn_reservation "znver4_imul" 3
+ 			(and (eq_attr "cpu" "znver4")
+ 			     (and (eq_attr "type" "imul")
+ 				  (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-ieu1")
+ 
+ (define_insn_reservation "znver4_imul_load" 7
+ 			(and (eq_attr "cpu" "znver4")
+ 			     (and (eq_attr "type" "imul")
+ 				  (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-ieu1")
+ 
+ ;; Divisions
+ (define_insn_reservation "znver4_idiv_DI" 18
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-double,znver4-idiv*10")
+ 
+ (define_insn_reservation "znver4_idiv_SI" 12
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-double,znver4-idiv*6")
+ 
+ (define_insn_reservation "znver4_idiv_HI" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-double,znver4-idiv*4")
+ 
+ (define_insn_reservation "znver4_idiv_QI" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-double,znver4-idiv*4")
+ 
+ (define_insn_reservation "znver4_idiv_DI_load" 22
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "DI")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-double,znver4-load,znver4-idiv*10")
+ 
+ (define_insn_reservation "znver4_idiv_SI_load" 16
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "SI")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-double,znver4-load,znver4-idiv*6")
+ 
+ (define_insn_reservation "znver4_idiv_HI_load" 14
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "HI")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-double,znver4-load,znver4-idiv*4")
+ 
+ (define_insn_reservation "znver4_idiv_QI_load" 13
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "idiv")
+ 				   (and (eq_attr "mode" "QI")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-double,znver4-load,znver4-idiv*4")
+ 
+ ;; INTEGER/GENERAL Instructions
+ (define_insn_reservation "znver4_insn" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp")
+ 				   (eq_attr "memory" "none,unknown")))
+ 			 "znver4-direct,znver4-ieu")
+ 
+ (define_insn_reservation "znver4_insn_load" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-ieu")
+ 
+ (define_insn_reservation "znver4_insn2" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "icmov,setcc")
+ 				   (eq_attr "memory" "none,unknown")))
+ 			 "znver4-direct,znver4-ieu0|znver4-ieu3")
+ 
+ (define_insn_reservation "znver4_insn2_load" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "icmov,setcc")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-ieu0|znver4-ieu3")
+ 
+ (define_insn_reservation "znver4_rotate" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "rotate")
+ 				   (eq_attr "memory" "none,unknown")))
+ 			 "znver4-direct,znver4-ieu1|znver4-ieu2")
+ 
+ (define_insn_reservation "znver4_rotate_load" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "rotate")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-ieu1|znver4-ieu2")
+ 
+ (define_insn_reservation "znver4_insn_store" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "alu,alu1,negnot,rotate1,ishift1,test,incdec,icmp")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver4-direct,znver4-ieu,znver4-store")
+ 
+ (define_insn_reservation "znver4_insn2_store" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "icmov,setcc")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver4-direct,znver4-ieu0|znver4-ieu3,znver4-store")
+ 
+ (define_insn_reservation "znver4_rotate_store" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "rotate")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver4-direct,znver4-ieu1|znver4-ieu2,znver4-store")
+ 
+ ;; alu1 instructions
+ (define_insn_reservation "znver4_alu1_vector" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (and (eq_attr "type" "alu1")
+ 					(eq_attr "memory" "none,unknown"))))
+ 			 "znver4-vector,znver4-ivector*3")
+ 
+ (define_insn_reservation "znver4_alu1_vector_load" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (and (eq_attr "type" "alu1")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-vector,znver4-load,znver4-ivector*3")
+ 
+ ;; Call Instruction
+ (define_insn_reservation "znver4_call" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "call,callv"))
+ 			 "znver4-double,znver4-ieu0|znver4-bru0,znver4-store")
+ 
+ ;; Branches
+ (define_insn_reservation "znver4_branch" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "none")))
+ 			  "znver4-direct,znver4-ieu0|znver4-bru0")
+ 
+ (define_insn_reservation "znver4_branch_load" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "load")))
+ 			  "znver4-direct,znver4-load,znver4-ieu0|znver4-bru0")
+ 
+ (define_insn_reservation "znver4_branch_vector" 2
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "none,unknown")))
+ 			  "znver4-vector,znver4-ivector*2")
+ 
+ (define_insn_reservation "znver4_branch_vector_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ibr")
+ 					(eq_attr "memory" "load")))
+ 			  "znver4-vector,znver4-load,znver4-ivector*2")
+ 
+ ;; LEA instruction with simple addressing
+ (define_insn_reservation "znver4_lea" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "lea"))
+ 			 "znver4-direct,znver4-ieu")
+ 
+ ;; Leave
+ (define_insn_reservation "znver4_leave" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "leave"))
+ 			 "znver4-double,znver4-ieu,znver4-store")
+ 
+ ;; STR and ISHIFT are microcoded.
+ (define_insn_reservation "znver4_str" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "str")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-vector,znver4-ivector*3")
+ 
+ (define_insn_reservation "znver4_str_load" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "str")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-vector,znver4-load,znver4-ivector*3")
+ 
+ (define_insn_reservation "znver4_ishift" 2
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ishift")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-vector,znver4-ivector*2")
+ 
+ (define_insn_reservation "znver4_ishift_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ishift")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-vector,znver4-load,znver4-ivector*2")
+ 
+ ;; Other vector type
+ (define_insn_reservation "znver4_ieu_vector" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "other,multi")
+ 				   (eq_attr "memory" "none,unknown")))
+ 			 "znver4-vector,znver4-ivector*5")
+ 
+ (define_insn_reservation "znver4_ieu_vector_load" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "other,multi")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-vector,znver4-load,znver4-ivector*5")
+ 
+ ;; Floating Point
+ ;; FP movs
+ (define_insn_reservation "znver4_fp_cmov" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "fcmov"))
+ 			 "znver4-vector,znver4-fvector*3")
+ 
+ (define_insn_reservation "znver4_fp_mov_direct" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "fmov"))
+ 			 "znver4-direct,znver4-fpu0|znver4-fpu1")
+ 
+ ;;FLD
+ (define_insn_reservation "znver4_fp_mov_direct_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "direct")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1")
+ 
+ ;;FST
+ (define_insn_reservation "znver4_fp_mov_direct_store" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "direct")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver4-direct,znver4-fpu0|znver4-fpu1,znver4-fp-store")
+ 
+ ;;FILD
+ (define_insn_reservation "znver4_fp_mov_double_load" 13
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1")
+ 
+ ;;FIST
+ (define_insn_reservation "znver4_fp_mov_double_store" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "double")
+ 				   (and (eq_attr "type" "fmov")
+ 					(eq_attr "memory" "store"))))
+ 			 "znver4-double,znver4-fpu1,znver4-fp-store")
+ 
+ ;; FSQRT
+ (define_insn_reservation "znver4_fsqrt" 22
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fpspc")
+ 				   (and (eq_attr "mode" "XF")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fdiv*10")
+ 
+ ;; FPSPC instructions
+ (define_insn_reservation "znver4_fp_spc" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fpspc")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-vector,znver4-fvector*6")
+ 
+ (define_insn_reservation "znver4_fp_insn_vector" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "znver1_decode" "vector")
+ 				   (eq_attr "type" "mmxcvt,sselog1,ssemov")))
+ 			 "znver4-vector,znver4-fvector*6")
+ 
+ ;; FADD, FSUB, FMUL
+ (define_insn_reservation "znver4_fp_op_mul" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fop,fmul")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu0")
+ 
+ (define_insn_reservation "znver4_fp_op_mul_load" 12
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fop,fmul")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-fpu0")
+ 
+ ;; FDIV
+ (define_insn_reservation "znver4_fp_div" 15
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fdiv*6")
+ 
+ (define_insn_reservation "znver4_fp_div_load" 20
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-fdiv*6")
+ 
+ (define_insn_reservation "znver4_fp_idiv_load" 24
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fdiv")
+ 				   (and (eq_attr "fp_int_src" "true")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-double,znver4-load,znver4-fdiv*6")
+ 
+ ;; FABS, FCHS
+ (define_insn_reservation "znver4_fp_fsgn" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "fsgn"))
+ 			 "znver4-direct,znver4-fpu0|znver4-fpu1")
+ 
+ ;; FCMP
+ (define_insn_reservation "znver4_fp_fcmp" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fcmp")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu1")
+ 
+ (define_insn_reservation "znver4_fp_fcmp_double" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "fcmp")
+ 				   (and (eq_attr "znver1_decode" "double")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-double,znver4-fpu1,znver4-fpu2")
+ 
+ ;; MMX, SSE, SSEn.n instructions
+ (define_insn_reservation "znver4_fp_mmx	" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (eq_attr "type" "mmx"))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_mmx_add_cmp" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxadd,mmxcmp")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_mmx_add_cmp_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxadd,mmxcmp")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_mmx_insn" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_mmx_insn_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxcvt,sseshuf,sseshuf1,mmxshft")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_mmx_mov" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxmov")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver4-direct,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_mmx_mov_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxmov")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver4-direct,znver4-load,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_mmx_mul" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxmul")
+ 				   (eq_attr "memory" "none")))
+ 			  "znver4-direct,znver4-fpu0|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_mmx_mul_load" 8
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mmxmul")
+ 				   (eq_attr "memory" "load")))
+ 			  "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu3")
+ 
+ ;; AVX instructions
+ (define_insn_reservation "znver4_sse_log" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog")
+ 				   (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_log_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog")
+ 				   (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_log1" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog1")
+ 				   (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "store"))))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_log1_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog1")
+ 				   (and (eq_attr "mode" "V4SF,V8SF,V2DF,V4DF,QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "both"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_comi" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecomi")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_comi_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecomi")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver4-double,znver4-load,znver4-fpu2|znver4-fpu3,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_test" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "prefix_extra" "1")
+ 				   (and (eq_attr "type" "ssecomi")
+ 					(eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_sse_test_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "prefix_extra" "1")
+ 				   (and (eq_attr "type" "ssecomi")
+ 					(eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_sse_imul" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseimul")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_sse_imul_load" 8
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseimul")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1")
+ 
+ (define_insn_reservation "znver4_sse_mov" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_sse_mov_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_sse_mov_store" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "store"))))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_mov_fp" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_mov_fp_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_mov_fp_store" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "store"))))
+ 			 "znver4-direct,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_add" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseadd")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu2|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_sse_add_load" 8
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseadd")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_sse_add1" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseadd1")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-vector,znver4-fvector*2")
+ 
+ (define_insn_reservation "znver4_sse_add1_load" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseadd1")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-vector,znver4-load,znver4-fvector*2")
+ 
+ (define_insn_reservation "znver4_sse_iadd" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseiadd")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_iadd_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseiadd")
+ 				   (and (eq_attr "mode" "QI,HI,SI,DI,TI,OI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_mul" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0|znver4-fpu1")
+ 
+ (define_insn_reservation "znver4_sse_mul_load" 8
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1")
+ 
+ (define_insn_reservation "znver4_sse_div_pd" 13
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V4DF,V2DF,V1DF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fdiv*5")
+ 
+ (define_insn_reservation "znver4_sse_div_ps" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fdiv*3")
+ 
+ (define_insn_reservation "znver4_sse_div_pd_load" 18
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V4DF,V2DF,V1DF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fdiv*5")
+ 
+ (define_insn_reservation "znver4_sse_div_ps_load" 15
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V8SF,V4SF,V2SF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fdiv*3")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "prefix" "vex")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0|znver4-fpu1")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "prefix" "vex")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0|znver4-fpu1")
+ 
+ (define_insn_reservation "znver4_sse_comi_avx" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecomi")
+ 				   (eq_attr "memory" "store")))
+ 			 "znver4-direct,znver4-fpu2+znver4-fpu3,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_comi_avx_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecomi")
+ 				   (eq_attr "memory" "both")))
+ 			 "znver4-direct,znver4-load,znver4-fpu2+znver4-fpu3,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_cvt" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu2|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_sse_cvt_load" 8
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu2|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_sse_icvt" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (and (eq_attr "mode" "SI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu2|znver4-fpu3")
+ 
+ (define_insn_reservation "znver4_sse_icvt_store" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (and (eq_attr "mode" "SI")
+ 				    (eq_attr "memory" "store"))))
+ 			 "znver4-double,znver4-fpu2|znver4-fpu3,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_shuf" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_sse_shuf_load" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "V8SF,V4DF,V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu")
+ 
+ (define_insn_reservation "znver4_sse_ishuf" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "OI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1|znver4-fpu2")
+ 
+ (define_insn_reservation "znver4_sse_ishuf_load" 8
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "OI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1|znver4-fpu2")
+ 
+ ;; AVX512 instructions
+ (define_insn_reservation "znver4_sse_log_evex" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,XI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_log_evex_load" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,XI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_log1_evex" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog1")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,XI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_log1_evex_load" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sselog1")
+ 				   (and (eq_attr "mode" "V16SF,V8DF,XI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_mul_evex" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_mul_evex_load" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemul")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_imul_evex" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseimul")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_imul_evex_load" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseimul")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_mov_evex" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1*2|znver4-fpu2*2")
+ 
+ (define_insn_reservation "znver4_sse_mov_evex_load" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2")
+ 
+ (define_insn_reservation "znver4_sse_mov_evex_store" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemov")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "store"))))
+ 			 "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fp-store")
+ 
+ (define_insn_reservation "znver4_sse_add_evex" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseadd")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_add_evex_load" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseadd")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_iadd_evex" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseiadd")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_iadd_evex_load" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseiadd")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_div_pd_evex" 13
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V8DF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fdiv*9")
+ 
+ (define_insn_reservation "znver4_sse_div_ps_evex" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V16SF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fdiv*6")
+ 
+ (define_insn_reservation "znver4_sse_div_pd_evex_load" 19
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V8DF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fdiv*9")
+ 
+ (define_insn_reservation "znver4_sse_div_ps_evex_load" 16
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssediv")
+ 				   (and (eq_attr "mode" "V16SF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fdiv*6")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx128" 3
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (and (eq_attr "prefix" "evex")
+ 					 (eq_attr "memory" "none")))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx128_load" 9
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "mode" "V4SF,V2DF,V2SF,V1DF,SF")
+ 				    (and (eq_attr "prefix" "evex")
+ 					 (eq_attr "memory" "load")))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx256" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "mode" "V8SF,V4DF")
+ 				    (and (eq_attr "prefix" "evex")
+ 					 (eq_attr "memory" "none")))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx256_load" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "mode" "V8SF,V4DF")
+ 				    (and (eq_attr "prefix" "evex")
+ 					 (eq_attr "memory" "load")))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx512" 5
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (and (eq_attr "prefix" "evex")
+ 					 (eq_attr "memory" "none")))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_cmp_avx512_load" 11
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecmp")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (and (eq_attr "prefix" "evex")
+ 					 (eq_attr "memory" "load")))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_cvt_evex" 6
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_cvt_evex_load" 12
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssecvt")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2,znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_shuf_evex" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_shuf_evex_load" 7
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "V16SF,V8DF")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2|znver4-fpu2*2|znver4-fpu3*2")
+ 
+ (define_insn_reservation "znver4_sse_ishuf_evex" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "none"))))
+ 			 "znver4-direct,znver4-fpu1*2|znver4-fpu2*2")
+ 
+ (define_insn_reservation "znver4_sse_ishuf_evex_load" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (and (eq_attr "mode" "XI")
+ 				    (eq_attr "memory" "load"))))
+ 			 "znver4-direct,znver4-load,znver4-fpu1*2|znver4-fpu2*2")
+ 
+ (define_insn_reservation "znver4_sse_muladd" 4
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "ssemuladd")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_muladd_load" 10
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "sseshuf")
+ 				   (eq_attr "memory" "load")))
+ 			 "znver4-direct,znver4-load,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ ;; AVX512 mask instructions
+ 
+ (define_insn_reservation "znver4_sse_mskmov" 2
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "mskmov")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu0*2|znver4-fpu1*2")
+ 
+ (define_insn_reservation "znver4_sse_msklog" 1
+ 			 (and (eq_attr "cpu" "znver4")
+ 			      (and (eq_attr "type" "msklog")
+ 				   (eq_attr "memory" "none")))
+ 			 "znver4-direct,znver4-fpu2*2|znver4-fpu3*2")
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/constraints.md gcc-13.1.0/gcc/config/ia64/constraints.md
*** gcc-12.2.0/gcc/config/ia64/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for IA-64
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for IA-64
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/div.md gcc-13.1.0/gcc/config/ia64/div.md
*** gcc-12.2.0/gcc/config/ia64/div.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/div.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/elf.h gcc-13.1.0/gcc/config/ia64/elf.h
*** gcc-12.2.0/gcc/config/ia64/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions for embedded ia64-elf target.
  
! Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions for embedded ia64-elf target.
  
! Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/freebsd.h gcc-13.1.0/gcc/config/ia64/freebsd.h
*** gcc-12.2.0/gcc/config/ia64/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Intel IA-64 running FreeBSD using the ELF format
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Intel IA-64 running FreeBSD using the ELF format
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/hpux.h gcc-13.1.0/gcc/config/ia64/hpux.h
*** gcc-12.2.0/gcc/config/ia64/hpux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/hpux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine GNU compiler.  IA-64 version.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Steve Ellcey <sje@cup.hp.com> and
                    Reva Cuthbertson <reva@cup.hp.com>
  
--- 1,5 ----
  /* Definitions of target machine GNU compiler.  IA-64 version.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Steve Ellcey <sje@cup.hp.com> and
                    Reva Cuthbertson <reva@cup.hp.com>
  
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64-c.cc gcc-13.1.0/gcc/config/ia64/ia64-c.cc
*** gcc-12.2.0/gcc/config/ia64/ia64-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of C specific functions for GNU compiler.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Steve Ellcey <sje@cup.hp.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of C specific functions for GNU compiler.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Steve Ellcey <sje@cup.hp.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64-modes.def gcc-13.1.0/gcc/config/ia64/ia64-modes.def
*** gcc-12.2.0/gcc/config/ia64/ia64-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine GNU compiler.  IA-64 version.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by James E. Wilson <wilson@cygnus.com> and
     		  David Mosberger <davidm@hpl.hp.com>.
  
--- 1,5 ----
  /* Definitions of target machine GNU compiler.  IA-64 version.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by James E. Wilson <wilson@cygnus.com> and
     		  David Mosberger <davidm@hpl.hp.com>.
  
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64-opts.h gcc-13.1.0/gcc/config/ia64/ia64-opts.h
*** gcc-12.2.0/gcc/config/ia64/ia64-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for IA-64.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for IA-64.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64-protos.h gcc-13.1.0/gcc/config/ia64/ia64-protos.h
*** gcc-12.2.0/gcc/config/ia64/ia64-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for IA-64.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for IA-64.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern int ia64_epilogue_uses (int);
*** 83,89 ****
  extern int ia64_eh_uses (int);
  extern void emit_safe_across_calls (void);
  extern void ia64_init_builtins (void);
! extern int ia64_dbx_register_number (int);
  
  extern rtx ia64_return_addr_rtx (HOST_WIDE_INT, rtx);
  extern void ia64_split_return_addr_rtx (rtx);
--- 83,89 ----
  extern int ia64_eh_uses (int);
  extern void emit_safe_across_calls (void);
  extern void ia64_init_builtins (void);
! extern int ia64_debugger_regno (int);
  
  extern rtx ia64_return_addr_rtx (HOST_WIDE_INT, rtx);
  extern void ia64_split_return_addr_rtx (rtx);
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64.cc gcc-13.1.0/gcc/config/ia64/ia64.cc
*** gcc-12.2.0/gcc/config/ia64/ia64.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by James E. Wilson <wilson@cygnus.com> and
  		  David Mosberger <davidm@hpl.hp.com>.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by James E. Wilson <wilson@cygnus.com> and
  		  David Mosberger <davidm@hpl.hp.com>.
  
*************** static fixed_size_mode ia64_get_reg_raw_
*** 332,339 ****
  static section * ia64_hpux_function_section (tree, enum node_frequency,
  					     bool, bool);
  
! static bool ia64_vectorize_vec_perm_const (machine_mode, rtx, rtx, rtx,
! 					   const vec_perm_indices &);
  
  static unsigned int ia64_hard_regno_nregs (unsigned int, machine_mode);
  static bool ia64_hard_regno_mode_ok (unsigned int, machine_mode);
--- 332,339 ----
  static section * ia64_hpux_function_section (tree, enum node_frequency,
  					     bool, bool);
  
! static bool ia64_vectorize_vec_perm_const (machine_mode, machine_mode, rtx,
! 					   rtx, rtx, const vec_perm_indices &);
  
  static unsigned int ia64_hard_regno_nregs (unsigned int, machine_mode);
  static bool ia64_hard_regno_mode_ok (unsigned int, machine_mode);
*************** ia64_output_function_prologue (FILE *fil
*** 4421,4427 ****
  
    if (mask && TARGET_GNU_AS)
      fprintf (file, "\t.prologue %d, %d\n", mask,
! 	     ia64_dbx_register_number (grsave));
    else
      fputs ("\t.prologue\n", file);
  
--- 4421,4427 ----
  
    if (mask && TARGET_GNU_AS)
      fprintf (file, "\t.prologue %d, %d\n", mask,
! 	     ia64_debugger_regno (grsave));
    else
      fputs ("\t.prologue\n", file);
  
*************** ia64_output_function_epilogue (FILE *)
*** 4473,4479 ****
  }
  
  int
! ia64_dbx_register_number (int regno)
  {
    /* In ia64_expand_prologue we quite literally renamed the frame pointer
       from its home at loc79 to something inside the register frame.  We
--- 4473,4479 ----
  }
  
  int
! ia64_debugger_regno (int regno)
  {
    /* In ia64_expand_prologue we quite literally renamed the frame pointer
       from its home at loc79 to something inside the register frame.  We
*************** ia64_setup_incoming_varargs (cumulative_
*** 4596,4603 ****
  {
    CUMULATIVE_ARGS next_cum = *get_cumulative_args (cum);
  
!   /* Skip the current argument.  */
!   ia64_function_arg_advance (pack_cumulative_args (&next_cum), arg);
  
    if (next_cum.words < MAX_ARGUMENT_SLOTS)
      {
--- 4596,4604 ----
  {
    CUMULATIVE_ARGS next_cum = *get_cumulative_args (cum);
  
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     /* Skip the current argument.  */
!     ia64_function_arg_advance (pack_cumulative_args (&next_cum), arg);
  
    if (next_cum.words < MAX_ARGUMENT_SLOTS)
      {
*************** process_cfa_adjust_cfa (FILE *out_file,
*** 10104,10110 ****
  
        if (unwind)
  	fprintf (out_file, "\t.vframe r%d\n",
! 		 ia64_dbx_register_number (REGNO (dest)));
      }
    else
      gcc_unreachable ();
--- 10105,10111 ----
  
        if (unwind)
  	fprintf (out_file, "\t.vframe r%d\n",
! 		 ia64_debugger_regno (REGNO (dest)));
      }
    else
      gcc_unreachable ();
*************** process_cfa_register (FILE *out_file, rt
*** 10125,10131 ****
        /* Saving return address pointer.  */
        if (unwind)
  	fprintf (out_file, "\t.save rp, r%d\n",
! 		 ia64_dbx_register_number (dest_regno));
        return;
      }
  
--- 10126,10132 ----
        /* Saving return address pointer.  */
        if (unwind)
  	fprintf (out_file, "\t.save rp, r%d\n",
! 		 ia64_debugger_regno (dest_regno));
        return;
      }
  
*************** process_cfa_register (FILE *out_file, rt
*** 10137,10157 ****
        gcc_assert (dest_regno == current_frame_info.r[reg_save_pr]);
        if (unwind)
  	fprintf (out_file, "\t.save pr, r%d\n",
! 		 ia64_dbx_register_number (dest_regno));
        break;
  
      case AR_UNAT_REGNUM:
        gcc_assert (dest_regno == current_frame_info.r[reg_save_ar_unat]);
        if (unwind)
  	fprintf (out_file, "\t.save ar.unat, r%d\n",
! 		 ia64_dbx_register_number (dest_regno));
        break;
  
      case AR_LC_REGNUM:
        gcc_assert (dest_regno == current_frame_info.r[reg_save_ar_lc]);
        if (unwind)
  	fprintf (out_file, "\t.save ar.lc, r%d\n",
! 		 ia64_dbx_register_number (dest_regno));
        break;
  
      default:
--- 10138,10158 ----
        gcc_assert (dest_regno == current_frame_info.r[reg_save_pr]);
        if (unwind)
  	fprintf (out_file, "\t.save pr, r%d\n",
! 		 ia64_debugger_regno (dest_regno));
        break;
  
      case AR_UNAT_REGNUM:
        gcc_assert (dest_regno == current_frame_info.r[reg_save_ar_unat]);
        if (unwind)
  	fprintf (out_file, "\t.save ar.unat, r%d\n",
! 		 ia64_debugger_regno (dest_regno));
        break;
  
      case AR_LC_REGNUM:
        gcc_assert (dest_regno == current_frame_info.r[reg_save_ar_lc]);
        if (unwind)
  	fprintf (out_file, "\t.save ar.lc, r%d\n",
! 		 ia64_debugger_regno (dest_regno));
        break;
  
      default:
*************** ia64_asm_unwind_emit (FILE *out_file, rt
*** 10326,10332 ****
  	{
  	  if (unwind)
  	    fprintf (out_file, "\t.save ar.pfs, r%d\n",
! 		     ia64_dbx_register_number (dest_regno));
  	}
        else
  	{
--- 10327,10333 ----
  	{
  	  if (unwind)
  	    fprintf (out_file, "\t.save ar.pfs, r%d\n",
! 		     ia64_debugger_regno (dest_regno));
  	}
        else
  	{
*************** ia64_init_builtins (void)
*** 10466,10476 ****
  	= build_pointer_type (build_qualified_type
  			      (char_type_node, TYPE_QUAL_CONST));
  
!       (*lang_hooks.types.register_builtin_type) (float128_type_node,
  						 "__float128");
  
        /* TFmode support builtins.  */
!       ftype = build_function_type_list (float128_type_node, NULL_TREE);
        decl = add_builtin_function ("__builtin_infq", ftype,
  				   IA64_BUILTIN_INFQ, BUILT_IN_MD,
  				   NULL, NULL_TREE);
--- 10467,10485 ----
  	= build_pointer_type (build_qualified_type
  			      (char_type_node, TYPE_QUAL_CONST));
  
!       if (float128t_type_node == NULL_TREE)
! 	{
! 	  float128t_type_node = make_node (REAL_TYPE);
! 	  TYPE_PRECISION (float128t_type_node)
! 	    = TYPE_PRECISION (float128_type_node);
! 	  layout_type (float128t_type_node);
! 	  SET_TYPE_MODE (float128t_type_node, TYPE_MODE (float128_type_node));
! 	}
!       (*lang_hooks.types.register_builtin_type) (float128t_type_node,
  						 "__float128");
  
        /* TFmode support builtins.  */
!       ftype = build_function_type_list (float128t_type_node, NULL_TREE);
        decl = add_builtin_function ("__builtin_infq", ftype,
  				   IA64_BUILTIN_INFQ, BUILT_IN_MD,
  				   NULL, NULL_TREE);
*************** ia64_init_builtins (void)
*** 10481,10487 ****
  				   NULL, NULL_TREE);
        ia64_builtins[IA64_BUILTIN_HUGE_VALQ] = decl;
  
!       ftype = build_function_type_list (float128_type_node,
  					const_string_type,
  					NULL_TREE);
        decl = add_builtin_function ("__builtin_nanq", ftype,
--- 10490,10496 ----
  				   NULL, NULL_TREE);
        ia64_builtins[IA64_BUILTIN_HUGE_VALQ] = decl;
  
!       ftype = build_function_type_list (float128t_type_node,
  					const_string_type,
  					NULL_TREE);
        decl = add_builtin_function ("__builtin_nanq", ftype,
*************** ia64_init_builtins (void)
*** 10496,10503 ****
        TREE_READONLY (decl) = 1;
        ia64_builtins[IA64_BUILTIN_NANSQ] = decl;
  
!       ftype = build_function_type_list (float128_type_node,
! 					float128_type_node,
  					NULL_TREE);
        decl = add_builtin_function ("__builtin_fabsq", ftype,
  				   IA64_BUILTIN_FABSQ, BUILT_IN_MD,
--- 10505,10512 ----
        TREE_READONLY (decl) = 1;
        ia64_builtins[IA64_BUILTIN_NANSQ] = decl;
  
!       ftype = build_function_type_list (float128t_type_node,
! 					float128t_type_node,
  					NULL_TREE);
        decl = add_builtin_function ("__builtin_fabsq", ftype,
  				   IA64_BUILTIN_FABSQ, BUILT_IN_MD,
*************** ia64_init_builtins (void)
*** 10505,10513 ****
        TREE_READONLY (decl) = 1;
        ia64_builtins[IA64_BUILTIN_FABSQ] = decl;
  
!       ftype = build_function_type_list (float128_type_node,
! 					float128_type_node,
! 					float128_type_node,
  					NULL_TREE);
        decl = add_builtin_function ("__builtin_copysignq", ftype,
  				   IA64_BUILTIN_COPYSIGNQ, BUILT_IN_MD,
--- 10514,10522 ----
        TREE_READONLY (decl) = 1;
        ia64_builtins[IA64_BUILTIN_FABSQ] = decl;
  
!       ftype = build_function_type_list (float128t_type_node,
! 					float128t_type_node,
! 					float128t_type_node,
  					NULL_TREE);
        decl = add_builtin_function ("__builtin_copysignq", ftype,
  				   IA64_BUILTIN_COPYSIGNQ, BUILT_IN_MD,
*************** ia64_mangle_type (const_tree type)
*** 11217,11222 ****
--- 11226,11234 ----
        && TREE_CODE (type) != INTEGER_TYPE && TREE_CODE (type) != REAL_TYPE)
      return NULL;
  
+   if (type == float128_type_node || type == float64x_type_node)
+     return NULL;
+ 
    /* On HP-UX, "long double" is mangled as "e" so __float128 is
       mangled as "e".  */
    if (!TARGET_HPUX && TYPE_MODE (type) == TFmode)
*************** ia64_expand_vec_perm_const_1 (struct exp
*** 11751,11759 ****
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! ia64_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 			       rtx op1, const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
    unsigned char perm[MAX_VECT_LEN];
    unsigned int i, nelt, which;
--- 11763,11775 ----
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! ia64_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 			       rtx target, rtx op0, rtx op1,
! 			       const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    struct expand_vec_perm_d d;
    unsigned char perm[MAX_VECT_LEN];
    unsigned int i, nelt, which;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64.h gcc-13.1.0/gcc/config/ia64/ia64.h
*** gcc-12.2.0/gcc/config/ia64/ia64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine GNU compiler.  IA-64 version.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by James E. Wilson <wilson@cygnus.com> and
     		  David Mosberger <davidm@hpl.hp.com>.
  
--- 1,5 ----
  /* Definitions of target machine GNU compiler.  IA-64 version.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by James E. Wilson <wilson@cygnus.com> and
     		  David Mosberger <davidm@hpl.hp.com>.
  
*************** do {									\
*** 1422,1443 ****
  /* Macros Affecting all Debug Formats.  */
  
  /* This is handled in sysv4.h.  */
- 
- 
- /* Specific Options for DBX Output.  */
- 
- /* This is handled by dbxelf.h.  */
- 
- 
- /* Open ended Hooks for DBX Output.  */
- 
- /* Likewise.  */
- 
- 
- /* File names in DBX format.  */
- 
- /* Likewise.  */
- 
  
  /* Macros for Dwarf Output.  */
  
--- 1422,1427 ----
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64.md gcc-13.1.0/gcc/config/ia64/ia64.md
*** gcc-12.2.0/gcc/config/ia64/ia64.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; IA-64 Machine description template
! ;; Copyright (C) 1999-2022 Free Software Foundation, Inc.
  ;; Contributed by James E. Wilson <wilson@cygnus.com> and
  ;;		  David Mosberger <davidm@hpl.hp.com>.
  
--- 1,5 ----
  ;; IA-64 Machine description template
! ;; Copyright (C) 1999-2023 Free Software Foundation, Inc.
  ;; Contributed by James E. Wilson <wilson@cygnus.com> and
  ;;		  David Mosberger <davidm@hpl.hp.com>.
  
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/ia64.opt gcc-13.1.0/gcc/config/ia64/ia64.opt
*** gcc-12.2.0/gcc/config/ia64/ia64.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/ia64.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,4 ----
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/itanium2.md gcc-13.1.0/gcc/config/ia64/itanium2.md
*** gcc-12.2.0/gcc/config/ia64/itanium2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/itanium2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Itanium2 DFA descriptions for insn scheduling and bundling.
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;; Contributed by Vladimir Makarov <vmakarov@redhat.com>.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Itanium2 DFA descriptions for insn scheduling and bundling.
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;; Contributed by Vladimir Makarov <vmakarov@redhat.com>.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/linux.h gcc-13.1.0/gcc/config/ia64/linux.h
*** gcc-12.2.0/gcc/config/ia64/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions for ia64-linux target.
  
! Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions for ia64-linux target.
  
! Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** do {						\
*** 49,55 ****
  /* Similar to standard Linux, but adding -ffast-math support.  */
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
  
  /* Define this for shared library support because it isn't in the main
--- 49,55 ----
  /* Similar to standard Linux, but adding -ffast-math support.  */
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     %{shared|pie:crtendS.o%s;:crtend.o%s} crtn.o%s"
  
  /* Define this for shared library support because it isn't in the main
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/predicates.md gcc-13.1.0/gcc/config/ia64/predicates.md
*** gcc-12.2.0/gcc/config/ia64/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for IA-64.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for IA-64.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/sync.md gcc-13.1.0/gcc/config/ia64/sync.md
*** gcc-12.2.0/gcc/config/ia64/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for IA-64 synchronization instructions.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for IA-64 synchronization instructions.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/sysv4.h gcc-13.1.0/gcc/config/ia64/sysv4.h
*** gcc-12.2.0/gcc/config/ia64/sysv4.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/sysv4.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Override definitions in elfos.h to be correct for IA64.
  
! Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Override definitions in elfos.h to be correct for IA64.
  
! Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 30,38 ****
  #undef PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
- /* Stabs does not work properly for 64-bit targets.  */
- #undef DBX_DEBUGGING_INFO
- 
  /* Various pseudo-ops for which the Intel assembler uses non-standard
     definitions.  */
  
--- 30,35 ----
*************** do {						\
*** 103,110 ****
  #undef FINI_SECTION_ASM_OP
  #define FINI_SECTION_ASM_OP	"\t.section\t.fini,\"ax\",\"progbits\""
  
! #define DBX_REGISTER_NUMBER(REGNO) \
!   ia64_dbx_register_number(REGNO)
  
  #undef SIZE_TYPE
  #define SIZE_TYPE "long unsigned int"
--- 100,107 ----
  #undef FINI_SECTION_ASM_OP
  #define FINI_SECTION_ASM_OP	"\t.section\t.fini,\"ax\",\"progbits\""
  
! #define DEBUGGER_REGNO(REGNO) \
!   ia64_debugger_regno(REGNO)
  
  #undef SIZE_TYPE
  #define SIZE_TYPE "long unsigned int"
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/t-hpux gcc-13.1.0/gcc/config/ia64/t-hpux
*** gcc-12.2.0/gcc/config/ia64/t-hpux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/t-hpux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2001-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2001-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/t-ia64 gcc-13.1.0/gcc/config/ia64/t-ia64
*** gcc-12.2.0/gcc/config/ia64/t-ia64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/t-ia64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2000-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2000-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/vect.md gcc-13.1.0/gcc/config/ia64/vect.md
*** gcc-12.2.0/gcc/config/ia64/vect.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/vect.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; IA-64 machine description for vector operations.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; IA-64 machine description for vector operations.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/vms.h gcc-13.1.0/gcc/config/ia64/vms.h
*** gcc-12.2.0/gcc/config/ia64/vms.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/vms.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine GNU compiler. IA64-VMS version.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by Douglas B Rupp (rupp@gnat.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine GNU compiler. IA64-VMS version.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by Douglas B Rupp (rupp@gnat.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/ia64/vms.opt gcc-13.1.0/gcc/config/ia64/vms.opt
*** gcc-12.2.0/gcc/config/ia64/vms.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/ia64/vms.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; IA64 VMS options.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; IA64 VMS options.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/initfini-array.h gcc-13.1.0/gcc/config/initfini-array.h
*** gcc-12.2.0/gcc/config/initfini-array.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/initfini-array.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions for ELF systems with .init_array/.fini_array section
     support.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Definitions for ELF systems with .init_array/.fini_array section
     support.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/abi gcc-13.1.0/gcc/config/iq2000/abi
*** gcc-12.2.0/gcc/config/iq2000/abi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/abi	Wed Apr 26 07:09:39 2023
*************** caller passing as a "hidden" first argum
*** 232,238 ****
  receive the return value.
  
  
! Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 232,238 ----
  receive the return value.
  
  
! Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/constraints.md gcc-13.1.0/gcc/config/iq2000/constraints.md
*** gcc-12.2.0/gcc/config/iq2000/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraints for Vitesse IQ2000 processors
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Constraints for Vitesse IQ2000 processors
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/iq2000-opts.h gcc-13.1.0/gcc/config/iq2000/iq2000-opts.h
*** gcc-12.2.0/gcc/config/iq2000/iq2000-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/iq2000-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for Vitesse IQ2000 processors.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for Vitesse IQ2000 processors.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/iq2000-protos.h gcc-13.1.0/gcc/config/iq2000/iq2000-protos.h
*** gcc-12.2.0/gcc/config/iq2000/iq2000-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/iq2000-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for iq2000.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for iq2000.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/iq2000.cc gcc-13.1.0/gcc/config/iq2000/iq2000.cc
*** gcc-12.2.0/gcc/config/iq2000/iq2000.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/iq2000.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on Vitesse IQ2000 processors
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for code generation on Vitesse IQ2000 processors
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/iq2000.h gcc-13.1.0/gcc/config/iq2000/iq2000.h
*** gcc-12.2.0/gcc/config/iq2000/iq2000.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/iq2000.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.  
     Vitesse IQ2000 processors
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.  
     Vitesse IQ2000 processors
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/iq2000.md gcc-13.1.0/gcc/config/iq2000/iq2000.md
*** gcc-12.2.0/gcc/config/iq2000/iq2000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/iq2000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  iq2000.md	     Machine Description for Vitesse IQ2000 processors
! ;;  Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;;  iq2000.md	     Machine Description for Vitesse IQ2000 processors
! ;;  Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/iq2000.opt gcc-13.1.0/gcc/config/iq2000/iq2000.opt
*** gcc-12.2.0/gcc/config/iq2000/iq2000.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/iq2000.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Vitesse IQ2000 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Vitesse IQ2000 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/iq2000/predicates.md gcc-13.1.0/gcc/config/iq2000/predicates.md
*** gcc-12.2.0/gcc/config/iq2000/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/iq2000/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Vitesse IQ2000.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Vitesse IQ2000.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/kfreebsd-d.cc gcc-13.1.0/gcc/config/kfreebsd-d.cc
*** gcc-12.2.0/gcc/config/kfreebsd-d.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/kfreebsd-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,65 ----
+ /* kFreeBSD-based GNU systems support needed only by D front-end.
+    Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for kFreeBSD targets.  */
+ 
+ static void
+ kfreebsd_d_os_builtins (void)
+ {
+   d_add_builtin_version ("Posix");
+   d_add_builtin_version ("FreeBSD");
+   d_add_builtin_version ("CRuntime_Glibc");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ kfreebsd_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "elf";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for kFreeBSD targets.  */
+ 
+ static void
+ kfreebsd_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", kfreebsd_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS kfreebsd_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO kfreebsd_d_register_target_info
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/kfreebsd-gnu.h gcc-13.1.0/gcc/config/kfreebsd-gnu.h
*** gcc-12.2.0/gcc/config/kfreebsd-gnu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/kfreebsd-gnu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for kFreeBSD-based GNU systems with ELF format
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for kFreeBSD-based GNU systems with ELF format
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 29,40 ****
      }						\
    while (0)
  
- #define GNU_USER_TARGET_D_OS_VERSIONS()		\
-     do {					\
- 	builtin_version ("FreeBSD");		\
- 	builtin_version ("CRuntime_Glibc");	\
-     } while (0)
- 
  #define GNU_USER_DYNAMIC_LINKER        GLIBC_DYNAMIC_LINKER
  #define GNU_USER_DYNAMIC_LINKER32      GLIBC_DYNAMIC_LINKER32
  #define GNU_USER_DYNAMIC_LINKER64      GLIBC_DYNAMIC_LINKER64
--- 29,34 ----
diff -Nrcpad gcc-12.2.0/gcc/config/kopensolaris-d.cc gcc-13.1.0/gcc/config/kopensolaris-d.cc
*** gcc-12.2.0/gcc/config/kopensolaris-d.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/kopensolaris-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,65 ----
+ /* kOpenSolaris-based GNU systems support needed only by D front-end.
+    Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for kOpenSolaris targets.  */
+ 
+ static void
+ kopensolaris_d_os_builtins (void)
+ {
+   d_add_builtin_version ("Posix");
+   d_add_builtin_version ("Solaris");
+   d_add_builtin_version ("CRuntime_Glibc");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ kopensolaris_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "elf";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for kOpenSolaris targets.  */
+ 
+ static void
+ kopensolaris_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", kopensolaris_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS kopensolaris_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO kopensolaris_d_register_target_info
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/kopensolaris-gnu.h gcc-13.1.0/gcc/config/kopensolaris-gnu.h
*** gcc-12.2.0/gcc/config/kopensolaris-gnu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/kopensolaris-gnu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for kOpenSolaris-based GNU systems with ELF format
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for kOpenSolaris-based GNU systems with ELF format
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by Robert Millan.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 30,40 ****
      }						\
    while (0)
  
- #define GNU_USER_TARGET_D_OS_VERSIONS()		\
-     do {					\
- 	builtin_version ("Solaris");		\
- 	builtin_version ("CRuntime_Glibc");	\
-     } while (0)
- 
  #undef GNU_USER_DYNAMIC_LINKER
  #define GNU_USER_DYNAMIC_LINKER "/lib/ld.so.1"
--- 30,34 ----
diff -Nrcpad gcc-12.2.0/gcc/config/linux-android.h gcc-13.1.0/gcc/config/linux-android.h
*** gcc-12.2.0/gcc/config/linux-android.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/linux-android.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for Linux Android targets.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Doug Kwan (dougkwan@google.com)
     Rewritten by CodeSourcery, Inc.
  
--- 1,5 ----
  /* Configuration file for Linux Android targets.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Doug Kwan (dougkwan@google.com)
     Rewritten by CodeSourcery, Inc.
  
***************
*** 25,36 ****
  	  builtin_define ("__ANDROID__");			\
      } while (0)
  
- #define ANDROID_TARGET_D_OS_VERSIONS()				\
-     do {							\
- 	if (TARGET_ANDROID)					\
- 	  builtin_version ("Android");				\
-     } while (0)
- 
  #if ANDROID_DEFAULT
  # define NOANDROID "mno-android"
  #else
--- 25,30 ----
diff -Nrcpad gcc-12.2.0/gcc/config/linux-android.opt gcc-13.1.0/gcc/config/linux-android.opt
*** gcc-12.2.0/gcc/config/linux-android.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/linux-android.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Android specific options.
  
! ; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Android specific options.
  
! ; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/linux-d.cc gcc-13.1.0/gcc/config/linux-d.cc
*** gcc-12.2.0/gcc/config/linux-d.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/linux-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,78 ----
+ /* Linux support needed only by D front-end.
+    Copyright (C) 2017-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ 
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tm_d.h"
+ #include "d/d-target.h"
+ #include "d/d-target-def.h"
+ 
+ /* Implement TARGET_D_OS_VERSIONS for Linux targets.  */
+ 
+ static void
+ linux_d_os_builtins (void)
+ {
+   d_add_builtin_version ("Posix");
+ 
+   d_add_builtin_version ("linux");
+ #ifdef TARGET_ANDROID
+   if (TARGET_ANDROID)
+     d_add_builtin_version ("Android");
+ #endif
+ 
+   if (OPTION_GLIBC)
+     d_add_builtin_version ("CRuntime_Glibc");
+   else if (OPTION_UCLIBC)
+     d_add_builtin_version ("CRuntime_UClibc");
+   else if (OPTION_BIONIC)
+     d_add_builtin_version ("CRuntime_Bionic");
+   else if (OPTION_MUSL)
+     d_add_builtin_version ("CRuntime_Musl");
+ }
+ 
+ /* Handle a call to `__traits(getTargetInfo, "objectFormat")'.  */
+ 
+ static tree
+ linux_d_handle_target_object_format (void)
+ {
+   const char *objfmt = "elf";
+ 
+   return build_string_literal (strlen (objfmt) + 1, objfmt);
+ }
+ 
+ /* Implement TARGET_D_REGISTER_OS_TARGET_INFO for Linux targets.  */
+ 
+ static void
+ linux_d_register_target_info (void)
+ {
+   const struct d_target_info_spec handlers[] = {
+     { "objectFormat", linux_d_handle_target_object_format },
+     { NULL, NULL },
+   };
+ 
+   d_add_target_info_handlers (handlers);
+ }
+ 
+ #undef TARGET_D_OS_VERSIONS
+ #define TARGET_D_OS_VERSIONS linux_d_os_builtins
+ 
+ #undef TARGET_D_REGISTER_OS_TARGET_INFO
+ #define TARGET_D_REGISTER_OS_TARGET_INFO linux_d_register_target_info
+ 
+ struct gcc_targetdm targetdm = TARGETDM_INITIALIZER;
diff -Nrcpad gcc-12.2.0/gcc/config/linux-protos.h gcc-13.1.0/gcc/config/linux-protos.h
*** gcc-12.2.0/gcc/config/linux-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/linux-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/linux.cc gcc-13.1.0/gcc/config/linux.cc
*** gcc-12.2.0/gcc/config/linux.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/linux.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for Linux Android as target machine for GNU C compiler.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions for Linux Android as target machine for GNU C compiler.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/linux.h gcc-13.1.0/gcc/config/linux.h
*** gcc-12.2.0/gcc/config/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
     MMU, using ELF at the compiler level but possibly FLT for final
     linked executables and shared libraries in some no-MMU cases, and
     possibly with a choice of libc implementations.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
  
--- 2,8 ----
     MMU, using ELF at the compiler level but possibly FLT for final
     linked executables and shared libraries in some no-MMU cases, and
     possibly with a choice of libc implementations.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Eric Youngdale.
     Modified for stabs-in-ELF by H.J. Lu (hjl@lucon.org).
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 58,76 ****
  	builtin_assert ("system=posix");			\
      } while (0)
  
- #define GNU_USER_TARGET_D_OS_VERSIONS()				\
-     do {							\
- 	builtin_version ("linux");				\
- 	if (OPTION_GLIBC)					\
- 	  builtin_version ("CRuntime_Glibc");			\
- 	else if (OPTION_UCLIBC)					\
- 	  builtin_version ("CRuntime_UClibc");			\
- 	else if (OPTION_BIONIC)					\
- 	  builtin_version ("CRuntime_Bionic");			\
- 	else if (OPTION_MUSL)					\
- 	  builtin_version ("CRuntime_Musl");			\
-     } while (0)
- 
  /* Determine which dynamic linker to use depending on whether GLIBC or
     uClibc or Bionic or musl is the default C library and whether
     -muclibc or -mglibc or -mbionic or -mmusl has been passed to change
--- 58,63 ----
diff -Nrcpad gcc-12.2.0/gcc/config/linux.opt gcc-13.1.0/gcc/config/linux.opt
*** gcc-12.2.0/gcc/config/linux.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/linux.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Processor-independent options for GNU/Linux.
  ;
! ; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ; Contributed by CodeSourcery.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Processor-independent options for GNU/Linux.
  ;
! ; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ; Contributed by CodeSourcery.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/constraints.md gcc-13.1.0/gcc/config/lm32/constraints.md
*** gcc-12.2.0/gcc/config/lm32/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ;; Constraint definitions for Lattice Mico32 architecture.
  ;; Contributed by Jon Beniston <jon@beniston.com>
  ;;
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,7 ----
  ;; Constraint definitions for Lattice Mico32 architecture.
  ;; Contributed by Jon Beniston <jon@beniston.com>
  ;;
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/lm32-protos.h gcc-13.1.0/gcc/config/lm32/lm32-protos.h
*** gcc-12.2.0/gcc/config/lm32/lm32-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/lm32-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Prototypes of target machine functions, Lattice Mico32 architecture.
     Contributed by Jon Beniston <jon@beniston.com>
  
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,7 ----
  /* Prototypes of target machine functions, Lattice Mico32 architecture.
     Contributed by Jon Beniston <jon@beniston.com>
  
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/lm32.cc gcc-13.1.0/gcc/config/lm32/lm32.cc
*** gcc-12.2.0/gcc/config/lm32/lm32.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/lm32.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Subroutines used for code generation on the Lattice Mico32 architecture.
     Contributed by Jon Beniston <jon@beniston.com>
  
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,7 ----
  /* Subroutines used for code generation on the Lattice Mico32 architecture.
     Contributed by Jon Beniston <jon@beniston.com>
  
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/lm32.h gcc-13.1.0/gcc/config/lm32/lm32.h
*** gcc-12.2.0/gcc/config/lm32/lm32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/lm32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Definitions of target machine for GNU compiler, Lattice Mico32 architecture.
     Contributed by Jon Beniston <jon@beniston.com>
  
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,7 ----
  /* Definitions of target machine for GNU compiler, Lattice Mico32 architecture.
     Contributed by Jon Beniston <jon@beniston.com>
  
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** do {
*** 491,497 ****
  /* Debugging.  */
  /*-------------*/
  
! #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
  
  #define DEFAULT_GDB_EXTENSIONS 1
  
--- 491,497 ----
  /* Debugging.  */
  /*-------------*/
  
! #define DEBUGGER_REGNO(REGNO) (REGNO)
  
  #define DEFAULT_GDB_EXTENSIONS 1
  
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/lm32.md gcc-13.1.0/gcc/config/lm32/lm32.md
*** gcc-12.2.0/gcc/config/lm32/lm32.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/lm32.md	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ;; Machine description of the Lattice Mico32 architecture for GNU C compiler.
  ;; Contributed by Jon Beniston <jon@beniston.com>
  
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,7 ----
  ;; Machine description of the Lattice Mico32 architecture for GNU C compiler.
  ;; Contributed by Jon Beniston <jon@beniston.com>
  
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/lm32.opt gcc-13.1.0/gcc/config/lm32/lm32.opt
*** gcc-12.2.0/gcc/config/lm32/lm32.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/lm32.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ; Options for the Lattice Mico32 port of the compiler.
  ; Contributed by Jon Beniston <jon@beniston.com>
  ;
! ; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; Options for the Lattice Mico32 port of the compiler.
  ; Contributed by Jon Beniston <jon@beniston.com>
  ;
! ; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/predicates.md gcc-13.1.0/gcc/config/lm32/predicates.md
*** gcc-12.2.0/gcc/config/lm32/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ;; Predicate definitions for Lattice Mico32 architecture.
  ;; Contributed by Jon Beniston <jon@beniston.com>
  ;;
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,7 ----
  ;; Predicate definitions for Lattice Mico32 architecture.
  ;; Contributed by Jon Beniston <jon@beniston.com>
  ;;
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/rtems.h gcc-13.1.0/gcc/config/lm32/rtems.h
*** gcc-12.2.0/gcc/config/lm32/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a lm32 using ELF.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for rtems targeting a lm32 using ELF.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/lm32/uclinux-elf.h gcc-13.1.0/gcc/config/lm32/uclinux-elf.h
*** gcc-12.2.0/gcc/config/lm32/uclinux-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lm32/uclinux-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for LM32 running Linux-based GNU systems using ELF
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for LM32 running Linux-based GNU systems using ELF
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Philip Blundell <philb@gnu.org>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/constraints.md gcc-13.1.0/gcc/config/loongarch/constraints.md
*** gcc-12.2.0/gcc/config/loongarch/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for LoongArch.
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for LoongArch.
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;;
  ;; This file is part of GCC.
***************
*** 20,33 ****
  
  ;; Register constraints
  
! ;; "a" "A constant call global and noplt address."
! ;; "b" <-----unused
  ;; "c" "A constant call local address."
  ;; "d" <-----unused
  ;; "e" JIRL_REGS
  ;; "f" FP_REGS
  ;; "g" <-----unused
! ;; "h" "A constant call plt address."
  ;; "i" "Matches a general integer constant." (Global non-architectural)
  ;; "j" SIBCALL_REGS
  ;; "k" "A memory operand whose address is formed by a base register and
--- 20,33 ----
  
  ;; Register constraints
  
! ;; "a" <-----unused
! ;; "b" "A constant call not local address."
  ;; "c" "A constant call local address."
  ;; "d" <-----unused
  ;; "e" JIRL_REGS
  ;; "f" FP_REGS
  ;; "g" <-----unused
! ;; "h" <-----unused
  ;; "i" "Matches a general integer constant." (Global non-architectural)
  ;; "j" SIBCALL_REGS
  ;; "k" "A memory operand whose address is formed by a base register and
***************
*** 42,48 ****
  ;; "q" CSR_REGS
  ;; "r" GENERAL_REGS (Global non-architectural)
  ;; "s" "Matches a symbolic integer constant." (Global non-architectural)
! ;; "t" "A constant call weak address"
  ;; "u" "A signed 52bit constant and low 32-bit is zero (for logic instructions)"
  ;; "v" "A signed 64-bit constant and low 44-bit is zero (for logic instructions)."
  ;; "w" "Matches any valid memory."
--- 42,48 ----
  ;; "q" CSR_REGS
  ;; "r" GENERAL_REGS (Global non-architectural)
  ;; "s" "Matches a symbolic integer constant." (Global non-architectural)
! ;; "t" <-----unused
  ;; "u" "A signed 52bit constant and low 32-bit is zero (for logic instructions)"
  ;; "v" "A signed 64-bit constant and low 44-bit is zero (for logic instructions)."
  ;; "w" "Matches any valid memory."
***************
*** 86,98 ****
  ;;    "ZB"
  ;;      "An address that is held in a general-purpose register.
  ;;      The offset is zero"
  ;; "<" "Matches a pre-dec or post-dec operand." (Global non-architectural)
  ;; ">" "Matches a pre-inc or post-inc operand." (Global non-architectural)
  
! (define_constraint "a"
    "@internal
!    A constant call global and noplt address."
!   (match_operand 0 "is_const_call_global_noplt_symbol"))
  
  (define_constraint "c"
    "@internal
--- 86,102 ----
  ;;    "ZB"
  ;;      "An address that is held in a general-purpose register.
  ;;      The offset is zero"
+ ;;    "ZD"
+ ;;	"An address operand whose address is formed by a base register
+ ;;	 and offset that is suitable for use in instructions with the same
+ ;;	 addressing mode as @code{preld}."
  ;; "<" "Matches a pre-dec or post-dec operand." (Global non-architectural)
  ;; ">" "Matches a pre-inc or post-inc operand." (Global non-architectural)
  
! (define_constraint "b"
    "@internal
!    A constant call no local address."
!   (match_operand 0 "is_const_call_no_local_symbol"))
  
  (define_constraint "c"
    "@internal
***************
*** 105,115 ****
  (define_register_constraint "f" "TARGET_HARD_FLOAT ? FP_REGS : NO_REGS"
    "A floating-point register (if available).")
  
- (define_constraint "h"
-   "@internal
-    A constant call plt address."
-   (match_operand 0 "is_const_call_plt_symbol"))
- 
  (define_register_constraint "j" "SIBCALL_REGS"
    "@internal")
  
--- 109,114 ----
***************
*** 134,144 ****
  (define_register_constraint "q" "CSR_REGS"
    "A general-purpose register except for $r0 and $r1 for lcsr.")
  
- (define_constraint "t"
-   "@internal
-    A constant call weak address."
-   (match_operand 0 "is_const_call_weak_symbol"))
- 
  (define_constraint "u"
    "A signed 52bit constant and low 32-bit is zero (for logic instructions)."
    (and (match_code "const_int")
--- 133,138 ----
***************
*** 200,202 ****
--- 194,202 ----
    The offset is zero"
    (and (match_code "mem")
         (match_test "REG_P (XEXP (op, 0))")))
+ 
+ (define_address_constraint "ZD"
+   "An address operand whose address is formed by a base register
+    and offset that is suitable for use in instructions with the same
+    addressing mode as @code{preld}."
+    (match_test "loongarch_12bit_offset_address_p (op, mode)"))
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/generic.md gcc-13.1.0/gcc/config/loongarch/generic.md
*** gcc-12.2.0/gcc/config/loongarch/generic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/generic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Generic DFA-based pipeline description for LoongArch targets
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  ;; Generic DFA-based pipeline description for LoongArch targets
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS target for GNU compiler.
  
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/genopts/genstr.sh gcc-13.1.0/gcc/config/loongarch/genopts/genstr.sh
*** gcc-12.2.0/gcc/config/loongarch/genopts/genstr.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/genopts/genstr.sh	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  # A simple script that generates loongarch-str.h and loongarch.opt
  # from genopt/loongarch-optstr.
  #
! # Copyright (C) 2021-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 2,8 ----
  # A simple script that generates loongarch-str.h and loongarch.opt
  # from genopt/loongarch-optstr.
  #
! # Copyright (C) 2021-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** gen_defines() {
*** 28,34 ****
  /* Generated automatically by "genstr" from "loongarch-strings".
     Please do not edit this file directly.
  
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 28,34 ----
  /* Generated automatically by "genstr" from "loongarch-strings".
     Please do not edit this file directly.
  
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/genopts/loongarch-strings gcc-13.1.0/gcc/config/loongarch/genopts/loongarch-strings
*** gcc-12.2.0/gcc/config/loongarch/genopts/loongarch-strings	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/genopts/loongarch-strings	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Defines the key strings for LoongArch compiler options.
  #
! # Copyright (C) 2021-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Defines the key strings for LoongArch compiler options.
  #
! # Copyright (C) 2021-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** OPTSTR_CMODEL	      cmodel
*** 54,58 ****
--- 54,59 ----
  STR_CMODEL_NORMAL     normal
  STR_CMODEL_TINY	      tiny
  STR_CMODEL_TS	      tiny-static
+ STR_CMODEL_MEDIUM     medium
  STR_CMODEL_LARGE      large
  STR_CMODEL_EXTREME    extreme
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/genopts/loongarch.opt.in gcc-13.1.0/gcc/config/loongarch/genopts/loongarch.opt.in
*** gcc-12.2.0/gcc/config/loongarch/genopts/loongarch.opt.in	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/genopts/loongarch.opt.in	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,4 ----
! ; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** mmax-inline-memcpy-size=
*** 154,159 ****
--- 154,163 ----
  Target Joined RejectNegative UInteger Var(loongarch_max_inline_memcpy_size) Init(1024)
  -mmax-inline-memcpy-size=SIZE	Set the max size of memcpy to inline, default is 1024.
  
+ mexplicit-relocs
+ Target Var(TARGET_EXPLICIT_RELOCS) Init(HAVE_AS_EXPLICIT_RELOCS)
+ Use %reloc() assembly operators.
+ 
  ; The code model option names for -mcmodel.
  Enum
  Name(cmodel) Type(int)
*************** EnumValue
*** 169,174 ****
--- 173,181 ----
  Enum(cmodel) String(@@STR_CMODEL_TS@@) Value(CMODEL_TINY_STATIC)
  
  EnumValue
+ Enum(cmodel) String(@@STR_CMODEL_MEDIUM@@) Value(CMODEL_MEDIUM)
+ 
+ EnumValue
  Enum(cmodel) String(@@STR_CMODEL_LARGE@@) Value(CMODEL_LARGE)
  
  EnumValue
*************** Enum(cmodel) String(@@STR_CMODEL_EXTREME
*** 177,179 ****
--- 184,190 ----
  mcmodel=
  Target RejectNegative Joined Enum(cmodel) Var(la_opt_cmodel) Init(CMODEL_NORMAL)
  Specify the code model.
+ 
+ mdirect-extern-access
+ Target Var(TARGET_DIRECT_EXTERN_ACCESS) Init(0)
+ Avoid using the GOT to access external symbols.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/gnu-user.h gcc-13.1.0/gcc/config/loongarch/gnu-user.h
*** gcc-12.2.0/gcc/config/loongarch/gnu-user.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/gnu-user.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions for LoongArch systems using GNU (glibc-based) userspace,
     or other userspace with libc derived from glibc.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions for LoongArch systems using GNU (glibc-based) userspace,
     or other userspace with libc derived from glibc.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 40,53 ****
  #undef GNU_USER_TARGET_LINK_SPEC
  #define GNU_USER_TARGET_LINK_SPEC \
    "%{G*} %{shared} -m " GNU_USER_LINK_EMULATION \
!   "%{!shared: %{static} %{!static: %{rdynamic:-export-dynamic} " \
!   "-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}"
  
  
  /* Similar to standard Linux, but adding -ffast-math support.  */
  #undef GNU_USER_TARGET_MATHFILE_SPEC
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  
  #undef LIB_SPEC
  #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
--- 40,55 ----
  #undef GNU_USER_TARGET_LINK_SPEC
  #define GNU_USER_TARGET_LINK_SPEC \
    "%{G*} %{shared} -m " GNU_USER_LINK_EMULATION \
!   "%{!shared: %{static} " \
!   "%{!static: %{!static-pie: %{rdynamic:-export-dynamic} " \
!   "-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} " \
!   "%{static-pie: -static -pie --no-dynamic-linker -z text}}"
  
  
  /* Similar to standard Linux, but adding -ffast-math support.  */
  #undef GNU_USER_TARGET_MATHFILE_SPEC
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  
  #undef LIB_SPEC
  #define LIB_SPEC GNU_USER_TARGET_LIB_SPEC
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/la464.md gcc-13.1.0/gcc/config/loongarch/la464.md
*** gcc-12.2.0/gcc/config/loongarch/la464.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/la464.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Pipeline model for LoongArch LA464 cores.
  
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;; Pipeline model for LoongArch LA464 cores.
  
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/larchintrin.h gcc-13.1.0/gcc/config/loongarch/larchintrin.h
*** gcc-12.2.0/gcc/config/loongarch/larchintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/larchintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Intrinsics for LoongArch BASE operations.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Intrinsics for LoongArch BASE operations.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/linux.h gcc-13.1.0/gcc/config/loongarch/linux.h
*** gcc-12.2.0/gcc/config/loongarch/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Linux-based systems with libraries in ELF format.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for Linux-based systems with libraries in ELF format.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 48,50 ****
--- 48,53 ----
  #define STACK_CHECK_PROTECT (TARGET_64BIT ? 16 * 1024 : 12 * 1024)
  
  #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
+ 
+ /* The stack pointer needs to be moved while checking the stack.  */
+ #define STACK_CHECK_MOVING_SP 1
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-builtins.cc gcc-13.1.0/gcc/config/loongarch/loongarch-builtins.cc
*** gcc-12.2.0/gcc/config/loongarch/loongarch-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for expanding LoongArch builtins.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for expanding LoongArch builtins.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-c.cc gcc-13.1.0/gcc/config/loongarch/loongarch-c.cc
*** gcc-12.2.0/gcc/config/loongarch/loongarch-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* LoongArch-specific code for C family languages.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* LoongArch-specific code for C family languages.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-cpu.cc gcc-13.1.0/gcc/config/loongarch/loongarch-cpu.cc
*** gcc-12.2.0/gcc/config/loongarch/loongarch-cpu.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-cpu.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for LoongArch CPU properties.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for LoongArch CPU properties.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-cpu.h gcc-13.1.0/gcc/config/loongarch/loongarch-cpu.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-cpu.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-cpu.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for loongarch native cpu property detection routines.
!    Copyright (C) 2020-2021 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for loongarch native cpu property detection routines.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-def.c gcc-13.1.0/gcc/config/loongarch/loongarch-def.c
*** gcc-12.2.0/gcc/config/loongarch/loongarch-def.c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-def.c	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* LoongArch static properties.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* LoongArch static properties.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
*************** loongarch_cpu_cache[N_TUNE_TYPES] = {
*** 62,72 ****
--- 62,74 ----
        .l1d_line_size = 64,
        .l1d_size = 64,
        .l2d_size = 256,
+       .simultaneous_prefetches = 4,
    },
    [CPU_LA464] = {
        .l1d_line_size = 64,
        .l1d_size = 64,
        .l2d_size = 256,
+       .simultaneous_prefetches = 4,
    },
  };
  
*************** loongarch_cmodel_strings[] = {
*** 152,157 ****
--- 154,160 ----
    [CMODEL_NORMAL]	  = STR_CMODEL_NORMAL,
    [CMODEL_TINY]		  = STR_CMODEL_TINY,
    [CMODEL_TINY_STATIC]	  = STR_CMODEL_TS,
+   [CMODEL_MEDIUM]	  = STR_CMODEL_MEDIUM,
    [CMODEL_LARGE]	  = STR_CMODEL_LARGE,
    [CMODEL_EXTREME]	  = STR_CMODEL_EXTREME,
  };
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-def.h gcc-13.1.0/gcc/config/loongarch/loongarch-def.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-def.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-def.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* LoongArch definitions.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* LoongArch definitions.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
*************** extern const char* loongarch_cmodel_stri
*** 82,90 ****
  #define CMODEL_NORMAL	      0
  #define CMODEL_TINY	      1
  #define CMODEL_TINY_STATIC    2
! #define CMODEL_LARGE	      3
! #define CMODEL_EXTREME	      4
! #define N_CMODEL_TYPES	      5
  
  /* enum switches */
  /* The "SW_" codes represent command-line switches (options that
--- 82,91 ----
  #define CMODEL_NORMAL	      0
  #define CMODEL_TINY	      1
  #define CMODEL_TINY_STATIC    2
! #define CMODEL_MEDIUM	      3
! #define CMODEL_LARGE	      4
! #define CMODEL_EXTREME	      5
! #define N_CMODEL_TYPES	      6
  
  /* enum switches */
  /* The "SW_" codes represent command-line switches (options that
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-driver.cc gcc-13.1.0/gcc/config/loongarch/loongarch-driver.cc
*** gcc-12.2.0/gcc/config/loongarch/loongarch-driver.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-driver.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-driver.h gcc-13.1.0/gcc/config/loongarch/loongarch-driver.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-driver.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-driver.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutine headers for the gcc driver.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutine headers for the gcc driver.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-ftypes.def gcc-13.1.0/gcc/config/loongarch/loongarch-ftypes.def
*** gcc-12.2.0/gcc/config/loongarch/loongarch-ftypes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-ftypes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of prototypes for LoongArch built-in functions.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS target for GNU ckompiler.
  
--- 1,5 ----
  /* Definitions of prototypes for LoongArch built-in functions.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS target for GNU ckompiler.
  
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-modes.def gcc-13.1.0/gcc/config/loongarch/loongarch-modes.def
*** gcc-12.2.0/gcc/config/loongarch/loongarch-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* LoongArch extra machine modes.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* LoongArch extra machine modes.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS target for GNU compiler.
  
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-opts.cc gcc-13.1.0/gcc/config/loongarch/loongarch-opts.cc
*** gcc-12.2.0/gcc/config/loongarch/loongarch-opts.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-opts.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for loongarch-specific option handling.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for loongarch-specific option handling.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
*************** fallback:
*** 377,382 ****
--- 377,401 ----
    /* 5.  Target code model */
    t.cmodel = constrained.cmodel ? opt_cmodel : CMODEL_NORMAL;
  
+   switch (t.cmodel)
+     {
+     case CMODEL_TINY:
+     case CMODEL_TINY_STATIC:
+     case CMODEL_LARGE:
+       warning (0, "%qs is not supported, now cmodel is set to %qs",
+ 	       loongarch_cmodel_strings[t.cmodel], "normal");
+       t.cmodel = CMODEL_NORMAL;
+       break;
+ 
+     case CMODEL_NORMAL:
+     case CMODEL_MEDIUM:
+     case CMODEL_EXTREME:
+       break;
+ 
+     default:
+       gcc_unreachable ();
+     }
+ 
    /* Cleanup and return.  */
    obstack_free (&msg_obstack, NULL);
    *target = t;
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-opts.h gcc-13.1.0/gcc/config/loongarch/loongarch-opts.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for loongarch-specific option handling.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for loongarch-specific option handling.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
*************** loongarch_config_target (struct loongarc
*** 46,51 ****
--- 46,52 ----
  #define TARGET_CMODEL_NORMAL	    (la_target.cmodel == CMODEL_NORMAL)
  #define TARGET_CMODEL_TINY	    (la_target.cmodel == CMODEL_TINY)
  #define TARGET_CMODEL_TINY_STATIC   (la_target.cmodel == CMODEL_TINY_STATIC)
+ #define TARGET_CMODEL_MEDIUM	    (la_target.cmodel == CMODEL_MEDIUM)
  #define TARGET_CMODEL_LARGE	    (la_target.cmodel == CMODEL_LARGE)
  #define TARGET_CMODEL_EXTREME	    (la_target.cmodel == CMODEL_EXTREME)
  
*************** loongarch_config_target (struct loongarc
*** 87,90 ****
--- 88,95 ----
     while -m[no]-memcpy imposes a global constraint.  */
  #define TARGET_DO_OPTIMIZE_BLOCK_MOVE_P  loongarch_do_optimize_block_move_p()
  
+ #ifndef HAVE_AS_EXPLICIT_RELOCS
+ #define HAVE_AS_EXPLICIT_RELOCS 0
+ #endif
+ 
  #endif /* LOONGARCH_OPTS_H */
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-protos.h gcc-13.1.0/gcc/config/loongarch/loongarch-protos.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes of target machine for GNU compiler.  LoongArch version.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Prototypes of target machine for GNU compiler.  LoongArch version.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS target for GNU compiler.
  
*************** along with GCC; see the file COPYING3.
*** 27,35 ****
--- 27,44 ----
     SYMBOL_GOT_DISP
         The symbol's value will be loaded directly from the GOT.
  
+    SYMBOL_PCREL
+        The symbol's value will be loaded directly from data section within
+        +/- 2GiB range.
+ 
+    SYMBOL_PCREL64
+        The symbol's value will be loaded directly from data section within
+        +/- 8EiB range.
+ 
     SYMBOL_TLS
         A thread-local symbol.
  
+    SYMBOL_TLS_IE
     SYMBOL_TLSGD
     SYMBOL_TLSLDM
         UNSPEC wrappers around SYMBOL_TLS, corresponding to the
*************** along with GCC; see the file COPYING3.
*** 37,43 ****
--- 46,56 ----
     */
  enum loongarch_symbol_type {
    SYMBOL_GOT_DISP,
+   SYMBOL_PCREL,
+   SYMBOL_PCREL64,
    SYMBOL_TLS,
+   SYMBOL_TLS_IE,
+   SYMBOL_TLS_LE,
    SYMBOL_TLSGD,
    SYMBOL_TLSLDM,
  };
*************** extern int loongarch_idiv_insns (machine
*** 61,67 ****
  #ifdef RTX_CODE
  extern void loongarch_emit_binary (enum rtx_code, rtx, rtx, rtx);
  #endif
- extern bool loongarch_split_symbol (rtx, rtx, machine_mode, rtx *);
  extern rtx loongarch_unspec_address (rtx, enum loongarch_symbol_type);
  extern rtx loongarch_strip_unspec_address (rtx);
  extern void loongarch_move_integer (rtx, rtx, unsigned HOST_WIDE_INT);
--- 74,79 ----
*************** extern rtx loongarch_legitimize_call_add
*** 71,78 ****
  extern rtx loongarch_subword (rtx, bool);
  extern bool loongarch_split_move_p (rtx, rtx);
  extern void loongarch_split_move (rtx, rtx, rtx);
- extern bool loongarch_split_move_insn_p (rtx, rtx);
- extern void loongarch_split_move_insn (rtx, rtx, rtx);
  extern const char *loongarch_output_move (rtx, rtx);
  extern bool loongarch_cfun_has_cprestore_slot_p (void);
  #ifdef RTX_CODE
--- 83,88 ----
*************** extern bool loongarch_symbol_binds_local
*** 130,135 ****
--- 140,146 ----
  extern const char *current_section_name (void);
  extern unsigned int current_section_flags (void);
  extern bool loongarch_use_ins_ext_p (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
+ extern bool loongarch_check_zero_div_p (void);
  
  union loongarch_gen_fn_ptrs
  {
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-str.h gcc-13.1.0/gcc/config/loongarch/loongarch-str.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-str.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-str.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Generated automatically by "genstr" from "loongarch-strings".
     Please do not edit this file directly.
  
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,7 ----
  /* Generated automatically by "genstr" from "loongarch-strings".
     Please do not edit this file directly.
  
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 53,58 ****
--- 53,59 ----
  #define STR_CMODEL_NORMAL "normal"
  #define STR_CMODEL_TINY "tiny"
  #define STR_CMODEL_TS "tiny-static"
+ #define STR_CMODEL_MEDIUM "medium"
  #define STR_CMODEL_LARGE "large"
  #define STR_CMODEL_EXTREME "extreme"
  
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch-tune.h gcc-13.1.0/gcc/config/loongarch/loongarch-tune.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch-tune.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch-tune.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for microarchitecture-related data structures.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for microarchitecture-related data structures.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
  
  This file is part of GCC.
*************** struct loongarch_cache {
*** 45,50 ****
--- 45,51 ----
      int l1d_line_size;  /* bytes */
      int l1d_size;       /* KiB */
      int l2d_size;       /* kiB */
+     int simultaneous_prefetches; /* number of parallel prefetch */
  };
  
  #endif /* LOONGARCH_TUNE_H */
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch.cc gcc-13.1.0/gcc/config/loongarch/loongarch.cc
*** gcc-12.2.0/gcc/config/loongarch/loongarch.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for LoongArch code generation.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS and RISC-V target for GNU compiler.
  
--- 1,5 ----
  /* Subroutines used for LoongArch code generation.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS and RISC-V target for GNU compiler.
  
*************** along with GCC; see the file COPYING3.
*** 63,68 ****
--- 63,69 ----
  #include "context.h"
  #include "builtins.h"
  #include "rtl-iter.h"
+ #include "opts.h"
  
  /* This file should be included last.  */
  #include "target-def.h"
*************** along with GCC; see the file COPYING3.
*** 100,105 ****
--- 101,110 ----
     ADDRESS_REG_REG
         A base register indexed by (optionally scaled) register.
  
+    ADDRESS_LO_SUM
+        A LO_SUM rtx.  The first operand is a valid base register and the second
+        operand is a symbolic address.
+ 
     ADDRESS_CONST_INT
         A signed 16-bit constant address.
  
*************** enum loongarch_address_type
*** 109,132 ****
  {
    ADDRESS_REG,
    ADDRESS_REG_REG,
    ADDRESS_CONST_INT,
    ADDRESS_SYMBOLIC
  };
  
  
! /* Information about an address described by loongarch_address_type.
! 
!    ADDRESS_CONST_INT
!        No fields are used.
! 
!    ADDRESS_REG
!        REG is the base register and OFFSET is the constant offset.
! 
!    ADDRESS_REG_REG
!        A base register indexed by (optionally scaled) register.
! 
!    ADDRESS_SYMBOLIC
!        SYMBOL_TYPE is the type of symbol that the address references.  */
  struct loongarch_address_info
  {
    enum loongarch_address_type type;
--- 114,126 ----
  {
    ADDRESS_REG,
    ADDRESS_REG_REG,
+   ADDRESS_LO_SUM,
    ADDRESS_CONST_INT,
    ADDRESS_SYMBOLIC
  };
  
  
! /* Information about an address described by loongarch_address_type.  */
  struct loongarch_address_info
  {
    enum loongarch_address_type type;
*************** struct loongarch_address_info
*** 145,166 ****
  
     METHOD_LU52I:
       Load 52-63 bit of the immediate number.
! 
!    METHOD_INSV:
!      immediate like 0xfff00000fffffxxx
!    */
  enum loongarch_load_imm_method
  {
    METHOD_NORMAL,
    METHOD_LU32I,
!   METHOD_LU52I,
!   METHOD_INSV
  };
  
  struct loongarch_integer_op
  {
    enum rtx_code code;
    HOST_WIDE_INT value;
    enum loongarch_load_imm_method method;
  };
  
--- 139,159 ----
  
     METHOD_LU52I:
       Load 52-63 bit of the immediate number.
! */
  enum loongarch_load_imm_method
  {
    METHOD_NORMAL,
    METHOD_LU32I,
!   METHOD_LU52I
  };
  
  struct loongarch_integer_op
  {
    enum rtx_code code;
    HOST_WIDE_INT value;
+   /* Represent the result of the immediate count of the load instruction at
+      each step.  */
+   HOST_WIDE_INT curr_value;
    enum loongarch_load_imm_method method;
  };
  
*************** const char *const
*** 264,269 ****
--- 257,266 ----
  loongarch_fp_conditions[16]= {LARCH_FP_CONDITIONS (STRINGIFY)};
  #undef STRINGIFY
  
+ /* Size of guard page.  */
+ #define STACK_CLASH_PROTECTION_GUARD_SIZE \
+   (1 << param_stack_clash_protection_guard_size)
+ 
  /* Implement TARGET_FUNCTION_ARG_BOUNDARY.  Every parameter gets at
     least PARM_BOUNDARY bits of alignment, but will be given anything up
     to PREFERRED_STACK_BOUNDARY bits if the type requires it.  */
*************** loongarch_setup_incoming_varargs (cumula
*** 763,769 ****
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *get_cumulative_args (cum);
!   loongarch_function_arg_advance (pack_cumulative_args (&local_cum), arg);
  
    /* Found out how many registers we need to save.  */
    gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
--- 760,767 ----
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *get_cumulative_args (cum);
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     loongarch_function_arg_advance (pack_cumulative_args (&local_cum), arg);
  
    /* Found out how many registers we need to save.  */
    gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
*************** loongarch_restore_reg (rtx reg, rtx mem)
*** 1076,1086 ****
  static HOST_WIDE_INT
  loongarch_first_stack_step (struct loongarch_frame_info *frame)
  {
    if (IMM12_OPERAND (frame->total_size))
      return frame->total_size;
  
-   HOST_WIDE_INT min_first_step
-     = LARCH_STACK_ALIGN (frame->total_size - frame->fp_sp_offset);
    HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
    HOST_WIDE_INT min_second_step = frame->total_size - max_first_step;
    gcc_assert (min_first_step <= max_first_step);
--- 1074,1093 ----
  static HOST_WIDE_INT
  loongarch_first_stack_step (struct loongarch_frame_info *frame)
  {
+   HOST_WIDE_INT min_first_step
+     = LARCH_STACK_ALIGN (frame->total_size - frame->fp_sp_offset);
+ 
+   /* When stack checking is required, if the sum of frame->total_size
+      and stack_check_protect is greater than stack clash protection guard
+      size, then return min_first_step.  */
+   if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
+       || (flag_stack_clash_protection
+ 	  && frame->total_size > STACK_CLASH_PROTECTION_GUARD_SIZE))
+     return min_first_step;
+ 
    if (IMM12_OPERAND (frame->total_size))
      return frame->total_size;
  
    HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
    HOST_WIDE_INT min_second_step = frame->total_size - max_first_step;
    gcc_assert (min_first_step <= max_first_step);
*************** loongarch_emit_stack_tie (void)
*** 1113,1215 ****
  static void
  loongarch_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
  {
!   /* See if we have a constant small number of probes to generate.  If so,
!      that's the easy case.  */
!   if ((TARGET_64BIT && (first + size <= 32768))
!       || (!TARGET_64BIT && (first + size <= 2048)))
!     {
!       HOST_WIDE_INT i;
  
!       /* Probe at FIRST + N * PROBE_INTERVAL for values of N from 1 until
! 	 it exceeds SIZE.  If only one probe is needed, this will not
! 	 generate any code.  Then probe at FIRST + SIZE.  */
!       for (i = PROBE_INTERVAL; i < size; i += PROBE_INTERVAL)
! 	emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
! 					 -(first + i)));
  
!       emit_stack_probe (plus_constant (Pmode, stack_pointer_rtx,
! 				       -(first + size)));
!     }
  
!   /* Otherwise, do the same as above, but in a loop.  Note that we must be
!      extra careful with variables wrapping around because we might be at
!      the very top (or the very bottom) of the address space and we have
!      to be able to handle this case properly; in particular, we use an
!      equality test for the loop condition.  */
!   else
!     {
!       HOST_WIDE_INT rounded_size;
!       rtx r13 = LARCH_PROLOGUE_TEMP (Pmode);
!       rtx r12 = LARCH_PROLOGUE_TEMP2 (Pmode);
!       rtx r14 = LARCH_PROLOGUE_TEMP3 (Pmode);
  
!       /* Sanity check for the addressing mode we're going to use.  */
!       gcc_assert (first <= 16384);
  
  
!       /* Step 1: round SIZE to the previous multiple of the interval.  */
  
!       rounded_size = ROUND_DOWN (size, PROBE_INTERVAL);
  
!       /* TEST_ADDR = SP + FIRST */
!       if (first != 0)
! 	{
! 	  emit_move_insn (r14, GEN_INT (first));
! 	  emit_insn (gen_rtx_SET (r13, gen_rtx_MINUS (Pmode,
! 						      stack_pointer_rtx,
! 						      r14)));
! 	}
!       else
! 	emit_move_insn (r13, stack_pointer_rtx);
  
!       /* Step 2: compute initial and final value of the loop counter.  */
  
!       emit_move_insn (r14, GEN_INT (PROBE_INTERVAL));
!       /* LAST_ADDR = SP + FIRST + ROUNDED_SIZE.  */
!       if (rounded_size == 0)
! 	emit_move_insn (r12, r13);
        else
  	{
  	  emit_move_insn (r12, GEN_INT (rounded_size));
! 	  emit_insn (gen_rtx_SET (r12, gen_rtx_MINUS (Pmode, r13, r12)));
! 	  /* Step 3: the loop
! 
! 	     do
! 	     {
! 	     TEST_ADDR = TEST_ADDR + PROBE_INTERVAL
! 	     probe at TEST_ADDR
! 	     }
! 	     while (TEST_ADDR != LAST_ADDR)
! 
! 	     probes at FIRST + N * PROBE_INTERVAL for values of N from 1
! 	     until it is equal to ROUNDED_SIZE.  */
  
! 	  emit_insn (gen_probe_stack_range (Pmode, r13, r13, r12, r14));
  	}
  
-       /* Step 4: probe at FIRST + SIZE if we cannot assert at compile-time
- 	 that SIZE is equal to ROUNDED_SIZE.  */
  
!       if (size != rounded_size)
  	{
! 	  if (TARGET_64BIT)
! 	    emit_stack_probe (plus_constant (Pmode, r12, rounded_size - size));
! 	  else
! 	    {
! 	      HOST_WIDE_INT i;
! 	      for (i = 2048; i < (size - rounded_size); i += 2048)
! 		{
! 		  emit_stack_probe (plus_constant (Pmode, r12, -i));
! 		  emit_insn (gen_rtx_SET (r12,
! 					  plus_constant (Pmode, r12, -2048)));
! 		}
! 	      rtx r1 = plus_constant (Pmode, r12,
! 				      -(size - rounded_size - i + 2048));
! 	      emit_stack_probe (r1);
! 	    }
  	}
      }
  
    /* Make sure nothing is scheduled before we are done.  */
    emit_insn (gen_blockage ());
  }
--- 1120,1228 ----
  static void
  loongarch_emit_probe_stack_range (HOST_WIDE_INT first, HOST_WIDE_INT size)
  {
!   HOST_WIDE_INT rounded_size;
!   HOST_WIDE_INT interval;
  
!   if (flag_stack_clash_protection)
!     interval = STACK_CLASH_PROTECTION_GUARD_SIZE;
!   else
!     interval = PROBE_INTERVAL;
  
!   rtx r12 = LARCH_PROLOGUE_TEMP2 (Pmode);
!   rtx r14 = LARCH_PROLOGUE_TEMP3 (Pmode);
  
!   size = size + first;
  
!   /* Sanity check for the addressing mode we're going to use.  */
!   gcc_assert (first <= 16384);
  
+   /* Step 1: round SIZE to the previous multiple of the interval.  */
  
!   rounded_size = ROUND_DOWN (size, interval);
  
!   /* Step 2: compute initial and final value of the loop counter.  */
  
!   emit_move_insn (r14, GEN_INT (interval));
  
!   /* If rounded_size is zero, it means that the space requested by
!      the local variable is less than the interval, and there is no
!      need to display and detect the allocated space.  */
!   if (rounded_size != 0)
!     {
!       /* Step 3: the loop
  
! 	 do
! 	 {
! 	 TEST_ADDR = TEST_ADDR + PROBE_INTERVAL
! 	 probe at TEST_ADDR
! 	 }
! 	 while (TEST_ADDR != LAST_ADDR)
! 
! 	 probes at FIRST + N * PROBE_INTERVAL for values of N from 1
! 	 until it is equal to ROUNDED_SIZE.  */
! 
!       if (rounded_size <= STACK_CLASH_MAX_UNROLL_PAGES * interval)
! 	{
! 	  for (HOST_WIDE_INT i = 0; i < rounded_size; i += interval)
! 	    {
! 	      emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				      gen_rtx_MINUS (Pmode,
! 						     stack_pointer_rtx,
! 						     r14)));
! 	      emit_move_insn (gen_rtx_MEM (Pmode,
! 					   gen_rtx_PLUS (Pmode,
! 							 stack_pointer_rtx,
! 							 const0_rtx)),
! 			      const0_rtx);
! 	      emit_insn (gen_blockage ());
! 	    }
! 	  dump_stack_clash_frame_info (PROBE_INLINE, size != rounded_size);
! 	}
        else
  	{
  	  emit_move_insn (r12, GEN_INT (rounded_size));
! 	  emit_insn (gen_rtx_SET (r12,
! 				  gen_rtx_MINUS (Pmode,
! 						 stack_pointer_rtx,
! 						 r12)));
  
! 	  emit_insn (gen_probe_stack_range (Pmode, stack_pointer_rtx,
! 					    stack_pointer_rtx, r12, r14));
! 	  emit_insn (gen_blockage ());
! 	  dump_stack_clash_frame_info (PROBE_LOOP, size != rounded_size);
  	}
+     }
+   else
+     dump_stack_clash_frame_info (NO_PROBE_SMALL_FRAME, true);
  
  
!   /* Step 4: probe at FIRST + SIZE if we cannot assert at compile-time
!      that SIZE is equal to ROUNDED_SIZE.  */
! 
!   if (size != rounded_size)
!     {
!       if (size - rounded_size >= 2048)
  	{
! 	  emit_move_insn (r14, GEN_INT (size - rounded_size));
! 	  emit_insn (gen_rtx_SET (stack_pointer_rtx,
! 				  gen_rtx_MINUS (Pmode,
! 						 stack_pointer_rtx,
! 						 r14)));
  	}
+       else
+ 	emit_insn (gen_rtx_SET (stack_pointer_rtx,
+ 				gen_rtx_PLUS (Pmode,
+ 					      stack_pointer_rtx,
+ 					      GEN_INT (rounded_size - size))));
      }
  
+   if (first)
+     {
+       emit_move_insn (r12, GEN_INT (first));
+       emit_insn (gen_rtx_SET (stack_pointer_rtx,
+ 			      gen_rtx_PLUS (Pmode,
+ 					    stack_pointer_rtx, r12)));
+     }
    /* Make sure nothing is scheduled before we are done.  */
    emit_insn (gen_blockage ());
  }
*************** loongarch_output_probe_stack_range (rtx
*** 1230,1236 ****
  
    /* TEST_ADDR = TEST_ADDR + PROBE_INTERVAL.  */
    xops[0] = reg1;
-   xops[1] = GEN_INT (-PROBE_INTERVAL);
    xops[2] = reg3;
    if (TARGET_64BIT)
      output_asm_insn ("sub.d\t%0,%0,%2", xops);
--- 1243,1248 ----
*************** loongarch_expand_prologue (void)
*** 1256,1283 ****
  {
    struct loongarch_frame_info *frame = &cfun->machine->frame;
    HOST_WIDE_INT size = frame->total_size;
-   HOST_WIDE_INT tmp;
    rtx insn;
  
    if (flag_stack_usage_info)
      current_function_static_stack_size = size;
  
-   if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
-       || flag_stack_clash_protection)
-     {
-       if (crtl->is_leaf && !cfun->calls_alloca)
- 	{
- 	  if (size > PROBE_INTERVAL && size > get_stack_check_protect ())
- 	    {
- 	      tmp = size - get_stack_check_protect ();
- 	      loongarch_emit_probe_stack_range (get_stack_check_protect (),
- 						tmp);
- 	    }
- 	}
-       else if (size > 0)
- 	loongarch_emit_probe_stack_range (get_stack_check_protect (), size);
-     }
- 
    /* Save the registers.  */
    if ((frame->mask | frame->fmask) != 0)
      {
--- 1268,1278 ----
*************** loongarch_expand_prologue (void)
*** 1290,1296 ****
        loongarch_for_each_saved_reg (size, loongarch_save_reg);
      }
  
- 
    /* Set up the frame pointer, if we're using one.  */
    if (frame_pointer_needed)
      {
--- 1285,1290 ----
*************** loongarch_expand_prologue (void)
*** 1301,1307 ****
        loongarch_emit_stack_tie ();
      }
  
!   /* Allocate the rest of the frame.  */
    if (size > 0)
      {
        if (IMM12_OPERAND (-size))
--- 1295,1339 ----
        loongarch_emit_stack_tie ();
      }
  
!   if (flag_stack_check == STATIC_BUILTIN_STACK_CHECK
!        || flag_stack_clash_protection)
!     {
!       HOST_WIDE_INT first = get_stack_check_protect ();
! 
!       if (frame->total_size == 0)
! 	{
! 	  /* do nothing.  */
! 	  dump_stack_clash_frame_info (NO_PROBE_NO_FRAME, false);
! 	  return;
! 	}
! 
!       if (crtl->is_leaf && !cfun->calls_alloca)
! 	{
! 	  HOST_WIDE_INT interval;
! 
! 	  if (flag_stack_clash_protection)
! 	    interval = STACK_CLASH_PROTECTION_GUARD_SIZE;
! 	  else
! 	    interval = PROBE_INTERVAL;
! 
! 	  if (size > interval && size > first)
! 	    loongarch_emit_probe_stack_range (first, size - first);
! 	  else
! 	    loongarch_emit_probe_stack_range (first, size);
! 	}
!       else
! 	loongarch_emit_probe_stack_range (first, size);
! 
!       if (size > 0)
! 	{
! 	  /* Describe the effect of the previous instructions.  */
! 	  insn = plus_constant (Pmode, stack_pointer_rtx, -size);
! 	  insn = gen_rtx_SET (stack_pointer_rtx, insn);
! 	  loongarch_set_frame_expr (insn);
! 	}
!       return;
!     }
! 
    if (size > 0)
      {
        if (IMM12_OPERAND (-size))
*************** loongarch_expand_prologue (void)
*** 1312,1318 ****
  	}
        else
  	{
! 	  loongarch_emit_move (LARCH_PROLOGUE_TEMP (Pmode), GEN_INT (-size));
  	  emit_insn (gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
  				    LARCH_PROLOGUE_TEMP (Pmode)));
  
--- 1344,1351 ----
  	}
        else
  	{
! 	  loongarch_emit_move (LARCH_PROLOGUE_TEMP (Pmode),
! 			       GEN_INT (-size));
  	  emit_insn (gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
  				    LARCH_PROLOGUE_TEMP (Pmode)));
  
*************** loongarch_build_integer (struct loongarc
*** 1480,1503 ****
      {
        /* The value of the lower 32 bit be loaded with one instruction.
  	 lu12i.w.  */
!       codes[0].code = UNKNOWN;
!       codes[0].method = METHOD_NORMAL;
!       codes[0].value = low_part;
        cost++;
      }
    else
      {
        /* lu12i.w + ior.  */
!       codes[0].code = UNKNOWN;
!       codes[0].method = METHOD_NORMAL;
!       codes[0].value = low_part & ~(IMM_REACH - 1);
        cost++;
        HOST_WIDE_INT iorv = low_part & (IMM_REACH - 1);
        if (iorv != 0)
  	{
! 	  codes[1].code = IOR;
! 	  codes[1].method = METHOD_NORMAL;
! 	  codes[1].value = iorv;
  	  cost++;
  	}
      }
--- 1513,1539 ----
      {
        /* The value of the lower 32 bit be loaded with one instruction.
  	 lu12i.w.  */
!       codes[cost].code = UNKNOWN;
!       codes[cost].method = METHOD_NORMAL;
!       codes[cost].value = low_part;
!       codes[cost].curr_value = low_part;
        cost++;
      }
    else
      {
        /* lu12i.w + ior.  */
!       codes[cost].code = UNKNOWN;
!       codes[cost].method = METHOD_NORMAL;
!       codes[cost].value = low_part & ~(IMM_REACH - 1);
!       codes[cost].curr_value = codes[cost].value;
        cost++;
        HOST_WIDE_INT iorv = low_part & (IMM_REACH - 1);
        if (iorv != 0)
  	{
! 	  codes[cost].code = IOR;
! 	  codes[cost].method = METHOD_NORMAL;
! 	  codes[cost].value = iorv;
! 	  codes[cost].curr_value = low_part;
  	  cost++;
  	}
      }
*************** loongarch_build_integer (struct loongarc
*** 1507,1514 ****
        bool lu32i[2] = {(value & LU32I_B) == 0, (value & LU32I_B) == LU32I_B};
        bool lu52i[2] = {(value & LU52I_B) == 0, (value & LU52I_B) == LU52I_B};
  
!       int sign31 = (value & (1UL << 31)) >> 31;
!       int sign51 = (value & (1UL << 51)) >> 51;
        /* Determine whether the upper 32 bits are sign-extended from the lower
  	 32 bits. If it is, the instructions to load the high order can be
  	 ommitted.  */
--- 1543,1550 ----
        bool lu32i[2] = {(value & LU32I_B) == 0, (value & LU32I_B) == LU32I_B};
        bool lu52i[2] = {(value & LU52I_B) == 0, (value & LU52I_B) == LU52I_B};
  
!       int sign31 = (value & (HOST_WIDE_INT_1U << 31)) >> 31;
!       int sign51 = (value & (HOST_WIDE_INT_1U << 51)) >> 51;
        /* Determine whether the upper 32 bits are sign-extended from the lower
  	 32 bits. If it is, the instructions to load the high order can be
  	 ommitted.  */
*************** loongarch_build_integer (struct loongarc
*** 1520,1538 ****
  	{
  	  codes[cost].method = METHOD_LU52I;
  	  codes[cost].value = value & LU52I_B;
  	  return cost + 1;
  	}
  
        codes[cost].method = METHOD_LU32I;
        codes[cost].value = (value & LU32I_B) | (sign51 ? LU52I_B : 0);
        cost++;
  
        /* Determine whether the 52-61 bits are sign-extended from the low order,
  	 and if not, load the 52-61 bits.  */
!       if (!lu52i[(value & (1ULL << 51)) >> 51])
  	{
  	  codes[cost].method = METHOD_LU52I;
  	  codes[cost].value = value & LU52I_B;
  	  cost++;
  	}
      }
--- 1556,1578 ----
  	{
  	  codes[cost].method = METHOD_LU52I;
  	  codes[cost].value = value & LU52I_B;
+ 	  codes[cost].curr_value = value;
  	  return cost + 1;
  	}
  
        codes[cost].method = METHOD_LU32I;
        codes[cost].value = (value & LU32I_B) | (sign51 ? LU52I_B : 0);
+       codes[cost].curr_value = (value & 0xfffffffffffff)
+ 	| (sign51 ? LU52I_B : 0);
        cost++;
  
        /* Determine whether the 52-61 bits are sign-extended from the low order,
  	 and if not, load the 52-61 bits.  */
!       if (!lu52i[(value & (HOST_WIDE_INT_1U << 51)) >> 51])
  	{
  	  codes[cost].method = METHOD_LU52I;
  	  codes[cost].value = value & LU52I_B;
+ 	  codes[cost].curr_value = value;
  	  cost++;
  	}
      }
*************** loongarch_weak_symbol_p (const_rtx x)
*** 1617,1627 ****
  bool
  loongarch_symbol_binds_local_p (const_rtx x)
  {
!   if (LABEL_REF_P (x))
!     return false;
  
!   return (SYMBOL_REF_DECL (x) ? targetm.binds_local_p (SYMBOL_REF_DECL (x))
! 			      : SYMBOL_REF_LOCAL_P (x));
  }
  
  /* Return true if rtx constants of mode MODE should be put into a small
--- 1657,1671 ----
  bool
  loongarch_symbol_binds_local_p (const_rtx x)
  {
!   if (TARGET_DIRECT_EXTERN_ACCESS)
!     return true;
  
!   if (SYMBOL_REF_P (x))
!     return (SYMBOL_REF_DECL (x)
! 	    ? targetm.binds_local_p (SYMBOL_REF_DECL (x))
! 	    : SYMBOL_REF_LOCAL_P (x));
!   else
!     return false;
  }
  
  /* Return true if rtx constants of mode MODE should be put into a small
*************** loongarch_rtx_constant_in_small_data_p (
*** 1639,1656 ****
  static enum loongarch_symbol_type
  loongarch_classify_symbol (const_rtx x)
  {
!   if (LABEL_REF_P (x))
!     return SYMBOL_GOT_DISP;
  
!   gcc_assert (SYMBOL_REF_P (x));
  
    if (SYMBOL_REF_TLS_MODEL (x))
      return SYMBOL_TLS;
  
!   if (SYMBOL_REF_P (x))
      return SYMBOL_GOT_DISP;
  
!   return SYMBOL_GOT_DISP;
  }
  
  /* Return true if X is a symbolic constant.  If it is,
--- 1683,1737 ----
  static enum loongarch_symbol_type
  loongarch_classify_symbol (const_rtx x)
  {
!   enum loongarch_symbol_type pcrel =
!     TARGET_CMODEL_EXTREME ? SYMBOL_PCREL64 : SYMBOL_PCREL;
  
!   if (!SYMBOL_REF_P (x))
!     return pcrel;
  
    if (SYMBOL_REF_TLS_MODEL (x))
      return SYMBOL_TLS;
  
!   if (!loongarch_symbol_binds_local_p (x))
      return SYMBOL_GOT_DISP;
  
!   tree t = SYMBOL_REF_DECL (x);
!   if (!t)
!     return pcrel;
! 
!   t = lookup_attribute ("model", DECL_ATTRIBUTES (t));
!   if (!t)
!     return pcrel;
! 
!   t = TREE_VALUE (TREE_VALUE (t));
! 
!   /* loongarch_handle_model_attribute should reject other values.  */
!   gcc_assert (TREE_CODE (t) == STRING_CST);
! 
!   const char *model = TREE_STRING_POINTER (t);
!   if (strcmp (model, "normal") == 0)
!     return SYMBOL_PCREL;
!   if (strcmp (model, "extreme") == 0)
!     return SYMBOL_PCREL64;
! 
!   /* loongarch_handle_model_attribute should reject unknown model
!      name.  */
!   gcc_unreachable ();
! }
! 
! /* Classify the base of symbolic expression X, given that X appears in
!    context CONTEXT.  */
! 
! static enum loongarch_symbol_type
! loongarch_classify_symbolic_expression (rtx x)
! {
!   rtx offset;
! 
!   split_const (x, &x, &offset);
!   if (UNSPEC_ADDRESS_P (x))
!     return UNSPEC_ADDRESS_TYPE (x);
! 
!   return loongarch_classify_symbol (x);
  }
  
  /* Return true if X is a symbolic constant.  If it is,
*************** loongarch_symbolic_constant_p (rtx x, en
*** 1683,1691 ****
       relocations.  */
    switch (*symbol_type)
      {
!     case SYMBOL_GOT_DISP:
      case SYMBOL_TLSGD:
      case SYMBOL_TLSLDM:
      case SYMBOL_TLS:
        return false;
      }
--- 1764,1779 ----
       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);
+ 
+     case SYMBOL_GOT_DISP:
      case SYMBOL_TLS:
        return false;
      }
*************** loongarch_symbol_insns (enum loongarch_s
*** 1702,1715 ****
      case SYMBOL_GOT_DISP:
        /* The constant will have to be loaded from the GOT before it
  	 is used in an address.  */
!       if (mode != MAX_MACHINE_MODE)
  	return 0;
  
        return 3;
  
      case SYMBOL_TLSGD:
      case SYMBOL_TLSLDM:
!       return 1;
  
      case SYMBOL_TLS:
        /* We don't treat a bare TLS symbol as a constant.  */
--- 1790,1811 ----
      case SYMBOL_GOT_DISP:
        /* The constant will have to be loaded from the GOT before it
  	 is used in an address.  */
!       if (!TARGET_EXPLICIT_RELOCS && mode != MAX_MACHINE_MODE)
  	return 0;
  
        return 3;
  
+     case SYMBOL_PCREL:
+     case SYMBOL_TLS_IE:
+     case SYMBOL_TLS_LE:
+       return 2;
+ 
      case SYMBOL_TLSGD:
      case SYMBOL_TLSLDM:
!       return 3;
! 
!     case SYMBOL_PCREL64:
!       return 5;
  
      case SYMBOL_TLS:
        /* We don't treat a bare TLS symbol as a constant.  */
*************** loongarch_valid_offset_p (rtx x, machine
*** 1815,1820 ****
--- 1911,1995 ----
    return true;
  }
  
+ /* Should a symbol of type SYMBOL_TYPE should be split in two or more?  */
+ 
+ bool
+ loongarch_split_symbol_type (enum loongarch_symbol_type symbol_type)
+ {
+   switch (symbol_type)
+     {
+     case SYMBOL_PCREL:
+     case SYMBOL_PCREL64:
+     case SYMBOL_GOT_DISP:
+     case SYMBOL_TLS_IE:
+     case SYMBOL_TLS_LE:
+     case SYMBOL_TLSGD:
+     case SYMBOL_TLSLDM:
+       return true;
+ 
+     case SYMBOL_TLS:
+       return false;
+ 
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ /* Return true if a LO_SUM can address a value of mode MODE when the
+    LO_SUM symbol has type SYMBOL_TYPE.  */
+ 
+ static bool
+ loongarch_valid_lo_sum_p (enum loongarch_symbol_type symbol_type,
+ 			  machine_mode mode, rtx x)
+ {
+   int align, size;
+ 
+   /* Check that symbols of type SYMBOL_TYPE can be used to access values
+      of mode MODE.  */
+   if (loongarch_symbol_insns (symbol_type, mode) == 0)
+     return false;
+ 
+   /* Check that there is a known low-part relocation.  */
+   if (!loongarch_split_symbol_type (symbol_type))
+     return false;
+ 
+   /* We can't tell size or alignment when we have BLKmode, so try extracing a
+      decl from the symbol if possible.  */
+   if (mode == BLKmode)
+     {
+       rtx offset;
+ 
+       /* Extract the symbol from the LO_SUM operand, if any.  */
+       split_const (x, &x, &offset);
+ 
+       /* Might be a CODE_LABEL.  We can compute align but not size for that,
+ 	 so don't bother trying to handle it.  */
+       if (!SYMBOL_REF_P (x))
+ 	return false;
+ 
+       /* Use worst case assumptions if we don't have a SYMBOL_REF_DECL.  */
+       align = (SYMBOL_REF_DECL (x)
+ 	       ? DECL_ALIGN (SYMBOL_REF_DECL (x))
+ 	       : 1);
+       size = (SYMBOL_REF_DECL (x) && DECL_SIZE (SYMBOL_REF_DECL (x))
+ 	      ? tree_to_uhwi (DECL_SIZE (SYMBOL_REF_DECL (x)))
+ 	      : 2*BITS_PER_WORD);
+     }
+   else
+     {
+       align = GET_MODE_ALIGNMENT (mode);
+       size = GET_MODE_BITSIZE (mode);
+     }
+ 
+   /* We may need to split multiword moves, so make sure that each word
+      can be accessed without inducing a carry.  */
+   if (size > BITS_PER_WORD
+       && (!TARGET_STRICT_ALIGN || size > align))
+     return false;
+ 
+   return true;
+ }
+ 
  static bool
  loongarch_valid_index_p (struct loongarch_address_info *info, rtx x,
  			  machine_mode mode, bool strict_p)
*************** loongarch_classify_address (struct loong
*** 1881,1886 ****
--- 2056,2086 ----
        info->offset = XEXP (x, 1);
        return (loongarch_valid_base_register_p (info->reg, mode, strict_p)
  	      && loongarch_valid_offset_p (info->offset, mode));
+ 
+     case LO_SUM:
+       info->type = ADDRESS_LO_SUM;
+       info->reg = XEXP (x, 0);
+       info->offset = XEXP (x, 1);
+       /* We have to trust the creator of the LO_SUM to do something vaguely
+ 	 sane.  Target-independent code that creates a LO_SUM should also
+ 	 create and verify the matching HIGH.  Target-independent code that
+ 	 adds an offset to a LO_SUM must prove that the offset will not
+ 	 induce a carry.  Failure to do either of these things would be
+ 	 a bug, and we are not required to check for it here.  The MIPS
+ 	 backend itself should only create LO_SUMs for valid symbolic
+ 	 constants, with the high part being either a HIGH or a copy
+ 	 of _gp. */
+       info->symbol_type
+ 	= loongarch_classify_symbolic_expression (info->offset);
+       return (loongarch_valid_base_register_p (info->reg, mode, strict_p)
+ 	      && loongarch_valid_lo_sum_p (info->symbol_type, mode,
+ 					   info->offset));
+     case CONST_INT:
+       /* Small-integer addresses don't occur very often, but they
+ 	 are legitimate if $r0 is a valid base register.  */
+       info->type = ADDRESS_CONST_INT;
+       return IMM12_OPERAND (INTVAL (x));
+ 
      default:
        return false;
      }
*************** loongarch_address_insns (rtx x, machine_
*** 1937,1950 ****
      switch (addr.type)
        {
        case ADDRESS_REG:
- 	return factor;
- 
        case ADDRESS_REG_REG:
- 	return factor;
- 
        case ADDRESS_CONST_INT:
  	return factor;
  
        case ADDRESS_SYMBOLIC:
  	return factor * loongarch_symbol_insns (addr.symbol_type, mode);
        }
--- 2137,2149 ----
      switch (addr.type)
        {
        case ADDRESS_REG:
        case ADDRESS_REG_REG:
        case ADDRESS_CONST_INT:
  	return factor;
  
+       case ADDRESS_LO_SUM:
+ 	return factor + 1;
+ 
        case ADDRESS_SYMBOLIC:
  	return factor * loongarch_symbol_insns (addr.symbol_type, mode);
        }
*************** loongarch_signed_immediate_p (unsigned H
*** 1972,1978 ****
    return loongarch_unsigned_immediate_p (x, bits, shift);
  }
  
! /* Return true if X is a legitimate address with a 12-bit offset.
     MODE is the mode of the value being accessed.  */
  
  bool
--- 2171,2178 ----
    return loongarch_unsigned_immediate_p (x, bits, shift);
  }
  
! /* Return true if X is a legitimate address with a 12-bit offset
!    or addr.type is ADDRESS_LO_SUM.
     MODE is the mode of the value being accessed.  */
  
  bool
*************** loongarch_12bit_offset_address_p (rtx x,
*** 1981,1989 ****
    struct loongarch_address_info addr;
  
    return (loongarch_classify_address (&addr, x, mode, false)
! 	  && addr.type == ADDRESS_REG
! 	  && CONST_INT_P (addr.offset)
! 	  && LARCH_U12BIT_OFFSET_P (INTVAL (addr.offset)));
  }
  
  /* Return true if X is a legitimate address with a 14-bit offset shifted 2.
--- 2181,2190 ----
    struct loongarch_address_info addr;
  
    return (loongarch_classify_address (&addr, x, mode, false)
! 	  && ((addr.type == ADDRESS_REG
! 	       && CONST_INT_P (addr.offset)
! 	       && LARCH_12BIT_OFFSET_P (INTVAL (addr.offset)))
! 	      || addr.type == ADDRESS_LO_SUM));
  }
  
  /* Return true if X is a legitimate address with a 14-bit offset shifted 2.
*************** loongarch_14bit_shifted_offset_address_p
*** 2001,2006 ****
--- 2202,2210 ----
  	  && LARCH_SHIFT_2_OFFSET_P (INTVAL (addr.offset)));
  }
  
+ /* Return true if X is a legitimate address with base and index.
+    MODE is the mode of the value being accessed.  */
+ 
  bool
  loongarch_base_index_address_p (rtx x, machine_mode mode)
  {
*************** loongarch_const_insns (rtx x)
*** 2022,2027 ****
--- 2226,2239 ----
  
    switch (GET_CODE (x))
      {
+     case HIGH:
+       if (!loongarch_symbolic_constant_p (XEXP (x, 0), &symbol_type)
+ 	  || !loongarch_split_symbol_type (symbol_type))
+ 	return 0;
+ 
+       /* This is simply a PCALAU12I.  */
+       return 1;
+ 
      case CONST_INT:
        return loongarch_integer_cost (INTVAL (x));
  
*************** loongarch_split_const_insns (rtx x)
*** 2082,2087 ****
--- 2294,2301 ----
    return low + high;
  }
  
+ static bool loongarch_split_move_insn_p (rtx dest, rtx src);
+ 
  /* Return the number of instructions needed to implement INSN,
     given that it loads from or stores to MEM.  */
  
*************** loongarch_load_store_insns (rtx mem, rtx
*** 2110,2116 ****
  
  /* Return true if we need to trap on division by zero.  */
  
! static bool
  loongarch_check_zero_div_p (void)
  {
    /* if -m[no-]check-zero-division is given explicitly.  */
--- 2324,2330 ----
  
  /* Return true if we need to trap on division by zero.  */
  
! bool
  loongarch_check_zero_div_p (void)
  {
    /* if -m[no-]check-zero-division is given explicitly.  */
*************** loongarch_unspec_address (rtx address, e
*** 2199,2204 ****
--- 2413,2427 ----
    return loongarch_unspec_address_offset (base, offset, symbol_type);
  }
  
+ /* Emit an instruction of the form (set TARGET SRC).  */
+ 
+ static rtx
+ loongarch_emit_set (rtx target, rtx src)
+ {
+   emit_insn (gen_rtx_SET (target, src));
+   return target;
+ }
+ 
  /* If OP is an UNSPEC address, return the address to which it refers,
     otherwise return OP itself.  */
  
*************** loongarch_call_tls_get_addr (rtx sym, en
*** 2280,2285 ****
--- 2503,2509 ----
  {
    rtx loc, a0;
    rtx_insn *insn;
+   rtx tmp = gen_reg_rtx (Pmode);
  
    a0 = gen_rtx_REG (Pmode, GP_ARG_FIRST);
  
*************** loongarch_call_tls_get_addr (rtx sym, en
*** 2290,2304 ****
  
    start_sequence ();
  
!   if (type == SYMBOL_TLSLDM)
!     emit_insn (loongarch_got_load_tls_ld (a0, loc));
!   else if (type == SYMBOL_TLSGD)
!     emit_insn (loongarch_got_load_tls_gd (a0, loc));
    else
!     gcc_unreachable ();
  
-   insn = emit_call_insn (gen_call_value_internal (v0, loongarch_tls_symbol,
- 						  const0_rtx));
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
    insn = get_insns ();
--- 2514,2642 ----
  
    start_sequence ();
  
!   if (TARGET_EXPLICIT_RELOCS)
!     {
!       /* Split tls symbol to high and low.  */
!       rtx high = gen_rtx_HIGH (Pmode, copy_rtx (loc));
!       high = loongarch_force_temporary (tmp, high);
! 
!       if (TARGET_CMODEL_EXTREME)
! 	{
! 	  gcc_assert (TARGET_EXPLICIT_RELOCS);
! 
! 	  rtx tmp1 = gen_reg_rtx (Pmode);
! 	  emit_insn (gen_tls_low (Pmode, tmp1, gen_rtx_REG (Pmode, 0), loc));
! 	  emit_insn (gen_lui_h_lo20 (tmp1, tmp1, loc));
! 	  emit_insn (gen_lui_h_hi12 (tmp1, tmp1, loc));
! 	  emit_move_insn (a0, gen_rtx_PLUS (Pmode, high, tmp1));
! 	}
!       else
! 	emit_insn (gen_tls_low (Pmode, a0, high, loc));
!     }
    else
!     {
!       if (type == SYMBOL_TLSLDM)
! 	emit_insn (loongarch_got_load_tls_ld (a0, loc));
!       else if (type == SYMBOL_TLSGD)
! 	emit_insn (loongarch_got_load_tls_gd (a0, loc));
!       else
! 	gcc_unreachable ();
!     }
! 
!   if (flag_plt)
!     {
!       switch (la_opt_cmodel)
! 	{
! 	case CMODEL_NORMAL:
! 	  insn = emit_call_insn (gen_call_value_internal (v0,
! 							  loongarch_tls_symbol,
! 							  const0_rtx));
! 	  break;
! 
! 	case CMODEL_MEDIUM:
! 	    {
! 	      rtx reg = gen_reg_rtx (Pmode);
! 	      if (TARGET_EXPLICIT_RELOCS)
! 		{
! 		  emit_insn (gen_pcalau12i (Pmode, reg, loongarch_tls_symbol));
! 		  rtx call = gen_call_value_internal_1 (Pmode, v0, reg,
! 							loongarch_tls_symbol,
! 							const0_rtx);
! 		  insn = emit_call_insn (call);
! 		}
! 	      else
! 		{
! 		  emit_move_insn (reg, loongarch_tls_symbol);
! 		  insn = emit_call_insn (gen_call_value_internal (v0,
! 								  reg,
! 								  const0_rtx));
! 		}
! 	      break;
! 	    }
! 
! 	/* code model extreme not support plt.  */
! 	case CMODEL_EXTREME:
! 	case CMODEL_LARGE:
! 	case CMODEL_TINY:
! 	case CMODEL_TINY_STATIC:
! 	default:
! 	  gcc_unreachable ();
! 	}
!     }
!   else
!     {
!       rtx dest = gen_reg_rtx (Pmode);
! 
!       switch (la_opt_cmodel)
! 	{
! 	case CMODEL_NORMAL:
! 	case CMODEL_MEDIUM:
! 	    {
! 	      if (TARGET_EXPLICIT_RELOCS)
! 		{
! 		  rtx high = gen_reg_rtx (Pmode);
! 		  loongarch_emit_move (high,
! 				       gen_rtx_HIGH (Pmode,
! 						     loongarch_tls_symbol));
! 		  emit_insn (gen_ld_from_got (Pmode, dest, high,
! 					      loongarch_tls_symbol));
! 		}
! 	      else
! 		loongarch_emit_move (dest, loongarch_tls_symbol);
! 	      break;
! 	    }
! 
! 	case CMODEL_EXTREME:
! 	    {
! 	      gcc_assert (TARGET_EXPLICIT_RELOCS);
! 
! 	      rtx tmp1 = gen_reg_rtx (Pmode);
! 	      rtx high = gen_reg_rtx (Pmode);
! 
! 	      loongarch_emit_move (high,
! 				   gen_rtx_HIGH (Pmode, loongarch_tls_symbol));
! 	      loongarch_emit_move (tmp1, gen_rtx_LO_SUM (Pmode,
! 							 gen_rtx_REG (Pmode, 0),
! 							 loongarch_tls_symbol));
! 	      emit_insn (gen_lui_h_lo20 (tmp1, tmp1, loongarch_tls_symbol));
! 	      emit_insn (gen_lui_h_hi12 (tmp1, tmp1, loongarch_tls_symbol));
! 	      loongarch_emit_move (dest,
! 				   gen_rtx_MEM (Pmode,
! 						gen_rtx_PLUS (Pmode,
! 							      high, tmp1)));
! 	    }
! 	  break;
! 
! 	case CMODEL_LARGE:
! 	case CMODEL_TINY:
! 	case CMODEL_TINY_STATIC:
! 	default:
! 	  gcc_unreachable ();
! 	}
! 
!       insn = emit_call_insn (gen_call_value_internal (v0, dest, const0_rtx));
!     }
  
    RTL_CONST_CALL_P (insn) = 1;
    use_reg (&CALL_INSN_FUNCTION_USAGE (insn), a0);
    insn = get_insns ();
*************** loongarch_call_tls_get_addr (rtx sym, en
*** 2315,2321 ****
  static rtx
  loongarch_legitimize_tls_address (rtx loc)
  {
!   rtx dest, tp, tmp;
    enum tls_model model = SYMBOL_REF_TLS_MODEL (loc);
    rtx_insn *insn;
  
--- 2653,2659 ----
  static rtx
  loongarch_legitimize_tls_address (rtx loc)
  {
!   rtx dest, tp, tmp, tmp1, tmp2, tmp3;
    enum tls_model model = SYMBOL_REF_TLS_MODEL (loc);
    rtx_insn *insn;
  
*************** loongarch_legitimize_tls_address (rtx lo
*** 2336,2356 ****
        break;
  
      case TLS_MODEL_INITIAL_EXEC:
!       /* la.tls.ie; tp-relative add  */
!       tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM);
!       tmp = gen_reg_rtx (Pmode);
!       emit_insn (loongarch_got_load_tls_ie (tmp, loc));
!       dest = gen_reg_rtx (Pmode);
!       emit_insn (gen_add3_insn (dest, tmp, tp));
        break;
  
      case TLS_MODEL_LOCAL_EXEC:
!       /* la.tls.le; tp-relative add  */
!       tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM);
!       tmp = gen_reg_rtx (Pmode);
!       emit_insn (loongarch_got_load_tls_le (tmp, loc));
!       dest = gen_reg_rtx (Pmode);
!       emit_insn (gen_add3_insn (dest, tmp, tp));
        break;
  
      default:
--- 2674,2741 ----
        break;
  
      case TLS_MODEL_INITIAL_EXEC:
! 	{
! 	  /* la.tls.ie; tp-relative add.  */
! 	  tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM);
! 	  tmp1 = gen_reg_rtx (Pmode);
! 	  dest = gen_reg_rtx (Pmode);
! 	  if (TARGET_EXPLICIT_RELOCS)
! 	    {
! 	      tmp2 = loongarch_unspec_address (loc, SYMBOL_TLS_IE);
! 	      tmp3 = gen_reg_rtx (Pmode);
! 	      rtx high = gen_rtx_HIGH (Pmode, copy_rtx (tmp2));
! 	      high = loongarch_force_temporary (tmp3, high);
! 
! 	      if (TARGET_CMODEL_EXTREME)
! 		{
! 		  gcc_assert (TARGET_EXPLICIT_RELOCS);
! 
! 		  rtx tmp3 = gen_reg_rtx (Pmode);
! 		  emit_insn (gen_tls_low (Pmode, tmp3,
! 					  gen_rtx_REG (Pmode, 0), tmp2));
! 		  emit_insn (gen_lui_h_lo20 (tmp3, tmp3, tmp2));
! 		  emit_insn (gen_lui_h_hi12 (tmp3, tmp3, tmp2));
! 		  emit_move_insn (tmp1,
! 				  gen_rtx_MEM (Pmode,
! 					       gen_rtx_PLUS (Pmode,
! 							     high, tmp3)));
! 		}
! 	      else
! 		emit_insn (gen_ld_from_got (Pmode, tmp1, high, tmp2));
! 	    }
! 	  else
! 	    emit_insn (loongarch_got_load_tls_ie (tmp1, loc));
! 	  emit_insn (gen_add3_insn (dest, tmp1, tp));
! 	}
        break;
  
      case TLS_MODEL_LOCAL_EXEC:
! 	{
! 	  /* la.tls.le; tp-relative add.  */
! 	  tp = gen_rtx_REG (Pmode, THREAD_POINTER_REGNUM);
! 	  tmp1 = gen_reg_rtx (Pmode);
! 	  dest = gen_reg_rtx (Pmode);
! 
! 	  if (TARGET_EXPLICIT_RELOCS)
! 	    {
! 	      tmp2 = loongarch_unspec_address (loc, SYMBOL_TLS_LE);
! 	      tmp3 = gen_reg_rtx (Pmode);
! 	      rtx high = gen_rtx_HIGH (Pmode, copy_rtx (tmp2));
! 	      high = loongarch_force_temporary (tmp3, high);
! 	      emit_insn (gen_ori_l_lo12 (Pmode, tmp1, high, tmp2));
! 
! 	      if (TARGET_CMODEL_EXTREME)
! 		{
! 		  gcc_assert (TARGET_EXPLICIT_RELOCS);
! 
! 		  emit_insn (gen_lui_h_lo20 (tmp1, tmp1, tmp2));
! 		  emit_insn (gen_lui_h_hi12 (tmp1, tmp1, tmp2));
! 		}
! 	    }
! 	  else
! 	    emit_insn (loongarch_got_load_tls_le (tmp1, loc));
! 	  emit_insn (gen_add3_insn (dest, tmp1, tp));
! 	}
        break;
  
      default:
*************** loongarch_legitimize_call_address (rtx a
*** 2368,2373 ****
--- 2753,2776 ----
        loongarch_emit_move (reg, addr);
        return reg;
      }
+ 
+   enum loongarch_symbol_type symbol_type = loongarch_classify_symbol (addr);
+ 
+   /* Split function call insn 'bl sym' or 'bl %plt(sym)' to :
+      pcalau12i $rd, %pc_hi20(sym)
+      jr $rd, %pc_lo12(sym).  */
+ 
+   if (TARGET_CMODEL_MEDIUM
+       && TARGET_EXPLICIT_RELOCS
+       && (SYMBOL_REF_P (addr) || LABEL_REF_P (addr))
+       && (symbol_type == SYMBOL_PCREL
+ 	  || (symbol_type == SYMBOL_GOT_DISP && flag_plt)))
+     {
+       rtx reg = gen_reg_rtx (Pmode);
+       emit_insn (gen_pcalau12i (Pmode, reg, addr));
+       return gen_rtx_LO_SUM (Pmode, reg, addr);
+     }
+ 
    return addr;
  }
  
*************** loongarch_force_address (rtx x, machine_
*** 2399,2404 ****
--- 2802,2908 ----
    return x;
  }
  
+ static bool
+ loongarch_symbol_extreme_p (enum loongarch_symbol_type type)
+ {
+   switch (type)
+     {
+       case SYMBOL_PCREL:
+ 	return false;
+       case SYMBOL_PCREL64:
+ 	return true;
+       default:
+ 	return TARGET_CMODEL_EXTREME;
+     }
+ }
+ 
+ /* If MODE is MAX_MACHINE_MODE, ADDR appears as a move operand, otherwise
+    it appears in a MEM of that mode.  Return true if ADDR is a legitimate
+    constant in that context and can be split into high and low parts.
+    If so, and if LOW_OUT is nonnull, emit the high part and store the
+    low part in *LOW_OUT.  Leave *LOW_OUT unchanged otherwise.
+ 
+    Return false if build with '-mno-explicit-relocs'.
+ 
+    TEMP is as for loongarch_force_temporary and is used to load the high
+    part into a register.
+ 
+    When MODE is MAX_MACHINE_MODE, the low part is guaranteed to be
+    a legitimize SET_SRC for an .md pattern, otherwise the low part
+    is guaranteed to be a legitimate address for mode MODE.  */
+ 
+ bool
+ loongarch_split_symbol (rtx temp, rtx addr, machine_mode mode, rtx *low_out)
+ {
+   enum loongarch_symbol_type symbol_type;
+ 
+   /* If build with '-mno-explicit-relocs', don't split symbol.  */
+   if (!TARGET_EXPLICIT_RELOCS)
+     return false;
+ 
+   if ((GET_CODE (addr) == HIGH && mode == MAX_MACHINE_MODE)
+       || !loongarch_symbolic_constant_p (addr, &symbol_type)
+       || loongarch_symbol_insns (symbol_type, mode) == 0
+       || !loongarch_split_symbol_type (symbol_type))
+     return false;
+ 
+   rtx high, temp1 = NULL;
+ 
+   if (temp == NULL)
+     temp = gen_reg_rtx (Pmode);
+ 
+   /* Get the 12-31 bits of the address.  */
+   high = gen_rtx_HIGH (Pmode, copy_rtx (addr));
+   high = loongarch_force_temporary (temp, high);
+ 
+   if (loongarch_symbol_extreme_p (symbol_type) && can_create_pseudo_p ())
+     {
+       gcc_assert (TARGET_EXPLICIT_RELOCS);
+ 
+       temp1 = gen_reg_rtx (Pmode);
+       emit_move_insn (temp1, gen_rtx_LO_SUM (Pmode, gen_rtx_REG (Pmode, 0),
+ 					     addr));
+       emit_insn (gen_lui_h_lo20 (temp1, temp1, addr));
+       emit_insn (gen_lui_h_hi12 (temp1, temp1, addr));
+     }
+ 
+   if (low_out)
+     switch (symbol_type)
+       {
+       case SYMBOL_PCREL64:
+ 	if (can_create_pseudo_p ())
+ 	  {
+ 	    *low_out = gen_rtx_PLUS (Pmode, high, temp1);
+ 	    break;
+ 	  }
+ 	/* fall through */
+       case SYMBOL_PCREL:
+ 	*low_out = gen_rtx_LO_SUM (Pmode, high, addr);
+ 	break;
+ 
+       case SYMBOL_GOT_DISP:
+ 	/* SYMBOL_GOT_DISP symbols are loaded from the GOT.  */
+ 	{
+ 	  if (TARGET_CMODEL_EXTREME && can_create_pseudo_p ())
+ 	    *low_out = gen_rtx_MEM (Pmode, gen_rtx_PLUS (Pmode, high, temp1));
+ 	  else
+ 	    {
+ 	      rtx low = gen_rtx_LO_SUM (Pmode, high, addr);
+ 	      rtx mem = gen_rtx_MEM (Pmode, low);
+ 	      *low_out = gen_rtx_UNSPEC (Pmode, gen_rtvec (1, mem),
+ 					 UNSPEC_LOAD_FROM_GOT);
+ 	    }
+ 
+ 	  break;
+ 	}
+ 
+       default:
+ 	gcc_unreachable ();
+       }
+ 
+   return true;
+ }
+ 
  /* This function is used to implement LEGITIMIZE_ADDRESS.  If X can
     be legitimized in a way that the generic machinery might not expect,
     return a new address, otherwise return NULL.  MODE is the mode of
*************** loongarch_legitimize_address (rtx x, rtx
*** 2414,2419 ****
--- 2918,2927 ----
    if (loongarch_tls_symbol_p (x))
      return loongarch_legitimize_tls_address (x);
  
+   /* See if the address can split into a high part and a LO_SUM.  */
+   if (loongarch_split_symbol (NULL, x, mode, &addr))
+     return loongarch_force_address (addr, mode);
+ 
    /* Handle BASE + OFFSET using loongarch_add_offset.  */
    loongarch_split_plus (x, &base, &offset);
    if (offset != 0)
*************** loongarch_move_integer (rtx temp, rtx de
*** 2453,2458 ****
--- 2961,2969 ----
        else
  	x = force_reg (mode, x);
  
+       set_unique_reg_note (get_last_insn (), REG_EQUAL,
+ 			   GEN_INT (codes[i-1].curr_value));
+ 
        switch (codes[i].method)
  	{
  	case METHOD_NORMAL:
*************** loongarch_move_integer (rtx temp, rtx de
*** 2460,2481 ****
  			      GEN_INT (codes[i].value));
  	  break;
  	case METHOD_LU32I:
! 	  emit_insn (
! 	    gen_rtx_SET (x,
! 			 gen_rtx_IOR (DImode,
! 				      gen_rtx_ZERO_EXTEND (
! 					DImode, gen_rtx_SUBREG (SImode, x, 0)),
! 				      GEN_INT (codes[i].value))));
  	  break;
  	case METHOD_LU52I:
! 	  emit_insn (gen_lu52i_d (x, x, GEN_INT (0xfffffffffffff),
! 				  GEN_INT (codes[i].value)));
! 	  break;
! 	case METHOD_INSV:
! 	  emit_insn (
! 	    gen_rtx_SET (gen_rtx_ZERO_EXTRACT (DImode, x, GEN_INT (20),
! 					       GEN_INT (32)),
! 			 gen_rtx_REG (DImode, 0)));
  	  break;
  	default:
  	  gcc_unreachable ();
--- 2971,2987 ----
  			      GEN_INT (codes[i].value));
  	  break;
  	case METHOD_LU32I:
! 	  gcc_assert (mode == DImode);
! 	  x = gen_rtx_IOR (DImode,
! 			   gen_rtx_ZERO_EXTEND (DImode,
! 						gen_rtx_SUBREG (SImode, x, 0)),
! 			   GEN_INT (codes[i].value));
  	  break;
  	case METHOD_LU52I:
! 	  gcc_assert (mode == DImode);
! 	  x = gen_rtx_IOR (DImode,
! 			   gen_rtx_AND (DImode, x, GEN_INT (0xfffffffffffff)),
! 			   GEN_INT (codes[i].value));
  	  break;
  	default:
  	  gcc_unreachable ();
*************** loongarch_legitimize_const_move (machine
*** 2501,2506 ****
--- 3007,3019 ----
        return;
      }
  
+   /* Split moves of symbolic constants into high and low.  */
+   if (loongarch_split_symbol (dest, src, MAX_MACHINE_MODE, &src))
+     {
+       loongarch_emit_set (dest, src);
+       return;
+     }
+ 
    /* Generate the appropriate access sequences for TLS symbols.  */
    if (loongarch_tls_symbol_p (src))
      {
*************** loongarch_split_move (rtx dest, rtx src,
*** 3243,3263 ****
  
  /* Return true if a move from SRC to DEST in INSN should be split.  */
  
! bool
  loongarch_split_move_insn_p (rtx dest, rtx src)
  {
    return loongarch_split_move_p (dest, src);
  }
  
- /* Split a move from SRC to DEST in INSN, given that
-    loongarch_split_move_insn_p holds.  */
- 
- void
- loongarch_split_move_insn (rtx dest, rtx src, rtx insn)
- {
-   loongarch_split_move (dest, src, insn);
- }
- 
  /* Implement TARGET_CONSTANT_ALIGNMENT.  */
  
  static HOST_WIDE_INT
--- 3756,3767 ----
  
  /* Return true if a move from SRC to DEST in INSN should be split.  */
  
! static bool
  loongarch_split_move_insn_p (rtx dest, rtx src)
  {
    return loongarch_split_move_p (dest, src);
  }
  
  /* Implement TARGET_CONSTANT_ALIGNMENT.  */
  
  static HOST_WIDE_INT
*************** loongarch_output_move (rtx dest, rtx src
*** 3371,3382 ****
  	    case 2:
  	      return "st.h\t%z1,%0";
  	    case 4:
! 	      if (const_arith_operand (offset, Pmode))
  		return "st.w\t%z1,%0";
  	      else
  		return "stptr.w\t%z1,%0";
  	    case 8:
! 	      if (const_arith_operand (offset, Pmode))
  		return "st.d\t%z1,%0";
  	      else
  		return "stptr.d\t%z1,%0";
--- 3875,3890 ----
  	    case 2:
  	      return "st.h\t%z1,%0";
  	    case 4:
! 	      /* Matching address type with a 12bit offset and
! 		 ADDRESS_LO_SUM.  */
! 	      if (const_arith_operand (offset, Pmode)
! 		  || GET_CODE (offset) == LO_SUM)
  		return "st.w\t%z1,%0";
  	      else
  		return "stptr.w\t%z1,%0";
  	    case 8:
! 	      if (const_arith_operand (offset, Pmode)
! 		  || GET_CODE (offset) == LO_SUM)
  		return "st.d\t%z1,%0";
  	      else
  		return "stptr.d\t%z1,%0";
*************** loongarch_output_move (rtx dest, rtx src
*** 3409,3420 ****
  	    case 2:
  	      return "ld.hu\t%0,%1";
  	    case 4:
! 	      if (const_arith_operand (offset, Pmode))
  		return "ld.w\t%0,%1";
  	      else
  		return "ldptr.w\t%0,%1";
  	    case 8:
! 	      if (const_arith_operand (offset, Pmode))
  		return "ld.d\t%0,%1";
  	      else
  		return "ldptr.d\t%0,%1";
--- 3917,3932 ----
  	    case 2:
  	      return "ld.hu\t%0,%1";
  	    case 4:
! 	      /* Matching address type with a 12bit offset and
! 		 ADDRESS_LO_SUM.  */
! 	      if (const_arith_operand (offset, Pmode)
! 		  || GET_CODE (offset) == LO_SUM)
  		return "ld.w\t%0,%1";
  	      else
  		return "ldptr.w\t%0,%1";
  	    case 8:
! 	      if (const_arith_operand (offset, Pmode)
! 		  || GET_CODE (offset) == LO_SUM)
  		return "ld.d\t%0,%1";
  	      else
  		return "ldptr.d\t%0,%1";
*************** loongarch_output_move (rtx dest, rtx src
*** 3423,3428 ****
--- 3935,3955 ----
  	    }
  	}
  
+       if (src_code == HIGH)
+ 	{
+ 	  rtx offset, x;
+ 	  split_const (XEXP (src, 0), &x, &offset);
+ 	  enum loongarch_symbol_type type = SYMBOL_PCREL;
+ 
+ 	  if (UNSPEC_ADDRESS_P (x))
+ 	     type = UNSPEC_ADDRESS_TYPE (x);
+ 
+ 	  if (type == SYMBOL_TLS_LE)
+ 	    return "lu12i.w\t%0,%h1";
+ 	  else
+ 	    return "pcalau12i\t%0,%h1";
+ 	}
+ 
        if (src_code == CONST_INT)
  	{
  	  if (LU12I_INT (src))
*************** loongarch_output_move (rtx dest, rtx src
*** 3436,3491 ****
  	  else
  	    gcc_unreachable ();
  	}
  
!       if (symbolic_operand (src, VOIDmode))
! 	{
! 	  if ((TARGET_CMODEL_TINY && (!loongarch_global_symbol_p (src)
! 				      || loongarch_symbol_binds_local_p (src)))
! 	      || (TARGET_CMODEL_TINY_STATIC && !loongarch_weak_symbol_p (src)))
! 	    {
! 	      /* The symbol must be aligned to 4 byte.  */
! 	      unsigned int align;
! 
! 	      if (LABEL_REF_P (src))
! 		align = 32 /* Whatever.  */;
! 	      else if (CONSTANT_POOL_ADDRESS_P (src))
! 		align = GET_MODE_ALIGNMENT (get_pool_mode (src));
! 	      else if (TREE_CONSTANT_POOL_ADDRESS_P (src))
! 		{
! 		  tree exp = SYMBOL_REF_DECL (src);
! 		  align = TYPE_ALIGN (TREE_TYPE (exp));
! 		  align = loongarch_constant_alignment (exp, align);
! 		}
! 	      else if (SYMBOL_REF_DECL (src))
! 		align = DECL_ALIGN (SYMBOL_REF_DECL (src));
! 	      else if (SYMBOL_REF_HAS_BLOCK_INFO_P (src)
! 		       && SYMBOL_REF_BLOCK (src) != NULL)
! 		align = SYMBOL_REF_BLOCK (src)->alignment;
! 	      else
! 		align = BITS_PER_UNIT;
! 
! 	      if (align % (4 * 8) == 0)
! 		return "pcaddi\t%0,%%pcrel(%1)>>2";
! 	    }
! 	  if (TARGET_CMODEL_TINY
! 	      || TARGET_CMODEL_TINY_STATIC
! 	      || TARGET_CMODEL_NORMAL
! 	      || TARGET_CMODEL_LARGE)
! 	    {
! 	      if (!loongarch_global_symbol_p (src)
! 		  || loongarch_symbol_binds_local_p (src))
! 		return "la.local\t%0,%1";
! 	      else
! 		return "la.global\t%0,%1";
! 	    }
! 	  if (TARGET_CMODEL_EXTREME)
! 	    {
! 	      sorry ("Normal symbol loading not implemented in extreme mode.");
! 	      gcc_unreachable ();
! 	    }
! 
! 	}
      }
    if (src_code == REG && FP_REG_P (REGNO (src)))
      {
        if (dest_code == REG && FP_REG_P (REGNO (dest)))
--- 3963,3979 ----
  	  else
  	    gcc_unreachable ();
  	}
+     }
  
!   if (!TARGET_EXPLICIT_RELOCS
!       && dest_code == REG && symbolic_operand (src, VOIDmode))
!     {
!       if (loongarch_classify_symbol (src) == SYMBOL_PCREL)
! 	return "la.local\t%0,%1";
!       else
! 	return "la.global\t%0,%1";
      }
+ 
    if (src_code == REG && FP_REG_P (REGNO (src)))
      {
        if (dest_code == REG && FP_REG_P (REGNO (dest)))
*************** loongarch_output_move (rtx dest, rtx src
*** 3503,3508 ****
--- 3991,3997 ----
  	  return dbl_p ? "fst.d\t%1,%0" : "fst.s\t%1,%0";
  	}
      }
+ 
    if (dest_code == REG && FP_REG_P (REGNO (dest)))
      {
        if (src_code == MEM)
*************** loongarch_output_move (rtx dest, rtx src
*** 3517,3522 ****
--- 4006,4012 ----
  	  return dbl_p ? "fld.d\t%0,%1" : "fld.s\t%0,%1";
  	}
      }
+ 
    gcc_unreachable ();
  }
  
*************** loongarch_emit_int_compare (enum rtx_cod
*** 3737,3746 ****
  	      if (!increment && !decrement)
  		continue;
  
  	      new_rhs = rhs + (increment ? 1 : -1);
  	      if (loongarch_integer_cost (new_rhs)
! 		    < loongarch_integer_cost (rhs)
! 		  && (rhs < 0) == (new_rhs < 0))
  		{
  		  *op1 = GEN_INT (new_rhs);
  		  *code = mag_comparisons[i][increment];
--- 4227,4239 ----
  	      if (!increment && !decrement)
  		continue;
  
+ 	      if ((increment && rhs == HOST_WIDE_INT_MAX)
+ 		  || (decrement && rhs == HOST_WIDE_INT_MIN))
+ 		break;
+ 
  	      new_rhs = rhs + (increment ? 1 : -1);
  	      if (loongarch_integer_cost (new_rhs)
! 		    < loongarch_integer_cost (rhs))
  		{
  		  *op1 = GEN_INT (new_rhs);
  		  *code = mag_comparisons[i][increment];
*************** loongarch_memmodel_needs_release_fence (
*** 4345,4373 ****
      }
  }
  
  /* Implement TARGET_PRINT_OPERAND.  The LoongArch-specific operand codes are:
  
!    'X'	Print CONST_INT OP in hexadecimal format.
!    'x'	Print the low 16 bits of CONST_INT OP in hexadecimal format.
     'd'	Print CONST_INT OP in decimal.
     'm'	Print one less than CONST_INT OP in decimal.
-    'y'	Print exact log2 of CONST_INT OP in decimal.
-    'C'	Print the integer branch condition for comparison OP.
     'N'	Print the inverse of the integer branch condition for comparison OP.
!    'F'	Print the FPU branch condition for comparison OP.
!    'W'	Print the inverse of the FPU branch condition for comparison OP.
     'T'	Print 'f' for (eq:CC ...), 't' for (ne:CC ...),
  	      'z' for (eq:?I ...), 'n' for (ne:?I ...).
     't'	Like 'T', but with the EQ/NE cases reversed
-    'Y'	Print loongarch_fp_conditions[INTVAL (OP)]
-    'Z'	Print OP and a comma for 8CC, otherwise print nothing.
-    'z'	Print $0 if OP is zero, otherwise print OP normally.
-    'b'	Print the address of a memory operand, without offset.
     'V'	Print exact log2 of CONST_INT OP element 0 of a replicated
  	  CONST_VECTOR in decimal.
!    'A'	Print a _DB suffix if the memory model requires a release.
!    'G'	Print a DBAR insn if the memory model requires a release.
!    'i'	Print i if the operand is not a register.  */
  
  static void
  loongarch_print_operand (FILE *file, rtx op, int letter)
--- 4838,4968 ----
      }
  }
  
+ /* Print symbolic operand OP, which is part of a HIGH or LO_SUM
+    in context CONTEXT.  HI_RELOC indicates a high-part reloc.  */
+ 
+ static void
+ loongarch_print_operand_reloc (FILE *file, rtx op, bool hi64_part,
+ 			       bool hi_reloc)
+ {
+   const char *reloc;
+   enum loongarch_symbol_type symbol_type =
+     loongarch_classify_symbolic_expression (op);
+ 
+   if (loongarch_symbol_extreme_p (symbol_type))
+     gcc_assert (TARGET_EXPLICIT_RELOCS);
+ 
+   switch (symbol_type)
+     {
+     case SYMBOL_PCREL64:
+       if (hi64_part)
+ 	{
+ 	  reloc = hi_reloc ? "%pc64_hi12" : "%pc64_lo20";
+ 	  break;
+ 	}
+       /* fall through */
+     case SYMBOL_PCREL:
+       reloc = hi_reloc ? "%pc_hi20" : "%pc_lo12";
+       break;
+ 
+     case SYMBOL_GOT_DISP:
+       if (hi64_part)
+ 	{
+ 	  if (TARGET_CMODEL_EXTREME)
+ 	    reloc = hi_reloc ? "%got64_pc_hi12" : "%got64_pc_lo20";
+ 	  else
+ 	    gcc_unreachable ();
+ 	}
+       else
+ 	reloc = hi_reloc ? "%got_pc_hi20" : "%got_pc_lo12";
+       break;
+ 
+     case SYMBOL_TLS_IE:
+       if (hi64_part)
+ 	{
+ 	  if (TARGET_CMODEL_EXTREME)
+ 	    reloc = hi_reloc ? "%ie64_pc_hi12" : "%ie64_pc_lo20";
+ 	  else
+ 	    gcc_unreachable ();
+ 	}
+       else
+ 	reloc = hi_reloc ? "%ie_pc_hi20" : "%ie_pc_lo12";
+       break;
+ 
+     case SYMBOL_TLS_LE:
+       if (hi64_part)
+ 	{
+ 	  if (TARGET_CMODEL_EXTREME)
+ 	    reloc = hi_reloc ? "%le64_hi12" : "%le64_lo20";
+ 	  else
+ 	    gcc_unreachable ();
+ 	}
+       else
+ 	reloc = hi_reloc ? "%le_hi20" : "%le_lo12";
+       break;
+ 
+     case SYMBOL_TLSGD:
+       if (hi64_part)
+ 	{
+ 	  if (TARGET_CMODEL_EXTREME)
+ 	    reloc = hi_reloc ? "%got64_pc_hi12" : "%got64_pc_lo20";
+ 	  else
+ 	    gcc_unreachable ();
+ 	}
+       else
+ 	reloc = hi_reloc ? "%gd_pc_hi20" : "%got_pc_lo12";
+       break;
+ 
+     case SYMBOL_TLSLDM:
+       if (hi64_part)
+ 	{
+ 	  if (TARGET_CMODEL_EXTREME)
+ 	    reloc = hi_reloc ? "%got64_pc_hi12" : "%got64_pc_lo20";
+ 	  else
+ 	    gcc_unreachable ();
+ 	}
+       else
+ 	reloc = hi_reloc ? "%ld_pc_hi20" : "%got_pc_lo12";
+       break;
+ 
+     default:
+       gcc_unreachable ();
+     }
+ 
+   fprintf (file, "%s(", reloc);
+   output_addr_const (file, loongarch_strip_unspec_address (op));
+   fputc (')', file);
+ }
+ 
  /* Implement TARGET_PRINT_OPERAND.  The LoongArch-specific operand codes are:
  
!    'A'	Print a _DB suffix if the memory model requires a release.
!    'b'	Print the address of a memory operand, without offset.
!    'c'  Print an integer.
!    'C'	Print the integer branch condition for comparison OP.
     'd'	Print CONST_INT OP in decimal.
+    'F'	Print the FPU branch condition for comparison OP.
+    'G'	Print a DBAR insn if the memory model requires a release.
+    'H'  Print address 52-61bit relocation associated with OP.
+    'h'  Print the high-part relocation associated with OP.
+    'i'	Print i if the operand is not a register.
+    'L'  Print the low-part relocation associated with OP.
     'm'	Print one less than CONST_INT OP in decimal.
     'N'	Print the inverse of the integer branch condition for comparison OP.
!    'r'  Print address 12-31bit relocation associated with OP.
!    'R'  Print address 32-51bit relocation associated with OP.
     'T'	Print 'f' for (eq:CC ...), 't' for (ne:CC ...),
  	      'z' for (eq:?I ...), 'n' for (ne:?I ...).
     't'	Like 'T', but with the EQ/NE cases reversed
     'V'	Print exact log2 of CONST_INT OP element 0 of a replicated
  	  CONST_VECTOR in decimal.
!    'W'	Print the inverse of the FPU branch condition for comparison OP.
!    'X'	Print CONST_INT OP in hexadecimal format.
!    'x'	Print the low 16 bits of CONST_INT OP in hexadecimal format.
!    'Y'	Print loongarch_fp_conditions[INTVAL (OP)]
!    'y'	Print exact log2 of CONST_INT OP in decimal.
!    'Z'	Print OP and a comma for 8CC, otherwise print nothing.
!    'z'	Print $0 if OP is zero, otherwise print OP normally.  */
  
  static void
  loongarch_print_operand (FILE *file, rtx op, int letter)
*************** loongarch_print_operand (FILE *file, rtx
*** 4385,4402 ****
  
    switch (letter)
      {
!     case 'X':
!       if (CONST_INT_P (op))
! 	fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (op));
!       else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'x':
        if (CONST_INT_P (op))
! 	fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (op) & 0xffff);
        else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
      case 'd':
--- 4980,5000 ----
  
    switch (letter)
      {
!     case 'A':
!       if (loongarch_memmodel_needs_rel_acq_fence ((enum memmodel) INTVAL (op)))
!        fputs ("_db", file);
        break;
  
!     case 'c':
        if (CONST_INT_P (op))
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (op));
        else
! 	output_operand_lossage ("unsupported operand for code '%c'", letter);
! 
!       break;
! 
!     case 'C':
!       loongarch_print_int_branch_condition (file, code, letter);
        break;
  
      case 'd':
*************** loongarch_print_operand (FILE *file, rtx
*** 4406,4411 ****
--- 5004,5040 ----
  	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
+     case 'F':
+       loongarch_print_float_branch_condition (file, code, letter);
+       break;
+ 
+     case 'G':
+       if (loongarch_memmodel_needs_release_fence ((enum memmodel) INTVAL (op)))
+ 	fputs ("dbar\t0", file);
+       break;
+ 
+     case 'h':
+       if (code == HIGH)
+ 	op = XEXP (op, 0);
+       loongarch_print_operand_reloc (file, op, false /* hi64_part */,
+ 				     true /* hi_reloc */);
+       break;
+ 
+     case 'H':
+       loongarch_print_operand_reloc (file, op, true /* hi64_part */,
+ 				     true /* hi_reloc */);
+       break;
+ 
+     case 'i':
+       if (code != REG)
+ 	fputs ("i", file);
+       break;
+ 
+     case 'L':
+       loongarch_print_operand_reloc (file, op, false /* hi64_part*/,
+ 				     false /* lo_reloc */);
+       break;
+ 
      case 'm':
        if (CONST_INT_P (op))
  	fprintf (file, HOST_WIDE_INT_PRINT_DEC, INTVAL (op) - 1);
*************** loongarch_print_operand (FILE *file, rtx
*** 4413,4429 ****
  	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'y':
!       if (CONST_INT_P (op))
! 	{
! 	  int val = exact_log2 (INTVAL (op));
! 	  if (val != -1)
! 	    fprintf (file, "%d", val);
! 	  else
! 	    output_operand_lossage ("invalid use of '%%%c'", letter);
! 	}
!       else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
      case 'V':
--- 5042,5068 ----
  	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'N':
!       loongarch_print_int_branch_condition (file, reverse_condition (code),
! 					    letter);
!       break;
! 
!     case 'r':
!       loongarch_print_operand_reloc (file, op, false /* hi64_part */,
! 				     true /* lo_reloc */);
!       break;
! 
!     case 'R':
!       loongarch_print_operand_reloc (file, op, true /* hi64_part */,
! 				     false /* lo_reloc */);
!       break;
! 
!     case 't':
!     case 'T':
!       {
! 	int truth = (code == NE) == (letter == 'T');
! 	fputc ("zfnt"[truth * 2 + FCC_REG_P (REGNO (XEXP (op, 0)))], file);
!       }
        break;
  
      case 'V':
*************** loongarch_print_operand (FILE *file, rtx
*** 4441,4470 ****
  	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'C':
!       loongarch_print_int_branch_condition (file, code, letter);
!       break;
! 
!     case 'N':
!       loongarch_print_int_branch_condition (file, reverse_condition (code),
! 					    letter);
        break;
  
!     case 'F':
!       loongarch_print_float_branch_condition (file, code, letter);
        break;
  
!     case 'W':
!       loongarch_print_float_branch_condition (file, reverse_condition (code),
! 					      letter);
        break;
  
!     case 'T':
!     case 't':
!       {
! 	int truth = (code == NE) == (letter == 'T');
! 	fputc ("zfnt"[truth * 2 + FCC_REG_P (REGNO (XEXP (op, 0)))], file);
!       }
        break;
  
      case 'Y':
--- 5080,5115 ----
  	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'W':
!       loongarch_print_float_branch_condition (file, reverse_condition (code),
! 					      letter);
        break;
  
!     case 'x':
!       if (CONST_INT_P (op))
! 	fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (op) & 0xffff);
!       else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'X':
!       if (CONST_INT_P (op))
! 	fprintf (file, HOST_WIDE_INT_PRINT_HEX, INTVAL (op));
!       else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
!     case 'y':
!       if (CONST_INT_P (op))
! 	{
! 	  int val = exact_log2 (INTVAL (op));
! 	  if (val != -1)
! 	    fprintf (file, "%d", val);
! 	  else
! 	    output_operand_lossage ("invalid use of '%%%c'", letter);
! 	}
!       else
! 	output_operand_lossage ("invalid use of '%%%c'", letter);
        break;
  
      case 'Y':
*************** loongarch_print_operand (FILE *file, rtx
*** 4481,4501 ****
        fputc (',', file);
        break;
  
-     case 'A':
-       if (loongarch_memmodel_needs_rel_acq_fence ((enum memmodel) INTVAL (op)))
- 	fputs ("_db", file);
-       break;
- 
-     case 'G':
-       if (loongarch_memmodel_needs_release_fence ((enum memmodel) INTVAL (op)))
- 	fputs ("dbar\t0", file);
-       break;
- 
-     case 'i':
-       if (code != REG)
- 	fputs ("i", file);
-       break;
- 
      default:
        switch (code)
  	{
--- 5126,5131 ----
*************** loongarch_print_operand_address (FILE *f
*** 4555,4560 ****
--- 5185,5196 ----
  				reg_names[REGNO (addr.offset)]);
  	return;
  
+       case ADDRESS_LO_SUM:
+ 	fprintf (file, "%s,", reg_names[REGNO (addr.reg)]);
+ 	loongarch_print_operand_reloc (file, addr.offset, false /* hi64_part */,
+ 				       false /* hi_reloc */);
+ 	return;
+ 
        case ADDRESS_CONST_INT:
  	fprintf (file, "%s,", reg_names[GP_REG_FIRST]);
  	output_addr_const (file, x);
*************** loongarch_option_override_internal (stru
*** 5522,5537 ****
    if (loongarch_branch_cost == 0)
      loongarch_branch_cost = loongarch_cost->branch_cost;
  
  
    switch (la_target.cmodel)
      {
-       case CMODEL_TINY_STATIC:
        case CMODEL_EXTREME:
  	if (opts->x_flag_plt)
! 	  error ("code model %qs and %qs not support %s mode",
! 		 "tiny-static", "extreme", "plt");
  	break;
  
        case CMODEL_NORMAL:
        case CMODEL_TINY:
        case CMODEL_LARGE:
--- 6158,6212 ----
    if (loongarch_branch_cost == 0)
      loongarch_branch_cost = loongarch_cost->branch_cost;
  
+   /* Set up parameters to be used in prefetching algorithm.  */
+   int simultaneous_prefetches
+     = loongarch_cpu_cache[LARCH_ACTUAL_TUNE].simultaneous_prefetches;
+ 
+   SET_OPTION_IF_UNSET (opts, &global_options_set,
+ 		       param_simultaneous_prefetches,
+ 		       simultaneous_prefetches);
+ 
+   SET_OPTION_IF_UNSET (opts, &global_options_set,
+ 		       param_l1_cache_line_size,
+ 		       loongarch_cpu_cache[LARCH_ACTUAL_TUNE].l1d_line_size);
+ 
+   SET_OPTION_IF_UNSET (opts, &global_options_set,
+ 		       param_l1_cache_size,
+ 		       loongarch_cpu_cache[LARCH_ACTUAL_TUNE].l1d_size);
+ 
+   SET_OPTION_IF_UNSET (opts, &global_options_set,
+ 		       param_l2_cache_size,
+ 		       loongarch_cpu_cache[LARCH_ACTUAL_TUNE].l2d_size);
+ 
+ 
+   /* Enable sw prefetching at -O3 and higher.  */
+   if (opts->x_flag_prefetch_loop_arrays < 0
+       && (opts->x_optimize >= 3 || opts->x_flag_profile_use)
+       && !opts->x_optimize_size)
+     opts->x_flag_prefetch_loop_arrays = 1;
+ 
+   if (TARGET_DIRECT_EXTERN_ACCESS && flag_shlib)
+     error ("%qs cannot be used for compiling a shared library",
+ 	   "-mdirect-extern-access");
  
    switch (la_target.cmodel)
      {
        case CMODEL_EXTREME:
+ 	if (!TARGET_EXPLICIT_RELOCS)
+ 	  error ("code model %qs needs %s",
+ 		 "extreme", "-mexplicit-relocs");
+ 
  	if (opts->x_flag_plt)
! 	  {
! 	    if (global_options_set.x_flag_plt)
! 	      error ("code model %qs is not compatible with %s",
! 		     "extreme", "-fplt");
! 	    opts->x_flag_plt = 0;
! 	  }
  	break;
  
+       case CMODEL_TINY_STATIC:
+       case CMODEL_MEDIUM:
        case CMODEL_NORMAL:
        case CMODEL_TINY:
        case CMODEL_LARGE:
*************** loongarch_option_override_internal (stru
*** 5541,5546 ****
--- 6216,6230 ----
  	gcc_unreachable ();
      }
  
+   /* Validate the guard size.  */
+   int guard_size = param_stack_clash_protection_guard_size;
+ 
+   /* Enforce that interval is the same size as size so the mid-end does the
+      right thing.  */
+   SET_OPTION_IF_UNSET (opts, &global_options_set,
+ 		       param_stack_clash_protection_probe_interval,
+ 		       guard_size);
+ 
    loongarch_init_print_operand_punct ();
  
    /* Set up array to map GCC register number to debug register number.
*************** loongarch_starting_frame_offset (void)
*** 5782,5787 ****
--- 6466,6579 ----
    return crtl->outgoing_args_size;
  }
  
+ static tree
+ loongarch_handle_model_attribute (tree *node, tree name, tree arg, int,
+ 				  bool *no_add_attrs)
+ {
+   tree decl = *node;
+   if (TREE_CODE (decl) == VAR_DECL)
+     {
+       if (DECL_THREAD_LOCAL_P (decl))
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "%qE attribute cannot be specified for thread-local "
+ 		    "variables", name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+       if (DECL_CONTEXT (decl)
+ 	  && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL
+ 	  && !TREE_STATIC (decl))
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "%qE attribute cannot be specified for local "
+ 		    "variables", name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+       if (DECL_REGISTER (decl))
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "%qE attribute cannot be specified for register "
+ 		    "variables", name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+       if (!TARGET_EXPLICIT_RELOCS)
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "%qE attribute requires %s", name, "-mexplicit-relocs");
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+ 
+       arg = TREE_VALUE (arg);
+       if (TREE_CODE (arg) != STRING_CST)
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "invalid argument of %qE attribute", name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+ 
+       const char *model = TREE_STRING_POINTER (arg);
+       if (strcmp (model, "normal") != 0
+ 	  && strcmp (model, "extreme") != 0)
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "invalid argument of %qE attribute", name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+ 
+       if (lookup_attribute ("model", DECL_ATTRIBUTES (decl)))
+ 	{
+ 	  error_at (DECL_SOURCE_LOCATION (decl),
+ 		    "multiple %qE attribute", name);
+ 	  *no_add_attrs = true;
+ 	  return NULL_TREE;
+ 	}
+     }
+   else
+     {
+       warning (OPT_Wattributes, "%qE attribute ignored", name);
+       *no_add_attrs = true;
+     }
+   return NULL_TREE;
+ }
+ 
+ static const struct attribute_spec loongarch_attribute_table[] =
+ {
+   /* { name, min_len, max_len, decl_req, type_req, fn_type_req,
+        affects_type_identity, handler, exclude } */
+   { "model", 1, 1, true, false, false, false,
+     loongarch_handle_model_attribute, NULL },
+   /* The last attribute spec is set to be NULL.  */
+   {}
+ };
+ 
+ bool
+ loongarch_use_anchors_for_symbol_p (const_rtx symbol)
+ {
+   tree decl = SYMBOL_REF_DECL (symbol);
+ 
+   /* The section anchor optimization may break custom address model.  */
+   if (decl && lookup_attribute ("model", DECL_ATTRIBUTES (decl)))
+     return false;
+ 
+   return default_use_anchors_for_symbol_p (symbol);
+ }
+ 
+ /* Implement the TARGET_ASAN_SHADOW_OFFSET hook.  */
+ 
+ static unsigned HOST_WIDE_INT
+ loongarch_asan_shadow_offset (void)
+ {
+   /* We only have libsanitizer support for LOONGARCH64 at present.
+      This value is taken from the file libsanitizer/asan/asan_mapping.h.  */
+   return TARGET_64BIT ? (HOST_WIDE_INT_1 << 46) : 0;
+ }
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** loongarch_starting_frame_offset (void)
*** 5929,5934 ****
--- 6721,6732 ----
  #undef TARGET_TRAMPOLINE_INIT
  #define TARGET_TRAMPOLINE_INIT loongarch_trampoline_init
  
+ #undef TARGET_MIN_ANCHOR_OFFSET
+ #define TARGET_MIN_ANCHOR_OFFSET (-IMM_REACH/2)
+ 
+ #undef TARGET_MAX_ANCHOR_OFFSET
+ #define TARGET_MAX_ANCHOR_OFFSET (IMM_REACH/2-1)
+ 
  #undef TARGET_ATOMIC_ASSIGN_EXPAND_FENV
  #define TARGET_ATOMIC_ASSIGN_EXPAND_FENV loongarch_atomic_assign_expand_fenv
  
*************** loongarch_starting_frame_offset (void)
*** 5964,5969 ****
--- 6762,6776 ----
  #undef  TARGET_HAVE_SPECULATION_SAFE_VALUE
  #define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed
  
+ #undef  TARGET_ATTRIBUTE_TABLE
+ #define TARGET_ATTRIBUTE_TABLE loongarch_attribute_table
+ 
+ #undef  TARGET_USE_ANCHORS_FOR_SYMBOL_P
+ #define TARGET_USE_ANCHORS_FOR_SYMBOL_P loongarch_use_anchors_for_symbol_p
+ 
+ #undef TARGET_ASAN_SHADOW_OFFSET
+ #define TARGET_ASAN_SHADOW_OFFSET loongarch_asan_shadow_offset
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-loongarch.h"
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch.h gcc-13.1.0/gcc/config/loongarch/loongarch.h
*** gcc-12.2.0/gcc/config/loongarch/loongarch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  LoongArch version.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS and RISC-V target for GNU compiler.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  LoongArch version.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Loongson Ltd.
     Based on MIPS and RISC-V target for GNU compiler.
  
*************** enum reg_class
*** 561,567 ****
    64, 65, 66, 67, 68, 69, 70, 71, 72, 73}
  
  #define IMM_BITS 12
! #define IMM_REACH (1LL << IMM_BITS)
  
  /* True if VALUE is an unsigned 6-bit number.  */
  
--- 561,568 ----
    64, 65, 66, 67, 68, 69, 70, 71, 72, 73}
  
  #define IMM_BITS 12
! #define IMM_REACH (HOST_WIDE_INT_1 << IMM_BITS)
! #define HWIT_1U HOST_WIDE_INT_1U
  
  /* True if VALUE is an unsigned 6-bit number.  */
  
*************** enum reg_class
*** 589,606 ****
  /* True if VALUE can be loaded into a register using LU12I.  */
  
  #define LU12I_OPERAND(VALUE) \
!   (((VALUE) | ((1UL << 31) - IMM_REACH)) == ((1UL << 31) - IMM_REACH) \
!    || ((VALUE) | ((1UL << 31) - IMM_REACH)) + IMM_REACH == 0)
  
  /* True if VALUE can be loaded into a register using LU32I.  */
  
  #define LU32I_OPERAND(VALUE) \
!   (((VALUE) | (((1ULL << 19) - 1) << 32)) == (((1ULL << 19) - 1) << 32) \
!    || ((VALUE) | (((1ULL << 19) - 1) << 32)) + (1ULL << 32) == 0)
  
  /* True if VALUE can be loaded into a register using LU52I.  */
  
! #define LU52I_OPERAND(VALUE) (((VALUE) | (0xfffULL << 52)) == (0xfffULL << 52))
  
  /* Return a value X with the low 12 bits clear, and such that
     VALUE - X is a signed 12-bit value.  */
--- 590,609 ----
  /* True if VALUE can be loaded into a register using LU12I.  */
  
  #define LU12I_OPERAND(VALUE) \
!   (((VALUE) | ((HWIT_1U << 31) - IMM_REACH)) == ((HWIT_1U << 31) - IMM_REACH) \
!    || ((VALUE) | ((HWIT_1U << 31) - IMM_REACH)) + IMM_REACH == 0)
  
  /* True if VALUE can be loaded into a register using LU32I.  */
  
  #define LU32I_OPERAND(VALUE) \
!   (((VALUE) | (((HWIT_1U << 19) - 1) << 32)) == (((HWIT_1U << 19) - 1) << 32) \
!    || ((VALUE) | (((HWIT_1U << 19) - 1) << 32)) + (HWIT_1U << 32) == 0)
  
  /* True if VALUE can be loaded into a register using LU52I.  */
  
! #define HWIT_UC_0xFFF HOST_WIDE_INT_UC(0xfff)
! #define LU52I_OPERAND(VALUE) \
!   (((VALUE) | (HWIT_UC_0xFFF << 52)) == (HWIT_UC_0xFFF << 52))
  
  /* Return a value X with the low 12 bits clear, and such that
     VALUE - X is a signed 12-bit value.  */
*************** enum reg_class
*** 614,620 ****
  #define LU12I_INT(X) LU12I_OPERAND (INTVAL (X))
  #define LU32I_INT(X) LU32I_OPERAND (INTVAL (X))
  #define LU52I_INT(X) LU52I_OPERAND (INTVAL (X))
! #define LARCH_U12BIT_OFFSET_P(OFFSET) (IN_RANGE (OFFSET, -2048, 2047))
  #define LARCH_9BIT_OFFSET_P(OFFSET) (IN_RANGE (OFFSET, -256, 255))
  #define LARCH_16BIT_OFFSET_P(OFFSET) (IN_RANGE (OFFSET, -32768, 32767))
  #define LARCH_SHIFT_2_OFFSET_P(OFFSET) (((OFFSET) & 0x3) == 0)
--- 617,623 ----
  #define LU12I_INT(X) LU12I_OPERAND (INTVAL (X))
  #define LU32I_INT(X) LU32I_OPERAND (INTVAL (X))
  #define LU52I_INT(X) LU52I_OPERAND (INTVAL (X))
! #define LARCH_12BIT_OFFSET_P(OFFSET) (IN_RANGE (OFFSET, -2048, 2047))
  #define LARCH_9BIT_OFFSET_P(OFFSET) (IN_RANGE (OFFSET, -256, 255))
  #define LARCH_16BIT_OFFSET_P(OFFSET) (IN_RANGE (OFFSET, -32768, 32767))
  #define LARCH_SHIFT_2_OFFSET_P(OFFSET) (((OFFSET) & 0x3) == 0)
*************** enum reg_class
*** 665,675 ****
  
  #define STACK_BOUNDARY (TARGET_ABI_LP64 ? 128 : 64)
  
  /* Symbolic macros for the registers used to return integer and floating
     point values.  */
  
  #define GP_RETURN (GP_REG_FIRST + 4)
! #define FP_RETURN ((TARGET_SOFT_FLOAT) ? GP_RETURN : (FP_REG_FIRST + 0))
  
  #define MAX_ARGS_IN_REGISTERS 8
  
--- 668,682 ----
  
  #define STACK_BOUNDARY (TARGET_ABI_LP64 ? 128 : 64)
  
+ /* This value controls how many pages we manually unroll the loop for when
+    generating stack clash probes.  */
+ #define STACK_CLASH_MAX_UNROLL_PAGES 4
+ 
  /* Symbolic macros for the registers used to return integer and floating
     point values.  */
  
  #define GP_RETURN (GP_REG_FIRST + 4)
! #define FP_RETURN ((TARGET_SOFT_FLOAT_ABI) ? GP_RETURN : (FP_REG_FIRST + 0))
  
  #define MAX_ARGS_IN_REGISTERS 8
  
*************** struct GTY (()) machine_function
*** 1127,1134 ****
--- 1134,1146 ----
  };
  #endif
  
+ #ifdef HAVE_AS_EH_FRAME_PCREL_ENCODING_SUPPORT
+ #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
+   (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_pcrel | DW_EH_PE_sdata4)
+ #else
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE, GLOBAL) \
    (((GLOBAL) ? DW_EH_PE_indirect : 0) | DW_EH_PE_absptr)
+ #endif
  
  /* Do emit .note.GNU-stack by default.  */
  #ifndef NEED_INDICATE_EXEC_STACK
*************** struct GTY (()) machine_function
*** 1142,1147 ****
  /* The largest type that can be passed in floating-point registers.  */
  /* TODO: according to mabi.  */
  #define UNITS_PER_FP_ARG  \
!   (TARGET_HARD_FLOAT ? (TARGET_DOUBLE_FLOAT ? 8 : 4) : 0)
  
  #define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN)
--- 1154,1159 ----
  /* The largest type that can be passed in floating-point registers.  */
  /* TODO: according to mabi.  */
  #define UNITS_PER_FP_ARG  \
!   (TARGET_HARD_FLOAT_ABI ? (TARGET_DOUBLE_FLOAT_ABI ? 8 : 4) : 0)
  
  #define FUNCTION_VALUE_REGNO_P(N) ((N) == GP_RETURN || (N) == FP_RETURN)
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch.md gcc-13.1.0/gcc/config/loongarch/loongarch.md
*** gcc-12.2.0/gcc/config/loongarch/loongarch.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Description for LoongArch for GNU compiler.
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  ;; Machine Description for LoongArch for GNU compiler.
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS target for GNU compiler.
  
***************
*** 35,47 ****
    ;; Floating point unspecs.
    UNSPEC_FRINT
    UNSPEC_FCLASS
  
    ;; Override return address for exception handling.
    UNSPEC_EH_RETURN
  
    ;; Bit operation
-   UNSPEC_BYTEPICK_W
-   UNSPEC_BYTEPICK_D
    UNSPEC_BITREV_4B
    UNSPEC_BITREV_8B
  
--- 35,53 ----
    ;; Floating point unspecs.
    UNSPEC_FRINT
    UNSPEC_FCLASS
+   UNSPEC_FMAX
+   UNSPEC_FMIN
+   UNSPEC_FCOPYSIGN
+   UNSPEC_FTINT
+   UNSPEC_FTINTRM
+   UNSPEC_FTINTRP
+   UNSPEC_FSCALEB
+   UNSPEC_FLOGB
  
    ;; Override return address for exception handling.
    UNSPEC_EH_RETURN
  
    ;; Bit operation
    UNSPEC_BITREV_4B
    UNSPEC_BITREV_8B
  
***************
*** 57,62 ****
--- 63,79 ----
    ;; CRC
    UNSPEC_CRC
    UNSPEC_CRCC
+ 
+   UNSPEC_LOAD_FROM_GOT
+   UNSPEC_PCALAU12I
+   UNSPEC_ORI_L_LO12
+   UNSPEC_LUI_L_HI20
+   UNSPEC_LUI_H_LO20
+   UNSPEC_LUI_H_HI12
+   UNSPEC_TLS_LOW
+ 
+   UNSPEC_SIBCALL_VALUE_MULTIPLE_INTERNAL_1
+   UNSPEC_CALL_VALUE_MULTIPLE_INTERNAL_1
  ])
  
  (define_c_enum "unspecv" [
***************
*** 110,115 ****
--- 127,134 ----
  ;;
  ;; ....................
  
+ (define_attr "enabled" "no,yes" (const_string "yes"))
+ 
  (define_attr "got" "unset,load"
    (const_string "unset"))
  
***************
*** 197,205 ****
--- 216,227 ----
  ;; fdiv		floating point divide
  ;; frdiv	floating point reciprocal divide
  ;; fabs		floating point absolute value
+ ;; flogb	floating point exponent extract
  ;; fneg		floating point negation
  ;; fcmp		floating point compare
+ ;; fcopysign	floating point copysign
  ;; fcvt		floating point convert
+ ;; fscaleb	floating point scale
  ;; fsqrt	floating point square root
  ;; frsqrt       floating point reciprocal square root
  ;; multi	multiword sequence (or user asm statements)
***************
*** 211,218 ****
    "unknown,branch,jump,call,load,fpload,fpidxload,store,fpstore,fpidxstore,
     prefetch,prefetchx,condmove,mgtf,mftg,const,arith,logical,
     shift,slt,signext,clz,trap,imul,idiv,move,
!    fmove,fadd,fmul,fmadd,fdiv,frdiv,fabs,fneg,fcmp,fcvt,fsqrt,
!    frsqrt,accext,accmod,multi,atomic,syncloop,nop,ghost"
    (cond [(eq_attr "jirl" "!unset") (const_string "call")
  	 (eq_attr "got" "load") (const_string "load")
  
--- 233,240 ----
    "unknown,branch,jump,call,load,fpload,fpidxload,store,fpstore,fpidxstore,
     prefetch,prefetchx,condmove,mgtf,mftg,const,arith,logical,
     shift,slt,signext,clz,trap,imul,idiv,move,
!    fmove,fadd,fmul,fmadd,fdiv,frdiv,fabs,flogb,fneg,fcmp,fcopysign,fcvt,
!    fscaleb,fsqrt,frsqrt,accext,accmod,multi,atomic,syncloop,nop,ghost"
    (cond [(eq_attr "jirl" "!unset") (const_string "call")
  	 (eq_attr "got" "load") (const_string "load")
  
***************
*** 357,362 ****
--- 379,389 ----
  (define_mode_iterator ANYF [(SF "TARGET_HARD_FLOAT")
  			    (DF "TARGET_DOUBLE_FLOAT")])
  
+ ;; Iterator for fixed-point modes which can be hold by a hardware
+ ;; floating-point register.
+ (define_mode_iterator ANYFI [(SI "TARGET_HARD_FLOAT")
+ 			     (DI "TARGET_DOUBLE_FLOAT")])
+ 
  ;; A mode for which moves involving FPRs may need to be split.
  (define_mode_iterator SPLITF
    [(DF "!TARGET_64BIT && TARGET_DOUBLE_FLOAT")
***************
*** 393,398 ****
--- 420,429 ----
  ;; the controlling mode.
  (define_mode_attr HALFMODE [(DF "SI") (DI "SI") (TF "DI")])
  
+ ;; This attribute gives the integer mode that has the same size of a
+ ;; floating-point mode.
+ (define_mode_attr IMODE [(SF "SI") (DF "DI")])
+ 
  ;; This code iterator allows signed and unsigned widening multiplications
  ;; to use the same template.
  (define_code_iterator any_extend [sign_extend zero_extend])
***************
*** 498,503 ****
--- 529,568 ----
  (define_code_attr sel [(eq "masknez") (ne "maskeqz")])
  (define_code_attr selinv [(eq "maskeqz") (ne "masknez")])
  
+ ;; Iterator and attributes for floating-point to fixed-point conversion
+ ;; instructions.
+ (define_int_iterator LRINT [UNSPEC_FTINT UNSPEC_FTINTRM UNSPEC_FTINTRP])
+ (define_int_attr lrint_pattern [(UNSPEC_FTINT "lrint")
+ 				(UNSPEC_FTINTRM "lfloor")
+ 				(UNSPEC_FTINTRP "lceil")])
+ (define_int_attr lrint_submenmonic [(UNSPEC_FTINT "")
+ 				    (UNSPEC_FTINTRM "rm")
+ 				    (UNSPEC_FTINTRP "rp")])
+ (define_int_attr lrint_allow_inexact [(UNSPEC_FTINT "1")
+ 				      (UNSPEC_FTINTRM "0")
+ 				      (UNSPEC_FTINTRP "0")])
+ 
+ ;; Iterator and attributes for bytepick.d
+ (define_int_iterator bytepick_w_ashift_amount [8 16 24])
+ (define_int_attr bytepick_w_lshiftrt_amount [(8 "24")
+ 					     (16 "16")
+ 					     (24 "8")])
+ (define_int_iterator bytepick_d_ashift_amount [8 16 24 32 40 48 56])
+ (define_int_attr bytepick_d_lshiftrt_amount [(8 "56")
+ 					     (16 "48")
+ 					     (24 "40")
+ 					     (32 "32")
+ 					     (40 "24")
+ 					     (48 "16")
+ 					     (56 "8")])
+ (define_int_attr bytepick_imm [(8 "1")
+ 				 (16 "2")
+ 				 (24 "3")
+ 				 (32 "4")
+ 				 (40 "5")
+ 				 (48 "6")
+ 				 (56 "7")])
+ 
  ;;
  ;;  ....................
  ;;
***************
*** 750,755 ****
--- 815,821 ----
    {
      rtx reg1 = gen_reg_rtx (DImode);
      rtx reg2 = gen_reg_rtx (DImode);
+     rtx rd = gen_reg_rtx (DImode);
  
      operands[1] = gen_rtx_SIGN_EXTEND (word_mode, operands[1]);
      operands[2] = gen_rtx_SIGN_EXTEND (word_mode, operands[2]);
***************
*** 757,788 ****
      emit_insn (gen_rtx_SET (reg1, operands[1]));
      emit_insn (gen_rtx_SET (reg2, operands[2]));
  
!     emit_insn (gen_<optab>di3_fake (operands[0], reg1, reg2));
      DONE;
    }
  })
  
  (define_insn "*<optab><mode>3"
!   [(set (match_operand:GPR 0 "register_operand" "=&r")
! 	(any_div:GPR (match_operand:GPR 1 "register_operand" "r")
! 		     (match_operand:GPR 2 "register_operand" "r")))]
    ""
  {
    return loongarch_output_division ("<insn>.<d><u>\t%0,%1,%2", operands);
  }
    [(set_attr "type" "idiv")
!    (set_attr "mode" "<MODE>")])
  
  (define_insn "<optab>di3_fake"
!   [(set (match_operand:SI 0 "register_operand" "=&r")
! 	(any_div:SI (match_operand:DI 1 "register_operand" "r")
! 		    (match_operand:DI 2 "register_operand" "r")))]
    ""
  {
    return loongarch_output_division ("<insn>.w<u>\t%0,%1,%2", operands);
  }
    [(set_attr "type" "idiv")
!    (set_attr "mode" "SI")])
  
  ;; Floating point multiply accumulate instructions.
  
--- 823,867 ----
      emit_insn (gen_rtx_SET (reg1, operands[1]));
      emit_insn (gen_rtx_SET (reg2, operands[2]));
  
!     emit_insn (gen_<optab>di3_fake (rd, reg1, reg2));
!     emit_insn (gen_rtx_SET (operands[0],
! 			    simplify_gen_subreg (SImode, rd, DImode, 0)));
      DONE;
    }
  })
  
  (define_insn "*<optab><mode>3"
!   [(set (match_operand:GPR 0 "register_operand" "=r,&r,&r")
! 	(any_div:GPR (match_operand:GPR 1 "register_operand" "r,r,0")
! 		     (match_operand:GPR 2 "register_operand" "r,r,r")))]
    ""
  {
    return loongarch_output_division ("<insn>.<d><u>\t%0,%1,%2", operands);
  }
    [(set_attr "type" "idiv")
!    (set_attr "mode" "<MODE>")
!    (set (attr "enabled")
!       (if_then_else
! 	(match_test "!!which_alternative == loongarch_check_zero_div_p()")
! 	(const_string "yes")
! 	(const_string "no")))])
  
  (define_insn "<optab>di3_fake"
!   [(set (match_operand:DI 0 "register_operand" "=r,&r,&r")
! 	(sign_extend:DI
! 	  (any_div:SI (match_operand:DI 1 "register_operand" "r,r,0")
! 		      (match_operand:DI 2 "register_operand" "r,r,r"))))]
    ""
  {
    return loongarch_output_division ("<insn>.w<u>\t%0,%1,%2", operands);
  }
    [(set_attr "type" "idiv")
!    (set_attr "mode" "SI")
!    (set (attr "enabled")
!       (if_then_else
! 	(match_test "!!which_alternative == loongarch_check_zero_div_p()")
! 	(const_string "yes")
! 	(const_string "no")))])
  
  ;; Floating point multiply accumulate instructions.
  
***************
*** 947,952 ****
--- 1026,1094 ----
     (set_attr "mode" "<UNITMODE>")])
  
  ;;
+ ;;  ....................
+ ;;
+ ;;	FLOATING POINT COPYSIGN
+ ;;
+ ;;  ....................
+ 
+ (define_insn "copysign<mode>3"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")
+ 		      (match_operand:ANYF 2 "register_operand" "f")]
+ 		     UNSPEC_FCOPYSIGN))]
+   "TARGET_HARD_FLOAT"
+   "fcopysign.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fcopysign")
+    (set_attr "mode" "<UNITMODE>")])
+ 
+ ;;
+ ;;  ....................
+ ;;
+ ;;	FLOATING POINT SCALE
+ ;;
+ ;;  ....................
+ 
+ (define_insn "ldexp<mode>3"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(unspec:ANYF [(match_operand:ANYF    1 "register_operand" "f")
+ 		      (match_operand:<IMODE> 2 "register_operand" "f")]
+ 		     UNSPEC_FSCALEB))]
+   "TARGET_HARD_FLOAT"
+   "fscaleb.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fscaleb")
+    (set_attr "mode" "<UNITMODE>")])
+ 
+ ;;
+ ;;  ....................
+ ;;
+ ;;	FLOATING POINT EXPONENT EXTRACT
+ ;;
+ ;;  ....................
+ 
+ (define_insn "logb_non_negative<mode>2"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
+ 		     UNSPEC_FLOGB))]
+   "TARGET_HARD_FLOAT"
+   "flogb.<fmt>\t%0,%1"
+   [(set_attr "type" "flogb")
+    (set_attr "mode" "<UNITMODE>")])
+ 
+ (define_expand "logb<mode>2"
+   [(set (match_operand:ANYF 0 "register_operand")
+ 	(unspec:ANYF [(abs:ANYF (match_operand:ANYF 1 "register_operand"))]
+ 		     UNSPEC_FLOGB))]
+   "TARGET_HARD_FLOAT"
+ {
+   rtx tmp = gen_reg_rtx (<MODE>mode);
+ 
+   emit_insn (gen_abs<mode>2 (tmp, operands[1]));
+   emit_insn (gen_logb_non_negative<mode>2 (operands[0], tmp));
+   DONE;
+ })
+ 
+ ;;
  ;;  ...................
  ;;
  ;;  Count leading zeroes.
***************
*** 1003,1008 ****
--- 1145,1170 ----
    [(set_attr "type" "fmove")
     (set_attr "mode" "<MODE>")])
  
+ (define_insn "fmax<mode>3"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(unspec:ANYF [(use (match_operand:ANYF 1 "register_operand" "f"))
+ 		      (use (match_operand:ANYF 2 "register_operand" "f"))]
+ 		     UNSPEC_FMAX))]
+   ""
+   "fmax.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fmove")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "fmin<mode>3"
+   [(set (match_operand:ANYF 0 "register_operand" "=f")
+ 	(unspec:ANYF [(use (match_operand:ANYF 1 "register_operand" "f"))
+ 		      (use (match_operand:ANYF 2 "register_operand" "f"))]
+ 		     UNSPEC_FMIN))]
+   ""
+   "fmin.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fmove")
+    (set_attr "mode" "<MODE>")])
+ 
  (define_insn "smaxa<mode>3"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
  	(if_then_else:ANYF
***************
*** 1575,1597 ****
      DONE;
  })
  
! (define_insn "*movdi_32bit"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,w,*f,*f,*r,*m")
         (match_operand:DI 1 "move_operand" "r,i,w,r,*J*r,*m,*f,*f"))]
    "!TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
    [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore")
     (set_attr "mode" "DI")])
  
! (define_insn "*movdi_64bit"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,w,*f,*f,*r,*m")
  	(match_operand:DI 1 "move_operand" "r,Yd,w,rJ,*r*J,*m,*f,*f"))]
    "TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
    [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore")
     (set_attr "mode" "DI")])
  
--- 1737,1777 ----
      DONE;
  })
  
! (define_insn_and_split "*movdi_32bit"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,w,*f,*f,*r,*m")
         (match_operand:DI 1 "move_operand" "r,i,w,r,*J*r,*m,*f,*f"))]
    "!TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
+   "CONST_INT_P (operands[1]) && REG_P (operands[0]) && GP_REG_P (REGNO
+   (operands[0]))"
+   [(const_int 0)]
+   "
+ {
+   loongarch_move_integer (operands[0], operands[0], INTVAL (operands[1]));
+   DONE;
+ }
+   "
    [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore")
     (set_attr "mode" "DI")])
  
! (define_insn_and_split "*movdi_64bit"
    [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,w,*f,*f,*r,*m")
  	(match_operand:DI 1 "move_operand" "r,Yd,w,rJ,*r*J,*m,*f,*f"))]
    "TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
+   "CONST_INT_P (operands[1]) && REG_P (operands[0]) && GP_REG_P (REGNO
+   (operands[0]))"
+   [(const_int 0)]
+   "
+ {
+   loongarch_move_integer (operands[0], operands[0], INTVAL (operands[1]));
+   DONE;
+ }
+   "
    [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore")
     (set_attr "mode" "DI")])
  
***************
*** 1606,1617 ****
      DONE;
  })
  
! (define_insn "*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"))]
    "(register_operand (operands[0], SImode)
      || reg_or_0_operand (operands[1], SImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
    [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf")
     (set_attr "mode" "SI")])
  
--- 1786,1806 ----
      DONE;
  })
  
! (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"))]
    "(register_operand (operands[0], SImode)
      || reg_or_0_operand (operands[1], SImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
+   "CONST_INT_P (operands[1]) && REG_P (operands[0]) && GP_REG_P (REGNO
+   (operands[0]))"
+   [(const_int 0)]
+   "
+ {
+   loongarch_move_integer (operands[0], operands[0], INTVAL (operands[1]));
+   DONE;
+ }
+   "
    [(set_attr "move_type" "move,const,load,store,mgtf,fpload,mftg,fpstore,mftg,mgtf")
     (set_attr "mode" "SI")])
  
***************
*** 1631,1642 ****
      DONE;
  })
  
! (define_insn "*movhi_internal"
    [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,r,m,r,k")
  	(match_operand:HI 1 "move_operand" "r,Yd,I,m,rJ,k,rJ"))]
    "(register_operand (operands[0], HImode)
         || reg_or_0_operand (operands[1], HImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
    [(set_attr "move_type" "move,const,const,load,store,load,store")
     (set_attr "mode" "HI")])
  
--- 1820,1840 ----
      DONE;
  })
  
! (define_insn_and_split "*movhi_internal"
    [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r,r,m,r,k")
  	(match_operand:HI 1 "move_operand" "r,Yd,I,m,rJ,k,rJ"))]
    "(register_operand (operands[0], HImode)
         || reg_or_0_operand (operands[1], HImode))"
    { return loongarch_output_move (operands[0], operands[1]); }
+   "CONST_INT_P (operands[1]) && REG_P (operands[0]) && GP_REG_P (REGNO
+   (operands[0]))"
+   [(const_int 0)]
+   "
+ {
+   loongarch_move_integer (operands[0], operands[0], INTVAL (operands[1]));
+   DONE;
+ }
+   "
    [(set_attr "move_type" "move,const,const,load,store,load,store")
     (set_attr "mode" "HI")])
  
***************
*** 1727,1799 ****
    [(set_attr "move_type" "move,load,store")
     (set_attr "mode" "DF")])
  
- 
- ;; 128-bit integer moves
- 
- (define_expand "movti"
-   [(set (match_operand:TI 0)
- 	(match_operand:TI 1))]
-   "TARGET_64BIT"
- {
-   if (loongarch_legitimize_move (TImode, operands[0], operands[1]))
-     DONE;
- })
- 
- (define_insn "*movti"
-   [(set (match_operand:TI 0 "nonimmediate_operand" "=r,r,r,m")
- 	(match_operand:TI 1 "move_operand" "r,i,m,rJ"))]
-   "TARGET_64BIT
-    && (register_operand (operands[0], TImode)
-        || reg_or_0_operand (operands[1], TImode))"
-   { return loongarch_output_move (operands[0], operands[1]); }
-   [(set_attr "move_type" "move,const,load,store")
-    (set (attr "mode")
-     (if_then_else (eq_attr "move_type" "imul")
- 		      (const_string "SI")
- 		      (const_string "TI")))])
- 
- ;; 128-bit floating point moves
- 
- (define_expand "movtf"
-   [(set (match_operand:TF 0)
- 	(match_operand:TF 1))]
-   "TARGET_64BIT"
- {
-   if (loongarch_legitimize_move (TFmode, operands[0], operands[1]))
-     DONE;
- })
- 
- ;; This pattern handles both hard- and soft-float cases.
- (define_insn "*movtf"
-   [(set (match_operand:TF 0 "nonimmediate_operand" "=r,r,m,f,r,f,m")
- 	(match_operand:TF 1 "move_operand" "rG,m,rG,rG,f,m,f"))]
-   "TARGET_64BIT
-    && (register_operand (operands[0], TFmode)
-        || reg_or_0_operand (operands[1], TFmode))"
-   "#"
-   [(set_attr "move_type" "move,load,store,mgtf,mftg,fpload,fpstore")
-    (set_attr "mode" "TF")])
- 
- (define_split
-   [(set (match_operand:MOVE64 0 "nonimmediate_operand")
- 	(match_operand:MOVE64 1 "move_operand"))]
-   "reload_completed && loongarch_split_move_insn_p (operands[0], operands[1])"
-   [(const_int 0)]
- {
-   loongarch_split_move_insn (operands[0], operands[1], curr_insn);
-   DONE;
- })
- 
- (define_split
-   [(set (match_operand:MOVE128 0 "nonimmediate_operand")
- 	(match_operand:MOVE128 1 "move_operand"))]
-   "reload_completed && loongarch_split_move_insn_p (operands[0], operands[1])"
-   [(const_int 0)]
- {
-   loongarch_split_move_insn (operands[0], operands[1], curr_insn);
-   DONE;
- })
- 
  ;; Emit a doubleword move in which exactly one of the operands is
  ;; a floating-point register.  We can't just emit two normal moves
  ;; because of the constraints imposed by the FPU register model;
--- 1925,1930 ----
***************
*** 1922,1929 ****
    [(set_attr "type" "arith")
     (set_attr "mode" "DI")])
  
! ;; Convert floating-point numbers to integers
! (define_insn "frint_<fmt>"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
  	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
  		      UNSPEC_FRINT))]
--- 2053,2148 ----
    [(set_attr "type" "arith")
     (set_attr "mode" "DI")])
  
! ;; Instructions for adding the low 12 bits of an address to a register.
! ;; Operand 2 is the address: loongarch_print_operand works out which relocation
! ;; should be applied.
! 
! (define_insn "*low<mode>"
!   [(set (match_operand:P 0 "register_operand" "=r")
!  (lo_sum:P (match_operand:P 1 "register_operand" " r")
!      (match_operand:P 2 "symbolic_operand" "")))]
!   "TARGET_EXPLICIT_RELOCS"
!   "addi.<d>\t%0,%1,%L2"
!   [(set_attr "type" "arith")
!    (set_attr "mode" "<MODE>")])
! 
! (define_insn "@tls_low<mode>"
!   [(set (match_operand:P 0 "register_operand" "=r")
! 	(unspec:P [(mem:P (lo_sum:P (match_operand:P 1 "register_operand" "r")
! 				    (match_operand:P 2 "symbolic_operand" "")))]
! 	UNSPEC_TLS_LOW))]
!   "TARGET_EXPLICIT_RELOCS"
!   "addi.<d>\t%0,%1,%L2"
!   [(set_attr "type" "arith")
!    (set_attr "mode" "<MODE>")])
! 
! ;; Instructions for loading address from GOT entry.
! ;; operands[1] is pc plus the high half of the address difference with the got
! ;; entry;
! ;; operands[2] is low 12 bits for low 12 bit of the address difference with the
! ;; got entry.
! ;; loongarch_print_operand works out which relocation should be applied.
! 
! (define_insn "@ld_from_got<mode>"
!   [(set (match_operand:P 0 "register_operand" "=r")
! 	(unspec:P [(mem:P (lo_sum:P
! 				(match_operand:P 1 "register_operand" "r")
! 				(match_operand:P 2 "symbolic_operand")))]
! 	UNSPEC_LOAD_FROM_GOT))]
!   "TARGET_EXPLICIT_RELOCS"
!   "ld.<d>\t%0,%1,%L2"
!   [(set_attr "type" "move")]
! )
! 
! (define_insn "@lui_l_hi20<mode>"
!   [(set (match_operand:P 0 "register_operand" "=r")
! 	(unspec:P [(match_operand:P 1 "symbolic_operand")]
! 	UNSPEC_LUI_L_HI20))]
!   ""
!   "lu12i.w\t%0,%r1"
!   [(set_attr "type" "move")]
! )
! 
! (define_insn "@pcalau12i<mode>"
!   [(set (match_operand:P 0 "register_operand" "=j")
! 	(unspec:P [(match_operand:P 1 "symbolic_operand" "")]
! 	UNSPEC_PCALAU12I))]
!   ""
!   "pcalau12i\t%0,%%pc_hi20(%1)"
!   [(set_attr "type" "move")])
! 
! (define_insn "@ori_l_lo12<mode>"
!   [(set (match_operand:P 0 "register_operand" "=r")
! 	(unspec:P [(match_operand:P 1 "register_operand" "r")
! 		   (match_operand:P 2 "symbolic_operand")]
! 	UNSPEC_ORI_L_LO12))]
!   ""
!   "ori\t%0,%1,%L2"
!   [(set_attr "type" "move")]
! )
! 
! (define_insn "lui_h_lo20"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(unspec:DI [(match_operand:DI 1 "register_operand" "0")
! 		    (match_operand:DI 2 "symbolic_operand")]
! 	UNSPEC_LUI_H_LO20))]
!   "TARGET_64BIT"
!   "lu32i.d\t%0,%R2"
!   [(set_attr "type" "move")]
! )
! 
! (define_insn "lui_h_hi12"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
! 		    (match_operand:DI 2 "symbolic_operand")]
! 	UNSPEC_LUI_H_HI12))]
!   "TARGET_64BIT"
!   "lu52i.d\t%0,%1,%H2"
!   [(set_attr "type" "move")]
! )
! 
! ;; Round floating-point numbers to integers
! (define_insn "rint<mode>2"
    [(set (match_operand:ANYF 0 "register_operand" "=f")
  	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" "f")]
  		      UNSPEC_FRINT))]
***************
*** 1932,1937 ****
--- 2151,2169 ----
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<MODE>")])
  
+ ;; Convert floating-point numbers to integers
+ (define_insn "<lrint_pattern><ANYF:mode><ANYFI:mode>2"
+   [(set (match_operand:ANYFI 0 "register_operand" "=f")
+ 	(unspec:ANYFI [(match_operand:ANYF 1 "register_operand" "f")]
+ 		      LRINT))]
+   "TARGET_HARD_FLOAT &&
+    (<lrint_allow_inexact>
+     || flag_fp_int_builtin_inexact
+     || !flag_trapping_math)"
+   "ftint<lrint_submenmonic>.<ANYFI:ifmt>.<ANYF:fmt> %0,%1"
+   [(set_attr "type" "fcvt")
+    (set_attr "mode" "<ANYF:MODE>")])
+ 
  ;; Load the low word of operand 0 with operand 1.
  (define_insn "load_low<mode>"
    [(set (match_operand:SPLITF 0 "register_operand" "=f,f")
***************
*** 2823,2875 ****
  {
    rtx target = loongarch_legitimize_call_address (XEXP (operands[0], 0));
  
!   emit_call_insn (gen_sibcall_internal (target, operands[1]));
    DONE;
  })
  
  (define_insn "sibcall_internal"
!   [(call (mem:SI (match_operand 0 "call_insn_operand" "j,c,a,t,h"))
  	 (match_operand 1 "" ""))]
    "SIBLING_CALL_P (insn)"
! {
!   switch (which_alternative)
!     {
!     case 0:
!       return "jr\t%0";
!     case 1:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r12,(%%pcrel(%0+0x20000))>>18\n\t"
! 	       "jirl\t$r0,$r12,%%pcrel(%0+4)-(%%pcrel(%0+4+0x20000)>>18<<18)";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.local\t$r12,$r13,%0\n\tjr\t$r12";
!       else
! 	return "b\t%0";
!     case 2:
!       if (TARGET_CMODEL_TINY_STATIC)
! 	return "b\t%0";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r12,$r13,%0\n\tjr\t$r12";
!       else
! 	return "la.global\t$r12,%0\n\tjr\t$r12";
!     case 3:
!       if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r12,$r13,%0\n\tjr\t$r12";
!       else
! 	return "la.global\t$r12,%0\n\tjr\t$r12";
!     case 4:
!       if (TARGET_CMODEL_NORMAL || TARGET_CMODEL_TINY)
! 	return "b\t%%plt(%0)";
!       else if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r12,(%%plt(%0)+0x20000)>>18\n\t"
! 	       "jirl\t$r0,$r12,%%plt(%0)+4-((%%plt(%0)+(4+0x20000))>>18<<18)";
!       else
! 	/* Cmodel extreme and tiny static not support plt.  */
! 	gcc_unreachable ();
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set_attr "jirl" "indirect,direct,direct,direct,direct")])
  
  (define_expand "sibcall_value"
    [(parallel [(set (match_operand 0 "")
--- 3055,3086 ----
  {
    rtx target = loongarch_legitimize_call_address (XEXP (operands[0], 0));
  
!   if (GET_CODE (target) == LO_SUM)
!     emit_call_insn (gen_sibcall_internal_1 (Pmode, XEXP (target, 0),
! 					    XEXP (target, 1),
! 					    operands[1]));
!   else
!     emit_call_insn (gen_sibcall_internal (target, operands[1]));
    DONE;
  })
  
  (define_insn "sibcall_internal"
!   [(call (mem:SI (match_operand 0 "call_insn_operand" "j,c,b"))
  	 (match_operand 1 "" ""))]
    "SIBLING_CALL_P (insn)"
!   "@
!    jr\t%0
!    b\t%0
!    b\t%%plt(%0)"
!   [(set_attr "jirl" "indirect,direct,direct")])
! 
! (define_insn "@sibcall_internal_1<mode>"
!   [(call (mem:P (lo_sum:P (match_operand:P 0 "register_operand" "j")
! 			  (match_operand:P 1 "symbolic_operand" "")))
! 	 (match_operand 2 "" ""))]
!   "SIBLING_CALL_P (insn) && TARGET_CMODEL_MEDIUM"
!   "jirl\t$r0,%0,%%pc_lo12(%1)"
!   [(set_attr "jirl" "indirect")])
  
  (define_expand "sibcall_value"
    [(parallel [(set (match_operand 0 "")
***************
*** 2886,2892 ****
        rtx arg1 = XEXP (XVECEXP (operands[0],0, 0), 0);
        rtx arg2 = XEXP (XVECEXP (operands[0],0, 1), 0);
  
!       emit_call_insn (gen_sibcall_value_multiple_internal (arg1, target,
  							   operands[2],
  							   arg2));
      }
--- 3097,3110 ----
        rtx arg1 = XEXP (XVECEXP (operands[0],0, 0), 0);
        rtx arg2 = XEXP (XVECEXP (operands[0],0, 1), 0);
  
!       if (GET_CODE (target) == LO_SUM)
! 	emit_call_insn (gen_sibcall_value_multiple_internal_1 (Pmode, arg1,
! 							   XEXP (target, 0),
! 							   XEXP (target, 1),
! 							   operands[2],
! 							   arg2));
!       else
! 	emit_call_insn (gen_sibcall_value_multiple_internal (arg1, target,
  							   operands[2],
  							   arg2));
      }
***************
*** 2896,2902 ****
        if (GET_CODE (operands[0]) == PARALLEL && XVECLEN (operands[0], 0) == 1)
  	operands[0] = XEXP (XVECEXP (operands[0], 0, 0), 0);
  
!       emit_call_insn (gen_sibcall_value_internal (operands[0], target,
  						  operands[2]));
      }
    DONE;
--- 3114,3126 ----
        if (GET_CODE (operands[0]) == PARALLEL && XVECLEN (operands[0], 0) == 1)
  	operands[0] = XEXP (XVECEXP (operands[0], 0, 0), 0);
  
!       if (GET_CODE (target) == LO_SUM)
! 	emit_call_insn (gen_sibcall_value_internal_1 (Pmode, operands[0],
! 						  XEXP (target, 0),
! 						  XEXP (target, 1),
! 						  operands[2]));
!       else
! 	emit_call_insn (gen_sibcall_value_internal (operands[0], target,
  						  operands[2]));
      }
    DONE;
***************
*** 2904,2999 ****
  
  (define_insn "sibcall_value_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "j,c,a,t,h"))
  	      (match_operand 2 "" "")))]
    "SIBLING_CALL_P (insn)"
! {
!   switch (which_alternative)
!   {
!     case 0:
!       return "jr\t%1";
!     case 1:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r12,%%pcrel(%1+0x20000)>>18\n\t"
! 	       "jirl\t$r0,$r12,%%pcrel(%1+4)-((%%pcrel(%1+4+0x20000))>>18<<18)";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.local\t$r12,$r13,%1\n\tjr\t$r12";
!       else
! 	return "b\t%1";
!     case 2:
!       if (TARGET_CMODEL_TINY_STATIC)
! 	return "b\t%1";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r12,$r13,%1\n\tjr\t$r12";
!       else
! 	return "la.global\t$r12,%1\n\tjr\t$r12";
!     case 3:
!       if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r12,$r13,%1\n\tjr\t$r12";
!       else
! 	return "la.global\t$r12,%1\n\tjr\t$r12";
!     case 4:
!       if (TARGET_CMODEL_NORMAL || TARGET_CMODEL_TINY)
! 	return " b\t%%plt(%1)";
!       else if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r12,(%%plt(%1)+0x20000)>>18\n\t"
! 	       "jirl\t$r0,$r12,%%plt(%1)+4-((%%plt(%1)+(4+0x20000))>>18<<18)";
!       else
! 	/* Cmodel extreme and tiny static not support plt.  */
! 	gcc_unreachable ();
!     default:
!       gcc_unreachable ();
!   }
! }
!   [(set_attr "jirl" "indirect,direct,direct,direct,direct")])
  
  (define_insn "sibcall_value_multiple_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "j,c,a,t,h"))
  	      (match_operand 2 "" "")))
     (set (match_operand 3 "register_operand" "")
  	(call (mem:SI (match_dup 1))
  	      (match_dup 2)))]
    "SIBLING_CALL_P (insn)"
! {
!   switch (which_alternative)
!   {
!     case 0:
!       return "jr\t%1";
!     case 1:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r12,%%pcrel(%1+0x20000)>>18\n\t"
! 	       "jirl\t$r0,$r12,%%pcrel(%1+4)-(%%pcrel(%1+4+0x20000)>>18<<18)";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.local\t$r12,$r13,%1\n\tjr\t$r12";
!       else
! 	return "b\t%1";
!     case 2:
!       if (TARGET_CMODEL_TINY_STATIC)
! 	return "b\t%1";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r12,$r13,%1\n\tjr\t$r12";
!       else
! 	return "la.global\t$r12,%1\n\tjr\t$r12";
!     case 3:
!       if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r12,$r13,%1\n\tjr\t$r12";
!       else
! 	return "la.global\t$r12,%1\n\tjr\t$r12";
!     case 4:
!       if (TARGET_CMODEL_NORMAL || TARGET_CMODEL_TINY)
! 	return "b\t%%plt(%1)";
!       else if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r12,(%%plt(%1)+0x20000)>>18\n\t"
! 	       "jirl\t$r0,$r12,%%plt(%1)+4-((%%plt(%1)+(4+0x20000))>>18<<18)";
!       else
! 	/* Cmodel extreme and tiny static not support plt.  */
! 	gcc_unreachable ();
!     default:
!       gcc_unreachable ();
!   }
! }
!   [(set_attr "jirl" "indirect,direct,direct,direct,direct")])
  
  (define_expand "call"
    [(parallel [(call (match_operand 0 "")
--- 3128,3179 ----
  
  (define_insn "sibcall_value_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "j,c,b"))
  	      (match_operand 2 "" "")))]
    "SIBLING_CALL_P (insn)"
!   "@
!    jr\t%1
!    b\t%1
!    b\t%%plt(%1)"
!   [(set_attr "jirl" "indirect,direct,direct")])
! 
! (define_insn "@sibcall_value_internal_1<mode>"
!   [(set (match_operand 0 "register_operand" "")
! 	(call (mem:P (lo_sum:P (match_operand:P 1 "register_operand" "j")
! 			       (match_operand:P 2 "symbolic_operand" "")))
! 	      (match_operand 3 "" "")))]
!   "SIBLING_CALL_P (insn) && TARGET_CMODEL_MEDIUM"
!   "jirl\t$r0,%1,%%pc_lo12(%2)"
!   [(set_attr "jirl" "indirect")])
  
  (define_insn "sibcall_value_multiple_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "j,c,b"))
  	      (match_operand 2 "" "")))
     (set (match_operand 3 "register_operand" "")
  	(call (mem:SI (match_dup 1))
  	      (match_dup 2)))]
    "SIBLING_CALL_P (insn)"
!   "@
!    jr\t%1
!    b\t%1
!    b\t%%plt(%1)"
!   [(set_attr "jirl" "indirect,direct,direct")])
! 
! (define_insn "@sibcall_value_multiple_internal_1<mode>"
!   [(set (match_operand 0 "register_operand" "")
! 	(call (mem:P (unspec:P [(match_operand:P 1 "register_operand" "j")
! 			        (match_operand:P 2 "symbolic_operand" "")]
! 		      UNSPEC_SIBCALL_VALUE_MULTIPLE_INTERNAL_1))
! 	      (match_operand 3 "" "")))
!    (set (match_operand 4 "register_operand" "")
! 	(call (mem:P (unspec:P [(match_dup 1)
! 			        (match_dup 2)]
! 		      UNSPEC_SIBCALL_VALUE_MULTIPLE_INTERNAL_1))
! 	      (match_dup 3)))]
!   "SIBLING_CALL_P (insn) && TARGET_CMODEL_MEDIUM"
!   "jirl\t$r0,%1,%%pc_lo12(%2)"
!   [(set_attr "jirl" "indirect")])
  
  (define_expand "call"
    [(parallel [(call (match_operand 0 "")
***************
*** 3004,3058 ****
  {
    rtx target = loongarch_legitimize_call_address (XEXP (operands[0], 0));
  
!   emit_call_insn (gen_call_internal (target, operands[1]));
    DONE;
  })
  
  (define_insn "call_internal"
!   [(call (mem:SI (match_operand 0 "call_insn_operand" "e,c,a,t,h"))
  	 (match_operand 1 "" ""))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
! {
!   switch (which_alternative)
!     {
!     case 0:
!       return "jirl\t$r1,%0,0";
!     case 1:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r1,%%pcrel(%0+0x20000)>>18\n\t"
! 	       "jirl\t$r1,$r1,%%pcrel(%0+4)-(%%pcrel(%0+4+0x20000)>>18<<18)";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.local\t$r1,$r12,%0\n\tjirl\t$r1,$r1,0";
!       else
! 	return "bl\t%0";
!     case 2:
!       if (TARGET_CMODEL_TINY_STATIC)
! 	return "bl\t%0";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r1,$r12,%0\n\tjirl\t$r1,$r1,0";
!       else
! 	return "la.global\t$r1,%0\n\tjirl\t$r1,$r1,0";
!     case 3:
!       if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r1,$r12,%0\n\tjirl\t$r1,$r1,0";
!       else
! 	return "la.global\t$r1,%0\n\tjirl\t$r1,$r1,0";
!     case 4:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r1,(%%plt(%0)+0x20000)>>18\n\t"
! 	       "jirl\t$r1,$r1,%%plt(%0)+4-((%%plt(%0)+(4+0x20000))>>18<<18)";
!       else if (TARGET_CMODEL_NORMAL || TARGET_CMODEL_TINY)
! 	return "bl\t%%plt(%0)";
!       else
! 	/* Cmodel extreme and tiny static not support plt.  */
! 	gcc_unreachable ();
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set_attr "jirl" "indirect,direct,direct,direct,direct")
!    (set_attr "insn_count" "1,2,3,3,2")])
  
  (define_expand "call_value"
    [(parallel [(set (match_operand 0 "")
--- 3184,3216 ----
  {
    rtx target = loongarch_legitimize_call_address (XEXP (operands[0], 0));
  
!   if (GET_CODE (target) == LO_SUM)
!     emit_call_insn (gen_call_internal_1 (Pmode, XEXP (target, 0),
! 					 XEXP (target, 1), operands[1]));
!   else
!     emit_call_insn (gen_call_internal (target, operands[1]));
    DONE;
  })
  
  (define_insn "call_internal"
!   [(call (mem:SI (match_operand 0 "call_insn_operand" "e,c,b"))
  	 (match_operand 1 "" ""))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
!   "@
!    jirl\t$r1,%0,0
!    bl\t%0
!    bl\t%%plt(%0)"
!   [(set_attr "jirl" "indirect,direct,direct")])
! 
! (define_insn "@call_internal_1<mode>"
!   [(call (mem:P (lo_sum:P (match_operand:P 0 "register_operand" "j")
! 			  (match_operand:P 1 "symbolic_operand" "")))
! 	 (match_operand 2 "" ""))
!    (clobber (reg:SI RETURN_ADDR_REGNUM))]
!   "TARGET_CMODEL_MEDIUM"
!   "jirl\t$r1,%0,%%pc_lo12(%1)"
!   [(set_attr "jirl" "indirect")])
  
  (define_expand "call_value"
    [(parallel [(set (match_operand 0 "")
***************
*** 3068,3074 ****
        rtx arg1 = XEXP (XVECEXP (operands[0], 0, 0), 0);
        rtx arg2 = XEXP (XVECEXP (operands[0], 0, 1), 0);
  
!       emit_call_insn (gen_call_value_multiple_internal (arg1, target,
  							operands[2], arg2));
      }
     else
--- 3226,3238 ----
        rtx arg1 = XEXP (XVECEXP (operands[0], 0, 0), 0);
        rtx arg2 = XEXP (XVECEXP (operands[0], 0, 1), 0);
  
!       if (GET_CODE (target) == LO_SUM)
! 	emit_call_insn (gen_call_value_multiple_internal_1 (Pmode, arg1,
! 							    XEXP (target, 0),
! 							    XEXP (target, 1),
! 							    operands[2], arg2));
!       else
! 	emit_call_insn (gen_call_value_multiple_internal (arg1, target,
  							operands[2], arg2));
      }
     else
***************
*** 3077,3083 ****
        if (GET_CODE (operands[0]) == PARALLEL && XVECLEN (operands[0], 0) == 1)
  	    operands[0] = XEXP (XVECEXP (operands[0], 0, 0), 0);
  
!       emit_call_insn (gen_call_value_internal (operands[0], target,
  					       operands[2]));
      }
    DONE;
--- 3241,3253 ----
        if (GET_CODE (operands[0]) == PARALLEL && XVECLEN (operands[0], 0) == 1)
  	    operands[0] = XEXP (XVECEXP (operands[0], 0, 0), 0);
  
!       if (GET_CODE (target) == LO_SUM)
! 	emit_call_insn (gen_call_value_internal_1 (Pmode, operands[0],
! 						   XEXP (target, 0),
! 						   XEXP (target, 1),
! 						   operands[2]));
!       else
! 	emit_call_insn (gen_call_value_internal (operands[0], target,
  					       operands[2]));
      }
    DONE;
***************
*** 3085,3184 ****
  
  (define_insn "call_value_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "e,c,a,t,h"))
  	      (match_operand 2 "" "")))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
! {
!   switch (which_alternative)
!     {
!     case 0:
!       return "jirl\t$r1,%1,0";
!     case 1:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r1,%%pcrel(%1+0x20000)>>18\n\t"
! 	       "jirl\t$r1,$r1,%%pcrel(%1+4)-(%%pcrel(%1+4+0x20000)>>18<<18)";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.local\t$r1,$r12,%1\n\tjirl\t$r1,$r1,0";
!       else
! 	return "bl\t%1";
!     case 2:
!       if (TARGET_CMODEL_TINY_STATIC)
! 	return "bl\t%1";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r1,$r12,%1\n\tjirl\t$r1,$r1,0";
!       else
! 	return "la.global\t$r1,%1\n\tjirl\t$r1,$r1,0";
!     case 3:
!       if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r1,$r12,%1\n\tjirl\t$r1,$r1,0";
!       else
! 	return "la.global\t$r1,%1\n\tjirl\t$r1,$r1,0";
!     case 4:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r1,(%%plt(%1)+0x20000)>>18\n\t"
! 	       "jirl\t$r1,$r1,%%plt(%1)+4-((%%plt(%1)+(4+0x20000))>>18<<18)";
!       else if (TARGET_CMODEL_NORMAL || TARGET_CMODEL_TINY)
! 	return "bl\t%%plt(%1)";
!       else
! 	/* Cmodel extreme and tiny static not support plt.  */
! 	gcc_unreachable ();
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set_attr "jirl" "indirect,direct,direct,direct,direct")
!    (set_attr "insn_count" "1,2,3,3,2")])
  
  (define_insn "call_value_multiple_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "e,c,a,t,h"))
  	      (match_operand 2 "" "")))
     (set (match_operand 3 "register_operand" "")
  	(call (mem:SI (match_dup 1))
  	      (match_dup 2)))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
! {
!   switch (which_alternative)
!     {
!     case 0:
!       return "jirl\t$r1,%1,0";
!     case 1:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r1,%%pcrel(%1+0x20000)>>18\n\t"
! 	       "jirl\t$r1,$r1,%%pcrel(%1+4)-(%%pcrel(%1+4+0x20000)>>18<<18)";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.local\t$r1,$r12,%1\n\tjirl\t$r1,$r1,0";
!       else
! 	return "bl\t%1";
!     case 2:
!       if (TARGET_CMODEL_TINY_STATIC)
! 	return "bl\t%1";
!       else if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r1,$r12,%1\n\tjirl\t$r1,$r1,0 ";
!       else
! 	return "la.global\t$r1,%1\n\tjirl\t$r1,$r1,0";
!     case 3:
!       if (TARGET_CMODEL_EXTREME)
! 	return "la.global\t$r1,$r12,%1\n\tjirl\t$r1,$r1,0";
!       else
! 	return "la.global\t$r1,%1\n\tjirl\t$r1,$r1,0";
!     case 4:
!       if (TARGET_CMODEL_LARGE)
! 	return "pcaddu18i\t$r1,(%%plt(%1)+0x20000)>>18\n\t"
! 	       "jirl\t$r1,$r1,%%plt(%1)+4-((%%plt(%1)+(4+0x20000))>>18<<18)";
!       else if (TARGET_CMODEL_NORMAL || TARGET_CMODEL_TINY)
! 	return "bl\t%%plt(%1)";
!       else
! 	/* Cmodel extreme and tiny static not support plt.  */
! 	gcc_unreachable ();
!     default:
!       gcc_unreachable ();
!     }
! }
!   [(set_attr "jirl" "indirect,direct,direct,direct,direct")
!    (set_attr "insn_count" "1,2,3,3,2")])
  
  
  ;; Call subroutine returning any type.
--- 3255,3310 ----
  
  (define_insn "call_value_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "e,c,b"))
  	      (match_operand 2 "" "")))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
!   "@
!    jirl\t$r1,%1,0
!    bl\t%1
!    bl\t%%plt(%1)"
!   [(set_attr "jirl" "indirect,direct,direct")])
! 
! (define_insn "@call_value_internal_1<mode>"
!   [(set (match_operand 0 "register_operand" "")
! 	(call (mem:P (lo_sum:P (match_operand:P 1 "register_operand" "j")
! 			       (match_operand:P 2 "symbolic_operand" "")))
! 	      (match_operand 3 "" "")))
!    (clobber (reg:SI RETURN_ADDR_REGNUM))]
!   "TARGET_CMODEL_MEDIUM"
!   "jirl\t$r1,%1,%%pc_lo12(%2)"
!   [(set_attr "jirl" "indirect")])
  
  (define_insn "call_value_multiple_internal"
    [(set (match_operand 0 "register_operand" "")
! 	(call (mem:SI (match_operand 1 "call_insn_operand" "e,c,b"))
  	      (match_operand 2 "" "")))
     (set (match_operand 3 "register_operand" "")
  	(call (mem:SI (match_dup 1))
  	      (match_dup 2)))
     (clobber (reg:SI RETURN_ADDR_REGNUM))]
    ""
!   "@
!    jirl\t$r1,%1,0
!    bl\t%1
!    bl\t%%plt(%1)"
!   [(set_attr "jirl" "indirect,direct,direct")])
! 
! (define_insn "@call_value_multiple_internal_1<mode>"
!   [(set (match_operand 0 "register_operand" "")
! 	(call (mem:P (unspec:P [(match_operand:P 1 "register_operand" "j")
! 			        (match_operand:P 2 "symbolic_operand" "")]
! 		      UNSPEC_CALL_VALUE_MULTIPLE_INTERNAL_1))
! 	      (match_operand 3 "" "")))
!    (set (match_operand 4 "register_operand" "")
! 	(call (mem:P (unspec:P [(match_dup 1)
! 			        (match_dup 2)]
! 		      UNSPEC_CALL_VALUE_MULTIPLE_INTERNAL_1))
! 	      (match_dup 3)))
!    (clobber (reg:SI RETURN_ADDR_REGNUM))]
!   "TARGET_CMODEL_MEDIUM"
!   "jirl\t$r1,%1,%%pc_lo12(%2)"
!   [(set_attr "jirl" "indirect")])
  
  
  ;; Call subroutine returning any type.
***************
*** 3211,3216 ****
--- 3337,3356 ----
  ;;  ....................
  ;;
  
+ (define_insn "prefetch"
+   [(prefetch (match_operand 0 "address_operand" "ZD")
+ 	     (match_operand 1 "const_int_operand" "n")
+ 	     (match_operand 2 "const_int_operand" "n"))]
+   ""
+ {
+   switch (INTVAL (operands[1]))
+   {
+     case 0: return "preld\t0,%a0";
+     case 1: return "preld\t8,%a0";
+     default: gcc_unreachable ();
+   }
+ })
+ 
  (define_insn "nop"
    [(const_int 0)]
    ""
***************
*** 3243,3266 ****
    [(set_attr "type" "unknown")
     (set_attr "mode" "<MODE>")])
  
! (define_insn "bytepick_w"
    [(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 "const_0_to_3_operand" "n")]
! 		    UNSPEC_BYTEPICK_W))]
    ""
!   "bytepick.w\t%0,%1,%2,%z3"
    [(set_attr "mode" "SI")])
  
! (define_insn "bytepick_d"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(unspec:DI [(match_operand:DI 1 "register_operand" "r")
! 		    (match_operand:DI 2 "register_operand" "r")
! 		    (match_operand:DI 3 "const_0_to_7_operand" "n")]
! 		    UNSPEC_BYTEPICK_D))]
!   ""
!   "bytepick.d\t%0,%1,%2,%z3"
    [(set_attr "mode" "DI")])
  
  (define_insn "bitrev_4b"
--- 3383,3417 ----
    [(set_attr "type" "unknown")
     (set_attr "mode" "<MODE>")])
  
! (define_insn "bytepick_w_<bytepick_imm>"
    [(set (match_operand:SI 0 "register_operand" "=r")
! 	(ior:SI (lshiftrt (match_operand:SI 1 "register_operand" "r")
! 			  (const_int <bytepick_w_lshiftrt_amount>))
! 		(ashift (match_operand:SI 2 "register_operand" "r")
! 			(const_int bytepick_w_ashift_amount))))]
    ""
!   "bytepick.w\t%0,%1,%2,<bytepick_imm>"
    [(set_attr "mode" "SI")])
  
! (define_insn "bytepick_w_<bytepick_imm>_extend"
    [(set (match_operand:DI 0 "register_operand" "=r")
! 	(sign_extend:DI
! 	  (ior:SI (lshiftrt (match_operand:SI 1 "register_operand" "r")
! 			    (const_int <bytepick_w_lshiftrt_amount>))
! 		  (ashift (match_operand:SI 2 "register_operand" "r")
! 			  (const_int bytepick_w_ashift_amount)))))]
!   "TARGET_64BIT"
!   "bytepick.w\t%0,%1,%2,<bytepick_imm>"
!   [(set_attr "mode" "SI")])
! 
! (define_insn "bytepick_d_<bytepick_imm>"
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(ior:DI (lshiftrt (match_operand:DI 1 "register_operand" "r")
! 			  (const_int <bytepick_d_lshiftrt_amount>))
! 		(ashift (match_operand:DI 2 "register_operand" "r")
! 			(const_int bytepick_d_ashift_amount))))]
!   "TARGET_64BIT"
!   "bytepick.d\t%0,%1,%2,<bytepick_imm>"
    [(set_attr "mode" "DI")])
  
  (define_insn "bitrev_4b"
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/loongarch.opt gcc-13.1.0/gcc/config/loongarch/loongarch.opt
*** gcc-12.2.0/gcc/config/loongarch/loongarch.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/loongarch.opt	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  ; It will be automatically updated during a gcc build
  ; if you change "loongarch.opt.in" or "loongarch-strings".
  ;
! ; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 5,11 ----
  ; It will be automatically updated during a gcc build
  ; if you change "loongarch.opt.in" or "loongarch-strings".
  ;
! ; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** mmax-inline-memcpy-size=
*** 161,166 ****
--- 161,170 ----
  Target Joined RejectNegative UInteger Var(loongarch_max_inline_memcpy_size) Init(1024)
  -mmax-inline-memcpy-size=SIZE	Set the max size of memcpy to inline, default is 1024.
  
+ mexplicit-relocs
+ Target Var(TARGET_EXPLICIT_RELOCS) Init(HAVE_AS_EXPLICIT_RELOCS)
+ Use %reloc() assembly operators.
+ 
  ; The code model option names for -mcmodel.
  Enum
  Name(cmodel) Type(int)
*************** EnumValue
*** 176,181 ****
--- 180,188 ----
  Enum(cmodel) String(tiny-static) Value(CMODEL_TINY_STATIC)
  
  EnumValue
+ Enum(cmodel) String(medium) Value(CMODEL_MEDIUM)
+ 
+ EnumValue
  Enum(cmodel) String(large) Value(CMODEL_LARGE)
  
  EnumValue
*************** Enum(cmodel) String(extreme) Value(CMODE
*** 184,186 ****
--- 191,197 ----
  mcmodel=
  Target RejectNegative Joined Enum(cmodel) Var(la_opt_cmodel) Init(CMODEL_NORMAL)
  Specify the code model.
+ 
+ mdirect-extern-access
+ Target Var(TARGET_DIRECT_EXTERN_ACCESS) Init(0)
+ Avoid using the GOT to access external symbols.
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/predicates.md gcc-13.1.0/gcc/config/loongarch/predicates.md
*** gcc-12.2.0/gcc/config/loongarch/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for LoongArch target.
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS target for GNU compiler.
  ;;
--- 1,5 ----
  ;; Predicate definitions for LoongArch target.
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS target for GNU compiler.
  ;;
***************
*** 91,104 ****
    (ior (match_operand 0 "const_1_operand")
         (match_operand 0 "register_operand")))
  
- (define_predicate "const_0_to_3_operand"
-   (and (match_code "const_int")
-        (match_test "IN_RANGE (INTVAL (op), 0, 3)")))
- 
- (define_predicate "const_0_to_7_operand"
-   (and (match_code "const_int")
-        (match_test "IN_RANGE (INTVAL (op), 0, 7)")))
- 
  (define_predicate "lu52i_mask_operand"
    (and (match_code "const_int")
         (match_test "UINTVAL (op) == 0xfffffffffffff")))
--- 91,96 ----
***************
*** 110,129 ****
  (define_predicate "const_call_insn_operand"
    (match_code "const,symbol_ref,label_ref")
  {
    enum loongarch_symbol_type symbol_type;
  
!   if (!loongarch_symbolic_constant_p (op, &symbol_type))
      return false;
  
    switch (symbol_type)
      {
      case SYMBOL_GOT_DISP:
!       /* Without explicit relocs, there is no special syntax for
! 	 loading the address of a call destination into a register.
! 	 Using "la.global JIRL_REGS,foo; jirl JIRL_REGS" would prevent the lazy
! 	 binding of "foo", so keep the address of global symbols with the jirl
! 	 macro.  */
!       return 1;
  
      default:
        return false;
--- 102,144 ----
  (define_predicate "const_call_insn_operand"
    (match_code "const,symbol_ref,label_ref")
  {
+   /* Split symbol to high and low if return false.
+      If defined TARGET_CMODEL_EXTREME, all symbol would be splited,
+      else if offset is not zero, the symbol would be splited.  */
+ 
    enum loongarch_symbol_type symbol_type;
+   loongarch_symbolic_constant_p (op, &symbol_type);
  
!   rtx offset, x = op;
!   split_const (x, &x, &offset);
! 
!   if (offset != const0_rtx)
      return false;
  
+   /* When compiling with '-mcmodel=medium -mexplicit-relocs'
+      symbols are splited in loongarch_legitimize_call_address.
+ 
+      When compiling with '-mcmodel=medium -mno-explicit-relocs',
+      first obtain the symbolic address or the address of the
+      plt entry, and then perform an indirect jump, so return false.  */
+ 
    switch (symbol_type)
      {
+     case SYMBOL_PCREL:
+       if (TARGET_CMODEL_EXTREME
+ 	  || (TARGET_CMODEL_MEDIUM && !TARGET_EXPLICIT_RELOCS))
+ 	return false;
+       else
+ 	return 1;
+ 
      case SYMBOL_GOT_DISP:
!       if (TARGET_CMODEL_EXTREME
! 	  || !flag_plt
! 	  || (flag_plt && TARGET_CMODEL_MEDIUM
! 	      && !TARGET_EXPLICIT_RELOCS))
! 	return false;
!       else
! 	return 1;
  
      default:
        return false;
***************
*** 140,161 ****
  	    (match_test "loongarch_symbol_binds_local_p (op) != 0"))
         (match_test "CONSTANT_P (op)")))
  
! (define_predicate "is_const_call_weak_symbol"
!   (and (match_operand 0 "const_call_insn_operand")
!        (not (match_operand 0 "is_const_call_local_symbol"))
!        (match_test "loongarch_weak_symbol_p (op) != 0")
!        (match_test "CONSTANT_P (op)")))
! 
! (define_predicate "is_const_call_plt_symbol"
!   (and (match_operand 0 "const_call_insn_operand")
!        (match_test "flag_plt != 0")
!        (match_test "loongarch_global_symbol_noweak_p (op) != 0")
!        (match_test "CONSTANT_P (op)")))
! 
! (define_predicate "is_const_call_global_noplt_symbol"
    (and (match_operand 0 "const_call_insn_operand")
!        (match_test "flag_plt == 0")
!        (match_test "loongarch_global_symbol_noweak_p (op) != 0")
         (match_test "CONSTANT_P (op)")))
  
  ;; A legitimate CONST_INT operand that takes more than one instruction
--- 155,165 ----
  	    (match_test "loongarch_symbol_binds_local_p (op) != 0"))
         (match_test "CONSTANT_P (op)")))
  
! (define_predicate "is_const_call_no_local_symbol"
    (and (match_operand 0 "const_call_insn_operand")
!        (ior (match_test "loongarch_global_symbol_p (op) != 0")
! 	    (match_test "loongarch_symbol_binds_local_p (op) == 0")
!        (match_test "loongarch_weak_symbol_p (op) != 0"))
         (match_test "CONSTANT_P (op)")))
  
  ;; A legitimate CONST_INT operand that takes more than one instruction
***************
*** 214,225 ****
    switch (GET_CODE (op))
      {
      case CONST_INT:
!       return !splittable_const_int_operand (op, mode);
  
      case CONST:
      case SYMBOL_REF:
      case LABEL_REF:
!       return (loongarch_symbolic_constant_p (op, &symbol_type));
      default:
        return true;
      }
--- 218,241 ----
    switch (GET_CODE (op))
      {
      case CONST_INT:
!       return true;
  
      case CONST:
      case SYMBOL_REF:
      case LABEL_REF:
!       return (loongarch_symbolic_constant_p (op, &symbol_type)
! 	      && (!TARGET_EXPLICIT_RELOCS
! 		  || !loongarch_split_symbol_type (symbol_type)));
! 
!     case HIGH:
!       /* '-mno-explicit-relocs' don't generate high/low pairs.  */
!       if (!TARGET_EXPLICIT_RELOCS)
! 	return false;
! 
!       op = XEXP (op, 0);
!       return (loongarch_symbolic_constant_p (op, &symbol_type)
! 	      && loongarch_split_symbol_type (symbol_type));
! 
      default:
        return true;
      }
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/sync.md gcc-13.1.0/gcc/config/loongarch/sync.md
*** gcc-12.2.0/gcc/config/loongarch/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for LoongArch atomic operations.
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS and RISC-V target for GNU compiler.
  
--- 1,5 ----
  ;; Machine description for LoongArch atomic operations.
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;; Contributed by Loongson Ltd.
  ;; Based on MIPS and RISC-V target for GNU compiler.
  
***************
*** 448,453 ****
--- 448,476 ----
  }
    [(set (attr "length") (const_int 32))])
  
+ (define_insn "atomic_cas_value_exchange_7_<mode>"
+   [(set (match_operand:GPR 0 "register_operand" "=&r")
+ 	(match_operand:GPR 1 "memory_operand" "+ZC"))
+    (set (match_dup 1)
+ 	(unspec_volatile:GPR [(match_operand:GPR 2 "reg_or_0_operand" "rJ")
+ 			      (match_operand:GPR 3 "reg_or_0_operand" "rJ")
+ 			      (match_operand:GPR 4 "reg_or_0_operand" "rJ")
+ 			      (match_operand:GPR 5 "reg_or_0_operand"  "rJ")
+ 			      (match_operand:SI 6 "const_int_operand")] ;; model
+ 	 UNSPEC_SYNC_EXCHANGE))
+    (clobber (match_scratch:GPR 7 "=&r"))]
+   ""
+ {
+   return "%G6\\n\\t"
+ 	 "1:\\n\\t"
+ 	 "ll.<amo>\\t%0,%1\\n\\t"
+ 	 "and\\t%7,%0,%z3\\n\\t"
+ 	 "or%i5\\t%7,%7,%5\\n\\t"
+ 	 "sc.<amo>\\t%7,%1\\n\\t"
+ 	 "beqz\\t%7,1b\\n\\t";
+ }
+   [(set (attr "length") (const_int 20))])
+ 
  (define_expand "atomic_exchange<mode>"
    [(set (match_operand:SHORT 0 "register_operand")
  	(unspec_volatile:SHORT
***************
*** 459,467 ****
    ""
  {
    union loongarch_gen_fn_ptrs generator;
!   generator.fn_7 = gen_atomic_cas_value_cmp_and_7_si;
    loongarch_expand_atomic_qihi (generator, operands[0], operands[1],
! 				operands[1], operands[2], operands[3]);
    DONE;
  })
  
--- 482,490 ----
    ""
  {
    union loongarch_gen_fn_ptrs generator;
!   generator.fn_7 = gen_atomic_cas_value_exchange_7_si;
    loongarch_expand_atomic_qihi (generator, operands[0], operands[1],
! 				const0_rtx, operands[2], operands[3]);
    DONE;
  })
  
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/t-linux gcc-13.1.0/gcc/config/loongarch/t-linux
*** gcc-12.2.0/gcc/config/loongarch/t-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/t-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2021-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2021-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** ifeq ($(filter LA_DISABLE_MULTILIB,$(tm_
*** 40,46 ****
  
      MULTILIB_OSDIRNAMES = \
        mabi.lp64d=../lib64$\
!       $(call if_multiarch,:loongarch64-linux-gnuf64)
  
      MULTILIB_OSDIRNAMES += \
        mabi.lp64f=../lib64/f32$\
--- 40,46 ----
  
      MULTILIB_OSDIRNAMES = \
        mabi.lp64d=../lib64$\
!       $(call if_multiarch,:loongarch64-linux-gnu)
  
      MULTILIB_OSDIRNAMES += \
        mabi.lp64f=../lib64/f32$\
diff -Nrcpad gcc-12.2.0/gcc/config/loongarch/t-loongarch gcc-13.1.0/gcc/config/loongarch/t-loongarch
*** gcc-12.2.0/gcc/config/loongarch/t-loongarch	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/loongarch/t-loongarch	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2021-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2021-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/lynx.h gcc-13.1.0/gcc/config/lynx.h
*** gcc-12.2.0/gcc/config/lynx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lynx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target independent definitions for LynxOS.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Target independent definitions for LynxOS.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/lynx.opt gcc-13.1.0/gcc/config/lynx.opt
*** gcc-12.2.0/gcc/config/lynx.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/lynx.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Processor-independent options for LynxOS.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Processor-independent options for LynxOS.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/addsub.md gcc-13.1.0/gcc/config/m32c/addsub.md
*** gcc-12.2.0/gcc/config/m32c/addsub.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/addsub.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/bitops.md gcc-13.1.0/gcc/config/m32c/bitops.md
*** gcc-12.2.0/gcc/config/m32c/bitops.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/bitops.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/blkmov.md gcc-13.1.0/gcc/config/m32c/blkmov.md
*** gcc-12.2.0/gcc/config/m32c/blkmov.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/blkmov.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/cond.md gcc-13.1.0/gcc/config/m32c/cond.md
*** gcc-12.2.0/gcc/config/m32c/cond.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/cond.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/constraints.md gcc-13.1.0/gcc/config/m32c/constraints.md
*** gcc-12.2.0/gcc/config/m32c/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; m32c constraints
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; m32c constraints
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/jump.md gcc-13.1.0/gcc/config/m32c/jump.md
*** gcc-12.2.0/gcc/config/m32c/jump.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/jump.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c-modes.def gcc-13.1.0/gcc/config/m32c/m32c-modes.def
*** gcc-12.2.0/gcc/config/m32c/m32c-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target-Specific Modes for R8C/M16C/M32C
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target-Specific Modes for R8C/M16C/M32C
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c-pragma.cc gcc-13.1.0/gcc/config/m32c/m32c-pragma.cc
*** gcc-12.2.0/gcc/config/m32c/m32c-pragma.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c-pragma.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* M32C Pragma support
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* M32C Pragma support
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c-protos.h gcc-13.1.0/gcc/config/m32c/m32c-protos.h
*** gcc-12.2.0/gcc/config/m32c/m32c-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Prototypes for R8C/M16C/M32C
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Prototypes for R8C/M16C/M32C
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c.abi gcc-13.1.0/gcc/config/m32c/m32c.abi
*** gcc-12.2.0/gcc/config/m32c/m32c.abi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c.abi	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
     Target Definitions for R8C/M16C/M32C
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
     Target Definitions for R8C/M16C/M32C
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c.cc gcc-13.1.0/gcc/config/m32c/m32c.cc
*** gcc-12.2.0/gcc/config/m32c/m32c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Code for R8C/M16C/M32C
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Code for R8C/M16C/M32C
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
*************** m32c_eh_return_stackadj_rtx (void)
*** 1013,1019 ****
  
  /* Registers That Address the Stack Frame */
  
! /* Implements DWARF_FRAME_REGNUM and DBX_REGISTER_NUMBER.  Note that
     the original spec called for dwarf numbers to vary with register
     width as well, for example, r0l, r0, and r2r0 would each have
     different dwarf numbers.  GCC doesn't support this, and we don't do
--- 1013,1019 ----
  
  /* Registers That Address the Stack Frame */
  
! /* Implements DWARF_FRAME_REGNUM and DEBUGGER_REGNO.  Note that
     the original spec called for dwarf numbers to vary with register
     width as well, for example, r0l, r0, and r2r0 would each have
     different dwarf numbers.  GCC doesn't support this, and we don't do
*************** static struct
*** 1090,1096 ****
    { FB_REGNO, 0x01, 2, 4 }
  };
  
! #define PUSHM_N (sizeof(pushm_info)/sizeof(pushm_info[0]))
  
  /* Returns TRUE if we need to save/restore the given register.  We
     save everything for exception handlers, so that any register can be
--- 1090,1096 ----
    { FB_REGNO, 0x01, 2, 4 }
  };
  
! #define PUSHM_N (ARRAY_SIZE (pushm_info))
  
  /* Returns TRUE if we need to save/restore the given register.  We
     save everything for exception handlers, so that any register can be
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c.h gcc-13.1.0/gcc/config/m32c/m32c.h
*** gcc-12.2.0/gcc/config/m32c/m32c.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Definitions for R8C/M16C/M32C
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Definitions for R8C/M16C/M32C
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
*************** enum reg_class
*** 452,458 ****
  
  #define DWARF_FRAME_REGISTERS 20
  #define DWARF_FRAME_REGNUM(N) m32c_dwarf_frame_regnum (N)
! #define DBX_REGISTER_NUMBER(N) m32c_dwarf_frame_regnum (N)
  
  #undef ASM_PREFERRED_EH_DATA_FORMAT
  /* This is the same as the default in practice, except that by making
--- 452,458 ----
  
  #define DWARF_FRAME_REGISTERS 20
  #define DWARF_FRAME_REGNUM(N) m32c_dwarf_frame_regnum (N)
! #define DEBUGGER_REGNO(N) m32c_dwarf_frame_regnum (N)
  
  #undef ASM_PREFERRED_EH_DATA_FORMAT
  /* This is the same as the default in practice, except that by making
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c.md gcc-13.1.0/gcc/config/m32c/m32c.md
*** gcc-12.2.0/gcc/config/m32c/m32c.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/m32c.opt gcc-13.1.0/gcc/config/m32c/m32c.opt
*** gcc-12.2.0/gcc/config/m32c/m32c.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/m32c.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Target Options for R8C/M16C/M32C
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Target Options for R8C/M16C/M32C
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/minmax.md gcc-13.1.0/gcc/config/m32c/minmax.md
*** gcc-12.2.0/gcc/config/m32c/minmax.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/minmax.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/mov.md gcc-13.1.0/gcc/config/m32c/mov.md
*** gcc-12.2.0/gcc/config/m32c/mov.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/mov.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/muldiv.md gcc-13.1.0/gcc/config/m32c/muldiv.md
*** gcc-12.2.0/gcc/config/m32c/muldiv.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/muldiv.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/predicates.md gcc-13.1.0/gcc/config/m32c/predicates.md
*** gcc-12.2.0/gcc/config/m32c/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/prologue.md gcc-13.1.0/gcc/config/m32c/prologue.md
*** gcc-12.2.0/gcc/config/m32c/prologue.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/prologue.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/rtems.h gcc-13.1.0/gcc/config/m32c/rtems.h
*** gcc-12.2.0/gcc/config/m32c/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/rtems.h	Thu Jan  1 00:00:00 1970
***************
*** 1,38 ****
- /* Definitions for rtems targeting a M32C using ELF.
-    Copyright (C) 2008-2022 Free Software Foundation, Inc.
-    Contributed by Joel Sherrill (joel@OARcorp.com).
- 
-    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/>.  */
- 
- /* Target OS builtins.  */
- #undef TARGET_OS_CPP_BUILTINS
- #define TARGET_OS_CPP_BUILTINS()		\
-   do						\
-     {						\
- 	builtin_define ("__rtems__");		\
- 	builtin_define ("__USE_INIT_FINI__");	\
- 	builtin_assert ("system=rtems");	\
-     }						\
-   while (0)
- 
- /* Use the default */
- #undef LINK_GCC_C_SEQUENCE_SPEC
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/shift.md gcc-13.1.0/gcc/config/m32c/shift.md
*** gcc-12.2.0/gcc/config/m32c/shift.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/shift.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Descriptions for R8C/M16C/M32C
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32c/t-m32c gcc-13.1.0/gcc/config/m32c/t-m32c
*** gcc-12.2.0/gcc/config/m32c/t-m32c	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32c/t-m32c	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for R8C/M16C/M32C
! # Copyright (C) 2005-2022 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for R8C/M16C/M32C
! # Copyright (C) 2005-2023 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/constraints.md gcc-13.1.0/gcc/config/m32r/constraints.md
*** gcc-12.2.0/gcc/config/m32r/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Renesas M32R cpu for GNU C compiler
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for Renesas M32R cpu for GNU C compiler
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/little.h gcc-13.1.0/gcc/config/m32r/little.h
*** gcc-12.2.0/gcc/config/m32r/little.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/little.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Renesas little endian M32R cpu.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for Renesas little endian M32R cpu.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/m32r-opts.h gcc-13.1.0/gcc/config/m32r/m32r-opts.h
*** gcc-12.2.0/gcc/config/m32r/m32r-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/m32r-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for Renesas M32R cpu.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for Renesas M32R cpu.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/m32r-protos.h gcc-13.1.0/gcc/config/m32r/m32r-protos.h
*** gcc-12.2.0/gcc/config/m32r/m32r-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/m32r-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for m32r.cc functions used in the md file & elsewhere.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for m32r.cc functions used in the md file & elsewhere.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/m32r.cc gcc-13.1.0/gcc/config/m32r/m32r.cc
*** gcc-12.2.0/gcc/config/m32r/m32r.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/m32r.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on the Renesas M32R cpu.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for code generation on the Renesas M32R cpu.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** m32r_setup_incoming_varargs (cumulative_
*** 1287,1297 ****
      return;
  
    /* All BLKmode values are passed by reference.  */
!   gcc_assert (arg.mode != BLKmode);
  
!   first_anon_arg = (ROUND_ADVANCE_CUM (*get_cumulative_args (cum),
! 				       arg.mode, arg.type)
! 		    + ROUND_ADVANCE_ARG (arg.mode, arg.type));
  
    if (first_anon_arg < M32R_MAX_PARM_REGS)
      {
--- 1287,1301 ----
      return;
  
    /* All BLKmode values are passed by reference.  */
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     gcc_assert (arg.mode != BLKmode);
  
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     first_anon_arg = (ROUND_ADVANCE_CUM (*get_cumulative_args (cum),
! 					 arg.mode, arg.type)
! 		      + ROUND_ADVANCE_ARG (arg.mode, arg.type));
!   else
!     first_anon_arg = *get_cumulative_args (cum);
  
    if (first_anon_arg < M32R_MAX_PARM_REGS)
      {
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/m32r.h gcc-13.1.0/gcc/config/m32r/m32r.h
*** gcc-12.2.0/gcc/config/m32r/m32r.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/m32r.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, Renesas M32R cpu.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, Renesas M32R cpu.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/m32r.md gcc-13.1.0/gcc/config/m32r/m32r.md
*** gcc-12.2.0/gcc/config/m32r/m32r.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/m32r.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of the Renesas M32R cpu for GNU C compiler
! ;; Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Machine description of the Renesas M32R cpu for GNU C compiler
! ;; Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/m32r.opt gcc-13.1.0/gcc/config/m32r/m32r.opt
*** gcc-12.2.0/gcc/config/m32r/m32r.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/m32r.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Renesas M32R port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Renesas M32R port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/predicates.md gcc-13.1.0/gcc/config/m32r/predicates.md
*** gcc-12.2.0/gcc/config/m32r/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Renesas M32R.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Renesas M32R.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/m32r/t-m32r gcc-13.1.0/gcc/config/m32r/t-m32r
*** gcc-12.2.0/gcc/config/m32r/t-m32r	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m32r/t-m32r	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1997-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1997-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/cf.md gcc-13.1.0/gcc/config/m68k/cf.md
*** gcc-12.2.0/gcc/config/m68k/cf.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/cf.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; ColdFire V1, V2, V3 and V4/V4e DFA description.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery Inc., www.codesourcery.com
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; ColdFire V1, V2, V3 and V4/V4e DFA description.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery Inc., www.codesourcery.com
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/constraints.md gcc-13.1.0/gcc/config/m68k/constraints.md
*** gcc-12.2.0/gcc/config/m68k/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for m68k
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Constraint definitions for m68k
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/genopt.sh gcc-13.1.0/gcc/config/m68k/genopt.sh
*** gcc-12.2.0/gcc/config/m68k/genopt.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/genopt.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  # Generate m68k-tables.opt from the lists in *.def.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  # Generate m68k-tables.opt from the lists in *.def.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** cat <<EOF
*** 23,29 ****
  ; Generated automatically by genopt.sh from m68k-devices.def,
  ; m68k-isas.def and m68k-microarchs.def.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 23,29 ----
  ; Generated automatically by genopt.sh from m68k-devices.def,
  ; m68k-isas.def and m68k-microarchs.def.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/ieee.opt gcc-13.1.0/gcc/config/m68k/ieee.opt
*** gcc-12.2.0/gcc/config/m68k/ieee.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/ieee.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Extra IEEE options for the Motorola 68000 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Extra IEEE options for the Motorola 68000 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/linux.h gcc-13.1.0/gcc/config/m68k/linux.h
*** gcc-12.2.0/gcc/config/m68k/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions for Motorola 68k running Linux-based GNU systems with
     ELF format.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions for Motorola 68k running Linux-based GNU systems with
     ELF format.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 146,155 ****
      fprintf (FILE, "\tjbsr _mcount\n");					\
  }
  
- /* Do not break .stabs pseudos into continuations.  */
- 
- #define DBX_CONTIN_LENGTH 0
- 
  /* 1 if N is a possible register number for a function value.  For
     m68k/SVR4 allow d0, a0, or fp0 as return registers, for integral,
     pointer, or floating types, respectively.  Reject fp0 if not using
--- 146,151 ----
*************** along with GCC; see the file COPYING3.
*** 228,235 ****
  
  #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
  
  #undef  SIZE_TYPE
  #define SIZE_TYPE "unsigned int"
--- 224,231 ----
  
  #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(REGNO) (REGNO)
  
  #undef  SIZE_TYPE
  #define SIZE_TYPE "unsigned int"
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68020-elf.h gcc-13.1.0/gcc/config/m68k/m68020-elf.h
*** gcc-12.2.0/gcc/config/m68k/m68020-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68020-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.  "naked" 68020,
     elf object files and debugging, version.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.  "naked" 68020,
     elf object files and debugging, version.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-devices.def gcc-13.1.0/gcc/config/m68k/m68k-devices.def
*** gcc-12.2.0/gcc/config/m68k/m68k-devices.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-devices.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* m68k device names -*- C -*-
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Written by CodeSourcery
  
     This file is part of GCC.
--- 1,5 ----
  /* m68k device names -*- C -*-
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Written by CodeSourcery
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-isas.def gcc-13.1.0/gcc/config/m68k/m68k-isas.def
*** gcc-12.2.0/gcc/config/m68k/m68k-isas.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-isas.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* m68k ISA names.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* m68k ISA names.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-microarchs.def gcc-13.1.0/gcc/config/m68k/m68k-microarchs.def
*** gcc-12.2.0/gcc/config/m68k/m68k-microarchs.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-microarchs.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* m68k microarchitecture names.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* m68k microarchitecture names.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-modes.def gcc-13.1.0/gcc/config/m68k/m68k-modes.def
*** gcc-12.2.0/gcc/config/m68k/m68k-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* M68k extra machine modes. 
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* M68k extra machine modes. 
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-none.h gcc-13.1.0/gcc/config/m68k/m68k-none.h
*** gcc-12.2.0/gcc/config/m68k/m68k-none.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-none.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  "naked" 68020.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  "naked" 68020.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-opts.h gcc-13.1.0/gcc/config/m68k/m68k-opts.h
*** gcc-12.2.0/gcc/config/m68k/m68k-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for Motorola 680x0/ColdFire.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for Motorola 680x0/ColdFire.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-protos.h gcc-13.1.0/gcc/config/m68k/m68k-protos.h
*** gcc-12.2.0/gcc/config/m68k/m68k-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  Sun 68000/68020 version.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  Sun 68000/68020 version.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern int emit_move_sequence (rtx *, ma
*** 84,89 ****
--- 84,90 ----
  extern bool m68k_movem_pattern_p (rtx, rtx, HOST_WIDE_INT, bool);
  extern const char *m68k_output_movem (rtx *, rtx, HOST_WIDE_INT, bool);
  extern bool m68k_epilogue_uses (int);
+ extern void m68k_final_prescan_insn (rtx_insn *, rtx *, int);
  
  /* Functions from m68k.cc used in constraints.md.  */
  extern rtx m68k_unwrap_symbol (rtx, bool);
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k-tables.opt gcc-13.1.0/gcc/config/m68k/m68k-tables.opt
*** gcc-12.2.0/gcc/config/m68k/m68k-tables.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k-tables.opt	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
  ; Generated automatically by genopt.sh from m68k-devices.def,
  ; m68k-isas.def and m68k-microarchs.def.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 2,8 ----
  ; Generated automatically by genopt.sh from m68k-devices.def,
  ; m68k-isas.def and m68k-microarchs.def.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k.cc gcc-13.1.0/gcc/config/m68k/m68k.cc
*** gcc-12.2.0/gcc/config/m68k/m68k.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for insn-output.cc for Motorola 68000 family.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for insn-output.cc for Motorola 68000 family.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** m68k_adjust_decorated_operand (rtx op)
*** 2550,2555 ****
--- 2550,2567 ----
      }
  }
  
+ /* Prescan insn before outputing assembler for it.  */
+ 
+ void
+ m68k_final_prescan_insn (rtx_insn *insn ATTRIBUTE_UNUSED,
+ 			 rtx *operands, int n_operands)
+ {
+   int i;
+ 
+   for (i = 0; i < n_operands; ++i)
+     m68k_adjust_decorated_operand (operands[i]);
+ }
+ 
  /* Move X to a register and add REG_EQUAL note pointing to ORIG.
     If REG is non-null, use it; generate new pseudo otherwise.  */
  
*************** handle_move_double (rtx operands[2],
*** 3658,3663 ****
--- 3670,3676 ----
  
    /* Normal case: do the two words, low-numbered first.  */
  
+   m68k_final_prescan_insn (NULL, operands, 2);
    handle_movsi (operands);
  
    /* Do the middle one of the three words for long double */
*************** handle_move_double (rtx operands[2],
*** 3668,3673 ****
--- 3681,3687 ----
        if (addreg1)
  	handle_reg_adjust (addreg1, 4);
  
+       m68k_final_prescan_insn (NULL, middlehalf, 2);
        handle_movsi (middlehalf);
      }
  
*************** handle_move_double (rtx operands[2],
*** 3678,3683 ****
--- 3692,3698 ----
      handle_reg_adjust (addreg1, 4);
  
    /* Do that word.  */
+   m68k_final_prescan_insn (NULL, latehalf, 2);
    handle_movsi (latehalf);
  
    /* Undo the adds we just did.  */
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k.h gcc-13.1.0/gcc/config/m68k/m68k.h
*** gcc-12.2.0/gcc/config/m68k/m68k.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC for Motorola 680x0/ColdFire.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GCC for Motorola 680x0/ColdFire.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** __transfer_from_trampoline ()					\
*** 707,713 ****
  
  /* On the Sun-3, the floating point registers have numbers
     18 to 25, not 16 to 23 as they do in the compiler.  */
! #define DBX_REGISTER_NUMBER(REGNO) ((REGNO) < 16 ? (REGNO) : (REGNO) + 2)
  
  /* Before the prologue, RA is at 0(%sp).  */
  #define INCOMING_RETURN_ADDR_RTX \
--- 707,713 ----
  
  /* On the Sun-3, the floating point registers have numbers
     18 to 25, not 16 to 23 as they do in the compiler.  */
! #define DEBUGGER_REGNO(REGNO) ((REGNO) < 16 ? (REGNO) : (REGNO) + 2)
  
  /* Before the prologue, RA is at 0(%sp).  */
  #define INCOMING_RETURN_ADDR_RTX \
*************** __transfer_from_trampoline ()					\
*** 720,726 ****
  					UNITS_PER_WORD))		   \
     : gen_rtx_MEM (Pmode, plus_constant (Pmode, FRAME, UNITS_PER_WORD)))
  
! /* We must not use the DBX register numbers for the DWARF 2 CFA column
     numbers because that maps to numbers beyond FIRST_PSEUDO_REGISTER.
     Instead use the identity mapping.  */
  #define DWARF_FRAME_REGNUM(REG) \
--- 720,726 ----
  					UNITS_PER_WORD))		   \
     : gen_rtx_MEM (Pmode, plus_constant (Pmode, FRAME, UNITS_PER_WORD)))
  
! /* We must not use the debugger register numbers for the DWARF 2 CFA column
     numbers because that maps to numbers beyond FIRST_PSEUDO_REGISTER.
     Instead use the identity mapping.  */
  #define DWARF_FRAME_REGNUM(REG) \
*************** __transfer_from_trampoline ()					\
*** 837,842 ****
--- 837,845 ----
    assemble_name ((FILE), (NAME)),		\
    fprintf ((FILE), ",%u\n", (int)(ROUNDED)))
  
+ #define FINAL_PRESCAN_INSN(INSN, OPVEC, NOPERANDS) \
+   m68k_final_prescan_insn (INSN, OPVEC, NOPERANDS)
+ 
  /* On the 68000, we use several CODE characters:
     '.' for dot needed in Motorola-style opcode names.
     '-' for an operand pushing on the stack:
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k.md gcc-13.1.0/gcc/config/m68k/m68k.md
*** gcc-12.2.0/gcc/config/m68k/m68k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for GNU compiler, Motorola 68000 Version
! ;;  Copyright (C) 1987-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;;- Machine description for GNU compiler, Motorola 68000 Version
! ;;  Copyright (C) 1987-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68k.opt gcc-13.1.0/gcc/config/m68k/m68k.opt
*** gcc-12.2.0/gcc/config/m68k/m68k.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68k.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Motorola 68000 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Motorola 68000 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68kelf.h gcc-13.1.0/gcc/config/m68k/m68kelf.h
*** gcc-12.2.0/gcc/config/m68k/m68kelf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68kelf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* m68kelf support, derived from m68kv4.h */
  
  /* Target definitions for GNU compiler for mc680x0 running System V.4
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     Written by Ron Guilmette (rfg@netcom.com) and Fred Fish (fnf@cygnus.com).
  
--- 1,7 ----
  /* m68kelf support, derived from m68kv4.h */
  
  /* Target definitions for GNU compiler for mc680x0 running System V.4
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     Written by Ron Guilmette (rfg@netcom.com) and Fred Fish (fnf@cygnus.com).
  
*************** do {								\
*** 100,107 ****
     SVR4 debugger in the m68k/SVR4 reference port, where d0-d7
     are 0-7, a0-a8 are 8-15, and fp0-fp7 are 16-23.  */
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(REGNO) (REGNO)
  
  #if 0
  /* SVR4 m68k assembler is bitching on the `comm i,1,1' which askes for 
--- 100,107 ----
     SVR4 debugger in the m68k/SVR4 reference port, where d0-d7
     are 0-7, a0-a8 are 8-15, and fp0-fp7 are 16-23.  */
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(REGNO) (REGNO)
  
  #if 0
  /* SVR4 m68k assembler is bitching on the `comm i,1,1' which askes for 
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/m68kemb.h gcc-13.1.0/gcc/config/m68k/m68kemb.h
*** gcc-12.2.0/gcc/config/m68k/m68kemb.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/m68kemb.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.  "embedded" 68XXX.
     This is meant to be included after m68k.h.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.  */
  
  /* Override the SVR4 ABI for this target.  */
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.  "embedded" 68XXX.
     This is meant to be included after m68k.h.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.  */
  
  /* Override the SVR4 ABI for this target.  */
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/netbsd-elf.h gcc-13.1.0/gcc/config/m68k/netbsd-elf.h
*** gcc-12.2.0/gcc/config/m68k/netbsd-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/netbsd-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Definitions of target machine for GNU compiler,
     for m68k (including m68010) NetBSD platforms using the
     ELF object format.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems. Inc.
  
     This file is derived from <m68k/m68kv4.h>, <m68k/m68kelf.h>,
--- 1,7 ----
  /* Definitions of target machine for GNU compiler,
     for m68k (including m68010) NetBSD platforms using the
     ELF object format.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems. Inc.
  
     This file is derived from <m68k/m68kv4.h>, <m68k/m68kelf.h>,
*************** while (0)
*** 215,227 ****
  #define M68K_STATIC_CHAIN_REG_NAME REGISTER_PREFIX "a1"
  
  
! /* Now to renumber registers for dbx and gdb.
     We use the Sun-3 convention, which is:
     floating point registers have numbers 18 to 25, not
     16 to 23 as they do in the compiler.  */
  
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(REGNO) ((REGNO) < 16 ? (REGNO) : (REGNO) + 2)
  
  
  /* 1 if N is a possible register number for a function value.  For
--- 215,227 ----
  #define M68K_STATIC_CHAIN_REG_NAME REGISTER_PREFIX "a1"
  
  
! /* Now to renumber registers for gdb.
     We use the Sun-3 convention, which is:
     floating point registers have numbers 18 to 25, not
     16 to 23 as they do in the compiler.  */
  
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(REGNO) ((REGNO) < 16 ? (REGNO) : (REGNO) + 2)
  
  
  /* 1 if N is a possible register number for a function value.  For
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/openbsd.h gcc-13.1.0/gcc/config/m68k/openbsd.h
*** gcc-12.2.0/gcc/config/m68k/openbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/openbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for an m68k OpenBSD target.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration file for an m68k OpenBSD target.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 60,77 ****
  /* Every structure or union's size must be a multiple of 2 bytes.  */
  #define STRUCTURE_SIZE_BOUNDARY 16
  
- /* Specific options for DBX Output.  */
- 
- /* This is BSD, so it wants DBX format.  */
- #define DBX_DEBUGGING_INFO 1
- 
- /* Do not break .stabs pseudos into continuations.  */
- #define DBX_CONTIN_LENGTH 0
- 
- /* This is the char to use for continuation (in case we need to turn
-    continuation back on).  */
- #define DBX_CONTIN_CHAR '?'
- 
  /* Stack & calling: aggregate returns.  */
  
  /* ??? This is traditional, but quite possibly wrong.  It appears to
--- 60,65 ----
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/predicates.md gcc-13.1.0/gcc/config/m68k/predicates.md
*** gcc-12.2.0/gcc/config/m68k/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Motorola 68000.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Motorola 68000.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 141,146 ****
--- 141,148 ----
  
      case CONST:
        op = XEXP (op, 0);
+       if (GET_CODE (op) == UNSPEC)
+         return false;
        return ((GET_CODE (XEXP (op, 0)) == SYMBOL_REF
  	       || GET_CODE (XEXP (op, 0)) == LABEL_REF)
  	      && GET_CODE (XEXP (op, 1)) == CONST_INT);
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/print-sysroot-suffix.sh gcc-13.1.0/gcc/config/m68k/print-sysroot-suffix.sh
*** gcc-12.2.0/gcc/config/m68k/print-sysroot-suffix.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/print-sysroot-suffix.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  #!/bin/sh
! # Copyright (C) 2006-2022 Free Software Foundation, Inc.
  # This file is part of GCC.
  
  # GCC is free software; you can redistribute it and/or modify
--- 1,5 ----
  #!/bin/sh
! # Copyright (C) 2006-2023 Free Software Foundation, Inc.
  # This file is part of GCC.
  
  # GCC is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/rtemself.h gcc-13.1.0/gcc/config/m68k/rtemself.h
*** gcc-12.2.0/gcc/config/m68k/rtemself.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/rtemself.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions for rtems targeting a Motorola m68k using elf.
     Copyright (C) 1999, 2000, 2002 National Research Council of Canada.
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
     Contributed by Charles-Antoine Gauthier (charles.gauthier@nrc.ca).
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions for rtems targeting a Motorola m68k using elf.
     Copyright (C) 1999, 2000, 2002 National Research Council of Canada.
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
     Contributed by Charles-Antoine Gauthier (charles.gauthier@nrc.ca).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/sync.md gcc-13.1.0/gcc/config/m68k/sync.md
*** gcc-12.2.0/gcc/config/m68k/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for m68k synchronization instructions.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for m68k synchronization instructions.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/t-linux gcc-13.1.0/gcc/config/m68k/t-linux
*** gcc-12.2.0/gcc/config/m68k/t-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/t-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2008-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/t-mlibs gcc-13.1.0/gcc/config/m68k/t-mlibs
*** gcc-12.2.0/gcc/config/m68k/t-mlibs	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/t-mlibs	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # multilibs  -*- mode:Makefile -*-
  #
! # Copyright (C) 2007-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # multilibs  -*- mode:Makefile -*-
  #
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/t-uclinux gcc-13.1.0/gcc/config/m68k/t-uclinux
*** gcc-12.2.0/gcc/config/m68k/t-uclinux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/t-uclinux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/uclinux.h gcc-13.1.0/gcc/config/m68k/uclinux.h
*** gcc-12.2.0/gcc/config/m68k/uclinux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/uclinux.h	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
     using ELF objects with special linker post-processing to produce FLAT
     executables.
  
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 2,8 ----
     using ELF objects with special linker post-processing to produce FLAT
     executables.
  
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/m68k/uclinux.opt gcc-13.1.0/gcc/config/m68k/uclinux.opt
*** gcc-12.2.0/gcc/config/m68k/uclinux.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/m68k/uclinux.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; m68k/ColdFire uClinux options.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; m68k/ColdFire uClinux options.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/constraints.md gcc-13.1.0/gcc/config/mcore/constraints.md
*** gcc-12.2.0/gcc/config/mcore/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for the Motorola MCore
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Constraint definitions for the Motorola MCore
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/mcore-elf.h gcc-13.1.0/gcc/config/mcore/mcore-elf.h
*** gcc-12.2.0/gcc/config/mcore/mcore-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/mcore-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of MCore target. 
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of MCore target. 
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Solutions.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/mcore-protos.h gcc-13.1.0/gcc/config/mcore/mcore-protos.h
*** gcc-12.2.0/gcc/config/mcore/mcore-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/mcore-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in mcore.cc
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Nick Clifton (nickc@redhat.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in mcore.cc
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Nick Clifton (nickc@redhat.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/mcore.cc gcc-13.1.0/gcc/config/mcore/mcore.cc
*** gcc-12.2.0/gcc/config/mcore/mcore.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/mcore.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Output routines for Motorola MCore processor
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Output routines for Motorola MCore processor
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** mcore_setup_incoming_varargs (cumulative
*** 1953,1960 ****
    /* We need to know how many argument registers are used before
       the varargs start, so that we can push the remaining argument
       registers during the prologue.  */
!   number_of_regs_before_varargs
!     = *args_so_far + mcore_num_arg_regs (arg.mode, arg.type);
    
    /* There is a bug somewhere in the arg handling code.
       Until I can find it this workaround always pushes the
--- 1953,1961 ----
    /* We need to know how many argument registers are used before
       the varargs start, so that we can push the remaining argument
       registers during the prologue.  */
!   number_of_regs_before_varargs = *args_so_far;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     number_of_regs_before_varargs += mcore_num_arg_regs (arg.mode, arg.type);
    
    /* There is a bug somewhere in the arg handling code.
       Until I can find it this workaround always pushes the
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/mcore.h gcc-13.1.0/gcc/config/mcore/mcore.h
*** gcc-12.2.0/gcc/config/mcore/mcore.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/mcore.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for Motorola M*CORE Processor.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for Motorola M*CORE Processor.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/mcore.md gcc-13.1.0/gcc/config/mcore/mcore.md
*** gcc-12.2.0/gcc/config/mcore/mcore.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/mcore.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine description the Motorola MCore
! ;;  Copyright (C) 1993-2022 Free Software Foundation, Inc.
  ;;  Contributed by Motorola.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine description the Motorola MCore
! ;;  Copyright (C) 1993-2023 Free Software Foundation, Inc.
  ;;  Contributed by Motorola.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/mcore.opt gcc-13.1.0/gcc/config/mcore/mcore.opt
*** gcc-12.2.0/gcc/config/mcore/mcore.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/mcore.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Motorola MCore port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Motorola MCore port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/predicates.md gcc-13.1.0/gcc/config/mcore/predicates.md
*** gcc-12.2.0/gcc/config/mcore/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Motorola MCore.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Motorola MCore.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mcore/t-mcore gcc-13.1.0/gcc/config/mcore/t-mcore
*** gcc-12.2.0/gcc/config/mcore/t-mcore	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mcore/t-mcore	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2000-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2000-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/constraints.md gcc-13.1.0/gcc/config/microblaze/constraints.md
*** gcc-12.2.0/gcc/config/microblaze/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Xilinx MicroBlaze processors.
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
  ;; Contributed by Michael Eager <eager@eagercon.com>.
  
--- 1,5 ----
  ;; Constraint definitions for Xilinx MicroBlaze processors.
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
  ;; Contributed by Michael Eager <eager@eagercon.com>.
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/linux.h gcc-13.1.0/gcc/config/microblaze/linux.h
*** gcc-12.2.0/gcc/config/microblaze/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for MicroBlaze running Linux.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for MicroBlaze running Linux.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/microblaze-c.cc gcc-13.1.0/gcc/config/microblaze/microblaze-c.cc
*** gcc-12.2.0/gcc/config/microblaze/microblaze-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/microblaze-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for the C front end for Xilinx MicroBlaze.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
     Contributed by Michael Eager <eager@eagercon.com>.
  
--- 1,5 ----
  /* Subroutines used for the C front end for Xilinx MicroBlaze.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
     Contributed by Michael Eager <eager@eagercon.com>.
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/microblaze-protos.h gcc-13.1.0/gcc/config/microblaze/microblaze-protos.h
*** gcc-12.2.0/gcc/config/microblaze/microblaze-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/microblaze-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for Xilinx MicroBlaze.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for Xilinx MicroBlaze.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/microblaze.cc gcc-13.1.0/gcc/config/microblaze/microblaze.cc
*** gcc-12.2.0/gcc/config/microblaze/microblaze.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/microblaze.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on Xilinx MicroBlaze.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     Contributed by Michael Eager <eager@eagercon.com>.
  
--- 1,5 ----
  /* Subroutines used for code generation on Xilinx MicroBlaze.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     Contributed by Michael Eager <eager@eagercon.com>.
  
*************** struct microblaze_frame_info zero_frame_
*** 193,199 ****
  char microblaze_print_operand_punct[256];
  
  /* Map GCC register number to debugger register number.  */
! int microblaze_dbx_regno[FIRST_PSEUDO_REGISTER];
  
  /* Map hard register number to register class.  */
  enum reg_class microblaze_regno_to_class[] =
--- 193,199 ----
  char microblaze_print_operand_punct[256];
  
  /* Map GCC register number to debugger register number.  */
! int microblaze_debugger_regno[FIRST_PSEUDO_REGISTER];
  
  /* Map hard register number to register class.  */
  enum reg_class microblaze_regno_to_class[] =
*************** microblaze_legitimize_address (rtx x, rt
*** 1103,1109 ****
  
    if (GET_CODE (xinsn) == SYMBOL_REF)
      {
!       rtx reg;
        if (microblaze_tls_symbol_p(xinsn))
          {
            reg = microblaze_legitimize_tls_address (xinsn, NULL_RTX);
--- 1103,1109 ----
  
    if (GET_CODE (xinsn) == SYMBOL_REF)
      {
!       rtx reg = NULL;
        if (microblaze_tls_symbol_p(xinsn))
          {
            reg = microblaze_legitimize_tls_address (xinsn, NULL_RTX);
*************** microblaze_legitimize_address (rtx x, rt
*** 1133,1138 ****
--- 1133,1143 ----
  	      reg = pic_ref;
  	    }
  	}
+       else
+ 	{
+ 	  /* This should never happen.  */
+ 	  gcc_unreachable ();
+ 	}
        return reg;
      }
  
*************** microblaze_address_insns (rtx x, machine
*** 1474,1480 ****
  	      case TLS_DTPREL:
  		return 1;
  	      default :
! 		abort();
  	    }
  	default:
  	  break;
--- 1479,1485 ----
  	      case TLS_DTPREL:
  		return 1;
  	      default :
! 		gcc_unreachable ();
  	    }
  	default:
  	  break;
*************** microblaze_option_override (void)
*** 1881,1891 ****
       Ignore the special purpose register numbers.  */
  
    for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     microblaze_dbx_regno[i] = -1;
  
!   start = GP_DBX_FIRST - GP_REG_FIRST;
    for (i = GP_REG_FIRST; i <= GP_REG_LAST; i++)
!     microblaze_dbx_regno[i] = i + start;
  
    /* Set up array giving whether a given register can hold a given mode.   */
  
--- 1886,1896 ----
       Ignore the special purpose register numbers.  */
  
    for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
!     microblaze_debugger_regno[i] = -1;
  
!   start = GP_DEBUGGER_FIRST - GP_REG_FIRST;
    for (i = GP_REG_FIRST; i <= GP_REG_LAST; i++)
!     microblaze_debugger_regno[i] = i + start;
  
    /* Set up array giving whether a given register can hold a given mode.   */
  
*************** print_operand_address (FILE * file, rtx
*** 2624,2630 ****
  		fputs ("@TLSDTPREL", file);
  		break;
  	      default :
! 		abort();
  		break;
  	    }
  	}
--- 2629,2635 ----
  		fputs ("@TLSDTPREL", file);
  		break;
  	      default :
! 		gcc_unreachable ();
  		break;
  	    }
  	}
*************** microblaze_expand_move (machine_mode mod
*** 3413,3419 ****
      }
    if (GET_CODE (op1) == PLUS && GET_CODE (XEXP (op1,1)) == CONST)
      {
!       rtx p0, p1, result, temp;
  
        p0 = XEXP (XEXP (op1,1), 0);
  
--- 3418,3424 ----
      }
    if (GET_CODE (op1) == PLUS && GET_CODE (XEXP (op1,1)) == CONST)
      {
!       rtx p0, p1 = NULL, result, temp;
  
        p0 = XEXP (XEXP (op1,1), 0);
  
*************** microblaze_expand_move (machine_mode mod
*** 3423,3428 ****
--- 3428,3437 ----
  	  p0 = XEXP (p0, 0);
  	}
  
+       /* This should never happen.  */
+       if (p1 == NULL)
+ 	gcc_unreachable ();
+ 
        if (GET_CODE (p0) == UNSPEC && GET_CODE (p1) == CONST_INT
  	  && flag_pic && TARGET_PIC_DATA_TEXT_REL)
  	{
*************** get_branch_target (rtx branch)
*** 3799,3805 ****
        if (GET_CODE (call) == SET)
          call = SET_SRC (call);
        if (GET_CODE (call) != CALL)
!         abort ();
        return XEXP (XEXP (call, 0), 0);
      }
  
--- 3808,3814 ----
        if (GET_CODE (call) == SET)
          call = SET_SRC (call);
        if (GET_CODE (call) != CALL)
! 	gcc_unreachable ();
        return XEXP (XEXP (call, 0), 0);
      }
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/microblaze.h gcc-13.1.0/gcc/config/microblaze/microblaze.h
*** gcc-12.2.0/gcc/config/microblaze/microblaze.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/microblaze.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for Xilinx MicroBlaze.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
     Contributed by Michael Eager <eager@eagercon.com>.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for Xilinx MicroBlaze.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
     Contributed by Michael Eager <eager@eagercon.com>.
  
*************** extern char microblaze_print_operand_pun
*** 39,45 ****
  extern int microblaze_section_threshold;
  
  /* Map register # to debug register # */
! extern int microblaze_dbx_regno[];
  
  extern int microblaze_no_unsafe_delay;
  extern int microblaze_has_clz;
--- 39,45 ----
  extern int microblaze_section_threshold;
  
  /* Map register # to debug register # */
! extern int microblaze_debugger_regno[];
  
  extern int microblaze_no_unsafe_delay;
  extern int microblaze_has_clz;
*************** extern enum pipeline_type microblaze_pip
*** 163,170 ****
  
  /* Debug stuff.  */
  
! /* How to renumber registers for dbx and gdb.  */
! #define DBX_REGISTER_NUMBER(REGNO) microblaze_dbx_regno[(REGNO)]
  
  /* Generate DWARF exception handling info.  */
  #define DWARF2_UNWIND_INFO 1
--- 163,170 ----
  
  /* Debug stuff.  */
  
! /* How to renumber registers for gdb.  */
! #define DEBUGGER_REGNO(REGNO) microblaze_debugger_regno[(REGNO)]
  
  /* Generate DWARF exception handling info.  */
  #define DWARF2_UNWIND_INFO 1
*************** extern enum pipeline_type microblaze_pip
*** 276,282 ****
  #define GP_REG_FIRST    0
  #define GP_REG_LAST     31
  #define GP_REG_NUM      (GP_REG_LAST - GP_REG_FIRST + 1)
! #define GP_DBX_FIRST    0
  
  #define ST_REG		32
  #define AP_REG_NUM      33
--- 276,282 ----
  #define GP_REG_FIRST    0
  #define GP_REG_LAST     31
  #define GP_REG_NUM      (GP_REG_LAST - GP_REG_FIRST + 1)
! #define GP_DEBUGGER_FIRST    0
  
  #define ST_REG		32
  #define AP_REG_NUM      33
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/microblaze.md gcc-13.1.0/gcc/config/microblaze/microblaze.md
*** gcc-12.2.0/gcc/config/microblaze/microblaze.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/microblaze.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; microblaze.md -- Machine description for Xilinx MicroBlaze processors.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  ;; Contributed by Michael Eager <eager@eagercon.com>.
  
--- 1,5 ----
  ;; microblaze.md -- Machine description for Xilinx MicroBlaze processors.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  ;; Contributed by Michael Eager <eager@eagercon.com>.
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/microblaze.opt gcc-13.1.0/gcc/config/microblaze/microblaze.opt
*** gcc-12.2.0/gcc/config/microblaze/microblaze.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/microblaze.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the MicroBlaze port of the compiler
  ;
! ; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;
  ; Contributed by Michael Eager <eager@eagercon.com>.
  ;
--- 1,6 ----
  ; Options for the MicroBlaze port of the compiler
  ;
! ; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;
  ; Contributed by Michael Eager <eager@eagercon.com>.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/predicates.md gcc-13.1.0/gcc/config/microblaze/predicates.md
*** gcc-12.2.0/gcc/config/microblaze/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Xilinx MicroBlaze
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Michael Eager <eager@eagercon.com>.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Xilinx MicroBlaze
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Michael Eager <eager@eagercon.com>.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/rtems.h gcc-13.1.0/gcc/config/microblaze/rtems.h
*** gcc-12.2.0/gcc/config/microblaze/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a microblaze using ELF.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for rtems targeting a microblaze using ELF.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/microblaze/sync.md gcc-13.1.0/gcc/config/microblaze/sync.md
*** gcc-12.2.0/gcc/config/microblaze/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/microblaze/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for Xilinx MicroBlaze synchronization instructions.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Machine description for Xilinx MicroBlaze synchronization instructions.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/10000.md gcc-13.1.0/gcc/config/mips/10000.md
*** gcc-12.2.0/gcc/config/mips/10000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/10000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA-based pipeline description for the VR1x000.
! ;;   Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; DFA-based pipeline description for the VR1x000.
! ;;   Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/20kc.md gcc-13.1.0/gcc/config/mips/20kc.md
*** gcc-12.2.0/gcc/config/mips/20kc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/20kc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/24k.md gcc-13.1.0/gcc/config/mips/24k.md
*** gcc-12.2.0/gcc/config/mips/24k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/24k.md	Wed Apr 26 07:09:39 2023
***************
*** 8,14 ****
  ;; References:
  ;;   "MIPS32 24K Processor Core Family Software User's Manual, Rev 3.04."
  ;;
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 8,14 ----
  ;; References:
  ;;   "MIPS32 24K Processor Core Family Software User's Manual, Rev 3.04."
  ;;
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/3000.md gcc-13.1.0/gcc/config/mips/3000.md
*** gcc-12.2.0/gcc/config/mips/3000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/3000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; R3000 and TX39 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; R3000 and TX39 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/4000.md gcc-13.1.0/gcc/config/mips/4000.md
*** gcc-12.2.0/gcc/config/mips/4000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/4000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; R4000 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; R4000 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/4100.md gcc-13.1.0/gcc/config/mips/4100.md
*** gcc-12.2.0/gcc/config/mips/4100.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/4100.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; VR4100 and VR4120 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; VR4100 and VR4120 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/4130.md gcc-13.1.0/gcc/config/mips/4130.md
*** gcc-12.2.0/gcc/config/mips/4130.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/4130.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/4300.md gcc-13.1.0/gcc/config/mips/4300.md
*** gcc-12.2.0/gcc/config/mips/4300.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/4300.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; VR4300 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; VR4300 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/4600.md gcc-13.1.0/gcc/config/mips/4600.md
*** gcc-12.2.0/gcc/config/mips/4600.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/4600.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; R4600, R4650, and R4700 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; R4600, R4650, and R4700 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/4k.md gcc-13.1.0/gcc/config/mips/4k.md
*** gcc-12.2.0/gcc/config/mips/4k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/4k.md	Wed Apr 26 07:09:39 2023
***************
*** 10,16 ****
  ;; 4km - pipelined multiplier and block address translator (BAT)
  ;; 4kp - non-pipelined multiplier and block address translator (BAT)
  ;;
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 10,16 ----
  ;; 4km - pipelined multiplier and block address translator (BAT)
  ;; 4kp - non-pipelined multiplier and block address translator (BAT)
  ;;
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/5000.md gcc-13.1.0/gcc/config/mips/5000.md
*** gcc-12.2.0/gcc/config/mips/5000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/5000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; VR5000 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; VR5000 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/5400.md gcc-13.1.0/gcc/config/mips/5400.md
*** gcc-12.2.0/gcc/config/mips/5400.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/5400.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/5500.md gcc-13.1.0/gcc/config/mips/5500.md
*** gcc-12.2.0/gcc/config/mips/5500.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/5500.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/5k.md gcc-13.1.0/gcc/config/mips/5k.md
*** gcc-12.2.0/gcc/config/mips/5k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/5k.md	Wed Apr 26 07:09:39 2023
***************
*** 10,16 ****
  ;; 5kf - Separate floating point pipe which can dual-issue with the
  ;;       integer pipe.
  ;;
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 10,16 ----
  ;; 5kf - Separate floating point pipe which can dual-issue with the
  ;;       integer pipe.
  ;;
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/6000.md gcc-13.1.0/gcc/config/mips/6000.md
*** gcc-12.2.0/gcc/config/mips/6000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/6000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; R6000 pipeline description.
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; R6000 pipeline description.
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/7000.md gcc-13.1.0/gcc/config/mips/7000.md
*** gcc-12.2.0/gcc/config/mips/7000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/7000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA-based pipeline description for the RM7000.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; DFA-based pipeline description for the RM7000.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/74k.md gcc-13.1.0/gcc/config/mips/74k.md
*** gcc-12.2.0/gcc/config/mips/74k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/74k.md	Wed Apr 26 07:09:39 2023
***************
*** 5,11 ****
  ;;   "MIPS32 74K Microarchitecure Specification Rev. 01.02 Jun 15, 2006"
  ;;   "MIPS32 74Kf Processor Core Datasheet Jun 2, 2006"
  ;;
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 5,11 ----
  ;;   "MIPS32 74K Microarchitecure Specification Rev. 01.02 Jun 15, 2006"
  ;;   "MIPS32 74Kf Processor Core Datasheet Jun 2, 2006"
  ;;
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/9000.md gcc-13.1.0/gcc/config/mips/9000.md
*** gcc-12.2.0/gcc/config/mips/9000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/9000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA-based pipeline description for the RM9000.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; DFA-based pipeline description for the RM9000.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/constraints.md gcc-13.1.0/gcc/config/mips/constraints.md
*** gcc-12.2.0/gcc/config/mips/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for MIPS.
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for MIPS.
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/driver-native.cc gcc-13.1.0/gcc/config/mips/driver-native.cc
*** gcc-12.2.0/gcc/config/mips/driver-native.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/driver-native.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 23,28 ****
--- 23,31 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #ifdef HAVE_SYS_AUXV_H
+ #include <sys/auxv.h>
+ #endif
  
  /* This will be called by the spec parser in gcc.cc when it sees
     a %:local_cpu_detect(args) construct.  Currently it will be called
*************** const char *
*** 41,46 ****
--- 44,50 ----
  host_detect_local_cpu (int argc, const char **argv)
  {
    const char *cpu = NULL;
+   char *ret = NULL;
    char buf[128];
    FILE *f;
    bool arch;
*************** host_detect_local_cpu (int argc, const c
*** 54,60 ****
  
    f = fopen ("/proc/cpuinfo", "r");
    if (f == NULL)
!     return NULL;
  
    while (fgets (buf, sizeof (buf), f) != NULL)
      if (startswith (buf, "cpu model"))
--- 58,64 ----
  
    f = fopen ("/proc/cpuinfo", "r");
    if (f == NULL)
!     goto fallback_cpu;
  
    while (fgets (buf, sizeof (buf), f) != NULL)
      if (startswith (buf, "cpu model"))
*************** host_detect_local_cpu (int argc, const c
*** 84,91 ****
  
    fclose (f);
  
    if (cpu == NULL)
!     return NULL;
  
!   return concat ("-m", argv[0], "=", cpu, NULL);
  }
--- 88,110 ----
  
    fclose (f);
  
+ fallback_cpu:
+ #if defined (__mips_nan2008)
+   ret = reconcat (ret, " -mnan=2008 ", NULL);
+ #endif
+ 
+ #ifdef HAVE_GETAUXVAL
    if (cpu == NULL)
!     cpu = (const char *) getauxval (AT_BASE_PLATFORM);
! #endif
  
! #if defined (_MIPS_ARCH)
!   if (cpu == NULL)
!     cpu = _MIPS_ARCH;
! #endif
! 
!   if (cpu)
!     ret = reconcat (ret, ret, "-m", argv[0], "=", cpu, NULL);
! 
!   return ret;
  }
diff -Nrcpad gcc-12.2.0/gcc/config/mips/elf.h gcc-13.1.0/gcc/config/mips/elf.h
*** gcc-12.2.0/gcc/config/mips/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target macros for mips*-elf targets.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Target macros for mips*-elf targets.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/elfoabi.h gcc-13.1.0/gcc/config/mips/elfoabi.h
*** gcc-12.2.0/gcc/config/mips/elfoabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/elfoabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target macros for mips*-elf targets that selected between o32 and o64
     based on the target architecture.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Target macros for mips*-elf targets that selected between o32 and o64
     based on the target architecture.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/elforion.h gcc-13.1.0/gcc/config/mips/elforion.h
*** gcc-12.2.0/gcc/config/mips/elforion.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/elforion.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  MIPS ORION version.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  MIPS ORION version.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/frame-header-opt.cc gcc-13.1.0/gcc/config/mips/frame-header-opt.cc
*** gcc-12.2.0/gcc/config/mips/frame-header-opt.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/frame-header-opt.cc	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
     targets, if a frame header is required, it is allocated by the callee.
  
  
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 4,10 ----
     targets, if a frame header is required, it is allocated by the callee.
  
  
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/generic.md gcc-13.1.0/gcc/config/mips/generic.md
*** gcc-12.2.0/gcc/config/mips/generic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/generic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Generic DFA-based pipeline description for MIPS targets
! ;;   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Generic DFA-based pipeline description for MIPS targets
! ;;   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/genopt.sh gcc-13.1.0/gcc/config/mips/genopt.sh
*** gcc-12.2.0/gcc/config/mips/genopt.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/genopt.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  # Generate mips-tables.opt from the list of CPUs in mips-cpus.def.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  # Generate mips-tables.opt from the list of CPUs in mips-cpus.def.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** cat <<EOF
*** 22,28 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from mips-cpus.def.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 22,28 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from mips-cpus.def.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/gnu-user.h gcc-13.1.0/gcc/config/mips/gnu-user.h
*** gcc-12.2.0/gcc/config/mips/gnu-user.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/gnu-user.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for MIPS systems using GNU userspace.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for MIPS systems using GNU userspace.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern const char *host_detect_local_cpu
*** 139,145 ****
  /* Similar to standard Linux, but adding -ffast-math support.  */
  #undef	GNU_USER_TARGET_MATHFILE_SPEC
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
    GNU_USER_TARGET_MATHFILE_SPEC " " \
--- 139,145 ----
  /* Similar to standard Linux, but adding -ffast-math support.  */
  #undef	GNU_USER_TARGET_MATHFILE_SPEC
  #define GNU_USER_TARGET_MATHFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
    GNU_USER_TARGET_MATHFILE_SPEC " " \
diff -Nrcpad gcc-12.2.0/gcc/config/mips/gs264e.md gcc-13.1.0/gcc/config/mips/gs264e.md
*** gcc-12.2.0/gcc/config/mips/gs264e.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/gs264e.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Pipeline model for Loongson gs264e cores.
  
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; Pipeline model for Loongson gs264e cores.
  
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/gs464.md gcc-13.1.0/gcc/config/mips/gs464.md
*** gcc-12.2.0/gcc/config/mips/gs464.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/gs464.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Pipeline model for Loongson gs464 cores.
  
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; Pipeline model for Loongson gs464 cores.
  
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/gs464e.md gcc-13.1.0/gcc/config/mips/gs464e.md
*** gcc-12.2.0/gcc/config/mips/gs464e.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/gs464e.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Pipeline model for Loongson gs464e cores.
  
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; Pipeline model for Loongson gs464e cores.
  
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/i6400.md gcc-13.1.0/gcc/config/mips/i6400.md
*** gcc-12.2.0/gcc/config/mips/i6400.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/i6400.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA-based pipeline description for I6400.
  ;;
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; DFA-based pipeline description for I6400.
  ;;
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/linux-common.h gcc-13.1.0/gcc/config/mips/linux-common.h
*** gcc-12.2.0/gcc/config/mips/linux-common.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/linux-common.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for MIPS running Linux-based GNU systems with ELF format.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for MIPS running Linux-based GNU systems with ELF format.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 27,35 ****
      ANDROID_TARGET_OS_CPP_BUILTINS();				\
    } while (0)
  
- #define EXTRA_TARGET_D_OS_VERSIONS()				\
-   ANDROID_TARGET_D_OS_VERSIONS();
- 
  #undef  LINK_SPEC
  #define LINK_SPEC							\
    LINUX_OR_ANDROID_LD (GNU_USER_TARGET_LINK_SPEC,			\
--- 27,32 ----
diff -Nrcpad gcc-12.2.0/gcc/config/mips/linux.h gcc-13.1.0/gcc/config/mips/linux.h
*** gcc-12.2.0/gcc/config/mips/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for MIPS running Linux-based GNU systems with ELF format.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for MIPS running Linux-based GNU systems with ELF format.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/loongson-mmi.md gcc-13.1.0/gcc/config/mips/loongson-mmi.md
*** gcc-12.2.0/gcc/config/mips/loongson-mmi.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/loongson-mmi.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for Loongson MultiMedia extensions Instructions (MMI).
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for Loongson MultiMedia extensions Instructions (MMI).
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/loongson-mmiintrin.h gcc-13.1.0/gcc/config/mips/loongson-mmiintrin.h
*** gcc-12.2.0/gcc/config/mips/loongson-mmiintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/loongson-mmiintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Intrinsics for Loongson MultiMedia extension Instructions operations.
  
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,6 ----
  /* Intrinsics for Loongson MultiMedia extension Instructions operations.
  
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/loongson.h gcc-13.1.0/gcc/config/mips/loongson.h
*** gcc-12.2.0/gcc/config/mips/loongson.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/loongson.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Intrinsics for Loongson MultiMedia extension Instructions operations.
  
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
--- 1,6 ----
  /* Intrinsics for Loongson MultiMedia extension Instructions operations.
  
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/loongson2ef.md gcc-13.1.0/gcc/config/mips/loongson2ef.md
*** gcc-12.2.0/gcc/config/mips/loongson2ef.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/loongson2ef.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Pipeline model for ST Microelectronics Loongson-2E/2F cores.
  
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; GCC is free software; you can redistribute it and/or modify
--- 1,6 ----
  ;; Pipeline model for ST Microelectronics Loongson-2E/2F cores.
  
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Contributed by CodeSourcery.
  ;;
  ;; GCC is free software; you can redistribute it and/or modify
diff -Nrcpad gcc-12.2.0/gcc/config/mips/m5100.md gcc-13.1.0/gcc/config/mips/m5100.md
*** gcc-12.2.0/gcc/config/mips/m5100.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/m5100.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA-based pipeline description for MIPS32 models M5100.
  ;;
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; DFA-based pipeline description for MIPS32 models M5100.
  ;;
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/micromips.md gcc-13.1.0/gcc/config/mips/micromips.md
*** gcc-12.2.0/gcc/config/mips/micromips.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/micromips.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;
  ;; micromips.md   Machine Description for the microMIPS instruction set
  ;; This file is part of GCC.
--- 1,4 ----
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;
  ;; micromips.md   Machine Description for the microMIPS instruction set
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-cpus.def gcc-13.1.0/gcc/config/mips/mips-cpus.def
*** gcc-12.2.0/gcc/config/mips/mips-cpus.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-cpus.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* MIPS CPU names.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* MIPS CPU names.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-d.cc gcc-13.1.0/gcc/config/mips/mips-d.cc
*** gcc-12.2.0/gcc/config/mips/mips-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the MIPS architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the MIPS architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-d.h gcc-13.1.0/gcc/config/mips/mips-d.h
*** gcc-12.2.0/gcc/config/mips/mips-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/mips/mips-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the MIPS architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Routines implemented in mips-d.cc  */
+ extern void mips_d_target_versions (void);
+ extern void mips_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS mips_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO mips_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-dsp.md gcc-13.1.0/gcc/config/mips/mips-dsp.md
*** gcc-12.2.0/gcc/config/mips/mips-dsp.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-dsp.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-dspr2.md gcc-13.1.0/gcc/config/mips/mips-dspr2.md
*** gcc-12.2.0/gcc/config/mips/mips-dspr2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-dspr2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-fixed.md gcc-13.1.0/gcc/config/mips/mips-fixed.md
*** gcc-12.2.0/gcc/config/mips/mips-fixed.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-fixed.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-ftypes.def gcc-13.1.0/gcc/config/mips/mips-ftypes.def
*** gcc-12.2.0/gcc/config/mips/mips-ftypes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-ftypes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of prototypes for MIPS built-in functions.  -*- C -*-
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of prototypes for MIPS built-in functions.  -*- C -*-
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-modes.def gcc-13.1.0/gcc/config/mips/mips-modes.def
*** gcc-12.2.0/gcc/config/mips/mips-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* MIPS extra machine modes. 
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* MIPS extra machine modes. 
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-msa.md gcc-13.1.0/gcc/config/mips/mips-msa.md
*** gcc-12.2.0/gcc/config/mips/mips-msa.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-msa.md	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ;; Machine Description for MIPS MSA ASE
  ;; Based on the MIPS MSA spec Revision 1.11 8/4/2014
  ;;
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,7 ----
  ;; Machine Description for MIPS MSA ASE
  ;; Based on the MIPS MSA spec Revision 1.11 8/4/2014
  ;;
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-opts.h gcc-13.1.0/gcc/config/mips/mips-opts.h
*** gcc-12.2.0/gcc/config/mips/mips-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for MIPS.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for MIPS.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-protos.h gcc-13.1.0/gcc/config/mips/mips-protos.h
*** gcc-12.2.0/gcc/config/mips/mips-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes of target machine for GNU compiler.  MIPS version.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by A. Lichnewsky (lich@inria.inria.fr).
     Changed by Michael Meissner	(meissner@osf.org).
     64-bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
--- 1,5 ----
  /* Prototypes of target machine for GNU compiler.  MIPS version.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by A. Lichnewsky (lich@inria.inria.fr).
     Changed by Michael Meissner	(meissner@osf.org).
     64-bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
*************** extern void mips_declare_object (FILE *,
*** 271,277 ****
  extern void mips_declare_object_name (FILE *, const char *, tree);
  extern void mips_finish_declare_object (FILE *, tree, int, int);
  extern void mips_set_text_contents_type (FILE *, const char *,
! 					 unsigned long, bool);
  
  extern bool mips_small_data_pattern_p (rtx);
  extern rtx mips_rewrite_small_data (rtx);
--- 271,277 ----
  extern void mips_declare_object_name (FILE *, const char *, tree);
  extern void mips_finish_declare_object (FILE *, tree, int, int);
  extern void mips_set_text_contents_type (FILE *, const char *,
! 					 unsigned HOST_WIDE_INT, bool);
  
  extern bool mips_small_data_pattern_p (rtx);
  extern rtx mips_rewrite_small_data (rtx);
*************** extern void mips_register_frame_header_o
*** 388,395 ****
  extern void mips_expand_vec_cond_expr (machine_mode, machine_mode, rtx *);
  extern void mips_expand_vec_cmp_expr (rtx *);
  
- /* Routines implemented in mips-d.cc  */
- extern void mips_d_target_versions (void);
- extern void mips_d_register_target_info (void);
- 
  #endif /* ! GCC_MIPS_PROTOS_H */
--- 388,391 ----
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-ps-3d.md gcc-13.1.0/gcc/config/mips/mips-ps-3d.md
*** gcc-12.2.0/gcc/config/mips/mips-ps-3d.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-ps-3d.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; MIPS Paired-Single Floating and MIPS-3D Instructions.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; MIPS Paired-Single Floating and MIPS-3D Instructions.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips-tables.opt gcc-13.1.0/gcc/config/mips/mips-tables.opt
*** gcc-12.2.0/gcc/config/mips/mips-tables.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips-tables.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from mips-cpus.def.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from mips-cpus.def.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips.cc gcc-13.1.0/gcc/config/mips/mips.cc
*** gcc-12.2.0/gcc/config/mips/mips.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for MIPS code generation.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by A. Lichnewsky, lich@inria.inria.fr.
     Changes by Michael Meissner, meissner@osf.org.
     64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
--- 1,5 ----
  /* Subroutines used for MIPS code generation.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by A. Lichnewsky, lich@inria.inria.fr.
     Changes by Michael Meissner, meissner@osf.org.
     64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
*************** int num_source_filenames;
*** 445,451 ****
  const char *current_function_file = "";
  
  /* Arrays that map GCC register numbers to debugger register numbers.  */
- int mips_dbx_regno[FIRST_PSEUDO_REGISTER];
  int mips_dwarf_regno[FIRST_PSEUDO_REGISTER];
  
  /* Information about the current function's epilogue, used only while
--- 445,450 ----
*************** static const struct attribute_spec mips_
*** 631,636 ****
--- 630,636 ----
      mips_handle_use_shadow_register_set_attr, NULL },
    { "keep_interrupts_masked",	0, 0, false, true,  true, false, NULL, NULL },
    { "use_debug_exception_return", 0, 0, false, true, true, false, NULL, NULL },
+   { "use_hazard_barrier_return", 0, 0, true, false, false, false, NULL, NULL },
    { NULL,	   0, 0, false, false, false, false, NULL, NULL }
  };
  
*************** mips_setup_incoming_varargs (cumulative_
*** 6684,6690 ****
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *get_cumulative_args (cum);
!   mips_function_arg_advance (pack_cumulative_args (&local_cum), arg);
  
    /* Found out how many registers we need to save.  */
    gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
--- 6684,6691 ----
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *get_cumulative_args (cum);
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     mips_function_arg_advance (pack_cumulative_args (&local_cum), arg);
  
    /* Found out how many registers we need to save.  */
    gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
*************** mips_output_filename (FILE *stream, cons
*** 9595,9604 ****
        output_quoted_string (stream, name);
        putc ('\n', stream);
      }
-   /* If we are emitting stabs, let dbxout.cc handle this (except for
-      the mips_output_filename_first_time case).  */
-   else if (write_symbols == DBX_DEBUG)
-     return;
    else if (name != current_function_file
  	   && strcmp (name, current_function_file) != 0)
      {
--- 9596,9601 ----
*************** mips_finish_declare_object (FILE *stream
*** 9926,9932 ****
  void
  mips_set_text_contents_type (FILE *file ATTRIBUTE_UNUSED,
  			     const char *prefix ATTRIBUTE_UNUSED,
! 			     unsigned long num ATTRIBUTE_UNUSED,
  			     bool function_p ATTRIBUTE_UNUSED)
  {
  #ifdef ASM_OUTPUT_TYPE_DIRECTIVE
--- 9923,9929 ----
  void
  mips_set_text_contents_type (FILE *file ATTRIBUTE_UNUSED,
  			     const char *prefix ATTRIBUTE_UNUSED,
! 			     unsigned HOST_WIDE_INT num ATTRIBUTE_UNUSED,
  			     bool function_p ATTRIBUTE_UNUSED)
  {
  #ifdef ASM_OUTPUT_TYPE_DIRECTIVE
*************** mips_set_text_contents_type (FILE *file
*** 9935,9941 ****
    char *sname;
    rtx symbol;
  
!   sprintf (buf, "%lu", num);
    symbol = XEXP (DECL_RTL (current_function_decl), 0);
    fnname = targetm.strip_name_encoding (XSTR (symbol, 0));
    sname = ACONCAT ((prefix, fnname, "_", buf, NULL));
--- 9932,9938 ----
    char *sname;
    rtx symbol;
  
!   sprintf (buf, HOST_WIDE_INT_PRINT_UNSIGNED, num);
    symbol = XEXP (DECL_RTL (current_function_decl), 0);
    fnname = targetm.strip_name_encoding (XSTR (symbol, 0));
    sname = ACONCAT ((prefix, fnname, "_", buf, NULL));
*************** mips_set_tune (const struct mips_cpu_inf
*** 20023,20029 ****
  static void
  mips_option_override (void)
  {
!   int i, start, regno, mode;
  
    if (OPTION_SET_P (mips_isa_option))
      mips_isa_option_info = &mips_cpu_info_table[mips_isa_option];
--- 20020,20026 ----
  static void
  mips_option_override (void)
  {
!   int i, regno, mode;
  
    if (OPTION_SET_P (mips_isa_option))
      mips_isa_option_info = &mips_cpu_info_table[mips_isa_option];
*************** mips_option_override (void)
*** 20282,20294 ****
        target_flags |= MASK_ODD_SPREG;
      }
  
!   if (!ISA_HAS_COMPACT_BRANCHES && mips_cb == MIPS_CB_ALWAYS)
!     {
!       error ("unsupported combination: %qs%s %s",
! 	      mips_arch_info->name, TARGET_MICROMIPS ? " -mmicromips" : "",
! 	      "-mcompact-branches=always");
!     }
!   else if (!ISA_HAS_DELAY_SLOTS && mips_cb == MIPS_CB_NEVER)
      {
        error ("unsupported combination: %qs%s %s",
  	      mips_arch_info->name, TARGET_MICROMIPS ? " -mmicromips" : "",
--- 20279,20285 ----
        target_flags |= MASK_ODD_SPREG;
      }
  
!   if (!ISA_HAS_DELAY_SLOTS && mips_cb == MIPS_CB_NEVER)
      {
        error ("unsupported combination: %qs%s %s",
  	      mips_arch_info->name, TARGET_MICROMIPS ? " -mmicromips" : "",
*************** mips_option_override (void)
*** 20505,20528 ****
  
    for (i = 0; i < FIRST_PSEUDO_REGISTER; i++)
      {
-       mips_dbx_regno[i] = IGNORED_DWARF_REGNUM;
        if (GP_REG_P (i) || FP_REG_P (i) || ALL_COP_REG_P (i))
  	mips_dwarf_regno[i] = i;
        else
  	mips_dwarf_regno[i] = INVALID_REGNUM;
      }
  
-   start = GP_DBX_FIRST - GP_REG_FIRST;
-   for (i = GP_REG_FIRST; i <= GP_REG_LAST; i++)
-     mips_dbx_regno[i] = i + start;
- 
-   start = FP_DBX_FIRST - FP_REG_FIRST;
-   for (i = FP_REG_FIRST; i <= FP_REG_LAST; i++)
-     mips_dbx_regno[i] = i + start;
- 
    /* Accumulator debug registers use big-endian ordering.  */
-   mips_dbx_regno[HI_REGNUM] = MD_DBX_FIRST + 0;
-   mips_dbx_regno[LO_REGNUM] = MD_DBX_FIRST + 1;
    mips_dwarf_regno[HI_REGNUM] = MD_REG_FIRST + 0;
    mips_dwarf_regno[LO_REGNUM] = MD_REG_FIRST + 1;
    for (i = DSP_ACC_REG_FIRST; i <= DSP_ACC_REG_LAST; i += 2)
--- 20496,20508 ----
*************** mips_expand_vec_perm_const_1 (struct exp
*** 21790,21798 ****
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! mips_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 			       rtx op1, const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
    int i, nelt, which;
    unsigned char orig_perm[MAX_VECT_LEN];
--- 21770,21782 ----
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! mips_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 			       rtx target, rtx op0, rtx op1,
! 			       const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    struct expand_vec_perm_d d;
    int i, nelt, which;
    unsigned char orig_perm[MAX_VECT_LEN];
*************** mips_constant_alignment (const_tree exp,
*** 22739,22745 ****
  static unsigned HOST_WIDE_INT
  mips_asan_shadow_offset (void)
  {
!   return SUBTARGET_SHADOW_OFFSET;
  }
  
  /* Implement TARGET_STARTING_FRAME_OFFSET.  See mips_compute_frame_info
--- 22723,22734 ----
  static unsigned HOST_WIDE_INT
  mips_asan_shadow_offset (void)
  {
!   if (mips_abi == ABI_N32)
!     return (HOST_WIDE_INT_1 << 29);
!   if (POINTER_SIZE == 64)
!     return (HOST_WIDE_INT_1 << 37);
!   else
!     return HOST_WIDE_INT_C (0x0aaa0000);
  }
  
  /* Implement TARGET_STARTING_FRAME_OFFSET.  See mips_compute_frame_info
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips.h gcc-13.1.0/gcc/config/mips/mips.h
*** gcc-12.2.0/gcc/config/mips/mips.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  MIPS version.
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by A. Lichnewsky (lich@inria.inria.fr).
     Changed by Michael Meissner	(meissner@osf.org).
     64-bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  MIPS version.
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by A. Lichnewsky (lich@inria.inria.fr).
     Changed by Michael Meissner	(meissner@osf.org).
     64-bit r4000 support by Ian Lance Taylor (ian@cygnus.com) and
*************** struct mips_cpu_info {
*** 120,130 ****
  #define TARGET_RTP_PIC (TARGET_VXWORKS_RTP && flag_pic)
  
  /* Compact branches must not be used if the user either selects the
!    'never' policy or the 'optimal' policy on a core that lacks
     compact branch instructions.  */
! #define TARGET_CB_NEVER (mips_cb == MIPS_CB_NEVER	\
! 			 || (mips_cb == MIPS_CB_OPTIMAL \
! 			     && !ISA_HAS_COMPACT_BRANCHES))
  
  /* Compact branches may be used if the user either selects the
     'always' policy or the 'optimal' policy on a core that supports
--- 120,128 ----
  #define TARGET_RTP_PIC (TARGET_VXWORKS_RTP && flag_pic)
  
  /* Compact branches must not be used if the user either selects the
!    'never' policy or the 'optimal' / 'always' policy on a core that lacks
     compact branch instructions.  */
! #define TARGET_CB_NEVER (mips_cb == MIPS_CB_NEVER || !ISA_HAS_COMPACT_BRANCHES)
  
  /* Compact branches may be used if the user either selects the
     'always' policy or the 'optimal' policy on a core that supports
*************** struct mips_cpu_info {
*** 134,143 ****
  			     && ISA_HAS_COMPACT_BRANCHES))
  
  /* Compact branches must always be generated if the user selects
!    the 'always' policy or the 'optimal' policy om a core that
!    lacks delay slot branch instructions.  */
! #define TARGET_CB_ALWAYS (mips_cb == MIPS_CB_ALWAYS	\
! 			 || (mips_cb == MIPS_CB_OPTIMAL \
  			     && !ISA_HAS_DELAY_SLOTS))
  
  /* Special handling for JRC that exists in microMIPSR3 as well as R6
--- 132,142 ----
  			     && ISA_HAS_COMPACT_BRANCHES))
  
  /* Compact branches must always be generated if the user selects
!    the 'always' policy on a core support compact branches,
!    or the 'optimal' policy on a core that lacks delay slot branch instructions.  */
! #define TARGET_CB_ALWAYS ((mips_cb == MIPS_CB_ALWAYS	  \
! 			     && ISA_HAS_COMPACT_BRANCHES) \
! 			 || (mips_cb == MIPS_CB_OPTIMAL   \
  			     && !ISA_HAS_DELAY_SLOTS))
  
  /* Special handling for JRC that exists in microMIPSR3 as well as R6
*************** struct mips_cpu_info {
*** 677,689 ****
  	builtin_define ("__mips_no_lxc1_sxc1");				\
        if (!ISA_HAS_UNFUSED_MADD4 && !ISA_HAS_FUSED_MADD4)		\
  	builtin_define ("__mips_no_madd4");				\
      }									\
    while (0)
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS mips_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO mips_d_register_target_info
- 
  /* Default target_flags if no switches are specified  */
  
  #ifndef TARGET_DEFAULT
--- 676,691 ----
  	builtin_define ("__mips_no_lxc1_sxc1");				\
        if (!ISA_HAS_UNFUSED_MADD4 && !ISA_HAS_FUSED_MADD4)		\
  	builtin_define ("__mips_no_madd4");				\
+ 									\
+       if (TARGET_CB_NEVER)						\
+ 	builtin_define ("__mips_compact_branches_never");		\
+       else if (TARGET_CB_ALWAYS)					\
+ 	builtin_define ("__mips_compact_branches_always");		\
+       else 								\
+ 	builtin_define ("__mips_compact_branches_optimal");		\
      }									\
    while (0)
  
  /* Default target_flags if no switches are specified  */
  
  #ifndef TARGET_DEFAULT
*************** struct mips_cpu_info {
*** 913,919 ****
    {"mips-plt", "%{!mplt:%{!mno-plt:-m%(VALUE)}}" }, \
    {"synci", "%{!msynci:%{!mno-synci:-m%(VALUE)}}" },			\
    {"lxc1-sxc1", "%{!mlxc1-sxc1:%{!mno-lxc1-sxc1:-m%(VALUE)}}" }, \
!   {"madd4", "%{!mmadd4:%{!mno-madd4:-m%(VALUE)}}" } \
  
  /* A spec that infers the:
     -mnan=2008 setting from a -mips argument,
--- 915,923 ----
    {"mips-plt", "%{!mplt:%{!mno-plt:-m%(VALUE)}}" }, \
    {"synci", "%{!msynci:%{!mno-synci:-m%(VALUE)}}" },			\
    {"lxc1-sxc1", "%{!mlxc1-sxc1:%{!mno-lxc1-sxc1:-m%(VALUE)}}" }, \
!   {"madd4", "%{!mmadd4:%{!mno-madd4:-m%(VALUE)}}" }, \
!   {"compact-branches", "%{!mcompact-branches=*:-mcompact-branches=%(VALUE)}" }, \
!   {"msa", "%{!mmsa:%{!mno-msa:-m%(VALUE)}}" } \
  
  /* A spec that infers the:
     -mnan=2008 setting from a -mips argument,
*************** struct mips_cpu_info {
*** 1384,1392 ****
  #ifndef SUBTARGET_ASM_DEBUGGING_SPEC
  #define SUBTARGET_ASM_DEBUGGING_SPEC "\
  %{g} %{g0} %{g1} %{g2} %{g3} \
! %{ggdb:-g} %{ggdb0:-g0} %{ggdb1:-g1} %{ggdb2:-g2} %{ggdb3:-g3} \
! %{gstabs:-g} %{gstabs0:-g0} %{gstabs1:-g1} %{gstabs2:-g2} %{gstabs3:-g3} \
! %{gstabs+:-g} %{gstabs+0:-g0} %{gstabs+1:-g1} %{gstabs+2:-g2} %{gstabs+3:-g3}"
  #endif
  
  /* FP_ASM_SPEC represents the floating-point options that must be passed
--- 1388,1394 ----
  #ifndef SUBTARGET_ASM_DEBUGGING_SPEC
  #define SUBTARGET_ASM_DEBUGGING_SPEC "\
  %{g} %{g0} %{g1} %{g2} %{g3} \
! %{ggdb:-g} %{ggdb0:-g0} %{ggdb1:-g1} %{ggdb2:-g2} %{ggdb3:-g3}"
  #endif
  
  /* FP_ASM_SPEC represents the floating-point options that must be passed
*************** FP_ASM_SPEC "\
*** 1508,1514 ****
  #define SUBTARGET_EXTRA_SPECS
  #endif
  
- #define DBX_DEBUGGING_INFO 1		/* generate stabs (OSF/rose) */
  #define DWARF2_DEBUGGING_INFO 1         /* dwarf2 debugging info */
  
  #ifndef PREFERRED_DEBUGGING_TYPE
--- 1510,1515 ----
*************** FP_ASM_SPEC "\
*** 1548,1561 ****
  #define USER_LABEL_PREFIX	""
  #endif
  
- /* On Sun 4, this limit is 2048.  We use 1500 to be safe,
-    since the length can run past this up to a continuation point.  */
- #undef DBX_CONTIN_LENGTH
- #define DBX_CONTIN_LENGTH 1500
- 
- /* How to renumber registers for dbx and gdb.  */
- #define DBX_REGISTER_NUMBER(REGNO) mips_dbx_regno[REGNO]
- 
  /* The mapping from gcc register number to DWARF 2 CFA column number.  */
  #define DWARF_FRAME_REGNUM(REGNO) mips_dwarf_regno[REGNO]
  
--- 1549,1554 ----
*************** FP_ASM_SPEC "\
*** 1869,1875 ****
  #define GP_REG_FIRST 0
  #define GP_REG_LAST  31
  #define GP_REG_NUM   (GP_REG_LAST - GP_REG_FIRST + 1)
- #define GP_DBX_FIRST 0
  #define K0_REG_NUM   (GP_REG_FIRST + 26)
  #define K1_REG_NUM   (GP_REG_FIRST + 27)
  #define KERNEL_REG_P(REGNO)	(IN_RANGE (REGNO, K0_REG_NUM, K1_REG_NUM))
--- 1862,1867 ----
*************** FP_ASM_SPEC "\
*** 1877,1888 ****
  #define FP_REG_FIRST 32
  #define FP_REG_LAST  63
  #define FP_REG_NUM   (FP_REG_LAST - FP_REG_FIRST + 1)
- #define FP_DBX_FIRST ((write_symbols == DBX_DEBUG) ? 38 : 32)
  
  #define MD_REG_FIRST 64
  #define MD_REG_LAST  65
  #define MD_REG_NUM   (MD_REG_LAST - MD_REG_FIRST + 1)
- #define MD_DBX_FIRST (FP_DBX_FIRST + FP_REG_NUM)
  
  #define MSA_REG_FIRST FP_REG_FIRST
  #define MSA_REG_LAST  FP_REG_LAST
--- 1869,1878 ----
*************** extern int num_source_filenames;	/* curr
*** 3221,3227 ****
  extern struct mips_asm_switch mips_noreorder;
  extern struct mips_asm_switch mips_nomacro;
  extern struct mips_asm_switch mips_noat;
- extern int mips_dbx_regno[];
  extern int mips_dwarf_regno[];
  extern bool mips_split_p[];
  extern bool mips_split_hi_p[];
--- 3211,3216 ----
*************** struct GTY(())  machine_function {
*** 3398,3403 ****
--- 3387,3395 ----
  
    /* True if GCC stored callee saved registers in the frame header.  */
    bool use_frame_header_for_callee_saved_regs;
+ 
+   /* True if the function should generate hazard barrier return.  */
+   bool use_hazard_barrier_return_p;
  };
  #endif
  
*************** struct GTY(())  machine_function {
*** 3446,3451 ****
--- 3438,3444 ----
  
  /* If we are *not* using multilibs and the default ABI is not ABI_32 we
     need to change these from /lib and /usr/lib.  */
+ #ifndef ENABLE_MULTIARCH
  #if MIPS_ABI_DEFAULT == ABI_N32
  #define STANDARD_STARTFILE_PREFIX_1 "/lib32/"
  #define STANDARD_STARTFILE_PREFIX_2 "/usr/lib32/"
*************** struct GTY(())  machine_function {
*** 3453,3458 ****
--- 3446,3452 ----
  #define STANDARD_STARTFILE_PREFIX_1 "/lib64/"
  #define STANDARD_STARTFILE_PREFIX_2 "/usr/lib64/"
  #endif
+ #endif
  
  /* Load store bonding is not supported by micromips and fix_24k.  The
     performance can be degraded for those targets.  Hence, do not bond for
*************** struct GTY(())  machine_function {
*** 3463,3472 ****
     && !TARGET_MICROMIPS && !TARGET_FIX_24K)
  
  #define NEED_INDICATE_EXEC_STACK 0
- 
- /* Define the shadow offset for asan. Other OS's can override in the
-    respective tm.h files.  */
- #ifndef SUBTARGET_SHADOW_OFFSET
- #define SUBTARGET_SHADOW_OFFSET \
-   (POINTER_SIZE == 64 ? HOST_WIDE_INT_1 << 37 : HOST_WIDE_INT_C (0x0aaa0000))
- #endif
--- 3457,3459 ----
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips.md gcc-13.1.0/gcc/config/mips/mips.md
*** gcc-12.2.0/gcc/config/mips/mips.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Mips.md	     Machine Description for MIPS based processors
! ;;  Copyright (C) 1989-2022 Free Software Foundation, Inc.
  ;;  Contributed by   A. Lichnewsky, lich@inria.inria.fr
  ;;  Changes by       Michael Meissner, meissner@osf.org
  ;;  64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
--- 1,5 ----
  ;;  Mips.md	     Machine Description for MIPS based processors
! ;;  Copyright (C) 1989-2023 Free Software Foundation, Inc.
  ;;  Contributed by   A. Lichnewsky, lich@inria.inria.fr
  ;;  Changes by       Michael Meissner, meissner@osf.org
  ;;  64-bit r4000 support by Ian Lance Taylor, ian@cygnus.com, and
***************
*** 159,164 ****
--- 159,165 ----
  
    ;; The `.insn' pseudo-op.
    UNSPEC_INSN_PSEUDO
+   UNSPEC_JRHB
  ])
  
  (define_constants
***************
*** 3165,3170 ****
--- 3166,3180 ----
    [(set_attr "type" "clz")
     (set_attr "mode" "<MODE>")])
  
+ 
+ (define_insn "*clo<mode>2"
+   [(set (match_operand:GPR 0 "register_operand" "=d")
+ 	(clz:GPR (not:GPR (match_operand:GPR 1 "register_operand" "d"))))]
+   "ISA_HAS_CLZ_CLO"
+   "<d>clo\t%0,%1"
+   [(set_attr "type" "clz")
+    (set_attr "mode" "<MODE>")])
+ 
  ;;
  ;;  ...................
  ;;
***************
*** 6670,6675 ****
--- 6680,6699 ----
    [(set_attr "type"	"jump")
     (set_attr "mode"	"none")])
  
+ ;; Insn to clear execution and instruction hazards while returning.
+ ;; However, it doesn't clear hazards created by the insn in its delay slot.
+ ;; Thus, explicitly place a nop in its delay slot.
+ 
+ (define_insn "mips_hb_return_internal"
+   [(return)
+    (unspec_volatile [(match_operand 0 "pmode_register_operand" "")]
+ 		    UNSPEC_JRHB)]
+   ""
+   {
+     return "%(jr.hb\t$31%/%)";
+   }
+   [(set_attr "insn_count" "2")])
+ 
  ;; Normal return.
  
  (define_insn "<optab>_internal"
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mips.opt gcc-13.1.0/gcc/config/mips/mips.opt
*** gcc-12.2.0/gcc/config/mips/mips.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mips.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the MIPS port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the MIPS port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/msa.h gcc-13.1.0/gcc/config/mips/msa.h
*** gcc-12.2.0/gcc/config/mips/msa.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/msa.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* MIPS MSA intrinsics include file.
  
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by Imagination Technologies Ltd.
  
     This file is part of GCC.
--- 1,6 ----
  /* MIPS MSA intrinsics include file.
  
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by Imagination Technologies Ltd.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mti-elf.h gcc-13.1.0/gcc/config/mips/mti-elf.h
*** gcc-12.2.0/gcc/config/mips/mti-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mti-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target macros for mips*-mti-elf targets.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Target macros for mips*-mti-elf targets.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/mti-linux.h gcc-13.1.0/gcc/config/mips/mti-linux.h
*** gcc-12.2.0/gcc/config/mips/mti-linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/mti-linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target macros for mips*-mti-linux* targets.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Target macros for mips*-mti-linux* targets.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/n32-elf.h gcc-13.1.0/gcc/config/mips/n32-elf.h
*** gcc-12.2.0/gcc/config/mips/n32-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/n32-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     n32 for embedded systems.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     n32 for embedded systems.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/netbsd.h gcc-13.1.0/gcc/config/mips/netbsd.h
*** gcc-12.2.0/gcc/config/mips/netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for MIPS NetBSD systems.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for MIPS NetBSD systems.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/octeon.md gcc-13.1.0/gcc/config/mips/octeon.md
*** gcc-12.2.0/gcc/config/mips/octeon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/octeon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Octeon pipeline description.
! ;;  Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;;  Octeon pipeline description.
! ;;  Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/p5600.md gcc-13.1.0/gcc/config/mips/p5600.md
*** gcc-12.2.0/gcc/config/mips/p5600.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/p5600.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA-based pipeline description for P5600.
  ;;
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; DFA-based pipeline description for P5600.
  ;;
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/p6600.md gcc-13.1.0/gcc/config/mips/p6600.md
*** gcc-12.2.0/gcc/config/mips/p6600.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/p6600.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; DFA-based pipeline description for P6600.
  ;;
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; DFA-based pipeline description for P6600.
  ;;
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/predicates.md gcc-13.1.0/gcc/config/mips/predicates.md
*** gcc-12.2.0/gcc/config/mips/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for MIPS.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for MIPS.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/r3900.h gcc-13.1.0/gcc/config/mips/r3900.h
*** gcc-12.2.0/gcc/config/mips/r3900.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/r3900.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Definitions of MIPS sub target machine for GNU compiler.
     Toshiba r3900.  You should include mips.h after this.
  
!    Copyright (C) 1989-2022 Free Software Foundation, Inc.
     Contributed by Gavin Koch (gavin@cygnus.com).
  
  This file is part of GCC.
--- 1,7 ----
  /* Definitions of MIPS sub target machine for GNU compiler.
     Toshiba r3900.  You should include mips.h after this.
  
!    Copyright (C) 1989-2023 Free Software Foundation, Inc.
     Contributed by Gavin Koch (gavin@cygnus.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/rtems.h gcc-13.1.0/gcc/config/mips/rtems.h
*** gcc-12.2.0/gcc/config/mips/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a MIPS using ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a MIPS using ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/sb1.md gcc-13.1.0/gcc/config/mips/sb1.md
*** gcc-12.2.0/gcc/config/mips/sb1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/sb1.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/sde.h gcc-13.1.0/gcc/config/mips/sde.h
*** gcc-12.2.0/gcc/config/mips/sde.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/sde.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     MIPS SDE version.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     MIPS SDE version.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/sde.opt gcc-13.1.0/gcc/config/mips/sde.opt
*** gcc-12.2.0/gcc/config/mips/sde.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/sde.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; MIPS SDE options.
  ;
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; MIPS SDE options.
  ;
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/sdemtk.h gcc-13.1.0/gcc/config/mips/sdemtk.h
*** gcc-12.2.0/gcc/config/mips/sdemtk.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/sdemtk.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     MIPS SDE version, for use with the SDE C library rather than newlib.
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     MIPS SDE version, for use with the SDE C library rather than newlib.
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/sr71k.md gcc-13.1.0/gcc/config/mips/sr71k.md
*** gcc-12.2.0/gcc/config/mips/sr71k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/sr71k.md	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,4 ----
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mips/st.h gcc-13.1.0/gcc/config/mips/st.h
*** gcc-12.2.0/gcc/config/mips/st.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/st.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ST 2e / 2f GNU/Linux Configuration.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* ST 2e / 2f GNU/Linux Configuration.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/sync.md gcc-13.1.0/gcc/config/mips/sync.md
*** gcc-12.2.0/gcc/config/mips/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;;  Machine Description for MIPS based processor synchronization
  ;;  instructions.
! ;;  Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,6 ----
  ;;  Machine Description for MIPS based processor synchronization
  ;;  instructions.
! ;;  Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-elf gcc-13.1.0/gcc/config/mips/t-elf
*** gcc-12.2.0/gcc/config/mips/t-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1999-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1999-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-img-elf gcc-13.1.0/gcc/config/mips/t-img-elf
*** gcc-12.2.0/gcc/config/mips/t-img-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-img-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2014-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-img-linux gcc-13.1.0/gcc/config/mips/t-img-linux
*** gcc-12.2.0/gcc/config/mips/t-img-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-img-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2014-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2014-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-isa3264 gcc-13.1.0/gcc/config/mips/t-isa3264
*** gcc-12.2.0/gcc/config/mips/t-isa3264	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-isa3264	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2001-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2001-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-linux64 gcc-13.1.0/gcc/config/mips/t-linux64
*** gcc-12.2.0/gcc/config/mips/t-linux64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-linux64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi
*** 20,26 ****
  MULTILIB_DIRNAMES = n32 32 64
  MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
  MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
! MULTILIB_OSDIRNAMES = \
  	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
  	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
  	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
--- 20,45 ----
  MULTILIB_DIRNAMES = n32 32 64
  MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el)
  MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft)
! ifeq (yes,$(enable_multiarch))
!   ifneq (,$(findstring gnuabi64,$(target)))
!     MULTILIB_OSDIRNAMES = \
! 	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
! 	../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
! 	../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
!   else ifneq (,$(findstring gnuabin32,$(target)))
!     MULTILIB_OSDIRNAMES = \
! 	../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
! 	../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
! 	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
!   else
!     MULTILIB_OSDIRNAMES = \
  	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
  	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
  	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
+   endif
+ else
+   MULTILIB_OSDIRNAMES = \
+ 	../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \
+ 	../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \
+ 	../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT))
+ endif
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-mips gcc-13.1.0/gcc/config/mips/t-mips
*** gcc-12.2.0/gcc/config/mips/t-mips	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-mips	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-mti-elf gcc-13.1.0/gcc/config/mips/t-mti-elf
*** gcc-12.2.0/gcc/config/mips/t-mti-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-mti-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-mti-linux gcc-13.1.0/gcc/config/mips/t-mti-linux
*** gcc-12.2.0/gcc/config/mips/t-mti-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-mti-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-r3900 gcc-13.1.0/gcc/config/mips/t-r3900
*** gcc-12.2.0/gcc/config/mips/t-r3900	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-r3900	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1998-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1998-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-rtems gcc-13.1.0/gcc/config/mips/t-rtems
*** gcc-12.2.0/gcc/config/mips/t-rtems	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-rtems	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Custom multilibs for RTEMS
  #
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Custom multilibs for RTEMS
  #
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-sb1 gcc-13.1.0/gcc/config/mips/t-sb1
*** gcc-12.2.0/gcc/config/mips/t-sb1	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-sb1	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2006-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2006-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-sde gcc-13.1.0/gcc/config/mips/t-sde
*** gcc-12.2.0/gcc/config/mips/t-sde	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-sde	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2007-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-sdemtk gcc-13.1.0/gcc/config/mips/t-sdemtk
*** gcc-12.2.0/gcc/config/mips/t-sdemtk	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-sdemtk	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2007-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2007-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-sr71k gcc-13.1.0/gcc/config/mips/t-sr71k
*** gcc-12.2.0/gcc/config/mips/t-sr71k	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-sr71k	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-st gcc-13.1.0/gcc/config/mips/t-st
*** gcc-12.2.0/gcc/config/mips/t-st	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-st	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2008-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-vr gcc-13.1.0/gcc/config/mips/t-vr
*** gcc-12.2.0/gcc/config/mips/t-vr	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-vr	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/t-vxworks gcc-13.1.0/gcc/config/mips/t-vxworks
*** gcc-12.2.0/gcc/config/mips/t-vxworks	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/t-vxworks	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2003-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2003-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mips/vr.h gcc-13.1.0/gcc/config/mips/vr.h
*** gcc-12.2.0/gcc/config/mips/vr.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/vr.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     NEC VR Series Processors
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     NEC VR Series Processors
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/vxworks.h gcc-13.1.0/gcc/config/mips/vxworks.h
*** gcc-12.2.0/gcc/config/mips/vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** VXWORKS_LINK_SPEC
*** 75,78 ****
  #undef SUBTARGET_OVERRIDE_OPTIONS
  #define SUBTARGET_OVERRIDE_OPTIONS VXWORKS_OVERRIDE_OPTIONS
  
! #undef DBX_REGISTER_NUMBER
--- 75,78 ----
  #undef SUBTARGET_OVERRIDE_OPTIONS
  #define SUBTARGET_OVERRIDE_OPTIONS VXWORKS_OVERRIDE_OPTIONS
  
! #undef DEBUGGER_REGNO
diff -Nrcpad gcc-12.2.0/gcc/config/mips/xlp.md gcc-13.1.0/gcc/config/mips/xlp.md
*** gcc-12.2.0/gcc/config/mips/xlp.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/xlp.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA-based pipeline description for the XLP.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; xlp.md   Machine Description for the Broadcom XLP Microprocessor
  ;; This file is part of GCC.
--- 1,5 ----
  ;; DFA-based pipeline description for the XLP.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; xlp.md   Machine Description for the Broadcom XLP Microprocessor
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mips/xlr.md gcc-13.1.0/gcc/config/mips/xlr.md
*** gcc-12.2.0/gcc/config/mips/xlr.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mips/xlr.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA-based pipeline description for the XLR.
! ;;   Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;;
  ;; xlr.md   Machine Description for the RMI XLR Microprocessor
  ;; This file is part of GCC.
--- 1,5 ----
  ;; DFA-based pipeline description for the XLR.
! ;;   Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;;
  ;; xlr.md   Machine Description for the RMI XLR Microprocessor
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/constraints.md gcc-13.1.0/gcc/config/mmix/constraints.md
*** gcc-12.2.0/gcc/config/mmix/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; MMIX constraints
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; MMIX constraints
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/mmix-modes.def gcc-13.1.0/gcc/config/mmix/mmix-modes.def
*** gcc-12.2.0/gcc/config/mmix/mmix-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/mmix-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for MMIX.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for MMIX.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/mmix-protos.h gcc-13.1.0/gcc/config/mmix/mmix-protos.h
*** gcc-12.2.0/gcc/config/mmix/mmix-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/mmix-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in mmix.cc
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in mmix.cc
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
*************** extern int mmix_shiftable_wyde_value (ui
*** 42,48 ****
  extern void mmix_output_register_setting (FILE *, int, int64_t, int);
  extern int mmix_opposite_regno (int, int);
  extern int mmix_local_regno (int);
! extern unsigned mmix_dbx_register_number (unsigned);
  extern int mmix_use_simple_return (void);
  extern void mmix_make_decl_one_only (tree);
  extern int mmix_data_alignment (tree, int);
--- 42,48 ----
  extern void mmix_output_register_setting (FILE *, int, int64_t, int);
  extern int mmix_opposite_regno (int, int);
  extern int mmix_local_regno (int);
! extern unsigned mmix_debugger_regno (unsigned);
  extern int mmix_use_simple_return (void);
  extern void mmix_make_decl_one_only (tree);
  extern int mmix_data_alignment (tree, int);
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/mmix.cc gcc-13.1.0/gcc/config/mmix/mmix.cc
*** gcc-12.2.0/gcc/config/mmix/mmix.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/mmix.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for MMIX.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for MMIX.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
*************** mmix_setup_incoming_varargs (cumulative_
*** 999,1005 ****
  
    /* We assume that one argument takes up one register here.  That should
       be true until we start messing with multi-reg parameters.  */
!   if ((7 + (MMIX_FUNCTION_ARG_SIZE (arg.mode, arg.type))) / 8 != 1)
      internal_error ("MMIX Internal: Last named vararg would not fit in a register");
  }
  
--- 999,1006 ----
  
    /* We assume that one argument takes up one register here.  That should
       be true until we start messing with multi-reg parameters.  */
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
!       && (7 + (MMIX_FUNCTION_ARG_SIZE (arg.mode, arg.type))) / 8 != 1)
      internal_error ("MMIX Internal: Last named vararg would not fit in a register");
  }
  
*************** mmix_asm_output_align (FILE *stream, int
*** 1942,1951 ****
   fprintf (stream, "\tLOC @+(%d-@)&%d\n", 1 << power, (1 << power) - 1);
  }
  
! /* DBX_REGISTER_NUMBER.  */
  
  unsigned
! mmix_dbx_register_number (unsigned regno)
  {
    /* Adjust the register number to the one it will be output as, dammit.
       It'd be nice if we could check the assumption that we're filling a
--- 1943,1952 ----
   fprintf (stream, "\tLOC @+(%d-@)&%d\n", 1 << power, (1 << power) - 1);
  }
  
! /* DEBUGGER_REGNO.  */
  
  unsigned
! mmix_debugger_regno (unsigned regno)
  {
    /* Adjust the register number to the one it will be output as, dammit.
       It'd be nice if we could check the assumption that we're filling a
*************** mmix_dbx_register_number (unsigned regno
*** 1956,1962 ****
    /* We need to renumber registers to get the number of the return address
       register in the range 0..255.  It is also space-saving if registers
       mentioned in the call-frame information (which uses this function by
!      defaulting DWARF_FRAME_REGNUM to DBX_REGISTER_NUMBER) are numbered
       0 .. 63.  So map 224 .. 256+15 -> 0 .. 47 and 0 .. 223 -> 48..223+48.  */
    return regno >= 224 ? (regno - 224) : (regno + 48);
  }
--- 1957,1963 ----
    /* We need to renumber registers to get the number of the return address
       register in the range 0..255.  It is also space-saving if registers
       mentioned in the call-frame information (which uses this function by
!      defaulting DWARF_FRAME_REGNUM to DEBUGGER_REGNO) are numbered
       0 .. 63.  So map 224 .. 256+15 -> 0 .. 47 and 0 .. 223 -> 48..223+48.  */
    return regno >= 224 ? (regno - 224) : (regno + 48);
  }
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/mmix.h gcc-13.1.0/gcc/config/mmix/mmix.h
*** gcc-12.2.0/gcc/config/mmix/mmix.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/mmix.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for MMIX.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for MMIX.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  This file is part of GCC.
*************** typedef struct { int regs; int lib; } CU
*** 757,773 ****
  
  /* Node: All Debuggers */
  
! #define DBX_REGISTER_NUMBER(REGNO) \
!  mmix_dbx_register_number (REGNO)
! 
! 
! /* Node: DBX Options */
! /* (empty) */
! /* Node: DBX Hooks */
! /* (empty) */
! /* Node: File Names and DBX */
! /* (empty) */
! 
  
  /* Node: DWARF */
  #define DWARF2_DEBUGGING_INFO 1
--- 757,764 ----
  
  /* Node: All Debuggers */
  
! #define DEBUGGER_REGNO(REGNO) \
!  mmix_debugger_regno (REGNO)
  
  /* Node: DWARF */
  #define DWARF2_DEBUGGING_INFO 1
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/mmix.md gcc-13.1.0/gcc/config/mmix/mmix.md
*** gcc-12.2.0/gcc/config/mmix/mmix.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/mmix.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for MMIX
! ;; Copyright (C) 2000-2022 Free Software Foundation, Inc.
  ;; Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for MMIX
! ;; Copyright (C) 2000-2023 Free Software Foundation, Inc.
  ;; Contributed by Hans-Peter Nilsson (hp@bitrange.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/mmix.opt gcc-13.1.0/gcc/config/mmix/mmix.opt
*** gcc-12.2.0/gcc/config/mmix/mmix.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/mmix.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the MMIX port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the MMIX port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/predicates.md gcc-13.1.0/gcc/config/mmix/predicates.md
*** gcc-12.2.0/gcc/config/mmix/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Operand and operator predicates for the GCC MMIX port.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Operand and operator predicates for the GCC MMIX port.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mmix/t-mmix gcc-13.1.0/gcc/config/mmix/t-mmix
*** gcc-12.2.0/gcc/config/mmix/t-mmix	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mmix/t-mmix	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2001-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2001-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/constraints.md gcc-13.1.0/gcc/config/mn10300/constraints.md
*** gcc-12.2.0/gcc/config/mn10300/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for the MN10300.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for the MN10300.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/linux.h gcc-13.1.0/gcc/config/mn10300/linux.h
*** gcc-12.2.0/gcc/config/mn10300/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of taret machine for GNU compiler.
     Matsushita AM33/2.0
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Alexandre Oliva <aoliva@redhat.com>
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of taret machine for GNU compiler.
     Matsushita AM33/2.0
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Alexandre Oliva <aoliva@redhat.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300-modes.def gcc-13.1.0/gcc/config/mn10300/mn10300-modes.def
*** gcc-12.2.0/gcc/config/mn10300/mn10300-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for MN10300.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for MN10300.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Red Hat Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300-opts.h gcc-13.1.0/gcc/config/mn10300/mn10300-opts.h
*** gcc-12.2.0/gcc/config/mn10300/mn10300-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for Matsushita MN10300 series.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for Matsushita MN10300 series.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300-protos.h gcc-13.1.0/gcc/config/mn10300/mn10300-protos.h
*** gcc-12.2.0/gcc/config/mn10300/mn10300-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler. Matsushita MN10300 series
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Jeff Law (law@cygnus.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler. Matsushita MN10300 series
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Jeff Law (law@cygnus.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300.cc gcc-13.1.0/gcc/config/mn10300/mn10300.cc
*** gcc-12.2.0/gcc/config/mn10300/mn10300.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for insn-output.cc for Matsushita MN10300 series
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Jeff Law (law@cygnus.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for insn-output.cc for Matsushita MN10300 series
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Jeff Law (law@cygnus.com).
  
     This file is part of GCC.
*************** mn10300_print_operand (FILE *file, rtx x
*** 285,296 ****
  		REAL_VALUE_TO_TARGET_DOUBLE
  		  (*CONST_DOUBLE_REAL_VALUE (x), val);
  		fprintf (file, "0x%lx", val[0]);
! 		break;;
  	      case E_SFmode:
  		REAL_VALUE_TO_TARGET_SINGLE
  		  (*CONST_DOUBLE_REAL_VALUE (x), val[0]);
  		fprintf (file, "0x%lx", val[0]);
! 		break;;
  	      case E_VOIDmode:
  	      case E_DImode:
  		mn10300_print_operand_address (file,
--- 285,296 ----
  		REAL_VALUE_TO_TARGET_DOUBLE
  		  (*CONST_DOUBLE_REAL_VALUE (x), val);
  		fprintf (file, "0x%lx", val[0]);
! 		break;
  	      case E_SFmode:
  		REAL_VALUE_TO_TARGET_SINGLE
  		  (*CONST_DOUBLE_REAL_VALUE (x), val[0]);
  		fprintf (file, "0x%lx", val[0]);
! 		break;
  	      case E_VOIDmode:
  	      case E_DImode:
  		mn10300_print_operand_address (file,
*************** mn10300_print_operand (FILE *file, rtx x
*** 344,350 ****
  		REAL_VALUE_TO_TARGET_DOUBLE
  		  (*CONST_DOUBLE_REAL_VALUE (x), val);
  		fprintf (file, "0x%lx", val[1]);
! 		break;;
  	      case E_SFmode:
  		gcc_unreachable ();
  	      case E_VOIDmode:
--- 344,350 ----
  		REAL_VALUE_TO_TARGET_DOUBLE
  		  (*CONST_DOUBLE_REAL_VALUE (x), val);
  		fprintf (file, "0x%lx", val[1]);
! 		break;
  	      case E_SFmode:
  		gcc_unreachable ();
  	      case E_VOIDmode:
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300.h gcc-13.1.0/gcc/config/mn10300/mn10300.h
*** gcc-12.2.0/gcc/config/mn10300/mn10300.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler.
     Matsushita MN10300 series
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Jeff Law (law@cygnus.com).
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler.
     Matsushita MN10300 series
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Jeff Law (law@cygnus.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300.md gcc-13.1.0/gcc/config/mn10300/mn10300.md
*** gcc-12.2.0/gcc/config/mn10300/mn10300.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for Matsushita MN10300
! ;; Copyright (C) 1996-2022 Free Software Foundation, Inc.
  ;; Contributed by Jeff Law (law@cygnus.com).
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; GCC machine description for Matsushita MN10300
! ;; Copyright (C) 1996-2023 Free Software Foundation, Inc.
  ;; Contributed by Jeff Law (law@cygnus.com).
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/mn10300.opt gcc-13.1.0/gcc/config/mn10300/mn10300.opt
*** gcc-12.2.0/gcc/config/mn10300/mn10300.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/mn10300.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Matsushita MN10300 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Matsushita MN10300 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/predicates.md gcc-13.1.0/gcc/config/mn10300/predicates.md
*** gcc-12.2.0/gcc/config/mn10300/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Matsushita MN10300.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Matsushita MN10300.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/mn10300/t-mn10300 gcc-13.1.0/gcc/config/mn10300/t-mn10300
*** gcc-12.2.0/gcc/config/mn10300/t-mn10300	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/mn10300/t-mn10300	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1996-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1996-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/constraints.md gcc-13.1.0/gcc/config/moxie/constraints.md
*** gcc-12.2.0/gcc/config/moxie/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Moxie
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Anthony Green <green@moxielogic.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Moxie
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Anthony Green <green@moxielogic.com>
  
  ;; This file is part of GCC.
***************
*** 22,40 ****
  ;; Constraints
  ;; -------------------------------------------------------------------------
  
! (define_constraint "A"
    "An absolute address."
    (and (match_code "mem")
         (ior (match_test "GET_CODE (XEXP (op, 0)) == SYMBOL_REF")
  	    (match_test "GET_CODE (XEXP (op, 0)) == LABEL_REF")
  	    (match_test "GET_CODE (XEXP (op, 0)) == CONST"))))
  
! (define_constraint "B"
    "An offset address."
    (and (match_code "mem")
         (match_test "moxie_offset_address_p (op)")))
  
! (define_constraint "W"
    "A register indirect memory operand."
    (and (match_code "mem")
         (match_test "REG_P (XEXP (op, 0))
--- 22,40 ----
  ;; Constraints
  ;; -------------------------------------------------------------------------
  
! (define_memory_constraint "A"
    "An absolute address."
    (and (match_code "mem")
         (ior (match_test "GET_CODE (XEXP (op, 0)) == SYMBOL_REF")
  	    (match_test "GET_CODE (XEXP (op, 0)) == LABEL_REF")
  	    (match_test "GET_CODE (XEXP (op, 0)) == CONST"))))
  
! (define_memory_constraint "B"
    "An offset address."
    (and (match_code "mem")
         (match_test "moxie_offset_address_p (op)")))
  
! (define_memory_constraint "W"
    "A register indirect memory operand."
    (and (match_code "mem")
         (match_test "REG_P (XEXP (op, 0))
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/moxie-protos.h gcc-13.1.0/gcc/config/moxie/moxie-protos.h
*** gcc-12.2.0/gcc/config/moxie/moxie-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/moxie-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for moxie.cc functions used in the md file & elsewhere.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for moxie.cc functions used in the md file & elsewhere.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/moxie.cc gcc-13.1.0/gcc/config/moxie/moxie.cc
*** gcc-12.2.0/gcc/config/moxie/moxie.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/moxie.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Code for moxie
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Anthony Green.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Code for moxie
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Anthony Green.
  
     This file is part of GCC.
*************** moxie_legitimate_address_p (machine_mode
*** 616,624 ****
  #undef  TARGET_FUNCTION_ARG_ADVANCE
  #define TARGET_FUNCTION_ARG_ADVANCE	moxie_function_arg_advance
  
- #undef TARGET_LRA_P
- #define TARGET_LRA_P hook_bool_void_false
- 
  #undef  TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P
  #define TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P	moxie_legitimate_address_p
  
--- 616,621 ----
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/moxie.h gcc-13.1.0/gcc/config/moxie/moxie.h
*** gcc-12.2.0/gcc/config/moxie/moxie.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/moxie.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Definitions for moxie.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Anthony Green.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Definitions for moxie.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Anthony Green.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/moxie.md gcc-13.1.0/gcc/config/moxie/moxie.md
*** gcc-12.2.0/gcc/config/moxie/moxie.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/moxie.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for Moxie
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Anthony Green <green@moxielogic.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for Moxie
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Anthony Green <green@moxielogic.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/moxie.opt gcc-13.1.0/gcc/config/moxie/moxie.opt
*** gcc-12.2.0/gcc/config/moxie/moxie.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/moxie.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the moxie compiler port.
  
! ; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the moxie compiler port.
  
! ; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/moxiebox.h gcc-13.1.0/gcc/config/moxie/moxiebox.h
*** gcc-12.2.0/gcc/config/moxie/moxiebox.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/moxiebox.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for the moxiebox.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Anthony Green (green@moxielogic.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for the moxiebox.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Anthony Green (green@moxielogic.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/predicates.md gcc-13.1.0/gcc/config/moxie/predicates.md
*** gcc-12.2.0/gcc/config/moxie/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Moxie
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Anthony Green <green@moxielogic.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for Moxie
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Anthony Green <green@moxielogic.com>
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/rtems.h gcc-13.1.0/gcc/config/moxie/rtems.h
*** gcc-12.2.0/gcc/config/moxie/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting the Moxie core.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Anthony Green (green@moxielogic.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting the Moxie core.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Anthony Green (green@moxielogic.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/t-moxie gcc-13.1.0/gcc/config/moxie/t-moxie
*** gcc-12.2.0/gcc/config/moxie/t-moxie	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/t-moxie	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for moxie
! # Copyright (C) 2008-2022 Free Software Foundation, Inc.
  # Contributed by Anthony Green.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for moxie
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  # Contributed by Anthony Green.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/moxie/uclinux.h gcc-13.1.0/gcc/config/moxie/uclinux.h
*** gcc-12.2.0/gcc/config/moxie/uclinux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/moxie/uclinux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/constraints.md gcc-13.1.0/gcc/config/msp430/constraints.md
*** gcc-12.2.0/gcc/config/msp430/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for TI MSP43* processors
! ;;  Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for TI MSP43* processors
! ;;  Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/driver-msp430.cc gcc-13.1.0/gcc/config/msp430/driver-msp430.cc
*** gcc-12.2.0/gcc/config/msp430/driver-msp430.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/driver-msp430.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay <avr@gjlay.de>
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by Georg-Johann Lay <avr@gjlay.de>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430-c.cc gcc-13.1.0/gcc/config/msp430/msp430-c.cc
*** gcc-12.2.0/gcc/config/msp430/msp430-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* MSP430 C-specific support
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* MSP430 C-specific support
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430-devices.cc gcc-13.1.0/gcc/config/msp430/msp430-devices.cc
*** gcc-12.2.0/gcc/config/msp430/msp430-devices.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430-devices.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for reading MCU data on TI MSP430 processors.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by Jozef Lawrynowicz  <jozef.l@mittosystems.com>.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for reading MCU data on TI MSP430 processors.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by Jozef Lawrynowicz  <jozef.l@mittosystems.com>.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430-devices.h gcc-13.1.0/gcc/config/msp430/msp430-devices.h
*** gcc-12.2.0/gcc/config/msp430/msp430-devices.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430-devices.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of subroutines used for reading MCU data on TI MSP430 processors.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
     Contributed by Jozef Lawrynowicz  <jozef.l@mittosystems.com>.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of subroutines used for reading MCU data on TI MSP430 processors.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
     Contributed by Jozef Lawrynowicz  <jozef.l@mittosystems.com>.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430-opts.h gcc-13.1.0/gcc/config/msp430/msp430-opts.h
*** gcc-12.2.0/gcc/config/msp430/msp430-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC option-handling definitions for the TI MSP430
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* GCC option-handling definitions for the TI MSP430
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430-protos.h gcc-13.1.0/gcc/config/msp430/msp430-protos.h
*** gcc-12.2.0/gcc/config/msp430/msp430-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Exported function prototypes from the TI MSP430 backend.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Exported function prototypes from the TI MSP430 backend.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430.cc gcc-13.1.0/gcc/config/msp430/msp430.cc
*** gcc-12.2.0/gcc/config/msp430/msp430.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on TI MSP430 processors.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on TI MSP430 processors.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
*************** msp430_get_inner_dest_code (rtx x)
*** 1460,1466 ****
  /* Calculate the cost of an MSP430 single-operand instruction, for operand DST
     within the RTX OUTER_RTX, optimizing for speed if SPEED is true.  */
  static int
! msp430_single_op_cost (rtx dst, bool speed, rtx outer_rtx)
  {
    enum rtx_code dst_code = GET_CODE (dst);
    const struct single_op_cost *cost_p;
--- 1460,1466 ----
  /* Calculate the cost of an MSP430 single-operand instruction, for operand DST
     within the RTX OUTER_RTX, optimizing for speed if SPEED is true.  */
  static int
! msp430_single_op_cost (rtx dst, bool speed, rtx /* outer_rtx */)
  {
    enum rtx_code dst_code = GET_CODE (dst);
    const struct single_op_cost *cost_p;
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430.h gcc-13.1.0/gcc/config/msp430/msp430.h
*** gcc-12.2.0/gcc/config/msp430/msp430.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC backend definitions for the TI MSP430 Processor
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* GCC backend definitions for the TI MSP430 Processor
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/msp430.md gcc-13.1.0/gcc/config/msp430/msp430.md
*** gcc-12.2.0/gcc/config/msp430/msp430.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/msp430.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for TI MSP43* processors
! ;;  Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for TI MSP43* processors
! ;;  Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/predicates.md gcc-13.1.0/gcc/config/msp430/predicates.md
*** gcc-12.2.0/gcc/config/msp430/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for TI MSP43* processors
! ;;  Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for TI MSP43* processors
! ;;  Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/msp430/t-msp430 gcc-13.1.0/gcc/config/msp430/t-msp430
*** gcc-12.2.0/gcc/config/msp430/t-msp430	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/msp430/t-msp430	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Makefile fragment for building GCC for the TI MSP430 target.
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Makefile fragment for building GCC for the TI MSP430 target.
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/constants.md gcc-13.1.0/gcc/config/nds32/constants.md
*** gcc-12.2.0/gcc/config/nds32/constants.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/constants.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constant defintions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constant defintions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/constraints.md gcc-13.1.0/gcc/config/nds32/constraints.md
*** gcc-12.2.0/gcc/config/nds32/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/elf.h gcc-13.1.0/gcc/config/nds32/elf.h
*** gcc-12.2.0/gcc/config/nds32/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/iterators.md gcc-13.1.0/gcc/config/nds32/iterators.md
*** gcc-12.2.0/gcc/config/nds32/iterators.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/iterators.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Code and mode itertator and attribute definitions
  ;; of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,6 ----
  ;; Code and mode itertator and attribute definitions
  ;; of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/linux.h gcc-13.1.0/gcc/config/nds32/linux.h
*** gcc-12.2.0/gcc/config/nds32/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-cost.cc gcc-13.1.0/gcc/config/nds32/nds32-cost.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-cost.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-cost.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for calculate rtx costs of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for calculate rtx costs of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-doubleword.md gcc-13.1.0/gcc/config/nds32/nds32-doubleword.md
*** gcc-12.2.0/gcc/config/nds32/nds32-doubleword.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-doubleword.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DImode/DFmode patterns description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; DImode/DFmode patterns description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-dspext.md gcc-13.1.0/gcc/config/nds32/nds32-dspext.md
*** gcc-12.2.0/gcc/config/nds32/nds32-dspext.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-dspext.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-e8.md gcc-13.1.0/gcc/config/nds32/nds32-e8.md
*** gcc-12.2.0/gcc/config/nds32/nds32-e8.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-e8.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-fp-as-gp.cc gcc-13.1.0/gcc/config/nds32/nds32-fp-as-gp.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-fp-as-gp.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-fp-as-gp.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* The fp-as-gp pass of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* The fp-as-gp pass of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-fpu.md gcc-13.1.0/gcc/config/nds32/nds32-fpu.md
*** gcc-12.2.0/gcc/config/nds32/nds32-fpu.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-fpu.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-graywolf.md gcc-13.1.0/gcc/config/nds32/nds32-graywolf.md
*** gcc-12.2.0/gcc/config/nds32/nds32-graywolf.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-graywolf.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-intrinsic.cc gcc-13.1.0/gcc/config/nds32/nds32-intrinsic.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-intrinsic.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-intrinsic.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Intrinsic functions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Intrinsic functions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-intrinsic.md gcc-13.1.0/gcc/config/nds32/nds32-intrinsic.md
*** gcc-12.2.0/gcc/config/nds32/nds32-intrinsic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-intrinsic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Intrinsic patterns description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Intrinsic patterns description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-isr.cc gcc-13.1.0/gcc/config/nds32/nds32-isr.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-isr.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-isr.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for ISR of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for ISR of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-md-auxiliary.cc gcc-13.1.0/gcc/config/nds32/nds32-md-auxiliary.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-md-auxiliary.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-md-auxiliary.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Auxiliary functions for output asm template or expand rtl
     pattern of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,6 ----
  /* Auxiliary functions for output asm template or expand rtl
     pattern of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-memory-manipulation.cc gcc-13.1.0/gcc/config/nds32/nds32-memory-manipulation.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-memory-manipulation.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-memory-manipulation.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Auxiliary functions for expand cpymem, setmem, cmpmem, load_multiple
     and store_multiple pattern of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,6 ----
  /* Auxiliary functions for expand cpymem, setmem, cmpmem, load_multiple
     and store_multiple pattern of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-modes.def gcc-13.1.0/gcc/config/nds32/nds32-modes.def
*** gcc-12.2.0/gcc/config/nds32/nds32-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Extra machine modes of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Extra machine modes of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-multiple.md gcc-13.1.0/gcc/config/nds32/nds32-multiple.md
*** gcc-12.2.0/gcc/config/nds32/nds32-multiple.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-multiple.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Load/Store Multiple patterns description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.for NDS32.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Load/Store Multiple patterns description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.for NDS32.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-n10.md gcc-13.1.0/gcc/config/nds32/nds32-n10.md
*** gcc-12.2.0/gcc/config/nds32/nds32-n10.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-n10.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-n13.md gcc-13.1.0/gcc/config/nds32/nds32-n13.md
*** gcc-12.2.0/gcc/config/nds32/nds32-n13.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-n13.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-n7.md gcc-13.1.0/gcc/config/nds32/nds32-n7.md
*** gcc-12.2.0/gcc/config/nds32/nds32-n7.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-n7.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-n8.md gcc-13.1.0/gcc/config/nds32/nds32-n8.md
*** gcc-12.2.0/gcc/config/nds32/nds32-n8.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-n8.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-n9-2r1w.md gcc-13.1.0/gcc/config/nds32/nds32-n9-2r1w.md
*** gcc-12.2.0/gcc/config/nds32/nds32-n9-2r1w.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-n9-2r1w.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-n9-3r2w.md gcc-13.1.0/gcc/config/nds32/nds32-n9-3r2w.md
*** gcc-12.2.0/gcc/config/nds32/nds32-n9-3r2w.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-n9-3r2w.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-opts.h gcc-13.1.0/gcc/config/nds32/nds32-opts.h
*** gcc-12.2.0/gcc/config/nds32/nds32-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for option handling of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-peephole2.md gcc-13.1.0/gcc/config/nds32/nds32-peephole2.md
*** gcc-12.2.0/gcc/config/nds32/nds32-peephole2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-peephole2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; define_peephole2 optimization patterns of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; define_peephole2 optimization patterns of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-pipelines-auxiliary.cc gcc-13.1.0/gcc/config/nds32/nds32-pipelines-auxiliary.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-pipelines-auxiliary.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-pipelines-auxiliary.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Auxiliary functions for pipeline descriptions pattern of Andes
     NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,6 ----
  /* Auxiliary functions for pipeline descriptions pattern of Andes
     NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-predicates.cc gcc-13.1.0/gcc/config/nds32/nds32-predicates.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-predicates.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-predicates.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Predicate functions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Predicate functions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-protos.h gcc-13.1.0/gcc/config/nds32/nds32-protos.h
*** gcc-12.2.0/gcc/config/nds32/nds32-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
*************** extern void nds32_emit_v3pop_fpr_callee_
*** 65,71 ****
  
  /* Controlling Debugging Information Format.  */
  
! extern unsigned int nds32_dbx_register_number (unsigned int);
  
  /* ------------------------------------------------------------------------ */
  
--- 65,71 ----
  
  /* Controlling Debugging Information Format.  */
  
! extern unsigned int nds32_debugger_regno (unsigned int);
  
  /* ------------------------------------------------------------------------ */
  
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-relax-opt.cc gcc-13.1.0/gcc/config/nds32/nds32-relax-opt.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-relax-opt.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-relax-opt.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* relax-opt pass of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* relax-opt pass of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32-utils.cc gcc-13.1.0/gcc/config/nds32/nds32-utils.cc
*** gcc-12.2.0/gcc/config/nds32/nds32-utils.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32-utils.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Auxiliary functions for pipeline descriptions pattern of Andes
     NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,6 ----
  /* Auxiliary functions for pipeline descriptions pattern of Andes
     NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32.cc gcc-13.1.0/gcc/config/nds32/nds32.cc
*** gcc-12.2.0/gcc/config/nds32/nds32.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
*************** nds32_setup_incoming_varargs (cumulative
*** 2377,2385 ****
       for varargs.  */
    total_args_regs
      = NDS32_MAX_GPR_REGS_FOR_ARGS + NDS32_GPR_ARG_FIRST_REGNUM;
!   num_of_used_regs
!     = NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, arg.mode, arg.type)
!       + NDS32_NEED_N_REGS_FOR_ARG (arg.mode, arg.type);
  
    remaining_reg_count = total_args_regs - num_of_used_regs;
    *pretend_args_size = remaining_reg_count * UNITS_PER_WORD;
--- 2377,2388 ----
       for varargs.  */
    total_args_regs
      = NDS32_MAX_GPR_REGS_FOR_ARGS + NDS32_GPR_ARG_FIRST_REGNUM;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     num_of_used_regs
!       = NDS32_AVAILABLE_REGNUM_FOR_GPR_ARG (cum->gpr_offset, arg.mode, arg.type)
!         + NDS32_NEED_N_REGS_FOR_ARG (arg.mode, arg.type);
!   else
!     num_of_used_regs = cum->gpr_offset + NDS32_GPR_ARG_FIRST_REGNUM;
  
    remaining_reg_count = total_args_regs - num_of_used_regs;
    *pretend_args_size = remaining_reg_count * UNITS_PER_WORD;
*************** nds32_dwarf_register_span (rtx reg)
*** 3889,3895 ****
  /* Map internal gcc register numbers to DWARF2 register numbers.  */
  
  unsigned int
! nds32_dbx_register_number (unsigned int regno)
  {
    /* The nds32 port in GDB maintains a mapping between dwarf register
       number and displayed register name.  For backward compatibility to
--- 3892,3898 ----
  /* Map internal gcc register numbers to DWARF2 register numbers.  */
  
  unsigned int
! nds32_debugger_regno (unsigned int regno)
  {
    /* The nds32 port in GDB maintains a mapping between dwarf register
       number and displayed register name.  For backward compatibility to
*************** nds32_use_blocks_for_constant_p (machine
*** 5809,5820 ****
  
  /* -- Macros Affecting All Debugging Formats.  */
  
- /* -- Specific Options for DBX Output.  */
- 
- /* -- Open-Ended Hooks for DBX Format.  */
- 
- /* -- File Names in DBX Format.  */
- 
  /* -- Macros for DWARF Output.  */
  
  /* -- Macros for VMS Debug Format.  */
--- 5812,5817 ----
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32.h gcc-13.1.0/gcc/config/nds32/nds32.h
*** gcc-12.2.0/gcc/config/nds32/nds32.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
*************** enum reg_class
*** 1332,1338 ****
     This is used to unwind the stack to an exception handler's call frame.  */
  #define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 2)
  
! #define DBX_REGISTER_NUMBER(REGNO) nds32_dbx_register_number (REGNO)
  
  #define STACK_POINTER_REGNUM SP_REGNUM
  
--- 1332,1338 ----
     This is used to unwind the stack to an exception handler's call frame.  */
  #define EH_RETURN_STACKADJ_RTX gen_rtx_REG (Pmode, 2)
  
! #define DEBUGGER_REGNO(REGNO) nds32_debugger_regno (REGNO)
  
  #define STACK_POINTER_REGNUM SP_REGNUM
  
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32.md gcc-13.1.0/gcc/config/nds32/nds32.md
*** gcc-12.2.0/gcc/config/nds32/nds32.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32.opt gcc-13.1.0/gcc/config/nds32/nds32.opt
*** gcc-12.2.0/gcc/config/nds32/nds32.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options of Andes NDS32 cpu for GNU compiler
! ; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ; Contributed by Andes Technology Corporation.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Options of Andes NDS32 cpu for GNU compiler
! ; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ; Contributed by Andes Technology Corporation.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32_intrinsic.h gcc-13.1.0/gcc/config/nds32/nds32_intrinsic.h
*** gcc-12.2.0/gcc/config/nds32/nds32_intrinsic.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32_intrinsic.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Intrinsic definitions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Intrinsic definitions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/nds32_isr.h gcc-13.1.0/gcc/config/nds32/nds32_isr.h
*** gcc-12.2.0/gcc/config/nds32/nds32_isr.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/nds32_isr.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Intrinsic definitions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
--- 1,5 ----
  /* Intrinsic definitions of Andes NDS32 cpu for GNU compiler
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Andes Technology Corporation.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/pipelines.md gcc-13.1.0/gcc/config/nds32/pipelines.md
*** gcc-12.2.0/gcc/config/nds32/pipelines.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/pipelines.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline descriptions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/predicates.md gcc-13.1.0/gcc/config/nds32/predicates.md
*** gcc-12.2.0/gcc/config/nds32/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions of Andes NDS32 cpu for GNU compiler
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Andes Technology Corporation.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/t-elf gcc-13.1.0/gcc/config/nds32/t-elf
*** gcc-12.2.0/gcc/config/nds32/t-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/t-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # The multilib settings of Andes NDS32 cpu for GNU compiler
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
--- 1,5 ----
  # The multilib settings of Andes NDS32 cpu for GNU compiler
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/t-linux gcc-13.1.0/gcc/config/nds32/t-linux
*** gcc-12.2.0/gcc/config/nds32/t-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/t-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # The multilib settings of Andes NDS32 cpu for GNU compiler
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
--- 1,5 ----
  # The multilib settings of Andes NDS32 cpu for GNU compiler
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/t-mlibs gcc-13.1.0/gcc/config/nds32/t-mlibs
*** gcc-12.2.0/gcc/config/nds32/t-mlibs	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/t-mlibs	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # The multilib settings of Andes NDS32 cpu for GNU compiler
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
--- 1,5 ----
  # The multilib settings of Andes NDS32 cpu for GNU compiler
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nds32/t-nds32 gcc-13.1.0/gcc/config/nds32/t-nds32
*** gcc-12.2.0/gcc/config/nds32/t-nds32	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nds32/t-nds32	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # General rules that all nds32/ targets must have.
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
--- 1,5 ----
  # General rules that all nds32/ targets must have.
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  # Contributed by Andes Technology Corporation.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd-d.cc gcc-13.1.0/gcc/config/netbsd-d.cc
*** gcc-12.2.0/gcc/config/netbsd-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for generic NetBSD as target machine for GNU D compiler.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions for generic NetBSD as target machine for GNU D compiler.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 21,28 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "memmodel.h"
! #include "tm_p.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd-elf.h gcc-13.1.0/gcc/config/netbsd-elf.h
*** gcc-12.2.0/gcc/config/netbsd-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common configuration file for NetBSD ELF targets.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Common configuration file for NetBSD ELF targets.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd-elf.opt gcc-13.1.0/gcc/config/netbsd-elf.opt
*** gcc-12.2.0/gcc/config/netbsd-elf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd-elf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; NetBSD ELF-only options.
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; NetBSD ELF-only options.
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd-protos.h gcc-13.1.0/gcc/config/netbsd-protos.h
*** gcc-12.2.0/gcc/config/netbsd-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd-stdint.h gcc-13.1.0/gcc/config/netbsd-stdint.h
*** gcc-12.2.0/gcc/config/netbsd-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types for NetBSD systems.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types for NetBSD systems.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd.cc gcc-13.1.0/gcc/config/netbsd.cc
*** gcc-12.2.0/gcc/config/netbsd.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for generic NetBSD as target machine for GNU C compiler.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions for generic NetBSD as target machine for GNU C compiler.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd.h gcc-13.1.0/gcc/config/netbsd.h
*** gcc-12.2.0/gcc/config/netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all NetBSD targets.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all NetBSD targets.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/netbsd.opt gcc-13.1.0/gcc/config/netbsd.opt
*** gcc-12.2.0/gcc/config/netbsd.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/netbsd.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; NetBSD options.
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; NetBSD options.
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/newlib-stdint.h gcc-13.1.0/gcc/config/newlib-stdint.h
*** gcc-12.2.0/gcc/config/newlib-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/newlib-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using newlib.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using newlib.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/constraints.md gcc-13.1.0/gcc/config/nios2/constraints.md
*** gcc-12.2.0/gcc/config/nios2/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Altera Nios II.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Chung-Lin Tang <cltang@codesourcery.com>
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Altera Nios II.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Chung-Lin Tang <cltang@codesourcery.com>
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/elf.h gcc-13.1.0/gcc/config/nios2/elf.h
*** gcc-12.2.0/gcc/config/nios2/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of ELF target support for Altera Nios II.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com), 
     Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com).
     Contributed by Mentor Graphics, Inc.
--- 1,5 ----
  /* Definitions of ELF target support for Altera Nios II.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com), 
     Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com).
     Contributed by Mentor Graphics, Inc.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/elf.opt gcc-13.1.0/gcc/config/nios2/elf.opt
*** gcc-12.2.0/gcc/config/nios2/elf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/elf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options for the Altera Nios II port of the compiler.
! ; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ; Contributed by Altera and Mentor Graphics, Inc.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Options for the Altera Nios II port of the compiler.
! ; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ; Contributed by Altera and Mentor Graphics, Inc.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/ldstwm.md gcc-13.1.0/gcc/config/nios2/ldstwm.md
*** gcc-12.2.0/gcc/config/nios2/ldstwm.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/ldstwm.md	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
     This file was automatically generated using nios2-ldstwm.sml.
     Please do not edit manually.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Mentor Graphics.
  
     This file is part of GCC.
--- 2,8 ----
     This file was automatically generated using nios2-ldstwm.sml.
     Please do not edit manually.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Mentor Graphics.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/linux.h gcc-13.1.0/gcc/config/nios2/linux.h
*** gcc-12.2.0/gcc/config/nios2/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target support for Altera Nios II systems
     running GNU/Linux with ELF format.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Mentor Graphics, Inc.
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target support for Altera Nios II systems
     running GNU/Linux with ELF format.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Mentor Graphics, Inc.
  
     This file is part of GCC.
***************
*** 30,35 ****
--- 30,37 ----
  #define CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
  
  #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-nios2.so.1"
+ 
+ #undef MUSL_DYNAMIC_LINKER
  #define MUSL_DYNAMIC_LINKER  "/lib/ld-musl-nios2.so.1"
  
  #undef LINK_SPEC
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2-ldstwm.sml gcc-13.1.0/gcc/config/nios2/nios2-ldstwm.sml
*** gcc-12.2.0/gcc/config/nios2/nios2-ldstwm.sml	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2-ldstwm.sml	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  (* Auto-generate Nios II R2 CDX ldwm/stwm/push.n/pop.n patterns
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Mentor Graphics.
  
     This file is part of GCC.
--- 1,5 ----
  (* Auto-generate Nios II R2 CDX ldwm/stwm/push.n/pop.n patterns
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Mentor Graphics.
  
     This file is part of GCC.
*************** print
*** 233,239 ****
   "   This file was automatically generated using nios2-ldstwm.sml.\n" ^
   "   Please do not edit manually.\n" ^
   "\n" ^
!  "   Copyright (C) 2014-2022 Free Software Foundation, Inc.\n" ^
   "   Contributed by Mentor Graphics.\n" ^
   "\n" ^
   "   This file is part of GCC.\n" ^
--- 233,239 ----
   "   This file was automatically generated using nios2-ldstwm.sml.\n" ^
   "   Please do not edit manually.\n" ^
   "\n" ^
!  "   Copyright (C) 2014-2023 Free Software Foundation, Inc.\n" ^
   "   Contributed by Mentor Graphics.\n" ^
   "\n" ^
   "   This file is part of GCC.\n" ^
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2-opts.h gcc-13.1.0/gcc/config/nios2/nios2-opts.h
*** gcc-12.2.0/gcc/config/nios2/nios2-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for Nios II.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for Nios II.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2-protos.h gcc-13.1.0/gcc/config/nios2/nios2-protos.h
*** gcc-12.2.0/gcc/config/nios2/nios2-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutine declarations for Altera Nios II target support.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com).
     Contributed by Mentor Graphics, Inc.
  
--- 1,5 ----
  /* Subroutine declarations for Altera Nios II target support.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com).
     Contributed by Mentor Graphics, Inc.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2.cc gcc-13.1.0/gcc/config/nios2/nios2.cc
*** gcc-12.2.0/gcc/config/nios2/nios2.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target machine subroutines for Altera Nios II.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com), 
     Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com).
     Contributed by Mentor Graphics, Inc.
--- 1,5 ----
  /* Target machine subroutines for Altera Nios II.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com), 
     Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com).
     Contributed by Mentor Graphics, Inc.
*************** nios2_load_pic_address (rtx sym, int uns
*** 2552,2558 ****
        return nios2_large_got_address (offset, tmp);
      }
  
!   return gen_const_mem (Pmode, nios2_got_address (sym, unspec));
  }
  
  /* Nonzero if the constant value X is a legitimate general operand
--- 2552,2561 ----
        return nios2_large_got_address (offset, tmp);
      }
  
!   if (unspec == UNSPEC_PIC_CALL_SYM)
!     return gen_rtx_MEM (Pmode, nios2_got_address (sym, unspec));
!   else
!     return gen_const_mem (Pmode, nios2_got_address (sym, unspec));
  }
  
  /* Nonzero if the constant value X is a legitimate general operand
*************** nios2_setup_incoming_varargs (cumulative
*** 3521,3527 ****
  
    cfun->machine->uses_anonymous_args = 1;
    local_cum = *cum;
!   nios2_function_arg_advance (local_cum_v, arg);
  
    regs_to_push = NUM_ARG_REGS - local_cum.regs_used;
  
--- 3524,3531 ----
  
    cfun->machine->uses_anonymous_args = 1;
    local_cum = *cum;
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     nios2_function_arg_advance (local_cum_v, arg);
  
    regs_to_push = NUM_ARG_REGS - local_cum.regs_used;
  
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2.h gcc-13.1.0/gcc/config/nios2/nios2.h
*** gcc-12.2.0/gcc/config/nios2/nios2.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for Altera Nios II.
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com), 
     Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com).
     Contributed by Mentor Graphics, Inc.
--- 1,5 ----
  /* Definitions of target machine for Altera Nios II.
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
     Contributed by Jonah Graham (jgraham@altera.com), 
     Will Reece (wreece@altera.com), and Jeff DaSilva (jdasilva@altera.com).
     Contributed by Mentor Graphics, Inc.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2.md gcc-13.1.0/gcc/config/nios2/nios2.md
*** gcc-12.2.0/gcc/config/nios2/nios2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Description for Altera Nios II.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Jonah Graham (jgraham@altera.com) and 
  ;; Will Reece (wreece@altera.com).
  ;; Contributed by Mentor Graphics, Inc.
--- 1,5 ----
  ;; Machine Description for Altera Nios II.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Jonah Graham (jgraham@altera.com) and 
  ;; Will Reece (wreece@altera.com).
  ;; Contributed by Mentor Graphics, Inc.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/nios2.opt gcc-13.1.0/gcc/config/nios2/nios2.opt
*** gcc-12.2.0/gcc/config/nios2/nios2.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/nios2.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options for the Altera Nios II port of the compiler.
! ; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ; Contributed by Altera and Mentor Graphics, Inc.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Options for the Altera Nios II port of the compiler.
! ; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ; Contributed by Altera and Mentor Graphics, Inc.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/predicates.md gcc-13.1.0/gcc/config/nios2/predicates.md
*** gcc-12.2.0/gcc/config/nios2/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Altera Nios II.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Chung-Lin Tang <cltang@codesourcery.com>
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for Altera Nios II.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Chung-Lin Tang <cltang@codesourcery.com>
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/rtems.h gcc-13.1.0/gcc/config/nios2/rtems.h
*** gcc-12.2.0/gcc/config/nios2/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a NIOS2 using ELF.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     Contributed by Chris Johns (chrisj@rtems.org).
  
--- 1,5 ----
  /* Definitions for rtems targeting a NIOS2 using ELF.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     Contributed by Chris Johns (chrisj@rtems.org).
  
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/sync.md gcc-13.1.0/gcc/config/nios2/sync.md
*** gcc-12.2.0/gcc/config/nios2/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Description for Altera Nios II synchronization primitives.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;; Contributed by Mentor Graphics, Inc.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine Description for Altera Nios II synchronization primitives.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;; Contributed by Mentor Graphics, Inc.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nios2/t-nios2 gcc-13.1.0/gcc/config/nios2/t-nios2
*** gcc-12.2.0/gcc/config/nios2/t-nios2	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nios2/t-nios2	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for Altera Nios II.
! # Copyright (C) 2013-2022 Free Software Foundation, Inc.
  # Contributed by Altera and Mentor Graphics, Inc.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for Altera Nios II.
! # Copyright (C) 2013-2023 Free Software Foundation, Inc.
  # Contributed by Altera and Mentor Graphics, Inc.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/gen-copyright.sh gcc-13.1.0/gcc/config/nvptx/gen-copyright.sh
*** gcc-12.2.0/gcc/config/nvptx/gen-copyright.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/gen-copyright.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  
! # Copyright (C) 2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  
! # Copyright (C) 2022-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** case $style in
*** 32,38 ****
  esac
  
  ( cat <<EOF
! Copyright (C) 2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 32,38 ----
  esac
  
  ( cat <<EOF
! Copyright (C) 2022-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/gen-h.sh gcc-13.1.0/gcc/config/nvptx/gen-h.sh
*** gcc-12.2.0/gcc/config/nvptx/gen-h.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/gen-h.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  
! # Copyright (C) 2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  
! # Copyright (C) 2022-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/gen-multilib-matches.sh gcc-13.1.0/gcc/config/nvptx/gen-multilib-matches.sh
*** gcc-12.2.0/gcc/config/nvptx/gen-multilib-matches.sh	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/nvptx/gen-multilib-matches.sh	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,60 ----
+ #!/bin/sh
+ 
+ # Print nvptx 'MULTILIB_MATCHES'
+ 
+ # Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ #
+ # This file is part of GCC.
+ #
+ # GCC is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+ # the Free Software Foundation; either version 3, or (at your option)
+ # any later version.
+ #
+ # GCC is distributed in the hope that it will be useful,
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ # GNU General Public License for more details.
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with GCC; see the file COPYING3.  If not see
+ # <http://www.gnu.org/licenses/>.
+ 
+ set -e
+ 
+ nvptx_sm_def="$1/nvptx-sm.def"
+ multilib_options_isa_default=$2
+ multilib_options_isa_list=$3
+ 
+ sms=$(grep ^NVPTX_SM $nvptx_sm_def | sed 's/.*(//;s/,.*//')
+ 
+ # Every variant in 'sms' has to either be remapped to the default variant
+ # ('.', which is always built), or does get built as non-default variant
+ # ('misa=sm_SM'; thus not remapped), or has to be remapped to the "next lower"
+ # variant that does get built.
+ 
+ # The "lowest" variant has to be built.
+ sm_next_lower=INVALID
+ 
+ for sm in $sms; do
+     if [ x"sm_$sm" = x"$multilib_options_isa_default" ]; then
+ 	sm_map=.
+     elif expr " $multilib_options_isa_list " : ".* sm_$sm " > /dev/null; then
+ 	sm_map=
+     else
+ 	sm_map=$sm_next_lower
+     fi
+ 
+     if [ x"$sm_map" = x ]; then
+ 	sm_next_lower=$sm
+     else
+ 	# Output format as required for 'MULTILIB_MATCHES'.
+ 	if [ x"$sm_map" = x. ]; then
+ 	    echo ".=misa?sm_$sm"
+ 	else
+ 	    echo "misa?sm_$sm_map=misa?sm_$sm"
+ 	fi
+ 
+ 	sm_next_lower=$sm_map
+     fi
+ done
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/gen-omp-device-properties.sh gcc-13.1.0/gcc/config/nvptx/gen-omp-device-properties.sh
*** gcc-12.2.0/gcc/config/nvptx/gen-omp-device-properties.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/gen-omp-device-properties.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  
! # Copyright (C) 2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  
! # Copyright (C) 2022-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/gen-opt.sh gcc-13.1.0/gcc/config/nvptx/gen-opt.sh
*** gcc-12.2.0/gcc/config/nvptx/gen-opt.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/gen-opt.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  
! # Copyright (C) 2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  
! # Copyright (C) 2022-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/mkoffload.cc gcc-13.1.0/gcc/config/nvptx/mkoffload.cc
*** gcc-12.2.0/gcc/config/nvptx/mkoffload.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/mkoffload.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Offload image generation tool for PTX.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     Contributed by Nathan Sidwell <nathan@codesourcery.com> and
     Bernd Schmidt <bernds@codesourcery.com>.
--- 1,6 ----
  /* Offload image generation tool for PTX.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     Contributed by Nathan Sidwell <nathan@codesourcery.com> and
     Bernd Schmidt <bernds@codesourcery.com>.
*************** struct id_map
*** 47,52 ****
--- 47,53 ----
  {
    id_map *next;
    char *ptx_name;
+   char *dim;
  };
  
  static id_map *func_ids, **funcs_tail = &func_ids;
*************** static id_map *var_ids, **vars_tail = &v
*** 55,60 ****
--- 56,62 ----
  /* Files to unlink.  */
  static const char *ptx_name;
  static const char *ptx_cfile_name;
+ static const char *omp_requires_file;
  static const char *ptx_dumpbase;
  
  enum offload_abi offload_abi = OFFLOAD_ABI_UNSET;
*************** tool_cleanup (bool from_signal ATTRIBUTE
*** 68,73 ****
--- 70,77 ----
      maybe_unlink (ptx_cfile_name);
    if (ptx_name)
      maybe_unlink (ptx_name);
+   if (omp_requires_file)
+     maybe_unlink (omp_requires_file);
  }
  
  static void
*************** xputenv (const char *string)
*** 105,112 ****
  static void
  record_id (const char *p1, id_map ***where)
  {
!   const char *end = strchr (p1, '\n');
!   if (!end)
      fatal_error (input_location, "malformed ptx file");
  
    id_map *v = XNEW (id_map);
--- 109,119 ----
  static void
  record_id (const char *p1, id_map ***where)
  {
!   gcc_assert (p1[0] == '"');
!   p1++;
!   const char *end = strchr (p1, '"');
!   const char *end2 = strchr (p1, '\n');
!   if (!end || !end2 || end >= end2)
      fatal_error (input_location, "malformed ptx file");
  
    id_map *v = XNEW (id_map);
*************** record_id (const char *p1, id_map ***whe
*** 114,119 ****
--- 121,136 ----
    v->ptx_name = XNEWVEC (char, len + 1);
    memcpy (v->ptx_name, p1, len);
    v->ptx_name[len] = '\0';
+   p1 = end + 1;
+   if (*end != '\n')
+     {
+       len = end2 - p1;
+       v->dim = XNEWVEC (char, len + 1);
+       memcpy (v->dim, p1, len);
+       v->dim[len] = '\0';
+     }
+   else
+     v->dim = NULL;
    v->next = NULL;
    id_map **tail = *where;
    *tail = v;
*************** access_check (const char *name, int mode
*** 231,237 ****
  }
  
  static void
! process (FILE *in, FILE *out)
  {
    size_t len = 0;
    const char *input = read_file (in, &len);
--- 248,254 ----
  }
  
  static void
! process (FILE *in, FILE *out, uint32_t omp_requires)
  {
    size_t len = 0;
    const char *input = read_file (in, &len);
*************** process (FILE *in, FILE *out)
*** 239,250 ****
--- 256,275 ----
    id_map const *id;
    unsigned obj_count = 0;
    unsigned ix;
+   const char *sm_ver = NULL, *version = NULL;
+   const char *sm_ver2 = NULL, *version2 = NULL;
+   size_t file_cnt = 0;
+   size_t *file_idx = XALLOCAVEC (size_t, len);
+ 
+   fprintf (out, "#include <stdint.h>\n\n");
  
    /* Dump out char arrays for each PTX object file.  These are
       terminated by a NUL.  */
    for (size_t i = 0; i != len;)
      {
        char c;
+       bool output_fn_ptr = false;
+       file_idx[file_cnt++] = i;
  
        fprintf (out, "static const char ptx_code_%u[] =\n\t\"", obj_count++);
        while ((c = input[i++]))
*************** process (FILE *in, FILE *out)
*** 256,261 ****
--- 281,296 ----
  	    case '\n':
  	      fprintf (out, "\\n\"\n\t\"");
  	      /* Look for mappings on subsequent lines.  */
+ 	      if (UNLIKELY (startswith (input + i, ".target sm_")))
+ 		{
+ 		  sm_ver = input + i + strlen (".target sm_");
+ 		  continue;
+ 		}
+ 	      if (UNLIKELY (startswith (input + i, ".version ")))
+ 		{
+ 		  version = input + i + strlen (".version ");
+ 		  continue;
+ 		}
  	      while (startswith (input + i, "//:"))
  		{
  		  i += 3;
*************** process (FILE *in, FILE *out)
*** 263,269 ****
  		  if (startswith (input + i, "VAR_MAP "))
  		    record_id (input + i + 8, &vars_tail);
  		  else if (startswith (input + i, "FUNC_MAP "))
! 		    record_id (input + i + 9, &funcs_tail);
  		  else
  		    abort ();
  		  /* Skip to next line. */
--- 298,307 ----
  		  if (startswith (input + i, "VAR_MAP "))
  		    record_id (input + i + 8, &vars_tail);
  		  else if (startswith (input + i, "FUNC_MAP "))
! 		    {
! 		      output_fn_ptr = true;
! 		      record_id (input + i + 9, &funcs_tail);
! 		    }
  		  else
  		    abort ();
  		  /* Skip to next line. */
*************** process (FILE *in, FILE *out)
*** 281,286 ****
--- 319,411 ----
  	  putc (c, out);
  	}
        fprintf (out, "\";\n\n");
+       if (output_fn_ptr
+ 	  && (omp_requires & GOMP_REQUIRES_REVERSE_OFFLOAD) != 0)
+ 	{
+ 	  if (sm_ver && sm_ver[0] == '3' && sm_ver[1] == '0'
+ 	      && sm_ver[2] == '\n')
+ 	    {
+ 	      warning_at (input_location, 0,
+ 			  "%<omp requires reverse_offload%> requires at "
+ 			  "least %<sm_35%> for "
+ 			  "%<-foffload-options=nvptx-none=-march=%> - disabling"
+ 			  " offload-code generation for this device type");
+ 	      /* As now an empty file is compiled and there is no call to
+ 		 GOMP_offload_register_ver, this device type is effectively
+ 		 disabled.  */
+ 	      fflush (out);
+ 	      ftruncate (fileno (out), 0);
+ 	      return;
+ 	    }
+ 	  sm_ver2 = sm_ver;
+ 	  version2 = version;
+ 	}
+     }
+ 
+   /* Create function-pointer array, required for reverse
+      offload function-pointer lookup.  */
+ 
+   if (func_ids && (omp_requires & GOMP_REQUIRES_REVERSE_OFFLOAD) != 0)
+     {
+       const char needle[] = "// BEGIN GLOBAL FUNCTION DECL: ";
+       fprintf (out, "static const char ptx_code_%u[] =\n", obj_count++);
+       fprintf (out, "\t\".version ");
+       for (size_t i = 0; version2[i] != '\0' && version2[i] != '\n'; i++)
+ 	fputc (version2[i], out);
+       fprintf (out, "\"\n\t\".target sm_");
+       for (size_t i = 0; version2[i] != '\0' && sm_ver2[i] != '\n'; i++)
+ 	fputc (sm_ver2[i], out);
+       fprintf (out, "\"\n\t\".file 1 \\\"<dummy>\\\"\"\n");
+ 
+       size_t fidx = 0;
+       for (id = func_ids; id; id = id->next)
+ 	{
+ 	  /* Only 'nohost' functions are needed - use NULL for the rest.
+ 	     Alternatively, besides searching for 'BEGIN FUNCTION DECL',
+ 	     checking for '.visible .entry ' + id->ptx_name would be
+ 	     required.  */
+ 	  if (!endswith (id->ptx_name, "$nohost")
+ 	      && !strstr (id->ptx_name, "$nohost$"))
+ 	    continue;
+ 	  fprintf (out, "\t\".extern ");
+ 	  const char *p = input + file_idx[fidx];
+ 	  while (true)
+ 	    {
+ 	      p = strstr (p, needle);
+ 	      if (!p)
+ 		{
+ 		  fidx++;
+ 		  if (fidx >= file_cnt)
+ 		    break;
+ 		  p = input + file_idx[fidx];
+ 		  continue;
+ 		}
+ 	      p += strlen (needle);
+ 	      if (!startswith (p, id->ptx_name))
+ 		continue;
+ 	      p += strlen (id->ptx_name);
+ 	      if (*p != '\n')
+ 		continue;
+ 	      p++;
+ 	      gcc_assert (startswith (p, ".visible "));
+ 	      p += strlen (".visible ");
+ 	      for (; *p != '\0' && *p != '\n'; p++)
+ 		fputc (*p, out);
+ 	      break;
+ 	    }
+ 	  fprintf (out, "\"\n");
+ 	  if (fidx == file_cnt)
+ 	    fatal_error (input_location,
+ 			 "Cannot find function declaration for %qs",
+ 			 id->ptx_name);
+ 	}
+       fprintf (out, "\t\".visible .global .align 8 .u64 "
+ 		    "$offload_func_table[] = {");
+       for (comma = "", id = func_ids; id; comma = ",", id = id->next)
+ 	fprintf (out, "%s\"\n\t\t\"%s", comma,
+ 		 (endswith (id->ptx_name, "$nohost")
+ 		  || strstr (id->ptx_name, "$nohost$")) ? id->ptx_name : "0");
+       fprintf (out, "};\\n\";\n\n");
      }
  
    /* Dump out array of pointers to ptx object strings.  */
*************** process (FILE *in, FILE *out)
*** 295,301 ****
    /* Dump out variable idents.  */
    fprintf (out, "static const char *const var_mappings[] = {");
    for (comma = "", id = var_ids; id; comma = ",", id = id->next)
!     fprintf (out, "%s\n\t%s", comma, id->ptx_name);
    fprintf (out, "\n};\n\n");
  
    /* Dump out function idents.  */
--- 420,426 ----
    /* Dump out variable idents.  */
    fprintf (out, "static const char *const var_mappings[] = {");
    for (comma = "", id = var_ids; id; comma = ",", id = id->next)
!     fprintf (out, "%s\n\t\"%s\"", comma, id->ptx_name);
    fprintf (out, "\n};\n\n");
  
    /* Dump out function idents.  */
*************** process (FILE *in, FILE *out)
*** 304,327 ****
  	   "  unsigned short dim[%d];\n"
  	   "} func_mappings[] = {\n", GOMP_DIM_MAX);
    for (comma = "", id = func_ids; id; comma = ",", id = id->next)
!     fprintf (out, "%s\n\t{%s}", comma, id->ptx_name);
    fprintf (out, "\n};\n\n");
  
    fprintf (out,
! 	   "static const struct nvptx_tdata {\n"
  	   "  const struct ptx_obj *ptx_objs;\n"
  	   "  unsigned ptx_num;\n"
  	   "  const char *const *var_names;\n"
  	   "  unsigned var_num;\n"
  	   "  const struct nvptx_fn *fn_names;\n"
  	   "  unsigned fn_num;\n"
! 	   "} target_data = {\n"
! 	   "  ptx_objs, sizeof (ptx_objs) / sizeof (ptx_objs[0]),\n"
  	   "  var_mappings,"
  	   "  sizeof (var_mappings) / sizeof (var_mappings[0]),\n"
  	   "  func_mappings,"
  	   "  sizeof (func_mappings) / sizeof (func_mappings[0])\n"
! 	   "};\n\n");
  
    fprintf (out, "#ifdef __cplusplus\n"
  	   "extern \"C\" {\n"
--- 429,454 ----
  	   "  unsigned short dim[%d];\n"
  	   "} func_mappings[] = {\n", GOMP_DIM_MAX);
    for (comma = "", id = func_ids; id; comma = ",", id = id->next)
!     fprintf (out, "%s\n\t{\"%s\"%s}", comma, id->ptx_name,
! 	     id->dim ? id->dim : "");
    fprintf (out, "\n};\n\n");
  
    fprintf (out,
! 	   "static const struct nvptx_data {\n"
! 	   "  uintptr_t omp_requires_mask;\n"
  	   "  const struct ptx_obj *ptx_objs;\n"
  	   "  unsigned ptx_num;\n"
  	   "  const char *const *var_names;\n"
  	   "  unsigned var_num;\n"
  	   "  const struct nvptx_fn *fn_names;\n"
  	   "  unsigned fn_num;\n"
! 	   "} nvptx_data = {\n"
! 	   "  %d, ptx_objs, sizeof (ptx_objs) / sizeof (ptx_objs[0]),\n"
  	   "  var_mappings,"
  	   "  sizeof (var_mappings) / sizeof (var_mappings[0]),\n"
  	   "  func_mappings,"
  	   "  sizeof (func_mappings) / sizeof (func_mappings[0])\n"
! 	   "};\n\n", omp_requires);
  
    fprintf (out, "#ifdef __cplusplus\n"
  	   "extern \"C\" {\n"
*************** process (FILE *in, FILE *out)
*** 341,347 ****
    fprintf (out, "static __attribute__((constructor)) void init (void)\n"
  	   "{\n"
  	   "  GOMP_offload_register_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*NVIDIA_PTX*/, &target_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX),
  	   GOMP_DEVICE_NVIDIA_PTX);
--- 468,474 ----
    fprintf (out, "static __attribute__((constructor)) void init (void)\n"
  	   "{\n"
  	   "  GOMP_offload_register_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*NVIDIA_PTX*/, &nvptx_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX),
  	   GOMP_DEVICE_NVIDIA_PTX);
*************** process (FILE *in, FILE *out)
*** 349,355 ****
    fprintf (out, "static __attribute__((destructor)) void fini (void)\n"
  	   "{\n"
  	   "  GOMP_offload_unregister_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*NVIDIA_PTX*/, &target_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX),
  	   GOMP_DEVICE_NVIDIA_PTX);
--- 476,482 ----
    fprintf (out, "static __attribute__((destructor)) void fini (void)\n"
  	   "{\n"
  	   "  GOMP_offload_unregister_ver (%#x, __OFFLOAD_TABLE__,"
! 	   " %d/*NVIDIA_PTX*/, &nvptx_data);\n"
  	   "};\n",
  	   GOMP_VERSION_PACK (GOMP_VERSION, GOMP_VERSION_NVIDIA_PTX),
  	   GOMP_DEVICE_NVIDIA_PTX);
*************** main (int argc, char **argv)
*** 411,417 ****
    FILE *out = stdout;
    const char *outname = 0;
  
!   progname = "mkoffload";
    diagnostic_initialize (global_dc, 0);
  
    if (atexit (mkoffload_cleanup) != 0)
--- 538,544 ----
    FILE *out = stdout;
    const char *outname = 0;
  
!   progname = tool_name;
    diagnostic_initialize (global_dc, 0);
  
    if (atexit (mkoffload_cleanup) != 0)
*************** main (int argc, char **argv)
*** 583,601 ****
        unsetenv ("COMPILER_PATH");
        unsetenv ("LIBRARY_PATH");
  
        fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true,
  		    ".gcc_args");
        obstack_free (&argv_obstack, NULL);
  
        xputenv (concat ("GCC_EXEC_PREFIX=", execpath, NULL));
        xputenv (concat ("COMPILER_PATH=", cpath, NULL));
        xputenv (concat ("LIBRARY_PATH=", lpath, NULL));
  
        in = fopen (ptx_name, "r");
        if (!in)
  	fatal_error (input_location, "cannot open intermediate ptx file");
  
!       process (in, out);
        fclose (in);
      }
  
--- 710,745 ----
        unsetenv ("COMPILER_PATH");
        unsetenv ("LIBRARY_PATH");
  
+       if (save_temps)
+ 	omp_requires_file = concat (dumppfx, ".mkoffload.omp_requires", NULL);
+       else
+ 	omp_requires_file = make_temp_file (".mkoffload.omp_requires");
+ 
+       xputenv (concat ("GCC_OFFLOAD_OMP_REQUIRES_FILE=", omp_requires_file, NULL));
        fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true,
  		    ".gcc_args");
        obstack_free (&argv_obstack, NULL);
+       unsetenv("GCC_OFFLOAD_OMP_REQUIRES_FILE");
  
        xputenv (concat ("GCC_EXEC_PREFIX=", execpath, NULL));
        xputenv (concat ("COMPILER_PATH=", cpath, NULL));
        xputenv (concat ("LIBRARY_PATH=", lpath, NULL));
  
+       in = fopen (omp_requires_file, "rb");
+       if (!in)
+ 	fatal_error (input_location, "cannot open omp_requires file %qs",
+ 		     omp_requires_file);
+       uint32_t omp_requires;
+       if (fread (&omp_requires, sizeof (omp_requires), 1, in) != 1)
+ 	fatal_error (input_location, "cannot read omp_requires file %qs",
+ 		     omp_requires_file);
+       fclose (in);
+ 
        in = fopen (ptx_name, "r");
        if (!in)
  	fatal_error (input_location, "cannot open intermediate ptx file");
  
!       process (in, out, omp_requires);
        fclose (in);
      }
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx-c.cc gcc-13.1.0/gcc/config/nvptx/nvptx-c.cc
*** gcc-12.2.0/gcc/config/nvptx/nvptx-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the C front end on the NVPTX architecture.
!  * Copyright (C) 2021-2022 Free Software Foundation, Inc.
   *
   * This file is part of GCC.
   *
--- 1,5 ----
  /* Subroutines for the C front end on the NVPTX architecture.
!  * Copyright (C) 2021-2023 Free Software Foundation, Inc.
   *
   * This file is part of GCC.
   *
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx-gen.h gcc-13.1.0/gcc/config/nvptx/nvptx-gen.h
*** gcc-12.2.0/gcc/config/nvptx/nvptx-gen.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx-gen.h	Wed Apr 26 07:09:39 2023
***************
*** 2,8 ****
     Generated automatically by gen-h.sh from nvptx-sm.def.
  */
  
! /* Copyright (C) 2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 2,8 ----
     Generated automatically by gen-h.sh from nvptx-sm.def.
  */
  
! /* Copyright (C) 2022-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx-gen.opt gcc-13.1.0/gcc/config/nvptx/nvptx-gen.opt
*** gcc-12.2.0/gcc/config/nvptx/nvptx-gen.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx-gen.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by gen-opt.sh from nvptx-sm.def.
  
! ; Copyright (C) 2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by gen-opt.sh from nvptx-sm.def.
  
! ; Copyright (C) 2022-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx-opts.h gcc-13.1.0/gcc/config/nvptx/nvptx-opts.h
*** gcc-12.2.0/gcc/config/nvptx/nvptx-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for the NVPTX port needed for option handling.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for the NVPTX port needed for option handling.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx-protos.h gcc-13.1.0/gcc/config/nvptx/nvptx-protos.h
*** gcc-12.2.0/gcc/config/nvptx/nvptx-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in nvptx.cc.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in nvptx.cc.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx-sm.def gcc-13.1.0/gcc/config/nvptx/nvptx-sm.def
*** gcc-12.2.0/gcc/config/nvptx/nvptx-sm.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx-sm.def	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2022-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx.cc gcc-13.1.0/gcc/config/nvptx/nvptx.cc
*** gcc-12.2.0/gcc/config/nvptx/nvptx.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target code for NVPTX.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target code for NVPTX.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
     This file is part of GCC.
***************
*** 52,58 ****
  #include "tm-preds.h"
  #include "tm-constrs.h"
  #include "langhooks.h"
- #include "dbxout.h"
  #include "cfgrtl.h"
  #include "gimple.h"
  #include "stor-layout.h"
--- 52,57 ----
*************** nvptx_option_override (void)
*** 335,340 ****
--- 334,343 ----
  {
    init_machine_status = nvptx_init_machine_status;
  
+   /* Via nvptx 'OPTION_DEFAULT_SPECS', '-misa' always appears on the command
+      line.  */
+   gcc_checking_assert (OPTION_SET_P (ptx_isa_option));
+ 
    handle_ptx_version_option ();
  
    /* Set toplevel_reorder, unless explicitly disabled.  We need
*************** write_var_marker (FILE *file, bool is_de
*** 989,1003 ****
  
  static void
  write_fn_proto_1 (std::stringstream &s, bool is_defn,
! 		  const char *name, const_tree decl)
  {
    if (lookup_attribute ("alias", DECL_ATTRIBUTES (decl)) == NULL)
!     write_fn_marker (s, is_defn, TREE_PUBLIC (decl), name);
  
    /* PTX declaration.  */
    if (DECL_EXTERNAL (decl))
      s << ".extern ";
!   else if (TREE_PUBLIC (decl))
      s << (DECL_WEAK (decl) ? ".weak " : ".visible ");
    s << (write_as_kernel (DECL_ATTRIBUTES (decl)) ? ".entry " : ".func ");
  
--- 992,1006 ----
  
  static void
  write_fn_proto_1 (std::stringstream &s, bool is_defn,
! 		  const char *name, const_tree decl, bool force_public)
  {
    if (lookup_attribute ("alias", DECL_ATTRIBUTES (decl)) == NULL)
!     write_fn_marker (s, is_defn, TREE_PUBLIC (decl) || force_public, name);
  
    /* PTX declaration.  */
    if (DECL_EXTERNAL (decl))
      s << ".extern ";
!   else if (TREE_PUBLIC (decl) || force_public)
      s << (DECL_WEAK (decl) ? ".weak " : ".visible ");
    s << (write_as_kernel (DECL_ATTRIBUTES (decl)) ? ".entry " : ".func ");
  
*************** write_fn_proto_1 (std::stringstream &s,
*** 1086,1092 ****
  
  static void
  write_fn_proto (std::stringstream &s, bool is_defn,
! 		const char *name, const_tree decl)
  {
    const char *replacement = nvptx_name_replacement (name);
    char *replaced_dots = NULL;
--- 1089,1095 ----
  
  static void
  write_fn_proto (std::stringstream &s, bool is_defn,
! 		const char *name, const_tree decl, bool force_public=false)
  {
    const char *replacement = nvptx_name_replacement (name);
    char *replaced_dots = NULL;
*************** write_fn_proto (std::stringstream &s, bo
*** 1103,1111 ****
  
    if (is_defn)
      /* Emit a declaration.  The PTX assembler gets upset without it.  */
!     write_fn_proto_1 (s, false, name, decl);
  
!   write_fn_proto_1 (s, is_defn, name, decl);
  
    if (replaced_dots)
      XDELETE (replaced_dots);
--- 1106,1114 ----
  
    if (is_defn)
      /* Emit a declaration.  The PTX assembler gets upset without it.  */
!     write_fn_proto_1 (s, false, name, decl, force_public);
  
!   write_fn_proto_1 (s, is_defn, name, decl, force_public);
  
    if (replaced_dots)
      XDELETE (replaced_dots);
*************** nvptx_declare_function_name (FILE *file,
*** 1481,1487 ****
--- 1484,1496 ----
    tree fntype = TREE_TYPE (decl);
    tree result_type = TREE_TYPE (fntype);
    int argno = 0;
+   bool force_public = false;
  
+   /* For reverse-offload 'nohost' functions: In order to be collectable in
+      '$offload_func_table', cf. mkoffload.cc, the function has to be visible. */
+   if (lookup_attribute ("omp target device_ancestor_nohost",
+ 			DECL_ATTRIBUTES (decl)))
+     force_public = true;
    if (lookup_attribute ("omp target entrypoint", DECL_ATTRIBUTES (decl))
        && !lookup_attribute ("oacc function", DECL_ATTRIBUTES (decl)))
      {
*************** nvptx_declare_function_name (FILE *file,
*** 1493,1499 ****
    /* We construct the initial part of the function into a string
       stream, in order to share the prototype writing code.  */
    std::stringstream s;
!   write_fn_proto (s, true, name, decl);
    s << "{\n";
  
    bool return_in_mem = write_return_type (s, false, result_type);
--- 1502,1508 ----
    /* We construct the initial part of the function into a string
       stream, in order to share the prototype writing code.  */
    std::stringstream s;
!   write_fn_proto (s, true, name, decl, force_public);
    s << "{\n";
  
    bool return_in_mem = write_return_type (s, false, result_type);
*************** nvptx_mem_maybe_shared_p (const_rtx x)
*** 2874,2879 ****
--- 2883,2889 ----
     t -- print a type opcode suffix, promoting QImode to 32 bits
     T -- print a type size in bits
     u -- print a type opcode suffix without promotions.
+    p -- print a '!' for constant 0.
     x -- print a destination operand that may also be a bit bucket.  */
  
  static void
*************** nvptx_print_operand (FILE *file, rtx x,
*** 3007,3012 ****
--- 3017,3027 ----
        fprintf (file, "@!");
        goto common;
  
+     case 'p':
+       if (INTVAL (x) == 0)
+ 	fprintf (file, "!");
+       break;
+ 
      case 'c':
        mode = GET_MODE (XEXP (x, 0));
        switch (x_code)
*************** enum nvptx_builtins
*** 6146,6154 ****
--- 6161,6250 ----
    NVPTX_BUILTIN_CMP_SWAPLL,
    NVPTX_BUILTIN_MEMBAR_GL,
    NVPTX_BUILTIN_MEMBAR_CTA,
+   NVPTX_BUILTIN_BAR_RED_AND,
+   NVPTX_BUILTIN_BAR_RED_OR,
+   NVPTX_BUILTIN_BAR_RED_POPC,
    NVPTX_BUILTIN_MAX
  };
  
+ /* Expander for 'bar.red' instruction builtins.  */
+ 
+ static rtx
+ nvptx_expand_bar_red (tree exp, rtx target,
+ 		      machine_mode ARG_UNUSED (m), int ARG_UNUSED (ignore))
+ {
+   int code = DECL_MD_FUNCTION_CODE (TREE_OPERAND (CALL_EXPR_FN (exp), 0));
+   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
+ 
+   if (!target)
+     target = gen_reg_rtx (mode);
+ 
+   rtx pred, dst;
+   rtx bar = expand_expr (CALL_EXPR_ARG (exp, 0),
+ 			 NULL_RTX, SImode, EXPAND_NORMAL);
+   rtx nthr = expand_expr (CALL_EXPR_ARG (exp, 1),
+ 			  NULL_RTX, SImode, EXPAND_NORMAL);
+   rtx cpl = expand_expr (CALL_EXPR_ARG (exp, 2),
+ 			 NULL_RTX, SImode, EXPAND_NORMAL);
+   rtx redop = expand_expr (CALL_EXPR_ARG (exp, 3),
+ 			   NULL_RTX, SImode, EXPAND_NORMAL);
+   if (CONST_INT_P (bar))
+     {
+       if (INTVAL (bar) < 0 || INTVAL (bar) > 15)
+ 	{
+ 	  error_at (EXPR_LOCATION (exp),
+ 		    "barrier value must be within [0,15]");
+ 	  return const0_rtx;
+ 	}
+     }
+   else if (!REG_P (bar))
+     bar = copy_to_mode_reg (SImode, bar);
+ 
+   if (!CONST_INT_P (nthr) && !REG_P (nthr))
+     nthr = copy_to_mode_reg (SImode, nthr);
+ 
+   if (!CONST_INT_P (cpl))
+     {
+       error_at (EXPR_LOCATION (exp),
+ 		"complement argument must be constant");
+       return const0_rtx;
+     }
+ 
+   pred = gen_reg_rtx (BImode);
+   if (!REG_P (redop))
+     redop = copy_to_mode_reg (SImode, redop);
+   emit_insn (gen_rtx_SET (pred, gen_rtx_NE (BImode, redop, GEN_INT (0))));
+   redop = pred;
+ 
+   rtx pat;
+   switch (code)
+     {
+     case NVPTX_BUILTIN_BAR_RED_AND:
+       dst = gen_reg_rtx (BImode);
+       pat = gen_nvptx_barred_and (dst, bar, nthr, cpl, redop);
+       break;
+     case NVPTX_BUILTIN_BAR_RED_OR:
+       dst = gen_reg_rtx (BImode);
+       pat = gen_nvptx_barred_or (dst, bar, nthr, cpl, redop);
+       break;
+     case NVPTX_BUILTIN_BAR_RED_POPC:
+       dst = gen_reg_rtx (SImode);
+       pat = gen_nvptx_barred_popc (dst, bar, nthr, cpl, redop);
+       break;
+     default:
+       gcc_unreachable ();
+     }
+   emit_insn (pat);
+   if (GET_MODE (dst) == BImode)
+     {
+       rtx tmp = gen_reg_rtx (mode);
+       emit_insn (gen_rtx_SET (tmp, gen_rtx_NE (mode, dst, GEN_INT (0))));
+       dst = tmp;
+     }
+   emit_move_insn (target, dst);
+   return target;
+ }
+ 
  static GTY(()) tree nvptx_builtin_decls[NVPTX_BUILTIN_MAX];
  
  /* Return the NVPTX builtin for CODE.  */
*************** nvptx_init_builtins (void)
*** 6189,6194 ****
--- 6285,6297 ----
    DEF (MEMBAR_GL, "membar_gl", (VOID, VOID, NULL_TREE));
    DEF (MEMBAR_CTA, "membar_cta", (VOID, VOID, NULL_TREE));
  
+   DEF (BAR_RED_AND, "bar_red_and",
+        (UINT, UINT, UINT, UINT, UINT, NULL_TREE));
+   DEF (BAR_RED_OR, "bar_red_or",
+        (UINT, UINT, UINT, UINT, UINT, NULL_TREE));
+   DEF (BAR_RED_POPC, "bar_red_popc",
+        (UINT, UINT, UINT, UINT, UINT, NULL_TREE));
+ 
  #undef DEF
  #undef ST
  #undef UINT
*************** nvptx_expand_builtin (tree exp, rtx targ
*** 6231,6236 ****
--- 6334,6344 ----
        emit_insn (gen_nvptx_membar_cta ());
        return NULL_RTX;
  
+     case NVPTX_BUILTIN_BAR_RED_AND:
+     case NVPTX_BUILTIN_BAR_RED_OR:
+     case NVPTX_BUILTIN_BAR_RED_POPC:
+       return nvptx_expand_bar_red (exp, target, mode, ignore);
+ 
      default: gcc_unreachable ();
      }
  }
*************** nvptx_goacc_reduction_fini (gcall *call,
*** 7034,7040 ****
    enum tree_code op
      = (enum tree_code)TREE_INT_CST_LOW (gimple_call_arg (call, 4));
    gimple_seq seq = NULL;
!   tree r = NULL_TREE;;
  
    push_gimplify_context (true);
  
--- 7142,7148 ----
    enum tree_code op
      = (enum tree_code)TREE_INT_CST_LOW (gimple_call_arg (call, 4));
    gimple_seq seq = NULL;
!   tree r = NULL_TREE;
  
    push_gimplify_context (true);
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx.h gcc-13.1.0/gcc/config/nvptx/nvptx.h
*** gcc-12.2.0/gcc/config/nvptx/nvptx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Definitions for NVPTX.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Definitions for NVPTX.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Bernd Schmidt <bernds@codesourcery.com>
  
     This file is part of GCC.
***************
*** 27,33 ****
  
  /* Run-time Target.  */
  
! #define STARTFILE_SPEC "%{mmainkernel:crt0.o}"
  
  #define TARGET_CPU_CPP_BUILTINS() nvptx_cpu_cpp_builtins ()
  
--- 27,41 ----
  
  /* Run-time Target.  */
  
! /* Use '--with-arch' for default '-misa'.  */
! #define OPTION_DEFAULT_SPECS \
!   { "arch", "%{!misa=*:-misa=%(VALUE)}" }, \
! 
! /* Assembler supports '-v' option; handle similar to
!    '../../gcc.cc:asm_options', 'HAVE_GNU_AS'.  */
! #define ASM_SPEC "%{v}"
! 
! #define STARTFILE_SPEC "%{mmainkernel:crt0.o%s}"
  
  #define TARGET_CPU_CPP_BUILTINS() nvptx_cpu_cpp_builtins ()
  
*************** struct GTY(()) machine_function
*** 253,259 ****
  #undef ASM_APP_OFF
  #define ASM_APP_OFF "\t// #NO_APP \n"
  
! #define DBX_REGISTER_NUMBER(N) N
  
  #define TEXT_SECTION_ASM_OP ""
  #define DATA_SECTION_ASM_OP ""
--- 261,267 ----
  #undef ASM_APP_OFF
  #define ASM_APP_OFF "\t// #NO_APP \n"
  
! #define DEBUGGER_REGNO(N) N
  
  #define TEXT_SECTION_ASM_OP ""
  #define DATA_SECTION_ASM_OP ""
*************** struct GTY(()) machine_function
*** 321,326 ****
--- 329,337 ----
  #define ASM_OUTPUT_DEF(FILE,LABEL1,LABEL2)	\
    do						\
      {						\
+       (void) (FILE);				\
+       (void) (LABEL1);				\
+       (void) (LABEL2);				\
        gcc_unreachable ();			\
      }						\
    while (0)
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx.md gcc-13.1.0/gcc/config/nvptx/nvptx.md
*** gcc-12.2.0/gcc/config/nvptx/nvptx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for NVPTX.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for NVPTX.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;; Contributed by Bernd Schmidt <bernds@codesourcery.com>
  ;;
  ;; This file is part of GCC.
***************
*** 58,63 ****
--- 58,66 ----
     UNSPECV_CAS_LOCAL
     UNSPECV_XCHG
     UNSPECV_ST
+    UNSPECV_BARRED_AND
+    UNSPECV_BARRED_OR
+    UNSPECV_BARRED_POPC
     UNSPECV_BARSYNC
     UNSPECV_WARPSYNC
     UNSPECV_UNIFORM_WARP_CHECK
***************
*** 2274,2279 ****
--- 2277,2311 ----
    "TARGET_PTX_6_0"
    "%.\\tbar.warp.sync\\t0xffffffff;")
  
+ (define_int_iterator BARRED
+   [UNSPECV_BARRED_AND
+    UNSPECV_BARRED_OR
+    UNSPECV_BARRED_POPC])
+ (define_int_attr barred_op
+   [(UNSPECV_BARRED_AND      "and")
+    (UNSPECV_BARRED_OR       "or")
+    (UNSPECV_BARRED_POPC     "popc")])
+ (define_int_attr barred_mode
+   [(UNSPECV_BARRED_AND      "BI")
+    (UNSPECV_BARRED_OR       "BI")
+    (UNSPECV_BARRED_POPC     "SI")])
+ (define_int_attr barred_ptxtype
+   [(UNSPECV_BARRED_AND      "pred")
+    (UNSPECV_BARRED_OR       "pred")
+    (UNSPECV_BARRED_POPC     "u32")])
+ 
+ (define_insn "nvptx_barred_<barred_op>"
+   [(set (match_operand:<barred_mode> 0 "nvptx_register_operand" "=R")
+         (unspec_volatile
+ 	  [(match_operand:SI 1 "nvptx_nonmemory_operand" "Ri")
+            (match_operand:SI 2 "nvptx_nonmemory_operand" "Ri")
+ 	   (match_operand:SI 3 "const_int_operand" "i")
+            (match_operand:BI 4 "nvptx_register_operand" "R")]
+           BARRED))]
+   ""
+   "\\tbar.red.<barred_op>.<barred_ptxtype> \\t%0, %1, %2, %p3%4;";"
+   [(set_attr "predicable" "no")])
+ 
  (define_insn "nvptx_uniform_warp_check"
    [(unspec_volatile [(const_int 0)] UNSPECV_UNIFORM_WARP_CHECK)]
    ""
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/nvptx.opt gcc-13.1.0/gcc/config/nvptx/nvptx.opt
*** gcc-12.2.0/gcc/config/nvptx/nvptx.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/nvptx.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options for the NVPTX port
! ; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,5 ----
  ; Options for the NVPTX port
! ; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Target Mask(GOMP)
*** 53,59 ****
  Generate code for OpenMP offloading: enables -msoft-stack and -muniform-simt.
  
  misa=
! Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option) Init(PTX_ISA_SM30)
  Specify the PTX ISA target architecture to use.
  
  march=
--- 53,59 ----
  Generate code for OpenMP offloading: enables -msoft-stack and -muniform-simt.
  
  misa=
! Target RejectNegative ToLower Joined Enum(ptx_isa) Var(ptx_isa_option)
  Specify the PTX ISA target architecture to use.
  
  march=
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/offload.h gcc-13.1.0/gcc/config/nvptx/offload.h
*** gcc-12.2.0/gcc/config/nvptx/offload.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/offload.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Support for Nvidia PTX offloading.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Support for Nvidia PTX offloading.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/nvptx/t-nvptx gcc-13.1.0/gcc/config/nvptx/t-nvptx
*** gcc-12.2.0/gcc/config/nvptx/t-nvptx	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/nvptx/t-nvptx	Wed Apr 26 07:09:39 2023
*************** s-nvptx-gen-opt: $(srcdir)/config/nvptx/
*** 31,34 ****
  	  tmp-nvptx-gen.opt $(srcdir)/config/nvptx/nvptx-gen.opt
  	$(STAMP) s-nvptx-gen-opt
  
! MULTILIB_OPTIONS = mgomp mptx=3.1
--- 31,63 ----
  	  tmp-nvptx-gen.opt $(srcdir)/config/nvptx/nvptx-gen.opt
  	$(STAMP) s-nvptx-gen-opt
  
! 
! # Multilib setup.
! 
! MULTILIB_OPTIONS =
! MULTILIB_MATCHES =
! MULTILIB_EXCEPTIONS =
! 
! MULTILIB_OPTIONS += mgomp
! 
! multilib_options_isa_list := $(TM_MULTILIB_CONFIG)
! multilib_options_isa_default := $(word 1,$(multilib_options_isa_list))
! multilib_options_misa_list := $(addprefix misa=,$(multilib_options_isa_list))
! # Add the requested '-misa' variants as a multilib option ('misa=VAR1/misa=VAR2/misa=VAR3' etc.):
! empty :=
! space := $(empty) $(empty)
! MULTILIB_OPTIONS += $(subst $(space),/,$(multilib_options_misa_list))
! # ..., and remap '-misa' variants as appropriate:
! multilib_matches := $(shell $(srcdir)/config/nvptx/gen-multilib-matches.sh $(srcdir)/config/nvptx $(multilib_options_isa_default) "$(multilib_options_isa_list)")
! MULTILIB_MATCHES += $(multilib_matches)
! # ..., and don't actually build what's the default '-misa':
! MULTILIB_EXCEPTIONS += *misa=$(multilib_options_isa_default)*
! 
! MULTILIB_OPTIONS += mptx=3.1
! # Filter out invalid '-misa'/'-mptx=3.1' combinations; per 'nvptx-sm.def',
! # 'nvptx.opt:ptx_version', 'nvptx.cc:first_ptx_version_supporting_sm'
! # (that is, '-mptx=3.1' only for sm_30, sm_35 variants):
! MULTILIB_EXCEPTIONS += $(foreach misa,$(filter-out %=sm_30 %=sm_35,$(multilib_options_misa_list)),*$(misa)/mptx=3.1)
! # ..., and special care has to be taken if '-mptx=3.1' is invalid for the
! # default variant:
! MULTILIB_EXCEPTIONS += $(if $(filter-out sm_30 sm_35,$(multilib_options_isa_default)),mgomp/mptx=3.1 mptx=3.1)
diff -Nrcpad gcc-12.2.0/gcc/config/openbsd-d.cc gcc-13.1.0/gcc/config/openbsd-d.cc
*** gcc-12.2.0/gcc/config/openbsd-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/openbsd-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for generic OpenBSD as target machine for GNU D compiler.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions for generic OpenBSD as target machine for GNU D compiler.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 20,28 ****
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
- #include "memmodel.h"
  #include "tm.h"
! #include "tm_p.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
--- 20,27 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/openbsd-libpthread.h gcc-13.1.0/gcc/config/openbsd-libpthread.h
*** gcc-12.2.0/gcc/config/openbsd-libpthread.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/openbsd-libpthread.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* LIB_SPEC appropriate for OpenBSD.  Include -lpthread if -pthread is
     specified on the command line. */
! /*   Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* LIB_SPEC appropriate for OpenBSD.  Include -lpthread if -pthread is
     specified on the command line. */
! /*   Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/openbsd.h gcc-13.1.0/gcc/config/openbsd.h
*** gcc-12.2.0/gcc/config/openbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/openbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all OpenBSD targets.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all OpenBSD targets.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** while (0)
*** 151,167 ****
  #define TARGET_LIBC_HAS_FUNCTION default_libc_has_function
  
  
- /* Runtime target specification.  */
- 
- /* Miscellaneous parameters.  */
- 
- /* Controlling debugging info: dbx options.  */
- 
- /* Don't use the `xsTAG;' construct in DBX output; OpenBSD systems that
-    use DBX don't support it.  */
- #define DBX_NO_XREFS
- 
- 
  /* - we use . - _func instead of a local label,
     - we put extra spaces in expressions such as 
       .type _func , @function
--- 151,156 ----
diff -Nrcpad gcc-12.2.0/gcc/config/openbsd.opt gcc-13.1.0/gcc/config/openbsd.opt
*** gcc-12.2.0/gcc/config/openbsd.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/openbsd.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; OpenBSD options.
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; OpenBSD options.
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/constraints.md gcc-13.1.0/gcc/config/or1k/constraints.md
*** gcc-12.2.0/gcc/config/or1k/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for OpenRISC
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by Stafford Horne
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for OpenRISC
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by Stafford Horne
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/elf.h gcc-13.1.0/gcc/config/or1k/elf.h
*** gcc-12.2.0/gcc/config/or1k/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Newlib Definitions for OpenRISC.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Newlib Definitions for OpenRISC.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/elf.opt gcc-13.1.0/gcc/config/or1k/elf.opt
*** gcc-12.2.0/gcc/config/or1k/elf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/elf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; OpenRISC command line options for newlib binaries
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; OpenRISC command line options for newlib binaries
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/linux.h gcc-13.1.0/gcc/config/or1k/linux.h
*** gcc-12.2.0/gcc/config/or1k/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Linux Definitions for OpenRISC.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
--- 1,5 ----
  /* Linux Definitions for OpenRISC.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/or1k-opts.h gcc-13.1.0/gcc/config/or1k/or1k-opts.h
*** gcc-12.2.0/gcc/config/or1k/or1k-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/or1k-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for OpenRISC.
!    Copyright (C) 2021-2022 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for option handling for OpenRISC.
!    Copyright (C) 2021-2023 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/or1k-protos.h gcc-13.1.0/gcc/config/or1k/or1k-protos.h
*** gcc-12.2.0/gcc/config/or1k/or1k-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/or1k-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for OpenRISC functions used in the md file & elsewhere.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for OpenRISC functions used in the md file & elsewhere.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/or1k.cc gcc-13.1.0/gcc/config/or1k/or1k.cc
*** gcc-12.2.0/gcc/config/or1k/or1k.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/or1k.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Code for OpenRISC
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Stafford Horne based on other ports.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Code for OpenRISC
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Stafford Horne based on other ports.
  
     This file is part of GCC.
*************** or1k_output_mi_thunk (FILE *file, tree t
*** 2206,2213 ****
--- 2206,2215 ----
  #undef  TARGET_LEGITIMATE_ADDRESS_P
  #define TARGET_LEGITIMATE_ADDRESS_P or1k_legitimate_address_p
  
+ #ifdef HAVE_AS_TLS
  #undef  TARGET_HAVE_TLS
  #define TARGET_HAVE_TLS true
+ #endif
  
  #undef  TARGET_HAVE_SPECULATION_SAFE_VALUE
  #define TARGET_HAVE_SPECULATION_SAFE_VALUE speculation_safe_value_not_needed
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/or1k.h gcc-13.1.0/gcc/config/or1k/or1k.h
*** gcc-12.2.0/gcc/config/or1k/or1k.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/or1k.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Definitions for OpenRISC.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Definitions for OpenRISC.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Stafford Horne.
  
     This file is part of GCC.
***************
*** 146,152 ****
     : (X) < 24 ? ((X) - 16) * 2 + 17	\
     : ((X) - 24) * 2 + 16)
  
! #define DBX_REGISTER_NUMBER(X)  GCC_TO_HW_REGNO(X)
  
  #define REGISTER_NAMES { \
    "r0",   "r1",   "r2",   "r3",   "r4",   "r5",   "r6",   "r7",   \
--- 146,152 ----
     : (X) < 24 ? ((X) - 16) * 2 + 17	\
     : ((X) - 24) * 2 + 16)
  
! #define DEBUGGER_REGNO(X)  GCC_TO_HW_REGNO(X)
  
  #define REGISTER_NAMES { \
    "r0",   "r1",   "r2",   "r3",   "r4",   "r5",   "r6",   "r7",   \
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/or1k.md gcc-13.1.0/gcc/config/or1k/or1k.md
*** gcc-12.2.0/gcc/config/or1k/or1k.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/or1k.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for OpenRISC
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by Stafford Horne
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for OpenRISC
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by Stafford Horne
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/or1k.opt gcc-13.1.0/gcc/config/or1k/or1k.opt
*** gcc-12.2.0/gcc/config/or1k/or1k.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/or1k.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; OpenRISC command line options
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; OpenRISC command line options
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/predicates.md gcc-13.1.0/gcc/config/or1k/predicates.md
*** gcc-12.2.0/gcc/config/or1k/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for OpenRISC
! ;; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ;; Contributed by Stafford Horne
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for OpenRISC
! ;; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ;; Contributed by Stafford Horne
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/rtems.h gcc-13.1.0/gcc/config/or1k/rtems.h
*** gcc-12.2.0/gcc/config/or1k/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target Newlib Definitions for OpenRISC.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel.sherrill@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Target Newlib Definitions for OpenRISC.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel.sherrill@OARcorp.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/or1k/t-or1k gcc-13.1.0/gcc/config/or1k/t-or1k
*** gcc-12.2.0/gcc/config/or1k/t-or1k	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/or1k/t-or1k	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Target Makefile Fragment for OpenRISC
! # Copyright (C) 2018-2022 Free Software Foundation, Inc.
  # Contributed by Stafford Horne.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Target Makefile Fragment for OpenRISC
! # Copyright (C) 2018-2023 Free Software Foundation, Inc.
  # Contributed by Stafford Horne.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pa/constraints.md gcc-13.1.0/gcc/config/pa/constraints.md
*** gcc-12.2.0/gcc/config/pa/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for pa
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Constraint definitions for pa
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/elf.h gcc-13.1.0/gcc/config/pa/elf.h
*** gcc-12.2.0/gcc/config/pa/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for ELF assembler support.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for ELF assembler support.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-64.h gcc-13.1.0/gcc/config/pa/pa-64.h
*** gcc-12.2.0/gcc/config/pa/pa-64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler, for HPs using the
     64bit runtime model.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler, for HPs using the
     64bit runtime model.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 65,74 ****
  #undef LONG_DOUBLE_TYPE_SIZE
  #define LONG_DOUBLE_TYPE_SIZE 128
  
- /* Temporary until we figure out what to do with those *(&@$ 32bit
-    relocs which appear in stabs.  */
- #undef DBX_DEBUGGING_INFO
- 
  /* ?!? This needs to be made compile-time selectable.
  
     The PA64 runtime model has arguments that grow to higher addresses
--- 65,70 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-d.cc gcc-13.1.0/gcc/config/pa/pa-d.cc
*** gcc-12.2.0/gcc/config/pa/pa-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the HPPA architecture.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the HPPA architecture.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "target.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-d.h gcc-13.1.0/gcc/config/pa/pa-d.h
*** gcc-12.2.0/gcc/config/pa/pa-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/pa/pa-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the HPPA architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Routines implemented in pa-d.cc  */
+ extern void pa_d_target_versions (void);
+ extern void pa_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS pa_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO pa_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux.h gcc-13.1.0/gcc/config/pa/pa-hpux.h
*** gcc-12.2.0/gcc/config/pa/pa-hpux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for HP-UX.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for HP-UX.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux.opt gcc-13.1.0/gcc/config/pa/pa-hpux.opt
*** gcc-12.2.0/gcc/config/pa/pa-hpux.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux10.h gcc-13.1.0/gcc/config/pa/pa-hpux10.h
*** gcc-12.2.0/gcc/config/pa/pa-hpux10.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux10.h	Thu Jan  1 00:00:00 1970
***************
*** 1,157 ****
- /* Definitions of target machine for GNU compiler, for HP PA-RISC
-    Copyright (C) 1995-2022 Free Software Foundation, Inc.
-    Contributed by Tim Moore (moore@defmacro.cs.utah.edu)
- 
- This file is part of GCC.
- 
- GCC is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
- 
- GCC is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- GNU General Public License for more details.
- 
- You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3.  If not see
- <http://www.gnu.org/licenses/>.  */
- 
- /* GCC always defines __STDC__.  HP C++ compilers don't define it.  This
-    causes trouble when sys/stdsyms.h is included.  As a work around,
-    we define __STDC_EXT__.  A similar situation exists with respect to
-    the definition of __cplusplus.  We define _INCLUDE_LONGLONG
-    to prevent nlist.h from defining __STDC_32_MODE__ (no longlong
-    support).  We define __STDCPP__ to get certain system headers
-    (notably assert.h) to assume standard preprocessor behavior in C++.
-    We define _XOPEN_SOURCE_EXTENDED when we define _HPUX_SOURCE to avoid
-    non standard hpux variants in _INCLUDE_XOPEN_SOURCE_EXTENDED.  */
- #undef TARGET_OS_CPP_BUILTINS
- #define TARGET_OS_CPP_BUILTINS()					\
-   do									\
-     {									\
- 	builtin_assert ("system=hpux");					\
- 	builtin_assert ("system=unix");					\
- 	builtin_define ("__hp9000s800");				\
- 	builtin_define ("__hp9000s800__");				\
- 	builtin_define ("__hpux");					\
- 	builtin_define ("__hpux__");					\
- 	builtin_define ("__unix");					\
- 	builtin_define ("__unix__");					\
- 	builtin_define ("__STDC_EXT__");				\
- 	if (c_dialect_cxx ())						\
- 	  {								\
- 	    builtin_define ("_HPUX_SOURCE");				\
- 	    builtin_define ("_REENTRANT");				\
- 	    builtin_define ("_INCLUDE_LONGLONG");			\
- 	    builtin_define ("__STDCPP__");				\
- 	    builtin_define ("_LARGEFILE_SOURCE");			\
- 	    builtin_define ("_LARGEFILE64_SOURCE");			\
- 	    if (flag_pa_unix >= 1995)					\
- 	      {								\
- 		builtin_define ("_XOPEN_UNIX");				\
- 		builtin_define ("_XOPEN_SOURCE_EXTENDED");		\
- 	      }								\
- 	  }								\
- 	else if (flag_iso)						\
- 	  {								\
- 	    if (flag_isoc94)						\
- 	      builtin_define ("_INCLUDE__STDC_A1_SOURCE");		\
- 	  }								\
- 	else								\
- 	  {								\
- 	    builtin_define ("_HPUX_SOURCE");				\
- 	    builtin_define ("_REENTRANT");				\
- 	    if (preprocessing_trad_p ())				\
- 	      {								\
- 		builtin_define ("hp9000s800");				\
- 		builtin_define ("hppa");				\
- 		builtin_define ("hpux");				\
- 		builtin_define ("unix");				\
- 		builtin_define ("__CLASSIC_C__");			\
- 		builtin_define ("_PWB");				\
- 		builtin_define ("PWB");					\
- 	      }								\
- 	    if (flag_pa_unix >= 1995)					\
- 	      {								\
- 		builtin_define ("_XOPEN_UNIX");				\
- 		builtin_define ("_XOPEN_SOURCE_EXTENDED");		\
- 	      }								\
- 	  }								\
- 	if (TARGET_SIO)							\
- 	  builtin_define ("_SIO");					\
- 	else								\
- 	  {								\
- 	    builtin_define ("__hp9000s700");				\
- 	    builtin_define ("__hp9000s700__");				\
- 	    builtin_define ("_WSIO");					\
- 	  }								\
-     }									\
-   while (0)
- 
- #define CPP_SPEC "%{threads: -D_REENTRANT -D_DCE_THREADS}"
- 
- /* We can debug dynamically linked executables on hpux9; we also want
-    dereferencing of a NULL pointer to cause a SEGV.  */
- #undef LINK_SPEC
- #if ((TARGET_DEFAULT | TARGET_CPU_DEFAULT) & MASK_PA_11)
- #define LINK_SPEC \
-   "%{!mpa-risc-1-0:%{!march=1.0:%{static:-L/lib/pa1.1 -L/usr/lib/pa1.1 }}}\
-    %{!shared:%{p:-L/lib/libp %{!static:\
-      %nwarning: consider linking with '-static' as system libraries with\n\
-      %n  profiling support are only provided in archive format}}}\
-    %{!shared:%{pg:-L/lib/libp %{!static:\
-      %nwarning: consider linking with '-static' as system libraries with\n\
-      %n  profiling support are only provided in archive format}}}\
-    %{!shared:%{!static:%{rdynamic:-E}}}\
-    -z %{mlinker-opt:-O} %{!shared:-u main}\
-    %{static:-a archive} %{shared:-b}"
- #else
- #define LINK_SPEC \
-   "%{!shared:%{p:-L/lib/libp %{!static:\
-      %nwarning: consider linking with '-static' as system libraries with\n\
-      %n  profiling support are only provided in archive format}}}\
-    %{!shared:%{pg:-L/lib/libp %{!static:\
-      %nwarning: consider linking with '-static' as system libraries with\n\
-      %n  profiling support are only provided in archive format}}}\
-    %{!shared:%{!static:%{rdynamic:-E}}}\
-    -z %{mlinker-opt:-O} %{!shared:-u main}\
-    %{static:-a archive} %{shared:-b}"
- #endif
- 
- /* Like the default, except no -lg.  */
- #undef LIB_SPEC
- #define LIB_SPEC \
-   "%{!shared:\
-      %{!p:%{!pg:\
-        %{!threads:-lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}\
-        %{threads:-lcma -lc}}}\
-      %{p:%{!pg:-lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}\
-      %{pg:-lc %{static:%{!nolibdld:-a shared -ldld -a archive -lc}}}}"
- 
- #undef THREAD_MODEL_SPEC
- #define THREAD_MODEL_SPEC "%{!threads:single}%{threads:dce}"
- 
- /* Under hpux10, the normal location of the `ld' and `as' programs is the
-    /usr/ccs/bin directory.  */
- 
- #ifndef CROSS_DIRECTORY_STRUCTURE
- #undef MD_EXEC_PREFIX
- #define MD_EXEC_PREFIX "/usr/ccs/bin/"
- #endif
- 
- /* Under hpux10, the normal location of the various *crt*.o files is
-    the /usr/ccs/lib directory.  However, the profiling files are in
-    /opt/langtools/lib.  */
- 
- #ifndef CROSS_DIRECTORY_STRUCTURE
- #undef MD_STARTFILE_PREFIX
- #define MD_STARTFILE_PREFIX "/usr/ccs/lib/"
- #define MD_STARTFILE_PREFIX_1 "/opt/langtools/lib/"
- #endif
- 
- /* hpux10 has the new HP assembler.  It's still lousy, but it's a whole lot
-    better than the assembler shipped with older versions of hpux.  */
- #undef NEW_HP_ASSEMBLER
- #define NEW_HP_ASSEMBLER 1
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux10.opt gcc-13.1.0/gcc/config/pa/pa-hpux10.opt
*** gcc-12.2.0/gcc/config/pa/pa-hpux10.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux10.opt	Thu Jan  1 00:00:00 1970
***************
*** 1,22 ****
- ; Options specific to HP-UX 10.
- 
- ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
- ;
- ; This file is part of GCC.
- ;
- ; GCC is free software; you can redistribute it and/or modify it under
- ; the terms of the GNU General Public License as published by the Free
- ; Software Foundation; either version 3, or (at your option) any later
- ; version.
- ;
- ; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
- ; WARRANTY; without even the implied warranty of MERCHANTABILITY or
- ; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
- ; for more details.
- ;
- ; You should have received a copy of the GNU General Public License
- ; along with GCC; see the file COPYING3.  If not see
- ; <http://www.gnu.org/licenses/>.
- 
- threads
- Driver
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux1010.h gcc-13.1.0/gcc/config/pa/pa-hpux1010.h
*** gcc-12.2.0/gcc/config/pa/pa-hpux1010.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux1010.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux1010.opt gcc-13.1.0/gcc/config/pa/pa-hpux1010.opt
*** gcc-12.2.0/gcc/config/pa/pa-hpux1010.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux1010.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux11.h gcc-13.1.0/gcc/config/pa/pa-hpux11.h
*** gcc-12.2.0/gcc/config/pa/pa-hpux11.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux11.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux1111.h gcc-13.1.0/gcc/config/pa/pa-hpux1111.h
*** gcc-12.2.0/gcc/config/pa/pa-hpux1111.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux1111.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux1111.opt gcc-13.1.0/gcc/config/pa/pa-hpux1111.opt
*** gcc-12.2.0/gcc/config/pa/pa-hpux1111.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux1111.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux1131.h gcc-13.1.0/gcc/config/pa/pa-hpux1131.h
*** gcc-12.2.0/gcc/config/pa/pa-hpux1131.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux1131.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for HP PA-RISC
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-hpux1131.opt gcc-13.1.0/gcc/config/pa/pa-hpux1131.opt
*** gcc-12.2.0/gcc/config/pa/pa-hpux1131.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-hpux1131.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-linux.h gcc-13.1.0/gcc/config/pa/pa-linux.h
*** gcc-12.2.0/gcc/config/pa/pa-linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF format
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF format
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 133,141 ****
  #undef TARGET_GAS
  #define TARGET_GAS 1
  
- #undef TARGET_SYNC_LIBCALL
- #define TARGET_SYNC_LIBCALL 1
- 
  /* The SYNC operations are implemented as library functions, not
     INSN patterns.  As a result, the HAVE defines for the patterns are
     not defined.  We need to define them to generate the corresponding
--- 133,138 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-modes.def gcc-13.1.0/gcc/config/pa/pa-modes.def
*** gcc-12.2.0/gcc/config/pa/pa-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for the HP Spectrum.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
     and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
     Software Science at the University of Utah.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for the HP Spectrum.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
     and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
     Software Science at the University of Utah.
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-netbsd.h gcc-13.1.0/gcc/config/pa/pa-netbsd.h
*** gcc-12.2.0/gcc/config/pa/pa-netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF format
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF format
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-openbsd.h gcc-13.1.0/gcc/config/pa/pa-openbsd.h
*** gcc-12.2.0/gcc/config/pa/pa-openbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-openbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF format
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF format
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-opts.h gcc-13.1.0/gcc/config/pa/pa-opts.h
*** gcc-12.2.0/gcc/config/pa/pa-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for HP PA.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for HP PA.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa-protos.h gcc-13.1.0/gcc/config/pa/pa-protos.h
*** gcc-12.2.0/gcc/config/pa/pa-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for pa.cc functions used in the md file & elsewhere.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Prototypes for pa.cc functions used in the md file & elsewhere.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** extern void pa_asm_output_aligned_local
*** 106,117 ****
  					 unsigned int);
  extern void pa_hpux_asm_output_external (FILE *, tree, const char *);
  extern HOST_WIDE_INT pa_initial_elimination_offset (int, int);
! extern HOST_WIDE_INT pa_function_arg_size (machine_mode, const_tree);
  extern void pa_output_function_label (FILE *);
  extern void hppa_profile_hook (int);
  
  extern const int pa_magic_milli[];
- 
- /* Routines implemented in pa-d.cc  */
- extern void pa_d_target_versions (void);
- extern void pa_d_register_target_info (void);
--- 106,113 ----
  					 unsigned int);
  extern void pa_hpux_asm_output_external (FILE *, tree, const char *);
  extern HOST_WIDE_INT pa_initial_elimination_offset (int, int);
! extern int pa_function_arg_size (machine_mode, const_tree);
  extern void pa_output_function_label (FILE *);
  extern void hppa_profile_hook (int);
  
  extern const int pa_magic_milli[];
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa.cc gcc-13.1.0/gcc/config/pa/pa.cc
*** gcc-12.2.0/gcc/config/pa/pa.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for insn-output.cc for HPPA.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Tim Moore (moore@cs.utah.edu), based on sparc.cc
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for insn-output.cc for HPPA.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Tim Moore (moore@cs.utah.edu), based on sparc.cc
  
  This file is part of GCC.
*************** pa_option_override (void)
*** 567,572 ****
--- 567,575 ----
        flag_reorder_blocks = 1;
      }
  
+   /* Disable -fstack-protector to suppress warning.  */
+   flag_stack_protect = 0;
+ 
    /* We can't guarantee that .dword is available for 32-bit targets.  */
    if (UNITS_PER_WORD == 4)
      targetm.asm_out.aligned_op.di = NULL;
*************** pa_init_libfuncs (void)
*** 5937,5944 ****
  			"_U_Qfcnvxf_udbl_to_quad");
      }
  
!   if (TARGET_SYNC_LIBCALL)
!     init_sync_libfuncs (8);
  }
  
  /* HP's millicode routines mean something special to the assembler.
--- 5940,5947 ----
  			"_U_Qfcnvxf_udbl_to_quad");
      }
  
!   if (TARGET_SYNC_LIBCALLS)
!     init_sync_libfuncs (MAX_SYNC_LIBFUNC_SIZE);
  }
  
  /* HP's millicode routines mean something special to the assembler.
*************** pa_function_arg (cumulative_args_t cum_v
*** 9781,9786 ****
--- 9784,9791 ----
      return NULL_RTX;
  
    arg_size = pa_function_arg_size (mode, type);
+   if (!arg_size)
+     return NULL_RTX;
  
    /* If this arg would be passed partially or totally on the stack, then
       this routine should return zero.  pa_arg_partial_bytes will
*************** pa_arg_partial_bytes (cumulative_args_t
*** 9982,9996 ****
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
    unsigned int max_arg_words = 8;
    unsigned int offset = 0;
  
    if (!TARGET_64BIT)
      return 0;
  
!   if (pa_function_arg_size (arg.mode, arg.type) > 1 && (cum->words & 1))
      offset = 1;
  
!   if (cum->words + offset + pa_function_arg_size (arg.mode, arg.type)
!       <= max_arg_words)
      /* Arg fits fully into registers.  */
      return 0;
    else if (cum->words + offset >= max_arg_words)
--- 9987,10002 ----
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
    unsigned int max_arg_words = 8;
    unsigned int offset = 0;
+   int arg_size;
  
    if (!TARGET_64BIT)
      return 0;
  
!   arg_size = pa_function_arg_size (arg.mode, arg.type);
!   if (arg_size > 1 && (cum->words & 1))
      offset = 1;
  
!   if (cum->words + offset + arg_size <= max_arg_words)
      /* Arg fits fully into registers.  */
      return 0;
    else if (cum->words + offset >= max_arg_words)
*************** pa_starting_frame_offset (void)
*** 11064,11080 ****
    return 8;
  }
  
! /* Figure out the size in words of the function argument.  The size
!    returned by this function should always be greater than zero because
!    we pass variable and zero sized objects by reference.  */
  
! HOST_WIDE_INT
  pa_function_arg_size (machine_mode mode, const_tree type)
  {
    HOST_WIDE_INT size;
  
    size = mode != BLKmode ? GET_MODE_SIZE (mode) : int_size_in_bytes (type); 
!   return CEIL (size, UNITS_PER_WORD);
  }
  
  #include "gt-pa.h"
--- 11070,11094 ----
    return 8;
  }
  
! /* Figure out the size in words of the function argument.  */
  
! int
  pa_function_arg_size (machine_mode mode, const_tree type)
  {
    HOST_WIDE_INT size;
  
    size = mode != BLKmode ? GET_MODE_SIZE (mode) : int_size_in_bytes (type); 
! 
!   /* The 64-bit runtime does not restrict the size of stack frames,
!      but the gcc calling conventions limit argument sizes to 1G.  Our
!      prologue/epilogue code limits frame sizes to just under 32 bits.
!      1G is also the maximum frame size that can be handled by the HPUX
!      unwind descriptor.  Since very large TYPE_SIZE_UNIT values can
!      occur for (parallel:BLK []), we need to ignore large arguments
!      passed by value.  */
!   if (size >= (1 << (HOST_BITS_PER_INT - 2)))
!     size = 0;
!   return (int) CEIL (size, UNITS_PER_WORD);
  }
  
  #include "gt-pa.h"
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa.h gcc-13.1.0/gcc/config/pa/pa.h
*** gcc-12.2.0/gcc/config/pa/pa.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for the HP Spectrum.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
     and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
     Software Science at the University of Utah.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for the HP Spectrum.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com) of Cygnus Support
     and Tim Moore (moore@defmacro.cs.utah.edu) of the Center for
     Software Science at the University of Utah.
*************** extern unsigned long total_code_bytes;
*** 72,81 ****
  #define HPUX_LONG_DOUBLE_LIBRARY 0
  #endif
  
! /* Linux kernel atomic operation support.  */
! #ifndef TARGET_SYNC_LIBCALL
! #define TARGET_SYNC_LIBCALL 0
! #endif
  
  /* The following three defines are potential target switches.  The current
     defines are optimal given the current capabilities of GAS and GNU ld.  */
--- 72,83 ----
  #define HPUX_LONG_DOUBLE_LIBRARY 0
  #endif
  
! /* Sync libcall support.  */
! #define TARGET_SYNC_LIBCALLS (flag_sync_libcalls)
! 
! /* The maximum size of the sync library functions supported.  DImode
!    is supported on 32-bit targets using floating point loads and stores.  */
! #define MAX_SYNC_LIBFUNC_SIZE 8
  
  /* The following three defines are potential target switches.  The current
     defines are optimal given the current capabilities of GAS and GNU ld.  */
*************** extern unsigned long total_code_bytes;
*** 130,137 ****
     and the old mnemonics are dialect zero.  */
  #define ASSEMBLER_DIALECT (TARGET_PA_20 ? 1 : 0)
  
- /* Override some settings from dbxelf.h.  */
- 
  /* We do not have to be compatible with dbx, so we enable gdb extensions
     by default.  */
  #define DEFAULT_GDB_EXTENSIONS 1
--- 132,137 ----
*************** extern unsigned long total_code_bytes;
*** 139,152 ****
  /* Select dwarf2 as the preferred debug format.  */
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
- /* This used to be zero (no max length), but big enums and such can
-    cause huge strings which killed gas.
- 
-    We also have to avoid lossage in dbxout.cc -- it does not compute the
-    string size accurately, so we are real conservative here.  */
- #undef DBX_CONTIN_LENGTH
- #define DBX_CONTIN_LENGTH 3000
- 
  /* GDB always assumes the current function's frame begins at the value
     of the stack pointer upon entry to the current function.  Accessing
     local variables and parameters passed on the stack is done using the
--- 139,144 ----
*************** do {								\
*** 183,188 ****
--- 175,182 ----
         builtin_define("_PA_RISC1_0");				\
       if (HPUX_LONG_DOUBLE_LIBRARY)				\
         builtin_define("__SIZEOF_FLOAT128__=16");		\
+      if (TARGET_SOFT_FLOAT)					\
+        builtin_define("__SOFTFP__");				\
  } while (0)
  
  /* An old set of OS defines for various BSD-like systems.  */
*************** do {									     \
*** 1310,1318 ****
  
  #define NEED_INDICATE_EXEC_STACK 0
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS pa_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO pa_d_register_target_info
- 
  /* Output default function prologue for hpux.  */
  #define TARGET_ASM_FUNCTION_PROLOGUE pa_output_function_prologue
--- 1304,1308 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa.md gcc-13.1.0/gcc/config/pa/pa.md
*** gcc-12.2.0/gcc/config/pa/pa.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for HP PA-RISC architecture for GCC compiler
! ;;   Copyright (C) 1992-2022 Free Software Foundation, Inc.
  ;;   Contributed by the Center for Software Science at the University
  ;;   of Utah.
  
--- 1,5 ----
  ;;- Machine description for HP PA-RISC architecture for GCC compiler
! ;;   Copyright (C) 1992-2023 Free Software Foundation, Inc.
  ;;   Contributed by the Center for Software Science at the University
  ;;   of Utah.
  
***************
*** 5071,5093 ****
  						    (match_dup 2))))
  		       (const_int 0))])]
    ""
!   "")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(plus:DI (match_operand:DI 1 "reg_or_0_operand" "%rM,rM")
! 		 (match_operand:DI 2 "arith11_operand" "r,I")))
     (trap_if (ne (plus:TI (sign_extend:TI (match_dup 1))
  			 (sign_extend:TI (match_dup 2)))
  		(sign_extend:TI (plus:DI (match_dup 1)
  					 (match_dup 2))))
  	    (const_int 0))]
    "TARGET_64BIT"
!   "@
!   add,tsv,* %2,%1,%0
!   addi,tsv,* %2,%1,%0"
!   [(set_attr "type" "binary,binary")
!    (set_attr "length" "4,4")])
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
--- 5071,5095 ----
  						    (match_dup 2))))
  		       (const_int 0))])]
    ""
!   "
! {
!   if (TARGET_64BIT)
!     operands[2] = force_reg (DImode, operands[2]);
! }")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(plus:DI (match_operand:DI 1 "reg_or_0_operand" "%rM")
! 		 (match_operand:DI 2 "register_operand" "r")))
     (trap_if (ne (plus:TI (sign_extend:TI (match_dup 1))
  			 (sign_extend:TI (match_dup 2)))
  		(sign_extend:TI (plus:DI (match_dup 1)
  					 (match_dup 2))))
  	    (const_int 0))]
    "TARGET_64BIT"
!   "add,tsv,* %2,%1,%0"
!   [(set_attr "type" "binary")
!    (set_attr "length" "4")])
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r")
***************
*** 5262,5284 ****
  						     (match_dup 2))))
  		       (const_int 0))])]
    ""
!   "")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(minus:DI (match_operand:DI 1 "arith11_operand" "r,I")
! 		  (match_operand:DI 2 "reg_or_0_operand" "rM,rM")))
     (trap_if (ne (minus:TI (sign_extend:TI (match_dup 1))
  			  (sign_extend:TI (match_dup 2)))
  		(sign_extend:TI (minus:DI (match_dup 1)
  					  (match_dup 2))))
  	    (const_int 0))]
    "TARGET_64BIT"
!   "@
!   {subo|sub,tsv} %1,%2,%0
!   {subio|subi,tsv} %1,%2,%0"
!   [(set_attr "type" "binary,binary")
!    (set_attr "length" "4,4")])
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,&r")
--- 5264,5288 ----
  						     (match_dup 2))))
  		       (const_int 0))])]
    ""
!   "
! {
!   if (TARGET_64BIT)
!     operands[1] = force_reg (DImode, operands[1]);
! }")
  
  (define_insn ""
!   [(set (match_operand:DI 0 "register_operand" "=r")
! 	(minus:DI (match_operand:DI 1 "register_operand" "r")
! 		  (match_operand:DI 2 "reg_or_0_operand" "rM")))
     (trap_if (ne (minus:TI (sign_extend:TI (match_dup 1))
  			  (sign_extend:TI (match_dup 2)))
  		(sign_extend:TI (minus:DI (match_dup 1)
  					  (match_dup 2))))
  	    (const_int 0))]
    "TARGET_64BIT"
!   "sub,tsv,* %1,%2,%0"
!   [(set_attr "type" "binary")
!    (set_attr "length" "4")])
  
  (define_insn ""
    [(set (match_operand:DI 0 "register_operand" "=r,&r")
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10356,10362 ****
  ;; doubleword loads and stores are not guaranteed to be atomic
  ;; when referencing the I/O address space.
  
! ;; These patterns are at the bottom so the non atomic versions are preferred.
  
  (define_expand "atomic_storeqi"
    [(match_operand:QI 0 "memory_operand")                ;; memory
--- 10360,10382 ----
  ;; doubleword loads and stores are not guaranteed to be atomic
  ;; when referencing the I/O address space.
  
! ;; Atomic and sync libcalls use different lock sets.  Great care is
! ;; needed if both are used in a single application.
! 
! ;; Atomic load and store libcalls are enabled by the -matomic-libcalls
! ;; option.  This option is not enabled by default as the generated
! ;; libcalls depend on libatomic which is not built until the end of
! ;; the gcc build.  For loads, we only need an atomic libcall for DImode.
! ;; Sync libcalls are not generated when atomic libcalls are enabled.
! 
! ;; Sync libcalls are enabled by default when supported.  They can be
! ;; disabled by the -fno-sync-libcalls option.  Sync libcalls always
! ;; use a single memory store in their implementation, even for DImode.
! ;; DImode stores are done using either std or fstd.  Thus, we only
! ;; need a sync load libcall for DImode when we don't have an atomic
! ;; processor load available for the mode (TARGET_SOFT_FLOAT).
! 
! ;; Implement atomic QImode store using exchange.
  
  (define_expand "atomic_storeqi"
    [(match_operand:QI 0 "memory_operand")                ;; memory
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10364,10382 ****
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   if (TARGET_SYNC_LIBCALL)
      {
!       rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, QImode);
!       rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
  
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], QImode);
        DONE;
      }
    FAIL;
  })
  
! ;; Implement atomic HImode stores using exchange.
  
  (define_expand "atomic_storehi"
    [(match_operand:HI 0 "memory_operand")                ;; memory
--- 10384,10413 ----
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   rtx addr, libfunc;
! 
!   if (TARGET_SYNC_LIBCALLS)
      {
!       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
!       libfunc = optab_libfunc (sync_lock_test_and_set_optab, QImode);
!       emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
! 			 operands[1], QImode);
!       DONE;
!     }
  
+   if (TARGET_ATOMIC_LIBCALLS)
+     {
+       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
+       libfunc = init_one_libfunc ("__atomic_exchange_1");
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], QImode);
        DONE;
      }
+ 
    FAIL;
  })
  
! ;; Implement atomic HImode store using exchange.
  
  (define_expand "atomic_storehi"
    [(match_operand:HI 0 "memory_operand")                ;; memory
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10384,10398 ****
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   if (TARGET_SYNC_LIBCALL)
      {
!       rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, HImode);
!       rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
  
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], HImode);
        DONE;
      }
    FAIL;
  })
  
--- 10415,10440 ----
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   rtx addr, libfunc;
! 
!   if (TARGET_SYNC_LIBCALLS)
      {
!       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
!       libfunc = optab_libfunc (sync_lock_test_and_set_optab, HImode);
!       emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
! 			 operands[1], HImode);
!       DONE;
!     }
  
+   if (TARGET_ATOMIC_LIBCALLS)
+     {
+       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
+       libfunc = init_one_libfunc ("__atomic_exchange_2");
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], HImode);
        DONE;
      }
+ 
    FAIL;
  })
  
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10404,10423 ****
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   if (TARGET_SYNC_LIBCALL)
      {
!       rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, SImode);
!       rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
  
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], SImode);
        DONE;
      }
    FAIL;
  })
  
  ;; Implement atomic DImode load.
  
  (define_expand "atomic_loaddi"
    [(match_operand:DI 0 "register_operand")              ;; val out
     (match_operand:DI 1 "memory_operand")                ;; memory
--- 10446,10484 ----
     (match_operand:SI 2 "const_int_operand")]            ;; model
    ""
  {
!   rtx addr, libfunc;
! 
!   if (TARGET_SYNC_LIBCALLS)
      {
!       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
!       libfunc = optab_libfunc (sync_lock_test_and_set_optab, SImode);
!       emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
! 			 operands[1], SImode);
!       DONE;
!     }
  
+   if (TARGET_ATOMIC_LIBCALLS)
+     {
+       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
+       libfunc = init_one_libfunc ("__atomic_exchange_4");
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], SImode);
        DONE;
      }
+ 
    FAIL;
  })
  
  ;; Implement atomic DImode load.
  
+ ;; We need an atomic or sync libcall whenever the processor load or
+ ;; store used for DImode is not atomic.  The 32-bit libatomic
+ ;; implementation uses a pair of stw instructions.  They are not
+ ;; atomic, so we need to call __atomic_load_8.  The linux libgcc
+ ;; sync implementation uses a std or fstd instruction.  They are
+ ;; atomic, so we only need to call __sync_load_8 when the load
+ ;; operation would not be atomic (e.g., 32-bit TARGET_SOFT_FLOAT).
+ 
  (define_expand "atomic_loaddi"
    [(match_operand:DI 0 "register_operand")              ;; val out
     (match_operand:DI 1 "memory_operand")                ;; memory
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10425,10436 ****
    ""
  {
    enum memmodel model;
  
!   if (TARGET_64BIT || TARGET_SOFT_FLOAT)
      FAIL;
  
    model = memmodel_from_int (INTVAL (operands[2]));
!   operands[1] = force_reg (SImode, XEXP (operands[1], 0));
    if (is_mm_seq_cst (model))
      expand_mem_thread_fence (model);
    emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
--- 10486,10520 ----
    ""
  {
    enum memmodel model;
+   rtx addr, libfunc;
  
!   if (TARGET_64BIT)
      FAIL;
  
+   if (TARGET_SYNC_LIBCALLS && MAX_SYNC_LIBFUNC_SIZE >= 8 && TARGET_SOFT_FLOAT)
+     {
+       addr = convert_memory_address (Pmode, XEXP (operands[1], 0));
+       libfunc = init_one_libfunc ("__sync_load_8");
+       emit_library_call_value (libfunc, operands[0], LCT_NORMAL, DImode,
+ 			       addr, Pmode);
+       DONE;
+     }
+ 
+   if (TARGET_ATOMIC_LIBCALLS && TARGET_SOFT_FLOAT)
+     {
+       addr = convert_memory_address (Pmode, XEXP (operands[1], 0));
+       libfunc = init_one_libfunc ("__atomic_load_8");
+       emit_library_call_value (libfunc, operands[0], LCT_NORMAL, DImode,
+ 			       addr, Pmode);
+       DONE;
+     }
+ 
+   if (TARGET_SOFT_FLOAT)
+     FAIL;
+ 
+   /* Fallback to processor load with barriers.  */
    model = memmodel_from_int (INTVAL (operands[2]));
!   operands[1] = force_reg (Pmode, XEXP (operands[1], 0));
    if (is_mm_seq_cst (model))
      expand_mem_thread_fence (model);
    emit_insn (gen_atomic_loaddi_1 (operands[0], operands[1]));
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10456,10467 ****
    ""
  {
    enum memmodel model;
  
!   if (TARGET_SYNC_LIBCALL)
      {
!       rtx libfunc = optab_libfunc (sync_lock_test_and_set_optab, DImode);
!       rtx addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
  
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], DImode);
        DONE;
--- 10540,10560 ----
    ""
  {
    enum memmodel model;
+   rtx addr, libfunc;
  
!   if (TARGET_SYNC_LIBCALLS && MAX_SYNC_LIBFUNC_SIZE >= 8)
      {
!       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
!       libfunc = optab_libfunc (sync_lock_test_and_set_optab, DImode);
!       emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
! 			 operands[1], DImode);
!       DONE;
!     }
  
+   if (TARGET_ATOMIC_LIBCALLS)
+     {
+       addr = convert_memory_address (Pmode, XEXP (operands[0], 0));
+       libfunc = init_one_libfunc ("__atomic_exchange_8");
        emit_library_call (libfunc, LCT_NORMAL, VOIDmode, addr, Pmode,
  			 operands[1], DImode);
        DONE;
*************** add,l %2,%3,%3\;bv,n %%r0(%3)"
*** 10470,10477 ****
    if (TARGET_64BIT || TARGET_SOFT_FLOAT)
      FAIL;
  
    model = memmodel_from_int (INTVAL (operands[2]));
!   operands[0] = force_reg (SImode, XEXP (operands[0], 0));
    if (operands[1] != CONST0_RTX (DImode))
      operands[1] = force_reg (DImode, operands[1]);
    expand_mem_thread_fence (model);
--- 10563,10571 ----
    if (TARGET_64BIT || TARGET_SOFT_FLOAT)
      FAIL;
  
+   /* Fallback to processor store with barriers.  */
    model = memmodel_from_int (INTVAL (operands[2]));
!   operands[0] = force_reg (Pmode, XEXP (operands[0], 0));
    if (operands[1] != CONST0_RTX (DImode))
      operands[1] = force_reg (DImode, operands[1]);
    expand_mem_thread_fence (model);
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa.opt gcc-13.1.0/gcc/config/pa/pa.opt
*** gcc-12.2.0/gcc/config/pa/pa.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** march=2.0
*** 37,42 ****
--- 37,46 ----
  Target RejectNegative
  Generate PA2.0 code (requires binutils 2.10 or later).
  
+ matomic-libcalls
+ Target Var(TARGET_ATOMIC_LIBCALLS) Init(1)
+ Generate libcalls for atomic loads and stores when sync libcalls are disabled.
+ 
  mbig-switch
  Target Ignore
  Does nothing.  Preserved for backward compatibility.
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa32-linux.h gcc-13.1.0/gcc/config/pa/pa32-linux.h
*** gcc-12.2.0/gcc/config/pa/pa32-linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa32-linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF-32 format
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF-32 format
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa32-netbsd.h gcc-13.1.0/gcc/config/pa/pa32-netbsd.h
*** gcc-12.2.0/gcc/config/pa/pa32-netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa32-netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF-32 format
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF-32 format
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa32-openbsd.h gcc-13.1.0/gcc/config/pa/pa32-openbsd.h
*** gcc-12.2.0/gcc/config/pa/pa32-openbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa32-openbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF-32 format
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF-32 format
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa32-regs.h gcc-13.1.0/gcc/config/pa/pa32-regs.h
*** gcc-12.2.0/gcc/config/pa/pa32-regs.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa32-regs.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 227,233 ****
        || (GET_MODE_SIZE (MODE) == 8 * UNITS_PER_WORD			\
  	  && ((REGNO) & 7) == 3 && (REGNO) <= 19)))
  
! /* How to renumber registers for dbx and gdb.
  
     Registers 0  - 31 remain unchanged.
  
--- 227,233 ----
        || (GET_MODE_SIZE (MODE) == 8 * UNITS_PER_WORD			\
  	  && ((REGNO) & 7) == 3 && (REGNO) <= 19)))
  
! /* How to renumber registers for gdb.
  
     Registers 0  - 31 remain unchanged.
  
*************** see the files COPYING3 and COPYING.RUNTI
*** 235,245 ****
  
     Register 88 is mapped to 32.  */
  
! #define DBX_REGISTER_NUMBER(REGNO) \
    ((REGNO) <= 31 ? (REGNO) :						\
     ((REGNO) <= 87 ? (REGNO) + 40 : 32))
  
! /* We must not use the DBX register numbers for the DWARF 2 CFA column
     numbers because that maps to numbers beyond FIRST_PSEUDO_REGISTER.
     Instead use the identity mapping.  */
  #define DWARF_FRAME_REGNUM(REG) REG
--- 235,245 ----
  
     Register 88 is mapped to 32.  */
  
! #define DEBUGGER_REGNO(REGNO) \
    ((REGNO) <= 31 ? (REGNO) :						\
     ((REGNO) <= 87 ? (REGNO) + 40 : 32))
  
! /* We must not use the debugger register numbers for the DWARF 2 CFA column
     numbers because that maps to numbers beyond FIRST_PSEUDO_REGISTER.
     Instead use the identity mapping.  */
  #define DWARF_FRAME_REGNUM(REG) REG
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa64-hpux.h gcc-13.1.0/gcc/config/pa/pa64-hpux.h
*** gcc-12.2.0/gcc/config/pa/pa64-hpux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa64-hpux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler, for HPs running
     HPUX using the 64bit runtime model.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler, for HPs running
     HPUX using the 64bit runtime model.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa64-hpux.opt gcc-13.1.0/gcc/config/pa/pa64-hpux.opt
*** gcc-12.2.0/gcc/config/pa/pa64-hpux.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa64-hpux.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the HP PA-RISC port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa64-linux.h gcc-13.1.0/gcc/config/pa/pa64-linux.h
*** gcc-12.2.0/gcc/config/pa/pa64-linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa64-linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PA_RISC with ELF format on 64-bit Linux
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for PA_RISC with ELF format on 64-bit Linux
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pa/pa64-regs.h gcc-13.1.0/gcc/config/pa/pa64-regs.h
*** gcc-12.2.0/gcc/config/pa/pa64-regs.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/pa64-regs.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration for GCC-compiler for PA-RISC.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration for GCC-compiler for PA-RISC.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 165,181 ****
        || (GET_MODE_SIZE (MODE) == 4 * UNITS_PER_WORD			\
  	  && ((REGNO) & 3) == 3 && (REGNO) <= 23)))
  
! /* How to renumber registers for dbx and gdb.
  
     Registers 0  - 31 remain unchanged.
  
     Registers 32 - 59 are mapped to 72, 74, 76 ...
  
     Register 60 is mapped to 32.  */
! #define DBX_REGISTER_NUMBER(REGNO) \
    ((REGNO) <= 31 ? (REGNO) : ((REGNO) < 60 ? (REGNO - 32) * 2 + 72 : 32))
  
! /* We must not use the DBX register numbers for the DWARF 2 CFA column
     numbers because that maps to numbers beyond FIRST_PSEUDO_REGISTER.
     Instead use the identity mapping.  */
  #define DWARF_FRAME_REGNUM(REG) REG
--- 165,181 ----
        || (GET_MODE_SIZE (MODE) == 4 * UNITS_PER_WORD			\
  	  && ((REGNO) & 3) == 3 && (REGNO) <= 23)))
  
! /* How to renumber registers for gdb.
  
     Registers 0  - 31 remain unchanged.
  
     Registers 32 - 59 are mapped to 72, 74, 76 ...
  
     Register 60 is mapped to 32.  */
! #define DEBUGGER_REGNO(REGNO) \
    ((REGNO) <= 31 ? (REGNO) : ((REGNO) < 60 ? (REGNO - 32) * 2 + 72 : 32))
  
! /* We must not use the debugger register numbers for the DWARF 2 CFA column
     numbers because that maps to numbers beyond FIRST_PSEUDO_REGISTER.
     Instead use the identity mapping.  */
  #define DWARF_FRAME_REGNUM(REG) REG
diff -Nrcpad gcc-12.2.0/gcc/config/pa/predicates.md gcc-13.1.0/gcc/config/pa/predicates.md
*** gcc-12.2.0/gcc/config/pa/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for HP PA-RISC.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for HP PA-RISC.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/pa/som.h gcc-13.1.0/gcc/config/pa/som.h
*** gcc-12.2.0/gcc/config/pa/som.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/som.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for SOM assembler support.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for SOM assembler support.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 21,41 ****
  #undef TARGET_SOM
  #define TARGET_SOM 1
  
- /* With SOM we can only do STABS.  */
- #undef PREFERRED_DEBUGGING_TYPE
- #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
- 
- /* We do not use BINCL stabs in SOM.
-    ??? If it does not hurt, we probably should to avoid useless divergence
-    from other embedded stabs implementations.  */
- #undef DBX_USE_BINCL
- 
- #define DBX_LINES_FUNCTION_RELATIVE 1
- 
- /* gdb needs a null N_SO at the end of each file for scattered loading.  */
- 
- #define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
- 
  /* HPUX has a program 'chatr' to list the dependencies of dynamically
     linked executables and shared libraries.  */
  #define LDD_SUFFIX "chatr"
--- 21,26 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pa/t-dce-thr gcc-13.1.0/gcc/config/pa/t-dce-thr
*** gcc-12.2.0/gcc/config/pa/t-dce-thr	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pa/t-dce-thr	Thu Jan  1 00:00:00 1970
***************
*** 1,2 ****
- MULTILIB_OPTIONS = threads
- MULTILIB_DIRNAMES = threads
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/constraints.md gcc-13.1.0/gcc/config/pdp11/constraints.md
*** gcc-12.2.0/gcc/config/pdp11/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Constraint definitions for the pdp11 for GNU C compiler
! ;; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Constraint definitions for the pdp11 for GNU C compiler
! ;; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/pdp11-modes.def gcc-13.1.0/gcc/config/pdp11/pdp11-modes.def
*** gcc-12.2.0/gcc/config/pdp11/pdp11-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/pdp11-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for the pdp-11
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for the pdp-11
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/pdp11-protos.h gcc-13.1.0/gcc/config/pdp11/pdp11-protos.h
*** gcc-12.2.0/gcc/config/pdp11/pdp11-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/pdp11-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for the pdp-11
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for the pdp-11
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/pdp11.cc gcc-13.1.0/gcc/config/pdp11/pdp11.cc
*** gcc-12.2.0/gcc/config/pdp11/pdp11.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/pdp11.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for gcc2 for pdp11.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines for gcc2 for pdp11.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 44,50 ****
  #include "calls.h"
  #include "expr.h"
  #include "builtins.h"
- #include "dbxout.h"
  #include "explow.h"
  #include "expmed.h"
  
--- 44,49 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/pdp11.h gcc-13.1.0/gcc/config/pdp11/pdp11.h
*** gcc-12.2.0/gcc/config/pdp11/pdp11.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/pdp11.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for the pdp-11
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for the pdp-11
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 49,61 ****
      }						\
    while (0)
  
- 
- /* Generate DBX debugging information.  */
- 
- #define DBX_DEBUGGING_INFO
- 
  #undef PREFERRED_DEBUGGING_TYPE
! #define PREFERRED_DEBUGGING_TYPE DBX_DEBUG
  
  #define TARGET_40_PLUS		(TARGET_40 || TARGET_45)
  #define TARGET_10		(! TARGET_40_PLUS)
--- 49,56 ----
      }						\
    while (0)
  
  #undef PREFERRED_DEBUGGING_TYPE
! #define PREFERRED_DEBUGGING_TYPE NO_DEBUG
  
  #define TARGET_40_PLUS		(TARGET_40 || TARGET_45)
  #define TARGET_10		(! TARGET_40_PLUS)
*************** extern int current_first_parm_offset;
*** 489,497 ****
  /* Nonzero if access to memory by byte is no faster than by word.  */
  #define SLOW_BYTE_ACCESS 1
  
- /* Do not break .stabs pseudos into continuations.  */
- #define DBX_CONTIN_LENGTH 0
- 
  /* Give a comparison code (EQ, NE etc) and the first operand of a COMPARE,
     return the mode to be used for the comparison.  */
  
--- 484,489 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/pdp11.md gcc-13.1.0/gcc/config/pdp11/pdp11.md
*** gcc-12.2.0/gcc/config/pdp11/pdp11.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/pdp11.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for the pdp11 for GNU C compiler
! ;; Copyright (C) 1994-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Machine description for the pdp11 for GNU C compiler
! ;; Copyright (C) 1994-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/pdp11.opt gcc-13.1.0/gcc/config/pdp11/pdp11.opt
*** gcc-12.2.0/gcc/config/pdp11/pdp11.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/pdp11.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the PDP11 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the PDP11 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/predicates.md gcc-13.1.0/gcc/config/pdp11/predicates.md
*** gcc-12.2.0/gcc/config/pdp11/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Predicate definitions for the pdp11 for GNU C compiler
! ;; Copyright (C) 1994-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Predicate definitions for the pdp11 for GNU C compiler
! ;; Copyright (C) 1994-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael K. Gschwind (mike@vlsivie.tuwien.ac.at).
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pdp11/t-pdp11 gcc-13.1.0/gcc/config/pdp11/t-pdp11
*** gcc-12.2.0/gcc/config/pdp11/t-pdp11	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pdp11/t-pdp11	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1995-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1995-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/phoenix.h gcc-13.1.0/gcc/config/phoenix.h
*** gcc-12.2.0/gcc/config/phoenix.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/phoenix.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Base configuration file for all Phoenix-RTOS targets.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Base configuration file for all Phoenix-RTOS targets.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/print-sysroot-suffix.sh gcc-13.1.0/gcc/config/print-sysroot-suffix.sh
*** gcc-12.2.0/gcc/config/print-sysroot-suffix.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/print-sysroot-suffix.sh	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  # Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS, MULTILIB_MATCHES,
  # and MULTILIB_REUSE.
  
! # Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
--- 3,9 ----
  # Arguments are MULTILIB_OSDIRNAMES, MULTILIB_OPTIONS, MULTILIB_MATCHES,
  # and MULTILIB_REUSE.
  
! # Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  # This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/pru/alu-zext.md gcc-13.1.0/gcc/config/pru/alu-zext.md
*** gcc-12.2.0/gcc/config/pru/alu-zext.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/alu-zext.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; ALU operations with zero extensions
  ;;
! ;; Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;;
  ;; This file is part of GCC.
--- 1,6 ----
  ;; ALU operations with zero extensions
  ;;
! ;; Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pru/constraints.md gcc-13.1.0/gcc/config/pru/constraints.md
*** gcc-12.2.0/gcc/config/pru/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for TI PRU.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for TI PRU.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;;
  ;; This file is part of GCC.
***************
*** 39,44 ****
--- 39,49 ----
  ;;  N: -32768 to 32767 (16-bit signed integer).
  ;;  O: -128 to 127 (8-bit signed integer).
  ;;  P: 1
+ ;;  Um: -1 constant.
+ ;;  Uf: A constant with a single consecutive range of 0xff bytes.  Rest
+ ;;      of bytes are zeros.
+ ;;  Uz: A constant with a single consecutive range of 0x00 bytes.  Rest
+ ;;      of bytes are 0xff.
  
  ;; Register constraints.
  
***************
*** 111,113 ****
--- 116,136 ----
    "An integer constant zero."
    (and (match_code "const_int")
         (match_test "ival == 0")))
+ 
+ (define_constraint "Um"
+   "@internal
+   A constant -1."
+   (and (match_code "const_int")
+        (match_test "ival == -1")))
+ 
+ (define_constraint "Uf"
+   "@internal
+   An integer constant with a consecutive range of 0xff bytes."
+   (and (match_code "const_int")
+        (match_test "const_fillbytes_operand (op, DImode)")))
+ 
+ (define_constraint "Uz"
+   "@internal
+   An integer constant with a consecutive range of 0x00 bytes."
+   (and (match_code "const_int")
+        (match_test "const_zerobytes_operand (op, DImode)")))
diff -Nrcpad gcc-12.2.0/gcc/config/pru/predicates.md gcc-13.1.0/gcc/config/pru/predicates.md
*** gcc-12.2.0/gcc/config/pru/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for TI PRU.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for TI PRU.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;;
  ;; This file is part of GCC.
***************
*** 304,306 ****
--- 304,328 ----
      }
    return true;
  })
+ 
+ ;; Return true if OP is a constant integer with one single consecutive
+ ;; range of bytes with value 0xff, and the rest of the bytes are 0x00.
+ (define_predicate "const_fillbytes_operand"
+   (match_code "const_int")
+ {
+   gcc_assert (mode != VOIDmode);
+ 
+   pru_byterange r = pru_calc_byterange (INTVAL (op), mode);
+   return r.start >=0 && r.nbytes > 0;
+ })
+ 
+ ;; Return true if OP is a constant integer with one single consecutive
+ ;; range of bytes with value 0x00, and the rest of the bytes are 0xff.
+ (define_predicate "const_zerobytes_operand"
+   (match_code "const_int")
+ {
+   gcc_assert (mode != VOIDmode);
+ 
+   pru_byterange r = pru_calc_byterange (~INTVAL (op), mode);
+   return r.start >=0 && r.nbytes > 0;
+ })
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru-opts.h gcc-13.1.0/gcc/config/pru/pru-opts.h
*** gcc-12.2.0/gcc/config/pru/pru-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
--- 1,4 ----
! /* Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru-passes.cc gcc-13.1.0/gcc/config/pru/pru-passes.cc
*** gcc-12.2.0/gcc/config/pru/pru-passes.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru-passes.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* PRU target specific passes
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
--- 1,5 ----
  /* PRU target specific passes
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru-pragma.cc gcc-13.1.0/gcc/config/pru/pru-pragma.cc
*** gcc-12.2.0/gcc/config/pru/pru-pragma.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru-pragma.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* PRU target specific pragmas
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
--- 1,5 ----
  /* PRU target specific pragmas
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru-protos.h gcc-13.1.0/gcc/config/pru/pru-protos.h
*** gcc-12.2.0/gcc/config/pru/pru-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutine declarations for TI PRU target support.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutine declarations for TI PRU target support.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
*************** void pru_register_pragmas (void);
*** 40,50 ****
  extern rtx pru_get_return_address (int);
  extern int pru_hard_regno_rename_ok (unsigned int, unsigned int);
  
! extern const char *pru_output_sign_extend (rtx *);
  extern const char *pru_output_signed_cbranch (rtx *, bool);
  extern const char *pru_output_signed_cbranch_ubyteop2 (rtx *, bool);
  extern const char *pru_output_signed_cbranch_zeroop2 (rtx *, bool);
  
  extern rtx pru_expand_fp_compare (rtx comparison, machine_mode mode);
  
  extern void pru_emit_doloop (rtx *, int);
--- 40,58 ----
  extern rtx pru_get_return_address (int);
  extern int pru_hard_regno_rename_ok (unsigned int, unsigned int);
  
! struct pru_byterange {
!     int start;		/* Starting byte number.  */
!     int nbytes;		/* Number of consecutive bytes.  */
! };
! 
! extern pru_byterange pru_calc_byterange (HOST_WIDE_INT cval,
! 					      machine_mode mode);
! 
  extern const char *pru_output_signed_cbranch (rtx *, bool);
  extern const char *pru_output_signed_cbranch_ubyteop2 (rtx *, bool);
  extern const char *pru_output_signed_cbranch_zeroop2 (rtx *, bool);
  
+ extern enum rtx_code pru_noteq_condition (enum rtx_code code);
  extern rtx pru_expand_fp_compare (rtx comparison, machine_mode mode);
  
  extern void pru_emit_doloop (rtx *, int);
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru.cc gcc-13.1.0/gcc/config/pru/pru.cc
*** gcc-12.2.0/gcc/config/pru/pru.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target machine subroutines for TI PRU.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
--- 1,5 ----
  /* Target machine subroutines for TI PRU.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
*************** pru_rtx_costs (rtx x, machine_mode mode,
*** 766,772 ****
        }
      case ZERO_EXTEND:
        {
! 	*total = COSTS_N_INSNS (0);
  	return false;
        }
  
--- 766,776 ----
        }
      case ZERO_EXTEND:
        {
! 	/* 64-bit zero extensions actually have a cost because they
! 	   require setting a register to zero.
! 	   32-bit and smaller are free.  */
! 	int factor = (GET_MODE_SIZE (mode) <= GET_MODE_SIZE (SImode)) ? 0 : 1;
! 	*total = factor * COSTS_N_INSNS (1);
  	return false;
        }
  
*************** pru_init_libfuncs (void)
*** 891,896 ****
--- 895,921 ----
    set_optab_libfunc (udivmod_optab, DImode, "__pruabi_divremull");
  }
  
+ /* Given a comparison CODE, return a similar comparison but without
+    the "equals" condition.  In other words, it strips GE/GEU/LE/LEU
+    and instead returns GT/GTU/LT/LTU.  */
+ 
+ enum rtx_code
+ pru_noteq_condition (enum rtx_code code)
+ {
+   switch (code)
+     {
+     case GT: return GT;
+     case GTU: return GTU;
+     case GE: return GT;
+     case GEU: return GTU;
+     case LT: return LT;
+     case LTU: return LTU;
+     case LE: return LT;
+     case LEU: return LTU;
+     default:
+       gcc_unreachable ();
+     }
+ }
  
  /* Emit comparison instruction if necessary, returning the expression
     that holds the compare result in the proper mode.  Return the comparison
*************** sign_bit_position (const rtx op)
*** 970,1008 ****
    return sz * 8 - 1;
  }
  
! /* Output asm code for sign_extend operation.  */
! const char *
! pru_output_sign_extend (rtx *operands)
! {
!   static char buf[512];
!   int bufi;
!   const int dst_sz = GET_MODE_SIZE (GET_MODE (operands[0]));
!   const int src_sz = GET_MODE_SIZE (GET_MODE (operands[1]));
!   char ext_start;
  
!   switch (src_sz)
!     {
!     case 1: ext_start = 'y'; break;
!     case 2: ext_start = 'z'; break;
!     default: gcc_unreachable ();
!     }
  
!   gcc_assert (dst_sz > src_sz);
  
!   /* Note that src and dst can be different parts of the same
!      register, e.g. "r7, r7.w1".  */
!   bufi = snprintf (buf, sizeof (buf),
! 	  "mov\t%%0, %%1\n\t"		      /* Copy AND make positive.  */
! 	  "qbbc\t.+8, %%0, %d\n\t"	      /* Check sign bit.  */
! 	  "fill\t%%%c0, %d",		      /* Make negative.  */
! 	  sign_bit_position (operands[1]),
! 	  ext_start,
! 	  dst_sz - src_sz);
  
!   gcc_assert (bufi > 0);
!   gcc_assert ((unsigned int) bufi < sizeof (buf));
  
!   return buf;
  }
  
  /* Branches and compares.  */
--- 995,1049 ----
    return sz * 8 - 1;
  }
  
! /* Parse the given CVAL integer value, and extract the "filling" byte
!    range of consecutive 0xff byte values.  Rest of bytes must be 0x00.
!    There must be only one range in the given value.  This range would
!    typically be used to calculate the parameters of
!    PRU instructions ZERO and FILL.
  
!    The parameter MODE determines the maximum byte range to consider
!    in the given input constant.
  
!    Example input:
!      cval = 0xffffffffffffff00 = -256
!      mode = SImode
!    Return value:
!      start = 1
!      nbytes = 3
  
!    On error, return a range with -1 for START and NBYTES.  */
! pru_byterange
! pru_calc_byterange (HOST_WIDE_INT cval, machine_mode mode)
! {
!   const pru_byterange invalid_range = { -1, -1 };
!   pru_byterange r = invalid_range;
!   enum { ST_FFS, ST_INRANGE, ST_TRAILING_ZEROS } st = ST_FFS;
!   int i;
  
!   for (i = 0; i < GET_MODE_SIZE (mode); i++)
!     {
!       const int b = cval & ((1U << BITS_PER_UNIT) - 1);
!       cval >>= BITS_PER_UNIT;
  
!       if (b == 0x00 && (st == ST_FFS || st == ST_TRAILING_ZEROS))
! 	/* No action.  */;
!       else if (b == 0x00 && st == ST_INRANGE)
! 	st = ST_TRAILING_ZEROS;
!       else if (b == 0xff && st == ST_FFS)
! 	{
! 	  st = ST_INRANGE;
! 	  r.start = i;
! 	  r.nbytes = 1;
! 	}
!       else if (b == 0xff && st == ST_INRANGE)
! 	r.nbytes++;
!       else
! 	return invalid_range;
!     }
! 
!   if (st != ST_TRAILING_ZEROS && st != ST_INRANGE)
!     return invalid_range;
!   return r;
  }
  
  /* Branches and compares.  */
*************** pru_asm_regname (rtx op)
*** 1619,1626 ****
       V: print exact_log2 () of negated const_int operands.
       w: Lower 32-bits of a const_int operand.
       W: Upper 32-bits of a const_int operand.
-      y: print the next 8-bit register (regardless of op size).
-      z: print the second next 8-bit register (regardless of op size).
  */
  static void
  pru_print_operand (FILE *file, rtx op, int letter)
--- 1660,1665 ----
*************** pru_print_operand (FILE *file, rtx op, i
*** 1693,1718 ****
  	  fprintf (file, "r%d", REGNO (op) / 4 + (letter == 'N' ? 1 : 0));
  	  return;
  	}
-       else if (letter == 'y')
- 	{
- 	  if (REGNO (op) > LAST_NONIO_GP_REGNUM - 1)
- 	    {
- 	      output_operand_lossage ("invalid operand for '%%%c'", letter);
- 	      return;
- 	    }
- 	  fprintf (file, "%s", reg_names[REGNO (op) + 1]);
- 	  return;
- 	}
-       else if (letter == 'z')
- 	{
- 	  if (REGNO (op) > LAST_NONIO_GP_REGNUM - 2)
- 	    {
- 	      output_operand_lossage ("invalid operand for '%%%c'", letter);
- 	      return;
- 	    }
- 	  fprintf (file, "%s", reg_names[REGNO (op) + 2]);
- 	  return;
- 	}
        break;
  
      case CONST_INT:
--- 1732,1737 ----
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru.h gcc-13.1.0/gcc/config/pru/pru.h
*** gcc-12.2.0/gcc/config/pru/pru.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for TI PRU.
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for TI PRU.
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
     Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  
     This file is part of GCC.
*************** do {									\
*** 566,573 ****
  
  #define CASE_VECTOR_MODE Pmode
  
! /* See definition of clz pattern for rationale of value -1.  */
! #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) ((VALUE) = -1, 2)
  
  /* Jumps are cheap on PRU.  */
  #define LOGICAL_OP_NON_SHORT_CIRCUIT		0
--- 566,574 ----
  
  #define CASE_VECTOR_MODE Pmode
  
! /* See definition of clz pattern for rationale of the value.  */
! #define CLZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE)	\
! 	((VALUE) = GET_MODE_BITSIZE (MODE) - 1 - 32, 2)
  
  /* Jumps are cheap on PRU.  */
  #define LOGICAL_OP_NON_SHORT_CIRCUIT		0
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru.md gcc-13.1.0/gcc/config/pru/pru.md
*** gcc-12.2.0/gcc/config/pru/pru.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine Description for TI PRU.
! ;; Copyright (C) 2014-2022 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;; Based on the NIOS2 GCC port.
  ;;
--- 1,5 ----
  ;; Machine Description for TI PRU.
! ;; Copyright (C) 2014-2023 Free Software Foundation, Inc.
  ;; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;; Based on the NIOS2 GCC port.
  ;;
***************
*** 112,123 ****
--- 112,125 ----
  (define_mode_iterator MOV64 [DI DF DD DQ UDQ])
  (define_mode_iterator QISI [QI HI SI])
  (define_mode_iterator HISI [HI SI])
+ (define_mode_iterator HIDI [HI SI DI])
  (define_mode_iterator SFDF [SF DF])
  
  ;; EQS0/1 for extension source 0/1 and EQD for extension destination patterns.
  (define_mode_iterator EQS0 [QI HI SI])
  (define_mode_iterator EQS1 [QI HI SI])
  (define_mode_iterator EQD [QI HI SI])
+ (define_mode_iterator EQDHIDI [HI SI DI])
  
  ;; GCC sign-extends its integer constants.  Hence 0x80 will be represented
  ;; as -128 for QI mode and 128 for HI and SI modes.  To cope with this,
***************
*** 204,211 ****
  ;;
  ;; Note: Assume that Program Mem (T constraint) can fit in 16 bits!
  (define_insn "prumov<mode>"
!   [(set (match_operand:MOV32 0 "nonimmediate_operand" "=m,r,r,r,r,r")
! 	(match_operand:MOV32 1 "general_operand"      "r,m,r,T,J,iF"))]
    ""
    "@
      sb%B0o\\t%b1, %0, %S0
--- 206,213 ----
  ;;
  ;; Note: Assume that Program Mem (T constraint) can fit in 16 bits!
  (define_insn "prumov<mode>"
!   [(set (match_operand:MOV32 0 "nonimmediate_operand" "=m,r,r,r,r,r,r")
! 	(match_operand:MOV32 1 "general_operand"      "r,m,r,T,J,Um,iF"))]
    ""
    "@
      sb%B0o\\t%b1, %0, %S0
***************
*** 213,221 ****
      mov\\t%0, %1
      ldi\\t%0, %%pmem(%1)
      ldi\\t%0, %1
      ldi32\\t%0, %1"
!   [(set_attr "type" "st,ld,alu,alu,alu,alu")
!    (set_attr "length" "4,4,4,4,4,8")])
  
  
  ;; Separate pattern for 8 and 16 bit moves, since LDI32 pseudo instruction
--- 215,224 ----
      mov\\t%0, %1
      ldi\\t%0, %%pmem(%1)
      ldi\\t%0, %1
+     fill\\t%0, 4
      ldi32\\t%0, %1"
!   [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")
!    (set_attr "length" "4,4,4,4,4,4,8")])
  
  
  ;; Separate pattern for 8 and 16 bit moves, since LDI32 pseudo instruction
***************
*** 245,252 ****
  ; Forcing DI reg alignment (akin to microblaze's HARD_REGNO_MODE_OK)
  ; does not seem efficient, and will violate TI ABI.
  (define_insn "mov<mode>"
!   [(set (match_operand:MOV64 0 "nonimmediate_operand" "=m,r,r,r,r,r")
! 	(match_operand:MOV64 1 "general_operand"      "r,m,r,T,J,nF"))]
    ""
  {
    switch (which_alternative)
--- 248,255 ----
  ; Forcing DI reg alignment (akin to microblaze's HARD_REGNO_MODE_OK)
  ; does not seem efficient, and will violate TI ABI.
  (define_insn "mov<mode>"
!   [(set (match_operand:MOV64 0 "nonimmediate_operand" "=m,r,r,r,r,r,r")
! 	(match_operand:MOV64 1 "general_operand"      "r,m,Um,r,T,J,nF"))]
    ""
  {
    switch (which_alternative)
***************
*** 256,261 ****
--- 259,266 ----
      case 1:
        return "lb%B1o\\t%b0, %1, %S1";
      case 2:
+       return "fill\\t%F0, 8";
+     case 3:
        /* careful with overlapping source and destination regs.  */
        gcc_assert (GP_REG_P (REGNO (operands[0])));
        gcc_assert (GP_REG_P (REGNO (operands[1])));
***************
*** 263,280 ****
  	return "mov\\t%N0, %N1\;mov\\t%F0, %F1";
        else
  	return "mov\\t%F0, %F1\;mov\\t%N0, %N1";
-     case 3:
-       return "ldi\\t%F0, %%pmem(%1)\;ldi\\t%N0, 0";
      case 4:
!       return "ldi\\t%F0, %1\;ldi\\t%N0, 0";
      case 5:
        return "ldi32\\t%F0, %w1\;ldi32\\t%N0, %W1";
      default:
        gcc_unreachable ();
    }
  }
!   [(set_attr "type" "st,ld,alu,alu,alu,alu")
!    (set_attr "length" "4,4,8,8,8,16")])
  
  ;
  ; load_multiple pattern(s).
--- 268,285 ----
  	return "mov\\t%N0, %N1\;mov\\t%F0, %F1";
        else
  	return "mov\\t%F0, %F1\;mov\\t%N0, %N1";
      case 4:
!       return "ldi\\t%F0, %%pmem(%1)\;ldi\\t%N0, 0";
      case 5:
+       return "ldi\\t%F0, %1\;ldi\\t%N0, 0";
+     case 6:
        return "ldi32\\t%F0, %w1\;ldi32\\t%N0, %W1";
      default:
        gcc_unreachable ();
    }
  }
!   [(set_attr "type" "st,ld,alu,alu,alu,alu,alu")
!    (set_attr "length" "4,4,4,8,8,8,16")])
  
  ;
  ; load_multiple pattern(s).
***************
*** 415,432 ****
    "mov\\t%0, %1"
    [(set_attr "type"     "alu")])
  
! ;; Sign extension patterns.  We have to emulate them due to lack of
  ;; signed operations in PRU's ALU.
  
! (define_insn "extend<EQS0:mode><EQD:mode>2"
!   [(set (match_operand:EQD 0 "register_operand"			  "=r")
! 	(sign_extend:EQD (match_operand:EQS0 1 "register_operand"  "r")))]
    ""
  {
!   return pru_output_sign_extend (operands);
! }
!   [(set_attr "type" "complex")
!    (set_attr "length" "12")])
  
  ;; Bit extraction
  ;; We define it solely to allow combine to choose SImode
--- 420,487 ----
    "mov\\t%0, %1"
    [(set_attr "type"     "alu")])
  
! (define_insn "zero_extendqidi2"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(zero_extend:DI (match_operand:QI 1 "register_operand" "0,r")))]
!   ""
!   "@
!     zero\\t%F0.b1, 7
!     mov\\t%F0.b0, %1\;zero\\t%F0.b1, 7"
!   [(set_attr "type" "alu,alu")
!    (set_attr "length" "4,8")])
! 
! (define_insn "zero_extendhidi2"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(zero_extend:DI (match_operand:HI 1 "register_operand" "0,r")))]
!   ""
!   "@
!     zero\\t%F0.b2, 6
!     mov\\t%F0.w0, %1\;zero\\t%F0.b2, 6"
!   [(set_attr "type" "alu,alu")
!    (set_attr "length" "4,8")])
! 
! (define_insn "zero_extendsidi2"
!   [(set (match_operand:DI 0 "register_operand" "=r,r")
! 	(zero_extend:DI (match_operand:SI 1 "register_operand" "0,r")))]
!   ""
!   "@
!     zero\\t%N0, 4
!     mov\\t%F0, %1\;zero\\t%N0, 4"
!   [(set_attr "type" "alu,alu")
!    (set_attr "length" "4,8")])
! 
! ;; Sign extension pattern.  We have to emulate it due to lack of
  ;; signed operations in PRU's ALU.
  
! (define_expand "extend<EQS0:mode><EQDHIDI:mode>2"
!   [(set (match_operand:EQDHIDI 0 "register_operand" "=r")
! 	(sign_extend:EQDHIDI (match_operand:EQS0 1 "register_operand" "r")))]
    ""
  {
!   rtx_code_label *skip_hiset_label;
! 
!   /* Clear the higher bits to temporarily make the value positive.  */
!   emit_insn (gen_rtx_SET (operands[0],
! 			  gen_rtx_ZERO_EXTEND (<EQDHIDI:MODE>mode,
! 					       operands[1])));
! 
!   /* Now check if the result must be made negative.  */
!   skip_hiset_label = gen_label_rtx ();
!   const int op1_size = GET_MODE_SIZE (<EQS0:MODE>mode);
!   const int op1_sign_bit = op1_size * BITS_PER_UNIT - 1;
!   emit_jump_insn (gen_cbranch_qbbx_const (EQ,
! 					  <EQDHIDI:MODE>mode,
! 					  operands[0],
! 					  GEN_INT (op1_sign_bit),
! 					  skip_hiset_label));
!   emit_insn (gen_ior<EQDHIDI:mode>3 (
! 			 operands[0],
! 			 operands[0],
! 			 GEN_INT (~GET_MODE_MASK (<EQS0:MODE>mode))));
!   emit_label (skip_hiset_label);
! 
!   DONE;
! })
  
  ;; Bit extraction
  ;; We define it solely to allow combine to choose SImode
***************
*** 518,523 ****
--- 573,623 ----
    ""
    "")
  
+ ;; Specialised IOR pattern, which can emit an efficient FILL instruction.
+ (define_insn "@pru_ior_fillbytes<mode>"
+   [(set (match_operand:HIDI 0 "register_operand" "=r")
+ 	(ior:HIDI
+ 	   (match_operand:HIDI 1 "register_operand" "0")
+ 	   (match_operand:HIDI 2 "const_fillbytes_operand" "Uf")))]
+   ""
+ {
+   static char line[64];
+   pru_byterange r;
+ 
+   r = pru_calc_byterange (INTVAL (operands[2]), <MODE>mode);
+   gcc_assert (r.start >=0 && r.nbytes > 0);
+   gcc_assert ((r.start + r.nbytes) <= GET_MODE_SIZE (<MODE>mode));
+ 
+   const int regno = REGNO (operands[0]) + r.start;
+ 
+   sprintf (line, "fill\\tr%d.b%d, %d", regno / 4, regno % 4, r.nbytes);
+   return line;
+ }
+   [(set_attr "type" "alu")
+    (set_attr "length" "4")])
+ 
+ ;; Specialised AND pattern, which can emit an efficient ZERO instruction.
+ (define_insn "@pru_and_zerobytes<mode>"
+   [(set (match_operand:HIDI 0 "register_operand" "=r")
+ 	(and:HIDI
+ 	   (match_operand:HIDI 1 "register_operand" "0")
+ 	   (match_operand:HIDI 2 "const_zerobytes_operand" "Uz")))]
+   ""
+ {
+   static char line[64];
+   pru_byterange r;
+ 
+   r = pru_calc_byterange (~INTVAL (operands[2]), <MODE>mode);
+   gcc_assert (r.start >=0 && r.nbytes > 0);
+   gcc_assert ((r.start + r.nbytes) <= GET_MODE_SIZE (<MODE>mode));
+ 
+   const int regno = REGNO (operands[0]) + r.start;
+ 
+   sprintf (line, "zero\\tr%d.b%d, %d", regno / 4, regno % 4, r.nbytes);
+   return line;
+ }
+   [(set_attr "type" "alu")
+    (set_attr "length" "4")])
  
  ;;  Shift instructions
  
***************
*** 603,608 ****
--- 703,904 ----
    [(set_attr "type" "alu")
     (set_attr "length" "12")])
  
+ 
+ ; 64-bit LSHIFTRT with a constant shift count can be expanded into
+ ; more efficient code sequence than a variable register shift.
+ ;
+ ; 1. For shift >= 32:
+ ;    dst_lo = (src_hi >> (shift - 32))
+ ;    dst_hi = 0
+ ;
+ ; 2. For shift==1 there is no need for a temporary:
+ ;    dst_lo = (src_lo >> 1)
+ ;    if (src_hi & 1)
+ ;       dst_lo |= (1 << 31)
+ ;    dst_hi = (src_hi >> 1)
+ ;
+ ; 3. For shift < 32:
+ ;    dst_lo = (src_lo >> shift)
+ ;    tmp = (src_hi << (32 - shift)
+ ;    dst_lo |= tmp
+ ;    dst_hi = (src_hi >> shift)
+ ;
+ ; 4. For shift in a register:
+ ;    Fall back to calling libgcc.
+ (define_expand "lshrdi3"
+   [(set (match_operand:DI 0 "register_operand")
+ 	  (lshiftrt:DI
+ 	    (match_operand:DI 1 "register_operand")
+ 	    (match_operand:QI 2 "const_int_operand")))]
+   ""
+ {
+   gcc_assert (CONST_INT_P (operands[2]));
+ 
+   const int nshifts = INTVAL (operands[2]);
+   rtx dst_lo = simplify_gen_subreg (SImode, operands[0], DImode, 0);
+   rtx dst_hi = simplify_gen_subreg (SImode, operands[0], DImode, 4);
+   rtx src_lo = simplify_gen_subreg (SImode, operands[1], DImode, 0);
+   rtx src_hi = simplify_gen_subreg (SImode, operands[1], DImode, 4);
+ 
+   if (nshifts >= 32)
+     {
+       emit_insn (gen_rtx_SET (dst_lo,
+ 			      gen_rtx_LSHIFTRT (SImode,
+ 						src_hi,
+ 						GEN_INT (nshifts - 32))));
+       emit_insn (gen_rtx_SET (dst_hi, const0_rtx));
+       DONE;
+     }
+ 
+   gcc_assert (can_create_pseudo_p ());
+ 
+   /* The expansions which follow are safe only if DST_LO and SRC_HI
+      do not overlap.  If they do, then fix by using a temporary register.
+      Overlapping of DST_HI and SRC_LO is safe because by the time DST_HI
+      is set, SRC_LO is no longer live.  */
+   if (reg_overlap_mentioned_p (dst_lo, src_hi))
+     {
+       rtx new_src_hi = gen_reg_rtx (SImode);
+ 
+       emit_move_insn (new_src_hi, src_hi);
+       src_hi = new_src_hi;
+     }
+ 
+   if (nshifts == 1)
+     {
+       rtx_code_label *skip_hiset_label;
+       rtx j;
+ 
+       emit_insn (gen_rtx_SET (dst_lo,
+ 			      gen_rtx_LSHIFTRT (SImode, src_lo, const1_rtx)));
+ 
+       /* The code generated by `genemit' would create a LABEL_REF.  */
+       skip_hiset_label = gen_label_rtx ();
+       j = emit_jump_insn (gen_cbranch_qbbx_const (EQ,
+ 						  SImode,
+ 						  src_hi,
+ 						  GEN_INT (0),
+ 						  skip_hiset_label));
+       JUMP_LABEL (j) = skip_hiset_label;
+       LABEL_NUSES (skip_hiset_label)++;
+ 
+       emit_insn (gen_iorsi3 (dst_lo, dst_lo, GEN_INT (1 << 31)));
+       emit_label (skip_hiset_label);
+       emit_insn (gen_rtx_SET (dst_hi,
+ 			      gen_rtx_LSHIFTRT (SImode, src_hi, const1_rtx)));
+       DONE;
+     }
+ 
+   if (nshifts < 32)
+     {
+       rtx tmpval = gen_reg_rtx (SImode);
+ 
+       emit_insn (gen_rtx_SET (dst_lo,
+ 			      gen_rtx_LSHIFTRT (SImode,
+ 						src_lo,
+ 						GEN_INT (nshifts))));
+       emit_insn (gen_rtx_SET (tmpval,
+ 			      gen_rtx_ASHIFT (SImode,
+ 					      src_hi,
+ 					      GEN_INT (32 - nshifts))));
+       emit_insn (gen_iorsi3 (dst_lo, dst_lo, tmpval));
+       emit_insn (gen_rtx_SET (dst_hi,
+ 			      gen_rtx_LSHIFTRT (SImode,
+ 						src_hi,
+ 						GEN_INT (nshifts))));
+       DONE;
+     }
+   gcc_unreachable ();
+ })
+ 
+ ; 64-bit ASHIFT with a constant shift count can be expanded into
+ ; more efficient code sequence than the libgcc call required by
+ ; a variable shift in a register.
+ 
+ (define_expand "ashldi3"
+   [(set (match_operand:DI 0 "register_operand")
+ 	  (ashift:DI
+ 	    (match_operand:DI 1 "register_operand")
+ 	    (match_operand:QI 2 "const_int_operand")))]
+   ""
+ {
+   gcc_assert (CONST_INT_P (operands[2]));
+ 
+   const int nshifts = INTVAL (operands[2]);
+   rtx dst_lo = simplify_gen_subreg (SImode, operands[0], DImode, 0);
+   rtx dst_hi = simplify_gen_subreg (SImode, operands[0], DImode, 4);
+   rtx src_lo = simplify_gen_subreg (SImode, operands[1], DImode, 0);
+   rtx src_hi = simplify_gen_subreg (SImode, operands[1], DImode, 4);
+ 
+   if (nshifts >= 32)
+     {
+       emit_insn (gen_rtx_SET (dst_hi,
+ 			      gen_rtx_ASHIFT (SImode,
+ 					      src_lo,
+ 					      GEN_INT (nshifts - 32))));
+       emit_insn (gen_rtx_SET (dst_lo, const0_rtx));
+       DONE;
+     }
+ 
+   gcc_assert (can_create_pseudo_p ());
+ 
+   /* The expansions which follow are safe only if DST_HI and SRC_LO
+      do not overlap.  If they do, then fix by using a temporary register.
+      Overlapping of DST_LO and SRC_HI is safe because by the time DST_LO
+      is set, SRC_HI is no longer live.  */
+   if (reg_overlap_mentioned_p (dst_hi, src_lo))
+     {
+       rtx new_src_lo = gen_reg_rtx (SImode);
+ 
+       emit_move_insn (new_src_lo, src_lo);
+       src_lo = new_src_lo;
+     }
+ 
+   if (nshifts == 1)
+     {
+       rtx_code_label *skip_hiset_label;
+       rtx j;
+ 
+       emit_insn (gen_rtx_SET (dst_hi,
+ 			      gen_rtx_ASHIFT (SImode, src_hi, const1_rtx)));
+ 
+       skip_hiset_label = gen_label_rtx ();
+       j = emit_jump_insn (gen_cbranch_qbbx_const (EQ,
+ 						  SImode,
+ 						  src_lo,
+ 						  GEN_INT (31),
+ 						  skip_hiset_label));
+       JUMP_LABEL (j) = skip_hiset_label;
+       LABEL_NUSES (skip_hiset_label)++;
+ 
+       emit_insn (gen_iorsi3 (dst_hi, dst_hi, GEN_INT (1 << 0)));
+       emit_label (skip_hiset_label);
+       emit_insn (gen_rtx_SET (dst_lo,
+ 			      gen_rtx_ASHIFT (SImode, src_lo, const1_rtx)));
+       DONE;
+     }
+ 
+   if (nshifts < 32)
+     {
+       rtx tmpval = gen_reg_rtx (SImode);
+ 
+       emit_insn (gen_rtx_SET (dst_hi,
+ 			      gen_rtx_ASHIFT (SImode,
+ 					      src_hi,
+ 					      GEN_INT (nshifts))));
+       emit_insn (gen_rtx_SET (tmpval,
+ 			      gen_rtx_LSHIFTRT (SImode,
+ 						src_lo,
+ 						GEN_INT (32 - nshifts))));
+       emit_insn (gen_iorsi3 (dst_hi, dst_hi, tmpval));
+       emit_insn (gen_rtx_SET (dst_lo,
+ 			      gen_rtx_ASHIFT (SImode,
+ 					      src_lo,
+ 					      GEN_INT (nshifts))));
+       DONE;
+     }
+   gcc_unreachable ();
+ })
  
  ;; Include ALU patterns with zero-extension of operands.  That's where
  ;; the real insns are defined.
***************
*** 641,659 ****
  ;; DI logical ops could be automatically split into WORD-mode ops in
  ;; expand_binop().  But then we'll miss an opportunity to use SI mode
  ;; operations, since WORD mode for PRU is QI.
! (define_insn "<code>di3"
!   [(set (match_operand:DI 0 "register_operand"		"=&r,&r")
  	  (LOGICAL_BITOP:DI
! 	    (match_operand:DI 1 "register_operand"	"%r,r")
! 	    (match_operand:DI 2 "reg_or_ubyte_operand"	"r,I")))]
    ""
!   "@
!    <logical_bitop_asm>\\t%F0, %F1, %F2\;<logical_bitop_asm>\\t%N0, %N1, %N2
!    <logical_bitop_asm>\\t%F0, %F1, %2\;<logical_bitop_asm>\\t%N0, %N1, 0"
    [(set_attr "type" "alu")
     (set_attr "length" "8")])
  
- 
  (define_insn "one_cmpldi2"
    [(set (match_operand:DI 0 "register_operand"		"=r")
  	(not:DI (match_operand:DI 1 "register_operand"	"r")))]
--- 937,1026 ----
  ;; DI logical ops could be automatically split into WORD-mode ops in
  ;; expand_binop().  But then we'll miss an opportunity to use SI mode
  ;; operations, since WORD mode for PRU is QI.
! (define_expand "<code>di3"
!   [(set (match_operand:DI 0 "register_operand")
  	  (LOGICAL_BITOP:DI
! 	    (match_operand:DI 1 "register_operand")
! 	    (match_operand:DI 2 "reg_or_const_int_operand")))]
    ""
! {
!   /* Try with the more efficient zero/fill patterns first.  */
!   if (<LOGICAL_BITOP:CODE> == IOR
!       && CONST_INT_P (operands[2])
!       && const_fillbytes_operand (operands[2], DImode))
!     {
!       rtx insn = maybe_gen_pru_ior_fillbytes (DImode,
! 					      operands[0],
! 					      operands[0],
! 					      operands[2]);
!       if (insn != nullptr)
! 	{
! 	  if (REGNO (operands[0]) != REGNO (operands[1]))
! 	    emit_move_insn (operands[0], operands[1]);
! 	  emit_insn (insn);
! 	  DONE;
! 	}
!     }
!   if (<LOGICAL_BITOP:CODE> == AND
!       && CONST_INT_P (operands[2])
!       && const_zerobytes_operand (operands[2], DImode))
!     {
!       rtx insn = maybe_gen_pru_and_zerobytes (DImode,
! 					      operands[0],
! 					      operands[0],
! 					      operands[2]);
!       if (insn != nullptr)
! 	{
! 	  if (REGNO (operands[0]) != REGNO (operands[1]))
! 	    emit_move_insn (operands[0], operands[1]);
! 	  emit_insn (insn);
! 	  DONE;
! 	}
!     }
!   /* No optimized case found.  Rely on the two-instruction pattern below.  */
!   if (!reg_or_ubyte_operand (operands[2], DImode))
!     operands[2] = force_reg (DImode, operands[2]);
! })
! 
! ;; 64-bit pattern for logical operations.
! (define_insn "pru_<code>di3"
!   [(set (match_operand:DI 0 "register_operand"		"=r,&r,r")
! 	  (LOGICAL_BITOP:DI
! 	    (match_operand:DI 1 "register_operand"	"%0,r,r")
! 	    (match_operand:DI 2 "reg_or_ubyte_operand"	"r,r,I")))]
!   ""
! {
!   switch (which_alternative)
!     {
!     case 0:
!       if (REGNO (operands[0]) == (REGNO (operands[2]) + 4))
! 	return "<logical_bitop_asm>\\t%N0, %N0, %N2\;"
! 	       "<logical_bitop_asm>\\t%F0, %F0, %F2";
!       else
! 	return "<logical_bitop_asm>\\t%F0, %F0, %F2\;"
! 	       "<logical_bitop_asm>\\t%N0, %N0, %N2";
!     case 1:
!       /* With the three-register variant there is no way to handle the case
! 	 when OP0 overlaps both OP1 and OP2.  Example:
! 	     OP0_lo == OP1_hi
! 	     OP0_hi == OP2_lo
! 	 Hence this variant's OP0 must be marked as an earlyclobber.  */
!       return "<logical_bitop_asm>\\t%F0, %F1, %F2\;"
! 	     "<logical_bitop_asm>\\t%N0, %N1, %N2";
!     case 2:
!       if (REGNO (operands[0]) == (REGNO (operands[1]) + 4))
! 	return "<logical_bitop_asm>\\t%N0, %N1, 0\;"
! 	       "<logical_bitop_asm>\\t%F0, %F1, %2";
!       else
! 	return "<logical_bitop_asm>\\t%F0, %F1, %2\;"
! 	       "<logical_bitop_asm>\\t%N0, %N1, 0";
!     default:
!       gcc_unreachable ();
!   }
! }
    [(set_attr "type" "alu")
     (set_attr "length" "8")])
  
  (define_insn "one_cmpldi2"
    [(set (match_operand:DI 0 "register_operand"		"=r")
  	(not:DI (match_operand:DI 1 "register_operand"	"r")))]
***************
*** 942,947 ****
--- 1309,1494 ----
    operands[2] = XEXP (t, 1);
  })
  
+ ;; Expand the cbranchdi pattern in order to avoid the default
+ ;; expansion into word_mode operations, which is not efficient for PRU.
+ ;; In pseudocode this expansion outputs:
+ ;;
+ ;; /* EQ */
+ ;; if (OP1_hi {reverse_condition (cmp)} OP2_hi)
+ ;;     goto fallthrough
+ ;; if (OP1_lo {cmp} OP2_lo)
+ ;;     goto label3
+ ;; fallthrough:
+ ;;
+ ;; /* NE */
+ ;; if (OP1_hi {cmp} OP2_hi)
+ ;;     goto label3
+ ;; if (OP1_lo {cmp} OP2_lo)
+ ;;     goto label3
+ ;;
+ ;; The LT comparisons with zero take one machine instruction to simply
+ ;; check the sign bit.  The GT comparisons with zero take two - one
+ ;; to check the sign bit, and one to check for zero.  Hence arrange
+ ;; the expand such that only LT comparison is used for OP1_HI, because
+ ;; OP2_HI is const0_rtx.
+ ;;
+ ;; The LTU comparisons with zero will be removed by subsequent passes.
+ ;;
+ ;;  /* LT/LTU/LE/LEU */
+ ;;  if (OP1_hi {noteq_condition (cmp)} OP2_hi)
+ ;;     goto label3		/* DI comparison obviously true.  */
+ ;;  if (OP1_hi != OP2_hi)
+ ;;     goto fallthrough		/* DI comparison obviously not true.  */
+ ;;  if (OP1_lo {unsigned_condition (cmp)} OP2_lo)
+ ;;     goto label3		/* Comparison was deferred to lo parts.  */
+ ;;  fallthrough:
+ 
+ ;;  /* GT/GTU/GE/GEU */
+ ;;  if (OP1_hi {reverse_condition (noteq_condition (cmp))} OP2_hi)
+ ;;     goto fallthrough 	/* DI comparison obviously not true.  */
+ ;;  if (OP1_hi != OP2_hi)
+ ;;     goto label3		/* DI comparison obviously true.  */
+ ;;  if (OP1_lo {unsigned_condition (cmp)} OP2_lo)
+ ;;     goto label3		/* Comparison was deferred to lo parts.  */
+ ;;  fallthrough:
+ 
+ (define_expand "cbranchdi4"
+   [(set (pc)
+      (if_then_else
+        (match_operator 0 "ordered_comparison_operator"
+ 	 [(match_operand:DI 1 "register_operand")
+ 	  (match_operand:DI 2 "reg_or_ubyte_operand")])
+        (label_ref (match_operand 3 ""))
+        (pc)))]
+   ""
+ {
+   const enum rtx_code code = GET_CODE (operands[0]);
+   rtx label3 = operands[3];
+   rtx op1_lo = simplify_gen_subreg (SImode, operands[1], DImode, 0);
+   rtx op1_hi = simplify_gen_subreg (SImode, operands[1], DImode, 4);
+   rtx op2_lo = simplify_gen_subreg (SImode, operands[2], DImode, 0);
+   rtx op2_hi = simplify_gen_subreg (SImode, operands[2], DImode, 4);
+   rtx j;
+ 
+   if (code == EQ)
+     {
+       rtx label_fallthrough = gen_label_rtx ();
+       rtx label_fallthrough_ref = gen_rtx_LABEL_REF (Pmode, label_fallthrough);
+ 
+       rtx cond_hi = gen_rtx_fmt_ee (NE, VOIDmode, op1_hi, op2_hi);
+       rtx check_hi = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_hi,
+ 					   label_fallthrough_ref, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_hi));
+       JUMP_LABEL (j) = label_fallthrough;
+       LABEL_NUSES (label_fallthrough)++;
+ 
+       rtx label3_ref = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_lo = gen_rtx_fmt_ee (EQ, VOIDmode, op1_lo, op2_lo);
+       rtx check_lo = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_lo,
+ 					   label3_ref, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_lo));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       emit_label (label_fallthrough);
+       DONE;
+     }
+   if (code == NE)
+     {
+       rtx label3_ref1 = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_hi = gen_rtx_fmt_ee (NE, VOIDmode, op1_hi, op2_hi);
+       rtx check_hi = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_hi,
+ 					   label3_ref1, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_hi));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       rtx label3_ref2 = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_lo = gen_rtx_fmt_ee (NE, VOIDmode, op1_lo, op2_lo);
+       rtx check_lo = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_lo,
+ 					   label3_ref2, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_lo));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       DONE;
+     }
+ 
+   if (code == LT || code == LTU || code == LE || code == LEU)
+     {
+       /* Check for "DI comparison obviously true".  */
+       rtx label3_ref1 = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_hi = gen_rtx_fmt_ee (pru_noteq_condition (code),
+ 				    VOIDmode, op1_hi, op2_hi);
+       rtx check_hi = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_hi,
+ 					   label3_ref1, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_hi));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       /* Check for "DI comparison obviously not true".  */
+       rtx label_fallthrough = gen_label_rtx ();
+       rtx label_fallthrough_ref = gen_rtx_LABEL_REF (Pmode, label_fallthrough);
+       rtx cond_hine = gen_rtx_fmt_ee (NE, VOIDmode, op1_hi, op2_hi);
+       rtx check_hine = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_hine,
+ 					     label_fallthrough_ref, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_hine));
+       JUMP_LABEL (j) = label_fallthrough;
+       LABEL_NUSES (label_fallthrough)++;
+ 
+       /* Comparison deferred to the lo parts.  */
+       rtx label3_ref2 = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_lo = gen_rtx_fmt_ee (unsigned_condition (code),
+ 				    VOIDmode, op1_lo, op2_lo);
+       rtx check_lo = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_lo,
+ 					   label3_ref2, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_lo));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       emit_label (label_fallthrough);
+       DONE;
+     }
+ 
+   if (code == GT || code == GTU || code == GE || code == GEU)
+     {
+       /* Check for "DI comparison obviously not true".  */
+       const enum rtx_code reversed_code = reverse_condition (code);
+       rtx label_fallthrough = gen_label_rtx ();
+       rtx label_fallthrough_ref = gen_rtx_LABEL_REF (Pmode, label_fallthrough);
+       rtx cond_hi = gen_rtx_fmt_ee (pru_noteq_condition (reversed_code),
+ 				    VOIDmode, op1_hi, op2_hi);
+       rtx check_hi = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_hi,
+ 					   label_fallthrough_ref, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_hi));
+       JUMP_LABEL (j) = label_fallthrough;
+       LABEL_NUSES (label_fallthrough)++;
+ 
+       /* Check for "DI comparison obviously true".  */
+       rtx label3_ref1 = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_hine = gen_rtx_fmt_ee (NE, VOIDmode, op1_hi, op2_hi);
+       rtx check_hine = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_hine,
+ 					     label3_ref1, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_hine));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       /* Comparison deferred to the lo parts.  */
+       rtx label3_ref2 = gen_rtx_LABEL_REF (Pmode, label3);
+       rtx cond_lo = gen_rtx_fmt_ee (unsigned_condition (code),
+ 				    VOIDmode, op1_lo, op2_lo);
+       rtx check_lo = gen_rtx_IF_THEN_ELSE (VOIDmode, cond_lo,
+ 					   label3_ref2, pc_rtx);
+       j = emit_jump_insn (gen_rtx_SET (pc_rtx, check_lo));
+       JUMP_LABEL (j) = label3;
+       LABEL_NUSES (label3)++;
+ 
+       emit_label (label_fallthrough);
+       DONE;
+     }
+     gcc_unreachable ();
+ })
+ 
  ;
  ; Bit test branch
  
***************
*** 975,980 ****
--- 1522,1576 ----
  	       (le (minus (match_dup 2) (pc)) (const_int 2044)))
  	  (const_int 4)
  	  (const_int 8)))])
+ 
+ ;; Bit test conditional branch, but only for constant bit positions.
+ ;; This restriction allows an efficient code for DImode operands.
+ ;;
+ ;; QImode is already handled by the pattern variant above.
+ (define_insn "@cbranch_qbbx_const_<BIT_TEST:code><HIDI:mode>"
+  [(set (pc)
+    (if_then_else
+     (BIT_TEST (zero_extract:HIDI
+ 	 (match_operand:HIDI 0 "register_operand" "r")
+ 	 (const_int 1)
+ 	 (match_operand:VOID 1 "const_int_operand" "i"))
+      (const_int 0))
+     (label_ref (match_operand 2))
+     (pc)))]
+   ""
+ {
+   const int length = (get_attr_length (insn));
+   const bool is_near = (length == 4);
+ 
+   if (<HIDI:MODE>mode == DImode && INTVAL (operands[1]) <= 31)
+     {
+       if (is_near)
+ 	return "<BIT_TEST:qbbx_op>\\t%l2, %F0, %1";
+       else
+ 	return "<BIT_TEST:qbbx_negop>\\t.+8, %F0, %1\;jmp\\t%%label(%l2)";
+     }
+   else if (<HIDI:MODE>mode == DImode)
+     {
+       if (is_near)
+ 	return "<BIT_TEST:qbbx_op>\\t%l2, %N0, %1 - 32";
+       else
+ 	return "<BIT_TEST:qbbx_negop>\\t.+8, %N0, %1 - 32\;jmp\\t%%label(%l2)";
+     }
+   else
+     {
+       if (is_near)
+ 	return "<BIT_TEST:qbbx_op>\\t%l2, %0, %1";
+       else
+ 	return "<BIT_TEST:qbbx_negop>\\t.+8, %0, %1\;jmp\\t%%label(%l2)";
+     }
+ }
+   [(set_attr "type" "control")
+    (set (attr "length")
+       (if_then_else
+ 	  (and (ge (minus (match_dup 2) (pc)) (const_int -2048))
+ 	       (le (minus (match_dup 2) (pc)) (const_int 2044)))
+ 	  (const_int 4)
+ 	  (const_int 8)))])
  
  ;; ::::::::::::::::::::
  ;; ::
***************
*** 1127,1134 ****
    [(set_attr "type" "control")])
  
  ;; Count Leading Zeros implemented using LMBD.
! ;; LMBD returns 32 if bit value is not present, and we subtract 31 to get CLZ.
! ;; Hence we get a defined value -1 for CLZ_DEFINED_VALUE_AT_ZERO.
  (define_expand "clz<mode>2"
    [(set (match_operand:QISI 0 "register_operand")
  	(clz:QISI (match_operand:QISI 1 "register_operand")))]
--- 1723,1738 ----
    [(set_attr "type" "control")])
  
  ;; Count Leading Zeros implemented using LMBD.
! ;;
! ;; LMBD returns 32 if bit value is not present, for any kind of input MODE.
! ;; The LMBD's search result for a "1" bit is subtracted from the
! ;; mode bit size minus one, in order to get CLZ.
! ;;
! ;; Hence for SImode we get a defined value -1 for CLZ_DEFINED_VALUE_AT_ZERO.
! ;;
! ;; The QImode and HImode defined values for zero inputs end up to be
! ;; non-standard (-25 and -17).  But this is considered acceptable in
! ;; order to keep the CLZ expansion to only two instructions.
  (define_expand "clz<mode>2"
    [(set (match_operand:QISI 0 "register_operand")
  	(clz:QISI (match_operand:QISI 1 "register_operand")))]
***************
*** 1139,1145 ****
    rtx tmpval = gen_reg_rtx (<MODE>mode);
  
    emit_insn (gen_pru_lmbd (<MODE>mode, tmpval, src, const1_rtx));
!   emit_insn (gen_sub3_insn (dst, GEN_INT (31), tmpval));
    DONE;
  })
  
--- 1743,1750 ----
    rtx tmpval = gen_reg_rtx (<MODE>mode);
  
    emit_insn (gen_pru_lmbd (<MODE>mode, tmpval, src, const1_rtx));
!   int msb_bitn = GET_MODE_BITSIZE (<MODE>mode) - 1;
!   emit_insn (gen_sub3_insn (dst, GEN_INT (msb_bitn), tmpval));
    DONE;
  })
  
diff -Nrcpad gcc-12.2.0/gcc/config/pru/pru.opt gcc-13.1.0/gcc/config/pru/pru.opt
*** gcc-12.2.0/gcc/config/pru/pru.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/pru.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Options for the TI PRU port of the compiler.
! ; Copyright (C) 2018-2022 Free Software Foundation, Inc.
  ; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Options for the TI PRU port of the compiler.
! ; Copyright (C) 2018-2023 Free Software Foundation, Inc.
  ; Contributed by Dimitar Dimitrov <dimitar@dinux.eu>
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/pru/t-pru gcc-13.1.0/gcc/config/pru/t-pru
*** gcc-12.2.0/gcc/config/pru/t-pru	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/pru/t-pru	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Makefile fragment for building GCC for the TI PRU target.
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  # Contributed by Dimitar Dimitrov <dimitar.dinux.eu>
  # Based on the t-nios2
  #
--- 1,5 ----
  # Makefile fragment for building GCC for the TI PRU target.
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  # Contributed by Dimitar Dimitrov <dimitar.dinux.eu>
  # Based on the t-nios2
  #
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/arch-canonicalize gcc-13.1.0/gcc/config/riscv/arch-canonicalize
*** gcc-12.2.0/gcc/config/riscv/arch-canonicalize	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/arch-canonicalize	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/usr/bin/env python
  
  # Tool for canonical RISC-V architecture string.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  # Contributed by Andrew Waterman (andrew@sifive.com).
  #
  # This file is part of GCC.
--- 1,7 ----
  #!/usr/bin/env python
  
  # Tool for canonical RISC-V architecture string.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  # Contributed by Andrew Waterman (andrew@sifive.com).
  #
  # This file is part of GCC.
*************** import itertools
*** 32,38 ****
  from functools import reduce
  
  SUPPORTED_ISA_SPEC = ["2.2", "20190608", "20191213"]
! CANONICAL_ORDER = "imafdgqlcbjktpvn"
  LONG_EXT_PREFIXES = ['z', 's', 'h', 'x']
  
  #
--- 32,38 ----
  from functools import reduce
  
  SUPPORTED_ISA_SPEC = ["2.2", "20190608", "20191213"]
! CANONICAL_ORDER = "imafdgqlcbkjtpvn"
  LONG_EXT_PREFIXES = ['z', 's', 'h', 'x']
  
  #
*************** LONG_EXT_PREFIXES = ['z', 's', 'h', 'x']
*** 41,46 ****
--- 41,51 ----
  IMPLIED_EXT = {
    "d" : ["f", "zicsr"],
    "f" : ["zicsr"],
+   "zdinx" : ["zfinx", "zicsr"],
+   "zfinx" : ["zicsr"],
+   "zhinx" : ["zhinxmin", "zfinx", "zicsr"],
+   "zhinxmin" : ["zfinx", "zicsr"],
+ 
    "zk" : ["zkn", "zkr", "zkt"],
    "zkn" : ["zbkb", "zbkc", "zbkx", "zkne", "zknd", "zknh"],
    "zks" : ["zbkb", "zbkc", "zbkx", "zksed", "zksh"],
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/bitmanip.md gcc-13.1.0/gcc/config/riscv/bitmanip.md
*** gcc-12.2.0/gcc/config/riscv/bitmanip.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/bitmanip.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for RISC-V Bit Manipulation operations.
! ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Machine description for RISC-V Bit Manipulation operations.
! ;; Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
***************
*** 17,47 ****
  ;; along with GCC; see the file COPYING3.  If not see
  ;; <http://www.gnu.org/licenses/>.
  
- (define_code_iterator bitmanip_bitwise [and ior])
- 
- (define_code_iterator bitmanip_minmax [smin umin smax umax])
- 
- (define_code_iterator clz_ctz_pcnt [clz ctz popcount])
- 
- (define_code_attr bitmanip_optab [(smin "smin")
- 				  (smax "smax")
- 				  (umin "umin")
- 				  (umax "umax")
- 				  (clz "clz")
- 				  (ctz "ctz")
- 				  (popcount "popcount")])
- 
- 
- (define_code_attr bitmanip_insn [(smin "min")
- 				 (smax "max")
- 				 (umin "minu")
- 				 (umax "maxu")
- 				 (clz "clz")
- 				 (ctz "ctz")
- 				 (popcount "cpop")])
- 
- (define_mode_attr shiftm1 [(SI "const31_operand") (DI "const63_operand")])
- 
  ;; ZBA extension.
  
  (define_insn "*zero_extendsidi2_bitmanip"
--- 17,22 ----
***************
*** 57,84 ****
  (define_insn "*shNadd"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(plus:X (ashift:X (match_operand:X 1 "register_operand" "r")
! 			  (match_operand:QI 2 "immediate_operand" "I"))
  		(match_operand:X 3 "register_operand" "r")))]
!   "TARGET_ZBA
!    && (INTVAL (operands[2]) >= 1) && (INTVAL (operands[2]) <= 3)"
    "sh%2add\t%0,%1,%3"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "<X:MODE>")])
  
  (define_insn "*shNadduw"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(plus:DI
  	  (and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
! 			     (match_operand:QI 2 "immediate_operand" "I"))
! 		 (match_operand 3 "immediate_operand" ""))
  	  (match_operand:DI 4 "register_operand" "r")))]
    "TARGET_64BIT && TARGET_ZBA
-    && (INTVAL (operands[2]) >= 1) && (INTVAL (operands[2]) <= 3)
     && (INTVAL (operands[3]) >> INTVAL (operands[2])) == 0xffffffff"
    "sh%2add.uw\t%0,%1,%4"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "DI")])
  
  (define_insn "*add.uw"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(plus:DI (zero_extend:DI
--- 32,167 ----
  (define_insn "*shNadd"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(plus:X (ashift:X (match_operand:X 1 "register_operand" "r")
! 			  (match_operand:QI 2 "imm123_operand" "Ds3"))
  		(match_operand:X 3 "register_operand" "r")))]
!   "TARGET_ZBA"
    "sh%2add\t%0,%1,%3"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "<X:MODE>")])
  
+ ; When using strength-reduction, we will reduce a multiplication to a
+ ; sequence of shifts and adds.  If this is performed with 32-bit types
+ ; and followed by a division, the lack of w-form sh[123]add will make
+ ; combination impossible and lead to a slli + addw being generated.
+ ; Split the sequence with the knowledge that a w-form div will perform
+ ; implicit sign-extensions.
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(sign_extend:DI (div:SI (plus:SI (subreg:SI (ashift:DI (match_operand:DI 1 "register_operand")
+ 							       (match_operand:QI 2 "imm123_operand")) 0)
+ 						    (subreg:SI (match_operand:DI 3 "register_operand") 0))
+ 		(subreg:SI (match_operand:DI 4 "register_operand") 0))))
+    (clobber (match_operand:DI 5 "register_operand"))]
+   "TARGET_64BIT && TARGET_ZBA"
+    [(set (match_dup 5) (plus:DI (ashift:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
+     (set (match_dup 0) (sign_extend:DI (div:SI (subreg:SI (match_dup 5) 0) (subreg:SI (match_dup 4) 0))))])
+ 
+ ; Zba does not provide W-forms of sh[123]add(.uw)?, which leads to an
+ ; interesting irregularity: we can generate a signed 32-bit result
+ ; using slli(.uw)?+ addw, but a unsigned 32-bit result can be more
+ ; efficiently be generated as sh[123]add+zext.w (the .uw can be
+ ; dropped, if we zero-extend the output anyway).
+ ;
+ ; To enable this optimization, we split [ slli(.uw)?, addw, zext.w ]
+ ; into [ sh[123]add, zext.w ] for use during combine.
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(zero_extend:DI (plus:SI (ashift:SI (subreg:SI (match_operand:DI 1 "register_operand") 0)
+ 						       (match_operand:QI 2 "imm123_operand"))
+ 				 (subreg:SI (match_operand:DI 3 "register_operand") 0))))]
+   "TARGET_64BIT && TARGET_ZBA"
+   [(set (match_dup 0) (plus:DI (ashift:DI (match_dup 1) (match_dup 2)) (match_dup 3)))
+    (set (match_dup 0) (zero_extend:DI (subreg:SI (match_dup 0) 0)))])
+ 
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(zero_extend:DI (plus:SI (subreg:SI (and:DI (ashift:DI (match_operand:DI 1 "register_operand")
+ 							       (match_operand:QI 2 "imm123_operand"))
+ 						    (match_operand:DI 3 "consecutive_bits_operand")) 0)
+ 				 (subreg:SI (match_operand:DI 4 "register_operand") 0))))]
+   "TARGET_64BIT && TARGET_ZBA
+    && riscv_shamt_matches_mask_p (INTVAL (operands[2]), INTVAL (operands[3]))"
+   [(set (match_dup 0) (plus:DI (ashift:DI (match_dup 1) (match_dup 2)) (match_dup 4)))
+    (set (match_dup 0) (zero_extend:DI (subreg:SI (match_dup 0) 0)))])
+ 
+ ; Make sure that an andi followed by a sh[123]add remains a two instruction
+ ; sequence--and is not torn apart into slli, slri, add.
+ (define_insn_and_split "*andi_add.uw"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(plus:DI (and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
+ 				    (match_operand:QI 2 "imm123_operand" "Ds3"))
+ 			 (match_operand:DI 3 "consecutive_bits_operand" ""))
+ 		 (match_operand:DI 4 "register_operand" "r")))
+    (clobber (match_scratch:DI 5 "=&r"))]
+   "TARGET_64BIT && TARGET_ZBA
+    && riscv_shamt_matches_mask_p (INTVAL (operands[2]), INTVAL (operands[3]))
+    && SMALL_OPERAND (INTVAL (operands[3]) >> INTVAL (operands[2]))"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 5) (and:DI (match_dup 1) (match_dup 3)))
+    (set (match_dup 0) (plus:DI (ashift:DI (match_dup 5) (match_dup 2))
+ 			       (match_dup 4)))]
+ {
+ 	operands[3] = GEN_INT (INTVAL (operands[3]) >> INTVAL (operands[2]));
+ })
+ 
  (define_insn "*shNadduw"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(plus:DI
  	  (and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
! 			     (match_operand:QI 2 "imm123_operand" "Ds3"))
! 		 (match_operand 3 "immediate_operand" "n"))
  	  (match_operand:DI 4 "register_operand" "r")))]
    "TARGET_64BIT && TARGET_ZBA
     && (INTVAL (operands[3]) >> INTVAL (operands[2])) == 0xffffffff"
    "sh%2add.uw\t%0,%1,%4"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "DI")])
  
+ ;; During combine, we may encounter an attempt to combine
+ ;;   slli rtmp, rs, #imm
+ ;;   zext.w rtmp, rtmp
+ ;;   sh[123]add rd, rtmp, rs2
+ ;; which will lead to the immediate not satisfying the above constraints.
+ ;; By splitting the compound expression, we can simplify to a slli and a
+ ;; sh[123]add.uw.
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(plus:DI (and:DI (ashift:DI (match_operand:DI 1 "register_operand")
+ 				    (match_operand:QI 2 "immediate_operand"))
+ 			 (match_operand:DI 3 "consecutive_bits_operand"))
+ 		 (match_operand:DI 4 "register_operand")))
+    (clobber (match_operand:DI 5 "register_operand"))]
+   "TARGET_64BIT && TARGET_ZBA"
+   [(set (match_dup 5) (ashift:DI (match_dup 1) (match_dup 6)))
+    (set (match_dup 0) (plus:DI (and:DI (ashift:DI (match_dup 5)
+ 						  (match_dup 7))
+ 				       (match_dup 8))
+ 			       (match_dup 4)))]
+ {
+ 	unsigned HOST_WIDE_INT mask = UINTVAL (operands[3]);
+ 	/* scale: shift within the sh[123]add.uw */
+ 	unsigned HOST_WIDE_INT scale = 32 - clz_hwi (mask);
+ 	/* bias:  pre-scale amount (i.e. the prior shift amount) */
+ 	int bias = ctz_hwi (mask) - scale;
+ 
+ 	/* If the bias + scale don't add up to operand[2], reject. */
+ 	if ((scale + bias) != UINTVAL (operands[2]))
+ 	   FAIL;
+ 
+ 	/* If the shift-amount is out-of-range for sh[123]add.uw, reject. */
+ 	if ((scale < 1) || (scale > 3))
+ 	   FAIL;
+ 
+ 	/* If there's no bias, the '*shNadduw' pattern should have matched. */
+ 	if (bias == 0)
+ 	   FAIL;
+ 
+ 	operands[6] = GEN_INT (bias);
+ 	operands[7] = GEN_INT (scale);
+ 	operands[8] = GEN_INT (0xffffffffULL << scale);
+ })
+ 
  (define_insn "*add.uw"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(plus:DI (zero_extend:DI
***************
*** 93,99 ****
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
  			   (match_operand:QI 2 "immediate_operand" "I"))
! 		(match_operand 3 "immediate_operand" "")))]
    "TARGET_64BIT && TARGET_ZBA
     && (INTVAL (operands[3]) >> INTVAL (operands[2])) == 0xffffffff"
    "slli.uw\t%0,%1,%2"
--- 176,182 ----
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(and:DI (ashift:DI (match_operand:DI 1 "register_operand" "r")
  			   (match_operand:QI 2 "immediate_operand" "I"))
! 		(match_operand 3 "immediate_operand" "n")))]
    "TARGET_64BIT && TARGET_ZBA
     && (INTVAL (operands[3]) >> INTVAL (operands[2])) == 0xffffffff"
    "slli.uw\t%0,%1,%2"
***************
*** 102,130 ****
  
  ;; ZBB extension.
  
  (define_insn "*<optab>_not<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
          (bitmanip_bitwise:X (not:X (match_operand:X 1 "register_operand" "r"))
                              (match_operand:X 2 "register_operand" "r")))]
!   "TARGET_ZBB"
    "<insn>n\t%0,%2,%1"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "<X:MODE>")])
  
  (define_insn "*xor_not<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
          (not:X (xor:X (match_operand:X 1 "register_operand" "r")
                        (match_operand:X 2 "register_operand" "r"))))]
!   "TARGET_ZBB"
    "xnor\t%0,%1,%2"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "<X:MODE>")])
  
! (define_insn "<bitmanip_optab>si2"
    [(set (match_operand:SI 0 "register_operand" "=r")
          (clz_ctz_pcnt:SI (match_operand:SI 1 "register_operand" "r")))]
    "TARGET_ZBB"
!   { return TARGET_64BIT ? "<bitmanip_insn>w\t%0,%1" : "<bitmanip_insn>\t%0,%1"; }
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "SI")])
  
--- 185,246 ----
  
  ;; ZBB extension.
  
+ (define_expand "clzdi2"
+   [(set (match_operand:DI 0 "register_operand")
+ 	(clz:DI (match_operand:DI 1 "register_operand")))]
+   "TARGET_64BIT && (TARGET_ZBB || TARGET_XTHEADBB)")
+ 
+ (define_expand "clzsi2"
+   [(set (match_operand:SI 0 "register_operand")
+ 	(clz:SI (match_operand:SI 1 "register_operand")))]
+   "TARGET_ZBB || (!TARGET_64BIT && TARGET_XTHEADBB)")
+ 
+ (define_expand "ctz<mode>2"
+   [(set (match_operand:GPR 0 "register_operand")
+ 	(ctz:GPR (match_operand:GPR 1 "register_operand")))]
+   "TARGET_ZBB")
+ 
+ (define_expand "popcount<mode>2"
+   [(set (match_operand:GPR 0 "register_operand")
+ 	(popcount:GPR (match_operand:GPR 1 "register_operand")))]
+   "TARGET_ZBB")
+ 
  (define_insn "*<optab>_not<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
          (bitmanip_bitwise:X (not:X (match_operand:X 1 "register_operand" "r"))
                              (match_operand:X 2 "register_operand" "r")))]
!   "TARGET_ZBB || TARGET_ZBKB"
    "<insn>n\t%0,%2,%1"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "<X:MODE>")])
  
+ ;; '(a >= 0) ? b : 0' is emitted branchless (from if-conversion).  Without a
+ ;; bit of extra help for combine (i.e., the below split), we end up emitting
+ ;; not/srai/and instead of combining the not into an andn.
+ (define_split
+   [(set (match_operand:DI 0 "register_operand")
+ 	(and:DI (neg:DI (ge:DI (match_operand:DI 1 "register_operand")
+ 			       (const_int 0)))
+ 		(match_operand:DI 2 "register_operand")))
+    (clobber (match_operand:DI 3 "register_operand"))]
+   "TARGET_ZBB || TARGET_ZBKB"
+   [(set (match_dup 3) (ashiftrt:DI (match_dup 1) (const_int 63)))
+    (set (match_dup 0) (and:DI (not:DI (match_dup 3)) (match_dup 2)))])
+ 
  (define_insn "*xor_not<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
          (not:X (xor:X (match_operand:X 1 "register_operand" "r")
                        (match_operand:X 2 "register_operand" "r"))))]
!   "TARGET_ZBB || TARGET_ZBKB"
    "xnor\t%0,%1,%2"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "<X:MODE>")])
  
! (define_insn "*<bitmanip_optab>si2"
    [(set (match_operand:SI 0 "register_operand" "=r")
          (clz_ctz_pcnt:SI (match_operand:SI 1 "register_operand" "r")))]
    "TARGET_ZBB"
!   "<bitmanip_insn>%~\t%0,%1"
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "SI")])
  
***************
*** 137,143 ****
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "SI")])
  
! (define_insn "<bitmanip_optab>di2"
    [(set (match_operand:DI 0 "register_operand" "=r")
          (clz_ctz_pcnt:DI (match_operand:DI 1 "register_operand" "r")))]
    "TARGET_64BIT && TARGET_ZBB"
--- 253,259 ----
    [(set_attr "type" "bitmanip")
     (set_attr "mode" "SI")])
  
! (define_insn "*<bitmanip_optab>di2"
    [(set (match_operand:DI 0 "register_operand" "=r")
          (clz_ctz_pcnt:DI (match_operand:DI 1 "register_operand" "r")))]
    "TARGET_64BIT && TARGET_ZBB"
***************
*** 177,203 ****
    [(set_attr "type" "bitmanip,load")
     (set_attr "mode" "HI")])
  
! (define_insn "rotrsi3"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(rotatert:SI (match_operand:SI 1 "register_operand" "r")
  		     (match_operand:QI 2 "arith_operand" "rI")))]
!   "TARGET_ZBB"
!   { return TARGET_64BIT ? "ror%i2w\t%0,%1,%2" : "ror%i2\t%0,%1,%2"; }
    [(set_attr "type" "bitmanip")])
  
! (define_insn "rotrdi3"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(rotatert:DI (match_operand:DI 1 "register_operand" "r")
  		     (match_operand:QI 2 "arith_operand" "rI")))]
!   "TARGET_64BIT && TARGET_ZBB"
    "ror%i2\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! (define_insn "rotrsi3_sext"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(sign_extend:DI (rotatert:SI (match_operand:SI 1 "register_operand" "r")
  				     (match_operand:QI 2 "register_operand" "r"))))]
!   "TARGET_64BIT && TARGET_ZBB"
    "rorw\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
--- 293,329 ----
    [(set_attr "type" "bitmanip,load")
     (set_attr "mode" "HI")])
  
! (define_expand "rotr<mode>3"
!   [(set (match_operand:GPR 0 "register_operand")
! 	(rotatert:GPR (match_operand:GPR 1 "register_operand")
! 		     (match_operand:QI 2 "arith_operand")))]
!   "TARGET_ZBB || TARGET_XTHEADBB"
! {
!   if (TARGET_XTHEADBB && !immediate_operand (operands[2], VOIDmode))
!     FAIL;
! })
! 
! (define_insn "*rotrsi3"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(rotatert:SI (match_operand:SI 1 "register_operand" "r")
  		     (match_operand:QI 2 "arith_operand" "rI")))]
!   "TARGET_ZBB || TARGET_ZBKB"
!   "ror%i2%~\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! (define_insn "*rotrdi3"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(rotatert:DI (match_operand:DI 1 "register_operand" "r")
  		     (match_operand:QI 2 "arith_operand" "rI")))]
!   "TARGET_64BIT && (TARGET_ZBB || TARGET_ZBKB)"
    "ror%i2\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! (define_insn "*rotrsi3_sext"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(sign_extend:DI (rotatert:SI (match_operand:SI 1 "register_operand" "r")
  				     (match_operand:QI 2 "register_operand" "r"))))]
!   "TARGET_64BIT && (TARGET_ZBB || TARGET_ZBKB)"
    "rorw\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
***************
*** 205,219 ****
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(rotate:SI (match_operand:SI 1 "register_operand" "r")
  		   (match_operand:QI 2 "register_operand" "r")))]
!   "TARGET_ZBB"
!   { return TARGET_64BIT ? "rolw\t%0,%1,%2" : "rol\t%0,%1,%2"; }
    [(set_attr "type" "bitmanip")])
  
  (define_insn "rotldi3"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(rotate:DI (match_operand:DI 1 "register_operand" "r")
  		   (match_operand:QI 2 "register_operand" "r")))]
!   "TARGET_64BIT && TARGET_ZBB"
    "rol\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
--- 331,345 ----
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(rotate:SI (match_operand:SI 1 "register_operand" "r")
  		   (match_operand:QI 2 "register_operand" "r")))]
!   "TARGET_ZBB || TARGET_ZBKB"
!   "rol%~\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
  (define_insn "rotldi3"
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(rotate:DI (match_operand:DI 1 "register_operand" "r")
  		   (match_operand:QI 2 "register_operand" "r")))]
!   "TARGET_64BIT && (TARGET_ZBB || TARGET_ZBKB)"
    "rol\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
***************
*** 221,245 ****
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(sign_extend:DI (rotate:SI (match_operand:SI 1 "register_operand" "r")
  				   (match_operand:QI 2 "register_operand" "r"))))]
!   "TARGET_64BIT && TARGET_ZBB"
    "rolw\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! (define_insn "bswap<mode>2"
    [(set (match_operand:X 0 "register_operand" "=r")
          (bswap:X (match_operand:X 1 "register_operand" "r")))]
!   "TARGET_64BIT && TARGET_ZBB"
    "rev8\t%0,%1"
    [(set_attr "type" "bitmanip")])
  
  (define_insn "<bitmanip_optab><mode>3"
    [(set (match_operand:X 0 "register_operand" "=r")
          (bitmanip_minmax:X (match_operand:X 1 "register_operand" "r")
! 			   (match_operand:X 2 "register_operand" "r")))]
    "TARGET_ZBB"
!   "<bitmanip_insn>\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
  ;; ZBS extension.
  
  (define_insn "*bset<mode>"
--- 347,431 ----
    [(set (match_operand:DI 0 "register_operand" "=r")
  	(sign_extend:DI (rotate:SI (match_operand:SI 1 "register_operand" "r")
  				   (match_operand:QI 2 "register_operand" "r"))))]
!   "TARGET_64BIT && (TARGET_ZBB || TARGET_ZBKB)"
    "rolw\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! ;; orc.b (or-combine) is added as an unspec for the benefit of the support
! ;; for optimized string functions (such as strcmp).
! (define_insn "orcb<mode>2"
!   [(set (match_operand:X 0 "register_operand" "=r")
! 	(unspec:X [(match_operand:X 1 "register_operand" "r")] UNSPEC_ORC_B))]
!   "TARGET_ZBB"
!   "orc.b\t%0,%1")
! 
! (define_expand "bswapdi2"
!   [(set (match_operand:DI 0 "register_operand")
! 	(bswap:DI (match_operand:DI 1 "register_operand")))]
!   "TARGET_64BIT && (TARGET_ZBB || TARGET_XTHEADBB)")
! 
! (define_expand "bswapsi2"
!   [(set (match_operand:SI 0 "register_operand")
! 	(bswap:SI (match_operand:SI 1 "register_operand")))]
!   "(!TARGET_64BIT && TARGET_ZBB) || TARGET_XTHEADBB")
! 
! (define_insn "*bswap<mode>2"
    [(set (match_operand:X 0 "register_operand" "=r")
          (bswap:X (match_operand:X 1 "register_operand" "r")))]
!   "TARGET_ZBB || TARGET_ZBKB"
    "rev8\t%0,%1"
    [(set_attr "type" "bitmanip")])
  
+ ;; HI bswap can be emulated using SI/DI bswap followed
+ ;; by a logical shift right
+ ;; SI bswap for TARGET_64BIT is already similarly in
+ ;; the common code.
+ (define_expand "bswaphi2"
+   [(set (match_operand:HI 0 "register_operand" "=r")
+         (bswap:HI (match_operand:HI 1 "register_operand" "r")))]
+   "TARGET_ZBB"
+ {
+   rtx tmp = gen_reg_rtx (word_mode);
+   rtx newop1 = gen_lowpart (word_mode, operands[1]);
+   if (TARGET_64BIT)
+     emit_insn (gen_bswapdi2 (tmp, newop1));
+   else
+     emit_insn (gen_bswapsi2 (tmp, newop1));
+   rtx tmp1 = gen_reg_rtx (word_mode);
+   if (TARGET_64BIT)
+     emit_insn (gen_lshrdi3 (tmp1, tmp, GEN_INT (64 - 16)));
+   else
+     emit_insn (gen_lshrsi3 (tmp1, tmp, GEN_INT (32 - 16)));
+   emit_move_insn (operands[0], gen_lowpart (HImode, tmp1));
+   DONE;
+ })
+ 
  (define_insn "<bitmanip_optab><mode>3"
    [(set (match_operand:X 0 "register_operand" "=r")
          (bitmanip_minmax:X (match_operand:X 1 "register_operand" "r")
! 			   (match_operand:X 2 "reg_or_0_operand" "rJ")))]
    "TARGET_ZBB"
!   "<bitmanip_insn>\t%0,%1,%z2"
    [(set_attr "type" "bitmanip")])
  
+ ;; Optimize the common case of a SImode min/max against a constant
+ ;; that is safe both for sign- and zero-extension.
+ (define_insn_and_split "*minmax"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(sign_extend:DI
+ 	  (subreg:SI
+ 	    (bitmanip_minmax:DI (zero_extend:DI (match_operand:SI 1 "register_operand" "r"))
+ 						(match_operand:DI 2 "immediate_operand" "i"))
+ 	   0)))
+    (clobber (match_scratch:DI 3 "=&r"))
+    (clobber (match_scratch:DI 4 "=&r"))]
+   "TARGET_64BIT && TARGET_ZBB && sext_hwi (INTVAL (operands[2]), 32) >= 0"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 3) (sign_extend:DI (match_dup 1)))
+    (set (match_dup 4) (match_dup 2))
+    (set (match_dup 0) (<minmax_optab>:DI (match_dup 3) (match_dup 4)))])
+ 
  ;; ZBS extension.
  
  (define_insn "*bset<mode>"
***************
*** 256,262 ****
  	(ior:X (ashift:X (const_int 1)
  			 (subreg:QI
  			  (and:X (match_operand:X 2 "register_operand" "r")
! 				 (match_operand 3 "<X:shiftm1>" "i")) 0))
  	       (match_operand:X 1 "register_operand" "r")))]
    "TARGET_ZBS"
    "bset\t%0,%1,%2"
--- 442,448 ----
  	(ior:X (ashift:X (const_int 1)
  			 (subreg:QI
  			  (and:X (match_operand:X 2 "register_operand" "r")
! 				 (match_operand 3 "<X:shiftm1>" "<X:shiftm1p>")) 0))
  	       (match_operand:X 1 "register_operand" "r")))]
    "TARGET_ZBS"
    "bset\t%0,%1,%2"
***************
*** 275,281 ****
  	(ashift:X (const_int 1)
  		  (subreg:QI
  		   (and:X (match_operand:X 1 "register_operand" "r")
! 			  (match_operand 2 "<X:shiftm1>" "i")) 0)))]
    "TARGET_ZBS"
    "bset\t%0,x0,%1"
    [(set_attr "type" "bitmanip")])
--- 461,467 ----
  	(ashift:X (const_int 1)
  		  (subreg:QI
  		   (and:X (match_operand:X 1 "register_operand" "r")
! 			  (match_operand 2 "<X:shiftm1>" "<X:shiftm1p>")) 0)))]
    "TARGET_ZBS"
    "bset\t%0,x0,%1"
    [(set_attr "type" "bitmanip")])
***************
*** 283,293 ****
  (define_insn "*bseti<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(ior:X (match_operand:X 1 "register_operand" "r")
! 	       (match_operand 2 "single_bit_mask_operand" "i")))]
    "TARGET_ZBS"
    "bseti\t%0,%1,%S2"
    [(set_attr "type" "bitmanip")])
  
  (define_insn "*bclr<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(and:X (rotate:X (const_int -2)
--- 469,491 ----
  (define_insn "*bseti<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(ior:X (match_operand:X 1 "register_operand" "r")
! 	       (match_operand:X 2 "single_bit_mask_operand" "DbS")))]
    "TARGET_ZBS"
    "bseti\t%0,%1,%S2"
    [(set_attr "type" "bitmanip")])
  
+ ;; As long as the SImode operand is not a partial subreg, we can use a
+ ;; bseti without postprocessing, as the middle end is smart enough to
+ ;; stay away from the signbit.
+ (define_insn "*bsetidisi"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(ior:DI (sign_extend:DI (match_operand:SI 1 "register_operand" "r"))
+ 		(match_operand 2 "single_bit_mask_operand" "i")))]
+   "TARGET_ZBS && TARGET_64BIT
+    && !partial_subreg_p (operands[1])"
+   "bseti\t%0,%1,%S2"
+   [(set_attr "type" "bitmanip")])
+ 
  (define_insn "*bclr<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(and:X (rotate:X (const_int -2)
***************
*** 300,310 ****
  (define_insn "*bclri<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(and:X (match_operand:X 1 "register_operand" "r")
! 	       (match_operand 2 "not_single_bit_mask_operand" "i")))]
    "TARGET_ZBS"
    "bclri\t%0,%1,%T2"
    [(set_attr "type" "bitmanip")])
  
  (define_insn "*binv<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(xor:X (ashift:X (const_int 1)
--- 498,546 ----
  (define_insn "*bclri<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(and:X (match_operand:X 1 "register_operand" "r")
! 	       (match_operand:X 2 "not_single_bit_mask_operand" "DnS")))]
    "TARGET_ZBS"
    "bclri\t%0,%1,%T2"
    [(set_attr "type" "bitmanip")])
  
+ ;; In case we have "val & ~IMM" where ~IMM has 2 bits set.
+ (define_insn_and_split "*bclri<mode>_nottwobits"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(and:X (match_operand:X 1 "register_operand" "r")
+ 	       (match_operand:X 2 "const_nottwobits_operand" "i")))]
+   "TARGET_ZBS && !paradoxical_subreg_p (operands[1])"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 0) (and:X (match_dup 1) (match_dup 3)))
+    (set (match_dup 0) (and:X (match_dup 0) (match_dup 4)))]
+ {
+ 	unsigned HOST_WIDE_INT bits = ~UINTVAL (operands[2]);
+ 	unsigned HOST_WIDE_INT topbit = HOST_WIDE_INT_1U << floor_log2 (bits);
+ 
+ 	operands[3] = GEN_INT (~bits | topbit);
+ 	operands[4] = GEN_INT (~topbit);
+ })
+ 
+ ;; In case of a paradoxical subreg, the sign bit and the high bits are
+ ;; not allowed to be changed
+ (define_insn_and_split "*bclridisi_nottwobits"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(and:DI (match_operand:DI 1 "register_operand" "r")
+ 		(match_operand:DI 2 "const_nottwobits_operand" "i")))]
+   "TARGET_64BIT && TARGET_ZBS
+    && clz_hwi (~UINTVAL (operands[2])) > 33"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 0) (and:DI (match_dup 1) (match_dup 3)))
+    (set (match_dup 0) (and:DI (match_dup 0) (match_dup 4)))]
+ {
+ 	unsigned HOST_WIDE_INT bits = ~UINTVAL (operands[2]);
+ 	unsigned HOST_WIDE_INT topbit = HOST_WIDE_INT_1U << floor_log2 (bits);
+ 
+ 	operands[3] = GEN_INT (~bits | topbit);
+ 	operands[4] = GEN_INT (~topbit);
+ })
+ 
  (define_insn "*binv<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(xor:X (ashift:X (const_int 1)
***************
*** 317,323 ****
  (define_insn "*binvi<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(xor:X (match_operand:X 1 "register_operand" "r")
! 	       (match_operand 2 "single_bit_mask_operand" "i")))]
    "TARGET_ZBS"
    "binvi\t%0,%1,%S2"
    [(set_attr "type" "bitmanip")])
--- 553,559 ----
  (define_insn "*binvi<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(xor:X (match_operand:X 1 "register_operand" "r")
! 	       (match_operand:X 2 "single_bit_mask_operand" "DbS")))]
    "TARGET_ZBS"
    "binvi\t%0,%1,%S2"
    [(set_attr "type" "bitmanip")])
***************
*** 332,342 ****
    "bext\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! (define_insn "*bexti"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(zero_extract:X (match_operand:X 1 "register_operand" "r")
  			(const_int 1)
! 			(match_operand 2 "immediate_operand" "i")))]
    "TARGET_ZBS"
    "bexti\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
--- 568,697 ----
    "bext\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
  
! ;; When performing `(a & (1UL << bitno)) ? 0 : -1` the combiner
! ;; usually has the `bitno` typed as X-mode (i.e. no further
! ;; zero-extension is performed around the bitno).
! (define_insn "*bext<mode>"
    [(set (match_operand:X 0 "register_operand" "=r")
  	(zero_extract:X (match_operand:X 1 "register_operand" "r")
  			(const_int 1)
! 			(match_operand:X 2 "register_operand" "r")))]
    "TARGET_ZBS"
+   "bext\t%0,%1,%2"
+   [(set_attr "type" "bitmanip")])
+ 
+ (define_insn "*bexti"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(zero_extract:X (match_operand:X 1 "register_operand" "r")
+ 			(const_int 1)
+ 			(match_operand 2 "immediate_operand" "n")))]
+   "TARGET_ZBS && UINTVAL (operands[2]) < GET_MODE_BITSIZE (<MODE>mode)"
    "bexti\t%0,%1,%2"
    [(set_attr "type" "bitmanip")])
+ 
+ ;; Split for "(a & (1 << BIT_NO)) ? 0 : 1":
+ ;; We avoid reassociating "(~(a >> BIT_NO)) & 1" into "((~a) >> BIT_NO) & 1",
+ ;; so we don't have to use a temporary.  Instead we extract the bit and then
+ ;; invert bit 0 ("a ^ 1") only.
+ (define_split
+   [(set (match_operand:X 0 "register_operand")
+ 	(and:X (not:X (lshiftrt:X (match_operand:X 1 "register_operand")
+ 				  (subreg:QI (match_operand:X 2 "register_operand") 0)))
+ 	       (const_int 1)))]
+   "TARGET_ZBS"
+   [(set (match_dup 0) (zero_extract:X (match_dup 1)
+ 				      (const_int 1)
+ 				      (match_dup 2)))
+    (set (match_dup 0) (xor:X (match_dup 0) (const_int 1)))])
+ 
+ ;; We can create a polarity-reversed mask (i.e. bit N -> { set = 0, clear = -1 })
+ ;; using a bext(i) followed by an addi instruction.
+ ;; This splits the canonical representation of "(a & (1 << BIT_NO)) ? 0 : -1".
+ (define_split
+   [(set (match_operand:GPR 0 "register_operand")
+        (neg:GPR (eq:GPR (zero_extract:GPR (match_operand:GPR 1 "register_operand")
+                                           (const_int 1)
+                                           (match_operand 2))
+                         (const_int 0))))]
+   "TARGET_ZBS"
+   [(set (match_dup 0) (zero_extract:GPR (match_dup 1) (const_int 1) (match_dup 2)))
+    (set (match_dup 0) (plus:GPR (match_dup 0) (const_int -1)))])
+ 
+ ;; Catch those cases where we can use a bseti/binvi + ori/xori or
+ ;; bseti/binvi + bseti/binvi instead of a lui + addi + or/xor sequence.
+ (define_insn_and_split "*<or_optab>i<mode>_extrabit"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(any_or:X (match_operand:X 1 "register_operand" "r")
+ 	          (match_operand:X 2 "uimm_extra_bit_or_twobits" "i")))]
+   "TARGET_ZBS"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 0) (<or_optab>:X (match_dup 1) (match_dup 3)))
+    (set (match_dup 0) (<or_optab>:X (match_dup 0) (match_dup 4)))]
+ {
+ 	unsigned HOST_WIDE_INT bits = UINTVAL (operands[2]);
+ 	unsigned HOST_WIDE_INT topbit = HOST_WIDE_INT_1U << floor_log2 (bits);
+ 
+ 	operands[3] = GEN_INT (bits &~ topbit);
+ 	operands[4] = GEN_INT (topbit);
+ })
+ 
+ ;; Same to use blcri + andi and blcri + bclri
+ (define_insn_and_split "*andi<mode>_extrabit"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(and:X (match_operand:X 1 "register_operand" "r")
+ 	       (match_operand:X 2 "not_uimm_extra_bit_or_nottwobits" "i")))]
+   "TARGET_ZBS"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 0) (and:X (match_dup 1) (match_dup 3)))
+    (set (match_dup 0) (and:X (match_dup 0) (match_dup 4)))]
+ {
+ 	unsigned HOST_WIDE_INT bits = UINTVAL (operands[2]);
+ 	unsigned HOST_WIDE_INT topbit = HOST_WIDE_INT_1U << floor_log2 (~bits);
+ 
+ 	operands[3] = GEN_INT (bits | topbit);
+ 	operands[4] = GEN_INT (~topbit);
+ })
+ 
+ ;; IF_THEN_ELSE: test for 2 bits of opposite polarity
+ (define_insn_and_split "*branch<X:mode>_mask_twobits_equals_singlebit"
+   [(set (pc)
+ 	(if_then_else
+ 	  (match_operator 1 "equality_operator"
+ 	    [(and:X (match_operand:X 2 "register_operand" "r")
+ 		    (match_operand:X 3 "const_twobits_not_arith_operand" "i"))
+ 	     (match_operand:X 4 "single_bit_mask_operand" "i")])
+ 	 (label_ref (match_operand 0 "" ""))
+ 	 (pc)))
+    (clobber (match_scratch:X 5 "=&r"))
+    (clobber (match_scratch:X 6 "=&r"))]
+   "TARGET_ZBS && TARGET_ZBB"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 5) (zero_extract:X (match_dup 2)
+ 				      (const_int 1)
+ 				      (match_dup 8)))
+    (set (match_dup 6) (zero_extract:X (match_dup 2)
+ 				      (const_int 1)
+ 				      (match_dup 9)))
+    (set (match_dup 6) (and:X (not:X (match_dup 6)) (match_dup 5)))
+    (set (pc) (if_then_else (match_op_dup 1 [(match_dup 6) (const_int 0)])
+ 			   (label_ref (match_dup 0))
+ 			   (pc)))]
+ {
+    unsigned HOST_WIDE_INT twobits_mask = UINTVAL (operands[3]);
+    unsigned HOST_WIDE_INT singlebit_mask = UINTVAL (operands[4]);
+ 
+    /* We should never see an unsatisfiable condition.  */
+    gcc_assert (twobits_mask & singlebit_mask);
+ 
+    int setbit = ctz_hwi (singlebit_mask);
+    int clearbit = ctz_hwi (twobits_mask & ~singlebit_mask);
+ 
+    operands[1] = gen_rtx_fmt_ee (GET_CODE (operands[1]) == NE ? EQ : NE,
+ 				 <X:MODE>mode, operands[6], GEN_INT(0));
+ 
+    operands[8] = GEN_INT (setbit);
+    operands[9] = GEN_INT (clearbit);
+ })
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/constraints.md gcc-13.1.0/gcc/config/riscv/constraints.md
*** gcc-12.2.0/gcc/config/riscv/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for RISC-V target.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  ;;
--- 1,5 ----
  ;; Constraint definitions for RISC-V target.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  ;;
***************
*** 21,28 ****
  
  ;; Register constraints
  
! (define_register_constraint "f" "TARGET_HARD_FLOAT ? FP_REGS : NO_REGS"
!   "A floating-point register (if available).")
  
  (define_register_constraint "j" "SIBCALL_REGS"
    "@internal")
--- 21,29 ----
  
  ;; Register constraints
  
! (define_register_constraint "f" "TARGET_HARD_FLOAT ? FP_REGS :
!   (TARGET_ZFINX ? GR_REGS : NO_REGS)"
!   "A floating-point register (if available, reuse GPR as FPR when use zfinx).")
  
  (define_register_constraint "j" "SIBCALL_REGS"
    "@internal")
***************
*** 54,59 ****
--- 55,96 ----
    (and (match_code "const_int")
         (match_test "LUI_OPERAND (ival)")))
  
+ (define_constraint "Ds3"
+   "@internal
+    1, 2 or 3 immediate"
+   (and (match_code "const_int")
+        (match_test "IN_RANGE (ival, 1, 3)")))
+ 
+ (define_constraint "DsS"
+   "@internal
+    31 immediate"
+   (and (match_code "const_int")
+        (match_test "ival == 31")))
+ 
+ (define_constraint "DsD"
+   "@internal
+    63 immediate"
+   (and (match_code "const_int")
+        (match_test "ival == 63")))
+ 
+ (define_constraint "DbS"
+   "@internal"
+   (and (match_code "const_int")
+        (match_test "SINGLE_BIT_MASK_OPERAND (ival)")))
+ 
+ (define_constraint "DnS"
+   "@internal"
+   (and (match_code "const_int")
+        (match_test "SINGLE_BIT_MASK_OPERAND (~ival)")))
+ 
+ (define_constraint "D03"
+   "0, 1, 2 or 3 immediate"
+   (match_test "IN_RANGE (ival, 0, 3)"))
+ 
+ (define_constraint "DsA"
+   "0 - 10 immediate"
+   (match_test "IN_RANGE (ival, 0, 10)"))
+ 
  ;; Floating-point constant +0.0, used for FCVT-based moves when FMV is
  ;; not available in RV32.
  (define_constraint "G"
***************
*** 80,82 ****
--- 117,190 ----
     A constant @code{move_operand}."
    (and (match_operand 0 "move_operand")
         (match_test "CONSTANT_P (op)")))
+ 
+ ;; Vector constraints.
+ 
+ (define_register_constraint "vr" "TARGET_VECTOR ? V_REGS : NO_REGS"
+   "A vector register (if available).")
+ 
+ (define_register_constraint "vd" "TARGET_VECTOR ? VD_REGS : NO_REGS"
+   "A vector register except mask register (if available).")
+ 
+ (define_register_constraint "vm" "TARGET_VECTOR ? VM_REGS : NO_REGS"
+   "A vector mask register (if available).")
+ 
+ ;; This constraint is used to match instruction "csrr %0, vlenb" which is generated in "mov<mode>".
+ ;; VLENB is a run-time constant which represent the vector register length in bytes.
+ ;; BYTES_PER_RISCV_VECTOR represent runtime invariant of vector register length in bytes.
+ ;; We should only allow the poly equal to BYTES_PER_RISCV_VECTOR.
+ (define_constraint "vp"
+   "POLY_INT"
+   (and (match_code "const_poly_int")
+        (match_test "known_eq (rtx_to_poly_int64 (op), BYTES_PER_RISCV_VECTOR)")))
+ 
+ (define_constraint "vu"
+   "A undefined vector value."
+   (and (match_code "unspec")
+        (match_test "XINT (op, 1) == UNSPEC_VUNDEF")))
+ 
+ (define_constraint "vi"
+   "A vector 5-bit signed immediate."
+   (and (match_code "const_vector")
+        (match_test "riscv_vector::const_vec_all_same_in_range_p (op, -16, 15)")))
+ 
+ (define_constraint "vj"
+   "A vector negated 5-bit signed immediate."
+   (and (match_code "const_vector")
+        (match_test "riscv_vector::const_vec_all_same_in_range_p (op, -15, 16)")))
+ 
+ (define_constraint "vk"
+   "A vector 5-bit unsigned immediate."
+   (and (match_code "const_vector")
+        (match_test "riscv_vector::const_vec_all_same_in_range_p (op, 0, 31)")))
+ 
+ (define_constraint "Wc0"
+   "@internal
+  A constraint that matches a vector of immediate all zeros."
+  (and (match_code "const_vector")
+       (match_test "op == CONST0_RTX (GET_MODE (op))")))
+ 
+ (define_constraint "Wc1"
+   "@internal
+  A constraint that matches a vector of immediate all ones."
+  (and (match_code "const_vector")
+       (match_test "op == CONSTM1_RTX (GET_MODE (op))")))
+ 
+ (define_constraint "Wb1"
+   "@internal
+  A constraint that matches a BOOL vector of {...,0,...0,1}"
+  (and (match_code "const_vector")
+       (match_test "rtx_equal_p (op, riscv_vector::gen_scalar_move_mask (GET_MODE (op)))")))
+ 
+ (define_memory_constraint "Wdm"
+   "Vector duplicate memory operand"
+   (and (match_code "mem")
+        (match_code "reg" "0")))
+ 
+ ;; Vendor ISA extension constraints.
+ 
+ (define_register_constraint "th_f_fmv" "TARGET_XTHEADFMV ? FP_REGS : NO_REGS"
+   "A floating-point register for XTheadFmv.")
+ 
+ (define_register_constraint "th_r_fmv" "TARGET_XTHEADFMV ? GR_REGS : NO_REGS"
+   "An integer register for XTheadFmv.")
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/crypto.md gcc-13.1.0/gcc/config/riscv/crypto.md
*** gcc-12.2.0/gcc/config/riscv/crypto.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/crypto.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,435 ----
+ ;; Machine description for RISC-V Scalar Cryptography extensions.
+ ;; Copyright (C) 2023 Free Software Foundation, Inc.
+ 
+ ;; This file is part of GCC.
+ 
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ 
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ 
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ (define_c_enum "unspec" [
+     ;; Zbkb unspecs
+     UNSPEC_BREV8
+     UNSPEC_ZIP
+     UNSPEC_UNZIP
+     UNSPEC_PACK
+     UNSPEC_PACKH
+     UNSPEC_PACKW
+ 
+     ;; Zbkc unspecs
+     UNSPEC_CLMUL
+     UNSPEC_CLMULH
+ 
+     ;; Zbkx unspecs
+     UNSPEC_XPERM8
+     UNSPEC_XPERM4
+ 
+     ;; Zknd unspecs
+     UNSPEC_AES_DSI
+     UNSPEC_AES_DSMI
+     UNSPEC_AES_DS
+     UNSPEC_AES_DSM
+     UNSPEC_AES_IM
+     UNSPEC_AES_KS1I
+     UNSPEC_AES_KS2
+ 
+     ;; Zkne unspecs
+     UNSPEC_AES_ES
+     UNSPEC_AES_ESM
+     UNSPEC_AES_ESI
+     UNSPEC_AES_ESMI
+ 
+     ;; Zknh unspecs
+     UNSPEC_SHA_256_SIG0
+     UNSPEC_SHA_256_SIG1
+     UNSPEC_SHA_256_SUM0
+     UNSPEC_SHA_256_SUM1
+     UNSPEC_SHA_512_SIG0
+     UNSPEC_SHA_512_SIG0H
+     UNSPEC_SHA_512_SIG0L
+     UNSPEC_SHA_512_SIG1
+     UNSPEC_SHA_512_SIG1H
+     UNSPEC_SHA_512_SIG1L
+     UNSPEC_SHA_512_SUM0
+     UNSPEC_SHA_512_SUM0R
+     UNSPEC_SHA_512_SUM1
+     UNSPEC_SHA_512_SUM1R
+ 
+     ;; Zksh unspecs
+     UNSPEC_SM3_P0
+     UNSPEC_SM3_P1
+ 
+     ;; Zksed unspecs
+     UNSPEC_SM4_ED
+     UNSPEC_SM4_KS
+ ])
+ 
+ ;; ZBKB extension
+ (define_insn "riscv_brev8_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_BREV8))]
+   "TARGET_ZBKB"
+   "brev8\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_zip"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+         (unspec:SI [(match_operand:SI 1 "register_operand" "r")]
+                   UNSPEC_ZIP))]
+   "TARGET_ZBKB && !TARGET_64BIT"
+   "zip\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_unzip"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+         (unspec:SI [(match_operand:SI 1 "register_operand" "r")]
+                   UNSPEC_UNZIP))]
+   "TARGET_ZBKB && !TARGET_64BIT"
+   "unzip\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_pack_<X:mode><HISI:mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:HISI 1 "register_operand" "r")
+                   (match_operand:HISI 2 "register_operand" "r")]
+                   UNSPEC_PACK))]
+   "TARGET_ZBKB"
+   "pack\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_packh_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:QI 1 "register_operand" "r")
+                   (match_operand:QI 2 "register_operand" "r")]
+                   UNSPEC_PACKH))]
+   "TARGET_ZBKB"
+   "packh\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_packw"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:HI 1 "register_operand" "r")
+                   (match_operand:HI 2 "register_operand" "r")]
+                   UNSPEC_PACKW))]
+   "TARGET_ZBKB && TARGET_64BIT"
+   "packw\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZBKC extension
+ 
+ (define_insn "riscv_clmul_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")
+                   (match_operand:X 2 "register_operand" "r")]
+                   UNSPEC_CLMUL))]
+   "TARGET_ZBKC"
+   "clmul\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_clmulh_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")
+                   (match_operand:X 2 "register_operand" "r")]
+                   UNSPEC_CLMULH))]
+   "TARGET_ZBKC"
+   "clmulh\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZBKX extension
+ 
+ (define_insn "riscv_xperm4_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")
+                   (match_operand:X 2 "register_operand" "r")]
+                   UNSPEC_XPERM4))]
+   "TARGET_ZBKX"
+   "xperm4\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_xperm8_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")
+                   (match_operand:X 2 "register_operand" "r")]
+                   UNSPEC_XPERM8))]
+   "TARGET_ZBKX"
+   "xperm8\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZKND extension
+ 
+ (define_insn "riscv_aes32dsi"
+   [(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" "D03")]
+                    UNSPEC_AES_DSI))]
+   "TARGET_ZKND && !TARGET_64BIT"
+   "aes32dsi\t%0,%1,%2,%3"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes32dsmi"
+   [(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" "D03")]
+                    UNSPEC_AES_DSMI))]
+   "TARGET_ZKND && !TARGET_64BIT"
+   "aes32dsmi\t%0,%1,%2,%3"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64ds"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")
+                    (match_operand:DI 2 "register_operand" "r")]
+                    UNSPEC_AES_DS))]
+   "TARGET_ZKND && TARGET_64BIT"
+   "aes64ds\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64dsm"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")
+                    (match_operand:DI 2 "register_operand" "r")]
+                    UNSPEC_AES_DSM))]
+   "TARGET_ZKND && TARGET_64BIT"
+   "aes64dsm\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64im"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
+                    UNSPEC_AES_IM))]
+   "TARGET_ZKND && TARGET_64BIT"
+   "aes64im\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64ks1i"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")
+                    (match_operand:SI 2 "register_operand" "DsA")]
+                    UNSPEC_AES_KS1I))]
+   "(TARGET_ZKND || TARGET_ZKNE) && TARGET_64BIT"
+   "aes64ks1i\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64ks2"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")
+                    (match_operand:DI 2 "register_operand" "r")]
+                    UNSPEC_AES_KS2))]
+   "(TARGET_ZKND || TARGET_ZKNE) && TARGET_64BIT"
+   "aes64ks2\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZKNE extension
+ 
+ (define_insn "riscv_aes32esi"
+   [(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" "D03")]
+                    UNSPEC_AES_ESI))]
+   "TARGET_ZKNE && !TARGET_64BIT"
+   "aes32esi\t%0,%1,%2,%3"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes32esmi"
+   [(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" "D03")]
+                    UNSPEC_AES_ESMI))]
+   "TARGET_ZKNE && !TARGET_64BIT"
+   "aes32esmi\t%0,%1,%2,%3"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64es"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")
+                    (match_operand:DI 2 "register_operand" "r")]
+                    UNSPEC_AES_ES))]
+   "TARGET_ZKNE && TARGET_64BIT"
+   "aes64es\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_aes64esm"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")
+                    (match_operand:DI 2 "register_operand" "r")]
+                    UNSPEC_AES_ESM))]
+   "TARGET_ZKNE && TARGET_64BIT"
+   "aes64esm\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZKNH - SHA256
+ 
+ (define_insn "riscv_sha256sig0_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_SHA_256_SIG0))]
+   "TARGET_ZKNH"
+   "sha256sig0\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha256sig1_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_SHA_256_SIG1))]
+   "TARGET_ZKNH"
+   "sha256sig1\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha256sum0_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_SHA_256_SUM0))]
+   "TARGET_ZKNH"
+   "sha256sum0\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha256sum1_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_SHA_256_SUM1))]
+   "TARGET_ZKNH"
+   "sha256sum1\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZKNH - SHA512
+ 
+ (define_insn "riscv_sha512sig0h"
+   [(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_SHA_512_SIG0H))]
+   "TARGET_ZKNH && !TARGET_64BIT"
+   "sha512sig0h\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sig0l"
+   [(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_SHA_512_SIG0L))]
+   "TARGET_ZKNH && !TARGET_64BIT"
+   "sha512sig0l\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sig1h"
+   [(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_SHA_512_SIG1H))]
+   "TARGET_ZKNH && !TARGET_64BIT"
+   "sha512sig1h\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sig1l"
+   [(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_SHA_512_SIG1L))]
+   "TARGET_ZKNH && !TARGET_64BIT"
+   "sha512sig1l\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sum0r"
+   [(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_SHA_512_SUM0R))]
+   "TARGET_ZKNH && !TARGET_64BIT"
+   "sha512sum0r\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sum1r"
+   [(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_SHA_512_SUM1R))]
+   "TARGET_ZKNH && !TARGET_64BIT"
+   "sha512sum1r\t%0,%1,%2"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sig0"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
+                    UNSPEC_SHA_512_SIG0))]
+   "TARGET_ZKNH && TARGET_64BIT"
+   "sha512sig0\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sig1"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
+                    UNSPEC_SHA_512_SIG1))]
+   "TARGET_ZKNH && TARGET_64BIT"
+   "sha512sig1\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sum0"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
+                    UNSPEC_SHA_512_SUM0))]
+   "TARGET_ZKNH && TARGET_64BIT"
+   "sha512sum0\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sha512sum1"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+         (unspec:DI [(match_operand:DI 1 "register_operand" "r")]
+                    UNSPEC_SHA_512_SUM1))]
+   "TARGET_ZKNH && TARGET_64BIT"
+   "sha512sum1\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+  ;; ZKSH
+ 
+ (define_insn "riscv_sm3p0_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_SM3_P0))]
+   "TARGET_ZKSH"
+   "sm3p0\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sm3p1_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")]
+                   UNSPEC_SM3_P1))]
+   "TARGET_ZKSH"
+   "sm3p1\t%0,%1"
+   [(set_attr "type" "crypto")])
+ 
+ ;; ZKSED
+ 
+ (define_insn "riscv_sm4ed_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")
+                   (match_operand:X 2 "register_operand" "r")
+                   (match_operand:SI 3 "register_operand" "D03")]
+                   UNSPEC_SM4_ED))]
+   "TARGET_ZKSED"
+   "sm4ed\t%0,%1,%2,%3"
+   [(set_attr "type" "crypto")])
+ 
+ (define_insn "riscv_sm4ks_<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+         (unspec:X [(match_operand:X 1 "register_operand" "r")
+                   (match_operand:X 2 "register_operand" "r")
+                   (match_operand:SI 3 "register_operand" "D03")]
+                   UNSPEC_SM4_KS))]
+   "TARGET_ZKSED"
+   "sm4ks\t%0,%1,%2,%3"
+   [(set_attr "type" "crypto")])
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/elf.h gcc-13.1.0/gcc/config/riscv/elf.h
*** gcc-12.2.0/gcc/config/riscv/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target macros for riscv*-elf targets.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Target macros for riscv*-elf targets.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 27,36 ****
  /* Link against Newlib libraries, because the ELF backend assumes Newlib.
     Handle the circular dependence between libc and libgloss. */
  #undef  LIB_SPEC
! #define LIB_SPEC "--start-group -lc %{!specs=nosys.specs:-lgloss} --end-group"
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC "crt0%O%s crtbegin%O%s"
  
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC "crtend%O%s"
--- 27,40 ----
  /* Link against Newlib libraries, because the ELF backend assumes Newlib.
     Handle the circular dependence between libc and libgloss. */
  #undef  LIB_SPEC
! #define LIB_SPEC \
!   "--start-group -lc %{!specs=nosys.specs:-lgloss} --end-group " \
!   "%{!nostartfiles:%{!nodefaultlibs:%{!nolibc:%{!nostdlib:%:riscv_multi_lib_check()}}}}"
  
  #undef  STARTFILE_SPEC
  #define STARTFILE_SPEC "crt0%O%s crtbegin%O%s"
  
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC "crtend%O%s"
+ 
+ #define RISCV_USE_CUSTOMISED_MULTI_LIB 1
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/freebsd.h gcc-13.1.0/gcc/config/riscv/freebsd.h
*** gcc-12.2.0/gcc/config/riscv/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RISC-V FreeBSD systems with ELF format.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RISC-V FreeBSD systems with ELF format.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/generic.md gcc-13.1.0/gcc/config/riscv/generic.md
*** gcc-12.2.0/gcc/config/riscv/generic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/generic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Generic DFA-based pipeline description for RISC-V targets.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  ;; Generic DFA-based pipeline description for RISC-V targets.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/genrvv-type-indexer.cc gcc-13.1.0/gcc/config/riscv/genrvv-type-indexer.cc
*** gcc-12.2.0/gcc/config/riscv/genrvv-type-indexer.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/genrvv-type-indexer.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,313 ----
+ /* Generate the RVV type indexer tables.
+    Copyright (C) 2023-2023 Free Software Foundation, Inc.
+ This file is part of GCC.
+ GCC is free software; you can redistribute it and/or modify it under
+ the terms of the GNU General Public License as published by the Free
+ Software Foundation; either version 3, or (at your option) any later
+ version.
+ GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+ WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ for more details.
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #include "bconfig.h"
+ #define INCLUDE_SSTREAM
+ #include "system.h"
+ #include "errors.h"
+ 
+ #include "coretypes.h"
+ 
+ #include <assert.h>
+ #include <math.h>
+ 
+ std::string
+ to_lmul (int lmul_log2)
+ {
+   std::stringstream lmul_str;
+   if (lmul_log2 >= 0)
+     lmul_str << "m";
+   else
+     {
+       lmul_str << "mf";
+       lmul_log2 = -lmul_log2;
+     }
+ 
+   lmul_str << (1 << lmul_log2);
+   return lmul_str.str ();
+ }
+ 
+ bool
+ valid_type (unsigned sew, int lmul_log2, bool float_p)
+ {
+   if (lmul_log2 > 3)
+     return false;
+ 
+   switch (sew)
+     {
+     case 8:
+       return lmul_log2 >= -3 && !float_p;
+     case 16:
+       return lmul_log2 >= -2 && !float_p;
+     case 32:
+       return lmul_log2 >= -1;
+     case 64:
+       return lmul_log2 >= 0;
+     default:
+       return false;
+     }
+ }
+ 
+ std::string
+ inttype (unsigned sew, int lmul_log2, bool unsigned_p)
+ {
+   if (!valid_type (sew, lmul_log2, /*float_t*/ false))
+     return "INVALID";
+ 
+   std::stringstream mode;
+   mode << "v";
+   if (unsigned_p)
+     mode << "u";
+   mode << "int" << sew << to_lmul (lmul_log2) << "_t";
+   return mode.str ();
+ }
+ 
+ std::string
+ floattype (unsigned sew, int lmul_log2)
+ {
+   if (!valid_type (sew, lmul_log2, /*float_t*/ true))
+     return "INVALID";
+ 
+   std::stringstream mode;
+   mode << "vfloat" << sew << to_lmul (lmul_log2) << "_t";
+   return mode.str ();
+ }
+ 
+ std::string
+ maskmode (unsigned sew, int lmul_log2)
+ {
+   if (!valid_type (sew, lmul_log2, /*float_t*/ false))
+     return "INVALID";
+ 
+   std::stringstream mode;
+ 
+   int mlen;
+   if (lmul_log2 >= 0)
+     mlen = sew / (1 << lmul_log2);
+   else
+     mlen = sew * (1 << -lmul_log2);
+ 
+   mode << "vbool" << mlen << "_t";
+   return mode.str ();
+ }
+ 
+ std::string
+ same_ratio_eew_type (unsigned sew, int lmul_log2, unsigned eew, bool unsigned_p,
+ 		     bool float_p)
+ {
+   if (!valid_type (sew, lmul_log2, float_p))
+     return "INVALID";
+ 
+   int elmul_log2;
+ 
+   if (sew == eew)
+     elmul_log2 = lmul_log2;
+   else if (sew > eew)
+     elmul_log2 = lmul_log2 - std::log2 (sew / eew);
+   else /* sew < eew */
+     elmul_log2 = lmul_log2 + std::log2 (eew / sew);
+ 
+   if (float_p)
+     return floattype (eew, elmul_log2);
+   else
+     return inttype (eew, elmul_log2, unsigned_p);
+ }
+ 
+ int
+ main (int argc, const char **argv)
+ {
+   // Require at least one argument.
+   if (argc < 2)
+     return 1;
+ 
+   FILE *fp = fopen (argv[1], "w");
+ 
+   if (!fp)
+     return 1;
+ 
+   fprintf (fp, "/* Generated by genrvv-type-indexer */\n");
+ 
+   for (unsigned vbool : {64, 32, 16, 8, 4, 2, 1})
+     {
+       std::stringstream mode;
+       mode << "vbool" << vbool << "_t";
+       fprintf (fp, "DEF_RVV_TYPE_INDEX (\n");
+       fprintf (fp, "  /*VECTOR*/ %s,\n", mode.str ().c_str ());
+       fprintf (fp, "  /*MASK*/ %s,\n", mode.str ().c_str ());
+       fprintf (fp, "  /*SIGNED*/ INVALID,\n");
+       fprintf (fp, "  /*UNSIGNED*/ INVALID,\n");
+       for (unsigned eew : {8, 16, 32, 64})
+ 	fprintf (fp, "  /*EEW%d_INDEX*/ INVALID,\n", eew);
+       fprintf (fp, "  /*SHIFT*/ INVALID,\n");
+       fprintf (fp, "  /*DOUBLE_TRUNC*/ INVALID,\n");
+       fprintf (fp, "  /*QUAD_TRUNC*/ INVALID,\n");
+       fprintf (fp, "  /*OCT_TRUNC*/ INVALID,\n");
+       fprintf (fp, "  /*DOUBLE_TRUNC_SCALAR*/ INVALID,\n");
+       fprintf (fp, "  /*DOUBLE_TRUNC_SIGNED*/ INVALID,\n");
+       fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED*/ INVALID,\n");
+       fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED_SCALAR*/ INVALID,\n");
+       fprintf (fp, "  /*DOUBLE_TRUNC_FLOAT*/ INVALID,\n");
+       fprintf (fp, "  /*FLOAT*/ INVALID,\n");
+       fprintf (fp, "  /*LMUL1*/ INVALID,\n");
+       fprintf (fp, "  /*WLMUL1*/ INVALID,\n");
+       for (unsigned eew : {8, 16, 32, 64})
+ 	fprintf (fp, "  /*EEW%d_INTERPRET*/ INVALID,\n", eew);
+ 
+       for (unsigned lmul_log2_offset : {1, 2, 3, 4, 5, 6})
+ 	{
+ 	  unsigned multiple_of_lmul = 1 << lmul_log2_offset;
+ 	  const char *comma = lmul_log2_offset == 6 ? "" : ",";
+ 	  fprintf (fp, "  /*X%d_INTERPRET*/ INVALID%s\n", multiple_of_lmul,
+ 		   comma);
+ 	}
+       fprintf (fp, ")\n");
+     }
+ 
+   // Build for vint and vuint
+   for (unsigned sew : {8, 16, 32, 64})
+     for (int lmul_log2 : {-3, -2, -1, 0, 1, 2, 3})
+       for (bool unsigned_p : {false, true})
+ 	{
+ 	  if (!valid_type (sew, lmul_log2, /*float_t*/ false))
+ 	    continue;
+ 
+ 	  fprintf (fp, "DEF_RVV_TYPE_INDEX (\n");
+ 	  fprintf (fp, "  /*VECTOR*/ %s,\n",
+ 		   inttype (sew, lmul_log2, unsigned_p).c_str ());
+ 	  fprintf (fp, "  /*MASK*/ %s,\n", maskmode (sew, lmul_log2).c_str ());
+ 	  fprintf (fp, "  /*SIGNED*/ %s,\n",
+ 		   inttype (sew, lmul_log2, /*unsigned_p*/ false).c_str ());
+ 	  fprintf (fp, "  /*UNSIGNED*/ %s,\n",
+ 		   inttype (sew, lmul_log2, /*unsigned_p*/ true).c_str ());
+ 	  for (unsigned eew : {8, 16, 32, 64})
+ 	    fprintf (fp, "  /*EEW%d_INDEX*/ %s,\n", eew,
+ 		     same_ratio_eew_type (sew, lmul_log2, eew,
+ 					  /*unsigned_p*/ true, false)
+ 		       .c_str ());
+ 	  fprintf (fp, "  /*SHIFT*/ %s,\n",
+ 		   inttype (sew, lmul_log2, /*unsigned_p*/ true).c_str ());
+ 	  fprintf (fp, "  /*DOUBLE_TRUNC*/ %s,\n",
+ 		   same_ratio_eew_type (sew, lmul_log2, sew / 2, unsigned_p,
+ 					false)
+ 		     .c_str ());
+ 	  fprintf (fp, "  /*QUAD_TRUNC*/ %s,\n",
+ 		   same_ratio_eew_type (sew, lmul_log2, sew / 4, unsigned_p,
+ 					false)
+ 		     .c_str ());
+ 	  fprintf (fp, "  /*OCT_TRUNC*/ %s,\n",
+ 		   same_ratio_eew_type (sew, lmul_log2, sew / 8, unsigned_p,
+ 					false)
+ 		     .c_str ());
+ 	  fprintf (fp, "  /*DOUBLE_TRUNC_SCALAR*/ %s,\n",
+ 		   same_ratio_eew_type (sew, lmul_log2, sew / 2, unsigned_p,
+ 					false)
+ 		     .c_str ());
+ 	  fprintf (fp, "  /*DOUBLE_TRUNC_SIGNED*/ INVALID,\n");
+ 	  fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED*/ %s,\n",
+ 		   same_ratio_eew_type (sew, lmul_log2, sew / 2, true, false)
+ 		     .c_str ());
+ 	  if (unsigned_p)
+ 	    fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED_SCALAR*/ INVALID,\n");
+ 	  else
+ 	    fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED_SCALAR*/ %s,\n",
+ 		     same_ratio_eew_type (sew, lmul_log2, sew / 2, true, false)
+ 		       .c_str ());
+ 	  fprintf (fp, "  /*DOUBLE_TRUNC_FLOAT*/ %s,\n",
+ 		   same_ratio_eew_type (sew, lmul_log2, sew / 2, false, true)
+ 		     .c_str ());
+ 	  fprintf (fp, "  /*FLOAT*/ %s,\n",
+ 		   floattype (sew, lmul_log2).c_str ());
+ 	  fprintf (fp, "  /*LMUL1*/ %s,\n",
+ 		   inttype (sew, /*lmul_log2*/ 0, unsigned_p).c_str ());
+ 	  fprintf (fp, "  /*WLMUL1*/ %s,\n",
+ 		   inttype (sew * 2, /*lmul_log2*/ 0, unsigned_p).c_str ());
+ 	  for (unsigned eew : {8, 16, 32, 64})
+ 	    {
+ 	      if (eew == sew)
+ 		fprintf (fp, "  /*EEW%d_INTERPRET*/ INVALID,\n", eew);
+ 	      else
+ 		fprintf (fp, "  /*EEW%d_INTERPRET*/ %s,\n", eew,
+ 			 inttype (eew, lmul_log2, unsigned_p).c_str ());
+ 	    }
+ 
+ 	  for (unsigned lmul_log2_offset : {1, 2, 3, 4, 5, 6})
+ 	    {
+ 	      unsigned multiple_of_lmul = 1 << lmul_log2_offset;
+ 	      const char *comma = lmul_log2_offset == 6 ? "" : ",";
+ 	      fprintf (fp, "  /*X%d_VLMUL_EXT*/ %s%s\n", multiple_of_lmul,
+ 		       inttype (sew, lmul_log2 + lmul_log2_offset, unsigned_p)
+ 			 .c_str (),
+ 		       comma);
+ 	    }
+ 	  fprintf (fp, ")\n");
+ 	}
+   // Build for vfloat
+   for (unsigned sew : {32, 64})
+     for (int lmul_log2 : {-3, -2, -1, 0, 1, 2, 3})
+       {
+ 	if (!valid_type (sew, lmul_log2, /*float_t*/ true))
+ 	  continue;
+ 
+ 	fprintf (fp, "DEF_RVV_TYPE_INDEX (\n");
+ 	fprintf (fp, "  /*VECTOR*/ %s,\n", floattype (sew, lmul_log2).c_str ());
+ 	fprintf (fp, "  /*MASK*/ %s,\n", maskmode (sew, lmul_log2).c_str ());
+ 	fprintf (fp, "  /*SIGNED*/ %s,\n",
+ 		 inttype (sew, lmul_log2, /*unsigned_p*/ false).c_str ());
+ 	fprintf (fp, "  /*UNSIGNED*/ %s,\n",
+ 		 inttype (sew, lmul_log2, /*unsigned_p*/ true).c_str ());
+ 	for (unsigned eew : {8, 16, 32, 64})
+ 	  fprintf (fp, "  /*EEW%d_INDEX*/ %s,\n", eew,
+ 		   same_ratio_eew_type (sew, lmul_log2, eew,
+ 					/*unsigned_p*/ true, false)
+ 		     .c_str ());
+ 	fprintf (fp, "  /*SHIFT*/ INVALID,\n");
+ 	fprintf (
+ 	  fp, "  /*DOUBLE_TRUNC*/ %s,\n",
+ 	  same_ratio_eew_type (sew, lmul_log2, sew / 2, false, true).c_str ());
+ 	fprintf (fp, "  /*QUAD_TRUNC*/ INVALID,\n");
+ 	fprintf (fp, "  /*OCT_TRUNC*/ INVALID,\n");
+ 	fprintf (
+ 	  fp, "  /*DOUBLE_TRUNC_SCALAR*/ %s,\n",
+ 	  same_ratio_eew_type (sew, lmul_log2, sew / 2, false, true).c_str ());
+ 	fprintf (
+ 	  fp, "  /*DOUBLE_TRUNC_SIGNED*/ %s,\n",
+ 	  same_ratio_eew_type (sew, lmul_log2, sew / 2, false, false).c_str ());
+ 	fprintf (
+ 	  fp, "  /*DOUBLE_TRUNC_UNSIGNED*/ %s,\n",
+ 	  same_ratio_eew_type (sew, lmul_log2, sew / 2, true, false).c_str ());
+ 	fprintf (fp, "  /*DOUBLE_TRUNC_UNSIGNED_SCALAR*/ INVALID,\n");
+ 	fprintf (
+ 	  fp, "  /*DOUBLE_TRUNC_FLOAT*/ %s,\n",
+ 	  same_ratio_eew_type (sew, lmul_log2, sew / 2, false, true).c_str ());
+ 	fprintf (fp, "  /*FLOAT*/ INVALID,\n");
+ 	fprintf (fp, "  /*LMUL1*/ %s,\n",
+ 		 floattype (sew, /*lmul_log2*/ 0).c_str ());
+ 	fprintf (fp, "  /*WLMUL1*/ %s,\n",
+ 		 floattype (sew * 2, /*lmul_log2*/ 0).c_str ());
+ 	for (unsigned eew : {8, 16, 32, 64})
+ 	  fprintf (fp, "  /*EEW%d_INTERPRET*/ INVALID,\n", eew);
+ 	for (unsigned lmul_log2_offset : {1, 2, 3, 4, 5, 6})
+ 	  {
+ 	    unsigned multiple_of_lmul = 1 << lmul_log2_offset;
+ 	    const char *comma = lmul_log2_offset == 6 ? "" : ",";
+ 	    fprintf (fp, "  /*X%d_VLMUL_EXT*/ %s%s\n", multiple_of_lmul,
+ 		     floattype (sew, lmul_log2 + lmul_log2_offset).c_str (),
+ 		     comma);
+ 	  }
+ 	fprintf (fp, ")\n");
+       }
+ 
+   return 0;
+ }
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/iterators.md gcc-13.1.0/gcc/config/riscv/iterators.md
*** gcc-12.2.0/gcc/config/riscv/iterators.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/iterators.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,290 ----
+ ;; Iterators for the machine description for RISC-V
+ ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
+ 
+ ;; This file is part of GCC.
+ ;;
+ ;; GCC is free software; you can redistribute it and/or modify it
+ ;; under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ ;;
+ ;; GCC is distributed in the hope that it will be useful, but
+ ;; WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ ;; General Public License for more details.
+ ;;
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ 
+ ;; -------------------------------------------------------------------
+ ;; Mode Iterators
+ ;; -------------------------------------------------------------------
+ 
+ ;; This mode iterator allows 32-bit and 64-bit GPR patterns to be generated
+ ;; from the same template.
+ (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
+ 
+ ;; A copy of GPR that can be used when a pattern has two independent
+ ;; modes.
+ (define_mode_iterator GPR2 [SI (DI "TARGET_64BIT")])
+ 
+ ;; This mode iterator allows :P to be used for patterns that operate on
+ ;; pointer-sized quantities.  Exactly one of the two alternatives will match.
+ (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
+ 
+ ;; Likewise, but for XLEN-sized quantities.
+ (define_mode_iterator X [(SI "!TARGET_64BIT") (DI "TARGET_64BIT")])
+ 
+ ;; Branches operate on XLEN-sized quantities, but for RV64 we accept
+ ;; QImode values so we can force zero-extension.
+ (define_mode_iterator BR [(QI "TARGET_64BIT") SI (DI "TARGET_64BIT")])
+ 
+ ;; 32-bit moves for which we provide move patterns.
+ (define_mode_iterator MOVE32 [SI])
+ 
+ ;; 64-bit modes for which we provide move patterns.
+ (define_mode_iterator MOVE64 [DI DF])
+ 
+ ;; Iterator for sub-32-bit integer modes.
+ (define_mode_iterator SHORT [QI HI])
+ 
+ ;; Iterator for HImode constant generation.
+ (define_mode_iterator HISI [HI SI])
+ 
+ ;; Iterator for QImode extension patterns.
+ (define_mode_iterator SUPERQI [HI SI (DI "TARGET_64BIT")])
+ 
+ ;; Iterator for hardware integer modes narrower than XLEN.
+ (define_mode_iterator SUBX [QI HI (SI "TARGET_64BIT")])
+ 
+ ;; Iterator for hardware-supported integer modes.
+ (define_mode_iterator ANYI [QI HI SI (DI "TARGET_64BIT")])
+ 
+ ;; Iterator for hardware-supported floating-point modes.
+ (define_mode_iterator ANYF [(SF "TARGET_HARD_FLOAT || TARGET_ZFINX")
+ 			    (DF "TARGET_DOUBLE_FLOAT || TARGET_ZDINX")
+ 			    (HF "TARGET_ZFH || TARGET_ZHINX")])
+ 
+ ;; Iterator for floating-point modes that can be loaded into X registers.
+ (define_mode_iterator SOFTF [SF (DF "TARGET_64BIT") (HF "TARGET_ZFHMIN")])
+ 
+ 
+ ;; -------------------------------------------------------------------
+ ;; Mode attributes
+ ;; -------------------------------------------------------------------
+ 
+ ;; This attribute gives the length suffix for a sign- or zero-extension
+ ;; instruction.
+ (define_mode_attr size [(QI "b") (HI "h")])
+ 
+ ;; Mode attributes for loads.
+ (define_mode_attr load [(QI "lb") (HI "lh") (SI "lw") (DI "ld") (HF "flh") (SF "flw") (DF "fld")])
+ 
+ ;; Instruction names for integer loads that aren't explicitly sign or zero
+ ;; extended.  See riscv_output_move and LOAD_EXTEND_OP.
+ (define_mode_attr default_load [(QI "lbu") (HI "lhu") (SI "lw") (DI "ld")])
+ 
+ ;; Mode attribute for FP loads into integer registers.
+ (define_mode_attr softload [(HF "lh") (SF "lw") (DF "ld")])
+ 
+ ;; Instruction names for stores.
+ (define_mode_attr store [(QI "sb") (HI "sh") (SI "sw") (DI "sd") (HF "fsh") (SF "fsw") (DF "fsd")])
+ 
+ ;; Instruction names for FP stores from integer registers.
+ (define_mode_attr softstore [(HF "sh") (SF "sw") (DF "sd")])
+ 
+ ;; This attribute gives the best constraint to use for registers of
+ ;; a given mode.
+ (define_mode_attr reg [(SI "d") (DI "d") (CC "d")])
+ 
+ ;; This attribute gives the format suffix for floating-point operations.
+ (define_mode_attr fmt [(HF "h") (SF "s") (DF "d")])
+ 
+ ;; This attribute gives the integer suffix for floating-point conversions.
+ (define_mode_attr ifmt [(SI "w") (DI "l")])
+ 
+ ;; This attribute gives the format suffix for atomic memory operations.
+ (define_mode_attr amo [(SI "w") (DI "d")])
+ 
+ ;; This attribute gives the upper-case mode name for one unit of a
+ ;; floating-point mode.
+ (define_mode_attr UNITMODE [(HF "HF") (SF "SF") (DF "DF")])
+ 
+ ;; This attribute gives the integer mode that has half the size of
+ ;; the controlling mode.
+ (define_mode_attr HALFMODE [(DF "SI") (DI "SI") (TF "DI")])
+ 
+ ; bitmanip mode attribute
+ (define_mode_attr shiftm1 [(SI "const31_operand") (DI "const63_operand")])
+ (define_mode_attr shiftm1p [(SI "DsS") (DI "DsD")])
+ 
+ ;; -------------------------------------------------------------------
+ ;; Code Iterators
+ ;; -------------------------------------------------------------------
+ 
+ ;; This code iterator allows signed and unsigned widening multiplications
+ ;; to use the same template.
+ (define_code_iterator any_extend [sign_extend zero_extend])
+ 
+ ;; This code iterator allows the two right shift instructions to be
+ ;; generated from the same template.
+ (define_code_iterator any_shiftrt [ashiftrt lshiftrt])
+ 
+ ;; This code iterator allows the three shift instructions to be generated
+ ;; from the same template.
+ (define_code_iterator any_shift [ashift ashiftrt lshiftrt])
+ 
+ ;; This code iterator allows the three bitwise instructions to be generated
+ ;; from the same template.
+ (define_code_iterator any_bitwise [and ior xor])
+ 
+ ;; This code iterator allows ior and xor instructions to be generated
+ ;; from the same template.
+ (define_code_iterator any_or [ior xor])
+ 
+ ;; This code iterator allows unsigned and signed division to be generated
+ ;; from the same template.
+ (define_code_iterator any_div [div udiv mod umod])
+ 
+ ;; This code iterator allows unsigned and signed modulus to be generated
+ ;; from the same template.
+ (define_code_iterator any_mod [mod umod])
+ 
+ ;; These code iterators allow the signed and unsigned scc operations to use
+ ;; the same template.
+ (define_code_iterator any_gt [gt gtu])
+ (define_code_iterator any_ge [ge geu])
+ (define_code_iterator any_lt [lt ltu])
+ (define_code_iterator any_le [le leu])
+ 
+ ; atomics code iterator
+ (define_code_iterator any_atomic [plus ior xor and])
+ 
+ ; bitmanip code iterators
+ (define_code_iterator bitmanip_bitwise [and ior])
+ 
+ (define_code_iterator bitmanip_minmax [smin umin smax umax])
+ 
+ (define_code_iterator clz_ctz_pcnt [clz ctz popcount])
+ 
+ ;; -------------------------------------------------------------------
+ ;; Code Attributes
+ ;; -------------------------------------------------------------------
+ 
+ ;; <u> expands to an empty string when doing a signed operation and
+ ;; "u" when doing an unsigned operation.
+ (define_code_attr u [(sign_extend "") (zero_extend "u")
+ 		     (gt "") (gtu "u")
+ 		     (ge "") (geu "u")
+ 		     (lt "") (ltu "u")
+ 		     (le "") (leu "u")
+ 		     (fix "") (unsigned_fix "u")
+ 		     (float "") (unsigned_float "u")])
+ 
+ ;; <su> is like <u>, but the signed form expands to "s" rather than "".
+ (define_code_attr su [(sign_extend "s") (zero_extend "u")])
+ 
+ ;; <optab> expands to the name of the optab for a particular code.
+ (define_code_attr optab [(ashift "ashl")
+ 			 (ashiftrt "ashr")
+ 			 (lshiftrt "lshr")
+ 			 (div "div")
+ 			 (mod "mod")
+ 			 (udiv "udiv")
+ 			 (umod "umod")
+ 			 (ge "ge")
+ 			 (le "le")
+ 			 (gt "gt")
+ 			 (lt "lt")
+ 			 (ior "ior")
+ 			 (xor "xor")
+ 			 (and "and")
+ 			 (plus "add")
+ 			 (minus "sub")
+ 			 (smin "smin")
+ 			 (smax "smax")
+ 			 (umin "umin")
+ 			 (umax "umax")
+ 			 (mult "mul")
+ 			 (not "one_cmpl")
+ 			 (neg "neg")
+ 			 (abs "abs")
+ 			 (sqrt "sqrt")
+ 			 (ss_plus "ssadd")
+ 			 (us_plus "usadd")
+ 			 (ss_minus "sssub")
+ 			 (us_minus "ussub")
+ 			 (sign_extend "extend")
+ 			 (zero_extend "zero_extend")])
+ 
+ ;; <or_optab> code attributes
+ (define_code_attr or_optab [(ior "ior")
+ 			    (xor "xor")])
+ 
+ ;; <insn> expands to the name of the insn that implements a particular code.
+ (define_code_attr insn [(ashift "sll")
+ 			(ashiftrt "sra")
+ 			(lshiftrt "srl")
+ 			(div "div")
+ 			(mod "rem")
+ 			(udiv "divu")
+ 			(umod "remu")
+ 			(ior "or")
+ 			(xor "xor")
+ 			(and "and")
+ 			(plus "add")
+ 			(minus "sub")
+ 			(smin "min")
+ 			(smax "max")
+ 			(umin "minu")
+ 			(umax "maxu")
+ 			(mult "mul")
+ 			(not "not")
+ 			(neg "neg")
+ 			(abs "abs")
+ 			(sqrt "sqrt")
+ 			(ss_plus "sadd")
+ 			(us_plus "saddu")
+ 			(ss_minus "ssub")
+ 			(us_minus "ssubu")])
+ 
+ ; atomics code attribute
+ (define_code_attr atomic_optab
+   [(plus "add") (ior "or") (xor "xor") (and "and")])
+ 
+ ; bitmanip code attributes
+ (define_code_attr minmax_optab [(smin "smin")
+ 				(smax "smax")
+ 				(umin "umin")
+ 				(umax "umax")])
+ (define_code_attr bitmanip_optab [(smin "smin")
+ 				  (smax "smax")
+ 				  (umin "umin")
+ 				  (umax "umax")
+ 				  (clz "clz")
+ 				  (ctz "ctz")
+ 				  (popcount "popcount")])
+ (define_code_attr bitmanip_insn [(smin "min")
+ 				 (smax "max")
+ 				 (umin "minu")
+ 				 (umax "maxu")
+ 				 (clz "clz")
+ 				 (ctz "ctz")
+ 				 (popcount "cpop")])
+ 
+ ;; -------------------------------------------------------------------
+ ;; Int Iterators.
+ ;; -------------------------------------------------------------------
+ 
+ ;; Iterator and attributes for floating-point rounding instructions.
+ (define_int_iterator RINT [UNSPEC_LRINT UNSPEC_LROUND])
+ (define_int_attr rint_pattern [(UNSPEC_LRINT "rint") (UNSPEC_LROUND "round")])
+ (define_int_attr rint_rm [(UNSPEC_LRINT "dyn") (UNSPEC_LROUND "rmm")])
+ 
+ ;; Iterator and attributes for quiet comparisons.
+ (define_int_iterator QUIET_COMPARISON [UNSPEC_FLT_QUIET UNSPEC_FLE_QUIET])
+ (define_int_attr quiet_pattern [(UNSPEC_FLT_QUIET "lt") (UNSPEC_FLE_QUIET "le")])
+ (define_int_attr QUIET_PATTERN [(UNSPEC_FLT_QUIET "LT") (UNSPEC_FLE_QUIET "LE")])
+ 
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/linux.h gcc-13.1.0/gcc/config/riscv/linux.h
*** gcc-12.2.0/gcc/config/riscv/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RISC-V GNU/Linux systems with ELF format.
!    Copyright (C) 1998-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RISC-V GNU/Linux systems with ELF format.
!    Copyright (C) 1998-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/multilib-generator gcc-13.1.0/gcc/config/riscv/multilib-generator
*** gcc-12.2.0/gcc/config/riscv/multilib-generator	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/multilib-generator	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/usr/bin/env python
  
  # RISC-V multilib list generator.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  # Contributed by Andrew Waterman (andrew@sifive.com).
  # 
  # This file is part of GCC.
--- 1,7 ----
  #!/usr/bin/env python
  
  # RISC-V multilib list generator.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  # Contributed by Andrew Waterman (andrew@sifive.com).
  # 
  # This file is part of GCC.
*************** for cmodel in cmodels:
*** 175,181 ****
      # Drop duplicated entry.
      alts = unique(alts)
  
!     for alt in alts[1:]:
        if alt == arch:
          continue
        arches[alt] = 1
--- 175,181 ----
      # Drop duplicated entry.
      alts = unique(alts)
  
!     for alt in alts:
        if alt == arch:
          continue
        arches[alt] = 1
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/peephole.md gcc-13.1.0/gcc/config/riscv/peephole.md
*** gcc-12.2.0/gcc/config/riscv/peephole.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/peephole.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Peephole optimizations for RISC-V for GNU compiler.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Peephole optimizations for RISC-V for GNU compiler.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  
  ;; This file is part of GCC.
***************
*** 38,40 ****
--- 38,96 ----
  {
    operands[5] = GEN_INT (INTVAL (operands[2]) - INTVAL (operands[5]));
  })
+ 
+ ;; XTheadMemPair: merge two SI or DI loads
+ (define_peephole2
+   [(set (match_operand:GPR 0 "register_operand" "")
+ 	(match_operand:GPR 1 "memory_operand" ""))
+    (set (match_operand:GPR 2 "register_operand" "")
+ 	(match_operand:GPR 3 "memory_operand" ""))]
+   "TARGET_XTHEADMEMPAIR
+   && th_mempair_operands_p (operands, true, <GPR:MODE>mode)"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+ 	          (set (match_dup 2) (match_dup 3))])]
+ {
+   th_mempair_order_operands (operands, true, <GPR:MODE>mode);
+ })
+ 
+ ;; XTheadMemPair: merge two SI or DI stores
+ (define_peephole2
+   [(set (match_operand:GPR 0 "memory_operand" "")
+ 	(match_operand:GPR 1 "register_operand" ""))
+    (set (match_operand:GPR 2 "memory_operand" "")
+ 	(match_operand:GPR 3 "register_operand" ""))]
+   "TARGET_XTHEADMEMPAIR
+   && th_mempair_operands_p (operands, false, <GPR:MODE>mode)"
+   [(parallel [(set (match_dup 0) (match_dup 1))
+               (set (match_dup 2) (match_dup 3))])]
+ {
+   th_mempair_order_operands (operands, false, <GPR:MODE>mode);
+ })
+ 
+ ;; XTheadMemPair: merge two SI loads with sign-extension
+ (define_peephole2
+   [(set (match_operand:DI 0 "register_operand" "")
+ 	(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" "")))]
+   "TARGET_XTHEADMEMPAIR && TARGET_64BIT
+   && th_mempair_operands_p (operands, true, SImode)"
+   [(parallel [(set (match_dup 0) (sign_extend:DI (match_dup 1)))
+               (set (match_dup 2) (sign_extend:DI (match_dup 3)))])]
+ {
+   th_mempair_order_operands (operands, true, SImode);
+ })
+ 
+ ;; XTheadMemPair: merge two SI loads with zero-extension
+ (define_peephole2
+   [(set (match_operand:DI 0 "register_operand" "")
+ 	(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" "")))]
+   "TARGET_XTHEADMEMPAIR && TARGET_64BIT
+   && th_mempair_operands_p (operands, true, SImode)"
+   [(parallel [(set (match_dup 0) (zero_extend:DI (match_dup 1)))
+               (set (match_dup 2) (zero_extend:DI (match_dup 3)))])]
+ {
+   th_mempair_order_operands (operands, true, SImode);
+ })
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/pic.md gcc-13.1.0/gcc/config/riscv/pic.md
*** gcc-12.2.0/gcc/config/riscv/pic.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/pic.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; PIC codegen for RISC-V for GNU compiler.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; PIC codegen for RISC-V for GNU compiler.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/predicates.md gcc-13.1.0/gcc/config/riscv/predicates.md
*** gcc-12.2.0/gcc/config/riscv/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate description for RISC-V target.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  ;;
--- 1,5 ----
  ;; Predicate description for RISC-V target.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  ;;
***************
*** 52,58 ****
         (match_test "INTVAL (op) + 1 != 0")))
  
  (define_predicate "const_0_operand"
!   (and (match_code "const_int,const_wide_int,const_double,const_vector")
         (match_test "op == CONST0_RTX (GET_MODE (op))")))
  
  (define_predicate "reg_or_0_operand"
--- 52,58 ----
         (match_test "INTVAL (op) + 1 != 0")))
  
  (define_predicate "const_0_operand"
!   (and (match_code "const_int,const_wide_int,const_vector")
         (match_test "op == CONST0_RTX (GET_MODE (op))")))
  
  (define_predicate "reg_or_0_operand"
***************
*** 71,82 ****
  {
    /* Don't handle multi-word moves this way; we don't want to introduce
       the individual word-mode moves until after reload.  */
!   if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
      return false;
  
    /* Check whether the constant can be loaded in a single
       instruction with zbs extensions.  */
!   if (TARGET_64BIT && TARGET_ZBS && SINGLE_BIT_MASK_OPERAND (INTVAL (op)))
      return false;
  
    /* Otherwise check whether the constant can be loaded in a single
--- 71,82 ----
  {
    /* Don't handle multi-word moves this way; we don't want to introduce
       the individual word-mode moves until after reload.  */
!   if (GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD)
      return false;
  
    /* Check whether the constant can be loaded in a single
       instruction with zbs extensions.  */
!   if (TARGET_ZBS && SINGLE_BIT_MASK_OPERAND (INTVAL (op)))
      return false;
  
    /* Otherwise check whether the constant can be loaded in a single
***************
*** 146,151 ****
--- 146,154 ----
      case CONST_INT:
        return !splittable_const_int_operand (op, mode);
  
+     case CONST_POLY_INT:
+       return known_eq (rtx_to_poly_int64 (op), BYTES_PER_RISCV_VECTOR);
+ 
      case CONST:
      case SYMBOL_REF:
      case LABEL_REF:
***************
*** 226,236 ****
  ;; Predicates for the ZBS extension.
  (define_predicate "single_bit_mask_operand"
    (and (match_code "const_int")
!        (match_test "pow2p_hwi (INTVAL (op))")))
  
  (define_predicate "not_single_bit_mask_operand"
    (and (match_code "const_int")
!        (match_test "pow2p_hwi (~INTVAL (op))")))
  
  (define_predicate "const31_operand"
    (and (match_code "const_int")
--- 229,239 ----
  ;; Predicates for the ZBS extension.
  (define_predicate "single_bit_mask_operand"
    (and (match_code "const_int")
!        (match_test "SINGLE_BIT_MASK_OPERAND (UINTVAL (op))")))
  
  (define_predicate "not_single_bit_mask_operand"
    (and (match_code "const_int")
!        (match_test "SINGLE_BIT_MASK_OPERAND (~UINTVAL (op))")))
  
  (define_predicate "const31_operand"
    (and (match_code "const_int")
***************
*** 239,241 ****
--- 242,414 ----
  (define_predicate "const63_operand"
    (and (match_code "const_int")
         (match_test "INTVAL (op) == 63")))
+ 
+ (define_predicate "imm5_operand"
+   (and (match_code "const_int")
+        (match_test "INTVAL (op) < 5")))
+ 
+ ;; A const_int for sh1add/sh2add/sh3add
+ (define_predicate "imm123_operand"
+   (and (match_code "const_int")
+        (match_test "IN_RANGE (INTVAL (op), 1, 3)")))
+ 
+ ;; A CONST_INT operand that consists of a single run of consecutive set bits.
+ (define_predicate "consecutive_bits_operand"
+   (match_code "const_int")
+ {
+ 	unsigned HOST_WIDE_INT val = UINTVAL (op);
+ 	if (exact_log2 ((val >> ctz_hwi (val)) + 1) < 0)
+ 	        return false;
+ 
+ 	return true;
+ })
+ 
+ ;; Predicates for the V extension.
+ (define_special_predicate "vector_length_operand"
+   (ior (match_operand 0 "pmode_register_operand")
+        (match_operand 0 "const_csr_operand")))
+ 
+ (define_predicate "reg_or_mem_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "memory_operand")))
+ 
+ (define_predicate "reg_or_int_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "const_int_operand")))
+ 
+ (define_predicate "vector_move_operand"
+   (ior (match_operand 0 "nonimmediate_operand")
+        (and (match_code "const_vector")
+             (match_test "reload_completed
+ 		|| satisfies_constraint_vi (op)
+ 		|| satisfies_constraint_Wc0 (op)"))))
+ 
+ (define_predicate "vector_all_trues_mask_operand"
+   (and (match_code "const_vector")
+        (match_test "op == CONSTM1_RTX (GET_MODE (op))")))
+ 
+ (define_predicate "vector_least_significant_set_mask_operand"
+   (and (match_code "const_vector")
+        (match_test "rtx_equal_p (op, riscv_vector::gen_scalar_move_mask (GET_MODE (op)))")))
+ 
+ (define_predicate "vector_mask_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "vector_all_trues_mask_operand")))
+ 
+ (define_predicate "vector_broadcast_mask_operand"
+   (ior (match_operand 0 "vector_least_significant_set_mask_operand")
+     (ior (match_operand 0 "register_operand")
+          (match_operand 0 "vector_all_trues_mask_operand"))))
+ 
+ (define_predicate "vector_undef_operand"
+   (match_test "rtx_equal_p (op, RVV_VUNDEF (GET_MODE (op)))"))
+ 
+ (define_predicate "vector_merge_operand"
+   (ior (match_operand 0 "register_operand")
+        (match_operand 0 "vector_undef_operand")))
+ 
+ (define_predicate "vector_arith_operand"
+   (ior (match_operand 0 "register_operand")
+        (and (match_code "const_vector")
+             (match_test "riscv_vector::const_vec_all_same_in_range_p (op, -16, 15)"))))
+ 
+ (define_predicate "vector_neg_arith_operand"
+   (ior (match_operand 0 "register_operand")
+        (and (match_code "const_vector")
+             (match_test "riscv_vector::const_vec_all_same_in_range_p (op, -15, 16)"))))
+ 
+ (define_predicate "vector_shift_operand"
+   (ior (match_operand 0 "register_operand")
+        (and (match_code "const_vector")
+             (match_test "riscv_vector::const_vec_all_same_in_range_p (op, 0, 31)"))))
+ 
+ (define_predicate "ltge_operator"
+   (match_code "lt,ltu,ge,geu"))
+ 
+ (define_predicate "comparison_except_ltge_operator"
+   (match_code "eq,ne,le,leu,gt,gtu"))
+ 
+ (define_predicate "comparison_except_eqge_operator"
+   (match_code "le,leu,gt,gtu,lt,ltu"))
+ 
+ (define_predicate "ge_operator"
+   (match_code "ge,geu"))
+ 
+ ;; pmode_reg_or_uimm5_operand can be used by vsll.vx/vsrl.vx/vsra.vx instructions.
+ ;; Since it has the same predicate with vector_length_operand which allows register
+ ;; or immediate (0 ~ 31), we define this predicate same as vector_length_operand here.
+ ;; We don't use vector_length_operand directly to predicate vsll.vx/vsrl.vx/vsra.vx
+ ;; since it may be confusing.
+ (define_special_predicate "pmode_reg_or_uimm5_operand"
+   (match_operand 0 "vector_length_operand"))
+ 
+ (define_special_predicate "pmode_reg_or_0_operand"
+   (ior (match_operand 0 "const_0_operand")
+        (match_operand 0 "pmode_register_operand")))
+ 
+ ;; A special predicate that doesn't match a particular mode.
+ (define_special_predicate "vector_any_register_operand"
+   (match_code "reg"))
+ 
+ ;; The scalar operand can be directly broadcast by RVV instructions.
+ (define_predicate "direct_broadcast_operand"
+   (and (match_test "!(reload_completed && !FLOAT_MODE_P (GET_MODE (op))
+ 		&& (register_operand (op, GET_MODE (op)) || CONST_INT_P (op)
+ 		|| rtx_equal_p (op, CONST0_RTX (GET_MODE (op))))
+ 		&& maybe_gt (GET_MODE_BITSIZE (GET_MODE (op)), GET_MODE_BITSIZE (Pmode)))")
+     (ior (match_test "rtx_equal_p (op, CONST0_RTX (GET_MODE (op)))")
+          (ior (match_operand 0 "const_int_operand")
+               (ior (match_operand 0 "register_operand")
+                    (match_test "satisfies_constraint_Wdm (op)"))))))
+ 
+ ;; A CONST_INT operand that has exactly two bits cleared.
+ (define_predicate "const_nottwobits_operand"
+   (and (match_code "const_int")
+        (match_test "popcount_hwi (~UINTVAL (op)) == 2")))
+ 
+ ;; A CONST_INT operand that consists of a single run of 32 consecutive
+ ;; set bits.
+ (define_predicate "consecutive_bits32_operand"
+   (and (match_operand 0 "consecutive_bits_operand")
+        (match_test "popcount_hwi (UINTVAL (op)) == 32")))
+ 
+ ;; A CONST_INT operand that, if shifted down to start with its least
+ ;; significant non-zero bit, is a SMALL_OPERAND (suitable as an
+ ;; immediate to logical and arithmetic instructions).
+ (define_predicate "shifted_const_arith_operand"
+   (and (match_code "const_int")
+        (match_test "ctz_hwi (INTVAL (op)) > 0")
+        (match_test "SMALL_OPERAND (INTVAL (op) >> ctz_hwi (INTVAL (op)))")))
+ 
+ ;; A CONST_INT operand that has exactly two bits set.
+ (define_predicate "const_twobits_operand"
+   (and (match_code "const_int")
+        (match_test "popcount_hwi (UINTVAL (op)) == 2")))
+ 
+ (define_predicate "const_twobits_not_arith_operand"
+   (and (match_code "const_int")
+        (and (not (match_operand 0 "arith_operand"))
+ 	    (match_operand 0 "const_twobits_operand"))))
+ 
+ ;; A CONST_INT operand that fits into the unsigned half of a
+ ;; signed-immediate after the top bit has been cleared
+ (define_predicate "uimm_extra_bit_operand"
+   (and (match_code "const_int")
+        (match_test "UIMM_EXTRA_BIT_OPERAND (UINTVAL (op))")))
+ 
+ (define_predicate "uimm_extra_bit_or_twobits"
+   (and (match_code "const_int")
+        (ior (match_operand 0 "uimm_extra_bit_operand")
+ 	    (match_operand 0 "const_twobits_not_arith_operand"))))
+ 
+ ;; A CONST_INT operand that fits into the negative half of a
+ ;; signed-immediate after a single cleared top bit has been
+ ;; set: i.e., a bitwise-negated uimm_extra_bit_operand
+ (define_predicate "not_uimm_extra_bit_operand"
+   (and (match_code "const_int")
+        (match_test "UIMM_EXTRA_BIT_OPERAND (~UINTVAL (op))")))
+ 
+ (define_predicate "not_uimm_extra_bit_or_nottwobits"
+   (and (match_code "const_int")
+        (ior (match_operand 0 "not_uimm_extra_bit_operand")
+ 	    (match_operand 0 "const_nottwobits_operand"))))
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-builtins.cc gcc-13.1.0/gcc/config/riscv/riscv-builtins.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for expanding RISC-V builtins.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for expanding RISC-V builtins.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 34,45 ****
--- 34,52 ----
  #include "recog.h"
  #include "diagnostic-core.h"
  #include "stor-layout.h"
+ #include "stringpool.h"
  #include "expr.h"
  #include "langhooks.h"
+ #include "tm_p.h"
+ #include "backend.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
  
  /* Macros to create an enumeration identifier for a function prototype.  */
  #define RISCV_FTYPE_NAME0(A) RISCV_##A##_FTYPE
  #define RISCV_FTYPE_NAME1(A, B) RISCV_##A##_FTYPE_##B
+ #define RISCV_FTYPE_NAME2(A, B, C) RISCV_##A##_FTYPE_##B##_##C
+ #define RISCV_FTYPE_NAME3(A, B, C, D) RISCV_##A##_FTYPE_##B##_##C##_##D
  
  /* Classifies the prototype of a built-in function.  */
  enum riscv_function_type {
*************** struct riscv_builtin_description {
*** 85,91 ****
    unsigned int (*avail) (void);
  };
  
! AVAIL (hard_float, TARGET_HARD_FLOAT)
  
  /* Construct a riscv_builtin_description from the given arguments.
  
--- 92,126 ----
    unsigned int (*avail) (void);
  };
  
! AVAIL (hard_float, TARGET_HARD_FLOAT || TARGET_ZFINX)
! AVAIL (clean32, TARGET_ZICBOM && !TARGET_64BIT)
! AVAIL (clean64, TARGET_ZICBOM && TARGET_64BIT)
! AVAIL (flush32, TARGET_ZICBOM && !TARGET_64BIT)
! AVAIL (flush64, TARGET_ZICBOM && TARGET_64BIT)
! AVAIL (inval32, TARGET_ZICBOM && !TARGET_64BIT)
! AVAIL (inval64, TARGET_ZICBOM && TARGET_64BIT)
! AVAIL (zero32,  TARGET_ZICBOZ && !TARGET_64BIT)
! AVAIL (zero64,  TARGET_ZICBOZ && TARGET_64BIT)
! AVAIL (prefetchi32, TARGET_ZICBOP && !TARGET_64BIT)
! AVAIL (prefetchi64, TARGET_ZICBOP && TARGET_64BIT)
! AVAIL (crypto_zbkb32, TARGET_ZBKB && !TARGET_64BIT)
! AVAIL (crypto_zbkb64, TARGET_ZBKB && TARGET_64BIT)
! AVAIL (crypto_zbkc32, TARGET_ZBKC && !TARGET_64BIT)
! AVAIL (crypto_zbkc64, TARGET_ZBKC && TARGET_64BIT)
! AVAIL (crypto_zbkx32, TARGET_ZBKX && !TARGET_64BIT)
! AVAIL (crypto_zbkx64, TARGET_ZBKX && TARGET_64BIT)
! AVAIL (crypto_zknd32, TARGET_ZKND && !TARGET_64BIT)
! AVAIL (crypto_zknd64, TARGET_ZKND && TARGET_64BIT)
! AVAIL (crypto_zkne32, TARGET_ZKNE && !TARGET_64BIT)
! AVAIL (crypto_zkne64, TARGET_ZKNE && TARGET_64BIT)
! AVAIL (crypto_zkne_or_zknd, (TARGET_ZKNE || TARGET_ZKND) && TARGET_64BIT)
! AVAIL (crypto_zknh32, TARGET_ZKNH && !TARGET_64BIT)
! AVAIL (crypto_zknh64, TARGET_ZKNH && TARGET_64BIT)
! AVAIL (crypto_zksh32, TARGET_ZKSH && !TARGET_64BIT)
! AVAIL (crypto_zksh64, TARGET_ZKSH && TARGET_64BIT)
! AVAIL (crypto_zksed32, TARGET_ZKSED && !TARGET_64BIT)
! AVAIL (crypto_zksed64, TARGET_ZKSED && TARGET_64BIT)
! AVAIL (always,     (!0))
  
  /* Construct a riscv_builtin_description from the given arguments.
  
*************** AVAIL (hard_float, TARGET_HARD_FLOAT)
*** 119,124 ****
--- 154,164 ----
  /* Argument types.  */
  #define RISCV_ATYPE_VOID void_type_node
  #define RISCV_ATYPE_USI unsigned_intSI_type_node
+ #define RISCV_ATYPE_QI intQI_type_node
+ #define RISCV_ATYPE_HI intHI_type_node
+ #define RISCV_ATYPE_SI intSI_type_node
+ #define RISCV_ATYPE_DI intDI_type_node
+ #define RISCV_ATYPE_VOID_PTR ptr_type_node
  
  /* RISCV_FTYPE_ATYPESN takes N RISCV_FTYPES-like type codes and lists
     their associated RISCV_ATYPEs.  */
*************** AVAIL (hard_float, TARGET_HARD_FLOAT)
*** 126,135 ****
    RISCV_ATYPE_##A
  #define RISCV_FTYPE_ATYPES1(A, B) \
    RISCV_ATYPE_##A, RISCV_ATYPE_##B
  
  static const struct riscv_builtin_description riscv_builtins[] = {
    DIRECT_BUILTIN (frflags, RISCV_USI_FTYPE, hard_float),
!   DIRECT_NO_TARGET_BUILTIN (fsflags, RISCV_VOID_FTYPE_USI, hard_float)
  };
  
  /* Index I is the function declaration for riscv_builtins[I], or null if the
--- 166,183 ----
    RISCV_ATYPE_##A
  #define RISCV_FTYPE_ATYPES1(A, B) \
    RISCV_ATYPE_##A, RISCV_ATYPE_##B
+ #define RISCV_FTYPE_ATYPES2(A, B, C) \
+   RISCV_ATYPE_##A, RISCV_ATYPE_##B, RISCV_ATYPE_##C
+ #define RISCV_FTYPE_ATYPES3(A, B, C, D) \
+   RISCV_ATYPE_##A, RISCV_ATYPE_##B, RISCV_ATYPE_##C, RISCV_ATYPE_##D
  
  static const struct riscv_builtin_description riscv_builtins[] = {
+   #include "riscv-cmo.def"
+   #include "riscv-scalar-crypto.def"
+ 
    DIRECT_BUILTIN (frflags, RISCV_USI_FTYPE, hard_float),
!   DIRECT_NO_TARGET_BUILTIN (fsflags, RISCV_VOID_FTYPE_USI, hard_float),
!   DIRECT_NO_TARGET_BUILTIN (pause, RISCV_VOID_FTYPE, always),
  };
  
  /* Index I is the function declaration for riscv_builtins[I], or null if the
*************** static GTY(()) int riscv_builtin_decl_in
*** 143,148 ****
--- 191,198 ----
  #define GET_BUILTIN_DECL(CODE) \
    riscv_builtin_decls[riscv_builtin_decl_index[(CODE)]]
  
+ tree riscv_float16_type_node = NULL_TREE;
+ 
  /* Return the function type associated with function prototype TYPE.  */
  
  static tree
*************** riscv_build_function_type (enum riscv_fu
*** 168,178 ****
--- 218,250 ----
    return types[(int) type];
  }
  
+ static void
+ riscv_init_builtin_types (void)
+ {
+   /* Provide the _Float16 type and float16_type_node if needed.  */
+   if (!float16_type_node)
+     {
+       riscv_float16_type_node = make_node (REAL_TYPE);
+       TYPE_PRECISION (riscv_float16_type_node) = 16;
+       SET_TYPE_MODE (riscv_float16_type_node, HFmode);
+       layout_type (riscv_float16_type_node);
+     }
+   else
+     riscv_float16_type_node = float16_type_node;
+ 
+   if (!maybe_get_identifier ("_Float16"))
+     lang_hooks.types.register_builtin_type (riscv_float16_type_node,
+ 					    "_Float16");
+ }
+ 
  /* Implement TARGET_INIT_BUILTINS.  */
  
  void
  riscv_init_builtins (void)
  {
+   riscv_init_builtin_types ();
+   riscv_vector::init_builtins ();
+ 
    for (size_t i = 0; i < ARRAY_SIZE (riscv_builtins); i++)
      {
        const struct riscv_builtin_description *d = &riscv_builtins[i];
*************** riscv_init_builtins (void)
*** 180,186 ****
  	{
  	  tree type = riscv_build_function_type (d->prototype);
  	  riscv_builtin_decls[i]
! 	    = add_builtin_function (d->name, type, i, BUILT_IN_MD, NULL, NULL);
  	  riscv_builtin_decl_index[d->icode] = i;
  	}
      }
--- 252,261 ----
  	{
  	  tree type = riscv_build_function_type (d->prototype);
  	  riscv_builtin_decls[i]
! 	    = add_builtin_function (d->name, type,
! 				    (i << RISCV_BUILTIN_SHIFT)
! 				      + RISCV_BUILTIN_GENERAL,
! 				    BUILT_IN_MD, NULL, NULL);
  	  riscv_builtin_decl_index[d->icode] = i;
  	}
      }
*************** riscv_init_builtins (void)
*** 191,199 ****
  tree
  riscv_builtin_decl (unsigned int code, bool initialize_p ATTRIBUTE_UNUSED)
  {
!   if (code >= ARRAY_SIZE (riscv_builtins))
!     return error_mark_node;
!   return riscv_builtin_decls[code];
  }
  
  /* Take argument ARGNO from EXP's argument list and convert it into
--- 266,283 ----
  tree
  riscv_builtin_decl (unsigned int code, bool initialize_p ATTRIBUTE_UNUSED)
  {
!   unsigned int subcode = code >> RISCV_BUILTIN_SHIFT;
!   switch (code & RISCV_BUILTIN_CLASS)
!     {
!     case RISCV_BUILTIN_GENERAL:
!       if (subcode >= ARRAY_SIZE (riscv_builtins))
! 	return error_mark_node;
!       return riscv_builtin_decls[subcode];
! 
!     case RISCV_BUILTIN_VECTOR:
!       return riscv_vector::builtin_decl (subcode, initialize_p);
!     }
!   return error_mark_node;
  }
  
  /* Take argument ARGNO from EXP's argument list and convert it into
*************** riscv_expand_builtin_direct (enum insn_c
*** 251,256 ****
--- 335,368 ----
    return riscv_expand_builtin_insn (icode, opno, ops, has_target_p);
  }
  
+ /* Implement TARGET_GIMPLE_FOLD_BUILTIN.  */
+ 
+ bool
+ riscv_gimple_fold_builtin (gimple_stmt_iterator *gsi)
+ {
+   gcall *stmt = as_a<gcall *> (gsi_stmt (*gsi));
+   tree fndecl = gimple_call_fndecl (stmt);
+   unsigned int code = DECL_MD_FUNCTION_CODE (fndecl);
+   unsigned int subcode = code >> RISCV_BUILTIN_SHIFT;
+   gimple *new_stmt = NULL;
+   switch (code & RISCV_BUILTIN_CLASS)
+     {
+     case RISCV_BUILTIN_GENERAL:
+       new_stmt = NULL;
+       break;
+ 
+     case RISCV_BUILTIN_VECTOR:
+       new_stmt = riscv_vector::gimple_fold_builtin (subcode, gsi, stmt);
+       break;
+     }
+ 
+   if (!new_stmt)
+     return false;
+ 
+   gsi_replace (gsi, new_stmt, false);
+   return true;
+ }
+ 
  /* Implement TARGET_EXPAND_BUILTIN.  */
  
  rtx
*************** riscv_expand_builtin (tree exp, rtx targ
*** 260,274 ****
  {
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
    unsigned int fcode = DECL_MD_FUNCTION_CODE (fndecl);
!   const struct riscv_builtin_description *d = &riscv_builtins[fcode];
! 
!   switch (d->builtin_type)
      {
!     case RISCV_BUILTIN_DIRECT:
!       return riscv_expand_builtin_direct (d->icode, target, exp, true);
  
!     case RISCV_BUILTIN_DIRECT_NO_TARGET:
!       return riscv_expand_builtin_direct (d->icode, target, exp, false);
      }
  
    gcc_unreachable ();
--- 372,394 ----
  {
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
    unsigned int fcode = DECL_MD_FUNCTION_CODE (fndecl);
!   unsigned int subcode = fcode >> RISCV_BUILTIN_SHIFT;
!   switch (fcode & RISCV_BUILTIN_CLASS)
      {
!       case RISCV_BUILTIN_VECTOR:
! 	return riscv_vector::expand_builtin (subcode, exp, target);
!       case RISCV_BUILTIN_GENERAL: {
! 	const struct riscv_builtin_description *d = &riscv_builtins[subcode];
  
! 	switch (d->builtin_type)
! 	  {
! 	  case RISCV_BUILTIN_DIRECT:
! 	    return riscv_expand_builtin_direct (d->icode, target, exp, true);
! 
! 	  case RISCV_BUILTIN_DIRECT_NO_TARGET:
! 	    return riscv_expand_builtin_direct (d->icode, target, exp, false);
! 	  }
!       }
      }
  
    gcc_unreachable ();
*************** riscv_expand_builtin (tree exp, rtx targ
*** 279,285 ****
  void
  riscv_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
  {
!   if (!TARGET_HARD_FLOAT)
      return;
  
    tree frflags = GET_BUILTIN_DECL (CODE_FOR_riscv_frflags);
--- 399,405 ----
  void
  riscv_atomic_assign_expand_fenv (tree *hold, tree *clear, tree *update)
  {
!   if (!(TARGET_HARD_FLOAT || TARGET_ZFINX))
      return;
  
    tree frflags = GET_BUILTIN_DECL (CODE_FOR_riscv_frflags);
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-c.cc gcc-13.1.0/gcc/config/riscv/riscv-c.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* RISC-V-specific code for C family languages.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* RISC-V-specific code for C family languages.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 27,36 ****
--- 27,45 ----
  #include "tm.h"
  #include "c-family/c-common.h"
  #include "cpplib.h"
+ #include "c-family/c-pragma.h"
+ #include "target.h"
+ #include "tm_p.h"
  #include "riscv-subset.h"
  
  #define builtin_define(TXT) cpp_define (pfile, TXT)
  
+ static int
+ riscv_ext_version_value (unsigned major, unsigned minor)
+ {
+   return (major * 1000000) + (minor * 1000);
+ }
+ 
  /* Implement TARGET_CPU_CPP_BUILTINS.  */
  
  void
*************** riscv_cpu_cpp_builtins (cpp_reader *pfil
*** 58,64 ****
    if (TARGET_HARD_FLOAT)
      builtin_define_with_int_value ("__riscv_flen", UNITS_PER_FP_REG * 8);
  
!   if (TARGET_HARD_FLOAT && TARGET_FDIV)
      {
        builtin_define ("__riscv_fdiv");
        builtin_define ("__riscv_fsqrt");
--- 67,73 ----
    if (TARGET_HARD_FLOAT)
      builtin_define_with_int_value ("__riscv_flen", UNITS_PER_FP_REG * 8);
  
!   if ((TARGET_HARD_FLOAT || TARGET_ZFINX) && TARGET_FDIV)
      {
        builtin_define ("__riscv_fdiv");
        builtin_define ("__riscv_fsqrt");
*************** riscv_cpu_cpp_builtins (cpp_reader *pfil
*** 93,103 ****
        break;
  
      case CM_PIC:
-       /* __riscv_cmodel_pic is deprecated, and will removed in next GCC release.
- 	 see https://github.com/riscv/riscv-c-api-doc/pull/11  */
-       builtin_define ("__riscv_cmodel_pic");
-       /* FALLTHROUGH. */
- 
      case CM_MEDANY:
        builtin_define ("__riscv_cmodel_medany");
        break;
--- 102,107 ----
*************** riscv_cpu_cpp_builtins (cpp_reader *pfil
*** 120,126 ****
      builtin_define_with_int_value ("__riscv_v_elen_fp", 0);
  
    if (TARGET_MIN_VLEN)
!     builtin_define ("__riscv_vector");
  
    /* Define architecture extension test macros.  */
    builtin_define_with_int_value ("__riscv_arch_test", 1);
--- 124,134 ----
      builtin_define_with_int_value ("__riscv_v_elen_fp", 0);
  
    if (TARGET_MIN_VLEN)
!     {
!       builtin_define ("__riscv_vector");
!       builtin_define_with_int_value ("__riscv_v_intrinsic",
! 				     riscv_ext_version_value (0, 11));
!     }
  
    /* Define architecture extension test macros.  */
    builtin_define_with_int_value ("__riscv_arch_test", 1);
*************** riscv_cpu_cpp_builtins (cpp_reader *pfil
*** 143,157 ****
         subset != subset_list->end ();
         subset = subset->next)
      {
!       int version_value = (subset->major_version * 1000000)
! 			   + (subset->minor_version * 1000);
        /* Special rule for zicsr and zifencei, it's used for ISA spec 2.2 or
  	 earlier.  */
        if ((subset->name == "zicsr" || subset->name == "zifencei")
  	  && version_value == 0)
! 	version_value = 2000000;
  
        sprintf (buf, "__riscv_%s", subset->name.c_str ());
        builtin_define_with_int_value (buf, version_value);
      }
  }
--- 151,223 ----
         subset != subset_list->end ();
         subset = subset->next)
      {
!       int version_value = riscv_ext_version_value (subset->major_version,
! 						   subset->minor_version);
        /* Special rule for zicsr and zifencei, it's used for ISA spec 2.2 or
  	 earlier.  */
        if ((subset->name == "zicsr" || subset->name == "zifencei")
  	  && version_value == 0)
! 	version_value = riscv_ext_version_value (2, 0);
  
        sprintf (buf, "__riscv_%s", subset->name.c_str ());
        builtin_define_with_int_value (buf, version_value);
      }
  }
+ 
+ /* Implement "#pragma riscv intrinsic".  */
+ 
+ static void
+ riscv_pragma_intrinsic (cpp_reader *)
+ {
+   tree x;
+ 
+   if (pragma_lex (&x) != CPP_STRING)
+     {
+       error ("%<#pragma riscv intrinsic%> requires a string parameter");
+       return;
+     }
+ 
+   const char *name = TREE_STRING_POINTER (x);
+ 
+   if (strcmp (name, "vector") == 0)
+     {
+       if (!TARGET_VECTOR)
+ 	{
+ 	  error ("%<#pragma riscv intrinsic%> option %qs needs 'V' extension "
+ 		 "enabled",
+ 		 name);
+ 	  return;
+ 	}
+       riscv_vector::handle_pragma_vector ();
+     }
+   else
+     error ("unknown %<#pragma riscv intrinsic%> option %qs", name);
+ }
+ 
+ /* Implement TARGET_CHECK_BUILTIN_CALL.  */
+ static bool
+ riscv_check_builtin_call (location_t loc, vec<location_t> arg_loc, tree fndecl,
+ 			  tree orig_fndecl, unsigned int nargs, tree *args)
+ {
+   unsigned int code = DECL_MD_FUNCTION_CODE (fndecl);
+   unsigned int subcode = code >> RISCV_BUILTIN_SHIFT;
+   switch (code & RISCV_BUILTIN_CLASS)
+     {
+     case RISCV_BUILTIN_GENERAL:
+       return true;
+ 
+     case RISCV_BUILTIN_VECTOR:
+       return riscv_vector::check_builtin_call (loc, arg_loc, subcode,
+ 					       orig_fndecl, nargs, args);
+     }
+   gcc_unreachable ();
+ }
+ 
+ /* Implement REGISTER_TARGET_PRAGMAS.  */
+ 
+ void
+ riscv_register_pragmas (void)
+ {
+   targetm.check_builtin_call = riscv_check_builtin_call;
+   c_register_pragma ("riscv", "intrinsic", riscv_pragma_intrinsic);
+ }
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-cmo.def gcc-13.1.0/gcc/config/riscv/riscv-cmo.def
*** gcc-12.2.0/gcc/config/riscv/riscv-cmo.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-cmo.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,17 ----
+ // zicbom
+ RISCV_BUILTIN (clean_si, "zicbom_cbo_clean", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, clean32),
+ RISCV_BUILTIN (clean_di, "zicbom_cbo_clean", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, clean64),
+ 
+ RISCV_BUILTIN (flush_si, "zicbom_cbo_flush", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, flush32),
+ RISCV_BUILTIN (flush_di, "zicbom_cbo_flush", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, flush64),
+ 
+ RISCV_BUILTIN (inval_si, "zicbom_cbo_inval", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, inval32),
+ RISCV_BUILTIN (inval_di, "zicbom_cbo_inval", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, inval64),
+ 
+ // zicboz
+ RISCV_BUILTIN (zero_si, "zicboz_cbo_zero", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, zero32),
+ RISCV_BUILTIN (zero_di, "zicboz_cbo_zero", RISCV_BUILTIN_DIRECT_NO_TARGET, RISCV_VOID_FTYPE_VOID_PTR, zero64),
+ 
+ // zicbop
+ RISCV_BUILTIN (prefetchi_si, "zicbop_cbo_prefetchi", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, prefetchi32),
+ RISCV_BUILTIN (prefetchi_di, "zicbop_cbo_prefetchi", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, prefetchi64),
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-cores.def gcc-13.1.0/gcc/config/riscv/riscv-cores.def
*** gcc-12.2.0/gcc/config/riscv/riscv-cores.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-cores.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* List of supported core and tune info for RISC-V.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* List of supported core and tune info for RISC-V.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 17,35 ****
     along with GCC; see the file COPYING3.  If not see
     <http://www.gnu.org/licenses/>.  */
  
  /* This is a list of cores that implement RISC-V.
  
     Before using #include to read this file, define a macro:
  
!       RISCV_CORE(CORE_NAME, ARCH, MICRO_ARCH, TUNE_INFO)
  
     The CORE_NAME is the name of the core, represented as a string.
     The ARCH is the default arch of the core, represented as a string,
     can be NULL if no default arch.
     The MICRO_ARCH is the name of the core for which scheduling decisions
!    will be made, represented as an identifier.
!    The TUNE_INFO is the detail cost model for this core, represented as an
!    identifier, reference to riscv-tunes.def.  */
  
  RISCV_CORE("sifive-e20",      "rv32imc",    "rocket")
  RISCV_CORE("sifive-e21",      "rv32imac",   "rocket")
--- 17,62 ----
     along with GCC; see the file COPYING3.  If not see
     <http://www.gnu.org/licenses/>.  */
  
+ /* This is a list of tune that implement RISC-V.
+ 
+    Before using #include to read this file, define a macro:
+ 
+       RISCV_TUNE(TUNE_NAME, PIPELINE_MODEL, TUNE_INFO)
+ 
+    The TUNE_NAME is the name of the micro-arch, represented as a string.
+    The PIPELINE_MODEL is the pipeline model of the micro-arch, represented as a
+    string, defined in riscv.md.
+    The TUNE_INFO is the detail cost model for this core, represented as an
+    identifier, reference to riscv.cc.  */
+ 
+ #ifndef RISCV_TUNE
+ #define RISCV_TUNE(TUNE_NAME, PIPELINE_MODEL, TUNE_INFO)
+ #endif
+ 
+ RISCV_TUNE("rocket", generic, rocket_tune_info)
+ RISCV_TUNE("sifive-3-series", generic, rocket_tune_info)
+ RISCV_TUNE("sifive-5-series", generic, rocket_tune_info)
+ RISCV_TUNE("sifive-7-series", sifive_7, sifive_7_tune_info)
+ RISCV_TUNE("thead-c906", generic, thead_c906_tune_info)
+ RISCV_TUNE("size", generic, optimize_size_tune_info)
+ 
+ #undef RISCV_TUNE
+ 
  /* This is a list of cores that implement RISC-V.
  
     Before using #include to read this file, define a macro:
  
!       RISCV_CORE(CORE_NAME, ARCH, MICRO_ARCH)
  
     The CORE_NAME is the name of the core, represented as a string.
     The ARCH is the default arch of the core, represented as a string,
     can be NULL if no default arch.
     The MICRO_ARCH is the name of the core for which scheduling decisions
!    will be made, represented as an identifier.  */
! 
! #ifndef RISCV_CORE
! #define RISCV_CORE(CORE_NAME, ARCH, MICRO_ARCH)
! #endif
  
  RISCV_CORE("sifive-e20",      "rv32imc",    "rocket")
  RISCV_CORE("sifive-e21",      "rv32imac",   "rocket")
*************** RISCV_CORE("sifive-s76",      "rv64imafd
*** 46,49 ****
--- 73,80 ----
  RISCV_CORE("sifive-u54",      "rv64imafdc", "sifive-5-series")
  RISCV_CORE("sifive-u74",      "rv64imafdc", "sifive-7-series")
  
+ RISCV_CORE("thead-c906",      "rv64imafdc_xtheadba_xtheadbb_xtheadbs_xtheadcmo_"
+ 			      "xtheadcondmov_xtheadfmemidx_xtheadmac_"
+ 			      "xtheadmemidx_xtheadmempair_xtheadsync",
+ 			      "thead-c906")
  #undef RISCV_CORE
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-d.cc gcc-13.1.0/gcc/config/riscv/riscv-d.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the RISC-V architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the RISC-V architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "target.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-d.h gcc-13.1.0/gcc/config/riscv/riscv-d.h
*** gcc-12.2.0/gcc/config/riscv/riscv-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the RISC-V architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Routines implemented in riscv-d.cc  */
+ extern void riscv_d_target_versions (void);
+ extern void riscv_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS riscv_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO riscv_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-ftypes.def gcc-13.1.0/gcc/config/riscv/riscv-ftypes.def
*** gcc-12.2.0/gcc/config/riscv/riscv-ftypes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-ftypes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of prototypes for RISC-V built-in functions.  -*- C -*-
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Definitions of prototypes for RISC-V built-in functions.  -*- C -*-
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
*************** along with GCC; see the file COPYING3.
*** 27,30 ****
--- 27,44 ----
          argument type.  */
  
  DEF_RISCV_FTYPE (0, (USI))
+ DEF_RISCV_FTYPE (0, (VOID))
  DEF_RISCV_FTYPE (1, (VOID, USI))
+ DEF_RISCV_FTYPE (1, (VOID, VOID_PTR))
+ DEF_RISCV_FTYPE (1, (SI, SI))
+ DEF_RISCV_FTYPE (1, (DI, DI))
+ DEF_RISCV_FTYPE (2, (SI, QI, QI))
+ DEF_RISCV_FTYPE (2, (SI, HI, HI))
+ DEF_RISCV_FTYPE (2, (SI, SI, SI))
+ DEF_RISCV_FTYPE (2, (DI, QI, QI))
+ DEF_RISCV_FTYPE (2, (DI, HI, HI))
+ DEF_RISCV_FTYPE (2, (DI, SI, SI))
+ DEF_RISCV_FTYPE (2, (DI, DI, SI))
+ DEF_RISCV_FTYPE (2, (DI, DI, DI))
+ DEF_RISCV_FTYPE (3, (SI, SI, SI, SI))
+ DEF_RISCV_FTYPE (3, (DI, DI, DI, SI))
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-modes.def gcc-13.1.0/gcc/config/riscv/riscv-modes.def
*** gcc-12.2.0/gcc/config/riscv/riscv-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Extra machine modes for RISC-V target.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Extra machine modes for RISC-V target.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
*************** You should have received a copy of the G
*** 19,22 ****
--- 19,188 ----
  along with GCC; see the file COPYING3.  If not see
  <http://www.gnu.org/licenses/>.  */
  
+ FLOAT_MODE (HF, 2, ieee_half_format);
  FLOAT_MODE (TF, 16, ieee_quad_format);
+ 
+ /* Vector modes.  */
+ 
+ /* Encode the ratio of SEW/LMUL into the mask types. There are the following
+  * mask types.  */
+ 
+ /* | Mode     | MIN_VLEN = 32 | MIN_VLEN = 64 |
+    |          | SEW/LMUL      | SEW/LMUL      |
+    | VNx1BI   | 32            | 64            |
+    | VNx2BI   | 16            | 32            |
+    | VNx4BI   | 8             | 16            |
+    | VNx8BI   | 4             | 8             |
+    | VNx16BI  | 2             | 4             |
+    | VNx32BI  | 1             | 2             |
+    | VNx64BI  | N/A           | 1             |  */
+ 
+ /* For RVV modes, each boolean value occupies 1-bit.
+    4th argument is specify the minmial possible size of the vector mode,
+    and will adjust to the right size by ADJUST_BYTESIZE.  */
+ VECTOR_BOOL_MODE (VNx1BI, 1, BI, 1);
+ VECTOR_BOOL_MODE (VNx2BI, 2, BI, 1);
+ VECTOR_BOOL_MODE (VNx4BI, 4, BI, 1);
+ VECTOR_BOOL_MODE (VNx8BI, 8, BI, 1);
+ VECTOR_BOOL_MODE (VNx16BI, 16, BI, 2);
+ VECTOR_BOOL_MODE (VNx32BI, 32, BI, 4);
+ VECTOR_BOOL_MODE (VNx64BI, 64, BI, 8);
+ 
+ ADJUST_NUNITS (VNx1BI, riscv_v_adjust_nunits (VNx1BImode, 1));
+ ADJUST_NUNITS (VNx2BI, riscv_v_adjust_nunits (VNx2BImode, 2));
+ ADJUST_NUNITS (VNx4BI, riscv_v_adjust_nunits (VNx4BImode, 4));
+ ADJUST_NUNITS (VNx8BI, riscv_v_adjust_nunits (VNx8BImode, 8));
+ ADJUST_NUNITS (VNx16BI, riscv_v_adjust_nunits (VNx16BImode, 16));
+ ADJUST_NUNITS (VNx32BI, riscv_v_adjust_nunits (VNx32BImode, 32));
+ ADJUST_NUNITS (VNx64BI, riscv_v_adjust_nunits (VNx64BImode, 64));
+ 
+ ADJUST_ALIGNMENT (VNx1BI, 1);
+ ADJUST_ALIGNMENT (VNx2BI, 1);
+ ADJUST_ALIGNMENT (VNx4BI, 1);
+ ADJUST_ALIGNMENT (VNx8BI, 1);
+ ADJUST_ALIGNMENT (VNx16BI, 1);
+ ADJUST_ALIGNMENT (VNx32BI, 1);
+ ADJUST_ALIGNMENT (VNx64BI, 1);
+ 
+ ADJUST_BYTESIZE (VNx1BI, riscv_v_adjust_bytesize (VNx1BImode, 1));
+ ADJUST_BYTESIZE (VNx2BI, riscv_v_adjust_bytesize (VNx2BImode, 1));
+ ADJUST_BYTESIZE (VNx4BI, riscv_v_adjust_bytesize (VNx4BImode, 1));
+ ADJUST_BYTESIZE (VNx8BI, riscv_v_adjust_bytesize (VNx8BImode, 1));
+ ADJUST_BYTESIZE (VNx16BI, riscv_v_adjust_bytesize (VNx16BImode, 2));
+ ADJUST_BYTESIZE (VNx32BI, riscv_v_adjust_bytesize (VNx32BImode, 4));
+ ADJUST_BYTESIZE (VNx64BI, riscv_v_adjust_bytesize (VNx64BImode, 8));
+ 
+ ADJUST_PRECISION (VNx1BI, riscv_v_adjust_precision (VNx1BImode, 1));
+ ADJUST_PRECISION (VNx2BI, riscv_v_adjust_precision (VNx2BImode, 2));
+ ADJUST_PRECISION (VNx4BI, riscv_v_adjust_precision (VNx4BImode, 4));
+ ADJUST_PRECISION (VNx8BI, riscv_v_adjust_precision (VNx8BImode, 8));
+ ADJUST_PRECISION (VNx16BI, riscv_v_adjust_precision (VNx16BImode, 16));
+ ADJUST_PRECISION (VNx32BI, riscv_v_adjust_precision (VNx32BImode, 32));
+ ADJUST_PRECISION (VNx64BI, riscv_v_adjust_precision (VNx64BImode, 64));
+ 
+ /*
+    | Mode        | MIN_VLEN=32 | MIN_VLEN=32 | MIN_VLEN=64 | MIN_VLEN=64 |
+    |             | LMUL        | SEW/LMUL    | LMUL        | SEW/LMUL    |
+    | VNx1QI      | MF4         | 32          | MF8         | 64          |
+    | VNx2QI      | MF2         | 16          | MF4         | 32          |
+    | VNx4QI      | M1          | 8           | MF2         | 16          |
+    | VNx8QI      | M2          | 4           | M1          | 8           |
+    | VNx16QI     | M4          | 2           | M2          | 4           |
+    | VNx32QI     | M8          | 1           | M4          | 2           |
+    | VNx64QI     | N/A         | N/A         | M8          | 1           |
+    | VNx1(HI|HF) | MF2         | 32          | MF4         | 64          |
+    | VNx2(HI|HF) | M1          | 16          | MF2         | 32          |
+    | VNx4(HI|HF) | M2          | 8           | M1          | 16          |
+    | VNx8(HI|HF) | M4          | 4           | M2          | 8           |
+    | VNx16(HI|HF)| M8          | 2           | M4          | 4           |
+    | VNx32(HI|HF)| N/A         | N/A         | M8          | 2           |
+    | VNx1(SI|SF) | M1          | 32          | MF2         | 64          |
+    | VNx2(SI|SF) | M2          | 16          | M1          | 32          |
+    | VNx4(SI|SF) | M4          | 8           | M2          | 16          |
+    | VNx8(SI|SF) | M8          | 4           | M4          | 8           |
+    | VNx16(SI|SF)| N/A         | N/A         | M8          | 4           |
+    | VNx1(DI|DF) | N/A         | N/A         | M1          | 64          |
+    | VNx2(DI|DF) | N/A         | N/A         | M2          | 32          |
+    | VNx4(DI|DF) | N/A         | N/A         | M4          | 16          |
+    | VNx8(DI|DF) | N/A         | N/A         | M8          | 8           |
+ */
+ 
+ /* Define RVV modes whose sizes are multiples of 64-bit chunks.  */
+ #define RVV_MODES(NVECS, VB, VH, VS, VD)                                       \
+   VECTOR_MODES_WITH_PREFIX (VNx, INT, 8 * NVECS, 0);                           \
+   VECTOR_MODES_WITH_PREFIX (VNx, FLOAT, 8 * NVECS, 0);                         \
+                                                                                \
+   ADJUST_NUNITS (VB##QI, riscv_v_adjust_nunits (VB##QI##mode, NVECS * 8));     \
+   ADJUST_NUNITS (VH##HI, riscv_v_adjust_nunits (VH##HI##mode, NVECS * 4));     \
+   ADJUST_NUNITS (VS##SI, riscv_v_adjust_nunits (VS##SI##mode, NVECS * 2));     \
+   ADJUST_NUNITS (VD##DI, riscv_v_adjust_nunits (VD##DI##mode, NVECS));         \
+   ADJUST_NUNITS (VH##HF, riscv_v_adjust_nunits (VH##HF##mode, NVECS * 4));     \
+   ADJUST_NUNITS (VS##SF, riscv_v_adjust_nunits (VS##SF##mode, NVECS * 2));     \
+   ADJUST_NUNITS (VD##DF, riscv_v_adjust_nunits (VD##DF##mode, NVECS));         \
+                                                                                \
+   ADJUST_ALIGNMENT (VB##QI, 1);                                                \
+   ADJUST_ALIGNMENT (VH##HI, 2);                                                \
+   ADJUST_ALIGNMENT (VS##SI, 4);                                                \
+   ADJUST_ALIGNMENT (VD##DI, 8);                                                \
+   ADJUST_ALIGNMENT (VH##HF, 2);                                                \
+   ADJUST_ALIGNMENT (VS##SF, 4);                                                \
+   ADJUST_ALIGNMENT (VD##DF, 8);
+ 
+ /* 'VECTOR_MODES_WITH_PREFIX' does not allow ncomponents < 2.
+    So we use 'VECTOR_MODE_WITH_PREFIX' to define VNx1DImode and VNx1DFmode.  */
+ VECTOR_MODE_WITH_PREFIX (VNx, INT, DI, 1, 0);
+ VECTOR_MODE_WITH_PREFIX (VNx, FLOAT, DF, 1, 0);
+ RVV_MODES (1, VNx8, VNx4, VNx2, VNx1)
+ RVV_MODES (2, VNx16, VNx8, VNx4, VNx2)
+ RVV_MODES (4, VNx32, VNx16, VNx8, VNx4)
+ RVV_MODES (8, VNx64, VNx32, VNx16, VNx8)
+ 
+ VECTOR_MODES_WITH_PREFIX (VNx, INT, 4, 0);
+ VECTOR_MODES_WITH_PREFIX (VNx, FLOAT, 4, 0);
+ ADJUST_NUNITS (VNx4QI, riscv_v_adjust_nunits (VNx4QImode, 4));
+ ADJUST_NUNITS (VNx2HI, riscv_v_adjust_nunits (VNx2HImode, 2));
+ ADJUST_NUNITS (VNx2HF, riscv_v_adjust_nunits (VNx2HFmode, 2));
+ ADJUST_ALIGNMENT (VNx4QI, 1);
+ ADJUST_ALIGNMENT (VNx2HI, 2);
+ ADJUST_ALIGNMENT (VNx2HF, 2);
+ 
+ /* 'VECTOR_MODES_WITH_PREFIX' does not allow ncomponents < 2.
+    So we use 'VECTOR_MODE_WITH_PREFIX' to define VNx1SImode and VNx1SFmode.  */
+ VECTOR_MODE_WITH_PREFIX (VNx, INT, SI, 1, 0);
+ VECTOR_MODE_WITH_PREFIX (VNx, FLOAT, SF, 1, 0);
+ ADJUST_NUNITS (VNx1SI, riscv_v_adjust_nunits (VNx1SImode, 1));
+ ADJUST_NUNITS (VNx1SF, riscv_v_adjust_nunits (VNx1SFmode, 1));
+ ADJUST_ALIGNMENT (VNx1SI, 4);
+ ADJUST_ALIGNMENT (VNx1SF, 4);
+ 
+ VECTOR_MODES_WITH_PREFIX (VNx, INT, 2, 0);
+ ADJUST_NUNITS (VNx2QI, riscv_v_adjust_nunits (VNx2QImode, 2));
+ ADJUST_ALIGNMENT (VNx2QI, 1);
+ 
+ /* 'VECTOR_MODES_WITH_PREFIX' does not allow ncomponents < 2.
+    So we use 'VECTOR_MODE_WITH_PREFIX' to define VNx1HImode and VNx1HFmode.  */
+ VECTOR_MODE_WITH_PREFIX (VNx, INT, HI, 1, 0);
+ VECTOR_MODE_WITH_PREFIX (VNx, FLOAT, HF, 1, 0);
+ ADJUST_NUNITS (VNx1HI, riscv_v_adjust_nunits (VNx1HImode, 1));
+ ADJUST_NUNITS (VNx1HF, riscv_v_adjust_nunits (VNx1HFmode, 1));
+ ADJUST_ALIGNMENT (VNx1HI, 2);
+ ADJUST_ALIGNMENT (VNx1HF, 2);
+ 
+ /* 'VECTOR_MODES_WITH_PREFIX' does not allow ncomponents < 2.
+    So we use 'VECTOR_MODE_WITH_PREFIX' to define VNx1QImode.  */
+ VECTOR_MODE_WITH_PREFIX (VNx, INT, QI, 1, 0);
+ ADJUST_NUNITS (VNx1QI, riscv_v_adjust_nunits (VNx1QImode, 1));
+ ADJUST_ALIGNMENT (VNx1QI, 1);
+ 
+ /* TODO: According to RISC-V 'V' ISA spec, the maximun vector length can
+    be 65536 for a single vector register which means the vector mode in
+    GCC can be maximum = 65536 * 8 bits (LMUL=8).
+    However, 'GET_MODE_SIZE' is using poly_uint16/unsigned short which will
+    overflow if we specify vector-length = 65536. To support this feature,
+    we need to change the codes outside the RISC-V port. We will support it in
+    the future.  */
+ #define MAX_BITSIZE_MODE_ANY_MODE (4096 * 8)
+ 
+ /* Coefficient 1 is multiplied by the number of 64-bit/32-bit chunks in a vector
+    minus one.  */
+ #define NUM_POLY_INT_COEFFS 2
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-opts.h gcc-13.1.0/gcc/config/riscv/riscv-opts.h
*** gcc-12.2.0/gcc/config/riscv/riscv-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition of RISC-V target for GNU compiler.
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* Definition of RISC-V target for GNU compiler.
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
  
  This file is part of GCC.
*************** enum stack_protector_guard {
*** 73,78 ****
--- 73,81 ----
  #define TARGET_ZICSR    ((riscv_zi_subext & MASK_ZICSR) != 0)
  #define TARGET_ZIFENCEI ((riscv_zi_subext & MASK_ZIFENCEI) != 0)
  
+ #define MASK_ZAWRS   (1 << 0)
+ #define TARGET_ZAWRS ((riscv_za_subext & MASK_ZAWRS) != 0)
+ 
  #define MASK_ZBA      (1 << 0)
  #define MASK_ZBB      (1 << 1)
  #define MASK_ZBC      (1 << 2)
*************** enum stack_protector_guard {
*** 83,88 ****
--- 86,101 ----
  #define TARGET_ZBC    ((riscv_zb_subext & MASK_ZBC) != 0)
  #define TARGET_ZBS    ((riscv_zb_subext & MASK_ZBS) != 0)
  
+ #define MASK_ZFINX      (1 << 0)
+ #define MASK_ZDINX      (1 << 1)
+ #define MASK_ZHINX      (1 << 2)
+ #define MASK_ZHINXMIN   (1 << 3)
+ 
+ #define TARGET_ZFINX    ((riscv_zinx_subext & MASK_ZFINX) != 0)
+ #define TARGET_ZDINX    ((riscv_zinx_subext & MASK_ZDINX) != 0)
+ #define TARGET_ZHINX    ((riscv_zinx_subext & MASK_ZHINX) != 0)
+ #define TARGET_ZHINXMIN ((riscv_zinx_subext & MASK_ZHINXMIN) != 0)
+ 
  #define MASK_ZBKB     (1 << 0)
  #define MASK_ZBKC     (1 << 1)
  #define MASK_ZBKX     (1 << 2)
*************** enum stack_protector_guard {
*** 145,150 ****
--- 158,186 ----
  #define TARGET_ZVL32768B ((riscv_zvl_flags & MASK_ZVL32768B) != 0)
  #define TARGET_ZVL65536B ((riscv_zvl_flags & MASK_ZVL65536B) != 0)
  
+ #define MASK_ZICBOZ   (1 << 0)
+ #define MASK_ZICBOM   (1 << 1)
+ #define MASK_ZICBOP   (1 << 2)
+ 
+ #define TARGET_ZICBOZ ((riscv_zicmo_subext & MASK_ZICBOZ) != 0)
+ #define TARGET_ZICBOM ((riscv_zicmo_subext & MASK_ZICBOM) != 0)
+ #define TARGET_ZICBOP ((riscv_zicmo_subext & MASK_ZICBOP) != 0)
+ 
+ #define MASK_ZFHMIN   (1 << 0)
+ #define MASK_ZFH      (1 << 1)
+ 
+ #define TARGET_ZFHMIN ((riscv_zf_subext & MASK_ZFHMIN) != 0)
+ #define TARGET_ZFH    ((riscv_zf_subext & MASK_ZFH) != 0)
+ 
+ #define MASK_ZMMUL      (1 << 0)
+ #define TARGET_ZMMUL    ((riscv_zm_subext & MASK_ZMMUL) != 0)
+ 
+ #define MASK_SVINVAL (1 << 0)
+ #define MASK_SVNAPOT (1 << 1)
+ 
+ #define TARGET_SVINVAL ((riscv_sv_subext & MASK_SVINVAL) != 0)
+ #define TARGET_SVNAPOT ((riscv_sv_subext & MASK_SVNAPOT) != 0)
+ 
  /* Bit of riscv_zvl_flags will set contintuly, N-1 bit will set if N-bit is
     set, e.g. MASK_ZVL64B has set then MASK_ZVL32B is set, so we can use
     popcount to caclulate the minimal VLEN.  */
*************** enum stack_protector_guard {
*** 153,156 ****
--- 189,218 ----
     ? 0 \
     : 32 << (__builtin_popcount (riscv_zvl_flags) - 1))
  
+ #define MASK_XTHEADBA      (1 << 0)
+ #define MASK_XTHEADBB      (1 << 1)
+ #define MASK_XTHEADBS      (1 << 2)
+ #define MASK_XTHEADCMO     (1 << 3)
+ #define MASK_XTHEADCONDMOV (1 << 4)
+ #define MASK_XTHEADFMEMIDX (1 << 5)
+ #define MASK_XTHEADFMV     (1 << 6)
+ #define MASK_XTHEADINT     (1 << 7)
+ #define MASK_XTHEADMAC     (1 << 8)
+ #define MASK_XTHEADMEMIDX  (1 << 9)
+ #define MASK_XTHEADMEMPAIR (1 << 10)
+ #define MASK_XTHEADSYNC    (1 << 11)
+ 
+ #define TARGET_XTHEADBA      ((riscv_xthead_subext & MASK_XTHEADBA) != 0)
+ #define TARGET_XTHEADBB      ((riscv_xthead_subext & MASK_XTHEADBB) != 0)
+ #define TARGET_XTHEADBS      ((riscv_xthead_subext & MASK_XTHEADBS) != 0)
+ #define TARGET_XTHEADCMO     ((riscv_xthead_subext & MASK_XTHEADCMO) != 0)
+ #define TARGET_XTHEADCONDMOV ((riscv_xthead_subext & MASK_XTHEADCONDMOV) != 0)
+ #define TARGET_XTHEADFMEMIDX ((riscv_xthead_subext & MASK_XTHEADFMEMIDX) != 0)
+ #define TARGET_XTHEADFMV     ((riscv_xthead_subext & MASK_XTHEADFMV) != 0)
+ #define TARGET_XTHEADINT     ((riscv_xthead_subext & MASK_XTHEADINT) != 0)
+ #define TARGET_XTHEADMAC     ((riscv_xthead_subext & MASK_XTHEADMAC) != 0)
+ #define TARGET_XTHEADMEMIDX  ((riscv_xthead_subext & MASK_XTHEADMEMIDX) != 0)
+ #define TARGET_XTHEADMEMPAIR ((riscv_xthead_subext & MASK_XTHEADMEMPAIR) != 0)
+ #define TARGET_XTHEADSYNC    ((riscv_xthead_subext & MASK_XTHEADSYNC) != 0)
+ 
  #endif /* ! GCC_RISCV_OPTS_H */
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-passes.def gcc-13.1.0/gcc/config/riscv/riscv-passes.def
*** gcc-12.2.0/gcc/config/riscv/riscv-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Declaration of target-specific passes for RISC-V.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Declaration of target-specific passes for RISC-V.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 18,20 ****
--- 18,21 ----
     <http://www.gnu.org/licenses/>.  */
  
  INSERT_PASS_AFTER (pass_rtl_store_motion, 1, pass_shorten_memrefs);
+ INSERT_PASS_BEFORE (pass_fast_rtl_dce, 1, pass_vsetvl);
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-protos.h gcc-13.1.0/gcc/config/riscv/riscv-protos.h
*** gcc-12.2.0/gcc/config/riscv/riscv-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition of RISC-V target for GNU compiler.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Definition of RISC-V target for GNU compiler.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
*************** extern bool riscv_split_64bit_move_p (rt
*** 54,70 ****
  extern void riscv_split_doubleword_move (rtx, rtx);
  extern const char *riscv_output_move (rtx, rtx);
  extern const char *riscv_output_return ();
  #ifdef RTX_CODE
  extern void riscv_expand_int_scc (rtx, enum rtx_code, rtx, rtx);
  extern void riscv_expand_float_scc (rtx, enum rtx_code, rtx, rtx);
  extern void riscv_expand_conditional_branch (rtx, enum rtx_code, rtx, rtx);
- extern void riscv_expand_conditional_move (rtx, rtx, rtx, rtx_code, rtx, rtx);
  #endif
  extern rtx riscv_legitimize_call_address (rtx);
  extern void riscv_set_return_address (rtx, rtx);
  extern bool riscv_expand_block_move (rtx, rtx, rtx);
  extern rtx riscv_return_addr (int, rtx);
! extern HOST_WIDE_INT riscv_initial_elimination_offset (int, int);
  extern void riscv_expand_prologue (void);
  extern void riscv_expand_epilogue (int);
  extern bool riscv_epilogue_uses (unsigned int);
--- 54,71 ----
  extern void riscv_split_doubleword_move (rtx, rtx);
  extern const char *riscv_output_move (rtx, rtx);
  extern const char *riscv_output_return ();
+ 
  #ifdef RTX_CODE
  extern void riscv_expand_int_scc (rtx, enum rtx_code, rtx, rtx);
  extern void riscv_expand_float_scc (rtx, enum rtx_code, rtx, rtx);
  extern void riscv_expand_conditional_branch (rtx, enum rtx_code, rtx, rtx);
  #endif
+ extern bool riscv_expand_conditional_move (rtx, rtx, rtx, rtx);
  extern rtx riscv_legitimize_call_address (rtx);
  extern void riscv_set_return_address (rtx, rtx);
  extern bool riscv_expand_block_move (rtx, rtx, rtx);
  extern rtx riscv_return_addr (int, rtx);
! extern poly_int64 riscv_initial_elimination_offset (int, int);
  extern void riscv_expand_prologue (void);
  extern void riscv_expand_epilogue (int);
  extern bool riscv_epilogue_uses (unsigned int);
*************** extern bool riscv_expand_block_move (rtx
*** 74,99 ****
  extern bool riscv_store_data_bypass_p (rtx_insn *, rtx_insn *);
  extern rtx riscv_gen_gpr_save_insn (struct riscv_frame_info *);
  extern bool riscv_gpr_save_operation_p (rtx);
  
  /* Routines implemented in riscv-c.cc.  */
  void riscv_cpu_cpp_builtins (cpp_reader *);
! 
! /* Routines implemented in riscv-d.cc  */
! extern void riscv_d_target_versions (void);
! extern void riscv_d_register_target_info (void);
  
  /* Routines implemented in riscv-builtins.cc.  */
  extern void riscv_atomic_assign_expand_fenv (tree *, tree *, tree *);
  extern rtx riscv_expand_builtin (tree, rtx, rtx, machine_mode, int);
  extern tree riscv_builtin_decl (unsigned int, bool);
  extern void riscv_init_builtins (void);
  
  /* Routines implemented in riscv-common.cc.  */
  extern std::string riscv_arch_str (bool version_p = true);
  
  extern bool riscv_hard_regno_rename_ok (unsigned, unsigned);
  
  rtl_opt_pass * make_pass_shorten_memrefs (gcc::context *ctxt);
  
  /* Information about one CPU we know about.  */
  struct riscv_cpu_info {
--- 75,104 ----
  extern bool riscv_store_data_bypass_p (rtx_insn *, rtx_insn *);
  extern rtx riscv_gen_gpr_save_insn (struct riscv_frame_info *);
  extern bool riscv_gpr_save_operation_p (rtx);
+ extern void riscv_reinit (void);
+ extern poly_uint64 riscv_regmode_natural_size (machine_mode);
+ extern bool riscv_v_ext_vector_mode_p (machine_mode);
+ extern bool riscv_shamt_matches_mask_p (int, HOST_WIDE_INT);
  
  /* Routines implemented in riscv-c.cc.  */
  void riscv_cpu_cpp_builtins (cpp_reader *);
! void riscv_register_pragmas (void);
  
  /* Routines implemented in riscv-builtins.cc.  */
  extern void riscv_atomic_assign_expand_fenv (tree *, tree *, tree *);
+ extern bool riscv_gimple_fold_builtin (gimple_stmt_iterator *);
  extern rtx riscv_expand_builtin (tree, rtx, rtx, machine_mode, int);
  extern tree riscv_builtin_decl (unsigned int, bool);
  extern void riscv_init_builtins (void);
  
  /* Routines implemented in riscv-common.cc.  */
  extern std::string riscv_arch_str (bool version_p = true);
+ extern void riscv_parse_arch_string (const char *, struct gcc_options *, location_t);
  
  extern bool riscv_hard_regno_rename_ok (unsigned, unsigned);
  
  rtl_opt_pass * make_pass_shorten_memrefs (gcc::context *ctxt);
+ rtl_opt_pass * make_pass_vsetvl (gcc::context *ctxt);
  
  /* Information about one CPU we know about.  */
  struct riscv_cpu_info {
*************** struct riscv_cpu_info {
*** 109,112 ****
--- 114,240 ----
  
  extern const riscv_cpu_info *riscv_find_cpu (const char *);
  
+ /* Routines implemented in riscv-selftests.cc.  */
+ #if CHECKING_P
+ namespace selftest {
+ void riscv_run_selftests (void);
+ } // namespace selftest
+ #endif
+ 
+ namespace riscv_vector {
+ #define RVV_VLMAX gen_rtx_REG (Pmode, X0_REGNUM)
+ #define RVV_VUNDEF(MODE)                                                       \
+   gen_rtx_UNSPEC (MODE, gen_rtvec (1, gen_rtx_REG (SImode, X0_REGNUM)),        \
+ 		  UNSPEC_VUNDEF)
+ enum vlmul_type
+ {
+   LMUL_1 = 0,
+   LMUL_2 = 1,
+   LMUL_4 = 2,
+   LMUL_8 = 3,
+   LMUL_RESERVED = 4,
+   LMUL_F8 = 5,
+   LMUL_F4 = 6,
+   LMUL_F2 = 7,
+   NUM_LMUL = 8
+ };
+ 
+ enum avl_type
+ {
+   NONVLMAX,
+   VLMAX,
+ };
+ /* Routines implemented in riscv-vector-builtins.cc.  */
+ void init_builtins (void);
+ const char *mangle_builtin_type (const_tree);
+ #ifdef GCC_TARGET_H
+ bool verify_type_context (location_t, type_context_kind, const_tree, bool);
+ #endif
+ void handle_pragma_vector (void);
+ tree builtin_decl (unsigned, bool);
+ gimple *gimple_fold_builtin (unsigned int, gimple_stmt_iterator *, gcall *);
+ rtx expand_builtin (unsigned int, tree, rtx);
+ bool check_builtin_call (location_t, vec<location_t>, unsigned int,
+ 			   tree, unsigned int, tree *);
+ bool const_vec_all_same_in_range_p (rtx, HOST_WIDE_INT, HOST_WIDE_INT);
+ bool legitimize_move (rtx, rtx, machine_mode);
+ void emit_vlmax_vsetvl (machine_mode, rtx);
+ void emit_hard_vlmax_vsetvl (machine_mode, rtx);
+ void emit_vlmax_op (unsigned, rtx, rtx, machine_mode);
+ void emit_vlmax_op (unsigned, rtx, rtx, rtx, machine_mode);
+ void emit_nonvlmax_op (unsigned, rtx, rtx, rtx, machine_mode);
+ enum vlmul_type get_vlmul (machine_mode);
+ unsigned int get_ratio (machine_mode);
+ int get_ta (rtx);
+ int get_ma (rtx);
+ int get_avl_type (rtx);
+ unsigned int calculate_ratio (unsigned int, enum vlmul_type);
+ enum tail_policy
+ {
+   TAIL_UNDISTURBED = 0,
+   TAIL_AGNOSTIC = 1,
+   TAIL_ANY = 2,
+ };
+ 
+ enum mask_policy
+ {
+   MASK_UNDISTURBED = 0,
+   MASK_AGNOSTIC = 1,
+   MASK_ANY = 2,
+ };
+ enum tail_policy get_prefer_tail_policy ();
+ enum mask_policy get_prefer_mask_policy ();
+ rtx get_avl_type_rtx (enum avl_type);
+ opt_machine_mode get_vector_mode (scalar_mode, poly_uint64);
+ bool simm5_p (rtx);
+ bool neg_simm5_p (rtx);
+ #ifdef RTX_CODE
+ bool has_vi_variant_p (rtx_code, rtx);
+ #endif
+ bool sew64_scalar_helper (rtx *, rtx *, rtx, machine_mode, machine_mode,
+ 			  bool, void (*)(rtx *, rtx));
+ rtx gen_scalar_move_mask (machine_mode);
+ 
+ /* RVV vector register sizes.
+    TODO: Currently, we only add RVV_32/RVV_64/RVV_128, we may need to
+    support other values in the future.  */
+ enum vlen_enum
+ {
+   RVV_32 = 32,
+   RVV_64 = 64,
+   RVV_65536 = 65536
+ };
+ bool slide1_sew64_helper (int, machine_mode, machine_mode,
+ 			  machine_mode, rtx *);
+ rtx gen_avl_for_scalar_move (rtx);
+ }
+ 
+ /* We classify builtin types into two classes:
+    1. General builtin class which is defined in riscv_builtins.
+    2. Vector builtin class which is a special builtin architecture
+       that implement intrinsic short into "pragma".  */
+ enum riscv_builtin_class
+ {
+   RISCV_BUILTIN_GENERAL,
+   RISCV_BUILTIN_VECTOR
+ };
+ 
+ const unsigned int RISCV_BUILTIN_SHIFT = 1;
+ 
+ /* Mask that selects the riscv_builtin_class part of a function code.  */
+ const unsigned int RISCV_BUILTIN_CLASS = (1 << RISCV_BUILTIN_SHIFT) - 1;
+ 
+ /* Routines implemented in thead.cc.  */
+ extern bool th_mempair_operands_p (rtx[4], bool, machine_mode);
+ extern void th_mempair_order_operands (rtx[4], bool, machine_mode);
+ extern void th_mempair_prepare_save_restore_operands (rtx[4], bool,
+ 						      machine_mode,
+ 						      int, HOST_WIDE_INT,
+ 						      int, HOST_WIDE_INT);
+ extern void th_mempair_save_restore_regs (rtx[4], bool, machine_mode);
+ #ifdef RTX_CODE
+ extern const char*
+ th_mempair_output_move (rtx[4], bool, machine_mode, RTX_CODE);
+ #endif
+ 
  #endif /* ! GCC_RISCV_PROTOS_H */
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-scalar-crypto.def gcc-13.1.0/gcc/config/riscv/riscv-scalar-crypto.def
*** gcc-12.2.0/gcc/config/riscv/riscv-scalar-crypto.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-scalar-crypto.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,94 ----
+ /* Builtin functions for RISC-V Scalar Cryptography extensions.
+    Copyright (C) 2023 Free Software Foundation, Inc.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ // ZBKB
+ RISCV_BUILTIN (pack_sihi, "pack", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_HI_HI, crypto_zbkb32),
+ RISCV_BUILTIN (pack_disi, "pack", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_SI_SI, crypto_zbkb64),
+ 
+ RISCV_BUILTIN (packh_si, "packh", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_QI_QI, crypto_zbkb32),
+ RISCV_BUILTIN (packh_di, "packh", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_QI_QI, crypto_zbkb64),
+ 
+ RISCV_BUILTIN (packw, "packw", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_HI_HI, crypto_zbkb64),
+ 
+ RISCV_BUILTIN (zip, "zip", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zbkb32),
+ RISCV_BUILTIN (unzip, "unzip", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zbkb32),
+ 
+ RISCV_BUILTIN (brev8_si, "brev8", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zbkb32),
+ RISCV_BUILTIN (brev8_di, "brev8", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zbkb64),
+ 
+ // ZBKC
+ RISCV_BUILTIN (clmul_si, "clmul", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, crypto_zbkc32),
+ RISCV_BUILTIN (clmul_di, "clmul", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI_DI, crypto_zbkc64),
+ RISCV_BUILTIN (clmulh_si, "clmulh", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, crypto_zbkc32),
+ RISCV_BUILTIN (clmulh_di, "clmulh", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI_DI, crypto_zbkc64),
+ 
+ // ZBKX
+ RISCV_BUILTIN (xperm4_si, "xperm4", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, crypto_zbkx32),
+ RISCV_BUILTIN (xperm4_di, "xperm4", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI_DI, crypto_zbkx64),
+ RISCV_BUILTIN (xperm8_si, "xperm8", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI, crypto_zbkx32),
+ RISCV_BUILTIN (xperm8_di, "xperm8", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI_DI, crypto_zbkx64),
+ 
+ // ZKND
+ DIRECT_BUILTIN (aes32dsi, RISCV_SI_FTYPE_SI_SI_SI, crypto_zknd32),
+ DIRECT_BUILTIN (aes32dsmi, RISCV_SI_FTYPE_SI_SI_SI, crypto_zknd32),
+ DIRECT_BUILTIN (aes64ds, RISCV_DI_FTYPE_DI_DI, crypto_zknd64),
+ DIRECT_BUILTIN (aes64dsm, RISCV_DI_FTYPE_DI_DI, crypto_zknd64),
+ DIRECT_BUILTIN (aes64im, RISCV_DI_FTYPE_DI, crypto_zknd64),
+ DIRECT_BUILTIN (aes64ks1i, RISCV_DI_FTYPE_DI_SI, crypto_zkne_or_zknd),
+ DIRECT_BUILTIN (aes64ks2, RISCV_DI_FTYPE_DI_DI, crypto_zkne_or_zknd),
+ 
+ // ZKNE
+ DIRECT_BUILTIN (aes32esi, RISCV_SI_FTYPE_SI_SI_SI, crypto_zkne32),
+ DIRECT_BUILTIN (aes32esmi, RISCV_SI_FTYPE_SI_SI_SI, crypto_zkne32),
+ DIRECT_BUILTIN (aes64es, RISCV_DI_FTYPE_DI_DI, crypto_zkne64),
+ DIRECT_BUILTIN (aes64esm, RISCV_DI_FTYPE_DI_DI, crypto_zkne64),
+ 
+ // ZKNH
+ RISCV_BUILTIN (sha256sig0_si, "sha256sig0", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zknh32),
+ RISCV_BUILTIN (sha256sig0_di, "sha256sig0", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ RISCV_BUILTIN (sha256sig1_si, "sha256sig1", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zknh32),
+ RISCV_BUILTIN (sha256sig1_di, "sha256sig1", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ RISCV_BUILTIN (sha256sum0_si, "sha256sum0", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zknh32),
+ RISCV_BUILTIN (sha256sum0_di, "sha256sum0", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ RISCV_BUILTIN (sha256sum1_si, "sha256sum1", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zknh32),
+ RISCV_BUILTIN (sha256sum1_di, "sha256sum1", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ 
+ DIRECT_BUILTIN (sha512sig0h, RISCV_SI_FTYPE_SI_SI, crypto_zknh32),
+ DIRECT_BUILTIN (sha512sig0l, RISCV_SI_FTYPE_SI_SI, crypto_zknh32),
+ DIRECT_BUILTIN (sha512sig1h, RISCV_SI_FTYPE_SI_SI, crypto_zknh32),
+ DIRECT_BUILTIN (sha512sig1l, RISCV_SI_FTYPE_SI_SI, crypto_zknh32),
+ DIRECT_BUILTIN (sha512sum0r, RISCV_SI_FTYPE_SI_SI, crypto_zknh32),
+ DIRECT_BUILTIN (sha512sum1r, RISCV_SI_FTYPE_SI_SI, crypto_zknh32),
+ 
+ DIRECT_BUILTIN (sha512sig0, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ DIRECT_BUILTIN (sha512sig1, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ DIRECT_BUILTIN (sha512sum0, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ DIRECT_BUILTIN (sha512sum1, RISCV_DI_FTYPE_DI, crypto_zknh64),
+ 
+ // ZKSH
+ RISCV_BUILTIN (sm3p0_si, "sm3p0", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zksh32),
+ RISCV_BUILTIN (sm3p0_di, "sm3p0", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zksh64),
+ RISCV_BUILTIN (sm3p1_si, "sm3p1", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI, crypto_zksh32),
+ RISCV_BUILTIN (sm3p1_di, "sm3p1", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI, crypto_zksh64),
+ 
+ // ZKSED
+ RISCV_BUILTIN (sm4ed_si, "sm4ed", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI, crypto_zksed32),
+ RISCV_BUILTIN (sm4ed_di, "sm4ed", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI_DI_SI, crypto_zksed64),
+ RISCV_BUILTIN (sm4ks_si, "sm4ks", RISCV_BUILTIN_DIRECT, RISCV_SI_FTYPE_SI_SI_SI, crypto_zksed32),
+ RISCV_BUILTIN (sm4ks_di, "sm4ks", RISCV_BUILTIN_DIRECT, RISCV_DI_FTYPE_DI_DI_SI, crypto_zksed64),
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-selftests.cc gcc-13.1.0/gcc/config/riscv/riscv-selftests.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-selftests.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-selftests.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,368 ----
+ /* This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #define INCLUDE_STRING
+ #define INCLUDE_MAP
+ #define INCLUDE_VECTOR
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "rtl.h"
+ #include "tree.h"
+ #include "stringpool.h"
+ #include "function.h"
+ #include "memmodel.h"
+ #include "emit-rtl.h"
+ #include "tm_p.h"
+ #include "expr.h"
+ #include "selftest.h"
+ #include "selftest-rtl.h"
+ #include "insn-attr.h"
+ #include "target.h"
+ #include "optabs.h"
+ 
+ #if CHECKING_P
+ using namespace selftest;
+ class riscv_selftest_arch_abi_setter
+ {
+ private:
+   std::string m_arch_backup;
+   enum riscv_abi_type m_abi_backup;
+ 
+ public:
+   riscv_selftest_arch_abi_setter (const char *arch, enum riscv_abi_type abi)
+     : m_arch_backup (riscv_arch_str ()), m_abi_backup (riscv_abi)
+   {
+     riscv_parse_arch_string (arch, &global_options, UNKNOWN_LOCATION);
+     riscv_abi = abi;
+     riscv_reinit ();
+   }
+   ~riscv_selftest_arch_abi_setter ()
+   {
+     riscv_parse_arch_string (m_arch_backup.c_str (), &global_options,
+ 			     UNKNOWN_LOCATION);
+     riscv_abi = m_abi_backup;
+     riscv_reinit ();
+   }
+ };
+ 
+ static poly_int64
+ eval_value (rtx x, std::map<unsigned, rtx> &regno_to_rtx)
+ {
+   if (!REG_P (x))
+     {
+       debug (x);
+       gcc_unreachable ();
+     }
+ 
+   rtx expr = NULL_RTX;
+   unsigned regno = REGNO (x);
+   expr = regno_to_rtx[regno];
+ 
+   poly_int64 op1_val = 0;
+   poly_int64 op2_val = 0;
+   if (UNARY_P (expr))
+     {
+       op1_val = eval_value (XEXP (expr, 0), regno_to_rtx);
+     }
+   if (BINARY_P (expr))
+     {
+       op1_val = eval_value (XEXP (expr, 0), regno_to_rtx);
+       op2_val = eval_value (XEXP (expr, 1), regno_to_rtx);
+     }
+ 
+   switch (GET_CODE (expr))
+     {
+     case CONST_POLY_INT:
+       return rtx_to_poly_int64 (expr);
+     case CONST_INT:
+       return INTVAL (expr);
+ 
+     case MULT:
+       if (op1_val.is_constant ())
+ 	return op1_val.to_constant () * op2_val;
+       else if (op2_val.is_constant ())
+ 	return op1_val * op2_val.to_constant ();
+       else
+ 	gcc_unreachable ();
+     case PLUS:
+       return op1_val + op2_val;
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ /* Calculate the value of x register in the sequence.  */
+ static poly_int64
+ calculate_x_in_sequence (rtx reg)
+ {
+   std::map<unsigned, rtx> regno_to_rtx;
+   rtx_insn *insn;
+   for (insn = get_insns (); insn; insn = NEXT_INSN (insn))
+     {
+       rtx pat = PATTERN (insn);
+       rtx dest = SET_DEST (pat);
+ 
+       if (GET_CODE (pat) == CLOBBER)
+ 	continue;
+ 
+       if (SUBREG_P (dest))
+ 	continue;
+ 
+       gcc_assert (REG_P (dest));
+       rtx note = find_reg_equal_equiv_note (insn);
+       unsigned regno = REGNO (dest);
+       if (note)
+ 	regno_to_rtx[regno] = XEXP (note, 0);
+       else
+ 	regno_to_rtx[regno] = SET_SRC (pat);
+     }
+ 
+   return eval_value (reg, regno_to_rtx);
+ }
+ 
+ typedef enum
+ {
+   POLY_TEST_DIMODE,
+   POLY_TEST_PMODE
+ } poly_test_mode_t;
+ 
+ static void
+ simple_poly_selftest (const char *arch, enum riscv_abi_type abi,
+ 		      const std::vector<machine_mode> &modes)
+ {
+   riscv_selftest_arch_abi_setter rv (arch, abi);
+   rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
+   set_new_first_and_last_insn (NULL, NULL);
+ 
+   for (machine_mode mode : modes)
+     emit_move_insn (gen_reg_rtx (mode),
+ 		    gen_int_mode (BYTES_PER_RISCV_VECTOR, mode));
+ }
+ 
+ static void
+ run_poly_int_selftest (const char *arch, enum riscv_abi_type abi,
+ 		       poly_test_mode_t test_mode,
+ 		       const std::vector<poly_int64> &worklist)
+ {
+   riscv_selftest_arch_abi_setter rv (arch, abi);
+   rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
+   set_new_first_and_last_insn (NULL, NULL);
+   machine_mode mode = VOIDmode;
+ 
+   switch (test_mode)
+     {
+     case POLY_TEST_DIMODE:
+       mode = DImode;
+       break;
+     case POLY_TEST_PMODE:
+       mode = Pmode;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ 
+   for (const poly_int64 &poly_val : worklist)
+     {
+       start_sequence ();
+       rtx dest = gen_reg_rtx (mode);
+       emit_move_insn (dest, gen_int_mode (poly_val, mode));
+       ASSERT_TRUE (known_eq (calculate_x_in_sequence (dest), poly_val));
+       end_sequence ();
+     }
+ }
+ 
+ static void
+ run_poly_int_selftests (void)
+ {
+   std::vector<poly_int64> worklist
+     = {BYTES_PER_RISCV_VECTOR,	    BYTES_PER_RISCV_VECTOR * 8,
+        BYTES_PER_RISCV_VECTOR * 32, -BYTES_PER_RISCV_VECTOR * 8,
+        -BYTES_PER_RISCV_VECTOR * 32, BYTES_PER_RISCV_VECTOR * 7,
+        BYTES_PER_RISCV_VECTOR * 31, -BYTES_PER_RISCV_VECTOR * 7,
+        -BYTES_PER_RISCV_VECTOR * 31, BYTES_PER_RISCV_VECTOR * 9,
+        BYTES_PER_RISCV_VECTOR * 33, -BYTES_PER_RISCV_VECTOR * 9,
+        -BYTES_PER_RISCV_VECTOR * 33, poly_int64 (207, 0),
+        poly_int64 (-207, 0),	    poly_int64 (0, 207),
+        poly_int64 (0, -207),	    poly_int64 (5555, 0),
+        poly_int64 (0, 5555),	    poly_int64 (4096, 4096),
+        poly_int64 (17, 4088),	    poly_int64 (3889, 4104),
+        poly_int64 (-4096, -4096),   poly_int64 (219, -4088),
+        poly_int64 (-4309, -4104),   poly_int64 (-7337, 88),
+        poly_int64 (9317, -88),	    poly_int64 (4, 4),
+        poly_int64 (17, 4),	    poly_int64 (-7337, 4),
+        poly_int64 (-4, -4),	    poly_int64 (-389, -4),
+        poly_int64 (4789, -4),	    poly_int64 (-5977, 1508),
+        poly_int64 (219, -1508),	    poly_int64 (2, 2),
+        poly_int64 (33, 2),	    poly_int64 (-7337, 2),
+        poly_int64 (-2, -2),	    poly_int64 (-389, -2),
+        poly_int64 (4789, -2),	    poly_int64 (-3567, 954),
+        poly_int64 (945, -954),	    poly_int64 (1, 1),
+        poly_int64 (977, 1),	    poly_int64 (-339, 1),
+        poly_int64 (-1, -1),	    poly_int64 (-12, -1),
+        poly_int64 (44, -1),	    poly_int64 (9567, 77),
+        poly_int64 (3467, -77)};
+ 
+   simple_poly_selftest ("rv64imafdv", ABI_LP64D,
+ 			{QImode, HImode, SImode, DImode});
+   simple_poly_selftest ("rv32imafdv", ABI_ILP32D, {QImode, HImode, SImode});
+ 
+   run_poly_int_selftest ("rv64imafdv", ABI_LP64D, POLY_TEST_PMODE, worklist);
+   run_poly_int_selftest ("rv64imafd_zve32x1p0", ABI_LP64D, POLY_TEST_PMODE,
+ 			 worklist);
+   run_poly_int_selftest ("rv32imafdv", ABI_ILP32, POLY_TEST_PMODE, worklist);
+   run_poly_int_selftest ("rv32imafdv", ABI_ILP32, POLY_TEST_DIMODE, worklist);
+   run_poly_int_selftest ("rv32imafd_zve32x1p0", ABI_ILP32D, POLY_TEST_PMODE,
+ 			 worklist);
+   run_poly_int_selftest ("rv32imafd_zve32x1p0", ABI_ILP32D, POLY_TEST_DIMODE,
+ 			 worklist);
+ }
+ 
+ static void
+ run_const_vector_selftests (void)
+ {
+   /* We dont't need to do the redundant tests in different march && mabi.
+      Just pick up the march && mabi which fully support all RVV modes.  */
+   riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
+   rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
+   set_new_first_and_last_insn (NULL, NULL);
+ 
+   machine_mode mode;
+   std::vector<HOST_WIDE_INT> worklist = {-111, -17, -16, 7, 15, 16, 111};
+ 
+   FOR_EACH_MODE_IN_CLASS (mode, MODE_VECTOR_INT)
+     {
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	{
+ 	  for (const HOST_WIDE_INT &val : worklist)
+ 	    {
+ 	      start_sequence ();
+ 	      rtx dest = gen_reg_rtx (mode);
+ 	      rtx dup = gen_const_vec_duplicate (mode, GEN_INT (val));
+ 	      emit_move_insn (dest, dup);
+ 	      rtx_insn *insn = get_last_insn ();
+ 	      rtx src = XEXP (SET_SRC (PATTERN (insn)), 1);
+ 	      /* 1. Should be vmv.v.i for in rang of -16 ~ 15.
+ 		 2. Should be vmv.v.x for exceed -16 ~ 15.  */
+ 	      if (IN_RANGE (val, -16, 15))
+ 		ASSERT_TRUE (rtx_equal_p (src, dup));
+ 	      else
+ 		ASSERT_TRUE (
+ 		  rtx_equal_p (src,
+ 			       gen_rtx_VEC_DUPLICATE (mode, XEXP (src, 0))));
+ 	      end_sequence ();
+ 	    }
+ 	}
+     }
+ 
+   FOR_EACH_MODE_IN_CLASS (mode, MODE_VECTOR_FLOAT)
+     {
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	{
+ 	  scalar_mode inner_mode = GET_MODE_INNER (mode);
+ 	  REAL_VALUE_TYPE f = REAL_VALUE_ATOF ("0.2928932", inner_mode);
+ 	  rtx ele = const_double_from_real_value (f, inner_mode);
+ 
+ 	  start_sequence ();
+ 	  rtx dest = gen_reg_rtx (mode);
+ 	  rtx dup = gen_const_vec_duplicate (mode, ele);
+ 	  emit_move_insn (dest, dup);
+ 	  rtx_insn *insn = get_last_insn ();
+ 	  rtx src = XEXP (SET_SRC (PATTERN (insn)), 1);
+ 	  /* Should always be vfmv.v.f.  */
+ 	  ASSERT_TRUE (
+ 	    rtx_equal_p (src, gen_rtx_VEC_DUPLICATE (mode, XEXP (src, 0))));
+ 	  end_sequence ();
+ 	}
+     }
+ 
+   FOR_EACH_MODE_IN_CLASS (mode, MODE_VECTOR_BOOL)
+     {
+       /* Test vmset.m.  */
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	{
+ 	  start_sequence ();
+ 	  rtx dest = gen_reg_rtx (mode);
+ 	  emit_move_insn (dest, CONSTM1_RTX (mode));
+ 	  rtx_insn *insn = get_last_insn ();
+ 	  rtx src = XEXP (SET_SRC (PATTERN (insn)), 1);
+ 	  ASSERT_TRUE (rtx_equal_p (src, CONSTM1_RTX (mode)));
+ 	  end_sequence ();
+ 	}
+     }
+ }
+ 
+ static void
+ run_broadcast_selftests (void)
+ {
+   /* We dont't need to do the redundant tests in different march && mabi.
+      Just pick up the march && mabi which fully support all RVV modes.  */
+   riscv_selftest_arch_abi_setter rv ("rv64imafdcv", ABI_LP64D);
+   rtl_dump_test t (SELFTEST_LOCATION, locate_file ("riscv/empty-func.rtl"));
+   set_new_first_and_last_insn (NULL, NULL);
+ 
+   machine_mode mode;
+ 
+ #define BROADCAST_TEST(MODE_CLASS)                                             \
+   FOR_EACH_MODE_IN_CLASS (mode, MODE_VECTOR_INT)                               \
+     {                                                                          \
+       if (riscv_v_ext_vector_mode_p (mode))                                    \
+ 	{                                                                      \
+ 	  rtx_insn *insn;                                                      \
+ 	  rtx src;                                                             \
+ 	  scalar_mode inner_mode = GET_MODE_INNER (mode);                      \
+ 	  /* Test vlse.v with zero stride.  */                                 \
+ 	  start_sequence ();                                                   \
+ 	  rtx addr = gen_reg_rtx (Pmode);                                      \
+ 	  rtx mem = gen_rtx_MEM (inner_mode, addr);                            \
+ 	  expand_vector_broadcast (mode, mem);                                 \
+ 	  insn = get_last_insn ();                                             \
+ 	  src = XEXP (SET_SRC (PATTERN (insn)), 1);                            \
+ 	  ASSERT_TRUE (MEM_P (XEXP (src, 0)));                                 \
+ 	  ASSERT_TRUE (                                                        \
+ 	    rtx_equal_p (src, gen_rtx_VEC_DUPLICATE (mode, XEXP (src, 0))));   \
+ 	  end_sequence ();                                                     \
+ 	  /* Test vmv.v.x or vfmv.v.f.  */                                     \
+ 	  start_sequence ();                                                   \
+ 	  rtx reg = gen_reg_rtx (inner_mode);                                  \
+ 	  expand_vector_broadcast (mode, reg);                                 \
+ 	  insn = get_last_insn ();                                             \
+ 	  src = XEXP (SET_SRC (PATTERN (insn)), 1);                            \
+ 	  ASSERT_TRUE (REG_P (XEXP (src, 0)));                                 \
+ 	  ASSERT_TRUE (                                                        \
+ 	    rtx_equal_p (src, gen_rtx_VEC_DUPLICATE (mode, XEXP (src, 0))));   \
+ 	  end_sequence ();                                                     \
+ 	}                                                                      \
+     }
+ 
+   BROADCAST_TEST (MODE_VECTOR_INT)
+   BROADCAST_TEST (MODE_VECTOR_FLOAT)
+ }
+ 
+ namespace selftest {
+ /* Run all target-specific selftests.  */
+ void
+ riscv_run_selftests (void)
+ {
+   run_poly_int_selftests ();
+   run_const_vector_selftests ();
+   run_broadcast_selftests ();
+ }
+ } // namespace selftest
+ #endif /* #if CHECKING_P */
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-shorten-memrefs.cc gcc-13.1.0/gcc/config/riscv/riscv-shorten-memrefs.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-shorten-memrefs.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-shorten-memrefs.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Shorten memrefs pass for RISC-V.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Shorten memrefs pass for RISC-V.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-sr.cc gcc-13.1.0/gcc/config/riscv/riscv-sr.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-sr.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-sr.cc	Wed Apr 26 07:09:39 2023
*************** riscv_remove_unneeded_save_restore_calls
*** 247,253 ****
    /* We'll adjust stack size after this optimization, that require update every
       sp use site, which could be unsafe, so we decide to turn off this
       optimization if there are any arguments put on stack.  */
!   if (crtl->args.size != 0)
      return;
  
    /* Will point to the first instruction of the function body, after the
--- 247,253 ----
    /* We'll adjust stack size after this optimization, that require update every
       sp use site, which could be unsafe, so we decide to turn off this
       optimization if there are any arguments put on stack.  */
!   if (known_ne (crtl->args.size, 0))
      return;
  
    /* Will point to the first instruction of the function body, after the
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-subset.h gcc-13.1.0/gcc/config/riscv/riscv-subset.h
*** gcc-12.2.0/gcc/config/riscv/riscv-subset.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv-subset.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition of data structure of RISC-V subset for GNU compiler.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Definition of data structure of RISC-V subset for GNU compiler.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
*************** public:
*** 89,94 ****
--- 89,96 ----
  
    const riscv_subset_t *begin () const {return m_head;};
    const riscv_subset_t *end () const {return NULL;};
+ 
+   int match_score (riscv_subset_list *) const;
  };
  
  extern const riscv_subset_list *riscv_current_subset_list (void);
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-v.cc gcc-13.1.0/gcc/config/riscv/riscv-v.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-v.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-v.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,736 ----
+ /* Subroutines used for code generation for RISC-V 'V' Extension for
+    GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "backend.h"
+ #include "rtl.h"
+ #include "insn-config.h"
+ #include "insn-attr.h"
+ #include "recog.h"
+ #include "alias.h"
+ #include "tree.h"
+ #include "stringpool.h"
+ #include "attribs.h"
+ #include "explow.h"
+ #include "memmodel.h"
+ #include "emit-rtl.h"
+ #include "tm_p.h"
+ #include "target.h"
+ #include "expr.h"
+ #include "optabs.h"
+ #include "tm-constrs.h"
+ #include "rtx-vector-builder.h"
+ 
+ using namespace riscv_vector;
+ 
+ namespace riscv_vector {
+ 
+ template <int MAX_OPERANDS> class insn_expander
+ {
+ public:
+   insn_expander () : m_opno (0) {}
+   void add_output_operand (rtx x, machine_mode mode)
+   {
+     create_output_operand (&m_ops[m_opno++], x, mode);
+     gcc_assert (m_opno <= MAX_OPERANDS);
+   }
+   void add_input_operand (rtx x, machine_mode mode)
+   {
+     create_input_operand (&m_ops[m_opno++], x, mode);
+     gcc_assert (m_opno <= MAX_OPERANDS);
+   }
+   void add_all_one_mask_operand (machine_mode mode)
+   {
+     add_input_operand (CONSTM1_RTX (mode), mode);
+   }
+   void add_vundef_operand (machine_mode mode)
+   {
+     add_input_operand (RVV_VUNDEF (mode), mode);
+   }
+   void add_policy_operand (enum tail_policy vta, enum mask_policy vma)
+   {
+     rtx tail_policy_rtx = gen_int_mode (vta, Pmode);
+     rtx mask_policy_rtx = gen_int_mode (vma, Pmode);
+     add_input_operand (tail_policy_rtx, Pmode);
+     add_input_operand (mask_policy_rtx, Pmode);
+   }
+   void add_avl_type_operand (avl_type type)
+   {
+     add_input_operand (gen_int_mode (type, Pmode), Pmode);
+   }
+ 
+   void expand (enum insn_code icode, bool temporary_volatile_p = false)
+   {
+     if (temporary_volatile_p)
+       {
+ 	temporary_volatile_ok v (true);
+ 	expand_insn (icode, m_opno, m_ops);
+       }
+     else
+       expand_insn (icode, m_opno, m_ops);
+   }
+ 
+ private:
+   int m_opno;
+   expand_operand m_ops[MAX_OPERANDS];
+ };
+ 
+ static unsigned
+ get_sew (machine_mode mode)
+ {
+   unsigned int sew = GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL
+ 		       ? 8
+ 		       : GET_MODE_BITSIZE (GET_MODE_INNER (mode));
+   return sew;
+ }
+ 
+ /* Return true if X is a const_vector with all duplicate elements, which is in
+    the range between MINVAL and MAXVAL.  */
+ bool
+ const_vec_all_same_in_range_p (rtx x, HOST_WIDE_INT minval,
+ 			       HOST_WIDE_INT maxval)
+ {
+   rtx elt;
+   return (const_vec_duplicate_p (x, &elt) && CONST_INT_P (elt)
+ 	  && IN_RANGE (INTVAL (elt), minval, maxval));
+ }
+ 
+ /* Emit a vlmax vsetvl instruction.  This should only be used when
+    optimization is disabled or after vsetvl insertion pass.  */
+ void
+ emit_hard_vlmax_vsetvl (machine_mode vmode, rtx vl)
+ {
+   unsigned int sew = get_sew (vmode);
+   emit_insn (gen_vsetvl (Pmode, vl, RVV_VLMAX, gen_int_mode (sew, Pmode),
+ 			 gen_int_mode (get_vlmul (vmode), Pmode), const0_rtx,
+ 			 const0_rtx));
+ }
+ 
+ void
+ emit_vlmax_vsetvl (machine_mode vmode, rtx vl)
+ {
+   unsigned int sew = get_sew (vmode);
+   enum vlmul_type vlmul = get_vlmul (vmode);
+   unsigned int ratio = calculate_ratio (sew, vlmul);
+ 
+   if (!optimize)
+     emit_hard_vlmax_vsetvl (vmode, vl);
+   else
+     emit_insn (gen_vlmax_avl (Pmode, vl, gen_int_mode (ratio, Pmode)));
+ }
+ 
+ /* Calculate SEW/LMUL ratio.  */
+ unsigned int
+ calculate_ratio (unsigned int sew, enum vlmul_type vlmul)
+ {
+   unsigned int ratio;
+   switch (vlmul)
+     {
+     case LMUL_1:
+       ratio = sew;
+       break;
+     case LMUL_2:
+       ratio = sew / 2;
+       break;
+     case LMUL_4:
+       ratio = sew / 4;
+       break;
+     case LMUL_8:
+       ratio = sew / 8;
+       break;
+     case LMUL_F8:
+       ratio = sew * 8;
+       break;
+     case LMUL_F4:
+       ratio = sew * 4;
+       break;
+     case LMUL_F2:
+       ratio = sew * 2;
+       break;
+     default:
+       gcc_unreachable ();
+     }
+   return ratio;
+ }
+ 
+ /* Emit an RVV unmask && vl mov from SRC to DEST.  */
+ static void
+ emit_pred_op (unsigned icode, rtx mask, rtx dest, rtx src, rtx len,
+ 	      machine_mode mask_mode, bool vlmax_p)
+ {
+   insn_expander<8> e;
+   machine_mode mode = GET_MODE (dest);
+ 
+   e.add_output_operand (dest, mode);
+ 
+   if (mask)
+     e.add_input_operand (mask, GET_MODE (mask));
+   else
+     e.add_all_one_mask_operand (mask_mode);
+ 
+   e.add_vundef_operand (mode);
+ 
+   e.add_input_operand (src, GET_MODE (src));
+ 
+   if (len)
+     e.add_input_operand (len, Pmode);
+   else
+     {
+       rtx vlmax = gen_reg_rtx (Pmode);
+       emit_vlmax_vsetvl (mode, vlmax);
+       e.add_input_operand (vlmax, Pmode);
+     }
+ 
+   if (GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL)
+     e.add_policy_operand (get_prefer_tail_policy (), get_prefer_mask_policy ());
+ 
+   if (vlmax_p)
+     e.add_avl_type_operand (avl_type::VLMAX);
+   else
+     e.add_avl_type_operand (avl_type::NONVLMAX);
+ 
+   e.expand ((enum insn_code) icode, MEM_P (dest) || MEM_P (src));
+ }
+ 
+ void
+ emit_vlmax_op (unsigned icode, rtx dest, rtx src, machine_mode mask_mode)
+ {
+   emit_pred_op (icode, NULL_RTX, dest, src, NULL_RTX, mask_mode, true);
+ }
+ 
+ void
+ emit_vlmax_op (unsigned icode, rtx dest, rtx src, rtx len,
+ 	       machine_mode mask_mode)
+ {
+   emit_pred_op (icode, NULL_RTX, dest, src, len, mask_mode, true);
+ }
+ 
+ void
+ emit_nonvlmax_op (unsigned icode, rtx dest, rtx src, rtx len,
+ 		  machine_mode mask_mode)
+ {
+   emit_pred_op (icode, NULL_RTX, dest, src, len, mask_mode, false);
+ }
+ 
+ static void
+ expand_const_vector (rtx target, rtx src, machine_mode mask_mode)
+ {
+   machine_mode mode = GET_MODE (target);
+   scalar_mode elt_mode = GET_MODE_INNER (mode);
+   if (GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL)
+     {
+       rtx elt;
+       gcc_assert (
+ 	const_vec_duplicate_p (src, &elt)
+ 	&& (rtx_equal_p (elt, const0_rtx) || rtx_equal_p (elt, const1_rtx)));
+       emit_vlmax_op (code_for_pred_mov (mode), target, src, mask_mode);
+       return;
+     }
+ 
+   rtx elt;
+   if (const_vec_duplicate_p (src, &elt))
+     {
+       rtx tmp = register_operand (target, mode) ? target : gen_reg_rtx (mode);
+       /* Element in range -16 ~ 15 integer or 0.0 floating-point,
+ 	 we use vmv.v.i instruction.  */
+       if (satisfies_constraint_vi (src) || satisfies_constraint_Wc0 (src))
+ 	emit_vlmax_op (code_for_pred_mov (mode), tmp, src, mask_mode);
+       else
+ 	emit_vlmax_op (code_for_pred_broadcast (mode), tmp,
+ 		       force_reg (elt_mode, elt), mask_mode);
+ 
+       if (tmp != target)
+ 	emit_move_insn (target, tmp);
+       return;
+     }
+ 
+   /* TODO: We only support const duplicate vector for now. More cases
+      will be supported when we support auto-vectorization:
+ 
+        1. series vector.
+        2. multiple elts duplicate vector.
+        3. multiple patterns with multiple elts.  */
+ }
+ 
+ /* Expand a pre-RA RVV data move from SRC to DEST.
+    It expands move for RVV fractional vector modes.  */
+ bool
+ legitimize_move (rtx dest, rtx src, machine_mode mask_mode)
+ {
+   machine_mode mode = GET_MODE (dest);
+   if (CONST_VECTOR_P (src))
+     {
+       expand_const_vector (dest, src, mask_mode);
+       return true;
+     }
+ 
+   /* In order to decrease the memory traffic, we don't use whole register
+    * load/store for the LMUL less than 1 and mask mode, so those case will
+    * require one extra general purpose register, but it's not allowed during LRA
+    * process, so we have a special move pattern used for LRA, which will defer
+    * the expansion after LRA.  */
+   if ((known_lt (GET_MODE_SIZE (mode), BYTES_PER_RISCV_VECTOR)
+        || GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL)
+       && lra_in_progress)
+     {
+       emit_insn (gen_mov_lra (mode, Pmode, dest, src));
+       return true;
+     }
+ 
+   if (known_ge (GET_MODE_SIZE (mode), BYTES_PER_RISCV_VECTOR)
+       && GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL)
+     {
+       /* Need to force register if mem <- !reg.  */
+       if (MEM_P (dest) && !REG_P (src))
+ 	src = force_reg (mode, src);
+ 
+       return false;
+     }
+ 
+   if (register_operand (src, mode) && register_operand (dest, mode))
+     {
+       emit_insn (gen_rtx_SET (dest, src));
+       return true;
+     }
+ 
+   if (!register_operand (src, mode) && !register_operand (dest, mode))
+     {
+       rtx tmp = gen_reg_rtx (mode);
+       if (MEM_P (src))
+ 	emit_vlmax_op (code_for_pred_mov (mode), tmp, src, mask_mode);
+       else
+ 	emit_move_insn (tmp, src);
+       src = tmp;
+     }
+ 
+   if (satisfies_constraint_vu (src))
+     return false;
+ 
+   emit_vlmax_op (code_for_pred_mov (mode), dest, src, mask_mode);
+   return true;
+ }
+ 
+ /* VTYPE information for machine_mode.  */
+ struct mode_vtype_group
+ {
+   enum vlmul_type vlmul_for_min_vlen32[NUM_MACHINE_MODES];
+   uint8_t ratio_for_min_vlen32[NUM_MACHINE_MODES];
+   enum vlmul_type vlmul_for_min_vlen64[NUM_MACHINE_MODES];
+   uint8_t ratio_for_min_vlen64[NUM_MACHINE_MODES];
+   mode_vtype_group ()
+   {
+ #define ENTRY(MODE, REQUIREMENT, VLMUL_FOR_MIN_VLEN32, RATIO_FOR_MIN_VLEN32,   \
+ 	      VLMUL_FOR_MIN_VLEN64, RATIO_FOR_MIN_VLEN64)                      \
+   vlmul_for_min_vlen32[MODE##mode] = VLMUL_FOR_MIN_VLEN32;                     \
+   ratio_for_min_vlen32[MODE##mode] = RATIO_FOR_MIN_VLEN32;                     \
+   vlmul_for_min_vlen64[MODE##mode] = VLMUL_FOR_MIN_VLEN64;                     \
+   ratio_for_min_vlen64[MODE##mode] = RATIO_FOR_MIN_VLEN64;
+ #include "riscv-vector-switch.def"
+   }
+ };
+ 
+ static mode_vtype_group mode_vtype_infos;
+ 
+ /* Get vlmul field value by comparing LMUL with BYTES_PER_RISCV_VECTOR.  */
+ enum vlmul_type
+ get_vlmul (machine_mode mode)
+ {
+   if (TARGET_MIN_VLEN == 32)
+     return mode_vtype_infos.vlmul_for_min_vlen32[mode];
+   else
+     return mode_vtype_infos.vlmul_for_min_vlen64[mode];
+ }
+ 
+ /* Get ratio according to machine mode.  */
+ unsigned int
+ get_ratio (machine_mode mode)
+ {
+   if (TARGET_MIN_VLEN == 32)
+     return mode_vtype_infos.ratio_for_min_vlen32[mode];
+   else
+     return mode_vtype_infos.ratio_for_min_vlen64[mode];
+ }
+ 
+ /* Get ta according to operand[tail_op_idx].  */
+ int
+ get_ta (rtx ta)
+ {
+   if (INTVAL (ta) == TAIL_ANY)
+     return INVALID_ATTRIBUTE;
+   return INTVAL (ta);
+ }
+ 
+ /* Get ma according to operand[mask_op_idx].  */
+ int
+ get_ma (rtx ma)
+ {
+   if (INTVAL (ma) == MASK_ANY)
+     return INVALID_ATTRIBUTE;
+   return INTVAL (ma);
+ }
+ 
+ /* Get prefer tail policy.  */
+ enum tail_policy
+ get_prefer_tail_policy ()
+ {
+   /* TODO: By default, we choose to use TAIL_ANY which allows
+      compiler pick up either agnostic or undisturbed. Maybe we
+      will have a compile option like -mprefer=agnostic to set
+      this value???.  */
+   return TAIL_ANY;
+ }
+ 
+ /* Get prefer mask policy.  */
+ enum mask_policy
+ get_prefer_mask_policy ()
+ {
+   /* TODO: By default, we choose to use MASK_ANY which allows
+      compiler pick up either agnostic or undisturbed. Maybe we
+      will have a compile option like -mprefer=agnostic to set
+      this value???.  */
+   return MASK_ANY;
+ }
+ 
+ /* Get avl_type rtx.  */
+ rtx
+ get_avl_type_rtx (enum avl_type type)
+ {
+   return gen_int_mode (type, Pmode);
+ }
+ 
+ /* Return the RVV vector mode that has NUNITS elements of mode INNER_MODE.
+    This function is not only used by builtins, but also will be used by
+    auto-vectorization in the future.  */
+ opt_machine_mode
+ get_vector_mode (scalar_mode inner_mode, poly_uint64 nunits)
+ {
+   enum mode_class mclass;
+   if (inner_mode == E_BImode)
+     mclass = MODE_VECTOR_BOOL;
+   else if (FLOAT_MODE_P (inner_mode))
+     mclass = MODE_VECTOR_FLOAT;
+   else
+     mclass = MODE_VECTOR_INT;
+   machine_mode mode;
+   FOR_EACH_MODE_IN_CLASS (mode, mclass)
+     if (inner_mode == GET_MODE_INNER (mode)
+ 	&& known_eq (nunits, GET_MODE_NUNITS (mode))
+ 	&& riscv_v_ext_vector_mode_p (mode))
+       return mode;
+   return opt_machine_mode ();
+ }
+ 
+ bool
+ simm5_p (rtx x)
+ {
+   if (!CONST_INT_P (x))
+     return false;
+   return IN_RANGE (INTVAL (x), -16, 15);
+ }
+ 
+ bool
+ neg_simm5_p (rtx x)
+ {
+   if (!CONST_INT_P (x))
+     return false;
+   return IN_RANGE (INTVAL (x), -15, 16);
+ }
+ 
+ bool
+ has_vi_variant_p (rtx_code code, rtx x)
+ {
+   switch (code)
+     {
+     case PLUS:
+     case AND:
+     case IOR:
+     case XOR:
+     case SS_PLUS:
+     case US_PLUS:
+     case EQ:
+     case NE:
+     case LE:
+     case LEU:
+     case GT:
+     case GTU:
+       return simm5_p (x);
+ 
+     case LT:
+     case LTU:
+     case GE:
+     case GEU:
+     case MINUS:
+     case SS_MINUS:
+       return neg_simm5_p (x);
+ 
+     default:
+       return false;
+     }
+ }
+ 
+ bool
+ sew64_scalar_helper (rtx *operands, rtx *scalar_op, rtx vl,
+ 		     machine_mode vector_mode, machine_mode mask_mode,
+ 		     bool has_vi_variant_p,
+ 		     void (*emit_vector_func) (rtx *, rtx))
+ {
+   machine_mode scalar_mode = GET_MODE_INNER (vector_mode);
+   if (has_vi_variant_p)
+     {
+       *scalar_op = force_reg (scalar_mode, *scalar_op);
+       return false;
+     }
+ 
+   if (TARGET_64BIT)
+     {
+       if (!rtx_equal_p (*scalar_op, const0_rtx))
+ 	*scalar_op = force_reg (scalar_mode, *scalar_op);
+       return false;
+     }
+ 
+   if (immediate_operand (*scalar_op, Pmode))
+     {
+       if (!rtx_equal_p (*scalar_op, const0_rtx))
+ 	*scalar_op = force_reg (Pmode, *scalar_op);
+ 
+       *scalar_op = gen_rtx_SIGN_EXTEND (scalar_mode, *scalar_op);
+       return false;
+     }
+ 
+   if (CONST_INT_P (*scalar_op))
+     *scalar_op = force_reg (scalar_mode, *scalar_op);
+ 
+   rtx tmp = gen_reg_rtx (vector_mode);
+   riscv_vector::emit_nonvlmax_op (code_for_pred_broadcast (vector_mode), tmp,
+ 				  *scalar_op, vl, mask_mode);
+   emit_vector_func (operands, tmp);
+ 
+   return true;
+ }
+ 
+ /* Get { ... ,0, 0, 0, ..., 0, 0, 0, 1 } mask.  */
+ rtx
+ gen_scalar_move_mask (machine_mode mode)
+ {
+   rtx_vector_builder builder (mode, 1, 2);
+   builder.quick_push (const1_rtx);
+   builder.quick_push (const0_rtx);
+   return builder.build ();
+ }
+ 
+ static unsigned
+ compute_vlmax (unsigned vector_bits, unsigned elt_size, unsigned min_size)
+ {
+   // Original equation:
+   //   VLMAX = (VectorBits / EltSize) * LMUL
+   //   where LMUL = MinSize / TARGET_MIN_VLEN
+   // The following equations have been reordered to prevent loss of precision
+   // when calculating fractional LMUL.
+   return ((vector_bits / elt_size) * min_size) / TARGET_MIN_VLEN;
+ }
+ 
+ static unsigned
+ get_unknown_min_value (machine_mode mode)
+ {
+   enum vlmul_type vlmul = get_vlmul (mode);
+   switch (vlmul)
+     {
+     case LMUL_1:
+       return TARGET_MIN_VLEN;
+     case LMUL_2:
+       return TARGET_MIN_VLEN * 2;
+     case LMUL_4:
+       return TARGET_MIN_VLEN * 4;
+     case LMUL_8:
+       return TARGET_MIN_VLEN * 8;
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ static rtx
+ force_vector_length_operand (rtx vl)
+ {
+   if (CONST_INT_P (vl) && !satisfies_constraint_K (vl))
+     return force_reg (Pmode, vl);
+   return vl;
+ }
+ 
+ static rtx
+ gen_no_side_effects_vsetvl_rtx (machine_mode vmode, rtx vl, rtx avl)
+ {
+   unsigned int sew = get_sew (vmode);
+   return gen_vsetvl_no_side_effects (Pmode, vl, avl, gen_int_mode (sew, Pmode),
+ 				     gen_int_mode (get_vlmul (vmode), Pmode),
+ 				     const0_rtx, const0_rtx);
+ }
+ 
+ /* GET VL * 2 rtx.  */
+ static rtx
+ get_vl_x2_rtx (rtx avl, machine_mode mode, machine_mode demote_mode)
+ {
+   rtx i32vl = NULL_RTX;
+   if (CONST_INT_P (avl))
+     {
+       unsigned elt_size = GET_MODE_BITSIZE (GET_MODE_INNER (mode));
+       unsigned min_size = get_unknown_min_value (mode);
+       unsigned vlen_max = RVV_65536;
+       unsigned vlmax_max = compute_vlmax (vlen_max, elt_size, min_size);
+       unsigned vlen_min = TARGET_MIN_VLEN;
+       unsigned vlmax_min = compute_vlmax (vlen_min, elt_size, min_size);
+ 
+       unsigned HOST_WIDE_INT avl_int = INTVAL (avl);
+       if (avl_int <= vlmax_min)
+ 	i32vl = gen_int_mode (2 * avl_int, Pmode);
+       else if (avl_int >= 2 * vlmax_max)
+ 	{
+ 	  // Just set i32vl to VLMAX in this situation
+ 	  i32vl = gen_reg_rtx (Pmode);
+ 	  emit_insn (
+ 	    gen_no_side_effects_vsetvl_rtx (demote_mode, i32vl, RVV_VLMAX));
+ 	}
+       else
+ 	{
+ 	  // For AVL between (MinVLMAX, 2 * MaxVLMAX), the actual working vl
+ 	  // is related to the hardware implementation.
+ 	  // So let the following code handle
+ 	}
+     }
+   if (!i32vl)
+     {
+       // Using vsetvli instruction to get actually used length which related to
+       // the hardware implementation
+       rtx i64vl = gen_reg_rtx (Pmode);
+       emit_insn (
+ 	gen_no_side_effects_vsetvl_rtx (mode, i64vl, force_reg (Pmode, avl)));
+       // scale 2 for 32-bit length
+       i32vl = gen_reg_rtx (Pmode);
+       emit_insn (
+ 	gen_rtx_SET (i32vl, gen_rtx_ASHIFT (Pmode, i64vl, const1_rtx)));
+     }
+ 
+   return force_vector_length_operand (i32vl);
+ }
+ 
+ bool
+ slide1_sew64_helper (int unspec, machine_mode mode, machine_mode demote_mode,
+ 		     machine_mode demote_mask_mode, rtx *ops)
+ {
+   rtx scalar_op = ops[4];
+   rtx avl = ops[5];
+   machine_mode scalar_mode = GET_MODE_INNER (mode);
+   if (rtx_equal_p (scalar_op, const0_rtx))
+     {
+       ops[5] = force_vector_length_operand (ops[5]);
+       return false;
+     }
+ 
+   if (TARGET_64BIT)
+     {
+       ops[4] = force_reg (scalar_mode, scalar_op);
+       ops[5] = force_vector_length_operand (ops[5]);
+       return false;
+     }
+ 
+   if (immediate_operand (scalar_op, Pmode))
+     {
+       ops[4] = gen_rtx_SIGN_EXTEND (scalar_mode, force_reg (Pmode, scalar_op));
+       ops[5] = force_vector_length_operand (ops[5]);
+       return false;
+     }
+ 
+   if (CONST_INT_P (scalar_op))
+     scalar_op = force_reg (scalar_mode, scalar_op);
+ 
+   rtx vl_x2 = get_vl_x2_rtx (avl, mode, demote_mode);
+ 
+   rtx demote_scalar_op1, demote_scalar_op2;
+   if (unspec == UNSPEC_VSLIDE1UP)
+     {
+       demote_scalar_op1 = gen_highpart (Pmode, scalar_op);
+       demote_scalar_op2 = gen_lowpart (Pmode, scalar_op);
+     }
+   else
+     {
+       demote_scalar_op1 = gen_lowpart (Pmode, scalar_op);
+       demote_scalar_op2 = gen_highpart (Pmode, scalar_op);
+     }
+ 
+   rtx temp = gen_reg_rtx (demote_mode);
+   rtx ta = gen_int_mode (get_prefer_tail_policy (), Pmode);
+   rtx ma = gen_int_mode (get_prefer_mask_policy (), Pmode);
+   rtx merge = RVV_VUNDEF (demote_mode);
+   /* Handle vslide1<ud>_tu.  */
+   if (register_operand (ops[2], mode)
+       && rtx_equal_p (ops[1], CONSTM1_RTX (GET_MODE (ops[1]))))
+     {
+       merge = gen_lowpart (demote_mode, ops[2]);
+       ta = ops[6];
+       ma = ops[7];
+     }
+ 
+   emit_insn (gen_pred_slide (unspec, demote_mode, temp,
+ 			     CONSTM1_RTX (demote_mask_mode), merge,
+ 			     gen_lowpart (demote_mode, ops[3]),
+ 			     demote_scalar_op1, vl_x2, ta, ma, ops[8]));
+   emit_insn (gen_pred_slide (unspec, demote_mode,
+ 			     gen_lowpart (demote_mode, ops[0]),
+ 			     CONSTM1_RTX (demote_mask_mode), merge, temp,
+ 			     demote_scalar_op2, vl_x2, ta, ma, ops[8]));
+ 
+   if (rtx_equal_p (ops[1], CONSTM1_RTX (GET_MODE (ops[1]))))
+     return true;
+   else
+     emit_insn (gen_pred_merge (mode, ops[0], ops[2], ops[2], ops[0], ops[1],
+ 			       force_vector_length_operand (ops[5]), ops[6],
+ 			       ops[8]));
+   return true;
+ }
+ 
+ rtx
+ gen_avl_for_scalar_move (rtx avl)
+ {
+   /* AVL for scalar move has different behavior between 0 and large than 0.  */
+   if (CONST_INT_P (avl))
+     {
+       /* So we could just set AVL to 1 for any constant other than 0.  */
+       if (rtx_equal_p (avl, const0_rtx))
+ 	return const0_rtx;
+       else
+ 	return const1_rtx;
+     }
+   else
+     {
+       /* For non-constant value, we set any non zero value to 1 by
+ 	 `sgtu new_avl,input_avl,zero` + `vsetvli`.  */
+       rtx tmp = gen_reg_rtx (Pmode);
+       emit_insn (
+ 	gen_rtx_SET (tmp, gen_rtx_fmt_ee (GTU, Pmode, avl, const0_rtx)));
+       return tmp;
+     }
+ }
+ 
+ } // namespace riscv_vector
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-bases.cc gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-bases.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-bases.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-bases.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,2105 ----
+ /* function_base implementation for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tree.h"
+ #include "rtl.h"
+ #include "tm_p.h"
+ #include "memmodel.h"
+ #include "insn-codes.h"
+ #include "optabs.h"
+ #include "recog.h"
+ #include "expr.h"
+ #include "basic-block.h"
+ #include "function.h"
+ #include "fold-const.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "gimplify.h"
+ #include "explow.h"
+ #include "emit-rtl.h"
+ #include "tree-vector-builder.h"
+ #include "rtx-vector-builder.h"
+ #include "riscv-vector-builtins.h"
+ #include "riscv-vector-builtins-shapes.h"
+ #include "riscv-vector-builtins-bases.h"
+ 
+ using namespace riscv_vector;
+ 
+ namespace riscv_vector {
+ 
+ /* Enumerates types of loads/stores operations.
+    It's only used in here so we don't define it
+    in riscv-vector-builtins-bases.h.  */
+ enum lst_type
+ {
+   LST_UNIT_STRIDE,
+   LST_STRIDED,
+   LST_INDEXED,
+ };
+ 
+ /* Implements vsetvl<mode> && vsetvlmax<mode>.  */
+ template<bool VLMAX_P>
+ class vsetvl : public function_base
+ {
+ public:
+   bool apply_vl_p () const override
+   {
+     return false;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (VLMAX_P)
+       e.add_input_operand (Pmode, gen_rtx_REG (Pmode, 0));
+     else
+       e.add_input_operand (0);
+ 
+     tree type = builtin_types[e.type.index].vector;
+     machine_mode mode = TYPE_MODE (type);
+     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));
+ 
+     /* TA.  */
+     e.add_input_operand (Pmode, gen_int_mode (1, Pmode));
+ 
+     /* MU.  */
+     e.add_input_operand (Pmode, gen_int_mode (0, Pmode));
+     return e.generate_insn (code_for_vsetvl_no_side_effects (Pmode));
+   }
+ };
+ 
+ /* Implements
+  * vle.v/vse.v/vlm.v/vsm.v/vlse.v/vsse.v/vluxei.v/vloxei.v/vsuxei.v/vsoxei.v
+  * codegen.  */
+ template<bool STORE_P, lst_type LST_TYPE, bool ORDERED_P>
+ class loadstore : 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 && pred != PRED_TYPE_mu;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (LST_TYPE == LST_INDEXED)
+       {
+ 	int unspec = ORDERED_P ? UNSPEC_ORDERED : UNSPEC_UNORDERED;
+ 	if (STORE_P)
+ 	  return e.use_exact_insn (
+ 	    code_for_pred_indexed_store (unspec, e.vector_mode (),
+ 					 e.index_mode ()));
+ 	else
+ 	  {
+ 	    unsigned src_eew_bitsize
+ 	      = GET_MODE_BITSIZE (GET_MODE_INNER (e.index_mode ()));
+ 	    unsigned dst_eew_bitsize
+ 	      = GET_MODE_BITSIZE (GET_MODE_INNER (e.vector_mode ()));
+ 	    if (dst_eew_bitsize == src_eew_bitsize)
+ 	      return e.use_exact_insn (
+ 		code_for_pred_indexed_load_same_eew (unspec, e.vector_mode ()));
+ 	    else if (dst_eew_bitsize > src_eew_bitsize)
+ 	      {
+ 		unsigned factor = dst_eew_bitsize / src_eew_bitsize;
+ 		switch (factor)
+ 		  {
+ 		  case 2:
+ 		    return e.use_exact_insn (
+ 		      code_for_pred_indexed_load_x2_greater_eew (
+ 			unspec, e.vector_mode ()));
+ 		  case 4:
+ 		    return e.use_exact_insn (
+ 		      code_for_pred_indexed_load_x4_greater_eew (
+ 			unspec, e.vector_mode ()));
+ 		  case 8:
+ 		    return e.use_exact_insn (
+ 		      code_for_pred_indexed_load_x8_greater_eew (
+ 			unspec, e.vector_mode ()));
+ 		  default:
+ 		    gcc_unreachable ();
+ 		  }
+ 	      }
+ 	    else
+ 	      {
+ 		unsigned factor = src_eew_bitsize / dst_eew_bitsize;
+ 		switch (factor)
+ 		  {
+ 		  case 2:
+ 		    return e.use_exact_insn (
+ 		      code_for_pred_indexed_load_x2_smaller_eew (
+ 			unspec, e.vector_mode ()));
+ 		  case 4:
+ 		    return e.use_exact_insn (
+ 		      code_for_pred_indexed_load_x4_smaller_eew (
+ 			unspec, e.vector_mode ()));
+ 		  case 8:
+ 		    return e.use_exact_insn (
+ 		      code_for_pred_indexed_load_x8_smaller_eew (
+ 			unspec, e.vector_mode ()));
+ 		  default:
+ 		    gcc_unreachable ();
+ 		  }
+ 	      }
+ 	  }
+       }
+     else if (LST_TYPE == LST_STRIDED)
+       {
+ 	if (STORE_P)
+ 	  return e.use_contiguous_store_insn (
+ 	    code_for_pred_strided_store (e.vector_mode ()));
+ 	else
+ 	  return e.use_contiguous_load_insn (
+ 	    code_for_pred_strided_load (e.vector_mode ()));
+       }
+     else
+       {
+ 	if (STORE_P)
+ 	  return e.use_contiguous_store_insn (
+ 	    code_for_pred_store (e.vector_mode ()));
+ 	else
+ 	  return e.use_contiguous_load_insn (
+ 	    code_for_pred_mov (e.vector_mode ()));
+       }
+   }
+ };
+ 
+ /* Implements
+    vadd/vsub/vand/vor/vxor/vsll/vsra/vsrl/
+    vmin/vmax/vminu/vmaxu/vdiv/vrem/vdivu/
+    vremu/vsadd/vsaddu/vssub/vssubu
+    vfadd/vfsub/
+ */
+ template<rtx_code CODE>
+ class binop : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vx:
+       case OP_TYPE_vf:
+ 	return e.use_exact_insn (code_for_pred_scalar (CODE, e.vector_mode ()));
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (code_for_pred (CODE, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vrsub.  */
+ class vrsub : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (
+       code_for_pred_sub_reverse_scalar (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vneg/vnot.  */
+ template<rtx_code CODE>
+ class unop : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred (CODE, e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vsext.vf2/vsext.vf4/vsext.vf8/vzext.vf2/vzext.vf4/vzext.vf8.  */
+ template<rtx_code CODE>
+ class ext : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vf2:
+ 	return e.use_exact_insn (code_for_pred_vf2 (CODE, e.vector_mode ()));
+       case OP_TYPE_vf4:
+ 	return e.use_exact_insn (code_for_pred_vf4 (CODE, e.vector_mode ()));
+       case OP_TYPE_vf8:
+ 	return e.use_exact_insn (code_for_pred_vf8 (CODE, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vmulh/vmulhu/vmulhsu.  */
+ template<int UNSPEC>
+ class vmulh : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_mulh_scalar (UNSPEC, e.vector_mode ()));
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_mulh (UNSPEC, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vwadd/vwsub/vwmul/vfwadd/vfwsub/vfwmul.  */
+ template<rtx_code CODE1, rtx_code CODE2 = FLOAT_EXTEND>
+ class widen_binop : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_dual_widen (CODE1, CODE2, e.vector_mode ()));
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_dual_widen_scalar (CODE1, CODE2, e.vector_mode ()));
+       case OP_TYPE_wv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_single_widen (CODE1, CODE2, e.vector_mode ()));
+       case OP_TYPE_wx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_single_widen_scalar (CODE1, CODE2, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ template<rtx_code CODE>
+ class widen_binop<CODE, FLOAT_EXTEND> : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_dual_widen (CODE, e.vector_mode ()));
+       case OP_TYPE_vf:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_dual_widen_scalar (CODE, e.vector_mode ()));
+       case OP_TYPE_wv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_single_widen (CODE, e.vector_mode ()));
+       case OP_TYPE_wf:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_single_widen_scalar (CODE, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vwmulsu.  */
+ class vwmulsu : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (code_for_pred_widen_mulsu (e.vector_mode ()));
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_widen_mulsu_scalar (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vwcvt.  */
+ template<rtx_code CODE>
+ class vwcvt : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred (CODE, e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vadc.  */
+ class vadc : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+   bool use_mask_predication_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vvm:
+ 	return e.use_exact_insn (code_for_pred_adc (e.vector_mode ()));
+       case OP_TYPE_vxm:
+ 	return e.use_exact_insn (code_for_pred_adc_scalar (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vsbc.  */
+ class vsbc : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+   bool use_mask_predication_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vvm:
+ 	return e.use_exact_insn (code_for_pred_sbc (e.vector_mode ()));
+       case OP_TYPE_vxm:
+ 	return e.use_exact_insn (code_for_pred_sbc_scalar (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vmadc.  */
+ class vmadc : public function_base
+ {
+ public:
+   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
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vvm:
+ 	return e.use_exact_insn (code_for_pred_madc (e.vector_mode ()));
+       case OP_TYPE_vxm:
+ 	return e.use_exact_insn (code_for_pred_madc_scalar (e.vector_mode ()));
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_madc_overflow (e.vector_mode ()));
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_madc_overflow_scalar (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vmsbc.  */
+ class vmsbc : public function_base
+ {
+ public:
+   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
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vvm:
+ 	return e.use_exact_insn (code_for_pred_msbc (e.vector_mode ()));
+       case OP_TYPE_vxm:
+ 	return e.use_exact_insn (code_for_pred_msbc_scalar (e.vector_mode ()));
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_msbc_overflow (e.vector_mode ()));
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_msbc_overflow_scalar (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vnsrl/vnsra.  */
+ template<rtx_code CODE>
+ class vnshift : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_wx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_narrow_scalar (CODE, e.vector_mode ()));
+       case OP_TYPE_wv:
+ 	return e.use_exact_insn (code_for_pred_narrow (CODE, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vncvt.  */
+ class vncvt_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_trunc (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmerge/vfmerge.  */
+ class vmerge : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+   bool use_mask_predication_p () const override { return false; }
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vvm:
+ 	return e.use_exact_insn (code_for_pred_merge (e.vector_mode ()));
+       case OP_TYPE_vxm:
+       case OP_TYPE_vfm:
+ 	return e.use_exact_insn (code_for_pred_merge_scalar (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vmv.v.x/vmv.v.v/vfmv.v.f.  */
+ class vmv_v : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_v:
+ 	return e.use_exact_insn (code_for_pred_mov (e.vector_mode ()));
+       case OP_TYPE_x:
+       case OP_TYPE_f:
+ 	return e.use_exact_insn (code_for_pred_broadcast (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vaadd/vasub/vsmul/vssra/vssrl.  */
+ template<int UNSPEC>
+ class sat_op : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_scalar (UNSPEC, e.vector_mode ()));
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (code_for_pred (UNSPEC, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vnclip/vnclipu.  */
+ template<int UNSPEC>
+ class vnclip : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_wx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_narrow_clip_scalar (UNSPEC, e.vector_mode ()));
+       case OP_TYPE_wv:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_narrow_clip (UNSPEC, e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vmseq/vmsne/vmslt/vmsgt/vmsle/vmsge.  */
+ template<rtx_code CODE>
+ class icmp : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+ 	case OP_TYPE_vx: {
+ 	  if (CODE == GE || CODE == GEU)
+ 	    return e.use_compare_insn (CODE, code_for_pred_ge_scalar (
+ 					       e.vector_mode ()));
+ 	  else if (CODE == EQ || CODE == NE)
+ 	    return e.use_compare_insn (CODE, code_for_pred_eqne_scalar (
+ 					       e.vector_mode ()));
+ 	  else
+ 	    return e.use_compare_insn (CODE, code_for_pred_cmp_scalar (
+ 					       e.vector_mode ()));
+ 	}
+ 	case OP_TYPE_vv: {
+ 	  if (CODE == LT || CODE == LTU || CODE == GE || CODE == GEU)
+ 	    return e.use_compare_insn (CODE,
+ 				       code_for_pred_ltge (e.vector_mode ()));
+ 	  else
+ 	    return e.use_compare_insn (CODE,
+ 				       code_for_pred_cmp (e.vector_mode ()));
+ 	}
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vmacc/vnmsac/vmadd/vnmsub.  */
+ class vmacc : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_ternop_insn (true, code_for_pred_mul_plus_scalar (
+ 					e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul_plus (e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vnmsac : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_ternop_insn (true, code_for_pred_minus_mul_scalar (
+ 					e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_minus_mul (e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vmadd : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_ternop_insn (false, code_for_pred_mul_plus_scalar (
+ 					 e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul_plus (e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vnmsub : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_ternop_insn (false, code_for_pred_minus_mul_scalar (
+ 					 e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_minus_mul (e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ /* Implements vwmacc<su><su>.  */
+ class vwmacc : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_plus_scalar (SIGN_EXTEND, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_plus (SIGN_EXTEND, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vwmaccu : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_plus_scalar (ZERO_EXTEND, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_plus (ZERO_EXTEND, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vwmaccsu : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vx)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_plussu_scalar (e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_plussu (e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vwmaccus : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_widen_ternop_insn (
+       code_for_pred_widen_mul_plusus_scalar (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmand/vmnand/vmandn/vmxor/vmor/vmnor/vmorn/vmxnor  */
+ template<rtx_code CODE>
+ class mask_logic : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred (CODE, e.vector_mode ()));
+   }
+ };
+ template<rtx_code CODE>
+ class mask_nlogic : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_n (CODE, e.vector_mode ()));
+   }
+ };
+ template<rtx_code CODE>
+ class mask_notlogic : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_not (CODE, e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmmv.  */
+ class vmmv : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_mov (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmclr.  */
+ class vmclr : public function_base
+ {
+ public:
+   bool can_be_overloaded_p (enum predication_type_index) const override
+   {
+     return false;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     machine_mode mode = TYPE_MODE (TREE_TYPE (e.exp));
+     e.add_all_one_mask_operand (mode);
+     e.add_vundef_operand (mode);
+     e.add_input_operand (mode, CONST0_RTX (mode));
+     e.add_input_operand (call_expr_nargs (e.exp) - 1);
+     e.add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+     return e.generate_insn (code_for_pred_mov (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmset.  */
+ class vmset : public function_base
+ {
+ public:
+   bool can_be_overloaded_p (enum predication_type_index) const override
+   {
+     return false;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     machine_mode mode = TYPE_MODE (TREE_TYPE (e.exp));
+     e.add_all_one_mask_operand (mode);
+     e.add_vundef_operand (mode);
+     e.add_input_operand (mode, CONSTM1_RTX (mode));
+     e.add_input_operand (call_expr_nargs (e.exp) - 1);
+     e.add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+     return e.generate_insn (code_for_pred_mov (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmnot.  */
+ class vmnot : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_not (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vcpop.  */
+ class vcpop : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_popcount (e.vector_mode (), Pmode));
+   }
+ };
+ 
+ /* Implements vfirst.  */
+ class vfirst : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+   bool apply_mask_policy_p () const override { return false; }
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_ffs (e.vector_mode (), Pmode));
+   }
+ };
+ 
+ /* Implements vmsbf/vmsif/vmsof.  */
+ template<int UNSPEC>
+ class mask_misc : public function_base
+ {
+ public:
+   bool apply_tail_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred (UNSPEC, e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements viota.  */
+ class viota : public function_base
+ {
+ public:
+   bool can_be_overloaded_p (enum predication_type_index pred) const override
+   {
+     return pred == PRED_TYPE_tu || pred == PRED_TYPE_tum
+ 	   || pred == PRED_TYPE_tumu;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_iota (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vid.  */
+ class vid : public function_base
+ {
+ public:
+   bool can_be_overloaded_p (enum predication_type_index pred) const override
+   {
+     return pred == PRED_TYPE_tu || pred == PRED_TYPE_tum
+ 	   || pred == PRED_TYPE_tumu;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_series (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vfrsub/vfrdiv.  */
+ template<rtx_code CODE>
+ class reverse_binop : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (
+       code_for_pred_reverse_scalar (CODE, e.vector_mode ()));
+   }
+ };
+ 
+ class vfmacc : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul_scalar (PLUS,
+ 							  e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul (PLUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfnmsac : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (
+ 	true, code_for_pred_mul_neg_scalar (PLUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul_neg (PLUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfmadd : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul_scalar (PLUS,
+ 							  e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul (PLUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfnmsub : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (
+ 	false, code_for_pred_mul_neg_scalar (PLUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul_neg (PLUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfnmacc : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (
+ 	true, code_for_pred_mul_neg_scalar (MINUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul_neg (MINUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfmsac : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul_scalar (MINUS,
+ 							  e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (true,
+ 				code_for_pred_mul (MINUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfnmadd : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (
+ 	false, code_for_pred_mul_neg_scalar (MINUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul_neg (MINUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfmsub : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul_scalar (MINUS,
+ 							  e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_ternop_insn (false,
+ 				code_for_pred_mul (MINUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfwmacc : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_scalar (PLUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul (PLUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfwnmacc : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_neg_scalar (MINUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_neg (MINUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfwmsac : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_scalar (MINUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul (MINUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfwnmsac : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_neg_scalar (PLUS, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv)
+       return e.use_widen_ternop_insn (
+ 	code_for_pred_widen_mul_neg (PLUS, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ /* Implements vfsqrt7/vfrec7/vfclass/vfsgnj/vfsgnjn/vfsgnjx.  */
+ template<int UNSPEC>
+ class float_misc : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_vf)
+       return e.use_exact_insn (code_for_pred_scalar (UNSPEC, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_vv || e.op_info->op == OP_TYPE_v)
+       return e.use_exact_insn (code_for_pred (UNSPEC, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ /* Implements vmfeq/vmfne/vmflt/vmfgt/vmfle/vmfge.  */
+ template<rtx_code CODE>
+ class fcmp : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+ 	case OP_TYPE_vf: {
+ 	  if (CODE == EQ || CODE == NE)
+ 	    return e.use_compare_insn (CODE, code_for_pred_eqne_scalar (
+ 					       e.vector_mode ()));
+ 	  else
+ 	    return e.use_compare_insn (CODE, code_for_pred_cmp_scalar (
+ 					       e.vector_mode ()));
+ 	}
+ 	case OP_TYPE_vv: {
+ 	  return e.use_compare_insn (CODE,
+ 				     code_for_pred_cmp (e.vector_mode ()));
+ 	}
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ /* Implements vfclass.  */
+ class vfclass : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_class (e.arg_mode (0)));
+   }
+ };
+ 
+ /* Implements vfcvt.x.  */
+ template<int UNSPEC>
+ class vfcvt_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_fcvt_x_f (UNSPEC, e.arg_mode (0)));
+   }
+ };
+ 
+ /* Implements vfcvt.rtz.x.  */
+ template<rtx_code CODE>
+ class vfcvt_rtz_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred (CODE, e.arg_mode (0)));
+   }
+ };
+ 
+ class vfcvt_f : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_x_v)
+       return e.use_exact_insn (code_for_pred (FLOAT, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_xu_v)
+       return e.use_exact_insn (
+ 	code_for_pred (UNSIGNED_FLOAT, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ /* Implements vfwcvt.x.  */
+ template<int UNSPEC>
+ class vfwcvt_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (
+       code_for_pred_widen_fcvt_x_f (UNSPEC, e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vfwcvt.rtz.x.  */
+ template<rtx_code CODE>
+ class vfwcvt_rtz_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_widen (CODE, e.vector_mode ()));
+   }
+ };
+ 
+ class vfwcvt_f : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_f_v)
+       return e.use_exact_insn (code_for_pred_extend (e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_x_v)
+       return e.use_exact_insn (code_for_pred_widen (FLOAT, e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_xu_v)
+       return e.use_exact_insn (
+ 	code_for_pred_widen (UNSIGNED_FLOAT, e.vector_mode ()));
+     gcc_unreachable ();
+   }
+ };
+ 
+ /* Implements vfncvt.x.  */
+ template<int UNSPEC>
+ class vfncvt_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (
+       code_for_pred_narrow_fcvt_x_f (UNSPEC, e.arg_mode (0)));
+   }
+ };
+ 
+ /* Implements vfncvt.rtz.x.  */
+ template<rtx_code CODE>
+ class vfncvt_rtz_x : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_narrow (CODE, e.vector_mode ()));
+   }
+ };
+ 
+ class vfncvt_f : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     if (e.op_info->op == OP_TYPE_f_w)
+       return e.use_exact_insn (code_for_pred_trunc (e.vector_mode ()));
+     if (e.op_info->op == OP_TYPE_x_w)
+       return e.use_exact_insn (code_for_pred_narrow (FLOAT, e.arg_mode (0)));
+     if (e.op_info->op == OP_TYPE_xu_w)
+       return e.use_exact_insn (
+ 	code_for_pred_narrow (UNSIGNED_FLOAT, e.arg_mode (0)));
+     gcc_unreachable ();
+   }
+ };
+ 
+ class vfncvt_rod_f : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_rod_trunc (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements reduction instructions.  */
+ template<rtx_code CODE>
+ class reducop : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (
+       code_for_pred_reduc (CODE, e.vector_mode (), e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements widen reduction instructions.  */
+ template<int UNSPEC>
+ class widen_reducop : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_widen_reduc_plus (UNSPEC,
+ 							     e.vector_mode (),
+ 							     e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements floating-point reduction instructions.  */
+ template<int UNSPEC>
+ class freducop : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (
+       code_for_pred_reduc_plus (UNSPEC, e.vector_mode (), e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements widening floating-point reduction instructions.  */
+ template<int UNSPEC>
+ class widen_freducop : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_widen_reduc_plus (UNSPEC,
+ 							     e.vector_mode (),
+ 							     e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmv/vfmv instructions.  */
+ class vmv : 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
+   {
+     return e.use_exact_insn (code_for_pred_extract_first (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vmv.s.x/vfmv.s.f.  */
+ class vmv_s : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_scalar_move_insn (code_for_pred_broadcast (e.vector_mode ()));
+   }
+ };
+ 
+ template<int UNSPEC>
+ class slideop : public function_base
+ {
+ public:
+   bool has_merge_operand_p () const override
+   {
+     if (UNSPEC == UNSPEC_VSLIDEUP)
+       return false;
+     return true;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_slide (UNSPEC, e.vector_mode ()));
+   }
+ };
+ 
+ class vrgather : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     switch (e.op_info->op)
+       {
+       case OP_TYPE_vx:
+ 	return e.use_exact_insn (
+ 	  code_for_pred_gather_scalar (e.vector_mode ()));
+       case OP_TYPE_vv:
+ 	return e.use_exact_insn (code_for_pred_gather (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ class vrgatherei16 : public function_base
+ {
+ public:
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_gatherei16 (e.vector_mode ()));
+   }
+ };
+ 
+ class vcompress : public function_base
+ {
+ public:
+   bool apply_mask_policy_p () const override { return false; }
+   bool use_mask_predication_p () const override { return false; }
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_exact_insn (code_for_pred_compress (e.vector_mode ()));
+   }
+ };
+ 
+ class vundefined : public function_base
+ {
+ public:
+   bool apply_vl_p () const override
+   {
+     return false;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.generate_insn (code_for_vundefined (e.vector_mode ()));
+   }
+ };
+ 
+ class vreinterpret : public function_base
+ {
+ public:
+   bool apply_vl_p () const override
+   {
+     return false;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     e.add_input_operand (0);
+     return e.generate_insn (code_for_vreinterpret (e.ret_mode ()));
+   }
+ };
+ 
+ class vlmul_ext : public function_base
+ {
+ public:
+   bool apply_vl_p () const override
+   {
+     return false;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     e.add_input_operand (0);
+     switch (e.op_info->ret.base_type)
+       {
+       case RVV_BASE_vlmul_ext_x2:
+ 	return e.generate_insn (
+ 	  code_for_vlmul_extx2 (e.vector_mode ()));
+       case RVV_BASE_vlmul_ext_x4:
+ 	return e.generate_insn (
+ 	  code_for_vlmul_extx4 (e.vector_mode ()));
+       case RVV_BASE_vlmul_ext_x8:
+ 	return e.generate_insn (
+ 	  code_for_vlmul_extx8 (e.vector_mode ()));
+       case RVV_BASE_vlmul_ext_x16:
+ 	return e.generate_insn (
+ 	  code_for_vlmul_extx16 (e.vector_mode ()));
+       case RVV_BASE_vlmul_ext_x32:
+ 	return e.generate_insn (
+ 	  code_for_vlmul_extx32 (e.vector_mode ()));
+       case RVV_BASE_vlmul_ext_x64:
+ 	return e.generate_insn (
+ 	  code_for_vlmul_extx64 (e.vector_mode ()));
+       default:
+ 	gcc_unreachable ();
+       }
+   }
+ };
+ 
+ class vlmul_trunc : public function_base
+ {
+ public:
+   bool apply_vl_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     rtx src = expand_normal (CALL_EXPR_ARG (e.exp, 0));
+     emit_move_insn (e.target, gen_lowpart (GET_MODE (e.target), src));
+     return e.target;
+   }
+ };
+ 
+ class vset : public function_base
+ {
+ public:
+   bool apply_vl_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     rtx dest = expand_normal (CALL_EXPR_ARG (e.exp, 0));
+     rtx index = expand_normal (CALL_EXPR_ARG (e.exp, 1));
+     rtx src = expand_normal (CALL_EXPR_ARG (e.exp, 2));
+     poly_int64 offset = INTVAL (index) * GET_MODE_SIZE (GET_MODE (src));
+     emit_move_insn (e.target, dest);
+     rtx subreg = simplify_gen_subreg (GET_MODE (src), e.target,
+ 				      GET_MODE (e.target), offset);
+     emit_move_insn (subreg, src);
+     return e.target;
+   }
+ };
+ 
+ class vget : public function_base
+ {
+ public:
+   bool apply_vl_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     rtx src = expand_normal (CALL_EXPR_ARG (e.exp, 0));
+     rtx index = expand_normal (CALL_EXPR_ARG (e.exp, 1));
+     poly_int64 offset = INTVAL (index) * GET_MODE_SIZE (GET_MODE (e.target));
+     rtx subreg
+       = simplify_gen_subreg (GET_MODE (e.target), src, GET_MODE (src), offset);
+     return subreg;
+   }
+ };
+ 
+ class read_vl : public function_base
+ {
+ public:
+   unsigned int call_properties (const function_instance &) const override
+   {
+     return CP_READ_CSR;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     if (Pmode == SImode)
+       emit_insn (gen_read_vlsi (e.target));
+     else
+       emit_insn (gen_read_vldi_zero_extend (e.target));
+     return e.target;
+   }
+ };
+ 
+ class vleff : public function_base
+ {
+ public:
+   unsigned int call_properties (const function_instance &) const override
+   {
+     return CP_READ_MEMORY | CP_WRITE_CSR;
+   }
+ 
+   gimple *fold (gimple_folder &f) const override
+   {
+     /* fold vleff (const *base, size_t *new_vl, size_t vl)
+ 
+        ====> vleff (const *base, size_t vl)
+ 	     new_vl = MEM_REF[read_vl ()].  */
+ 
+     auto_vec<tree> vargs (gimple_call_num_args (f.call) - 1);
+ 
+     for (unsigned i = 0; i < gimple_call_num_args (f.call); i++)
+       {
+ 	/* Exclude size_t *new_vl argument.  */
+ 	if (i == gimple_call_num_args (f.call) - 2)
+ 	  continue;
+ 
+ 	vargs.quick_push (gimple_call_arg (f.call, i));
+       }
+ 
+     gimple *repl = gimple_build_call_vec (gimple_call_fn (f.call), vargs);
+     gimple_call_set_lhs (repl, f.lhs);
+ 
+     /* Handle size_t *new_vl by read_vl.  */
+     tree new_vl = gimple_call_arg (f.call, gimple_call_num_args (f.call) - 2);
+     if (integer_zerop (new_vl))
+       {
+ 	/* This case happens when user passes the nullptr to new_vl argument.
+ 	   In this case, we just need to ignore the new_vl argument and return
+ 	   vleff instruction directly. */
+ 	return repl;
+       }
+ 
+     tree tmp_var = create_tmp_var (size_type_node, "new_vl");
+     tree decl = get_read_vl_decl ();
+     gimple *g = gimple_build_call (decl, 0);
+     gimple_call_set_lhs (g, tmp_var);
+     tree indirect
+       = fold_build2 (MEM_REF, size_type_node,
+ 		     gimple_call_arg (f.call,
+ 				      gimple_call_num_args (f.call) - 2),
+ 		     build_int_cst (build_pointer_type (size_type_node), 0));
+     gassign *assign = gimple_build_assign (indirect, tmp_var);
+ 
+     gsi_insert_after (f.gsi, assign, GSI_SAME_STMT);
+     gsi_insert_after (f.gsi, g, GSI_SAME_STMT);
+     return repl;
+   }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     return e.use_contiguous_load_insn (
+       code_for_pred_fault_load (e.vector_mode ()));
+   }
+ };
+ 
+ /* Implements vlenb.  */
+ class vlenb : public function_base
+ {
+ public:
+   bool apply_vl_p () const override { return false; }
+ 
+   rtx expand (function_expander &e) const override
+   {
+     machine_mode mode = GET_MODE (e.target);
+     rtx vlenb = gen_int_mode (BYTES_PER_RISCV_VECTOR, mode);
+     emit_move_insn (e.target, vlenb);
+     return e.target;
+   }
+ };
+ 
+ static CONSTEXPR const vsetvl<false> vsetvl_obj;
+ static CONSTEXPR const vsetvl<true> vsetvlmax_obj;
+ static CONSTEXPR const loadstore<false, LST_UNIT_STRIDE, false> vle_obj;
+ static CONSTEXPR const loadstore<true, LST_UNIT_STRIDE, false> vse_obj;
+ static CONSTEXPR const loadstore<false, LST_UNIT_STRIDE, false> vlm_obj;
+ static CONSTEXPR const loadstore<true, LST_UNIT_STRIDE, false> vsm_obj;
+ static CONSTEXPR const loadstore<false, LST_STRIDED, false> vlse_obj;
+ static CONSTEXPR const loadstore<true, LST_STRIDED, false> vsse_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, false> vluxei8_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, false> vluxei16_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, false> vluxei32_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, false> vluxei64_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, true> vloxei8_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, true> vloxei16_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, true> vloxei32_obj;
+ static CONSTEXPR const loadstore<false, LST_INDEXED, true> vloxei64_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, false> vsuxei8_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, false> vsuxei16_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, false> vsuxei32_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, false> vsuxei64_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, true> vsoxei8_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, true> vsoxei16_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, true> vsoxei32_obj;
+ static CONSTEXPR const loadstore<true, LST_INDEXED, true> vsoxei64_obj;
+ static CONSTEXPR const binop<PLUS> vadd_obj;
+ static CONSTEXPR const binop<MINUS> vsub_obj;
+ static CONSTEXPR const vrsub vrsub_obj;
+ static CONSTEXPR const binop<AND> vand_obj;
+ static CONSTEXPR const binop<IOR> vor_obj;
+ static CONSTEXPR const binop<XOR> vxor_obj;
+ static CONSTEXPR const binop<ASHIFT> vsll_obj;
+ static CONSTEXPR const binop<ASHIFTRT> vsra_obj;
+ static CONSTEXPR const binop<LSHIFTRT> vsrl_obj;
+ static CONSTEXPR const binop<SMIN> vmin_obj;
+ static CONSTEXPR const binop<SMAX> vmax_obj;
+ static CONSTEXPR const binop<UMIN> vminu_obj;
+ static CONSTEXPR const binop<UMAX> vmaxu_obj;
+ static CONSTEXPR const binop<MULT> vmul_obj;
+ static CONSTEXPR const vmulh<UNSPEC_VMULHS> vmulh_obj;
+ static CONSTEXPR const vmulh<UNSPEC_VMULHU> vmulhu_obj;
+ static CONSTEXPR const vmulh<UNSPEC_VMULHSU> vmulhsu_obj;
+ static CONSTEXPR const binop<DIV> vdiv_obj;
+ static CONSTEXPR const binop<MOD> vrem_obj;
+ static CONSTEXPR const binop<UDIV> vdivu_obj;
+ static CONSTEXPR const binop<UMOD> vremu_obj;
+ static CONSTEXPR const unop<NEG> vneg_obj;
+ static CONSTEXPR const unop<NOT> vnot_obj;
+ static CONSTEXPR const ext<SIGN_EXTEND> vsext_obj;
+ static CONSTEXPR const ext<ZERO_EXTEND> vzext_obj;
+ static CONSTEXPR const widen_binop<PLUS, SIGN_EXTEND>vwadd_obj;
+ static CONSTEXPR const widen_binop<MINUS, SIGN_EXTEND>vwsub_obj;
+ static CONSTEXPR const widen_binop<MULT, SIGN_EXTEND>vwmul_obj;
+ static CONSTEXPR const widen_binop<PLUS, ZERO_EXTEND>vwaddu_obj;
+ static CONSTEXPR const widen_binop<MINUS, ZERO_EXTEND>vwsubu_obj;
+ static CONSTEXPR const widen_binop<MULT, ZERO_EXTEND>vwmulu_obj;
+ static CONSTEXPR const vwmulsu vwmulsu_obj;
+ static CONSTEXPR const vwcvt<SIGN_EXTEND> vwcvt_x_obj;
+ static CONSTEXPR const vwcvt<ZERO_EXTEND> vwcvtu_x_obj;
+ static CONSTEXPR const vadc vadc_obj;
+ static CONSTEXPR const vsbc vsbc_obj;
+ static CONSTEXPR const vmadc vmadc_obj;
+ static CONSTEXPR const vmsbc vmsbc_obj;
+ static CONSTEXPR const vnshift<LSHIFTRT> vnsrl_obj;
+ static CONSTEXPR const vnshift<ASHIFTRT> vnsra_obj;
+ static CONSTEXPR const vncvt_x vncvt_x_obj;
+ static CONSTEXPR const vmerge vmerge_obj;
+ static CONSTEXPR const vmv_v vmv_v_obj;
+ static CONSTEXPR const icmp<EQ> vmseq_obj;
+ static CONSTEXPR const icmp<NE> vmsne_obj;
+ static CONSTEXPR const icmp<LT> vmslt_obj;
+ static CONSTEXPR const icmp<GT> vmsgt_obj;
+ static CONSTEXPR const icmp<LE> vmsle_obj;
+ static CONSTEXPR const icmp<GE> vmsge_obj;
+ static CONSTEXPR const icmp<LTU> vmsltu_obj;
+ static CONSTEXPR const icmp<GTU> vmsgtu_obj;
+ static CONSTEXPR const icmp<LEU> vmsleu_obj;
+ static CONSTEXPR const icmp<GEU> vmsgeu_obj;
+ static CONSTEXPR const vmacc vmacc_obj;
+ static CONSTEXPR const vnmsac vnmsac_obj;
+ static CONSTEXPR const vmadd vmadd_obj;
+ static CONSTEXPR const vnmsub vnmsub_obj;
+ static CONSTEXPR const vwmacc vwmacc_obj;
+ static CONSTEXPR const vwmaccu vwmaccu_obj;
+ static CONSTEXPR const vwmaccsu vwmaccsu_obj;
+ static CONSTEXPR const vwmaccus vwmaccus_obj;
+ static CONSTEXPR const binop<SS_PLUS> vsadd_obj;
+ static CONSTEXPR const binop<SS_MINUS> vssub_obj;
+ static CONSTEXPR const binop<US_PLUS> vsaddu_obj;
+ static CONSTEXPR const binop<US_MINUS> vssubu_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VAADDU> vaaddu_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VAADD> vaadd_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VASUBU> vasubu_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VASUB> vasub_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VSMUL> vsmul_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VSSRL> vssrl_obj;
+ static CONSTEXPR const sat_op<UNSPEC_VSSRA> vssra_obj;
+ static CONSTEXPR const vnclip<UNSPEC_VNCLIP> vnclip_obj;
+ static CONSTEXPR const vnclip<UNSPEC_VNCLIPU> vnclipu_obj;
+ static CONSTEXPR const mask_logic<AND> vmand_obj;
+ static CONSTEXPR const mask_nlogic<AND> vmnand_obj;
+ static CONSTEXPR const mask_notlogic<AND> vmandn_obj;
+ static CONSTEXPR const mask_logic<XOR> vmxor_obj;
+ static CONSTEXPR const mask_logic<IOR> vmor_obj;
+ static CONSTEXPR const mask_nlogic<IOR> vmnor_obj;
+ static CONSTEXPR const mask_notlogic<IOR> vmorn_obj;
+ static CONSTEXPR const mask_nlogic<XOR> vmxnor_obj;
+ static CONSTEXPR const vmmv vmmv_obj;
+ static CONSTEXPR const vmclr vmclr_obj;
+ static CONSTEXPR const vmset vmset_obj;
+ static CONSTEXPR const vmnot vmnot_obj;
+ static CONSTEXPR const vcpop vcpop_obj;
+ static CONSTEXPR const vfirst vfirst_obj;
+ static CONSTEXPR const mask_misc<UNSPEC_VMSBF> vmsbf_obj;
+ static CONSTEXPR const mask_misc<UNSPEC_VMSIF> vmsif_obj;
+ static CONSTEXPR const mask_misc<UNSPEC_VMSOF> vmsof_obj;
+ static CONSTEXPR const viota viota_obj;
+ static CONSTEXPR const vid vid_obj;
+ static CONSTEXPR const binop<PLUS> vfadd_obj;
+ static CONSTEXPR const binop<MINUS> vfsub_obj;
+ static CONSTEXPR const reverse_binop<MINUS> vfrsub_obj;
+ static CONSTEXPR const widen_binop<PLUS> vfwadd_obj;
+ static CONSTEXPR const widen_binop<MINUS> vfwsub_obj;
+ static CONSTEXPR const binop<MULT> vfmul_obj;
+ static CONSTEXPR const binop<DIV> vfdiv_obj;
+ static CONSTEXPR const reverse_binop<DIV> vfrdiv_obj;
+ static CONSTEXPR const widen_binop<MULT> vfwmul_obj;
+ static CONSTEXPR const vfmacc vfmacc_obj;
+ static CONSTEXPR const vfnmsac vfnmsac_obj;
+ static CONSTEXPR const vfmadd vfmadd_obj;
+ static CONSTEXPR const vfnmsub vfnmsub_obj;
+ static CONSTEXPR const vfnmacc vfnmacc_obj;
+ static CONSTEXPR const vfmsac vfmsac_obj;
+ static CONSTEXPR const vfnmadd vfnmadd_obj;
+ static CONSTEXPR const vfmsub vfmsub_obj;
+ static CONSTEXPR const vfwmacc vfwmacc_obj;
+ static CONSTEXPR const vfwnmacc vfwnmacc_obj;
+ static CONSTEXPR const vfwmsac vfwmsac_obj;
+ static CONSTEXPR const vfwnmsac vfwnmsac_obj;
+ static CONSTEXPR const unop<SQRT> vfsqrt_obj;
+ static CONSTEXPR const float_misc<UNSPEC_VFRSQRT7> vfrsqrt7_obj;
+ static CONSTEXPR const float_misc<UNSPEC_VFREC7> vfrec7_obj;
+ static CONSTEXPR const binop<SMIN> vfmin_obj;
+ static CONSTEXPR const binop<SMAX> vfmax_obj;
+ static CONSTEXPR const float_misc<UNSPEC_VCOPYSIGN> vfsgnj_obj;
+ static CONSTEXPR const float_misc<UNSPEC_VNCOPYSIGN> vfsgnjn_obj;
+ static CONSTEXPR const float_misc<UNSPEC_VXORSIGN> vfsgnjx_obj;
+ static CONSTEXPR const unop<NEG> vfneg_obj;
+ static CONSTEXPR const unop<ABS> vfabs_obj;
+ static CONSTEXPR const fcmp<EQ> vmfeq_obj;
+ static CONSTEXPR const fcmp<NE> vmfne_obj;
+ static CONSTEXPR const fcmp<LT> vmflt_obj;
+ static CONSTEXPR const fcmp<GT> vmfgt_obj;
+ static CONSTEXPR const fcmp<LE> vmfle_obj;
+ static CONSTEXPR const fcmp<GE> vmfge_obj;
+ static CONSTEXPR const vfclass vfclass_obj;
+ static CONSTEXPR const vmerge vfmerge_obj;
+ static CONSTEXPR const vmv_v vfmv_v_obj;
+ static CONSTEXPR const vfcvt_x<UNSPEC_VFCVT> vfcvt_x_obj;
+ static CONSTEXPR const vfcvt_x<UNSPEC_UNSIGNED_VFCVT> vfcvt_xu_obj;
+ static CONSTEXPR const vfcvt_rtz_x<FIX> vfcvt_rtz_x_obj;
+ static CONSTEXPR const vfcvt_rtz_x<UNSIGNED_FIX> vfcvt_rtz_xu_obj;
+ static CONSTEXPR const vfcvt_f vfcvt_f_obj;
+ static CONSTEXPR const vfwcvt_x<UNSPEC_VFCVT> vfwcvt_x_obj;
+ static CONSTEXPR const vfwcvt_x<UNSPEC_UNSIGNED_VFCVT> vfwcvt_xu_obj;
+ static CONSTEXPR const vfwcvt_rtz_x<FIX> vfwcvt_rtz_x_obj;
+ static CONSTEXPR const vfwcvt_rtz_x<UNSIGNED_FIX> vfwcvt_rtz_xu_obj;
+ static CONSTEXPR const vfwcvt_f vfwcvt_f_obj;
+ static CONSTEXPR const vfncvt_x<UNSPEC_VFCVT> vfncvt_x_obj;
+ static CONSTEXPR const vfncvt_x<UNSPEC_UNSIGNED_VFCVT> vfncvt_xu_obj;
+ static CONSTEXPR const vfncvt_rtz_x<FIX> vfncvt_rtz_x_obj;
+ static CONSTEXPR const vfncvt_rtz_x<UNSIGNED_FIX> vfncvt_rtz_xu_obj;
+ static CONSTEXPR const vfncvt_f vfncvt_f_obj;
+ static CONSTEXPR const vfncvt_rod_f vfncvt_rod_f_obj;
+ static CONSTEXPR const reducop<PLUS> vredsum_obj;
+ static CONSTEXPR const reducop<UMAX> vredmaxu_obj;
+ static CONSTEXPR const reducop<SMAX> vredmax_obj;
+ static CONSTEXPR const reducop<UMIN> vredminu_obj;
+ static CONSTEXPR const reducop<SMIN> vredmin_obj;
+ static CONSTEXPR const reducop<AND> vredand_obj;
+ static CONSTEXPR const reducop<IOR> vredor_obj;
+ static CONSTEXPR const reducop<XOR> vredxor_obj;
+ static CONSTEXPR const widen_reducop<UNSPEC_WREDUC_SUM> vwredsum_obj;
+ static CONSTEXPR const widen_reducop<UNSPEC_WREDUC_USUM> vwredsumu_obj;
+ static CONSTEXPR const freducop<UNSPEC_UNORDERED> vfredusum_obj;
+ static CONSTEXPR const freducop<UNSPEC_ORDERED> vfredosum_obj;
+ static CONSTEXPR const reducop<SMAX> vfredmax_obj;
+ static CONSTEXPR const reducop<SMIN> vfredmin_obj;
+ static CONSTEXPR const widen_freducop<UNSPEC_UNORDERED> vfwredusum_obj;
+ static CONSTEXPR const widen_freducop<UNSPEC_ORDERED> vfwredosum_obj;
+ static CONSTEXPR const vmv vmv_x_obj;
+ static CONSTEXPR const vmv_s vmv_s_obj;
+ static CONSTEXPR const vmv vfmv_f_obj;
+ static CONSTEXPR const vmv_s vfmv_s_obj;
+ static CONSTEXPR const slideop<UNSPEC_VSLIDEUP> vslideup_obj;
+ static CONSTEXPR const slideop<UNSPEC_VSLIDEDOWN> vslidedown_obj;
+ static CONSTEXPR const slideop<UNSPEC_VSLIDE1UP> vslide1up_obj;
+ static CONSTEXPR const slideop<UNSPEC_VSLIDE1DOWN> vslide1down_obj;
+ static CONSTEXPR const slideop<UNSPEC_VFSLIDE1UP> vfslide1up_obj;
+ static CONSTEXPR const slideop<UNSPEC_VFSLIDE1DOWN> vfslide1down_obj;
+ static CONSTEXPR const vrgather vrgather_obj;
+ static CONSTEXPR const vrgatherei16 vrgatherei16_obj;
+ static CONSTEXPR const vcompress vcompress_obj;
+ static CONSTEXPR const vundefined vundefined_obj;
+ static CONSTEXPR const vreinterpret vreinterpret_obj;
+ static CONSTEXPR const vlmul_ext vlmul_ext_obj;
+ static CONSTEXPR const vlmul_trunc vlmul_trunc_obj;
+ static CONSTEXPR const vset vset_obj;
+ static CONSTEXPR const vget vget_obj;
+ static CONSTEXPR const read_vl read_vl_obj;
+ static CONSTEXPR const vleff vleff_obj;
+ static CONSTEXPR const vlenb vlenb_obj;
+ 
+ /* Declare the function base NAME, pointing it to an instance
+    of class <NAME>_obj.  */
+ #define BASE(NAME) \
+   namespace bases { const function_base *const NAME = &NAME##_obj; }
+ 
+ BASE (vsetvl)
+ BASE (vsetvlmax)
+ BASE (vle)
+ BASE (vse)
+ BASE (vlm)
+ BASE (vsm)
+ BASE (vlse)
+ BASE (vsse)
+ BASE (vluxei8)
+ BASE (vluxei16)
+ BASE (vluxei32)
+ BASE (vluxei64)
+ BASE (vloxei8)
+ BASE (vloxei16)
+ BASE (vloxei32)
+ BASE (vloxei64)
+ BASE (vsuxei8)
+ BASE (vsuxei16)
+ BASE (vsuxei32)
+ BASE (vsuxei64)
+ BASE (vsoxei8)
+ BASE (vsoxei16)
+ BASE (vsoxei32)
+ BASE (vsoxei64)
+ BASE (vadd)
+ BASE (vsub)
+ BASE (vrsub)
+ BASE (vand)
+ BASE (vor)
+ BASE (vxor)
+ BASE (vsll)
+ BASE (vsra)
+ BASE (vsrl)
+ BASE (vmin)
+ BASE (vmax)
+ BASE (vminu)
+ BASE (vmaxu)
+ BASE (vmul)
+ BASE (vmulh)
+ BASE (vmulhu)
+ BASE (vmulhsu)
+ BASE (vdiv)
+ BASE (vrem)
+ BASE (vdivu)
+ BASE (vremu)
+ BASE (vneg)
+ BASE (vnot)
+ BASE (vsext)
+ BASE (vzext)
+ BASE (vwadd)
+ BASE (vwsub)
+ BASE (vwmul)
+ BASE (vwaddu)
+ BASE (vwsubu)
+ BASE (vwmulu)
+ BASE (vwmulsu)
+ BASE (vwcvt_x)
+ BASE (vwcvtu_x)
+ BASE (vadc)
+ BASE (vsbc)
+ BASE (vmadc)
+ BASE (vmsbc)
+ BASE (vnsrl)
+ BASE (vnsra)
+ BASE (vncvt_x)
+ BASE (vmerge)
+ BASE (vmv_v)
+ BASE (vmseq)
+ BASE (vmsne)
+ BASE (vmslt)
+ BASE (vmsgt)
+ BASE (vmsle)
+ BASE (vmsge)
+ BASE (vmsltu)
+ BASE (vmsgtu)
+ BASE (vmsleu)
+ BASE (vmsgeu)
+ BASE (vmacc)
+ BASE (vnmsac)
+ BASE (vmadd)
+ BASE (vnmsub)
+ BASE (vwmacc)
+ BASE (vwmaccu)
+ BASE (vwmaccsu)
+ BASE (vwmaccus)
+ BASE (vsadd)
+ BASE (vssub)
+ BASE (vsaddu)
+ BASE (vssubu)
+ BASE (vaadd)
+ BASE (vasub)
+ BASE (vaaddu)
+ BASE (vasubu)
+ BASE (vsmul)
+ BASE (vssra)
+ BASE (vssrl)
+ BASE (vnclip)
+ BASE (vnclipu)
+ BASE (vmand)
+ BASE (vmnand)
+ BASE (vmandn)
+ BASE (vmxor)
+ BASE (vmor)
+ BASE (vmnor)
+ BASE (vmorn)
+ BASE (vmxnor)
+ BASE (vmmv)
+ BASE (vmclr)
+ BASE (vmset)
+ BASE (vmnot)
+ BASE (vcpop)
+ BASE (vfirst)
+ BASE (vmsbf)
+ BASE (vmsif)
+ BASE (vmsof)
+ BASE (viota)
+ BASE (vid)
+ BASE (vfadd)
+ BASE (vfsub)
+ BASE (vfrsub)
+ BASE (vfwadd)
+ BASE (vfwsub)
+ BASE (vfmul)
+ BASE (vfdiv)
+ BASE (vfrdiv)
+ BASE (vfwmul)
+ BASE (vfmacc)
+ BASE (vfnmsac)
+ BASE (vfmadd)
+ BASE (vfnmsub)
+ BASE (vfnmacc)
+ BASE (vfmsac)
+ BASE (vfnmadd)
+ BASE (vfmsub)
+ BASE (vfwmacc)
+ BASE (vfwnmacc)
+ BASE (vfwmsac)
+ BASE (vfwnmsac)
+ BASE (vfsqrt)
+ BASE (vfrsqrt7)
+ BASE (vfrec7)
+ BASE (vfmin)
+ BASE (vfmax)
+ BASE (vfsgnj)
+ BASE (vfsgnjn)
+ BASE (vfsgnjx)
+ BASE (vfneg)
+ BASE (vfabs)
+ BASE (vmfeq)
+ BASE (vmfne)
+ BASE (vmflt)
+ BASE (vmfgt)
+ BASE (vmfle)
+ BASE (vmfge)
+ BASE (vfclass)
+ BASE (vfmerge)
+ BASE (vfmv_v)
+ BASE (vfcvt_x)
+ BASE (vfcvt_xu)
+ BASE (vfcvt_rtz_x)
+ BASE (vfcvt_rtz_xu)
+ BASE (vfcvt_f)
+ BASE (vfwcvt_x)
+ BASE (vfwcvt_xu)
+ BASE (vfwcvt_rtz_x)
+ BASE (vfwcvt_rtz_xu)
+ BASE (vfwcvt_f)
+ BASE (vfncvt_x)
+ BASE (vfncvt_xu)
+ BASE (vfncvt_rtz_x)
+ BASE (vfncvt_rtz_xu)
+ BASE (vfncvt_f)
+ BASE (vfncvt_rod_f)
+ BASE (vredsum)
+ BASE (vredmaxu)
+ BASE (vredmax)
+ BASE (vredminu)
+ BASE (vredmin)
+ BASE (vredand)
+ BASE (vredor)
+ BASE (vredxor)
+ BASE (vwredsum)
+ BASE (vwredsumu)
+ BASE (vfredusum)
+ BASE (vfredosum)
+ BASE (vfredmax)
+ BASE (vfredmin)
+ BASE (vfwredosum)
+ BASE (vfwredusum)
+ BASE (vmv_x)
+ BASE (vmv_s)
+ BASE (vfmv_f)
+ BASE (vfmv_s)
+ BASE (vslideup)
+ BASE (vslidedown)
+ BASE (vslide1up)
+ BASE (vslide1down)
+ BASE (vfslide1up)
+ BASE (vfslide1down)
+ BASE (vrgather)
+ BASE (vrgatherei16)
+ BASE (vcompress)
+ BASE (vundefined)
+ BASE (vreinterpret)
+ BASE (vlmul_ext)
+ BASE (vlmul_trunc)
+ BASE (vset)
+ BASE (vget)
+ BASE (read_vl)
+ BASE (vleff)
+ BASE (vlenb)
+ 
+ } // end namespace riscv_vector
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-bases.h gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-bases.h
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-bases.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-bases.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,248 ----
+ /* function_base declaration for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_RISCV_VECTOR_BUILTINS_BASES_H
+ #define GCC_RISCV_VECTOR_BUILTINS_BASES_H
+ 
+ namespace riscv_vector {
+ 
+ namespace bases {
+ extern const function_base *const vsetvl;
+ extern const function_base *const vsetvlmax;
+ extern const function_base *const vle;
+ extern const function_base *const vse;
+ extern const function_base *const vlm;
+ extern const function_base *const vsm;
+ extern const function_base *const vlse;
+ extern const function_base *const vsse;
+ extern const function_base *const vluxei8;
+ extern const function_base *const vluxei16;
+ extern const function_base *const vluxei32;
+ extern const function_base *const vluxei64;
+ extern const function_base *const vloxei8;
+ extern const function_base *const vloxei16;
+ extern const function_base *const vloxei32;
+ extern const function_base *const vloxei64;
+ extern const function_base *const vsuxei8;
+ extern const function_base *const vsuxei16;
+ extern const function_base *const vsuxei32;
+ extern const function_base *const vsuxei64;
+ extern const function_base *const vsoxei8;
+ extern const function_base *const vsoxei16;
+ extern const function_base *const vsoxei32;
+ extern const function_base *const vsoxei64;
+ extern const function_base *const vadd;
+ extern const function_base *const vsub;
+ extern const function_base *const vrsub;
+ extern const function_base *const vand;
+ extern const function_base *const vor;
+ extern const function_base *const vxor;
+ extern const function_base *const vsll;
+ extern const function_base *const vsra;
+ extern const function_base *const vsrl;
+ extern const function_base *const vmin;
+ extern const function_base *const vmax;
+ extern const function_base *const vminu;
+ extern const function_base *const vmaxu;
+ extern const function_base *const vmul;
+ extern const function_base *const vmulh;
+ extern const function_base *const vmulhu;
+ extern const function_base *const vmulhsu;
+ extern const function_base *const vdiv;
+ extern const function_base *const vrem;
+ extern const function_base *const vdivu;
+ extern const function_base *const vremu;
+ extern const function_base *const vneg;
+ extern const function_base *const vnot;
+ extern const function_base *const vsext;
+ extern const function_base *const vzext;
+ extern const function_base *const vwadd;
+ extern const function_base *const vwsub;
+ extern const function_base *const vwmul;
+ extern const function_base *const vwaddu;
+ extern const function_base *const vwsubu;
+ extern const function_base *const vwmulu;
+ extern const function_base *const vwmulsu;
+ extern const function_base *const vwcvt_x;
+ extern const function_base *const vwcvtu_x;
+ extern const function_base *const vadc;
+ extern const function_base *const vsbc;
+ extern const function_base *const vmadc;
+ extern const function_base *const vmsbc;
+ extern const function_base *const vnsrl;
+ extern const function_base *const vnsra;
+ extern const function_base *const vncvt_x;
+ extern const function_base *const vmerge;
+ extern const function_base *const vmv_v;
+ extern const function_base *const vmseq;
+ extern const function_base *const vmsne;
+ extern const function_base *const vmslt;
+ extern const function_base *const vmsgt;
+ extern const function_base *const vmsle;
+ extern const function_base *const vmsge;
+ extern const function_base *const vmsltu;
+ extern const function_base *const vmsgtu;
+ extern const function_base *const vmsleu;
+ extern const function_base *const vmsgeu;
+ extern const function_base *const vmacc;
+ extern const function_base *const vnmsac;
+ extern const function_base *const vmadd;
+ extern const function_base *const vnmsub;
+ extern const function_base *const vwmacc;
+ extern const function_base *const vwmaccu;
+ extern const function_base *const vwmaccsu;
+ extern const function_base *const vwmaccus;
+ extern const function_base *const vsadd;
+ extern const function_base *const vssub;
+ extern const function_base *const vsaddu;
+ extern const function_base *const vssubu;
+ extern const function_base *const vaadd;
+ extern const function_base *const vasub;
+ extern const function_base *const vaaddu;
+ extern const function_base *const vasubu;
+ extern const function_base *const vsmul;
+ extern const function_base *const vssra;
+ extern const function_base *const vssrl;
+ extern const function_base *const vnclip;
+ extern const function_base *const vnclip;
+ extern const function_base *const vnclipu;
+ extern const function_base *const vnclipu;
+ extern const function_base *const vmand;
+ extern const function_base *const vmnand;
+ extern const function_base *const vmandn;
+ extern const function_base *const vmxor;
+ extern const function_base *const vmor;
+ extern const function_base *const vmnor;
+ extern const function_base *const vmorn;
+ extern const function_base *const vmxnor;
+ extern const function_base *const vmmv;
+ extern const function_base *const vmclr;
+ extern const function_base *const vmset;
+ extern const function_base *const vmnot;
+ extern const function_base *const vcpop;
+ extern const function_base *const vfirst;
+ extern const function_base *const vmsbf;
+ extern const function_base *const vmsif;
+ extern const function_base *const vmsof;
+ extern const function_base *const viota;
+ extern const function_base *const vid;
+ extern const function_base *const vfadd;
+ extern const function_base *const vfadd;
+ extern const function_base *const vfsub;
+ extern const function_base *const vfsub;
+ extern const function_base *const vfrsub;
+ extern const function_base *const vfwadd;
+ extern const function_base *const vfwsub;
+ extern const function_base *const vfmul;
+ extern const function_base *const vfmul;
+ extern const function_base *const vfdiv;
+ extern const function_base *const vfdiv;
+ extern const function_base *const vfrdiv;
+ extern const function_base *const vfwmul;
+ extern const function_base *const vfmacc;
+ extern const function_base *const vfnmsac;
+ extern const function_base *const vfmadd;
+ extern const function_base *const vfnmsub;
+ extern const function_base *const vfnmacc;
+ extern const function_base *const vfmsac;
+ extern const function_base *const vfnmadd;
+ extern const function_base *const vfmsub;
+ extern const function_base *const vfwmacc;
+ extern const function_base *const vfwnmacc;
+ extern const function_base *const vfwmsac;
+ extern const function_base *const vfwnmsac;
+ extern const function_base *const vfsqrt;
+ extern const function_base *const vfrsqrt7;
+ extern const function_base *const vfrec7;
+ extern const function_base *const vfmin;
+ extern const function_base *const vfmax;
+ extern const function_base *const vfsgnj;
+ extern const function_base *const vfsgnjn;
+ extern const function_base *const vfsgnjx;
+ extern const function_base *const vfneg;
+ extern const function_base *const vfabs;
+ extern const function_base *const vmfeq;
+ extern const function_base *const vmfne;
+ extern const function_base *const vmflt;
+ extern const function_base *const vmfgt;
+ extern const function_base *const vmfle;
+ extern const function_base *const vmfge;
+ extern const function_base *const vfclass;
+ extern const function_base *const vfmerge;
+ extern const function_base *const vfmv_v;
+ extern const function_base *const vfcvt_x;
+ extern const function_base *const vfcvt_xu;
+ extern const function_base *const vfcvt_rtz_x;
+ extern const function_base *const vfcvt_rtz_xu;
+ extern const function_base *const vfcvt_f;
+ extern const function_base *const vfwcvt_x;
+ extern const function_base *const vfwcvt_xu;
+ extern const function_base *const vfwcvt_rtz_x;
+ extern const function_base *const vfwcvt_rtz_xu;
+ extern const function_base *const vfwcvt_f;
+ extern const function_base *const vfncvt_x;
+ extern const function_base *const vfncvt_xu;
+ extern const function_base *const vfncvt_rtz_x;
+ extern const function_base *const vfncvt_rtz_xu;
+ extern const function_base *const vfncvt_f;
+ extern const function_base *const vfncvt_rod_f;
+ extern const function_base *const vredsum;
+ extern const function_base *const vredmaxu;
+ extern const function_base *const vredmax;
+ extern const function_base *const vredminu;
+ extern const function_base *const vredmin;
+ extern const function_base *const vredand;
+ extern const function_base *const vredor;
+ extern const function_base *const vredxor;
+ extern const function_base *const vwredsum;
+ extern const function_base *const vwredsumu;
+ extern const function_base *const vfredusum;
+ extern const function_base *const vfredosum;
+ extern const function_base *const vfredmax;
+ extern const function_base *const vfredmin;
+ extern const function_base *const vfwredosum;
+ extern const function_base *const vfwredusum;
+ extern const function_base *const vmv_x;
+ extern const function_base *const vmv_s;
+ extern const function_base *const vfmv_f;
+ extern const function_base *const vfmv_s;
+ extern const function_base *const vslideup;
+ extern const function_base *const vslidedown;
+ extern const function_base *const vslide1up;
+ extern const function_base *const vslide1down;
+ extern const function_base *const vfslide1up;
+ extern const function_base *const vfslide1down;
+ extern const function_base *const vrgather;
+ extern const function_base *const vrgatherei16;
+ extern const function_base *const vcompress;
+ extern const function_base *const vundefined;
+ extern const function_base *const vreinterpret;
+ extern const function_base *const vlmul_ext;
+ extern const function_base *const vlmul_trunc;
+ extern const function_base *const vset;
+ extern const function_base *const vget;
+ extern const function_base *const read_vl;
+ extern const function_base *const vleff;
+ extern const function_base *const vlenb;
+ }
+ 
+ } // end namespace riscv_vector
+ 
+ #endif
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-functions.def gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-functions.def
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-functions.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-functions.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,536 ----
+ /* Intrinsic define macros for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+ 
+ /* Use "DEF_RVV_FUNCTION" macro to define RVV intrinsic functions.
+ 
+      - NAME not only describes the base_name of the functions
+        but also point to the name of the function_base class.
+ 
+      - SHAPE point to the function_shape class.
+ 
+      - PREDS describes the predication types that are supported in the
+        functions.
+ 
+      - OPS_INFO describes all information of return type and each
+        argument type.
+ 
+ */
+ #ifndef DEF_RVV_FUNCTION
+ #define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)
+ #endif
+ 
+ /* Internal helper functions for gimple fold use.  */
+ DEF_RVV_FUNCTION (read_vl, read_vl, none_preds, p_none_void_ops)
+ DEF_RVV_FUNCTION (vlenb, vlenb, none_preds, ul_none_void_ops)
+ 
+ /* 6. Configuration-Setting Instructions.  */
+ 
+ DEF_RVV_FUNCTION (vsetvl, vsetvl, none_preds, i_none_size_size_ops)
+ DEF_RVV_FUNCTION (vsetvlmax, vsetvlmax, none_preds, i_none_size_void_ops)
+ 
+ /* 7. Vector Loads and Stores. */
+ 
+ // 7.4. Vector Unit-Stride Instructions
+ DEF_RVV_FUNCTION (vle, loadstore, full_preds, all_v_scalar_const_ptr_ops)
+ DEF_RVV_FUNCTION (vse, loadstore, none_m_preds, all_v_scalar_ptr_ops)
+ DEF_RVV_FUNCTION (vlm, loadstore, none_preds, b_v_scalar_const_ptr_ops)
+ DEF_RVV_FUNCTION (vsm, loadstore, none_preds, b_v_scalar_ptr_ops)
+ 
+ // 7.5. Vector Strided Instructions
+ DEF_RVV_FUNCTION (vlse, loadstore, full_preds, all_v_scalar_const_ptr_ptrdiff_ops)
+ DEF_RVV_FUNCTION (vsse, loadstore, none_m_preds, all_v_scalar_ptr_ptrdiff_ops)
+ 
+ // 7.6. Vector Indexed Instructions
+ DEF_RVV_FUNCTION (vluxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
+ DEF_RVV_FUNCTION (vluxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
+ DEF_RVV_FUNCTION (vluxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
+ DEF_RVV_FUNCTION (vluxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
+ DEF_RVV_FUNCTION (vloxei8, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew8_index_ops)
+ DEF_RVV_FUNCTION (vloxei16, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew16_index_ops)
+ DEF_RVV_FUNCTION (vloxei32, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew32_index_ops)
+ DEF_RVV_FUNCTION (vloxei64, indexed_loadstore, full_preds, all_v_scalar_const_ptr_eew64_index_ops)
+ DEF_RVV_FUNCTION (vsuxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
+ DEF_RVV_FUNCTION (vsuxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
+ DEF_RVV_FUNCTION (vsuxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
+ DEF_RVV_FUNCTION (vsuxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
+ DEF_RVV_FUNCTION (vsoxei8, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew8_index_ops)
+ DEF_RVV_FUNCTION (vsoxei16, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew16_index_ops)
+ DEF_RVV_FUNCTION (vsoxei32, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew32_index_ops)
+ DEF_RVV_FUNCTION (vsoxei64, indexed_loadstore, none_m_preds, all_v_scalar_ptr_eew64_index_ops)
+ 
+ // 7.7. Unit-stride Fault-Only-First Loads
+ DEF_RVV_FUNCTION (vleff, fault_load, full_preds, all_v_scalar_const_ptr_size_ptr_ops)
+ 
+ // TODO: 7.8. Vector Load/Store Segment Instructions
+ 
+ /* 11. Vector Integer Arithmetic Instructions.  */
+ 
+ // 11.1. Vector Single-Width Integer Add and Subtract
+ DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvv_ops)
+ DEF_RVV_FUNCTION (vadd, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvv_ops)
+ DEF_RVV_FUNCTION (vsub, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vrsub, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vneg, alu, full_preds, iu_v_ops)
+ 
+ // 11.2. Vector Widening Integer Add/Subtract
+ DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvv_ops)
+ DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wvx_ops)
+ DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvv_ops)
+ DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wvx_ops)
+ DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvv_ops)
+ DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wvx_ops)
+ DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvv_ops)
+ DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wvx_ops)
+ DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwv_ops)
+ DEF_RVV_FUNCTION (vwaddu, widen_alu, full_preds, u_wwx_ops)
+ DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwv_ops)
+ DEF_RVV_FUNCTION (vwsubu, widen_alu, full_preds, u_wwx_ops)
+ DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwv_ops)
+ DEF_RVV_FUNCTION (vwadd, widen_alu, full_preds, i_wwx_ops)
+ DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwv_ops)
+ DEF_RVV_FUNCTION (vwsub, widen_alu, full_preds, i_wwx_ops)
+ DEF_RVV_FUNCTION (vwcvt_x, alu, full_preds, i_x_x_v_ops)
+ DEF_RVV_FUNCTION (vwcvtu_x, alu, full_preds, u_x_x_v_ops)
+ 
+ // 11.3. Vector Integer Extension
+ DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf2_ops)
+ DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf4_ops)
+ DEF_RVV_FUNCTION (vzext, widen_alu, full_preds, u_vf8_ops)
+ DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf2_ops)
+ DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf4_ops)
+ DEF_RVV_FUNCTION (vsext, widen_alu, full_preds, i_vf8_ops)
+ 
+ // 11.4. Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions
+ DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
+ DEF_RVV_FUNCTION (vadc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
+ DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvvm_ops)
+ DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvxm_ops)
+ DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvv_ops)
+ DEF_RVV_FUNCTION (vmadc, return_mask, none_preds, iu_mvx_ops)
+ DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvvm_ops)
+ DEF_RVV_FUNCTION (vsbc, no_mask_policy, none_tu_preds, iu_vvxm_ops)
+ DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvvm_ops)
+ DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvxm_ops)
+ DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvv_ops)
+ DEF_RVV_FUNCTION (vmsbc, return_mask, none_preds, iu_mvx_ops)
+ 
+ // 11.5. Vector Bitwise Logical Instructions
+ DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvv_ops)
+ DEF_RVV_FUNCTION (vand, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvv_ops)
+ DEF_RVV_FUNCTION (vor, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvv_ops)
+ DEF_RVV_FUNCTION (vxor, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vnot, alu, full_preds, iu_v_ops)
+ 
+ // 11.6. Vector Single-Width Shift Instructions
+ DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvv_ops)
+ DEF_RVV_FUNCTION (vsll, alu, full_preds, iu_shift_vvx_ops)
+ DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvv_ops)
+ DEF_RVV_FUNCTION (vsra, alu, full_preds, i_shift_vvx_ops)
+ DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvv_ops)
+ DEF_RVV_FUNCTION (vsrl, alu, full_preds, u_shift_vvx_ops)
+ 
+ // 11.7. Vector Narrowing Integer Right Shift Instructions
+ DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
+ DEF_RVV_FUNCTION (vnsrl, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
+ DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
+ DEF_RVV_FUNCTION (vnsra, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
+ DEF_RVV_FUNCTION (vncvt_x, narrow_alu, full_preds, iu_trunc_ops)
+ 
+ // 11.8. Vector Integer Compare Instructions
+ DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvv_ops)
+ DEF_RVV_FUNCTION (vmseq, return_mask, none_m_mu_preds, iu_mvx_ops)
+ DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvv_ops)
+ DEF_RVV_FUNCTION (vmsne, return_mask, none_m_mu_preds, iu_mvx_ops)
+ DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvv_ops)
+ DEF_RVV_FUNCTION (vmsltu, return_mask, none_m_mu_preds, u_mvx_ops)
+ DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvv_ops)
+ DEF_RVV_FUNCTION (vmslt, return_mask, none_m_mu_preds, i_mvx_ops)
+ DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvv_ops)
+ DEF_RVV_FUNCTION (vmsleu, return_mask, none_m_mu_preds, u_mvx_ops)
+ DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvv_ops)
+ DEF_RVV_FUNCTION (vmsle, return_mask, none_m_mu_preds, i_mvx_ops)
+ DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvv_ops)
+ DEF_RVV_FUNCTION (vmsgtu, return_mask, none_m_mu_preds, u_mvx_ops)
+ DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvv_ops)
+ DEF_RVV_FUNCTION (vmsgt, return_mask, none_m_mu_preds, i_mvx_ops)
+ DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvv_ops)
+ DEF_RVV_FUNCTION (vmsgeu, return_mask, none_m_mu_preds, u_mvx_ops)
+ DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvv_ops)
+ DEF_RVV_FUNCTION (vmsge, return_mask, none_m_mu_preds, i_mvx_ops)
+ 
+ // 11.9. Vector Integer Min/Max Instructions
+ DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vminu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vmin, alu, full_preds, i_vvx_ops)
+ DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vmaxu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vmax, alu, full_preds, i_vvx_ops)
+ 
+ // 11.10. Vector Single-Width Integer Multiply Instructions
+ DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvv_ops)
+ DEF_RVV_FUNCTION (vmul, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvv_ops)
+ DEF_RVV_FUNCTION (vmulh, alu, full_preds, full_v_i_vvx_ops)
+ DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvv_ops)
+ DEF_RVV_FUNCTION (vmulhu, alu, full_preds, full_v_u_vvx_ops)
+ DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvv_ops)
+ DEF_RVV_FUNCTION (vmulhsu, alu, full_preds, full_v_i_su_vvx_ops)
+ 
+ // 11.11. Vector Integer Divide Instructions
+ DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vdivu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vdiv, alu, full_preds, i_vvx_ops)
+ DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vremu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vrem, alu, full_preds, i_vvx_ops)
+ 
+ // 11.12. Vector Widening Integer Multiply Instructions
+ DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvv_ops)
+ DEF_RVV_FUNCTION (vwmul, alu, full_preds, i_wvx_ops)
+ DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvv_ops)
+ DEF_RVV_FUNCTION (vwmulu, alu, full_preds, u_wvx_ops)
+ DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvv_ops)
+ DEF_RVV_FUNCTION (vwmulsu, alu, full_preds, i_su_wvx_ops)
+ 
+ // 11.13. Vector Single-Width Integer Multiply-Add Instructions
+ DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvvv_ops)
+ DEF_RVV_FUNCTION (vmacc, alu, full_preds, iu_vvxv_ops)
+ DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvvv_ops)
+ DEF_RVV_FUNCTION (vnmsac, alu, full_preds, iu_vvxv_ops)
+ DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvvv_ops)
+ DEF_RVV_FUNCTION (vmadd, alu, full_preds, iu_vvxv_ops)
+ DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvvv_ops)
+ DEF_RVV_FUNCTION (vnmsub, alu, full_preds, iu_vvxv_ops)
+ 
+ // 11.14. Vector Widening Integer Multiply-Add Instructions
+ DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwvv_ops)
+ DEF_RVV_FUNCTION (vwmaccu, alu, full_preds, u_wwxv_ops)
+ DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwvv_ops)
+ DEF_RVV_FUNCTION (vwmacc, alu, full_preds, i_wwxv_ops)
+ DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwvv_ops)
+ DEF_RVV_FUNCTION (vwmaccsu, alu, full_preds, i_su_wwxv_ops)
+ DEF_RVV_FUNCTION (vwmaccus, alu, full_preds, i_us_wwxv_ops)
+ 
+ // 11.15. Vector Integer Merge Instructions
+ DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, all_vvvm_ops)
+ DEF_RVV_FUNCTION (vmerge, no_mask_policy, none_tu_preds, iu_vvxm_ops)
+ 
+ // 11.16 Vector Integer Move Instructions
+ DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, all_v_ops)
+ DEF_RVV_FUNCTION (vmv_v, move, none_tu_preds, iu_x_ops)
+ 
+ /* 12. Vector Fixed-Point Arithmetic Instructions. */
+ 
+ // 12.1. Vector Single-Width Saturating Add and Subtract
+ DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vsaddu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vsadd, alu, full_preds, i_vvx_ops)
+ DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vssubu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vssub, alu, full_preds, i_vvx_ops)
+ 
+ // 12.2. Vector Single-Width Averaging Add and Subtract
+ DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vaaddu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vaadd, alu, full_preds, i_vvx_ops)
+ DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvv_ops)
+ DEF_RVV_FUNCTION (vasubu, alu, full_preds, u_vvx_ops)
+ DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvv_ops)
+ DEF_RVV_FUNCTION (vasub, alu, full_preds, i_vvx_ops)
+ 
+ // 12.3. Vector Single-Width Fractional Multiply with Rounding and Saturation
+ DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvv_ops)
+ DEF_RVV_FUNCTION (vsmul, alu, full_preds, full_v_i_vvx_ops)
+ 
+ // 12.4. Vector Single-Width Scaling Shift Instructions
+ DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvv_ops)
+ DEF_RVV_FUNCTION (vssrl, alu, full_preds, u_shift_vvx_ops)
+ DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvv_ops)
+ DEF_RVV_FUNCTION (vssra, alu, full_preds, i_shift_vvx_ops)
+ 
+ // 12.5. Vector Narrowing Fixed-Point Clip Instructions
+ DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwv_ops)
+ DEF_RVV_FUNCTION (vnclipu, narrow_alu, full_preds, u_narrow_shift_vwx_ops)
+ DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwv_ops)
+ DEF_RVV_FUNCTION (vnclip, narrow_alu, full_preds, i_narrow_shift_vwx_ops)
+ 
+ /* 13. Vector Floating-Point Instructions.  */
+ 
+ // 13.2. Vector Single-Width Floating-Point Add/Subtract Instructions
+ DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfadd, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfsub, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfrsub, alu, full_preds, f_vvf_ops)
+ 
+ // 13.3. Vector Widening Floating-Point Add/Subtract Instructions
+ DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvv_ops)
+ DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wvf_ops)
+ DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvv_ops)
+ DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wvf_ops)
+ DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwv_ops)
+ DEF_RVV_FUNCTION (vfwadd, widen_alu, full_preds, f_wwf_ops)
+ DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwv_ops)
+ DEF_RVV_FUNCTION (vfwsub, widen_alu, full_preds, f_wwf_ops)
+ 
+ // 13.4. Vector Single-Width Floating-Point Multiply/Divide Instructions
+ DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfmul, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfdiv, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfrdiv, alu, full_preds, f_vvf_ops)
+ 
+ // 13.5. Vector Widening Floating-Point Multiply
+ DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvv_ops)
+ DEF_RVV_FUNCTION (vfwmul, alu, full_preds, f_wvf_ops)
+ 
+ // 13.6. Vector Single-Width Floating-Point Fused Multiply-Add Instructions
+ DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfmacc, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfnmsac, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfmadd, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfnmsub, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfnmacc, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfmsac, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfnmadd, alu, full_preds, f_vvfv_ops)
+ DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvvv_ops)
+ DEF_RVV_FUNCTION (vfmsub, alu, full_preds, f_vvfv_ops)
+ 
+ // 13.7. Vector Widening Floating-Point Fused Multiply-Add Instructions
+ DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwvv_ops)
+ DEF_RVV_FUNCTION (vfwmacc, alu, full_preds, f_wwfv_ops)
+ DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwvv_ops)
+ DEF_RVV_FUNCTION (vfwnmacc, alu, full_preds, f_wwfv_ops)
+ DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwvv_ops)
+ DEF_RVV_FUNCTION (vfwmsac, alu, full_preds, f_wwfv_ops)
+ DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwvv_ops)
+ DEF_RVV_FUNCTION (vfwnmsac, alu, full_preds, f_wwfv_ops)
+ 
+ // 13.8. Vector Floating-Point Square-Root Instruction
+ DEF_RVV_FUNCTION (vfsqrt, alu, full_preds, f_v_ops)
+ 
+ // 13.9. Vector Floating-Point Reciprocal Square-Root Estimate Instruction
+ DEF_RVV_FUNCTION (vfrsqrt7, alu, full_preds, f_v_ops)
+ 
+ // 13.10. Vector Floating-Point Reciprocal Estimate Instruction
+ DEF_RVV_FUNCTION (vfrec7, alu, full_preds, f_v_ops)
+ 
+ // 13.11. Vector Floating-Point MIN/MAX Instructions
+ DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfmin, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfmax, alu, full_preds, f_vvf_ops)
+ 
+ // 13.12. Vector Floating-Point Sign-Injection Instructions
+ DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfsgnj, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfsgnjn, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvv_ops)
+ DEF_RVV_FUNCTION (vfsgnjx, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfneg, alu, full_preds, f_v_ops)
+ DEF_RVV_FUNCTION (vfabs, alu, full_preds, f_v_ops)
+ 
+ // 13.13. Vector Floating-Point Compare Instructions
+ DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvv_ops)
+ DEF_RVV_FUNCTION (vmfeq, return_mask, none_m_mu_preds, f_mvf_ops)
+ DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvv_ops)
+ DEF_RVV_FUNCTION (vmfne, return_mask, none_m_mu_preds, f_mvf_ops)
+ DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvv_ops)
+ DEF_RVV_FUNCTION (vmflt, return_mask, none_m_mu_preds, f_mvf_ops)
+ DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvv_ops)
+ DEF_RVV_FUNCTION (vmfle, return_mask, none_m_mu_preds, f_mvf_ops)
+ DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvv_ops)
+ DEF_RVV_FUNCTION (vmfgt, return_mask, none_m_mu_preds, f_mvf_ops)
+ DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvv_ops)
+ DEF_RVV_FUNCTION (vmfge, return_mask, none_m_mu_preds, f_mvf_ops)
+ 
+ // 13.14. Vector Floating-Point Classify Instruction
+ DEF_RVV_FUNCTION (vfclass, alu, full_preds, f_to_u_v_ops)
+ 
+ // 13.15. Vector Floating-Point Merge Instruction
+ DEF_RVV_FUNCTION (vfmerge, no_mask_policy, none_tu_preds, f_vvfm_ops)
+ 
+ // 13.16. Vector Floating-Point Move Instruction
+ DEF_RVV_FUNCTION (vfmv_v, move, none_tu_preds, f_f_ops)
+ 
+ // 13.17. Single-Width Floating-Point/Integer Type-Convert Instructions
+ DEF_RVV_FUNCTION (vfcvt_x, alu, full_preds, f_to_i_f_v_ops)
+ DEF_RVV_FUNCTION (vfcvt_xu, alu, full_preds, f_to_u_f_v_ops)
+ DEF_RVV_FUNCTION (vfcvt_rtz_x, alu, full_preds, f_to_i_f_v_ops)
+ DEF_RVV_FUNCTION (vfcvt_rtz_xu, alu, full_preds, f_to_u_f_v_ops)
+ DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, i_to_f_x_v_ops)
+ DEF_RVV_FUNCTION (vfcvt_f, alu, full_preds, u_to_f_xu_v_ops)
+ 
+ // 13.18. Widening Floating-Point/Integer Type-Convert Instructions
+ DEF_RVV_FUNCTION (vfwcvt_x, alu, full_preds, f_to_wi_f_v_ops)
+ DEF_RVV_FUNCTION (vfwcvt_xu, alu, full_preds, f_to_wu_f_v_ops)
+ DEF_RVV_FUNCTION (vfwcvt_rtz_x, alu, full_preds, f_to_wi_f_v_ops)
+ DEF_RVV_FUNCTION (vfwcvt_rtz_xu, alu, full_preds, f_to_wu_f_v_ops)
+ DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, i_to_wf_x_v_ops)
+ DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, u_to_wf_xu_v_ops)
+ DEF_RVV_FUNCTION (vfwcvt_f, alu, full_preds, f_to_wf_f_v_ops)
+ 
+ // 13.19. Narrowing Floating-Point/Integer Type-Convert Instructions
+ DEF_RVV_FUNCTION (vfncvt_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_rtz_x, narrow_alu, full_preds, f_to_ni_f_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_rtz_xu, narrow_alu, full_preds, f_to_nu_f_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, i_to_nf_x_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, u_to_nf_xu_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
+ DEF_RVV_FUNCTION (vfncvt_rod_f, narrow_alu, full_preds, f_to_nf_f_w_ops)
+ 
+ /* 14. Vector Reduction Operations.  */
+ 
+ // 14.1. Vector Single-Width Integer Reduction Instructions
+ DEF_RVV_FUNCTION (vredsum, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredmaxu, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredmax, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredminu, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredmin, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredand, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredor, reduc_alu, no_mu_preds, iu_vs_ops)
+ DEF_RVV_FUNCTION (vredxor, reduc_alu, no_mu_preds, iu_vs_ops)
+ 
+ // 14.2. Vector Widening Integer Reduction Instructions
+ DEF_RVV_FUNCTION (vwredsum, reduc_alu, no_mu_preds, wi_vs_ops)
+ DEF_RVV_FUNCTION (vwredsumu, reduc_alu, no_mu_preds, wu_vs_ops)
+ 
+ // 14.3. Vector Single-Width Floating-Point Reduction Instructions
+ DEF_RVV_FUNCTION (vfredusum, reduc_alu, no_mu_preds, f_vs_ops)
+ DEF_RVV_FUNCTION (vfredosum, reduc_alu, no_mu_preds, f_vs_ops)
+ DEF_RVV_FUNCTION (vfredmax, reduc_alu, no_mu_preds, f_vs_ops)
+ DEF_RVV_FUNCTION (vfredmin, reduc_alu, no_mu_preds, f_vs_ops)
+ 
+ // 14.4. Vector Widening Floating-Point Reduction Instructions
+ DEF_RVV_FUNCTION (vfwredosum, reduc_alu, no_mu_preds, wf_vs_ops)
+ DEF_RVV_FUNCTION (vfwredusum, reduc_alu, no_mu_preds, wf_vs_ops)
+ 
+ /* 15. Vector Mask Instructions.  */
+ 
+ // 15.1. Vector Mask-Register Logical Instructions
+ DEF_RVV_FUNCTION (vmand, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmnand, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmandn, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmxor, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmor, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmnor, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmorn, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmxnor, mask_alu, none_preds, b_mmm_ops)
+ DEF_RVV_FUNCTION (vmmv, mask_alu, none_preds, b_mm_ops)
+ DEF_RVV_FUNCTION (vmclr, mask_alu, none_preds, b_m_ops)
+ DEF_RVV_FUNCTION (vmset, mask_alu, none_preds, b_m_ops)
+ DEF_RVV_FUNCTION (vmnot, mask_alu, none_preds, b_mm_ops)
+ // 15.2. Vector count population in mask vcpop.m
+ DEF_RVV_FUNCTION (vcpop, mask_alu, none_m_preds, b_ulong_m_ops)
+ // 15.3. vfirst find-first-set mask bit
+ DEF_RVV_FUNCTION (vfirst, mask_alu, none_m_preds, b_long_m_ops)
+ // 15.4. vmsbf.m set-before-first mask bit
+ DEF_RVV_FUNCTION (vmsbf, mask_alu, none_m_mu_preds, b_mm_ops)
+ // 15.5. vmsif.m set-including-first mask bit
+ DEF_RVV_FUNCTION (vmsif, mask_alu, none_m_mu_preds, b_mm_ops)
+ // 15.6. vmsof.m set-only-first mask bit
+ DEF_RVV_FUNCTION (vmsof, mask_alu, none_m_mu_preds, b_mm_ops)
+ // 15.8. Vector Iota Instruction
+ DEF_RVV_FUNCTION (viota, mask_alu, full_preds, u_vm_ops)
+ // 15.9. Vector Element Index Instruction
+ DEF_RVV_FUNCTION (vid, alu, full_preds, u_v_ops)
+ 
+ /* 16. Vector Permutation Instructions.  */
+ 
+ // 16.1. Integer Scalar Move Instructions
+ DEF_RVV_FUNCTION (vmv_x, scalar_move, none_preds, iu_x_s_ops)
+ DEF_RVV_FUNCTION (vmv_s, move, none_tu_preds, iu_s_x_ops)
+ 
+ // 16.2. Floating-Point Scalar Move Instructions
+ DEF_RVV_FUNCTION (vfmv_f, scalar_move, none_preds, f_f_s_ops)
+ DEF_RVV_FUNCTION (vfmv_s, move, none_tu_preds, f_s_f_ops)
+ 
+ // 16.3. Vector Slide Instructions
+ DEF_RVV_FUNCTION (vslideup, alu, full_preds, all_vvvx_ops)
+ DEF_RVV_FUNCTION (vslidedown, alu, full_preds, all_vvx_ops)
+ DEF_RVV_FUNCTION (vslide1up, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vslide1down, alu, full_preds, iu_vvx_ops)
+ DEF_RVV_FUNCTION (vfslide1up, alu, full_preds, f_vvf_ops)
+ DEF_RVV_FUNCTION (vfslide1down, alu, full_preds, f_vvf_ops)
+ 
+ // 16.4. Vector Register Gather Instructions
+ DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvv_ops)
+ DEF_RVV_FUNCTION (vrgather, alu, full_preds, all_gather_vvx_ops)
+ DEF_RVV_FUNCTION (vrgatherei16, alu, full_preds, all_gatherei16_vvv_ops)
+ 
+ // 16.5. Vector Compress Instruction
+ DEF_RVV_FUNCTION (vcompress, alu, none_tu_preds, all_vvm_ops)
+ 
+ /* Miscellaneous Vector Functions.  */
+ DEF_RVV_FUNCTION (vundefined, vundefined, none_preds, all_none_void_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_u_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_i_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_i_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, f_v_u_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, i_v_f_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, u_v_f_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew8_interpret_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew16_interpret_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew32_interpret_ops)
+ DEF_RVV_FUNCTION (vreinterpret, misc, none_preds, iu_v_eew64_interpret_ops)
+ DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x2_ops)
+ DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x4_ops)
+ DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x8_ops)
+ DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x16_ops)
+ DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x32_ops)
+ DEF_RVV_FUNCTION (vlmul_ext, misc, none_preds, all_v_vlmul_ext_x64_ops)
+ DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x2_ops)
+ DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x4_ops)
+ DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x8_ops)
+ DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x16_ops)
+ DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x32_ops)
+ DEF_RVV_FUNCTION (vlmul_trunc, misc, none_preds, all_v_vlmul_trunc_x64_ops)
+ DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x2_ops)
+ DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x4_ops)
+ DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul1_x8_ops)
+ DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x2_ops)
+ DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul2_x4_ops)
+ DEF_RVV_FUNCTION (vset, vset, none_preds, all_v_vset_lmul4_x2_ops)
+ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x2_ops)
+ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x4_ops)
+ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul1_x8_ops)
+ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x2_ops)
+ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul2_x4_ops)
+ DEF_RVV_FUNCTION (vget, vget, none_preds, all_v_vget_lmul4_x2_ops)
+ 
+ #undef DEF_RVV_FUNCTION
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-shapes.cc gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-shapes.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-shapes.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-shapes.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,601 ----
+ /* function_shape implementation for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tree.h"
+ #include "rtl.h"
+ #include "tm_p.h"
+ #include "memmodel.h"
+ #include "insn-codes.h"
+ #include "optabs.h"
+ #include "riscv-vector-builtins.h"
+ #include "riscv-vector-builtins-shapes.h"
+ 
+ namespace riscv_vector {
+ 
+ /* 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_one (function_builder &b, const function_group_info &group,
+ 	   unsigned int pred_idx, unsigned int vec_type_idx)
+ {
+   /* Byte forms of non-tuple vlxusegei take 21 arguments.  */
+   auto_vec<tree, 21> 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);
+   b.add_unique_function (function_instance, (*group.shape), return_type,
+ 			 argument_types);
+ }
+ 
+ /* Add a function instance for every operand && predicate && args
+    combination in GROUP.  Take the function base name from GROUP && operand
+    suffix from operand_suffixes && mode suffix from type_suffixes && predication
+    suffix from predication_suffixes. Use apply_predication to add in
+    the predicate.  */
+ static void
+ build_all (function_builder &b, const function_group_info &group)
+ {
+   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_one (b, group, pred_idx, vec_type_idx);
+ }
+ 
+ /* Declare the function shape NAME, pointing it to an instance
+    of class <NAME>_def.  */
+ #define SHAPE(DEF, VAR) \
+   static CONSTEXPR const DEF##_def VAR##_obj; \
+   namespace shapes { const function_shape *const VAR = &VAR##_obj; }
+ 
+ /* Base class for for build.  */
+ struct build_base : public function_shape
+ {
+   void build (function_builder &b,
+ 	      const function_group_info &group) const override
+   {
+     build_all (b, group);
+   }
+ };
+ 
+ /* vsetvl_def class.  */
+ struct vsetvl_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     /* vsetvl* instruction doesn't have C++ overloaded functions.  */
+     if (overloaded_p)
+       return nullptr;
+     b.append_base_name (instance.base_name);
+     b.append_name (type_suffixes[instance.type.index].vsetvl);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* loadstore_def class.  */
+ struct loadstore_def : public build_base
+ {
+   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_base_name (instance.base_name);
+ 
+     tree type = builtin_types[instance.type.index].vector;
+     machine_mode mode = TYPE_MODE (type);
+     int sew = GET_MODE_BITSIZE (GET_MODE_INNER (mode));
+     /* vop --> vop<sew>.  */
+     if (GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL)
+       b.append_sew (sew);
+ 
+     /* vop<sew>_v --> vop<sew>_v_<type>.  */
+     if (!overloaded_p)
+       {
+ 	/* vop<sew> --> vop<sew>_v.  */
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	/* vop<sew>_v --> vop<sew>_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 ();
+   }
+ };
+ 
+ /* indexed_loadstore_def class.  */
+ struct indexed_loadstore_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_one (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_base_name (instance.base_name);
+     /* vop<sew>_v --> vop<sew>_v_<type>.  */
+     if (!overloaded_p)
+       {
+ 	/* vop<sew> --> vop<sew>_v.  */
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	/* vop<sew>_v --> vop<sew>_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
+ {
+   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_base_name (instance.base_name);
+ 
+     /* vop<sew>_<op> --> vop<sew>_<op>_<type>.  */
+     if (!overloaded_p)
+       {
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	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 ();
+   }
+ };
+ 
+ /* widen_alu_def class. Handle vwadd/vwsub. Unlike
+    vadd.vx/vadd.vv/vwmul.vv/vwmul.vx, vwadd.vv/vwadd.vx/vwadd.wv/vwadd.wx has
+    'OP' suffix in overloaded API.  */
+ struct widen_alu_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     /* vop<sew> --> vop<sew>_<op>.  */
+     b.append_name (operand_suffixes[instance.op_info->op]);
+ 
+     /* vop<sew>_<op> --> vop<sew>_<op>_<type>.  */
+     if (!overloaded_p)
+       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 ();
+   }
+ };
+ 
+ /* no_mask_policy_def class. Such instructions belong to this class
+    doesn't need mask policy.  */
+ struct no_mask_policy_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     if (!overloaded_p)
+       b.append_name (operand_suffixes[instance.op_info->op]);
+ 
+     /* vop<sew>_<op> --> vop<sew>_<op>_<type>.  */
+     if (!overloaded_p)
+       b.append_name (type_suffixes[instance.type.index].vector);
+ 
+     b.append_name (predication_suffixes[instance.pred]);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* return_mask_def class. Such instructions belong to this class
+    is returning mask value.  */
+ struct return_mask_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     if (!overloaded_p)
+       b.append_name (operand_suffixes[instance.op_info->op]);
+ 
+     /* vop<sew>_<op> --> vop<sew>_<op>_<type1>_<type2>.  */
+     if (!overloaded_p)
+       {
+ 	b.append_name (type_suffixes[instance.type.index].vector);
+ 	vector_type_index ret_type_idx
+ 	  = instance.op_info->ret.get_function_type_index (instance.type.index);
+ 	b.append_name (type_suffixes[ret_type_idx].vector);
+       }
+ 
+     if (overloaded_p && instance.pred == PRED_TYPE_m)
+       return b.finish_name ();
+     b.append_name (predication_suffixes[instance.pred]);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* narrow_alu_def class. Handle narrowing instructions like vnsrl.wv.  */
+ struct narrow_alu_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     if (!overloaded_p)
+       {
+ 	/* vop --> vop_<op>.  */
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	/* vop_<op> --> vop_<op>_<type>.  */
+ 	vector_type_index ret_type_idx
+ 	  = instance.op_info->ret.get_function_type_index (instance.type.index);
+ 	b.append_name (type_suffixes[ret_type_idx].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 ();
+   }
+ };
+ 
+ /* move_def class. Handle vmv.v.v/vmv.v.x.  */
+ struct move_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     /* vmv.v.x/vfmv.v.f (PRED_none) can not be overloaded.  */
+     if ((instance.op_info->op == OP_TYPE_x || instance.op_info->op == OP_TYPE_f)
+ 	&& overloaded_p && instance.pred == PRED_TYPE_none)
+       return nullptr;
+ 
+     b.append_base_name (instance.base_name);
+ 
+     if (!overloaded_p)
+       {
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	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 ();
+   }
+ };
+ 
+ /* mask_alu_def class.  */
+ struct mask_alu_def : public build_base
+ {
+   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_base_name (instance.base_name);
+ 
+     if (instance.op_info->op == OP_TYPE_mm || instance.op_info->op == OP_TYPE_m)
+       if (!overloaded_p)
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 
+     /* vop<sew>_<op> --> vop<sew>_<op>_<type>.  */
+     if (!overloaded_p)
+       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 ();
+   }
+ };
+ 
+ /* reduc_alu_def class.  */
+ struct reduc_alu_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     /* vop_<op> --> vop<sew>_<op>_<type>.  */
+     if (!overloaded_p)
+       {
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	b.append_name (type_suffixes[instance.type.index].vector);
+ 	vector_type_index ret_type_idx
+ 	  = instance.op_info->ret.get_function_type_index (instance.type.index);
+ 	b.append_name (type_suffixes[ret_type_idx].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 ();
+   }
+ };
+ 
+ /* scalar_move_def class.  */
+ struct scalar_move_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+     if (overloaded_p)
+       return b.finish_name ();
+     b.append_name (operand_suffixes[instance.op_info->op]);
+     b.append_name (type_suffixes[instance.type.index].vector);
+     b.append_name (type_suffixes[instance.type.index].scalar);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* vundefined_def class.  */
+ struct vundefined_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     if (overloaded_p)
+       return nullptr;
+     b.append_base_name (instance.base_name);
+     b.append_name (type_suffixes[instance.type.index].vector);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* misc_def class.  */
+ struct misc_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     if (!overloaded_p)
+       {
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	vector_type_index arg0_type_idx
+ 	  = instance.op_info->args[0].get_function_type_index (
+ 	    instance.type.index);
+ 	b.append_name (type_suffixes[arg0_type_idx].vector);
+       }
+ 
+     vector_type_index ret_type_idx
+       = instance.op_info->ret.get_function_type_index (instance.type.index);
+     b.append_name (type_suffixes[ret_type_idx].vector);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* vset_def class.  */
+ struct vset_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     b.append_base_name (instance.base_name);
+ 
+     if (!overloaded_p)
+       {
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	vector_type_index arg_type_idx
+ 	  = instance.op_info->args[2].get_function_type_index (
+ 	    instance.type.index);
+ 	b.append_name (type_suffixes[arg_type_idx].vector);
+ 
+ 	vector_type_index ret_type_idx
+ 	  = instance.op_info->ret.get_function_type_index (instance.type.index);
+ 	b.append_name (type_suffixes[ret_type_idx].vector);
+       }
+     return b.finish_name ();
+   }
+ 
+   bool check (function_checker &c) const override
+   {
+     poly_int64 outer_size = GET_MODE_SIZE (c.arg_mode (0));
+     poly_int64 inner_size = GET_MODE_SIZE (c.arg_mode (2));
+     unsigned int nvecs = exact_div (outer_size, inner_size).to_constant ();
+     return c.require_immediate (1, 0, nvecs - 1);
+   }
+ };
+ 
+ /* vget_def class.  */
+ struct vget_def : public misc_def
+ {
+   bool check (function_checker &c) const override
+   {
+     poly_int64 outer_size = GET_MODE_SIZE (c.arg_mode (0));
+     poly_int64 inner_size = GET_MODE_SIZE (c.ret_mode ());
+     unsigned int nvecs = exact_div (outer_size, inner_size).to_constant ();
+     return c.require_immediate (1, 0, nvecs - 1);
+   }
+ };
+ 
+ /* read_vl_def class.  */
+ struct read_vl_def : public function_shape
+ {
+   void build (function_builder &b,
+ 	      const function_group_info &group) const override
+   {
+     auto_vec<tree> argument_types;
+     b.add_unique_function (get_read_vl_instance (), (*group.shape),
+ 			   size_type_node, argument_types);
+   }
+ 
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     if (overloaded_p)
+       return nullptr;
+     b.append_base_name (instance.base_name);
+     return b.finish_name ();
+   }
+ };
+ 
+ /* fault_load_def class.  */
+ struct fault_load_def : public build_base
+ {
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     if (overloaded_p)
+       if (instance.pred == PRED_TYPE_none || instance.pred == PRED_TYPE_mu)
+ 	return nullptr;
+     tree type = builtin_types[instance.type.index].vector;
+     machine_mode mode = TYPE_MODE (type);
+     int sew = GET_MODE_BITSIZE (GET_MODE_INNER (mode));
+     b.append_name ("__riscv_");
+     b.append_name ("vle");
+     b.append_sew (sew);
+     b.append_name ("ff");
+ 
+     /* vop<sew>_v --> vop<sew>_v_<type>.  */
+     if (!overloaded_p)
+       {
+ 	/* vop<sew> --> vop<sew>_v.  */
+ 	b.append_name (operand_suffixes[instance.op_info->op]);
+ 	/* vop<sew>_v --> vop<sew>_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 ();
+   }
+ };
+ 
+ /* vlenb_def class.  */
+ struct vlenb_def : public function_shape
+ {
+   void build (function_builder &b,
+ 	      const function_group_info &group) const override
+   {
+     auto_vec<tree> argument_types;
+     function_instance function_instance (group.base_name, *group.base,
+ 					 *group.shape, group.ops_infos.types[0],
+ 					 group.preds[0], &group.ops_infos);
+     b.add_unique_function (function_instance, (*group.shape),
+ 			   long_unsigned_type_node, argument_types);
+   }
+ 
+   char *get_name (function_builder &b, const function_instance &instance,
+ 		  bool overloaded_p) const override
+   {
+     if (overloaded_p)
+       return nullptr;
+     b.append_base_name (instance.base_name);
+     return b.finish_name ();
+   }
+ };
+ 
+ SHAPE(vsetvl, vsetvl)
+ SHAPE(vsetvl, vsetvlmax)
+ SHAPE(loadstore, loadstore)
+ SHAPE(indexed_loadstore, indexed_loadstore)
+ SHAPE(alu, alu)
+ SHAPE(widen_alu, widen_alu)
+ SHAPE(no_mask_policy, no_mask_policy)
+ SHAPE(return_mask, return_mask)
+ SHAPE(narrow_alu, narrow_alu)
+ SHAPE(move, move)
+ SHAPE(mask_alu, mask_alu)
+ SHAPE(reduc_alu, reduc_alu)
+ SHAPE(scalar_move, scalar_move)
+ SHAPE(vundefined, vundefined)
+ SHAPE(misc, misc)
+ SHAPE(vset, vset)
+ SHAPE(vget, vget)
+ SHAPE(read_vl, read_vl)
+ SHAPE(fault_load, fault_load)
+ SHAPE(vlenb, vlenb)
+ 
+ } // end namespace riscv_vector
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-shapes.h gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-shapes.h
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-shapes.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-shapes.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,51 ----
+ /* function_shape declaration for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_RISCV_VECTOR_BUILTINS_SHAPES_H
+ #define GCC_RISCV_VECTOR_BUILTINS_SHAPES_H
+ 
+ namespace riscv_vector {
+ 
+ namespace shapes {
+ 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 alu;
+ extern const function_shape *const widen_alu;
+ extern const function_shape *const no_mask_policy;
+ extern const function_shape *const return_mask;
+ extern const function_shape *const narrow_alu;
+ extern const function_shape *const move;
+ extern const function_shape *const mask_alu;
+ extern const function_shape *const reduc_alu;
+ extern const function_shape *const scalar_move;
+ extern const function_shape *const vundefined;
+ extern const function_shape *const misc;
+ extern const function_shape *const vset;
+ extern const function_shape *const vget;
+ extern const function_shape *const read_vl;
+ extern const function_shape *const fault_load;
+ extern const function_shape *const vlenb;
+ }
+ 
+ } // end namespace riscv_vector
+ 
+ #endif
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-types.def gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-types.def
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins-types.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins-types.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,855 ----
+ /* Intrinsic type iterators for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3. If not see
+ <http://www.gnu.org/licenses/>. */
+ 
+ /* Use "DEF_RVV_I_OPS" macro include all signed integer which will be
+    iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_I_OPS
+ #define DEF_RVV_I_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_U_OPS" macro include all unsigned integer which will be
+    iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_U_OPS
+ #define DEF_RVV_U_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_F_OPS" macro include all floating-point which will be
+    iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_F_OPS
+ #define DEF_RVV_F_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_B_OPS" macro include all bool value which will be
+    iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_B_OPS
+ #define DEF_RVV_B_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WEXTI_OPS" macro include Double-Widening signed integer which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WEXTI_OPS
+ #define DEF_RVV_WEXTI_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_QEXTI_OPS" macro include Quad-Widening signed integer which will
+    be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_QEXTI_OPS
+ #define DEF_RVV_QEXTI_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_OEXTI_OPS" macro include Oct-Widening signed integer which will
+    be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_OEXTI_OPS
+ #define DEF_RVV_OEXTI_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WEXTU_OPS" macro include Double-Widening unsigned integer which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WEXTU_OPS
+ #define DEF_RVV_WEXTU_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_QEXTU_OPS" macro include Quad-Widening unsigned integer which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_QEXTU_OPS
+ #define DEF_RVV_QEXTU_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_OEXTU_OPS" macro include Oct-Widening unsigned integer which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_OEXTU_OPS
+ #define DEF_RVV_OEXTU_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_FULL_V_I_OPS" macro include all signed integer that require full
+    'V' extension which will be iterated and registered as intrinsic functions.
+  */
+ #ifndef DEF_RVV_FULL_V_I_OPS
+ #define DEF_RVV_FULL_V_I_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_FULL_V_U_OPS" macro include all unsigned integer that require
+    full 'V' extension which will be iterated and registered as intrinsic
+    functions.  */
+ #ifndef DEF_RVV_FULL_V_U_OPS
+ #define DEF_RVV_FULL_V_U_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WEXTF_OPS" macro include Double-Widening float which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WEXTF_OPS
+ #define DEF_RVV_WEXTF_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_CONVERT_I_OPS" macro include all integer that will be converted
+    in the float with same nunits which will be iterated and registered as
+    intrinsic functions.  */
+ #ifndef DEF_RVV_CONVERT_I_OPS
+ #define DEF_RVV_CONVERT_I_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_CONVERT_U_OPS" macro include all unsigned integer that will be
+    converted in the float with same nunits which will be iterated and registered
+    as intrinsic functions.  */
+ #ifndef DEF_RVV_CONVERT_U_OPS
+ #define DEF_RVV_CONVERT_U_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WCONVERT_I_OPS" macro include all integer that will be widen
+    converted in the float with same nunits which will be iterated and registered
+    as intrinsic functions.  */
+ #ifndef DEF_RVV_WCONVERT_I_OPS
+ #define DEF_RVV_WCONVERT_I_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WCONVERT_U_OPS" macro include all unsigned integer that will be
+    widen converted in the float with same nunits which will be iterated and
+    registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WCONVERT_U_OPS
+ #define DEF_RVV_WCONVERT_U_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WCONVERT_F_OPS" macro include all unsigned integer that will be
+    widen converted in the float with same nunits which will be iterated and
+    registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WCONVERT_F_OPS
+ #define DEF_RVV_WCONVERT_F_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WI_OPS" macro include all signed integer can be widened which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WI_OPS
+ #define DEF_RVV_WI_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WU_OPS" macro include all unsigned integer can be widened which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WU_OPS
+ #define DEF_RVV_WU_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_WF_OPS" macro include all floating-point can be widened which
+    will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_WF_OPS
+ #define DEF_RVV_WF_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_EI16_OPS" macro include all types for vrgatherei16 which will be
+    iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_EI16_OPS
+ #define DEF_RVV_EI16_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_EEW8_INTERPRET_OPS" macro include all types for EEW8 vinterpret
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_EEW8_INTERPRET_OPS
+ #define DEF_RVV_EEW8_INTERPRET_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_EEW16_INTERPRET_OPS" macro include all types for EEW16
+    vinterpret which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_EEW16_INTERPRET_OPS
+ #define DEF_RVV_EEW16_INTERPRET_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_EEW32_INTERPRET_OPS" macro include all types for EEW32
+    vinterpret which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_EEW32_INTERPRET_OPS
+ #define DEF_RVV_EEW32_INTERPRET_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_EEW64_INTERPRET_OPS" macro include all types for EEW64
+    vinterpret which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_EEW64_INTERPRET_OPS
+ #define DEF_RVV_EEW64_INTERPRET_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_X2_VLMUL_EXT_OPS" macro include all types for X2 VLMUL EXT
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_X2_VLMUL_EXT_OPS
+ #define DEF_RVV_X2_VLMUL_EXT_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_X4_VLMUL_EXT_OPS" macro include all types for X4 VLMUL EXT
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_X4_VLMUL_EXT_OPS
+ #define DEF_RVV_X4_VLMUL_EXT_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_X8_VLMUL_EXT_OPS" macro include all types for X8 VLMUL EXT
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_X8_VLMUL_EXT_OPS
+ #define DEF_RVV_X8_VLMUL_EXT_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_X16_VLMUL_EXT_OPS" macro include all types for X16 VLMUL EXT
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_X16_VLMUL_EXT_OPS
+ #define DEF_RVV_X16_VLMUL_EXT_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_X32_VLMUL_EXT_OPS" macro include all types for X32 VLMUL EXT
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_X32_VLMUL_EXT_OPS
+ #define DEF_RVV_X32_VLMUL_EXT_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_X64_VLMUL_EXT_OPS" macro include all types for X64 VLMUL EXT
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_X64_VLMUL_EXT_OPS
+ #define DEF_RVV_X64_VLMUL_EXT_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_LMUL1_OPS" macro include all types for LMUL1
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_LMUL1_OPS
+ #define DEF_RVV_LMUL1_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_LMUL2_OPS" macro include all types for LMUL2
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_LMUL2_OPS
+ #define DEF_RVV_LMUL2_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ /* Use "DEF_RVV_LMUL4_OPS" macro include all types for LMUL4
+    which will be iterated and registered as intrinsic functions.  */
+ #ifndef DEF_RVV_LMUL4_OPS
+ #define DEF_RVV_LMUL4_OPS(TYPE, REQUIRE)
+ #endif
+ 
+ DEF_RVV_I_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_I_OPS (vint8mf4_t, 0)
+ DEF_RVV_I_OPS (vint8mf2_t, 0)
+ DEF_RVV_I_OPS (vint8m1_t, 0)
+ DEF_RVV_I_OPS (vint8m2_t, 0)
+ DEF_RVV_I_OPS (vint8m4_t, 0)
+ DEF_RVV_I_OPS (vint8m8_t, 0)
+ DEF_RVV_I_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_I_OPS (vint16mf2_t, 0)
+ DEF_RVV_I_OPS (vint16m1_t, 0)
+ DEF_RVV_I_OPS (vint16m2_t, 0)
+ DEF_RVV_I_OPS (vint16m4_t, 0)
+ DEF_RVV_I_OPS (vint16m8_t, 0)
+ DEF_RVV_I_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_I_OPS (vint32m1_t, 0)
+ DEF_RVV_I_OPS (vint32m2_t, 0)
+ DEF_RVV_I_OPS (vint32m4_t, 0)
+ DEF_RVV_I_OPS (vint32m8_t, 0)
+ DEF_RVV_I_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_I_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_I_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_I_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_U_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_U_OPS (vuint8mf4_t, 0)
+ DEF_RVV_U_OPS (vuint8mf2_t, 0)
+ DEF_RVV_U_OPS (vuint8m1_t, 0)
+ DEF_RVV_U_OPS (vuint8m2_t, 0)
+ DEF_RVV_U_OPS (vuint8m4_t, 0)
+ DEF_RVV_U_OPS (vuint8m8_t, 0)
+ DEF_RVV_U_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_U_OPS (vuint16mf2_t, 0)
+ DEF_RVV_U_OPS (vuint16m1_t, 0)
+ DEF_RVV_U_OPS (vuint16m2_t, 0)
+ DEF_RVV_U_OPS (vuint16m4_t, 0)
+ DEF_RVV_U_OPS (vuint16m8_t, 0)
+ DEF_RVV_U_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_U_OPS (vuint32m1_t, 0)
+ DEF_RVV_U_OPS (vuint32m2_t, 0)
+ DEF_RVV_U_OPS (vuint32m4_t, 0)
+ DEF_RVV_U_OPS (vuint32m8_t, 0)
+ DEF_RVV_U_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_U_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_U_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_U_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_F_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_F_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_F_OPS (vfloat32m2_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_F_OPS (vfloat32m4_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_F_OPS (vfloat32m8_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_F_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_F_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_F_OPS (vfloat64m4_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_F_OPS (vfloat64m8_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_B_OPS (vbool64_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_B_OPS (vbool32_t, 0)
+ DEF_RVV_B_OPS (vbool16_t, 0)
+ DEF_RVV_B_OPS (vbool8_t, 0)
+ DEF_RVV_B_OPS (vbool4_t, 0)
+ DEF_RVV_B_OPS (vbool2_t, 0)
+ DEF_RVV_B_OPS (vbool1_t, 0)
+ 
+ DEF_RVV_WEXTI_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WEXTI_OPS (vint16mf2_t, 0)
+ DEF_RVV_WEXTI_OPS (vint16m1_t, 0)
+ DEF_RVV_WEXTI_OPS (vint16m2_t, 0)
+ DEF_RVV_WEXTI_OPS (vint16m4_t, 0)
+ DEF_RVV_WEXTI_OPS (vint16m8_t, 0)
+ DEF_RVV_WEXTI_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WEXTI_OPS (vint32m1_t, 0)
+ DEF_RVV_WEXTI_OPS (vint32m2_t, 0)
+ DEF_RVV_WEXTI_OPS (vint32m4_t, 0)
+ DEF_RVV_WEXTI_OPS (vint32m8_t, 0)
+ DEF_RVV_WEXTI_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WEXTI_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WEXTI_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WEXTI_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_QEXTI_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_QEXTI_OPS (vint32m1_t, 0)
+ DEF_RVV_QEXTI_OPS (vint32m2_t, 0)
+ DEF_RVV_QEXTI_OPS (vint32m4_t, 0)
+ DEF_RVV_QEXTI_OPS (vint32m8_t, 0)
+ DEF_RVV_QEXTI_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QEXTI_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QEXTI_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QEXTI_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_OEXTI_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_OEXTI_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_OEXTI_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_OEXTI_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_WEXTU_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WEXTU_OPS (vuint16mf2_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint16m1_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint16m2_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint16m4_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint16m8_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WEXTU_OPS (vuint32m1_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint32m2_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint32m4_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint32m8_t, 0)
+ DEF_RVV_WEXTU_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WEXTU_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WEXTU_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WEXTU_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_QEXTU_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_QEXTU_OPS (vuint32m1_t, 0)
+ DEF_RVV_QEXTU_OPS (vuint32m2_t, 0)
+ DEF_RVV_QEXTU_OPS (vuint32m4_t, 0)
+ DEF_RVV_QEXTU_OPS (vuint32m8_t, 0)
+ DEF_RVV_QEXTU_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QEXTU_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QEXTU_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_QEXTU_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_OEXTU_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_OEXTU_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_OEXTU_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_OEXTU_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_FULL_V_I_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_FULL_V_I_OPS (vint8mf4_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint8mf2_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint8m1_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint8m2_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint8m4_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint8m8_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_FULL_V_I_OPS (vint16mf2_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint16m1_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint16m2_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint16m4_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint16m8_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_FULL_V_I_OPS (vint32m1_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint32m2_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint32m4_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint32m8_t, 0)
+ DEF_RVV_FULL_V_I_OPS (vint64m1_t, RVV_REQUIRE_FULL_V)
+ DEF_RVV_FULL_V_I_OPS (vint64m2_t, RVV_REQUIRE_FULL_V)
+ DEF_RVV_FULL_V_I_OPS (vint64m4_t, RVV_REQUIRE_FULL_V)
+ DEF_RVV_FULL_V_I_OPS (vint64m8_t, RVV_REQUIRE_FULL_V)
+ 
+ DEF_RVV_FULL_V_U_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_FULL_V_U_OPS (vuint8mf4_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint8mf2_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint8m1_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint8m2_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint8m4_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint8m8_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_FULL_V_U_OPS (vuint16mf2_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint16m1_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint16m2_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint16m4_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint16m8_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_FULL_V_U_OPS (vuint32m1_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint32m2_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint32m4_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint32m8_t, 0)
+ DEF_RVV_FULL_V_U_OPS (vuint64m1_t, RVV_REQUIRE_FULL_V)
+ DEF_RVV_FULL_V_U_OPS (vuint64m2_t, RVV_REQUIRE_FULL_V)
+ DEF_RVV_FULL_V_U_OPS (vuint64m4_t, RVV_REQUIRE_FULL_V)
+ DEF_RVV_FULL_V_U_OPS (vuint64m8_t, RVV_REQUIRE_FULL_V)
+ 
+ DEF_RVV_WEXTF_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_WEXTF_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_WEXTF_OPS (vfloat64m4_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_WEXTF_OPS (vfloat64m8_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_CONVERT_I_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_CONVERT_I_OPS (vint32m1_t, 0)
+ DEF_RVV_CONVERT_I_OPS (vint32m2_t, 0)
+ DEF_RVV_CONVERT_I_OPS (vint32m4_t, 0)
+ DEF_RVV_CONVERT_I_OPS (vint32m8_t, 0)
+ DEF_RVV_CONVERT_I_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_CONVERT_I_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_CONVERT_I_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_CONVERT_I_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_CONVERT_U_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_CONVERT_U_OPS (vuint32m1_t, 0)
+ DEF_RVV_CONVERT_U_OPS (vuint32m2_t, 0)
+ DEF_RVV_CONVERT_U_OPS (vuint32m4_t, 0)
+ DEF_RVV_CONVERT_U_OPS (vuint32m8_t, 0)
+ DEF_RVV_CONVERT_U_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_CONVERT_U_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_CONVERT_U_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_CONVERT_U_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_WCONVERT_I_OPS (vint64m1_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WCONVERT_I_OPS (vint64m2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WCONVERT_I_OPS (vint64m4_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WCONVERT_I_OPS (vint64m8_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_WCONVERT_U_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WCONVERT_U_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WCONVERT_U_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ DEF_RVV_WCONVERT_U_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_WCONVERT_F_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_WCONVERT_F_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_WCONVERT_F_OPS (vfloat64m4_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_WCONVERT_F_OPS (vfloat64m8_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_WI_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WI_OPS (vint8mf4_t, 0)
+ DEF_RVV_WI_OPS (vint8mf2_t, 0)
+ DEF_RVV_WI_OPS (vint8m1_t, 0)
+ DEF_RVV_WI_OPS (vint8m2_t, 0)
+ DEF_RVV_WI_OPS (vint8m4_t, 0)
+ DEF_RVV_WI_OPS (vint8m8_t, 0)
+ DEF_RVV_WI_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WI_OPS (vint16mf2_t, 0)
+ DEF_RVV_WI_OPS (vint16m1_t, 0)
+ DEF_RVV_WI_OPS (vint16m2_t, 0)
+ DEF_RVV_WI_OPS (vint16m4_t, 0)
+ DEF_RVV_WI_OPS (vint16m8_t, 0)
+ DEF_RVV_WI_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WI_OPS (vint32m1_t, 0)
+ DEF_RVV_WI_OPS (vint32m2_t, 0)
+ DEF_RVV_WI_OPS (vint32m4_t, 0)
+ DEF_RVV_WI_OPS (vint32m8_t, 0)
+ 
+ DEF_RVV_WU_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WU_OPS (vuint8mf4_t, 0)
+ DEF_RVV_WU_OPS (vuint8mf2_t, 0)
+ DEF_RVV_WU_OPS (vuint8m1_t, 0)
+ DEF_RVV_WU_OPS (vuint8m2_t, 0)
+ DEF_RVV_WU_OPS (vuint8m4_t, 0)
+ DEF_RVV_WU_OPS (vuint8m8_t, 0)
+ DEF_RVV_WU_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WU_OPS (vuint16mf2_t, 0)
+ DEF_RVV_WU_OPS (vuint16m1_t, 0)
+ DEF_RVV_WU_OPS (vuint16m2_t, 0)
+ DEF_RVV_WU_OPS (vuint16m4_t, 0)
+ DEF_RVV_WU_OPS (vuint16m8_t, 0)
+ DEF_RVV_WU_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WU_OPS (vuint32m1_t, 0)
+ DEF_RVV_WU_OPS (vuint32m2_t, 0)
+ DEF_RVV_WU_OPS (vuint32m4_t, 0)
+ DEF_RVV_WU_OPS (vuint32m8_t, 0)
+ 
+ DEF_RVV_WF_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_WF_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_WF_OPS (vfloat32m2_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_WF_OPS (vfloat32m4_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_WF_OPS (vfloat32m8_t, RVV_REQUIRE_ELEN_FP_32)
+ 
+ DEF_RVV_EI16_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vint8mf4_t, 0)
+ DEF_RVV_EI16_OPS (vint8mf2_t, 0)
+ DEF_RVV_EI16_OPS (vint8m1_t, 0)
+ DEF_RVV_EI16_OPS (vint8m2_t, 0)
+ DEF_RVV_EI16_OPS (vint8m4_t, 0)
+ DEF_RVV_EI16_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vint16mf2_t, 0)
+ DEF_RVV_EI16_OPS (vint16m1_t, 0)
+ DEF_RVV_EI16_OPS (vint16m2_t, 0)
+ DEF_RVV_EI16_OPS (vint16m4_t, 0)
+ DEF_RVV_EI16_OPS (vint16m8_t, 0)
+ DEF_RVV_EI16_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vint32m1_t, 0)
+ DEF_RVV_EI16_OPS (vint32m2_t, 0)
+ DEF_RVV_EI16_OPS (vint32m4_t, 0)
+ DEF_RVV_EI16_OPS (vint32m8_t, 0)
+ DEF_RVV_EI16_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vuint8mf4_t, 0)
+ DEF_RVV_EI16_OPS (vuint8mf2_t, 0)
+ DEF_RVV_EI16_OPS (vuint8m1_t, 0)
+ DEF_RVV_EI16_OPS (vuint8m2_t, 0)
+ DEF_RVV_EI16_OPS (vuint8m4_t, 0)
+ DEF_RVV_EI16_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vuint16mf2_t, 0)
+ DEF_RVV_EI16_OPS (vuint16m1_t, 0)
+ DEF_RVV_EI16_OPS (vuint16m2_t, 0)
+ DEF_RVV_EI16_OPS (vuint16m4_t, 0)
+ DEF_RVV_EI16_OPS (vuint16m8_t, 0)
+ DEF_RVV_EI16_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vuint32m1_t, 0)
+ DEF_RVV_EI16_OPS (vuint32m2_t, 0)
+ DEF_RVV_EI16_OPS (vuint32m4_t, 0)
+ DEF_RVV_EI16_OPS (vuint32m8_t, 0)
+ DEF_RVV_EI16_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EI16_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EI16_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_EI16_OPS (vfloat32m2_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_EI16_OPS (vfloat32m4_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_EI16_OPS (vfloat32m8_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_EI16_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_EI16_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_EI16_OPS (vfloat64m4_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_EI16_OPS (vfloat64m8_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_EEW8_INTERPRET_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint16mf2_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint16m1_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint16m2_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint16m4_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint16m8_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint32m1_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint32m2_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint32m4_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint32m8_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint16mf2_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint16m1_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint16m2_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint16m4_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint16m8_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint32m1_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint32m2_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint32m4_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint32m8_t, 0)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW8_INTERPRET_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_EEW16_INTERPRET_OPS (vint8mf4_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint8mf2_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint8m1_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint8m2_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint8m4_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint8m8_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint32m1_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint32m2_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint32m4_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint32m8_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint8mf4_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint8mf2_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint8m1_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint8m2_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint8m4_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint8m8_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint32m1_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint32m2_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint32m4_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint32m8_t, 0)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW16_INTERPRET_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_EEW32_INTERPRET_OPS (vint8mf2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint8m1_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint8m2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint8m4_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint8m8_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint16mf2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint16m1_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint16m2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint16m4_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint16m8_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vint64m8_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint8mf2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint8m1_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint8m2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint8m4_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint8m8_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint16mf2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint16m1_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint16m2_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint16m4_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint16m8_t, 0)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_EEW32_INTERPRET_OPS (vuint64m8_t, RVV_REQUIRE_ELEN_64)
+ 
+ DEF_RVV_EEW64_INTERPRET_OPS (vint8m1_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint8m2_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint8m4_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint8m8_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint16m1_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint16m2_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint16m4_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint16m8_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint32m1_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint32m2_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint32m4_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vint32m8_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint8m1_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint8m2_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint8m4_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint8m8_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint16m1_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint16m2_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint16m4_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint16m8_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint32m1_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint32m2_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint32m4_t, 0)
+ DEF_RVV_EEW64_INTERPRET_OPS (vuint32m8_t, 0)
+ 
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint8mf4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint8mf2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint8m1_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint8m2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint8m4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint16mf2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint16m1_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint16m2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint16m4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint32m1_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint32m2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint32m4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint8mf4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint8mf2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint8m1_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint8m2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint8m4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint16mf2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint16m1_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint16m2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint16m4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint32m1_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint32m2_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint32m4_t, 0)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat32m2_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat32m4_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_X2_VLMUL_EXT_OPS (vfloat64m4_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint8mf4_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint8mf2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint8m1_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint8m2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint16mf2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint16m1_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint16m2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint32m1_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint32m2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint8mf4_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint8mf2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint8m1_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint8m2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint16mf2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint16m1_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint16m2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint32m1_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint32m2_t, 0)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vfloat32m2_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ DEF_RVV_X4_VLMUL_EXT_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint8mf4_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint8mf2_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint8m1_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint16mf2_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint16m1_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint32m1_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint8mf4_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint8mf2_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint8m1_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint16mf2_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint16m1_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint32m1_t, 0)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_X8_VLMUL_EXT_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_X16_VLMUL_EXT_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vint8mf4_t, 0)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vint8mf2_t, 0)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vint16mf2_t, 0)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vuint8mf4_t, 0)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vuint8mf2_t, 0)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vuint16mf2_t, 0)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vuint32mf2_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X16_VLMUL_EXT_OPS (vfloat32mf2_t, RVV_REQUIRE_ELEN_FP_32 | RVV_REQUIRE_MIN_VLEN_64)
+ 
+ DEF_RVV_X32_VLMUL_EXT_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X32_VLMUL_EXT_OPS (vint8mf4_t, 0)
+ DEF_RVV_X32_VLMUL_EXT_OPS (vint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X32_VLMUL_EXT_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X32_VLMUL_EXT_OPS (vuint8mf4_t, 0)
+ DEF_RVV_X32_VLMUL_EXT_OPS (vuint16mf4_t, RVV_REQUIRE_MIN_VLEN_64)
+ 
+ DEF_RVV_X64_VLMUL_EXT_OPS (vint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ DEF_RVV_X64_VLMUL_EXT_OPS (vuint8mf8_t, RVV_REQUIRE_MIN_VLEN_64)
+ 
+ DEF_RVV_LMUL1_OPS (vint8m1_t, 0)
+ DEF_RVV_LMUL1_OPS (vint16m1_t, 0)
+ DEF_RVV_LMUL1_OPS (vint32m1_t, 0)
+ DEF_RVV_LMUL1_OPS (vint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_LMUL1_OPS (vuint8m1_t, 0)
+ DEF_RVV_LMUL1_OPS (vuint16m1_t, 0)
+ DEF_RVV_LMUL1_OPS (vuint32m1_t, 0)
+ DEF_RVV_LMUL1_OPS (vuint64m1_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_LMUL1_OPS (vfloat32m1_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_LMUL1_OPS (vfloat64m1_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_LMUL2_OPS (vint8m2_t, 0)
+ DEF_RVV_LMUL2_OPS (vint16m2_t, 0)
+ DEF_RVV_LMUL2_OPS (vint32m2_t, 0)
+ DEF_RVV_LMUL2_OPS (vint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_LMUL2_OPS (vuint8m2_t, 0)
+ DEF_RVV_LMUL2_OPS (vuint16m2_t, 0)
+ DEF_RVV_LMUL2_OPS (vuint32m2_t, 0)
+ DEF_RVV_LMUL2_OPS (vuint64m2_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_LMUL2_OPS (vfloat32m2_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_LMUL2_OPS (vfloat64m2_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ DEF_RVV_LMUL4_OPS (vint8m4_t, 0)
+ DEF_RVV_LMUL4_OPS (vint16m4_t, 0)
+ DEF_RVV_LMUL4_OPS (vint32m4_t, 0)
+ DEF_RVV_LMUL4_OPS (vint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_LMUL4_OPS (vuint8m4_t, 0)
+ DEF_RVV_LMUL4_OPS (vuint16m4_t, 0)
+ DEF_RVV_LMUL4_OPS (vuint32m4_t, 0)
+ DEF_RVV_LMUL4_OPS (vuint64m4_t, RVV_REQUIRE_ELEN_64)
+ DEF_RVV_LMUL4_OPS (vfloat32m4_t, RVV_REQUIRE_ELEN_FP_32)
+ DEF_RVV_LMUL4_OPS (vfloat64m4_t, RVV_REQUIRE_ELEN_FP_64)
+ 
+ #undef DEF_RVV_I_OPS
+ #undef DEF_RVV_U_OPS
+ #undef DEF_RVV_F_OPS
+ #undef DEF_RVV_B_OPS
+ #undef DEF_RVV_WEXTI_OPS
+ #undef DEF_RVV_QEXTI_OPS
+ #undef DEF_RVV_OEXTI_OPS
+ #undef DEF_RVV_WEXTU_OPS
+ #undef DEF_RVV_QEXTU_OPS
+ #undef DEF_RVV_OEXTU_OPS
+ #undef DEF_RVV_FULL_V_I_OPS
+ #undef DEF_RVV_FULL_V_U_OPS
+ #undef DEF_RVV_WEXTF_OPS
+ #undef DEF_RVV_CONVERT_I_OPS
+ #undef DEF_RVV_CONVERT_U_OPS
+ #undef DEF_RVV_WCONVERT_I_OPS
+ #undef DEF_RVV_WCONVERT_U_OPS
+ #undef DEF_RVV_WCONVERT_F_OPS
+ #undef DEF_RVV_WI_OPS
+ #undef DEF_RVV_WU_OPS
+ #undef DEF_RVV_WF_OPS
+ #undef DEF_RVV_EI16_OPS
+ #undef DEF_RVV_EEW8_INTERPRET_OPS
+ #undef DEF_RVV_EEW16_INTERPRET_OPS
+ #undef DEF_RVV_EEW32_INTERPRET_OPS
+ #undef DEF_RVV_EEW64_INTERPRET_OPS
+ #undef DEF_RVV_X2_VLMUL_EXT_OPS
+ #undef DEF_RVV_X4_VLMUL_EXT_OPS
+ #undef DEF_RVV_X8_VLMUL_EXT_OPS
+ #undef DEF_RVV_X16_VLMUL_EXT_OPS
+ #undef DEF_RVV_X32_VLMUL_EXT_OPS
+ #undef DEF_RVV_X64_VLMUL_EXT_OPS
+ #undef DEF_RVV_LMUL1_OPS
+ #undef DEF_RVV_LMUL2_OPS
+ #undef DEF_RVV_LMUL4_OPS
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins.cc gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,3548 ----
+ /* Builtins implementation for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "tree.h"
+ #include "rtl.h"
+ #include "tm_p.h"
+ #include "memmodel.h"
+ #include "insn-codes.h"
+ #include "optabs.h"
+ #include "recog.h"
+ #include "diagnostic.h"
+ #include "expr.h"
+ #include "function.h"
+ #include "fold-const.h"
+ #include "gimplify.h"
+ #include "explow.h"
+ #include "stor-layout.h"
+ #include "alias.h"
+ #include "langhooks.h"
+ #include "stringpool.h"
+ #include "attribs.h"
+ #include "targhooks.h"
+ #include "regs.h"
+ #include "emit-rtl.h"
+ #include "basic-block.h"
+ #include "gimple.h"
+ #include "gimple-iterator.h"
+ #include "riscv-vector-builtins.h"
+ #include "riscv-vector-builtins-shapes.h"
+ #include "riscv-vector-builtins-bases.h"
+ 
+ using namespace riscv_vector;
+ 
+ namespace riscv_vector {
+ 
+ /* Static information about each vector type.  */
+ struct vector_type_info
+ {
+   /* The name of the type as declared by riscv_vector.h
+      which is recommend to use. For example: 'vint32m1_t'.  */
+   const char *name;
+ 
+   /* ABI name of vector type. The type is always available
+      under this name, even when riscv_vector.h isn't included.
+      For example:  '__rvv_int32m1_t'.  */
+   const char *abi_name;
+ 
+   /* The C++ mangling of ABI_NAME.  */
+   const char *mangled_name;
+ };
+ 
+ /* Describes a function decl.  */
+ class GTY (()) registered_function
+ {
+ public:
+   function_instance GTY ((skip)) instance;
+ 
+   /* The decl itself.  */
+   tree GTY ((skip)) decl;
+ };
+ 
+ /* Hash traits for registered_function.  */
+ struct registered_function_hasher : nofree_ptr_hash<registered_function>
+ {
+   typedef function_instance compare_type;
+ 
+   static hashval_t hash (value_type);
+   static bool equal (value_type, const compare_type &);
+ };
+ 
+ /* Static information about each RVV type.  */
+ static CONSTEXPR const vector_type_info vector_types[] = {
+ #define DEF_RVV_TYPE(NAME, NCHARS, ABI_NAME, ARGS...)                          \
+   {#NAME, #ABI_NAME, "u" #NCHARS #ABI_NAME},
+ #include "riscv-vector-builtins.def"
+ };
+ 
+ /* Static information about operand suffix for each RVV type.  */
+ const char *const operand_suffixes[NUM_OP_TYPES] = {
+   "", /* OP_TYPE_none.  */
+ #define DEF_RVV_OP_TYPE(NAME) "_" # NAME,
+ #include "riscv-vector-builtins.def"
+ };
+ 
+ /* Static information about type suffix for each RVV type.  */
+ const rvv_builtin_suffixes type_suffixes[NUM_VECTOR_TYPES + 1] = {
+ #define DEF_RVV_TYPE(NAME, NCHARS, ABI_NAME, SCALAR_TYPE, VECTOR_MODE,         \
+ 		     VECTOR_MODE_MIN_VLEN_32, VECTOR_SUFFIX, SCALAR_SUFFIX,    \
+ 		     VSETVL_SUFFIX)                                            \
+   {#VECTOR_SUFFIX, #SCALAR_SUFFIX, #VSETVL_SUFFIX},
+ #include "riscv-vector-builtins.def"
+ };
+ 
+ /* Static information about predication suffix for each RVV type.  */
+ const char *const predication_suffixes[NUM_PRED_TYPES] = {
+   "", /* PRED_TYPE_none.  */
+ #define DEF_RVV_PRED_TYPE(NAME) "_" # NAME,
+ #include "riscv-vector-builtins.def"
+ };
+ 
+ /* A list of all signed integer will be registered for intrinsic functions.  */
+ static const rvv_type_info none_ops[] = {{NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all signed integer will be registered for intrinsic functions.  */
+ static const rvv_type_info i_ops[] = {
+ #define DEF_RVV_I_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all signed integer can be widened will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info wi_ops[] = {
+ #define DEF_RVV_WI_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all unsigned integer can be widened will be registered for
+  * intrinsic functions.  */
+ static const rvv_type_info wu_ops[] = {
+ #define DEF_RVV_WU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all floating-point can be widened will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info wf_ops[] = {
+ #define DEF_RVV_WF_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all signed integer that SEW = 64 require full 'V' extension will be
+    registered for intrinsic functions.  */
+ static const rvv_type_info full_v_i_ops[] = {
+ #define DEF_RVV_FULL_V_I_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all unsigned integer that SEW = 64 require full 'V' extension will
+    be registered for intrinsic functions.  */
+ static const rvv_type_info full_v_u_ops[] = {
+ #define DEF_RVV_FULL_V_U_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all unsigned integer will be registered for intrinsic functions.  */
+ static const rvv_type_info u_ops[] = {
+ #define DEF_RVV_U_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all signed integer will be registered for intrinsic functions.  */
+ static const rvv_type_info convert_i_ops[] = {
+ #define DEF_RVV_CONVERT_I_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all unsigned integer will be registered for intrinsic functions.  */
+ static const rvv_type_info convert_u_ops[] = {
+ #define DEF_RVV_CONVERT_U_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all signed integer will be registered for intrinsic functions.  */
+ static const rvv_type_info wconvert_i_ops[] = {
+ #define DEF_RVV_WCONVERT_I_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all unsigned integer will be registered for intrinsic functions. */
+ static const rvv_type_info wconvert_u_ops[] = {
+ #define DEF_RVV_WCONVERT_U_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all floating-point will be registered for intrinsic functions. */
+ static const rvv_type_info wconvert_f_ops[] = {
+ #define DEF_RVV_WCONVERT_F_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all integer will be registered for intrinsic functions.  */
+ static const rvv_type_info iu_ops[] = {
+ #define DEF_RVV_I_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #define DEF_RVV_U_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all types will be registered for intrinsic functions.  */
+ static const rvv_type_info all_ops[] = {
+ #define DEF_RVV_I_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #define DEF_RVV_U_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #define DEF_RVV_F_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all types will be registered for intrinsic functions.  */
+ static const rvv_type_info ei16_ops[] = {
+ #define DEF_RVV_EI16_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all bool will be registered for intrinsic functions.  */
+ static const rvv_type_info b_ops[] = {
+ #define DEF_RVV_B_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of all float will be registered for intrinsic functions.  */
+ static const rvv_type_info f_ops[] = {
+ #define DEF_RVV_F_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Double-Widening signed integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info wexti_ops[] = {
+ #define DEF_RVV_WEXTI_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Double-Widening float will be registered for intrinsic functions.
+  */
+ static const rvv_type_info wextf_ops[] = {
+ #define DEF_RVV_WEXTF_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Quad-Widening signed integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info qexti_ops[] = {
+ #define DEF_RVV_QEXTI_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Oct-Widening signed integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info oexti_ops[] = {
+ #define DEF_RVV_OEXTI_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Double-Widening unsigned integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info wextu_ops[] = {
+ #define DEF_RVV_WEXTU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Double-Widening all integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info wextiu_ops[] = {
+ #define DEF_RVV_WEXTI_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #define DEF_RVV_WEXTU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Quad-Widening unsigned integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info qextu_ops[] = {
+ #define DEF_RVV_QEXTU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of Oct-Widening unsigned integer will be registered for intrinsic
+  * functions.  */
+ static const rvv_type_info oextu_ops[] = {
+ #define DEF_RVV_OEXTU_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of eew8 interpret will be registered for intrinsic functions.  */
+ static const rvv_type_info eew8_interpret_ops[] = {
+ #define DEF_RVV_EEW8_INTERPRET_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of eew16 interpret will be registered for intrinsic functions.  */
+ static const rvv_type_info eew16_interpret_ops[] = {
+ #define DEF_RVV_EEW16_INTERPRET_OPS(TYPE, REQUIRE)                             \
+   {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of eew32 interpret will be registered for intrinsic functions.  */
+ static const rvv_type_info eew32_interpret_ops[] = {
+ #define DEF_RVV_EEW32_INTERPRET_OPS(TYPE, REQUIRE)                             \
+   {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of eew64 interpret will be registered for intrinsic functions.  */
+ static const rvv_type_info eew64_interpret_ops[] = {
+ #define DEF_RVV_EEW64_INTERPRET_OPS(TYPE, REQUIRE)                             \
+   {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of x2 vlmul ext will be registered for intrinsic functions.  */
+ static const rvv_type_info vlmul_ext_x2_ops[] = {
+ #define DEF_RVV_X2_VLMUL_EXT_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of x4 vlmul ext will be registered for intrinsic functions.  */
+ static const rvv_type_info vlmul_ext_x4_ops[] = {
+ #define DEF_RVV_X4_VLMUL_EXT_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of x8 vlmul ext will be registered for intrinsic functions.  */
+ static const rvv_type_info vlmul_ext_x8_ops[] = {
+ #define DEF_RVV_X8_VLMUL_EXT_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of x16 vlmul ext will be registered for intrinsic functions.  */
+ static const rvv_type_info vlmul_ext_x16_ops[] = {
+ #define DEF_RVV_X16_VLMUL_EXT_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of x32 vlmul ext will be registered for intrinsic functions.  */
+ static const rvv_type_info vlmul_ext_x32_ops[] = {
+ #define DEF_RVV_X32_VLMUL_EXT_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of x64 vlmul ext will be registered for intrinsic functions.  */
+ static const rvv_type_info vlmul_ext_x64_ops[] = {
+ #define DEF_RVV_X64_VLMUL_EXT_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of LMUL1 will be registered for intrinsic functions.  */
+ static const rvv_type_info lmul1_ops[] = {
+ #define DEF_RVV_LMUL1_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of LMUL2 will be registered for intrinsic functions.  */
+ static const rvv_type_info lmul2_ops[] = {
+ #define DEF_RVV_LMUL2_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ /* A list of LMUL4 will be registered for intrinsic functions.  */
+ static const rvv_type_info lmul4_ops[] = {
+ #define DEF_RVV_LMUL4_OPS(TYPE, REQUIRE) {VECTOR_TYPE_##TYPE, REQUIRE},
+ #include "riscv-vector-builtins-types.def"
+   {NUM_VECTOR_TYPES, 0}};
+ 
+ static CONSTEXPR const rvv_arg_type_info rvv_arg_type_info_end
+   = rvv_arg_type_info (NUM_BASE_TYPES);
+ 
+ /* A list of args for size_t func () function.  */
+ static CONSTEXPR const rvv_arg_type_info void_args[] = {rvv_arg_type_info_end};
+ 
+ /* A list of args for size_t func () function.  */
+ static CONSTEXPR const rvv_arg_type_info end_args[]
+   = {rvv_arg_type_info_end};
+ 
+ /* A list of args for size_t func (size_t) function.  */
+ static CONSTEXPR const rvv_arg_type_info size_args[]
+   = {rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (const scalar_type *) function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr), 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_ptr_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+      rvv_arg_type_info (RVV_BASE_size_ptr), rvv_arg_type_info_end};
+ 
+ /* A list of args for void func (scalar_type *, vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_ptr_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (const scalar_type *, ptrdiff_t)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_ptrdiff_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+      rvv_arg_type_info (RVV_BASE_ptrdiff), rvv_arg_type_info_end};
+ 
+ /* A list of args for void func (scalar_type *, ptrdiff_t, vector_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_ptr_ptrdiff_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+      rvv_arg_type_info (RVV_BASE_ptrdiff), rvv_arg_type_info (RVV_BASE_vector),
+      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_eew8_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+      rvv_arg_type_info (RVV_BASE_eew8_index), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (const scalar_type *, eew16_index_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_eew16_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+      rvv_arg_type_info (RVV_BASE_eew16_index), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (const scalar_type *, eew32_index_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_eew32_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+      rvv_arg_type_info (RVV_BASE_eew32_index), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (const scalar_type *, eew64_index_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_const_ptr_eew64_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_const_ptr),
+      rvv_arg_type_info (RVV_BASE_eew64_index), 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_eew8_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+      rvv_arg_type_info (RVV_BASE_eew8_index),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for void func (scalar_type *, eew16_index_type, vector_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_ptr_eew16_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+      rvv_arg_type_info (RVV_BASE_eew16_index),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for void func (scalar_type *, eew32_index_type, vector_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_ptr_eew32_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+      rvv_arg_type_info (RVV_BASE_eew32_index),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for void func (scalar_type *, eew64_index_type, vector_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info scalar_ptr_eew64_index_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar_ptr),
+      rvv_arg_type_info (RVV_BASE_eew64_index),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info vv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, vector_type, vector_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info vvv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, vector_type, vector_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info vxv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_scalar),
+      rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, vector_type, mask_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info vvm_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_mask), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, mask_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info vm_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_mask),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, scalar_type, mask_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info vxm_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_scalar),
+      rvv_arg_type_info (RVV_BASE_mask), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (signed vector_type, unsigned
+  * vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info su_vv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_unsigned_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, scalar_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info vx_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_scalar),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (signed vector_type, unsigned
+  * scalar_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info su_vx_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_unsigned_scalar), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, shift_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info shift_vv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_shift_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, shift_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info gather_vv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_unsigned_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, shift_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info gatherei16_vv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_eew16_index), rvv_arg_type_info_end};
+ 
+ /* A list of args for double demote type func (vector_type, shift_type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info shift_wv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_x2_trunc_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x2), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_x4_trunc_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x4), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_x8_trunc_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x8), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_x16_trunc_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x16), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_x32_trunc_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x32), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_x64_trunc_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x64), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, lmul1_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info vs_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_lmul1_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, widen_lmul1_type) function.
+  */
+ static CONSTEXPR const rvv_arg_type_info wvs_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_widen_lmul1_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info f_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_float_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info trunc_f_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_float_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info w_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info m_args[]
+   = {rvv_arg_type_info (RVV_BASE_mask), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (scalar_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info x_args[]
+   = {rvv_arg_type_info (RVV_BASE_scalar), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, size) function.  */
+ static CONSTEXPR const rvv_arg_type_info v_size_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_size),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, vector_type, size)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info vv_size_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (double demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info vf2_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (double demote type, double demote type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info wvv_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, double demote type, double
+  * demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info wwvv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, double demote type, double
+  * demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info wwxv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_scalar),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, double demote type, double
+  * demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info su_wwvv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, double demote type, double
+  * demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info su_wwxv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_scalar),
+      rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type, double demote type, double
+  * demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info us_wwxv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_scalar),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (signed double demote type,
+  * unsigneddouble demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info su_wvv_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (double demote type, double demote type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info wvx_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_scalar), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (signed double demote type, unsigned
+  * double demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info su_wvx_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_scalar),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (double demote type, double demote type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info wwv_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (double demote type, double demote type)
+  * function.  */
+ static CONSTEXPR const rvv_arg_type_info wwx_args[]
+   = {rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info (RVV_BASE_double_trunc_scalar), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (quad demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info vf4_args[]
+   = {rvv_arg_type_info (RVV_BASE_quad_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (oct demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info vf8_args[]
+   = {rvv_arg_type_info (RVV_BASE_oct_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (double demote type) function.  */
+ static CONSTEXPR const rvv_arg_type_info x_x_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info x_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_signed_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info xu_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_unsigned_vector), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info w_x_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_signed_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info w_xu_v_args[]
+   = {rvv_arg_type_info (RVV_BASE_double_trunc_unsigned_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info ext_x2_vset_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x2),
+      rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info ext_x4_vset_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x4),
+      rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info ext_x8_vset_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x8),
+      rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info (RVV_BASE_vector),
+      rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info ext_x2_vget_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x2),
+      rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info ext_x4_vget_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x4),
+      rvv_arg_type_info (RVV_BASE_size), rvv_arg_type_info_end};
+ 
+ /* A list of args for vector_type func (vector_type) function.  */
+ static CONSTEXPR const rvv_arg_type_info ext_x8_vget_args[]
+   = {rvv_arg_type_info (RVV_BASE_vlmul_ext_x8),
+      rvv_arg_type_info (RVV_BASE_size), 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};
+ 
+ /* vop/vop_m/vop_tu/vop_tum/vop_tumu/vop_mu will be registered.  */
+ static CONSTEXPR const predication_type_index full_preds[]
+   = {PRED_TYPE_none, PRED_TYPE_m,  PRED_TYPE_tu,  PRED_TYPE_tum,
+      PRED_TYPE_tumu, PRED_TYPE_mu, NUM_PRED_TYPES};
+ 
+ /* vop/vop_m/vop_tu/vop_tum/ will be registered.  */
+ static CONSTEXPR const predication_type_index no_mu_preds[]
+   = {PRED_TYPE_none, PRED_TYPE_m, PRED_TYPE_tu, PRED_TYPE_tum, NUM_PRED_TYPES};
+ 
+ /* vop/vop_tu will be registered.  */
+ static CONSTEXPR const predication_type_index none_tu_preds[]
+   = {PRED_TYPE_none, PRED_TYPE_tu, NUM_PRED_TYPES};
+ 
+ /* vop/vop_m will be registered.  */
+ static CONSTEXPR const predication_type_index none_m_preds[]
+   = {PRED_TYPE_none, PRED_TYPE_m, NUM_PRED_TYPES};
+ 
+ /* vop/vop_m/vop_mu will be registered.  */
+ static CONSTEXPR const predication_type_index none_m_mu_preds[]
+   = {PRED_TYPE_none, PRED_TYPE_m, PRED_TYPE_mu, NUM_PRED_TYPES};
+ 
+ /* A static operand information for size_t func () function registration. */
+ static CONSTEXPR const rvv_op_info i_none_size_void_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_none,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_size), /* Return type */
+      void_args /* Args */};
+ 
+ /* A static operand information for size_t func (size_t) function registration.
+  */
+ static CONSTEXPR const rvv_op_info i_none_size_size_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_none,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_size), /* Return type */
+      size_args /* Args */};
+ 
+ /* A static operand information for vector_type func () function registration.
+  */
+ static CONSTEXPR const rvv_op_info all_none_void_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_none,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      void_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_size_ptr_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_size_ptr_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_ptr_ops
+   = {all_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_v_scalar_const_ptr_ops
+   = {b_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_v_scalar_ptr_ops
+   = {b_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_mmm_ops
+   = {b_ops,				  /* Types */
+      OP_TYPE_mm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_mm_ops
+   = {b_ops,				  /* Types */
+      OP_TYPE_m,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_vm_ops
+   = {u_ops,				  /* Types */
+      OP_TYPE_m,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      m_args /* Args */};
+ 
+ /* A static operand information for vector_type func ()
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_m_ops
+   = {b_ops,				  /* Types */
+      OP_TYPE_m,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      end_args /* Args */};
+ 
+ /* A static operand information for vector_type func ()
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_v_ops
+   = {u_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      end_args /* Args */};
+ 
+ /* A static operand information for unsigned long func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_ulong_m_ops
+   = {b_ops,					 /* Types */
+      OP_TYPE_m,					 /* Suffix */
+      rvv_arg_type_info (RVV_BASE_unsigned_long), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for long func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info b_long_m_ops
+   = {b_ops,				/* Types */
+      OP_TYPE_m,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_long), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *,
+  * ptrdiff_t) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_ptrdiff_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_ptrdiff_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *,
+  * eew8_index_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_eew8_index_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_eew8_index_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *,
+  * eew16_index_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_eew16_index_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_eew16_index_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *,
+  * eew32_index_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_eew32_index_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_eew32_index_args /* Args */};
+ 
+ /* A static operand information for vector_type func (const scalar_type *,
+  * eew64_index_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_const_ptr_eew64_index_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      scalar_const_ptr_eew64_index_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, ptrdiff_t,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_ptr_ptrdiff_ops
+   = {all_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_ptrdiff_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, eew8_index_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_ptr_eew8_index_ops
+   = {all_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_eew8_index_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, eew16_index_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_ptr_eew16_index_ops
+   = {all_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_eew16_index_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, eew32_index_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_ptr_eew32_index_ops
+   = {all_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_eew32_index_args /* Args */};
+ 
+ /* A static operand information for void func (scalar_type *, eew64_index_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_v_scalar_ptr_eew64_index_ops
+   = {all_ops,				/* Types */
+      OP_TYPE_v,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_void), /* Return type */
+      scalar_ptr_eew64_index_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_vvv_ops
+   = {iu_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info iu_vvvv_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info iu_vvxv_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info f_vvvv_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type,
+  * vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info f_vvfv_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_vf,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info iu_vvvm_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vvm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vvm_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_vvvm_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_vvm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vvm_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_vvm_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_vm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vm_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info iu_vvxm_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vxm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vxm_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info f_vvfm_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_vfm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vxm_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, vector_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info iu_mvvm_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vvm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vvm_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, scalar_type,
+  * mask_type) function registration. */
+ static CONSTEXPR const rvv_op_info iu_mvxm_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vxm,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vxm_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_mvv_ops
+   = {iu_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_mvv_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_mvv_ops
+   = {u_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_mvv_ops
+   = {f_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_mvx_ops
+   = {iu_ops,				/* Types */
+      OP_TYPE_vx,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_mvx_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_vx,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_mvx_ops
+   = {u_ops,				/* Types */
+      OP_TYPE_vx,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for mask_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_mvf_ops
+   = {f_ops,				/* Types */
+      OP_TYPE_vf,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_mask), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_vvv_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_vvv_ops
+   = {u_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_vvv_ops
+   = {f_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_vvf_ops
+   = {f_ops,				/* Types */
+      OP_TYPE_vf,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info full_v_i_vvv_ops
+   = {full_v_i_ops,			/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info full_v_u_vvv_ops
+   = {full_v_u_ops,			/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (signed vector_type,
+  * unsigned vector_type) function registration. */
+ static CONSTEXPR const rvv_op_info full_v_i_su_vvv_ops
+   = {full_v_i_ops,			  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      su_vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_vvx_ops
+   = {iu_ops,				/* Types */
+      OP_TYPE_vx,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_vvx_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, vector_type,
+  * scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info all_vvvx_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vv_size_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_vvx_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_vx,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_vvx_ops
+   = {u_ops,				/* Types */
+      OP_TYPE_vx,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type)
+  * function registration that require full 'V' extension. */
+ static CONSTEXPR const rvv_op_info full_v_i_vvx_ops
+   = {full_v_i_ops,			  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, scalar_type)
+  * function registration that require full 'V' extension. */
+ static CONSTEXPR const rvv_op_info full_v_u_vvx_ops
+   = {full_v_u_ops,			  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (signed vector_type,
+  * unsigned scalar_type) function registration that require full 'V' extension.
+  */
+ static CONSTEXPR const rvv_op_info full_v_i_su_vvx_ops
+   = {full_v_i_ops,			  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      su_vx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, shift_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_shift_vvv_ops
+   = {iu_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      shift_vv_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
+   = {iu_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, shift_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_shift_vvv_ops
+   = {i_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      shift_vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, size_t)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_shift_vvx_ops
+   = {i_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, shift_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_shift_vvv_ops
+   = {u_ops,				/* Types */
+      OP_TYPE_vv,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      shift_vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, size_t)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_shift_vvx_ops
+   = {u_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, index_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_gather_vvv_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      gather_vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, size_t)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_gather_vvx_ops
+   = {all_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, index_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_gatherei16_vvv_ops
+   = {ei16_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      gatherei16_vv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_v_ops
+   = {iu_ops,			/* Types */
+      OP_TYPE_v,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for scalar_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_x_s_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_s,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_scalar), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for scalar_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_f_s_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_s,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_scalar), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_vs_ops
+   = {iu_ops,					/* Types */
+      OP_TYPE_vs,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_lmul1_vector), /* Return type */
+      vs_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_vs_ops
+   = {f_ops,					/* Types */
+      OP_TYPE_vs,				/* Suffix */
+      rvv_arg_type_info (RVV_BASE_lmul1_vector), /* Return type */
+      vs_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info wi_vs_ops
+   = {wi_ops,					      /* Types */
+      OP_TYPE_vs,				      /* Suffix */
+      rvv_arg_type_info (RVV_BASE_widen_lmul1_vector), /* Return type */
+      wvs_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info wu_vs_ops
+   = {wu_ops,					      /* Types */
+      OP_TYPE_vs,				      /* Suffix */
+      rvv_arg_type_info (RVV_BASE_widen_lmul1_vector), /* Return type */
+      wvs_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info wf_vs_ops
+   = {wf_ops,					      /* Types */
+      OP_TYPE_vs,				      /* Suffix */
+      rvv_arg_type_info (RVV_BASE_widen_lmul1_vector), /* Return type */
+      wvs_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_v_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_u_v_ops
+   = {convert_u_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      f_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_i_f_v_ops
+   = {convert_i_ops,			  /* Types */
+      OP_TYPE_f_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      f_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_wi_f_v_ops
+   = {wconvert_i_ops,			  /* Types */
+      OP_TYPE_f_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      trunc_f_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_ni_f_w_ops
+   = {f_ops,						      /* Types */
+      OP_TYPE_f_w,					      /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_signed_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_nu_f_w_ops
+   = {f_ops,	  /* Types */
+      OP_TYPE_f_w, /* Suffix */
+      rvv_arg_type_info (
+        RVV_BASE_double_trunc_unsigned_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_to_f_x_v_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_x_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_to_f_xu_v_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_xu_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      xu_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_to_wf_x_v_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_x_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      w_x_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_to_wf_xu_v_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_xu_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      w_xu_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_to_nf_x_w_ops
+   = {wconvert_i_ops,					     /* Types */
+      OP_TYPE_x_w,					     /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_float_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_to_nf_xu_w_ops
+   = {wconvert_u_ops,					     /* Types */
+      OP_TYPE_xu_w,					     /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_float_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_u_f_v_ops
+   = {convert_u_ops,			  /* Types */
+      OP_TYPE_f_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      f_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_wu_f_v_ops
+   = {wconvert_u_ops,			  /* Types */
+      OP_TYPE_f_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      trunc_f_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_wf_f_v_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_f_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      w_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_to_nf_f_w_ops
+   = {wconvert_f_ops,					     /* Types */
+      OP_TYPE_f_w,					     /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_float_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_ops
+   = {all_ops,			/* Types */
+      OP_TYPE_v,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_v_u_ops
+   = {i_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_unsigned_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_v_i_ops
+   = {u_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_signed_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_v_eew8_interpret_ops
+   = {eew8_interpret_ops,			  /* Types */
+      OP_TYPE_v,					  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_eew8_interpret), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_v_eew16_interpret_ops
+   = {eew16_interpret_ops,			   /* Types */
+      OP_TYPE_v,					   /* Suffix */
+      rvv_arg_type_info (RVV_BASE_eew16_interpret), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_v_eew32_interpret_ops
+   = {eew32_interpret_ops,			   /* Types */
+      OP_TYPE_v,					   /* Suffix */
+      rvv_arg_type_info (RVV_BASE_eew32_interpret), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_v_eew64_interpret_ops
+   = {eew64_interpret_ops,			   /* Types */
+      OP_TYPE_v,					   /* Suffix */
+      rvv_arg_type_info (RVV_BASE_eew64_interpret), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_ext_x2_ops
+   = {vlmul_ext_x2_ops,				/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x2), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_ext_x4_ops
+   = {vlmul_ext_x4_ops,				/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x4), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_ext_x8_ops
+   = {vlmul_ext_x8_ops,				/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x8), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_ext_x16_ops
+   = {vlmul_ext_x16_ops,				 /* Types */
+      OP_TYPE_v,					 /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x16), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_ext_x32_ops
+   = {vlmul_ext_x32_ops,				 /* Types */
+      OP_TYPE_v,					 /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x32), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_ext_x64_ops
+   = {vlmul_ext_x64_ops,				 /* Types */
+      OP_TYPE_v,					 /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x64), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_trunc_x2_ops
+   = {vlmul_ext_x2_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_x2_trunc_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_trunc_x4_ops
+   = {vlmul_ext_x4_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_x4_trunc_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_trunc_x8_ops
+   = {vlmul_ext_x8_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_x8_trunc_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_trunc_x16_ops
+   = {vlmul_ext_x16_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_x16_trunc_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_trunc_x32_ops
+   = {vlmul_ext_x32_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_x32_trunc_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vlmul_trunc_x64_ops
+   = {vlmul_ext_x64_ops,			  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      v_x64_trunc_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_v_i_ops
+   = {f_ops,					 /* Types */
+      OP_TYPE_v,					 /* Suffix */
+      rvv_arg_type_info (RVV_BASE_signed_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_v_u_ops
+   = {f_ops,					   /* Types */
+      OP_TYPE_v,					   /* Suffix */
+      rvv_arg_type_info (RVV_BASE_unsigned_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_v_f_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_v_f_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      xu_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_x_ops
+   = {iu_ops,			/* Types */
+      OP_TYPE_x,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_args /* Args */};
+ 
+ /* A static operand information for vector_type func (scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_s_x_ops
+   = {iu_ops,				  /* Types */
+      OP_TYPE_x,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_args /* Args */};
+ 
+ /* A static operand information for vector_type func (scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_f_ops
+   = {f_ops,			/* Types */
+      OP_TYPE_f,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_args /* Args */};
+ 
+ /* A static operand information for vector_type func (scalar_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info f_s_f_ops
+   = {f_ops,				  /* Types */
+      OP_TYPE_f,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_vf2_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vf2,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vf2_args /* Args */};
+ 
+ /* A static operand information for vector_type func (quad demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_vf4_ops
+   = {qexti_ops,				  /* Types */
+      OP_TYPE_vf4,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vf4_args /* Args */};
+ 
+ /* A static operand information for vector_type func (oct demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_vf8_ops
+   = {oexti_ops,				  /* Types */
+      OP_TYPE_vf8,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vf8_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_vf2_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_vf2,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vf2_args /* Args */};
+ 
+ /* A static operand information for vector_type func (quad demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_vf4_ops
+   = {qextu_ops,				  /* Types */
+      OP_TYPE_vf4,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vf4_args /* Args */};
+ 
+ /* A static operand information for vector_type func (oct demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info u_vf8_ops
+   = {oextu_ops,				  /* Types */
+      OP_TYPE_vf8,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      vf8_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type, double
+  * demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_wvv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type, double
+  * demote type) function registration. */
+ static CONSTEXPR const rvv_op_info f_wvv_ops
+   = {wextf_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_wwvv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * scalar_type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_wwxv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info f_wwvv_ops
+   = {wextf_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * scalar_type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info f_wwfv_ops
+   = {wextf_ops,				  /* Types */
+      OP_TYPE_vf,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info u_wwvv_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * scalar_type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info u_wwxv_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_su_wwvv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      su_wwvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * scalar_type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_su_wwxv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      su_wwxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double demote
+  * scalar_type, double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_us_wwxv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      us_wwxv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (signed double demote type,
+  * unsigned double demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_su_wvv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      su_wvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type, double
+  * demote type) function registration. */
+ static CONSTEXPR const rvv_op_info u_wvv_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_vv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wvv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type, double
+  * demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info i_wvx_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wvx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type, double
+  * demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info f_wvf_ops
+   = {wextf_ops,				  /* Types */
+      OP_TYPE_vf,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wvx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (signed double demote type,
+  * unsigned double demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info i_su_wvx_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      su_wvx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double
+  * demote type) function registration. */
+ static CONSTEXPR const rvv_op_info i_wwv_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_wv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double
+  * demote type) function registration. */
+ static CONSTEXPR const rvv_op_info f_wwv_ops
+   = {wextf_ops,				  /* Types */
+      OP_TYPE_wv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double
+  * demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info i_wwx_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_wx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double
+  * demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info f_wwf_ops
+   = {wextf_ops,				  /* Types */
+      OP_TYPE_wf,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double
+  * demote type) function registration. */
+ static CONSTEXPR const rvv_op_info u_wwv_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_wv,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwv_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type, double
+  * demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info u_wwx_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_wx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wwx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type, double
+  * demote scalar_type) function registration. */
+ static CONSTEXPR const rvv_op_info u_wvx_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_vx,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      wvx_args /* Args */};
+ 
+ /* A static operand information for vector_type func (double demote type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info i_x_x_v_ops
+   = {wexti_ops,				  /* Types */
+      OP_TYPE_x_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_x_v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (unsigned double demote
+  * type) function registration. */
+ static CONSTEXPR const rvv_op_info u_x_x_v_ops
+   = {wextu_ops,				  /* Types */
+      OP_TYPE_x_v,			  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      x_x_v_args /* Args */};
+ 
+ /* A static operand information for double demote type func (vector_type,
+  * shift_type) function registration. */
+ static CONSTEXPR const rvv_op_info i_narrow_shift_vwv_ops
+   = {wexti_ops,					       /* Types */
+      OP_TYPE_wv,				       /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), /* Return type */
+      shift_wv_args /* Args */};
+ 
+ /* A static operand information for double demote type func (vector_type,
+  * shift_type) function registration. */
+ static CONSTEXPR const rvv_op_info u_narrow_shift_vwv_ops
+   = {wextu_ops,					       /* Types */
+      OP_TYPE_wv,				       /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), /* Return type */
+      shift_wv_args /* Args */};
+ 
+ /* A static operand information for double demote type func (vector_type,
+  * size_t) function registration. */
+ static CONSTEXPR const rvv_op_info i_narrow_shift_vwx_ops
+   = {wexti_ops,					       /* Types */
+      OP_TYPE_wx,				       /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for double demote type func (vector_type,
+  * size_t) function registration. */
+ static CONSTEXPR const rvv_op_info u_narrow_shift_vwx_ops
+   = {wextu_ops,					       /* Types */
+      OP_TYPE_wx,				       /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), /* Return type */
+      v_size_args /* Args */};
+ 
+ /* A static operand information for double demote type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info iu_trunc_ops
+   = {wextiu_ops,				       /* Types */
+      OP_TYPE_x_w,				       /* Suffix */
+      rvv_arg_type_info (RVV_BASE_double_trunc_vector), /* Return type */
+      v_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vset_lmul1_x2_ops
+   = {lmul1_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x2), /* Return type */
+      ext_x2_vset_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vset_lmul1_x4_ops
+   = {lmul1_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x4), /* Return type */
+      ext_x4_vset_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vset_lmul1_x8_ops
+   = {lmul1_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x8), /* Return type */
+      ext_x8_vset_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vset_lmul2_x2_ops
+   = {lmul2_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x2), /* Return type */
+      ext_x2_vset_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vset_lmul2_x4_ops
+   = {lmul2_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x4), /* Return type */
+      ext_x4_vset_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vset_lmul4_x2_ops
+   = {lmul4_ops,					/* Types */
+      OP_TYPE_v,					/* Suffix */
+      rvv_arg_type_info (RVV_BASE_vlmul_ext_x2), /* Return type */
+      ext_x2_vset_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vget_lmul1_x2_ops
+   = {lmul1_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ext_x2_vget_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vget_lmul1_x4_ops
+   = {lmul1_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ext_x4_vget_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vget_lmul1_x8_ops
+   = {lmul1_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ext_x8_vget_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vget_lmul2_x2_ops
+   = {lmul2_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ext_x2_vget_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vget_lmul2_x4_ops
+   = {lmul2_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ext_x4_vget_args /* Args */};
+ 
+ /* A static operand information for vector_type func (vector_type)
+  * function registration. */
+ static CONSTEXPR const rvv_op_info all_v_vget_lmul4_x2_ops
+   = {lmul4_ops,				  /* Types */
+      OP_TYPE_v,				  /* Suffix */
+      rvv_arg_type_info (RVV_BASE_vector), /* Return type */
+      ext_x2_vget_args /* Args */};
+ 
+ /* A static operand information for size_t func () function registration. */
+ static CONSTEXPR const rvv_op_info p_none_void_ops
+   = {none_ops,				/* Types */
+      OP_TYPE_none,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_size), /* Return type */
+      void_args /* Args */};
+ 
+ /* A static operand information for unsigned long func () function registration. */
+ static CONSTEXPR const rvv_op_info ul_none_void_ops
+   = {none_ops,				/* Types */
+      OP_TYPE_none,			/* Suffix */
+      rvv_arg_type_info (RVV_BASE_unsigned_long), /* Return type */
+      void_args /* Args */};
+ 
+ /* A list of all RVV base function types.  */
+ static CONSTEXPR const function_type_info function_types[] = {
+ #define DEF_RVV_TYPE_INDEX(VECTOR, MASK, SIGNED, UNSIGNED, EEW8_INDEX, EEW16_INDEX, \
+ 		      EEW32_INDEX, EEW64_INDEX, SHIFT, DOUBLE_TRUNC,           \
+ 		      QUAD_TRUNC, OCT_TRUNC, DOUBLE_TRUNC_SCALAR,              \
+ 		      DOUBLE_TRUNC_SIGNED, DOUBLE_TRUNC_UNSIGNED,              \
+ 		      DOUBLE_TRUNC_UNSIGNED_SCALAR, DOUBLE_TRUNC_FLOAT, FLOAT, \
+ 		      LMUL1, WLMUL1, EEW8_INTERPRET, EEW16_INTERPRET,          \
+ 		      EEW32_INTERPRET, EEW64_INTERPRET, X2_VLMUL_EXT,          \
+ 		      X4_VLMUL_EXT, X8_VLMUL_EXT, X16_VLMUL_EXT,               \
+ 		      X32_VLMUL_EXT, X64_VLMUL_EXT)                            \
+   {                                                                            \
+     VECTOR_TYPE_##VECTOR,                                                      \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_##MASK,                                                        \
+     VECTOR_TYPE_##SIGNED,                                                      \
+     VECTOR_TYPE_##UNSIGNED,                                                    \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_INVALID,                                                       \
+     VECTOR_TYPE_##EEW8_INDEX,                                                  \
+     VECTOR_TYPE_##EEW16_INDEX,                                                 \
+     VECTOR_TYPE_##EEW32_INDEX,                                                 \
+     VECTOR_TYPE_##EEW64_INDEX,                                                 \
+     VECTOR_TYPE_##SHIFT,                                                       \
+     VECTOR_TYPE_##DOUBLE_TRUNC,                                                \
+     VECTOR_TYPE_##QUAD_TRUNC,                                                  \
+     VECTOR_TYPE_##OCT_TRUNC,                                                   \
+     VECTOR_TYPE_##DOUBLE_TRUNC_SCALAR,                                         \
+     VECTOR_TYPE_##DOUBLE_TRUNC_SIGNED,                                         \
+     VECTOR_TYPE_##DOUBLE_TRUNC_UNSIGNED,                                       \
+     VECTOR_TYPE_##DOUBLE_TRUNC_UNSIGNED_SCALAR,                                \
+     VECTOR_TYPE_##DOUBLE_TRUNC_FLOAT,                                          \
+     VECTOR_TYPE_##FLOAT,                                                       \
+     VECTOR_TYPE_##LMUL1,                                                       \
+     VECTOR_TYPE_##WLMUL1,                                                      \
+     VECTOR_TYPE_##EEW8_INTERPRET,                                              \
+     VECTOR_TYPE_##EEW16_INTERPRET,                                             \
+     VECTOR_TYPE_##EEW32_INTERPRET,                                             \
+     VECTOR_TYPE_##EEW64_INTERPRET,                                             \
+     VECTOR_TYPE_##X2_VLMUL_EXT,                                                \
+     VECTOR_TYPE_##X4_VLMUL_EXT,                                                \
+     VECTOR_TYPE_##X8_VLMUL_EXT,                                                \
+     VECTOR_TYPE_##X16_VLMUL_EXT,                                               \
+     VECTOR_TYPE_##X32_VLMUL_EXT,                                               \
+     VECTOR_TYPE_##X64_VLMUL_EXT,                                               \
+     VECTOR_TYPE_INVALID,                                                       \
+   },
+ #include "riscv-vector-builtins.def"
+ }; // namespace riscv_vector
+ 
+ /* A list of all RVV intrinsic functions.  */
+ static function_group_info function_groups[] = {
+ #define DEF_RVV_FUNCTION(NAME, SHAPE, PREDS, OPS_INFO)                         \
+   {#NAME, &bases::NAME, &shapes::SHAPE, PREDS, OPS_INFO},
+ #include "riscv-vector-builtins-functions.def"
+ };
+ 
+ /* The RVV types, with their built-in
+    "__rvv..._t" name.  Allow an index of NUM_VECTOR_TYPES, which always
+    yields a null tree.  */
+ static GTY (()) tree abi_vector_types[NUM_VECTOR_TYPES + 1];
+ 
+ /* Same, but with the riscv_vector.h "v..._t" name.  */
+ extern GTY (()) rvv_builtin_types_t builtin_types[NUM_VECTOR_TYPES + 1];
+ rvv_builtin_types_t builtin_types[NUM_VECTOR_TYPES + 1];
+ 
+ /* The list of all registered function decls, indexed by code.  */
+ static GTY (()) vec<registered_function *, va_gc> *registered_functions;
+ 
+ /* All registered function decls, hashed on the function_instance
+    that they implement.  This is used for looking up implementations of
+    overloaded functions.  */
+ static hash_table<registered_function_hasher> *function_table;
+ 
+ /* RAII class for enabling enough RVV features to define the built-in
+    types and implement the riscv_vector.h pragma.
+ 
+    Note: According to 'TYPE_MODE' macro implementation, we need set
+    have_regs_of_mode[mode] to be true if we want to get the exact mode
+    from 'TYPE_MODE'. However, have_regs_of_mode has not been set yet in
+    targetm.init_builtins (). We need rvv_switcher to set have_regs_of_mode
+    before targetm.init_builtins () and recover back have_regs_of_mode
+    after targetm.init_builtins ().  */
+ class rvv_switcher
+ {
+ public:
+   rvv_switcher ();
+   ~rvv_switcher ();
+ 
+ private:
+   bool m_old_have_regs_of_mode[MAX_MACHINE_MODE];
+ };
+ 
+ rvv_switcher::rvv_switcher ()
+ {
+   /* Set have_regs_of_mode before targetm.init_builtins ().  */
+   memcpy (m_old_have_regs_of_mode, have_regs_of_mode,
+ 	  sizeof (have_regs_of_mode));
+   for (int i = 0; i < NUM_MACHINE_MODES; ++i)
+     if (riscv_v_ext_vector_mode_p ((machine_mode) i))
+       have_regs_of_mode[i] = true;
+ }
+ 
+ rvv_switcher::~rvv_switcher ()
+ {
+   /* Recover back have_regs_of_mode.  */
+   memcpy (have_regs_of_mode, m_old_have_regs_of_mode,
+ 	  sizeof (have_regs_of_mode));
+ }
+ 
+ /* Add attribute NAME to ATTRS.  */
+ static tree
+ add_attribute (const char *name, tree attrs)
+ {
+   return tree_cons (get_identifier (name), NULL_TREE, attrs);
+ }
+ 
+ /* Add type attributes to builtin type tree, currently only the mangled name. */
+ static void
+ add_vector_type_attribute (tree type, const char *mangled_name)
+ {
+   tree mangled_name_tree = get_identifier (mangled_name);
+   tree value = tree_cons (NULL_TREE, mangled_name_tree, NULL_TREE);
+   TYPE_ATTRIBUTES (type)
+     = tree_cons (get_identifier ("RVV type"), value, TYPE_ATTRIBUTES (type));
+ }
+ 
+ /* Force TYPE to be a sizeless type.  */
+ static void
+ make_type_sizeless (tree type)
+ {
+   TYPE_ATTRIBUTES (type) = tree_cons (get_identifier ("RVV sizeless type"),
+ 				      NULL_TREE, TYPE_ATTRIBUTES (type));
+ }
+ 
+ /* Return true if TYPE is a sizeless type.  */
+ static bool
+ sizeless_type_p (const_tree type)
+ {
+   if (type == error_mark_node)
+     return NULL_TREE;
+   return lookup_attribute ("RVV sizeless type", TYPE_ATTRIBUTES (type));
+ }
+ 
+ /* If TYPE is an ABI-defined RVV type, return its attribute descriptor,
+    otherwise return null.  */
+ static tree
+ lookup_vector_type_attribute (const_tree type)
+ {
+   if (type == error_mark_node)
+     return NULL_TREE;
+   return lookup_attribute ("RVV type", TYPE_ATTRIBUTES (type));
+ }
+ 
+ /* Return a representation of "const T *".  */
+ static tree
+ build_const_pointer (tree t)
+ {
+   return build_pointer_type (build_qualified_type (t, TYPE_QUAL_CONST));
+ }
+ 
+ /* Helper function for register a single built-in RVV ABI type.  */
+ static void
+ register_builtin_type (vector_type_index type, tree eltype, machine_mode mode)
+ {
+   builtin_types[type].scalar = eltype;
+   builtin_types[type].scalar_ptr = build_pointer_type (eltype);
+   builtin_types[type].scalar_const_ptr = build_const_pointer (eltype);
+   /* TODO: We currently just skip the register of the illegal RVV type.
+      Ideally, we should report error message more friendly instead of
+      reporting "unknown" type. Support more friendly error message in
+      the future.  */
+   if (!riscv_v_ext_vector_mode_p (mode))
+     return;
+ 
+   tree vectype = build_vector_type_for_mode (eltype, mode);
+   gcc_assert (VECTOR_MODE_P (TYPE_MODE (vectype)) && TYPE_MODE (vectype) == mode
+ 	      && TYPE_MODE_RAW (vectype) == mode && TYPE_ALIGN (vectype) <= 128
+ 	      && known_eq (tree_to_poly_uint64 (TYPE_SIZE (vectype)),
+ 			   GET_MODE_BITSIZE (mode)));
+   vectype = build_distinct_type_copy (vectype);
+   gcc_assert (vectype == TYPE_MAIN_VARIANT (vectype));
+   SET_TYPE_STRUCTURAL_EQUALITY (vectype);
+   TYPE_ARTIFICIAL (vectype) = 1;
+   TYPE_INDIVISIBLE_P (vectype) = 1;
+   add_vector_type_attribute (vectype, vector_types[type].mangled_name);
+   make_type_sizeless (vectype);
+   abi_vector_types[type] = vectype;
+   lang_hooks.types.register_builtin_type (vectype, vector_types[type].abi_name);
+ }
+ 
+ /* Register the built-in RVV ABI types, such as __rvv_int32m1_t.  */
+ static void
+ register_builtin_types ()
+ {
+   /* Get type node from get_typenode_from_name to prevent we have different type
+      node define in different target libraries, e.g. int32_t defined as
+      `long` in RV32/newlib-stdint, but `int` for RV32/glibc-stdint.h.
+      NOTE: uint[16|32|64]_type_node already defined in tree.h.  */
+   tree int8_type_node = get_typenode_from_name (INT8_TYPE);
+   tree uint8_type_node = get_typenode_from_name (UINT8_TYPE);
+   tree int16_type_node = get_typenode_from_name (INT16_TYPE);
+   tree int32_type_node = get_typenode_from_name (INT32_TYPE);
+   tree int64_type_node = get_typenode_from_name (INT64_TYPE);
+ 
+   machine_mode mode;
+ #define DEF_RVV_TYPE(NAME, NCHARS, ABI_NAME, SCALAR_TYPE, VECTOR_MODE,         \
+ 		     VECTOR_MODE_MIN_VLEN_32, ARGS...)                         \
+   mode = TARGET_MIN_VLEN > 32 ? VECTOR_MODE##mode                              \
+ 			      : VECTOR_MODE_MIN_VLEN_32##mode;                 \
+   register_builtin_type (VECTOR_TYPE_##NAME, SCALAR_TYPE##_type_node, mode);
+ #include "riscv-vector-builtins.def"
+ }
+ 
+ /* Register vector type TYPE under its risv_vector.h name.  */
+ static void
+ register_vector_type (vector_type_index type)
+ {
+   tree vectype = abi_vector_types[type];
+ 
+   /* When vectype is NULL, the corresponding builtin type
+      is disabled according to '-march'.  */
+   /* TODO: We currently just skip the register of the illegal RVV type.
+      Ideally, we should report error message more friendly instead of
+      reporting "unknown" type. Support more friendly error message in
+      the future.  */
+   if (!vectype)
+     return;
+   tree id = get_identifier (vector_types[type].name);
+   tree decl = build_decl (input_location, TYPE_DECL, id, vectype);
+   decl = lang_hooks.decls.pushdecl (decl);
+ 
+   /* Record the new RVV type if pushdecl succeeded without error.  Use
+      the ABI type otherwise, so that the type we record at least has the
+      right form, even if it doesn't have the right name.  This should give
+      better error recovery behavior than installing error_mark_node or
+      installing an incorrect type.  */
+   if (decl && TREE_CODE (decl) == TYPE_DECL
+       && TREE_TYPE (decl) != error_mark_node
+       && TYPE_MAIN_VARIANT (TREE_TYPE (decl)) == vectype)
+     vectype = TREE_TYPE (decl);
+ 
+   builtin_types[type].vector = vectype;
+   builtin_types[type].vector_ptr = build_pointer_type (vectype);
+ }
+ 
+ /* Return true if the type has required_extensions.  */
+ static bool
+ required_extensions_p (enum rvv_base_type type)
+ {
+   return type == RVV_BASE_eew8_index || type == RVV_BASE_eew16_index
+ 	 || type == RVV_BASE_eew32_index || type == RVV_BASE_eew64_index
+ 	 || type == RVV_BASE_float_vector
+ 	 || type == RVV_BASE_double_trunc_float_vector
+ 	 || type == RVV_BASE_double_trunc_vector
+ 	 || type == RVV_BASE_widen_lmul1_vector
+ 	 || type == RVV_BASE_eew8_interpret || type == RVV_BASE_eew16_interpret
+ 	 || type == RVV_BASE_eew32_interpret || type == RVV_BASE_eew64_interpret
+ 	 || type == RVV_BASE_vlmul_ext_x2 || type == RVV_BASE_vlmul_ext_x4
+ 	 || type == RVV_BASE_vlmul_ext_x8 || type == RVV_BASE_vlmul_ext_x16
+ 	 || type == RVV_BASE_vlmul_ext_x32 || type == RVV_BASE_vlmul_ext_x64;
+ }
+ 
+ static uint64_t
+ get_required_extensions (vector_type_index type_idx)
+ {
+   for (unsigned int i = 0; all_ops[i].index != NUM_VECTOR_TYPES; i++)
+     if (type_idx == all_ops[i].index)
+       return all_ops[i].required_extensions;
+   for (unsigned int i = 0; b_ops[i].index != NUM_VECTOR_TYPES; i++)
+     if (type_idx == b_ops[i].index)
+       return b_ops[i].required_extensions;
+   gcc_unreachable ();
+ }
+ 
+ /* Check whether all the RVV_REQUIRE_* values in REQUIRED_EXTENSIONS are
+    enabled.  */
+ static bool
+ check_required_extensions (const function_instance &instance)
+ {
+   rvv_type_info type_info = instance.type;
+   uint64_t required_extensions = type_info.required_extensions;
+   const rvv_op_info *op_info = instance.op_info;
+ 
+   if (required_extensions_p (op_info->ret.base_type))
+     {
+       enum vector_type_index ret_type_idx
+ 	= op_info->ret.get_function_type_index (type_info.index);
+       if (ret_type_idx == NUM_VECTOR_TYPES)
+ 	return false;
+       required_extensions |= get_required_extensions (ret_type_idx);
+     }
+ 
+   for (unsigned i = 0; op_info->args[i].base_type != NUM_BASE_TYPES; ++i)
+     {
+       if (!required_extensions_p (op_info->args[i].base_type))
+ 	continue;
+ 
+       enum vector_type_index vector_type
+ 	= op_info->args[i].get_function_type_index (type_info.index);
+       if (vector_type == NUM_VECTOR_TYPES)
+ 	return false;
+       required_extensions |= get_required_extensions (vector_type);
+ 
+       /* According to RVV ISA, EEW=64 index of indexed loads/stores require
+ 	 XLEN = 64.  */
+       if (op_info->args[i].base_type == RVV_BASE_eew64_index)
+ 	required_extensions |= RVV_REQUIRE_RV64BIT;
+     }
+ 
+   uint64_t riscv_isa_flags = 0;
+ 
+   if (TARGET_VECTOR_ELEN_FP_32)
+     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_32;
+   if (TARGET_VECTOR_ELEN_FP_64)
+     riscv_isa_flags |= RVV_REQUIRE_ELEN_FP_64;
+   if (TARGET_VECTOR_ELEN_64)
+     riscv_isa_flags |= RVV_REQUIRE_ELEN_64;
+   if (TARGET_64BIT)
+     riscv_isa_flags |= RVV_REQUIRE_RV64BIT;
+   if (TARGET_FULL_V)
+     riscv_isa_flags |= RVV_REQUIRE_FULL_V;
+   if (TARGET_MIN_VLEN > 32)
+     riscv_isa_flags |= RVV_REQUIRE_MIN_VLEN_64;
+ 
+   uint64_t missing_extensions = required_extensions & ~riscv_isa_flags;
+   if (missing_extensions != 0)
+     return false;
+   return true;
+ }
+ 
+ /* Return true if predication is using a real mask operand.  */
+ static bool
+ use_real_mask_p (enum predication_type_index pred)
+ {
+   return pred == PRED_TYPE_m || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu
+ 	 || pred == PRED_TYPE_mu;
+ }
+ 
+ /* Return true if predication is using a real merge operand.  */
+ static bool
+ use_real_merge_p (enum predication_type_index pred)
+ {
+   return pred == PRED_TYPE_tu || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu
+ 	 || pred == PRED_TYPE_mu;
+ }
+ 
+ /* Get TAIL policy for predication. If predication indicates TU, return the TU.
+    Otherwise, return the prefer default configuration.  */
+ static rtx
+ get_tail_policy_for_pred (enum predication_type_index pred)
+ {
+   if (pred == PRED_TYPE_tu || pred == PRED_TYPE_tum || pred == PRED_TYPE_tumu)
+     return gen_int_mode (TAIL_UNDISTURBED, Pmode);
+   return gen_int_mode (get_prefer_tail_policy (), Pmode);
+ }
+ 
+ /* Get MASK policy for predication. If predication indicates MU, return the MU.
+    Otherwise, return the prefer default configuration.  */
+ static rtx
+ get_mask_policy_for_pred (enum predication_type_index pred)
+ {
+   if (pred == PRED_TYPE_tumu || pred == PRED_TYPE_mu)
+     return gen_int_mode (MASK_UNDISTURBED, Pmode);
+   return gen_int_mode (get_prefer_mask_policy (), Pmode);
+ }
+ 
+ tree
+ rvv_arg_type_info::get_scalar_ptr_type (vector_type_index type_idx) const
+ {
+   /* According to the latest rvv-intrinsic-doc, it defines vsm.v intrinsic:
+    __riscv_vsm (uint8_t *base, vbool1_t value, size_t vl).  */
+   if (type_idx >= VECTOR_TYPE_vbool64_t && type_idx <= VECTOR_TYPE_vbool1_t)
+     return builtin_types[VECTOR_TYPE_vuint8mf8_t].scalar_ptr;
+   else
+     return builtin_types[type_idx].scalar_ptr;
+ }
+ 
+ tree
+ rvv_arg_type_info::get_scalar_const_ptr_type (vector_type_index type_idx) const
+ {
+   /* According to the latest rvv-intrinsic-doc, it defines vlm.v intrinsic:
+    __riscv_vlm_v_b1 (const uint8_t *base, size_t vl).  */
+   if (type_idx >= VECTOR_TYPE_vbool64_t && type_idx <= VECTOR_TYPE_vbool1_t)
+     return builtin_types[VECTOR_TYPE_vuint8mf8_t].scalar_const_ptr;
+   else
+     return builtin_types[type_idx].scalar_const_ptr;
+ }
+ 
+ vector_type_index
+ rvv_arg_type_info::get_function_type_index (vector_type_index type_idx) const
+ {
+   tree type
+     = builtin_types[function_types[type_idx].type_indexes[base_type]].vector;
+   return type ? function_types[type_idx].type_indexes[base_type]
+ 	      : NUM_VECTOR_TYPES;
+ }
+ 
+ tree
+ rvv_arg_type_info::get_tree_type (vector_type_index type_idx) const
+ {
+   /* If the builtin type is not registered means '-march' doesn't
+      satisfy the require extension of the type. For example,
+      vfloat32m1_t require floating-point extension. In this case,
+      just return NULL_TREE.  */
+   if (type_idx != VECTOR_TYPE_INVALID && !builtin_types[type_idx].vector)
+     return NULL_TREE;
+ 
+   switch (base_type)
+     {
+ #define DEF_RVV_BASE_TYPE(NAME, TYPE)                                          \
+   case RVV_BASE_##NAME:                                                        \
+     return TYPE;
+ #include "riscv-vector-builtins.def"
+     default:
+       gcc_unreachable ();
+     }
+   gcc_unreachable ();
+ }
+ 
+ function_instance::function_instance (const char *base_name_in,
+ 				      const function_base *base_in,
+ 				      const function_shape *shape_in,
+ 				      rvv_type_info type_in,
+ 				      predication_type_index pred_in,
+ 				      const rvv_op_info *op_info_in)
+   : base_name (base_name_in), base (base_in), shape (shape_in), type (type_in),
+     pred (pred_in), op_info (op_info_in)
+ {
+ }
+ 
+ bool
+ function_instance::operator== (const function_instance &other) const
+ {
+   for (unsigned int i = 0; op_info->args[i].base_type != NUM_BASE_TYPES; ++i)
+     if (op_info->args[i].base_type != other.op_info->args[i].base_type)
+       return false;
+   return (base == other.base && shape == other.shape
+ 	  && type.index == other.type.index && op_info->op == other.op_info->op
+ 	  && pred == other.pred
+ 	  && op_info->ret.base_type == other.op_info->ret.base_type);
+ }
+ 
+ bool
+ function_instance::any_type_float_p () const
+ {
+   if (FLOAT_MODE_P (TYPE_MODE (get_return_type ())))
+     return true;
+ 
+   for (int i = 0; op_info->args[i].base_type != NUM_BASE_TYPES; ++i)
+     if (FLOAT_MODE_P (TYPE_MODE (get_arg_type (i))))
+       return true;
+ 
+   return false;
+ }
+ 
+ tree
+ function_instance::get_return_type () const
+ {
+   return op_info->ret.get_tree_type (type.index);
+ }
+ 
+ tree
+ function_instance::get_arg_type (unsigned opno) const
+ {
+   return op_info->args[opno].get_tree_type (type.index);
+ }
+ 
+ /* Return a hash code for a function_instance.  */
+ hashval_t
+ function_instance::hash () const
+ {
+   inchash::hash h;
+   /* BASE uniquely determines BASE_NAME, so we don't need to hash both.  */
+   h.add_ptr (base);
+   h.add_ptr (shape);
+   h.add_int (type.index);
+   h.add_int (op_info->op);
+   h.add_int (pred);
+   h.add_int (op_info->ret.base_type);
+   for (unsigned int i = 0; op_info->args[i].base_type != NUM_BASE_TYPES; ++i)
+     h.add_int (op_info->args[i].base_type);
+   return h.end ();
+ }
+ 
+ /* Return a set of CP_* flags that describe what the function could do,
+    taking the command-line flags into account.  */
+ unsigned int
+ function_instance::call_properties () const
+ {
+   unsigned int flags = base->call_properties (*this);
+ 
+   /* -fno-trapping-math means that we can assume any FP exceptions
+      are not user-visible.  */
+   if (!flag_trapping_math)
+     flags &= ~CP_RAISE_FP_EXCEPTIONS;
+ 
+   return flags;
+ }
+ 
+ /* Return true if calls to the function could read some form of
+    global state.  */
+ bool
+ function_instance::reads_global_state_p () const
+ {
+   unsigned int flags = call_properties ();
+ 
+   /* Preserve any dependence on rounding mode, flush to zero mode, etc.
+      There is currently no way of turning this off; in particular,
+      -fno-rounding-math (which is the default) means that we should make
+      the usual assumptions about rounding mode, which for intrinsics means
+      acting as the instructions do.  */
+   if (flags & CP_READ_FPCR)
+     return true;
+ 
+   /* Handle direct reads of global state.  */
+   return flags & (CP_READ_MEMORY | CP_READ_CSR);
+ }
+ 
+ /* Return true if calls to the function could modify some form of
+    global state.  */
+ bool
+ function_instance::modifies_global_state_p () const
+ {
+   unsigned int flags = call_properties ();
+ 
+   /* Preserve any exception state written back to the FPCR,
+      unless -fno-trapping-math says this is unnecessary.  */
+   if (flags & CP_RAISE_FP_EXCEPTIONS)
+     return true;
+ 
+   /* Handle direct modifications of global state.  */
+   return flags & (CP_WRITE_MEMORY | CP_WRITE_CSR);
+ }
+ 
+ /* Return true if calls to the function could raise a signal.  */
+ bool
+ function_instance::could_trap_p () const
+ {
+   unsigned int flags = call_properties ();
+ 
+   /* Handle functions that could raise SIGFPE.  */
+   if (flags & CP_RAISE_FP_EXCEPTIONS)
+     return true;
+ 
+   /* Handle functions that could raise SIGBUS or SIGSEGV.  */
+   if (flags & (CP_READ_MEMORY | CP_WRITE_MEMORY))
+     return true;
+ 
+   return false;
+ }
+ 
+ function_builder::function_builder ()
+ {
+   m_direct_overloads = lang_GNU_CXX ();
+   gcc_obstack_init (&m_string_obstack);
+ }
+ 
+ function_builder::~function_builder ()
+ {
+   obstack_free (&m_string_obstack, NULL);
+ }
+ 
+ /* Allocate arguments of the function.  */
+ void
+ function_builder::allocate_argument_types (const function_instance &instance,
+ 					   vec<tree> &argument_types) const
+ {
+   for (unsigned int i = 0;
+        instance.op_info->args[i].base_type != NUM_BASE_TYPES; ++i)
+     argument_types.quick_push (
+       instance.op_info->args[i].get_tree_type (instance.type.index));
+ }
+ 
+ /* Apply predication into argument_types.  */
+ void
+ function_builder::apply_predication (const function_instance &instance,
+ 				     tree return_type,
+ 				     vec<tree> &argument_types) const
+ {
+   /* These predication types need to apply merge type.  */
+   if (instance.base->has_merge_operand_p ())
+     if (instance.pred == PRED_TYPE_tu || instance.pred == PRED_TYPE_tum
+ 	|| instance.pred == PRED_TYPE_tumu || instance.pred == PRED_TYPE_mu)
+       argument_types.quick_insert (0, return_type);
+ 
+   /* These predication types need to apply mask type.  */
+   vector_type_index mask_type_index
+     = function_types[instance.type.index].type_indexes[RVV_BASE_mask];
+   tree mask_type = builtin_types[mask_type_index].vector;
+   if (instance.pred == PRED_TYPE_m || instance.pred == PRED_TYPE_tum
+       || instance.pred == PRED_TYPE_tumu || instance.pred == PRED_TYPE_mu)
+     argument_types.quick_insert (0, mask_type);
+ 
+   /* check if vl parameter need  */
+   if (instance.base->apply_vl_p ())
+     argument_types.quick_push (size_type_node);
+ }
+ 
+ /* Register all the functions in GROUP.  */
+ void
+ function_builder::register_function_group (const function_group_info &group)
+ {
+   (*group.shape)->build (*this, group);
+ }
+ 
+ /* Add NAME to the end of the function name being built.  */
+ void
+ function_builder::append_name (const char *name)
+ {
+   obstack_grow (&m_string_obstack, name, strlen (name));
+ }
+ 
+ /* Add "__riscv_" and "name".  */
+ void
+ function_builder::append_base_name (const char *name)
+ {
+   append_name ("__riscv_");
+   append_name (name);
+ }
+ 
+ /* Add SEW into function name.  */
+ void
+ function_builder::append_sew (int sew)
+ {
+   switch (sew)
+     {
+     case 8:
+       append_name ("8");
+       break;
+     case 16:
+       append_name ("16");
+       break;
+     case 32:
+       append_name ("32");
+       break;
+     case 64:
+       append_name ("64");
+       break;
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ /* Zero-terminate and complete the function name being built.  */
+ char *
+ function_builder::finish_name ()
+ {
+   obstack_1grow (&m_string_obstack, 0);
+   return (char *) obstack_finish (&m_string_obstack);
+ }
+ 
+ /* Return the appropriate function attributes for INSTANCE.  */
+ tree
+ function_builder::get_attributes (const function_instance &instance)
+ {
+   tree attrs = NULL_TREE;
+ 
+   if (!instance.modifies_global_state_p ())
+     {
+       if (instance.reads_global_state_p ())
+ 	attrs = add_attribute ("pure", attrs);
+       else
+ 	attrs = add_attribute ("const", attrs);
+     }
+ 
+   if (!flag_non_call_exceptions || !instance.could_trap_p ())
+     attrs = add_attribute ("nothrow", attrs);
+ 
+   return add_attribute ("leaf", attrs);
+ }
+ 
+ /* Add a function called NAME with type FNTYPE and attributes ATTRS.
+    INSTANCE describes what the function does.  */
+ registered_function &
+ function_builder::add_function (const function_instance &instance,
+ 				const char *name, tree fntype, tree attrs,
+ 				bool placeholder_p)
+ {
+   unsigned int code = vec_safe_length (registered_functions);
+   code = (code << RISCV_BUILTIN_SHIFT) + RISCV_BUILTIN_VECTOR;
+ 
+   /* We need to be able to generate placeholders to enusre that we have a
+      consistent numbering scheme for function codes between the C and C++
+      frontends, so that everything ties up in LTO.
+ 
+      Currently, tree-streamer-in.c:unpack_ts_function_decl_value_fields
+      validates that tree nodes returned by TARGET_BUILTIN_DECL are non-NULL and
+      some node other than error_mark_node. This is a holdover from when builtin
+      decls were streamed by code rather than by value.
+ 
+      Ultimately, we should be able to remove this validation of BUILT_IN_MD
+      nodes and remove the target hook. For now, however, we need to appease the
+      validation and return a non-NULL, non-error_mark_node node, so we
+      arbitrarily choose integer_zero_node.  */
+   tree decl = placeholder_p
+ 		? integer_zero_node
+ 		: simulate_builtin_function_decl (input_location, name, fntype,
+ 						  code, NULL, attrs);
+ 
+   registered_function &rfn = *ggc_alloc<registered_function> ();
+   rfn.instance = instance;
+   rfn.decl = decl;
+   vec_safe_push (registered_functions, &rfn);
+ 
+   return rfn;
+ }
+ 
+ /* Add a built-in function for INSTANCE, with the argument types given
+    by ARGUMENT_TYPES and the return type given by RETURN_TYPE. NAME is
+    the "full" name for C function. OVERLOAD_NAME is the "short" name for
+    C++ overloaded function. OVERLOAD_NAME can be nullptr because some
+    instance doesn't have C++ overloaded function.  */
+ void
+ function_builder::add_unique_function (const function_instance &instance,
+ 				       const function_shape *shape,
+ 				       tree return_type,
+ 				       vec<tree> &argument_types)
+ {
+   /* Do not add this function if it is invalid.  */
+   if (!check_required_extensions (instance))
+     return;
+ 
+   /* Add the function under its full (unique) name.  */
+   char *name = shape->get_name (*this, instance, false);
+   tree fntype
+     = build_function_type_array (return_type, argument_types.length (),
+ 				 argument_types.address ());
+   tree attrs = get_attributes (instance);
+   registered_function &rfn
+     = add_function (instance, name, fntype, attrs, false);
+ 
+   /* Enter the function into the hash table.  */
+   hashval_t hash = instance.hash ();
+   registered_function **rfn_slot
+     = function_table->find_slot_with_hash (instance, hash, INSERT);
+   gcc_assert (!*rfn_slot);
+   *rfn_slot = &rfn;
+ 
+   /* Also add the function under its overloaded alias, if we want
+      a separate decl for each instance of an overloaded function.  */
+   char *overload_name = shape->get_name (*this, instance, true);
+   if (overload_name)
+     {
+       /* Attribute lists shouldn't be shared.  */
+       tree attrs = get_attributes (instance);
+       bool placeholder_p = !m_direct_overloads;
+       add_function (instance, overload_name, fntype, attrs, placeholder_p);
+     }
+   obstack_free (&m_string_obstack, name);
+ }
+ 
+ function_call_info::function_call_info (location_t location_in,
+ 					const function_instance &instance_in,
+ 					tree fndecl_in)
+   : function_instance (instance_in), location (location_in), fndecl (fndecl_in)
+ {}
+ 
+ gimple_folder::gimple_folder (const function_instance &instance, tree fndecl,
+ 			      gimple_stmt_iterator *gsi_in, gcall *call_in)
+   : function_call_info (gimple_location (call_in), instance, fndecl),
+     gsi (gsi_in), call (call_in), lhs (gimple_call_lhs (call_in))
+ {
+ }
+ 
+ /* Try to fold the call.  Return the new statement on success and null
+    on failure.  */
+ gimple *
+ gimple_folder::fold ()
+ {
+   /* Don't fold anything when RVV is disabled; emit an error during
+      expansion instead.  */
+   if (!TARGET_VECTOR)
+     return NULL;
+ 
+   /* Punt if the function has a return type and no result location is
+      provided.  The attributes should allow target-independent code to
+      remove the calls if appropriate.  */
+   if (!lhs && TREE_TYPE (gimple_call_fntype (call)) != void_type_node)
+     return NULL;
+ 
+   return base->fold (*this);
+ }
+ 
+ function_expander::function_expander (const function_instance &instance,
+ 				      tree fndecl_in, tree exp_in,
+ 				      rtx target_in)
+   : function_call_info (EXPR_LOCATION (exp_in), instance, fndecl_in),
+     exp (exp_in), target (target_in), opno (0)
+ {
+   if (!function_returns_void_p ())
+     create_output_operand (&m_ops[opno++], target, TYPE_MODE (TREE_TYPE (exp)));
+ }
+ 
+ /* Take argument ARGNO from EXP's argument list and convert it into
+    an expand operand.  Store the operand in *M_OPS.  */
+ void
+ function_expander::add_input_operand (unsigned argno)
+ {
+   tree arg = CALL_EXPR_ARG (exp, argno);
+   rtx x = expand_normal (arg);
+   add_input_operand (TYPE_MODE (TREE_TYPE (arg)), x);
+ }
+ 
+ /* Since we may normalize vop/vop_tu/vop_m/vop_tumu.. into a single patter.
+    We add a undef for the intrinsics that don't need a real merge.  */
+ void
+ function_expander::add_vundef_operand (machine_mode mode)
+ {
+   add_input_operand (mode, RVV_VUNDEF (mode));
+ }
+ 
+ /* Add a memory operand with mode MODE and address ADDR.  */
+ void
+ function_expander::add_mem_operand (machine_mode mode, unsigned argno)
+ {
+   gcc_assert (VECTOR_MODE_P (mode));
+   rtx addr = expand_normal (CALL_EXPR_ARG (exp, argno));
+   rtx mem = gen_rtx_MEM (mode, memory_address (mode, addr));
+   /* The memory is only guaranteed to be element-aligned.  */
+   set_mem_align (mem, GET_MODE_ALIGNMENT (GET_MODE_INNER (mode)));
+   add_fixed_operand (mem);
+ }
+ 
+ /* Return the machine_mode of the corresponding mask type.  */
+ machine_mode
+ function_expander::mask_mode (void) const
+ {
+   vector_type_index mask_type_index
+     = function_types[type.index].type_indexes[RVV_BASE_mask];
+   return TYPE_MODE (builtin_types[mask_type_index].vector);
+ }
+ 
+ /* Implement the call using instruction ICODE, with a 1:1 mapping between
+    arguments and input operands.  */
+ rtx
+ function_expander::use_exact_insn (insn_code icode)
+ {
+   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
+ 
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+ 
+   if (base->use_mask_predication_p ())
+     {
+       if (use_real_mask_p (pred))
+ 	add_input_operand (arg_offset++);
+       else
+ 	add_all_one_mask_operand (mask_mode ());
+     }
+ 
+   /* Store operation doesn't have merge operand.  */
+   if (!function_returns_void_p () && base->has_merge_operand_p ())
+     {
+       if (use_real_merge_p (pred))
+ 	add_input_operand (arg_offset++);
+       else
+ 	add_vundef_operand (mode);
+     }
+ 
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   if (base->apply_tail_policy_p ())
+     add_input_operand (Pmode, get_tail_policy_for_pred (pred));
+   if (base->apply_mask_policy_p ())
+     add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+ 
+   if (base->apply_vl_p ())
+     add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+   return generate_insn (icode);
+ }
+ 
+ /* Use contiguous load INSN.  */
+ rtx
+ function_expander::use_contiguous_load_insn (insn_code icode)
+ {
+   gcc_assert (call_expr_nargs (exp) > 0);
+   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
+ 
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+ 
+   if (use_real_mask_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_all_one_mask_operand (mask_mode ());
+ 
+   if (use_real_merge_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_vundef_operand (mode);
+ 
+   add_mem_operand (mode, arg_offset++);
+ 
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   if (GET_MODE_CLASS (mode) != MODE_VECTOR_BOOL)
+     {
+       add_input_operand (Pmode, get_tail_policy_for_pred (pred));
+       add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+     }
+ 
+   if (opno != insn_data[icode].n_generator_args)
+     add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+ 
+   return generate_insn (icode);
+ }
+ 
+ /* Use contiguous store INSN.  */
+ rtx
+ function_expander::use_contiguous_store_insn (insn_code icode)
+ {
+   gcc_assert (call_expr_nargs (exp) > 0);
+   machine_mode mode = TYPE_MODE (builtin_types[type.index].vector);
+ 
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+ 
+   add_mem_operand (mode, use_real_mask_p (pred) ? 1 : 0);
+ 
+   if (use_real_mask_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_all_one_mask_operand (mask_mode ());
+ 
+   arg_offset++;
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   return generate_insn (icode);
+ }
+ 
+ /* Implement the call using instruction ICODE, with a 1:1 mapping between
+    arguments and input operands.  */
+ rtx
+ function_expander::use_compare_insn (rtx_code rcode, insn_code icode)
+ {
+   machine_mode mode = TYPE_MODE (builtin_types[type.index].vector);
+   machine_mode mask_mode = TYPE_MODE (TREE_TYPE (exp));
+ 
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+ 
+   if (use_real_mask_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_all_one_mask_operand (mask_mode);
+ 
+   if (use_real_merge_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_vundef_operand (mask_mode);
+ 
+   rtx op1 = expand_normal (CALL_EXPR_ARG (exp, arg_offset++));
+   rtx op2 = expand_normal (CALL_EXPR_ARG (exp, arg_offset++));
+   if (!insn_operand_matches (icode, opno + 1, op1))
+     op1 = force_reg (mode, op1);
+   if (!insn_operand_matches (icode, opno + 2, op2))
+     {
+       if (VECTOR_MODE_P (GET_MODE (op2)))
+ 	op2 = force_reg (mode, op2);
+       else
+ 	op2 = force_reg (GET_MODE_INNER (mode), op2);
+     }
+   rtx comparison = gen_rtx_fmt_ee (rcode, mask_mode, op1, op2);
+   if (!VECTOR_MODE_P (GET_MODE (op2)))
+     comparison = gen_rtx_fmt_ee (rcode, mask_mode, op1,
+ 				 gen_rtx_VEC_DUPLICATE (mode, op2));
+   add_fixed_operand (comparison);
+   add_fixed_operand (op1);
+   if (CONST_INT_P (op2))
+     add_integer_operand (op2);
+   else
+     add_fixed_operand (op2);
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+   add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+   return generate_insn (icode);
+ }
+ 
+ /* Implement the call using instruction ICODE, with a 1:1 mapping between
+    arguments and input operands.  */
+ rtx
+ function_expander::use_ternop_insn (bool vd_accum_p, insn_code icode)
+ {
+   machine_mode mode = TYPE_MODE (builtin_types[type.index].vector);
+ 
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+ 
+   if (use_real_mask_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_all_one_mask_operand (mask_mode ());
+ 
+   rtx vd = expand_normal (CALL_EXPR_ARG (exp, arg_offset++));
+   rtx vs1 = expand_normal (CALL_EXPR_ARG (exp, arg_offset++));
+   rtx vs2 = expand_normal (CALL_EXPR_ARG (exp, arg_offset++));
+ 
+   if (VECTOR_MODE_P (GET_MODE (vs1)))
+     {
+       if (!vd_accum_p)
+ 	add_input_operand (mode, vd);
+       add_input_operand (mode, vs1);
+       add_input_operand (mode, vs2);
+       if (vd_accum_p)
+ 	add_input_operand (mode, vd);
+       add_input_operand (mode, vd);
+     }
+   else
+     {
+       add_input_operand (GET_MODE_INNER (mode), vs1);
+       if (vd_accum_p)
+ 	{
+ 	  add_input_operand (mode, vs2);
+ 	  add_input_operand (mode, vd);
+ 	}
+       else
+ 	{
+ 	  add_input_operand (mode, vd);
+ 	  add_input_operand (mode, vs2);
+ 	}
+       add_input_operand (mode, vd);
+     }
+ 
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   add_input_operand (Pmode, get_tail_policy_for_pred (pred));
+   add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+   add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+   return generate_insn (icode);
+ }
+ 
+ /* Implement the call using instruction ICODE, with a 1:1 mapping between
+    arguments and input operands.  */
+ rtx
+ function_expander::use_widen_ternop_insn (insn_code icode)
+ {
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+ 
+   if (use_real_mask_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_all_one_mask_operand (mask_mode ());
+ 
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   add_input_operand (Pmode, get_tail_policy_for_pred (pred));
+   add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+   add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+   return generate_insn (icode);
+ }
+ 
+ /* Implement the call using instruction ICODE, with a 1:1 mapping between
+    arguments and input operands.  */
+ rtx
+ function_expander::use_scalar_move_insn (insn_code icode)
+ {
+   machine_mode mode = TYPE_MODE (TREE_TYPE (exp));
+ 
+   /* Record the offset to get the argument.  */
+   int arg_offset = 0;
+   add_scalar_move_mask_operand (mask_mode ());
+ 
+   if (use_real_merge_p (pred))
+     add_input_operand (arg_offset++);
+   else
+     add_vundef_operand (mode);
+ 
+   for (int argno = arg_offset; argno < call_expr_nargs (exp); argno++)
+     add_input_operand (argno);
+ 
+   add_input_operand (Pmode, get_tail_policy_for_pred (pred));
+   add_input_operand (Pmode, get_mask_policy_for_pred (pred));
+   add_input_operand (Pmode, get_avl_type_rtx (avl_type::NONVLMAX));
+   return generate_insn (icode);
+ }
+ 
+ /* Generate instruction ICODE, given that its operands have already
+    been added to M_OPS.  Return the value of the first operand.  */
+ rtx
+ function_expander::generate_insn (insn_code icode)
+ {
+   gcc_assert (opno == insn_data[icode].n_generator_args);
+   if (!maybe_expand_insn (icode, opno, m_ops))
+     {
+       error ("invalid argument to built-in function");
+       return NULL_RTX;
+     }
+   return function_returns_void_p () ? const0_rtx : m_ops[0].value;
+ }
+ 
+ function_checker::function_checker (location_t location,
+ 				    const function_instance &instance,
+ 				    tree fndecl, tree fntype,
+ 				    unsigned int nargs, tree *args)
+   : function_call_info (location, instance, fndecl), m_fntype (fntype),
+     m_nargs (nargs), m_args (args)
+ {}
+ 
+ /* Report that LOCATION has a call to FNDECL in which argument ARGNO
+    was not an integer constant expression.  ARGNO counts from zero.  */
+ void
+ function_checker::report_non_ice (unsigned int argno) const
+ {
+   error_at (location,
+ 	    "argument %d of %qE must be an integer constant"
+ 	    " expression",
+ 	    argno + 1, fndecl);
+ }
+ 
+ /* Report that LOCATION has a call to FNDECL in which argument ARGNO has
+    the value ACTUAL, whereas the function requires a value in the range
+    [MIN, MAX].  ARGNO counts from zero.  */
+ void
+ function_checker::report_out_of_range (unsigned int argno, HOST_WIDE_INT actual,
+ 				       HOST_WIDE_INT min,
+ 				       HOST_WIDE_INT max) const
+ {
+   error_at (location,
+ 	    "passing %wd to argument %d of %qE, which expects"
+ 	    " a value in the range [%wd, %wd]",
+ 	    actual, argno + 1, fndecl, min, max);
+ }
+ 
+ /* Check that argument ARGNO is an integer constant expression and
+    store its value in VALUE_OUT if so.  The caller should first
+    check that argument ARGNO exists.  */
+ bool
+ function_checker::require_immediate (unsigned int argno, HOST_WIDE_INT min,
+ 				     HOST_WIDE_INT max) const
+ {
+   gcc_assert (argno < m_nargs);
+   tree arg = m_args[argno];
+ 
+   /* The type and range are unsigned, so read the argument as an
+      unsigned rather than signed HWI.  */
+   if (!tree_fits_uhwi_p (arg))
+     {
+       report_non_ice (argno);
+       return false;
+     }
+   return require_immediate_range (argno, min, max);
+ }
+ 
+ /* Check that argument REL_ARGNO is an integer constant expression in the
+    range [MIN, MAX].  REL_ARGNO counts from the end of the predication
+    arguments.  */
+ bool
+ function_checker::require_immediate_range (unsigned int argno,
+ 					   HOST_WIDE_INT min,
+ 					   HOST_WIDE_INT max) const
+ {
+   gcc_assert (argno < m_nargs);
+   tree arg = m_args[argno];
+   HOST_WIDE_INT actual = tree_to_uhwi (arg);
+ 
+   if (!IN_RANGE (actual, min, max))
+     {
+       report_out_of_range (argno, actual, min, max);
+       return false;
+     }
+ 
+   return true;
+ }
+ 
+ /* Perform semantic checks on the call.  Return true if the call is valid,
+    otherwise report a suitable error.  */
+ bool
+ function_checker::check ()
+ {
+   return shape->check (*this);
+ }
+ 
+ inline hashval_t
+ registered_function_hasher::hash (value_type value)
+ {
+   return value->instance.hash ();
+ }
+ 
+ inline bool
+ registered_function_hasher::equal (value_type value, const compare_type &key)
+ {
+   return value->instance == key;
+ }
+ 
+ /* If TYPE is a built-in type defined by the RVV ABI, return the mangled name,
+    otherwise return NULL.  */
+ const char *
+ mangle_builtin_type (const_tree type)
+ {
+   if (TYPE_NAME (type) && TREE_CODE (TYPE_NAME (type)) == TYPE_DECL)
+     type = TREE_TYPE (TYPE_NAME (type));
+   if (tree attr = lookup_vector_type_attribute (type))
+     if (tree id = TREE_VALUE (chain_index (0, TREE_VALUE (attr))))
+       return IDENTIFIER_POINTER (id);
+   return NULL;
+ }
+ 
+ /* Initialize all compiler built-ins related to RVV that should be
+    defined at start-up.  */
+ void
+ init_builtins ()
+ {
+   rvv_switcher rvv;
+   if (!TARGET_VECTOR)
+     return;
+   register_builtin_types ();
+   if (in_lto_p)
+     handle_pragma_vector ();
+ }
+ 
+ /* Implement TARGET_VERIFY_TYPE_CONTEXT for RVV types.  */
+ bool
+ verify_type_context (location_t loc, type_context_kind context, const_tree type,
+ 		     bool silent_p)
+ {
+   if (!sizeless_type_p (type))
+     return true;
+ 
+   switch (context)
+     {
+     case TCTX_SIZEOF:
+     case TCTX_STATIC_STORAGE:
+       if (!silent_p)
+ 	error_at (loc, "RVV type %qT does not have a fixed size", type);
+ 
+       return false;
+ 
+     case TCTX_ALIGNOF:
+       if (!silent_p)
+ 	error_at (loc, "RVV type %qT does not have a defined alignment", type);
+ 
+       return false;
+ 
+     case TCTX_THREAD_STORAGE:
+       if (!silent_p)
+ 	error_at (loc,
+ 		  "variables of type %qT cannot have thread-local"
+ 		  " storage duration",
+ 		  type);
+ 
+       return false;
+ 
+     case TCTX_POINTER_ARITH:
+       if (!silent_p)
+ 	error_at (loc, "arithmetic on pointer to RVV type %qT", type);
+ 
+       return false;
+ 
+     case TCTX_FIELD:
+       if (silent_p)
+ 	;
+       else if (lang_GNU_CXX ())
+ 	error_at (loc, "member variables cannot have RVV type %qT", type);
+       else
+ 	error_at (loc, "fields cannot have RVV type %qT", type);
+ 
+       return false;
+ 
+     case TCTX_ARRAY_ELEMENT:
+       if (!silent_p)
+ 	error_at (loc, "array elements cannot have RVV type %qT", type);
+ 
+       return false;
+ 
+     case TCTX_ALLOCATION:
+       if (!silent_p)
+ 	error_at (loc, "cannot allocate objects with RVV type %qT", type);
+ 
+       return false;
+ 
+     case TCTX_DEALLOCATION:
+       if (!silent_p)
+ 	error_at (loc, "cannot delete objects with RVV type %qT", type);
+ 
+       return false;
+ 
+     case TCTX_EXCEPTIONS:
+       if (!silent_p)
+ 	error_at (loc, "cannot throw or catch RVV type %qT", type);
+ 
+       return false;
+ 
+     case TCTX_CAPTURE_BY_COPY:
+       if (!silent_p)
+ 	error_at (loc, "capture by copy of RVV type %qT", type);
+ 
+       return false;
+     }
+ 
+   gcc_unreachable ();
+ }
+ 
+ /* Implement #pragma riscv intrinsic vector.  */
+ void
+ handle_pragma_vector ()
+ {
+   if (function_table)
+     {
+       error ("duplicate definition of %qs", "riscv_vector.h");
+       return;
+     }
+   rvv_switcher rvv;
+ 
+   /* Define the vector and tuple types.  */
+   for (unsigned int type_i = 0; type_i < NUM_VECTOR_TYPES; ++type_i)
+     register_vector_type ((enum vector_type_index) type_i);
+ 
+   /* Define the functions.  */
+   function_table = new hash_table<registered_function_hasher> (1023);
+   function_builder builder;
+   for (unsigned int i = 0; i < ARRAY_SIZE (function_groups); ++i)
+     builder.register_function_group (function_groups[i]);
+ }
+ 
+ /* Return the function decl with RVV function subcode CODE, or error_mark_node
+    if no such function exists.  */
+ tree
+ builtin_decl (unsigned int code, bool)
+ {
+   if (code >= vec_safe_length (registered_functions))
+     return error_mark_node;
+ 
+   return (*registered_functions)[code]->decl;
+ }
+ 
+ /* Attempt to fold STMT, given that it's a call to the SVE function
+    with subcode CODE.  Return the new statement on success and null
+    on failure.  Insert any other new statements at GSI.  */
+ gimple *
+ gimple_fold_builtin (unsigned int code, gimple_stmt_iterator *gsi, gcall *stmt)
+ {
+   registered_function &rfn = *(*registered_functions)[code];
+   return gimple_folder (rfn.instance, rfn.decl, gsi, stmt).fold ();
+ }
+ 
+ /* Expand a call to the RVV function with subcode CODE.  EXP is the call
+    expression and TARGET is the preferred location for the result.
+    Return the value of the lhs.  */
+ rtx
+ expand_builtin (unsigned int code, tree exp, rtx target)
+ {
+   registered_function &rfn = *(*registered_functions)[code];
+   return function_expander (rfn.instance, rfn.decl, exp, target).expand ();
+ }
+ 
+ /* Perform any semantic checks needed for a call to the SVE function
+    with subcode CODE, such as testing for integer constant expressions.
+    The call occurs at location LOCATION and has NARGS arguments,
+    given by ARGS.  FNDECL is the original function decl, before
+    overload resolution.
+ 
+    Return true if the call is valid, otherwise report a suitable error.  */
+ bool
+ check_builtin_call (location_t location, vec<location_t>, unsigned int code,
+ 		    tree fndecl, unsigned int nargs, tree *args)
+ {
+   const registered_function &rfn = *(*registered_functions)[code];
+   return function_checker (location, rfn.instance, fndecl,
+ 			   TREE_TYPE (rfn.decl), nargs, args).check ();
+ }
+ 
+ function_instance
+ get_read_vl_instance (void)
+ {
+   return function_instance ("read_vl", bases::read_vl, shapes::read_vl,
+ 			    none_ops[0], PRED_TYPE_none, &p_none_void_ops);
+ }
+ 
+ tree
+ get_read_vl_decl (void)
+ {
+   function_instance instance = get_read_vl_instance ();
+   hashval_t hash = instance.hash ();
+   registered_function *rfn = function_table->find_with_hash (instance, hash);
+   gcc_assert (rfn);
+   return rfn->decl;
+ }
+ 
+ } // end namespace riscv_vector
+ 
+ inline void
+ gt_ggc_mx (function_instance *)
+ {}
+ 
+ inline void
+ gt_pch_nx (function_instance *)
+ {}
+ 
+ inline void
+ gt_pch_nx (function_instance *, gt_pointer_operator, void *)
+ {}
+ 
+ #include "gt-riscv-vector-builtins.h"
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins.def gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins.def
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,385 ----
+ /* Builtins macros for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Use "DEF_RVV_TYPE" macro to define RVV datatype builtins.
+    1.The 'NAME' argument is the name exposed to users.
+      For example, "vint32m1_t".
+    2.The 'NCHARS' argument is the length of ABI-name.
+      For example, length of "__rvv_int32m1_t" is 15.
+    3.The 'ABI_NAME' argument is the ABI-name. For example, "__rvv_int32m1_t".
+    4.The 'SCALAR_TYPE' argument is associated scalar type which is used in
+      "build_vector_type_for_mode". For "vint32m1_t", we use "intSI_type_node" in
+      RV64. Otherwise, we use "long_integer_type_node".
+    5.The 'VECTOR_MODE' is the machine modes of corresponding RVV type used
+      in "build_vector_type_for_mode" when TARGET_MIN_VLEN > 32.
+      For example: VECTOR_MODE = VNx2SI for "vint32m1_t".
+    6.The 'VECTOR_MODE_MIN_VLEN_32' is the machine modes of corresponding RVV
+      type used in "build_vector_type_for_mode" when TARGET_MIN_VLEN = 32. For
+      example: VECTOR_MODE_MIN_VLEN_32 = VNx1SI for "vint32m1_t".
+    7.The 'VECTOR_SUFFIX' define mode suffix for vector type.
+      For example: type_suffixes[VECTOR_TYPE_vin32m1_t].vector = i32m1.
+    8.The 'SCALAR_SUFFIX' define mode suffix for scalar type.
+      For example: type_suffixes[VECTOR_TYPE_vin32m1_t].scalar = i32.
+    9.The 'VSETVL_SUFFIX' define mode suffix for vsetvli instruction.
+      For example: type_suffixes[VECTOR_TYPE_vin32m1_t].vsetvl = e32m1.
+ */
+ 
+ #ifndef DEF_RVV_TYPE
+ #define DEF_RVV_TYPE(NAME, NCHARS, ABI_NAME, SCALAR_TYPE, VECTOR_MODE,         \
+ 		     VECTOR_MODE_MIN_VLEN_32, VECTOR_SUFFIX, SCALAR_SUFFIX,    \
+ 		     VSETVL_SUFFIX)
+ #endif
+ 
+ /* Use "DEF_RVV_OP_TYPE" macro to define RVV operand types.
+    The 'NAME' will be concatenated into intrinsic function name.  */
+ #ifndef DEF_RVV_OP_TYPE
+ #define DEF_RVV_OP_TYPE(NAME)
+ #endif
+ 
+ /* Use "DEF_RVV_PRED_TYPE" macro to define RVV predication types.
+    The 'NAME' will be concatenated into intrinsic function name.  */
+ #ifndef DEF_RVV_PRED_TYPE
+ #define DEF_RVV_PRED_TYPE(NAME)
+ #endif
+ 
+ /* Use "DEF_RVV_BASE_TYPE" macro to define RVV base types.
+    The 'NAME' will be concatenated into intrinsic function name.  */
+ #ifndef DEF_RVV_BASE_TYPE
+ #define DEF_RVV_BASE_TYPE(NAME, TYPE)
+ #endif
+ 
+ /* Use "DEF_RVV_TYPE_INDEX" macro to define RVV function types.  */
+ #ifndef DEF_RVV_TYPE_INDEX
+ #define DEF_RVV_TYPE_INDEX(VECTOR, MASK, SIGNED, UNSIGNED, EEW8_INDEX, EEW16_INDEX, \
+ 		      EEW32_INDEX, EEW64_INDEX, SHIFT, DOUBLE_TRUNC,           \
+ 		      QUAD_TRUNC, OCT_TRUNC, DOUBLE_TRUNC_SCALAR,              \
+ 		      DOUBLE_TRUNC_SIGNED, DOUBLE_TRUNC_UNSIGNED,              \
+ 		      DOUBLE_TRUNC_UNSIGNED_SCALAR, DOUBLE_TRUNC_FLOAT, FLOAT, \
+ 		      LMUL1, WLMUL1, EEW8_INTERPRET, EEW16_INTERPRET,          \
+ 		      EEW32_INTERPRET, EEW64_INTERPRET, X2_VLMUL_EXT,          \
+ 		      X4_VLMUL_EXT, X8_VLMUL_EXT, X16_VLMUL_EXT,               \
+ 		      X32_VLMUL_EXT, X64_VLMUL_EXT)
+ #endif
+ 
+ /* SEW/LMUL = 64:
+    Only enable when TARGET_MIN_VLEN > 32 and machine mode = VNx1BImode.  */
+ DEF_RVV_TYPE (vbool64_t, 14, __rvv_bool64_t, boolean, VNx1BI, VOID, _b64, , )
+ /* SEW/LMUL = 32:
+    Machine mode = VNx2BImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx1BImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vbool32_t, 14, __rvv_bool32_t, boolean, VNx2BI, VNx1BI, _b32, , )
+ /* SEW/LMUL = 16:
+    Machine mode = VNx2BImode when TARGET_MIN_VLEN = 32.
+    Machine mode = VNx4BImode when TARGET_MIN_VLEN > 32.  */
+ DEF_RVV_TYPE (vbool16_t, 14, __rvv_bool16_t, boolean, VNx4BI, VNx2BI, _b16, , )
+ /* SEW/LMUL = 8:
+    Machine mode = VNx8BImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx4BImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vbool8_t, 13, __rvv_bool8_t, boolean, VNx8BI, VNx4BI, _b8, , )
+ /* SEW/LMUL = 4:
+    Machine mode = VNx16BImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx8BImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vbool4_t, 13, __rvv_bool4_t, boolean, VNx16BI, VNx8BI, _b4, , )
+ /* SEW/LMUL = 2:
+    Machine mode = VNx32BImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx16BImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vbool2_t, 13, __rvv_bool2_t, boolean, VNx32BI, VNx16BI, _b2, , )
+ /* SEW/LMUL = 1:
+    Machine mode = VNx64BImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx32BImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vbool1_t, 13, __rvv_bool1_t, boolean, VNx64BI, VNx32BI, _b1, , )
+ 
+ /* LMUL = 1/8:
+    Only enble when TARGET_MIN_VLEN > 32 and machine mode = VNx1QImode.  */
+ DEF_RVV_TYPE (vint8mf8_t, 15, __rvv_int8mf8_t, int8, VNx1QI, VOID, _i8mf8, _i8,
+ 	      _e8mf8)
+ DEF_RVV_TYPE (vuint8mf8_t, 16, __rvv_uint8mf8_t, uint8, VNx1QI, VOID, _u8mf8,
+ 	      _u8, _e8mf8)
+ /* LMUL = 1/4:
+    Machine mode = VNx2QImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx1QImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint8mf4_t, 15, __rvv_int8mf4_t, int8, VNx2QI, VNx1QI, _i8mf4,
+ 	      _i8, _e8mf4)
+ DEF_RVV_TYPE (vuint8mf4_t, 16, __rvv_uint8mf4_t, uint8, VNx2QI, VNx1QI, _u8mf4,
+ 	      _u8, _e8mf4)
+ /* LMUL = 1/2:
+    Machine mode = VNx4QImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx2QImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint8mf2_t, 15, __rvv_int8mf2_t, int8, VNx4QI, VNx2QI, _i8mf2,
+ 	      _i8, _e8mf2)
+ DEF_RVV_TYPE (vuint8mf2_t, 16, __rvv_uint8mf2_t, uint8, VNx4QI, VNx2QI, _u8mf2,
+ 	      _u8, _e8mf2)
+ /* LMUL = 1:
+    Machine mode = VNx8QImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx4QImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint8m1_t, 14, __rvv_int8m1_t, int8, VNx8QI, VNx4QI, _i8m1, _i8,
+ 	      _e8m1)
+ DEF_RVV_TYPE (vuint8m1_t, 15, __rvv_uint8m1_t, uint8, VNx8QI, VNx4QI, _u8m1,
+ 	      _u8, _e8m1)
+ /* LMUL = 2:
+    Machine mode = VNx16QImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx8QImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint8m2_t, 14, __rvv_int8m2_t, int8, VNx16QI, VNx8QI, _i8m2, _i8,
+ 	      _e8m2)
+ DEF_RVV_TYPE (vuint8m2_t, 15, __rvv_uint8m2_t, uint8, VNx16QI, VNx8QI, _u8m2,
+ 	      _u8, _e8m2)
+ /* LMUL = 4:
+    Machine mode = VNx32QImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx16QImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint8m4_t, 14, __rvv_int8m4_t, int8, VNx32QI, VNx16QI, _i8m4, _i8,
+ 	      _e8m4)
+ DEF_RVV_TYPE (vuint8m4_t, 15, __rvv_uint8m4_t, uint8, VNx32QI, VNx16QI, _u8m4,
+ 	      _u8, _e8m4)
+ /* LMUL = 8:
+    Machine mode = VNx64QImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx32QImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint8m8_t, 14, __rvv_int8m8_t, int8, VNx64QI, VNx32QI, _i8m8, _i8,
+ 	      _e8m8)
+ DEF_RVV_TYPE (vuint8m8_t, 15, __rvv_uint8m8_t, uint8, VNx64QI, VNx32QI, _u8m8,
+ 	      _u8, _e8m8)
+ 
+ /* LMUL = 1/4:
+    Only enble when TARGET_MIN_VLEN > 32 and machine mode = VNx1HImode.  */
+ DEF_RVV_TYPE (vint16mf4_t, 16, __rvv_int16mf4_t, int16, VNx1HI, VOID, _i16mf4,
+ 	      _i16, _e16mf4)
+ DEF_RVV_TYPE (vuint16mf4_t, 17, __rvv_uint16mf4_t, uint16, VNx1HI, VOID,
+ 	      _u16mf4, _u16, _e16mf4)
+ /* LMUL = 1/2:
+    Machine mode = VNx2HImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx1HImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint16mf2_t, 16, __rvv_int16mf2_t, int16, VNx2HI, VNx1HI, _i16mf2,
+ 	      _i16, _e16mf2)
+ DEF_RVV_TYPE (vuint16mf2_t, 17, __rvv_uint16mf2_t, uint16, VNx2HI, VNx1HI,
+ 	      _u16mf2, _u16, _e16mf2)
+ /* LMUL = 1:
+    Machine mode = VNx4HImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx2HImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint16m1_t, 15, __rvv_int16m1_t, int16, VNx4HI, VNx2HI, _i16m1,
+ 	      _i16, _e16m1)
+ DEF_RVV_TYPE (vuint16m1_t, 16, __rvv_uint16m1_t, uint16, VNx4HI, VNx2HI, _u16m1,
+ 	      _u16, _e16m1)
+ /* LMUL = 2:
+    Machine mode = VNx8HImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx4HImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint16m2_t, 15, __rvv_int16m2_t, int16, VNx8HI, VNx4HI, _i16m2,
+ 	      _i16, _e16m2)
+ DEF_RVV_TYPE (vuint16m2_t, 16, __rvv_uint16m2_t, uint16, VNx8HI, VNx4HI, _u16m2,
+ 	      _u16, _e16m2)
+ /* LMUL = 4:
+    Machine mode = VNx16HImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx8HImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint16m4_t, 15, __rvv_int16m4_t, int16, VNx16HI, VNx8HI, _i16m4,
+ 	      _i16, _e16m4)
+ DEF_RVV_TYPE (vuint16m4_t, 16, __rvv_uint16m4_t, uint16, VNx16HI, VNx8HI,
+ 	      _u16m4, _u16, _e16m4)
+ /* LMUL = 8:
+    Machine mode = VNx32HImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx16HImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint16m8_t, 15, __rvv_int16m8_t, int16, VNx32HI, VNx16HI, _i16m8,
+ 	      _i16, _e16m8)
+ DEF_RVV_TYPE (vuint16m8_t, 16, __rvv_uint16m8_t, uint16, VNx32HI, VNx16HI,
+ 	      _u16m8, _u16, _e16m8)
+ 
+ /* LMUL = 1/2:
+    Only enble when TARGET_MIN_VLEN > 32 and machine mode = VNx1SImode.  */
+ DEF_RVV_TYPE (vint32mf2_t, 16, __rvv_int32mf2_t, int32, VNx1SI, VOID, _i32mf2,
+ 	      _i32, _e32mf2)
+ DEF_RVV_TYPE (vuint32mf2_t, 17, __rvv_uint32mf2_t, uint32, VNx1SI, VOID,
+ 	      _u32mf2, _u32, _e32mf2)
+ /* LMUL = 1:
+    Machine mode = VNx2SImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx1SImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint32m1_t, 15, __rvv_int32m1_t, int32, VNx2SI, VNx1SI, _i32m1,
+ 	      _i32, _e32m1)
+ DEF_RVV_TYPE (vuint32m1_t, 16, __rvv_uint32m1_t, uint32, VNx2SI, VNx1SI, _u32m1,
+ 	      _u32, _e32m1)
+ /* LMUL = 2:
+    Machine mode = VNx4SImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx2SImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint32m2_t, 15, __rvv_int32m2_t, int32, VNx4SI, VNx2SI, _i32m2,
+ 	      _i32, _e32m2)
+ DEF_RVV_TYPE (vuint32m2_t, 16, __rvv_uint32m2_t, uint32, VNx4SI, VNx2SI, _u32m2,
+ 	      _u32, _e32m2)
+ /* LMUL = 4:
+    Machine mode = VNx8SImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx4SImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint32m4_t, 15, __rvv_int32m4_t, int32, VNx8SI, VNx4SI, _i32m4,
+ 	      _i32, _e32m4)
+ DEF_RVV_TYPE (vuint32m4_t, 16, __rvv_uint32m4_t, uint32, VNx8SI, VNx4SI, _u32m4,
+ 	      _u32, _e32m4)
+ /* LMUL = 8:
+    Machine mode = VNx16SImode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx8SImode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vint32m8_t, 15, __rvv_int32m8_t, int32, VNx16SI, VNx8SI, _i32m8,
+ 	      _i32, _e32m8)
+ DEF_RVV_TYPE (vuint32m8_t, 16, __rvv_uint32m8_t, uint32, VNx16SI, VNx8SI,
+ 	      _u32m8, _u32, _e32m8)
+ 
+ /* SEW = 64:
+    Enable when TARGET_MIN_VLEN > 32.  */
+ DEF_RVV_TYPE (vint64m1_t, 15, __rvv_int64m1_t, int64, VNx1DI, VOID, _i64m1,
+ 	      _i64, _e64m1)
+ DEF_RVV_TYPE (vuint64m1_t, 16, __rvv_uint64m1_t, uint64, VNx1DI, VOID, _u64m1,
+ 	      _u64, _e64m1)
+ DEF_RVV_TYPE (vint64m2_t, 15, __rvv_int64m2_t, int64, VNx2DI, VOID, _i64m2,
+ 	      _i64, _e64m2)
+ DEF_RVV_TYPE (vuint64m2_t, 16, __rvv_uint64m2_t, uint64, VNx2DI, VOID, _u64m2,
+ 	      _u64, _e64m2)
+ DEF_RVV_TYPE (vint64m4_t, 15, __rvv_int64m4_t, int64, VNx4DI, VOID, _i64m4,
+ 	      _i64, _e64m4)
+ DEF_RVV_TYPE (vuint64m4_t, 16, __rvv_uint64m4_t, uint64, VNx4DI, VOID, _u64m4,
+ 	      _u64, _e64m4)
+ DEF_RVV_TYPE (vint64m8_t, 15, __rvv_int64m8_t, int64, VNx8DI, VOID, _i64m8,
+ 	      _i64, _e64m8)
+ DEF_RVV_TYPE (vuint64m8_t, 16, __rvv_uint64m8_t, uint64, VNx8DI, VOID, _u64m8,
+ 	      _u64, _e64m8)
+ 
+ /* LMUL = 1/2:
+    Only enble when TARGET_MIN_VLEN > 32 and machine mode = VNx1SFmode.  */
+ DEF_RVV_TYPE (vfloat32mf2_t, 18, __rvv_float32mf2_t, float, VNx1SF, VOID,
+ 	      _f32mf2, _f32, _e32mf2)
+ /* LMUL = 1:
+    Machine mode = VNx2SFmode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx1SFmode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vfloat32m1_t, 17, __rvv_float32m1_t, float, VNx2SF, VNx1SF,
+ 	      _f32m1, _f32, _e32m1)
+ /* LMUL = 2:
+    Machine mode = VNx4SFmode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx2SFmode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vfloat32m2_t, 17, __rvv_float32m2_t, float, VNx4SF, VNx2SF,
+ 	      _f32m2, _f32, _e32m2)
+ /* LMUL = 4:
+    Machine mode = VNx8SFmode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx4SFmode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vfloat32m4_t, 17, __rvv_float32m4_t, float, VNx8SF, VNx4SF,
+ 	      _f32m4, _f32, _e32m4)
+ /* LMUL = 8:
+    Machine mode = VNx16SFmode when TARGET_MIN_VLEN > 32.
+    Machine mode = VNx8SFmode when TARGET_MIN_VLEN = 32.  */
+ DEF_RVV_TYPE (vfloat32m8_t, 17, __rvv_float32m8_t, float, VNx16SF, VNx8SF,
+ 	      _f32m8, _f32, _e32m8)
+ 
+ /* SEW = 64:
+    Enable when TARGET_VECTOR_FP64.  */
+ DEF_RVV_TYPE (vfloat64m1_t, 17, __rvv_float64m1_t, double, VNx1DF, VOID, _f64m1,
+ 	      _f64, _e64m1)
+ DEF_RVV_TYPE (vfloat64m2_t, 17, __rvv_float64m2_t, double, VNx2DF, VOID, _f64m2,
+ 	      _f64, _e64m2)
+ DEF_RVV_TYPE (vfloat64m4_t, 17, __rvv_float64m4_t, double, VNx4DF, VOID, _f64m4,
+ 	      _f64, _e64m4)
+ DEF_RVV_TYPE (vfloat64m8_t, 17, __rvv_float64m8_t, double, VNx8DF, VOID, _f64m8,
+ 	      _f64, _e64m8)
+ 
+ DEF_RVV_OP_TYPE (vv)
+ DEF_RVV_OP_TYPE (vx)
+ DEF_RVV_OP_TYPE (v)
+ DEF_RVV_OP_TYPE (wv)
+ DEF_RVV_OP_TYPE (wx)
+ DEF_RVV_OP_TYPE (x_v)
+ DEF_RVV_OP_TYPE (vf2)
+ DEF_RVV_OP_TYPE (vf4)
+ DEF_RVV_OP_TYPE (vf8)
+ DEF_RVV_OP_TYPE (vvm)
+ DEF_RVV_OP_TYPE (vxm)
+ DEF_RVV_OP_TYPE (x_w)
+ DEF_RVV_OP_TYPE (x)
+ DEF_RVV_OP_TYPE (vs)
+ DEF_RVV_OP_TYPE (mm)
+ DEF_RVV_OP_TYPE (m)
+ DEF_RVV_OP_TYPE (vf)
+ DEF_RVV_OP_TYPE (vm)
+ DEF_RVV_OP_TYPE (wf)
+ DEF_RVV_OP_TYPE (vfm)
+ DEF_RVV_OP_TYPE (f)
+ DEF_RVV_OP_TYPE (f_v)
+ DEF_RVV_OP_TYPE (xu_v)
+ DEF_RVV_OP_TYPE (f_w)
+ DEF_RVV_OP_TYPE (xu_w)
+ DEF_RVV_OP_TYPE (s)
+ 
+ DEF_RVV_PRED_TYPE (ta)
+ DEF_RVV_PRED_TYPE (tu)
+ DEF_RVV_PRED_TYPE (ma)
+ DEF_RVV_PRED_TYPE (mu)
+ DEF_RVV_PRED_TYPE (tama)
+ DEF_RVV_PRED_TYPE (tamu)
+ DEF_RVV_PRED_TYPE (tuma)
+ DEF_RVV_PRED_TYPE (tumu)
+ DEF_RVV_PRED_TYPE (m)
+ DEF_RVV_PRED_TYPE (tam)
+ DEF_RVV_PRED_TYPE (tum)
+ 
+ DEF_RVV_BASE_TYPE (vector, builtin_types[type_idx].vector)
+ DEF_RVV_BASE_TYPE (scalar, builtin_types[type_idx].scalar)
+ DEF_RVV_BASE_TYPE (mask, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (signed_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (unsigned_vector, get_vector_type (type_idx))
+ /* According to riscv-vector-builtins-types.def, the unsigned
+    type is always the signed type + 1 (They have same SEW and LMUL).
+    For example 'vuint8mf8_t' enum = 'vint8mf8_t' enum + 1.
+    Note: We dont't allow type_idx to be unsigned type.  */
+ DEF_RVV_BASE_TYPE (unsigned_scalar, builtin_types[type_idx + 1].scalar)
+ DEF_RVV_BASE_TYPE (vector_ptr, builtin_types[type_idx].vector_ptr)
+ /* According to the latest rvv-intrinsic-doc, it defines vsm.v intrinsic:
+    __riscv_vsm (uint8_t *base, vbool1_t value, size_t vl).  */
+ DEF_RVV_BASE_TYPE (scalar_ptr, get_scalar_ptr_type (type_idx))
+ /* According to the latest rvv-intrinsic-doc, it defines vlm.v intrinsic:
+    __riscv_vlm_v_b1 (const uint8_t *base, size_t vl).  */
+ DEF_RVV_BASE_TYPE (scalar_const_ptr, get_scalar_const_ptr_type (type_idx))
+ DEF_RVV_BASE_TYPE (void, void_type_node)
+ DEF_RVV_BASE_TYPE (size, size_type_node)
+ DEF_RVV_BASE_TYPE (ptrdiff, ptrdiff_type_node)
+ DEF_RVV_BASE_TYPE (unsigned_long, long_unsigned_type_node)
+ DEF_RVV_BASE_TYPE (long, long_integer_type_node)
+ DEF_RVV_BASE_TYPE (eew8_index, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew16_index, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew32_index, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew64_index, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (shift_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (double_trunc_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (quad_trunc_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (oct_trunc_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (double_trunc_scalar, get_scalar_type (type_idx))
+ DEF_RVV_BASE_TYPE (double_trunc_signed_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (double_trunc_unsigned_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (double_trunc_unsigned_scalar, get_scalar_type (type_idx))
+ DEF_RVV_BASE_TYPE (double_trunc_float_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (float_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (lmul1_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (widen_lmul1_vector, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew8_interpret, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew16_interpret, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew32_interpret, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (eew64_interpret, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (vlmul_ext_x2, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (vlmul_ext_x4, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (vlmul_ext_x8, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (vlmul_ext_x16, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (vlmul_ext_x32, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (vlmul_ext_x64, get_vector_type (type_idx))
+ DEF_RVV_BASE_TYPE (size_ptr, build_pointer_type (size_type_node))
+ 
+ #include "riscv-vector-type-indexer.gen.def"
+ 
+ #undef DEF_RVV_PRED_TYPE
+ #undef DEF_RVV_OP_TYPE
+ #undef DEF_RVV_TYPE
+ #undef DEF_RVV_BASE_TYPE
+ #undef DEF_RVV_TYPE_INDEX
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins.h gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins.h
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-builtins.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,660 ----
+ /* Builtins definitions for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful, but
+    WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_RISCV_VECTOR_BUILTINS_H
+ #define GCC_RISCV_VECTOR_BUILTINS_H
+ 
+ /* The full name of an RVV intrinsic function is the concatenation of:
+ 
+    - the base name ("vadd", etc.)
+    - the operand suffix ("_vv", "_vx", etc.)
+    - the type suffix ("_i32m1", "_i32mf2", etc.)
+    - the predication suffix ("_tamu", "_tumu", etc.)
+ 
+    Each piece of information is individually useful, so we retain this
+    classification throughout:
+ 
+    - function_base represents the base name.
+ 
+    - operand_type_index can be used as an index to get operand suffix.
+ 
+    - rvv_op_info can be used as an index to get argument suffix.
+ 
+    - predication_type_index can be used as an index to get predication suffix.
+ 
+    In addition to its unique full name, a function may have a shorter
+    overloaded alias.  This alias removes pieces of the suffixes that
+    can be inferred from the arguments, such as by shortening the mode
+    suffix or dropping some of the type suffixes.  The base name and the
+    predication suffix stay the same.
+ 
+    - The function_instance class describes contains all properties of each
+      individual function. Such these information will be used by
+      function_builder, function_base, function_shape, gimple_folder,
+      function_expander, etc.
+ 
+    - The function_builder class provides several helper function to add an
+      intrinsic function.
+ 
+    - The function_shape class describes how that instruction has been presented
+      at the language level:
+ 
+       1. Determine the function name for C and C++ overload function which can
+ 	 be recognized by compiler at language level for each instruction
+ 	 according to members of function_instance (base name, operand suffix,
+ 	 type suffix, predication suffix, etc.).
+ 
+       2. Specify the arguments type and return type of each function to
+ 	 describe how that instruction has presented at language level.
+ 
+    - The function_base describes how the underlying instruction behaves.
+ 
+    The static list of functions uses function_group to describe a group
+    of related functions.  The function_builder class is responsible for
+    expanding this static description into a list of individual functions
+    and registering the associated built-in functions.  function_instance
+    describes one of these individual functions in terms of the properties
+    described above.
+ 
+    The classes involved in compiling a function call are:
+ 
+    - function_resolver, which resolves an overloaded function call to a
+      specific function_instance and its associated function decl.
+ 
+    - function_checker, which checks whether the values of the arguments
+      conform to the RVV ISA specification.
+ 
+    - gimple_folder, which tries to fold a function call at the gimple level
+ 
+    - function_expander, which expands a function call into rtl instructions
+ 
+    function_resolver and function_checker operate at the language level
+    and so are associated with the function_shape.  gimple_folder and
+    function_expander are concerned with the behavior of the function
+    and so are associated with the function_base.  */
+ 
+ namespace riscv_vector {
+ 
+ /* Flags that describe what a function might do, in addition to reading
+    its arguments and returning a result.  */
+ static const unsigned int CP_READ_FPCR = 1U << 0;
+ static const unsigned int CP_RAISE_FP_EXCEPTIONS = 1U << 1;
+ static const unsigned int CP_READ_MEMORY = 1U << 2;
+ static const unsigned int CP_WRITE_MEMORY = 1U << 3;
+ static const unsigned int CP_READ_CSR = 1U << 4;
+ static const unsigned int CP_WRITE_CSR = 1U << 5;
+ 
+ /* Bit values used to identify required extensions for RVV intrinsics.  */
+ #define RVV_REQUIRE_RV64BIT (1 << 0)	/* Require RV64.  */
+ #define RVV_REQUIRE_ELEN_64 (1 << 1)	/* Require TARGET_VECTOR_ELEN_64.  */
+ #define RVV_REQUIRE_ELEN_FP_32 (1 << 2) /* Require FP ELEN >= 32.  */
+ #define RVV_REQUIRE_ELEN_FP_64 (1 << 3) /* Require FP ELEN >= 64.  */
+ #define RVV_REQUIRE_FULL_V (1 << 4) /* Require Full 'V' extension.  */
+ #define RVV_REQUIRE_MIN_VLEN_64 (1 << 5)	/* Require TARGET_MIN_VLEN >= 64.  */
+ 
+ /* Enumerates the RVV operand types.  */
+ enum operand_type_index
+ {
+   OP_TYPE_none,
+ #define DEF_RVV_OP_TYPE(NAME) OP_TYPE_##NAME,
+ #include "riscv-vector-builtins.def"
+   NUM_OP_TYPES
+ };
+ 
+ /* Enumerates the RVV types, together called
+    "vector types" for brevity.  */
+ enum vector_type_index
+ {
+ #define DEF_RVV_TYPE(NAME, ABI_NAME, NCHARS, ARGS...) VECTOR_TYPE_##NAME,
+ #include "riscv-vector-builtins.def"
+   NUM_VECTOR_TYPES,
+   VECTOR_TYPE_INVALID = NUM_VECTOR_TYPES
+ };
+ 
+ /* Enumerates the RVV governing predication types.  */
+ enum predication_type_index
+ {
+   PRED_TYPE_none,
+ #define DEF_RVV_PRED_TYPE(NAME) PRED_TYPE_##NAME,
+ #include "riscv-vector-builtins.def"
+   NUM_PRED_TYPES
+ };
+ 
+ /* Enumerates the RVV base types.  */
+ enum rvv_base_type
+ {
+ #define DEF_RVV_BASE_TYPE(NAME, ARGS...) RVV_BASE_##NAME,
+ #include "riscv-vector-builtins.def"
+   NUM_BASE_TYPES
+ };
+ 
+ /* Builtin types that are used to register RVV intrinsics.  */
+ struct GTY (()) rvv_builtin_types_t
+ {
+   tree vector;
+   tree scalar;
+   tree vector_ptr;
+   tree scalar_ptr;
+   tree scalar_const_ptr;
+ };
+ 
+ /* Builtin suffix that are used to register RVV intrinsics.  */
+ struct rvv_builtin_suffixes
+ {
+   const char *vector;
+   const char *scalar;
+   const char *vsetvl;
+ };
+ 
+ /* Builtin base type used to specify the type of builtin function
+    argument or return result.  */
+ struct function_type_info
+ {
+   enum vector_type_index type_indexes[NUM_BASE_TYPES];
+ };
+ 
+ /* RVV Builtin argument information.  */
+ struct rvv_arg_type_info
+ {
+   CONSTEXPR rvv_arg_type_info (rvv_base_type base_type_in)
+     : base_type (base_type_in)
+   {}
+   enum rvv_base_type base_type;
+ 
+   tree get_scalar_ptr_type (vector_type_index) const;
+   tree get_scalar_const_ptr_type (vector_type_index) const;
+   vector_type_index get_function_type_index (vector_type_index) const;
+   tree get_scalar_type (vector_type_index) const;
+   tree get_vector_type (vector_type_index) const;
+   tree get_tree_type (vector_type_index) const;
+ };
+ 
+ /* Static information for each operand.  */
+ struct rvv_type_info
+ {
+   enum vector_type_index index;
+   uint64_t required_extensions;
+ };
+ 
+ /* RVV Builtin operands information.  */
+ struct rvv_op_info
+ {
+   const rvv_type_info *types;
+   const operand_type_index op;
+   rvv_arg_type_info ret;
+   const rvv_arg_type_info *args;
+ };
+ 
+ class registered_function;
+ class function_base;
+ class function_shape;
+ 
+ /* Static information about a set of functions.  */
+ struct function_group_info
+ {
+   /* The base name, as a string.  */
+   const char *base_name;
+ 
+   /* Describes the behavior associated with the function base name.  */
+   const function_base *const *base;
+ 
+   /* The shape of the functions, as described above the class definition.
+      It's possible to have entries with the same base name but different
+      shapes.  */
+   const function_shape *const *shape;
+ 
+   /* A list of the available operand types, predication types,
+      and of the available operand datatype.
+      The function supports every combination of the two.
+      The list of predication is terminated by two NUM_PRED_TYPES,
+      while the list of operand info is terminated by NUM_BASE_TYPES.
+      The list of these type suffix is lexicographically ordered based
+      on the index value.  */
+   const predication_type_index *preds;
+   const rvv_op_info ops_infos;
+ };
+ 
+ class GTY ((user)) function_instance
+ {
+ public:
+   function_instance (const char *, const function_base *,
+ 		     const function_shape *, rvv_type_info,
+ 		     predication_type_index, const rvv_op_info *);
+ 
+   bool operator== (const function_instance &) const;
+   bool operator!= (const function_instance &) const;
+   hashval_t hash () const;
+ 
+   unsigned int call_properties () const;
+   bool reads_global_state_p () const;
+   bool modifies_global_state_p () const;
+   bool could_trap_p () const;
+ 
+   /* Return true if return type or arguments are floating point type.  */
+   bool any_type_float_p () const;
+ 
+   tree get_return_type () const;
+   tree get_arg_type (unsigned opno) const;
+ 
+   /* The properties of the function.  (The explicit "enum"s are required
+      for gengtype.)  */
+   const char *base_name;
+   const function_base *base;
+   const function_shape *shape;
+   rvv_type_info type;
+   enum predication_type_index pred;
+   const rvv_op_info *op_info;
+ };
+ 
+ /* A class for building and registering function decls.  */
+ class function_builder
+ {
+ public:
+   function_builder ();
+   ~function_builder ();
+ 
+   void allocate_argument_types (const function_instance &, vec<tree> &) const;
+   void apply_predication (const function_instance &, tree, vec<tree> &) const;
+   void add_unique_function (const function_instance &, const function_shape *,
+ 			    tree, vec<tree> &);
+   void register_function_group (const function_group_info &);
+   void append_name (const char *);
+   void append_base_name (const char *);
+   void append_sew (int);
+   char *finish_name ();
+ 
+ private:
+   tree get_attributes (const function_instance &);
+ 
+   registered_function &add_function (const function_instance &, const char *,
+ 				     tree, tree, bool);
+ 
+   /* True if we should create a separate decl for each instance of an
+      overloaded function, instead of using function_builder.  */
+   bool m_direct_overloads;
+ 
+   /* Used for building up function names.  */
+   obstack m_string_obstack;
+ };
+ 
+ /* A base class for handling calls to built-in functions.  */
+ class function_call_info : public function_instance
+ {
+ public:
+   function_call_info (location_t, const function_instance &, tree);
+ 
+   bool function_returns_void_p ();
+ 
+   /* The location of the call.  */
+   location_t location;
+ 
+   /* The FUNCTION_DECL that is being called.  */
+   tree fndecl;
+ };
+ 
+ /* Return true if the function has no return value.  */
+ inline bool
+ function_call_info::function_returns_void_p ()
+ {
+   return TREE_TYPE (TREE_TYPE (fndecl)) == void_type_node;
+ }
+ 
+ /* A class for folding a gimple function call.  */
+ class gimple_folder : public function_call_info
+ {
+ public:
+   gimple_folder (const function_instance &, tree, gimple_stmt_iterator *,
+ 		 gcall *);
+ 
+   gimple *fold ();
+ 
+   /* Where to insert extra statements that feed the final replacement.  */
+   gimple_stmt_iterator *gsi;
+ 
+   /* The call we're folding.  */
+   gcall *call;
+ 
+   /* The result of the call, or null if none.  */
+   tree lhs;
+ };
+ 
+ /* A class for expanding a function call into RTL.  */
+ class function_expander : public function_call_info
+ {
+ public:
+   function_expander (const function_instance &, tree, tree, rtx);
+   rtx expand ();
+ 
+   void add_input_operand (machine_mode, rtx);
+   void add_input_operand (unsigned);
+   void add_output_operand (machine_mode, rtx);
+   void add_all_one_mask_operand (machine_mode);
+   void add_scalar_move_mask_operand (machine_mode);
+   void add_vundef_operand (machine_mode);
+   void add_fixed_operand (rtx);
+   void add_integer_operand (rtx);
+   void add_mem_operand (machine_mode, unsigned);
+ 
+   machine_mode vector_mode (void) const;
+   machine_mode index_mode (void) const;
+   machine_mode arg_mode (int) const;
+   machine_mode mask_mode (void) const;
+   machine_mode ret_mode (void) const;
+ 
+   rtx use_exact_insn (insn_code);
+   rtx use_contiguous_load_insn (insn_code);
+   rtx use_contiguous_store_insn (insn_code);
+   rtx use_compare_insn (rtx_code, insn_code);
+   rtx use_ternop_insn (bool, insn_code);
+   rtx use_widen_ternop_insn (insn_code);
+   rtx use_scalar_move_insn (insn_code);
+   rtx generate_insn (insn_code);
+ 
+   /* The function call expression.  */
+   tree exp;
+ 
+   /* For functions that return a value, this is the preferred location
+      of that value.  It could be null or could have a different mode
+      from the function return type.  */
+   rtx target;
+ 
+   /* The number of the operands.  */
+   int opno;
+ 
+ private:
+   /* Used to build up the operands to an instruction.  */
+   struct expand_operand m_ops[MAX_RECOG_OPERANDS];
+ };
+ 
+ /* Provides information about a particular function base name, and handles
+    tasks related to the base name.  */
+ class function_base
+ {
+ public:
+   /* Return a set of CP_* flags that describe what the function might do,
+      in addition to reading its arguments and returning a result.  */
+   virtual unsigned int call_properties (const function_instance &) const;
+ 
+   /* Return true if intrinsics should apply vl operand.  */
+   virtual bool apply_vl_p () const;
+ 
+   /* Return true if intrinsics should apply tail policy operand.  */
+   virtual bool apply_tail_policy_p () const;
+ 
+   /* Return true if intrinsics should apply mask policy operand.  */
+   virtual bool apply_mask_policy_p () const;
+ 
+   /* Return true if intrinsic can be overloaded.  */
+   virtual bool can_be_overloaded_p (enum predication_type_index) const;
+ 
+   /* Return true if intrinsics use mask predication.  */
+   virtual bool use_mask_predication_p () const;
+ 
+   /* Return true if intrinsics has merge operand.  */
+   virtual bool has_merge_operand_p () const;
+ 
+   /* Try to fold the given gimple call.  Return the new gimple statement
+      on success, otherwise return null.  */
+   virtual gimple *fold (gimple_folder &) const { return NULL; }
+ 
+   /* Expand the given call into rtl.  Return the result of the function,
+      or an arbitrary value if the function doesn't return a result.  */
+   virtual rtx expand (function_expander &) const = 0;
+ };
+ 
+ /* A class for checking that the semantic constraints on a function call are
+    satisfied, such as arguments being integer constant expressions with
+    a particular range.  The parent class's FNDECL is the decl that was
+    called in the original source, before overload resolution.  */
+ class function_checker : public function_call_info
+ {
+ public:
+   function_checker (location_t, const function_instance &, tree, tree,
+ 		    unsigned int, tree *);
+ 
+   machine_mode arg_mode (unsigned int) const;
+   machine_mode ret_mode (void) const;
+   bool check (void);
+ 
+   bool require_immediate (unsigned int, HOST_WIDE_INT, HOST_WIDE_INT) const;
+ 
+ private:
+   bool require_immediate_range (unsigned int, HOST_WIDE_INT,
+ 				HOST_WIDE_INT) const;
+   void report_non_ice (unsigned int) const;
+   void report_out_of_range (unsigned int, HOST_WIDE_INT, HOST_WIDE_INT,
+ 			    HOST_WIDE_INT) const;
+ 
+   /* The type of the resolved function.  */
+   tree m_fntype;
+ 
+   /* The arguments to the function.  */
+   unsigned int m_nargs;
+   tree *m_args;
+ };
+ 
+ /* Classifies functions into "shapes" base on:
+ 
+    - Base name of the intrinsic function.
+ 
+    - Operand types list.
+ 
+    - Argument type list.
+ 
+    - Predication type list.  */
+ class function_shape
+ {
+ public:
+   /* Shape the function name according to function_instance.  */
+   virtual char *get_name (function_builder &, const function_instance &,
+ 			  bool) const
+     = 0;
+ 
+   /* Define all functions associated with the given group.  */
+   virtual void build (function_builder &, const function_group_info &) const
+     = 0;
+ 
+   /* Check whether the given call is semantically valid.  Return true
+    if it is, otherwise report an error and return false.  */
+   virtual bool check (function_checker &) const { return true; }
+ };
+ 
+ extern const char *const operand_suffixes[NUM_OP_TYPES];
+ extern const rvv_builtin_suffixes type_suffixes[NUM_VECTOR_TYPES + 1];
+ extern const char *const predication_suffixes[NUM_PRED_TYPES];
+ extern rvv_builtin_types_t builtin_types[NUM_VECTOR_TYPES + 1];
+ extern function_instance get_read_vl_instance (void);
+ extern tree get_read_vl_decl (void);
+ 
+ inline tree
+ rvv_arg_type_info::get_scalar_type (vector_type_index type_idx) const
+ {
+   return get_function_type_index (type_idx) == VECTOR_TYPE_INVALID
+ 	   ? NULL_TREE
+ 	   : builtin_types[get_function_type_index (type_idx)].scalar;
+ }
+ 
+ inline tree
+ rvv_arg_type_info::get_vector_type (vector_type_index type_idx) const
+ {
+   return get_function_type_index (type_idx) == VECTOR_TYPE_INVALID
+ 	   ? NULL_TREE
+ 	   : builtin_types[get_function_type_index (type_idx)].vector;
+ }
+ 
+ inline bool
+ function_instance::operator!= (const function_instance &other) const
+ {
+   return !operator== (other);
+ }
+ 
+ /* Expand the call and return its lhs.  */
+ inline rtx
+ function_expander::expand ()
+ {
+   return base->expand (*this);
+ }
+ 
+ /* Create op and add it into M_OPS and increase OPNO.  */
+ inline void
+ function_expander::add_input_operand (machine_mode mode, rtx op)
+ {
+   create_input_operand (&m_ops[opno++], op, mode);
+ }
+ 
+ /* Create output and add it into M_OPS and increase OPNO.  */
+ inline void
+ function_expander::add_output_operand (machine_mode mode, rtx target)
+ {
+   create_output_operand (&m_ops[opno++], target, mode);
+ }
+ 
+ /* Since we may normalize vop/vop_tu/vop_m/vop_tumu.. into a single patter.
+    We add a fake all true mask for the intrinsics that don't need a real mask.
+  */
+ inline void
+ function_expander::add_all_one_mask_operand (machine_mode mode)
+ {
+   add_input_operand (mode, CONSTM1_RTX (mode));
+ }
+ 
+ /* Add mask operand for scalar move instruction.  */
+ inline void
+ function_expander::add_scalar_move_mask_operand (machine_mode mode)
+ {
+   add_input_operand (mode, gen_scalar_move_mask (mode));
+ }
+ 
+ /* Add an operand that must be X.  The only way of legitimizing an
+    invalid X is to reload the address of a MEM.  */
+ inline void
+ function_expander::add_fixed_operand (rtx x)
+ {
+   create_fixed_operand (&m_ops[opno++], x);
+ }
+ 
+ /* Add an integer operand X.  */
+ inline void
+ function_expander::add_integer_operand (rtx x)
+ {
+   create_integer_operand (&m_ops[opno++], INTVAL (x));
+ }
+ 
+ /* Return the machine_mode of the corresponding vector type.  */
+ inline machine_mode
+ function_expander::vector_mode (void) const
+ {
+   return TYPE_MODE (builtin_types[type.index].vector);
+ }
+ 
+ /* Return the machine_mode of the corresponding index type.  */
+ inline machine_mode
+ function_expander::index_mode (void) const
+ {
+   return TYPE_MODE (op_info->args[1].get_tree_type (type.index));
+ }
+ 
+ /* Return the machine_mode of the corresponding arg type.  */
+ inline machine_mode
+ function_expander::arg_mode (int idx) const
+ {
+   return TYPE_MODE (op_info->args[idx].get_tree_type (type.index));
+ }
+ 
+ /* Return the machine_mode of the corresponding return type.  */
+ inline machine_mode
+ function_expander::ret_mode (void) const
+ {
+   return TYPE_MODE (op_info->ret.get_tree_type (type.index));
+ }
+ 
+ inline machine_mode
+ function_checker::arg_mode (unsigned int argno) const
+ {
+   return TYPE_MODE (TREE_TYPE (m_args[argno]));
+ }
+ 
+ inline machine_mode
+ function_checker::ret_mode () const
+ {
+   return TYPE_MODE (TREE_TYPE (TREE_TYPE (fndecl)));
+ }
+ 
+ /* Default implementation of function_base::call_properties, with conservatively
+    correct behavior for floating-point instructions.  */
+ inline unsigned int
+ function_base::call_properties (const function_instance &instance) const
+ {
+   unsigned int flags = 0;
+   if (instance.any_type_float_p ())
+     return flags | CP_READ_FPCR | CP_RAISE_FP_EXCEPTIONS;
+   return flags;
+ }
+ 
+ /* We choose to apply vl operand by default since most of the intrinsics
+    has vl operand.  */
+ inline bool
+ function_base::apply_vl_p () const
+ {
+   return true;
+ }
+ 
+ /* We choose to apply tail policy operand by default since most of the
+    intrinsics has tail policy operand.  */
+ inline bool
+ function_base::apply_tail_policy_p () const
+ {
+   return true;
+ }
+ 
+ /* We choose to apply mask policy operand by default since most of the
+    intrinsics has mask policy operand.  */
+ inline bool
+ function_base::apply_mask_policy_p () const
+ {
+   return true;
+ }
+ 
+ /* We choose to return true by default since most of the intrinsics use
+    mask predication.  */
+ inline bool
+ function_base::use_mask_predication_p () const
+ {
+   return true;
+ }
+ 
+ /* We choose to return true by default since most of the intrinsics use
+    has merge operand.  */
+ inline bool
+ function_base::has_merge_operand_p () const
+ {
+   return true;
+ }
+ 
+ /* Since most of intrinsics can be overloaded, we set it true by default.  */
+ inline bool
+ function_base::can_be_overloaded_p (enum predication_type_index) const
+ {
+   return true;
+ }
+ 
+ } // end namespace riscv_vector
+ 
+ #endif
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vector-switch.def gcc-13.1.0/gcc/config/riscv/riscv-vector-switch.def
*** gcc-12.2.0/gcc/config/riscv/riscv-vector-switch.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vector-switch.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,149 ----
+ /* Machine mode switch for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Ju-Zhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* This file is enable or disable the RVV modes according '-march'.  */
+ 
+ /* According to rvv-intrinsic and RISC-V 'V' Extension ISA document:
+    https://github.com/riscv-non-isa/rvv-intrinsic-doc/blob/master/rvv-intrinsic-rfc.md.
+    https://github.com/riscv/riscv-v-spec/blob/master/v-spec.adoc.
+ 
+    Data Types
+    Encode SEW and LMUL into data types.
+    We enforce the constraint LMUL ≥ SEW/ELEN in the implementation.
+    There are the following data types for MIN_VLEN > 32.
+ 
+ Note: N/A means the corresponding vector type is disabled.
+ 
+ |Types   |LMUL=1|LMUL=2 |LMUL=4 |LMUL=8 |LMUL=1/2|LMUL=1/4|LMUL=1/8|
+ |int64_t |VNx1DI|VNx2DI |VNx4DI |VNx8DI |N/A     |N/A     |N/A     |
+ |uint64_t|VNx1DI|VNx2DI |VNx4DI |VNx8DI |N/A     |N/A     |N/A     |
+ |int32_t |VNx2SI|VNx4SI |VNx8SI |VNx16SI|VNx1SI  |N/A     |N/A     |
+ |uint32_t|VNx2SI|VNx4SI |VNx8SI |VNx16SI|VNx1SI  |N/A     |N/A     |
+ |int16_t |VNx4HI|VNx8HI |VNx16HI|VNx32HI|VNx2HI  |VNx1HI  |N/A     |
+ |uint16_t|VNx4HI|VNx8HI |VNx16HI|VNx32HI|VNx2HI  |VNx1HI  |N/A     |
+ |int8_t  |VNx8QI|VNx16QI|VNx32QI|VNx64QI|VNx4QI  |VNx2QI  |VNx1QI  |
+ |uint8_t |VNx8QI|VNx16QI|VNx32QI|VNx64QI|VNx4QI  |VNx2QI  |VNx1QI  |
+ |float64 |VNx1DF|VNx2DF |VNx4DF |VNx8DF |N/A     |N/A     |N/A     |
+ |float32 |VNx2SF|VNx4SF |VNx8SF |VNx16SF|VNx1SF  |N/A     |N/A     |
+ |float16 |VNx4HF|VNx8HF |VNx16HF|VNx32HF|VNx2HF  |VNx1HF  |N/A     |
+ 
+ Mask Types Encode the ratio of SEW/LMUL into the
+ mask types. There are the following mask types.
+ 
+ n = SEW/LMUL
+ 
+ |Types|n=1    |n=2    |n=4    |n=8   |n=16  |n=32  |n=64  |
+ |bool |VNx64BI|VNx32BI|VNx16BI|VNx8BI|VNx4BI|VNx2BI|VNx1BI|
+ 
+ There are the following data types for MIN_VLEN = 32.
+ 
+ |Types   |LMUL=1|LMUL=2|LMUL=4 |LMUL=8 |LMUL=1/2|LMUL=1/4|LMUL=1/8|
+ |int64_t |N/A   |N/A   |N/A    |N/A    |N/A     |N/A     |N/A     |
+ |uint64_t|N/A   |N/A   |N/A    |N/A    |N/A     |N/A     |N/A     |
+ |int32_t |VNx1SI|VNx2SI|VNx4SI |VNx8SI |N/A     |N/A     |N/A     |
+ |uint32_t|VNx1SI|VNx2SI|VNx4SI |VNx8SI |N/A     |N/A     |N/A     |
+ |int16_t |VNx2HI|VNx4HI|VNx8HI |VNx16HI|VNx1HI  |N/A     |N/A     |
+ |uint16_t|VNx2HI|VNx4HI|VNx8HI |VNx16HI|VNx1HI  |N/A     |N/A     |
+ |int8_t  |VNx4QI|VNx8QI|VNx16QI|VNx32QI|VNx2QI  |VNx1QI  |N/A     |
+ |uint8_t |VNx4QI|VNx8QI|VNx16QI|VNx32QI|VNx2QI  |VNx1QI  |N/A     |
+ |float64 |N/A   |N/A   |N/A    |N/A    |N/A     |N/A     |N/A     |
+ |float32 |VNx1SF|VNx2SF|VNx4SF |VNx8SF |N/A     |N/A     |N/A     |
+ |float16 |VNx2HF|VNx4HF|VNx8HF |VNx16HF|VNx1HF  |N/A     |N/A     |
+ 
+ Mask Types Encode the ratio of SEW/LMUL into the
+ mask types. There are the following mask types.
+ 
+ n = SEW/LMUL
+ 
+ |Types|n=1    |n=2    |n=4   |n=8   |n=16  |n=32  |n=64|
+ |bool |VNx32BI|VNx16BI|VNx8BI|VNx4BI|VNx2BI|VNx1BI|N/A |
+ 
+ TODO: FP16 vector needs support of 'zvfh', we don't support it yet.  */
+ 
+ /* Return 'REQUIREMENT' for machine_mode 'MODE'.
+    For example: 'MODE' = VNx64BImode needs TARGET_MIN_VLEN > 32.  */
+ #ifndef ENTRY
+ #define ENTRY(MODE, REQUIREMENT, VLMUL_FOR_MIN_VLEN32, RATIO_FOR_MIN_VLEN32,   \
+ 	      VLMUL_FOR_MIN_VLEN64, RATIO_FOR_MIN_VLEN64)
+ #endif
+ 
+ /* Mask modes. Disable VNx64BImode when TARGET_MIN_VLEN == 32.  */
+ ENTRY (VNx64BI, TARGET_MIN_VLEN > 32, LMUL_RESERVED, 0, LMUL_8, 1)
+ ENTRY (VNx32BI, true, LMUL_8, 1, LMUL_4, 2)
+ ENTRY (VNx16BI, true, LMUL_4, 2, LMUL_2, 4)
+ ENTRY (VNx8BI, true, LMUL_2, 4, LMUL_1, 8)
+ ENTRY (VNx4BI, true, LMUL_1, 8, LMUL_F2, 16)
+ ENTRY (VNx2BI, true, LMUL_F2, 16, LMUL_F4, 32)
+ ENTRY (VNx1BI, true, LMUL_F4, 32, LMUL_F8, 64)
+ 
+ /* SEW = 8. Disable VNx64QImode when TARGET_MIN_VLEN == 32.  */
+ ENTRY (VNx64QI, TARGET_MIN_VLEN > 32, LMUL_RESERVED, 0, LMUL_8, 1)
+ ENTRY (VNx32QI, true, LMUL_8, 1, LMUL_4, 2)
+ ENTRY (VNx16QI, true, LMUL_4, 2, LMUL_2, 4)
+ ENTRY (VNx8QI, true, LMUL_2, 4, LMUL_1, 8)
+ ENTRY (VNx4QI, true, LMUL_1, 8, LMUL_F2, 16)
+ ENTRY (VNx2QI, true, LMUL_F2, 16, LMUL_F4, 32)
+ ENTRY (VNx1QI, true, LMUL_F4, 32, LMUL_F8, 64)
+ 
+ /* SEW = 16. Disable VNx32HImode when TARGET_MIN_VLEN == 32.  */
+ ENTRY (VNx32HI, TARGET_MIN_VLEN > 32, LMUL_RESERVED, 0, LMUL_8, 2)
+ ENTRY (VNx16HI, true, LMUL_8, 2, LMUL_4, 4)
+ ENTRY (VNx8HI, true, LMUL_4, 4, LMUL_2, 8)
+ ENTRY (VNx4HI, true, LMUL_2, 8, LMUL_1, 16)
+ ENTRY (VNx2HI, true, LMUL_1, 16, LMUL_F2, 32)
+ ENTRY (VNx1HI, true, LMUL_F2, 32, LMUL_F4, 64)
+ 
+ /* TODO:Disable all FP16 vector, enable them when 'zvfh' is supported.  */
+ ENTRY (VNx32HF, false, LMUL_RESERVED, 0, LMUL_8, 2)
+ ENTRY (VNx16HF, false, LMUL_8, 2, LMUL_4, 4)
+ ENTRY (VNx8HF, false, LMUL_4, 4, LMUL_2, 8)
+ ENTRY (VNx4HF, false, LMUL_2, 8, LMUL_1, 16)
+ ENTRY (VNx2HF, false, LMUL_1, 16, LMUL_F2, 32)
+ ENTRY (VNx1HF, false, LMUL_F2, 32, LMUL_F4, 64)
+ 
+ /* SEW = 32. Disable VNx16SImode when TARGET_MIN_VLEN == 32.
+    For single-precision floating-point, we need TARGET_VECTOR_ELEN_FP_32 to be
+    true.  */
+ ENTRY (VNx16SI, TARGET_MIN_VLEN > 32, LMUL_RESERVED, 0, LMUL_8, 4)
+ ENTRY (VNx8SI, true, LMUL_8, 4, LMUL_4, 8)
+ ENTRY (VNx4SI, true, LMUL_4, 8, LMUL_2, 16)
+ ENTRY (VNx2SI, true, LMUL_2, 16, LMUL_1, 32)
+ ENTRY (VNx1SI, true, LMUL_1, 32, LMUL_F2, 64)
+ 
+ ENTRY (VNx16SF, TARGET_VECTOR_ELEN_FP_32, LMUL_RESERVED, 0, LMUL_8, 4)
+ ENTRY (VNx8SF, TARGET_VECTOR_ELEN_FP_32, LMUL_8, 4, LMUL_4, 8)
+ ENTRY (VNx4SF, TARGET_VECTOR_ELEN_FP_32, LMUL_4, 8, LMUL_2, 16)
+ ENTRY (VNx2SF, TARGET_VECTOR_ELEN_FP_32, LMUL_2, 16, LMUL_1, 32)
+ ENTRY (VNx1SF, TARGET_VECTOR_ELEN_FP_32, LMUL_1, 32, LMUL_F2, 64)
+ 
+ /* SEW = 64. Enable when TARGET_VECTOR_ELEN_64 is true.
+    For double-precision floating-point, we need TARGET_VECTOR_ELEN_FP_64 to be
+    true.  */
+ ENTRY (VNx8DI, TARGET_VECTOR_ELEN_64, LMUL_RESERVED, 0, LMUL_8, 8)
+ ENTRY (VNx4DI, TARGET_VECTOR_ELEN_64, LMUL_RESERVED, 0, LMUL_4, 16)
+ ENTRY (VNx2DI, TARGET_VECTOR_ELEN_64, LMUL_RESERVED, 0, LMUL_2, 32)
+ ENTRY (VNx1DI, TARGET_VECTOR_ELEN_64, LMUL_RESERVED, 0, LMUL_1, 64)
+ 
+ ENTRY (VNx8DF, TARGET_VECTOR_ELEN_FP_64, LMUL_RESERVED, 0, LMUL_8, 8)
+ ENTRY (VNx4DF, TARGET_VECTOR_ELEN_FP_64, LMUL_RESERVED, 0, LMUL_4, 16)
+ ENTRY (VNx2DF, TARGET_VECTOR_ELEN_FP_64, LMUL_RESERVED, 0, LMUL_2, 32)
+ ENTRY (VNx1DF, TARGET_VECTOR_ELEN_FP_64, LMUL_RESERVED, 0, LMUL_1, 64)
+ 
+ #undef ENTRY
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vsetvl.cc gcc-13.1.0/gcc/config/riscv/riscv-vsetvl.cc
*** gcc-12.2.0/gcc/config/riscv/riscv-vsetvl.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vsetvl.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,4251 ----
+ /* VSETVL pass for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or(at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /*  This pass is to Set VL/VTYPE global status for RVV instructions
+     that depend on VL and VTYPE registers by Lazy code motion (LCM).
+ 
+     Strategy:
+ 
+     -  Backward demanded info fusion within block.
+ 
+     -  Lazy code motion (LCM) based demanded info backward propagation.
+ 
+     -  RTL_SSA framework for def-use, PHI analysis.
+ 
+     -  Lazy code motion (LCM) for global VL/VTYPE optimization.
+ 
+     Assumption:
+ 
+     -  Each avl operand is either an immediate (must be in range 0 ~ 31) or reg.
+ 
+     This pass consists of 5 phases:
+ 
+     -  Phase 1 - compute VL/VTYPE demanded information within each block
+        by backward data-flow analysis.
+ 
+     -  Phase 2 - Emit vsetvl instructions within each basic block according to
+        demand, compute and save ANTLOC && AVLOC of each block.
+ 
+     -  Phase 3 - Backward && forward demanded info propagation and fusion across
+        blocks.
+ 
+     -  Phase 4 - Lazy code motion including: compute local properties,
+        pre_edge_lcm and vsetvl insertion && delete edges for LCM results.
+ 
+     -  Phase 5 - Cleanup AVL operand of RVV instruction since it will not be
+        used any more and VL operand of VSETVL instruction if it is not used by
+        any non-debug instructions.
+ 
+     -  Phase 6 - Propagate AVL between vsetvl instructions.
+ 
+     Implementation:
+ 
+     -  The subroutine of optimize == 0 is simple_vsetvl.
+        This function simplily vsetvl insertion for each RVV
+        instruction. No optimization.
+ 
+     -  The subroutine of optimize > 0 is lazy_vsetvl.
+        This function optimize vsetvl insertion process by
+        lazy code motion (LCM) layering on RTL_SSA.
+ 
+     -  get_avl (), get_insn (), get_avl_source ():
+ 
+ 	1. get_insn () is the current instruction, find_access (get_insn
+    ())->def is the same as get_avl_source () if get_insn () demand VL.
+ 	2. If get_avl () is non-VLMAX REG, get_avl () == get_avl_source
+    ()->regno ().
+ 	3. get_avl_source ()->regno () is the REGNO that we backward propagate.
+  */
+ 
+ #define IN_TARGET_CODE 1
+ #define INCLUDE_ALGORITHM
+ #define INCLUDE_FUNCTIONAL
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "tm.h"
+ #include "backend.h"
+ #include "rtl.h"
+ #include "target.h"
+ #include "tree-pass.h"
+ #include "df.h"
+ #include "rtl-ssa.h"
+ #include "cfgcleanup.h"
+ #include "insn-config.h"
+ #include "insn-attr.h"
+ #include "insn-opinit.h"
+ #include "tm-constrs.h"
+ #include "cfgrtl.h"
+ #include "cfganal.h"
+ #include "lcm.h"
+ #include "predict.h"
+ #include "profile-count.h"
+ #include "riscv-vsetvl.h"
+ 
+ using namespace rtl_ssa;
+ using namespace riscv_vector;
+ 
+ static CONSTEXPR const unsigned ALL_SEW[] = {8, 16, 32, 64};
+ static CONSTEXPR const vlmul_type ALL_LMUL[]
+   = {LMUL_1, LMUL_2, LMUL_4, LMUL_8, LMUL_F8, LMUL_F4, LMUL_F2};
+ 
+ DEBUG_FUNCTION void
+ debug (const vector_insn_info *info)
+ {
+   info->dump (stderr);
+ }
+ 
+ DEBUG_FUNCTION void
+ debug (const vector_infos_manager *info)
+ {
+   info->dump (stderr);
+ }
+ 
+ static bool
+ vlmax_avl_p (rtx x)
+ {
+   return x && rtx_equal_p (x, RVV_VLMAX);
+ }
+ 
+ static bool
+ vlmax_avl_insn_p (rtx_insn *rinsn)
+ {
+   return (INSN_CODE (rinsn) == CODE_FOR_vlmax_avlsi
+ 	  || INSN_CODE (rinsn) == CODE_FOR_vlmax_avldi);
+ }
+ 
+ /* Return true if the block is a loop itself:
+ 	  local_dem
+ 	     __________
+ 	 ____|____     |
+ 	|        |     |
+ 	|________|     |
+ 	     |_________|
+ 	  reaching_out
+ */
+ static bool
+ loop_basic_block_p (const basic_block cfg_bb)
+ {
+   if (JUMP_P (BB_END (cfg_bb)) && any_condjump_p (BB_END (cfg_bb)))
+     {
+       edge e;
+       edge_iterator ei;
+       FOR_EACH_EDGE (e, ei, cfg_bb->succs)
+ 	if (e->dest->index == cfg_bb->index)
+ 	  return true;
+     }
+   return false;
+ }
+ 
+ /* Return true if it is an RVV instruction depends on VTYPE global
+    status register.  */
+ static bool
+ has_vtype_op (rtx_insn *rinsn)
+ {
+   return recog_memoized (rinsn) >= 0 && get_attr_has_vtype_op (rinsn);
+ }
+ 
+ /* Return true if it is an RVV instruction depends on VL global
+    status register.  */
+ static bool
+ has_vl_op (rtx_insn *rinsn)
+ {
+   return recog_memoized (rinsn) >= 0 && get_attr_has_vl_op (rinsn);
+ }
+ 
+ /* Is this a SEW value that can be encoded into the VTYPE format.  */
+ static bool
+ valid_sew_p (size_t sew)
+ {
+   return exact_log2 (sew) && sew >= 8 && sew <= 64;
+ }
+ 
+ /* Return true if the instruction ignores VLMUL field of VTYPE.  */
+ static bool
+ ignore_vlmul_insn_p (rtx_insn *rinsn)
+ {
+   return get_attr_type (rinsn) == TYPE_VIMOVVX
+ 	 || get_attr_type (rinsn) == TYPE_VFMOVVF
+ 	 || get_attr_type (rinsn) == TYPE_VIMOVXV
+ 	 || get_attr_type (rinsn) == TYPE_VFMOVFV;
+ }
+ 
+ /* Return true if the instruction is scalar move instruction.  */
+ static bool
+ scalar_move_insn_p (rtx_insn *rinsn)
+ {
+   return get_attr_type (rinsn) == TYPE_VIMOVXV
+ 	 || get_attr_type (rinsn) == TYPE_VFMOVFV;
+ }
+ 
+ /* Return true if the instruction is fault first load instruction.  */
+ static bool
+ fault_first_load_p (rtx_insn *rinsn)
+ {
+   return recog_memoized (rinsn) >= 0 && get_attr_type (rinsn) == TYPE_VLDFF;
+ }
+ 
+ /* Return true if the instruction is read vl instruction.  */
+ static bool
+ read_vl_insn_p (rtx_insn *rinsn)
+ {
+   return recog_memoized (rinsn) >= 0 && get_attr_type (rinsn) == TYPE_RDVL;
+ }
+ 
+ /* Return true if it is a vsetvl instruction.  */
+ static bool
+ vector_config_insn_p (rtx_insn *rinsn)
+ {
+   return recog_memoized (rinsn) >= 0 && get_attr_type (rinsn) == TYPE_VSETVL;
+ }
+ 
+ /* Return true if it is vsetvldi or vsetvlsi.  */
+ static bool
+ vsetvl_insn_p (rtx_insn *rinsn)
+ {
+   if (!vector_config_insn_p (rinsn))
+     return false;
+   return (INSN_CODE (rinsn) == CODE_FOR_vsetvldi
+ 	  || INSN_CODE (rinsn) == CODE_FOR_vsetvlsi);
+ }
+ 
+ /* Return true if it is vsetvl zero, rs1.  */
+ static bool
+ vsetvl_discard_result_insn_p (rtx_insn *rinsn)
+ {
+   if (!vector_config_insn_p (rinsn))
+     return false;
+   return (INSN_CODE (rinsn) == CODE_FOR_vsetvl_discard_resultdi
+ 	  || INSN_CODE (rinsn) == CODE_FOR_vsetvl_discard_resultsi);
+ }
+ 
+ static bool
+ real_insn_and_same_bb_p (const insn_info *insn, const bb_info *bb)
+ {
+   return insn != nullptr && insn->is_real () && insn->bb () == bb;
+ }
+ 
+ static bool
+ before_p (const insn_info *insn1, const insn_info *insn2)
+ {
+   return insn1->compare_with (insn2) < 0;
+ }
+ 
+ static insn_info *
+ find_reg_killed_by (const bb_info *bb, rtx x)
+ {
+   if (!x || vlmax_avl_p (x) || !REG_P (x))
+     return nullptr;
+   for (insn_info *insn : bb->reverse_real_nondebug_insns ())
+     if (find_access (insn->defs (), REGNO (x)))
+       return insn;
+   return nullptr;
+ }
+ 
+ /* Helper function to get VL operand.  */
+ static rtx
+ get_vl (rtx_insn *rinsn)
+ {
+   if (has_vl_op (rinsn))
+     {
+       extract_insn_cached (rinsn);
+       return recog_data.operand[get_attr_vl_op_idx (rinsn)];
+     }
+   return SET_DEST (XVECEXP (PATTERN (rinsn), 0, 0));
+ }
+ 
+ static bool
+ has_vsetvl_killed_avl_p (const bb_info *bb, const vector_insn_info &info)
+ {
+   if (info.dirty_with_killed_avl_p ())
+     {
+       rtx avl = info.get_avl ();
+       if (vlmax_avl_p (avl))
+ 	return find_reg_killed_by (bb, info.get_avl_reg_rtx ()) != nullptr;
+       for (const insn_info *insn : bb->reverse_real_nondebug_insns ())
+ 	{
+ 	  def_info *def = find_access (insn->defs (), REGNO (avl));
+ 	  if (def)
+ 	    {
+ 	      set_info *set = safe_dyn_cast<set_info *> (def);
+ 	      if (!set)
+ 		return false;
+ 
+ 	      rtx new_avl = gen_rtx_REG (GET_MODE (avl), REGNO (avl));
+ 	      gcc_assert (new_avl != avl);
+ 	      if (!info.compatible_avl_p (avl_info (new_avl, set)))
+ 		return false;
+ 
+ 	      return true;
+ 	    }
+ 	}
+     }
+   return false;
+ }
+ 
+ /* An "anticipatable occurrence" is one that is the first occurrence in the
+    basic block, the operands are not modified in the basic block prior
+    to the occurrence and the output is not used between the start of
+    the block and the occurrence.
+ 
+    For VSETVL instruction, we have these following formats:
+      1. vsetvl zero, rs1.
+      2. vsetvl zero, imm.
+      3. vsetvl rd, rs1.
+ 
+    So base on these circumstances, a DEM is considered as a local anticipatable
+    occurrence should satisfy these following conditions:
+ 
+      1). rs1 (avl) are not modified in the basic block prior to the VSETVL.
+      2). rd (vl) are not modified in the basic block prior to the VSETVL.
+      3). rd (vl) is not used between the start of the block and the occurrence.
+ 
+    Note: We don't need to check VL/VTYPE here since DEM is UNKNOWN if VL/VTYPE
+ 	 is modified prior to the occurrence. This case is already considered as
+ 	 a non-local anticipatable occurrence.
+ */
+ static bool
+ anticipatable_occurrence_p (const bb_info *bb, const vector_insn_info dem)
+ {
+   insn_info *insn = dem.get_insn ();
+   /* The only possible operand we care of VSETVL is AVL.  */
+   if (dem.has_avl_reg ())
+     {
+       /* rs1 (avl) are not modified in the basic block prior to the VSETVL.  */
+       if (!vlmax_avl_p (dem.get_avl ()))
+ 	{
+ 	  set_info *set = dem.get_avl_source ();
+ 	  /* If it's undefined, it's not anticipatable conservatively.  */
+ 	  if (!set)
+ 	    return false;
+ 	  if (real_insn_and_same_bb_p (set->insn (), bb)
+ 	      && before_p (set->insn (), insn))
+ 	    return false;
+ 	}
+     }
+ 
+   /* rd (vl) is not used between the start of the block and the occurrence.  */
+   if (vsetvl_insn_p (insn->rtl ()))
+     {
+       rtx dest = get_vl (insn->rtl ());
+       for (insn_info *i = insn->prev_nondebug_insn ();
+ 	   real_insn_and_same_bb_p (i, bb); i = i->prev_nondebug_insn ())
+ 	{
+ 	  /* rd (vl) is not used between the start of the block and the
+ 	   * occurrence.  */
+ 	  if (find_access (i->uses (), REGNO (dest)))
+ 	    return false;
+ 	  /* rd (vl) are not modified in the basic block prior to the VSETVL. */
+ 	  if (find_access (i->defs (), REGNO (dest)))
+ 	    return false;
+ 	}
+     }
+ 
+   return true;
+ }
+ 
+ /* An "available occurrence" is one that is the last occurrence in the
+    basic block and the operands are not modified by following statements in
+    the basic block [including this insn].
+ 
+    For VSETVL instruction, we have these following formats:
+      1. vsetvl zero, rs1.
+      2. vsetvl zero, imm.
+      3. vsetvl rd, rs1.
+ 
+    So base on these circumstances, a DEM is considered as a local available
+    occurrence should satisfy these following conditions:
+ 
+      1). rs1 (avl) are not modified by following statements in
+ 	 the basic block.
+      2). rd (vl) are not modified by following statements in
+ 	 the basic block.
+ 
+    Note: We don't need to check VL/VTYPE here since DEM is UNKNOWN if VL/VTYPE
+ 	 is modified prior to the occurrence. This case is already considered as
+ 	 a non-local available occurrence.
+ */
+ static bool
+ available_occurrence_p (const bb_info *bb, const vector_insn_info dem)
+ {
+   insn_info *insn = dem.get_insn ();
+   /* The only possible operand we care of VSETVL is AVL.  */
+   if (dem.has_avl_reg ())
+     {
+       if (!vlmax_avl_p (dem.get_avl ()))
+ 	{
+ 	  rtx dest = NULL_RTX;
+ 	  if (vsetvl_insn_p (insn->rtl ()))
+ 	    dest = get_vl (insn->rtl ());
+ 	  for (const insn_info *i = insn; real_insn_and_same_bb_p (i, bb);
+ 	       i = i->next_nondebug_insn ())
+ 	    {
+ 	      if (read_vl_insn_p (i->rtl ()))
+ 		continue;
+ 	      /* rs1 (avl) are not modified by following statements in
+ 		 the basic block.  */
+ 	      if (find_access (i->defs (), REGNO (dem.get_avl ())))
+ 		return false;
+ 	      /* rd (vl) are not modified by following statements in
+ 		 the basic block.  */
+ 	      if (dest && find_access (i->defs (), REGNO (dest)))
+ 		return false;
+ 	    }
+ 	}
+     }
+   return true;
+ }
+ 
+ static bool
+ insn_should_be_added_p (const insn_info *insn, unsigned int types)
+ {
+   if (insn->is_real () && (types & REAL_SET))
+     return true;
+   if (insn->is_phi () && (types & PHI_SET))
+     return true;
+   if (insn->is_bb_head () && (types & BB_HEAD_SET))
+     return true;
+   if (insn->is_bb_end () && (types & BB_END_SET))
+     return true;
+   return false;
+ }
+ 
+ /* Recursively find all define instructions. The kind of instruction is
+    specified by the DEF_TYPE.  */
+ static hash_set<set_info *>
+ get_all_sets (phi_info *phi, unsigned int types)
+ {
+   hash_set<set_info *> insns;
+   auto_vec<phi_info *> work_list;
+   hash_set<phi_info *> visited_list;
+   if (!phi)
+     return hash_set<set_info *> ();
+   work_list.safe_push (phi);
+ 
+   while (!work_list.is_empty ())
+     {
+       phi_info *phi = work_list.pop ();
+       visited_list.add (phi);
+       for (use_info *use : phi->inputs ())
+ 	{
+ 	  def_info *def = use->def ();
+ 	  set_info *set = safe_dyn_cast<set_info *> (def);
+ 	  if (!set)
+ 	    return hash_set<set_info *> ();
+ 
+ 	  gcc_assert (!set->insn ()->is_debug_insn ());
+ 
+ 	  if (insn_should_be_added_p (set->insn (), types))
+ 	    insns.add (set);
+ 	  if (set->insn ()->is_phi ())
+ 	    {
+ 	      phi_info *new_phi = as_a<phi_info *> (set);
+ 	      if (!visited_list.contains (new_phi))
+ 		work_list.safe_push (new_phi);
+ 	    }
+ 	}
+     }
+   return insns;
+ }
+ 
+ static hash_set<set_info *>
+ get_all_sets (set_info *set, bool /* get_real_inst */ real_p,
+ 	      bool /*get_phi*/ phi_p, bool /* get_function_parameter*/ param_p)
+ {
+   if (real_p && phi_p && param_p)
+     return get_all_sets (safe_dyn_cast<phi_info *> (set),
+ 			 REAL_SET | PHI_SET | BB_HEAD_SET | BB_END_SET);
+ 
+   else if (real_p && param_p)
+     return get_all_sets (safe_dyn_cast<phi_info *> (set),
+ 			 REAL_SET | BB_HEAD_SET | BB_END_SET);
+ 
+   else if (real_p)
+     return get_all_sets (safe_dyn_cast<phi_info *> (set), REAL_SET);
+   return hash_set<set_info *> ();
+ }
+ 
+ /* Helper function to get AVL operand.  */
+ static rtx
+ get_avl (rtx_insn *rinsn)
+ {
+   if (vsetvl_insn_p (rinsn) || vsetvl_discard_result_insn_p (rinsn))
+     return XVECEXP (SET_SRC (XVECEXP (PATTERN (rinsn), 0, 0)), 0, 0);
+ 
+   if (!has_vl_op (rinsn))
+     return NULL_RTX;
+   if (get_attr_avl_type (rinsn) == VLMAX)
+     return RVV_VLMAX;
+   extract_insn_cached (rinsn);
+   return recog_data.operand[get_attr_vl_op_idx (rinsn)];
+ }
+ 
+ static set_info *
+ get_same_bb_set (hash_set<set_info *> &sets, const basic_block cfg_bb)
+ {
+   for (set_info *set : sets)
+     if (set->bb ()->cfg_bb () == cfg_bb)
+       return set;
+   return nullptr;
+ }
+ 
+ /* Recursively find all predecessor blocks for cfg_bb. */
+ static hash_set<basic_block>
+ get_all_predecessors (basic_block cfg_bb)
+ {
+   hash_set<basic_block> blocks;
+   auto_vec<basic_block> work_list;
+   hash_set<basic_block> visited_list;
+   work_list.safe_push (cfg_bb);
+ 
+   while (!work_list.is_empty ())
+     {
+       basic_block new_cfg_bb = work_list.pop ();
+       visited_list.add (new_cfg_bb);
+       edge e;
+       edge_iterator ei;
+       FOR_EACH_EDGE (e, ei, new_cfg_bb->preds)
+ 	{
+ 	  if (!visited_list.contains (e->src))
+ 	    work_list.safe_push (e->src);
+ 	  blocks.add (e->src);
+ 	}
+     }
+   return blocks;
+ }
+ 
+ /* Return true if there is an INSN in insns staying in the block BB.  */
+ static bool
+ any_set_in_bb_p (hash_set<set_info *> sets, const bb_info *bb)
+ {
+   for (const set_info *set : sets)
+     if (set->bb ()->index () == bb->index ())
+       return true;
+   return false;
+ }
+ 
+ /* Helper function to get SEW operand. We always have SEW value for
+    all RVV instructions that have VTYPE OP.  */
+ static uint8_t
+ get_sew (rtx_insn *rinsn)
+ {
+   return get_attr_sew (rinsn);
+ }
+ 
+ /* Helper function to get VLMUL operand. We always have VLMUL value for
+    all RVV instructions that have VTYPE OP. */
+ static enum vlmul_type
+ get_vlmul (rtx_insn *rinsn)
+ {
+   return (enum vlmul_type) get_attr_vlmul (rinsn);
+ }
+ 
+ /* Get default tail policy.  */
+ static bool
+ get_default_ta ()
+ {
+   /* For the instruction that doesn't require TA, we still need a default value
+      to emit vsetvl. We pick up the default value according to prefer policy. */
+   return (bool) (get_prefer_tail_policy () & 0x1
+ 		 || (get_prefer_tail_policy () >> 1 & 0x1));
+ }
+ 
+ /* Get default mask policy.  */
+ static bool
+ get_default_ma ()
+ {
+   /* For the instruction that doesn't require MA, we still need a default value
+      to emit vsetvl. We pick up the default value according to prefer policy. */
+   return (bool) (get_prefer_mask_policy () & 0x1
+ 		 || (get_prefer_mask_policy () >> 1 & 0x1));
+ }
+ 
+ /* Helper function to get TA operand.  */
+ static bool
+ tail_agnostic_p (rtx_insn *rinsn)
+ {
+   /* If it doesn't have TA, we return agnostic by default.  */
+   extract_insn_cached (rinsn);
+   int ta = get_attr_ta (rinsn);
+   return ta == INVALID_ATTRIBUTE ? get_default_ta () : IS_AGNOSTIC (ta);
+ }
+ 
+ /* Helper function to get MA operand.  */
+ static bool
+ mask_agnostic_p (rtx_insn *rinsn)
+ {
+   /* If it doesn't have MA, we return agnostic by default.  */
+   extract_insn_cached (rinsn);
+   int ma = get_attr_ma (rinsn);
+   return ma == INVALID_ATTRIBUTE ? get_default_ma () : IS_AGNOSTIC (ma);
+ }
+ 
+ /* Return true if FN has a vector instruction that use VL/VTYPE.  */
+ static bool
+ has_vector_insn (function *fn)
+ {
+   basic_block cfg_bb;
+   rtx_insn *rinsn;
+   FOR_ALL_BB_FN (cfg_bb, fn)
+     FOR_BB_INSNS (cfg_bb, rinsn)
+       if (NONDEBUG_INSN_P (rinsn) && has_vtype_op (rinsn))
+ 	return true;
+   return false;
+ }
+ 
+ /* Emit vsetvl instruction.  */
+ static rtx
+ gen_vsetvl_pat (enum vsetvl_type insn_type, const vl_vtype_info &info, rtx vl)
+ {
+   rtx avl = info.get_avl ();
+   rtx sew = gen_int_mode (info.get_sew (), Pmode);
+   rtx vlmul = gen_int_mode (info.get_vlmul (), Pmode);
+   rtx ta = gen_int_mode (info.get_ta (), Pmode);
+   rtx ma = gen_int_mode (info.get_ma (), Pmode);
+ 
+   if (insn_type == VSETVL_NORMAL)
+     {
+       gcc_assert (vl != NULL_RTX);
+       return gen_vsetvl (Pmode, vl, avl, sew, vlmul, ta, ma);
+     }
+   else if (insn_type == VSETVL_VTYPE_CHANGE_ONLY)
+     return gen_vsetvl_vtype_change_only (sew, vlmul, ta, ma);
+   else
+     return gen_vsetvl_discard_result (Pmode, avl, sew, vlmul, ta, ma);
+ }
+ 
+ static rtx
+ gen_vsetvl_pat (rtx_insn *rinsn, const vector_insn_info &info)
+ {
+   rtx new_pat;
+   vl_vtype_info new_info = info;
+   if (info.get_insn () && info.get_insn ()->rtl ()
+       && fault_first_load_p (info.get_insn ()->rtl ()))
+     new_info.set_avl_info (
+       avl_info (get_avl (info.get_insn ()->rtl ()), nullptr));
+   if (vsetvl_insn_p (rinsn) || vlmax_avl_p (info.get_avl ()))
+     {
+       rtx dest = get_vl (rinsn);
+       new_pat = gen_vsetvl_pat (VSETVL_NORMAL, new_info, dest);
+     }
+   else if (INSN_CODE (rinsn) == CODE_FOR_vsetvl_vtype_change_only)
+     new_pat = gen_vsetvl_pat (VSETVL_VTYPE_CHANGE_ONLY, new_info, NULL_RTX);
+   else
+     new_pat = gen_vsetvl_pat (VSETVL_DISCARD_RESULT, new_info, NULL_RTX);
+   return new_pat;
+ }
+ 
+ static void
+ emit_vsetvl_insn (enum vsetvl_type insn_type, enum emit_type emit_type,
+ 		  const vl_vtype_info &info, rtx vl, rtx_insn *rinsn)
+ {
+   rtx pat = gen_vsetvl_pat (insn_type, info, vl);
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nInsert vsetvl insn PATTERN:\n");
+       print_rtl_single (dump_file, pat);
+     }
+ 
+   if (emit_type == EMIT_DIRECT)
+     emit_insn (pat);
+   else if (emit_type == EMIT_BEFORE)
+     emit_insn_before (pat, rinsn);
+   else
+     emit_insn_after (pat, rinsn);
+ }
+ 
+ static void
+ eliminate_insn (rtx_insn *rinsn)
+ {
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nEliminate insn %d:\n", INSN_UID (rinsn));
+       print_rtl_single (dump_file, rinsn);
+     }
+   if (in_sequence_p ())
+     remove_insn (rinsn);
+   else
+     delete_insn (rinsn);
+ }
+ 
+ static vsetvl_type
+ insert_vsetvl (enum emit_type emit_type, rtx_insn *rinsn,
+ 	       const vector_insn_info &info, const vector_insn_info &prev_info)
+ {
+   /* Use X0, X0 form if the AVL is the same and the SEW+LMUL gives the same
+      VLMAX.  */
+   if (prev_info.valid_or_dirty_p () && !prev_info.unknown_p ()
+       && info.compatible_avl_p (prev_info) && info.same_vlmax_p (prev_info))
+     {
+       emit_vsetvl_insn (VSETVL_VTYPE_CHANGE_ONLY, emit_type, info, NULL_RTX,
+ 			rinsn);
+       return VSETVL_VTYPE_CHANGE_ONLY;
+     }
+ 
+   if (info.has_avl_imm ())
+     {
+       emit_vsetvl_insn (VSETVL_DISCARD_RESULT, emit_type, info, NULL_RTX,
+ 			rinsn);
+       return VSETVL_DISCARD_RESULT;
+     }
+ 
+   if (info.has_avl_no_reg ())
+     {
+       /* We can only use x0, x0 if there's no chance of the vtype change causing
+ 	 the previous vl to become invalid.  */
+       if (prev_info.valid_or_dirty_p () && !prev_info.unknown_p ()
+ 	  && info.same_vlmax_p (prev_info))
+ 	{
+ 	  emit_vsetvl_insn (VSETVL_VTYPE_CHANGE_ONLY, emit_type, info, NULL_RTX,
+ 			    rinsn);
+ 	  return VSETVL_VTYPE_CHANGE_ONLY;
+ 	}
+       /* Otherwise use an AVL of 0 to avoid depending on previous vl.  */
+       vl_vtype_info new_info = info;
+       new_info.set_avl_info (avl_info (const0_rtx, nullptr));
+       emit_vsetvl_insn (VSETVL_DISCARD_RESULT, emit_type, new_info, NULL_RTX,
+ 			rinsn);
+       return VSETVL_DISCARD_RESULT;
+     }
+ 
+   /* Use X0 as the DestReg unless AVLReg is X0. We also need to change the
+      opcode if the AVLReg is X0 as they have different register classes for
+      the AVL operand.  */
+   if (vlmax_avl_p (info.get_avl ()))
+     {
+       gcc_assert (has_vtype_op (rinsn) || vsetvl_insn_p (rinsn));
+       rtx vl_op = info.get_avl_reg_rtx ();
+       gcc_assert (!vlmax_avl_p (vl_op));
+       emit_vsetvl_insn (VSETVL_NORMAL, emit_type, info, vl_op, rinsn);
+       return VSETVL_NORMAL;
+     }
+ 
+   emit_vsetvl_insn (VSETVL_DISCARD_RESULT, emit_type, info, NULL_RTX, rinsn);
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "Update VL/VTYPE info, previous info=");
+       prev_info.dump (dump_file);
+     }
+   return VSETVL_DISCARD_RESULT;
+ }
+ 
+ /* If X contains any LABEL_REF's, add REG_LABEL_OPERAND notes for them
+    to INSN.  If such notes are added to an insn which references a
+    CODE_LABEL, the LABEL_NUSES count is incremented.  We have to add
+    that note, because the following loop optimization pass requires
+    them.  */
+ 
+ /* ??? If there was a jump optimization pass after gcse and before loop,
+    then we would not need to do this here, because jump would add the
+    necessary REG_LABEL_OPERAND and REG_LABEL_TARGET notes.  */
+ 
+ static void
+ add_label_notes (rtx x, rtx_insn *rinsn)
+ {
+   enum rtx_code code = GET_CODE (x);
+   int i, j;
+   const char *fmt;
+ 
+   if (code == LABEL_REF && !LABEL_REF_NONLOCAL_P (x))
+     {
+       /* This code used to ignore labels that referred to dispatch tables to
+ 	 avoid flow generating (slightly) worse code.
+ 
+ 	 We no longer ignore such label references (see LABEL_REF handling in
+ 	 mark_jump_label for additional information).  */
+ 
+       /* There's no reason for current users to emit jump-insns with
+ 	 such a LABEL_REF, so we don't have to handle REG_LABEL_TARGET
+ 	 notes.  */
+       gcc_assert (!JUMP_P (rinsn));
+       add_reg_note (rinsn, REG_LABEL_OPERAND, label_ref_label (x));
+ 
+       if (LABEL_P (label_ref_label (x)))
+ 	LABEL_NUSES (label_ref_label (x))++;
+ 
+       return;
+     }
+ 
+   for (i = GET_RTX_LENGTH (code) - 1, fmt = GET_RTX_FORMAT (code); i >= 0; i--)
+     {
+       if (fmt[i] == 'e')
+ 	add_label_notes (XEXP (x, i), rinsn);
+       else if (fmt[i] == 'E')
+ 	for (j = XVECLEN (x, i) - 1; j >= 0; j--)
+ 	  add_label_notes (XVECEXP (x, i, j), rinsn);
+     }
+ }
+ 
+ /* Add EXPR to the end of basic block BB.
+ 
+    This is used by both the PRE and code hoisting.  */
+ 
+ static void
+ insert_insn_end_basic_block (rtx_insn *rinsn, basic_block cfg_bb)
+ {
+   rtx_insn *end_rinsn = BB_END (cfg_bb);
+   rtx_insn *new_insn;
+   rtx_insn *pat, *pat_end;
+ 
+   pat = rinsn;
+   gcc_assert (pat && INSN_P (pat));
+ 
+   pat_end = pat;
+   while (NEXT_INSN (pat_end) != NULL_RTX)
+     pat_end = NEXT_INSN (pat_end);
+ 
+   /* If the last end_rinsn is a jump, insert EXPR in front.  Similarly we need
+      to take care of trapping instructions in presence of non-call exceptions.
+    */
+ 
+   if (JUMP_P (end_rinsn)
+       || (NONJUMP_INSN_P (end_rinsn)
+ 	  && (!single_succ_p (cfg_bb)
+ 	      || single_succ_edge (cfg_bb)->flags & EDGE_ABNORMAL)))
+     {
+       /* FIXME: What if something in jump uses value set in new end_rinsn?  */
+       new_insn = emit_insn_before_noloc (pat, end_rinsn, cfg_bb);
+     }
+ 
+   /* Likewise if the last end_rinsn is a call, as will happen in the presence
+      of exception handling.  */
+   else if (CALL_P (end_rinsn)
+ 	   && (!single_succ_p (cfg_bb)
+ 	       || single_succ_edge (cfg_bb)->flags & EDGE_ABNORMAL))
+     {
+       /* Keeping in mind targets with small register classes and parameters
+ 	 in registers, we search backward and place the instructions before
+ 	 the first parameter is loaded.  Do this for everyone for consistency
+ 	 and a presumption that we'll get better code elsewhere as well.  */
+ 
+       /* Since different machines initialize their parameter registers
+ 	 in different orders, assume nothing.  Collect the set of all
+ 	 parameter registers.  */
+       end_rinsn = find_first_parameter_load (end_rinsn, BB_HEAD (cfg_bb));
+ 
+       /* If we found all the parameter loads, then we want to insert
+ 	 before the first parameter load.
+ 
+ 	 If we did not find all the parameter loads, then we might have
+ 	 stopped on the head of the block, which could be a CODE_LABEL.
+ 	 If we inserted before the CODE_LABEL, then we would be putting
+ 	 the end_rinsn in the wrong basic block.  In that case, put the
+ 	 end_rinsn after the CODE_LABEL.  Also, respect NOTE_INSN_BASIC_BLOCK.
+        */
+       while (LABEL_P (end_rinsn) || NOTE_INSN_BASIC_BLOCK_P (end_rinsn))
+ 	end_rinsn = NEXT_INSN (end_rinsn);
+ 
+       new_insn = emit_insn_before_noloc (pat, end_rinsn, cfg_bb);
+     }
+   else
+     new_insn = emit_insn_after_noloc (pat, end_rinsn, cfg_bb);
+ 
+   while (1)
+     {
+       if (INSN_P (pat))
+ 	add_label_notes (PATTERN (pat), new_insn);
+       if (pat == pat_end)
+ 	break;
+       pat = NEXT_INSN (pat);
+     }
+ }
+ 
+ /* Get VL/VTYPE information for INSN.  */
+ static vl_vtype_info
+ get_vl_vtype_info (const insn_info *insn)
+ {
+   set_info *set = nullptr;
+   rtx avl = ::get_avl (insn->rtl ());
+   if (avl && REG_P (avl))
+     {
+       if (vlmax_avl_p (avl) && has_vl_op (insn->rtl ()))
+ 	set
+ 	  = find_access (insn->uses (), REGNO (get_vl (insn->rtl ())))->def ();
+       else if (!vlmax_avl_p (avl))
+ 	set = find_access (insn->uses (), REGNO (avl))->def ();
+       else
+ 	set = nullptr;
+     }
+ 
+   uint8_t sew = get_sew (insn->rtl ());
+   enum vlmul_type vlmul = get_vlmul (insn->rtl ());
+   uint8_t ratio = get_attr_ratio (insn->rtl ());
+   /* when get_attr_ratio is invalid, this kind of instructions
+      doesn't care about ratio. However, we still need this value
+      in demand info backward analysis.  */
+   if (ratio == INVALID_ATTRIBUTE)
+     ratio = calculate_ratio (sew, vlmul);
+   bool ta = tail_agnostic_p (insn->rtl ());
+   bool ma = mask_agnostic_p (insn->rtl ());
+ 
+   /* If merge operand is undef value, we prefer agnostic.  */
+   int merge_op_idx = get_attr_merge_op_idx (insn->rtl ());
+   if (merge_op_idx != INVALID_ATTRIBUTE
+       && satisfies_constraint_vu (recog_data.operand[merge_op_idx]))
+     {
+       ta = true;
+       ma = true;
+     }
+ 
+   vl_vtype_info info (avl_info (avl, set), sew, vlmul, ratio, ta, ma);
+   return info;
+ }
+ 
+ static void
+ change_insn (rtx_insn *rinsn, rtx new_pat)
+ {
+   /* We don't apply change on RTL_SSA here since it's possible a
+      new INSN we add in the PASS before which doesn't have RTL_SSA
+      info yet.*/
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nChange PATTERN of insn %d from:\n",
+ 	       INSN_UID (rinsn));
+       print_rtl_single (dump_file, PATTERN (rinsn));
+     }
+ 
+   validate_change (rinsn, &PATTERN (rinsn), new_pat, false);
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nto:\n");
+       print_rtl_single (dump_file, PATTERN (rinsn));
+     }
+ }
+ 
+ static const insn_info *
+ get_forward_read_vl_insn (const insn_info *insn)
+ {
+   const bb_info *bb = insn->bb ();
+   for (const insn_info *i = insn->next_nondebug_insn ();
+        real_insn_and_same_bb_p (i, bb); i = i->next_nondebug_insn ())
+     {
+       if (find_access (i->defs (), VL_REGNUM))
+ 	return nullptr;
+       if (read_vl_insn_p (i->rtl ()))
+ 	return i;
+     }
+   return nullptr;
+ }
+ 
+ static const insn_info *
+ get_backward_fault_first_load_insn (const insn_info *insn)
+ {
+   const bb_info *bb = insn->bb ();
+   for (const insn_info *i = insn->prev_nondebug_insn ();
+        real_insn_and_same_bb_p (i, bb); i = i->prev_nondebug_insn ())
+     {
+       if (fault_first_load_p (i->rtl ()))
+ 	return i;
+       if (find_access (i->defs (), VL_REGNUM))
+ 	return nullptr;
+     }
+   return nullptr;
+ }
+ 
+ static bool
+ change_insn (function_info *ssa, insn_change change, insn_info *insn,
+ 	     rtx new_pat)
+ {
+   rtx_insn *rinsn = insn->rtl ();
+   auto attempt = ssa->new_change_attempt ();
+   if (!restrict_movement (change))
+     return false;
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nChange PATTERN of insn %d from:\n",
+ 	       INSN_UID (rinsn));
+       print_rtl_single (dump_file, PATTERN (rinsn));
+     }
+ 
+   insn_change_watermark watermark;
+   validate_change (rinsn, &PATTERN (rinsn), new_pat, true);
+ 
+   /* These routines report failures themselves.  */
+   if (!recog (attempt, change) || !change_is_worthwhile (change, false))
+     return false;
+ 
+   /* Fix bug:
+       (insn 12 34 13 2 (set (reg:VNx8DI 120 v24 [orig:134 _1 ] [134])
+ 	(if_then_else:VNx8DI (unspec:VNx8BI [
+ 		    (const_vector:VNx8BI repeat [
+ 			    (const_int 1 [0x1])
+ 			])
+ 		    (const_int 0 [0])
+ 		    (const_int 2 [0x2]) repeated x2
+ 		    (const_int 0 [0])
+ 		    (reg:SI 66 vl)
+ 		    (reg:SI 67 vtype)
+ 		] UNSPEC_VPREDICATE)
+ 	    (plus:VNx8DI (reg/v:VNx8DI 104 v8 [orig:137 op1 ] [137])
+ 		(sign_extend:VNx8DI (vec_duplicate:VNx8SI (reg:SI 15 a5
+     [140])))) (unspec:VNx8DI [ (const_int 0 [0]) ] UNSPEC_VUNDEF))) "rvv.c":8:12
+     2784 {pred_single_widen_addsvnx8di_scalar} (expr_list:REG_EQUIV
+     (mem/c:VNx8DI (reg:DI 10 a0 [142]) [1 <retval>+0 S[64, 64] A128])
+ 	(expr_list:REG_EQUAL (if_then_else:VNx8DI (unspec:VNx8BI [
+ 			(const_vector:VNx8BI repeat [
+ 				(const_int 1 [0x1])
+ 			    ])
+ 			(reg/v:DI 13 a3 [orig:139 vl ] [139])
+ 			(const_int 2 [0x2]) repeated x2
+ 			(const_int 0 [0])
+ 			(reg:SI 66 vl)
+ 			(reg:SI 67 vtype)
+ 		    ] UNSPEC_VPREDICATE)
+ 		(plus:VNx8DI (reg/v:VNx8DI 104 v8 [orig:137 op1 ] [137])
+ 		    (const_vector:VNx8DI repeat [
+ 			    (const_int 2730 [0xaaa])
+ 			]))
+ 		(unspec:VNx8DI [
+ 			(const_int 0 [0])
+ 		    ] UNSPEC_VUNDEF))
+ 	    (nil))))
+     Here we want to remove use "a3". However, the REG_EQUAL/REG_EQUIV note use
+     "a3" which made us fail in change_insn.  We reference to the
+     'aarch64-cc-fusion.cc' and add this method.  */
+   remove_reg_equal_equiv_notes (rinsn);
+   confirm_change_group ();
+   ssa->change_insn (change);
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nto:\n");
+       print_rtl_single (dump_file, PATTERN (rinsn));
+     }
+   return true;
+ }
+ 
+ static void
+ change_vsetvl_insn (const insn_info *insn, const vector_insn_info &info)
+ {
+   rtx_insn *rinsn;
+   if (vector_config_insn_p (insn->rtl ()))
+     {
+       rinsn = insn->rtl ();
+       gcc_assert (vsetvl_insn_p (rinsn) && "Can't handle X0, rs1 vsetvli yet");
+     }
+   else
+     {
+       gcc_assert (has_vtype_op (insn->rtl ()));
+       rinsn = PREV_INSN (insn->rtl ());
+       gcc_assert (vector_config_insn_p (rinsn));
+     }
+   rtx new_pat = gen_vsetvl_pat (rinsn, info);
+   change_insn (rinsn, new_pat);
+ }
+ 
+ static bool
+ source_equal_p (insn_info *insn1, insn_info *insn2)
+ {
+   if (!insn1 || !insn2)
+     return false;
+   rtx_insn *rinsn1 = insn1->rtl ();
+   rtx_insn *rinsn2 = insn2->rtl ();
+   if (!rinsn1 || !rinsn2)
+     return false;
+   rtx note1 = find_reg_equal_equiv_note (rinsn1);
+   rtx note2 = find_reg_equal_equiv_note (rinsn2);
+   rtx single_set1 = single_set (rinsn1);
+   rtx single_set2 = single_set (rinsn2);
+   if (read_vl_insn_p (rinsn1) && read_vl_insn_p (rinsn2))
+     {
+       const insn_info *load1 = get_backward_fault_first_load_insn (insn1);
+       const insn_info *load2 = get_backward_fault_first_load_insn (insn2);
+       return load1 && load2 && load1 == load2;
+     }
+ 
+   if (note1 && note2 && rtx_equal_p (note1, note2))
+     return true;
+ 
+   /* Since vsetvl instruction is not single SET.
+      We handle this case specially here.  */
+   if (vsetvl_insn_p (insn1->rtl ()) && vsetvl_insn_p (insn2->rtl ()))
+     {
+       /* For example:
+ 	   vsetvl1 a6,a5,e32m1
+ 	   RVV 1 (use a6 as AVL)
+ 	   vsetvl2 a5,a5,e8mf4
+ 	   RVV 2 (use a5 as AVL)
+ 	 We consider AVL of RVV 1 and RVV 2 are same so that we can
+ 	 gain more optimization opportunities.
+ 
+ 	 Note: insn1_info.compatible_avl_p (insn2_info)
+ 	 will make sure there is no instruction between vsetvl1 and vsetvl2
+ 	 modify a5 since their def will be different if there is instruction
+ 	 modify a5 and compatible_avl_p will return false.  */
+       vector_insn_info insn1_info, insn2_info;
+       insn1_info.parse_insn (insn1);
+       insn2_info.parse_insn (insn2);
+       if (insn1_info.same_vlmax_p (insn2_info)
+ 	  && insn1_info.compatible_avl_p (insn2_info))
+ 	return true;
+     }
+ 
+   /* We only handle AVL is set by instructions with no side effects.  */
+   if (!single_set1 || !single_set2)
+     return false;
+   if (!rtx_equal_p (SET_SRC (single_set1), SET_SRC (single_set2)))
+     return false;
+   gcc_assert (insn1->uses ().size () == insn2->uses ().size ());
+   for (size_t i = 0; i < insn1->uses ().size (); i++)
+     if (insn1->uses ()[i] != insn2->uses ()[i])
+       return false;
+   return true;
+ }
+ 
+ /* Helper function to get single same real RTL source.
+    return NULL if it is not a single real RTL source.  */
+ static insn_info *
+ extract_single_source (set_info *set)
+ {
+   if (!set)
+     return nullptr;
+   if (set->insn ()->is_real ())
+     return set->insn ();
+   if (!set->insn ()->is_phi ())
+     return nullptr;
+   hash_set<set_info *> sets = get_all_sets (set, true, false, true);
+ 
+   insn_info *first_insn = (*sets.begin ())->insn ();
+   if (first_insn->is_artificial ())
+     return nullptr;
+   for (const set_info *set : sets)
+     {
+       /* If there is a head or end insn, we conservative return
+ 	 NULL so that VSETVL PASS will insert vsetvl directly.  */
+       if (set->insn ()->is_artificial ())
+ 	return nullptr;
+       if (!source_equal_p (set->insn (), first_insn))
+ 	return nullptr;
+     }
+ 
+   return first_insn;
+ }
+ 
+ static unsigned
+ calculate_sew (vlmul_type vlmul, unsigned int ratio)
+ {
+   for (const unsigned sew : ALL_SEW)
+     if (calculate_ratio (sew, vlmul) == ratio)
+       return sew;
+   return 0;
+ }
+ 
+ static vlmul_type
+ calculate_vlmul (unsigned int sew, unsigned int ratio)
+ {
+   for (const vlmul_type vlmul : ALL_LMUL)
+     if (calculate_ratio (sew, vlmul) == ratio)
+       return vlmul;
+   return LMUL_RESERVED;
+ }
+ 
+ static bool
+ incompatible_avl_p (const vector_insn_info &info1,
+ 		    const vector_insn_info &info2)
+ {
+   return !info1.compatible_avl_p (info2) && !info2.compatible_avl_p (info1);
+ }
+ 
+ static bool
+ different_sew_p (const vector_insn_info &info1, const vector_insn_info &info2)
+ {
+   return info1.get_sew () != info2.get_sew ();
+ }
+ 
+ static bool
+ different_lmul_p (const vector_insn_info &info1, const vector_insn_info &info2)
+ {
+   return info1.get_vlmul () != info2.get_vlmul ();
+ }
+ 
+ static bool
+ different_ratio_p (const vector_insn_info &info1, const vector_insn_info &info2)
+ {
+   return info1.get_ratio () != info2.get_ratio ();
+ }
+ 
+ static bool
+ different_tail_policy_p (const vector_insn_info &info1,
+ 			 const vector_insn_info &info2)
+ {
+   return info1.get_ta () != info2.get_ta ();
+ }
+ 
+ static bool
+ different_mask_policy_p (const vector_insn_info &info1,
+ 			 const vector_insn_info &info2)
+ {
+   return info1.get_ma () != info2.get_ma ();
+ }
+ 
+ static bool
+ possible_zero_avl_p (const vector_insn_info &info1,
+ 		     const vector_insn_info &info2)
+ {
+   return !info1.has_non_zero_avl () || !info2.has_non_zero_avl ();
+ }
+ 
+ static bool
+ second_ratio_invalid_for_first_sew_p (const vector_insn_info &info1,
+ 				      const vector_insn_info &info2)
+ {
+   return calculate_vlmul (info1.get_sew (), info2.get_ratio ())
+ 	 == LMUL_RESERVED;
+ }
+ 
+ static bool
+ second_ratio_invalid_for_first_lmul_p (const vector_insn_info &info1,
+ 				       const vector_insn_info &info2)
+ {
+   return calculate_sew (info1.get_vlmul (), info2.get_ratio ()) == 0;
+ }
+ 
+ static bool
+ second_sew_less_than_first_sew_p (const vector_insn_info &info1,
+ 				  const vector_insn_info &info2)
+ {
+   return info2.get_sew () < info1.get_sew ();
+ }
+ 
+ static bool
+ first_sew_less_than_second_sew_p (const vector_insn_info &info1,
+ 				  const vector_insn_info &info2)
+ {
+   return info1.get_sew () < info2.get_sew ();
+ }
+ 
+ /* return 0 if LMUL1 == LMUL2.
+    return -1 if LMUL1 < LMUL2.
+    return 1 if LMUL1 > LMUL2.  */
+ static int
+ compare_lmul (vlmul_type vlmul1, vlmul_type vlmul2)
+ {
+   if (vlmul1 == vlmul2)
+     return 0;
+ 
+   switch (vlmul1)
+     {
+     case LMUL_1:
+       if (vlmul2 == LMUL_2 || vlmul2 == LMUL_4 || vlmul2 == LMUL_8)
+ 	return 1;
+       else
+ 	return -1;
+     case LMUL_2:
+       if (vlmul2 == LMUL_4 || vlmul2 == LMUL_8)
+ 	return 1;
+       else
+ 	return -1;
+     case LMUL_4:
+       if (vlmul2 == LMUL_8)
+ 	return 1;
+       else
+ 	return -1;
+     case LMUL_8:
+       return -1;
+     case LMUL_F2:
+       if (vlmul2 == LMUL_1 || vlmul2 == LMUL_2 || vlmul2 == LMUL_4
+ 	  || vlmul2 == LMUL_8)
+ 	return 1;
+       else
+ 	return -1;
+     case LMUL_F4:
+       if (vlmul2 == LMUL_F2 || vlmul2 == LMUL_1 || vlmul2 == LMUL_2
+ 	  || vlmul2 == LMUL_4 || vlmul2 == LMUL_8)
+ 	return 1;
+       else
+ 	return -1;
+     case LMUL_F8:
+       return 0;
+     default:
+       gcc_unreachable ();
+     }
+ }
+ 
+ static bool
+ second_lmul_less_than_first_lmul_p (const vector_insn_info &info1,
+ 				    const vector_insn_info &info2)
+ {
+   return compare_lmul (info2.get_vlmul (), info1.get_vlmul ()) == -1;
+ }
+ 
+ static bool
+ second_ratio_less_than_first_ratio_p (const vector_insn_info &info1,
+ 				      const vector_insn_info &info2)
+ {
+   return info2.get_ratio () < info1.get_ratio ();
+ }
+ 
+ static CONSTEXPR const demands_cond incompatible_conds[] = {
+ #define DEF_INCOMPATIBLE_COND(AVL1, SEW1, LMUL1, RATIO1, NONZERO_AVL1,         \
+ 			      GE_SEW1, TAIL_POLICTY1, MASK_POLICY1, AVL2,      \
+ 			      SEW2, LMUL2, RATIO2, NONZERO_AVL2, GE_SEW2,      \
+ 			      TAIL_POLICTY2, MASK_POLICY2, COND)               \
+   {{{AVL1, SEW1, LMUL1, RATIO1, NONZERO_AVL1, GE_SEW1, TAIL_POLICTY1,          \
+      MASK_POLICY1},                                                            \
+     {AVL2, SEW2, LMUL2, RATIO2, NONZERO_AVL2, GE_SEW2, TAIL_POLICTY2,          \
+      MASK_POLICY2}},                                                           \
+    COND},
+ #include "riscv-vsetvl.def"
+ };
+ 
+ static unsigned
+ greatest_sew (const vector_insn_info &info1, const vector_insn_info &info2)
+ {
+   return std::max (info1.get_sew (), info2.get_sew ());
+ }
+ 
+ static unsigned
+ first_sew (const vector_insn_info &info1, const vector_insn_info &)
+ {
+   return info1.get_sew ();
+ }
+ 
+ static unsigned
+ second_sew (const vector_insn_info &, const vector_insn_info &info2)
+ {
+   return info2.get_sew ();
+ }
+ 
+ static vlmul_type
+ first_vlmul (const vector_insn_info &info1, const vector_insn_info &)
+ {
+   return info1.get_vlmul ();
+ }
+ 
+ static vlmul_type
+ second_vlmul (const vector_insn_info &, const vector_insn_info &info2)
+ {
+   return info2.get_vlmul ();
+ }
+ 
+ static unsigned
+ first_ratio (const vector_insn_info &info1, const vector_insn_info &)
+ {
+   return info1.get_ratio ();
+ }
+ 
+ static unsigned
+ second_ratio (const vector_insn_info &, const vector_insn_info &info2)
+ {
+   return info2.get_ratio ();
+ }
+ 
+ static vlmul_type
+ vlmul_for_first_sew_second_ratio (const vector_insn_info &info1,
+ 				  const vector_insn_info &info2)
+ {
+   return calculate_vlmul (info1.get_sew (), info2.get_ratio ());
+ }
+ 
+ static unsigned
+ ratio_for_second_sew_first_vlmul (const vector_insn_info &info1,
+ 				  const vector_insn_info &info2)
+ {
+   return calculate_ratio (info2.get_sew (), info1.get_vlmul ());
+ }
+ 
+ static CONSTEXPR const demands_fuse_rule fuse_rules[] = {
+ #define DEF_SEW_LMUL_FUSE_RULE(DEMAND_SEW1, DEMAND_LMUL1, DEMAND_RATIO1,       \
+ 			       DEMAND_GE_SEW1, DEMAND_SEW2, DEMAND_LMUL2,      \
+ 			       DEMAND_RATIO2, DEMAND_GE_SEW2, NEW_DEMAND_SEW,  \
+ 			       NEW_DEMAND_LMUL, NEW_DEMAND_RATIO,              \
+ 			       NEW_DEMAND_GE_SEW, NEW_SEW, NEW_VLMUL,          \
+ 			       NEW_RATIO)                                      \
+   {{{DEMAND_ANY, DEMAND_SEW1, DEMAND_LMUL1, DEMAND_RATIO1, DEMAND_ANY,         \
+      DEMAND_GE_SEW1, DEMAND_ANY, DEMAND_ANY},                                  \
+     {DEMAND_ANY, DEMAND_SEW2, DEMAND_LMUL2, DEMAND_RATIO2, DEMAND_ANY,         \
+      DEMAND_GE_SEW2, DEMAND_ANY, DEMAND_ANY}},                                 \
+    NEW_DEMAND_SEW,                                                             \
+    NEW_DEMAND_LMUL,                                                            \
+    NEW_DEMAND_RATIO,                                                           \
+    NEW_DEMAND_GE_SEW,                                                          \
+    NEW_SEW,                                                                    \
+    NEW_VLMUL,                                                                  \
+    NEW_RATIO},
+ #include "riscv-vsetvl.def"
+ };
+ 
+ static bool
+ always_unavailable (const vector_insn_info &, const vector_insn_info &)
+ {
+   return true;
+ }
+ 
+ static bool
+ avl_unavailable_p (const vector_insn_info &info1, const vector_insn_info &info2)
+ {
+   return !info2.compatible_avl_p (info1.get_avl_info ());
+ }
+ 
+ static bool
+ sew_unavailable_p (const vector_insn_info &info1, const vector_insn_info &info2)
+ {
+   if (!info2.demand_p (DEMAND_LMUL) && !info2.demand_p (DEMAND_RATIO))
+     {
+       if (info2.demand_p (DEMAND_GE_SEW))
+ 	return info1.get_sew () < info2.get_sew ();
+       return info1.get_sew () != info2.get_sew ();
+     }
+   return true;
+ }
+ 
+ static bool
+ lmul_unavailable_p (const vector_insn_info &info1,
+ 		    const vector_insn_info &info2)
+ {
+   if (info1.get_vlmul () == info2.get_vlmul () && !info2.demand_p (DEMAND_SEW)
+       && !info2.demand_p (DEMAND_RATIO))
+     return false;
+   return true;
+ }
+ 
+ static bool
+ ge_sew_unavailable_p (const vector_insn_info &info1,
+ 		      const vector_insn_info &info2)
+ {
+   if (!info2.demand_p (DEMAND_LMUL) && !info2.demand_p (DEMAND_RATIO)
+       && info2.demand_p (DEMAND_GE_SEW))
+     return info1.get_sew () < info2.get_sew ();
+   return true;
+ }
+ 
+ static bool
+ ge_sew_lmul_unavailable_p (const vector_insn_info &info1,
+ 			   const vector_insn_info &info2)
+ {
+   if (!info2.demand_p (DEMAND_RATIO) && info2.demand_p (DEMAND_GE_SEW))
+     return info1.get_sew () < info2.get_sew ();
+   return true;
+ }
+ 
+ static bool
+ ge_sew_ratio_unavailable_p (const vector_insn_info &info1,
+ 			    const vector_insn_info &info2)
+ {
+   if (!info2.demand_p (DEMAND_LMUL) && info2.demand_p (DEMAND_GE_SEW))
+     return info1.get_sew () < info2.get_sew ();
+   return true;
+ }
+ 
+ static CONSTEXPR const demands_cond unavailable_conds[] = {
+ #define DEF_UNAVAILABLE_COND(AVL1, SEW1, LMUL1, RATIO1, NONZERO_AVL1, GE_SEW1, \
+ 			     TAIL_POLICTY1, MASK_POLICY1, AVL2, SEW2, LMUL2,   \
+ 			     RATIO2, NONZERO_AVL2, GE_SEW2, TAIL_POLICTY2,     \
+ 			     MASK_POLICY2, COND)                               \
+   {{{AVL1, SEW1, LMUL1, RATIO1, NONZERO_AVL1, GE_SEW1, TAIL_POLICTY1,          \
+      MASK_POLICY1},                                                            \
+     {AVL2, SEW2, LMUL2, RATIO2, NONZERO_AVL2, GE_SEW2, TAIL_POLICTY2,          \
+      MASK_POLICY2}},                                                           \
+    COND},
+ #include "riscv-vsetvl.def"
+ };
+ 
+ static bool
+ same_sew_lmul_demand_p (const bool *dems1, const bool *dems2)
+ {
+   return dems1[DEMAND_SEW] == dems2[DEMAND_SEW]
+ 	 && dems1[DEMAND_LMUL] == dems2[DEMAND_LMUL]
+ 	 && dems1[DEMAND_RATIO] == dems2[DEMAND_RATIO] && !dems1[DEMAND_GE_SEW]
+ 	 && !dems2[DEMAND_GE_SEW];
+ }
+ 
+ static bool
+ propagate_avl_across_demands_p (const vector_insn_info &info1,
+ 				const vector_insn_info &info2)
+ {
+   if (info2.demand_p (DEMAND_AVL))
+     {
+       if (info2.demand_p (DEMAND_NONZERO_AVL))
+ 	return info1.demand_p (DEMAND_AVL)
+ 	       && !info1.demand_p (DEMAND_NONZERO_AVL) && info1.has_avl_reg ();
+     }
+   else
+     return info1.demand_p (DEMAND_AVL) && info1.has_avl_reg ();
+   return false;
+ }
+ 
+ static bool
+ reg_available_p (const insn_info *insn, const vector_insn_info &info)
+ {
+   if (info.has_avl_reg () && !info.get_avl_source ())
+     return false;
+   insn_info *def_insn = info.get_avl_source ()->insn ();
+   if (def_insn->bb () == insn->bb ())
+     return before_p (def_insn, insn);
+   else
+     return dominated_by_p (CDI_DOMINATORS, insn->bb ()->cfg_bb (),
+ 			   def_insn->bb ()->cfg_bb ());
+ }
+ 
+ /* Return true if the instruction support relaxed compatible check.  */
+ static bool
+ support_relaxed_compatible_p (const vector_insn_info &info1,
+ 			      const vector_insn_info &info2)
+ {
+   if (fault_first_load_p (info1.get_insn ()->rtl ())
+       && info2.demand_p (DEMAND_AVL) && info2.has_avl_reg ()
+       && info2.get_avl_source () && info2.get_avl_source ()->insn ()->is_phi ())
+     {
+       hash_set<set_info *> sets
+ 	= get_all_sets (info2.get_avl_source (), true, false, false);
+       for (set_info *set : sets)
+ 	{
+ 	  if (read_vl_insn_p (set->insn ()->rtl ()))
+ 	    {
+ 	      const insn_info *insn
+ 		= get_backward_fault_first_load_insn (set->insn ());
+ 	      if (insn == info1.get_insn ())
+ 		return info2.compatible_vtype_p (info1);
+ 	    }
+ 	}
+     }
+   return false;
+ }
+ 
+ /* Return true if the block is worthwhile backward propagation.  */
+ static bool
+ backward_propagate_worthwhile_p (const basic_block cfg_bb,
+ 				 const vector_block_info block_info)
+ {
+   if (loop_basic_block_p (cfg_bb))
+     {
+       if (block_info.reaching_out.valid_or_dirty_p ())
+ 	{
+ 	  if (block_info.local_dem.compatible_p (block_info.reaching_out))
+ 	    {
+ 	      /* Case 1 (Can backward propagate):
+ 		 ....
+ 		 bb0:
+ 		 ...
+ 		 for (int i = 0; i < n; i++)
+ 		   {
+ 		     vint16mf4_t v = __riscv_vle16_v_i16mf4 (in + i + 5, 7);
+ 		     __riscv_vse16_v_i16mf4 (out + i + 5, v, 7);
+ 		   }
+ 		 The local_dem is compatible with reaching_out. Such case is
+ 		 worthwhile backward propagation.  */
+ 	      return true;
+ 	    }
+ 	  else
+ 	    {
+ 	      if (support_relaxed_compatible_p (block_info.reaching_out,
+ 						block_info.local_dem))
+ 		return true;
+ 	      /* Case 2 (Don't backward propagate):
+ 		    ....
+ 		    bb0:
+ 		    ...
+ 		    for (int i = 0; i < n; i++)
+ 		      {
+ 			vint16mf4_t v = __riscv_vle16_v_i16mf4 (in + i + 5, 7);
+ 			__riscv_vse16_v_i16mf4 (out + i + 5, v, 7);
+ 			vint16mf2_t v2 = __riscv_vle16_v_i16mf2 (in + i + 6, 8);
+ 			__riscv_vse16_v_i16mf2 (out + i + 6, v, 8);
+ 		      }
+ 		 The local_dem is incompatible with reaching_out.
+ 		 It makes no sense to backward propagate the local_dem since we
+ 		 can't avoid VSETVL inside the loop.  */
+ 	      return false;
+ 	    }
+ 	}
+       else
+ 	{
+ 	  gcc_assert (block_info.reaching_out.unknown_p ());
+ 	  /* Case 3 (Don't backward propagate):
+ 		....
+ 		bb0:
+ 		...
+ 		for (int i = 0; i < n; i++)
+ 		  {
+ 		    vint16mf4_t v = __riscv_vle16_v_i16mf4 (in + i + 5, 7);
+ 		    __riscv_vse16_v_i16mf4 (out + i + 5, v, 7);
+ 		    fn3 ();
+ 		  }
+ 	    The local_dem is VALID, but the reaching_out is UNKNOWN.
+ 	    It makes no sense to backward propagate the local_dem since we
+ 	    can't avoid VSETVL inside the loop.  */
+ 	  return false;
+ 	}
+     }
+ 
+   return true;
+ }
+ 
+ avl_info::avl_info (const avl_info &other)
+ {
+   m_value = other.get_value ();
+   m_source = other.get_source ();
+ }
+ 
+ avl_info::avl_info (rtx value_in, set_info *source_in)
+   : m_value (value_in), m_source (source_in)
+ {}
+ 
+ bool
+ avl_info::single_source_equal_p (const avl_info &other) const
+ {
+   set_info *set1 = m_source;
+   set_info *set2 = other.get_source ();
+   insn_info *insn1 = extract_single_source (set1);
+   insn_info *insn2 = extract_single_source (set2);
+   if (!insn1 || !insn2)
+     return false;
+   return source_equal_p (insn1, insn2);
+ }
+ 
+ bool
+ avl_info::multiple_source_equal_p (const avl_info &other) const
+ {
+   /* TODO: We don't do too much optimization here since it's
+      too complicated in case of analyzing the PHI node.
+ 
+      For example:
+        void f (void * restrict in, void * restrict out, int n, int m, int cond)
+ 	{
+ 	  size_t vl;
+ 	  switch (cond)
+ 	  {
+ 	  case 1:
+ 	    vl = 100;
+ 	    break;
+ 	  case 2:
+ 	    vl = *(size_t*)(in + 100);
+ 	    break;
+ 	  case 3:
+ 	    {
+ 	      size_t new_vl = *(size_t*)(in + 500);
+ 	      size_t new_vl2 = *(size_t*)(in + 600);
+ 	      vl = new_vl + new_vl2 + 777;
+ 	      break;
+ 	    }
+ 	  default:
+ 	    vl = 4000;
+ 	    break;
+ 	  }
+ 	  for (size_t i = 0; i < n; i++)
+ 	    {
+ 	      vint8mf8_t v = __riscv_vle8_v_i8mf8 (in + i, vl);
+ 	      __riscv_vse8_v_i8mf8 (out + i, v, vl);
+ 
+ 	      vint8mf8_t v2 = __riscv_vle8_v_i8mf8_tu (v, in + i + 100, vl);
+ 	      __riscv_vse8_v_i8mf8 (out + i + 100, v2, vl);
+ 	    }
+ 
+ 	  size_t vl2;
+ 	  switch (cond)
+ 	  {
+ 	  case 1:
+ 	    vl2 = 100;
+ 	    break;
+ 	  case 2:
+ 	    vl2 = *(size_t*)(in + 100);
+ 	    break;
+ 	  case 3:
+ 	    {
+ 	      size_t new_vl = *(size_t*)(in + 500);
+ 	      size_t new_vl2 = *(size_t*)(in + 600);
+ 	      vl2 = new_vl + new_vl2 + 777;
+ 	      break;
+ 	    }
+ 	  default:
+ 	    vl2 = 4000;
+ 	    break;
+ 	  }
+ 	  for (size_t i = 0; i < m; i++)
+ 	    {
+ 	      vint8mf8_t v = __riscv_vle8_v_i8mf8 (in + i + 300, vl2);
+ 	      __riscv_vse8_v_i8mf8 (out + i + 300, v, vl2);
+ 	      vint8mf8_t v2 = __riscv_vle8_v_i8mf8_tu (v, in + i + 200, vl2);
+ 	      __riscv_vse8_v_i8mf8 (out + i + 200, v2, vl2);
+ 	    }
+ 	}
+      Such case may not be necessary to optimize since the codes of defining
+      vl and vl2 are redundant.  */
+   return m_source == other.get_source ();
+ }
+ 
+ avl_info &
+ avl_info::operator= (const avl_info &other)
+ {
+   m_value = other.get_value ();
+   m_source = other.get_source ();
+   return *this;
+ }
+ 
+ bool
+ avl_info::operator== (const avl_info &other) const
+ {
+   if (!m_value)
+     return !other.get_value ();
+   if (!other.get_value ())
+     return false;
+ 
+   if (GET_CODE (m_value) != GET_CODE (other.get_value ()))
+     return false;
+ 
+   /* Handle CONST_INT AVL.  */
+   if (CONST_INT_P (m_value))
+     return INTVAL (m_value) == INTVAL (other.get_value ());
+ 
+   /* Handle VLMAX AVL.  */
+   if (vlmax_avl_p (m_value))
+     return vlmax_avl_p (other.get_value ());
+ 
+   /* If any source is undef value, we think they are not equal.  */
+   if (!m_source || !other.get_source ())
+     return false;
+ 
+   /* If both sources are single source (defined by a single real RTL)
+      and their definitions are same.  */
+   if (single_source_equal_p (other))
+     return true;
+ 
+   return multiple_source_equal_p (other);
+ }
+ 
+ bool
+ avl_info::operator!= (const avl_info &other) const
+ {
+   return !(*this == other);
+ }
+ 
+ bool
+ avl_info::has_non_zero_avl () const
+ {
+   if (has_avl_imm ())
+     return INTVAL (get_value ()) > 0;
+   if (has_avl_reg ())
+     return vlmax_avl_p (get_value ());
+   return false;
+ }
+ 
+ /* Initialize VL/VTYPE information.  */
+ vl_vtype_info::vl_vtype_info (avl_info avl_in, uint8_t sew_in,
+ 			      enum vlmul_type vlmul_in, uint8_t ratio_in,
+ 			      bool ta_in, bool ma_in)
+   : m_avl (avl_in), m_sew (sew_in), m_vlmul (vlmul_in), m_ratio (ratio_in),
+     m_ta (ta_in), m_ma (ma_in)
+ {
+   gcc_assert (valid_sew_p (m_sew) && "Unexpected SEW");
+ }
+ 
+ bool
+ vl_vtype_info::operator== (const vl_vtype_info &other) const
+ {
+   return same_avl_p (other) && m_sew == other.get_sew ()
+ 	 && m_vlmul == other.get_vlmul () && m_ta == other.get_ta ()
+ 	 && m_ma == other.get_ma () && m_ratio == other.get_ratio ();
+ }
+ 
+ bool
+ vl_vtype_info::operator!= (const vl_vtype_info &other) const
+ {
+   return !(*this == other);
+ }
+ 
+ bool
+ vl_vtype_info::same_avl_p (const vl_vtype_info &other) const
+ {
+   /* We need to compare both RTL and SET. If both AVL are CONST_INT.
+      For example, const_int 3 and const_int 4, we need to compare
+      RTL. If both AVL are REG and their REGNO are same, we need to
+      compare SET.  */
+   return get_avl () == other.get_avl ()
+ 	 && get_avl_source () == other.get_avl_source ();
+ }
+ 
+ bool
+ vl_vtype_info::same_vtype_p (const vl_vtype_info &other) const
+ {
+   return get_sew () == other.get_sew () && get_vlmul () == other.get_vlmul ()
+ 	 && get_ta () == other.get_ta () && get_ma () == other.get_ma ();
+ }
+ 
+ bool
+ vl_vtype_info::same_vlmax_p (const vl_vtype_info &other) const
+ {
+   return get_ratio () == other.get_ratio ();
+ }
+ 
+ /* Compare the compatibility between Dem1 and Dem2.
+    If Dem1 > Dem2, Dem1 has bigger compatibility then Dem2
+    meaning Dem1 is easier be compatible with others than Dem2
+    or Dem2 is stricter than Dem1.
+    For example, Dem1 (demand SEW + LMUL) > Dem2 (demand RATIO).  */
+ bool
+ vector_insn_info::operator>= (const vector_insn_info &other) const
+ {
+   if (support_relaxed_compatible_p (*this, other))
+     {
+       unsigned array_size = sizeof (unavailable_conds) / sizeof (demands_cond);
+       /* Bypass AVL unavailable cases.  */
+       for (unsigned i = 2; i < array_size; i++)
+ 	if (unavailable_conds[i].pair.match_cond_p (this->get_demands (),
+ 						    other.get_demands ())
+ 	    && unavailable_conds[i].incompatible_p (*this, other))
+ 	  return false;
+       return true;
+     }
+ 
+   if (!other.compatible_p (static_cast<const vl_vtype_info &> (*this)))
+     return false;
+   if (!this->compatible_p (static_cast<const vl_vtype_info &> (other)))
+     return true;
+ 
+   if (*this == other)
+     return true;
+ 
+   for (const auto &cond : unavailable_conds)
+     if (cond.pair.match_cond_p (this->get_demands (), other.get_demands ())
+ 	&& cond.incompatible_p (*this, other))
+       return false;
+ 
+   return true;
+ }
+ 
+ bool
+ vector_insn_info::operator== (const vector_insn_info &other) const
+ {
+   gcc_assert (!uninit_p () && !other.uninit_p ()
+ 	      && "Uninitialization should not happen");
+ 
+   /* Empty is only equal to another Empty.  */
+   if (empty_p ())
+     return other.empty_p ();
+   if (other.empty_p ())
+     return empty_p ();
+ 
+   /* Unknown is only equal to another Unknown.  */
+   if (unknown_p ())
+     return other.unknown_p ();
+   if (other.unknown_p ())
+     return unknown_p ();
+ 
+   for (size_t i = 0; i < NUM_DEMAND; i++)
+     if (m_demands[i] != other.demand_p ((enum demand_type) i))
+       return false;
+ 
+   if (vector_config_insn_p (m_insn->rtl ())
+       || vector_config_insn_p (other.get_insn ()->rtl ()))
+     if (m_insn != other.get_insn ())
+       return false;
+ 
+   if (!same_avl_p (other))
+     return false;
+ 
+   /* If the full VTYPE is valid, check that it is the same.  */
+   return same_vtype_p (other);
+ }
+ 
+ void
+ vector_insn_info::parse_insn (rtx_insn *rinsn)
+ {
+   *this = vector_insn_info ();
+   if (!NONDEBUG_INSN_P (rinsn))
+     return;
+   if (!has_vtype_op (rinsn))
+     return;
+   m_state = VALID;
+   extract_insn_cached (rinsn);
+   const rtx avl = recog_data.operand[get_attr_vl_op_idx (rinsn)];
+   m_avl = avl_info (avl, nullptr);
+   m_sew = ::get_sew (rinsn);
+   m_vlmul = ::get_vlmul (rinsn);
+   m_ta = tail_agnostic_p (rinsn);
+   m_ma = mask_agnostic_p (rinsn);
+ }
+ 
+ void
+ vector_insn_info::parse_insn (insn_info *insn)
+ {
+   *this = vector_insn_info ();
+ 
+   /* Return if it is debug insn for the consistency with optimize == 0.  */
+   if (insn->is_debug_insn ())
+     return;
+ 
+   /* We set it as unknown since we don't what will happen in CALL or ASM.  */
+   if (insn->is_call () || insn->is_asm ())
+     {
+       set_unknown ();
+       return;
+     }
+ 
+   /* If this is something that updates VL/VTYPE that we don't know about, set
+      the state to unknown.  */
+   if (!vector_config_insn_p (insn->rtl ()) && !has_vtype_op (insn->rtl ())
+       && (find_access (insn->defs (), VL_REGNUM)
+ 	  || find_access (insn->defs (), VTYPE_REGNUM)))
+     {
+       set_unknown ();
+       return;
+     }
+ 
+   if (!vector_config_insn_p (insn->rtl ()) && !has_vtype_op (insn->rtl ()))
+     return;
+ 
+   /* Warning: This function has to work on both the lowered (i.e. post
+      emit_local_forward_vsetvls) and pre-lowering forms.  The main implication
+      of this is that it can't use the value of a SEW, VL, or Policy operand as
+      they might be stale after lowering.  */
+   vl_vtype_info::operator= (get_vl_vtype_info (insn));
+   m_insn = insn;
+   m_state = VALID;
+   if (vector_config_insn_p (insn->rtl ()))
+     {
+       m_demands[DEMAND_AVL] = true;
+       m_demands[DEMAND_RATIO] = true;
+       return;
+     }
+ 
+   if (has_vl_op (insn->rtl ()))
+     m_demands[DEMAND_AVL] = true;
+ 
+   if (get_attr_ratio (insn->rtl ()) != INVALID_ATTRIBUTE)
+     m_demands[DEMAND_RATIO] = true;
+   else
+     {
+       /* TODO: By default, if it doesn't demand RATIO, we set it
+ 	 demand SEW && LMUL both. Some instructions may demand SEW
+ 	 only and ignore LMUL, will fix it later.  */
+       m_demands[DEMAND_SEW] = true;
+       if (!ignore_vlmul_insn_p (insn->rtl ()))
+ 	m_demands[DEMAND_LMUL] = true;
+     }
+ 
+   if (get_attr_ta (insn->rtl ()) != INVALID_ATTRIBUTE)
+     m_demands[DEMAND_TAIL_POLICY] = true;
+   if (get_attr_ma (insn->rtl ()) != INVALID_ATTRIBUTE)
+     m_demands[DEMAND_MASK_POLICY] = true;
+ 
+   if (vector_config_insn_p (insn->rtl ()))
+     return;
+ 
+   if (scalar_move_insn_p (insn->rtl ()))
+     {
+       if (m_avl.has_non_zero_avl ())
+ 	m_demands[DEMAND_NONZERO_AVL] = true;
+       if (m_ta)
+ 	m_demands[DEMAND_GE_SEW] = true;
+     }
+ 
+   if (!m_avl.has_avl_reg () || vlmax_avl_p (get_avl ()) || !m_avl.get_source ())
+     return;
+   if (!m_avl.get_source ()->insn ()->is_real ()
+       && !m_avl.get_source ()->insn ()->is_phi ())
+     return;
+ 
+   insn_info *def_insn = extract_single_source (m_avl.get_source ());
+   if (!def_insn || !vsetvl_insn_p (def_insn->rtl ()))
+     return;
+ 
+   vector_insn_info new_info;
+   new_info.parse_insn (def_insn);
+   if (!same_vlmax_p (new_info) && !scalar_move_insn_p (insn->rtl ()))
+     return;
+   /* TODO: Currently, we don't forward AVL for non-VLMAX vsetvl.  */
+   if (vlmax_avl_p (new_info.get_avl ()))
+     set_avl_info (avl_info (new_info.get_avl (), get_avl_source ()));
+ 
+   if (scalar_move_insn_p (insn->rtl ()) && m_avl.has_non_zero_avl ())
+     m_demands[DEMAND_NONZERO_AVL] = true;
+ }
+ 
+ bool
+ vector_insn_info::compatible_p (const vector_insn_info &other) const
+ {
+   gcc_assert (valid_or_dirty_p () && other.valid_or_dirty_p ()
+ 	      && "Can't compare invalid demanded infos");
+ 
+   for (const auto &cond : incompatible_conds)
+     if (cond.dual_incompatible_p (*this, other))
+       return false;
+   return true;
+ }
+ 
+ bool
+ vector_insn_info::compatible_avl_p (const vl_vtype_info &other) const
+ {
+   gcc_assert (valid_or_dirty_p () && "Can't compare invalid vl_vtype_info");
+   gcc_assert (!unknown_p () && "Can't compare AVL in unknown state");
+   if (!demand_p (DEMAND_AVL))
+     return true;
+   if (demand_p (DEMAND_NONZERO_AVL) && other.has_non_zero_avl ())
+     return true;
+   return get_avl_info () == other.get_avl_info ();
+ }
+ 
+ bool
+ vector_insn_info::compatible_avl_p (const avl_info &other) const
+ {
+   gcc_assert (valid_or_dirty_p () && "Can't compare invalid vl_vtype_info");
+   gcc_assert (!unknown_p () && "Can't compare AVL in unknown state");
+   gcc_assert (demand_p (DEMAND_AVL) && "Can't compare AVL undemand state");
+   if (!demand_p (DEMAND_AVL))
+     return true;
+   if (demand_p (DEMAND_NONZERO_AVL) && other.has_non_zero_avl ())
+     return true;
+   return get_avl_info () == other;
+ }
+ 
+ bool
+ vector_insn_info::compatible_vtype_p (const vl_vtype_info &other) const
+ {
+   gcc_assert (valid_or_dirty_p () && "Can't compare invalid vl_vtype_info");
+   gcc_assert (!unknown_p () && "Can't compare VTYPE in unknown state");
+   if (demand_p (DEMAND_SEW))
+     {
+       if (!demand_p (DEMAND_GE_SEW) && m_sew != other.get_sew ())
+ 	return false;
+       if (demand_p (DEMAND_GE_SEW) && m_sew > other.get_sew ())
+ 	return false;
+     }
+   if (demand_p (DEMAND_LMUL) && m_vlmul != other.get_vlmul ())
+     return false;
+   if (demand_p (DEMAND_RATIO) && m_ratio != other.get_ratio ())
+     return false;
+   if (demand_p (DEMAND_TAIL_POLICY) && m_ta != other.get_ta ())
+     return false;
+   if (demand_p (DEMAND_MASK_POLICY) && m_ma != other.get_ma ())
+     return false;
+   return true;
+ }
+ 
+ /* Determine whether the vector instructions requirements represented by
+    Require are compatible with the previous vsetvli instruction represented
+    by this.  INSN is the instruction whose requirements we're considering.  */
+ bool
+ vector_insn_info::compatible_p (const vl_vtype_info &curr_info) const
+ {
+   gcc_assert (!uninit_p () && "Can't handle uninitialized info");
+   if (empty_p ())
+     return false;
+ 
+   /* Nothing is compatible with Unknown.  */
+   if (unknown_p ())
+     return false;
+ 
+   /* If the instruction doesn't need an AVLReg and the SEW matches, consider
+      it compatible.  */
+   if (!demand_p (DEMAND_AVL))
+     if (m_sew == curr_info.get_sew ())
+       return true;
+ 
+   return compatible_avl_p (curr_info) && compatible_vtype_p (curr_info);
+ }
+ 
+ bool
+ vector_insn_info::available_p (const vector_insn_info &other) const
+ {
+   return *this >= other;
+ }
+ 
+ void
+ vector_insn_info::fuse_avl (const vector_insn_info &info1,
+ 			    const vector_insn_info &info2)
+ {
+   set_insn (info1.get_insn ());
+   if (info1.demand_p (DEMAND_AVL))
+     {
+       if (info1.demand_p (DEMAND_NONZERO_AVL))
+ 	{
+ 	  if (info2.demand_p (DEMAND_AVL)
+ 	      && !info2.demand_p (DEMAND_NONZERO_AVL))
+ 	    {
+ 	      set_avl_info (info2.get_avl_info ());
+ 	      set_demand (DEMAND_AVL, true);
+ 	      set_demand (DEMAND_NONZERO_AVL, false);
+ 	      return;
+ 	    }
+ 	}
+       set_avl_info (info1.get_avl_info ());
+       set_demand (DEMAND_NONZERO_AVL, info1.demand_p (DEMAND_NONZERO_AVL));
+     }
+   else
+     {
+       set_avl_info (info2.get_avl_info ());
+       set_demand (DEMAND_NONZERO_AVL, info2.demand_p (DEMAND_NONZERO_AVL));
+     }
+   set_demand (DEMAND_AVL,
+ 	      info1.demand_p (DEMAND_AVL) || info2.demand_p (DEMAND_AVL));
+ }
+ 
+ void
+ vector_insn_info::fuse_sew_lmul (const vector_insn_info &info1,
+ 				 const vector_insn_info &info2)
+ {
+   /* We need to fuse sew && lmul according to demand info:
+ 
+      1. GE_SEW.
+      2. SEW.
+      3. LMUL.
+      4. RATIO.  */
+   if (same_sew_lmul_demand_p (info1.get_demands (), info2.get_demands ()))
+     {
+       set_demand (DEMAND_SEW, info2.demand_p (DEMAND_SEW));
+       set_demand (DEMAND_LMUL, info2.demand_p (DEMAND_LMUL));
+       set_demand (DEMAND_RATIO, info2.demand_p (DEMAND_RATIO));
+       set_demand (DEMAND_GE_SEW, info2.demand_p (DEMAND_GE_SEW));
+       set_sew (info2.get_sew ());
+       set_vlmul (info2.get_vlmul ());
+       set_ratio (info2.get_ratio ());
+       return;
+     }
+   for (const auto &rule : fuse_rules)
+     {
+       if (rule.pair.match_cond_p (info1.get_demands (), info2.get_demands ()))
+ 	{
+ 	  set_demand (DEMAND_SEW, rule.demand_sew_p);
+ 	  set_demand (DEMAND_LMUL, rule.demand_lmul_p);
+ 	  set_demand (DEMAND_RATIO, rule.demand_ratio_p);
+ 	  set_demand (DEMAND_GE_SEW, rule.demand_ge_sew_p);
+ 	  set_sew (rule.new_sew (info1, info2));
+ 	  set_vlmul (rule.new_vlmul (info1, info2));
+ 	  set_ratio (rule.new_ratio (info1, info2));
+ 	  return;
+ 	}
+       if (rule.pair.match_cond_p (info2.get_demands (), info1.get_demands ()))
+ 	{
+ 	  set_demand (DEMAND_SEW, rule.demand_sew_p);
+ 	  set_demand (DEMAND_LMUL, rule.demand_lmul_p);
+ 	  set_demand (DEMAND_RATIO, rule.demand_ratio_p);
+ 	  set_demand (DEMAND_GE_SEW, rule.demand_ge_sew_p);
+ 	  set_sew (rule.new_sew (info2, info1));
+ 	  set_vlmul (rule.new_vlmul (info2, info1));
+ 	  set_ratio (rule.new_ratio (info2, info1));
+ 	  return;
+ 	}
+     }
+   gcc_unreachable ();
+ }
+ 
+ void
+ vector_insn_info::fuse_tail_policy (const vector_insn_info &info1,
+ 				    const vector_insn_info &info2)
+ {
+   if (info1.demand_p (DEMAND_TAIL_POLICY))
+     {
+       set_ta (info1.get_ta ());
+       demand (DEMAND_TAIL_POLICY);
+     }
+   else if (info2.demand_p (DEMAND_TAIL_POLICY))
+     {
+       set_ta (info2.get_ta ());
+       demand (DEMAND_TAIL_POLICY);
+     }
+   else
+     set_ta (get_default_ta ());
+ }
+ 
+ void
+ vector_insn_info::fuse_mask_policy (const vector_insn_info &info1,
+ 				    const vector_insn_info &info2)
+ {
+   if (info1.demand_p (DEMAND_MASK_POLICY))
+     {
+       set_ma (info1.get_ma ());
+       demand (DEMAND_MASK_POLICY);
+     }
+   else if (info2.demand_p (DEMAND_MASK_POLICY))
+     {
+       set_ma (info2.get_ma ());
+       demand (DEMAND_MASK_POLICY);
+     }
+   else
+     set_ma (get_default_ma ());
+ }
+ 
+ vector_insn_info
+ vector_insn_info::merge (const vector_insn_info &merge_info,
+ 			 enum merge_type type = LOCAL_MERGE) const
+ {
+   if (!vsetvl_insn_p (get_insn ()->rtl ()))
+     gcc_assert (this->compatible_p (merge_info)
+ 		&& "Can't merge incompatible demanded infos");
+ 
+   vector_insn_info new_info;
+   new_info.set_valid ();
+   if (type == LOCAL_MERGE)
+     {
+       /* For local backward data flow, we always update INSN && AVL as the
+ 	 latest INSN and AVL so that we can keep track status of each INSN.  */
+       new_info.fuse_avl (merge_info, *this);
+     }
+   else
+     {
+       /* For global data flow, we should keep original INSN and AVL if they
+       valid since we should keep the life information of each block.
+ 
+       For example:
+ 	bb 0 -> bb 1.
+       We should keep INSN && AVL of bb 1 since we will eventually emit
+       vsetvl instruction according to INSN and AVL of bb 1.  */
+       new_info.fuse_avl (*this, merge_info);
+     }
+ 
+   new_info.fuse_sew_lmul (*this, merge_info);
+   new_info.fuse_tail_policy (*this, merge_info);
+   new_info.fuse_mask_policy (*this, merge_info);
+   return new_info;
+ }
+ 
+ bool
+ vector_insn_info::update_fault_first_load_avl (insn_info *insn)
+ {
+   // Update AVL to vl-output of the fault first load.
+   const insn_info *read_vl = get_forward_read_vl_insn (insn);
+   if (read_vl)
+     {
+       rtx vl = SET_DEST (PATTERN (read_vl->rtl ()));
+       def_info *def = find_access (read_vl->defs (), REGNO (vl));
+       set_info *set = safe_dyn_cast<set_info *> (def);
+       set_avl_info (avl_info (vl, set));
+       set_insn (insn);
+       return true;
+     }
+   return false;
+ }
+ 
+ void
+ vector_insn_info::dump (FILE *file) const
+ {
+   fprintf (file, "[");
+   if (uninit_p ())
+     fprintf (file, "UNINITIALIZED,");
+   else if (valid_p ())
+     fprintf (file, "VALID,");
+   else if (unknown_p ())
+     fprintf (file, "UNKNOWN,");
+   else if (empty_p ())
+     fprintf (file, "EMPTY,");
+   else if (hard_empty_p ())
+     fprintf (file, "HARD_EMPTY,");
+   else if (dirty_with_killed_avl_p ())
+     fprintf (file, "DIRTY_WITH_KILLED_AVL,");
+   else
+     fprintf (file, "DIRTY,");
+ 
+   fprintf (file, "Demand field={%d(VL),", demand_p (DEMAND_AVL));
+   fprintf (file, "%d(DEMAND_NONZERO_AVL),", demand_p (DEMAND_NONZERO_AVL));
+   fprintf (file, "%d(SEW),", demand_p (DEMAND_SEW));
+   fprintf (file, "%d(DEMAND_GE_SEW),", demand_p (DEMAND_GE_SEW));
+   fprintf (file, "%d(LMUL),", demand_p (DEMAND_LMUL));
+   fprintf (file, "%d(RATIO),", demand_p (DEMAND_RATIO));
+   fprintf (file, "%d(TAIL_POLICY),", demand_p (DEMAND_TAIL_POLICY));
+   fprintf (file, "%d(MASK_POLICY)}\n", demand_p (DEMAND_MASK_POLICY));
+ 
+   fprintf (file, "AVL=");
+   print_rtl_single (file, get_avl ());
+   fprintf (file, "SEW=%d,", get_sew ());
+   fprintf (file, "VLMUL=%d,", get_vlmul ());
+   fprintf (file, "RATIO=%d,", get_ratio ());
+   fprintf (file, "TAIL_POLICY=%d,", get_ta ());
+   fprintf (file, "MASK_POLICY=%d", get_ma ());
+   fprintf (file, "]\n");
+ 
+   if (valid_p ())
+     {
+       if (get_insn ())
+ 	{
+ 	  fprintf (file, "The real INSN=");
+ 	  print_rtl_single (file, get_insn ()->rtl ());
+ 	}
+     }
+ }
+ 
+ vector_infos_manager::vector_infos_manager ()
+ {
+   vector_edge_list = nullptr;
+   vector_kill = nullptr;
+   vector_del = nullptr;
+   vector_insert = nullptr;
+   vector_antic = nullptr;
+   vector_transp = nullptr;
+   vector_comp = nullptr;
+   vector_avin = nullptr;
+   vector_avout = nullptr;
+   vector_insn_infos.safe_grow (get_max_uid ());
+   vector_block_infos.safe_grow (last_basic_block_for_fn (cfun));
+   if (!optimize)
+     {
+       basic_block cfg_bb;
+       rtx_insn *rinsn;
+       FOR_ALL_BB_FN (cfg_bb, cfun)
+ 	{
+ 	  vector_block_infos[cfg_bb->index].local_dem = vector_insn_info ();
+ 	  vector_block_infos[cfg_bb->index].reaching_out = vector_insn_info ();
+ 	  FOR_BB_INSNS (cfg_bb, rinsn)
+ 	    vector_insn_infos[INSN_UID (rinsn)].parse_insn (rinsn);
+ 	}
+     }
+   else
+     {
+       for (const bb_info *bb : crtl->ssa->bbs ())
+ 	{
+ 	  vector_block_infos[bb->index ()].local_dem = vector_insn_info ();
+ 	  vector_block_infos[bb->index ()].reaching_out = vector_insn_info ();
+ 	  for (insn_info *insn : bb->real_insns ())
+ 	    vector_insn_infos[insn->uid ()].parse_insn (insn);
+ 	  vector_block_infos[bb->index ()].probability = profile_probability ();
+ 	}
+     }
+ }
+ 
+ void
+ vector_infos_manager::create_expr (vector_insn_info &info)
+ {
+   for (size_t i = 0; i < vector_exprs.length (); i++)
+     if (*vector_exprs[i] == info)
+       return;
+   vector_exprs.safe_push (&info);
+ }
+ 
+ size_t
+ vector_infos_manager::get_expr_id (const vector_insn_info &info) const
+ {
+   for (size_t i = 0; i < vector_exprs.length (); i++)
+     if (*vector_exprs[i] == info)
+       return i;
+   gcc_unreachable ();
+ }
+ 
+ auto_vec<size_t>
+ vector_infos_manager::get_all_available_exprs (
+   const vector_insn_info &info) const
+ {
+   auto_vec<size_t> available_list;
+   for (size_t i = 0; i < vector_exprs.length (); i++)
+     if (info.available_p (*vector_exprs[i]))
+       available_list.safe_push (i);
+   return available_list;
+ }
+ 
+ bool
+ vector_infos_manager::all_same_ratio_p (sbitmap bitdata) const
+ {
+   if (bitmap_empty_p (bitdata))
+     return false;
+ 
+   int ratio = -1;
+   unsigned int bb_index;
+   sbitmap_iterator sbi;
+ 
+   EXECUTE_IF_SET_IN_BITMAP (bitdata, 0, bb_index, sbi)
+   {
+     if (ratio == -1)
+       ratio = vector_exprs[bb_index]->get_ratio ();
+     else if (vector_exprs[bb_index]->get_ratio () != ratio)
+       return false;
+   }
+   return true;
+ }
+ 
+ bool
+ vector_infos_manager::all_same_avl_p (const basic_block cfg_bb,
+ 				      sbitmap bitdata) const
+ {
+   if (bitmap_empty_p (bitdata))
+     return false;
+ 
+   const auto &block_info = vector_block_infos[cfg_bb->index];
+   if (!block_info.local_dem.demand_p (DEMAND_AVL))
+     return true;
+ 
+   avl_info avl = block_info.local_dem.get_avl_info ();
+   unsigned int bb_index;
+   sbitmap_iterator sbi;
+ 
+   EXECUTE_IF_SET_IN_BITMAP (bitdata, 0, bb_index, sbi)
+   {
+     if (vector_exprs[bb_index]->get_avl_info () != avl)
+       return false;
+   }
+   return true;
+ }
+ 
+ size_t
+ vector_infos_manager::expr_set_num (sbitmap bitdata) const
+ {
+   size_t count = 0;
+   for (size_t i = 0; i < vector_exprs.length (); i++)
+     if (bitmap_bit_p (bitdata, i))
+       count++;
+   return count;
+ }
+ 
+ void
+ vector_infos_manager::release (void)
+ {
+   if (!vector_insn_infos.is_empty ())
+     vector_insn_infos.release ();
+   if (!vector_block_infos.is_empty ())
+     vector_block_infos.release ();
+   if (!vector_exprs.is_empty ())
+     vector_exprs.release ();
+ 
+   gcc_assert (to_refine_vsetvls.is_empty ());
+   gcc_assert (to_delete_vsetvls.is_empty ());
+   if (optimize > 0)
+     free_bitmap_vectors ();
+ }
+ 
+ void
+ vector_infos_manager::create_bitmap_vectors (void)
+ {
+   /* Create the bitmap vectors.  */
+   vector_antic = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 				       vector_exprs.length ());
+   vector_transp = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 					vector_exprs.length ());
+   vector_comp = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 				      vector_exprs.length ());
+   vector_avin = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 				      vector_exprs.length ());
+   vector_avout = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 				       vector_exprs.length ());
+   vector_kill = sbitmap_vector_alloc (last_basic_block_for_fn (cfun),
+ 				      vector_exprs.length ());
+ 
+   bitmap_vector_ones (vector_transp, last_basic_block_for_fn (cfun));
+   bitmap_vector_clear (vector_antic, last_basic_block_for_fn (cfun));
+   bitmap_vector_clear (vector_comp, last_basic_block_for_fn (cfun));
+ }
+ 
+ void
+ vector_infos_manager::free_bitmap_vectors (void)
+ {
+   /* Finished. Free up all the things we've allocated.  */
+   free_edge_list (vector_edge_list);
+   if (vector_del)
+     sbitmap_vector_free (vector_del);
+   if (vector_insert)
+     sbitmap_vector_free (vector_insert);
+   if (vector_kill)
+     sbitmap_vector_free (vector_kill);
+   if (vector_antic)
+     sbitmap_vector_free (vector_antic);
+   if (vector_transp)
+     sbitmap_vector_free (vector_transp);
+   if (vector_comp)
+     sbitmap_vector_free (vector_comp);
+   if (vector_avin)
+     sbitmap_vector_free (vector_avin);
+   if (vector_avout)
+     sbitmap_vector_free (vector_avout);
+ 
+   vector_edge_list = nullptr;
+   vector_kill = nullptr;
+   vector_del = nullptr;
+   vector_insert = nullptr;
+   vector_antic = nullptr;
+   vector_transp = nullptr;
+   vector_comp = nullptr;
+   vector_avin = nullptr;
+   vector_avout = nullptr;
+ }
+ 
+ void
+ vector_infos_manager::dump (FILE *file) const
+ {
+   basic_block cfg_bb;
+   rtx_insn *rinsn;
+ 
+   fprintf (file, "\n");
+   FOR_ALL_BB_FN (cfg_bb, cfun)
+     {
+       fprintf (file, "Local vector info of <bb %d>:\n", cfg_bb->index);
+       fprintf (file, "<HEADER>=");
+       vector_block_infos[cfg_bb->index].local_dem.dump (file);
+       FOR_BB_INSNS (cfg_bb, rinsn)
+ 	{
+ 	  if (!NONDEBUG_INSN_P (rinsn) || !has_vtype_op (rinsn))
+ 	    continue;
+ 	  fprintf (file, "<insn %d>=", INSN_UID (rinsn));
+ 	  const auto &info = vector_insn_infos[INSN_UID (rinsn)];
+ 	  info.dump (file);
+ 	}
+       fprintf (file, "<FOOTER>=");
+       vector_block_infos[cfg_bb->index].reaching_out.dump (file);
+       fprintf (file, "<Probability>=");
+       vector_block_infos[cfg_bb->index].probability.dump (file);
+       fprintf (file, "\n\n");
+     }
+ 
+   fprintf (file, "\n");
+   FOR_ALL_BB_FN (cfg_bb, cfun)
+     {
+       fprintf (file, "Local properties of <bb %d>:\n", cfg_bb->index);
+ 
+       fprintf (file, "<ANTLOC>=");
+       if (vector_antic == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_antic[cfg_bb->index]);
+ 
+       fprintf (file, "<AVLOC>=");
+       if (vector_comp == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_comp[cfg_bb->index]);
+ 
+       fprintf (file, "<TRANSP>=");
+       if (vector_transp == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_transp[cfg_bb->index]);
+ 
+       fprintf (file, "<KILL>=");
+       if (vector_kill == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_kill[cfg_bb->index]);
+     }
+ 
+   fprintf (file, "\n");
+   FOR_ALL_BB_FN (cfg_bb, cfun)
+     {
+       fprintf (file, "Global LCM (Lazy code motion) result of <bb %d>:\n",
+ 	       cfg_bb->index);
+ 
+       fprintf (file, "<AVIN>=");
+       if (vector_avin == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_avin[cfg_bb->index]);
+ 
+       fprintf (file, "<AVOUT>=");
+       if (vector_avout == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_avout[cfg_bb->index]);
+ 
+       fprintf (file, "<DELETE>=");
+       if (vector_del == nullptr)
+ 	fprintf (file, "(nil)\n");
+       else
+ 	dump_bitmap_file (file, vector_del[cfg_bb->index]);
+     }
+ 
+   fprintf (file, "\nGlobal LCM (Lazy code motion) INSERT info:\n");
+   for (size_t i = 0; i < vector_exprs.length (); i++)
+     {
+       for (int ed = 0; ed < NUM_EDGES (vector_edge_list); ed++)
+ 	{
+ 	  edge eg = INDEX_EDGE (vector_edge_list, ed);
+ 	  if (bitmap_bit_p (vector_insert[ed], i))
+ 	    fprintf (dump_file,
+ 		     "INSERT edge %d from bb %d to bb %d for VSETVL "
+ 		     "expr[%ld]\n",
+ 		     ed, eg->src->index, eg->dest->index, i);
+ 	}
+     }
+ }
+ 
+ const pass_data pass_data_vsetvl = {
+   RTL_PASS,	 /* type */
+   "vsetvl",	 /* name */
+   OPTGROUP_NONE, /* optinfo_flags */
+   TV_NONE,	 /* tv_id */
+   0,		 /* properties_required */
+   0,		 /* properties_provided */
+   0,		 /* properties_destroyed */
+   0,		 /* todo_flags_start */
+   0,		 /* todo_flags_finish */
+ };
+ 
+ class pass_vsetvl : public rtl_opt_pass
+ {
+ private:
+   class vector_infos_manager *m_vector_manager;
+ 
+   void simple_vsetvl (void) const;
+   void lazy_vsetvl (void);
+ 
+   /* Phase 1.  */
+   void compute_local_backward_infos (const bb_info *);
+ 
+   /* Phase 2.  */
+   bool need_vsetvl (const vector_insn_info &, const vector_insn_info &) const;
+   void transfer_before (vector_insn_info &, insn_info *) const;
+   void transfer_after (vector_insn_info &, insn_info *) const;
+   void emit_local_forward_vsetvls (const bb_info *);
+ 
+   /* Phase 3.  */
+   enum fusion_type get_backward_fusion_type (const bb_info *,
+ 					     const vector_insn_info &);
+   bool hard_empty_block_p (const bb_info *, const vector_insn_info &) const;
+   bool backward_demand_fusion (void);
+   bool forward_demand_fusion (void);
+   bool cleanup_illegal_dirty_blocks (void);
+   void demand_fusion (void);
+ 
+   /* Phase 4.  */
+   void prune_expressions (void);
+   void compute_local_properties (void);
+   bool can_refine_vsetvl_p (const basic_block, const vector_insn_info &) const;
+   void refine_vsetvls (void) const;
+   void cleanup_vsetvls (void);
+   bool commit_vsetvls (void);
+   void pre_vsetvl (void);
+ 
+   /* Phase 5.  */
+   void cleanup_insns (void) const;
+ 
+   /* Phase 6.  */
+   void propagate_avl (void) const;
+ 
+   void init (void);
+   void done (void);
+   void compute_probabilities (void);
+ 
+ public:
+   pass_vsetvl (gcc::context *ctxt) : rtl_opt_pass (pass_data_vsetvl, ctxt) {}
+ 
+   /* opt_pass methods: */
+   virtual bool gate (function *) final override { return TARGET_VECTOR; }
+   virtual unsigned int execute (function *) final override;
+ }; // class pass_vsetvl
+ 
+ /* Simple m_vsetvl_insert vsetvl for optimize == 0.  */
+ void
+ pass_vsetvl::simple_vsetvl (void) const
+ {
+   if (dump_file)
+     fprintf (dump_file,
+ 	     "\nEntering Simple VSETVL PASS and Handling %d basic blocks for "
+ 	     "function:%s\n",
+ 	     n_basic_blocks_for_fn (cfun), function_name (cfun));
+ 
+   basic_block cfg_bb;
+   rtx_insn *rinsn;
+   FOR_ALL_BB_FN (cfg_bb, cfun)
+     {
+       FOR_BB_INSNS (cfg_bb, rinsn)
+ 	{
+ 	  if (!NONDEBUG_INSN_P (rinsn))
+ 	    continue;
+ 	  if (has_vtype_op (rinsn))
+ 	    {
+ 	      const auto info
+ 		= m_vector_manager->vector_insn_infos[INSN_UID (rinsn)];
+ 	      emit_vsetvl_insn (VSETVL_DISCARD_RESULT, EMIT_BEFORE, info,
+ 				NULL_RTX, rinsn);
+ 	    }
+ 	}
+     }
+ }
+ 
+ /* Compute demanded information by backward data-flow analysis.  */
+ void
+ pass_vsetvl::compute_local_backward_infos (const bb_info *bb)
+ {
+   vector_insn_info change;
+   change.set_empty ();
+ 
+   auto &block_info = m_vector_manager->vector_block_infos[bb->index ()];
+   block_info.reaching_out = change;
+ 
+   for (insn_info *insn : bb->reverse_real_nondebug_insns ())
+     {
+       auto &info = m_vector_manager->vector_insn_infos[insn->uid ()];
+ 
+       if (info.uninit_p ())
+ 	/* If it is uninitialized, propagate it directly.  */
+ 	info = change;
+       else if (info.unknown_p ())
+ 	change = info;
+       else
+ 	{
+ 	  gcc_assert (info.valid_p () && "Unexpected Invalid demanded info");
+ 	  if (change.valid_p ())
+ 	    {
+ 	      if (!(propagate_avl_across_demands_p (change, info)
+ 		    && !reg_available_p (insn, change))
+ 		  && change.compatible_p (info))
+ 		{
+ 		  info = change.merge (info);
+ 		  /* Fix PR109399, we should update user vsetvl instruction
+ 		     if there is a change in demand fusion.  */
+ 		  if (vsetvl_insn_p (insn->rtl ()))
+ 		    change_vsetvl_insn (insn, info);
+ 		}
+ 	    }
+ 	  change = info;
+ 	}
+     }
+ 
+   block_info.local_dem = change;
+   if (block_info.local_dem.empty_p ())
+     block_info.reaching_out = block_info.local_dem;
+ }
+ 
+ /* Return true if a dem_info is required to transition from curr_info to
+    require before INSN.  */
+ bool
+ pass_vsetvl::need_vsetvl (const vector_insn_info &require,
+ 			  const vector_insn_info &curr_info) const
+ {
+   if (!curr_info.valid_p () || curr_info.unknown_p () || curr_info.uninit_p ())
+     return true;
+ 
+   if (require.compatible_p (static_cast<const vl_vtype_info &> (curr_info)))
+     return false;
+ 
+   return true;
+ }
+ 
+ /* Given an incoming state reaching INSN, modifies that state so that it is
+    minimally compatible with INSN.  The resulting state is guaranteed to be
+    semantically legal for INSN, but may not be the state requested by INSN.  */
+ void
+ pass_vsetvl::transfer_before (vector_insn_info &info, insn_info *insn) const
+ {
+   if (!has_vtype_op (insn->rtl ()))
+     return;
+ 
+   const vector_insn_info require
+     = m_vector_manager->vector_insn_infos[insn->uid ()];
+   if (info.valid_p () && !need_vsetvl (require, info))
+     return;
+   info = require;
+ }
+ 
+ /* Given a state with which we evaluated insn (see transfer_before above for why
+    this might be different that the state insn requested), modify the state to
+    reflect the changes insn might make.  */
+ void
+ pass_vsetvl::transfer_after (vector_insn_info &info, insn_info *insn) const
+ {
+   if (vector_config_insn_p (insn->rtl ()))
+     {
+       info = m_vector_manager->vector_insn_infos[insn->uid ()];
+       return;
+     }
+ 
+   if (fault_first_load_p (insn->rtl ())
+       && info.update_fault_first_load_avl (insn))
+     return;
+ 
+   /* If this is something that updates VL/VTYPE that we don't know about, set
+      the state to unknown.  */
+   if (insn->is_call () || insn->is_asm ()
+       || find_access (insn->defs (), VL_REGNUM)
+       || find_access (insn->defs (), VTYPE_REGNUM))
+     info = vector_insn_info::get_unknown ();
+ }
+ 
+ /* Emit vsetvl within each block by forward data-flow analysis.  */
+ void
+ pass_vsetvl::emit_local_forward_vsetvls (const bb_info *bb)
+ {
+   auto &block_info = m_vector_manager->vector_block_infos[bb->index ()];
+   if (block_info.local_dem.empty_p ())
+     return;
+ 
+   vector_insn_info curr_info;
+   for (insn_info *insn : bb->real_nondebug_insns ())
+     {
+       const vector_insn_info prev_info = curr_info;
+       enum vsetvl_type type = NUM_VSETVL_TYPE;
+       transfer_before (curr_info, insn);
+ 
+       if (has_vtype_op (insn->rtl ()))
+ 	{
+ 	  if (static_cast<const vl_vtype_info &> (prev_info)
+ 	      != static_cast<const vl_vtype_info &> (curr_info))
+ 	    {
+ 	      const auto require
+ 		= m_vector_manager->vector_insn_infos[insn->uid ()];
+ 	      if (!require.compatible_p (
+ 		    static_cast<const vl_vtype_info &> (prev_info)))
+ 		type = insert_vsetvl (EMIT_BEFORE, insn->rtl (), require,
+ 				      prev_info);
+ 	    }
+ 	}
+ 
+       /* Fix the issue of following sequence:
+ 	 vsetivli zero, 5
+ 	 ....
+ 	 vsetvli zero, zero
+ 	 vmv.x.s (demand AVL = 8).
+ 	 ....
+ 	 incorrect: vsetvli zero, zero ===> Since the curr_info is AVL = 8.
+ 	 correct: vsetivli zero, 8
+ 	 vadd (demand AVL = 8).  */
+       if (type == VSETVL_VTYPE_CHANGE_ONLY)
+ 	{
+ 	  /* Update the curr_info to be real correct AVL.  */
+ 	  curr_info.set_avl_info (prev_info.get_avl_info ());
+ 	}
+       transfer_after (curr_info, insn);
+     }
+ 
+   block_info.reaching_out = curr_info;
+ }
+ 
+ enum fusion_type
+ pass_vsetvl::get_backward_fusion_type (const bb_info *bb,
+ 				       const vector_insn_info &prop)
+ {
+   insn_info *insn = prop.get_insn ();
+ 
+   /* TODO: We don't backward propagate the explict VSETVL here
+      since we will change vsetvl and vsetvlmax intrinsics into
+      no side effects which can be optimized into optimal location
+      by GCC internal passes. We only need to support these backward
+      propagation if vsetvl intrinsics have side effects.  */
+   if (vsetvl_insn_p (insn->rtl ()))
+     return INVALID_FUSION;
+ 
+   gcc_assert (has_vtype_op (insn->rtl ()));
+   rtx reg = NULL_RTX;
+ 
+   /* Case 1: Don't need VL. Just let it backward propagate.  */
+   if (!prop.demand_p (DEMAND_AVL))
+     return VALID_AVL_FUSION;
+   else
+     {
+       /* Case 2: CONST_INT AVL, we don't need to check def.  */
+       if (prop.has_avl_imm ())
+ 	return VALID_AVL_FUSION;
+       else
+ 	{
+ 	  /* Case 3: REG AVL, we need to check the distance of def to make
+ 	     sure we won't backward propagate over the def.  */
+ 	  gcc_assert (prop.has_avl_reg ());
+ 	  if (vlmax_avl_p (prop.get_avl ()))
+ 	    /* Check VL operand for vsetvl vl,zero.  */
+ 	    reg = prop.get_avl_reg_rtx ();
+ 	  else
+ 	    /* Check AVL operand for vsetvl zero,avl.  */
+ 	    reg = prop.get_avl ();
+ 	}
+     }
+ 
+   gcc_assert (reg);
+   if (!prop.get_avl_source ()->insn ()->is_phi ()
+       && prop.get_avl_source ()->insn ()->bb () == insn->bb ())
+     return INVALID_FUSION;
+   hash_set<set_info *> sets
+     = get_all_sets (prop.get_avl_source (), true, true, true);
+   if (any_set_in_bb_p (sets, insn->bb ()))
+     return INVALID_FUSION;
+ 
+   if (vlmax_avl_p (prop.get_avl ()))
+     {
+       if (find_reg_killed_by (bb, reg))
+ 	return INVALID_FUSION;
+       else
+ 	return VALID_AVL_FUSION;
+     }
+ 
+   /* By default, we always enable backward fusion so that we can
+      gain more optimizations.  */
+   if (!find_reg_killed_by (bb, reg))
+     return VALID_AVL_FUSION;
+   return KILLED_AVL_FUSION;
+ }
+ 
+ /* We almost enable all cases in get_backward_fusion_type, this function
+    disable the backward fusion by changing dirty blocks into hard empty
+    blocks in forward dataflow. We can have more accurate optimization by
+    this method.  */
+ bool
+ pass_vsetvl::hard_empty_block_p (const bb_info *bb,
+ 				 const vector_insn_info &info) const
+ {
+   if (!info.dirty_p () || !info.has_avl_reg ())
+     return false;
+ 
+   basic_block cfg_bb = bb->cfg_bb ();
+   sbitmap avin = m_vector_manager->vector_avin[cfg_bb->index];
+   set_info *set = info.get_avl_source ();
+   rtx avl = gen_rtx_REG (Pmode, set->regno ());
+   hash_set<set_info *> sets = get_all_sets (set, true, false, false);
+   hash_set<basic_block> pred_cfg_bbs = get_all_predecessors (cfg_bb);
+ 
+   if (find_reg_killed_by (bb, avl))
+     {
+       /* Condition 1:
+ 	 Dirty block with killed AVL means that the empty block (no RVV
+ 	 instructions) are polluted as Dirty blocks with the value of current
+ 	 AVL is killed. For example:
+ 	      bb 0:
+ 		...
+ 	      bb 1:
+ 		def a5
+ 	      bb 2:
+ 		RVV (use a5)
+ 	 In backward dataflow, we will polluted BB0 and BB1 as Dirt with AVL
+ 	 killed. since a5 is killed in BB1.
+ 	 In this case, let's take a look at this example:
+ 
+ 	      bb 3:        bb 4:
+ 		def3 a5       def4 a5
+ 	      bb 5:        bb 6:
+ 		def1 a5       def2 a5
+ 		    \         /
+ 		     \       /
+ 		      \     /
+ 		       \   /
+ 			bb 7:
+ 		    RVV (use a5)
+ 	 In thi case, we can polluted BB5 and BB6 as dirty if get-def
+ 	 of a5 from RVV instruction in BB7 is the def1 in BB5 and
+ 	 def2 BB6 so we can return false early here for HARD_EMPTY_BLOCK_P.
+ 	 However, we are not sure whether BB3 and BB4 can be
+ 	 polluted as Dirty with AVL killed so we can't return false
+ 	 for HARD_EMPTY_BLOCK_P here since it's too early which will
+ 	 potentially produce issues.  */
+       gcc_assert (info.dirty_with_killed_avl_p ());
+       if (info.get_avl_source ()
+ 	  && get_same_bb_set (sets, bb->cfg_bb ()) == info.get_avl_source ())
+ 	return false;
+     }
+ 
+   /* Condition 2:
+      Suppress the VL/VTYPE info backward propagation too early:
+ 			 ________
+ 			|   BB0  |
+ 			|________|
+ 			    |
+ 			____|____
+ 			|   BB1  |
+ 			|________|
+      In this case, suppose BB 1 has multiple predecessors, BB 0 is one
+      of them. BB1 has VL/VTYPE info (may be VALID or DIRTY) to backward
+      propagate.
+      The AVIN (available in) which is calculated by LCM is empty only
+      in these 2 circumstances:
+        1. all predecessors of BB1 are empty (not VALID
+ 	  and can not be polluted in backward fusion flow)
+        2. VL/VTYPE info of BB1 predecessors are conflict.
+ 
+      We keep it as dirty in 2nd circumstance and set it as HARD_EMPTY
+      (can not be polluted as DIRTY any more) in 1st circumstance.
+      We don't backward propagate in 1st circumstance since there is
+      no VALID RVV instruction and no polluted blocks (dirty blocks)
+      by backward propagation from other following blocks.
+      It's meaningless to keep it as Dirty anymore.
+ 
+      However, since we keep it as dirty in 2nd since there are VALID or
+      Dirty blocks in predecessors, we can still gain the benefits and
+      optimization opportunities. For example, in this case:
+ 	for (size_t i = 0; i < n; i++)
+ 	 {
+ 	   if (i != cond) {
+ 	     vint8mf8_t v = *(vint8mf8_t*)(in + i + 100);
+ 	     *(vint8mf8_t*)(out + i + 100) = v;
+ 	   } else {
+ 	     vbool1_t v = *(vbool1_t*)(in + i + 400);
+ 	     *(vbool1_t*)(out + i + 400) = v;
+ 	   }
+ 	 }
+      VL/VTYPE in if-else are conflict which will produce empty AVIN LCM result
+      but we can still keep dirty blocks if *(i != cond)* is very unlikely then
+      we can preset vsetvl (VL/VTYPE) info from else (static propability model).
+ 
+      We don't want to backward propagate VL/VTYPE information too early
+      which is not the optimal and may potentially produce issues.  */
+   if (bitmap_empty_p (avin))
+     {
+       bool hard_empty_p = true;
+       for (const basic_block pred_cfg_bb : pred_cfg_bbs)
+ 	{
+ 	  if (pred_cfg_bb == ENTRY_BLOCK_PTR_FOR_FN (cfun))
+ 	    continue;
+ 	  sbitmap avout = m_vector_manager->vector_avout[pred_cfg_bb->index];
+ 	  if (!bitmap_empty_p (avout))
+ 	    {
+ 	      hard_empty_p = false;
+ 	      break;
+ 	    }
+ 	}
+       if (hard_empty_p)
+ 	return true;
+     }
+ 
+   edge e;
+   edge_iterator ei;
+   bool has_avl_killed_insn_p = false;
+   FOR_EACH_EDGE (e, ei, cfg_bb->succs)
+     {
+       const auto block_info
+ 	= m_vector_manager->vector_block_infos[e->dest->index];
+       if (block_info.local_dem.dirty_with_killed_avl_p ())
+ 	{
+ 	  has_avl_killed_insn_p = true;
+ 	  break;
+ 	}
+     }
+   if (!has_avl_killed_insn_p)
+     return false;
+ 
+   bool any_set_in_bbs_p = false;
+   for (const basic_block pred_cfg_bb : pred_cfg_bbs)
+     {
+       insn_info *def_insn = extract_single_source (set);
+       if (def_insn)
+ 	{
+ 	  /* Condition 3:
+ 
+ 	    Case 1:                               Case 2:
+ 		bb 0:                                 bb 0:
+ 		  def a5 101                             ...
+ 		bb 1:                                 bb 1:
+ 		  ...                                    ...
+ 		bb 2:                                 bb 2:
+ 		  RVV 1 (use a5 with TAIL ANY)           ...
+ 		bb 3:                                 bb 3:
+ 		  def a5 101                             def a5 101
+ 		bb 4:                                 bb 4:
+ 		  ...                                    ...
+ 		bb 5:                                 bb 5:
+ 		  RVV 2 (use a5 with TU)                 RVV 1 (use a5)
+ 
+ 	    Case 1: We can pollute BB3,BB2,BB1,BB0 are all Dirt blocks
+ 	    with killed AVL so that we can merge TU demand info from RVV 2
+ 	    into RVV 1 and elide the vsevl instruction in BB5.
+ 
+ 	    TODO: We only optimize for single source def since multiple source
+ 	    def is quite complicated.
+ 
+ 	    Case 2: We only can pollute bb 3 as dirty and it has been accepted
+ 	    in Condition 2 and we can't pollute BB3,BB2,BB1,BB0 like case 1. */
+ 	  insn_info *last_killed_insn
+ 	    = find_reg_killed_by (crtl->ssa->bb (pred_cfg_bb), avl);
+ 	  if (!last_killed_insn || pred_cfg_bb == def_insn->bb ()->cfg_bb ())
+ 	    continue;
+ 	  if (source_equal_p (last_killed_insn, def_insn))
+ 	    {
+ 	      any_set_in_bbs_p = true;
+ 	      break;
+ 	    }
+ 	}
+       else
+ 	{
+ 	  /* Condition 4:
+ 
+ 	      bb 0:        bb 1:         bb 3:
+ 		def1 a5       def2 a5     ...
+ 		    \         /            /
+ 		     \       /            /
+ 		      \     /            /
+ 		       \   /            /
+ 			bb 4:          /
+ 			 |            /
+ 			 |           /
+ 			bb 5:       /
+ 			 |         /
+ 			 |        /
+ 			bb 6:    /
+ 			 |      /
+ 			 |     /
+ 			  bb 8:
+ 			RVV 1 (use a5)
+ 	  If we get-def (REAL) of a5 from RVV 1 instruction, we will get
+ 	  def1 from BB0 and def2 from BB1. So we will pollute BB6,BB5,BB4,
+ 	  BB0,BB1 with DIRTY and set BB3 as HARD_EMPTY so that we won't
+ 	  propagate AVL to BB3.  */
+ 	  if (any_set_in_bb_p (sets, crtl->ssa->bb (pred_cfg_bb)))
+ 	    {
+ 	      any_set_in_bbs_p = true;
+ 	      break;
+ 	    }
+ 	}
+     }
+   if (!any_set_in_bbs_p)
+     return true;
+   return false;
+ }
+ 
+ /* Compute global backward demanded info.  */
+ bool
+ pass_vsetvl::backward_demand_fusion (void)
+ {
+   /* We compute global infos by backward propagation.
+      We want to have better performance in these following cases:
+ 
+ 	1. for (size_t i = 0; i < n; i++) {
+ 	     if (i != cond) {
+ 	       vint8mf8_t v = *(vint8mf8_t*)(in + i + 100);
+ 	       *(vint8mf8_t*)(out + i + 100) = v;
+ 	     } else {
+ 	       vbool1_t v = *(vbool1_t*)(in + i + 400);
+ 	       *(vbool1_t*)(out + i + 400) = v;
+ 	     }
+ 	   }
+ 
+ 	   Since we don't have any RVV instruction in the BEFORE blocks,
+ 	   LCM fails to optimize such case. We want to backward propagate
+ 	   them into empty blocks so that we could have better performance
+ 	   in LCM.
+ 
+ 	2. bb 0:
+ 	     vsetvl e8,mf8 (demand RATIO)
+ 	   bb 1:
+ 	     vsetvl e32,mf2 (demand SEW and LMUL)
+ 	   We backward propagate the first VSETVL into e32,mf2 so that we
+ 	   could be able to eliminate the second VSETVL in LCM.  */
+ 
+   bool changed_p = false;
+   for (const bb_info *bb : crtl->ssa->reverse_bbs ())
+     {
+       basic_block cfg_bb = bb->cfg_bb ();
+       const auto &curr_block_info
+ 	= m_vector_manager->vector_block_infos[cfg_bb->index];
+       const auto &prop = curr_block_info.local_dem;
+ 
+       /* If there is nothing to propagate, just skip it.  */
+       if (!prop.valid_or_dirty_p ())
+ 	continue;
+ 
+       if (!backward_propagate_worthwhile_p (cfg_bb, curr_block_info))
+ 	continue;
+ 
+       edge e;
+       edge_iterator ei;
+       /* Backward propagate to each predecessor.  */
+       FOR_EACH_EDGE (e, ei, cfg_bb->preds)
+ 	{
+ 	  auto &block_info
+ 	    = m_vector_manager->vector_block_infos[e->src->index];
+ 
+ 	  /* We don't propagate through critical edges.  */
+ 	  if (e->flags & EDGE_COMPLEX)
+ 	    continue;
+ 	  if (e->src->index == ENTRY_BLOCK_PTR_FOR_FN (cfun)->index)
+ 	    continue;
+ 	  /* If prop is demand of vsetvl instruction and reaching doesn't demand
+ 	     AVL. We don't backward propagate since vsetvl instruction has no
+ 	     side effects.  */
+ 	  if (vsetvl_insn_p (prop.get_insn ()->rtl ())
+ 	      && propagate_avl_across_demands_p (prop, block_info.reaching_out))
+ 	    continue;
+ 
+ 	  if (block_info.reaching_out.unknown_p ())
+ 	    continue;
+ 	  else if (block_info.reaching_out.hard_empty_p ())
+ 	    continue;
+ 	  else if (block_info.reaching_out.empty_p ())
+ 	    {
+ 	      enum fusion_type type
+ 		= get_backward_fusion_type (crtl->ssa->bb (e->src), prop);
+ 	      if (type == INVALID_FUSION)
+ 		continue;
+ 
+ 	      block_info.reaching_out = prop;
+ 	      block_info.reaching_out.set_dirty (type);
+ 
+ 	      if (prop.has_avl_reg () && !vlmax_avl_p (prop.get_avl ()))
+ 		{
+ 		  hash_set<set_info *> sets
+ 		    = get_all_sets (prop.get_avl_source (), true, true, true);
+ 		  set_info *set = get_same_bb_set (sets, e->src);
+ 		  if (set)
+ 		    block_info.reaching_out.set_avl_info (
+ 		      avl_info (prop.get_avl (), set));
+ 		}
+ 
+ 	      block_info.local_dem = block_info.reaching_out;
+ 	      block_info.probability = curr_block_info.probability;
+ 	      changed_p = true;
+ 	    }
+ 	  else if (block_info.reaching_out.dirty_p ())
+ 	    {
+ 	      /* DIRTY -> DIRTY or VALID -> DIRTY.  */
+ 	      vector_insn_info new_info;
+ 
+ 	      if (block_info.reaching_out.compatible_p (prop))
+ 		{
+ 		  if (block_info.reaching_out.available_p (prop))
+ 		    continue;
+ 		  new_info = block_info.reaching_out.merge (prop, GLOBAL_MERGE);
+ 		  new_info.set_dirty (
+ 		    block_info.reaching_out.dirty_with_killed_avl_p ());
+ 		  block_info.probability += curr_block_info.probability;
+ 		}
+ 	      else
+ 		{
+ 		  if (curr_block_info.probability > block_info.probability)
+ 		    {
+ 		      enum fusion_type type
+ 			= get_backward_fusion_type (crtl->ssa->bb (e->src),
+ 						    prop);
+ 		      if (type == INVALID_FUSION)
+ 			continue;
+ 		      new_info = prop;
+ 		      new_info.set_dirty (type);
+ 		      block_info.probability = curr_block_info.probability;
+ 		    }
+ 		  else
+ 		    continue;
+ 		}
+ 
+ 	      if (propagate_avl_across_demands_p (prop,
+ 						  block_info.reaching_out))
+ 		{
+ 		  rtx reg = new_info.get_avl_reg_rtx ();
+ 		  if (find_reg_killed_by (crtl->ssa->bb (e->src), reg))
+ 		    new_info.set_dirty (true);
+ 		}
+ 
+ 	      block_info.local_dem = new_info;
+ 	      block_info.reaching_out = new_info;
+ 	      changed_p = true;
+ 	    }
+ 	  else
+ 	    {
+ 	      /* We not only change the info during backward propagation,
+ 		 but also change the VSETVL instruction.  */
+ 	      gcc_assert (block_info.reaching_out.valid_p ());
+ 	      hash_set<set_info *> sets
+ 		= get_all_sets (prop.get_avl_source (), true, false, false);
+ 	      set_info *set = get_same_bb_set (sets, e->src);
+ 	      if (vsetvl_insn_p (block_info.reaching_out.get_insn ()->rtl ())
+ 		  && prop.has_avl_reg () && !vlmax_avl_p (prop.get_avl ()))
+ 		{
+ 		  if (!block_info.reaching_out.same_vlmax_p (prop))
+ 		    continue;
+ 		  if (block_info.reaching_out.same_vtype_p (prop))
+ 		    continue;
+ 		  if (!set)
+ 		    continue;
+ 		  if (set->insn () != block_info.reaching_out.get_insn ())
+ 		    continue;
+ 		}
+ 
+ 	      if (!block_info.reaching_out.compatible_p (prop))
+ 		continue;
+ 	      if (block_info.reaching_out.available_p (prop))
+ 		continue;
+ 
+ 	      vector_insn_info be_merged = block_info.reaching_out;
+ 	      if (block_info.local_dem == block_info.reaching_out)
+ 		be_merged = block_info.local_dem;
+ 	      vector_insn_info new_info = be_merged.merge (prop, GLOBAL_MERGE);
+ 
+ 	      if (curr_block_info.probability > block_info.probability)
+ 		block_info.probability = curr_block_info.probability;
+ 
+ 	      if (propagate_avl_across_demands_p (prop, block_info.reaching_out)
+ 		  && !reg_available_p (crtl->ssa->bb (e->src)->end_insn (),
+ 				       new_info))
+ 		continue;
+ 
+ 	      change_vsetvl_insn (new_info.get_insn (), new_info);
+ 	      if (block_info.local_dem == block_info.reaching_out)
+ 		block_info.local_dem = new_info;
+ 	      block_info.reaching_out = new_info;
+ 	      changed_p = true;
+ 	    }
+ 	}
+     }
+   return changed_p;
+ }
+ 
+ /* Compute global forward demanded info.  */
+ bool
+ pass_vsetvl::forward_demand_fusion (void)
+ {
+   /* Enhance the global information propagation especially
+      backward propagation miss the propagation.
+      Consider such case:
+ 
+ 			bb0
+ 			(TU)
+ 		       /   \
+ 		     bb1   bb2
+ 		     (TU)  (ANY)
+   existing edge -----> \    / (TU) <----- LCM create this edge.
+ 			bb3
+ 			(TU)
+ 
+      Base on the situation, LCM fails to eliminate the VSETVL instruction and
+      insert an edge from bb2 to bb3 since we can't backward propagate bb3 into
+      bb2. To avoid this confusing LCM result and non-optimal codegen, we should
+      forward propagate information from bb0 to bb2 which is friendly to LCM.  */
+   bool changed_p = false;
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       basic_block cfg_bb = bb->cfg_bb ();
+       const auto &prop
+ 	= m_vector_manager->vector_block_infos[cfg_bb->index].reaching_out;
+ 
+       /* If there is nothing to propagate, just skip it.  */
+       if (!prop.valid_or_dirty_p ())
+ 	continue;
+ 
+       if (cfg_bb == ENTRY_BLOCK_PTR_FOR_FN (cfun))
+ 	continue;
+ 
+       if (vsetvl_insn_p (prop.get_insn ()->rtl ()))
+ 	continue;
+ 
+       edge e;
+       edge_iterator ei;
+       /* Forward propagate to each successor.  */
+       FOR_EACH_EDGE (e, ei, cfg_bb->succs)
+ 	{
+ 	  auto &local_dem
+ 	    = m_vector_manager->vector_block_infos[e->dest->index].local_dem;
+ 	  auto &reaching_out
+ 	    = m_vector_manager->vector_block_infos[e->dest->index].reaching_out;
+ 
+ 	  /* It's quite obvious, we don't need to propagate itself.  */
+ 	  if (e->dest->index == cfg_bb->index)
+ 	    continue;
+ 	  /* We don't propagate through critical edges.  */
+ 	  if (e->flags & EDGE_COMPLEX)
+ 	    continue;
+ 	  if (e->dest->index == EXIT_BLOCK_PTR_FOR_FN (cfun)->index)
+ 	    continue;
+ 
+ 	  /* If there is nothing to propagate, just skip it.  */
+ 	  if (!local_dem.valid_or_dirty_p ())
+ 	    continue;
+ 	  if (local_dem.available_p (prop))
+ 	    continue;
+ 	  if (!local_dem.compatible_p (prop))
+ 	    continue;
+ 	  if (propagate_avl_across_demands_p (prop, local_dem))
+ 	    continue;
+ 
+ 	  vector_insn_info new_info = local_dem.merge (prop, GLOBAL_MERGE);
+ 	  new_info.set_insn (local_dem.get_insn ());
+ 	  if (local_dem.dirty_p ())
+ 	    {
+ 	      gcc_assert (local_dem == reaching_out);
+ 	      new_info.set_dirty (local_dem.dirty_with_killed_avl_p ());
+ 	      local_dem = new_info;
+ 	      reaching_out = local_dem;
+ 	    }
+ 	  else
+ 	    {
+ 	      if (reaching_out == local_dem)
+ 		reaching_out = new_info;
+ 	      local_dem = new_info;
+ 	      change_vsetvl_insn (local_dem.get_insn (), new_info);
+ 	    }
+ 	  auto &prob
+ 	    = m_vector_manager->vector_block_infos[e->dest->index].probability;
+ 	  auto &curr_prob
+ 	    = m_vector_manager->vector_block_infos[cfg_bb->index].probability;
+ 	  prob = curr_prob * e->probability;
+ 	  changed_p = true;
+ 	}
+     }
+   return changed_p;
+ }
+ 
+ void
+ pass_vsetvl::demand_fusion (void)
+ {
+   bool changed_p = true;
+   while (changed_p)
+     {
+       changed_p = false;
+       /* To optimize the case like this:
+ 	 void f2 (int8_t * restrict in, int8_t * restrict out, int n, int cond)
+ 	   {
+ 	     size_t vl = 101;
+ 
+ 	     for (size_t i = 0; i < n; i++)
+ 	       {
+ 		 vint8mf8_t v = __riscv_vle8_v_i8mf8 (in + i + 300, vl);
+ 		 __riscv_vse8_v_i8mf8 (out + i + 300, v, vl);
+ 	       }
+ 
+ 	     for (size_t i = 0; i < n; i++)
+ 	       {
+ 		 vint8mf8_t v = __riscv_vle8_v_i8mf8 (in + i, vl);
+ 		 __riscv_vse8_v_i8mf8 (out + i, v, vl);
+ 
+ 		 vint8mf8_t v2 = __riscv_vle8_v_i8mf8_tu (v, in + i + 100, vl);
+ 		 __riscv_vse8_v_i8mf8 (out + i + 100, v2, vl);
+ 	       }
+ 	   }
+ 
+ 	  bb 0: li a5, 101 (killed avl)
+ 	  ...
+ 	  bb 1: vsetvli zero, a5, ta
+ 	  ...
+ 	  bb 2: li a5, 101 (killed avl)
+ 	  ...
+ 	  bb 3: vsetvli zero, a3, tu
+ 
+ 	We want to fuse VSEVLI instructions on bb 1 and bb 3. However, there is
+ 	an AVL kill instruction in bb 2 that we can't backward fuse bb 3 or
+ 	forward bb 1 arbitrarily. We need available information of each block to
+ 	help for such cases.  */
+       changed_p |= backward_demand_fusion ();
+       changed_p |= forward_demand_fusion ();
+     }
+ 
+   changed_p = true;
+   while (changed_p)
+     {
+       changed_p = false;
+       prune_expressions ();
+       m_vector_manager->create_bitmap_vectors ();
+       compute_local_properties ();
+       compute_available (m_vector_manager->vector_comp,
+ 			 m_vector_manager->vector_kill,
+ 			 m_vector_manager->vector_avout,
+ 			 m_vector_manager->vector_avin);
+       changed_p |= cleanup_illegal_dirty_blocks ();
+       m_vector_manager->free_bitmap_vectors ();
+       if (!m_vector_manager->vector_exprs.is_empty ())
+ 	m_vector_manager->vector_exprs.release ();
+     }
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "\n\nDirty blocks list: ");
+       for (const bb_info *bb : crtl->ssa->bbs ())
+ 	if (m_vector_manager->vector_block_infos[bb->index ()]
+ 	      .reaching_out.dirty_p ())
+ 	  fprintf (dump_file, "%d ", bb->index ());
+       fprintf (dump_file, "\n\n");
+     }
+ }
+ 
+ /* Cleanup illegal dirty blocks.  */
+ bool
+ pass_vsetvl::cleanup_illegal_dirty_blocks (void)
+ {
+   bool changed_p = false;
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       basic_block cfg_bb = bb->cfg_bb ();
+       const auto &prop
+ 	= m_vector_manager->vector_block_infos[cfg_bb->index].reaching_out;
+ 
+       /* If there is nothing to cleanup, just skip it.  */
+       if (!prop.valid_or_dirty_p ())
+ 	continue;
+ 
+       if (hard_empty_block_p (bb, prop))
+ 	{
+ 	  m_vector_manager->vector_block_infos[cfg_bb->index].local_dem
+ 	    = vector_insn_info::get_hard_empty ();
+ 	  m_vector_manager->vector_block_infos[cfg_bb->index].reaching_out
+ 	    = vector_insn_info::get_hard_empty ();
+ 	  changed_p = true;
+ 	  continue;
+ 	}
+     }
+   return changed_p;
+ }
+ 
+ /* Assemble the candidates expressions for LCM.  */
+ void
+ pass_vsetvl::prune_expressions (void)
+ {
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       if (m_vector_manager->vector_block_infos[bb->index ()]
+ 	    .local_dem.valid_or_dirty_p ())
+ 	m_vector_manager->create_expr (
+ 	  m_vector_manager->vector_block_infos[bb->index ()].local_dem);
+       if (m_vector_manager->vector_block_infos[bb->index ()]
+ 	    .reaching_out.valid_or_dirty_p ())
+ 	m_vector_manager->create_expr (
+ 	  m_vector_manager->vector_block_infos[bb->index ()].reaching_out);
+     }
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nThe total VSETVL expression num = %d\n",
+ 	       m_vector_manager->vector_exprs.length ());
+       fprintf (dump_file, "Expression List:\n");
+       for (size_t i = 0; i < m_vector_manager->vector_exprs.length (); i++)
+ 	{
+ 	  fprintf (dump_file, "Expr[%ld]:\n", i);
+ 	  m_vector_manager->vector_exprs[i]->dump (dump_file);
+ 	  fprintf (dump_file, "\n");
+ 	}
+     }
+ }
+ 
+ /* Compute the local properties of each recorded expression.
+ 
+    Local properties are those that are defined by the block, irrespective of
+    other blocks.
+ 
+    An expression is transparent in a block if its operands are not modified
+    in the block.
+ 
+    An expression is computed (locally available) in a block if it is computed
+    at least once and expression would contain the same value if the
+    computation was moved to the end of the block.
+ 
+    An expression is locally anticipatable in a block if it is computed at
+    least once and expression would contain the same value if the computation
+    was moved to the beginning of the block.  */
+ void
+ pass_vsetvl::compute_local_properties (void)
+ {
+   /* -  If T is locally available at the end of a block, then T' must be
+ 	available at the end of the same block. Since some optimization has
+ 	occurred earlier, T' might not be locally available, however, it must
+ 	have been previously computed on all paths. As a formula, T at AVLOC(B)
+ 	implies that T' at AVOUT(B).
+ 	An "available occurrence" is one that is the last occurrence in the
+ 	basic block and the operands are not modified by following statements in
+ 	the basic block [including this insn].
+ 
+      -  If T is locally anticipated at the beginning of a block, then either
+ 	T', is locally anticipated or it is already available from previous
+ 	blocks. As a formula, this means that T at ANTLOC(B) implies that T' at
+ 	ANTLOC(B) at AVIN(B).
+ 	An "anticipatable occurrence" is one that is the first occurrence in the
+ 	basic block, the operands are not modified in the basic block prior
+ 	to the occurrence and the output is not used between the start of
+ 	the block and the occurrence.  */
+ 
+   basic_block cfg_bb;
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       unsigned int curr_bb_idx = bb->index ();
+       const auto local_dem
+ 	= m_vector_manager->vector_block_infos[curr_bb_idx].local_dem;
+       const auto reaching_out
+ 	= m_vector_manager->vector_block_infos[curr_bb_idx].reaching_out;
+ 
+       /* Compute transparent.  */
+       for (size_t i = 0; i < m_vector_manager->vector_exprs.length (); i++)
+ 	{
+ 	  const vector_insn_info *expr = m_vector_manager->vector_exprs[i];
+ 	  if (local_dem.real_dirty_p () || local_dem.valid_p ()
+ 	      || local_dem.unknown_p ()
+ 	      || has_vsetvl_killed_avl_p (bb, local_dem))
+ 	    bitmap_clear_bit (m_vector_manager->vector_transp[curr_bb_idx], i);
+ 	  /* FIXME: Here we set the block as non-transparent (killed) if there
+ 	     is an instruction killed the value of AVL according to the
+ 	     definition of Local transparent. This is true for such following
+ 	     case:
+ 
+ 		bb 0 (Loop label):
+ 		  vsetvl zero, a5, e8, mf8
+ 		bb 1:
+ 		  def a5
+ 		bb 2:
+ 		  branch bb 0 (Loop label).
+ 
+ 	     In this case, we known there is a loop bb 0->bb 1->bb 2. According
+ 	     to LCM definition, it is correct when we set vsetvl zero, a5, e8,
+ 	     mf8 as non-transparent (killed) so that LCM will not hoist outside
+ 	     the bb 0.
+ 
+ 	     However, such conservative configuration will forbid optimization
+ 	     on some unlucky case. For example:
+ 
+ 		bb 0:
+ 		  li a5, 101
+ 		bb 1:
+ 		  vsetvl zero, a5, e8, mf8
+ 		bb 2:
+ 		  li a5, 101
+ 		bb 3:
+ 		  vsetvl zero, a5, e8, mf8.
+ 	     So we also relax def a5 as transparent to gain more optimizations
+ 	     as long as the all real def insn of avl do not come from this
+ 	     block. This configuration may be still missing some optimization
+ 	     opportunities.  */
+ 	  if (find_reg_killed_by (bb, expr->get_avl ()))
+ 	    {
+ 	      hash_set<set_info *> sets
+ 		= get_all_sets (expr->get_avl_source (), true, false, false);
+ 	      if (any_set_in_bb_p (sets, bb))
+ 		bitmap_clear_bit (m_vector_manager->vector_transp[curr_bb_idx],
+ 				  i);
+ 	    }
+ 	}
+ 
+       /* Compute anticipatable occurrences.  */
+       if (local_dem.valid_p () || local_dem.real_dirty_p ()
+ 	  || (has_vsetvl_killed_avl_p (bb, local_dem)
+ 	      && vlmax_avl_p (local_dem.get_avl ())))
+ 	if (anticipatable_occurrence_p (bb, local_dem))
+ 	  bitmap_set_bit (m_vector_manager->vector_antic[curr_bb_idx],
+ 			  m_vector_manager->get_expr_id (local_dem));
+ 
+       /* Compute available occurrences.  */
+       if (reaching_out.valid_or_dirty_p ())
+ 	{
+ 	  auto_vec<size_t> available_list
+ 	    = m_vector_manager->get_all_available_exprs (reaching_out);
+ 	  for (size_t i = 0; i < available_list.length (); i++)
+ 	    {
+ 	      const vector_insn_info *expr
+ 		= m_vector_manager->vector_exprs[available_list[i]];
+ 	      if (reaching_out.real_dirty_p ()
+ 		  || has_vsetvl_killed_avl_p (bb, reaching_out)
+ 		  || available_occurrence_p (bb, *expr))
+ 		bitmap_set_bit (m_vector_manager->vector_comp[curr_bb_idx],
+ 				available_list[i]);
+ 	    }
+ 	}
+     }
+ 
+   /* Compute kill for each basic block using:
+ 
+      ~(TRANSP | COMP)
+   */
+ 
+   FOR_EACH_BB_FN (cfg_bb, cfun)
+     {
+       bitmap_ior (m_vector_manager->vector_kill[cfg_bb->index],
+ 		  m_vector_manager->vector_transp[cfg_bb->index],
+ 		  m_vector_manager->vector_comp[cfg_bb->index]);
+       bitmap_not (m_vector_manager->vector_kill[cfg_bb->index],
+ 		  m_vector_manager->vector_kill[cfg_bb->index]);
+     }
+ 
+   FOR_EACH_BB_FN (cfg_bb, cfun)
+     {
+       edge e;
+       edge_iterator ei;
+ 
+       /* If the current block is the destination of an abnormal edge, we
+ 	 kill all trapping (for PRE) and memory (for hoist) expressions
+ 	 because we won't be able to properly place the instruction on
+ 	 the edge.  So make them neither anticipatable nor transparent.
+ 	 This is fairly conservative.
+ 
+ 	 ??? For hoisting it may be necessary to check for set-and-jump
+ 	 instructions here, not just for abnormal edges.  The general problem
+ 	 is that when an expression cannot not be placed right at the end of
+ 	 a basic block we should account for any side-effects of a subsequent
+ 	 jump instructions that could clobber the expression.  It would
+ 	 be best to implement this check along the lines of
+ 	 should_hoist_expr_to_dom where the target block is already known
+ 	 and, hence, there's no need to conservatively prune expressions on
+ 	 "intermediate" set-and-jump instructions.  */
+       FOR_EACH_EDGE (e, ei, cfg_bb->preds)
+ 	if (e->flags & EDGE_COMPLEX)
+ 	  {
+ 	    bitmap_clear (m_vector_manager->vector_antic[cfg_bb->index]);
+ 	    bitmap_clear (m_vector_manager->vector_transp[cfg_bb->index]);
+ 	  }
+     }
+ }
+ 
+ /* Return true if VSETVL in the block can be refined as vsetvl zero,zero.  */
+ bool
+ pass_vsetvl::can_refine_vsetvl_p (const basic_block cfg_bb,
+ 				  const vector_insn_info &info) const
+ {
+   if (!m_vector_manager->all_same_ratio_p (
+ 	m_vector_manager->vector_avin[cfg_bb->index]))
+     return false;
+ 
+   if (!m_vector_manager->all_same_avl_p (
+ 	cfg_bb, m_vector_manager->vector_avin[cfg_bb->index]))
+     return false;
+ 
+   size_t expr_id
+     = bitmap_first_set_bit (m_vector_manager->vector_avin[cfg_bb->index]);
+   if (!m_vector_manager->vector_exprs[expr_id]->same_vlmax_p (info))
+     return false;
+   if (!m_vector_manager->vector_exprs[expr_id]->compatible_avl_p (info))
+     return false;
+ 
+   edge e;
+   edge_iterator ei;
+   bool all_valid_p = true;
+   FOR_EACH_EDGE (e, ei, cfg_bb->preds)
+     {
+       if (bitmap_empty_p (m_vector_manager->vector_avout[e->src->index]))
+ 	{
+ 	  all_valid_p = false;
+ 	  break;
+ 	}
+     }
+ 
+   if (!all_valid_p)
+     return false;
+   return true;
+ }
+ 
+ /* Optimize athe case like this:
+ 
+       bb 0:
+ 	vsetvl 0 a5,zero,e8,mf8
+ 	insn 0 (demand SEW + LMUL)
+       bb 1:
+ 	vsetvl 1 a5,zero,e16,mf4
+ 	insn 1 (demand SEW + LMUL)
+ 
+    In this case, we should be able to refine
+    vsetvl 1 into vsetvl zero, zero according AVIN.  */
+ void
+ pass_vsetvl::refine_vsetvls (void) const
+ {
+   basic_block cfg_bb;
+   FOR_EACH_BB_FN (cfg_bb, cfun)
+     {
+       auto info = m_vector_manager->vector_block_infos[cfg_bb->index].local_dem;
+       insn_info *insn = info.get_insn ();
+       if (!info.valid_p ())
+ 	continue;
+ 
+       rtx_insn *rinsn = insn->rtl ();
+       if (!can_refine_vsetvl_p (cfg_bb, info))
+ 	continue;
+ 
+       /* We can't refine user vsetvl into vsetvl zero,zero since the dest
+ 	 will be used by the following instructions.  */
+       if (vector_config_insn_p (rinsn))
+ 	{
+ 	  m_vector_manager->to_refine_vsetvls.add (rinsn);
+ 	  continue;
+ 	}
+       rinsn = PREV_INSN (rinsn);
+       rtx new_pat = gen_vsetvl_pat (VSETVL_VTYPE_CHANGE_ONLY, info, NULL_RTX);
+       change_insn (rinsn, new_pat);
+     }
+ }
+ 
+ void
+ pass_vsetvl::cleanup_vsetvls ()
+ {
+   basic_block cfg_bb;
+   FOR_EACH_BB_FN (cfg_bb, cfun)
+     {
+       auto &info
+ 	= m_vector_manager->vector_block_infos[cfg_bb->index].reaching_out;
+       gcc_assert (m_vector_manager->expr_set_num (
+ 		    m_vector_manager->vector_del[cfg_bb->index])
+ 		  <= 1);
+       for (size_t i = 0; i < m_vector_manager->vector_exprs.length (); i++)
+ 	{
+ 	  if (bitmap_bit_p (m_vector_manager->vector_del[cfg_bb->index], i))
+ 	    {
+ 	      if (info.dirty_p ())
+ 		info.set_unknown ();
+ 	      else
+ 		{
+ 		  const auto dem
+ 		    = m_vector_manager->vector_block_infos[cfg_bb->index]
+ 			.local_dem;
+ 		  gcc_assert (dem == *m_vector_manager->vector_exprs[i]);
+ 		  insn_info *insn = dem.get_insn ();
+ 		  gcc_assert (insn && insn->rtl ());
+ 		  rtx_insn *rinsn;
+ 		  /* We can't eliminate user vsetvl since the dest will be used
+ 		   * by the following instructions.  */
+ 		  if (vector_config_insn_p (insn->rtl ()))
+ 		    {
+ 		      m_vector_manager->to_delete_vsetvls.add (insn->rtl ());
+ 		      continue;
+ 		    }
+ 
+ 		  gcc_assert (has_vtype_op (insn->rtl ()));
+ 		  rinsn = PREV_INSN (insn->rtl ());
+ 		  gcc_assert (vector_config_insn_p (PREV_INSN (insn->rtl ())));
+ 		  eliminate_insn (rinsn);
+ 		}
+ 	    }
+ 	}
+     }
+ }
+ 
+ bool
+ pass_vsetvl::commit_vsetvls (void)
+ {
+   bool need_commit = false;
+ 
+   for (int ed = 0; ed < NUM_EDGES (m_vector_manager->vector_edge_list); ed++)
+     {
+       for (size_t i = 0; i < m_vector_manager->vector_exprs.length (); i++)
+ 	{
+ 	  edge eg = INDEX_EDGE (m_vector_manager->vector_edge_list, ed);
+ 	  if (bitmap_bit_p (m_vector_manager->vector_insert[ed], i))
+ 	    {
+ 	      const vector_insn_info *require
+ 		= m_vector_manager->vector_exprs[i];
+ 	      gcc_assert (require->valid_or_dirty_p ());
+ 	      rtl_profile_for_edge (eg);
+ 	      start_sequence ();
+ 
+ 	      insn_info *insn = require->get_insn ();
+ 	      vector_insn_info prev_info = vector_insn_info ();
+ 	      sbitmap bitdata = m_vector_manager->vector_avout[eg->src->index];
+ 	      if (m_vector_manager->all_same_ratio_p (bitdata)
+ 		  && m_vector_manager->all_same_avl_p (eg->dest, bitdata))
+ 		{
+ 		  size_t first = bitmap_first_set_bit (bitdata);
+ 		  prev_info = *m_vector_manager->vector_exprs[first];
+ 		}
+ 
+ 	      insert_vsetvl (EMIT_DIRECT, insn->rtl (), *require, prev_info);
+ 	      rtx_insn *rinsn = get_insns ();
+ 	      end_sequence ();
+ 	      default_rtl_profile ();
+ 
+ 	      /* We should not get an abnormal edge here.  */
+ 	      gcc_assert (!(eg->flags & EDGE_ABNORMAL));
+ 	      need_commit = true;
+ 	      insert_insn_on_edge (rinsn, eg);
+ 	    }
+ 	}
+     }
+ 
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       basic_block cfg_bb = bb->cfg_bb ();
+       const auto reaching_out
+ 	= m_vector_manager->vector_block_infos[cfg_bb->index].reaching_out;
+       if (!reaching_out.dirty_p ())
+ 	continue;
+ 
+       if (reaching_out.dirty_with_killed_avl_p ())
+ 	{
+ 	  if (!has_vsetvl_killed_avl_p (bb, reaching_out))
+ 	    continue;
+ 
+ 	  unsigned int bb_index;
+ 	  sbitmap_iterator sbi;
+ 	  sbitmap avin = m_vector_manager->vector_avin[cfg_bb->index];
+ 	  bool available_p = false;
+ 	  EXECUTE_IF_SET_IN_BITMAP (avin, 0, bb_index, sbi)
+ 	  {
+ 	    if (m_vector_manager->vector_exprs[bb_index]->available_p (
+ 		  reaching_out))
+ 	      {
+ 		available_p = true;
+ 		break;
+ 	      }
+ 	  }
+ 	  if (available_p)
+ 	    continue;
+ 	}
+ 
+       rtx new_pat;
+       if (!reaching_out.demand_p (DEMAND_AVL))
+ 	{
+ 	  vl_vtype_info new_info = reaching_out;
+ 	  new_info.set_avl_info (avl_info (const0_rtx, nullptr));
+ 	  new_pat = gen_vsetvl_pat (VSETVL_DISCARD_RESULT, new_info, NULL_RTX);
+ 	}
+       else if (can_refine_vsetvl_p (cfg_bb, reaching_out))
+ 	new_pat
+ 	  = gen_vsetvl_pat (VSETVL_VTYPE_CHANGE_ONLY, reaching_out, NULL_RTX);
+       else if (vlmax_avl_p (reaching_out.get_avl ()))
+ 	new_pat = gen_vsetvl_pat (VSETVL_NORMAL, reaching_out,
+ 				  reaching_out.get_avl_reg_rtx ());
+       else
+ 	new_pat
+ 	  = gen_vsetvl_pat (VSETVL_DISCARD_RESULT, reaching_out, NULL_RTX);
+ 
+       start_sequence ();
+       emit_insn (new_pat);
+       rtx_insn *rinsn = get_insns ();
+       end_sequence ();
+       insert_insn_end_basic_block (rinsn, cfg_bb);
+       if (dump_file)
+ 	{
+ 	  fprintf (dump_file,
+ 		   "\nInsert vsetvl insn %d at the end of <bb %d>:\n",
+ 		   INSN_UID (rinsn), cfg_bb->index);
+ 	  print_rtl_single (dump_file, rinsn);
+ 	}
+     }
+ 
+   return need_commit;
+ }
+ 
+ void
+ pass_vsetvl::pre_vsetvl (void)
+ {
+   /* Compute entity list.  */
+   prune_expressions ();
+ 
+   m_vector_manager->create_bitmap_vectors ();
+   compute_local_properties ();
+   m_vector_manager->vector_edge_list = pre_edge_lcm_avs (
+     m_vector_manager->vector_exprs.length (), m_vector_manager->vector_transp,
+     m_vector_manager->vector_comp, m_vector_manager->vector_antic,
+     m_vector_manager->vector_kill, m_vector_manager->vector_avin,
+     m_vector_manager->vector_avout, &m_vector_manager->vector_insert,
+     &m_vector_manager->vector_del);
+ 
+   /* We should dump the information before CFG is changed. Otherwise it will
+      produce ICE (internal compiler error).  */
+   if (dump_file)
+     m_vector_manager->dump (dump_file);
+ 
+   refine_vsetvls ();
+   cleanup_vsetvls ();
+   bool need_commit = commit_vsetvls ();
+   if (need_commit)
+     commit_edge_insertions ();
+ }
+ 
+ void
+ pass_vsetvl::cleanup_insns (void) const
+ {
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       for (insn_info *insn : bb->real_nondebug_insns ())
+ 	{
+ 	  rtx_insn *rinsn = insn->rtl ();
+ 
+ 	  if (vlmax_avl_insn_p (rinsn))
+ 	    {
+ 	      eliminate_insn (rinsn);
+ 	      continue;
+ 	    }
+ 
+ 	  /* Erase the AVL operand from the instruction.  */
+ 	  if (!has_vl_op (rinsn) || !REG_P (get_vl (rinsn)))
+ 	    continue;
+ 	  rtx avl = get_vl (rinsn);
+ 	  if (count_occurrences (PATTERN (rinsn), avl, 0) == 1)
+ 	    {
+ 	      /* Get the list of uses for the new instruction.  */
+ 	      auto attempt = crtl->ssa->new_change_attempt ();
+ 	      insn_change change (insn);
+ 	      /* Remove the use of the substituted value.  */
+ 	      access_array_builder uses_builder (attempt);
+ 	      uses_builder.reserve (insn->num_uses () - 1);
+ 	      for (use_info *use : insn->uses ())
+ 		if (use != find_access (insn->uses (), REGNO (avl)))
+ 		  uses_builder.quick_push (use);
+ 	      use_array new_uses = use_array (uses_builder.finish ());
+ 	      change.new_uses = new_uses;
+ 	      change.move_range = insn->ebb ()->insn_range ();
+ 	      rtx pat;
+ 	      if (fault_first_load_p (rinsn))
+ 		pat = simplify_replace_rtx (PATTERN (rinsn), avl, const0_rtx);
+ 	      else
+ 		{
+ 		  rtx set = single_set (rinsn);
+ 		  rtx src
+ 		    = simplify_replace_rtx (SET_SRC (set), avl, const0_rtx);
+ 		  pat = gen_rtx_SET (SET_DEST (set), src);
+ 		}
+ 	      gcc_assert (change_insn (crtl->ssa, change, insn, pat));
+ 	    }
+ 	}
+     }
+ }
+ 
+ void
+ pass_vsetvl::propagate_avl (void) const
+ {
+   /* Rebuild the RTL_SSA according to the new CFG generated by LCM.  */
+   /* Finalization of RTL_SSA.  */
+   free_dominance_info (CDI_DOMINATORS);
+   if (crtl->ssa->perform_pending_updates ())
+     cleanup_cfg (0);
+   delete crtl->ssa;
+   crtl->ssa = nullptr;
+   /* Initialization of RTL_SSA.  */
+   calculate_dominance_info (CDI_DOMINATORS);
+   df_analyze ();
+   crtl->ssa = new function_info (cfun);
+ 
+   hash_set<rtx_insn *> to_delete;
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       for (insn_info *insn : bb->real_nondebug_insns ())
+ 	{
+ 	  if (vsetvl_discard_result_insn_p (insn->rtl ()))
+ 	    {
+ 	      rtx avl = get_avl (insn->rtl ());
+ 	      if (!REG_P (avl))
+ 		continue;
+ 
+ 	      set_info *set = find_access (insn->uses (), REGNO (avl))->def ();
+ 	      insn_info *def_insn = extract_single_source (set);
+ 	      if (!def_insn)
+ 		continue;
+ 
+ 	      /* Handle this case:
+ 		 vsetvli	a6,zero,e32,m1,ta,mu
+ 		 li	a5,4096
+ 		 add	a7,a0,a5
+ 		 addi	a7,a7,-96
+ 		 vsetvli	t1,zero,e8,mf8,ta,ma
+ 		 vle8.v	v24,0(a7)
+ 		 add	a5,a3,a5
+ 		 addi	a5,a5,-96
+ 		 vse8.v	v24,0(a5)
+ 		 vsetvli	zero,a6,e32,m1,tu,ma
+ 	      */
+ 	      if (vsetvl_insn_p (def_insn->rtl ()))
+ 		{
+ 		  vl_vtype_info def_info = get_vl_vtype_info (def_insn);
+ 		  vl_vtype_info info = get_vl_vtype_info (insn);
+ 		  rtx avl = get_avl (def_insn->rtl ());
+ 		  rtx vl = get_vl (def_insn->rtl ());
+ 		  if (def_info.get_ratio () == info.get_ratio ())
+ 		    {
+ 		      if (vlmax_avl_p (def_info.get_avl ()))
+ 			{
+ 			  info.set_avl_info (
+ 			    avl_info (def_info.get_avl (), nullptr));
+ 			  rtx new_pat
+ 			    = gen_vsetvl_pat (VSETVL_NORMAL, info, vl);
+ 			  validate_change (insn->rtl (),
+ 					   &PATTERN (insn->rtl ()), new_pat,
+ 					   false);
+ 			  continue;
+ 			}
+ 		      if (def_info.has_avl_imm () || rtx_equal_p (avl, vl))
+ 			{
+ 			  info.set_avl_info (avl_info (avl, nullptr));
+ 			  emit_vsetvl_insn (VSETVL_DISCARD_RESULT, EMIT_AFTER,
+ 					    info, NULL_RTX, insn->rtl ());
+ 			  if (set->single_nondebug_insn_use ())
+ 			    {
+ 			      to_delete.add (insn->rtl ());
+ 			      to_delete.add (def_insn->rtl ());
+ 			    }
+ 			  continue;
+ 			}
+ 		    }
+ 		}
+ 	    }
+ 
+ 	  /* Change vsetvl rd, rs1 --> vsevl zero, rs1,
+ 	     if rd is not used by any nondebug instructions.
+ 	     Even though this PASS runs after RA and it doesn't help for
+ 	     reduce register pressure, it can help instructions scheduling
+ 	     since we remove the dependencies.  */
+ 	  if (vsetvl_insn_p (insn->rtl ()))
+ 	    {
+ 	      rtx vl = get_vl (insn->rtl ());
+ 	      rtx avl = get_avl (insn->rtl ());
+ 	      def_info *def = find_access (insn->defs (), REGNO (vl));
+ 	      set_info *set = safe_dyn_cast<set_info *> (def);
+ 	      vector_insn_info info;
+ 	      info.parse_insn (insn);
+ 	      gcc_assert (set);
+ 	      if (m_vector_manager->to_delete_vsetvls.contains (insn->rtl ()))
+ 		{
+ 		  m_vector_manager->to_delete_vsetvls.remove (insn->rtl ());
+ 		  if (m_vector_manager->to_refine_vsetvls.contains (
+ 			insn->rtl ()))
+ 		    m_vector_manager->to_refine_vsetvls.remove (insn->rtl ());
+ 		  if (!set->has_nondebug_insn_uses ())
+ 		    {
+ 		      to_delete.add (insn->rtl ());
+ 		      continue;
+ 		    }
+ 		}
+ 	      if (m_vector_manager->to_refine_vsetvls.contains (insn->rtl ()))
+ 		{
+ 		  m_vector_manager->to_refine_vsetvls.remove (insn->rtl ());
+ 		  if (!set->has_nondebug_insn_uses ())
+ 		    {
+ 		      rtx new_pat = gen_vsetvl_pat (VSETVL_VTYPE_CHANGE_ONLY,
+ 						    info, NULL_RTX);
+ 		      change_insn (insn->rtl (), new_pat);
+ 		      continue;
+ 		    }
+ 		}
+ 	      if (vlmax_avl_p (avl))
+ 		continue;
+ 	      rtx new_pat
+ 		= gen_vsetvl_pat (VSETVL_DISCARD_RESULT, info, NULL_RTX);
+ 	      if (!set->has_nondebug_insn_uses ())
+ 		{
+ 		  validate_change (insn->rtl (), &PATTERN (insn->rtl ()),
+ 				   new_pat, false);
+ 		  continue;
+ 		}
+ 	    }
+ 	}
+     }
+ 
+   for (rtx_insn *rinsn : to_delete)
+     eliminate_insn (rinsn);
+ }
+ 
+ void
+ pass_vsetvl::init (void)
+ {
+   if (optimize > 0)
+     {
+       /* Initialization of RTL_SSA.  */
+       calculate_dominance_info (CDI_DOMINATORS);
+       df_analyze ();
+       crtl->ssa = new function_info (cfun);
+     }
+ 
+   m_vector_manager = new vector_infos_manager ();
+   compute_probabilities ();
+ 
+   if (dump_file)
+     {
+       fprintf (dump_file, "\nPrologue: Initialize vector infos\n");
+       m_vector_manager->dump (dump_file);
+     }
+ }
+ 
+ void
+ pass_vsetvl::done (void)
+ {
+   if (optimize > 0)
+     {
+       /* Finalization of RTL_SSA.  */
+       free_dominance_info (CDI_DOMINATORS);
+       if (crtl->ssa->perform_pending_updates ())
+ 	cleanup_cfg (0);
+       delete crtl->ssa;
+       crtl->ssa = nullptr;
+     }
+   m_vector_manager->release ();
+   delete m_vector_manager;
+   m_vector_manager = nullptr;
+ }
+ 
+ /* Compute probability for each block.  */
+ void
+ pass_vsetvl::compute_probabilities (void)
+ {
+   /* Don't compute it in -O0 since we don't need it.  */
+   if (!optimize)
+     return;
+   edge e;
+   edge_iterator ei;
+ 
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     {
+       basic_block cfg_bb = bb->cfg_bb ();
+       auto &curr_prob
+ 	= m_vector_manager->vector_block_infos[cfg_bb->index].probability;
+ 
+       /* GCC assume entry block (bb 0) are always so
+ 	 executed so set its probability as "always".  */
+       if (ENTRY_BLOCK_PTR_FOR_FN (cfun) == cfg_bb)
+ 	curr_prob = profile_probability::always ();
+       /* Exit block (bb 1) is the block we don't need to process.  */
+       if (EXIT_BLOCK_PTR_FOR_FN (cfun) == cfg_bb)
+ 	continue;
+ 
+       gcc_assert (curr_prob.initialized_p ());
+       FOR_EACH_EDGE (e, ei, cfg_bb->succs)
+ 	{
+ 	  auto &new_prob
+ 	    = m_vector_manager->vector_block_infos[e->dest->index].probability;
+ 	  if (!new_prob.initialized_p ())
+ 	    new_prob = curr_prob * e->probability;
+ 	  else if (new_prob == profile_probability::always ())
+ 	    continue;
+ 	  else
+ 	    new_prob += curr_prob * e->probability;
+ 	}
+     }
+ }
+ 
+ /* Lazy vsetvl insertion for optimize > 0. */
+ void
+ pass_vsetvl::lazy_vsetvl (void)
+ {
+   if (dump_file)
+     fprintf (dump_file,
+ 	     "\nEntering Lazy VSETVL PASS and Handling %d basic blocks for "
+ 	     "function:%s\n",
+ 	     n_basic_blocks_for_fn (cfun), function_name (cfun));
+ 
+   /* Phase 1 - Compute the local dems within each block.
+      The data-flow analysis within each block is backward analysis.  */
+   if (dump_file)
+     fprintf (dump_file, "\nPhase 1: Compute local backward vector infos\n");
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     compute_local_backward_infos (bb);
+   if (dump_file)
+     m_vector_manager->dump (dump_file);
+ 
+   /* Phase 2 - Emit vsetvl instructions within each basic block according to
+      demand, compute and save ANTLOC && AVLOC of each block.  */
+   if (dump_file)
+     fprintf (dump_file,
+ 	     "\nPhase 2: Emit vsetvl instruction within each block\n");
+   for (const bb_info *bb : crtl->ssa->bbs ())
+     emit_local_forward_vsetvls (bb);
+   if (dump_file)
+     m_vector_manager->dump (dump_file);
+ 
+   /* Phase 3 - Propagate demanded info across blocks.  */
+   if (dump_file)
+     fprintf (dump_file, "\nPhase 3: Demands propagation across blocks\n");
+   demand_fusion ();
+   if (dump_file)
+     m_vector_manager->dump (dump_file);
+ 
+   /* Phase 4 - Lazy code motion.  */
+   if (dump_file)
+     fprintf (dump_file, "\nPhase 4: PRE vsetvl by Lazy code motion (LCM)\n");
+   pre_vsetvl ();
+ 
+   /* Phase 5 - Cleanup AVL && VL operand of RVV instruction.  */
+   if (dump_file)
+     fprintf (dump_file, "\nPhase 5: Cleanup AVL and VL operands\n");
+   cleanup_insns ();
+ 
+   /* Phase 6 - Rebuild RTL_SSA to propagate AVL between vsetvls.  */
+   if (dump_file)
+     fprintf (dump_file,
+ 	     "\nPhase 6: Rebuild RTL_SSA to propagate AVL between vsetvls\n");
+   propagate_avl ();
+ }
+ 
+ /* Main entry point for this pass.  */
+ unsigned int
+ pass_vsetvl::execute (function *)
+ {
+   if (n_basic_blocks_for_fn (cfun) <= 0)
+     return 0;
+ 
+   /* The RVV instruction may change after split which is not a stable
+      instruction. We need to split it here to avoid potential issue
+      since the VSETVL PASS is insert before split PASS.  */
+   split_all_insns ();
+ 
+   /* Early return for there is no vector instructions.  */
+   if (!has_vector_insn (cfun))
+     return 0;
+ 
+   init ();
+ 
+   if (!optimize)
+     simple_vsetvl ();
+   else
+     lazy_vsetvl ();
+ 
+   done ();
+   return 0;
+ }
+ 
+ rtl_opt_pass *
+ make_pass_vsetvl (gcc::context *ctxt)
+ {
+   return new pass_vsetvl (ctxt);
+ }
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vsetvl.def gcc-13.1.0/gcc/config/riscv/riscv-vsetvl.def
*** gcc-12.2.0/gcc/config/riscv/riscv-vsetvl.def	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vsetvl.def	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,513 ----
+ /* VSETVL pass def for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2023-2023 Free Software Foundation, Inc.
+    Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or(at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY, WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef DEF_INCOMPATIBLE_COND
+ #define DEF_INCOMPATIBLE_COND(AVL1, SEW1, LMUL1, RATIO1, NONZERO_AVL1,         \
+ 			      GE_SEW1, TAIL_POLICTY1, MASK_POLICY1, AVL2,      \
+ 			      SEW2, LMUL2, RATIO2, NONZERO_AVL2, GE_SEW2,      \
+ 			      TAIL_POLICTY2, MASK_POLICY2, COND)
+ #endif
+ 
+ #ifndef DEF_SEW_LMUL_FUSE_RULE
+ #define DEF_SEW_LMUL_FUSE_RULE(DEMAND_SEW1, DEMAND_LMUL1, DEMAND_RATIO1,       \
+ 			       DEMAND_GE_SEW1, DEMAND_SEW2, DEMAND_LMUL2,      \
+ 			       DEMAND_RATIO2, DEMAND_GE_SEW2, NEW_DEMAND_SEW,  \
+ 			       NEW_DEMAND_LMUL, NEW_DEMAND_RATIO,              \
+ 			       NEW_DEMAND_GE_SEW, NEW_SEW, NEW_VLMUL,          \
+ 			       NEW_RATIO)
+ #endif
+ 
+ #ifndef DEF_UNAVAILABLE_COND
+ #define DEF_UNAVAILABLE_COND(AVL1, SEW1, LMUL1, RATIO1, NONZERO_AVL1, GE_SEW1, \
+ 			     TAIL_POLICTY1, MASK_POLICY1, AVL2, SEW2, LMUL2,   \
+ 			     RATIO2, NONZERO_AVL2, GE_SEW2, TAIL_POLICTY2,     \
+ 			     MASK_POLICY2, COND)
+ #endif
+ 
+ /* Case 1: Demand compatible AVL.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ incompatible_avl_p)
+ 
+ /* Case 2: Demand same SEW.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_sew_p)
+ 
+ /* Case 3: Demand same LMUL.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_lmul_p)
+ 
+ /* Case 4: Demand same RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_ratio_p)
+ 
+ /* Case 5: Demand same TAIL_POLICY.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_TRUE, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_TRUE, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_tail_policy_p)
+ 
+ /* Case 6: Demand same MASK_POLICY.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_TRUE,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_TRUE,
+ 		       /*COND*/ different_mask_policy_p)
+ 
+ /* Case 7: Demand non zero AVL.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_TRUE, /*GE_SEW*/ DEMAND_ANY,
+ 		       DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_ANY,
+ 		       DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ possible_zero_avl_p)
+ 
+ /* Case 8: First SEW/LMUL/GE_SEW <-> Second RATIO/SEW.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_ratio_invalid_for_first_sew_p)
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_ratio_invalid_for_first_lmul_p)
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_sew_less_than_first_sew_p)
+ 
+ /* Case 9: First (GE_SEW + LMUL) <-> Second RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_ratio_less_than_first_ratio_p)
+ /* Case 11: First (SEW + LMUL) <-> Second RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_ratio_p)
+ /* Case 13: First (GE_SEW/SEW + RATIO) <-> Second LMUL.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_lmul_p)
+ /* Case 14: First (LMUL + RATIO) <-> Second SEW.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_sew_p)
+ /* Case 15: First (LMUL + RATIO) <-> Second GE_SEW.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ first_sew_less_than_second_sew_p)
+ 
+ /* Case 16: First SEW + Second LMUL <-> First RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_lmul_p)
+ /* Case 17: First SEW + Second LMUL <-> Second RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_sew_p)
+ 
+ /* Case 18: First SEW + Second RATIO <-> First LMUL.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_ratio_p)
+ 
+ /* Case 19: First GE_SEW + Second LMUL <-> First RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_lmul_less_than_first_lmul_p)
+ /* Case 20: First GE_SEW + Second LMUL <-> Second RATIO.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_sew_less_than_first_sew_p)
+ 
+ /* Case 21: First GE_SEW + Second RATIO <-> First LMUL.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ second_ratio_less_than_first_ratio_p)
+ 
+ /* Case 22: First GE_SEW + Second SEW + First LMUL + Second ratio.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_lmul_p)
+ 
+ /* Case 23: First GE_SEW + Second SEW + Second LMUL + First ratio.  */
+ DEF_INCOMPATIBLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		       /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_TRUE,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		       /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		       /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		       /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		       /*COND*/ different_ratio_p)
+ 
+ /* Merge rules.  */
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ false,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ true, greatest_sew, first_vlmul,
+ 			first_ratio)
+ 
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_ANY,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*SEW*/ DEMAND_ANY, /*LMUL*/ DEMAND_ANY,
+ 			/*RATIO*/ DEMAND_TRUE, /*GE_SEW*/ DEMAND_ANY,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ true,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ false, first_sew,
+ 			vlmul_for_first_sew_second_ratio, second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_ANY, /*LMUL*/ DEMAND_TRUE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_ANY,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_ANY,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ true,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ false, second_sew, first_vlmul,
+ 			ratio_for_second_sew_first_vlmul)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_FALSE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_TRUE, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ false,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ true, first_sew,
+ 			vlmul_for_first_sew_second_ratio, second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_TRUE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ false,
+ 			/*NEW_DEMAND_RATIO*/ true,
+ 			/*NEW_DEMAND_GE_SEW*/ true, greatest_sew, first_vlmul,
+ 			second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_FALSE, /*LMUL*/ DEMAND_TRUE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ true,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ true, first_sew, second_vlmul,
+ 			second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_TRUE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ true,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ false, second_sew, second_vlmul,
+ 			second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_TRUE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ true,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ false, greatest_sew, second_vlmul,
+ 			second_ratio)
+ 
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ false,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ false, second_sew, second_vlmul,
+ 			second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_TRUE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ true,
+ 			/*NEW_DEMAND_RATIO*/ false,
+ 			/*NEW_DEMAND_GE_SEW*/ false, second_sew, first_vlmul,
+ 			second_ratio)
+ DEF_SEW_LMUL_FUSE_RULE (/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_TRUE, /*GE_SEW*/ DEMAND_TRUE,
+ 			/*SEW*/ DEMAND_TRUE, /*LMUL*/ DEMAND_FALSE,
+ 			/*RATIO*/ DEMAND_FALSE, /*GE_SEW*/ DEMAND_FALSE,
+ 			/*NEW_DEMAND_SEW*/ true,
+ 			/*NEW_DEMAND_LMUL*/ false,
+ 			/*NEW_DEMAND_RATIO*/ true,
+ 			/*NEW_DEMAND_GE_SEW*/ false, second_sew, first_vlmul,
+ 			first_ratio)
+ 
+ /* Define the unavailable cases for LCM.  */
+ 
+ /* Case 1: Dem1 (Not demand AVL) is unavailable to Dem2 (Demand AVL).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_FALSE, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ always_unavailable)
+ /* Case 2: Dem1 (Demand AVL) is unavailable to Dem2 (Demand normal AVL).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_TRUE, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ avl_unavailable_p)
+ 
+ /* Case 3: Dem1 (Not demand TAIL) is unavailable to Dem2 (Demand TAIL).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_FALSE, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_TRUE, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ always_unavailable)
+ 
+ /* Case 4: Dem1 (Not demand MASK) is unavailable to Dem2 (Demand MASK).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_FALSE,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_TRUE,
+ 		      /*COND*/ always_unavailable)
+ 
+ /* Case 5: Dem1 (Demand RATIO) is unavailable to Dem2 (Demand SEW/GE_SEW/LMUL).
+  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_FALSE,
+ 		      /*LMUL*/ DEMAND_FALSE, /*RATIO*/ DEMAND_TRUE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ always_unavailable)
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_FALSE,
+ 		      /*LMUL*/ DEMAND_FALSE, /*RATIO*/ DEMAND_TRUE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ always_unavailable)
+ 
+ /* Case 6: Dem1 (Demand SEW).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		      /*LMUL*/ DEMAND_FALSE, /*RATIO*/ DEMAND_FALSE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ sew_unavailable_p)
+ 
+ /* Case 7: Dem1 (Demand LMUL).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_FALSE,
+ 		      /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_FALSE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_FALSE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ lmul_unavailable_p)
+ 
+ /* Case 8: Dem1 (Demand GE_SEW).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		      /*LMUL*/ DEMAND_FALSE, /*RATIO*/ DEMAND_FALSE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ ge_sew_unavailable_p)
+ 
+ /* Case 9: Dem1 (Demand GE_SEW + LMUL).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		      /*LMUL*/ DEMAND_TRUE, /*RATIO*/ DEMAND_FALSE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ ge_sew_lmul_unavailable_p)
+ 
+ /* Case 10: Dem1 (Demand GE_SEW + RATIO).  */
+ DEF_UNAVAILABLE_COND (/*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_TRUE,
+ 		      /*LMUL*/ DEMAND_FALSE, /*RATIO*/ DEMAND_TRUE,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_TRUE,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*AVL*/ DEMAND_ANY, /*SEW*/ DEMAND_ANY,
+ 		      /*LMUL*/ DEMAND_ANY, /*RATIO*/ DEMAND_ANY,
+ 		      /*NONZERO_AVL*/ DEMAND_ANY, /*GE_SEW*/ DEMAND_ANY,
+ 		      /*TAIL_POLICTY*/ DEMAND_ANY, /*MASK_POLICY*/ DEMAND_ANY,
+ 		      /*COND*/ ge_sew_ratio_unavailable_p)
+ 
+ #undef DEF_INCOMPATIBLE_COND
+ #undef DEF_SEW_LMUL_FUSE_RULE
+ #undef DEF_UNAVAILABLE_COND
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv-vsetvl.h gcc-13.1.0/gcc/config/riscv/riscv-vsetvl.h
*** gcc-12.2.0/gcc/config/riscv/riscv-vsetvl.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv-vsetvl.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,513 ----
+ /* VSETVL pass header for RISC-V 'V' Extension for GNU compiler.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+    Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ This file is part of GCC.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or(at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ #ifndef GCC_RISCV_VSETVL_H
+ #define GCC_RISCV_VSETVL_H
+ 
+ #define IS_AGNOSTIC(VALUE) (bool) (VALUE & 0x1 || (VALUE >> 1 & 0x1))
+ 
+ namespace riscv_vector {
+ 
+ /* Classification of vsetvl instruction.  */
+ enum vsetvl_type
+ {
+   VSETVL_NORMAL,
+   VSETVL_VTYPE_CHANGE_ONLY,
+   VSETVL_DISCARD_RESULT,
+   NUM_VSETVL_TYPE
+ };
+ 
+ enum emit_type
+ {
+   /* emit_insn directly.  */
+   EMIT_DIRECT,
+   EMIT_BEFORE,
+   EMIT_AFTER,
+ };
+ 
+ enum demand_type
+ {
+   DEMAND_AVL,
+   DEMAND_SEW,
+   DEMAND_LMUL,
+   DEMAND_RATIO,
+   DEMAND_NONZERO_AVL,
+   DEMAND_GE_SEW,
+   DEMAND_TAIL_POLICY,
+   DEMAND_MASK_POLICY,
+   NUM_DEMAND
+ };
+ 
+ enum demand_status
+ {
+   DEMAND_FALSE,
+   DEMAND_TRUE,
+   DEMAND_ANY,
+ };
+ 
+ enum fusion_type
+ {
+   INVALID_FUSION,
+   VALID_AVL_FUSION,
+   KILLED_AVL_FUSION
+ };
+ 
+ enum merge_type
+ {
+   LOCAL_MERGE,
+   GLOBAL_MERGE
+ };
+ 
+ enum def_type
+ {
+   REAL_SET = 1 << 0,
+   PHI_SET = 1 << 1,
+   BB_HEAD_SET = 1 << 2,
+   BB_END_SET = 1 << 3,
+   /* ??? TODO: In RTL_SSA framework, we have REAL_SET,
+      PHI_SET, BB_HEAD_SET, BB_END_SET and
+      CLOBBER_DEF def_info types. Currently,
+      we conservatively do not optimize clobber
+      def since we don't see the case that we
+      need to optimize it.  */
+   CLOBBER_DEF = 1 << 4
+ };
+ 
+ /* AVL info for RVV instruction. Most RVV instructions have AVL operand in
+    implicit dependency. The AVL comparison between 2 RVV instructions is
+    very important since it affects our decision whether we should insert
+    a vsetvl instruction in this situation. AVL operand of all RVV instructions
+    can only be either a const_int value with < 32 or a reg value which can be
+    define by either a real RTL instruction or a PHI instruction. So we need a
+    standalone method to define AVL comparison and we can not simpily use
+    operator "==" to compare 2 RTX value since it's to strict which will make
+    use miss a lot of optimization opportunities. This method handle these
+    following cases:
+ 
+      -  Background:
+ 	  Insert-vsetvl PASS is working after RA.
+ 
+      -  Terminology:
+ 	  - pr: Pseudo-register.
+ 	  - hr: Hardware-register.
+ 
+      -  Case 1:
+ 
+ 	Before RA:
+ 	  li pr138,13
+ 	  insn1 (implicit depend on pr138).
+ 	  li pr138,14
+ 	  insn2 (implicit depend on pr139).
+ 
+ 	After RA:
+ 	  li hr5,13
+ 	  insn1 (implicit depend on hr5).
+ 	  li hr5,14
+ 	  insn2 (implicit depend on hr5).
+ 
+ 	Correct IR after vsetvl PASS:
+ 	  li hr5,13
+ 	  vsetvl1 zero,hr5....
+ 	  insn1 (implicit depend on hr5).
+ 	  li hr5,14
+ 	  vsetvl2 zero,hr5....
+ 	  insn2 (implicit depend on hr5).
+ 
+      In this case, both insn1 and insn2 are using hr5 as the same AVL.
+      If we use "rtx_equal_p" or "REGNO (AVL1) == REGNO (AVL)", we will end
+      up with missing the vsetvl2 instruction which creates wrong result.
+ 
+      Note: Using "==" operator to compare 2 AVL RTX strictly can fix this
+      issue. However, it is a too strict comparison method since not all member
+      variables in RTX data structure are not neccessary to be the same. It will
+      make us miss a lot of optimization opportunities.
+ 
+      -  Case 2:
+ 
+ 	After RA:
+ 	bb 0:
+ 	  li hr5,13
+ 	bb 1:
+ 	  li hr5,14
+ 	bb2:
+ 	  insn1 (implicit depend on hr5).
+ 	  insn2 (implicit depend on hr5).
+ 
+      In this case, we may end up with different AVL RTX and produce redundant
+      vsetvl instruction.
+ 
+      VALUE is the implicit dependency in each RVV instruction.
+      SOURCE is the source definition information of AVL operand.  */
+ class avl_info
+ {
+ private:
+   rtx m_value;
+   rtl_ssa::set_info *m_source;
+ 
+ public:
+   avl_info () : m_value (NULL_RTX), m_source (nullptr) {}
+   avl_info (const avl_info &);
+   avl_info (rtx, rtl_ssa::set_info *);
+   rtx get_value () const { return m_value; }
+   rtl_ssa::set_info *get_source () const { return m_source; }
+   bool single_source_equal_p (const avl_info &) const;
+   bool multiple_source_equal_p (const avl_info &) const;
+   avl_info &operator= (const avl_info &);
+   bool operator== (const avl_info &) const;
+   bool operator!= (const avl_info &) const;
+ 
+   bool has_avl_imm () const
+   {
+     return get_value () && CONST_INT_P (get_value ());
+   }
+   bool has_avl_reg () const { return get_value () && REG_P (get_value ()); }
+   bool has_avl_no_reg () const { return !get_value (); }
+   bool has_non_zero_avl () const;
+ };
+ 
+ /* Basic structure to save VL/VTYPE information.  */
+ struct vl_vtype_info
+ {
+ protected:
+   /* AVL can be either register or const_int.  */
+   avl_info m_avl;
+   /* Fields from VTYPE. The VTYPE checking depend on the flag
+      dem_* before.  */
+   uint8_t m_sew;
+   riscv_vector::vlmul_type m_vlmul;
+   uint8_t m_ratio;
+   bool m_ta;
+   bool m_ma;
+ 
+ public:
+   void set_sew (uint8_t sew) { m_sew = sew; }
+   void set_vlmul (riscv_vector::vlmul_type vlmul) { m_vlmul = vlmul; }
+   void set_ratio (uint8_t ratio) { m_ratio = ratio; }
+   void set_ta (bool ta) { m_ta = ta; }
+   void set_ma (bool ma) { m_ma = ma; }
+ 
+   vl_vtype_info ()
+     : m_avl (avl_info ()), m_sew (0), m_vlmul (riscv_vector::LMUL_RESERVED),
+       m_ratio (0), m_ta (0), m_ma (0)
+   {}
+   vl_vtype_info (const vl_vtype_info &) = default;
+   vl_vtype_info &operator= (const vl_vtype_info &) = default;
+   vl_vtype_info (avl_info, uint8_t, riscv_vector::vlmul_type, uint8_t, bool,
+ 		 bool);
+ 
+   bool operator== (const vl_vtype_info &) const;
+   bool operator!= (const vl_vtype_info &) const;
+ 
+   bool has_avl_imm () const { return m_avl.has_avl_imm (); }
+   bool has_avl_reg () const { return m_avl.has_avl_reg (); }
+   bool has_avl_no_reg () const { return m_avl.has_avl_no_reg (); }
+   bool has_non_zero_avl () const { return m_avl.has_non_zero_avl (); };
+ 
+   rtx get_avl () const { return m_avl.get_value (); }
+   const avl_info &get_avl_info () const { return m_avl; }
+   rtl_ssa::set_info *get_avl_source () const { return m_avl.get_source (); }
+   void set_avl_info (const avl_info &avl) { m_avl = avl; }
+   uint8_t get_sew () const { return m_sew; }
+   riscv_vector::vlmul_type get_vlmul () const { return m_vlmul; }
+   uint8_t get_ratio () const { return m_ratio; }
+   bool get_ta () const { return m_ta; }
+   bool get_ma () const { return m_ma; }
+ 
+   bool same_avl_p (const vl_vtype_info &) const;
+   bool same_vtype_p (const vl_vtype_info &) const;
+   bool same_vlmax_p (const vl_vtype_info &) const;
+ };
+ 
+ class vector_insn_info : public vl_vtype_info
+ {
+ private:
+   enum state_type
+   {
+     UNINITIALIZED,
+     VALID,
+     UNKNOWN,
+     EMPTY,
+     /* The empty block can not be polluted as dirty.  */
+     HARD_EMPTY,
+ 
+     /* The block is polluted as containing VSETVL instruction during dem
+        backward propagation to gain better LCM optimization even though
+        such VSETVL instruction is not really emit yet during this time.  */
+     DIRTY,
+     /* The block is polluted with killed AVL.
+        We will backward propagate such case:
+ 	 bb 0: def a5, 55 (empty).
+ 	 ...
+ 	 bb 1: vsetvli zero, a5.
+ 	 ...
+ 	 bb 2: empty.
+ 	 ...
+ 	 bb 3: def a3, 55 (empty).
+ 	 ...
+ 	 bb 4: vsetvli zero, a3.
+ 
+        To elide vsetvli in bb 4, we need to backward pollute bb 3 and bb 2
+        as DIRTY block as long as there is a block def AVL which has the same
+        source with AVL in bb 4. Such polluted block, we call it as
+        DIRTY_WITH_KILLED_AVL
+     */
+     DIRTY_WITH_KILLED_AVL
+   };
+ 
+   enum state_type m_state;
+ 
+   bool m_demands[NUM_DEMAND];
+ 
+   /* TODO: Assume INSN1 = INSN holding of definition of AVL.
+ 		  INSN2 = INSN that is inserted a vsetvl insn before.
+      We may need to add a new member to save INSN of holding AVL.
+      m_insn is holding the INSN that is inserted a vsetvl insn before in
+      Phase 2. Ideally, most of the time INSN1 == INSN2. However, considering
+      such case:
+ 
+ 	vmv.x.s (INSN2)
+ 	vle8.v (INSN1)
+ 
+      If these 2 instructions are compatible, we should only issue a vsetvl INSN
+      (with AVL included) before vmv.x.s, but vmv.x.s is not the INSN holding the
+      definition of AVL.  */
+   rtl_ssa::insn_info *m_insn;
+ 
+   /* Parse the instruction to get VL/VTYPE information and demanding
+    * information.  */
+   /* This is only called by simple_vsetvl subroutine when optimize == 0.
+      Since RTL_SSA can not be enabled when optimize == 0, we don't initialize
+      the m_insn.  */
+   void parse_insn (rtx_insn *);
+ 
+   friend class vector_infos_manager;
+ 
+ public:
+   vector_insn_info ()
+     : vl_vtype_info (), m_state (UNINITIALIZED), m_demands{false},
+       m_insn (nullptr)
+   {}
+ 
+   /* This is only called by lazy_vsetvl subroutine when optimize > 0.
+      We use RTL_SSA framework to initialize the insn_info.  */
+   void parse_insn (rtl_ssa::insn_info *);
+ 
+   bool operator>= (const vector_insn_info &) const;
+   bool operator== (const vector_insn_info &) const;
+ 
+   bool uninit_p () const { return m_state == UNINITIALIZED; }
+   bool valid_p () const { return m_state == VALID; }
+   bool unknown_p () const { return m_state == UNKNOWN; }
+   bool empty_p () const { return m_state == EMPTY || m_state == HARD_EMPTY; }
+   bool hard_empty_p () const { return m_state == HARD_EMPTY; }
+   bool dirty_p () const
+   {
+     return m_state == DIRTY || m_state == DIRTY_WITH_KILLED_AVL;
+   }
+   bool dirty_with_killed_avl_p () const
+   {
+     return m_state == DIRTY_WITH_KILLED_AVL;
+   }
+   bool real_dirty_p () const { return m_state == DIRTY; }
+   bool valid_or_dirty_p () const
+   {
+     return m_state == VALID || m_state == DIRTY
+ 	   || m_state == DIRTY_WITH_KILLED_AVL;
+   }
+   bool available_p (const vector_insn_info &) const;
+ 
+   static vector_insn_info get_unknown ()
+   {
+     vector_insn_info info;
+     info.set_unknown ();
+     return info;
+   }
+ 
+   static vector_insn_info get_hard_empty ()
+   {
+     vector_insn_info info;
+     info.set_hard_empty ();
+     return info;
+   }
+ 
+   void set_valid () { m_state = VALID; }
+   void set_unknown () { m_state = UNKNOWN; }
+   void set_empty () { m_state = EMPTY; }
+   void set_hard_empty () { m_state = HARD_EMPTY; }
+   void set_dirty (enum fusion_type type)
+   {
+     gcc_assert (type == VALID_AVL_FUSION || type == KILLED_AVL_FUSION);
+     if (type == VALID_AVL_FUSION)
+       m_state = DIRTY;
+     else
+       m_state = DIRTY_WITH_KILLED_AVL;
+   }
+   void set_dirty (bool dirty_with_killed_avl_p)
+   {
+     if (dirty_with_killed_avl_p)
+       m_state = DIRTY_WITH_KILLED_AVL;
+     else
+       m_state = DIRTY;
+   }
+   void set_insn (rtl_ssa::insn_info *insn) { m_insn = insn; }
+ 
+   bool demand_p (enum demand_type type) const { return m_demands[type]; }
+   void demand (enum demand_type type) { m_demands[type] = true; }
+   void set_demand (enum demand_type type, bool value)
+   {
+     m_demands[type] = value;
+   }
+   void fuse_avl (const vector_insn_info &, const vector_insn_info &);
+   void fuse_sew_lmul (const vector_insn_info &, const vector_insn_info &);
+   void fuse_tail_policy (const vector_insn_info &, const vector_insn_info &);
+   void fuse_mask_policy (const vector_insn_info &, const vector_insn_info &);
+ 
+   bool compatible_p (const vector_insn_info &) const;
+   bool compatible_avl_p (const vl_vtype_info &) const;
+   bool compatible_avl_p (const avl_info &) const;
+   bool compatible_vtype_p (const vl_vtype_info &) const;
+   bool compatible_p (const vl_vtype_info &) const;
+   vector_insn_info merge (const vector_insn_info &, enum merge_type) const;
+ 
+   rtl_ssa::insn_info *get_insn () const { return m_insn; }
+   const bool *get_demands (void) const { return m_demands; }
+   rtx get_avl_reg_rtx (void) const
+   {
+     return gen_rtx_REG (Pmode, get_avl_source ()->regno ());
+   }
+   bool update_fault_first_load_avl (rtl_ssa::insn_info *);
+ 
+   void dump (FILE *) const;
+ };
+ 
+ struct vector_block_info
+ {
+   /* The local_dem vector insn_info of the block.  */
+   vector_insn_info local_dem;
+ 
+   /* The reaching_out vector insn_info of the block.  */
+   vector_insn_info reaching_out;
+ 
+   /* The static execute probability of the demand info.  */
+   profile_probability probability;
+ 
+   vector_block_info () = default;
+ };
+ 
+ class vector_infos_manager
+ {
+ public:
+   auto_vec<vector_insn_info> vector_insn_infos;
+   auto_vec<vector_block_info> vector_block_infos;
+   auto_vec<vector_insn_info *> vector_exprs;
+   hash_set<rtx_insn *> to_refine_vsetvls;
+   hash_set<rtx_insn *> to_delete_vsetvls;
+ 
+   struct edge_list *vector_edge_list;
+   sbitmap *vector_kill;
+   sbitmap *vector_del;
+   sbitmap *vector_insert;
+   sbitmap *vector_antic;
+   sbitmap *vector_transp;
+   sbitmap *vector_comp;
+   sbitmap *vector_avin;
+   sbitmap *vector_avout;
+ 
+   vector_infos_manager ();
+ 
+   /* Create a new expr in expr list if it is not exist.  */
+   void create_expr (vector_insn_info &);
+ 
+   /* Get the expr id of the pair of expr.  */
+   size_t get_expr_id (const vector_insn_info &) const;
+ 
+   /* Return the number of expr that is set in the bitmap.  */
+   size_t expr_set_num (sbitmap) const;
+ 
+   /* Get all relaxer expression id for corresponding vector info.  */
+   auto_vec<size_t> get_all_available_exprs (const vector_insn_info &) const;
+ 
+   /* Return true if all expression set in bitmap are same AVL.  */
+   bool all_same_avl_p (const basic_block, sbitmap) const;
+ 
+   /* Return true if all expression set in bitmap are same ratio.  */
+   bool all_same_ratio_p (sbitmap) const;
+ 
+   void release (void);
+   void create_bitmap_vectors (void);
+   void free_bitmap_vectors (void);
+ 
+   void dump (FILE *) const;
+ };
+ 
+ struct demands_pair
+ {
+   demand_status first[NUM_DEMAND];
+   demand_status second[NUM_DEMAND];
+   bool match_cond_p (const bool *dems1, const bool *dems2) const
+   {
+     for (unsigned i = 0; i < NUM_DEMAND; i++)
+       {
+ 	if (first[i] != DEMAND_ANY && first[i] != dems1[i])
+ 	  return false;
+ 	if (second[i] != DEMAND_ANY && second[i] != dems2[i])
+ 	  return false;
+       }
+     return true;
+   }
+ };
+ 
+ struct demands_cond
+ {
+   demands_pair pair;
+   using CONDITION_TYPE
+     = bool (*) (const vector_insn_info &, const vector_insn_info &);
+   CONDITION_TYPE incompatible_p;
+   bool dual_incompatible_p (const vector_insn_info &info1,
+ 			    const vector_insn_info &info2) const
+   {
+     return ((pair.match_cond_p (info1.get_demands (), info2.get_demands ())
+ 	     && incompatible_p (info1, info2))
+ 	    || (pair.match_cond_p (info2.get_demands (), info1.get_demands ())
+ 		&& incompatible_p (info2, info1)));
+   }
+ };
+ 
+ struct demands_fuse_rule
+ {
+   demands_pair pair;
+   bool demand_sew_p;
+   bool demand_lmul_p;
+   bool demand_ratio_p;
+   bool demand_ge_sew_p;
+ 
+   using NEW_SEW
+     = unsigned (*) (const vector_insn_info &, const vector_insn_info &);
+   using NEW_VLMUL
+     = vlmul_type (*) (const vector_insn_info &, const vector_insn_info &);
+   using NEW_RATIO
+     = unsigned (*) (const vector_insn_info &, const vector_insn_info &);
+   NEW_SEW new_sew;
+   NEW_VLMUL new_vlmul;
+   NEW_RATIO new_ratio;
+ };
+ 
+ } // namespace riscv_vector
+ #endif
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv.cc gcc-13.1.0/gcc/config/riscv/riscv.cc
*** gcc-12.2.0/gcc/config/riscv/riscv.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation for RISC-V.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Subroutines used for code generation for RISC-V.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
*************** along with GCC; see the file COPYING3.
*** 25,30 ****
--- 25,32 ----
  #include "config.h"
  #include "system.h"
  #include "coretypes.h"
+ #include "target.h"
+ #include "backend.h"
  #include "tm.h"
  #include "rtl.h"
  #include "regs.h"
*************** along with GCC; see the file COPYING3.
*** 45,62 ****
  #include "emit-rtl.h"
  #include "reload.h"
  #include "tm_p.h"
- #include "target.h"
- #include "target-def.h"
  #include "basic-block.h"
  #include "expr.h"
  #include "optabs.h"
  #include "bitmap.h"
  #include "df.h"
  #include "diagnostic.h"
  #include "builtins.h"
  #include "predict.h"
  #include "tree-pass.h"
  #include "opts.h"
  
  /* True if X is an UNSPEC wrapper around a SYMBOL_REF or LABEL_REF.  */
  #define UNSPEC_ADDRESS_P(X)					\
--- 47,68 ----
  #include "emit-rtl.h"
  #include "reload.h"
  #include "tm_p.h"
  #include "basic-block.h"
  #include "expr.h"
  #include "optabs.h"
  #include "bitmap.h"
  #include "df.h"
+ #include "function-abi.h"
  #include "diagnostic.h"
  #include "builtins.h"
  #include "predict.h"
  #include "tree-pass.h"
  #include "opts.h"
+ #include "tm-constrs.h"
+ #include "rtl-iter.h"
+ 
+ /* This file should be included last.  */
+ #include "target-def.h"
  
  /* True if X is an UNSPEC wrapper around a SYMBOL_REF or LABEL_REF.  */
  #define UNSPEC_ADDRESS_P(X)					\
*************** enum riscv_address_type {
*** 100,106 ****
  /* Information about a function's frame layout.  */
  struct GTY(())  riscv_frame_info {
    /* The size of the frame in bytes.  */
!   HOST_WIDE_INT total_size;
  
    /* Bit X is set if the function saves or restores GPR X.  */
    unsigned int mask;
--- 106,112 ----
  /* Information about a function's frame layout.  */
  struct GTY(())  riscv_frame_info {
    /* The size of the frame in bytes.  */
!   poly_int64 total_size;
  
    /* Bit X is set if the function saves or restores GPR X.  */
    unsigned int mask;
*************** struct GTY(())  riscv_frame_info {
*** 112,128 ****
    unsigned save_libcall_adjustment;
  
    /* Offsets of fixed-point and floating-point save areas from frame bottom */
!   HOST_WIDE_INT gp_sp_offset;
!   HOST_WIDE_INT fp_sp_offset;
  
    /* Offset of virtual frame pointer from stack pointer/frame bottom */
!   HOST_WIDE_INT frame_pointer_offset;
  
    /* Offset of hard frame pointer from stack pointer/frame bottom */
!   HOST_WIDE_INT hard_frame_pointer_offset;
  
    /* The offset of arg_pointer_rtx from the bottom of the frame.  */
!   HOST_WIDE_INT arg_pointer_offset;
  };
  
  enum riscv_privilege_levels {
--- 118,137 ----
    unsigned save_libcall_adjustment;
  
    /* Offsets of fixed-point and floating-point save areas from frame bottom */
!   poly_int64 gp_sp_offset;
!   poly_int64 fp_sp_offset;
  
    /* Offset of virtual frame pointer from stack pointer/frame bottom */
!   poly_int64 frame_pointer_offset;
  
    /* Offset of hard frame pointer from stack pointer/frame bottom */
!   poly_int64 hard_frame_pointer_offset;
  
    /* The offset of arg_pointer_rtx from the bottom of the frame.  */
!   poly_int64 arg_pointer_offset;
! 
!   /* Reset this struct, clean all field to zero.  */
!   void reset(void);
  };
  
  enum riscv_privilege_levels {
*************** struct GTY(())  machine_function {
*** 147,152 ****
--- 156,166 ----
  
    /* The current frame information, calculated by riscv_compute_frame_info.  */
    struct riscv_frame_info frame;
+ 
+   /* The components already handled by separate shrink-wrapping, which should
+      not be considered by the prologue and epilogue.  */
+   bool reg_is_wrapped_separately[FIRST_PSEUDO_REGISTER];
+ 
  };
  
  /* Information about a single argument.  */
*************** static const struct riscv_tune_param *tu
*** 255,260 ****
--- 269,280 ----
  /* Which automaton to use for tuning.  */
  enum riscv_microarchitecture_type riscv_microarchitecture;
  
+ /* The number of chunks in a single vector register.  */
+ poly_uint16 riscv_vector_chunks;
+ 
+ /* The number of bytes in a vector chunk.  */
+ unsigned riscv_bytes_per_vector_chunk;
+ 
  /* Index R is the smallest register class that contains register R.  */
  const enum reg_class riscv_regno_to_class[FIRST_PSEUDO_REGISTER] = {
    GR_REGS,	GR_REGS,	GR_REGS,	GR_REGS,
*************** const enum reg_class riscv_regno_to_clas
*** 273,279 ****
    FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
    FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
    FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
!   FRAME_REGS,	FRAME_REGS,
  };
  
  /* Costs to use when optimizing for rocket.  */
--- 293,314 ----
    FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
    FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
    FP_REGS,	FP_REGS,	FP_REGS,	FP_REGS,
!   FRAME_REGS,	FRAME_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   NO_REGS,	NO_REGS,	NO_REGS,	NO_REGS,
!   VM_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
!   VD_REGS,	VD_REGS,	VD_REGS,	VD_REGS,
  };
  
  /* Costs to use when optimizing for rocket.  */
*************** static const struct attribute_spec riscv
*** 349,354 ****
--- 384,394 ----
    { "interrupt", 0, 1, false, true, true, false,
      riscv_handle_type_attribute, NULL },
  
+   /* The following two are used for the built-in properties of the Vector type
+      and are not used externally */
+   {"RVV sizeless type", 4, 4, false, true, false, true, NULL, NULL},
+   {"RVV type", 0, 0, false, true, false, true, NULL, NULL},
+ 
    /* The last attribute spec is set to be NULL.  */
    { NULL,	0,  0, false, false, false, false, NULL, NULL }
  };
*************** static const unsigned gpr_save_reg_order
*** 363,376 ****
  
  /* A table describing all the processors GCC knows about.  */
  static const struct riscv_tune_info riscv_tune_info_table[] = {
!   { "rocket", generic, &rocket_tune_info },
!   { "sifive-3-series", generic, &rocket_tune_info },
!   { "sifive-5-series", generic, &rocket_tune_info },
!   { "sifive-7-series", sifive_7, &sifive_7_tune_info },
!   { "thead-c906", generic, &thead_c906_tune_info },
!   { "size", generic, &optimize_size_tune_info },
  };
  
  /* Implement TARGET_MIN_ARITHMETIC_PRECISION.  */
  
  static unsigned int
--- 403,430 ----
  
  /* A table describing all the processors GCC knows about.  */
  static const struct riscv_tune_info riscv_tune_info_table[] = {
! #define RISCV_TUNE(TUNE_NAME, PIPELINE_MODEL, TUNE_INFO)	\
!   { TUNE_NAME, PIPELINE_MODEL, & TUNE_INFO},
! #include "riscv-cores.def"
  };
  
+ void riscv_frame_info::reset(void)
+ {
+   total_size = 0;
+   mask = 0;
+   fmask = 0;
+   save_libcall_adjustment = 0;
+ 
+   gp_sp_offset = 0;
+   fp_sp_offset = 0;
+ 
+   frame_pointer_offset = 0;
+ 
+   hard_frame_pointer_offset = 0;
+ 
+   arg_pointer_offset = 0;
+ }
+ 
  /* Implement TARGET_MIN_ARITHMETIC_PRECISION.  */
  
  static unsigned int
*************** riscv_build_integer_1 (struct riscv_inte
*** 426,432 ****
  	 sign-extended (negative) representation (-1 << 31) for the
  	 value, if we want to build (1 << 31) in SImode.  This will
  	 then expand to an LUI instruction.  */
!       if (mode == SImode && value == (HOST_WIDE_INT_1U << 31))
  	codes[0].value = (HOST_WIDE_INT_M1U << 31);
  
        return 1;
--- 480,486 ----
  	 sign-extended (negative) representation (-1 << 31) for the
  	 value, if we want to build (1 << 31) in SImode.  This will
  	 then expand to an LUI instruction.  */
!       if (TARGET_64BIT && mode == SImode && value == (HOST_WIDE_INT_1U << 31))
  	codes[0].value = (HOST_WIDE_INT_M1U << 31);
  
        return 1;
*************** riscv_build_integer_1 (struct riscv_inte
*** 439,445 ****
        && (mode != HImode
  	  || value - low_part <= ((1 << (GET_MODE_BITSIZE (HImode) - 1)) - 1)))
      {
!       alt_cost = 1 + riscv_build_integer_1 (alt_codes, value - low_part, mode);
        if (alt_cost < cost)
  	{
  	  alt_codes[alt_cost-1].code = PLUS;
--- 493,503 ----
        && (mode != HImode
  	  || value - low_part <= ((1 << (GET_MODE_BITSIZE (HImode) - 1)) - 1)))
      {
!       HOST_WIDE_INT upper_part = value - low_part;
!       if (mode != VOIDmode)
! 	upper_part = trunc_int_for_mode (value - low_part, mode);
! 
!       alt_cost = 1 + riscv_build_integer_1 (alt_codes, upper_part, mode);
        if (alt_cost < cost)
  	{
  	  alt_codes[alt_cost-1].code = PLUS;
*************** riscv_build_integer (struct riscv_intege
*** 567,572 ****
--- 625,654 ----
  	}
      }
  
+   if (!TARGET_64BIT
+       && (value > INT32_MAX || value < INT32_MIN))
+     {
+       unsigned HOST_WIDE_INT loval = sext_hwi (value, 32);
+       unsigned HOST_WIDE_INT hival = sext_hwi ((value - loval) >> 32, 32);
+       struct riscv_integer_op alt_codes[RISCV_MAX_INTEGER_OPS];
+       struct riscv_integer_op hicode[RISCV_MAX_INTEGER_OPS];
+       int hi_cost, lo_cost;
+ 
+       hi_cost = riscv_build_integer_1 (hicode, hival, mode);
+       if (hi_cost < cost)
+ 	{
+ 	  lo_cost = riscv_build_integer_1 (alt_codes, loval, mode);
+ 	  if (lo_cost + hi_cost < cost)
+ 	    {
+ 	      memcpy (codes, alt_codes,
+ 		      lo_cost * sizeof (struct riscv_integer_op));
+ 	      memcpy (codes + lo_cost, hicode,
+ 		      hi_cost * sizeof (struct riscv_integer_op));
+ 	      cost = lo_cost + hi_cost;
+ 	    }
+ 	}
+     }
+ 
    return cost;
  }
  
*************** riscv_cannot_force_const_mem (machine_mo
*** 733,738 ****
--- 815,826 ----
    enum riscv_symbol_type type;
    rtx base, offset;
  
+   /* There's no way to calculate VL-based values using relocations.  */
+   subrtx_iterator::array_type array;
+   FOR_EACH_SUBRTX (iter, array, x, ALL)
+     if (GET_CODE (*iter) == CONST_POLY_INT)
+       return true;
+ 
    /* There is no assembler syntax for expressing an address-sized
       high part.  */
    if (GET_CODE (x) == HIGH)
*************** riscv_valid_offset_p (rtx x, machine_mod
*** 807,814 ****
  
    /* We may need to split multiword moves, so make sure that every word
       is accessible.  */
!   if (GET_MODE_SIZE (mode) > UNITS_PER_WORD
!       && !SMALL_OPERAND (INTVAL (x) + GET_MODE_SIZE (mode) - UNITS_PER_WORD))
      return false;
  
    return true;
--- 895,902 ----
  
    /* We may need to split multiword moves, so make sure that every word
       is accessible.  */
!   if (GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD
!       && !SMALL_OPERAND (INTVAL (x) + GET_MODE_SIZE (mode).to_constant () - UNITS_PER_WORD))
      return false;
  
    return true;
*************** riscv_valid_lo_sum_p (enum riscv_symbol_
*** 872,878 ****
    else
      {
        align = GET_MODE_ALIGNMENT (mode);
!       size = GET_MODE_BITSIZE (mode);
      }
  
    /* We may need to split multiword moves, so make sure that each word
--- 960,966 ----
    else
      {
        align = GET_MODE_ALIGNMENT (mode);
!       size = GET_MODE_BITSIZE (mode).to_constant ();
      }
  
    /* We may need to split multiword moves, so make sure that each word
*************** riscv_valid_lo_sum_p (enum riscv_symbol_
*** 884,889 ****
--- 972,1042 ----
    return true;
  }
  
+ /* Return true if mode is the RVV enabled mode.
+    For example: 'VNx1DI' mode is disabled if MIN_VLEN == 32.
+    'VNx1SI' mode is enabled if MIN_VLEN == 32.  */
+ 
+ bool
+ riscv_v_ext_vector_mode_p (machine_mode mode)
+ {
+ #define ENTRY(MODE, REQUIREMENT, ...)                                          \
+   case MODE##mode:                                                             \
+     return REQUIREMENT;
+   switch (mode)
+     {
+ #include "riscv-vector-switch.def"
+     default:
+       return false;
+     }
+ 
+   return false;
+ }
+ 
+ /* Call from ADJUST_NUNITS in riscv-modes.def. Return the correct
+    NUNITS size for corresponding machine_mode.  */
+ 
+ poly_int64
+ riscv_v_adjust_nunits (machine_mode mode, int scale)
+ {
+   if (riscv_v_ext_vector_mode_p (mode))
+     return riscv_vector_chunks * scale;
+   return scale;
+ }
+ 
+ /* Call from ADJUST_BYTESIZE in riscv-modes.def.  Return the correct
+    BYTE size for corresponding machine_mode.  */
+ 
+ poly_int64
+ riscv_v_adjust_bytesize (machine_mode mode, int scale)
+ {
+   if (riscv_v_ext_vector_mode_p (mode))
+   {
+     poly_uint16 mode_size = GET_MODE_SIZE (mode);
+ 
+     if (maybe_eq (mode_size, (uint16_t)-1))
+       mode_size = riscv_vector_chunks * scale;
+ 
+     if (known_gt (mode_size, BYTES_PER_RISCV_VECTOR))
+       mode_size = BYTES_PER_RISCV_VECTOR;
+ 
+     return mode_size;
+   }
+ 
+   return scale;
+ }
+ 
+ /* Call from ADJUST_PRECISION in riscv-modes.def.  Return the correct
+    PRECISION size for corresponding machine_mode.  */
+ 
+ poly_int64
+ riscv_v_adjust_precision (machine_mode mode, int scale)
+ {
+   if (riscv_v_ext_vector_mode_p (mode))
+     return riscv_vector_chunks * scale;
+ 
+   return scale;
+ }
+ 
  /* Return true if X is a valid address for machine mode MODE.  If it is,
     fill in INFO appropriately.  STRICT_P is true if REG_OK_STRICT is in
     effect.  */
*************** riscv_classify_address (struct riscv_add
*** 902,907 ****
--- 1055,1064 ----
        return riscv_valid_base_register_p (info->reg, mode, strict_p);
  
      case PLUS:
+       /* RVV load/store disallow any offset.  */
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	return false;
+ 
        info->type = ADDRESS_REG;
        info->reg = XEXP (x, 0);
        info->offset = XEXP (x, 1);
*************** riscv_classify_address (struct riscv_add
*** 909,914 ****
--- 1066,1075 ----
  	      && riscv_valid_offset_p (info->offset, mode));
  
      case LO_SUM:
+       /* RVV load/store disallow LO_SUM.  */
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	return false;
+ 
        info->type = ADDRESS_LO_SUM;
        info->reg = XEXP (x, 0);
        info->offset = XEXP (x, 1);
*************** riscv_classify_address (struct riscv_add
*** 927,932 ****
--- 1088,1097 ----
  	      && riscv_valid_lo_sum_p (info->symbol_type, mode, info->offset));
  
      case CONST_INT:
+       /* RVV load/store disallow CONST_INT.  */
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	return false;
+ 
        /* Small-integer addresses don't occur very often, but they
  	 are legitimate if x0 is a valid base register.  */
        info->type = ADDRESS_CONST_INT;
*************** riscv_address_insns (rtx x, machine_mode
*** 1012,1019 ****
  
    /* BLKmode is used for single unaligned loads and stores and should
       not count as a multiword mode. */
!   if (mode != BLKmode && might_split_p)
!     n += (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  
    if (addr.type == ADDRESS_LO_SUM)
      n += riscv_symbol_insns (addr.symbol_type) - 1;
--- 1177,1184 ----
  
    /* BLKmode is used for single unaligned loads and stores and should
       not count as a multiword mode. */
!   if (!riscv_v_ext_vector_mode_p (mode) && mode != BLKmode && might_split_p)
!     n += (GET_MODE_SIZE (mode).to_constant () + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  
    if (addr.type == ADDRESS_LO_SUM)
      n += riscv_symbol_insns (addr.symbol_type) - 1;
*************** riscv_const_insns (rtx x)
*** 1071,1076 ****
--- 1236,1247 ----
      case LABEL_REF:
        return riscv_symbol_insns (riscv_classify_symbol (x));
  
+     /* TODO: In RVV, we get CONST_POLY_INT by using csrr VLENB
+        instruction and several scalar shift or mult instructions,
+        it is so far unknown. We set it to 4 temporarily.  */
+     case CONST_POLY_INT:
+       return 4;
+ 
      default:
        return 0;
      }
*************** riscv_load_store_insns (rtx mem, rtx_ins
*** 1106,1114 ****
  
    /* Try to prove that INSN does not need to be split.  */
    might_split_p = true;
!   if (GET_MODE_BITSIZE (mode) <= 32)
      might_split_p = false;
!   else if (GET_MODE_BITSIZE (mode) == 64)
      {
        set = single_set (insn);
        if (set && !riscv_split_64bit_move_p (SET_DEST (set), SET_SRC (set)))
--- 1277,1285 ----
  
    /* Try to prove that INSN does not need to be split.  */
    might_split_p = true;
!   if (GET_MODE_BITSIZE (mode).to_constant () <= 32)
      might_split_p = false;
!   else if (GET_MODE_BITSIZE (mode).to_constant () == 64)
      {
        set = single_set (insn);
        if (set && !riscv_split_64bit_move_p (SET_DEST (set), SET_SRC (set)))
*************** riscv_move_integer (rtx temp, rtx dest,
*** 1544,1549 ****
--- 1715,1721 ----
      x = riscv_split_integer (value, mode);
    else
      {
+       codes[0].value = trunc_int_for_mode (codes[0].value, mode);
        /* Apply each binary operation to X. */
        x = GEN_INT (codes[0].value);
  
*************** riscv_move_integer (rtx temp, rtx dest,
*** 1553,1559 ****
  	    x = riscv_emit_set (temp, x);
  	  else
  	    x = force_reg (mode, x);
! 
  	  x = gen_rtx_fmt_ee (codes[i].code, mode, x, GEN_INT (codes[i].value));
  	}
      }
--- 1725,1731 ----
  	    x = riscv_emit_set (temp, x);
  	  else
  	    x = force_reg (mode, x);
! 	  codes[i].value = trunc_int_for_mode (codes[i].value, mode);
  	  x = gen_rtx_fmt_ee (codes[i].code, mode, x, GEN_INT (codes[i].value));
  	}
      }
*************** riscv_legitimize_const_move (machine_mod
*** 1612,1623 ****
--- 1784,2094 ----
    riscv_emit_move (dest, src);
  }
  
+ /* Report when we try to do something that requires vector when vector is
+    disabled. This is an error of last resort and isn't very high-quality.  It
+    usually involves attempts to measure the vector length in some way.  */
+ 
+ static void
+ riscv_report_v_required (void)
+ {
+   static bool reported_p = false;
+ 
+   /* Avoid reporting a slew of messages for a single oversight.  */
+   if (reported_p)
+     return;
+ 
+   error ("this operation requires the RVV ISA extension");
+   inform (input_location, "you can enable RVV using the command-line"
+ 			  " option %<-march%>, or by using the %<target%>"
+ 			  " attribute or pragma");
+   reported_p = true;
+ }
+ 
+ /* Helper function to operation for rtx_code CODE.  */
+ static void
+ riscv_expand_op (enum rtx_code code, machine_mode mode, rtx op0, rtx op1,
+ 		 rtx op2)
+ {
+   if (can_create_pseudo_p ())
+     {
+       rtx result;
+       if (GET_RTX_CLASS (code) == RTX_UNARY)
+ 	result = expand_simple_unop (mode, code, op1, NULL_RTX, false);
+       else
+ 	result = expand_simple_binop (mode, code, op1, op2, NULL_RTX, false,
+ 				      OPTAB_DIRECT);
+       riscv_emit_move (op0, result);
+     }
+   else
+     {
+       rtx pat;
+       /* The following implementation is for prologue and epilogue.
+ 	 Because prologue and epilogue can not use pseudo register.
+ 	 We can't using expand_simple_binop or expand_simple_unop.  */
+       if (GET_RTX_CLASS (code) == RTX_UNARY)
+ 	pat = gen_rtx_fmt_e (code, mode, op1);
+       else
+ 	pat = gen_rtx_fmt_ee (code, mode, op1, op2);
+       emit_insn (gen_rtx_SET (op0, pat));
+     }
+ }
+ 
+ /* Expand mult operation with constant integer, multiplicand also used as a
+  * temporary register.  */
+ 
+ static void
+ riscv_expand_mult_with_const_int (machine_mode mode, rtx dest, rtx multiplicand,
+ 				  int multiplier)
+ {
+   if (multiplier == 0)
+     {
+       riscv_emit_move (dest, GEN_INT (0));
+       return;
+     }
+ 
+   bool neg_p = multiplier < 0;
+   int multiplier_abs = abs (multiplier);
+ 
+   if (multiplier_abs == 1)
+     {
+       if (neg_p)
+ 	riscv_expand_op (NEG, mode, dest, multiplicand, NULL_RTX);
+       else
+ 	riscv_emit_move (dest, multiplicand);
+     }
+   else
+     {
+       if (pow2p_hwi (multiplier_abs))
+ 	{
+ 	  /*
+ 	    multiplicand = [BYTES_PER_RISCV_VECTOR].
+ 	     1. const_poly_int:P [BYTES_PER_RISCV_VECTOR * 8].
+ 	    Sequence:
+ 		    csrr a5, vlenb
+ 		    slli a5, a5, 3
+ 	    2. const_poly_int:P [-BYTES_PER_RISCV_VECTOR * 8].
+ 	    Sequence:
+ 		    csrr a5, vlenb
+ 		    slli a5, a5, 3
+ 		    neg a5, a5
+ 	  */
+ 	  riscv_expand_op (ASHIFT, mode, dest, multiplicand,
+ 			   gen_int_mode (exact_log2 (multiplier_abs), QImode));
+ 	  if (neg_p)
+ 	    riscv_expand_op (NEG, mode, dest, dest, NULL_RTX);
+ 	}
+       else if (pow2p_hwi (multiplier_abs + 1))
+ 	{
+ 	  /*
+ 	    multiplicand = [BYTES_PER_RISCV_VECTOR].
+ 	     1. const_poly_int:P [BYTES_PER_RISCV_VECTOR * 7].
+ 	    Sequence:
+ 		    csrr a5, vlenb
+ 		    slli a4, a5, 3
+ 		    sub a5, a4, a5
+ 	     2. const_poly_int:P [-BYTES_PER_RISCV_VECTOR * 7].
+ 	    Sequence:
+ 		    csrr a5, vlenb
+ 		    slli a4, a5, 3
+ 		    sub a5, a4, a5 + neg a5, a5 => sub a5, a5, a4
+ 	  */
+ 	  riscv_expand_op (ASHIFT, mode, dest, multiplicand,
+ 			   gen_int_mode (exact_log2 (multiplier_abs + 1),
+ 					 QImode));
+ 	  if (neg_p)
+ 	    riscv_expand_op (MINUS, mode, dest, multiplicand, dest);
+ 	  else
+ 	    riscv_expand_op (MINUS, mode, dest, dest, multiplicand);
+ 	}
+       else if (pow2p_hwi (multiplier - 1))
+ 	{
+ 	  /*
+ 	    multiplicand = [BYTES_PER_RISCV_VECTOR].
+ 	     1. const_poly_int:P [BYTES_PER_RISCV_VECTOR * 9].
+ 	    Sequence:
+ 		    csrr a5, vlenb
+ 		    slli a4, a5, 3
+ 		    add a5, a4, a5
+ 	     2. const_poly_int:P [-BYTES_PER_RISCV_VECTOR * 9].
+ 	    Sequence:
+ 		    csrr a5, vlenb
+ 		    slli a4, a5, 3
+ 		    add a5, a4, a5
+ 		    neg a5, a5
+ 	  */
+ 	  riscv_expand_op (ASHIFT, mode, dest, multiplicand,
+ 			   gen_int_mode (exact_log2 (multiplier_abs - 1),
+ 					 QImode));
+ 	  riscv_expand_op (PLUS, mode, dest, dest, multiplicand);
+ 	  if (neg_p)
+ 	    riscv_expand_op (NEG, mode, dest, dest, NULL_RTX);
+ 	}
+       else
+ 	{
+ 	  /* We use multiplication for remaining cases.  */
+ 	  gcc_assert (
+ 	    TARGET_MUL
+ 	    && "M-extension must be enabled to calculate the poly_int "
+ 	       "size/offset.");
+ 	  riscv_emit_move (dest, gen_int_mode (multiplier, mode));
+ 	  riscv_expand_op (MULT, mode, dest, dest, multiplicand);
+ 	}
+     }
+ }
+ 
+ /* Analyze src and emit const_poly_int mov sequence.  */
+ 
+ static void
+ riscv_legitimize_poly_move (machine_mode mode, rtx dest, rtx tmp, rtx src)
+ {
+   poly_int64 value = rtx_to_poly_int64 (src);
+   int offset = value.coeffs[0];
+   int factor = value.coeffs[1];
+   int vlenb = BYTES_PER_RISCV_VECTOR.coeffs[1];
+   int div_factor = 0;
+   /* Calculate (const_poly_int:MODE [m, n]) using scalar instructions.
+      For any (const_poly_int:MODE [m, n]), the calculation formula is as
+      follows.
+      constant = m - n.
+      When minimum VLEN = 32, poly of VLENB = (4, 4).
+      base = vlenb(4, 4) or vlenb/2(2, 2) or vlenb/4(1, 1).
+      When minimum VLEN > 32, poly of VLENB = (8, 8).
+      base = vlenb(8, 8) or vlenb/2(4, 4) or vlenb/4(2, 2) or vlenb/8(1, 1).
+      magn = (n, n) / base.
+      (m, n) = base * magn + constant.
+      This calculation doesn't need div operation.  */
+ 
+   emit_move_insn (tmp, gen_int_mode (BYTES_PER_RISCV_VECTOR, mode));
+ 
+   if (BYTES_PER_RISCV_VECTOR.is_constant ())
+     {
+       gcc_assert (value.is_constant ());
+       riscv_emit_move (dest, GEN_INT (value.to_constant ()));
+       return;
+     }
+   else if ((factor % vlenb) == 0)
+     div_factor = 1;
+   else if ((factor % (vlenb / 2)) == 0)
+     div_factor = 2;
+   else if ((factor % (vlenb / 4)) == 0)
+     div_factor = 4;
+   else if ((factor % (vlenb / 8)) == 0)
+     div_factor = 8;
+   else
+     gcc_unreachable ();
+ 
+   if (div_factor != 1)
+     riscv_expand_op (LSHIFTRT, mode, tmp, tmp,
+ 		     gen_int_mode (exact_log2 (div_factor), QImode));
+ 
+   riscv_expand_mult_with_const_int (mode, dest, tmp,
+ 				    factor / (vlenb / div_factor));
+   HOST_WIDE_INT constant = offset - factor;
+ 
+   if (constant == 0)
+     return;
+   else if (SMALL_OPERAND (constant))
+     riscv_expand_op (PLUS, mode, dest, dest, gen_int_mode (constant, mode));
+   else
+     {
+       /* Handle the constant value is not a 12-bit value.  */
+       rtx high;
+ 
+       /* Leave OFFSET as a 16-bit offset and put the excess in HIGH.
+ 	 The addition inside the macro CONST_HIGH_PART may cause an
+ 	 overflow, so we need to force a sign-extension check.  */
+       high = gen_int_mode (CONST_HIGH_PART (constant), mode);
+       constant = CONST_LOW_PART (constant);
+       riscv_emit_move (tmp, high);
+       riscv_expand_op (PLUS, mode, dest, tmp, dest);
+       riscv_expand_op (PLUS, mode, dest, dest, gen_int_mode (constant, mode));
+     }
+ }
+ 
+ /* Adjust scalable frame of vector for prologue && epilogue. */
+ 
+ static void
+ riscv_v_adjust_scalable_frame (rtx target, poly_int64 offset, bool epilogue)
+ {
+   rtx tmp = RISCV_PROLOGUE_TEMP (Pmode);
+   rtx adjust_size = RISCV_PROLOGUE_TEMP2 (Pmode);
+   rtx insn, dwarf, adjust_frame_rtx;
+ 
+   riscv_legitimize_poly_move (Pmode, adjust_size, tmp,
+ 			      gen_int_mode (offset, Pmode));
+ 
+   if (epilogue)
+     insn = gen_add3_insn (target, target, adjust_size);
+   else
+     insn = gen_sub3_insn (target, target, adjust_size);
+ 
+   insn = emit_insn (insn);
+ 
+   RTX_FRAME_RELATED_P (insn) = 1;
+ 
+   adjust_frame_rtx
+     = gen_rtx_SET (target,
+ 		   plus_constant (Pmode, target, epilogue ? offset : -offset));
+ 
+   dwarf = alloc_reg_note (REG_FRAME_RELATED_EXPR, copy_rtx (adjust_frame_rtx),
+ 			  NULL_RTX);
+ 
+   REG_NOTES (insn) = dwarf;
+ }
+ 
  /* If (set DEST SRC) is not a valid move instruction, emit an equivalent
     sequence that is valid.  */
  
  bool
  riscv_legitimize_move (machine_mode mode, rtx dest, rtx src)
  {
+   if (CONST_POLY_INT_P (src))
+     {
+       /*
+ 	Handle:
+ 	  (insn 183 182 184 6 (set (mem:QI (plus:DI (reg/f:DI 156)
+ 		  (const_int 96 [0x60])) [0  S1 A8])
+ 	  (const_poly_int:QI [8, 8]))
+ 	"../../../../riscv-gcc/libgcc/unwind-dw2.c":1579:3 -1 (nil))
+       */
+       if (MEM_P (dest))
+ 	{
+ 	  emit_move_insn (dest, force_reg (mode, src));
+ 	  return true;
+ 	}
+       poly_int64 value = rtx_to_poly_int64 (src);
+       if (!value.is_constant () && !TARGET_VECTOR)
+ 	{
+ 	  riscv_report_v_required ();
+ 	  return false;
+ 	}
+ 
+       if (satisfies_constraint_vp (src))
+ 	return false;
+ 
+       if (GET_MODE_SIZE (mode).to_constant () < GET_MODE_SIZE (Pmode))
+ 	{
+ 	  /* In RV32 system, handle (const_poly_int:QI [m, n])
+ 				    (const_poly_int:HI [m, n]).
+ 	     In RV64 system, handle (const_poly_int:QI [m, n])
+ 				    (const_poly_int:HI [m, n])
+ 				    (const_poly_int:SI [m, n]).  */
+ 	  rtx tmp = gen_reg_rtx (Pmode);
+ 	  riscv_legitimize_poly_move (Pmode, gen_lowpart (Pmode, dest), tmp,
+ 				      src);
+ 	}
+       else
+ 	{
+ 	  /* In RV32 system, handle (const_poly_int:SI [m, n])
+ 				    (const_poly_int:DI [m, n]).
+ 	     In RV64 system, handle (const_poly_int:DI [m, n]).
+        FIXME: Maybe we could gen SImode in RV32 and then sign-extend to DImode,
+        the offset should not exceed 4GiB in general.  */
+ 	  rtx tmp = gen_reg_rtx (mode);
+ 	  riscv_legitimize_poly_move (mode, dest, tmp, src);
+ 	}
+       return true;
+     }
    /* Expand 
         (set (reg:QI target) (mem:QI (address))) 
       to
*************** riscv_legitimize_move (machine_mode mode
*** 1625,1631 ****
         (set (reg:QI target) (subreg:QI (reg:DI temp) 0))
       with auto-sign/zero extend.  */
    if (GET_MODE_CLASS (mode) == MODE_INT
!       && GET_MODE_SIZE (mode) < UNITS_PER_WORD
        && can_create_pseudo_p ()
        && MEM_P (src))
      {
--- 2096,2102 ----
         (set (reg:QI target) (subreg:QI (reg:DI temp) 0))
       with auto-sign/zero extend.  */
    if (GET_MODE_CLASS (mode) == MODE_INT
!       && GET_MODE_SIZE (mode).to_constant () < UNITS_PER_WORD
        && can_create_pseudo_p ()
        && MEM_P (src))
      {
*************** riscv_legitimize_move (machine_mode mode
*** 1650,1656 ****
  	     improve cse.  */
  	  machine_mode promoted_mode = mode;
  	  if (GET_MODE_CLASS (mode) == MODE_INT
! 	      && GET_MODE_SIZE (mode) < UNITS_PER_WORD)
  	    promoted_mode = word_mode;
  
  	  if (splittable_const_int_operand (src, mode))
--- 2121,2127 ----
  	     improve cse.  */
  	  machine_mode promoted_mode = mode;
  	  if (GET_MODE_CLASS (mode) == MODE_INT
! 	      && GET_MODE_SIZE (mode).to_constant () < UNITS_PER_WORD)
  	    promoted_mode = word_mode;
  
  	  if (splittable_const_int_operand (src, mode))
*************** riscv_immediate_operand_p (int code, HOS
*** 1748,1754 ****
  static int
  riscv_binary_cost (rtx x, int single_insns, int double_insns)
  {
!   if (GET_MODE_SIZE (GET_MODE (x)) == UNITS_PER_WORD * 2)
      return COSTS_N_INSNS (double_insns);
    return COSTS_N_INSNS (single_insns);
  }
--- 2219,2226 ----
  static int
  riscv_binary_cost (rtx x, int single_insns, int double_insns)
  {
!   if (!riscv_v_ext_vector_mode_p (GET_MODE (x))
!       && GET_MODE_SIZE (GET_MODE (x)).to_constant () == UNITS_PER_WORD * 2)
      return COSTS_N_INSNS (double_insns);
    return COSTS_N_INSNS (single_insns);
  }
*************** static bool
*** 1795,1800 ****
--- 2267,2280 ----
  riscv_rtx_costs (rtx x, machine_mode mode, int outer_code, int opno ATTRIBUTE_UNUSED,
  		 int *total, bool speed)
  {
+   /* TODO: We set RVV instruction cost as 1 by default.
+      Cost Model need to be well analyzed and supported in the future. */
+   if (riscv_v_ext_vector_mode_p (mode))
+     {
+       *total = COSTS_N_INSNS (1);
+       return true;
+     }
+ 
    bool float_mode_p = FLOAT_MODE_P (mode);
    int cost;
  
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 1811,1816 ****
--- 2291,2302 ----
      case SYMBOL_REF:
      case LABEL_REF:
      case CONST_DOUBLE:
+       /* With TARGET_SUPPORTS_WIDE_INT const int can't be in CONST_DOUBLE
+ 	 rtl object. Weird recheck due to switch-case fall through above.  */
+       if (GET_CODE (x) == CONST_DOUBLE)
+ 	gcc_assert (GET_MODE (x) != VOIDmode);
+       /* Fall through.  */
+ 
      case CONST:
        if ((cost = riscv_const_insns (x)) > 0)
  	{
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 1847,1854 ****
        /* Otherwise use the default handling.  */
        return false;
  
      case NOT:
!       *total = COSTS_N_INSNS (GET_MODE_SIZE (mode) > UNITS_PER_WORD ? 2 : 1);
        return false;
  
      case AND:
--- 2333,2367 ----
        /* Otherwise use the default handling.  */
        return false;
  
+     case IF_THEN_ELSE:
+       if ((TARGET_SFB_ALU || TARGET_XTHEADCONDMOV)
+ 	  && reg_or_0_operand (XEXP (x, 1), mode)
+ 	  && sfb_alu_operand (XEXP (x, 2), mode)
+ 	  && comparison_operator (XEXP (x, 0), VOIDmode))
+ 	{
+ 	  /* For predicated conditional-move operations we assume the cost
+ 	     of a single instruction even though there are actually two.  */
+ 	  *total = COSTS_N_INSNS (1);
+ 	  return true;
+ 	}
+       else if (LABEL_REF_P (XEXP (x, 1)) && XEXP (x, 2) == pc_rtx)
+ 	{
+ 	  if (equality_operator (XEXP (x, 0), mode)
+ 	      && GET_CODE (XEXP (XEXP (x, 0), 0)) == ZERO_EXTRACT)
+ 	    {
+ 	      *total = COSTS_N_INSNS (SINGLE_SHIFT_COST + 1);
+ 	      return true;
+ 	    }
+ 	  if (order_operator (XEXP (x, 0), mode))
+ 	    {
+ 	      *total = COSTS_N_INSNS (1);
+ 	      return true;
+ 	    }
+ 	}
+       return false;
+ 
      case NOT:
!       *total = COSTS_N_INSNS (GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD ? 2 : 1);
        return false;
  
      case AND:
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 1921,1934 ****
  	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
  	  return true;
  	}
!       /* bext pattern for zbs.  */
!       if (TARGET_ZBS && outer_code == SET
  	  && GET_CODE (XEXP (x, 1)) == CONST_INT
  	  && INTVAL (XEXP (x, 1)) == 1)
  	{
  	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
  	  return true;
  	}
        return false;
  
      case ASHIFT:
--- 2434,2456 ----
  	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
  	  return true;
  	}
!       /* bit extraction pattern (zbs:bext, xtheadbs:tst).  */
!       if ((TARGET_ZBS || TARGET_XTHEADBS) && outer_code == SET
  	  && GET_CODE (XEXP (x, 1)) == CONST_INT
  	  && INTVAL (XEXP (x, 1)) == 1)
  	{
  	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
  	  return true;
  	}
+       gcc_fallthrough ();
+     case SIGN_EXTRACT:
+       if (TARGET_XTHEADBB && outer_code == SET
+ 	  && CONST_INT_P (XEXP (x, 1))
+ 	  && CONST_INT_P (XEXP (x, 2)))
+ 	{
+ 	  *total = COSTS_N_INSNS (SINGLE_SHIFT_COST);
+ 	  return true;
+ 	}
        return false;
  
      case ASHIFT:
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 2011,2016 ****
--- 2533,2544 ----
        return false;
  
      case MINUS:
+       if (float_mode_p)
+ 	*total = tune_param->fp_add[mode == DFmode];
+       else
+ 	*total = riscv_binary_cost (x, 1, 4);
+       return false;
+ 
      case PLUS:
        /* add.uw pattern for zba.  */
        if (TARGET_ZBA
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 2034,2039 ****
--- 2562,2581 ----
  	  *total = COSTS_N_INSNS (1);
  	  return true;
  	}
+       /* Before strength-reduction, the shNadd can be expressed as the addition
+ 	 of a multiplication with a power-of-two.  If this case is not handled,
+ 	 the strength-reduction in expmed.c will calculate an inflated cost. */
+       if (TARGET_ZBA
+ 	  && mode == word_mode
+ 	  && GET_CODE (XEXP (x, 0)) == MULT
+ 	  && REG_P (XEXP (XEXP (x, 0), 0))
+ 	  && CONST_INT_P (XEXP (XEXP (x, 0), 1))
+ 	  && pow2p_hwi (INTVAL (XEXP (XEXP (x, 0), 1)))
+ 	  && IN_RANGE (exact_log2 (INTVAL (XEXP (XEXP (x, 0), 1))), 1, 3))
+ 	{
+ 	  *total = COSTS_N_INSNS (1);
+ 	  return true;
+ 	}
        /* shNadd.uw pattern for zba.
  	 [(set (match_operand:DI 0 "register_operand" "=r")
  	       (plus:DI
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 2095,2101 ****
        if (float_mode_p)
  	*total = tune_param->fp_add[mode == DFmode];
        else
! 	*total = COSTS_N_INSNS (GET_MODE_SIZE (mode) > UNITS_PER_WORD ? 4 : 1);
        return false;
  
      case MULT:
--- 2637,2643 ----
        if (float_mode_p)
  	*total = tune_param->fp_add[mode == DFmode];
        else
! 	*total = COSTS_N_INSNS (GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD ? 4 : 1);
        return false;
  
      case MULT:
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 2104,2110 ****
        else if (!TARGET_MUL)
  	/* Estimate the cost of a library call.  */
  	*total = COSTS_N_INSNS (speed ? 32 : 6);
!       else if (GET_MODE_SIZE (mode) > UNITS_PER_WORD)
  	*total = 3 * tune_param->int_mul[0] + COSTS_N_INSNS (2);
        else if (!speed)
  	*total = COSTS_N_INSNS (1);
--- 2646,2652 ----
        else if (!TARGET_MUL)
  	/* Estimate the cost of a library call.  */
  	*total = COSTS_N_INSNS (speed ? 32 : 6);
!       else if (GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD)
  	*total = 3 * tune_param->int_mul[0] + COSTS_N_INSNS (2);
        else if (!speed)
  	*total = COSTS_N_INSNS (1);
*************** riscv_rtx_costs (rtx x, machine_mode mod
*** 2145,2150 ****
--- 2687,2702 ----
        *total = riscv_extend_cost (XEXP (x, 0), GET_CODE (x) == ZERO_EXTEND);
        return false;
  
+     case BSWAP:
+       if (TARGET_ZBB)
+ 	{
+ 	  /* RISC-V only defines rev8 for XLEN, so we will need an extra
+ 	     shift-right instruction for smaller modes. */
+ 	  *total = COSTS_N_INSNS (mode == word_mode ? 1 : 2);
+ 	  return true;
+ 	}
+       return false;
+ 
      case FLOAT:
      case UNSIGNED_FLOAT:
      case FIX:
*************** riscv_split_64bit_move_p (rtx dest, rtx
*** 2237,2247 ****
  void
  riscv_split_doubleword_move (rtx dest, rtx src)
  {
!   rtx low_dest;
  
     /* The operation can be split into two normal moves.  Decide in
        which order to do them.  */
!    low_dest = riscv_subword (dest, false);
     if (REG_P (low_dest) && reg_overlap_mentioned_p (low_dest, src))
       {
         riscv_emit_move (riscv_subword (dest, true), riscv_subword (src, true));
--- 2789,2817 ----
  void
  riscv_split_doubleword_move (rtx dest, rtx src)
  {
!   /* XTheadFmv has instructions for accessing the upper bits of a double.  */
!   if (!TARGET_64BIT && TARGET_XTHEADFMV)
!     {
!       if (FP_REG_RTX_P (dest))
! 	{
! 	  rtx low_src = riscv_subword (src, false);
! 	  rtx high_src = riscv_subword (src, true);
! 	  emit_insn (gen_th_fmv_hw_w_x (dest, high_src, low_src));
! 	  return;
! 	}
!       if (FP_REG_RTX_P (src))
! 	{
! 	  rtx low_dest = riscv_subword (dest, false);
! 	  rtx high_dest = riscv_subword (dest, true);
! 	  emit_insn (gen_th_fmv_x_w (low_dest, src));
! 	  emit_insn (gen_th_fmv_x_hw (high_dest, src));
! 	  return;
! 	}
!     }
  
     /* The operation can be split into two normal moves.  Decide in
        which order to do them.  */
!    rtx low_dest = riscv_subword (dest, false);
     if (REG_P (low_dest) && reg_overlap_mentioned_p (low_dest, src))
       {
         riscv_emit_move (riscv_subword (dest, true), riscv_subword (src, true));
*************** riscv_output_move (rtx dest, rtx src)
*** 2263,2273 ****
    enum rtx_code dest_code, src_code;
    machine_mode mode;
    bool dbl_p;
  
    dest_code = GET_CODE (dest);
    src_code = GET_CODE (src);
    mode = GET_MODE (dest);
!   dbl_p = (GET_MODE_SIZE (mode) == 8);
  
    if (dbl_p && riscv_split_64bit_move_p (dest, src))
      return "#";
--- 2833,2845 ----
    enum rtx_code dest_code, src_code;
    machine_mode mode;
    bool dbl_p;
+   unsigned width;
  
    dest_code = GET_CODE (dest);
    src_code = GET_CODE (src);
    mode = GET_MODE (dest);
!   dbl_p = (GET_MODE_SIZE (mode).to_constant () == 8);
!   width = GET_MODE_SIZE (mode).to_constant ();
  
    if (dbl_p && riscv_split_64bit_move_p (dest, src))
      return "#";
*************** riscv_output_move (rtx dest, rtx src)
*** 2275,2284 ****
    if (dest_code == REG && GP_REG_P (REGNO (dest)))
      {
        if (src_code == REG && FP_REG_P (REGNO (src)))
! 	return dbl_p ? "fmv.x.d\t%0,%1" : "fmv.x.w\t%0,%1";
  
        if (src_code == MEM)
! 	switch (GET_MODE_SIZE (mode))
  	  {
  	  case 1: return "lbu\t%0,%1";
  	  case 2: return "lhu\t%0,%1";
--- 2847,2867 ----
    if (dest_code == REG && GP_REG_P (REGNO (dest)))
      {
        if (src_code == REG && FP_REG_P (REGNO (src)))
! 	switch (width)
! 	  {
! 	  case 2:
! 	    if (TARGET_ZFHMIN)
! 	      return "fmv.x.h\t%0,%1";
! 	    /* Using fmv.x.s + sign-extend to emulate fmv.x.h.  */
! 	    return "fmv.x.s\t%0,%1;slli\t%0,%0,16;srai\t%0,%0,16";
! 	  case 4:
! 	    return "fmv.x.s\t%0,%1";
! 	  case 8:
! 	    return "fmv.x.d\t%0,%1";
! 	  }
  
        if (src_code == MEM)
! 	switch (width)
  	  {
  	  case 1: return "lbu\t%0,%1";
  	  case 2: return "lhu\t%0,%1";
*************** riscv_output_move (rtx dest, rtx src)
*** 2320,2337 ****
  	    return "mv\t%0,%z1";
  
  	  if (FP_REG_P (REGNO (dest)))
! 	    {
! 	      if (!dbl_p)
! 		return "fmv.w.x\t%0,%z1";
! 	      if (TARGET_64BIT)
! 		return "fmv.d.x\t%0,%z1";
! 	      /* in RV32, we can emulate fmv.d.x %0, x0 using fcvt.d.w */
! 	      gcc_assert (src == CONST0_RTX (mode));
! 	      return "fcvt.d.w\t%0,x0";
! 	    }
  	}
        if (dest_code == MEM)
! 	switch (GET_MODE_SIZE (mode))
  	  {
  	  case 1: return "sb\t%z1,%0";
  	  case 2: return "sh\t%z1,%0";
--- 2903,2928 ----
  	    return "mv\t%0,%z1";
  
  	  if (FP_REG_P (REGNO (dest)))
! 	    switch (width)
! 	      {
! 	      case 2:
! 		if (TARGET_ZFHMIN)
! 		  return "fmv.h.x\t%0,%z1";
! 		/* High 16 bits should be all-1, otherwise HW will treated
! 		   as a n-bit canonical NaN, but isn't matter for softfloat.  */
! 		return "fmv.s.x\t%0,%1";
! 	      case 4:
! 		return "fmv.s.x\t%0,%z1";
! 	      case 8:
! 		if (TARGET_64BIT)
! 		  return "fmv.d.x\t%0,%z1";
! 		/* in RV32, we can emulate fmv.d.x %0, x0 using fcvt.d.w */
! 		gcc_assert (src == CONST0_RTX (mode));
! 		return "fcvt.d.w\t%0,x0";
! 	      }
  	}
        if (dest_code == MEM)
! 	switch (width)
  	  {
  	  case 1: return "sb\t%z1,%0";
  	  case 2: return "sh\t%z1,%0";
*************** riscv_output_move (rtx dest, rtx src)
*** 2342,2356 ****
    if (src_code == REG && FP_REG_P (REGNO (src)))
      {
        if (dest_code == REG && FP_REG_P (REGNO (dest)))
! 	return dbl_p ? "fmv.d\t%0,%1" : "fmv.s\t%0,%1";
  
        if (dest_code == MEM)
! 	return dbl_p ? "fsd\t%1,%0" : "fsw\t%1,%0";
      }
    if (dest_code == REG && FP_REG_P (REGNO (dest)))
      {
        if (src_code == MEM)
! 	return dbl_p ? "fld\t%0,%1" : "flw\t%0,%1";
      }
    gcc_unreachable ();
  }
--- 2933,2979 ----
    if (src_code == REG && FP_REG_P (REGNO (src)))
      {
        if (dest_code == REG && FP_REG_P (REGNO (dest)))
! 	switch (width)
! 	  {
! 	  case 2:
! 	    if (TARGET_ZFH)
! 	      return "fmv.h\t%0,%1";
! 	    return "fmv.s\t%0,%1";
! 	  case 4:
! 	    return "fmv.s\t%0,%1";
! 	  case 8:
! 	    return "fmv.d\t%0,%1";
! 	  }
  
        if (dest_code == MEM)
! 	switch (width)
! 	  {
! 	  case 2:
! 	    return "fsh\t%1,%0";
! 	  case 4:
! 	    return "fsw\t%1,%0";
! 	  case 8:
! 	    return "fsd\t%1,%0";
! 	  }
      }
    if (dest_code == REG && FP_REG_P (REGNO (dest)))
      {
        if (src_code == MEM)
! 	switch (width)
! 	  {
! 	  case 2:
! 	    return "flh\t%0,%1";
! 	  case 4:
! 	    return "flw\t%0,%1";
! 	  case 8:
! 	    return "fld\t%0,%1";
! 	  }
!     }
!   if (dest_code == REG && GP_REG_P (REGNO (dest)) && src_code == CONST_POLY_INT)
!     {
!       /* We only want a single full vector register VLEN read after reload. */
!       gcc_assert (known_eq (rtx_to_poly_int64 (src), BYTES_PER_RISCV_VECTOR));
!       return "csrr\t%0,vlenb";
      }
    gcc_unreachable ();
  }
*************** riscv_emit_int_order_test (enum rtx_code
*** 2467,2475 ****
  	}
        else if (invert_ptr == 0)
  	{
! 	  rtx inv_target = riscv_force_binary (GET_MODE (target),
  					       inv_code, cmp0, cmp1);
! 	  riscv_emit_binary (XOR, target, inv_target, const1_rtx);
  	}
        else
  	{
--- 3090,3098 ----
  	}
        else if (invert_ptr == 0)
  	{
! 	  rtx inv_target = riscv_force_binary (word_mode,
  					       inv_code, cmp0, cmp1);
! 	  riscv_emit_binary (EQ, target, inv_target, const0_rtx);
  	}
        else
  	{
*************** static void
*** 2498,2504 ****
  riscv_extend_comparands (rtx_code code, rtx *op0, rtx *op1)
  {
    /* Comparisons consider all XLEN bits, so extend sub-XLEN values.  */
!   if (GET_MODE_SIZE (word_mode) > GET_MODE_SIZE (GET_MODE (*op0)))
      {
        /* It is more profitable to zero-extend QImode values.  But not if the
  	 first operand has already been sign-extended, and the second one is
--- 3121,3127 ----
  riscv_extend_comparands (rtx_code code, rtx *op0, rtx *op1)
  {
    /* Comparisons consider all XLEN bits, so extend sub-XLEN values.  */
!   if (GET_MODE_SIZE (word_mode) > GET_MODE_SIZE (GET_MODE (*op0)).to_constant ())
      {
        /* It is more profitable to zero-extend QImode values.  But not if the
  	 first operand has already been sign-extended, and the second one is
*************** riscv_extend_comparands (rtx_code code,
*** 2528,2540 ****
      }
  }
  
! /* Convert a comparison into something that can be used in a branch.  On
!    entry, *OP0 and *OP1 are the values being compared and *CODE is the code
!    used to compare them.  Update them to describe the final comparison.  */
  
  static void
! riscv_emit_int_compare (enum rtx_code *code, rtx *op0, rtx *op1)
  {
    if (splittable_const_int_operand (*op1, VOIDmode))
      {
        HOST_WIDE_INT rhs = INTVAL (*op1);
--- 3151,3180 ----
      }
  }
  
! /* Convert a comparison into something that can be used in a branch or
!    conditional move.  On entry, *OP0 and *OP1 are the values being
!    compared and *CODE is the code used to compare them.
! 
!    Update *CODE, *OP0 and *OP1 so that they describe the final comparison.
!    If NEED_EQ_NE_P, then only EQ or NE comparisons against zero are
!    emitted.  */
  
  static void
! riscv_emit_int_compare (enum rtx_code *code, rtx *op0, rtx *op1,
! 			bool need_eq_ne_p = false)
  {
+   if (need_eq_ne_p)
+     {
+       rtx cmp_op0 = *op0;
+       rtx cmp_op1 = *op1;
+       if (*code == EQ || *code == NE)
+ 	{
+ 	  *op0 = riscv_zero_if_equal (cmp_op0, cmp_op1);
+ 	  *op1 = const0_rtx;
+ 	  return;
+ 	}
+     }
+ 
    if (splittable_const_int_operand (*op1, VOIDmode))
      {
        HOST_WIDE_INT rhs = INTVAL (*op1);
*************** riscv_emit_int_compare (enum rtx_code *c
*** 2565,2570 ****
--- 3205,3211 ----
  		continue;
  
  	      new_rhs = rhs + (increment ? 1 : -1);
+ 	      new_rhs = trunc_int_for_mode (new_rhs, GET_MODE (*op0));
  	      if (riscv_integer_cost (new_rhs) < riscv_integer_cost (rhs)
  		  && (rhs < 0) == (new_rhs < 0))
  		{
*************** riscv_emit_float_compare (enum rtx_code
*** 2627,2632 ****
--- 3268,3277 ----
  	emit_insn (gen_f##CMP##_quietdfdi4 (*op0, cmp_op0, cmp_op1));	\
        else if (GET_MODE (cmp_op0) == DFmode)				\
  	emit_insn (gen_f##CMP##_quietdfsi4 (*op0, cmp_op0, cmp_op1));	\
+       else if (GET_MODE (cmp_op0) == HFmode && TARGET_64BIT)		\
+ 	emit_insn (gen_f##CMP##_quiethfdi4 (*op0, cmp_op0, cmp_op1));	\
+       else if (GET_MODE (cmp_op0) == HFmode)				\
+ 	emit_insn (gen_f##CMP##_quiethfsi4 (*op0, cmp_op0, cmp_op1));	\
        else								\
  	gcc_unreachable ();						\
        *op1 = const0_rtx;						\
*************** riscv_expand_conditional_branch (rtx lab
*** 2715,2730 ****
    emit_jump_insn (gen_condjump (condition, label));
  }
  
! /* If (CODE OP0 OP1) holds, move CONS to DEST; else move ALT to DEST.  */
  
! void
! riscv_expand_conditional_move (rtx dest, rtx cons, rtx alt, rtx_code code,
! 			       rtx op0, rtx op1)
  {
!   riscv_emit_int_compare (&code, &op0, &op1);
!   rtx cond = gen_rtx_fmt_ee (code, GET_MODE (op0), op0, op1);
!   emit_insn (gen_rtx_SET (dest, gen_rtx_IF_THEN_ELSE (GET_MODE (dest), cond,
! 						      cons, alt)));
  }
  
  /* Implement TARGET_FUNCTION_ARG_BOUNDARY.  Every parameter gets at
--- 3360,3436 ----
    emit_jump_insn (gen_condjump (condition, label));
  }
  
! /* Helper to emit two one-sided conditional moves for the movecc.  */
  
! static void
! riscv_expand_conditional_move_onesided (rtx dest, rtx cons, rtx alt,
! 					rtx_code code, rtx op0, rtx op1)
  {
!   machine_mode mode = GET_MODE (dest);
! 
!   gcc_assert (GET_MODE_CLASS (mode) == MODE_INT);
!   gcc_assert (reg_or_0_operand (cons, mode));
!   gcc_assert (reg_or_0_operand (alt, mode));
! 
!   riscv_emit_int_compare (&code, &op0, &op1, true);
!   rtx cond = gen_rtx_fmt_ee (code, mode, op0, op1);
! 
!   rtx tmp1 = gen_reg_rtx (mode);
!   rtx tmp2 = gen_reg_rtx (mode);
! 
!   emit_insn (gen_rtx_SET (tmp1, gen_rtx_IF_THEN_ELSE (mode, cond,
! 						      cons, const0_rtx)));
! 
!   /* We need to expand a sequence for both blocks and we do that such,
!      that the second conditional move will use the inverted condition.
!      We use temporaries that are or'd to the dest register.  */
!   cond = gen_rtx_fmt_ee ((code == EQ) ? NE : EQ, mode, op0, op1);
!   emit_insn (gen_rtx_SET (tmp2, gen_rtx_IF_THEN_ELSE (mode, cond,
! 						      alt, const0_rtx)));
! 
!   emit_insn (gen_rtx_SET (dest, gen_rtx_IOR (mode, tmp1, tmp2)));
!  }
! 
! /* Emit a cond move: If OP holds, move CONS to DEST; else move ALT to DEST.
!    Return 0 if expansion failed.  */
! 
! bool
! riscv_expand_conditional_move (rtx dest, rtx op, rtx cons, rtx alt)
! {
!   machine_mode mode = GET_MODE (dest);
!   rtx_code code = GET_CODE (op);
!   rtx op0 = XEXP (op, 0);
!   rtx op1 = XEXP (op, 1);
! 
!   if (TARGET_XTHEADCONDMOV
!       && GET_MODE_CLASS (mode) == MODE_INT
!       && reg_or_0_operand (cons, mode)
!       && reg_or_0_operand (alt, mode)
!       && GET_MODE (op) == mode
!       && GET_MODE (op0) == mode
!       && GET_MODE (op1) == mode
!       && (code == EQ || code == NE))
!     {
!       riscv_expand_conditional_move_onesided (dest, cons, alt, code, op0, op1);
!       return true;
!     }
!   else if (TARGET_SFB_ALU
! 	   && mode == word_mode)
!     {
!       riscv_emit_int_compare (&code, &op0, &op1);
!       rtx cond = gen_rtx_fmt_ee (code, GET_MODE (op0), op0, op1);
! 
!       /* The expander allows (const_int 0) for CONS for the benefit of
! 	 TARGET_XTHEADCONDMOV, but that case isn't supported for
! 	 TARGET_SFB_ALU.  So force that operand into a register if
! 	 necessary.  */
!       cons = force_reg (GET_MODE (dest), cons);
!       emit_insn (gen_rtx_SET (dest, gen_rtx_IF_THEN_ELSE (GET_MODE (dest),
! 							  cond, cons, alt)));
!       return true;
!     }
! 
!   return false;
  }
  
  /* Implement TARGET_FUNCTION_ARG_BOUNDARY.  Every parameter gets at
*************** riscv_flatten_aggregate_field (const_tre
*** 2857,2863 ****
  	if (n != 0)
  	  return -1;
  
! 	HOST_WIDE_INT elt_size = GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (type)));
  
  	if (elt_size <= UNITS_PER_FP_ARG)
  	  {
--- 3563,3569 ----
  	if (n != 0)
  	  return -1;
  
! 	HOST_WIDE_INT elt_size = GET_MODE_SIZE (TYPE_MODE (TREE_TYPE (type))).to_constant ();
  
  	if (elt_size <= UNITS_PER_FP_ARG)
  	  {
*************** riscv_flatten_aggregate_field (const_tre
*** 2875,2883 ****
      default:
        if (n < 2
  	  && ((SCALAR_FLOAT_TYPE_P (type)
! 	       && GET_MODE_SIZE (TYPE_MODE (type)) <= UNITS_PER_FP_ARG)
  	      || (INTEGRAL_TYPE_P (type)
! 		  && GET_MODE_SIZE (TYPE_MODE (type)) <= UNITS_PER_WORD)))
  	{
  	  fields[n].type = type;
  	  fields[n].offset = offset;
--- 3581,3589 ----
      default:
        if (n < 2
  	  && ((SCALAR_FLOAT_TYPE_P (type)
! 	       && GET_MODE_SIZE (TYPE_MODE (type)).to_constant () <= UNITS_PER_FP_ARG)
  	      || (INTEGRAL_TYPE_P (type)
! 		  && GET_MODE_SIZE (TYPE_MODE (type)).to_constant () <= UNITS_PER_WORD)))
  	{
  	  fields[n].type = type;
  	  fields[n].offset = offset;
*************** riscv_get_arg_info (struct riscv_arg_inf
*** 3113,3119 ****
      }
  
    /* Work out the size of the argument.  */
!   num_bytes = type ? int_size_in_bytes (type) : GET_MODE_SIZE (mode);
    num_words = (num_bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  
    /* Doubleword-aligned varargs start on an even register boundary.  */
--- 3819,3825 ----
      }
  
    /* Work out the size of the argument.  */
!   num_bytes = type ? int_size_in_bytes (type) : GET_MODE_SIZE (mode).to_constant ();
    num_words = (num_bytes + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  
    /* Doubleword-aligned varargs start on an even register boundary.  */
*************** riscv_function_value (const_tree type, c
*** 3207,3213 ****
  static bool
  riscv_pass_by_reference (cumulative_args_t cum_v, const function_arg_info &arg)
  {
!   HOST_WIDE_INT size = arg.type_size_in_bytes ();
    struct riscv_arg_info info;
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
  
--- 3913,3919 ----
  static bool
  riscv_pass_by_reference (cumulative_args_t cum_v, const function_arg_info &arg)
  {
!   HOST_WIDE_INT size = arg.type_size_in_bytes ().to_constant ();;
    struct riscv_arg_info info;
    CUMULATIVE_ARGS *cum = get_cumulative_args (cum_v);
  
*************** riscv_setup_incoming_varargs (cumulative
*** 3255,3261 ****
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *get_cumulative_args (cum);
!   riscv_function_arg_advance (pack_cumulative_args (&local_cum), arg);
  
    /* Found out how many registers we need to save.  */
    gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
--- 3961,3968 ----
       argument.  Advance a local copy of CUM past the last "real" named
       argument, to find out how many registers are left over.  */
    local_cum = *get_cumulative_args (cum);
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     riscv_function_arg_advance (pack_cumulative_args (&local_cum), arg);
  
    /* Found out how many registers we need to save.  */
    gp_saved = MAX_ARGS_IN_REGISTERS - local_cum.num_gprs;
*************** riscv_memmodel_needs_release_fence (enum
*** 3640,3655 ****
     'z'	Print x0 if OP is zero, otherwise print OP normally.
     'i'	Print i if the operand is not a register.
     'S'	Print shift-index of single-bit mask OP.
!    'T'	Print shift-index of inverted single-bit mask OP.  */
  
  static void
  riscv_print_operand (FILE *file, rtx op, int letter)
  {
    machine_mode mode = GET_MODE (op);
    enum rtx_code code = GET_CODE (op);
  
    switch (letter)
      {
      case 'h':
        if (code == HIGH)
  	op = XEXP (op, 0);
--- 4347,4492 ----
     'z'	Print x0 if OP is zero, otherwise print OP normally.
     'i'	Print i if the operand is not a register.
     'S'	Print shift-index of single-bit mask OP.
!    'T'	Print shift-index of inverted single-bit mask OP.
!    '~'	Print w if TARGET_64BIT is true; otherwise not print anything.
! 
!    Note please keep this list and the list in riscv.md in sync.  */
  
  static void
  riscv_print_operand (FILE *file, rtx op, int letter)
  {
+   /* `~` does not take an operand so op will be null
+      Check for before accessing op.
+   */
+   if (letter == '~')
+     {
+       if (TARGET_64BIT)
+ 	fputc('w', file);
+       return;
+     }
    machine_mode mode = GET_MODE (op);
    enum rtx_code code = GET_CODE (op);
  
    switch (letter)
      {
+       case 'o': {
+ 	/* Print 'OP' variant for RVV instructions.
+ 	   1. If the operand is VECTOR REG, we print 'v'(vnsrl.wv).
+ 	   2. If the operand is CONST_INT/CONST_VECTOR, we print 'i'(vnsrl.wi).
+ 	   3. If the operand is SCALAR REG, we print 'x'(vnsrl.wx).  */
+ 	if (riscv_v_ext_vector_mode_p (mode))
+ 	  {
+ 	    if (REG_P (op))
+ 	      asm_fprintf (file, "v");
+ 	    else if (CONST_VECTOR_P (op))
+ 	      asm_fprintf (file, "i");
+ 	    else
+ 	      output_operand_lossage ("invalid vector operand");
+ 	  }
+ 	else
+ 	  {
+ 	    if (CONST_INT_P (op))
+ 	      asm_fprintf (file, "i");
+ 	    else
+ 	      asm_fprintf (file, "x");
+ 	  }
+ 	break;
+       }
+       case 'v': {
+ 	rtx elt;
+ 
+ 	if (REG_P (op))
+ 	  asm_fprintf (file, "%s", reg_names[REGNO (op)]);
+ 	else
+ 	  {
+ 	    if (!const_vec_duplicate_p (op, &elt))
+ 	      output_operand_lossage ("invalid vector constant");
+ 	    else if (satisfies_constraint_Wc0 (op))
+ 	      asm_fprintf (file, "0");
+ 	    else if (satisfies_constraint_vi (op)
+ 		     || satisfies_constraint_vj (op))
+ 	      asm_fprintf (file, "%wd", INTVAL (elt));
+ 	    else
+ 	      output_operand_lossage ("invalid vector constant");
+ 	  }
+ 	break;
+       }
+       case 'V': {
+ 	rtx elt;
+ 	if (!const_vec_duplicate_p (op, &elt))
+ 	  output_operand_lossage ("invalid vector constant");
+ 	else if (satisfies_constraint_vj (op))
+ 	  asm_fprintf (file, "%wd", -INTVAL (elt));
+ 	else
+ 	  output_operand_lossage ("invalid vector constant");
+ 	break;
+       }
+       case 'm': {
+ 	if (riscv_v_ext_vector_mode_p (mode))
+ 	  {
+ 	    /* Calculate lmul according to mode and print the value.  */
+ 	    poly_int64 size = GET_MODE_SIZE (mode);
+ 	    unsigned int lmul;
+ 	    if (known_lt (size, BYTES_PER_RISCV_VECTOR))
+ 	      lmul = 1;
+ 	    else
+ 	      lmul = exact_div (size, BYTES_PER_RISCV_VECTOR).to_constant ();
+ 	    asm_fprintf (file, "%d", lmul);
+ 	  }
+ 	else if (code == CONST_INT)
+ 	  {
+ 	    /* If it is a const_int value, it denotes the VLMUL field enum.  */
+ 	    unsigned int vlmul = UINTVAL (op);
+ 	    switch (vlmul)
+ 	      {
+ 	      case riscv_vector::LMUL_1:
+ 		asm_fprintf (file, "%s", "m1");
+ 		break;
+ 	      case riscv_vector::LMUL_2:
+ 		asm_fprintf (file, "%s", "m2");
+ 		break;
+ 	      case riscv_vector::LMUL_4:
+ 		asm_fprintf (file, "%s", "m4");
+ 		break;
+ 	      case riscv_vector::LMUL_8:
+ 		asm_fprintf (file, "%s", "m8");
+ 		break;
+ 	      case riscv_vector::LMUL_F8:
+ 		asm_fprintf (file, "%s", "mf8");
+ 		break;
+ 	      case riscv_vector::LMUL_F4:
+ 		asm_fprintf (file, "%s", "mf4");
+ 		break;
+ 	      case riscv_vector::LMUL_F2:
+ 		asm_fprintf (file, "%s", "mf2");
+ 		break;
+ 	      default:
+ 		gcc_unreachable ();
+ 	      }
+ 	  }
+ 	else
+ 	  output_operand_lossage ("invalid vector constant");
+ 	break;
+       }
+       case 'p': {
+ 	if (GET_MODE_CLASS (mode) == MODE_VECTOR_BOOL)
+ 	  {
+ 	    /* Print for RVV mask operand.
+ 	       If op is reg, print ",v0.t".
+ 	       Otherwise, don't print anything.  */
+ 	    if (code == REG)
+ 	      fprintf (file, ",%s.t", reg_names[REGNO (op)]);
+ 	  }
+ 	else if (code == CONST_INT)
+ 	  {
+ 	    /* Tail && Mask policy.  */
+ 	    bool agnostic_p = UINTVAL (op) & 0x1;
+ 	    asm_fprintf (file, "%s", agnostic_p ? "a" : "u");
+ 	  }
+ 	else
+ 	  output_operand_lossage ("invalid vector constant");
+ 	break;
+       }
      case 'h':
        if (code == HIGH)
  	op = XEXP (op, 0);
*************** riscv_print_operand (FILE *file, rtx op,
*** 3680,3685 ****
--- 4517,4526 ----
          fputs ("i", file);
        break;
  
+     case 'B':
+       fputs (GET_RTX_NAME (code), file);
+       break;
+ 
      case 'S':
        {
  	rtx newop = GEN_INT (ctz_hwi (INTVAL (op)));
*************** riscv_print_operand (FILE *file, rtx op,
*** 3720,3725 ****
--- 4561,4573 ----
      }
  }
  
+ /* Implement TARGET_PRINT_OPERAND_PUNCT_VALID_P */
+ static bool
+ riscv_print_operand_punct_valid_p (unsigned char code)
+ {
+   return (code == '~');
+ }
+ 
  /* Implement TARGET_PRINT_OPERAND_ADDRESS.  */
  
  static void
*************** riscv_elf_select_rtx_section (machine_mo
*** 3836,3842 ****
  {
    section *s = default_elf_select_rtx_section (mode, x, align);
  
!   if (riscv_size_ok_for_small_data_p (GET_MODE_SIZE (mode)))
      {
        if (startswith (s->named.name, ".rodata.cst"))
  	{
--- 4684,4690 ----
  {
    section *s = default_elf_select_rtx_section (mode, x, align);
  
!   if (riscv_size_ok_for_small_data_p (GET_MODE_SIZE (mode).to_constant ()))
      {
        if (startswith (s->named.name, ".rodata.cst"))
  	{
*************** riscv_save_libcall_count (unsigned mask)
*** 3988,3998 ****
  
  static HOST_WIDE_INT riscv_first_stack_step (struct riscv_frame_info *frame);
  
  static void
  riscv_compute_frame_info (void)
  {
    struct riscv_frame_info *frame;
!   HOST_WIDE_INT offset;
    bool interrupt_save_prologue_temp = false;
    unsigned int regno, i, num_x_saved = 0, num_f_saved = 0;
  
--- 4836,4859 ----
  
  static HOST_WIDE_INT riscv_first_stack_step (struct riscv_frame_info *frame);
  
+ /* Handle stack align for poly_int.  */
+ static poly_int64
+ riscv_stack_align (poly_int64 value)
+ {
+   return aligned_upper_bound (value, PREFERRED_STACK_BOUNDARY / 8);
+ }
+ 
+ static HOST_WIDE_INT
+ riscv_stack_align (HOST_WIDE_INT value)
+ {
+   return RISCV_STACK_ALIGN (value);
+ }
+ 
  static void
  riscv_compute_frame_info (void)
  {
    struct riscv_frame_info *frame;
!   poly_int64 offset;
    bool interrupt_save_prologue_temp = false;
    unsigned int regno, i, num_x_saved = 0, num_f_saved = 0;
  
*************** riscv_compute_frame_info (void)
*** 4003,4013 ****
    if (cfun->machine->interrupt_handler_p)
      {
        HOST_WIDE_INT step1 = riscv_first_stack_step (frame);
!       if (! SMALL_OPERAND (frame->total_size - step1))
  	interrupt_save_prologue_temp = true;
      }
  
!   memset (frame, 0, sizeof (*frame));
  
    if (!cfun->machine->naked_p)
      {
--- 4864,4874 ----
    if (cfun->machine->interrupt_handler_p)
      {
        HOST_WIDE_INT step1 = riscv_first_stack_step (frame);
!       if (! POLY_SMALL_OPERAND_P ((frame->total_size - step1)))
  	interrupt_save_prologue_temp = true;
      }
  
!   frame->reset();
  
    if (!cfun->machine->naked_p)
      {
*************** riscv_compute_frame_info (void)
*** 4033,4055 ****
      }
  
    /* At the bottom of the frame are any outgoing stack arguments. */
!   offset = RISCV_STACK_ALIGN (crtl->outgoing_args_size);
    /* Next are local stack variables. */
!   offset += RISCV_STACK_ALIGN (get_frame_size ());
    /* The virtual frame pointer points above the local variables. */
    frame->frame_pointer_offset = offset;
    /* Next are the callee-saved FPRs. */
    if (frame->fmask)
!     offset += RISCV_STACK_ALIGN (num_f_saved * UNITS_PER_FP_REG);
    frame->fp_sp_offset = offset - UNITS_PER_FP_REG;
    /* Next are the callee-saved GPRs. */
    if (frame->mask)
      {
!       unsigned x_save_size = RISCV_STACK_ALIGN (num_x_saved * UNITS_PER_WORD);
        unsigned num_save_restore = 1 + riscv_save_libcall_count (frame->mask);
  
        /* Only use save/restore routines if they don't alter the stack size.  */
!       if (RISCV_STACK_ALIGN (num_save_restore * UNITS_PER_WORD) == x_save_size)
  	{
  	  /* Libcall saves/restores 3 registers at once, so we need to
  	     allocate 12 bytes for callee-saved register.  */
--- 4894,4916 ----
      }
  
    /* At the bottom of the frame are any outgoing stack arguments. */
!   offset = riscv_stack_align (crtl->outgoing_args_size);
    /* Next are local stack variables. */
!   offset += riscv_stack_align (get_frame_size ());
    /* The virtual frame pointer points above the local variables. */
    frame->frame_pointer_offset = offset;
    /* Next are the callee-saved FPRs. */
    if (frame->fmask)
!     offset += riscv_stack_align (num_f_saved * UNITS_PER_FP_REG);
    frame->fp_sp_offset = offset - UNITS_PER_FP_REG;
    /* Next are the callee-saved GPRs. */
    if (frame->mask)
      {
!       unsigned x_save_size = riscv_stack_align (num_x_saved * UNITS_PER_WORD);
        unsigned num_save_restore = 1 + riscv_save_libcall_count (frame->mask);
  
        /* Only use save/restore routines if they don't alter the stack size.  */
!       if (riscv_stack_align (num_save_restore * UNITS_PER_WORD) == x_save_size)
  	{
  	  /* Libcall saves/restores 3 registers at once, so we need to
  	     allocate 12 bytes for callee-saved register.  */
*************** riscv_compute_frame_info (void)
*** 4065,4073 ****
    /* The hard frame pointer points above the callee-saved GPRs. */
    frame->hard_frame_pointer_offset = offset;
    /* Above the hard frame pointer is the callee-allocated varags save area. */
!   offset += RISCV_STACK_ALIGN (cfun->machine->varargs_size);
    /* Next is the callee-allocated area for pretend stack arguments.  */
!   offset += RISCV_STACK_ALIGN (crtl->args.pretend_args_size);
    /* Arg pointer must be below pretend args, but must be above alignment
       padding.  */
    frame->arg_pointer_offset = offset - crtl->args.pretend_args_size;
--- 4926,4934 ----
    /* The hard frame pointer points above the callee-saved GPRs. */
    frame->hard_frame_pointer_offset = offset;
    /* Above the hard frame pointer is the callee-allocated varags save area. */
!   offset += riscv_stack_align (cfun->machine->varargs_size);
    /* Next is the callee-allocated area for pretend stack arguments.  */
!   offset += riscv_stack_align (crtl->args.pretend_args_size);
    /* Arg pointer must be below pretend args, but must be above alignment
       padding.  */
    frame->arg_pointer_offset = offset - crtl->args.pretend_args_size;
*************** riscv_compute_frame_info (void)
*** 4075,4081 ****
    /* Next points the incoming stack pointer and any incoming arguments. */
  
    /* Only use save/restore routines when the GPRs are atop the frame.  */
!   if (frame->hard_frame_pointer_offset != frame->total_size)
      frame->save_libcall_adjustment = 0;
  }
  
--- 4936,4942 ----
    /* Next points the incoming stack pointer and any incoming arguments. */
  
    /* Only use save/restore routines when the GPRs are atop the frame.  */
!   if (known_ne (frame->hard_frame_pointer_offset, frame->total_size))
      frame->save_libcall_adjustment = 0;
  }
  
*************** riscv_can_eliminate (const int from ATTR
*** 4092,4101 ****
     or argument pointer.  TO is either the stack pointer or hard frame
     pointer.  */
  
! HOST_WIDE_INT
  riscv_initial_elimination_offset (int from, int to)
  {
!   HOST_WIDE_INT src, dest;
  
    riscv_compute_frame_info ();
  
--- 4953,4962 ----
     or argument pointer.  TO is either the stack pointer or hard frame
     pointer.  */
  
! poly_int64
  riscv_initial_elimination_offset (int from, int to)
  {
!   poly_int64 src, dest;
  
    riscv_compute_frame_info ();
  
*************** riscv_set_return_address (rtx address, r
*** 4139,4148 ****
  
    gcc_assert (BITSET_P (cfun->machine->frame.mask, RETURN_ADDR_REGNUM));
    slot_address = riscv_add_offset (scratch, stack_pointer_rtx,
! 				  cfun->machine->frame.gp_sp_offset);
    riscv_emit_move (gen_frame_mem (GET_MODE (address), slot_address), address);
  }
  
  /* A function to save or store a register.  The first argument is the
     register and the second is the stack slot.  */
  typedef void (*riscv_save_restore_fn) (rtx, rtx);
--- 5000,5038 ----
  
    gcc_assert (BITSET_P (cfun->machine->frame.mask, RETURN_ADDR_REGNUM));
    slot_address = riscv_add_offset (scratch, stack_pointer_rtx,
! 				  cfun->machine->frame.gp_sp_offset.to_constant());
    riscv_emit_move (gen_frame_mem (GET_MODE (address), slot_address), address);
  }
  
+ /* Save register REG to MEM.  Make the instruction frame-related.  */
+ 
+ static void
+ riscv_save_reg (rtx reg, rtx mem)
+ {
+   riscv_emit_move (mem, reg);
+   riscv_set_frame_expr (riscv_frame_set (mem, reg));
+ }
+ 
+ /* Restore register REG from MEM.  */
+ 
+ static void
+ riscv_restore_reg (rtx reg, rtx mem)
+ {
+   rtx insn = riscv_emit_move (reg, mem);
+   rtx dwarf = NULL_RTX;
+   dwarf = alloc_reg_note (REG_CFA_RESTORE, reg, dwarf);
+ 
+   if (epilogue_cfa_sp_offset && REGNO (reg) == HARD_FRAME_POINTER_REGNUM)
+     {
+       rtx cfa_adjust_rtx = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
+ 					 GEN_INT (epilogue_cfa_sp_offset));
+       dwarf = alloc_reg_note (REG_CFA_DEF_CFA, cfa_adjust_rtx, dwarf);
+     }
+ 
+   REG_NOTES (insn) = dwarf;
+   RTX_FRAME_RELATED_P (insn) = 1;
+ }
+ 
  /* A function to save or store a register.  The first argument is the
     register and the second is the stack slot.  */
  typedef void (*riscv_save_restore_fn) (rtx, rtx);
*************** riscv_save_restore_reg (machine_mode mod
*** 4161,4248 ****
    fn (gen_rtx_REG (mode, regno), mem);
  }
  
  /* Call FN for each register that is saved by the current function.
     SP_OFFSET is the offset of the current stack pointer from the start
     of the frame.  */
  
  static void
! riscv_for_each_saved_reg (HOST_WIDE_INT sp_offset, riscv_save_restore_fn fn,
  			  bool epilogue, bool maybe_eh_return)
  {
    HOST_WIDE_INT offset;
  
    /* Save the link register and s-registers. */
!   offset = cfun->machine->frame.gp_sp_offset - sp_offset;
!   for (unsigned int regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++)
!     if (BITSET_P (cfun->machine->frame.mask, regno - GP_REG_FIRST))
!       {
! 	bool handle_reg = TRUE;
  
! 	/* If this is a normal return in a function that calls the eh_return
! 	   builtin, then do not restore the eh return data registers as that
! 	   would clobber the return value.  But we do still need to save them
! 	   in the prologue, and restore them for an exception return, so we
! 	   need special handling here.  */
! 	if (epilogue && !maybe_eh_return && crtl->calls_eh_return)
! 	  {
! 	    unsigned int i, regnum;
  
! 	    for (i = 0; (regnum = EH_RETURN_DATA_REGNO (i)) != INVALID_REGNUM;
! 		 i++)
! 	      if (regno == regnum)
  		{
! 		  handle_reg = FALSE;
! 		  break;
  		}
! 	  }
  
! 	if (handle_reg)
! 	  riscv_save_restore_reg (word_mode, regno, offset, fn);
! 	offset -= UNITS_PER_WORD;
!       }
  
    /* This loop must iterate over the same space as its companion in
       riscv_compute_frame_info.  */
!   offset = cfun->machine->frame.fp_sp_offset - sp_offset;
    for (unsigned int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
      if (BITSET_P (cfun->machine->frame.fmask, regno - FP_REG_FIRST))
        {
  	machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode;
  
! 	riscv_save_restore_reg (mode, regno, offset, fn);
! 	offset -= GET_MODE_SIZE (mode);
        }
  }
  
- /* Save register REG to MEM.  Make the instruction frame-related.  */
- 
- static void
- riscv_save_reg (rtx reg, rtx mem)
- {
-   riscv_emit_move (mem, reg);
-   riscv_set_frame_expr (riscv_frame_set (mem, reg));
- }
- 
- /* Restore register REG from MEM.  */
- 
- static void
- riscv_restore_reg (rtx reg, rtx mem)
- {
-   rtx insn = riscv_emit_move (reg, mem);
-   rtx dwarf = NULL_RTX;
-   dwarf = alloc_reg_note (REG_CFA_RESTORE, reg, dwarf);
- 
-   if (epilogue_cfa_sp_offset && REGNO (reg) == HARD_FRAME_POINTER_REGNUM)
-     {
-       rtx cfa_adjust_rtx = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
- 					 GEN_INT (epilogue_cfa_sp_offset));
-       dwarf = alloc_reg_note (REG_CFA_DEF_CFA, cfa_adjust_rtx, dwarf);
-     }
- 
-   REG_NOTES (insn) = dwarf;
-   RTX_FRAME_RELATED_P (insn) = 1;
- }
- 
  /* For stack frames that can't be allocated with a single ADDI instruction,
     compute the best value to initially allocate.  It must at a minimum
     allocate enough space to spill the callee-saved registers.  If TARGET_RVC,
--- 5051,5180 ----
    fn (gen_rtx_REG (mode, regno), mem);
  }
  
+ /* Return the next register up from REGNO up to LIMIT for the callee
+    to save or restore.  OFFSET will be adjusted accordingly.
+    If INC is set, then REGNO will be incremented first.
+    Returns INVALID_REGNUM if there is no such next register.  */
+ 
+ static unsigned int
+ riscv_next_saved_reg (unsigned int regno, unsigned int limit,
+ 		      HOST_WIDE_INT *offset, bool inc = true)
+ {
+   if (inc)
+     regno++;
+ 
+   while (regno <= limit)
+     {
+       if (BITSET_P (cfun->machine->frame.mask, regno - GP_REG_FIRST))
+ 	{
+ 	  *offset = *offset - UNITS_PER_WORD;
+ 	  return regno;
+ 	}
+ 
+       regno++;
+     }
+   return INVALID_REGNUM;
+ }
+ 
+ /* Return TRUE if provided REGNO is eh return data register.  */
+ 
+ static bool
+ riscv_is_eh_return_data_register (unsigned int regno)
+ {
+   unsigned int i, regnum;
+ 
+   if (!crtl->calls_eh_return)
+     return false;
+ 
+   for (i = 0; (regnum = EH_RETURN_DATA_REGNO (i)) != INVALID_REGNUM; i++)
+     if (regno == regnum)
+       {
+ 	return true;
+       }
+ 
+   return false;
+ }
+ 
  /* Call FN for each register that is saved by the current function.
     SP_OFFSET is the offset of the current stack pointer from the start
     of the frame.  */
  
  static void
! riscv_for_each_saved_reg (poly_int64 sp_offset, riscv_save_restore_fn fn,
  			  bool epilogue, bool maybe_eh_return)
  {
    HOST_WIDE_INT offset;
+   unsigned int regno;
+   unsigned int start = GP_REG_FIRST;
+   unsigned int limit = GP_REG_LAST;
  
    /* Save the link register and s-registers. */
!   offset = (cfun->machine->frame.gp_sp_offset - sp_offset).to_constant ()
! 	   + UNITS_PER_WORD;
!   for (regno = riscv_next_saved_reg (start, limit, &offset, false);
!        regno != INVALID_REGNUM;
!        regno = riscv_next_saved_reg (regno, limit, &offset))
!     {
!       if (cfun->machine->reg_is_wrapped_separately[regno])
! 	continue;
  
!       /* If this is a normal return in a function that calls the eh_return
! 	 builtin, then do not restore the eh return data registers as that
! 	 would clobber the return value.  But we do still need to save them
! 	 in the prologue, and restore them for an exception return, so we
! 	 need special handling here.  */
!       if (epilogue && !maybe_eh_return
! 	  && riscv_is_eh_return_data_register (regno))
! 	continue;
  
!       if (TARGET_XTHEADMEMPAIR)
! 	{
! 	  /* Get the next reg/offset pair.  */
! 	  HOST_WIDE_INT offset2 = offset;
! 	  unsigned int regno2 = riscv_next_saved_reg (regno, limit, &offset2);
! 
! 	  /* Validate everything before emitting a mempair instruction.  */
! 	  if (regno2 != INVALID_REGNUM
! 	      && !cfun->machine->reg_is_wrapped_separately[regno2]
! 	      && !(epilogue && !maybe_eh_return
! 		   && riscv_is_eh_return_data_register (regno2)))
! 	    {
! 	      bool load_p = (fn == riscv_restore_reg);
! 	      rtx operands[4];
! 	      th_mempair_prepare_save_restore_operands (operands,
! 							load_p, word_mode,
! 							regno, offset,
! 							regno2, offset2);
! 
! 	      /* If the operands fit into a mempair insn, then emit one.  */
! 	      if (th_mempair_operands_p (operands, load_p, word_mode))
  		{
! 		  th_mempair_save_restore_regs (operands, load_p, word_mode);
! 		  offset = offset2;
! 		  regno = regno2;
! 		  continue;
  		}
! 	    }
! 	}
  
!       riscv_save_restore_reg (word_mode, regno, offset, fn);
!     }
  
    /* This loop must iterate over the same space as its companion in
       riscv_compute_frame_info.  */
!   offset = (cfun->machine->frame.fp_sp_offset - sp_offset).to_constant ();
    for (unsigned int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
      if (BITSET_P (cfun->machine->frame.fmask, regno - FP_REG_FIRST))
        {
+ 	bool handle_reg = !cfun->machine->reg_is_wrapped_separately[regno];
  	machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode;
  
! 	if (handle_reg)
! 	  riscv_save_restore_reg (mode, regno, offset, fn);
! 	offset -= GET_MODE_SIZE (mode).to_constant ();
        }
  }
  
  /* For stack frames that can't be allocated with a single ADDI instruction,
     compute the best value to initially allocate.  It must at a minimum
     allocate enough space to spill the callee-saved registers.  If TARGET_RVC,
*************** riscv_restore_reg (rtx reg, rtx mem)
*** 4252,4272 ****
  static HOST_WIDE_INT
  riscv_first_stack_step (struct riscv_frame_info *frame)
  {
!   if (SMALL_OPERAND (frame->total_size))
!     return frame->total_size;
  
    HOST_WIDE_INT min_first_step =
!     RISCV_STACK_ALIGN (frame->total_size - frame->fp_sp_offset);
    HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
!   HOST_WIDE_INT min_second_step = frame->total_size - max_first_step;
    gcc_assert (min_first_step <= max_first_step);
  
    /* As an optimization, use the least-significant bits of the total frame
       size, so that the second adjustment step is just LUI + ADD.  */
    if (!SMALL_OPERAND (min_second_step)
!       && frame->total_size % IMM_REACH < IMM_REACH / 2
!       && frame->total_size % IMM_REACH >= min_first_step)
!     return frame->total_size % IMM_REACH;
  
    if (TARGET_RVC)
      {
--- 5184,5212 ----
  static HOST_WIDE_INT
  riscv_first_stack_step (struct riscv_frame_info *frame)
  {
!   HOST_WIDE_INT frame_total_constant_size;
!   if (!frame->total_size.is_constant ())
!     frame_total_constant_size
!       = riscv_stack_align (frame->total_size.coeffs[0])
! 	- riscv_stack_align (frame->total_size.coeffs[1]);
!   else
!     frame_total_constant_size = frame->total_size.to_constant ();
! 
!   if (SMALL_OPERAND (frame_total_constant_size))
!     return frame_total_constant_size;
  
    HOST_WIDE_INT min_first_step =
!     RISCV_STACK_ALIGN ((frame->total_size - frame->frame_pointer_offset).to_constant());
    HOST_WIDE_INT max_first_step = IMM_REACH / 2 - PREFERRED_STACK_BOUNDARY / 8;
!   HOST_WIDE_INT min_second_step = frame_total_constant_size - max_first_step;
    gcc_assert (min_first_step <= max_first_step);
  
    /* As an optimization, use the least-significant bits of the total frame
       size, so that the second adjustment step is just LUI + ADD.  */
    if (!SMALL_OPERAND (min_second_step)
!       && frame_total_constant_size % IMM_REACH < IMM_REACH / 2
!       && frame_total_constant_size % IMM_REACH >= min_first_step)
!     return frame_total_constant_size % IMM_REACH;
  
    if (TARGET_RVC)
      {
*************** riscv_adjust_libcall_cfi_prologue ()
*** 4317,4324 ****
        }
  
    /* Debug info for adjust sp.  */
!   adjust_sp_rtx = gen_add3_insn (stack_pointer_rtx,
! 				 stack_pointer_rtx, GEN_INT (-saved_size));
    dwarf = alloc_reg_note (REG_CFA_ADJUST_CFA, adjust_sp_rtx,
  			  dwarf);
    return dwarf;
--- 5257,5265 ----
        }
  
    /* Debug info for adjust sp.  */
!   adjust_sp_rtx =
!     gen_rtx_SET (stack_pointer_rtx,
! 		 gen_rtx_PLUS (GET_MODE(stack_pointer_rtx), stack_pointer_rtx, GEN_INT (-saved_size)));
    dwarf = alloc_reg_note (REG_CFA_ADJUST_CFA, adjust_sp_rtx,
  			  dwarf);
    return dwarf;
*************** void
*** 4339,4350 ****
  riscv_expand_prologue (void)
  {
    struct riscv_frame_info *frame = &cfun->machine->frame;
!   HOST_WIDE_INT size = frame->total_size;
    unsigned mask = frame->mask;
    rtx insn;
  
    if (flag_stack_usage_info)
!     current_function_static_stack_size = size;
  
    if (cfun->machine->naked_p)
      return;
--- 5280,5291 ----
  riscv_expand_prologue (void)
  {
    struct riscv_frame_info *frame = &cfun->machine->frame;
!   poly_int64 size = frame->total_size;
    unsigned mask = frame->mask;
    rtx insn;
  
    if (flag_stack_usage_info)
!     current_function_static_stack_size = constant_lower_bound (size);
  
    if (cfun->machine->naked_p)
      return;
*************** riscv_expand_prologue (void)
*** 4366,4372 ****
    /* Save the registers.  */
    if ((frame->mask | frame->fmask) != 0)
      {
!       HOST_WIDE_INT step1 = MIN (size, riscv_first_stack_step (frame));
  
        insn = gen_add3_insn (stack_pointer_rtx,
  			    stack_pointer_rtx,
--- 5307,5315 ----
    /* Save the registers.  */
    if ((frame->mask | frame->fmask) != 0)
      {
!       HOST_WIDE_INT step1 = riscv_first_stack_step (frame);
!       if (size.is_constant ())
! 	step1 = MIN (size.to_constant(), step1);
  
        insn = gen_add3_insn (stack_pointer_rtx,
  			    stack_pointer_rtx,
*************** riscv_expand_prologue (void)
*** 4382,4411 ****
    if (frame_pointer_needed)
      {
        insn = gen_add3_insn (hard_frame_pointer_rtx, stack_pointer_rtx,
! 			    GEN_INT (frame->hard_frame_pointer_offset - size));
        RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
  
        riscv_emit_stack_tie ();
      }
  
    /* Allocate the rest of the frame.  */
!   if (size > 0)
      {
!       if (SMALL_OPERAND (-size))
  	{
  	  insn = gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
! 				GEN_INT (-size));
  	  RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
  	}
        else
  	{
! 	  riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode), GEN_INT (-size));
  	  emit_insn (gen_add3_insn (stack_pointer_rtx,
  				    stack_pointer_rtx,
  				    RISCV_PROLOGUE_TEMP (Pmode)));
  
  	  /* Describe the effect of the previous instructions.  */
! 	  insn = plus_constant (Pmode, stack_pointer_rtx, -size);
  	  insn = gen_rtx_SET (stack_pointer_rtx, insn);
  	  riscv_set_frame_expr (insn);
  	}
--- 5325,5371 ----
    if (frame_pointer_needed)
      {
        insn = gen_add3_insn (hard_frame_pointer_rtx, stack_pointer_rtx,
! 			    GEN_INT ((frame->hard_frame_pointer_offset - size).to_constant ()));
        RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
  
        riscv_emit_stack_tie ();
      }
  
    /* Allocate the rest of the frame.  */
!   if (known_gt (size, 0))
      {
!       /* Two step adjustment:
! 	 1.scalable frame. 2.constant frame.  */
!       poly_int64 scalable_frame (0, 0);
!       if (!size.is_constant ())
! 	{
! 	  /* First for scalable frame.  */
! 	  poly_int64 scalable_frame = size;
! 	  scalable_frame.coeffs[0] = size.coeffs[1];
! 	  riscv_v_adjust_scalable_frame (stack_pointer_rtx, scalable_frame, false);
! 	  size -= scalable_frame;
! 	}
! 
!       /* Second step for constant frame.  */
!       HOST_WIDE_INT constant_frame = size.to_constant ();
!       if (constant_frame == 0)
! 	return;
! 
!       if (SMALL_OPERAND (-constant_frame))
  	{
  	  insn = gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx,
! 				GEN_INT (-constant_frame));
  	  RTX_FRAME_RELATED_P (emit_insn (insn)) = 1;
  	}
        else
  	{
! 	  riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode), GEN_INT (-constant_frame));
  	  emit_insn (gen_add3_insn (stack_pointer_rtx,
  				    stack_pointer_rtx,
  				    RISCV_PROLOGUE_TEMP (Pmode)));
  
  	  /* Describe the effect of the previous instructions.  */
! 	  insn = plus_constant (Pmode, stack_pointer_rtx, -constant_frame);
  	  insn = gen_rtx_SET (stack_pointer_rtx, insn);
  	  riscv_set_frame_expr (insn);
  	}
*************** riscv_adjust_libcall_cfi_epilogue ()
*** 4420,4427 ****
    int saved_size = cfun->machine->frame.save_libcall_adjustment;
  
    /* Debug info for adjust sp.  */
!   adjust_sp_rtx = gen_add3_insn (stack_pointer_rtx,
! 				 stack_pointer_rtx, GEN_INT (saved_size));
    dwarf = alloc_reg_note (REG_CFA_ADJUST_CFA, adjust_sp_rtx,
  			  dwarf);
  
--- 5380,5388 ----
    int saved_size = cfun->machine->frame.save_libcall_adjustment;
  
    /* Debug info for adjust sp.  */
!   adjust_sp_rtx =
!     gen_rtx_SET (stack_pointer_rtx,
! 		 gen_rtx_PLUS (GET_MODE(stack_pointer_rtx), stack_pointer_rtx, GEN_INT (saved_size)));
    dwarf = alloc_reg_note (REG_CFA_ADJUST_CFA, adjust_sp_rtx,
  			  dwarf);
  
*************** riscv_expand_epilogue (int style)
*** 4448,4454 ****
       Start off by assuming that no registers need to be restored.  */
    struct riscv_frame_info *frame = &cfun->machine->frame;
    unsigned mask = frame->mask;
!   HOST_WIDE_INT step1 = frame->total_size;
    HOST_WIDE_INT step2 = 0;
    bool use_restore_libcall = ((style == NORMAL_RETURN)
  			      && riscv_use_save_libcall (frame));
--- 5409,5415 ----
       Start off by assuming that no registers need to be restored.  */
    struct riscv_frame_info *frame = &cfun->machine->frame;
    unsigned mask = frame->mask;
!   poly_int64 step1 = frame->total_size;
    HOST_WIDE_INT step2 = 0;
    bool use_restore_libcall = ((style == NORMAL_RETURN)
  			      && riscv_use_save_libcall (frame));
*************** riscv_expand_epilogue (int style)
*** 4456,4463 ****
    rtx insn;
  
    /* We need to add memory barrier to prevent read from deallocated stack.  */
!   bool need_barrier_p = (get_frame_size ()
! 			 + cfun->machine->frame.arg_pointer_offset) != 0;
  
    if (cfun->machine->naked_p)
      {
--- 5417,5424 ----
    rtx insn;
  
    /* We need to add memory barrier to prevent read from deallocated stack.  */
!   bool need_barrier_p = known_ne (get_frame_size ()
! 				  + cfun->machine->frame.arg_pointer_offset, 0);
  
    if (cfun->machine->naked_p)
      {
*************** riscv_expand_epilogue (int style)
*** 4484,4494 ****
        riscv_emit_stack_tie ();
        need_barrier_p = false;
  
!       rtx adjust = GEN_INT (-frame->hard_frame_pointer_offset);
!       if (!SMALL_OPERAND (INTVAL (adjust)))
  	{
! 	  riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode), adjust);
! 	  adjust = RISCV_PROLOGUE_TEMP (Pmode);
  	}
  
        insn = emit_insn (
--- 5445,5471 ----
        riscv_emit_stack_tie ();
        need_barrier_p = false;
  
!       poly_int64 adjust_offset = -frame->hard_frame_pointer_offset;
!       rtx adjust = NULL_RTX;
! 
!       if (!adjust_offset.is_constant ())
  	{
! 	  rtx tmp1 = RISCV_PROLOGUE_TEMP (Pmode);
! 	  rtx tmp2 = RISCV_PROLOGUE_TEMP2 (Pmode);
! 	  riscv_legitimize_poly_move (Pmode, tmp1, tmp2,
! 				      gen_int_mode (adjust_offset, Pmode));
! 	  adjust = tmp1;
! 	}
!       else
! 	{
! 	  if (!SMALL_OPERAND (adjust_offset.to_constant ()))
! 	    {
! 	      riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode),
! 			       GEN_INT (adjust_offset.to_constant ()));
! 	      adjust = RISCV_PROLOGUE_TEMP (Pmode);
! 	    }
! 	  else
! 	    adjust = GEN_INT (adjust_offset.to_constant ());
  	}
  
        insn = emit_insn (
*************** riscv_expand_epilogue (int style)
*** 4498,4504 ****
        rtx dwarf = NULL_RTX;
        rtx cfa_adjust_value = gen_rtx_PLUS (
  			       Pmode, hard_frame_pointer_rtx,
! 			       GEN_INT (-frame->hard_frame_pointer_offset));
        rtx cfa_adjust_rtx = gen_rtx_SET (stack_pointer_rtx, cfa_adjust_value);
        dwarf = alloc_reg_note (REG_CFA_ADJUST_CFA, cfa_adjust_rtx, dwarf);
        RTX_FRAME_RELATED_P (insn) = 1;
--- 5475,5481 ----
        rtx dwarf = NULL_RTX;
        rtx cfa_adjust_value = gen_rtx_PLUS (
  			       Pmode, hard_frame_pointer_rtx,
! 			       gen_int_mode (-frame->hard_frame_pointer_offset, Pmode));
        rtx cfa_adjust_rtx = gen_rtx_SET (stack_pointer_rtx, cfa_adjust_value);
        dwarf = alloc_reg_note (REG_CFA_ADJUST_CFA, cfa_adjust_rtx, dwarf);
        RTX_FRAME_RELATED_P (insn) = 1;
*************** riscv_expand_epilogue (int style)
*** 4515,4545 ****
      }
  
    /* Set TARGET to BASE + STEP1.  */
!   if (step1 > 0)
      {
        /* Emit a barrier to prevent loads from a deallocated stack.  */
        riscv_emit_stack_tie ();
        need_barrier_p = false;
  
!       /* Get an rtx for STEP1 that we can add to BASE.  */
!       rtx adjust = GEN_INT (step1);
!       if (!SMALL_OPERAND (step1))
  	{
! 	  riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode), adjust);
! 	  adjust = RISCV_PROLOGUE_TEMP (Pmode);
  	}
  
!       insn = emit_insn (
! 	       gen_add3_insn (stack_pointer_rtx, stack_pointer_rtx, adjust));
  
!       rtx dwarf = NULL_RTX;
!       rtx cfa_adjust_rtx = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
! 					 GEN_INT (step2));
  
!       dwarf = alloc_reg_note (REG_CFA_DEF_CFA, cfa_adjust_rtx, dwarf);
!       RTX_FRAME_RELATED_P (insn) = 1;
  
!       REG_NOTES (insn) = dwarf;
      }
    else if (frame_pointer_needed)
      {
--- 5492,5536 ----
      }
  
    /* Set TARGET to BASE + STEP1.  */
!   if (known_gt (step1, 0))
      {
        /* Emit a barrier to prevent loads from a deallocated stack.  */
        riscv_emit_stack_tie ();
        need_barrier_p = false;
  
!       /* Restore the scalable frame which is assigned in prologue.  */
!       if (!step1.is_constant ())
  	{
! 	  poly_int64 scalable_frame = step1;
! 	  scalable_frame.coeffs[0] = step1.coeffs[1];
! 	  riscv_v_adjust_scalable_frame (stack_pointer_rtx, scalable_frame,
! 					 true);
! 	  step1 -= scalable_frame;
  	}
  
!       /* Get an rtx for STEP1 that we can add to BASE.
! 	 Skip if adjust equal to zero.  */
!       if (step1.to_constant () != 0)
! 	{
! 	  rtx adjust = GEN_INT (step1.to_constant ());
! 	  if (!SMALL_OPERAND (step1.to_constant ()))
! 	    {
! 	      riscv_emit_move (RISCV_PROLOGUE_TEMP (Pmode), adjust);
! 	      adjust = RISCV_PROLOGUE_TEMP (Pmode);
! 	    }
  
! 	  insn = emit_insn (gen_add3_insn (stack_pointer_rtx,
! 					   stack_pointer_rtx,
! 					   adjust));
! 	  rtx dwarf = NULL_RTX;
! 	  rtx cfa_adjust_rtx = gen_rtx_PLUS (Pmode, stack_pointer_rtx,
! 					     GEN_INT (step2));
  
! 	  dwarf = alloc_reg_note (REG_CFA_DEF_CFA, cfa_adjust_rtx, dwarf);
! 	  RTX_FRAME_RELATED_P (insn) = 1;
  
! 	  REG_NOTES (insn) = dwarf;
! 	}
      }
    else if (frame_pointer_needed)
      {
*************** riscv_epilogue_uses (unsigned int regno)
*** 4634,4639 ****
--- 5625,5787 ----
    return false;
  }
  
+ /* Implement TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS.  */
+ 
+ static sbitmap
+ riscv_get_separate_components (void)
+ {
+   HOST_WIDE_INT offset;
+   sbitmap components = sbitmap_alloc (FIRST_PSEUDO_REGISTER);
+   bitmap_clear (components);
+ 
+   if (riscv_use_save_libcall (&cfun->machine->frame)
+       || cfun->machine->interrupt_handler_p
+       || !cfun->machine->frame.gp_sp_offset.is_constant ())
+     return components;
+ 
+   offset = cfun->machine->frame.gp_sp_offset.to_constant ();
+   for (unsigned int regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++)
+     if (BITSET_P (cfun->machine->frame.mask, regno - GP_REG_FIRST))
+       {
+ 	/* We can only wrap registers that have small operand offsets.
+ 	   For large offsets a pseudo register might be needed which
+ 	   cannot be created during the shrink wrapping pass.  */
+ 	if (SMALL_OPERAND (offset))
+ 	  bitmap_set_bit (components, regno);
+ 
+ 	offset -= UNITS_PER_WORD;
+       }
+ 
+   offset = cfun->machine->frame.fp_sp_offset.to_constant ();
+   for (unsigned int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
+     if (BITSET_P (cfun->machine->frame.fmask, regno - FP_REG_FIRST))
+       {
+ 	machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode;
+ 
+ 	/* We can only wrap registers that have small operand offsets.
+ 	   For large offsets a pseudo register might be needed which
+ 	   cannot be created during the shrink wrapping pass.  */
+ 	if (SMALL_OPERAND (offset))
+ 	  bitmap_set_bit (components, regno);
+ 
+ 	offset -= GET_MODE_SIZE (mode).to_constant ();
+       }
+ 
+   /* Don't mess with the hard frame pointer.  */
+   if (frame_pointer_needed)
+     bitmap_clear_bit (components, HARD_FRAME_POINTER_REGNUM);
+ 
+   bitmap_clear_bit (components, RETURN_ADDR_REGNUM);
+ 
+   return components;
+ }
+ 
+ /* Implement TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB.  */
+ 
+ static sbitmap
+ riscv_components_for_bb (basic_block bb)
+ {
+   bitmap in = DF_LIVE_IN (bb);
+   bitmap gen = &DF_LIVE_BB_INFO (bb)->gen;
+   bitmap kill = &DF_LIVE_BB_INFO (bb)->kill;
+ 
+   sbitmap components = sbitmap_alloc (FIRST_PSEUDO_REGISTER);
+   bitmap_clear (components);
+ 
+   function_abi_aggregator callee_abis;
+   rtx_insn *insn;
+   FOR_BB_INSNS (bb, insn)
+     if (CALL_P (insn))
+       callee_abis.note_callee_abi (insn_callee_abi (insn));
+   HARD_REG_SET extra_caller_saves = callee_abis.caller_save_regs (*crtl->abi);
+ 
+   /* GPRs are used in a bb if they are in the IN, GEN, or KILL sets.  */
+   for (unsigned int regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++)
+     if (!fixed_regs[regno]
+        && !crtl->abi->clobbers_full_reg_p (regno)
+        && (TEST_HARD_REG_BIT (extra_caller_saves, regno)
+ 	   || bitmap_bit_p (in, regno)
+ 	   || bitmap_bit_p (gen, regno)
+ 	   || bitmap_bit_p (kill, regno)))
+       bitmap_set_bit (components, regno);
+ 
+   for (unsigned int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
+     if (!fixed_regs[regno]
+        && !crtl->abi->clobbers_full_reg_p (regno)
+        && (TEST_HARD_REG_BIT (extra_caller_saves, regno)
+ 	   || bitmap_bit_p (in, regno)
+ 	   || bitmap_bit_p (gen, regno)
+ 	   || bitmap_bit_p (kill, regno)))
+       bitmap_set_bit (components, regno);
+ 
+   return components;
+ }
+ 
+ /* Implement TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS.  */
+ 
+ static void
+ riscv_disqualify_components (sbitmap, edge, sbitmap, bool)
+ {
+   /* Nothing to do for riscv.  */
+ }
+ 
+ static void
+ riscv_process_components (sbitmap components, bool prologue_p)
+ {
+   HOST_WIDE_INT offset;
+   riscv_save_restore_fn fn = prologue_p? riscv_save_reg : riscv_restore_reg;
+ 
+   offset = cfun->machine->frame.gp_sp_offset.to_constant ();
+   for (unsigned int regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++)
+     if (BITSET_P (cfun->machine->frame.mask, regno - GP_REG_FIRST))
+       {
+ 	if (bitmap_bit_p (components, regno))
+ 	  riscv_save_restore_reg (word_mode, regno, offset, fn);
+ 
+ 	offset -= UNITS_PER_WORD;
+       }
+ 
+   offset = cfun->machine->frame.fp_sp_offset.to_constant ();
+   for (unsigned int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
+     if (BITSET_P (cfun->machine->frame.fmask, regno - FP_REG_FIRST))
+       {
+ 	machine_mode mode = TARGET_DOUBLE_FLOAT ? DFmode : SFmode;
+ 
+ 	if (bitmap_bit_p (components, regno))
+ 	  riscv_save_restore_reg (mode, regno, offset, fn);
+ 
+ 	offset -= GET_MODE_SIZE (mode).to_constant ();
+       }
+ }
+ 
+ /* Implement TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS.  */
+ 
+ static void
+ riscv_emit_prologue_components (sbitmap components)
+ {
+   riscv_process_components (components, true);
+ }
+ 
+ /* Implement TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS.  */
+ 
+ static void
+ riscv_emit_epilogue_components (sbitmap components)
+ {
+   riscv_process_components (components, false);
+ }
+ 
+ static void
+ riscv_set_handled_components (sbitmap components)
+ {
+   for (unsigned int regno = GP_REG_FIRST; regno <= GP_REG_LAST; regno++)
+     if (bitmap_bit_p (components, regno))
+       cfun->machine->reg_is_wrapped_separately[regno] = true;
+ 
+   for (unsigned int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
+     if (bitmap_bit_p (components, regno))
+       cfun->machine->reg_is_wrapped_separately[regno] = true;
+ }
+ 
  /* Return nonzero if this function is known to have a null epilogue.
     This allows the optimizer to omit jumps to jumps if no stack
     was created.  */
*************** riscv_epilogue_uses (unsigned int regno)
*** 4641,4647 ****
  bool
  riscv_can_use_return_insn (void)
  {
!   return (reload_completed && cfun->machine->frame.total_size == 0
  	  && ! cfun->machine->interrupt_handler_p);
  }
  
--- 5789,5795 ----
  bool
  riscv_can_use_return_insn (void)
  {
!   return (reload_completed && known_eq (cfun->machine->frame.total_size, 0)
  	  && ! cfun->machine->interrupt_handler_p);
  }
  
*************** static bool
*** 4741,4748 ****
  riscv_secondary_memory_needed (machine_mode mode, reg_class_t class1,
  			       reg_class_t class2)
  {
!   return (GET_MODE_SIZE (mode) > UNITS_PER_WORD
! 	  && (class1 == FP_REGS) != (class2 == FP_REGS));
  }
  
  /* Implement TARGET_REGISTER_MOVE_COST.  */
--- 5889,5898 ----
  riscv_secondary_memory_needed (machine_mode mode, reg_class_t class1,
  			       reg_class_t class2)
  {
!   return (!riscv_v_ext_vector_mode_p (mode)
! 	  && GET_MODE_SIZE (mode).to_constant () > UNITS_PER_WORD
! 	  && (class1 == FP_REGS) != (class2 == FP_REGS)
! 	  && !TARGET_XTHEADFMV);
  }
  
  /* Implement TARGET_REGISTER_MOVE_COST.  */
*************** riscv_register_move_cost (machine_mode m
*** 4763,4773 ****
  static unsigned int
  riscv_hard_regno_nregs (unsigned int regno, machine_mode mode)
  {
    if (FP_REG_P (regno))
!     return (GET_MODE_SIZE (mode) + UNITS_PER_FP_REG - 1) / UNITS_PER_FP_REG;
  
    /* All other registers are word-sized.  */
!   return (GET_MODE_SIZE (mode) + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  }
  
  /* Implement TARGET_HARD_REGNO_MODE_OK.  */
--- 5913,5942 ----
  static unsigned int
  riscv_hard_regno_nregs (unsigned int regno, machine_mode mode)
  {
+   if (riscv_v_ext_vector_mode_p (mode))
+     {
+       /* Handle fractional LMUL, it only occupy part of vector register but
+ 	 still need one vector register to hold.  */
+       if (maybe_lt (GET_MODE_SIZE (mode), UNITS_PER_V_REG))
+ 	return 1;
+ 
+       return exact_div (GET_MODE_SIZE (mode), UNITS_PER_V_REG).to_constant ();
+     }
+ 
+   /* mode for VL or VTYPE are just a marker, not holding value,
+      so it always consume one register.  */
+   if (regno == VTYPE_REGNUM || regno == VL_REGNUM)
+     return 1;
+ 
+   /* Assume every valid non-vector mode fits in one vector register.  */
+   if (V_REG_P (regno))
+     return 1;
+ 
    if (FP_REG_P (regno))
!     return (GET_MODE_SIZE (mode).to_constant () + UNITS_PER_FP_REG - 1) / UNITS_PER_FP_REG;
  
    /* All other registers are word-sized.  */
!   return (GET_MODE_SIZE (mode).to_constant () + UNITS_PER_WORD - 1) / UNITS_PER_WORD;
  }
  
  /* Implement TARGET_HARD_REGNO_MODE_OK.  */
*************** riscv_hard_regno_mode_ok (unsigned int r
*** 4779,4789 ****
--- 5948,5964 ----
  
    if (GP_REG_P (regno))
      {
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	return false;
+ 
        if (!GP_REG_P (regno + nregs - 1))
  	return false;
      }
    else if (FP_REG_P (regno))
      {
+       if (riscv_v_ext_vector_mode_p (mode))
+ 	return false;
+ 
        if (!FP_REG_P (regno + nregs - 1))
  	return false;
  
*************** riscv_hard_regno_mode_ok (unsigned int r
*** 4798,4803 ****
--- 5973,5996 ----
  	      && GET_MODE_UNIT_SIZE (mode) > UNITS_PER_FP_ARG))
  	return false;
      }
+   else if (V_REG_P (regno))
+     {
+       if (!riscv_v_ext_vector_mode_p (mode))
+ 	return false;
+ 
+       if (!V_REG_P (regno + nregs - 1))
+ 	return false;
+ 
+       /* 3.3.2. LMUL = 2,4,8, register numbers should be multiple of 2,4,8.
+ 	 but for mask vector register, register numbers can be any number. */
+       int lmul = 1;
+       if (known_gt (GET_MODE_SIZE (mode), UNITS_PER_V_REG))
+ 	lmul = exact_div (GET_MODE_SIZE (mode), UNITS_PER_V_REG).to_constant ();
+       if (lmul != 1)
+ 	return ((regno % lmul) == 0);
+     }
+   else if (regno == VL_REGNUM || regno == VTYPE_REGNUM)
+     return true;
    else
      return false;
  
*************** riscv_hard_regno_mode_ok (unsigned int r
*** 4807,4812 ****
--- 6000,6012 ----
  	!= call_used_or_fixed_reg_p (regno + i))
        return false;
  
+   /* Only use even registers in RV32 ZDINX */
+   if (!TARGET_64BIT && TARGET_ZDINX){
+     if (GET_MODE_CLASS (mode) == MODE_FLOAT &&
+      GET_MODE_UNIT_SIZE (mode) == GET_MODE_SIZE (DFmode))
+     return !(regno & 1);
+   }
+ 
    return true;
  }
  
*************** riscv_class_max_nregs (reg_class_t rclas
*** 4834,4839 ****
--- 6034,6042 ----
    if (reg_class_subset_p (rclass, GR_REGS))
      return riscv_hard_regno_nregs (GP_REG_FIRST, mode);
  
+   if (reg_class_subset_p (rclass, V_REGS))
+     return riscv_hard_regno_nregs (V_REG_FIRST, mode);
+ 
    return 0;
  }
  
*************** riscv_file_start (void)
*** 4883,4888 ****
--- 6086,6096 ----
    if (! riscv_mrelax)
      fprintf (asm_out_file, "\t.option norelax\n");
  
+   /* If the user specifies "-mcsr-check" on the command line then enable csr
+      check in the assembler.  */
+   if (riscv_mcsr_check)
+     fprintf (asm_out_file, "\t.option csr-check\n");
+ 
    if (riscv_emit_attribute_p)
      riscv_emit_attribute ();
  }
*************** riscv_init_machine_status (void)
*** 4974,4979 ****
--- 6182,6221 ----
    return ggc_cleared_alloc<machine_function> ();
  }
  
+ /* Return the VLEN value associated with -march.
+    TODO: So far we only support length-agnostic value. */
+ static poly_uint16
+ riscv_convert_vector_bits (void)
+ {
+   if (TARGET_MIN_VLEN > 32)
+     {
+       /* When targetting minimum VLEN > 32, we should use 64-bit chunk size.
+ 	 Otherwise we can not include SEW = 64bits.
+ 	 Runtime invariant: The single indeterminate represent the
+ 	 number of 64-bit chunks in a vector beyond minimum length of 64 bits.
+ 	 Thus the number of bytes in a vector is 8 + 8 * x1 which is
+ 	 riscv_vector_chunks * 8 = poly_int (8, 8).  */
+       riscv_bytes_per_vector_chunk = 8;
+     }
+   else
+     {
+       /* When targetting minimum VLEN = 32, we should use 32-bit
+ 	 chunk size. Runtime invariant: The single indeterminate represent the
+ 	 number of 32-bit chunks in a vector beyond minimum length of 32 bits.
+ 	 Thus the number of bytes in a vector is 4 + 4 * x1 which is
+ 	 riscv_vector_chunks * 4 = poly_int (4, 4).  */
+       riscv_bytes_per_vector_chunk = 4;
+     }
+ 
+   /* Set riscv_vector_chunks as poly (1, 1) run-time constant if TARGET_VECTOR
+      is enabled. Set riscv_vector_chunks as 1 compile-time constant if
+      TARGET_VECTOR is disabled. riscv_vector_chunks is used in "riscv-modes.def"
+      to set RVV mode size. The RVV machine modes size are run-time constant if
+      TARGET_VECTOR is enabled. The RVV machine modes size remains default
+      compile-time constant if TARGET_VECTOR is disabled.  */
+   return TARGET_VECTOR ? poly_uint16 (1, 1) : 1;
+ }
+ 
  /* Implement TARGET_OPTION_OVERRIDE.  */
  
  static void
*************** riscv_option_override (void)
*** 4998,5008 ****
      error ("%<-mdiv%> requires %<-march%> to subsume the %<M%> extension");
  
    /* Likewise floating-point division and square root.  */
!   if (TARGET_HARD_FLOAT && (target_flags_explicit & MASK_FDIV) == 0)
      target_flags |= MASK_FDIV;
  
    /* Handle -mtune, use -mcpu if -mtune is not given, and use default -mtune
!      if -mtune and -mcpu both not given.  */
    cpu = riscv_parse_tune (riscv_tune_string ? riscv_tune_string :
  			  (riscv_cpu_string ? riscv_cpu_string :
  			   RISCV_TUNE_STRING_DEFAULT));
--- 6240,6250 ----
      error ("%<-mdiv%> requires %<-march%> to subsume the %<M%> extension");
  
    /* Likewise floating-point division and square root.  */
!   if ((TARGET_HARD_FLOAT || TARGET_ZFINX) && (target_flags_explicit & MASK_FDIV) == 0)
      target_flags |= MASK_FDIV;
  
    /* Handle -mtune, use -mcpu if -mtune is not given, and use default -mtune
!      if both -mtune and -mcpu are not given.  */
    cpu = riscv_parse_tune (riscv_tune_string ? riscv_tune_string :
  			  (riscv_cpu_string ? riscv_cpu_string :
  			   RISCV_TUNE_STRING_DEFAULT));
*************** riscv_option_override (void)
*** 5044,5049 ****
--- 6286,6296 ----
    if (TARGET_RVE && riscv_abi != ABI_ILP32E)
      error ("rv32e requires ilp32e ABI");
  
+   // Zfinx require abi ilp32,ilp32e or lp64.
+   if (TARGET_ZFINX && riscv_abi != ABI_ILP32
+       && riscv_abi != ABI_LP64 && riscv_abi != ABI_ILP32E)
+     error ("z*inx requires ABI ilp32, ilp32e or lp64");
+ 
    /* We do not yet support ILP32 on RV64.  */
    if (BITS_PER_WORD != POINTER_SIZE)
      error ("ABI requires %<-march=rv%d%>", POINTER_SIZE);
*************** riscv_option_override (void)
*** 5120,5125 ****
--- 6367,6374 ----
        riscv_stack_protector_guard_offset = offs;
      }
  
+   /* Convert -march to a chunks count.  */
+   riscv_vector_chunks = riscv_convert_vector_bits ();
  }
  
  /* Implement TARGET_CONDITIONAL_REGISTER_USAGE.  */
*************** riscv_conditional_register_usage (void)
*** 5152,5157 ****
--- 6401,6415 ----
        for (int regno = FP_REG_FIRST; regno <= FP_REG_LAST; regno++)
  	call_used_regs[regno] = 1;
      }
+ 
+   if (!TARGET_VECTOR)
+     {
+       for (int regno = V_REG_FIRST; regno <= V_REG_LAST; regno++)
+ 	fixed_regs[regno] = call_used_regs[regno] = 1;
+ 
+       fixed_regs[VTYPE_REGNUM] = call_used_regs[VTYPE_REGNUM] = 1;
+       fixed_regs[VL_REGNUM] = call_used_regs[VL_REGNUM] = 1;
+     }
  }
  
  /* Return a register priority for hard reg REGNO.  */
*************** riscv_promote_function_mode (const_tree
*** 5477,5483 ****
      return promote_mode (type, mode, punsignedp);
  
    unsignedp = *punsignedp;
!   PROMOTE_MODE (mode, unsignedp, type);
    *punsignedp = unsignedp;
    return mode;
  }
--- 6735,6741 ----
      return promote_mode (type, mode, punsignedp);
  
    unsignedp = *punsignedp;
!   PROMOTE_MODE (as_a <scalar_mode> (mode), unsignedp, type);
    *punsignedp = unsignedp;
    return mode;
  }
*************** riscv_asan_shadow_offset (void)
*** 5605,5610 ****
--- 6863,7148 ----
    return TARGET_64BIT ? (HOST_WIDE_INT_1 << 29) : 0;
  }
  
+ /* Implement TARGET_MANGLE_TYPE.  */
+ 
+ static const char *
+ riscv_mangle_type (const_tree type)
+ {
+   /* Half-precision float, _Float16 is "DF16_".  */
+   if (TREE_CODE (type) == REAL_TYPE && TYPE_PRECISION (type) == 16)
+     return "DF16_";
+ 
+   /* Mangle all vector type for vector extension.  */
+   /* The mangle name follows the rule of RVV LLVM
+      that is "u" + length of (abi_name) + abi_name. */
+   if (TYPE_NAME (type) != NULL)
+     {
+       const char *res = riscv_vector::mangle_builtin_type (type);
+       if (res)
+ 	return res;
+     }
+ 
+   /* Use the default mangling.  */
+   return NULL;
+ }
+ 
+ /* Implement TARGET_SCALAR_MODE_SUPPORTED_P.  */
+ 
+ static bool
+ riscv_scalar_mode_supported_p (scalar_mode mode)
+ {
+   if (mode == HFmode)
+     return true;
+   else
+     return default_scalar_mode_supported_p (mode);
+ }
+ 
+ /* Implement TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P - return TRUE
+    if MODE is HFmode, and punt to the generic implementation otherwise.  */
+ 
+ static bool
+ riscv_libgcc_floating_mode_supported_p (scalar_float_mode mode)
+ {
+   if (mode == HFmode)
+     return true;
+   else
+     return default_libgcc_floating_mode_supported_p (mode);
+ }
+ 
+ /* Set the value of FLT_EVAL_METHOD.
+    ISO/IEC TS 18661-3 defines two values that we'd like to make use of:
+ 
+     0: evaluate all operations and constants, whose semantic type has at
+        most the range and precision of type float, to the range and
+        precision of float; evaluate all other operations and constants to
+        the range and precision of the semantic type;
+ 
+     N, where _FloatN is a supported interchange floating type
+        evaluate all operations and constants, whose semantic type has at
+        most the range and precision of _FloatN type, to the range and
+        precision of the _FloatN type; evaluate all other operations and
+        constants to the range and precision of the semantic type;
+ 
+    If we have the zfh/zhinx extensions then we support _Float16 in native
+    precision, so we should set this to 16.  */
+ static enum flt_eval_method
+ riscv_excess_precision (enum excess_precision_type type)
+ {
+   switch (type)
+     {
+     case EXCESS_PRECISION_TYPE_FAST:
+     case EXCESS_PRECISION_TYPE_STANDARD:
+       return ((TARGET_ZFH || TARGET_ZHINX)
+ 		? FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16
+ 		: FLT_EVAL_METHOD_PROMOTE_TO_FLOAT);
+     case EXCESS_PRECISION_TYPE_IMPLICIT:
+     case EXCESS_PRECISION_TYPE_FLOAT16:
+       return FLT_EVAL_METHOD_PROMOTE_TO_FLOAT16;
+     default:
+       gcc_unreachable ();
+     }
+   return FLT_EVAL_METHOD_UNPREDICTABLE;
+ }
+ 
+ /* Implement TARGET_FLOATN_MODE.  */
+ static opt_scalar_float_mode
+ riscv_floatn_mode (int n, bool extended)
+ {
+   if (!extended && n == 16)
+     return HFmode;
+ 
+   return default_floatn_mode (n, extended);
+ }
+ 
+ static void
+ riscv_init_libfuncs (void)
+ {
+   /* Half-precision float operations.  The compiler handles all operations
+      with NULL libfuncs by converting to SFmode.  */
+ 
+   /* Arithmetic.  */
+   set_optab_libfunc (add_optab, HFmode, NULL);
+   set_optab_libfunc (sdiv_optab, HFmode, NULL);
+   set_optab_libfunc (smul_optab, HFmode, NULL);
+   set_optab_libfunc (neg_optab, HFmode, NULL);
+   set_optab_libfunc (sub_optab, HFmode, NULL);
+ 
+   /* Comparisons.  */
+   set_optab_libfunc (eq_optab, HFmode, NULL);
+   set_optab_libfunc (ne_optab, HFmode, NULL);
+   set_optab_libfunc (lt_optab, HFmode, NULL);
+   set_optab_libfunc (le_optab, HFmode, NULL);
+   set_optab_libfunc (ge_optab, HFmode, NULL);
+   set_optab_libfunc (gt_optab, HFmode, NULL);
+   set_optab_libfunc (unord_optab, HFmode, NULL);
+ }
+ 
+ #if CHECKING_P
+ void
+ riscv_reinit (void)
+ {
+   riscv_option_override ();
+   init_adjust_machine_modes ();
+   init_derived_machine_modes ();
+   reinit_regs ();
+   init_optabs ();
+ }
+ #endif
+ 
+ #if CHECKING_P
+ #undef TARGET_RUN_TARGET_SELFTESTS
+ #define TARGET_RUN_TARGET_SELFTESTS selftest::riscv_run_selftests
+ #endif /* #if CHECKING_P */
+ 
+ /* Implement TARGET_VECTOR_MODE_SUPPORTED_P.  */
+ 
+ static bool
+ riscv_vector_mode_supported_p (machine_mode mode)
+ {
+   if (TARGET_VECTOR)
+     return riscv_v_ext_vector_mode_p (mode);
+ 
+   return false;
+ }
+ 
+ /* Implement TARGET_VERIFY_TYPE_CONTEXT.  */
+ 
+ static bool
+ riscv_verify_type_context (location_t loc, type_context_kind context,
+ 			   const_tree type, bool silent_p)
+ {
+   return riscv_vector::verify_type_context (loc, context, type, silent_p);
+ }
+ 
+ /* Implement TARGET_VECTOR_ALIGNMENT.  */
+ 
+ static HOST_WIDE_INT
+ riscv_vector_alignment (const_tree type)
+ {
+   /* ??? Checking the mode isn't ideal, but VECTOR_BOOLEAN_TYPE_P can
+      be set for non-predicate vectors of booleans.  Modes are the most
+      direct way we have of identifying real RVV predicate types.  */
+   /* FIXME: RVV didn't mention the alignment of bool, we uses
+      one byte align.  */
+   if (GET_MODE_CLASS (TYPE_MODE (type)) == MODE_VECTOR_BOOL)
+     return 8;
+ 
+   widest_int min_size
+     = constant_lower_bound (wi::to_poly_widest (TYPE_SIZE (type)));
+   return wi::umin (min_size, 128).to_uhwi ();
+ }
+ 
+ /* Implement REGMODE_NATURAL_SIZE.  */
+ 
+ poly_uint64
+ riscv_regmode_natural_size (machine_mode mode)
+ {
+   /* The natural size for RVV data modes is one RVV data vector,
+      and similarly for predicates.  We can't independently modify
+      anything smaller than that.  */
+   /* ??? For now, only do this for variable-width RVV registers.
+      Doing it for constant-sized registers breaks lower-subreg.c.  */
+   if (!riscv_vector_chunks.is_constant () && riscv_v_ext_vector_mode_p (mode))
+     return BYTES_PER_RISCV_VECTOR;
+   return UNITS_PER_WORD;
+ }
+ 
+ /* Implement the TARGET_DWARF_POLY_INDETERMINATE_VALUE hook.  */
+ 
+ static unsigned int
+ riscv_dwarf_poly_indeterminate_value (unsigned int i, unsigned int *factor,
+ 				      int *offset)
+ {
+   /* Polynomial invariant 1 == (VLENB / riscv_bytes_per_vector_chunk) - 1.
+      1. TARGET_MIN_VLEN == 32, polynomial invariant 1 == (VLENB / 4) - 1.
+      2. TARGET_MIN_VLEN > 32, polynomial invariant 1 == (VLENB / 8) - 1.
+   */
+   gcc_assert (i == 1);
+   *factor = riscv_bytes_per_vector_chunk;
+   *offset = 1;
+   return RISCV_DWARF_VLENB;
+ }
+ 
+ /* Return true if a shift-amount matches the trailing cleared bits on
+    a bitmask.  */
+ 
+ bool
+ riscv_shamt_matches_mask_p (int shamt, HOST_WIDE_INT mask)
+ {
+   return shamt == ctz_hwi (mask);
+ }
+ 
+ static HARD_REG_SET
+ vector_zero_call_used_regs (HARD_REG_SET need_zeroed_hardregs)
+ {
+   HARD_REG_SET zeroed_hardregs;
+   CLEAR_HARD_REG_SET (zeroed_hardregs);
+ 
+   /* Find a register to hold vl.  */
+   unsigned vl_regno = INVALID_REGNUM;
+   /* Skip the first GPR, otherwise the existing vl is kept due to the same
+      between vl and avl.  */
+   for (unsigned regno = GP_REG_FIRST + 1; regno <= GP_REG_LAST; regno++)
+     {
+       if (TEST_HARD_REG_BIT (need_zeroed_hardregs, regno))
+ 	{
+ 	  vl_regno = regno;
+ 	  break;
+ 	}
+     }
+ 
+   if (vl_regno > GP_REG_LAST)
+     sorry ("cannot allocate vl register for %qs on this target",
+ 	   "-fzero-call-used-regs");
+ 
+   /* Vector configurations need not be saved and restored here.  The
+      -fzero-call-used-regs=* option will zero all vector registers and
+      return.  So there's no vector operations between them.  */
+ 
+   bool emitted_vlmax_vsetvl = false;
+   rtx vl = gen_rtx_REG (Pmode, vl_regno); /* vl is VLMAX.  */
+   for (unsigned regno = V_REG_FIRST; regno <= V_REG_LAST; ++regno)
+     {
+       if (TEST_HARD_REG_BIT (need_zeroed_hardregs, regno))
+ 	{
+ 	  rtx target = regno_reg_rtx[regno];
+ 	  machine_mode mode = GET_MODE (target);
+ 	  poly_uint16 nunits = GET_MODE_NUNITS (mode);
+ 	  machine_mode mask_mode
+ 	    = riscv_vector::get_vector_mode (BImode, nunits).require ();
+ 
+ 	  if (!emitted_vlmax_vsetvl)
+ 	    {
+ 	      riscv_vector::emit_hard_vlmax_vsetvl (mode, vl);
+ 	      emitted_vlmax_vsetvl = true;
+ 	    }
+ 
+ 	  riscv_vector::emit_vlmax_op (code_for_pred_mov (mode), target,
+ 				       CONST0_RTX (mode), vl, mask_mode);
+ 
+ 	  SET_HARD_REG_BIT (zeroed_hardregs, regno);
+ 	}
+     }
+ 
+   return zeroed_hardregs;
+ }
+ 
+ /* Generate a sequence of instructions that zero registers specified by
+    NEED_ZEROED_HARDREGS.  Return the ZEROED_HARDREGS that are actually
+    zeroed.  */
+ HARD_REG_SET
+ riscv_zero_call_used_regs (HARD_REG_SET need_zeroed_hardregs)
+ {
+   HARD_REG_SET zeroed_hardregs;
+   CLEAR_HARD_REG_SET (zeroed_hardregs);
+ 
+   if (TARGET_VECTOR)
+     zeroed_hardregs |= vector_zero_call_used_regs (need_zeroed_hardregs);
+ 
+   return zeroed_hardregs | default_zero_call_used_regs (need_zeroed_hardregs
+ 							& ~zeroed_hardregs);
+ }
+ 
  /* Initialize the GCC target structure.  */
  #undef TARGET_ASM_ALIGNED_HI_OP
  #define TARGET_ASM_ALIGNED_HI_OP "\t.half\t"
*************** riscv_asan_shadow_offset (void)
*** 5660,5665 ****
--- 7198,7205 ----
  #define TARGET_PRINT_OPERAND riscv_print_operand
  #undef TARGET_PRINT_OPERAND_ADDRESS
  #define TARGET_PRINT_OPERAND_ADDRESS riscv_print_operand_address
+ #undef TARGET_PRINT_OPERAND_PUNCT_VALID_P
+ #define TARGET_PRINT_OPERAND_PUNCT_VALID_P riscv_print_operand_punct_valid_p
  
  #undef TARGET_SETUP_INCOMING_VARARGS
  #define TARGET_SETUP_INCOMING_VARARGS riscv_setup_incoming_varargs
*************** riscv_asan_shadow_offset (void)
*** 5680,5685 ****
--- 7220,7249 ----
  #undef TARGET_FUNCTION_ARG_BOUNDARY
  #define TARGET_FUNCTION_ARG_BOUNDARY riscv_function_arg_boundary
  
+ #undef TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS
+ #define TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS \
+   riscv_get_separate_components
+ 
+ #undef TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB
+ #define TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB \
+   riscv_components_for_bb
+ 
+ #undef TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS
+ #define TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS \
+   riscv_disqualify_components
+ 
+ #undef TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS
+ #define TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS \
+   riscv_emit_prologue_components
+ 
+ #undef TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS
+ #define TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS \
+   riscv_emit_epilogue_components
+ 
+ #undef TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS
+ #define TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS \
+   riscv_set_handled_components
+ 
  /* The generic ELF target does not always have TLS support.  */
  #ifdef HAVE_AS_TLS
  #undef TARGET_HAVE_TLS
*************** riscv_asan_shadow_offset (void)
*** 5746,5751 ****
--- 7310,7318 ----
  #undef TARGET_BUILTIN_DECL
  #define TARGET_BUILTIN_DECL riscv_builtin_decl
  
+ #undef TARGET_GIMPLE_FOLD_BUILTIN
+ #define TARGET_GIMPLE_FOLD_BUILTIN riscv_gimple_fold_builtin
+ 
  #undef TARGET_EXPAND_BUILTIN
  #define TARGET_EXPAND_BUILTIN riscv_expand_builtin
  
*************** riscv_asan_shadow_offset (void)
*** 5788,5793 ****
--- 7355,7379 ----
  #undef TARGET_NEW_ADDRESS_PROFITABLE_P
  #define TARGET_NEW_ADDRESS_PROFITABLE_P riscv_new_address_profitable_p
  
+ #undef TARGET_MANGLE_TYPE
+ #define TARGET_MANGLE_TYPE riscv_mangle_type
+ 
+ #undef TARGET_SCALAR_MODE_SUPPORTED_P
+ #define TARGET_SCALAR_MODE_SUPPORTED_P riscv_scalar_mode_supported_p
+ 
+ #undef TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P
+ #define TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P                                \
+   riscv_libgcc_floating_mode_supported_p
+ 
+ #undef TARGET_INIT_LIBFUNCS
+ #define TARGET_INIT_LIBFUNCS riscv_init_libfuncs
+ 
+ #undef TARGET_C_EXCESS_PRECISION
+ #define TARGET_C_EXCESS_PRECISION riscv_excess_precision
+ 
+ #undef TARGET_FLOATN_MODE
+ #define TARGET_FLOATN_MODE riscv_floatn_mode
+ 
  #undef TARGET_ASAN_SHADOW_OFFSET
  #define TARGET_ASAN_SHADOW_OFFSET riscv_asan_shadow_offset
  
*************** riscv_asan_shadow_offset (void)
*** 5796,5801 ****
--- 7382,7402 ----
  #define TARGET_DEFAULT_TARGET_FLAGS (MASK_BIG_ENDIAN)
  #endif
  
+ #undef TARGET_VECTOR_MODE_SUPPORTED_P
+ #define TARGET_VECTOR_MODE_SUPPORTED_P riscv_vector_mode_supported_p
+ 
+ #undef TARGET_VERIFY_TYPE_CONTEXT
+ #define TARGET_VERIFY_TYPE_CONTEXT riscv_verify_type_context
+ 
+ #undef TARGET_VECTOR_ALIGNMENT
+ #define TARGET_VECTOR_ALIGNMENT riscv_vector_alignment
+ 
+ #undef TARGET_DWARF_POLY_INDETERMINATE_VALUE
+ #define TARGET_DWARF_POLY_INDETERMINATE_VALUE riscv_dwarf_poly_indeterminate_value
+ 
+ #undef TARGET_ZERO_CALL_USED_REGS
+ #define TARGET_ZERO_CALL_USED_REGS riscv_zero_call_used_regs
+ 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-riscv.h"
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv.h gcc-13.1.0/gcc/config/riscv/riscv.h
*** gcc-12.2.0/gcc/config/riscv/riscv.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definition of RISC-V target for GNU compiler.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  /* Definition of RISC-V target for GNU compiler.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Andrew Waterman (andrew@sifive.com).
     Based on MIPS target for GNU compiler.
  
*************** along with GCC; see the file COPYING3.
*** 27,36 ****
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS() riscv_cpu_cpp_builtins (pfile)
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS riscv_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO riscv_d_register_target_info
- 
  #ifdef TARGET_BIG_ENDIAN_DEFAULT
  #define DEFAULT_ENDIAN_SPEC    "b"
  #else
--- 27,32 ----
*************** along with GCC; see the file COPYING3.
*** 50,60 ****
  extern const char *riscv_expand_arch (int argc, const char **argv);
  extern const char *riscv_expand_arch_from_cpu (int argc, const char **argv);
  extern const char *riscv_default_mtune (int argc, const char **argv);
  
  # define EXTRA_SPEC_FUNCTIONS						\
    { "riscv_expand_arch", riscv_expand_arch },				\
    { "riscv_expand_arch_from_cpu", riscv_expand_arch_from_cpu },		\
!   { "riscv_default_mtune", riscv_default_mtune },
  
  /* Support for a compile-time default CPU, et cetera.  The rules are:
     --with-arch is ignored if -march or -mcpu is specified.
--- 46,58 ----
  extern const char *riscv_expand_arch (int argc, const char **argv);
  extern const char *riscv_expand_arch_from_cpu (int argc, const char **argv);
  extern const char *riscv_default_mtune (int argc, const char **argv);
+ extern const char *riscv_multi_lib_check (int argc, const char **argv);
  
  # define EXTRA_SPEC_FUNCTIONS						\
    { "riscv_expand_arch", riscv_expand_arch },				\
    { "riscv_expand_arch_from_cpu", riscv_expand_arch_from_cpu },		\
!   { "riscv_default_mtune", riscv_default_mtune },			\
!   { "riscv_multi_lib_check", riscv_multi_lib_check },
  
  /* Support for a compile-time default CPU, et cetera.  The rules are:
     --with-arch is ignored if -march or -mcpu is specified.
*************** ASM_MISA_SPEC
*** 122,129 ****
  #define DWARF_CIE_DATA_ALIGNMENT -4
  
  /* The mapping from gcc register number to DWARF 2 CFA column number.  */
! #define DWARF_FRAME_REGNUM(REGNO) \
!   (GP_REG_P (REGNO) || FP_REG_P (REGNO) ? REGNO : INVALID_REGNUM)
  
  /* The DWARF 2 CFA column which tracks the return address.  */
  #define DWARF_FRAME_RETURN_COLUMN RETURN_ADDR_REGNUM
--- 120,132 ----
  #define DWARF_CIE_DATA_ALIGNMENT -4
  
  /* The mapping from gcc register number to DWARF 2 CFA column number.  */
! #define DWARF_FRAME_REGNUM(REGNO)                                              \
!   (VL_REG_P (REGNO) ? RISCV_DWARF_VL                                           \
!    : VTYPE_REG_P (REGNO)                                                       \
!      ? RISCV_DWARF_VTYPE                                                       \
!      : (GP_REG_P (REGNO) || FP_REG_P (REGNO) || V_REG_P (REGNO)                \
! 	  ? REGNO                                                              \
! 	  : INVALID_REGNUM))
  
  /* The DWARF 2 CFA column which tracks the return address.  */
  #define DWARF_FRAME_RETURN_COLUMN RETURN_ADDR_REGNUM
*************** ASM_MISA_SPEC
*** 155,160 ****
--- 158,165 ----
  
  /* The `Q' extension is not yet supported.  */
  #define UNITS_PER_FP_REG (TARGET_DOUBLE_FLOAT ? 8 : 4)
+ /* Size per vector register. For VLEN = 32, size = poly (4, 4). Otherwise, size = poly (8, 8). */
+ #define UNITS_PER_V_REG (riscv_vector_chunks * riscv_bytes_per_vector_chunk)
  
  /* The largest type that can be passed in floating-point registers.  */
  #define UNITS_PER_FP_ARG						\
*************** ASM_MISA_SPEC
*** 289,297 ****
     - 32 floating point registers
     - 2 fake registers:
  	- ARG_POINTER_REGNUM
! 	- FRAME_POINTER_REGNUM */
  
! #define FIRST_PSEUDO_REGISTER 66
  
  /* x0, sp, gp, and tp are fixed.  */
  
--- 294,306 ----
     - 32 floating point registers
     - 2 fake registers:
  	- ARG_POINTER_REGNUM
! 	- FRAME_POINTER_REGNUM
!    - 1 vl register
!    - 1 vtype register
!    - 30 unused registers for future expansion
!    - 32 vector registers  */
  
! #define FIRST_PSEUDO_REGISTER 128
  
  /* x0, sp, gp, and tp are fixed.  */
  
*************** ASM_MISA_SPEC
*** 303,309 ****
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,			\
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,			\
    /* Others.  */							\
!   1, 1									\
  }
  
  /* a0-a7, t0-t6, fa0-fa7, and ft0-ft11 are volatile across calls.
--- 312,322 ----
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,			\
    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,			\
    /* Others.  */							\
!   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,			\
!   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,			\
!   /* Vector registers.  */						\
!   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,			\
!   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0			\
  }
  
  /* a0-a7, t0-t6, fa0-fa7, and ft0-ft11 are volatile across calls.
*************** ASM_MISA_SPEC
*** 317,323 ****
    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,			\
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,			\
    /* Others.  */							\
!   1, 1									\
  }
  
  /* Select a register mode required for caller save of hard regno REGNO.
--- 330,340 ----
    1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1,			\
    1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,			\
    /* Others.  */							\
!   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,			\
!   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,			\
!   /* Vector registers.  */						\
!   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,			\
!   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1			\
  }
  
  /* Select a register mode required for caller save of hard regno REGNO.
*************** ASM_MISA_SPEC
*** 337,342 ****
--- 354,363 ----
  #define FP_REG_LAST  63
  #define FP_REG_NUM   (FP_REG_LAST - FP_REG_FIRST + 1)
  
+ #define V_REG_FIRST 96
+ #define V_REG_LAST  127
+ #define V_REG_NUM   (V_REG_LAST - V_REG_FIRST + 1)
+ 
  /* The DWARF 2 CFA column which tracks the return address from a
     signal handler context.  This means that to maintain backwards
     compatibility, no hard register can be assigned this column if it
*************** ASM_MISA_SPEC
*** 347,352 ****
--- 368,377 ----
    ((unsigned int) ((int) (REGNO) - GP_REG_FIRST) < GP_REG_NUM)
  #define FP_REG_P(REGNO)  \
    ((unsigned int) ((int) (REGNO) - FP_REG_FIRST) < FP_REG_NUM)
+ #define V_REG_P(REGNO)  \
+   ((unsigned int) ((int) (REGNO) - V_REG_FIRST) < V_REG_NUM)
+ #define VL_REG_P(REGNO) ((REGNO) == VL_REGNUM)
+ #define VTYPE_REG_P(REGNO) ((REGNO) == VTYPE_REGNUM)
  
  /* True when REGNO is in SIBCALL_REGS set.  */
  #define SIBCALL_REG_P(REGNO)	\
*************** ASM_MISA_SPEC
*** 364,369 ****
--- 389,399 ----
  #define ARG_POINTER_REGNUM 64
  #define FRAME_POINTER_REGNUM 65
  
+ /* Define Dwarf for RVV.  */
+ #define RISCV_DWARF_VL (4096 + 0xc20)
+ #define RISCV_DWARF_VTYPE (4096 + 0xc21)
+ #define RISCV_DWARF_VLENB (4096 + 0xc22)
+ 
  /* Register in which static-chain is passed to a function.  */
  #define STATIC_CHAIN_REGNUM (GP_TEMP_FIRST + 2)
  
*************** ASM_MISA_SPEC
*** 376,381 ****
--- 406,413 ----
  
  #define RISCV_PROLOGUE_TEMP_REGNUM (GP_TEMP_FIRST)
  #define RISCV_PROLOGUE_TEMP(MODE) gen_rtx_REG (MODE, RISCV_PROLOGUE_TEMP_REGNUM)
+ #define RISCV_PROLOGUE_TEMP2_REGNUM (GP_TEMP_FIRST + 1)
+ #define RISCV_PROLOGUE_TEMP2(MODE) gen_rtx_REG (MODE, RISCV_PROLOGUE_TEMP2_REGNUM)
  
  #define RISCV_CALL_ADDRESS_TEMP_REGNUM (GP_TEMP_FIRST + 1)
  #define RISCV_CALL_ADDRESS_TEMP(MODE) \
*************** enum reg_class
*** 430,435 ****
--- 462,470 ----
    GR_REGS,			/* integer registers */
    FP_REGS,			/* floating-point registers */
    FRAME_REGS,			/* arg pointer and frame pointer */
+   VM_REGS,			/* v0.t registers */
+   VD_REGS,			/* vector registers except v0.t */
+   V_REGS,			/* vector registers */
    ALL_REGS,			/* all registers */
    LIM_REG_CLASSES		/* max value + 1 */
  };
*************** enum reg_class
*** 450,455 ****
--- 485,493 ----
    "GR_REGS",								\
    "FP_REGS",								\
    "FRAME_REGS",								\
+   "VM_REGS",								\
+   "VD_REGS",								\
+   "V_REGS",								\
    "ALL_REGS"								\
  }
  
*************** enum reg_class
*** 466,478 ****
  
  #define REG_CLASS_CONTENTS						\
  {									\
!   { 0x00000000, 0x00000000, 0x00000000 },	/* NO_REGS */		\
!   { 0xf003fcc0, 0x00000000, 0x00000000 },	/* SIBCALL_REGS */	\
!   { 0xffffffc0, 0x00000000, 0x00000000 },	/* JALR_REGS */		\
!   { 0xffffffff, 0x00000000, 0x00000000 },	/* GR_REGS */		\
!   { 0x00000000, 0xffffffff, 0x00000000 },	/* FP_REGS */		\
!   { 0x00000000, 0x00000000, 0x00000003 },	/* FRAME_REGS */	\
!   { 0xffffffff, 0xffffffff, 0x00000003 }	/* ALL_REGS */		\
  }
  
  /* A C expression whose value is a register class containing hard
--- 504,519 ----
  
  #define REG_CLASS_CONTENTS						\
  {									\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000000 },	/* NO_REGS */		\
!   { 0xf003fcc0, 0x00000000, 0x00000000, 0x00000000 },	/* SIBCALL_REGS */	\
!   { 0xffffffc0, 0x00000000, 0x00000000, 0x00000000 },	/* JALR_REGS */		\
!   { 0xffffffff, 0x00000000, 0x00000000, 0x00000000 },	/* GR_REGS */		\
!   { 0x00000000, 0xffffffff, 0x00000000, 0x00000000 },	/* FP_REGS */		\
!   { 0x00000000, 0x00000000, 0x00000003, 0x00000000 },	/* FRAME_REGS */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0x00000001 },	/* V0_REGS */		\
!   { 0x00000000, 0x00000000, 0x00000000, 0xfffffffe },	/* VNoV0_REGS */	\
!   { 0x00000000, 0x00000000, 0x00000000, 0xffffffff },	/* V_REGS */		\
!   { 0xffffffff, 0xffffffff, 0x00000003, 0xffffffff }	/* ALL_REGS */		\
  }
  
  /* A C expression whose value is a register class containing hard
*************** enum reg_class
*** 512,520 ****
    60, 61, 62, 63,							\
    /* Call-saved FPRs.  */						\
    40, 41, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,			\
    /* None of the remaining classes have defined call-saved		\
       registers.  */							\
!   64, 65								\
  }
  
  /* True if VALUE is a signed 12-bit number.  */
--- 553,568 ----
    60, 61, 62, 63,							\
    /* Call-saved FPRs.  */						\
    40, 41, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59,			\
+   /* V24 ~ V31.  */							\
+   120, 121, 122, 123, 124, 125, 126, 127,				\
+   /* V8 ~ V23.  */							\
+   104, 105, 106, 107, 108, 109, 110, 111,				\
+   112, 113, 114, 115, 116, 117, 118, 119,				\
+   /* V0 ~ V7.  */							\
+   96, 97, 98, 99, 100, 101, 102, 103,					\
    /* None of the remaining classes have defined call-saved		\
       registers.  */							\
!   64, 65, 66, 67							\
  }
  
  /* True if VALUE is a signed 12-bit number.  */
*************** enum reg_class
*** 522,527 ****
--- 570,579 ----
  #define SMALL_OPERAND(VALUE) \
    ((unsigned HOST_WIDE_INT) (VALUE) + IMM_REACH/2 < IMM_REACH)
  
+ #define POLY_SMALL_OPERAND_P(POLY_VALUE)		\
+   (POLY_VALUE.is_constant () ?				\
+      SMALL_OPERAND (POLY_VALUE.to_constant ()) : false)
+      
  /* True if VALUE can be loaded into a register using LUI.  */
  
  #define LUI_OPERAND(VALUE)						\
*************** enum reg_class
*** 531,537 ****
  /* If this is a single bit mask, then we can load it with bseti.  Special
     handling of SImode 0x80000000 on RV64 is done in riscv_build_integer_1. */
  #define SINGLE_BIT_MASK_OPERAND(VALUE)					\
!   (pow2p_hwi (VALUE))
  
  /* Stack layout; function entry, exit and calling.  */
  
--- 583,599 ----
  /* If this is a single bit mask, then we can load it with bseti.  Special
     handling of SImode 0x80000000 on RV64 is done in riscv_build_integer_1. */
  #define SINGLE_BIT_MASK_OPERAND(VALUE)					\
!   (pow2p_hwi (TARGET_64BIT						\
! 		? (VALUE)						\
! 		: ((VALUE) & ((HOST_WIDE_INT_1U << 32)-1))))
! 
! /* True if VALUE can be represented as an immediate with 1 extra bit
!    set: we check that it is not a SMALL_OPERAND (as this would be true
!    for all small operands) unmodified and turns into a small operand
!    once we clear the top bit. */
! #define UIMM_EXTRA_BIT_OPERAND(VALUE)					\
!   (!SMALL_OPERAND (VALUE)						\
!    && SMALL_OPERAND (VALUE & ~(HOST_WIDE_INT_1U << floor_log2 (VALUE))))
  
  /* Stack layout; function entry, exit and calling.  */
  
*************** typedef struct {
*** 692,709 ****
  #define CASE_VECTOR_MODE SImode
  #define CASE_VECTOR_PC_RELATIVE (riscv_cmodel != CM_MEDLOW)
  
  /* The load-address macro is used for PC-relative addressing of symbols
     that bind locally.  Don't use it for symbols that should be addressed
     via the GOT.  Also, avoid it for CM_MEDLOW, where LUI addressing
     currently results in more opportunities for linker relaxation.  */
  #define USE_LOAD_ADDRESS_MACRO(sym)					\
    (!TARGET_EXPLICIT_RELOCS &&						\
!    ((flag_pic								\
!      && ((SYMBOL_REF_P (sym) && SYMBOL_REF_LOCAL_P (sym))		\
! 	 || ((GET_CODE (sym) == CONST)					\
! 	     && SYMBOL_REF_P (XEXP (XEXP (sym, 0),0))			\
! 	     && SYMBOL_REF_LOCAL_P (XEXP (XEXP (sym, 0),0)))))		\
!      || riscv_cmodel == CM_MEDANY))
  
  /* Define this as 1 if `char' should by default be signed; else as 0.  */
  #define DEFAULT_SIGNED_CHAR 0
--- 754,772 ----
  #define CASE_VECTOR_MODE SImode
  #define CASE_VECTOR_PC_RELATIVE (riscv_cmodel != CM_MEDLOW)
  
+ #define LOCAL_SYM_P(sym)						\
+      ((SYMBOL_REF_P (sym) && SYMBOL_REF_LOCAL_P (sym))			\
+ 	 || ((GET_CODE (sym) == CONST)					\
+ 	     && SYMBOL_REF_P (XEXP (XEXP (sym, 0),0))			\
+ 	     && SYMBOL_REF_LOCAL_P (XEXP (XEXP (sym, 0),0))))
+ 
  /* The load-address macro is used for PC-relative addressing of symbols
     that bind locally.  Don't use it for symbols that should be addressed
     via the GOT.  Also, avoid it for CM_MEDLOW, where LUI addressing
     currently results in more opportunities for linker relaxation.  */
  #define USE_LOAD_ADDRESS_MACRO(sym)					\
    (!TARGET_EXPLICIT_RELOCS &&						\
!    ((flag_pic && LOCAL_SYM_P (sym)) || riscv_cmodel == CM_MEDANY))
  
  /* Define this as 1 if `char' should by default be signed; else as 0.  */
  #define DEFAULT_SIGNED_CHAR 0
*************** typedef struct {
*** 777,783 ****
    "fs0", "fs1", "fa0", "fa1", "fa2", "fa3", "fa4", "fa5",	\
    "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",	\
    "fs8", "fs9", "fs10","fs11","ft8", "ft9", "ft10","ft11",	\
!   "arg", "frame", }
  
  #define ADDITIONAL_REGISTER_NAMES					\
  {									\
--- 840,853 ----
    "fs0", "fs1", "fa0", "fa1", "fa2", "fa3", "fa4", "fa5",	\
    "fa6", "fa7", "fs2", "fs3", "fs4", "fs5", "fs6", "fs7",	\
    "fs8", "fs9", "fs10","fs11","ft8", "ft9", "ft10","ft11",	\
!   "arg", "frame", "vl", "vtype", "N/A", "N/A", "N/A", "N/A",    \
!   "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A",	\
!   "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A",	\
!   "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A", "N/A",	\
!   "v0",  "v1",  "v2",  "v3",  "v4",  "v5",  "v6",  "v7",	\
!   "v8",  "v9",  "v10", "v11", "v12", "v13", "v14", "v15",	\
!   "v16", "v17", "v18", "v19", "v20", "v21", "v22", "v23",	\
!   "v24", "v25", "v26", "v27", "v28", "v29", "v30", "v31",}
  
  #define ADDITIONAL_REGISTER_NAMES					\
  {									\
*************** while (0)
*** 952,957 ****
--- 1022,1035 ----
  extern const enum reg_class riscv_regno_to_class[];
  extern bool riscv_slow_unaligned_access_p;
  extern unsigned riscv_stack_boundary;
+ extern unsigned riscv_bytes_per_vector_chunk;
+ extern poly_uint16 riscv_vector_chunks;
+ extern poly_int64 riscv_v_adjust_nunits (enum machine_mode, int);
+ extern poly_int64 riscv_v_adjust_precision (enum machine_mode, int);
+ extern poly_int64 riscv_v_adjust_bytesize (enum machine_mode, int);
+ /* The number of bits and bytes in a RVV vector.  */
+ #define BITS_PER_RISCV_VECTOR (poly_uint16 (riscv_vector_chunks * riscv_bytes_per_vector_chunk * 8))
+ #define BYTES_PER_RISCV_VECTOR (poly_uint16 (riscv_vector_chunks * riscv_bytes_per_vector_chunk))
  #endif
  
  #define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
*************** extern void riscv_remove_unneeded_save_r
*** 1006,1009 ****
--- 1084,1100 ----
  #define CTZ_DEFINED_VALUE_AT_ZERO(MODE, VALUE) \
    ((VALUE) = GET_MODE_UNIT_BITSIZE (MODE), 2)
  
+ #define TARGET_SUPPORTS_WIDE_INT 1
+ 
+ #define REGISTER_TARGET_PRAGMAS() riscv_register_pragmas ()
+ 
+ #define REGMODE_NATURAL_SIZE(MODE) riscv_regmode_natural_size (MODE)
+ 
+ #define RISCV_DWARF_VLENB (4096 + 0xc22)
+ 
+ #define DWARF_FRAME_REGISTERS (FIRST_PSEUDO_REGISTER + 1 /* VLENB */)
+ 
+ #define DWARF_REG_TO_UNWIND_COLUMN(REGNO) \
+   ((REGNO == RISCV_DWARF_VLENB) ? (FIRST_PSEUDO_REGISTER + 1) : REGNO)
+ 
  #endif /* ! GCC_RISCV_H */
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv.md gcc-13.1.0/gcc/config/riscv/riscv.md
*** gcc-12.2.0/gcc/config/riscv/riscv.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for RISC-V for GNU compiler.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  ;; Machine description for RISC-V for GNU compiler.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  
***************
*** 19,24 ****
--- 19,39 ----
  ;; along with GCC; see the file COPYING3.  If not see
  ;; <http://www.gnu.org/licenses/>.
  
+ 
+ ;; Keep this list and the one above riscv_print_operand in sync.
+ ;; The special asm out single letter directives following a '%' are:
+ ;; h -- Print the high-part relocation associated with OP, after stripping
+ ;;	  any outermost HIGH.
+ ;; R -- Print the low-part relocation associated with OP.
+ ;; C -- Print the integer branch condition for comparison OP.
+ ;; A -- Print the atomic operation suffix for memory model OP.
+ ;; F -- Print a FENCE if the memory model requires a release.
+ ;; z -- Print x0 if OP is zero, otherwise print OP normally.
+ ;; i -- Print i if the operand is not a register.
+ ;; S -- Print shift-index of single-bit mask OP.
+ ;; T -- Print shift-index of inverted single-bit mask OP.
+ ;; ~ -- Print w if TARGET_64BIT is true; otherwise not print anything.
+ 
  (define_c_enum "unspec" [
    ;; Override return address for exception handling.
    UNSPEC_EH_RETURN
***************
*** 42,50 ****
--- 57,70 ----
    UNSPEC_COPYSIGN
    UNSPEC_LRINT
    UNSPEC_LROUND
+   UNSPEC_FMIN
+   UNSPEC_FMAX
  
    ;; Stack tie
    UNSPEC_TIE
+ 
+   ;; OR-COMBINE
+   UNSPEC_ORC_B
  ])
  
  (define_c_enum "unspecv" [
***************
*** 55,60 ****
--- 75,81 ----
    ;; Floating-point unspecs.
    UNSPECV_FRFLAGS
    UNSPECV_FSFLAGS
+   UNSPECV_FSNVSNAN
  
    ;; Interrupt handler instructions.
    UNSPECV_MRET
***************
*** 69,74 ****
--- 90,109 ----
    ;; Stack Smash Protector
    UNSPEC_SSP_SET
    UNSPEC_SSP_TEST
+ 
+   ;; CMO instructions.
+   UNSPECV_CLEAN
+   UNSPECV_FLUSH
+   UNSPECV_INVAL
+   UNSPECV_ZERO
+   UNSPECV_PREI
+ 
+   ;; Zihintpause unspec
+   UNSPECV_PAUSE
+ 
+   ;; XTheadFmv unspec
+   UNSPEC_XTHEADFMV
+   UNSPEC_XTHEADFMV_HW
  ])
  
  (define_constants
***************
*** 93,102 ****
--- 128,140 ----
     (NORMAL_RETURN		0)
     (SIBCALL_RETURN		1)
     (EXCEPTION_RETURN		2)
+    (VL_REGNUM			66)
+    (VTYPE_REGNUM		67)
  ])
  
  (include "predicates.md")
  (include "constraints.md")
+ (include "iterators.md")
  
  ;; ....................
  ;;
***************
*** 120,130 ****
  ;; scheduling type to be "multi" instead.
  (define_attr "move_type"
    "unknown,load,fpload,store,fpstore,mtc,mfc,move,fmove,
!    const,logical,arith,andi,shift_shift"
    (const_string "unknown"))
  
  ;; Main data type used by the insn
! (define_attr "mode" "unknown,none,QI,HI,SI,DI,TI,SF,DF,TF"
    (const_string "unknown"))
  
  ;; True if the main data type is twice the size of a word.
--- 158,175 ----
  ;; scheduling type to be "multi" instead.
  (define_attr "move_type"
    "unknown,load,fpload,store,fpstore,mtc,mfc,move,fmove,
!    const,logical,arith,andi,shift_shift,rdvlenb"
    (const_string "unknown"))
  
  ;; Main data type used by the insn
! (define_attr "mode" "unknown,none,QI,HI,SI,DI,TI,HF,SF,DF,TF,
!   VNx1BI,VNx2BI,VNx4BI,VNx8BI,VNx16BI,VNx32BI,VNx64BI,
!   VNx1QI,VNx2QI,VNx4QI,VNx8QI,VNx16QI,VNx32QI,VNx64QI,
!   VNx1HI,VNx2HI,VNx4HI,VNx8HI,VNx16HI,VNx32HI,
!   VNx1SI,VNx2SI,VNx4SI,VNx8SI,VNx16SI,
!   VNx1DI,VNx2DI,VNx4DI,VNx8DI,
!   VNx1SF,VNx2SF,VNx4SF,VNx8SF,VNx16SF,
!   VNx1DF,VNx2DF,VNx4DF,VNx8DF"
    (const_string "unknown"))
  
  ;; True if the main data type is twice the size of a word.
***************
*** 138,143 ****
--- 183,217 ----
  	 (const_string "yes")]
  	(const_string "no")))
  
+ ;; ISA attributes.
+ (define_attr "ext" "base,f,d,vector"
+   (const_string "base"))
+ 
+ ;; True if the extension is enabled.
+ (define_attr "ext_enabled" "no,yes"
+   (cond [(eq_attr "ext" "base")
+ 	 (const_string "yes")
+ 	
+ 	 (and (eq_attr "ext" "f")
+ 	      (match_test "TARGET_HARD_FLOAT"))
+ 	 (const_string "yes")
+ 
+ 	 (and (eq_attr "ext" "d")
+ 	      (match_test "TARGET_DOUBLE_FLOAT"))
+ 	 (const_string "yes")
+ 
+ 	 (and (eq_attr "ext" "vector")
+ 	      (match_test "TARGET_VECTOR"))
+ 	 (const_string "yes")
+ 	]
+ 	(const_string "no")))
+ 
+ ;; Attribute to control enable or disable instructions.
+ (define_attr "enabled" "no,yes"
+   (cond [(eq_attr "ext_enabled" "no")
+ 	 (const_string "no")]
+ 	(const_string "yes")))
+ 
  ;; Classification of each insn.
  ;; branch	conditional branch
  ;; jump		unconditional jump
***************
*** 150,156 ****
  ;; mfc		transfer from coprocessor
  ;; const	load constant
  ;; arith	integer arithmetic instructions
- ;; auipc	integer addition to PC
  ;; logical      integer logical instructions
  ;; shift	integer shift instructions
  ;; slt		set less than instructions
--- 224,229 ----
***************
*** 166,178 ****
  ;; fcvt		floating point convert
  ;; fsqrt	floating point square root
  ;; multi	multiword sequence (or user asm statements)
  ;; nop		no operation
  ;; ghost	an instruction that produces no real code
  ;; bitmanip	bit manipulation instructions
  (define_attr "type"
    "unknown,branch,jump,call,load,fpload,store,fpstore,
     mtc,mfc,const,arith,logical,shift,slt,imul,idiv,move,fmove,fadd,fmul,
!    fmadd,fdiv,fcmp,fcvt,fsqrt,multi,auipc,sfb_alu,nop,ghost,bitmanip,rotate"
    (cond [(eq_attr "got" "load") (const_string "load")
  
  	 ;; If a doubleword move uses these expensive instructions,
--- 239,362 ----
  ;; fcvt		floating point convert
  ;; fsqrt	floating point square root
  ;; multi	multiword sequence (or user asm statements)
+ ;; auipc	integer addition to PC
+ ;; sfb_alu  SFB ALU instruction
  ;; nop		no operation
  ;; ghost	an instruction that produces no real code
  ;; bitmanip	bit manipulation instructions
+ ;; rotate   rotation instructions
+ ;; atomic   atomic instructions
+ ;; condmove	conditional moves
+ ;; crypto cryptography instructions
+ ;; Classification of RVV instructions which will be added to each RVV .md pattern and used by scheduler.
+ ;; rdvlenb     vector byte length vlenb csrr read
+ ;; rdvl        vector length vl csrr read
+ ;; vsetvl      vector configuration-setting instrucions
+ ;; 7. Vector Loads and Stores
+ ;; vlde        vector unit-stride load instructions
+ ;; vste        vector unit-stride store instructions
+ ;; vldm        vector unit-stride mask load instructions
+ ;; vstm        vector unit-stride mask store instructions
+ ;; vlds        vector strided load instructions
+ ;; vsts        vector strided store instructions
+ ;; vldux       vector unordered indexed load instructions
+ ;; vldox       vector ordered indexed load instructions
+ ;; vstux       vector unordered indexed store instructions
+ ;; vstox       vector ordered indexed store instructions
+ ;; vldff       vector unit-stride fault-only-first load instructions
+ ;; vldr        vector whole register load instructions
+ ;; vstr        vector whole register store instructions
+ ;; 11. Vector integer arithmetic instructions
+ ;; vialu       vector single-width integer add and subtract and logical nstructions
+ ;; viwalu      vector widening integer add/subtract
+ ;; vext        vector integer extension
+ ;; vicalu      vector arithmetic with carry or borrow instructions
+ ;; vshift      vector single-width bit shift instructions
+ ;; vnshift     vector narrowing integer shift instructions
+ ;; viminmax    vector integer min/max instructions
+ ;; vicmp       vector integer comparison instructions
+ ;; vimul       vector single-width integer multiply instructions
+ ;; vidiv       vector single-width integer divide instructions
+ ;; viwmul      vector widening integer multiply instructions
+ ;; vimuladd    vector single-width integer multiply-add instructions
+ ;; viwmuladd   vector widening integer multiply-add instructions
+ ;; vimerge     vector integer merge instructions
+ ;; vimov       vector integer move vector instructions
+ ;; 12. Vector fixed-point arithmetic instructions
+ ;; vsalu       vector single-width saturating add and subtract and logical instructions
+ ;; vaalu       vector single-width averaging add and subtract and logical instructions
+ ;; vsmul       vector single-width fractional multiply with rounding and saturation instructions
+ ;; vsshift     vector single-width scaling shift instructions
+ ;; vnclip      vector narrowing fixed-point clip instructions
+ ;; 13. Vector floating-point instructions
+ ;; vfalu       vector single-width floating-point add/subtract instructions
+ ;; vfwalu      vector widening floating-point add/subtract instructions
+ ;; vfmul       vector single-width floating-point multiply instructions
+ ;; vfdiv       vector single-width floating-point divide instructions
+ ;; vfwmul      vector widening floating-point multiply instructions
+ ;; vfmuladd    vector single-width floating-point multiply-add instructions
+ ;; vfwmuladd   vector widening floating-point multiply-add instructions
+ ;; vfsqrt      vector floating-point square-root instructions
+ ;; vfrecp      vector floating-point reciprocal square-root instructions
+ ;; vfminmax    vector floating-point min/max instructions
+ ;; vfcmp       vector floating-point comparison instructions
+ ;; vfsgnj      vector floating-point sign-injection instructions
+ ;; vfclass     vector floating-point classify instruction
+ ;; vfmerge     vector floating-point merge instruction
+ ;; vfmov       vector floating-point move instruction
+ ;; vfcvtitof   vector single-width integer to floating-point instruction
+ ;; vfcvtftoi   vector single-width floating-point to integer instruction
+ ;; vfwcvtitof  vector widening integer to floating-point instruction
+ ;; vfwcvtftoi  vector widening floating-point to integer instruction
+ ;; vfwcvtftof  vector widening floating-point to floating-point instruction
+ ;; vfncvtitof  vector narrowing integer to floating-point instruction
+ ;; vfncvtftoi  vector narrowing floating-point to integer instruction
+ ;; vfncvtftof  vector narrowing floating-point to floating-point instruction
+ ;; 14. Vector reduction operations
+ ;; vired       vector single-width integer reduction instructions
+ ;; viwred      vector widening integer reduction instructions
+ ;; vfredu      vector single-width floating-point un-ordered reduction instruction
+ ;; vfredo      vector single-width floating-point ordered reduction instruction
+ ;; vfwredu     vector widening floating-point un-ordered reduction instruction
+ ;; vfwredo     vector widening floating-point ordered reduction instruction
+ ;; 15. Vector mask instructions
+ ;; vmalu       vector mask-register logical instructions
+ ;; vmpop       vector mask population count
+ ;; vmffs       vector find-first-set mask bit
+ ;; vmsfs       vector set mask bit
+ ;; vmiota      vector iota
+ ;; vmidx       vector element index instruction
+ ;; 16. Vector permutation instructions
+ ;; vimovvx      integer scalar move instructions
+ ;; vimovxv      integer scalar move instructions
+ ;; vfmovvf      floating-point scalar move instructions
+ ;; vfmovfv      floating-point scalar move instructions
+ ;; vslideup     vector slide instructions
+ ;; vslidedown   vector slide instructions
+ ;; vislide1up   vector slide instructions
+ ;; vislide1down vector slide instructions
+ ;; vfslide1up   vector slide instructions
+ ;; vfslide1down vector slide instructions
+ ;; vgather      vector register gather instructions
+ ;; vcompress    vector compress instruction
+ ;; vmov         whole vector register move
  (define_attr "type"
    "unknown,branch,jump,call,load,fpload,store,fpstore,
     mtc,mfc,const,arith,logical,shift,slt,imul,idiv,move,fmove,fadd,fmul,
!    fmadd,fdiv,fcmp,fcvt,fsqrt,multi,auipc,sfb_alu,nop,ghost,bitmanip,rotate,
!    atomic,condmove,crypto,rdvlenb,rdvl,vsetvl,vlde,vste,vldm,vstm,vlds,vsts,
!    vldux,vldox,vstux,vstox,vldff,vldr,vstr,
!    vialu,viwalu,vext,vicalu,vshift,vnshift,vicmp,viminmax,
!    vimul,vidiv,viwmul,vimuladd,viwmuladd,vimerge,vimov,
!    vsalu,vaalu,vsmul,vsshift,vnclip,
!    vfalu,vfwalu,vfmul,vfdiv,vfwmul,vfmuladd,vfwmuladd,vfsqrt,vfrecp,
!    vfcmp,vfminmax,vfsgnj,vfclass,vfmerge,vfmov,
!    vfcvtitof,vfcvtftoi,vfwcvtitof,vfwcvtftoi,
!    vfwcvtftof,vfncvtitof,vfncvtftoi,vfncvtftof,
!    vired,viwred,vfredu,vfredo,vfwredu,vfwredo,
!    vmalu,vmpop,vmffs,vmsfs,vmiota,vmidx,vimovvx,vimovxv,vfmovvf,vfmovfv,
!    vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,
!    vgather,vcompress,vmov"
    (cond [(eq_attr "got" "load") (const_string "load")
  
  	 ;; If a doubleword move uses these expensive instructions,
***************
*** 200,206 ****
  	      (eq_attr "dword_mode" "yes"))
  	   (const_string "multi")
  	 (eq_attr "move_type" "move") (const_string "move")
! 	 (eq_attr "move_type" "const") (const_string "const")]
  	(const_string "unknown")))
  
  ;; Length of instruction in bytes.
--- 384,391 ----
  	      (eq_attr "dword_mode" "yes"))
  	   (const_string "multi")
  	 (eq_attr "move_type" "move") (const_string "move")
! 	 (eq_attr "move_type" "const") (const_string "const")
! 	 (eq_attr "move_type" "rdvlenb") (const_string "rdvlenb")]
  	(const_string "unknown")))
  
  ;; Length of instruction in bytes.
***************
*** 222,229 ****
  
  	  (eq_attr "got" "load") (const_int 8)
  
- 	  (eq_attr "type" "fcmp") (const_int 8)
- 
  	  ;; SHIFT_SHIFTs are decomposed into two separate instructions.
  	  (eq_attr "move_type" "shift_shift")
  		(const_int 8)
--- 407,412 ----
***************
*** 261,433 ****
  (define_asm_attributes
    [(set_attr "type" "multi")])
  
- ;; This mode iterator allows 32-bit and 64-bit GPR patterns to be generated
- ;; from the same template.
- (define_mode_iterator GPR [SI (DI "TARGET_64BIT")])
- 
- ;; This mode iterator allows :P to be used for patterns that operate on
- ;; pointer-sized quantities.  Exactly one of the two alternatives will match.
- (define_mode_iterator P [(SI "Pmode == SImode") (DI "Pmode == DImode")])
- 
- ;; Likewise, but for XLEN-sized quantities.
- (define_mode_iterator X [(SI "!TARGET_64BIT") (DI "TARGET_64BIT")])
- 
- ;; Branches operate on XLEN-sized quantities, but for RV64 we accept
- ;; QImode values so we can force zero-extension.
- (define_mode_iterator BR [(QI "TARGET_64BIT") SI (DI "TARGET_64BIT")])
- 
- ;; 32-bit moves for which we provide move patterns.
- (define_mode_iterator MOVE32 [SI])
- 
- ;; 64-bit modes for which we provide move patterns.
- (define_mode_iterator MOVE64 [DI DF])
- 
- ;; Iterator for sub-32-bit integer modes.
- (define_mode_iterator SHORT [QI HI])
- 
- ;; Iterator for HImode constant generation.
- (define_mode_iterator HISI [HI SI])
- 
- ;; Iterator for QImode extension patterns.
- (define_mode_iterator SUPERQI [HI SI (DI "TARGET_64BIT")])
- 
- ;; Iterator for hardware integer modes narrower than XLEN.
- (define_mode_iterator SUBX [QI HI (SI "TARGET_64BIT")])
- 
- ;; Iterator for hardware-supported integer modes.
- (define_mode_iterator ANYI [QI HI SI (DI "TARGET_64BIT")])
- 
- ;; Iterator for hardware-supported floating-point modes.
- (define_mode_iterator ANYF [(SF "TARGET_HARD_FLOAT")
- 			    (DF "TARGET_DOUBLE_FLOAT")])
- 
- ;; Iterator for floating-point modes that can be loaded into X registers.
- (define_mode_iterator SOFTF [SF (DF "TARGET_64BIT")])
- 
- ;; This attribute gives the length suffix for a sign- or zero-extension
- ;; instruction.
- (define_mode_attr size [(QI "b") (HI "h")])
- 
- ;; Mode attributes for loads.
- (define_mode_attr load [(QI "lb") (HI "lh") (SI "lw") (DI "ld") (SF "flw") (DF "fld")])
- 
- ;; Instruction names for integer loads that aren't explicitly sign or zero
- ;; extended.  See riscv_output_move and LOAD_EXTEND_OP.
- (define_mode_attr default_load [(QI "lbu") (HI "lhu") (SI "lw") (DI "ld")])
- 
- ;; Mode attribute for FP loads into integer registers.
- (define_mode_attr softload [(SF "lw") (DF "ld")])
- 
- ;; Instruction names for stores.
- (define_mode_attr store [(QI "sb") (HI "sh") (SI "sw") (DI "sd") (SF "fsw") (DF "fsd")])
- 
- ;; Instruction names for FP stores from integer registers.
- (define_mode_attr softstore [(SF "sw") (DF "sd")])
- 
- ;; This attribute gives the best constraint to use for registers of
- ;; a given mode.
- (define_mode_attr reg [(SI "d") (DI "d") (CC "d")])
- 
- ;; This attribute gives the format suffix for floating-point operations.
- (define_mode_attr fmt [(SF "s") (DF "d")])
- 
- ;; This attribute gives the integer suffix for floating-point conversions.
- (define_mode_attr ifmt [(SI "w") (DI "l")])
- 
- ;; This attribute gives the format suffix for atomic memory operations.
- (define_mode_attr amo [(SI "w") (DI "d")])
- 
- ;; This attribute gives the upper-case mode name for one unit of a
- ;; floating-point mode.
- (define_mode_attr UNITMODE [(SF "SF") (DF "DF")])
- 
- ;; This attribute gives the integer mode that has half the size of
- ;; the controlling mode.
- (define_mode_attr HALFMODE [(DF "SI") (DI "SI") (TF "DI")])
- 
- ;; Iterator and attributes for floating-point rounding instructions.
- (define_int_iterator RINT [UNSPEC_LRINT UNSPEC_LROUND])
- (define_int_attr rint_pattern [(UNSPEC_LRINT "rint") (UNSPEC_LROUND "round")])
- (define_int_attr rint_rm [(UNSPEC_LRINT "dyn") (UNSPEC_LROUND "rmm")])
- 
- ;; Iterator and attributes for quiet comparisons.
- (define_int_iterator QUIET_COMPARISON [UNSPEC_FLT_QUIET UNSPEC_FLE_QUIET])
- (define_int_attr quiet_pattern [(UNSPEC_FLT_QUIET "lt") (UNSPEC_FLE_QUIET "le")])
- 
- ;; This code iterator allows signed and unsigned widening multiplications
- ;; to use the same template.
- (define_code_iterator any_extend [sign_extend zero_extend])
- 
- ;; This code iterator allows the two right shift instructions to be
- ;; generated from the same template.
- (define_code_iterator any_shiftrt [ashiftrt lshiftrt])
- 
- ;; This code iterator allows the three shift instructions to be generated
- ;; from the same template.
- (define_code_iterator any_shift [ashift ashiftrt lshiftrt])
- 
- ;; This code iterator allows the three bitwise instructions to be generated
- ;; from the same template.
- (define_code_iterator any_bitwise [and ior xor])
- 
- ;; This code iterator allows unsigned and signed division to be generated
- ;; from the same template.
- (define_code_iterator any_div [div udiv mod umod])
- 
- ;; This code iterator allows unsigned and signed modulus to be generated
- ;; from the same template.
- (define_code_iterator any_mod [mod umod])
- 
- ;; These code iterators allow the signed and unsigned scc operations to use
- ;; the same template.
- (define_code_iterator any_gt [gt gtu])
- (define_code_iterator any_ge [ge geu])
- (define_code_iterator any_lt [lt ltu])
- (define_code_iterator any_le [le leu])
- 
- ;; <u> expands to an empty string when doing a signed operation and
- ;; "u" when doing an unsigned operation.
- (define_code_attr u [(sign_extend "") (zero_extend "u")
- 		     (gt "") (gtu "u")
- 		     (ge "") (geu "u")
- 		     (lt "") (ltu "u")
- 		     (le "") (leu "u")])
- 
- ;; <su> is like <u>, but the signed form expands to "s" rather than "".
- (define_code_attr su [(sign_extend "s") (zero_extend "u")])
- 
- ;; <optab> expands to the name of the optab for a particular code.
- (define_code_attr optab [(ashift "ashl")
- 			 (ashiftrt "ashr")
- 			 (lshiftrt "lshr")
- 			 (div "div")
- 			 (mod "mod")
- 			 (udiv "udiv")
- 			 (umod "umod")
- 			 (ge "ge")
- 			 (le "le")
- 			 (gt "gt")
- 			 (lt "lt")
- 			 (ior "ior")
- 			 (xor "xor")
- 			 (and "and")
- 			 (plus "add")
- 			 (minus "sub")])
- 
- ;; <insn> expands to the name of the insn that implements a particular code.
- (define_code_attr insn [(ashift "sll")
- 			(ashiftrt "sra")
- 			(lshiftrt "srl")
- 			(div "div")
- 			(mod "rem")
- 			(udiv "divu")
- 			(umod "remu")
- 			(ior "or")
- 			(xor "xor")
- 			(and "and")
- 			(plus "add")
- 			(minus "sub")])
- 
  ;; Ghost instructions produce no real code and introduce no hazards.
  ;; They exist purely to express an effect on dataflow.
  (define_insn_reservation "ghost" 0
--- 444,449 ----
***************
*** 446,452 ****
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(plus:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		   (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fadd.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fadd")
     (set_attr "mode" "<UNITMODE>")])
--- 462,468 ----
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(plus:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		   (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fadd.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 456,462 ****
  	(plus:SI (match_operand:SI 1 "register_operand" " r,r")
  		 (match_operand:SI 2 "arith_operand"    " r,I")))]
    ""
!   { return TARGET_64BIT ? "add%i2w\t%0,%1,%2" : "add%i2\t%0,%1,%2"; }
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
  
--- 472,478 ----
  	(plus:SI (match_operand:SI 1 "register_operand" " r,r")
  		 (match_operand:SI 2 "arith_operand"    " r,I")))]
    ""
!   "add%i2%~\t%0,%1,%2"
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
  
***************
*** 577,583 ****
    [(set (match_operand:ANYF             0 "register_operand" "=f")
  	(minus:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		    (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fsub.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fadd")
     (set_attr "mode" "<UNITMODE>")])
--- 593,599 ----
    [(set (match_operand:ANYF             0 "register_operand" "=f")
  	(minus:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		    (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fsub.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 596,602 ****
  	(minus:SI (match_operand:SI 1 "reg_or_0_operand" " rJ")
  		  (match_operand:SI 2 "register_operand" "  r")))]
    ""
!   { return TARGET_64BIT ? "subw\t%0,%z1,%2" : "sub\t%0,%z1,%2"; }
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
  
--- 612,618 ----
  	(minus:SI (match_operand:SI 1 "reg_or_0_operand" " rJ")
  		  (match_operand:SI 2 "register_operand" "  r")))]
    ""
!   "sub%~\t%0,%z1,%2"
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
  
***************
*** 712,718 ****
    [(set (match_operand:SI         0 "register_operand" "=r")
  	(neg:SI (match_operand:SI 1 "register_operand" " r")))]
    ""
!   { return TARGET_64BIT ? "negw\t%0,%1" : "neg\t%0,%1"; }
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
  
--- 728,734 ----
    [(set (match_operand:SI         0 "register_operand" "=r")
  	(neg:SI (match_operand:SI 1 "register_operand" " r")))]
    ""
!   "neg%~\t%0,%1"
    [(set_attr "type" "arith")
     (set_attr "mode" "SI")])
  
***************
*** 747,753 ****
    [(set (match_operand:ANYF               0 "register_operand" "=f")
  	(mult:ANYF (match_operand:ANYF    1 "register_operand" " f")
  		      (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fmul.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmul")
     (set_attr "mode" "<UNITMODE>")])
--- 763,769 ----
    [(set (match_operand:ANYF               0 "register_operand" "=f")
  	(mult:ANYF (match_operand:ANYF    1 "register_operand" " f")
  		      (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT  || TARGET_ZFINX"
    "fmul.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmul")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 756,763 ****
    [(set (match_operand:SI          0 "register_operand" "=r")
  	(mult:SI (match_operand:SI 1 "register_operand" " r")
  		 (match_operand:SI 2 "register_operand" " r")))]
!   "TARGET_MUL"
!   { return TARGET_64BIT ? "mulw\t%0,%1,%2" : "mul\t%0,%1,%2"; }
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
  
--- 772,779 ----
    [(set (match_operand:SI          0 "register_operand" "=r")
  	(mult:SI (match_operand:SI 1 "register_operand" " r")
  		 (match_operand:SI 2 "register_operand" " r")))]
!   "TARGET_ZMMUL || TARGET_MUL"
!   "mul%~\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
  
***************
*** 765,771 ****
    [(set (match_operand:DI          0 "register_operand" "=r")
  	(mult:DI (match_operand:DI 1 "register_operand" " r")
  		 (match_operand:DI 2 "register_operand" " r")))]
!   "TARGET_MUL && TARGET_64BIT"
    "mul\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "DI")])
--- 781,787 ----
    [(set (match_operand:DI          0 "register_operand" "=r")
  	(mult:DI (match_operand:DI 1 "register_operand" " r")
  		 (match_operand:DI 2 "register_operand" " r")))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
    "mul\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "DI")])
***************
*** 775,781 ****
  	(mult:GPR (match_operand:GPR 1 "register_operand" " r")
  		  (match_operand:GPR 2 "register_operand" " r")))
     (label_ref (match_operand 3 "" ""))]
!   "TARGET_MUL"
  {
    if (TARGET_64BIT && <MODE>mode == SImode)
      {
--- 791,797 ----
  	(mult:GPR (match_operand:GPR 1 "register_operand" " r")
  		  (match_operand:GPR 2 "register_operand" " r")))
     (label_ref (match_operand 3 "" ""))]
!   "TARGET_ZMMUL || TARGET_MUL"
  {
    if (TARGET_64BIT && <MODE>mode == SImode)
      {
***************
*** 820,826 ****
  	(mult:GPR (match_operand:GPR 1 "register_operand" " r")
  		  (match_operand:GPR 2 "register_operand" " r")))
     (label_ref (match_operand 3 "" ""))]
!   "TARGET_MUL"
  {
    if (TARGET_64BIT && <MODE>mode == SImode)
      {
--- 836,842 ----
  	(mult:GPR (match_operand:GPR 1 "register_operand" " r")
  		  (match_operand:GPR 2 "register_operand" " r")))
     (label_ref (match_operand 3 "" ""))]
!   "TARGET_ZMMUL || TARGET_MUL"
  {
    if (TARGET_64BIT && <MODE>mode == SImode)
      {
***************
*** 866,872 ****
  	(sign_extend:DI
  	    (mult:SI (match_operand:SI 1 "register_operand" " r")
  		     (match_operand:SI 2 "register_operand" " r"))))]
!   "TARGET_MUL && TARGET_64BIT"
    "mulw\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
--- 882,888 ----
  	(sign_extend:DI
  	    (mult:SI (match_operand:SI 1 "register_operand" " r")
  		     (match_operand:SI 2 "register_operand" " r"))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
    "mulw\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
***************
*** 877,883 ****
  	  (match_operator:SI 3 "subreg_lowpart_operator"
  	    [(mult:DI (match_operand:DI 1 "register_operand" " r")
  		      (match_operand:DI 2 "register_operand" " r"))])))]
!   "TARGET_MUL && TARGET_64BIT"
    "mulw\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
--- 893,899 ----
  	  (match_operator:SI 3 "subreg_lowpart_operator"
  	    [(mult:DI (match_operand:DI 1 "register_operand" " r")
  		      (match_operand:DI 2 "register_operand" " r"))])))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
    "mulw\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
***************
*** 895,901 ****
    [(set (match_operand:TI                         0 "register_operand")
  	(mult:TI (any_extend:TI (match_operand:DI 1 "register_operand"))
  		 (any_extend:TI (match_operand:DI 2 "register_operand"))))]
!   "TARGET_MUL && TARGET_64BIT"
  {
    rtx low = gen_reg_rtx (DImode);
    emit_insn (gen_muldi3 (low, operands[1], operands[2]));
--- 911,917 ----
    [(set (match_operand:TI                         0 "register_operand")
  	(mult:TI (any_extend:TI (match_operand:DI 1 "register_operand"))
  		 (any_extend:TI (match_operand:DI 2 "register_operand"))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
  {
    rtx low = gen_reg_rtx (DImode);
    emit_insn (gen_muldi3 (low, operands[1], operands[2]));
***************
*** 917,923 ****
  		     (any_extend:TI
  		       (match_operand:DI 2 "register_operand" " r")))
  	    (const_int 64))))]
!   "TARGET_MUL && TARGET_64BIT"
    "mulh<u>\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "DI")])
--- 933,939 ----
  		     (any_extend:TI
  		       (match_operand:DI 2 "register_operand" " r")))
  	    (const_int 64))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
    "mulh<u>\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "DI")])
***************
*** 926,932 ****
    [(set (match_operand:TI                          0 "register_operand")
  	(mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand"))
  		 (sign_extend:TI (match_operand:DI 2 "register_operand"))))]
!   "TARGET_MUL && TARGET_64BIT"
  {
    rtx low = gen_reg_rtx (DImode);
    emit_insn (gen_muldi3 (low, operands[1], operands[2]));
--- 942,948 ----
    [(set (match_operand:TI                          0 "register_operand")
  	(mult:TI (zero_extend:TI (match_operand:DI 1 "register_operand"))
  		 (sign_extend:TI (match_operand:DI 2 "register_operand"))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
  {
    rtx low = gen_reg_rtx (DImode);
    emit_insn (gen_muldi3 (low, operands[1], operands[2]));
***************
*** 948,954 ****
  		     (sign_extend:TI
  		       (match_operand:DI 2 "register_operand" " r")))
  	    (const_int 64))))]
!   "TARGET_MUL && TARGET_64BIT"
    "mulhsu\t%0,%2,%1"
    [(set_attr "type" "imul")
     (set_attr "mode" "DI")])
--- 964,970 ----
  		     (sign_extend:TI
  		       (match_operand:DI 2 "register_operand" " r")))
  	    (const_int 64))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && TARGET_64BIT"
    "mulhsu\t%0,%2,%1"
    [(set_attr "type" "imul")
     (set_attr "mode" "DI")])
***************
*** 959,965 ****
  		   (match_operand:SI 1 "register_operand" " r"))
  		 (any_extend:DI
  		   (match_operand:SI 2 "register_operand" " r"))))]
!   "TARGET_MUL && !TARGET_64BIT"
  {
    rtx temp = gen_reg_rtx (SImode);
    emit_insn (gen_mulsi3 (temp, operands[1], operands[2]));
--- 975,981 ----
  		   (match_operand:SI 1 "register_operand" " r"))
  		 (any_extend:DI
  		   (match_operand:SI 2 "register_operand" " r"))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && !TARGET_64BIT"
  {
    rtx temp = gen_reg_rtx (SImode);
    emit_insn (gen_mulsi3 (temp, operands[1], operands[2]));
***************
*** 978,984 ****
  		     (any_extend:DI
  		       (match_operand:SI 2 "register_operand" " r")))
  	    (const_int 32))))]
!   "TARGET_MUL && !TARGET_64BIT"
    "mulh<u>\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
--- 994,1000 ----
  		     (any_extend:DI
  		       (match_operand:SI 2 "register_operand" " r")))
  	    (const_int 32))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && !TARGET_64BIT"
    "mulh<u>\t%0,%1,%2"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
***************
*** 990,996 ****
  		   (match_operand:SI 1 "register_operand" " r"))
  		 (sign_extend:DI
  		   (match_operand:SI 2 "register_operand" " r"))))]
!   "TARGET_MUL && !TARGET_64BIT"
  {
    rtx temp = gen_reg_rtx (SImode);
    emit_insn (gen_mulsi3 (temp, operands[1], operands[2]));
--- 1006,1012 ----
  		   (match_operand:SI 1 "register_operand" " r"))
  		 (sign_extend:DI
  		   (match_operand:SI 2 "register_operand" " r"))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && !TARGET_64BIT"
  {
    rtx temp = gen_reg_rtx (SImode);
    emit_insn (gen_mulsi3 (temp, operands[1], operands[2]));
***************
*** 1009,1015 ****
  		     (sign_extend:DI
  		       (match_operand:SI 2 "register_operand" " r")))
  	    (const_int 32))))]
!   "TARGET_MUL && !TARGET_64BIT"
    "mulhsu\t%0,%2,%1"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
--- 1025,1031 ----
  		     (sign_extend:DI
  		       (match_operand:SI 2 "register_operand" " r")))
  	    (const_int 32))))]
!   "(TARGET_ZMMUL || TARGET_MUL) && !TARGET_64BIT"
    "mulhsu\t%0,%2,%1"
    [(set_attr "type" "imul")
     (set_attr "mode" "SI")])
***************
*** 1027,1033 ****
  	(any_div:SI (match_operand:SI 1 "register_operand" " r")
  		    (match_operand:SI 2 "register_operand" " r")))]
    "TARGET_DIV"
!   { return TARGET_64BIT ? "<insn>%i2w\t%0,%1,%2" : "<insn>%i2\t%0,%1,%2"; }
    [(set_attr "type" "idiv")
     (set_attr "mode" "SI")])
  
--- 1043,1049 ----
  	(any_div:SI (match_operand:SI 1 "register_operand" " r")
  		    (match_operand:SI 2 "register_operand" " r")))]
    "TARGET_DIV"
!   "<insn>%i2%~\t%0,%1,%2"
    [(set_attr "type" "idiv")
     (set_attr "mode" "SI")])
  
***************
*** 1054,1060 ****
    [(set (match_operand:ANYF           0 "register_operand" "=f")
  	(div:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		  (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT && TARGET_FDIV"
    "fdiv.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fdiv")
     (set_attr "mode" "<UNITMODE>")])
--- 1070,1076 ----
    [(set (match_operand:ANYF           0 "register_operand" "=f")
  	(div:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		  (match_operand:ANYF 2 "register_operand" " f")))]
!   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && TARGET_FDIV"
    "fdiv.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fdiv")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1069,1075 ****
  (define_insn "sqrt<mode>2"
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(sqrt:ANYF (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT && TARGET_FDIV"
  {
      return "fsqrt.<fmt>\t%0,%1";
  }
--- 1085,1091 ----
  (define_insn "sqrt<mode>2"
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(sqrt:ANYF (match_operand:ANYF 1 "register_operand" " f")))]
!   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && TARGET_FDIV"
  {
      return "fsqrt.<fmt>\t%0,%1";
  }
***************
*** 1084,1090 ****
  	(fma:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		  (match_operand:ANYF 2 "register_operand" " f")
  		  (match_operand:ANYF 3 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1100,1106 ----
  	(fma:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		  (match_operand:ANYF 2 "register_operand" " f")
  		  (match_operand:ANYF 3 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1095,1101 ****
  	(fma:ANYF (match_operand:ANYF           1 "register_operand" " f")
  		  (match_operand:ANYF           2 "register_operand" " f")
  		  (neg:ANYF (match_operand:ANYF 3 "register_operand" " f"))))]
!   "TARGET_HARD_FLOAT"
    "fmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1111,1117 ----
  	(fma:ANYF (match_operand:ANYF           1 "register_operand" " f")
  		  (match_operand:ANYF           2 "register_operand" " f")
  		  (neg:ANYF (match_operand:ANYF 3 "register_operand" " f"))))]
!   "TARGET_HARD_FLOAT  || TARGET_ZFINX"
    "fmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1107,1113 ****
  	    (neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  	    (match_operand:ANYF           2 "register_operand" " f")
  	    (neg:ANYF (match_operand:ANYF 3 "register_operand" " f"))))]
!   "TARGET_HARD_FLOAT"
    "fnmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1123,1129 ----
  	    (neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  	    (match_operand:ANYF           2 "register_operand" " f")
  	    (neg:ANYF (match_operand:ANYF 3 "register_operand" " f"))))]
!   "TARGET_HARD_FLOAT  || TARGET_ZFINX"
    "fnmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1119,1125 ****
  	    (neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  	    (match_operand:ANYF           2 "register_operand" " f")
  	    (match_operand:ANYF           3 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fnmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1135,1141 ----
  	    (neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  	    (match_operand:ANYF           2 "register_operand" " f")
  	    (match_operand:ANYF           3 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fnmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1132,1138 ****
  		(neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  		(match_operand:ANYF           2 "register_operand" " f")
  		(neg:ANYF (match_operand:ANYF 3 "register_operand" " f")))))]
!   "TARGET_HARD_FLOAT && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1148,1154 ----
  		(neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  		(match_operand:ANYF           2 "register_operand" " f")
  		(neg:ANYF (match_operand:ANYF 3 "register_operand" " f")))))]
!   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1145,1151 ****
  		(neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  		(match_operand:ANYF           2 "register_operand" " f")
  		(match_operand:ANYF           3 "register_operand" " f"))))]
!   "TARGET_HARD_FLOAT && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1161,1167 ----
  		(neg:ANYF (match_operand:ANYF 1 "register_operand" " f"))
  		(match_operand:ANYF           2 "register_operand" " f")
  		(match_operand:ANYF           3 "register_operand" " f"))))]
!   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1158,1164 ****
  		(match_operand:ANYF 1 "register_operand" " f")
  		(match_operand:ANYF 2 "register_operand" " f")
  		(match_operand:ANYF 3 "register_operand" " f"))))]
!   "TARGET_HARD_FLOAT && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fnmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1174,1180 ----
  		(match_operand:ANYF 1 "register_operand" " f")
  		(match_operand:ANYF 2 "register_operand" " f")
  		(match_operand:ANYF 3 "register_operand" " f"))))]
!   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fnmadd.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1171,1177 ****
  		(match_operand:ANYF           1 "register_operand" " f")
  		(match_operand:ANYF           2 "register_operand" " f")
  		(neg:ANYF (match_operand:ANYF 3 "register_operand" " f")))))]
!   "TARGET_HARD_FLOAT && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fnmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
--- 1187,1193 ----
  		(match_operand:ANYF           1 "register_operand" " f")
  		(match_operand:ANYF           2 "register_operand" " f")
  		(neg:ANYF (match_operand:ANYF 3 "register_operand" " f")))))]
!   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && !HONOR_SIGNED_ZEROS (<MODE>mode)"
    "fnmsub.<fmt>\t%0,%1,%2,%3"
    [(set_attr "type" "fmadd")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1186,1192 ****
  (define_insn "abs<mode>2"
    [(set (match_operand:ANYF           0 "register_operand" "=f")
  	(abs:ANYF (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fabs.<fmt>\t%0,%1"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
--- 1202,1208 ----
  (define_insn "abs<mode>2"
    [(set (match_operand:ANYF           0 "register_operand" "=f")
  	(abs:ANYF (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fabs.<fmt>\t%0,%1"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1196,1202 ****
  	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" " f")
  		      (match_operand:ANYF 2 "register_operand" " f")]
  		     UNSPEC_COPYSIGN))]
!   "TARGET_HARD_FLOAT"
    "fsgnj.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
--- 1212,1218 ----
  	(unspec:ANYF [(match_operand:ANYF 1 "register_operand" " f")
  		      (match_operand:ANYF 2 "register_operand" " f")]
  		     UNSPEC_COPYSIGN))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fsgnj.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1204,1210 ****
  (define_insn "neg<mode>2"
    [(set (match_operand:ANYF           0 "register_operand" "=f")
  	(neg:ANYF (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fneg.<fmt>\t%0,%1"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
--- 1220,1226 ----
  (define_insn "neg<mode>2"
    [(set (match_operand:ANYF           0 "register_operand" "=f")
  	(neg:ANYF (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fneg.<fmt>\t%0,%1"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1216,1226 ****
  ;;
  ;;  ....................
  
  (define_insn "smin<mode>3"
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(smin:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		   (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fmin.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
--- 1232,1262 ----
  ;;
  ;;  ....................
  
+ (define_insn "fmin<mode>3"
+   [(set (match_operand:ANYF                    0 "register_operand" "=f")
+ 	(unspec:ANYF [(use (match_operand:ANYF 1 "register_operand" " f"))
+ 		      (use (match_operand:ANYF 2 "register_operand" " f"))]
+ 		     UNSPEC_FMIN))]
+   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && !HONOR_SNANS (<MODE>mode)"
+   "fmin.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fmove")
+    (set_attr "mode" "<UNITMODE>")])
+ 
+ (define_insn "fmax<mode>3"
+   [(set (match_operand:ANYF                    0 "register_operand" "=f")
+ 	(unspec:ANYF [(use (match_operand:ANYF 1 "register_operand" " f"))
+ 		      (use (match_operand:ANYF 2 "register_operand" " f"))]
+ 		     UNSPEC_FMAX))]
+   "(TARGET_HARD_FLOAT || TARGET_ZFINX) && !HONOR_SNANS (<MODE>mode)"
+   "fmax.<fmt>\t%0,%1,%2"
+   [(set_attr "type" "fmove")
+    (set_attr "mode" "<UNITMODE>")])
+ 
  (define_insn "smin<mode>3"
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(smin:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		   (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fmin.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1229,1235 ****
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(smax:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		   (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fmax.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
--- 1265,1271 ----
    [(set (match_operand:ANYF            0 "register_operand" "=f")
  	(smax:ANYF (match_operand:ANYF 1 "register_operand" " f")
  		   (match_operand:ANYF 2 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fmax.<fmt>\t%0,%1,%2"
    [(set_attr "type" "fmove")
     (set_attr "mode" "<UNITMODE>")])
***************
*** 1290,1300 ****
    [(set (match_operand:SF     0 "register_operand" "=f")
  	(float_truncate:SF
  	    (match_operand:DF 1 "register_operand" " f")))]
!   "TARGET_DOUBLE_FLOAT"
    "fcvt.s.d\t%0,%1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "SF")])
  
  ;;
  ;;  ....................
  ;;
--- 1326,1355 ----
    [(set (match_operand:SF     0 "register_operand" "=f")
  	(float_truncate:SF
  	    (match_operand:DF 1 "register_operand" " f")))]
!   "TARGET_DOUBLE_FLOAT || TARGET_ZDINX"
    "fcvt.s.d\t%0,%1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "SF")])
  
+ (define_insn "truncsfhf2"
+   [(set (match_operand:HF     0 "register_operand" "=f")
+        (float_truncate:HF
+            (match_operand:SF 1 "register_operand" " f")))]
+   "TARGET_ZFHMIN || TARGET_ZHINXMIN"
+   "fcvt.h.s\t%0,%1"
+   [(set_attr "type" "fcvt")
+    (set_attr "mode" "HF")])
+ 
+ (define_insn "truncdfhf2"
+   [(set (match_operand:HF     0 "register_operand" "=f")
+        (float_truncate:HF
+            (match_operand:DF 1 "register_operand" " f")))]
+   "(TARGET_ZFHMIN && TARGET_DOUBLE_FLOAT) ||
+    (TARGET_ZHINXMIN && TARGET_ZDINX)"
+   "fcvt.h.d\t%0,%1"
+   [(set_attr "type" "fcvt")
+    (set_attr "mode" "HF")])
+ 
  ;;
  ;;  ....................
  ;;
***************
*** 1313,1319 ****
    [(set (match_operand:DI     0 "register_operand"     "=r,r")
  	(zero_extend:DI
  	    (match_operand:SI 1 "nonimmediate_operand" " r,m")))]
!   "TARGET_64BIT && !TARGET_ZBA"
    "@
     #
     lwu\t%0,%1"
--- 1368,1376 ----
    [(set (match_operand:DI     0 "register_operand"     "=r,r")
  	(zero_extend:DI
  	    (match_operand:SI 1 "nonimmediate_operand" " r,m")))]
!   "TARGET_64BIT && !TARGET_ZBA
!    && !(register_operand (operands[1], SImode)
!         && reg_or_subregno (operands[1]) == VL_REGNUM)"
    "@
     #
     lwu\t%0,%1"
***************
*** 1412,1426 ****
    [(set_attr "move_type" "shift_shift,load")
     (set_attr "mode" "SI")])
  
  (define_insn "extendsfdf2"
    [(set (match_operand:DF     0 "register_operand" "=f")
  	(float_extend:DF
  	    (match_operand:SF 1 "register_operand" " f")))]
!   "TARGET_DOUBLE_FLOAT"
    "fcvt.d.s\t%0,%1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "DF")])
  
  ;;
  ;;  ....................
  ;;
--- 1469,1532 ----
    [(set_attr "move_type" "shift_shift,load")
     (set_attr "mode" "SI")])
  
+ (define_insn "extendhfsf2"
+   [(set (match_operand:SF     0 "register_operand" "=f")
+        (float_extend:SF
+            (match_operand:HF 1 "register_operand" " f")))]
+   "TARGET_ZFHMIN || TARGET_ZHINXMIN"
+   "fcvt.s.h\t%0,%1"
+   [(set_attr "type" "fcvt")
+    (set_attr "mode" "SF")])
+ 
  (define_insn "extendsfdf2"
    [(set (match_operand:DF     0 "register_operand" "=f")
  	(float_extend:DF
  	    (match_operand:SF 1 "register_operand" " f")))]
!   "TARGET_DOUBLE_FLOAT || TARGET_ZDINX"
    "fcvt.d.s\t%0,%1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "DF")])
  
+ (define_insn "extendhfdf2"
+   [(set (match_operand:DF     0 "register_operand" "=f")
+        (float_extend:DF
+            (match_operand:HF 1 "register_operand" " f")))]
+   "(TARGET_ZFHMIN && TARGET_DOUBLE_FLOAT) ||
+    (TARGET_ZHINXMIN && TARGET_ZDINX)"
+   "fcvt.d.h\t%0,%1"
+   [(set_attr "type" "fcvt")
+    (set_attr "mode" "DF")])
+ 
+ ;; 16-bit floating point moves
+ (define_expand "movhf"
+   [(set (match_operand:HF 0 "")
+ 	(match_operand:HF 1 ""))]
+   ""
+ {
+   if (riscv_legitimize_move (HFmode, operands[0], operands[1]))
+     DONE;
+ })
+ 
+ (define_insn "*movhf_hardfloat"
+   [(set (match_operand:HF 0 "nonimmediate_operand" "=f,f,f,m,m,*f,*r,  *r,*r,*m")
+ 	(match_operand:HF 1 "move_operand"         " f,G,m,f,G,*r,*f,*G*r,*m,*r"))]
+   "TARGET_ZFHMIN
+    && (register_operand (operands[0], HFmode)
+        || reg_or_0_operand (operands[1], HFmode))"
+   { return riscv_output_move (operands[0], operands[1]); }
+   [(set_attr "move_type" "fmove,mtc,fpload,fpstore,store,mtc,mfc,move,load,store")
+    (set_attr "mode" "HF")])
+ 
+ (define_insn "*movhf_softfloat"
+   [(set (match_operand:HF 0 "nonimmediate_operand" "=f, r,r,m,*f,*r")
+ 	(match_operand:HF 1 "move_operand"         " f,Gr,m,r,*r,*f"))]
+   "!TARGET_ZFHMIN
+    && (register_operand (operands[0], HFmode)
+        || reg_or_0_operand (operands[1], HFmode))"
+   { return riscv_output_move (operands[0], operands[1]); }
+   [(set_attr "move_type" "fmove,move,load,store,mtc,mfc")
+    (set_attr "mode" "HF")])
+ 
  ;;
  ;;  ....................
  ;;
***************
*** 1432,1438 ****
    [(set (match_operand:GPR      0 "register_operand" "=r")
  	(fix:GPR
  	    (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fcvt.<GPR:ifmt>.<ANYF:fmt> %0,%1,rtz"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
--- 1538,1544 ----
    [(set (match_operand:GPR      0 "register_operand" "=r")
  	(fix:GPR
  	    (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fcvt.<GPR:ifmt>.<ANYF:fmt> %0,%1,rtz"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
***************
*** 1441,1447 ****
    [(set (match_operand:GPR      0 "register_operand" "=r")
  	(unsigned_fix:GPR
  	    (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT"
    "fcvt.<GPR:ifmt>u.<ANYF:fmt> %0,%1,rtz"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
--- 1547,1553 ----
    [(set (match_operand:GPR      0 "register_operand" "=r")
  	(unsigned_fix:GPR
  	    (match_operand:ANYF 1 "register_operand" " f")))]
!   "TARGET_HARD_FLOAT  || TARGET_ZFINX"
    "fcvt.<GPR:ifmt>u.<ANYF:fmt> %0,%1,rtz"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
***************
*** 1450,1456 ****
    [(set (match_operand:ANYF    0 "register_operand" "= f")
  	(float:ANYF
  	    (match_operand:GPR 1 "reg_or_0_operand" " rJ")))]
!   "TARGET_HARD_FLOAT"
    "fcvt.<ANYF:fmt>.<GPR:ifmt>\t%0,%z1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
--- 1556,1562 ----
    [(set (match_operand:ANYF    0 "register_operand" "= f")
  	(float:ANYF
  	    (match_operand:GPR 1 "reg_or_0_operand" " rJ")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fcvt.<ANYF:fmt>.<GPR:ifmt>\t%0,%z1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
***************
*** 1459,1465 ****
    [(set (match_operand:ANYF    0 "register_operand" "= f")
  	(unsigned_float:ANYF
  	    (match_operand:GPR 1 "reg_or_0_operand" " rJ")))]
!   "TARGET_HARD_FLOAT"
    "fcvt.<ANYF:fmt>.<GPR:ifmt>u\t%0,%z1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
--- 1565,1571 ----
    [(set (match_operand:ANYF    0 "register_operand" "= f")
  	(unsigned_float:ANYF
  	    (match_operand:GPR 1 "reg_or_0_operand" " rJ")))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fcvt.<ANYF:fmt>.<GPR:ifmt>u\t%0,%z1"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
***************
*** 1469,1475 ****
  	(unspec:GPR
  	    [(match_operand:ANYF 1 "register_operand" " f")]
  	    RINT))]
!   "TARGET_HARD_FLOAT"
    "fcvt.<GPR:ifmt>.<ANYF:fmt> %0,%1,<rint_rm>"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
--- 1575,1581 ----
  	(unspec:GPR
  	    [(match_operand:ANYF 1 "register_operand" " f")]
  	    RINT))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fcvt.<GPR:ifmt>.<ANYF:fmt> %0,%1,<rint_rm>"
    [(set_attr "type" "fcvt")
     (set_attr "mode" "<ANYF:MODE>")])
***************
*** 1578,1583 ****
--- 1684,1707 ----
  		      MAX_MACHINE_MODE, &operands[3], TRUE);
  })
  
+ ;; Pretend to have the ability to load complex const_int in order to get
+ ;; better code generation around them.
+ ;;
+ ;; But avoid constants that are special cased elsewhere.
+ (define_insn_and_split "*mvconst_internal"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+         (match_operand:GPR 1 "splittable_const_int_operand" "i"))]
+   "!(p2m1_shift_operand (operands[1], <MODE>mode)
+      || high_mask_shift_operand (operands[1], <MODE>mode))"
+   "#"
+   "&& 1"
+   [(const_int 0)]
+ {
+   riscv_move_integer (operands[0], operands[0], INTVAL (operands[1]),
+                       <MODE>mode, TRUE);
+   DONE;
+ })
+ 
  ;; 64-bit integer moves
  
  (define_expand "movdi"
***************
*** 1590,1613 ****
  })
  
  (define_insn "*movdi_32bit"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,m,  *f,*f,*r,*f,*m")
! 	(match_operand:DI 1 "move_operand"         " r,i,m,r,*J*r,*m,*f,*f,*f"))]
    "!TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fmove,fpstore")
!    (set_attr "mode" "DI")])
  
  (define_insn "*movdi_64bit"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*f,*r,*f,*m")
! 	(match_operand:DI 1 "move_operand"         " r,T,m,rJ,*r*J,*m,*f,*f,*f"))]
    "TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fmove,fpstore")
!    (set_attr "mode" "DI")])
  
  ;; 32-bit Integer moves
  
--- 1714,1739 ----
  })
  
  (define_insn "*movdi_32bit"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r,m,  *f,*f,*r,*f,*m,r")
! 	(match_operand:DI 1 "move_operand"         " r,i,m,r,*J*r,*m,*f,*f,*f,vp"))]
    "!TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fmove,fpstore,rdvlenb")
!    (set_attr "mode" "DI")
!    (set_attr "ext" "base,base,base,base,d,d,d,d,d,vector")])
  
  (define_insn "*movdi_64bit"
!   [(set (match_operand:DI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*f,*r,*f,*m,r")
! 	(match_operand:DI 1 "move_operand"         " r,T,m,rJ,*r*J,*m,*f,*f,*f,vp"))]
    "TARGET_64BIT
     && (register_operand (operands[0], DImode)
         || reg_or_0_operand (operands[1], DImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fmove,fpstore,rdvlenb")
!    (set_attr "mode" "DI")
!    (set_attr "ext" "base,base,base,base,d,d,d,d,d,vector")])
  
  ;; 32-bit Integer moves
  
***************
*** 1621,1633 ****
  })
  
  (define_insn "*movsi_internal"
!   [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*f,*r,*m")
! 	(match_operand:SI 1 "move_operand"         " r,T,m,rJ,*r*J,*m,*f,*f"))]
    "(register_operand (operands[0], SImode)
!     || reg_or_0_operand (operands[1], SImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,fpload,mfc,fpstore")
!    (set_attr "mode" "SI")])
  
  ;; 16-bit Integer moves
  
--- 1747,1762 ----
  })
  
  (define_insn "*movsi_internal"
!   [(set (match_operand:SI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*f,*r,*m,r")
! 	(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)"
    { 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")
!    (set_attr "ext" "base,base,base,base,f,f,f,f,vector")])
  
  ;; 16-bit Integer moves
  
***************
*** 1646,1658 ****
  })
  
  (define_insn "*movhi_internal"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*r")
! 	(match_operand:HI 1 "move_operand"	   " r,T,m,rJ,*r*J,*f"))]
    "(register_operand (operands[0], HImode)
      || reg_or_0_operand (operands[1], HImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,mfc")
!    (set_attr "mode" "HI")])
  
  ;; HImode constant generation; see riscv_move_integer for details.
  ;; si+si->hi without truncation is legal because of
--- 1775,1788 ----
  })
  
  (define_insn "*movhi_internal"
!   [(set (match_operand:HI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*r,r")
! 	(match_operand:HI 1 "move_operand"	   " r,T,m,rJ,*r*J,*f,vp"))]
    "(register_operand (operands[0], HImode)
      || reg_or_0_operand (operands[1], HImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,mfc,rdvlenb")
!    (set_attr "mode" "HI")
!    (set_attr "ext" "base,base,base,base,f,f,vector")])
  
  ;; HImode constant generation; see riscv_move_integer for details.
  ;; si+si->hi without truncation is legal because of
***************
*** 1663,1669 ****
  	(plus:HI (match_operand:HISI 1 "register_operand" " r,r")
  		 (match_operand:HISI 2 "arith_operand"    " r,I")))]
    ""
!   { return TARGET_64BIT ? "add%i2w\t%0,%1,%2" : "add%i2\t%0,%1,%2"; }
    [(set_attr "type" "arith")
     (set_attr "mode" "HI")])
  
--- 1793,1799 ----
  	(plus:HI (match_operand:HISI 1 "register_operand" " r,r")
  		 (match_operand:HISI 2 "arith_operand"    " r,I")))]
    ""
!   "add%i2%~\t%0,%1,%2"
    [(set_attr "type" "arith")
     (set_attr "mode" "HI")])
  
***************
*** 1688,1700 ****
  })
  
  (define_insn "*movqi_internal"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*r")
! 	(match_operand:QI 1 "move_operand"         " r,I,m,rJ,*r*J,*f"))]
    "(register_operand (operands[0], QImode)
      || reg_or_0_operand (operands[1], QImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,mfc")
!    (set_attr "mode" "QI")])
  
  ;; 32-bit floating point moves
  
--- 1818,1831 ----
  })
  
  (define_insn "*movqi_internal"
!   [(set (match_operand:QI 0 "nonimmediate_operand" "=r,r,r, m,  *f,*r,r")
! 	(match_operand:QI 1 "move_operand"         " r,I,m,rJ,*r*J,*f,vp"))]
    "(register_operand (operands[0], QImode)
      || reg_or_0_operand (operands[1], QImode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "move,const,load,store,mtc,mfc,rdvlenb")
!    (set_attr "mode" "QI")
!    (set_attr "ext" "base,base,base,base,f,f,vector")])
  
  ;; 32-bit floating point moves
  
***************
*** 1738,1753 ****
      DONE;
  })
  
  ;; In RV32, we lack fmv.x.d and fmv.d.x.  Go through memory instead.
  ;; (However, we can still use fcvt.d.w to zero a floating-point register.)
  (define_insn "*movdf_hardfloat_rv32"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,f,m,m,  *r,*r,*m")
! 	(match_operand:DF 1 "move_operand"         " f,G,m,f,G,*r*G,*m,*r"))]
    "!TARGET_64BIT && TARGET_DOUBLE_FLOAT
     && (register_operand (operands[0], DFmode)
         || reg_or_0_operand (operands[1], DFmode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "fmove,mtc,fpload,fpstore,store,move,load,store")
     (set_attr "mode" "DF")])
  
  (define_insn "*movdf_hardfloat_rv64"
--- 1869,1885 ----
      DONE;
  })
  
+ 
  ;; In RV32, we lack fmv.x.d and fmv.d.x.  Go through memory instead.
  ;; (However, we can still use fcvt.d.w to zero a floating-point register.)
  (define_insn "*movdf_hardfloat_rv32"
!   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,f,f,m,m,*th_f_fmv,*th_r_fmv,  *r,*r,*m")
! 	(match_operand:DF 1 "move_operand"         " f,G,m,f,G,*th_r_fmv,*th_f_fmv,*r*G,*m,*r"))]
    "!TARGET_64BIT && TARGET_DOUBLE_FLOAT
     && (register_operand (operands[0], DFmode)
         || reg_or_0_operand (operands[1], DFmode))"
    { return riscv_output_move (operands[0], operands[1]); }
!   [(set_attr "move_type" "fmove,mtc,fpload,fpstore,store,mtc,mfc,move,load,store")
     (set_attr "mode" "DF")])
  
  (define_insn "*movdf_hardfloat_rv64"
***************
*** 1822,1827 ****
--- 1954,1964 ----
    "TARGET_ZIFENCEI"
    "fence.i")
  
+ (define_insn "riscv_pause"
+   [(unspec_volatile [(const_int 0)] UNSPECV_PAUSE)]
+   ""
+   "pause")
+ 
  ;;
  ;;  ....................
  ;;
***************
*** 1845,1851 ****
      operands[2] = GEN_INT (INTVAL (operands[2])
  			   & (GET_MODE_BITSIZE (SImode) - 1));
  
!   return TARGET_64BIT ? "<insn>%i2w\t%0,%1,%2" : "<insn>%i2\t%0,%1,%2";
  }
    [(set_attr "type" "shift")
     (set_attr "mode" "SI")])
--- 1982,1988 ----
      operands[2] = GEN_INT (INTVAL (operands[2])
  			   & (GET_MODE_BITSIZE (SImode) - 1));
  
!   return "<insn>%i2%~\t%0,%1,%2";
  }
    [(set_attr "type" "shift")
     (set_attr "mode" "SI")])
***************
*** 2066,2072 ****
         (lshiftrt:GPR (match_dup 3) (match_dup 2)))]
  {
    /* Op2 is a VOIDmode constant, so get the mode size from op1.  */
!   operands[2] = GEN_INT (GET_MODE_BITSIZE (GET_MODE (operands[1]))
  			 - exact_log2 (INTVAL (operands[2]) + 1));
  })
  
--- 2203,2209 ----
         (lshiftrt:GPR (match_dup 3) (match_dup 2)))]
  {
    /* Op2 is a VOIDmode constant, so get the mode size from op1.  */
!   operands[2] = GEN_INT (GET_MODE_BITSIZE (GET_MODE (operands[1])).to_constant ()
  			 - exact_log2 (INTVAL (operands[2]) + 1));
  })
  
***************
*** 2117,2122 ****
--- 2254,2310 ----
  
  ;; Conditional branches
  
+ (define_insn_and_split "*branch<ANYI:mode>_shiftedarith_equals_zero"
+   [(set (pc)
+ 	(if_then_else (match_operator 1 "equality_operator"
+ 		       [(and:ANYI (match_operand:ANYI 2 "register_operand" "r")
+ 				  (match_operand 3 "shifted_const_arith_operand" "i"))
+ 			(const_int 0)])
+ 	 (label_ref (match_operand 0 "" ""))
+ 	 (pc)))
+    (clobber (match_scratch:X 4 "=&r"))]
+   "!SMALL_OPERAND (INTVAL (operands[3]))"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 4) (lshiftrt:X (subreg:X (match_dup 2) 0) (match_dup 6)))
+    (set (match_dup 4) (and:X (match_dup 4) (match_dup 7)))
+    (set (pc) (if_then_else (match_op_dup 1 [(match_dup 4) (const_int 0)])
+ 			   (label_ref (match_dup 0)) (pc)))]
+ {
+ 	HOST_WIDE_INT mask = INTVAL (operands[3]);
+ 	int trailing = ctz_hwi (mask);
+ 
+ 	operands[6] = GEN_INT (trailing);
+ 	operands[7] = GEN_INT (mask >> trailing);
+ })
+ 
+ (define_insn_and_split "*branch<ANYI:mode>_shiftedmask_equals_zero"
+   [(set (pc)
+ 	(if_then_else (match_operator 1 "equality_operator"
+ 		       [(and:ANYI (match_operand:ANYI 2 "register_operand" "r")
+ 				  (match_operand 3 "consecutive_bits_operand" "i"))
+ 			(const_int 0)])
+ 	 (label_ref (match_operand 0 "" ""))
+ 	 (pc)))
+    (clobber (match_scratch:X 4 "=&r"))]
+   "(INTVAL (operands[3]) >= 0 || !partial_subreg_p (operands[2]))
+     && popcount_hwi (INTVAL (operands[3])) > 1
+     && !SMALL_OPERAND (INTVAL (operands[3]))"
+   "#"
+   "&& reload_completed"
+   [(set (match_dup 4) (ashift:X (subreg:X (match_dup 2) 0) (match_dup 6)))
+    (set (match_dup 4) (lshiftrt:X (match_dup 4) (match_dup 7)))
+    (set (pc) (if_then_else (match_op_dup 1 [(match_dup 4) (const_int 0)])
+ 			   (label_ref (match_dup 0)) (pc)))]
+ {
+ 	unsigned HOST_WIDE_INT mask = INTVAL (operands[3]);
+ 	int leading  = clz_hwi (mask);
+ 	int trailing = ctz_hwi (mask);
+ 
+ 	operands[6] = GEN_INT (leading);
+ 	operands[7] = GEN_INT (leading + trailing);
+ })
+ 
  (define_insn "*branch<mode>"
    [(set (pc)
  	(if_then_else
***************
*** 2135,2151 ****
  (define_expand "mov<mode>cc"
    [(set (match_operand:GPR 0 "register_operand")
  	(if_then_else:GPR (match_operand 1 "comparison_operator")
! 			  (match_operand:GPR 2 "register_operand")
  			  (match_operand:GPR 3 "sfb_alu_operand")))]
!   "TARGET_SFB_ALU"
  {
!   rtx cmp = operands[1];
!   /* We only handle word mode integer compares for now.  */
!   if (GET_MODE (XEXP (cmp, 0)) != word_mode)
      FAIL;
-   riscv_expand_conditional_move (operands[0], operands[2], operands[3],
- 				 GET_CODE (cmp), XEXP (cmp, 0), XEXP (cmp, 1));
-   DONE;
  })
  
  (define_insn "*mov<GPR:mode><X:mode>cc"
--- 2323,2337 ----
  (define_expand "mov<mode>cc"
    [(set (match_operand:GPR 0 "register_operand")
  	(if_then_else:GPR (match_operand 1 "comparison_operator")
! 			  (match_operand:GPR 2 "reg_or_0_operand")
  			  (match_operand:GPR 3 "sfb_alu_operand")))]
!   "TARGET_SFB_ALU || TARGET_XTHEADCONDMOV"
  {
!   if (riscv_expand_conditional_move (operands[0], operands[1],
! 				     operands[2], operands[3]))
!     DONE;
!   else
      FAIL;
  })
  
  (define_insn "*mov<GPR:mode><X:mode>cc"
***************
*** 2158,2165 ****
  	 (match_operand:GPR 4 "sfb_alu_operand" "rJ,IL")))]
    "TARGET_SFB_ALU"
    "@
!    b%C5 %1,%z2,1f; mv %0,%z4; 1: # movcc
!    b%C5 %1,%z2,1f; li %0,%4; 1: # movcc"
    [(set_attr "length" "8")
     (set_attr "type" "sfb_alu")
     (set_attr "mode" "<GPR:MODE>")])
--- 2344,2351 ----
  	 (match_operand:GPR 4 "sfb_alu_operand" "rJ,IL")))]
    "TARGET_SFB_ALU"
    "@
!    b%C5\t%1,%z2,1f\t# movcc\;mv\t%0,%z4\n1:
!    b%C5\t%1,%z2,1f\t# movcc\;li\t%0,%4\n1:"
    [(set_attr "length" "8")
     (set_attr "type" "sfb_alu")
     (set_attr "mode" "<GPR:MODE>")])
***************
*** 2192,2198 ****
  			(match_operand:ANYF 2 "register_operand")])
  		      (label_ref (match_operand 3 ""))
  		      (pc)))]
!   "TARGET_HARD_FLOAT"
  {
    riscv_expand_conditional_branch (operands[3], GET_CODE (operands[0]),
  				   operands[1], operands[2]);
--- 2378,2384 ----
  			(match_operand:ANYF 2 "register_operand")])
  		      (label_ref (match_operand 3 ""))
  		      (pc)))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
  {
    riscv_expand_conditional_branch (operands[3], GET_CODE (operands[0]),
  				   operands[1], operands[2]);
***************
*** 2281,2287 ****
  	(match_operator:SI 1 "fp_scc_comparison"
  	     [(match_operand:ANYF 2 "register_operand")
  	      (match_operand:ANYF 3 "register_operand")]))]
!   "TARGET_HARD_FLOAT"
  {
    riscv_expand_float_scc (operands[0], GET_CODE (operands[1]), operands[2],
  			  operands[3]);
--- 2467,2473 ----
  	(match_operator:SI 1 "fp_scc_comparison"
  	     [(match_operand:ANYF 2 "register_operand")
  	      (match_operand:ANYF 3 "register_operand")]))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
  {
    riscv_expand_float_scc (operands[0], GET_CODE (operands[1]), operands[2],
  			  operands[3]);
***************
*** 2293,2337 ****
  	 (match_operator:X 1 "fp_native_comparison"
  	     [(match_operand:ANYF 2 "register_operand" " f")
  	      (match_operand:ANYF 3 "register_operand" " f")]))]
!   "TARGET_HARD_FLOAT"
    "f%C1.<fmt>\t%0,%2,%3"
    [(set_attr "type" "fcmp")
     (set_attr "mode" "<UNITMODE>")])
  
  (define_expand "f<quiet_pattern>_quiet<ANYF:mode><X:mode>4"
!    [(parallel [(set (match_operand:X      0 "register_operand")
! 		    (unspec:X
! 		     [(match_operand:ANYF 1 "register_operand")
! 		      (match_operand:ANYF 2 "register_operand")]
! 		     QUIET_COMPARISON))
! 	       (clobber (match_scratch:X 3))])]
!   "TARGET_HARD_FLOAT")
! 
! (define_insn "*f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_default"
!    [(set (match_operand:X      0 "register_operand" "=r")
! 	 (unspec:X
! 	  [(match_operand:ANYF 1 "register_operand" " f")
! 	   (match_operand:ANYF 2 "register_operand" " f")]
! 	  QUIET_COMPARISON))
!     (clobber (match_scratch:X 3 "=&r"))]
!   "TARGET_HARD_FLOAT && ! HONOR_SNANS (<ANYF:MODE>mode)"
!   "frflags\t%3\n\tf<quiet_pattern>.<fmt>\t%0,%1,%2\n\tfsflags %3"
!   [(set_attr "type" "fcmp")
!    (set_attr "mode" "<UNITMODE>")
!    (set (attr "length") (const_int 12))])
  
! (define_insn "*f<quiet_pattern>_quiet<ANYF:mode><X:mode>4_snan"
!    [(set (match_operand:X      0 "register_operand" "=r")
! 	 (unspec:X
! 	  [(match_operand:ANYF 1 "register_operand" " f")
! 	   (match_operand:ANYF 2 "register_operand" " f")]
! 	  QUIET_COMPARISON))
!     (clobber (match_scratch:X 3 "=&r"))]
!   "TARGET_HARD_FLOAT && HONOR_SNANS (<ANYF:MODE>mode)"
!   "frflags\t%3\n\tf<quiet_pattern>.<fmt>\t%0,%1,%2\n\tfsflags %3\n\tfeq.<fmt>\tzero,%1,%2"
!   [(set_attr "type" "fcmp")
!    (set_attr "mode" "<UNITMODE>")
!    (set (attr "length") (const_int 16))])
  
  (define_insn "*seq_zero_<X:mode><GPR:mode>"
    [(set (match_operand:GPR       0 "register_operand" "=r")
--- 2479,2515 ----
  	 (match_operator:X 1 "fp_native_comparison"
  	     [(match_operand:ANYF 2 "register_operand" " f")
  	      (match_operand:ANYF 3 "register_operand" " f")]))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "f%C1.<fmt>\t%0,%2,%3"
    [(set_attr "type" "fcmp")
     (set_attr "mode" "<UNITMODE>")])
  
  (define_expand "f<quiet_pattern>_quiet<ANYF:mode><X:mode>4"
!    [(set (match_operand:X               0 "register_operand")
! 	 (unspec:X [(match_operand:ANYF 1 "register_operand")
! 		    (match_operand:ANYF 2 "register_operand")]
! 		   QUIET_COMPARISON))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
! {
!   rtx op0 = operands[0];
!   rtx op1 = operands[1];
!   rtx op2 = operands[2];
!   rtx tmp = gen_reg_rtx (SImode);
!   rtx cmp = gen_rtx_<QUIET_PATTERN> (<X:MODE>mode, op1, op2);
!   rtx frflags = gen_rtx_UNSPEC_VOLATILE (SImode, gen_rtvec (1, const0_rtx),
! 					 UNSPECV_FRFLAGS);
!   rtx fsflags = gen_rtx_UNSPEC_VOLATILE (SImode, gen_rtvec (1, tmp),
! 					 UNSPECV_FSFLAGS);
  
!   emit_insn (gen_rtx_SET (tmp, frflags));
!   emit_insn (gen_rtx_SET (op0, cmp));
!   emit_insn (fsflags);
!   if (HONOR_SNANS (<ANYF:MODE>mode))
!     emit_insn (gen_rtx_UNSPEC_VOLATILE (<ANYF:MODE>mode,
! 					gen_rtvec (2, op1, op2),
! 					UNSPECV_FSNVSNAN));
!   DONE;
! })
  
  (define_insn "*seq_zero_<X:mode><GPR:mode>"
    [(set (match_operand:GPR       0 "register_operand" "=r")
***************
*** 2731,2744 ****
  (define_insn "riscv_frflags"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(unspec_volatile [(const_int 0)] UNSPECV_FRFLAGS))]
!   "TARGET_HARD_FLOAT"
    "frflags\t%0")
  
  (define_insn "riscv_fsflags"
    [(unspec_volatile [(match_operand:SI 0 "csr_operand" "rK")] UNSPECV_FSFLAGS)]
!   "TARGET_HARD_FLOAT"
    "fsflags\t%0")
  
  (define_insn "riscv_mret"
    [(return)
     (unspec_volatile [(const_int 0)] UNSPECV_MRET)]
--- 2909,2931 ----
  (define_insn "riscv_frflags"
    [(set (match_operand:SI 0 "register_operand" "=r")
  	(unspec_volatile [(const_int 0)] UNSPECV_FRFLAGS))]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "frflags\t%0")
  
  (define_insn "riscv_fsflags"
    [(unspec_volatile [(match_operand:SI 0 "csr_operand" "rK")] UNSPECV_FSFLAGS)]
!   "TARGET_HARD_FLOAT || TARGET_ZFINX"
    "fsflags\t%0")
  
+ (define_insn "*riscv_fsnvsnan<mode>2"
+   [(unspec_volatile [(match_operand:ANYF 0 "register_operand" "f")
+ 		     (match_operand:ANYF 1 "register_operand" "f")]
+ 		    UNSPECV_FSNVSNAN)]
+   "TARGET_HARD_FLOAT || TARGET_ZFINX"
+   "feq.<fmt>\tzero,%0,%1"
+   [(set_attr "type" "fcmp")
+    (set_attr "mode" "<UNITMODE>")])
+ 
  (define_insn "riscv_mret"
    [(return)
     (unspec_volatile [(const_int 0)] UNSPECV_MRET)]
***************
*** 2863,2871 ****
--- 3050,3149 ----
    "<load>\t%3, %1\;<load>\t%0, %2\;xor\t%0, %3, %0\;li\t%3, 0"
    [(set_attr "length" "12")])
  
+ (define_insn "riscv_clean_<mode>"
+   [(unspec_volatile:X [(match_operand:X 0 "register_operand" "r")]
+     UNSPECV_CLEAN)]
+   "TARGET_ZICBOM"
+   "cbo.clean\t%a0"
+ )
+ 
+ (define_insn "riscv_flush_<mode>"
+   [(unspec_volatile:X [(match_operand:X 0 "register_operand" "r")]
+     UNSPECV_FLUSH)]
+   "TARGET_ZICBOM"
+   "cbo.flush\t%a0"
+ )
+ 
+ (define_insn "riscv_inval_<mode>"
+   [(unspec_volatile:X [(match_operand:X 0 "register_operand" "r")]
+     UNSPECV_INVAL)]
+   "TARGET_ZICBOM"
+   "cbo.inval\t%a0"
+ )
+ 
+ (define_insn "riscv_zero_<mode>"
+   [(unspec_volatile:X [(match_operand:X 0 "register_operand" "r")]
+     UNSPECV_ZERO)]
+   "TARGET_ZICBOZ"
+   "cbo.zero\t%a0"
+ )
+ 
+ (define_insn "prefetch"
+   [(prefetch (match_operand 0 "address_operand" "r")
+              (match_operand 1 "imm5_operand" "i")
+              (match_operand 2 "const_int_operand" "n"))]
+   "TARGET_ZICBOP"
+ {
+   switch (INTVAL (operands[1]))
+   {
+     case 0: return "prefetch.r\t%a0";
+     case 1: return "prefetch.w\t%a0";
+     default: gcc_unreachable ();
+   }
+ })
+ 
+ (define_insn "riscv_prefetchi_<mode>"
+   [(unspec_volatile:X [(match_operand:X 0 "address_operand" "r")
+               (match_operand:X 1 "imm5_operand" "i")]
+               UNSPECV_PREI)]
+   "TARGET_ZICBOP"
+   "prefetch.i\t%a0"
+ )
+ 
+ (define_expand "extv<mode>"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(sign_extract:GPR (match_operand:GPR 1 "register_operand" "r")
+ 			 (match_operand 2 "const_int_operand")
+ 			 (match_operand 3 "const_int_operand")))]
+   "TARGET_XTHEADBB"
+ )
+ 
+ (define_expand "extzv<mode>"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(zero_extract:GPR (match_operand:GPR 1 "register_operand" "r")
+ 			 (match_operand 2 "const_int_operand")
+ 			 (match_operand 3 "const_int_operand")))]
+   "TARGET_XTHEADBB"
+ {
+   if (TARGET_XTHEADBB
+       && (INTVAL (operands[2]) < 8) && (INTVAL (operands[3]) == 0))
+     FAIL;
+ })
+ 
+ (define_expand "maddhisi4"
+   [(set (match_operand:SI 0 "register_operand")
+ 	(plus:SI
+ 	  (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand"))
+ 		   (sign_extend:SI (match_operand:HI 2 "register_operand")))
+ 	  (match_operand:SI 3 "register_operand")))]
+   "TARGET_XTHEADMAC"
+ )
+ 
+ (define_expand "msubhisi4"
+   [(set (match_operand:SI 0 "register_operand")
+ 	(minus:SI
+ 	  (match_operand:SI 3 "register_operand")
+ 	  (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand"))
+ 		   (sign_extend:SI (match_operand:HI 2 "register_operand")))))]
+   "TARGET_XTHEADMAC"
+ )
+ 
  (include "bitmanip.md")
+ (include "crypto.md")
  (include "sync.md")
  (include "peephole.md")
  (include "pic.md")
  (include "generic.md")
  (include "sifive-7.md")
+ (include "thead.md")
+ (include "vector.md")
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv.opt gcc-13.1.0/gcc/config/riscv/riscv.opt
*** gcc-12.2.0/gcc/config/riscv/riscv.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/riscv.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the RISC-V port of the compiler
  ;
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the RISC-V port of the compiler
  ;
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** Target RejectNegative Joined Var(riscv_c
*** 92,98 ****
  -mcpu=PROCESSOR	Use architecture of and optimize the output for PROCESSOR.
  
  msmall-data-limit=
! Target Joined Separate UInteger Var(g_switch_value) Init(8)
  -msmall-data-limit=N	Put global and static data smaller than <number> bytes into a special section (on some targets).
  
  msave-restore
--- 92,98 ----
  -mcpu=PROCESSOR	Use architecture of and optimize the output for PROCESSOR.
  
  msmall-data-limit=
! Target Joined UInteger Var(g_switch_value) Init(8)
  -msmall-data-limit=N	Put global and static data smaller than <number> bytes into a special section (on some targets).
  
  msave-restore
*************** Target Bool Var(riscv_mrelax) Init(1)
*** 132,137 ****
--- 132,143 ----
  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)
+ 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.
+ 
  Mask(64BIT)
  
  Mask(MUL)
*************** Mask(RVE)
*** 148,153 ****
--- 154,161 ----
  
  Mask(VECTOR)
  
+ Mask(FULL_V)
+ 
  mriscv-attribute
  Target Var(riscv_emit_attribute_p) Init(-1)
  Emit RISC-V ELF attribute.
*************** TargetVariable
*** 198,206 ****
--- 206,220 ----
  int riscv_zi_subext
  
  TargetVariable
+ int riscv_za_subext
+ 
+ TargetVariable
  int riscv_zb_subext
  
  TargetVariable
+ int riscv_zinx_subext
+ 
+ TargetVariable
  int riscv_zk_subext
  
  TargetVariable
*************** int riscv_vector_elen_flags
*** 209,214 ****
--- 223,243 ----
  TargetVariable
  int riscv_zvl_flags
  
+ TargetVariable
+ int riscv_zicmo_subext
+ 
+ TargetVariable
+ int riscv_zf_subext
+ 
+ TargetVariable
+ int riscv_zm_subext
+ 
+ TargetVariable
+ int riscv_sv_subext
+ 
+ TargetVariable
+ int riscv_xthead_subext
+ 
  Enum
  Name(isa_spec_class) Type(enum riscv_isa_spec_class)
  Supported ISA specs (for use with the -misa-spec= option):
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/riscv_vector.h gcc-13.1.0/gcc/config/riscv/riscv_vector.h
*** gcc-12.2.0/gcc/config/riscv/riscv_vector.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/riscv_vector.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,100 ----
+ /* RISC-V 'V' Extension intrinsics include file.
+    Copyright (C) 2022-2023 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_VECTOR_H
+ #define __RISCV_VECTOR_H
+ 
+ #include <stdint.h>
+ #include <stddef.h>
+ 
+ #ifndef __riscv_vector
+ #error "Vector intrinsics require the vector extension."
+ #else
+ #ifdef __cplusplus
+ extern "C" {
+ #endif
+ 
+ enum RVV_CSR {
+   RVV_VSTART = 0,
+   RVV_VXSAT,
+   RVV_VXRM,
+   RVV_VCSR,
+ };
+ 
+ __extension__ extern __inline unsigned long
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vread_csr(enum RVV_CSR csr)
+ {
+   unsigned long rv = 0;
+   switch (csr)
+     {
+     case RVV_VSTART:
+       __asm__ __volatile__ ("csrr\t%0,vstart" : "=r"(rv) : : "memory");
+       break;
+     case RVV_VXSAT:
+       __asm__ __volatile__ ("csrr\t%0,vxsat" : "=r"(rv) : : "memory");
+       break;
+     case RVV_VXRM:
+       __asm__ __volatile__ ("csrr\t%0,vxrm" : "=r"(rv) : : "memory");
+       break;
+     case RVV_VCSR:
+       __asm__ __volatile__ ("csrr\t%0,vcsr" : "=r"(rv) : : "memory");
+       break;
+     }
+   return rv;
+ }
+ 
+ __extension__ extern __inline void
+ __attribute__ ((__always_inline__, __gnu_inline__, __artificial__))
+ vwrite_csr(enum RVV_CSR csr, unsigned long value)
+ {
+   switch (csr)
+     {
+     case RVV_VSTART:
+       __asm__ __volatile__ ("csrw\tvstart,%z0" : : "rJ"(value) : "memory");
+       break;
+     case RVV_VXSAT:
+       __asm__ __volatile__ ("csrw\tvxsat,%z0" : : "rJ"(value) : "memory");
+       break;
+     case RVV_VXRM:
+       __asm__ __volatile__ ("csrw\tvxrm,%z0" : : "rJ"(value) : "memory");
+       break;
+     case RVV_VCSR:
+       __asm__ __volatile__ ("csrw\tvcsr,%z0" : : "rJ"(value) : "memory");
+       break;
+     }
+ }
+ 
+ /* NOTE: This implementation of riscv_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_vector.h.  */
+ #pragma riscv intrinsic "vector"
+ 
+ #ifdef __cplusplus
+ }
+ #endif // __cplusplus
+ #endif // __riscv_vector
+ #endif // __RISCV_VECTOR_H
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/rtems.h gcc-13.1.0/gcc/config/riscv/rtems.h
*** gcc-12.2.0/gcc/config/riscv/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for RISC-V RTEMS systems with ELF format.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for RISC-V RTEMS systems with ELF format.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/sync.md gcc-13.1.0/gcc/config/riscv/sync.md
*** gcc-12.2.0/gcc/config/riscv/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for RISC-V atomic operations.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  
--- 1,5 ----
  ;; Machine description for RISC-V atomic operations.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;; Contributed by Andrew Waterman (andrew@sifive.com).
  ;; Based on MIPS target for GNU compiler.
  
***************
*** 27,36 ****
    UNSPEC_MEMORY_BARRIER
  ])
  
- (define_code_iterator any_atomic [plus ior xor and])
- (define_code_attr atomic_optab
-   [(plus "add") (ior "or") (xor "xor") (and "and")])
- 
  ;; Memory barriers.
  
  (define_expand "mem_thread_fence"
--- 27,32 ----
***************
*** 66,72 ****
        UNSPEC_ATOMIC_STORE))]
    "TARGET_ATOMIC"
    "%F2amoswap.<amo>%A2 zero,%z1,%0"
!   [(set (attr "length") (const_int 8))])
  
  (define_insn "atomic_<atomic_optab><mode>"
    [(set (match_operand:GPR 0 "memory_operand" "+A")
--- 62,69 ----
        UNSPEC_ATOMIC_STORE))]
    "TARGET_ATOMIC"
    "%F2amoswap.<amo>%A2 zero,%z1,%0"
!   [(set_attr "type" "atomic")
!    (set (attr "length") (const_int 8))])
  
  (define_insn "atomic_<atomic_optab><mode>"
    [(set (match_operand:GPR 0 "memory_operand" "+A")
***************
*** 77,83 ****
  	 UNSPEC_SYNC_OLD_OP))]
    "TARGET_ATOMIC"
    "%F2amo<insn>.<amo>%A2 zero,%z1,%0"
!   [(set (attr "length") (const_int 8))])
  
  (define_insn "atomic_fetch_<atomic_optab><mode>"
    [(set (match_operand:GPR 0 "register_operand" "=&r")
--- 74,81 ----
  	 UNSPEC_SYNC_OLD_OP))]
    "TARGET_ATOMIC"
    "%F2amo<insn>.<amo>%A2 zero,%z1,%0"
!   [(set_attr "type" "atomic")
!    (set (attr "length") (const_int 8))])
  
  (define_insn "atomic_fetch_<atomic_optab><mode>"
    [(set (match_operand:GPR 0 "register_operand" "=&r")
***************
*** 90,96 ****
  	 UNSPEC_SYNC_OLD_OP))]
    "TARGET_ATOMIC"
    "%F3amo<insn>.<amo>%A3 %0,%z2,%1"
!   [(set (attr "length") (const_int 8))])
  
  (define_insn "atomic_exchange<mode>"
    [(set (match_operand:GPR 0 "register_operand" "=&r")
--- 88,95 ----
  	 UNSPEC_SYNC_OLD_OP))]
    "TARGET_ATOMIC"
    "%F3amo<insn>.<amo>%A3 %0,%z2,%1"
!   [(set_attr "type" "atomic")
!    (set (attr "length") (const_int 8))])
  
  (define_insn "atomic_exchange<mode>"
    [(set (match_operand:GPR 0 "register_operand" "=&r")
***************
*** 102,108 ****
  	(match_operand:GPR 2 "register_operand" "0"))]
    "TARGET_ATOMIC"
    "%F3amoswap.<amo>%A3 %0,%z2,%1"
!   [(set (attr "length") (const_int 8))])
  
  (define_insn "atomic_cas_value_strong<mode>"
    [(set (match_operand:GPR 0 "register_operand" "=&r")
--- 101,108 ----
  	(match_operand:GPR 2 "register_operand" "0"))]
    "TARGET_ATOMIC"
    "%F3amoswap.<amo>%A3 %0,%z2,%1"
!   [(set_attr "type" "atomic")
!    (set (attr "length") (const_int 8))])
  
  (define_insn "atomic_cas_value_strong<mode>"
    [(set (match_operand:GPR 0 "register_operand" "=&r")
***************
*** 116,122 ****
     (clobber (match_scratch:GPR 6 "=&r"))]
    "TARGET_ATOMIC"
    "%F5 1: lr.<amo>%A5 %0,%1; bne %0,%z2,1f; sc.<amo>%A4 %6,%z3,%1; bnez %6,1b; 1:"
!   [(set (attr "length") (const_int 20))])
  
  (define_expand "atomic_compare_and_swap<mode>"
    [(match_operand:SI 0 "register_operand" "")   ;; bool output
--- 116,123 ----
     (clobber (match_scratch:GPR 6 "=&r"))]
    "TARGET_ATOMIC"
    "%F5 1: lr.<amo>%A5 %0,%1; bne %0,%z2,1f; sc.<amo>%A4 %6,%z3,%1; bnez %6,1b; 1:"
!   [(set_attr "type" "atomic")
!    (set (attr "length") (const_int 20))])
  
  (define_expand "atomic_compare_and_swap<mode>"
    [(match_operand:SI 0 "register_operand" "")   ;; bool output
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/t-riscv gcc-13.1.0/gcc/config/riscv/t-riscv
*** gcc-12.2.0/gcc/config/riscv/t-riscv	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/t-riscv	Wed Apr 26 07:09:39 2023
***************
*** 1,10 ****
  riscv-builtins.o: $(srcdir)/config/riscv/riscv-builtins.cc $(CONFIG_H) \
    $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) $(RECOG_H) langhooks.h \
!   $(DIAGNOSTIC_CORE_H) $(OPTABS_H) $(srcdir)/config/riscv/riscv-ftypes.def \
    $(srcdir)/config/riscv/riscv-modes.def
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-builtins.cc
  
  riscv-sr.o: $(srcdir)/config/riscv/riscv-sr.cc $(CONFIG_H) \
    $(SYSTEM_H) $(TM_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
--- 1,53 ----
+ 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 \
+ 		   riscv-vector-type-indexer.gen.def
+ 
  riscv-builtins.o: $(srcdir)/config/riscv/riscv-builtins.cc $(CONFIG_H) \
    $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) $(RECOG_H) langhooks.h \
!   $(DIAGNOSTIC_CORE_H) $(OPTABS_H) $(RISCV_BUILTINS_H) \
!   $(srcdir)/config/riscv/riscv-ftypes.def \
!   $(srcdir)/config/riscv/riscv-vector-builtins-types.def \
    $(srcdir)/config/riscv/riscv-modes.def
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-builtins.cc
  
+ riscv-vector-builtins.o: $(srcdir)/config/riscv/riscv-vector-builtins.cc \
+   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) $(TM_P_H) \
+   memmodel.h insn-codes.h $(OPTABS_H) $(RECOG_H) $(DIAGNOSTIC_H) $(EXPR_H) \
+   $(FUNCTION_H) fold-const.h gimplify.h explow.h stor-layout.h $(REGS_H) \
+   alias.h langhooks.h attribs.h stringpool.h emit-rtl.h basic-block.h \
+   gimple.h gimple-iterator.h \
+   $(srcdir)/config/riscv/riscv-vector-builtins-shapes.h \
+   $(srcdir)/config/riscv/riscv-vector-builtins-bases.h \
+   $(srcdir)/config/riscv/riscv-vector-builtins-types.def \
+   $(RISCV_BUILTINS_H)
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/riscv/riscv-vector-builtins.cc
+ 
+ riscv-vector-builtins-shapes.o: \
+   $(srcdir)/config/riscv/riscv-vector-builtins-shapes.cc \
+   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) \
+   $(TM_P_H) memmodel.h insn-codes.h $(OPTABS_H) \
+   $(srcdir)/config/riscv/riscv-vector-builtins-shapes.h \
+   $(srcdir)/config/riscv/riscv-vector-builtins-bases.h \
+   $(RISCV_BUILTINS_H)
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/riscv/riscv-vector-builtins-shapes.cc
+ 
+ riscv-vector-builtins-bases.o: \
+   $(srcdir)/config/riscv/riscv-vector-builtins-bases.cc \
+   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) \
+   $(TM_P_H) memmodel.h insn-codes.h $(OPTABS_H) $(RECOG_H) \
+   $(EXPR_H) $(BASIC_BLOCK_H) $(FUNCTION_H) fold-const.h $(GIMPLE_H) \
+   gimple-iterator.h gimplify.h explow.h $(EMIT_RTL_H) tree-vector-builder.h \
+   rtx-vector-builder.h \
+   $(srcdir)/config/riscv/riscv-vector-builtins-shapes.h \
+   $(srcdir)/config/riscv/riscv-vector-builtins-bases.h \
+   $(RISCV_BUILTINS_H)
+ 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ 		$(srcdir)/config/riscv/riscv-vector-builtins-bases.cc
+ 
  riscv-sr.o: $(srcdir)/config/riscv/riscv-sr.cc $(CONFIG_H) \
    $(SYSTEM_H) $(TM_H)
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
*************** riscv-c.o: $(srcdir)/config/riscv/riscv-
*** 15,25 ****
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-c.cc
  
! riscv-d.o: $(srcdir)/config/riscv/riscv-d.cc
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
! riscv-shorten-memrefs.o: $(srcdir)/config/riscv/riscv-shorten-memrefs.cc
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
--- 58,98 ----
  	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
  		$(srcdir)/config/riscv/riscv-c.cc
  
! riscv-vsetvl.o: $(srcdir)/config/riscv/riscv-vsetvl.cc \
!   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(REGS_H) \
!   $(TARGET_H) tree-pass.h df.h rtl-ssa.h cfgcleanup.h insn-config.h \
!   insn-attr.h insn-opinit.h tm-constrs.h cfgrtl.h cfganal.h lcm.h \
!   predict.h profile-count.h $(srcdir)/config/riscv/riscv-vsetvl.h
! 	$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
! 		$(srcdir)/config/riscv/riscv-vsetvl.cc
! 
! riscv-d.o: $(srcdir)/config/riscv/riscv-d.cc \
!   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H)
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
! riscv-shorten-memrefs.o: $(srcdir)/config/riscv/riscv-shorten-memrefs.cc \
!   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TARGET_H)
! 	$(COMPILE) $<
! 	$(POSTCOMPILE)
! 
! riscv-selftests.o: $(srcdir)/config/riscv/riscv-selftests.cc \
!   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) $(TREE_H) output.h \
!   $(C_COMMON_H) $(TARGET_H) $(OPTABS_H) $(EXPR_H) $(INSN_ATTR_H) $(EMIT_RTL_H)
! 	$(COMPILE) $<
! 	$(POSTCOMPILE)
! 
! riscv-v.o: $(srcdir)/config/riscv/riscv-v.cc \
!   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(TREE_H) $(RTL_H) \
!   $(TM_P_H) $(TARGET_H) memmodel.h insn-codes.h $(OPTABS_H) $(RECOG_H) \
!   $(EXPR_H) $(INSN_ATTR_H) explow.h $(EMIT_RTL_H) tree-vector-builder.h \
!   rtx-vector-builder.h
! 	$(COMPILE) $<
! 	$(POSTCOMPILE)
! 
! thead.o: $(srcdir)/config/riscv/thead.cc \
!   $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TARGET_H) backend.h $(RTL_H) \
!   memmodel.h $(EMIT_RTL_H) poly-int.h output.h
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
*************** PASSES_EXTRA += $(srcdir)/config/riscv/r
*** 28,30 ****
--- 101,122 ----
  $(common_out_file): $(srcdir)/config/riscv/riscv-cores.def \
      $(srcdir)/config/riscv/riscv-protos.h \
      $(srcdir)/config/riscv/riscv-subset.h
+ 
+ build/genrvv-type-indexer.o: $(srcdir)/config/riscv/genrvv-type-indexer.cc $(BCONFIG_H) $(SYSTEM_H)	\
+   $(CORETYPES_H) $(GTM_H) errors.h $(GENSUPPORT_H)
+ 
+ build/genrvv-type-indexer$(build_exeext): build/genrvv-type-indexer.o
+ 	+$(LINKER_FOR_BUILD) $(BUILD_LINKERFLAGS) $(BUILD_LDFLAGS) -o $@ \
+ 	    $(filter-out $(BUILD_LIBDEPS), $^) $(BUILD_LIBS)
+ 
+ $(srcdir)/config/riscv/riscv-vector-builtins.def: riscv-vector-type-indexer.gen.def
+ $(srcdir)/config/riscv/riscv-vector-builtins.h: $(srcdir)/config/riscv/riscv-vector-builtins.def
+ 
+ riscv-vector-type-indexer.gen.def: s-riscv-vector-type-indexer.gen.defs ; @true
+ 
+ s-riscv-vector-type-indexer.gen.defs: build/genrvv-type-indexer$(build_exeext)
+ 	$(RUN_GEN) build/genrvv-type-indexer$(build_exeext) tmp-riscv-vector-type-indexer.gen.def
+ 	$(SHELL) $(srcdir)/../move-if-change tmp-riscv-vector-type-indexer.gen.def    riscv-vector-type-indexer.gen.def
+ 	$(STAMP) s-riscv-vector-type-indexer.gen.defs
+ 
+ genprog+=rvv-type-indexer
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/t-rtems gcc-13.1.0/gcc/config/riscv/t-rtems
*** gcc-12.2.0/gcc/config/riscv/t-rtems	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/riscv/t-rtems	Wed Apr 26 07:09:39 2023
***************
*** 1,8 ****
  MULTILIB_OPTIONS	=
  MULTILIB_DIRNAMES	=
  
! MULTILIB_OPTIONS	+= march=rv32i/march=rv32im/march=rv32imafd/march=rv32iac/march=rv32imac/march=rv32imafc/march=rv64imafd/march=rv64imac/march=rv64imafdc
! MULTILIB_DIRNAMES	+= rv32i       rv32im       rv32imafd       rv32iac       rv32imac       rv32imafc       rv64imafd       rv64imac       rv64imafdc
  
  MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
  MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
--- 1,8 ----
  MULTILIB_OPTIONS	=
  MULTILIB_DIRNAMES	=
  
! MULTILIB_OPTIONS	+= march=rv32i/march=rv32iac/march=rv32im/march=rv32ima/march=rv32imac/march=rv32imaf/march=rv32imafc/march=rv32imafd/march=rv32imafdc/march=rv64ima/march=rv64imac/march=rv64imafd/march=rv64imafdc
! MULTILIB_DIRNAMES	+= rv32i       rv32iac       rv32im       rv32ima       rv32imac       rv32imaf       rv32imafc       rv32imafd       rv32imafdc       rv64ima       rv64imac       rv64imafd       rv64imafdc
  
  MULTILIB_OPTIONS	+= mabi=ilp32/mabi=ilp32f/mabi=ilp32d/mabi=lp64/mabi=lp64d
  MULTILIB_DIRNAMES	+= ilp32      ilp32f      ilp32d      lp64      lp64d
*************** MULTILIB_DIRNAMES	+= medany
*** 12,25 ****
  
  MULTILIB_REQUIRED	=
  MULTILIB_REQUIRED	+= march=rv32i/mabi=ilp32
- MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
- MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
  MULTILIB_REQUIRED	+= march=rv32iac/mabi=ilp32
  MULTILIB_REQUIRED	+= march=rv32imac/mabi=ilp32
  MULTILIB_REQUIRED	+= march=rv32imafc/mabi=ilp32f
! MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d
! MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
! MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64
  MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64/mcmodel=medany
! MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d
  MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany
--- 12,26 ----
  
  MULTILIB_REQUIRED	=
  MULTILIB_REQUIRED	+= march=rv32i/mabi=ilp32
  MULTILIB_REQUIRED	+= march=rv32iac/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32im/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32ima/mabi=ilp32
  MULTILIB_REQUIRED	+= march=rv32imac/mabi=ilp32
+ MULTILIB_REQUIRED	+= march=rv32imaf/mabi=ilp32f
  MULTILIB_REQUIRED	+= march=rv32imafc/mabi=ilp32f
! MULTILIB_REQUIRED	+= march=rv32imafd/mabi=ilp32d
! MULTILIB_REQUIRED	+= march=rv32imafdc/mabi=ilp32d
! MULTILIB_REQUIRED	+= march=rv64ima/mabi=lp64/mcmodel=medany
  MULTILIB_REQUIRED	+= march=rv64imac/mabi=lp64/mcmodel=medany
! MULTILIB_REQUIRED	+= march=rv64imafd/mabi=lp64d/mcmodel=medany
  MULTILIB_REQUIRED	+= march=rv64imafdc/mabi=lp64d/mcmodel=medany
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/thead.cc gcc-13.1.0/gcc/config/riscv/thead.cc
*** gcc-12.2.0/gcc/config/riscv/thead.cc	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/thead.cc	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,427 ----
+ /* Subroutines used for code generation for RISC-V.
+    Copyright (C) 2023 Free Software Foundation, Inc.
+    Contributed by Christoph Müllner (christoph.muellner@vrull.eu).
+ 
+    This file is part of GCC.
+ 
+    GCC is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 3, or (at your option)
+    any later version.
+ 
+    GCC is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+ 
+    You should have received a copy of the GNU General Public License
+    along with GCC; see the file COPYING3.  If not see
+    <http://www.gnu.org/licenses/>.  */
+ 
+ #define IN_TARGET_CODE 1
+ 
+ #include "config.h"
+ #include "system.h"
+ #include "coretypes.h"
+ #include "target.h"
+ #include "backend.h"
+ #include "rtl.h"
+ #include "memmodel.h"
+ #include "emit-rtl.h"
+ #include "poly-int.h"
+ #include "output.h"
+ 
+ /* If MEM is in the form of "base+offset", extract the two parts
+    of address and set to BASE and OFFSET, otherwise return false
+    after clearing BASE and OFFSET.  */
+ 
+ static bool
+ extract_base_offset_in_addr (rtx mem, rtx *base, rtx *offset)
+ {
+   rtx addr;
+ 
+   gcc_assert (MEM_P (mem));
+ 
+   addr = XEXP (mem, 0);
+ 
+   if (REG_P (addr))
+     {
+       *base = addr;
+       *offset = const0_rtx;
+       return true;
+     }
+ 
+   if (GET_CODE (addr) == PLUS
+       && REG_P (XEXP (addr, 0)) && CONST_INT_P (XEXP (addr, 1)))
+     {
+       *base = XEXP (addr, 0);
+       *offset = XEXP (addr, 1);
+       return true;
+     }
+ 
+   *base = NULL_RTX;
+   *offset = NULL_RTX;
+ 
+   return false;
+ }
+ 
+ /* If X is a PLUS of a CONST_INT, return the two terms in *BASE_PTR
+    and *OFFSET_PTR.  Return X in *BASE_PTR and 0 in *OFFSET_PTR otherwise.  */
+ 
+ static void
+ split_plus (rtx x, rtx *base_ptr, HOST_WIDE_INT *offset_ptr)
+ {
+   if (GET_CODE (x) == PLUS && CONST_INT_P (XEXP (x, 1)))
+     {
+       *base_ptr = XEXP (x, 0);
+       *offset_ptr = INTVAL (XEXP (x, 1));
+     }
+   else
+     {
+       *base_ptr = x;
+       *offset_ptr = 0;
+     }
+ }
+ 
+ /* Output a mempair instruction with the provided OPERANDS.
+    LOAD_P is true if a we have a pair of loads (stores otherwise).
+    MODE is the access mode (DI or SI).
+    CODE is the extension code (UNKNOWN, SIGN_EXTEND or ZERO_EXTEND).
+    This instruction does not handle invalid inputs gracefully,
+    but is full of assertions to ensure that only valid instructions
+    are emitted.  */
+ 
+ const char *
+ th_mempair_output_move (rtx operands[4], bool load_p,
+ 			machine_mode mode, RTX_CODE code)
+ {
+   rtx reg1, reg2, mem1, mem2, base1, base2;
+   HOST_WIDE_INT offset1, offset2;
+   rtx output_operands[5];
+   const char* format;
+ 
+   gcc_assert (mode == SImode || mode == DImode);
+ 
+   /* Paired 64-bit access instructions have a fixed shift amount of 4.
+      Paired 32-bit access instructions have a fixed shift amount of 3.  */
+   unsigned shamt = (mode == DImode) ? 4 : 3;
+ 
+   if (load_p)
+     {
+ 	reg1 = copy_rtx (operands[0]);
+ 	reg2 = copy_rtx (operands[2]);
+ 	mem1 = copy_rtx (operands[1]);
+ 	mem2 = copy_rtx (operands[3]);
+ 
+ 	if (mode == SImode)
+ 	  if (code == ZERO_EXTEND)
+ 	    format = "th.lwud\t%0, %1, (%2), %3, %4";
+ 	  else //SIGN_EXTEND or UNKNOWN
+ 	    format = "th.lwd\t%0, %1, (%2), %3, %4";
+ 	else
+ 	  format = "th.ldd\t%0, %1, (%2), %3, %4";
+     }
+   else
+     {
+ 	reg1 = copy_rtx (operands[1]);
+ 	reg2 = copy_rtx (operands[3]);
+ 	mem1 = copy_rtx (operands[0]);
+ 	mem2 = copy_rtx (operands[2]);
+ 
+ 	if (mode == SImode)
+ 	  format = "th.swd\t%z0, %z1, (%2), %3, %4";
+ 	else
+ 	  format = "th.sdd\t%z0, %z1, (%2), %3, %4";
+     }
+ 
+   split_plus (XEXP (mem1, 0), &base1, &offset1);
+   split_plus (XEXP (mem2, 0), &base2, &offset2);
+   gcc_assert (rtx_equal_p (base1, base2));
+   auto size1 = MEM_SIZE (mem1);
+   auto size2 = MEM_SIZE (mem2);
+   gcc_assert (known_eq (size1, size2));
+   gcc_assert (known_eq (offset1 + size1, offset2));
+ 
+   HOST_WIDE_INT imm2 = offset1 >> shamt;
+ 
+   /* Make sure all mempair instruction constraints are met.  */
+   gcc_assert (imm2 >= 0 && imm2 < 4);
+   gcc_assert ((imm2 << shamt) == offset1);
+   gcc_assert (REG_P (reg1));
+   gcc_assert (REG_P (reg2));
+   gcc_assert (REG_P (base1));
+   if (load_p)
+     {
+       gcc_assert (REGNO (reg1) != REGNO (reg2));
+       gcc_assert (REGNO (reg1) != REGNO (base1));
+       gcc_assert (REGNO (reg2) != REGNO (base1));
+     }
+ 
+   /* Output the mempair instruction.  */
+   output_operands[0] = copy_rtx (reg1);
+   output_operands[1] = copy_rtx (reg2);
+   output_operands[2] = copy_rtx (base1);
+   output_operands[3] = gen_rtx_CONST_INT (mode, imm2);
+   output_operands[4] = gen_rtx_CONST_INT (mode, shamt);
+   output_asm_insn (format, output_operands);
+ 
+   return "";
+ }
+ 
+ /* Analyse if a pair of loads/stores MEM1 and MEM2 with given MODE
+    are consecutive so they can be merged into a mempair instruction.
+    RESERVED will be set to true, if a reversal of the accesses is
+    required (false otherwise). Returns true if the accesses can be
+    merged (even if reversing is necessary) and false if not.  */
+ 
+ static bool
+ th_mempair_check_consecutive_mems (machine_mode mode, rtx *mem1, rtx *mem2,
+ 				   bool *reversed)
+ {
+   rtx base1, base2, offset1, offset2;
+   extract_base_offset_in_addr (*mem1, &base1, &offset1);
+   extract_base_offset_in_addr (*mem2, &base2, &offset2);
+ 
+   /* Make sure both mems are in base+offset form.  */
+   if (!base1 || !base2)
+     return false;
+ 
+   /* If both mems use the same base register, just check the offsets.  */
+   if (rtx_equal_p (base1, base2))
+     {
+       auto size = GET_MODE_SIZE (mode);
+ 
+       if (known_eq (UINTVAL (offset1) + size, UINTVAL (offset2)))
+ 	{
+ 	  *reversed = false;
+ 	  return true;
+ 	}
+ 
+       if (known_eq (UINTVAL (offset2) + size, UINTVAL (offset1)))
+ 	{
+ 	  *reversed = true;
+ 	  return true;
+ 	}
+ 
+       return false;
+     }
+ 
+   return false;
+ }
+ 
+ /* Check if the given MEM can be used to define the address of a mempair
+    instruction.  */
+ 
+ static bool
+ th_mempair_operand_p (rtx mem, machine_mode mode)
+ {
+   if (!MEM_SIZE_KNOWN_P (mem))
+     return false;
+ 
+   /* Only DI or SI mempair instructions exist.  */
+   gcc_assert (mode == SImode || mode == DImode);
+   auto mem_sz = MEM_SIZE (mem);
+   auto mode_sz = GET_MODE_SIZE (mode);
+   if (!known_eq (mem_sz, mode_sz))
+     return false;
+ 
+   /* Paired 64-bit access instructions have a fixed shift amount of 4.
+      Paired 32-bit access instructions have a fixed shift amount of 3.  */
+   machine_mode mem_mode = GET_MODE (mem);
+   unsigned shamt = (mem_mode == DImode) ? 4 : 3;
+ 
+   rtx base;
+   HOST_WIDE_INT offset;
+   split_plus (XEXP (mem, 0), &base, &offset);
+   HOST_WIDE_INT imm2 = offset >> shamt;
+ 
+   if (imm2 < 0 || imm2 >= 4)
+     return false;
+ 
+   if ((imm2 << shamt) != offset)
+     return false;
+ 
+   return true;
+ }
+ 
+ static bool
+ th_mempair_load_overlap_p (rtx reg1, rtx reg2, rtx mem)
+ {
+   if (REGNO (reg1) == REGNO (reg2))
+     return true;
+ 
+   if (reg_overlap_mentioned_p (reg1, mem))
+     return true;
+ 
+   rtx base;
+   HOST_WIDE_INT offset;
+   split_plus (XEXP (mem, 0), &base, &offset);
+ 
+   if (!REG_P (base))
+     return true;
+ 
+   if (REG_P (base))
+     {
+       if (REGNO (base) == REGNO (reg1)
+ 	  || REGNO (base) == REGNO (reg2))
+ 	return true;
+     }
+ 
+   return false;
+ }
+ 
+ /* Given OPERANDS of consecutive load/store, check if we can merge
+    them into load-pair or store-pair instructions.
+    LOAD is true if they are load instructions.
+    MODE is the mode of memory operation.  */
+ 
+ bool
+ th_mempair_operands_p (rtx operands[4], bool load_p,
+ 		       machine_mode mode)
+ {
+   rtx mem_1, mem_2, reg_1, reg_2;
+ 
+   if (load_p)
+     {
+       reg_1 = operands[0];
+       mem_1 = operands[1];
+       reg_2 = operands[2];
+       mem_2 = operands[3];
+       if (!REG_P (reg_1) || !REG_P (reg_2))
+ 	return false;
+       if (th_mempair_load_overlap_p (reg_1, reg_2, mem_1))
+ 	return false;
+       if (th_mempair_load_overlap_p (reg_1, reg_2, mem_2))
+ 	return false;
+     }
+   else
+     {
+       mem_1 = operands[0];
+       reg_1 = operands[1];
+       mem_2 = operands[2];
+       reg_2 = operands[3];
+     }
+ 
+   /* Check if the registers are GP registers.  */
+   if (!REG_P (reg_1) || !GP_REG_P (REGNO (reg_1))
+       || !REG_P (reg_2) || !GP_REG_P (REGNO (reg_2)))
+     return false;
+ 
+   /* The mems cannot be volatile.  */
+   if (!MEM_P (mem_1) || !MEM_P (mem_2))
+     return false;
+   if (MEM_VOLATILE_P (mem_1) || MEM_VOLATILE_P (mem_2))
+     return false;
+ 
+   /* If we have slow unaligned access, we only accept aligned memory.  */
+   if (riscv_slow_unaligned_access_p
+       && known_lt (MEM_ALIGN (mem_1), GET_MODE_SIZE (mode) * BITS_PER_UNIT))
+     return false;
+ 
+   /* Check if the addresses are in the form of [base+offset].  */
+   bool reversed = false;
+   if (!th_mempair_check_consecutive_mems (mode, &mem_1, &mem_2, &reversed))
+     return false;
+ 
+   /* The first memory accesses must be a mempair operand.  */
+   if ((!reversed && !th_mempair_operand_p (mem_1, mode))
+       || (reversed && !th_mempair_operand_p (mem_2, mode)))
+     return false;
+ 
+   /* The operands must be of the same size.  */
+   gcc_assert (known_eq (GET_MODE_SIZE (GET_MODE (mem_1)),
+ 			GET_MODE_SIZE (GET_MODE (mem_2))));
+ 
+   return true;
+ }
+ 
+ /* Given OPERANDS of consecutive load/store that can be merged,
+    swap them if they are not in ascending order.
+    Return true if swap was performed.  */
+ void
+ th_mempair_order_operands (rtx operands[4], bool load_p, machine_mode mode)
+ {
+   int mem_op = load_p ? 1 : 0;
+   bool reversed = false;
+   if (!th_mempair_check_consecutive_mems (mode,
+ 					  operands + mem_op,
+ 					  operands + mem_op + 2,
+ 					  &reversed))
+     gcc_unreachable ();
+ 
+   if (reversed)
+     {
+       /* Irrespective of whether this is a load or a store,
+ 	 we do the same swap.  */
+       std::swap (operands[0], operands[2]);
+       std::swap (operands[1], operands[3]);
+     }
+ }
+ 
+ /* Similar like riscv_save_reg, but saves two registers to memory
+    and marks the resulting instruction as frame-related.  */
+ 
+ static void
+ th_mempair_save_regs (rtx operands[4])
+ {
+   rtx set1 = gen_rtx_SET (operands[0], operands[1]);
+   rtx set2 = gen_rtx_SET (operands[2], operands[3]);
+   rtx insn = emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set1, set2)));
+   RTX_FRAME_RELATED_P (insn) = 1;
+   add_reg_note (insn, REG_CFA_OFFSET, copy_rtx (set1));
+   add_reg_note (insn, REG_CFA_OFFSET, copy_rtx (set2));
+ }
+ 
+ /* Similar like riscv_restore_reg, but restores two registers from memory
+    and marks the instruction frame-related.  */
+ 
+ static void
+ th_mempair_restore_regs (rtx operands[4])
+ {
+   rtx set1 = gen_rtx_SET (operands[0], operands[1]);
+   rtx set2 = gen_rtx_SET (operands[2], operands[3]);
+   rtx insn = emit_insn (gen_rtx_PARALLEL (VOIDmode, gen_rtvec (2, set1, set2)));
+   RTX_FRAME_RELATED_P (insn) = 1;
+   add_reg_note (insn, REG_CFA_RESTORE, operands[0]);
+   add_reg_note (insn, REG_CFA_RESTORE, operands[2]);
+ }
+ 
+ /* Prepare the OPERANDS array to emit a mempair instruction using the
+    provided information. No checks are performed, the resulting array
+    should be validated using th_mempair_operands_p().  */
+ 
+ void
+ th_mempair_prepare_save_restore_operands (rtx operands[4],
+ 					  bool load_p, machine_mode mode,
+ 					  int regno, HOST_WIDE_INT offset,
+ 					  int regno2, HOST_WIDE_INT offset2)
+ {
+   int reg_op = load_p ? 0 : 1;
+   int mem_op = load_p ? 1 : 0;
+ 
+   rtx mem1 = plus_constant (mode, stack_pointer_rtx, offset);
+   mem1 = gen_frame_mem (mode, mem1);
+   rtx mem2 = plus_constant (mode, stack_pointer_rtx, offset2);
+   mem2 = gen_frame_mem (mode, mem2);
+ 
+   operands[reg_op] = gen_rtx_REG (mode, regno);
+   operands[mem_op] = mem1;
+   operands[2 + reg_op] = gen_rtx_REG (mode, regno2);
+   operands[2 + mem_op] = mem2;
+ }
+ 
+ /* Emit a mempair instruction to save/restore two registers to/from stack.  */
+ 
+ void
+ th_mempair_save_restore_regs (rtx operands[4], bool load_p,
+ 				 machine_mode mode)
+ {
+   gcc_assert (th_mempair_operands_p (operands, load_p, mode));
+ 
+   th_mempair_order_operands (operands, load_p, mode);
+ 
+   if (load_p)
+     th_mempair_restore_regs (operands);
+   else
+     th_mempair_save_regs (operands);
+ }
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/thead.md gcc-13.1.0/gcc/config/riscv/thead.md
*** gcc-12.2.0/gcc/config/riscv/thead.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/thead.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,346 ----
+ ;; Machine description for T-Head vendor extensions
+ ;; Copyright (C) 2021-2022 Free Software Foundation, Inc.
+ 
+ ;; This file is part of GCC.
+ 
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ 
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ 
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ ;; XTheadBa
+ 
+ (define_insn "*th_addsl<mode>4"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(plus:X (ashift:X (match_operand:X 1 "register_operand" "r")
+ 			  (match_operand 2 "const_int_operand" "n"))
+ 		(match_operand:X 3 "register_operand" "r")))]
+   "TARGET_XTHEADBA
+    && (INTVAL (operands[2]) >= 0) && (INTVAL (operands[2]) <= 3)"
+   "th.addsl\t%0,%3,%1,%2"
+   [(set_attr "type" "bitmanip")
+    (set_attr "mode" "<X:MODE>")])
+ 
+ ;; XTheadBb
+ 
+ (define_insn "*th_srri<mode>3"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(rotatert:GPR (match_operand:GPR 1 "register_operand" "r")
+ 		     (match_operand 2 "const_int_operand" "n")))]
+   "TARGET_XTHEADBB && (TARGET_64BIT || <MODE>mode == SImode)"
+   {
+     bool wform = TARGET_64BIT && (<MODE>mode == SImode);
+     operands[2] = GEN_INT (INTVAL (operands[2])
+                   & (GET_MODE_BITSIZE (<MODE>mode) - 1));
+     return wform ? "th.srriw\t%0,%1,%2" : "th.srri\t%0,%1,%2";
+   }
+   [(set_attr "type" "bitmanip")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ (define_insn "*th_ext<mode>4"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(sign_extract:GPR (match_operand:GPR 1 "register_operand" "r")
+ 			(match_operand 2 "const_int_operand")
+ 			(match_operand 3 "const_int_operand")))]
+   "TARGET_XTHEADBB"
+ {
+   operands[2] = GEN_INT (INTVAL (operands[2]) + INTVAL (operands[3]) - 1);
+   return "th.ext\t%0,%1,%2,%3";
+ }
+   [(set_attr "type" "bitmanip")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ (define_insn "*th_extu<mode>4"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(zero_extract:GPR (match_operand:GPR 1 "register_operand" "r")
+ 			(match_operand 2 "const_int_operand")
+ 			(match_operand 3 "const_int_operand")))]
+   "TARGET_XTHEADBB"
+ {
+   operands[2] = GEN_INT (INTVAL (operands[2]) + INTVAL (operands[3]) - 1);
+   return "th.extu\t%0,%1,%2,%3";
+ }
+   [(set_attr "type" "bitmanip")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ (define_insn "*th_clz<mode>2"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(clz:X (match_operand:X 1 "register_operand" "r")))]
+   "TARGET_XTHEADBB"
+   "th.ff1\t%0,%1"
+   [(set_attr "type" "bitmanip")
+    (set_attr "mode" "<X:MODE>")])
+ 
+ (define_insn "*th_rev<mode>2"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(bswap:GPR (match_operand:GPR 1 "register_operand" "r")))]
+   "TARGET_XTHEADBB && (TARGET_64BIT || <MODE>mode == SImode)"
+   {
+     bool wform = TARGET_64BIT && (<MODE>mode == SImode);
+     return wform ? "th.revw\t%0,%1" : "th.rev\t%0,%1";
+   }
+   [(set_attr "type" "bitmanip")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ ;; XTheadBs
+ 
+ (define_insn "*th_tst<mode>3"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	(zero_extract:X (match_operand:X 1 "register_operand" "r")
+ 			(const_int 1)
+ 			(match_operand 2 "const_int_operand" "n")))]
+   "TARGET_XTHEADBS && UINTVAL (operands[2]) < GET_MODE_BITSIZE (<MODE>mode)"
+   "th.tst\t%0,%1,%2"
+   [(set_attr "type" "bitmanip")])
+ 
+ ;; XTheadCondMov
+ 
+ (define_insn "*th_cond_mov<GPR:mode><GPR2:mode>"
+   [(set (match_operand:GPR 0 "register_operand" "=r,r")
+ 	(if_then_else:GPR
+ 	 (match_operator 4 "equality_operator"
+ 		[(match_operand:GPR2 1 "register_operand" "r,r")
+ 		 (const_int 0)])
+ 	 (match_operand:GPR 2 "reg_or_0_operand" "rJ,0")
+ 	 (match_operand:GPR 3 "reg_or_0_operand" "0,rJ")))]
+   "TARGET_XTHEADCONDMOV"
+ {
+   if (which_alternative == 0)
+     return "th.mv%C4z\t%0,%z2,%1";
+ 
+   /* Invert the condition and take else-block.  */
+   rtx_code code = GET_CODE (operands[4]);
+   code = (code == EQ) ? NE : EQ;
+   operands[4] = gen_rtx_fmt_ee (code, VOIDmode, const0_rtx, const0_rtx);
+   return "th.mv%C4z\t%0,%z3,%1";
+ }
+   [(set_attr "type" "condmove")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ (define_insn "*th_cond_gpr_mov<GPR:mode><GPR2:mode>"
+   [(set (match_operand:GPR 0 "register_operand" "=r,r")
+ 	(if_then_else:GPR
+ 	 (match_operand:GPR2 1 "register_operand" "r,r")
+ 	 (match_operand:GPR 2 "reg_or_0_operand" "rJ,0")
+ 	 (match_operand:GPR 3 "reg_or_0_operand" "0,rJ")))]
+   "TARGET_XTHEADCONDMOV"
+   "@
+    th.mvnez\t%0,%z2,%1
+    th.mveqz\t%0,%z3,%1"
+   [(set_attr "type" "condmove")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ ;; XTheadFmv
+ 
+ ;; In RV32, we lack fmv.x.d and fmv.d.x, but XTheadFmv has instructions
+ ;; that cover this case.
+ 
+ (define_insn "th_fmv_hw_w_x"
+   [(set (match_operand:DF 0 "register_operand" "=f")
+ 	(unspec:DF [(match_operand:SI 1 "register_operand" "r")
+                 (match_operand:SI 2 "register_operand" "r")]
+      UNSPEC_XTHEADFMV))]
+   "!TARGET_64BIT && TARGET_XTHEADFMV"
+   "fmv.w.x\t%0,%2\n\tth.fmv.hw.x\t%0,%1"
+   [(set_attr "move_type" "move")
+    (set_attr "mode" "DF")])
+ 
+ (define_insn "th_fmv_x_w"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(unspec:SI [(match_operand:DF 1 "register_operand" "f")]
+      UNSPEC_XTHEADFMV))]
+   "!TARGET_64BIT && TARGET_XTHEADFMV"
+   "fmv.x.w\t%0,%1"
+   [(set_attr "move_type" "move")
+    (set_attr "mode" "DF")])
+ 
+ (define_insn "th_fmv_x_hw"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(unspec:SI [(match_operand:DF 1 "register_operand" "f")]
+      UNSPEC_XTHEADFMV_HW))]
+   "!TARGET_64BIT && TARGET_XTHEADFMV"
+   "th.fmv.x.hw\t%0,%1"
+   [(set_attr "move_type" "move")
+    (set_attr "mode" "DF")])
+ 
+ ;; XTheadMac
+ 
+ (define_insn "*th_mula<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	      (plus:X (mult:X (match_operand:X 1 "register_operand" "r")
+ 			      (match_operand:X 2 "register_operand" "r"))
+ 		      (match_operand:X 3 "register_operand" "0")))]
+   "TARGET_XTHEADMAC"
+   "th.mula\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "<MODE>")]
+ )
+ 
+ (define_insn "*th_mulawsi"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(sign_extend:DI
+ 	  (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 			    (match_operand:SI 2 "register_operand" "r"))
+ 		   (match_operand:SI 3 "register_operand" "0"))))]
+   "TARGET_XTHEADMAC && TARGET_64BIT"
+   "th.mulaw\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_mulawsi2"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	      (plus:SI (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 				(match_operand:SI 2 "register_operand" "r"))
+ 		       (match_operand:SI 3 "register_operand" "0")))]
+   "TARGET_XTHEADMAC && TARGET_64BIT"
+   "th.mulaw\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_maddhisi4"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	  (plus:SI
+ 	    (mult:SI
+ 	      (sign_extend:SI (match_operand:HI 1 "register_operand" " r"))
+ 	      (sign_extend:SI (match_operand:HI 2 "register_operand" " r")))
+ 	    (match_operand:SI 3 "register_operand" " 0")))]
+   "TARGET_XTHEADMAC"
+   "th.mulah\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_sextw_maddhisi4"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(sign_extend:DI
+ 	  (plus:SI
+ 	    (mult:SI
+ 	      (sign_extend:SI (match_operand:HI 1 "register_operand" " r"))
+ 	      (sign_extend:SI (match_operand:HI 2 "register_operand" " r")))
+ 	    (match_operand:SI 3 "register_operand" " 0"))))]
+   "TARGET_XTHEADMAC && TARGET_64BIT"
+   "th.mulah\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_muls<mode>"
+   [(set (match_operand:X 0 "register_operand" "=r")
+ 	      (minus:X (match_operand:X 3 "register_operand" "0")
+ 		       (mult:X (match_operand:X 1 "register_operand" "r")
+ 			       (match_operand:X 2 "register_operand" "r"))))]
+   "TARGET_XTHEADMAC"
+   "th.muls\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "<MODE>")]
+ )
+ 
+ (define_insn "*th_mulswsi"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(sign_extend:DI
+ 	  (minus:SI (match_operand:SI 3 "register_operand" "0")
+ 		    (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 			     (match_operand:SI 2 "register_operand" "r")))))]
+   "TARGET_XTHEADMAC && TARGET_64BIT"
+   "th.mulsw\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_mulswsi2"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(minus:SI (match_operand:SI 3 "register_operand" "0")
+ 		  (mult:SI (match_operand:SI 1 "register_operand" "r")
+ 			   (match_operand:SI 2 "register_operand" "r"))))]
+   "TARGET_XTHEADMAC && TARGET_64BIT"
+   "th.mulsw\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_msubhisi4"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(minus:SI (match_operand:SI 3 "register_operand" " 0")
+ 	  (mult:SI (sign_extend:SI (match_operand:HI 1 "register_operand" " r"))
+ 	    (sign_extend:SI (match_operand:HI 2 "register_operand" " r")))))]
+   "TARGET_XTHEADMAC"
+   "th.mulsh\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ (define_insn "*th_sextw_msubhisi4"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(sign_extend:DI
+ 	  (minus:SI (match_operand:SI 3 "register_operand" " 0")
+ 	    (mult:SI
+ 	      (sign_extend:SI (match_operand:HI 1 "register_operand" " r"))
+ 	      (sign_extend:SI (match_operand:HI 2 "register_operand" " r"))))))]
+   "TARGET_XTHEADMAC && TARGET_64BIT"
+   "th.mulsh\\t%0,%1,%2"
+   [(set_attr "type" "imul")
+    (set_attr "mode" "SI")]
+ )
+ 
+ ;; XTheadMemPair
+ 
+ ;; MEMPAIR load 64/32 bit
+ (define_insn "*th_mempair_load_<GPR:mode>2"
+   [(set (match_operand:GPR 0 "register_operand" "=r")
+ 	(match_operand:GPR 1 "memory_operand" "m"))
+    (set (match_operand:GPR 2 "register_operand" "=r")
+ 	(match_operand:GPR 3 "memory_operand" "m"))]
+   "TARGET_XTHEADMEMPAIR && reload_completed
+    && th_mempair_operands_p (operands, true, <GPR:MODE>mode)"
+   { return th_mempair_output_move (operands, true, <GPR:MODE>mode, UNKNOWN); }
+   [(set_attr "move_type" "load")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ ;; MEMPAIR store 64/32 bit
+ (define_insn "*th_mempair_store_<GPR:mode>2"
+   [(set (match_operand:GPR 0 "memory_operand" "=m")
+ 	(match_operand:GPR 1 "register_operand" "r"))
+    (set (match_operand:GPR 2 "memory_operand" "=m")
+ 	(match_operand:GPR 3 "register_operand" "r"))]
+   "TARGET_XTHEADMEMPAIR && reload_completed
+    && th_mempair_operands_p (operands, false, <GPR:MODE>mode)"
+   { return th_mempair_output_move (operands, false, <GPR:MODE>mode, UNKNOWN); }
+   [(set_attr "move_type" "store")
+    (set_attr "mode" "<GPR:MODE>")])
+ 
+ ;; MEMPAIR load DI extended signed SI
+ (define_insn "*th_mempair_load_extendsidi2"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(sign_extend:DI (match_operand:SI 1 "memory_operand" "m")))
+    (set (match_operand:DI 2 "register_operand" "=r")
+ 	(sign_extend:DI (match_operand:SI 3 "memory_operand" "m")))]
+   "TARGET_XTHEADMEMPAIR && TARGET_64BIT && reload_completed
+    && th_mempair_operands_p (operands, true, SImode)"
+   { return th_mempair_output_move (operands, true, SImode, SIGN_EXTEND); }
+   [(set_attr "move_type" "load")
+    (set_attr "mode" "DI")
+    (set_attr "length" "8")])
+ 
+ ;; MEMPAIR load DI extended unsigned SI
+ (define_insn "*th_mempair_load_zero_extendsidi2"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI (match_operand:SI 1 "memory_operand" "m")))
+    (set (match_operand:DI 2 "register_operand" "=r")
+ 	(zero_extend:DI (match_operand:SI 3 "memory_operand" "m")))]
+   "TARGET_XTHEADMEMPAIR && TARGET_64BIT && reload_completed
+    && th_mempair_operands_p (operands, true, SImode)"
+   { return th_mempair_output_move (operands, true, SImode, ZERO_EXTEND); }
+   [(set_attr "move_type" "load")
+    (set_attr "mode" "DI")
+    (set_attr "length" "8")])
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/vector-iterators.md gcc-13.1.0/gcc/config/riscv/vector-iterators.md
*** gcc-12.2.0/gcc/config/riscv/vector-iterators.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/vector-iterators.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,1077 ----
+ ;; Iterators for RISC-V 'V' Extension for GNU compiler.
+ ;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ ;; Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ ;; This file is part of GCC.
+ 
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ 
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ 
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ (define_c_enum "unspec" [
+   UNSPEC_VSETVL
+   UNSPEC_VUNDEF
+   UNSPEC_VPREDICATE
+   UNSPEC_VLMAX
+   UNSPEC_STRIDED
+ 
+   ;; It's used to specify ordered/unorderd operation.
+   UNSPEC_ORDERED
+   UNSPEC_UNORDERED
+ 
+   ;; vmulh/vmulhu/vmulhsu
+   UNSPEC_VMULHS
+   UNSPEC_VMULHU
+   UNSPEC_VMULHSU
+ 
+   UNSPEC_VADC
+   UNSPEC_VSBC
+   UNSPEC_VMADC
+   UNSPEC_VMSBC
+   UNSPEC_OVERFLOW
+ 
+   UNSPEC_VNCLIP
+   UNSPEC_VNCLIPU
+   UNSPEC_VSSRL
+   UNSPEC_VSSRA
+   UNSPEC_VAADDU
+   UNSPEC_VAADD
+   UNSPEC_VASUBU
+   UNSPEC_VASUB
+   UNSPEC_VSMUL
+ 
+   UNSPEC_VMSBF
+   UNSPEC_VMSIF
+   UNSPEC_VMSOF
+   UNSPEC_VIOTA
+ 
+   UNSPEC_VFRSQRT7
+   UNSPEC_VFREC7
+   UNSPEC_VFCLASS
+ 
+   UNSPEC_VCOPYSIGN
+   UNSPEC_VNCOPYSIGN
+   UNSPEC_VXORSIGN
+ 
+   UNSPEC_VFCVT
+   UNSPEC_UNSIGNED_VFCVT
+   UNSPEC_ROD
+ 
+   UNSPEC_REDUC
+   UNSPEC_WREDUC_SUM
+   UNSPEC_WREDUC_USUM
+   UNSPEC_VSLIDEUP
+   UNSPEC_VSLIDEDOWN
+   UNSPEC_VSLIDE1UP
+   UNSPEC_VSLIDE1DOWN
+   UNSPEC_VFSLIDE1UP
+   UNSPEC_VFSLIDE1DOWN
+   UNSPEC_VRGATHER
+   UNSPEC_VRGATHEREI16
+   UNSPEC_VCOMPRESS
+   UNSPEC_VLEFF
+ ])
+ 
+ (define_mode_iterator V [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32")
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VEEWEXT2 [
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VEEWEXT4 [
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VEEWEXT8 [
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VEEWTRUNC2 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI
+   VNx1SI VNx2SI VNx4SI VNx8SI
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+ ])
+ 
+ (define_mode_iterator VEEWTRUNC4 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI
+   VNx1HI VNx2HI VNx4HI VNx8HI
+ ])
+ 
+ (define_mode_iterator VEEWTRUNC8 [
+   VNx1QI VNx2QI VNx4QI VNx8QI
+ ])
+ 
+ (define_mode_iterator VLMULEXT2 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI
+   VNx1SI VNx2SI VNx4SI VNx8SI
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VLMULEXT4 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI
+   VNx1HI VNx2HI VNx4HI VNx8HI
+   VNx1SI VNx2SI VNx4SI
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VLMULEXT8 [
+   VNx1QI VNx2QI VNx4QI VNx8QI
+   VNx1HI VNx2HI VNx4HI
+   VNx1SI VNx2SI
+   (VNx1DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VLMULEXT16 [
+   VNx1QI VNx2QI VNx4QI
+   VNx1HI VNx2HI
+   VNx1SI
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+ ])
+ 
+ (define_mode_iterator VLMULEXT32 [
+   VNx1QI VNx2QI
+   VNx1HI
+ ])
+ 
+ (define_mode_iterator VLMULEXT64 [
+   VNx1QI
+ ])
+ 
+ (define_mode_iterator VEI16 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VI [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32")
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+ ])
+ 
+ (define_mode_iterator VI_ZVE32 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI
+   VNx1SI VNx2SI VNx4SI VNx8SI
+ ])
+ 
+ (define_mode_iterator VWI [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32")
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VWI_ZVE32 [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI
+ ])
+ 
+ (define_mode_iterator VF [
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VF_ZVE32 [
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+ ])
+ 
+ (define_mode_iterator VWF [
+   VNx1SF VNx2SF VNx4SF VNx8SF (VNx16SF "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VFULLI [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32")
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_FULL_V") (VNx2DI "TARGET_FULL_V")
+   (VNx4DI "TARGET_FULL_V") (VNx8DI "TARGET_FULL_V")
+ ])
+ 
+ (define_mode_iterator VI_QHS [
+   VNx1QI VNx2QI VNx4QI VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32")
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VI_D [
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+ ])
+ 
+ (define_mode_iterator VFULLI_D [
+   (VNx1DI "TARGET_FULL_V") (VNx2DI "TARGET_FULL_V")
+   (VNx4DI "TARGET_FULL_V") (VNx8DI "TARGET_FULL_V")
+ ])
+ 
+ (define_mode_iterator VNX1_QHSD [
+   VNx1QI VNx1HI VNx1SI
+   (VNx1DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VNX2_QHSD [
+   VNx2QI VNx2HI VNx2SI
+   (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VNX4_QHSD [
+   VNx4QI VNx4HI VNx4SI
+   (VNx4DI "TARGET_VECTOR_ELEN_64")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VNX8_QHSD [
+   VNx8QI VNx8HI VNx8SI
+   (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VNX16_QHS [
+   VNx16QI VNx16HI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX32_QH [
+   VNx32QI (VNx32HI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX64_Q [
+   (VNx64QI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX1_QHSDI [
+   VNx1QI VNx1HI VNx1SI
+   (VNx1DI "TARGET_64BIT && TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX2_QHSDI [
+   VNx2QI VNx2HI VNx2SI
+   (VNx2DI "TARGET_64BIT && TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX4_QHSDI [
+   VNx4QI VNx4HI VNx4SI
+   (VNx4DI "TARGET_64BIT && TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX8_QHSDI [
+   VNx8QI VNx8HI VNx8SI
+   (VNx8DI "TARGET_64BIT && TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX16_QHSI [
+   VNx16QI VNx16HI (VNx16SI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VNX32_QHI [
+   VNx32QI (VNx32HI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator V_WHOLE [
+   (VNx4QI "TARGET_MIN_VLEN == 32") VNx8QI VNx16QI VNx32QI (VNx64QI "TARGET_MIN_VLEN > 32")
+   (VNx2HI "TARGET_MIN_VLEN == 32") VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   (VNx1SI "TARGET_MIN_VLEN == 32") VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN == 32")
+   (VNx2SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx4SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx8SF "TARGET_VECTOR_ELEN_FP_32")
+   (VNx16SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator V_FRACT [
+   VNx1QI VNx2QI (VNx4QI "TARGET_MIN_VLEN > 32")
+   VNx1HI (VNx2HI "TARGET_MIN_VLEN > 32")
+   (VNx1SI "TARGET_MIN_VLEN > 32")
+   (VNx1SF "TARGET_VECTOR_ELEN_FP_32 && TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VB [
+   VNx1BI VNx2BI VNx4BI VNx8BI VNx16BI VNx32BI
+   (VNx64BI "TARGET_MIN_VLEN > 32")
+ ])
+ 
+ (define_mode_iterator VWEXTI [
+   VNx1HI VNx2HI VNx4HI VNx8HI VNx16HI (VNx32HI "TARGET_MIN_VLEN > 32")
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+ ])
+ 
+ (define_mode_iterator VWEXTF [
+   (VNx1DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx2DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx4DF "TARGET_VECTOR_ELEN_FP_64")
+   (VNx8DF "TARGET_VECTOR_ELEN_FP_64")
+ ])
+ 
+ (define_mode_iterator VWCONVERTI [
+   (VNx1DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32")
+   (VNx2DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32")
+   (VNx4DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32")
+   (VNx8DI "TARGET_VECTOR_ELEN_64 && TARGET_VECTOR_ELEN_FP_32")
+ ])
+ 
+ (define_mode_iterator VQEXTI [
+   VNx1SI VNx2SI VNx4SI VNx8SI (VNx16SI "TARGET_MIN_VLEN > 32")
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+ ])
+ 
+ (define_mode_iterator VOEXTI [
+   (VNx1DI "TARGET_VECTOR_ELEN_64") (VNx2DI "TARGET_VECTOR_ELEN_64")
+   (VNx4DI "TARGET_VECTOR_ELEN_64") (VNx8DI "TARGET_VECTOR_ELEN_64")
+ ])
+ 
+ (define_mode_attr VLMULX2 [
+   (VNx1QI "VNx2QI") (VNx2QI "VNx4QI") (VNx4QI "VNx8QI") (VNx8QI "VNx16QI") (VNx16QI "VNx32QI") (VNx32QI "VNx64QI")
+   (VNx1HI "VNx2HI") (VNx2HI "VNx4HI") (VNx4HI "VNx8HI") (VNx8HI "VNx16HI") (VNx16HI "VNx32HI")
+   (VNx1SI "VNx2SI") (VNx2SI "VNx4SI") (VNx4SI "VNx8SI") (VNx8SI "VNx16SI")
+   (VNx1DI "VNx2DI") (VNx2DI "VNx4DI") (VNx4DI "VNx8DI")
+   (VNx1SF "VNx2SF") (VNx2SF "VNx4SF") (VNx4SF "VNx8SF") (VNx8SF "VNx16SF")
+   (VNx1DF "VNx2DF") (VNx2DF "VNx4DF") (VNx4DF "VNx8DF")
+ ])
+ 
+ (define_mode_attr VLMULX4 [
+   (VNx1QI "VNx4QI") (VNx2QI "VNx8QI") (VNx4QI "VNx16QI") (VNx8QI "VNx32QI") (VNx16QI "VNx64QI")
+   (VNx1HI "VNx4HI") (VNx2HI "VNx8HI") (VNx4HI "VNx16HI") (VNx8HI "VNx32HI")
+   (VNx1SI "VNx4SI") (VNx2SI "VNx8SI") (VNx4SI "VNx16SI")
+   (VNx1DI "VNx4DI") (VNx2DI "VNx8DI")
+   (VNx1SF "VNx4SF") (VNx2SF "VNx8SF") (VNx4SF "VNx16SF")
+   (VNx1DF "VNx4DF") (VNx2DF "VNx8DF")
+ ])
+ 
+ (define_mode_attr VLMULX8 [
+   (VNx1QI "VNx8QI") (VNx2QI "VNx16QI") (VNx4QI "VNx32QI") (VNx8QI "VNx64QI")
+   (VNx1HI "VNx8HI") (VNx2HI "VNx16HI") (VNx4HI "VNx32HI")
+   (VNx1SI "VNx8SI") (VNx2SI "VNx16SI")
+   (VNx1DI "VNx8DI")
+   (VNx1SF "VNx8SF") (VNx2SF "VNx16SF")
+   (VNx1DF "VNx8DF")
+ ])
+ 
+ (define_mode_attr VLMULX16 [
+   (VNx1QI "VNx16QI") (VNx2QI "VNx32QI") (VNx4QI "VNx64QI")
+   (VNx1HI "VNx16HI") (VNx2HI "VNx32HI")
+   (VNx1SI "VNx16SI")
+   (VNx1SF "VNx16SF")
+ ])
+ 
+ (define_mode_attr VLMULX32 [
+   (VNx1QI "VNx32QI") (VNx2QI "VNx64QI")
+   (VNx1HI "VNx32HI")
+ ])
+ 
+ (define_mode_attr VLMULX64 [
+   (VNx1QI "VNx64QI")
+ ])
+ 
+ (define_mode_attr VINDEX [
+   (VNx1QI "VNx1QI") (VNx2QI "VNx2QI") (VNx4QI "VNx4QI") (VNx8QI "VNx8QI")
+   (VNx16QI "VNx16QI") (VNx32QI "VNx32QI") (VNx64QI "VNx64QI")
+   (VNx1HI "VNx1HI") (VNx2HI "VNx2HI") (VNx4HI "VNx4HI") (VNx8HI "VNx8HI")
+   (VNx16HI "VNx16HI") (VNx32HI "VNx32HI")
+   (VNx1SI "VNx1SI") (VNx2SI "VNx2SI") (VNx4SI "VNx4SI") (VNx8SI "VNx8SI")
+   (VNx16SI "VNx16SI")
+   (VNx1DI "VNx1DI") (VNx2DI "VNx2DI") (VNx4DI "VNx4DI") (VNx8DI "VNx8DI")
+   (VNx1SF "VNx1SI") (VNx2SF "VNx2SI") (VNx4SF "VNx4SI") (VNx8SF "VNx8SI")
+   (VNx16SF "VNx16SI")
+   (VNx1DF "VNx1DI") (VNx2DF "VNx2DI") (VNx4DF "VNx4DI") (VNx8DF "VNx8DI")
+ ])
+ 
+ (define_mode_attr VINDEXEI16 [
+   (VNx1QI "VNx1HI") (VNx2QI "VNx2HI") (VNx4QI "VNx4HI") (VNx8QI "VNx8HI")
+   (VNx16QI "VNx16HI") (VNx32QI "VNx32HI")
+   (VNx1HI "VNx1HI") (VNx2HI "VNx2HI") (VNx4HI "VNx4HI") (VNx8HI "VNx8HI")
+   (VNx16HI "VNx16HI") (VNx32HI "VNx32HI")
+   (VNx1SI "VNx1HI") (VNx2SI "VNx2HI") (VNx4SI "VNx4HI") (VNx8SI "VNx8HI")
+   (VNx16SI "VNx16HI")
+   (VNx1DI "VNx1HI") (VNx2DI "VNx2HI") (VNx4DI "VNx4HI") (VNx8DI "VNx8HI")
+   (VNx1SF "VNx1HI") (VNx2SF "VNx2HI") (VNx4SF "VNx4HI") (VNx8SF "VNx8HI")
+   (VNx16SF "VNx16HI")
+   (VNx1DF "VNx1HI") (VNx2DF "VNx2HI") (VNx4DF "VNx4HI") (VNx8DF "VNx8HI")
+ ])
+ 
+ (define_mode_attr VM [
+   (VNx1QI "VNx1BI") (VNx2QI "VNx2BI") (VNx4QI "VNx4BI") (VNx8QI "VNx8BI") (VNx16QI "VNx16BI") (VNx32QI "VNx32BI") (VNx64QI "VNx64BI")
+   (VNx1HI "VNx1BI") (VNx2HI "VNx2BI") (VNx4HI "VNx4BI") (VNx8HI "VNx8BI") (VNx16HI "VNx16BI") (VNx32HI "VNx32BI")
+   (VNx1SI "VNx1BI") (VNx2SI "VNx2BI") (VNx4SI "VNx4BI") (VNx8SI "VNx8BI") (VNx16SI "VNx16BI")
+   (VNx1DI "VNx1BI") (VNx2DI "VNx2BI") (VNx4DI "VNx4BI") (VNx8DI "VNx8BI")
+   (VNx1SF "VNx1BI") (VNx2SF "VNx2BI") (VNx4SF "VNx4BI") (VNx8SF "VNx8BI") (VNx16SF "VNx16BI")
+   (VNx1DF "VNx1BI") (VNx2DF "VNx2BI") (VNx4DF "VNx4BI") (VNx8DF "VNx8BI")
+ ])
+ 
+ (define_mode_attr vm [
+   (VNx1QI "vnx1bi") (VNx2QI "vnx2bi") (VNx4QI "vnx4bi") (VNx8QI "vnx8bi") (VNx16QI "vnx16bi") (VNx32QI "vnx32bi") (VNx64QI "vnx64bi")
+   (VNx1HI "vnx1bi") (VNx2HI "vnx2bi") (VNx4HI "vnx4bi") (VNx8HI "vnx8bi") (VNx16HI "vnx16bi") (VNx32HI "vnx32bi")
+   (VNx1SI "vnx1bi") (VNx2SI "vnx2bi") (VNx4SI "vnx4bi") (VNx8SI "vnx8bi") (VNx16SI "vnx16bi")
+   (VNx1DI "vnx1bi") (VNx2DI "vnx2bi") (VNx4DI "vnx4bi") (VNx8DI "vnx8bi")
+   (VNx1SF "vnx1bi") (VNx2SF "vnx2bi") (VNx4SF "vnx4bi") (VNx8SF "vnx8bi") (VNx16SF "vnx16bi")
+   (VNx1DF "vnx1bi") (VNx2DF "vnx2bi") (VNx4DF "vnx4bi") (VNx8DF "vnx8bi")
+ ])
+ 
+ (define_mode_attr VEL [
+   (VNx1QI "QI") (VNx2QI "QI") (VNx4QI "QI") (VNx8QI "QI") (VNx16QI "QI") (VNx32QI "QI") (VNx64QI "QI")
+   (VNx1HI "HI") (VNx2HI "HI") (VNx4HI "HI") (VNx8HI "HI") (VNx16HI "HI") (VNx32HI "HI")
+   (VNx1SI "SI") (VNx2SI "SI") (VNx4SI "SI") (VNx8SI "SI") (VNx16SI "SI")
+   (VNx1DI "DI") (VNx2DI "DI") (VNx4DI "DI") (VNx8DI "DI")
+   (VNx1SF "SF") (VNx2SF "SF") (VNx4SF "SF") (VNx8SF "SF") (VNx16SF "SF")
+   (VNx1DF "DF") (VNx2DF "DF") (VNx4DF "DF") (VNx8DF "DF")
+ ])
+ 
+ (define_mode_attr VSUBEL [
+   (VNx1HI "QI") (VNx2HI "QI") (VNx4HI "QI") (VNx8HI "QI") (VNx16HI "QI") (VNx32HI "QI")
+   (VNx1SI "HI") (VNx2SI "HI") (VNx4SI "HI") (VNx8SI "HI") (VNx16SI "HI")
+   (VNx1DI "SI") (VNx2DI "SI") (VNx4DI "SI") (VNx8DI "SI")
+   (VNx1SF "HF") (VNx2SF "HF") (VNx4SF "HF") (VNx8SF "HF") (VNx16SF "HF")
+   (VNx1DF "SF") (VNx2DF "SF") (VNx4DF "SF") (VNx8DF "SF")
+ ])
+ 
+ (define_mode_attr sew [
+   (VNx1QI "8") (VNx2QI "8") (VNx4QI "8") (VNx8QI "8") (VNx16QI "8") (VNx32QI "8") (VNx64QI "8")
+   (VNx1HI "16") (VNx2HI "16") (VNx4HI "16") (VNx8HI "16") (VNx16HI "16") (VNx32HI "16")
+   (VNx1SI "32") (VNx2SI "32") (VNx4SI "32") (VNx8SI "32") (VNx16SI "32")
+   (VNx1DI "64") (VNx2DI "64") (VNx4DI "64") (VNx8DI "64")
+   (VNx1SF "32") (VNx2SF "32") (VNx4SF "32") (VNx8SF "32") (VNx16SF "32")
+   (VNx1DF "64") (VNx2DF "64") (VNx4DF "64") (VNx8DF "64")
+ ])
+ 
+ (define_mode_attr double_trunc_sew [
+   (VNx1HI "8") (VNx2HI "8") (VNx4HI "8") (VNx8HI "8") (VNx16HI "8") (VNx32HI "8")
+   (VNx1SI "16") (VNx2SI "16") (VNx4SI "16") (VNx8SI "16") (VNx16SI "16")
+   (VNx1DI "32") (VNx2DI "32") (VNx4DI "32") (VNx8DI "32")
+   (VNx1SF "16") (VNx2SF "16") (VNx4SF "16") (VNx8SF "16") (VNx16SF "16")
+   (VNx1DF "32") (VNx2DF "32") (VNx4DF "32") (VNx8DF "32")
+ ])
+ 
+ (define_mode_attr quad_trunc_sew [
+   (VNx1SI "8") (VNx2SI "8") (VNx4SI "8") (VNx8SI "8") (VNx16SI "8")
+   (VNx1DI "16") (VNx2DI "16") (VNx4DI "16") (VNx8DI "16")
+   (VNx1SF "8") (VNx2SF "8") (VNx4SF "8") (VNx8SF "8") (VNx16SF "8")
+   (VNx1DF "16") (VNx2DF "16") (VNx4DF "16") (VNx8DF "16")
+ ])
+ 
+ (define_mode_attr oct_trunc_sew [
+   (VNx1DI "8") (VNx2DI "8") (VNx4DI "8") (VNx8DI "8")
+   (VNx1DF "8") (VNx2DF "8") (VNx4DF "8") (VNx8DF "8")
+ ])
+ 
+ (define_mode_attr double_ext_sew [
+   (VNx1QI "16") (VNx2QI "16") (VNx4QI "16") (VNx8QI "16") (VNx16QI "16") (VNx32QI "16")
+   (VNx1HI "32") (VNx2HI "32") (VNx4HI "32") (VNx8HI "32") (VNx16HI "32")
+   (VNx1SI "64") (VNx2SI "64") (VNx4SI "64") (VNx8SI "64")
+   (VNx1SF "64") (VNx2SF "64") (VNx4SF "64") (VNx8SF "64")
+ ])
+ 
+ (define_mode_attr quad_ext_sew [
+   (VNx1QI "32") (VNx2QI "32") (VNx4QI "32") (VNx8QI "32") (VNx16QI "32")
+   (VNx1HI "64") (VNx2HI "64") (VNx4HI "64") (VNx8HI "64")
+ ])
+ 
+ (define_mode_attr oct_ext_sew [
+   (VNx1QI "64") (VNx2QI "64") (VNx4QI "64") (VNx8QI "64")
+ ])
+ 
+ (define_mode_attr V_DOUBLE_TRUNC [
+   (VNx1HI "VNx1QI") (VNx2HI "VNx2QI")  (VNx4HI "VNx4QI")  (VNx8HI "VNx8QI")
+   (VNx16HI "VNx16QI") (VNx32HI "VNx32QI")
+   (VNx1SI "VNx1HI") (VNx2SI "VNx2HI") (VNx4SI "VNx4HI") (VNx8SI "VNx8HI")
+   (VNx16SI "VNx16HI")
+   (VNx1DI "VNx1SI") (VNx2DI "VNx2SI") (VNx4DI "VNx4SI") (VNx8DI "VNx8SI")
+   (VNx1DF "VNx1SF") (VNx2DF "VNx2SF") (VNx4DF "VNx4SF") (VNx8DF "VNx8SF")
+ ])
+ 
+ (define_mode_attr V_QUAD_TRUNC [
+   (VNx1SI "VNx1QI") (VNx2SI "VNx2QI") (VNx4SI "VNx4QI") (VNx8SI "VNx8QI")
+   (VNx16SI "VNx16QI")
+   (VNx1DI "VNx1HI") (VNx2DI "VNx2HI")
+   (VNx4DI "VNx4HI") (VNx8DI "VNx8HI")
+ ])
+ 
+ (define_mode_attr V_OCT_TRUNC [
+   (VNx1DI "VNx1QI") (VNx2DI "VNx2QI") (VNx4DI "VNx4QI") (VNx8DI "VNx8QI")
+ ])
+ 
+ (define_mode_attr VINDEX_DOUBLE_TRUNC [
+   (VNx1HI "VNx1QI") (VNx2HI "VNx2QI")  (VNx4HI "VNx4QI")  (VNx8HI "VNx8QI")
+   (VNx16HI "VNx16QI") (VNx32HI "VNx32QI")
+   (VNx1SI "VNx1HI") (VNx2SI "VNx2HI") (VNx4SI "VNx4HI") (VNx8SI "VNx8HI")
+   (VNx16SI "VNx16HI")
+   (VNx1SF "VNx1HI") (VNx2SF "VNx2HI") (VNx4SF "VNx4HI") (VNx8SF "VNx8HI")
+   (VNx16SF "VNx16HI")
+   (VNx1DI "VNx1SI") (VNx2DI "VNx2SI") (VNx4DI "VNx4SI") (VNx8DI "VNx8SI")
+   (VNx1DF "VNx1SI") (VNx2DF "VNx2SI") (VNx4DF "VNx4SI") (VNx8DF "VNx8SI")
+ ])
+ 
+ (define_mode_attr VINDEX_QUAD_TRUNC [
+   (VNx1SI "VNx1QI") (VNx2SI "VNx2QI") (VNx4SI "VNx4QI") (VNx8SI "VNx8QI")
+   (VNx16SI "VNx16QI")
+   (VNx1DI "VNx1HI") (VNx2DI "VNx2HI")
+   (VNx4DI "VNx4HI") (VNx8DI "VNx8HI")
+   (VNx1SF "VNx1QI") (VNx2SF "VNx2QI") (VNx4SF "VNx4QI") (VNx8SF "VNx8QI")
+   (VNx16SF "VNx16QI")
+   (VNx1DF "VNx1HI") (VNx2DF "VNx2HI")
+   (VNx4DF "VNx4HI") (VNx8DF "VNx8HI")
+ ])
+ 
+ (define_mode_attr VINDEX_OCT_TRUNC [
+   (VNx1DI "VNx1QI") (VNx2DI "VNx2QI") (VNx4DI "VNx4QI") (VNx8DI "VNx8QI")
+   (VNx1DF "VNx1QI") (VNx2DF "VNx2QI") (VNx4DF "VNx4QI") (VNx8DF "VNx8QI")
+ ])
+ 
+ (define_mode_attr VINDEX_DOUBLE_EXT [
+   (VNx1QI "VNx1HI") (VNx2QI "VNx2HI") (VNx4QI "VNx4HI") (VNx8QI "VNx8HI") (VNx16QI "VNx16HI") (VNx32QI "VNx32HI")
+   (VNx1HI "VNx1SI") (VNx2HI "VNx2SI") (VNx4HI "VNx4SI") (VNx8HI "VNx8SI") (VNx16HI "VNx16SI")
+   (VNx1SI "VNx1DI") (VNx2SI "VNx2DI") (VNx4SI "VNx4DI") (VNx8SI "VNx8DI")
+   (VNx1SF "VNx1DI") (VNx2SF "VNx2DI") (VNx4SF "VNx4DI") (VNx8SF "VNx8DI")
+ ])
+ 
+ (define_mode_attr VINDEX_QUAD_EXT [
+   (VNx1QI "VNx1SI") (VNx2QI "VNx2SI") (VNx4QI "VNx4SI") (VNx8QI "VNx8SI") (VNx16QI "VNx16SI")
+   (VNx1HI "VNx1DI") (VNx2HI "VNx2DI") (VNx4HI "VNx4DI") (VNx8HI "VNx8DI")
+ ])
+ 
+ (define_mode_attr VINDEX_OCT_EXT [
+   (VNx1QI "VNx1DI") (VNx2QI "VNx2DI") (VNx4QI "VNx4DI") (VNx8QI "VNx8DI")
+ ])
+ 
+ (define_mode_attr VCONVERT [
+   (VNx1SF "VNx1SI") (VNx2SF "VNx2SI") (VNx4SF "VNx4SI") (VNx8SF "VNx8SI") (VNx16SF "VNx16SI")
+   (VNx1DF "VNx1DI") (VNx2DF "VNx2DI") (VNx4DF "VNx4DI") (VNx8DF "VNx8DI")
+ ])
+ 
+ (define_mode_attr VNCONVERT [
+   (VNx1SF "VNx1HI") (VNx2SF "VNx2HI") (VNx4SF "VNx4HI") (VNx8SF "VNx8HI") (VNx16SF "VNx16HI")
+   (VNx1DI "VNx1SF") (VNx2DI "VNx2SF") (VNx4DI "VNx4SF") (VNx8DI "VNx8SF")
+   (VNx1DF "VNx1SI") (VNx2DF "VNx2SI") (VNx4DF "VNx4SI") (VNx8DF "VNx8SI")
+ ])
+ 
+ (define_mode_attr VLMUL1 [
+   (VNx1QI "VNx8QI") (VNx2QI "VNx8QI") (VNx4QI "VNx8QI")
+   (VNx8QI "VNx8QI") (VNx16QI "VNx8QI") (VNx32QI "VNx8QI") (VNx64QI "VNx8QI")
+   (VNx1HI "VNx4HI") (VNx2HI "VNx4HI") (VNx4HI "VNx4HI")
+   (VNx8HI "VNx4HI") (VNx16HI "VNx4HI") (VNx32HI "VNx4HI")
+   (VNx1SI "VNx2SI") (VNx2SI "VNx2SI") (VNx4SI "VNx2SI")
+   (VNx8SI "VNx2SI") (VNx16SI "VNx2SI")
+   (VNx1DI "VNx1DI") (VNx2DI "VNx1DI")
+   (VNx4DI "VNx1DI") (VNx8DI "VNx1DI")
+   (VNx1SF "VNx2SF") (VNx2SF "VNx2SF")
+   (VNx4SF "VNx2SF") (VNx8SF "VNx2SF") (VNx16SF "VNx2SF")
+   (VNx1DF "VNx1DF") (VNx2DF "VNx1DF")
+   (VNx4DF "VNx1DF") (VNx8DF "VNx1DF")
+ ])
+ 
+ (define_mode_attr VLMUL1_ZVE32 [
+   (VNx1QI "VNx4QI") (VNx2QI "VNx4QI") (VNx4QI "VNx4QI")
+   (VNx8QI "VNx4QI") (VNx16QI "VNx4QI") (VNx32QI "VNx4QI")
+   (VNx1HI "VNx2HI") (VNx2HI "VNx2HI") (VNx4HI "VNx2HI")
+   (VNx8HI "VNx2HI") (VNx16HI "VNx2HI")
+   (VNx1SI "VNx1SI") (VNx2SI "VNx1SI") (VNx4SI "VNx1SI")
+   (VNx8SI "VNx1SI")
+   (VNx1SF "VNx2SF") (VNx2SF "VNx2SF")
+   (VNx4SF "VNx2SF") (VNx8SF "VNx2SF")
+ ])
+ 
+ (define_mode_attr VWLMUL1 [
+   (VNx1QI "VNx4HI") (VNx2QI "VNx4HI") (VNx4QI "VNx4HI")
+   (VNx8QI "VNx4HI") (VNx16QI "VNx4HI") (VNx32QI "VNx4HI") (VNx64QI "VNx4HI")
+   (VNx1HI "VNx2SI") (VNx2HI "VNx2SI") (VNx4HI "VNx2SI")
+   (VNx8HI "VNx2SI") (VNx16HI "VNx2SI") (VNx32HI "VNx2SI")
+   (VNx1SI "VNx1DI") (VNx2SI "VNx1DI") (VNx4SI "VNx1DI")
+   (VNx8SI "VNx1DI") (VNx16SI "VNx1DI")
+   (VNx1SF "VNx1DF") (VNx2SF "VNx1DF")
+   (VNx4SF "VNx1DF") (VNx8SF "VNx1DF") (VNx16SF "VNx1DF")
+ ])
+ 
+ (define_mode_attr VWLMUL1_ZVE32 [
+   (VNx1QI "VNx2HI") (VNx2QI "VNx2HI") (VNx4QI "VNx2HI")
+   (VNx8QI "VNx2HI") (VNx16QI "VNx2HI") (VNx32QI "VNx2HI")
+   (VNx1HI "VNx1SI") (VNx2HI "VNx1SI") (VNx4HI "VNx1SI")
+   (VNx8HI "VNx1SI") (VNx16HI "VNx1SI")
+ ])
+ 
+ (define_mode_attr vlmul1 [
+   (VNx1QI "vnx8qi") (VNx2QI "vnx8qi") (VNx4QI "vnx8qi")
+   (VNx8QI "vnx8qi") (VNx16QI "vnx8qi") (VNx32QI "vnx8qi") (VNx64QI "vnx8qi")
+   (VNx1HI "vnx4hi") (VNx2HI "vnx4hi") (VNx4HI "vnx4hi")
+   (VNx8HI "vnx4hi") (VNx16HI "vnx4hi") (VNx32HI "vnx4hi")
+   (VNx1SI "vnx2si") (VNx2SI "vnx2si") (VNx4SI "vnx2si")
+   (VNx8SI "vnx2si") (VNx16SI "vnx2si")
+   (VNx1DI "vnx1DI") (VNx2DI "vnx1DI")
+   (VNx4DI "vnx1DI") (VNx8DI "vnx1DI")
+   (VNx1SF "vnx2sf") (VNx2SF "vnx2sf")
+   (VNx4SF "vnx2sf") (VNx8SF "vnx2sf") (VNx16SF "vnx2sf")
+   (VNx1DF "vnx1df") (VNx2DF "vnx1df")
+   (VNx4DF "vnx1df") (VNx8DF "vnx1df")
+ ])
+ 
+ (define_mode_attr vlmul1_zve32 [
+   (VNx1QI "vnx4qi") (VNx2QI "vnx4qi") (VNx4QI "vnx4qi")
+   (VNx8QI "vnx4qi") (VNx16QI "vnx4qi") (VNx32QI "vnx4qi")
+   (VNx1HI "vnx2hi") (VNx2HI "vnx2hi") (VNx4HI "vnx2hi")
+   (VNx8HI "vnx2hi") (VNx16HI "vnx2hi")
+   (VNx1SI "vnx1si") (VNx2SI "vnx1si") (VNx4SI "vnx1si")
+   (VNx8SI "vnx1si")
+   (VNx1SF "vnx1sf") (VNx2SF "vnx1sf")
+   (VNx4SF "vnx1sf") (VNx8SF "vnx1sf")
+ ])
+ 
+ (define_mode_attr vwlmul1 [
+   (VNx1QI "vnx4hi") (VNx2QI "vnx4hi") (VNx4QI "vnx4hi")
+   (VNx8QI "vnx4hi") (VNx16QI "vnx4hi") (VNx32QI "vnx4hi") (VNx64QI "vnx4hi")
+   (VNx1HI "vnx2si") (VNx2HI "vnx2si") (VNx4HI "vnx2si")
+   (VNx8HI "vnx2si") (VNx16HI "vnx2si") (VNx32HI "vnx2si")
+   (VNx1SI "vnx2di") (VNx2SI "vnx2di") (VNx4SI "vnx2di")
+   (VNx8SI "vnx2di") (VNx16SI "vnx2di")
+   (VNx1SF "vnx1df") (VNx2SF "vnx1df")
+   (VNx4SF "vnx1df") (VNx8SF "vnx1df") (VNx16SF "vnx1df")
+ ])
+ 
+ (define_mode_attr vwlmul1_zve32 [
+   (VNx1QI "vnx2hi") (VNx2QI "vnx2hi") (VNx4QI "vnx2hi")
+   (VNx8QI "vnx2hi") (VNx16QI "vnx2hi") (VNx32QI "vnx2hi")
+   (VNx1HI "vnx1si") (VNx2HI "vnx1si") (VNx4HI "vnx1si")
+   (VNx8HI "vnx1si") (VNx16HI "vnx1si")
+ ])
+ 
+ (define_mode_attr VDEMOTE [
+   (VNx1DI "VNx2SI") (VNx2DI "VNx4SI")
+   (VNx4DI "VNx8SI") (VNx8DI "VNx16SI")
+ ])
+ 
+ (define_mode_attr VMDEMOTE [
+   (VNx1DI "VNx2BI") (VNx2DI "VNx4BI")
+   (VNx4DI "VNx8BI") (VNx8DI "VNx16BI")
+ ])
+ 
+ (define_int_iterator WREDUC [UNSPEC_WREDUC_SUM UNSPEC_WREDUC_USUM])
+ 
+ (define_int_iterator ORDER [UNSPEC_ORDERED UNSPEC_UNORDERED])
+ 
+ (define_int_iterator VMULH [UNSPEC_VMULHS UNSPEC_VMULHU UNSPEC_VMULHSU])
+ 
+ (define_int_iterator VNCLIP [UNSPEC_VNCLIP UNSPEC_VNCLIPU])
+ 
+ (define_int_iterator VSLIDES [UNSPEC_VSLIDEUP UNSPEC_VSLIDEDOWN])
+ (define_int_iterator VSLIDES1 [UNSPEC_VSLIDE1UP UNSPEC_VSLIDE1DOWN])
+ (define_int_iterator VFSLIDES1 [UNSPEC_VFSLIDE1UP UNSPEC_VFSLIDE1DOWN])
+ 
+ (define_int_iterator VSAT_OP [UNSPEC_VAADDU UNSPEC_VAADD
+ 			      UNSPEC_VASUBU UNSPEC_VASUB UNSPEC_VSMUL
+ 			      UNSPEC_VSSRL UNSPEC_VSSRA])
+ 
+ (define_int_iterator VSAT_ARITH_OP [UNSPEC_VAADDU UNSPEC_VAADD
+ 			      	    UNSPEC_VASUBU UNSPEC_VASUB UNSPEC_VSMUL])
+ (define_int_iterator VSAT_SHIFT_OP [UNSPEC_VSSRL UNSPEC_VSSRA])
+ 
+ (define_int_iterator VMISC [UNSPEC_VMSBF UNSPEC_VMSIF UNSPEC_VMSOF])
+ 
+ (define_int_iterator VFMISC [UNSPEC_VFRSQRT7 UNSPEC_VFREC7])
+ 
+ (define_int_iterator VFCVTS [UNSPEC_VFCVT UNSPEC_UNSIGNED_VFCVT])
+ 
+ (define_int_attr order [
+   (UNSPEC_ORDERED "o") (UNSPEC_UNORDERED "u")
+ ])
+ 
+ (define_int_attr v_su [(UNSPEC_VMULHS "") (UNSPEC_VMULHU "u") (UNSPEC_VMULHSU "su")
+ 		       (UNSPEC_VNCLIP "") (UNSPEC_VNCLIPU "u")
+ 		       (UNSPEC_VFCVT "") (UNSPEC_UNSIGNED_VFCVT "u")
+ 		       (UNSPEC_WREDUC_SUM "") (UNSPEC_WREDUC_USUM "u")])
+ (define_int_attr sat_op [(UNSPEC_VAADDU "aaddu") (UNSPEC_VAADD "aadd")
+ 			 (UNSPEC_VASUBU "asubu") (UNSPEC_VASUB "asub")
+ 			 (UNSPEC_VSMUL "smul") (UNSPEC_VSSRL "ssrl")
+ 			 (UNSPEC_VSSRA "ssra")])
+ (define_int_attr sat_insn_type [(UNSPEC_VAADDU "vaalu") (UNSPEC_VAADD "vaalu")
+ 			 	(UNSPEC_VASUBU "vaalu") (UNSPEC_VASUB "vaalu")
+ 			 	(UNSPEC_VSMUL "vsmul") (UNSPEC_VSSRL "vsshift")
+ 			 	(UNSPEC_VSSRA "vsshift") (UNSPEC_VNCLIP "vnclip")
+ 				(UNSPEC_VNCLIPU "vnclip")])
+ 
+ (define_int_attr misc_op [(UNSPEC_VMSBF "sbf") (UNSPEC_VMSIF "sif") (UNSPEC_VMSOF "sof")
+ 			  (UNSPEC_VFRSQRT7 "rsqrt7") (UNSPEC_VFREC7 "rec7")])
+ 
+ (define_int_attr float_insn_type [(UNSPEC_VFRSQRT7 "vfsqrt") (UNSPEC_VFREC7 "vfrecp")])
+ 
+ (define_int_iterator VCOPYSIGNS [UNSPEC_VCOPYSIGN UNSPEC_VNCOPYSIGN UNSPEC_VXORSIGN])
+ 
+ (define_int_attr copysign [(UNSPEC_VCOPYSIGN "copysign")
+ 			   (UNSPEC_VNCOPYSIGN "ncopysign")
+ 			   (UNSPEC_VXORSIGN "xorsign")])
+ 
+ (define_int_attr nx [(UNSPEC_VCOPYSIGN "") (UNSPEC_VNCOPYSIGN "n")
+ 		     (UNSPEC_VXORSIGN "x")])
+ 
+ (define_int_attr ud [(UNSPEC_VSLIDEUP "up") (UNSPEC_VSLIDEDOWN "down")
+ 		     (UNSPEC_VSLIDE1UP "1up") (UNSPEC_VSLIDE1DOWN "1down")
+ 		     (UNSPEC_VFSLIDE1UP "1up") (UNSPEC_VFSLIDE1DOWN "1down")])
+ 
+ (define_int_attr ud_constraint [(UNSPEC_VSLIDEUP "=&vr,&vr,&vr,&vr") (UNSPEC_VSLIDEDOWN "=vd,vd,vr,vr")
+ 				(UNSPEC_VSLIDE1UP "=&vr,&vr,&vr,&vr") (UNSPEC_VSLIDE1DOWN "=vd,vd,vr,vr")
+ 				(UNSPEC_VFSLIDE1UP "=&vr,&vr,&vr,&vr") (UNSPEC_VFSLIDE1DOWN "=vd,vd,vr,vr")])
+ 
+ (define_int_attr UNSPEC [(UNSPEC_VSLIDE1UP "UNSPEC_VSLIDE1UP")
+ 			 (UNSPEC_VSLIDE1DOWN "UNSPEC_VSLIDE1DOWN")])
+ 
+ (define_code_iterator any_int_binop [plus minus and ior xor ashift ashiftrt lshiftrt
+   smax umax smin umin mult div udiv mod umod
+ ])
+ 
+ (define_code_iterator any_int_unop [neg not])
+ 
+ (define_code_iterator any_commutative_binop [plus and ior xor
+   smax umax smin umin mult
+ ])
+ 
+ (define_code_iterator any_non_commutative_binop [minus div udiv mod umod])
+ 
+ (define_code_iterator any_sat_int_binop [ss_plus ss_minus us_plus us_minus])
+ (define_code_iterator sat_int_plus_binop [ss_plus us_plus])
+ (define_code_iterator sat_int_minus_binop [ss_minus us_minus])
+ 
+ (define_code_iterator any_widen_binop [plus minus mult])
+ (define_code_iterator plus_minus [plus minus])
+ 
+ (define_code_attr madd_msub [(plus "madd") (minus "msub")])
+ (define_code_attr macc_msac [(plus "macc") (minus "msac")])
+ (define_code_attr nmsub_nmadd [(plus "nmsub") (minus "nmadd")])
+ (define_code_attr nmsac_nmacc [(plus "nmsac") (minus "nmacc")])
+ 
+ (define_code_iterator and_ior [and ior])
+ 
+ (define_code_iterator any_float_binop [plus mult smax smin minus div])
+ (define_code_iterator commutative_float_binop [plus mult smax smin])
+ (define_code_iterator non_commutative_float_binop [minus div])
+ (define_code_iterator any_float_unop [neg abs sqrt])
+ 
+ (define_code_iterator any_fix [fix unsigned_fix])
+ (define_code_iterator any_float [float unsigned_float])
+ (define_code_iterator any_reduc [plus umax smax umin smin and ior xor])
+ (define_code_iterator any_freduc [smax smin])
+ (define_code_attr reduc [(plus "sum") (umax "maxu") (smax "max") (umin "minu")
+ 			 (smin "min") (and "and") (ior "or") (xor "xor")])
+ 
+ (define_code_attr fix_cvt [(fix "fix_trunc") (unsigned_fix "fixuns_trunc")])
+ (define_code_attr float_cvt [(float "float") (unsigned_float "floatuns")])
+ 
+ (define_code_attr ninsn [(and "nand") (ior "nor") (xor "xnor")])
+ 
+ (define_code_attr binop_rhs1_predicate [
+ 			(plus "register_operand")
+ 			(minus "vector_arith_operand")
+ 			(ior "register_operand")
+ 			(xor "register_operand")
+ 			(and "register_operand")
+ 			(ashift "register_operand")
+ 			(ashiftrt "register_operand")
+ 			(lshiftrt "register_operand")
+ 			(smin "register_operand")
+ 			(smax "register_operand")
+ 			(umin "register_operand")
+ 			(umax "register_operand")
+ 			(mult "register_operand")
+ 			(div "register_operand")
+ 			(mod "register_operand")
+ 			(udiv "register_operand")
+ 			(umod "register_operand")
+ 			(ss_plus "register_operand")
+ 			(us_plus "register_operand")
+ 			(ss_minus "register_operand")
+ 			(us_minus "register_operand")])
+ 
+ (define_code_attr binop_rhs2_predicate [
+ 			(plus "vector_arith_operand")
+ 			(minus "vector_neg_arith_operand")
+ 			(ior "vector_arith_operand")
+ 			(xor "vector_arith_operand")
+ 			(and "vector_arith_operand")
+ 			(ashift "vector_shift_operand")
+ 			(ashiftrt "vector_shift_operand")
+ 			(lshiftrt "vector_shift_operand")
+ 			(smin "register_operand")
+ 			(smax "register_operand")
+ 			(umin "register_operand")
+ 			(umax "register_operand")
+ 			(mult "register_operand")
+ 			(div "register_operand")
+ 			(mod "register_operand")
+ 			(udiv "register_operand")
+ 			(umod "register_operand")
+ 			(ss_plus "vector_arith_operand")
+ 			(us_plus "vector_arith_operand")
+ 			(ss_minus "vector_neg_arith_operand")
+ 			(us_minus "register_operand")])
+ 
+ (define_code_attr binop_rhs1_constraint [
+ 			(plus "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(minus "vr,vr,vr,vr,vr,vr,vr,vr,vi,vi,vi,vi")
+ 			(ior "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(xor "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(and "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(ashift "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(ashiftrt "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(lshiftrt "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(smin "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(smax "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(umin "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(umax "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(mult "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(div "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(mod "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(udiv "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(umod "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")])
+ 
+ (define_code_attr binop_rhs2_constraint [
+ 			(plus "vr,vr,vr,vr,vi,vi,vi,vi,vr,vr,vr,vr")
+ 			(minus "vr,vr,vr,vr,vj,vj,vj,vj,vr,vr,vr,vr")
+ 			(ior "vr,vr,vr,vr,vi,vi,vi,vi,vr,vr,vr,vr")
+ 			(xor "vr,vr,vr,vr,vi,vi,vi,vi,vr,vr,vr,vr")
+ 			(and "vr,vr,vr,vr,vi,vi,vi,vi,vr,vr,vr,vr")
+ 			(ashift "vr,vr,vr,vr,vk,vk,vk,vk,vr,vr,vr,vr")
+ 			(ashiftrt "vr,vr,vr,vr,vk,vk,vk,vk,vr,vr,vr,vr")
+ 			(lshiftrt "vr,vr,vr,vr,vk,vk,vk,vk,vr,vr,vr,vr")
+ 			(smin "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(smax "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(umin "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(umax "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(mult "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(div "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(mod "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(udiv "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(umod "vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr,vr")
+ 			(ss_plus "vr,vr,vr,vr,vi,vi,vi,vi")
+ 			(us_plus "vr,vr,vr,vr,vi,vi,vi,vi")
+ 			(ss_minus "vr,vr,vr,vr,vj,vj,vj,vj")
+ 			(us_minus "vr,vr,vr,vr,vr,vr,vr,vr")])
+ 
+ (define_code_attr int_binop_insn_type [
+ 			(plus "vialu")
+ 			(minus "vialu")
+ 			(ior "vialu")
+ 			(xor "vialu")
+ 			(and "vialu")
+ 			(ashift "vshift")
+ 			(ashiftrt "vshift")
+ 			(lshiftrt "vshift")
+ 			(smin "viminmax")
+ 			(smax "viminmax")
+ 			(umin "viminmax")
+ 			(umax "viminmax")
+ 			(mult "vimul")
+ 			(div "vidiv")
+ 			(mod "vidiv")
+ 			(udiv "vidiv")
+ 			(umod "vidiv")
+ 			(ss_plus "vsalu")
+ 			(us_plus "vsalu")
+ 			(ss_minus "vsalu")
+ 			(us_minus "vsalu")])
+ 
+ (define_code_attr widen_binop_insn_type [
+ 			(plus "walu")
+ 			(minus "walu")
+ 			(mult "wmul")])
+ 
+ (define_code_attr float_insn_type [
+ 			(plus "vfalu")
+ 			(mult "vfmul")
+ 			(smax "vfminmax")
+ 			(smin "vfminmax")
+ 			(minus "vfalu")
+ 			(div "vfdiv")
+ 			(neg "vfsgnj")
+ 			(abs "vfsgnj")
+ 			(sqrt "vfsqrt")])
+ 
+ ;; <binop_vi_variant_insn> expands to the insn name of binop matching constraint rhs1 is immediate.
+ ;; minus is negated as vadd and ss_minus is negated as vsadd, others remain <insn>.
+ (define_code_attr binop_vi_variant_insn [(ashift "sll.vi")
+ 			       (ashiftrt "sra.vi")
+ 			       (lshiftrt "srl.vi")
+ 			       (div "div.vv")
+ 			       (mod "rem.vv")
+ 			       (udiv "divu.vv")
+ 			       (umod "remu.vv")
+ 			       (ior "or.vi")
+ 			       (xor "xor.vi")
+ 			       (and "and.vi")
+ 			       (plus "add.vi")
+ 			       (minus "add.vi")
+ 			       (smin "min.vv")
+ 			       (smax "max.vv")
+ 			       (umin "minu.vv")
+ 			       (umax "maxu.vv")
+ 			       (mult "mul.vv")
+ 			       (ss_plus "sadd.vi")
+ 			       (us_plus "saddu.vi")
+ 			       (ss_minus "sadd.vi")
+ 			       (us_minus "ssubu.vv")])
+ 
+ ;; <binop_reverse_vi_variant_insn> expands to the insn name of binop matching constraint rhs2 is immediate.
+ ;; minus is reversed as vrsub, others remain <insn>.
+ (define_code_attr binop_reverse_vi_variant_insn [(ashift "sll.vv")
+ 			       (ashiftrt "sra.vv")
+ 			       (lshiftrt "srl.vv")
+ 			       (div "div.vv")
+ 			       (mod "rem.vv")
+ 			       (udiv "divu.vv")
+ 			       (umod "remu.vv")
+ 			       (ior "or.vv")
+ 			       (xor "xor.vv")
+ 			       (and "and.vv")
+ 			       (plus "add.vv")
+ 			       (minus "rsub.vi")
+ 			       (smin "min.vv")
+ 			       (smax "max.vv")
+ 			       (umin "minu.vv")
+ 			       (umax "maxu.vv")
+ 			       (mult "mul.vv")])
+ 
+ (define_code_attr binop_vi_variant_op [(ashift "%3,%v4")
+ 			     (ashiftrt "%3,%v4")
+ 			     (lshiftrt "%3,%v4")
+ 			     (div "%3,%4")
+ 			     (mod "%3,%4")
+ 			     (udiv "%3,%4")
+ 			     (umod "%3,%4")
+ 			     (ior "%3,%v4")
+ 			     (xor "%3,%v4")
+ 			     (and "%3,%v4")
+ 			     (plus "%3,%v4")
+ 			     (minus "%3,%V4")
+ 			     (smin "%3,%4")
+ 			     (smax "%3,%4")
+ 			     (umin "%3,%4")
+ 			     (umax "%3,%4")
+ 			     (mult "%3,%4")
+ 			     (ss_plus "%3,%v4")
+ 			     (us_plus "%3,%v4")
+ 			     (ss_minus "%3,%V4")
+ 			     (us_minus "%3,%4")])
+ 
+ (define_code_attr binop_reverse_vi_variant_op [(ashift "%3,%4")
+ 			      (ashiftrt "%3,%4")
+ 			      (lshiftrt "%3,%4")
+ 			      (div "%3,%4")
+ 			      (mod "%3,%4")
+ 			      (udiv "%3,%4")
+ 			      (umod "%3,%4")
+ 			      (ior "%3,%4")
+ 			      (xor "%3,%4")
+ 			      (and "%3,%4")
+ 			      (plus "%3,%4")
+ 			      (minus "%4,%v3")
+ 			      (smin "%3,%4")
+ 			      (smax "%3,%4")
+ 			      (umin "%3,%4")
+ 			      (umax "%3,%4")
+ 			      (mult "%3,%4")])
+ 
+ (define_code_attr sz [(sign_extend "s") (zero_extend "z")])
diff -Nrcpad gcc-12.2.0/gcc/config/riscv/vector.md gcc-13.1.0/gcc/config/riscv/vector.md
*** gcc-12.2.0/gcc/config/riscv/vector.md	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/riscv/vector.md	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,7282 ----
+ ;; Machine description for RISC-V 'V' Extension for GNU compiler.
+ ;; Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ ;; Contributed by Juzhe Zhong (juzhe.zhong@rivai.ai), RiVAI Technologies Ltd.
+ 
+ ;; This file is part of GCC.
+ 
+ ;; GCC is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 3, or (at your option)
+ ;; any later version.
+ 
+ ;; GCC is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ ;; GNU General Public License for more details.
+ 
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GCC; see the file COPYING3.  If not see
+ ;; <http://www.gnu.org/licenses/>.
+ 
+ ;; This file describes the RISC-V 'V' Extension, Version 1.0.
+ ;;
+ ;; This file include :
+ ;;
+ ;; - Intrinsics (https://github.com/riscv/rvv-intrinsic-doc)
+ ;; - Auto-vectorization (TBD)
+ ;; - Combine optimization (TBD)
+ 
+ (include "vector-iterators.md")
+ 
+ (define_constants [
+    (INVALID_ATTRIBUTE            255)
+    (X0_REGNUM                      0)
+ ])
+ 
+ ;; True if the type is RVV instructions that include VTYPE
+ ;; global status register in the use op list.
+ ;; We known VTYPE has 4 fields: SEW, LMUL, TA, MA.
+ ;; The instruction need any of VTYPE field is set as true
+ ;; in this attribute.
+ (define_attr "has_vtype_op" "false,true"
+   (cond [(eq_attr "type" "vlde,vste,vldm,vstm,vlds,vsts,\
+ 			  vldux,vldox,vstux,vstox,vldff,\
+ 			  vialu,viwalu,vext,vicalu,vshift,vnshift,vicmp,viminmax,\
+ 			  vimul,vidiv,viwmul,vimuladd,viwmuladd,vimerge,vimov,\
+ 			  vsalu,vaalu,vsmul,vsshift,vnclip,\
+ 			  vfalu,vfwalu,vfmul,vfdiv,vfwmul,vfmuladd,vfwmuladd,vfsqrt,vfrecp,\
+ 			  vfcmp,vfminmax,vfsgnj,vfclass,vfmerge,vfmov,\
+ 			  vfcvtitof,vfcvtftoi,vfwcvtitof,vfwcvtftoi,\
+ 			  vfwcvtftof,vfncvtitof,vfncvtftoi,vfncvtftof,\
+ 			  vired,viwred,vfredu,vfredo,vfwredu,vfwredo,\
+ 			  vmalu,vmpop,vmffs,vmsfs,vmiota,vmidx,vimovvx,vimovxv,vfmovvf,vfmovfv,\
+ 			  vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\
+ 			  vgather,vcompress")
+ 	 (const_string "true")]
+ 	(const_string "false")))
+ 
+ ;; True if the type is RVV instructions that include VL
+ ;; global status register in the use op list.
+ ;; The instruction need vector length to be specified is set
+ ;; in this attribute.
+ (define_attr "has_vl_op" "false,true"
+   (cond [(eq_attr "type" "vlde,vste,vldm,vstm,vlds,vsts,\
+ 			  vldux,vldox,vstux,vstox,vldff,\
+ 			  vialu,viwalu,vext,vicalu,vshift,vnshift,vicmp,viminmax,\
+ 			  vimul,vidiv,viwmul,vimuladd,viwmuladd,vimerge,vimov,\
+ 			  vsalu,vaalu,vsmul,vsshift,vnclip,\
+ 			  vfalu,vfwalu,vfmul,vfdiv,vfwmul,vfmuladd,vfwmuladd,vfsqrt,vfrecp,\
+ 			  vfcmp,vfminmax,vfsgnj,vfclass,vfmerge,vfmov,\
+ 			  vfcvtitof,vfcvtftoi,vfwcvtitof,vfwcvtftoi,\
+ 			  vfwcvtftof,vfncvtitof,vfncvtftoi,vfncvtftof,\
+ 			  vired,viwred,vfredu,vfredo,vfwredu,vfwredo,\
+ 			  vmalu,vmpop,vmffs,vmsfs,vmiota,vmidx,vimovxv,vfmovfv,\
+ 			  vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\
+ 			  vgather,vcompress")
+ 	 (const_string "true")]
+ 	(const_string "false")))
+ 
+ ;; The default SEW of RVV instruction. This attribute doesn't mean the instruction
+ ;; is necessary to require SEW check for example vlm.v which require ratio to
+ ;; 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" "VNx1QI,VNx2QI,VNx4QI,VNx8QI,VNx16QI,VNx32QI,VNx64QI,\
+ 			  VNx1BI,VNx2BI,VNx4BI,VNx8BI,VNx16BI,VNx32BI,VNx64BI")
+ 	 (const_int 8)
+ 	 (eq_attr "mode" "VNx1HI,VNx2HI,VNx4HI,VNx8HI,VNx16HI,VNx32HI")
+ 	 (const_int 16)
+ 	 (eq_attr "mode" "VNx1SI,VNx2SI,VNx4SI,VNx8SI,VNx16SI,\
+ 			  VNx1SF,VNx2SF,VNx4SF,VNx8SF,VNx16SF")
+ 	 (const_int 32)
+ 	 (eq_attr "mode" "VNx1DI,VNx2DI,VNx4DI,VNx8DI,\
+ 			  VNx1DF,VNx2DF,VNx4DF,VNx8DF")
+ 	 (const_int 64)]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; Ditto to LMUL.
+ (define_attr "vlmul" ""
+   (cond [(eq_attr "mode" "VNx1QI,VNx1BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx1QImode)")
+ 	 (eq_attr "mode" "VNx2QI,VNx2BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx2QImode)")
+ 	 (eq_attr "mode" "VNx4QI,VNx4BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx4QImode)")
+ 	 (eq_attr "mode" "VNx8QI,VNx8BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx8QImode)")
+ 	 (eq_attr "mode" "VNx16QI,VNx16BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx16QImode)")
+ 	 (eq_attr "mode" "VNx32QI,VNx32BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx32QImode)")
+ 	 (eq_attr "mode" "VNx64QI,VNx64BI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx64QImode)")
+ 	 (eq_attr "mode" "VNx1HI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx1HImode)")
+ 	 (eq_attr "mode" "VNx2HI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx2HImode)")
+ 	 (eq_attr "mode" "VNx4HI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx4HImode)")
+ 	 (eq_attr "mode" "VNx8HI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx8HImode)")
+ 	 (eq_attr "mode" "VNx16HI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx16HImode)")
+ 	 (eq_attr "mode" "VNx32HI")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx32HImode)")
+ 	 (eq_attr "mode" "VNx1SI,VNx1SF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx1SImode)")
+ 	 (eq_attr "mode" "VNx2SI,VNx2SF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx2SImode)")
+ 	 (eq_attr "mode" "VNx4SI,VNx4SF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx4SImode)")
+ 	 (eq_attr "mode" "VNx8SI,VNx8SF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx8SImode)")
+ 	 (eq_attr "mode" "VNx16SI,VNx16SF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx16SImode)")
+ 	 (eq_attr "mode" "VNx1DI,VNx1DF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx1DImode)")
+ 	 (eq_attr "mode" "VNx2DI,VNx2DF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx2DImode)")
+ 	 (eq_attr "mode" "VNx4DI,VNx4DF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx4DImode)")
+ 	 (eq_attr "mode" "VNx8DI,VNx8DF")
+ 	   (symbol_ref "riscv_vector::get_vlmul(E_VNx8DImode)")]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; It is valid for instruction that require sew/lmul ratio.
+ (define_attr "ratio" ""
+   (cond [(eq_attr "type" "vimov,vfmov,vldux,vldox,vstux,vstox,\
+ 			  vialu,vshift,vicmp,vimul,vidiv,vsalu,\
+ 			  vext,viwalu,viwmul,vicalu,vnshift,\
+ 			  vimuladd,vimerge,vaalu,vsmul,vsshift,\
+ 			  vnclip,viminmax,viwmuladd,vmpop,vmffs,vmsfs,\
+ 			  vmiota,vmidx,vfalu,vfmul,vfminmax,vfdiv,\
+ 			  vfwalu,vfwmul,vfsqrt,vfrecp,vfsgnj,vfcmp,\
+ 			  vfmerge,vfcvtitof,vfcvtftoi,vfwcvtitof,\
+ 			  vfwcvtftoi,vfwcvtftof,vfncvtitof,vfncvtftoi,\
+ 			  vfncvtftof,vfmuladd,vfwmuladd,vfclass,vired,\
+ 			  viwred,vfredu,vfredo,vfwredu,vfwredo,vimovvx,\
+ 			  vimovxv,vfmovvf,vfmovfv,vslideup,vslidedown,\
+ 			  vislide1up,vislide1down,vfslide1up,vfslide1down,\
+ 			  vgather,vcompress")
+ 	   (const_int INVALID_ATTRIBUTE)
+ 	 (eq_attr "mode" "VNx1QI,VNx1BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx1QImode)")
+ 	 (eq_attr "mode" "VNx2QI,VNx2BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx2QImode)")
+ 	 (eq_attr "mode" "VNx4QI,VNx4BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx4QImode)")
+ 	 (eq_attr "mode" "VNx8QI,VNx8BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx8QImode)")
+ 	 (eq_attr "mode" "VNx16QI,VNx16BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx16QImode)")
+ 	 (eq_attr "mode" "VNx32QI,VNx32BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx32QImode)")
+ 	 (eq_attr "mode" "VNx64QI,VNx64BI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx64QImode)")
+ 	 (eq_attr "mode" "VNx1HI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx1HImode)")
+ 	 (eq_attr "mode" "VNx2HI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx2HImode)")
+ 	 (eq_attr "mode" "VNx4HI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx4HImode)")
+ 	 (eq_attr "mode" "VNx8HI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx8HImode)")
+ 	 (eq_attr "mode" "VNx16HI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx16HImode)")
+ 	 (eq_attr "mode" "VNx32HI")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx32HImode)")
+ 	 (eq_attr "mode" "VNx1SI,VNx1SF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx1SImode)")
+ 	 (eq_attr "mode" "VNx2SI,VNx2SF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx2SImode)")
+ 	 (eq_attr "mode" "VNx4SI,VNx4SF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx4SImode)")
+ 	 (eq_attr "mode" "VNx8SI,VNx8SF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx8SImode)")
+ 	 (eq_attr "mode" "VNx16SI,VNx16SF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx16SImode)")
+ 	 (eq_attr "mode" "VNx1DI,VNx1DF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx1DImode)")
+ 	 (eq_attr "mode" "VNx2DI,VNx2DF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx2DImode)")
+ 	 (eq_attr "mode" "VNx4DI,VNx4DF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx4DImode)")
+ 	 (eq_attr "mode" "VNx8DI,VNx8DF")
+ 	   (symbol_ref "riscv_vector::get_ratio(E_VNx8DImode)")]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; The index of operand[] to get the merge op.
+ (define_attr "merge_op_idx" ""
+ 	(cond [(eq_attr "type" "vlde,vimov,vfmov,vldm,vlds,vmalu,vldux,vldox,vicmp,\
+ 				vialu,vshift,viminmax,vimul,vidiv,vsalu,vext,viwalu,\
+ 				viwmul,vnshift,vaalu,vsmul,vsshift,vnclip,vmsfs,\
+ 				vmiota,vmidx,vfalu,vfmul,vfminmax,vfdiv,vfwalu,vfwmul,\
+ 				vfsqrt,vfrecp,vfsgnj,vfcmp,vfcvtitof,vfcvtftoi,vfwcvtitof,\
+ 				vfwcvtftoi,vfwcvtftof,vfncvtitof,vfncvtftoi,vfncvtftof,vfclass,\
+ 				vired,viwred,vfredu,vfredo,vfwredu,vfwredo,vimovxv,vfmovfv,\
+ 				vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\
+ 				vgather,vldff,viwmuladd,vfwmuladd")
+ 	       (const_int 2)
+ 
+ 	       (eq_attr "type" "vimerge,vfmerge,vcompress")
+ 	       (const_int 1)
+ 
+ 	       (eq_attr "type" "vimuladd,vfmuladd")
+ 	       (const_int 5)]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; The index of operand[] to get the avl op.
+ (define_attr "vl_op_idx" ""
+   (cond [(eq_attr "type" "vlde,vste,vimov,vfmov,vldm,vstm,vmalu,vsts,vstux,\
+ 			  vstox,vext,vmsfs,vmiota,vfsqrt,vfrecp,vfcvtitof,vldff,\
+ 			  vfcvtftoi,vfwcvtitof,vfwcvtftoi,vfwcvtftof,vfncvtitof,\
+ 			  vfncvtftoi,vfncvtftof,vfclass,vimovxv,vfmovfv,vcompress")
+ 	   (const_int 4)
+ 
+ 	 ;; If operands[3] of "vlds" is not vector mode, it is pred_broadcast.
+ 	 ;; wheras it is pred_strided_load if operands[3] is vector mode.
+          (eq_attr "type" "vlds")
+ 	   (if_then_else (match_test "VECTOR_MODE_P (GET_MODE (operands[3]))")
+              (const_int 5)
+              (const_int 4))
+ 
+ 	 (eq_attr "type" "vldux,vldox,vialu,vshift,viminmax,vimul,vidiv,vsalu,\
+ 			  viwalu,viwmul,vnshift,vimerge,vaalu,vsmul,\
+ 			  vsshift,vnclip,vfalu,vfmul,vfminmax,vfdiv,vfwalu,vfwmul,\
+ 			  vfsgnj,vfmerge,vired,viwred,vfredu,vfredo,vfwredu,vfwredo,\
+ 			  vslideup,vslidedown,vislide1up,vislide1down,vfslide1up,vfslide1down,\
+ 			  vgather,viwmuladd,vfwmuladd")
+ 	   (const_int 5)
+ 
+ 	 (eq_attr "type" "vicmp,vimuladd,vfcmp,vfmuladd")
+ 	   (const_int 6)
+ 
+ 	 (eq_attr "type" "vmpop,vmffs,vmidx")
+ 	   (const_int 3)]
+   (const_int INVALID_ATTRIBUTE)))
+ 
+ ;; The tail policy op value.
+ (define_attr "ta" ""
+   (cond [(eq_attr "type" "vlde,vimov,vfmov,vext,vmiota,vfsqrt,vfrecp,\
+ 			  vfcvtitof,vfcvtftoi,vfwcvtitof,vfwcvtftoi,vfwcvtftof,\
+ 			  vfncvtitof,vfncvtftoi,vfncvtftof,vfclass,vimovxv,vfmovfv,\
+ 			  vcompress,vldff")
+ 	   (symbol_ref "riscv_vector::get_ta(operands[5])")
+ 
+ 	 ;; If operands[3] of "vlds" is not vector mode, it is pred_broadcast.
+ 	 ;; wheras it is pred_strided_load if operands[3] is vector mode.
+ 	 (eq_attr "type" "vlds")
+ 	   (if_then_else (match_test "VECTOR_MODE_P (GET_MODE (operands[3]))")
+ 	     (symbol_ref "riscv_vector::get_ta(operands[6])")
+ 	     (symbol_ref "riscv_vector::get_ta(operands[5])"))
+ 
+ 	 (eq_attr "type" "vldux,vldox,vialu,vshift,viminmax,vimul,vidiv,vsalu,\
+ 			  viwalu,viwmul,vnshift,vimerge,vaalu,vsmul,\
+ 			  vsshift,vnclip,vfalu,vfmul,vfminmax,vfdiv,\
+ 			  vfwalu,vfwmul,vfsgnj,vfmerge,vired,viwred,vfredu,\
+ 			  vfredo,vfwredu,vfwredo,vslideup,vslidedown,vislide1up,\
+ 			  vislide1down,vfslide1up,vfslide1down,vgather,viwmuladd,vfwmuladd")
+ 	   (symbol_ref "riscv_vector::get_ta(operands[6])")
+ 
+ 	 (eq_attr "type" "vimuladd,vfmuladd")
+ 	   (symbol_ref "riscv_vector::get_ta(operands[7])")
+ 
+ 	 (eq_attr "type" "vmidx")
+ 	   (symbol_ref "riscv_vector::get_ta(operands[4])")]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; The mask policy op value.
+ (define_attr "ma" ""
+   (cond [(eq_attr "type" "vlde,vext,vmiota,vfsqrt,vfrecp,vfcvtitof,vfcvtftoi,\
+ 			  vfwcvtitof,vfwcvtftoi,vfwcvtftof,vfncvtitof,vfncvtftoi,\
+ 			  vfncvtftof,vfclass,vldff")
+ 	   (symbol_ref "riscv_vector::get_ma(operands[6])")
+ 
+ 	 ;; If operands[3] of "vlds" is not vector mode, it is pred_broadcast.
+ 	 ;; wheras it is pred_strided_load if operands[3] is vector mode.
+ 	 (eq_attr "type" "vlds")
+ 	   (if_then_else (match_test "VECTOR_MODE_P (GET_MODE (operands[3]))")
+ 	     (symbol_ref "riscv_vector::get_ma(operands[7])")
+ 	     (symbol_ref "riscv_vector::get_ma(operands[6])"))
+ 
+ 	 (eq_attr "type" "vldux,vldox,vialu,vshift,viminmax,vimul,vidiv,vsalu,\
+ 			  viwalu,viwmul,vnshift,vaalu,vsmul,vsshift,\
+ 			  vnclip,vicmp,vfalu,vfmul,vfminmax,vfdiv,\
+ 			  vfwalu,vfwmul,vfsgnj,vfcmp,vslideup,vslidedown,\
+ 			  vislide1up,vislide1down,vfslide1up,vfslide1down,vgather,\
+ 			  viwmuladd,vfwmuladd")
+ 	   (symbol_ref "riscv_vector::get_ma(operands[7])")
+ 
+ 	 (eq_attr "type" "vimuladd,vfmuladd")
+ 	   (symbol_ref "riscv_vector::get_ma(operands[8])")
+ 
+ 	 (eq_attr "type" "vmsfs,vmidx")
+ 	   (symbol_ref "riscv_vector::get_ma(operands[5])")]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; The avl type value.
+ (define_attr "avl_type" ""
+   (cond [(eq_attr "type" "vlde,vldff,vste,vimov,vimov,vimov,vfmov,vext,vimerge,\
+ 			  vfsqrt,vfrecp,vfmerge,vfcvtitof,vfcvtftoi,vfwcvtitof,\
+ 			  vfwcvtftoi,vfwcvtftof,vfncvtitof,vfncvtftoi,vfncvtftof,\
+ 			  vfclass,vired,viwred,vfredu,vfredo,vfwredu,vfwredo,\
+ 			  vimovxv,vfmovfv")
+ 	   (symbol_ref "INTVAL (operands[7])")
+ 	 (eq_attr "type" "vldm,vstm,vimov,vmalu,vmalu")
+ 	   (symbol_ref "INTVAL (operands[5])")
+ 
+ 	 ;; If operands[3] of "vlds" is not vector mode, it is pred_broadcast.
+ 	 ;; wheras it is pred_strided_load if operands[3] is vector mode.
+ 	 (eq_attr "type" "vlds")
+ 	   (if_then_else (match_test "VECTOR_MODE_P (GET_MODE (operands[3]))")
+ 	     (const_int INVALID_ATTRIBUTE)
+ 	     (symbol_ref "INTVAL (operands[7])"))
+ 
+ 	 (eq_attr "type" "vldux,vldox,vialu,vshift,viminmax,vimul,vidiv,vsalu,\
+ 			  viwalu,viwmul,vnshift,vimuladd,vaalu,vsmul,vsshift,\
+ 			  vnclip,vicmp,vfalu,vfmul,vfminmax,vfdiv,vfwalu,vfwmul,\
+ 			  vfsgnj,vfcmp,vfmuladd,vslideup,vslidedown,vislide1up,\
+ 			  vislide1down,vfslide1up,vfslide1down,vgather,viwmuladd,vfwmuladd")
+ 	   (symbol_ref "INTVAL (operands[8])")
+ 	 (eq_attr "type" "vstux,vstox")
+ 	   (symbol_ref "INTVAL (operands[5])")
+ 
+ 	 (eq_attr "type" "vimuladd")
+ 	   (symbol_ref "INTVAL (operands[9])")
+ 
+ 	 (eq_attr "type" "vmsfs,vmidx,vcompress")
+ 	   (symbol_ref "INTVAL (operands[6])")
+ 
+ 	 (eq_attr "type" "vmpop,vmffs")
+ 	   (symbol_ref "INTVAL (operands[4])")]
+ 	(const_int INVALID_ATTRIBUTE)))
+ 
+ ;; -----------------------------------------------------------------
+ ;; ---- Miscellaneous Operations
+ ;; -----------------------------------------------------------------
+ 
+ (define_insn "@vundefined<mode>"
+   [(set (match_operand:V 0 "register_operand" "=vr")
+ 	(unspec:V [(reg:SI X0_REGNUM)] UNSPEC_VUNDEF))]
+   "TARGET_VECTOR"
+   "")
+ 
+ (define_insn "@vundefined<mode>"
+   [(set (match_operand:VB 0 "register_operand" "=vr")
+ 	(unspec:VB [(reg:SI X0_REGNUM)] UNSPEC_VUNDEF))]
+   "TARGET_VECTOR"
+   "")
+ 
+ (define_expand "@vreinterpret<mode>"
+   [(set (match_operand:V 0 "register_operand")
+ 	(match_operand 1 "vector_any_register_operand"))]
+   "TARGET_VECTOR"
+   {
+     emit_move_insn (operands[0], gen_lowpart (<MODE>mode, operands[1]));
+     DONE;
+   }
+ )
+ 
+ (define_expand "@vlmul_extx2<mode>"
+   [(set (match_operand:<VLMULX2> 0 "register_operand")
+   	(subreg:<VLMULX2>
+   	  (match_operand:VLMULEXT2 1 "register_operand") 0))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_expand "@vlmul_extx4<mode>"
+   [(set (match_operand:<VLMULX4> 0 "register_operand")
+   	(subreg:<VLMULX4>
+   	  (match_operand:VLMULEXT4 1 "register_operand") 0))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_expand "@vlmul_extx8<mode>"
+   [(set (match_operand:<VLMULX8> 0 "register_operand")
+   	(subreg:<VLMULX8>
+   	  (match_operand:VLMULEXT8 1 "register_operand") 0))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_expand "@vlmul_extx16<mode>"
+   [(set (match_operand:<VLMULX16> 0 "register_operand")
+   	(subreg:<VLMULX16>
+   	  (match_operand:VLMULEXT16 1 "register_operand") 0))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_expand "@vlmul_extx32<mode>"
+   [(set (match_operand:<VLMULX32> 0 "register_operand")
+   	(subreg:<VLMULX32>
+   	  (match_operand:VLMULEXT32 1 "register_operand") 0))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_expand "@vlmul_extx64<mode>"
+   [(set (match_operand:<VLMULX64> 0 "register_operand")
+   	(subreg:<VLMULX64>
+   	  (match_operand:VLMULEXT64 1 "register_operand") 0))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_insn_and_split "*vlmul_extx2<mode>"
+   [(set (match_operand:<VLMULX2> 0 "register_operand"  "=vr, ?&vr")
+ 	(subreg:<VLMULX2>
+ 	  (match_operand:VLMULEXT2 1 "register_operand" " 0,   vr") 0))]
+   "TARGET_VECTOR"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   emit_insn (gen_rtx_SET (gen_lowpart (<MODE>mode, operands[0]), operands[1]));
+   DONE;
+ })
+ 
+ (define_insn_and_split "*vlmul_extx4<mode>"
+   [(set (match_operand:<VLMULX4> 0 "register_operand"  "=vr, ?&vr")
+ 	(subreg:<VLMULX4>
+ 	  (match_operand:VLMULEXT4 1 "register_operand" " 0,   vr") 0))]
+   "TARGET_VECTOR"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   emit_insn (gen_rtx_SET (gen_lowpart (<MODE>mode, operands[0]), operands[1]));
+   DONE;
+ })
+ 
+ (define_insn_and_split "*vlmul_extx8<mode>"
+   [(set (match_operand:<VLMULX8> 0 "register_operand"  "=vr, ?&vr")
+ 	(subreg:<VLMULX8>
+ 	  (match_operand:VLMULEXT8 1 "register_operand" " 0,   vr") 0))]
+   "TARGET_VECTOR"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   emit_insn (gen_rtx_SET (gen_lowpart (<MODE>mode, operands[0]), operands[1]));
+   DONE;
+ })
+ 
+ (define_insn_and_split "*vlmul_extx16<mode>"
+   [(set (match_operand:<VLMULX16> 0 "register_operand"  "=vr, ?&vr")
+ 	(subreg:<VLMULX16>
+ 	  (match_operand:VLMULEXT16 1 "register_operand" " 0,   vr") 0))]
+   "TARGET_VECTOR"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   emit_insn (gen_rtx_SET (gen_lowpart (<MODE>mode, operands[0]), operands[1]));
+   DONE;
+ })
+ 
+ (define_insn_and_split "*vlmul_extx32<mode>"
+   [(set (match_operand:<VLMULX32> 0 "register_operand"  "=vr, ?&vr")
+ 	(subreg:<VLMULX32>
+ 	  (match_operand:VLMULEXT32 1 "register_operand" " 0,   vr") 0))]
+   "TARGET_VECTOR"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   emit_insn (gen_rtx_SET (gen_lowpart (<MODE>mode, operands[0]), operands[1]));
+   DONE;
+ })
+ 
+ (define_insn_and_split "*vlmul_extx64<mode>"
+   [(set (match_operand:<VLMULX64> 0 "register_operand"  "=vr, ?&vr")
+ 	(subreg:<VLMULX64>
+ 	  (match_operand:VLMULEXT64 1 "register_operand" " 0,   vr") 0))]
+   "TARGET_VECTOR"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   emit_insn (gen_rtx_SET (gen_lowpart (<MODE>mode, operands[0]), operands[1]));
+   DONE;
+ })
+ 
+ ;; This pattern is used to hold the AVL operand for
+ ;; RVV instructions that implicity use VLMAX AVL.
+ ;; RVV instruction implicitly use GPR that is ultimately
+ ;; defined by this pattern is safe for VSETVL pass emit
+ ;; a vsetvl instruction modify this register after RA.
+ ;; Case 1:
+ ;;   vlmax_avl a5
+ ;;   ... (across many blocks)
+ ;;   vadd (implicit use a5)  ====> emit: vsetvl a5,zero
+ ;; Case 2:
+ ;;   vlmax_avl a5
+ ;;   ... (across many blocks)
+ ;;   mv a6,a5
+ ;;   ... (across many blocks)
+ ;;   vadd (implicit use a6)  ====> emit: vsetvl a6,zero
+ ;; Case 3:
+ ;;   vlmax_avl a5
+ ;;   ... (across many blocks)
+ ;;   store mem,a5 (spill)
+ ;;   ... (across many blocks)
+ ;;   load a7,mem (spill)
+ ;;   ... (across many blocks)
+ ;;   vadd (implicit use a7)  ====> emit: vsetvl a7,zero
+ ;; Such cases are all safe for VSETVL PASS to emit a vsetvl
+ ;; instruction that modifies the AVL operand.
+ (define_insn "@vlmax_avl<mode>"
+   [(set (match_operand:P 0 "register_operand" "=r")
+ 	(unspec:P [(match_operand:P 1 "const_int_operand" "i")] UNSPEC_VLMAX))]
+   "TARGET_VECTOR"
+   "")
+ 
+ ;; -----------------------------------------------------------------
+ ;; ---- Moves Operations
+ ;; -----------------------------------------------------------------
+ 
+ (define_expand "mov<mode>"
+   [(set (match_operand:V 0 "reg_or_mem_operand")
+ 	(match_operand:V 1 "general_operand"))]
+   "TARGET_VECTOR"
+ {
+   /* For whole register move, we transform the pattern into the format
+      that excludes the clobber of scratch register.
+ 
+      We include clobber of a scalar scratch register which is going to be
+      used for emit of vsetvl instruction after reload_completed since we
+      need vsetvl instruction to set VL/VTYPE global status for fractional
+      vector load/store.
+ 
+      For example:
+        [(set (match_operand:VNx1QI v24)
+ 	     (match_operand:VNx1QI (mem: a4)))
+ 	     (clobber (scratch:SI a5))]
+      ====>> vsetvl a5,zero,e8,mf8
+      ====>> vle8.v v24,(a4)
+ 
+      Philosophy:
+ 
+        - Clobber a scalar scratch register for each mov<mode>.
+ 
+        - Classify the machine_mode mode = <MODE>mode into 2 class:
+ 	 Whole register move and fractional register move.
+ 
+        - Transform and remove scratch clobber register for whole
+ 	 register move so that we can avoid occupying the scalar
+ 	 registers.
+ 
+        - 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 (riscv_vector::legitimize_move (operands[0], operands[1], <VM>mode))
+     DONE;
+ })
+ 
+ ;; This pattern is used for code-gen for whole register load/stores.
+ ;; Also applicable for all register moves.
+ ;; Fractional vector modes load/store are not allowed to match this pattern.
+ ;; Mask modes load/store are not allowed to match this pattern.
+ ;; We seperate "*mov<mode>" into "*mov<mode>_whole" and "*mov<mode>_fract" because
+ ;; we don't want to include fractional load/store in "*mov<mode>" which will
+ ;; create unexpected patterns in LRA.
+ ;; For example:
+ ;; ira rtl:
+ ;;   (insn 20 19 9 2 (set (reg/v:VNx2QI 97 v1 [ v1 ])
+ ;;      (reg:VNx2QI 134 [ _1 ])) "rvv.c":9:22 571 {*movvnx2qi_fract}
+ ;;   (nil))
+ ;; When the value of pseudo register 134 of the insn above is discovered already
+ ;; spilled in the memory during LRA.
+ ;; LRA will reload this pattern into a memory load instruction pattern.
+ ;; Because VNx2QI is a fractional vector, we want LRA reload this pattern into
+ ;;  (insn 20 19 9 2 (parallel [
+ ;;       (set (reg:VNx2QI 98 v2 [orig:134 _1 ] [134])
+ ;;           (mem/c:VNx2QI (reg:SI 13 a3 [155]) [1 %sfp+[-2, -2] S[2, 2] A8]))
+ ;;       (clobber (reg:SI 14 a4 [149]))])
+ ;; So that we could be able to emit vsetvl instruction using clobber sratch a4.
+ ;; To let LRA generate the expected pattern, we should exclude fractional vector
+ ;; load/store in "*mov<mode>_whole". Otherwise, it will reload this pattern into:
+ ;;  (insn 20 19 9 2 (set (reg:VNx2QI 98 v2 [orig:134 _1 ] [134])
+ ;;           (mem/c:VNx2QI (reg:SI 13 a3 [155]) [1 %sfp+[-2, -2] S[2, 2] A8])))
+ ;; which is not the pattern we want.
+ ;; According the facts above, we make "*mov<mode>_whole" includes load/store/move for whole
+ ;; vector modes according to '-march' and "*mov<mode>_fract" only include fractional vector modes.
+ (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"
+   "@
+    vl%m1re<sew>.v\t%0,%1
+    vs%m1r.v\t%1,%0
+    vmv%m1r.v\t%0,%1"
+   [(set_attr "type" "vldr,vstr,vmov")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*mov<mode>_fract"
+   [(set (match_operand:V_FRACT 0 "register_operand" "=vr")
+ 	(match_operand:V_FRACT 1 "register_operand" " vr"))]
+   "TARGET_VECTOR"
+   "vmv1r.v\t%0,%1"
+   [(set_attr "type" "vmov")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "mov<mode>"
+   [(set (match_operand:VB 0 "reg_or_mem_operand")
+ 	(match_operand:VB 1 "general_operand"))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::legitimize_move (operands[0], operands[1], <MODE>mode))
+     DONE;
+ })
+ 
+ (define_insn "*mov<mode>"
+   [(set (match_operand:VB 0 "register_operand" "=vr")
+ 	(match_operand:VB 1 "register_operand" " vr"))]
+   "TARGET_VECTOR"
+   "vmv1r.v\t%0,%1"
+   [(set_attr "type" "vmov")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@mov<V_FRACT:mode><P:mode>_lra"
+   [(parallel
+     [(set (match_operand:V_FRACT 0 "reg_or_mem_operand")
+ 	  (match_operand:V_FRACT 1 "reg_or_mem_operand"))
+    (clobber (match_scratch:P 2))])]
+   "TARGET_VECTOR && (lra_in_progress || reload_completed)"
+ {})
+ 
+ (define_expand "@mov<VB:mode><P:mode>_lra"
+   [(parallel
+     [(set (match_operand:VB 0 "reg_or_mem_operand")
+ 	  (match_operand:VB 1 "reg_or_mem_operand"))
+    (clobber (match_scratch:P 2))])]
+   "TARGET_VECTOR && (lra_in_progress || reload_completed)"
+ {})
+ 
+ (define_insn_and_split "*mov<V_FRACT:mode><P:mode>_lra"
+   [(set (match_operand:V_FRACT 0 "reg_or_mem_operand" "=vr, m,vr")
+ 	(match_operand:V_FRACT 1 "reg_or_mem_operand" "  m,vr,vr"))
+    (clobber (match_scratch:P 2 "=&r,&r,X"))]
+   "TARGET_VECTOR && (lra_in_progress || reload_completed)"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   if (REG_P (operands[0]) && REG_P (operands[1]))
+       emit_insn (gen_rtx_SET (operands[0], operands[1]));
+   else
+     {
+       riscv_vector::emit_vlmax_vsetvl (<V_FRACT:MODE>mode, operands[2]);
+       riscv_vector::emit_vlmax_op (code_for_pred_mov (<V_FRACT:MODE>mode),
+       		operands[0], operands[1], operands[2], <VM>mode);
+     }
+   DONE;
+ })
+ 
+ (define_insn_and_split "*mov<VB:mode><P:mode>_lra"
+   [(set (match_operand:VB 0 "reg_or_mem_operand" "=vr, m,vr")
+ 	(match_operand:VB 1 "reg_or_mem_operand" "  m,vr,vr"))
+    (clobber (match_scratch:P 2 "=&r,&r,X"))]
+   "TARGET_VECTOR && (lra_in_progress || reload_completed)"
+   "#"
+   "&& reload_completed"
+   [(const_int 0)]
+ {
+   if (REG_P (operands[0]) && REG_P (operands[1]))
+       emit_insn (gen_rtx_SET (operands[0], operands[1]));
+   else
+     {
+       riscv_vector::emit_vlmax_vsetvl (<VB:MODE>mode, operands[2]);
+       riscv_vector::emit_vlmax_op (code_for_pred_mov (<VB:MODE>mode),
+       		operands[0], operands[1], operands[2], <VB:MODE>mode);
+     }
+   DONE;
+ })
+ 
+ ;; -----------------------------------------------------------------
+ ;; ---- Duplicate Operations
+ ;; -----------------------------------------------------------------
+ 
+ ;; According to GCC internal:
+ ;; This pattern only handles duplicates of non-constant inputs.
+ ;; Constant vectors go through the movm pattern instead.
+ ;; So "direct_broadcast_operand" can only be mem or reg, no CONSTANT.
+ (define_expand "vec_duplicate<mode>"
+   [(set (match_operand:V 0 "register_operand")
+ 	(vec_duplicate:V
+ 	  (match_operand:<VEL> 1 "direct_broadcast_operand")))]
+   "TARGET_VECTOR"
+   {
+     riscv_vector::emit_vlmax_op (code_for_pred_broadcast (<MODE>mode),
+ 		operands[0], operands[1], <VM>mode);
+     DONE;
+   }
+ )
+ 
+ ;; -----------------------------------------------------------------
+ ;; ---- 6. Configuration-Setting Instructions
+ ;; -----------------------------------------------------------------
+ ;; Includes:
+ ;; - 6.1 vsetvli/vsetivl/vsetvl instructions
+ ;; -----------------------------------------------------------------
+ 
+ ;; we dont't define vsetvli as unspec_volatile which has side effects.
+ ;; This instruction can be scheduled by the instruction scheduler.
+ ;; This means these instructions will be deleted when
+ ;; there is no instructions using vl or vtype in the following.
+ ;; rd  | rs1 | AVL value | Effect on vl
+ ;; -   | !x0 | x[rs1]    | Normal stripmining
+ ;; !x0 | x0  | ~0        | Set vl to VLMAX
+ ;; operands[0]: VL.
+ ;; operands[1]: AVL.
+ ;; operands[2]: SEW
+ ;; operands[3]: LMUL
+ ;; operands[4]: Tail policy 0 or 1 (undisturbed/agnostic)
+ ;; operands[5]: Mask policy 0 or 1 (undisturbed/agnostic)
+ 
+ ;; We define 2 types of "vsetvl*" instruction patterns:
+ 
+ ;; -  "@vsetvl<mode>" is a parallel format which has side effects.
+ 
+ ;; -  "@vsetvl<mode>_no_side_effects" has no side effects.
+ 
+ ;; -  "@vsetvl<mode>" is used by "vsetvl" intrinsics and "insert-vsetvl" PASS.
+ 
+ ;; -  "@vsetvl<mode>_no_side_effects" is used by GCC standard patterns.
+ 
+ ;; -  "@vsetvl<mode>" includes VL/VTYPE global registers status (define set)
+ ;; and each RVV instruction includes VL/VTYPE global registers status (use)
+ ;; so that we can guarantee each RVV instruction can execute with correct
+ ;; VL/VTYPE global registers status after "insert-vsetvl" PASS.
+ 
+ ;; -  "@vsetvl<mode>_no_side_effects" has no side effects and excludes VL/VTYPE
+ ;; global registers status (define set). It's only used by GCC standard pattern
+ ;; expansion. For example: "mov<mode>" pattern for fractional vector modes which
+ ;; need to set VL/VTYPE. Then we could manually call this pattern to gain benefits
+ ;; from the optimization of each GCC internal PASS.
+ 
+ ;; 1. void foo (float *in, float *out)
+ ;;    {
+ ;;      vfloat32mf2_t v = *(vfloat32mf2_t*)in;
+ ;;      *(vfloat32mf2_t*)out = v;
+ ;;    }
+ ;; We could eliminate the second "vsetvl" by calling "@vsetvl<mode>_no_side_effects".
+ ;;
+ ;; "@vsetvl<mode>":               ;; "@vsetvl<mode>_no_side_effects":
+ ;; vsetvli a4,zero,e32,mf2,ta,ma  ;; vsetvli a4,zero,e32,mf2,ta,ma
+ ;; vle32.v v24,(a0)               ;; vle32.v v24,(a0)
+ ;; vsetvli a4,zero,e32,mf2,ta,ma  ;; --
+ ;; vse32.v v24,(a1)               ;; vse32.v v24,(a1)
+ ;; ret                            ;; ret
+ 
+ ;; 2. void foo (int8_t *in, int8_t *out, int M)
+ ;;    {
+ ;;      for (int i = 0; i < M; i++){
+ ;;        vint8mf2_t v = *(vint8mf2_t*)(in + i);
+ ;;        *(vint8mf2_t*)(out + i) = v;
+ ;;      }
+ ;;    }
+ ;;
+ ;; Hoist "vsetvl" instruction in LICM:
+ ;; "@vsetvl<mode>":                  ;; "@vsetvl<mode>_no_side_effects":
+ ;; -                                 ;;   vsetvli a4,zero,e32,mf2,ta,ma
+ ;; LOOP:                             ;; LOOP:
+ ;;   vsetvli a4,zero,e32,mf2,ta,ma   ;; -
+ ;;   vle32.v v24,(a0)                ;;   vle32.v v24,(a0)
+ ;;   vsetvli a4,zero,e32,mf2,ta,ma   ;; -
+ ;;   vse32.v v24,(a1)                ;;   vse32.v v24,(a1)
+ 
+ ;; However, it may produce wrong codegen if we exclude VL/VTYPE in "vsevl<mode>".
+ ;; 3. void foo (int8_t *in, int8_t *out, int32_t *in2, int32_t *out2, int M)
+ ;;    {
+ ;;      for (int i = 0; i < M; i++){
+ ;;        vint8mf2_t v = *(vint8mf2_t*)(in + i);
+ ;;        vint32mf2_t v2 = *(vint32mf2_t*)(in + i + i);
+ ;;        *(vint8mf2_t*)(out + i) = v;
+ ;;        *(vint32mf2_t*)(out + i + i) = v2;
+ ;;      }
+ ;;    }
+ ;;
+ ;; vsetvli a6,zero,e8,mf2,ta,ma
+ ;; vsetvli a2,zero,e32,mf2,ta,ma
+ ;; LOOP:
+ ;;   vle8.v  v25,(a0)
+ ;;   vle32.v v24,(a5)
+ ;;   addi    a0,a0,1
+ ;;   vse8.v  v25,(a1)
+ ;;   vse32.v v24,(a3)
+ ;;
+ ;; Both vle8.v and vle32.v are using the wrong VL/VTYPE status.
+ ;; We leave it to "insert-vsetvl" PASS to correct this situation.
+ 
+ ;; The "insert-vsetvl" PASS mechanism:
+ ;; 1. Before "insert-vsetvl" PASS, only RVV instructions are generated
+ ;;    by GCC standard pattern expansion has the corresponding "vsetvl".
+ ;;    We exploit each GCC internal optimization pass to optimize the "vsetvl".
+ ;; 2. Correct the VL/VTYPE status for each GCC standard pattern RVV instructions.
+ ;;    Insert vsetvl for each RVV instructions that has no VL/VTYPE status if necessary.
+ ;;    For example: RVV intrinsics.
+ ;; 3. Optimize "vsetvl" instructions.
+ 
+ (define_insn "@vsetvl<mode>"
+   [(set (match_operand:P 0 "register_operand" "=r")
+ 	(unspec:P [(match_operand:P 1 "csr_operand" "rK")
+ 		   (match_operand 2 "const_int_operand" "i")
+ 		   (match_operand 3 "const_int_operand" "i")
+ 		   (match_operand 4 "const_int_operand" "i")
+ 		   (match_operand 5 "const_int_operand" "i")] UNSPEC_VSETVL))
+    (set (reg:SI VL_REGNUM)
+ 	(unspec:SI [(match_dup 1)
+ 		    (match_dup 2)
+ 		    (match_dup 3)] UNSPEC_VSETVL))
+    (set (reg:SI VTYPE_REGNUM)
+ 	(unspec:SI [(match_dup 2)
+ 		    (match_dup 3)
+ 		    (match_dup 4)
+ 		    (match_dup 5)] UNSPEC_VSETVL))]
+   "TARGET_VECTOR"
+   "vset%i1vli\t%0,%1,e%2,%m3,t%p4,m%p5"
+   [(set_attr "type" "vsetvl")
+    (set_attr "mode" "<MODE>")
+    (set (attr "sew") (symbol_ref "INTVAL (operands[2])"))
+    (set (attr "vlmul") (symbol_ref "INTVAL (operands[3])"))
+    (set (attr "ta") (symbol_ref "INTVAL (operands[4])"))
+    (set (attr "ma") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ ;; vsetvl zero,zero,vtype instruction.
+ ;; This pattern has no side effects and does not set X0 register.
+ (define_insn "vsetvl_vtype_change_only"
+   [(set (reg:SI VTYPE_REGNUM)
+ 	(unspec:SI
+ 	  [(match_operand 0 "const_int_operand" "i")
+ 	   (match_operand 1 "const_int_operand" "i")
+ 	   (match_operand 2 "const_int_operand" "i")
+ 	   (match_operand 3 "const_int_operand" "i")] UNSPEC_VSETVL))]
+   "TARGET_VECTOR"
+   "vsetvli\tzero,zero,e%0,%m1,t%p2,m%p3"
+   [(set_attr "type" "vsetvl")
+    (set_attr "mode" "SI")])
+ 
+ ;; vsetvl zero,rs1,vtype instruction.
+ ;; The reason we need this pattern since we should avoid setting X0 register
+ ;; in vsetvl instruction pattern.
+ (define_insn "@vsetvl_discard_result<mode>"
+   [(set (reg:SI VL_REGNUM)
+ 	(unspec:SI [(match_operand:P 0 "csr_operand" "rK")
+ 		    (match_operand 1 "const_int_operand" "i")
+ 		    (match_operand 2 "const_int_operand" "i")] UNSPEC_VSETVL))
+    (set (reg:SI VTYPE_REGNUM)
+ 	(unspec:SI [(match_dup 1)
+ 		    (match_dup 2)
+ 		    (match_operand 3 "const_int_operand" "i")
+ 		    (match_operand 4 "const_int_operand" "i")] UNSPEC_VSETVL))]
+   "TARGET_VECTOR"
+   "vset%i0vli\tzero,%0,e%1,%m2,t%p3,m%p4"
+   [(set_attr "type" "vsetvl")
+    (set_attr "mode" "<MODE>")
+    (set (attr "sew") (symbol_ref "INTVAL (operands[1])"))
+    (set (attr "vlmul") (symbol_ref "INTVAL (operands[2])"))
+    (set (attr "ta") (symbol_ref "INTVAL (operands[3])"))
+    (set (attr "ma") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ ;; It's emit by vsetvl/vsetvlmax intrinsics with no side effects.
+ ;; Since we have many optmization passes from "expand" to "reload_completed",
+ ;; such pattern can allow us gain benefits of these optimizations.
+ (define_insn_and_split "@vsetvl<mode>_no_side_effects"
+   [(set (match_operand:P 0 "register_operand" "=r")
+ 	(unspec:P [(match_operand:P 1 "csr_operand" "rK")
+ 		   (match_operand 2 "const_int_operand" "i")
+ 		   (match_operand 3 "const_int_operand" "i")
+ 		   (match_operand 4 "const_int_operand" "i")
+ 		   (match_operand 5 "const_int_operand" "i")] UNSPEC_VSETVL))]
+   "TARGET_VECTOR"
+   "#"
+   "&& epilogue_completed"
+   [(parallel
+     [(set (match_dup 0)
+ 	  (unspec:P [(match_dup 1) (match_dup 2) (match_dup 3)
+ 		     (match_dup 4) (match_dup 5)] UNSPEC_VSETVL))
+      (set (reg:SI VL_REGNUM)
+ 	  (unspec:SI [(match_dup 1) (match_dup 2) (match_dup 3)] UNSPEC_VSETVL))
+      (set (reg:SI VTYPE_REGNUM)
+ 	  (unspec:SI [(match_dup 2) (match_dup 3) (match_dup 4)
+ 		      (match_dup 5)] UNSPEC_VSETVL))])]
+   ""
+   [(set_attr "type" "vsetvl")
+    (set_attr "mode" "SI")])
+ 
+ ;; RVV machine description matching format
+ ;; (define_insn ""
+ ;;   [(set (match_operand:MODE 0)
+ ;; 	(if_then_else:MODE
+ ;; 	  (unspec:<MODE:VM>
+ ;; 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ ;; 	     (match_operand N + 4 "vector_length_operand")
+ ;; 	     (match_operand N + 5 "const_int_operand")
+ ;; 	     (match_operand N + 6 "const_int_operand")
+ ;; 	     (reg:SI VL_REGNUM)
+ ;; 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ ;; 	  (instruction operation:MODE
+ ;; 	     (match_operand 3
+ ;; 	     (match_operand 4
+ ;; 	     (match_operand 5
+ ;;           ................
+ ;; 	     (match_operand N + 3)
+ ;; 	  (match_operand:MODE 2 "vector_reg_or_const0_operand")))]
+ ;;
+ ;; (unspec:[........] UNSPEC_VPREDICATE) is a predicate wrapper.
+ ;; Include mask predicate && length predicate && vector policy.
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated Mov
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 7.4. Vector Unit-Stride Instructions
+ ;; - 11.15 Vector Integer Merge Instructions
+ ;; - 11.16 Vector Integer Move Instructions
+ ;; - 13.16 Vector Floating-Point Move Instruction
+ ;; - 15.1 Vector Mask-Register Logical Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; vle.v/vse.v/vmv.v.v/vmv.v.x/vmv.v.i/vfmv.v.f.
+ ;; For vle.v/vmv.v.v/vmv.v.x/vmv.v.i/vfmv.v.f, we may need merge and mask operand.
+ ;; For vse.v, we don't need merge operand, so it should always match "vu".
+ ;; constraint alternative 0 ~ 1 match vle.v.
+ ;; constraint alternative 2 match vse.v.
+ ;; constraint alternative 3 match vmv.v.v.
+ ;; constraint alternative 4 match vmv.v.i.
+ ;; For vmv.v.i, we allow 2 following cases:
+ ;;    1. (const_vector:VNx1QI repeat [
+ ;;                (const_int:QI N)]), -15 <= N < 16.
+ ;;    2. (const_vector:VNx1SF repeat [
+ ;;                (const_double:SF 0.0 [0x0.0p+0])]).
+ 
+ ;; We add "MEM_P (operands[0]) || MEM_P (operands[3]) || CONST_VECTOR_P (operands[1])" here to
+ ;; make sure we don't want CSE to generate the following pattern:
+ ;; (insn 17 8 19 2 (set (reg:VNx1HI 134 [ _1 ])
+ ;;       (if_then_else:VNx1HI (unspec:VNx1BI [
+ ;;                   (reg/v:VNx1BI 137 [ mask ])
+ ;;                   (reg:DI 151)
+ ;;                   (const_int 0 [0]) repeated x3
+ ;;                   (reg:SI 66 vl)
+ ;;                   (reg:SI 67 vtype)
+ ;;               ] UNSPEC_VPREDICATE)
+ ;;           (const_vector:VNx1HI repeat [
+ ;;                   (const_int 0 [0])
+ ;;               ])
+ ;;           (reg/v:VNx1HI 140 [ merge ]))) "rvv.c":8:12 608 {pred_movvnx1hi}
+ ;;    (expr_list:REG_DEAD (reg:DI 151)
+ ;;       (expr_list:REG_DEAD (reg/v:VNx1HI 140 [ merge ])
+ ;;           (expr_list:REG_DEAD (reg/v:VNx1BI 137 [ mask ])
+ ;;               (nil)))))
+ ;; Since both vmv.v.v and vmv.v.i doesn't have mask operand.
+ (define_insn_and_split "@pred_mov<mode>"
+   [(set (match_operand:V 0 "nonimmediate_operand"      "=vr,    vr,    vd,     m,    vr,    vr,    vr,    vr")
+     (if_then_else:V
+       (unspec:<VM>
+         [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,   Wc1,    vm, vmWc1,   Wc1,   Wc1,   Wc1,   Wc1")
+          (match_operand 4 "vector_length_operand"    "   rK,    rK,    rK,    rK,    rK,    rK,    rK,    rK")
+          (match_operand 5 "const_int_operand"        "    i,     i,     i,     i,     i,     i,     i,     i")
+          (match_operand 6 "const_int_operand"        "    i,     i,     i,     i,     i,     i,     i,     i")
+          (match_operand 7 "const_int_operand"        "    i,     i,     i,     i,     i,     i,     i,     i")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (match_operand:V 3 "vector_move_operand"       "    m,     m,     m,    vr,    vr,    vr, viWc0, viWc0")
+       (match_operand:V 2 "vector_merge_operand"      "    0,    vu,    vu,    vu,    vu,     0,    vu,     0")))]
+   "TARGET_VECTOR && (MEM_P (operands[0]) || MEM_P (operands[3])
+    || CONST_VECTOR_P (operands[1]))"
+   "@
+    vle<sew>.v\t%0,%3%p1
+    vle<sew>.v\t%0,%3
+    vle<sew>.v\t%0,%3,%1.t
+    vse<sew>.v\t%3,%0%p1
+    vmv.v.v\t%0,%3
+    vmv.v.v\t%0,%3
+    vmv.v.i\t%0,%v3
+    vmv.v.i\t%0,%v3"
+   "&& register_operand (operands[0], <MODE>mode)
+    && register_operand (operands[3], <MODE>mode)
+    && satisfies_constraint_vu (operands[2])
+    && INTVAL (operands[7]) == riscv_vector::VLMAX"
+   [(set (match_dup 0) (match_dup 3))]
+   ""
+   [(set_attr "type" "vlde,vlde,vlde,vste,vimov,vimov,vimov,vimov")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Dedicated pattern for vse.v instruction since we can't reuse pred_mov pattern to include
+ ;; memory operand as input which will produce inferior codegen.
+ (define_insn "@pred_store<mode>"
+   [(set (match_operand:V 0 "memory_operand"                 "+m")
+ 	(if_then_else:V
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1")
+ 	     (match_operand 3 "vector_length_operand"    "   rK")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operand:V 2 "register_operand"         "    vr")
+ 	  (match_dup 0)))]
+   "TARGET_VECTOR"
+   "vse<sew>.v\t%2,%0%p1"
+   [(set_attr "type" "vste")
+    (set_attr "mode" "<MODE>")
+    (set (attr "avl_type") (symbol_ref "riscv_vector::NONVLMAX"))
+    (set_attr "vl_op_idx" "3")])
+ 
+ ;; vlm.v/vsm.v/vmclr.m/vmset.m.
+ ;; constraint alternative 0 match vlm.v.
+ ;; constraint alternative 1 match vsm.v.
+ ;; constraint alternative 3 match vmclr.m.
+ ;; constraint alternative 4 match vmset.m.
+ (define_insn_and_split "@pred_mov<mode>"
+   [(set (match_operand:VB 0 "nonimmediate_operand"               "=vr,   m,  vr,  vr,  vr")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 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 3 "vector_move_operand"              "  m,  vr,  vr, Wc0, Wc1")
+ 	  (match_operand:VB 2 "vector_undef_operand"             " vu,  vu,  vu,  vu,  vu")))]
+   "TARGET_VECTOR"
+   "@
+    vlm.v\t%0,%3
+    vsm.v\t%3,%0
+    vmmv.m\t%0,%3
+    vmclr.m\t%0
+    vmset.m\t%0"
+   "&& register_operand (operands[0], <MODE>mode)
+    && register_operand (operands[3], <MODE>mode)
+    && INTVAL (operands[5]) == riscv_vector::VLMAX"
+   [(set (match_dup 0) (match_dup 3))]
+   ""
+   [(set_attr "type" "vldm,vstm,vmalu,vmalu,vmalu")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Dedicated pattern for vsm.v instruction since we can't reuse pred_mov pattern to include
+ ;; memory operand as input which will produce inferior codegen.
+ (define_insn "@pred_store<mode>"
+   [(set (match_operand:VB 0 "memory_operand"                      "+m")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 1 "vector_all_trues_mask_operand" "Wc1")
+ 	     (match_operand 3 "vector_length_operand"            " rK")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operand:VB 2 "register_operand"                 " vr")
+ 	  (match_dup 0)))]
+   "TARGET_VECTOR"
+   "vsm.v\t%2,%0"
+   [(set_attr "type" "vstm")
+    (set_attr "mode" "<MODE>")
+    (set (attr "avl_type") (symbol_ref "riscv_vector::NONVLMAX"))
+    (set_attr "vl_op_idx" "3")])
+ 
+ (define_insn "@pred_merge<mode>"
+   [(set (match_operand:V 0 "register_operand"        "=vd,vd,vd,vd")
+     (if_then_else:V
+       (unspec:<VM>
+         [(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")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (vec_merge:V
+         (match_operand:V 3 "vector_arith_operand"    " vr,vr,vi,vi")
+         (match_operand:V 2 "register_operand"        " vr,vr,vr,vr")
+ 	(match_operand:<VM> 4 "register_operand"     " vm,vm,vm,vm"))
+       (match_operand:V 1 "vector_merge_operand"      " vu, 0,vu, 0")))]
+   "TARGET_VECTOR"
+   "vmerge.v%o3m\t%0,%2,%v3,%4"
+   [(set_attr "type" "vimerge")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_merge<mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"   "=vd,vd")
+     (if_then_else:VI_QHS
+       (unspec:<VM>
+         [(match_operand 5 "vector_length_operand"    " rK,rK")
+          (match_operand 6 "const_int_operand"        "  i, i")
+          (match_operand 7 "const_int_operand"        "  i, i")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (vec_merge:VI_QHS
+ 	(vec_duplicate:VI_QHS
+           (match_operand:<VEL> 3 "register_operand"  "  r, r"))
+         (match_operand:VI_QHS 2 "register_operand"   " vr,vr")
+ 	(match_operand:<VM> 4 "register_operand"     " vm,vm"))
+       (match_operand:VI_QHS 1 "vector_merge_operand" " vu, 0")))]
+   "TARGET_VECTOR"
+   "vmerge.vxm\t%0,%2,%3,%4"
+   [(set_attr "type" "vimerge")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_merge<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+     (if_then_else:VI_D
+       (unspec:<VM>
+         [(match_operand 5 "vector_length_operand")
+          (match_operand 6 "const_int_operand")
+          (match_operand 7 "const_int_operand")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (vec_merge:VI_D
+ 	(vec_duplicate:VI_D
+           (match_operand:<VEL> 3 "reg_or_int_operand"))
+         (match_operand:VI_D 2 "register_operand")
+ 	(match_operand:<VM> 4 "register_operand"))
+       (match_operand:VI_D 1 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[3],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::simm5_p (operands[3]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_merge<mode> (operands[0], operands[1],
+ 	       operands[2], boardcast_scalar, operands[4], operands[5],
+ 	       operands[6], operands[7]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_merge<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"     "=vd,vd")
+     (if_then_else:VI_D
+       (unspec:<VM>
+         [(match_operand 5 "vector_length_operand"    " rK,rK")
+          (match_operand 6 "const_int_operand"        "  i, i")
+          (match_operand 7 "const_int_operand"        "  i, i")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (vec_merge:VI_D
+ 	(vec_duplicate:VI_D
+           (match_operand:<VEL> 3 "register_operand"  "  r, r"))
+         (match_operand:VI_D 2 "register_operand"     " vr,vr")
+ 	(match_operand:<VM> 4 "register_operand"     " vm,vm"))
+       (match_operand:VI_D 1 "vector_merge_operand"   " vu, 0")))]
+   "TARGET_VECTOR"
+   "vmerge.vxm\t%0,%2,%3,%4"
+   [(set_attr "type" "vimerge")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_merge<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd,vd")
+     (if_then_else:VI_D
+       (unspec:<VM>
+         [(match_operand 5 "vector_length_operand"        " rK,rK")
+          (match_operand 6 "const_int_operand"            "  i, i")
+          (match_operand 7 "const_int_operand"            "  i, i")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (vec_merge:VI_D
+ 	(vec_duplicate:VI_D
+ 	  (sign_extend:<VEL>
+             (match_operand:<VSUBEL> 3 "register_operand" "  r, r")))
+         (match_operand:VI_D 2 "register_operand"         " vr,vr")
+ 	(match_operand:<VM> 4 "register_operand"         " vm,vm"))
+       (match_operand:VI_D 1 "vector_merge_operand"       " vu, 0")))]
+   "TARGET_VECTOR"
+   "vmerge.vxm\t%0,%2,%3,%4"
+   [(set_attr "type" "vimerge")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated Broadcast
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 7.5. Vector Strided Instructions (zero stride)
+ ;; - 11.16 Vector Integer Move Instructions (vmv.v.x)
+ ;; - 13.16 Vector Floating-Point Move Instruction (vfmv.v.f)
+ ;; - 16.1 Integer Scalar Move Instructions (vmv.s.x)
+ ;; - 16.2 Floating-Point Scalar Move Instructions (vfmv.s.f)
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; According to RVV ISA, vector-scalar instruction doesn't support
+ ;; operand fetched from 2 consecutive registers, so we should use
+ ;; vlse.v which is a memory access to broadcast a DImode scalar into a vector.
+ ;;
+ ;; Since the optimization flow in GCC is as follows:
+ ;; expand --> LICM (Loop invariant) --> split.
+ ;; To use LICM optimization, we postpone generation of vlse.v to split stage since
+ ;; a memory access instruction can not be optimized by LICM (Loop invariant).
+ (define_expand "@pred_broadcast<mode>"
+   [(set (match_operand:V 0 "register_operand")
+ 	(if_then_else:V
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_broadcast_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_VPREDICATE)
+ 	  (vec_duplicate:V
+ 	    (match_operand:<VEL> 3 "direct_broadcast_operand"))
+ 	  (match_operand:V 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   /* Handle vmv.s.x instruction which has memory scalar.  */
+   if (satisfies_constraint_Wdm (operands[3]) || riscv_vector::simm5_p (operands[3])
+       || rtx_equal_p (operands[3], CONST0_RTX (<VEL>mode)))
+     {
+       if (satisfies_constraint_Wb1 (operands[1]))
+         {
+           // Case 1: vmv.s.x (TA) ==> vlse.v (TA)
+           if (satisfies_constraint_vu (operands[2]))
+             operands[1] = CONSTM1_RTX (<VM>mode);
+           else if (GET_MODE_BITSIZE (<VEL>mode) > GET_MODE_BITSIZE (Pmode))
+             {
+ 	      // Case 2: vmv.s.x (TU) ==> andi vl + vlse.v (TU) in RV32 system.
+ 	      operands[4] = riscv_vector::gen_avl_for_scalar_move (operands[4]);
+ 	      operands[1] = CONSTM1_RTX (<VM>mode);
+ 	    }
+           else
+             operands[3] = force_reg (<VEL>mode, operands[3]);
+ 	}
+     }
+   else if (GET_MODE_BITSIZE (<VEL>mode) > GET_MODE_BITSIZE (Pmode)
+            && immediate_operand (operands[3], Pmode))
+     operands[3] = gen_rtx_SIGN_EXTEND (<VEL>mode, force_reg (Pmode, operands[3]));
+   else
+     operands[3] = force_reg (<VEL>mode, operands[3]);
+ })
+ 
+ (define_insn_and_split "*pred_broadcast<mode>"
+   [(set (match_operand:VI 0 "register_operand"                     "=vr, vr, vd, vd, vr, vr, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_broadcast_mask_operand" "Wc1,Wc1, vm, vm,Wc1,Wc1,Wb1,Wb1")
+ 	     (match_operand 4 "vector_length_operand"              " rK, rK, rK, rK, rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"                  "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"                  "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"                  "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (vec_duplicate:VI
+ 	    (match_operand:<VEL> 3 "direct_broadcast_operand"       " r,  r,Wdm,Wdm,Wdm,Wdm,  r,  r"))
+ 	  (match_operand:VI 2 "vector_merge_operand"                "vu,  0, vu,  0, vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "@
+    vmv.v.x\t%0,%3
+    vmv.v.x\t%0,%3
+    vlse<sew>.v\t%0,%3,zero,%1.t
+    vlse<sew>.v\t%0,%3,zero,%1.t
+    vlse<sew>.v\t%0,%3,zero
+    vlse<sew>.v\t%0,%3,zero
+    vmv.s.x\t%0,%3
+    vmv.s.x\t%0,%3"
+   "register_operand (operands[3], <VEL>mode)
+   && GET_MODE_BITSIZE (<VEL>mode) > GET_MODE_BITSIZE (Pmode)"
+   [(set (match_dup 0)
+ 	(if_then_else:VI (unspec:<VM> [(match_dup 1) (match_dup 4)
+ 	     (match_dup 5) (match_dup 6) (match_dup 7)
+ 	     (reg:SI VL_REGNUM) (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (vec_duplicate:VI (match_dup 3))
+ 	  (match_dup 2)))]
+   {
+     gcc_assert (can_create_pseudo_p ());
+     rtx m = assign_stack_local (<VEL>mode, GET_MODE_SIZE (<VEL>mode),
+ 				GET_MODE_ALIGNMENT (<VEL>mode));
+     m = validize_mem (m);
+     emit_move_insn (m, operands[3]);
+     m = gen_rtx_MEM (<VEL>mode, force_reg (Pmode, XEXP (m, 0)));
+     operands[3] = m;
+ 
+     /* For SEW = 64 in RV32 system, we expand vmv.s.x:
+        andi a2,a2,1
+        vsetvl zero,a2,e64
+        vlse64.v  */
+     if (satisfies_constraint_Wb1 (operands[1]))
+       {
+ 	operands[4] = riscv_vector::gen_avl_for_scalar_move (operands[4]);
+ 	operands[1] = CONSTM1_RTX (<VM>mode);
+       }
+   }
+   [(set_attr "type" "vimov,vimov,vlds,vlds,vlds,vlds,vimovxv,vimovxv")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_broadcast<mode>"
+   [(set (match_operand:VF 0 "register_operand"                     "=vr, vr, vr, vr, vr, vr, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_broadcast_mask_operand" "Wc1,Wc1, vm, vm,Wc1,Wc1,Wb1,Wb1")
+ 	     (match_operand 4 "vector_length_operand"              " rK, rK, rK, rK, rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"                  "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"                  "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"                  "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (vec_duplicate:VF
+ 	    (match_operand:<VEL> 3 "direct_broadcast_operand"       " f,  f,Wdm,Wdm,Wdm,Wdm,  f,  f"))
+ 	  (match_operand:VF 2 "vector_merge_operand"                "vu,  0, vu,  0, vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "@
+    vfmv.v.f\t%0,%3
+    vfmv.v.f\t%0,%3
+    vlse<sew>.v\t%0,%3,zero,%1.t
+    vlse<sew>.v\t%0,%3,zero,%1.t
+    vlse<sew>.v\t%0,%3,zero
+    vlse<sew>.v\t%0,%3,zero
+    vfmv.s.f\t%0,%3
+    vfmv.s.f\t%0,%3"
+   [(set_attr "type" "vfmov,vfmov,vlds,vlds,vlds,vlds,vfmovfv,vfmovfv")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_broadcast<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"                   "=vr, vr, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_broadcast_mask_operand" "Wc1,Wc1,Wb1,Wb1")
+ 	     (match_operand 4 "vector_length_operand"              " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"                  "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"                  "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"                  "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (vec_duplicate:VI_D
+ 	    (sign_extend:<VEL>
+ 	      (match_operand:<VSUBEL> 3 "register_operand"          " r,  r,  r,  r")))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"              "vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "@
+    vmv.v.x\t%0,%3
+    vmv.v.x\t%0,%3
+    vmv.s.x\t%0,%3
+    vmv.s.x\t%0,%3"
+   [(set_attr "type" "vimov,vimov,vimovxv,vimovxv")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated Strided loads/stores
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 7.5. Vector Strided Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_strided_load<mode>"
+   [(set (match_operand:V 0 "register_operand"              "=vr,    vr,    vd")
+ 	(if_then_else:V
+ 	  (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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:V
+ 	    [(match_operand:V 3 "memory_operand"         "    m,     m,     m")
+ 	     (match_operand 4 "pmode_reg_or_0_operand"   "   rJ,    rJ,    rJ")] UNSPEC_STRIDED)
+ 	  (match_operand:V 2 "vector_merge_operand"      "    0,    vu,    vu")))]
+   "TARGET_VECTOR"
+   "vlse<sew>.v\t%0,%3,%z4%p1"
+   [(set_attr "type" "vlds")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_strided_store<mode>"
+   [(set (match_operand:V 0 "memory_operand"                 "+m")
+ 	(if_then_else:V
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1")
+ 	     (match_operand 4 "vector_length_operand"    "   rK")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:V
+ 	    [(match_operand 2 "pmode_reg_or_0_operand"   "   rJ")
+ 	     (match_operand:V 3 "register_operand"       "   vr")] UNSPEC_STRIDED)
+ 	  (match_dup 0)))]
+   "TARGET_VECTOR"
+   "vsse<sew>.v\t%3,%0,%z2%p1"
+   [(set_attr "type" "vsts")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated indexed loads/stores
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 7.6. Vector Indexed Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; DEST eew is same as SOURCE eew, DEST register can overlap SOURCE.
+ (define_insn "@pred_indexed_<order>load<mode>_same_eew"
+   [(set (match_operand:V 0 "register_operand"             "=vd, vr,vd, vr")
+ 	(if_then_else:V
+ 	  (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_VPREDICATE)
+ 	  (unspec:V
+ 	    [(match_operand 3 "pmode_register_operand"    "  r,  r, r,  r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX> 4 "register_operand" " vr, vr,vr, vr")] ORDER)
+ 	  (match_operand:V 2 "vector_merge_operand"       " vu, vu, 0,  0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; DEST eew is greater than SOURCE eew.
+ (define_insn "@pred_indexed_<order>load<mode>_x2_greater_eew"
+   [(set (match_operand:VEEWEXT2 0 "register_operand"                    "=&vr,  &vr")
+ 	(if_then_else:VEEWEXT2
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEEWEXT2
+ 	    [(match_operand 3 "pmode_register_operand"                 "    r,    r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")] ORDER)
+ 	  (match_operand:VEEWEXT2 2 "vector_merge_operand"             "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<double_trunc_sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>load<mode>_x4_greater_eew"
+   [(set (match_operand:VEEWEXT4 0 "register_operand"                    "=&vr,  &vr")
+ 	(if_then_else:VEEWEXT4
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEEWEXT4
+ 	    [(match_operand 3 "pmode_register_operand"                 "    r,    r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX_QUAD_TRUNC> 4 "register_operand"   "   vr,   vr")] ORDER)
+ 	  (match_operand:VEEWEXT4 2 "vector_merge_operand"             "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<quad_trunc_sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>load<mode>_x8_greater_eew"
+   [(set (match_operand:VEEWEXT8 0 "register_operand"                    "=&vr,  &vr")
+ 	(if_then_else:VEEWEXT8
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEEWEXT8
+ 	    [(match_operand 3 "pmode_register_operand"                 "    r,    r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX_OCT_TRUNC> 4 "register_operand"    "   vr,   vr")] ORDER)
+ 	  (match_operand:VEEWEXT8 2 "vector_merge_operand"             "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<oct_trunc_sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; DEST eew is smaller than SOURCE eew.
+ (define_insn "@pred_indexed_<order>load<mode>_x2_smaller_eew"
+   [(set (match_operand:VEEWTRUNC2 0 "register_operand"                "=&vr,  &vr")
+ 	(if_then_else:VEEWTRUNC2
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEEWTRUNC2
+ 	    [(match_operand 3 "pmode_register_operand"               "    r,    r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX_DOUBLE_EXT> 4 "register_operand" "   vr,   vr")] ORDER)
+ 	  (match_operand:VEEWTRUNC2 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<double_ext_sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>load<mode>_x4_smaller_eew"
+   [(set (match_operand:VEEWTRUNC4 0 "register_operand"              "=&vr,  &vr")
+ 	(if_then_else:VEEWTRUNC4
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEEWTRUNC4
+ 	    [(match_operand 3 "pmode_register_operand"             "    r,    r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX_QUAD_EXT> 4 "register_operand" "   vr,   vr")] ORDER)
+ 	  (match_operand:VEEWTRUNC4 2 "vector_merge_operand"       "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<quad_ext_sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>load<mode>_x8_smaller_eew"
+   [(set (match_operand:VEEWTRUNC8 0 "register_operand"             "=&vr,  &vr")
+ 	(if_then_else:VEEWTRUNC8
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"          "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"             "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                 "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                 "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                 "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEEWTRUNC8
+ 	    [(match_operand 3 "pmode_register_operand"            "    r,    r")
+ 	     (mem:BLK (scratch))
+ 	     (match_operand:<VINDEX_OCT_EXT> 4 "register_operand" "   vr,   vr")] ORDER)
+ 	  (match_operand:VEEWTRUNC8 2 "vector_merge_operand"      "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vl<order>xei<oct_ext_sew>.v\t%0,(%3),%4%p1"
+   [(set_attr "type" "vld<order>x")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX1_QHSD:mode><VNX1_QHSDI: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX1_QHSDI 2 "register_operand" "  vr")
+ 	   (match_operand:VNX1_QHSD 3 "register_operand"  "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX1_QHSDI:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX1_QHSD:MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX2_QHSD:mode><VNX2_QHSDI: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX2_QHSDI 2 "register_operand" "  vr")
+ 	   (match_operand:VNX2_QHSD 3 "register_operand"  "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX2_QHSDI:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX2_QHSD:MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX4_QHSD:mode><VNX4_QHSDI: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX4_QHSDI 2 "register_operand" "  vr")
+ 	   (match_operand:VNX4_QHSD 3 "register_operand"  "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX4_QHSDI:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX4_QHSD:MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX8_QHSD:mode><VNX8_QHSDI: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX8_QHSDI 2 "register_operand" "  vr")
+ 	   (match_operand:VNX8_QHSD 3 "register_operand"  "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX8_QHSDI:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX8_QHSD:MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX16_QHS:mode><VNX16_QHSI: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX16_QHSI 2 "register_operand" "  vr")
+ 	   (match_operand:VNX16_QHS 3 "register_operand"  "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX16_QHSI:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX16_QHS:MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX32_QH:mode><VNX32_QHI: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX32_QHI 2 "register_operand"  "  vr")
+ 	   (match_operand:VNX32_QH 3 "register_operand"   "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX32_QHI:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX32_QH:MODE>")])
+ 
+ (define_insn "@pred_indexed_<order>store<VNX64_Q:mode><VNX64_Q: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_VPREDICATE)
+ 	   (match_operand 1 "pmode_register_operand"      "   r")
+ 	   (match_operand:VNX64_Q 2 "register_operand"    "  vr")
+ 	   (match_operand:VNX64_Q 3 "register_operand"    "  vr")] ORDER))]
+   "TARGET_VECTOR"
+   "vs<order>xei<VNX64_Q:sew>.v\t%3,(%1),%2%p0"
+   [(set_attr "type" "vst<order>x")
+    (set_attr "mode" "<VNX64_Q:MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated integer binary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 11.1 Vector Single-Width Integer Add and Subtract
+ ;; - 11.4 Vector Integer Add-with-Carry/Subtract-with-Borrow Instructions
+ ;; - 11.5 Vector Bitwise Logical Instructions
+ ;; - 11.6 Vector Single-Width Bit Shift Instructions
+ ;; - 11.9 Vector Integer Min/Max Instructions
+ ;; - 11.10 Vector Single-Width Integer Multiply Instructions
+ ;; - 11.11 Vector Integer Divide Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd, vd, vr, vr, vd, vd, vr, vr, vd, vd, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1, Wc1, vm, vm,Wc1,Wc1, vm, vm,Wc1,Wc1")
+ 	     (match_operand 5 "vector_length_operand"    " rK, rK, rK,  rK, rK, rK, rK, rK, rK, rK, rK, rK")
+ 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,   i,  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"        "  i,  i,  i,   i,  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (match_operand 8 "const_int_operand"        "  i,  i,  i,   i,  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_int_binop:VI
+ 	    (match_operand:VI 3 "<binop_rhs1_predicate>" "<binop_rhs1_constraint>")
+ 	    (match_operand:VI 4 "<binop_rhs2_predicate>" "<binop_rhs2_constraint>"))
+ 	  (match_operand:VI 2 "vector_merge_operand"     "vu,0,vu,0,vu,0,vu,0,vu,0,vu,0")))]
+   "TARGET_VECTOR"
+   "@
+    v<insn>.vv\t%0,%3,%4%p1
+    v<insn>.vv\t%0,%3,%4%p1
+    v<insn>.vv\t%0,%3,%4%p1
+    v<insn>.vv\t%0,%3,%4%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_reverse_vi_variant_insn>\t%0,<binop_reverse_vi_variant_op>%p1
+    v<binop_reverse_vi_variant_insn>\t%0,<binop_reverse_vi_variant_op>%p1
+    v<binop_reverse_vi_variant_insn>\t%0,<binop_reverse_vi_variant_op>%p1
+    v<binop_reverse_vi_variant_insn>\t%0,<binop_reverse_vi_variant_op>%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vx instructions patterns.
+ ;; Note: Unlike vv patterns, we should split them since they are variant.
+ ;; For vsll.vx/vsra.vx/vsrl.vx the scalar mode should be Pmode wheras the
+ ;; scalar mode is inner mode of the RVV mode for other vx patterns.
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,vd, vr, vr,vd,vd, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  "vm,vm,Wc1,Wc1,vm,vm,Wc1,Wc1")
+ 	     (match_operand 5 "vector_length_operand"     "rK,rK, rK, rK,rK,rK, rK, rK")
+ 	     (match_operand 6 "const_int_operand"         " i, i,  i,  i, i, i,  i,  i")
+ 	     (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)
+ 	  (any_shift:VI
+ 	    (match_operand:VI 3 "register_operand"        "vr,vr, vr, vr,vr,vr, vr, vr")
+ 	    (match_operand 4 "pmode_reg_or_uimm5_operand" " r, r,  r,  r, K, K,  K,  K"))
+ 	  (match_operand:VI 2 "vector_merge_operand"      "vu, 0, vu,  0,vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.v%o4\t%0,%3,%4%p1"
+   [(set_attr "type" "vshift")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Handle GET_MODE_INNER (mode) = QImode, HImode, SImode.
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"      "=vd,vd, vr, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (any_commutative_binop:VI_QHS
+ 	    (vec_duplicate:VI_QHS
+ 	      (match_operand:<VEL> 4 "reg_or_0_operand"  "rJ,rJ, rJ, rJ"))
+ 	    (match_operand:VI_QHS 3 "register_operand"   "vr,vr, vr, vr"))
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand" "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"      "=vd,vd, vr, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (any_non_commutative_binop:VI_QHS
+ 	    (match_operand:VI_QHS 3 "register_operand"   "vr,vr, vr, vr")
+ 	    (vec_duplicate:VI_QHS
+ 	      (match_operand:<VEL> 4 "reg_or_0_operand"  "rJ,rJ, rJ, rJ")))
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand" "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_sub<mode>_reverse_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"      "=vd,vd, vr, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (minus:VI_QHS
+ 	    (vec_duplicate:VI_QHS
+ 	      (match_operand:<VEL> 4 "reg_or_0_operand"  "rJ,rJ, rJ, rJ"))
+ 	    (match_operand:VI_QHS 3 "register_operand"   "vr,vr, vr, vr"))
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand" "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vrsub.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vialu")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
+ ;; we need to deal with SEW = 64 in RV32 system.
+ (define_expand "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_commutative_binop:VI_D
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "reg_or_int_operand"))
+ 	    (match_operand:VI_D 3 "register_operand"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::has_vi_variant_p (<CODE>, operands[4]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_<optab><mode> (operands[0], operands[1],
+ 	       operands[2], operands[3], boardcast_scalar, operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd,vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (any_commutative_binop: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"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"   "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_<optab><mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"             "=vd,vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     "vm,vm,Wc1,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_VPREDICATE)
+ 	  (any_commutative_binop:VI_D
+ 	    (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"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"       "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_non_commutative_binop:VI_D
+ 	    (match_operand:VI_D 3 "register_operand")
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "reg_or_int_operand")))
+ 	  (match_operand:VI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::has_vi_variant_p (<CODE>, operands[4]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_<optab><mode> (operands[0], operands[1],
+ 	       operands[2], operands[3], boardcast_scalar, operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd,vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (any_non_commutative_binop:VI_D
+ 	    (match_operand:VI_D 3 "register_operand"     "vr,vr, vr, vr")
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "reg_or_0_operand"  "rJ,rJ, rJ, rJ")))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"   "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_<optab><mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"             "=vd,vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     "vm,vm,Wc1,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_VPREDICATE)
+ 	  (any_non_commutative_binop:VI_D
+ 	    (match_operand:VI_D 3 "register_operand"         "vr,vr, vr, vr")
+ 	    (vec_duplicate:VI_D
+ 	      (sign_extend:<VEL>
+ 	        (match_operand:<VSUBEL> 4 "reg_or_0_operand" "rJ,rJ, rJ, rJ"))))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"       "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_sub<mode>_reverse_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI_D
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "reg_or_int_operand"))
+ 	    (match_operand:VI_D 3 "register_operand"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::neg_simm5_p (operands[4]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_sub<mode> (operands[0], operands[1],
+ 	       operands[2], boardcast_scalar, operands[3], operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_sub<mode>_reverse_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd,vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (minus: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"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"   "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vrsub.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vialu")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_sub<mode>_extended_reverse_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"             "=vd,vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     "vm,vm,Wc1,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_VPREDICATE)
+ 	  (minus:VI_D
+ 	    (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"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"       "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vrsub.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vialu")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Multiply High instructions.
+ (define_insn "@pred_mulh<v_su><mode>"
+   [(set (match_operand:VFULLI 0 "register_operand"       "=vd,vd, vr, vr")
+ 	(if_then_else:VFULLI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VFULLI
+ 	    [(match_operand:VFULLI 3 "register_operand"  "vr,vr, vr, vr")
+ 	     (match_operand:VFULLI 4 "register_operand"  "vr,vr, vr, vr")] VMULH)
+ 	  (match_operand:VFULLI 2 "vector_merge_operand" "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vmulh<v_su>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vimul")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_mulh<v_su><mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"       "=vd,vd, vr, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VI_QHS
+ 	    [(vec_duplicate:VI_QHS
+ 	       (match_operand:<VEL> 4 "reg_or_0_operand"  "rJ,rJ, rJ, rJ"))
+ 	     (match_operand:VI_QHS 3 "register_operand"   "vr,vr, vr, vr")] VMULH)
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand"  "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vmulh<v_su>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vimul")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_mulh<v_su><mode>_scalar"
+   [(set (match_operand:VFULLI_D 0 "register_operand")
+ 	(if_then_else:VFULLI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VFULLI_D
+ 	    [(vec_duplicate:VFULLI_D
+ 	       (match_operand:<VEL> 4 "reg_or_int_operand"))
+ 	     (match_operand:VFULLI_D 3 "register_operand")] VMULH)
+ 	  (match_operand:VFULLI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_mulh<v_su><mode> (operands[0], operands[1],
+ 	       operands[2], operands[3], boardcast_scalar, operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_mulh<v_su><mode>_scalar"
+   [(set (match_operand:VFULLI_D 0 "register_operand"       "=vd,vd, vr, vr")
+ 	(if_then_else:VFULLI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"   "vm,vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VFULLI_D
+ 	    [(vec_duplicate:VFULLI_D
+ 	       (match_operand:<VEL> 4 "reg_or_0_operand"   "rJ,rJ, rJ, rJ"))
+ 	     (match_operand:VFULLI_D 3 "register_operand"  "vr,vr, vr, vr")] VMULH)
+ 	  (match_operand:VFULLI_D 2 "vector_merge_operand" "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vmulh<v_su>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vimul")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_mulh<v_su><mode>_extended_scalar"
+   [(set (match_operand:VFULLI_D 0 "register_operand"          "=vd,vd, vr, vr")
+ 	(if_then_else:VFULLI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"      "vm,vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VFULLI_D
+ 	    [(vec_duplicate:VFULLI_D
+ 	       (sign_extend:<VEL>
+ 	         (match_operand:<VSUBEL> 4 "reg_or_0_operand" "rJ,rJ, rJ, rJ")))
+ 	     (match_operand:VFULLI_D 3 "register_operand"     "vr,vr, vr, vr")] VMULH)
+ 	  (match_operand:VFULLI_D 2 "vector_merge_operand"    "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vmulh<v_su>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vimul")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Vector Integer Add-with-Carry / Subtract-with-Borrow Instructions
+ (define_insn "@pred_adc<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,vd,vd,vd")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI
+ 	     [(plus:VI
+ 	       (match_operand:VI 2 "register_operand"     "vr,vr,vr,vr")
+ 	       (match_operand:VI 3 "vector_arith_operand" "vr,vr,vi,vi"))
+ 	     (match_operand:<VM> 4 "register_operand"     "vm,vm,vm,vm")] UNSPEC_VADC)
+ 	  (match_operand:VI 1 "vector_merge_operand"      "vu, 0,vu, 0")))]
+   "TARGET_VECTOR"
+   "vadc.v%o3m\t%0,%2,%v3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "@pred_sbc<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,vd")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"     "rK,rK")
+ 	     (match_operand 6 "const_int_operand"         " i, i")
+ 	     (match_operand 7 "const_int_operand"         " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI
+ 	     [(minus:VI
+ 	       (match_operand:VI 2 "register_operand"     "vr,vr")
+ 	       (match_operand:VI 3 "register_operand"     "vr,vr"))
+ 	      (match_operand:<VM> 4 "register_operand"    "vm,vm")] UNSPEC_VSBC)
+ 	  (match_operand:VI 1 "vector_merge_operand"      "vu, 0")))]
+   "TARGET_VECTOR"
+   "vsbc.vvm\t%0,%2,%3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "@pred_adc<mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"        "=vd,vd")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"      "rK,rK")
+ 	     (match_operand 6 "const_int_operand"          " i, i")
+ 	     (match_operand 7 "const_int_operand"          " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_QHS
+ 	     [(plus:VI_QHS
+ 	       (vec_duplicate:VI_QHS
+ 	         (match_operand:<VEL> 3 "register_operand" " r, r"))
+ 	       (match_operand:VI_QHS 2 "register_operand"  "vr,vr"))
+ 	     (match_operand:<VM> 4 "register_operand"      "vm,vm")] UNSPEC_VADC)
+ 	  (match_operand:VI_QHS 1 "vector_merge_operand"   "vu, 0")))]
+   "TARGET_VECTOR"
+   "vadc.vxm\t%0,%2,%3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "@pred_sbc<mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"         "=vd,vd")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"       "rK,rK")
+ 	     (match_operand 6 "const_int_operand"           " i, i")
+ 	     (match_operand 7 "const_int_operand"           " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_QHS
+ 	     [(minus:VI_QHS
+ 	        (match_operand:VI_QHS 2 "register_operand"  "vr,vr")
+ 	        (vec_duplicate:VI_QHS
+ 	          (match_operand:<VEL> 3 "reg_or_0_operand" "rJ,rJ")))
+ 	      (match_operand:<VM> 4 "register_operand"      "vm,vm")] UNSPEC_VSBC)
+ 	  (match_operand:VI_QHS 1 "vector_merge_operand"    "vu, 0")))]
+   "TARGET_VECTOR"
+   "vsbc.vxm\t%0,%2,%z3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_expand "@pred_adc<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	     [(plus:VI_D
+ 	        (vec_duplicate:VI_D
+ 	          (match_operand:<VEL> 3 "reg_or_int_operand"))
+ 	        (match_operand:VI_D 2 "register_operand"))
+ 	      (match_operand:<VM> 4 "register_operand")] UNSPEC_VADC)
+ 	  (match_operand:VI_D 1 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[3],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::simm5_p (operands[3]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_adc<mode> (operands[0], operands[1],
+ 	       operands[2], boardcast_scalar, operands[4], operands[5],
+ 	       operands[6], operands[7]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_adc<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"           "=vd,vd")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"       "rK,rK")
+ 	     (match_operand 6 "const_int_operand"           " i, i")
+ 	     (match_operand 7 "const_int_operand"           " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	     [(plus:VI_D
+ 	        (vec_duplicate:VI_D
+ 	          (match_operand:<VEL> 3 "reg_or_0_operand" "rJ,rJ"))
+ 	        (match_operand:VI_D 2 "register_operand"    "vr,vr"))
+ 	      (match_operand:<VM> 4 "register_operand"      "vm,vm")] UNSPEC_VADC)
+ 	  (match_operand:VI_D 1 "vector_merge_operand"      "vu, 0")))]
+   "TARGET_VECTOR"
+   "vadc.vxm\t%0,%2,%z3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "*pred_adc<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"                "=vd,vd")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"            "rK,rK")
+ 	     (match_operand 6 "const_int_operand"                " i, i")
+ 	     (match_operand 7 "const_int_operand"                " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	     [(plus:VI_D
+ 	        (vec_duplicate:VI_D
+ 	          (sign_extend:<VEL>
+ 	            (match_operand:<VSUBEL> 3 "reg_or_0_operand" "rJ,rJ")))
+ 	        (match_operand:VI_D 2 "register_operand"         "vr,vr"))
+ 	      (match_operand:<VM> 4 "register_operand"           "vm,vm")] UNSPEC_VADC)
+ 	  (match_operand:VI_D 1 "vector_merge_operand"           "vu, 0")))]
+   "TARGET_VECTOR"
+   "vadc.vxm\t%0,%2,%z3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_expand "@pred_sbc<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	     [(minus:VI_D
+ 	        (match_operand:VI_D 2 "register_operand")
+ 	        (vec_duplicate:VI_D
+ 	          (match_operand:<VEL> 3 "reg_or_int_operand")))
+ 	      (match_operand:<VM> 4 "register_operand")] UNSPEC_VSBC)
+ 	  (match_operand:VI_D 1 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[3],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_sbc<mode> (operands[0], operands[1],
+ 	       operands[2], boardcast_scalar, operands[4], operands[5],
+ 	       operands[6], operands[7]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_sbc<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"           "=vd,vd")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"       "rK,rK")
+ 	     (match_operand 6 "const_int_operand"           " i, i")
+ 	     (match_operand 7 "const_int_operand"           " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	     [(minus:VI_D
+ 	        (match_operand:VI_D 2 "register_operand"    "vr,vr")
+ 	        (vec_duplicate:VI_D
+ 	          (match_operand:<VEL> 3 "reg_or_0_operand" "rJ,rJ")))
+ 	      (match_operand:<VM> 4 "register_operand"      "vm,vm")] UNSPEC_VSBC)
+ 	  (match_operand:VI_D 1 "vector_merge_operand"      "vu, 0")))]
+   "TARGET_VECTOR"
+   "vsbc.vxm\t%0,%2,%z3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "*pred_sbc<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"                "=vd,vd")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand 5 "vector_length_operand"           "rK,rK")
+ 	     (match_operand 6 "const_int_operand"               " i, i")
+ 	     (match_operand 7 "const_int_operand"               " i, i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	     [(minus:VI_D
+ 	        (match_operand:VI_D 2 "register_operand"         "vr,vr")
+ 	        (vec_duplicate:VI_D
+ 	          (sign_extend:<VEL>
+ 	            (match_operand:<VSUBEL> 3 "reg_or_0_operand" "rJ,rJ"))))
+ 	      (match_operand:<VM> 4 "register_operand"           "vm,vm")] UNSPEC_VSBC)
+ 	  (match_operand:VI_D 1 "vector_merge_operand"           "vu, 0")))]
+   "TARGET_VECTOR"
+   "vsbc.vxm\t%0,%2,%z3,%4"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "1")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "@pred_madc<mode>"
+   [(set (match_operand:<VM> 0 "register_operand"        "=&vr, &vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI
+ 	     (match_operand:VI 1 "register_operand"     "  vr,  vr")
+ 	     (match_operand:VI 2 "vector_arith_operand" "  vr,  vi"))
+ 	    (match_operand:<VM> 3 "register_operand"    "  vm,  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand" "  rK,  rK")
+ 	       (match_operand 5 "const_int_operand"     "   i,   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMADC))]
+   "TARGET_VECTOR"
+   "vmadc.v%o2m\t%0,%1,%v2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "@pred_msbc<mode>"
+   [(set (match_operand:<VM> 0 "register_operand"        "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI
+ 	     (match_operand:VI 1 "register_operand"     "  vr")
+ 	     (match_operand:VI 2 "register_operand"     "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"    "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand" "  rK")
+ 	       (match_operand 5 "const_int_operand"     "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMSBC))]
+   "TARGET_VECTOR"
+   "vmsbc.vvm\t%0,%1,%2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "@pred_madc<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI_QHS
+ 	     (vec_duplicate:VI_QHS
+ 	       (match_operand:<VEL> 2 "register_operand" "   r"))
+ 	     (match_operand:VI_QHS 1 "register_operand"  "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"     "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand"  "  rK")
+ 	       (match_operand 5 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMADC))]
+   "TARGET_VECTOR"
+   "vmadc.vxm\t%0,%1,%2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "@pred_msbc<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI_QHS
+ 	     (vec_duplicate:VI_QHS
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_QHS 1 "register_operand"  "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"     "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand"  "  rK")
+ 	       (match_operand 5 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMSBC))]
+   "TARGET_VECTOR"
+   "vmsbc.vxm\t%0,%1,%z2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_expand "@pred_madc<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(unspec:<VM>
+ 	   [(plus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	     (match_operand:VI_D 1 "register_operand"))
+ 	    (match_operand:<VM> 3 "register_operand")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand")
+ 	       (match_operand 5 "const_int_operand")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMADC))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[2],
+ 	/* vl */operands[4],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::simm5_p (operands[2]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_madc<mode> (operands[0], operands[1],
+ 	       boardcast_scalar, operands[3], operands[4], operands[5]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_madc<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_D 1 "register_operand"    "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"     "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand"  "  rK")
+ 	       (match_operand 5 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMADC))]
+   "TARGET_VECTOR"
+   "vmadc.vxm\t%0,%1,%z2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "*pred_madc<mode>_extended_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"             "=&vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (sign_extend:<VEL>
+ 	         (match_operand:<VSUBEL> 2 "reg_or_0_operand" "  rJ")))
+ 	     (match_operand:VI_D 1 "register_operand"         "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"          "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand"       "  rK")
+ 	       (match_operand 5 "const_int_operand"           "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMADC))]
+   "TARGET_VECTOR"
+   "vmadc.vxm\t%0,%1,%z2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_expand "@pred_msbc<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(unspec:<VM>
+ 	   [(minus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	     (match_operand:VI_D 1 "register_operand"))
+ 	    (match_operand:<VM> 3 "register_operand")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand")
+ 	       (match_operand 5 "const_int_operand")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMSBC))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[2],
+ 	/* vl */operands[4],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_msbc<mode> (operands[0], operands[1],
+ 	       boardcast_scalar, operands[3], operands[4], operands[5]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_msbc<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_D 1 "register_operand"    "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"     "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand"  "  rK")
+ 	       (match_operand 5 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMSBC))]
+   "TARGET_VECTOR"
+   "vmsbc.vxm\t%0,%1,%z2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "*pred_msbc<mode>_extended_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"             "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (sign_extend:<VEL>
+ 	         (match_operand:<VSUBEL> 2 "reg_or_0_operand" "  rJ")))
+ 	     (match_operand:VI_D 1 "register_operand"         "  vr"))
+ 	    (match_operand:<VM> 3 "register_operand"          "  vm")
+ 	    (unspec:<VM>
+ 	      [(match_operand 4 "vector_length_operand"       "  rK")
+ 	       (match_operand 5 "const_int_operand"           "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_VMSBC))]
+   "TARGET_VECTOR"
+   "vmsbc.vxm\t%0,%1,%z2,%3"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "@pred_madc<mode>_overflow"
+   [(set (match_operand:<VM> 0 "register_operand"        "=&vr, &vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI
+ 	     (match_operand:VI 1 "register_operand"     "  vr,  vr")
+ 	     (match_operand:VI 2 "vector_arith_operand" "  vr,  vi"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand" "  rK,  rK")
+ 	       (match_operand 4 "const_int_operand"     "   i,   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmadc.v%o2\t%0,%1,%v2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_insn "@pred_msbc<mode>_overflow"
+   [(set (match_operand:<VM> 0 "register_operand"        "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI
+ 	     (match_operand:VI 1 "register_operand"     "  vr")
+ 	     (match_operand:VI 2 "register_operand"     "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand" "  rK")
+ 	       (match_operand 4 "const_int_operand"     "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmsbc.vv\t%0,%1,%2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_insn "@pred_madc<mode>_overflow_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI_QHS
+ 	     (vec_duplicate:VI_QHS
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_QHS 1 "register_operand"  "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand"  "  rK")
+ 	       (match_operand 4 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmadc.vx\t%0,%1,%z2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_insn "@pred_msbc<mode>_overflow_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI_QHS
+ 	     (vec_duplicate:VI_QHS
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_QHS 1 "register_operand"  "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand"  "  rK")
+ 	       (match_operand 4 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmsbc.vx\t%0,%1,%z2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_expand "@pred_madc<mode>_overflow_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(unspec:<VM>
+ 	   [(plus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	     (match_operand:VI_D 1 "register_operand"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand")
+ 	       (match_operand 4 "const_int_operand")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[2],
+ 	/* vl */operands[3],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::simm5_p (operands[2]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_madc<mode>_overflow (operands[0], operands[1],
+ 	       boardcast_scalar, operands[3], operands[4]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_madc<mode>_overflow_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_D 1 "register_operand"    "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand"  "  rK")
+ 	       (match_operand 4 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmadc.vx\t%0,%1,%z2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_insn "*pred_madc<mode>_overflow_extended_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"             "=&vr")
+ 	(unspec:<VM>
+ 	   [(plus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (sign_extend:<VEL>
+ 	         (match_operand:<VSUBEL> 2 "reg_or_0_operand" "  rJ")))
+ 	     (match_operand:VI_D 1 "register_operand"         "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand"       "  rK")
+ 	       (match_operand 4 "const_int_operand"           "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmadc.vx\t%0,%1,%z2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_expand "@pred_msbc<mode>_overflow_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(unspec:<VM>
+ 	   [(minus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	     (match_operand:VI_D 1 "register_operand"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand")
+ 	       (match_operand 4 "const_int_operand")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[2],
+ 	/* vl */operands[3],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_msbc<mode>_overflow (operands[0], operands[1],
+ 	       boardcast_scalar, operands[3], operands[4]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_msbc<mode>_overflow_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"         "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (match_operand:<VEL> 2 "reg_or_0_operand" "  rJ"))
+ 	     (match_operand:VI_D 1 "register_operand"    "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand"  "  rK")
+ 	       (match_operand 4 "const_int_operand"      "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmsbc.vx\t%0,%1,%z2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ (define_insn "*pred_msbc<mode>_overflow_extended_scalar"
+   [(set (match_operand:<VM> 0 "register_operand"             "=&vr")
+ 	(unspec:<VM>
+ 	   [(minus:VI_D
+ 	     (vec_duplicate:VI_D
+ 	       (sign_extend:<VEL>
+ 	         (match_operand:<VSUBEL> 2 "reg_or_0_operand" "  rJ")))
+ 	     (match_operand:VI_D 1 "register_operand"         "  vr"))
+ 	    (unspec:<VM>
+ 	      [(match_operand 3 "vector_length_operand"       "  rK")
+ 	       (match_operand 4 "const_int_operand"           "   i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)] UNSPEC_OVERFLOW))]
+   "TARGET_VECTOR"
+   "vmsbc.vx\t%0,%1,%z2"
+   [(set_attr "type" "vicalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "3")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[4])"))])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated integer unary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - vneg.v/vnot.v
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VI 0 "register_operand"          "=vd,vd, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vm,vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"    "rK,rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"        " i, i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"        " i, i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"        " i, i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_int_unop:VI
+ 	    (match_operand:VI 3 "register_operand"       "vr,vr, vr, vr"))
+ 	  (match_operand:VI 2 "vector_merge_operand"     "vu, 0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.v\t%0,%3%p1"
+   [(set_attr "type" "vialu")
+    (set_attr "mode" "<MODE>")
+    (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") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated integer widening binary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 11.2 Vector Widening Integer Add/Subtract
+ ;; - 11.3 Vector Integer Extension
+ ;; - 11.12 Vector Widening Integer Multiply Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; Vector Double-Widening Sign-extend and Zero-extend.
+ (define_insn "@pred_<optab><mode>_vf2"
+   [(set (match_operand:VWEXTI 0 "register_operand"            "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"         "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"            "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"                "    i,    i")
+ 	     (match_operand 6 "const_int_operand"                "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_extend:VWEXTI
+ 	    (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR"
+   "v<sz>ext.vf2\t%0,%3%p1"
+   [(set_attr "type" "vext")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Vector Quad-Widening Sign-extend and Zero-extend.
+ (define_insn "@pred_<optab><mode>_vf4"
+   [(set (match_operand:VQEXTI 0 "register_operand"          "=&vr,&vr")
+ 	(if_then_else:VQEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"       "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"          "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"              "    i,    i")
+ 	     (match_operand 6 "const_int_operand"              "    i,    i")
+ 	     (match_operand 7 "const_int_operand"              "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_extend:VQEXTI
+ 	    (match_operand:<V_QUAD_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	  (match_operand:VQEXTI 2 "vector_merge_operand"       "   vu,    0")))]
+   "TARGET_VECTOR"
+   "v<sz>ext.vf4\t%0,%3%p1"
+   [(set_attr "type" "vext")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Vector Oct-Widening Sign-extend and Zero-extend.
+ (define_insn "@pred_<optab><mode>_vf8"
+   [(set (match_operand:VOEXTI 0 "register_operand"         "=&vr,&vr")
+ 	(if_then_else:VOEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"      "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"         "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"             "    i,    i")
+ 	     (match_operand 6 "const_int_operand"             "    i,    i")
+ 	     (match_operand 7 "const_int_operand"             "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_extend:VOEXTI
+ 	    (match_operand:<V_OCT_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	  (match_operand:VOEXTI 2 "vector_merge_operand"      "   vu,    0")))]
+   "TARGET_VECTOR"
+   "v<sz>ext.vf8\t%0,%3%p1"
+   [(set_attr "type" "vext")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Vector Widening Add/Subtract/Multiply.
+ (define_insn "@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_widen_binop:VWEXTI
+ 	    (any_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (any_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vw<any_widen_binop:insn><any_extend:u>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vi<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_dual_widen_<any_widen_binop:optab><any_extend:su><mode>_scalar"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_widen_binop:VWEXTI
+ 	    (any_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (any_extend:VWEXTI
+ 	      (vec_duplicate:<V_DOUBLE_TRUNC>
+ 		(match_operand:<VSUBEL> 4 "reg_or_0_operand"       "   rJ,   rJ"))))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vw<any_widen_binop:insn><any_extend:u>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vi<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_single_widen_<plus_minus:optab><any_extend:su><mode>"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTI
+ 	    (match_operand:VWEXTI 3 "register_operand"             "   vr,   vr")
+ 	    (any_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vw<plus_minus:insn><any_extend:u>.wv\t%0,%3,%4%p1"
+   [(set_attr "type" "vi<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_single_widen_<plus_minus:optab><any_extend:su><mode>_scalar"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTI
+ 	    (match_operand:VWEXTI 3 "register_operand"             "   vr,   vr")
+ 	    (any_extend:VWEXTI
+ 	      (vec_duplicate:<V_DOUBLE_TRUNC>
+ 		(match_operand:<VSUBEL> 4 "reg_or_0_operand"       "   rJ,   rJ"))))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vw<plus_minus:insn><any_extend:u>.wx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vi<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mulsu<mode>"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (mult:VWEXTI
+ 	    (sign_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (zero_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vwmulsu.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "viwmul")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mulsu<mode>_scalar"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (mult:VWEXTI
+ 	    (sign_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (zero_extend:VWEXTI
+ 	      (vec_duplicate:<V_DOUBLE_TRUNC>
+ 		(match_operand:<VSUBEL> 4 "reg_or_0_operand"       "   rJ,   rJ"))))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vwmulsu.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "viwmul")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; vwcvt<u>.x.x.v
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VWEXTI 0 "register_operand"                  "=&vr,&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VWEXTI
+ 	    (any_extend:VWEXTI
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (vec_duplicate:VWEXTI
+ 	      (reg:<VEL> X0_REGNUM)))
+ 	  (match_operand:VWEXTI 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vwcvt<u>.x.x.v\t%0,%3%p1"
+   [(set_attr "type" "viwalu")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")
+    (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") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated integer Narrowing operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 11.7 Vector Narrowing Integer Right Shift Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; The destination EEW is smaller than the source EEW and the overlap is in the
+ ;; lowest-numbered part of the source register group
+ ;; e.g, when LMUL = 1, vnsrl.wi v0,v0,3 is legal but a destination of v1 is not.
+ (define_insn "@pred_narrow_<optab><mode>"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"           "=vd,vd, vr, vr,vd, vr,  &vr,  &vr, vd, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               " vm,vm,Wc1,Wc1,vm,Wc1,vmWc1,vmWc1, vm,Wc1,vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  " rK,rK, rK, rK,rK, rK,   rK,   rK, rK, rK,   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "  i, i,  i,  i, i,  i,    i,    i,  i,  i,    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "  i, i,  i,  i, i,  i,    i,    i,  i,  i,    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "  i, i,  i,  i, i,  i,    i,    i,  i,  i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (truncate:<V_DOUBLE_TRUNC>
+ 	    (any_shiftrt:VWEXTI
+ 	     (match_operand:VWEXTI 3 "register_operand"                " vr,vr, vr, vr, 0,  0,   vr,   vr,  0,  0,   vr,   vr")
+ 	     (match_operand:<V_DOUBLE_TRUNC> 4 "vector_shift_operand"  "  0, 0,  0,  0,vr, vr,   vr,   vr, vk, vk,   vk,   vk")))
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand"     "  0,vu,  0, vu,vu, vu,   vu,    0, vu, vu,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vn<insn>.w%o4\t%0,%3,%v4%p1"
+   [(set_attr "type" "vnshift")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_narrow_<optab><mode>_scalar"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"           "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  " rK, rK, rK, rK,   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "  i,  i,  i,  i,    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "  i,  i,  i,  i,    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "  i,  i,  i,  i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (truncate:<V_DOUBLE_TRUNC>
+ 	    (any_shiftrt:VWEXTI
+ 	     (match_operand:VWEXTI 3 "register_operand"                "  0,  0,  0,  0,   vr,   vr")
+ 	     (match_operand 4 "pmode_reg_or_uimm5_operand"             " rK, rK, rK, rK,   rK,   rK")))
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand"     " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vn<insn>.w%o4\t%0,%3,%4%p1"
+   [(set_attr "type" "vnshift")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; vncvt.x.x.w
+ (define_insn "@pred_trunc<mode>"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"           "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (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_VPREDICATE)
+ 	  (truncate:<V_DOUBLE_TRUNC>
+ 	    (match_operand:VWEXTI 3 "register_operand"                 "  0,  0,  0,  0,   vr,   vr"))
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand"     " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vncvt.x.x.w\t%0,%3%p1"
+   [(set_attr "type" "vnshift")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")
+    (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") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated fixed-point operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 12.1 Vector Single-Width Saturating Add and Subtract
+ ;; - 12.2 Vector Single-Width Aaveraging Add and Subtract
+ ;; - 12.3 Vector Single-Width Fractional Multiply with Rounding and Saturation
+ ;; - 12.4 Vector Single-Width Scaling Shift Instructions
+ ;; - 12.5 Vector Narrowing Fixed-Point Clip Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; Saturating Add and Subtract
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd, vd, vr, vr, vd, vd, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1, vm, vm,Wc1,Wc1")
+ 	     (match_operand 5 "vector_length_operand"    " rK, rK, rK, rK, rK, rK, rK, rK")
+ 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,  i,  i,  i,  i,  i")
+ 	     (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)
+ 	  (any_sat_int_binop:VI
+ 	    (match_operand:VI 3 "<binop_rhs1_predicate>" " vr, vr, vr, vr, vr, vr, vr, vr")
+ 	    (match_operand:VI 4 "<binop_rhs2_predicate>" "<binop_rhs2_constraint>"))
+ 	  (match_operand:VI 2 "vector_merge_operand"     " vu,  0, vu,  0, vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "@
+    v<insn>.vv\t%0,%3,%4%p1
+    v<insn>.vv\t%0,%3,%4%p1
+    v<insn>.vv\t%0,%3,%4%p1
+    v<insn>.vv\t%0,%3,%4%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1
+    v<binop_vi_variant_insn>\t%0,<binop_vi_variant_op>%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Handle GET_MODE_INNER (mode) = QImode, HImode, SImode.
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"       "=vd, vd, vr, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (sat_int_plus_binop:VI_QHS
+ 	    (vec_duplicate:VI_QHS
+ 	      (match_operand:<VEL> 4 "register_operand"  "  r,  r,  r,  r"))
+ 	    (match_operand:VI_QHS 3 "register_operand"   " vr, vr, vr, vr"))
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand" " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"       "=vd, vd, vr, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (sat_int_minus_binop:VI_QHS
+ 	    (match_operand:VI_QHS 3 "register_operand"   " vr, vr, vr, vr")
+ 	    (vec_duplicate:VI_QHS
+ 	      (match_operand:<VEL> 4 "register_operand"  "  r,  r,  r,  r")))
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand" " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (sat_int_plus_binop:VI_D
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "reg_or_int_operand"))
+ 	    (match_operand:VI_D 3 "register_operand"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::has_vi_variant_p (<CODE>, operands[4]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_<optab><mode> (operands[0], operands[1],
+ 	       operands[2], operands[3], boardcast_scalar, operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd, vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (sat_int_plus_binop:VI_D
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "register_operand"  "  r,  r,  r,  r"))
+ 	    (match_operand:VI_D 3 "register_operand"     " vr, vr, vr, vr"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"   " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_<optab><mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"             "=vd, vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,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_VPREDICATE)
+ 	  (sat_int_plus_binop:VI_D
+ 	    (vec_duplicate:VI_D
+ 	      (sign_extend:<VEL>
+ 	        (match_operand:<VSUBEL> 4 "register_operand" "  r,  r,  r,  r")))
+ 	    (match_operand:VI_D 3 "register_operand"         " vr, vr, vr, vr"))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"       " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (sat_int_minus_binop:VI_D
+ 	    (match_operand:VI_D 3 "register_operand")
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "reg_or_int_operand")))
+ 	  (match_operand:VI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::has_vi_variant_p (<CODE>, operands[4]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_<optab><mode> (operands[0], operands[1],
+ 	       operands[2], operands[3], boardcast_scalar, operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_<optab><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd, vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (sat_int_minus_binop:VI_D
+ 	    (match_operand:VI_D 3 "register_operand"     " vr, vr, vr, vr")
+ 	    (vec_duplicate:VI_D
+ 	      (match_operand:<VEL> 4 "register_operand"  "  r,  r,  r,  r")))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"   " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_<optab><mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"             "=vd, vd, vr, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,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_VPREDICATE)
+ 	  (sat_int_minus_binop:VI_D
+ 	    (match_operand:VI_D 3 "register_operand"         " vr, vr, vr, vr")
+ 	    (vec_duplicate:VI_D
+ 	      (sign_extend:<VEL>
+ 	        (match_operand:<VSUBEL> 4 "register_operand" "  r,  r,  r,  r"))))
+ 	  (match_operand:VI_D 2 "vector_merge_operand"       " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<insn>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "<int_binop_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<sat_op><mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VI
+ 	    [(match_operand:VI 3 "register_operand"      " vr, vr, vr, vr")
+ 	     (match_operand:VI 4 "register_operand"      " vr, vr, vr, vr")] VSAT_OP)
+ 	  (match_operand:VI 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<sat_op>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "<sat_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Handle GET_MODE_INNER (mode) = QImode, HImode, SImode.
+ (define_insn "@pred_<sat_op><mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand"       "=vd, vr, vd, vr")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VI_QHS
+ 	    [(match_operand:VI_QHS 3 "register_operand"  " vr, vr, vr, vr")
+ 	     (match_operand:<VEL> 4 "reg_or_0_operand"   " rJ, rJ, rJ, rJ")] VSAT_ARITH_OP)
+ 	  (match_operand:VI_QHS 2 "vector_merge_operand" " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<sat_op>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<sat_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<sat_op><mode>_scalar"
+   [(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, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VI
+ 	    [(match_operand:VI 3 "register_operand"        " vr, vr, vr, vr")
+ 	     (match_operand 4 "pmode_reg_or_uimm5_operand" " rK, rK, rK, rK")] VSAT_SHIFT_OP)
+ 	  (match_operand:VI 2 "vector_merge_operand"       " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<sat_op>.v%o4\t%0,%3,%4%p1"
+   [(set_attr "type" "<sat_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
+ ;; we need to deal with SEW = 64 in RV32 system.
+ (define_expand "@pred_<sat_op><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 5 "vector_length_operand")
+ 	     (match_operand 6 "const_int_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI_D
+ 	    [(match_operand:VI_D 3 "register_operand")
+ 	     (match_operand:<VEL> 4 "reg_or_int_operand")] VSAT_ARITH_OP)
+ 	  (match_operand:VI_D 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[4],
+ 	/* vl */operands[5],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_<sat_op><mode> (operands[0], operands[1],
+ 	       operands[2], operands[3], boardcast_scalar, operands[5],
+ 	       operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_<sat_op><mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"         "=vd, vr, vd, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VI_D
+ 	    [(match_operand:VI_D 3 "register_operand"    " vr, vr, vr, vr")
+ 	     (match_operand:<VEL> 4 "reg_or_0_operand"   " rJ, rJ, rJ, rJ")] VSAT_ARITH_OP)
+ 	  (match_operand:VI_D 2 "vector_merge_operand"   " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<sat_op>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<sat_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_<sat_op><mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"            "=vd, vr, vd, vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"    " vm, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VI_D
+ 	    [(match_operand:VI_D 3 "register_operand"       " vr, vr, vr, vr")
+ 	     (sign_extend:<VEL>
+ 	       (match_operand:<VSUBEL> 4 "reg_or_0_operand" " rJ, rJ, rJ, rJ"))] VSAT_ARITH_OP)
+ 	  (match_operand:VI_D 2 "vector_merge_operand"      " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "v<sat_op>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "<sat_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; CLIP
+ (define_insn "@pred_narrow_clip<v_su><mode>"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"           "=vd,vd, vr, vr,vd, vr,  &vr,  &vr, vd, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               " vm,vm,Wc1,Wc1,vm,Wc1,vmWc1,vmWc1, vm,Wc1,vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  " rK,rK, rK, rK,rK, rK,   rK,   rK, rK, rK,   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "  i, i,  i,  i, i,  i,    i,    i,  i,  i,    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "  i, i,  i,  i, i,  i,    i,    i,  i,  i,    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "  i, i,  i,  i, i,  i,    i,    i,  i,  i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:<V_DOUBLE_TRUNC>
+ 	    [(match_operand:VWEXTI 3 "register_operand"                " vr,vr, vr, vr, 0,  0,   vr,   vr,  0,  0,   vr,   vr")
+ 	     (match_operand:<V_DOUBLE_TRUNC> 4 "vector_shift_operand"  "  0, 0,  0,  0,vr, vr,   vr,   vr, vk, vk,   vk,   vk")] VNCLIP)
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand"     "  0,vu,  0, vu,vu, vu,   vu,    0, vu, vu,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vnclip<v_su>.w%o4\t%0,%3,%v4%p1"
+   [(set_attr "type" "vnclip")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_narrow_clip<v_su><mode>_scalar"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"           "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  " rK, rK, rK, rK,   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                      "  i,  i,  i,  i,    i,    i")
+ 	     (match_operand 7 "const_int_operand"                      "  i,  i,  i,  i,    i,    i")
+ 	     (match_operand 8 "const_int_operand"                      "  i,  i,  i,  i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:<V_DOUBLE_TRUNC>
+ 	    [(match_operand:VWEXTI 3 "register_operand"                "  0,  0,  0,  0,   vr,   vr")
+ 	     (match_operand 4 "pmode_reg_or_uimm5_operand"             " rK, rK, rK, rK,   rK,   rK")] VNCLIP)
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand"     " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vnclip<v_su>.w%o4\t%0,%3,%4%p1"
+   [(set_attr "type" "vnclip")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated integer comparison operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 11.8 Vector Integer Comparision Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_expand "@pred_cmp<mode>"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_ltge_operator"
+ 	     [(match_operand:VI 4 "register_operand")
+ 	      (match_operand:VI 5 "vector_arith_operand")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_ltge_operator"
+ 	     [(match_operand:VI 4 "register_operand"          "   vr,   vr,   vr,   vr")
+ 	      (match_operand:VI 5 "vector_arith_operand"      "   vr,   vr,   vi,   vi")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0,   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.v%o5\t%0,%4,%v5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_cmp<mode>_narrow"
+   [(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,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_ltge_operator"
+ 	     [(match_operand:VI 4 "register_operand"          "   vr,   vr,   vr,   vr")
+ 	      (match_operand:VI 5 "vector_arith_operand"      "   vr,   vr,   vi,   vi")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0,   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.v%o5\t%0,%4,%v5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_ltge<mode>"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "ltge_operator"
+ 	     [(match_operand:VI 4 "register_operand")
+ 	      (match_operand:VI 5 "vector_neg_arith_operand")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "ltge_operator"
+ 	     [(match_operand:VI 4 "register_operand"          "   vr,   vr,   vr,   vr")
+ 	      (match_operand:VI 5 "vector_neg_arith_operand"  "   vr,   vr,   vj,   vj")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0,   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.v%o5\t%0,%4,%v5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_ltge<mode>_narrow"
+   [(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,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 "ltge_operator"
+ 	     [(match_operand:VI 4 "register_operand"          "   vr,   vr,   vr,   vr")
+ 	      (match_operand:VI 5 "vector_neg_arith_operand"  "   vr,   vr,   vj,   vj")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0,   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.v%o5\t%0,%4,%v5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_cmp<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_QHS 4 "register_operand")
+ 	      (vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 5 "register_operand"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_QHS 4 "register_operand"      "   vr,   vr")
+ 	      (vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_cmp<mode>_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_QHS 4 "register_operand"      "   vr,   vr")
+ 	      (vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_eqne<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 5 "register_operand"))
+ 	      (match_operand:VI_QHS 4 "register_operand")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))
+ 	      (match_operand:VI_QHS 4 "register_operand"      "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_eqne<mode>_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))
+ 	      (match_operand:VI_QHS 4 "register_operand"      "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; Handle GET_MODE_INNER (mode) = DImode. We need to split them since
+ ;; we need to deal with SEW = 64 in RV32 system.
+ (define_expand "@pred_cmp<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_D 4 "register_operand")
+ 	      (vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 5 "reg_or_int_operand"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   enum rtx_code code = GET_CODE (operands[3]);
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[5],
+ 	/* vl */operands[6],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::has_vi_variant_p (code, operands[5]),
+ 	code == LT || code == LTU ?
+ 	  [] (rtx *operands, rtx boardcast_scalar) {
+ 	    emit_insn (gen_pred_ltge<mode> (operands[0], operands[1],
+ 	    	operands[2], operands[3], operands[4], boardcast_scalar,
+ 	  	operands[6], operands[7], operands[8]));
+           }
+ 	:
+ 	  [] (rtx *operands, rtx boardcast_scalar) {
+ 	    emit_insn (gen_pred_cmp<mode> (operands[0], operands[1],
+ 	    	operands[2], operands[3], operands[4], boardcast_scalar,
+ 	  	operands[6], operands[7], operands[8]));
+           }))
+     DONE;
+ })
+ 
+ (define_expand "@pred_eqne<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 5 "reg_or_int_operand"))
+ 	      (match_operand:VI_D 4 "register_operand")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   enum rtx_code code = GET_CODE (operands[3]);
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[5],
+ 	/* vl */operands[6],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	riscv_vector::has_vi_variant_p (code, operands[5]),
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_cmp<mode> (operands[0], operands[1],
+ 	  	operands[2], operands[3], operands[4], boardcast_scalar,
+ 		operands[6], operands[7], operands[8]));
+         }))
+     DONE;
+ })
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_D 4 "register_operand"        "   vr,   vr")
+ 	      (vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_cmp<mode>_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_D 4 "register_operand"        "   vr,   vr")
+ 	      (vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))
+ 	      (match_operand:VI_D 4 "register_operand"        "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_eqne<mode>_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 5 "register_operand"     "    r,    r"))
+ 	      (match_operand:VI_D 4 "register_operand"        "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_D 4 "register_operand"         "   vr,   vr")
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 5 "register_operand" "    r,    r")))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_cmp<mode>_extended_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"                "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "comparison_except_eqge_operator"
+ 	     [(match_operand:VI_D 4 "register_operand"         "   vr,   vr")
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 5 "register_operand" "    r,    r")))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 5 "register_operand" "    r,    r")))
+ 	      (match_operand:VI_D 4 "register_operand"         "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_eqne<mode>_extended_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"                "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 5 "register_operand" "    r,    r")))
+ 	      (match_operand:VI_D 4 "register_operand"         "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vms%B3.vx\t%0,%4,%5%p1"
+   [(set_attr "type" "vicmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; GE, vmsge.vx/vmsgeu.vx
+ ;;
+ ;; unmasked va >= x
+ ;;  - pseudoinstruction: vmsge{u}.vx vd, va, x
+ ;;  - expansion: vmslt{u}.vx vd, va, x; vmnand.mm vd, vd, vd
+ ;;
+ ;; masked va >= x, vd != v0
+ ;;  - pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t
+ ;;  - expansion: vmslt{u}.vx vd, va, x, v0.t; vmxor.mm vd, vd, v0
+ ;;
+ ;; masked va >= x, vd == v0
+ ;;  - pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t, vt
+ ;;  - expansion: vmslt{u}.vx vt, va, x;  vmandn.mm vd, vd, vt
+ (define_expand "@pred_ge<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "ge_operator"
+ 	     [(match_operand:VI 4 "register_operand")
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 5 "reg_or_int_operand"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+ {
+   enum rtx_code code = GET_CODE (operands[3]);
+   rtx undef = RVV_VUNDEF (<VM>mode);
+   if (code == GEU && rtx_equal_p (operands[5], const0_rtx))
+     {
+       /* If vmsgeu with 0 immediate, expand it to vmset.  */
+       if (satisfies_constraint_Wc1 (operands[1]))
+ 	emit_insn (
+ 	  gen_pred_mov (<VM>mode, operands[0], CONSTM1_RTX (<VM>mode), undef,
+ 			CONSTM1_RTX (<VM>mode), operands[6], operands[8]));
+       else
+ 	{
+ 	  /* If vmsgeu_mask with 0 immediate, expand it to vmor mask, maskedoff.
+ 	   */
+ 	  if (rtx_equal_p (operands[1], operands[2]))
+ 	    emit_move_insn (operands[0], operands[1]);
+ 	  else if (register_operand (operands[2], <VM>mode))
+ 	    emit_insn (gen_pred (IOR, <VM>mode, operands[0],
+ 				 CONSTM1_RTX (<VM>mode), undef, operands[1],
+ 				 operands[2], operands[6], operands[8]));
+ 	  else
+ 	    emit_insn (gen_pred (IOR, <VM>mode, operands[0],
+ 				 CONSTM1_RTX (<VM>mode), undef, operands[1],
+ 				 operands[1], operands[6], operands[8]));
+ 	}
+     }
+   else if (riscv_vector::neg_simm5_p (operands[5]))
+     emit_insn (
+       gen_pred_ltge<mode> (operands[0], operands[1], operands[2], operands[3],
+ 			   operands[4],
+ 			   gen_const_vec_duplicate (<MODE>mode, operands[5]),
+ 			   operands[6], operands[7], operands[8]));
+   else
+     {
+       if (code == GE)
+ 	operands[3] = gen_rtx_fmt_ee (LT, <VM>mode, XEXP (operands[3], 0),
+ 				      XEXP (operands[3], 1));
+       else
+ 	operands[3] = gen_rtx_fmt_ee (LTU, <VM>mode, XEXP (operands[3], 0),
+ 				      XEXP (operands[3], 1));
+       if (GET_MODE_BITSIZE (<VEL>mode) <= GET_MODE_BITSIZE (Pmode))
+ 	operands[5] = force_reg (<VEL>mode, operands[5]);
+ 
+       if (satisfies_constraint_Wc1 (operands[1]))
+ 	{
+ 	  /* unmasked va >= x
+ 	    - pseudoinstruction: vmsge{u}.vx vd, va, x
+ 	    - expansion: vmslt{u}.vx vd, va, x; vmnand.mm vd, vd, vd.  */
+ 	  emit_insn (
+ 	    gen_pred_cmp<mode>_scalar (operands[0], operands[1], operands[2],
+ 					operands[3], operands[4], operands[5],
+ 					operands[6], operands[7], operands[8]));
+ 	  emit_insn (gen_pred_nand<vm> (operands[0], CONSTM1_RTX (<VM>mode),
+ 					undef, operands[0], operands[0],
+ 					operands[6], operands[8]));
+ 	}
+       else
+ 	{
+ 	  if (rtx_equal_p (operands[1], operands[2]))
+ 	    {
+ 	      /* masked va >= x, vd == v0
+ 		- pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t, vt
+ 		- expansion: vmslt{u}.vx vt, va, x;  vmandn.mm vd, vd, vt.  */
+ 	      rtx reg = gen_reg_rtx (<VM>mode);
+ 	      emit_insn (gen_pred_cmp<mode>_scalar (
+ 		reg, CONSTM1_RTX (<VM>mode), undef, operands[3], operands[4],
+ 		operands[5], operands[6], operands[7], operands[8]));
+ 	      emit_insn (
+ 		gen_pred_andnot<vm> (operands[0], CONSTM1_RTX (<VM>mode), undef,
+ 				   operands[1], reg, operands[6], operands[8]));
+ 	    }
+ 	  else
+ 	    {
+ 	      /* masked va >= x, vd != v0
+ 		- pseudoinstruction: vmsge{u}.vx vd, va, x, v0.t
+ 		- expansion: vmslt{u}.vx vd, va, x, v0.t; vmxor.mm vd, vd, v0.
+ 	      */
+ 	      emit_insn (gen_pred_cmp<mode>_scalar (
+ 		operands[0], operands[1], operands[2], operands[3], operands[4],
+ 		operands[5], operands[6], operands[7], operands[8]));
+ 	      emit_insn (gen_pred (XOR, <VM>mode, operands[0],
+ 				   CONSTM1_RTX (<VM>mode), undef, operands[0],
+ 				   operands[1], operands[6], operands[8]));
+ 	    }
+ 	}
+     }
+   DONE;
+ })
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated integer ternary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 11.13 Vector Single-Width Integer Multiply-Add Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_expand "@pred_mul_plus<mode>"
+   [(set (match_operand:VI 0 "register_operand")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand")
+ 	      (match_operand:VI 3 "register_operand"))
+ 	    (match_operand:VI 4 "register_operand"))
+ 	  (match_operand:VI 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   /* Swap the multiplication operands if the fallback value is the
+      second of the two.  */
+   if (rtx_equal_p (operands[3], operands[5]))
+     std::swap (operands[2], operands[3]);
+ })
+ 
+ (define_insn "*pred_madd<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand"     "  0,  vr,  0,  vr")
+ 	      (match_operand:VI 3 "register_operand"     " vr,  vr, vr,  vr"))
+ 	    (match_operand:VI 4 "register_operand"       " vr,  vr, vr,  vr"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "@
+    vmadd.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vmadd.vv\t%0,%3,%4%p1
+    vmadd.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vmadd.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_macc<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand"     " vr,  vr, vr,  vr")
+ 	      (match_operand:VI 3 "register_operand"     " vr,  vr, vr,  vr"))
+ 	    (match_operand:VI 4 "register_operand"       "  0,  vr,  0,  vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vmacc.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vmacc.vv\t%0,%2,%3%p1
+    vmacc.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vmacc.vv\t%0,%2,%3%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_plus<mode>"
+   [(set (match_operand:VI 0 "register_operand"            "=&vr,?&vr, ?&vr, ?&vr,  ?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1,vmWc1")
+ 	     (match_operand 6 "vector_length_operand"    "   rK,   rK,   rK,   rK,   rK")
+ 	     (match_operand 7 "const_int_operand"        "    i,    i,    i,    i,    i")
+ 	     (match_operand 8 "const_int_operand"        "    i,    i,    i,    i,    i")
+ 	     (match_operand 9 "const_int_operand"        "    i,    i,    i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand"     "   vr,   vr,   vi,   vr,   vr")
+ 	      (match_operand:VI 3 "register_operand"     "   vr,   vr,   vr,   vi,   vr"))
+ 	    (match_operand:VI 4 "vector_arith_operand"   "   vr,   vi,   vr,   vr,   vr"))
+ 	  (match_operand:VI 5 "register_operand"         "    0,   vr,   vr,   vr,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[2], operands[5])
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vmacc.vv\t%0,%2,%3%p1
+    #
+    #
+    #
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     if (satisfies_constraint_vi (operands[3]))
+       std::swap (operands[2], operands[3]);
+ 
+     if (satisfies_constraint_vi (operands[2]))
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[2], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[2] = operands[0];
+       }
+     else
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[4], operands[1], operands[6], 
+ 			operands[7], operands[9]));
+         operands[5] = operands[4] = operands[0];
+       }
+   }
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_mul_plus<mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VI_QHS
+ 	    (mult:VI_QHS
+ 	      (vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	      (match_operand:VI_QHS 3 "register_operand"))
+ 	    (match_operand:VI_QHS 4 "register_operand"))
+ 	  (match_operand:VI_QHS 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   operands[2] = force_reg (<VEL>mode, operands[2]);
+ })
+ 
+ (define_insn "*pred_madd<mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"            "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 2 "register_operand" "  r,   r,  r,   r"))
+ 	      (match_operand:VI 3 "register_operand"      "  0,  vr,  0,  vr"))
+ 	    (match_operand:VI 4 "register_operand"        " vr,  vr, vr,  vr"))
+ 	  (match_dup 3)))]
+   "TARGET_VECTOR"
+   "@
+    vmadd.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vmadd.vx\t%0,%2,%4%p1
+    vmadd.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vmadd.vx\t%0,%2,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_macc<mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"            "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 2 "register_operand" "  r,   r,  r,   r"))
+ 	      (match_operand:VI 3 "register_operand"      " vr,  vr, vr,  vr"))
+ 	    (match_operand:VI 4 "register_operand"        "  0,  vr,  0,  vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vmacc.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vmacc.vx\t%0,%2,%3%p1
+    vmacc.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vmacc.vx\t%0,%2,%3%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_plus<mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"            "=&vr, ?&vr, ?&vr, ?&vr")
+ 	(if_then_else:VI
+ 	  (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 9 "const_int_operand"        "    i,    i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VI
+ 	    (mult:VI
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 2 "register_operand" "    r,    r,    r,    r"))
+ 	      (match_operand:VI 3 "register_operand"      "   vr,   vr,   vi,   vr"))
+ 	    (match_operand:VI 4 "vector_arith_operand"    "   vr,   vi,   vr,   vr"))
+ 	  (match_operand:VI 5 "register_operand"          "    0,   vr,   vr,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vmacc.vx\t%0,%2,%3%p1
+    #
+    #
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     if (satisfies_constraint_vi (operands[3]))
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[3], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[3] = operands[0];
+       }
+     else
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[4] = operands[0];
+       }
+   }
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_mul_plus<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VI_D
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	      (match_operand:VI_D 3 "register_operand"))
+ 	    (match_operand:VI_D 4 "register_operand"))
+ 	  (match_operand:VI_D 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[2],
+ 	/* vl */operands[6],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_mul_plus<mode> (operands[0], operands[1],
+ 	       boardcast_scalar, operands[3], operands[4], operands[5],
+ 	       operands[6], operands[7], operands[8], operands[9]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_madd<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"               "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"       " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (plus:VI_D
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 2 "register_operand" "  r,   r,  r,   r")))
+ 	      (match_operand:VI_D 3 "register_operand"         "  0,  vr,  0,  vr"))
+ 	    (match_operand:VI_D 4 "register_operand"           " vr,  vr, vr,  vr"))
+ 	  (match_dup 3)))]
+   "TARGET_VECTOR"
+   "@
+    vmadd.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%2\;vmadd.vx\t%0,%2,%4%p1
+    vmadd.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%2\;vmadd.vx\t%0,%2,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_macc<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"               "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"       " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (plus:VI_D
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 2 "register_operand" "  r,   r,  r,   r")))
+ 	      (match_operand:VI_D 3 "register_operand"         " vr,  vr, vr,  vr"))
+ 	    (match_operand:VI_D 4 "register_operand"           "  0,  vr,  0,  vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vmacc.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vmacc.vx\t%0,%2,%3%p1
+    vmacc.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vmacc.vx\t%0,%2,%3%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_plus<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"                "=&vr, ?&vr, ?&vr, ?&vr")
+ 	(if_then_else:VI_D
+ 	  (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 9 "const_int_operand"              "    i,    i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VI_D
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 2 "register_operand" "    r,    r,    r,    r")))
+ 	      (match_operand:VI_D 3 "register_operand"         "   vr,   vr,   vr,   vr"))
+ 	    (match_operand:VI_D 4 "vector_arith_operand"       "   vr,   vr,   vr,   vr"))
+ 	  (match_operand:VI_D 5 "register_operand"             "    0,   vr,   vr,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vmacc.vx\t%0,%2,%3%p1
+    #
+    #
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     if (satisfies_constraint_vi (operands[3]))
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[3], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[3] = operands[0];
+       }
+     else
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[4] = operands[0];
+       }
+   }
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_minus_mul<mode>"
+   [(set (match_operand:VI 0 "register_operand")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "register_operand")
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand")
+ 	      (match_operand:VI 3 "register_operand")))
+ 	  (match_operand:VI 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   /* Swap the multiplication operands if the fallback value is the
+      second of the two.  */
+   if (rtx_equal_p (operands[3], operands[5]))
+     std::swap (operands[2], operands[3]);
+ })
+ 
+ (define_insn "*pred_nmsub<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "register_operand"       " vr,  vr, vr,  vr")
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand"     "  0,  vr,  0,  vr")
+ 	      (match_operand:VI 3 "register_operand"     " vr,  vr, vr,  vr")))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "@
+    vnmsub.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vnmsub.vv\t%0,%3,%4%p1
+    vnmsub.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vnmsub.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_nmsac<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "register_operand"       "  0,  vr,  0,  vr")
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand"     " vr,  vr, vr,  vr")
+ 	      (match_operand:VI 3 "register_operand"     " vr,  vr, vr,  vr")))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vnmsac.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vnmsac.vv\t%0,%2,%3%p1
+    vnmsac.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vnmsac.vv\t%0,%2,%3%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_minus_mul<mode>"
+   [(set (match_operand:VI 0 "register_operand"            "=&vr,?&vr, ?&vr, ?&vr,  ?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1,vmWc1,vmWc1,vmWc1")
+ 	     (match_operand 6 "vector_length_operand"    "   rK,   rK,   rK,   rK,   rK")
+ 	     (match_operand 7 "const_int_operand"        "    i,    i,    i,    i,    i")
+ 	     (match_operand 8 "const_int_operand"        "    i,    i,    i,    i,    i")
+ 	     (match_operand 9 "const_int_operand"        "    i,    i,    i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "vector_arith_operand"   "   vr,   vi,   vr,   vr,   vr")
+ 	    (mult:VI
+ 	      (match_operand:VI 2 "register_operand"     "   vr,   vr,   vi,   vr,   vr")
+ 	      (match_operand:VI 3 "register_operand"     "   vr,   vr,   vr,   vi,   vr")))
+ 	  (match_operand:VI 5 "register_operand"         "    0,   vr,   vr,   vr,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[2], operands[5])
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vnmsac.vv\t%0,%2,%3%p1
+    #
+    #
+    #
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     if (satisfies_constraint_vi (operands[3]))
+       std::swap (operands[2], operands[3]);
+ 
+     if (satisfies_constraint_vi (operands[2]))
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[2], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[2] = operands[0];
+       }
+     else
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[4], operands[1], operands[6], 
+ 			operands[7], operands[9]));
+         operands[5] = operands[4] = operands[0];
+       }
+   }
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_minus_mul<mode>_scalar"
+   [(set (match_operand:VI_QHS 0 "register_operand")
+ 	(if_then_else:VI_QHS
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI_QHS
+ 	    (match_operand:VI_QHS 4 "register_operand")
+ 	    (mult:VI_QHS
+ 	      (vec_duplicate:VI_QHS
+ 	        (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	      (match_operand:VI_QHS 3 "register_operand")))
+ 	  (match_operand:VI_QHS 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   operands[2] = force_reg (<VEL>mode, operands[2]);
+ })
+ 
+ (define_insn "*pred_nmsub<mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"            "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "register_operand"        " vr,  vr, vr,  vr")
+ 	    (mult:VI
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 2 "register_operand" "  r,   r,  r,   r"))
+ 	      (match_operand:VI 3 "register_operand"      "  0,  vr,  0,  vr")))
+ 	  (match_dup 3)))]
+   "TARGET_VECTOR"
+   "@
+    vnmsub.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vnmsub.vx\t%0,%2,%4%p1
+    vnmsub.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vnmsub.vx\t%0,%2,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_nmsac<mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"            "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "register_operand"        "  0,  vr,  0,  vr")
+ 	    (mult:VI
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 2 "register_operand" "  r,   r,  r,   r"))
+ 	      (match_operand:VI 3 "register_operand"      " vr,  vr, vr,  vr")))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vnmsac.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vnmsac.vx\t%0,%2,%3%p1
+    vnmsac.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vnmsac.vx\t%0,%2,%3%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_minus_mul<mode>_scalar"
+   [(set (match_operand:VI 0 "register_operand"            "=&vr, ?&vr, ?&vr, ?&vr")
+ 	(if_then_else:VI
+ 	  (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 9 "const_int_operand"        "    i,    i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI
+ 	    (match_operand:VI 4 "vector_arith_operand"    "   vr,   vi,   vr,   vr")
+ 	    (mult:VI
+ 	      (vec_duplicate:VI
+ 	        (match_operand:<VEL> 2 "register_operand" "    r,    r,    r,    r"))
+ 	      (match_operand:VI 3 "register_operand"      "   vr,   vr,   vi,   vr")))
+ 	  (match_operand:VI 5 "register_operand"          "    0,   vr,   vr,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vnmsac.vx\t%0,%2,%3%p1
+    #
+    #
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     if (satisfies_constraint_vi (operands[3]))
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[3], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[3] = operands[0];
+       }
+     else
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[4] = operands[0];
+       }
+   }
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_minus_mul<mode>_scalar"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI_D
+ 	    (match_operand:VI_D 4 "register_operand")
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (match_operand:<VEL> 2 "reg_or_int_operand"))
+ 	      (match_operand:VI_D 3 "register_operand")))
+ 	  (match_operand:VI_D 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::sew64_scalar_helper (
+ 	operands,
+ 	/* scalar op */&operands[2],
+ 	/* vl */operands[6],
+ 	<MODE>mode,
+ 	<VM>mode,
+ 	false,
+ 	[] (rtx *operands, rtx boardcast_scalar) {
+ 	  emit_insn (gen_pred_minus_mul<mode> (operands[0], operands[1],
+ 	       boardcast_scalar, operands[3], operands[4], operands[5],
+ 	       operands[6], operands[7], operands[8], operands[9]));
+         }))
+     DONE;
+ })
+ 
+ (define_insn "*pred_nmsub<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"               "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"       " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (minus:VI_D
+ 	    (match_operand:VI_D 4 "register_operand"           " vr,  vr, vr,  vr")
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 2 "register_operand" "  r,   r,  r,   r")))
+ 	      (match_operand:VI_D 3 "register_operand"         "  0,  vr,  0,  vr")))
+ 	  (match_dup 3)))]
+   "TARGET_VECTOR"
+   "@
+    vnmsub.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vnmsub.vx\t%0,%2,%4%p1
+    vnmsub.vx\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vnmsub.vx\t%0,%2,%4%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_nmsac<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"               "=vd,?&vd, vr,?&vr")
+ 	(if_then_else:VI_D
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"       " vm,  vm,Wc1, 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_VPREDICATE)
+ 	  (minus:VI_D
+ 	    (match_operand:VI_D 4 "register_operand"           "  0,  vr,  0,  vr")
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 2 "register_operand" "  r,   r,  r,   r")))
+ 	      (match_operand:VI_D 3 "register_operand"         " vr,  vr, vr,  vr")))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vnmsac.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vnmsac.vx\t%0,%2,%3%p1
+    vnmsac.vx\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vnmsac.vx\t%0,%2,%3%p1"
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_minus_mul<mode>_extended_scalar"
+   [(set (match_operand:VI_D 0 "register_operand"                "=&vr, ?&vr, ?&vr, ?&vr")
+ 	(if_then_else:VI_D
+ 	  (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 9 "const_int_operand"              "    i,    i,    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (minus:VI_D
+ 	    (match_operand:VI_D 4 "vector_arith_operand"       "   vr,   vr,   vr,   vr")
+ 	    (mult:VI_D
+ 	      (vec_duplicate:VI_D
+ 	        (sign_extend:<VEL>
+ 	          (match_operand:<VSUBEL> 2 "register_operand" "    r,    r,    r,    r")))
+ 	      (match_operand:VI_D 3 "register_operand"         "   vr,   vr,   vr,   vr")))
+ 	  (match_operand:VI_D 5 "register_operand"             "    0,   vr,   vr,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vnmsac.vx\t%0,%2,%3%p1
+    #
+    #
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     if (satisfies_constraint_vi (operands[3]))
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[3], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[3] = operands[0];
+       }
+     else
+       {
+         emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+                 	operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+         operands[5] = operands[4] = operands[0];
+       }
+   }
+   [(set_attr "type" "vimuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated widen integer ternary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 11.14 Vector Widening Integer Multiply-Add Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_widen_mul_plus<su><mode>"
+   [(set (match_operand:VWEXTI 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VWEXTI
+ 	    (mult:VWEXTI
+ 	      (any_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr"))
+ 	      (any_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTI 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vwmacc<u>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "viwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_plus<su><mode>_scalar"
+   [(set (match_operand:VWEXTI 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VWEXTI
+ 	    (mult:VWEXTI
+ 	      (any_extend:VWEXTI
+ 	        (vec_duplicate:<V_DOUBLE_TRUNC>
+ 	          (match_operand:<VSUBEL> 3 "register_operand"       "    r")))
+ 	      (any_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTI 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vwmacc<u>.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "viwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_plussu<mode>"
+   [(set (match_operand:VWEXTI 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VWEXTI
+ 	    (mult:VWEXTI
+ 	      (sign_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr"))
+ 	      (zero_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTI 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vwmaccsu.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "viwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_plussu<mode>_scalar"
+   [(set (match_operand:VWEXTI 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VWEXTI
+ 	    (mult:VWEXTI
+ 	      (sign_extend:VWEXTI
+ 	        (vec_duplicate:<V_DOUBLE_TRUNC>
+ 	          (match_operand:<VSUBEL> 3 "register_operand"       "    r")))
+ 	      (zero_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTI 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vwmaccsu.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "viwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_plusus<mode>_scalar"
+   [(set (match_operand:VWEXTI 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus:VWEXTI
+ 	    (mult:VWEXTI
+ 	      (zero_extend:VWEXTI
+ 	        (vec_duplicate:<V_DOUBLE_TRUNC>
+ 	          (match_operand:<VSUBEL> 3 "register_operand"       "    r")))
+ 	      (sign_extend:VWEXTI
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTI 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vwmaccus.vx\t%0,%3,%4%p1"
+   [(set_attr "type" "viwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated BOOL mask operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 15.1 Vector Mask-Register Logical Instructions
+ ;; - 15.2 Vector count population in mask vcpop.m
+ ;; - 15.3 vfirst find-first-set mask bit
+ ;; - 15.4 vmsbf.m set-before-first mask bit
+ ;; - 15.5 vmsif.m set-including-first mask bit
+ ;; - 15.6 vmsof.m set-only-first mask bit
+ ;; - 15.8 Vector Iota Instruction
+ ;; - 15.9 Vector Element Index Instruction
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; We keep this pattern same as pred_mov so that we can gain more optimizations.
+ ;; For example, if we have vmxor.mm v1,v1,v1. It will be optmized as vmclr.m which
+ ;; is generated by pred_mov.
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VB 0 "register_operand"                   "=vr")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 1 "vector_all_trues_mask_operand" "Wc1")
+ 	     (match_operand 5 "vector_length_operand"            " rK")
+ 	     (match_operand 6 "const_int_operand"                "  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_bitwise:VB
+ 	    (match_operand:VB 3 "register_operand"               " vr")
+ 	    (match_operand:VB 4 "register_operand"               " vr"))
+ 	  (match_operand:VB 2 "vector_undef_operand"             " vu")))]
+   "TARGET_VECTOR"
+   "vm<insn>.mm\t%0,%3,%4"
+   [(set_attr "type" "vmalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[6])"))])
+ 
+ (define_insn "@pred_n<optab><mode>"
+   [(set (match_operand:VB 0 "register_operand"                   "=vr")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 1 "vector_all_trues_mask_operand" "Wc1")
+ 	     (match_operand 5 "vector_length_operand"            " rK")
+ 	     (match_operand 6 "const_int_operand"                "  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (not:VB
+ 	    (any_bitwise:VB
+ 	      (match_operand:VB 3 "register_operand"             " vr")
+ 	      (match_operand:VB 4 "register_operand"             " vr")))
+ 	  (match_operand:VB 2 "vector_undef_operand"             " vu")))]
+   "TARGET_VECTOR"
+   "vm<ninsn>.mm\t%0,%3,%4"
+   [(set_attr "type" "vmalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[6])"))])
+ 
+ (define_insn "@pred_<optab>not<mode>"
+   [(set (match_operand:VB 0 "register_operand"                   "=vr")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 1 "vector_all_trues_mask_operand" "Wc1")
+ 	     (match_operand 5 "vector_length_operand"            " rK")
+ 	     (match_operand 6 "const_int_operand"                "  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (and_ior:VB
+ 	    (match_operand:VB 3 "register_operand"               " vr")
+ 	    (not:VB
+ 	      (match_operand:VB 4 "register_operand"             " vr")))
+ 	  (match_operand:VB 2 "vector_undef_operand"             " vu")))]
+   "TARGET_VECTOR"
+   "vm<insn>n.mm\t%0,%3,%4"
+   [(set_attr "type" "vmalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[6])"))])
+ 
+ (define_insn "@pred_not<mode>"
+   [(set (match_operand:VB 0 "register_operand"                   "=vr")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 1 "vector_all_trues_mask_operand" "Wc1")
+ 	     (match_operand 4 "vector_length_operand"            " rK")
+ 	     (match_operand 5 "const_int_operand"                "  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (not:VB
+ 	    (match_operand:VB 3 "register_operand"               " vr"))
+ 	  (match_operand:VB 2 "vector_undef_operand"             " vu")))]
+   "TARGET_VECTOR"
+   "vmnot.m\t%0,%3"
+   [(set_attr "type" "vmalu")
+    (set_attr "mode" "<MODE>")
+    (set_attr "vl_op_idx" "4")
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[5])"))])
+ 
+ (define_insn "@pred_popcount<VB:mode><P:mode>"
+   [(set (match_operand:P 0 "register_operand"               "=r")
+ 	(popcount:P
+ 	  (unspec:VB
+ 	    [(and:VB
+ 	       (match_operand:VB 1 "vector_mask_operand" "vmWc1")
+ 	       (match_operand:VB 2 "register_operand"    "   vr"))
+ 	     (match_operand 3 "vector_length_operand"    "   rK")
+ 	     (match_operand 4 "const_int_operand"        "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)))]
+   "TARGET_VECTOR"
+   "vcpop.m\t%0,%2%p1"
+   [(set_attr "type" "vmpop")
+    (set_attr "mode" "<VB:MODE>")])
+ 
+ (define_insn "@pred_ffs<VB:mode><P:mode>"
+   [(set (match_operand:P 0 "register_operand"                 "=r")
+ 	(plus:P
+ 	  (ffs:P
+ 	    (unspec:VB
+ 	      [(and:VB
+ 	         (match_operand:VB 1 "vector_mask_operand" "vmWc1")
+ 	         (match_operand:VB 2 "register_operand"    "   vr"))
+ 	       (match_operand 3 "vector_length_operand"    "   rK")
+ 	       (match_operand 4 "const_int_operand"        "    i")
+ 	       (reg:SI VL_REGNUM)
+ 	       (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))
+ 	  (const_int -1)))]
+   "TARGET_VECTOR"
+   "vfirst.m\t%0,%2%p1"
+   [(set_attr "type" "vmffs")
+    (set_attr "mode" "<VB:MODE>")])
+ 
+ (define_insn "@pred_<misc_op><mode>"
+   [(set (match_operand:VB 0 "register_operand"          "=&vr,  &vr")
+ 	(if_then_else:VB
+ 	  (unspec:VB
+ 	    [(match_operand:VB 1 "vector_mask_operand" "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"  "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"      "    i,    i")
+ 	     (match_operand 6 "const_int_operand"      "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VB
+ 	    [(match_operand:VB 3 "register_operand"    "   vr,   vr")] VMISC)
+ 	  (match_operand:VB 2 "vector_merge_operand"   "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vm<misc_op>.m\t%0,%3%p1"
+   [(set_attr "type" "vmsfs")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_iota<mode>"
+   [(set (match_operand:VI 0 "register_operand"            "=&vr,  &vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"    "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"        "    i,    i")
+ 	     (match_operand 6 "const_int_operand"        "    i,    i")
+ 	     (match_operand 7 "const_int_operand"        "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VI
+ 	    [(match_operand:<VM> 3 "register_operand"    "   vr,   vr")] UNSPEC_VIOTA)
+ 	  (match_operand:VI 2 "vector_merge_operand"     "   vu,    0")))]
+   "TARGET_VECTOR"
+   "viota.m\t%0,%3%p1"
+   [(set_attr "type" "vmiota")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_series<mode>"
+   [(set (match_operand:VI 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
+ 	     (match_operand 3 "vector_length_operand"    " rK, rK, rK, rK")
+ 	     (match_operand 4 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (match_operand 5 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (vec_series:VI (const_int 0) (const_int 1))
+ 	  (match_operand:VI 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vid.v\t%0%p1"
+   [(set_attr "type" "vmidx")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point binary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.2 Vector Single-Width Floating-Point Add/Subtract Instructions
+ ;; - 13.4 Vector Single-Width Floating-Point Multiply/Divide Instructions
+ ;; - 13.11 Vector Floating-Point MIN/MAX Instructions
+ ;; - 13.12 Vector Floating-Point Sign-Injection Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (any_float_binop:VF
+ 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr")
+ 	    (match_operand:VF 4 "register_operand"       " vr, vr, vr, vr"))
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vf<insn>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "<float_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (commutative_float_binop:VF
+ 	    (vec_duplicate:VF
+ 	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
+ 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr"))
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vf<insn>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "<float_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<optab><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (non_commutative_float_binop:VF
+ 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr")
+ 	    (vec_duplicate:VF
+ 	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f")))
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vf<insn>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "<float_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<optab><mode>_reverse_scalar"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (non_commutative_float_binop:VF
+ 	    (vec_duplicate:VF
+ 	      (match_operand:<VEL> 4 "register_operand"  "  f,  f,  f,  f"))
+ 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr"))
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfr<insn>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "<float_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<copysign><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VF
+ 	    [(match_operand:VF 3 "register_operand"       " vr, vr, vr, vr")
+ 	     (match_operand:VF 4 "register_operand"       " vr, vr, vr, vr")] VCOPYSIGNS)
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfsgnj<nx>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vfsgnj")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<copysign><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	  (unspec:VF
+ 	    [(match_operand:VF 3 "register_operand"      " vr, vr, vr, vr")
+ 	     (vec_duplicate:VF
+ 	       (match_operand:<VEL> 4 "register_operand" "  f,  f,  f,  f"))] VCOPYSIGNS)
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfsgnj<nx>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "vfsgnj")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point ternary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.6 Vector Single-Width Floating-Point Fused Multiply-Add Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_expand "@pred_mul_<optab><mode>"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (match_operand:VF 2 "register_operand")
+ 	      (match_operand:VF 3 "register_operand"))
+ 	    (match_operand:VF 4 "register_operand"))
+ 	  (match_operand:VF 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   /* Swap the multiplication operands if the fallback value is the
+      second of the two.  */
+   if (rtx_equal_p (operands[3], operands[5]))
+     std::swap (operands[2], operands[3]);
+ })
+ 
+ (define_insn "*pred_<madd_msub><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (match_operand:VF 2 "register_operand"     "  0,   vr,  0,   vr")
+ 	      (match_operand:VF 3 "register_operand"     " vr,   vr, vr,   vr"))
+ 	    (match_operand:VF 4 "register_operand"       " vr,   vr, vr,   vr"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "@
+    vf<madd_msub>.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vf<madd_msub>.vv\t%0,%3,%4%p1
+    vf<madd_msub>.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vf<madd_msub>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_<macc_msac><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (match_operand:VF 2 "register_operand"     " vr,   vr, vr,   vr")
+ 	      (match_operand:VF 3 "register_operand"     " vr,   vr, vr,   vr"))
+ 	    (match_operand:VF 4 "register_operand"       "  0,   vr,  0,   vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vf<macc_msac>.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<macc_msac>.vv\t%0,%2,%3%p1
+    vf<macc_msac>.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<macc_msac>.vv\t%0,%2,%3%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_<optab><mode>"
+   [(set (match_operand:VF 0 "register_operand"            "=&vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (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 9 "const_int_operand"        "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (match_operand:VF 2 "register_operand"     "   vr,   vr")
+ 	      (match_operand:VF 3 "register_operand"     "   vr,   vr"))
+ 	    (match_operand:VF 4 "vector_arith_operand"   "   vr,   vr"))
+ 	  (match_operand:VF 5 "register_operand"         "    0,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[2], operands[5])
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vf<macc_msac>.vv\t%0,%2,%3%p1
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+ 			operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+     operands[5] = operands[4] = operands[0];
+   }
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_mul_<optab><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 2 "register_operand"))
+ 	      (match_operand:VF 3 "register_operand"))
+ 	    (match_operand:VF 4 "register_operand"))
+ 	  (match_operand:VF 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_insn "*pred_<madd_msub><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"            "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 2 "register_operand" "  f,  f,    f,    f"))
+ 	      (match_operand:VF 3 "register_operand"      "  0, vr,    0,   vr"))
+ 	    (match_operand:VF 4 "register_operand"        " vr, vr,   vr,   vr"))
+ 	  (match_dup 3)))]
+   "TARGET_VECTOR"
+   "@
+    vf<madd_msub>.vf\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vf<madd_msub>.vf\t%0,%2,%4%p1
+    vf<madd_msub>.vf\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vf<madd_msub>.vf\t%0,%2,%4%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_<macc_msac><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"            "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 2 "register_operand" "  f,  f,    f,    f"))
+ 	      (match_operand:VF 3 "register_operand"      " vr, vr,   vr,   vr"))
+ 	    (match_operand:VF 4 "register_operand"        "  0, vr,    0,   vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vf<macc_msac>.vf\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<macc_msac>.vf\t%0,%2,%3%p1
+    vf<macc_msac>.vf\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<macc_msac>.vf\t%0,%2,%3%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_<optab><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"            "=&vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (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 9 "const_int_operand"        "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (mult:VF
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 2 "register_operand" "    f,   f"))
+ 	      (match_operand:VF 3 "register_operand"      "   vr,  vr"))
+ 	    (match_operand:VF 4 "vector_arith_operand"    "   vr,  vr"))
+ 	  (match_operand:VF 5 "register_operand"          "    0,  vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vf<macc_msac>.vf\t%0,%2,%3%p1
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+ 			operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+     operands[5] = operands[4] = operands[0];
+   }
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_mul_neg_<optab><mode>"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (match_operand:VF 2 "register_operand")
+ 	        (match_operand:VF 3 "register_operand")))
+ 	    (match_operand:VF 4 "register_operand"))
+ 	  (match_operand:VF 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {
+   /* Swap the multiplication operands if the fallback value is the
+      second of the two.  */
+   if (rtx_equal_p (operands[3], operands[5]))
+     std::swap (operands[2], operands[3]);
+ })
+ 
+ (define_insn "*pred_<nmsub_nmadd><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (match_operand:VF 2 "register_operand"   "  0,   vr,  0,   vr")
+ 	        (match_operand:VF 3 "register_operand"   " vr,   vr, vr,   vr")))
+ 	    (match_operand:VF 4 "register_operand"       " vr,   vr, vr,   vr"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "@
+    vf<nmsub_nmadd>.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vf<nmsub_nmadd>.vv\t%0,%3,%4%p1
+    vf<nmsub_nmadd>.vv\t%0,%3,%4%p1
+    vmv.v.v\t%0,%2\;vf<nmsub_nmadd>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_<nmsac_nmacc><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (match_operand:VF 2 "register_operand"   " vr,   vr, vr,   vr")
+ 	        (match_operand:VF 3 "register_operand"   " vr,   vr, vr,   vr")))
+ 	    (match_operand:VF 4 "register_operand"       "  0,   vr,  0,   vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vf<nmsac_nmacc>.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<nmsac_nmacc>.vv\t%0,%2,%3%p1
+    vf<nmsac_nmacc>.vv\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<nmsac_nmacc>.vv\t%0,%2,%3%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_neg_<optab><mode>"
+   [(set (match_operand:VF 0 "register_operand"            "=&vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (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 9 "const_int_operand"        "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (match_operand:VF 2 "register_operand"     "   vr,   vr")
+ 	        (match_operand:VF 3 "register_operand"     "   vr,   vr")))
+ 	    (match_operand:VF 4 "vector_arith_operand"   "   vr,   vr"))
+ 	  (match_operand:VF 5 "register_operand"         "    0,   vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[2], operands[5])
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vf<nmsac_nmacc>.vv\t%0,%2,%3%p1
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+ 			operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+     operands[5] = operands[4] = operands[0];
+   }
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_mul_neg_<optab><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (match_operand 9 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (vec_duplicate:VF
+ 	          (match_operand:<VEL> 2 "register_operand"))
+ 	        (match_operand:VF 3 "register_operand")))
+ 	    (match_operand:VF 4 "register_operand"))
+ 	  (match_operand:VF 5 "register_operand")))]
+   "TARGET_VECTOR"
+ {})
+ 
+ (define_insn "*pred_<nmsub_nmadd><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"            "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (vec_duplicate:VF
+ 	          (match_operand:<VEL> 2 "register_operand" "  f,    f,  f,    f"))
+ 	        (match_operand:VF 3 "register_operand"      "  0,   vr,  0,   vr")))
+ 	    (match_operand:VF 4 "register_operand"          " vr,   vr, vr,   vr"))
+ 	  (match_dup 3)))]
+   "TARGET_VECTOR"
+   "@
+    vf<nmsub_nmadd>.vf\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vf<nmsub_nmadd>.vf\t%0,%2,%4%p1
+    vf<nmsub_nmadd>.vf\t%0,%2,%4%p1
+    vmv.v.v\t%0,%3\;vf<nmsub_nmadd>.vf\t%0,%2,%4%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "4")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn "*pred_<nmsac_nmacc><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"              "=vd, ?&vd, vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"    " vm,   vm,Wc1,  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_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (vec_duplicate:VF
+ 	          (match_operand:<VEL> 2 "register_operand" "  f,    f,  f,    f"))
+ 	        (match_operand:VF 3 "register_operand"      " vr,   vr, vr,   vr")))
+ 	    (match_operand:VF 4 "register_operand"          "  0,   vr,  0,   vr"))
+ 	  (match_dup 4)))]
+   "TARGET_VECTOR"
+   "@
+    vf<nmsac_nmacc>.vf\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<nmsac_nmacc>.vf\t%0,%2,%3%p1
+    vf<nmsac_nmacc>.vf\t%0,%2,%3%p1
+    vmv.v.v\t%0,%4\;vf<nmsac_nmacc>.vf\t%0,%2,%3%p1"
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")
+    (set_attr "merge_op_idx" "2")
+    (set_attr "vl_op_idx" "5")
+    (set (attr "ta") (symbol_ref "riscv_vector::get_ta(operands[6])"))
+    (set (attr "ma") (symbol_ref "riscv_vector::get_ma(operands[7])"))
+    (set (attr "avl_type") (symbol_ref "INTVAL (operands[8])"))])
+ 
+ (define_insn_and_rewrite "*pred_mul_neg_<optab><mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"               "=&vr, ?&vr")
+ 	(if_then_else:VF
+ 	  (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 9 "const_int_operand"           "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VF
+ 	    (neg:VF
+ 	      (mult:VF
+ 	        (vec_duplicate:VF
+ 	          (match_operand:<VEL> 2 "register_operand" "    f,   f"))
+ 	        (match_operand:VF 3 "register_operand"      "   vr,  vr")))
+ 	    (match_operand:VF 4 "vector_arith_operand"      "   vr,  vr"))
+ 	  (match_operand:VF 5 "register_operand"            "    0,  vr")))]
+   "TARGET_VECTOR
+    && !rtx_equal_p (operands[3], operands[5])
+    && !rtx_equal_p (operands[4], operands[5])"
+   "@
+    vmv.v.v\t%0,%4\;vf<nmsac_nmacc>.vf\t%0,%2,%3%p1
+    #"
+   "&& reload_completed
+    && !rtx_equal_p (operands[0], operands[5])"
+   {
+     emit_insn (gen_pred_merge<mode> (operands[0], RVV_VUNDEF (<MODE>mode),
+ 			operands[5], operands[4], operands[1], operands[6],
+ 			operands[7], operands[9]));
+     operands[5] = operands[4] = operands[0];
+   }
+   [(set_attr "type" "vfmuladd")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point unary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.8 Vector Floating-Point Square-Root Instruction
+ ;; - 13.9 Vector Floating-Point Reciprocal Square-Root Estimate Instruction
+ ;; - 13.10 Vector Floating-Point Reciprocal Estimate Instruction
+ ;; - 13.12 Vector Floating-Point Sign-Injection Instructions (vfneg.v/vfabs.v)
+ ;; - 13.14 Vector Floating-Point Classify Instruction
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_<optab><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"    " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_float_unop:VF
+ 	    (match_operand:VF 3 "register_operand"       " vr, vr, vr, vr"))
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vf<insn>.v\t%0,%3%p1"
+   [(set_attr "type" "<float_insn_type>")
+    (set_attr "mode" "<MODE>")
+    (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") (symbol_ref "INTVAL (operands[7])"))])
+ 
+ (define_insn "@pred_<misc_op><mode>"
+   [(set (match_operand:VF 0 "register_operand"           "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"    " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"        "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VF
+ 	    [(match_operand:VF 3 "register_operand"       " vr, vr, vr, vr")] VFMISC)
+ 	  (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vf<misc_op>.v\t%0,%3%p1"
+   [(set_attr "type" "<float_insn_type>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_class<mode>"
+   [(set (match_operand:<VCONVERT> 0 "register_operand"       "=vd, vd, vr, vr")
+ 	(if_then_else:<VCONVERT>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"        " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:<VCONVERT>
+ 	    [(match_operand:VF 3 "register_operand"          " vr, vr, vr, vr")] UNSPEC_VFCLASS)
+ 	  (match_operand:<VCONVERT> 2 "vector_merge_operand" " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfclass.v\t%0,%3%p1"
+   [(set_attr "type" "vfclass")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point widen binary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.3 Vector Widening Floating-Point Add/Subtract Instructions
+ ;; - 13.5 Vector Widening Floating-Point Multiply
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; Vector Widening Add/Subtract/Multiply.
+ (define_insn "@pred_dual_widen_<optab><mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand"                  "=&vr,  &vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_widen_binop:VWEXTF
+ 	    (float_extend:VWEXTF
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (float_extend:VWEXTF
+ 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
+ 	  (match_operand:VWEXTF 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfw<insn>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vf<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_dual_widen_<optab><mode>_scalar"
+   [(set (match_operand:VWEXTF 0 "register_operand"                  "=&vr,  &vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_widen_binop:VWEXTF
+ 	    (float_extend:VWEXTF
+ 	      (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	    (float_extend:VWEXTF
+ 	      (vec_duplicate:<V_DOUBLE_TRUNC>
+ 		(match_operand:<VSUBEL> 4 "register_operand"       "    f,    f"))))
+ 	  (match_operand:VWEXTF 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfw<insn>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "vf<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_single_widen_<plus_minus:optab><mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand"                  "=&vr,  &vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTF
+ 	    (match_operand:VWEXTF 3 "register_operand"             "   vr,   vr")
+ 	    (float_extend:VWEXTF
+ 	      (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr,   vr")))
+ 	  (match_operand:VWEXTF 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfw<insn>.wv\t%0,%3,%4%p1"
+   [(set_attr "type" "vf<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_single_widen_<plus_minus:optab><mode>_scalar"
+   [(set (match_operand:VWEXTF 0 "register_operand"                  "=&vr,  &vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"              "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                  "    i,    i")
+ 	     (match_operand 8 "const_int_operand"                  "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTF
+ 	    (match_operand:VWEXTF 3 "register_operand"             "   vr,   vr")
+ 	    (float_extend:VWEXTF
+ 	      (vec_duplicate:<V_DOUBLE_TRUNC>
+ 		(match_operand:<VSUBEL> 4 "register_operand"       "    f,    f"))))
+ 	  (match_operand:VWEXTF 2 "vector_merge_operand"           "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfw<insn>.wf\t%0,%3,%4%p1"
+   [(set_attr "type" "vf<widen_binop_insn_type>")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated widen floating-point ternary operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.7 Vector Widening Floating-Point Fused Multiply-Add Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_widen_mul_<optab><mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTF
+ 	    (mult:VWEXTF
+ 	      (float_extend:VWEXTF
+ 	        (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr"))
+ 	      (float_extend:VWEXTF
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTF 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vfw<macc_msac>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vfwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_<optab><mode>_scalar"
+   [(set (match_operand:VWEXTF 0 "register_operand"                    "=&vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"             "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                "   rK")
+ 	     (match_operand 6 "const_int_operand"                    "    i")
+ 	     (match_operand 7 "const_int_operand"                    "    i")
+ 	     (match_operand 8 "const_int_operand"                    "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTF
+ 	    (mult:VWEXTF
+ 	      (float_extend:VWEXTF
+ 	        (vec_duplicate:<V_DOUBLE_TRUNC>
+ 	          (match_operand:<VSUBEL> 3 "register_operand"       "    f")))
+ 	      (float_extend:VWEXTF
+ 	        (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr")))
+ 	    (match_operand:VWEXTF 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vfw<macc_msac>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "vfwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_neg_<optab><mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand"                      "=&vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  "   rK")
+ 	     (match_operand 6 "const_int_operand"                      "    i")
+ 	     (match_operand 7 "const_int_operand"                      "    i")
+ 	     (match_operand 8 "const_int_operand"                      "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTF
+ 	    (neg:VWEXTF
+ 	      (mult:VWEXTF
+ 	        (float_extend:VWEXTF
+ 	          (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr"))
+ 	        (float_extend:VWEXTF
+ 	          (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr"))))
+ 	      (match_operand:VWEXTF 2 "register_operand"               "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vfw<nmsac_nmacc>.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vfwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_widen_mul_neg_<optab><mode>_scalar"
+   [(set (match_operand:VWEXTF 0 "register_operand"                      "=&vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"               "vmWc1")
+ 	     (match_operand 5 "vector_length_operand"                  "   rK")
+ 	     (match_operand 6 "const_int_operand"                      "    i")
+ 	     (match_operand 7 "const_int_operand"                      "    i")
+ 	     (match_operand 8 "const_int_operand"                      "    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (plus_minus:VWEXTF
+ 	    (neg:VWEXTF
+ 	      (mult:VWEXTF
+ 	        (float_extend:VWEXTF
+ 	          (vec_duplicate:<V_DOUBLE_TRUNC>
+ 	            (match_operand:<VSUBEL> 3 "register_operand"       "    f")))
+ 	        (float_extend:VWEXTF
+ 	          (match_operand:<V_DOUBLE_TRUNC> 4 "register_operand" "   vr"))))
+ 	    (match_operand:VWEXTF 2 "register_operand"                 "    0"))
+ 	  (match_dup 2)))]
+   "TARGET_VECTOR"
+   "vfw<nmsac_nmacc>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "vfwmuladd")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point comparison operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.13 Vector Floating-Point Compare Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_expand "@pred_cmp<mode>"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "signed_order_operator"
+ 	     [(match_operand:VF 4 "register_operand")
+ 	      (match_operand:VF 5 "register_operand")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "signed_order_operator"
+ 	     [(match_operand:VF 4 "register_operand"          "   vr,   vr")
+ 	      (match_operand:VF 5 "register_operand"          "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vmf%B3.vv\t%0,%4,%5%p1"
+   [(set_attr "type" "vfcmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_cmp<mode>_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "signed_order_operator"
+ 	     [(match_operand:VF 4 "register_operand"          "   vr,   vr")
+ 	      (match_operand:VF 5 "register_operand"          "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vmf%B3.vv\t%0,%4,%5%p1"
+   [(set_attr "type" "vfcmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_cmp<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "signed_order_operator"
+ 	     [(match_operand:VF 4 "register_operand")
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 5 "register_operand"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "signed_order_operator"
+ 	     [(match_operand:VF 4 "register_operand"          "   vr,   vr")
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 5 "register_operand"     "    f,    f"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vmf%B3.vf\t%0,%4,%5%p1"
+   [(set_attr "type" "vfcmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_cmp<mode>_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "signed_order_operator"
+ 	     [(match_operand:VF 4 "register_operand"          "   vr,   vr")
+ 	      (vec_duplicate:VF
+ 	        (match_operand:<VEL> 5 "register_operand"     "    f,    f"))])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vmf%B3.vf\t%0,%4,%5%p1"
+   [(set_attr "type" "vfcmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_eqne<mode>_scalar"
+   [(set (match_operand:<VM> 0 "register_operand")
+ 	(if_then_else:<VM>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand")
+ 	     (match_operand 6 "vector_length_operand")
+ 	     (match_operand 7 "const_int_operand")
+ 	     (match_operand 8 "const_int_operand")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VF
+ 	        (match_operand:<VEL> 5 "register_operand"))
+ 	      (match_operand:VF 4 "register_operand")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand")))]
+   "TARGET_VECTOR"
+   {})
+ 
+ ;; 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")
+ 	(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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VF
+ 	        (match_operand:<VEL> 5 "register_operand"     "    f,    f"))
+ 	      (match_operand:VF 4 "register_operand"          "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_le (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vmf%B3.vf\t%0,%4,%5%p1"
+   [(set_attr "type" "vfcmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; We use early-clobber for source LMUL > dest LMUL.
+ (define_insn "*pred_eqne<mode>_scalar_narrow"
+   [(set (match_operand:<VM> 0 "register_operand"               "=&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")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (match_operator:<VM> 3 "equality_operator"
+ 	     [(vec_duplicate:VF
+ 	        (match_operand:<VEL> 5 "register_operand"     "    f,    f"))
+ 	      (match_operand:VF 4 "register_operand"          "   vr,   vr")])
+ 	  (match_operand:<VM> 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR && known_gt (GET_MODE_SIZE (<MODE>mode), BYTES_PER_RISCV_VECTOR)"
+   "vmf%B3.vf\t%0,%4,%5%p1"
+   [(set_attr "type" "vfcmp")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point merge
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.15 Vector Floating-Point Merge Instruction
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_merge<mode>_scalar"
+   [(set (match_operand:VF 0 "register_operand"      "=vd,vd")
+     (if_then_else:VF
+       (unspec:<VM>
+         [(match_operand 5 "vector_length_operand"   " rK,rK")
+          (match_operand 6 "const_int_operand"       "  i, i")
+          (match_operand 7 "const_int_operand"       "  i, i")
+          (reg:SI VL_REGNUM)
+          (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+       (vec_merge:VF
+         (vec_duplicate:VF
+           (match_operand:<VEL> 3 "register_operand" "  f, f"))
+         (match_operand:VF 2 "register_operand"      " vr,vr")
+ 	(match_operand:<VM> 4 "register_operand"    " vm,vm"))
+       (match_operand:VF 1 "vector_merge_operand"    " vu, 0")))]
+   "TARGET_VECTOR"
+   "vfmerge.vfm\t%0,%2,%3,%4"
+   [(set_attr "type" "vfmerge")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point conversions
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.17 Single-Width Floating-Point/Integer Type-Convert Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_fcvt_x<v_su>_f<mode>"
+   [(set (match_operand:<VCONVERT> 0 "register_operand"       "=vd, vd, vr, vr")
+ 	(if_then_else:<VCONVERT>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"        " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:<VCONVERT>
+ 	     [(match_operand:VF 3 "register_operand"         " vr, vr, vr, vr")] VFCVTS)
+ 	  (match_operand:<VCONVERT> 2 "vector_merge_operand" " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfcvt.x<v_su>.f.v\t%0,%3%p1"
+   [(set_attr "type" "vfcvtftoi")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<fix_cvt><mode>"
+   [(set (match_operand:<VCONVERT> 0 "register_operand"       "=vd, vd, vr, vr")
+ 	(if_then_else:<VCONVERT>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"        " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"            "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_fix:<VCONVERT>
+ 	     (match_operand:VF 3 "register_operand"          " vr, vr, vr, vr"))
+ 	  (match_operand:<VCONVERT> 2 "vector_merge_operand" " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfcvt.rtz.x<u>.f.v\t%0,%3%p1"
+   [(set_attr "type" "vfcvtftoi")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_<float_cvt><mode>"
+   [(set (match_operand:VF 0 "register_operand"              "=vd, vd, vr, vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"    " vm, vm,Wc1,Wc1")
+ 	     (match_operand 4 "vector_length_operand"       " rK, rK, rK, rK")
+ 	     (match_operand 5 "const_int_operand"           "  i,  i,  i,  i")
+ 	     (match_operand 6 "const_int_operand"           "  i,  i,  i,  i")
+ 	     (match_operand 7 "const_int_operand"           "  i,  i,  i,  i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_float:VF
+ 	     (match_operand:<VCONVERT> 3 "register_operand" " vr, vr, vr, vr"))
+ 	  (match_operand:VF 2 "vector_merge_operand"        " vu,  0, vu,  0")))]
+   "TARGET_VECTOR"
+   "vfcvt.f.x<u>.v\t%0,%3%p1"
+   [(set_attr "type" "vfcvtitof")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point widen conversions
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.18 Widening Floating-Point/Integer Type-Convert Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_widen_fcvt_x<v_su>_f<mode>"
+   [(set (match_operand:VWCONVERTI 0 "register_operand"         "=&vr,  &vr")
+ 	(if_then_else:VWCONVERTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"      "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"         "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"             "    i,    i")
+ 	     (match_operand 6 "const_int_operand"             "    i,    i")
+ 	     (match_operand 7 "const_int_operand"             "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VWCONVERTI
+ 	     [(match_operand:<VNCONVERT> 3 "register_operand" "   vr,   vr")] VFCVTS)
+ 	  (match_operand:VWCONVERTI 2 "vector_merge_operand"  "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfwcvt.x<v_su>.f.v\t%0,%3%p1"
+   [(set_attr "type" "vfwcvtftoi")
+    (set_attr "mode" "<VNCONVERT>")])
+ 
+ (define_insn "@pred_widen_<fix_cvt><mode>"
+   [(set (match_operand:VWCONVERTI 0 "register_operand"        "=&vr,  &vr")
+ 	(if_then_else:VWCONVERTI
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"        "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"            "    i,    i")
+ 	     (match_operand 6 "const_int_operand"            "    i,    i")
+ 	     (match_operand 7 "const_int_operand"            "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_fix:VWCONVERTI
+ 	     (match_operand:<VNCONVERT> 3 "register_operand" "   vr,   vr"))
+ 	  (match_operand:VWCONVERTI 2 "vector_merge_operand" "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfwcvt.rtz.x<u>.f.v\t%0,%3%p1"
+   [(set_attr "type" "vfwcvtftoi")
+    (set_attr "mode" "<VNCONVERT>")])
+ 
+ (define_insn "@pred_widen_<float_cvt><mode>"
+   [(set (match_operand:VF 0 "register_operand"                "=&vr,  &vr")
+ 	(if_then_else:VF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"     "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"        "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"            "    i,    i")
+ 	     (match_operand 6 "const_int_operand"            "    i,    i")
+ 	     (match_operand 7 "const_int_operand"            "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (any_float:VF
+ 	     (match_operand:<VNCONVERT> 3 "register_operand" "   vr,   vr"))
+ 	  (match_operand:VF 2 "vector_merge_operand"         "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfwcvt.f.x<u>.v\t%0,%3%p1"
+   [(set_attr "type" "vfwcvtitof")
+    (set_attr "mode" "<VNCONVERT>")])
+ 
+ (define_insn "@pred_extend<mode>"
+   [(set (match_operand:VWEXTF 0 "register_operand"                 "=&vr,  &vr")
+ 	(if_then_else:VWEXTF
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"          "vmWc1,vmWc1")
+ 	     (match_operand 4 "vector_length_operand"             "   rK,   rK")
+ 	     (match_operand 5 "const_int_operand"                 "    i,    i")
+ 	     (match_operand 6 "const_int_operand"                 "    i,    i")
+ 	     (match_operand 7 "const_int_operand"                 "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (float_extend:VWEXTF
+ 	     (match_operand:<V_DOUBLE_TRUNC> 3 "register_operand" "   vr,   vr"))
+ 	  (match_operand:VWEXTF 2 "vector_merge_operand"          "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfwcvt.f.f.v\t%0,%3%p1"
+   [(set_attr "type" "vfwcvtftof")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated floating-point narrow conversions
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 13.19 Narrowing Floating-Point/Integer Type-Convert Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "@pred_narrow_fcvt_x<v_su>_f<mode>"
+   [(set (match_operand:<VNCONVERT> 0 "register_operand"        "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<VNCONVERT>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"       " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (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_VPREDICATE)
+ 	  (unspec:<VNCONVERT>
+ 	     [(match_operand:VF 3 "register_operand"           "  0,  0,  0,  0,   vr,   vr")] VFCVTS)
+ 	  (match_operand:<VNCONVERT> 2 "vector_merge_operand"  " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfncvt.x<v_su>.f.w\t%0,%3%p1"
+   [(set_attr "type" "vfncvtftoi")
+    (set_attr "mode" "<VNCONVERT>")])
+ 
+ (define_insn "@pred_narrow_<fix_cvt><mode>"
+   [(set (match_operand:<VNCONVERT> 0 "register_operand"        "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<VNCONVERT>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"      " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (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_VPREDICATE)
+ 	  (any_fix:<VNCONVERT>
+ 	     (match_operand:VF 3 "register_operand"           "  0,  0,  0,  0,   vr,   vr"))
+ 	  (match_operand:<VNCONVERT> 2 "vector_merge_operand" " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfncvt.rtz.x<u>.f.w\t%0,%3%p1"
+   [(set_attr "type" "vfncvtftoi")
+    (set_attr "mode" "<VNCONVERT>")])
+ 
+ (define_insn "@pred_narrow_<float_cvt><mode>"
+   [(set (match_operand:<VNCONVERT> 0 "register_operand"       "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<VNCONVERT>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"      " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (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_VPREDICATE)
+ 	  (any_float:<VNCONVERT>
+ 	     (match_operand:VWCONVERTI 3 "register_operand"   "  0,  0,  0,  0,   vr,   vr"))
+ 	  (match_operand:<VNCONVERT> 2 "vector_merge_operand" " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfncvt.f.x<u>.w\t%0,%3%p1"
+   [(set_attr "type" "vfncvtitof")
+    (set_attr "mode" "<VNCONVERT>")])
+ 
+ (define_insn "@pred_trunc<mode>"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"       "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (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_VPREDICATE)
+ 	  (float_truncate:<V_DOUBLE_TRUNC>
+ 	     (match_operand:VWEXTF 3 "register_operand"            "  0,  0,  0,  0,   vr,   vr"))
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand" " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfncvt.f.f.w\t%0,%3%p1"
+   [(set_attr "type" "vfncvtftof")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ (define_insn "@pred_rod_trunc<mode>"
+   [(set (match_operand:<V_DOUBLE_TRUNC> 0 "register_operand"       "=vd, vd, vr, vr,  &vr,  &vr")
+ 	(if_then_else:<V_DOUBLE_TRUNC>
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"           " vm, vm,Wc1,Wc1,vmWc1,vmWc1")
+ 	     (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_VPREDICATE)
+ 	  (unspec:<V_DOUBLE_TRUNC>
+ 	    [(float_truncate:<V_DOUBLE_TRUNC>
+ 	       (match_operand:VWEXTF 3 "register_operand"          "  0,  0,  0,  0,   vr,   vr"))] UNSPEC_ROD)
+ 	  (match_operand:<V_DOUBLE_TRUNC> 2 "vector_merge_operand" " vu,  0, vu,  0,   vu,    0")))]
+   "TARGET_VECTOR"
+   "vfncvt.rod.f.f.w\t%0,%3%p1"
+   [(set_attr "type" "vfncvtftof")
+    (set_attr "mode" "<V_DOUBLE_TRUNC>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated reduction operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 14.1 Vector Single-Width Integer Reduction Instructions
+ ;; - 14.2 Vector Widening Integer Reduction Instructions
+ ;; - 14.3 Vector Single-Width Floating-Point Reduction Instructions
+ ;; - 14.4 Vector Widening Floating-Point Reduction Instructions
+ ;; -------------------------------------------------------------------------------
+ 
+ ;; For reduction operations, we should have seperate patterns for
+ ;; TARGET_MIN_VLEN == 32 and TARGET_MIN_VLEN > 32.
+ ;; Since reduction need LMUL = 1 scalar operand as the input operand
+ ;; and they are different.
+ ;; For example, The LMUL = 1 corresponding mode of VNx16QImode is VNx4QImode
+ ;; for -march=rv*zve32* wheras VNx8QImode for -march=rv*zve64*
+ (define_insn "@pred_reduc_<reduc><mode><vlmul1>"
+   [(set (match_operand:<VLMUL1> 0 "register_operand"          "=vd, vd, vr, vr")
+ 	(unspec:<VLMUL1>
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand"     " vm, vm,Wc1,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")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (any_reduc:VI
+ 	     (vec_duplicate:VI
+ 	       (vec_select:<VEL>
+ 	         (match_operand:<VLMUL1> 4 "register_operand" " vr, vr, vr, vr")
+ 	         (parallel [(const_int 0)])))
+ 	     (match_operand:VI 3 "register_operand"           " vr, vr, vr, vr"))
+ 	   (match_operand:<VLMUL1> 2 "vector_merge_operand"   " vu,  0, vu,  0")] UNSPEC_REDUC))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN > 32"
+   "vred<reduc>.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vired")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_reduc_<reduc><mode><vlmul1_zve32>"
+   [(set (match_operand:<VLMUL1_ZVE32> 0 "register_operand"          "=vd, vd, vr, vr")
+ 	(unspec:<VLMUL1_ZVE32>
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand"           " vm, vm,Wc1,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")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (any_reduc:VI_ZVE32
+ 	     (vec_duplicate:VI_ZVE32
+ 	       (vec_select:<VEL>
+ 	         (match_operand:<VLMUL1_ZVE32> 4 "register_operand" " vr, vr, vr, vr")
+ 	         (parallel [(const_int 0)])))
+ 	     (match_operand:VI_ZVE32 3 "register_operand"           " vr, vr, vr, vr"))
+ 	   (match_operand:<VLMUL1_ZVE32> 2 "vector_merge_operand"   " vu,  0, vu,  0")] UNSPEC_REDUC))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN == 32"
+   "vred<reduc>.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vired")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_widen_reduc_plus<v_su><mode><vwlmul1>"
+   [(set (match_operand:<VWLMUL1> 0 "register_operand"           "=&vr,  &vr")
+ 	(unspec:<VWLMUL1>
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand"      "vmWc1,vmWc1")
+ 	      (match_operand 5 "vector_length_operand"         "   rK,   rK")
+ 	      (match_operand 6 "const_int_operand"             "    i,    i")
+ 	      (match_operand 7 "const_int_operand"             "    i,    i")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (match_operand:VWI 3 "register_operand"             "   vr,   vr")
+ 	   (match_operand:<VWLMUL1> 4 "register_operand"       "   vr,   vr")
+ 	   (match_operand:<VWLMUL1> 2 "vector_merge_operand"   "   vu,    0")] WREDUC))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN > 32"
+   "vwredsum<v_su>.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "viwred")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_widen_reduc_plus<v_su><mode><vwlmul1_zve32>"
+   [(set (match_operand:<VWLMUL1_ZVE32> 0 "register_operand"           "=&vr,  &vr")
+ 	(unspec:<VWLMUL1_ZVE32>
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand"            "vmWc1,vmWc1")
+ 	      (match_operand 5 "vector_length_operand"               "   rK,   rK")
+ 	      (match_operand 6 "const_int_operand"                   "    i,    i")
+ 	      (match_operand 7 "const_int_operand"                   "    i,    i")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (match_operand:VWI_ZVE32 3 "register_operand"             "   vr,   vr")
+ 	   (match_operand:<VWLMUL1_ZVE32> 4 "register_operand"       "   vr,   vr")
+ 	   (match_operand:<VWLMUL1_ZVE32> 2 "vector_merge_operand"   "   vu,    0")] WREDUC))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN == 32"
+   "vwredsum<v_su>.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "viwred")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_reduc_<reduc><mode><vlmul1>"
+   [(set (match_operand:<VLMUL1> 0 "register_operand"          "=vd, vd, vr, vr")
+ 	(unspec:<VLMUL1>
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand"      " vm, vm,Wc1,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")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (any_freduc:VF
+ 	     (vec_duplicate:VF
+ 	       (vec_select:<VEL>
+ 	         (match_operand:<VLMUL1> 4 "register_operand" " vr, vr, vr, vr")
+ 	         (parallel [(const_int 0)])))
+ 	     (match_operand:VF 3 "register_operand"           " vr, vr, vr, vr"))
+ 	   (match_operand:<VLMUL1> 2 "vector_merge_operand"   " vu,  0, vu,  0")] UNSPEC_REDUC))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN > 32"
+   "vfred<reduc>.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vfredu")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_reduc_<reduc><mode><vlmul1_zve32>"
+   [(set (match_operand:<VLMUL1_ZVE32> 0 "register_operand"          "=vd, vd, vr, vr")
+ 	(unspec:<VLMUL1_ZVE32>
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand"           " vm, vm,Wc1,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")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (any_freduc:VF_ZVE32
+ 	     (vec_duplicate:VF_ZVE32
+ 	       (vec_select:<VEL>
+ 	         (match_operand:<VLMUL1_ZVE32> 4 "register_operand" " vr, vr, vr, vr")
+ 	         (parallel [(const_int 0)])))
+ 	     (match_operand:VF_ZVE32 3 "register_operand"           " vr, vr, vr, vr"))
+ 	   (match_operand:<VLMUL1_ZVE32> 2 "vector_merge_operand"   " vu,  0, vu,  0")] UNSPEC_REDUC))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN == 32"
+   "vfred<reduc>.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vfredu")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_reduc_plus<order><mode><vlmul1>"
+   [(set (match_operand:<VLMUL1> 0 "register_operand"             "=vd, vd, vr, vr")
+ 	(unspec:<VLMUL1>
+ 	  [(unspec:<VLMUL1>
+ 	    [(unspec:<VM>
+ 	       [(match_operand:<VM> 1 "vector_mask_operand"      " vm, vm,Wc1,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")
+ 	        (reg:SI VL_REGNUM)
+ 	        (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	     (plus:VF
+ 	       (vec_duplicate:VF
+ 	         (vec_select:<VEL>
+ 	           (match_operand:<VLMUL1> 4 "register_operand" " vr, vr, vr, vr")
+ 	           (parallel [(const_int 0)])))
+ 	       (match_operand:VF 3 "register_operand"           " vr, vr, vr, vr"))
+ 	     (match_operand:<VLMUL1> 2 "vector_merge_operand"   " vu,  0, vu,  0")] UNSPEC_REDUC)] ORDER))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN > 32"
+   "vfred<order>sum.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vfred<order>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_reduc_plus<order><mode><vlmul1_zve32>"
+   [(set (match_operand:<VLMUL1_ZVE32> 0 "register_operand"            "=vd, vd, vr, vr")
+ 	(unspec:<VLMUL1_ZVE32>
+ 	  [(unspec:<VLMUL1_ZVE32>
+ 	    [(unspec:<VM>
+ 	       [(match_operand:<VM> 1 "vector_mask_operand"           " vm, vm,Wc1,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")
+ 	        (reg:SI VL_REGNUM)
+ 	        (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	     (plus:VF_ZVE32
+ 	       (vec_duplicate:VF_ZVE32
+ 	         (vec_select:<VEL>
+ 	           (match_operand:<VLMUL1_ZVE32> 4 "register_operand" " vr, vr, vr, vr")
+ 	           (parallel [(const_int 0)])))
+ 	       (match_operand:VF_ZVE32 3 "register_operand"           " vr, vr, vr, vr"))
+ 	     (match_operand:<VLMUL1_ZVE32> 2 "vector_merge_operand"   " vu,  0, vu,  0")] UNSPEC_REDUC)] ORDER))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN == 32"
+   "vfred<order>sum.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vfred<order>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_widen_reduc_plus<order><mode><vwlmul1>"
+   [(set (match_operand:<VWLMUL1> 0 "register_operand"             "=&vr,  &vr")
+ 	(unspec:<VWLMUL1>
+ 	  [(unspec:<VWLMUL1>
+ 	    [(unspec:<VM>
+ 	       [(match_operand:<VM> 1 "vector_mask_operand"      "vmWc1,vmWc1")
+ 	        (match_operand 5 "vector_length_operand"         "   rK,   rK")
+ 	        (match_operand 6 "const_int_operand"             "    i,    i")
+ 	        (match_operand 7 "const_int_operand"             "    i,    i")
+ 	        (reg:SI VL_REGNUM)
+ 	        (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	     (match_operand:VWF 3 "register_operand"             "   vr,   vr")
+ 	     (match_operand:<VWLMUL1> 4 "register_operand"       "   vr,   vr")
+ 	     (match_operand:<VWLMUL1> 2 "vector_merge_operand"   "   vu,    0")] UNSPEC_WREDUC_SUM)] ORDER))]
+   "TARGET_VECTOR && TARGET_MIN_VLEN > 32"
+   "vfwred<order>sum.vs\t%0,%3,%4%p1"
+   [(set_attr "type" "vfwred<order>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated permutation operations
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 16.1 Integer Scalar Move Instructions
+ ;; - 16.2 Floating-Point Scalar Move Instructions
+ ;; - 16.3 Vector Slide Instructions
+ ;; - 16.4 Vector Register Gather Instructions
+ ;; - 16.5 Vector Compress Instruction
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_expand "@pred_extract_first<mode>"
+   [(set (match_operand:<VEL> 0 "register_operand")
+ 	(unspec:<VEL>
+ 	  [(vec_select:<VEL>
+ 	     (match_operand:VI 1 "reg_or_mem_operand")
+ 	     (parallel [(const_int 0)]))
+ 	   (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))]
+   "TARGET_VECTOR"
+ {
+   if (MEM_P (operands[1]))
+     {
+       /* Combine vle.v + vmv.x.s ==> lw.  */
+       emit_move_insn (operands[0], gen_rtx_MEM (<VEL>mode, XEXP (operands[1], 0)));
+       DONE;
+     }
+ })
+ 
+ (define_insn_and_split "*pred_extract_first<mode>"
+   [(set (match_operand:<VEL> 0 "register_operand"   "=r")
+ 	(unspec:<VEL>
+ 	  [(vec_select:<VEL>
+ 	     (match_operand:VI 1 "register_operand" "vr")
+ 	     (parallel [(const_int 0)]))
+ 	   (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))]
+   "TARGET_VECTOR"
+   "vmv.x.s\t%0,%1"
+   "known_gt (GET_MODE_BITSIZE (<VEL>mode), GET_MODE_BITSIZE (Pmode))"
+   [(const_int 0)]
+ {
+   /* In rv32 system, we can't use vmv.x.s directly.
+      Instead, we should generate this following code sequence:
+        vsrl.vx v16,v8,a0
+        vmv.x.s a1,v16
+        vmv.x.s a0,v8  */
+   rtx nbits = force_reg (Pmode, gen_int_mode (GET_MODE_BITSIZE (Pmode), Pmode));
+   rtx high_bits = gen_reg_rtx (<MODE>mode);
+   emit_insn (gen_pred_scalar (LSHIFTRT, <MODE>mode, high_bits, CONSTM1_RTX (<VM>mode),
+   			RVV_VUNDEF (<MODE>mode), operands[1], nbits, /* vl */ const1_rtx,
+ 			gen_int_mode (riscv_vector::TAIL_ANY, Pmode),
+ 			gen_int_mode (riscv_vector::MASK_ANY, Pmode),
+ 			gen_int_mode (riscv_vector::NONVLMAX, Pmode)));
+   emit_insn (gen_pred_extract_first_trunc (<MODE>mode,
+   			gen_highpart (SImode, operands[0]), high_bits));
+   emit_insn (gen_pred_extract_first_trunc (<MODE>mode,
+   			gen_lowpart (SImode, operands[0]), operands[1]));
+   DONE;
+ }
+   [(set_attr "type" "vimovvx")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_extract_first_trunc<mode>"
+   [(set (match_operand:SI 0 "register_operand"          "=r")
+         (truncate:SI
+ 	  (unspec:<VEL>
+ 	    [(vec_select:<VEL>
+ 	       (match_operand:VI_D 1 "register_operand" "vr")
+ 	       (parallel [(const_int 0)]))
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)))]
+   "TARGET_VECTOR"
+   "vmv.x.s\t%0,%1"
+   [(set_attr "type" "vimovvx")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_extract_first<mode>"
+   [(set (match_operand:<VEL> 0 "register_operand")
+ 	(unspec:<VEL>
+ 	  [(vec_select:<VEL>
+ 	     (match_operand:VF 1 "reg_or_mem_operand")
+ 	     (parallel [(const_int 0)]))
+ 	   (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))]
+   "TARGET_VECTOR"
+ {
+   if (MEM_P (operands[1]))
+     {
+       /* Combine vle.v + vmv.f.s ==> flw.  */
+       emit_move_insn (operands[0], gen_rtx_MEM (<VEL>mode, XEXP (operands[1], 0)));
+       DONE;
+     }
+ })
+ 
+ (define_insn "*pred_extract_first<mode>"
+   [(set (match_operand:<VEL> 0 "register_operand"   "=f")
+ 	(unspec:<VEL>
+ 	  [(vec_select:<VEL>
+ 	     (match_operand:VF 1 "register_operand" "vr")
+ 	     (parallel [(const_int 0)]))
+ 	   (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE))]
+   "TARGET_VECTOR"
+   "vfmv.f.s\t%0,%1"
+   [(set_attr "type" "vfmovvf")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vslide instructions
+ (define_insn "@pred_slide<ud><mode>"
+   [(set (match_operand:V 0 "register_operand"             "<ud_constraint>")
+ 	(unspec:V
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	   (match_operand:V 2 "vector_merge_operand"      " vu,  0, vu,  0")
+ 	   (match_operand:V 3 "register_operand"          " vr, vr, vr, vr")
+ 	   (match_operand 4 "pmode_reg_or_uimm5_operand"  " rK, rK, rK, rK")] VSLIDES))]
+   "TARGET_VECTOR"
+   "vslide<ud>.v%o4\t%0,%3,%4%p1"
+   [(set_attr "type" "vslide<ud>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vslide1 instructions
+ (define_insn "@pred_slide<ud><mode>"
+   [(set (match_operand:VI_QHS 0 "register_operand"        "<ud_constraint>")
+ 	(unspec:VI_QHS
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	   (match_operand:VI_QHS 2 "vector_merge_operand" " vu,  0, vu,  0")
+ 	   (match_operand:VI_QHS 3 "register_operand"     " vr, vr, vr, vr")
+ 	   (match_operand:<VEL> 4 "reg_or_0_operand"      " rJ, rJ, rJ, rJ")] VSLIDES1))]
+   "TARGET_VECTOR"
+   "vslide<ud>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vislide<ud>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_expand "@pred_slide<ud><mode>"
+   [(set (match_operand:VI_D 0 "register_operand")
+ 	(unspec:VI_D
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand")
+ 	      (match_operand 5 "reg_or_int_operand")
+ 	      (match_operand 6 "const_int_operand")
+ 	      (match_operand 7 "const_int_operand")
+ 	      (match_operand 8 "const_int_operand")
+ 	      (reg:SI VL_REGNUM)
+ 	      (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (match_operand:VI_D 2 "vector_merge_operand")
+ 	   (match_operand:VI_D 3 "register_operand")
+ 	   (match_operand:<VEL> 4 "reg_or_int_operand")] VSLIDES1))]
+   "TARGET_VECTOR"
+ {
+   if (riscv_vector::slide1_sew64_helper (<UNSPEC>, <MODE>mode,
+ 					 <VDEMOTE>mode, <VMDEMOTE>mode,
+ 					 operands))
+     DONE;
+ })
+ 
+ (define_insn "*pred_slide<ud><mode>"
+   [(set (match_operand:VI_D 0 "register_operand"          "<ud_constraint>")
+ 	(unspec:VI_D
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	   (match_operand:VI_D 2 "vector_merge_operand"   " vu,  0, vu,  0")
+ 	   (match_operand:VI_D 3 "register_operand"       " vr, vr, vr, vr")
+ 	   (match_operand:<VEL> 4 "reg_or_0_operand"      " rJ, rJ, rJ, rJ")] VSLIDES1))]
+   "TARGET_VECTOR"
+   "vslide<ud>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vislide<ud>")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "*pred_slide<ud><mode>_extended"
+   [(set (match_operand:VI_D 0 "register_operand"          "<ud_constraint>")
+ 	(unspec:VI_D
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	   (match_operand:VI_D 2 "vector_merge_operand"   " vu,  0, vu,  0")
+ 	   (match_operand:VI_D 3 "register_operand"       " vr, vr, vr, vr")
+ 	   (sign_extend:<VEL>
+ 	     (match_operand:<VSUBEL> 4 "reg_or_0_operand" " rJ, rJ, rJ, rJ"))] VSLIDES1))]
+   "TARGET_VECTOR"
+   "vslide<ud>.vx\t%0,%3,%z4%p1"
+   [(set_attr "type" "vislide<ud>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vfslide1 instructions
+ (define_insn "@pred_slide<ud><mode>"
+   [(set (match_operand:VF 0 "register_operand"            "<ud_constraint>")
+ 	(unspec:VF
+ 	  [(unspec:<VM>
+ 	     [(match_operand:<VM> 1 "vector_mask_operand" " vm, vm,Wc1,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_VPREDICATE)
+ 	   (match_operand:VF 2 "vector_merge_operand"     " vu,  0, vu,  0")
+ 	   (match_operand:VF 3 "register_operand"         " vr, vr, vr, vr")
+ 	   (match_operand:<VEL> 4 "register_operand"      "  f,  f,  f,  f")] VFSLIDES1))]
+   "TARGET_VECTOR"
+   "vfslide<ud>.vf\t%0,%3,%4%p1"
+   [(set_attr "type" "vfslide<ud>")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vrgather
+ (define_insn "@pred_gather<mode>"
+   [(set (match_operand:V 0 "register_operand"              "=&vr,  &vr")
+ 	(if_then_else:V
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"  "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"     "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"         "    i,    i")
+ 	     (match_operand 7 "const_int_operand"         "    i,    i")
+ 	     (match_operand 8 "const_int_operand"         "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:V
+ 	    [(match_operand:V 3 "register_operand"        "   vr,   vr")
+ 	     (match_operand:<VINDEX> 4 "register_operand" "   vr,   vr")] UNSPEC_VRGATHER)
+ 	  (match_operand:V 2 "vector_merge_operand"       "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vrgather.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vgather")
+    (set_attr "mode" "<MODE>")])
+ 
+ (define_insn "@pred_gather<mode>_scalar"
+   [(set (match_operand:V 0 "register_operand"               "=&vr,  &vr")
+ 	(if_then_else:V
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"   "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"      "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"          "    i,    i")
+ 	     (match_operand 7 "const_int_operand"          "    i,    i")
+ 	     (match_operand 8 "const_int_operand"          "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:V
+ 	    [(match_operand:V 3 "register_operand"         "   vr,   vr")
+ 	     (match_operand 4 "pmode_reg_or_uimm5_operand" "   rK,   rK")] UNSPEC_VRGATHER)
+ 	  (match_operand:V 2 "vector_merge_operand"        "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vrgather.v%o4\t%0,%3,%4%p1"
+   [(set_attr "type" "vgather")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vrgatherei16
+ (define_insn "@pred_gatherei16<mode>"
+   [(set (match_operand:VEI16 0 "register_operand"              "=&vr,  &vr")
+ 	(if_then_else:VEI16
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand"      "vmWc1,vmWc1")
+ 	     (match_operand 5 "vector_length_operand"         "   rK,   rK")
+ 	     (match_operand 6 "const_int_operand"             "    i,    i")
+ 	     (match_operand 7 "const_int_operand"             "    i,    i")
+ 	     (match_operand 8 "const_int_operand"             "    i,    i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:VEI16
+ 	    [(match_operand:VEI16 3 "register_operand"        "   vr,   vr")
+ 	     (match_operand:<VINDEXEI16> 4 "register_operand" "   vr,   vr")] UNSPEC_VRGATHEREI16)
+ 	  (match_operand:VEI16 2 "vector_merge_operand"       "   vu,    0")))]
+   "TARGET_VECTOR"
+   "vrgatherei16.vv\t%0,%3,%4%p1"
+   [(set_attr "type" "vgather")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; vcompress
+ (define_insn "@pred_compress<mode>"
+   [(set (match_operand:V 0 "register_operand"            "=&vr,  &vr")
+ 	(unspec:V
+ 	  [(unspec:<VM>
+ 	    [(match_operand:<VM> 3 "register_operand"    "  vm,  vm")
+ 	     (match_operand 4 "vector_length_operand"    "  rK,  rK")
+ 	     (match_operand 5 "const_int_operand"        "   i,   i")
+ 	     (match_operand 6 "const_int_operand"        "   i,   i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	   (match_operand:V 2 "register_operand"         "  vr,  vr")
+ 	   (match_operand:V 1 "vector_merge_operand"     "  vu,   0")] UNSPEC_VCOMPRESS))]
+   "TARGET_VECTOR"
+   "vcompress.vm\t%0,%2,%3"
+   [(set_attr "type" "vcompress")
+    (set_attr "mode" "<MODE>")])
+ 
+ ;; -------------------------------------------------------------------------------
+ ;; ---- Predicated Fault-Only-First loads
+ ;; -------------------------------------------------------------------------------
+ ;; Includes:
+ ;; - 7.7. Unit-stride Fault-Only-First Loads
+ ;; -------------------------------------------------------------------------------
+ 
+ (define_insn "read_vlsi"
+   [(set (match_operand:SI 0 "register_operand" "=r")
+ 	(reg:SI VL_REGNUM))]
+   "TARGET_VECTOR"
+   "csrr\t%0,vl"
+   [(set_attr "type" "rdvl")
+    (set_attr "mode" "SI")])
+ 
+ (define_insn "read_vldi_zero_extend"
+   [(set (match_operand:DI 0 "register_operand" "=r")
+ 	(zero_extend:DI (reg:SI VL_REGNUM)))]
+   "TARGET_VECTOR && TARGET_64BIT"
+   "csrr\t%0,vl"
+   [(set_attr "type" "rdvl")
+    (set_attr "mode" "DI")])
+ 
+ (define_insn "@pred_fault_load<mode>"
+   [(set (match_operand:V 0 "register_operand"              "=vd,    vd,    vr,    vr")
+ 	(if_then_else:V
+ 	  (unspec:<VM>
+ 	    [(match_operand:<VM> 1 "vector_mask_operand" "   vm,    vm,   Wc1,   Wc1")
+ 	     (match_operand 4 "vector_length_operand"    "   rK,    rK,    rK,    rK")
+ 	     (match_operand 5 "const_int_operand"        "    i,     i,     i,     i")
+ 	     (match_operand 6 "const_int_operand"        "    i,     i,     i,     i")
+ 	     (match_operand 7 "const_int_operand"        "    i,     i,     i,     i")
+ 	     (reg:SI VL_REGNUM)
+ 	     (reg:SI VTYPE_REGNUM)] UNSPEC_VPREDICATE)
+ 	  (unspec:V
+ 	    [(match_operand:V 3 "memory_operand"         "    m,     m,     m,     m")] UNSPEC_VLEFF)
+ 	  (match_operand:V 2 "vector_merge_operand"      "   vu,     0,    vu,     0")))
+    (set (reg:SI VL_REGNUM) (unspec:SI [(match_dup 0)] UNSPEC_VLEFF))]
+   "TARGET_VECTOR"
+   "vle<sew>ff.v\t%0,%3%p1"
+   [(set_attr "type" "vldff")
+    (set_attr "mode" "<MODE>")])
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/constraints.md gcc-13.1.0/gcc/config/rl78/constraints.md
*** gcc-12.2.0/gcc/config/rl78/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/predicates.md gcc-13.1.0/gcc/config/rl78/predicates.md
*** gcc-12.2.0/gcc/config/rl78/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78-c.cc gcc-13.1.0/gcc/config/rl78/rl78-c.cc
*** gcc-12.2.0/gcc/config/rl78/rl78-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* RL78 C-specific support
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* RL78 C-specific support
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78-expand.md gcc-13.1.0/gcc/config/rl78/rl78-expand.md
*** gcc-12.2.0/gcc/config/rl78/rl78-expand.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78-expand.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78-opts.h gcc-13.1.0/gcc/config/rl78/rl78-opts.h
*** gcc-12.2.0/gcc/config/rl78/rl78-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC option-handling definitions for the Renesas RL78 processor.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* GCC option-handling definitions for the Renesas RL78 processor.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78-protos.h gcc-13.1.0/gcc/config/rl78/rl78-protos.h
*** gcc-12.2.0/gcc/config/rl78/rl78-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for Renesas RL78 processors
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Prototypes for Renesas RL78 processors
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78-real.md gcc-13.1.0/gcc/config/rl78/rl78-real.md
*** gcc-12.2.0/gcc/config/rl78/rl78-real.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78-real.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78-virt.md gcc-13.1.0/gcc/config/rl78/rl78-virt.md
*** gcc-12.2.0/gcc/config/rl78/rl78-virt.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78-virt.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78.cc gcc-13.1.0/gcc/config/rl78/rl78.cc
*** gcc-12.2.0/gcc/config/rl78/rl78.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on Renesas RL78 processors.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on Renesas RL78 processors.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78.h gcc-13.1.0/gcc/config/rl78/rl78.h
*** gcc-12.2.0/gcc/config/rl78/rl78.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC backend definitions for the Renesas RL78 processor.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* GCC backend definitions for the Renesas RL78 processor.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78.md gcc-13.1.0/gcc/config/rl78/rl78.md
*** gcc-12.2.0/gcc/config/rl78/rl78.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RL78 processors
! ;;  Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/rl78.opt gcc-13.1.0/gcc/config/rl78/rl78.opt
*** gcc-12.2.0/gcc/config/rl78/rl78.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/rl78.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Command line options for the Renesas RL78 port of GCC.
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Command line options for the Renesas RL78 port of GCC.
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rl78/t-rl78 gcc-13.1.0/gcc/config/rl78/t-rl78
*** gcc-12.2.0/gcc/config/rl78/t-rl78	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rl78/t-rl78	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Makefile fragment for building GCC for the Renesas RL78 target.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Makefile fragment for building GCC for the Renesas RL78 target.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rpath.opt gcc-13.1.0/gcc/config/rpath.opt
*** gcc-12.2.0/gcc/config/rpath.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rpath.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; -rpath option to the driver.
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; -rpath option to the driver.
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/40x.md gcc-13.1.0/gcc/config/rs6000/40x.md
*** gcc-12.2.0/gcc/config/rs6000/40x.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/40x.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM PowerPC 403 and PowerPC 405  processors.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for IBM PowerPC 403 and PowerPC 405  processors.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/440.md gcc-13.1.0/gcc/config/rs6000/440.md
*** gcc-12.2.0/gcc/config/rs6000/440.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/440.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM PowerPC 440 processor.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for IBM PowerPC 440 processor.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/476.h gcc-13.1.0/gcc/config/rs6000/476.h
*** gcc-12.2.0/gcc/config/rs6000/476.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/476.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Enable IBM PowerPC 476 support.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
     Contributed by Peter Bergner (bergner@vnet.ibm.com)
     This file is part of GCC.
  
--- 1,5 ----
  /* Enable IBM PowerPC 476 support.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
     Contributed by Peter Bergner (bergner@vnet.ibm.com)
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/476.md gcc-13.1.0/gcc/config/rs6000/476.md
*** gcc-12.2.0/gcc/config/rs6000/476.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/476.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM PowerPC 476 processor.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Peter Bergner (bergner@vnet.ibm.com).
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for IBM PowerPC 476 processor.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Peter Bergner (bergner@vnet.ibm.com).
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/476.opt gcc-13.1.0/gcc/config/rs6000/476.opt
*** gcc-12.2.0/gcc/config/rs6000/476.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/476.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; IBM PowerPC 476 options.
  ;
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ; Contributed by Peter Bergner (bergner@vnet.ibm.com)
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; IBM PowerPC 476 options.
  ;
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ; Contributed by Peter Bergner (bergner@vnet.ibm.com)
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/601.md gcc-13.1.0/gcc/config/rs6000/601.md
*** gcc-12.2.0/gcc/config/rs6000/601.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/601.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for PowerPC 601 processor.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for PowerPC 601 processor.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/603.md gcc-13.1.0/gcc/config/rs6000/603.md
*** gcc-12.2.0/gcc/config/rs6000/603.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/603.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for PowerPC 603 processor.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for PowerPC 603 processor.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/6xx.md gcc-13.1.0/gcc/config/rs6000/6xx.md
*** gcc-12.2.0/gcc/config/rs6000/6xx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/6xx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Scheduling description for PowerPC 604, PowerPC 604e, PowerPC 620,
  ;; and PowerPC 630 processors.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,6 ----
  ;; Scheduling description for PowerPC 604, PowerPC 604e, PowerPC 620,
  ;; and PowerPC 630 processors.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/7450.md gcc-13.1.0/gcc/config/rs6000/7450.md
*** gcc-12.2.0/gcc/config/rs6000/7450.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/7450.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Motorola PowerPC 7450 processor.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for Motorola PowerPC 7450 processor.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/7xx.md gcc-13.1.0/gcc/config/rs6000/7xx.md
*** gcc-12.2.0/gcc/config/rs6000/7xx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/7xx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Motorola PowerPC 750 and PowerPC 7400 processors.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for Motorola PowerPC 750 and PowerPC 7400 processors.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/8540.md gcc-13.1.0/gcc/config/rs6000/8540.md
*** gcc-12.2.0/gcc/config/rs6000/8540.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/8540.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for Motorola PowerPC 8540 processor.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Pipeline description for Motorola PowerPC 8540 processor.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/a2.md gcc-13.1.0/gcc/config/rs6000/a2.md
*** gcc-12.2.0/gcc/config/rs6000/a2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/a2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for PowerPC A2 processors.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Ben Elliston (bje@au.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for PowerPC A2 processors.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Ben Elliston (bje@au.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/aix-stdint.h gcc-13.1.0/gcc/config/rs6000/aix-stdint.h
*** gcc-12.2.0/gcc/config/rs6000/aix-stdint.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/aix-stdint.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for <stdint.h> types on systems using AIX.
!    Copyright (C) 2009-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for <stdint.h> types on systems using AIX.
!    Copyright (C) 2009-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/aix.h gcc-13.1.0/gcc/config/rs6000/aix.h
*** gcc-12.2.0/gcc/config/rs6000/aix.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/aix.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,7 ----
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/aix64.opt gcc-13.1.0/gcc/config/rs6000/aix64.opt
*** gcc-12.2.0/gcc/config/rs6000/aix64.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/aix64.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the 64-bit flavor of AIX.
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Options for the 64-bit flavor of AIX.
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/aix71.h gcc-13.1.0/gcc/config/rs6000/aix71.h
*** gcc-12.2.0/gcc/config/rs6000/aix71.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/aix71.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX V7.1.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by David Edelsohn (edelsohn@gnu.org).
  
     This file is part of GCC.
--- 1,7 ----
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX V7.1.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by David Edelsohn (edelsohn@gnu.org).
  
     This file is part of GCC.
*************** do {									\
*** 137,145 ****
  
  #undef  TARGET_DEFAULT
  #ifdef RS6000_BI_ARCH
! #define TARGET_DEFAULT (MASK_PPC_GPOPT | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POWERPC64 | MASK_64BIT)
  #else
! #define TARGET_DEFAULT (MASK_PPC_GPOPT | MASK_PPC_GFXOPT | MASK_MFCRF)
  #endif
  
  #undef  PROCESSOR_DEFAULT
--- 137,147 ----
  
  #undef  TARGET_DEFAULT
  #ifdef RS6000_BI_ARCH
! #define TARGET_DEFAULT (OPTION_MASK_PPC_GPOPT | OPTION_MASK_PPC_GFXOPT \
! 			| OPTION_MASK_MFCRF | MASK_POWERPC64 | MASK_64BIT)
  #else
! #define TARGET_DEFAULT (OPTION_MASK_PPC_GPOPT | OPTION_MASK_PPC_GFXOPT \
! 			| OPTION_MASK_MFCRF)
  #endif
  
  #undef  PROCESSOR_DEFAULT
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/aix72.h gcc-13.1.0/gcc/config/rs6000/aix72.h
*** gcc-12.2.0/gcc/config/rs6000/aix72.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/aix72.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX V7.2.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by David Edelsohn (edelsohn@gnu.org).
  
     This file is part of GCC.
--- 1,7 ----
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX V7.2.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by David Edelsohn (edelsohn@gnu.org).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/aix73.h gcc-13.1.0/gcc/config/rs6000/aix73.h
*** gcc-12.2.0/gcc/config/rs6000/aix73.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/aix73.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX V7.3.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by David Edelsohn (edelsohn@gnu.org).
  
     This file is part of GCC.
--- 1,7 ----
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for IBM RS/6000 POWER running AIX V7.3.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by David Edelsohn (edelsohn@gnu.org).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/altivec.h gcc-13.1.0/gcc/config/rs6000/altivec.h
*** gcc-12.2.0/gcc/config/rs6000/altivec.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/altivec.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* PowerPC AltiVec include file.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Aldy Hernandez (aldyh@redhat.com).
     Rewritten by Paolo Bonzini (bonzini@gnu.org).
  
--- 1,5 ----
  /* PowerPC AltiVec include file.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Aldy Hernandez (aldyh@redhat.com).
     Rewritten by Paolo Bonzini (bonzini@gnu.org).
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/altivec.md gcc-13.1.0/gcc/config/rs6000/altivec.md
*** gcc-12.2.0/gcc/config/rs6000/altivec.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/altivec.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; AltiVec patterns.
! ;; Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; AltiVec patterns.
! ;; Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;; Contributed by Aldy Hernandez (aldy@quesejoda.com)
  
  ;; This file is part of GCC.
***************
*** 886,898 ****
    "TARGET_POWER10"
  {
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstrir_code_<mode> (operands[0], operands[1]));
    else
!     emit_insn (gen_vstril_code_<mode> (operands[0], operands[1]));
    DONE;
  })
  
! (define_insn "vstrir_code_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
--- 886,898 ----
    "TARGET_POWER10"
  {
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstrir_direct_<mode> (operands[0], operands[1]));
    else
!     emit_insn (gen_vstril_direct_<mode> (operands[0], operands[1]));
    DONE;
  })
  
! (define_insn "vstrir_direct_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
***************
*** 901,907 ****
    "vstri<wd>r %0,%1"
    [(set_attr "type" "vecsimple")])
  
! ;; This expands into same code as vstrir_<mode> followed by condition logic
  ;; so that a single vstribr. or vstrihr. or vstribl. or vstrihl. instruction
  ;; can, for example, satisfy the needs of a vec_strir () function paired
  ;; with a vec_strir_p () function if both take the same incoming arguments.
--- 901,907 ----
    "vstri<wd>r %0,%1"
    [(set_attr "type" "vecsimple")])
  
! ;; This expands into same code as vstrir<mode> followed by condition logic
  ;; so that a single vstribr. or vstrihr. or vstribl. or vstrihl. instruction
  ;; can, for example, satisfy the needs of a vec_strir () function paired
  ;; with a vec_strir_p () function if both take the same incoming arguments.
***************
*** 912,925 ****
  {
    rtx scratch = gen_reg_rtx (<MODE>mode);
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstrir_p_code_<mode> (scratch, operands[1]));
    else
!     emit_insn (gen_vstril_p_code_<mode> (scratch, operands[1]));
    emit_insn (gen_cr6_test_for_zero (operands[0]));
    DONE;
  })
  
! (define_insn "vstrir_p_code_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
--- 912,925 ----
  {
    rtx scratch = gen_reg_rtx (<MODE>mode);
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstrir_p_direct_<mode> (scratch, operands[1]));
    else
!     emit_insn (gen_vstril_p_direct_<mode> (scratch, operands[1]));
    emit_insn (gen_cr6_test_for_zero (operands[0]));
    DONE;
  })
  
! (define_insn "vstrir_p_direct_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
***************
*** 938,950 ****
    "TARGET_POWER10"
  {
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstril_code_<mode> (operands[0], operands[1]));
    else
!     emit_insn (gen_vstrir_code_<mode> (operands[0], operands[1]));
    DONE;
  })
  
! (define_insn "vstril_code_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
--- 938,950 ----
    "TARGET_POWER10"
  {
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstril_direct_<mode> (operands[0], operands[1]));
    else
!     emit_insn (gen_vstrir_direct_<mode> (operands[0], operands[1]));
    DONE;
  })
  
! (define_insn "vstril_direct_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
***************
*** 964,977 ****
  {
    rtx scratch = gen_reg_rtx (<MODE>mode);
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstril_p_code_<mode> (scratch, operands[1]));
    else
!     emit_insn (gen_vstrir_p_code_<mode> (scratch, operands[1]));
    emit_insn (gen_cr6_test_for_zero (operands[0]));
    DONE;
  })
  
! (define_insn "vstril_p_code_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
--- 964,977 ----
  {
    rtx scratch = gen_reg_rtx (<MODE>mode);
    if (BYTES_BIG_ENDIAN)
!     emit_insn (gen_vstril_p_direct_<mode> (scratch, operands[1]));
    else
!     emit_insn (gen_vstrir_p_direct_<mode> (scratch, operands[1]));
    emit_insn (gen_cr6_test_for_zero (operands[0]));
    DONE;
  })
  
! (define_insn "vstril_p_direct_<mode>"
    [(set (match_operand:VIshort 0 "altivec_register_operand" "=v")
  	(unspec:VIshort
  	   [(match_operand:VIshort 1 "altivec_register_operand" "v")]
***************
*** 1875,1881 ****
  }
    [(set_attr "type" "vecperm")])
  
! (define_insn "*altivec_vrl<VI_char>"
    [(set (match_operand:VI2 0 "register_operand" "=v")
          (rotate:VI2 (match_operand:VI2 1 "register_operand" "v")
  		    (match_operand:VI2 2 "register_operand" "v")))]
--- 1875,1881 ----
  }
    [(set_attr "type" "vecperm")])
  
! (define_insn "altivec_vrl<VI_char>"
    [(set (match_operand:VI2 0 "register_operand" "=v")
          (rotate:VI2 (match_operand:VI2 1 "register_operand" "v")
  		    (match_operand:VI2 2 "register_operand" "v")))]
***************
*** 4195,4203 ****
    [(set_attr "type" "vecsimple")])
  
  ;; Vector parity
! (define_insn "*p9v_parity<mode>2"
!   [(set (match_operand:VParity 0 "register_operand" "=v")
!         (parity:VParity (match_operand:VParity 1 "register_operand" "v")))]
    "TARGET_P9_VECTOR"
    "vprtyb<wd> %0,%1"
    [(set_attr "type" "vecsimple")])
--- 4195,4205 ----
    [(set_attr "type" "vecsimple")])
  
  ;; Vector parity
! (define_insn "rs6000_vprtyb<mode>2"
!   [(set (match_operand:VEC_IP 0 "register_operand" "=v")
!         (unspec:VEC_IP
!           [(match_operand:VEC_IP 1 "register_operand" "v")]
!           UNSPEC_PARITY))]
    "TARGET_P9_VECTOR"
    "vprtyb<wd> %0,%1"
    [(set_attr "type" "vecsimple")])
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/amo.h gcc-13.1.0/gcc/config/rs6000/amo.h
*** gcc-12.2.0/gcc/config/rs6000/amo.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/amo.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Power ISA 3.0 atomic memory operation include file.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
     Contributed by Michael Meissner <meissner@linux.vnet.ibm.com>.
  
     This file is part of GCC.
--- 1,5 ----
  /* Power ISA 3.0 atomic memory operation include file.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
     Contributed by Michael Meissner <meissner@linux.vnet.ibm.com>.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/biarch64.h gcc-13.1.0/gcc/config/rs6000/biarch64.h
*** gcc-12.2.0/gcc/config/rs6000/biarch64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/biarch64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for 32/64 bit powerpc.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for 32/64 bit powerpc.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/bmi2intrin.h gcc-13.1.0/gcc/config/rs6000/bmi2intrin.h
*** gcc-12.2.0/gcc/config/rs6000/bmi2intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/bmi2intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/bmiintrin.h gcc-13.1.0/gcc/config/rs6000/bmiintrin.h
*** gcc-12.2.0/gcc/config/rs6000/bmiintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/bmiintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2010-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2010-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/cell.md gcc-13.1.0/gcc/config/rs6000/cell.md
*** gcc-12.2.0/gcc/config/rs6000/cell.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/cell.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for cell processor.
! ;; Copyright (C) 2001-2022 Free Software Foundation, Inc.
  ;; Contributed by Sony Computer Entertainment, Inc.,
  
  
--- 1,5 ----
  ;; Scheduling description for cell processor.
! ;; Copyright (C) 2001-2023 Free Software Foundation, Inc.
  ;; Contributed by Sony Computer Entertainment, Inc.,
  
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/constraints.md gcc-13.1.0/gcc/config/rs6000/constraints.md
*** gcc-12.2.0/gcc/config/rs6000/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for RS6000
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for RS6000
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 29,35 ****
    "A base register.  Like @code{r}, but @code{r0} is not allowed, so
     @code{r1}@dots{}@code{r31}.")
  
! (define_register_constraint "f" "rs6000_constraints[RS6000_CONSTRAINT_f]"
    "A floating point register (FPR), @code{f0}@dots{}@code{f31}.")
  
  (define_register_constraint "d" "rs6000_constraints[RS6000_CONSTRAINT_d]"
--- 29,35 ----
    "A base register.  Like @code{r}, but @code{r0} is not allowed, so
     @code{r1}@dots{}@code{r31}.")
  
! (define_register_constraint "f" "rs6000_constraints[RS6000_CONSTRAINT_d]"
    "A floating point register (FPR), @code{f0}@dots{}@code{f31}.")
  
  (define_register_constraint "d" "rs6000_constraints[RS6000_CONSTRAINT_d]"
***************
*** 37,43 ****
     historically @code{f} was for single-precision and @code{d} was for
     double-precision floating point.")
  
! (define_register_constraint "v" "ALTIVEC_REGS"
    "An Altivec vector register (VR), @code{v0}@dots{}@code{v31}.")
  
  (define_register_constraint "wa" "rs6000_constraints[RS6000_CONSTRAINT_wa]"
--- 37,43 ----
     historically @code{f} was for single-precision and @code{d} was for
     double-precision floating point.")
  
! (define_register_constraint "v" "rs6000_constraints[RS6000_CONSTRAINT_v]"
    "An Altivec vector register (VR), @code{v0}@dots{}@code{v31}.")
  
  (define_register_constraint "wa" "rs6000_constraints[RS6000_CONSTRAINT_wa]"
***************
*** 107,118 ****
         (match_test "TARGET_P8_VECTOR")
         (match_operand 0 "s5bit_cint_operand")))
  
- (define_constraint "wD"
-   "@internal Int constant that is the element number of the 64-bit scalar
-    in a vector."
-   (and (match_code "const_int")
-        (match_test "TARGET_VSX && (ival == VECTOR_ELEMENT_SCALAR_64BIT)")))
- 
  (define_constraint "wE"
    "@internal Vector constant that can be loaded with the XXSPLTIB instruction."
    (match_test "xxspltib_constant_nosplit (op, mode)"))
--- 107,112 ----
***************
*** 263,269 ****
         (match_test "REG_P (XEXP (op, 0))")))
  
  (define_memory_constraint "Y"
!   "@internal A memory operand for a DQ-form instruction."
    (and (match_code "mem")
         (match_test "mem_operand_gpr (op, mode)")))
  
--- 257,263 ----
         (match_test "REG_P (XEXP (op, 0))")))
  
  (define_memory_constraint "Y"
!   "@internal A memory operand for a DS-form instruction."
    (and (match_code "mem")
         (match_test "mem_operand_gpr (op, mode)")))
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/crypto.md gcc-13.1.0/gcc/config/rs6000/crypto.md
*** gcc-12.2.0/gcc/config/rs6000/crypto.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/crypto.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Cryptographic instructions added in ISA 2.07
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Cryptographic instructions added in ISA 2.07
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/darwin.h gcc-13.1.0/gcc/config/rs6000/darwin.h
*** gcc-12.2.0/gcc/config/rs6000/darwin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/darwin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for PowerPC running Darwin (Mac OS X).
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target definitions for PowerPC running Darwin (Mac OS X).
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
     This file is part of GCC.
***************
*** 367,373 ****
     default as well.  */
  
  #undef  TARGET_DEFAULT
! #define TARGET_DEFAULT (MASK_MULTIPLE | MASK_PPC_GFXOPT)
  
  /* Darwin always uses IBM long double, never IEEE long double.  */
  #undef  TARGET_IEEEQUAD
--- 367,373 ----
     default as well.  */
  
  #undef  TARGET_DEFAULT
! #define TARGET_DEFAULT (OPTION_MASK_MULTIPLE | OPTION_MASK_PPC_GFXOPT)
  
  /* Darwin always uses IBM long double, never IEEE long double.  */
  #undef  TARGET_IEEEQUAD
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/darwin.md gcc-13.1.0/gcc/config/rs6000/darwin.md
*** gcc-12.2.0/gcc/config/rs6000/darwin.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/darwin.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Machine description patterns for PowerPC running Darwin (Mac OS X).
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Machine description patterns for PowerPC running Darwin (Mac OS X).
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/darwin.opt gcc-13.1.0/gcc/config/rs6000/darwin.opt
*** gcc-12.2.0/gcc/config/rs6000/darwin.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/darwin.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Darwin options for PPC port.
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Darwin options for PPC port.
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/darwin32-biarch.h gcc-13.1.0/gcc/config/rs6000/darwin32-biarch.h
*** gcc-12.2.0/gcc/config/rs6000/darwin32-biarch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/darwin32-biarch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target definitions for PowerPC running Darwin (Mac OS X) for a 32b host
     with a 64b miultilib.
!    Copyright (C) 2019-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Target definitions for PowerPC running Darwin (Mac OS X) for a 32b host
     with a 64b miultilib.
!    Copyright (C) 2019-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/darwin64-biarch.h gcc-13.1.0/gcc/config/rs6000/darwin64-biarch.h
*** gcc-12.2.0/gcc/config/rs6000/darwin64-biarch.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/darwin64-biarch.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target definitions for PowerPC64 running Darwin (Mac OS X) for a 64b host
     supporting a 32b multilib.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
     This file is part of GCC.
--- 1,6 ----
  /* Target definitions for PowerPC64 running Darwin (Mac OS X) for a 64b host
     supporting a 32b multilib.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
     Contributed by Apple Computer Inc.
  
     This file is part of GCC.
***************
*** 21,27 ****
  
  #undef  TARGET_DEFAULT
  #define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \
! 			| MASK_MULTIPLE | MASK_PPC_GFXOPT)
  
  #undef DARWIN_ARCH_SPEC
  #define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}"
--- 21,27 ----
  
  #undef  TARGET_DEFAULT
  #define TARGET_DEFAULT (MASK_POWERPC64 | MASK_64BIT \
! 			| OPTION_MASK_MULTIPLE | OPTION_MASK_PPC_GFXOPT)
  
  #undef DARWIN_ARCH_SPEC
  #define DARWIN_ARCH_SPEC "%{m32:ppc;:ppc64}"
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/darwin7.h gcc-13.1.0/gcc/config/rs6000/darwin7.h
*** gcc-12.2.0/gcc/config/rs6000/darwin7.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/darwin7.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for Darwin 7.x (Mac OS X) systems.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Target definitions for Darwin 7.x (Mac OS X) systems.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/default64.h gcc-13.1.0/gcc/config/rs6000/default64.h
*** gcc-12.2.0/gcc/config/rs6000/default64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/default64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for 64 bit powerpc linux defaulting to -m64.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for 64 bit powerpc linux defaulting to -m64.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 24,35 ****
  
  #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT (ISA_2_7_MASKS_SERVER | MASK_POWERPC64 | MASK_64BIT | MASK_LITTLE_ENDIAN)
  #undef ASM_DEFAULT_SPEC
  #define ASM_DEFAULT_SPEC "-mpower8"
  #else
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT (MASK_PPC_GFXOPT | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64 | MASK_64BIT)
  #undef ASM_DEFAULT_SPEC
  #define ASM_DEFAULT_SPEC "-mpower4"
  #endif
--- 24,37 ----
  
  #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT (ISA_2_7_MASKS_SERVER | MASK_POWERPC64 | MASK_64BIT \
! 			| MASK_LITTLE_ENDIAN)
  #undef ASM_DEFAULT_SPEC
  #define ASM_DEFAULT_SPEC "-mpower8"
  #else
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT (OPTION_MASK_PPC_GFXOPT | OPTION_MASK_PPC_GPOPT \
! 			| OPTION_MASK_MFCRF | MASK_POWERPC64 | MASK_64BIT)
  #undef ASM_DEFAULT_SPEC
  #define ASM_DEFAULT_SPEC "-mpower4"
  #endif
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/dfp.md gcc-13.1.0/gcc/config/rs6000/dfp.md
*** gcc-12.2.0/gcc/config/rs6000/dfp.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/dfp.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Decimal Floating Point (DFP) patterns.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;; Contributed by Ben Elliston (bje@au.ibm.com) and Peter Bergner
  ;; (bergner@vnet.ibm.com).
  
--- 1,5 ----
  ;; Decimal Floating Point (DFP) patterns.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;; Contributed by Ben Elliston (bje@au.ibm.com) and Peter Bergner
  ;; (bergner@vnet.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/driver-rs6000.cc gcc-13.1.0/gcc/config/rs6000/driver-rs6000.cc
*** gcc-12.2.0/gcc/config/rs6000/driver-rs6000.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/driver-rs6000.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** host_detect_local_cpu (int argc, const c
*** 599,605 ****
  
    if (assembler)
      {
!       for (i = 0; i < sizeof (asm_names) / sizeof (asm_names[0]); i++)
  	{
  	  if (!asm_names[i].cpu || !strcmp (asm_names[i].cpu, cpu))
  	    return asm_names[i].asm_sw;
--- 599,605 ----
  
    if (assembler)
      {
!       for (i = 0; i < ARRAY_SIZE (asm_names); i++)
  	{
  	  if (!asm_names[i].cpu || !strcmp (asm_names[i].cpu, cpu))
  	    return asm_names[i].asm_sw;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/e300c2c3.md gcc-13.1.0/gcc/config/rs6000/e300c2c3.md
*** gcc-12.2.0/gcc/config/rs6000/e300c2c3.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/e300c2c3.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for Motorola PowerPC e300c3 core.
! ;;   Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline description for Motorola PowerPC e300c3 core.
! ;;   Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/e500mc.md gcc-13.1.0/gcc/config/rs6000/e500mc.md
*** gcc-12.2.0/gcc/config/rs6000/e500mc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/e500mc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for Motorola PowerPC e500mc core.
! ;;   Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline description for Motorola PowerPC e500mc core.
! ;;   Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/e500mc64.md gcc-13.1.0/gcc/config/rs6000/e500mc64.md
*** gcc-12.2.0/gcc/config/rs6000/e500mc64.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/e500mc64.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for Freescale PowerPC e500mc64 core.
! ;;   Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline description for Freescale PowerPC e500mc64 core.
! ;;   Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/e5500.md gcc-13.1.0/gcc/config/rs6000/e5500.md
*** gcc-12.2.0/gcc/config/rs6000/e5500.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/e5500.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for Freescale PowerPC e5500 core.
! ;;   Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline description for Freescale PowerPC e5500 core.
! ;;   Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/e6500.md gcc-13.1.0/gcc/config/rs6000/e6500.md
*** gcc-12.2.0/gcc/config/rs6000/e6500.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/e6500.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for Freescale PowerPC e6500 core.
! ;;   Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline description for Freescale PowerPC e6500 core.
! ;;   Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;   Contributed by Edmar Wienskoski (edmar@freescale.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/eabi.h gcc-13.1.0/gcc/config/rs6000/eabi.h
*** gcc-12.2.0/gcc/config/rs6000/eabi.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/eabi.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Core target definitions for GNU compiler
     for IBM RS/6000 PowerPC targeted to embedded ELF systems.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
--- 1,6 ----
  /* Core target definitions for GNU compiler
     for IBM RS/6000 PowerPC targeted to embedded ELF systems.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
***************
*** 21,27 ****
  
  /* Add -meabi to target flags.  */
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT MASK_EABI
  
  /* Invoke an initializer function to set up the GOT.  */
  #define NAME__MAIN "__eabi"
--- 21,27 ----
  
  /* Add -meabi to target flags.  */
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT OPTION_MASK_EABI
  
  /* Invoke an initializer function to set up the GOT.  */
  #define NAME__MAIN "__eabi"
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/eabialtivec.h gcc-13.1.0/gcc/config/rs6000/eabialtivec.h
*** gcc-12.2.0/gcc/config/rs6000/eabialtivec.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/eabialtivec.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Core target definitions for GNU compiler
     for PowerPC targeted systems with AltiVec support.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Aldy Hernandez (aldyh@redhat.com).
  
     This file is part of GCC.
--- 1,6 ----
  /* Core target definitions for GNU compiler
     for PowerPC targeted systems with AltiVec support.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Aldy Hernandez (aldyh@redhat.com).
  
     This file is part of GCC.
***************
*** 21,27 ****
  
  /* Add -meabi and -maltivec to target flags.  */
  #undef  TARGET_DEFAULT
! #define TARGET_DEFAULT (MASK_EABI | MASK_ALTIVEC)
  
  #undef	ASM_DEFAULT_EXTRA
  #define	ASM_DEFAULT_EXTRA " %{!mvsx:%{!maltivec:%{!no-maltivec:-maltivec}}}"
--- 21,27 ----
  
  /* Add -meabi and -maltivec to target flags.  */
  #undef  TARGET_DEFAULT
! #define TARGET_DEFAULT (OPTION_MASK_EABI | OPTION_MASK_ALTIVEC)
  
  #undef	ASM_DEFAULT_EXTRA
  #define	ASM_DEFAULT_EXTRA " %{!mvsx:%{!maltivec:%{!no-maltivec:-maltivec}}}"
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/eabisim.h gcc-13.1.0/gcc/config/rs6000/eabisim.h
*** gcc-12.2.0/gcc/config/rs6000/eabisim.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/eabisim.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Support for GCC on simulated PowerPC systems targeted to embedded ELF
     systems.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
--- 1,6 ----
  /* Support for GCC on simulated PowerPC systems targeted to embedded ELF
     systems.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/emmintrin.h gcc-13.1.0/gcc/config/rs6000/emmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/emmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/emmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** _mm_bslli_si128 (__m128i __A, const int
*** 1601,1608 ****
    __v16qu __result;
    const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
!   if (__N < 16)
      __result = vec_sld ((__v16qu) __A, __zeros, __N);
    else
      __result = __zeros;
  
--- 1601,1614 ----
    __v16qu __result;
    const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
!   if (__N == 0)
!     return __A;
!   else if (__N > 0 && __N < 16)
! #ifdef __LITTLE_ENDIAN__
      __result = vec_sld ((__v16qu) __A, __zeros, __N);
+ #else
+     __result = vec_sld (__zeros, (__v16qu) __A, (16 - __N));
+ #endif
    else
      __result = __zeros;
  
*************** _mm_bsrli_si128 (__m128i __A, const int
*** 1615,1621 ****
    __v16qu __result;
    const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
!   if (__N < 16)
  #ifdef __LITTLE_ENDIAN__
      if (__builtin_constant_p(__N))
        /* Would like to use Vector Shift Left Double by Octet
--- 1621,1629 ----
    __v16qu __result;
    const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  
!   if (__N == 0)
!     return __A;
!   else if (__N > 0 && __N < 16)
  #ifdef __LITTLE_ENDIAN__
      if (__builtin_constant_p(__N))
        /* Would like to use Vector Shift Left Double by Octet
*************** _mm_srli_si128 (__m128i __A, const int _
*** 1645,1665 ****
  }
  
  extern __inline  __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_slli_si128 (__m128i __A, const int _imm5)
  {
!   __v16qu __result;
!   const __v16qu __zeros = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
! 
!   if (_imm5 < 16)
! #ifdef __LITTLE_ENDIAN__
!     __result = vec_sld ((__v16qu) __A, __zeros, _imm5);
! #else
!     __result = vec_sld (__zeros, (__v16qu) __A, (16 - _imm5));
! #endif
!   else
!     __result = __zeros;
! 
!   return (__m128i) __result;
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
--- 1653,1661 ----
  }
  
  extern __inline  __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
! _mm_slli_si128 (__m128i __A, const int __N)
  {
!   return _mm_bslli_si128 (__A, __N);
  }
  
  extern __inline __m128i __attribute__((__gnu_inline__, __always_inline__, __artificial__))
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/freebsd.h gcc-13.1.0/gcc/config/rs6000/freebsd.h
*** gcc-12.2.0/gcc/config/rs6000/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for PowerPC running FreeBSD using the ELF format
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for PowerPC running FreeBSD using the ELF format
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/freebsd64.h gcc-13.1.0/gcc/config/rs6000/freebsd64.h
*** gcc-12.2.0/gcc/config/rs6000/freebsd64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/freebsd64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for 64-bit PowerPC running FreeBSD using the ELF format
!    Copyright (C) 2012-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for 64-bit PowerPC running FreeBSD using the ELF format
!    Copyright (C) 2012-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/fusion.md gcc-13.1.0/gcc/config/rs6000/fusion.md
*** gcc-12.2.0/gcc/config/rs6000/fusion.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/fusion.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;; Generated automatically by genfusion.pl
  
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,6 ----
  ;; Generated automatically by genfusion.pl
  
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/genfusion.pl gcc-13.1.0/gcc/config/rs6000/genfusion.pl
*** gcc-12.2.0/gcc/config/rs6000/genfusion.pl	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/genfusion.pl	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  #!/usr/bin/perl
  # Generate fusion.md
  #
! # Copyright (C) 2020-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,7 ----
  #!/usr/bin/perl
  # Generate fusion.md
  #
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** use strict;
*** 25,31 ****
  print <<'EOF';
  ;; Generated automatically by genfusion.pl
  
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 25,31 ----
  print <<'EOF';
  ;; Generated automatically by genfusion.pl
  
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/genopt.sh gcc-13.1.0/gcc/config/rs6000/genopt.sh
*** gcc-12.2.0/gcc/config/rs6000/genopt.sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/genopt.sh	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #!/bin/sh
  # Generate rs6000-tables.opt from the list of CPUs in rs6000-cpus.def.
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #!/bin/sh
  # Generate rs6000-tables.opt from the list of CPUs in rs6000-cpus.def.
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** cat <<EOF
*** 22,28 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from rs6000-cpus.def.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 22,28 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from rs6000-cpus.def.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/host-darwin.cc gcc-13.1.0/gcc/config/rs6000/host-darwin.cc
*** gcc-12.2.0/gcc/config/rs6000/host-darwin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/host-darwin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Darwin/powerpc host-specific hook definitions.
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Darwin/powerpc host-specific hook definitions.
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/host-ppc64-darwin.cc gcc-13.1.0/gcc/config/rs6000/host-ppc64-darwin.cc
*** gcc-12.2.0/gcc/config/rs6000/host-ppc64-darwin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/host-ppc64-darwin.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* ppc64-darwin host-specific hook definitions.
!    Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* ppc64-darwin host-specific hook definitions.
!    Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/htm.md gcc-13.1.0/gcc/config/rs6000/htm.md
*** gcc-12.2.0/gcc/config/rs6000/htm.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/htm.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Hardware Transactional Memory (HTM) patterns.
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;; Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Hardware Transactional Memory (HTM) patterns.
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;; Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/htmintrin.h gcc-13.1.0/gcc/config/rs6000/htmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/htmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/htmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Hardware Transactional Memory (HTM) intrinsics.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
     This file is free software; you can redistribute it and/or modify it under
--- 1,5 ----
  /* Hardware Transactional Memory (HTM) intrinsics.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
     This file is free software; you can redistribute it and/or modify it under
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/htmxlintrin.h gcc-13.1.0/gcc/config/rs6000/htmxlintrin.h
*** gcc-12.2.0/gcc/config/rs6000/htmxlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/htmxlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* XL compiler Hardware Transactional Memory (HTM) execution intrinsics.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
     This file is free software; you can redistribute it and/or modify it under
--- 1,5 ----
  /* XL compiler Hardware Transactional Memory (HTM) execution intrinsics.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
     This file is free software; you can redistribute it and/or modify it under
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/immintrin.h gcc-13.1.0/gcc/config/rs6000/immintrin.h
*** gcc-12.2.0/gcc/config/rs6000/immintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/immintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/linux.h gcc-13.1.0/gcc/config/rs6000/linux.h
*** gcc-12.2.0/gcc/config/rs6000/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for PowerPC machines running Linux.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@cygnus.com).
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for PowerPC machines running Linux.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@cygnus.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/linux64.h gcc-13.1.0/gcc/config/rs6000/linux64.h
*** gcc-12.2.0/gcc/config/rs6000/linux64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/linux64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for 64 bit PowerPC linux.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for 64 bit PowerPC linux.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/linux64.opt gcc-13.1.0/gcc/config/rs6000/linux64.opt
*** gcc-12.2.0/gcc/config/rs6000/linux64.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/linux64.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for 64-bit PowerPC Linux.
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Options for 64-bit PowerPC Linux.
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/linuxaltivec.h gcc-13.1.0/gcc/config/rs6000/linuxaltivec.h
*** gcc-12.2.0/gcc/config/rs6000/linuxaltivec.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/linuxaltivec.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for AltiVec enhanced PowerPC machines running GNU/Linux.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by Aldy Hernandez (aldyh@redhat.com).
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for AltiVec enhanced PowerPC machines running GNU/Linux.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by Aldy Hernandez (aldyh@redhat.com).
  
     This file is part of GCC.
***************
*** 22,31 ****
  /* Override rs6000.h and sysv4.h definition.  */
  #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
  #undef	TARGET_DEFAULT
! #define	TARGET_DEFAULT (MASK_ALTIVEC | MASK_LITTLE_ENDIAN)
  #else
  #undef	TARGET_DEFAULT
! #define	TARGET_DEFAULT MASK_ALTIVEC
  #endif
  
  #undef	ASM_DEFAULT_EXTRA
--- 22,31 ----
  /* Override rs6000.h and sysv4.h definition.  */
  #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
  #undef	TARGET_DEFAULT
! #define	TARGET_DEFAULT (OPTION_MASK_ALTIVEC | MASK_LITTLE_ENDIAN)
  #else
  #undef	TARGET_DEFAULT
! #define	TARGET_DEFAULT OPTION_MASK_ALTIVEC
  #endif
  
  #undef	ASM_DEFAULT_EXTRA
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/lynx.h gcc-13.1.0/gcc/config/rs6000/lynx.h
*** gcc-12.2.0/gcc/config/rs6000/lynx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/lynx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Rs6000 running LynxOS.
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by David Henkel-Wallace, Cygnus Support (gumby@cygnus.com)
     Rewritten by Adam Nemet, LynuxWorks Inc.
  
--- 1,5 ----
  /* Definitions for Rs6000 running LynxOS.
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by David Henkel-Wallace, Cygnus Support (gumby@cygnus.com)
     Rewritten by Adam Nemet, LynuxWorks Inc.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/mm_malloc.h gcc-13.1.0/gcc/config/rs6000/mm_malloc.h
*** gcc-12.2.0/gcc/config/rs6000/mm_malloc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/mm_malloc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/mma.md gcc-13.1.0/gcc/config/rs6000/mma.md
*** gcc-12.2.0/gcc/config/rs6000/mma.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/mma.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Matrix-Multiply Assist (MMA) patterns.
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;; Contributed by Peter Bergner <bergner@linux.ibm.com> and
  ;;		  Michael Meissner <meissner@linux.ibm.com>
  ;;
--- 1,5 ----
  ;; Matrix-Multiply Assist (MMA) patterns.
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;; Contributed by Peter Bergner <bergner@linux.ibm.com> and
  ;;		  Michael Meissner <meissner@linux.ibm.com>
  ;;
***************
*** 268,277 ****
  (define_expand "movoo"
    [(set (match_operand:OO 0 "nonimmediate_operand")
  	(match_operand:OO 1 "input_operand"))]
!   "TARGET_MMA"
  {
!   rs6000_emit_move (operands[0], operands[1], OOmode);
!   DONE;
  })
  
  (define_insn_and_split "*movoo"
--- 268,295 ----
  (define_expand "movoo"
    [(set (match_operand:OO 0 "nonimmediate_operand")
  	(match_operand:OO 1 "input_operand"))]
!   ""
  {
!   if (TARGET_MMA)
!     {
!       rs6000_emit_move (operands[0], operands[1], OOmode);
!       DONE;
!     }
!   else if (currently_expanding_to_rtl && seen_error ())
!     {
!       /* PR103353 shows we may want to continue to expand the __builtin_vsx_lxvp
! 	 built-in function, even if we have already emitted error messages about
! 	 some missing required conditions.  As shown in that PR, without one
! 	 explicit mov optab on OOmode provided, it would call emit_move_insn
! 	 recursively.  So we allow this pattern to be generated when we are
! 	 expanding to RTL and have seen errors.  It would not cause further ICEs
! 	 as the compilation would stop soon after expanding.  */
!     }
!   else if (rs6000_opaque_type_invalid_use_p (currently_expanding_gimple_stmt))
!     ;
!   else
!     /* Catch unexpected cases.  */
!     gcc_assert (false);
  })
  
  (define_insn_and_split "*movoo"
***************
*** 300,309 ****
  (define_expand "movxo"
    [(set (match_operand:XO 0 "nonimmediate_operand")
  	(match_operand:XO 1 "input_operand"))]
!   "TARGET_MMA"
  {
!   rs6000_emit_move (operands[0], operands[1], XOmode);
!   DONE;
  })
  
  (define_insn_and_split "*movxo"
--- 318,342 ----
  (define_expand "movxo"
    [(set (match_operand:XO 0 "nonimmediate_operand")
  	(match_operand:XO 1 "input_operand"))]
!   ""
  {
!   if (TARGET_MMA)
!     {
!       rs6000_emit_move (operands[0], operands[1], XOmode);
!       DONE;
!     }
!   else if (currently_expanding_to_rtl && seen_error ())
!     {
!       /* PR103353 shows we may want to continue to expand the __builtin_vsx_lxvp
! 	 built-in function, even if we have already emitted error messages about
! 	 some missing required conditions.  So do the same handlings for XOmode
! 	 as OOmode here.  */
!     }
!   else if (rs6000_opaque_type_invalid_use_p (currently_expanding_gimple_stmt))
!     ;
!   else
!     /* Catch unexpected cases.  */
!     gcc_assert (false);
  })
  
  (define_insn_and_split "*movxo"
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/mmintrin.h gcc-13.1.0/gcc/config/rs6000/mmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/mmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/mmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/mpc.md gcc-13.1.0/gcc/config/rs6000/mpc.md
*** gcc-12.2.0/gcc/config/rs6000/mpc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/mpc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Motorola PowerPC processor cores.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Motorola PowerPC processor cores.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/netbsd.h gcc-13.1.0/gcc/config/rs6000/netbsd.h
*** gcc-12.2.0/gcc/config/rs6000/netbsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/netbsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for PowerPC NetBSD systems.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for PowerPC NetBSD systems.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/nmmintrin.h gcc-13.1.0/gcc/config/rs6000/nmmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/nmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/nmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/option-defaults.h gcc-13.1.0/gcc/config/rs6000/option-defaults.h
*** gcc-12.2.0/gcc/config/rs6000/option-defaults.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/option-defaults.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of default options for config/rs6000 configurations.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Definitions of default options for config/rs6000 configurations.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/pcrel-opt.md gcc-13.1.0/gcc/config/rs6000/pcrel-opt.md
*** gcc-12.2.0/gcc/config/rs6000/pcrel-opt.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/pcrel-opt.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for the PCREL_OPT optimization.
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner (meissner@linux.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for the PCREL_OPT optimization.
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner (meissner@linux.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/pmmintrin.h gcc-13.1.0/gcc/config/rs6000/pmmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/pmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/pmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power10.md gcc-13.1.0/gcc/config/rs6000/power10.md
*** gcc-12.2.0/gcc/config/rs6000/power10.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power10.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for the IBM POWER10 processor.
! ;; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
--- 1,5 ----
  ;; Scheduling description for the IBM POWER10 processor.
! ;; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power4.md gcc-13.1.0/gcc/config/rs6000/power4.md
*** gcc-12.2.0/gcc/config/rs6000/power4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM Power4 and PowerPC 970 processors.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for IBM Power4 and PowerPC 970 processors.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power5.md gcc-13.1.0/gcc/config/rs6000/power5.md
*** gcc-12.2.0/gcc/config/rs6000/power5.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power5.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM POWER5 processor.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for IBM POWER5 processor.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power6.md gcc-13.1.0/gcc/config/rs6000/power6.md
*** gcc-12.2.0/gcc/config/rs6000/power6.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power6.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM POWER6 processor.
! ;;   Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;   Contributed by Peter Steinmetz (steinmtz@us.ibm.com)
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for IBM POWER6 processor.
! ;;   Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;   Contributed by Peter Steinmetz (steinmtz@us.ibm.com)
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power7.md gcc-13.1.0/gcc/config/rs6000/power7.md
*** gcc-12.2.0/gcc/config/rs6000/power7.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power7.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM POWER7 processor.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
--- 1,5 ----
  ;; Scheduling description for IBM POWER7 processor.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power8.md gcc-13.1.0/gcc/config/rs6000/power8.md
*** gcc-12.2.0/gcc/config/rs6000/power8.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power8.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM POWER8 processor.
! ;; Copyright (C) 2013-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
--- 1,5 ----
  ;; Scheduling description for IBM POWER8 processor.
! ;; Copyright (C) 2013-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/power9.md gcc-13.1.0/gcc/config/rs6000/power9.md
*** gcc-12.2.0/gcc/config/rs6000/power9.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/power9.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM POWER9 processor.
! ;; Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
--- 1,5 ----
  ;; Scheduling description for IBM POWER9 processor.
! ;; Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;
  ;; Contributed by Pat Haugen (pthaugen@us.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/ppc-asm.h gcc-13.1.0/gcc/config/rs6000/ppc-asm.h
*** gcc-12.2.0/gcc/config/rs6000/ppc-asm.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/ppc-asm.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* PowerPC asm definitions for GNU C.
  
! Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* PowerPC asm definitions for GNU C.
  
! Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/ppc-auxv.h gcc-13.1.0/gcc/config/rs6000/ppc-auxv.h
*** gcc-12.2.0/gcc/config/rs6000/ppc-auxv.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/ppc-auxv.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* PowerPC support for accessing the AUXV AT_PLATFORM, AT_HWCAP and AT_HWCAP2
     values from the Thread Control Block (TCB).
  
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
     Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
     This file is part of GCC.
--- 1,7 ----
  /* PowerPC support for accessing the AUXV AT_PLATFORM, AT_HWCAP and AT_HWCAP2
     values from the Thread Control Block (TCB).
  
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
     Contributed by Peter Bergner <bergner@vnet.ibm.com>.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/ppu_intrinsics.h gcc-13.1.0/gcc/config/rs6000/ppu_intrinsics.h
*** gcc-12.2.0/gcc/config/rs6000/ppu_intrinsics.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/ppu_intrinsics.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* PPU intrinsics as defined by the C/C++ Language extension for Cell BEA.
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,5 ----
  /* PPU intrinsics as defined by the C/C++ Language extension for Cell BEA.
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/predicates.md gcc-13.1.0/gcc/config/rs6000/predicates.md
*** gcc-12.2.0/gcc/config/rs6000/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for POWER and PowerPC.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for POWER and PowerPC.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
***************
*** 760,766 ****
      return 0;
    elt = BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (mode) - 1 : 0;
    val = const_vector_elt_as_int (op, elt);
!   val = ((val & 0xff) ^ 0x80) - 0x80;
    return EASY_VECTOR_15_ADD_SELF (val);
  })
  
--- 760,766 ----
      return 0;
    elt = BYTES_BIG_ENDIAN ? GET_MODE_NUNITS (mode) - 1 : 0;
    val = const_vector_elt_as_int (op, elt);
!   val = sext_hwi (val, 8);
    return EASY_VECTOR_15_ADD_SELF (val);
  })
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rbtree.cc gcc-13.1.0/gcc/config/rs6000/rbtree.cc
*** gcc-12.2.0/gcc/config/rs6000/rbtree.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rbtree.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Partial red-black tree implementation for rs6000-gen-builtins.cc.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Partial red-black tree implementation for rs6000-gen-builtins.cc.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rbtree.h gcc-13.1.0/gcc/config/rs6000/rbtree.h
*** gcc-12.2.0/gcc/config/rs6000/rbtree.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rbtree.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Partial red-black tree implementation for rs6000-gen-builtins.cc.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Partial red-black tree implementation for rs6000-gen-builtins.cc.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-builtin.cc gcc-13.1.0/gcc/config/rs6000/rs6000-builtin.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-builtin.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-builtin.cc	Wed Apr 26 07:09:39 2023
***************
*** 4,10 ****
     Note that "normal" builtins (generic math functions, etc.) are handled
     in rs6000.c.
  
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 4,10 ----
     Note that "normal" builtins (generic math functions, etc.) are handled
     in rs6000.c.
  
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 45,59 ****
  #include "expr.h"
  #include "langhooks.h"
  #include "gimplify.h"
- #include "gimple-fold.h"
  #include "gimple-iterator.h"
  #include "ssa.h"
  #include "tree-ssa-propagate.h"
  #include "builtins.h"
  #include "tree-vector-builder.h"
- #if TARGET_XCOFF
- #include "xcoffout.h"  /* get declarations of xcoff_*_section_name */
- #endif
  #include "ppc-auxv.h"
  #include "rs6000-internal.h"
  
--- 45,56 ----
  #include "expr.h"
  #include "langhooks.h"
  #include "gimplify.h"
  #include "gimple-iterator.h"
+ #include "gimple-fold.h"
  #include "ssa.h"
  #include "tree-ssa-propagate.h"
  #include "builtins.h"
  #include "tree-vector-builder.h"
  #include "ppc-auxv.h"
  #include "rs6000-internal.h"
  
*************** rs6000_init_builtins (void)
*** 736,742 ****
        if (TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128)
  	ieee128_float_type_node = long_double_type_node;
        else
! 	ieee128_float_type_node = float128_type_node;
        t = build_qualified_type (ieee128_float_type_node, TYPE_QUAL_CONST);
        lang_hooks.types.register_builtin_type (ieee128_float_type_node,
  					      "__ieee128");
--- 733,754 ----
        if (TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128)
  	ieee128_float_type_node = long_double_type_node;
        else
! 	{
! 	  /* For C we only need to register the __ieee128 name for
! 	     it.  For C++, we create a distinct type which will mangle
! 	     differently (u9__ieee128) vs. _Float128 (DF128_) and behave
! 	     backwards compatibly.  */
! 	  if (float128t_type_node == NULL_TREE)
! 	    {
! 	      float128t_type_node = make_node (REAL_TYPE);
! 	      TYPE_PRECISION (float128t_type_node)
! 		= TYPE_PRECISION (float128_type_node);
! 	      layout_type (float128t_type_node);
! 	      SET_TYPE_MODE (float128t_type_node,
! 			     TYPE_MODE (float128_type_node));
! 	    }
! 	  ieee128_float_type_node = float128t_type_node;
! 	}
        t = build_qualified_type (ieee128_float_type_node, TYPE_QUAL_CONST);
        lang_hooks.types.register_builtin_type (ieee128_float_type_node,
  					      "__ieee128");
*************** rs6000_init_builtins (void)
*** 830,873 ****
        fprintf (stderr, "\nAutogenerated built-in functions:\n\n");
        for (int i = 1; i < (int) RS6000_BIF_MAX; i++)
  	{
! 	  bif_enable e = rs6000_builtin_info[i].enable;
! 	  if (e == ENB_P5 && !TARGET_POPCNTB)
! 	    continue;
! 	  if (e == ENB_P6 && !TARGET_CMPB)
! 	    continue;
! 	  if (e == ENB_P6_64 && !(TARGET_CMPB && TARGET_POWERPC64))
! 	    continue;
! 	  if (e == ENB_ALTIVEC && !TARGET_ALTIVEC)
! 	    continue;
! 	  if (e == ENB_VSX && !TARGET_VSX)
! 	    continue;
! 	  if (e == ENB_P7 && !TARGET_POPCNTD)
! 	    continue;
! 	  if (e == ENB_P7_64 && !(TARGET_POPCNTD && TARGET_POWERPC64))
! 	    continue;
! 	  if (e == ENB_P8 && !TARGET_DIRECT_MOVE)
! 	    continue;
! 	  if (e == ENB_P8V && !TARGET_P8_VECTOR)
! 	    continue;
! 	  if (e == ENB_P9 && !TARGET_MODULO)
! 	    continue;
! 	  if (e == ENB_P9_64 && !(TARGET_MODULO && TARGET_POWERPC64))
! 	    continue;
! 	  if (e == ENB_P9V && !TARGET_P9_VECTOR)
! 	    continue;
! 	  if (e == ENB_IEEE128_HW && !TARGET_FLOAT128_HW)
! 	    continue;
! 	  if (e == ENB_DFP && !TARGET_DFP)
! 	    continue;
! 	  if (e == ENB_CRYPTO && !TARGET_CRYPTO)
! 	    continue;
! 	  if (e == ENB_HTM && !TARGET_HTM)
! 	    continue;
! 	  if (e == ENB_P10 && !TARGET_POWER10)
! 	    continue;
! 	  if (e == ENB_P10_64 && !(TARGET_POWER10 && TARGET_POWERPC64))
! 	    continue;
! 	  if (e == ENB_MMA && !TARGET_MMA)
  	    continue;
  	  tree fntype = rs6000_builtin_info[i].fntype;
  	  tree t = TREE_TYPE (fntype);
--- 842,849 ----
        fprintf (stderr, "\nAutogenerated built-in functions:\n\n");
        for (int i = 1; i < (int) RS6000_BIF_MAX; i++)
  	{
! 	  enum rs6000_gen_builtins fn_code = (enum rs6000_gen_builtins) i;
! 	  if (!rs6000_builtin_is_supported (fn_code))
  	    continue;
  	  tree fntype = rs6000_builtin_info[i].fntype;
  	  tree t = TREE_TYPE (fntype);
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 1121,1127 ****
        unsigned nvec = (fncode == RS6000_BIF_DISASSEMBLE_ACC) ? 4 : 2;
        tree dst_ptr = gimple_call_arg (stmt, 0);
        tree src_ptr = gimple_call_arg (stmt, 1);
!       tree src_type = TREE_TYPE (src_ptr);
        tree src = create_tmp_reg_or_ssa_name (TREE_TYPE (src_type));
        gimplify_assign (src, build_simple_mem_ref (src_ptr), &new_seq);
  
--- 1097,1108 ----
        unsigned nvec = (fncode == RS6000_BIF_DISASSEMBLE_ACC) ? 4 : 2;
        tree dst_ptr = gimple_call_arg (stmt, 0);
        tree src_ptr = gimple_call_arg (stmt, 1);
!       tree src_type = (fncode == RS6000_BIF_DISASSEMBLE_ACC)
! 		      ? build_pointer_type (vector_quad_type_node)
! 		      : build_pointer_type (vector_pair_type_node);
!       if (TREE_TYPE (src_ptr) != src_type)
! 	src_ptr = build1 (NOP_EXPR, src_type, src_ptr);
! 
        tree src = create_tmp_reg_or_ssa_name (TREE_TYPE (src_type));
        gimplify_assign (src, build_simple_mem_ref (src_ptr), &new_seq);
  
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 1132,1138 ****
  	  || (fncode == RS6000_BIF_DISASSEMBLE_PAIR_V
  	      && TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_pair_type_node))
  	{
! 	  tree dst = build_simple_mem_ref (build1 (VIEW_CONVERT_EXPR,
  						   src_type, dst_ptr));
  	  gimplify_assign (dst, src, &new_seq);
  	  pop_gimplify_context (NULL);
--- 1113,1119 ----
  	  || (fncode == RS6000_BIF_DISASSEMBLE_PAIR_V
  	      && TREE_TYPE (TREE_TYPE (dst_ptr)) == vector_pair_type_node))
  	{
! 	  tree dst = build_simple_mem_ref (build1 (NOP_EXPR,
  						   src_type, dst_ptr));
  	  gimplify_assign (dst, src, &new_seq);
  	  pop_gimplify_context (NULL);
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 1156,1162 ****
  	= rs6000_builtin_decls[rs6000_builtin_info[fncode].assoc_bif];
        tree dst_type = build_pointer_type_for_mode (unsigned_V16QI_type_node,
  						   ptr_mode, true);
!       tree dst_base = build1 (VIEW_CONVERT_EXPR, dst_type, dst_ptr);
        for (unsigned i = 0; i < nvec; i++)
  	{
  	  unsigned index = WORDS_BIG_ENDIAN ? i : nvec - 1 - i;
--- 1137,1143 ----
  	= rs6000_builtin_decls[rs6000_builtin_info[fncode].assoc_bif];
        tree dst_type = build_pointer_type_for_mode (unsigned_V16QI_type_node,
  						   ptr_mode, true);
!       tree dst_base = build1 (NOP_EXPR, dst_type, dst_ptr);
        for (unsigned i = 0; i < nvec; i++)
  	{
  	  unsigned index = WORDS_BIG_ENDIAN ? i : nvec - 1 - i;
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 1182,1188 ****
        tree ptr = gimple_call_arg (stmt, 1);
        tree lhs = gimple_call_lhs (stmt);
        if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
! 	ptr = build1 (VIEW_CONVERT_EXPR,
  		      build_pointer_type (vector_pair_type_node), ptr);
        tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
  					       TREE_TYPE (ptr), ptr, offset));
--- 1163,1169 ----
        tree ptr = gimple_call_arg (stmt, 1);
        tree lhs = gimple_call_lhs (stmt);
        if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
! 	ptr = build1 (NOP_EXPR,
  		      build_pointer_type (vector_pair_type_node), ptr);
        tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
  					       TREE_TYPE (ptr), ptr, offset));
*************** rs6000_gimple_fold_mma_builtin (gimple_s
*** 1199,1205 ****
        tree offset = gimple_call_arg (stmt, 1);
        tree ptr = gimple_call_arg (stmt, 2);
        if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
! 	ptr = build1 (VIEW_CONVERT_EXPR,
  		      build_pointer_type (vector_pair_type_node), ptr);
        tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
  					       TREE_TYPE (ptr), ptr, offset));
--- 1180,1186 ----
        tree offset = gimple_call_arg (stmt, 1);
        tree ptr = gimple_call_arg (stmt, 2);
        if (TREE_TYPE (TREE_TYPE (ptr)) != vector_pair_type_node)
! 	ptr = build1 (NOP_EXPR,
  		      build_pointer_type (vector_pair_type_node), ptr);
        tree mem = build_simple_mem_ref (build2 (POINTER_PLUS_EXPR,
  					       TREE_TYPE (ptr), ptr, offset));
*************** rs6000_gimple_fold_builtin (gimple_stmt_
*** 1294,1299 ****
--- 1275,1285 ----
    enum tree_code bcode;
    gimple *g;
  
+   /* For an unresolved overloaded builtin, return early here since there
+      is no builtin info for it and we are unable to fold it.  */
+   if (fn_code > RS6000_OVLD_NONE)
+     return false;
+ 
    size_t uns_fncode = (size_t) fn_code;
    enum insn_code icode = rs6000_builtin_info[uns_fncode].icode;
    const char *fn_name1 = rs6000_builtin_info[uns_fncode].bifname;
*************** rs6000_gimple_fold_builtin (gimple_stmt_
*** 2000,2015 ****
      case RS6000_BIF_VCMPEQUH:
      case RS6000_BIF_VCMPEQUW:
      case RS6000_BIF_VCMPEQUD:
!     /* We deliberately omit RS6000_BIF_VCMPEQUT for now, because gimple
!        folding produces worse code for 128-bit compares.  */
        fold_compare_helper (gsi, EQ_EXPR, stmt);
        return true;
  
      case RS6000_BIF_VCMPNEB:
      case RS6000_BIF_VCMPNEH:
      case RS6000_BIF_VCMPNEW:
!     /* We deliberately omit RS6000_BIF_VCMPNET for now, because gimple
!        folding produces worse code for 128-bit compares.  */
        fold_compare_helper (gsi, NE_EXPR, stmt);
        return true;
  
--- 1986,1999 ----
      case RS6000_BIF_VCMPEQUH:
      case RS6000_BIF_VCMPEQUW:
      case RS6000_BIF_VCMPEQUD:
!     case RS6000_BIF_VCMPEQUT:
        fold_compare_helper (gsi, EQ_EXPR, stmt);
        return true;
  
      case RS6000_BIF_VCMPNEB:
      case RS6000_BIF_VCMPNEH:
      case RS6000_BIF_VCMPNEW:
!     case RS6000_BIF_VCMPNET:
        fold_compare_helper (gsi, NE_EXPR, stmt);
        return true;
  
*************** rs6000_gimple_fold_builtin (gimple_stmt_
*** 2021,2029 ****
      case RS6000_BIF_CMPGE_U4SI:
      case RS6000_BIF_CMPGE_2DI:
      case RS6000_BIF_CMPGE_U2DI:
!     /* We deliberately omit RS6000_BIF_CMPGE_1TI and RS6000_BIF_CMPGE_U1TI
!        for now, because gimple folding produces worse code for 128-bit
!        compares.  */
        fold_compare_helper (gsi, GE_EXPR, stmt);
        return true;
  
--- 2005,2012 ----
      case RS6000_BIF_CMPGE_U4SI:
      case RS6000_BIF_CMPGE_2DI:
      case RS6000_BIF_CMPGE_U2DI:
!     case RS6000_BIF_CMPGE_1TI:
!     case RS6000_BIF_CMPGE_U1TI:
        fold_compare_helper (gsi, GE_EXPR, stmt);
        return true;
  
*************** rs6000_gimple_fold_builtin (gimple_stmt_
*** 2035,2043 ****
      case RS6000_BIF_VCMPGTUW:
      case RS6000_BIF_VCMPGTUD:
      case RS6000_BIF_VCMPGTSD:
!     /* We deliberately omit RS6000_BIF_VCMPGTUT and RS6000_BIF_VCMPGTST
!        for now, because gimple folding produces worse code for 128-bit
!        compares.  */
        fold_compare_helper (gsi, GT_EXPR, stmt);
        return true;
  
--- 2018,2025 ----
      case RS6000_BIF_VCMPGTUW:
      case RS6000_BIF_VCMPGTUD:
      case RS6000_BIF_VCMPGTSD:
!     case RS6000_BIF_VCMPGTUT:
!     case RS6000_BIF_VCMPGTST:
        fold_compare_helper (gsi, GT_EXPR, stmt);
        return true;
  
*************** rs6000_gimple_fold_builtin (gimple_stmt_
*** 2049,2057 ****
      case RS6000_BIF_CMPLE_U4SI:
      case RS6000_BIF_CMPLE_2DI:
      case RS6000_BIF_CMPLE_U2DI:
!     /* We deliberately omit RS6000_BIF_CMPLE_1TI and RS6000_BIF_CMPLE_U1TI
!        for now, because gimple folding produces worse code for 128-bit
!        compares.  */
        fold_compare_helper (gsi, LE_EXPR, stmt);
        return true;
  
--- 2031,2038 ----
      case RS6000_BIF_CMPLE_U4SI:
      case RS6000_BIF_CMPLE_2DI:
      case RS6000_BIF_CMPLE_U2DI:
!     case RS6000_BIF_CMPLE_1TI:
!     case RS6000_BIF_CMPLE_U1TI:
        fold_compare_helper (gsi, LE_EXPR, stmt);
        return true;
  
*************** lxvrse_expand_builtin (rtx target, insn_
*** 2859,2875 ****
    if (icode == CODE_FOR_vsx_lxvrbx)
      {
        temp1  = simplify_gen_subreg (V16QImode, tiscratch, TImode, 0);
!       emit_insn (gen_vsx_sign_extend_qi_v2di (discratch, temp1));
      }
    else if (icode == CODE_FOR_vsx_lxvrhx)
      {
        temp1  = simplify_gen_subreg (V8HImode, tiscratch, TImode, 0);
!       emit_insn (gen_vsx_sign_extend_hi_v2di (discratch, temp1));
      }
    else if (icode == CODE_FOR_vsx_lxvrwx)
      {
        temp1  = simplify_gen_subreg (V4SImode, tiscratch, TImode, 0);
!       emit_insn (gen_vsx_sign_extend_si_v2di (discratch, temp1));
      }
    else if (icode == CODE_FOR_vsx_lxvrdx)
      discratch = simplify_gen_subreg (V2DImode, tiscratch, TImode, 0);
--- 2840,2856 ----
    if (icode == CODE_FOR_vsx_lxvrbx)
      {
        temp1  = simplify_gen_subreg (V16QImode, tiscratch, TImode, 0);
!       emit_insn (gen_vsx_sign_extend_v16qi_v2di (discratch, temp1));
      }
    else if (icode == CODE_FOR_vsx_lxvrhx)
      {
        temp1  = simplify_gen_subreg (V8HImode, tiscratch, TImode, 0);
!       emit_insn (gen_vsx_sign_extend_v8hi_v2di (discratch, temp1));
      }
    else if (icode == CODE_FOR_vsx_lxvrwx)
      {
        temp1  = simplify_gen_subreg (V4SImode, tiscratch, TImode, 0);
!       emit_insn (gen_vsx_sign_extend_v4si_v2di (discratch, temp1));
      }
    else if (icode == CODE_FOR_vsx_lxvrdx)
      discratch = simplify_gen_subreg (V2DImode, tiscratch, TImode, 0);
*************** stv_expand_builtin (insn_code icode, rtx
*** 2952,2958 ****
  
        rtx addr;
        if (op[1] == const0_rtx)
! 	addr = gen_rtx_MEM (Pmode, op[2]);
        else
  	{
  	  op[1] = copy_to_mode_reg (Pmode, op[1]);
--- 2933,2939 ----
  
        rtx addr;
        if (op[1] == const0_rtx)
! 	addr = gen_rtx_MEM (tmode, op[2]);
        else
  	{
  	  op[1] = copy_to_mode_reg (Pmode, op[1]);
*************** rs6000_expand_builtin (tree exp, rtx tar
*** 3295,3300 ****
--- 3276,3289 ----
    tree fndecl = TREE_OPERAND (CALL_EXPR_FN (exp), 0);
    enum rs6000_gen_builtins fcode
      = (enum rs6000_gen_builtins) DECL_MD_FUNCTION_CODE (fndecl);
+ 
+   /* Emit error message if it's an unresolved overloaded builtin.  */
+   if (fcode > RS6000_OVLD_NONE)
+     {
+       error ("unresolved overload for builtin %qF", fndecl);
+       return const0_rtx;
+     }
+ 
    size_t uns_fcode = (size_t)fcode;
    enum insn_code icode = rs6000_builtin_info[uns_fcode].icode;
  
*************** rs6000_expand_builtin (tree exp, rtx tar
*** 3375,3403 ****
       but check for actual availability now, during expand time.  For
       invalid builtins, generate a normal call.  */
    bifdata *bifaddr = &rs6000_builtin_info[uns_fcode];
-   bif_enable e = bifaddr->enable;
  
!   if (!(e == ENB_ALWAYS
! 	|| (e == ENB_P5 && TARGET_POPCNTB)
! 	|| (e == ENB_P6 && TARGET_CMPB)
! 	|| (e == ENB_P6_64 && TARGET_CMPB && TARGET_POWERPC64)
! 	|| (e == ENB_ALTIVEC && TARGET_ALTIVEC)
! 	|| (e == ENB_CELL && TARGET_ALTIVEC && rs6000_cpu == PROCESSOR_CELL)
! 	|| (e == ENB_VSX && TARGET_VSX)
! 	|| (e == ENB_P7 && TARGET_POPCNTD)
! 	|| (e == ENB_P7_64 && TARGET_POPCNTD && TARGET_POWERPC64)
! 	|| (e == ENB_P8 && TARGET_DIRECT_MOVE)
! 	|| (e == ENB_P8V && TARGET_P8_VECTOR)
! 	|| (e == ENB_P9 && TARGET_MODULO)
! 	|| (e == ENB_P9_64 && TARGET_MODULO && TARGET_POWERPC64)
! 	|| (e == ENB_P9V && TARGET_P9_VECTOR)
! 	|| (e == ENB_IEEE128_HW && TARGET_FLOAT128_HW)
! 	|| (e == ENB_DFP && TARGET_DFP)
! 	|| (e == ENB_CRYPTO && TARGET_CRYPTO)
! 	|| (e == ENB_HTM && TARGET_HTM)
! 	|| (e == ENB_P10 && TARGET_POWER10)
! 	|| (e == ENB_P10_64 && TARGET_POWER10 && TARGET_POWERPC64)
! 	|| (e == ENB_MMA && TARGET_MMA)))
      {
        rs6000_invalid_builtin (fcode);
        return expand_call (exp, target, ignore);
--- 3364,3371 ----
       but check for actual availability now, during expand time.  For
       invalid builtins, generate a normal call.  */
    bifdata *bifaddr = &rs6000_builtin_info[uns_fcode];
  
!   if (!rs6000_builtin_is_supported (fcode))
      {
        rs6000_invalid_builtin (fcode);
        return expand_call (exp, target, ignore);
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-builtins.def gcc-13.1.0/gcc/config/rs6000/rs6000-builtins.def
*** gcc-12.2.0/gcc/config/rs6000/rs6000-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Built-in functions for PowerPC.
! ; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ; Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Built-in functions for PowerPC.
! ; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ; Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  ;
  ; This file is part of GCC.
***************
*** 1424,1432 ****
    pure vsc __builtin_vsx_ld_elemrev_v16qi (signed long, const void *);
      LD_ELEMREV_V16QI vsx_ld_elemrev_v16qi {ldvec,endian}
  
! ; TODO: There is apparent intent in rs6000-builtin.def to have
! ; RS6000_BTC_SPECIAL processing for LXSDX, LXVDSX, and STXSDX, but there are
! ; no def_builtin calls for any of them.  At some point, we may want to add a
  ; set of built-ins for whichever vector types make sense for these.
  
    pure vsq __builtin_vsx_lxvd2x_v1ti (signed long, const void *);
--- 1424,1433 ----
    pure vsc __builtin_vsx_ld_elemrev_v16qi (signed long, const void *);
      LD_ELEMREV_V16QI vsx_ld_elemrev_v16qi {ldvec,endian}
  
! ; TODO: There was apparent intent in the rs6000-builtin.def to
! ; have SPECIAL processing for LXSDX, LXVDSX, and STXSDX, but there are
! ; no def_builtin calls for any of them.  That file was removed as part
! ; of the BIF rewrite, but at some point, we may want to add a
  ; set of built-ins for whichever vector types make sense for these.
  
    pure vsq __builtin_vsx_lxvd2x_v1ti (signed long, const void *);
***************
*** 2665,2677 ****
      VMSUMUDM altivec_vmsumudm {}
  
    const vsll __builtin_altivec_vprtybd (vsll);
!     VPRTYBD parityv2di2 {}
  
    const vsq __builtin_altivec_vprtybq (vsq);
!     VPRTYBQ parityv1ti2 {}
  
    const vsi __builtin_altivec_vprtybw (vsi);
!     VPRTYBW parityv4si2 {}
  
    const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
      VRLDMI altivec_vrldmi {}
--- 2666,2678 ----
      VMSUMUDM altivec_vmsumudm {}
  
    const vsll __builtin_altivec_vprtybd (vsll);
!     VPRTYBD rs6000_vprtybv2di2 {}
  
    const vsq __builtin_altivec_vprtybq (vsq);
!     VPRTYBQ rs6000_vprtybv1ti2 {}
  
    const vsi __builtin_altivec_vprtybw (vsi);
!     VPRTYBW rs6000_vprtybv4si2 {}
  
    const vsll __builtin_altivec_vrldmi (vsll, vsll, vsll);
      VRLDMI altivec_vrldmi {}
***************
*** 2686,2704 ****
      VRLWNM altivec_vrlwnm {}
  
    const vsll __builtin_altivec_vsignextsb2d (vsc);
!     VSIGNEXTSB2D vsignextend_qi_v2di {}
  
    const vsi __builtin_altivec_vsignextsb2w (vsc);
!     VSIGNEXTSB2W vsignextend_qi_v4si {}
  
    const vsll __builtin_altivec_visgnextsh2d (vss);
!     VSIGNEXTSH2D vsignextend_hi_v2di {}
  
    const vsi __builtin_altivec_vsignextsh2w (vss);
!     VSIGNEXTSH2W vsignextend_hi_v4si {}
  
    const vsll __builtin_altivec_vsignextsw2d (vsi);
!     VSIGNEXTSW2D vsignextend_si_v2di {}
  
    const vsc __builtin_altivec_vslv (vsc, vsc);
      VSLV vslv {}
--- 2687,2705 ----
      VRLWNM altivec_vrlwnm {}
  
    const vsll __builtin_altivec_vsignextsb2d (vsc);
!     VSIGNEXTSB2D vsx_sign_extend_v16qi_v2di {}
  
    const vsi __builtin_altivec_vsignextsb2w (vsc);
!     VSIGNEXTSB2W vsx_sign_extend_v16qi_v4si {}
  
    const vsll __builtin_altivec_visgnextsh2d (vss);
!     VSIGNEXTSH2D vsx_sign_extend_v8hi_v2di {}
  
    const vsi __builtin_altivec_vsignextsh2w (vss);
!     VSIGNEXTSH2W vsx_sign_extend_v8hi_v4si {}
  
    const vsll __builtin_altivec_vsignextsw2d (vsi);
!     VSIGNEXTSW2D vsx_sign_extend_v4si_v2di {}
  
    const vsc __builtin_altivec_vslv (vsc, vsc);
      VSLV vslv {}
***************
*** 3439,3445 ****
      VRLQNM altivec_vrlqnm {}
  
    const vsq __builtin_altivec_vsignext (vsll);
!     VSIGNEXTSD2Q vsignextend_v2di_v1ti {}
  
    const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
      VSLDB_V16QI vsldb_v16qi {}
--- 3440,3446 ----
      VRLQNM altivec_vrlqnm {}
  
    const vsq __builtin_altivec_vsignext (vsll);
!     VSIGNEXTSD2Q vsx_sign_extend_v2di_v1ti {}
  
    const vsc __builtin_altivec_vsldb_v16qi (vsc, vsc, const int<3>);
      VSLDB_V16QI vsldb_v16qi {}
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-c.cc gcc-13.1.0/gcc/config/rs6000/rs6000-c.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the C front end on the PowerPC architecture.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     Contributed by Zack Weinberg <zack@codesourcery.com>
     and Paolo Bonzini <bonzini@gnu.org>
--- 1,5 ----
  /* Subroutines for the C front end on the PowerPC architecture.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     Contributed by Zack Weinberg <zack@codesourcery.com>
     and Paolo Bonzini <bonzini@gnu.org>
*************** rid_int128(void)
*** 178,186 ****
    return RID_MAX + 1;
  }
  
! /* Called to decide whether a conditional macro should be expanded.
!    Since we have exactly one such macro (i.e, 'vector'), we do not
!    need to examine the 'tok' parameter.  */
  
  static cpp_hashnode *
  rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok)
--- 178,185 ----
    return RID_MAX + 1;
  }
  
! /* Called to decide whether a conditional macro should be expanded
!    by peeking two or more tokens(_bool/_pixel/int/long/double/...).  */
  
  static cpp_hashnode *
  rs6000_macro_to_expand (cpp_reader *pfile, const cpp_token *tok)
*************** rs6000_macro_to_expand (cpp_reader *pfil
*** 282,288 ****
  		expand_bool_pixel = __pixel_keyword;
  	      else if (ident == C_CPP_HASHNODE (__bool_keyword))
  		expand_bool_pixel = __bool_keyword;
! 	      else
  		{
  		  /* Try two tokens down, too.  */
  		  do
--- 281,289 ----
  		expand_bool_pixel = __pixel_keyword;
  	      else if (ident == C_CPP_HASHNODE (__bool_keyword))
  		expand_bool_pixel = __bool_keyword;
! 
! 	      /* If there are more tokens to check.  */
! 	      else if (ident)
  		{
  		  /* Try two tokens down, too.  */
  		  do
*************** rs6000_define_or_undefine_macro (bool de
*** 334,353 ****
  }
  
  /* Define or undefine macros based on the current target.  If the user does
!    #pragma GCC target, we need to adjust the macros dynamically.  Note, some of
!    the options needed for builtins have been moved to separate variables, so
!    have both the target flags and the builtin flags as arguments.  */
  
  void
! rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT flags,
! 			     HOST_WIDE_INT bu_mask)
  {
    if (TARGET_DEBUG_BUILTIN || TARGET_DEBUG_TARGET)
      fprintf (stderr,
! 	     "rs6000_target_modify_macros (%s, " HOST_WIDE_INT_PRINT_HEX
! 	     ", " HOST_WIDE_INT_PRINT_HEX ")\n",
  	     (define_p) ? "define" : "undef",
! 	     flags, bu_mask);
  
    /* Each of the flags mentioned below controls whether certain
       preprocessor macros will be automatically defined when
--- 335,350 ----
  }
  
  /* Define or undefine macros based on the current target.  If the user does
!    #pragma GCC target, we need to adjust the macros dynamically.  */
  
  void
! rs6000_target_modify_macros (bool define_p, HOST_WIDE_INT flags)
  {
    if (TARGET_DEBUG_BUILTIN || TARGET_DEBUG_TARGET)
      fprintf (stderr,
! 	     "rs6000_target_modify_macros (%s, " HOST_WIDE_INT_PRINT_HEX ")\n",
  	     (define_p) ? "define" : "undef",
! 	     flags);
  
    /* Each of the flags mentioned below controls whether certain
       preprocessor macros will be automatically defined when
*************** rs6000_target_modify_macros (bool define
*** 383,389 ****
  	TARGET_DEFAULT macro is defined to equal zero, and
  	TARGET_POWERPC64 and
  	a) BYTES_BIG_ENDIAN and the flag to be enabled is either
! 	   MASK_PPC_GFXOPT or MASK_POWERPC64 (flags for "powerpc64"
  	   target), or
  	b) !BYTES_BIG_ENDIAN and the flag to be enabled is either
  	   MASK_POWERPC64 or it is one of the flags included in
--- 380,386 ----
  	TARGET_DEFAULT macro is defined to equal zero, and
  	TARGET_POWERPC64 and
  	a) BYTES_BIG_ENDIAN and the flag to be enabled is either
! 	   OPTION_MASK_PPC_GFXOPT or MASK_POWERPC64 (flags for "powerpc64"
  	   target), or
  	b) !BYTES_BIG_ENDIAN and the flag to be enabled is either
  	   MASK_POWERPC64 or it is one of the flags included in
*************** rs6000_target_modify_macros (bool define
*** 594,603 ****
    if ((flags & OPTION_MASK_FLOAT128_HW) != 0)
      rs6000_define_or_undefine_macro (define_p, "__FLOAT128_HARDWARE__");
  
!   /* options from the builtin masks.  */
!   /* Note that RS6000_BTM_CELL is enabled only if (rs6000_cpu ==
!      PROCESSOR_CELL) (e.g. -mcpu=cell).  */
!   if ((bu_mask & RS6000_BTM_CELL) != 0)
      rs6000_define_or_undefine_macro (define_p, "__PPU__");
  
    /* Tell the user if we support the MMA instructions.  */
--- 591,598 ----
    if ((flags & OPTION_MASK_FLOAT128_HW) != 0)
      rs6000_define_or_undefine_macro (define_p, "__FLOAT128_HARDWARE__");
  
!   /* Tell the user if we are targeting CELL.  */
!   if (rs6000_cpu == PROCESSOR_CELL)
      rs6000_define_or_undefine_macro (define_p, "__PPU__");
  
    /* Tell the user if we support the MMA instructions.  */
*************** void
*** 615,622 ****
  rs6000_cpu_cpp_builtins (cpp_reader *pfile)
  {
    /* Define all of the common macros.  */
!   rs6000_target_modify_macros (true, rs6000_isa_flags,
! 			       rs6000_builtin_mask_calculate ());
  
    if (TARGET_FRE)
      builtin_define ("__RECIP__");
--- 610,616 ----
  rs6000_cpu_cpp_builtins (cpp_reader *pfile)
  {
    /* Define all of the common macros.  */
!   rs6000_target_modify_macros (true, rs6000_isa_flags);
  
    if (TARGET_FRE)
      builtin_define ("__RECIP__");
*************** static inline bool
*** 814,819 ****
--- 808,814 ----
  is_float128_p (tree t)
  {
    return (t == float128_type_node
+ 	  || (t && t == float128t_type_node)
  	  || (TARGET_IEEEQUAD
  	      && TARGET_LONG_DOUBLE_128
  	      && t == long_double_type_node));
*************** altivec_resolve_overloaded_builtin (loca
*** 1755,1760 ****
--- 1750,1785 ----
    vec<tree, va_gc> *arglist = static_cast<vec<tree, va_gc> *> (passed_arglist);
    unsigned int nargs = vec_safe_length (arglist);
  
+   /* If the number of arguments did not match the prototype, return NULL
+      and the generic code will issue the appropriate error message.  Skip
+      this test for functions where we don't fully describe all the possible
+      overload signatures in rs6000-overload.def (because they aren't relevant
+      to the expansion here).  If we don't, we get confusing error messages.  */
+   /* As an example, for vec_splats we have:
+ 
+ ; There are no actual builtins for vec_splats.  There is special handling for
+ ; this in altivec_resolve_overloaded_builtin in rs6000-c.cc, where the call
+ ; is replaced by a constructor.  The single overload here causes
+ ; __builtin_vec_splats to be registered with the front end so that can happen.
+ [VEC_SPLATS, vec_splats, __builtin_vec_splats]
+   vsi __builtin_vec_splats (vsi);
+     ABS_V4SI SPLATS_FAKERY
+ 
+     So even though __builtin_vec_splats accepts all vector types, the
+     infrastructure cheats and just records one prototype.  We end up getting
+     an error message that refers to this specific prototype even when we
+     are handling a different argument type.  That is completely confusing
+     to the user, so it's best to let these cases be handled individually
+     in the resolve_vec_splats, etc., helper functions.  */
+ 
+   if (expected_args != nargs
+       && !(fcode == RS6000_OVLD_VEC_PROMOTE
+ 	   || fcode == RS6000_OVLD_VEC_SPLATS
+ 	   || fcode == RS6000_OVLD_VEC_EXTRACT
+ 	   || fcode == RS6000_OVLD_VEC_INSERT
+ 	   || fcode == RS6000_OVLD_VEC_STEP))
+     return NULL;
+ 
    for (n = 0;
         !VOID_TYPE_P (TREE_VALUE (fnargs)) && n < nargs;
         fnargs = TREE_CHAIN (fnargs), n++)
*************** altivec_resolve_overloaded_builtin (loca
*** 1815,1850 ****
        types[n] = type;
      }
  
-   /* If the number of arguments did not match the prototype, return NULL
-      and the generic code will issue the appropriate error message.  Skip
-      this test for functions where we don't fully describe all the possible
-      overload signatures in rs6000-overload.def (because they aren't relevant
-      to the expansion here).  If we don't, we get confusing error messages.  */
-   /* As an example, for vec_splats we have:
- 
- ; There are no actual builtins for vec_splats.  There is special handling for
- ; this in altivec_resolve_overloaded_builtin in rs6000-c.cc, where the call
- ; is replaced by a constructor.  The single overload here causes
- ; __builtin_vec_splats to be registered with the front end so that can happen.
- [VEC_SPLATS, vec_splats, __builtin_vec_splats]
-   vsi __builtin_vec_splats (vsi);
-     ABS_V4SI SPLATS_FAKERY
- 
-     So even though __builtin_vec_splats accepts all vector types, the
-     infrastructure cheats and just records one prototype.  We end up getting
-     an error message that refers to this specific prototype even when we
-     are handling a different argument type.  That is completely confusing
-     to the user, so it's best to let these cases be handled individually
-     in the resolve_vec_splats, etc., helper functions.  */
- 
-   if (n != expected_args
-       && !(fcode == RS6000_OVLD_VEC_PROMOTE
- 	   || fcode == RS6000_OVLD_VEC_SPLATS
- 	   || fcode == RS6000_OVLD_VEC_EXTRACT
- 	   || fcode == RS6000_OVLD_VEC_INSERT
- 	   || fcode == RS6000_OVLD_VEC_STEP))
-     return NULL;
- 
    /* Some overloads require special handling.  */
    tree returned_expr = NULL;
    resolution res = unresolved;
--- 1840,1845 ----
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-call.cc gcc-13.1.0/gcc/config/rs6000/rs6000-call.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-call.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-call.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Subroutines used to generate function calls and handle built-in
     instructions on IBM RS/6000.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Subroutines used to generate function calls and handle built-in
     instructions on IBM RS/6000.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 55,80 ****
  #include "common/common-target.h"
  #include "langhooks.h"
  #include "gimplify.h"
- #include "gimple-fold.h"
  #include "gimple-iterator.h"
  #include "ssa.h"
  #include "tree-ssa-propagate.h"
  #include "builtins.h"
  #include "tree-vector-builder.h"
- #if TARGET_XCOFF
- #include "xcoffout.h"  /* get declarations of xcoff_*_section_name */
- #endif
  #include "ppc-auxv.h"
  #include "targhooks.h"
  #include "opts.h"
  
  #include "rs6000-internal.h"
  
- #if TARGET_MACHO
- #include "gstab.h"  /* for N_SLINE */
- #include "dbxout.h" /* dbxout_ */
- #endif
- 
  #ifndef TARGET_PROFILE_KERNEL
  #define TARGET_PROFILE_KERNEL 0
  #endif
--- 55,72 ----
  #include "common/common-target.h"
  #include "langhooks.h"
  #include "gimplify.h"
  #include "gimple-iterator.h"
+ #include "gimple-fold.h"
  #include "ssa.h"
  #include "tree-ssa-propagate.h"
  #include "builtins.h"
  #include "tree-vector-builder.h"
  #include "ppc-auxv.h"
  #include "targhooks.h"
  #include "opts.h"
  
  #include "rs6000-internal.h"
  
  #ifndef TARGET_PROFILE_KERNEL
  #define TARGET_PROFILE_KERNEL 0
  #endif
*************** rs6000_function_arg_advance_1 (CUMULATIV
*** 1111,1116 ****
--- 1103,1114 ----
  	{
  	  cum->vregno += n_elts;
  
+ 	  /* If we are not splitting Complex IEEE128 args then account for the
+ 	     fact that they are passed in 2 VSX regs. */
+ 	  if (!targetm.calls.split_complex_arg && type
+ 	      && TREE_CODE (type) == COMPLEX_TYPE && elt_mode == KCmode)
+ 	    cum->vregno++;
+ 
  	  if (!TARGET_ALTIVEC)
  	    error ("cannot pass argument in vector register because"
  		   " altivec instructions are disabled, use %qs"
*************** setup_incoming_varargs (cumulative_args_
*** 2255,2261 ****
  
    /* Skip the last named argument.  */
    next_cum = *get_cumulative_args (cum);
!   rs6000_function_arg_advance_1 (&next_cum, arg.mode, arg.type, arg.named, 0);
  
    if (DEFAULT_ABI == ABI_V4)
      {
--- 2253,2261 ----
  
    /* Skip the last named argument.  */
    next_cum = *get_cumulative_args (cum);
!   if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
!     rs6000_function_arg_advance_1 (&next_cum, arg.mode, arg.type, arg.named,
! 				   0);
  
    if (DEFAULT_ABI == ABI_V4)
      {
*************** setup_incoming_varargs (cumulative_args_
*** 2329,2335 ****
        first_reg_offset = next_cum.words;
        save_area = crtl->args.internal_arg_pointer;
  
!       if (targetm.calls.must_pass_in_stack (arg))
  	first_reg_offset += rs6000_arg_size (TYPE_MODE (arg.type), arg.type);
      }
  
--- 2329,2336 ----
        first_reg_offset = next_cum.words;
        save_area = crtl->args.internal_arg_pointer;
  
!       if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl))
! 	  && targetm.calls.must_pass_in_stack (arg))
  	first_reg_offset += rs6000_arg_size (TYPE_MODE (arg.type), arg.type);
      }
  
*************** rs6000_gimplify_va_arg (tree valist, tre
*** 2801,2806 ****
--- 2802,2811 ----
    return build_va_arg_indirect_ref (addr);
  }
  
+ /* Return the permutation index for the swapping on the given vector mode.
+    Note that the permutation index is correspondingly generated by endianness,
+    it should be used by direct vector permutation.  */
+ 
  rtx
  swap_endian_selector_for_mode (machine_mode mode)
  {
*************** swap_endian_selector_for_mode (machine_m
*** 2833,2839 ****
      }
  
    for (i = 0; i < 16; ++i)
!     perm[i] = GEN_INT (swaparray[i]);
  
    return force_reg (V16QImode, gen_rtx_CONST_VECTOR (V16QImode,
  						     gen_rtvec_v (16, perm)));
--- 2838,2848 ----
      }
  
    for (i = 0; i < 16; ++i)
!     if (BYTES_BIG_ENDIAN)
!       perm[i] = GEN_INT (swaparray[i]);
!     else
!       /* Generates the reversed perm for little endian.  */
!       perm[i] = GEN_INT (~swaparray[i] & 0x0000001f);
  
    return force_reg (V16QImode, gen_rtx_CONST_VECTOR (V16QImode,
  						     gen_rtvec_v (16, perm)));
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-cpus.def gcc-13.1.0/gcc/config/rs6000/rs6000-cpus.def
*** gcc-12.2.0/gcc/config/rs6000/rs6000-cpus.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-cpus.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* IBM RS/6000 CPU names..
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,5 ----
  /* IBM RS/6000 CPU names..
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
***************
*** 84,91 ****
  
  #define ISA_3_1_MASKS_SERVER	(ISA_3_0_MASKS_SERVER			\
  				 | OPTION_MASK_POWER10			\
! 				 | OTHER_POWER10_MASKS			\
! 				 | OPTION_MASK_P10_FUSION)
  
  /* Flags that need to be turned off if -mno-power9-vector.  */
  #define OTHER_P9_VECTOR_MASKS	(OPTION_MASK_FLOAT128_HW		\
--- 84,90 ----
  
  #define ISA_3_1_MASKS_SERVER	(ISA_3_0_MASKS_SERVER			\
  				 | OPTION_MASK_POWER10			\
! 				 | OTHER_POWER10_MASKS)
  
  /* Flags that need to be turned off if -mno-power9-vector.  */
  #define OTHER_P9_VECTOR_MASKS	(OPTION_MASK_FLOAT128_HW		\
***************
*** 176,249 ****
  
     where the arguments are the fields of struct rs6000_ptt.  */
  
! RS6000_CPU ("401", PROCESSOR_PPC403, MASK_SOFT_FLOAT)
! RS6000_CPU ("403", PROCESSOR_PPC403, MASK_SOFT_FLOAT | MASK_STRICT_ALIGN)
! RS6000_CPU ("405", PROCESSOR_PPC405, MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("405fp", PROCESSOR_PPC405, MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("440", PROCESSOR_PPC440, MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("440fp", PROCESSOR_PPC440, MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("464", PROCESSOR_PPC440, MASK_SOFT_FLOAT | MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("464fp", PROCESSOR_PPC440, MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("476", PROCESSOR_PPC476,
! 	    MASK_SOFT_FLOAT | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB
! 	    | MASK_FPRND | MASK_CMPB | MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("476fp", PROCESSOR_PPC476,
! 	    MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
! 	    | MASK_CMPB | MASK_MULHW | MASK_DLMZB)
  RS6000_CPU ("505", PROCESSOR_MPCCORE, 0)
! RS6000_CPU ("601", PROCESSOR_PPC601, MASK_MULTIPLE)
! RS6000_CPU ("602", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
! RS6000_CPU ("603", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
! RS6000_CPU ("603e", PROCESSOR_PPC603, MASK_PPC_GFXOPT)
! RS6000_CPU ("604", PROCESSOR_PPC604, MASK_PPC_GFXOPT)
! RS6000_CPU ("604e", PROCESSOR_PPC604e, MASK_PPC_GFXOPT)
! RS6000_CPU ("620", PROCESSOR_PPC620, MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("630", PROCESSOR_PPC630, MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("740", PROCESSOR_PPC750, MASK_PPC_GFXOPT)
  RS6000_CPU ("7400", PROCESSOR_PPC7400, POWERPC_7400_MASK)
  RS6000_CPU ("7450", PROCESSOR_PPC7450, POWERPC_7400_MASK)
! RS6000_CPU ("750", PROCESSOR_PPC750, MASK_PPC_GFXOPT)
! RS6000_CPU ("801", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
! RS6000_CPU ("821", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
! RS6000_CPU ("823", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
! RS6000_CPU ("8540", PROCESSOR_PPC8540, MASK_STRICT_ALIGN | MASK_ISEL)
! RS6000_CPU ("8548", PROCESSOR_PPC8548, MASK_STRICT_ALIGN | MASK_ISEL)
! RS6000_CPU ("a2", PROCESSOR_PPCA2,
! 	    MASK_PPC_GFXOPT | MASK_POWERPC64 | MASK_POPCNTB | MASK_CMPB
! 	    | MASK_NO_UPDATE)
! RS6000_CPU ("e300c2", PROCESSOR_PPCE300C2, MASK_SOFT_FLOAT)
  RS6000_CPU ("e300c3", PROCESSOR_PPCE300C3, 0)
! RS6000_CPU ("e500mc", PROCESSOR_PPCE500MC, MASK_PPC_GFXOPT | MASK_ISEL)
  RS6000_CPU ("e500mc64", PROCESSOR_PPCE500MC64,
! 	    MASK_POWERPC64 | MASK_PPC_GFXOPT | MASK_ISEL)
  RS6000_CPU ("e5500", PROCESSOR_PPCE5500,
! 	    MASK_POWERPC64 | MASK_PPC_GFXOPT | MASK_ISEL)
  RS6000_CPU ("e6500", PROCESSOR_PPCE6500, POWERPC_7400_MASK | MASK_POWERPC64
! 	    | MASK_MFCRF | MASK_ISEL)
! RS6000_CPU ("860", PROCESSOR_MPCCORE, MASK_SOFT_FLOAT)
! RS6000_CPU ("970", PROCESSOR_POWER4,
! 	    POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64)
! RS6000_CPU ("cell", PROCESSOR_CELL,
! 	    POWERPC_7400_MASK  | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64)
! RS6000_CPU ("ec603e", PROCESSOR_PPC603, MASK_SOFT_FLOAT)
! RS6000_CPU ("G3", PROCESSOR_PPC750, MASK_PPC_GFXOPT)
  RS6000_CPU ("G4",  PROCESSOR_PPC7450, POWERPC_7400_MASK)
! RS6000_CPU ("G5", PROCESSOR_POWER4,
! 	    POWERPC_7400_MASK | MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64)
! RS6000_CPU ("titan", PROCESSOR_TITAN, MASK_MULHW | MASK_DLMZB)
! RS6000_CPU ("power3", PROCESSOR_PPC630, MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("power4", PROCESSOR_POWER4, MASK_POWERPC64 | MASK_PPC_GPOPT
! 	    | MASK_PPC_GFXOPT | MASK_MFCRF)
! RS6000_CPU ("power5", PROCESSOR_POWER5, MASK_POWERPC64 | MASK_PPC_GPOPT
! 	    | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB)
! RS6000_CPU ("power5+", PROCESSOR_POWER5, MASK_POWERPC64 | MASK_PPC_GPOPT
! 	    | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND)
! RS6000_CPU ("power6", PROCESSOR_POWER6, MASK_POWERPC64 | MASK_PPC_GPOPT
! 	    | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
! 	    | MASK_CMPB | MASK_DFP | MASK_RECIP_PRECISION)
! RS6000_CPU ("power6x", PROCESSOR_POWER6, MASK_POWERPC64 | MASK_PPC_GPOPT
! 	    | MASK_PPC_GFXOPT | MASK_MFCRF | MASK_POPCNTB | MASK_FPRND
! 	    | MASK_CMPB | MASK_DFP | MASK_RECIP_PRECISION)
  RS6000_CPU ("power7", PROCESSOR_POWER7, MASK_POWERPC64 | ISA_2_6_MASKS_SERVER)
  RS6000_CPU ("power8", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER
  	    | OPTION_MASK_HTM)
--- 175,256 ----
  
     where the arguments are the fields of struct rs6000_ptt.  */
  
! RS6000_CPU ("401", PROCESSOR_PPC403, OPTION_MASK_SOFT_FLOAT)
! RS6000_CPU ("403", PROCESSOR_PPC403, OPTION_MASK_SOFT_FLOAT | MASK_STRICT_ALIGN)
! RS6000_CPU ("405", PROCESSOR_PPC405, OPTION_MASK_SOFT_FLOAT
! 	    | OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("405fp", PROCESSOR_PPC405, OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("440", PROCESSOR_PPC440, OPTION_MASK_SOFT_FLOAT
! 	    | OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("440fp", PROCESSOR_PPC440, OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("464", PROCESSOR_PPC440, OPTION_MASK_SOFT_FLOAT
! 	    | OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("464fp", PROCESSOR_PPC440, OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("476", PROCESSOR_PPC476, OPTION_MASK_SOFT_FLOAT
! 	    | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
! 	    | OPTION_MASK_FPRND | OPTION_MASK_CMPB | OPTION_MASK_MULHW
! 	    | OPTION_MASK_DLMZB)
! RS6000_CPU ("476fp", PROCESSOR_PPC476, OPTION_MASK_PPC_GFXOPT
! 	    | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB | OPTION_MASK_FPRND
! 	    | OPTION_MASK_CMPB | OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
  RS6000_CPU ("505", PROCESSOR_MPCCORE, 0)
! RS6000_CPU ("601", PROCESSOR_PPC601, OPTION_MASK_MULTIPLE)
! RS6000_CPU ("602", PROCESSOR_PPC603, OPTION_MASK_PPC_GFXOPT)
! RS6000_CPU ("603", PROCESSOR_PPC603, OPTION_MASK_PPC_GFXOPT)
! RS6000_CPU ("603e", PROCESSOR_PPC603, OPTION_MASK_PPC_GFXOPT)
! RS6000_CPU ("604", PROCESSOR_PPC604, OPTION_MASK_PPC_GFXOPT)
! RS6000_CPU ("604e", PROCESSOR_PPC604e, OPTION_MASK_PPC_GFXOPT)
! RS6000_CPU ("620", PROCESSOR_PPC620, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("630", PROCESSOR_PPC630, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("740", PROCESSOR_PPC750, OPTION_MASK_PPC_GFXOPT)
  RS6000_CPU ("7400", PROCESSOR_PPC7400, POWERPC_7400_MASK)
  RS6000_CPU ("7450", PROCESSOR_PPC7450, POWERPC_7400_MASK)
! RS6000_CPU ("750", PROCESSOR_PPC750, OPTION_MASK_PPC_GFXOPT)
! RS6000_CPU ("801", PROCESSOR_MPCCORE, OPTION_MASK_SOFT_FLOAT)
! RS6000_CPU ("821", PROCESSOR_MPCCORE, OPTION_MASK_SOFT_FLOAT)
! RS6000_CPU ("823", PROCESSOR_MPCCORE, OPTION_MASK_SOFT_FLOAT)
! RS6000_CPU ("8540", PROCESSOR_PPC8540, MASK_STRICT_ALIGN | OPTION_MASK_ISEL)
! RS6000_CPU ("8548", PROCESSOR_PPC8548, MASK_STRICT_ALIGN | OPTION_MASK_ISEL)
! RS6000_CPU ("a2", PROCESSOR_PPCA2, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64
! 	    | OPTION_MASK_POPCNTB | OPTION_MASK_CMPB
! 	    | OPTION_MASK_NO_UPDATE)
! RS6000_CPU ("e300c2", PROCESSOR_PPCE300C2, OPTION_MASK_SOFT_FLOAT)
  RS6000_CPU ("e300c3", PROCESSOR_PPCE300C3, 0)
! RS6000_CPU ("e500mc", PROCESSOR_PPCE500MC, OPTION_MASK_PPC_GFXOPT
! 	    | OPTION_MASK_ISEL)
  RS6000_CPU ("e500mc64", PROCESSOR_PPCE500MC64,
! 	    MASK_POWERPC64 | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_ISEL)
  RS6000_CPU ("e5500", PROCESSOR_PPCE5500,
! 	    MASK_POWERPC64 | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_ISEL)
  RS6000_CPU ("e6500", PROCESSOR_PPCE6500, POWERPC_7400_MASK | MASK_POWERPC64
! 	    | OPTION_MASK_MFCRF | OPTION_MASK_ISEL)
! RS6000_CPU ("860", PROCESSOR_MPCCORE, OPTION_MASK_SOFT_FLOAT)
! RS6000_CPU ("970", PROCESSOR_POWER4, POWERPC_7400_MASK | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_MFCRF | MASK_POWERPC64)
! RS6000_CPU ("cell", PROCESSOR_CELL, POWERPC_7400_MASK  | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_MFCRF | MASK_POWERPC64)
! RS6000_CPU ("ec603e", PROCESSOR_PPC603, OPTION_MASK_SOFT_FLOAT)
! RS6000_CPU ("G3", PROCESSOR_PPC750, OPTION_MASK_PPC_GFXOPT)
  RS6000_CPU ("G4",  PROCESSOR_PPC7450, POWERPC_7400_MASK)
! RS6000_CPU ("G5", PROCESSOR_POWER4, POWERPC_7400_MASK | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_MFCRF | MASK_POWERPC64)
! RS6000_CPU ("titan", PROCESSOR_TITAN, OPTION_MASK_MULHW | OPTION_MASK_DLMZB)
! RS6000_CPU ("power3", PROCESSOR_PPC630, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("power4", PROCESSOR_POWER4, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF)
! RS6000_CPU ("power5", PROCESSOR_POWER5, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB)
! RS6000_CPU ("power5+", PROCESSOR_POWER5, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
! 	    | OPTION_MASK_FPRND)
! RS6000_CPU ("power6", PROCESSOR_POWER6, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
! 	    | OPTION_MASK_FPRND | OPTION_MASK_CMPB | OPTION_MASK_DFP
! 	    | OPTION_MASK_RECIP_PRECISION)
! RS6000_CPU ("power6x", PROCESSOR_POWER6, MASK_POWERPC64 | OPTION_MASK_PPC_GPOPT
! 	    | OPTION_MASK_PPC_GFXOPT | OPTION_MASK_MFCRF | OPTION_MASK_POPCNTB
! 	    | OPTION_MASK_FPRND | OPTION_MASK_CMPB | OPTION_MASK_DFP
! 	    | OPTION_MASK_RECIP_PRECISION)
  RS6000_CPU ("power7", PROCESSOR_POWER7, MASK_POWERPC64 | ISA_2_6_MASKS_SERVER)
  RS6000_CPU ("power8", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER
  	    | OPTION_MASK_HTM)
*************** RS6000_CPU ("power9", PROCESSOR_POWER9,
*** 251,257 ****
  	    | OPTION_MASK_HTM)
  RS6000_CPU ("power10", PROCESSOR_POWER10, MASK_POWERPC64 | ISA_3_1_MASKS_SERVER)
  RS6000_CPU ("powerpc", PROCESSOR_POWERPC, 0)
! RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64, MASK_PPC_GFXOPT | MASK_POWERPC64)
! RS6000_CPU ("powerpc64le", PROCESSOR_POWER8, MASK_POWERPC64 | ISA_2_7_MASKS_SERVER
! 	    | OPTION_MASK_HTM)
! RS6000_CPU ("rs64", PROCESSOR_RS64A, MASK_PPC_GFXOPT | MASK_POWERPC64)
--- 258,265 ----
  	    | OPTION_MASK_HTM)
  RS6000_CPU ("power10", PROCESSOR_POWER10, MASK_POWERPC64 | ISA_3_1_MASKS_SERVER)
  RS6000_CPU ("powerpc", PROCESSOR_POWERPC, 0)
! RS6000_CPU ("powerpc64", PROCESSOR_POWERPC64, OPTION_MASK_PPC_GFXOPT
! 	    | MASK_POWERPC64)
! RS6000_CPU ("powerpc64le", PROCESSOR_POWER8, MASK_POWERPC64
! 	    | ISA_2_7_MASKS_SERVER | OPTION_MASK_HTM)
! RS6000_CPU ("rs64", PROCESSOR_RS64A, OPTION_MASK_PPC_GFXOPT | MASK_POWERPC64)
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-d.cc gcc-13.1.0/gcc/config/rs6000/rs6000-d.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the PowerPC architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the PowerPC architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-d.h gcc-13.1.0/gcc/config/rs6000/rs6000-d.h
*** gcc-12.2.0/gcc/config/rs6000/rs6000-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/rs6000/rs6000-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the PowerPC architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Declare functions in rs6000-d.cc  */
+ extern void rs6000_d_target_versions (void);
+ extern void rs6000_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS rs6000_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO rs6000_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-gen-builtins.cc gcc-13.1.0/gcc/config/rs6000/rs6000-gen-builtins.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-gen-builtins.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-gen-builtins.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Generate built-in function initialization and recognition for Power.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
     Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  
  This file is part of GCC.
--- 1,5 ----
  /* Generate built-in function initialization and recognition for Power.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
     Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-internal.h gcc-13.1.0/gcc/config/rs6000/rs6000-internal.h
*** gcc-12.2.0/gcc/config/rs6000/rs6000-internal.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-internal.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Internal to rs6000 type, variable, and function declarations and
     definitons shared between the various rs6000 source files.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,6 ----
  /* Internal to rs6000 type, variable, and function declarations and
     definitons shared between the various rs6000 source files.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
*************** extern const char *rs6000_machine;
*** 82,88 ****
     from rs6000-logue.cc  */
  
  extern int uses_TOC (void);
- extern bool rs6000_global_entry_point_needed_p (void);
  extern void rs6000_output_function_prologue (FILE *file);
  extern void rs6000_output_function_epilogue (FILE *file);
  extern bool rs6000_function_ok_for_sibcall (tree decl, tree exp);
--- 82,87 ----
*************** extern tree rs6000_fold_builtin (tree fn
*** 183,188 ****
--- 182,191 ----
  			         tree *args ATTRIBUTE_UNUSED,
  			         bool ignore ATTRIBUTE_UNUSED);
  
+ extern void rs6000_print_patchable_function_entry (FILE *,
+ 						   unsigned HOST_WIDE_INT,
+ 						   bool);
+ 
  extern bool rs6000_passes_float;
  extern bool rs6000_passes_long_double;
  extern bool rs6000_passes_vector;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-linux.cc gcc-13.1.0/gcc/config/rs6000/rs6000-linux.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-linux.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-linux.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Functions for Linux on PowerPC.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Functions for Linux on PowerPC.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-logue.cc gcc-13.1.0/gcc/config/rs6000/rs6000-logue.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-logue.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-logue.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Subroutines used to generate function prologues and epilogues
     on IBM RS/6000.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Subroutines used to generate function prologues and epilogues
     on IBM RS/6000.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 47,56 ****
  #include "diagnostic-core.h"
  #include "alias.h"
  #include "rs6000-internal.h"
- #if TARGET_MACHO
- #include "gstab.h"  /* for N_SLINE */
- #include "dbxout.h" /* dbxout_ */
- #endif
  
  static int rs6000_ra_ever_killed (void);
  static void is_altivec_return_reg (rtx, void *);
--- 47,52 ----
*************** rs6000_output_function_prologue (FILE *f
*** 4013,4023 ****
--- 4009,4051 ----
  	  fprintf (file, "\tadd 2,2,12\n");
  	}
  
+       unsigned short patch_area_size = crtl->patch_area_size;
+       unsigned short patch_area_entry = crtl->patch_area_entry;
+       /* Need to emit the patching area.  */
+       if (patch_area_size > 0)
+ 	{
+ 	  cfun->machine->global_entry_emitted = true;
+ 	  /* As ELFv2 ABI shows, the allowable bytes between the global
+ 	     and local entry points are 0, 4, 8, 16, 32 and 64 when
+ 	     there is a local entry point.  Considering there are two
+ 	     non-prefixed instructions for global entry point prologue
+ 	     (8 bytes), the count for patchable nops before local entry
+ 	     point would be 2, 6 and 14.  It's possible to support those
+ 	     other counts of nops by not making a local entry point, but
+ 	     we don't have clear use cases for them, so leave them
+ 	     unsupported for now.  */
+ 	  if (patch_area_entry > 0)
+ 	    {
+ 	      if (patch_area_entry != 2
+ 		  && patch_area_entry != 6
+ 		  && patch_area_entry != 14)
+ 		error ("unsupported number of nops before function entry (%u)",
+ 		       patch_area_entry);
+ 	      rs6000_print_patchable_function_entry (file, patch_area_entry,
+ 						     true);
+ 	      patch_area_size -= patch_area_entry;
+ 	    }
+ 	}
+ 
        fputs ("\t.localentry\t", file);
        assemble_name (file, name);
        fputs (",.-", file);
        assemble_name (file, name);
        fputs ("\n", file);
+       /* Emit the nops after local entry.  */
+       if (patch_area_size > 0)
+ 	rs6000_print_patchable_function_entry (file, patch_area_size,
+ 					       patch_area_entry == 0);
      }
  
    else if (rs6000_pcrel_p ())
*************** rs6000_emit_epilogue (enum epilogue_type
*** 4924,4930 ****
  	 a REG_CFA_DEF_CFA note, but that's OK;  A duplicate is
  	 discarded by dwarf2cfi.cc/dwarf2out.cc, and in any case would
  	 be harmless if emitted.  */
!       if (frame_pointer_needed)
  	{
  	  insn = get_last_insn ();
  	  add_reg_note (insn, REG_CFA_DEF_CFA,
--- 4952,4958 ----
  	 a REG_CFA_DEF_CFA note, but that's OK;  A duplicate is
  	 discarded by dwarf2cfi.cc/dwarf2out.cc, and in any case would
  	 be harmless if emitted.  */
!       if (frame_pointer_needed_indeed)
  	{
  	  insn = get_last_insn ();
  	  add_reg_note (insn, REG_CFA_DEF_CFA,
*************** macho_branch_islands (void)
*** 5144,5153 ****
  	}
        strcpy (tmp_buf, "\n");
        strcat (tmp_buf, label);
- #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
-       if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
- 	dbxout_stabd (N_SLINE, bi->line_number);
- #endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
        if (flag_pic)
  	{
  	  strcat (tmp_buf, ":\n\tmflr r0\n\tbcl 20,31,");
--- 5172,5177 ----
*************** macho_branch_islands (void)
*** 5181,5190 ****
  	  strcat (tmp_buf, ")\n\tmtctr r12\n\tbctr");
  	}
        output_asm_insn (tmp_buf, 0);
- #if defined (DBX_DEBUGGING_INFO) || defined (XCOFF_DEBUGGING_INFO)
-       if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
- 	dbxout_stabd (N_SLINE, bi->line_number);
- #endif /* DBX_DEBUGGING_INFO || XCOFF_DEBUGGING_INFO */
        branch_islands->pop ();
      }
  }
--- 5205,5210 ----
*************** rs6000_output_function_epilogue (FILE *f
*** 5330,5335 ****
--- 5350,5356 ----
  	  || ! strcmp (language_string, "GNU GIMPLE")
  	  || ! strcmp (language_string, "GNU Go")
  	  || ! strcmp (language_string, "GNU D")
+ 	  || ! strcmp (language_string, "GNU Rust")
  	  || ! strcmp (language_string, "libgccjit"))
  	i = 0;
        else if (! strcmp (language_string, "GNU F77")
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-modes.def gcc-13.1.0/gcc/config/rs6000/rs6000-modes.def
*** gcc-12.2.0/gcc/config/rs6000/rs6000-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-modes.h gcc-13.1.0/gcc/config/rs6000/rs6000-modes.h
*** gcc-12.2.0/gcc/config/rs6000/rs6000-modes.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-modes.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions 128-bit floating point precisions used by PowerPC.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@linux.ibm.com)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions 128-bit floating point precisions used by PowerPC.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@linux.ibm.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-opts.h gcc-13.1.0/gcc/config/rs6000/rs6000-opts.h
*** gcc-12.2.0/gcc/config/rs6000/rs6000-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine needed for option handling for GNU compiler,
     for IBM RS/6000.
!    Copyright (C) 2010-2022 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  
     This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine needed for option handling for GNU compiler,
     for IBM RS/6000.
!    Copyright (C) 2010-2023 Free Software Foundation, Inc.
     Contributed by Michael Meissner (meissner@linux.vnet.ibm.com)
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-overload.def gcc-13.1.0/gcc/config/rs6000/rs6000-overload.def
*** gcc-12.2.0/gcc/config/rs6000/rs6000-overload.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-overload.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Overloaded built-in functions for PowerPC.
! ; Copyright (C) 2020-2022 Free Software Foundation, Inc.
  ; Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Overloaded built-in functions for PowerPC.
! ; Copyright (C) 2020-2023 Free Software Foundation, Inc.
  ; Contributed by Bill Schmidt, IBM <wschmidt@linux.ibm.com>
  ;
  ; This file is part of GCC.
***************
*** 5930,5936 ****
    unsigned int __builtin_vec_scalar_test_data_class_sp (float, const int);
      VSTDCSP  VSTDCSP_DEPR1
  
! [VEC_VSUBCUQ, vec_vsubcuqP, __builtin_vec_vsubcuq]
    vsq __builtin_vec_vsubcuq (vsq, vsq);
      VSUBCUQ  VSUBCUQ_DEPR1
    vuq __builtin_vec_vsubcuq (vuq, vuq);
--- 5930,5936 ----
    unsigned int __builtin_vec_scalar_test_data_class_sp (float, const int);
      VSTDCSP  VSTDCSP_DEPR1
  
! [VEC_VSUBCUQ, vec_vsubcuq, __builtin_vec_vsubcuq]
    vsq __builtin_vec_vsubcuq (vsq, vsq);
      VSUBCUQ  VSUBCUQ_DEPR1
    vuq __builtin_vec_vsubcuq (vuq, vuq);
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-p8swap.cc gcc-13.1.0/gcc/config/rs6000/rs6000-p8swap.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-p8swap.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-p8swap.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Subroutines used to remove unnecessary doubleword swaps
     for p8 little-endian VSX code.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Subroutines used to remove unnecessary doubleword swaps
     for p8 little-endian VSX code.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** union_defs (swap_web_entry *insn_entry,
*** 214,221 ****
        if (DF_REF_INSN_INFO (link->ref))
  	{
  	  rtx def_insn = DF_REF_INSN (link->ref);
! 	  (void)unionfind_union (insn_entry + INSN_UID (insn),
! 				 insn_entry + INSN_UID (def_insn));
  	}
  
        link = link->next;
--- 214,222 ----
        if (DF_REF_INSN_INFO (link->ref))
  	{
  	  rtx def_insn = DF_REF_INSN (link->ref);
! 	  gcc_assert (NONDEBUG_INSN_P (def_insn));
! 	  unionfind_union (insn_entry + INSN_UID (insn),
! 			   insn_entry + INSN_UID (def_insn));
  	}
  
        link = link->next;
*************** union_uses (swap_web_entry *insn_entry,
*** 242,249 ****
        if (DF_REF_INSN_INFO (link->ref))
  	{
  	  rtx use_insn = DF_REF_INSN (link->ref);
! 	  (void)unionfind_union (insn_entry + INSN_UID (insn),
! 				 insn_entry + INSN_UID (use_insn));
  	}
  
        link = link->next;
--- 243,251 ----
        if (DF_REF_INSN_INFO (link->ref))
  	{
  	  rtx use_insn = DF_REF_INSN (link->ref);
! 	  if (NONDEBUG_INSN_P (use_insn))
! 	    unionfind_union (insn_entry + INSN_UID (insn),
! 			     insn_entry + INSN_UID (use_insn));
  	}
  
        link = link->next;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-passes.def gcc-13.1.0/gcc/config/rs6000/rs6000-passes.def
*** gcc-12.2.0/gcc/config/rs6000/rs6000-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for rs6000
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for rs6000
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-pcrel-opt.cc gcc-13.1.0/gcc/config/rs6000/rs6000-pcrel-opt.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-pcrel-opt.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-pcrel-opt.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used support the pc-relative linker optimization.
!    Copyright (C) 2020-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used support the pc-relative linker optimization.
!    Copyright (C) 2020-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-protos.h gcc-13.1.0/gcc/config/rs6000/rs6000-protos.h
*** gcc-12.2.0/gcc/config/rs6000/rs6000-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
*************** extern bool xxspltib_constant_p (rtx, ma
*** 35,40 ****
--- 35,43 ----
  extern int vspltis_shifted (rtx);
  extern HOST_WIDE_INT const_vector_elt_as_int (rtx, unsigned int);
  extern bool macho_lo_sum_memory_operand (rtx, machine_mode);
+ extern bool can_be_rotated_to_lowbits (unsigned HOST_WIDE_INT, int, int *);
+ extern bool can_be_rotated_to_positive_16bits (HOST_WIDE_INT);
+ extern bool can_be_rotated_to_negative_15bits (HOST_WIDE_INT);
  extern int num_insns_constant (rtx, machine_mode);
  extern int small_data_operand (rtx, machine_mode);
  extern bool mem_operand_gpr (rtx, machine_mode);
*************** extern int rs6000_trampoline_size (void)
*** 291,297 ****
  extern alias_set_type get_TOC_alias_set (void);
  extern void rs6000_emit_prologue (void);
  extern void rs6000_emit_load_toc_table (int);
! extern unsigned int rs6000_dbx_register_number (unsigned int, unsigned int);
  extern void rs6000_emit_epilogue (enum epilogue_type);
  extern void rs6000_expand_split_stack_prologue (void);
  extern void rs6000_split_stack_space_check (rtx, rtx);
--- 294,300 ----
  extern alias_set_type get_TOC_alias_set (void);
  extern void rs6000_emit_prologue (void);
  extern void rs6000_emit_load_toc_table (int);
! extern unsigned int rs6000_debugger_regno (unsigned int, unsigned int);
  extern void rs6000_emit_epilogue (enum epilogue_type);
  extern void rs6000_expand_split_stack_prologue (void);
  extern void rs6000_split_stack_space_check (rtx, rtx);
*************** extern void rs6000_cpu_cpp_builtins (str
*** 320,332 ****
  extern bool rs6000_pragma_target_parse (tree, tree);
  #endif
  extern void rs6000_activate_target_options (tree new_tree);
! extern void rs6000_target_modify_macros (bool, HOST_WIDE_INT, HOST_WIDE_INT);
! extern void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT,
! 						HOST_WIDE_INT);
! 
! /* Declare functions in rs6000-d.cc  */
! extern void rs6000_d_target_versions (void);
! extern void rs6000_d_register_target_info (void);
  
  #ifdef NO_DOLLAR_IN_LABEL
  const char * rs6000_xcoff_strip_dollar (const char *);
--- 323,330 ----
  extern bool rs6000_pragma_target_parse (tree, tree);
  #endif
  extern void rs6000_activate_target_options (tree new_tree);
! extern void rs6000_target_modify_macros (bool, HOST_WIDE_INT);
! extern void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT);
  
  #ifdef NO_DOLLAR_IN_LABEL
  const char * rs6000_xcoff_strip_dollar (const char *);
*************** extern rtx rs6000_gen_lvx (enum machine_
*** 349,352 ****
--- 347,352 ----
  extern rtx rs6000_gen_stvx (enum machine_mode, rtx, rtx);
  
  extern void rs6000_emit_xxspltidp_v2df (rtx, long value);
+ extern gimple *currently_expanding_gimple_stmt;
+ extern bool rs6000_opaque_type_invalid_use_p (gimple *);
  #endif  /* rs6000-protos.h */
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-string.cc gcc-13.1.0/gcc/config/rs6000/rs6000-string.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000-string.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-string.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Subroutines used to expand string and block move, clear,
     compare and other operations for PowerPC.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,6 ----
  /* Subroutines used to expand string and block move, clear,
     compare and other operations for PowerPC.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
*************** static void
*** 414,422 ****
  do_isel (rtx dest, rtx cmp, rtx src_t, rtx src_f, rtx cr)
  {
    if (GET_MODE (dest) == DImode)
!     emit_insn (gen_isel_signed_di (dest, cmp, src_t, src_f, cr));
    else
!     emit_insn (gen_isel_signed_si (dest, cmp, src_t, src_f, cr));
  }
  
  /* Emit a subtract of the proper mode for DEST.
--- 414,422 ----
  do_isel (rtx dest, rtx cmp, rtx src_t, rtx src_f, rtx cr)
  {
    if (GET_MODE (dest) == DImode)
!     emit_insn (gen_isel_cc_di (dest, cmp, src_t, src_f, cr));
    else
!     emit_insn (gen_isel_cc_si (dest, cmp, src_t, src_f, cr));
  }
  
  /* Emit a subtract of the proper mode for DEST.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000-tables.opt gcc-13.1.0/gcc/config/rs6000/rs6000-tables.opt
*** gcc-12.2.0/gcc/config/rs6000/rs6000-tables.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000-tables.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from rs6000-cpus.def.
  
! ; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,7 ----
  ; -*- buffer-read-only: t -*-
  ; Generated automatically by genopt.sh from rs6000-cpus.def.
  
! ; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000.cc gcc-13.1.0/gcc/config/rs6000/rs6000.cc
*** gcc-12.2.0/gcc/config/rs6000/rs6000.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Subroutines used for code generation on IBM RS/6000.
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,6 ----
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Subroutines used for code generation on IBM RS/6000.
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
***************
*** 58,65 ****
  #include "reload.h"
  #include "sched-int.h"
  #include "gimplify.h"
- #include "gimple-fold.h"
  #include "gimple-iterator.h"
  #include "gimple-walk.h"
  #include "ssa.h"
  #include "tree-vectorizer.h"
--- 58,65 ----
  #include "reload.h"
  #include "sched-int.h"
  #include "gimplify.h"
  #include "gimple-iterator.h"
+ #include "gimple-fold.h"
  #include "gimple-walk.h"
  #include "ssa.h"
  #include "tree-vectorizer.h"
***************
*** 75,83 ****
  #include "ipa-prop.h"
  #include "ipa-fnsummary.h"
  #include "except.h"
- #if TARGET_XCOFF
- #include "xcoffout.h"  /* get declarations of xcoff_*_section_name */
- #endif
  #include "case-cfn-macros.h"
  #include "ppc-auxv.h"
  #include "rs6000-internal.h"
--- 75,80 ----
*************** bool cpu_builtin_p = false;
*** 278,284 ****
  /* Pointer to function (in rs6000-c.cc) that can define or undefine target
     macros that have changed.  Languages that don't support the preprocessor
     don't link in rs6000-c.cc, so we can't call it directly.  */
! void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT, HOST_WIDE_INT);
  
  /* Simplfy register classes into simpler classifications.  We assume
     GPR_REG_TYPE - FPR_REG_TYPE are ordered so that we can use a simple range
--- 275,281 ----
  /* Pointer to function (in rs6000-c.cc) that can define or undefine target
     macros that have changed.  Languages that don't support the preprocessor
     don't link in rs6000-c.cc, so we can't call it directly.  */
! void (*rs6000_target_modify_macros_ptr) (bool, HOST_WIDE_INT);
  
  /* Simplfy register classes into simpler classifications.  We assume
     GPR_REG_TYPE - FPR_REG_TYPE are ordered so that we can use a simple range
*************** const int INSN_NOT_AVAILABLE = -1;
*** 1171,1178 ****
  
  static void rs6000_print_isa_options (FILE *, int, const char *,
  				      HOST_WIDE_INT);
- static void rs6000_print_builtin_options (FILE *, int, const char *,
- 					  HOST_WIDE_INT);
  static HOST_WIDE_INT rs6000_disable_incompatible_switches (void);
  
  static enum rs6000_reg_type register_to_reg_type (rtx, bool *);
--- 1168,1173 ----
*************** rs6000_debug_reg_global (void)
*** 2305,2311 ****
    fprintf (stderr,
  	   "\n"
  	   "d  reg_class = %s\n"
- 	   "f  reg_class = %s\n"
  	   "v  reg_class = %s\n"
  	   "wa reg_class = %s\n"
  	   "we reg_class = %s\n"
--- 2300,2305 ----
*************** rs6000_debug_reg_global (void)
*** 2314,2320 ****
  	   "wA reg_class = %s\n"
  	   "\n",
  	   reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_d]],
- 	   reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_f]],
  	   reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_v]],
  	   reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_wa]],
  	   reg_class_names[rs6000_constraints[RS6000_CONSTRAINT_we]],
--- 2308,2313 ----
*************** rs6000_debug_reg_global (void)
*** 2409,2417 ****
    rs6000_print_isa_options (stderr, 0, "rs6000_isa_flags_explicit",
  			    rs6000_isa_flags_explicit);
  
-   rs6000_print_builtin_options (stderr, 0, "rs6000_builtin_mask",
- 				rs6000_builtin_mask);
- 
    rs6000_print_isa_options (stderr, 0, "TARGET_DEFAULT", TARGET_DEFAULT);
  
    fprintf (stderr, DEBUG_FMT_S, "--with-cpu default",
--- 2402,2407 ----
*************** rs6000_init_hard_regno_mode_ok (bool glo
*** 2953,2959 ****
       constraints are:
  
  	d  - Register class to use with traditional DFmode instructions.
- 	f  - Register class to use with traditional SFmode instructions.
  	v  - Altivec register.
  	wa - Any VSX register.
  	wc - Reserved to represent individual CR bits (used in LLVM).
--- 2943,2948 ----
*************** rs6000_init_hard_regno_mode_ok (bool glo
*** 2962,2979 ****
  	wx - Float register if we can do 32-bit int stores.  */
  
    if (TARGET_HARD_FLOAT)
!     {
!       rs6000_constraints[RS6000_CONSTRAINT_f] = FLOAT_REGS;	/* SFmode  */
!       rs6000_constraints[RS6000_CONSTRAINT_d] = FLOAT_REGS;	/* DFmode  */
!     }
! 
!   if (TARGET_VSX)
!     rs6000_constraints[RS6000_CONSTRAINT_wa] = VSX_REGS;
! 
!   /* Add conditional constraints based on various options, to allow us to
!      collapse multiple insn patterns.  */
    if (TARGET_ALTIVEC)
      rs6000_constraints[RS6000_CONSTRAINT_v] = ALTIVEC_REGS;
  
    if (TARGET_POWERPC64)
      {
--- 2951,2961 ----
  	wx - Float register if we can do 32-bit int stores.  */
  
    if (TARGET_HARD_FLOAT)
!     rs6000_constraints[RS6000_CONSTRAINT_d] = FLOAT_REGS;
    if (TARGET_ALTIVEC)
      rs6000_constraints[RS6000_CONSTRAINT_v] = ALTIVEC_REGS;
+   if (TARGET_VSX)
+     rs6000_constraints[RS6000_CONSTRAINT_wa] = VSX_REGS;
  
    if (TARGET_POWERPC64)
      {
*************** darwin_rs6000_override_options (void)
*** 3382,3422 ****
  #define RS6000_DEFAULT_LONG_DOUBLE_SIZE 64
  #endif
  
- /* Return the builtin mask of the various options used that could affect which
-    builtins were used.  In the past we used target_flags, but we've run out of
-    bits, and some options are no longer in target_flags.  */
- 
- HOST_WIDE_INT
- rs6000_builtin_mask_calculate (void)
- {
-   return (((TARGET_ALTIVEC)		    ? RS6000_BTM_ALTIVEC   : 0)
- 	  | ((TARGET_CMPB)		    ? RS6000_BTM_CMPB	   : 0)
- 	  | ((TARGET_VSX)		    ? RS6000_BTM_VSX	   : 0)
- 	  | ((TARGET_FRE)		    ? RS6000_BTM_FRE	   : 0)
- 	  | ((TARGET_FRES)		    ? RS6000_BTM_FRES	   : 0)
- 	  | ((TARGET_FRSQRTE)		    ? RS6000_BTM_FRSQRTE   : 0)
- 	  | ((TARGET_FRSQRTES)		    ? RS6000_BTM_FRSQRTES  : 0)
- 	  | ((TARGET_POPCNTD)		    ? RS6000_BTM_POPCNTD   : 0)
- 	  | ((rs6000_cpu == PROCESSOR_CELL) ? RS6000_BTM_CELL      : 0)
- 	  | ((TARGET_P8_VECTOR)		    ? RS6000_BTM_P8_VECTOR : 0)
- 	  | ((TARGET_P9_VECTOR)		    ? RS6000_BTM_P9_VECTOR : 0)
- 	  | ((TARGET_P9_MISC)		    ? RS6000_BTM_P9_MISC   : 0)
- 	  | ((TARGET_MODULO)		    ? RS6000_BTM_MODULO    : 0)
- 	  | ((TARGET_64BIT)		    ? RS6000_BTM_64BIT     : 0)
- 	  | ((TARGET_POWERPC64)		    ? RS6000_BTM_POWERPC64 : 0)
- 	  | ((TARGET_CRYPTO)		    ? RS6000_BTM_CRYPTO	   : 0)
- 	  | ((TARGET_HTM)		    ? RS6000_BTM_HTM	   : 0)
- 	  | ((TARGET_DFP)		    ? RS6000_BTM_DFP	   : 0)
- 	  | ((TARGET_HARD_FLOAT)	    ? RS6000_BTM_HARD_FLOAT : 0)
- 	  | ((TARGET_LONG_DOUBLE_128
- 	      && TARGET_HARD_FLOAT
- 	      && !TARGET_IEEEQUAD)	    ? RS6000_BTM_LDBL128   : 0)
- 	  | ((TARGET_FLOAT128_TYPE)	    ? RS6000_BTM_FLOAT128  : 0)
- 	  | ((TARGET_FLOAT128_HW)	    ? RS6000_BTM_FLOAT128_HW : 0)
- 	  | ((TARGET_MMA)		    ? RS6000_BTM_MMA	   : 0)
- 	  | ((TARGET_POWER10)               ? RS6000_BTM_P10       : 0));
- }
- 
  /* Implement TARGET_MD_ASM_ADJUST.  All asm statements are considered
     to clobber the XER[CA] bit because clobbering that bit without telling
     the compiler worked just fine with versions of GCC before GCC 5, and
--- 3364,3369 ----
*************** glibc_supports_ieee_128bit (void)
*** 3628,3638 ****
       generally defined to test the corresponding bit of the
       rs6000_isa_flags variable.
  
-      The variable rs6000_builtin_mask is set to represent the target
-      options for the most current compilation efforts, consistent with
-      the current contents of rs6000_isa_flags.  This variable controls
-      expansion of built-in functions.
- 
       Various other global variables and fields of global structures
       (over 50 in all) are initialized to reflect the desired options
       for the most current compilation efforts.  */
--- 3575,3580 ----
*************** rs6000_option_override_internal (bool gl
*** 3703,3719 ****
        rs6000_pointer_size = 32;
      }
  
!   /* Some OSs don't support saving the high part of 64-bit registers on context
!      switch.  Other OSs don't support saving Altivec registers.  On those OSs,
!      we don't touch the OPTION_MASK_POWERPC64 or OPTION_MASK_ALTIVEC settings;
!      if the user wants either, the user must explicitly specify them and we
!      won't interfere with the user's specification.  */
  
    set_masks = POWERPC_MASKS;
- #ifdef OS_MISSING_POWERPC64
-   if (OS_MISSING_POWERPC64)
-     set_masks &= ~OPTION_MASK_POWERPC64;
- #endif
  #ifdef OS_MISSING_ALTIVEC
    if (OS_MISSING_ALTIVEC)
      set_masks &= ~(OPTION_MASK_ALTIVEC | OPTION_MASK_VSX
--- 3645,3656 ----
        rs6000_pointer_size = 32;
      }
  
!   /* Some OSs don't support saving Altivec registers.  On those OSs, we don't
!      touch the OPTION_MASK_ALTIVEC settings; if the user wants it, the user
!      must explicitly specify it and we won't interfere with the user's
!      specification.  */
  
    set_masks = POWERPC_MASKS;
  #ifdef OS_MISSING_ALTIVEC
    if (OS_MISSING_ALTIVEC)
      set_masks &= ~(OPTION_MASK_ALTIVEC | OPTION_MASK_VSX
*************** rs6000_option_override_internal (bool gl
*** 3723,3728 ****
--- 3660,3680 ----
    /* Don't override by the processor default if given explicitly.  */
    set_masks &= ~rs6000_isa_flags_explicit;
  
+   /* Without option powerpc64 specified explicitly, we need to ensure
+      powerpc64 always enabled for 64 bit here, otherwise some following
+      checks can use unexpected TARGET_POWERPC64 value.  */
+   if (!(rs6000_isa_flags_explicit & OPTION_MASK_POWERPC64)
+       && TARGET_64BIT)
+     {
+       rs6000_isa_flags |= OPTION_MASK_POWERPC64;
+       /* Need to stop powerpc64 from being unset in later processing,
+ 	 so clear it in set_masks.  But as PR108240 shows, to keep it
+ 	 consistent with before, we want to make this only if 64 bit
+ 	 is enabled explicitly.  This is a hack, revisit this later.  */
+       if (rs6000_isa_flags_explicit & OPTION_MASK_64BIT)
+ 	set_masks &= ~OPTION_MASK_POWERPC64;
+     }
+ 
    /* Process the -mcpu=<xxx> and -mtune=<xxx> argument.  If the user changed
       the cpu in a target attribute or pragma, but did not specify a tuning
       option, use the cpu for the tuning option rather than the option specified
*************** rs6000_option_override_internal (bool gl
*** 3773,3778 ****
--- 3725,3742 ----
        rs6000_isa_flags |= (flags & ~rs6000_isa_flags_explicit);
      }
  
+   /* Don't expect powerpc64 enabled on those OSes with OS_MISSING_POWERPC64,
+      since they do not save and restore the high half of the GPRs correctly
+      in all cases.  If the user explicitly specifies it, we won't interfere
+      with the user's specification.  */
+ #ifdef OS_MISSING_POWERPC64
+   if (OS_MISSING_POWERPC64
+       && TARGET_32BIT
+       && TARGET_POWERPC64
+       && !(rs6000_isa_flags_explicit & OPTION_MASK_POWERPC64))
+     rs6000_isa_flags &= ~OPTION_MASK_POWERPC64;
+ #endif
+ 
    if (rs6000_tune_index >= 0)
      tune_index = rs6000_tune_index;
    else if (cpu_index >= 0)
*************** rs6000_option_override_internal (bool gl
*** 4427,4436 ****
    if (TARGET_POWER10 && (rs6000_isa_flags_explicit & OPTION_MASK_MMA) == 0)
      rs6000_isa_flags |= OPTION_MASK_MMA;
  
-   if (TARGET_POWER10
-       && (rs6000_isa_flags_explicit & OPTION_MASK_P10_FUSION) == 0)
-     rs6000_isa_flags |= OPTION_MASK_P10_FUSION;
- 
    /* Turn off vector pair/mma options on non-power10 systems.  */
    else if (!TARGET_POWER10 && TARGET_MMA)
      {
--- 4391,4396 ----
*************** rs6000_option_override_internal (bool gl
*** 4440,4445 ****
--- 4400,4415 ----
        rs6000_isa_flags &= ~OPTION_MASK_MMA;
      }
  
+   /* Enable power10 fusion if we are tuning for power10, even if we aren't
+      generating power10 instructions.  */
+   if (!(rs6000_isa_flags_explicit & OPTION_MASK_P10_FUSION))
+     {
+       if (rs6000_tune == PROCESSOR_POWER10)
+ 	rs6000_isa_flags |= OPTION_MASK_P10_FUSION;
+       else
+ 	rs6000_isa_flags &= ~OPTION_MASK_P10_FUSION;
+     }
+ 
    /* MMA requires SIMD support as ISA 3.1 claims and our implementation
       such as "*movoo" uses vector pair access which use VSX registers.
       So make MMA require VSX support here.  */
*************** rs6000_option_override_internal (bool gl
*** 4889,4902 ****
  	}
      }
  
-   /* Set the builtin mask of the various options used that could affect which
-      builtins were used.  In the past we used target_flags, but we've run out
-      of bits, and some options are no longer in target_flags.  */
-   rs6000_builtin_mask = rs6000_builtin_mask_calculate ();
-   if (TARGET_DEBUG_BUILTIN || TARGET_DEBUG_TARGET)
-     rs6000_print_builtin_options (stderr, 0, "builtin mask",
- 				  rs6000_builtin_mask);
- 
    /* Initialize all of the registers.  */
    rs6000_init_hard_regno_mode_ok (global_init_p);
  
--- 4859,4864 ----
*************** protected:
*** 5207,5222 ****
--- 5169,5191 ----
  				    vect_cost_model_location, unsigned int);
    void density_test (loop_vec_info);
    void adjust_vect_cost_per_loop (loop_vec_info);
+   unsigned int determine_suggested_unroll_factor (loop_vec_info);
  
    /* Total number of vectorized stmts (loop only).  */
    unsigned m_nstmts = 0;
    /* Total number of loads (loop only).  */
    unsigned m_nloads = 0;
+   /* Total number of stores (loop only).  */
+   unsigned m_nstores = 0;
+   /* Reduction factor for suggesting unroll factor (loop only).  */
+   unsigned m_reduc_factor = 0;
    /* Possible extra penalized cost on vector construction (loop only).  */
    unsigned m_extra_ctor_cost = 0;
    /* For each vectorized loop, this var holds TRUE iff a non-memory vector
       instruction is needed by the vectorization.  */
    bool m_vect_nonmem = false;
+   /* If this loop gets vectorized with emulated gather load.  */
+   bool m_gather_load = false;
  };
  
  /* Test for likely overcommitment of vector hardware resources.  If a
*************** rs6000_cost_data::update_target_cost_per
*** 5367,5375 ****
      {
        m_nstmts += orig_count;
  
!       if (kind == scalar_load || kind == vector_load
! 	  || kind == unaligned_load || kind == vector_gather_load)
! 	m_nloads += orig_count;
  
        /* Power processors do not currently have instructions for strided
  	 and elementwise loads, and instead we must generate multiple
--- 5336,5369 ----
      {
        m_nstmts += orig_count;
  
!       if (kind == scalar_load
! 	  || kind == vector_load
! 	  || kind == unaligned_load
! 	  || kind == vector_gather_load)
! 	{
! 	  m_nloads += orig_count;
! 	  if (stmt_info && STMT_VINFO_GATHER_SCATTER_P (stmt_info))
! 	    m_gather_load = true;
! 	}
!       else if (kind == scalar_store
! 	       || kind == vector_store
! 	       || kind == unaligned_store
! 	       || kind == vector_scatter_store)
! 	m_nstores += orig_count;
!       else if ((kind == scalar_stmt
! 		|| kind == vector_stmt
! 		|| kind == vec_to_scalar)
! 	       && stmt_info
! 	       && vect_is_reduction (stmt_info))
! 	{
! 	  /* Loop body contains normal int or fp operations and epilogue
! 	     contains vector reduction.  For simplicity, we assume int
! 	     operation takes one cycle and fp operation takes one more.  */
! 	  tree lhs = gimple_get_lhs (stmt_info->stmt);
! 	  bool is_float = FLOAT_TYPE_P (TREE_TYPE (lhs));
! 	  unsigned int basic_cost = is_float ? 2 : 1;
! 	  m_reduc_factor = MAX (basic_cost * orig_count, m_reduc_factor);
! 	}
  
        /* Power processors do not currently have instructions for strided
  	 and elementwise loads, and instead we must generate multiple
*************** rs6000_cost_data::adjust_vect_cost_per_l
*** 5461,5466 ****
--- 5455,5544 ----
      }
  }
  
+ /* Determine suggested unroll factor by considering some below factors:
+ 
+     - unroll option/pragma which can disable unrolling for this loop;
+     - simple hardware resource model for non memory vector insns;
+     - aggressive heuristics when iteration count is unknown:
+       - reduction case to break cross iteration dependency;
+       - emulated gather load;
+     - estimated iteration count when iteration count is unknown;
+ */
+ 
+ 
+ unsigned int
+ rs6000_cost_data::determine_suggested_unroll_factor (loop_vec_info loop_vinfo)
+ {
+   class loop *loop = LOOP_VINFO_LOOP (loop_vinfo);
+ 
+   /* Don't unroll if it's specified explicitly not to be unrolled.  */
+   if (loop->unroll == 1
+       || (OPTION_SET_P (flag_unroll_loops) && !flag_unroll_loops)
+       || (OPTION_SET_P (flag_unroll_all_loops) && !flag_unroll_all_loops))
+     return 1;
+ 
+   unsigned int nstmts_nonldst = m_nstmts - m_nloads - m_nstores;
+   /* Don't unroll if no vector instructions excepting for memory access.  */
+   if (nstmts_nonldst == 0)
+     return 1;
+ 
+   /* Consider breaking cross iteration dependency for reduction.  */
+   unsigned int reduc_factor = m_reduc_factor > 1 ? m_reduc_factor : 1;
+ 
+   /* Use this simple hardware resource model that how many non ld/st
+      vector instructions can be issued per cycle.  */
+   unsigned int issue_width = rs6000_vect_unroll_issue;
+   unsigned int uf = CEIL (reduc_factor * issue_width, nstmts_nonldst);
+   uf = MIN ((unsigned int) rs6000_vect_unroll_limit, uf);
+   /* Make sure it is power of 2.  */
+   uf = 1 << ceil_log2 (uf);
+ 
+   /* If the iteration count is known, the costing would be exact enough,
+      don't worry it could be worse.  */
+   if (LOOP_VINFO_NITERS_KNOWN_P (loop_vinfo))
+     return uf;
+ 
+   /* Inspired by SPEC2017 parest_r, we want to aggressively unroll the
+      loop if either condition is satisfied:
+        - reduction factor exceeds the threshold;
+        - emulated gather load adopted.  */
+   if (reduc_factor > (unsigned int) rs6000_vect_unroll_reduc_threshold
+       || m_gather_load)
+     return uf;
+ 
+   /* Check if we can conclude it's good to unroll from the estimated
+      iteration count.  */
+   HOST_WIDE_INT est_niter = get_estimated_loop_iterations_int (loop);
+   unsigned int vf = vect_vf_for_cost (loop_vinfo);
+   unsigned int unrolled_vf = vf * uf;
+   if (est_niter == -1 || est_niter < unrolled_vf)
+     /* When the estimated iteration of this loop is unknown, it's possible
+        that we are able to vectorize this loop with the original VF but fail
+        to vectorize it with the unrolled VF any more if the actual iteration
+        count is in between.  */
+     return 1;
+   else
+     {
+       unsigned int epil_niter_unr = est_niter % unrolled_vf;
+       unsigned int epil_niter = est_niter % vf;
+       /* Even if we have partial vector support, it can be still inefficent
+ 	 to calculate the length when the iteration count is unknown, so
+ 	 only expect it's good to unroll when the epilogue iteration count
+ 	 is not bigger than VF (only one time length calculation).  */
+       if (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
+ 	  && epil_niter_unr <= vf)
+ 	return uf;
+       /* Without partial vector support, conservatively unroll this when
+ 	 the epilogue iteration count is less than the original one
+ 	 (epilogue execution time wouldn't be longer than before).  */
+       else if (!LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P (loop_vinfo)
+ 	       && epil_niter_unr <= epil_niter)
+ 	return uf;
+     }
+ 
+   return 1;
+ }
+ 
  void
  rs6000_cost_data::finish_cost (const vector_costs *scalar_costs)
  {
*************** rs6000_cost_data::finish_cost (const vec
*** 5477,5482 ****
--- 5555,5563 ----
  	  && LOOP_VINFO_VECT_FACTOR (loop_vinfo) == 2
  	  && LOOP_REQUIRES_VERSIONING (loop_vinfo))
  	m_costs[vect_body] += 10000;
+ 
+       m_suggested_unroll_factor
+ 	= determine_suggested_unroll_factor (loop_vinfo);
      }
  
    vector_costs::finish_cost (scalar_costs);
*************** num_insns_constant_gpr (HOST_WIDE_INT va
*** 5968,5974 ****
  
    else if (TARGET_POWERPC64)
      {
!       HOST_WIDE_INT low  = ((value & 0xffffffff) ^ 0x80000000) - 0x80000000;
        HOST_WIDE_INT high = value >> 31;
  
        if (high == 0 || high == -1)
--- 6049,6055 ----
  
    else if (TARGET_POWERPC64)
      {
!       HOST_WIDE_INT low = sext_hwi (value, 32);
        HOST_WIDE_INT high = value >> 31;
  
        if (high == 0 || high == -1)
*************** rs6000_expand_vector_set_var_p9 (rtx tar
*** 7156,7178 ****
    machine_mode idx_mode = GET_MODE (idx);
  
    machine_mode shift_mode;
!   rtx (*gen_ashl)(rtx, rtx, rtx);
!   rtx (*gen_lvsl)(rtx, rtx);
!   rtx (*gen_lvsr)(rtx, rtx);
  
    if (TARGET_POWERPC64)
      {
        shift_mode = DImode;
        gen_ashl = gen_ashldi3;
!       gen_lvsl = gen_altivec_lvsl_reg_di;
!       gen_lvsr = gen_altivec_lvsr_reg_di;
      }
    else
      {
        shift_mode = SImode;
        gen_ashl = gen_ashlsi3;
!       gen_lvsl = gen_altivec_lvsl_reg_si;
!       gen_lvsr = gen_altivec_lvsr_reg_si;
      }
    /* Generate the IDX for permute shift, width is the vector element size.
       idx = idx * width.  */
--- 7237,7265 ----
    machine_mode idx_mode = GET_MODE (idx);
  
    machine_mode shift_mode;
!   /* Gen function pointers for shifting left and generation of permutation
!      control vectors.  */
!   rtx (*gen_ashl) (rtx, rtx, rtx);
!   rtx (*gen_pcvr1) (rtx, rtx);
!   rtx (*gen_pcvr2) (rtx, rtx);
  
    if (TARGET_POWERPC64)
      {
        shift_mode = DImode;
        gen_ashl = gen_ashldi3;
!       gen_pcvr1 = BYTES_BIG_ENDIAN ? gen_altivec_lvsl_reg_di
! 				   : gen_altivec_lvsr_reg_di;
!       gen_pcvr2 = BYTES_BIG_ENDIAN ? gen_altivec_lvsr_reg_di
! 				   : gen_altivec_lvsl_reg_di;
      }
    else
      {
        shift_mode = SImode;
        gen_ashl = gen_ashlsi3;
!       gen_pcvr1 = BYTES_BIG_ENDIAN ? gen_altivec_lvsl_reg_si
! 				   : gen_altivec_lvsr_reg_si;
!       gen_pcvr2 = BYTES_BIG_ENDIAN ? gen_altivec_lvsr_reg_si
! 				   : gen_altivec_lvsl_reg_si;
      }
    /* Generate the IDX for permute shift, width is the vector element size.
       idx = idx * width.  */
*************** rs6000_expand_vector_set_var_p9 (rtx tar
*** 7181,7205 ****
  
    emit_insn (gen_ashl (tmp, idx, GEN_INT (shift)));
  
!   /*  lvsr    v1,0,idx.  */
!   rtx pcvr = gen_reg_rtx (V16QImode);
!   emit_insn (gen_lvsr (pcvr, tmp));
! 
!   /*  lvsl    v2,0,idx.  */
!   rtx pcvl = gen_reg_rtx (V16QImode);
!   emit_insn (gen_lvsl (pcvl, tmp));
  
    rtx sub_target = simplify_gen_subreg (V16QImode, target, mode, 0);
  
!   rtx permr
!     = gen_altivec_vperm_v8hiv16qi (sub_target, sub_target, sub_target, pcvr);
!   emit_insn (permr);
! 
    rs6000_expand_vector_set (target, val, const0_rtx);
  
!   rtx perml
!     = gen_altivec_vperm_v8hiv16qi (sub_target, sub_target, sub_target, pcvl);
!   emit_insn (perml);
  }
  
  /* Insert VAL into IDX of TARGET, VAL size is same of the vector element, IDX
--- 7268,7296 ----
  
    emit_insn (gen_ashl (tmp, idx, GEN_INT (shift)));
  
!   /* Generate one permutation control vector used for rotating the element
!      at to-insert position to element zero in target vector.  lvsl is
!      used for big endianness while lvsr is used for little endianness:
!      lvs[lr]    v1,0,idx.  */
!   rtx pcvr1 = gen_reg_rtx (V16QImode);
!   emit_insn (gen_pcvr1 (pcvr1, tmp));
  
    rtx sub_target = simplify_gen_subreg (V16QImode, target, mode, 0);
+   rtx perm1 = gen_altivec_vperm_v8hiv16qi (sub_target, sub_target, sub_target,
+ 					   pcvr1);
+   emit_insn (perm1);
  
!   /* Insert val into element 0 of target vector.  */
    rs6000_expand_vector_set (target, val, const0_rtx);
  
!   /* Rotate back with a reversed permutation control vector generated from:
!      lvs[rl]   v2,0,idx.  */
!   rtx pcvr2 = gen_reg_rtx (V16QImode);
!   emit_insn (gen_pcvr2 (pcvr2, tmp));
! 
!   rtx perm2 = gen_altivec_vperm_v8hiv16qi (sub_target, sub_target, sub_target,
! 					   pcvr2);
!   emit_insn (perm2);
  }
  
  /* Insert VAL into IDX of TARGET, VAL size is same of the vector element, IDX
*************** darwin_rs6000_legitimate_lo_sum_const_p
*** 8403,8409 ****
      }
  
    /* We only care if the access(es) would cause a change to the high part.  */
!   offset = ((offset & 0xffff) ^ 0x8000) - 0x8000;
    return SIGNED_16BIT_OFFSET_EXTRA_P (offset, extra);
  }
  
--- 8494,8500 ----
      }
  
    /* We only care if the access(es) would cause a change to the high part.  */
!   offset = sext_hwi (offset, 16);
    return SIGNED_16BIT_OFFSET_EXTRA_P (offset, extra);
  }
  
*************** mem_operand_gpr (rtx op, machine_mode mo
*** 8469,8475 ****
    if (GET_CODE (addr) == LO_SUM)
      /* For lo_sum addresses, we must allow any offset except one that
         causes a wrap, so test only the low 16 bits.  */
!     offset = ((offset & 0xffff) ^ 0x8000) - 0x8000;
  
    return SIGNED_16BIT_OFFSET_EXTRA_P (offset, extra);
  }
--- 8560,8566 ----
    if (GET_CODE (addr) == LO_SUM)
      /* For lo_sum addresses, we must allow any offset except one that
         causes a wrap, so test only the low 16 bits.  */
!     offset = sext_hwi (offset, 16);
  
    return SIGNED_16BIT_OFFSET_EXTRA_P (offset, extra);
  }
*************** mem_operand_ds_form (rtx op, machine_mod
*** 8509,8515 ****
    if (GET_CODE (addr) == LO_SUM)
      /* For lo_sum addresses, we must allow any offset except one that
         causes a wrap, so test only the low 16 bits.  */
!     offset = ((offset & 0xffff) ^ 0x8000) - 0x8000;
  
    return SIGNED_16BIT_OFFSET_EXTRA_P (offset, extra);
  }
--- 8600,8606 ----
    if (GET_CODE (addr) == LO_SUM)
      /* For lo_sum addresses, we must allow any offset except one that
         causes a wrap, so test only the low 16 bits.  */
!     offset = sext_hwi (offset, 16);
  
    return SIGNED_16BIT_OFFSET_EXTRA_P (offset, extra);
  }
*************** rs6000_legitimize_address (rtx x, rtx ol
*** 9083,9089 ****
      {
        HOST_WIDE_INT high_int, low_int;
        rtx sum;
!       low_int = ((INTVAL (XEXP (x, 1)) & 0xffff) ^ 0x8000) - 0x8000;
        if (low_int >= 0x8000 - extra)
  	low_int = 0;
        high_int = INTVAL (XEXP (x, 1)) - low_int;
--- 9174,9180 ----
      {
        HOST_WIDE_INT high_int, low_int;
        rtx sum;
!       low_int = sext_hwi (INTVAL (XEXP (x, 1)), 16);
        if (low_int >= 0x8000 - extra)
  	low_int = 0;
        high_int = INTVAL (XEXP (x, 1)) - low_int;
*************** rs6000_init_stack_protect_guard (void)
*** 9706,9713 ****
  static bool
  rs6000_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
!   if (GET_CODE (x) == HIGH
!       && GET_CODE (XEXP (x, 0)) == UNSPEC)
      return true;
  
    /* A TLS symbol in the TOC cannot contain a sum.  */
--- 9797,9807 ----
  static bool
  rs6000_cannot_force_const_mem (machine_mode mode ATTRIBUTE_UNUSED, rtx x)
  {
!   /* If GET_CODE (x) is HIGH, the 'X' represets the high part of a symbol_ref.
!      It can not be put into a constant pool.  e.g.
!      (high:DI (unspec:DI [(symbol_ref/u:DI ("*.LC0")..)
!      (high:DI (symbol_ref:DI ("var")..)).  */
!   if (GET_CODE (x) == HIGH)
      return true;
  
    /* A TLS symbol in the TOC cannot contain a sum.  */
*************** rs6000_emit_set_const (rtx dest, rtx sou
*** 10130,10139 ****
      case E_SImode:
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (SImode);
  
!       emit_insn (gen_rtx_SET (copy_rtx (temp),
! 			      GEN_INT (c & ~(HOST_WIDE_INT) 0xffff)));
        emit_insn (gen_rtx_SET (dest,
! 			      gen_rtx_IOR (SImode, copy_rtx (temp),
  					   GEN_INT (c & 0xffff))));
        break;
  
--- 10224,10232 ----
      case E_SImode:
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (SImode);
  
!       emit_insn (gen_rtx_SET (temp, GEN_INT (c & ~(HOST_WIDE_INT) 0xffff)));
        emit_insn (gen_rtx_SET (dest,
! 			      gen_rtx_IOR (SImode, temp,
  					   GEN_INT (c & 0xffff))));
        break;
  
*************** rs6000_emit_set_const (rtx dest, rtx sou
*** 10142,10153 ****
  	{
  	  rtx hi, lo;
  
! 	  hi = operand_subword_force (copy_rtx (dest), WORDS_BIG_ENDIAN == 0,
! 				      DImode);
! 	  lo = operand_subword_force (dest, WORDS_BIG_ENDIAN != 0,
! 				      DImode);
  	  emit_move_insn (hi, GEN_INT (c >> 32));
! 	  c = ((c & 0xffffffff) ^ 0x80000000) - 0x80000000;
  	  emit_move_insn (lo, GEN_INT (c));
  	}
        else
--- 10235,10244 ----
  	{
  	  rtx hi, lo;
  
! 	  hi = operand_subword_force (dest, WORDS_BIG_ENDIAN == 0, DImode);
! 	  lo = operand_subword_force (dest, WORDS_BIG_ENDIAN != 0, DImode);
  	  emit_move_insn (hi, GEN_INT (c >> 32));
! 	  c = sext_hwi (c, 32);
  	  emit_move_insn (lo, GEN_INT (c));
  	}
        else
*************** rs6000_emit_set_long_const (rtx dest, HO
*** 10186,10226 ****
  
    if ((ud4 == 0xffff && ud3 == 0xffff && ud2 == 0xffff && (ud1 & 0x8000))
        || (ud4 == 0 && ud3 == 0 && ud2 == 0 && ! (ud1 & 0x8000)))
!     emit_move_insn (dest, GEN_INT ((ud1 ^ 0x8000) - 0x8000));
  
    else if ((ud4 == 0xffff && ud3 == 0xffff && (ud2 & 0x8000))
  	   || (ud4 == 0 && ud3 == 0 && ! (ud2 & 0x8000)))
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
!       emit_move_insn (ud1 != 0 ? copy_rtx (temp) : dest,
! 		      GEN_INT (((ud2 << 16) ^ 0x80000000) - 0x80000000));
        if (ud1 != 0)
! 	emit_move_insn (dest,
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud1)));
      }
    else if (ud3 == 0 && ud4 == 0)
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
        gcc_assert (ud2 & 0x8000);
!       emit_move_insn (copy_rtx (temp),
! 		      GEN_INT (((ud2 << 16) ^ 0x80000000) - 0x80000000));
!       if (ud1 != 0)
! 	emit_move_insn (copy_rtx (temp),
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud1)));
!       emit_move_insn (dest,
! 		      gen_rtx_ZERO_EXTEND (DImode,
! 					   gen_lowpart (SImode,
! 							copy_rtx (temp))));
      }
    else if (ud1 == ud3 && ud2 == ud4)
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
        HOST_WIDE_INT num = (ud2 << 16) | ud1;
!       rs6000_emit_set_long_const (temp, (num ^ 0x80000000) - 0x80000000);
        rtx one = gen_rtx_AND (DImode, temp, GEN_INT (0xffffffff));
        rtx two = gen_rtx_ASHIFT (DImode, temp, GEN_INT (32));
        emit_move_insn (dest, gen_rtx_IOR (DImode, one, two));
--- 10277,10336 ----
  
    if ((ud4 == 0xffff && ud3 == 0xffff && ud2 == 0xffff && (ud1 & 0x8000))
        || (ud4 == 0 && ud3 == 0 && ud2 == 0 && ! (ud1 & 0x8000)))
!     emit_move_insn (dest, GEN_INT (sext_hwi (ud1, 16)));
  
    else if ((ud4 == 0xffff && ud3 == 0xffff && (ud2 & 0x8000))
  	   || (ud4 == 0 && ud3 == 0 && ! (ud2 & 0x8000)))
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
!       emit_move_insn (ud1 != 0 ? temp : dest,
! 		      GEN_INT (sext_hwi (ud2 << 16, 32)));
        if (ud1 != 0)
! 	emit_move_insn (dest, gen_rtx_IOR (DImode, temp, GEN_INT (ud1)));
!     }
!   else if (ud4 == 0xffff && ud3 == 0xffff && (ud1 & 0x8000))
!     {
!       /* li; xoris */
!       temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
!       emit_move_insn (temp, GEN_INT (sext_hwi (ud1, 16)));
!       emit_move_insn (dest, gen_rtx_XOR (DImode, temp,
! 					 GEN_INT ((ud2 ^ 0xffff) << 16)));
      }
    else if (ud3 == 0 && ud4 == 0)
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
        gcc_assert (ud2 & 0x8000);
! 
!       if (ud1 == 0)
! 	{
! 	  /* lis; rldicl */
! 	  emit_move_insn (temp, GEN_INT (sext_hwi (ud2 << 16, 32)));
! 	  emit_move_insn (dest,
! 			  gen_rtx_AND (DImode, temp, GEN_INT (0xffffffff)));
! 	}
!       else if (!(ud1 & 0x8000))
! 	{
! 	  /* li; oris */
! 	  emit_move_insn (temp, GEN_INT (ud1));
! 	  emit_move_insn (dest,
! 			  gen_rtx_IOR (DImode, temp, GEN_INT (ud2 << 16)));
! 	}
!       else
! 	{
! 	  /* lis; ori; rldicl */
! 	  emit_move_insn (temp, GEN_INT (sext_hwi (ud2 << 16, 32)));
! 	  emit_move_insn (temp, gen_rtx_IOR (DImode, temp, GEN_INT (ud1)));
! 	  emit_move_insn (dest,
! 			  gen_rtx_AND (DImode, temp, GEN_INT (0xffffffff)));
! 	}
      }
    else if (ud1 == ud3 && ud2 == ud4)
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
        HOST_WIDE_INT num = (ud2 << 16) | ud1;
!       rs6000_emit_set_long_const (temp, sext_hwi (num, 32));
        rtx one = gen_rtx_AND (DImode, temp, GEN_INT (0xffffffff));
        rtx two = gen_rtx_ASHIFT (DImode, temp, GEN_INT (32));
        emit_move_insn (dest, gen_rtx_IOR (DImode, one, two));
*************** rs6000_emit_set_long_const (rtx dest, HO
*** 10230,10271 ****
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
!       emit_move_insn (copy_rtx (temp),
! 		      GEN_INT (((ud3 << 16) ^ 0x80000000) - 0x80000000));
        if (ud2 != 0)
! 	emit_move_insn (copy_rtx (temp),
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud2)));
!       emit_move_insn (ud1 != 0 ? copy_rtx (temp) : dest,
! 		      gen_rtx_ASHIFT (DImode, copy_rtx (temp),
! 				      GEN_INT (16)));
        if (ud1 != 0)
! 	emit_move_insn (dest,
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud1)));
      }
    else
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
!       emit_move_insn (copy_rtx (temp),
! 		      GEN_INT (((ud4 << 16) ^ 0x80000000) - 0x80000000));
        if (ud3 != 0)
! 	emit_move_insn (copy_rtx (temp),
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud3)));
  
!       emit_move_insn (ud2 != 0 || ud1 != 0 ? copy_rtx (temp) : dest,
! 		      gen_rtx_ASHIFT (DImode, copy_rtx (temp),
! 				      GEN_INT (32)));
        if (ud2 != 0)
! 	emit_move_insn (ud1 != 0 ? copy_rtx (temp) : dest,
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud2 << 16)));
        if (ud1 != 0)
! 	emit_move_insn (dest,
! 			gen_rtx_IOR (DImode, copy_rtx (temp),
! 				     GEN_INT (ud1)));
      }
  }
  
--- 10340,10403 ----
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
!       emit_move_insn (temp, GEN_INT (sext_hwi (ud3 << 16, 32)));
        if (ud2 != 0)
! 	emit_move_insn (temp, gen_rtx_IOR (DImode, temp, GEN_INT (ud2)));
!       emit_move_insn (ud1 != 0 ? temp : dest,
! 		      gen_rtx_ASHIFT (DImode, temp, GEN_INT (16)));
        if (ud1 != 0)
! 	emit_move_insn (dest, gen_rtx_IOR (DImode, temp, GEN_INT (ud1)));
!     }
!   else if (TARGET_PREFIXED)
!     {
!       if (can_create_pseudo_p ())
! 	{
! 	  /* pli A,L + pli B,H + rldimi A,B,32,0.  */
! 	  temp = gen_reg_rtx (DImode);
! 	  rtx temp1 = gen_reg_rtx (DImode);
! 	  emit_move_insn (temp, GEN_INT ((ud4 << 16) | ud3));
! 	  emit_move_insn (temp1, GEN_INT ((ud2 << 16) | ud1));
! 
! 	  emit_insn (gen_rotldi3_insert_3 (dest, temp, GEN_INT (32), temp1,
! 					   GEN_INT (0xffffffff)));
! 	}
!       else
! 	{
! 	  /* pli A,H + sldi A,32 + paddi A,A,L.  */
! 	  emit_move_insn (dest, GEN_INT ((ud4 << 16) | ud3));
! 
! 	  emit_move_insn (dest, gen_rtx_ASHIFT (DImode, dest, GEN_INT (32)));
! 
! 	  bool can_use_paddi = REGNO (dest) != FIRST_GPR_REGNO;
! 
! 	  /* Use paddi for the low 32 bits.  */
! 	  if (ud2 != 0 && ud1 != 0 && can_use_paddi)
! 	    emit_move_insn (dest, gen_rtx_PLUS (DImode, dest,
! 						GEN_INT ((ud2 << 16) | ud1)));
! 
! 	  /* Use oris, ori for low 32 bits.  */
! 	  if (ud2 != 0 && (ud1 == 0 || !can_use_paddi))
! 	    emit_move_insn (dest,
! 			    gen_rtx_IOR (DImode, dest, GEN_INT (ud2 << 16)));
! 	  if (ud1 != 0 && (ud2 == 0 || !can_use_paddi))
! 	    emit_move_insn (dest, gen_rtx_IOR (DImode, dest, GEN_INT (ud1)));
! 	}
      }
    else
      {
        temp = !can_create_pseudo_p () ? dest : gen_reg_rtx (DImode);
  
!       emit_move_insn (temp, GEN_INT (sext_hwi (ud4 << 16, 32)));
        if (ud3 != 0)
! 	emit_move_insn (temp, gen_rtx_IOR (DImode, temp, GEN_INT (ud3)));
  
!       emit_move_insn (ud2 != 0 || ud1 != 0 ? temp : dest,
! 		      gen_rtx_ASHIFT (DImode, temp, GEN_INT (32)));
        if (ud2 != 0)
! 	emit_move_insn (ud1 != 0 ? temp : dest,
! 			gen_rtx_IOR (DImode, temp, GEN_INT (ud2 << 16)));
        if (ud1 != 0)
! 	emit_move_insn (dest, gen_rtx_IOR (DImode, temp, GEN_INT (ud1)));
      }
  }
  
*************** init_float128_ibm (machine_mode mode)
*** 11032,11057 ****
      }
  }
  
- /* Create a decl for either complex long double multiply or complex long double
-    divide when long double is IEEE 128-bit floating point.  We can't use
-    __multc3 and __divtc3 because the original long double using IBM extended
-    double used those names.  The complex multiply/divide functions are encoded
-    as builtin functions with a complex result and 4 scalar inputs.  */
- 
- static void
- create_complex_muldiv (const char *name, built_in_function fncode, tree fntype)
- {
-   tree fndecl = add_builtin_function (name, fntype, fncode, BUILT_IN_NORMAL,
- 				      name, NULL_TREE);
- 
-   set_builtin_decl (fncode, fndecl, true);
- 
-   if (TARGET_DEBUG_BUILTIN)
-     fprintf (stderr, "create complex %s, fncode: %d\n", name, (int) fncode);
- 
-   return;
- }
- 
  /* Set up IEEE 128-bit floating point routines.  Use different names if the
     arguments can be passed in a vector register.  The historical PowerPC
     implementation of IEEE 128-bit floating point used _q_<op> for the names, so
--- 11164,11169 ----
*************** init_float128_ieee (machine_mode mode)
*** 11063,11094 ****
  {
    if (FLOAT128_VECTOR_P (mode))
      {
-       static bool complex_muldiv_init_p = false;
- 
-       /* Set up to call __mulkc3 and __divkc3 under -mabi=ieeelongdouble.  If
- 	 we have clone or target attributes, this will be called a second
- 	 time.  We want to create the built-in function only once.  */
-      if (mode == TFmode && TARGET_IEEEQUAD && !complex_muldiv_init_p)
-        {
- 	 complex_muldiv_init_p = true;
- 	 built_in_function fncode_mul =
- 	   (built_in_function) (BUILT_IN_COMPLEX_MUL_MIN + TCmode
- 				- MIN_MODE_COMPLEX_FLOAT);
- 	 built_in_function fncode_div =
- 	   (built_in_function) (BUILT_IN_COMPLEX_DIV_MIN + TCmode
- 				- MIN_MODE_COMPLEX_FLOAT);
- 
- 	 tree fntype = build_function_type_list (complex_long_double_type_node,
- 						 long_double_type_node,
- 						 long_double_type_node,
- 						 long_double_type_node,
- 						 long_double_type_node,
- 						 NULL_TREE);
- 
- 	 create_complex_muldiv ("__mulkc3", fncode_mul, fntype);
- 	 create_complex_muldiv ("__divkc3", fncode_div, fntype);
-        }
- 
        set_optab_libfunc (add_optab, mode, "__addkf3");
        set_optab_libfunc (sub_optab, mode, "__subkf3");
        set_optab_libfunc (neg_optab, mode, "__negkf2");
--- 11175,11180 ----
*************** bool
*** 11323,11329 ****
  rs6000_is_valid_rotate_dot_mask (rtx mask, machine_mode mode)
  {
    int nb, ne;
!   return rs6000_is_valid_mask (mask, &nb, &ne, mode) && nb >= ne && ne > 0;
  }
  
  /* Return whether MASK (a CONST_INT) is a valid mask for any rlwinm, rldicl,
--- 11409,11424 ----
  rs6000_is_valid_rotate_dot_mask (rtx mask, machine_mode mode)
  {
    int nb, ne;
!   if (rs6000_is_valid_mask (mask, &nb, &ne, mode) && nb >= ne && ne > 0)
!     {
!       if (TARGET_64BIT)
! 	return true;
!       /* *rotldi3_mask_dot requires for -m32 -mpowerpc64 that the mask is
! 	 <= 0x7fffffff.  */
!       return (UINTVAL (mask) << (63 - nb)) <= 0x7fffffff;
!     }
! 
!   return false;
  }
  
  /* Return whether MASK (a CONST_INT) is a valid mask for any rlwinm, rldicl,
*************** print_operand (FILE *file, rtx x, int co
*** 14079,14086 ****
        /* If constant, low-order 16 bits of constant, signed.  Otherwise, write
  	 normally.  */
        if (INT_P (x))
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC,
! 		 ((INTVAL (x) & 0xffff) ^ 0x8000) - 0x8000);
        else
  	print_operand (file, x, 0);
        return;
--- 14174,14180 ----
        /* If constant, low-order 16 bits of constant, signed.  Otherwise, write
  	 normally.  */
        if (INT_P (x))
! 	fprintf (file, HOST_WIDE_INT_PRINT_DEC, sext_hwi (INTVAL (x), 16));
        else
  	print_operand (file, x, 0);
        return;
*************** rs6000_print_patchable_function_entry (F
*** 14834,14849 ****
  				       unsigned HOST_WIDE_INT patch_area_size,
  				       bool record_p)
  {
!   unsigned int flags = SECTION_WRITE | SECTION_RELRO;
!   /* When .opd section is emitted, the function symbol
!      default_print_patchable_function_entry_1 is emitted into the .opd section
!      while the patchable area is emitted into the function section.
!      Don't use SECTION_LINK_ORDER in that case.  */
!   if (!(TARGET_64BIT && DEFAULT_ABI != ABI_ELFv2)
!       && HAVE_GAS_SECTION_LINK_ORDER)
!     flags |= SECTION_LINK_ORDER;
!   default_print_patchable_function_entry_1 (file, patch_area_size, record_p,
! 					    flags);
  }
  
  enum rtx_code
--- 14928,14940 ----
  				       unsigned HOST_WIDE_INT patch_area_size,
  				       bool record_p)
  {
!   bool global_entry_needed_p = rs6000_global_entry_point_prologue_needed_p ();
!   /* For a function which needs global entry point, we will emit the
!      patchable area before and after local entry point under the control of
!      cfun->machine->global_entry_emitted, see the handling in function
!      rs6000_output_function_prologue.  */
!   if (!global_entry_needed_p || cfun->machine->global_entry_emitted)
!     default_print_patchable_function_entry (file, patch_area_size, record_p);
  }
  
  enum rtx_code
*************** rs6000_reverse_condition (machine_mode m
*** 14860,14865 ****
--- 14951,15021 ----
      return reverse_condition (code);
  }
  
+ /* Check if C (as 64bit integer) can be rotated to a constant which constains
+    nonzero bits at the LOWBITS low bits only.
+ 
+    Return true if C can be rotated to such constant.  If so, *ROT is written
+    to the number by which C is rotated.
+    Return false otherwise.  */
+ 
+ bool
+ can_be_rotated_to_lowbits (unsigned HOST_WIDE_INT c, int lowbits, int *rot)
+ {
+   int clz = HOST_BITS_PER_WIDE_INT - lowbits;
+ 
+   /* case a. 0..0xxx: already at least clz zeros.  */
+   int lz = clz_hwi (c);
+   if (lz >= clz)
+     {
+       *rot = 0;
+       return true;
+     }
+ 
+   /* case b. 0..0xxx0..0: at least clz zeros.  */
+   int tz = ctz_hwi (c);
+   if (lz + tz >= clz)
+     {
+       *rot = HOST_BITS_PER_WIDE_INT - tz;
+       return true;
+     }
+ 
+   /* case c. xx10.....0xx: rotate 'clz - 1' bits first, then check case b.
+ 	       ^bit -> Vbit, , then zeros are at head or tail.
+ 	     00...00xxx100, 'clz - 1' >= 'bits of xxxx'.  */
+   const int rot_bits = lowbits + 1;
+   unsigned HOST_WIDE_INT rc = (c >> rot_bits) | (c << (clz - 1));
+   tz = ctz_hwi (rc);
+   if (clz_hwi (rc) + tz >= clz)
+     {
+       *rot = HOST_BITS_PER_WIDE_INT - (tz + rot_bits);
+       return true;
+     }
+ 
+   return false;
+ }
+ 
+ /* Check if C (as 64bit integer) can be rotated to a positive 16bits constant
+    which contains 48bits leading zeros and 16bits of any value.  */
+ 
+ bool
+ can_be_rotated_to_positive_16bits (HOST_WIDE_INT c)
+ {
+   int rot = 0;
+   bool res = can_be_rotated_to_lowbits (c, 16, &rot);
+   return res && rot > 0;
+ }
+ 
+ /* Check if C (as 64bit integer) can be rotated to a negative 15bits constant
+    which contains 49bits leading ones and 15bits of any value.  */
+ 
+ bool
+ can_be_rotated_to_negative_15bits (HOST_WIDE_INT c)
+ {
+   int rot = 0;
+   bool res = can_be_rotated_to_lowbits (~c, 15, &rot);
+   return res && rot > 0;
+ }
+ 
  /* Generate a compare for CODE.  Return a brand-new rtx that
     represents the result of the compare.  */
  
*************** rs6000_emit_int_cmove (rtx dest, rtx op,
*** 16247,16254 ****
    signedp = GET_MODE (cr) == CCmode;
  
    isel_func = (mode == SImode
! 	       ? (signedp ? gen_isel_signed_si : gen_isel_unsigned_si)
! 	       : (signedp ? gen_isel_signed_di : gen_isel_unsigned_di));
  
    switch (cond_code)
      {
--- 16403,16410 ----
    signedp = GET_MODE (cr) == CCmode;
  
    isel_func = (mode == SImode
! 	       ? (signedp ? gen_isel_cc_si : gen_isel_ccuns_si)
! 	       : (signedp ? gen_isel_cc_di : gen_isel_ccuns_di));
  
    switch (cond_code)
      {
*************** get_memref_parts (rtx mem, rtx *base, HO
*** 18180,18186 ****
  		  HOST_WIDE_INT *size)
  {
    rtx addr_rtx;
!   if MEM_SIZE_KNOWN_P (mem)
      *size = MEM_SIZE (mem);
    else
      return false;
--- 18336,18342 ----
  		  HOST_WIDE_INT *size)
  {
    rtx addr_rtx;
!   if (MEM_SIZE_KNOWN_P (mem))
      *size = MEM_SIZE (mem);
    else
      return false;
*************** rs6000_mangle_type (const_tree type)
*** 20182,20187 ****
--- 20338,20346 ----
    if (type == bool_int_type_node) return "U6__booli";
    if (type == bool_long_long_type_node) return "U6__boolx";
  
+   if (type == float128_type_node || type == float64x_type_node)
+     return NULL;
+ 
    if (SCALAR_FLOAT_TYPE_P (type) && FLOAT128_IBM_P (TYPE_MODE (type)))
      return "g";
    if (SCALAR_FLOAT_TYPE_P (type) && FLOAT128_IEEE_P (TYPE_MODE (type)))
*************** rs6000_darwin_file_start (void)
*** 20731,20741 ****
      HOST_WIDE_INT if_set;
    } mapping[] = {
      { "ppc64", "ppc64", MASK_64BIT },
!     { "970", "ppc970", MASK_PPC_GPOPT | MASK_MFCRF | MASK_POWERPC64 },
      { "power4", "ppc970", 0 },
      { "G5", "ppc970", 0 },
      { "7450", "ppc7450", 0 },
!     { "7400", "ppc7400", MASK_ALTIVEC },
      { "G4", "ppc7400", 0 },
      { "750", "ppc750", 0 },
      { "740", "ppc750", 0 },
--- 20890,20901 ----
      HOST_WIDE_INT if_set;
    } mapping[] = {
      { "ppc64", "ppc64", MASK_64BIT },
!     { "970", "ppc970", OPTION_MASK_PPC_GPOPT | OPTION_MASK_MFCRF \
! 			| MASK_POWERPC64 },
      { "power4", "ppc970", 0 },
      { "G5", "ppc970", 0 },
      { "7450", "ppc7450", 0 },
!     { "7400", "ppc7400", OPTION_MASK_ALTIVEC },
      { "G4", "ppc7400", 0 },
      { "750", "ppc750", 0 },
      { "740", "ppc750", 0 },
*************** rs6000_elf_file_end (void)
*** 21015,21020 ****
--- 21175,21190 ----
  #define HAVE_XCOFF_DWARF_EXTRAS 0
  #endif
  
+ 
+ /* Names of bss and data sections.  These should be unique names for each
+    compilation unit.  */
+ 
+ char *xcoff_bss_section_name;
+ char *xcoff_private_data_section_name;
+ char *xcoff_private_rodata_section_name;
+ char *xcoff_tls_data_section_name;
+ char *xcoff_read_only_section_name;
+ 
  static enum unwind_info_type
  rs6000_xcoff_debug_unwind_info (void)
  {
*************** rs6000_xcoff_declare_function_name (FILE
*** 21528,21536 ****
  							&data, true);
    if (!DECL_IGNORED_P (decl))
      {
!       if (write_symbols == DBX_DEBUG || write_symbols == XCOFF_DEBUG)
! 	xcoffout_declare_function (file, decl, buffer);
!       else if (dwarf_debuginfo_p ())
  	{
  	  name = (*targetm.strip_name_encoding) (name);
  	  fprintf (file, "\t.function .%s,.%s,2,0\n", name, name);
--- 21698,21704 ----
  							&data, true);
    if (!DECL_IGNORED_P (decl))
      {
!       if (dwarf_debuginfo_p ())
  	{
  	  name = (*targetm.strip_name_encoding) (name);
  	  fprintf (file, "\t.function .%s,.%s,2,0\n", name, name);
*************** rs6000_expand_vec_perm_const_1 (rtx targ
*** 23296,23304 ****
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! rs6000_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 				 rtx op1, const vec_perm_indices &sel)
  {
    bool testing_p = !target;
  
    /* AltiVec (and thus VSX) can handle arbitrary permutations.  */
--- 23464,23476 ----
  /* Implement TARGET_VECTORIZE_VEC_PERM_CONST.  */
  
  static bool
! rs6000_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 				 rtx target, rtx op0, rtx op1,
! 				 const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    bool testing_p = !target;
  
    /* AltiVec (and thus VSX) can handle arbitrary permutations.  */
*************** rs6000_init_dwarf_reg_sizes_extra (tree
*** 23701,23707 ****
       2 -- DWARF .eh_frame section  */
  
  unsigned int
! rs6000_dbx_register_number (unsigned int regno, unsigned int format)
  {
    /* On some platforms, we use the standard DWARF register
       numbering for .debug_info and .debug_frame.  */
--- 23873,23879 ----
       2 -- DWARF .eh_frame section  */
  
  unsigned int
! rs6000_debugger_regno (unsigned int regno, unsigned int format)
  {
    /* On some platforms, we use the standard DWARF register
       numbering for .debug_info and .debug_frame.  */
*************** static struct rs6000_opt_mask const rs60
*** 24045,24076 ****
    { "string",			0,				false, false },
  };
  
- /* Builtin mask mapping for printing the flags.  */
- static struct rs6000_opt_mask const rs6000_builtin_mask_names[] =
- {
-   { "altivec",		 RS6000_BTM_ALTIVEC,	false, false },
-   { "vsx",		 RS6000_BTM_VSX,	false, false },
-   { "fre",		 RS6000_BTM_FRE,	false, false },
-   { "fres",		 RS6000_BTM_FRES,	false, false },
-   { "frsqrte",		 RS6000_BTM_FRSQRTE,	false, false },
-   { "frsqrtes",		 RS6000_BTM_FRSQRTES,	false, false },
-   { "popcntd",		 RS6000_BTM_POPCNTD,	false, false },
-   { "cell",		 RS6000_BTM_CELL,	false, false },
-   { "power8-vector",	 RS6000_BTM_P8_VECTOR,	false, false },
-   { "power9-vector",	 RS6000_BTM_P9_VECTOR,	false, false },
-   { "power9-misc",	 RS6000_BTM_P9_MISC,	false, false },
-   { "crypto",		 RS6000_BTM_CRYPTO,	false, false },
-   { "htm",		 RS6000_BTM_HTM,	false, false },
-   { "hard-dfp",		 RS6000_BTM_DFP,	false, false },
-   { "hard-float",	 RS6000_BTM_HARD_FLOAT,	false, false },
-   { "long-double-128",	 RS6000_BTM_LDBL128,	false, false },
-   { "powerpc64",	 RS6000_BTM_POWERPC64,  false, false },
-   { "float128",		 RS6000_BTM_FLOAT128,   false, false },
-   { "float128-hw",	 RS6000_BTM_FLOAT128_HW,false, false },
-   { "mma",		 RS6000_BTM_MMA,	false, false },
-   { "power10",		 RS6000_BTM_P10,	false, false },
- };
- 
  /* Option variables that we want to support inside attribute((target)) and
     #pragma GCC target operations.  */
  
--- 24217,24222 ----
*************** rs6000_pragma_target_parse (tree args, t
*** 24425,24431 ****
    tree cur_tree;
    struct cl_target_option *prev_opt, *cur_opt;
    HOST_WIDE_INT prev_flags, cur_flags, diff_flags;
-   HOST_WIDE_INT prev_bumask, cur_bumask, diff_bumask;
  
    if (TARGET_DEBUG_TARGET)
      {
--- 24571,24576 ----
*************** rs6000_pragma_target_parse (tree args, t
*** 24477,24503 ****
    if (rs6000_target_modify_macros_ptr)
      {
        prev_opt    = TREE_TARGET_OPTION (prev_tree);
-       prev_bumask = prev_opt->x_rs6000_builtin_mask;
        prev_flags  = prev_opt->x_rs6000_isa_flags;
  
        cur_opt     = TREE_TARGET_OPTION (cur_tree);
        cur_flags   = cur_opt->x_rs6000_isa_flags;
-       cur_bumask  = cur_opt->x_rs6000_builtin_mask;
  
-       diff_bumask = (prev_bumask ^ cur_bumask);
        diff_flags  = (prev_flags ^ cur_flags);
  
!       if ((diff_flags != 0) || (diff_bumask != 0))
  	{
  	  /* Delete old macros.  */
  	  rs6000_target_modify_macros_ptr (false,
! 					   prev_flags & diff_flags,
! 					   prev_bumask & diff_bumask);
  
  	  /* Define new macros.  */
  	  rs6000_target_modify_macros_ptr (true,
! 					   cur_flags & diff_flags,
! 					   cur_bumask & diff_bumask);
  	}
      }
  
--- 24622,24643 ----
    if (rs6000_target_modify_macros_ptr)
      {
        prev_opt    = TREE_TARGET_OPTION (prev_tree);
        prev_flags  = prev_opt->x_rs6000_isa_flags;
  
        cur_opt     = TREE_TARGET_OPTION (cur_tree);
        cur_flags   = cur_opt->x_rs6000_isa_flags;
  
        diff_flags  = (prev_flags ^ cur_flags);
  
!       if (diff_flags != 0)
  	{
  	  /* Delete old macros.  */
  	  rs6000_target_modify_macros_ptr (false,
! 					   prev_flags & diff_flags);
  
  	  /* Define new macros.  */
  	  rs6000_target_modify_macros_ptr (true,
! 					   cur_flags & diff_flags);
  	}
      }
  
*************** rs6000_print_isa_options (FILE *file, in
*** 24728,24742 ****
  				 ARRAY_SIZE (rs6000_opt_masks));
  }
  
- static void
- rs6000_print_builtin_options (FILE *file, int indent, const char *string,
- 			      HOST_WIDE_INT flags)
- {
-   rs6000_print_options_internal (file, indent, string, flags, "",
- 				 &rs6000_builtin_mask_names[0],
- 				 ARRAY_SIZE (rs6000_builtin_mask_names));
- }
- 
  /* If the user used -mno-vsx, we need turn off all of the implicit ISA 2.06,
     2.07, and 3.0 options that relate to the vector unit (-mdirect-move,
     -mupper-regs-df, etc.).
--- 24868,24873 ----
*************** rs6000_get_function_versions_dispatcher
*** 24960,24965 ****
--- 25091,25097 ----
  
        /* Right now, the dispatching is done via ifunc.  */
        dispatch_decl = make_dispatcher_decl (default_node->decl);
+       TREE_NOTHROW (dispatch_decl) = TREE_NOTHROW (fn);
  
        dispatcher_node = cgraph_node::get_create (dispatch_decl);
        gcc_assert (dispatcher_node != NULL);
*************** rs6000_starting_frame_offset (void)
*** 28069,28074 ****
--- 28201,28227 ----
    return RS6000_STARTING_FRAME_OFFSET;
  }
  
+ /* Internal function to return the built-in function id for the complex
+    multiply operation for a given mode.  */
+ 
+ static inline built_in_function
+ complex_multiply_builtin_code (machine_mode mode)
+ {
+   gcc_assert (IN_RANGE (mode, MIN_MODE_COMPLEX_FLOAT, MAX_MODE_COMPLEX_FLOAT));
+   int func = BUILT_IN_COMPLEX_MUL_MIN + mode - MIN_MODE_COMPLEX_FLOAT;
+   return (built_in_function) func;
+ }
+ 
+ /* Internal function to return the built-in function id for the complex divide
+    operation for a given mode.  */
+ 
+ static inline built_in_function
+ complex_divide_builtin_code (machine_mode mode)
+ {
+   gcc_assert (IN_RANGE (mode, MIN_MODE_COMPLEX_FLOAT, MAX_MODE_COMPLEX_FLOAT));
+   int func = BUILT_IN_COMPLEX_DIV_MIN + mode - MIN_MODE_COMPLEX_FLOAT;
+   return (built_in_function) func;
+ }
  
  /* On 64-bit Linux and Freebsd systems, possibly switch the long double library
     function names from <foo>l to <foo>f128 if the default long double type is
*************** rs6000_starting_frame_offset (void)
*** 28087,28097 ****
     only do this transformation if the __float128 type is enabled.  This
     prevents us from doing the transformation on older 32-bit ports that might
     have enabled using IEEE 128-bit floating point as the default long double
!    type.  */
  
  static tree
  rs6000_mangle_decl_assembler_name (tree decl, tree id)
  {
    if (TARGET_FLOAT128_TYPE && TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
        && TREE_CODE (decl) == FUNCTION_DECL
        && DECL_IS_UNDECLARED_BUILTIN (decl)
--- 28240,28292 ----
     only do this transformation if the __float128 type is enabled.  This
     prevents us from doing the transformation on older 32-bit ports that might
     have enabled using IEEE 128-bit floating point as the default long double
!    type.
! 
!    We also use the TARGET_MANGLE_DECL_ASSEMBLER_NAME hook to change the
!    function names used for complex multiply and divide to the appropriate
!    names.  */
  
  static tree
  rs6000_mangle_decl_assembler_name (tree decl, tree id)
  {
+   /* Handle complex multiply/divide.  For IEEE 128-bit, use __mulkc3 or
+      __divkc3 and for IBM 128-bit use __multc3 and __divtc3.  */
+   if (TARGET_FLOAT128_TYPE
+       && TREE_CODE (decl) == FUNCTION_DECL
+       && DECL_IS_UNDECLARED_BUILTIN (decl)
+       && DECL_BUILT_IN_CLASS (decl) == BUILT_IN_NORMAL)
+     {
+       built_in_function id = DECL_FUNCTION_CODE (decl);
+       const char *newname = NULL;
+ 
+       if (id == complex_multiply_builtin_code (KCmode))
+ 	newname = "__mulkc3";
+ 
+       else if (id == complex_multiply_builtin_code (ICmode))
+ 	newname = "__multc3";
+ 
+       else if (id == complex_multiply_builtin_code (TCmode))
+ 	newname = (TARGET_IEEEQUAD) ? "__mulkc3" : "__multc3";
+ 
+       else if (id == complex_divide_builtin_code (KCmode))
+ 	newname = "__divkc3";
+ 
+       else if (id == complex_divide_builtin_code (ICmode))
+ 	newname = "__divtc3";
+ 
+       else if (id == complex_divide_builtin_code (TCmode))
+ 	newname = (TARGET_IEEEQUAD) ? "__divkc3" : "__divtc3";
+ 
+       if (newname)
+ 	{
+ 	  if (TARGET_DEBUG_BUILTIN)
+ 	    fprintf (stderr, "Map complex mul/div => %s\n", newname);
+ 
+ 	  return get_identifier (newname);
+ 	}
+     }
+ 
+   /* Map long double built-in functions if long double is IEEE 128-bit.  */
    if (TARGET_FLOAT128_TYPE && TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
        && TREE_CODE (decl) == FUNCTION_DECL
        && DECL_IS_UNDECLARED_BUILTIN (decl)
*************** rs6000_invalid_conversion (const_tree fr
*** 28287,28314 ****
        if (tomode == OOmode)
  	return N_("invalid conversion to type %<__vector_pair%>");
      }
-   else if (POINTER_TYPE_P (fromtype) && POINTER_TYPE_P (totype))
-     {
-       /* We really care about the modes of the base types.  */
-       frommode = TYPE_MODE (TREE_TYPE (fromtype));
-       tomode = TYPE_MODE (TREE_TYPE (totype));
- 
-       /* Do not allow conversions to/from XOmode and OOmode pointer
- 	 types, except to/from void pointers.  */
-       if (frommode != tomode
- 	  && frommode != VOIDmode
- 	  && tomode != VOIDmode)
- 	{
- 	  if (frommode == XOmode)
- 	    return N_("invalid conversion from type %<* __vector_quad%>");
- 	  if (tomode == XOmode)
- 	    return N_("invalid conversion to type %<* __vector_quad%>");
- 	  if (frommode == OOmode)
- 	    return N_("invalid conversion from type %<* __vector_pair%>");
- 	  if (tomode == OOmode)
- 	    return N_("invalid conversion to type %<* __vector_pair%>");
- 	}
-     }
  
    /* Conversion allowed.  */
    return NULL;
--- 28482,28487 ----
*************** constant_generates_xxspltiw (vec_const_1
*** 28680,28693 ****
    /* See if we can use VSPLTISH or VSPLTISW.  */
    if (vsx_const->all_half_words_same)
      {
!       unsigned short h_word = vsx_const->half_words[0];
!       short sign_h_word = ((h_word & 0xffff) ^ 0x8000) - 0x8000;
        if (EASY_VECTOR_15 (sign_h_word))
  	return 0;
      }
  
!   unsigned int word = vsx_const->words[0];
!   int sign_word = ((word & 0xffffffff) ^ 0x80000000) - 0x80000000;
    if (EASY_VECTOR_15 (sign_word))
      return 0;
  
--- 28853,28864 ----
    /* See if we can use VSPLTISH or VSPLTISW.  */
    if (vsx_const->all_half_words_same)
      {
!       short sign_h_word = vsx_const->half_words[0];
        if (EASY_VECTOR_15 (sign_h_word))
  	return 0;
      }
  
!   int sign_word = vsx_const->words[0];
    if (EASY_VECTOR_15 (sign_word))
      return 0;
  
*************** constant_generates_xxspltidp (vec_const_
*** 28792,28798 ****
    return sf_value;
  }
  
! 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-rs6000.h"
--- 28963,29048 ----
    return sf_value;
  }
  
! /* Now we have only two opaque types, they are __vector_quad and
!    __vector_pair built-in types.  They are target specific and
!    only available when MMA is supported.  With MMA supported, it
!    simply returns true, otherwise it checks if the given gimple
!    STMT is an assignment, asm or call stmt and uses either of
!    these two opaque types unexpectedly, if yes, it would raise
!    an error message and returns true, otherwise it returns false.  */
! 
! bool
! rs6000_opaque_type_invalid_use_p (gimple *stmt)
! {
!   if (TARGET_MMA)
!     return false;
! 
!   /* If the given TYPE is one MMA opaque type, emit the corresponding
!      error messages and return true, otherwise return false.  */
!   auto check_and_error_invalid_use = [](tree type)
!   {
!     tree mv = TYPE_MAIN_VARIANT (type);
!     if (mv == vector_quad_type_node)
!       {
! 	error ("type %<__vector_quad%> requires the %qs option", "-mmma");
! 	return true;
!       }
!     else if (mv == vector_pair_type_node)
!       {
! 	error ("type %<__vector_pair%> requires the %qs option", "-mmma");
! 	return true;
!       }
!     return false;
!   };
! 
!   if (stmt)
!     {
!       /* The usage of MMA opaque types is very limited for now,
! 	 to check with gassign, gasm and gcall is enough so far.  */
!       if (gassign *ga = dyn_cast<gassign *> (stmt))
! 	{
! 	  tree lhs = gimple_assign_lhs (ga);
! 	  tree type = TREE_TYPE (lhs);
! 	  if (check_and_error_invalid_use (type))
! 	    return true;
! 	}
!       else if (gasm *gs = dyn_cast<gasm *> (stmt))
! 	{
! 	  unsigned ninputs = gimple_asm_ninputs (gs);
! 	  for (unsigned i = 0; i < ninputs; i++)
! 	    {
! 	      tree op = gimple_asm_input_op (gs, i);
! 	      tree val = TREE_VALUE (op);
! 	      tree type = TREE_TYPE (val);
! 	      if (check_and_error_invalid_use (type))
! 		return true;
! 	    }
! 	  unsigned noutputs = gimple_asm_noutputs (gs);
! 	  for (unsigned i = 0; i < noutputs; i++)
! 	    {
! 	      tree op = gimple_asm_output_op (gs, i);
! 	      tree val = TREE_VALUE (op);
! 	      tree type = TREE_TYPE (val);
! 	      if (check_and_error_invalid_use (type))
! 		return true;
! 	    }
! 	}
!       else if (gcall *gc = dyn_cast<gcall *> (stmt))
! 	{
! 	  unsigned nargs = gimple_call_num_args (gc);
! 	  for (unsigned i = 0; i < nargs; i++)
! 	    {
! 	      tree arg = gimple_call_arg (gc, i);
! 	      tree type = TREE_TYPE (arg);
! 	      if (check_and_error_invalid_use (type))
! 		return true;
! 	    }
! 	}
!     }
! 
!   return false;
! }
! 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-rs6000.h"
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000.h gcc-13.1.0/gcc/config/rs6000/rs6000.h
*** gcc-12.2.0/gcc/config/rs6000/rs6000.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM RS/6000.
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
     This file is part of GCC.
*************** extern const char *host_detect_local_cpu
*** 282,288 ****
      /* The option machinery will define this.  */
  #endif
  
! #define TARGET_DEFAULT (MASK_MULTIPLE)
  
  /* Define generic processor types based upon current deployment.  */
  #define PROCESSOR_COMMON    PROCESSOR_PPC601
--- 282,288 ----
      /* The option machinery will define this.  */
  #endif
  
! #define TARGET_DEFAULT (OPTION_MASK_MULTIPLE)
  
  /* Define generic processor types based upon current deployment.  */
  #define PROCESSOR_COMMON    PROCESSOR_PPC601
*************** extern int rs6000_vector_align[];
*** 508,548 ****
  			 && (TARGET_P9_MINMAX || !flag_trapping_math))
  
  /* In switching from using target_flags to using rs6000_isa_flags, the options
!    machinery creates OPTION_MASK_<xxx> instead of MASK_<xxx>.  For now map
!    OPTION_MASK_<xxx> back into MASK_<xxx>.  */
! #define MASK_ALTIVEC			OPTION_MASK_ALTIVEC
! #define MASK_CMPB			OPTION_MASK_CMPB
! #define MASK_CRYPTO			OPTION_MASK_CRYPTO
! #define MASK_DFP			OPTION_MASK_DFP
! #define MASK_DIRECT_MOVE		OPTION_MASK_DIRECT_MOVE
! #define MASK_DLMZB			OPTION_MASK_DLMZB
! #define MASK_EABI			OPTION_MASK_EABI
! #define MASK_FLOAT128_KEYWORD		OPTION_MASK_FLOAT128_KEYWORD
! #define MASK_FLOAT128_HW		OPTION_MASK_FLOAT128_HW
! #define MASK_FPRND			OPTION_MASK_FPRND
! #define MASK_P8_FUSION			OPTION_MASK_P8_FUSION
! #define MASK_HARD_FLOAT			OPTION_MASK_HARD_FLOAT
! #define MASK_HTM			OPTION_MASK_HTM
! #define MASK_ISEL			OPTION_MASK_ISEL
! #define MASK_MFCRF			OPTION_MASK_MFCRF
! #define MASK_MMA			OPTION_MASK_MMA
! #define MASK_MULHW			OPTION_MASK_MULHW
! #define MASK_MULTIPLE			OPTION_MASK_MULTIPLE
! #define MASK_NO_UPDATE			OPTION_MASK_NO_UPDATE
! #define MASK_P8_VECTOR			OPTION_MASK_P8_VECTOR
! #define MASK_P9_VECTOR			OPTION_MASK_P9_VECTOR
! #define MASK_P9_MISC			OPTION_MASK_P9_MISC
! #define MASK_POPCNTB			OPTION_MASK_POPCNTB
! #define MASK_POPCNTD			OPTION_MASK_POPCNTD
! #define MASK_PPC_GFXOPT			OPTION_MASK_PPC_GFXOPT
! #define MASK_PPC_GPOPT			OPTION_MASK_PPC_GPOPT
! #define MASK_RECIP_PRECISION		OPTION_MASK_RECIP_PRECISION
! #define MASK_SOFT_FLOAT			OPTION_MASK_SOFT_FLOAT
  #define MASK_STRICT_ALIGN		OPTION_MASK_STRICT_ALIGN
- #define MASK_UPDATE			OPTION_MASK_UPDATE
- #define MASK_VSX			OPTION_MASK_VSX
- #define MASK_POWER10			OPTION_MASK_POWER10
- #define MASK_P10_FUSION			OPTION_MASK_P10_FUSION
  
  #ifndef IN_LIBGCC2
  #define MASK_POWERPC64			OPTION_MASK_POWERPC64
--- 508,518 ----
  			 && (TARGET_P9_MINMAX || !flag_trapping_math))
  
  /* In switching from using target_flags to using rs6000_isa_flags, the options
!    machinery creates OPTION_MASK_<xxx> instead of MASK_<xxx>.  The MASK_<xxxx>
!    options that have not yet been replaced by their OPTION_MASK_<xxx>
!    equivalents are defined here.  */
! 
  #define MASK_STRICT_ALIGN		OPTION_MASK_STRICT_ALIGN
  
  #ifndef IN_LIBGCC2
  #define MASK_POWERPC64			OPTION_MASK_POWERPC64
*************** extern int rs6000_vector_align[];
*** 556,574 ****
  #define MASK_LITTLE_ENDIAN		OPTION_MASK_LITTLE_ENDIAN
  #endif
  
- #ifdef TARGET_REGNAMES
- #define MASK_REGNAMES			OPTION_MASK_REGNAMES
- #endif
- 
- #ifdef TARGET_PROTOTYPE
- #define MASK_PROTOTYPE			OPTION_MASK_PROTOTYPE
- #endif
- 
- #ifdef TARGET_MODULO
- #define RS6000_BTM_MODULO		OPTION_MASK_MODULO
- #endif
- 
- 
  /* For power systems, we want to enable Altivec and VSX builtins even if the
     user did not use -maltivec or -mvsx to allow the builtins to be used inside
     of #pragma GCC target or the target attribute to change the code level for a
--- 526,531 ----
*************** extern unsigned char rs6000_recip_bits[]
*** 649,658 ****
  #define TARGET_CPU_CPP_BUILTINS() \
    rs6000_cpu_cpp_builtins (pfile)
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS rs6000_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO rs6000_d_register_target_info
- 
  /* This is used by rs6000_cpu_cpp_builtins to indicate the byte order
     we're compiling for.  Some configurations may need to override it.  */
  #define RS6000_CPU_CPP_ENDIAN_BUILTINS()	\
--- 606,611 ----
*************** enum data_align { align_abi, align_opt,
*** 838,844 ****
  #define FIRST_PSEUDO_REGISTER 111
  
  /* Use standard DWARF numbering for DWARF debugging information.  */
! #define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number ((REGNO), 0)
  
  /* Use gcc hard register numbering for eh_frame.  */
  #define DWARF_FRAME_REGNUM(REGNO) (REGNO)
--- 791,797 ----
  #define FIRST_PSEUDO_REGISTER 111
  
  /* Use standard DWARF numbering for DWARF debugging information.  */
! #define DEBUGGER_REGNO(REGNO) rs6000_debugger_regno ((REGNO), 0)
  
  /* Use gcc hard register numbering for eh_frame.  */
  #define DWARF_FRAME_REGNUM(REGNO) (REGNO)
*************** enum data_align { align_abi, align_opt,
*** 847,853 ****
     collected using DWARF_FRAME_REGNUM to those that should be output in
     .debug_frame and .eh_frame.  */
  #define DWARF2_FRAME_REG_OUT(REGNO, FOR_EH) \
!   rs6000_dbx_register_number ((REGNO), (FOR_EH) ? 2 : 1)
  
  /* 1 for registers that have pervasive standard uses
     and are not available for the register allocator.
--- 800,806 ----
     collected using DWARF_FRAME_REGNUM to those that should be output in
     .debug_frame and .eh_frame.  */
  #define DWARF2_FRAME_REG_OUT(REGNO, FOR_EH) \
!   rs6000_debugger_regno ((REGNO), (FOR_EH) ? 2 : 1)
  
  /* 1 for registers that have pervasive standard uses
     and are not available for the register allocator.
*************** extern enum reg_class rs6000_regno_regcl
*** 1243,1250 ****
  /* Register classes for various constraints that are based on the target
     switches.  */
  enum r6000_reg_class_enum {
!   RS6000_CONSTRAINT_d,		/* fpr registers for double values */
!   RS6000_CONSTRAINT_f,		/* fpr registers for single values */
    RS6000_CONSTRAINT_v,		/* Altivec registers */
    RS6000_CONSTRAINT_wa,		/* Any VSX register */
    RS6000_CONSTRAINT_we,		/* VSX register if ISA 3.0 vector. */
--- 1196,1202 ----
  /* Register classes for various constraints that are based on the target
     switches.  */
  enum r6000_reg_class_enum {
!   RS6000_CONSTRAINT_d,		/* FPR registers */
    RS6000_CONSTRAINT_v,		/* Altivec registers */
    RS6000_CONSTRAINT_wa,		/* Any VSX register */
    RS6000_CONSTRAINT_we,		/* VSX register if ISA 3.0 vector. */
*************** extern char rs6000_reg_names[][8];	/* re
*** 2252,2357 ****
  /* General flags.  */
  extern int frame_pointer_needed;
  
- /* Classification of the builtin functions as to which switches enable the
-    builtin, and what attributes it should have.  We used to use the target
-    flags macros, but we've run out of bits, so we now map the options into new
-    settings used here.  */
- 
- /* Builtin operand count.  */
- #define RS6000_BTC_UNARY	0x00000001	/* normal unary function.  */
- #define RS6000_BTC_BINARY	0x00000002	/* normal binary function.  */
- #define RS6000_BTC_TERNARY	0x00000003	/* normal ternary function.  */
- #define RS6000_BTC_QUATERNARY	0x00000004	/* normal quaternary
- 						   function. */
- #define RS6000_BTC_QUINARY	0x00000005	/* normal quinary function.  */
- #define RS6000_BTC_SENARY	0x00000006	/* normal senary function.  */
- #define RS6000_BTC_OPND_MASK	0x00000007	/* Mask to isolate operands. */
- 
- /* Builtin attributes.  */
- #define RS6000_BTC_SPECIAL	0x00000000	/* Special function.  */
- #define RS6000_BTC_PREDICATE	0x00000008	/* predicate function.  */
- #define RS6000_BTC_ABS		0x00000010	/* Altivec/VSX ABS
- 						   function.  */
- #define RS6000_BTC_DST		0x00000020	/* Altivec DST function.  */
- 
- #define RS6000_BTC_TYPE_MASK	0x0000003f	/* Mask to isolate types */
- 
- #define RS6000_BTC_MISC		0x00000000	/* No special attributes.  */
- #define RS6000_BTC_CONST	0x00000100	/* Neither uses, nor
- 						   modifies global state.  */
- #define RS6000_BTC_PURE		0x00000200	/* reads global
- 						   state/mem and does
- 						   not modify global state.  */
- #define RS6000_BTC_FP		0x00000400	/* depends on rounding mode.  */
- #define RS6000_BTC_QUAD		0x00000800	/* Uses a register quad.  */
- #define RS6000_BTC_PAIR		0x00001000	/* Uses a register pair.  */
- #define RS6000_BTC_QUADPAIR	0x00001800	/* Uses a quad and a pair.  */
- #define RS6000_BTC_ATTR_MASK	0x00001f00	/* Mask of the attributes.  */
- 
- /* Miscellaneous information.  */
- #define RS6000_BTC_SPR		0x01000000	/* function references SPRs.  */
- #define RS6000_BTC_VOID		0x02000000	/* function has no return value.  */
- #define RS6000_BTC_CR		0x04000000	/* function references a CR.  */
- #define RS6000_BTC_OVERLOADED	0x08000000	/* function is overloaded.  */
- #define RS6000_BTC_GIMPLE	0x10000000	/* function should be expanded
- 						   into gimple.  */
- #define RS6000_BTC_MISC_MASK	0x1f000000	/* Mask of the misc info.  */
- 
- /* Convenience macros to document the instruction type.  */
- #define RS6000_BTC_MEM		RS6000_BTC_MISC	/* load/store touches mem.  */
- #define RS6000_BTC_SAT		RS6000_BTC_MISC	/* saturate sets VSCR.  */
- 
- /* Builtin targets.  For now, we reuse the masks for those options that are in
-    target flags, and pick a random bit for ldbl128, which isn't in
-    target_flags.  */
- #define RS6000_BTM_ALWAYS	0		/* Always enabled.  */
- #define RS6000_BTM_ALTIVEC	MASK_ALTIVEC	/* VMX/altivec vectors.  */
- #define RS6000_BTM_CMPB		MASK_CMPB	/* ISA 2.05: compare bytes.  */
- #define RS6000_BTM_VSX		MASK_VSX	/* VSX (vector/scalar).  */
- #define RS6000_BTM_P8_VECTOR	MASK_P8_VECTOR	/* ISA 2.07 vector.  */
- #define RS6000_BTM_P9_VECTOR	MASK_P9_VECTOR	/* ISA 3.0 vector.  */
- #define RS6000_BTM_P9_MISC	MASK_P9_MISC	/* ISA 3.0 misc. non-vector */
- #define RS6000_BTM_CRYPTO	MASK_CRYPTO	/* crypto funcs.  */
- #define RS6000_BTM_HTM		MASK_HTM	/* hardware TM funcs.  */
- #define RS6000_BTM_FRE		MASK_POPCNTB	/* FRE instruction.  */
- #define RS6000_BTM_FRES		MASK_PPC_GFXOPT	/* FRES instruction.  */
- #define RS6000_BTM_FRSQRTE	MASK_PPC_GFXOPT	/* FRSQRTE instruction.  */
- #define RS6000_BTM_FRSQRTES	MASK_POPCNTB	/* FRSQRTES instruction.  */
- #define RS6000_BTM_POPCNTD	MASK_POPCNTD	/* Target supports ISA 2.06.  */
- #define RS6000_BTM_CELL		MASK_FPRND	/* Target is cell powerpc.  */
- #define RS6000_BTM_DFP		MASK_DFP	/* Decimal floating point.  */
- #define RS6000_BTM_HARD_FLOAT	MASK_SOFT_FLOAT	/* Hardware floating point.  */
- #define RS6000_BTM_LDBL128	MASK_MULTIPLE	/* 128-bit long double.  */
- #define RS6000_BTM_64BIT	MASK_64BIT	/* 64-bit addressing.  */
- #define RS6000_BTM_POWERPC64	MASK_POWERPC64	/* 64-bit registers.  */
- #define RS6000_BTM_FLOAT128	MASK_FLOAT128_KEYWORD /* IEEE 128-bit float.  */
- #define RS6000_BTM_FLOAT128_HW	MASK_FLOAT128_HW /* IEEE 128-bit float h/w.  */
- #define RS6000_BTM_MMA		MASK_MMA	/* ISA 3.1 MMA.  */
- #define RS6000_BTM_P10		MASK_POWER10
- 
- #define RS6000_BTM_COMMON	(RS6000_BTM_ALTIVEC			\
- 				 | RS6000_BTM_VSX			\
- 				 | RS6000_BTM_P8_VECTOR			\
- 				 | RS6000_BTM_P9_VECTOR			\
- 				 | RS6000_BTM_P9_MISC			\
- 				 | RS6000_BTM_MODULO                    \
- 				 | RS6000_BTM_CRYPTO			\
- 				 | RS6000_BTM_FRE			\
- 				 | RS6000_BTM_FRES			\
- 				 | RS6000_BTM_FRSQRTE			\
- 				 | RS6000_BTM_FRSQRTES			\
- 				 | RS6000_BTM_HTM			\
- 				 | RS6000_BTM_POPCNTD			\
- 				 | RS6000_BTM_CELL			\
- 				 | RS6000_BTM_DFP			\
- 				 | RS6000_BTM_HARD_FLOAT		\
- 				 | RS6000_BTM_LDBL128			\
- 				 | RS6000_BTM_POWERPC64			\
- 				 | RS6000_BTM_FLOAT128			\
- 				 | RS6000_BTM_FLOAT128_HW		\
- 				 | RS6000_BTM_MMA			\
- 				 | RS6000_BTM_P10)
- 
  enum rs6000_builtin_type_index
  {
    RS6000_BTI_NOT_OPAQUE,
--- 2204,2209 ----
*************** typedef struct GTY(()) machine_function
*** 2583,2588 ****
--- 2435,2444 ----
    bool lr_is_wrapped_separately;
    bool toc_is_wrapped_separately;
    bool mma_return_type_error;
+   /* Indicate global entry is emitted, only useful when the function requires
+      global entry.  It helps to control the patchable area before and after
+      local entry.  */
+   bool global_entry_emitted;
  } machine_function;
  #endif
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000.md gcc-13.1.0/gcc/config/rs6000/rs6000.md
*** gcc-12.2.0/gcc/config/rs6000/rs6000.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
! ;; Copyright (C) 1990-2022 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for IBM RISC System 6000 (POWER) for GNU C compiler
! ;; Copyright (C) 1990-2023 Free Software Foundation, Inc.
  ;; Contributed by Richard Kenner (kenner@vlsi1.ultra.nyu.edu)
  
  ;; This file is part of GCC.
***************
*** 619,636 ****
  (define_mode_iterator SIGNBIT [(KF "FLOAT128_VECTOR_P (KFmode)")
  			       (TF "FLOAT128_VECTOR_P (TFmode)")])
  
- ; Iterator for ISA 3.0 supported floating point types
- (define_mode_iterator FP_ISA3 [SF DF])
- 
- ; SF/DF constraint for arithmetic on traditional floating point registers
- (define_mode_attr Ff		[(SF "f") (DF "d") (DI "d")])
- 
- ; SF/DF constraint for arithmetic on VSX registers using instructions added in
- ; ISA 2.06 (power7).  This includes instructions that normally target DF mode,
- ; but are used on SFmode, since internally SFmode values are kept in the DFmode
- ; format.
- (define_mode_attr Fv		[(SF "wa") (DF "wa") (DI "wa")])
- 
  ; Which isa is needed for those float instructions?
  (define_mode_attr Fisa		[(SF "p8v")  (DF "*") (DI "*")])
  
--- 619,624 ----
***************
*** 1799,1805 ****
  	}
  
        HOST_WIDE_INT val = INTVAL (operands[2]);
!       HOST_WIDE_INT low = ((val & 0xffff) ^ 0x8000) - 0x8000;
        HOST_WIDE_INT rest = trunc_int_for_mode (val - low, <MODE>mode);
  
        if (<MODE>mode == DImode && !satisfies_constraint_L (GEN_INT (rest)))
--- 1787,1793 ----
  	}
  
        HOST_WIDE_INT val = INTVAL (operands[2]);
!       HOST_WIDE_INT low = sext_hwi (val, 16);
        HOST_WIDE_INT rest = trunc_int_for_mode (val - low, <MODE>mode);
  
        if (<MODE>mode == DImode && !satisfies_constraint_L (GEN_INT (rest)))
***************
*** 1942,1948 ****
     (set (match_dup 0) (plus:GPR (match_dup 0) (match_dup 4)))]
  {
    HOST_WIDE_INT val = INTVAL (operands[2]);
!   HOST_WIDE_INT low = ((val & 0xffff) ^ 0x8000) - 0x8000;
    HOST_WIDE_INT rest = trunc_int_for_mode (val - low, <MODE>mode);
  
    operands[4] = GEN_INT (low);
--- 1930,1936 ----
     (set (match_dup 0) (plus:GPR (match_dup 0) (match_dup 4)))]
  {
    HOST_WIDE_INT val = INTVAL (operands[2]);
!   HOST_WIDE_INT low = sext_hwi (val, 16);
    HOST_WIDE_INT rest = trunc_int_for_mode (val - low, <MODE>mode);
  
    operands[4] = GEN_INT (low);
***************
*** 2353,2358 ****
--- 2341,2359 ----
    "subfe %0,%0,%0"
    [(set_attr "type" "add")])
  
+ (define_insn_and_split "*subfsi3_carry_in_xx_64"
+   [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
+ 	(sign_extend:DI (plus:SI (reg:SI CA_REGNO)
+ 				 (const_int -1))))]
+   "TARGET_POWERPC64"
+   "#"
+   "&&1"
+   [(parallel [(set (match_dup 0)
+ 		   (plus:DI (reg:DI CA_REGNO)
+ 			    (const_int -1)))
+ 	      (clobber (reg:DI CA_REGNO))])]
+   ""
+ )
  
  (define_insn "@neg<mode>2"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
***************
*** 2837,2844 ****
        emit_insn (gen_bswapsi2 (dest_32, word2));
      }
  
!   emit_insn (gen_ashldi3 (op3, op3, GEN_INT (32)));
!   emit_insn (gen_iordi3 (dest, dest, op3));
    DONE;
  })
  
--- 2838,2845 ----
        emit_insn (gen_bswapsi2 (dest_32, word2));
      }
  
!   emit_insn (gen_rotldi3_insert_3 (dest, op3, GEN_INT (32), dest,
! 				   GEN_INT (0xffffffff)));
    DONE;
  })
  
***************
*** 2923,2932 ****
    rtx op3_si  = simplify_gen_subreg (SImode, op3, DImode, lo_off);
  
    emit_insn (gen_lshrdi3 (op2, src, GEN_INT (32)));
!   emit_insn (gen_bswapsi2 (dest_si, src_si));
!   emit_insn (gen_bswapsi2 (op3_si, op2_si));
!   emit_insn (gen_ashldi3 (dest, dest, GEN_INT (32)));
!   emit_insn (gen_iordi3 (dest, dest, op3));
    DONE;
  })
  
--- 2924,2933 ----
    rtx op3_si  = simplify_gen_subreg (SImode, op3, DImode, lo_off);
  
    emit_insn (gen_lshrdi3 (op2, src, GEN_INT (32)));
!   emit_insn (gen_bswapsi2 (op3_si, src_si));
!   emit_insn (gen_bswapsi2 (dest_si, op2_si));
!   emit_insn (gen_rotldi3_insert_3 (dest, op3, GEN_INT (32), dest,
! 				   GEN_INT (0xffffffff)));
    DONE;
  })
  
***************
*** 3216,3222 ****
    DONE;
  })
  
! (define_insn "*maddld<mode>4"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(plus:GPR (mult:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
  			    (match_operand:GPR 2 "gpc_reg_operand" "r"))
--- 3217,3223 ----
    DONE;
  })
  
! (define_insn "maddld<mode>4"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(plus:GPR (mult:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
  			    (match_operand:GPR 2 "gpc_reg_operand" "r"))
***************
*** 3225,3230 ****
--- 3226,3292 ----
    "maddld %0,%1,%2,%3"
    [(set_attr "type" "mul")])
  
+ ;; umaddditi4 generally needs maddhdu + maddld + add instructions,
+ ;; unless last operand is zero extended from DImode, then needs
+ ;; maddhdu + maddld, which is both faster than mulld + mulhdu + addc + adde
+ ;; resp. mulld + mulhdu + addc + addze.
+ ;; We don't define maddditi4, as that one needs
+ ;; maddhd + sradi + maddld + add + sub and for last operand sign extended
+ ;; from DImode nothing is able to optimize it into maddhd + maddld, while
+ ;; without maddditi4 mulld + mulhd + addc + adde or
+ ;; mulld + mulhd + sradi + addc + adde is needed.  See PR108787.
+ (define_expand "umaddditi4"
+   [(set (match_operand:TI 0 "gpc_reg_operand")
+ 	(plus:TI
+ 	  (mult:TI (zero_extend:TI (match_operand:DI 1 "gpc_reg_operand"))
+ 		   (zero_extend:TI (match_operand:DI 2 "gpc_reg_operand")))
+ 	  (match_operand:TI 3 "gpc_reg_operand")))]
+   "TARGET_MADDLD && TARGET_POWERPC64"
+ {
+   rtx op0_lo = gen_rtx_SUBREG (DImode, operands[0], BYTES_BIG_ENDIAN ? 8 : 0);
+   rtx op0_hi = gen_rtx_SUBREG (DImode, operands[0], BYTES_BIG_ENDIAN ? 0 : 8);
+   rtx op3_lo = gen_rtx_SUBREG (DImode, operands[3], BYTES_BIG_ENDIAN ? 8 : 0);
+   rtx op3_hi = gen_rtx_SUBREG (DImode, operands[3], BYTES_BIG_ENDIAN ? 0 : 8);
+   rtx hi_temp = gen_reg_rtx (DImode);
+ 
+   if (BYTES_BIG_ENDIAN)
+     emit_insn (gen_umadddi4_highpart (hi_temp, operands[1], operands[2],
+ 				      op3_lo));
+   else
+     emit_insn (gen_umadddi4_highpart_le (hi_temp, operands[1], operands[2],
+ 					 op3_lo));
+ 
+   emit_insn (gen_maddlddi4 (op0_lo, operands[1], operands[2], op3_lo));
+ 
+   emit_insn (gen_adddi3 (op0_hi, hi_temp, op3_hi));
+ 
+   DONE;
+ })
+ 
+ (define_insn "<u>madddi4_highpart"
+   [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
+ 	(subreg:DI
+ 	  (plus:TI
+ 	    (mult:TI (any_extend:TI (match_operand:DI 1 "gpc_reg_operand" "r"))
+ 		     (any_extend:TI (match_operand:DI 2 "gpc_reg_operand" "r")))
+ 	    (any_extend:TI (match_operand:DI 3 "gpc_reg_operand" "r")))
+ 	 0))]
+   "TARGET_MADDLD && BYTES_BIG_ENDIAN && TARGET_POWERPC64"
+   "maddhd<u> %0,%1,%2,%3"
+   [(set_attr "type" "mul")])
+ 
+ (define_insn "<u>madddi4_highpart_le"
+   [(set (match_operand:DI 0 "gpc_reg_operand" "=r")
+ 	(subreg:DI
+ 	  (plus:TI
+ 	    (mult:TI (any_extend:TI (match_operand:DI 1 "gpc_reg_operand" "r"))
+ 		     (any_extend:TI (match_operand:DI 2 "gpc_reg_operand" "r")))
+ 	    (any_extend:TI (match_operand:DI 3 "gpc_reg_operand" "r")))
+ 	 8))]
+   "TARGET_MADDLD && !BYTES_BIG_ENDIAN && TARGET_POWERPC64"
+   "maddhd<u> %0,%1,%2,%3"
+   [(set_attr "type" "mul")])
+ 
  (define_insn "udiv<mode>3"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
          (udiv:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
***************
*** 3375,3383 ****
  ;; In order to enable using a peephole2 for combining div/mod to eliminate the
  ;; mod, prefer putting the result of mod into a different register
  (define_insn "*mod<mode>3"
!   [(set (match_operand:GPR 0 "gpc_reg_operand" "=&r")
!         (mod:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
! 		 (match_operand:GPR 2 "gpc_reg_operand" "r")))]
    "TARGET_MODULO"
    "mods<wd> %0,%1,%2"
    [(set_attr "type" "div")
--- 3437,3445 ----
  ;; In order to enable using a peephole2 for combining div/mod to eliminate the
  ;; mod, prefer putting the result of mod into a different register
  (define_insn "*mod<mode>3"
!   [(set (match_operand:GPR 0 "gpc_reg_operand" "=&r,r")
!         (mod:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r")
! 		 (match_operand:GPR 2 "gpc_reg_operand" "r,r")))]
    "TARGET_MODULO"
    "mods<wd> %0,%1,%2"
    [(set_attr "type" "div")
***************
*** 3385,3393 ****
  
  
  (define_insn "umod<mode>3"
!   [(set (match_operand:GPR 0 "gpc_reg_operand" "=&r")
!         (umod:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
! 		  (match_operand:GPR 2 "gpc_reg_operand" "r")))]
    "TARGET_MODULO"
    "modu<wd> %0,%1,%2"
    [(set_attr "type" "div")
--- 3447,3455 ----
  
  
  (define_insn "umod<mode>3"
!   [(set (match_operand:GPR 0 "gpc_reg_operand" "=&r,r")
!         (umod:GPR (match_operand:GPR 1 "gpc_reg_operand" "r,r")
! 		  (match_operand:GPR 2 "gpc_reg_operand" "r,r")))]
    "TARGET_MODULO"
    "modu<wd> %0,%1,%2"
    [(set_attr "type" "div")
***************
*** 4224,4246 ****
    operands[4] = GEN_INT ((HOST_WIDE_INT_1U << INTVAL (operands[2])) - 1);
  })
  
! (define_insn "*rotl<mode>3_insert_4"
!   [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
! 	(ior:GPR (and:GPR (match_operand:GPR 3 "gpc_reg_operand" "0")
! 			  (match_operand:GPR 4 "const_int_operand" "n"))
! 		 (lshiftrt:GPR (match_operand:GPR 1 "gpc_reg_operand" "r")
! 			       (match_operand:SI 2 "const_int_operand" "n"))))]
!   "<MODE>mode == SImode &&
!    GET_MODE_PRECISION (<MODE>mode)
!    == INTVAL (operands[2]) + exact_log2 (-UINTVAL (operands[4]))"
! {
!   operands[2] = GEN_INT (GET_MODE_PRECISION (<MODE>mode)
! 			 - INTVAL (operands[2]));
!   if (<MODE>mode == SImode)
!     return "rlwimi %0,%1,%h2,32-%h2,31";
!   else
!     return "rldimi %0,%1,%H2,64-%H2";
! }
    [(set_attr "type" "insert")])
  
  (define_insn "*rotlsi3_insert_5"
--- 4286,4299 ----
    operands[4] = GEN_INT ((HOST_WIDE_INT_1U << INTVAL (operands[2])) - 1);
  })
  
! (define_insn "*rotlsi3_insert_4"
!   [(set (match_operand:SI 0 "gpc_reg_operand" "=r")
! 	(ior:SI (and:SI (match_operand:SI 3 "gpc_reg_operand" "0")
! 			(match_operand:SI 4 "const_int_operand" "n"))
! 		(lshiftrt:SI (match_operand:SI 1 "gpc_reg_operand" "r")
! 			     (match_operand:SI 2 "const_int_operand" "n"))))]
!   "INTVAL (operands[2]) + exact_log2 (-UINTVAL (operands[4])) == 32"
!   "rlwimi %0,%1,32-%h2,%h2,31"
    [(set_attr "type" "insert")])
  
  (define_insn "*rotlsi3_insert_5"
***************
*** 4890,4897 ****
    "")
  
  (define_insn "*abs<mode>2_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
! 	(abs:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")))]
    "TARGET_HARD_FLOAT"
    "@
     fabs %0,%1
--- 4943,4950 ----
    "")
  
  (define_insn "*abs<mode>2_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(abs:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fabs %0,%1
***************
*** 4899,4908 ****
    [(set_attr "type" "fpsimple")])
  
  (define_insn "*nabs<mode>2_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
  	(neg:SFDF
  	 (abs:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>"))))]
    "TARGET_HARD_FLOAT"
    "@
     fnabs %0,%1
--- 4952,4961 ----
    [(set_attr "type" "fpsimple")])
  
  (define_insn "*nabs<mode>2_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
  	(neg:SFDF
  	 (abs:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "d,wa"))))]
    "TARGET_HARD_FLOAT"
    "@
     fnabs %0,%1
***************
*** 4916,4923 ****
    "")
  
  (define_insn "*neg<mode>2_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
! 	(neg:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")))]
    "TARGET_HARD_FLOAT"
    "@
     fneg %0,%1
--- 4969,4976 ----
    "")
  
  (define_insn "*neg<mode>2_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(neg:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fneg %0,%1
***************
*** 4932,4940 ****
    "")
  
  (define_insn "*add<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(plus:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "%<Ff>,wa")
! 		   (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fadd<s> %0,%1,%2
--- 4985,4993 ----
    "")
  
  (define_insn "*add<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(plus:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "%d,wa")
! 		   (match_operand:SFDF 2 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fadd<s> %0,%1,%2
***************
*** 4950,4958 ****
    "")
  
  (define_insn "*sub<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(minus:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")
! 		    (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fsub<s> %0,%1,%2
--- 5003,5011 ----
    "")
  
  (define_insn "*sub<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(minus:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")
! 		    (match_operand:SFDF 2 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fsub<s> %0,%1,%2
***************
*** 4968,4976 ****
    "")
  
  (define_insn "*mul<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(mult:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "%<Ff>,wa")
! 		   (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fmul<s> %0,%1,%2
--- 5021,5029 ----
    "")
  
  (define_insn "*mul<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(mult:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "%d,wa")
! 		   (match_operand:SFDF 2 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fmul<s> %0,%1,%2
***************
*** 4994,5002 ****
  })
  
  (define_insn "*div<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(div:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")
! 		  (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fdiv<s> %0,%1,%2
--- 5047,5055 ----
  })
  
  (define_insn "*div<mode>3_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(div:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")
! 		  (match_operand:SFDF 2 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fdiv<s> %0,%1,%2
***************
*** 5005,5012 ****
     (set_attr "isa" "*,<Fisa>")])
  
  (define_insn "*sqrt<mode>2_internal"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(sqrt:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")))]
    "TARGET_HARD_FLOAT && TARGET_PPC_GPOPT"
    "@
     fsqrt<s> %0,%1
--- 5058,5065 ----
     (set_attr "isa" "*,<Fisa>")])
  
  (define_insn "*sqrt<mode>2_internal"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(sqrt:SFDF (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT && TARGET_PPC_GPOPT"
    "@
     fsqrt<s> %0,%1
***************
*** 5033,5040 ****
  
  ;; Floating point reciprocal approximation
  (define_insn "fre<sd>"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")]
  		     UNSPEC_FRES))]
    "TARGET_<FFRE>"
    "@
--- 5086,5093 ----
  
  ;; Floating point reciprocal approximation
  (define_insn "fre<sd>"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")]
  		     UNSPEC_FRES))]
    "TARGET_<FFRE>"
    "@
***************
*** 5080,5087 ****
   })
  
  (define_insn "*rsqrt<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")]
  		     UNSPEC_RSQRT))]
    "RS6000_RECIP_HAVE_RSQRTE_P (<MODE>mode)"
    "@
--- 5133,5140 ----
   })
  
  (define_insn "*rsqrt<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")]
  		     UNSPEC_RSQRT))]
    "RS6000_RECIP_HAVE_RSQRTE_P (<MODE>mode)"
    "@
***************
*** 5093,5100 ****
  ;; Floating point comparisons
  (define_insn "*cmp<mode>_fpr"
    [(set (match_operand:CCFP 0 "cc_reg_operand" "=y,y")
! 	(compare:CCFP (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa")
! 		      (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fcmpu %0,%1,%2
--- 5146,5153 ----
  ;; Floating point comparisons
  (define_insn "*cmp<mode>_fpr"
    [(set (match_operand:CCFP 0 "cc_reg_operand" "=y,y")
! 	(compare:CCFP (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")
! 		      (match_operand:SFDF 2 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fcmpu %0,%1,%2
***************
*** 5296,5304 ****
  ;; Use an unspec rather providing an if-then-else in RTL, to prevent the
  ;; compiler from optimizing -0.0
  (define_insn "copysign<mode>3_fcpsgn"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")
! 		      (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,<Fv>")]
  		     UNSPEC_COPYSIGN))]
    "TARGET_HARD_FLOAT && (TARGET_CMPB || VECTOR_UNIT_VSX_P (<MODE>mode))"
    "@
--- 5349,5357 ----
  ;; Use an unspec rather providing an if-then-else in RTL, to prevent the
  ;; compiler from optimizing -0.0
  (define_insn "copysign<mode>3_fcpsgn"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")
! 		      (match_operand:SFDF 2 "gpc_reg_operand" "d,wa")]
  		     UNSPEC_COPYSIGN))]
    "TARGET_HARD_FLOAT && (TARGET_CMPB || VECTOR_UNIT_VSX_P (<MODE>mode))"
    "@
***************
*** 5330,5338 ****
  })
  
  (define_insn "*s<minmax><mode>3_vsx"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=<Fv>")
! 	(fp_minmax:SFDF (match_operand:SFDF 1 "vsx_register_operand" "<Fv>")
! 			(match_operand:SFDF 2 "vsx_register_operand" "<Fv>")))]
    "TARGET_VSX && TARGET_HARD_FLOAT"
  {
    return (TARGET_P9_MINMAX
--- 5383,5391 ----
  })
  
  (define_insn "*s<minmax><mode>3_vsx"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa")
! 	(fp_minmax:SFDF (match_operand:SFDF 1 "vsx_register_operand" "wa")
! 			(match_operand:SFDF 2 "vsx_register_operand" "wa")))]
    "TARGET_VSX && TARGET_HARD_FLOAT"
  {
    return (TARGET_P9_MINMAX
***************
*** 5390,5402 ****
  ;; leave out the mode in operand 4 and use one pattern, but reload can
  ;; change the mode underneath our feet and then gets confused trying
  ;; to reload the value.
! (define_mode_iterator CCEITHER [CC CCUNS])
! (define_mode_attr un [(CC "") (CCUNS "un")])
! (define_insn "isel_<un>signed_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
  	(if_then_else:GPR
  	 (match_operator 1 "scc_comparison_operator"
! 			 [(match_operand:CCEITHER 4 "cc_reg_operand" "y,y")
  			  (const_int 0)])
  	 (match_operand:GPR 2 "reg_or_zero_operand" "O,b")
  	 (match_operand:GPR 3 "gpc_reg_operand" "r,r")))]
--- 5443,5454 ----
  ;; leave out the mode in operand 4 and use one pattern, but reload can
  ;; change the mode underneath our feet and then gets confused trying
  ;; to reload the value.
! (define_mode_iterator CCANY [CC CCUNS])
! (define_insn "isel_<CCANY:mode>_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
  	(if_then_else:GPR
  	 (match_operator 1 "scc_comparison_operator"
! 			 [(match_operand:CCANY 4 "cc_reg_operand" "y,y")
  			  (const_int 0)])
  	 (match_operand:GPR 2 "reg_or_zero_operand" "O,b")
  	 (match_operand:GPR 3 "gpc_reg_operand" "r,r")))]
***************
*** 5408,5418 ****
  ;; isel can handle reversed comparisons so long as the operands are
  ;; registers.
  
! (define_insn "*isel_reversed_<un>signed_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
  	(if_then_else:GPR
  	 (match_operator 1 "scc_rev_comparison_operator"
! 			 [(match_operand:CCEITHER 4 "cc_reg_operand" "y,y")
  			  (const_int 0)])
  	 (match_operand:GPR 2 "gpc_reg_operand" "r,r")
  	 (match_operand:GPR 3 "reg_or_zero_operand" "O,b")))]
--- 5460,5470 ----
  ;; isel can handle reversed comparisons so long as the operands are
  ;; registers.
  
! (define_insn "*isel_reversed_<CCANY:mode>_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r,r")
  	(if_then_else:GPR
  	 (match_operator 1 "scc_rev_comparison_operator"
! 			 [(match_operand:CCANY 4 "cc_reg_operand" "y,y")
  			  (const_int 0)])
  	 (match_operand:GPR 2 "gpc_reg_operand" "r,r")
  	 (match_operand:GPR 3 "reg_or_zero_operand" "O,b")))]
***************
*** 5424,5461 ****
    [(set_attr "type" "isel")])
  
  ; Set Boolean Condition (Reverse)
! (define_insn "setbc_<un>signed_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(match_operator:GPR 1 "scc_comparison_operator"
! 			[(match_operand:CCEITHER 2 "cc_reg_operand" "y")
  			 (const_int 0)]))]
    "TARGET_POWER10"
    "setbc %0,%j1"
    [(set_attr "type" "isel")])
  
! (define_insn "*setbcr_<un>signed_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(match_operator:GPR 1 "scc_rev_comparison_operator"
! 			[(match_operand:CCEITHER 2 "cc_reg_operand" "y")
  			 (const_int 0)]))]
    "TARGET_POWER10"
    "setbcr %0,%j1"
    [(set_attr "type" "isel")])
  
  ; Set Negative Boolean Condition (Reverse)
! (define_insn "*setnbc_<un>signed_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(neg:GPR (match_operator:GPR 1 "scc_comparison_operator"
! 			[(match_operand:CCEITHER 2 "cc_reg_operand" "y")
  			 (const_int 0)])))]
    "TARGET_POWER10"
    "setnbc %0,%j1"
    [(set_attr "type" "isel")])
  
! (define_insn "*setnbcr_<un>signed_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(neg:GPR (match_operator:GPR 1 "scc_rev_comparison_operator"
! 			[(match_operand:CCEITHER 2 "cc_reg_operand" "y")
  			 (const_int 0)])))]
    "TARGET_POWER10"
    "setnbcr %0,%j1"
--- 5476,5513 ----
    [(set_attr "type" "isel")])
  
  ; Set Boolean Condition (Reverse)
! (define_insn "setbc_<CCANY:mode>_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(match_operator:GPR 1 "scc_comparison_operator"
! 			[(match_operand:CCANY 2 "cc_reg_operand" "y")
  			 (const_int 0)]))]
    "TARGET_POWER10"
    "setbc %0,%j1"
    [(set_attr "type" "isel")])
  
! (define_insn "*setbcr_<CCANY:mode>_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(match_operator:GPR 1 "scc_rev_comparison_operator"
! 			[(match_operand:CCANY 2 "cc_reg_operand" "y")
  			 (const_int 0)]))]
    "TARGET_POWER10"
    "setbcr %0,%j1"
    [(set_attr "type" "isel")])
  
  ; Set Negative Boolean Condition (Reverse)
! (define_insn "*setnbc_<CCANY:mode>_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(neg:GPR (match_operator:GPR 1 "scc_comparison_operator"
! 			[(match_operand:CCANY 2 "cc_reg_operand" "y")
  			 (const_int 0)])))]
    "TARGET_POWER10"
    "setnbc %0,%j1"
    [(set_attr "type" "isel")])
  
! (define_insn "*setnbcr_<CCANY:mode>_<GPR:mode>"
    [(set (match_operand:GPR 0 "gpc_reg_operand" "=r")
  	(neg:GPR (match_operator:GPR 1 "scc_rev_comparison_operator"
! 			[(match_operand:CCANY 2 "cc_reg_operand" "y")
  			 (const_int 0)])))]
    "TARGET_POWER10"
    "setnbcr %0,%j1"
***************
*** 5487,5499 ****
    [(set_attr "type" "fp")])
  
  (define_insn_and_split "*mov<SFDF:mode><SFDF2:mode>cc_p9"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=&<SFDF:Fv>,<SFDF:Fv>")
  	(if_then_else:SFDF
  	 (match_operator:CCFP 1 "fpmask_comparison_operator"
! 		[(match_operand:SFDF2 2 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")
! 		 (match_operand:SFDF2 3 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")])
! 	 (match_operand:SFDF 4 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")
! 	 (match_operand:SFDF 5 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")))
     (clobber (match_scratch:V2DI 6 "=0,&wa"))]
    "TARGET_P9_MINMAX"
    "#"
--- 5539,5551 ----
    [(set_attr "type" "fp")])
  
  (define_insn_and_split "*mov<SFDF:mode><SFDF2:mode>cc_p9"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=&wa,wa")
  	(if_then_else:SFDF
  	 (match_operator:CCFP 1 "fpmask_comparison_operator"
! 		[(match_operand:SFDF2 2 "vsx_register_operand" "wa,wa")
! 		 (match_operand:SFDF2 3 "vsx_register_operand" "wa,wa")])
! 	 (match_operand:SFDF 4 "vsx_register_operand" "wa,wa")
! 	 (match_operand:SFDF 5 "vsx_register_operand" "wa,wa")))
     (clobber (match_scratch:V2DI 6 "=0,&wa"))]
    "TARGET_P9_MINMAX"
    "#"
***************
*** 5519,5531 ****
  
  ;; Handle inverting the fpmask comparisons.
  (define_insn_and_split "*mov<SFDF:mode><SFDF2:mode>cc_invert_p9"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=&<SFDF:Fv>,<SFDF:Fv>")
  	(if_then_else:SFDF
  	 (match_operator:CCFP 1 "invert_fpmask_comparison_operator"
! 		[(match_operand:SFDF2 2 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")
! 		 (match_operand:SFDF2 3 "vsx_register_operand" "<SFDF2:Fv>,<SFDF2:Fv>")])
! 	 (match_operand:SFDF 4 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")
! 	 (match_operand:SFDF 5 "vsx_register_operand" "<SFDF:Fv>,<SFDF:Fv>")))
     (clobber (match_scratch:V2DI 6 "=0,&wa"))]
    "TARGET_P9_MINMAX"
    "#"
--- 5571,5583 ----
  
  ;; Handle inverting the fpmask comparisons.
  (define_insn_and_split "*mov<SFDF:mode><SFDF2:mode>cc_invert_p9"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=&wa,wa")
  	(if_then_else:SFDF
  	 (match_operator:CCFP 1 "invert_fpmask_comparison_operator"
! 		[(match_operand:SFDF2 2 "vsx_register_operand" "wa,wa")
! 		 (match_operand:SFDF2 3 "vsx_register_operand" "wa,wa")])
! 	 (match_operand:SFDF 4 "vsx_register_operand" "wa,wa")
! 	 (match_operand:SFDF 5 "vsx_register_operand" "wa,wa")))
     (clobber (match_scratch:V2DI 6 "=0,&wa"))]
    "TARGET_P9_MINMAX"
    "#"
***************
*** 5558,5565 ****
    [(set (match_operand:V2DI 0 "vsx_register_operand" "=wa")
  	(if_then_else:V2DI
  	 (match_operator:CCFP 1 "fpmask_comparison_operator"
! 		[(match_operand:SFDF 2 "vsx_register_operand" "<Fv>")
! 		 (match_operand:SFDF 3 "vsx_register_operand" "<Fv>")])
  	 (match_operand:V2DI 4 "all_ones_constant" "")
  	 (match_operand:V2DI 5 "zero_constant" "")))]
    "TARGET_P9_MINMAX"
--- 5610,5617 ----
    [(set (match_operand:V2DI 0 "vsx_register_operand" "=wa")
  	(if_then_else:V2DI
  	 (match_operator:CCFP 1 "fpmask_comparison_operator"
! 		[(match_operand:SFDF 2 "vsx_register_operand" "wa")
! 		 (match_operand:SFDF 3 "vsx_register_operand" "wa")])
  	 (match_operand:V2DI 4 "all_ones_constant" "")
  	 (match_operand:V2DI 5 "zero_constant" "")))]
    "TARGET_P9_MINMAX"
***************
*** 5567,5577 ****
    [(set_attr "type" "fpcompare")])
  
  (define_insn "*xxsel<mode>"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=<Fv>")
  	(if_then_else:SFDF (ne (match_operand:V2DI 1 "vsx_register_operand" "wa")
  			       (match_operand:V2DI 2 "zero_constant" ""))
! 			   (match_operand:SFDF 3 "vsx_register_operand" "<Fv>")
! 			   (match_operand:SFDF 4 "vsx_register_operand" "<Fv>")))]
    "TARGET_P9_MINMAX"
    "xxsel %x0,%x4,%x3,%x1"
    [(set_attr "type" "vecmove")])
--- 5619,5629 ----
    [(set_attr "type" "fpcompare")])
  
  (define_insn "*xxsel<mode>"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa")
  	(if_then_else:SFDF (ne (match_operand:V2DI 1 "vsx_register_operand" "wa")
  			       (match_operand:V2DI 2 "zero_constant" ""))
! 			   (match_operand:SFDF 3 "vsx_register_operand" "wa")
! 			   (match_operand:SFDF 4 "vsx_register_operand" "wa")))]
    "TARGET_P9_MINMAX"
    "xxsel %x0,%x4,%x3,%x1"
    [(set_attr "type" "vecmove")])
***************
*** 5706,5712 ****
  ; not be needed and also in case the insns are deleted as dead code.
  
  (define_insn_and_split "floatsi<mode>2_lfiwax"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<Fv>")
  	(float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r,r")))
     (clobber (match_scratch:DI 2 "=d,wa"))]
    "TARGET_HARD_FLOAT && TARGET_LFIWAX
--- 5758,5764 ----
  ; not be needed and also in case the insns are deleted as dead code.
  
  (define_insn_and_split "floatsi<mode>2_lfiwax"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
  	(float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r,r")))
     (clobber (match_scratch:DI 2 "=d,wa"))]
    "TARGET_HARD_FLOAT && TARGET_LFIWAX
***************
*** 5745,5751 ****
     (set_attr "type" "fpload")])
  
  (define_insn_and_split "floatsi<mode>2_lfiwax_mem"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<Fv>")
  	(float:SFDF
  	 (sign_extend:DI
  	  (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
--- 5797,5803 ----
     (set_attr "type" "fpload")])
  
  (define_insn_and_split "floatsi<mode>2_lfiwax_mem"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
  	(float:SFDF
  	 (sign_extend:DI
  	  (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
***************
*** 5769,5775 ****
     (set_attr "type" "fpload")])
  
  (define_insn_and_split "floatsi<SFDF:mode>2_lfiwax_<QHI:mode>_mem_zext"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<Fv>")
  	(float:SFDF
  	 (zero_extend:SI
  	  (match_operand:QHI 1 "indexed_or_indirect_operand" "Z,Z"))))
--- 5821,5827 ----
     (set_attr "type" "fpload")])
  
  (define_insn_and_split "floatsi<SFDF:mode>2_lfiwax_<QHI:mode>_mem_zext"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
  	(float:SFDF
  	 (zero_extend:SI
  	  (match_operand:QHI 1 "indexed_or_indirect_operand" "Z,Z"))))
***************
*** 5803,5809 ****
     (set_attr "isa" "*,p8v,p8v,p9v")])
  
  (define_insn_and_split "floatunssi<mode>2_lfiwzx"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<Fv>")
  	(unsigned_float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r,r")))
     (clobber (match_scratch:DI 2 "=d,wa"))]
    "TARGET_HARD_FLOAT && TARGET_LFIWZX && <SI_CONVERT_FP>"
--- 5855,5861 ----
     (set_attr "isa" "*,p8v,p8v,p9v")])
  
  (define_insn_and_split "floatunssi<mode>2_lfiwzx"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
  	(unsigned_float:SFDF (match_operand:SI 1 "nonimmediate_operand" "r,r")))
     (clobber (match_scratch:DI 2 "=d,wa"))]
    "TARGET_HARD_FLOAT && TARGET_LFIWZX && <SI_CONVERT_FP>"
***************
*** 5841,5847 ****
     (set_attr "type" "fpload")])
  
  (define_insn_and_split "floatunssi<mode>2_lfiwzx_mem"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,<Fv>")
  	(unsigned_float:SFDF
  	 (zero_extend:DI
  	  (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
--- 5893,5899 ----
     (set_attr "type" "fpload")])
  
  (define_insn_and_split "floatunssi<mode>2_lfiwzx_mem"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
  	(unsigned_float:SFDF
  	 (zero_extend:DI
  	  (match_operand:SI 1 "indexed_or_indirect_operand" "Z,Z"))))
***************
*** 6027,6035 ****
  ;; the vector registers, rather then loading up a GPR, doing a sign/zero
  ;; extension and then a direct move.
  
! (define_expand "float<QHI:mode><FP_ISA3:mode>2"
!   [(parallel [(set (match_operand:FP_ISA3 0 "vsx_register_operand")
! 		   (float:FP_ISA3
  		    (match_operand:QHI 1 "input_operand")))
  	      (clobber (match_scratch:DI 2))
  	      (clobber (match_scratch:DI 3))
--- 6079,6087 ----
  ;; the vector registers, rather then loading up a GPR, doing a sign/zero
  ;; extension and then a direct move.
  
! (define_expand "float<QHI:mode><SFDF:mode>2"
!   [(parallel [(set (match_operand:SFDF 0 "vsx_register_operand")
! 		   (float:SFDF
  		    (match_operand:QHI 1 "input_operand")))
  	      (clobber (match_scratch:DI 2))
  	      (clobber (match_scratch:DI 3))
***************
*** 6040,6048 ****
      operands[1] = rs6000_force_indexed_or_indirect_mem (operands[1]);
  })
  
! (define_insn_and_split "*float<QHI:mode><FP_ISA3:mode>2_internal"
!   [(set (match_operand:FP_ISA3 0 "vsx_register_operand" "=<Fv>,<Fv>,<Fv>")
! 	(float:FP_ISA3
  	 (match_operand:QHI 1 "reg_or_indexed_operand" "v,r,Z")))
     (clobber (match_scratch:DI 2 "=v,wa,v"))
     (clobber (match_scratch:DI 3 "=X,r,X"))
--- 6092,6100 ----
      operands[1] = rs6000_force_indexed_or_indirect_mem (operands[1]);
  })
  
! (define_insn_and_split "*float<QHI:mode><SFDF:mode>2_internal"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa,wa,wa")
! 	(float:SFDF
  	 (match_operand:QHI 1 "reg_or_indexed_operand" "v,r,Z")))
     (clobber (match_scratch:DI 2 "=v,wa,v"))
     (clobber (match_scratch:DI 3 "=X,r,X"))
***************
*** 6076,6089 ****
        emit_insn (gen_extend<QHI:mode>di2 (di, tmp));
      }
  
!   emit_insn (gen_floatdi<FP_ISA3:mode>2 (result, di));
    DONE;
  }
    [(set_attr "isa" "p9v,*,p9v")])
  
! (define_expand "floatuns<QHI:mode><FP_ISA3:mode>2"
!   [(parallel [(set (match_operand:FP_ISA3 0 "vsx_register_operand")
! 		   (unsigned_float:FP_ISA3
  		    (match_operand:QHI 1 "input_operand")))
  	      (clobber (match_scratch:DI 2))
  	      (clobber (match_scratch:DI 3))])]
--- 6128,6141 ----
        emit_insn (gen_extend<QHI:mode>di2 (di, tmp));
      }
  
!   emit_insn (gen_floatdi<SFDF:mode>2 (result, di));
    DONE;
  }
    [(set_attr "isa" "p9v,*,p9v")])
  
! (define_expand "floatuns<QHI:mode><SFDF:mode>2"
!   [(parallel [(set (match_operand:SFDF 0 "vsx_register_operand")
! 		   (unsigned_float:SFDF
  		    (match_operand:QHI 1 "input_operand")))
  	      (clobber (match_scratch:DI 2))
  	      (clobber (match_scratch:DI 3))])]
***************
*** 6093,6101 ****
      operands[1] = rs6000_force_indexed_or_indirect_mem (operands[1]);
  })
  
! (define_insn_and_split "*floatuns<QHI:mode><FP_ISA3:mode>2_internal"
!   [(set (match_operand:FP_ISA3 0 "vsx_register_operand" "=<Fv>,<Fv>,<Fv>")
! 	(unsigned_float:FP_ISA3
  	 (match_operand:QHI 1 "reg_or_indexed_operand" "v,r,Z")))
     (clobber (match_scratch:DI 2 "=v,wa,wa"))
     (clobber (match_scratch:DI 3 "=X,r,X"))]
--- 6145,6153 ----
      operands[1] = rs6000_force_indexed_or_indirect_mem (operands[1]);
  })
  
! (define_insn_and_split "*floatuns<QHI:mode><SFDF:mode>2_internal"
!   [(set (match_operand:SFDF 0 "vsx_register_operand" "=wa,wa,wa")
! 	(unsigned_float:SFDF
  	 (match_operand:QHI 1 "reg_or_indexed_operand" "v,r,Z")))
     (clobber (match_scratch:DI 2 "=v,wa,wa"))
     (clobber (match_scratch:DI 3 "=X,r,X"))]
***************
*** 6122,6128 ****
  	}
      }
  
!   emit_insn (gen_floatdi<FP_ISA3:mode>2 (result, di));
    DONE;
  }
    [(set_attr "isa" "p9v,*,p9v")])
--- 6174,6180 ----
  	}
      }
  
!   emit_insn (gen_floatdi<SFDF:mode>2 (result, di));
    DONE;
  }
    [(set_attr "isa" "p9v,*,p9v")])
***************
*** 6224,6230 ****
  
  (define_insn "*fix_trunc<mode>di2_fctidz"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
! 	(fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")))]
    "TARGET_HARD_FLOAT && TARGET_FCFID"
    "@
     fctidz %0,%1
--- 6276,6282 ----
  
  (define_insn "*fix_trunc<mode>di2_fctidz"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
! 	(fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT && TARGET_FCFID"
    "@
     fctidz %0,%1
***************
*** 6343,6349 ****
  
  (define_insn "fixuns_trunc<mode>di2"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
! 	(unsigned_fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")))]
    "TARGET_HARD_FLOAT && TARGET_FCTIDUZ"
    "@
     fctiduz %0,%1
--- 6395,6401 ----
  
  (define_insn "fixuns_trunc<mode>di2"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
! 	(unsigned_fix:DI (match_operand:SFDF 1 "gpc_reg_operand" "d,wa")))]
    "TARGET_HARD_FLOAT && TARGET_FCTIDUZ"
    "@
     fctiduz %0,%1
***************
*** 6493,6499 ****
  (define_insn "fctiwz_<mode>"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
  	(unspec:DI [(fix:SI
! 		     (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>"))]
  		   UNSPEC_FCTIWZ))]
    "TARGET_HARD_FLOAT"
    "@
--- 6545,6551 ----
  (define_insn "fctiwz_<mode>"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
  	(unspec:DI [(fix:SI
! 		     (match_operand:SFDF 1 "gpc_reg_operand" "d,wa"))]
  		   UNSPEC_FCTIWZ))]
    "TARGET_HARD_FLOAT"
    "@
***************
*** 6504,6510 ****
  (define_insn "fctiwuz_<mode>"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
  	(unspec:DI [(unsigned_fix:SI
! 		     (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>"))]
  		   UNSPEC_FCTIWUZ))]
    "TARGET_HARD_FLOAT && TARGET_FCTIWUZ"
    "@
--- 6556,6562 ----
  (define_insn "fctiwuz_<mode>"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=d,wa")
  	(unspec:DI [(unsigned_fix:SI
! 		     (match_operand:SFDF 1 "gpc_reg_operand" "d,wa"))]
  		   UNSPEC_FCTIWUZ))]
    "TARGET_HARD_FLOAT && TARGET_FCTIWUZ"
    "@
***************
*** 6607,6614 ****
    [(set_attr "type" "fp")])
  
  (define_insn "btrunc<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")]
  		     UNSPEC_FRIZ))]
    "TARGET_HARD_FLOAT && TARGET_FPRND"
    "@
--- 6659,6666 ----
    [(set_attr "type" "fp")])
  
  (define_insn "btrunc<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")]
  		     UNSPEC_FRIZ))]
    "TARGET_HARD_FLOAT && TARGET_FPRND"
    "@
***************
*** 6617,6624 ****
    [(set_attr "type" "fp")])
  
  (define_insn "ceil<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")]
  		     UNSPEC_FRIP))]
    "TARGET_HARD_FLOAT && TARGET_FPRND"
    "@
--- 6669,6676 ----
    [(set_attr "type" "fp")])
  
  (define_insn "ceil<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")]
  		     UNSPEC_FRIP))]
    "TARGET_HARD_FLOAT && TARGET_FPRND"
    "@
***************
*** 6627,6634 ****
    [(set_attr "type" "fp")])
  
  (define_insn "floor<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,<Fv>")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,<Fv>")]
  		     UNSPEC_FRIM))]
    "TARGET_HARD_FLOAT && TARGET_FPRND"
    "@
--- 6679,6686 ----
    [(set_attr "type" "fp")])
  
  (define_insn "floor<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "d,wa")]
  		     UNSPEC_FRIM))]
    "TARGET_HARD_FLOAT && TARGET_FPRND"
    "@
***************
*** 6646,6653 ****
    [(set_attr "type" "fp")])
  
  (define_insn "*xsrdpi<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Fv>")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "<Fv>")]
  		     UNSPEC_XSRDPI))]
    "TARGET_HARD_FLOAT && TARGET_VSX"
    "xsrdpi %x0,%x1"
--- 6698,6705 ----
    [(set_attr "type" "fp")])
  
  (define_insn "*xsrdpi<mode>2"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=wa")
! 	(unspec:SFDF [(match_operand:SFDF 1 "gpc_reg_operand" "wa")]
  		     UNSPEC_XSRDPI))]
    "TARGET_HARD_FLOAT && TARGET_VSX"
    "xsrdpi %x0,%x1"
***************
*** 7728,7733 ****
--- 7780,7850 ----
    "xscvdpsp %x0,%x1"
    [(set_attr "type" "fp")])
  
+ 
+ (define_code_iterator eqne [eq ne])
+ 
+ ;; "i == C" ==> "rotl(i,N) == rotl(C,N)"
+ (define_insn_and_split "*rotate_on_cmpdi"
+   [(set (pc)
+ 	(if_then_else (eqne (match_operand:DI 1 "gpc_reg_operand" "r")
+ 			    (match_operand:DI 2 "const_int_operand" "n"))
+ 		      (label_ref (match_operand 0 ""))
+ 		      (pc)))
+   (clobber (match_scratch:DI 3 "=r"))
+   (clobber (match_scratch:CCUNS 4 "=y"))]
+   "TARGET_POWERPC64 && num_insns_constant (operands[2], DImode) > 1
+    && (can_be_rotated_to_positive_16bits (INTVAL (operands[2]))
+        || can_be_rotated_to_negative_15bits (INTVAL (operands[2])))"
+    "#"
+    "&& 1"
+   [(pc)]
+ {
+   bool sgn = false;
+   unsigned HOST_WIDE_INT C = INTVAL (operands[2]);
+   int rot;
+ 
+   /* cmpldi */
+   if (!can_be_rotated_to_lowbits (C, 16, &rot))
+     {
+       /* cmpdi */
+       sgn = true;
+       bool res = can_be_rotated_to_lowbits (~C, 15, &rot);
+       gcc_assert (res);
+     }
+ 
+   rtx n = GEN_INT (rot);
+ 
+   /* i' = rotl (i, n) */
+   rtx op0 = can_create_pseudo_p () ? gen_reg_rtx (DImode) : operands[3];
+   emit_insn (gen_rtx_SET (op0, gen_rtx_ROTATE (DImode, operands[1], n)));
+ 
+   /* C' = rotl (C, n) */
+   rtx op1 = GEN_INT ((C << rot) | (C >> (HOST_BITS_PER_WIDE_INT - rot)));
+ 
+   /* i' ==  C' */
+   machine_mode comp_mode = sgn ? CCmode : CCUNSmode;
+   rtx cc = can_create_pseudo_p () ? gen_reg_rtx (comp_mode) : operands[4];
+   PUT_MODE (cc, comp_mode);
+   emit_insn (gen_rtx_SET (cc, gen_rtx_COMPARE (comp_mode, op0, op1)));
+   rtx cmp = gen_rtx_<eqne:CODE> (CCmode, cc, const0_rtx);
+   rtx loc_ref = gen_rtx_LABEL_REF (VOIDmode, operands[0]);
+   emit_jump_insn (gen_rtx_SET (pc_rtx,
+ 			       gen_rtx_IF_THEN_ELSE (VOIDmode, cmp,
+ 						     loc_ref, pc_rtx)));
+ 
+   /* Keep the probability info for the prediction of the branch insn.  */
+   rtx note = find_reg_note (curr_insn, REG_BR_PROB, 0);
+   if (note)
+     {
+       profile_probability prob
+ 	= profile_probability::from_reg_br_prob_note (XINT (note, 0));
+ 
+       add_reg_br_prob_note (get_last_insn (), prob);
+     }
+ 
+   DONE;
+ })
+ 
  ;; Split a load of a large constant into the appropriate two-insn
  ;; sequence.
  
***************
*** 7735,7745 ****
    [(set (match_operand:SI 0 "gpc_reg_operand")
  	(match_operand:SI 1 "const_int_operand"))]
    "num_insns_constant (operands[1], SImode) > 1"
!   [(set (match_dup 0)
! 	(match_dup 2))
!    (set (match_dup 0)
! 	(ior:SI (match_dup 0)
! 		(match_dup 3)))]
  {
    if (rs6000_emit_set_const (operands[0], operands[1]))
      DONE;
--- 7852,7858 ----
    [(set (match_operand:SI 0 "gpc_reg_operand")
  	(match_operand:SI 1 "const_int_operand"))]
    "num_insns_constant (operands[1], SImode) > 1"
!   [(pc)]
  {
    if (rs6000_emit_set_const (operands[0], operands[1]))
      DONE;
***************
*** 7760,7766 ****
    rtx op0_v16qi = gen_rtx_REG (V16QImode, r);
  
    emit_insn (gen_xxspltib_v16qi (op0_v16qi, op1));
!   emit_insn (gen_vsx_sign_extend_qi_si (operands[0], op0_v16qi));
    DONE;
  })
  
--- 7873,7879 ----
    rtx op0_v16qi = gen_rtx_REG (V16QImode, r);
  
    emit_insn (gen_xxspltib_v16qi (op0_v16qi, op1));
!   emit_insn (gen_vsx_sign_extend_v16qi_si (operands[0], op0_v16qi));
    DONE;
  })
  
***************
*** 8180,8186 ****
    operands[2] = operand_subword (operands[0], endian, 0, <MODE>mode);
    operands[3] = operand_subword (operands[0], 1 - endian, 0, <MODE>mode);
    operands[4] = GEN_INT (value >> 32);
!   operands[1] = GEN_INT (((value & 0xffffffff) ^ 0x80000000) - 0x80000000);
  })
  
  (define_split
--- 8293,8299 ----
    operands[2] = operand_subword (operands[0], endian, 0, <MODE>mode);
    operands[3] = operand_subword (operands[0], 1 - endian, 0, <MODE>mode);
    operands[4] = GEN_INT (value >> 32);
!   operands[1] = GEN_INT (sext_hwi (value, 32));
  })
  
  (define_split
***************
*** 9544,9550 ****
    operands[3] = operand_subword_force (operands[0], WORDS_BIG_ENDIAN != 0,
  				       DImode);
    operands[4] = GEN_INT (value >> 32);
!   operands[1] = GEN_INT (((value & 0xffffffff) ^ 0x80000000) - 0x80000000);
  })
  
  (define_split
--- 9657,9663 ----
    operands[3] = operand_subword_force (operands[0], WORDS_BIG_ENDIAN != 0,
  				       DImode);
    operands[4] = GEN_INT (value >> 32);
!   operands[1] = GEN_INT (sext_hwi (value, 32));
  })
  
  (define_split
***************
*** 9649,9655 ****
  ; Some DImode loads are best done as a load of -1 followed by a mask
  ; instruction.
  (define_split
!   [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
  	(match_operand:DI 1 "const_int_operand"))]
    "TARGET_POWERPC64
     && num_insns_constant (operands[1], DImode) > 1
--- 9762,9768 ----
  ; Some DImode loads are best done as a load of -1 followed by a mask
  ; instruction.
  (define_split
!   [(set (match_operand:DI 0 "int_reg_operand")
  	(match_operand:DI 1 "const_int_operand"))]
    "TARGET_POWERPC64
     && num_insns_constant (operands[1], DImode) > 1
***************
*** 9667,9690 ****
  ;; When non-easy constants can go in the TOC, this should use
  ;; easy_fp_constant predicate.
  (define_split
!   [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
  	(match_operand:DI 1 "const_int_operand"))]
    "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
!   [(set (match_dup 0) (match_dup 2))
!    (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
! {
!   if (rs6000_emit_set_const (operands[0], operands[1]))
!     DONE;
!   else
!     FAIL;
! })
! 
! (define_split
!   [(set (match_operand:DI 0 "int_reg_operand_not_pseudo")
! 	(match_operand:DI 1 "const_scalar_int_operand"))]
!   "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
!   [(set (match_dup 0) (match_dup 2))
!    (set (match_dup 0) (plus:DI (match_dup 0) (match_dup 3)))]
  {
    if (rs6000_emit_set_const (operands[0], operands[1]))
      DONE;
--- 9780,9789 ----
  ;; When non-easy constants can go in the TOC, this should use
  ;; easy_fp_constant predicate.
  (define_split
!   [(set (match_operand:DI 0 "int_reg_operand")
  	(match_operand:DI 1 "const_int_operand"))]
    "TARGET_POWERPC64 && num_insns_constant (operands[1], DImode) > 1"
!   [(pc)]
  {
    if (rs6000_emit_set_const (operands[0], operands[1]))
      DONE;
***************
*** 9727,9735 ****
  
    emit_insn (gen_xxspltib_v16qi (op0_v16qi, op1));
    if (<MODE>mode == DImode)
!     emit_insn (gen_vsx_sign_extend_qi_di (operands[0], op0_v16qi));
    else if (<MODE>mode == SImode)
!     emit_insn (gen_vsx_sign_extend_qi_si (operands[0], op0_v16qi));
    else if (<MODE>mode == HImode)
      {
        rtx op0_v8hi = gen_rtx_REG (V8HImode, r);
--- 9826,9834 ----
  
    emit_insn (gen_xxspltib_v16qi (op0_v16qi, op1));
    if (<MODE>mode == DImode)
!     emit_insn (gen_vsx_sign_extend_v16qi_di (operands[0], op0_v16qi));
    else if (<MODE>mode == SImode)
!     emit_insn (gen_vsx_sign_extend_v16qi_si (operands[0], op0_v16qi));
    else if (<MODE>mode == HImode)
      {
        rtx op0_v8hi = gen_rtx_REG (V8HImode, r);
***************
*** 10171,10177 ****
     (set_attr "indexed" "yes,no")])
  
  (define_insn "*mov<SFDF:mode>_update1"
!   [(set (match_operand:SFDF 3 "gpc_reg_operand" "=<SFDF:Ff>,<SFDF:Ff>")
  	(mem:SFDF (plus:P (match_operand:P 1 "gpc_reg_operand" "0,0")
  			  (match_operand:P 2 "reg_or_short_operand" "r,I"))))
     (set (match_operand:P 0 "gpc_reg_operand" "=b,b")
--- 10270,10276 ----
     (set_attr "indexed" "yes,no")])
  
  (define_insn "*mov<SFDF:mode>_update1"
!   [(set (match_operand:SFDF 3 "gpc_reg_operand" "=d,d")
  	(mem:SFDF (plus:P (match_operand:P 1 "gpc_reg_operand" "0,0")
  			  (match_operand:P 2 "reg_or_short_operand" "r,I"))))
     (set (match_operand:P 0 "gpc_reg_operand" "=b,b")
***************
*** 10190,10196 ****
  (define_insn "*mov<SFDF:mode>_update2"
    [(set (mem:SFDF (plus:P (match_operand:P 1 "gpc_reg_operand" "0,0")
  			  (match_operand:P 2 "reg_or_short_operand" "r,I")))
! 	(match_operand:SFDF 3 "gpc_reg_operand" "<SFDF:Ff>,<SFDF:Ff>"))
     (set (match_operand:P 0 "gpc_reg_operand" "=b,b")
  	(plus:P (match_dup 1) (match_dup 2)))]
    "TARGET_HARD_FLOAT && TARGET_UPDATE
--- 10289,10295 ----
  (define_insn "*mov<SFDF:mode>_update2"
    [(set (mem:SFDF (plus:P (match_operand:P 1 "gpc_reg_operand" "0,0")
  			  (match_operand:P 2 "reg_or_short_operand" "r,I")))
! 	(match_operand:SFDF 3 "gpc_reg_operand" "d,d"))
     (set (match_operand:P 0 "gpc_reg_operand" "=b,b")
  	(plus:P (match_dup 1) (match_dup 2)))]
    "TARGET_HARD_FLOAT && TARGET_UPDATE
***************
*** 11894,11899 ****
--- 11993,12008 ----
    DONE;
  })
  
+ (define_expand "cbranchcc4"
+   [(set (pc)
+ 	(if_then_else (match_operator 0 "branch_comparison_operator"
+ 			[(match_operand 1 "cc_reg_operand")
+ 			 (match_operand 2 "zero_constant")])
+ 		      (label_ref (match_operand 3))
+ 		      (pc)))]
+   ""
+   "")
+ 
  (define_expand "cstore<mode>4_signed"
    [(use (match_operator 1 "signed_comparison_operator"
           [(match_operand:P 2 "gpc_reg_operand")
***************
*** 12406,12412 ****
  					      SImode,
  					      operands[1], operands[2]);
    HOST_WIDE_INT c = INTVAL (cnst);
!   HOST_WIDE_INT sextc = ((c & 0xffff) ^ 0x8000) - 0x8000;
    HOST_WIDE_INT xorv = c ^ sextc;
  
    operands[9] = GEN_INT (xorv);
--- 12515,12521 ----
  					      SImode,
  					      operands[1], operands[2]);
    HOST_WIDE_INT c = INTVAL (cnst);
!   HOST_WIDE_INT sextc = sext_hwi (c, 16);
    HOST_WIDE_INT xorv = c ^ sextc;
  
    operands[9] = GEN_INT (xorv);
***************
*** 12624,12630 ****
        rtx compare = gen_rtx_COMPARE (CCmode, operands[1], operands[2]);
        emit_insn (gen_rtx_SET (cc, compare));
        rtx eq = gen_rtx_fmt_ee (EQ, <MODE>mode, cc, const0_rtx);
!       emit_insn (gen_setbc_signed_<mode> (operands[0], eq, cc));
        DONE;
      }
  
--- 12733,12739 ----
        rtx compare = gen_rtx_COMPARE (CCmode, operands[1], operands[2]);
        emit_insn (gen_rtx_SET (cc, compare));
        rtx eq = gen_rtx_fmt_ee (EQ, <MODE>mode, cc, const0_rtx);
!       emit_insn (gen_setbc_cc_<mode> (operands[0], eq, cc));
        DONE;
      }
  
***************
*** 12680,12686 ****
        rtx compare = gen_rtx_COMPARE (CCmode, operands[1], operands[2]);
        emit_insn (gen_rtx_SET (cc, compare));
        rtx ne = gen_rtx_fmt_ee (NE, <MODE>mode, cc, const0_rtx);
!       emit_insn (gen_setbc_signed_<mode> (operands[0], ne, cc));
        DONE;
      }
  
--- 12789,12795 ----
        rtx compare = gen_rtx_COMPARE (CCmode, operands[1], operands[2]);
        emit_insn (gen_rtx_SET (cc, compare));
        rtx ne = gen_rtx_fmt_ee (NE, <MODE>mode, cc, const0_rtx);
!       emit_insn (gen_setbc_cc_<mode> (operands[0], ne, cc));
        DONE;
      }
  
***************
*** 13434,13440 ****
  ;; rs6000_legitimate_combined_insn prevents combine creating any of
  ;; the ctr<mode> insns.
  
- (define_code_iterator eqne [eq ne])
  (define_code_attr bd [(eq "bdz") (ne "bdnz")])
  (define_code_attr bd_neg [(eq "bdnz") (ne "bdz")])
  
--- 13543,13548 ----
***************
*** 14161,14171 ****
    "")
  
  (define_insn "*fma<mode>4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa,wa")
  	(fma:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "%<Ff>,wa,wa")
! 	  (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa,0")
! 	  (match_operand:SFDF 3 "gpc_reg_operand" "<Ff>,0,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fmadd<s> %0,%1,%2,%3
--- 14269,14279 ----
    "")
  
  (define_insn "*fma<mode>4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa,wa")
  	(fma:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "%d,wa,wa")
! 	  (match_operand:SFDF 2 "gpc_reg_operand" "d,wa,0")
! 	  (match_operand:SFDF 3 "gpc_reg_operand" "d,0,wa")))]
    "TARGET_HARD_FLOAT"
    "@
     fmadd<s> %0,%1,%2,%3
***************
*** 14185,14195 ****
    "")
  
  (define_insn "*fms<mode>4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa,wa")
  	(fma:SFDF
! 	 (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa,wa")
! 	 (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa,0")
! 	 (neg:SFDF (match_operand:SFDF 3 "gpc_reg_operand" "<Ff>,0,wa"))))]
    "TARGET_HARD_FLOAT"
    "@
     fmsub<s> %0,%1,%2,%3
--- 14293,14303 ----
    "")
  
  (define_insn "*fms<mode>4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa,wa")
  	(fma:SFDF
! 	 (match_operand:SFDF 1 "gpc_reg_operand" "d,wa,wa")
! 	 (match_operand:SFDF 2 "gpc_reg_operand" "d,wa,0")
! 	 (neg:SFDF (match_operand:SFDF 3 "gpc_reg_operand" "d,0,wa"))))]
    "TARGET_HARD_FLOAT"
    "@
     fmsub<s> %0,%1,%2,%3
***************
*** 14232,14243 ****
    "")
  
  (define_insn "*nfma<mode>4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa,wa")
  	(neg:SFDF
  	 (fma:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa,wa")
! 	  (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa,0")
! 	  (match_operand:SFDF 3 "gpc_reg_operand" "<Ff>,0,wa"))))]
    "TARGET_HARD_FLOAT"
    "@
     fnmadd<s> %0,%1,%2,%3
--- 14340,14351 ----
    "")
  
  (define_insn "*nfma<mode>4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa,wa")
  	(neg:SFDF
  	 (fma:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "d,wa,wa")
! 	  (match_operand:SFDF 2 "gpc_reg_operand" "d,wa,0")
! 	  (match_operand:SFDF 3 "gpc_reg_operand" "d,0,wa"))))]
    "TARGET_HARD_FLOAT"
    "@
     fnmadd<s> %0,%1,%2,%3
***************
*** 14258,14270 ****
    "")
  
  (define_insn "*nfmssf4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=<Ff>,wa,wa")
  	(neg:SFDF
  	 (fma:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "<Ff>,wa,wa")
! 	  (match_operand:SFDF 2 "gpc_reg_operand" "<Ff>,wa,0")
  	  (neg:SFDF
! 	   (match_operand:SFDF 3 "gpc_reg_operand" "<Ff>,0,wa")))))]
    "TARGET_HARD_FLOAT"
    "@
     fnmsub<s> %0,%1,%2,%3
--- 14366,14378 ----
    "")
  
  (define_insn "*nfmssf4_fpr"
!   [(set (match_operand:SFDF 0 "gpc_reg_operand" "=d,wa,wa")
  	(neg:SFDF
  	 (fma:SFDF
! 	  (match_operand:SFDF 1 "gpc_reg_operand" "d,wa,wa")
! 	  (match_operand:SFDF 2 "gpc_reg_operand" "d,wa,0")
  	  (neg:SFDF
! 	   (match_operand:SFDF 3 "gpc_reg_operand" "d,0,wa")))))]
    "TARGET_HARD_FLOAT"
    "@
     fnmsub<s> %0,%1,%2,%3
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs6000.opt gcc-13.1.0/gcc/config/rs6000/rs6000.opt
*** gcc-12.2.0/gcc/config/rs6000/rs6000.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs6000.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the rs6000 port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; Options for the rs6000 port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
*************** enum rs6000_cmodel rs6000_current_cmodel
*** 96,105 ****
  TargetVariable
  unsigned int rs6000_recip_control
  
- ;; Mask of what builtin functions are allowed
- TargetVariable
- HOST_WIDE_INT rs6000_builtin_mask
- 
  ;; Debug flags
  TargetVariable
  unsigned int rs6000_debug
--- 96,101 ----
*************** mieee128-constant
*** 624,629 ****
--- 620,633 ----
  Target Var(TARGET_IEEE128_CONSTANT) Init(1) Save
  Generate (do not generate) code that uses the LXVKQ instruction.
  
+ ; Documented parameters
+ 
+ -param=rs6000-vect-unroll-limit=
+ Target Joined UInteger Var(rs6000_vect_unroll_limit) Init(4) IntegerRange(1, 64) Param
+ Used to limit unroll factor which indicates how much the autovectorizer may
+ unroll a loop.  The default value is 4.
+ 
+ ; Undocumented parameters
  -param=rs6000-density-pct-threshold=
  Target Undocumented Joined UInteger Var(rs6000_density_pct_threshold) Init(85) IntegerRange(0, 100) Param
  When costing for loop vectorization, we probably need to penalize the loop body
*************** Like parameter rs6000-density-load-pct-t
*** 661,663 ****
--- 665,677 ----
  number of load statements exceeds the threshold specified by this parameter,
  and penalize only if it's satisfied.  The default value is 20.
  
+ -param=rs6000-vect-unroll-issue=
+ Target Undocumented Joined UInteger Var(rs6000_vect_unroll_issue) Init(4) IntegerRange(1, 128) Param
+ Indicate how many non memory access vector instructions can be issued per
+ cycle, it's used in unroll factor determination for autovectorizer.  The
+ default value is 4.
+ 
+ -param=rs6000-vect-unroll-reduc-threshold=
+ Target Undocumented Joined UInteger Var(rs6000_vect_unroll_reduc_threshold) Init(1) Param
+ When reduction factor computed for a loop exceeds the threshold specified by
+ this parameter, prefer to unroll this loop.  The default value is 1.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rs64.md gcc-13.1.0/gcc/config/rs6000/rs64.md
*** gcc-12.2.0/gcc/config/rs6000/rs64.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rs64.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for IBM RS64 processors.
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for IBM RS64 processors.
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/rtems.h gcc-13.1.0/gcc/config/rs6000/rtems.h
*** gcc-12.2.0/gcc/config/rs6000/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a PowerPC using elf.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a PowerPC using elf.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
***************
*** 255,261 ****
  %{mcpu=821:  %{!Dppc*: %{!Dmpc*: -Dmpc821}  } } \
  %{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } } \
  %{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540}  } } \
! %{mcpu=e6500: -D__PPC_CPU_E6500__}"
  
  #undef	ASM_SPEC
  #define	ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
--- 255,262 ----
  %{mcpu=821:  %{!Dppc*: %{!Dmpc*: -Dmpc821}  } } \
  %{mcpu=860:  %{!Dppc*: %{!Dmpc*: -Dmpc860}  } } \
  %{mcpu=8540: %{!Dppc*: %{!Dmpc*: -Dppc8540}  } } \
! %{mcpu=e6500: -D__PPC_CPU_E6500__} \
! %{mvrsave: -D__PPC_VRSAVE__}"
  
  #undef	ASM_SPEC
  #define	ASM_SPEC "%{!m64:%(asm_spec32)}%{m64:%(asm_spec64)} %(asm_spec_common)"
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/secureplt.h gcc-13.1.0/gcc/config/rs6000/secureplt.h
*** gcc-12.2.0/gcc/config/rs6000/secureplt.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/secureplt.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Default to -msecure-plt.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Default to -msecure-plt.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/si2vmx.h gcc-13.1.0/gcc/config/rs6000/si2vmx.h
*** gcc-12.2.0/gcc/config/rs6000/si2vmx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/si2vmx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Cell BEA specific SPU intrinsics to PPU/VMX intrinsics
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,5 ----
  /* Cell BEA specific SPU intrinsics to PPU/VMX intrinsics
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/smmintrin.h gcc-13.1.0/gcc/config/rs6000/smmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/smmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/smmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/spu2vmx.h gcc-13.1.0/gcc/config/rs6000/spu2vmx.h
*** gcc-12.2.0/gcc/config/rs6000/spu2vmx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/spu2vmx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Cell SPU 2 VMX intrinsics header
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,5 ----
  /* Cell SPU 2 VMX intrinsics header
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/sync.md gcc-13.1.0/gcc/config/rs6000/sync.md
*** gcc-12.2.0/gcc/config/rs6000/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for PowerPC synchronization instructions.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Geoffrey Keating.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Machine description for PowerPC synchronization instructions.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Geoffrey Keating.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/sysv4.h gcc-13.1.0/gcc/config/rs6000/sysv4.h
*** gcc-12.2.0/gcc/config/rs6000/sysv4.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/sysv4.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for GNU compiler for PowerPC running System V.4
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
--- 1,5 ----
  /* Target definitions for GNU compiler for PowerPC running System V.4
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
*************** extern int fixuplabelno;
*** 504,512 ****
  #undef  PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
- /* Historically we have also supported stabs debugging.  */
- #define DBX_DEBUGGING_INFO 1
- 
  #define TARGET_ENCODE_SECTION_INFO  rs6000_elf_encode_section_info
  #define TARGET_IN_SMALL_DATA_P  rs6000_elf_in_small_data_p
  
--- 504,509 ----
*************** extern int fixuplabelno;
*** 515,525 ****
  #define	RS6000_OUTPUT_BASENAME(FILE, NAME)	\
      assemble_name (FILE, NAME)
  
- /* We have to output the stabs for the function name *first*, before
-    outputting its label.  */
- 
- #define	DBX_FUNCTION_FIRST
- 
  /* This is the end of what might become sysv4dbx.h.  */
  
  #define TARGET_OS_SYSV_CPP_BUILTINS()		\
--- 512,517 ----
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/sysv4.opt gcc-13.1.0/gcc/config/rs6000/sysv4.opt
*** gcc-12.2.0/gcc/config/rs6000/sysv4.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/sysv4.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; SYSV4 options for PPC port.
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
--- 1,6 ----
  ; SYSV4 options for PPC port.
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ; Contributed by Aldy Hernandez <aldy@quesejoda.com>.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/sysv4le.h gcc-13.1.0/gcc/config/rs6000/sysv4le.h
*** gcc-12.2.0/gcc/config/rs6000/sysv4le.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/sysv4le.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Target definitions for GCC for a little endian PowerPC
     running System V.4
!    Copyright (C) 1995-2022 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
--- 1,6 ----
  /* Target definitions for GCC for a little endian PowerPC
     running System V.4
!    Copyright (C) 1995-2023 Free Software Foundation, Inc.
     Contributed by Cygnus Support.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-aix52 gcc-13.1.0/gcc/config/rs6000/t-aix52
*** gcc-12.2.0/gcc/config/rs6000/t-aix52	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-aix52	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-aix64 gcc-13.1.0/gcc/config/rs6000/t-aix64
*** gcc-12.2.0/gcc/config/rs6000/t-aix64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-aix64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-fprules gcc-13.1.0/gcc/config/rs6000/t-fprules
*** gcc-12.2.0/gcc/config/rs6000/t-fprules	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-fprules	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-freebsd64 gcc-13.1.0/gcc/config/rs6000/t-freebsd64
*** gcc-12.2.0/gcc/config/rs6000/t-freebsd64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-freebsd64	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #rs6000/t-freebsd64
  
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #rs6000/t-freebsd64
  
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-linux64 gcc-13.1.0/gcc/config/rs6000/t-linux64
*** gcc-12.2.0/gcc/config/rs6000/t-linux64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-linux64	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  #rs6000/t-linux64
  
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  #rs6000/t-linux64
  
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-lynx gcc-13.1.0/gcc/config/rs6000/t-lynx
*** gcc-12.2.0/gcc/config/rs6000/t-lynx	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-lynx	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-netbsd gcc-13.1.0/gcc/config/rs6000/t-netbsd
*** gcc-12.2.0/gcc/config/rs6000/t-netbsd	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-netbsd	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Support for NetBSD PowerPC ELF targets (SVR4 ABI).
  #
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Support for NetBSD PowerPC ELF targets (SVR4 ABI).
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-ppccomm gcc-13.1.0/gcc/config/rs6000/t-ppccomm
*** gcc-12.2.0/gcc/config/rs6000/t-ppccomm	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-ppccomm	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Common support for PowerPC ELF targets (both EABI and SVR4).
  #
! # Copyright (C) 1996-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Common support for PowerPC ELF targets (both EABI and SVR4).
  #
! # Copyright (C) 1996-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-ppcendian gcc-13.1.0/gcc/config/rs6000/t-ppcendian
*** gcc-12.2.0/gcc/config/rs6000/t-ppcendian	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-ppcendian	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilibs for powerpc embedded ELF targets with altivec.
  #
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Multilibs for powerpc embedded ELF targets with altivec.
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-ppcgas gcc-13.1.0/gcc/config/rs6000/t-ppcgas
*** gcc-12.2.0/gcc/config/rs6000/t-ppcgas	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-ppcgas	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilibs for powerpc embedded ELF targets.
  #
! # Copyright (C) 1995-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Multilibs for powerpc embedded ELF targets.
  #
! # Copyright (C) 1995-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-rs6000 gcc-13.1.0/gcc/config/rs6000/t-rs6000
*** gcc-12.2.0/gcc/config/rs6000/t-rs6000	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-rs6000	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # General rules that all rs6000/ targets must have.
  #
! # Copyright (C) 1995-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # General rules that all rs6000/ targets must have.
  #
! # Copyright (C) 1995-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-rtems gcc-13.1.0/gcc/config/rs6000/t-rtems
*** gcc-12.2.0/gcc/config/rs6000/t-rtems	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-rtems	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilibs for powerpc RTEMS targets.
  #
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Multilibs for powerpc RTEMS targets.
  #
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** MULTILIB_DIRNAMES += nof
*** 36,41 ****
--- 36,44 ----
  MULTILIB_OPTIONS += mno-altivec
  MULTILIB_DIRNAMES += noaltivec
  
+ MULTILIB_OPTIONS += mvrsave
+ MULTILIB_DIRNAMES += vrsave
+ 
  MULTILIB_MATCHES  	+= ${MULTILIB_MATCHES_ENDIAN}
  MULTILIB_MATCHES	+= ${MULTILIB_MATCHES_SYSV}
  # Map 405 to 403
*************** MULTILIB_REQUIRED += mcpu=7400/msoft-flo
*** 70,74 ****
--- 73,79 ----
  MULTILIB_REQUIRED += mcpu=8540/msoft-float
  MULTILIB_REQUIRED += mcpu=860
  MULTILIB_REQUIRED += mcpu=e6500/m32
+ MULTILIB_REQUIRED += mcpu=e6500/m32/mvrsave
  MULTILIB_REQUIRED += mcpu=e6500/m32/msoft-float/mno-altivec
  MULTILIB_REQUIRED += mcpu=e6500/m64
+ MULTILIB_REQUIRED += mcpu=e6500/m64/mvrsave
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/t-vxworks gcc-13.1.0/gcc/config/rs6000/t-vxworks
*** gcc-12.2.0/gcc/config/rs6000/t-vxworks	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/t-vxworks	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # Multilibs for VxWorks.
  #
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # Multilibs for VxWorks.
  #
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/titan.md gcc-13.1.0/gcc/config/rs6000/titan.md
*** gcc-12.2.0/gcc/config/rs6000/titan.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/titan.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Pipeline description for the AppliedMicro Titan core.
! ;;   Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;;   Contributed by Theobroma Systems Design und Consulting GmbH
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Pipeline description for the AppliedMicro Titan core.
! ;;   Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;;   Contributed by Theobroma Systems Design und Consulting GmbH
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/tmmintrin.h gcc-13.1.0/gcc/config/rs6000/tmmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/tmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/tmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/vec_types.h gcc-13.1.0/gcc/config/rs6000/vec_types.h
*** gcc-12.2.0/gcc/config/rs6000/vec_types.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/vec_types.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Cell single token vector types
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
     This file 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
--- 1,5 ----
  /* Cell single token vector types
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
     This file 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
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/vector.md gcc-13.1.0/gcc/config/rs6000/vector.md
*** gcc-12.2.0/gcc/config/rs6000/vector.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/vector.md	Wed Apr 26 07:09:39 2023
***************
*** 3,9 ****
  ;; expander, and the actual vector instructions will be in altivec.md and
  ;; vsx.md
  
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner <meissner@linux.vnet.ibm.com>
  
  ;; This file is part of GCC.
--- 3,9 ----
  ;; expander, and the actual vector instructions will be in altivec.md and
  ;; vsx.md
  
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner <meissner@linux.vnet.ibm.com>
  
  ;; This file is part of GCC.
***************
*** 26,31 ****
--- 26,34 ----
  ;; Vector int modes
  (define_mode_iterator VEC_I [V16QI V8HI V4SI V2DI])
  
+ ;; Vector int modes for comparison, shift and rotation
+ (define_mode_iterator VEC_IC [V16QI V8HI V4SI V2DI (V1TI "TARGET_POWER10")])
+ 
  ;; 128-bit int modes
  (define_mode_iterator VEC_TI [V1TI TI])
  
***************
*** 533,542 ****
  
  ;; For signed integer vectors comparison.
  (define_expand "vec_cmp<mode><mode>"
!   [(set (match_operand:VEC_I 0 "vint_operand")
  	(match_operator 1 "signed_or_equality_comparison_operator"
! 	  [(match_operand:VEC_I 2 "vint_operand")
! 	   (match_operand:VEC_I 3 "vint_operand")]))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    enum rtx_code code = GET_CODE (operands[1]);
--- 536,545 ----
  
  ;; For signed integer vectors comparison.
  (define_expand "vec_cmp<mode><mode>"
!   [(set (match_operand:VEC_IC 0 "vint_operand")
  	(match_operator 1 "signed_or_equality_comparison_operator"
! 	  [(match_operand:VEC_IC 2 "vint_operand")
! 	   (match_operand:VEC_IC 3 "vint_operand")]))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    enum rtx_code code = GET_CODE (operands[1]);
***************
*** 573,582 ****
  
  ;; For unsigned integer vectors comparison.
  (define_expand "vec_cmpu<mode><mode>"
!   [(set (match_operand:VEC_I 0 "vint_operand")
  	(match_operator 1 "unsigned_or_equality_comparison_operator"
! 	  [(match_operand:VEC_I 2 "vint_operand")
! 	   (match_operand:VEC_I 3 "vint_operand")]))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    enum rtx_code code = GET_CODE (operands[1]);
--- 576,585 ----
  
  ;; For unsigned integer vectors comparison.
  (define_expand "vec_cmpu<mode><mode>"
!   [(set (match_operand:VEC_IC 0 "vint_operand")
  	(match_operator 1 "unsigned_or_equality_comparison_operator"
! 	  [(match_operand:VEC_IC 2 "vint_operand")
! 	   (match_operand:VEC_IC 3 "vint_operand")]))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    enum rtx_code code = GET_CODE (operands[1]);
***************
*** 690,805 ****
  
  ; >= for integer vectors: swap operands and apply not-greater-than
  (define_expand "vector_nlt<mode>"
!   [(set (match_operand:VEC_I 3 "vlogical_operand")
! 	(gt:VEC_I (match_operand:VEC_I 2 "vlogical_operand")
! 		  (match_operand:VEC_I 1 "vlogical_operand")))
!    (set (match_operand:VEC_I 0 "vlogical_operand")
!         (not:VEC_I (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
- (define_expand "vector_nltv1ti"
-   [(set (match_operand:V1TI 3 "vlogical_operand")
- 	(gt:V1TI (match_operand:V1TI 2 "vlogical_operand")
- 		 (match_operand:V1TI 1 "vlogical_operand")))
-    (set (match_operand:V1TI 0 "vlogical_operand")
-         (not:V1TI (match_dup 3)))]
-   "TARGET_POWER10"
- {
-   operands[3] = gen_reg_rtx_and_attrs (operands[0]);
- })
- 
  (define_expand "vector_gtu<mode>"
!   [(set (match_operand:VEC_I 0 "vint_operand")
! 	(gtu:VEC_I (match_operand:VEC_I 1 "vint_operand")
! 		   (match_operand:VEC_I 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
    "")
  
- (define_expand "vector_gtuv1ti"
-   [(set (match_operand:V1TI 0 "altivec_register_operand")
- 	(gtu:V1TI (match_operand:V1TI 1 "altivec_register_operand")
- 		  (match_operand:V1TI 2 "altivec_register_operand")))]
-   "TARGET_POWER10"
-   "")
- 
  ; >= for integer vectors: swap operands and apply not-greater-than
  (define_expand "vector_nltu<mode>"
!   [(set (match_operand:VEC_I 3 "vlogical_operand")
! 	(gtu:VEC_I (match_operand:VEC_I 2 "vlogical_operand")
! 	 	   (match_operand:VEC_I 1 "vlogical_operand")))
!    (set (match_operand:VEC_I 0 "vlogical_operand")
!         (not:VEC_I (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
- (define_expand "vector_nltuv1ti"
-   [(set (match_operand:V1TI 3 "vlogical_operand")
- 	(gtu:V1TI (match_operand:V1TI 2 "vlogical_operand")
- 		  (match_operand:V1TI 1 "vlogical_operand")))
-    (set (match_operand:V1TI 0 "vlogical_operand")
- 	(not:V1TI (match_dup 3)))]
-   "TARGET_POWER10"
- {
-   operands[3] = gen_reg_rtx_and_attrs (operands[0]);
- })
- 
  (define_expand "vector_geu<mode>"
!   [(set (match_operand:VEC_I 0 "vint_operand")
! 	(geu:VEC_I (match_operand:VEC_I 1 "vint_operand")
! 		   (match_operand:VEC_I 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
    "")
  
  ; <= for integer vectors: apply not-greater-than
  (define_expand "vector_ngt<mode>"
!   [(set (match_operand:VEC_I 3 "vlogical_operand")
! 	(gt:VEC_I (match_operand:VEC_I 1 "vlogical_operand")
! 		  (match_operand:VEC_I 2 "vlogical_operand")))
!    (set (match_operand:VEC_I 0 "vlogical_operand")
!         (not:VEC_I (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
- (define_expand "vector_ngtv1ti"
-   [(set (match_operand:V1TI 3 "vlogical_operand")
- 	(gt:V1TI (match_operand:V1TI 1 "vlogical_operand")
- 		 (match_operand:V1TI 2 "vlogical_operand")))
-    (set (match_operand:V1TI 0 "vlogical_operand")
-         (not:V1TI (match_dup 3)))]
-   "TARGET_POWER10"
- {
-   operands[3] = gen_reg_rtx_and_attrs (operands[0]);
- })
- 
  (define_expand "vector_ngtu<mode>"
!   [(set (match_operand:VEC_I 3 "vlogical_operand")
! 	(gtu:VEC_I (match_operand:VEC_I 1 "vlogical_operand")
! 	 	   (match_operand:VEC_I 2 "vlogical_operand")))
!    (set (match_operand:VEC_I 0 "vlogical_operand")
!         (not:VEC_I (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
- (define_expand "vector_ngtuv1ti"
-   [(set (match_operand:V1TI 3 "vlogical_operand")
- 	(gtu:V1TI (match_operand:V1TI 1 "vlogical_operand")
- 		  (match_operand:V1TI 2 "vlogical_operand")))
-    (set (match_operand:V1TI 0 "vlogical_operand")
-         (not:V1TI (match_dup 3)))]
-   "TARGET_POWER10"
- {
-   operands[3] = gen_reg_rtx_and_attrs (operands[0]);
- })
- 
  ; There are 14 possible vector FP comparison operators, gt and eq of them have
  ; been expanded above, so just support 12 remaining operators here.
  
--- 693,757 ----
  
  ; >= for integer vectors: swap operands and apply not-greater-than
  (define_expand "vector_nlt<mode>"
!   [(set (match_operand:VEC_IC 3 "vlogical_operand")
! 	(gt:VEC_IC (match_operand:VEC_IC 2 "vlogical_operand")
! 		   (match_operand:VEC_IC 1 "vlogical_operand")))
!    (set (match_operand:VEC_IC 0 "vlogical_operand")
! 	(not:VEC_IC (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
  (define_expand "vector_gtu<mode>"
!   [(set (match_operand:VEC_IC 0 "vint_operand")
! 	(gtu:VEC_IC (match_operand:VEC_IC 1 "vint_operand")
! 		    (match_operand:VEC_IC 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
    "")
  
  ; >= for integer vectors: swap operands and apply not-greater-than
  (define_expand "vector_nltu<mode>"
!   [(set (match_operand:VEC_IC 3 "vlogical_operand")
! 	(gtu:VEC_IC (match_operand:VEC_IC 2 "vlogical_operand")
! 		    (match_operand:VEC_IC 1 "vlogical_operand")))
!    (set (match_operand:VEC_IC 0 "vlogical_operand")
! 	(not:VEC_IC (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
  (define_expand "vector_geu<mode>"
!   [(set (match_operand:VEC_IC 0 "vint_operand")
! 	(geu:VEC_IC (match_operand:VEC_IC 1 "vint_operand")
! 		    (match_operand:VEC_IC 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
    "")
  
  ; <= for integer vectors: apply not-greater-than
  (define_expand "vector_ngt<mode>"
!   [(set (match_operand:VEC_IC 3 "vlogical_operand")
! 	(gt:VEC_IC (match_operand:VEC_IC 1 "vlogical_operand")
! 		   (match_operand:VEC_IC 2 "vlogical_operand")))
!    (set (match_operand:VEC_IC 0 "vlogical_operand")
! 	(not:VEC_IC (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
  (define_expand "vector_ngtu<mode>"
!   [(set (match_operand:VEC_IC 3 "vlogical_operand")
! 	(gtu:VEC_IC (match_operand:VEC_IC 1 "vlogical_operand")
! 		    (match_operand:VEC_IC 2 "vlogical_operand")))
!    (set (match_operand:VEC_IC 0 "vlogical_operand")
! 	(not:VEC_IC (match_dup 3)))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    operands[3] = gen_reg_rtx_and_attrs (operands[0]);
  })
  
  ; There are 14 possible vector FP comparison operators, gt and eq of them have
  ; been expanded above, so just support 12 remaining operators here.
  
***************
*** 1189,1215 ****
  (define_expand "vector_gtu_<mode>_p"
    [(parallel
      [(set (reg:CC CR6_REGNO)
! 	  (unspec:CC [(gtu:CC (match_operand:VEC_I 1 "vint_operand")
! 			      (match_operand:VEC_I 2 "vint_operand"))]
  		     UNSPEC_PREDICATE))
!      (set (match_operand:VEC_I 0 "vlogical_operand")
! 	  (gtu:VEC_I (match_dup 1)
! 		     (match_dup 2)))])]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
    "")
  
- (define_expand "vector_gtu_v1ti_p"
-   [(parallel
-     [(set (reg:CC CR6_REGNO)
- 	  (unspec:CC [(gtu:CC (match_operand:V1TI 1 "altivec_register_operand")
- 			      (match_operand:V1TI 2 "altivec_register_operand"))]
- 		     UNSPEC_PREDICATE))
-      (set (match_operand:V1TI 0 "altivec_register_operand")
- 	  (gtu:V1TI (match_dup 1)
- 		    (match_dup 2)))])]
-   "TARGET_POWER10"
-   "")
- 
  ;; AltiVec/VSX predicates.
  
  ;; This expansion is triggered during expansion of predicate built-in
--- 1141,1155 ----
  (define_expand "vector_gtu_<mode>_p"
    [(parallel
      [(set (reg:CC CR6_REGNO)
! 	  (unspec:CC [(gtu:CC (match_operand:VEC_IC 1 "vint_operand")
! 			      (match_operand:VEC_IC 2 "vint_operand"))]
  		     UNSPEC_PREDICATE))
!      (set (match_operand:VEC_IC 0 "vlogical_operand")
! 	  (gtu:VEC_IC (match_dup 1)
! 		      (match_dup 2)))])]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
    "")
  
  ;; AltiVec/VSX predicates.
  
  ;; This expansion is triggered during expansion of predicate built-in
***************
*** 1286,1292 ****
  (define_expand "parity<mode>2"
    [(set (match_operand:VEC_IP 0 "register_operand")
  	(parity:VEC_IP (match_operand:VEC_IP 1 "register_operand")))]
!   "TARGET_P9_VECTOR")
  
  
  ;; Same size conversions
--- 1226,1241 ----
  (define_expand "parity<mode>2"
    [(set (match_operand:VEC_IP 0 "register_operand")
  	(parity:VEC_IP (match_operand:VEC_IP 1 "register_operand")))]
!   "TARGET_P9_VECTOR"
! {
!   rtx op1 = gen_lowpart (V16QImode, operands[1]);
!   rtx res = gen_reg_rtx (V16QImode);
!   emit_insn (gen_popcountv16qi2 (res, op1));
!   emit_insn (gen_rs6000_vprtyb<mode>2 (operands[0],
! 				       gen_lowpart (<MODE>mode, res)));
! 
!   DONE;
! })
  
  
  ;; Same size conversions
***************
*** 1535,1541 ****
    [(match_operand:VEC_L 0 "vlogical_operand")
     (match_operand:VEC_L 1 "vlogical_operand")
     (match_operand:QI 2 "reg_or_short_operand")]
!   "TARGET_ALTIVEC"
  {
    rtx bitshift = operands[2];
    rtx shift;
--- 1484,1490 ----
    [(match_operand:VEC_L 0 "vlogical_operand")
     (match_operand:VEC_L 1 "vlogical_operand")
     (match_operand:QI 2 "reg_or_short_operand")]
!   "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
    rtx bitshift = operands[2];
    rtx shift;
***************
*** 1582,1606 ****
  
  ;; Expanders for rotate each element in a vector
  (define_expand "vrotl<mode>3"
!   [(set (match_operand:VEC_I 0 "vint_operand")
! 	(rotate:VEC_I (match_operand:VEC_I 1 "vint_operand")
! 		      (match_operand:VEC_I 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
-   "")
- 
- (define_expand "vrotlv1ti3"
-   [(set (match_operand:V1TI 0 "vsx_register_operand" "=v")
-         (rotate:V1TI (match_operand:V1TI 1 "vsx_register_operand" "v")
-                      (match_operand:V1TI 2 "vsx_register_operand" "v")))]
-   "TARGET_POWER10"
  {
!   /* Shift amount in needs to be put in bits[57:63] of 128-bit operand2. */
!   rtx tmp = gen_reg_rtx (V1TImode);
  
!   emit_insn (gen_xxswapd_v1ti (tmp, operands[2]));
!   emit_insn (gen_altivec_vrlq (operands[0], operands[1], tmp));
!   DONE;
! })
  
  ;; Expanders for rotatert to make use of vrotl
  (define_expand "vrotr<mode>3"
--- 1531,1551 ----
  
  ;; Expanders for rotate each element in a vector
  (define_expand "vrotl<mode>3"
!   [(set (match_operand:VEC_IC 0 "vint_operand")
! 	(rotate:VEC_IC (match_operand:VEC_IC 1 "vint_operand")
! 		       (match_operand:VEC_IC 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
!   /* Shift amount in needs to be put in bits[57:63] of 128-bit operand2.  */
!   if (<MODE>mode == V1TImode)
!     {
!       rtx tmp = gen_reg_rtx (V1TImode);
  
!       emit_insn (gen_xxswapd_v1ti (tmp, operands[2]));
!       emit_insn (gen_altivec_vrlq (operands[0], operands[1], tmp));
!       DONE;
!     }
!  })
  
  ;; Expanders for rotatert to make use of vrotl
  (define_expand "vrotr<mode>3"
***************
*** 1663,1687 ****
  
  ;; Expanders for arithmetic shift right on each vector element
  (define_expand "vashr<mode>3"
!   [(set (match_operand:VEC_I 0 "vint_operand")
! 	(ashiftrt:VEC_I (match_operand:VEC_I 1 "vint_operand")
! 			(match_operand:VEC_I 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
-   "")
- 
- ;; No immediate version of this 128-bit instruction
- (define_expand "vashrv1ti3"
-   [(set (match_operand:V1TI 0 "vsx_register_operand" "=v")
- 	(ashiftrt:V1TI (match_operand:V1TI 1 "vsx_register_operand" "v")
- 		       (match_operand:V1TI 2 "vsx_register_operand" "v")))]
-   "TARGET_POWER10"
  {
!   /* Shift amount in needs to be put into bits[57:63] of 128-bit operand2. */
!   rtx tmp = gen_reg_rtx (V1TImode);
  
!   emit_insn (gen_xxswapd_v1ti (tmp, operands[2]));
!   emit_insn (gen_altivec_vsraq (operands[0], operands[1], tmp));
!   DONE;
  })
  
  
--- 1608,1627 ----
  
  ;; Expanders for arithmetic shift right on each vector element
  (define_expand "vashr<mode>3"
!   [(set (match_operand:VEC_IC 0 "vint_operand")
! 	(ashiftrt:VEC_IC (match_operand:VEC_IC 1 "vint_operand")
! 			 (match_operand:VEC_IC 2 "vint_operand")))]
    "VECTOR_UNIT_ALTIVEC_OR_VSX_P (<MODE>mode)"
  {
!   /* Shift amount in needs to be put in bits[57:63] of 128-bit operand2.  */
!   if (<MODE>mode == V1TImode)
!     {
!       rtx tmp = gen_reg_rtx (V1TImode);
  
!       emit_insn (gen_xxswapd_v1ti (tmp, operands[2]));
!       emit_insn (gen_altivec_vsraq (operands[0], operands[1], tmp));
!       DONE;
!     }
  })
  
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/vsx.md gcc-13.1.0/gcc/config/rs6000/vsx.md
*** gcc-12.2.0/gcc/config/rs6000/vsx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/vsx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; VSX patterns.
! ;; Copyright (C) 2009-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner <meissner@linux.vnet.ibm.com>
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; VSX patterns.
! ;; Copyright (C) 2009-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael Meissner <meissner@linux.vnet.ibm.com>
  
  ;; This file is part of GCC.
***************
*** 186,200 ****
  				 (V4SF "vecfdiv")
  				 (DF   "ddiv")])
  
- ;; Map the scalar mode for a vector type
- (define_mode_attr VS_scalar [(V1TI	"TI")
- 			     (V2DF	"DF")
- 			     (V2DI	"DI")
- 			     (V4SF	"SF")
- 			     (V4SI	"SI")
- 			     (V8HI	"HI")
- 			     (V16QI	"QI")])
- 
  ;; Map to a double-sized vector mode
  (define_mode_attr VS_double [(V4SI	"V8SI")
  			     (V4SF	"V8SF")
--- 186,191 ----
***************
*** 1167,1176 ****
    emit_insn (gen_xxspltib_v16qi (tmp, GEN_INT (value)));
  
    if (<MODE>mode == V2DImode)
!     emit_insn (gen_vsx_sign_extend_qi_v2di (op0, tmp));
  
    else if (<MODE>mode == V4SImode)
!     emit_insn (gen_vsx_sign_extend_qi_v4si (op0, tmp));
  
    else if (<MODE>mode == V8HImode)
      emit_insn (gen_altivec_vupkhsb  (op0, tmp));
--- 1158,1167 ----
    emit_insn (gen_xxspltib_v16qi (tmp, GEN_INT (value)));
  
    if (<MODE>mode == V2DImode)
!     emit_insn (gen_vsx_sign_extend_v16qi_v2di (op0, tmp));
  
    else if (<MODE>mode == V4SImode)
!     emit_insn (gen_vsx_sign_extend_v16qi_v4si (op0, tmp));
  
    else if (<MODE>mode == V8HImode)
      emit_insn (gen_altivec_vupkhsb  (op0, tmp));
***************
*** 2018,2039 ****
    "x<VSv>tsqrt<sd>p %0,%x1"
    [(set_attr "type" "<VStype_simple>")])
  
! ;; Fused vector multiply/add instructions. Support the classical Altivec
! ;; versions of fma, which allows the target to be a separate register from the
! ;; 3 inputs.  Under VSX, the target must be either the addend or the first
! ;; multiply.
! 
  (define_insn "*vsx_fmav4sf4"
!   [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa,v")
  	(fma:V4SF
! 	  (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa,v")
! 	  (match_operand:V4SF 2 "vsx_register_operand" "wa,0,v")
! 	  (match_operand:V4SF 3 "vsx_register_operand" "0,wa,v")))]
    "VECTOR_UNIT_VSX_P (V4SFmode)"
    "@
     xvmaddasp %x0,%x1,%x2
!    xvmaddmsp %x0,%x1,%x3
!    vmaddfp %0,%1,%2,%3"
    [(set_attr "type" "vecfloat")])
  
  (define_insn "*vsx_fmav2df4"
--- 2009,2031 ----
    "x<VSv>tsqrt<sd>p %0,%x1"
    [(set_attr "type" "<VStype_simple>")])
  
! ;; Fused vector multiply/add instructions. Do not generate the Altivec versions
! ;; of fma (vmaddfp and vnmsubfp).  These instructions allows the target to be a
! ;; separate register from the 3 inputs, which can possibly save an extra move
! ;; being generated (assuming all registers are AltiVec registers).  However,
! ;; vmaddfp and vnmsubfp can have different behaviors than the VSX instructions
! ;; in some corner cases due to VSCR[NJ] being set or if the addend is +0.0
! ;; instead of -0.0.
  (define_insn "*vsx_fmav4sf4"
!   [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa")
  	(fma:V4SF
! 	  (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa")
! 	  (match_operand:V4SF 2 "vsx_register_operand" "wa,0")
! 	  (match_operand:V4SF 3 "vsx_register_operand" "0,wa")))]
    "VECTOR_UNIT_VSX_P (V4SFmode)"
    "@
     xvmaddasp %x0,%x1,%x2
!    xvmaddmsp %x0,%x1,%x3"
    [(set_attr "type" "vecfloat")])
  
  (define_insn "*vsx_fmav2df4"
***************
*** 2075,2092 ****
    [(set_attr "type" "<VStype_mul>")])
  
  (define_insn "*vsx_nfmsv4sf4"
!   [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa,v")
  	(neg:V4SF
  	 (fma:V4SF
! 	   (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa,v")
! 	   (match_operand:V4SF 2 "vsx_register_operand" "wa,0,v")
  	   (neg:V4SF
! 	     (match_operand:V4SF 3 "vsx_register_operand" "0,wa,v")))))]
    "VECTOR_UNIT_VSX_P (V4SFmode)"
    "@
     xvnmsubasp %x0,%x1,%x2
!    xvnmsubmsp %x0,%x1,%x3
!    vnmsubfp %0,%1,%2,%3"
    [(set_attr "type" "vecfloat")])
  
  (define_insn "*vsx_nfmsv2df4"
--- 2067,2083 ----
    [(set_attr "type" "<VStype_mul>")])
  
  (define_insn "*vsx_nfmsv4sf4"
!   [(set (match_operand:V4SF 0 "vsx_register_operand" "=wa,wa")
  	(neg:V4SF
  	 (fma:V4SF
! 	   (match_operand:V4SF 1 "vsx_register_operand" "%wa,wa")
! 	   (match_operand:V4SF 2 "vsx_register_operand" "wa,0")
  	   (neg:V4SF
! 	     (match_operand:V4SF 3 "vsx_register_operand" "0,wa")))))]
    "VECTOR_UNIT_VSX_P (V4SFmode)"
    "@
     xvnmsubasp %x0,%x1,%x2
!    xvnmsubmsp %x0,%x1,%x3"
    [(set_attr "type" "vecfloat")])
  
  (define_insn "*vsx_nfmsv2df4"
***************
*** 2996,3003 ****
  (define_insn "vsx_concat_<mode>"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa,we")
  	(vec_concat:VSX_D
! 	 (match_operand:<VS_scalar> 1 "gpc_reg_operand" "wa,b")
! 	 (match_operand:<VS_scalar> 2 "gpc_reg_operand" "wa,b")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
    if (which_alternative == 0)
--- 2987,2994 ----
  (define_insn "vsx_concat_<mode>"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa,we")
  	(vec_concat:VSX_D
! 	 (match_operand:<VEC_base> 1 "gpc_reg_operand" "wa,b")
! 	 (match_operand:<VEC_base> 2 "gpc_reg_operand" "wa,b")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
    if (which_alternative == 0)
***************
*** 3020,3029 ****
  (define_insn "*vsx_concat_<mode>_1"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_concat:VSX_D
! 	 (vec_select:<VS_scalar>
  	  (match_operand:VSX_D 1 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n")]))
! 	 (match_operand:<VS_scalar> 3 "gpc_reg_operand" "wa")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
    HOST_WIDE_INT dword = INTVAL (operands[2]);
--- 3011,3020 ----
  (define_insn "*vsx_concat_<mode>_1"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_concat:VSX_D
! 	 (vec_select:<VEC_base>
  	  (match_operand:VSX_D 1 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n")]))
! 	 (match_operand:<VEC_base> 3 "gpc_reg_operand" "wa")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
    HOST_WIDE_INT dword = INTVAL (operands[2]);
***************
*** 3043,3050 ****
  (define_insn "*vsx_concat_<mode>_2"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_concat:VSX_D
! 	 (match_operand:<VS_scalar> 1 "gpc_reg_operand" "wa")
! 	 (vec_select:<VS_scalar>
  	  (match_operand:VSX_D 2 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 3 "const_0_to_1_operand" "n")]))))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
--- 3034,3041 ----
  (define_insn "*vsx_concat_<mode>_2"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_concat:VSX_D
! 	 (match_operand:<VEC_base> 1 "gpc_reg_operand" "wa")
! 	 (vec_select:<VEC_base>
  	  (match_operand:VSX_D 2 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 3 "const_0_to_1_operand" "n")]))))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
***************
*** 3066,3075 ****
  (define_insn "*vsx_concat_<mode>_3"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_concat:VSX_D
! 	 (vec_select:<VS_scalar>
  	  (match_operand:VSX_D 1 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n")]))
! 	 (vec_select:<VS_scalar>
  	  (match_operand:VSX_D 3 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 4 "const_0_to_1_operand" "n")]))))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
--- 3057,3066 ----
  (define_insn "*vsx_concat_<mode>_3"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_concat:VSX_D
! 	 (vec_select:<VEC_base>
  	  (match_operand:VSX_D 1 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n")]))
! 	 (vec_select:<VEC_base>
  	  (match_operand:VSX_D 3 "gpc_reg_operand" "wa")
  	  (parallel [(match_operand:QI 4 "const_0_to_1_operand" "n")]))))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
***************
*** 3367,3373 ****
  (define_expand "vsx_set_<mode>"
    [(use (match_operand:VSX_D 0 "vsx_register_operand"))
     (use (match_operand:VSX_D 1 "vsx_register_operand"))
!    (use (match_operand:<VS_scalar> 2 "gpc_reg_operand"))
     (use (match_operand:QI 3 "const_0_to_1_operand"))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
--- 3358,3364 ----
  (define_expand "vsx_set_<mode>"
    [(use (match_operand:VSX_D 0 "vsx_register_operand"))
     (use (match_operand:VSX_D 1 "vsx_register_operand"))
!    (use (match_operand:<VEC_base> 2 "gpc_reg_operand"))
     (use (match_operand:QI 3 "const_0_to_1_operand"))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
***************
*** 3375,3381 ****
    rtx vec_reg = operands[1];
    rtx value = operands[2];
    rtx ele = operands[3];
!   rtx tmp = gen_reg_rtx (<VS_scalar>mode);
  
    if (ele == const0_rtx)
      {
--- 3366,3372 ----
    rtx vec_reg = operands[1];
    rtx value = operands[2];
    rtx ele = operands[3];
!   rtx tmp = gen_reg_rtx (<VEC_base>mode);
  
    if (ele == const0_rtx)
      {
***************
*** 3397,3460 ****
  ;; Optimize cases were we can do a simple or direct move.
  ;; Or see if we can avoid doing the move at all
  
! (define_insn "vsx_extract_<mode>"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=wa, wa, wr, wr")
! 	(vec_select:<VS_scalar>
! 	 (match_operand:VSX_D 1 "gpc_reg_operand"       "wa, wa, wa, wa")
  	 (parallel
! 	  [(match_operand:QI 2 "const_0_to_1_operand"   "wD, n,  wD, n")])))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
! {
!   int element = INTVAL (operands[2]);
!   int op0_regno = REGNO (operands[0]);
!   int op1_regno = REGNO (operands[1]);
!   int fldDM;
! 
!   gcc_assert (IN_RANGE (element, 0, 1));
!   gcc_assert (VSX_REGNO_P (op1_regno));
! 
!   if (element == VECTOR_ELEMENT_SCALAR_64BIT)
!     {
!       if (op0_regno == op1_regno)
! 	return ASM_COMMENT_START " vec_extract to same register";
! 
!       else if (INT_REGNO_P (op0_regno) && TARGET_DIRECT_MOVE
! 	       && TARGET_POWERPC64)
! 	return "mfvsrd %0,%x1";
  
!       else if (FP_REGNO_P (op0_regno) && FP_REGNO_P (op1_regno))
! 	return "fmr %0,%1";
  
!       else if (VSX_REGNO_P (op0_regno))
! 	return "xxlor %x0,%x1,%x1";
  
!       else
! 	gcc_unreachable ();
!     }
  
!   else if (element == VECTOR_ELEMENT_MFVSRLD_64BIT && INT_REGNO_P (op0_regno)
! 	   && TARGET_P9_VECTOR && TARGET_POWERPC64 && TARGET_DIRECT_MOVE)
      return "mfvsrld %0,%x1";
  
!   else if (VSX_REGNO_P (op0_regno))
!     {
!       fldDM = element << 1;
!       if (!BYTES_BIG_ENDIAN)
! 	fldDM = 3 - fldDM;
!       operands[3] = GEN_INT (fldDM);
!       return "xxpermdi %x0,%x1,%x1,%3";
!     }
! 
!   else
!     gcc_unreachable ();
  }
!   [(set_attr "type" "veclogical,mfvsr,mfvsr,vecperm")
!    (set_attr "isa" "*,*,p8v,p9v")])
  
  ;; Optimize extracting a single scalar element from memory.
  (define_insn_and_split "*vsx_extract_<P:mode>_<VSX_D:mode>_load"
!   [(set (match_operand:<VS_scalar> 0 "register_operand" "=wa,wr")
! 	(vec_select:<VSX_D:VS_scalar>
  	 (match_operand:VSX_D 1 "memory_operand" "m,m")
  	 (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n,n")])))
     (clobber (match_scratch:P 3 "=&b,&b"))]
--- 3388,3445 ----
  ;; Optimize cases were we can do a simple or direct move.
  ;; Or see if we can avoid doing the move at all
  
! (define_expand "vsx_extract_<mode>"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand")
! 	(vec_select:<VEC_base>
! 	 (match_operand:VSX_D 1 "gpc_reg_operand")
  	 (parallel
! 	  [(match_operand:QI 2 "const_0_to_1_operand")])))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
!   "")
  
! (define_insn "*vsx_extract_<mode>_0"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=wa,wa,wr")
! 	(vec_select:<VEC_base>
! 	 (match_operand:VSX_D 1 "gpc_reg_operand" "0,wa,wa")
! 	 (parallel
! 	  [(match_operand:QI 2 "const_0_to_1_operand" "n,n,n")])))]
!   "VECTOR_MEM_VSX_P (<MODE>mode)
!    && INTVAL (operands[2]) == (BYTES_BIG_ENDIAN ? 0 : 1)"
! {
!   if (which_alternative == 0)
!     return ASM_COMMENT_START " vec_extract to same register";
  
!   if (which_alternative == 2)
!     return "mfvsrd %0,%x1";
  
!   return "xxlor %x0,%x1,%x1";
! }
!   [(set_attr "type" "*,veclogical,mfvsr")
!    (set_attr "isa" "*,*,p8v")
!    (set_attr "length" "0,*,*")])
  
! (define_insn "*vsx_extract_<mode>_1"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=wa,wr")
! 	(vec_select:<VEC_base>
! 	 (match_operand:VSX_D 1 "gpc_reg_operand" "wa,wa")
! 	 (parallel
! 	  [(match_operand:QI 2 "const_0_to_1_operand" "n,n")])))]
!   "VECTOR_MEM_VSX_P (<MODE>mode)
!    && INTVAL (operands[2]) == (BYTES_BIG_ENDIAN ? 1 : 0)"
! {
!   if (which_alternative == 1)
      return "mfvsrld %0,%x1";
  
!   operands[3] = GEN_INT (BYTES_BIG_ENDIAN ? 2 : 3);
!   return "xxpermdi %x0,%x1,%x1,%3";
  }
!   [(set_attr "type" "mfvsr,vecperm")
!    (set_attr "isa" "*,p9v")])
  
  ;; Optimize extracting a single scalar element from memory.
  (define_insn_and_split "*vsx_extract_<P:mode>_<VSX_D:mode>_load"
!   [(set (match_operand:<VEC_base> 0 "register_operand" "=wa,wr")
! 	(vec_select:<VSX_D:VEC_base>
  	 (match_operand:VSX_D 1 "memory_operand" "m,m")
  	 (parallel [(match_operand:QI 2 "const_0_to_1_operand" "n,n")])))
     (clobber (match_scratch:P 3 "=&b,&b"))]
***************
*** 3464,3470 ****
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VSX_D:VS_scalar>mode);
  }
    [(set_attr "type" "fpload,load")
     (set_attr "length" "8")])
--- 3449,3455 ----
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VSX_D:VEC_base>mode);
  }
    [(set_attr "type" "fpload,load")
     (set_attr "length" "8")])
***************
*** 3472,3482 ****
  ;; Optimize storing a single scalar element that is the right location to
  ;; memory
  (define_insn "*vsx_extract_<mode>_store"
!   [(set (match_operand:<VS_scalar> 0 "memory_operand" "=m,Z,wY")
! 	(vec_select:<VS_scalar>
  	 (match_operand:VSX_D 1 "register_operand" "d,v,v")
! 	 (parallel [(match_operand:QI 2 "vsx_scalar_64bit" "wD,wD,wD")])))]
!   "VECTOR_MEM_VSX_P (<MODE>mode)"
    "@
     stfd%U0%X0 %1,%0
     stxsdx %x1,%y0
--- 3457,3468 ----
  ;; Optimize storing a single scalar element that is the right location to
  ;; memory
  (define_insn "*vsx_extract_<mode>_store"
!   [(set (match_operand:<VEC_base> 0 "memory_operand" "=m,Z,wY")
! 	(vec_select:<VEC_base>
  	 (match_operand:VSX_D 1 "register_operand" "d,v,v")
! 	 (parallel [(match_operand:QI 2 "vsx_scalar_64bit" "n,n,n")])))]
!   "VECTOR_MEM_VSX_P (<MODE>mode)
!    && INTVAL (operands[2]) == (BYTES_BIG_ENDIAN ? 0 : 1)"
    "@
     stfd%U0%X0 %1,%0
     stxsdx %x1,%y0
***************
*** 3486,3493 ****
  
  ;; Variable V2DI/V2DF extract shift
  (define_insn "vsx_vslo_<mode>"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=v")
! 	(unspec:<VS_scalar> [(match_operand:VSX_D 1 "gpc_reg_operand" "v")
  			     (match_operand:V2DI 2 "gpc_reg_operand" "v")]
  			    UNSPEC_VSX_VSLO))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_DIRECT_MOVE_64BIT"
--- 3472,3479 ----
  
  ;; Variable V2DI/V2DF extract shift
  (define_insn "vsx_vslo_<mode>"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=v")
! 	(unspec:<VEC_base> [(match_operand:VSX_D 1 "gpc_reg_operand" "v")
  			     (match_operand:V2DI 2 "gpc_reg_operand" "v")]
  			    UNSPEC_VSX_VSLO))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_DIRECT_MOVE_64BIT"
***************
*** 3496,3503 ****
  
  ;; Variable V2DI/V2DF extract from a register
  (define_insn_and_split "vsx_extract_<mode>_var"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=v")
! 	(unspec:<VS_scalar> [(match_operand:VSX_D 1 "gpc_reg_operand" "v")
  			     (match_operand:DI 2 "gpc_reg_operand" "r")]
  			    UNSPEC_VSX_EXTRACT))
     (clobber (match_scratch:DI 3 "=r"))
--- 3482,3489 ----
  
  ;; Variable V2DI/V2DF extract from a register
  (define_insn_and_split "vsx_extract_<mode>_var"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=v")
! 	(unspec:<VEC_base> [(match_operand:VSX_D 1 "gpc_reg_operand" "v")
  			     (match_operand:DI 2 "gpc_reg_operand" "r")]
  			    UNSPEC_VSX_EXTRACT))
     (clobber (match_scratch:DI 3 "=r"))
***************
*** 3514,3521 ****
  
  ;; Variable V2DI/V2DF extract from memory
  (define_insn_and_split "*vsx_extract_<mode>_var_load"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=wa,r")
! 	(unspec:<VS_scalar> [(match_operand:VSX_D 1 "memory_operand" "Q,Q")
  			     (match_operand:DI 2 "gpc_reg_operand" "r,r")]
  			    UNSPEC_VSX_EXTRACT))
     (clobber (match_scratch:DI 3 "=&b,&b"))]
--- 3500,3507 ----
  
  ;; Variable V2DI/V2DF extract from memory
  (define_insn_and_split "*vsx_extract_<mode>_var_load"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=wa,r")
! 	(unspec:<VEC_base> [(match_operand:VSX_D 1 "memory_operand" "Q,Q")
  			     (match_operand:DI 2 "gpc_reg_operand" "r,r")]
  			    UNSPEC_VSX_EXTRACT))
     (clobber (match_scratch:DI 3 "=&b,&b"))]
***************
*** 3525,3531 ****
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VS_scalar>mode);
  }
    [(set_attr "type" "fpload,load")])
  
--- 3511,3517 ----
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VEC_base>mode);
  }
    [(set_attr "type" "fpload,load")])
  
***************
*** 3734,3741 ****
  ;; none of the small types were allowed in a vector register, so we had to
  ;; extract to a DImode and either do a direct move or store.
  (define_expand  "vsx_extract_<mode>"
!   [(parallel [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand")
! 		   (vec_select:<VS_scalar>
  		    (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand")
  		    (parallel [(match_operand:QI 2 "const_int_operand")])))
  	      (clobber (match_scratch:VSX_EXTRACT_I 3))])]
--- 3720,3727 ----
  ;; none of the small types were allowed in a vector register, so we had to
  ;; extract to a DImode and either do a direct move or store.
  (define_expand  "vsx_extract_<mode>"
!   [(parallel [(set (match_operand:<VEC_base> 0 "gpc_reg_operand")
! 		   (vec_select:<VEC_base>
  		    (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand")
  		    (parallel [(match_operand:QI 2 "const_int_operand")])))
  	      (clobber (match_scratch:VSX_EXTRACT_I 3))])]
***************
*** 3751,3758 ****
  })
  
  (define_insn "vsx_extract_<mode>_p9"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,<VSX_EX>")
! 	(vec_select:<VS_scalar>
  	 (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v,<VSX_EX>")
  	 (parallel [(match_operand:QI 2 "<VSX_EXTRACT_PREDICATE>" "n,n")])))
     (clobber (match_scratch:SI 3 "=r,X"))]
--- 3737,3744 ----
  })
  
  (define_insn "vsx_extract_<mode>_p9"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=r,<VSX_EX>")
! 	(vec_select:<VEC_base>
  	 (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v,<VSX_EX>")
  	 (parallel [(match_operand:QI 2 "<VSX_EXTRACT_PREDICATE>" "n,n")])))
     (clobber (match_scratch:SI 3 "=r,X"))]
***************
*** 3782,3789 ****
     (set_attr "isa" "p9v,*")])
  
  (define_split
!   [(set (match_operand:<VS_scalar> 0 "int_reg_operand")
! 	(vec_select:<VS_scalar>
  	 (match_operand:VSX_EXTRACT_I 1 "altivec_register_operand")
  	 (parallel [(match_operand:QI 2 "const_int_operand")])))
     (clobber (match_operand:SI 3 "int_reg_operand"))]
--- 3768,3775 ----
     (set_attr "isa" "p9v,*")])
  
  (define_split
!   [(set (match_operand:<VEC_base> 0 "int_reg_operand")
! 	(vec_select:<VEC_base>
  	 (match_operand:VSX_EXTRACT_I 1 "altivec_register_operand")
  	 (parallel [(match_operand:QI 2 "const_int_operand")])))
     (clobber (match_operand:SI 3 "int_reg_operand"))]
***************
*** 3808,3814 ****
  (define_insn_and_split "*vsx_extract_<mode>_di_p9"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=r,<VSX_EX>")
  	(zero_extend:DI
! 	 (vec_select:<VS_scalar>
  	  (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v,<VSX_EX>")
  	  (parallel [(match_operand:QI 2 "const_int_operand" "n,n")]))))
     (clobber (match_scratch:SI 3 "=r,X"))]
--- 3794,3800 ----
  (define_insn_and_split "*vsx_extract_<mode>_di_p9"
    [(set (match_operand:DI 0 "gpc_reg_operand" "=r,<VSX_EX>")
  	(zero_extend:DI
! 	 (vec_select:<VEC_base>
  	  (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v,<VSX_EX>")
  	  (parallel [(match_operand:QI 2 "const_int_operand" "n,n")]))))
     (clobber (match_scratch:SI 3 "=r,X"))]
***************
*** 3816,3843 ****
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 4)
! 		   (vec_select:<VS_scalar>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (match_dup 3))])]
  {
!   operands[4] = gen_rtx_REG (<VS_scalar>mode, REGNO (operands[0]));
  }
    [(set_attr "isa" "p9v,*")])
  
  ;; Optimize stores to use the ISA 3.0 scalar store instructions
  (define_insn_and_split "*vsx_extract_<mode>_store_p9"
!   [(set (match_operand:<VS_scalar> 0 "memory_operand" "=Z,m")
! 	(vec_select:<VS_scalar>
  	 (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "<VSX_EX>,v")
  	 (parallel [(match_operand:QI 2 "const_int_operand" "n,n")])))
!    (clobber (match_scratch:<VS_scalar> 3 "=<VSX_EX>,&*r"))
     (clobber (match_scratch:SI 4 "=X,&r"))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_VEXTRACTUB"
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 3)
! 		   (vec_select:<VS_scalar>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (match_dup 4))])
--- 3802,3829 ----
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 4)
! 		   (vec_select:<VEC_base>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (match_dup 3))])]
  {
!   operands[4] = gen_rtx_REG (<VEC_base>mode, REGNO (operands[0]));
  }
    [(set_attr "isa" "p9v,*")])
  
  ;; Optimize stores to use the ISA 3.0 scalar store instructions
  (define_insn_and_split "*vsx_extract_<mode>_store_p9"
!   [(set (match_operand:<VEC_base> 0 "memory_operand" "=Z,m")
! 	(vec_select:<VEC_base>
  	 (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "<VSX_EX>,v")
  	 (parallel [(match_operand:QI 2 "const_int_operand" "n,n")])))
!    (clobber (match_scratch:<VEC_base> 3 "=<VSX_EX>,&*r"))
     (clobber (match_scratch:SI 4 "=X,&r"))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_VEXTRACTUB"
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 3)
! 		   (vec_select:<VEC_base>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (match_dup 4))])
***************
*** 3898,3905 ****
     (set_attr "isa" "*,p8v,*")])
  
  (define_insn_and_split  "*vsx_extract_<mode>_p8"
!   [(set (match_operand:<VS_scalar> 0 "nonimmediate_operand" "=r")
! 	(vec_select:<VS_scalar>
  	 (match_operand:VSX_EXTRACT_I2 1 "gpc_reg_operand" "v")
  	 (parallel [(match_operand:QI 2 "<VSX_EXTRACT_PREDICATE>" "n")])))
     (clobber (match_scratch:VSX_EXTRACT_I2 3 "=v"))]
--- 3884,3891 ----
     (set_attr "isa" "*,p8v,*")])
  
  (define_insn_and_split  "*vsx_extract_<mode>_p8"
!   [(set (match_operand:<VEC_base> 0 "nonimmediate_operand" "=r")
! 	(vec_select:<VEC_base>
  	 (match_operand:VSX_EXTRACT_I2 1 "gpc_reg_operand" "v")
  	 (parallel [(match_operand:QI 2 "<VSX_EXTRACT_PREDICATE>" "n")])))
     (clobber (match_scratch:VSX_EXTRACT_I2 3 "=v"))]
***************
*** 3946,3953 ****
  
  ;; Optimize extracting a single scalar element from memory.
  (define_insn_and_split "*vsx_extract_<mode>_load"
!   [(set (match_operand:<VS_scalar> 0 "register_operand" "=r")
! 	(vec_select:<VS_scalar>
  	 (match_operand:VSX_EXTRACT_I 1 "memory_operand" "m")
  	 (parallel [(match_operand:QI 2 "<VSX_EXTRACT_PREDICATE>" "n")])))
     (clobber (match_scratch:DI 3 "=&b"))]
--- 3932,3939 ----
  
  ;; Optimize extracting a single scalar element from memory.
  (define_insn_and_split "*vsx_extract_<mode>_load"
!   [(set (match_operand:<VEC_base> 0 "register_operand" "=r")
! 	(vec_select:<VEC_base>
  	 (match_operand:VSX_EXTRACT_I 1 "memory_operand" "m")
  	 (parallel [(match_operand:QI 2 "<VSX_EXTRACT_PREDICATE>" "n")])))
     (clobber (match_scratch:DI 3 "=&b"))]
***************
*** 3957,3971 ****
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VS_scalar>mode);
  }
    [(set_attr "type" "load")
     (set_attr "length" "8")])
  
  ;; Variable V16QI/V8HI/V4SI extract from a register
  (define_insn_and_split "vsx_extract_<mode>_var"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r,r")
! 	(unspec:<VS_scalar>
  	 [(match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v,v")
  	  (match_operand:DI 2 "gpc_reg_operand" "r,r")]
  	 UNSPEC_VSX_EXTRACT))
--- 3943,3957 ----
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VEC_base>mode);
  }
    [(set_attr "type" "load")
     (set_attr "length" "8")])
  
  ;; Variable V16QI/V8HI/V4SI extract from a register
  (define_insn_and_split "vsx_extract_<mode>_var"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=r,r")
! 	(unspec:<VEC_base>
  	 [(match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v,v")
  	  (match_operand:DI 2 "gpc_reg_operand" "r,r")]
  	 UNSPEC_VSX_EXTRACT))
***************
*** 3984,3991 ****
  
  ;; Variable V16QI/V8HI/V4SI extract from memory
  (define_insn_and_split "*vsx_extract_<mode>_var_load"
!   [(set (match_operand:<VS_scalar> 0 "gpc_reg_operand" "=r")
! 	(unspec:<VS_scalar>
  	 [(match_operand:VSX_EXTRACT_I 1 "memory_operand" "Q")
  	  (match_operand:DI 2 "gpc_reg_operand" "r")]
  	 UNSPEC_VSX_EXTRACT))
--- 3970,3977 ----
  
  ;; Variable V16QI/V8HI/V4SI extract from memory
  (define_insn_and_split "*vsx_extract_<mode>_var_load"
!   [(set (match_operand:<VEC_base> 0 "gpc_reg_operand" "=r")
! 	(unspec:<VEC_base>
  	 [(match_operand:VSX_EXTRACT_I 1 "memory_operand" "Q")
  	  (match_operand:DI 2 "gpc_reg_operand" "r")]
  	 UNSPEC_VSX_EXTRACT))
***************
*** 3996,4002 ****
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VS_scalar>mode);
  }
    [(set_attr "type" "load")])
  
--- 3982,3988 ----
    [(set (match_dup 0) (match_dup 4))]
  {
    operands[4] = rs6000_adjust_vec_address (operands[0], operands[1], operands[2],
! 					   operands[3], <VEC_base>mode);
  }
    [(set_attr "type" "load")])
  
***************
*** 4172,4178 ****
  (define_expand "vreplace_elt_<mode>"
    [(set (match_operand:REPLACE_ELT 0 "register_operand")
    (unspec:REPLACE_ELT [(match_operand:REPLACE_ELT 1 "register_operand")
! 		       (match_operand:<VS_scalar> 2 "register_operand")
  		       (match_operand:QI 3 "const_0_to_3_operand")]
  		      UNSPEC_REPLACE_ELT))]
   "TARGET_POWER10"
--- 4158,4164 ----
  (define_expand "vreplace_elt_<mode>"
    [(set (match_operand:REPLACE_ELT 0 "register_operand")
    (unspec:REPLACE_ELT [(match_operand:REPLACE_ELT 1 "register_operand")
! 		       (match_operand:<VEC_base> 2 "register_operand")
  		       (match_operand:QI 3 "const_0_to_3_operand")]
  		      UNSPEC_REPLACE_ELT))]
   "TARGET_POWER10"
***************
*** 4196,4202 ****
  (define_insn "vreplace_elt_<mode>_inst"
   [(set (match_operand:REPLACE_ELT 0 "register_operand" "=v")
    (unspec:REPLACE_ELT [(match_operand:REPLACE_ELT 1 "register_operand" "0")
! 		       (match_operand:<VS_scalar> 2 "register_operand" "r")
  		       (match_operand:QI 3 "const_0_to_12_operand" "n")]
  		      UNSPEC_REPLACE_ELT))]
   "TARGET_POWER10"
--- 4182,4188 ----
  (define_insn "vreplace_elt_<mode>_inst"
   [(set (match_operand:REPLACE_ELT 0 "register_operand" "=v")
    (unspec:REPLACE_ELT [(match_operand:REPLACE_ELT 1 "register_operand" "0")
! 		       (match_operand:<VEC_base> 2 "register_operand" "r")
  		       (match_operand:QI 3 "const_0_to_12_operand" "n")]
  		      UNSPEC_REPLACE_ELT))]
   "TARGET_POWER10"
***************
*** 4206,4212 ****
  (define_insn "vreplace_un_<mode>"
   [(set (match_operand:V16QI 0 "register_operand" "=v")
    (unspec:V16QI [(match_operand:REPLACE_ELT 1 "register_operand" "0")
!                  (match_operand:<VS_scalar> 2 "register_operand" "r")
  		 (match_operand:QI 3 "const_0_to_12_operand" "n")]
  		UNSPEC_REPLACE_UN))]
   "TARGET_POWER10"
--- 4192,4198 ----
  (define_insn "vreplace_un_<mode>"
   [(set (match_operand:V16QI 0 "register_operand" "=v")
    (unspec:V16QI [(match_operand:REPLACE_ELT 1 "register_operand" "0")
!                  (match_operand:<VEC_base> 2 "register_operand" "r")
  		 (match_operand:QI 3 "const_0_to_12_operand" "n")]
  		UNSPEC_REPLACE_UN))]
   "TARGET_POWER10"
***************
*** 4322,4340 ****
  ;; Where <ftype> is SFmode, DFmode (and KFmode/TFmode if those types are IEEE
  ;; 128-bit hardware types) and <vtype> is vector char, vector unsigned char,
  ;; vector short or vector unsigned short.
! (define_insn_and_split "*vsx_ext_<VSX_EXTRACT_I:VS_scalar>_fl_<FL_CONV:mode>"
    [(set (match_operand:FL_CONV 0 "gpc_reg_operand" "=wa")
  	(float:FL_CONV
! 	 (vec_select:<VSX_EXTRACT_I:VS_scalar>
  	  (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v")
  	  (parallel [(match_operand:QI 2 "const_int_operand" "n")]))))
!    (clobber (match_scratch:<VSX_EXTRACT_I:VS_scalar> 3 "=v"))]
    "VECTOR_MEM_VSX_P (<VSX_EXTRACT_I:MODE>mode) && TARGET_DIRECT_MOVE_64BIT
     && TARGET_P9_VECTOR"
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 3)
! 		   (vec_select:<VSX_EXTRACT_I:VS_scalar>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (scratch:SI))])
--- 4308,4326 ----
  ;; Where <ftype> is SFmode, DFmode (and KFmode/TFmode if those types are IEEE
  ;; 128-bit hardware types) and <vtype> is vector char, vector unsigned char,
  ;; vector short or vector unsigned short.
! (define_insn_and_split "*vsx_ext_<VSX_EXTRACT_I:VEC_base>_fl_<FL_CONV:mode>"
    [(set (match_operand:FL_CONV 0 "gpc_reg_operand" "=wa")
  	(float:FL_CONV
! 	 (vec_select:<VSX_EXTRACT_I:VEC_base>
  	  (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v")
  	  (parallel [(match_operand:QI 2 "const_int_operand" "n")]))))
!    (clobber (match_scratch:<VSX_EXTRACT_I:VEC_base> 3 "=v"))]
    "VECTOR_MEM_VSX_P (<VSX_EXTRACT_I:MODE>mode) && TARGET_DIRECT_MOVE_64BIT
     && TARGET_P9_VECTOR"
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 3)
! 		   (vec_select:<VSX_EXTRACT_I:VEC_base>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (scratch:SI))])
***************
*** 4347,4365 ****
  }
    [(set_attr "isa" "<FL_CONV:VSisa>")])
  
! (define_insn_and_split "*vsx_ext_<VSX_EXTRACT_I:VS_scalar>_ufl_<FL_CONV:mode>"
    [(set (match_operand:FL_CONV 0 "gpc_reg_operand" "=wa")
  	(unsigned_float:FL_CONV
! 	 (vec_select:<VSX_EXTRACT_I:VS_scalar>
  	  (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v")
  	  (parallel [(match_operand:QI 2 "const_int_operand" "n")]))))
!    (clobber (match_scratch:<VSX_EXTRACT_I:VS_scalar> 3 "=v"))]
    "VECTOR_MEM_VSX_P (<VSX_EXTRACT_I:MODE>mode) && TARGET_DIRECT_MOVE_64BIT
     && TARGET_P9_VECTOR"
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 3)
! 		   (vec_select:<VSX_EXTRACT_I:VS_scalar>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (scratch:SI))])
--- 4333,4351 ----
  }
    [(set_attr "isa" "<FL_CONV:VSisa>")])
  
! (define_insn_and_split "*vsx_ext_<VSX_EXTRACT_I:VEC_base>_ufl_<FL_CONV:mode>"
    [(set (match_operand:FL_CONV 0 "gpc_reg_operand" "=wa")
  	(unsigned_float:FL_CONV
! 	 (vec_select:<VSX_EXTRACT_I:VEC_base>
  	  (match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "v")
  	  (parallel [(match_operand:QI 2 "const_int_operand" "n")]))))
!    (clobber (match_scratch:<VSX_EXTRACT_I:VEC_base> 3 "=v"))]
    "VECTOR_MEM_VSX_P (<VSX_EXTRACT_I:MODE>mode) && TARGET_DIRECT_MOVE_64BIT
     && TARGET_P9_VECTOR"
    "#"
    "&& reload_completed"
    [(parallel [(set (match_dup 3)
! 		   (vec_select:<VSX_EXTRACT_I:VEC_base>
  		    (match_dup 1)
  		    (parallel [(match_dup 2)])))
  	      (clobber (scratch:SI))])
***************
*** 4375,4381 ****
    [(set (match_operand:VSX_EXTRACT_I 0 "gpc_reg_operand" "=<VSX_EX>")
  	(unspec:VSX_EXTRACT_I
  	 [(match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "0")
! 	  (match_operand:<VS_scalar> 2 "gpc_reg_operand" "<VSX_EX>")
  	  (match_operand:QI 3 "<VSX_EXTRACT_PREDICATE>" "n")]
  	 UNSPEC_VSX_SET))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_P9_VECTOR && TARGET_POWERPC64"
--- 4361,4367 ----
    [(set (match_operand:VSX_EXTRACT_I 0 "gpc_reg_operand" "=<VSX_EX>")
  	(unspec:VSX_EXTRACT_I
  	 [(match_operand:VSX_EXTRACT_I 1 "gpc_reg_operand" "0")
! 	  (match_operand:<VEC_base> 2 "gpc_reg_operand" "<VSX_EX>")
  	  (match_operand:QI 3 "<VSX_EXTRACT_PREDICATE>" "n")]
  	 UNSPEC_VSX_SET))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_P9_VECTOR && TARGET_POWERPC64"
***************
*** 4386,4392 ****
    if (!BYTES_BIG_ENDIAN)
      ele = nunits - 1 - ele;
  
!   operands[3] = GEN_INT (GET_MODE_SIZE (<VS_scalar>mode) * ele);
    if (<MODE>mode == V4SImode)
      return "xxinsertw %x0,%x2,%3";
    else
--- 4372,4378 ----
    if (!BYTES_BIG_ENDIAN)
      ele = nunits - 1 - ele;
  
!   operands[3] = GEN_INT (GET_MODE_SIZE (<VEC_base>mode) * ele);
    if (<MODE>mode == V4SImode)
      return "xxinsertw %x0,%x2,%3";
    else
***************
*** 4559,4578 ****
  (define_expand "vsx_splat_<mode>"
    [(set (match_operand:VSX_D 0 "vsx_register_operand")
  	(vec_duplicate:VSX_D
! 	 (match_operand:<VS_scalar> 1 "input_operand")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
    rtx op1 = operands[1];
    if (MEM_P (op1))
      operands[1] = rs6000_force_indexed_or_indirect_mem (op1);
    else if (!REG_P (op1))
!     op1 = force_reg (<VSX_D:VS_scalar>mode, op1);
  })
  
  (define_insn "vsx_splat_<mode>_reg"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa,we")
  	(vec_duplicate:VSX_D
! 	 (match_operand:<VS_scalar> 1 "gpc_reg_operand" "wa,b")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
    "@
     xxpermdi %x0,%x1,%x1,0
--- 4545,4564 ----
  (define_expand "vsx_splat_<mode>"
    [(set (match_operand:VSX_D 0 "vsx_register_operand")
  	(vec_duplicate:VSX_D
! 	 (match_operand:<VEC_base> 1 "input_operand")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
  {
    rtx op1 = operands[1];
    if (MEM_P (op1))
      operands[1] = rs6000_force_indexed_or_indirect_mem (op1);
    else if (!REG_P (op1))
!     op1 = force_reg (<VSX_D:VEC_base>mode, op1);
  })
  
  (define_insn "vsx_splat_<mode>_reg"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa,we")
  	(vec_duplicate:VSX_D
! 	 (match_operand:<VEC_base> 1 "gpc_reg_operand" "wa,b")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
    "@
     xxpermdi %x0,%x1,%x1,0
***************
*** 4582,4588 ****
  (define_insn "vsx_splat_<mode>_mem"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_duplicate:VSX_D
! 	 (match_operand:<VSX_D:VS_scalar> 1 "memory_operand" "Z")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
    "lxvdsx %x0,%y1"
    [(set_attr "type" "vecload")])
--- 4568,4574 ----
  (define_insn "vsx_splat_<mode>_mem"
    [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa")
  	(vec_duplicate:VSX_D
! 	 (match_operand:<VSX_D:VEC_base> 1 "memory_operand" "Z")))]
    "VECTOR_MEM_VSX_P (<MODE>mode)"
    "lxvdsx %x0,%y1"
    [(set_attr "type" "vecload")])
***************
*** 4638,4644 ****
  (define_insn "vsx_xxspltw_<mode>"
    [(set (match_operand:VSX_W 0 "vsx_register_operand" "=wa")
  	(vec_duplicate:VSX_W
! 	 (vec_select:<VS_scalar>
  	  (match_operand:VSX_W 1 "vsx_register_operand" "wa")
  	  (parallel
  	   [(match_operand:QI 2 "u5bit_cint_operand" "n")]))))]
--- 4624,4630 ----
  (define_insn "vsx_xxspltw_<mode>"
    [(set (match_operand:VSX_W 0 "vsx_register_operand" "=wa")
  	(vec_duplicate:VSX_W
! 	 (vec_select:<VEC_base>
  	  (match_operand:VSX_W 1 "vsx_register_operand" "wa")
  	  (parallel
  	   [(match_operand:QI 2 "u5bit_cint_operand" "n")]))))]
***************
*** 4664,4670 ****
  (define_insn "vsx_vsplt<VSX_SPLAT_SUFFIX>_di"
    [(set (match_operand:VSX_SPLAT_I 0 "altivec_register_operand" "=v")
  	(vec_duplicate:VSX_SPLAT_I
! 	 (truncate:<VS_scalar>
  	  (match_operand:DI 1 "altivec_register_operand" "v"))))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_DIRECT_MOVE_64BIT"
    "vsplt<VSX_SPLAT_SUFFIX> %0,%1,<VSX_SPLAT_COUNT>"
--- 4650,4656 ----
  (define_insn "vsx_vsplt<VSX_SPLAT_SUFFIX>_di"
    [(set (match_operand:VSX_SPLAT_I 0 "altivec_register_operand" "=v")
  	(vec_duplicate:VSX_SPLAT_I
! 	 (truncate:<VEC_base>
  	  (match_operand:DI 1 "altivec_register_operand" "v"))))]
    "VECTOR_MEM_VSX_P (<MODE>mode) && TARGET_DIRECT_MOVE_64BIT"
    "vsplt<VSX_SPLAT_SUFFIX> %0,%1,<VSX_SPLAT_COUNT>"
***************
*** 4919,4945 ****
   "vextsd2q %0,%1"
  [(set_attr "type" "vecexts")])
  
- (define_expand "vsignextend_v2di_v1ti"
-   [(set (match_operand:V1TI 0 "vsx_register_operand" "=v")
- 	(unspec:V1TI [(match_operand:V2DI 1 "vsx_register_operand" "v")]
- 		     UNSPEC_VSX_SIGN_EXTEND))]
-   "TARGET_POWER10"
- {
-   if (BYTES_BIG_ENDIAN)
-     {
-       rtx tmp = gen_reg_rtx (V2DImode);
- 
-       emit_insn (gen_altivec_vrevev2di2(tmp, operands[1]));
-       emit_insn (gen_vsx_sign_extend_v2di_v1ti(operands[0], tmp));
-       DONE;
-      }
- 
-   emit_insn (gen_vsx_sign_extend_v2di_v1ti(operands[0], operands[1]));
- })
- 
  ;; ISA 3.0 vector extend sign support
  
! (define_insn "vsx_sign_extend_qi_<mode>"
    [(set (match_operand:VSINT_84 0 "vsx_register_operand" "=v")
  	(unspec:VSINT_84
  	 [(match_operand:V16QI 1 "vsx_register_operand" "v")]
--- 4905,4913 ----
   "vextsd2q %0,%1"
  [(set_attr "type" "vecexts")])
  
  ;; ISA 3.0 vector extend sign support
  
! (define_insn "vsx_sign_extend_v16qi_<mode>"
    [(set (match_operand:VSINT_84 0 "vsx_register_operand" "=v")
  	(unspec:VSINT_84
  	 [(match_operand:V16QI 1 "vsx_register_operand" "v")]
***************
*** 4948,4972 ****
    "vextsb2<wd> %0,%1"
    [(set_attr "type" "vecexts")])
  
! (define_expand "vsignextend_qi_<mode>"
!   [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
! 	(unspec:VIlong
! 	 [(match_operand:V16QI 1 "vsx_register_operand" "v")]
! 	 UNSPEC_VSX_SIGN_EXTEND))]
!   "TARGET_P9_VECTOR"
! {
!   if (BYTES_BIG_ENDIAN)
!     {
!       rtx tmp = gen_reg_rtx (V16QImode);
!       emit_insn (gen_altivec_vrevev16qi2(tmp, operands[1]));
!       emit_insn (gen_vsx_sign_extend_qi_<mode>(operands[0], tmp));
!     }
!   else
!     emit_insn (gen_vsx_sign_extend_qi_<mode>(operands[0], operands[1]));
!   DONE;
! })
! 
! (define_insn "vsx_sign_extend_hi_<mode>"
    [(set (match_operand:VSINT_84 0 "vsx_register_operand" "=v")
  	(unspec:VSINT_84
  	 [(match_operand:V8HI 1 "vsx_register_operand" "v")]
--- 4916,4922 ----
    "vextsb2<wd> %0,%1"
    [(set_attr "type" "vecexts")])
  
! (define_insn "vsx_sign_extend_v8hi_<mode>"
    [(set (match_operand:VSINT_84 0 "vsx_register_operand" "=v")
  	(unspec:VSINT_84
  	 [(match_operand:V8HI 1 "vsx_register_operand" "v")]
***************
*** 4975,4999 ****
    "vextsh2<wd> %0,%1"
    [(set_attr "type" "vecexts")])
  
! (define_expand "vsignextend_hi_<mode>"
!   [(set (match_operand:VIlong 0 "vsx_register_operand" "=v")
! 	(unspec:VIlong
! 	 [(match_operand:V8HI 1 "vsx_register_operand" "v")]
! 	 UNSPEC_VSX_SIGN_EXTEND))]
!   "TARGET_P9_VECTOR"
! {
!   if (BYTES_BIG_ENDIAN)
!     {
!       rtx tmp = gen_reg_rtx (V8HImode);
!       emit_insn (gen_altivec_vrevev8hi2(tmp, operands[1]));
!       emit_insn (gen_vsx_sign_extend_hi_<mode>(operands[0], tmp));
!     }
!   else
!      emit_insn (gen_vsx_sign_extend_hi_<mode>(operands[0], operands[1]));
!   DONE;
! })
! 
! (define_insn "vsx_sign_extend_si_v2di"
    [(set (match_operand:V2DI 0 "vsx_register_operand" "=v")
  	(unspec:V2DI [(match_operand:V4SI 1 "vsx_register_operand" "v")]
  		     UNSPEC_VSX_SIGN_EXTEND))]
--- 4925,4931 ----
    "vextsh2<wd> %0,%1"
    [(set_attr "type" "vecexts")])
  
! (define_insn "vsx_sign_extend_v4si_v2di"
    [(set (match_operand:V2DI 0 "vsx_register_operand" "=v")
  	(unspec:V2DI [(match_operand:V4SI 1 "vsx_register_operand" "v")]
  		     UNSPEC_VSX_SIGN_EXTEND))]
***************
*** 5001,5024 ****
    "vextsw2d %0,%1"
    [(set_attr "type" "vecexts")])
  
- (define_expand "vsignextend_si_v2di"
-   [(set (match_operand:V2DI 0 "vsx_register_operand" "=v")
- 	(unspec:V2DI [(match_operand:V4SI 1 "vsx_register_operand" "v")]
- 		     UNSPEC_VSX_SIGN_EXTEND))]
-   "TARGET_P9_VECTOR"
- {
-   if (BYTES_BIG_ENDIAN)
-     {
-        rtx tmp = gen_reg_rtx (V4SImode);
- 
-        emit_insn (gen_altivec_vrevev4si2(tmp, operands[1]));
-        emit_insn (gen_vsx_sign_extend_si_v2di(operands[0], tmp));
-     }
-   else
-      emit_insn (gen_vsx_sign_extend_si_v2di(operands[0], operands[1]));
-   DONE;
- })
- 
  ;; Sign extend DI to TI.  We provide both GPR targets and Altivec targets on
  ;; power10.  On earlier systems, the machine independent code will generate a
  ;; shift left to sign extend the 64-bit value to 128-bit.
--- 4933,4938 ----
***************
*** 6101,6112 ****
      emit_insn (gen_p9_xxbr<VSX_XXBR>_<mode> (operands[0], operands[1]));
    else
      {
!       /* Want to have the elements in reverse order relative
! 	 to the endian mode in use, i.e. in LE mode, put elements
! 	 in BE order.  */
!       rtx sel = swap_endian_selector_for_mode(<MODE>mode);
!       emit_insn (gen_altivec_vperm_<mode> (operands[0], operands[1],
! 					   operands[1], sel));
      }
  
    DONE;
--- 6015,6035 ----
      emit_insn (gen_p9_xxbr<VSX_XXBR>_<mode> (operands[0], operands[1]));
    else
      {
!       if (<MODE>mode == V8HImode)
! 	{
! 	  rtx splt = gen_reg_rtx (V8HImode);
! 	  emit_insn (gen_altivec_vspltish (splt, GEN_INT (8)));
! 	  emit_insn (gen_altivec_vrlh (operands[0], operands[1], splt));
! 	}
!       else
! 	{
! 	  /* Want to have the elements in reverse order relative
! 	     to the endian mode in use, i.e. in LE mode, put elements
! 	     in BE order.  */
! 	  rtx sel = swap_endian_selector_for_mode (<MODE>mode);
! 	  emit_insn (gen_altivec_vperm_<mode>_direct (operands[0], operands[1],
! 						      operands[1], sel));
! 	}
      }
  
    DONE;
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/vxworks.h gcc-13.1.0/gcc/config/rs6000/vxworks.h
*** gcc-12.2.0/gcc/config/rs6000/vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  Vxworks PowerPC version.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  Vxworks PowerPC version.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 227,233 ****
  #define LINK_SPEC VXWORKS_LINK_SPEC " " VXWORKS_RELAX_LINK_SPEC
  
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT (MASK_EABI | MASK_STRICT_ALIGN)
  
  #undef PROCESSOR_DEFAULT
  #define PROCESSOR_DEFAULT PROCESSOR_PPC604
--- 227,233 ----
  #define LINK_SPEC VXWORKS_LINK_SPEC " " VXWORKS_RELAX_LINK_SPEC
  
  #undef TARGET_DEFAULT
! #define TARGET_DEFAULT (OPTION_MASK_EABI | MASK_STRICT_ALIGN)
  
  #undef PROCESSOR_DEFAULT
  #define PROCESSOR_DEFAULT PROCESSOR_PPC604
*************** along with GCC; see the file COPYING3.
*** 265,273 ****
  #undef LINK_OS_EXTRA_SPEC64
  #define LINK_OS_EXTRA_SPEC64 VXWORKS_LINK_SPEC
  
! /* linux64.h enables this, not supported in vxWorks.  */
! #undef TARGET_FLOAT128_ENABLE_TYPE
! #define TARGET_FLOAT128_ENABLE_TYPE 0
  
  #endif /* TARGET_VXWORKS7 */
  
--- 265,274 ----
  #undef LINK_OS_EXTRA_SPEC64
  #define LINK_OS_EXTRA_SPEC64 VXWORKS_LINK_SPEC
  
! /* Leave TARGET_FLOAT128_ENABLE_TYPE alone here, possibly inherited from
!    a linux configuration file.  This lets compilation tests pass and will
!    trigger visible link errors (hence remain harmless) if the support isn't
!    really there.  */
  
  #endif /* TARGET_VXWORKS7 */
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/vxworksae.h gcc-13.1.0/gcc/config/rs6000/vxworksae.h
*** gcc-12.2.0/gcc/config/rs6000/vxworksae.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/vxworksae.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler.  PowerPC VxworksAE version.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler.  PowerPC VxworksAE version.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/vxworksmils.h gcc-13.1.0/gcc/config/rs6000/vxworksmils.h
*** gcc-12.2.0/gcc/config/rs6000/vxworksmils.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/vxworksmils.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* PowerPC VxWorks MILS target definitions for GNU compiler.  Overrides
     on top of the canonical VxWorks definitions.
  
!    Copyright (C) 2014-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* PowerPC VxWorks MILS target definitions for GNU compiler.  Overrides
     on top of the canonical VxWorks definitions.
  
!    Copyright (C) 2014-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/x86gprintrin.h gcc-13.1.0/gcc/config/rs6000/x86gprintrin.h
*** gcc-12.2.0/gcc/config/rs6000/x86gprintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/x86gprintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2021-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2021-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/x86intrin.h gcc-13.1.0/gcc/config/rs6000/x86intrin.h
*** gcc-12.2.0/gcc/config/rs6000/x86intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/x86intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/xcoff.h gcc-13.1.0/gcc/config/rs6000/xcoff.h
*** gcc-12.2.0/gcc/config/rs6000/xcoff.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/xcoff.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for some generic XCOFF file format
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,7 ----
  // SPDX-License-Identifier: GPL-3.0-or-later
  /* Definitions of target machine for GNU compiler,
     for some generic XCOFF file format
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rs6000/xmmintrin.h gcc-13.1.0/gcc/config/rs6000/xmmintrin.h
*** gcc-12.2.0/gcc/config/rs6000/xmmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rs6000/xmmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rtems.h gcc-13.1.0/gcc/config/rtems.h
*** gcc-12.2.0/gcc/config/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration common to all targets running RTEMS. 
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Configuration common to all targets running RTEMS. 
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
***************
*** 56,58 ****
--- 56,62 ----
  /* Prefer int for int32_t (see stdint-newlib.h).  */
  #undef STDINT_LONG32
  #define STDINT_LONG32 (INT_TYPE_SIZE != 32 && LONG_TYPE_SIZE == 32)
+ 
+ /* Default to local-exec TLS model.  */
+ #undef OS_CC1_SPEC
+ #define OS_CC1_SPEC " %{!ftls-model=*:-ftls-model=local-exec}"
diff -Nrcpad gcc-12.2.0/gcc/config/rtems.opt gcc-13.1.0/gcc/config/rtems.opt
*** gcc-12.2.0/gcc/config/rtems.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rtems.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; RTEMS options.
  
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; RTEMS options.
  
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/rx/constraints.md gcc-13.1.0/gcc/config/rx/constraints.md
*** gcc-12.2.0/gcc/config/rx/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Renesas RX.
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Constraint definitions for Renesas RX.
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/elf.opt gcc-13.1.0/gcc/config/rx/elf.opt
*** gcc-12.2.0/gcc/config/rx/elf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/elf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Command line options for the Renesas RX port of GCC.
! ; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Command line options for the Renesas RX port of GCC.
! ; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/predicates.md gcc-13.1.0/gcc/config/rx/predicates.md
*** gcc-12.2.0/gcc/config/rx/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Renesas RX.
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Predicate definitions for Renesas RX.
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat.
  ;;
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx-modes.def gcc-13.1.0/gcc/config/rx/rx-modes.def
*** gcc-12.2.0/gcc/config/rx/rx-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target specific machine modes for the RX.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions of target specific machine modes for the RX.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx-opts.h gcc-13.1.0/gcc/config/rx/rx-opts.h
*** gcc-12.2.0/gcc/config/rx/rx-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC option-handling definitions for the Renesas RX processor.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* GCC option-handling definitions for the Renesas RX processor.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx-protos.h gcc-13.1.0/gcc/config/rx/rx-protos.h
*** gcc-12.2.0/gcc/config/rx/rx-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Exported function prototypes from the Renesas RX backend.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Exported function prototypes from the Renesas RX backend.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx.cc gcc-13.1.0/gcc/config/rx/rx.cc
*** gcc-12.2.0/gcc/config/rx/rx.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on Renesas RX processors.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* Subroutines used for code generation on Renesas RX processors.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx.h gcc-13.1.0/gcc/config/rx/rx.h
*** gcc-12.2.0/gcc/config/rx/rx.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GCC backend definitions for the Renesas RX processor.
!    Copyright (C) 2008-2022 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
--- 1,5 ----
  /* GCC backend definitions for the Renesas RX processor.
!    Copyright (C) 2008-2023 Free Software Foundation, Inc.
     Contributed by Red Hat.
  
     This file is part of GCC.
*************** typedef unsigned int CUMULATIVE_ARGS;
*** 623,629 ****
  #undef  PREFERRED_DEBUGGING_TYPE
  #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
  
- #define DBX_DEBUGGING_INFO 1
  #define DWARF2_DEBUGGING_INFO 1
  
  #define INCOMING_FRAME_SP_OFFSET		4
--- 623,628 ----
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx.md gcc-13.1.0/gcc/config/rx/rx.md
*** gcc-12.2.0/gcc/config/rx/rx.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;  Machine Description for Renesas RX processors
! ;;  Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;  Machine Description for Renesas RX processors
! ;;  Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;;  Contributed by Red Hat.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/rx.opt gcc-13.1.0/gcc/config/rx/rx.opt
*** gcc-12.2.0/gcc/config/rx/rx.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/rx.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ; Command line options for the Renesas RX port of GCC.
! ; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
--- 1,5 ----
  ; Command line options for the Renesas RX port of GCC.
! ; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ; Contributed by Red Hat.
  ;
  ; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/rx/t-rx gcc-13.1.0/gcc/config/rx/t-rx
*** gcc-12.2.0/gcc/config/rx/t-rx	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/rx/t-rx	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # Makefile fragment for building GCC for the Renesas RX target.
! # Copyright (C) 2008-2022 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
--- 1,5 ----
  # Makefile fragment for building GCC for the Renesas RX target.
! # Copyright (C) 2008-2023 Free Software Foundation, Inc.
  # Contributed by Red Hat.
  #
  # This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/2064.md gcc-13.1.0/gcc/config/s390/2064.md
*** gcc-12.2.0/gcc/config/s390/2064.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/2064.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z900 (cpu 2064).
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;   Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                  Ulrich Weigand (uweigand@de.ibm.com).
  
--- 1,5 ----
  ;; Scheduling description for z900 (cpu 2064).
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;   Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                  Ulrich Weigand (uweigand@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/2084.md gcc-13.1.0/gcc/config/s390/2084.md
*** gcc-12.2.0/gcc/config/s390/2084.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/2084.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z990 (cpu 2084).
! ;;   Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;   Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                  Ulrich Weigand (uweigand@de.ibm.com).
  
--- 1,5 ----
  ;; Scheduling description for z990 (cpu 2084).
! ;;   Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;   Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                  Ulrich Weigand (uweigand@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/2097.md gcc-13.1.0/gcc/config/s390/2097.md
*** gcc-12.2.0/gcc/config/s390/2097.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/2097.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z10 (cpu 2097).
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;; Contributed by Wolfgang Gellerich (gellerich@de.ibm.com).
  
  
--- 1,5 ----
  ;; Scheduling description for z10 (cpu 2097).
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;; Contributed by Wolfgang Gellerich (gellerich@de.ibm.com).
  
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/2817.md gcc-13.1.0/gcc/config/s390/2817.md
*** gcc-12.2.0/gcc/config/s390/2817.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/2817.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z196 (cpu 2817).
! ;;   Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;;   Contributed by Christian Borntraeger (Christian.Borntraeger@de.ibm.com)
  ;;                  Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
--- 1,5 ----
  ;; Scheduling description for z196 (cpu 2817).
! ;;   Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;;   Contributed by Christian Borntraeger (Christian.Borntraeger@de.ibm.com)
  ;;                  Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/2827.md gcc-13.1.0/gcc/config/s390/2827.md
*** gcc-12.2.0/gcc/config/s390/2827.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/2827.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for zEC12 (cpu 2827).
! ;;   Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for zEC12 (cpu 2827).
! ;;   Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/2964.md gcc-13.1.0/gcc/config/s390/2964.md
*** gcc-12.2.0/gcc/config/s390/2964.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/2964.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z13.
! ;;   Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for z13.
! ;;   Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;   Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/3906.md gcc-13.1.0/gcc/config/s390/3906.md
*** gcc-12.2.0/gcc/config/s390/3906.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/3906.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z14.
! ;;   Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;;   Contributed by Robin Dapp (rdapp@linux.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for z14.
! ;;   Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;;   Contributed by Robin Dapp (rdapp@linux.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/3931.md gcc-13.1.0/gcc/config/s390/3931.md
*** gcc-12.2.0/gcc/config/s390/3931.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/3931.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z16.
! ;;   Copyright (C) 2022 Free Software Foundation, Inc.
  ;;   Contributed by Robin Dapp (rdapp@linux.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; Scheduling description for z16.
! ;;   Copyright (C) 2022-2023 Free Software Foundation, Inc.
  ;;   Contributed by Robin Dapp (rdapp@linux.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/8561.md gcc-13.1.0/gcc/config/s390/8561.md
*** gcc-12.2.0/gcc/config/s390/8561.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/8561.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for z15.
! ;;   Copyright (C) 2019-2022 Free Software Foundation, Inc.
  ;;   Contributed by Robin Dapp (rdapp@linux.ibm.com)
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; Scheduling description for z15.
! ;;   Copyright (C) 2019-2023 Free Software Foundation, Inc.
  ;;   Contributed by Robin Dapp (rdapp@linux.ibm.com)
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/constraints.md gcc-13.1.0/gcc/config/s390/constraints.md
*** gcc-12.2.0/gcc/config/s390/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraints definitions belonging to the gcc backend for IBM S/390.
! ;; Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;; Written by Wolfgang Gellerich, using code and information found in
  ;; files s390.md, s390.h, and s390.cc.
  ;;
--- 1,5 ----
  ;; Constraints definitions belonging to the gcc backend for IBM S/390.
! ;; Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;; Written by Wolfgang Gellerich, using code and information found in
  ;; files s390.md, s390.h, and s390.cc.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/s390/driver-native.cc gcc-13.1.0/gcc/config/s390/driver-native.cc
*** gcc-12.2.0/gcc/config/s390/driver-native.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/driver-native.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** s390_host_detect_local_cpu (int argc, co
*** 125,134 ****
  	      break;
  	    case 0x3931:
  	    case 0x3932:
! 	      cpu = "z16";
  	      break;
  	    default:
! 	      cpu = "z16";
  	      break;
  	    }
  	}
--- 125,134 ----
  	      break;
  	    case 0x3931:
  	    case 0x3932:
! 	      cpu = "arch14";
  	      break;
  	    default:
! 	      cpu = "arch14";
  	      break;
  	    }
  	}
diff -Nrcpad gcc-12.2.0/gcc/config/s390/htmintrin.h gcc-13.1.0/gcc/config/s390/htmintrin.h
*** gcc-12.2.0/gcc/config/s390/htmintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/htmintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GNU compiler hardware transactional execution intrinsics
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* GNU compiler hardware transactional execution intrinsics
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/htmxlintrin.h gcc-13.1.0/gcc/config/s390/htmxlintrin.h
*** gcc-12.2.0/gcc/config/s390/htmxlintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/htmxlintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* XL compiler hardware transactional execution intrinsics
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* XL compiler hardware transactional execution intrinsics
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/linux.h gcc-13.1.0/gcc/config/s390/linux.h
*** gcc-12.2.0/gcc/config/s390/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Linux for S/390.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com).
  
--- 1,5 ----
  /* Definitions for Linux for S/390.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/predicates.md gcc-13.1.0/gcc/config/s390/predicates.md
*** gcc-12.2.0/gcc/config/s390/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for S/390 and zSeries.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                Ulrich Weigand (uweigand@de.ibm.com).
  ;;
--- 1,5 ----
  ;; Predicate definitions for S/390 and zSeries.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;; Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                Ulrich Weigand (uweigand@de.ibm.com).
  ;;
***************
*** 479,487 ****
    if (icode < 0)
      return false;
  
!   extract_constrain_insn (insn);
  
!   return which_alternative >= 0;
  })
  
  ;; Return true if OP is a store multiple operation.  It is known to be a
--- 479,487 ----
    if (icode < 0)
      return false;
  
!   extract_insn (insn);
  
!   return constrain_operands (reload_completed, get_enabled_alternatives (insn)) == 1;
  })
  
  ;; Return true if OP is a store multiple operation.  It is known to be a
***************
*** 594,596 ****
--- 594,616 ----
  (define_predicate "addv_const_operand"
    (and (match_code "const_int")
         (match_test "INTVAL (op) >= -32768 && INTVAL (op) <= 32767")))
+ 
+ ; Match (subreg (reg ...)) operands.
+ ; Used for movstrict destination operands
+ ; When replacing pseudos with hard regs reload strips away the
+ ; subregs. Accept also plain registers then to prevent the insn from
+ ; becoming unrecognizable.
+ (define_predicate "subreg_register_operand"
+   (ior (and (match_code "subreg")
+ 	    (match_test "register_operand (SUBREG_REG (op), GET_MODE (SUBREG_REG (op)))"))
+        (and (match_code "reg")
+ 	    (match_test "reload_completed || reload_in_progress")
+ 	    (match_test "register_operand (op, GET_MODE (op))"))))
+ 
+ ; Bias value for LEN_LOAD and LEN_STORE.  The bias will be added to the
+ ; length (in bytes for s390) to be loaded.  vll/vstl expect the lowest byte
+ ; to load while LEN_LOAD/LEN_STORE use the actual length in bytes.  This implies
+ ; that we cannot load a length of 0.
+ (define_predicate "vll_bias_operand"
+   (and (match_code "const_int")
+        (match_test "op == CONSTM1_RTX (QImode)")))
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-builtin-types.def gcc-13.1.0/gcc/config/s390/s390-builtin-types.def
*** gcc-12.2.0/gcc/config/s390/s390-builtin-types.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-builtin-types.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin type definitions for IBM S/390 and zSeries
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
--- 1,5 ----
  /* Builtin type definitions for IBM S/390 and zSeries
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-builtins.def gcc-13.1.0/gcc/config/s390/s390-builtins.def
*** gcc-12.2.0/gcc/config/s390/s390-builtins.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-builtins.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Builtin definitions for IBM S/390 and zSeries
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
--- 1,5 ----
  /* Builtin definitions for IBM S/390 and zSeries
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-builtins.h gcc-13.1.0/gcc/config/s390/s390-builtins.h
*** gcc-12.2.0/gcc/config/s390/s390-builtins.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-builtins.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Common data structures used for builtin handling on S/390.
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
--- 1,5 ----
  /* Common data structures used for builtin handling on S/390.
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-c.cc gcc-13.1.0/gcc/config/s390/s390-c.cc
*** gcc-12.2.0/gcc/config/s390/s390-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Language specific subroutines used for code generation on IBM S/390
     and zSeries
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
--- 1,6 ----
  /* Language specific subroutines used for code generation on IBM S/390
     and zSeries
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
  
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-d.cc gcc-13.1.0/gcc/config/s390/s390-d.cc
*** gcc-12.2.0/gcc/config/s390/s390-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the IBM S/390 and zSeries architectures.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the IBM S/390 and zSeries architectures.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
*************** along with GCC; see the file COPYING3.
*** 29,38 ****
  void
  s390_d_target_versions (void)
  {
!   if (TARGET_ZARCH)
!     d_add_builtin_version ("SystemZ");
!   else if (TARGET_64BIT)
!     d_add_builtin_version ("S390X");
    else
      d_add_builtin_version ("S390");
  
--- 30,40 ----
  void
  s390_d_target_versions (void)
  {
!   if (TARGET_64BIT)
!     {
!       d_add_builtin_version ("S390X");
!       d_add_builtin_version ("SystemZ");
!     }
    else
      d_add_builtin_version ("S390");
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-d.h gcc-13.1.0/gcc/config/s390/s390-d.h
*** gcc-12.2.0/gcc/config/s390/s390-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/s390/s390-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the IBM S/390 and zSeries architectures.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* s390-d.cc routines */
+ extern void s390_d_target_versions (void);
+ extern void s390_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS s390_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO s390_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-modes.def gcc-13.1.0/gcc/config/s390/s390-modes.def
*** gcc-12.2.0/gcc/config/s390/s390-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM S/390
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com).
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM S/390
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-opts.h gcc-13.1.0/gcc/config/s390/s390-opts.h
*** gcc-12.2.0/gcc/config/s390/s390-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for IBM S/390.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for IBM S/390.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-passes.def gcc-13.1.0/gcc/config/s390/s390-passes.def
*** gcc-12.2.0/gcc/config/s390/s390-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for S/390.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for S/390.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390-protos.h gcc-13.1.0/gcc/config/s390/s390-protos.h
*** gcc-12.2.0/gcc/config/s390/s390-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM S/390.
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
  
     Contributed by Hartmut Penner (hpenner@de.ibm.com)
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM S/390.
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
  
     Contributed by Hartmut Penner (hpenner@de.ibm.com)
  
*************** extern void s390_set_has_landing_pad_p (
*** 50,55 ****
--- 50,56 ----
  extern bool s390_hard_regno_rename_ok (unsigned int, unsigned int);
  extern int s390_class_max_nregs (enum reg_class, machine_mode);
  extern bool s390_return_addr_from_memory(void);
+ extern rtx s390_gen_lowpart_subreg (machine_mode, rtx);
  extern bool s390_fma_allowed_p (machine_mode);
  #if S390_USE_TARGET_ATTRIBUTE
  extern tree s390_valid_target_attribute_tree (tree args,
*************** extern void s390_register_target_pragmas
*** 174,183 ****
  /* Routines for s390-c.cc */
  extern bool s390_const_operand_ok (tree, int, int, tree);
  
- /* s390-d.cc routines */
- extern void s390_d_target_versions (void);
- extern void s390_d_register_target_info (void);
- 
  /* Pass management.  */
  namespace gcc { class context; }
  class rtl_opt_pass;
--- 175,180 ----
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390.cc gcc-13.1.0/gcc/config/s390/s390.cc
*** gcc-12.2.0/gcc/config/s390/s390.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for code generation on IBM S/390 and zSeries
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com) and
                    Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
--- 1,5 ----
  /* Subroutines used for code generation on IBM S/390 and zSeries
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com) and
                    Andreas Krebbel (Andreas.Krebbel@de.ibm.com).
*************** along with GCC; see the file COPYING3.
*** 70,75 ****
--- 70,76 ----
  #include "debug.h"
  #include "langhooks.h"
  #include "internal-fn.h"
+ #include "gimple-iterator.h"
  #include "gimple-fold.h"
  #include "tree-eh.h"
  #include "gimplify.h"
*************** struct s390_address
*** 410,415 ****
--- 411,455 ----
  #define FP_ARG_NUM_REG (TARGET_64BIT? 4 : 2)
  #define VEC_ARG_NUM_REG 8
  
+ /* Return TRUE if GPR REGNO is supposed to be restored in the function
+    epilogue.  */
+ static inline bool
+ s390_restore_gpr_p (int regno)
+ {
+   return (cfun_frame_layout.first_restore_gpr != -1
+ 	  && regno >= cfun_frame_layout.first_restore_gpr
+ 	  && regno <= cfun_frame_layout.last_restore_gpr);
+ }
+ 
+ /* Return TRUE if any of the registers in range [FIRST, LAST] is saved
+    because of -mpreserve-args.  */
+ static inline bool
+ s390_preserve_gpr_arg_in_range_p (int first, int last)
+ {
+   int num_arg_regs = MIN (crtl->args.info.gprs + cfun->va_list_gpr_size,
+ 			  GP_ARG_NUM_REG);
+   return (num_arg_regs
+ 	  && s390_preserve_args_p
+ 	  && first <= GPR2_REGNUM + num_arg_regs - 1
+ 	  && last >= GPR2_REGNUM);
+ }
+ 
+ static inline bool
+ s390_preserve_gpr_arg_p (int regno)
+ {
+   return s390_preserve_gpr_arg_in_range_p (regno, regno);
+ }
+ 
+ static inline bool
+ s390_preserve_fpr_arg_p (int regno)
+ {
+   int num_arg_regs = MIN (crtl->args.info.fprs + cfun->va_list_fpr_size,
+ 			  FP_ARG_NUM_REG);
+   return (s390_preserve_args_p
+ 	  && regno <= FPR0_REGNUM + num_arg_regs - 1
+ 	  && regno >= FPR0_REGNUM);
+ }
+ 
  /* A couple of shortcuts.  */
  #define CONST_OK_FOR_J(x) \
  	CONST_OK_FOR_CONSTRAINT_P((x), 'J', "J")
*************** struct s390_address
*** 429,434 ****
--- 469,482 ----
     bytes on a z10 (or higher) CPU.  */
  #define PREDICT_DISTANCE (TARGET_Z10 ? 384 : 2048)
  
+ static int
+ s390_address_cost (rtx addr, machine_mode mode ATTRIBUTE_UNUSED,
+ 		   addr_space_t as ATTRIBUTE_UNUSED,
+ 		   bool speed ATTRIBUTE_UNUSED);
+ 
+ static unsigned int
+ s390_hard_regno_nregs (unsigned int regno, machine_mode mode);
+ 
  /* Masks per jump target register indicating which thunk need to be
     generated.  */
  static GTY(()) int indirect_branch_prez10thunk_mask = 0;
*************** s390_return_addr_from_memory ()
*** 457,462 ****
--- 505,535 ----
    return cfun_gpr_save_slot(RETURN_REGNUM) == SAVE_SLOT_STACK;
  }
  
+ /* Generate a SUBREG for the MODE lowpart of EXPR.
+ 
+    In contrast to gen_lowpart it will always return a SUBREG
+    expression.  This is useful to generate STRICT_LOW_PART
+    expressions.  */
+ rtx
+ s390_gen_lowpart_subreg (machine_mode mode, rtx expr)
+ {
+   rtx lowpart = gen_lowpart (mode, expr);
+ 
+   /* There might be no SUBREG in case it could be applied to the hard
+      REG rtx or it could be folded with a paradoxical subreg.  Bring
+      it back.  */
+   if (!SUBREG_P (lowpart))
+     {
+       machine_mode reg_mode = TARGET_ZARCH ? DImode : SImode;
+       gcc_assert (REG_P (lowpart));
+       lowpart = gen_lowpart_SUBREG (mode,
+ 				    gen_rtx_REG (reg_mode,
+ 						 REGNO (lowpart)));
+     }
+ 
+   return lowpart;
+ }
+ 
  /* Return nonzero if it's OK to use fused multiply-add for MODE.  */
  bool
  s390_fma_allowed_p (machine_mode mode)
*************** s390_rtx_costs (rtx x, machine_mode mode
*** 3613,3661 ****
      case MEM:
        *total = 0;
        return true;
  
!     case SET:
!       {
! 	/* Without this a conditional move instruction would be
! 	   accounted as 3 * COSTS_N_INSNS (set, if_then_else,
! 	   comparison operator).  That's a bit pessimistic.  */
  
! 	if (!TARGET_Z196 || GET_CODE (SET_SRC (x)) != IF_THEN_ELSE)
! 	  return false;
  
! 	rtx cond = XEXP (SET_SRC (x), 0);
  
! 	if (!CC_REG_P (XEXP (cond, 0)) || !CONST_INT_P (XEXP (cond, 1)))
! 	  return false;
  
! 	/* It is going to be a load/store on condition.  Make it
! 	   slightly more expensive than a normal load.  */
! 	*total = COSTS_N_INSNS (1) + 2;
  
! 	rtx dst = SET_DEST (x);
! 	rtx then = XEXP (SET_SRC (x), 1);
! 	rtx els = XEXP (SET_SRC (x), 2);
  
! 	/* It is a real IF-THEN-ELSE.  An additional move will be
! 	   needed to implement that.  */
! 	if (!TARGET_Z15
! 	    && reload_completed
! 	    && !rtx_equal_p (dst, then)
! 	    && !rtx_equal_p (dst, els))
! 	  *total += COSTS_N_INSNS (1) / 2;
  
! 	/* A minor penalty for constants we cannot directly handle.  */
! 	if ((CONST_INT_P (then) || CONST_INT_P (els))
! 	    && (!TARGET_Z13 || MEM_P (dst)
! 		|| (CONST_INT_P (then) && !satisfies_constraint_K (then))
! 		|| (CONST_INT_P (els) && !satisfies_constraint_K (els))))
! 	  *total += COSTS_N_INSNS (1) / 2;
  
! 	/* A store on condition can only handle register src operands.  */
! 	if (MEM_P (dst) && (!REG_P (then) || !REG_P (els)))
! 	  *total += COSTS_N_INSNS (1) / 2;
  
! 	return true;
        }
      case IOR:
  
--- 3686,3781 ----
      case MEM:
        *total = 0;
        return true;
+       case SET: {
+ 	rtx dst = SET_DEST (x);
+ 	rtx src = SET_SRC (x);
  
! 	switch (GET_CODE (src))
! 	  {
! 	    case IF_THEN_ELSE: {
! 	      /* Without this a conditional move instruction would be
! 		 accounted as 3 * COSTS_N_INSNS (set, if_then_else,
! 		 comparison operator).  That's a bit pessimistic.  */
  
! 	      if (!TARGET_Z196)
! 		return false;
  
! 	      rtx cond = XEXP (src, 0);
! 	      if (!CC_REG_P (XEXP (cond, 0)) || !CONST_INT_P (XEXP (cond, 1)))
! 		return false;
  
! 	      /* It is going to be a load/store on condition.  Make it
! 		 slightly more expensive than a normal load.  */
! 	      *total = COSTS_N_INSNS (1) + 2;
  
! 	      rtx then = XEXP (src, 1);
! 	      rtx els = XEXP (src, 2);
  
! 	      /* It is a real IF-THEN-ELSE.  An additional move will be
! 		 needed to implement that.  */
! 	      if (!TARGET_Z15 && reload_completed && !rtx_equal_p (dst, then)
! 		  && !rtx_equal_p (dst, els))
! 		*total += COSTS_N_INSNS (1) / 2;
  
! 	      /* A minor penalty for constants we cannot directly handle.  */
! 	      if ((CONST_INT_P (then) || CONST_INT_P (els))
! 		  && (!TARGET_Z13 || MEM_P (dst)
! 		      || (CONST_INT_P (then) && !satisfies_constraint_K (then))
! 		      || (CONST_INT_P (els) && !satisfies_constraint_K (els))))
! 		*total += COSTS_N_INSNS (1) / 2;
  
! 	      /* A store on condition can only handle register src operands.  */
! 	      if (MEM_P (dst) && (!REG_P (then) || !REG_P (els)))
! 		*total += COSTS_N_INSNS (1) / 2;
  
! 	      return true;
! 	    }
! 	  default:
! 	    break;
! 	  }
  
! 	switch (GET_CODE (dst))
! 	  {
! 	  case SUBREG:
! 	    if (!REG_P (SUBREG_REG (dst)))
! 	      *total += rtx_cost (SUBREG_REG (src), VOIDmode, SET, 0, speed);
! 	    /* fallthrough */
! 	  case REG:
! 	    /* If this is a VR -> VR copy, count the number of
! 	       registers.  */
! 	    if (VECTOR_MODE_P (GET_MODE (dst)) && REG_P (src))
! 	      {
! 		int nregs = s390_hard_regno_nregs (VR0_REGNUM, GET_MODE (dst));
! 		*total = COSTS_N_INSNS (nregs);
! 	      }
! 	    /* Same for GPRs.  */
! 	    else if (REG_P (src))
! 	      {
! 		int nregs
! 		  = s390_hard_regno_nregs (GPR0_REGNUM, GET_MODE (dst));
! 		*total = COSTS_N_INSNS (nregs);
! 	      }
! 	    else
! 	      /* Otherwise just cost the src.  */
! 	      *total += rtx_cost (src, mode, SET, 1, speed);
! 	    return true;
! 	    case MEM: {
! 	      rtx address = XEXP (dst, 0);
! 	      rtx tmp;
! 	      HOST_WIDE_INT tmp2;
! 	      if (s390_loadrelative_operand_p (address, &tmp, &tmp2))
! 		*total = COSTS_N_INSNS (1);
! 	      else
! 		*total = s390_address_cost (address, mode, 0, speed);
! 	      return true;
! 	    }
! 	  default:
! 	    /* Not handled for now, assume default costs.  */
! 	    *total = COSTS_N_INSNS (1);
! 	    return false;
! 	  }
! 
! 	return false;
        }
      case IOR:
  
*************** s390_expand_insv (rtx dest, rtx op1, rtx
*** 6519,6525 ****
        /* Emit a strict_low_part pattern if possible.  */
        if (smode_bsize == bitsize && bitpos == mode_bsize - smode_bsize)
  	{
! 	  rtx low_dest = gen_lowpart (smode, dest);
  	  rtx low_src = gen_lowpart (smode, src);
  
  	  switch (smode)
--- 6639,6645 ----
        /* Emit a strict_low_part pattern if possible.  */
        if (smode_bsize == bitsize && bitpos == mode_bsize - smode_bsize)
  	{
! 	  rtx low_dest = s390_gen_lowpart_subreg (smode, dest);
  	  rtx low_src = gen_lowpart (smode, src);
  
  	  switch (smode)
*************** s390_expand_atomic (machine_mode mode, e
*** 7467,7473 ****
      case SET:
        if (ac.aligned && MEM_P (val))
  	store_bit_field (new_rtx, GET_MODE_BITSIZE (mode), 0,
! 			 0, 0, SImode, val, false);
        else
  	{
  	  new_rtx = expand_simple_binop (SImode, AND, new_rtx, ac.modemaski,
--- 7587,7593 ----
      case SET:
        if (ac.aligned && MEM_P (val))
  	store_bit_field (new_rtx, GET_MODE_BITSIZE (mode), 0,
! 			 0, 0, SImode, val, false, false);
        else
  	{
  	  new_rtx = expand_simple_binop (SImode, AND, new_rtx, ac.modemaski,
*************** s390_mangle_type (const_tree type)
*** 7561,7568 ****
    if (type == s390_builtin_types[BT_BV4SI]) return "U6__booli";
    if (type == s390_builtin_types[BT_BV2DI]) return "U6__booll";
  
!   if (TYPE_MAIN_VARIANT (type) == long_double_type_node
!       && TARGET_LONG_DOUBLE_128)
      return "g";
  
    /* For all other types, use normal C++ mangling.  */
--- 7681,7687 ----
    if (type == s390_builtin_types[BT_BV4SI]) return "U6__booli";
    if (type == s390_builtin_types[BT_BV2DI]) return "U6__booll";
  
!   if (type == long_double_type_node && TARGET_LONG_DOUBLE_128)
      return "g";
  
    /* For all other types, use normal C++ mangling.  */
*************** s390_issue_rate (void)
*** 8519,8524 ****
--- 8638,8644 ----
      case PROCESSOR_2827_ZEC12:
      case PROCESSOR_2964_Z13:
      case PROCESSOR_3906_Z14:
+     case PROCESSOR_8561_Z15:
      case PROCESSOR_3931_Z16:
      default:
        return 1;
*************** static machine_mode constant_modes[] =
*** 8768,8774 ****
    QImode,
    V1QImode
  };
! #define NR_C_MODES (sizeof (constant_modes) / sizeof (constant_modes[0]))
  
  struct constant
  {
--- 8888,8894 ----
    QImode,
    V1QImode
  };
! #define NR_C_MODES (ARRAY_SIZE (constant_modes))
  
  struct constant
  {
*************** s390_register_info_gprtofpr ()
*** 9812,9872 ****
  }
  
  /* Set the bits in fpr_bitmap for FPRs which need to be saved due to
!    stdarg.
     This is a helper routine for s390_register_info.  */
- 
  static void
! s390_register_info_stdarg_fpr ()
  {
    int i;
!   int min_fpr;
!   int max_fpr;
  
    /* Save the FP argument regs for stdarg. f0, f2 for 31 bit and
       f0-f4 for 64 bit.  */
!   if (!cfun->stdarg
!       || !TARGET_HARD_FLOAT
!       || !cfun->va_list_fpr_size
!       || crtl->args.info.fprs >= FP_ARG_NUM_REG)
!     return;
  
!   min_fpr = crtl->args.info.fprs;
!   max_fpr = min_fpr + cfun->va_list_fpr_size - 1;
!   if (max_fpr >= FP_ARG_NUM_REG)
!     max_fpr = FP_ARG_NUM_REG - 1;
  
!   /* FPR argument regs start at f0.  */
!   min_fpr += FPR0_REGNUM;
!   max_fpr += FPR0_REGNUM;
  
    for (i = min_fpr; i <= max_fpr; i++)
      cfun_set_fpr_save (i);
  }
  
  /* Reserve the GPR save slots for GPRs which need to be saved due to
!    stdarg.
     This is a helper routine for s390_register_info.  */
  
  static void
! s390_register_info_stdarg_gpr ()
  {
    int i;
!   int min_gpr;
!   int max_gpr;
  
!   if (!cfun->stdarg
!       || !cfun->va_list_gpr_size
!       || crtl->args.info.gprs >= GP_ARG_NUM_REG)
!     return;
  
!   min_gpr = crtl->args.info.gprs;
!   max_gpr = min_gpr + cfun->va_list_gpr_size - 1;
!   if (max_gpr >= GP_ARG_NUM_REG)
!     max_gpr = GP_ARG_NUM_REG - 1;
  
!   /* GPR argument regs start at r2.  */
!   min_gpr += GPR2_REGNUM;
!   max_gpr += GPR2_REGNUM;
  
    /* If r6 was supposed to be saved into an FPR and now needs to go to
       the stack for vararg we have to adjust the restore range to make
--- 9932,10020 ----
  }
  
  /* Set the bits in fpr_bitmap for FPRs which need to be saved due to
!    stdarg or -mpreserve-args.
     This is a helper routine for s390_register_info.  */
  static void
! s390_register_info_arg_fpr ()
  {
    int i;
!   int min_stdarg_fpr = INT_MAX, max_stdarg_fpr = -1;
!   int min_preserve_fpr = INT_MAX, max_preserve_fpr = -1;
!   int min_fpr, max_fpr;
  
    /* Save the FP argument regs for stdarg. f0, f2 for 31 bit and
       f0-f4 for 64 bit.  */
!   if (cfun->stdarg
!       && TARGET_HARD_FLOAT
!       && cfun->va_list_fpr_size
!       && crtl->args.info.fprs < FP_ARG_NUM_REG)
!     {
!       min_stdarg_fpr = crtl->args.info.fprs;
!       max_stdarg_fpr = min_stdarg_fpr + cfun->va_list_fpr_size - 1;
!       if (max_stdarg_fpr >= FP_ARG_NUM_REG)
! 	max_stdarg_fpr = FP_ARG_NUM_REG - 1;
  
!       /* FPR argument regs start at f0.  */
!       min_stdarg_fpr += FPR0_REGNUM;
!       max_stdarg_fpr += FPR0_REGNUM;
!     }
  
!   if (s390_preserve_args_p && crtl->args.info.fprs)
!     {
!       min_preserve_fpr = FPR0_REGNUM;
!       max_preserve_fpr = MIN (FPR0_REGNUM + FP_ARG_NUM_REG - 1,
! 			      FPR0_REGNUM + crtl->args.info.fprs - 1);
!     }
! 
!   min_fpr = MIN (min_stdarg_fpr, min_preserve_fpr);
!   max_fpr = MAX (max_stdarg_fpr, max_preserve_fpr);
! 
!   if (max_fpr == -1)
!     return;
  
    for (i = min_fpr; i <= max_fpr; i++)
      cfun_set_fpr_save (i);
  }
  
+ 
  /* Reserve the GPR save slots for GPRs which need to be saved due to
!    stdarg or -mpreserve-args.
     This is a helper routine for s390_register_info.  */
  
  static void
! s390_register_info_arg_gpr ()
  {
    int i;
!   int min_stdarg_gpr = INT_MAX, max_stdarg_gpr = -1;
!   int min_preserve_gpr = INT_MAX, max_preserve_gpr = -1;
!   int min_gpr, max_gpr;
  
!   if (cfun->stdarg
!       && cfun->va_list_gpr_size
!       && crtl->args.info.gprs < GP_ARG_NUM_REG)
!     {
!       min_stdarg_gpr = crtl->args.info.gprs;
!       max_stdarg_gpr = min_stdarg_gpr + cfun->va_list_gpr_size - 1;
!       if (max_stdarg_gpr >= GP_ARG_NUM_REG)
! 	max_stdarg_gpr = GP_ARG_NUM_REG - 1;
  
!       /* GPR argument regs start at r2.  */
!       min_stdarg_gpr += GPR2_REGNUM;
!       max_stdarg_gpr += GPR2_REGNUM;
!     }
  
!   if (s390_preserve_args_p && crtl->args.info.gprs)
!     {
!       min_preserve_gpr = GPR2_REGNUM;
!       max_preserve_gpr = MIN (GPR6_REGNUM,
! 			      GPR2_REGNUM + crtl->args.info.gprs - 1);
!     }
! 
!   min_gpr = MIN (min_stdarg_gpr, min_preserve_gpr);
!   max_gpr = MAX (max_stdarg_gpr, max_preserve_gpr);
! 
!   if (max_gpr == -1)
!     return;
  
    /* If r6 was supposed to be saved into an FPR and now needs to go to
       the stack for vararg we have to adjust the restore range to make
*************** s390_register_info ()
*** 9994,10011 ****
  
    memset (cfun_frame_layout.gpr_save_slots, SAVE_SLOT_NONE, 16);
  
!   for (i = 6; i < 16; i++)
!     if (clobbered_regs[i])
        cfun_gpr_save_slot (i) = SAVE_SLOT_STACK;
  
!   s390_register_info_stdarg_fpr ();
    s390_register_info_gprtofpr ();
    s390_register_info_set_ranges ();
!   /* stdarg functions might need to save GPRs 2 to 6.  This might
!      override the GPR->FPR save decision made by
!      s390_register_info_gprtofpr for r6 since vararg regs must go to
!      the stack.  */
!   s390_register_info_stdarg_gpr ();
  }
  
  /* Return true if REGNO is a global register, but not one
--- 10142,10159 ----
  
    memset (cfun_frame_layout.gpr_save_slots, SAVE_SLOT_NONE, 16);
  
!   for (i = 0; i < 16; i++)
!     if (clobbered_regs[i] && !call_used_regs[i])
        cfun_gpr_save_slot (i) = SAVE_SLOT_STACK;
  
!   s390_register_info_arg_fpr ();
    s390_register_info_gprtofpr ();
    s390_register_info_set_ranges ();
! 
!   /* Forcing argument registers to be saved on the stack might
!      override the GPR->FPR save decision for r6 so this must come
!      last.  */
!   s390_register_info_arg_gpr ();
  }
  
  /* Return true if REGNO is a global register, but not one
*************** s390_optimize_register_info ()
*** 10055,10068 ****
  	|| cfun_frame_layout.save_return_addr_p
  	|| crtl->calls_eh_return);
  
!   memset (cfun_frame_layout.gpr_save_slots, SAVE_SLOT_NONE, 6);
! 
!   for (i = 6; i < 16; i++)
!     if (!clobbered_regs[i])
        cfun_gpr_save_slot (i) = SAVE_SLOT_NONE;
  
    s390_register_info_set_ranges ();
!   s390_register_info_stdarg_gpr ();
  }
  
  /* Fill cfun->machine with info about frame of current function.  */
--- 10203,10214 ----
  	|| cfun_frame_layout.save_return_addr_p
  	|| crtl->calls_eh_return);
  
!   for (i = 0; i < 16; i++)
!     if (!clobbered_regs[i] || call_used_regs[i])
        cfun_gpr_save_slot (i) = SAVE_SLOT_NONE;
  
    s390_register_info_set_ranges ();
!   s390_register_info_arg_gpr ();
  }
  
  /* Fill cfun->machine with info about frame of current function.  */
*************** static rtx
*** 10785,10798 ****
  save_fpr (rtx base, int offset, int regnum)
  {
    rtx addr;
    addr = gen_rtx_MEM (DFmode, plus_constant (Pmode, base, offset));
  
!   if (regnum >= 16 && regnum <= (16 + FP_ARG_NUM_REG))
      set_mem_alias_set (addr, get_varargs_alias_set ());
    else
      set_mem_alias_set (addr, get_frame_alias_set ());
  
!   return emit_move_insn (addr, gen_rtx_REG (DFmode, regnum));
  }
  
  /* Emit insn to restore fpr REGNUM from offset OFFSET relative
--- 10931,10958 ----
  save_fpr (rtx base, int offset, int regnum)
  {
    rtx addr;
+   rtx insn;
+ 
    addr = gen_rtx_MEM (DFmode, plus_constant (Pmode, base, offset));
  
!   if (regnum >= FPR0_REGNUM && regnum <= (FPR0_REGNUM + FP_ARG_NUM_REG))
      set_mem_alias_set (addr, get_varargs_alias_set ());
    else
      set_mem_alias_set (addr, get_frame_alias_set ());
  
!   insn = emit_move_insn (addr, gen_rtx_REG (DFmode, regnum));
! 
!   if (!call_used_regs[regnum] || s390_preserve_fpr_arg_p (regnum))
!     RTX_FRAME_RELATED_P (insn) = 1;
! 
!   if (s390_preserve_fpr_arg_p (regnum) && !cfun_fpr_save_p (regnum))
!     {
!       rtx reg = gen_rtx_REG (DFmode, regnum);
!       add_reg_note (insn, REG_CFA_NO_RESTORE, reg);
!       add_reg_note (insn, REG_CFA_OFFSET, gen_rtx_SET (addr, reg));
!     }
! 
!   return insn;
  }
  
  /* Emit insn to restore fpr REGNUM from offset OFFSET relative
*************** restore_fpr (rtx base, int offset, int r
*** 10812,10827 ****
     the register save area located at offset OFFSET
     relative to register BASE.  */
  
! static rtx
! save_gprs (rtx base, int offset, int first, int last)
  {
    rtx addr, insn, note;
    int i;
  
    addr = plus_constant (Pmode, base, offset);
!   addr = gen_rtx_MEM (Pmode, addr);
! 
!   set_mem_alias_set (addr, get_frame_alias_set ());
  
    /* Special-case single register.  */
    if (first == last)
--- 10972,10986 ----
     the register save area located at offset OFFSET
     relative to register BASE.  */
  
! static void
! save_gprs (rtx base, int offset, int first, int last, rtx_insn *before = NULL)
  {
    rtx addr, insn, note;
+   rtx_insn *out_insn;
    int i;
  
    addr = plus_constant (Pmode, base, offset);
!   addr = gen_frame_mem (Pmode, addr);
  
    /* Special-case single register.  */
    if (first == last)
*************** save_gprs (rtx base, int offset, int fir
*** 10833,10839 ****
  
        if (!global_not_special_regno_p (first))
  	RTX_FRAME_RELATED_P (insn) = 1;
!       return insn;
      }
  
  
--- 10992,11006 ----
  
        if (!global_not_special_regno_p (first))
  	RTX_FRAME_RELATED_P (insn) = 1;
! 
!       if (s390_preserve_gpr_arg_p (first) && !s390_restore_gpr_p (first))
! 	{
! 	  rtx reg = gen_rtx_REG (Pmode, first);
! 	  add_reg_note (insn, REG_CFA_NO_RESTORE, reg);
! 	  add_reg_note (insn, REG_CFA_OFFSET, gen_rtx_SET (addr, reg));
! 	}
! 
!       goto emit;
      }
  
  
*************** save_gprs (rtx base, int offset, int fir
*** 10862,10868 ****
       set, even if it does not.  Therefore we emit a new pattern
       without those registers as REG_FRAME_RELATED_EXPR note.  */
  
!   if (first >= 6 && !global_not_special_regno_p (first))
      {
        rtx pat = PATTERN (insn);
  
--- 11029,11040 ----
       set, even if it does not.  Therefore we emit a new pattern
       without those registers as REG_FRAME_RELATED_EXPR note.  */
  
!   /* In these cases all of the sets are marked as frame related:
!      1. call-save GPR saved and restored
!      2. argument GPR saved because of -mpreserve-args */
!   if ((first >= GPR6_REGNUM && !global_not_special_regno_p (first))
!       || s390_preserve_gpr_arg_in_range_p (first, last))
! 
      {
        rtx pat = PATTERN (insn);
  
*************** save_gprs (rtx base, int offset, int fir
*** 10873,10878 ****
--- 11045,11068 ----
  	  RTX_FRAME_RELATED_P (XVECEXP (pat, 0, i)) = 1;
  
        RTX_FRAME_RELATED_P (insn) = 1;
+ 
+       /* For the -mpreserve-args register saves no restore operations
+ 	 will be emitted. CFI checking would complain about this. We
+ 	 manually generate the REG_CFA notes here to be able to mark
+ 	 those operations with REG_CFA_NO_RESTORE.  */
+       if (s390_preserve_gpr_arg_in_range_p (first, last))
+ 	{
+ 	  for (int regno = first; regno <= last; regno++)
+ 	    {
+ 	      rtx reg = gen_rtx_REG (Pmode, regno);
+ 	      rtx reg_addr = plus_constant (Pmode, base,
+ 					    offset + (regno - first) * UNITS_PER_LONG);
+ 	      if (!s390_restore_gpr_p (regno))
+ 		add_reg_note (insn, REG_CFA_NO_RESTORE, reg);
+ 	      add_reg_note (insn, REG_CFA_OFFSET,
+ 			    gen_rtx_SET (gen_frame_mem (Pmode, reg_addr), reg));
+ 	    }
+ 	}
      }
    else if (last >= 6)
      {
*************** save_gprs (rtx base, int offset, int fir
*** 10883,10889 ****
  	  break;
  
        if (start > last)
! 	return insn;
  
        addr = plus_constant (Pmode, base,
  			    offset + (start - first) * UNITS_PER_LONG);
--- 11073,11079 ----
  	  break;
  
        if (start > last)
! 	goto emit;
  
        addr = plus_constant (Pmode, base,
  			    offset + (start - first) * UNITS_PER_LONG);
*************** save_gprs (rtx base, int offset, int fir
*** 10901,10907 ****
  	  add_reg_note (insn, REG_FRAME_RELATED_EXPR, note);
  	  RTX_FRAME_RELATED_P (insn) = 1;
  
! 	  return insn;
  	}
  
        note = gen_store_multiple (gen_rtx_MEM (Pmode, addr),
--- 11091,11097 ----
  	  add_reg_note (insn, REG_FRAME_RELATED_EXPR, note);
  	  RTX_FRAME_RELATED_P (insn) = 1;
  
! 	  goto emit;
  	}
  
        note = gen_store_multiple (gen_rtx_MEM (Pmode, addr),
*************** save_gprs (rtx base, int offset, int fir
*** 10920,10928 ****
        RTX_FRAME_RELATED_P (insn) = 1;
      }
  
!   return insn;
  }
  
  /* Generate insn to restore registers FIRST to LAST from
     the register save area located at offset OFFSET
     relative to register BASE.  */
--- 11110,11124 ----
        RTX_FRAME_RELATED_P (insn) = 1;
      }
  
!  emit:
!   if (before != NULL_RTX)
!     out_insn = emit_insn_before (insn, before);
!   else
!     out_insn = emit_insn (insn);
!   INSN_ADDRESSES_NEW (out_insn, -1);
  }
  
+ 
  /* Generate insn to restore registers FIRST to LAST from
     the register save area located at offset OFFSET
     relative to register BASE.  */
*************** restore_gprs (rtx base, int offset, int
*** 10933,10940 ****
    rtx addr, insn;
  
    addr = plus_constant (Pmode, base, offset);
!   addr = gen_rtx_MEM (Pmode, addr);
!   set_mem_alias_set (addr, get_frame_alias_set ());
  
    /* Special-case single register.  */
    if (first == last)
--- 11129,11135 ----
    rtx addr, insn;
  
    addr = plus_constant (Pmode, base, offset);
!   addr = gen_frame_mem (Pmode, addr);
  
    /* Special-case single register.  */
    if (first == last)
*************** s390_load_got (void)
*** 10983,10992 ****
  static void
  s390_emit_stack_tie (void)
  {
!   rtx mem = gen_frame_mem (BLKmode,
! 			   gen_rtx_REG (Pmode, STACK_POINTER_REGNUM));
! 
!   emit_insn (gen_stack_tie (mem));
  }
  
  /* Copy GPRS into FPR save slots.  */
--- 11178,11188 ----
  static void
  s390_emit_stack_tie (void)
  {
!   rtx mem = gen_frame_mem (BLKmode, stack_pointer_rtx);
!   if (frame_pointer_needed)
!     emit_insn (gen_stack_tie (Pmode, mem, hard_frame_pointer_rtx));
!   else
!     emit_insn (gen_stack_tie (Pmode, mem, stack_pointer_rtx));
  }
  
  /* Copy GPRS into FPR save slots.  */
*************** s390_emit_prologue (void)
*** 11346,11357 ****
    /* Save call saved gprs.  */
    if (cfun_frame_layout.first_save_gpr != -1)
      {
!       insn = save_gprs (stack_pointer_rtx,
! 			cfun_frame_layout.gprs_offset +
! 			UNITS_PER_LONG * (cfun_frame_layout.first_save_gpr
! 					  - cfun_frame_layout.first_save_gpr_slot),
! 			cfun_frame_layout.first_save_gpr,
! 			cfun_frame_layout.last_save_gpr);
  
        /* This is not 100% correct.  If we have more than one register saved,
  	 then LAST_PROBE_OFFSET can move even closer to sp.  */
--- 11542,11553 ----
    /* Save call saved gprs.  */
    if (cfun_frame_layout.first_save_gpr != -1)
      {
!       save_gprs (stack_pointer_rtx,
! 		 cfun_frame_layout.gprs_offset +
! 		 UNITS_PER_LONG * (cfun_frame_layout.first_save_gpr
! 				   - cfun_frame_layout.first_save_gpr_slot),
! 		 cfun_frame_layout.first_save_gpr,
! 		 cfun_frame_layout.last_save_gpr);
  
        /* This is not 100% correct.  If we have more than one register saved,
  	 then LAST_PROBE_OFFSET can move even closer to sp.  */
*************** s390_emit_prologue (void)
*** 11359,11366 ****
  	= (cfun_frame_layout.gprs_offset +
  	   UNITS_PER_LONG * (cfun_frame_layout.first_save_gpr
  			     - cfun_frame_layout.first_save_gpr_slot));
- 
-       emit_insn (insn);
      }
  
    /* Dummy insn to mark literal pool slot.  */
--- 11555,11560 ----
*************** s390_emit_prologue (void)
*** 11390,11404 ****
      {
        if (cfun_fpr_save_p (i))
  	{
! 	  insn = save_fpr (stack_pointer_rtx, offset, i);
  	  if (offset < last_probe_offset)
  	    last_probe_offset = offset;
  	  offset += 8;
- 
- 	  /* If f4 and f6 are call clobbered they are saved due to
- 	     stdargs and therefore are not frame related.  */
- 	  if (!call_used_regs[i])
- 	    RTX_FRAME_RELATED_P (insn) = 1;
  	}
        else if (!TARGET_PACKED_STACK || call_used_regs[i])
  	offset += 8;
--- 11584,11593 ----
      {
        if (cfun_fpr_save_p (i))
  	{
! 	  save_fpr (stack_pointer_rtx, offset, i);
  	  if (offset < last_probe_offset)
  	    last_probe_offset = offset;
  	  offset += 8;
  	}
        else if (!TARGET_PACKED_STACK || call_used_regs[i])
  	offset += 8;
*************** s390_emit_prologue (void)
*** 11414,11424 ****
        for (i = FPR15_REGNUM; i >= FPR8_REGNUM && offset >= 0; i--)
  	if (cfun_fpr_save_p (i))
  	  {
! 	    insn = save_fpr (stack_pointer_rtx, offset, i);
  	    if (offset < last_probe_offset)
  	      last_probe_offset = offset;
  
- 	    RTX_FRAME_RELATED_P (insn) = 1;
  	    offset -= 8;
  	  }
        if (offset >= cfun_frame_layout.f8_offset)
--- 11603,11612 ----
        for (i = FPR15_REGNUM; i >= FPR8_REGNUM && offset >= 0; i--)
  	if (cfun_fpr_save_p (i))
  	  {
! 	    save_fpr (stack_pointer_rtx, offset, i);
  	    if (offset < last_probe_offset)
  	      last_probe_offset = offset;
  
  	    offset -= 8;
  	  }
        if (offset >= cfun_frame_layout.f8_offset)
*************** s390_emit_prologue (void)
*** 11586,11592 ****
  
  	    insn = save_fpr (temp_reg, offset, i);
  	    offset += 8;
- 	    RTX_FRAME_RELATED_P (insn) = 1;
  	    add_reg_note (insn, REG_FRAME_RELATED_EXPR,
  			  gen_rtx_SET (gen_rtx_MEM (DFmode, addr),
  				       gen_rtx_REG (DFmode, i)));
--- 11774,11779 ----
*************** s390_emit_prologue (void)
*** 11597,11602 ****
--- 11784,11790 ----
  
    if (frame_pointer_needed)
      {
+       s390_emit_stack_tie ();
        insn = emit_move_insn (hard_frame_pointer_rtx, stack_pointer_rtx);
        RTX_FRAME_RELATED_P (insn) = 1;
      }
*************** s390_call_saved_register_used (tree call
*** 13711,13746 ****
        function_arg_info arg (TREE_TYPE (parameter), /*named=*/true);
        apply_pass_by_reference_rules (&cum_v, arg);
  
!        parm_rtx = s390_function_arg (cum, arg);
! 
!        s390_function_arg_advance (cum, arg);
  
!        if (!parm_rtx)
! 	 continue;
  
!        if (REG_P (parm_rtx))
! 	 {
! 	   for (reg = 0; reg < REG_NREGS (parm_rtx); reg++)
! 	     if (!call_used_or_fixed_reg_p (reg + REGNO (parm_rtx)))
! 	       return true;
! 	 }
  
!        if (GET_CODE (parm_rtx) == PARALLEL)
! 	 {
! 	   int i;
  
! 	   for (i = 0; i < XVECLEN (parm_rtx, 0); i++)
! 	     {
! 	       rtx r = XEXP (XVECEXP (parm_rtx, 0, i), 0);
  
! 	       gcc_assert (REG_P (r));
  
! 	       for (reg = 0; reg < REG_NREGS (r); reg++)
! 		 if (!call_used_or_fixed_reg_p (reg + REGNO (r)))
! 		   return true;
! 	     }
! 	 }
  
      }
    return false;
  }
--- 13899,13935 ----
        function_arg_info arg (TREE_TYPE (parameter), /*named=*/true);
        apply_pass_by_reference_rules (&cum_v, arg);
  
!       parm_rtx = s390_function_arg (cum, arg);
  
!       s390_function_arg_advance (cum, arg);
  
!       if (!parm_rtx)
! 	continue;
  
!       if (REG_P (parm_rtx))
! 	{
! 	  int size = s390_function_arg_size (arg.mode, arg.type);
! 	  int nregs = (size + UNITS_PER_LONG - 1) / UNITS_PER_LONG;
  
! 	  for (reg = 0; reg < nregs; reg++)
! 	    if (!call_used_or_fixed_reg_p (reg + REGNO (parm_rtx)))
! 	      return true;
! 	}
!       else if (GET_CODE (parm_rtx) == PARALLEL)
! 	{
! 	  int i;
  
! 	  for (i = 0; i < XVECLEN (parm_rtx, 0); i++)
! 	    {
! 	      rtx r = XEXP (XVECEXP (parm_rtx, 0, i), 0);
  
! 	      gcc_assert (REG_P (r));
! 	      gcc_assert (REG_NREGS (r) == 1);
  
+ 	      if (!call_used_or_fixed_reg_p (REGNO (r)))
+ 		return true;
+ 	    }
+ 	}
      }
    return false;
  }
*************** s390_optimize_prologue (void)
*** 14079,14093 ****
  	    continue;
  
  	  if (cfun_frame_layout.first_save_gpr != -1)
! 	    {
! 	      rtx s_pat = save_gprs (base,
! 				     off + (cfun_frame_layout.first_save_gpr
! 					    - first) * UNITS_PER_LONG,
! 				     cfun_frame_layout.first_save_gpr,
! 				     cfun_frame_layout.last_save_gpr);
! 	      new_insn = emit_insn_before (s_pat, insn);
! 	      INSN_ADDRESSES_NEW (new_insn, -1);
! 	    }
  
  	  remove_insn (insn);
  	  continue;
--- 14268,14278 ----
  	    continue;
  
  	  if (cfun_frame_layout.first_save_gpr != -1)
! 	    save_gprs (base,
! 		       off + (cfun_frame_layout.first_save_gpr
! 			      - first) * UNITS_PER_LONG,
! 		       cfun_frame_layout.first_save_gpr,
! 		       cfun_frame_layout.last_save_gpr, insn);
  
  	  remove_insn (insn);
  	  continue;
*************** s390_z10_prevent_earlyload_conflicts (rt
*** 14792,14820 ****
    ready[0] = tmp;
  }
  
- /* Returns TRUE if BB is entered via a fallthru edge and all other
-    incoming edges are less than likely.  */
- static bool
- s390_bb_fallthru_entry_likely (basic_block bb)
- {
-   edge e, fallthru_edge;
-   edge_iterator ei;
- 
-   if (!bb)
-     return false;
- 
-   fallthru_edge = find_fallthru_edge (bb->preds);
-   if (!fallthru_edge)
-     return false;
- 
-   FOR_EACH_EDGE (e, ei, bb->preds)
-     if (e != fallthru_edge
- 	&& e->probability >= profile_probability::likely ())
-       return false;
- 
-   return true;
- }
- 
  struct s390_sched_state
  {
    /* Number of insns in the group.  */
--- 14977,14982 ----
*************** struct s390_sched_state
*** 14825,14831 ****
    bool group_of_two;
  } s390_sched_state;
  
! static struct s390_sched_state sched_state = {0, 1, false};
  
  #define S390_SCHED_ATTR_MASK_CRACKED    0x1
  #define S390_SCHED_ATTR_MASK_EXPANDED   0x2
--- 14987,14993 ----
    bool group_of_two;
  } s390_sched_state;
  
! static struct s390_sched_state sched_state;
  
  #define S390_SCHED_ATTR_MASK_CRACKED    0x1
  #define S390_SCHED_ATTR_MASK_EXPANDED   0x2
*************** s390_sched_variable_issue (FILE *file, i
*** 15325,15331 ****
  
  	      s390_get_unit_mask (insn, &units);
  
! 	      fprintf (file, ";;\t\tBACKEND: units on this side unused for: ");
  	      for (j = 0; j < units; j++)
  		fprintf (file, "%d:%d ", j,
  		    last_scheduled_unit_distance[j][sched_state.side]);
--- 15487,15493 ----
  
  	      s390_get_unit_mask (insn, &units);
  
! 	      fprintf (file, ";;\t\tBACKEND: units on this side (%d) unused for: ", sched_state.side);
  	      for (j = 0; j < units; j++)
  		fprintf (file, "%d:%d ", j,
  		    last_scheduled_unit_distance[j][sched_state.side]);
*************** s390_sched_init (FILE *file ATTRIBUTE_UN
*** 15363,15379 ****
       current_sched_info->prev_head is the insn before the first insn of the
       block of insns to be scheduled.
       */
!   rtx_insn *insn = current_sched_info->prev_head
!     ? NEXT_INSN (current_sched_info->prev_head) : NULL;
!   basic_block bb = insn ? BLOCK_FOR_INSN (insn) : NULL;
!   if (s390_tune < PROCESSOR_2964_Z13 || !s390_bb_fallthru_entry_likely (bb))
!     {
!       last_scheduled_insn = NULL;
!       memset (last_scheduled_unit_distance, 0,
  	  MAX_SCHED_UNITS * NUM_SIDES * sizeof (int));
!       sched_state.group_state = 0;
!       sched_state.group_of_two = false;
!     }
  }
  
  /* This target hook implementation for TARGET_LOOP_UNROLL_ADJUST calculates
--- 15525,15536 ----
       current_sched_info->prev_head is the insn before the first insn of the
       block of insns to be scheduled.
       */
!   last_scheduled_insn = NULL;
!   memset (last_scheduled_unit_distance, 0,
  	  MAX_SCHED_UNITS * NUM_SIDES * sizeof (int));
!   memset (fpd_longrunning, 0, NUM_SIDES * sizeof (int));
!   memset (fxd_longrunning, 0, NUM_SIDES * sizeof (int));
!   sched_state = {};
  }
  
  /* This target hook implementation for TARGET_LOOP_UNROLL_ADJUST calculates
*************** s390_loop_unroll_adjust (unsigned nunrol
*** 15394,15399 ****
--- 15551,15571 ----
    if (s390_tune < PROCESSOR_2097_Z10)
      return nunroll;
  
+   if (unroll_only_small_loops)
+     {
+       /* Only unroll loops smaller than or equal to 12 insns.  */
+       const unsigned int small_threshold = 12;
+ 
+       if (loop->ninsns > small_threshold)
+ 	return 0;
+ 
+       /* ???: Make this dependent on the type of registers in
+ 	 the loop.  Increase the limit for vector registers.  */
+       const unsigned int max_insns = optimize >= 3 ? 36 : 24;
+ 
+       nunroll = MIN (nunroll, max_insns / loop->ninsns);
+     }
+ 
    /* Count the number of memory references within the loop body.  */
    bbs = get_loop_body (loop);
    subrtx_iterator::array_type array;
*************** static void
*** 15468,15473 ****
--- 15640,15658 ----
  s390_override_options_after_change (void)
  {
    s390_default_align (&global_options);
+ 
+   /* Explicit -funroll-loops turns -munroll-only-small-loops off.  */
+   if ((OPTION_SET_P (flag_unroll_loops) && flag_unroll_loops)
+        || (OPTION_SET_P (flag_unroll_all_loops)
+ 	   && flag_unroll_all_loops))
+     {
+       if (!OPTION_SET_P (unroll_only_small_loops))
+ 	unroll_only_small_loops = 0;
+       if (!OPTION_SET_P (flag_cunroll_grow_size))
+ 	flag_cunroll_grow_size = 1;
+     }
+   else if (!OPTION_SET_P (flag_cunroll_grow_size))
+     flag_cunroll_grow_size = flag_peel_loops || optimize >= 3;
  }
  
  static void
*************** s390_option_override_internal (struct gc
*** 15672,15682 ****
--- 15857,15878 ----
  
    /* Use the alternative scheduling-pressure algorithm by default.  */
    SET_OPTION_IF_UNSET (opts, opts_set, param_sched_pressure_algorithm, 2);
+ 
+   /* Allow simple vector masking using vll/vstl for epilogues.  */
+   if (TARGET_Z13)
+     SET_OPTION_IF_UNSET (opts, opts_set, param_vect_partial_vector_usage, 1);
+   else
+     SET_OPTION_IF_UNSET (opts, opts_set, param_vect_partial_vector_usage, 0);
+ 
+   /* Do not vectorize loops with a low trip count for now.  */
    SET_OPTION_IF_UNSET (opts, opts_set, param_min_vect_loop_bound, 2);
  
    /* Set the default alignment.  */
    s390_default_align (opts);
  
+   /* Set unroll options.  */
+   s390_override_options_after_change ();
+ 
    /* Call target specific restore function to do post-init work.  At the moment,
       this just sets opts->x_s390_cost_pointer.  */
    s390_function_specific_restore (opts, opts_set, NULL);
*************** struct expand_vec_perm_d
*** 17066,17071 ****
--- 17262,17269 ----
    machine_mode vmode;
    unsigned char nelt;
    bool testing_p;
+   bool only_op0;
+   bool only_op1;
  };
  
  /* Try to expand the vector permute operation described by D using the
*************** expand_perm_with_vpdi (const struct expa
*** 17133,17139 ****
    if (d.perm[0] == 0 && d.perm[1] == 3)
      vpdi1_p = true;
  
!   if (d.perm[0] == 1 && d.perm[1] == 2)
      vpdi4_p = true;
  
    if (!vpdi1_p && !vpdi4_p)
--- 17331,17339 ----
    if (d.perm[0] == 0 && d.perm[1] == 3)
      vpdi1_p = true;
  
!   if ((d.perm[0] == 1 && d.perm[1] == 2)
!       || (d.perm[0] == 1 && d.perm[1] == 0)
!       || (d.perm[0] == 3 && d.perm[1] == 2))
      vpdi4_p = true;
  
    if (!vpdi1_p && !vpdi4_p)
*************** expand_perm_with_vpdi (const struct expa
*** 17145,17159 ****
    op0_reg = force_reg (GET_MODE (d.op0), d.op0);
    op1_reg = force_reg (GET_MODE (d.op1), d.op1);
  
    if (vpdi1_p)
      emit_insn (gen_vpdi1 (d.vmode, d.target, op0_reg, op1_reg));
- 
    if (vpdi4_p)
      emit_insn (gen_vpdi4 (d.vmode, d.target, op0_reg, op1_reg));
  
    return true;
  }
  
  /* Try to find the best sequence for the vector permute operation
     described by D.  Return true if the operation could be
     expanded.  */
--- 17345,17451 ----
    op0_reg = force_reg (GET_MODE (d.op0), d.op0);
    op1_reg = force_reg (GET_MODE (d.op1), d.op1);
  
+   /* If we only reference either of the operands in
+      the permute mask, just use one of them.  */
+   if (d.only_op0)
+     op1_reg = op0_reg;
+   else if (d.only_op1)
+     op0_reg = op1_reg;
+ 
    if (vpdi1_p)
      emit_insn (gen_vpdi1 (d.vmode, d.target, op0_reg, op1_reg));
    if (vpdi4_p)
      emit_insn (gen_vpdi4 (d.vmode, d.target, op0_reg, op1_reg));
  
    return true;
  }
  
+ /* Helper that checks if a vector permutation mask D
+    represents a reversal of the vector's elements.  */
+ static inline bool
+ is_reverse_perm_mask (const struct expand_vec_perm_d &d)
+ {
+   for (int i = 0; i < d.nelt; i++)
+     if (d.perm[i] != d.nelt - i - 1)
+       return false;
+   return true;
+ }
+ 
+ /* The case of reversing a four-element vector [0, 1, 2, 3]
+    can be handled by first permuting the doublewords
+    [2, 3, 0, 1] and subsequently rotating them by 32 bits.  */
+ static bool
+ expand_perm_with_rot (const struct expand_vec_perm_d &d)
+ {
+   if (d.nelt != 4)
+     return false;
+ 
+   if (d.op0 == d.op1 && is_reverse_perm_mask (d))
+     {
+       if (d.testing_p)
+ 	return true;
+ 
+       rtx tmp = gen_reg_rtx (d.vmode);
+       rtx op0_reg = force_reg (GET_MODE (d.op0), d.op0);
+ 
+       emit_insn (gen_vpdi4_2 (d.vmode, tmp, op0_reg, op0_reg));
+       if (d.vmode == V4SImode)
+ 	emit_insn (gen_rotlv4si3_di (d.target, tmp));
+       else if (d.vmode == V4SFmode)
+ 	emit_insn (gen_rotlv4sf3_di (d.target, tmp));
+ 
+       return true;
+     }
+ 
+   return false;
+ }
+ 
+ /* If we just reverse the elements, emit an eltswap if we have
+    vler/vster.  */
+ static bool
+ expand_perm_with_vster (const struct expand_vec_perm_d &d)
+ {
+   if (TARGET_VXE2 && d.op0 == d.op1 && is_reverse_perm_mask (d)
+       && (d.vmode == V2DImode || d.vmode == V2DFmode
+ 	  || d.vmode == V4SImode || d.vmode == V4SFmode
+ 	  || d.vmode == V8HImode))
+     {
+       if (d.testing_p)
+ 	return true;
+ 
+       if (d.vmode == V2DImode)
+ 	emit_insn (gen_eltswapv2di (d.target, d.op0));
+       else if (d.vmode == V2DFmode)
+ 	emit_insn (gen_eltswapv2df (d.target, d.op0));
+       else if (d.vmode == V4SImode)
+ 	emit_insn (gen_eltswapv4si (d.target, d.op0));
+       else if (d.vmode == V4SFmode)
+ 	emit_insn (gen_eltswapv4sf (d.target, d.op0));
+       else if (d.vmode == V8HImode)
+ 	emit_insn (gen_eltswapv8hi (d.target, d.op0));
+       return true;
+     }
+   return false;
+ }
+ 
+ /* If we reverse a byte-vector this is the same as
+    byte reversing it which can be done with vstbrq.  */
+ static bool
+ expand_perm_with_vstbrq (const struct expand_vec_perm_d &d)
+ {
+   if (TARGET_VXE2 && d.op0 == d.op1 && is_reverse_perm_mask (d)
+       && d.vmode == V16QImode)
+     {
+       if (d.testing_p)
+ 	return true;
+ 
+       emit_insn (gen_eltswapv16qi (d.target, d.op0));
+       return true;
+     }
+   return false;
+ }
+ 
+ 
  /* Try to find the best sequence for the vector permute operation
     described by D.  Return true if the operation could be
     expanded.  */
*************** vectorize_vec_perm_const_1 (const struct
*** 17163,17171 ****
--- 17455,17472 ----
    if (expand_perm_with_merge (d))
      return true;
  
+   if (expand_perm_with_vster (d))
+     return true;
+ 
+   if (expand_perm_with_vstbrq (d))
+     return true;
+ 
    if (expand_perm_with_vpdi (d))
      return true;
  
+   if (expand_perm_with_rot (d))
+     return true;
+ 
    return false;
  }
  
*************** vectorize_vec_perm_const_1 (const struct
*** 17174,17182 ****
     hook is supposed to emit the required INSNs.  */
  
  bool
! s390_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0, rtx op1,
  			       const vec_perm_indices &sel)
  {
    struct expand_vec_perm_d d;
    unsigned int i, nelt;
  
--- 17475,17487 ----
     hook is supposed to emit the required INSNs.  */
  
  bool
! s390_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 			       rtx target, rtx op0, rtx op1,
  			       const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    struct expand_vec_perm_d d;
    unsigned int i, nelt;
  
*************** s390_vectorize_vec_perm_const (machine_m
*** 17191,17207 ****
--- 17496,17522 ----
    gcc_assert (VECTOR_MODE_P (d.vmode));
    d.nelt = nelt = GET_MODE_NUNITS (d.vmode);
    d.testing_p = target == NULL_RTX;
+   d.only_op0 = false;
+   d.only_op1 = false;
  
    gcc_assert (target == NULL_RTX || REG_P (target));
    gcc_assert (sel.length () == nelt);
  
+   unsigned int highest = 0, lowest = 2 * nelt - 1;
    for (i = 0; i < nelt; i++)
      {
        unsigned char e = sel[i];
+       lowest = MIN (lowest, e);
+       highest = MAX (highest, e);
        gcc_assert (e < 2 * nelt);
        d.perm[i] = e;
      }
  
+   if (lowest < nelt && highest < nelt)
+     d.only_op0 = true;
+   else if (lowest >= nelt && highest >= nelt)
+     d.only_op1 = true;
+ 
    return vectorize_vec_perm_const_1 (d);
  }
  
*************** s390_vectorize_vec_perm_const (machine_m
*** 17518,17524 ****
  #undef TARGET_VECTORIZE_VEC_PERM_CONST
  #define TARGET_VECTORIZE_VEC_PERM_CONST s390_vectorize_vec_perm_const
  
- 
  struct gcc_target targetm = TARGET_INITIALIZER;
  
  #include "gt-s390.h"
--- 17833,17838 ----
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390.h gcc-13.1.0/gcc/config/s390/s390.h
*** gcc-12.2.0/gcc/config/s390/s390.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for IBM S/390
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  		  Ulrich Weigand (uweigand@de.ibm.com).
  		  Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for IBM S/390
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  		  Ulrich Weigand (uweigand@de.ibm.com).
  		  Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
*************** enum processor_flags
*** 247,256 ****
  /* Target CPU builtins.  */
  #define TARGET_CPU_CPP_BUILTINS() s390_cpu_cpp_builtins (pfile)
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS s390_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO s390_d_register_target_info
- 
  #ifdef DEFAULT_TARGET_64BIT
  #define TARGET_DEFAULT     (MASK_64BIT | MASK_ZARCH | MASK_HARD_DFP	\
  			    | MASK_OPT_HTM | MASK_OPT_VX)
--- 247,252 ----
*************** extern const enum reg_class regclass_map
*** 705,711 ****
  /* Define the dwarf register mapping.
     v16-v31 -> 68-83
     rX      -> X      otherwise  */
! #define DBX_REGISTER_NUMBER(regno)				\
    (((regno) >= 38 && (regno) <= 53) ? (regno) + 30 : (regno))
  
  /* Frame registers.  */
--- 701,707 ----
  /* Define the dwarf register mapping.
     v16-v31 -> 68-83
     rX      -> X      otherwise  */
! #define DEBUGGER_REGNO(regno)				\
    (((regno) >= 38 && (regno) <= 53) ? (regno) + 30 : (regno))
  
  /* Frame registers.  */
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390.md gcc-13.1.0/gcc/config/s390/s390.md
*** gcc-12.2.0/gcc/config/s390/s390.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for GNU compiler -- S/390 / zSeries version.
! ;;  Copyright (C) 1999-2022 Free Software Foundation, Inc.
  ;;  Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                 Ulrich Weigand (uweigand@de.ibm.com) and
  ;;                 Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
--- 1,5 ----
  ;;- Machine description for GNU compiler -- S/390 / zSeries version.
! ;;  Copyright (C) 1999-2023 Free Software Foundation, Inc.
  ;;  Contributed by Hartmut Penner (hpenner@de.ibm.com) and
  ;;                 Ulrich Weigand (uweigand@de.ibm.com) and
  ;;                 Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
***************
*** 153,159 ****
     UNSPEC_VEC_VMALO
  
     UNSPEC_VEC_GATHER
-    UNSPEC_VEC_EXTRACT
     UNSPEC_VEC_INSERT_AND_ZERO
     UNSPEC_VEC_LOAD_BNDRY
     UNSPEC_VEC_LOAD_LEN
--- 153,158 ----
***************
*** 1744,1751 ****
     && GENERAL_REG_P (operands[0])
     && VECTOR_REG_P (operands[1])"
    [(set (match_dup 2) (match_dup 4))
!    (set (match_dup 3) (unspec:DI [(match_dup 5) (const_int 1)]
! 				 UNSPEC_VEC_EXTRACT))]
  {
    operands[2] = operand_subword (operands[0], 0, 0, TImode);
    operands[3] = operand_subword (operands[0], 1, 0, TImode);
--- 1743,1750 ----
     && GENERAL_REG_P (operands[0])
     && VECTOR_REG_P (operands[1])"
    [(set (match_dup 2) (match_dup 4))
!    (set (match_dup 3) (vec_select:DI (match_dup 5)
! 		       (parallel [(const_int 1)])))]
  {
    operands[2] = operand_subword (operands[0], 0, 0, TImode);
    operands[3] = operand_subword (operands[0], 1, 0, TImode);
***************
*** 1971,1981 ****
    "TARGET_ZARCH"
    "#"
    "&& reload_completed"
!   [(set (match_dup 2) (match_dup 3))
     (set (match_dup 0) (ashift:DI (match_dup 0) (const_int 32)))
!    (set (strict_low_part (match_dup 2)) (match_dup 4))]
    "operands[2] = gen_lowpart (SImode, operands[0]);
!    s390_split_access_reg (operands[1], &operands[4], &operands[3]);")
  
  ; Splitters for storing TLS pointer to %a0:DI.
  
--- 1970,1981 ----
    "TARGET_ZARCH"
    "#"
    "&& reload_completed"
!   [(set (match_dup 2) (match_dup 4))
     (set (match_dup 0) (ashift:DI (match_dup 0) (const_int 32)))
!    (set (strict_low_part (match_dup 3)) (match_dup 5))]
    "operands[2] = gen_lowpart (SImode, operands[0]);
!    operands[3] = s390_gen_lowpart_subreg (SImode, operands[0]);
!    s390_split_access_reg (operands[1], &operands[5], &operands[4]);")
  
  ; Splitters for storing TLS pointer to %a0:DI.
  
***************
*** 2522,2534 ****
    [(set (match_dup 0) (match_dup 2))]
    "operands[2] = get_pool_constant (operands[1]);")
  
  ;
! ; movstrictqi instruction pattern(s).
  ;
  
  (define_insn "movstrictqi"
!   [(set (strict_low_part (match_operand:QI 0 "register_operand" "+d,d"))
!                          (match_operand:QI 1 "memory_operand" "R,T"))]
    ""
    "@
     ic\t%0,%1
--- 2522,2535 ----
    [(set (match_dup 0) (match_dup 2))]
    "operands[2] = get_pool_constant (operands[1]);")
  
+ 
  ;
! ; movstrict instruction pattern(s).
  ;
  
  (define_insn "movstrictqi"
!   [(set (strict_low_part (match_operand:QI 0 "subreg_register_operand" "+d,d"))
!                          (match_operand:QI 1 "memory_operand"           "R,T"))]
    ""
    "@
     ic\t%0,%1
***************
*** 2537,2549 ****
     (set_attr "cpu_facility" "*,longdisp")
     (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
  
- ;
- ; movstricthi instruction pattern(s).
- ;
- 
  (define_insn "movstricthi"
!   [(set (strict_low_part (match_operand:HI 0 "register_operand" "+d,d"))
!                          (match_operand:HI 1 "memory_operand" "Q,S"))
     (clobber (reg:CC CC_REGNUM))]
    ""
    "@
--- 2538,2546 ----
     (set_attr "cpu_facility" "*,longdisp")
     (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
  
  (define_insn "movstricthi"
!   [(set (strict_low_part (match_operand:HI 0 "subreg_register_operand" "+d,d"))
!                          (match_operand:HI 1 "memory_operand"           "Q,S"))
     (clobber (reg:CC CC_REGNUM))]
    ""
    "@
***************
*** 2553,2565 ****
     (set_attr "cpu_facility" "*,longdisp")
     (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
  
- ;
- ; movstrictsi instruction pattern(s).
- ;
- 
  (define_insn "movstrictsi"
!   [(set (strict_low_part (match_operand:SI 0 "register_operand" "+d,d,d,d"))
!                          (match_operand:SI 1 "general_operand" "d,R,T,t"))]
    "TARGET_ZARCH"
    "@
     lr\t%0,%1
--- 2550,2558 ----
     (set_attr "cpu_facility" "*,longdisp")
     (set_attr "z10prop" "z10_super_E1,z10_super_E1")])
  
  (define_insn "movstrictsi"
!   [(set (strict_low_part (match_operand:SI 0 "subreg_register_operand" "+d,d,d,d"))
!                          (match_operand:SI 1 "general_operand"          "d,R,T,t"))]
    "TARGET_ZARCH"
    "@
     lr\t%0,%1
***************
*** 5019,5025 ****
     (parallel
      [(set (strict_low_part (match_dup 2)) (match_dup 1))
       (clobber (reg:CC CC_REGNUM))])]
!   "operands[2] = gen_lowpart (HImode, operands[0]);")
  
  (define_insn_and_split "*zero_extendqisi2_31"
    [(set (match_operand:SI 0 "register_operand" "=&d")
--- 5012,5018 ----
     (parallel
      [(set (strict_low_part (match_dup 2)) (match_dup 1))
       (clobber (reg:CC CC_REGNUM))])]
!   "operands[2] = s390_gen_lowpart_subreg (HImode, operands[0]);")
  
  (define_insn_and_split "*zero_extendqisi2_31"
    [(set (match_operand:SI 0 "register_operand" "=&d")
***************
*** 5029,5035 ****
    "&& reload_completed"
    [(set (match_dup 0) (const_int 0))
     (set (strict_low_part (match_dup 2)) (match_dup 1))]
!   "operands[2] = gen_lowpart (QImode, operands[0]);")
  
  ;
  ; zero_extendqihi2 instruction pattern(s).
--- 5022,5028 ----
    "&& reload_completed"
    [(set (match_dup 0) (const_int 0))
     (set (strict_low_part (match_dup 2)) (match_dup 1))]
!   "operands[2] = s390_gen_lowpart_subreg (QImode, operands[0]);")
  
  ;
  ; zero_extendqihi2 instruction pattern(s).
***************
*** 5061,5067 ****
    "&& reload_completed"
    [(set (match_dup 0) (const_int 0))
     (set (strict_low_part (match_dup 2)) (match_dup 1))]
!   "operands[2] = gen_lowpart (QImode, operands[0]);")
  
  ;
  ; fixuns_trunc(dd|td|sf|df|tf)(si|di)2 expander
--- 5054,5060 ----
    "&& reload_completed"
    [(set (match_dup 0) (const_int 0))
     (set (strict_low_part (match_dup 2)) (match_dup 1))]
!   "operands[2] = s390_gen_lowpart_subreg (QImode, operands[0]);")
  
  ;
  ; fixuns_trunc(dd|td|sf|df|tf)(si|di)2 expander
***************
*** 8309,8314 ****
--- 8302,8315 ----
    "n<ANDOR:inv_no><GPR:g>rk\t%0,%1,%2"
    [(set_attr "op_type" "RRF")])
  
+ ; Use NAND for bit inversion
+ (define_insn "*not<mode>"
+   [(set (match_operand:GPR          0 "register_operand" "=d")
+ 	(not:GPR (match_operand:GPR 1 "register_operand"  "d")))
+    (clobber (reg:CC CC_REGNUM))]
+   "TARGET_Z15"
+   "nn<GPR:g>rk\t%0,%1,%1"
+   [(set_attr "op_type" "RRF")])
  
  ;
  ; Block inclusive or (OC) patterns.
***************
*** 8804,8812 ****
          (neg:DI (match_operand:DI 1 "register_operand" "")))
     (clobber (reg:CC CC_REGNUM))]
    "!TARGET_ZARCH
!    && (REGNO (operands[0]) == REGNO (operands[1])
!       || s390_split_ok_p (operands[0], operands[1], DImode, 0))
!    && reload_completed"
    [(parallel
      [(set (match_dup 2) (neg:SI (match_dup 3)))
       (clobber (reg:CC CC_REGNUM))])
--- 8805,8814 ----
          (neg:DI (match_operand:DI 1 "register_operand" "")))
     (clobber (reg:CC CC_REGNUM))]
    "!TARGET_ZARCH
!    && reload_completed
!    && ((REG_P (operands[0]) && REG_P (operands[1])
!        && REGNO (operands[0]) == REGNO (operands[1]))
!       || s390_split_ok_p (operands[0], operands[1], DImode, 0))"
    [(parallel
      [(set (match_dup 2) (neg:SI (match_dup 3)))
       (clobber (reg:CC CC_REGNUM))])
***************
*** 11588,11596 ****
  ; This is used in s390_emit_prologue in order to prevent insns
  ; adjusting the stack pointer to be moved over insns writing stack
  ; slots using a copy of the stack pointer in a different register.
! (define_insn "stack_tie"
    [(set (match_operand:BLK 0 "memory_operand" "+m")
!         (unspec:BLK [(match_dup 0)] UNSPEC_TIE))]
    ""
    ""
    [(set_attr "length" "0")])
--- 11590,11599 ----
  ; This is used in s390_emit_prologue in order to prevent insns
  ; adjusting the stack pointer to be moved over insns writing stack
  ; slots using a copy of the stack pointer in a different register.
! (define_insn "@stack_tie<mode>"
    [(set (match_operand:BLK 0 "memory_operand" "+m")
!         (unspec:BLK [(match_dup 0)
! 		     (match_operand:P 1 "register_operand" "r")] UNSPEC_TIE))]
    ""
    ""
    [(set_attr "length" "0")])
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390.opt gcc-13.1.0/gcc/config/s390/s390.opt
*** gcc-12.2.0/gcc/config/s390/s390.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the S/390 / zSeries port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the S/390 / zSeries port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
*************** and the default behavior is to emit sepa
*** 321,323 ****
--- 321,331 ----
  instructions for long doubles in vector registers, because measurements show
  that this improves performance.  This option allows overriding it for testing
  purposes.
+ 
+ munroll-only-small-loops
+ Target Undocumented Var(unroll_only_small_loops) Init(0) Save
+ ; Use conservative small loop unrolling.
+ 
+ mpreserve-args
+ Target Var(s390_preserve_args_p) Init(0)
+ Store all argument registers on the stack.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390intrin.h gcc-13.1.0/gcc/config/s390/s390intrin.h
*** gcc-12.2.0/gcc/config/s390/s390intrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390intrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* S/390 System z specific intrinsics
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* S/390 System z specific intrinsics
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/s390x.h gcc-13.1.0/gcc/config/s390/s390x.h
*** gcc-12.2.0/gcc/config/s390/s390x.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/s390x.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for IBM zSeries 64-bit
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com).
  
--- 1,5 ----
  /* Definitions of target machine for IBM zSeries 64-bit
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Hartmut Penner (hpenner@de.ibm.com) and
                    Ulrich Weigand (uweigand@de.ibm.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/s390/subst.md gcc-13.1.0/gcc/config/s390/subst.md
*** gcc-12.2.0/gcc/config/s390/subst.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/subst.md	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ;;- Machine description for GNU compiler -- S/390 / zSeries version.
  ;;  Subst patterns.
! ;;  Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;  Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
--- 1,6 ----
  ;;- Machine description for GNU compiler -- S/390 / zSeries version.
  ;;  Subst patterns.
! ;;  Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;  Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/t-s390 gcc-13.1.0/gcc/config/s390/t-s390
*** gcc-12.2.0/gcc/config/s390/t-s390	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/t-s390	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2015-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2015-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/s390/tpf.h gcc-13.1.0/gcc/config/s390/tpf.h
*** gcc-12.2.0/gcc/config/s390/tpf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/tpf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for target OS TPF for GNU compiler, for IBM S/390 hardware
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by P.J. Darcy (darcypj@us.ibm.com),
  		  Hartmut Penner (hpenner@de.ibm.com), and
  		  Ulrich Weigand (uweigand@de.ibm.com).
--- 1,5 ----
  /* Definitions for target OS TPF for GNU compiler, for IBM S/390 hardware
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by P.J. Darcy (darcypj@us.ibm.com),
  		  Hartmut Penner (hpenner@de.ibm.com), and
  		  Ulrich Weigand (uweigand@de.ibm.com).
diff -Nrcpad gcc-12.2.0/gcc/config/s390/tpf.md gcc-13.1.0/gcc/config/s390/tpf.md
*** gcc-12.2.0/gcc/config/s390/tpf.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/tpf.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; S390 TPF-OS specific machine patterns
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; S390 TPF-OS specific machine patterns
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/s390/tpf.opt gcc-13.1.0/gcc/config/s390/tpf.opt
*** gcc-12.2.0/gcc/config/s390/tpf.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/tpf.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the TPF-OS port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the TPF-OS port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/s390/vecintrin.h gcc-13.1.0/gcc/config/s390/vecintrin.h
*** gcc-12.2.0/gcc/config/s390/vecintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/vecintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* GNU compiler vector extension intrinsics
!    Copyright (C) 2015-2022 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
--- 1,5 ----
  /* GNU compiler vector extension intrinsics
!    Copyright (C) 2015-2023 Free Software Foundation, Inc.
     Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/s390/vector.md gcc-13.1.0/gcc/config/s390/vector.md
*** gcc-12.2.0/gcc/config/s390/vector.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/vector.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Instruction patterns for the System z vector facility
! ;;  Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;;  Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Instruction patterns for the System z vector facility
! ;;  Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;;  Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
***************
*** 270,280 ****
  	(match_operand:V_128 1 "register_operand" ""))]
    "TARGET_VX && GENERAL_REG_P (operands[0]) && VECTOR_REG_P (operands[1])"
    [(set (match_dup 2)
! 	(unspec:DI [(subreg:V2DI (match_dup 1) 0)
! 		    (const_int 0)] UNSPEC_VEC_EXTRACT))
     (set (match_dup 3)
! 	(unspec:DI [(subreg:V2DI (match_dup 1) 0)
! 		    (const_int 1)] UNSPEC_VEC_EXTRACT))]
  {
    operands[2] = operand_subword (operands[0], 0, 0, <MODE>mode);
    operands[3] = operand_subword (operands[0], 1, 0, <MODE>mode);
--- 270,282 ----
  	(match_operand:V_128 1 "register_operand" ""))]
    "TARGET_VX && GENERAL_REG_P (operands[0]) && VECTOR_REG_P (operands[1])"
    [(set (match_dup 2)
!        (vec_select:DI
!          (subreg:V2DI (match_dup 1) 0)
!            (parallel [(const_int 0)])))
     (set (match_dup 3)
!        (vec_select:DI
!          (subreg:V2DI (match_dup 1) 0)
!            (parallel [(const_int 1)])))]
  {
    operands[2] = operand_subword (operands[0], 0, 0, <MODE>mode);
    operands[3] = operand_subword (operands[0], 1, 0, <MODE>mode);
***************
*** 511,532 ****
    [(set_attr "op_type" "VRS")])
  
  
! ; FIXME: Support also vector mode operands for 0
! ; FIXME: This should be (vec_select ..) or something but it does only allow constant selectors :(
! ; This is used via RTL standard name as well as for expanding the builtin
  (define_expand "vec_extract<mode><non_vec_l>"
!   [(set (match_operand:<non_vec> 0 "nonimmediate_operand" "")
! 	(unspec:<non_vec> [(match_operand:V  1 "register_operand" "")
! 			   (match_operand:SI 2 "nonmemory_operand" "")]
! 			  UNSPEC_VEC_EXTRACT))]
!   "TARGET_VX")
  
  ; vlgvb, vlgvh, vlgvf, vlgvg, vsteb, vsteh, vstef, vsteg
  (define_insn "*vec_extract<mode>"
!   [(set (match_operand:<non_vec> 0 "nonimmediate_operand"          "=d,R")
! 	(unspec:<non_vec> [(match_operand:V  1 "register_operand"   "v,v")
! 			   (match_operand:SI 2 "nonmemory_operand" "an,I")]
! 			  UNSPEC_VEC_EXTRACT))]
    "TARGET_VX
     && (!CONST_INT_P (operands[2])
         || UINTVAL (operands[2]) < GET_MODE_NUNITS (<V:MODE>mode))"
--- 513,536 ----
    [(set_attr "op_type" "VRS")])
  
  
! ;; FIXME: Support also vector mode operands for 0
! ;; This is used via RTL standard name as well as for expanding the builtin
  (define_expand "vec_extract<mode><non_vec_l>"
!   [(set (match_operand:<non_vec>    0 "nonimmediate_operand" "")
!        (vec_select:<non_vec>
!          (match_operand:V           1 "register_operand" "")
!          (parallel
!           [(match_operand:SI        2 "nonmemory_operand" "")])))]
!   "TARGET_VX"
! )
  
  ; vlgvb, vlgvh, vlgvf, vlgvg, vsteb, vsteh, vstef, vsteg
  (define_insn "*vec_extract<mode>"
!   [(set (match_operand:<non_vec> 0 "nonimmediate_operand" "=d,R")
!        (vec_select:<non_vec>
!          (match_operand:V        1 "nonmemory_operand"  "v,v")
!          (parallel
!           [(match_operand:SI     2 "nonmemory_operand" "an,I")])))]
    "TARGET_VX
     && (!CONST_INT_P (operands[2])
         || UINTVAL (operands[2]) < GET_MODE_NUNITS (<V:MODE>mode))"
***************
*** 537,547 ****
  
  ; vlgvb, vlgvh, vlgvf, vlgvg
  (define_insn "*vec_extract<mode>_plus"
!   [(set (match_operand:<non_vec>                      0 "nonimmediate_operand" "=d")
! 	(unspec:<non_vec> [(match_operand:V           1 "register_operand"      "v")
! 			   (plus:SI (match_operand:SI 2 "nonmemory_operand"     "a")
! 				    (match_operand:SI 3 "const_int_operand"     "n"))]
! 			   UNSPEC_VEC_EXTRACT))]
    "TARGET_VX"
    "vlgv<bhfgq>\t%0,%v1,%Y3(%2)"
    [(set_attr "op_type" "VRS")])
--- 541,551 ----
  
  ; vlgvb, vlgvh, vlgvf, vlgvg
  (define_insn "*vec_extract<mode>_plus"
!   [(set (match_operand:<non_vec>       0 "nonimmediate_operand" "=d")
! 	(vec_select:<non_vec>
! 	 (match_operand:V              1 "register_operand"      "v")
! 	 (plus:SI (match_operand:SI    2 "nonmemory_operand"     "a")
! 	  (parallel [(match_operand:SI 3 "const_int_operand"     "n")]))))]
    "TARGET_VX"
    "vlgv<bhfgq>\t%0,%v1,%Y3(%2)"
    [(set_attr "op_type" "VRS")])
***************
*** 797,802 ****
--- 801,817 ----
    "vpdi\t%v0,%v1,%v2,4"
    [(set_attr "op_type" "VRR")])
  
+ ; Second DW of op1 and first DW of op2 (when interpreted as 2-element vector).
+ (define_insn "@vpdi4_2<mode>"
+   [(set (match_operand:V_HW_4   0 "register_operand" "=v")
+ 	(vec_select:V_HW_4
+ 	 (vec_concat:<vec_2x_nelts>
+ 	  (match_operand:V_HW_4 1 "register_operand"  "v")
+ 	  (match_operand:V_HW_4 2 "register_operand"  "v"))
+ 	 (parallel [(const_int 2) (const_int 3) (const_int 4) (const_int 5)])))]
+   "TARGET_VX"
+   "vpdi\t%v0,%v1,%v2,4"
+   [(set_attr "op_type" "VRR")])
  
  (define_insn "*vmrhb"
    [(set (match_operand:V16QI                     0 "register_operand" "=v")
***************
*** 1255,1260 ****
--- 1270,1292 ----
    "<vec_shifts_mnem><bhfgq>\t%v0,%v1,%Y2"
    [(set_attr "op_type" "VRS")])
  
+ ; verllg for V4SI/V4SF.  This swaps the first and the second two
+ ; elements of a vector and is only valid in that context.
+ (define_expand "rotl<mode>3_di"
+  [
+  (set (match_dup 2)
+   (subreg:V2DI (match_operand:V_HW_4 1) 0))
+  (set (match_dup 3)
+   (rotate:V2DI
+    (match_dup 2)
+    (const_int 32)))
+  (set (match_operand:V_HW_4 0)
+   (subreg:V_HW_4 (match_dup 3) 0))]
+  "TARGET_VX"
+  {
+   operands[2] = gen_reg_rtx (V2DImode);
+   operands[3] = gen_reg_rtx (V2DImode);
+  })
  
  ; Shift each element by corresponding vector element
  
***************
*** 2915,2920 ****
--- 2947,2987 ----
    ""
    [(set_attr "op_type"      "*,VRX,VRX")])
  
+ ;
+ ; Implement len_load/len_store optabs with vll/vstl.
+ (define_expand "len_load_v16qi"
+   [(match_operand:V16QI 0 "register_operand")
+    (match_operand:V16QI 1 "memory_operand")
+    (match_operand:QI 2 "register_operand")
+    (match_operand:QI 3 "vll_bias_operand")
+   ]
+   "TARGET_VX && TARGET_64BIT"
+ {
+   rtx mem = adjust_address (operands[1], BLKmode, 0);
+ 
+   rtx len = gen_reg_rtx (SImode);
+   emit_move_insn (len, gen_rtx_ZERO_EXTEND (SImode, operands[2]));
+   emit_insn (gen_vllv16qi (operands[0], len, mem));
+   DONE;
+ })
+ 
+ (define_expand "len_store_v16qi"
+   [(match_operand:V16QI 0 "memory_operand")
+    (match_operand:V16QI 1 "register_operand")
+    (match_operand:QI 2 "register_operand")
+    (match_operand:QI 3 "vll_bias_operand")
+   ]
+   "TARGET_VX && TARGET_64BIT"
+ {
+   rtx mem = adjust_address (operands[0], BLKmode, 0);
+ 
+   rtx len = gen_reg_rtx (SImode);
+   emit_move_insn (len, gen_rtx_ZERO_EXTEND (SImode, operands[2]));
+   emit_insn (gen_vstlv16qi (operands[1], len, mem));
+   DONE;
+ });;
+ 
+ 
  ; reduc_smin
  ; reduc_smax
  ; reduc_umin
diff -Nrcpad gcc-12.2.0/gcc/config/s390/vx-builtins.md gcc-13.1.0/gcc/config/s390/vx-builtins.md
*** gcc-12.2.0/gcc/config/s390/vx-builtins.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/s390/vx-builtins.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Instruction patterns for the System z vector facility builtins.
! ;;  Copyright (C) 2015-2022 Free Software Foundation, Inc.
  ;;  Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;;- Instruction patterns for the System z vector facility builtins.
! ;;  Copyright (C) 2015-2023 Free Software Foundation, Inc.
  ;;  Contributed by Andreas Krebbel (Andreas.Krebbel@de.ibm.com)
  
  ;; This file is part of GCC.
***************
*** 440,451 ****
  (define_insn "vec_scatter_element<V_HW_4:mode>_DI"
    [(set (mem:<non_vec>
  	 (plus:DI (zero_extend:DI
! 		   (unspec:SI [(match_operand:V4SI 1 "register_operand"   "v")
! 			       (match_operand:QI   3 "const_mask_operand" "C")]
! 			      UNSPEC_VEC_EXTRACT))
! 		  (match_operand:SI                2 "address_operand"   "ZQ")))
! 	(unspec:<non_vec> [(match_operand:V_HW_4          0 "register_operand"   "v")
! 			   (match_dup 3)] UNSPEC_VEC_EXTRACT))]
    "TARGET_VX && TARGET_64BIT && UINTVAL (operands[3]) < 4"
    "vscef\t%v0,%O2(%v1,%R2),%3"
    [(set_attr "op_type" "VRV")])
--- 440,452 ----
  (define_insn "vec_scatter_element<V_HW_4:mode>_DI"
    [(set (mem:<non_vec>
  	 (plus:DI (zero_extend:DI
! 		   (vec_select:SI
! 		    (match_operand:V4SI           1 "register_operand"   "v")
! 		    (parallel [(match_operand:QI  3 "const_mask_operand" "C")])))
! 	  (match_operand:SI                       2 "address_operand"    "ZQ")))
! 	(vec_select:<non_vec>
! 	 (match_operand:V_HW_4                    0 "register_operand"   "v")
! 	 (parallel [(match_dup 3)])))]
    "TARGET_VX && TARGET_64BIT && UINTVAL (operands[3]) < 4"
    "vscef\t%v0,%O2(%v1,%R2),%3"
    [(set_attr "op_type" "VRV")])
***************
*** 455,466 ****
  (define_insn "vec_scatter_element<V_HW_2:mode>_SI"
    [(set (mem:<non_vec>
  	 (plus:SI (subreg:SI
! 		   (unspec:<non_vec_int> [(match_operand:V_HW_2 1 "register_operand"   "v")
! 					  (match_operand:QI     3 "const_mask_operand" "C")]
! 					 UNSPEC_VEC_EXTRACT) 4)
! 		  (match_operand:SI                             2 "address_operand"   "ZQ")))
! 	(unspec:<non_vec> [(match_operand:V_HW_2                0 "register_operand"   "v")
! 			   (match_dup 3)] UNSPEC_VEC_EXTRACT))]
    "TARGET_VX && !TARGET_64BIT && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_2:MODE>mode)"
    "vsce<V_HW_2:bhfgq>\t%v0,%O2(%v1,%R2),%3"
    [(set_attr "op_type" "VRV")])
--- 456,468 ----
  (define_insn "vec_scatter_element<V_HW_2:mode>_SI"
    [(set (mem:<non_vec>
  	 (plus:SI (subreg:SI
! 		   (vec_select:<non_vec_int>
! 		    (match_operand:<TOINTVEC>     1 "register_operand"   "v")
! 		    (parallel [(match_operand:QI  3 "const_mask_operand" "C")])) 4)
! 	  (match_operand:SI                       2 "address_operand"    "ZQ")))
!     (vec_select:<non_vec>
!      (match_operand:V_HW_2                        0 "register_operand"   "v")
!      (parallel [(match_dup 3)])))]
    "TARGET_VX && !TARGET_64BIT && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_2:MODE>mode)"
    "vsce<V_HW_2:bhfgq>\t%v0,%O2(%v1,%R2),%3"
    [(set_attr "op_type" "VRV")])
***************
*** 469,481 ****
  ; vscef, vsceg
  (define_insn "vec_scatter_element<mode>_<non_vec_int>"
    [(set (mem:<non_vec>
! 	 (plus:<non_vec_int> (unspec:<non_vec_int>
! 			      [(match_operand:<TOINTVEC> 1 "register_operand"   "v")
! 			       (match_operand:QI         3 "const_mask_operand" "C")]
! 			      UNSPEC_VEC_EXTRACT)
! 			     (match_operand:DI           2 "address_operand"   "ZQ")))
! 	(unspec:<non_vec> [(match_operand:V_HW_32_64     0 "register_operand"   "v")
! 			   (match_dup 3)] UNSPEC_VEC_EXTRACT))]
    "TARGET_VX && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_32_64:MODE>mode)"
    "vsce<bhfgq>\t%v0,%O2(%v1,%R2),%3"
    [(set_attr "op_type" "VRV")])
--- 471,484 ----
  ; vscef, vsceg
  (define_insn "vec_scatter_element<mode>_<non_vec_int>"
    [(set (mem:<non_vec>
! 	 (plus:<non_vec_int>
! 	  (vec_select:<non_vec_int>
! 	   (match_operand:<TOINTVEC>      1 "register_operand"   "v")
! 	    (parallel [(match_operand:QI  3 "const_mask_operand" "C")]))
! 	  (match_operand:DI               2 "address_operand"   "ZQ")))
! 	(vec_select:<non_vec>
! 	 (match_operand:V_HW_32_64        0 "register_operand"   "v")
! 	 (parallel [(match_dup 3)])))]
    "TARGET_VX && UINTVAL (operands[3]) < GET_MODE_NUNITS (<V_HW_32_64:MODE>mode)"
    "vsce<bhfgq>\t%v0,%O2(%v1,%R2),%3"
    [(set_attr "op_type" "VRV")])
***************
*** 1889,1897 ****
  		      (const_int VEC_RND_CURRENT)]
  		     UNSPEC_VEC_VFLR))
     (set (match_operand:SF 1 "memory_operand" "")
! 	(unspec:SF [(match_dup 2) (const_int 0)] UNSPEC_VEC_EXTRACT))
     (set (match_dup 3)
! 	(unspec:SF [(match_dup 2) (const_int 2)] UNSPEC_VEC_EXTRACT))]
    "TARGET_VX"
  {
    operands[2] = gen_reg_rtx (V4SFmode);
--- 1892,1902 ----
  		      (const_int VEC_RND_CURRENT)]
  		     UNSPEC_VEC_VFLR))
     (set (match_operand:SF 1 "memory_operand" "")
! 	(vec_select:SF (match_dup 2)
! 	 (parallel [(const_int 0)])))
     (set (match_dup 3)
! 	(vec_select:SF (match_dup 2)
! 	 (parallel [(const_int 2)])))]
    "TARGET_VX"
  {
    operands[2] = gen_reg_rtx (V4SFmode);
***************
*** 2181,2186 ****
--- 2186,2253 ----
     vster<bhfgq>\t%v1,%v0"
    [(set_attr "op_type" "*,VRX,VRX")])
  
+ ; The emulation pattern below will also accept
+ ;  vst (eltswap (vl))
+ ; i.e. both operands in memory, which reload needs to fix.
+ ; Split into
+ ;  vl
+ ;  vster (=vst (eltswap))
+ ; since we prefer vster over vler as long as the latter
+ ; does not support alignment hints.
+ (define_split
+   [(set (match_operand:VEC_HW                 0 "memory_operand" "")
+ 	(unspec:VEC_HW [(match_operand:VEC_HW 1 "memory_operand" "")]
+ 		       UNSPEC_VEC_ELTSWAP))]
+   "TARGET_VXE2 && can_create_pseudo_p ()"
+   [(set (match_dup 2) (match_dup 1))
+    (set (match_dup 0)
+ 	(unspec:VEC_HW [(match_dup 2)] UNSPEC_VEC_ELTSWAP))]
+ {
+   operands[2] = gen_reg_rtx (<MODE>mode);
+ })
+ 
+ 
+ ; Swapping v2df/v2di can be done via vpdi on z13 and z14.
+ (define_split
+   [(set (match_operand:V_HW_2                 0 "register_operand" "")
+ 	(unspec:V_HW_2 [(match_operand:V_HW_2 1 "register_operand" "")]
+ 		       UNSPEC_VEC_ELTSWAP))]
+   "TARGET_VX && can_create_pseudo_p ()"
+   [(set (match_operand:V_HW_2     0 "register_operand" "=v")
+ 	(vec_select:V_HW_2
+ 	 (vec_concat:<vec_2x_nelts>
+ 	  (match_operand:V_HW_2 1 "register_operand"  "v")
+ 	  (match_dup 1))
+ 	 (parallel [(const_int 1) (const_int 2)])))]
+ )
+ 
+ 
+ ; Swapping v4df/v4si can be done via vpdi and rot.
+ (define_split
+   [(set (match_operand:V_HW_4                 0 "register_operand" "")
+ 	(unspec:V_HW_4 [(match_operand:V_HW_4 1 "register_operand" "")]
+ 		       UNSPEC_VEC_ELTSWAP))]
+   "TARGET_VX && can_create_pseudo_p ()"
+   [(set (match_dup 2)
+ 	(vec_select:V_HW_4
+ 	 (vec_concat:<vec_2x_nelts>
+ 	  (match_dup 1)
+ 	  (match_dup 1))
+ 	 (parallel [(const_int 2) (const_int 3) (const_int 4) (const_int 5)])))
+  (set (match_dup 3)
+   (subreg:V2DI (match_dup 2) 0))
+  (set (match_dup 4)
+   (rotate:V2DI
+    (match_dup 3)
+    (const_int 32)))
+  (set (match_operand:V_HW_4 0)
+   (subreg:V_HW_4 (match_dup 4) 0))]
+ {
+   operands[2] = gen_reg_rtx (<MODE>mode);
+   operands[3] = gen_reg_rtx (V2DImode);
+   operands[4] = gen_reg_rtx (V2DImode);
+ })
+ 
  ; z15 has instructions for doing element reversal from mem to reg
  ; or the other way around.  For reg to reg or on pre z15 machines
  ; we have to emulate it with vector permute.
***************
*** 2259,2268 ****
  ; *a = vec_revb (b)[1];                            get-element-bswap-4.c
  ; vstebrh, vstebrf, vstebrg
  (define_insn "*vec_extract_bswap_vec<mode>"
!   [(set (match_operand:<non_vec>                                    0 "memory_operand"   "=R")
! 	(unspec:<non_vec> [(bswap:V_HW_HSD (match_operand:V_HW_HSD  1 "register_operand"  "v"))
! 			   (match_operand:SI                        2 "const_int_operand" "C")]
! 			   UNSPEC_VEC_EXTRACT))]
    "TARGET_VXE2 && UINTVAL (operands[2]) < GET_MODE_NUNITS (<V_HW_HSD:MODE>mode)"
    "vstebr<bhfgq>\t%v1,%0,%2"
    [(set_attr "op_type" "VRX")])
--- 2326,2335 ----
  ; *a = vec_revb (b)[1];                            get-element-bswap-4.c
  ; vstebrh, vstebrf, vstebrg
  (define_insn "*vec_extract_bswap_vec<mode>"
!   [(set (match_operand:<non_vec>                  0 "memory_operand"   "=R")
! 	(vec_select:<non_vec>
! 	 (bswap:V_HW_HSD (match_operand:V_HW_HSD  1 "register_operand"  "v"))
! 	 (parallel [(match_operand:SI             2 "const_int_operand" "C")])))]
    "TARGET_VXE2 && UINTVAL (operands[2]) < GET_MODE_NUNITS (<V_HW_HSD:MODE>mode)"
    "vstebr<bhfgq>\t%v1,%0,%2"
    [(set_attr "op_type" "VRX")])
***************
*** 2271,2281 ****
  ; *a = __builtin_bswap32 (b[1]);                   get-element-bswap-2.c
  ; vstebrh, vstebrf, vstebrg
  (define_insn "*vec_extract_bswap_elem<mode>"
!   [(set (match_operand:<non_vec>                     0 "memory_operand"   "=R")
  	(bswap:<non_vec>
! 	 (unspec:<non_vec> [(match_operand:V_HW_HSD  1 "register_operand"  "v")
! 			    (match_operand:SI        2 "const_int_operand" "C")]
! 			   UNSPEC_VEC_EXTRACT)))]
    "TARGET_VXE2 && UINTVAL (operands[2]) < GET_MODE_NUNITS (<V_HW_HSD:MODE>mode)"
    "vstebr<bhfgq>\t%v1,%0,%2"
    [(set_attr "op_type" "VRX")])
--- 2338,2348 ----
  ; *a = __builtin_bswap32 (b[1]);                   get-element-bswap-2.c
  ; vstebrh, vstebrf, vstebrg
  (define_insn "*vec_extract_bswap_elem<mode>"
!   [(set (match_operand:<non_vec>                  0 "memory_operand"   "=R")
  	(bswap:<non_vec>
! 	 (vec_select:<non_vec>
! 	  (match_operand:V_HW_HSD                 1 "register_operand"  "v")
! 	  (parallel [(match_operand:SI            2 "const_int_operand" "C")]))))]
    "TARGET_VXE2 && UINTVAL (operands[2]) < GET_MODE_NUNITS (<V_HW_HSD:MODE>mode)"
    "vstebr<bhfgq>\t%v1,%0,%2"
    [(set_attr "op_type" "VRX")])
diff -Nrcpad gcc-12.2.0/gcc/config/sh/constraints.md gcc-13.1.0/gcc/config/sh/constraints.md
*** gcc-12.2.0/gcc/config/sh/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for Renesas / SuperH SH.
! ;; Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for Renesas / SuperH SH.
! ;; Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/divcost-analysis gcc-13.1.0/gcc/config/sh/divcost-analysis
*** gcc-12.2.0/gcc/config/sh/divcost-analysis	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/divcost-analysis	Wed Apr 26 07:09:39 2023
*************** jmp @r0
*** 81,87 ****
  ; 2 cycles worse than SFUNC_STATIC
  
  
! Copyright (C) 2006-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 81,87 ----
  ; 2 cycles worse than SFUNC_STATIC
  
  
! Copyright (C) 2006-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/config/sh/divtab-sh4-300.cc gcc-13.1.0/gcc/config/sh/divtab-sh4-300.cc
*** gcc-12.2.0/gcc/config/sh/divtab-sh4-300.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/divtab-sh4-300.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
--- 1,4 ----
! /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-12.2.0/gcc/config/sh/divtab-sh4.cc gcc-13.1.0/gcc/config/sh/divtab-sh4.cc
*** gcc-12.2.0/gcc/config/sh/divtab-sh4.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/divtab-sh4.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
--- 1,4 ----
! /* Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-12.2.0/gcc/config/sh/divtab.cc gcc-13.1.0/gcc/config/sh/divtab.cc
*** gcc-12.2.0/gcc/config/sh/divtab.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/divtab.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
--- 1,4 ----
! /* Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is free software; you can redistribute it and/or modify it
  under the terms of the GNU General Public License as published by the
diff -Nrcpad gcc-12.2.0/gcc/config/sh/elf.h gcc-13.1.0/gcc/config/sh/elf.h
*** gcc-12.2.0/gcc/config/sh/elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for gcc for Renesas / SuperH SH using ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Ian Lance Taylor <ian@cygnus.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for gcc for Renesas / SuperH SH using ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Ian Lance Taylor <ian@cygnus.com>.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 61,75 ****
  #define LINK_EMUL_PREFIX "sh%{ml:l}elf"
  #endif
  
! #define DBX_REGISTER_NUMBER(REGNO) SH_DBX_REGISTER_NUMBER (REGNO)
  
  #undef ASM_GENERATE_INTERNAL_LABEL
  #define ASM_GENERATE_INTERNAL_LABEL(STRING, PREFIX, NUM) \
    sprintf ((STRING), "*%s%s%ld", LOCAL_LABEL_PREFIX, (PREFIX), (long)(NUM))
  
- #define DBX_LINES_FUNCTION_RELATIVE 1
- #define DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
- 
  #undef STARTFILE_SPEC
  #define STARTFILE_SPEC \
    "%{!shared: crt1.o%s} crti.o%s \
--- 61,72 ----
  #define LINK_EMUL_PREFIX "sh%{ml:l}elf"
  #endif
  
! #define DEBUGGER_REGNO(REGNO) SH_DEBUGGER_REGNO (REGNO)
  
  #undef ASM_GENERATE_INTERNAL_LABEL
  #define ASM_GENERATE_INTERNAL_LABEL(STRING, PREFIX, NUM) \
    sprintf ((STRING), "*%s%s%ld", LOCAL_LABEL_PREFIX, (PREFIX), (long)(NUM))
  
  #undef STARTFILE_SPEC
  #define STARTFILE_SPEC \
    "%{!shared: crt1.o%s} crti.o%s \
diff -Nrcpad gcc-12.2.0/gcc/config/sh/embed-elf.h gcc-13.1.0/gcc/config/sh/embed-elf.h
*** gcc-12.2.0/gcc/config/sh/embed-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/embed-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler for Renesas / SuperH SH 
     non-Linux embedded targets.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by J"orn Rennecke <joern.rennecke@superh.com>
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GNU compiler for Renesas / SuperH SH 
     non-Linux embedded targets.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by J"orn Rennecke <joern.rennecke@superh.com>
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sh/iterators.md gcc-13.1.0/gcc/config/sh/iterators.md
*** gcc-12.2.0/gcc/config/sh/iterators.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/iterators.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Iterator definitions for GCC SH machine description files.
! ;; Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Iterator definitions for GCC SH machine description files.
! ;; Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/linux.h gcc-13.1.0/gcc/config/sh/linux.h
*** gcc-12.2.0/gcc/config/sh/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for SH running Linux-based GNU systems using ELF
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for SH running Linux-based GNU systems using ELF
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Kazumoto Kojima <kkojima@rr.iij4u.or.jp>
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 111,121 ****
     in MD_FALLBACK_FRAME_STATE_FOR and its content will be read with
     _Unwind_GetGR which uses dwarf_reg_size_table to get the size of
     the register.  So the entry of dwarf_reg_size_table corresponding to
!    this slot must be set.  To do this, we redefine DBX_REGISTER_NUMBER
     so as to return itself for 16.  */
! #undef DBX_REGISTER_NUMBER
! #define DBX_REGISTER_NUMBER(REGNO) \
!   (((REGNO) == 16) ? 16 : SH_DBX_REGISTER_NUMBER (REGNO))
  
  /* Install the __sync libcalls.  */
  #undef TARGET_INIT_LIBFUNCS
--- 111,121 ----
     in MD_FALLBACK_FRAME_STATE_FOR and its content will be read with
     _Unwind_GetGR which uses dwarf_reg_size_table to get the size of
     the register.  So the entry of dwarf_reg_size_table corresponding to
!    this slot must be set.  To do this, we redefine DEBUGGER_REGNO
     so as to return itself for 16.  */
! #undef DEBUGGER_REGNO
! #define DEBUGGER_REGNO(REGNO) \
!   (((REGNO) == 16) ? 16 : SH_DEBUGGER_REGNO (REGNO))
  
  /* Install the __sync libcalls.  */
  #undef TARGET_INIT_LIBFUNCS
diff -Nrcpad gcc-12.2.0/gcc/config/sh/little.h gcc-13.1.0/gcc/config/sh/little.h
*** gcc-12.2.0/gcc/config/sh/little.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/little.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definition of little endian SH machine for GNU compiler.
  
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definition of little endian SH machine for GNU compiler.
  
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/netbsd-elf.h gcc-13.1.0/gcc/config/sh/netbsd-elf.h
*** gcc-12.2.0/gcc/config/sh/netbsd-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/netbsd-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for SH running NetBSD using ELF
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for SH running NetBSD using ELF
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Wasabi Systems, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sh/newlib.h gcc-13.1.0/gcc/config/sh/newlib.h
*** gcc-12.2.0/gcc/config/sh/newlib.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/newlib.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for gcc for Super-H using sh-superh-elf.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GNU CC.
  
--- 1,5 ----
  /* Definitions of target machine for gcc for Super-H using sh-superh-elf.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GNU CC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/predicates.md gcc-13.1.0/gcc/config/sh/predicates.md
*** gcc-12.2.0/gcc/config/sh/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for Renesas / SuperH SH.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for Renesas / SuperH SH.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/rtems.h gcc-13.1.0/gcc/config/sh/rtems.h
*** gcc-12.2.0/gcc/config/sh/rtems.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/rtems.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a SH using COFF.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a SH using COFF.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sh/rtemself.h gcc-13.1.0/gcc/config/sh/rtemself.h
*** gcc-12.2.0/gcc/config/sh/rtemself.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/rtemself.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a SH using elf.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a SH using elf.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh-c.cc gcc-13.1.0/gcc/config/sh/sh-c.cc
*** gcc-12.2.0/gcc/config/sh/sh-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Pragma handling for GCC for Renesas / SuperH SH.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Joern Rennecke <joern.rennecke@st.com>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Pragma handling for GCC for Renesas / SuperH SH.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Joern Rennecke <joern.rennecke@st.com>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh-mem.cc gcc-13.1.0/gcc/config/sh/sh-mem.cc
*** gcc-12.2.0/gcc/config/sh/sh-mem.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh-mem.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Helper routines for memory move and comparison insns.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Helper routines for memory move and comparison insns.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh-modes.def gcc-13.1.0/gcc/config/sh/sh-modes.def
*** gcc-12.2.0/gcc/config/sh/sh-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* SH extra machine modes. 
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* SH extra machine modes. 
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh-protos.h gcc-13.1.0/gcc/config/sh/sh-protos.h
*** gcc-12.2.0/gcc/config/sh/sh-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for Renesas / SuperH SH.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com).
     Improved by Jim Wilson (wilson@cygnus.com).
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for Renesas / SuperH SH.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com).
     Improved by Jim Wilson (wilson@cygnus.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh.cc gcc-13.1.0/gcc/config/sh/sh.cc
*** gcc-12.2.0/gcc/config/sh/sh.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Output routines for GCC for Renesas / SuperH SH.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com).
     Improved by Jim Wilson (wilson@cygnus.com).
  
--- 1,5 ----
  /* Output routines for GCC for Renesas / SuperH SH.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com).
     Improved by Jim Wilson (wilson@cygnus.com).
  
*************** expand_cbranchdi4 (rtx *operands, enum r
*** 2178,2184 ****
  	  && prob.to_reg_br_prob_base () >= (int) (REG_BR_PROB_BASE * 3 / 8U)
  	  && prob.to_reg_br_prob_base () <= (int) (REG_BR_PROB_BASE * 5 / 8U))
  	{
! 	  msw_taken_prob = prob.apply_scale (1, 2);
  	  msw_skip_prob = rev_prob.apply_scale (REG_BR_PROB_BASE,
  						rev_prob.to_reg_br_prob_base ()
  						+ REG_BR_PROB_BASE);
--- 2178,2184 ----
  	  && prob.to_reg_br_prob_base () >= (int) (REG_BR_PROB_BASE * 3 / 8U)
  	  && prob.to_reg_br_prob_base () <= (int) (REG_BR_PROB_BASE * 5 / 8U))
  	{
! 	  msw_taken_prob = prob / 2;
  	  msw_skip_prob = rev_prob.apply_scale (REG_BR_PROB_BASE,
  						rev_prob.to_reg_br_prob_base ()
  						+ REG_BR_PROB_BASE);
*************** sh_setup_incoming_varargs (cumulative_ar
*** 8183,8193 ****
    gcc_assert (cfun->stdarg);
    if (TARGET_VARARGS_PRETEND_ARGS (current_function_decl))
      {
!       int named_parm_regs, anon_parm_regs;
  
!       named_parm_regs = (sh_round_reg (*get_cumulative_args (ca), arg.mode)
! 			 + CEIL (arg.promoted_size_in_bytes (),
! 				 UNITS_PER_WORD));
        anon_parm_regs = NPARM_REGS (SImode) - named_parm_regs;
        if (anon_parm_regs > 0)
  	*pretend_arg_size = anon_parm_regs * 4;
--- 8183,8194 ----
    gcc_assert (cfun->stdarg);
    if (TARGET_VARARGS_PRETEND_ARGS (current_function_decl))
      {
!       int named_parm_regs = 0, anon_parm_regs;
  
!       if (!TYPE_NO_NAMED_ARGS_STDARG_P (TREE_TYPE (current_function_decl)))
! 	named_parm_regs = (sh_round_reg (*get_cumulative_args (ca), arg.mode)
! 			   + CEIL (arg.promoted_size_in_bytes (),
! 				   UNITS_PER_WORD));
        anon_parm_regs = NPARM_REGS (SImode) - named_parm_regs;
        if (anon_parm_regs > 0)
  	*pretend_arg_size = anon_parm_regs * 4;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh.h gcc-13.1.0/gcc/config/sh/sh.h
*** gcc-12.2.0/gcc/config/sh/sh.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler for Renesas / SuperH SH.
!    Copyright (C) 1993-2022 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com).
     Improved by Jim Wilson (wilson@cygnus.com).
  
--- 1,5 ----
  /* Definitions of target machine for GNU compiler for Renesas / SuperH SH.
!    Copyright (C) 1993-2023 Free Software Foundation, Inc.
     Contributed by Steve Chamberlain (sac@cygnus.com).
     Improved by Jim Wilson (wilson@cygnus.com).
  
*************** extern bool current_function_interrupt;
*** 1654,1667 ****
    fprintf ((file), "\tmov.l\t@r15+,r%d\n", (v));	\
  }
  
! /* DBX register number for a given compiler register number.  */
  /* GDB has FPUL at 23 and FP0 at 25, so we must add one to all FP registers
     to match gdb.  */
  /* expand_builtin_init_dwarf_reg_sizes uses this to test if a
     register exists, so we should return -1 for invalid register numbers.  */
! #define DBX_REGISTER_NUMBER(REGNO) SH_DBX_REGISTER_NUMBER (REGNO)
  
! #define SH_DBX_REGISTER_NUMBER(REGNO) \
    (IN_RANGE ((REGNO), \
  	     (unsigned HOST_WIDE_INT) FIRST_GENERAL_REG, \
  	     FIRST_GENERAL_REG + 15U) \
--- 1654,1667 ----
    fprintf ((file), "\tmov.l\t@r15+,r%d\n", (v));	\
  }
  
! /* Debugger register number for a given compiler register number.  */
  /* GDB has FPUL at 23 and FP0 at 25, so we must add one to all FP registers
     to match gdb.  */
  /* expand_builtin_init_dwarf_reg_sizes uses this to test if a
     register exists, so we should return -1 for invalid register numbers.  */
! #define DEBUGGER_REGNO(REGNO) SH_DEBUGGER_REGNO (REGNO)
  
! #define SH_DEBUGGER_REGNO(REGNO) \
    (IN_RANGE ((REGNO), \
  	     (unsigned HOST_WIDE_INT) FIRST_GENERAL_REG, \
  	     FIRST_GENERAL_REG + 15U) \
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh.md gcc-13.1.0/gcc/config/sh/sh.md
*** gcc-12.2.0/gcc/config/sh/sh.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;;- Machine description for Renesas / SuperH SH.
! ;;  Copyright (C) 1993-2022 Free Software Foundation, Inc.
  ;;  Contributed by Steve Chamberlain (sac@cygnus.com).
  ;;  Improved by Jim Wilson (wilson@cygnus.com).
  
--- 1,5 ----
  ;;- Machine description for Renesas / SuperH SH.
! ;;  Copyright (C) 1993-2023 Free Software Foundation, Inc.
  ;;  Contributed by Steve Chamberlain (sac@cygnus.com).
  ;;  Improved by Jim Wilson (wilson@cygnus.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh.opt gcc-13.1.0/gcc/config/sh/sh.opt
*** gcc-12.2.0/gcc/config/sh/sh.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the SH port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the SH port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh1.md gcc-13.1.0/gcc/config/sh/sh1.md
*** gcc-12.2.0/gcc/config/sh/sh1.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh1.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA scheduling description for Renesas / SuperH SH.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; DFA scheduling description for Renesas / SuperH SH.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh4-300.md gcc-13.1.0/gcc/config/sh/sh4-300.md
*** gcc-12.2.0/gcc/config/sh/sh4-300.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh4-300.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA scheduling description for ST40-300.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; DFA scheduling description for ST40-300.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh4.md gcc-13.1.0/gcc/config/sh/sh4.md
*** gcc-12.2.0/gcc/config/sh/sh4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; DFA scheduling description for SH4.
! ;; Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
--- 1,5 ----
  ;; DFA scheduling description for SH4.
! ;; Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  ;; This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh4a.md gcc-13.1.0/gcc/config/sh/sh4a.md
*** gcc-12.2.0/gcc/config/sh/sh4a.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh4a.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Renesas SH4a
! ;; Copyright (C) 2003-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Renesas SH4a
! ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh_optimize_sett_clrt.cc gcc-13.1.0/gcc/config/sh/sh_optimize_sett_clrt.cc
*** gcc-12.2.0/gcc/config/sh/sh_optimize_sett_clrt.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh_optimize_sett_clrt.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* An SH specific RTL pass that tries to optimize clrt and sett insns.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* An SH specific RTL pass that tries to optimize clrt and sett insns.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sh_treg_combine.cc gcc-13.1.0/gcc/config/sh/sh_treg_combine.cc
*** gcc-12.2.0/gcc/config/sh/sh_treg_combine.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sh_treg_combine.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* An SH specific RTL pass that tries to combine comparisons and redundant
     condition code register stores across multiple basic blocks.
!    Copyright (C) 2013-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* An SH specific RTL pass that tries to combine comparisons and redundant
     condition code register stores across multiple basic blocks.
!    Copyright (C) 2013-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 37,42 ****
--- 37,43 ----
  #include "cfgrtl.h"
  #include "tree-pass.h"
  #include "expr.h"
+ #include "tm-preds.h"
  
  /*
  This pass tries to optimize for example this:
*************** is_conditional_insn (rtx_insn* i)
*** 426,435 ****
    return GET_CODE (p) == SET && GET_CODE (XEXP (p, 1)) == IF_THEN_ELSE;
  }
  
- // FIXME: Remove dependency on SH predicate function somehow.
- extern int t_reg_operand (rtx, machine_mode);
- extern int negt_reg_operand (rtx, machine_mode);
- 
  // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  // RTL pass class
  
--- 427,432 ----
diff -Nrcpad gcc-12.2.0/gcc/config/sh/superh.h gcc-13.1.0/gcc/config/sh/superh.h
*** gcc-12.2.0/gcc/config/sh/superh.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/superh.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for gcc for Super-H using sh-superh-elf.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  This file is part of GNU CC.
  
--- 1,5 ----
  /* Definitions of target machine for gcc for Super-H using sh-superh-elf.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  This file is part of GNU CC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sh/sync.md gcc-13.1.0/gcc/config/sh/sync.md
*** gcc-12.2.0/gcc/config/sh/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for SH synchronization instructions.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for SH synchronization instructions.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sh/t-sh gcc-13.1.0/gcc/config/sh/t-sh
*** gcc-12.2.0/gcc/config/sh/t-sh	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/t-sh	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1993-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1993-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sh/vxworks.h gcc-13.1.0/gcc/config/sh/vxworks.h
*** gcc-12.2.0/gcc/config/sh/vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sh/vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GCC,
     for SuperH with targeting the VXWorks run time environment. 
!    Copyright (C) 2003-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
     
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GCC,
     for SuperH with targeting the VXWorks run time environment. 
!    Copyright (C) 2003-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
     
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sol2-c.cc gcc-13.1.0/gcc/config/sol2-c.cc
*** gcc-12.2.0/gcc/config/sol2-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Solaris support needed only by C/C++ frontends.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
--- 1,5 ----
  /* Solaris support needed only by C/C++ frontends.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sol2-cxx.cc gcc-13.1.0/gcc/config/sol2-cxx.cc
*** gcc-12.2.0/gcc/config/sol2-cxx.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2-cxx.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* C++ specific Solaris system support.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* C++ specific Solaris system support.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sol2-d.cc gcc-13.1.0/gcc/config/sol2-d.cc
*** gcc-12.2.0/gcc/config/sol2-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Solaris support needed only by D front-end.
!    Copyright (C) 2018-2022 Free Software Foundation, Inc.
  
  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
--- 1,5 ----
  /* Solaris support needed only by D front-end.
!    Copyright (C) 2018-2023 Free Software Foundation, Inc.
  
  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
*************** along with GCC; see the file COPYING3.
*** 19,26 ****
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "memmodel.h"
! #include "tm_p.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
--- 19,25 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
! #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/sol2-protos.h gcc-13.1.0/gcc/config/sol2-protos.h
*** gcc-12.2.0/gcc/config/sol2-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Operating system specific prototypes to be used when targeting GCC for any
     Solaris 2 system.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific prototypes to be used when targeting GCC for any
     Solaris 2 system.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sol2-stubs.cc gcc-13.1.0/gcc/config/sol2-stubs.cc
*** gcc-12.2.0/gcc/config/sol2-stubs.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2-stubs.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Stubs for C++ specific Solaris system support.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Stubs for C++ specific Solaris system support.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sol2.cc gcc-13.1.0/gcc/config/sol2.cc
*** gcc-12.2.0/gcc/config/sol2.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* General Solaris system support.
!    Copyright (C) 2004-2022 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
--- 1,5 ----
  /* General Solaris system support.
!    Copyright (C) 2004-2023 Free Software Foundation, Inc.
     Contributed by CodeSourcery, LLC.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sol2.h gcc-13.1.0/gcc/config/sol2.h
*** gcc-12.2.0/gcc/config/sol2.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Operating system specific defines to be used when targeting GCC for any
     Solaris 2 system.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Operating system specific defines to be used when targeting GCC for any
     Solaris 2 system.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 161,167 ****
  #undef LIB_SPEC
  #define LIB_SPEC \
    "%{!symbolic:\
-      %{pthreads|pthread:-lpthread} \
       %{p|pg:-ldl} -lc}"
  
  #ifndef CROSS_DIRECTORY_STRUCTURE
--- 161,166 ----
*************** along with GCC; see the file COPYING3.
*** 295,301 ****
  
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     %(endfile_arch) %(endfile_vtv) %(endfile_crtend) crtn.o%s"
  
  #undef LINK_ARCH32_SPEC_BASE
--- 294,300 ----
  
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     %(endfile_arch) %(endfile_vtv) %(endfile_crtend) crtn.o%s"
  
  #undef LINK_ARCH32_SPEC_BASE
*************** along with GCC; see the file COPYING3.
*** 498,508 ****
  
  #define AS_NEEDS_DASH_FOR_PIPED_INPUT
  
- /* The Solaris assembler cannot grok .stabd directives.  */
- #undef NO_DBX_BNSYM_ENSYM
- #define NO_DBX_BNSYM_ENSYM 1
  #endif
- 
  /* Solaris has an implementation of __enable_execute_stack.  */
  #define HAVE_ENABLE_EXECUTE_STACK
  
--- 497,503 ----
diff -Nrcpad gcc-12.2.0/gcc/config/sol2.opt gcc-13.1.0/gcc/config/sol2.opt
*** gcc-12.2.0/gcc/config/sol2.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sol2.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the Solaris 2 port of the compiler
  ;
! ; Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the Solaris 2 port of the compiler
  ;
! ; Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/biarch64.h gcc-13.1.0/gcc/config/sparc/biarch64.h
*** gcc-12.2.0/gcc/config/sparc/biarch64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/biarch64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC, for Sun SPARC.
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org>.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GCC, for Sun SPARC.
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org>.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/constraints.md gcc-13.1.0/gcc/config/sparc/constraints.md
*** gcc-12.2.0/gcc/config/sparc/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for SPARC.
! ;; Copyright (C) 2008-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for SPARC.
! ;; Copyright (C) 2008-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/cypress.md gcc-13.1.0/gcc/config/sparc/cypress.md
*** gcc-12.2.0/gcc/config/sparc/cypress.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/cypress.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for SPARC Cypress.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for SPARC Cypress.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/default64.h gcc-13.1.0/gcc/config/sparc/default64.h
*** gcc-12.2.0/gcc/config/sparc/default64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/default64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,7 ****
  /* Definitions of target machine for GCC, for bi-arch SPARC,
     defaulting to 64-bit code generation.
  
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,7 ----
  /* Definitions of target machine for GCC, for bi-arch SPARC,
     defaulting to 64-bit code generation.
  
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/driver-sparc.cc gcc-13.1.0/gcc/config/sparc/driver-sparc.cc
*** gcc-12.2.0/gcc/config/sparc/driver-sparc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/driver-sparc.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the gcc driver.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines for the gcc driver.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/freebsd.h gcc-13.1.0/gcc/config/sparc/freebsd.h
*** gcc-12.2.0/gcc/config/sparc/freebsd.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/freebsd.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for Sun SPARC64 running FreeBSD using the ELF format
!    Copyright (C) 2001-2022 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for Sun SPARC64 running FreeBSD using the ELF format
!    Copyright (C) 2001-2023 Free Software Foundation, Inc.
     Contributed by David E. O'Brien <obrien@FreeBSD.org> and BSDi.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 109,120 ****
  
  /************************[  Debugger stuff  ]*********************************/
  
- /* This is the char to use for continuation (in case we need to turn
-    continuation back on).  */
- 
- #undef  DBX_CONTIN_CHAR
- #define DBX_CONTIN_CHAR	'?'
- 
  /* DWARF bits.  */
  
  /* Follow Irix 6 and not the Dwarf2 draft in using 64-bit offsets. 
--- 109,114 ----
*************** along with GCC; see the file COPYING3.
*** 133,139 ****
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC						\
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} "	\
    FBSD_ENDFILE_SPEC
  
  /* We use GNU ld so undefine this so that attribute((init_priority)) works.  */
--- 127,133 ----
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC						\
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} "	\
    FBSD_ENDFILE_SPEC
  
  /* We use GNU ld so undefine this so that attribute((init_priority)) works.  */
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/hypersparc.md gcc-13.1.0/gcc/config/sparc/hypersparc.md
*** gcc-12.2.0/gcc/config/sparc/hypersparc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/hypersparc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for HyperSPARC.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for HyperSPARC.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/leon.md gcc-13.1.0/gcc/config/sparc/leon.md
*** gcc-12.2.0/gcc/config/sparc/leon.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/leon.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for LEON.
! ;;   Copyright (C) 2010-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for LEON.
! ;;   Copyright (C) 2010-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/leon5.md gcc-13.1.0/gcc/config/sparc/leon5.md
*** gcc-12.2.0/gcc/config/sparc/leon5.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/leon5.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for LEON5.
! ;;   Copyright (C) 2021-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for LEON5.
! ;;   Copyright (C) 2021-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/linux.h gcc-13.1.0/gcc/config/sparc/linux.h
*** gcc-12.2.0/gcc/config/sparc/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/linux.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for SPARC running Linux-based GNU systems with ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Eddie C. Dost (ecd@skynet.be)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for SPARC running Linux-based GNU systems with ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Eddie C. Dost (ecd@skynet.be)
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 30,36 ****
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
    GNU_USER_TARGET_ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  
  /* -mcpu=native handling only makes sense with compiler running on
     a SPARC chip.  */
--- 30,36 ----
  #undef  ENDFILE_SPEC
  #define ENDFILE_SPEC \
    GNU_USER_TARGET_ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  
  /* -mcpu=native handling only makes sense with compiler running on
     a SPARC chip.  */
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/linux64.h gcc-13.1.0/gcc/config/sparc/linux64.h
*** gcc-12.2.0/gcc/config/sparc/linux64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/linux64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by David S. Miller (davem@caip.rutgers.edu)
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions for 64-bit SPARC running Linux-based GNU systems with ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by David S. Miller (davem@caip.rutgers.edu)
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 47,53 ****
  #undef	ENDFILE_SPEC
  #define ENDFILE_SPEC \
    GNU_USER_TARGET_ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s}"
  
  /* The default code model.  */
  #undef SPARC_DEFAULT_CMODEL
--- 47,53 ----
  #undef	ENDFILE_SPEC
  #define ENDFILE_SPEC \
    GNU_USER_TARGET_ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}}"
  
  /* The default code model.  */
  #undef SPARC_DEFAULT_CMODEL
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/long-double-switch.opt gcc-13.1.0/gcc/config/sparc/long-double-switch.opt
*** gcc-12.2.0/gcc/config/sparc/long-double-switch.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/long-double-switch.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the SPARC port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the SPARC port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/m8.md gcc-13.1.0/gcc/config/sparc/m8.md
*** gcc-12.2.0/gcc/config/sparc/m8.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/m8.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for the SPARC M8.
! ;;   Copyright (C) 2017-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for the SPARC M8.
! ;;   Copyright (C) 2017-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/netbsd-elf.h gcc-13.1.0/gcc/config/sparc/netbsd-elf.h
*** gcc-12.2.0/gcc/config/sparc/netbsd-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/netbsd-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GCC, for ELF on NetBSD/sparc
     and NetBSD/sparc64.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Matthew Green (mrg@eterna.com.au).
  
  This file is part of GCC.
--- 1,6 ----
  /* Definitions of target machine for GCC, for ELF on NetBSD/sparc
     and NetBSD/sparc64.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Matthew Green (mrg@eterna.com.au).
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 46,56 ****
  #undef PTRDIFF_TYPE
  #define PTRDIFF_TYPE "long int"
  
- /* This is the char to use for continuation (in case we need to turn
-    continuation back on).  */
- #undef DBX_CONTIN_CHAR
- #define DBX_CONTIN_CHAR '?'
- 
  #undef  LOCAL_LABEL_PREFIX
  #define LOCAL_LABEL_PREFIX  "."
  
--- 46,51 ----
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/niagara.md gcc-13.1.0/gcc/config/sparc/niagara.md
*** gcc-12.2.0/gcc/config/sparc/niagara.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/niagara.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Niagara.
! ;;   Copyright (C) 2006-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Niagara.
! ;;   Copyright (C) 2006-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/niagara2.md gcc-13.1.0/gcc/config/sparc/niagara2.md
*** gcc-12.2.0/gcc/config/sparc/niagara2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/niagara2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Niagara-2 and Niagara-3.
! ;;   Copyright (C) 2007-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Niagara-2 and Niagara-3.
! ;;   Copyright (C) 2007-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/niagara4.md gcc-13.1.0/gcc/config/sparc/niagara4.md
*** gcc-12.2.0/gcc/config/sparc/niagara4.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/niagara4.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Niagara-4
! ;;   Copyright (C) 2012-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Niagara-4
! ;;   Copyright (C) 2012-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/niagara7.md gcc-13.1.0/gcc/config/sparc/niagara7.md
*** gcc-12.2.0/gcc/config/sparc/niagara7.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/niagara7.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for Niagara-7
! ;;   Copyright (C) 2016-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for Niagara-7
! ;;   Copyright (C) 2016-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/openbsd1-64.h gcc-13.1.0/gcc/config/sparc/openbsd1-64.h
*** gcc-12.2.0/gcc/config/sparc/openbsd1-64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/openbsd1-64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for sparc64 OpenBSD target.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration file for sparc64 OpenBSD target.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/openbsd64.h gcc-13.1.0/gcc/config/sparc/openbsd64.h
*** gcc-12.2.0/gcc/config/sparc/openbsd64.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/openbsd64.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Configuration file for sparc64 OpenBSD target.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Configuration file for sparc64 OpenBSD target.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/predicates.md gcc-13.1.0/gcc/config/sparc/predicates.md
*** gcc-12.2.0/gcc/config/sparc/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for SPARC.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for SPARC.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/rtemself.h gcc-13.1.0/gcc/config/sparc/rtemself.h
*** gcc-12.2.0/gcc/config/sparc/rtemself.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/rtemself.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for rtems targeting a SPARC using ELF.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
--- 1,5 ----
  /* Definitions for rtems targeting a SPARC using ELF.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
     Contributed by Joel Sherrill (joel@OARcorp.com).
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sol2.h gcc-13.1.0/gcc/config/sparc/sol2.h
*** gcc-12.2.0/gcc/config/sparc/sol2.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sol2.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC, for SPARC running Solaris 2
!    Copyright (C) 1992-2022 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@netcom.com).
     Additional changes by David V. Henkel-Wallace (gumby@cygnus.com).
  
--- 1,5 ----
  /* Definitions of target machine for GCC, for SPARC running Solaris 2
!    Copyright (C) 1992-2023 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@netcom.com).
     Additional changes by David V. Henkel-Wallace (gumby@cygnus.com).
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sp-elf.h gcc-13.1.0/gcc/config/sparc/sp-elf.h
*** gcc-12.2.0/gcc/config/sparc/sp-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sp-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GCC,
     for SPARC running in an embedded environment using the ELF file format.
!    Copyright (C) 2005-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GCC,
     for SPARC running in an embedded environment using the ELF file format.
!    Copyright (C) 2005-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
*************** along with GCC; see the file COPYING3.
*** 32,38 ****
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     crtend.o%s crtn.o%s"
  
  /* Don't set the target flags, this is done by the linker script */
--- 32,38 ----
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     crtend.o%s crtn.o%s"
  
  /* Don't set the target flags, this is done by the linker script */
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sp64-elf.h gcc-13.1.0/gcc/config/sparc/sp64-elf.h
*** gcc-12.2.0/gcc/config/sparc/sp64-elf.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sp64-elf.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC, for SPARC64, ELF.
!    Copyright (C) 1994-2022 Free Software Foundation, Inc.
     Contributed by Doug Evans, dje@cygnus.com.
  
  This file is part of GCC.
--- 1,5 ----
  /* Definitions of target machine for GCC, for SPARC64, ELF.
!    Copyright (C) 1994-2023 Free Software Foundation, Inc.
     Contributed by Doug Evans, dje@cygnus.com.
  
  This file is part of GCC.
*************** along with GCC; see the file COPYING3.
*** 44,50 ****
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:crtfastmath.o%s} \
     crtend.o%s crtn.o%s"
  
  /* Use the default (for now).  */
--- 44,50 ----
  
  #undef ENDFILE_SPEC
  #define ENDFILE_SPEC \
!   "%{Ofast|ffast-math|funsafe-math-optimizations:%{!shared:crtfastmath.o%s}} \
     crtend.o%s crtn.o%s"
  
  /* Use the default (for now).  */
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-c.cc gcc-13.1.0/gcc/config/sparc/sparc-c.cc
*** gcc-12.2.0/gcc/config/sparc/sparc-c.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc-c.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines used for macro/preprocessor support on SPARC.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Subroutines used for macro/preprocessor support on SPARC.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-d.cc gcc-13.1.0/gcc/config/sparc/sparc-d.cc
*** gcc-12.2.0/gcc/config/sparc/sparc-d.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc-d.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for the D front end on the SPARC architecture.
!    Copyright (C) 2017-2022 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
--- 1,5 ----
  /* Subroutines for the D front end on the SPARC architecture.
!    Copyright (C) 2017-2023 Free Software Foundation, Inc.
  
  GCC is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
*************** along with GCC; see the file COPYING3.
*** 21,26 ****
--- 21,27 ----
  #include "system.h"
  #include "coretypes.h"
  #include "tm.h"
+ #include "tm_d.h"
  #include "d/d-target.h"
  #include "d/d-target-def.h"
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-d.h gcc-13.1.0/gcc/config/sparc/sparc-d.h
*** gcc-12.2.0/gcc/config/sparc/sparc-d.h	Thu Jan  1 00:00:00 1970
--- gcc-13.1.0/gcc/config/sparc/sparc-d.h	Wed Apr 26 07:09:39 2023
***************
*** 0 ****
--- 1,24 ----
+ /* Definitions for the D front end on the SPARC architecture.
+    Copyright (C) 2022-2023 Free Software Foundation, Inc.
+ 
+ GCC is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3, or (at your option)
+ any later version.
+ 
+ GCC is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ GNU General Public License for more details.
+ 
+ You should have received a copy of the GNU General Public License
+ along with GCC; see the file COPYING3.  If not see
+ <http://www.gnu.org/licenses/>.  */
+ 
+ /* Routines implemented in sparc-d.cc  */
+ extern void sparc_d_target_versions (void);
+ extern void sparc_d_register_target_info (void);
+ 
+ /* Target hooks for D language.  */
+ #define TARGET_D_CPU_VERSIONS sparc_d_target_versions
+ #define TARGET_D_REGISTER_CPU_TARGET_INFO sparc_d_register_target_info
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-modes.def gcc-13.1.0/gcc/config/sparc/sparc-modes.def
*** gcc-12.2.0/gcc/config/sparc/sparc-modes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc-modes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GCC, for Sun SPARC.
!    Copyright (C) 2002-2022 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com).
     64-bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
--- 1,5 ----
  /* Definitions of target machine for GCC, for Sun SPARC.
!    Copyright (C) 2002-2023 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com).
     64-bit SPARC V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-opts.h gcc-13.1.0/gcc/config/sparc/sparc-opts.h
*** gcc-12.2.0/gcc/config/sparc/sparc-opts.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc-opts.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions for option handling for SPARC.
!    Copyright (C) 1996-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Definitions for option handling for SPARC.
!    Copyright (C) 1996-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-passes.def gcc-13.1.0/gcc/config/sparc/sparc-passes.def
*** gcc-12.2.0/gcc/config/sparc/sparc-passes.def	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc-passes.def	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Description of target passes for SPARC. 
!    Copyright (C) 2016-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Description of target passes for SPARC. 
!    Copyright (C) 2016-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc-protos.h gcc-13.1.0/gcc/config/sparc/sparc-protos.h
*** gcc-12.2.0/gcc/config/sparc/sparc-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes of target machine for SPARC.
!    Copyright (C) 1999-2022 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com).
     64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
--- 1,5 ----
  /* Prototypes of target machine for SPARC.
!    Copyright (C) 1999-2023 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com).
     64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
*************** unsigned int sparc_regmode_natural_size
*** 112,119 ****
  
  extern rtl_opt_pass *make_pass_work_around_errata (gcc::context *);
  
- /* Routines implemented in sparc-d.cc  */
- extern void sparc_d_target_versions (void);
- extern void sparc_d_register_target_info (void);
- 
  #endif /* __SPARC_PROTOS_H__ */
--- 112,115 ----
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc.cc gcc-13.1.0/gcc/config/sparc/sparc.cc
*** gcc-12.2.0/gcc/config/sparc/sparc.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Subroutines for insn-output.cc for SPARC.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com)
     64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
--- 1,5 ----
  /* Subroutines for insn-output.cc for SPARC.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com)
     64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
*************** static bool sparc_modes_tieable_p (machi
*** 712,718 ****
  static bool sparc_can_change_mode_class (machine_mode, machine_mode,
  					 reg_class_t);
  static HOST_WIDE_INT sparc_constant_alignment (const_tree, HOST_WIDE_INT);
! static bool sparc_vectorize_vec_perm_const (machine_mode, rtx, rtx, rtx,
  					    const vec_perm_indices &);
  static bool sparc_can_follow_jump (const rtx_insn *, const rtx_insn *);
  static HARD_REG_SET sparc_zero_call_used_regs (HARD_REG_SET);
--- 712,719 ----
  static bool sparc_can_change_mode_class (machine_mode, machine_mode,
  					 reg_class_t);
  static HOST_WIDE_INT sparc_constant_alignment (const_tree, HOST_WIDE_INT);
! static bool sparc_vectorize_vec_perm_const (machine_mode, machine_mode,
! 					    rtx, rtx, rtx,
  					    const vec_perm_indices &);
  static bool sparc_can_follow_jump (const rtx_insn *, const rtx_insn *);
  static HARD_REG_SET sparc_zero_call_used_regs (HARD_REG_SET);
*************** sparc_expand_prologue (void)
*** 6050,6055 ****
--- 6051,6059 ----
  	}
  
        RTX_FRAME_RELATED_P (insn) = 1;
+ 
+       /* Ensure no memory access is done before the frame is established.  */
+       emit_insn (gen_frame_blockage ());
      }
    else
      {
*************** sparc_expand_prologue (void)
*** 6064,6076 ****
  	  /* %sp is not the CFA register anymore.  */
  	  emit_insn (gen_stack_pointer_inc (GEN_INT (4096 - size)));
  
! 	  /* Make sure no %fp-based store is issued until after the frame is
! 	     established.  The offset between the frame pointer and the stack
! 	     pointer is calculated relative to the value of the stack pointer
! 	     at the end of the function prologue, and moving instructions that
! 	     access the stack via the frame pointer between the instructions
! 	     that decrement the stack pointer could result in accessing the
! 	     register window save area, which is volatile.  */
  	  emit_insn (gen_frame_blockage ());
  	}
        else
--- 6068,6074 ----
  	  /* %sp is not the CFA register anymore.  */
  	  emit_insn (gen_stack_pointer_inc (GEN_INT (4096 - size)));
  
! 	  /* Likewise.  */
  	  emit_insn (gen_frame_blockage ());
  	}
        else
*************** sparc_flat_expand_prologue (void)
*** 6166,6173 ****
  	}
        RTX_FRAME_RELATED_P (insn) = 1;
  
!       /* Ensure nothing is scheduled until after the frame is established.  */
!       emit_insn (gen_blockage ());
  
        if (frame_pointer_needed)
  	{
--- 6164,6171 ----
  	}
        RTX_FRAME_RELATED_P (insn) = 1;
  
!       /* Ensure no memory access is done before the frame is established.  */
!       emit_insn (gen_frame_blockage ());
  
        if (frame_pointer_needed)
  	{
*************** sparc_expand_epilogue (bool for_eh)
*** 6254,6259 ****
--- 6252,6260 ----
      ; /* do nothing.  */
    else if (sparc_leaf_function_p)
      {
+       /* Ensure no memory access is done after the frame is destroyed.  */
+       emit_insn (gen_frame_blockage ());
+ 
        if (size <= 4096)
  	emit_insn (gen_stack_pointer_inc (GEN_INT (size)));
        else if (size <= 8192)
*************** sparc_flat_expand_epilogue (bool for_eh)
*** 6304,6318 ****
      ; /* do nothing.  */
    else if (frame_pointer_needed)
      {
!       /* Make sure the frame is destroyed after everything else is done.  */
!       emit_insn (gen_blockage ());
  
        emit_move_insn (stack_pointer_rtx, gen_rtx_REG (Pmode, 1));
      }
    else
      {
        /* Likewise.  */
!       emit_insn (gen_blockage ());
  
        if (size <= 4096)
  	emit_insn (gen_stack_pointer_inc (GEN_INT (size)));
--- 6305,6319 ----
      ; /* do nothing.  */
    else if (frame_pointer_needed)
      {
!       /* Ensure no memory access is done after the frame is destroyed.  */
!       emit_insn (gen_frame_blockage ());
  
        emit_move_insn (stack_pointer_rtx, gen_rtx_REG (Pmode, 1));
      }
    else
      {
        /* Likewise.  */
!       emit_insn (gen_frame_blockage ());
  
        if (size <= 4096)
  	emit_insn (gen_stack_pointer_inc (GEN_INT (size)));
*************** sparc_expand_vec_perm_bmask (machine_mod
*** 13035,13043 ****
  /* Implement TARGET_VEC_PERM_CONST.  */
  
  static bool
! sparc_vectorize_vec_perm_const (machine_mode vmode, rtx target, rtx op0,
! 				rtx op1, const vec_perm_indices &sel)
  {
    if (!TARGET_VIS2)
      return false;
  
--- 13036,13048 ----
  /* Implement TARGET_VEC_PERM_CONST.  */
  
  static bool
! sparc_vectorize_vec_perm_const (machine_mode vmode, machine_mode op_mode,
! 				rtx target, rtx op0, rtx op1,
! 				const vec_perm_indices &sel)
  {
+   if (vmode != op_mode)
+     return false;
+ 
    if (!TARGET_VIS2)
      return false;
  
*************** sparc_expand_conditional_move (machine_m
*** 13657,13674 ****
  void
  sparc_expand_vcond (machine_mode mode, rtx *operands, int ccode, int fcode)
  {
    rtx mask, cop0, cop1, fcmp, cmask, bshuf, gsr;
-   enum rtx_code code = GET_CODE (operands[3]);
  
    mask = gen_reg_rtx (Pmode);
    cop0 = operands[4];
    cop1 = operands[5];
    if (code == LT || code == GE)
      {
-       rtx t;
- 
        code = swap_condition (code);
!       t = cop0; cop0 = cop1; cop1 = t;
      }
  
    gsr = gen_rtx_REG (DImode, SPARC_GSR_REG);
--- 13662,13677 ----
  void
  sparc_expand_vcond (machine_mode mode, rtx *operands, int ccode, int fcode)
  {
+   enum rtx_code code = signed_condition (GET_CODE (operands[3]));
    rtx mask, cop0, cop1, fcmp, cmask, bshuf, gsr;
  
    mask = gen_reg_rtx (Pmode);
    cop0 = operands[4];
    cop1 = operands[5];
    if (code == LT || code == GE)
      {
        code = swap_condition (code);
!       std::swap (cop0, cop1);
      }
  
    gsr = gen_rtx_REG (DImode, SPARC_GSR_REG);
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc.h gcc-13.1.0/gcc/config/sparc/sparc.h
*** gcc-12.2.0/gcc/config/sparc/sparc.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Definitions of target machine for GNU compiler, for Sun SPARC.
!    Copyright (C) 1987-2022 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com).
     64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
--- 1,5 ----
  /* Definitions of target machine for GNU compiler, for Sun SPARC.
!    Copyright (C) 1987-2023 Free Software Foundation, Inc.
     Contributed by Michael Tiemann (tiemann@cygnus.com).
     64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
     at Cygnus Support.
*************** along with GCC; see the file COPYING3.
*** 27,36 ****
  
  #define TARGET_CPU_CPP_BUILTINS() sparc_target_macros ()
  
- /* Target hooks for D language.  */
- #define TARGET_D_CPU_VERSIONS sparc_d_target_versions
- #define TARGET_D_REGISTER_CPU_TARGET_INFO sparc_d_register_target_info
- 
  /* Specify this in a cover file to provide bi-architecture (32/64) support.  */
  /* #define SPARC_BI_ARCH */
  
--- 27,32 ----
*************** do {									   \
*** 1510,1523 ****
  #define ADDITIONAL_REGISTER_NAMES \
  {{"ccr", SPARC_ICC_REG}, {"cc", SPARC_ICC_REG}}
  
- /* On Sun 4, this limit is 2048.  We use 1000 to be safe, since the length
-    can run past this up to a continuation point.  Once we used 1500, but
-    a single entry in C++ can run more than 500 bytes, due to the length of
-    mangled symbol names.  dbxout.cc should really be fixed to do
-    continuations when they are actually needed instead of trying to
-    guess...  */
- #define DBX_CONTIN_LENGTH 1000
- 
  /* This is how to output a command to make the user-level label named NAME
     defined for reference from other files.  */
  
--- 1506,1511 ----
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc.md gcc-13.1.0/gcc/config/sparc/sparc.md
*** gcc-12.2.0/gcc/config/sparc/sparc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Machine description for SPARC.
! ;; Copyright (C) 1987-2022 Free Software Foundation, Inc.
  ;; Contributed by Michael Tiemann (tiemann@cygnus.com)
  ;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
  ;; at Cygnus Support.
--- 1,5 ----
  ;; Machine description for SPARC.
! ;; Copyright (C) 1987-2023 Free Software Foundation, Inc.
  ;; Contributed by Michael Tiemann (tiemann@cygnus.com)
  ;; 64-bit SPARC-V9 support by Michael Tiemann, Jim Wilson, and Doug Evans,
  ;; at Cygnus Support.
*************** visl")
*** 9033,9038 ****
--- 9033,9082 ----
    DONE;
  })
  
+ (define_expand "vcondv8qiv8qi"
+   [(match_operand:V8QI 0 "register_operand" "")
+    (match_operand:V8QI 1 "register_operand" "")
+    (match_operand:V8QI 2 "register_operand" "")
+    (match_operator 3 ""
+      [(match_operand:V8QI 4 "register_operand" "")
+       (match_operand:V8QI 5 "register_operand" "")])]
+   "TARGET_VIS4"
+ {
+   sparc_expand_vcond (V8QImode, operands, UNSPEC_CMASK8, UNSPEC_FCMP);
+   DONE;
+ })
+ 
+ (define_insn "fucmp<gcond:code>8<P:mode>_vis"
+   [(set (match_operand:P 0 "register_operand" "=r")
+ 	(unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
+ 		               (match_operand:V8QI 2 "register_operand" "e"))]
+ 	 UNSPEC_FUCMP))]
+   "TARGET_VIS3"
+   "fucmp<gcond:code>8\t%1, %2, %0"
+   [(set_attr "type" "viscmp")])
+ 
+ (define_insn "fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"
+   [(set (match_operand:P 0 "register_operand" "=r")
+ 	(unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
+ 		              (match_operand:GCM 2 "register_operand" "e"))]
+ 	 UNSPEC_FUCMP))]
+   "TARGET_VIS4"
+   "fpcmpu<gcond:code><GCM:gcm_name>\t%1, %2, %0"
+   [(set_attr "type" "viscmp")])
+ 
+ (define_expand "vcondu<GCM:mode><GCM:mode>"
+   [(match_operand:GCM 0 "register_operand" "")
+    (match_operand:GCM 1 "register_operand" "")
+    (match_operand:GCM 2 "register_operand" "")
+    (match_operator 3 ""
+      [(match_operand:GCM 4 "register_operand" "")
+       (match_operand:GCM 5 "register_operand" "")])]
+   "TARGET_VIS4"
+ {
+   sparc_expand_vcond (<MODE>mode, operands, UNSPEC_CMASK<gcm_name>, UNSPEC_FUCMP);
+   DONE;
+ })
+ 
  (define_expand "vconduv8qiv8qi"
    [(match_operand:V8QI 0 "register_operand" "")
     (match_operand:V8QI 1 "register_operand" "")
*************** visl")
*** 9351,9374 ****
   [(set_attr "type" "fga")
    (set_attr "subtype" "other")])
  
- (define_insn "fucmp<gcond:code>8<P:mode>_vis"
-   [(set (match_operand:P 0 "register_operand" "=r")
- 	(unspec:P [(gcond:V8QI (match_operand:V8QI 1 "register_operand" "e")
- 		               (match_operand:V8QI 2 "register_operand" "e"))]
- 	 UNSPEC_FUCMP))]
-   "TARGET_VIS3"
-   "fucmp<gcond:code>8\t%1, %2, %0"
-   [(set_attr "type" "viscmp")])
- 
- (define_insn "fpcmpu<gcond:code><GCM:gcm_name><P:mode>_vis"
-   [(set (match_operand:P 0 "register_operand" "=r")
- 	(unspec:P [(gcond:GCM (match_operand:GCM 1 "register_operand" "e")
- 		              (match_operand:GCM 2 "register_operand" "e"))]
- 	 UNSPEC_FUCMP))]
-   "TARGET_VIS4"
-   "fpcmpu<gcond:code><GCM:gcm_name>\t%1, %2, %0"
-   [(set_attr "type" "viscmp")])
- 
  (define_insn "*naddsf3"
    [(set (match_operand:SF 0 "register_operand" "=f")
          (neg:SF (plus:SF (match_operand:SF 1 "register_operand" "f")
--- 9395,9400 ----
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparc.opt gcc-13.1.0/gcc/config/sparc/sparc.opt
*** gcc-12.2.0/gcc/config/sparc/sparc.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparc.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the SPARC port of the compiler
  ;
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the SPARC port of the compiler
  ;
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sparclet.md gcc-13.1.0/gcc/config/sparc/sparclet.md
*** gcc-12.2.0/gcc/config/sparc/sparclet.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sparclet.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for SPARClet.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for SPARClet.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/supersparc.md gcc-13.1.0/gcc/config/sparc/supersparc.md
*** gcc-12.2.0/gcc/config/sparc/supersparc.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/supersparc.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for SuperSPARC.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for SuperSPARC.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sync.md gcc-13.1.0/gcc/config/sparc/sync.md
*** gcc-12.2.0/gcc/config/sparc/sync.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sync.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; GCC machine description for SPARC synchronization instructions.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; GCC machine description for SPARC synchronization instructions.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/sysv4.h gcc-13.1.0/gcc/config/sparc/sysv4.h
*** gcc-12.2.0/gcc/config/sparc/sysv4.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/sysv4.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Target definitions for GNU compiler for SPARC running System V.4
!    Copyright (C) 1991-2022 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@monkeys.com).
  
  This file is part of GCC.
--- 1,5 ----
  /* Target definitions for GNU compiler for SPARC running System V.4
!    Copyright (C) 1991-2023 Free Software Foundation, Inc.
     Contributed by Ron Guilmette (rfg@monkeys.com).
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-elf gcc-13.1.0/gcc/config/sparc/t-elf
*** gcc-12.2.0/gcc/config/sparc/t-elf	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-elf	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1997-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1997-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-leon gcc-13.1.0/gcc/config/sparc/t-leon
*** gcc-12.2.0/gcc/config/sparc/t-leon	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-leon	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2010-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-leon3 gcc-13.1.0/gcc/config/sparc/t-leon3
*** gcc-12.2.0/gcc/config/sparc/t-leon3	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-leon3	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2010-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-linux64 gcc-13.1.0/gcc/config/sparc/t-linux64
*** gcc-12.2.0/gcc/config/sparc/t-linux64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-linux64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 1998-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 1998-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-rtems gcc-13.1.0/gcc/config/sparc/t-rtems
*** gcc-12.2.0/gcc/config/sparc/t-rtems	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-rtems	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-rtems-64 gcc-13.1.0/gcc/config/sparc/t-rtems-64
*** gcc-12.2.0/gcc/config/sparc/t-rtems-64	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-rtems-64	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/t-sparc gcc-13.1.0/gcc/config/sparc/t-sparc
*** gcc-12.2.0/gcc/config/sparc/t-sparc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/t-sparc	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  # General rules that all sparc/ targets must have.
  #
! # Copyright (C) 2011-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,6 ----
  # General rules that all sparc/ targets must have.
  #
! # Copyright (C) 2011-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/tso.h gcc-13.1.0/gcc/config/sparc/tso.h
*** gcc-12.2.0/gcc/config/sparc/tso.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/tso.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Include fragment for Sparc TSO operating systems.
!    Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,5 ----
  /* Include fragment for Sparc TSO operating systems.
!    Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/ultra1_2.md gcc-13.1.0/gcc/config/sparc/ultra1_2.md
*** gcc-12.2.0/gcc/config/sparc/ultra1_2.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/ultra1_2.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for UltraSPARC-I/II.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for UltraSPARC-I/II.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/ultra3.md gcc-13.1.0/gcc/config/sparc/ultra3.md
*** gcc-12.2.0/gcc/config/sparc/ultra3.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/ultra3.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Scheduling description for UltraSPARC-III.
! ;;   Copyright (C) 2002-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Scheduling description for UltraSPARC-III.
! ;;   Copyright (C) 2002-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/visintrin.h gcc-13.1.0/gcc/config/sparc/visintrin.h
*** gcc-12.2.0/gcc/config/sparc/visintrin.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/visintrin.h	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! /* Copyright (C) 2011-2022 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
--- 1,4 ----
! /* Copyright (C) 2011-2023 Free Software Foundation, Inc.
  
     This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/sparc/vxworks.h gcc-13.1.0/gcc/config/sparc/vxworks.h
*** gcc-12.2.0/gcc/config/sparc/vxworks.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/sparc/vxworks.h	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  /* Definitions of target machine for GNU compiler,
     for SPARC targeting the VxWorks run time environment.
!    Copyright (C) 2007-2022 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
--- 1,6 ----
  /* Definitions of target machine for GNU compiler,
     for SPARC targeting the VxWorks run time environment.
!    Copyright (C) 2007-2023 Free Software Foundation, Inc.
  
  This file is part of GCC.
  
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/constraints.md gcc-13.1.0/gcc/config/stormy16/constraints.md
*** gcc-12.2.0/gcc/config/stormy16/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/constraints.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Constraint definitions for XSTORMY16.
! ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Constraint definitions for XSTORMY16.
! ;; Copyright (C) 2011-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/predicates.md gcc-13.1.0/gcc/config/stormy16/predicates.md
*** gcc-12.2.0/gcc/config/stormy16/predicates.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/predicates.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; Predicate definitions for XSTORMY16.
! ;; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
--- 1,5 ----
  ;; Predicate definitions for XSTORMY16.
! ;; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;;
  ;; This file is part of GCC.
  ;;
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/stormy-abi gcc-13.1.0/gcc/config/stormy16/stormy-abi
*** gcc-12.2.0/gcc/config/stormy16/stormy-abi	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/stormy-abi	Wed Apr 26 07:09:39 2023
*************** means that overflow is reported for eith
*** 167,173 ****
  overflow.
  
  
! Copyright (C) 2001-2022 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
--- 167,173 ----
  overflow.
  
  
! Copyright (C) 2001-2023 Free Software Foundation, Inc.
  
  Copying and distribution of this file, with or without modification,
  are permitted in any medium without royalty provided the copyright
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/stormy16-protos.h gcc-13.1.0/gcc/config/stormy16/stormy16-protos.h
*** gcc-12.2.0/gcc/config/stormy16/stormy16-protos.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/stormy16-protos.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Prototypes for exported functions defined in xstormy16.c
!    Copyright (C) 2000-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
--- 1,5 ----
  /* Prototypes for exported functions defined in xstormy16.c
!    Copyright (C) 2000-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
  This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/stormy16.cc gcc-13.1.0/gcc/config/stormy16/stormy16.cc
*** gcc-12.2.0/gcc/config/stormy16/stormy16.cc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/stormy16.cc	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Xstormy16 target functions.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Xstormy16 target functions.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/stormy16.h gcc-13.1.0/gcc/config/stormy16/stormy16.h
*** gcc-12.2.0/gcc/config/stormy16/stormy16.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/stormy16.h	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  /* Xstormy16 cpu description.
!    Copyright (C) 1997-2022 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
--- 1,5 ----
  /* Xstormy16 cpu description.
!    Copyright (C) 1997-2023 Free Software Foundation, Inc.
     Contributed by Red Hat, Inc.
  
     This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/stormy16.md gcc-13.1.0/gcc/config/stormy16/stormy16.md
*** gcc-12.2.0/gcc/config/stormy16/stormy16.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/stormy16.md	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  ;; XSTORMY16 Machine description template
! ;; Copyright (C) 1997-2022 Free Software Foundation, Inc.
  ;; Contributed by Red Hat, Inc.
  
  ;; This file is part of GCC.
--- 1,5 ----
  ;; XSTORMY16 Machine description template
! ;; Copyright (C) 1997-2023 Free Software Foundation, Inc.
  ;; Contributed by Red Hat, Inc.
  
  ;; This file is part of GCC.
diff -Nrcpad gcc-12.2.0/gcc/config/stormy16/stormy16.opt gcc-13.1.0/gcc/config/stormy16/stormy16.opt
*** gcc-12.2.0/gcc/config/stormy16/stormy16.opt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/stormy16/stormy16.opt	Wed Apr 26 07:09:39 2023
***************
*** 1,6 ****
  ; Options for the XSTORMY16 port of the compiler.
  
! ; Copyright (C) 2005-2022 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
--- 1,6 ----
  ; Options for the XSTORMY16 port of the compiler.
  
! ; Copyright (C) 2005-2023 Free Software Foundation, Inc.
  ;
  ; This file is part of GCC.
  ;
diff -Nrcpad gcc-12.2.0/gcc/config/t-darwin gcc-13.1.0/gcc/config/t-darwin
*** gcc-12.2.0/gcc/config/t-darwin	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-darwin	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-dragonfly gcc-13.1.0/gcc/config/t-dragonfly
*** gcc-12.2.0/gcc/config/t-dragonfly	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-dragonfly	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2020-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-freebsd gcc-13.1.0/gcc/config/t-freebsd
*** gcc-12.2.0/gcc/config/t-freebsd	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-freebsd	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2020-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2020-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-glibc gcc-13.1.0/gcc/config/t-glibc
*** gcc-12.2.0/gcc/config/t-glibc	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-glibc	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2012-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2012-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
*************** glibc-c.o: config/glibc-c.cc
*** 20,25 ****
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
! glibc-d.o: config/glibc-d.cc
  	$(COMPILE) $<
  	$(POSTCOMPILE)
--- 20,33 ----
  	$(COMPILE) $<
  	$(POSTCOMPILE)
  
! gnu-d.o: config/gnu-d.cc
! 	$(COMPILE) $<
! 	$(POSTCOMPILE)
! 
! kfreebsd-d.o: config/kfreebsd-d.cc
! 	$(COMPILE) $<
! 	$(POSTCOMPILE)
! 
! kopensolaris-d.o: config/kopensolaris-d.cc
  	$(COMPILE) $<
  	$(POSTCOMPILE)
diff -Nrcpad gcc-12.2.0/gcc/config/t-libunwind gcc-13.1.0/gcc/config/t-libunwind
*** gcc-12.2.0/gcc/config/t-libunwind	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-libunwind	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-linux gcc-13.1.0/gcc/config/t-linux
*** gcc-12.2.0/gcc/config/t-linux	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-linux	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 19,21 ****
--- 19,25 ----
  linux.o: $(srcdir)/config/linux.cc
  	  $(COMPILE) $<
  	  $(POSTCOMPILE)
+ 
+ linux-d.o: $(srcdir)/config/linux-d.cc
+ 	  $(COMPILE) $<
+ 	  $(POSTCOMPILE)
diff -Nrcpad gcc-12.2.0/gcc/config/t-lynx gcc-13.1.0/gcc/config/t-lynx
*** gcc-12.2.0/gcc/config/t-lynx	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-lynx	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-netbsd gcc-13.1.0/gcc/config/t-netbsd
*** gcc-12.2.0/gcc/config/t-netbsd	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-netbsd	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2017-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2017-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-pnt16-warn gcc-13.1.0/gcc/config/t-pnt16-warn
*** gcc-12.2.0/gcc/config/t-pnt16-warn	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-pnt16-warn	Wed Apr 26 07:09:39 2023
***************
*** 1,5 ****
  # -Werror overrides for targets with 16 bit pointers
! # Copyright (C) 2010-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,5 ----
  # -Werror overrides for targets with 16 bit pointers
! # Copyright (C) 2010-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-sol2 gcc-13.1.0/gcc/config/t-sol2
*** gcc-12.2.0/gcc/config/t-sol2	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-sol2	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2004-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2004-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/t-vxworks gcc-13.1.0/gcc/config/t-vxworks
*** gcc-12.2.0/gcc/config/t-vxworks	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-vxworks	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2002-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2002-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
***************
*** 16,21 ****
--- 16,25 ----
  # along with GCC; see the file COPYING3.  If not see
  # <http://www.gnu.org/licenses/>.
  
+ vxworks-driver.o: $(srcdir)/config/vxworks-driver.cc
+ 	$(COMPILE) $<
+ 	$(POSTCOMPILE)
+ 
  vxworks.o: $(srcdir)/config/vxworks.cc
  	$(COMPILE) $<
  	$(POSTCOMPILE)
diff -Nrcpad gcc-12.2.0/gcc/config/t-winnt gcc-13.1.0/gcc/config/t-winnt
*** gcc-12.2.0/gcc/config/t-winnt	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/t-winnt	Wed Apr 26 07:09:39 2023
***************
*** 1,4 ****
! # Copyright (C) 2013-2022 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
--- 1,4 ----
! # Copyright (C) 2013-2023 Free Software Foundation, Inc.
  #
  # This file is part of GCC.
  #
diff -Nrcpad gcc-12.2.0/gcc/config/tilegx/constraints.md gcc-13.1.0/gcc/config/tilegx/constraints.md
*** gcc-12.2.0/gcc/config/tilegx/constraints.md	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/tilegx/constraints.md	Thu Jan  1 00:00:00 1970
***************
*** 1,115 ****
- ;; Constraint definitions for Tilera TILE-Gx.
- ;; Copyright (C) 2011-2022 Free Software Foundation, Inc.
- ;; Contributed by Walter Lee (walt@tilera.com)
- ;;
- ;; This file is part of GCC.
- ;;
- ;; GCC is free software; you can redistribute it and/or modify it
- ;; under the terms of the GNU General Public License as published
- ;; by the Free Software Foundation; either version 3, or (at your
- ;; option) any later version.
- ;;
- ;; GCC is distributed in the hope that it will be useful, but WITHOUT
- ;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
- ;; or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
- ;; License for more details.
- ;;
- ;; You should have received a copy of the GNU General Public License
- ;; along with GCC; see the file COPYING3.  If not see
- ;; <http://www.gnu.org/licenses/>.
- 
- (define_register_constraint "R00" "R0_REGS"  "r0")
- (define_register_constraint "R01" "R1_REGS"  "r1")
- (define_register_constraint "R02" "R2_REGS"  "r2")
- (define_register_constraint "R03" "R3_REGS"  "r3")
- (define_register_constraint "R04" "R4_REGS"  "r4")
- (define_register_constraint "R05" "R5_REGS"  "r5")
- (define_register_constraint "R06" "R6_REGS"  "r6")
- (define_register_constraint "R07" "R7_REGS"  "r7")
- (define_register_constraint "R08" "R8_REGS"  "r8")
- (define_register_constraint "R09" "R9_REGS"  "r9")
- (define_register_constraint "R10" "R10_REGS" "r10")
- 
- (define_constraint "I"
-   "A signed 8 bit constant"
-   (and (match_code "const_int")
-        (match_test "ival >= -128 && ival <= 127")))
- 
- (define_constraint "J"
-   "Signed 16-bit integer constant"
-   (and (match_code "const_int")
-        (match_test "ival >= -32768 && ival <= 32767")))
- 
- (define_constraint "K"
-   "Unsigned 16-bit integer constant"
-   (and (match_code "const_int")
-        (match_test "(ival >= 0 && ival <= 65535)")))
- 
- (define_constraint "L"
-   "Integer constant that fits in one signed byte when incremented"
-   (and (match_code "const_int")
-        (match_test "ival >= -129 && ival <= 126")))
- 
- (define_constraint "M"
-   "A bit mask suitable for 'bfins'"
-   (and (match_code "const_int")
-        (match_test "tilegx_bitfield_operand_p (ival, NULL, NULL)")))
- 
- (define_constraint "N"
-   "Integer constant that is a byte tiled out eight times"
-   (and (match_code "const_int")
-        (match_test "(ival == (ival & 0xFF) * 0x0101010101010101LL)")))
- 
- (define_constraint "O"
-  "The integer zero constant"
-  (and (match_code "const_int")
-       (match_test "ival == 0")))
- 
- (define_constraint "P"
-   "Integer constant that is a sign-extended byte tiled out as four shorts"
-   (and (match_code "const_int")
-        (match_test "(ival
-                      == ((trunc_int_for_mode (ival, QImode) & 0xFFFF)
-                          * 0x0001000100010001LL))")))
- 
- (define_constraint "Q"
-   "Integer constant that fits in one signed byte when incremented, but not -1"
-   (and (match_code "const_int")
-        (match_test "ival >= -129 && ival <= 126 && ival != -1")))
- 
- (define_constraint "S"
-   "Integer constant that has all 1 bits consecutive and starting at bit 0"
-   (and (match_code "const_int")
-        (match_test "ival != 0 && (ival & (ival + 1)) == 0")))
- 
- (define_constraint "T"
-   "An unspec wrapper for a symbolc operand"
-   (ior (match_operand 0 "const_last_symbolic_operand")
-        (match_operand 0 "const_symbolic_operand")))
- 
- (define_memory_constraint "U"
-   "Non-auto-incrementing memory"
-   (and (match_code "mem")
-        (match_test "GET_RTX_CLASS (GET_CODE (XEXP (op, 0))) != RTX_AUTOINC")))
- 
- (define_constraint "W"
-   "An 8-element vector constant with identical elements"
-   (and (match_code "const_vector")
-        (match_test "CONST_VECTOR_NUNITS (op) == 8")
-        (match_test "const_vec_duplicate_p (op)")))
- 
- (define_constraint "Y"
-   "A 4-element vector constant with identical elements"
-   (and (match_code "const_vector")
-        (match_test "CONST_VECTOR_NUNITS (op) == 4")
-        (match_test "const_vec_duplicate_p (op)")))
- 
- (define_constraint "Z0"
-  "The integer constant 0xffffffff"
-  (and (match_code "const_int")
-       (match_test "ival == 0xffffffff")))
- 
- (define_constraint "Z1"
-  "The integer constant 0xffffffff00000000"
-  (and (match_code "const_int")
-       (match_test "ival == (HOST_WIDE_INT)0xffffffff00000000LL")))
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/tilegx/feedback.h gcc-13.1.0/gcc/config/tilegx/feedback.h
*** gcc-12.2.0/gcc/config/tilegx/feedback.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/tilegx/feedback.h	Thu Jan  1 00:00:00 1970
***************
*** 1,14 ****
- #ifndef _FEEDBACK_H
- #define _FEEDBACK_H 1
- 
- #ifdef __ASSEMBLER__
- 
- /* Stub defines for feedback instrumentation.  */
- #define FEEDBACK_ENTER_EXPLICIT(FUNCNAME, SECNAME, SIZE)
- #define FEEDBACK_ENTER(FUNCNAME)
- #define FEEDBACK_REENTER(FUNCNAME)
- #define FEEDBACK_ENTRY(FUNCNAME, SECNAME, SIZE)
- 
- #endif /* __ASSEMBLER__ */
- 
- #endif /* _FEEDBACK_H */
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/tilegx/linux.h gcc-13.1.0/gcc/config/tilegx/linux.h
*** gcc-12.2.0/gcc/config/tilegx/linux.h	Fri Aug 19 08:09:52 2022
--- gcc-13.1.0/gcc/config/tilegx/linux.h	Thu Jan  1 00:00:00 1970
***************
*** 1,83 ****
- /* Definitions for TILE-Gx running Linux-based GNU systems with ELF.
-    Copyright (C) 2011-2022 Free Software Foundation, Inc.
-    Contributed by Walter Lee (walt@tilera.com)
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
- 
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- #undef CPP_SPEC
- #define CPP_SPEC "%{pthread:-D_REENTRANT}"
- 
- #undef ASM_SPEC
- #define ASM_SPEC "%(endian_spec) %{m32:--32} %{m64:--64}"
- 
- #undef	LINK_SPEC
- #define LINK_SPEC "%(endian_spec) \
-   %{m64:-m elf64tilegx} %{m32:-m elf32tilegx} \
-   %{shared:-shared} \
-   %{!shared: \
-     %{!static: \
-       %{rdynamic:-export-dynamic} \
-       -dynamic-linker \
-         %{ m32: /lib32/ld.so.1} \
-         %{!m32: /lib/ld.so.1}} \
-     %{static:-static}}"
- 
- #define MULTILIB_DEFAULTS { "m64" }
- 
- #define NO_PROFILE_COUNTERS	1
- 
- #undef MCOUNT_NAME
- #define MCOUNT_NAME "__mcount"
- 
- #undef NEED_INDICATE_EXEC_STACK
- #define NEED_INDICATE_EXEC_STACK 1
- 
- #ifdef TARGET_LIBC_PROVIDES_SSP
- /* TILE-Gx glibc provides __stack_chk_guard two pointer-size words before
-    tp. */
- #define TARGET_THREAD_SSP_OFFSET (-2 * GET_MODE_SIZE (ptr_mode))
- #endif
- 
- /* For __clear_cache in libgcc2.c.  */
- #ifdef IN_LIBGCC2
- 
- /* Use the minimum page size of 4K.  Alternatively we can call
-    getpagesize() but it introduces a libc dependence.
-    See Linux arch/tile/include/uapi/arch/icache.h for more commentary.  */
- #undef CLEAR_INSN_CACHE
- #define CLEAR_INSN_CACHE(BEG, END)                                      \
- {                                                                       \
-   long size = (long) (END) - (long) (BEG);                              \
-   if (size)                                                             \
-     {                                                                   \
-       const char *p = (const char *) ((unsigned long) (BEG) & -64L);    \
-       const char *end = p + (size < 4096 ? size : 4096) - 1;            \
-       __insn_mf ();                                                     \
-       for (; p <= end; p += 64)                                         \
-         __insn_icoh (p);                                                \
-       __insn_drain ();                                                  \
-     }                                                                   \
- }
- 
- #else
- 
- /* define CLEAR_INSN_CACHE so that gcc knows to expand __builtin__clear_cache
-    to the libraray call.  */
- #undef CLEAR_INSN_CACHE
- #define CLEAR_INSN_CACHE 1
- 
- #endif
--- 0 ----
diff -Nrcpad gcc-12.2.0/gcc/config/tilegx/mul-tables.cc gcc-13.1.0/gcc/config/tilegx/mul-tables.cc
*** gcc-12.2.0/gcc/config/tilegx/mul-tables.cc	Fri Aug 19 08:15:35 2022
--- gcc-13.1.0/gcc/config/tilegx/mul-tables.cc	Thu Jan  1 00:00:00 1970
***************
*** 1,27249 ****
- /* Constant multiply table for TILE-Gx.
-    Copyright (C) 2011-2022 Free Software Foundation, Inc.
-    Contributed by Walter Lee (walt@tilera.com)
- 
-    This file is part of GCC.
- 
-    GCC is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published
-    by the Free Software Foundation; either version 3, or (at your
-    option) any later version.
- 
-    GCC is distributed in the hope that it will be useful, but WITHOUT
-    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
-    License for more details.
- 
-    You should have received a copy of the GNU General Public License
-    along with GCC; see the file COPYING3.  If not see
-    <http://www.gnu.org/licenses/>.  */
- 
- /* Note this file is auto-generated from gen-mul-tables.cc.
-    Make any required changes there.  */
- 
- #define IN_TARGET_CODE 1
- 
- #include "config.h"
- #include "system.h"
- #include "coretypes.h"
- #include "backend.h"
- #include "rtl.h"
- #include "expmed.h"
- #include "tilegx-multiply.h"
- 
- const enum insn_code tilegx_multiply_insn_seq_decode_opcode[] = {
-   CODE_FOR_nothing /* must be first */ ,
-   CODE_FOR_adddi3,
-   CODE_FOR_subdi3,
-   CODE_FOR_insn_shl1add,
-   CODE_FOR_insn_shl2add,
-   CODE_FOR_insn_shl3add,
-   CODE_FOR_ashldi3
- };
- 
- const struct tilegx_multiply_insn_seq tilegx_multiply_insn_seq_table[] = {
-   {-9223372036854775807ll - 1 /* 0x8000000000000000 */ ,
-    {{6, 1, 63}}			/* shli r2, r1, 63 */
-    },
-   {-9223372036854775807ll /* 0x8000000000000001 */ ,
-    {{6, 1, 63},			/* shli r2, r1, 63 */
-     {1, 1, 2}}			/* add r3, r1, r2 */
-    },
-   {-9223372036854775806ll /* 0x8000000000000002 */ ,
-    {{6, 1, 63},			/* shli r2, r1, 63 */
-     {3, 1, 2}}			/* shl1add r3, r1, r2 */
-    },
-   {-9223372036854775805ll /* 0x8000000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775804ll /* 0x8000000000000004 */ ,
-    {{6, 1, 63},			/* shli r2, r1, 63 */
-     {4, 1, 2}}			/* shl2add r3, r1, r2 */
-    },
-   {-9223372036854775803ll /* 0x8000000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775802ll /* 0x8000000000000006 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-9223372036854775801ll /* 0x8000000000000007 */ ,
-    {{6, 1, 63},			/* shli r2, r1, 63 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {5, 1, 3}}			/* shl3add r4, r1, r3 */
-    },
-   {-9223372036854775800ll /* 0x8000000000000008 */ ,
-    {{6, 1, 63},			/* shli r2, r1, 63 */
-     {5, 1, 2}}			/* shl3add r3, r1, r2 */
-    },
-   {-9223372036854775799ll /* 0x8000000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775798ll /* 0x800000000000000a */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-9223372036854775792ll /* 0x8000000000000010 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775776ll /* 0x8000000000000020 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775744ll /* 0x8000000000000040 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775680ll /* 0x8000000000000080 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775552ll /* 0x8000000000000100 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854775296ll /* 0x8000000000000200 */ ,
-    {{6, 1, 9},			/* shli r2, r1, 9 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854774784ll /* 0x8000000000000400 */ ,
-    {{6, 1, 10},			/* shli r2, r1, 10 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854773760ll /* 0x8000000000000800 */ ,
-    {{6, 1, 11},			/* shli r2, r1, 11 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854771712ll /* 0x8000000000001000 */ ,
-    {{6, 1, 12},			/* shli r2, r1, 12 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854767616ll /* 0x8000000000002000 */ ,
-    {{6, 1, 13},			/* shli r2, r1, 13 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854759424ll /* 0x8000000000004000 */ ,
-    {{6, 1, 14},			/* shli r2, r1, 14 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854743040ll /* 0x8000000000008000 */ ,
-    {{6, 1, 15},			/* shli r2, r1, 15 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854710272ll /* 0x8000000000010000 */ ,
-    {{6, 1, 16},			/* shli r2, r1, 16 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854644736ll /* 0x8000000000020000 */ ,
-    {{6, 1, 17},			/* shli r2, r1, 17 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854513664ll /* 0x8000000000040000 */ ,
-    {{6, 1, 18},			/* shli r2, r1, 18 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036854251520ll /* 0x8000000000080000 */ ,
-    {{6, 1, 19},			/* shli r2, r1, 19 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036853727232ll /* 0x8000000000100000 */ ,
-    {{6, 1, 20},			/* shli r2, r1, 20 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036852678656ll /* 0x8000000000200000 */ ,
-    {{6, 1, 21},			/* shli r2, r1, 21 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036850581504ll /* 0x8000000000400000 */ ,
-    {{6, 1, 22},			/* shli r2, r1, 22 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036846387200ll /* 0x8000000000800000 */ ,
-    {{6, 1, 23},			/* shli r2, r1, 23 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036837998592ll /* 0x8000000001000000 */ ,
-    {{6, 1, 24},			/* shli r2, r1, 24 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036821221376ll /* 0x8000000002000000 */ ,
-    {{6, 1, 25},			/* shli r2, r1, 25 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036787666944ll /* 0x8000000004000000 */ ,
-    {{6, 1, 26},			/* shli r2, r1, 26 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036720558080ll /* 0x8000000008000000 */ ,
-    {{6, 1, 27},			/* shli r2, r1, 27 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036586340352ll /* 0x8000000010000000 */ ,
-    {{6, 1, 28},			/* shli r2, r1, 28 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372036317904896ll /* 0x8000000020000000 */ ,
-    {{6, 1, 29},			/* shli r2, r1, 29 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372035781033984ll /* 0x8000000040000000 */ ,
-    {{6, 1, 30},			/* shli r2, r1, 30 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372034707292160ll /* 0x8000000080000000 */ ,
-    {{6, 1, 31},			/* shli r2, r1, 31 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372032559808512ll /* 0x8000000100000000 */ ,
-    {{6, 1, 32},			/* shli r2, r1, 32 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372028264841216ll /* 0x8000000200000000 */ ,
-    {{6, 1, 33},			/* shli r2, r1, 33 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372019674906624ll /* 0x8000000400000000 */ ,
-    {{6, 1, 34},			/* shli r2, r1, 34 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223372002495037440ll /* 0x8000000800000000 */ ,
-    {{6, 1, 35},			/* shli r2, r1, 35 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223371968135299072ll /* 0x8000001000000000 */ ,
-    {{6, 1, 36},			/* shli r2, r1, 36 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223371899415822336ll /* 0x8000002000000000 */ ,
-    {{6, 1, 37},			/* shli r2, r1, 37 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223371761976868864ll /* 0x8000004000000000 */ ,
-    {{6, 1, 38},			/* shli r2, r1, 38 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223371487098961920ll /* 0x8000008000000000 */ ,
-    {{6, 1, 39},			/* shli r2, r1, 39 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223370937343148032ll /* 0x8000010000000000 */ ,
-    {{6, 1, 40},			/* shli r2, r1, 40 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223369837831520256ll /* 0x8000020000000000 */ ,
-    {{6, 1, 41},			/* shli r2, r1, 41 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223367638808264704ll /* 0x8000040000000000 */ ,
-    {{6, 1, 42},			/* shli r2, r1, 42 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223363240761753600ll /* 0x8000080000000000 */ ,
-    {{6, 1, 43},			/* shli r2, r1, 43 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223354444668731392ll /* 0x8000100000000000 */ ,
-    {{6, 1, 44},			/* shli r2, r1, 44 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223336852482686976ll /* 0x8000200000000000 */ ,
-    {{6, 1, 45},			/* shli r2, r1, 45 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223301668110598144ll /* 0x8000400000000000 */ ,
-    {{6, 1, 46},			/* shli r2, r1, 46 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223231299366420480ll /* 0x8000800000000000 */ ,
-    {{6, 1, 47},			/* shli r2, r1, 47 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9223090561878065152ll /* 0x8001000000000000 */ ,
-    {{6, 1, 48},			/* shli r2, r1, 48 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9222809086901354496ll /* 0x8002000000000000 */ ,
-    {{6, 1, 49},			/* shli r2, r1, 49 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9222246136947933184ll /* 0x8004000000000000 */ ,
-    {{6, 1, 50},			/* shli r2, r1, 50 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9221120237041090560ll /* 0x8008000000000000 */ ,
-    {{6, 1, 51},			/* shli r2, r1, 51 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9218868437227405312ll /* 0x8010000000000000 */ ,
-    {{6, 1, 52},			/* shli r2, r1, 52 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9214364837600034816ll /* 0x8020000000000000 */ ,
-    {{6, 1, 53},			/* shli r2, r1, 53 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9205357638345293824ll /* 0x8040000000000000 */ ,
-    {{6, 1, 54},			/* shli r2, r1, 54 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9187343239835811840ll /* 0x8080000000000000 */ ,
-    {{6, 1, 55},			/* shli r2, r1, 55 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9151314442816847872ll /* 0x8100000000000000 */ ,
-    {{6, 1, 56},			/* shli r2, r1, 56 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-9079256848778919936ll /* 0x8200000000000000 */ ,
-    {{6, 1, 57},			/* shli r2, r1, 57 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-8935141660703064064ll /* 0x8400000000000000 */ ,
-    {{6, 1, 58},			/* shli r2, r1, 58 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-8646911284551352320ll /* 0x8800000000000000 */ ,
-    {{6, 1, 59},			/* shli r2, r1, 59 */
-     {6, 1, 63},			/* shli r3, r1, 63 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {-8070450532247928832ll /* 0x9000000000000000 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 60}}			/* shli r3, r2, 60 */
-    },
-   {-6917529027641081857ll /* 0x9fffffffffffffff */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 61},			/* shli r3, r2, 61 */
-     {2, 3, 1}}			/* sub r4, r3, r1 */
-    },
-   {-6917529027641081856ll /* 0xa000000000000000 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 61}}			/* shli r3, r2, 61 */
-    },
-   {-4611686018427387912ll /* 0xbffffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 62},			/* shli r3, r2, 62 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-4611686018427387911ll /* 0xbffffffffffffff9 */ ,
-    {{6, 1, 62},			/* shli r2, r1, 62 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4611686018427387908ll /* 0xbffffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 62},			/* shli r3, r2, 62 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-4611686018427387907ll /* 0xbffffffffffffffd */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 62},			/* shli r3, r2, 62 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {-4611686018427387906ll /* 0xbffffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 62},			/* shli r3, r2, 62 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4611686018427387905ll /* 0xbfffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4611686018427387904ll /* 0xc000000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 62}}			/* shli r3, r2, 62 */
-    },
-   {-4611686018427387903ll /* 0xc000000000000001 */ ,
-    {{6, 1, 62},			/* shli r2, r1, 62 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-4611686018427387902ll /* 0xc000000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4611686018427387901ll /* 0xc000000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4611686018427387900ll /* 0xc000000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4611686018427387899ll /* 0xc000000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4611686018427387898ll /* 0xc000000000000006 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 62},			/* shli r3, r2, 62 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4611686018427387896ll /* 0xc000000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4611686018427387895ll /* 0xc000000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 62},			/* shli r3, r1, 62 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3458764513820540929ll /* 0xcfffffffffffffff */ ,
-    {{6, 1, 60},			/* shli r2, r1, 60 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693960ll /* 0xdffffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 61},			/* shli r3, r2, 61 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-2305843009213693959ll /* 0xdffffffffffffff9 */ ,
-    {{6, 1, 61},			/* shli r2, r1, 61 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2305843009213693956ll /* 0xdffffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 61},			/* shli r3, r2, 61 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-2305843009213693955ll /* 0xdffffffffffffffd */ ,
-    {{6, 1, 61},			/* shli r2, r1, 61 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2305843009213693954ll /* 0xdffffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 61},			/* shli r3, r2, 61 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-2305843009213693953ll /* 0xdfffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693952ll /* 0xe000000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 61}}			/* shli r3, r2, 61 */
-    },
-   {-2305843009213693951ll /* 0xe000000000000001 */ ,
-    {{6, 1, 61},			/* shli r2, r1, 61 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2305843009213693950ll /* 0xe000000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693949ll /* 0xe000000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693948ll /* 0xe000000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693947ll /* 0xe000000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693944ll /* 0xe000000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2305843009213693943ll /* 0xe000000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 61},			/* shli r3, r1, 61 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1729382256910270465ll /* 0xe7ffffffffffffff */ ,
-    {{6, 1, 59},			/* shli r2, r1, 59 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846984ll /* 0xeffffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 60},			/* shli r3, r2, 60 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-1152921504606846983ll /* 0xeffffffffffffff9 */ ,
-    {{6, 1, 60},			/* shli r2, r1, 60 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1152921504606846980ll /* 0xeffffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 60},			/* shli r3, r2, 60 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-1152921504606846979ll /* 0xeffffffffffffffd */ ,
-    {{6, 1, 60},			/* shli r2, r1, 60 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1152921504606846978ll /* 0xeffffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 60},			/* shli r3, r2, 60 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-1152921504606846977ll /* 0xefffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846976ll /* 0xf000000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 60}}			/* shli r3, r2, 60 */
-    },
-   {-1152921504606846975ll /* 0xf000000000000001 */ ,
-    {{6, 1, 60},			/* shli r2, r1, 60 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-1152921504606846974ll /* 0xf000000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846973ll /* 0xf000000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846972ll /* 0xf000000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846971ll /* 0xf000000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846968ll /* 0xf000000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1152921504606846967ll /* 0xf000000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 60},			/* shli r3, r1, 60 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-864691128455135233ll /* 0xf3ffffffffffffff */ ,
-    {{6, 1, 58},			/* shli r2, r1, 58 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423496ll /* 0xf7fffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 59},			/* shli r3, r2, 59 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-576460752303423495ll /* 0xf7fffffffffffff9 */ ,
-    {{6, 1, 59},			/* shli r2, r1, 59 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-576460752303423492ll /* 0xf7fffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 59},			/* shli r3, r2, 59 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-576460752303423491ll /* 0xf7fffffffffffffd */ ,
-    {{6, 1, 59},			/* shli r2, r1, 59 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-576460752303423490ll /* 0xf7fffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 59},			/* shli r3, r2, 59 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-576460752303423489ll /* 0xf7ffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423488ll /* 0xf800000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 59}}			/* shli r3, r2, 59 */
-    },
-   {-576460752303423487ll /* 0xf800000000000001 */ ,
-    {{6, 1, 59},			/* shli r2, r1, 59 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-576460752303423486ll /* 0xf800000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423485ll /* 0xf800000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423484ll /* 0xf800000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423483ll /* 0xf800000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423480ll /* 0xf800000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-576460752303423479ll /* 0xf800000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 59},			/* shli r3, r1, 59 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-432345564227567617ll /* 0xf9ffffffffffffff */ ,
-    {{6, 1, 57},			/* shli r2, r1, 57 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711752ll /* 0xfbfffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 58},			/* shli r3, r2, 58 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-288230376151711751ll /* 0xfbfffffffffffff9 */ ,
-    {{6, 1, 58},			/* shli r2, r1, 58 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-288230376151711748ll /* 0xfbfffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 58},			/* shli r3, r2, 58 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-288230376151711747ll /* 0xfbfffffffffffffd */ ,
-    {{6, 1, 58},			/* shli r2, r1, 58 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-288230376151711746ll /* 0xfbfffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 58},			/* shli r3, r2, 58 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-288230376151711745ll /* 0xfbffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711744ll /* 0xfc00000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 58}}			/* shli r3, r2, 58 */
-    },
-   {-288230376151711743ll /* 0xfc00000000000001 */ ,
-    {{6, 1, 58},			/* shli r2, r1, 58 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-288230376151711742ll /* 0xfc00000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711741ll /* 0xfc00000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711740ll /* 0xfc00000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711739ll /* 0xfc00000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711736ll /* 0xfc00000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-288230376151711735ll /* 0xfc00000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 58},			/* shli r3, r1, 58 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-216172782113783809ll /* 0xfcffffffffffffff */ ,
-    {{6, 1, 56},			/* shli r2, r1, 56 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855880ll /* 0xfdfffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 57},			/* shli r3, r2, 57 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-144115188075855879ll /* 0xfdfffffffffffff9 */ ,
-    {{6, 1, 57},			/* shli r2, r1, 57 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-144115188075855876ll /* 0xfdfffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 57},			/* shli r3, r2, 57 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-144115188075855875ll /* 0xfdfffffffffffffd */ ,
-    {{6, 1, 57},			/* shli r2, r1, 57 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-144115188075855874ll /* 0xfdfffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 57},			/* shli r3, r2, 57 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-144115188075855873ll /* 0xfdffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855872ll /* 0xfe00000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 57}}			/* shli r3, r2, 57 */
-    },
-   {-144115188075855871ll /* 0xfe00000000000001 */ ,
-    {{6, 1, 57},			/* shli r2, r1, 57 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-144115188075855870ll /* 0xfe00000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855869ll /* 0xfe00000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855868ll /* 0xfe00000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855867ll /* 0xfe00000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855864ll /* 0xfe00000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-144115188075855863ll /* 0xfe00000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 57},			/* shli r3, r1, 57 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-108086391056891905ll /* 0xfe7fffffffffffff */ ,
-    {{6, 1, 55},			/* shli r2, r1, 55 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927944ll /* 0xfefffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 56},			/* shli r3, r2, 56 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-72057594037927943ll /* 0xfefffffffffffff9 */ ,
-    {{6, 1, 56},			/* shli r2, r1, 56 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-72057594037927940ll /* 0xfefffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 56},			/* shli r3, r2, 56 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-72057594037927939ll /* 0xfefffffffffffffd */ ,
-    {{6, 1, 56},			/* shli r2, r1, 56 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-72057594037927938ll /* 0xfefffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 56},			/* shli r3, r2, 56 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-72057594037927937ll /* 0xfeffffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927936ll /* 0xff00000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 56}}			/* shli r3, r2, 56 */
-    },
-   {-72057594037927935ll /* 0xff00000000000001 */ ,
-    {{6, 1, 56},			/* shli r2, r1, 56 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-72057594037927934ll /* 0xff00000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927933ll /* 0xff00000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927932ll /* 0xff00000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927931ll /* 0xff00000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927928ll /* 0xff00000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-72057594037927927ll /* 0xff00000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 56},			/* shli r3, r1, 56 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-54043195528445953ll /* 0xff3fffffffffffff */ ,
-    {{6, 1, 54},			/* shli r2, r1, 54 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963976ll /* 0xff7ffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 55},			/* shli r3, r2, 55 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-36028797018963975ll /* 0xff7ffffffffffff9 */ ,
-    {{6, 1, 55},			/* shli r2, r1, 55 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-36028797018963972ll /* 0xff7ffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 55},			/* shli r3, r2, 55 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-36028797018963971ll /* 0xff7ffffffffffffd */ ,
-    {{6, 1, 55},			/* shli r2, r1, 55 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-36028797018963970ll /* 0xff7ffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 55},			/* shli r3, r2, 55 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-36028797018963969ll /* 0xff7fffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963968ll /* 0xff80000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 55}}			/* shli r3, r2, 55 */
-    },
-   {-36028797018963967ll /* 0xff80000000000001 */ ,
-    {{6, 1, 55},			/* shli r2, r1, 55 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-36028797018963966ll /* 0xff80000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963965ll /* 0xff80000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963964ll /* 0xff80000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963963ll /* 0xff80000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963960ll /* 0xff80000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-36028797018963959ll /* 0xff80000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 55},			/* shli r3, r1, 55 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-27021597764222977ll /* 0xff9fffffffffffff */ ,
-    {{6, 1, 53},			/* shli r2, r1, 53 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481992ll /* 0xffbffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 54},			/* shli r3, r2, 54 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-18014398509481991ll /* 0xffbffffffffffff9 */ ,
-    {{6, 1, 54},			/* shli r2, r1, 54 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-18014398509481988ll /* 0xffbffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 54},			/* shli r3, r2, 54 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-18014398509481987ll /* 0xffbffffffffffffd */ ,
-    {{6, 1, 54},			/* shli r2, r1, 54 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-18014398509481986ll /* 0xffbffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 54},			/* shli r3, r2, 54 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-18014398509481985ll /* 0xffbfffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481984ll /* 0xffc0000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 54}}			/* shli r3, r2, 54 */
-    },
-   {-18014398509481983ll /* 0xffc0000000000001 */ ,
-    {{6, 1, 54},			/* shli r2, r1, 54 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-18014398509481982ll /* 0xffc0000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481981ll /* 0xffc0000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481980ll /* 0xffc0000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481979ll /* 0xffc0000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481976ll /* 0xffc0000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-18014398509481975ll /* 0xffc0000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 54},			/* shli r3, r1, 54 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-13510798882111489ll /* 0xffcfffffffffffff */ ,
-    {{6, 1, 52},			/* shli r2, r1, 52 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254741000ll /* 0xffdffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 53},			/* shli r3, r2, 53 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-9007199254740999ll /* 0xffdffffffffffff9 */ ,
-    {{6, 1, 53},			/* shli r2, r1, 53 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-9007199254740996ll /* 0xffdffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 53},			/* shli r3, r2, 53 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-9007199254740995ll /* 0xffdffffffffffffd */ ,
-    {{6, 1, 53},			/* shli r2, r1, 53 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-9007199254740994ll /* 0xffdffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 53},			/* shli r3, r2, 53 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-9007199254740993ll /* 0xffdfffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254740992ll /* 0xffe0000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 53}}			/* shli r3, r2, 53 */
-    },
-   {-9007199254740991ll /* 0xffe0000000000001 */ ,
-    {{6, 1, 53},			/* shli r2, r1, 53 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-9007199254740990ll /* 0xffe0000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254740989ll /* 0xffe0000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254740988ll /* 0xffe0000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254740987ll /* 0xffe0000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254740984ll /* 0xffe0000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9007199254740983ll /* 0xffe0000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 53},			/* shli r3, r1, 53 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-6755399441055745ll /* 0xffe7ffffffffffff */ ,
-    {{6, 1, 51},			/* shli r2, r1, 51 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370504ll /* 0xffeffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 52},			/* shli r3, r2, 52 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-4503599627370503ll /* 0xffeffffffffffff9 */ ,
-    {{6, 1, 52},			/* shli r2, r1, 52 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4503599627370500ll /* 0xffeffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 52},			/* shli r3, r2, 52 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-4503599627370499ll /* 0xffeffffffffffffd */ ,
-    {{6, 1, 52},			/* shli r2, r1, 52 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4503599627370498ll /* 0xffeffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 52},			/* shli r3, r2, 52 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4503599627370497ll /* 0xffefffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370496ll /* 0xfff0000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 52}}			/* shli r3, r2, 52 */
-    },
-   {-4503599627370495ll /* 0xfff0000000000001 */ ,
-    {{6, 1, 52},			/* shli r2, r1, 52 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-4503599627370494ll /* 0xfff0000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370493ll /* 0xfff0000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370492ll /* 0xfff0000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370491ll /* 0xfff0000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370488ll /* 0xfff0000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4503599627370487ll /* 0xfff0000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 52},			/* shli r3, r1, 52 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3377699720527873ll /* 0xfff3ffffffffffff */ ,
-    {{6, 1, 50},			/* shli r2, r1, 50 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685256ll /* 0xfff7fffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 51},			/* shli r3, r2, 51 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-2251799813685255ll /* 0xfff7fffffffffff9 */ ,
-    {{6, 1, 51},			/* shli r2, r1, 51 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2251799813685252ll /* 0xfff7fffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 51},			/* shli r3, r2, 51 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-2251799813685251ll /* 0xfff7fffffffffffd */ ,
-    {{6, 1, 51},			/* shli r2, r1, 51 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2251799813685250ll /* 0xfff7fffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 51},			/* shli r3, r2, 51 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-2251799813685249ll /* 0xfff7ffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685248ll /* 0xfff8000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 51}}			/* shli r3, r2, 51 */
-    },
-   {-2251799813685247ll /* 0xfff8000000000001 */ ,
-    {{6, 1, 51},			/* shli r2, r1, 51 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2251799813685246ll /* 0xfff8000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685245ll /* 0xfff8000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685244ll /* 0xfff8000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685243ll /* 0xfff8000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685240ll /* 0xfff8000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2251799813685239ll /* 0xfff8000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 51},			/* shli r3, r1, 51 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1688849860263937ll /* 0xfff9ffffffffffff */ ,
-    {{6, 1, 49},			/* shli r2, r1, 49 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842632ll /* 0xfffbfffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 50},			/* shli r3, r2, 50 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-1125899906842631ll /* 0xfffbfffffffffff9 */ ,
-    {{6, 1, 50},			/* shli r2, r1, 50 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1125899906842628ll /* 0xfffbfffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 50},			/* shli r3, r2, 50 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-1125899906842627ll /* 0xfffbfffffffffffd */ ,
-    {{6, 1, 50},			/* shli r2, r1, 50 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1125899906842626ll /* 0xfffbfffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 50},			/* shli r3, r2, 50 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-1125899906842625ll /* 0xfffbffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842624ll /* 0xfffc000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 50}}			/* shli r3, r2, 50 */
-    },
-   {-1125899906842623ll /* 0xfffc000000000001 */ ,
-    {{6, 1, 50},			/* shli r2, r1, 50 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-1125899906842622ll /* 0xfffc000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842621ll /* 0xfffc000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842620ll /* 0xfffc000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842619ll /* 0xfffc000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842616ll /* 0xfffc000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1125899906842615ll /* 0xfffc000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 50},			/* shli r3, r1, 50 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-844424930131969ll /* 0xfffcffffffffffff */ ,
-    {{6, 1, 48},			/* shli r2, r1, 48 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421320ll /* 0xfffdfffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 49},			/* shli r3, r2, 49 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-562949953421319ll /* 0xfffdfffffffffff9 */ ,
-    {{6, 1, 49},			/* shli r2, r1, 49 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-562949953421316ll /* 0xfffdfffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 49},			/* shli r3, r2, 49 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-562949953421315ll /* 0xfffdfffffffffffd */ ,
-    {{6, 1, 49},			/* shli r2, r1, 49 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-562949953421314ll /* 0xfffdfffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 49},			/* shli r3, r2, 49 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-562949953421313ll /* 0xfffdffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421312ll /* 0xfffe000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 49}}			/* shli r3, r2, 49 */
-    },
-   {-562949953421311ll /* 0xfffe000000000001 */ ,
-    {{6, 1, 49},			/* shli r2, r1, 49 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-562949953421310ll /* 0xfffe000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421309ll /* 0xfffe000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421308ll /* 0xfffe000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421307ll /* 0xfffe000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421304ll /* 0xfffe000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-562949953421303ll /* 0xfffe000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 49},			/* shli r3, r1, 49 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-422212465065985ll /* 0xfffe7fffffffffff */ ,
-    {{6, 1, 47},			/* shli r2, r1, 47 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710664ll /* 0xfffefffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 48},			/* shli r3, r2, 48 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-281474976710663ll /* 0xfffefffffffffff9 */ ,
-    {{6, 1, 48},			/* shli r2, r1, 48 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-281474976710660ll /* 0xfffefffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 48},			/* shli r3, r2, 48 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-281474976710659ll /* 0xfffefffffffffffd */ ,
-    {{6, 1, 48},			/* shli r2, r1, 48 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-281474976710658ll /* 0xfffefffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 48},			/* shli r3, r2, 48 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-281474976710657ll /* 0xfffeffffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710656ll /* 0xffff000000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 48}}			/* shli r3, r2, 48 */
-    },
-   {-281474976710655ll /* 0xffff000000000001 */ ,
-    {{6, 1, 48},			/* shli r2, r1, 48 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-281474976710654ll /* 0xffff000000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710653ll /* 0xffff000000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710652ll /* 0xffff000000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710651ll /* 0xffff000000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710648ll /* 0xffff000000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-281474976710647ll /* 0xffff000000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 48},			/* shli r3, r1, 48 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-211106232532993ll /* 0xffff3fffffffffff */ ,
-    {{6, 1, 46},			/* shli r2, r1, 46 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355336ll /* 0xffff7ffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 47},			/* shli r3, r2, 47 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-140737488355335ll /* 0xffff7ffffffffff9 */ ,
-    {{6, 1, 47},			/* shli r2, r1, 47 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-140737488355332ll /* 0xffff7ffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 47},			/* shli r3, r2, 47 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-140737488355331ll /* 0xffff7ffffffffffd */ ,
-    {{6, 1, 47},			/* shli r2, r1, 47 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-140737488355330ll /* 0xffff7ffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 47},			/* shli r3, r2, 47 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-140737488355329ll /* 0xffff7fffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355328ll /* 0xffff800000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 47}}			/* shli r3, r2, 47 */
-    },
-   {-140737488355327ll /* 0xffff800000000001 */ ,
-    {{6, 1, 47},			/* shli r2, r1, 47 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-140737488355326ll /* 0xffff800000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355325ll /* 0xffff800000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355324ll /* 0xffff800000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355323ll /* 0xffff800000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355320ll /* 0xffff800000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-140737488355319ll /* 0xffff800000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 47},			/* shli r3, r1, 47 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-105553116266497ll /* 0xffff9fffffffffff */ ,
-    {{6, 1, 45},			/* shli r2, r1, 45 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177672ll /* 0xffffbffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 46},			/* shli r3, r2, 46 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-70368744177671ll /* 0xffffbffffffffff9 */ ,
-    {{6, 1, 46},			/* shli r2, r1, 46 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-70368744177668ll /* 0xffffbffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 46},			/* shli r3, r2, 46 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-70368744177667ll /* 0xffffbffffffffffd */ ,
-    {{6, 1, 46},			/* shli r2, r1, 46 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-70368744177666ll /* 0xffffbffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 46},			/* shli r3, r2, 46 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-70368744177665ll /* 0xffffbfffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177664ll /* 0xffffc00000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 46}}			/* shli r3, r2, 46 */
-    },
-   {-70368744177663ll /* 0xffffc00000000001 */ ,
-    {{6, 1, 46},			/* shli r2, r1, 46 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-70368744177662ll /* 0xffffc00000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177661ll /* 0xffffc00000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177660ll /* 0xffffc00000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177659ll /* 0xffffc00000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177656ll /* 0xffffc00000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-70368744177655ll /* 0xffffc00000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 46},			/* shli r3, r1, 46 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-52776558133249ll /* 0xffffcfffffffffff */ ,
-    {{6, 1, 44},			/* shli r2, r1, 44 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088840ll /* 0xffffdffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 45},			/* shli r3, r2, 45 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-35184372088839ll /* 0xffffdffffffffff9 */ ,
-    {{6, 1, 45},			/* shli r2, r1, 45 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-35184372088836ll /* 0xffffdffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 45},			/* shli r3, r2, 45 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-35184372088835ll /* 0xffffdffffffffffd */ ,
-    {{6, 1, 45},			/* shli r2, r1, 45 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-35184372088834ll /* 0xffffdffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 45},			/* shli r3, r2, 45 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-35184372088833ll /* 0xffffdfffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088832ll /* 0xffffe00000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 45}}			/* shli r3, r2, 45 */
-    },
-   {-35184372088831ll /* 0xffffe00000000001 */ ,
-    {{6, 1, 45},			/* shli r2, r1, 45 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-35184372088830ll /* 0xffffe00000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088829ll /* 0xffffe00000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088828ll /* 0xffffe00000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088827ll /* 0xffffe00000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088824ll /* 0xffffe00000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-35184372088823ll /* 0xffffe00000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 45},			/* shli r3, r1, 45 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-26388279066625ll /* 0xffffe7ffffffffff */ ,
-    {{6, 1, 43},			/* shli r2, r1, 43 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044424ll /* 0xffffeffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 44},			/* shli r3, r2, 44 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-17592186044423ll /* 0xffffeffffffffff9 */ ,
-    {{6, 1, 44},			/* shli r2, r1, 44 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-17592186044420ll /* 0xffffeffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 44},			/* shli r3, r2, 44 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-17592186044419ll /* 0xffffeffffffffffd */ ,
-    {{6, 1, 44},			/* shli r2, r1, 44 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-17592186044418ll /* 0xffffeffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 44},			/* shli r3, r2, 44 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-17592186044417ll /* 0xffffefffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044416ll /* 0xfffff00000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 44}}			/* shli r3, r2, 44 */
-    },
-   {-17592186044415ll /* 0xfffff00000000001 */ ,
-    {{6, 1, 44},			/* shli r2, r1, 44 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-17592186044414ll /* 0xfffff00000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044413ll /* 0xfffff00000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044412ll /* 0xfffff00000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044411ll /* 0xfffff00000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044408ll /* 0xfffff00000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17592186044407ll /* 0xfffff00000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 44},			/* shli r3, r1, 44 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-13194139533313ll /* 0xfffff3ffffffffff */ ,
-    {{6, 1, 42},			/* shli r2, r1, 42 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022216ll /* 0xfffff7fffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 43},			/* shli r3, r2, 43 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-8796093022215ll /* 0xfffff7fffffffff9 */ ,
-    {{6, 1, 43},			/* shli r2, r1, 43 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8796093022212ll /* 0xfffff7fffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 43},			/* shli r3, r2, 43 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-8796093022211ll /* 0xfffff7fffffffffd */ ,
-    {{6, 1, 43},			/* shli r2, r1, 43 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8796093022210ll /* 0xfffff7fffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 43},			/* shli r3, r2, 43 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-8796093022209ll /* 0xfffff7ffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022208ll /* 0xfffff80000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 43}}			/* shli r3, r2, 43 */
-    },
-   {-8796093022207ll /* 0xfffff80000000001 */ ,
-    {{6, 1, 43},			/* shli r2, r1, 43 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-8796093022206ll /* 0xfffff80000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022205ll /* 0xfffff80000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022204ll /* 0xfffff80000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022203ll /* 0xfffff80000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022200ll /* 0xfffff80000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8796093022199ll /* 0xfffff80000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 43},			/* shli r3, r1, 43 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-6597069766657ll /* 0xfffff9ffffffffff */ ,
-    {{6, 1, 41},			/* shli r2, r1, 41 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511112ll /* 0xfffffbfffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 42},			/* shli r3, r2, 42 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-4398046511111ll /* 0xfffffbfffffffff9 */ ,
-    {{6, 1, 42},			/* shli r2, r1, 42 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4398046511108ll /* 0xfffffbfffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 42},			/* shli r3, r2, 42 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-4398046511107ll /* 0xfffffbfffffffffd */ ,
-    {{6, 1, 42},			/* shli r2, r1, 42 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4398046511106ll /* 0xfffffbfffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 42},			/* shli r3, r2, 42 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4398046511105ll /* 0xfffffbffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511104ll /* 0xfffffc0000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 42}}			/* shli r3, r2, 42 */
-    },
-   {-4398046511103ll /* 0xfffffc0000000001 */ ,
-    {{6, 1, 42},			/* shli r2, r1, 42 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-4398046511102ll /* 0xfffffc0000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511101ll /* 0xfffffc0000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511100ll /* 0xfffffc0000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511099ll /* 0xfffffc0000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511096ll /* 0xfffffc0000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4398046511095ll /* 0xfffffc0000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 42},			/* shli r3, r1, 42 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3298534883329ll /* 0xfffffcffffffffff */ ,
-    {{6, 1, 40},			/* shli r2, r1, 40 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255560ll /* 0xfffffdfffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 41},			/* shli r3, r2, 41 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-2199023255559ll /* 0xfffffdfffffffff9 */ ,
-    {{6, 1, 41},			/* shli r2, r1, 41 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2199023255556ll /* 0xfffffdfffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 41},			/* shli r3, r2, 41 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-2199023255555ll /* 0xfffffdfffffffffd */ ,
-    {{6, 1, 41},			/* shli r2, r1, 41 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2199023255554ll /* 0xfffffdfffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 41},			/* shli r3, r2, 41 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-2199023255553ll /* 0xfffffdffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255552ll /* 0xfffffe0000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 41}}			/* shli r3, r2, 41 */
-    },
-   {-2199023255551ll /* 0xfffffe0000000001 */ ,
-    {{6, 1, 41},			/* shli r2, r1, 41 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2199023255550ll /* 0xfffffe0000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255549ll /* 0xfffffe0000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255548ll /* 0xfffffe0000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255547ll /* 0xfffffe0000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255544ll /* 0xfffffe0000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2199023255543ll /* 0xfffffe0000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 41},			/* shli r3, r1, 41 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1649267441665ll /* 0xfffffe7fffffffff */ ,
-    {{6, 1, 39},			/* shli r2, r1, 39 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627784ll /* 0xfffffefffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 40},			/* shli r3, r2, 40 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-1099511627783ll /* 0xfffffefffffffff9 */ ,
-    {{6, 1, 40},			/* shli r2, r1, 40 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1099511627780ll /* 0xfffffefffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 40},			/* shli r3, r2, 40 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-1099511627779ll /* 0xfffffefffffffffd */ ,
-    {{6, 1, 40},			/* shli r2, r1, 40 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1099511627778ll /* 0xfffffefffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 40},			/* shli r3, r2, 40 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-1099511627777ll /* 0xfffffeffffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627776ll /* 0xffffff0000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 40}}			/* shli r3, r2, 40 */
-    },
-   {-1099511627775ll /* 0xffffff0000000001 */ ,
-    {{6, 1, 40},			/* shli r2, r1, 40 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-1099511627774ll /* 0xffffff0000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627773ll /* 0xffffff0000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627772ll /* 0xffffff0000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627771ll /* 0xffffff0000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627768ll /* 0xffffff0000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1099511627767ll /* 0xffffff0000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 40},			/* shli r3, r1, 40 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-824633720833ll /* 0xffffff3fffffffff */ ,
-    {{6, 1, 38},			/* shli r2, r1, 38 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813896ll /* 0xffffff7ffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 39},			/* shli r3, r2, 39 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-549755813895ll /* 0xffffff7ffffffff9 */ ,
-    {{6, 1, 39},			/* shli r2, r1, 39 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-549755813892ll /* 0xffffff7ffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 39},			/* shli r3, r2, 39 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-549755813891ll /* 0xffffff7ffffffffd */ ,
-    {{6, 1, 39},			/* shli r2, r1, 39 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-549755813890ll /* 0xffffff7ffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 39},			/* shli r3, r2, 39 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-549755813889ll /* 0xffffff7fffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813888ll /* 0xffffff8000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 39}}			/* shli r3, r2, 39 */
-    },
-   {-549755813887ll /* 0xffffff8000000001 */ ,
-    {{6, 1, 39},			/* shli r2, r1, 39 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-549755813886ll /* 0xffffff8000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813885ll /* 0xffffff8000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813884ll /* 0xffffff8000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813883ll /* 0xffffff8000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813880ll /* 0xffffff8000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-549755813879ll /* 0xffffff8000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 39},			/* shli r3, r1, 39 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-412316860417ll /* 0xffffff9fffffffff */ ,
-    {{6, 1, 37},			/* shli r2, r1, 37 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906952ll /* 0xffffffbffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 38},			/* shli r3, r2, 38 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-274877906951ll /* 0xffffffbffffffff9 */ ,
-    {{6, 1, 38},			/* shli r2, r1, 38 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-274877906948ll /* 0xffffffbffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 38},			/* shli r3, r2, 38 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-274877906947ll /* 0xffffffbffffffffd */ ,
-    {{6, 1, 38},			/* shli r2, r1, 38 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-274877906946ll /* 0xffffffbffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 38},			/* shli r3, r2, 38 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-274877906945ll /* 0xffffffbfffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906944ll /* 0xffffffc000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 38}}			/* shli r3, r2, 38 */
-    },
-   {-274877906943ll /* 0xffffffc000000001 */ ,
-    {{6, 1, 38},			/* shli r2, r1, 38 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-274877906942ll /* 0xffffffc000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906941ll /* 0xffffffc000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906940ll /* 0xffffffc000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906939ll /* 0xffffffc000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906936ll /* 0xffffffc000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-274877906935ll /* 0xffffffc000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 38},			/* shli r3, r1, 38 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-206158430209ll /* 0xffffffcfffffffff */ ,
-    {{6, 1, 36},			/* shli r2, r1, 36 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953480ll /* 0xffffffdffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 37},			/* shli r3, r2, 37 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-137438953479ll /* 0xffffffdffffffff9 */ ,
-    {{6, 1, 37},			/* shli r2, r1, 37 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-137438953476ll /* 0xffffffdffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 37},			/* shli r3, r2, 37 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-137438953475ll /* 0xffffffdffffffffd */ ,
-    {{6, 1, 37},			/* shli r2, r1, 37 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-137438953474ll /* 0xffffffdffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 37},			/* shli r3, r2, 37 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-137438953473ll /* 0xffffffdfffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953472ll /* 0xffffffe000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 37}}			/* shli r3, r2, 37 */
-    },
-   {-137438953471ll /* 0xffffffe000000001 */ ,
-    {{6, 1, 37},			/* shli r2, r1, 37 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-137438953470ll /* 0xffffffe000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953469ll /* 0xffffffe000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953468ll /* 0xffffffe000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953467ll /* 0xffffffe000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953464ll /* 0xffffffe000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-137438953463ll /* 0xffffffe000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 37},			/* shli r3, r1, 37 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-103079215105ll /* 0xffffffe7ffffffff */ ,
-    {{6, 1, 35},			/* shli r2, r1, 35 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476744ll /* 0xffffffeffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 36},			/* shli r3, r2, 36 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-68719476743ll /* 0xffffffeffffffff9 */ ,
-    {{6, 1, 36},			/* shli r2, r1, 36 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-68719476740ll /* 0xffffffeffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 36},			/* shli r3, r2, 36 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-68719476739ll /* 0xffffffeffffffffd */ ,
-    {{6, 1, 36},			/* shli r2, r1, 36 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-68719476738ll /* 0xffffffeffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 36},			/* shli r3, r2, 36 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-68719476737ll /* 0xffffffefffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476736ll /* 0xfffffff000000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 36}}			/* shli r3, r2, 36 */
-    },
-   {-68719476735ll /* 0xfffffff000000001 */ ,
-    {{6, 1, 36},			/* shli r2, r1, 36 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-68719476734ll /* 0xfffffff000000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476733ll /* 0xfffffff000000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476732ll /* 0xfffffff000000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476731ll /* 0xfffffff000000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476728ll /* 0xfffffff000000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-68719476727ll /* 0xfffffff000000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 36},			/* shli r3, r1, 36 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-51539607553ll /* 0xfffffff3ffffffff */ ,
-    {{6, 1, 34},			/* shli r2, r1, 34 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738376ll /* 0xfffffff7fffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 35},			/* shli r3, r2, 35 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-34359738375ll /* 0xfffffff7fffffff9 */ ,
-    {{6, 1, 35},			/* shli r2, r1, 35 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-34359738372ll /* 0xfffffff7fffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 35},			/* shli r3, r2, 35 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-34359738371ll /* 0xfffffff7fffffffd */ ,
-    {{6, 1, 35},			/* shli r2, r1, 35 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-34359738370ll /* 0xfffffff7fffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 35},			/* shli r3, r2, 35 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-34359738369ll /* 0xfffffff7ffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738368ll /* 0xfffffff800000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 35}}			/* shli r3, r2, 35 */
-    },
-   {-34359738367ll /* 0xfffffff800000001 */ ,
-    {{6, 1, 35},			/* shli r2, r1, 35 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-34359738366ll /* 0xfffffff800000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738365ll /* 0xfffffff800000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738364ll /* 0xfffffff800000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738363ll /* 0xfffffff800000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738360ll /* 0xfffffff800000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34359738359ll /* 0xfffffff800000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 35},			/* shli r3, r1, 35 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-25769803777ll /* 0xfffffff9ffffffff */ ,
-    {{6, 1, 33},			/* shli r2, r1, 33 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869192ll /* 0xfffffffbfffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 34},			/* shli r3, r2, 34 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-17179869191ll /* 0xfffffffbfffffff9 */ ,
-    {{6, 1, 34},			/* shli r2, r1, 34 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-17179869188ll /* 0xfffffffbfffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 34},			/* shli r3, r2, 34 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-17179869187ll /* 0xfffffffbfffffffd */ ,
-    {{6, 1, 34},			/* shli r2, r1, 34 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-17179869186ll /* 0xfffffffbfffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 34},			/* shli r3, r2, 34 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-17179869185ll /* 0xfffffffbffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869184ll /* 0xfffffffc00000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 34}}			/* shli r3, r2, 34 */
-    },
-   {-17179869183ll /* 0xfffffffc00000001 */ ,
-    {{6, 1, 34},			/* shli r2, r1, 34 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-17179869182ll /* 0xfffffffc00000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869181ll /* 0xfffffffc00000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869180ll /* 0xfffffffc00000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869179ll /* 0xfffffffc00000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869176ll /* 0xfffffffc00000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-17179869175ll /* 0xfffffffc00000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 34},			/* shli r3, r1, 34 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-12884901889ll /* 0xfffffffcffffffff */ ,
-    {{6, 1, 32},			/* shli r2, r1, 32 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934600ll /* 0xfffffffdfffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 33},			/* shli r3, r2, 33 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-8589934599ll /* 0xfffffffdfffffff9 */ ,
-    {{6, 1, 33},			/* shli r2, r1, 33 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8589934596ll /* 0xfffffffdfffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 33},			/* shli r3, r2, 33 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-8589934595ll /* 0xfffffffdfffffffd */ ,
-    {{6, 1, 33},			/* shli r2, r1, 33 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8589934594ll /* 0xfffffffdfffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 33},			/* shli r3, r2, 33 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-8589934593ll /* 0xfffffffdffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934592ll /* 0xfffffffe00000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 33}}			/* shli r3, r2, 33 */
-    },
-   {-8589934591ll /* 0xfffffffe00000001 */ ,
-    {{6, 1, 33},			/* shli r2, r1, 33 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-8589934590ll /* 0xfffffffe00000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934589ll /* 0xfffffffe00000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934588ll /* 0xfffffffe00000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934587ll /* 0xfffffffe00000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934584ll /* 0xfffffffe00000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8589934583ll /* 0xfffffffe00000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 33},			/* shli r3, r1, 33 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-6442450945ll /* 0xfffffffe7fffffff */ ,
-    {{6, 1, 31},			/* shli r2, r1, 31 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967304ll /* 0xfffffffefffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 32},			/* shli r3, r2, 32 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-4294967303ll /* 0xfffffffefffffff9 */ ,
-    {{6, 1, 32},			/* shli r2, r1, 32 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4294967300ll /* 0xfffffffefffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 32},			/* shli r3, r2, 32 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-4294967299ll /* 0xfffffffefffffffd */ ,
-    {{6, 1, 32},			/* shli r2, r1, 32 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4294967298ll /* 0xfffffffefffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 32},			/* shli r3, r2, 32 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4294967297ll /* 0xfffffffeffffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967296ll /* 0xffffffff00000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 32}}			/* shli r3, r2, 32 */
-    },
-   {-4294967295ll /* 0xffffffff00000001 */ ,
-    {{6, 1, 32},			/* shli r2, r1, 32 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-4294967294ll /* 0xffffffff00000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967293ll /* 0xffffffff00000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967292ll /* 0xffffffff00000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967291ll /* 0xffffffff00000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967288ll /* 0xffffffff00000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4294967287ll /* 0xffffffff00000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 32},			/* shli r3, r1, 32 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3221225473ll /* 0xffffffff3fffffff */ ,
-    {{6, 1, 30},			/* shli r2, r1, 30 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483656ll /* 0xffffffff7ffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 31},			/* shli r3, r2, 31 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-2147483655ll /* 0xffffffff7ffffff9 */ ,
-    {{6, 1, 31},			/* shli r2, r1, 31 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2147483652ll /* 0xffffffff7ffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 31},			/* shli r3, r2, 31 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-2147483651ll /* 0xffffffff7ffffffd */ ,
-    {{6, 1, 31},			/* shli r2, r1, 31 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2147483650ll /* 0xffffffff7ffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 31},			/* shli r3, r2, 31 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-2147483649ll /* 0xffffffff7fffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483648ll /* 0xffffffff80000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 31}}			/* shli r3, r2, 31 */
-    },
-   {-2147483647ll /* 0xffffffff80000001 */ ,
-    {{6, 1, 31},			/* shli r2, r1, 31 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2147483646ll /* 0xffffffff80000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483645ll /* 0xffffffff80000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483644ll /* 0xffffffff80000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483643ll /* 0xffffffff80000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483640ll /* 0xffffffff80000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2147483639ll /* 0xffffffff80000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 31},			/* shli r3, r1, 31 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1610612737ll /* 0xffffffff9fffffff */ ,
-    {{6, 1, 29},			/* shli r2, r1, 29 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741832ll /* 0xffffffffbffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 30},			/* shli r3, r2, 30 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-1073741831ll /* 0xffffffffbffffff9 */ ,
-    {{6, 1, 30},			/* shli r2, r1, 30 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1073741828ll /* 0xffffffffbffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 30},			/* shli r3, r2, 30 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-1073741827ll /* 0xffffffffbffffffd */ ,
-    {{6, 1, 30},			/* shli r2, r1, 30 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1073741826ll /* 0xffffffffbffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 30},			/* shli r3, r2, 30 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-1073741825ll /* 0xffffffffbfffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741824ll /* 0xffffffffc0000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 30}}			/* shli r3, r2, 30 */
-    },
-   {-1073741823ll /* 0xffffffffc0000001 */ ,
-    {{6, 1, 30},			/* shli r2, r1, 30 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-1073741822ll /* 0xffffffffc0000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741821ll /* 0xffffffffc0000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741820ll /* 0xffffffffc0000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741819ll /* 0xffffffffc0000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741816ll /* 0xffffffffc0000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1073741815ll /* 0xffffffffc0000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 30},			/* shli r3, r1, 30 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-805306369ll /* 0xffffffffcfffffff */ ,
-    {{6, 1, 28},			/* shli r2, r1, 28 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870920ll /* 0xffffffffdffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 29},			/* shli r3, r2, 29 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-536870919ll /* 0xffffffffdffffff9 */ ,
-    {{6, 1, 29},			/* shli r2, r1, 29 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-536870916ll /* 0xffffffffdffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 29},			/* shli r3, r2, 29 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-536870915ll /* 0xffffffffdffffffd */ ,
-    {{6, 1, 29},			/* shli r2, r1, 29 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-536870914ll /* 0xffffffffdffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 29},			/* shli r3, r2, 29 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-536870913ll /* 0xffffffffdfffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870912ll /* 0xffffffffe0000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 29}}			/* shli r3, r2, 29 */
-    },
-   {-536870911ll /* 0xffffffffe0000001 */ ,
-    {{6, 1, 29},			/* shli r2, r1, 29 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-536870910ll /* 0xffffffffe0000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870909ll /* 0xffffffffe0000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870908ll /* 0xffffffffe0000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870907ll /* 0xffffffffe0000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870904ll /* 0xffffffffe0000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-536870903ll /* 0xffffffffe0000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 29},			/* shli r3, r1, 29 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-402653185ll /* 0xffffffffe7ffffff */ ,
-    {{6, 1, 27},			/* shli r2, r1, 27 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435464ll /* 0xffffffffeffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 28},			/* shli r3, r2, 28 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-268435463ll /* 0xffffffffeffffff9 */ ,
-    {{6, 1, 28},			/* shli r2, r1, 28 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-268435460ll /* 0xffffffffeffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 28},			/* shli r3, r2, 28 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-268435459ll /* 0xffffffffeffffffd */ ,
-    {{6, 1, 28},			/* shli r2, r1, 28 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-268435458ll /* 0xffffffffeffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 28},			/* shli r3, r2, 28 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-268435457ll /* 0xffffffffefffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435456ll /* 0xfffffffff0000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 28}}			/* shli r3, r2, 28 */
-    },
-   {-268435455ll /* 0xfffffffff0000001 */ ,
-    {{6, 1, 28},			/* shli r2, r1, 28 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-268435454ll /* 0xfffffffff0000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435453ll /* 0xfffffffff0000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435452ll /* 0xfffffffff0000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435451ll /* 0xfffffffff0000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435448ll /* 0xfffffffff0000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-268435447ll /* 0xfffffffff0000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 28},			/* shli r3, r1, 28 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-201326593ll /* 0xfffffffff3ffffff */ ,
-    {{6, 1, 26},			/* shli r2, r1, 26 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217736ll /* 0xfffffffff7fffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 27},			/* shli r3, r2, 27 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-134217735ll /* 0xfffffffff7fffff9 */ ,
-    {{6, 1, 27},			/* shli r2, r1, 27 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-134217732ll /* 0xfffffffff7fffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 27},			/* shli r3, r2, 27 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-134217731ll /* 0xfffffffff7fffffd */ ,
-    {{6, 1, 27},			/* shli r2, r1, 27 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-134217730ll /* 0xfffffffff7fffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 27},			/* shli r3, r2, 27 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-134217729ll /* 0xfffffffff7ffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217728ll /* 0xfffffffff8000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 27}}			/* shli r3, r2, 27 */
-    },
-   {-134217727ll /* 0xfffffffff8000001 */ ,
-    {{6, 1, 27},			/* shli r2, r1, 27 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-134217726ll /* 0xfffffffff8000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217725ll /* 0xfffffffff8000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217724ll /* 0xfffffffff8000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217723ll /* 0xfffffffff8000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217720ll /* 0xfffffffff8000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134217719ll /* 0xfffffffff8000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 27},			/* shli r3, r1, 27 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-100663297ll /* 0xfffffffff9ffffff */ ,
-    {{6, 1, 25},			/* shli r2, r1, 25 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108872ll /* 0xfffffffffbfffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 26},			/* shli r3, r2, 26 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-67108871ll /* 0xfffffffffbfffff9 */ ,
-    {{6, 1, 26},			/* shli r2, r1, 26 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-67108868ll /* 0xfffffffffbfffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 26},			/* shli r3, r2, 26 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-67108867ll /* 0xfffffffffbfffffd */ ,
-    {{6, 1, 26},			/* shli r2, r1, 26 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-67108866ll /* 0xfffffffffbfffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 26},			/* shli r3, r2, 26 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-67108865ll /* 0xfffffffffbffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108864ll /* 0xfffffffffc000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 26}}			/* shli r3, r2, 26 */
-    },
-   {-67108863ll /* 0xfffffffffc000001 */ ,
-    {{6, 1, 26},			/* shli r2, r1, 26 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-67108862ll /* 0xfffffffffc000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108861ll /* 0xfffffffffc000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108860ll /* 0xfffffffffc000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108859ll /* 0xfffffffffc000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108856ll /* 0xfffffffffc000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-67108855ll /* 0xfffffffffc000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 26},			/* shli r3, r1, 26 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-50331649ll /* 0xfffffffffcffffff */ ,
-    {{6, 1, 24},			/* shli r2, r1, 24 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554440ll /* 0xfffffffffdfffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 25},			/* shli r3, r2, 25 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-33554439ll /* 0xfffffffffdfffff9 */ ,
-    {{6, 1, 25},			/* shli r2, r1, 25 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-33554436ll /* 0xfffffffffdfffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 25},			/* shli r3, r2, 25 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-33554435ll /* 0xfffffffffdfffffd */ ,
-    {{6, 1, 25},			/* shli r2, r1, 25 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-33554434ll /* 0xfffffffffdfffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 25},			/* shli r3, r2, 25 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-33554433ll /* 0xfffffffffdffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554432ll /* 0xfffffffffe000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 25}}			/* shli r3, r2, 25 */
-    },
-   {-33554431ll /* 0xfffffffffe000001 */ ,
-    {{6, 1, 25},			/* shli r2, r1, 25 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-33554430ll /* 0xfffffffffe000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554429ll /* 0xfffffffffe000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554428ll /* 0xfffffffffe000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554427ll /* 0xfffffffffe000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554424ll /* 0xfffffffffe000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-33554423ll /* 0xfffffffffe000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 25},			/* shli r3, r1, 25 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-25165825ll /* 0xfffffffffe7fffff */ ,
-    {{6, 1, 23},			/* shli r2, r1, 23 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777224ll /* 0xfffffffffefffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 24},			/* shli r3, r2, 24 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-16777223ll /* 0xfffffffffefffff9 */ ,
-    {{6, 1, 24},			/* shli r2, r1, 24 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-16777220ll /* 0xfffffffffefffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 24},			/* shli r3, r2, 24 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-16777219ll /* 0xfffffffffefffffd */ ,
-    {{6, 1, 24},			/* shli r2, r1, 24 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-16777218ll /* 0xfffffffffefffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 24},			/* shli r3, r2, 24 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-16777217ll /* 0xfffffffffeffffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777216ll /* 0xffffffffff000000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 24}}			/* shli r3, r2, 24 */
-    },
-   {-16777215ll /* 0xffffffffff000001 */ ,
-    {{6, 1, 24},			/* shli r2, r1, 24 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-16777214ll /* 0xffffffffff000002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777213ll /* 0xffffffffff000003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777212ll /* 0xffffffffff000004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777211ll /* 0xffffffffff000005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777208ll /* 0xffffffffff000008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16777207ll /* 0xffffffffff000009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 24},			/* shli r3, r1, 24 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-12582913ll /* 0xffffffffff3fffff */ ,
-    {{6, 1, 22},			/* shli r2, r1, 22 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388616ll /* 0xffffffffff7ffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 23},			/* shli r3, r2, 23 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-8388615ll /* 0xffffffffff7ffff9 */ ,
-    {{6, 1, 23},			/* shli r2, r1, 23 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8388612ll /* 0xffffffffff7ffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 23},			/* shli r3, r2, 23 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-8388611ll /* 0xffffffffff7ffffd */ ,
-    {{6, 1, 23},			/* shli r2, r1, 23 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8388610ll /* 0xffffffffff7ffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 23},			/* shli r3, r2, 23 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-8388609ll /* 0xffffffffff7fffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388608ll /* 0xffffffffff800000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 23}}			/* shli r3, r2, 23 */
-    },
-   {-8388607ll /* 0xffffffffff800001 */ ,
-    {{6, 1, 23},			/* shli r2, r1, 23 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-8388606ll /* 0xffffffffff800002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388605ll /* 0xffffffffff800003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388604ll /* 0xffffffffff800004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388603ll /* 0xffffffffff800005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388600ll /* 0xffffffffff800008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8388599ll /* 0xffffffffff800009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 23},			/* shli r3, r1, 23 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-6291457ll /* 0xffffffffff9fffff */ ,
-    {{6, 1, 21},			/* shli r2, r1, 21 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194312ll /* 0xffffffffffbffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 22},			/* shli r3, r2, 22 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-4194311ll /* 0xffffffffffbffff9 */ ,
-    {{6, 1, 22},			/* shli r2, r1, 22 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4194308ll /* 0xffffffffffbffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 22},			/* shli r3, r2, 22 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-4194307ll /* 0xffffffffffbffffd */ ,
-    {{6, 1, 22},			/* shli r2, r1, 22 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4194306ll /* 0xffffffffffbffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 22},			/* shli r3, r2, 22 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4194305ll /* 0xffffffffffbfffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194304ll /* 0xffffffffffc00000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 22}}			/* shli r3, r2, 22 */
-    },
-   {-4194303ll /* 0xffffffffffc00001 */ ,
-    {{6, 1, 22},			/* shli r2, r1, 22 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-4194302ll /* 0xffffffffffc00002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194301ll /* 0xffffffffffc00003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194300ll /* 0xffffffffffc00004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194299ll /* 0xffffffffffc00005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194296ll /* 0xffffffffffc00008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4194295ll /* 0xffffffffffc00009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 22},			/* shli r3, r1, 22 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3145729ll /* 0xffffffffffcfffff */ ,
-    {{6, 1, 20},			/* shli r2, r1, 20 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097160ll /* 0xffffffffffdffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 21},			/* shli r3, r2, 21 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-2097159ll /* 0xffffffffffdffff9 */ ,
-    {{6, 1, 21},			/* shli r2, r1, 21 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2097156ll /* 0xffffffffffdffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 21},			/* shli r3, r2, 21 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-2097155ll /* 0xffffffffffdffffd */ ,
-    {{6, 1, 21},			/* shli r2, r1, 21 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2097154ll /* 0xffffffffffdffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 21},			/* shli r3, r2, 21 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-2097153ll /* 0xffffffffffdfffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097152ll /* 0xffffffffffe00000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 21}}			/* shli r3, r2, 21 */
-    },
-   {-2097151ll /* 0xffffffffffe00001 */ ,
-    {{6, 1, 21},			/* shli r2, r1, 21 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2097150ll /* 0xffffffffffe00002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097149ll /* 0xffffffffffe00003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097148ll /* 0xffffffffffe00004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097147ll /* 0xffffffffffe00005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097144ll /* 0xffffffffffe00008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2097143ll /* 0xffffffffffe00009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 21},			/* shli r3, r1, 21 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1572865ll /* 0xffffffffffe7ffff */ ,
-    {{6, 1, 19},			/* shli r2, r1, 19 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048584ll /* 0xffffffffffeffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 20},			/* shli r3, r2, 20 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-1048583ll /* 0xffffffffffeffff9 */ ,
-    {{6, 1, 20},			/* shli r2, r1, 20 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1048580ll /* 0xffffffffffeffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 20},			/* shli r3, r2, 20 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-1048579ll /* 0xffffffffffeffffd */ ,
-    {{6, 1, 20},			/* shli r2, r1, 20 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1048578ll /* 0xffffffffffeffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 20},			/* shli r3, r2, 20 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-1048577ll /* 0xffffffffffefffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048576ll /* 0xfffffffffff00000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 20}}			/* shli r3, r2, 20 */
-    },
-   {-1048575ll /* 0xfffffffffff00001 */ ,
-    {{6, 1, 20},			/* shli r2, r1, 20 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-1048574ll /* 0xfffffffffff00002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048573ll /* 0xfffffffffff00003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048572ll /* 0xfffffffffff00004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048571ll /* 0xfffffffffff00005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048568ll /* 0xfffffffffff00008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1048567ll /* 0xfffffffffff00009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 20},			/* shli r3, r1, 20 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-786433ll /* 0xfffffffffff3ffff */ ,
-    {{6, 1, 18},			/* shli r2, r1, 18 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524296ll /* 0xfffffffffff7fff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 19},			/* shli r3, r2, 19 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-524295ll /* 0xfffffffffff7fff9 */ ,
-    {{6, 1, 19},			/* shli r2, r1, 19 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-524292ll /* 0xfffffffffff7fffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 19},			/* shli r3, r2, 19 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-524291ll /* 0xfffffffffff7fffd */ ,
-    {{6, 1, 19},			/* shli r2, r1, 19 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-524290ll /* 0xfffffffffff7fffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 19},			/* shli r3, r2, 19 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-524289ll /* 0xfffffffffff7ffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524288ll /* 0xfffffffffff80000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 19}}			/* shli r3, r2, 19 */
-    },
-   {-524287ll /* 0xfffffffffff80001 */ ,
-    {{6, 1, 19},			/* shli r2, r1, 19 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-524286ll /* 0xfffffffffff80002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524285ll /* 0xfffffffffff80003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524284ll /* 0xfffffffffff80004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524283ll /* 0xfffffffffff80005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524280ll /* 0xfffffffffff80008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-524279ll /* 0xfffffffffff80009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 19},			/* shli r3, r1, 19 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-393217ll /* 0xfffffffffff9ffff */ ,
-    {{6, 1, 17},			/* shli r2, r1, 17 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262152ll /* 0xfffffffffffbfff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 18},			/* shli r3, r2, 18 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-262151ll /* 0xfffffffffffbfff9 */ ,
-    {{6, 1, 18},			/* shli r2, r1, 18 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-262148ll /* 0xfffffffffffbfffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 18},			/* shli r3, r2, 18 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-262147ll /* 0xfffffffffffbfffd */ ,
-    {{6, 1, 18},			/* shli r2, r1, 18 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-262146ll /* 0xfffffffffffbfffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 18},			/* shli r3, r2, 18 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-262145ll /* 0xfffffffffffbffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262144ll /* 0xfffffffffffc0000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 18}}			/* shli r3, r2, 18 */
-    },
-   {-262143ll /* 0xfffffffffffc0001 */ ,
-    {{6, 1, 18},			/* shli r2, r1, 18 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-262142ll /* 0xfffffffffffc0002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262141ll /* 0xfffffffffffc0003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262140ll /* 0xfffffffffffc0004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262139ll /* 0xfffffffffffc0005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262136ll /* 0xfffffffffffc0008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-262135ll /* 0xfffffffffffc0009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 18},			/* shli r3, r1, 18 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-196609ll /* 0xfffffffffffcffff */ ,
-    {{6, 1, 16},			/* shli r2, r1, 16 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131080ll /* 0xfffffffffffdfff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 17},			/* shli r3, r2, 17 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-131079ll /* 0xfffffffffffdfff9 */ ,
-    {{6, 1, 17},			/* shli r2, r1, 17 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-131076ll /* 0xfffffffffffdfffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 17},			/* shli r3, r2, 17 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-131075ll /* 0xfffffffffffdfffd */ ,
-    {{6, 1, 17},			/* shli r2, r1, 17 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-131074ll /* 0xfffffffffffdfffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 17},			/* shli r3, r2, 17 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-131073ll /* 0xfffffffffffdffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131072ll /* 0xfffffffffffe0000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 17}}			/* shli r3, r2, 17 */
-    },
-   {-131071ll /* 0xfffffffffffe0001 */ ,
-    {{6, 1, 17},			/* shli r2, r1, 17 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-131070ll /* 0xfffffffffffe0002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131069ll /* 0xfffffffffffe0003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131068ll /* 0xfffffffffffe0004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131067ll /* 0xfffffffffffe0005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131064ll /* 0xfffffffffffe0008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-131063ll /* 0xfffffffffffe0009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 17},			/* shli r3, r1, 17 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-98305ll /* 0xfffffffffffe7fff */ ,
-    {{6, 1, 15},			/* shli r2, r1, 15 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65544ll /* 0xfffffffffffefff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 16},			/* shli r3, r2, 16 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-65543ll /* 0xfffffffffffefff9 */ ,
-    {{6, 1, 16},			/* shli r2, r1, 16 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-65540ll /* 0xfffffffffffefffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 16},			/* shli r3, r2, 16 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-65539ll /* 0xfffffffffffefffd */ ,
-    {{6, 1, 16},			/* shli r2, r1, 16 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-65538ll /* 0xfffffffffffefffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 16},			/* shli r3, r2, 16 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-65537ll /* 0xfffffffffffeffff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65536ll /* 0xffffffffffff0000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 16}}			/* shli r3, r2, 16 */
-    },
-   {-65535ll /* 0xffffffffffff0001 */ ,
-    {{6, 1, 16},			/* shli r2, r1, 16 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-65534ll /* 0xffffffffffff0002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65533ll /* 0xffffffffffff0003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65532ll /* 0xffffffffffff0004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65531ll /* 0xffffffffffff0005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65528ll /* 0xffffffffffff0008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-65527ll /* 0xffffffffffff0009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 16},			/* shli r3, r1, 16 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-49153ll /* 0xffffffffffff3fff */ ,
-    {{6, 1, 14},			/* shli r2, r1, 14 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32776ll /* 0xffffffffffff7ff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 15},			/* shli r3, r2, 15 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-32775ll /* 0xffffffffffff7ff9 */ ,
-    {{6, 1, 15},			/* shli r2, r1, 15 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-32772ll /* 0xffffffffffff7ffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 15},			/* shli r3, r2, 15 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-32771ll /* 0xffffffffffff7ffd */ ,
-    {{6, 1, 15},			/* shli r2, r1, 15 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-32770ll /* 0xffffffffffff7ffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 15},			/* shli r3, r2, 15 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-32769ll /* 0xffffffffffff7fff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32768ll /* 0xffffffffffff8000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 15}}			/* shli r3, r2, 15 */
-    },
-   {-32767ll /* 0xffffffffffff8001 */ ,
-    {{6, 1, 15},			/* shli r2, r1, 15 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-32766ll /* 0xffffffffffff8002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32765ll /* 0xffffffffffff8003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32764ll /* 0xffffffffffff8004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32763ll /* 0xffffffffffff8005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32760ll /* 0xffffffffffff8008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32759ll /* 0xffffffffffff8009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 15},			/* shli r3, r1, 15 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-24577ll /* 0xffffffffffff9fff */ ,
-    {{6, 1, 13},			/* shli r2, r1, 13 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16392ll /* 0xffffffffffffbff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 14},			/* shli r3, r2, 14 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-16391ll /* 0xffffffffffffbff9 */ ,
-    {{6, 1, 14},			/* shli r2, r1, 14 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-16388ll /* 0xffffffffffffbffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 14},			/* shli r3, r2, 14 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-16387ll /* 0xffffffffffffbffd */ ,
-    {{6, 1, 14},			/* shli r2, r1, 14 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-16386ll /* 0xffffffffffffbffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 14},			/* shli r3, r2, 14 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-16385ll /* 0xffffffffffffbfff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16384ll /* 0xffffffffffffc000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 14}}			/* shli r3, r2, 14 */
-    },
-   {-16383ll /* 0xffffffffffffc001 */ ,
-    {{6, 1, 14},			/* shli r2, r1, 14 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-16382ll /* 0xffffffffffffc002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16381ll /* 0xffffffffffffc003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16380ll /* 0xffffffffffffc004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16379ll /* 0xffffffffffffc005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16376ll /* 0xffffffffffffc008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16375ll /* 0xffffffffffffc009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 14},			/* shli r3, r1, 14 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-12289ll /* 0xffffffffffffcfff */ ,
-    {{6, 1, 12},			/* shli r2, r1, 12 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8200ll /* 0xffffffffffffdff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 13},			/* shli r3, r2, 13 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-8199ll /* 0xffffffffffffdff9 */ ,
-    {{6, 1, 13},			/* shli r2, r1, 13 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8196ll /* 0xffffffffffffdffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 13},			/* shli r3, r2, 13 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-8195ll /* 0xffffffffffffdffd */ ,
-    {{6, 1, 13},			/* shli r2, r1, 13 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-8194ll /* 0xffffffffffffdffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 13},			/* shli r3, r2, 13 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-8193ll /* 0xffffffffffffdfff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8192ll /* 0xffffffffffffe000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 13}}			/* shli r3, r2, 13 */
-    },
-   {-8191ll /* 0xffffffffffffe001 */ ,
-    {{6, 1, 13},			/* shli r2, r1, 13 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-8190ll /* 0xffffffffffffe002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8189ll /* 0xffffffffffffe003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8188ll /* 0xffffffffffffe004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8187ll /* 0xffffffffffffe005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8184ll /* 0xffffffffffffe008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-8183ll /* 0xffffffffffffe009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 13},			/* shli r3, r1, 13 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-6145ll /* 0xffffffffffffe7ff */ ,
-    {{6, 1, 11},			/* shli r2, r1, 11 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4104ll /* 0xffffffffffffeff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 12},			/* shli r3, r2, 12 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-4103ll /* 0xffffffffffffeff9 */ ,
-    {{6, 1, 12},			/* shli r2, r1, 12 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4100ll /* 0xffffffffffffeffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 12},			/* shli r3, r2, 12 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-4099ll /* 0xffffffffffffeffd */ ,
-    {{6, 1, 12},			/* shli r2, r1, 12 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-4098ll /* 0xffffffffffffeffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 12},			/* shli r3, r2, 12 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-4097ll /* 0xffffffffffffefff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4096ll /* 0xfffffffffffff000 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 12}}			/* shli r3, r2, 12 */
-    },
-   {-4095ll /* 0xfffffffffffff001 */ ,
-    {{6, 1, 12},			/* shli r2, r1, 12 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-4094ll /* 0xfffffffffffff002 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4093ll /* 0xfffffffffffff003 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4092ll /* 0xfffffffffffff004 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4091ll /* 0xfffffffffffff005 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4088ll /* 0xfffffffffffff008 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-4087ll /* 0xfffffffffffff009 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3073ll /* 0xfffffffffffff3ff */ ,
-    {{6, 1, 10},			/* shli r2, r1, 10 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-3072ll /* 0xfffffffffffff400 */ ,
-    {{6, 1, 10},			/* shli r2, r1, 10 */
-     {6, 1, 12},			/* shli r3, r1, 12 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2056ll /* 0xfffffffffffff7f8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 11},			/* shli r3, r2, 11 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-2055ll /* 0xfffffffffffff7f9 */ ,
-    {{6, 1, 11},			/* shli r2, r1, 11 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2052ll /* 0xfffffffffffff7fc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 11},			/* shli r3, r2, 11 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-2051ll /* 0xfffffffffffff7fd */ ,
-    {{6, 1, 11},			/* shli r2, r1, 11 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-2050ll /* 0xfffffffffffff7fe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 11},			/* shli r3, r2, 11 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-2049ll /* 0xfffffffffffff7ff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2048ll /* 0xfffffffffffff800 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 11}}			/* shli r3, r2, 11 */
-    },
-   {-2047ll /* 0xfffffffffffff801 */ ,
-    {{6, 1, 11},			/* shli r2, r1, 11 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2046ll /* 0xfffffffffffff802 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2045ll /* 0xfffffffffffff803 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2044ll /* 0xfffffffffffff804 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2043ll /* 0xfffffffffffff805 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2040ll /* 0xfffffffffffff808 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-2039ll /* 0xfffffffffffff809 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 11},			/* shli r3, r1, 11 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1537ll /* 0xfffffffffffff9ff */ ,
-    {{6, 1, 9},			/* shli r2, r1, 9 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1032ll /* 0xfffffffffffffbf8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 10},			/* shli r3, r2, 10 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-1031ll /* 0xfffffffffffffbf9 */ ,
-    {{6, 1, 10},			/* shli r2, r1, 10 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1028ll /* 0xfffffffffffffbfc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 10},			/* shli r3, r2, 10 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-1027ll /* 0xfffffffffffffbfd */ ,
-    {{6, 1, 10},			/* shli r2, r1, 10 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-1026ll /* 0xfffffffffffffbfe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 10},			/* shli r3, r2, 10 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-1025ll /* 0xfffffffffffffbff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1024ll /* 0xfffffffffffffc00 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 10}}			/* shli r3, r2, 10 */
-    },
-   {-1023ll /* 0xfffffffffffffc01 */ ,
-    {{6, 1, 10},			/* shli r2, r1, 10 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-1022ll /* 0xfffffffffffffc02 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1021ll /* 0xfffffffffffffc03 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1020ll /* 0xfffffffffffffc04 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1019ll /* 0xfffffffffffffc05 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1018ll /* 0xfffffffffffffc06 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {-1017ll /* 0xfffffffffffffc07 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-1016ll /* 0xfffffffffffffc08 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1015ll /* 0xfffffffffffffc09 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1014ll /* 0xfffffffffffffc0a */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-1013ll /* 0xfffffffffffffc0b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-1012ll /* 0xfffffffffffffc0c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-1011ll /* 0xfffffffffffffc0d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-1010ll /* 0xfffffffffffffc0e */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {3, 1, 3},			/* shl1add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-1009ll /* 0xfffffffffffffc0f */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-1008ll /* 0xfffffffffffffc10 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-1007ll /* 0xfffffffffffffc11 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-1006ll /* 0xfffffffffffffc12 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-1005ll /* 0xfffffffffffffc13 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 1}}			/* shl1add r5, r4, r1 */
-    },
-   {-1004ll /* 0xfffffffffffffc14 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-1003ll /* 0xfffffffffffffc15 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-1001ll /* 0xfffffffffffffc17 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-1000ll /* 0xfffffffffffffc18 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-999ll /* 0xfffffffffffffc19 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-997ll /* 0xfffffffffffffc1b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-996ll /* 0xfffffffffffffc1c */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {4, 1, 3},			/* shl2add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-994ll /* 0xfffffffffffffc1e */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {3, 1, 3},			/* shl1add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-993ll /* 0xfffffffffffffc1f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-992ll /* 0xfffffffffffffc20 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-991ll /* 0xfffffffffffffc21 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-990ll /* 0xfffffffffffffc22 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-988ll /* 0xfffffffffffffc24 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-987ll /* 0xfffffffffffffc25 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-984ll /* 0xfffffffffffffc28 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-983ll /* 0xfffffffffffffc29 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-979ll /* 0xfffffffffffffc2d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-976ll /* 0xfffffffffffffc30 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-975ll /* 0xfffffffffffffc31 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {1, 3, 4}}			/* add r5, r3, r4 */
-    },
-   {-969ll /* 0xfffffffffffffc37 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-968ll /* 0xfffffffffffffc38 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {5, 1, 3},			/* shl3add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-967ll /* 0xfffffffffffffc39 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-965ll /* 0xfffffffffffffc3b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-964ll /* 0xfffffffffffffc3c */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {4, 1, 3},			/* shl2add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-963ll /* 0xfffffffffffffc3d */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 1},			/* shl1add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-962ll /* 0xfffffffffffffc3e */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {3, 1, 3},			/* shl1add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-961ll /* 0xfffffffffffffc3f */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-960ll /* 0xfffffffffffffc40 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-959ll /* 0xfffffffffffffc41 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-958ll /* 0xfffffffffffffc42 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-957ll /* 0xfffffffffffffc43 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-956ll /* 0xfffffffffffffc44 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-955ll /* 0xfffffffffffffc45 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-953ll /* 0xfffffffffffffc47 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-952ll /* 0xfffffffffffffc48 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-951ll /* 0xfffffffffffffc49 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-945ll /* 0xfffffffffffffc4f */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {-944ll /* 0xfffffffffffffc50 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-943ll /* 0xfffffffffffffc51 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-942ll /* 0xfffffffffffffc52 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {3, 4, 2}}			/* shl1add r5, r4, r2 */
-    },
-   {-940ll /* 0xfffffffffffffc54 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-936ll /* 0xfffffffffffffc58 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-935ll /* 0xfffffffffffffc59 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-929ll /* 0xfffffffffffffc5f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-928ll /* 0xfffffffffffffc60 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 5}}			/* shli r5, r4, 5 */
-    },
-   {-925ll /* 0xfffffffffffffc63 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-924ll /* 0xfffffffffffffc64 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-920ll /* 0xfffffffffffffc68 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-919ll /* 0xfffffffffffffc69 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-916ll /* 0xfffffffffffffc6c */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-913ll /* 0xfffffffffffffc6f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-912ll /* 0xfffffffffffffc70 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-911ll /* 0xfffffffffffffc71 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-910ll /* 0xfffffffffffffc72 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-905ll /* 0xfffffffffffffc77 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-904ll /* 0xfffffffffffffc78 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-903ll /* 0xfffffffffffffc79 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {1, 3, 4}}			/* add r5, r3, r4 */
-    },
-   {-902ll /* 0xfffffffffffffc7a */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-901ll /* 0xfffffffffffffc7b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-900ll /* 0xfffffffffffffc7c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-899ll /* 0xfffffffffffffc7d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-898ll /* 0xfffffffffffffc7e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-897ll /* 0xfffffffffffffc7f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-896ll /* 0xfffffffffffffc80 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-895ll /* 0xfffffffffffffc81 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-894ll /* 0xfffffffffffffc82 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-893ll /* 0xfffffffffffffc83 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {5, 2, 1},			/* shl3add r4, r2, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-892ll /* 0xfffffffffffffc84 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-891ll /* 0xfffffffffffffc85 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-890ll /* 0xfffffffffffffc86 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-889ll /* 0xfffffffffffffc87 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {2, 2, 1},			/* sub r4, r2, r1 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-888ll /* 0xfffffffffffffc88 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {-887ll /* 0xfffffffffffffc89 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-886ll /* 0xfffffffffffffc8a */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 1, 2},			/* shl1add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-884ll /* 0xfffffffffffffc8c */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 1, 2},			/* shl2add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-881ll /* 0xfffffffffffffc8f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-880ll /* 0xfffffffffffffc90 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-879ll /* 0xfffffffffffffc91 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {3, 4, 1}}			/* shl1add r5, r4, r1 */
-    },
-   {-873ll /* 0xfffffffffffffc97 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-872ll /* 0xfffffffffffffc98 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-868ll /* 0xfffffffffffffc9c */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-865ll /* 0xfffffffffffffc9f */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-864ll /* 0xfffffffffffffca0 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 5}}			/* shli r5, r4, 5 */
-    },
-   {-863ll /* 0xfffffffffffffca1 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-861ll /* 0xfffffffffffffca3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-860ll /* 0xfffffffffffffca4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-856ll /* 0xfffffffffffffca8 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-855ll /* 0xfffffffffffffca9 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-847ll /* 0xfffffffffffffcb1 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-837ll /* 0xfffffffffffffcbb */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-835ll /* 0xfffffffffffffcbd */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-834ll /* 0xfffffffffffffcbe */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 2}}			/* shl1add r5, r4, r2 */
-    },
-   {-832ll /* 0xfffffffffffffcc0 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 6}}			/* shli r5, r4, 6 */
-    },
-   {-831ll /* 0xfffffffffffffcc1 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-829ll /* 0xfffffffffffffcc3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-828ll /* 0xfffffffffffffcc4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-827ll /* 0xfffffffffffffcc5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-824ll /* 0xfffffffffffffcc8 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-823ll /* 0xfffffffffffffcc9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-819ll /* 0xfffffffffffffccd */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-816ll /* 0xfffffffffffffcd0 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-815ll /* 0xfffffffffffffcd1 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-803ll /* 0xfffffffffffffcdd */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-801ll /* 0xfffffffffffffcdf */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-800ll /* 0xfffffffffffffce0 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-799ll /* 0xfffffffffffffce1 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-797ll /* 0xfffffffffffffce3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-796ll /* 0xfffffffffffffce4 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-795ll /* 0xfffffffffffffce5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-793ll /* 0xfffffffffffffce7 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-792ll /* 0xfffffffffffffce8 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 8},			/* shli r4, r3, 8 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-791ll /* 0xfffffffffffffce9 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-789ll /* 0xfffffffffffffceb */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-788ll /* 0xfffffffffffffcec */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-785ll /* 0xfffffffffffffcef */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-784ll /* 0xfffffffffffffcf0 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-783ll /* 0xfffffffffffffcf1 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {3, 3, 2},			/* shl1add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-781ll /* 0xfffffffffffffcf3 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-780ll /* 0xfffffffffffffcf4 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 8},			/* shli r4, r3, 8 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-779ll /* 0xfffffffffffffcf5 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-777ll /* 0xfffffffffffffcf7 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-776ll /* 0xfffffffffffffcf8 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-775ll /* 0xfffffffffffffcf9 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-774ll /* 0xfffffffffffffcfa */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 8},			/* shli r4, r3, 8 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-773ll /* 0xfffffffffffffcfb */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-772ll /* 0xfffffffffffffcfc */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-771ll /* 0xfffffffffffffcfd */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 4}}			/* shl1add r5, r4, r4 */
-    },
-   {-770ll /* 0xfffffffffffffcfe */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-769ll /* 0xfffffffffffffcff */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-768ll /* 0xfffffffffffffd00 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {6, 1, 10},			/* shli r3, r1, 10 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-767ll /* 0xfffffffffffffd01 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-766ll /* 0xfffffffffffffd02 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-765ll /* 0xfffffffffffffd03 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-764ll /* 0xfffffffffffffd04 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {-763ll /* 0xfffffffffffffd05 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-762ll /* 0xfffffffffffffd06 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-761ll /* 0xfffffffffffffd07 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-760ll /* 0xfffffffffffffd08 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-759ll /* 0xfffffffffffffd09 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-757ll /* 0xfffffffffffffd0b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-756ll /* 0xfffffffffffffd0c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-755ll /* 0xfffffffffffffd0d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-753ll /* 0xfffffffffffffd0f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-752ll /* 0xfffffffffffffd10 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-751ll /* 0xfffffffffffffd11 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-749ll /* 0xfffffffffffffd13 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 1, 3},			/* shl3add r4, r1, r3 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-748ll /* 0xfffffffffffffd14 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-744ll /* 0xfffffffffffffd18 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-743ll /* 0xfffffffffffffd19 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-741ll /* 0xfffffffffffffd1b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-739ll /* 0xfffffffffffffd1d */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 3},			/* shl1add r4, r3, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-737ll /* 0xfffffffffffffd1f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-736ll /* 0xfffffffffffffd20 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 5}}			/* shli r5, r4, 5 */
-    },
-   {-735ll /* 0xfffffffffffffd21 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-732ll /* 0xfffffffffffffd24 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-729ll /* 0xfffffffffffffd27 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 3},			/* shl3add r4, r3, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-728ll /* 0xfffffffffffffd28 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-720ll /* 0xfffffffffffffd30 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-719ll /* 0xfffffffffffffd31 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-715ll /* 0xfffffffffffffd35 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-712ll /* 0xfffffffffffffd38 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 3, 3},			/* shl1add r4, r3, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-711ll /* 0xfffffffffffffd39 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-708ll /* 0xfffffffffffffd3c */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-707ll /* 0xfffffffffffffd3d */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {3, 3, 3},			/* shl1add r4, r3, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-705ll /* 0xfffffffffffffd3f */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-704ll /* 0xfffffffffffffd40 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 6}}			/* shli r5, r4, 6 */
-    },
-   {-703ll /* 0xfffffffffffffd41 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-701ll /* 0xfffffffffffffd43 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-700ll /* 0xfffffffffffffd44 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-699ll /* 0xfffffffffffffd45 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-695ll /* 0xfffffffffffffd49 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-693ll /* 0xfffffffffffffd4b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-692ll /* 0xfffffffffffffd4c */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 3, 3},			/* shl1add r4, r3, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-688ll /* 0xfffffffffffffd50 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-680ll /* 0xfffffffffffffd58 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-679ll /* 0xfffffffffffffd59 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-675ll /* 0xfffffffffffffd5d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-673ll /* 0xfffffffffffffd5f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-672ll /* 0xfffffffffffffd60 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-671ll /* 0xfffffffffffffd61 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-667ll /* 0xfffffffffffffd65 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-664ll /* 0xfffffffffffffd68 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-660ll /* 0xfffffffffffffd6c */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-659ll /* 0xfffffffffffffd6d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-657ll /* 0xfffffffffffffd6f */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-656ll /* 0xfffffffffffffd70 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-655ll /* 0xfffffffffffffd71 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-651ll /* 0xfffffffffffffd75 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-650ll /* 0xfffffffffffffd76 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-649ll /* 0xfffffffffffffd77 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {3, 2, 3},			/* shl1add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-648ll /* 0xfffffffffffffd78 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 3},			/* shl3add r4, r3, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-647ll /* 0xfffffffffffffd79 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 3},			/* shli r4, r3, 3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-645ll /* 0xfffffffffffffd7b */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-644ll /* 0xfffffffffffffd7c */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-643ll /* 0xfffffffffffffd7d */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-642ll /* 0xfffffffffffffd7e */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {3, 3, 2},			/* shl1add r4, r3, r2 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-641ll /* 0xfffffffffffffd7f */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-640ll /* 0xfffffffffffffd80 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 7}}			/* shli r4, r3, 7 */
-    },
-   {-639ll /* 0xfffffffffffffd81 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-638ll /* 0xfffffffffffffd82 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-637ll /* 0xfffffffffffffd83 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-636ll /* 0xfffffffffffffd84 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-635ll /* 0xfffffffffffffd85 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-634ll /* 0xfffffffffffffd86 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-633ll /* 0xfffffffffffffd87 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-632ll /* 0xfffffffffffffd88 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 3},			/* shli r3, r1, 3 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-631ll /* 0xfffffffffffffd89 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-630ll /* 0xfffffffffffffd8a */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-629ll /* 0xfffffffffffffd8b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-627ll /* 0xfffffffffffffd8d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-625ll /* 0xfffffffffffffd8f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-624ll /* 0xfffffffffffffd90 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-620ll /* 0xfffffffffffffd94 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-619ll /* 0xfffffffffffffd95 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-616ll /* 0xfffffffffffffd98 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-615ll /* 0xfffffffffffffd99 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-613ll /* 0xfffffffffffffd9b */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {4, 3, 3},			/* shl2add r4, r3, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-612ll /* 0xfffffffffffffd9c */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-611ll /* 0xfffffffffffffd9d */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-609ll /* 0xfffffffffffffd9f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-608ll /* 0xfffffffffffffda0 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-607ll /* 0xfffffffffffffda1 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-604ll /* 0xfffffffffffffda4 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-603ll /* 0xfffffffffffffda5 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-600ll /* 0xfffffffffffffda8 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-599ll /* 0xfffffffffffffda9 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-595ll /* 0xfffffffffffffdad */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-594ll /* 0xfffffffffffffdae */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-593ll /* 0xfffffffffffffdaf */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {3, 2, 3},			/* shl1add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-592ll /* 0xfffffffffffffdb0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-591ll /* 0xfffffffffffffdb1 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-589ll /* 0xfffffffffffffdb3 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-588ll /* 0xfffffffffffffdb4 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 3},			/* shl2add r4, r3, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-585ll /* 0xfffffffffffffdb7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-584ll /* 0xfffffffffffffdb8 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-583ll /* 0xfffffffffffffdb9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-581ll /* 0xfffffffffffffdbb */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {4, 3, 3},			/* shl2add r4, r3, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-580ll /* 0xfffffffffffffdbc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {3, 3, 2},			/* shl1add r4, r3, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-579ll /* 0xfffffffffffffdbd */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-578ll /* 0xfffffffffffffdbe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-577ll /* 0xfffffffffffffdbf */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-576ll /* 0xfffffffffffffdc0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 6}}			/* shli r4, r3, 6 */
-    },
-   {-575ll /* 0xfffffffffffffdc1 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-574ll /* 0xfffffffffffffdc2 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-573ll /* 0xfffffffffffffdc3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-572ll /* 0xfffffffffffffdc4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-571ll /* 0xfffffffffffffdc5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-569ll /* 0xfffffffffffffdc7 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-568ll /* 0xfffffffffffffdc8 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 3},			/* shli r3, r1, 3 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-567ll /* 0xfffffffffffffdc9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-566ll /* 0xfffffffffffffdca */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-565ll /* 0xfffffffffffffdcb */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-564ll /* 0xfffffffffffffdcc */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-563ll /* 0xfffffffffffffdcd */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-561ll /* 0xfffffffffffffdcf */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-560ll /* 0xfffffffffffffdd0 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-559ll /* 0xfffffffffffffdd1 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-558ll /* 0xfffffffffffffdd2 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-557ll /* 0xfffffffffffffdd3 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-556ll /* 0xfffffffffffffdd4 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-555ll /* 0xfffffffffffffdd5 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-553ll /* 0xfffffffffffffdd7 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {5, 3, 3},			/* shl3add r4, r3, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-552ll /* 0xfffffffffffffdd8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 9},			/* shli r4, r2, 9 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-551ll /* 0xfffffffffffffdd9 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-549ll /* 0xfffffffffffffddb */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-548ll /* 0xfffffffffffffddc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 9},			/* shli r4, r2, 9 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-547ll /* 0xfffffffffffffddd */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-546ll /* 0xfffffffffffffdde */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-545ll /* 0xfffffffffffffddf */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 2},			/* shl1add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-544ll /* 0xfffffffffffffde0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 5}}			/* shli r5, r4, 5 */
-    },
-   {-543ll /* 0xfffffffffffffde1 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-542ll /* 0xfffffffffffffde2 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-540ll /* 0xfffffffffffffde4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-539ll /* 0xfffffffffffffde5 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-536ll /* 0xfffffffffffffde8 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-535ll /* 0xfffffffffffffde9 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-533ll /* 0xfffffffffffffdeb */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-532ll /* 0xfffffffffffffdec */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 9},			/* shli r4, r2, 9 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-531ll /* 0xfffffffffffffded */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-530ll /* 0xfffffffffffffdee */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 9},			/* shli r4, r2, 9 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-529ll /* 0xfffffffffffffdef */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {3, 2, 3},			/* shl1add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-528ll /* 0xfffffffffffffdf0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-527ll /* 0xfffffffffffffdf1 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-526ll /* 0xfffffffffffffdf2 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-525ll /* 0xfffffffffffffdf3 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-524ll /* 0xfffffffffffffdf4 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-523ll /* 0xfffffffffffffdf5 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-522ll /* 0xfffffffffffffdf6 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 9},			/* shli r4, r2, 9 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-521ll /* 0xfffffffffffffdf7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-520ll /* 0xfffffffffffffdf8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 9},			/* shli r3, r2, 9 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-519ll /* 0xfffffffffffffdf9 */ ,
-    {{6, 1, 9},			/* shli r2, r1, 9 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-518ll /* 0xfffffffffffffdfa */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-517ll /* 0xfffffffffffffdfb */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-516ll /* 0xfffffffffffffdfc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 9},			/* shli r3, r2, 9 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-515ll /* 0xfffffffffffffdfd */ ,
-    {{6, 1, 9},			/* shli r2, r1, 9 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-514ll /* 0xfffffffffffffdfe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 9},			/* shli r3, r2, 9 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-513ll /* 0xfffffffffffffdff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-512ll /* 0xfffffffffffffe00 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 9}}			/* shli r3, r2, 9 */
-    },
-   {-511ll /* 0xfffffffffffffe01 */ ,
-    {{6, 1, 9},			/* shli r2, r1, 9 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-510ll /* 0xfffffffffffffe02 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-509ll /* 0xfffffffffffffe03 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-508ll /* 0xfffffffffffffe04 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-507ll /* 0xfffffffffffffe05 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-506ll /* 0xfffffffffffffe06 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {-505ll /* 0xfffffffffffffe07 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-504ll /* 0xfffffffffffffe08 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-503ll /* 0xfffffffffffffe09 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-502ll /* 0xfffffffffffffe0a */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-501ll /* 0xfffffffffffffe0b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-500ll /* 0xfffffffffffffe0c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-499ll /* 0xfffffffffffffe0d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-498ll /* 0xfffffffffffffe0e */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {3, 1, 3},			/* shl1add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-497ll /* 0xfffffffffffffe0f */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-496ll /* 0xfffffffffffffe10 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-495ll /* 0xfffffffffffffe11 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-494ll /* 0xfffffffffffffe12 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-493ll /* 0xfffffffffffffe13 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 1}}			/* shl1add r5, r4, r1 */
-    },
-   {-492ll /* 0xfffffffffffffe14 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-491ll /* 0xfffffffffffffe15 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-489ll /* 0xfffffffffffffe17 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-488ll /* 0xfffffffffffffe18 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-487ll /* 0xfffffffffffffe19 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-485ll /* 0xfffffffffffffe1b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-484ll /* 0xfffffffffffffe1c */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {4, 1, 3},			/* shl2add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-483ll /* 0xfffffffffffffe1d */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 1},			/* shl1add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-482ll /* 0xfffffffffffffe1e */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {3, 1, 3},			/* shl1add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-481ll /* 0xfffffffffffffe1f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-480ll /* 0xfffffffffffffe20 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-479ll /* 0xfffffffffffffe21 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-478ll /* 0xfffffffffffffe22 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-477ll /* 0xfffffffffffffe23 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-476ll /* 0xfffffffffffffe24 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-475ll /* 0xfffffffffffffe25 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-472ll /* 0xfffffffffffffe28 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-471ll /* 0xfffffffffffffe29 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-468ll /* 0xfffffffffffffe2c */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-467ll /* 0xfffffffffffffe2d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-465ll /* 0xfffffffffffffe2f */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {-464ll /* 0xfffffffffffffe30 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-463ll /* 0xfffffffffffffe31 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-462ll /* 0xfffffffffffffe32 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-460ll /* 0xfffffffffffffe34 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-457ll /* 0xfffffffffffffe37 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-456ll /* 0xfffffffffffffe38 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-455ll /* 0xfffffffffffffe39 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {1, 3, 4}}			/* add r5, r3, r4 */
-    },
-   {-454ll /* 0xfffffffffffffe3a */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-453ll /* 0xfffffffffffffe3b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-452ll /* 0xfffffffffffffe3c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-451ll /* 0xfffffffffffffe3d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-450ll /* 0xfffffffffffffe3e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-449ll /* 0xfffffffffffffe3f */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-448ll /* 0xfffffffffffffe40 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-447ll /* 0xfffffffffffffe41 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-446ll /* 0xfffffffffffffe42 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-445ll /* 0xfffffffffffffe43 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {5, 2, 1},			/* shl3add r4, r2, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-444ll /* 0xfffffffffffffe44 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-443ll /* 0xfffffffffffffe45 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-442ll /* 0xfffffffffffffe46 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-441ll /* 0xfffffffffffffe47 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {2, 2, 1},			/* sub r4, r2, r1 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-440ll /* 0xfffffffffffffe48 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {-439ll /* 0xfffffffffffffe49 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-438ll /* 0xfffffffffffffe4a */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 1, 2},			/* shl1add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-436ll /* 0xfffffffffffffe4c */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 1, 2},			/* shl2add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-433ll /* 0xfffffffffffffe4f */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-432ll /* 0xfffffffffffffe50 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-431ll /* 0xfffffffffffffe51 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-429ll /* 0xfffffffffffffe53 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-428ll /* 0xfffffffffffffe54 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-424ll /* 0xfffffffffffffe58 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-423ll /* 0xfffffffffffffe59 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-419ll /* 0xfffffffffffffe5d */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-418ll /* 0xfffffffffffffe5e */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 2}}			/* shl1add r5, r4, r2 */
-    },
-   {-417ll /* 0xfffffffffffffe5f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-416ll /* 0xfffffffffffffe60 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 5}}			/* shli r5, r4, 5 */
-    },
-   {-415ll /* 0xfffffffffffffe61 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-413ll /* 0xfffffffffffffe63 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-412ll /* 0xfffffffffffffe64 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-411ll /* 0xfffffffffffffe65 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-409ll /* 0xfffffffffffffe67 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-408ll /* 0xfffffffffffffe68 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-407ll /* 0xfffffffffffffe69 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-405ll /* 0xfffffffffffffe6b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-404ll /* 0xfffffffffffffe6c */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-403ll /* 0xfffffffffffffe6d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-401ll /* 0xfffffffffffffe6f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-400ll /* 0xfffffffffffffe70 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-399ll /* 0xfffffffffffffe71 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-397ll /* 0xfffffffffffffe73 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-396ll /* 0xfffffffffffffe74 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-395ll /* 0xfffffffffffffe75 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-393ll /* 0xfffffffffffffe77 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-392ll /* 0xfffffffffffffe78 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-391ll /* 0xfffffffffffffe79 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-390ll /* 0xfffffffffffffe7a */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 7},			/* shli r4, r3, 7 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-389ll /* 0xfffffffffffffe7b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-388ll /* 0xfffffffffffffe7c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-387ll /* 0xfffffffffffffe7d */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 4}}			/* shl1add r5, r4, r4 */
-    },
-   {-386ll /* 0xfffffffffffffe7e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-385ll /* 0xfffffffffffffe7f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-384ll /* 0xfffffffffffffe80 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {6, 1, 9},			/* shli r3, r1, 9 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-383ll /* 0xfffffffffffffe81 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-382ll /* 0xfffffffffffffe82 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-381ll /* 0xfffffffffffffe83 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-380ll /* 0xfffffffffffffe84 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {-379ll /* 0xfffffffffffffe85 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-378ll /* 0xfffffffffffffe86 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-377ll /* 0xfffffffffffffe87 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-376ll /* 0xfffffffffffffe88 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-375ll /* 0xfffffffffffffe89 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-373ll /* 0xfffffffffffffe8b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-372ll /* 0xfffffffffffffe8c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-371ll /* 0xfffffffffffffe8d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-369ll /* 0xfffffffffffffe8f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-368ll /* 0xfffffffffffffe90 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-367ll /* 0xfffffffffffffe91 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-365ll /* 0xfffffffffffffe93 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 1, 3},			/* shl3add r4, r1, r3 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-364ll /* 0xfffffffffffffe94 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-361ll /* 0xfffffffffffffe97 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {5, 3, 3},			/* shl3add r4, r3, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-360ll /* 0xfffffffffffffe98 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-359ll /* 0xfffffffffffffe99 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-357ll /* 0xfffffffffffffe9b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-356ll /* 0xfffffffffffffe9c */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-355ll /* 0xfffffffffffffe9d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 3},			/* shli r4, r3, 3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-353ll /* 0xfffffffffffffe9f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {4, 3, 1},			/* shl2add r4, r3, r1 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-352ll /* 0xfffffffffffffea0 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 5}}			/* shli r5, r4, 5 */
-    },
-   {-351ll /* 0xfffffffffffffea1 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-349ll /* 0xfffffffffffffea3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-348ll /* 0xfffffffffffffea4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-347ll /* 0xfffffffffffffea5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-344ll /* 0xfffffffffffffea8 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 3, 3},			/* shl1add r4, r3, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-343ll /* 0xfffffffffffffea9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-341ll /* 0xfffffffffffffeab */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-340ll /* 0xfffffffffffffeac */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 3, 3},			/* shl1add r4, r3, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-339ll /* 0xfffffffffffffead */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-337ll /* 0xfffffffffffffeaf */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-336ll /* 0xfffffffffffffeb0 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-335ll /* 0xfffffffffffffeb1 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-333ll /* 0xfffffffffffffeb3 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-332ll /* 0xfffffffffffffeb4 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-331ll /* 0xfffffffffffffeb5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-330ll /* 0xfffffffffffffeb6 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-329ll /* 0xfffffffffffffeb7 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {3, 2, 3},			/* shl1add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-328ll /* 0xfffffffffffffeb8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-327ll /* 0xfffffffffffffeb9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-325ll /* 0xfffffffffffffebb */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-324ll /* 0xfffffffffffffebc */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-323ll /* 0xfffffffffffffebd */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-322ll /* 0xfffffffffffffebe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {3, 3, 2},			/* shl1add r4, r3, r2 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-321ll /* 0xfffffffffffffebf */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-320ll /* 0xfffffffffffffec0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 6}}			/* shli r4, r3, 6 */
-    },
-   {-319ll /* 0xfffffffffffffec1 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-318ll /* 0xfffffffffffffec2 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-317ll /* 0xfffffffffffffec3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-316ll /* 0xfffffffffffffec4 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-315ll /* 0xfffffffffffffec5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-314ll /* 0xfffffffffffffec6 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-313ll /* 0xfffffffffffffec7 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-312ll /* 0xfffffffffffffec8 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 3},			/* shli r3, r1, 3 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-311ll /* 0xfffffffffffffec9 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-310ll /* 0xfffffffffffffeca */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-309ll /* 0xfffffffffffffecb */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-307ll /* 0xfffffffffffffecd */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-306ll /* 0xfffffffffffffece */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-305ll /* 0xfffffffffffffecf */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-304ll /* 0xfffffffffffffed0 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-303ll /* 0xfffffffffffffed1 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-301ll /* 0xfffffffffffffed3 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-300ll /* 0xfffffffffffffed4 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-299ll /* 0xfffffffffffffed5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-297ll /* 0xfffffffffffffed7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-296ll /* 0xfffffffffffffed8 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-295ll /* 0xfffffffffffffed9 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-293ll /* 0xfffffffffffffedb */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {5, 3, 3},			/* shl3add r4, r3, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-292ll /* 0xfffffffffffffedc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-291ll /* 0xfffffffffffffedd */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-290ll /* 0xfffffffffffffede */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {-289ll /* 0xfffffffffffffedf */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-288ll /* 0xfffffffffffffee0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 5}}			/* shli r4, r3, 5 */
-    },
-   {-287ll /* 0xfffffffffffffee1 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-286ll /* 0xfffffffffffffee2 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-285ll /* 0xfffffffffffffee3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-284ll /* 0xfffffffffffffee4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-283ll /* 0xfffffffffffffee5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-281ll /* 0xfffffffffffffee7 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-280ll /* 0xfffffffffffffee8 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-279ll /* 0xfffffffffffffee9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-278ll /* 0xfffffffffffffeea */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-277ll /* 0xfffffffffffffeeb */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-276ll /* 0xfffffffffffffeec */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-275ll /* 0xfffffffffffffeed */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-274ll /* 0xfffffffffffffeee */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-273ll /* 0xfffffffffffffeef */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {3, 2, 3},			/* shl1add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-272ll /* 0xfffffffffffffef0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-271ll /* 0xfffffffffffffef1 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-270ll /* 0xfffffffffffffef2 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-269ll /* 0xfffffffffffffef3 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-268ll /* 0xfffffffffffffef4 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-267ll /* 0xfffffffffffffef5 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-266ll /* 0xfffffffffffffef6 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 8},			/* shli r4, r2, 8 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-265ll /* 0xfffffffffffffef7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-264ll /* 0xfffffffffffffef8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-263ll /* 0xfffffffffffffef9 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-262ll /* 0xfffffffffffffefa */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-261ll /* 0xfffffffffffffefb */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-260ll /* 0xfffffffffffffefc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-259ll /* 0xfffffffffffffefd */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-258ll /* 0xfffffffffffffefe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 8},			/* shli r3, r2, 8 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-257ll /* 0xfffffffffffffeff */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-256ll /* 0xffffffffffffff00 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 8}}			/* shli r3, r2, 8 */
-    },
-   {-255ll /* 0xffffffffffffff01 */ ,
-    {{6, 1, 8},			/* shli r2, r1, 8 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-254ll /* 0xffffffffffffff02 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-253ll /* 0xffffffffffffff03 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-252ll /* 0xffffffffffffff04 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-251ll /* 0xffffffffffffff05 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-250ll /* 0xffffffffffffff06 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {-249ll /* 0xffffffffffffff07 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-248ll /* 0xffffffffffffff08 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-247ll /* 0xffffffffffffff09 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-246ll /* 0xffffffffffffff0a */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-245ll /* 0xffffffffffffff0b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-244ll /* 0xffffffffffffff0c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-243ll /* 0xffffffffffffff0d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-242ll /* 0xffffffffffffff0e */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {3, 1, 3},			/* shl1add r4, r1, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-241ll /* 0xffffffffffffff0f */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-240ll /* 0xffffffffffffff10 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-239ll /* 0xffffffffffffff11 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-238ll /* 0xffffffffffffff12 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-237ll /* 0xffffffffffffff13 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 1}}			/* shl1add r5, r4, r1 */
-    },
-   {-236ll /* 0xffffffffffffff14 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-235ll /* 0xffffffffffffff15 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-234ll /* 0xffffffffffffff16 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-233ll /* 0xffffffffffffff17 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-232ll /* 0xffffffffffffff18 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 3}}			/* shli r5, r4, 3 */
-    },
-   {-231ll /* 0xffffffffffffff19 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 1}}			/* shl3add r5, r4, r1 */
-    },
-   {-230ll /* 0xffffffffffffff1a */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-229ll /* 0xffffffffffffff1b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-228ll /* 0xffffffffffffff1c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-227ll /* 0xffffffffffffff1d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-226ll /* 0xffffffffffffff1e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-225ll /* 0xffffffffffffff1f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-224ll /* 0xffffffffffffff20 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-223ll /* 0xffffffffffffff21 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-222ll /* 0xffffffffffffff22 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-221ll /* 0xffffffffffffff23 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {5, 2, 1},			/* shl3add r4, r2, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-220ll /* 0xffffffffffffff24 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-219ll /* 0xffffffffffffff25 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-218ll /* 0xffffffffffffff26 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-217ll /* 0xffffffffffffff27 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {2, 2, 1},			/* sub r4, r2, r1 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-216ll /* 0xffffffffffffff28 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {-215ll /* 0xffffffffffffff29 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-214ll /* 0xffffffffffffff2a */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 1, 2},			/* shl1add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-213ll /* 0xffffffffffffff2b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 3},			/* shli r4, r3, 3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-212ll /* 0xffffffffffffff2c */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 1, 2},			/* shl2add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-211ll /* 0xffffffffffffff2d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-210ll /* 0xffffffffffffff2e */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 2}}			/* shl1add r5, r4, r2 */
-    },
-   {-209ll /* 0xffffffffffffff2f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-208ll /* 0xffffffffffffff30 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-207ll /* 0xffffffffffffff31 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-205ll /* 0xffffffffffffff33 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-204ll /* 0xffffffffffffff34 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-203ll /* 0xffffffffffffff35 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-202ll /* 0xffffffffffffff36 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-201ll /* 0xffffffffffffff37 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-200ll /* 0xffffffffffffff38 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-199ll /* 0xffffffffffffff39 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-198ll /* 0xffffffffffffff3a */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 3, 6},			/* shli r4, r3, 6 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-197ll /* 0xffffffffffffff3b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-196ll /* 0xffffffffffffff3c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-195ll /* 0xffffffffffffff3d */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 4}}			/* shl1add r5, r4, r4 */
-    },
-   {-194ll /* 0xffffffffffffff3e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-193ll /* 0xffffffffffffff3f */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-192ll /* 0xffffffffffffff40 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {6, 1, 8},			/* shli r3, r1, 8 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-191ll /* 0xffffffffffffff41 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-190ll /* 0xffffffffffffff42 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-189ll /* 0xffffffffffffff43 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-188ll /* 0xffffffffffffff44 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {-187ll /* 0xffffffffffffff45 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-186ll /* 0xffffffffffffff46 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-185ll /* 0xffffffffffffff47 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-184ll /* 0xffffffffffffff48 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-183ll /* 0xffffffffffffff49 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-181ll /* 0xffffffffffffff4b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-180ll /* 0xffffffffffffff4c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-179ll /* 0xffffffffffffff4d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-178ll /* 0xffffffffffffff4e */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-177ll /* 0xffffffffffffff4f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-176ll /* 0xffffffffffffff50 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 4}}			/* shli r5, r4, 4 */
-    },
-   {-175ll /* 0xffffffffffffff51 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-173ll /* 0xffffffffffffff53 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-172ll /* 0xffffffffffffff54 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-171ll /* 0xffffffffffffff55 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-170ll /* 0xffffffffffffff56 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-169ll /* 0xffffffffffffff57 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {5, 3, 1},			/* shl3add r4, r3, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-168ll /* 0xffffffffffffff58 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-167ll /* 0xffffffffffffff59 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-165ll /* 0xffffffffffffff5b */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-164ll /* 0xffffffffffffff5c */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-163ll /* 0xffffffffffffff5d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 2, 3},			/* shl3add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-162ll /* 0xffffffffffffff5e */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 3},			/* shl3add r4, r3, r3 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {-161ll /* 0xffffffffffffff5f */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-160ll /* 0xffffffffffffff60 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 5}}			/* shli r4, r3, 5 */
-    },
-   {-159ll /* 0xffffffffffffff61 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-158ll /* 0xffffffffffffff62 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-157ll /* 0xffffffffffffff63 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 5},			/* shli r4, r3, 5 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-156ll /* 0xffffffffffffff64 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-155ll /* 0xffffffffffffff65 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-154ll /* 0xffffffffffffff66 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-153ll /* 0xffffffffffffff67 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 4}}			/* shl3add r5, r4, r4 */
-    },
-   {-152ll /* 0xffffffffffffff68 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 3},			/* shli r3, r1, 3 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-151ll /* 0xffffffffffffff69 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-150ll /* 0xffffffffffffff6a */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-149ll /* 0xffffffffffffff6b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-148ll /* 0xffffffffffffff6c */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {4, 3, 4}}			/* shl2add r5, r3, r4 */
-    },
-   {-147ll /* 0xffffffffffffff6d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 2},			/* shl3add r3, r1, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-146ll /* 0xffffffffffffff6e */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-145ll /* 0xffffffffffffff6f */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-144ll /* 0xffffffffffffff70 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 4}}			/* shli r4, r3, 4 */
-    },
-   {-143ll /* 0xffffffffffffff71 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-142ll /* 0xffffffffffffff72 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-141ll /* 0xffffffffffffff73 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-140ll /* 0xffffffffffffff74 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-139ll /* 0xffffffffffffff75 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-138ll /* 0xffffffffffffff76 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 2, 7},			/* shli r4, r2, 7 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-137ll /* 0xffffffffffffff77 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-136ll /* 0xffffffffffffff78 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {-135ll /* 0xffffffffffffff79 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-134ll /* 0xffffffffffffff7a */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-133ll /* 0xffffffffffffff7b */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-132ll /* 0xffffffffffffff7c */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-131ll /* 0xffffffffffffff7d */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-130ll /* 0xffffffffffffff7e */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 7},			/* shli r3, r2, 7 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-129ll /* 0xffffffffffffff7f */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-128ll /* 0xffffffffffffff80 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 7}}			/* shli r3, r2, 7 */
-    },
-   {-127ll /* 0xffffffffffffff81 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-126ll /* 0xffffffffffffff82 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-125ll /* 0xffffffffffffff83 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-124ll /* 0xffffffffffffff84 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-123ll /* 0xffffffffffffff85 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-122ll /* 0xffffffffffffff86 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {-121ll /* 0xffffffffffffff87 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-120ll /* 0xffffffffffffff88 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-119ll /* 0xffffffffffffff89 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-118ll /* 0xffffffffffffff8a */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-117ll /* 0xffffffffffffff8b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-116ll /* 0xffffffffffffff8c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-115ll /* 0xffffffffffffff8d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-114ll /* 0xffffffffffffff8e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {5, 3, 2},			/* shl3add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-113ll /* 0xffffffffffffff8f */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-112ll /* 0xffffffffffffff90 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-111ll /* 0xffffffffffffff91 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-110ll /* 0xffffffffffffff92 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-109ll /* 0xffffffffffffff93 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {5, 2, 1},			/* shl3add r4, r2, r1 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-108ll /* 0xffffffffffffff94 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-107ll /* 0xffffffffffffff95 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 1}}			/* shl2add r5, r4, r1 */
-    },
-   {-106ll /* 0xffffffffffffff96 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 2}}			/* shl1add r5, r4, r2 */
-    },
-   {-105ll /* 0xffffffffffffff97 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {2, 2, 1},			/* sub r4, r2, r1 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-104ll /* 0xffffffffffffff98 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {-103ll /* 0xffffffffffffff99 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {-102ll /* 0xffffffffffffff9a */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {3, 1, 2},			/* shl1add r4, r1, r2 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {-101ll /* 0xffffffffffffff9b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-100ll /* 0xffffffffffffff9c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-99ll /* 0xffffffffffffff9d */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 4}}			/* shl1add r5, r4, r4 */
-    },
-   {-98ll /* 0xffffffffffffff9e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-97ll /* 0xffffffffffffff9f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-96ll /* 0xffffffffffffffa0 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-95ll /* 0xffffffffffffffa1 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-94ll /* 0xffffffffffffffa2 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-93ll /* 0xffffffffffffffa3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-92ll /* 0xffffffffffffffa4 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {-91ll /* 0xffffffffffffffa5 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-90ll /* 0xffffffffffffffa6 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-89ll /* 0xffffffffffffffa7 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 1},			/* shl1add r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-88ll /* 0xffffffffffffffa8 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-87ll /* 0xffffffffffffffa9 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {3, 2, 2},			/* shl1add r3, r2, r2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-86ll /* 0xffffffffffffffaa */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 2},			/* shl1add r4, r3, r2 */
-     {2, 1, 4}}			/* sub r5, r1, r4 */
-    },
-   {-85ll /* 0xffffffffffffffab */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 4}}			/* shl2add r5, r4, r4 */
-    },
-   {-84ll /* 0xffffffffffffffac */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-83ll /* 0xffffffffffffffad */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-82ll /* 0xffffffffffffffae */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 2, 6},			/* shli r4, r2, 6 */
-     {3, 3, 4}}			/* shl1add r5, r3, r4 */
-    },
-   {-81ll /* 0xffffffffffffffaf */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 3}}			/* shl3add r4, r3, r3 */
-    },
-   {-80ll /* 0xffffffffffffffb0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 4}}			/* shli r4, r3, 4 */
-    },
-   {-79ll /* 0xffffffffffffffb1 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-78ll /* 0xffffffffffffffb2 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-77ll /* 0xffffffffffffffb3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {6, 3, 4},			/* shli r4, r3, 4 */
-     {2, 2, 4}}			/* sub r5, r2, r4 */
-    },
-   {-76ll /* 0xffffffffffffffb4 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-75ll /* 0xffffffffffffffb5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-74ll /* 0xffffffffffffffb6 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-73ll /* 0xffffffffffffffb7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {-72ll /* 0xffffffffffffffb8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 3}}			/* shli r4, r3, 3 */
-    },
-   {-71ll /* 0xffffffffffffffb9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-70ll /* 0xffffffffffffffba */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-69ll /* 0xffffffffffffffbb */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {4, 4, 2}}			/* shl2add r5, r4, r2 */
-    },
-   {-68ll /* 0xffffffffffffffbc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {-67ll /* 0xffffffffffffffbd */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 1, 2},			/* shl2add r3, r1, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-66ll /* 0xffffffffffffffbe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 6},			/* shli r3, r2, 6 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-65ll /* 0xffffffffffffffbf */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-64ll /* 0xffffffffffffffc0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 6}}			/* shli r3, r2, 6 */
-    },
-   {-63ll /* 0xffffffffffffffc1 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-62ll /* 0xffffffffffffffc2 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-61ll /* 0xffffffffffffffc3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-60ll /* 0xffffffffffffffc4 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-59ll /* 0xffffffffffffffc5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-58ll /* 0xffffffffffffffc6 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {-57ll /* 0xffffffffffffffc7 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-56ll /* 0xffffffffffffffc8 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-55ll /* 0xffffffffffffffc9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-54ll /* 0xffffffffffffffca */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-53ll /* 0xffffffffffffffcb */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 3},			/* shli r3, r1, 3 */
-     {2, 1, 3},			/* sub r4, r1, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {-52ll /* 0xffffffffffffffcc */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {-51ll /* 0xffffffffffffffcd */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {3, 4, 4}}			/* shl1add r5, r4, r4 */
-    },
-   {-50ll /* 0xffffffffffffffce */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {4, 3, 2},			/* shl2add r4, r3, r2 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-49ll /* 0xffffffffffffffcf */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-48ll /* 0xffffffffffffffd0 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-47ll /* 0xffffffffffffffd1 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-46ll /* 0xffffffffffffffd2 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-45ll /* 0xffffffffffffffd3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-44ll /* 0xffffffffffffffd4 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {-43ll /* 0xffffffffffffffd5 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 1, 2},			/* sub r4, r1, r2 */
-     {4, 4, 3}}			/* shl2add r5, r4, r3 */
-    },
-   {-42ll /* 0xffffffffffffffd6 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-41ll /* 0xffffffffffffffd7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {-40ll /* 0xffffffffffffffd8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 3}}			/* shli r4, r3, 3 */
-    },
-   {-39ll /* 0xffffffffffffffd9 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-38ll /* 0xffffffffffffffda */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 3, 4}}			/* sub r5, r3, r4 */
-    },
-   {-37ll /* 0xffffffffffffffdb */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {-36ll /* 0xffffffffffffffdc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 2}}			/* shli r4, r3, 2 */
-    },
-   {-35ll /* 0xffffffffffffffdd */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-34ll /* 0xffffffffffffffde */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {-33ll /* 0xffffffffffffffdf */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-32ll /* 0xffffffffffffffe0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 5}}			/* shli r3, r2, 5 */
-    },
-   {-31ll /* 0xffffffffffffffe1 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-30ll /* 0xffffffffffffffe2 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-29ll /* 0xffffffffffffffe3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-28ll /* 0xffffffffffffffe4 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-27ll /* 0xffffffffffffffe5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-26ll /* 0xffffffffffffffe6 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-25ll /* 0xffffffffffffffe7 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-24ll /* 0xffffffffffffffe8 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-23ll /* 0xffffffffffffffe9 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-22ll /* 0xffffffffffffffea */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-21ll /* 0xffffffffffffffeb */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3},			/* shli r3, r2, 3 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-20ll /* 0xffffffffffffffec */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2},			/* shl2add r3, r2, r2 */
-     {6, 3, 2}}			/* shli r4, r3, 2 */
-    },
-   {-19ll /* 0xffffffffffffffed */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 2},			/* shli r3, r2, 2 */
-     {2, 1, 3}}			/* sub r4, r1, r3 */
-    },
-   {-18ll /* 0xffffffffffffffee */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 1}}			/* shli r4, r3, 1 */
-    },
-   {-17ll /* 0xffffffffffffffef */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-16ll /* 0xfffffffffffffff0 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 4}}			/* shli r3, r2, 4 */
-    },
-   {-15ll /* 0xfffffffffffffff1 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-14ll /* 0xfffffffffffffff2 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-13ll /* 0xfffffffffffffff3 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-12ll /* 0xfffffffffffffff4 */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-11ll /* 0xfffffffffffffff5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-10ll /* 0xfffffffffffffff6 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-9ll /* 0xfffffffffffffff7 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 2, 2}}			/* shl3add r3, r2, r2 */
-    },
-   {-8ll /* 0xfffffffffffffff8 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 3}}			/* shli r3, r2, 3 */
-    },
-   {-7ll /* 0xfffffffffffffff9 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-6ll /* 0xfffffffffffffffa */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 3},			/* shli r3, r1, 3 */
-     {2, 2, 3}}			/* sub r4, r2, r3 */
-    },
-   {-5ll /* 0xfffffffffffffffb */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 2, 2}}			/* shl2add r3, r2, r2 */
-    },
-   {-4ll /* 0xfffffffffffffffc */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 2}}			/* shli r3, r2, 2 */
-    },
-   {-3ll /* 0xfffffffffffffffd */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {2, 1, 2}}			/* sub r3, r1, r2 */
-    },
-   {-2ll /* 0xfffffffffffffffe */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {6, 2, 1}}			/* shli r3, r2, 1 */
-    },
-   {-1ll /* 0xffffffffffffffff */ ,
-    {{2, 0, 1}}			/* sub r2, zero, r1 */
-    },
-   {2ll /* 0x2 */ ,
-    {{6, 1, 1}}			/* shli r2, r1, 1 */
-    },
-   {3ll /* 0x3 */ ,
-    {{3, 1, 1}}			/* shl1add r2, r1, r1 */
-    },
-   {4ll /* 0x4 */ ,
-    {{6, 1, 2}}			/* shli r2, r1, 2 */
-    },
-   {5ll /* 0x5 */ ,
-    {{4, 1, 1}}			/* shl2add r2, r1, r1 */
-    },
-   {6ll /* 0x6 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 1}}			/* shli r3, r2, 1 */
-    },
-   {7ll /* 0x7 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 2, 1}}			/* sub r3, r2, r1 */
-    },
-   {8ll /* 0x8 */ ,
-    {{6, 1, 3}}			/* shli r2, r1, 3 */
-    },
-   {9ll /* 0x9 */ ,
-    {{5, 1, 1}}			/* shl3add r2, r1, r1 */
-    },
-   {10ll /* 0xa */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 1}}			/* shli r3, r2, 1 */
-    },
-   {11ll /* 0xb */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {3, 2, 1}}			/* shl1add r3, r2, r1 */
-    },
-   {12ll /* 0xc */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 2}}			/* shli r3, r2, 2 */
-    },
-   {13ll /* 0xd */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1}}			/* shl2add r3, r2, r1 */
-    },
-   {14ll /* 0xe */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {15ll /* 0xf */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 2, 1}}			/* sub r3, r2, r1 */
-    },
-   {16ll /* 0x10 */ ,
-    {{6, 1, 4}}			/* shli r2, r1, 4 */
-    },
-   {17ll /* 0x11 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2}}			/* add r3, r1, r2 */
-    },
-   {18ll /* 0x12 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 1}}			/* shli r3, r2, 1 */
-    },
-   {19ll /* 0x13 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {3, 2, 1}}			/* shl1add r3, r2, r1 */
-    },
-   {20ll /* 0x14 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 2}}			/* shli r3, r2, 2 */
-    },
-   {21ll /* 0x15 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {4, 2, 1}}			/* shl2add r3, r2, r1 */
-    },
-   {22ll /* 0x16 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {23ll /* 0x17 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {24ll /* 0x18 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 3}}			/* shli r3, r2, 3 */
-    },
-   {25ll /* 0x19 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1}}			/* shl3add r3, r2, r1 */
-    },
-   {26ll /* 0x1a */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {27ll /* 0x1b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2}}			/* shl3add r3, r2, r2 */
-    },
-   {28ll /* 0x1c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {29ll /* 0x1d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {30ll /* 0x1e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {31ll /* 0x1f */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1}}			/* sub r3, r2, r1 */
-    },
-   {32ll /* 0x20 */ ,
-    {{6, 1, 5}}			/* shli r2, r1, 5 */
-    },
-   {33ll /* 0x21 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2}}			/* add r3, r1, r2 */
-    },
-   {34ll /* 0x22 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {3, 1, 2}}			/* shl1add r3, r1, r2 */
-    },
-   {35ll /* 0x23 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {36ll /* 0x24 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 2}}			/* shli r3, r2, 2 */
-    },
-   {37ll /* 0x25 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 2, 1}}			/* shl2add r3, r2, r1 */
-    },
-   {38ll /* 0x26 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {39ll /* 0x27 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {40ll /* 0x28 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 3}}			/* shli r3, r2, 3 */
-    },
-   {41ll /* 0x29 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1}}			/* shl3add r3, r2, r1 */
-    },
-   {42ll /* 0x2a */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {43ll /* 0x2b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 1, 1},			/* shl2add r3, r1, r1 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {44ll /* 0x2c */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {45ll /* 0x2d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2}}			/* shl3add r3, r2, r2 */
-    },
-   {46ll /* 0x2e */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {3, 3, 2}}			/* shl1add r4, r3, r2 */
-    },
-   {47ll /* 0x2f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 3, 1}}			/* sub r4, r3, r1 */
-    },
-   {48ll /* 0x30 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4}}			/* shli r3, r2, 4 */
-    },
-   {49ll /* 0x31 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {50ll /* 0x32 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {51ll /* 0x33 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {52ll /* 0x34 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {53ll /* 0x35 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {54ll /* 0x36 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 1}}			/* shli r4, r3, 1 */
-    },
-   {55ll /* 0x37 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {56ll /* 0x38 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {57ll /* 0x39 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {58ll /* 0x3a */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2},			/* sub r4, r3, r2 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {59ll /* 0x3b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {60ll /* 0x3c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {61ll /* 0x3d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {62ll /* 0x3e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {63ll /* 0x3f */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {2, 2, 1}}			/* sub r3, r2, r1 */
-    },
-   {64ll /* 0x40 */ ,
-    {{6, 1, 6}}			/* shli r2, r1, 6 */
-    },
-   {65ll /* 0x41 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {1, 1, 2}}			/* add r3, r1, r2 */
-    },
-   {66ll /* 0x42 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {3, 1, 2}}			/* shl1add r3, r1, r2 */
-    },
-   {67ll /* 0x43 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {68ll /* 0x44 */ ,
-    {{6, 1, 6},			/* shli r2, r1, 6 */
-     {4, 1, 2}}			/* shl2add r3, r1, r2 */
-    },
-   {69ll /* 0x45 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {70ll /* 0x46 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {71ll /* 0x47 */ ,
-    {{2, 0, 1},			/* sub r2, zero, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {72ll /* 0x48 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 3}}			/* shli r3, r2, 3 */
-    },
-   {73ll /* 0x49 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 1}}			/* shl3add r3, r2, r1 */
-    },
-   {74ll /* 0x4a */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {75ll /* 0x4b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {76ll /* 0x4c */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 2},			/* shli r3, r1, 2 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {77ll /* 0x4d */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 1, 1},			/* shl3add r3, r1, r1 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {78ll /* 0x4e */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {79ll /* 0x4f */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 3, 1}}			/* sub r4, r3, r1 */
-    },
-   {80ll /* 0x50 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4}}			/* shli r3, r2, 4 */
-    },
-   {81ll /* 0x51 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 2}}			/* shl3add r3, r2, r2 */
-    },
-   {82ll /* 0x52 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {83ll /* 0x53 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 1}}			/* shl1add r4, r3, r1 */
-    },
-   {84ll /* 0x54 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {85ll /* 0x55 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {86ll /* 0x56 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {1, 3, 4}}			/* add r5, r3, r4 */
-    },
-   {87ll /* 0x57 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 2}}			/* shl1add r4, r3, r2 */
-    },
-   {88ll /* 0x58 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {89ll /* 0x59 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {90ll /* 0x5a */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 1}}			/* shli r4, r3, 1 */
-    },
-   {91ll /* 0x5b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {3, 3, 1}}			/* shl1add r4, r3, r1 */
-    },
-   {92ll /* 0x5c */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2},			/* sub r4, r3, r2 */
-     {3, 4, 3}}			/* shl1add r5, r4, r3 */
-    },
-   {93ll /* 0x5d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {94ll /* 0x5e */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {3, 3, 2}}			/* shl1add r4, r3, r2 */
-    },
-   {95ll /* 0x5f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 3, 1}}			/* sub r4, r3, r1 */
-    },
-   {96ll /* 0x60 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5}}			/* shli r3, r2, 5 */
-    },
-   {97ll /* 0x61 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {1, 1, 3}}			/* add r4, r1, r3 */
-    },
-   {98ll /* 0x62 */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {3, 3, 2}}			/* shl1add r4, r3, r2 */
-    },
-   {99ll /* 0x63 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {100ll /* 0x64 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {101ll /* 0x65 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {4, 3, 1}}			/* shl2add r4, r3, r1 */
-    },
-   {102ll /* 0x66 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {103ll /* 0x67 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {104ll /* 0x68 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {105ll /* 0x69 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {5, 3, 1}}			/* shl3add r4, r3, r1 */
-    },
-   {106ll /* 0x6a */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {6, 1, 1},			/* shli r4, r1, 1 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {107ll /* 0x6b */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {5, 3, 2}}			/* shl3add r4, r3, r2 */
-    },
-   {108ll /* 0x6c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 2}}			/* shli r4, r3, 2 */
-    },
-   {109ll /* 0x6d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {4, 3, 1}}			/* shl2add r4, r3, r1 */
-    },
-   {110ll /* 0x6e */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 3},			/* shli r4, r2, 3 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {111ll /* 0x6f */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {112ll /* 0x70 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {113ll /* 0x71 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 1, 2},			/* sub r3, r1, r2 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {114ll /* 0x72 */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 4},			/* shli r3, r1, 4 */
-     {2, 2, 3},			/* sub r4, r2, r3 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {115ll /* 0x73 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {4, 2, 3},			/* shl2add r4, r2, r3 */
-     {5, 4, 2}}			/* shl3add r5, r4, r2 */
-    },
-   {116ll /* 0x74 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 5},			/* shli r3, r1, 5 */
-     {2, 3, 2},			/* sub r4, r3, r2 */
-     {6, 4, 2}}			/* shli r5, r4, 2 */
-    },
-   {117ll /* 0x75 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {5, 3, 3}}			/* shl3add r4, r3, r3 */
-    },
-   {118ll /* 0x76 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {3, 1, 2},			/* shl1add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {119ll /* 0x77 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {120ll /* 0x78 */ ,
-    {{6, 1, 3},			/* shli r2, r1, 3 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {121ll /* 0x79 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {5, 3, 1}}			/* shl3add r4, r3, r1 */
-    },
-   {122ll /* 0x7a */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 6},			/* shli r3, r1, 6 */
-     {2, 3, 2},			/* sub r4, r3, r2 */
-     {6, 4, 1}}			/* shli r5, r4, 1 */
-    },
-   {123ll /* 0x7b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {124ll /* 0x7c */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {125ll /* 0x7d */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {126ll /* 0x7e */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {127ll /* 0x7f */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {2, 2, 1}}			/* sub r3, r2, r1 */
-    },
-   {128ll /* 0x80 */ ,
-    {{6, 1, 7}}			/* shli r2, r1, 7 */
-    },
-   {129ll /* 0x81 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {1, 1, 2}}			/* add r3, r1, r2 */
-    },
-   {130ll /* 0x82 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {3, 1, 2}}			/* shl1add r3, r1, r2 */
-    },
-   {131ll /* 0x83 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {132ll /* 0x84 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {4, 1, 2}}			/* shl2add r3, r1, r2 */
-    },
-   {133ll /* 0x85 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {134ll /* 0x86 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {135ll /* 0x87 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {136ll /* 0x88 */ ,
-    {{6, 1, 7},			/* shli r2, r1, 7 */
-     {5, 1, 2}}			/* shl3add r3, r1, r2 */
-    },
-   {137ll /* 0x89 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {138ll /* 0x8a */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {139ll /* 0x8b */ ,
-    {{6, 1, 1},			/* shli r2, r1, 1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {5, 2, 1},			/* shl3add r4, r2, r1 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {140ll /* 0x8c */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {141ll /* 0x8d */ ,
-    {{6, 1, 2},			/* shli r2, r1, 2 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {4, 2, 1},			/* shl2add r4, r2, r1 */
-     {5, 4, 3}}			/* shl3add r5, r4, r3 */
-    },
-   {142ll /* 0x8e */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {143ll /* 0x8f */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {2, 3, 1}}			/* sub r4, r3, r1 */
-    },
-   {144ll /* 0x90 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4}}			/* shli r3, r2, 4 */
-    },
-   {145ll /* 0x91 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {1, 1, 3}}			/* add r4, r1, r3 */
-    },
-   {146ll /* 0x92 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {3, 2, 3}}			/* shl1add r4, r2, r3 */
-    },
-   {147ll /* 0x93 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 1},			/* shl3add r3, r2, r1 */
-     {3, 3, 1}}			/* shl1add r4, r3, r1 */
-    },
-   {148ll /* 0x94 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {149ll /* 0x95 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {4, 3, 1}}			/* shl2add r4, r3, r1 */
-    },
-   {150ll /* 0x96 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 1},			/* shli r3, r2, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {151ll /* 0x97 */ ,
-    {{6, 1, 4},			/* shli r2, r1, 4 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {2, 2, 1},			/* sub r4, r2, r1 */
-     {5, 3, 4}}			/* shl3add r5, r3, r4 */
-    },
-   {152ll /* 0x98 */ ,
-    {{3, 1, 1},			/* shl1add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {5, 2, 3}}			/* shl3add r4, r2, r3 */
-    },
-   {153ll /* 0x99 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 2, 4},			/* shli r3, r2, 4 */
-     {1, 2, 3}}			/* add r4, r2, r3 */
-    },
-   {154ll /* 0x9a */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {1, 1, 2},			/* add r3, r1, r2 */
-     {6, 2, 4},			/* shli r4, r2, 4 */
-     {1, 3, 4}}			/* add r5, r3, r4 */
-    },
-   {155ll /* 0x9b */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 3, 2}}			/* sub r4, r3, r2 */
-    },
-   {156ll /* 0x9c */ ,
-    {{6, 1, 5},			/* shli r2, r1, 5 */
-     {2, 2, 1},			/* sub r3, r2, r1 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {157ll /* 0x9d */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {4, 2, 1},			/* shl2add r3, r2, r1 */
-     {4, 3, 2}}			/* shl2add r4, r3, r2 */
-    },
-   {158ll /* 0x9e */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 1, 1},			/* shli r3, r1, 1 */
-     {6, 2, 5},			/* shli r4, r2, 5 */
-     {2, 4, 3}}			/* sub r5, r4, r3 */
-    },
-   {159ll /* 0x9f */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {2, 3, 1}}			/* sub r4, r3, r1 */
-    },
-   {160ll /* 0xa0 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5}}			/* shli r3, r2, 5 */
-    },
-   {161ll /* 0xa1 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {1, 1, 3}}			/* add r4, r1, r3 */
-    },
-   {162ll /* 0xa2 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {6, 3, 1}}			/* shli r4, r3, 1 */
-    },
-   {163ll /* 0xa3 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {5, 2, 2},			/* shl3add r3, r2, r2 */
-     {3, 3, 1}}			/* shl1add r4, r3, r1 */
-    },
-   {164ll /* 0xa4 */ ,
-    {{5, 1, 1},			/* shl3add r2, r1, r1 */
-     {6, 1, 7},			/* shli r3, r1, 7 */
-     {4, 2, 3}}			/* shl2add r4, r2, r3 */
-    },
-   {165ll /* 0xa5 */ ,
-    {{4, 1, 1},			/* shl2add r2, r1, r1 */
-     {6, 2, 5},			/* shli r3, r2, 5 */
-     {1, 2, 3}}			/* add r4